aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--X11/extensions/.gitignore78
-rw-r--r--X11/extensions/EVI.h72
-rw-r--r--X11/extensions/EVIproto.h192
-rw-r--r--X11/extensions/ag.h104
-rw-r--r--X11/extensions/agproto.h356
-rw-r--r--X11/extensions/cup.h76
-rw-r--r--X11/extensions/cupproto.h210
-rw-r--r--X11/extensions/dbe.h114
-rw-r--r--X11/extensions/dbeproto.h448
-rw-r--r--X11/extensions/dpmsconst.h86
-rw-r--r--X11/extensions/dpmsproto.h350
-rw-r--r--X11/extensions/ge.h120
-rw-r--r--X11/extensions/geproto.h170
-rw-r--r--X11/extensions/lbx.h146
-rw-r--r--X11/extensions/lbxproto.h1950
-rw-r--r--X11/extensions/mitmiscconst.h76
-rw-r--r--X11/extensions/mitmiscproto.h136
-rw-r--r--X11/extensions/multibufconst.h166
-rw-r--r--X11/extensions/multibufproto.h590
-rw-r--r--X11/extensions/secur.h122
-rw-r--r--X11/extensions/securproto.h220
-rw-r--r--X11/extensions/shapeconst.h110
-rw-r--r--X11/extensions/shapeproto.h474
-rw-r--r--X11/extensions/shapestr.h16
-rw-r--r--X11/extensions/shm.h88
-rw-r--r--X11/extensions/shmproto.h374
-rw-r--r--X11/extensions/xextproto.pc.in18
-rw-r--r--X11/extensions/xtestconst.h82
-rw-r--r--X11/extensions/xtestext1const.h320
-rw-r--r--X11/extensions/xtestext1proto.h442
-rw-r--r--X11/extensions/xtestproto.h248
-rw-r--r--X11/xtrans/.gitignore84
-rw-r--r--X11/xtrans/doc/.gitignore6
-rw-r--r--apps/xwininfo/.gitignore79
-rw-r--r--fontconfig/.gitignore99
-rw-r--r--gl/.gitignore78
-rw-r--r--libX11/.gitignore80
-rw-r--r--libX11/NEWS370
-rw-r--r--libX11/README78
-rw-r--r--libX11/include/X11/.gitignore2
-rw-r--r--libX11/include/X11/XlibConf.h.in74
-rw-r--r--libX11/man/AllPlanes.man758
-rw-r--r--libX11/man/BlackPixelOfScreen.man574
-rw-r--r--libX11/man/ImageByteOrder.man490
-rw-r--r--libX11/man/XAddConnectionWatch.man472
-rw-r--r--libX11/man/XAllocClassHint.man530
-rw-r--r--libX11/man/XAllocColor.man894
-rw-r--r--libX11/man/XAllocIconSize.man522
-rw-r--r--libX11/man/XAllocSizeHints.man1004
-rw-r--r--libX11/man/XAllocStandardColormap.man810
-rw-r--r--libX11/man/XAllocWMHints.man832
-rw-r--r--libX11/man/XAllowEvents.man378
-rw-r--r--libX11/man/XAnyEvent.man542
-rw-r--r--libX11/man/XButtonEvent.man710
-rw-r--r--libX11/man/XChangePointerControl.man428
-rw-r--r--libX11/man/XChangeSaveSet.man454
-rw-r--r--libX11/man/XChangeWindowAttributes.man810
-rw-r--r--libX11/man/XCirculateEvent.man462
-rw-r--r--libX11/man/XCirculateRequestEvent.man452
-rw-r--r--libX11/man/XClearArea.man514
-rw-r--r--libX11/man/XClientMessageEvent.man458
-rw-r--r--libX11/man/XColormapEvent.man480
-rw-r--r--libX11/man/XConfigureEvent.man498
-rw-r--r--libX11/man/XConfigureRequestEvent.man464
-rw-r--r--libX11/man/XConfigureWindow.man914
-rw-r--r--libX11/man/XCopyArea.man614
-rw-r--r--libX11/man/XCreateColormap.man734
-rw-r--r--libX11/man/XCreateFontCursor.man632
-rw-r--r--libX11/man/XCreateFontSet.man750
-rw-r--r--libX11/man/XCreateGC.man2406
-rw-r--r--libX11/man/XCreateIC.man438
-rw-r--r--libX11/man/XCreateOC.man452
-rw-r--r--libX11/man/XCreatePixmap.man460
-rw-r--r--libX11/man/XCreateRegion.man358
-rw-r--r--libX11/man/XCreateWindow.man992
-rw-r--r--libX11/man/XCreateWindowEvent.man458
-rw-r--r--libX11/man/XCrossingEvent.man652
-rw-r--r--libX11/man/XDefineCursor.man402
-rw-r--r--libX11/man/XDestroyWindow.man434
-rw-r--r--libX11/man/XDestroyWindowEvent.man438
-rw-r--r--libX11/man/XDrawArc.man678
-rw-r--r--libX11/man/XDrawImageString.man504
-rw-r--r--libX11/man/XDrawLine.man616
-rw-r--r--libX11/man/XDrawPoint.man504
-rw-r--r--libX11/man/XDrawRectangle.man504
-rw-r--r--libX11/man/XDrawString.man436
-rw-r--r--libX11/man/XDrawText.man578
-rw-r--r--libX11/man/XEmptyRegion.man418
-rw-r--r--libX11/man/XErrorEvent.man406
-rw-r--r--libX11/man/XExposeEvent.man464
-rw-r--r--libX11/man/XExtentsOfFontSet.man346
-rw-r--r--libX11/man/XFillRectangle.man788
-rw-r--r--libX11/man/XFilterEvent.man372
-rw-r--r--libX11/man/XFlush.man528
-rw-r--r--libX11/man/XFocusChangeEvent.man532
-rw-r--r--libX11/man/XFontSetExtents.man386
-rw-r--r--libX11/man/XFontsOfFontSet.man576
-rw-r--r--libX11/man/XFree.man316
-rw-r--r--libX11/man/XFreeModifierMap.man2
-rw-r--r--libX11/man/XGetEventData.man446
-rw-r--r--libX11/man/XGetVisualInfo.man626
-rw-r--r--libX11/man/XGetWindowAttributes.man790
-rw-r--r--libX11/man/XGetWindowProperty.man952
-rw-r--r--libX11/man/XGetXCBConnection.man88
-rw-r--r--libX11/man/XGrabButton.man624
-rw-r--r--libX11/man/XGrabKeyboard.man594
-rw-r--r--libX11/man/XGrabPointer.man730
-rw-r--r--libX11/man/XGrabServer.man340
-rw-r--r--libX11/man/XGraphicsExposeEvent.man552
-rw-r--r--libX11/man/XGravityEvent.man448
-rw-r--r--libX11/man/XIconifyWindow.man512
-rw-r--r--libX11/man/XIfEvent.man502
-rw-r--r--libX11/man/XInitImage.man628
-rw-r--r--libX11/man/XInitThreads.man406
-rw-r--r--libX11/man/XInstallColormap.man492
-rw-r--r--libX11/man/XIntersectRegion.man450
-rw-r--r--libX11/man/XKeymapEvent.man440
-rw-r--r--libX11/man/XListFonts.man530
-rw-r--r--libX11/man/XLoadFont.man1078
-rw-r--r--libX11/man/XMapEvent.man580
-rw-r--r--libX11/man/XMapRequestEvent.man428
-rw-r--r--libX11/man/XMapWindow.man554
-rw-r--r--libX11/man/XNextEvent.man618
-rw-r--r--libX11/man/XNoOp.man316
-rw-r--r--libX11/man/XOpenDisplay.man512
-rw-r--r--libX11/man/XOpenIM.man608
-rw-r--r--libX11/man/XOpenOM.man514
-rw-r--r--libX11/man/XParseGeometry.man566
-rw-r--r--libX11/man/XPolygonRegion.man364
-rw-r--r--libX11/man/XPropertyEvent.man488
-rw-r--r--libX11/man/XPutBackEvent.man336
-rw-r--r--libX11/man/XPutImage.man806
-rw-r--r--libX11/man/XQueryBestSize.man574
-rw-r--r--libX11/man/XQueryColor.man688
-rw-r--r--libX11/man/XQueryExtension.man134
-rw-r--r--libX11/man/XQueryPointer.man438
-rw-r--r--libX11/man/XQueryTree.man388
-rw-r--r--libX11/man/XReadBitmapFile.man712
-rw-r--r--libX11/man/XRecolorCursor.man464
-rw-r--r--libX11/man/XReparentEvent.man462
-rw-r--r--libX11/man/XReparentWindow.man456
-rw-r--r--libX11/man/XResizeRequestEvent.man432
-rw-r--r--libX11/man/XResourceManagerString.man368
-rw-r--r--libX11/man/XSaveContext.man410
-rw-r--r--libX11/man/XSelectInput.man424
-rw-r--r--libX11/man/XSelectionClearEvent.man442
-rw-r--r--libX11/man/XSelectionEvent.man458
-rw-r--r--libX11/man/XSelectionRequestEvent.man466
-rw-r--r--libX11/man/XSendEvent.man628
-rw-r--r--libX11/man/XSetArcMode.man484
-rw-r--r--libX11/man/XSetClipOrigin.man588
-rw-r--r--libX11/man/XSetCloseDownMode.man440
-rw-r--r--libX11/man/XSetCommand.man448
-rw-r--r--libX11/man/XSetErrorHandler.man550
-rw-r--r--libX11/man/XSetEventQueueOwner.man116
-rw-r--r--libX11/man/XSetFillStyle.man436
-rw-r--r--libX11/man/XSetFont.man374
-rw-r--r--libX11/man/XSetFontPath.man426
-rw-r--r--libX11/man/XSetICFocus.man368
-rw-r--r--libX11/man/XSetICValues.man470
-rw-r--r--libX11/man/XSetInputFocus.man550
-rw-r--r--libX11/man/XSetLineAttributes.man534
-rw-r--r--libX11/man/XSetPointerMapping.man434
-rw-r--r--libX11/man/XSetScreenSaver.man580
-rw-r--r--libX11/man/XSetSelectionOwner.man556
-rw-r--r--libX11/man/XSetState.man512
-rw-r--r--libX11/man/XSetTextProperty.man534
-rw-r--r--libX11/man/XSetTile.man482
-rw-r--r--libX11/man/XSetTransientForHint.man422
-rw-r--r--libX11/man/XSetWMClientMachine.man396
-rw-r--r--libX11/man/XSetWMColormapWindows.man476
-rw-r--r--libX11/man/XSetWMIconName.man500
-rw-r--r--libX11/man/XSetWMName.man514
-rw-r--r--libX11/man/XSetWMProperties.man780
-rw-r--r--libX11/man/XSetWMProtocols.man472
-rw-r--r--libX11/man/XStoreBytes.man506
-rw-r--r--libX11/man/XStoreColors.man608
-rw-r--r--libX11/man/XStringListToTextProperty.man506
-rw-r--r--libX11/man/XSupportsLocale.man454
-rw-r--r--libX11/man/XSynchronize.man358
-rw-r--r--libX11/man/XTextExtents.man580
-rw-r--r--libX11/man/XTextWidth.man338
-rw-r--r--libX11/man/XTranslateCoordinates.man400
-rw-r--r--libX11/man/XUnmapEvent.man452
-rw-r--r--libX11/man/XUnmapWindow.man420
-rw-r--r--libX11/man/XVaCreateNestedList.man338
-rw-r--r--libX11/man/XVisibilityEvent.man488
-rw-r--r--libX11/man/XWarpPointer.man434
-rw-r--r--libX11/man/XcmsAllocColor.man510
-rw-r--r--libX11/man/XcmsCCCOfColormap.man374
-rw-r--r--libX11/man/XcmsCIELabQueryMaxC.man442
-rw-r--r--libX11/man/XcmsCIELuvQueryMaxC.man442
-rw-r--r--libX11/man/XcmsColor.man526
-rw-r--r--libX11/man/XcmsConvertColors.man402
-rw-r--r--libX11/man/XcmsCreateCCC.man404
-rw-r--r--libX11/man/XcmsDefaultCCC.man338
-rw-r--r--libX11/man/XcmsQueryBlack.man410
-rw-r--r--libX11/man/XcmsQueryColor.man532
-rw-r--r--libX11/man/XcmsSetWhitePoint.man394
-rw-r--r--libX11/man/XcmsStoreColor.man612
-rw-r--r--libX11/man/XcmsTekHVCQueryMaxC.man486
-rw-r--r--libX11/man/XmbDrawImageString.man432
-rw-r--r--libX11/man/XmbDrawString.man414
-rw-r--r--libX11/man/XmbDrawText.man510
-rw-r--r--libX11/man/XmbLookupString.man622
-rw-r--r--libX11/man/XmbResetIC.man422
-rw-r--r--libX11/man/XmbTextEscapement.man380
-rw-r--r--libX11/man/XmbTextExtents.man452
-rw-r--r--libX11/man/XmbTextListToTextProperty.man918
-rw-r--r--libX11/man/XmbTextPerCharExtents.man512
-rw-r--r--libX11/man/XrmEnumerateDatabase.man468
-rw-r--r--libX11/man/XrmGetFileDatabase.man646
-rw-r--r--libX11/man/XrmGetResource.man650
-rw-r--r--libX11/man/XrmInitialize.man526
-rw-r--r--libX11/man/XrmMergeDatabases.man430
-rw-r--r--libX11/man/XrmPutResource.man504
-rw-r--r--libX11/man/XrmUniqueQuark.man606
-rw-r--r--libX11/man/xkb/XkbComputeShapeTop.man150
-rw-r--r--libX11/modules/Makefile.am2
-rw-r--r--libX11/modules/im/Makefile.am2
-rw-r--r--libX11/modules/im/ximcp/imDispch.c208
-rw-r--r--libX11/modules/im/ximcp/imImSw.c110
-rw-r--r--libX11/modules/im/ximcp/imLcPrs.c1370
-rw-r--r--libX11/modules/im/ximcp/imLcSIc.c108
-rw-r--r--libX11/modules/im/ximcp/imThaiFlt.c2842
-rw-r--r--libX11/modules/im/ximcp/imThaiIm.c470
-rw-r--r--libX11/modules/lc/Makefile.am2
-rw-r--r--libX11/modules/lc/Utf8/lcUTF8Load.c140
-rw-r--r--libX11/modules/lc/xlocale/lcEuc.c3074
-rw-r--r--libX11/modules/lc/xlocale/lcSjis.c3224
-rw-r--r--libX11/modules/om/Makefile.am2
-rw-r--r--libX11/modules/om/generic/omDefault.c898
-rw-r--r--libX11/modules/om/generic/omImText.c180
-rw-r--r--libX11/modules/om/generic/omText.c740
-rw-r--r--libX11/modules/om/generic/omTextEsc.c600
-rw-r--r--libX11/modules/om/generic/omTextExt.c270
-rw-r--r--libX11/modules/om/generic/omTextPer.c404
-rw-r--r--libX11/modules/om/generic/omXChar.c954
-rw-r--r--libX11/nls/.gitignore12
-rw-r--r--libX11/nls/C/XI18N_OBJS16
-rw-r--r--libX11/nls/C/XLC_LOCALE.pre122
-rw-r--r--libX11/nls/am_ET.UTF-8/Compose.pre720
-rw-r--r--libX11/nls/armscii-8/Compose.pre28
-rw-r--r--libX11/nls/armscii-8/XI18N_OBJS14
-rw-r--r--libX11/nls/armscii-8/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/compose.dir.pre840
-rw-r--r--libX11/nls/el_GR.UTF-8/Compose.pre3962
-rw-r--r--libX11/nls/en_US.UTF-8/XI18N_OBJS16
-rw-r--r--libX11/nls/en_US.UTF-8/XLC_LOCALE.pre600
-rw-r--r--libX11/nls/georgian-academy/Compose.pre28
-rw-r--r--libX11/nls/georgian-academy/XI18N_OBJS14
-rw-r--r--libX11/nls/georgian-academy/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/georgian-ps/Compose.pre28
-rw-r--r--libX11/nls/georgian-ps/XI18N_OBJS14
-rw-r--r--libX11/nls/georgian-ps/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/ibm-cp1133/Compose.pre28
-rw-r--r--libX11/nls/ibm-cp1133/XI18N_OBJS14
-rw-r--r--libX11/nls/ibm-cp1133/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/iscii-dev/XI18N_OBJS14
-rw-r--r--libX11/nls/iscii-dev/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/isiri-3342/XI18N_OBJS14
-rw-r--r--libX11/nls/isiri-3342/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/iso8859-1/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-1/XLC_LOCALE.pre142
-rw-r--r--libX11/nls/iso8859-10/Compose.pre28
-rw-r--r--libX11/nls/iso8859-10/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-10/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-11/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-11/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-13/Compose.pre864
-rw-r--r--libX11/nls/iso8859-13/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-13/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-14/Compose.pre1018
-rw-r--r--libX11/nls/iso8859-14/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-14/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-15/Compose.pre952
-rw-r--r--libX11/nls/iso8859-15/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-15/XLC_LOCALE.pre156
-rw-r--r--libX11/nls/iso8859-2/Compose.pre1070
-rw-r--r--libX11/nls/iso8859-2/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-2/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-3/Compose.pre966
-rw-r--r--libX11/nls/iso8859-3/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-3/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-4/Compose.pre748
-rw-r--r--libX11/nls/iso8859-4/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-4/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-5/Compose.pre28
-rw-r--r--libX11/nls/iso8859-5/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-5/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-6/Compose.pre28
-rw-r--r--libX11/nls/iso8859-6/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-6/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-7/Compose.pre444
-rw-r--r--libX11/nls/iso8859-7/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-7/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-8/Compose.pre28
-rw-r--r--libX11/nls/iso8859-8/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-8/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-9/Compose.pre962
-rw-r--r--libX11/nls/iso8859-9/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-9/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-9e/Compose.pre986
-rw-r--r--libX11/nls/iso8859-9e/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-9e/XLC_LOCALE.pre168
-rw-r--r--libX11/nls/ja.JIS/Compose.pre28
-rw-r--r--libX11/nls/ja.JIS/XI18N_OBJS14
-rw-r--r--libX11/nls/ja.JIS/XLC_LOCALE.pre248
-rw-r--r--libX11/nls/ja.S90/XI18N_OBJS14
-rw-r--r--libX11/nls/ja.S90/XLC_LOCALE.pre300
-rw-r--r--libX11/nls/ja.SJIS/Compose.pre28
-rw-r--r--libX11/nls/ja.SJIS/XI18N_OBJS20
-rw-r--r--libX11/nls/ja.SJIS/XLC_LOCALE.pre768
-rw-r--r--libX11/nls/ja.U90/XI18N_OBJS14
-rw-r--r--libX11/nls/ja.U90/XLC_LOCALE.pre302
-rw-r--r--libX11/nls/ja/Compose.pre28
-rw-r--r--libX11/nls/ja/XI18N_OBJS22
-rw-r--r--libX11/nls/ja/XLC_LOCALE.pre248
-rw-r--r--libX11/nls/ja_JP.UTF-8/XI18N_OBJS16
-rw-r--r--libX11/nls/ja_JP.UTF-8/XLC_LOCALE.pre298
-rw-r--r--libX11/nls/ko/Compose.pre28
-rw-r--r--libX11/nls/ko/XI18N_OBJS14
-rw-r--r--libX11/nls/ko/XLC_LOCALE.pre142
-rw-r--r--libX11/nls/ko_KR.UTF-8/XI18N_OBJS16
-rw-r--r--libX11/nls/ko_KR.UTF-8/XLC_LOCALE.pre294
-rw-r--r--libX11/nls/koi8-c/Compose.pre244
-rw-r--r--libX11/nls/koi8-c/XI18N_OBJS14
-rw-r--r--libX11/nls/koi8-c/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/koi8-r/Compose.pre28
-rw-r--r--libX11/nls/koi8-r/XI18N_OBJS14
-rw-r--r--libX11/nls/koi8-r/XLC_LOCALE.pre160
-rw-r--r--libX11/nls/koi8-u/Compose.pre28
-rw-r--r--libX11/nls/koi8-u/XI18N_OBJS14
-rw-r--r--libX11/nls/koi8-u/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/locale.dir.pre902
-rw-r--r--libX11/nls/microsoft-cp1251/XI18N_OBJS14
-rw-r--r--libX11/nls/microsoft-cp1251/XLC_LOCALE.pre170
-rw-r--r--libX11/nls/microsoft-cp1255/XI18N_OBJS14
-rw-r--r--libX11/nls/microsoft-cp1255/XLC_LOCALE.pre170
-rw-r--r--libX11/nls/microsoft-cp1256/XI18N_OBJS14
-rw-r--r--libX11/nls/microsoft-cp1256/XLC_LOCALE.pre170
-rw-r--r--libX11/nls/mulelao-1/Compose.pre28
-rw-r--r--libX11/nls/mulelao-1/XI18N_OBJS14
-rw-r--r--libX11/nls/mulelao-1/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/nokhchi-1/XI18N_OBJS14
-rw-r--r--libX11/nls/nokhchi-1/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/pt_BR.UTF-8/XI18N_OBJS14
-rw-r--r--libX11/nls/pt_BR.UTF-8/XLC_LOCALE.pre284
-rw-r--r--libX11/nls/ru_RU.UTF-8/Compose.pre2
-rw-r--r--libX11/nls/ru_RU.UTF-8/XI18N_OBJS14
-rw-r--r--libX11/nls/ru_RU.UTF-8/XLC_LOCALE.pre338
-rw-r--r--libX11/nls/tatar-cyr/XI18N_OBJS14
-rw-r--r--libX11/nls/tatar-cyr/XLC_LOCALE.pre170
-rw-r--r--libX11/nls/th_TH.UTF-8/XI18N_OBJS16
-rw-r--r--libX11/nls/th_TH.UTF-8/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/th_TH/XI18N_OBJS14
-rw-r--r--libX11/nls/th_TH/XLC_LOCALE.pre130
-rw-r--r--libX11/nls/tscii-0/XI18N_OBJS14
-rw-r--r--libX11/nls/tscii-0/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/vi_VN.tcvn/Compose.pre270
-rw-r--r--libX11/nls/vi_VN.tcvn/XI18N_OBJS14
-rw-r--r--libX11/nls/vi_VN.tcvn/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/vi_VN.viscii/Compose.pre270
-rw-r--r--libX11/nls/vi_VN.viscii/XI18N_OBJS14
-rw-r--r--libX11/nls/vi_VN.viscii/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/zh_CN.UTF-8/XI18N_OBJS16
-rw-r--r--libX11/nls/zh_CN.UTF-8/XLC_LOCALE.pre214
-rw-r--r--libX11/nls/zh_CN.gb18030/Compose.pre28
-rw-r--r--libX11/nls/zh_CN.gb18030/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_CN.gb18030/XLC_LOCALE.pre212
-rw-r--r--libX11/nls/zh_CN.gbk/Compose.pre28
-rw-r--r--libX11/nls/zh_CN.gbk/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_CN.gbk/XLC_LOCALE.pre140
-rw-r--r--libX11/nls/zh_CN/Compose.pre28
-rw-r--r--libX11/nls/zh_CN/XI18N_OBJS18
-rw-r--r--libX11/nls/zh_CN/XLC_LOCALE.pre124
-rw-r--r--libX11/nls/zh_HK.UTF-8/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_HK.UTF-8/XLC_LOCALE.pre192
-rw-r--r--libX11/nls/zh_HK.big5/Compose.pre26
-rw-r--r--libX11/nls/zh_HK.big5/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_HK.big5/XLC_LOCALE.pre138
-rw-r--r--libX11/nls/zh_HK.big5hkscs/Compose.pre26
-rw-r--r--libX11/nls/zh_HK.big5hkscs/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_HK.big5hkscs/XLC_LOCALE.pre142
-rw-r--r--libX11/nls/zh_TW.UTF-8/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_TW.UTF-8/XLC_LOCALE.pre182
-rw-r--r--libX11/nls/zh_TW.big5/Compose.pre28
-rw-r--r--libX11/nls/zh_TW.big5/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_TW.big5/XLC_LOCALE.pre186
-rw-r--r--libX11/nls/zh_TW/Compose.pre28
-rw-r--r--libX11/nls/zh_TW/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_TW/XLC_LOCALE.pre284
-rw-r--r--libX11/specs/.gitignore5
-rw-r--r--libX11/specs/Makefile.am48
-rw-r--r--libX11/specs/i18n/compose/.gitignore2
-rw-r--r--libX11/specs/libX11/CH04.xml3
-rw-r--r--libX11/src/.gitignore2
-rw-r--r--libX11/src/AllowEv.c102
-rw-r--r--libX11/src/AutoRep.c100
-rw-r--r--libX11/src/Backgnd.c98
-rw-r--r--libX11/src/BdrWidth.c106
-rw-r--r--libX11/src/Bell.c92
-rw-r--r--libX11/src/Border.c98
-rw-r--r--libX11/src/ChAccCon.c118
-rw-r--r--libX11/src/ChActPGb.c98
-rw-r--r--libX11/src/ChClMode.c92
-rw-r--r--libX11/src/ChCmap.c98
-rw-r--r--libX11/src/ChGC.c104
-rw-r--r--libX11/src/ChKeyCon.c166
-rw-r--r--libX11/src/ChPntCon.c110
-rw-r--r--libX11/src/ChProp.c198
-rw-r--r--libX11/src/ChSaveSet.c126
-rw-r--r--libX11/src/ChWAttrs.c114
-rw-r--r--libX11/src/ChWindow.c126
-rw-r--r--libX11/src/ChkTypEv.c162
-rw-r--r--libX11/src/ChkTypWEv.c166
-rw-r--r--libX11/src/CirWin.c96
-rw-r--r--libX11/src/CirWinDn.c94
-rw-r--r--libX11/src/CirWinUp.c94
-rw-r--r--libX11/src/Clear.c98
-rw-r--r--libX11/src/ClearArea.c112
-rw-r--r--libX11/src/Cmap.h20
-rw-r--r--libX11/src/ConfWind.c142
-rw-r--r--libX11/src/Context.c604
-rw-r--r--libX11/src/ConvSel.c106
-rw-r--r--libX11/src/CopyArea.c128
-rw-r--r--libX11/src/CopyCmap.c128
-rw-r--r--libX11/src/CopyGC.c276
-rw-r--r--libX11/src/CopyPlane.c132
-rw-r--r--libX11/src/Cr.h54
-rw-r--r--libX11/src/CrBFData.c158
-rw-r--r--libX11/src/CrCmap.c118
-rw-r--r--libX11/src/CrCursor.c158
-rw-r--r--libX11/src/CrGC.c690
-rw-r--r--libX11/src/CrGlCur.c540
-rw-r--r--libX11/src/CrPFBData.c174
-rw-r--r--libX11/src/CrPixmap.c130
-rw-r--r--libX11/src/CrWindow.c164
-rw-r--r--libX11/src/Cursor.c106
-rw-r--r--libX11/src/DefCursor.c98
-rw-r--r--libX11/src/DelProp.c94
-rw-r--r--libX11/src/Depths.c124
-rw-r--r--libX11/src/DestSubs.c90
-rw-r--r--libX11/src/DestWind.c90
-rw-r--r--libX11/src/DisName.c128
-rw-r--r--libX11/src/DrArc.c170
-rw-r--r--libX11/src/DrArcs.c114
-rw-r--r--libX11/src/DrLine.c202
-rw-r--r--libX11/src/DrLines.c114
-rw-r--r--libX11/src/DrPoint.c194
-rw-r--r--libX11/src/DrPoints.c170
-rw-r--r--libX11/src/DrRect.c200
-rw-r--r--libX11/src/DrRects.c130
-rw-r--r--libX11/src/DrSegs.c132
-rw-r--r--libX11/src/ErrDes.c422
-rw-r--r--libX11/src/ErrHndlr.c172
-rw-r--r--libX11/src/FSSaver.c120
-rw-r--r--libX11/src/FetchName.c190
-rw-r--r--libX11/src/FillArc.c204
-rw-r--r--libX11/src/FillArcs.c134
-rw-r--r--libX11/src/FillPoly.c128
-rw-r--r--libX11/src/FillRct.c194
-rw-r--r--libX11/src/FillRcts.c132
-rw-r--r--libX11/src/Flush.c84
-rw-r--r--libX11/src/FreeCmap.c104
-rw-r--r--libX11/src/FreeCols.c114
-rw-r--r--libX11/src/FreeCurs.c88
-rw-r--r--libX11/src/FreeEData.c90
-rw-r--r--libX11/src/FreeEventData.c84
-rw-r--r--libX11/src/FreeGC.c100
-rw-r--r--libX11/src/FreePix.c88
-rw-r--r--libX11/src/GCMisc.c220
-rw-r--r--libX11/src/Geom.c178
-rw-r--r--libX11/src/GetDflt.c530
-rw-r--r--libX11/src/GetEventData.c84
-rw-r--r--libX11/src/GetFProp.c110
-rw-r--r--libX11/src/GetGCVals.c256
-rw-r--r--libX11/src/GetHints.c678
-rw-r--r--libX11/src/GetNrmHint.c254
-rw-r--r--libX11/src/GetRGBCMap.c270
-rw-r--r--libX11/src/GetStCmap.c234
-rw-r--r--libX11/src/GetTxtProp.c226
-rw-r--r--libX11/src/GetWMCMapW.c174
-rw-r--r--libX11/src/GetWMProto.c174
-rw-r--r--libX11/src/GrButton.c120
-rw-r--r--libX11/src/GrKey.c116
-rw-r--r--libX11/src/GrServer.c84
-rw-r--r--libX11/src/InsCmap.c88
-rw-r--r--libX11/src/Key.h34
-rw-r--r--libX11/src/KillCl.c88
-rw-r--r--libX11/src/LoadFont.c110
-rw-r--r--libX11/src/LockDis.c168
-rw-r--r--libX11/src/LowerWin.c98
-rw-r--r--libX11/src/Macros.c574
-rw-r--r--libX11/src/MapRaised.c102
-rw-r--r--libX11/src/MapSubs.c86
-rw-r--r--libX11/src/MapWindow.c88
-rw-r--r--libX11/src/Misc.c132
-rw-r--r--libX11/src/MoveWin.c130
-rw-r--r--libX11/src/OCWrap.c280
-rw-r--r--libX11/src/OMWrap.c258
-rw-r--r--libX11/src/ParseCmd.c450
-rw-r--r--libX11/src/ParseGeom.c324
-rw-r--r--libX11/src/Pending.c116
-rw-r--r--libX11/src/PixFormats.c124
-rw-r--r--libX11/src/PmapBgnd.c96
-rw-r--r--libX11/src/PmapBord.c96
-rw-r--r--libX11/src/PolyReg.c1276
-rw-r--r--libX11/src/PolyTxt.c468
-rw-r--r--libX11/src/PolyTxt16.c536
-rw-r--r--libX11/src/PropAlloc.c150
-rw-r--r--libX11/src/PutImage.c2088
-rw-r--r--libX11/src/RaiseWin.c98
-rw-r--r--libX11/src/RecolorC.c108
-rw-r--r--libX11/src/ReconfWin.c162
-rw-r--r--libX11/src/Region.c3208
-rw-r--r--libX11/src/RegstFlt.c310
-rw-r--r--libX11/src/RepWindow.c104
-rw-r--r--libX11/src/RestackWs.c140
-rw-r--r--libX11/src/RotProp.c126
-rw-r--r--libX11/src/ScrResStr.c110
-rw-r--r--libX11/src/SelInput.c98
-rw-r--r--libX11/src/SetBack.c92
-rw-r--r--libX11/src/SetCRects.c162
-rw-r--r--libX11/src/SetClMask.c94
-rw-r--r--libX11/src/SetClOrig.c106
-rw-r--r--libX11/src/SetDashes.c110
-rw-r--r--libX11/src/SetFPath.c154
-rw-r--r--libX11/src/SetFont.c94
-rw-r--r--libX11/src/SetFore.c92
-rw-r--r--libX11/src/SetFunc.c92
-rw-r--r--libX11/src/SetHints.c634
-rw-r--r--libX11/src/SetIFocus.c100
-rw-r--r--libX11/src/SetLStyle.c126
-rw-r--r--libX11/src/SetNrmHint.c254
-rw-r--r--libX11/src/SetPMask.c92
-rw-r--r--libX11/src/SetRGBCMap.c200
-rw-r--r--libX11/src/SetSOwner.c98
-rw-r--r--libX11/src/SetSSaver.c106
-rw-r--r--libX11/src/SetStCmap.c190
-rw-r--r--libX11/src/SetState.c128
-rw-r--r--libX11/src/SetStip.c92
-rw-r--r--libX11/src/SetTSOrig.c106
-rw-r--r--libX11/src/SetTile.c92
-rw-r--r--libX11/src/SetTxtProp.c186
-rw-r--r--libX11/src/SetWMCMapW.c148
-rw-r--r--libX11/src/SetWMProto.c148
-rw-r--r--libX11/src/StBytes.c214
-rw-r--r--libX11/src/StColor.c140
-rw-r--r--libX11/src/StColors.c130
-rw-r--r--libX11/src/StNColor.c174
-rw-r--r--libX11/src/StName.c106
-rw-r--r--libX11/src/StrToText.c180
-rw-r--r--libX11/src/Synchro.c158
-rw-r--r--libX11/src/Text.c278
-rw-r--r--libX11/src/Text16.c304
-rw-r--r--libX11/src/TextExt.c468
-rw-r--r--libX11/src/TextExt16.c420
-rw-r--r--libX11/src/TextToStr.c236
-rw-r--r--libX11/src/UndefCurs.c98
-rw-r--r--libX11/src/UngrabBut.c98
-rw-r--r--libX11/src/UngrabKbd.c90
-rw-r--r--libX11/src/UngrabKey.c104
-rw-r--r--libX11/src/UngrabPtr.c88
-rw-r--r--libX11/src/UngrabSvr.c88
-rw-r--r--libX11/src/UninsCmap.c88
-rw-r--r--libX11/src/UnldFont.c90
-rw-r--r--libX11/src/UnmapSubs.c88
-rw-r--r--libX11/src/UnmapWin.c90
-rw-r--r--libX11/src/VisUtil.c508
-rw-r--r--libX11/src/WMGeom.c366
-rw-r--r--libX11/src/WMProps.c294
-rw-r--r--libX11/src/WarpPtr.c120
-rw-r--r--libX11/src/Window.c288
-rw-r--r--libX11/src/WrBitF.c312
-rw-r--r--libX11/src/Xatomtype.h266
-rw-r--r--libX11/src/Xintatom.h64
-rw-r--r--libX11/src/XomGeneric.h632
-rw-r--r--libX11/src/evtomask.c148
-rw-r--r--libX11/src/locking.h308
-rw-r--r--libX11/src/os2Stubs.c856
-rw-r--r--libX11/src/poly.h588
-rw-r--r--libX11/src/udcInf.c1432
-rw-r--r--libX11/src/util/.gitignore2
-rw-r--r--libX11/src/util/mkks.sh22
-rw-r--r--libX11/src/utlist.h232
-rw-r--r--libX11/src/x11_xcb.c30
-rw-r--r--libX11/src/xcms/AddDIC.c298
-rw-r--r--libX11/src/xcms/AddSF.c290
-rw-r--r--libX11/src/xcms/CCC.c572
-rw-r--r--libX11/src/xcms/Cv.h378
-rw-r--r--libX11/src/xcms/CvColW.c282
-rw-r--r--libX11/src/xcms/CvCols.c2060
-rw-r--r--libX11/src/xcms/HVC.c1250
-rw-r--r--libX11/src/xcms/HVCGcC.c298
-rw-r--r--libX11/src/xcms/HVCGcV.c402
-rw-r--r--libX11/src/xcms/HVCGcVC.c524
-rw-r--r--libX11/src/xcms/HVCMnV.c326
-rw-r--r--libX11/src/xcms/HVCMxC.c486
-rw-r--r--libX11/src/xcms/HVCMxV.c494
-rw-r--r--libX11/src/xcms/HVCMxVC.c470
-rw-r--r--libX11/src/xcms/HVCMxVs.c322
-rw-r--r--libX11/src/xcms/HVCWpAj.c228
-rw-r--r--libX11/src/xcms/IdOfPr.c212
-rw-r--r--libX11/src/xcms/Lab.c862
-rw-r--r--libX11/src/xcms/LabGcC.c254
-rw-r--r--libX11/src/xcms/LabGcL.c348
-rw-r--r--libX11/src/xcms/LabGcLC.c446
-rw-r--r--libX11/src/xcms/LabMnL.c432
-rw-r--r--libX11/src/xcms/LabMxC.c406
-rw-r--r--libX11/src/xcms/LabMxL.c432
-rw-r--r--libX11/src/xcms/LabMxLC.c436
-rw-r--r--libX11/src/xcms/LabWpAj.c194
-rw-r--r--libX11/src/xcms/Luv.c802
-rw-r--r--libX11/src/xcms/LuvGcC.c254
-rw-r--r--libX11/src/xcms/LuvGcL.c348
-rw-r--r--libX11/src/xcms/LuvGcLC.c446
-rw-r--r--libX11/src/xcms/LuvMnL.c432
-rw-r--r--libX11/src/xcms/LuvMxC.c408
-rw-r--r--libX11/src/xcms/LuvMxL.c432
-rw-r--r--libX11/src/xcms/LuvMxLC.c436
-rw-r--r--libX11/src/xcms/LuvWpAj.c192
-rw-r--r--libX11/src/xcms/OfCCC.c324
-rw-r--r--libX11/src/xcms/QBlack.c168
-rw-r--r--libX11/src/xcms/QBlue.c168
-rw-r--r--libX11/src/xcms/QGreen.c168
-rw-r--r--libX11/src/xcms/QRed.c168
-rw-r--r--libX11/src/xcms/QWhite.c168
-rw-r--r--libX11/src/xcms/QuCol.c156
-rw-r--r--libX11/src/xcms/QuCols.c156
-rw-r--r--libX11/src/xcms/SetCCC.c276
-rw-r--r--libX11/src/xcms/SetGetCols.c602
-rw-r--r--libX11/src/xcms/StCol.c164
-rw-r--r--libX11/src/xcms/StCols.c224
-rw-r--r--libX11/src/xcms/UNDEFINED.c262
-rw-r--r--libX11/src/xcms/XRGB.c484
-rw-r--r--libX11/src/xcms/XYZ.c406
-rw-r--r--libX11/src/xcms/Xcms.txt88
-rw-r--r--libX11/src/xcms/Xcmsint.h520
-rw-r--r--libX11/src/xcms/cmsAllCol.c148
-rw-r--r--libX11/src/xcms/cmsGlobls.c252
-rw-r--r--libX11/src/xcms/cmsMath.c272
-rw-r--r--libX11/src/xcms/cmsTrig.c1186
-rw-r--r--libX11/src/xcms/uvY.c846
-rw-r--r--libX11/src/xcms/xyY.c790
-rw-r--r--libX11/src/xkb/XKBlibint.h686
-rw-r--r--libX11/src/xlibi18n/IMWrap.c408
-rw-r--r--libX11/src/xlibi18n/Xaixlcint.h106
-rw-r--r--libX11/src/xlibi18n/XimImSw.h92
-rw-r--r--libX11/src/xlibi18n/XimProto.h466
-rw-r--r--libX11/src/xlibi18n/XimThai.h220
-rw-r--r--libX11/src/xlibi18n/Ximint.h1996
-rw-r--r--libX11/src/xlibi18n/XimintL.h212
-rw-r--r--libX11/src/xlibi18n/XlcGeneric.h324
-rw-r--r--libX11/src/xlibi18n/XlcPubI.h610
-rw-r--r--libX11/src/xlibi18n/XlcPublic.h648
-rw-r--r--libX11/src/xlibi18n/Xlcint.h1958
-rw-r--r--libX11/src/xlibi18n/lcCT.c2606
-rw-r--r--libX11/src/xlibi18n/lcConv.c678
-rw-r--r--libX11/src/xlibi18n/lcDynamic.c156
-rw-r--r--libX11/src/xlibi18n/lcPrTxt.c580
-rw-r--r--libX11/src/xlibi18n/lcPubWrap.c198
-rw-r--r--libX11/src/xlibi18n/lcRM.c448
-rw-r--r--libX11/src/xlibi18n/lcStd.c736
-rw-r--r--libX11/src/xlibi18n/lcTxtPr.c508
-rw-r--r--libX11/src/xlibi18n/lcUniConv/8bit_tab_to_h.c1070
-rw-r--r--libX11/src/xlibi18n/lcUniConv/COPYRIGHT78
-rw-r--r--libX11/src/xlibi18n/lcUniConv/README22
-rw-r--r--libX11/src/xlibi18n/lcUniConv/armscii_8.h194
-rw-r--r--libX11/src/xlibi18n/lcUniConv/ascii.h50
-rw-r--r--libX11/src/xlibi18n/lcUniConv/big5.h8282
-rw-r--r--libX11/src/xlibi18n/lcUniConv/big5_emacs.h326
-rw-r--r--libX11/src/xlibi18n/lcUniConv/big5hkscs.h12504
-rw-r--r--libX11/src/xlibi18n/lcUniConv/cjk_tab_to_h.c2142
-rw-r--r--libX11/src/xlibi18n/lcUniConv/cp1133.h182
-rw-r--r--libX11/src/xlibi18n/lcUniConv/cp1251.h224
-rw-r--r--libX11/src/xlibi18n/lcUniConv/cp1255.h240
-rw-r--r--libX11/src/xlibi18n/lcUniConv/cp1256.h268
-rw-r--r--libX11/src/xlibi18n/lcUniConv/gb2312.h5104
-rw-r--r--libX11/src/xlibi18n/lcUniConv/gbk.h12400
-rw-r--r--libX11/src/xlibi18n/lcUniConv/georgian_academy.h174
-rw-r--r--libX11/src/xlibi18n/lcUniConv/georgian_ps.h208
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_1.h44
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_10.h174
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_11.h154
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_13.h180
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_14.h216
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_15.h124
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_16.h194
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_2.h186
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_3.h198
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_4.h186
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_5.h152
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_6.h158
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_7.h174
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_8.h176
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_9.h132
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_9e.h204
-rw-r--r--libX11/src/xlibi18n/lcUniConv/jisx0201.h94
-rw-r--r--libX11/src/xlibi18n/lcUniConv/jisx0208.h4792
-rw-r--r--libX11/src/xlibi18n/lcUniConv/jisx0212.h4326
-rw-r--r--libX11/src/xlibi18n/lcUniConv/koi8_c.h204
-rw-r--r--libX11/src/xlibi18n/lcUniConv/koi8_r.h268
-rw-r--r--libX11/src/xlibi18n/lcUniConv/koi8_u.h284
-rw-r--r--libX11/src/xlibi18n/lcUniConv/ksc5601.h6004
-rw-r--r--libX11/src/xlibi18n/lcUniConv/mulelao.h154
-rw-r--r--libX11/src/xlibi18n/lcUniConv/tatar_cyr.h244
-rw-r--r--libX11/src/xlibi18n/lcUniConv/tcvn.h266
-rw-r--r--libX11/src/xlibi18n/lcUniConv/tis620.h154
-rw-r--r--libX11/src/xlibi18n/lcUniConv/ucs2be.h62
-rw-r--r--libX11/src/xlibi18n/lcUniConv/utf8.h218
-rw-r--r--libX11/src/xlibi18n/lcUniConv/viscii.h244
-rw-r--r--libX11/src/xlibi18n/lcUtil.c172
-rw-r--r--libX11/src/xlibi18n/lcWrap.c1298
-rw-r--r--libX11/src/xlibi18n/mbWMProps.c138
-rw-r--r--libX11/src/xlibi18n/mbWrap.c326
-rw-r--r--libX11/src/xlibi18n/utf8WMProps.c182
-rw-r--r--libX11/src/xlibi18n/utf8Wrap.c370
-rw-r--r--libX11/src/xlibi18n/wcWrap.c322
-rw-r--r--libX11/src/xlibi18n/xim_trans.c60
-rw-r--r--libX11/x11-xcb.pc.in22
-rw-r--r--libX11/x11.pc.in30
-rw-r--r--libXau/.gitignore78
-rw-r--r--libXau/AUTHORS6
-rw-r--r--libXau/AuDispose.c94
-rw-r--r--libXau/AuGetAddr.c218
-rw-r--r--libXau/AuGetBest.c340
-rw-r--r--libXau/AuRead.c214
-rw-r--r--libXau/AuUnlock.c118
-rw-r--r--libXau/AuWrite.c136
-rw-r--r--libXau/Autest.c148
-rw-r--r--libXau/COPYING42
-rw-r--r--libXau/include/X11/Xauth.h274
-rw-r--r--libXau/man/Xau.man258
-rw-r--r--libXau/xau.pc.in22
-rw-r--r--libXdmcp/.gitignore78
-rw-r--r--libXdmcp/AUTHORS16
-rw-r--r--libXdmcp/COPYING46
-rw-r--r--libXdmcp/README50
-rw-r--r--libXdmcp/Wraphelp.README.crypto128
-rw-r--r--libXdmcp/autogen.sh24
-rw-r--r--libXdmcp/doc/.gitignore5
-rw-r--r--libXdmcp/xdmcp.pc.in22
-rw-r--r--libXext/.gitignore78
-rw-r--r--libXext/README58
-rw-r--r--libXext/specs/.gitignore5
-rw-r--r--libXext/xext.pc.in24
-rw-r--r--libXinerama/.gitignore78
-rw-r--r--libXinerama/COPYING132
-rw-r--r--libXinerama/README50
-rw-r--r--libXinerama/man/Makefile.am90
-rw-r--r--libXinerama/xinerama.pc.in24
-rw-r--r--libXmu/.gitignore78
-rw-r--r--libXmu/doc/.gitignore5
-rw-r--r--libfontenc/.gitignore78
-rw-r--r--libfontenc/COPYING38
-rw-r--r--libfontenc/README50
-rw-r--r--libfontenc/autogen.sh24
-rw-r--r--libfontenc/fontenc.pc.in20
-rw-r--r--libxcb/.gitignore30
-rw-r--r--libxcb/COPYING60
-rw-r--r--libxcb/INSTALL458
-rw-r--r--libxcb/Makefile.am170
-rw-r--r--libxcb/README72
-rw-r--r--libxcb/acinclude.m4284
-rw-r--r--libxcb/autogen.sh24
-rw-r--r--libxcb/doc/.gitignore2
-rw-r--r--libxcb/doc/tutorial/xcb.css246
-rw-r--r--libxcb/doc/xcb.doxygen.in2506
-rw-r--r--libxcb/doc/xkb_internals98
-rw-r--r--libxcb/doc/xkb_issues74
-rw-r--r--libxcb/src/xcb_ext.c258
-rw-r--r--libxcb/src/xcb_list.c202
-rw-r--r--libxcb/src/xcb_xid.c198
-rw-r--r--libxcb/src/xcbext.h204
-rw-r--r--libxcb/tests/.gitignore3
-rw-r--r--libxcb/tests/CheckLog.xsl208
-rw-r--r--libxcb/tests/Makefile.am64
-rw-r--r--libxcb/tests/check_all.c40
-rw-r--r--libxcb/tests/check_public.c436
-rw-r--r--libxcb/tests/check_suites.h8
-rw-r--r--libxcb/tools/README34
-rw-r--r--libxcb/tools/api_conv.pl196
-rw-r--r--libxcb/tools/constants1144
-rw-r--r--libxcb/xcb-composite.pc.in22
-rw-r--r--libxcb/xcb-damage.pc.in22
-rw-r--r--libxcb/xcb-dpms.pc.in22
-rw-r--r--libxcb/xcb-dri2.pc.in22
-rw-r--r--libxcb/xcb-glx.pc.in22
-rw-r--r--libxcb/xcb-proto/.gitignore31
-rw-r--r--libxcb/xcb-proto/COPYING60
-rw-r--r--libxcb/xcb-proto/INSTALL458
-rw-r--r--libxcb/xcb-proto/README94
-rw-r--r--libxcb/xcb-proto/TODO90
-rw-r--r--libxcb/xcb-proto/autogen.sh24
-rw-r--r--libxcb/xcb-proto/src/bigreq.xml76
-rw-r--r--libxcb/xcb-proto/src/composite.xml196
-rw-r--r--libxcb/xcb-proto/src/damage.xml174
-rw-r--r--libxcb/xcb-proto/src/dpms.xml174
-rw-r--r--libxcb/xcb-proto/src/dri2.xml14
-rw-r--r--libxcb/xcb-proto/src/ge.xml84
-rw-r--r--libxcb/xcb-proto/src/randr.xml1342
-rw-r--r--libxcb/xcb-proto/src/record.xml356
-rw-r--r--libxcb/xcb-proto/src/res.xml166
-rw-r--r--libxcb/xcb-proto/src/screensaver.xml256
-rw-r--r--libxcb/xcb-proto/src/shape.xml310
-rw-r--r--libxcb/xcb-proto/src/shm.xml232
-rw-r--r--libxcb/xcb-proto/src/xc_misc.xml76
-rw-r--r--libxcb/xcb-proto/src/xevie.xml170
-rw-r--r--libxcb/xcb-proto/src/xfixes.xml668
-rw-r--r--libxcb/xcb-proto/src/xinerama.xml198
-rw-r--r--libxcb/xcb-proto/src/xinput.xml2040
-rw-r--r--libxcb/xcb-proto/src/xprint.xml658
-rw-r--r--libxcb/xcb-proto/src/xselinux.xml552
-rw-r--r--libxcb/xcb-proto/src/xv.xml900
-rw-r--r--libxcb/xcb-proto/src/xvmc.xml292
-rw-r--r--libxcb/xcb-proto/xcbgen/Makefile.am6
-rw-r--r--libxcb/xcb-proto/xcbgen/__init__.py2
-rw-r--r--libxcb/xcb-proto/xcbgen/error.py10
-rw-r--r--libxcb/xcb-randr.pc.in22
-rw-r--r--libxcb/xcb-record.pc.in22
-rw-r--r--libxcb/xcb-render.pc.in22
-rw-r--r--libxcb/xcb-res.pc.in22
-rw-r--r--libxcb/xcb-screensaver.pc.in22
-rw-r--r--libxcb/xcb-shape.pc.in22
-rw-r--r--libxcb/xcb-shm.pc.in22
-rw-r--r--libxcb/xcb-sync.pc.in22
-rw-r--r--libxcb/xcb-xevie.pc.in22
-rw-r--r--libxcb/xcb-xf86dri.pc.in22
-rw-r--r--libxcb/xcb-xfixes.pc.in22
-rw-r--r--libxcb/xcb-xinerama.pc.in22
-rw-r--r--libxcb/xcb-xinput.pc.in22
-rw-r--r--libxcb/xcb-xkb.pc.in22
-rw-r--r--libxcb/xcb-xprint.pc.in22
-rw-r--r--libxcb/xcb-xselinux.pc.in22
-rw-r--r--libxcb/xcb-xtest.pc.in22
-rw-r--r--libxcb/xcb-xv.pc.in22
-rw-r--r--libxcb/xcb-xvmc.pc.in22
-rw-r--r--libxcb/xcb.pc.in26
-rw-r--r--mesalib/.gitignore42
-rw-r--r--mesalib/bin/.gitignore7
-rw-r--r--mesalib/bin/confdiff.sh96
-rw-r--r--mesalib/bin/installmesa148
-rw-r--r--mesalib/configs/.gitignore2
-rw-r--r--mesalib/configure.ac67
-rw-r--r--mesalib/docs/MESA_agp_offset.spec190
-rw-r--r--mesalib/docs/MESA_pack_invert.spec276
-rw-r--r--mesalib/docs/MESA_release_buffers.spec170
-rw-r--r--mesalib/docs/MESA_resize_buffers.spec162
-rw-r--r--mesalib/docs/MESA_swap_control.spec258
-rw-r--r--mesalib/docs/MESA_texture_array.spec1608
-rw-r--r--mesalib/docs/MESA_texture_signed_rgba.spec428
-rw-r--r--mesalib/docs/MESA_window_pos.spec252
-rw-r--r--mesalib/docs/MESA_ycbcr_texture.spec408
-rw-r--r--mesalib/docs/VERSIONS3028
-rw-r--r--mesalib/docs/enums.txt114
-rw-r--r--mesalib/docs/install.html121
-rw-r--r--mesalib/docs/mesa.css66
-rw-r--r--mesalib/docs/relnotes-7.10.html5590
-rw-r--r--mesalib/docs/relnotes-7.8.2.html292
-rw-r--r--mesalib/docs/relnotes-7.8.3.html178
-rw-r--r--mesalib/docs/relnotes-7.9.1.html812
-rw-r--r--mesalib/docs/relnotes-7.9.html274
-rw-r--r--mesalib/docs/shading.html536
-rw-r--r--mesalib/include/GL/gl_mangle.h4622
-rw-r--r--mesalib/scons/dxsdk.py146
-rw-r--r--mesalib/scons/fixes.py54
-rw-r--r--mesalib/scons/x11.py104
-rw-r--r--mesalib/src/gallium/Android.common.mk32
-rw-r--r--mesalib/src/gallium/Android.mk72
-rw-r--r--mesalib/src/gallium/Makefile12
-rw-r--r--mesalib/src/gallium/Makefile.template73
-rw-r--r--mesalib/src/gallium/README.portability109
-rw-r--r--mesalib/src/gallium/SConscript179
-rw-r--r--mesalib/src/gallium/auxiliary/Android.mk55
-rw-r--r--mesalib/src/gallium/auxiliary/Makefile44
-rw-r--r--mesalib/src/gallium/auxiliary/Makefile.sources197
-rw-r--r--mesalib/src/gallium/auxiliary/SConscript72
-rw-r--r--mesalib/src/gallium/auxiliary/util/.gitignore3
-rw-r--r--mesalib/src/gallium/auxiliary/util/dbghelp.h2530
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_bitmask.c656
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_bitmask.h234
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_box.h160
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_cache.c702
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_cache.h182
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_cpu_detect.c686
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_cpu_detect.h138
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_debug_stack.h130
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_debug_symbol.c486
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_debug_symbol.h116
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_dirty_flags.h64
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_dirty_surfaces.h238
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_dl.c188
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_dl.h166
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_dump_defines.c672
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_dynarray.h228
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_fifo.h188
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_latc.h216
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_other.c944
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_other.h268
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_rgb9e5.h328
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_rgtc.h228
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_s3tc.h436
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_srgb.h212
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_srgb.py200
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_format_tests.h142
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_framebuffer.c296
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_framebuffer.h108
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_half.h180
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_half.py358
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_handle_table.c596
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_handle_table.h232
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_hash.c242
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_hash.h110
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_hash_table.c586
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_hash_table.h192
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_init.h104
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_keymap.c636
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_keymap.h136
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_linear.c202
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_linear.h212
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_linkage.c298
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_math.c146
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_memory.h200
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_mm.c592
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_mm.h182
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_pointer.h260
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_pstipple.h112
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_rect.h206
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_resource.c176
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_ringbuffer.c320
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_ringbuffer.h58
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_sampler.h114
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_simple_list.h398
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_split_prim.h228
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_sse.h510
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_surfaces.c248
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_surfaces.h202
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_texture.c206
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_texture.h108
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_time.h300
-rw-r--r--mesalib/src/glsl/.gitignore6
-rw-r--r--mesalib/src/glsl/glcpp/.gitignore7
-rw-r--r--mesalib/src/glsl/glcpp/README62
-rw-r--r--mesalib/src/glsl/glcpp/glcpp-parse.y3
-rw-r--r--mesalib/src/glsl/glsl_parser_extras.cpp1
-rw-r--r--mesalib/src/glsl/glsl_parser_extras.h2
-rw-r--r--mesalib/src/glsl/ir.cpp8
-rw-r--r--mesalib/src/glsl/ir.h26
-rw-r--r--mesalib/src/glsl/ir_constant_expression.cpp47
-rw-r--r--mesalib/src/glsl/ir_validate.cpp16
-rw-r--r--mesalib/src/glsl/loop_analysis.h17
-rw-r--r--mesalib/src/glsl/opt_noop_swizzle.cpp160
-rw-r--r--mesalib/src/glsl/opt_redundant_jumps.cpp240
-rw-r--r--mesalib/src/glsl/standalone_scaffolding.cpp1
-rw-r--r--mesalib/src/glsl/strtod.h86
-rw-r--r--mesalib/src/glu/.gitignore1
-rw-r--r--mesalib/src/glu/sgi/.gitignore1
-rw-r--r--mesalib/src/mapi/glapi/.gitignore20
-rw-r--r--mesalib/src/mapi/glapi/gen/ARB_ES2_compatibility.xml116
-rw-r--r--mesalib/src/mapi/glapi/gen/ARB_draw_buffers_blend.xml76
-rw-r--r--mesalib/src/mapi/glapi/gen/ARB_draw_instanced.xml98
-rw-r--r--mesalib/src/mapi/glapi/gen/ARB_instanced_arrays.xml42
-rw-r--r--mesalib/src/mapi/glapi/gen/ARB_texture_buffer_object.xml44
-rw-r--r--mesalib/src/mapi/glapi/gen/EXT_separate_shader_objects.xml52
-rw-r--r--mesalib/src/mapi/glapi/gen/EXT_texture_integer.xml196
-rw-r--r--mesalib/src/mapi/glapi/gen/EXT_transform_feedback.xml236
-rw-r--r--mesalib/src/mapi/glapi/gen/NV_primitive_restart.xml46
-rw-r--r--mesalib/src/mapi/glapi/gen/NV_texture_barrier.xml26
-rw-r--r--mesalib/src/mapi/glapi/gen/glX_API.xml440
-rw-r--r--mesalib/src/mapi/glapi/gen/gl_SPARC_asm.py546
-rw-r--r--mesalib/src/mapi/glapi/gen/gl_procs.py430
-rw-r--r--mesalib/src/mapi/glapi/gen/next_available_offset.sh78
-rw-r--r--mesalib/src/mapi/glapi/glapi.c130
-rw-r--r--mesalib/src/mapi/glapi/glapi_dispatch.c184
-rw-r--r--mesalib/src/mapi/glapi/glapi_getproc.c1334
-rw-r--r--mesalib/src/mapi/mapi/entry.c196
-rw-r--r--mesalib/src/mapi/mapi/entry.h96
-rw-r--r--mesalib/src/mapi/mapi/mapi.c382
-rw-r--r--mesalib/src/mapi/mapi/stub.c414
-rw-r--r--mesalib/src/mapi/mapi/stub.h114
-rw-r--r--mesalib/src/mapi/mapi/table.c112
-rw-r--r--mesalib/src/mapi/mapi/table.h144
-rw-r--r--mesalib/src/mesa/.gitignore5
-rw-r--r--mesalib/src/mesa/drivers/common/driverfuncs.c20
-rw-r--r--mesalib/src/mesa/drivers/common/driverfuncs.h74
-rw-r--r--mesalib/src/mesa/drivers/common/meta.c80
-rw-r--r--mesalib/src/mesa/drivers/common/meta.h27
-rw-r--r--mesalib/src/mesa/drivers/dri/.gitignore1
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/.gitignore5
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/Makefile192
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py382
-rw-r--r--mesalib/src/mesa/drivers/dri/swrast/.gitignore1
-rw-r--r--mesalib/src/mesa/gl.pc.in26
-rw-r--r--mesalib/src/mesa/main/.gitignore11
-rw-r--r--mesalib/src/mesa/main/api_loopback.c3450
-rw-r--r--mesalib/src/mesa/main/atifragshader.c1592
-rw-r--r--mesalib/src/mesa/main/blend.h212
-rw-r--r--mesalib/src/mesa/main/bufferobj.c19
-rw-r--r--mesalib/src/mesa/main/clear.h128
-rw-r--r--mesalib/src/mesa/main/clip.c232
-rw-r--r--mesalib/src/mesa/main/clip.h94
-rw-r--r--mesalib/src/mesa/main/condrender.h90
-rw-r--r--mesalib/src/mesa/main/dd.h192
-rw-r--r--mesalib/src/mesa/main/depth.h136
-rw-r--r--mesalib/src/mesa/main/drawtex.h122
-rw-r--r--mesalib/src/mesa/main/enable.h142
-rw-r--r--mesalib/src/mesa/main/extensions.c1
-rw-r--r--mesalib/src/mesa/main/ffvertex_prog.h80
-rw-r--r--mesalib/src/mesa/main/fog.h138
-rw-r--r--mesalib/src/mesa/main/formats.c8
-rw-r--r--mesalib/src/mesa/main/hint.h118
-rw-r--r--mesalib/src/mesa/main/lines.h98
-rw-r--r--mesalib/src/mesa/main/matrix.h226
-rw-r--r--mesalib/src/mesa/main/mipmap.c8
-rw-r--r--mesalib/src/mesa/main/mtypes.h1
-rw-r--r--mesalib/src/mesa/main/multisample.c124
-rw-r--r--mesalib/src/mesa/main/multisample.h82
-rw-r--r--mesalib/src/mesa/main/pixelstore.h104
-rw-r--r--mesalib/src/mesa/main/points.c544
-rw-r--r--mesalib/src/mesa/main/points.h118
-rw-r--r--mesalib/src/mesa/main/rastpos.c1132
-rw-r--r--mesalib/src/mesa/main/remap.c452
-rw-r--r--mesalib/src/mesa/main/scissor.c200
-rw-r--r--mesalib/src/mesa/main/scissor.h94
-rw-r--r--mesalib/src/mesa/main/stencil.h162
-rw-r--r--mesalib/src/mesa/main/syncobj.c852
-rw-r--r--mesalib/src/mesa/main/texformat.h78
-rw-r--r--mesalib/src/mesa/main/texgen.c802
-rw-r--r--mesalib/src/mesa/main/teximage.c151
-rw-r--r--mesalib/src/mesa/main/texobj.c28
-rw-r--r--mesalib/src/mesa/main/texstore.c259
-rw-r--r--mesalib/src/mesa/main/texstore.h113
-rw-r--r--mesalib/src/mesa/main/texturebarrier.c108
-rw-r--r--mesalib/src/mesa/main/texturebarrier.h88
-rw-r--r--mesalib/src/mesa/main/transformfeedback.c21
-rw-r--r--mesalib/src/mesa/main/version.c1
-rw-r--r--mesalib/src/mesa/main/viewport.c370
-rw-r--r--mesalib/src/mesa/main/viewport.h116
-rw-r--r--mesalib/src/mesa/math/m_debug_clip.c818
-rw-r--r--mesalib/src/mesa/math/m_debug_norm.c766
-rw-r--r--mesalib/src/mesa/math/m_debug_xform.c678
-rw-r--r--mesalib/src/mesa/math/m_matrix.c3282
-rw-r--r--mesalib/src/mesa/math/m_vector.c368
-rw-r--r--mesalib/src/mesa/program/arbprogparse.h90
-rw-r--r--mesalib/src/mesa/program/ir_to_mesa.cpp5
-rw-r--r--mesalib/src/mesa/program/nvfragparse.h94
-rw-r--r--mesalib/src/mesa/program/nvvertparse.h98
-rw-r--r--mesalib/src/mesa/program/prog_cache.c502
-rw-r--r--mesalib/src/mesa/program/prog_cache.h136
-rw-r--r--mesalib/src/mesa/program/sampler.h58
-rw-r--r--mesalib/src/mesa/program/symbol_table.h124
-rw-r--r--mesalib/src/mesa/state_tracker/Makefile2
-rw-r--r--mesalib/src/mesa/state_tracker/st_atom.h146
-rw-r--r--mesalib/src/mesa/state_tracker/st_atom_constbuf.h82
-rw-r--r--mesalib/src/mesa/state_tracker/st_atom_msaa.c166
-rw-r--r--mesalib/src/mesa/state_tracker/st_atom_shader.h82
-rw-r--r--mesalib/src/mesa/state_tracker/st_atom_viewport.c188
-rw-r--r--mesalib/src/mesa/state_tracker/st_cache.h138
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_bitmap.h192
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_blit.h118
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h136
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_condrender.h74
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_drawpixels.h140
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_drawtex.h82
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_eglimage.h102
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_feedback.c618
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_feedback.h104
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_flush.h102
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_program.h76
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_queryobj.h140
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_rasterpos.h100
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_strings.c146
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_strings.h80
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_syncobj.c244
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_texture.c135
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c120
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_texturebarrier.h74
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_viewport.h72
-rw-r--r--mesalib/src/mesa/state_tracker/st_debug.h144
-rw-r--r--mesalib/src/mesa/state_tracker/st_extensions.c4
-rw-r--r--mesalib/src/mesa/state_tracker/st_extensions.h80
-rw-r--r--mesalib/src/mesa/state_tracker/st_gen_mipmap.h104
-rw-r--r--mesalib/src/mesa/state_tracker/st_gl_api.h14
-rw-r--r--mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp6
-rw-r--r--mesalib/src/mesa/state_tracker/st_manager.h104
-rw-r--r--mesalib/src/mesa/swrast/NOTES108
-rw-r--r--mesalib/src/mesa/swrast/s_aaline.h76
-rw-r--r--mesalib/src/mesa/swrast/s_aatriangle.h76
-rw-r--r--mesalib/src/mesa/swrast/s_alpha.c320
-rw-r--r--mesalib/src/mesa/swrast/s_alpha.h78
-rw-r--r--mesalib/src/mesa/swrast/s_atifragshader.c1208
-rw-r--r--mesalib/src/mesa/swrast/s_atifragshader.h76
-rw-r--r--mesalib/src/mesa/swrast/s_blend.h90
-rw-r--r--mesalib/src/mesa/swrast/s_feedback.c276
-rw-r--r--mesalib/src/mesa/swrast/s_feedback.h100
-rw-r--r--mesalib/src/mesa/swrast/s_fog.h84
-rw-r--r--mesalib/src/mesa/swrast/s_lines.h82
-rw-r--r--mesalib/src/mesa/swrast/s_logic.h80
-rw-r--r--mesalib/src/mesa/swrast/s_masking.h82
-rw-r--r--mesalib/src/mesa/swrast/s_points.h78
-rw-r--r--mesalib/src/mesa/swrast/s_texcombine.h74
-rw-r--r--mesalib/src/mesa/swrast/s_triangle.h100
-rw-r--r--mesalib/src/mesa/swrast_setup/NOTES130
-rw-r--r--mesalib/src/mesa/swrast_setup/ss_triangle.c530
-rw-r--r--mesalib/src/mesa/swrast_setup/ss_triangle.h76
-rw-r--r--mesalib/src/mesa/swrast_setup/ss_tritmp.h496
-rw-r--r--mesalib/src/mesa/swrast_setup/ss_vb.h74
-rw-r--r--mesalib/src/mesa/swrast_setup/swrast_setup.h122
-rw-r--r--mesalib/src/mesa/tnl/t_pipeline.h146
-rw-r--r--mesalib/src/mesa/tnl/t_vb_fog.c552
-rw-r--r--mesalib/src/mesa/tnl/t_vb_normals.c374
-rw-r--r--mesalib/src/mesa/tnl/t_vb_points.c228
-rw-r--r--mesalib/src/mesa/tnl/t_vb_render.c696
-rw-r--r--mesalib/src/mesa/tnl/t_vb_rendertmp.h972
-rw-r--r--mesalib/src/mesa/tnl/t_vb_texgen.c1218
-rw-r--r--mesalib/src/mesa/tnl/t_vb_texmat.c256
-rw-r--r--mesalib/src/mesa/tnl/t_vb_vertex.c566
-rw-r--r--mesalib/src/mesa/tnl/t_vertex.h368
-rw-r--r--mesalib/src/mesa/tnl/t_vp_build.c120
-rw-r--r--mesalib/src/mesa/tnl/t_vp_build.h84
-rw-r--r--mesalib/src/mesa/vbo/vbo_exec_eval.c526
-rw-r--r--mesalib/src/mesa/vbo/vbo_save_loopback.c392
-rw-r--r--mesalib/src/mesa/vbo/vbo_split.h144
-rw-r--r--mesalib/src/mesa/x86/3dnow.c182
-rw-r--r--mesalib/src/mesa/x86/3dnow.h72
-rw-r--r--mesalib/src/mesa/x86/3dnow_normal.S1704
-rw-r--r--mesalib/src/mesa/x86/3dnow_xform1.S874
-rw-r--r--mesalib/src/mesa/x86/3dnow_xform2.S954
-rw-r--r--mesalib/src/mesa/x86/3dnow_xform3.S1122
-rw-r--r--mesalib/src/mesa/x86/3dnow_xform4.S1140
-rw-r--r--mesalib/src/mesa/x86/Makefile92
-rw-r--r--mesalib/src/mesa/x86/assyntax.h3494
-rw-r--r--mesalib/src/mesa/x86/clip_args.h118
-rw-r--r--mesalib/src/mesa/x86/common_x86.c672
-rw-r--r--mesalib/src/mesa/x86/common_x86_asm.S440
-rw-r--r--mesalib/src/mesa/x86/common_x86_asm.h106
-rw-r--r--mesalib/src/mesa/x86/common_x86_features.h134
-rw-r--r--mesalib/src/mesa/x86/mmx.h118
-rw-r--r--mesalib/src/mesa/x86/mmx_blend.S804
-rw-r--r--mesalib/src/mesa/x86/mmx_blendtmp.h228
-rw-r--r--mesalib/src/mesa/x86/norm_args.h114
-rw-r--r--mesalib/src/mesa/x86/read_rgba_span_x86.S1372
-rw-r--r--mesalib/src/mesa/x86/read_rgba_span_x86.h112
-rw-r--r--mesalib/src/mesa/x86/rtasm/x86sse.c2406
-rw-r--r--mesalib/src/mesa/x86/rtasm/x86sse.h512
-rw-r--r--mesalib/src/mesa/x86/sse.c246
-rw-r--r--mesalib/src/mesa/x86/sse.h72
-rw-r--r--mesalib/src/mesa/x86/sse_normal.S522
-rw-r--r--mesalib/src/mesa/x86/sse_xform1.S892
-rw-r--r--mesalib/src/mesa/x86/sse_xform2.S932
-rw-r--r--mesalib/src/mesa/x86/sse_xform3.S1024
-rw-r--r--mesalib/src/mesa/x86/sse_xform4.S470
-rw-r--r--mesalib/src/mesa/x86/x86_cliptest.S814
-rw-r--r--mesalib/src/mesa/x86/x86_xform.c252
-rw-r--r--mesalib/src/mesa/x86/x86_xform.h212
-rw-r--r--mesalib/src/mesa/x86/x86_xform2.S1148
-rw-r--r--mesalib/src/mesa/x86/x86_xform3.S1288
-rw-r--r--mesalib/src/mesa/x86/x86_xform4.S1354
-rw-r--r--mesalib/src/mesa/x86/xform_args.h102
-rw-r--r--mkfontscale/.gitignore79
-rw-r--r--pixman/.gitignore81
-rw-r--r--pixman/COPYING84
-rw-r--r--pixman/INSTALL468
-rw-r--r--pixman/TODO542
-rw-r--r--pixman/pixman-1-uninstalled.pc.in10
-rw-r--r--pixman/pixman-1.pc.in22
-rw-r--r--pixman/pixman/make-combine.pl172
-rw-r--r--pixman/pixman/pixman-access-accessors.c6
-rw-r--r--pixman/pixman/pixman-arm-neon-asm.h2354
-rw-r--r--pixman/pixman/pixman-edge-accessors.c8
-rw-r--r--pixman/pixman/pixman-edge-imp.h364
-rw-r--r--pixman/pixman/pixman-edge.c768
-rw-r--r--pixman/pixman/pixman-matrix.c1532
-rw-r--r--pixman/pixman/pixman-timer.c132
-rw-r--r--pixman/pixman/pixman-version.h.in100
-rw-r--r--pixman/test/fuzzer-find-diff.pl136
-rw-r--r--pixman/test/region-test.c246
-rw-r--r--sync.bat21
-rw-r--r--synchronise.py231
-rw-r--r--xkbcomp/.gitignore80
-rw-r--r--xkbcomp/COPYING180
-rw-r--r--xkbcomp/README40
-rw-r--r--xkbcomp/action.c2936
-rw-r--r--xkbcomp/action.h172
-rw-r--r--xkbcomp/alias.h112
-rw-r--r--xkbcomp/compat.h14
-rw-r--r--xkbcomp/expr.c2130
-rw-r--r--xkbcomp/expr.h344
-rw-r--r--xkbcomp/indicators.c1150
-rw-r--r--xkbcomp/indicators.h176
-rw-r--r--xkbcomp/keycodes.h80
-rw-r--r--xkbcomp/keymap.c366
-rw-r--r--xkbcomp/keytypes.c2586
-rw-r--r--xkbcomp/listing.c1010
-rw-r--r--xkbcomp/misc.c1162
-rw-r--r--xkbcomp/misc.h222
-rw-r--r--xkbcomp/tokens.h208
-rw-r--r--xkbcomp/utils.c868
-rw-r--r--xkbcomp/vmod.c542
-rw-r--r--xkbcomp/vmod.h156
-rw-r--r--xkbcomp/xkbpath.c842
-rw-r--r--xkbcomp/xkbpath.h130
-rw-r--r--xorg-server/COPYING3644
-rw-r--r--xorg-server/README76
-rw-r--r--xorg-server/Xext/panoramiX.c4
-rw-r--r--xorg-server/Xext/shm.c4
-rw-r--r--xorg-server/Xext/xf86bigfontsrv.h68
-rw-r--r--xorg-server/Xext/xvdisp.h4
-rw-r--r--xorg-server/Xext/xvdix.h2
-rw-r--r--xorg-server/Xext/xvmain.c8
-rw-r--r--xorg-server/Xext/xvmc.c4
-rw-r--r--xorg-server/Xi/Makefile.am216
-rw-r--r--xorg-server/autogen.sh24
-rw-r--r--xorg-server/composite/Makefile.am30
-rw-r--r--xorg-server/composite/compalloc.c5
-rw-r--r--xorg-server/composite/compinit.c4
-rw-r--r--xorg-server/config/10-evdev.conf80
-rw-r--r--xorg-server/config/dbus-api80
-rw-r--r--xorg-server/config/xorg-server.conf26
-rw-r--r--xorg-server/damageext/Makefile.am16
-rw-r--r--xorg-server/dbe/Makefile.am26
-rw-r--r--xorg-server/dix/.gitignore3
-rw-r--r--xorg-server/dix/BuiltInAtoms658
-rw-r--r--xorg-server/dix/buildatoms86
-rw-r--r--xorg-server/dix/dispatch.c5
-rw-r--r--xorg-server/dix/dixutils.c10
-rw-r--r--xorg-server/dix/gc.c110
-rw-r--r--xorg-server/dix/main.c6
-rw-r--r--xorg-server/dix/pixmap.c10
-rw-r--r--xorg-server/dix/protocol.txt2206
-rw-r--r--xorg-server/doc/.gitignore4
-rw-r--r--xorg-server/doc/Xserver-spec.xml35
-rw-r--r--xorg-server/doc/c-extensions122
-rw-r--r--xorg-server/doc/dtrace/.gitignore5
-rw-r--r--xorg-server/doc/smartsched408
-rw-r--r--xorg-server/exa/Makefile.am60
-rw-r--r--xorg-server/exa/exa.c16
-rw-r--r--xorg-server/exa/exa.h2
-rw-r--r--xorg-server/exa/exa_offscreen.c4
-rw-r--r--xorg-server/exa/exa_priv.h2
-rw-r--r--xorg-server/fb/Makefile.am108
-rw-r--r--xorg-server/fb/fb.h2
-rw-r--r--xorg-server/fb/fboverlay.c2
-rw-r--r--xorg-server/fb/fboverlay.h2
-rw-r--r--xorg-server/fb/fbscreen.c2
-rw-r--r--xorg-server/glx/glxdri.c14
-rw-r--r--xorg-server/glx/glxdri2.c14
-rw-r--r--xorg-server/glx/glxscreens.c4
-rw-r--r--xorg-server/glx/glxscreens.h2
-rw-r--r--xorg-server/hw/Makefile.am82
-rw-r--r--xorg-server/hw/dmx/.gitignore2
-rw-r--r--xorg-server/hw/dmx/config/.gitignore7
-rw-r--r--xorg-server/hw/dmx/config/TODO14
-rw-r--r--xorg-server/hw/dmx/config/dmxcompat.h88
-rw-r--r--xorg-server/hw/dmx/config/parser.y452
-rw-r--r--xorg-server/hw/dmx/config/test-a.in2
-rw-r--r--xorg-server/hw/dmx/config/test-a.out4
-rw-r--r--xorg-server/hw/dmx/config/test-b.in2
-rw-r--r--xorg-server/hw/dmx/config/test-b.out2
-rw-r--r--xorg-server/hw/dmx/config/test-c.in2
-rw-r--r--xorg-server/hw/dmx/config/test-c.out4
-rw-r--r--xorg-server/hw/dmx/config/test-d.in2
-rw-r--r--xorg-server/hw/dmx/config/test-d.out4
-rw-r--r--xorg-server/hw/dmx/config/test-e.in2
-rw-r--r--xorg-server/hw/dmx/config/test-e.out4
-rw-r--r--xorg-server/hw/dmx/config/test-f.in4
-rw-r--r--xorg-server/hw/dmx/config/test-g.in8
-rw-r--r--xorg-server/hw/dmx/config/test-g.out8
-rw-r--r--xorg-server/hw/dmx/config/test-h.in14
-rw-r--r--xorg-server/hw/dmx/config/test-h.out14
-rw-r--r--xorg-server/hw/dmx/config/test-i.in6
-rw-r--r--xorg-server/hw/dmx/config/test-i.out6
-rw-r--r--xorg-server/hw/dmx/config/test-j.in26
-rw-r--r--xorg-server/hw/dmx/config/test-j.out22
-rw-r--r--xorg-server/hw/dmx/config/test-k.in6
-rw-r--r--xorg-server/hw/dmx/config/test-k.out6
-rw-r--r--xorg-server/hw/dmx/config/test-l.in24
-rw-r--r--xorg-server/hw/dmx/config/test-l.out24
-rw-r--r--xorg-server/hw/dmx/dmxextension.c2
-rw-r--r--xorg-server/hw/dmx/dmxscrinit.c26
-rw-r--r--xorg-server/hw/dmx/dmxscrinit.h4
-rw-r--r--xorg-server/hw/dmx/doc/.gitignore6
-rw-r--r--xorg-server/hw/dmx/doc/DMXSpec-v1.txt916
-rw-r--r--xorg-server/hw/dmx/doc/DMXSpec.txt1750
-rw-r--r--xorg-server/hw/dmx/doxygen/.gitignore2
-rw-r--r--xorg-server/hw/dmx/examples/.gitignore17
-rw-r--r--xorg-server/hw/dmx/input/Makefile.am134
-rw-r--r--xorg-server/hw/dmx/input/dmxconsole.c4
-rw-r--r--xorg-server/hw/dmx/input/dmxdummy.h86
-rw-r--r--xorg-server/hw/kdrive/Makefile.am60
-rw-r--r--xorg-server/hw/kdrive/Xkdrive.man114
-rw-r--r--xorg-server/hw/kdrive/ephyr/.gitignore1
-rw-r--r--xorg-server/hw/kdrive/ephyr/README146
-rw-r--r--xorg-server/hw/kdrive/fake/.gitignore2
-rw-r--r--xorg-server/hw/kdrive/fake/Makefile.am60
-rw-r--r--xorg-server/hw/kdrive/fbdev/.gitignore2
-rw-r--r--xorg-server/hw/kdrive/fbdev/Makefile.am58
-rw-r--r--xorg-server/hw/kdrive/fbdev/Xfbdev.man56
-rw-r--r--xorg-server/hw/kdrive/linux/Makefile.am54
-rw-r--r--xorg-server/hw/kdrive/src/Makefile.am56
-rw-r--r--xorg-server/hw/kdrive/src/kdrive.c6
-rw-r--r--xorg-server/hw/kdrive/src/kdrive.h8
-rw-r--r--xorg-server/hw/kdrive/src/kinput.c4
-rw-r--r--xorg-server/hw/kdrive/src/kxv.c4
-rw-r--r--xorg-server/hw/vfb/.gitignore1
-rw-r--r--xorg-server/hw/vfb/InitOutput.c10
-rw-r--r--xorg-server/hw/xfree86/.gitignore4
-rw-r--r--xorg-server/hw/xfree86/common/.gitignore3
-rw-r--r--xorg-server/hw/xfree86/common/extramodes54
-rw-r--r--xorg-server/hw/xfree86/common/modeline2c.awk186
-rw-r--r--xorg-server/hw/xfree86/common/vesamodes222
-rw-r--r--xorg-server/hw/xfree86/common/xf86.h10
-rw-r--r--xorg-server/hw/xfree86/common/xf86Build.h.in4
-rw-r--r--xorg-server/hw/xfree86/common/xf86Bus.c7
-rw-r--r--xorg-server/hw/xfree86/common/xf86Cursor.c13
-rw-r--r--xorg-server/hw/xfree86/common/xf86DGA.c20
-rw-r--r--xorg-server/hw/xfree86/common/xf86DPMS.c14
-rw-r--r--xorg-server/hw/xfree86/common/xf86Events.c12
-rw-r--r--xorg-server/hw/xfree86/common/xf86Helper.c23
-rw-r--r--xorg-server/hw/xfree86/common/xf86Init.c4
-rw-r--r--xorg-server/hw/xfree86/common/xf86Mode.c4
-rw-r--r--xorg-server/hw/xfree86/common/xf86Module.h2
-rw-r--r--xorg-server/hw/xfree86/common/xf86PM.c14
-rw-r--r--xorg-server/hw/xfree86/common/xf86Priv.h2
-rw-r--r--xorg-server/hw/xfree86/common/xf86RandR.c8
-rw-r--r--xorg-server/hw/xfree86/common/xf86VGAarbiter.c54
-rw-r--r--xorg-server/hw/xfree86/common/xf86VGAarbiterPriv.h26
-rw-r--r--xorg-server/hw/xfree86/common/xf86VidMode.c8
-rw-r--r--xorg-server/hw/xfree86/common/xf86cmap.c50
-rw-r--r--xorg-server/hw/xfree86/common/xf86fbman.c4
-rw-r--r--xorg-server/hw/xfree86/common/xf86sbusBus.c4
-rw-r--r--xorg-server/hw/xfree86/common/xf86str.h24
-rw-r--r--xorg-server/hw/xfree86/common/xf86xv.c35
-rw-r--r--xorg-server/hw/xfree86/common/xf86xvmc.c4
-rw-r--r--xorg-server/hw/xfree86/common/xf86xvpriv.h6
-rw-r--r--xorg-server/hw/xfree86/ddc/DDC.HOWTO194
-rw-r--r--xorg-server/hw/xfree86/ddc/Makefile.am22
-rw-r--r--xorg-server/hw/xfree86/ddc/ddc.c25
-rw-r--r--xorg-server/hw/xfree86/ddc/xf86DDC.h8
-rw-r--r--xorg-server/hw/xfree86/doc/.gitignore4
-rw-r--r--xorg-server/hw/xfree86/doc/README.DRIcomp1108
-rw-r--r--xorg-server/hw/xfree86/doc/README.modes948
-rw-r--r--xorg-server/hw/xfree86/doc/Registry818
-rw-r--r--xorg-server/hw/xfree86/doc/ddxDesign.xml44
-rw-r--r--xorg-server/hw/xfree86/dri/dri.c19
-rw-r--r--xorg-server/hw/xfree86/dri/dri.h10
-rw-r--r--xorg-server/hw/xfree86/exa/examodule.c16
-rw-r--r--xorg-server/hw/xfree86/fbdevhw/README32
-rw-r--r--xorg-server/hw/xfree86/fbdevhw/fbdevhw.c23
-rw-r--r--xorg-server/hw/xfree86/fbdevhw/fbdevhw.h12
-rw-r--r--xorg-server/hw/xfree86/fbdevhw/fbdevhwstub.c10
-rw-r--r--xorg-server/hw/xfree86/i2c/i2c_def.h12
-rw-r--r--xorg-server/hw/xfree86/i2c/xf86i2c.c1
-rw-r--r--xorg-server/hw/xfree86/i2c/xf86i2c.h2
-rw-r--r--xorg-server/hw/xfree86/int10/INT10.HOWTO688
-rw-r--r--xorg-server/hw/xfree86/int10/generic.c13
-rw-r--r--xorg-server/hw/xfree86/int10/helper_exec.c18
-rw-r--r--xorg-server/hw/xfree86/int10/helper_mem.c8
-rw-r--r--xorg-server/hw/xfree86/int10/x86emu.c24
-rw-r--r--xorg-server/hw/xfree86/int10/xf86int10.c42
-rw-r--r--xorg-server/hw/xfree86/int10/xf86int10.h4
-rw-r--r--xorg-server/hw/xfree86/int10/xf86x86emu.h108
-rw-r--r--xorg-server/hw/xfree86/modes/Makefile.am70
-rw-r--r--xorg-server/hw/xfree86/modes/xf86Crtc.c6
-rw-r--r--xorg-server/hw/xfree86/modes/xf86DiDGA.c2
-rw-r--r--xorg-server/hw/xfree86/modes/xf86RandR12.c23
-rw-r--r--xorg-server/hw/xfree86/modes/xf86Rotate.c7
-rw-r--r--xorg-server/hw/xfree86/os-support/bsd/Makefile.am152
-rw-r--r--xorg-server/hw/xfree86/os-support/hurd/Makefile.am30
-rw-r--r--xorg-server/hw/xfree86/os-support/hurd/hurd_bell.c74
-rw-r--r--xorg-server/hw/xfree86/os-support/int10Defines.h178
-rw-r--r--xorg-server/hw/xfree86/os-support/linux/int10/linux.c29
-rw-r--r--xorg-server/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c16
-rw-r--r--xorg-server/hw/xfree86/os-support/misc/Makefile.am24
-rw-r--r--xorg-server/hw/xfree86/os-support/solaris/Makefile.am74
-rw-r--r--xorg-server/hw/xfree86/os-support/solaris/apSolaris.shar1612
-rw-r--r--xorg-server/hw/xfree86/os-support/solaris/solaris-amd64.S134
-rw-r--r--xorg-server/hw/xfree86/os-support/solaris/solaris-ia32.S134
-rw-r--r--xorg-server/hw/xfree86/os-support/solaris/solaris-sparcv8plus.S276
-rw-r--r--xorg-server/hw/xfree86/os-support/solaris/sun_inout.s248
-rw-r--r--xorg-server/hw/xfree86/ramdac/.gitignore2
-rw-r--r--xorg-server/hw/xfree86/ramdac/CURSOR.NOTES382
-rw-r--r--xorg-server/hw/xfree86/ramdac/Makefile.am38
-rw-r--r--xorg-server/hw/xfree86/ramdac/xf86Cursor.c22
-rw-r--r--xorg-server/hw/xfree86/ramdac/xf86CursorPriv.h2
-rw-r--r--xorg-server/hw/xfree86/shadowfb/shadow.c26
-rw-r--r--xorg-server/hw/xfree86/utils/cvt/.gitignore1
-rw-r--r--xorg-server/hw/xfree86/utils/gtf/.gitignore1
-rw-r--r--xorg-server/hw/xfree86/vbe/vbe.c24
-rw-r--r--xorg-server/hw/xfree86/vbe/vbe.h2
-rw-r--r--xorg-server/hw/xfree86/vgahw/Makefile.am18
-rw-r--r--xorg-server/hw/xfree86/x86emu/Makefile.am58
-rw-r--r--xorg-server/hw/xfree86/xaa/.gitignore4
-rw-r--r--xorg-server/hw/xfree86/xaa/XAA.HOWTO2854
-rw-r--r--xorg-server/hw/xfree86/xaa/xaaInit.c40
-rw-r--r--xorg-server/hw/xfree86/xaa/xaalocal.h8
-rw-r--r--xorg-server/hw/xnest/.gitignore1
-rw-r--r--xorg-server/hw/xnest/Screen.c6
-rw-r--r--xorg-server/hw/xnest/Screen.h4
-rw-r--r--xorg-server/hw/xnest/icon28
-rw-r--r--xorg-server/hw/xnest/screensaver1372
-rw-r--r--xorg-server/hw/xquartz/bundle/.gitignore1
-rw-r--r--xorg-server/hw/xquartz/bundle/X11.sh30
-rw-r--r--xorg-server/hw/xquartz/bundle/Xquartz.plist54
-rw-r--r--xorg-server/hw/xquartz/darwin.c6
-rw-r--r--xorg-server/hw/xquartz/mach-startup/.gitignore8
-rw-r--r--xorg-server/hw/xquartz/mach-startup/mach_startup.defs100
-rw-r--r--xorg-server/hw/xquartz/pbproxy/.gitignore1
-rw-r--r--xorg-server/hw/xquartz/xpr/Makefile.am64
-rw-r--r--xorg-server/hw/xwin/.gitignore3
-rw-r--r--xorg-server/hw/xwin/README282
-rw-r--r--xorg-server/hw/xwin/glx/.gitignore3
-rw-r--r--xorg-server/hw/xwin/glx/winpriv.h26
-rw-r--r--xorg-server/hw/xwin/system.XWinrc256
-rw-r--r--xorg-server/hw/xwin/win.h11
-rw-r--r--xorg-server/hw/xwin/winblock.c6
-rw-r--r--xorg-server/hw/xwin/winnativegdi.c4
-rw-r--r--xorg-server/hw/xwin/winpfbdd.c6
-rw-r--r--xorg-server/hw/xwin/winprefsyacc.y920
-rw-r--r--xorg-server/hw/xwin/winscrinit.c14
-rw-r--r--xorg-server/hw/xwin/winshaddd.c6
-rw-r--r--xorg-server/hw/xwin/winshadddnl.c6
-rw-r--r--xorg-server/hw/xwin/winshadgdi.c6
-rw-r--r--xorg-server/hw/xwin/winwakeup.c4
-rw-r--r--xorg-server/include/.gitignore5
-rw-r--r--xorg-server/include/dix-config-apple-verbatim.h16
-rw-r--r--xorg-server/include/kdrive-config.h.in80
-rw-r--r--xorg-server/include/pixmap.h4
-rw-r--r--xorg-server/include/screenint.h1
-rw-r--r--xorg-server/include/scrnintstr.h12
-rw-r--r--xorg-server/include/version-config.h.in32
-rw-r--r--xorg-server/include/xsha1.h38
-rw-r--r--xorg-server/m4/ac_define_dir.m498
-rw-r--r--xorg-server/mi/midispcur.c6
-rw-r--r--xorg-server/mi/mioverlay.c6
-rw-r--r--xorg-server/mi/mipointer.c6
-rw-r--r--xorg-server/mi/miscrinit.c4
-rw-r--r--xorg-server/mi/misprite.c13
-rw-r--r--xorg-server/miext/cw/Makefile.am22
-rw-r--r--xorg-server/miext/cw/cw.c6
-rw-r--r--xorg-server/miext/damage/Makefile.am28
-rw-r--r--xorg-server/miext/damage/damage.c4
-rw-r--r--xorg-server/miext/rootless/Makefile.am32
-rw-r--r--xorg-server/miext/rootless/rootlessScreen.c4
-rw-r--r--xorg-server/miext/shadow/Makefile.am64
-rw-r--r--xorg-server/miext/shadow/shadow.c4
-rw-r--r--xorg-server/miext/shadow/shrot16pack.c60
-rw-r--r--xorg-server/miext/shadow/shrot16pack_180.c62
-rw-r--r--xorg-server/miext/shadow/shrot16pack_270.c62
-rw-r--r--xorg-server/miext/shadow/shrot16pack_270YX.c62
-rw-r--r--xorg-server/miext/shadow/shrot16pack_90.c62
-rw-r--r--xorg-server/miext/shadow/shrot16pack_90YX.c62
-rw-r--r--xorg-server/miext/shadow/shrot32pack.c60
-rw-r--r--xorg-server/miext/shadow/shrot32pack_180.c62
-rw-r--r--xorg-server/miext/shadow/shrot32pack_270.c62
-rw-r--r--xorg-server/miext/shadow/shrot32pack_90.c62
-rw-r--r--xorg-server/miext/shadow/shrot8pack.c60
-rw-r--r--xorg-server/miext/shadow/shrot8pack_180.c62
-rw-r--r--xorg-server/miext/shadow/shrot8pack_270.c62
-rw-r--r--xorg-server/miext/shadow/shrot8pack_90.c62
-rw-r--r--xorg-server/miext/sync/misync.c4
-rw-r--r--xorg-server/os/.gitignore1
-rw-r--r--xorg-server/randr/randr.c4
-rw-r--r--xorg-server/randr/randrstr.h2
-rw-r--r--xorg-server/record/Makefile.am14
-rw-r--r--xorg-server/render/animcur.c10
-rw-r--r--xorg-server/render/picture.c4
-rw-r--r--xorg-server/render/picturestr.h2
-rw-r--r--xorg-server/test/.gitignore9
-rw-r--r--xorg-server/test/README72
-rw-r--r--xorg-server/test/xi2/.gitignore11
-rw-r--r--xorg-server/xfixes/Makefile.am32
-rw-r--r--xorg-server/xfixes/cursor.c4
-rw-r--r--xorg-server/xkb/Makefile.am86
-rw-r--r--xorg-server/xkb/README.compiled26
-rw-r--r--xorg-server/xkb/XKM_file_format.txt1368
-rw-r--r--xorg-server/xkb/xkb.h64
-rw-r--r--xorg-server/xkeyboard-config/.gitignore102
-rw-r--r--xorg-server/xkeyboard-config/AUTHORS16
-rw-r--r--xorg-server/xkeyboard-config/BUGS140
-rw-r--r--xorg-server/xkeyboard-config/COPYING380
-rw-r--r--xorg-server/xkeyboard-config/CREDITS6
-rw-r--r--xorg-server/xkeyboard-config/ChangeLog2
-rw-r--r--xorg-server/xkeyboard-config/ChangeLog.old7782
-rw-r--r--xorg-server/xkeyboard-config/README56
-rw-r--r--xorg-server/xkeyboard-config/TODO12
-rw-r--r--xorg-server/xkeyboard-config/compat/README66
-rw-r--r--xorg-server/xkeyboard-config/compat/accessx104
-rw-r--r--xorg-server/xkeyboard-config/compat/basic96
-rw-r--r--xorg-server/xkeyboard-config/compat/caps24
-rw-r--r--xorg-server/xkeyboard-config/compat/complete20
-rw-r--r--xorg-server/xkeyboard-config/compat/japan90
-rw-r--r--xorg-server/xkeyboard-config/compat/ledcaps46
-rw-r--r--xorg-server/xkeyboard-config/compat/lednum46
-rw-r--r--xorg-server/xkeyboard-config/compat/ledscroll46
-rw-r--r--xorg-server/xkeyboard-config/compat/level5102
-rw-r--r--xorg-server/xkeyboard-config/compat/misc244
-rw-r--r--xorg-server/xkeyboard-config/compat/mousekeys404
-rw-r--r--xorg-server/xkeyboard-config/compat/olpc102
-rw-r--r--xorg-server/xkeyboard-config/compat/pc34
-rw-r--r--xorg-server/xkeyboard-config/compat/pc98110
-rw-r--r--xorg-server/xkeyboard-config/compat/xtest114
-rw-r--r--xorg-server/xkeyboard-config/docs/HOWTO.testing44
-rw-r--r--xorg-server/xkeyboard-config/docs/HOWTO.transition38
-rw-r--r--xorg-server/xkeyboard-config/docs/Makefile.am2
-rw-r--r--xorg-server/xkeyboard-config/docs/README.config390
-rw-r--r--xorg-server/xkeyboard-config/docs/README.enhancing1040
-rw-r--r--xorg-server/xkeyboard-config/docs/README.symbols102
-rw-r--r--xorg-server/xkeyboard-config/docs/iso15924.csv210
-rw-r--r--xorg-server/xkeyboard-config/docs/iso3166-3.csv492
-rw-r--r--xorg-server/xkeyboard-config/docs/iso3166.csv480
-rw-r--r--xorg-server/xkeyboard-config/docs/iso639.csv1002
-rw-r--r--xorg-server/xkeyboard-config/geometry/README12
-rw-r--r--xorg-server/xkeyboard-config/geometry/amiga528
-rw-r--r--xorg-server/xkeyboard-config/geometry/ataritt502
-rw-r--r--xorg-server/xkeyboard-config/geometry/chicony378
-rw-r--r--xorg-server/xkeyboard-config/geometry/dell1288
-rw-r--r--xorg-server/xkeyboard-config/geometry/digital_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/geometry/digital_vndr/lk1456
-rw-r--r--xorg-server/xkeyboard-config/geometry/digital_vndr/pc698
-rw-r--r--xorg-server/xkeyboard-config/geometry/digital_vndr/unix454
-rw-r--r--xorg-server/xkeyboard-config/geometry/everex340
-rw-r--r--xorg-server/xkeyboard-config/geometry/fujitsu628
-rw-r--r--xorg-server/xkeyboard-config/geometry/hhk532
-rw-r--r--xorg-server/xkeyboard-config/geometry/hp1394
-rw-r--r--xorg-server/xkeyboard-config/geometry/keytronic504
-rw-r--r--xorg-server/xkeyboard-config/geometry/kinesis378
-rw-r--r--xorg-server/xkeyboard-config/geometry/macintosh2892
-rw-r--r--xorg-server/xkeyboard-config/geometry/microsoft1064
-rw-r--r--xorg-server/xkeyboard-config/geometry/nec314
-rw-r--r--xorg-server/xkeyboard-config/geometry/nokia106
-rw-r--r--xorg-server/xkeyboard-config/geometry/northgate336
-rw-r--r--xorg-server/xkeyboard-config/geometry/pc3136
-rw-r--r--xorg-server/xkeyboard-config/geometry/sanwa300
-rw-r--r--xorg-server/xkeyboard-config/geometry/sgi_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/geometry/sgi_vndr/O21228
-rw-r--r--xorg-server/xkeyboard-config/geometry/sgi_vndr/indigo820
-rw-r--r--xorg-server/xkeyboard-config/geometry/sgi_vndr/indy1196
-rw-r--r--xorg-server/xkeyboard-config/geometry/sony358
-rw-r--r--xorg-server/xkeyboard-config/geometry/sun6092
-rw-r--r--xorg-server/xkeyboard-config/geometry/thinkpad940
-rw-r--r--xorg-server/xkeyboard-config/geometry/typematrix1490
-rw-r--r--xorg-server/xkeyboard-config/geometry/winbook286
-rw-r--r--xorg-server/xkeyboard-config/keycodes/README12
-rw-r--r--xorg-server/xkeyboard-config/keycodes/aliases198
-rw-r--r--xorg-server/xkeyboard-config/keycodes/amiga450
-rw-r--r--xorg-server/xkeyboard-config/keycodes/ataritt234
-rw-r--r--xorg-server/xkeyboard-config/keycodes/digital_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/keycodes/digital_vndr/lk540
-rw-r--r--xorg-server/xkeyboard-config/keycodes/digital_vndr/pc554
-rw-r--r--xorg-server/xkeyboard-config/keycodes/evdev628
-rw-r--r--xorg-server/xkeyboard-config/keycodes/fujitsu372
-rw-r--r--xorg-server/xkeyboard-config/keycodes/hp540
-rw-r--r--xorg-server/xkeyboard-config/keycodes/ibm300
-rw-r--r--xorg-server/xkeyboard-config/keycodes/macintosh416
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sgi_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sgi_vndr/indigo278
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sgi_vndr/indy404
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sgi_vndr/iris20
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sony282
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sun1900
-rw-r--r--xorg-server/xkeyboard-config/keycodes/xfree98304
-rw-r--r--xorg-server/xkeyboard-config/po/ChangeLog528
-rw-r--r--xorg-server/xkeyboard-config/po/Makevars82
-rw-r--r--xorg-server/xkeyboard-config/po/POTFILES.in4
-rw-r--r--xorg-server/xkeyboard-config/po/POTFILES.skip4
-rw-r--r--xorg-server/xkeyboard-config/po/af.po2928
-rw-r--r--xorg-server/xkeyboard-config/po/az.po2930
-rw-r--r--xorg-server/xkeyboard-config/po/en_GB.po3734
-rw-r--r--xorg-server/xkeyboard-config/po/ka.po4548
-rw-r--r--xorg-server/xkeyboard-config/po/ky.po6034
-rw-r--r--xorg-server/xkeyboard-config/po/nb.po5378
-rw-r--r--xorg-server/xkeyboard-config/po/rw.po3654
-rw-r--r--xorg-server/xkeyboard-config/po/sk.po5562
-rw-r--r--xorg-server/xkeyboard-config/po/sq.po2930
-rw-r--r--xorg-server/xkeyboard-config/po/sr.po4132
-rw-r--r--xorg-server/xkeyboard-config/po/tr.po5190
-rw-r--r--xorg-server/xkeyboard-config/po/zh_TW.po3342
-rw-r--r--xorg-server/xkeyboard-config/rules/HDR66
-rw-r--r--xorg-server/xkeyboard-config/rules/README4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.hdr.part12
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l1_k.part6
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l1o_s.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l2o_s.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l3o_s.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l4o_s.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l_k.part6
-rw-r--r--xorg-server/xkeyboard-config/rules/base.lists.part214
-rw-r--r--xorg-server/xkeyboard-config/rules/base.lo_s.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.m_k.part28
-rw-r--r--xorg-server/xkeyboard-config/rules/base.m_s.part102
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml1_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml_c.part8
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml_g.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/base.mlv_s.part8
-rw-r--r--xorg-server/xkeyboard-config/rules/base.o_t.part16
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/ml1_s.sh18
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh14
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh14
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/ml_s.sh18
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/mlv_s.sh14
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.lists.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.lv_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.o_s.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst54
-rw-r--r--xorg-server/xkeyboard-config/rules/merge.sh50
-rw-r--r--xorg-server/xkeyboard-config/rules/xfree9856
-rw-r--r--xorg-server/xkeyboard-config/symbols/altwin158
-rw-r--r--xorg-server/xkeyboard-config/symbols/compose108
-rw-r--r--xorg-server/xkeyboard-config/symbols/digital_vndr/Makefile.am10
-rw-r--r--xorg-server/xkeyboard-config/symbols/digital_vndr/lk260
-rw-r--r--xorg-server/xkeyboard-config/symbols/digital_vndr/pc350
-rw-r--r--xorg-server/xkeyboard-config/symbols/digital_vndr/us422
-rw-r--r--xorg-server/xkeyboard-config/symbols/digital_vndr/vt316
-rw-r--r--xorg-server/xkeyboard-config/symbols/empty8
-rw-r--r--xorg-server/xkeyboard-config/symbols/eurosign46
-rw-r--r--xorg-server/xkeyboard-config/symbols/extractGroupNames.sh6
-rw-r--r--xorg-server/xkeyboard-config/symbols/fujitsu_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/fujitsu_vndr/jp174
-rw-r--r--xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us286
-rw-r--r--xorg-server/xkeyboard-config/symbols/hp_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/hp_vndr/us208
-rw-r--r--xorg-server/xkeyboard-config/symbols/kpdl204
-rw-r--r--xorg-server/xkeyboard-config/symbols/level3392
-rw-r--r--xorg-server/xkeyboard-config/symbols/level5294
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch202
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/de188
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi34
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr220
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb34
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/is254
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/it124
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam74
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl30
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/no100
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt122
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/se88
-rw-r--r--xorg-server/xkeyboard-config/symbols/mao42
-rw-r--r--xorg-server/xkeyboard-config/symbols/nec_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/nec_vndr/jp326
-rw-r--r--xorg-server/xkeyboard-config/symbols/nokia_vndr/Makefile.am12
-rw-r--r--xorg-server/xkeyboard-config/symbols/nokia_vndr/rx-44606
-rw-r--r--xorg-server/xkeyboard-config/symbols/olpc42
-rw-r--r--xorg-server/xkeyboard-config/symbols/rupeesign10
-rw-r--r--xorg-server/xkeyboard-config/symbols/sgi_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/sgi_vndr/jp88
-rw-r--r--xorg-server/xkeyboard-config/symbols/shift168
-rw-r--r--xorg-server/xkeyboard-config/symbols/sony_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/sony_vndr/us182
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ara232
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/be196
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/br202
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ca194
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ch266
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/cz210
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/de280
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/dk294
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ee234
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/es290
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/fi178
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/fr192
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/gb204
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/gr234
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/it280
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/jp1632
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/kr194
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/lt236
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/lv234
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/nl296
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/no288
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/pl202
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/pt284
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ro234
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ru222
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/se558
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/sk218
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/tr184
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/tuv522
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/tw156
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/ua234
-rw-r--r--xorg-server/xkeyboard-config/symbols/typo102
-rw-r--r--xorg-server/xkeyboard-config/symbols/xfree68_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga252
-rw-r--r--xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt310
-rw-r--r--xorg-server/xkeyboard-config/types/Makefile.am22
-rw-r--r--xorg-server/xkeyboard-config/types/README8
-rw-r--r--xorg-server/xkeyboard-config/types/basic58
-rw-r--r--xorg-server/xkeyboard-config/types/cancel22
-rw-r--r--xorg-server/xkeyboard-config/types/caps336
-rw-r--r--xorg-server/xkeyboard-config/types/complete18
-rw-r--r--xorg-server/xkeyboard-config/types/iso999536
-rw-r--r--xorg-server/xkeyboard-config/types/level5426
-rw-r--r--xorg-server/xkeyboard-config/types/mousekeys20
-rw-r--r--xorg-server/xkeyboard-config/types/nokia28
-rw-r--r--xorg-server/xkeyboard-config/xkeyboard-config.pc.in16
-rw-r--r--xorg-server/xorg-server.m498
-rw-r--r--xorg-server/xserver.ent.in6
1702 files changed, 297643 insertions, 295549 deletions
diff --git a/X11/extensions/.gitignore b/X11/extensions/.gitignore
new file mode 100644
index 000000000..d136c66b1
--- /dev/null
+++ b/X11/extensions/.gitignore
@@ -0,0 +1,78 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for randrproto
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/X11/extensions/EVI.h b/X11/extensions/EVI.h
index 7f3f733e6..dbab85a09 100644
--- a/X11/extensions/EVI.h
+++ b/X11/extensions/EVI.h
@@ -1,36 +1,36 @@
-/************************************************************
-Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
-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 of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS 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.
-********************************************************/
-
-#ifndef _EVI_H_
-#define _EVI_H_
-
-#define XEVI_TRANSPARENCY_NONE 0
-#define XEVI_TRANSPARENCY_PIXEL 1
-#define XEVI_TRANSPARENCY_MASK 2
-
-#define EVINAME "Extended-Visual-Information"
-
-#define XEVI_MAJOR_VERSION 1 /* current version numbers */
-#define XEVI_MINOR_VERSION 0
-
-#endif
+/************************************************************
+Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
+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 of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS 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.
+********************************************************/
+
+#ifndef _EVI_H_
+#define _EVI_H_
+
+#define XEVI_TRANSPARENCY_NONE 0
+#define XEVI_TRANSPARENCY_PIXEL 1
+#define XEVI_TRANSPARENCY_MASK 2
+
+#define EVINAME "Extended-Visual-Information"
+
+#define XEVI_MAJOR_VERSION 1 /* current version numbers */
+#define XEVI_MINOR_VERSION 0
+
+#endif
diff --git a/X11/extensions/EVIproto.h b/X11/extensions/EVIproto.h
index afa282a53..a539e6d64 100644
--- a/X11/extensions/EVIproto.h
+++ b/X11/extensions/EVIproto.h
@@ -1,96 +1,96 @@
-/************************************************************
-Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
-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 of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS 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.
-********************************************************/
-
-#ifndef _EVIPROTO_H_
-#define _EVIPROTO_H_
-
-#include <X11/extensions/EVI.h>
-
-#define X_EVIQueryVersion 0
-#define X_EVIGetVisualInfo 1
-
-#define VisualID CARD32
-
-typedef CARD32 VisualID32;
-#define sz_VisualID32 4
-
-typedef struct _xExtendedVisualInfo {
- VisualID core_visual_id B32;
- INT8 screen;
- INT8 level;
- CARD8 transparency_type;
- CARD8 pad0;
- CARD32 transparency_value B32;
- CARD8 min_hw_colormaps;
- CARD8 max_hw_colormaps;
- CARD16 num_colormap_conflicts B16;
-} xExtendedVisualInfo;
-#define sz_xExtendedVisualInfo 16
-
-typedef struct _XEVIQueryVersion {
- CARD8 reqType; /* always XEVIReqCode */
- CARD8 xeviReqType; /* always X_EVIQueryVersion */
- CARD16 length B16;
-} xEVIQueryVersionReq;
-#define sz_xEVIQueryVersionReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16; /* major version of EVI protocol */
- CARD16 minorVersion B16; /* minor version of EVI protocol */
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xEVIQueryVersionReply;
-#define sz_xEVIQueryVersionReply 32
-
-typedef struct _XEVIGetVisualInfoReq {
- CARD8 reqType; /* always XEVIReqCode */
- CARD8 xeviReqType; /* always X_EVIGetVisualInfo */
- CARD16 length B16;
- CARD32 n_visual B32;
-} xEVIGetVisualInfoReq;
-#define sz_xEVIGetVisualInfoReq 8
-
-typedef struct _XEVIGetVisualInfoReply {
- BYTE type; /* X_Reply */
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 n_info B32;
- CARD32 n_conflicts B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xEVIGetVisualInfoReply;
-#define sz_xEVIGetVisualInfoReply 32
-
-#undef VisualID
-
-#endif /* _EVIPROTO_H_ */
+/************************************************************
+Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
+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 of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS 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.
+********************************************************/
+
+#ifndef _EVIPROTO_H_
+#define _EVIPROTO_H_
+
+#include <X11/extensions/EVI.h>
+
+#define X_EVIQueryVersion 0
+#define X_EVIGetVisualInfo 1
+
+#define VisualID CARD32
+
+typedef CARD32 VisualID32;
+#define sz_VisualID32 4
+
+typedef struct _xExtendedVisualInfo {
+ VisualID core_visual_id B32;
+ INT8 screen;
+ INT8 level;
+ CARD8 transparency_type;
+ CARD8 pad0;
+ CARD32 transparency_value B32;
+ CARD8 min_hw_colormaps;
+ CARD8 max_hw_colormaps;
+ CARD16 num_colormap_conflicts B16;
+} xExtendedVisualInfo;
+#define sz_xExtendedVisualInfo 16
+
+typedef struct _XEVIQueryVersion {
+ CARD8 reqType; /* always XEVIReqCode */
+ CARD8 xeviReqType; /* always X_EVIQueryVersion */
+ CARD16 length B16;
+} xEVIQueryVersionReq;
+#define sz_xEVIQueryVersionReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16; /* major version of EVI protocol */
+ CARD16 minorVersion B16; /* minor version of EVI protocol */
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xEVIQueryVersionReply;
+#define sz_xEVIQueryVersionReply 32
+
+typedef struct _XEVIGetVisualInfoReq {
+ CARD8 reqType; /* always XEVIReqCode */
+ CARD8 xeviReqType; /* always X_EVIGetVisualInfo */
+ CARD16 length B16;
+ CARD32 n_visual B32;
+} xEVIGetVisualInfoReq;
+#define sz_xEVIGetVisualInfoReq 8
+
+typedef struct _XEVIGetVisualInfoReply {
+ BYTE type; /* X_Reply */
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 n_info B32;
+ CARD32 n_conflicts B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xEVIGetVisualInfoReply;
+#define sz_xEVIGetVisualInfoReply 32
+
+#undef VisualID
+
+#endif /* _EVIPROTO_H_ */
diff --git a/X11/extensions/ag.h b/X11/extensions/ag.h
index be5883a3e..abfa3cb50 100644
--- a/X11/extensions/ag.h
+++ b/X11/extensions/ag.h
@@ -1,52 +1,52 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-*/
-
-#ifndef _AG_H_
-#define _AG_H_
-
-#define XAGNAME "XC-APPGROUP"
-
-#define XAG_MAJOR_VERSION 1 /* current version numbers */
-#define XAG_MINOR_VERSION 0
-
-#define XagWindowTypeX11 0
-#define XagWindowTypeMacintosh 1
-#define XagWindowTypeWin32 2
-#define XagWindowTypeWin16 3
-
-#define XagBadAppGroup 0
-#define XagNumberErrors (XagBadAppGroup + 1)
-
-#define XagNsingleScreen 7
-#define XagNdefaultRoot 1
-#define XagNrootVisual 2
-#define XagNdefaultColormap 3
-#define XagNblackPixel 4
-#define XagNwhitePixel 5
-#define XagNappGroupLeader 6
-
-#endif /* _AG_H_ */
-
+/*
+Copyright 1996, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+*/
+
+#ifndef _AG_H_
+#define _AG_H_
+
+#define XAGNAME "XC-APPGROUP"
+
+#define XAG_MAJOR_VERSION 1 /* current version numbers */
+#define XAG_MINOR_VERSION 0
+
+#define XagWindowTypeX11 0
+#define XagWindowTypeMacintosh 1
+#define XagWindowTypeWin32 2
+#define XagWindowTypeWin16 3
+
+#define XagBadAppGroup 0
+#define XagNumberErrors (XagBadAppGroup + 1)
+
+#define XagNsingleScreen 7
+#define XagNdefaultRoot 1
+#define XagNrootVisual 2
+#define XagNdefaultColormap 3
+#define XagNblackPixel 4
+#define XagNwhitePixel 5
+#define XagNappGroupLeader 6
+
+#endif /* _AG_H_ */
+
diff --git a/X11/extensions/agproto.h b/X11/extensions/agproto.h
index 108666126..c40aee643 100644
--- a/X11/extensions/agproto.h
+++ b/X11/extensions/agproto.h
@@ -1,178 +1,178 @@
-/*
-Copyright 1996, 1998, 2001 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-*/
-
-#ifndef _AGPROTO_H_ /* { */
-#define _AGPROTO_H_
-
-#include <X11/extensions/ag.h>
-
-#define X_XagQueryVersion 0
-#define X_XagCreate 1
-#define X_XagDestroy 2
-#define X_XagGetAttr 3
-#define X_XagQuery 4
-#define X_XagCreateAssoc 5
-#define X_XagDestroyAssoc 6
-
-#define XAppGroup CARD32
-
-/*
-* Redefine some basic types used by structures defined herein. This allows
-* both the library and server to view communicated data as 32-bit entities,
-* thus preventing problems on 64-bit architectures where libXext sees this
-* data as 64 bits and the server sees it as 32 bits.
-*/
-
-#define Colormap CARD32
-#define VisualID CARD32
-#define Window CARD32
-
-typedef struct _XagQueryVersion {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagQueryVersion */
- CARD16 length B16;
- CARD16 client_major_version B16;
- CARD16 client_minor_version B16;
-} xXagQueryVersionReq;
-#define sz_xXagQueryVersionReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- CARD16 server_major_version B16;
- CARD16 server_minor_version B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXagQueryVersionReply;
-#define sz_xXagQueryVersionReply 32
-
-/* Set AppGroup Attributes masks */
-#define XagSingleScreenMask 1 << 0
-#define XagDefaultRootMask 1 << XagNdefaultRoot
-#define XagRootVisualMask 1 << XagNrootVisual
-#define XagDefaultColormapMask 1 << XagNdefaultColormap
-#define XagBlackPixelMask 1 << XagNblackPixel
-#define XagWhitePixelMask 1 << XagNwhitePixel
-#define XagAppGroupLeaderMask 1 << XagNappGroupLeader
-
-typedef struct _XagCreate {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagCreate */
- CARD16 length B16;
- XAppGroup app_group B32;
- CARD32 attrib_mask B32; /* LISTofVALUE follows */
-} xXagCreateReq;
-#define sz_xXagCreateReq 12
-
-typedef struct _XagDestroy {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagDestroy */
- CARD16 length B16;
- XAppGroup app_group B32;
-} xXagDestroyReq;
-#define sz_xXagDestroyReq 8
-
-typedef struct _XagGetAttr {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagGetAttr */
- CARD16 length B16;
- XAppGroup app_group B32;
-} xXagGetAttrReq;
-#define sz_xXagGetAttrReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- Window default_root B32;
- VisualID root_visual B32;
- Colormap default_colormap B32;
- CARD32 black_pixel B32;
- CARD32 white_pixel B32;
- BOOL single_screen;
- BOOL app_group_leader;
- CARD16 pad2 B16;
-} xXagGetAttrReply;
-#define sz_xXagGetAttrReply 32
-
-typedef struct _XagQuery {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagQuery */
- CARD16 length B16;
- CARD32 resource B32;
-} xXagQueryReq;
-#define sz_xXagQueryReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- XAppGroup app_group B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXagQueryReply;
-#define sz_xXagQueryReply 32
-
-typedef struct _XagCreateAssoc {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagCreateAssoc */
- CARD16 length B16;
- Window window B32;
- CARD16 window_type B16;
- CARD16 system_window_len B16; /* LISTofCARD8 follows */
-} xXagCreateAssocReq;
-#define sz_xXagCreateAssocReq 12
-
-typedef struct _XagDestroyAssoc {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagDestroyAssoc */
- CARD16 length B16;
- Window window B32;
-} xXagDestroyAssocReq;
-#define sz_xXagDestroyAssocReq 8
-
-#undef XAppGroup
-/*
- * Cancel the previous redefinition of the basic types, thus restoring their
- * X.h definitions.
- */
-
-#undef Window
-#undef Colormap
-#undef VisualID
-
-#endif /* } _AGPROTO_H_ */
-
+/*
+Copyright 1996, 1998, 2001 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+*/
+
+#ifndef _AGPROTO_H_ /* { */
+#define _AGPROTO_H_
+
+#include <X11/extensions/ag.h>
+
+#define X_XagQueryVersion 0
+#define X_XagCreate 1
+#define X_XagDestroy 2
+#define X_XagGetAttr 3
+#define X_XagQuery 4
+#define X_XagCreateAssoc 5
+#define X_XagDestroyAssoc 6
+
+#define XAppGroup CARD32
+
+/*
+* Redefine some basic types used by structures defined herein. This allows
+* both the library and server to view communicated data as 32-bit entities,
+* thus preventing problems on 64-bit architectures where libXext sees this
+* data as 64 bits and the server sees it as 32 bits.
+*/
+
+#define Colormap CARD32
+#define VisualID CARD32
+#define Window CARD32
+
+typedef struct _XagQueryVersion {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagQueryVersion */
+ CARD16 length B16;
+ CARD16 client_major_version B16;
+ CARD16 client_minor_version B16;
+} xXagQueryVersionReq;
+#define sz_xXagQueryVersionReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ CARD16 server_major_version B16;
+ CARD16 server_minor_version B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xXagQueryVersionReply;
+#define sz_xXagQueryVersionReply 32
+
+/* Set AppGroup Attributes masks */
+#define XagSingleScreenMask 1 << 0
+#define XagDefaultRootMask 1 << XagNdefaultRoot
+#define XagRootVisualMask 1 << XagNrootVisual
+#define XagDefaultColormapMask 1 << XagNdefaultColormap
+#define XagBlackPixelMask 1 << XagNblackPixel
+#define XagWhitePixelMask 1 << XagNwhitePixel
+#define XagAppGroupLeaderMask 1 << XagNappGroupLeader
+
+typedef struct _XagCreate {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagCreate */
+ CARD16 length B16;
+ XAppGroup app_group B32;
+ CARD32 attrib_mask B32; /* LISTofVALUE follows */
+} xXagCreateReq;
+#define sz_xXagCreateReq 12
+
+typedef struct _XagDestroy {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagDestroy */
+ CARD16 length B16;
+ XAppGroup app_group B32;
+} xXagDestroyReq;
+#define sz_xXagDestroyReq 8
+
+typedef struct _XagGetAttr {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagGetAttr */
+ CARD16 length B16;
+ XAppGroup app_group B32;
+} xXagGetAttrReq;
+#define sz_xXagGetAttrReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ Window default_root B32;
+ VisualID root_visual B32;
+ Colormap default_colormap B32;
+ CARD32 black_pixel B32;
+ CARD32 white_pixel B32;
+ BOOL single_screen;
+ BOOL app_group_leader;
+ CARD16 pad2 B16;
+} xXagGetAttrReply;
+#define sz_xXagGetAttrReply 32
+
+typedef struct _XagQuery {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagQuery */
+ CARD16 length B16;
+ CARD32 resource B32;
+} xXagQueryReq;
+#define sz_xXagQueryReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ XAppGroup app_group B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xXagQueryReply;
+#define sz_xXagQueryReply 32
+
+typedef struct _XagCreateAssoc {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagCreateAssoc */
+ CARD16 length B16;
+ Window window B32;
+ CARD16 window_type B16;
+ CARD16 system_window_len B16; /* LISTofCARD8 follows */
+} xXagCreateAssocReq;
+#define sz_xXagCreateAssocReq 12
+
+typedef struct _XagDestroyAssoc {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagDestroyAssoc */
+ CARD16 length B16;
+ Window window B32;
+} xXagDestroyAssocReq;
+#define sz_xXagDestroyAssocReq 8
+
+#undef XAppGroup
+/*
+ * Cancel the previous redefinition of the basic types, thus restoring their
+ * X.h definitions.
+ */
+
+#undef Window
+#undef Colormap
+#undef VisualID
+
+#endif /* } _AGPROTO_H_ */
+
diff --git a/X11/extensions/cup.h b/X11/extensions/cup.h
index cbbc34bf8..c5def262d 100644
--- a/X11/extensions/cup.h
+++ b/X11/extensions/cup.h
@@ -1,38 +1,38 @@
-/*
-
-Copyright 1987, 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifndef _CUP_H_
-#define _CUP_H_
-
-#define XCUPNAME "TOG-CUP"
-
-#define XCUP_MAJOR_VERSION 1 /* current version numbers */
-#define XCUP_MINOR_VERSION 0
-
-#define XcupNumberErrors 0
-
-#endif /* _CUP_H_ */
-
+/*
+
+Copyright 1987, 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifndef _CUP_H_
+#define _CUP_H_
+
+#define XCUPNAME "TOG-CUP"
+
+#define XCUP_MAJOR_VERSION 1 /* current version numbers */
+#define XCUP_MINOR_VERSION 0
+
+#define XcupNumberErrors 0
+
+#endif /* _CUP_H_ */
+
diff --git a/X11/extensions/cupproto.h b/X11/extensions/cupproto.h
index f61c9f0a7..3fb854dd1 100644
--- a/X11/extensions/cupproto.h
+++ b/X11/extensions/cupproto.h
@@ -1,105 +1,105 @@
-/*
-
-Copyright 1987, 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifndef _XCUPPROTO_H_ /* { */
-#define _XCUPPROTO_H_
-
-#include <X11/extensions/cup.h>
-
-#define X_XcupQueryVersion 0
-#define X_XcupGetReservedColormapEntries 1
-#define X_XcupStoreColors 2
-
-typedef struct _XcupQueryVersion {
- CARD8 reqType; /* always XcupReqCode */
- CARD8 xcupReqType; /* always X_XcupQueryVersion */
- CARD16 length B16;
- CARD16 client_major_version B16;
- CARD16 client_minor_version B16;
-} xXcupQueryVersionReq;
-#define sz_xXcupQueryVersionReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- CARD16 server_major_version B16;
- CARD16 server_minor_version B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXcupQueryVersionReply;
-#define sz_xXcupQueryVersionReply 32
-
-typedef struct _XcupGetReservedColormapEntries {
- CARD8 reqType; /* always XcupReqCode */
- CARD8 xcupReqType; /* always X_XcupGetReservedColormapEntries */
- CARD16 length B16;
- CARD32 screen B32;
-} xXcupGetReservedColormapEntriesReq;
-#define sz_xXcupGetReservedColormapEntriesReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
-} xXcupGetReservedColormapEntriesReply;
-#define sz_xXcupGetReservedColormapEntriesReply 32
-
-typedef struct _XcupStoreColors {
- CARD8 reqType; /* always XcupReqCode */
- CARD8 xcupReqType; /* always X_XcupStoreColors */
- CARD16 length B16;
- CARD32 cmap B32;
-} xXcupStoreColorsReq;
-#define sz_xXcupStoreColorsReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
-} xXcupStoreColorsReply;
-#define sz_xXcupStoreColorsReply 32
-
-#endif /* } _XCUPPROTO_H_ */
-
+/*
+
+Copyright 1987, 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifndef _XCUPPROTO_H_ /* { */
+#define _XCUPPROTO_H_
+
+#include <X11/extensions/cup.h>
+
+#define X_XcupQueryVersion 0
+#define X_XcupGetReservedColormapEntries 1
+#define X_XcupStoreColors 2
+
+typedef struct _XcupQueryVersion {
+ CARD8 reqType; /* always XcupReqCode */
+ CARD8 xcupReqType; /* always X_XcupQueryVersion */
+ CARD16 length B16;
+ CARD16 client_major_version B16;
+ CARD16 client_minor_version B16;
+} xXcupQueryVersionReq;
+#define sz_xXcupQueryVersionReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ CARD16 server_major_version B16;
+ CARD16 server_minor_version B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xXcupQueryVersionReply;
+#define sz_xXcupQueryVersionReply 32
+
+typedef struct _XcupGetReservedColormapEntries {
+ CARD8 reqType; /* always XcupReqCode */
+ CARD8 xcupReqType; /* always X_XcupGetReservedColormapEntries */
+ CARD16 length B16;
+ CARD32 screen B32;
+} xXcupGetReservedColormapEntriesReq;
+#define sz_xXcupGetReservedColormapEntriesReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+} xXcupGetReservedColormapEntriesReply;
+#define sz_xXcupGetReservedColormapEntriesReply 32
+
+typedef struct _XcupStoreColors {
+ CARD8 reqType; /* always XcupReqCode */
+ CARD8 xcupReqType; /* always X_XcupStoreColors */
+ CARD16 length B16;
+ CARD32 cmap B32;
+} xXcupStoreColorsReq;
+#define sz_xXcupStoreColorsReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+} xXcupStoreColorsReply;
+#define sz_xXcupStoreColorsReply 32
+
+#endif /* } _XCUPPROTO_H_ */
+
diff --git a/X11/extensions/dbe.h b/X11/extensions/dbe.h
index 7968552d3..bc175223d 100644
--- a/X11/extensions/dbe.h
+++ b/X11/extensions/dbe.h
@@ -1,57 +1,57 @@
-/******************************************************************************
- *
- * Copyright (c) 1994, 1995 Hewlett-Packard Company
- *
- * 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 HEWLETT-PACKARD COMPANY 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 Hewlett-Packard
- * Company 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 Hewlett-Packard Company.
- *
- * Header file for Xlib-related DBE
- *
- *****************************************************************************/
-
-#ifndef DBE_H
-#define DBE_H
-
-/* Values for swap_action field of XdbeSwapInfo structure */
-#define XdbeUndefined 0
-#define XdbeBackground 1
-#define XdbeUntouched 2
-#define XdbeCopied 3
-
-/* Errors */
-#define XdbeBadBuffer 0
-
-#define DBE_PROTOCOL_NAME "DOUBLE-BUFFER"
-
-/* Current version numbers */
-#define DBE_MAJOR_VERSION 1
-#define DBE_MINOR_VERSION 0
-
-/* Used when adding extension; also used in Xdbe macros */
-#define DbeNumberEvents 0
-#define DbeBadBuffer 0
-#define DbeNumberErrors (DbeBadBuffer + 1)
-
-#endif /* DBE_H */
-
+/******************************************************************************
+ *
+ * Copyright (c) 1994, 1995 Hewlett-Packard Company
+ *
+ * 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 HEWLETT-PACKARD COMPANY 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 Hewlett-Packard
+ * Company 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 Hewlett-Packard Company.
+ *
+ * Header file for Xlib-related DBE
+ *
+ *****************************************************************************/
+
+#ifndef DBE_H
+#define DBE_H
+
+/* Values for swap_action field of XdbeSwapInfo structure */
+#define XdbeUndefined 0
+#define XdbeBackground 1
+#define XdbeUntouched 2
+#define XdbeCopied 3
+
+/* Errors */
+#define XdbeBadBuffer 0
+
+#define DBE_PROTOCOL_NAME "DOUBLE-BUFFER"
+
+/* Current version numbers */
+#define DBE_MAJOR_VERSION 1
+#define DBE_MINOR_VERSION 0
+
+/* Used when adding extension; also used in Xdbe macros */
+#define DbeNumberEvents 0
+#define DbeBadBuffer 0
+#define DbeNumberErrors (DbeBadBuffer + 1)
+
+#endif /* DBE_H */
+
diff --git a/X11/extensions/dbeproto.h b/X11/extensions/dbeproto.h
index 784926e33..62d30da85 100644
--- a/X11/extensions/dbeproto.h
+++ b/X11/extensions/dbeproto.h
@@ -1,224 +1,224 @@
-/******************************************************************************
- *
- * Copyright (c) 1994, 1995 Hewlett-Packard Company
- *
- * 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 HEWLETT-PACKARD COMPANY 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 Hewlett-Packard
- * Company 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 Hewlett-Packard Company.
- *
- * Header file for Xlib-related DBE
- *
- *****************************************************************************/
-
-#ifndef DBE_PROTO_H
-#define DBE_PROTO_H
-
-#include <X11/extensions/dbe.h>
-
-/* Request values used in (S)ProcDbeDispatch() */
-#define X_DbeGetVersion 0
-#define X_DbeAllocateBackBufferName 1
-#define X_DbeDeallocateBackBufferName 2
-#define X_DbeSwapBuffers 3
-#define X_DbeBeginIdiom 4
-#define X_DbeEndIdiom 5
-#define X_DbeGetVisualInfo 6
-#define X_DbeGetBackBufferAttributes 7
-
-typedef CARD8 xDbeSwapAction;
-typedef CARD32 xDbeBackBuffer;
-
-/* TYPEDEFS */
-
-/* Protocol data types */
-
-typedef struct
-{
- CARD32 window B32; /* window */
- xDbeSwapAction swapAction; /* swap action */
- CARD8 pad1; /* unused */
- CARD16 pad2 B16;
-
-} xDbeSwapInfo;
-
-typedef struct
-{
- CARD32 visualID B32; /* associated visual */
- CARD8 depth; /* depth of visual */
- CARD8 perfLevel; /* performance level hint */
- CARD16 pad1 B16;
-
-} xDbeVisInfo;
-#define sz_xDbeVisInfo 8
-
-typedef struct
-{
- CARD32 n B32; /* number of visual info items in list */
-
-} xDbeScreenVisInfo; /* followed by n xDbeVisInfo items */
-
-typedef struct
-{
- CARD32 window B32; /* window */
-
-} xDbeBufferAttributes;
-
-
-/* Requests and replies */
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: always codes->major_opcode */
- CARD8 dbeReqType; /* minor-opcode: always X_DbeGetVersion (0) */
- CARD16 length B16; /* request length: (2) */
- CARD8 majorVersion; /* client-major-version */
- CARD8 minorVersion; /* client-minor-version */
- CARD16 unused B16; /* unused */
-
-} xDbeGetVersionReq;
-#define sz_xDbeGetVersionReq 8
-
-typedef struct
-{
- BYTE type; /* Reply: X_Reply (1) */
- CARD8 unused; /* unused */
- CARD16 sequenceNumber B16; /* sequence number */
- CARD32 length B32; /* reply length: (0) */
- CARD8 majorVersion; /* server-major-version */
- CARD8 minorVersion; /* server-minor-version */
- CARD16 pad1 B16; /* unused */
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-
-} xDbeGetVersionReply;
-#define sz_xDbeGetVersionReply 32
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: codes->major_opcode */
- CARD8 dbeReqType; /* X_DbeAllocateBackBufferName (1) */
- CARD16 length B16; /* request length: (4) */
- CARD32 window B32; /* window */
- xDbeBackBuffer buffer B32; /* back buffer name */
- xDbeSwapAction swapAction; /* swap action hint */
- CARD8 pad1; /* unused */
- CARD16 pad2 B16;
-
-} xDbeAllocateBackBufferNameReq;
-#define sz_xDbeAllocateBackBufferNameReq 16
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: codes->major_opcode */
- CARD8 dbeReqType; /* X_DbeDeallocateBackBufferName (2) */
- CARD16 length B16; /* request length: (2) */
- xDbeBackBuffer buffer B32; /* back buffer name */
-
-} xDbeDeallocateBackBufferNameReq;
-#define sz_xDbeDeallocateBackBufferNameReq 8
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: always codes->major_opcode */
- CARD8 dbeReqType; /* minor-opcode: always X_DbeSwapBuffers (3) */
- CARD16 length B16; /* request length: (2+2n) */
- CARD32 n B32; /* n, number of window/swap action pairs */
-
-} xDbeSwapBuffersReq; /* followed by n window/swap action pairs */
-#define sz_xDbeSwapBuffersReq 8
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: always codes->major_opcode */
- CARD8 dbeReqType; /* minor-opcode: always X_DbeBeginIdom (4) */
- CARD16 length B16; /* request length: (1) */
-
-} xDbeBeginIdiomReq;
-#define sz_xDbeBeginIdiomReq 4
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: always codes->major_opcode */
- CARD8 dbeReqType; /* minor-opcode: always X_DbeEndIdom (5) */
- CARD16 length B16; /* request length: (1) */
-
-} xDbeEndIdiomReq;
-#define sz_xDbeEndIdiomReq 4
-
-typedef struct
-{
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 dbeReqType; /* always X_DbeGetVisualInfo (6) */
- CARD16 length B16; /* request length: (2+n) */
- CARD32 n B32; /* n, number of drawables in list */
-
-} xDbeGetVisualInfoReq; /* followed by n drawables */
-#define sz_xDbeGetVisualInfoReq 8
-
-typedef struct
-{
- BYTE type; /* Reply: X_Reply (1) */
- CARD8 unused; /* unused */
- CARD16 sequenceNumber B16; /* sequence number */
- CARD32 length B32; /* reply length */
- CARD32 m; /* m, number of visual infos in list */
- CARD32 pad1 B32; /* unused */
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-
-} xDbeGetVisualInfoReply; /* followed by m visual infos */
-#define sz_xDbeGetVisualInfoReply 32
-
-typedef struct
-{
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 dbeReqType; /* X_DbeGetBackBufferAttributes (7) */
- CARD16 length B16; /* request length: (2) */
- xDbeBackBuffer buffer B32; /* back buffer name */
-
-} xDbeGetBackBufferAttributesReq;
-#define sz_xDbeGetBackBufferAttributesReq 8
-
-typedef struct
-{
- BYTE type; /* Reply: X_Reply (1) */
- CARD8 unused; /* unused */
- CARD16 sequenceNumber B16; /* sequence number */
- CARD32 length B32; /* reply length: (0) */
- CARD32 attributes; /* attributes */
- CARD32 pad1 B32; /* unused */
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-
-} xDbeGetBackBufferAttributesReply;
-#define sz_xDbeGetBackBufferAttributesReply 32
-
-#endif /* DBE_PROTO_H */
-
+/******************************************************************************
+ *
+ * Copyright (c) 1994, 1995 Hewlett-Packard Company
+ *
+ * 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 HEWLETT-PACKARD COMPANY 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 Hewlett-Packard
+ * Company 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 Hewlett-Packard Company.
+ *
+ * Header file for Xlib-related DBE
+ *
+ *****************************************************************************/
+
+#ifndef DBE_PROTO_H
+#define DBE_PROTO_H
+
+#include <X11/extensions/dbe.h>
+
+/* Request values used in (S)ProcDbeDispatch() */
+#define X_DbeGetVersion 0
+#define X_DbeAllocateBackBufferName 1
+#define X_DbeDeallocateBackBufferName 2
+#define X_DbeSwapBuffers 3
+#define X_DbeBeginIdiom 4
+#define X_DbeEndIdiom 5
+#define X_DbeGetVisualInfo 6
+#define X_DbeGetBackBufferAttributes 7
+
+typedef CARD8 xDbeSwapAction;
+typedef CARD32 xDbeBackBuffer;
+
+/* TYPEDEFS */
+
+/* Protocol data types */
+
+typedef struct
+{
+ CARD32 window B32; /* window */
+ xDbeSwapAction swapAction; /* swap action */
+ CARD8 pad1; /* unused */
+ CARD16 pad2 B16;
+
+} xDbeSwapInfo;
+
+typedef struct
+{
+ CARD32 visualID B32; /* associated visual */
+ CARD8 depth; /* depth of visual */
+ CARD8 perfLevel; /* performance level hint */
+ CARD16 pad1 B16;
+
+} xDbeVisInfo;
+#define sz_xDbeVisInfo 8
+
+typedef struct
+{
+ CARD32 n B32; /* number of visual info items in list */
+
+} xDbeScreenVisInfo; /* followed by n xDbeVisInfo items */
+
+typedef struct
+{
+ CARD32 window B32; /* window */
+
+} xDbeBufferAttributes;
+
+
+/* Requests and replies */
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: always codes->major_opcode */
+ CARD8 dbeReqType; /* minor-opcode: always X_DbeGetVersion (0) */
+ CARD16 length B16; /* request length: (2) */
+ CARD8 majorVersion; /* client-major-version */
+ CARD8 minorVersion; /* client-minor-version */
+ CARD16 unused B16; /* unused */
+
+} xDbeGetVersionReq;
+#define sz_xDbeGetVersionReq 8
+
+typedef struct
+{
+ BYTE type; /* Reply: X_Reply (1) */
+ CARD8 unused; /* unused */
+ CARD16 sequenceNumber B16; /* sequence number */
+ CARD32 length B32; /* reply length: (0) */
+ CARD8 majorVersion; /* server-major-version */
+ CARD8 minorVersion; /* server-minor-version */
+ CARD16 pad1 B16; /* unused */
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+
+} xDbeGetVersionReply;
+#define sz_xDbeGetVersionReply 32
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: codes->major_opcode */
+ CARD8 dbeReqType; /* X_DbeAllocateBackBufferName (1) */
+ CARD16 length B16; /* request length: (4) */
+ CARD32 window B32; /* window */
+ xDbeBackBuffer buffer B32; /* back buffer name */
+ xDbeSwapAction swapAction; /* swap action hint */
+ CARD8 pad1; /* unused */
+ CARD16 pad2 B16;
+
+} xDbeAllocateBackBufferNameReq;
+#define sz_xDbeAllocateBackBufferNameReq 16
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: codes->major_opcode */
+ CARD8 dbeReqType; /* X_DbeDeallocateBackBufferName (2) */
+ CARD16 length B16; /* request length: (2) */
+ xDbeBackBuffer buffer B32; /* back buffer name */
+
+} xDbeDeallocateBackBufferNameReq;
+#define sz_xDbeDeallocateBackBufferNameReq 8
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: always codes->major_opcode */
+ CARD8 dbeReqType; /* minor-opcode: always X_DbeSwapBuffers (3) */
+ CARD16 length B16; /* request length: (2+2n) */
+ CARD32 n B32; /* n, number of window/swap action pairs */
+
+} xDbeSwapBuffersReq; /* followed by n window/swap action pairs */
+#define sz_xDbeSwapBuffersReq 8
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: always codes->major_opcode */
+ CARD8 dbeReqType; /* minor-opcode: always X_DbeBeginIdom (4) */
+ CARD16 length B16; /* request length: (1) */
+
+} xDbeBeginIdiomReq;
+#define sz_xDbeBeginIdiomReq 4
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: always codes->major_opcode */
+ CARD8 dbeReqType; /* minor-opcode: always X_DbeEndIdom (5) */
+ CARD16 length B16; /* request length: (1) */
+
+} xDbeEndIdiomReq;
+#define sz_xDbeEndIdiomReq 4
+
+typedef struct
+{
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 dbeReqType; /* always X_DbeGetVisualInfo (6) */
+ CARD16 length B16; /* request length: (2+n) */
+ CARD32 n B32; /* n, number of drawables in list */
+
+} xDbeGetVisualInfoReq; /* followed by n drawables */
+#define sz_xDbeGetVisualInfoReq 8
+
+typedef struct
+{
+ BYTE type; /* Reply: X_Reply (1) */
+ CARD8 unused; /* unused */
+ CARD16 sequenceNumber B16; /* sequence number */
+ CARD32 length B32; /* reply length */
+ CARD32 m; /* m, number of visual infos in list */
+ CARD32 pad1 B32; /* unused */
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+
+} xDbeGetVisualInfoReply; /* followed by m visual infos */
+#define sz_xDbeGetVisualInfoReply 32
+
+typedef struct
+{
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 dbeReqType; /* X_DbeGetBackBufferAttributes (7) */
+ CARD16 length B16; /* request length: (2) */
+ xDbeBackBuffer buffer B32; /* back buffer name */
+
+} xDbeGetBackBufferAttributesReq;
+#define sz_xDbeGetBackBufferAttributesReq 8
+
+typedef struct
+{
+ BYTE type; /* Reply: X_Reply (1) */
+ CARD8 unused; /* unused */
+ CARD16 sequenceNumber B16; /* sequence number */
+ CARD32 length B32; /* reply length: (0) */
+ CARD32 attributes; /* attributes */
+ CARD32 pad1 B32; /* unused */
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+
+} xDbeGetBackBufferAttributesReply;
+#define sz_xDbeGetBackBufferAttributesReply 32
+
+#endif /* DBE_PROTO_H */
+
diff --git a/X11/extensions/dpmsconst.h b/X11/extensions/dpmsconst.h
index 75f058677..dfa5befcc 100644
--- a/X11/extensions/dpmsconst.h
+++ b/X11/extensions/dpmsconst.h
@@ -1,43 +1,43 @@
-/*****************************************************************
-
-Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
-
-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.
-
-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
-DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
-BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
-shall not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from Digital
-Equipment Corporation.
-
-******************************************************************/
-
-#ifndef _DPMSCONST_H
-#define _DPMSCONST_H 1
-
-#define DPMSMajorVersion 1
-#define DPMSMinorVersion 1
-
-#define DPMSExtensionName "DPMS"
-
-#define DPMSModeOn 0
-#define DPMSModeStandby 1
-#define DPMSModeSuspend 2
-#define DPMSModeOff 3
-
-#endif /* !_DPMSCONST_H */
-
+/*****************************************************************
+
+Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
+
+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.
+
+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
+DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Digital
+Equipment Corporation.
+
+******************************************************************/
+
+#ifndef _DPMSCONST_H
+#define _DPMSCONST_H 1
+
+#define DPMSMajorVersion 1
+#define DPMSMinorVersion 1
+
+#define DPMSExtensionName "DPMS"
+
+#define DPMSModeOn 0
+#define DPMSModeStandby 1
+#define DPMSModeSuspend 2
+#define DPMSModeOff 3
+
+#endif /* !_DPMSCONST_H */
+
diff --git a/X11/extensions/dpmsproto.h b/X11/extensions/dpmsproto.h
index 63fd3fc0e..e77ae976c 100644
--- a/X11/extensions/dpmsproto.h
+++ b/X11/extensions/dpmsproto.h
@@ -1,175 +1,175 @@
-/*****************************************************************
-
-Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
-
-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.
-
-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
-DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
-BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
-shall not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from Digital
-Equipment Corporation.
-
-******************************************************************/
-
-#ifndef _DPMSPROTO_H_
-#define _DPMSPROTO_H_
-
-#include <X11/extensions/dpmsconst.h>
-
-#define X_DPMSGetVersion 0
-#define X_DPMSCapable 1
-#define X_DPMSGetTimeouts 2
-#define X_DPMSSetTimeouts 3
-#define X_DPMSEnable 4
-#define X_DPMSDisable 5
-#define X_DPMSForceLevel 6
-#define X_DPMSInfo 7
-
-#define DPMSNumberEvents 0
-
-#define DPMSNumberErrors 0
-
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSGetVersion */
- CARD16 length B16;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
-} xDPMSGetVersionReq;
-#define sz_xDPMSGetVersionReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xDPMSGetVersionReply;
-#define sz_xDPMSGetVersionReply 32
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSCapable */
- CARD16 length B16;
-} xDPMSCapableReq;
-#define sz_xDPMSCapableReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- BOOL capable;
- CARD8 pad1;
- CARD16 pad2 B16;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
-} xDPMSCapableReply;
-#define sz_xDPMSCapableReply 32
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSGetTimeouts */
- CARD16 length B16;
-} xDPMSGetTimeoutsReq;
-#define sz_xDPMSGetTimeoutsReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 standby B16;
- CARD16 suspend B16;
- CARD16 off B16;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xDPMSGetTimeoutsReply;
-#define sz_xDPMSGetTimeoutsReply 32
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSSetTimeouts */
- CARD16 length B16;
- CARD16 standby B16;
- CARD16 suspend B16;
- CARD16 off B16;
- CARD16 pad0 B16;
-} xDPMSSetTimeoutsReq;
-#define sz_xDPMSSetTimeoutsReq 12
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSEnable */
- CARD16 length B16;
-} xDPMSEnableReq;
-#define sz_xDPMSEnableReq 4
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSDisable */
- CARD16 length B16;
-} xDPMSDisableReq;
-#define sz_xDPMSDisableReq 4
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSForceLevel */
- CARD16 length B16;
- CARD16 level B16; /* power level requested */
- CARD16 pad0 B16;
-} xDPMSForceLevelReq;
-#define sz_xDPMSForceLevelReq 8
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSInfo */
- CARD16 length B16;
-} xDPMSInfoReq;
-#define sz_xDPMSInfoReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 power_level B16;
- BOOL state;
- CARD8 pad1;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xDPMSInfoReply;
-#define sz_xDPMSInfoReply 32
-
-#endif /* _DPMSPROTO_H_ */
+/*****************************************************************
+
+Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
+
+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.
+
+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
+DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Digital
+Equipment Corporation.
+
+******************************************************************/
+
+#ifndef _DPMSPROTO_H_
+#define _DPMSPROTO_H_
+
+#include <X11/extensions/dpmsconst.h>
+
+#define X_DPMSGetVersion 0
+#define X_DPMSCapable 1
+#define X_DPMSGetTimeouts 2
+#define X_DPMSSetTimeouts 3
+#define X_DPMSEnable 4
+#define X_DPMSDisable 5
+#define X_DPMSForceLevel 6
+#define X_DPMSInfo 7
+
+#define DPMSNumberEvents 0
+
+#define DPMSNumberErrors 0
+
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSGetVersion */
+ CARD16 length B16;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+} xDPMSGetVersionReq;
+#define sz_xDPMSGetVersionReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xDPMSGetVersionReply;
+#define sz_xDPMSGetVersionReply 32
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSCapable */
+ CARD16 length B16;
+} xDPMSCapableReq;
+#define sz_xDPMSCapableReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ BOOL capable;
+ CARD8 pad1;
+ CARD16 pad2 B16;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+} xDPMSCapableReply;
+#define sz_xDPMSCapableReply 32
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSGetTimeouts */
+ CARD16 length B16;
+} xDPMSGetTimeoutsReq;
+#define sz_xDPMSGetTimeoutsReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 standby B16;
+ CARD16 suspend B16;
+ CARD16 off B16;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xDPMSGetTimeoutsReply;
+#define sz_xDPMSGetTimeoutsReply 32
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSSetTimeouts */
+ CARD16 length B16;
+ CARD16 standby B16;
+ CARD16 suspend B16;
+ CARD16 off B16;
+ CARD16 pad0 B16;
+} xDPMSSetTimeoutsReq;
+#define sz_xDPMSSetTimeoutsReq 12
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSEnable */
+ CARD16 length B16;
+} xDPMSEnableReq;
+#define sz_xDPMSEnableReq 4
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSDisable */
+ CARD16 length B16;
+} xDPMSDisableReq;
+#define sz_xDPMSDisableReq 4
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSForceLevel */
+ CARD16 length B16;
+ CARD16 level B16; /* power level requested */
+ CARD16 pad0 B16;
+} xDPMSForceLevelReq;
+#define sz_xDPMSForceLevelReq 8
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSInfo */
+ CARD16 length B16;
+} xDPMSInfoReq;
+#define sz_xDPMSInfoReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 power_level B16;
+ BOOL state;
+ CARD8 pad1;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xDPMSInfoReply;
+#define sz_xDPMSInfoReply 32
+
+#endif /* _DPMSPROTO_H_ */
diff --git a/X11/extensions/ge.h b/X11/extensions/ge.h
index aca1d8a24..fe458fa6c 100644
--- a/X11/extensions/ge.h
+++ b/X11/extensions/ge.h
@@ -1,60 +1,60 @@
-/*
- * Copyright © 2007-2008 Peter Hutterer
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors: Peter Hutterer, University of South Australia, NICTA
- *
- */
-
-#ifndef _GE_H_
-#define _GE_H_
-
-#define GE_NAME "Generic Event Extension"
-#define GE_MAJOR 1
-#define GE_MINOR 0
-
-/*********************************************************
- *
- * Requests
- *
- */
-
-#define X_GEQueryVersion 0
-
-#define GENumberRequests (X_GEQueryVersion + 1)
-
-/*********************************************************
- *
- * Events
- *
- */
-
-#define GENumberEvents 0
-
-/*********************************************************
- *
- * Errors
- *
- */
-
-#define GENumberErrors 0
-
-#endif /* _GE_H_ */
+/*
+ * Copyright © 2007-2008 Peter Hutterer
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors: Peter Hutterer, University of South Australia, NICTA
+ *
+ */
+
+#ifndef _GE_H_
+#define _GE_H_
+
+#define GE_NAME "Generic Event Extension"
+#define GE_MAJOR 1
+#define GE_MINOR 0
+
+/*********************************************************
+ *
+ * Requests
+ *
+ */
+
+#define X_GEQueryVersion 0
+
+#define GENumberRequests (X_GEQueryVersion + 1)
+
+/*********************************************************
+ *
+ * Events
+ *
+ */
+
+#define GENumberEvents 0
+
+/*********************************************************
+ *
+ * Errors
+ *
+ */
+
+#define GENumberErrors 0
+
+#endif /* _GE_H_ */
diff --git a/X11/extensions/geproto.h b/X11/extensions/geproto.h
index c8860dd87..7302275e4 100644
--- a/X11/extensions/geproto.h
+++ b/X11/extensions/geproto.h
@@ -1,85 +1,85 @@
-/*
- * Copyright © 2007-2008 Peter Hutterer
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors: Peter Hutterer, University of South Australia, NICTA
- *
- */
-
-#ifndef _GEPROTO_H_
-#define _GEPROTO_H_
-
-#include<X11/Xproto.h>
-#include<X11/X.h>
-#include<X11/extensions/ge.h>
-
-
-/*********************************************************
- *
- * Protocol request constants
- *
- */
-
-#define X_GEGetExtensionVersion 1
-
-/*********************************************************
- *
- * XGE protocol requests/replies
- *
- */
-
-/* generic request */
-typedef struct {
- CARD8 reqType;
- CARD8 ReqType;
- CARD16 length B16;
-} xGEReq;
-
-
-/* QueryVersion */
-typedef struct {
- CARD8 reqType; /* input extension major code */
- CARD8 ReqType; /* always X_GEQueryVersion */
- CARD16 length B16;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
-} xGEQueryVersionReq;
-
-#define sz_xGEQueryVersionReq 8
-
-typedef struct {
- CARD8 repType; /* X_Reply */
- CARD8 RepType; /* always X_GEQueryVersion */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
- CARD32 pad00 B32;
- CARD32 pad01 B32;
- CARD32 pad02 B32;
- CARD32 pad03 B32;
- CARD32 pad04 B32;
-} xGEQueryVersionReply;
-
-#define sz_xGEQueryVersionReply 32
-
-#endif /* _GEPROTO_H_ */
-
+/*
+ * Copyright © 2007-2008 Peter Hutterer
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors: Peter Hutterer, University of South Australia, NICTA
+ *
+ */
+
+#ifndef _GEPROTO_H_
+#define _GEPROTO_H_
+
+#include<X11/Xproto.h>
+#include<X11/X.h>
+#include<X11/extensions/ge.h>
+
+
+/*********************************************************
+ *
+ * Protocol request constants
+ *
+ */
+
+#define X_GEGetExtensionVersion 1
+
+/*********************************************************
+ *
+ * XGE protocol requests/replies
+ *
+ */
+
+/* generic request */
+typedef struct {
+ CARD8 reqType;
+ CARD8 ReqType;
+ CARD16 length B16;
+} xGEReq;
+
+
+/* QueryVersion */
+typedef struct {
+ CARD8 reqType; /* input extension major code */
+ CARD8 ReqType; /* always X_GEQueryVersion */
+ CARD16 length B16;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+} xGEQueryVersionReq;
+
+#define sz_xGEQueryVersionReq 8
+
+typedef struct {
+ CARD8 repType; /* X_Reply */
+ CARD8 RepType; /* always X_GEQueryVersion */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+ CARD32 pad00 B32;
+ CARD32 pad01 B32;
+ CARD32 pad02 B32;
+ CARD32 pad03 B32;
+ CARD32 pad04 B32;
+} xGEQueryVersionReply;
+
+#define sz_xGEQueryVersionReply 32
+
+#endif /* _GEPROTO_H_ */
+
diff --git a/X11/extensions/lbx.h b/X11/extensions/lbx.h
index ecd24ff1f..db19c91a8 100644
--- a/X11/extensions/lbx.h
+++ b/X11/extensions/lbx.h
@@ -1,73 +1,73 @@
-/*
- * Copyright 1992 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 NCD. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. NCD. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
- * 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.
- *
- */
-
-#ifndef _LBX_H_
-#define _LBX_H_
-
-#define LBXNAME "LBX"
-
-#define LBX_MAJOR_VERSION 1
-#define LBX_MINOR_VERSION 0
-
-#define LbxNumberReqs 44
-#define LbxEvent 0
-#define LbxQuickMotionDeltaEvent 1
-#define LbxNumberEvents 2
-
-/* This is always the master client */
-#define LbxMasterClientIndex 0
-
-/* LbxEvent lbxType sub-fields */
-#define LbxSwitchEvent 0
-#define LbxCloseEvent 1
-#define LbxDeltaEvent 2
-#define LbxInvalidateTagEvent 3
-#define LbxSendTagDataEvent 4
-#define LbxListenToOne 5
-#define LbxListenToAll 6
-#define LbxMotionDeltaEvent 7
-#define LbxReleaseCmapEvent 8
-#define LbxFreeCellsEvent 9
-
-/*
- * Lbx image compression methods
- *
- * No compression is always assigned the value of 0.
- *
- * The rest of the compression method opcodes are assigned dynamically
- * at option negotiation time.
- */
-
-#define LbxImageCompressNone 0
-
-
-#define BadLbxClient 0
-#define LbxNumberErrors (BadLbxClient + 1)
-
-/* tagged data types */
-#define LbxTagTypeModmap 1
-#define LbxTagTypeKeymap 2
-#define LbxTagTypeProperty 3
-#define LbxTagTypeFont 4
-#define LbxTagTypeConnInfo 5
-
-#endif
+/*
+ * Copyright 1992 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 NCD. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. NCD. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
+ * 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.
+ *
+ */
+
+#ifndef _LBX_H_
+#define _LBX_H_
+
+#define LBXNAME "LBX"
+
+#define LBX_MAJOR_VERSION 1
+#define LBX_MINOR_VERSION 0
+
+#define LbxNumberReqs 44
+#define LbxEvent 0
+#define LbxQuickMotionDeltaEvent 1
+#define LbxNumberEvents 2
+
+/* This is always the master client */
+#define LbxMasterClientIndex 0
+
+/* LbxEvent lbxType sub-fields */
+#define LbxSwitchEvent 0
+#define LbxCloseEvent 1
+#define LbxDeltaEvent 2
+#define LbxInvalidateTagEvent 3
+#define LbxSendTagDataEvent 4
+#define LbxListenToOne 5
+#define LbxListenToAll 6
+#define LbxMotionDeltaEvent 7
+#define LbxReleaseCmapEvent 8
+#define LbxFreeCellsEvent 9
+
+/*
+ * Lbx image compression methods
+ *
+ * No compression is always assigned the value of 0.
+ *
+ * The rest of the compression method opcodes are assigned dynamically
+ * at option negotiation time.
+ */
+
+#define LbxImageCompressNone 0
+
+
+#define BadLbxClient 0
+#define LbxNumberErrors (BadLbxClient + 1)
+
+/* tagged data types */
+#define LbxTagTypeModmap 1
+#define LbxTagTypeKeymap 2
+#define LbxTagTypeProperty 3
+#define LbxTagTypeFont 4
+#define LbxTagTypeConnInfo 5
+
+#endif
diff --git a/X11/extensions/lbxproto.h b/X11/extensions/lbxproto.h
index a1ae62ba4..fdd8b4b64 100644
--- a/X11/extensions/lbxproto.h
+++ b/X11/extensions/lbxproto.h
@@ -1,975 +1,975 @@
-/*
- * Copyright 1992 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 NCD. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. NCD. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
- * 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.
- *
- */
-
-#ifndef _LBXPROTO_H_
-#define _LBXPROTO_H_
-
-#include <X11/extensions/lbx.h>
-/*
- * NOTE: any changes or additions to the opcodes needs to be reflected
- * in the lbxCacheable array in Xserver/lbx/lbxmain.c
- */
-
-#define X_LbxQueryVersion 0
-#define X_LbxStartProxy 1
-#define X_LbxStopProxy 2
-#define X_LbxSwitch 3
-#define X_LbxNewClient 4
-#define X_LbxCloseClient 5
-#define X_LbxModifySequence 6
-#define X_LbxAllowMotion 7
-#define X_LbxIncrementPixel 8
-#define X_LbxDelta 9
-#define X_LbxGetModifierMapping 10
-#define X_LbxInvalidateTag 12
-#define X_LbxPolyPoint 13
-#define X_LbxPolyLine 14
-#define X_LbxPolySegment 15
-#define X_LbxPolyRectangle 16
-#define X_LbxPolyArc 17
-#define X_LbxFillPoly 18
-#define X_LbxPolyFillRectangle 19
-#define X_LbxPolyFillArc 20
-#define X_LbxGetKeyboardMapping 21
-#define X_LbxQueryFont 22
-#define X_LbxChangeProperty 23
-#define X_LbxGetProperty 24
-#define X_LbxTagData 25
-
-#define X_LbxCopyArea 26
-#define X_LbxCopyPlane 27
-#define X_LbxPolyText8 28
-#define X_LbxPolyText16 29
-#define X_LbxImageText8 30
-#define X_LbxImageText16 31
-
-#define X_LbxQueryExtension 32
-#define X_LbxPutImage 33
-#define X_LbxGetImage 34
-
-#define X_LbxBeginLargeRequest 35
-#define X_LbxLargeRequestData 36
-#define X_LbxEndLargeRequest 37
-
-#define X_LbxInternAtoms 38
-#define X_LbxGetWinAttrAndGeom 39
-
-#define X_LbxGrabCmap 40
-#define X_LbxReleaseCmap 41
-#define X_LbxAllocColor 42
-
-#define X_LbxSync 43
-
-/*
- * Redefine some basic types used by structures defined herein. This removes
- * any possibility on 64-bit architectures of one entity viewing communicated
- * data as 32-bit quantities and another entity viewing the same data as 64-bit
- * quantities.
- */
-#define XID CARD32
-#define Atom CARD32
-#define Colormap CARD32
-#define Drawable CARD32
-#define VisualID CARD32
-#define Window CARD32
-
-typedef struct {
- BOOL success; /* TRUE */
- BOOL changeType;
- CARD16 majorVersion B16,
- minorVersion B16;
- CARD16 length B16; /* 1/4 additional bytes in setup info */
- CARD32 tag B32;
-} xLbxConnSetupPrefix;
-
-typedef struct _LbxQueryVersion {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxQueryVersion */
- CARD16 length B16;
-} xLbxQueryVersionReq;
-#define sz_xLbxQueryVersionReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16; /* major version of LBX protocol */
- CARD16 minorVersion B16; /* minor version of LBX protocol */
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxQueryVersionReply;
-#define sz_xLbxQueryVersionReply 32
-
-typedef struct _LbxStartProxy {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxStartProxy */
- CARD16 length B16;
-} xLbxStartProxyReq;
-#define sz_xLbxStartProxyReq 4
-
-typedef struct _LbxStopProxy {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxStopProxy */
- CARD16 length B16;
-} xLbxStopProxyReq;
-#define sz_xLbxStopProxyReq 4
-
-typedef struct _LbxSwitch {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxSwitch */
- CARD16 length B16;
- CARD32 client B32; /* new client */
-} xLbxSwitchReq;
-#define sz_xLbxSwitchReq 8
-
-typedef struct _LbxNewClient {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxNewClient */
- CARD16 length B16;
- CARD32 client B32; /* new client */
-} xLbxNewClientReq;
-#define sz_xLbxNewClientReq 8
-
-typedef struct _LbxCloseClient {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxCloseClient */
- CARD16 length B16;
- CARD32 client B32; /* new client */
-} xLbxCloseClientReq;
-#define sz_xLbxCloseClientReq 8
-
-typedef struct _LbxModifySequence {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxModifySequence */
- CARD16 length B16;
- CARD32 adjust B32;
-} xLbxModifySequenceReq;
-#define sz_xLbxModifySequenceReq 8
-
-typedef struct _LbxAllowMotion {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxAllowMotion */
- CARD16 length B16;
- CARD32 num B32;
-} xLbxAllowMotionReq;
-#define sz_xLbxAllowMotionReq 8
-
-typedef struct {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGrabCmap */
- CARD16 length B16;
- Colormap cmap B32;
-} xLbxGrabCmapReq;
-#define sz_xLbxGrabCmapReq 8
-
-#define LBX_SMART_GRAB 0x80
-#define LBX_AUTO_RELEASE 0x40
-#define LBX_3CHANNELS 0x20
-#define LBX_2BYTE_PIXELS 0x10
-#define LBX_RGB_BITS_MASK 0x0f
-
-#define LBX_LIST_END 0
-#define LBX_PIXEL_PRIVATE 1
-#define LBX_PIXEL_SHARED 2
-#define LBX_PIXEL_RANGE_PRIVATE 3
-#define LBX_PIXEL_RANGE_SHARED 4
-#define LBX_NEXT_CHANNEL 5
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 flags;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad0 B16;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B16;
-} xLbxGrabCmapReply;
-#define sz_xLbxGrabCmapReply 32
-#define sz_xLbxGrabCmapReplyHdr 8
-
-
-typedef struct {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxReleaseCmap */
- CARD16 length B16;
- Colormap cmap B32;
-} xLbxReleaseCmapReq;
-#define sz_xLbxReleaseCmapReq 8
-
-typedef struct {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxAllocColor */
- CARD16 length B16;
- Colormap cmap B32;
- CARD32 pixel B32;
- CARD16 red B16, green B16, blue B16;
- CARD16 pad B16;
-} xLbxAllocColorReq;
-#define sz_xLbxAllocColorReq 20
-
-typedef struct _LbxIncrementPixel {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxIncrementPixel */
- CARD16 length B16;
- CARD32 cmap B32;
- CARD32 pixel B32;
-} xLbxIncrementPixelReq;
-#define sz_xLbxIncrementPixelReq 12
-
-typedef struct _LbxDelta {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxDelta */
- CARD16 length B16;
- CARD8 diffs; /* number of diffs */
- CARD8 cindex; /* cache index */
- /* list of diffs follows */
-} xLbxDeltaReq;
-#define sz_xLbxDeltaReq 6
-
-typedef struct _LbxGetModifierMapping {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGetModifierMapping */
- CARD16 length B16;
-} xLbxGetModifierMappingReq;
-#define sz_xLbxGetModifierMappingReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 keyspermod;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 tag B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxGetModifierMappingReply;
-#define sz_xLbxGetModifierMappingReply 32
-
-typedef struct _LbxGetKeyboardMapping {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGetKeyboardMapping */
- CARD16 length B16;
- KeyCode firstKeyCode;
- CARD8 count;
- CARD16 pad1 B16;
-} xLbxGetKeyboardMappingReq;
-#define sz_xLbxGetKeyboardMappingReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 keysperkeycode;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 tag B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxGetKeyboardMappingReply;
-#define sz_xLbxGetKeyboardMappingReply 32
-
-typedef struct _LbxQueryFont {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxQueryFont */
- CARD16 length B16;
- CARD32 fid B32;
-} xLbxQueryFontReq;
-#define sz_xLbxQueryFontReq 8
-
-typedef struct _LbxInternAtoms {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxInternAtoms */
- CARD16 length B16;
- CARD16 num B16;
-} xLbxInternAtomsReq;
-#define sz_xLbxInternAtomsReq 6
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 atomsStart B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxInternAtomsReply;
-#define sz_xLbxInternAtomsReply 32
-#define sz_xLbxInternAtomsReplyHdr 8
-
-
-typedef struct _LbxGetWinAttrAndGeom {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGetWinAttrAndGeom */
- CARD16 length B16;
- CARD32 id B32; /* window id */
-} xLbxGetWinAttrAndGeomReq;
-#define sz_xLbxGetWinAttrAndGeomReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 backingStore;
- CARD16 sequenceNumber B16;
- CARD32 length B32; /* NOT 0; this is an extra-large reply */
- VisualID visualID B32;
-#if defined(__cplusplus) || defined(c_plusplus)
- CARD16 c_class B16;
-#else
- CARD16 class B16;
-#endif
- CARD8 bitGravity;
- CARD8 winGravity;
- CARD32 backingBitPlanes B32;
- CARD32 backingPixel B32;
- BOOL saveUnder;
- BOOL mapInstalled;
- CARD8 mapState;
- BOOL override;
- Colormap colormap B32;
- CARD32 allEventMasks B32;
- CARD32 yourEventMask B32;
- CARD16 doNotPropagateMask B16;
- CARD16 pad1 B16;
- Window root B32;
- INT16 x B16, y B16;
- CARD16 width B16, height B16;
- CARD16 borderWidth B16;
- CARD8 depth;
- CARD8 pad2;
-} xLbxGetWinAttrAndGeomReply;
-#define sz_xLbxGetWinAttrAndGeomReply 60
-
-
-typedef struct {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxSync */
- CARD16 length B16;
-} xLbxSyncReq;
-#define sz_xLbxSyncReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xLbxSyncReply;
-#define sz_xLbxSyncReply 32
-
-
-/* an LBX squished charinfo packs the data in a CARD32 as follows */
-#define LBX_WIDTH_SHIFT 26
-#define LBX_LEFT_SHIFT 20
-#define LBX_RIGHT_SHIFT 13
-#define LBX_ASCENT_SHIFT 7
-#define LBX_DESCENT_SHIFT 0
-
-#define LBX_WIDTH_BITS 6
-#define LBX_LEFT_BITS 6
-#define LBX_RIGHT_BITS 7
-#define LBX_ASCENT_BITS 6
-#define LBX_DESCENT_BITS 7
-
-#define LBX_WIDTH_MASK 0xfc000000
-#define LBX_LEFT_MASK 0x03f00000
-#define LBX_RIGHT_MASK 0x000fe000
-#define LBX_ASCENT_MASK 0x00001f80
-#define LBX_DESCENT_MASK 0x0000007f
-
-#define LBX_MASK_BITS(val, n) ((unsigned int) ((val) & ((1 << (n)) - 1)))
-
-typedef struct {
- CARD32 metrics B32;
-} xLbxCharInfo;
-
-/* note that this is identical to xQueryFontReply except for missing
- * first 2 words
- */
-typedef struct {
- xCharInfo minBounds;
-/* XXX do we need to leave this gunk? */
-#ifndef WORD64
- CARD32 walign1 B32;
-#endif
- xCharInfo maxBounds;
-#ifndef WORD64
- CARD32 walign2 B32;
-#endif
- CARD16 minCharOrByte2 B16, maxCharOrByte2 B16;
- CARD16 defaultChar B16;
- CARD16 nFontProps B16; /* followed by this many xFontProp structures */
- CARD8 drawDirection;
- CARD8 minByte1, maxByte1;
- BOOL allCharsExist;
- INT16 fontAscent B16, fontDescent B16;
- CARD32 nCharInfos B32; /* followed by this many xLbxCharInfo structures */
-} xLbxFontInfo;
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 compression;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 tag B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- /* X_QueryFont sticks much of the data in the base reply packet,
- * but we hope that it won't be needed, (and it won't fit in 32 bytes
- * with the tag anyways)
- *
- * if any additional data is needed, its sent in a xLbxFontInfo
- */
-} xLbxQueryFontReply;
-#define sz_xLbxQueryFontReply 32
-
-typedef struct _LbxChangeProperty {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxChangeProperty */
- CARD16 length B16;
- Window window B32;
- Atom property B32;
- Atom type B32;
- CARD8 format;
- CARD8 mode;
- BYTE pad[2];
- CARD32 nUnits B32;
-} xLbxChangePropertyReq;
-#define sz_xLbxChangePropertyReq 24
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 tag B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxChangePropertyReply;
-#define sz_xLbxChangePropertyReply 32
-
-typedef struct _LbxGetProperty {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGetProperty */
- CARD16 length B16;
- Window window B32;
- Atom property B32;
- Atom type B32;
- CARD8 delete;
- BYTE pad[3];
- CARD32 longOffset B32;
- CARD32 longLength B32;
-} xLbxGetPropertyReq;
-#define sz_xLbxGetPropertyReq 28
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 format;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Atom propertyType B32;
- CARD32 bytesAfter B32;
- CARD32 nItems B32;
- CARD32 tag B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
-} xLbxGetPropertyReply;
-#define sz_xLbxGetPropertyReply 32
-
-typedef struct _LbxTagData {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxTagData */
- CARD16 length B16;
- XID tag B32;
- CARD32 real_length B32;
- /* data */
-} xLbxTagDataReq;
-#define sz_xLbxTagDataReq 12
-
-typedef struct _LbxInvalidateTag {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxInvalidateTag */
- CARD16 length B16;
- CARD32 tag B32;
-} xLbxInvalidateTagReq;
-#define sz_xLbxInvalidateTagReq 8
-
-typedef struct _LbxPutImage {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxPutImage */
- CARD16 length B16;
- CARD8 compressionMethod;
- CARD8 cacheEnts;
- CARD8 bitPacked;
- /* rest is variable */
-} xLbxPutImageReq;
-#define sz_xLbxPutImageReq 7
-
-typedef struct {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGetImage */
- CARD16 length B16;
- Drawable drawable B32;
- INT16 x B16, y B16;
- CARD16 width B16, height B16;
- CARD32 planeMask B32;
- CARD8 format;
- CARD8 pad1;
- CARD16 pad2 B16;
-} xLbxGetImageReq;
-
-#define sz_xLbxGetImageReq 24
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 depth;
- CARD16 sequenceNumber B16;
- CARD32 lbxLength B32;
- CARD32 xLength B32;
- VisualID visual B32;
- CARD8 compressionMethod;
- CARD8 pad1;
- CARD16 pad2 B16;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xLbxGetImageReply;
-
-#define sz_xLbxGetImageReply 32
-
-/* Following used for LbxPolyPoint, LbxPolyLine, LbxPolySegment,
- LbxPolyRectangle, LbxPolyArc, LbxPolyFillRectangle and LbxPolyFillArc */
-
-#define GFX_CACHE_SIZE 15
-
-#define GFXdCacheEnt(e) ((e) & 0xf)
-#define GFXgCacheEnt(e) (((e) >> 4) & 0xf)
-#define GFXCacheEnts(d,g) (((d) & 0xf) | (((g) & 0xf) << 4))
-
-#define GFXCacheNone 0xf
-
-typedef struct _LbxPolyPoint {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD8 cacheEnts;
- CARD8 padBytes;
-} xLbxPolyPointReq;
-
-#define sz_xLbxPolyPointReq 6
-
-typedef xLbxPolyPointReq xLbxPolyLineReq;
-typedef xLbxPolyPointReq xLbxPolySegmentReq;
-typedef xLbxPolyPointReq xLbxPolyRectangleReq;
-typedef xLbxPolyPointReq xLbxPolyArcReq;
-typedef xLbxPolyPointReq xLbxPolyFillRectangleReq;
-typedef xLbxPolyPointReq xLbxPolyFillArcReq;
-
-#define sz_xLbxPolyLineReq sz_xLbxPolyPointReq
-#define sz_xLbxPolySegmentReq sz_xLbxPolyPointReq
-#define sz_xLbxPolyRectangleReq sz_xLbxPolyPointReq
-#define sz_xLbxPolyArcReq sz_xLbxPolyPointReq
-#define sz_xLbxPolyFillRectangleReq sz_xLbxPolyPointReq
-#define sz_xLbxPolyFillArc sz_xLbxPolyPointReq
-
-typedef struct _LbxFillPoly {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD8 cacheEnts;
- BYTE shape;
- CARD8 padBytes;
-} xLbxFillPolyReq;
-#define sz_xLbxFillPolyReq 7
-
-typedef struct _LbxCopyArea {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD8 srcCache; /* source drawable */
- CARD8 cacheEnts; /* dest drawable and gc */
- /* followed by encoded src x, src y, dst x, dst y, width, height */
-} xLbxCopyAreaReq;
-
-#define sz_xLbxCopyAreaReq 6
-
-typedef struct _LbxCopyPlane {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD32 bitPlane B32;
- CARD8 srcCache; /* source drawable */
- CARD8 cacheEnts; /* dest drawable and gc */
- /* followed by encoded src x, src y, dst x, dst y, width, height */
-} xLbxCopyPlaneReq;
-
-#define sz_xLbxCopyPlaneReq 10
-
-typedef struct _LbxPolyText {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD8 cacheEnts;
- /* followed by encoded src x, src y coordinates and text elts */
-} xLbxPolyTextReq;
-
-#define sz_xLbxPolyTextReq 5
-
-typedef xLbxPolyTextReq xLbxPolyText8Req;
-typedef xLbxPolyTextReq xLbxPolyText16Req;
-
-#define sz_xLbxPolyTextReq 5
-#define sz_xLbxPolyText8Req 5
-#define sz_xLbxPolyText16Req 5
-
-typedef struct _LbxImageText {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD8 cacheEnts;
- CARD8 nChars;
- /* followed by encoded src x, src y coordinates and string */
-} xLbxImageTextReq;
-
-typedef xLbxImageTextReq xLbxImageText8Req;
-typedef xLbxImageTextReq xLbxImageText16Req;
-
-#define sz_xLbxImageTextReq 6
-#define sz_xLbxImageText8Req 6
-#define sz_xLbxImageText16Req 6
-
-typedef struct {
- CARD8 offset;
- CARD8 diff;
-} xLbxDiffItem;
-#define sz_xLbxDiffItem 2
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 nOpts;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 optDataStart B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxStartReply;
-#define sz_xLbxStartReply 32
-#define sz_xLbxStartReplyHdr 8
-
-typedef struct _LbxQueryExtension {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxQueryExtension */
- CARD16 length B16;
- CARD32 nbytes B32;
-} xLbxQueryExtensionReq;
-#define sz_xLbxQueryExtensionReq 8
-
-typedef struct _LbxQueryExtensionReply {
- BYTE type; /* X_Reply */
- CARD8 numReqs;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- BOOL present;
- CARD8 major_opcode;
- CARD8 first_event;
- CARD8 first_error;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-
- /* reply & event generating requests */
-} xLbxQueryExtensionReply;
-#define sz_xLbxQueryExtensionReply 32
-
-
-typedef struct _LbxBeginLargeRequest {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxBeginLargeRequest */
- CARD16 length B16;
- CARD32 largeReqLength B32;
-} xLbxBeginLargeRequestReq;
-#define sz_BeginLargeRequestReq 8
-
-typedef struct _LbxLargeRequestData {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxLargeRequestData */
- CARD16 length B16;
- /* followed by LISTofCARD8 data */
-} xLbxLargeRequestDataReq;
-#define sz_LargeRequestDataReq 4
-
-typedef struct _LbxEndLargeRequest {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxEndLargeRequest */
- CARD16 length B16;
-} xLbxEndLargeRequestReq;
-#define sz_EndLargeRequestReq 4
-
-
-
-typedef struct _LbxSwitchEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxSwitchEvent */
- CARD16 pad B16;
- CARD32 client B32;
-} xLbxSwitchEvent;
-#define sz_xLbxSwitchEvent 8
-
-typedef struct _LbxCloseEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxCloseEvent */
- CARD16 sequenceNumber B16;
- CARD32 client B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xLbxCloseEvent;
-#define sz_xLbxCloseEvent 32
-
-typedef struct _LbxInvalidateTagEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxInvalidateTagEvent */
- CARD16 sequenceNumber B16;
- CARD32 tag B32;
- CARD32 tagType B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xLbxInvalidateTagEvent;
-#define sz_xLbxInvalidateTagEvent 32
-
-typedef struct _LbxSendTagDataEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxSendTagDataEvent */
- CARD16 sequenceNumber B16;
- CARD32 tag B32;
- CARD32 tagType B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xLbxSendTagDataEvent;
-#define sz_xLbxSendTagDataEvent 32
-
-typedef struct _LbxListenToOneEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxListenToOneEvent */
- CARD16 sequenceNumber B16;
- CARD32 client B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xLbxListenToOneEvent;
-#define sz_xLbxListenToOneEvent 32
-
-typedef struct _LbxListenToAllEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxListenToAllEvent */
- CARD16 sequenceNumber B16;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
-} xLbxListenToAllEvent;
-#define sz_xLbxListenToOneEvent 32
-
-typedef struct _LbxReleaseCmapEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxReleaseCmapEvent */
- CARD16 sequenceNumber B16;
- Colormap colormap B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xLbxReleaseCmapEvent;
-#define sz_xLbxReleaseCmapEvent 32
-
-
-typedef struct _LbxFreeCellsEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxFreeCellsEvent */
- CARD16 sequenceNumber B16;
- Colormap colormap B32;
- CARD32 pixelStart B32;
- CARD32 pixelEnd B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxFreeCellsEvent;
-#define sz_xLbxFreeCellsEvent 32
-
-
-/*
- * squished X event sizes. If these change, be sure to update lbxquish.c
- * and unsquish.c appropriately
- *
- * lbxsz_* is the padded squished length
- * lbxupsz_* is the unpadded squished length
- */
-
-#define lbxsz_KeyButtonEvent 32
-#define lbxupsz_KeyButtonEvent 31
-
-#define lbxsz_EnterLeaveEvent 32
-#define lbxupsz_EnterLeaveEvent 32
-
-#define lbxsz_FocusEvent 12
-#define lbxupsz_FocusEvent 9
-
-#define lbxsz_KeymapEvent 32
-#define lbxupsz_KeymapEvent 32
-
-#define lbxsz_ExposeEvent 20
-#define lbxupsz_ExposeEvent 18
-
-#define lbxsz_GfxExposeEvent 24
-#define lbxupsz_GfxExposeEvent 21
-
-#define lbxsz_NoExposeEvent 12
-#define lbxupsz_NoExposeEvent 11
-
-#define lbxsz_VisibilityEvent 12
-#define lbxupsz_VisibilityEvent 9
-
-#define lbxsz_CreateNotifyEvent 24
-#define lbxupsz_CreateNotifyEvent 23
-
-#define lbxsz_DestroyNotifyEvent 12
-#define lbxupsz_DestroyNotifyEvent 12
-
-#define lbxsz_UnmapNotifyEvent 16
-#define lbxupsz_UnmapNotifyEvent 13
-
-#define lbxsz_MapNotifyEvent 16
-#define lbxupsz_MapNotifyEvent 13
-
-#define lbxsz_MapRequestEvent 12
-#define lbxupsz_MapRequestEvent 12
-
-#define lbxsz_ReparentEvent 24
-#define lbxupsz_ReparentEvent 21
-
-#define lbxsz_ConfigureNotifyEvent 28
-#define lbxupsz_ConfigureNotifyEvent 27
-
-#define lbxsz_ConfigureRequestEvent 28
-#define lbxupsz_ConfigureRequestEvent 28
-
-#define lbxsz_GravityEvent 16
-#define lbxupsz_GravityEvent 16
-
-#define lbxsz_ResizeRequestEvent 12
-#define lbxupsz_ResizeRequestEvent 12
-
-#define lbxsz_CirculateEvent 20
-#define lbxupsz_CirculateEvent 17
-
-#define lbxsz_PropertyEvent 20
-#define lbxupsz_PropertyEvent 17
-
-#define lbxsz_SelectionClearEvent 16
-#define lbxupsz_SelectionClearEvent 16
-
-#define lbxsz_SelectionRequestEvent 28
-#define lbxupsz_SelectionRequestEvent 28
-
-#define lbxsz_SelectionNotifyEvent 24
-#define lbxupsz_SelectionNotifyEvent 24
-
-#define lbxsz_ColormapEvent 16
-#define lbxupsz_ColormapEvent 14
-
-#define lbxsz_MappingNotifyEvent 8
-#define lbxupsz_MappingNotifyEvent 7
-
-#define lbxsz_ClientMessageEvent 32
-#define lbxupsz_ClientMessageEvent 32
-
-#define lbxsz_UnknownEvent 32
-
-#ifdef DEBUG
-
-#define DBG_SWITCH 0x00000001
-#define DBG_CLOSE 0x00000002
-#define DBG_IO 0x00000004
-#define DBG_READ_REQ 0x00000008
-#define DBG_LEN 0x00000010
-#define DBG_BLOCK 0x00000020
-#define DBG_CLIENT 0x00000040
-#define DBG_DELTA 0x00000080
-#endif
-/*
- * Cancel the previous redefinition of the basic types, thus restoring their
- * X.h definitions.
- */
-
-#undef XID
-#undef Atom
-#undef Colormap
-#undef Drawable
-#undef VisualID
-#undef Window
-
-#endif /* _LBXPROTO_H_ */
+/*
+ * Copyright 1992 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 NCD. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. NCD. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
+ * 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.
+ *
+ */
+
+#ifndef _LBXPROTO_H_
+#define _LBXPROTO_H_
+
+#include <X11/extensions/lbx.h>
+/*
+ * NOTE: any changes or additions to the opcodes needs to be reflected
+ * in the lbxCacheable array in Xserver/lbx/lbxmain.c
+ */
+
+#define X_LbxQueryVersion 0
+#define X_LbxStartProxy 1
+#define X_LbxStopProxy 2
+#define X_LbxSwitch 3
+#define X_LbxNewClient 4
+#define X_LbxCloseClient 5
+#define X_LbxModifySequence 6
+#define X_LbxAllowMotion 7
+#define X_LbxIncrementPixel 8
+#define X_LbxDelta 9
+#define X_LbxGetModifierMapping 10
+#define X_LbxInvalidateTag 12
+#define X_LbxPolyPoint 13
+#define X_LbxPolyLine 14
+#define X_LbxPolySegment 15
+#define X_LbxPolyRectangle 16
+#define X_LbxPolyArc 17
+#define X_LbxFillPoly 18
+#define X_LbxPolyFillRectangle 19
+#define X_LbxPolyFillArc 20
+#define X_LbxGetKeyboardMapping 21
+#define X_LbxQueryFont 22
+#define X_LbxChangeProperty 23
+#define X_LbxGetProperty 24
+#define X_LbxTagData 25
+
+#define X_LbxCopyArea 26
+#define X_LbxCopyPlane 27
+#define X_LbxPolyText8 28
+#define X_LbxPolyText16 29
+#define X_LbxImageText8 30
+#define X_LbxImageText16 31
+
+#define X_LbxQueryExtension 32
+#define X_LbxPutImage 33
+#define X_LbxGetImage 34
+
+#define X_LbxBeginLargeRequest 35
+#define X_LbxLargeRequestData 36
+#define X_LbxEndLargeRequest 37
+
+#define X_LbxInternAtoms 38
+#define X_LbxGetWinAttrAndGeom 39
+
+#define X_LbxGrabCmap 40
+#define X_LbxReleaseCmap 41
+#define X_LbxAllocColor 42
+
+#define X_LbxSync 43
+
+/*
+ * Redefine some basic types used by structures defined herein. This removes
+ * any possibility on 64-bit architectures of one entity viewing communicated
+ * data as 32-bit quantities and another entity viewing the same data as 64-bit
+ * quantities.
+ */
+#define XID CARD32
+#define Atom CARD32
+#define Colormap CARD32
+#define Drawable CARD32
+#define VisualID CARD32
+#define Window CARD32
+
+typedef struct {
+ BOOL success; /* TRUE */
+ BOOL changeType;
+ CARD16 majorVersion B16,
+ minorVersion B16;
+ CARD16 length B16; /* 1/4 additional bytes in setup info */
+ CARD32 tag B32;
+} xLbxConnSetupPrefix;
+
+typedef struct _LbxQueryVersion {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxQueryVersion */
+ CARD16 length B16;
+} xLbxQueryVersionReq;
+#define sz_xLbxQueryVersionReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16; /* major version of LBX protocol */
+ CARD16 minorVersion B16; /* minor version of LBX protocol */
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxQueryVersionReply;
+#define sz_xLbxQueryVersionReply 32
+
+typedef struct _LbxStartProxy {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxStartProxy */
+ CARD16 length B16;
+} xLbxStartProxyReq;
+#define sz_xLbxStartProxyReq 4
+
+typedef struct _LbxStopProxy {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxStopProxy */
+ CARD16 length B16;
+} xLbxStopProxyReq;
+#define sz_xLbxStopProxyReq 4
+
+typedef struct _LbxSwitch {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxSwitch */
+ CARD16 length B16;
+ CARD32 client B32; /* new client */
+} xLbxSwitchReq;
+#define sz_xLbxSwitchReq 8
+
+typedef struct _LbxNewClient {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxNewClient */
+ CARD16 length B16;
+ CARD32 client B32; /* new client */
+} xLbxNewClientReq;
+#define sz_xLbxNewClientReq 8
+
+typedef struct _LbxCloseClient {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxCloseClient */
+ CARD16 length B16;
+ CARD32 client B32; /* new client */
+} xLbxCloseClientReq;
+#define sz_xLbxCloseClientReq 8
+
+typedef struct _LbxModifySequence {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxModifySequence */
+ CARD16 length B16;
+ CARD32 adjust B32;
+} xLbxModifySequenceReq;
+#define sz_xLbxModifySequenceReq 8
+
+typedef struct _LbxAllowMotion {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxAllowMotion */
+ CARD16 length B16;
+ CARD32 num B32;
+} xLbxAllowMotionReq;
+#define sz_xLbxAllowMotionReq 8
+
+typedef struct {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGrabCmap */
+ CARD16 length B16;
+ Colormap cmap B32;
+} xLbxGrabCmapReq;
+#define sz_xLbxGrabCmapReq 8
+
+#define LBX_SMART_GRAB 0x80
+#define LBX_AUTO_RELEASE 0x40
+#define LBX_3CHANNELS 0x20
+#define LBX_2BYTE_PIXELS 0x10
+#define LBX_RGB_BITS_MASK 0x0f
+
+#define LBX_LIST_END 0
+#define LBX_PIXEL_PRIVATE 1
+#define LBX_PIXEL_SHARED 2
+#define LBX_PIXEL_RANGE_PRIVATE 3
+#define LBX_PIXEL_RANGE_SHARED 4
+#define LBX_NEXT_CHANNEL 5
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 flags;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 pad0 B16;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B16;
+} xLbxGrabCmapReply;
+#define sz_xLbxGrabCmapReply 32
+#define sz_xLbxGrabCmapReplyHdr 8
+
+
+typedef struct {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxReleaseCmap */
+ CARD16 length B16;
+ Colormap cmap B32;
+} xLbxReleaseCmapReq;
+#define sz_xLbxReleaseCmapReq 8
+
+typedef struct {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxAllocColor */
+ CARD16 length B16;
+ Colormap cmap B32;
+ CARD32 pixel B32;
+ CARD16 red B16, green B16, blue B16;
+ CARD16 pad B16;
+} xLbxAllocColorReq;
+#define sz_xLbxAllocColorReq 20
+
+typedef struct _LbxIncrementPixel {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxIncrementPixel */
+ CARD16 length B16;
+ CARD32 cmap B32;
+ CARD32 pixel B32;
+} xLbxIncrementPixelReq;
+#define sz_xLbxIncrementPixelReq 12
+
+typedef struct _LbxDelta {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxDelta */
+ CARD16 length B16;
+ CARD8 diffs; /* number of diffs */
+ CARD8 cindex; /* cache index */
+ /* list of diffs follows */
+} xLbxDeltaReq;
+#define sz_xLbxDeltaReq 6
+
+typedef struct _LbxGetModifierMapping {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGetModifierMapping */
+ CARD16 length B16;
+} xLbxGetModifierMappingReq;
+#define sz_xLbxGetModifierMappingReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 keyspermod;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 tag B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxGetModifierMappingReply;
+#define sz_xLbxGetModifierMappingReply 32
+
+typedef struct _LbxGetKeyboardMapping {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGetKeyboardMapping */
+ CARD16 length B16;
+ KeyCode firstKeyCode;
+ CARD8 count;
+ CARD16 pad1 B16;
+} xLbxGetKeyboardMappingReq;
+#define sz_xLbxGetKeyboardMappingReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 keysperkeycode;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 tag B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxGetKeyboardMappingReply;
+#define sz_xLbxGetKeyboardMappingReply 32
+
+typedef struct _LbxQueryFont {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxQueryFont */
+ CARD16 length B16;
+ CARD32 fid B32;
+} xLbxQueryFontReq;
+#define sz_xLbxQueryFontReq 8
+
+typedef struct _LbxInternAtoms {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxInternAtoms */
+ CARD16 length B16;
+ CARD16 num B16;
+} xLbxInternAtomsReq;
+#define sz_xLbxInternAtomsReq 6
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 atomsStart B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxInternAtomsReply;
+#define sz_xLbxInternAtomsReply 32
+#define sz_xLbxInternAtomsReplyHdr 8
+
+
+typedef struct _LbxGetWinAttrAndGeom {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGetWinAttrAndGeom */
+ CARD16 length B16;
+ CARD32 id B32; /* window id */
+} xLbxGetWinAttrAndGeomReq;
+#define sz_xLbxGetWinAttrAndGeomReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 backingStore;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32; /* NOT 0; this is an extra-large reply */
+ VisualID visualID B32;
+#if defined(__cplusplus) || defined(c_plusplus)
+ CARD16 c_class B16;
+#else
+ CARD16 class B16;
+#endif
+ CARD8 bitGravity;
+ CARD8 winGravity;
+ CARD32 backingBitPlanes B32;
+ CARD32 backingPixel B32;
+ BOOL saveUnder;
+ BOOL mapInstalled;
+ CARD8 mapState;
+ BOOL override;
+ Colormap colormap B32;
+ CARD32 allEventMasks B32;
+ CARD32 yourEventMask B32;
+ CARD16 doNotPropagateMask B16;
+ CARD16 pad1 B16;
+ Window root B32;
+ INT16 x B16, y B16;
+ CARD16 width B16, height B16;
+ CARD16 borderWidth B16;
+ CARD8 depth;
+ CARD8 pad2;
+} xLbxGetWinAttrAndGeomReply;
+#define sz_xLbxGetWinAttrAndGeomReply 60
+
+
+typedef struct {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxSync */
+ CARD16 length B16;
+} xLbxSyncReq;
+#define sz_xLbxSyncReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xLbxSyncReply;
+#define sz_xLbxSyncReply 32
+
+
+/* an LBX squished charinfo packs the data in a CARD32 as follows */
+#define LBX_WIDTH_SHIFT 26
+#define LBX_LEFT_SHIFT 20
+#define LBX_RIGHT_SHIFT 13
+#define LBX_ASCENT_SHIFT 7
+#define LBX_DESCENT_SHIFT 0
+
+#define LBX_WIDTH_BITS 6
+#define LBX_LEFT_BITS 6
+#define LBX_RIGHT_BITS 7
+#define LBX_ASCENT_BITS 6
+#define LBX_DESCENT_BITS 7
+
+#define LBX_WIDTH_MASK 0xfc000000
+#define LBX_LEFT_MASK 0x03f00000
+#define LBX_RIGHT_MASK 0x000fe000
+#define LBX_ASCENT_MASK 0x00001f80
+#define LBX_DESCENT_MASK 0x0000007f
+
+#define LBX_MASK_BITS(val, n) ((unsigned int) ((val) & ((1 << (n)) - 1)))
+
+typedef struct {
+ CARD32 metrics B32;
+} xLbxCharInfo;
+
+/* note that this is identical to xQueryFontReply except for missing
+ * first 2 words
+ */
+typedef struct {
+ xCharInfo minBounds;
+/* XXX do we need to leave this gunk? */
+#ifndef WORD64
+ CARD32 walign1 B32;
+#endif
+ xCharInfo maxBounds;
+#ifndef WORD64
+ CARD32 walign2 B32;
+#endif
+ CARD16 minCharOrByte2 B16, maxCharOrByte2 B16;
+ CARD16 defaultChar B16;
+ CARD16 nFontProps B16; /* followed by this many xFontProp structures */
+ CARD8 drawDirection;
+ CARD8 minByte1, maxByte1;
+ BOOL allCharsExist;
+ INT16 fontAscent B16, fontDescent B16;
+ CARD32 nCharInfos B32; /* followed by this many xLbxCharInfo structures */
+} xLbxFontInfo;
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 compression;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 tag B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ /* X_QueryFont sticks much of the data in the base reply packet,
+ * but we hope that it won't be needed, (and it won't fit in 32 bytes
+ * with the tag anyways)
+ *
+ * if any additional data is needed, its sent in a xLbxFontInfo
+ */
+} xLbxQueryFontReply;
+#define sz_xLbxQueryFontReply 32
+
+typedef struct _LbxChangeProperty {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxChangeProperty */
+ CARD16 length B16;
+ Window window B32;
+ Atom property B32;
+ Atom type B32;
+ CARD8 format;
+ CARD8 mode;
+ BYTE pad[2];
+ CARD32 nUnits B32;
+} xLbxChangePropertyReq;
+#define sz_xLbxChangePropertyReq 24
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 tag B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxChangePropertyReply;
+#define sz_xLbxChangePropertyReply 32
+
+typedef struct _LbxGetProperty {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGetProperty */
+ CARD16 length B16;
+ Window window B32;
+ Atom property B32;
+ Atom type B32;
+ CARD8 delete;
+ BYTE pad[3];
+ CARD32 longOffset B32;
+ CARD32 longLength B32;
+} xLbxGetPropertyReq;
+#define sz_xLbxGetPropertyReq 28
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 format;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Atom propertyType B32;
+ CARD32 bytesAfter B32;
+ CARD32 nItems B32;
+ CARD32 tag B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+} xLbxGetPropertyReply;
+#define sz_xLbxGetPropertyReply 32
+
+typedef struct _LbxTagData {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxTagData */
+ CARD16 length B16;
+ XID tag B32;
+ CARD32 real_length B32;
+ /* data */
+} xLbxTagDataReq;
+#define sz_xLbxTagDataReq 12
+
+typedef struct _LbxInvalidateTag {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxInvalidateTag */
+ CARD16 length B16;
+ CARD32 tag B32;
+} xLbxInvalidateTagReq;
+#define sz_xLbxInvalidateTagReq 8
+
+typedef struct _LbxPutImage {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxPutImage */
+ CARD16 length B16;
+ CARD8 compressionMethod;
+ CARD8 cacheEnts;
+ CARD8 bitPacked;
+ /* rest is variable */
+} xLbxPutImageReq;
+#define sz_xLbxPutImageReq 7
+
+typedef struct {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGetImage */
+ CARD16 length B16;
+ Drawable drawable B32;
+ INT16 x B16, y B16;
+ CARD16 width B16, height B16;
+ CARD32 planeMask B32;
+ CARD8 format;
+ CARD8 pad1;
+ CARD16 pad2 B16;
+} xLbxGetImageReq;
+
+#define sz_xLbxGetImageReq 24
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 depth;
+ CARD16 sequenceNumber B16;
+ CARD32 lbxLength B32;
+ CARD32 xLength B32;
+ VisualID visual B32;
+ CARD8 compressionMethod;
+ CARD8 pad1;
+ CARD16 pad2 B16;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xLbxGetImageReply;
+
+#define sz_xLbxGetImageReply 32
+
+/* Following used for LbxPolyPoint, LbxPolyLine, LbxPolySegment,
+ LbxPolyRectangle, LbxPolyArc, LbxPolyFillRectangle and LbxPolyFillArc */
+
+#define GFX_CACHE_SIZE 15
+
+#define GFXdCacheEnt(e) ((e) & 0xf)
+#define GFXgCacheEnt(e) (((e) >> 4) & 0xf)
+#define GFXCacheEnts(d,g) (((d) & 0xf) | (((g) & 0xf) << 4))
+
+#define GFXCacheNone 0xf
+
+typedef struct _LbxPolyPoint {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD8 cacheEnts;
+ CARD8 padBytes;
+} xLbxPolyPointReq;
+
+#define sz_xLbxPolyPointReq 6
+
+typedef xLbxPolyPointReq xLbxPolyLineReq;
+typedef xLbxPolyPointReq xLbxPolySegmentReq;
+typedef xLbxPolyPointReq xLbxPolyRectangleReq;
+typedef xLbxPolyPointReq xLbxPolyArcReq;
+typedef xLbxPolyPointReq xLbxPolyFillRectangleReq;
+typedef xLbxPolyPointReq xLbxPolyFillArcReq;
+
+#define sz_xLbxPolyLineReq sz_xLbxPolyPointReq
+#define sz_xLbxPolySegmentReq sz_xLbxPolyPointReq
+#define sz_xLbxPolyRectangleReq sz_xLbxPolyPointReq
+#define sz_xLbxPolyArcReq sz_xLbxPolyPointReq
+#define sz_xLbxPolyFillRectangleReq sz_xLbxPolyPointReq
+#define sz_xLbxPolyFillArc sz_xLbxPolyPointReq
+
+typedef struct _LbxFillPoly {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD8 cacheEnts;
+ BYTE shape;
+ CARD8 padBytes;
+} xLbxFillPolyReq;
+#define sz_xLbxFillPolyReq 7
+
+typedef struct _LbxCopyArea {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD8 srcCache; /* source drawable */
+ CARD8 cacheEnts; /* dest drawable and gc */
+ /* followed by encoded src x, src y, dst x, dst y, width, height */
+} xLbxCopyAreaReq;
+
+#define sz_xLbxCopyAreaReq 6
+
+typedef struct _LbxCopyPlane {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD32 bitPlane B32;
+ CARD8 srcCache; /* source drawable */
+ CARD8 cacheEnts; /* dest drawable and gc */
+ /* followed by encoded src x, src y, dst x, dst y, width, height */
+} xLbxCopyPlaneReq;
+
+#define sz_xLbxCopyPlaneReq 10
+
+typedef struct _LbxPolyText {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD8 cacheEnts;
+ /* followed by encoded src x, src y coordinates and text elts */
+} xLbxPolyTextReq;
+
+#define sz_xLbxPolyTextReq 5
+
+typedef xLbxPolyTextReq xLbxPolyText8Req;
+typedef xLbxPolyTextReq xLbxPolyText16Req;
+
+#define sz_xLbxPolyTextReq 5
+#define sz_xLbxPolyText8Req 5
+#define sz_xLbxPolyText16Req 5
+
+typedef struct _LbxImageText {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD8 cacheEnts;
+ CARD8 nChars;
+ /* followed by encoded src x, src y coordinates and string */
+} xLbxImageTextReq;
+
+typedef xLbxImageTextReq xLbxImageText8Req;
+typedef xLbxImageTextReq xLbxImageText16Req;
+
+#define sz_xLbxImageTextReq 6
+#define sz_xLbxImageText8Req 6
+#define sz_xLbxImageText16Req 6
+
+typedef struct {
+ CARD8 offset;
+ CARD8 diff;
+} xLbxDiffItem;
+#define sz_xLbxDiffItem 2
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 nOpts;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 optDataStart B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxStartReply;
+#define sz_xLbxStartReply 32
+#define sz_xLbxStartReplyHdr 8
+
+typedef struct _LbxQueryExtension {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxQueryExtension */
+ CARD16 length B16;
+ CARD32 nbytes B32;
+} xLbxQueryExtensionReq;
+#define sz_xLbxQueryExtensionReq 8
+
+typedef struct _LbxQueryExtensionReply {
+ BYTE type; /* X_Reply */
+ CARD8 numReqs;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ BOOL present;
+ CARD8 major_opcode;
+ CARD8 first_event;
+ CARD8 first_error;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+
+ /* reply & event generating requests */
+} xLbxQueryExtensionReply;
+#define sz_xLbxQueryExtensionReply 32
+
+
+typedef struct _LbxBeginLargeRequest {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxBeginLargeRequest */
+ CARD16 length B16;
+ CARD32 largeReqLength B32;
+} xLbxBeginLargeRequestReq;
+#define sz_BeginLargeRequestReq 8
+
+typedef struct _LbxLargeRequestData {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxLargeRequestData */
+ CARD16 length B16;
+ /* followed by LISTofCARD8 data */
+} xLbxLargeRequestDataReq;
+#define sz_LargeRequestDataReq 4
+
+typedef struct _LbxEndLargeRequest {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxEndLargeRequest */
+ CARD16 length B16;
+} xLbxEndLargeRequestReq;
+#define sz_EndLargeRequestReq 4
+
+
+
+typedef struct _LbxSwitchEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxSwitchEvent */
+ CARD16 pad B16;
+ CARD32 client B32;
+} xLbxSwitchEvent;
+#define sz_xLbxSwitchEvent 8
+
+typedef struct _LbxCloseEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxCloseEvent */
+ CARD16 sequenceNumber B16;
+ CARD32 client B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xLbxCloseEvent;
+#define sz_xLbxCloseEvent 32
+
+typedef struct _LbxInvalidateTagEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxInvalidateTagEvent */
+ CARD16 sequenceNumber B16;
+ CARD32 tag B32;
+ CARD32 tagType B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xLbxInvalidateTagEvent;
+#define sz_xLbxInvalidateTagEvent 32
+
+typedef struct _LbxSendTagDataEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxSendTagDataEvent */
+ CARD16 sequenceNumber B16;
+ CARD32 tag B32;
+ CARD32 tagType B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xLbxSendTagDataEvent;
+#define sz_xLbxSendTagDataEvent 32
+
+typedef struct _LbxListenToOneEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxListenToOneEvent */
+ CARD16 sequenceNumber B16;
+ CARD32 client B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xLbxListenToOneEvent;
+#define sz_xLbxListenToOneEvent 32
+
+typedef struct _LbxListenToAllEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxListenToAllEvent */
+ CARD16 sequenceNumber B16;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+} xLbxListenToAllEvent;
+#define sz_xLbxListenToOneEvent 32
+
+typedef struct _LbxReleaseCmapEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxReleaseCmapEvent */
+ CARD16 sequenceNumber B16;
+ Colormap colormap B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xLbxReleaseCmapEvent;
+#define sz_xLbxReleaseCmapEvent 32
+
+
+typedef struct _LbxFreeCellsEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxFreeCellsEvent */
+ CARD16 sequenceNumber B16;
+ Colormap colormap B32;
+ CARD32 pixelStart B32;
+ CARD32 pixelEnd B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxFreeCellsEvent;
+#define sz_xLbxFreeCellsEvent 32
+
+
+/*
+ * squished X event sizes. If these change, be sure to update lbxquish.c
+ * and unsquish.c appropriately
+ *
+ * lbxsz_* is the padded squished length
+ * lbxupsz_* is the unpadded squished length
+ */
+
+#define lbxsz_KeyButtonEvent 32
+#define lbxupsz_KeyButtonEvent 31
+
+#define lbxsz_EnterLeaveEvent 32
+#define lbxupsz_EnterLeaveEvent 32
+
+#define lbxsz_FocusEvent 12
+#define lbxupsz_FocusEvent 9
+
+#define lbxsz_KeymapEvent 32
+#define lbxupsz_KeymapEvent 32
+
+#define lbxsz_ExposeEvent 20
+#define lbxupsz_ExposeEvent 18
+
+#define lbxsz_GfxExposeEvent 24
+#define lbxupsz_GfxExposeEvent 21
+
+#define lbxsz_NoExposeEvent 12
+#define lbxupsz_NoExposeEvent 11
+
+#define lbxsz_VisibilityEvent 12
+#define lbxupsz_VisibilityEvent 9
+
+#define lbxsz_CreateNotifyEvent 24
+#define lbxupsz_CreateNotifyEvent 23
+
+#define lbxsz_DestroyNotifyEvent 12
+#define lbxupsz_DestroyNotifyEvent 12
+
+#define lbxsz_UnmapNotifyEvent 16
+#define lbxupsz_UnmapNotifyEvent 13
+
+#define lbxsz_MapNotifyEvent 16
+#define lbxupsz_MapNotifyEvent 13
+
+#define lbxsz_MapRequestEvent 12
+#define lbxupsz_MapRequestEvent 12
+
+#define lbxsz_ReparentEvent 24
+#define lbxupsz_ReparentEvent 21
+
+#define lbxsz_ConfigureNotifyEvent 28
+#define lbxupsz_ConfigureNotifyEvent 27
+
+#define lbxsz_ConfigureRequestEvent 28
+#define lbxupsz_ConfigureRequestEvent 28
+
+#define lbxsz_GravityEvent 16
+#define lbxupsz_GravityEvent 16
+
+#define lbxsz_ResizeRequestEvent 12
+#define lbxupsz_ResizeRequestEvent 12
+
+#define lbxsz_CirculateEvent 20
+#define lbxupsz_CirculateEvent 17
+
+#define lbxsz_PropertyEvent 20
+#define lbxupsz_PropertyEvent 17
+
+#define lbxsz_SelectionClearEvent 16
+#define lbxupsz_SelectionClearEvent 16
+
+#define lbxsz_SelectionRequestEvent 28
+#define lbxupsz_SelectionRequestEvent 28
+
+#define lbxsz_SelectionNotifyEvent 24
+#define lbxupsz_SelectionNotifyEvent 24
+
+#define lbxsz_ColormapEvent 16
+#define lbxupsz_ColormapEvent 14
+
+#define lbxsz_MappingNotifyEvent 8
+#define lbxupsz_MappingNotifyEvent 7
+
+#define lbxsz_ClientMessageEvent 32
+#define lbxupsz_ClientMessageEvent 32
+
+#define lbxsz_UnknownEvent 32
+
+#ifdef DEBUG
+
+#define DBG_SWITCH 0x00000001
+#define DBG_CLOSE 0x00000002
+#define DBG_IO 0x00000004
+#define DBG_READ_REQ 0x00000008
+#define DBG_LEN 0x00000010
+#define DBG_BLOCK 0x00000020
+#define DBG_CLIENT 0x00000040
+#define DBG_DELTA 0x00000080
+#endif
+/*
+ * Cancel the previous redefinition of the basic types, thus restoring their
+ * X.h definitions.
+ */
+
+#undef XID
+#undef Atom
+#undef Colormap
+#undef Drawable
+#undef VisualID
+#undef Window
+
+#endif /* _LBXPROTO_H_ */
diff --git a/X11/extensions/mitmiscconst.h b/X11/extensions/mitmiscconst.h
index adc5f9420..2e382747a 100644
--- a/X11/extensions/mitmiscconst.h
+++ b/X11/extensions/mitmiscconst.h
@@ -1,38 +1,38 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-********************************************************/
-
-/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
-
-
-#ifndef _MITMISCCONST_H_
-#define _MITMISCCONST_H_
-
-#define MITMiscNumberEvents 0
-#define MITMiscNumberErrors 0
-
-#define MITMISCNAME "MIT-SUNDRY-NONSTANDARD"
-
-#endif
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+********************************************************/
+
+/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
+
+
+#ifndef _MITMISCCONST_H_
+#define _MITMISCCONST_H_
+
+#define MITMiscNumberEvents 0
+#define MITMiscNumberErrors 0
+
+#define MITMISCNAME "MIT-SUNDRY-NONSTANDARD"
+
+#endif
diff --git a/X11/extensions/mitmiscproto.h b/X11/extensions/mitmiscproto.h
index 18c202a84..1f2ab6a40 100644
--- a/X11/extensions/mitmiscproto.h
+++ b/X11/extensions/mitmiscproto.h
@@ -1,68 +1,68 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-********************************************************/
-
-/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
-
-#ifndef _MITMISCPROTO_H_
-#define _MITMISCPROTO_H_
-
-#include <X11/extensions/mitmiscconst.h>
-
-#define X_MITSetBugMode 0
-#define X_MITGetBugMode 1
-
-typedef struct _SetBugMode {
- CARD8 reqType; /* always MITReqCode */
- CARD8 mitReqType; /* always X_MITSetBugMode */
- CARD16 length B16;
- BOOL onOff;
- BYTE pad0;
- CARD16 pad1;
-} xMITSetBugModeReq;
-#define sz_xMITSetBugModeReq 8
-
-typedef struct _GetBugMode {
- CARD8 reqType; /* always MITReqCode */
- CARD8 mitReqType; /* always X_MITGetBugMode */
- CARD16 length B16;
-} xMITGetBugModeReq;
-#define sz_xMITGetBugModeReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL onOff;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xMITGetBugModeReply;
-#define sz_xMITGetBugModeReply 32
-
-#endif /* _MITMISCPROTO_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+********************************************************/
+
+/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
+
+#ifndef _MITMISCPROTO_H_
+#define _MITMISCPROTO_H_
+
+#include <X11/extensions/mitmiscconst.h>
+
+#define X_MITSetBugMode 0
+#define X_MITGetBugMode 1
+
+typedef struct _SetBugMode {
+ CARD8 reqType; /* always MITReqCode */
+ CARD8 mitReqType; /* always X_MITSetBugMode */
+ CARD16 length B16;
+ BOOL onOff;
+ BYTE pad0;
+ CARD16 pad1;
+} xMITSetBugModeReq;
+#define sz_xMITSetBugModeReq 8
+
+typedef struct _GetBugMode {
+ CARD8 reqType; /* always MITReqCode */
+ CARD8 mitReqType; /* always X_MITGetBugMode */
+ CARD16 length B16;
+} xMITGetBugModeReq;
+#define sz_xMITGetBugModeReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL onOff;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xMITGetBugModeReply;
+#define sz_xMITGetBugModeReply 32
+
+#endif /* _MITMISCPROTO_H_ */
diff --git a/X11/extensions/multibufconst.h b/X11/extensions/multibufconst.h
index 2d1238c31..328504640 100644
--- a/X11/extensions/multibufconst.h
+++ b/X11/extensions/multibufconst.h
@@ -1,83 +1,83 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
- */
-
-#ifndef _MULTIBUFCONST_H_
-#define _MULTIBUFCONST_H_
-
-#define MULTIBUFFER_PROTOCOL_NAME "Multi-Buffering"
-
-#define MULTIBUFFER_MAJOR_VERSION 1 /* current version numbers */
-#define MULTIBUFFER_MINOR_VERSION 1 /* has ClearImageBufferArea */
-
-/*
- * update_action field
- */
-#define MultibufferUpdateActionUndefined 0
-#define MultibufferUpdateActionBackground 1
-#define MultibufferUpdateActionUntouched 2
-#define MultibufferUpdateActionCopied 3
-
-/*
- * update_hint field
- */
-#define MultibufferUpdateHintFrequent 0
-#define MultibufferUpdateHintIntermittent 1
-#define MultibufferUpdateHintStatic 2
-
-/*
- * valuemask fields
- */
-#define MultibufferWindowUpdateHint (1L << 0)
-#define MultibufferBufferEventMask (1L << 0)
-
-/*
- * mono vs. stereo and left vs. right
- */
-#define MultibufferModeMono 0
-#define MultibufferModeStereo 1
-#define MultibufferSideMono 0
-#define MultibufferSideLeft 1
-#define MultibufferSideRight 2
-
-/*
- * clobber state
- */
-#define MultibufferUnclobbered 0
-#define MultibufferPartiallyClobbered 1
-#define MultibufferFullyClobbered 2
-
-/*
- * event stuff
- */
-#define MultibufferClobberNotifyMask 0x02000000
-#define MultibufferUpdateNotifyMask 0x04000000
-
-#define MultibufferClobberNotify 0
-#define MultibufferUpdateNotify 1
-#define MultibufferNumberEvents (MultibufferUpdateNotify + 1)
-
-#define MultibufferBadBuffer 0
-#define MultibufferNumberErrors (MultibufferBadBuffer + 1)
-
-#endif /* _MULTIBUFCONST_H_ */
+/*
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+ */
+
+#ifndef _MULTIBUFCONST_H_
+#define _MULTIBUFCONST_H_
+
+#define MULTIBUFFER_PROTOCOL_NAME "Multi-Buffering"
+
+#define MULTIBUFFER_MAJOR_VERSION 1 /* current version numbers */
+#define MULTIBUFFER_MINOR_VERSION 1 /* has ClearImageBufferArea */
+
+/*
+ * update_action field
+ */
+#define MultibufferUpdateActionUndefined 0
+#define MultibufferUpdateActionBackground 1
+#define MultibufferUpdateActionUntouched 2
+#define MultibufferUpdateActionCopied 3
+
+/*
+ * update_hint field
+ */
+#define MultibufferUpdateHintFrequent 0
+#define MultibufferUpdateHintIntermittent 1
+#define MultibufferUpdateHintStatic 2
+
+/*
+ * valuemask fields
+ */
+#define MultibufferWindowUpdateHint (1L << 0)
+#define MultibufferBufferEventMask (1L << 0)
+
+/*
+ * mono vs. stereo and left vs. right
+ */
+#define MultibufferModeMono 0
+#define MultibufferModeStereo 1
+#define MultibufferSideMono 0
+#define MultibufferSideLeft 1
+#define MultibufferSideRight 2
+
+/*
+ * clobber state
+ */
+#define MultibufferUnclobbered 0
+#define MultibufferPartiallyClobbered 1
+#define MultibufferFullyClobbered 2
+
+/*
+ * event stuff
+ */
+#define MultibufferClobberNotifyMask 0x02000000
+#define MultibufferUpdateNotifyMask 0x04000000
+
+#define MultibufferClobberNotify 0
+#define MultibufferUpdateNotify 1
+#define MultibufferNumberEvents (MultibufferUpdateNotify + 1)
+
+#define MultibufferBadBuffer 0
+#define MultibufferNumberErrors (MultibufferBadBuffer + 1)
+
+#endif /* _MULTIBUFCONST_H_ */
diff --git a/X11/extensions/multibufproto.h b/X11/extensions/multibufproto.h
index e2184d3a8..a42ef72a3 100644
--- a/X11/extensions/multibufproto.h
+++ b/X11/extensions/multibufproto.h
@@ -1,295 +1,295 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
- */
-
-#ifndef _MULTIBUFPROTO_H_
-#define _MULTIBUFPROTO_H_
-
-#include <X11/extensions/multibufconst.h>
-
-/*
- * Protocol requests constants and alignment values
- */
-
-#define Window CARD32
-#define Drawable CARD32
-#define VisualID CARD32
-#define Multibuffer CARD32
-
-#define X_MbufGetBufferVersion 0
-#define X_MbufCreateImageBuffers 1
-#define X_MbufDestroyImageBuffers 2
-#define X_MbufDisplayImageBuffers 3
-#define X_MbufSetMBufferAttributes 4
-#define X_MbufGetMBufferAttributes 5
-#define X_MbufSetBufferAttributes 6
-#define X_MbufGetBufferAttributes 7
-#define X_MbufGetBufferInfo 8
-#define X_MbufCreateStereoWindow 9
-#define X_MbufClearImageBufferArea 10
-
-
-typedef struct xMbufBufferInfo {
- CARD32 visualID B32; /* associated visual */
- CARD16 maxBuffers B16; /* maximum supported buffers */
- CARD8 depth; /* depth of visual (redundant) */
- CARD8 unused;
-} xMbufBufferInfo;
-#define sz_xMbufBufferInfo 8
-
-typedef struct {
- BYTE type;
- BYTE unused;
- CARD16 sequenceNumber B16;
- CARD32 buffer B32; /* affected buffer */
- BYTE state; /* current status */
- CARD8 unused1;
- CARD16 unused2 B16;
- CARD32 unused3 B32;
- CARD32 unused4 B32;
- CARD32 unused5 B32;
- CARD32 unused6 B32;
- CARD32 unused7 B32;
-} xMbufClobberNotifyEvent;
-
-typedef struct {
- BYTE type;
- BYTE unused;
- CARD16 sequenceNumber B16;
- CARD32 buffer B32; /* affected buffer */
- CARD32 timeStamp B32; /* update time */
- CARD32 unused1 B32;
- CARD32 unused2 B32;
- CARD32 unused3 B32;
- CARD32 unused4 B32;
- CARD32 unused5 B32;
- CARD32 unused6 B32;
-} xMbufUpdateNotifyEvent;
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufGetBufferVersion */
- CARD16 length B16;
-} xMbufGetBufferVersionReq;
-#define sz_xMbufGetBufferVersionReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD8 majorVersion; /* major version of Multi-Buffering protocol */
- CARD8 minorVersion; /* minor version of Multi-Buffering protocol */
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xMbufGetBufferVersionReply;
-#define sz_xMbufGetBufferVersionReply 32
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufCreateImageBuffers */
- CARD16 length B16;
- CARD32 window B32; /* associated window */
- CARD8 updateAction; /* action at update */
- CARD8 updateHint; /* hint as to frequency of updates */
- CARD16 unused;
-} xMbufCreateImageBuffersReq; /* followed by buffer ids */
-#define sz_xMbufCreateImageBuffersReq 12
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 numberBuffer B16; /* number successfully allocated */
- CARD16 unused1 B16;
- CARD32 unused2 B32;
- CARD32 unused3 B32;
- CARD32 unused4 B32;
- CARD32 unused5 B32;
- CARD32 unused6 B32;
-} xMbufCreateImageBuffersReply;
-#define sz_xMbufCreateImageBuffersReply 32
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufDestroyImageBuffers */
- CARD16 length B16;
- CARD32 window B32; /* associated window */
-} xMbufDestroyImageBuffersReq;
-#define sz_xMbufDestroyImageBuffersReq 8
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufDisplayImageBuffers */
- CARD16 length B16;
- CARD16 minDelay B16; /* minimum time between last update and now */
- CARD16 maxDelay B16; /* maximum time between last update and now */
-} xMbufDisplayImageBuffersReq; /* followed by list of buffers */
-#define sz_xMbufDisplayImageBuffersReq 8
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufSetMBufferAttributes */
- CARD16 length B16;
- CARD32 window B32; /* associated window */
- CARD32 valueMask B32; /* modified entries */
-} xMbufSetMBufferAttributesReq; /* followed by values */
-#define sz_xMbufSetMBufferAttributesReq 12
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufGetMBufferAttributes */
- CARD16 length B16;
- CARD32 window B32; /* associated window */
-} xMbufGetMBufferAttributesReq;
-#define sz_xMbufGetMBufferAttributesReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 displayedBuffer B16; /* currently visible buffer */
- CARD8 updateAction;
- CARD8 updateHint;
- CARD8 windowMode;
- CARD8 unused0;
- CARD16 unused1 B16;
- CARD32 unused2 B32;
- CARD32 unused3 B32;
- CARD32 unused4 B32;
- CARD32 unused5 B32;
-} xMbufGetMBufferAttributesReply;
-#define sz_xMbufGetMBufferAttributesReply 32
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufSetBufferAttributes */
- CARD16 length B16;
- CARD32 buffer B32;
- CARD32 valueMask B32;
-} xMbufSetBufferAttributesReq; /* followed by values */
-#define sz_xMbufSetBufferAttributesReq 12
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufGetBufferAttributes */
- CARD16 length B16;
- CARD32 buffer B32;
-} xMbufGetBufferAttributesReq;
-#define sz_xMbufGetBufferAttributesReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 window B32;
- CARD32 eventMask B32;
- CARD16 bufferIndex B16;
- CARD8 side;
- CARD8 unused0;
- CARD32 unused1 B32;
- CARD32 unused2 B32;
- CARD32 unused3 B32;
-} xMbufGetBufferAttributesReply;
-#define sz_xMbufGetBufferAttributesReply 32
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufGetBufferInfo */
- CARD16 length B16;
- Drawable drawable B32;
-} xMbufGetBufferInfoReq;
-#define sz_xMbufGetBufferInfoReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 normalInfo B16;
- CARD16 stereoInfo B16;
- CARD32 unused1 B32;
- CARD32 unused2 B32;
- CARD32 unused3 B32;
- CARD32 unused4 B32;
- CARD32 unused5 B32;
-} xMbufGetBufferInfoReply; /* followed by buffer infos */
-#define sz_xMbufGetBufferInfoReply 32
-
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufCreateStereoWindow */
- CARD16 length B16;
- CARD8 unused0;
- CARD8 unused1;
- CARD8 unused2;
- CARD8 depth;
- Window wid B32;
- Window parent B32;
- Multibuffer left B32; /* associated buffers */
- Multibuffer right B32;
- INT16 x B16;
- INT16 y B16;
- CARD16 width B16;
- CARD16 height B16;
- CARD16 borderWidth B16;
-#if defined(__cplusplus) || defined(c_plusplus)
- CARD16 c_class B16;
-#else
- CARD16 class B16;
-#endif
- VisualID visual B32;
- CARD32 mask B32;
-} xMbufCreateStereoWindowReq; /* followed by value list */
-#define sz_xMbufCreateStereoWindowReq 44
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufClearImageBufferArea */
- CARD16 length B16;
- Multibuffer buffer B32;
- INT16 x B16;
- INT16 y B16;
- CARD16 width B16;
- CARD16 height B16;
- CARD8 unused0;
- CARD8 unused1;
- CARD8 unused2;
- BOOL exposures;
-} xMbufClearImageBufferAreaReq;
-#define sz_xMbufClearImageBufferAreaReq 20
-
-#undef Window
-#undef Drawable
-#undef VisualID
-#undef Multibuffer
-
-#endif /* _MULTIBUFPROTO_H_ */
+/*
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+ */
+
+#ifndef _MULTIBUFPROTO_H_
+#define _MULTIBUFPROTO_H_
+
+#include <X11/extensions/multibufconst.h>
+
+/*
+ * Protocol requests constants and alignment values
+ */
+
+#define Window CARD32
+#define Drawable CARD32
+#define VisualID CARD32
+#define Multibuffer CARD32
+
+#define X_MbufGetBufferVersion 0
+#define X_MbufCreateImageBuffers 1
+#define X_MbufDestroyImageBuffers 2
+#define X_MbufDisplayImageBuffers 3
+#define X_MbufSetMBufferAttributes 4
+#define X_MbufGetMBufferAttributes 5
+#define X_MbufSetBufferAttributes 6
+#define X_MbufGetBufferAttributes 7
+#define X_MbufGetBufferInfo 8
+#define X_MbufCreateStereoWindow 9
+#define X_MbufClearImageBufferArea 10
+
+
+typedef struct xMbufBufferInfo {
+ CARD32 visualID B32; /* associated visual */
+ CARD16 maxBuffers B16; /* maximum supported buffers */
+ CARD8 depth; /* depth of visual (redundant) */
+ CARD8 unused;
+} xMbufBufferInfo;
+#define sz_xMbufBufferInfo 8
+
+typedef struct {
+ BYTE type;
+ BYTE unused;
+ CARD16 sequenceNumber B16;
+ CARD32 buffer B32; /* affected buffer */
+ BYTE state; /* current status */
+ CARD8 unused1;
+ CARD16 unused2 B16;
+ CARD32 unused3 B32;
+ CARD32 unused4 B32;
+ CARD32 unused5 B32;
+ CARD32 unused6 B32;
+ CARD32 unused7 B32;
+} xMbufClobberNotifyEvent;
+
+typedef struct {
+ BYTE type;
+ BYTE unused;
+ CARD16 sequenceNumber B16;
+ CARD32 buffer B32; /* affected buffer */
+ CARD32 timeStamp B32; /* update time */
+ CARD32 unused1 B32;
+ CARD32 unused2 B32;
+ CARD32 unused3 B32;
+ CARD32 unused4 B32;
+ CARD32 unused5 B32;
+ CARD32 unused6 B32;
+} xMbufUpdateNotifyEvent;
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufGetBufferVersion */
+ CARD16 length B16;
+} xMbufGetBufferVersionReq;
+#define sz_xMbufGetBufferVersionReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD8 majorVersion; /* major version of Multi-Buffering protocol */
+ CARD8 minorVersion; /* minor version of Multi-Buffering protocol */
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xMbufGetBufferVersionReply;
+#define sz_xMbufGetBufferVersionReply 32
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufCreateImageBuffers */
+ CARD16 length B16;
+ CARD32 window B32; /* associated window */
+ CARD8 updateAction; /* action at update */
+ CARD8 updateHint; /* hint as to frequency of updates */
+ CARD16 unused;
+} xMbufCreateImageBuffersReq; /* followed by buffer ids */
+#define sz_xMbufCreateImageBuffersReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 numberBuffer B16; /* number successfully allocated */
+ CARD16 unused1 B16;
+ CARD32 unused2 B32;
+ CARD32 unused3 B32;
+ CARD32 unused4 B32;
+ CARD32 unused5 B32;
+ CARD32 unused6 B32;
+} xMbufCreateImageBuffersReply;
+#define sz_xMbufCreateImageBuffersReply 32
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufDestroyImageBuffers */
+ CARD16 length B16;
+ CARD32 window B32; /* associated window */
+} xMbufDestroyImageBuffersReq;
+#define sz_xMbufDestroyImageBuffersReq 8
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufDisplayImageBuffers */
+ CARD16 length B16;
+ CARD16 minDelay B16; /* minimum time between last update and now */
+ CARD16 maxDelay B16; /* maximum time between last update and now */
+} xMbufDisplayImageBuffersReq; /* followed by list of buffers */
+#define sz_xMbufDisplayImageBuffersReq 8
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufSetMBufferAttributes */
+ CARD16 length B16;
+ CARD32 window B32; /* associated window */
+ CARD32 valueMask B32; /* modified entries */
+} xMbufSetMBufferAttributesReq; /* followed by values */
+#define sz_xMbufSetMBufferAttributesReq 12
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufGetMBufferAttributes */
+ CARD16 length B16;
+ CARD32 window B32; /* associated window */
+} xMbufGetMBufferAttributesReq;
+#define sz_xMbufGetMBufferAttributesReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 displayedBuffer B16; /* currently visible buffer */
+ CARD8 updateAction;
+ CARD8 updateHint;
+ CARD8 windowMode;
+ CARD8 unused0;
+ CARD16 unused1 B16;
+ CARD32 unused2 B32;
+ CARD32 unused3 B32;
+ CARD32 unused4 B32;
+ CARD32 unused5 B32;
+} xMbufGetMBufferAttributesReply;
+#define sz_xMbufGetMBufferAttributesReply 32
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufSetBufferAttributes */
+ CARD16 length B16;
+ CARD32 buffer B32;
+ CARD32 valueMask B32;
+} xMbufSetBufferAttributesReq; /* followed by values */
+#define sz_xMbufSetBufferAttributesReq 12
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufGetBufferAttributes */
+ CARD16 length B16;
+ CARD32 buffer B32;
+} xMbufGetBufferAttributesReq;
+#define sz_xMbufGetBufferAttributesReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 window B32;
+ CARD32 eventMask B32;
+ CARD16 bufferIndex B16;
+ CARD8 side;
+ CARD8 unused0;
+ CARD32 unused1 B32;
+ CARD32 unused2 B32;
+ CARD32 unused3 B32;
+} xMbufGetBufferAttributesReply;
+#define sz_xMbufGetBufferAttributesReply 32
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufGetBufferInfo */
+ CARD16 length B16;
+ Drawable drawable B32;
+} xMbufGetBufferInfoReq;
+#define sz_xMbufGetBufferInfoReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 normalInfo B16;
+ CARD16 stereoInfo B16;
+ CARD32 unused1 B32;
+ CARD32 unused2 B32;
+ CARD32 unused3 B32;
+ CARD32 unused4 B32;
+ CARD32 unused5 B32;
+} xMbufGetBufferInfoReply; /* followed by buffer infos */
+#define sz_xMbufGetBufferInfoReply 32
+
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufCreateStereoWindow */
+ CARD16 length B16;
+ CARD8 unused0;
+ CARD8 unused1;
+ CARD8 unused2;
+ CARD8 depth;
+ Window wid B32;
+ Window parent B32;
+ Multibuffer left B32; /* associated buffers */
+ Multibuffer right B32;
+ INT16 x B16;
+ INT16 y B16;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD16 borderWidth B16;
+#if defined(__cplusplus) || defined(c_plusplus)
+ CARD16 c_class B16;
+#else
+ CARD16 class B16;
+#endif
+ VisualID visual B32;
+ CARD32 mask B32;
+} xMbufCreateStereoWindowReq; /* followed by value list */
+#define sz_xMbufCreateStereoWindowReq 44
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufClearImageBufferArea */
+ CARD16 length B16;
+ Multibuffer buffer B32;
+ INT16 x B16;
+ INT16 y B16;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD8 unused0;
+ CARD8 unused1;
+ CARD8 unused2;
+ BOOL exposures;
+} xMbufClearImageBufferAreaReq;
+#define sz_xMbufClearImageBufferAreaReq 20
+
+#undef Window
+#undef Drawable
+#undef VisualID
+#undef Multibuffer
+
+#endif /* _MULTIBUFPROTO_H_ */
diff --git a/X11/extensions/secur.h b/X11/extensions/secur.h
index ca27b29e6..3721672da 100644
--- a/X11/extensions/secur.h
+++ b/X11/extensions/secur.h
@@ -1,61 +1,61 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-*/
-
-#ifndef _SECUR_H
-#define _SECUR_H
-
-#define SECURITY_EXTENSION_NAME "SECURITY"
-#define SECURITY_MAJOR_VERSION 1
-#define SECURITY_MINOR_VERSION 0
-
-#define XSecurityNumberEvents 1
-#define XSecurityNumberErrors 2
-#define XSecurityBadAuthorization 0
-#define XSecurityBadAuthorizationProtocol 1
-
-/* trust levels */
-#define XSecurityClientTrusted 0
-#define XSecurityClientUntrusted 1
-
-/* authorization attribute masks */
-#define XSecurityTimeout (1<<0)
-#define XSecurityTrustLevel (1<<1)
-#define XSecurityGroup (1<<2)
-#define XSecurityEventMask (1<<3)
-#define XSecurityAllAuthorizationAttributes \
- (XSecurityTimeout | XSecurityTrustLevel | XSecurityGroup | XSecurityEventMask)
-
-/* event masks */
-#define XSecurityAuthorizationRevokedMask (1<<0)
-#define XSecurityAllEventMasks XSecurityAuthorizationRevokedMask
-
-/* event offsets */
-#define XSecurityAuthorizationRevoked 0
-
-#define XSecurityAuthorizationName "XC-QUERY-SECURITY-1"
-#define XSecurityAuthorizationNameLen 19
-
-#endif /* _SECUR_H */
+/*
+Copyright 1996, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+*/
+
+#ifndef _SECUR_H
+#define _SECUR_H
+
+#define SECURITY_EXTENSION_NAME "SECURITY"
+#define SECURITY_MAJOR_VERSION 1
+#define SECURITY_MINOR_VERSION 0
+
+#define XSecurityNumberEvents 1
+#define XSecurityNumberErrors 2
+#define XSecurityBadAuthorization 0
+#define XSecurityBadAuthorizationProtocol 1
+
+/* trust levels */
+#define XSecurityClientTrusted 0
+#define XSecurityClientUntrusted 1
+
+/* authorization attribute masks */
+#define XSecurityTimeout (1<<0)
+#define XSecurityTrustLevel (1<<1)
+#define XSecurityGroup (1<<2)
+#define XSecurityEventMask (1<<3)
+#define XSecurityAllAuthorizationAttributes \
+ (XSecurityTimeout | XSecurityTrustLevel | XSecurityGroup | XSecurityEventMask)
+
+/* event masks */
+#define XSecurityAuthorizationRevokedMask (1<<0)
+#define XSecurityAllEventMasks XSecurityAuthorizationRevokedMask
+
+/* event offsets */
+#define XSecurityAuthorizationRevoked 0
+
+#define XSecurityAuthorizationName "XC-QUERY-SECURITY-1"
+#define XSecurityAuthorizationNameLen 19
+
+#endif /* _SECUR_H */
diff --git a/X11/extensions/securproto.h b/X11/extensions/securproto.h
index 409a4c5d0..56cd475cc 100644
--- a/X11/extensions/securproto.h
+++ b/X11/extensions/securproto.h
@@ -1,110 +1,110 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-*/
-
-#ifndef _SECURPROTO_H
-#define _SECURPROTO_H
-
-#include <X11/extensions/secur.h>
-
-#define X_SecurityQueryVersion 0
-#define X_SecurityGenerateAuthorization 1
-#define X_SecurityRevokeAuthorization 2
-
-typedef struct {
- CARD8 reqType;
- CARD8 securityReqType;
- CARD16 length B16;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
-} xSecurityQueryVersionReq;
-#define sz_xSecurityQueryVersionReq 8
-
-typedef struct {
- CARD8 type;
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- } xSecurityQueryVersionReply;
-#define sz_xSecurityQueryVersionReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 securityReqType;
- CARD16 length B16;
- CARD16 nbytesAuthProto B16;
- CARD16 nbytesAuthData B16;
- CARD32 valueMask B32;
- /* auth protocol name padded to 4 bytes */
- /* auth protocol data padded to 4 bytes */
- /* list of CARD32 values, if any */
-} xSecurityGenerateAuthorizationReq;
-#define sz_xSecurityGenerateAuthorizationReq 12
-
-typedef struct {
- CARD8 type;
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 authId B32;
- CARD16 dataLength B16;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- } xSecurityGenerateAuthorizationReply;
-#define sz_xSecurityGenerateAuthorizationReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 securityReqType;
- CARD16 length B16;
- CARD32 authId B32;
-} xSecurityRevokeAuthorizationReq;
-#define sz_xSecurityRevokeAuthorizationReq 8
-
-typedef struct _xSecurityAuthorizationRevokedEvent {
- BYTE type;
- BYTE detail;
- CARD16 sequenceNumber B16;
- CARD32 authId B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xSecurityAuthorizationRevokedEvent;
-#define sz_xSecurityAuthorizationRevokedEvent 32
-
-#endif /* _SECURPROTO_H */
+/*
+Copyright 1996, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+*/
+
+#ifndef _SECURPROTO_H
+#define _SECURPROTO_H
+
+#include <X11/extensions/secur.h>
+
+#define X_SecurityQueryVersion 0
+#define X_SecurityGenerateAuthorization 1
+#define X_SecurityRevokeAuthorization 2
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 securityReqType;
+ CARD16 length B16;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+} xSecurityQueryVersionReq;
+#define sz_xSecurityQueryVersionReq 8
+
+typedef struct {
+ CARD8 type;
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ } xSecurityQueryVersionReply;
+#define sz_xSecurityQueryVersionReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 securityReqType;
+ CARD16 length B16;
+ CARD16 nbytesAuthProto B16;
+ CARD16 nbytesAuthData B16;
+ CARD32 valueMask B32;
+ /* auth protocol name padded to 4 bytes */
+ /* auth protocol data padded to 4 bytes */
+ /* list of CARD32 values, if any */
+} xSecurityGenerateAuthorizationReq;
+#define sz_xSecurityGenerateAuthorizationReq 12
+
+typedef struct {
+ CARD8 type;
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 authId B32;
+ CARD16 dataLength B16;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ } xSecurityGenerateAuthorizationReply;
+#define sz_xSecurityGenerateAuthorizationReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 securityReqType;
+ CARD16 length B16;
+ CARD32 authId B32;
+} xSecurityRevokeAuthorizationReq;
+#define sz_xSecurityRevokeAuthorizationReq 8
+
+typedef struct _xSecurityAuthorizationRevokedEvent {
+ BYTE type;
+ BYTE detail;
+ CARD16 sequenceNumber B16;
+ CARD32 authId B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xSecurityAuthorizationRevokedEvent;
+#define sz_xSecurityAuthorizationRevokedEvent 32
+
+#endif /* _SECURPROTO_H */
diff --git a/X11/extensions/shapeconst.h b/X11/extensions/shapeconst.h
index 9088956f1..75b541951 100644
--- a/X11/extensions/shapeconst.h
+++ b/X11/extensions/shapeconst.h
@@ -1,55 +1,55 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-********************************************************/
-
-#ifndef _SHAPECONST_H_
-#define _SHAPECONST_H_
-
-/*
- * Protocol requests constants and alignment values
- * These would really be in SHAPE's X.h and Xproto.h equivalents
- */
-
-#define SHAPENAME "SHAPE"
-
-#define SHAPE_MAJOR_VERSION 1 /* current version numbers */
-#define SHAPE_MINOR_VERSION 1
-
-#define ShapeSet 0
-#define ShapeUnion 1
-#define ShapeIntersect 2
-#define ShapeSubtract 3
-#define ShapeInvert 4
-
-#define ShapeBounding 0
-#define ShapeClip 1
-#define ShapeInput 2
-
-#define ShapeNotifyMask (1L << 0)
-#define ShapeNotify 0
-
-#define ShapeNumberEvents (ShapeNotify + 1)
-
-#endif /* _SHAPECONST_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+********************************************************/
+
+#ifndef _SHAPECONST_H_
+#define _SHAPECONST_H_
+
+/*
+ * Protocol requests constants and alignment values
+ * These would really be in SHAPE's X.h and Xproto.h equivalents
+ */
+
+#define SHAPENAME "SHAPE"
+
+#define SHAPE_MAJOR_VERSION 1 /* current version numbers */
+#define SHAPE_MINOR_VERSION 1
+
+#define ShapeSet 0
+#define ShapeUnion 1
+#define ShapeIntersect 2
+#define ShapeSubtract 3
+#define ShapeInvert 4
+
+#define ShapeBounding 0
+#define ShapeClip 1
+#define ShapeInput 2
+
+#define ShapeNotifyMask (1L << 0)
+#define ShapeNotify 0
+
+#define ShapeNumberEvents (ShapeNotify + 1)
+
+#endif /* _SHAPECONST_H_ */
diff --git a/X11/extensions/shapeproto.h b/X11/extensions/shapeproto.h
index 49bd1a1a4..aba393b0f 100644
--- a/X11/extensions/shapeproto.h
+++ b/X11/extensions/shapeproto.h
@@ -1,237 +1,237 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-********************************************************/
-
-#ifndef _SHAPEPROTO_H_
-#define _SHAPEPROTO_H_
-
-#include <X11/extensions/shapeconst.h>
-
-/*
- * Protocol requests constants and alignment values
- * These would really be in SHAPE's X.h and Xproto.h equivalents
- */
-
-#define Window CARD32
-#define Time CARD32
-
-#define X_ShapeQueryVersion 0
-#define X_ShapeRectangles 1
-#define X_ShapeMask 2
-#define X_ShapeCombine 3
-#define X_ShapeOffset 4
-#define X_ShapeQueryExtents 5
-#define X_ShapeSelectInput 6
-#define X_ShapeInputSelected 7
-#define X_ShapeGetRectangles 8
-
-typedef struct _ShapeQueryVersion {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeQueryVersion */
- CARD16 length B16;
-} xShapeQueryVersionReq;
-#define sz_xShapeQueryVersionReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16; /* major version of SHAPE protocol */
- CARD16 minorVersion B16; /* minor version of SHAPE protocol */
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xShapeQueryVersionReply;
-#define sz_xShapeQueryVersionReply 32
-
-typedef struct _ShapeRectangles {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeRectangles */
- CARD16 length B16;
- CARD8 op; /* Set, ... */
- CARD8 destKind; /* ShapeBounding or ShapeClip */
- CARD8 ordering; /* UnSorted, YSorted, YXSorted, YXBanded */
- CARD8 pad0; /* not used */
- Window dest B32;
- INT16 xOff B16;
- INT16 yOff B16;
-} xShapeRectanglesReq; /* followed by xRects */
-#define sz_xShapeRectanglesReq 16
-
-typedef struct _ShapeMask {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeMask */
- CARD16 length B16;
-
- CARD8 op; /* Set, ... */
- CARD8 destKind; /* ShapeBounding or ShapeClip */
- CARD16 junk B16; /* not used */
-
- Window dest B32;
- INT16 xOff B16;
- INT16 yOff B16;
- CARD32 src B32; /* 1 bit pixmap */
-} xShapeMaskReq;
-#define sz_xShapeMaskReq 20
-
-typedef struct _ShapeCombine {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeCombine */
- CARD16 length B16;
- CARD8 op; /* Set, ... */
- CARD8 destKind; /* ShapeBounding or ShapeClip */
- CARD8 srcKind; /* ShapeBounding or ShapeClip */
- CARD8 junk; /* not used */
- Window dest B32;
- INT16 xOff B16;
- INT16 yOff B16;
- Window src B32;
-} xShapeCombineReq;
-#define sz_xShapeCombineReq 20
-
-typedef struct _ShapeOffset {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeOffset */
- CARD16 length B16;
- CARD8 destKind; /* ShapeBounding or ShapeClip */
- CARD8 junk1; /* not used */
- CARD16 junk2 B16; /* not used */
- Window dest B32;
- INT16 xOff B16;
- INT16 yOff B16;
-} xShapeOffsetReq;
-#define sz_xShapeOffsetReq 16
-
-typedef struct _ShapeQueryExtents {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeQueryExtents */
- CARD16 length B16;
- Window window B32;
-} xShapeQueryExtentsReq;
-#define sz_xShapeQueryExtentsReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32; /* 0 */
- CARD8 boundingShaped; /* window has bounding shape */
- CARD8 clipShaped; /* window has clip shape */
- CARD16 unused1 B16;
- INT16 xBoundingShape B16; /* extents of bounding shape */
- INT16 yBoundingShape B16;
- CARD16 widthBoundingShape B16;
- CARD16 heightBoundingShape B16;
- INT16 xClipShape B16; /* extents of clip shape */
- INT16 yClipShape B16;
- CARD16 widthClipShape B16;
- CARD16 heightClipShape B16;
- CARD32 pad1 B32;
-} xShapeQueryExtentsReply;
-#define sz_xShapeQueryExtentsReply 32
-
-typedef struct _ShapeSelectInput {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeSelectInput */
- CARD16 length B16;
- Window window B32;
- BYTE enable; /* xTrue -> send events */
- BYTE pad1;
- CARD16 pad2 B16;
-} xShapeSelectInputReq;
-#define sz_xShapeSelectInputReq 12
-
-typedef struct _ShapeNotify {
- BYTE type; /* always eventBase + ShapeNotify */
- BYTE kind; /* either ShapeBounding or ShapeClip */
- CARD16 sequenceNumber B16;
- Window window B32;
- INT16 x B16;
- INT16 y B16; /* extents of new shape */
- CARD16 width B16;
- CARD16 height B16;
- Time time B32; /* time of change */
- BYTE shaped; /* set when a shape actual exists */
- BYTE pad0;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xShapeNotifyEvent;
-#define sz_xShapeNotifyEvent 32
-
-typedef struct _ShapeInputSelected {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeInputSelected */
- CARD16 length B16;
- Window window B32;
-} xShapeInputSelectedReq;
-#define sz_xShapeInputSelectedReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 enabled; /* current status */
- CARD16 sequenceNumber B16;
- CARD32 length B32; /* 0 */
- CARD32 pad1 B32; /* unused */
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xShapeInputSelectedReply;
-#define sz_xShapeInputSelectedReply 32
-
-typedef struct _ShapeGetRectangles {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeGetRectangles */
- CARD16 length B16;
- Window window B32;
- CARD8 kind; /* ShapeBounding or ShapeClip */
- CARD8 junk1;
- CARD16 junk2 B16;
-} xShapeGetRectanglesReq;
-#define sz_xShapeGetRectanglesReq 12
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 ordering; /* UnSorted, YSorted, YXSorted, YXBanded */
- CARD16 sequenceNumber B16;
- CARD32 length B32; /* not zero */
- CARD32 nrects B32; /* number of rectangles */
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xShapeGetRectanglesReply; /* followed by xRectangles */
-#define sz_xShapeGetRectanglesReply 32
-
-#undef Window
-#undef Time
-
-#endif /* _SHAPEPROTO_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+********************************************************/
+
+#ifndef _SHAPEPROTO_H_
+#define _SHAPEPROTO_H_
+
+#include <X11/extensions/shapeconst.h>
+
+/*
+ * Protocol requests constants and alignment values
+ * These would really be in SHAPE's X.h and Xproto.h equivalents
+ */
+
+#define Window CARD32
+#define Time CARD32
+
+#define X_ShapeQueryVersion 0
+#define X_ShapeRectangles 1
+#define X_ShapeMask 2
+#define X_ShapeCombine 3
+#define X_ShapeOffset 4
+#define X_ShapeQueryExtents 5
+#define X_ShapeSelectInput 6
+#define X_ShapeInputSelected 7
+#define X_ShapeGetRectangles 8
+
+typedef struct _ShapeQueryVersion {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeQueryVersion */
+ CARD16 length B16;
+} xShapeQueryVersionReq;
+#define sz_xShapeQueryVersionReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16; /* major version of SHAPE protocol */
+ CARD16 minorVersion B16; /* minor version of SHAPE protocol */
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xShapeQueryVersionReply;
+#define sz_xShapeQueryVersionReply 32
+
+typedef struct _ShapeRectangles {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeRectangles */
+ CARD16 length B16;
+ CARD8 op; /* Set, ... */
+ CARD8 destKind; /* ShapeBounding or ShapeClip */
+ CARD8 ordering; /* UnSorted, YSorted, YXSorted, YXBanded */
+ CARD8 pad0; /* not used */
+ Window dest B32;
+ INT16 xOff B16;
+ INT16 yOff B16;
+} xShapeRectanglesReq; /* followed by xRects */
+#define sz_xShapeRectanglesReq 16
+
+typedef struct _ShapeMask {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeMask */
+ CARD16 length B16;
+
+ CARD8 op; /* Set, ... */
+ CARD8 destKind; /* ShapeBounding or ShapeClip */
+ CARD16 junk B16; /* not used */
+
+ Window dest B32;
+ INT16 xOff B16;
+ INT16 yOff B16;
+ CARD32 src B32; /* 1 bit pixmap */
+} xShapeMaskReq;
+#define sz_xShapeMaskReq 20
+
+typedef struct _ShapeCombine {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeCombine */
+ CARD16 length B16;
+ CARD8 op; /* Set, ... */
+ CARD8 destKind; /* ShapeBounding or ShapeClip */
+ CARD8 srcKind; /* ShapeBounding or ShapeClip */
+ CARD8 junk; /* not used */
+ Window dest B32;
+ INT16 xOff B16;
+ INT16 yOff B16;
+ Window src B32;
+} xShapeCombineReq;
+#define sz_xShapeCombineReq 20
+
+typedef struct _ShapeOffset {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeOffset */
+ CARD16 length B16;
+ CARD8 destKind; /* ShapeBounding or ShapeClip */
+ CARD8 junk1; /* not used */
+ CARD16 junk2 B16; /* not used */
+ Window dest B32;
+ INT16 xOff B16;
+ INT16 yOff B16;
+} xShapeOffsetReq;
+#define sz_xShapeOffsetReq 16
+
+typedef struct _ShapeQueryExtents {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeQueryExtents */
+ CARD16 length B16;
+ Window window B32;
+} xShapeQueryExtentsReq;
+#define sz_xShapeQueryExtentsReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32; /* 0 */
+ CARD8 boundingShaped; /* window has bounding shape */
+ CARD8 clipShaped; /* window has clip shape */
+ CARD16 unused1 B16;
+ INT16 xBoundingShape B16; /* extents of bounding shape */
+ INT16 yBoundingShape B16;
+ CARD16 widthBoundingShape B16;
+ CARD16 heightBoundingShape B16;
+ INT16 xClipShape B16; /* extents of clip shape */
+ INT16 yClipShape B16;
+ CARD16 widthClipShape B16;
+ CARD16 heightClipShape B16;
+ CARD32 pad1 B32;
+} xShapeQueryExtentsReply;
+#define sz_xShapeQueryExtentsReply 32
+
+typedef struct _ShapeSelectInput {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeSelectInput */
+ CARD16 length B16;
+ Window window B32;
+ BYTE enable; /* xTrue -> send events */
+ BYTE pad1;
+ CARD16 pad2 B16;
+} xShapeSelectInputReq;
+#define sz_xShapeSelectInputReq 12
+
+typedef struct _ShapeNotify {
+ BYTE type; /* always eventBase + ShapeNotify */
+ BYTE kind; /* either ShapeBounding or ShapeClip */
+ CARD16 sequenceNumber B16;
+ Window window B32;
+ INT16 x B16;
+ INT16 y B16; /* extents of new shape */
+ CARD16 width B16;
+ CARD16 height B16;
+ Time time B32; /* time of change */
+ BYTE shaped; /* set when a shape actual exists */
+ BYTE pad0;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xShapeNotifyEvent;
+#define sz_xShapeNotifyEvent 32
+
+typedef struct _ShapeInputSelected {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeInputSelected */
+ CARD16 length B16;
+ Window window B32;
+} xShapeInputSelectedReq;
+#define sz_xShapeInputSelectedReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 enabled; /* current status */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32; /* 0 */
+ CARD32 pad1 B32; /* unused */
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xShapeInputSelectedReply;
+#define sz_xShapeInputSelectedReply 32
+
+typedef struct _ShapeGetRectangles {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeGetRectangles */
+ CARD16 length B16;
+ Window window B32;
+ CARD8 kind; /* ShapeBounding or ShapeClip */
+ CARD8 junk1;
+ CARD16 junk2 B16;
+} xShapeGetRectanglesReq;
+#define sz_xShapeGetRectanglesReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 ordering; /* UnSorted, YSorted, YXSorted, YXBanded */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32; /* not zero */
+ CARD32 nrects B32; /* number of rectangles */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xShapeGetRectanglesReply; /* followed by xRectangles */
+#define sz_xShapeGetRectanglesReply 32
+
+#undef Window
+#undef Time
+
+#endif /* _SHAPEPROTO_H_ */
diff --git a/X11/extensions/shapestr.h b/X11/extensions/shapestr.h
index 20fde1dbe..a5d8f6a2c 100644
--- a/X11/extensions/shapestr.h
+++ b/X11/extensions/shapestr.h
@@ -1,8 +1,8 @@
-#ifndef _SHAPESTR_H_
-#define _SHAPESTR_H_
-
-#warning "shapestr.h is obsolete and may be removed in the future."
-#warning "include <X11/extensions/shapeproto.h> for the protocol defines."
-#include <X11/extensions/shapeproto.h>
-
-#endif /* _SHAPESTR_H_ */
+#ifndef _SHAPESTR_H_
+#define _SHAPESTR_H_
+
+#warning "shapestr.h is obsolete and may be removed in the future."
+#warning "include <X11/extensions/shapeproto.h> for the protocol defines."
+#include <X11/extensions/shapeproto.h>
+
+#endif /* _SHAPESTR_H_ */
diff --git a/X11/extensions/shm.h b/X11/extensions/shm.h
index e076402a8..cb6fac71f 100644
--- a/X11/extensions/shm.h
+++ b/X11/extensions/shm.h
@@ -1,44 +1,44 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-********************************************************/
-
-/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
-
-#ifndef _SHM_H_
-#define _SHM_H_
-
-#define SHMNAME "MIT-SHM"
-
-#define SHM_MAJOR_VERSION 1 /* current version numbers */
-#define SHM_MINOR_VERSION 1
-
-#define ShmCompletion 0
-#define ShmNumberEvents (ShmCompletion + 1)
-
-#define BadShmSeg 0
-#define ShmNumberErrors (BadShmSeg + 1)
-
-
-#endif /* _SHM_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+********************************************************/
+
+/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
+
+#ifndef _SHM_H_
+#define _SHM_H_
+
+#define SHMNAME "MIT-SHM"
+
+#define SHM_MAJOR_VERSION 1 /* current version numbers */
+#define SHM_MINOR_VERSION 1
+
+#define ShmCompletion 0
+#define ShmNumberEvents (ShmCompletion + 1)
+
+#define BadShmSeg 0
+#define ShmNumberErrors (BadShmSeg + 1)
+
+
+#endif /* _SHM_H_ */
diff --git a/X11/extensions/shmproto.h b/X11/extensions/shmproto.h
index e5de377b9..808bcc45a 100644
--- a/X11/extensions/shmproto.h
+++ b/X11/extensions/shmproto.h
@@ -1,187 +1,187 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-********************************************************/
-
-/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
-
-#ifndef _SHMPROTO_H_
-#define _SHMPROTO_H_
-
-#include <X11/extensions/shm.h>
-
-#define ShmSeg CARD32
-#define Drawable CARD32
-#define VisualID CARD32
-#define GContext CARD32
-#define Pixmap CARD32
-
-#define X_ShmQueryVersion 0
-#define X_ShmAttach 1
-#define X_ShmDetach 2
-#define X_ShmPutImage 3
-#define X_ShmGetImage 4
-#define X_ShmCreatePixmap 5
-
-typedef struct _ShmQueryVersion {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmQueryVersion */
- CARD16 length B16;
-} xShmQueryVersionReq;
-#define sz_xShmQueryVersionReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL sharedPixmaps;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16; /* major version of SHM protocol */
- CARD16 minorVersion B16; /* minor version of SHM protocol */
- CARD16 uid B16;
- CARD16 gid B16;
- CARD8 pixmapFormat;
- CARD8 pad0;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xShmQueryVersionReply;
-#define sz_xShmQueryVersionReply 32
-
-typedef struct _ShmAttach {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmAttach */
- CARD16 length B16;
- ShmSeg shmseg B32;
- CARD32 shmid B32;
- BOOL readOnly;
- BYTE pad0;
- CARD16 pad1 B16;
-} xShmAttachReq;
-#define sz_xShmAttachReq 16
-
-typedef struct _ShmDetach {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmDetach */
- CARD16 length B16;
- ShmSeg shmseg B32;
-} xShmDetachReq;
-#define sz_xShmDetachReq 8
-
-typedef struct _ShmPutImage {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmPutImage */
- CARD16 length B16;
- Drawable drawable B32;
- GContext gc B32;
- CARD16 totalWidth B16;
- CARD16 totalHeight B16;
- CARD16 srcX B16;
- CARD16 srcY B16;
- CARD16 srcWidth B16;
- CARD16 srcHeight B16;
- INT16 dstX B16;
- INT16 dstY B16;
- CARD8 depth;
- CARD8 format;
- CARD8 sendEvent;
- CARD8 bpad;
- ShmSeg shmseg B32;
- CARD32 offset B32;
-} xShmPutImageReq;
-#define sz_xShmPutImageReq 40
-
-typedef struct _ShmGetImage {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmGetImage */
- CARD16 length B16;
- Drawable drawable B32;
- INT16 x B16;
- INT16 y B16;
- CARD16 width B16;
- CARD16 height B16;
- CARD32 planeMask B32;
- CARD8 format;
- CARD8 pad0;
- CARD8 pad1;
- CARD8 pad2;
- ShmSeg shmseg B32;
- CARD32 offset B32;
-} xShmGetImageReq;
-#define sz_xShmGetImageReq 32
-
-typedef struct _ShmGetImageReply {
- BYTE type; /* X_Reply */
- CARD8 depth;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- VisualID visual B32;
- CARD32 size B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xShmGetImageReply;
-#define sz_xShmGetImageReply 32
-
-typedef struct _ShmCreatePixmap {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmCreatePixmap */
- CARD16 length B16;
- Pixmap pid B32;
- Drawable drawable B32;
- CARD16 width B16;
- CARD16 height B16;
- CARD8 depth;
- CARD8 pad0;
- CARD8 pad1;
- CARD8 pad2;
- ShmSeg shmseg B32;
- CARD32 offset B32;
-} xShmCreatePixmapReq;
-#define sz_xShmCreatePixmapReq 28
-
-typedef struct _ShmCompletion {
- BYTE type; /* always eventBase + ShmCompletion */
- BYTE bpad0;
- CARD16 sequenceNumber B16;
- Drawable drawable B32;
- CARD16 minorEvent B16;
- BYTE majorEvent;
- BYTE bpad1;
- ShmSeg shmseg B32;
- CARD32 offset B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
-} xShmCompletionEvent;
-#define sz_xShmCompletionEvent 32
-
-#undef ShmSeg
-#undef Drawable
-#undef VisualID
-#undef GContext
-#undef Pixmap
-
-#endif /* _SHMPROTO_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+********************************************************/
+
+/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
+
+#ifndef _SHMPROTO_H_
+#define _SHMPROTO_H_
+
+#include <X11/extensions/shm.h>
+
+#define ShmSeg CARD32
+#define Drawable CARD32
+#define VisualID CARD32
+#define GContext CARD32
+#define Pixmap CARD32
+
+#define X_ShmQueryVersion 0
+#define X_ShmAttach 1
+#define X_ShmDetach 2
+#define X_ShmPutImage 3
+#define X_ShmGetImage 4
+#define X_ShmCreatePixmap 5
+
+typedef struct _ShmQueryVersion {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmQueryVersion */
+ CARD16 length B16;
+} xShmQueryVersionReq;
+#define sz_xShmQueryVersionReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL sharedPixmaps;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16; /* major version of SHM protocol */
+ CARD16 minorVersion B16; /* minor version of SHM protocol */
+ CARD16 uid B16;
+ CARD16 gid B16;
+ CARD8 pixmapFormat;
+ CARD8 pad0;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xShmQueryVersionReply;
+#define sz_xShmQueryVersionReply 32
+
+typedef struct _ShmAttach {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmAttach */
+ CARD16 length B16;
+ ShmSeg shmseg B32;
+ CARD32 shmid B32;
+ BOOL readOnly;
+ BYTE pad0;
+ CARD16 pad1 B16;
+} xShmAttachReq;
+#define sz_xShmAttachReq 16
+
+typedef struct _ShmDetach {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmDetach */
+ CARD16 length B16;
+ ShmSeg shmseg B32;
+} xShmDetachReq;
+#define sz_xShmDetachReq 8
+
+typedef struct _ShmPutImage {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmPutImage */
+ CARD16 length B16;
+ Drawable drawable B32;
+ GContext gc B32;
+ CARD16 totalWidth B16;
+ CARD16 totalHeight B16;
+ CARD16 srcX B16;
+ CARD16 srcY B16;
+ CARD16 srcWidth B16;
+ CARD16 srcHeight B16;
+ INT16 dstX B16;
+ INT16 dstY B16;
+ CARD8 depth;
+ CARD8 format;
+ CARD8 sendEvent;
+ CARD8 bpad;
+ ShmSeg shmseg B32;
+ CARD32 offset B32;
+} xShmPutImageReq;
+#define sz_xShmPutImageReq 40
+
+typedef struct _ShmGetImage {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmGetImage */
+ CARD16 length B16;
+ Drawable drawable B32;
+ INT16 x B16;
+ INT16 y B16;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD32 planeMask B32;
+ CARD8 format;
+ CARD8 pad0;
+ CARD8 pad1;
+ CARD8 pad2;
+ ShmSeg shmseg B32;
+ CARD32 offset B32;
+} xShmGetImageReq;
+#define sz_xShmGetImageReq 32
+
+typedef struct _ShmGetImageReply {
+ BYTE type; /* X_Reply */
+ CARD8 depth;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ VisualID visual B32;
+ CARD32 size B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xShmGetImageReply;
+#define sz_xShmGetImageReply 32
+
+typedef struct _ShmCreatePixmap {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmCreatePixmap */
+ CARD16 length B16;
+ Pixmap pid B32;
+ Drawable drawable B32;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD8 depth;
+ CARD8 pad0;
+ CARD8 pad1;
+ CARD8 pad2;
+ ShmSeg shmseg B32;
+ CARD32 offset B32;
+} xShmCreatePixmapReq;
+#define sz_xShmCreatePixmapReq 28
+
+typedef struct _ShmCompletion {
+ BYTE type; /* always eventBase + ShmCompletion */
+ BYTE bpad0;
+ CARD16 sequenceNumber B16;
+ Drawable drawable B32;
+ CARD16 minorEvent B16;
+ BYTE majorEvent;
+ BYTE bpad1;
+ ShmSeg shmseg B32;
+ CARD32 offset B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+} xShmCompletionEvent;
+#define sz_xShmCompletionEvent 32
+
+#undef ShmSeg
+#undef Drawable
+#undef VisualID
+#undef GContext
+#undef Pixmap
+
+#endif /* _SHMPROTO_H_ */
diff --git a/X11/extensions/xextproto.pc.in b/X11/extensions/xextproto.pc.in
index e85200fde..5e1af0862 100644
--- a/X11/extensions/xextproto.pc.in
+++ b/X11/extensions/xextproto.pc.in
@@ -1,9 +1,9 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XExtProto
-Description: XExt extension headers
-Version: @PACKAGE_VERSION@
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XExtProto
+Description: XExt extension headers
+Version: @PACKAGE_VERSION@
+Cflags: -I${includedir}
diff --git a/X11/extensions/xtestconst.h b/X11/extensions/xtestconst.h
index e74b9042e..f10240445 100644
--- a/X11/extensions/xtestconst.h
+++ b/X11/extensions/xtestconst.h
@@ -1,41 +1,41 @@
-/*
-
-Copyright 1992, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifndef _XTEST_CONST_H_
-#define _XTEST_CONST_H_
-
-#define XTestNumberEvents 0
-
-#define XTestNumberErrors 0
-
-#define XTestCurrentCursor ((Cursor)1)
-
-#define XTestMajorVersion 2
-#define XTestMinorVersion 2
-
-#define XTestExtensionName "XTEST"
-
-#endif
+/*
+
+Copyright 1992, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifndef _XTEST_CONST_H_
+#define _XTEST_CONST_H_
+
+#define XTestNumberEvents 0
+
+#define XTestNumberErrors 0
+
+#define XTestCurrentCursor ((Cursor)1)
+
+#define XTestMajorVersion 2
+#define XTestMinorVersion 2
+
+#define XTestExtensionName "XTEST"
+
+#endif
diff --git a/X11/extensions/xtestext1const.h b/X11/extensions/xtestext1const.h
index 656edc6ba..18951cfae 100644
--- a/X11/extensions/xtestext1const.h
+++ b/X11/extensions/xtestext1const.h
@@ -1,160 +1,160 @@
-/*
- * xtestext1.h
- *
- * X11 Input Synthesis Extension include file
- */
-
-/*
-
-
-Copyright 1986, 1987, 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation
-
-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 of Hewlett-Packard not be used in
-advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-Hewlett-Packard makes no representations about the
-suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-This software is not subject to any license of the American
-Telephone and Telegraph Company or of the Regents of the
-University of California.
-
-*/
-
-#ifndef _XTESTEXT1CONST_H
-#define _XTESTEXT1CONST_H 1
-
-#define XTestMAX_ACTION_LIST_SIZE 64
-#define XTestACTIONS_SIZE 28
-
-
-/*
- * used in the XTestPressButton and XTestPressKey functions
- */
-#define XTestPRESS 1 << 0
-#define XTestRELEASE 1 << 1
-#define XTestSTROKE 1 << 2
-
-/*
- * When doing a key or button stroke, the number of milliseconds
- * to delay between the press and the release of a key or button
- * in the XTestPressButton and XTestPressKey functions.
- */
-
-#define XTestSTROKE_DELAY_TIME 10
-
-/*
- * used in the XTestGetInput function
- */
-#define XTestEXCLUSIVE 1 << 0
-#define XTestPACKED_ACTIONS 1 << 1
-#define XTestPACKED_MOTION 1 << 2
-
-/*
- * used in the XTestFakeInput function
- */
-#define XTestFAKE_ACK_NOT_NEEDED 0
-#define XTestFAKE_ACK_REQUEST 1
-
-/*
- * used in the XTest extension initialization routine
- */
-#define XTestEXTENSION_NAME "XTestExtension1"
-#define XTestEVENT_COUNT 2
-
-/*
- * This is the definition for the format of the header byte
- * in the input action structures.
- */
-#define XTestACTION_TYPE_MASK 0x03 /* bits 0 and 1 */
-#define XTestKEY_STATE_MASK 0x04 /* bit 2 (key action) */
-#define XTestX_SIGN_BIT_MASK 0x04 /* bit 2 (motion action) */
-#define XTestY_SIGN_BIT_MASK 0x08 /* bit 3 (motion action) */
-#define XTestDEVICE_ID_MASK 0xf0 /* bits 4 through 7 */
-
-#define XTestMAX_DEVICE_ID 0x0f
-#define XTestPackDeviceID(x) (((x) & XTestMAX_DEVICE_ID) << 4)
-#define XTestUnpackDeviceID(x) (((x) & XTestDEVICE_ID_MASK) >> 4)
-
-/*
- * These are the possible action types.
- */
-#define XTestDELAY_ACTION 0
-#define XTestKEY_ACTION 1
-#define XTestMOTION_ACTION 2
-#define XTestJUMP_ACTION 3
-
-/*
- * These are the definitions for key/button motion input actions.
- */
-#define XTestKEY_UP 0x04
-#define XTestKEY_DOWN 0x00
-
-/*
- * These are the definitions for pointer relative motion input
- * actions.
- *
- * The sign bits for the x and y relative motions are contained
- * in the header byte. The x and y relative motions are packed
- * into one byte to make things fit in 32 bits. If the relative
- * motion range is larger than +/-15, use the pointer jump action.
- */
-#define XTestMOTION_MAX 15
-#define XTestMOTION_MIN -15
-
-#define XTestX_NEGATIVE 0x04
-#define XTestY_NEGATIVE 0x08
-
-#define XTestX_MOTION_MASK 0x0f
-#define XTestY_MOTION_MASK 0xf0
-
-#define XTestPackXMotionValue(x) ((x) & XTestX_MOTION_MASK)
-#define XTestPackYMotionValue(x) (((x) << 4) & XTestY_MOTION_MASK)
-
-#define XTestUnpackXMotionValue(x) ((x) & XTestX_MOTION_MASK)
-#define XTestUnpackYMotionValue(x) (((x) & XTestY_MOTION_MASK) >> 4)
-/*
- * These are the definitions for a long delay input action. It is
- * used when more than XTestSHORT_DELAY_TIME milliseconds of delay
- * (approximately one minute) is needed.
- *
- * The device ID for a delay is always set to XTestDELAY_DEVICE_ID.
- * This guarantees that a header byte with a value of 0 is not
- * a valid header, so it can be used as a flag to indicate that
- * there are no more input actions in an XTestInputAction event.
- */
-
-#define XTestSHORT_DELAY_TIME 0xffff
-#define XTestDELAY_DEVICE_ID 0x0f
-
-#endif /* _XTESTEXT1CONST_H */
+/*
+ * xtestext1.h
+ *
+ * X11 Input Synthesis Extension include file
+ */
+
+/*
+
+
+Copyright 1986, 1987, 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation
+
+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 of Hewlett-Packard not be used in
+advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+Hewlett-Packard makes no representations about the
+suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+This software is not subject to any license of the American
+Telephone and Telegraph Company or of the Regents of the
+University of California.
+
+*/
+
+#ifndef _XTESTEXT1CONST_H
+#define _XTESTEXT1CONST_H 1
+
+#define XTestMAX_ACTION_LIST_SIZE 64
+#define XTestACTIONS_SIZE 28
+
+
+/*
+ * used in the XTestPressButton and XTestPressKey functions
+ */
+#define XTestPRESS 1 << 0
+#define XTestRELEASE 1 << 1
+#define XTestSTROKE 1 << 2
+
+/*
+ * When doing a key or button stroke, the number of milliseconds
+ * to delay between the press and the release of a key or button
+ * in the XTestPressButton and XTestPressKey functions.
+ */
+
+#define XTestSTROKE_DELAY_TIME 10
+
+/*
+ * used in the XTestGetInput function
+ */
+#define XTestEXCLUSIVE 1 << 0
+#define XTestPACKED_ACTIONS 1 << 1
+#define XTestPACKED_MOTION 1 << 2
+
+/*
+ * used in the XTestFakeInput function
+ */
+#define XTestFAKE_ACK_NOT_NEEDED 0
+#define XTestFAKE_ACK_REQUEST 1
+
+/*
+ * used in the XTest extension initialization routine
+ */
+#define XTestEXTENSION_NAME "XTestExtension1"
+#define XTestEVENT_COUNT 2
+
+/*
+ * This is the definition for the format of the header byte
+ * in the input action structures.
+ */
+#define XTestACTION_TYPE_MASK 0x03 /* bits 0 and 1 */
+#define XTestKEY_STATE_MASK 0x04 /* bit 2 (key action) */
+#define XTestX_SIGN_BIT_MASK 0x04 /* bit 2 (motion action) */
+#define XTestY_SIGN_BIT_MASK 0x08 /* bit 3 (motion action) */
+#define XTestDEVICE_ID_MASK 0xf0 /* bits 4 through 7 */
+
+#define XTestMAX_DEVICE_ID 0x0f
+#define XTestPackDeviceID(x) (((x) & XTestMAX_DEVICE_ID) << 4)
+#define XTestUnpackDeviceID(x) (((x) & XTestDEVICE_ID_MASK) >> 4)
+
+/*
+ * These are the possible action types.
+ */
+#define XTestDELAY_ACTION 0
+#define XTestKEY_ACTION 1
+#define XTestMOTION_ACTION 2
+#define XTestJUMP_ACTION 3
+
+/*
+ * These are the definitions for key/button motion input actions.
+ */
+#define XTestKEY_UP 0x04
+#define XTestKEY_DOWN 0x00
+
+/*
+ * These are the definitions for pointer relative motion input
+ * actions.
+ *
+ * The sign bits for the x and y relative motions are contained
+ * in the header byte. The x and y relative motions are packed
+ * into one byte to make things fit in 32 bits. If the relative
+ * motion range is larger than +/-15, use the pointer jump action.
+ */
+#define XTestMOTION_MAX 15
+#define XTestMOTION_MIN -15
+
+#define XTestX_NEGATIVE 0x04
+#define XTestY_NEGATIVE 0x08
+
+#define XTestX_MOTION_MASK 0x0f
+#define XTestY_MOTION_MASK 0xf0
+
+#define XTestPackXMotionValue(x) ((x) & XTestX_MOTION_MASK)
+#define XTestPackYMotionValue(x) (((x) << 4) & XTestY_MOTION_MASK)
+
+#define XTestUnpackXMotionValue(x) ((x) & XTestX_MOTION_MASK)
+#define XTestUnpackYMotionValue(x) (((x) & XTestY_MOTION_MASK) >> 4)
+/*
+ * These are the definitions for a long delay input action. It is
+ * used when more than XTestSHORT_DELAY_TIME milliseconds of delay
+ * (approximately one minute) is needed.
+ *
+ * The device ID for a delay is always set to XTestDELAY_DEVICE_ID.
+ * This guarantees that a header byte with a value of 0 is not
+ * a valid header, so it can be used as a flag to indicate that
+ * there are no more input actions in an XTestInputAction event.
+ */
+
+#define XTestSHORT_DELAY_TIME 0xffff
+#define XTestDELAY_DEVICE_ID 0x0f
+
+#endif /* _XTESTEXT1CONST_H */
diff --git a/X11/extensions/xtestext1proto.h b/X11/extensions/xtestext1proto.h
index e9bdee09f..0bfa4ca2b 100644
--- a/X11/extensions/xtestext1proto.h
+++ b/X11/extensions/xtestext1proto.h
@@ -1,221 +1,221 @@
-/*
- * xtestext1.h
- *
- * X11 Input Synthesis Extension include file
- */
-
-/*
-Copyright 1986, 1987, 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation
-
-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 of Hewlett-Packard not be used in
-advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-Hewlett-Packard makes no representations about the
-suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-This software is not subject to any license of the American
-Telephone and Telegraph Company or of the Regents of the
-University of California.
-
-*/
-
-#ifndef _XTESTEXT1PROTO_H
-#define _XTESTEXT1PROTO_H 1
-
-#include <X11/extensions/xtestext1const.h>
-
-/*
- * the typedefs for CARD8, CARD16, and CARD32 are defined in Xmd.h
- */
-
-/*
- * XTest request type values
- *
- * used in the XTest extension protocol requests
- */
-#define X_TestFakeInput 1
-#define X_TestGetInput 2
-#define X_TestStopInput 3
-#define X_TestReset 4
-#define X_TestQueryInputSize 5
-
-/*
- * This defines the maximum size of a list of input actions
- * to be sent to the server. It should always be a multiple of
- * 4 so that the entire xTestFakeInputReq structure size is a
- * multiple of 4.
- */
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestFakeInput */
- CARD16 length B16; /* 2 + XTestMAX_ACTION_LIST_SIZE/4 */
- CARD32 ack B32;
- CARD8 action_list[XTestMAX_ACTION_LIST_SIZE];
-} xTestFakeInputReq;
-#define sz_xTestFakeInputReq (XTestMAX_ACTION_LIST_SIZE + 8)
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestGetInput */
- CARD16 length B16; /* 2 */
- CARD32 mode B32;
-} xTestGetInputReq;
-#define sz_xTestGetInputReq 8
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestStopInput */
- CARD16 length B32; /* 1 */
-} xTestStopInputReq;
-#define sz_xTestStopInputReq 4
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestReset */
- CARD16 length B16; /* 1 */
-} xTestResetReq;
-#define sz_xTestResetReq 4
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestQueryInputSize */
- CARD16 length B16; /* 1 */
-} xTestQueryInputSizeReq;
-#define sz_xTestQueryInputSizeReq 4
-
-/*
- * This is the definition of the reply for the xTestQueryInputSize
- * request. It should remain the same minimum size as other replies
- * (32 bytes).
- */
-typedef struct {
- CARD8 type; /* always X_Reply */
- CARD8 pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32; /* always 0 */
- CARD32 size_return B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xTestQueryInputSizeReply;
-
-/*
- * This is the definition for the input action wire event structure.
- * This event is sent to the client when the server has one or
- * more user input actions to report to the client. It must
- * remain the same size as all other wire events (32 bytes).
- */
-typedef struct {
- CARD8 type; /* always XTestInputActionType */
- CARD8 pad00;
- CARD16 sequenceNumber B16;
- CARD8 actions[XTestACTIONS_SIZE];
-} xTestInputActionEvent;
-
-/*
- * This is the definition for the xTestFakeAck wire event structure.
- * This event is sent to the client when the server has completely
- * processed its input action buffer, and is ready for more.
- * It must remain the same size as all other wire events (32 bytes).
- */
-typedef struct {
- CARD8 type; /* always XTestFakeAckType */
- CARD8 pad00;
- CARD16 sequenceNumber B16;
- CARD32 pad02 B32;
- CARD32 pad03 B32;
- CARD32 pad04 B32;
- CARD32 pad05 B32;
- CARD32 pad06 B32;
- CARD32 pad07 B32;
- CARD32 pad08 B32;
-} xTestFakeAckEvent;
-
-/*
- * These are the definitions for key/button motion input actions.
- */
-typedef struct {
- CARD8 header; /* which device, key up/down */
- CARD8 keycode; /* which key/button to move */
- CARD16 delay_time B16; /* how long to delay (in ms) */
-} XTestKeyInfo;
-
-/*
- * This is the definition for pointer jump input actions.
- */
-typedef struct {
- CARD8 header; /* which pointer */
- CARD8 pad1; /* unused padding byte */
- CARD16 jumpx B16; /* x coord to jump to */
- CARD16 jumpy B16; /* y coord to jump to */
- CARD16 delay_time B16; /* how long to delay (in ms) */
-} XTestJumpInfo;
-
-/*
- * These are the definitions for pointer relative motion input
- * actions.
- *
- * The sign bits for the x and y relative motions are contained
- * in the header byte. The x and y relative motions are packed
- * into one byte to make things fit in 32 bits. If the relative
- * motion range is larger than +/-15, use the pointer jump action.
- */
-
-typedef struct {
- CARD8 header; /* which pointer */
- CARD8 motion_data; /* x,y relative motion */
- CARD16 delay_time B16; /* how long to delay (in ms) */
-} XTestMotionInfo;
-
-/*
- * These are the definitions for a long delay input action. It is
- * used when more than XTestSHORT_DELAY_TIME milliseconds of delay
- * (approximately one minute) is needed.
- *
- * The device ID for a delay is always set to XTestDELAY_DEVICE_ID.
- * This guarantees that a header byte with a value of 0 is not
- * a valid header, so it can be used as a flag to indicate that
- * there are no more input actions in an XTestInputAction event.
- */
-
-typedef struct {
- CARD8 header; /* always XTestDELAY_DEVICE_ID */
- CARD8 pad1; /* unused padding byte */
- CARD16 pad2 B16; /* unused padding word */
- CARD32 delay_time B32; /* how long to delay (in ms) */
-} XTestDelayInfo;
-
-#endif /* _XTESTEXT1PROTO_H */
+/*
+ * xtestext1.h
+ *
+ * X11 Input Synthesis Extension include file
+ */
+
+/*
+Copyright 1986, 1987, 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation
+
+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 of Hewlett-Packard not be used in
+advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+Hewlett-Packard makes no representations about the
+suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+This software is not subject to any license of the American
+Telephone and Telegraph Company or of the Regents of the
+University of California.
+
+*/
+
+#ifndef _XTESTEXT1PROTO_H
+#define _XTESTEXT1PROTO_H 1
+
+#include <X11/extensions/xtestext1const.h>
+
+/*
+ * the typedefs for CARD8, CARD16, and CARD32 are defined in Xmd.h
+ */
+
+/*
+ * XTest request type values
+ *
+ * used in the XTest extension protocol requests
+ */
+#define X_TestFakeInput 1
+#define X_TestGetInput 2
+#define X_TestStopInput 3
+#define X_TestReset 4
+#define X_TestQueryInputSize 5
+
+/*
+ * This defines the maximum size of a list of input actions
+ * to be sent to the server. It should always be a multiple of
+ * 4 so that the entire xTestFakeInputReq structure size is a
+ * multiple of 4.
+ */
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 XTestReqType; /* always X_TestFakeInput */
+ CARD16 length B16; /* 2 + XTestMAX_ACTION_LIST_SIZE/4 */
+ CARD32 ack B32;
+ CARD8 action_list[XTestMAX_ACTION_LIST_SIZE];
+} xTestFakeInputReq;
+#define sz_xTestFakeInputReq (XTestMAX_ACTION_LIST_SIZE + 8)
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 XTestReqType; /* always X_TestGetInput */
+ CARD16 length B16; /* 2 */
+ CARD32 mode B32;
+} xTestGetInputReq;
+#define sz_xTestGetInputReq 8
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 XTestReqType; /* always X_TestStopInput */
+ CARD16 length B32; /* 1 */
+} xTestStopInputReq;
+#define sz_xTestStopInputReq 4
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 XTestReqType; /* always X_TestReset */
+ CARD16 length B16; /* 1 */
+} xTestResetReq;
+#define sz_xTestResetReq 4
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 XTestReqType; /* always X_TestQueryInputSize */
+ CARD16 length B16; /* 1 */
+} xTestQueryInputSizeReq;
+#define sz_xTestQueryInputSizeReq 4
+
+/*
+ * This is the definition of the reply for the xTestQueryInputSize
+ * request. It should remain the same minimum size as other replies
+ * (32 bytes).
+ */
+typedef struct {
+ CARD8 type; /* always X_Reply */
+ CARD8 pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32; /* always 0 */
+ CARD32 size_return B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xTestQueryInputSizeReply;
+
+/*
+ * This is the definition for the input action wire event structure.
+ * This event is sent to the client when the server has one or
+ * more user input actions to report to the client. It must
+ * remain the same size as all other wire events (32 bytes).
+ */
+typedef struct {
+ CARD8 type; /* always XTestInputActionType */
+ CARD8 pad00;
+ CARD16 sequenceNumber B16;
+ CARD8 actions[XTestACTIONS_SIZE];
+} xTestInputActionEvent;
+
+/*
+ * This is the definition for the xTestFakeAck wire event structure.
+ * This event is sent to the client when the server has completely
+ * processed its input action buffer, and is ready for more.
+ * It must remain the same size as all other wire events (32 bytes).
+ */
+typedef struct {
+ CARD8 type; /* always XTestFakeAckType */
+ CARD8 pad00;
+ CARD16 sequenceNumber B16;
+ CARD32 pad02 B32;
+ CARD32 pad03 B32;
+ CARD32 pad04 B32;
+ CARD32 pad05 B32;
+ CARD32 pad06 B32;
+ CARD32 pad07 B32;
+ CARD32 pad08 B32;
+} xTestFakeAckEvent;
+
+/*
+ * These are the definitions for key/button motion input actions.
+ */
+typedef struct {
+ CARD8 header; /* which device, key up/down */
+ CARD8 keycode; /* which key/button to move */
+ CARD16 delay_time B16; /* how long to delay (in ms) */
+} XTestKeyInfo;
+
+/*
+ * This is the definition for pointer jump input actions.
+ */
+typedef struct {
+ CARD8 header; /* which pointer */
+ CARD8 pad1; /* unused padding byte */
+ CARD16 jumpx B16; /* x coord to jump to */
+ CARD16 jumpy B16; /* y coord to jump to */
+ CARD16 delay_time B16; /* how long to delay (in ms) */
+} XTestJumpInfo;
+
+/*
+ * These are the definitions for pointer relative motion input
+ * actions.
+ *
+ * The sign bits for the x and y relative motions are contained
+ * in the header byte. The x and y relative motions are packed
+ * into one byte to make things fit in 32 bits. If the relative
+ * motion range is larger than +/-15, use the pointer jump action.
+ */
+
+typedef struct {
+ CARD8 header; /* which pointer */
+ CARD8 motion_data; /* x,y relative motion */
+ CARD16 delay_time B16; /* how long to delay (in ms) */
+} XTestMotionInfo;
+
+/*
+ * These are the definitions for a long delay input action. It is
+ * used when more than XTestSHORT_DELAY_TIME milliseconds of delay
+ * (approximately one minute) is needed.
+ *
+ * The device ID for a delay is always set to XTestDELAY_DEVICE_ID.
+ * This guarantees that a header byte with a value of 0 is not
+ * a valid header, so it can be used as a flag to indicate that
+ * there are no more input actions in an XTestInputAction event.
+ */
+
+typedef struct {
+ CARD8 header; /* always XTestDELAY_DEVICE_ID */
+ CARD8 pad1; /* unused padding byte */
+ CARD16 pad2 B16; /* unused padding word */
+ CARD32 delay_time B32; /* how long to delay (in ms) */
+} XTestDelayInfo;
+
+#endif /* _XTESTEXT1PROTO_H */
diff --git a/X11/extensions/xtestproto.h b/X11/extensions/xtestproto.h
index 4f8db2652..b96b43b38 100644
--- a/X11/extensions/xtestproto.h
+++ b/X11/extensions/xtestproto.h
@@ -1,124 +1,124 @@
-/*
-
-Copyright 1992, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifndef _XTESTPROTO_H_
-#define _XTESTPROTO_H_
-
-#include <X11/extensions/xtestconst.h>
-
-#define Window CARD32
-#define Time CARD32
-#define Cursor CARD32
-
-#define X_XTestGetVersion 0
-#define X_XTestCompareCursor 1
-#define X_XTestFakeInput 2
-#define X_XTestGrabControl 3
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 xtReqType; /* always X_XTestGetVersion */
- CARD16 length B16;
- CARD8 majorVersion;
- CARD8 pad;
- CARD16 minorVersion B16;
-} xXTestGetVersionReq;
-#define sz_xXTestGetVersionReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 majorVersion;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 minorVersion B16;
- CARD16 pad0 B16;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xXTestGetVersionReply;
-#define sz_xXTestGetVersionReply 32
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 xtReqType; /* always X_XTestCompareCursor */
- CARD16 length B16;
- Window window B32;
- Cursor cursor B32;
-} xXTestCompareCursorReq;
-#define sz_xXTestCompareCursorReq 12
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL same;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xXTestCompareCursorReply;
-#define sz_xXTestCompareCursorReply 32
-
-/* used only on the client side */
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 xtReqType; /* always X_XTestFakeInput */
- CARD16 length B16;
- BYTE type;
- BYTE detail;
- CARD16 pad0 B16;
- Time time B32;
- Window root B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- INT16 rootX B16, rootY B16;
- CARD32 pad3 B32;
- CARD16 pad4 B16;
- CARD8 pad5;
- CARD8 deviceid;
-} xXTestFakeInputReq;
-#define sz_xXTestFakeInputReq 36
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 xtReqType; /* always X_XTestGrabControl */
- CARD16 length B16;
- BOOL impervious;
- CARD8 pad0;
- CARD8 pad1;
- CARD8 pad2;
-} xXTestGrabControlReq;
-#define sz_xXTestGrabControlReq 8
-
-#undef Window
-#undef Time
-#undef Cursor
-
-#endif /* _XTESTPROTO_H_ */
+/*
+
+Copyright 1992, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifndef _XTESTPROTO_H_
+#define _XTESTPROTO_H_
+
+#include <X11/extensions/xtestconst.h>
+
+#define Window CARD32
+#define Time CARD32
+#define Cursor CARD32
+
+#define X_XTestGetVersion 0
+#define X_XTestCompareCursor 1
+#define X_XTestFakeInput 2
+#define X_XTestGrabControl 3
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 xtReqType; /* always X_XTestGetVersion */
+ CARD16 length B16;
+ CARD8 majorVersion;
+ CARD8 pad;
+ CARD16 minorVersion B16;
+} xXTestGetVersionReq;
+#define sz_xXTestGetVersionReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 majorVersion;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 minorVersion B16;
+ CARD16 pad0 B16;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xXTestGetVersionReply;
+#define sz_xXTestGetVersionReply 32
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 xtReqType; /* always X_XTestCompareCursor */
+ CARD16 length B16;
+ Window window B32;
+ Cursor cursor B32;
+} xXTestCompareCursorReq;
+#define sz_xXTestCompareCursorReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL same;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xXTestCompareCursorReply;
+#define sz_xXTestCompareCursorReply 32
+
+/* used only on the client side */
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 xtReqType; /* always X_XTestFakeInput */
+ CARD16 length B16;
+ BYTE type;
+ BYTE detail;
+ CARD16 pad0 B16;
+ Time time B32;
+ Window root B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ INT16 rootX B16, rootY B16;
+ CARD32 pad3 B32;
+ CARD16 pad4 B16;
+ CARD8 pad5;
+ CARD8 deviceid;
+} xXTestFakeInputReq;
+#define sz_xXTestFakeInputReq 36
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 xtReqType; /* always X_XTestGrabControl */
+ CARD16 length B16;
+ BOOL impervious;
+ CARD8 pad0;
+ CARD8 pad1;
+ CARD8 pad2;
+} xXTestGrabControlReq;
+#define sz_xXTestGrabControlReq 8
+
+#undef Window
+#undef Time
+#undef Cursor
+
+#endif /* _XTESTPROTO_H_ */
diff --git a/X11/xtrans/.gitignore b/X11/xtrans/.gitignore
new file mode 100644
index 000000000..4010eeebb
--- /dev/null
+++ b/X11/xtrans/.gitignore
@@ -0,0 +1,84 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libxtrans
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
+Xtrans.html
+Xtrans.pdf
+Xtrans.txt
+index.Xtrans.html.raw
+index.Xtrans.ps.raw
+index.Xtrans.txt.raw
diff --git a/X11/xtrans/doc/.gitignore b/X11/xtrans/doc/.gitignore
new file mode 100644
index 000000000..6b38d4b1f
--- /dev/null
+++ b/X11/xtrans/doc/.gitignore
@@ -0,0 +1,6 @@
+# Add & Override for this directory and it's subdirectories
+*.html
+*.ps
+*.pdf
+*.txt
+*.db
diff --git a/apps/xwininfo/.gitignore b/apps/xwininfo/.gitignore
new file mode 100644
index 000000000..3d24f569d
--- /dev/null
+++ b/apps/xwininfo/.gitignore
@@ -0,0 +1,79 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for xwininfo
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
+xwininfo
diff --git a/fontconfig/.gitignore b/fontconfig/.gitignore
new file mode 100644
index 000000000..894a6a701
--- /dev/null
+++ b/fontconfig/.gitignore
@@ -0,0 +1,99 @@
+tags
+TAGS
+*.tar.gz
+.libs
+.deps
+*.o
+*.lo
+*.la
+*~
+*.orig
+*.rej
+ChangeLog
+ChangeLog-*
+Makefile
+Makefile.in
+aclocal.m4
+autom4te.cache
+config.guess
+config.h
+config.h.in
+config.log
+config.status
+config.sub
+configure
+depcomp
+fontconfig-zip
+fontconfig.pc
+fontconfig.spec
+fonts.conf
+install-sh
+doltcompile
+libtool
+ltmain.sh
+missing
+stamp-h1
+manpage.log
+doc/*.3
+doc/confdir.sgml
+doc/edit-sgml
+doc/fcatomic.sgml
+doc/fcblanks.sgml
+doc/fccache.sgml
+doc/fccharset.sgml
+doc/fcconfig.sgml
+doc/fcconstant.sgml
+doc/fcdircache.sgml
+doc/fcfile.sgml
+doc/fcformat.sgml
+doc/fcfontset.sgml
+doc/fcfreetype.sgml
+doc/fclangset.sgml
+doc/fcinit.sgml
+doc/fcmatrix.sgml
+doc/fcobjectset.sgml
+doc/fcobjecttype.sgml
+doc/fcpattern.sgml
+doc/fcstring.sgml
+doc/fcstrset.sgml
+doc/fcvalue.sgml
+doc/fontconfig-devel.pdf
+doc/fontconfig-devel.txt
+doc/fontconfig-devel
+doc/fontconfig-user.html
+doc/fontconfig-user.pdf
+doc/fontconfig-user.txt
+doc/fonts-conf.5
+doc/func.refs
+doc/local-fontconfig-devel.sgml
+doc/local-fontconfig-user.sgml
+doc/version.sgml
+doc/devel-man
+fc-arch/fc-arch
+fc-arch/fcarch.h
+fc-cache/fc-cache
+fc-cache/fc-cache.1
+fc-case/fc-case
+fc-case/fccase.h
+fc-cat/fc-cat
+fc-cat/fc-cat.1
+fc-glyphname/fc-glyphname
+fc-glyphname/fcglyphname.h
+fc-lang/fc-lang
+fc-lang/fclang.h
+fc-list/fc-list
+fc-list/fc-list.1
+fc-match/fc-match
+fc-match/fc-match.1
+fc-pattern/fc-pattern
+fc-pattern/fc-pattern.1
+fc-query/fc-query
+fc-query/fc-query.1
+fc-scan/fc-scan
+fc-scan/fc-scan.1
+src/fcarch
+src/fontconfig.def
+fcalias.h
+fcaliastail.h
+src/fcftalias.h
+src/fcftaliastail.h
diff --git a/gl/.gitignore b/gl/.gitignore
new file mode 100644
index 000000000..858254445
--- /dev/null
+++ b/gl/.gitignore
@@ -0,0 +1,78 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for glproto
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libX11/.gitignore b/libX11/.gitignore
new file mode 100644
index 000000000..e0eee0bda
--- /dev/null
+++ b/libX11/.gitignore
@@ -0,0 +1,80 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libX11
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
+doltcompile
+doltlibtool
diff --git a/libX11/NEWS b/libX11/NEWS
index e03d55624..3cceeff75 100644
--- a/libX11/NEWS
+++ b/libX11/NEWS
@@ -1,185 +1,185 @@
-Version 1.1.2 - 2007-06-03
-
-* Security fixes:
- * Fix CVE-2007-1667: Multiple integer overflows in the XGetPixel() and
- XInitImage() functions.
- * Bug #9279: Fixed a file descriptor leak.
-
-* Xlib/XCB: Ensure _XReadEvents reads at least one new event and blocks for
- exactly one event. Large performance improvement for XIfEvent and similar.
-
-* Hold XCB's Xlib lock even when only the user lock (XLockDisplay) is held.
- An Xlib client can query Display state, such as with NextRequest, while it
- holds only the Xlib user lock (between XLockDisplay and XUnlockDisplay), so
- XCB requests in other threads should be blocked when the Xlib user lock is
- held. We acquire the lock even when XInitThreads was not called, so that
- pure XCB code can use multiple threads even in an otherwise single-threaded
- Xlib application.
-
-* Allow re-entrant Xlib calls from _XIOError.
- Some libraries try to clean up X resources from atexit handlers, _fini, or
- C++ destructors. To make these work, downgrade the Display lock to a user
- lock (as in XLockDisplay) before calling exit(3). This blocks Xlib calls
- from threads other than the one calling exit(3) while still allowing the
- exit handlers to call Xlib.
-
-* Xlib/XCB: Avoid re-crashing after _XIOError.
-
-* Xlib/XCB: Only remove pending_requests when there are provably no more responses.
-
-* For NetBSD, define XTHREADLIB and XTHREAD_CFLAGS.
-
-* Bug #7703: Fixed XSetSizeHints() et al wrt use of uninitialized data.
- Now only those fields of the respective hint struct are set that
- are actually valid in the input data.
-
-* Bug #10292: Fixed a memory leak related to XOpenDisplay() in the XCB code.
-
-* Bug #7713: Initialize all of the event's fields before sending it.
-
-* Bug #10562: Define _GNU_SOURCE on glibc systems.
-
-* Use unistd.h to get getresuid() and friends, now that we have _GNU_SOURCE
- defined.
-
-* Switched function definitions from K&R to ANSI style.
-
-* Many constness fixes.
-
-* Fixed a few warnings.
-
-* Fix 64bit issues with reallocation.
-
-* Manpage fixes:
- * Add man pages for XKB APIs.
- (Volunteer needed to convert prototypes in man pages to ANSI C style...)
- * Protect C comments and #defines in XKB man pages from being mangled by cpp
- * Fix typo in nroff macro in XkbAddGeomOverlayKey.man
- * Bug #9695: Fixed a few argument types in the XOpenIM manpage.
- * Markup tweak for XOpenIM.
- * Bug #9696: refer to XDefineCursor() instead of XDefineCusor().
- * Bug #9697: Fixed documentation of XVisualInfo struct. The "depth" member
- was said to be unsigned int, but it's signed.
-
-* nls fixes:
- * Update el_GR.UTF-8/Compose.pre to match changes in xkeyboard-config cvs.
- * For nls/*.pre, allow people to comment lines by starting them with '##'.
-
-* Build system fixes:
- * Add autogen.sh to EXTRA_DIST.
- * Makefile.am: make ChangeLog hook safer
- * Don't distribute the configure-generated XlibConf.h in tarballs.
-
-Version 1.1.1 - 2006-11-30
-
-The "xcompmgr is hard, let's go releasing" release
-
-* Fix Bug #9154 and friends, to unbreak xcompmgr:
- Always process an event for _XReadEvents, even if an error occurs.
- Previously, process_responses (in the wait_for_first_event case called
- from _XReadEvents) considered any return from xcb_wait_for_event
- sufficient to think it had processed an event. If xcb_wait_for_event
- returned an error, and no more events occurred before process_responses
- called xcb_poll_for_event, process_responses would try to return with
- dpy->head NULL, and would fail an assertion for the _XReadEvents
- postcondition. Now, process_responses continues using xcb_wait_for_event
- until it gets an event.
-
-* Bug #9153: Fix access to freed memory.
- The fix for bug #8622 introduced a smaller bug where _XReply would
- read memory shortly after freeing it. This patch caches the needed
- value in a stack-allocated variable before the heap-allocated memory
- is freed.
-
-* libx11 doesn't use inputproto in public headers; don't require it in x11.pc.
- Based on a Debian patch.
-
-* Debian bug #354315: Clarify return value in XGetWindowAttributes man page.
- Patch by Debian user Ross Combs.
-
-
-Version 1.1 - 2006-11-23
-
-* Add note in man-page that XListFontsWithInfo is not thread-safe. _XReply
- drops the Display lock, so the value of dpy->request may change before
- _XReply is called again. Jamey Sharp discovered this by inspection a few
- years ago.
-
-* Fix Bug #8622, by fixing the response processing order for threaded apps.
- process_responses (the common code for _XReply, _XReadEvents, and
- _XEventsQueued) now handles responses in order, by adding condition variables
- to the list of outstanding requests in dpy->xcb->pending_requests, and
- blocking on them when those requests should get processed, to allow _XReply
- to process them; if actually called from _XReply, it returns when _XReply's
- request should get processed. _XReply broadcasts on its condition variable
- after it has read its reply and re-acquired the display lock.
-
-* Don't hold the display lock around callbacks to the application. This avoids
- recursive locking of the display lock (which triggers an XCB locking
- assertion), particularly with emacs.
-
-* Add xcb-xlib dependency to x11.pc when built against XCB.
-
-* Allocate the right amount of memory for dpy->lock_fns. Fixes a crash on
- startup with gdk.
-
-
-Version 1.1 RC2 - 2006-11-02
-
-Benno Schulenberg:
- nls: remove duplicate compose entries (bug #2286)
- nls: remove shadowed compose entries (bug #2286)
- nls (en_US): remove long compositions that override shorter (bug #2286)
-
-Caolan McNamara:
- XKB geometry: fix leaks in GetKeyboardByName (bug #8099)
-
-David Nusinow:
- Dynamically generate internal manpage section using __libmanpagesuffix__ so that it actually matches the section if you don't use 3X11
-
-Jamey Sharp:
- Add correct Display locking to XKB functions.
- XKB bugfix: SyncHandle must be called after UnlockDisplay, not before.
- XCB: check for and handle I/O errors in _XGetXCBBuffer.
-
-Matthias Hopf:
- Fix double open of compose file.
-
-
-Version 1.1 RC1 - 2006-10-06
-
-This release includes the Xlib/XCB work, which uses XCB as the Xlib transport
-layer, and allows a client to use both Xlib and XCB on the same connection.
-This allows clients to transition from Xlib to XCB incrementally.
-
-Clients which link only to libX11, and do not use XCB, should not notice any
-differences in this release. Clients desiring XCB interoperability should
-additionally #include <X11/Xlib-xcb.h>, link to libX11-xcb, use
-XGetXCBConnection(dpy) to obtain the underlying XCB connection, and then use
-XCB functions directly on that connection.
-
-Note that while a client can issue requests and handle their replies or errors
-with either Xlib or XCB, only one can own and handle the event queue. By
-default, Xlib must own the event queue, for compatibility with legacy Xlib
-clients. Clients can use the function XSetEventQueueOwner immediately after
-XOpenDisplay to let XCB own the event queue instead. Clients may not call
-this function after processing any responses, as this will potentially lose
-responses.
-
-We expect to have an RC2 release corresponding to the Xorg RC2 schedule, which
-should include additional internal architecture enhancements, but no
-user-visible changes. 1.0 final should match RC2.
-
-Other smaller changes in this release:
-* correct ChangeLog generation
-* support running lint and sparse
-* Autoconf 2.60
-* fix man page for XUrgencyHint
-* improve man pages for XGrabButton, XGrabKey, XGetWindowProperty
-* new locales: as_IN.UTF-8, kn_IN.UTF-8, ml_IN.UTF-8, or_IN.UTF-8,
- te_IN.UTF-8, ur_IN.UTF-8
-* on systems with both UNIXCONN and LOCALCONN, try unix if local fails
-* fix sparse warnings
-* ansify static functions
-
--- Josh Triplett <josh@freedesktop.org>, Jamey Sharp <jamey@minilop.net>
+Version 1.1.2 - 2007-06-03
+
+* Security fixes:
+ * Fix CVE-2007-1667: Multiple integer overflows in the XGetPixel() and
+ XInitImage() functions.
+ * Bug #9279: Fixed a file descriptor leak.
+
+* Xlib/XCB: Ensure _XReadEvents reads at least one new event and blocks for
+ exactly one event. Large performance improvement for XIfEvent and similar.
+
+* Hold XCB's Xlib lock even when only the user lock (XLockDisplay) is held.
+ An Xlib client can query Display state, such as with NextRequest, while it
+ holds only the Xlib user lock (between XLockDisplay and XUnlockDisplay), so
+ XCB requests in other threads should be blocked when the Xlib user lock is
+ held. We acquire the lock even when XInitThreads was not called, so that
+ pure XCB code can use multiple threads even in an otherwise single-threaded
+ Xlib application.
+
+* Allow re-entrant Xlib calls from _XIOError.
+ Some libraries try to clean up X resources from atexit handlers, _fini, or
+ C++ destructors. To make these work, downgrade the Display lock to a user
+ lock (as in XLockDisplay) before calling exit(3). This blocks Xlib calls
+ from threads other than the one calling exit(3) while still allowing the
+ exit handlers to call Xlib.
+
+* Xlib/XCB: Avoid re-crashing after _XIOError.
+
+* Xlib/XCB: Only remove pending_requests when there are provably no more responses.
+
+* For NetBSD, define XTHREADLIB and XTHREAD_CFLAGS.
+
+* Bug #7703: Fixed XSetSizeHints() et al wrt use of uninitialized data.
+ Now only those fields of the respective hint struct are set that
+ are actually valid in the input data.
+
+* Bug #10292: Fixed a memory leak related to XOpenDisplay() in the XCB code.
+
+* Bug #7713: Initialize all of the event's fields before sending it.
+
+* Bug #10562: Define _GNU_SOURCE on glibc systems.
+
+* Use unistd.h to get getresuid() and friends, now that we have _GNU_SOURCE
+ defined.
+
+* Switched function definitions from K&R to ANSI style.
+
+* Many constness fixes.
+
+* Fixed a few warnings.
+
+* Fix 64bit issues with reallocation.
+
+* Manpage fixes:
+ * Add man pages for XKB APIs.
+ (Volunteer needed to convert prototypes in man pages to ANSI C style...)
+ * Protect C comments and #defines in XKB man pages from being mangled by cpp
+ * Fix typo in nroff macro in XkbAddGeomOverlayKey.man
+ * Bug #9695: Fixed a few argument types in the XOpenIM manpage.
+ * Markup tweak for XOpenIM.
+ * Bug #9696: refer to XDefineCursor() instead of XDefineCusor().
+ * Bug #9697: Fixed documentation of XVisualInfo struct. The "depth" member
+ was said to be unsigned int, but it's signed.
+
+* nls fixes:
+ * Update el_GR.UTF-8/Compose.pre to match changes in xkeyboard-config cvs.
+ * For nls/*.pre, allow people to comment lines by starting them with '##'.
+
+* Build system fixes:
+ * Add autogen.sh to EXTRA_DIST.
+ * Makefile.am: make ChangeLog hook safer
+ * Don't distribute the configure-generated XlibConf.h in tarballs.
+
+Version 1.1.1 - 2006-11-30
+
+The "xcompmgr is hard, let's go releasing" release
+
+* Fix Bug #9154 and friends, to unbreak xcompmgr:
+ Always process an event for _XReadEvents, even if an error occurs.
+ Previously, process_responses (in the wait_for_first_event case called
+ from _XReadEvents) considered any return from xcb_wait_for_event
+ sufficient to think it had processed an event. If xcb_wait_for_event
+ returned an error, and no more events occurred before process_responses
+ called xcb_poll_for_event, process_responses would try to return with
+ dpy->head NULL, and would fail an assertion for the _XReadEvents
+ postcondition. Now, process_responses continues using xcb_wait_for_event
+ until it gets an event.
+
+* Bug #9153: Fix access to freed memory.
+ The fix for bug #8622 introduced a smaller bug where _XReply would
+ read memory shortly after freeing it. This patch caches the needed
+ value in a stack-allocated variable before the heap-allocated memory
+ is freed.
+
+* libx11 doesn't use inputproto in public headers; don't require it in x11.pc.
+ Based on a Debian patch.
+
+* Debian bug #354315: Clarify return value in XGetWindowAttributes man page.
+ Patch by Debian user Ross Combs.
+
+
+Version 1.1 - 2006-11-23
+
+* Add note in man-page that XListFontsWithInfo is not thread-safe. _XReply
+ drops the Display lock, so the value of dpy->request may change before
+ _XReply is called again. Jamey Sharp discovered this by inspection a few
+ years ago.
+
+* Fix Bug #8622, by fixing the response processing order for threaded apps.
+ process_responses (the common code for _XReply, _XReadEvents, and
+ _XEventsQueued) now handles responses in order, by adding condition variables
+ to the list of outstanding requests in dpy->xcb->pending_requests, and
+ blocking on them when those requests should get processed, to allow _XReply
+ to process them; if actually called from _XReply, it returns when _XReply's
+ request should get processed. _XReply broadcasts on its condition variable
+ after it has read its reply and re-acquired the display lock.
+
+* Don't hold the display lock around callbacks to the application. This avoids
+ recursive locking of the display lock (which triggers an XCB locking
+ assertion), particularly with emacs.
+
+* Add xcb-xlib dependency to x11.pc when built against XCB.
+
+* Allocate the right amount of memory for dpy->lock_fns. Fixes a crash on
+ startup with gdk.
+
+
+Version 1.1 RC2 - 2006-11-02
+
+Benno Schulenberg:
+ nls: remove duplicate compose entries (bug #2286)
+ nls: remove shadowed compose entries (bug #2286)
+ nls (en_US): remove long compositions that override shorter (bug #2286)
+
+Caolan McNamara:
+ XKB geometry: fix leaks in GetKeyboardByName (bug #8099)
+
+David Nusinow:
+ Dynamically generate internal manpage section using __libmanpagesuffix__ so that it actually matches the section if you don't use 3X11
+
+Jamey Sharp:
+ Add correct Display locking to XKB functions.
+ XKB bugfix: SyncHandle must be called after UnlockDisplay, not before.
+ XCB: check for and handle I/O errors in _XGetXCBBuffer.
+
+Matthias Hopf:
+ Fix double open of compose file.
+
+
+Version 1.1 RC1 - 2006-10-06
+
+This release includes the Xlib/XCB work, which uses XCB as the Xlib transport
+layer, and allows a client to use both Xlib and XCB on the same connection.
+This allows clients to transition from Xlib to XCB incrementally.
+
+Clients which link only to libX11, and do not use XCB, should not notice any
+differences in this release. Clients desiring XCB interoperability should
+additionally #include <X11/Xlib-xcb.h>, link to libX11-xcb, use
+XGetXCBConnection(dpy) to obtain the underlying XCB connection, and then use
+XCB functions directly on that connection.
+
+Note that while a client can issue requests and handle their replies or errors
+with either Xlib or XCB, only one can own and handle the event queue. By
+default, Xlib must own the event queue, for compatibility with legacy Xlib
+clients. Clients can use the function XSetEventQueueOwner immediately after
+XOpenDisplay to let XCB own the event queue instead. Clients may not call
+this function after processing any responses, as this will potentially lose
+responses.
+
+We expect to have an RC2 release corresponding to the Xorg RC2 schedule, which
+should include additional internal architecture enhancements, but no
+user-visible changes. 1.0 final should match RC2.
+
+Other smaller changes in this release:
+* correct ChangeLog generation
+* support running lint and sparse
+* Autoconf 2.60
+* fix man page for XUrgencyHint
+* improve man pages for XGrabButton, XGrabKey, XGetWindowProperty
+* new locales: as_IN.UTF-8, kn_IN.UTF-8, ml_IN.UTF-8, or_IN.UTF-8,
+ te_IN.UTF-8, ur_IN.UTF-8
+* on systems with both UNIXCONN and LOCALCONN, try unix if local fails
+* fix sparse warnings
+* ansify static functions
+
+-- Josh Triplett <josh@freedesktop.org>, Jamey Sharp <jamey@minilop.net>
diff --git a/libX11/README b/libX11/README
index befb5a6d9..54f79b934 100644
--- a/libX11/README
+++ b/libX11/README
@@ -1,39 +1,39 @@
-libX11 - Core X11 protocol client library
-
-Documentation for this library can be found in the included man pages,
-the xlib spec from the doc/xorg-docs module, also available at:
-
- http://xorg.freedesktop.org/releases/X11R7.0/doc/PDF/xlib.pdf
-
-and the O'Reilly Xlib books, which they have made freely available online,
-though only for older versions of X11:
-
- - X Series Volume 2: Xlib Reference Manual (1989, covers X11R3)
- http://www.archive.org/details/xlibretmanver1102nyemiss
-
- - X Series Volume 2: Xlib Reference Manual, 2nd Edition (1990, covers X11R4)
- http://www.archive.org/details/xlibrefmanv115ed02nyemiss
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/lib/libX11
-
- http://cgit.freedesktop.org/xorg/lib/libX11
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+libX11 - Core X11 protocol client library
+
+Documentation for this library can be found in the included man pages,
+the xlib spec from the doc/xorg-docs module, also available at:
+
+ http://xorg.freedesktop.org/releases/X11R7.0/doc/PDF/xlib.pdf
+
+and the O'Reilly Xlib books, which they have made freely available online,
+though only for older versions of X11:
+
+ - X Series Volume 2: Xlib Reference Manual (1989, covers X11R3)
+ http://www.archive.org/details/xlibretmanver1102nyemiss
+
+ - X Series Volume 2: Xlib Reference Manual, 2nd Edition (1990, covers X11R4)
+ http://www.archive.org/details/xlibrefmanv115ed02nyemiss
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/lib/libX11
+
+ http://cgit.freedesktop.org/xorg/lib/libX11
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/libX11/include/X11/.gitignore b/libX11/include/X11/.gitignore
new file mode 100644
index 000000000..6a2c1215e
--- /dev/null
+++ b/libX11/include/X11/.gitignore
@@ -0,0 +1,2 @@
+# Add & Override for this directory and it's subdirectories
+XlibConf.h
diff --git a/libX11/include/X11/XlibConf.h.in b/libX11/include/X11/XlibConf.h.in
index 8f36ac1d9..320350018 100644
--- a/libX11/include/X11/XlibConf.h.in
+++ b/libX11/include/X11/XlibConf.h.in
@@ -1,37 +1,37 @@
-/*
- * Copyright © 2005 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#ifndef _XLIBCONF_H_
-#define _XLIBCONF_H_
-/*
- * This header file exports defines necessary to correctly
- * use Xlibint.h both inside Xlib and by external libraries
- * such as extensions.
- */
-
-/* Threading support? */
-#undef XTHREADS
-
-/* Use multi-threaded libc functions? */
-#undef XUSE_MTSAFE_API
-
-#endif /* _XLIBCONF_H_ */
+/*
+ * Copyright © 2005 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#ifndef _XLIBCONF_H_
+#define _XLIBCONF_H_
+/*
+ * This header file exports defines necessary to correctly
+ * use Xlibint.h both inside Xlib and by external libraries
+ * such as extensions.
+ */
+
+/* Threading support? */
+#undef XTHREADS
+
+/* Use multi-threaded libc functions? */
+#undef XUSE_MTSAFE_API
+
+#endif /* _XLIBCONF_H_ */
diff --git a/libX11/man/AllPlanes.man b/libX11/man/AllPlanes.man
index 2311447b7..55ab17925 100644
--- a/libX11/man/AllPlanes.man
+++ b/libX11/man/AllPlanes.man
@@ -1,379 +1,379 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH AllPlanes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-AllPlanes, BlackPixel, WhitePixel, ConnectionNumber, DefaultColormap, DefaultDepth, XListDepths, DefaultGC, DefaultRootWindow, DefaultScreenOfDisplay, DefaultScreen, DefaultVisual, DisplayCells, DisplayPlanes, DisplayString, XMaxRequestSize, XExtendedMaxRequestSize, LastKnownRequestProcessed, NextRequest, ProtocolVersion, ProtocolRevision, QLength, RootWindow, ScreenCount, ScreenOfDisplay, ServerVendor, VendorRelease \- Display macros and functions
-.SH SYNTAX
-unsigned long AllPlanes;
-.HP
-unsigned long BlackPixel\^(\^Display *\fIdisplay\fP\^, int \^\fIscreen_number\fP\^);
-.HP
-unsigned long WhitePixel\^(\^Display *\fIdisplay\fP\^, int \^\fIscreen_number\fP\^);
-.HP
-int ConnectionNumber\^(\^Display *\fIdisplay\fP\^);
-.HP
-Colormap DefaultColormap\^(\^Display *\fIdisplay\fP\^,
-\^int \fIscreen_number\fP\^);
-.HP
-int DefaultDepth\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
-.HP
-int *XListDepths\^(\^Display *\fIdisplay\fP, int \fIscreen_number\fP, int
-\fIcount_return\fP\^);
-.HP
-GC DefaultGC\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
-.HP
-Window DefaultRootWindow\^(\^Display *\fIdisplay\fP\^);
-.HP
-Screen *DefaultScreenOfDisplay\^(\^Display *\fIdisplay\fP\^);
-.HP
-int DefaultScreen\^(\^Display *\fIdisplay\fP\^);
-.HP
-Visual *DefaultVisual\^(\^Display *\fIdisplay\fP\^, \^int
-\fIscreen_number\fP\^);
-.HP
-int DisplayCells\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
-.HP
-int DisplayPlanes\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
-.HP
-char *DisplayString\^(\^Display *\fIdisplay\fP\^);
-.HP
-long XMaxRequestSize(\^Display *\fIdisplay\fP\^)
-.HP
-long XExtendedMaxRequestSize(\^Display *\fIdisplay\fP\^)
-.HP
-unsigned long LastKnownRequestProcessed\^(\^Display *\fIdisplay\fP\^);
-.HP
-unsigned long NextRequest\^(\^Display *\fIdisplay\fP\^);
-.HP
-int ProtocolVersion\^(\^Display *\fIdisplay\fP\^);
-.HP
-int ProtocolRevision\^(\^Display *\fIdisplay\fP\^);
-.HP
-int QLength\^(\^Display *\fIdisplay\fP\^);
-.HP
-Window RootWindow\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
-.HP
-int ScreenCount\^(\^Display *\fIdisplay\fP\^);
-.HP
-Screen *ScreenOfDisplay\^(\^Display *\fIdisplay\fP, int
-\fIscreen_number\fP\^);
-.HP
-char *ServerVendor\^(\^Display *\fIdisplay\fP\^)
-.HP
-int VendorRelease\^(\^Display *\fIdisplay\fP\^)
-.SH ARGUMENTS
-.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.
-.SH DESCRIPTION
-The
-.ZN AllPlanes
-macro returns a value with all bits set to 1 suitable for use in a plane
-argument to a procedure.
-.LP
-The
-.ZN BlackPixel
-macro returns the black pixel value for the specified screen.
-.LP
-The
-.ZN WhitePixel
-macro returns the white pixel value for the specified screen.
-.LP
-The
-.ZN ConnectionNumber
-macro returns a connection number for the specified display.
-.LP
-The
-.ZN DefaultColormap
-macro returns the default colormap ID for allocation on the specified screen.
-.LP
-The
-.ZN DefaultDepth
-macro returns the depth (number of planes) of the default root window for the
-specified screen.
-.LP
-The
-.ZN 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,
-.ZN 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
-.ZN XFree .
-.LP
-The
-.ZN DefaultGC
-macro returns the default GC for the root window of the
-specified screen.
-.LP
-The
-.ZN DefaultRootWindow
-macro returns the root window for the default screen.
-.LP
-The
-.ZN DefaultScreenOfDisplay
-macro returns the default screen of the specified display.
-.LP
-The
-.ZN DefaultScreen
-macro returns the default screen number referenced in the
-.ZN XOpenDisplay
-routine.
-.LP
-The
-.ZN DefaultVisual
-macro returns the default visual type for the specified screen.
-.LP
-The
-.ZN DisplayCells
-macro returns the number of entries in the default colormap.
-.LP
-The
-.ZN DisplayPlanes
-macro returns the depth of the root window of the specified screen.
-.LP
-The
-.ZN DisplayString
-macro returns the string that was passed to
-.ZN XOpenDisplay
-when the current display was opened.
-.LP
-The
-.ZN 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:
-.ZN XDrawPoints ,
-.ZN XDrawRectangles ,
-.ZN XDrawSegments ,
-.ZN XFillArcs ,
-.ZN XFillRectangles ,
-and
-.ZN XPutImage .
-.LP
-The
-.ZN 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
-.ZN XDrawLines ,
-.ZN XDrawArcs ,
-.ZN XFillPolygon ,
-.ZN XChangeProperty ,
-.ZN XSetClipRectangles ,
-and
-.ZN 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,
-.ZN XDrawPoints ,
-.ZN XDrawRectangles ,
-.ZN XDrawSegments ,
-.ZN XFillArcs ,
-.ZN XFillRectangles ,
-.ZN XPutImage )
-is permitted but not required; an Xlib implementation may choose to
-split the data across multiple smaller requests instead.
-.LP
-The
-.ZN LastKnownRequestProcessed
-macro extracts the full serial number of the last request known by Xlib
-to have been processed by the X server.
-.LP
-The
-.ZN NextRequest
-macro extracts the full serial number that is to be used for the next request.
-.LP
-The
-.ZN ProtocolVersion
-macro returns the major version number (11) of the X protocol associated with
-the connected display.
-.LP
-The
-.ZN ProtocolRevision
-macro returns the minor protocol revision number of the X server.
-.LP
-The
-.ZN QLength
-macro returns the length of the event queue for the connected display.
-.LP
-The
-.ZN RootWindow
-macro returns the root window.
-.LP
-The
-.ZN ScreenCount
-macro returns the number of available screens.
-.LP
-The
-.ZN ScreenOfDisplay
-macro returns a pointer to the screen of the specified display.
-.LP
-The
-.ZN ServerVendor
-macro returns a pointer to a null-terminated string that provides
-some identification of the owner of the X server implementation.
-.LP
-The
-.ZN VendorRelease
-macro returns a number related to a vendor's release of the X server.
-.SH "SEE ALSO"
-BlackPixelOfScreen(__libmansuffix__),
-ImageByteOrder(__libmansuffix__),
-IsCursorKey(__libmansuffix__),
-XOpenDisplay(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH AllPlanes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+AllPlanes, BlackPixel, WhitePixel, ConnectionNumber, DefaultColormap, DefaultDepth, XListDepths, DefaultGC, DefaultRootWindow, DefaultScreenOfDisplay, DefaultScreen, DefaultVisual, DisplayCells, DisplayPlanes, DisplayString, XMaxRequestSize, XExtendedMaxRequestSize, LastKnownRequestProcessed, NextRequest, ProtocolVersion, ProtocolRevision, QLength, RootWindow, ScreenCount, ScreenOfDisplay, ServerVendor, VendorRelease \- Display macros and functions
+.SH SYNTAX
+unsigned long AllPlanes;
+.HP
+unsigned long BlackPixel\^(\^Display *\fIdisplay\fP\^, int \^\fIscreen_number\fP\^);
+.HP
+unsigned long WhitePixel\^(\^Display *\fIdisplay\fP\^, int \^\fIscreen_number\fP\^);
+.HP
+int ConnectionNumber\^(\^Display *\fIdisplay\fP\^);
+.HP
+Colormap DefaultColormap\^(\^Display *\fIdisplay\fP\^,
+\^int \fIscreen_number\fP\^);
+.HP
+int DefaultDepth\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
+.HP
+int *XListDepths\^(\^Display *\fIdisplay\fP, int \fIscreen_number\fP, int
+\fIcount_return\fP\^);
+.HP
+GC DefaultGC\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
+.HP
+Window DefaultRootWindow\^(\^Display *\fIdisplay\fP\^);
+.HP
+Screen *DefaultScreenOfDisplay\^(\^Display *\fIdisplay\fP\^);
+.HP
+int DefaultScreen\^(\^Display *\fIdisplay\fP\^);
+.HP
+Visual *DefaultVisual\^(\^Display *\fIdisplay\fP\^, \^int
+\fIscreen_number\fP\^);
+.HP
+int DisplayCells\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
+.HP
+int DisplayPlanes\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
+.HP
+char *DisplayString\^(\^Display *\fIdisplay\fP\^);
+.HP
+long XMaxRequestSize(\^Display *\fIdisplay\fP\^)
+.HP
+long XExtendedMaxRequestSize(\^Display *\fIdisplay\fP\^)
+.HP
+unsigned long LastKnownRequestProcessed\^(\^Display *\fIdisplay\fP\^);
+.HP
+unsigned long NextRequest\^(\^Display *\fIdisplay\fP\^);
+.HP
+int ProtocolVersion\^(\^Display *\fIdisplay\fP\^);
+.HP
+int ProtocolRevision\^(\^Display *\fIdisplay\fP\^);
+.HP
+int QLength\^(\^Display *\fIdisplay\fP\^);
+.HP
+Window RootWindow\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
+.HP
+int ScreenCount\^(\^Display *\fIdisplay\fP\^);
+.HP
+Screen *ScreenOfDisplay\^(\^Display *\fIdisplay\fP, int
+\fIscreen_number\fP\^);
+.HP
+char *ServerVendor\^(\^Display *\fIdisplay\fP\^)
+.HP
+int VendorRelease\^(\^Display *\fIdisplay\fP\^)
+.SH ARGUMENTS
+.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.
+.SH DESCRIPTION
+The
+.ZN AllPlanes
+macro returns a value with all bits set to 1 suitable for use in a plane
+argument to a procedure.
+.LP
+The
+.ZN BlackPixel
+macro returns the black pixel value for the specified screen.
+.LP
+The
+.ZN WhitePixel
+macro returns the white pixel value for the specified screen.
+.LP
+The
+.ZN ConnectionNumber
+macro returns a connection number for the specified display.
+.LP
+The
+.ZN DefaultColormap
+macro returns the default colormap ID for allocation on the specified screen.
+.LP
+The
+.ZN DefaultDepth
+macro returns the depth (number of planes) of the default root window for the
+specified screen.
+.LP
+The
+.ZN 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,
+.ZN 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
+.ZN XFree .
+.LP
+The
+.ZN DefaultGC
+macro returns the default GC for the root window of the
+specified screen.
+.LP
+The
+.ZN DefaultRootWindow
+macro returns the root window for the default screen.
+.LP
+The
+.ZN DefaultScreenOfDisplay
+macro returns the default screen of the specified display.
+.LP
+The
+.ZN DefaultScreen
+macro returns the default screen number referenced in the
+.ZN XOpenDisplay
+routine.
+.LP
+The
+.ZN DefaultVisual
+macro returns the default visual type for the specified screen.
+.LP
+The
+.ZN DisplayCells
+macro returns the number of entries in the default colormap.
+.LP
+The
+.ZN DisplayPlanes
+macro returns the depth of the root window of the specified screen.
+.LP
+The
+.ZN DisplayString
+macro returns the string that was passed to
+.ZN XOpenDisplay
+when the current display was opened.
+.LP
+The
+.ZN 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:
+.ZN XDrawPoints ,
+.ZN XDrawRectangles ,
+.ZN XDrawSegments ,
+.ZN XFillArcs ,
+.ZN XFillRectangles ,
+and
+.ZN XPutImage .
+.LP
+The
+.ZN 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
+.ZN XDrawLines ,
+.ZN XDrawArcs ,
+.ZN XFillPolygon ,
+.ZN XChangeProperty ,
+.ZN XSetClipRectangles ,
+and
+.ZN 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,
+.ZN XDrawPoints ,
+.ZN XDrawRectangles ,
+.ZN XDrawSegments ,
+.ZN XFillArcs ,
+.ZN XFillRectangles ,
+.ZN XPutImage )
+is permitted but not required; an Xlib implementation may choose to
+split the data across multiple smaller requests instead.
+.LP
+The
+.ZN LastKnownRequestProcessed
+macro extracts the full serial number of the last request known by Xlib
+to have been processed by the X server.
+.LP
+The
+.ZN NextRequest
+macro extracts the full serial number that is to be used for the next request.
+.LP
+The
+.ZN ProtocolVersion
+macro returns the major version number (11) of the X protocol associated with
+the connected display.
+.LP
+The
+.ZN ProtocolRevision
+macro returns the minor protocol revision number of the X server.
+.LP
+The
+.ZN QLength
+macro returns the length of the event queue for the connected display.
+.LP
+The
+.ZN RootWindow
+macro returns the root window.
+.LP
+The
+.ZN ScreenCount
+macro returns the number of available screens.
+.LP
+The
+.ZN ScreenOfDisplay
+macro returns a pointer to the screen of the specified display.
+.LP
+The
+.ZN ServerVendor
+macro returns a pointer to a null-terminated string that provides
+some identification of the owner of the X server implementation.
+.LP
+The
+.ZN VendorRelease
+macro returns a number related to a vendor's release of the X server.
+.SH "SEE ALSO"
+BlackPixelOfScreen(__libmansuffix__),
+ImageByteOrder(__libmansuffix__),
+IsCursorKey(__libmansuffix__),
+XOpenDisplay(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/BlackPixelOfScreen.man b/libX11/man/BlackPixelOfScreen.man
index af6042dfd..b513cc38c 100644
--- a/libX11/man/BlackPixelOfScreen.man
+++ b/libX11/man/BlackPixelOfScreen.man
@@ -1,287 +1,287 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH BlackPixelOfScreen __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-BlackPixelOfScreen, WhitePixelOfScreen, CellsOfScreen, DefaultColormapOfScreen, DefaultDepthOfScreen, DefaultGCOfScreen, DefaultVisualOfScreen, DoesBackingStore, DoesSaveUnders, DisplayOfScreen, XScreenNumberOfScreen, EventMaskOfScreen, HeightOfScreen, HeightMMOfScreen, MaxCmapsOfScreen, MinCmapsOfScreen, PlanesOfScreen, RootWindowOfScreen, WidthOfScreen, WidthMMOfScreen \- screen information functions and macros
-.SH SYNTAX
-.HP
-unsigned long BlackPixelOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-unsigned long WhitePixelOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-int CellsOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-Colormap DefaultColormapOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-int DefaultDepthOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-GC DefaultGCOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-Visual *DefaultVisualOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-int DoesBackingStore\^(\^Screen *\fIscreen\fP\^);
-.HP
-Bool DoesSaveUnders\^(\^Screen *\fIscreen\fP\^);
-.HP
-Display *DisplayOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-int XScreenNumberOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-long EventMaskOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-int HeightOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-int HeightMMOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-int MaxCmapsOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-int MinCmapsOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-int PlanesOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-Window RootWindowOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-int WidthOfScreen\^(\^Screen *\fIscreen\fP\^);
-.HP
-int WidthMMOfScreen\^(\^Screen *\fIscreen\fP\^);
-.SH ARGUMENTS
-.IP \fIscreen\fP 1i
-Specifies the appropriate
-.ZN Screen
-structure.
-.SH DESCRIPTION
-The
-.ZN BlackPixelOfScreen
-macro returns the black pixel value of the specified screen.
-.LP
-The
-.ZN WhitePixelOfScreen
-macro returns the white pixel value of the specified screen.
-.LP
-The
-.ZN CellsOfScreen
-macro returns the number of colormap cells in the default colormap
-of the specified screen.
-.LP
-The
-.ZN DefaultColormapOfScreen
-macro returns the default colormap of the specified screen.
-.LP
-The
-.ZN DefaultDepthOfScreen
-macro returns the default depth of the root window of the specified screen.
-.LP
-The
-.ZN DefaultGCOfScreen
-macro returns the default GC of the specified screen,
-which has the same depth as the root window of the screen.
-.LP
-The
-.ZN DefaultVisualOfScreen
-macro returns the default visual of the specified screen.
-.LP
-The
-.ZN DoesBackingStore
-macro returns
-.ZN WhenMapped ,
-.ZN NotUseful ,
-or
-.ZN Always ,
-which indicate whether the screen supports backing stores.
-.LP
-The
-.ZN DoesSaveUnders
-macro returns a Boolean value indicating whether the
-screen supports save unders.
-.LP
-The
-.ZN DisplayOfScreen
-macro returns the display of the specified screen.
-.LP
-The
-.ZN XScreenNumberOfScreen
-function returns the screen index number of the specified screen.
-.LP
-The
-.ZN EventMaskOfScreen
-macro returns the root event mask of the root window for the specified screen
-at connection setup.
-.LP
-The
-.ZN HeightOfScreen
-macro returns the height of the specified screen.
-.LP
-The
-.ZN HeightMMOfScreen
-macro returns the height of the specified screen in millimeters.
-.LP
-The
-.ZN MaxCmapsOfScreen
-macro returns the maximum number of installed colormaps supported
-by the specified screen.
-.LP
-The
-.ZN MinCmapsOfScreen
-macro returns the minimum number of installed colormaps supported
-by the specified screen.
-.LP
-The
-.ZN PlanesOfScreen
-macro returns the number of planes in the root window of the specified screen.
-.LP
-The
-.ZN RootWindowOfScreen
-macro returns the root window of the specified screen.
-.LP
-The
-.ZN WidthOfScreen
-macro returns the width of the specified screen.
-.LP
-The
-.ZN WidthMMOfScreen
-macro returns the width of the specified screen in millimeters.
-.SH "SEE ALSO"
-AllPlanes(__libmansuffix__),
-ImageByteOrder(__libmansuffix__),
-IsCursorKey(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH BlackPixelOfScreen __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+BlackPixelOfScreen, WhitePixelOfScreen, CellsOfScreen, DefaultColormapOfScreen, DefaultDepthOfScreen, DefaultGCOfScreen, DefaultVisualOfScreen, DoesBackingStore, DoesSaveUnders, DisplayOfScreen, XScreenNumberOfScreen, EventMaskOfScreen, HeightOfScreen, HeightMMOfScreen, MaxCmapsOfScreen, MinCmapsOfScreen, PlanesOfScreen, RootWindowOfScreen, WidthOfScreen, WidthMMOfScreen \- screen information functions and macros
+.SH SYNTAX
+.HP
+unsigned long BlackPixelOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+unsigned long WhitePixelOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+int CellsOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+Colormap DefaultColormapOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+int DefaultDepthOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+GC DefaultGCOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+Visual *DefaultVisualOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+int DoesBackingStore\^(\^Screen *\fIscreen\fP\^);
+.HP
+Bool DoesSaveUnders\^(\^Screen *\fIscreen\fP\^);
+.HP
+Display *DisplayOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+int XScreenNumberOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+long EventMaskOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+int HeightOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+int HeightMMOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+int MaxCmapsOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+int MinCmapsOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+int PlanesOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+Window RootWindowOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+int WidthOfScreen\^(\^Screen *\fIscreen\fP\^);
+.HP
+int WidthMMOfScreen\^(\^Screen *\fIscreen\fP\^);
+.SH ARGUMENTS
+.IP \fIscreen\fP 1i
+Specifies the appropriate
+.ZN Screen
+structure.
+.SH DESCRIPTION
+The
+.ZN BlackPixelOfScreen
+macro returns the black pixel value of the specified screen.
+.LP
+The
+.ZN WhitePixelOfScreen
+macro returns the white pixel value of the specified screen.
+.LP
+The
+.ZN CellsOfScreen
+macro returns the number of colormap cells in the default colormap
+of the specified screen.
+.LP
+The
+.ZN DefaultColormapOfScreen
+macro returns the default colormap of the specified screen.
+.LP
+The
+.ZN DefaultDepthOfScreen
+macro returns the default depth of the root window of the specified screen.
+.LP
+The
+.ZN DefaultGCOfScreen
+macro returns the default GC of the specified screen,
+which has the same depth as the root window of the screen.
+.LP
+The
+.ZN DefaultVisualOfScreen
+macro returns the default visual of the specified screen.
+.LP
+The
+.ZN DoesBackingStore
+macro returns
+.ZN WhenMapped ,
+.ZN NotUseful ,
+or
+.ZN Always ,
+which indicate whether the screen supports backing stores.
+.LP
+The
+.ZN DoesSaveUnders
+macro returns a Boolean value indicating whether the
+screen supports save unders.
+.LP
+The
+.ZN DisplayOfScreen
+macro returns the display of the specified screen.
+.LP
+The
+.ZN XScreenNumberOfScreen
+function returns the screen index number of the specified screen.
+.LP
+The
+.ZN EventMaskOfScreen
+macro returns the root event mask of the root window for the specified screen
+at connection setup.
+.LP
+The
+.ZN HeightOfScreen
+macro returns the height of the specified screen.
+.LP
+The
+.ZN HeightMMOfScreen
+macro returns the height of the specified screen in millimeters.
+.LP
+The
+.ZN MaxCmapsOfScreen
+macro returns the maximum number of installed colormaps supported
+by the specified screen.
+.LP
+The
+.ZN MinCmapsOfScreen
+macro returns the minimum number of installed colormaps supported
+by the specified screen.
+.LP
+The
+.ZN PlanesOfScreen
+macro returns the number of planes in the root window of the specified screen.
+.LP
+The
+.ZN RootWindowOfScreen
+macro returns the root window of the specified screen.
+.LP
+The
+.ZN WidthOfScreen
+macro returns the width of the specified screen.
+.LP
+The
+.ZN WidthMMOfScreen
+macro returns the width of the specified screen in millimeters.
+.SH "SEE ALSO"
+AllPlanes(__libmansuffix__),
+ImageByteOrder(__libmansuffix__),
+IsCursorKey(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/ImageByteOrder.man b/libX11/man/ImageByteOrder.man
index 27579c84f..7a0912fd5 100644
--- a/libX11/man/ImageByteOrder.man
+++ b/libX11/man/ImageByteOrder.man
@@ -1,245 +1,245 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH ImageByteOrder __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-ImageByteOrder, BitmapBitOrder, BitmapPad, BitmapUnit, DisplayHeight, DisplayHeightMM, DisplayWidth, DisplayWidthMM, XListPixmapFormats, XPixmapFormatValues \- image format functions and macros
-.SH SYNTAX
-.HP
-XPixmapFormatValues *XListPixmapFormats\^(\^Display *\fIdisplay\fP, int *\fIcount_return\fP\^);
-.HP
-int ImageByteOrder\^(\^Display *\fIdisplay\fP\^);
-.HP
-int BitmapBitOrder\^(\^Display *\fIdisplay\fP\^);
-.HP
-int BitmapPad\^(\^Display *\fIdisplay\fP\^);
-.HP
-int BitmapUnit\^(\^Display *\fIdisplay\fP\^);
-.HP
-int DisplayHeight\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
-.HP
-int DisplayHeightMM\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
-.HP
-int DisplayWidth\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
-.HP
-int DisplayWidthMM\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
-.SH ARGUMENTS
-.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.
-.IP \fIscreen_number\fP 1i
-Specifies the appropriate screen number on the host server.
-.SH DESCRIPTION
-The
-.ZN XListPixmapFormats
-function returns an array of
-.ZN XPixmapFormatValues
-structures that describe the types of Z format images supported
-by the specified display.
-If insufficient memory is available,
-.ZN XListPixmapFormats
-returns NULL.
-To free the allocated storage for the
-.ZN XPixmapFormatValues
-structures, use
-.ZN XFree .
-.LP
-The
-.ZN ImageByteOrder
-macro specifies the required byte order for images for each scanline unit in
-XY format (bitmap) or for each pixel value in Z format.
-.LP
-The
-.ZN BitmapBitOrder
-macro returns
-.ZN LSBFirst
-or
-.ZN MSBFirst
-to indicate whether the leftmost bit in the bitmap as displayed
-on the screen is the least or most significant bit in the unit.
-.LP
-The
-.ZN BitmapPad
-macro returns the number of bits that each scanline must be padded.
-.LP
-The
-.ZN BitmapUnit
-macro returns the size of a bitmap's scanline unit in bits.
-.LP
-The
-.ZN DisplayHeight
-macro returns the height of the specified screen in pixels.
-.LP
-The
-.ZN DisplayHeightMM
-macro returns the height of the specified screen in millimeters.
-.LP
-The
-.ZN DisplayWidth
-macro returns the width of the screen in pixels.
-.LP
-The
-.ZN DisplayWidthMM
-macro returns the width of the specified screen in millimeters.
-.SH STRUCTURES
-The
-.ZN XPixmapFormatValues
-structure provides an interface to the pixmap format information
-that is returned at the time of a connection setup.
-It contains:
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int depth;
- int bits_per_pixel;
- int scanline_pad;
-} XPixmapFormatValues;
-.De
-.SH "SEE ALSO"
-AllPlanes(__libmansuffix__),
-BlackPixelOfScreen(__libmansuffix__),
-IsCursorKey(__libmansuffix__),
-XFree(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH ImageByteOrder __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+ImageByteOrder, BitmapBitOrder, BitmapPad, BitmapUnit, DisplayHeight, DisplayHeightMM, DisplayWidth, DisplayWidthMM, XListPixmapFormats, XPixmapFormatValues \- image format functions and macros
+.SH SYNTAX
+.HP
+XPixmapFormatValues *XListPixmapFormats\^(\^Display *\fIdisplay\fP, int *\fIcount_return\fP\^);
+.HP
+int ImageByteOrder\^(\^Display *\fIdisplay\fP\^);
+.HP
+int BitmapBitOrder\^(\^Display *\fIdisplay\fP\^);
+.HP
+int BitmapPad\^(\^Display *\fIdisplay\fP\^);
+.HP
+int BitmapUnit\^(\^Display *\fIdisplay\fP\^);
+.HP
+int DisplayHeight\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
+.HP
+int DisplayHeightMM\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
+.HP
+int DisplayWidth\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
+.HP
+int DisplayWidthMM\^(\^Display *\fIdisplay\fP\^, \^int \fIscreen_number\fP\^);
+.SH ARGUMENTS
+.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.
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.SH DESCRIPTION
+The
+.ZN XListPixmapFormats
+function returns an array of
+.ZN XPixmapFormatValues
+structures that describe the types of Z format images supported
+by the specified display.
+If insufficient memory is available,
+.ZN XListPixmapFormats
+returns NULL.
+To free the allocated storage for the
+.ZN XPixmapFormatValues
+structures, use
+.ZN XFree .
+.LP
+The
+.ZN ImageByteOrder
+macro specifies the required byte order for images for each scanline unit in
+XY format (bitmap) or for each pixel value in Z format.
+.LP
+The
+.ZN BitmapBitOrder
+macro returns
+.ZN LSBFirst
+or
+.ZN MSBFirst
+to indicate whether the leftmost bit in the bitmap as displayed
+on the screen is the least or most significant bit in the unit.
+.LP
+The
+.ZN BitmapPad
+macro returns the number of bits that each scanline must be padded.
+.LP
+The
+.ZN BitmapUnit
+macro returns the size of a bitmap's scanline unit in bits.
+.LP
+The
+.ZN DisplayHeight
+macro returns the height of the specified screen in pixels.
+.LP
+The
+.ZN DisplayHeightMM
+macro returns the height of the specified screen in millimeters.
+.LP
+The
+.ZN DisplayWidth
+macro returns the width of the screen in pixels.
+.LP
+The
+.ZN DisplayWidthMM
+macro returns the width of the specified screen in millimeters.
+.SH STRUCTURES
+The
+.ZN XPixmapFormatValues
+structure provides an interface to the pixmap format information
+that is returned at the time of a connection setup.
+It contains:
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int depth;
+ int bits_per_pixel;
+ int scanline_pad;
+} XPixmapFormatValues;
+.De
+.SH "SEE ALSO"
+AllPlanes(__libmansuffix__),
+BlackPixelOfScreen(__libmansuffix__),
+IsCursorKey(__libmansuffix__),
+XFree(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XAddConnectionWatch.man b/libX11/man/XAddConnectionWatch.man
index 765162f49..5f561a182 100644
--- a/libX11/man/XAddConnectionWatch.man
+++ b/libX11/man/XAddConnectionWatch.man
@@ -1,236 +1,236 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XAddConnectionWatch __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XAddConnectionWatch, XRemoveConnectionWatch, XProcessInternalConnection, XInternalConnectionNumbers \- handle Xlib internal connections
-.SH SYNTAX
-.HP
-typedef void (*XConnectionWatchProc)\^(\^Display *\fIdisplay\fP\^, XPointer
-\fIclient_data\fP\^, int \fIfd\fP\^, Bool \fIopening\fP\^, XPointer
-*\fIwatch_data\fP\^);
-.HP
-Status XAddConnectionWatch\^(\^Display *\fIdisplay\fP\^, XWatchProc
-\fIprocedure\fP\^, XPointer \fIclient_data\fP\^);
-.HP
-Status XRemoveConnectionWatch\^(\^Display *\fIdisplay\fP\^, XWatchProc
-\fIprocedure\fP\^, XPointer \fIclient_data\fP\^);
-.HP
-void XProcessInternalConnection\^(\^Display *\fIdisplay\fP\^, int \fIfd\fP\^);
-.HP
-Status XInternalConnectionNumbers\^(\^Display *\fIdisplay\fP\^, int
-**\fIfd_return\fP\^, int *\fIcount_return\fP\^);
-.SH ARGUMENTS
-.IP \fIclient_data\fP 1i
-Specifies the additional client data.
-.ds Cn file descriptors
-.IP \fIcount_return\fP 1i
-Returns the number of \*(Cn.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIfd\fP 1i
-Specifies the file descriptor.
-.IP \fIfd_return\fP 1i
-Returns the file descriptors.
-.IP \fIprocedure\fP 1i
-Specifies the procedure to be called.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN XAddConnectionWatch
-returns.
-.ZN 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
-.ZN XLockDisplay .
-.LP
-The
-.ZN 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
-The
-.ZN 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,
-.ZN select
-or
-.ZN poll )
-has indicated that input is available; otherwise,
-the effect is not defined.
-.LP
-The
-.ZN 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
-.ZN XFree .
-This functions returns a nonzero status if the list is successfully allocated;
-otherwise, it returns zero.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XAddConnectionWatch __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XAddConnectionWatch, XRemoveConnectionWatch, XProcessInternalConnection, XInternalConnectionNumbers \- handle Xlib internal connections
+.SH SYNTAX
+.HP
+typedef void (*XConnectionWatchProc)\^(\^Display *\fIdisplay\fP\^, XPointer
+\fIclient_data\fP\^, int \fIfd\fP\^, Bool \fIopening\fP\^, XPointer
+*\fIwatch_data\fP\^);
+.HP
+Status XAddConnectionWatch\^(\^Display *\fIdisplay\fP\^, XWatchProc
+\fIprocedure\fP\^, XPointer \fIclient_data\fP\^);
+.HP
+Status XRemoveConnectionWatch\^(\^Display *\fIdisplay\fP\^, XWatchProc
+\fIprocedure\fP\^, XPointer \fIclient_data\fP\^);
+.HP
+void XProcessInternalConnection\^(\^Display *\fIdisplay\fP\^, int \fIfd\fP\^);
+.HP
+Status XInternalConnectionNumbers\^(\^Display *\fIdisplay\fP\^, int
+**\fIfd_return\fP\^, int *\fIcount_return\fP\^);
+.SH ARGUMENTS
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.ds Cn file descriptors
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfd\fP 1i
+Specifies the file descriptor.
+.IP \fIfd_return\fP 1i
+Returns the file descriptors.
+.IP \fIprocedure\fP 1i
+Specifies the procedure to be called.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN XAddConnectionWatch
+returns.
+.ZN 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
+.ZN XLockDisplay .
+.LP
+The
+.ZN 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
+The
+.ZN 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,
+.ZN select
+or
+.ZN poll )
+has indicated that input is available; otherwise,
+the effect is not defined.
+.LP
+The
+.ZN 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
+.ZN XFree .
+This functions returns a nonzero status if the list is successfully allocated;
+otherwise, it returns zero.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XAllocClassHint.man b/libX11/man/XAllocClassHint.man
index 438ec1e0b..c8161a12b 100644
--- a/libX11/man/XAllocClassHint.man
+++ b/libX11/man/XAllocClassHint.man
@@ -1,265 +1,265 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XAllocClassHint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XAllocClassHint, XSetClassHint, XGetClassHint, XClassHint \- allocate class hints structure and set or read a window's WM_CLASS property
-.SH SYNTAX
-.HP
-XClassHint *XAllocClassHint\^(void\^);
-.HP
-XSetClassHint\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XClassHint *\fIclass_hints\fP\^);
-.HP
-Status XGetClassHint\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XClassHint *\fIclass_hints_return\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIclass_hints\fP 1i
-Specifies the
-.ZN XClassHint
-structure that is to be used.
-.IP \fIclass_hints_return\fP 1i
-Returns the
-.ZN XClassHint
-structure.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-The
-.ZN XAllocClassHint
-function allocates and returns a pointer to a
-.ZN XClassHint
-structure.
-Note that the pointer fields in the
-.ZN XClassHint
-structure are initially set to NULL.
-If insufficient memory is available,
-.ZN XAllocClassHint
-returns NULL.
-To free the memory allocated to this structure,
-use
-.ZN XFree .
-.LP
-The
-.ZN 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
-.ZN XSetClassHint
-can generate
-.ZN BadAlloc
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN XFree
-on each individually.
-.LP
-.ZN XGetClassHint
-can generate a
-.ZN BadWindow
-error.
-.SH PROPERTIES
-.TP 1i
-\s-1WM_CLASS\s+1
-Set by application programs to allow window and session
-managers to obtain the application's resources from the resource database.
-.SH STRUCTURES
-The
-.ZN XClassHint
-structure contains:
-.LP
-.IN "XClassHint" "" "@DEF@"
-.Ds 0
-.TA .5i
-.ta .5i
-typedef struct {
- char *res_name;
- char *res_class;
-} XClassHint;
-.De
-.LP
-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.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XFree(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XAllocClassHint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XAllocClassHint, XSetClassHint, XGetClassHint, XClassHint \- allocate class hints structure and set or read a window's WM_CLASS property
+.SH SYNTAX
+.HP
+XClassHint *XAllocClassHint\^(void\^);
+.HP
+XSetClassHint\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XClassHint *\fIclass_hints\fP\^);
+.HP
+Status XGetClassHint\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XClassHint *\fIclass_hints_return\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIclass_hints\fP 1i
+Specifies the
+.ZN XClassHint
+structure that is to be used.
+.IP \fIclass_hints_return\fP 1i
+Returns the
+.ZN XClassHint
+structure.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+The
+.ZN XAllocClassHint
+function allocates and returns a pointer to a
+.ZN XClassHint
+structure.
+Note that the pointer fields in the
+.ZN XClassHint
+structure are initially set to NULL.
+If insufficient memory is available,
+.ZN XAllocClassHint
+returns NULL.
+To free the memory allocated to this structure,
+use
+.ZN XFree .
+.LP
+The
+.ZN 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
+.ZN XSetClassHint
+can generate
+.ZN BadAlloc
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN XFree
+on each individually.
+.LP
+.ZN XGetClassHint
+can generate a
+.ZN BadWindow
+error.
+.SH PROPERTIES
+.TP 1i
+\s-1WM_CLASS\s+1
+Set by application programs to allow window and session
+managers to obtain the application's resources from the resource database.
+.SH STRUCTURES
+The
+.ZN XClassHint
+structure contains:
+.LP
+.IN "XClassHint" "" "@DEF@"
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ char *res_name;
+ char *res_class;
+} XClassHint;
+.De
+.LP
+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.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XFree(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XAllocColor.man b/libX11/man/XAllocColor.man
index 851f4d747..1f04d6e57 100644
--- a/libX11/man/XAllocColor.man
+++ b/libX11/man/XAllocColor.man
@@ -1,447 +1,447 @@
-'\" e
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" e
-.TH XAllocColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XAllocColor, XAllocNamedColor, XAllocColorCells, XAllocColorPlanes, XFreeColors \- allocate and free colors
-.SH SYNTAX
-.HP
-Status XAllocColor\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^,
-XColor *\fIscreen_in_out\fP\^);
-.HP
-Status XAllocNamedColor\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^,
-char *\fIcolor_name\fP\^, XColor *\fIscreen_def_return\fP\^, XColor
-*\fIexact_def_return\fP\^);
-.HP
-Status XAllocColorCells\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^,
-Bool \fIcontig\fP\^, unsigned long \fIplane_masks_return\fP[\^]\^, unsigned int
-\fInplanes\fP\^, unsigned long \fIpixels_return\fP[\^]\^, unsigned int
-\fInpixels\fP\^);
-.HP
-Status XAllocColorPlanes\^(\^Display *\fIdisplay\fP, Colormap
-\fIcolormap\fP\^, Bool \fIcontig\fP\^, unsigned long
-\fIpixels_return\fP[\^]\^, int \fIncolors\fP\^, int \fInreds\fP\^, int
-\fIngreens\fP\^, int \fInblues\fP\^, unsigned long *\fIrmask_return\fP\^,
-unsigned long *\fIgmask_return\fP\^, unsigned long *\fIbmask_return\fP\^);
-.HP
-int XFreeColors\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^, unsigned
-long \fIpixels\fP\^[\^], int \fInpixels\fP\^, unsigned long \fIplanes\fP\^);
-.IP \fIcolor_name\fP 1i
-Specifies the color name string (for example, red) whose color
-definition structure you want returned.
-.IP \fIcolormap\fP 1i
-Specifies the colormap.
-.IP \fIcontig\fP 1i
-Specifies a Boolean value that indicates whether the planes must be contiguous.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIexact_def_return\fP 1i
-Returns the exact RGB values.
-.IP \fIncolors\fP 1i
-Specifies the number of pixel values that are to be returned in the
-pixels_return array.
-.IP \fInpixels\fP 1i
-Specifies the number of pixels.
-.IP \fInplanes\fP 1i
-Specifies the number of plane masks that are to be returned in the plane masks
-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 \fIpixels\fP 1i
-Specifies an array of pixel values.
-.IP \fIpixels_return\fP 1i
-Returns an array of pixel values.
-.IP \fIplane_mask_return\fP 1i
-Returns an array of plane masks.
-.\" *** JIM: NEED MORE INFO FOR THIS. ***
-.IP \fIplanes\fP 1i
-Specifies the planes you want to free.
-.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.
-.IP \fIscreen_def_return\fP 1i
-Returns the closest RGB values provided by the hardware.
-.IP \fIscreen_in_out\fP 1i
-Specifies and returns the values actually used in the colormap.
-.SH DESCRIPTION
-The
-.ZN XAllocColor
-function allocates a read-only colormap entry corresponding to the closest
-RGB value supported by the hardware.
-.ZN 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,
-.ZN 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.
-.ZN XAllocColor
-does not use or affect the flags in the
-.ZN XColor
-structure.
-.LP
-.ZN XAllocColor
-can generate a
-.ZN BadColor
-error.
-.LP
-The
-.ZN 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.
-.ZN XAllocNamedColor
-returns nonzero if a cell is allocated;
-otherwise, it returns zero.
-.LP
-.ZN XAllocNamedColor
-can generate a
-.ZN BadColor
-error.
-.LP
-.EQ
-delim %%
-.EN
-The
-.ZN XAllocColorCells
-function allocates read/write color cells.
-The number of colors must be positive and the number of planes nonnegative,
-or a
-.ZN 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
-.ZN GrayScale
-or
-.ZN PseudoColor ,
-each mask has exactly one bit set to 1.
-For
-.ZN DirectColor ,
-each has exactly three bits set to 1.
-If contig is
-.ZN True
-and if all masks are ORed
-together, a single contiguous set of bits set to 1 will be formed for
-.ZN GrayScale
-or
-.ZN PseudoColor
-and three contiguous sets of bits set to 1 (one within each
-pixel subfield) for
-.ZN DirectColor .
-The RGB values of the allocated
-entries are undefined.
-.ZN XAllocColorCells
-returns nonzero if it succeeded or zero if it failed.
-.LP
-.ZN XAllocColorCells
-can generate
-.ZN BadColor
-and
-.ZN BadValue
-errors.
-.LP
-.EQ
-delim %%
-.EN
-The specified ncolors must be positive;
-and nreds, ngreens, and nblues must be nonnegative,
-or a
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN PseudoColor .
-When the colormap entry of a pixel
-value is changed (using
-.ZN XStoreColors ,
-.ZN XStoreColor ,
-or
-.ZN XStoreNamedColor ),
-the pixel is decomposed according to the masks,
-and the corresponding independent entries are updated.
-.ZN XAllocColorPlanes
-returns nonzero if it succeeded or zero if it failed.
-.LP
-.ZN XAllocColorPlanes
-can generate
-.ZN BadColor
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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
-.ZN XAllocColor ,
-.ZN XAllocNamedColor ,
-.ZN XAllocColorCells ,
-and
-.ZN XAllocColorPlanes ).
-Note that freeing an
-individual pixel obtained from
-.ZN 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
-.ZN 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
-.ZN AllocAll
-to
-.ZN XCreateColormap ),
-a
-.ZN BadAccess
-error results.
-If more than one pixel is in error,
-the one that gets reported is arbitrary.
-.LP
-.ZN XFreeColors
-can generate
-.ZN BadAccess ,
-.ZN BadColor ,
-and
-.ZN BadValue
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAccess
-A client attempted
-to free a color map entry that it did not already allocate.
-.TP 1i
-.ZN BadAccess
-A client attempted
-to store into a read-only color map entry.
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XCreateColormap(__libmansuffix__),
-XQueryColor(__libmansuffix__),
-XStoreColors(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" e
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" e
+.TH XAllocColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XAllocColor, XAllocNamedColor, XAllocColorCells, XAllocColorPlanes, XFreeColors \- allocate and free colors
+.SH SYNTAX
+.HP
+Status XAllocColor\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^,
+XColor *\fIscreen_in_out\fP\^);
+.HP
+Status XAllocNamedColor\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^,
+char *\fIcolor_name\fP\^, XColor *\fIscreen_def_return\fP\^, XColor
+*\fIexact_def_return\fP\^);
+.HP
+Status XAllocColorCells\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^,
+Bool \fIcontig\fP\^, unsigned long \fIplane_masks_return\fP[\^]\^, unsigned int
+\fInplanes\fP\^, unsigned long \fIpixels_return\fP[\^]\^, unsigned int
+\fInpixels\fP\^);
+.HP
+Status XAllocColorPlanes\^(\^Display *\fIdisplay\fP, Colormap
+\fIcolormap\fP\^, Bool \fIcontig\fP\^, unsigned long
+\fIpixels_return\fP[\^]\^, int \fIncolors\fP\^, int \fInreds\fP\^, int
+\fIngreens\fP\^, int \fInblues\fP\^, unsigned long *\fIrmask_return\fP\^,
+unsigned long *\fIgmask_return\fP\^, unsigned long *\fIbmask_return\fP\^);
+.HP
+int XFreeColors\^(\^Display *\fIdisplay\fP, Colormap \fIcolormap\fP\^, unsigned
+long \fIpixels\fP\^[\^], int \fInpixels\fP\^, unsigned long \fIplanes\fP\^);
+.IP \fIcolor_name\fP 1i
+Specifies the color name string (for example, red) whose color
+definition structure you want returned.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIcontig\fP 1i
+Specifies a Boolean value that indicates whether the planes must be contiguous.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIexact_def_return\fP 1i
+Returns the exact RGB values.
+.IP \fIncolors\fP 1i
+Specifies the number of pixel values that are to be returned in the
+pixels_return array.
+.IP \fInpixels\fP 1i
+Specifies the number of pixels.
+.IP \fInplanes\fP 1i
+Specifies the number of plane masks that are to be returned in the plane masks
+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 \fIpixels\fP 1i
+Specifies an array of pixel values.
+.IP \fIpixels_return\fP 1i
+Returns an array of pixel values.
+.IP \fIplane_mask_return\fP 1i
+Returns an array of plane masks.
+.\" *** JIM: NEED MORE INFO FOR THIS. ***
+.IP \fIplanes\fP 1i
+Specifies the planes you want to free.
+.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.
+.IP \fIscreen_def_return\fP 1i
+Returns the closest RGB values provided by the hardware.
+.IP \fIscreen_in_out\fP 1i
+Specifies and returns the values actually used in the colormap.
+.SH DESCRIPTION
+The
+.ZN XAllocColor
+function allocates a read-only colormap entry corresponding to the closest
+RGB value supported by the hardware.
+.ZN 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,
+.ZN 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.
+.ZN XAllocColor
+does not use or affect the flags in the
+.ZN XColor
+structure.
+.LP
+.ZN XAllocColor
+can generate a
+.ZN BadColor
+error.
+.LP
+The
+.ZN 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.
+.ZN XAllocNamedColor
+returns nonzero if a cell is allocated;
+otherwise, it returns zero.
+.LP
+.ZN XAllocNamedColor
+can generate a
+.ZN BadColor
+error.
+.LP
+.EQ
+delim %%
+.EN
+The
+.ZN XAllocColorCells
+function allocates read/write color cells.
+The number of colors must be positive and the number of planes nonnegative,
+or a
+.ZN 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
+.ZN GrayScale
+or
+.ZN PseudoColor ,
+each mask has exactly one bit set to 1.
+For
+.ZN DirectColor ,
+each has exactly three bits set to 1.
+If contig is
+.ZN True
+and if all masks are ORed
+together, a single contiguous set of bits set to 1 will be formed for
+.ZN GrayScale
+or
+.ZN PseudoColor
+and three contiguous sets of bits set to 1 (one within each
+pixel subfield) for
+.ZN DirectColor .
+The RGB values of the allocated
+entries are undefined.
+.ZN XAllocColorCells
+returns nonzero if it succeeded or zero if it failed.
+.LP
+.ZN XAllocColorCells
+can generate
+.ZN BadColor
+and
+.ZN BadValue
+errors.
+.LP
+.EQ
+delim %%
+.EN
+The specified ncolors must be positive;
+and nreds, ngreens, and nblues must be nonnegative,
+or a
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN PseudoColor .
+When the colormap entry of a pixel
+value is changed (using
+.ZN XStoreColors ,
+.ZN XStoreColor ,
+or
+.ZN XStoreNamedColor ),
+the pixel is decomposed according to the masks,
+and the corresponding independent entries are updated.
+.ZN XAllocColorPlanes
+returns nonzero if it succeeded or zero if it failed.
+.LP
+.ZN XAllocColorPlanes
+can generate
+.ZN BadColor
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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
+.ZN XAllocColor ,
+.ZN XAllocNamedColor ,
+.ZN XAllocColorCells ,
+and
+.ZN XAllocColorPlanes ).
+Note that freeing an
+individual pixel obtained from
+.ZN 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
+.ZN 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
+.ZN AllocAll
+to
+.ZN XCreateColormap ),
+a
+.ZN BadAccess
+error results.
+If more than one pixel is in error,
+the one that gets reported is arbitrary.
+.LP
+.ZN XFreeColors
+can generate
+.ZN BadAccess ,
+.ZN BadColor ,
+and
+.ZN BadValue
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAccess
+A client attempted
+to free a color map entry that it did not already allocate.
+.TP 1i
+.ZN BadAccess
+A client attempted
+to store into a read-only color map entry.
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XCreateColormap(__libmansuffix__),
+XQueryColor(__libmansuffix__),
+XStoreColors(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XAllocIconSize.man b/libX11/man/XAllocIconSize.man
index eb13027b5..6950ae4b5 100644
--- a/libX11/man/XAllocIconSize.man
+++ b/libX11/man/XAllocIconSize.man
@@ -1,261 +1,261 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XAllocIconSize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XAllocIconSize, XSetIconSizes, XGetIconSizes, XIconSize \- allocate icon size structure and set or read a window's WM_ICON_SIZES property
-.SH SYNTAX
-XIconSize *XAllocIconSize\^(void\^);
-.LP
-int XSetIconSizes\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XIconSize
-*\fIsize_list\fP, int \fIcount\fP\^);
-.LP
-Status XGetIconSizes\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XIconSize
-**\fIsize_list_return\fP, int \fIcount_return\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIcount\fP 1i
-Specifies the number of items in the size list.
-.IP \fIcount_return\fP 1i
-Returns the number of items in the size list.
-.IP \fIsize_list\fP 1i
-Specifies the size list.
-.IP \fIsize_list_return\fP 1i
-Returns the size list.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-The
-.ZN XAllocIconSize
-function allocates and returns a pointer to a
-.ZN XIconSize
-structure.
-Note that all fields in the
-.ZN XIconSize
-structure are initially set to zero.
-If insufficient memory is available,
-.ZN XAllocIconSize
-returns NULL.
-To free the memory allocated to this structure,
-use
-.ZN XFree .
-.LP
-The
-.ZN XSetIconSizes
-function is used only by window managers to set the supported icon sizes.
-.LP
-.ZN XSetIconSizes
-can generate
-.ZN BadAlloc
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XGetIconSizes
-function returns zero if a window manager has not set icon sizes;
-otherwise, it return nonzero.
-.ZN 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
-.ZN 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
-.ZN XFree .
-.LP
-.ZN XGetIconSizes
-can generate a
-.ZN BadWindow
-error.
-.SH PROPERTIES
-.TP 1i
-\s-1WM_ICON_SIZES\s+1
-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
-.ZN XIconSize .
-.SH STRUCTURES
-The
-.ZN XIconSize
-structure contains:
-.LP
-.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
-The width_inc and height_inc members define an arithmetic progression of
-sizes (minimum to maximum) that represent the supported icon sizes.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XFree(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XAllocIconSize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XAllocIconSize, XSetIconSizes, XGetIconSizes, XIconSize \- allocate icon size structure and set or read a window's WM_ICON_SIZES property
+.SH SYNTAX
+XIconSize *XAllocIconSize\^(void\^);
+.LP
+int XSetIconSizes\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XIconSize
+*\fIsize_list\fP, int \fIcount\fP\^);
+.LP
+Status XGetIconSizes\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XIconSize
+**\fIsize_list_return\fP, int \fIcount_return\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcount\fP 1i
+Specifies the number of items in the size list.
+.IP \fIcount_return\fP 1i
+Returns the number of items in the size list.
+.IP \fIsize_list\fP 1i
+Specifies the size list.
+.IP \fIsize_list_return\fP 1i
+Returns the size list.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+The
+.ZN XAllocIconSize
+function allocates and returns a pointer to a
+.ZN XIconSize
+structure.
+Note that all fields in the
+.ZN XIconSize
+structure are initially set to zero.
+If insufficient memory is available,
+.ZN XAllocIconSize
+returns NULL.
+To free the memory allocated to this structure,
+use
+.ZN XFree .
+.LP
+The
+.ZN XSetIconSizes
+function is used only by window managers to set the supported icon sizes.
+.LP
+.ZN XSetIconSizes
+can generate
+.ZN BadAlloc
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XGetIconSizes
+function returns zero if a window manager has not set icon sizes;
+otherwise, it return nonzero.
+.ZN 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
+.ZN 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
+.ZN XFree .
+.LP
+.ZN XGetIconSizes
+can generate a
+.ZN BadWindow
+error.
+.SH PROPERTIES
+.TP 1i
+\s-1WM_ICON_SIZES\s+1
+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
+.ZN XIconSize .
+.SH STRUCTURES
+The
+.ZN XIconSize
+structure contains:
+.LP
+.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
+The width_inc and height_inc members define an arithmetic progression of
+sizes (minimum to maximum) that represent the supported icon sizes.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XFree(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XAllocSizeHints.man b/libX11/man/XAllocSizeHints.man
index 838d497ef..c52fd08ff 100644
--- a/libX11/man/XAllocSizeHints.man
+++ b/libX11/man/XAllocSizeHints.man
@@ -1,502 +1,502 @@
-'\" t
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface, \fRO'Reilly and Associates,
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XAllocSizeHints __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XAllocSizeHints, XSetWMNormalHints, XGetWMNormalHints, XSetWMSizeHints, XGetWMSizeHints, XSizeHints \- allocate size hints structure and set or read a window's WM_NORMAL_HINTS property
-.SH SYNTAX
-.HP
-XSizeHints *XAllocSizeHints\^(void\^);
-.HP
-void XSetWMNormalHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XSizeHints *\fIhints\fP\^);
-.HP
-Status XGetWMNormalHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP,
-XSizeHints *\fIhints_return\fP, long *\fIsupplied_return\fP\^);
-.HP
-void XSetWMSizeHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XSizeHints
-*\fIhints\fP, Atom \fIproperty\fP\^);
-.HP
-Status XGetWMSizeHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XSizeHints
-*\fIhints_return\fP, long *\fIsupplied_return\fP, Atom \fIproperty\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIhints\fP 1i
-Specifies the size hints for the window in its normal state.
-.IP \fIhints\fP 1i
-Specifies the
-.ZN XSizeHints
-structure to be used.
-.IP \fIhints_return\fP 1i
-Returns the size hints for the window in its normal state.
-.IP \fIproperty\fP 1i
-Specifies the property name.
-.IP \fIsupplied_return\fP 1i
-Returns the hints that were supplied by the user.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-The
-.ZN XAllocSizeHints
-function allocates and returns a pointer to a
-.ZN XSizeHints
-structure.
-Note that all fields in the
-.ZN XSizeHints
-structure are initially set to zero.
-If insufficient memory is available,
-.ZN XAllocSizeHints
-returns NULL.
-To free the memory allocated to this structure,
-use
-.ZN XFree .
-.LP
-The
-.ZN XSetWMNormalHints
-function replaces the size hints for the WM_NORMAL_HINTS property
-on the specified window.
-If the property does not already exist,
-.ZN 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
-.ZN XSetWMNormalHints
-can generate
-.ZN BadAlloc
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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,
-.ZN XGetWMNormalHints
-sets the various fields of the
-.ZN 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
-.ZN 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
-.ZN XGetWMNormalHints
-can generate a
-PN BadWindow
-error.
-.LP
-The
-.ZN XSetWMSizeHints
-function replaces the size hints for the specified property
-on the named window.
-If the specified property does not already exist,
-.ZN 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
-.ZN XSetWMNormalHints
-function.
-.LP
-.ZN XSetWMSizeHints
-can generate
-.ZN BadAlloc ,
-.ZN BadAtom ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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,
-.ZN XGetWMSizeHints
-sets the various fields of the
-.ZN 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
-.ZN XGetWMNormalHints
-function.
-.LP
-If
-.ZN 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
-.ZN XGetWMSizeHints
-can generate
-.ZN BadAtom
-and
-.ZN BadWindow
-errors.
-.SH PROPERTIES
-.TP 1i
-\s-1WM_NORMAL_HINTS\s+1
-Size hints for a window in its normal state.
-The C type of this property is
-.ZN XSizeHints .
-.SH STRUCTURES
-The
-.ZN XSizeHints
-structure contains:
-.LP
-/\&* Size hints mask bits */
-.TS
-lw(.5i) lw(1.1i) lw(1.5i) lw(3.1i).
-T{
-\&#define
-T} T{
-.ZN USPosition
-T} T{
-(1L << 0)
-T} T{
-/\&* user specified x, y */
-T}
-T{
-\&#define
-T} T{
-.ZN USSize
-T} T{
-(1L << 1)
-T} T{
-/\&* user specified width, height */
-T}
-T{
-\&#define
-T} T{
-.ZN PPosition
-T} T{
-(1L << 2)
-T} T{
-/\&* program specified position */
-T}
-T{
-\&#define
-T} T{
-.ZN PSize
-T} T{
-(1L << 3)
-T} T{
-/\&* program specified size */
-T}
-T{
-\&#define
-T} T{
-.ZN PMinSize
-T} T{
-(1L << 4)
-T} T{
-/\&* program specified minimum size */
-T}
-T{
-\&#define
-T} T{
-.ZN PMaxSize
-T} T{
-(1L << 5)
-T} T{
-/\&* program specified maximum size */
-T}
-T{
-\&#define
-T} T{
-.ZN PResizeInc
-T} T{
-(1L << 6)
-T} T{
-/\&* program specified resize increments */
-T}
-T{
-\&#define
-T} T{
-.ZN PAspect
-T} T{
-(1L << 7)
-T} T{
-/\&* program specified min and max aspect ratios */
-T}
-T{
-\&#define
-T} T{
-.ZN PBaseSize
-T} T{
-(1L << 8)
-T}
-T{
-\&#define
-T} T{
-.ZN PWinGravity
-T} T{
-(1L << 9)
-T}
-T{
-\&#define
-T} T{
-.ZN 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
-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
-.ZN PAllHints
-macro is highly discouraged.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadAtom
-A value for an Atom argument does not name a defined Atom.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XFree(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface, \fRO'Reilly and Associates,
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" t
+.TH XAllocSizeHints __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XAllocSizeHints, XSetWMNormalHints, XGetWMNormalHints, XSetWMSizeHints, XGetWMSizeHints, XSizeHints \- allocate size hints structure and set or read a window's WM_NORMAL_HINTS property
+.SH SYNTAX
+.HP
+XSizeHints *XAllocSizeHints\^(void\^);
+.HP
+void XSetWMNormalHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XSizeHints *\fIhints\fP\^);
+.HP
+Status XGetWMNormalHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP,
+XSizeHints *\fIhints_return\fP, long *\fIsupplied_return\fP\^);
+.HP
+void XSetWMSizeHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XSizeHints
+*\fIhints\fP, Atom \fIproperty\fP\^);
+.HP
+Status XGetWMSizeHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XSizeHints
+*\fIhints_return\fP, long *\fIsupplied_return\fP, Atom \fIproperty\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIhints\fP 1i
+Specifies the size hints for the window in its normal state.
+.IP \fIhints\fP 1i
+Specifies the
+.ZN XSizeHints
+structure to be used.
+.IP \fIhints_return\fP 1i
+Returns the size hints for the window in its normal state.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.IP \fIsupplied_return\fP 1i
+Returns the hints that were supplied by the user.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+The
+.ZN XAllocSizeHints
+function allocates and returns a pointer to a
+.ZN XSizeHints
+structure.
+Note that all fields in the
+.ZN XSizeHints
+structure are initially set to zero.
+If insufficient memory is available,
+.ZN XAllocSizeHints
+returns NULL.
+To free the memory allocated to this structure,
+use
+.ZN XFree .
+.LP
+The
+.ZN XSetWMNormalHints
+function replaces the size hints for the WM_NORMAL_HINTS property
+on the specified window.
+If the property does not already exist,
+.ZN 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
+.ZN XSetWMNormalHints
+can generate
+.ZN BadAlloc
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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,
+.ZN XGetWMNormalHints
+sets the various fields of the
+.ZN 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
+.ZN 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
+.ZN XGetWMNormalHints
+can generate a
+PN BadWindow
+error.
+.LP
+The
+.ZN XSetWMSizeHints
+function replaces the size hints for the specified property
+on the named window.
+If the specified property does not already exist,
+.ZN 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
+.ZN XSetWMNormalHints
+function.
+.LP
+.ZN XSetWMSizeHints
+can generate
+.ZN BadAlloc ,
+.ZN BadAtom ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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,
+.ZN XGetWMSizeHints
+sets the various fields of the
+.ZN 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
+.ZN XGetWMNormalHints
+function.
+.LP
+If
+.ZN 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
+.ZN XGetWMSizeHints
+can generate
+.ZN BadAtom
+and
+.ZN BadWindow
+errors.
+.SH PROPERTIES
+.TP 1i
+\s-1WM_NORMAL_HINTS\s+1
+Size hints for a window in its normal state.
+The C type of this property is
+.ZN XSizeHints .
+.SH STRUCTURES
+The
+.ZN XSizeHints
+structure contains:
+.LP
+/\&* Size hints mask bits */
+.TS
+lw(.5i) lw(1.1i) lw(1.5i) lw(3.1i).
+T{
+\&#define
+T} T{
+.ZN USPosition
+T} T{
+(1L << 0)
+T} T{
+/\&* user specified x, y */
+T}
+T{
+\&#define
+T} T{
+.ZN USSize
+T} T{
+(1L << 1)
+T} T{
+/\&* user specified width, height */
+T}
+T{
+\&#define
+T} T{
+.ZN PPosition
+T} T{
+(1L << 2)
+T} T{
+/\&* program specified position */
+T}
+T{
+\&#define
+T} T{
+.ZN PSize
+T} T{
+(1L << 3)
+T} T{
+/\&* program specified size */
+T}
+T{
+\&#define
+T} T{
+.ZN PMinSize
+T} T{
+(1L << 4)
+T} T{
+/\&* program specified minimum size */
+T}
+T{
+\&#define
+T} T{
+.ZN PMaxSize
+T} T{
+(1L << 5)
+T} T{
+/\&* program specified maximum size */
+T}
+T{
+\&#define
+T} T{
+.ZN PResizeInc
+T} T{
+(1L << 6)
+T} T{
+/\&* program specified resize increments */
+T}
+T{
+\&#define
+T} T{
+.ZN PAspect
+T} T{
+(1L << 7)
+T} T{
+/\&* program specified min and max aspect ratios */
+T}
+T{
+\&#define
+T} T{
+.ZN PBaseSize
+T} T{
+(1L << 8)
+T}
+T{
+\&#define
+T} T{
+.ZN PWinGravity
+T} T{
+(1L << 9)
+T}
+T{
+\&#define
+T} T{
+.ZN 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
+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
+.ZN PAllHints
+macro is highly discouraged.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadAtom
+A value for an Atom argument does not name a defined Atom.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XFree(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XAllocStandardColormap.man b/libX11/man/XAllocStandardColormap.man
index 813e89329..f27b643a4 100644
--- a/libX11/man/XAllocStandardColormap.man
+++ b/libX11/man/XAllocStandardColormap.man
@@ -1,405 +1,405 @@
-'\" t
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XAllocStandardColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XAllocStandardColormap, XSetRGBColormaps, XGetRGBColormaps, XStandardColormap \- allocate, set, or read a standard colormap structure
-.SH SYNTAX
-.HP
-XStandardColormap *XAllocStandardColormap\^(void\^);
-.HP
-void XSetRGBColormaps\^(\^Display *\fIdisplay\fP, Window \fIw\fP,
-XStandardColormap *\fIstd_colormap\fP,
-int \fIcount\fP, Atom \fIproperty\fP\^);
-.HP
-Status XGetRGBColormaps\^(\^Display *\fIdisplay\fP, Window \fIw\fP,
-XStandardColormap **\fIstd_colormap_return\fP, int *\fIcount_return\fP,
-Atom \fIproperty\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.ds Cn colormaps
-.IP \fIcount\fP 1i
-Specifies the number of \*(Cn.
-.ds Cn colormaps
-.IP \fIcount_return\fP 1i
-Returns the number of \*(Cn.
-.IP \fIproperty\fP 1i
-Specifies the property name.
-.IP \fIstd_colormap\fP 1i
-Specifies the
-.ZN XStandardColormap
-structure to be used.
-.IP \fIstd_colormap_return\fP 1i
-Returns the
-.ZN XStandardColormap
-structure.
-.SH DESCRIPTION
-The
-.ZN XAllocStandardColormap
-function allocates and returns a pointer to a
-.ZN XStandardColormap
-structure.
-Note that all fields in the
-.ZN XStandardColormap
-structure are initially set to zero.
-If insufficient memory is available,
-.ZN XAllocStandardColormap
-returns NULL.
-To free the memory allocated to this structure,
-use
-.ZN XFree .
-.LP
-The
-.ZN XSetRGBColormaps
-function replaces the RGB colormap definition in the specified property
-on the named window.
-If the property does not already exist,
-.ZN 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
-.ZN 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
-.ZN AllocAll ).
-.IP \(bu 5
-Call
-.ZN XStoreColors
-to store appropriate color values in the colormap.
-.IP \(bu 5
-Fill in the descriptive members in the
-.ZN XStandardColormap
-structure.
-.IP \(bu 5
-Attach the property to the root window.
-.IP \(bu 5
-Use
-.ZN XSetCloseDownMode
-to make the resource permanent.
-.RE
-.IP 5. 5
-Ungrab the server.
-.LP
-.ZN XSetRGBColormaps
-can generate
-.ZN BadAlloc ,
-.ZN BadAtom ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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,
-.ZN XGetRGBColormaps
-allocates and fills in space for the returned colormaps
-and returns a nonzero status.
-If the visualid is not present,
-.ZN XGetRGBColormaps
-assumes the default visual for the screen on which the window is located;
-if the killid is not present,
-.ZN None
-is assumed, which indicates that the resources cannot be released.
-Otherwise,
-none of the fields are set, and
-.ZN 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
-.ZN XGetRGBColormaps
-can generate
-.ZN BadAtom
-and
-.ZN BadWindow
-errors.
-.SH STRUCTURES
-The
-.ZN XStandardColormap
-structure contains:
-.LP
-/\&* Hints */
-.TS
-lw(.5i) lw(2i) lw(1i).
-T{
-\&#define
-T} T{
-.ZN 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
-The colormap member is the colormap created by the
-.ZN 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
-.ZN 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
-.ZN GrayScale
-colormaps,
-only the colormap, red_max, red_mult,
-and base_pixel members are defined.
-The other members are ignored.
-To compute a
-.ZN 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
-.ZN XKillClient
-function on the indicated resource.
-(Note that this method is necessary for allocating out of an existing colormap.)
-.LP
-The properties containing the
-.ZN XStandardColormap
-information have
-the type RGB_COLOR_MAP.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadAtom
-A value for an Atom argument does not name a defined Atom.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocColor(__libmansuffix__),
-XCreateColormap(__libmansuffix__),
-XFree(__libmansuffix__),
-XSetCloseDownMode(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" t
+.TH XAllocStandardColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XAllocStandardColormap, XSetRGBColormaps, XGetRGBColormaps, XStandardColormap \- allocate, set, or read a standard colormap structure
+.SH SYNTAX
+.HP
+XStandardColormap *XAllocStandardColormap\^(void\^);
+.HP
+void XSetRGBColormaps\^(\^Display *\fIdisplay\fP, Window \fIw\fP,
+XStandardColormap *\fIstd_colormap\fP,
+int \fIcount\fP, Atom \fIproperty\fP\^);
+.HP
+Status XGetRGBColormaps\^(\^Display *\fIdisplay\fP, Window \fIw\fP,
+XStandardColormap **\fIstd_colormap_return\fP, int *\fIcount_return\fP,
+Atom \fIproperty\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Cn colormaps
+.IP \fIcount\fP 1i
+Specifies the number of \*(Cn.
+.ds Cn colormaps
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.IP \fIstd_colormap\fP 1i
+Specifies the
+.ZN XStandardColormap
+structure to be used.
+.IP \fIstd_colormap_return\fP 1i
+Returns the
+.ZN XStandardColormap
+structure.
+.SH DESCRIPTION
+The
+.ZN XAllocStandardColormap
+function allocates and returns a pointer to a
+.ZN XStandardColormap
+structure.
+Note that all fields in the
+.ZN XStandardColormap
+structure are initially set to zero.
+If insufficient memory is available,
+.ZN XAllocStandardColormap
+returns NULL.
+To free the memory allocated to this structure,
+use
+.ZN XFree .
+.LP
+The
+.ZN XSetRGBColormaps
+function replaces the RGB colormap definition in the specified property
+on the named window.
+If the property does not already exist,
+.ZN 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
+.ZN 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
+.ZN AllocAll ).
+.IP \(bu 5
+Call
+.ZN XStoreColors
+to store appropriate color values in the colormap.
+.IP \(bu 5
+Fill in the descriptive members in the
+.ZN XStandardColormap
+structure.
+.IP \(bu 5
+Attach the property to the root window.
+.IP \(bu 5
+Use
+.ZN XSetCloseDownMode
+to make the resource permanent.
+.RE
+.IP 5. 5
+Ungrab the server.
+.LP
+.ZN XSetRGBColormaps
+can generate
+.ZN BadAlloc ,
+.ZN BadAtom ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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,
+.ZN XGetRGBColormaps
+allocates and fills in space for the returned colormaps
+and returns a nonzero status.
+If the visualid is not present,
+.ZN XGetRGBColormaps
+assumes the default visual for the screen on which the window is located;
+if the killid is not present,
+.ZN None
+is assumed, which indicates that the resources cannot be released.
+Otherwise,
+none of the fields are set, and
+.ZN 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
+.ZN XGetRGBColormaps
+can generate
+.ZN BadAtom
+and
+.ZN BadWindow
+errors.
+.SH STRUCTURES
+The
+.ZN XStandardColormap
+structure contains:
+.LP
+/\&* Hints */
+.TS
+lw(.5i) lw(2i) lw(1i).
+T{
+\&#define
+T} T{
+.ZN 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
+The colormap member is the colormap created by the
+.ZN 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
+.ZN 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
+.ZN GrayScale
+colormaps,
+only the colormap, red_max, red_mult,
+and base_pixel members are defined.
+The other members are ignored.
+To compute a
+.ZN 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
+.ZN XKillClient
+function on the indicated resource.
+(Note that this method is necessary for allocating out of an existing colormap.)
+.LP
+The properties containing the
+.ZN XStandardColormap
+information have
+the type RGB_COLOR_MAP.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadAtom
+A value for an Atom argument does not name a defined Atom.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocColor(__libmansuffix__),
+XCreateColormap(__libmansuffix__),
+XFree(__libmansuffix__),
+XSetCloseDownMode(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XAllocWMHints.man b/libX11/man/XAllocWMHints.man
index 5b402fe13..8e83209e2 100644
--- a/libX11/man/XAllocWMHints.man
+++ b/libX11/man/XAllocWMHints.man
@@ -1,416 +1,416 @@
-'\" t
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface, \fRO'Reilly and Associates, Sebastopol, 1991.
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XAllocWMHints __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XAllocWMHints, XSetWMHints, XGetWMHints, XWMHints \- allocate window manager hints structure and set or read a window's WM_HINTS property
-.SH SYNTAX
-.HP
-XWMHints *XAllocWMHints\^(void\^);
-.HP
-int XSetWMHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XWMHints *\fIwmhints\fP\^);
-.HP
-XWMHints *XGetWMHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIw\fP 1i
-Specifies the window.
-.IP \fIwmhints\fP 1i
-Specifies the
-.ZN XWMHints
-structure to be used.
-.SH DESCRIPTION
-The
-.ZN XAllocWMHints
-function allocates and returns a pointer to a
-.ZN XWMHints
-structure.
-Note that all fields in the
-.ZN XWMHints
-structure are initially set to zero.
-If insufficient memory is available,
-.ZN XAllocWMHints
-returns NULL.
-To free the memory allocated to this structure,
-use
-.ZN XFree .
-.LP
-The
-.ZN 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
-.ZN XSetWMHints
-can generate
-.ZN BadAlloc
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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 a
-.ZN XWMHints
-structure if it succeeds.
-When finished with the data,
-free the space used for it by calling
-.ZN XFree .
-.LP
-.ZN XGetWMHints
-can generate a
-.ZN BadWindow
-error.
-.SH PROPERTIES
-.TP 1i
-\s-1WM_HINTS\s+1
-Additional hints set by the client for use by the window manager.
-The C type of this property is
-.ZN XWMHints .
-.SH STRUCTURES
-The
-.ZN XWMHints
-structure contains:
-.LP
-/\&* Window manager hints mask bits */
-.TS
-lw(.5i) lw(2.5i) lw(2.5i).
-T{
-\&#define
-T} T{
-.ZN InputHint
-T} T{
-(1L << 0)
-T}
-T{
-\&#define
-T} T{
-.ZN StateHint
-T} T{
-(1L << 1)
-T}
-T{
-\&#define
-T} T{
-.ZN IconPixmapHint
-T} T{
-(1L << 2)
-T}
-T{
-\&#define
-T} T{
-.ZN IconWindowHint
-T} T{
-(1L << 3)
-T}
-T{
-\&#define
-T} T{
-.ZN IconPositionHint
-T} T{
-(1L << 4)
-T}
-T{
-\&#define
-T} T{
-.ZN IconMaskHint
-T} T{
-(1L << 5)
-T}
-T{
-\&#define
-T} T{
-.ZN WindowGroupHint
-T} T{
-(1L << 6)
-T}
-T{
-\&#define
-T} T{
-.ZN XUrgencyHint
-T} T{
-(1L << 8)
-T}
-T{
-\&#define
-T} T{
-.ZN 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
-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
-.ZN 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
-.ZN 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
-.ZN False .
-Applications that never expect any keyboard input also should set this member
-to
-.ZN 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
-.ZN True .
-Push model window managers should
-make sure that pull model applications do not break them
-by resetting input focus to
-.ZN PointerRoot
-when it is appropriate (for example, whenever an application whose
-input member is
-.ZN 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{
-.ZN WithdrawnState
-T} T{
-0
-T} T{
-T}
-T{
-\&#define
-T} T{
-.ZN NormalState
-T} T{
-1
-T} T{
-/\&* most applications start this way */
-T}
-T{
-\&#define
-T} T{
-.ZN 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
-.ZN 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.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XFree(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface, \fRO'Reilly and Associates, Sebastopol, 1991.
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" t
+.TH XAllocWMHints __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XAllocWMHints, XSetWMHints, XGetWMHints, XWMHints \- allocate window manager hints structure and set or read a window's WM_HINTS property
+.SH SYNTAX
+.HP
+XWMHints *XAllocWMHints\^(void\^);
+.HP
+int XSetWMHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP, XWMHints *\fIwmhints\fP\^);
+.HP
+XWMHints *XGetWMHints\^(\^Display *\fIdisplay\fP, Window \fIw\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIwmhints\fP 1i
+Specifies the
+.ZN XWMHints
+structure to be used.
+.SH DESCRIPTION
+The
+.ZN XAllocWMHints
+function allocates and returns a pointer to a
+.ZN XWMHints
+structure.
+Note that all fields in the
+.ZN XWMHints
+structure are initially set to zero.
+If insufficient memory is available,
+.ZN XAllocWMHints
+returns NULL.
+To free the memory allocated to this structure,
+use
+.ZN XFree .
+.LP
+The
+.ZN 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
+.ZN XSetWMHints
+can generate
+.ZN BadAlloc
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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 a
+.ZN XWMHints
+structure if it succeeds.
+When finished with the data,
+free the space used for it by calling
+.ZN XFree .
+.LP
+.ZN XGetWMHints
+can generate a
+.ZN BadWindow
+error.
+.SH PROPERTIES
+.TP 1i
+\s-1WM_HINTS\s+1
+Additional hints set by the client for use by the window manager.
+The C type of this property is
+.ZN XWMHints .
+.SH STRUCTURES
+The
+.ZN XWMHints
+structure contains:
+.LP
+/\&* Window manager hints mask bits */
+.TS
+lw(.5i) lw(2.5i) lw(2.5i).
+T{
+\&#define
+T} T{
+.ZN InputHint
+T} T{
+(1L << 0)
+T}
+T{
+\&#define
+T} T{
+.ZN StateHint
+T} T{
+(1L << 1)
+T}
+T{
+\&#define
+T} T{
+.ZN IconPixmapHint
+T} T{
+(1L << 2)
+T}
+T{
+\&#define
+T} T{
+.ZN IconWindowHint
+T} T{
+(1L << 3)
+T}
+T{
+\&#define
+T} T{
+.ZN IconPositionHint
+T} T{
+(1L << 4)
+T}
+T{
+\&#define
+T} T{
+.ZN IconMaskHint
+T} T{
+(1L << 5)
+T}
+T{
+\&#define
+T} T{
+.ZN WindowGroupHint
+T} T{
+(1L << 6)
+T}
+T{
+\&#define
+T} T{
+.ZN XUrgencyHint
+T} T{
+(1L << 8)
+T}
+T{
+\&#define
+T} T{
+.ZN 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
+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
+.ZN 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
+.ZN 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
+.ZN False .
+Applications that never expect any keyboard input also should set this member
+to
+.ZN 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
+.ZN True .
+Push model window managers should
+make sure that pull model applications do not break them
+by resetting input focus to
+.ZN PointerRoot
+when it is appropriate (for example, whenever an application whose
+input member is
+.ZN 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{
+.ZN WithdrawnState
+T} T{
+0
+T} T{
+T}
+T{
+\&#define
+T} T{
+.ZN NormalState
+T} T{
+1
+T} T{
+/\&* most applications start this way */
+T}
+T{
+\&#define
+T} T{
+.ZN 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
+.ZN 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.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XFree(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XAllowEvents.man b/libX11/man/XAllowEvents.man
index cb95e8aac..05f6360ad 100644
--- a/libX11/man/XAllowEvents.man
+++ b/libX11/man/XAllowEvents.man
@@ -1,189 +1,189 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XAllowEvents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XAllowEvents \- release queued events
-.SH SYNTAX
-.HP
-int XAllowEvents\^(\^Display *\fIdisplay\fP, int \fIevent_mode\fP\^,
-Time \fItime\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIevent_mode\fP 1i
-Specifies the event mode.
-You can pass
-.ZN AsyncPointer ,
-.ZN SyncPointer ,
-.ZN AsyncKeyboard ,
-.ZN SyncKeyboard ,
-.ZN ReplayPointer ,
-.ZN ReplayKeyboard ,
-.ZN AsyncBoth ,
-or
-.ZN SyncBoth .
-.IP \fItime\fP 1i
-Specifies the time.
-You can pass either a timestamp or
-.ZN CurrentTime .
-.SH DESCRIPTION
-The
-.ZN 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.
-.LP
-.ZN XAllowEvents
-can generate a
-.ZN BadValue
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XAllowEvents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XAllowEvents \- release queued events
+.SH SYNTAX
+.HP
+int XAllowEvents\^(\^Display *\fIdisplay\fP, int \fIevent_mode\fP\^,
+Time \fItime\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_mode\fP 1i
+Specifies the event mode.
+You can pass
+.ZN AsyncPointer ,
+.ZN SyncPointer ,
+.ZN AsyncKeyboard ,
+.ZN SyncKeyboard ,
+.ZN ReplayPointer ,
+.ZN ReplayKeyboard ,
+.ZN AsyncBoth ,
+or
+.ZN SyncBoth .
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.ZN CurrentTime .
+.SH DESCRIPTION
+The
+.ZN 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.
+.LP
+.ZN XAllowEvents
+can generate a
+.ZN BadValue
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XAnyEvent.man b/libX11/man/XAnyEvent.man
index af3521800..e870524bc 100644
--- a/libX11/man/XAnyEvent.man
+++ b/libX11/man/XAnyEvent.man
@@ -1,271 +1,271 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XAnyEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XAnyEvent, XEvent \- generic X event structures
-.SH STRUCTURES
-All the event structures declared in
-.Pn < X11/Xlib.h >
-have the following common members:
-.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
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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
-.ZN XEvent
-structure is a union of the individual structures declared for each event type:
-.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
-An
-.ZN 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
-.ZN 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.
-.SH "SEE ALSO"
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XAnyEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XAnyEvent, XEvent \- generic X event structures
+.SH STRUCTURES
+All the event structures declared in
+.Pn < X11/Xlib.h >
+have the following common members:
+.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
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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
+.ZN XEvent
+structure is a union of the individual structures declared for each event type:
+.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
+An
+.ZN 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
+.ZN 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.
+.SH "SEE ALSO"
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XButtonEvent.man b/libX11/man/XButtonEvent.man
index 607897fdf..b115c7ef7 100644
--- a/libX11/man/XButtonEvent.man
+++ b/libX11/man/XButtonEvent.man
@@ -1,355 +1,355 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XButtonEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XButtonEvent, XKeyEvent, XMotionEvent \- KeyPress, KeyRelease, ButtonPress, ButtonRelease, and MotionNotify event structures
-.SH STRUCTURES
-The structures for
-.ZN KeyPress ,
-.ZN KeyRelease ,
-.ZN ButtonPress ,
-.ZN ButtonRelease ,
-and
-.ZN MotionNotify
-events contain:
-.LP
-.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
-.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
-.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
-When you receive these events,
-their structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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
-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
-.ZN True
-or
-.ZN False .
-If
-.ZN True ,
-the event and root windows are on the same screen.
-If
-.ZN 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
-.ZN 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:
-.ZN Button1Mask ,
-.ZN Button2Mask ,
-.ZN Button3Mask ,
-.ZN Button4Mask ,
-.ZN Button5Mask ,
-.ZN ShiftMask ,
-.ZN LockMask ,
-.ZN ControlMask ,
-.ZN Mod1Mask ,
-.ZN Mod2Mask ,
-.ZN Mod3Mask ,
-.ZN Mod4Mask ,
-and
-.ZN Mod5Mask .
-.LP
-Each of these structures also has a member that indicates the detail.
-For the
-.ZN XKeyPressedEvent
-and
-.ZN 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
-.ZN XButtonPressedEvent
-and
-.ZN XButtonReleasedEvent
-structures, this member is called button.
-It represents the pointer button that changed state and can be the
-.ZN Button1 ,
-.ZN Button2 ,
-.ZN Button3 ,
-.ZN Button4 ,
-or
-.ZN Button5
-value.
-For the
-.ZN XPointerMovedEvent
-structure, this member is called is_hint.
-It can be set to
-.ZN NotifyNormal
-or
-.ZN NotifyHint .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XButtonEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XButtonEvent, XKeyEvent, XMotionEvent \- KeyPress, KeyRelease, ButtonPress, ButtonRelease, and MotionNotify event structures
+.SH STRUCTURES
+The structures for
+.ZN KeyPress ,
+.ZN KeyRelease ,
+.ZN ButtonPress ,
+.ZN ButtonRelease ,
+and
+.ZN MotionNotify
+events contain:
+.LP
+.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
+.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
+.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
+When you receive these events,
+their structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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
+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
+.ZN True
+or
+.ZN False .
+If
+.ZN True ,
+the event and root windows are on the same screen.
+If
+.ZN 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
+.ZN 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:
+.ZN Button1Mask ,
+.ZN Button2Mask ,
+.ZN Button3Mask ,
+.ZN Button4Mask ,
+.ZN Button5Mask ,
+.ZN ShiftMask ,
+.ZN LockMask ,
+.ZN ControlMask ,
+.ZN Mod1Mask ,
+.ZN Mod2Mask ,
+.ZN Mod3Mask ,
+.ZN Mod4Mask ,
+and
+.ZN Mod5Mask .
+.LP
+Each of these structures also has a member that indicates the detail.
+For the
+.ZN XKeyPressedEvent
+and
+.ZN 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
+.ZN XButtonPressedEvent
+and
+.ZN XButtonReleasedEvent
+structures, this member is called button.
+It represents the pointer button that changed state and can be the
+.ZN Button1 ,
+.ZN Button2 ,
+.ZN Button3 ,
+.ZN Button4 ,
+or
+.ZN Button5
+value.
+For the
+.ZN XPointerMovedEvent
+structure, this member is called is_hint.
+It can be set to
+.ZN NotifyNormal
+or
+.ZN NotifyHint .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XChangePointerControl.man b/libX11/man/XChangePointerControl.man
index 3a8fa6fc7..42ccea16d 100644
--- a/libX11/man/XChangePointerControl.man
+++ b/libX11/man/XChangePointerControl.man
@@ -1,214 +1,214 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XChangePointerControl __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XChangePointerControl, XGetPointerControl \- control pointer
-.SH SYNTAX
-.HP
-int XChangePointerControl\^(\^Display *\fIdisplay\fP\^, Bool \fIdo_accel\fP\^,
-Bool \fIdo_threshold\fP\^, int \fIaccel_numerator\fP\^, int
-\fIaccel_denominator\fP\^, int \fIthreshold\fP\^);
-.HP
-int XGetPointerControl\^(\^Display *\fIdisplay\fP\^, int
-*\fIaccel_numerator_return\fP\^, int *\fIaccel_denominator_return\fP\^, int
-*\fIthreshold_return\fP\^);
-.SH ARGUMENTS
-.IP \fIaccel_denominator\fP 1i
-Specifies the denominator for the acceleration multiplier.
-.IP \fIaccel_denominator_return\fP 1i
-Returns the denominator for the acceleration multiplier.
-.IP \fIaccel_numerator\fP 1i
-Specifies the numerator for the acceleration multiplier.
-.IP \fIaccel_numerator_return\fP 1i
-Returns the numerator for the acceleration multiplier.
-.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 \fIthreshold\fP 1i
-Specifies the acceleration threshold.
-.IP \fIthreshold_return\fP 1i
-Returns the acceleration threshold.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN True
-for the pointer values to be set,
-or the parameters are unchanged.
-Negative values (other than \-1) generate a
-.ZN BadValue
-error, as does a zero value
-for the accel_denominator argument.
-.LP
-.ZN XChangePointerControl
-can generate a
-.ZN BadValue
-error.
-.LP
-The
-.ZN XGetPointerControl
-function returns the pointer's current acceleration multiplier
-and acceleration threshold.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XChangePointerControl __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XChangePointerControl, XGetPointerControl \- control pointer
+.SH SYNTAX
+.HP
+int XChangePointerControl\^(\^Display *\fIdisplay\fP\^, Bool \fIdo_accel\fP\^,
+Bool \fIdo_threshold\fP\^, int \fIaccel_numerator\fP\^, int
+\fIaccel_denominator\fP\^, int \fIthreshold\fP\^);
+.HP
+int XGetPointerControl\^(\^Display *\fIdisplay\fP\^, int
+*\fIaccel_numerator_return\fP\^, int *\fIaccel_denominator_return\fP\^, int
+*\fIthreshold_return\fP\^);
+.SH ARGUMENTS
+.IP \fIaccel_denominator\fP 1i
+Specifies the denominator for the acceleration multiplier.
+.IP \fIaccel_denominator_return\fP 1i
+Returns the denominator for the acceleration multiplier.
+.IP \fIaccel_numerator\fP 1i
+Specifies the numerator for the acceleration multiplier.
+.IP \fIaccel_numerator_return\fP 1i
+Returns the numerator for the acceleration multiplier.
+.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 \fIthreshold\fP 1i
+Specifies the acceleration threshold.
+.IP \fIthreshold_return\fP 1i
+Returns the acceleration threshold.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN True
+for the pointer values to be set,
+or the parameters are unchanged.
+Negative values (other than \-1) generate a
+.ZN BadValue
+error, as does a zero value
+for the accel_denominator argument.
+.LP
+.ZN XChangePointerControl
+can generate a
+.ZN BadValue
+error.
+.LP
+The
+.ZN XGetPointerControl
+function returns the pointer's current acceleration multiplier
+and acceleration threshold.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XChangeSaveSet.man b/libX11/man/XChangeSaveSet.man
index 019240937..5622b0aa1 100644
--- a/libX11/man/XChangeSaveSet.man
+++ b/libX11/man/XChangeSaveSet.man
@@ -1,227 +1,227 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XChangeSaveSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XChangeSaveSet, XAddToSaveSet, XRemoveFromSaveSet \- change a client's save set
-.SH SYNTAX
-.HP
-int XChangeSaveSet\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIchange_mode\fP\^);
-.HP
-int XAddToSaveSet\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
-.HP
-int XRemoveFromSaveSet\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
-.SH ARGUMENTS
-.IP \fIchange_mode\fP 1i
-Specifies the mode.
-You can pass
-.ZN SetModeInsert
-or
-.ZN SetModeDelete .
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.ds Wi that you want to add or delete from the client's save-set
-.IP \fIw\fP 1i
-Specifies the window \*(Wi.
-.SH DESCRIPTION
-Depending on the specified mode,
-.ZN 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
-.ZN BadMatch
-error results.
-.LP
-.ZN XChangeSaveSet
-can generate
-.ZN BadMatch ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN BadMatch
-error results.
-.LP
-.ZN XAddToSaveSet
-can generate
-.ZN BadMatch
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN BadMatch
-error results.
-.LP
-.ZN XRemoveFromSaveSet
-can generate
-.ZN BadMatch
-and
-.ZN BadWindow
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XReparentWindow(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XChangeSaveSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XChangeSaveSet, XAddToSaveSet, XRemoveFromSaveSet \- change a client's save set
+.SH SYNTAX
+.HP
+int XChangeSaveSet\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIchange_mode\fP\^);
+.HP
+int XAddToSaveSet\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
+.HP
+int XRemoveFromSaveSet\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
+.SH ARGUMENTS
+.IP \fIchange_mode\fP 1i
+Specifies the mode.
+You can pass
+.ZN SetModeInsert
+or
+.ZN SetModeDelete .
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Wi that you want to add or delete from the client's save-set
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.SH DESCRIPTION
+Depending on the specified mode,
+.ZN 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
+.ZN BadMatch
+error results.
+.LP
+.ZN XChangeSaveSet
+can generate
+.ZN BadMatch ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN BadMatch
+error results.
+.LP
+.ZN XAddToSaveSet
+can generate
+.ZN BadMatch
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN BadMatch
+error results.
+.LP
+.ZN XRemoveFromSaveSet
+can generate
+.ZN BadMatch
+and
+.ZN BadWindow
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XReparentWindow(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XChangeWindowAttributes.man b/libX11/man/XChangeWindowAttributes.man
index 3789a51dc..95aace6c8 100644
--- a/libX11/man/XChangeWindowAttributes.man
+++ b/libX11/man/XChangeWindowAttributes.man
@@ -1,405 +1,405 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XChangeWindowAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XChangeWindowAttributes, XSetWindowBackground, XSetWindowBackgroundPixmap, XSetWindowBorder, XSetWindowBorderPixmap, XSetWindowColormap \- change window attributes
-.SH SYNTAX
-.HP
-int XChangeWindowAttributes\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned long \fIvaluemask\fP\^, XSetWindowAttributes *\fIattributes\fP\^);
-.HP
-int XSetWindowBackground\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned long \fIbackground_pixel\fP\^);
-.HP
-int XSetWindowBackgroundPixmap\^(\^Display *\fIdisplay\fP\^, Window
-\fIw\fP\^, Pixmap \fIbackground_pixmap\fP\^);
-.HP
-int XSetWindowBorder\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned long \fIborder_pixel\fP\^);
-.HP
-int XSetWindowBorderPixmap\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Pixmap \fIborder_pixmap\fP\^);
-.HP
-int XSetWindowColormap\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Colormap \fIcolormap\fP\^);
-.SH ARGUMENTS
-.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.
-.IP \fIbackground_pixel\fP 1i
-Specifies the pixel that is to be used for the background.
-.IP \fIbackground_pixmap\fP 1i
-Specifies the background pixmap,
-.ZN ParentRelative ,
-or
-.ZN None .
-.IP \fIborder_pixel\fP 1i
-Specifies the entry in the colormap.
-.IP \fIborder_pixmap\fP 1i
-Specifies the border pixmap or
-.ZN CopyFromParent .
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.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 \fIw\fP 1i
-Specifies the window.
-.IP \fIcolormap\fP 1i
-Specifies the colormap.
-.SH DESCRIPTION
-Depending on the valuemask,
-the
-.ZN XChangeWindowAttributes
-function uses the window attributes in the
-.ZN 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
-.ZN 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
-.ZN None
-or
-.ZN ParentRelative
-restores the default background pixmap.
-Changing the border of a root window to
-.ZN 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
-.ZN WhenMapped
-or
-.ZN 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
-.ZN 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
-.ZN XInstallColormap ).
-Changing the cursor of a root window to
-.ZN 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
-.ZN SubstructureRedirectMask ,
-.ZN ResizeRedirectMask ,
-and
-.ZN ButtonPressMask .
-If a client attempts to select any of these event masks
-and some other client has already selected one,
-a
-.ZN BadAccess
-error results.
-There is only one do-not-propagate-mask for a window,
-not one per client.
-.LP
-.ZN XChangeWindowAttributes
-can generate
-.ZN BadAccess ,
-.ZN BadColor ,
-.ZN BadCursor ,
-.ZN BadMatch ,
-.ZN BadPixmap ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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.
-.ZN XSetWindowBackground
-uses a pixmap of undefined size filled with the pixel value you passed.
-If you try to change the background of an
-.ZN InputOnly
-window, a
-.ZN BadMatch
-error results.
-.LP
-.ZN XSetWindowBackground
-can generate
-.ZN BadMatch
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN 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
-.ZN InputOnly
-window, a
-.ZN BadMatch
-error results.
-If the background is set to
-.ZN None ,
-the window has no defined background.
-.LP
-.ZN XSetWindowBackgroundPixmap
-can generate
-.ZN BadMatch ,
-.ZN BadPixmap ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XSetWindowBorder
-function sets the border of the window to the pixel value you specify.
-If you attempt to perform this on an
-.ZN InputOnly
-window, a
-.ZN BadMatch
-error results.
-.LP
-.ZN XSetWindowBorder
-can generate
-.ZN BadMatch
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN CopyFromParent ,
-a copy of the parent window's border pixmap is used.
-If you attempt to perform this on an
-.ZN InputOnly
-window, a
-.ZN BadMatch
-error results.
-.LP
-.ZN XSetWindowBorderPixmap
-can generate
-.ZN BadMatch ,
-.ZN BadPixmap ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XSetWindowColormap
-function sets the specified colormap of the specified window.
-The colormap must have the same visual type as the window,
-or a
-.ZN BadMatch
-error results.
-.LP
-.ZN XSetWindowColormap
-can generate
-.ZN BadColor ,
-.ZN BadMatch ,
-and
-.ZN BadWindow
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAccess
-A client attempted
-to free a color map entry that it did not already allocate.
-.TP 1i
-.ZN BadAccess
-A client attempted
-to store into a read-only color map entry.
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.TP 1i
-.ZN BadCursor
-A value for a Cursor argument does not name a defined Cursor.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window locks this attribute.
-.TP 1i
-.ZN BadPixmap
-A value for a Pixmap argument does not name a defined Pixmap.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XConfigureWindow(__libmansuffix__),
-XCreateWindow(__libmansuffix__),
-XDestroyWindow(__libmansuffix__),
-XInstallColormap(__libmansuffix__),
-XMapWindow(__libmansuffix__),
-XRaiseWindow(__libmansuffix__),
-XUnmapWindow(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XChangeWindowAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XChangeWindowAttributes, XSetWindowBackground, XSetWindowBackgroundPixmap, XSetWindowBorder, XSetWindowBorderPixmap, XSetWindowColormap \- change window attributes
+.SH SYNTAX
+.HP
+int XChangeWindowAttributes\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned long \fIvaluemask\fP\^, XSetWindowAttributes *\fIattributes\fP\^);
+.HP
+int XSetWindowBackground\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned long \fIbackground_pixel\fP\^);
+.HP
+int XSetWindowBackgroundPixmap\^(\^Display *\fIdisplay\fP\^, Window
+\fIw\fP\^, Pixmap \fIbackground_pixmap\fP\^);
+.HP
+int XSetWindowBorder\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned long \fIborder_pixel\fP\^);
+.HP
+int XSetWindowBorderPixmap\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Pixmap \fIborder_pixmap\fP\^);
+.HP
+int XSetWindowColormap\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Colormap \fIcolormap\fP\^);
+.SH ARGUMENTS
+.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.
+.IP \fIbackground_pixel\fP 1i
+Specifies the pixel that is to be used for the background.
+.IP \fIbackground_pixmap\fP 1i
+Specifies the background pixmap,
+.ZN ParentRelative ,
+or
+.ZN None .
+.IP \fIborder_pixel\fP 1i
+Specifies the entry in the colormap.
+.IP \fIborder_pixmap\fP 1i
+Specifies the border pixmap or
+.ZN CopyFromParent .
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.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 \fIw\fP 1i
+Specifies the window.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.SH DESCRIPTION
+Depending on the valuemask,
+the
+.ZN XChangeWindowAttributes
+function uses the window attributes in the
+.ZN 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
+.ZN 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
+.ZN None
+or
+.ZN ParentRelative
+restores the default background pixmap.
+Changing the border of a root window to
+.ZN 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
+.ZN WhenMapped
+or
+.ZN 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
+.ZN 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
+.ZN XInstallColormap ).
+Changing the cursor of a root window to
+.ZN 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
+.ZN SubstructureRedirectMask ,
+.ZN ResizeRedirectMask ,
+and
+.ZN ButtonPressMask .
+If a client attempts to select any of these event masks
+and some other client has already selected one,
+a
+.ZN BadAccess
+error results.
+There is only one do-not-propagate-mask for a window,
+not one per client.
+.LP
+.ZN XChangeWindowAttributes
+can generate
+.ZN BadAccess ,
+.ZN BadColor ,
+.ZN BadCursor ,
+.ZN BadMatch ,
+.ZN BadPixmap ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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.
+.ZN XSetWindowBackground
+uses a pixmap of undefined size filled with the pixel value you passed.
+If you try to change the background of an
+.ZN InputOnly
+window, a
+.ZN BadMatch
+error results.
+.LP
+.ZN XSetWindowBackground
+can generate
+.ZN BadMatch
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN 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
+.ZN InputOnly
+window, a
+.ZN BadMatch
+error results.
+If the background is set to
+.ZN None ,
+the window has no defined background.
+.LP
+.ZN XSetWindowBackgroundPixmap
+can generate
+.ZN BadMatch ,
+.ZN BadPixmap ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XSetWindowBorder
+function sets the border of the window to the pixel value you specify.
+If you attempt to perform this on an
+.ZN InputOnly
+window, a
+.ZN BadMatch
+error results.
+.LP
+.ZN XSetWindowBorder
+can generate
+.ZN BadMatch
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN CopyFromParent ,
+a copy of the parent window's border pixmap is used.
+If you attempt to perform this on an
+.ZN InputOnly
+window, a
+.ZN BadMatch
+error results.
+.LP
+.ZN XSetWindowBorderPixmap
+can generate
+.ZN BadMatch ,
+.ZN BadPixmap ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XSetWindowColormap
+function sets the specified colormap of the specified window.
+The colormap must have the same visual type as the window,
+or a
+.ZN BadMatch
+error results.
+.LP
+.ZN XSetWindowColormap
+can generate
+.ZN BadColor ,
+.ZN BadMatch ,
+and
+.ZN BadWindow
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAccess
+A client attempted
+to free a color map entry that it did not already allocate.
+.TP 1i
+.ZN BadAccess
+A client attempted
+to store into a read-only color map entry.
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.TP 1i
+.ZN BadCursor
+A value for a Cursor argument does not name a defined Cursor.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window locks this attribute.
+.TP 1i
+.ZN BadPixmap
+A value for a Pixmap argument does not name a defined Pixmap.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XConfigureWindow(__libmansuffix__),
+XCreateWindow(__libmansuffix__),
+XDestroyWindow(__libmansuffix__),
+XInstallColormap(__libmansuffix__),
+XMapWindow(__libmansuffix__),
+XRaiseWindow(__libmansuffix__),
+XUnmapWindow(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCirculateEvent.man b/libX11/man/XCirculateEvent.man
index 304f34ec9..cf505a8fe 100644
--- a/libX11/man/XCirculateEvent.man
+++ b/libX11/man/XCirculateEvent.man
@@ -1,231 +1,231 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCirculateEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCirculateEvent \- CirculateNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN CirculateNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 event member is set either to the restacked window or to its parent,
-depending on whether
-.ZN StructureNotify
-or
-.ZN 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
-.ZN PlaceOnTop
-or
-.ZN PlaceOnBottom .
-If it is
-.ZN PlaceOnTop ,
-the window is now on top of all siblings.
-If it is
-.ZN PlaceOnBottom ,
-the window is now below all siblings.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCirculateEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCirculateEvent \- CirculateNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN CirculateNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 event member is set either to the restacked window or to its parent,
+depending on whether
+.ZN StructureNotify
+or
+.ZN 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
+.ZN PlaceOnTop
+or
+.ZN PlaceOnBottom .
+If it is
+.ZN PlaceOnTop ,
+the window is now on top of all siblings.
+If it is
+.ZN PlaceOnBottom ,
+the window is now below all siblings.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCirculateRequestEvent.man b/libX11/man/XCirculateRequestEvent.man
index 8a7afdb25..88f589442 100644
--- a/libX11/man/XCirculateRequestEvent.man
+++ b/libX11/man/XCirculateRequestEvent.man
@@ -1,226 +1,226 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCirculateRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCirculateRequestEvent \- CirculateRequest event structure
-.SH STRUCTURES
-The structure for
-.ZN CirculateRequest
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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
-.ZN PlaceOnTop
-or
-.ZN PlaceOnBottom .
-If it is
-.ZN PlaceOnTop ,
-the subwindow should be on top of all siblings.
-If it is
-.ZN PlaceOnBottom ,
-the subwindow should be below all siblings.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCirculateRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCirculateRequestEvent \- CirculateRequest event structure
+.SH STRUCTURES
+The structure for
+.ZN CirculateRequest
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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
+.ZN PlaceOnTop
+or
+.ZN PlaceOnBottom .
+If it is
+.ZN PlaceOnTop ,
+the subwindow should be on top of all siblings.
+If it is
+.ZN PlaceOnBottom ,
+the subwindow should be below all siblings.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XClearArea.man b/libX11/man/XClearArea.man
index 3bdb86ee1..cff354090 100644
--- a/libX11/man/XClearArea.man
+++ b/libX11/man/XClearArea.man
@@ -1,257 +1,257 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XClearArea __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XClearArea, XClearWindow \- clear area or window
-.SH SYNTAX
-.HP
-int XClearArea\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIx\fP\^,
-int \fIy\fP\^, unsigned \fIwidth\fP\^, unsigned \fIheight\fP\^,
-Bool \fIexposures\fP\^);
-.HP
-int XClearWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIexposures\fP 1i
-Specifies a Boolean value that indicates if
-.ZN Expose
-events are to be generated.
-.IP \fIw\fP 1i
-Specifies the window.
-.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.
-.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.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN 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
-.ZN None ,
-the contents of the window are not changed.
-In either
-case, if exposures is
-.ZN True ,
-one or more
-.ZN 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
-.ZN InputOnly ,
-a
-.ZN BadMatch
-error results.
-.LP
-.ZN XClearArea
-can generate
-.ZN BadMatch ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XClearWindow
-function clears the entire area in the specified window and is
-equivalent to
-.ZN XClearArea
-(display, w, 0, 0, 0, 0,
-.ZN False ).
-If the window has a defined background tile, the rectangle is tiled with a
-plane-mask of all ones and
-.ZN GXcopy
-function.
-If the window has
-background
-.ZN None ,
-the contents of the window are not changed.
-If you specify a window whose class is
-.ZN InputOnly ,
-a
-.ZN BadMatch
-error results.
-.LP
-.ZN XClearWindow
-can generate
-.ZN BadMatch
-and
-.ZN BadWindow
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XCopyArea(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XClearArea __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XClearArea, XClearWindow \- clear area or window
+.SH SYNTAX
+.HP
+int XClearArea\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIx\fP\^,
+int \fIy\fP\^, unsigned \fIwidth\fP\^, unsigned \fIheight\fP\^,
+Bool \fIexposures\fP\^);
+.HP
+int XClearWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIexposures\fP 1i
+Specifies a Boolean value that indicates if
+.ZN Expose
+events are to be generated.
+.IP \fIw\fP 1i
+Specifies the window.
+.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.
+.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.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN 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
+.ZN None ,
+the contents of the window are not changed.
+In either
+case, if exposures is
+.ZN True ,
+one or more
+.ZN 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
+.ZN InputOnly ,
+a
+.ZN BadMatch
+error results.
+.LP
+.ZN XClearArea
+can generate
+.ZN BadMatch ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XClearWindow
+function clears the entire area in the specified window and is
+equivalent to
+.ZN XClearArea
+(display, w, 0, 0, 0, 0,
+.ZN False ).
+If the window has a defined background tile, the rectangle is tiled with a
+plane-mask of all ones and
+.ZN GXcopy
+function.
+If the window has
+background
+.ZN None ,
+the contents of the window are not changed.
+If you specify a window whose class is
+.ZN InputOnly ,
+a
+.ZN BadMatch
+error results.
+.LP
+.ZN XClearWindow
+can generate
+.ZN BadMatch
+and
+.ZN BadWindow
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XCopyArea(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XClientMessageEvent.man b/libX11/man/XClientMessageEvent.man
index f8239a89d..541a1a634 100644
--- a/libX11/man/XClientMessageEvent.man
+++ b/libX11/man/XClientMessageEvent.man
@@ -1,229 +1,229 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XClientMessageEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XClientMessageEvent \- ClientMessage event structure
-.SH STRUCTURES
-The structure for
-.ZN ClientMessage
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XClientMessageEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XClientMessageEvent \- ClientMessage event structure
+.SH STRUCTURES
+The structure for
+.ZN ClientMessage
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XColormapEvent.man b/libX11/man/XColormapEvent.man
index 02f89d625..336009ec2 100644
--- a/libX11/man/XColormapEvent.man
+++ b/libX11/man/XColormapEvent.man
@@ -1,240 +1,240 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XColormapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XColormapEvent \- ColormapNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN ColormapNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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
-.ZN XFreeColormap ,
-the colormap member is set to
-.ZN None .
-The new member is set to indicate whether the colormap
-for the specified window was changed or installed or uninstalled
-and can be
-.ZN True
-or
-.ZN False .
-If it is
-.ZN True ,
-the colormap was changed.
-If it is
-.ZN 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
-.ZN ColormapInstalled
-or
-.ZN ColormapUninstalled .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCreateColormap(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XColormapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XColormapEvent \- ColormapNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN ColormapNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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
+.ZN XFreeColormap ,
+the colormap member is set to
+.ZN None .
+The new member is set to indicate whether the colormap
+for the specified window was changed or installed or uninstalled
+and can be
+.ZN True
+or
+.ZN False .
+If it is
+.ZN True ,
+the colormap was changed.
+If it is
+.ZN 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
+.ZN ColormapInstalled
+or
+.ZN ColormapUninstalled .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCreateColormap(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XConfigureEvent.man b/libX11/man/XConfigureEvent.man
index 589e939ca..8e2cbafa8 100644
--- a/libX11/man/XConfigureEvent.man
+++ b/libX11/man/XConfigureEvent.man
@@ -1,249 +1,249 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XConfigureEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XConfigureEvent \- ConfigureNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN ConfigureNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 event member is set either to the reconfigured window or to its parent,
-depending on whether
-.ZN StructureNotify
-or
-.ZN 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
-.ZN 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
-.ZN True .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XConfigureEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XConfigureEvent \- ConfigureNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN ConfigureNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 event member is set either to the reconfigured window or to its parent,
+depending on whether
+.ZN StructureNotify
+or
+.ZN 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
+.ZN 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
+.ZN True .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XConfigureRequestEvent.man b/libX11/man/XConfigureRequestEvent.man
index fc5a836fa..54a7ca0df 100644
--- a/libX11/man/XConfigureRequestEvent.man
+++ b/libX11/man/XConfigureRequestEvent.man
@@ -1,232 +1,232 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XConfigureRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XConfigureRequestEvent \- ConfigureRequest event structure
-.SH STRUCTURES
-The structure for
-.ZN ConfigureRequest
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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
-.ZN 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
-.ZN None
-and
-.ZN Above ,
-respectively, if they are not given in the request.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XConfigureRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XConfigureRequestEvent \- ConfigureRequest event structure
+.SH STRUCTURES
+The structure for
+.ZN ConfigureRequest
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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
+.ZN 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
+.ZN None
+and
+.ZN Above ,
+respectively, if they are not given in the request.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XConfigureWindow.man b/libX11/man/XConfigureWindow.man
index e91dd02a6..cb72c7fd8 100644
--- a/libX11/man/XConfigureWindow.man
+++ b/libX11/man/XConfigureWindow.man
@@ -1,457 +1,457 @@
-'\" t
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XConfigureWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XConfigureWindow, XMoveWindow, XResizeWindow, XMoveResizeWindow, XSetWindowBorderWidth, XWindowChanges \- configure windows and window changes structure
-.SH SYNTAX
-.HP
-int XConfigureWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned \fIvalue_mask\fP\^, \^XWindowChanges *\fIchanges\fP\^);
-.HP
-int XMoveWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIx\fP\^, \fIy\fP\^);
-.HP
-int XResizeWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned
-\fIwidth\fP\^, unsigned \fIheight\fP\^);
-.HP
-int XMoveResizeWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int
-\fIx\fP\^, int \fIy\fP\^, unsigned \fIwidth\fP\^, unsigned \fIheight\fP\^);
-.HP
-int XSetWindowBorderWidth\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-unsigned \fIwidth\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X 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
-.ZN XWindowChanges
-structure.
-.ds Wi to be reconfigured, moved, or resized.
-.IP \fIw\fP 1i
-Specifies the window \*(Wi.
-.IP \fIwidth\fP 1i
-Specifies the width of the window border.
-.ds Wh , which are the interior dimensions of the window
-.IP \fIwidth\fP 1i
-.br
-.ns
-.IP \fIheight\fP 1i
-Specify the width and height\*(Wh.
-.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 \
-or 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.
-.SH DESCRIPTION
-The
-.ZN XConfigureWindow
-function uses the values specified in the
-.ZN 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
-.ZN BadMatch
-error results.
-Note that the computations for
-.ZN BottomIf ,
-.ZN TopIf ,
-and
-.ZN Opposite
-are performed with respect to the window's final geometry (as controlled by the
-other arguments passed to
-.ZN 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
-.ZN XConfigureWindow
-can generate
-.ZN BadMatch ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN Expose
-events.
-Moving a mapped window generates
-.ZN Expose
-events on any formerly obscured windows.
-.LP
-If the override-redirect flag of the window is
-.ZN False
-and some
-other client has selected
-.ZN SubstructureRedirectMask
-on the parent, the X server generates a
-.ZN ConfigureRequest
-event, and no further processing is
-performed.
-Otherwise, the window is moved.
-.LP
-.ZN XMoveWindow
-can generate a
-.ZN BadWindow
-error.
-.LP
-The
-.ZN 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
-.ZN Expose
-events.
-If a mapped window is made smaller,
-changing its size generates
-.ZN Expose
-events on windows that the mapped window formerly obscured.
-.LP
-If the override-redirect flag of the window is
-.ZN False
-and some
-other client has selected
-.ZN SubstructureRedirectMask
-on the parent, the X server generates a
-.ZN ConfigureRequest
-event, and no further processing is performed.
-If either width or height is zero,
-a
-.ZN BadValue
-error results.
-.LP
-.ZN XResizeWindow
-can generate
-.ZN BadValue
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XMoveResizeWindow
-function changes the size and location of the specified window
-without raising it.
-Moving and resizing a mapped window may generate an
-.ZN Expose
-event on the window.
-Depending on the new size and location parameters,
-moving and resizing a window may generate
-.ZN Expose
-events on windows that the window formerly obscured.
-.LP
-If the override-redirect flag of the window is
-.ZN False
-and some
-other client has selected
-.ZN SubstructureRedirectMask
-on the parent, the X server generates a
-.ZN ConfigureRequest
-event, and no further processing is performed.
-Otherwise, the window size and location are changed.
-.LP
-.ZN XMoveResizeWindow
-can generate
-.ZN BadValue
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XSetWindowBorderWidth
-function sets the specified window's border width to the specified width.
-.LP
-.ZN XSetWindowBorderWidth
-can generate a
-.ZN BadWindow
-error.
-.SH STRUCTURES
-The
-.ZN XWindowChanges
-structure contains:
-.LP
-.LP
-/\&* Configure window value mask bits */
-.TS
-lw(.5i) lw(2.5i) lw(.8i).
-T{
-\&#define
-T} T{
-.ZN CWX
-T} T{
-(1<<0)
-T}
-T{
-\&#define
-T} T{
-.ZN CWY
-T} T{
-(1<<1)
-T}
-T{
-\&#define
-T} T{
-.ZN CWWidth
-T} T{
-(1<<2)
-T}
-T{
-\&#define
-T} T{
-.ZN CWHeight
-T} T{
-(1<<3)
-T}
-T{
-\&#define
-T} T{
-.ZN CWBorderWidth
-T} T{
-(1<<4)
-T}
-T{
-\&#define
-T} T{
-.ZN CWSibling
-T} T{
-(1<<5)
-T}
-T{
-\&#define
-T} T{
-.ZN 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
-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
-.ZN 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
-.ZN InputOnly
-window nonzero, a
-.ZN 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
-.ZN Above ,
-.ZN Below ,
-.ZN TopIf ,
-.ZN BottomIf ,
-or
-.ZN Opposite .
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XChangeWindowAttributes(__libmansuffix__),
-XCreateWindow(__libmansuffix__),
-XDestroyWindow(__libmansuffix__),
-XMapWindow(__libmansuffix__),
-XRaiseWindow(__libmansuffix__),
-XUnmapWindow(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" t
+.TH XConfigureWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XConfigureWindow, XMoveWindow, XResizeWindow, XMoveResizeWindow, XSetWindowBorderWidth, XWindowChanges \- configure windows and window changes structure
+.SH SYNTAX
+.HP
+int XConfigureWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned \fIvalue_mask\fP\^, \^XWindowChanges *\fIchanges\fP\^);
+.HP
+int XMoveWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int \fIx\fP\^, \fIy\fP\^);
+.HP
+int XResizeWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, unsigned
+\fIwidth\fP\^, unsigned \fIheight\fP\^);
+.HP
+int XMoveResizeWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int
+\fIx\fP\^, int \fIy\fP\^, unsigned \fIwidth\fP\^, unsigned \fIheight\fP\^);
+.HP
+int XSetWindowBorderWidth\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+unsigned \fIwidth\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X 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
+.ZN XWindowChanges
+structure.
+.ds Wi to be reconfigured, moved, or resized.
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIwidth\fP 1i
+Specifies the width of the window border.
+.ds Wh , which are the interior dimensions of the window
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.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 \
+or 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.
+.SH DESCRIPTION
+The
+.ZN XConfigureWindow
+function uses the values specified in the
+.ZN 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
+.ZN BadMatch
+error results.
+Note that the computations for
+.ZN BottomIf ,
+.ZN TopIf ,
+and
+.ZN Opposite
+are performed with respect to the window's final geometry (as controlled by the
+other arguments passed to
+.ZN 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
+.ZN XConfigureWindow
+can generate
+.ZN BadMatch ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN Expose
+events.
+Moving a mapped window generates
+.ZN Expose
+events on any formerly obscured windows.
+.LP
+If the override-redirect flag of the window is
+.ZN False
+and some
+other client has selected
+.ZN SubstructureRedirectMask
+on the parent, the X server generates a
+.ZN ConfigureRequest
+event, and no further processing is
+performed.
+Otherwise, the window is moved.
+.LP
+.ZN XMoveWindow
+can generate a
+.ZN BadWindow
+error.
+.LP
+The
+.ZN 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
+.ZN Expose
+events.
+If a mapped window is made smaller,
+changing its size generates
+.ZN Expose
+events on windows that the mapped window formerly obscured.
+.LP
+If the override-redirect flag of the window is
+.ZN False
+and some
+other client has selected
+.ZN SubstructureRedirectMask
+on the parent, the X server generates a
+.ZN ConfigureRequest
+event, and no further processing is performed.
+If either width or height is zero,
+a
+.ZN BadValue
+error results.
+.LP
+.ZN XResizeWindow
+can generate
+.ZN BadValue
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XMoveResizeWindow
+function changes the size and location of the specified window
+without raising it.
+Moving and resizing a mapped window may generate an
+.ZN Expose
+event on the window.
+Depending on the new size and location parameters,
+moving and resizing a window may generate
+.ZN Expose
+events on windows that the window formerly obscured.
+.LP
+If the override-redirect flag of the window is
+.ZN False
+and some
+other client has selected
+.ZN SubstructureRedirectMask
+on the parent, the X server generates a
+.ZN ConfigureRequest
+event, and no further processing is performed.
+Otherwise, the window size and location are changed.
+.LP
+.ZN XMoveResizeWindow
+can generate
+.ZN BadValue
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XSetWindowBorderWidth
+function sets the specified window's border width to the specified width.
+.LP
+.ZN XSetWindowBorderWidth
+can generate a
+.ZN BadWindow
+error.
+.SH STRUCTURES
+The
+.ZN XWindowChanges
+structure contains:
+.LP
+.LP
+/\&* Configure window value mask bits */
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+\&#define
+T} T{
+.ZN CWX
+T} T{
+(1<<0)
+T}
+T{
+\&#define
+T} T{
+.ZN CWY
+T} T{
+(1<<1)
+T}
+T{
+\&#define
+T} T{
+.ZN CWWidth
+T} T{
+(1<<2)
+T}
+T{
+\&#define
+T} T{
+.ZN CWHeight
+T} T{
+(1<<3)
+T}
+T{
+\&#define
+T} T{
+.ZN CWBorderWidth
+T} T{
+(1<<4)
+T}
+T{
+\&#define
+T} T{
+.ZN CWSibling
+T} T{
+(1<<5)
+T}
+T{
+\&#define
+T} T{
+.ZN 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
+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
+.ZN 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
+.ZN InputOnly
+window nonzero, a
+.ZN 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
+.ZN Above ,
+.ZN Below ,
+.ZN TopIf ,
+.ZN BottomIf ,
+or
+.ZN Opposite .
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XChangeWindowAttributes(__libmansuffix__),
+XCreateWindow(__libmansuffix__),
+XDestroyWindow(__libmansuffix__),
+XMapWindow(__libmansuffix__),
+XRaiseWindow(__libmansuffix__),
+XUnmapWindow(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCopyArea.man b/libX11/man/XCopyArea.man
index 503cddde8..69bf5e630 100644
--- a/libX11/man/XCopyArea.man
+++ b/libX11/man/XCopyArea.man
@@ -1,307 +1,307 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCopyArea __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCopyArea, XCopyPlane \- copy areas
-.SH SYNTAX
-.HP
-int XCopyArea\^(\^Display *\fIdisplay\fP\^, Drawable \fIsrc\fP\^, Drawable
-\fIdest\fP\^, GC \fIgc\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, unsigned
-int \fIwidth\fP\^, unsigned \fIheight\fP\^, int \fIdest_x\fP\^, int
-\fIdest_y\fP\^);
-.HP
-int XCopyPlane\^(\^Display *\fIdisplay\fP\^, Drawable \fIsrc\fP\^, Drawable
-\fIdest\fP\^, GC \fIgc\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, unsigned
-\fIwidth\fP\^, int \fIheight\fP\^, int \fIdest_x\fP\^, int \fIdest_y\fP\^,
-unsigned long \fIplane\fP\^);
-.SH ARGUMENTS
-.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 \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIplane\fP 1i
-Specifies the bit plane.
-You must set exactly one bit to 1.
-.IP \fIsrc\fP 1i
-.br
-.ns
-.IP \fIdest\fP 1i
-Specify the source and destination rectangles to be combined.
-.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.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN 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
-.ZN None ,
-corresponding regions
-of the destination are tiled with that background
-(with plane-mask of all ones and
-.ZN GXcopy
-function).
-Regardless of tiling or whether the destination is a window or a pixmap,
-if graphics-exposures is
-.ZN True ,
-then
-.ZN GraphicsExpose
-events for all corresponding destination regions are generated.
-If graphics-exposures is
-.ZN True
-but no
-.ZN GraphicsExpose
-events are generated, a
-.ZN NoExpose
-event is generated.
-Note that by default graphics-exposures is
-.ZN 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
-.ZN XCopyArea
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.LP
-The
-.ZN 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
-.ZN 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
-.ZN BadValue
-error results.
-.LP
-Effectively,
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN XCopyPlane
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-.ZN BadMatch ,
-and
-.ZN BadValue
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XClearArea(__libmansuffix__)
-.br
-\fIXlib \- C Language X Interface\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCopyArea __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCopyArea, XCopyPlane \- copy areas
+.SH SYNTAX
+.HP
+int XCopyArea\^(\^Display *\fIdisplay\fP\^, Drawable \fIsrc\fP\^, Drawable
+\fIdest\fP\^, GC \fIgc\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, unsigned
+int \fIwidth\fP\^, unsigned \fIheight\fP\^, int \fIdest_x\fP\^, int
+\fIdest_y\fP\^);
+.HP
+int XCopyPlane\^(\^Display *\fIdisplay\fP\^, Drawable \fIsrc\fP\^, Drawable
+\fIdest\fP\^, GC \fIgc\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, unsigned
+\fIwidth\fP\^, int \fIheight\fP\^, int \fIdest_x\fP\^, int \fIdest_y\fP\^,
+unsigned long \fIplane\fP\^);
+.SH ARGUMENTS
+.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 \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIplane\fP 1i
+Specifies the bit plane.
+You must set exactly one bit to 1.
+.IP \fIsrc\fP 1i
+.br
+.ns
+.IP \fIdest\fP 1i
+Specify the source and destination rectangles to be combined.
+.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.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN 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
+.ZN None ,
+corresponding regions
+of the destination are tiled with that background
+(with plane-mask of all ones and
+.ZN GXcopy
+function).
+Regardless of tiling or whether the destination is a window or a pixmap,
+if graphics-exposures is
+.ZN True ,
+then
+.ZN GraphicsExpose
+events for all corresponding destination regions are generated.
+If graphics-exposures is
+.ZN True
+but no
+.ZN GraphicsExpose
+events are generated, a
+.ZN NoExpose
+event is generated.
+Note that by default graphics-exposures is
+.ZN 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
+.ZN XCopyArea
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.LP
+The
+.ZN 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
+.ZN 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
+.ZN BadValue
+error results.
+.LP
+Effectively,
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN XCopyPlane
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+.ZN BadMatch ,
+and
+.ZN BadValue
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XClearArea(__libmansuffix__)
+.br
+\fIXlib \- C Language X Interface\fP
diff --git a/libX11/man/XCreateColormap.man b/libX11/man/XCreateColormap.man
index 0a5173902..3294d3062 100644
--- a/libX11/man/XCreateColormap.man
+++ b/libX11/man/XCreateColormap.man
@@ -1,367 +1,367 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCreateColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCreateColormap, XCopyColormapAndFree, XFreeColormap, XColor \- create, copy, or destroy colormaps and color structure
-.SH SYNTAX
-.HP
-Colormap XCreateColormap\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-Visual *\fIvisual\fP\^, int \fIalloc\fP\^);
-.HP
-Colormap XCopyColormapAndFree\^(\^Display *\fIdisplay\fP\^, Colormap
-\fIcolormap\fP\^);
-.HP
-int XFreeColormap\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^);
-.SH ARGUMENTS
-.IP \fIalloc\fP 1i
-Specifies the colormap entries to be allocated.
-You can pass
-.ZN AllocNone
-or
-.ZN AllocAll .
-.ds Cm that you want to create, copy, set, or destroy
-.IP \fIcolormap\fP 1i
-Specifies the colormap \*(Cm.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIvisual\fP 1i
-Specifies a visual type supported on the screen.
-If the visual type is not one supported by the screen,
-a
-.ZN BadMatch
-error results.
-.ds Wi on whose screen you want to create a colormap
-.IP \fIw\fP 1i
-Specifies the window \*(Wi.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN GrayScale ,
-.ZN PseudoColor ,
-and
-.ZN DirectColor .
-For
-.ZN StaticGray ,
-.ZN StaticColor ,
-and
-.ZN TrueColor ,
-the entries have defined values,
-but those values are specific to the visual and are not defined by X.
-For
-.ZN StaticGray ,
-.ZN StaticColor ,
-and
-.ZN TrueColor ,
-alloc must be
-.ZN AllocNone ,
-or a
-.ZN BadMatch
-error results.
-For the other visual classes,
-if alloc is
-.ZN 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
-.ZN AllocAll ,
-the entire colormap is allocated writable.
-The initial values of all allocated entries are undefined.
-For
-.ZN GrayScale
-and
-.ZN PseudoColor ,
-the effect is as if an
-.ZN XAllocColorCells
-call returned all pixel values from zero to N \- 1,
-where N is the colormap entries value in the specified visual.
-For
-.ZN DirectColor ,
-the effect is as if an
-.ZN 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
-.ZN XFreeColors .
-.LP
-.ZN XCreateColormap
-can generate
-.ZN BadAlloc ,
-.ZN BadMatch ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN AllocAll ,
-the new colormap is also created with
-.ZN 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
-.ZN AllocAll ,
-the allocations to be moved are all those pixels and planes
-that have been allocated by the client using
-.ZN XAllocColor ,
-.ZN XAllocNamedColor ,
-.ZN XAllocColorCells ,
-or
-.ZN XAllocColorPlanes
-and that have not been freed since they were allocated.
-.LP
-.ZN XCopyColormapAndFree
-can generate
-.ZN BadAlloc
-and
-.ZN BadColor
-errors.
-.LP
-The
-.ZN 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
-.ZN XUninstallColormap ).
-If the specified colormap is defined as the colormap for a window (by
-.ZN XCreateWindow ,
-.ZN XSetWindowColormap ,
-or
-.ZN XChangeWindowAttributes ),
-.ZN XFreeColormap
-changes the colormap associated with the window to
-.ZN None
-and generates a
-.ZN ColormapNotify
-event.
-X does not define the colors displayed for a window with a colormap of
-.ZN None .
-.LP
-.ZN XFreeColormap
-can generate a
-.ZN BadColor
-error.
-.SH STRUCTURES
-The
-.ZN XColor
-structure contains:
-.LP
-.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
-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
-.ZN DoRed ,
-.ZN DoGreen ,
-and
-.ZN DoBlue .
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocColor(__libmansuffix__),
-XChangeWindowAttributes(__libmansuffix__),
-XCreateWindow(__libmansuffix__),
-XQueryColor(__libmansuffix__),
-XStoreColors(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCreateColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCreateColormap, XCopyColormapAndFree, XFreeColormap, XColor \- create, copy, or destroy colormaps and color structure
+.SH SYNTAX
+.HP
+Colormap XCreateColormap\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+Visual *\fIvisual\fP\^, int \fIalloc\fP\^);
+.HP
+Colormap XCopyColormapAndFree\^(\^Display *\fIdisplay\fP\^, Colormap
+\fIcolormap\fP\^);
+.HP
+int XFreeColormap\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^);
+.SH ARGUMENTS
+.IP \fIalloc\fP 1i
+Specifies the colormap entries to be allocated.
+You can pass
+.ZN AllocNone
+or
+.ZN AllocAll .
+.ds Cm that you want to create, copy, set, or destroy
+.IP \fIcolormap\fP 1i
+Specifies the colormap \*(Cm.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIvisual\fP 1i
+Specifies a visual type supported on the screen.
+If the visual type is not one supported by the screen,
+a
+.ZN BadMatch
+error results.
+.ds Wi on whose screen you want to create a colormap
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN GrayScale ,
+.ZN PseudoColor ,
+and
+.ZN DirectColor .
+For
+.ZN StaticGray ,
+.ZN StaticColor ,
+and
+.ZN TrueColor ,
+the entries have defined values,
+but those values are specific to the visual and are not defined by X.
+For
+.ZN StaticGray ,
+.ZN StaticColor ,
+and
+.ZN TrueColor ,
+alloc must be
+.ZN AllocNone ,
+or a
+.ZN BadMatch
+error results.
+For the other visual classes,
+if alloc is
+.ZN 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
+.ZN AllocAll ,
+the entire colormap is allocated writable.
+The initial values of all allocated entries are undefined.
+For
+.ZN GrayScale
+and
+.ZN PseudoColor ,
+the effect is as if an
+.ZN XAllocColorCells
+call returned all pixel values from zero to N \- 1,
+where N is the colormap entries value in the specified visual.
+For
+.ZN DirectColor ,
+the effect is as if an
+.ZN 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
+.ZN XFreeColors .
+.LP
+.ZN XCreateColormap
+can generate
+.ZN BadAlloc ,
+.ZN BadMatch ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN AllocAll ,
+the new colormap is also created with
+.ZN 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
+.ZN AllocAll ,
+the allocations to be moved are all those pixels and planes
+that have been allocated by the client using
+.ZN XAllocColor ,
+.ZN XAllocNamedColor ,
+.ZN XAllocColorCells ,
+or
+.ZN XAllocColorPlanes
+and that have not been freed since they were allocated.
+.LP
+.ZN XCopyColormapAndFree
+can generate
+.ZN BadAlloc
+and
+.ZN BadColor
+errors.
+.LP
+The
+.ZN 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
+.ZN XUninstallColormap ).
+If the specified colormap is defined as the colormap for a window (by
+.ZN XCreateWindow ,
+.ZN XSetWindowColormap ,
+or
+.ZN XChangeWindowAttributes ),
+.ZN XFreeColormap
+changes the colormap associated with the window to
+.ZN None
+and generates a
+.ZN ColormapNotify
+event.
+X does not define the colors displayed for a window with a colormap of
+.ZN None .
+.LP
+.ZN XFreeColormap
+can generate a
+.ZN BadColor
+error.
+.SH STRUCTURES
+The
+.ZN XColor
+structure contains:
+.LP
+.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
+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
+.ZN DoRed ,
+.ZN DoGreen ,
+and
+.ZN DoBlue .
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocColor(__libmansuffix__),
+XChangeWindowAttributes(__libmansuffix__),
+XCreateWindow(__libmansuffix__),
+XQueryColor(__libmansuffix__),
+XStoreColors(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCreateFontCursor.man b/libX11/man/XCreateFontCursor.man
index ba8431e7e..bcd8286a6 100644
--- a/libX11/man/XCreateFontCursor.man
+++ b/libX11/man/XCreateFontCursor.man
@@ -1,316 +1,316 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCreateFontCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCreateFontCursor, XCreatePixmapCursor, XCreateGlyphCursor \- create cursors
-.SH SYNTAX
-\&#include <X11/cursorfont.h>
-.HP
-Cursor XCreateFontCursor\^(\^Display *\fIdisplay\fP\^, unsigned int
-\fIshape\fP\^);
-.HP
-Cursor XCreatePixmapCursor\^(\^Display *\fIdisplay\fP\^, Pixmap
-\fIsource\fP\^, Pixmap \fImask\fP\^, XColor *\fIforeground_color\fP\^, XColor
-*\fIbackground_color\fP\^, unsigned int \fIx\fP\^, unsigned int \fIy\fP\^);
-.HP
-Cursor XCreateGlyphCursor\^(\^Display *\fIdisplay\fP\^, Font
-\fIsource_font\fP\^, Font \fImask_font\fP\^, unsigned int \fIsource_char\fP\^,
-unsigned int \fImask_char\fP\^, XColor *\fIforeground_color\fP\^, XColor
-*\fIbackground_color\fP\^);
-.SH ARGUMENTS
-.IP \fIbackground_color\fP 1i
-Specifies the RGB values for the background of the source.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIforeground_color\fP 1i
-Specifies the RGB values for the foreground of the source.
-.IP \fImask\fP 1i
-Specifies the cursor's source bits to be displayed or
-.ZN None .
-.IP \fImask_char\fP 1i
-Specifies the glyph character for the mask.
-.IP \fImask_font\fP 1i
-Specifies the font for the mask glyph or
-.ZN None .
-.IP \fIshape\fP 1i
-Specifies the shape of the cursor.
-.IP \fIsource\fP 1i
-Specifies the shape of the source cursor.
-.\" *** JIM: NEED TO CHECK THIS. ***
-.IP \fIsource_char\fP 1i
-Specifies the character glyph for the source.
-.IP \fIsource_font\fP 1i
-Specifies the font for the source glyph.
-.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.
-.SH DESCRIPTION
-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
-.ZN XRecolorCursor ).
-.LP
-.ZN XCreateFontCursor
-can generate
-.ZN BadAlloc
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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
-.ZN StaticGray
-or
-.ZN 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
-.ZN 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
-.ZN BadMatch
-error results.
-The hotspot must be a point within the source,
-or a
-.ZN 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
-.ZN XCreatePixmapCursor
-can generate
-.ZN BadAlloc
-and
-.ZN BadPixmap
-errors.
-.LP
-The
-.ZN XCreateGlyphCursor
-function is similar to
-.ZN 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
-.ZN BadValue
-error results.
-If mask_font is given,
-mask_char must be a defined glyph in mask_font,
-or a
-.ZN 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
-.ZN 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
-.ZN XCreateGlyphCursor
-can generate
-.ZN BadAlloc ,
-.ZN BadFont ,
-and
-.ZN BadValue
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadFont
-A value for a Font or GContext argument does not name a defined Font.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadPixmap
-A value for a Pixmap argument does not name a defined Pixmap.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XDefineCursor(__libmansuffix__),
-XLoadFont(__libmansuffix__),
-XRecolorCursor(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCreateFontCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCreateFontCursor, XCreatePixmapCursor, XCreateGlyphCursor \- create cursors
+.SH SYNTAX
+\&#include <X11/cursorfont.h>
+.HP
+Cursor XCreateFontCursor\^(\^Display *\fIdisplay\fP\^, unsigned int
+\fIshape\fP\^);
+.HP
+Cursor XCreatePixmapCursor\^(\^Display *\fIdisplay\fP\^, Pixmap
+\fIsource\fP\^, Pixmap \fImask\fP\^, XColor *\fIforeground_color\fP\^, XColor
+*\fIbackground_color\fP\^, unsigned int \fIx\fP\^, unsigned int \fIy\fP\^);
+.HP
+Cursor XCreateGlyphCursor\^(\^Display *\fIdisplay\fP\^, Font
+\fIsource_font\fP\^, Font \fImask_font\fP\^, unsigned int \fIsource_char\fP\^,
+unsigned int \fImask_char\fP\^, XColor *\fIforeground_color\fP\^, XColor
+*\fIbackground_color\fP\^);
+.SH ARGUMENTS
+.IP \fIbackground_color\fP 1i
+Specifies the RGB values for the background of the source.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIforeground_color\fP 1i
+Specifies the RGB values for the foreground of the source.
+.IP \fImask\fP 1i
+Specifies the cursor's source bits to be displayed or
+.ZN None .
+.IP \fImask_char\fP 1i
+Specifies the glyph character for the mask.
+.IP \fImask_font\fP 1i
+Specifies the font for the mask glyph or
+.ZN None .
+.IP \fIshape\fP 1i
+Specifies the shape of the cursor.
+.IP \fIsource\fP 1i
+Specifies the shape of the source cursor.
+.\" *** JIM: NEED TO CHECK THIS. ***
+.IP \fIsource_char\fP 1i
+Specifies the character glyph for the source.
+.IP \fIsource_font\fP 1i
+Specifies the font for the source glyph.
+.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.
+.SH DESCRIPTION
+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
+.ZN XRecolorCursor ).
+.LP
+.ZN XCreateFontCursor
+can generate
+.ZN BadAlloc
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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
+.ZN StaticGray
+or
+.ZN 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
+.ZN 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
+.ZN BadMatch
+error results.
+The hotspot must be a point within the source,
+or a
+.ZN 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
+.ZN XCreatePixmapCursor
+can generate
+.ZN BadAlloc
+and
+.ZN BadPixmap
+errors.
+.LP
+The
+.ZN XCreateGlyphCursor
+function is similar to
+.ZN 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
+.ZN BadValue
+error results.
+If mask_font is given,
+mask_char must be a defined glyph in mask_font,
+or a
+.ZN 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
+.ZN 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
+.ZN XCreateGlyphCursor
+can generate
+.ZN BadAlloc ,
+.ZN BadFont ,
+and
+.ZN BadValue
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadFont
+A value for a Font or GContext argument does not name a defined Font.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadPixmap
+A value for a Pixmap argument does not name a defined Pixmap.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XDefineCursor(__libmansuffix__),
+XLoadFont(__libmansuffix__),
+XRecolorCursor(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCreateFontSet.man b/libX11/man/XCreateFontSet.man
index 7e442d9cd..c2882186c 100644
--- a/libX11/man/XCreateFontSet.man
+++ b/libX11/man/XCreateFontSet.man
@@ -1,375 +1,375 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCreateFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCreateFontSet, XFreeFontSet \- create and free an international text drawing font set
-.SH SYNTAX
-.HP
-XFontSet XCreateFontSet\^(\^Display *\fIdisplay\fP\^, char
-*\fIbase_font_name_list\fP\^, char ***\fImissing_charset_list_return\fP\^, int
-*\fImissing_charset_count_return\fP\^, char **\fIdef_string_return\fP\^);
-.HP
-void XFreeFontSet\^(\^Display *\fIdisplay\fP\^, XFontSet \fIfont_set\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIbase_font_name_list\fP 1i
-Specifies the base font names.
-.IP \fIdef_string_return\fP 1i
-Returns the string drawn for missing charsets.
-.IP \fIfont_set\fP 1i
-Specifies the font set.
-.IP \fImissing_charset_count_return\fP 1i
-Returns the number of missing charsets.
-.IP \fImissing_charset_list_return\fP 1i
-Returns the missing charsets.
-.SH DESCRIPTION
-The
-.ZN XCreateFontSet
-function creates a font set for the specified display.
-The font set is bound to the current locale when
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN CharSetRegistry
-and
-.ZN 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
-.ZN CharSetRegistry
-and
-.ZN 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
-.ZN XCreateFontSet
-is unable to create the font set,
-either because there is insufficient memory or because the current locale
-is not supported,
-.ZN 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,
-.ZN XCreateFontSet
-returns a valid
-.ZN 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,
-.ZN 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,
-.ZN XCreateFontSet
-returns NULL.
-Otherwise,
-.ZN XCreateFontSet
-returns a valid
-.ZN XFontSet
-to font_set.
-.LP
-When an Xmb/wc drawing or measuring function is called with an
-.ZN XFontSet
-that has missing charsets, some characters in the locale will not be
-drawable.
-If def_string_return is non-NULL,
-.ZN XCreateFontSet
-returns a pointer to a string that represents the glyphs
-that are drawn with this
-.ZN 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
-.ZN 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
-.ZN XFreeFontSet
-with the associated
-.ZN 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
-.ZN XFontSet
-and missing charset list should be freed with
-.ZN XFreeFontSet
-and
-.ZN XFreeStringList ,
-respectively.
-The client-supplied base_font_name_list may be freed
-by the client after calling
-.ZN XCreateFontSet .
-.LP
-The
-.ZN XFreeFontSet
-function frees the specified font set.
-The associated base font name list, font name list,
-.ZN XFontStruct
-list, and
-.ZN XFontSetExtents ,
-if any, are freed.
-.SH "SEE ALSO"
-XExtentsofFontSet(__libmansuffix__),
-XFontsOfFontSet(__libmansuffix__),
-XFontSetExtents(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCreateFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCreateFontSet, XFreeFontSet \- create and free an international text drawing font set
+.SH SYNTAX
+.HP
+XFontSet XCreateFontSet\^(\^Display *\fIdisplay\fP\^, char
+*\fIbase_font_name_list\fP\^, char ***\fImissing_charset_list_return\fP\^, int
+*\fImissing_charset_count_return\fP\^, char **\fIdef_string_return\fP\^);
+.HP
+void XFreeFontSet\^(\^Display *\fIdisplay\fP\^, XFontSet \fIfont_set\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIbase_font_name_list\fP 1i
+Specifies the base font names.
+.IP \fIdef_string_return\fP 1i
+Returns the string drawn for missing charsets.
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.IP \fImissing_charset_count_return\fP 1i
+Returns the number of missing charsets.
+.IP \fImissing_charset_list_return\fP 1i
+Returns the missing charsets.
+.SH DESCRIPTION
+The
+.ZN XCreateFontSet
+function creates a font set for the specified display.
+The font set is bound to the current locale when
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN CharSetRegistry
+and
+.ZN 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
+.ZN CharSetRegistry
+and
+.ZN 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
+.ZN XCreateFontSet
+is unable to create the font set,
+either because there is insufficient memory or because the current locale
+is not supported,
+.ZN 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,
+.ZN XCreateFontSet
+returns a valid
+.ZN 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,
+.ZN 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,
+.ZN XCreateFontSet
+returns NULL.
+Otherwise,
+.ZN XCreateFontSet
+returns a valid
+.ZN XFontSet
+to font_set.
+.LP
+When an Xmb/wc drawing or measuring function is called with an
+.ZN XFontSet
+that has missing charsets, some characters in the locale will not be
+drawable.
+If def_string_return is non-NULL,
+.ZN XCreateFontSet
+returns a pointer to a string that represents the glyphs
+that are drawn with this
+.ZN 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
+.ZN 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
+.ZN XFreeFontSet
+with the associated
+.ZN 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
+.ZN XFontSet
+and missing charset list should be freed with
+.ZN XFreeFontSet
+and
+.ZN XFreeStringList ,
+respectively.
+The client-supplied base_font_name_list may be freed
+by the client after calling
+.ZN XCreateFontSet .
+.LP
+The
+.ZN XFreeFontSet
+function frees the specified font set.
+The associated base font name list, font name list,
+.ZN XFontStruct
+list, and
+.ZN XFontSetExtents ,
+if any, are freed.
+.SH "SEE ALSO"
+XExtentsofFontSet(__libmansuffix__),
+XFontsOfFontSet(__libmansuffix__),
+XFontSetExtents(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCreateGC.man b/libX11/man/XCreateGC.man
index 72a31f07c..c55c4c9c7 100644
--- a/libX11/man/XCreateGC.man
+++ b/libX11/man/XCreateGC.man
@@ -1,1203 +1,1203 @@
-'\" t
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XCreateGC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCreateGC, XCopyGC, XChangeGC, XGetGCValues, XFreeGC, XGContextFromGC, XGCValues \- create or free graphics contexts and graphics context structure
-.SH SYNTAX
-.HP
-GC XCreateGC\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, unsigned long
-\fIvaluemask\fP\^, XGCValues *\^\fIvalues\fP\^);
-.HP
-int XCopyGC\^(\^Display *\fIdisplay\fP\^, GC \fIsrc\fP\^,
-unsigned long \fIvaluemask\fP\^, GC \fIdest\fP\^);
-.HP
-int XChangeGC\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
-\fIvaluemask\fP\^, XGCValues *\^\fIvalues\fP\^);
-.HP
-Status XGetGCValues\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
-\fIvaluemask\fP\^, XGCValues *\fIvalues_return\fP\^);
-.HP
-int XFreeGC\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^);
-.HP
-GContext XGContextFromGC\^(\^GC \fIgc\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdest\fP 1i
-Specifies the destination GC.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIsrc\fP 1i
-Specifies the components of the source GC.
-.ds Vm set, copied, changed, or returned
-.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.
-.IP \fIvalues_return\fP 1i
-Returns the GC values in the specified
-.ZN XGCValues
-structure.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN BadMatch
-error.
-.LP
-.ZN XCreateGC
-can generate
-.ZN BadAlloc ,
-.ZN BadDrawable ,
-.ZN BadFont ,
-.ZN BadMatch ,
-.ZN BadPixmap ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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
-.ZN BadMatch
-error results.
-The valuemask specifies which component to copy, as for
-.ZN XCreateGC .
-.LP
-.ZN XCopyGC
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.LP
-The
-.ZN 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
-.ZN XCreateGC .
-Changing the clip-mask overrides any previous
-.ZN XSetClipRectangles
-request on the context.
-Changing the dash-offset or dash-list
-overrides any previous
-.ZN 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
-.ZN XChangeGC
-can generate
-.ZN BadAlloc ,
-.ZN BadFont ,
-.ZN BadGC ,
-.ZN BadMatch ,
-.ZN BadPixmap ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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 ,
-.ZN GCPlaneMask ,
-.ZN GCForeground ,
-.ZN GCBackground ,
-.ZN GCLineWidth ,
-.ZN GCLineStyle ,
-.ZN GCCapStyle ,
-.ZN GCJoinStyle ,
-.ZN GCFillStyle ,
-.ZN GCFillRule ,
-.ZN GCTile ,
-.ZN GCStipple ,
-.ZN GCTileStipXOrigin ,
-.ZN GCTileStipYOrigin ,
-.ZN GCFont ,
-.ZN GCSubwindowMode ,
-.ZN GCGraphicsExposures ,
-.ZN GCClipXOrigin ,
-.ZN GCCLipYOrigin ,
-.ZN GCDashOffset ,
-or
-.ZN GCArcMode )
-and no error occurs,
-.ZN 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
-.ZN GCClipMask
-and
-.ZN 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
-.ZN GCFont ,
-.ZN GCTile ,
-and
-.ZN GCStipple
-if the component has never been explicitly set by the client.
-.LP
-The
-.ZN XFreeGC
-function destroys the specified GC as well as all the associated storage.
-.LP
-.ZN XFreeGC
-can generate a
-.ZN BadGC
-error.
-.SH STRUCTURES
-The
-.ZN XGCValues
-structure contains:
-.LP
-.LP
-/\&* GC attribute value mask bits */
-.TS
-lw(.5i) lw(2.5i) lw(.75i).
-T{
-\&#define
-T} T{
-.ZN GCFunction
-T} T{
-(1L<<0)
-T}
-T{
-\&#define
-T} T{
-.ZN GCPlaneMask
-T} T{
-(1L<<1)
-T}
-T{
-\&#define
-T} T{
-.ZN GCForeground
-T} T{
-(1L<<2)
-T}
-T{
-\&#define
-T} T{
-.ZN GCBackground
-T} T{
-(1L<<3)
-T}
-T{
-\&#define
-T} T{
-.ZN GCLineWidth
-T} T{
-(1L<<4)
-T}
-T{
-\&#define
-T} T{
-.ZN GCLineStyle
-T} T{
-(1L<<5)
-T}
-T{
-\&#define
-T} T{
-.ZN GCCapStyle
-T} T{
-(1L<<6)
-T}
-T{
-\&#define
-T} T{
-.ZN GCJoinStyle
-T} T{
-(1L<<7)
-T}
-T{
-\&#define
-T} T{
-.ZN GCFillStyle
-T} T{
-(1L<<8)
-T}
-T{
-\&#define
-T} T{
-.ZN GCFillRule
-T} T{
-(1L<<9)
-T}
-T{
-\&#define
-T} T{
-.ZN GCTile
-T} T{
-(1L<<10)
-T}
-T{
-\&#define
-T} T{
-.ZN GCStipple
-T} T{
-(1L<<11)
-T}
-T{
-\&#define
-T} T{
-.ZN GCTileStipXOrigin
-T} T{
-(1L<<12)
-T}
-T{
-\&#define
-T} T{
-.ZN GCTileStipYOrigin
-T} T{
-(1L<<13)
-T}
-T{
-\&#define
-T} T{
-.ZN GCFont
-T} T{
-(1L<<14)
-T}
-T{
-\&#define
-T} T{
-.ZN GCSubwindowMode
-T} T{
-(1L<<15)
-T}
-T{
-\&#define
-T} T{
-.ZN GCGraphicsExposures
-T} T{
-(1L<<16)
-T}
-T{
-\&#define
-T} T{
-.ZN GCClipXOrigin
-T} T{
-(1L<<17)
-T}
-T{
-\&#define
-T} T{
-.ZN GCClipYOrigin
-T} T{
-(1L<<18)
-T}
-T{
-\&#define
-T} T{
-.ZN GCClipMask
-T} T{
-(1L<<19)
-T}
-T{
-\&#define
-T} T{
-.ZN GCDashOffset
-T} T{
-(1L<<20)
-T}
-T{
-\&#define
-T} T{
-.ZN GCDashList
-T} T{
-(1L<<21)
-T}
-T{
-\&#define
-T} T{
-.ZN 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
-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.
-.ZN 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{
-.ZN GXclear
-T} T{
-0x0
-T} T{
-0
-T}
-T{
-.ZN GXand
-T} T{
-0x1
-T} T{
-src AND dst
-T}
-T{
-.ZN GXandReverse
-T} T{
-0x2
-T} T{
-src AND NOT dst
-T}
-T{
-.ZN GXcopy
-T} T{
-0x3
-T} T{
-src
-T}
-T{
-.ZN GXandInverted
-T} T{
-0x4
-T} T{
-(NOT src) AND dst
-T}
-T{
-.ZN GXnoop
-T} T{
-0x5
-T} T{
-dst
-T}
-T{
-.ZN GXxor
-T} T{
-0x6
-T} T{
-src XOR dst
-T}
-T{
-.ZN GXor
-T} T{
-0x7
-T} T{
-src OR dst
-T}
-T{
-.ZN GXnor
-T} T{
-0x8
-T} T{
-(NOT src) AND (NOT dst)
-T}
-T{
-.ZN GXequiv
-T} T{
-0x9
-T} T{
-(NOT src) XOR dst
-T}
-T{
-.ZN GXinvert
-T} T{
-0xa
-T} T{
-NOT dst
-T}
-T{
-.ZN GXorReverse
-T} T{
-0xb
-T} T{
-src OR (NOT dst)
-T}
-T{
-.ZN GXcopyInverted
-T} T{
-0xc
-T} T{
-NOT src
-T}
-T{
-.ZN GXorInverted
-T} T{
-0xd
-T} T{
-(NOT src) OR dst
-T}
-T{
-.ZN GXnand
-T} T{
-0xe
-T} T{
-(NOT src) OR (NOT dst)
-T}
-T{
-.ZN 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
-.ZN 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{
-.ZN LineSolid
-T} T{
-The full path of the line is drawn.
-T}
-.sp 6p
-T{
-.ZN 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
-.ZN CapButt
-style used where even and odd dashes meet.
-T}
-.sp 6p
-T{
-.ZN LineOnOffDash
-T} T{
-Only the even dashes are drawn,
-and cap-style applies to
-all internal ends of the individual dashes,
-except
-.ZN CapNotLast
-is treated as
-.ZN 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{
-.ZN CapNotLast
-T} T{
-This is equivalent to
-.ZN CapButt
-except that for a line-width of zero the final endpoint is not drawn.
-T}
-.sp 6p
-T{
-.ZN 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{
-.ZN 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
-.ZN CapButt
-for line-width of zero).
-T}
-.sp 6p
-T{
-.ZN 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
-.ZN 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{
-.ZN 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
-.ZN JoinBevel
-join-style is used instead.
-T}
-.sp 6p
-T{
-.ZN 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{
-.ZN JoinBevel
-T} T{
-The corner has
-.ZN 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{
-.ZN CapNotLast
-T} T{
-thin
-T} T{
-The results are device dependent,
-but the desired effect is that nothing is drawn.
-T}
-.sp 6p
-T{
-.ZN 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{
-.ZN CapRound
-T} T{
-thin
-T} T{
-The results are the same as for
-.ZN CapButt /thin.
-T}
-.sp 6p
-T{
-.ZN CapProjecting
-T} T{
-thin
-T} T{
-The results are the same as for
-.ZN CapButt /thin.
-T}
-.sp 6p
-T{
-.ZN CapButt
-T} T{
-wide
-T} T{
-Nothing is drawn.
-T}
-.sp 6p
-T{
-.ZN 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{
-.ZN 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
-.ZN BadMatch
-error results.
-The stipple pixmap must have depth one and must have the same root as the
-GC, or a
-.ZN BadMatch
-error results.
-For stipple operations where the fill-style is
-.ZN FillStippled
-but not
-.ZN 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,
-.ZN XDrawText ,
-.ZN XDrawText16 ,
-.ZN XFillRectangle ,
-.ZN XFillPolygon ,
-and
-.ZN XFillArc );
-for line requests
-with line-style
-.ZN LineSolid
-(for example,
-.ZN XDrawLine ,
-.ZN XDrawSegments ,
-.ZN XDrawRectangle ,
-.ZN XDrawArc );
-and for the even dashes for line requests with line-style
-.ZN LineOnOffDash
-or
-.ZN LineDoubleDash ,
-the following apply:
-.TS
-lw(1.8i) lw(4i).
-T{
-.ZN FillSolid
-T} T{
-Foreground
-T}
-.sp 6p
-T{
-.ZN FillTiled
-T} T{
-Tile
-T}
-.sp 6p
-T{
-.ZN 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{
-.ZN FillStippled
-T} T{
-Foreground masked by stipple
-T}
-.TE
-.LP
-When drawing lines with line-style
-.ZN LineDoubleDash ,
-the odd dashes are controlled by the fill-style in the following manner:
-.TS
-lw(1.8i) lw(4i).
-T{
-.ZN FillSolid
-T} T{
-Background
-T}
-.sp 6p
-T{
-.ZN FillTiled
-T} T{
-Same as for even dashes
-T}
-.sp 6p
-T{
-.ZN FillOpaqueStippled
-T} T{
-Same as for even dashes
-T}
-.sp 6p
-T{
-.ZN 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
-.ZN XSetDashes .
-Specifying a
-value of N is equivalent to specifying the two-element list [N, N] in
-.ZN XSetDashes .
-The value must be nonzero,
-or a
-.ZN 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
-.ZN BadMatch
-error results.
-If clip-mask is set to
-.ZN None ,
-the pixels are always drawn regardless of the clip origin.
-The clip-mask also can be set by calling the
-.ZN XSetClipRectangles
-or
-.ZN 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
-.ZN ClipByChildren
-or
-.ZN IncludeInferiors .
-For
-.ZN ClipByChildren ,
-both source and destination windows are
-additionally clipped by all viewable
-.ZN InputOutput
-children.
-For
-.ZN 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
-.ZN 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
-.ZN XFillPolygon
-requests and can be set to
-.ZN EvenOddRule
-or
-.ZN WindingRule .
-For
-.ZN EvenOddRule ,
-a point is inside if
-an infinite ray with the point as origin crosses the path an odd number
-of times.
-For
-.ZN 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
-.ZN EvenOddRule
-and
-.ZN 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
-.ZN XFillArcs
-function and can be set to
-.ZN ArcPieSlice
-or
-.ZN ArcChord .
-For
-.ZN ArcPieSlice ,
-the arcs are pie-slice filled.
-For
-.ZN ArcChord ,
-the arcs are chord filled.
-.LP
-The graphics-exposure flag controls
-.ZN GraphicsExpose
-event generation
-for
-.ZN XCopyArea
-and
-.ZN XCopyPlane
-requests (and any similar requests defined by extensions).
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadFont
-A value for a Font or GContext argument does not name a defined Font.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadPixmap
-A value for a Pixmap argument does not name a defined Pixmap.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-AllPlanes(__libmansuffix__),
-XCopyArea(__libmansuffix__),
-XCreateRegion(__libmansuffix__),
-XDrawArc(__libmansuffix__),
-XDrawLine(__libmansuffix__),
-XDrawRectangle(__libmansuffix__),
-XDrawText(__libmansuffix__),
-XFillRectangle(__libmansuffix__),
-XQueryBestSize(__libmansuffix__),
-XSetArcMode(__libmansuffix__),
-XSetClipOrigin(__libmansuffix__),
-XSetFillStyle(__libmansuffix__),
-XSetFont(__libmansuffix__),
-XSetLineAttributes(__libmansuffix__),
-XSetState(__libmansuffix__),
-XSetTile(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" t
+.TH XCreateGC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCreateGC, XCopyGC, XChangeGC, XGetGCValues, XFreeGC, XGContextFromGC, XGCValues \- create or free graphics contexts and graphics context structure
+.SH SYNTAX
+.HP
+GC XCreateGC\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, unsigned long
+\fIvaluemask\fP\^, XGCValues *\^\fIvalues\fP\^);
+.HP
+int XCopyGC\^(\^Display *\fIdisplay\fP\^, GC \fIsrc\fP\^,
+unsigned long \fIvaluemask\fP\^, GC \fIdest\fP\^);
+.HP
+int XChangeGC\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
+\fIvaluemask\fP\^, XGCValues *\^\fIvalues\fP\^);
+.HP
+Status XGetGCValues\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
+\fIvaluemask\fP\^, XGCValues *\fIvalues_return\fP\^);
+.HP
+int XFreeGC\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^);
+.HP
+GContext XGContextFromGC\^(\^GC \fIgc\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdest\fP 1i
+Specifies the destination GC.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIsrc\fP 1i
+Specifies the components of the source GC.
+.ds Vm set, copied, changed, or returned
+.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.
+.IP \fIvalues_return\fP 1i
+Returns the GC values in the specified
+.ZN XGCValues
+structure.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN BadMatch
+error.
+.LP
+.ZN XCreateGC
+can generate
+.ZN BadAlloc ,
+.ZN BadDrawable ,
+.ZN BadFont ,
+.ZN BadMatch ,
+.ZN BadPixmap ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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
+.ZN BadMatch
+error results.
+The valuemask specifies which component to copy, as for
+.ZN XCreateGC .
+.LP
+.ZN XCopyGC
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.LP
+The
+.ZN 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
+.ZN XCreateGC .
+Changing the clip-mask overrides any previous
+.ZN XSetClipRectangles
+request on the context.
+Changing the dash-offset or dash-list
+overrides any previous
+.ZN 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
+.ZN XChangeGC
+can generate
+.ZN BadAlloc ,
+.ZN BadFont ,
+.ZN BadGC ,
+.ZN BadMatch ,
+.ZN BadPixmap ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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 ,
+.ZN GCPlaneMask ,
+.ZN GCForeground ,
+.ZN GCBackground ,
+.ZN GCLineWidth ,
+.ZN GCLineStyle ,
+.ZN GCCapStyle ,
+.ZN GCJoinStyle ,
+.ZN GCFillStyle ,
+.ZN GCFillRule ,
+.ZN GCTile ,
+.ZN GCStipple ,
+.ZN GCTileStipXOrigin ,
+.ZN GCTileStipYOrigin ,
+.ZN GCFont ,
+.ZN GCSubwindowMode ,
+.ZN GCGraphicsExposures ,
+.ZN GCClipXOrigin ,
+.ZN GCCLipYOrigin ,
+.ZN GCDashOffset ,
+or
+.ZN GCArcMode )
+and no error occurs,
+.ZN 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
+.ZN GCClipMask
+and
+.ZN 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
+.ZN GCFont ,
+.ZN GCTile ,
+and
+.ZN GCStipple
+if the component has never been explicitly set by the client.
+.LP
+The
+.ZN XFreeGC
+function destroys the specified GC as well as all the associated storage.
+.LP
+.ZN XFreeGC
+can generate a
+.ZN BadGC
+error.
+.SH STRUCTURES
+The
+.ZN XGCValues
+structure contains:
+.LP
+.LP
+/\&* GC attribute value mask bits */
+.TS
+lw(.5i) lw(2.5i) lw(.75i).
+T{
+\&#define
+T} T{
+.ZN GCFunction
+T} T{
+(1L<<0)
+T}
+T{
+\&#define
+T} T{
+.ZN GCPlaneMask
+T} T{
+(1L<<1)
+T}
+T{
+\&#define
+T} T{
+.ZN GCForeground
+T} T{
+(1L<<2)
+T}
+T{
+\&#define
+T} T{
+.ZN GCBackground
+T} T{
+(1L<<3)
+T}
+T{
+\&#define
+T} T{
+.ZN GCLineWidth
+T} T{
+(1L<<4)
+T}
+T{
+\&#define
+T} T{
+.ZN GCLineStyle
+T} T{
+(1L<<5)
+T}
+T{
+\&#define
+T} T{
+.ZN GCCapStyle
+T} T{
+(1L<<6)
+T}
+T{
+\&#define
+T} T{
+.ZN GCJoinStyle
+T} T{
+(1L<<7)
+T}
+T{
+\&#define
+T} T{
+.ZN GCFillStyle
+T} T{
+(1L<<8)
+T}
+T{
+\&#define
+T} T{
+.ZN GCFillRule
+T} T{
+(1L<<9)
+T}
+T{
+\&#define
+T} T{
+.ZN GCTile
+T} T{
+(1L<<10)
+T}
+T{
+\&#define
+T} T{
+.ZN GCStipple
+T} T{
+(1L<<11)
+T}
+T{
+\&#define
+T} T{
+.ZN GCTileStipXOrigin
+T} T{
+(1L<<12)
+T}
+T{
+\&#define
+T} T{
+.ZN GCTileStipYOrigin
+T} T{
+(1L<<13)
+T}
+T{
+\&#define
+T} T{
+.ZN GCFont
+T} T{
+(1L<<14)
+T}
+T{
+\&#define
+T} T{
+.ZN GCSubwindowMode
+T} T{
+(1L<<15)
+T}
+T{
+\&#define
+T} T{
+.ZN GCGraphicsExposures
+T} T{
+(1L<<16)
+T}
+T{
+\&#define
+T} T{
+.ZN GCClipXOrigin
+T} T{
+(1L<<17)
+T}
+T{
+\&#define
+T} T{
+.ZN GCClipYOrigin
+T} T{
+(1L<<18)
+T}
+T{
+\&#define
+T} T{
+.ZN GCClipMask
+T} T{
+(1L<<19)
+T}
+T{
+\&#define
+T} T{
+.ZN GCDashOffset
+T} T{
+(1L<<20)
+T}
+T{
+\&#define
+T} T{
+.ZN GCDashList
+T} T{
+(1L<<21)
+T}
+T{
+\&#define
+T} T{
+.ZN 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
+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.
+.ZN 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{
+.ZN GXclear
+T} T{
+0x0
+T} T{
+0
+T}
+T{
+.ZN GXand
+T} T{
+0x1
+T} T{
+src AND dst
+T}
+T{
+.ZN GXandReverse
+T} T{
+0x2
+T} T{
+src AND NOT dst
+T}
+T{
+.ZN GXcopy
+T} T{
+0x3
+T} T{
+src
+T}
+T{
+.ZN GXandInverted
+T} T{
+0x4
+T} T{
+(NOT src) AND dst
+T}
+T{
+.ZN GXnoop
+T} T{
+0x5
+T} T{
+dst
+T}
+T{
+.ZN GXxor
+T} T{
+0x6
+T} T{
+src XOR dst
+T}
+T{
+.ZN GXor
+T} T{
+0x7
+T} T{
+src OR dst
+T}
+T{
+.ZN GXnor
+T} T{
+0x8
+T} T{
+(NOT src) AND (NOT dst)
+T}
+T{
+.ZN GXequiv
+T} T{
+0x9
+T} T{
+(NOT src) XOR dst
+T}
+T{
+.ZN GXinvert
+T} T{
+0xa
+T} T{
+NOT dst
+T}
+T{
+.ZN GXorReverse
+T} T{
+0xb
+T} T{
+src OR (NOT dst)
+T}
+T{
+.ZN GXcopyInverted
+T} T{
+0xc
+T} T{
+NOT src
+T}
+T{
+.ZN GXorInverted
+T} T{
+0xd
+T} T{
+(NOT src) OR dst
+T}
+T{
+.ZN GXnand
+T} T{
+0xe
+T} T{
+(NOT src) OR (NOT dst)
+T}
+T{
+.ZN 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
+.ZN 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{
+.ZN LineSolid
+T} T{
+The full path of the line is drawn.
+T}
+.sp 6p
+T{
+.ZN 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
+.ZN CapButt
+style used where even and odd dashes meet.
+T}
+.sp 6p
+T{
+.ZN LineOnOffDash
+T} T{
+Only the even dashes are drawn,
+and cap-style applies to
+all internal ends of the individual dashes,
+except
+.ZN CapNotLast
+is treated as
+.ZN 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{
+.ZN CapNotLast
+T} T{
+This is equivalent to
+.ZN CapButt
+except that for a line-width of zero the final endpoint is not drawn.
+T}
+.sp 6p
+T{
+.ZN 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{
+.ZN 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
+.ZN CapButt
+for line-width of zero).
+T}
+.sp 6p
+T{
+.ZN 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
+.ZN 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{
+.ZN 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
+.ZN JoinBevel
+join-style is used instead.
+T}
+.sp 6p
+T{
+.ZN 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{
+.ZN JoinBevel
+T} T{
+The corner has
+.ZN 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{
+.ZN CapNotLast
+T} T{
+thin
+T} T{
+The results are device dependent,
+but the desired effect is that nothing is drawn.
+T}
+.sp 6p
+T{
+.ZN 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{
+.ZN CapRound
+T} T{
+thin
+T} T{
+The results are the same as for
+.ZN CapButt /thin.
+T}
+.sp 6p
+T{
+.ZN CapProjecting
+T} T{
+thin
+T} T{
+The results are the same as for
+.ZN CapButt /thin.
+T}
+.sp 6p
+T{
+.ZN CapButt
+T} T{
+wide
+T} T{
+Nothing is drawn.
+T}
+.sp 6p
+T{
+.ZN 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{
+.ZN 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
+.ZN BadMatch
+error results.
+The stipple pixmap must have depth one and must have the same root as the
+GC, or a
+.ZN BadMatch
+error results.
+For stipple operations where the fill-style is
+.ZN FillStippled
+but not
+.ZN 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,
+.ZN XDrawText ,
+.ZN XDrawText16 ,
+.ZN XFillRectangle ,
+.ZN XFillPolygon ,
+and
+.ZN XFillArc );
+for line requests
+with line-style
+.ZN LineSolid
+(for example,
+.ZN XDrawLine ,
+.ZN XDrawSegments ,
+.ZN XDrawRectangle ,
+.ZN XDrawArc );
+and for the even dashes for line requests with line-style
+.ZN LineOnOffDash
+or
+.ZN LineDoubleDash ,
+the following apply:
+.TS
+lw(1.8i) lw(4i).
+T{
+.ZN FillSolid
+T} T{
+Foreground
+T}
+.sp 6p
+T{
+.ZN FillTiled
+T} T{
+Tile
+T}
+.sp 6p
+T{
+.ZN 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{
+.ZN FillStippled
+T} T{
+Foreground masked by stipple
+T}
+.TE
+.LP
+When drawing lines with line-style
+.ZN LineDoubleDash ,
+the odd dashes are controlled by the fill-style in the following manner:
+.TS
+lw(1.8i) lw(4i).
+T{
+.ZN FillSolid
+T} T{
+Background
+T}
+.sp 6p
+T{
+.ZN FillTiled
+T} T{
+Same as for even dashes
+T}
+.sp 6p
+T{
+.ZN FillOpaqueStippled
+T} T{
+Same as for even dashes
+T}
+.sp 6p
+T{
+.ZN 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
+.ZN XSetDashes .
+Specifying a
+value of N is equivalent to specifying the two-element list [N, N] in
+.ZN XSetDashes .
+The value must be nonzero,
+or a
+.ZN 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
+.ZN BadMatch
+error results.
+If clip-mask is set to
+.ZN None ,
+the pixels are always drawn regardless of the clip origin.
+The clip-mask also can be set by calling the
+.ZN XSetClipRectangles
+or
+.ZN 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
+.ZN ClipByChildren
+or
+.ZN IncludeInferiors .
+For
+.ZN ClipByChildren ,
+both source and destination windows are
+additionally clipped by all viewable
+.ZN InputOutput
+children.
+For
+.ZN 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
+.ZN 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
+.ZN XFillPolygon
+requests and can be set to
+.ZN EvenOddRule
+or
+.ZN WindingRule .
+For
+.ZN EvenOddRule ,
+a point is inside if
+an infinite ray with the point as origin crosses the path an odd number
+of times.
+For
+.ZN 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
+.ZN EvenOddRule
+and
+.ZN 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
+.ZN XFillArcs
+function and can be set to
+.ZN ArcPieSlice
+or
+.ZN ArcChord .
+For
+.ZN ArcPieSlice ,
+the arcs are pie-slice filled.
+For
+.ZN ArcChord ,
+the arcs are chord filled.
+.LP
+The graphics-exposure flag controls
+.ZN GraphicsExpose
+event generation
+for
+.ZN XCopyArea
+and
+.ZN XCopyPlane
+requests (and any similar requests defined by extensions).
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadFont
+A value for a Font or GContext argument does not name a defined Font.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadPixmap
+A value for a Pixmap argument does not name a defined Pixmap.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+AllPlanes(__libmansuffix__),
+XCopyArea(__libmansuffix__),
+XCreateRegion(__libmansuffix__),
+XDrawArc(__libmansuffix__),
+XDrawLine(__libmansuffix__),
+XDrawRectangle(__libmansuffix__),
+XDrawText(__libmansuffix__),
+XFillRectangle(__libmansuffix__),
+XQueryBestSize(__libmansuffix__),
+XSetArcMode(__libmansuffix__),
+XSetClipOrigin(__libmansuffix__),
+XSetFillStyle(__libmansuffix__),
+XSetFont(__libmansuffix__),
+XSetLineAttributes(__libmansuffix__),
+XSetState(__libmansuffix__),
+XSetTile(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCreateIC.man b/libX11/man/XCreateIC.man
index 822cc8ec3..37f49e1a9 100644
--- a/libX11/man/XCreateIC.man
+++ b/libX11/man/XCreateIC.man
@@ -1,219 +1,219 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCreateIC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCreateIC, XDestroyIC, XIMOfIC \- create, destroy, and obtain the input method of an input context
-.SH SYNTAX
-.HP
-XIC XCreateIC\^(\^XIM \fIim\fP\^, ...\^);
-.HP
-void XDestroyIC\^(\^XIC \fIic\fP\^);
-.HP
-XIM XIMOfIC\^(\^XIC \fIic\fP\^);
-.SH ARGUMENTS
-.IP \fIic\fP 1i
-Specifies the input context.
-.IP \fIim\fP 1i
-Specifies the input method.
-.ds Al \ to set XIC values
-.IP ... 1i
-Specifies the variable length argument list\*(Al.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN 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,
-.ZN XNFilterEvents ).
-.IP \(bu 5
-The argument name is not recognized.
-.IP \(bu 5
-The input method encountered an input method implementation-dependent error.
-.LP
-The
-.ZN XCreateIC
-can generate
-.ZN BadAtom ,
-.ZN BadColor ,
-.ZN BadPixmap ,
-and
-.ZN BadWindow
-errors.
-.LP
-.ZN XDestroyIC
-destroys the specified input context.
-.LP
-The
-.ZN XIMOfIC
-function returns the input method associated with the specified input context.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAtom
-A value for an Atom argument does not name a defined Atom.
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.TP 1i
-.ZN BadPixmap
-A value for a Pixmap argument does not name a defined Pixmap.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XOpenIM(__libmansuffix__),
-XSetICFocus(__libmansuffix__),
-XSetICValues(__libmansuffix__),
-XmbResetIC(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCreateIC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCreateIC, XDestroyIC, XIMOfIC \- create, destroy, and obtain the input method of an input context
+.SH SYNTAX
+.HP
+XIC XCreateIC\^(\^XIM \fIim\fP\^, ...\^);
+.HP
+void XDestroyIC\^(\^XIC \fIic\fP\^);
+.HP
+XIM XIMOfIC\^(\^XIC \fIic\fP\^);
+.SH ARGUMENTS
+.IP \fIic\fP 1i
+Specifies the input context.
+.IP \fIim\fP 1i
+Specifies the input method.
+.ds Al \ to set XIC values
+.IP ... 1i
+Specifies the variable length argument list\*(Al.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN 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,
+.ZN XNFilterEvents ).
+.IP \(bu 5
+The argument name is not recognized.
+.IP \(bu 5
+The input method encountered an input method implementation-dependent error.
+.LP
+The
+.ZN XCreateIC
+can generate
+.ZN BadAtom ,
+.ZN BadColor ,
+.ZN BadPixmap ,
+and
+.ZN BadWindow
+errors.
+.LP
+.ZN XDestroyIC
+destroys the specified input context.
+.LP
+The
+.ZN XIMOfIC
+function returns the input method associated with the specified input context.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAtom
+A value for an Atom argument does not name a defined Atom.
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.TP 1i
+.ZN BadPixmap
+A value for a Pixmap argument does not name a defined Pixmap.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XOpenIM(__libmansuffix__),
+XSetICFocus(__libmansuffix__),
+XSetICValues(__libmansuffix__),
+XmbResetIC(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCreateOC.man b/libX11/man/XCreateOC.man
index 5c3e8dc00..27d683a49 100644
--- a/libX11/man/XCreateOC.man
+++ b/libX11/man/XCreateOC.man
@@ -1,226 +1,226 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCreateOC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCreateOC, XDestroyOC, XSetOCValues, XGetOCValues, XOMOfOC \- create output contexts
-.SH SYNTAX
-.HP
-XOC XCreateOC\^(\^XOM \fIom\fP\^);
-.HP
-void XDestroyOC\^(\^XOC \fIoc\fP\^);
-.HP
-char * XSetOCValues\^(\^XOC \fIoc\fP\^, ...);
-.HP
-char * XGetOCValues\^(\^XOC \fIoc\fP\^, ...);
-.HP
-XOM XOMOfOC\^(\^XOC \fIoc\fP\^);
-.SH ARGUMENTS
-.IP \fIoc\fP 1i
-Specifies the output context.
-.IP \fIom\fP 1i
-Specifies the output method.
-.ds Al \ to set or get XOC values
-.IP ... 1i
-Specifies the variable length argument list\*(Al.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN 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
-The
-.ZN XDestroyOC
-function destroys the specified output context.
-.LP
-The
-.ZN 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
-The
-.ZN 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.
-.LP
-The
-.ZN XOMOfOC
-function returns the output method associated with the
-specified output context.
-.SH "SEE ALSO"
-XCreateOM(__libmansuffix__),
-XCreateFontSet(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCreateOC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCreateOC, XDestroyOC, XSetOCValues, XGetOCValues, XOMOfOC \- create output contexts
+.SH SYNTAX
+.HP
+XOC XCreateOC\^(\^XOM \fIom\fP\^);
+.HP
+void XDestroyOC\^(\^XOC \fIoc\fP\^);
+.HP
+char * XSetOCValues\^(\^XOC \fIoc\fP\^, ...);
+.HP
+char * XGetOCValues\^(\^XOC \fIoc\fP\^, ...);
+.HP
+XOM XOMOfOC\^(\^XOC \fIoc\fP\^);
+.SH ARGUMENTS
+.IP \fIoc\fP 1i
+Specifies the output context.
+.IP \fIom\fP 1i
+Specifies the output method.
+.ds Al \ to set or get XOC values
+.IP ... 1i
+Specifies the variable length argument list\*(Al.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN 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
+The
+.ZN XDestroyOC
+function destroys the specified output context.
+.LP
+The
+.ZN 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
+The
+.ZN 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.
+.LP
+The
+.ZN XOMOfOC
+function returns the output method associated with the
+specified output context.
+.SH "SEE ALSO"
+XCreateOM(__libmansuffix__),
+XCreateFontSet(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCreatePixmap.man b/libX11/man/XCreatePixmap.man
index ef54ac538..0b1eb1e5d 100644
--- a/libX11/man/XCreatePixmap.man
+++ b/libX11/man/XCreatePixmap.man
@@ -1,230 +1,230 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCreatePixmap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCreatePixmap, XFreePixmap \- create or destroy pixmaps
-.SH SYNTAX
-.HP
-Pixmap XCreatePixmap\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
-unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int
-\fIdepth\fP\^);
-.HP
-int XFreePixmap\^(\^Display *\fIdisplay\fP\^, Pixmap \fIpixmap\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies which screen the pixmap is created on.
-.IP \fIdepth\fP 1i
-Specifies the depth of the pixmap.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIpixmap\fP 1i
-Specifies the pixmap.
-.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.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN InputOnly
-window to the drawable argument.
-The width and height arguments must be nonzero,
-or a
-.ZN BadValue
-error results.
-The depth argument must be one of the depths supported by the screen
-of the specified drawable,
-or a
-.ZN 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
-.ZN XCopyPlane
-for an exception to this rule).
-The initial contents of the pixmap are undefined.
-.LP
-.ZN XCreatePixmap
-can generate
-.ZN BadAlloc ,
-.ZN BadDrawable ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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
-.ZN XFreePixmap
-can generate a
-.ZN BadPixmap
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadPixmap
-A value for a Pixmap argument does not name a defined Pixmap.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XCopyArea(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCreatePixmap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCreatePixmap, XFreePixmap \- create or destroy pixmaps
+.SH SYNTAX
+.HP
+Pixmap XCreatePixmap\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
+unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int
+\fIdepth\fP\^);
+.HP
+int XFreePixmap\^(\^Display *\fIdisplay\fP\^, Pixmap \fIpixmap\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies which screen the pixmap is created on.
+.IP \fIdepth\fP 1i
+Specifies the depth of the pixmap.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIpixmap\fP 1i
+Specifies the pixmap.
+.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.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN InputOnly
+window to the drawable argument.
+The width and height arguments must be nonzero,
+or a
+.ZN BadValue
+error results.
+The depth argument must be one of the depths supported by the screen
+of the specified drawable,
+or a
+.ZN 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
+.ZN XCopyPlane
+for an exception to this rule).
+The initial contents of the pixmap are undefined.
+.LP
+.ZN XCreatePixmap
+can generate
+.ZN BadAlloc ,
+.ZN BadDrawable ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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
+.ZN XFreePixmap
+can generate a
+.ZN BadPixmap
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadPixmap
+A value for a Pixmap argument does not name a defined Pixmap.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XCopyArea(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCreateRegion.man b/libX11/man/XCreateRegion.man
index 0f6d324ef..9e3852157 100644
--- a/libX11/man/XCreateRegion.man
+++ b/libX11/man/XCreateRegion.man
@@ -1,179 +1,179 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCreateRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCreateRegion, XSetRegion, XDestroyRegion \- create or destroy regions
-.SH SYNTAX
-.HP
-Region XCreateRegion\^(void\^);
-.HP
-int XSetRegion\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Region \fIr\fP\^);
-.HP
-int XDestroyRegion\^(\^Region \fIr\fP\^);
-.SH ARGUMENTS
-.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.
-.SH DESCRIPTION
-The
-.ZN XCreateRegion
-function creates a new empty region.
-.LP
-The
-.ZN 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
-The
-.ZN XDestroyRegion
-function deallocates the storage associated with a specified region.
-.SH "SEE ALSO"
-XEmptyRegion(__libmansuffix__),
-XIntersectRegion(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCreateRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCreateRegion, XSetRegion, XDestroyRegion \- create or destroy regions
+.SH SYNTAX
+.HP
+Region XCreateRegion\^(void\^);
+.HP
+int XSetRegion\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Region \fIr\fP\^);
+.HP
+int XDestroyRegion\^(\^Region \fIr\fP\^);
+.SH ARGUMENTS
+.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.
+.SH DESCRIPTION
+The
+.ZN XCreateRegion
+function creates a new empty region.
+.LP
+The
+.ZN 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
+The
+.ZN XDestroyRegion
+function deallocates the storage associated with a specified region.
+.SH "SEE ALSO"
+XEmptyRegion(__libmansuffix__),
+XIntersectRegion(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCreateWindow.man b/libX11/man/XCreateWindow.man
index 8d122d5a5..3f3b5b2cd 100644
--- a/libX11/man/XCreateWindow.man
+++ b/libX11/man/XCreateWindow.man
@@ -1,496 +1,496 @@
-'\" t
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XCreateWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCreateWindow, XCreateSimpleWindow, XSetWindowAttributes \- create windows and window attributes structure
-.SH SYNTAX
-.HP
-Window XCreateWindow\^(\^Display *\fIdisplay\fP\^, Window \fIparent\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int \fIborder_width\fP\^, int \fIdepth\fP\^, unsigned int \fIclass\fP\^, Visual *\fIvisual\fP\^, unsigned long \fIvaluemask\fP\^, XSetWindowAttributes *\fIattributes\fP\^);
-.HP
-Window XCreateSimpleWindow\^(\^Display *\fIdisplay\fP\^, Window \fIparent\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int \fIborder_width\fP\^, unsigned long \fIborder\fP\^, unsigned long \fIbackground\fP\^);
-.SH ARGUMENTS
-.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.
-.IP \fIbackground\fP 1i
-Specifies the background pixel value of the window.
-
-.IP \fIborder\fP 1i
-Specifies the border pixel value of the window.
-.IP \fIborder_width\fP 1i
-Specifies the width of the created window's border in pixels.
-.IP \fIclass\fP 1i
-Specifies the created window's class.
-You can pass
-.ZN InputOutput ,
-.ZN InputOnly ,
-or
-.ZN CopyFromParent .
-A class of
-.ZN CopyFromParent
-means the class
-is taken from the parent.
-.IP \fIdepth\fP 1i
-Specifies the window's depth.
-A depth of
-.ZN CopyFromParent
-means the depth is taken from the parent.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIparent\fP 1i
-Specifies the parent 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.
-.IP \fIvisual\fP 1i
-Specifies the visual type.
-A visual of
-.ZN CopyFromParent
-means the visual type is taken from the
-parent.
-.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.
-.ds Xy , which are the top-left outside corner of the 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.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN 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
-.ZN InputOnly
-window must be zero, or a
-.ZN BadMatch
-error results.
-For class
-.ZN InputOutput ,
-the visual type and depth must be a combination supported for the screen,
-or a
-.ZN BadMatch
-error results.
-The depth need not be the same as the parent,
-but the parent must not be a window of class
-.ZN InputOnly ,
-or a
-.ZN BadMatch
-error results.
-For an
-.ZN InputOnly
-window,
-the depth must be zero, and the visual must be one supported by the screen.
-If either condition is not met,
-a
-.ZN BadMatch
-error results.
-The parent window, however, may have any depth and class.
-If you specify any invalid window attribute for a window, a
-.ZN BadMatch
-error results.
-.LP
-The created window is not yet displayed (mapped) on the user's display.
-To display the window, call
-.ZN XMapWindow .
-The new window initially uses the same cursor as
-its parent.
-A new cursor can be defined for the new window by calling
-.ZN 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
-.ZN XCreateWindow
-can generate
-.ZN BadAlloc
-.ZN BadColor ,
-.ZN BadCursor ,
-.ZN BadMatch ,
-.ZN BadPixmap ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XCreateSimpleWindow
-function creates an unmapped
-.ZN InputOutput
-subwindow for a specified parent window, returns the
-window ID of the created window, and causes the X server to generate a
-.ZN 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
-.ZN InputOnly
-window must be zero, or a
-.ZN BadMatch
-error results.
-.ZN XCreateSimpleWindow
-inherits its depth, class, and visual from its parent.
-All other window attributes, except background and border,
-have their default values.
-.LP
-.ZN XCreateSimpleWindow
-can generate
-.ZN BadAlloc ,
-.ZN BadMatch ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.SH STRUCTURES
-The
-.ZN XSetWindow Attributes
-structure contains:
-.LP
-.LP
-/\&* Window attribute value mask bits */
-.TS
-lw(.5i) lw(2.5i) lw(.8i).
-T{
-\&#define
-T} T{
-.ZN CWBackPixmap
-T} T{
-(1L<<0)
-T}
-T{
-\&#define
-T} T{
-.ZN CWBackPixel
-T} T{
-(1L<<1)
-T}
-T{
-\&#define
-T} T{
-.ZN CWBorderPixmap
-T} T{
-(1L<<2)
-T}
-T{
-\&#define
-T} T{
-.ZN CWBorderPixel
-T} T{
-(1L<<3)
-T}
-T{
-\&#define
-T} T{
-.ZN CWBitGravity
-T} T{
-(1L<<4)
-T}
-T{
-\&#define
-T} T{
-.ZN CWWinGravity
-T} T{
-(1L<<5)
-T}
-T{
-\&#define
-T} T{
-.ZN CWBackingStore
-T} T{
-(1L<<6)
-T}
-T{
-\&#define
-T} T{
-.ZN CWBackingPlanes
-T} T{
-(1L<<7)
-T}
-T{
-\&#define
-T} T{
-.ZN CWBackingPixel
-T} T{
-(1L<<8)
-T}
-T{
-\&#define
-T} T{
-.ZN CWOverrideRedirect
-T} T{
-(1L<<9)
-T}
-T{
-\&#define
-T} T{
-.ZN CWSaveUnder
-T} T{
-(1L<<10)
-T}
-T{
-\&#define
-T} T{
-.ZN CWEventMask
-T} T{
-(1L<<11)
-T}
-T{
-\&#define
-T} T{
-.ZN CWDontPropagate
-T} T{
-(1L<<12)
-T}
-T{
-\&#define
-T} T{
-.ZN CWColormap
-T} T{
-(1L<<13)
-T}
-T{
-\&#define
-T} T{
-.ZN 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
-For a detailed explanation of the members of this structure,
-see \fI\*(xL\fP\^.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.TP 1i
-.ZN BadCursor
-A value for a Cursor argument does not name a defined Cursor.
-.TP 1i
-.ZN BadMatch
-The values do not exist for an
-.ZN InputOnly
-window.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadPixmap
-A value for a Pixmap argument does not name a defined Pixmap.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XChangeWindowAttributes(__libmansuffix__),
-XConfigureWindow(__libmansuffix__),
-XDefineCursor(__libmansuffix__),
-XDestroyWindow(__libmansuffix__),
-XMapWindow(__libmansuffix__),
-XRaiseWindow(__libmansuffix__),
-XUnmapWindow(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" t
+.TH XCreateWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCreateWindow, XCreateSimpleWindow, XSetWindowAttributes \- create windows and window attributes structure
+.SH SYNTAX
+.HP
+Window XCreateWindow\^(\^Display *\fIdisplay\fP\^, Window \fIparent\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int \fIborder_width\fP\^, int \fIdepth\fP\^, unsigned int \fIclass\fP\^, Visual *\fIvisual\fP\^, unsigned long \fIvaluemask\fP\^, XSetWindowAttributes *\fIattributes\fP\^);
+.HP
+Window XCreateSimpleWindow\^(\^Display *\fIdisplay\fP\^, Window \fIparent\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int \fIborder_width\fP\^, unsigned long \fIborder\fP\^, unsigned long \fIbackground\fP\^);
+.SH ARGUMENTS
+.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.
+.IP \fIbackground\fP 1i
+Specifies the background pixel value of the window.
+
+.IP \fIborder\fP 1i
+Specifies the border pixel value of the window.
+.IP \fIborder_width\fP 1i
+Specifies the width of the created window's border in pixels.
+.IP \fIclass\fP 1i
+Specifies the created window's class.
+You can pass
+.ZN InputOutput ,
+.ZN InputOnly ,
+or
+.ZN CopyFromParent .
+A class of
+.ZN CopyFromParent
+means the class
+is taken from the parent.
+.IP \fIdepth\fP 1i
+Specifies the window's depth.
+A depth of
+.ZN CopyFromParent
+means the depth is taken from the parent.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIparent\fP 1i
+Specifies the parent 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.
+.IP \fIvisual\fP 1i
+Specifies the visual type.
+A visual of
+.ZN CopyFromParent
+means the visual type is taken from the
+parent.
+.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.
+.ds Xy , which are the top-left outside corner of the 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.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN 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
+.ZN InputOnly
+window must be zero, or a
+.ZN BadMatch
+error results.
+For class
+.ZN InputOutput ,
+the visual type and depth must be a combination supported for the screen,
+or a
+.ZN BadMatch
+error results.
+The depth need not be the same as the parent,
+but the parent must not be a window of class
+.ZN InputOnly ,
+or a
+.ZN BadMatch
+error results.
+For an
+.ZN InputOnly
+window,
+the depth must be zero, and the visual must be one supported by the screen.
+If either condition is not met,
+a
+.ZN BadMatch
+error results.
+The parent window, however, may have any depth and class.
+If you specify any invalid window attribute for a window, a
+.ZN BadMatch
+error results.
+.LP
+The created window is not yet displayed (mapped) on the user's display.
+To display the window, call
+.ZN XMapWindow .
+The new window initially uses the same cursor as
+its parent.
+A new cursor can be defined for the new window by calling
+.ZN 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
+.ZN XCreateWindow
+can generate
+.ZN BadAlloc
+.ZN BadColor ,
+.ZN BadCursor ,
+.ZN BadMatch ,
+.ZN BadPixmap ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XCreateSimpleWindow
+function creates an unmapped
+.ZN InputOutput
+subwindow for a specified parent window, returns the
+window ID of the created window, and causes the X server to generate a
+.ZN 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
+.ZN InputOnly
+window must be zero, or a
+.ZN BadMatch
+error results.
+.ZN XCreateSimpleWindow
+inherits its depth, class, and visual from its parent.
+All other window attributes, except background and border,
+have their default values.
+.LP
+.ZN XCreateSimpleWindow
+can generate
+.ZN BadAlloc ,
+.ZN BadMatch ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.SH STRUCTURES
+The
+.ZN XSetWindow Attributes
+structure contains:
+.LP
+.LP
+/\&* Window attribute value mask bits */
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+\&#define
+T} T{
+.ZN CWBackPixmap
+T} T{
+(1L<<0)
+T}
+T{
+\&#define
+T} T{
+.ZN CWBackPixel
+T} T{
+(1L<<1)
+T}
+T{
+\&#define
+T} T{
+.ZN CWBorderPixmap
+T} T{
+(1L<<2)
+T}
+T{
+\&#define
+T} T{
+.ZN CWBorderPixel
+T} T{
+(1L<<3)
+T}
+T{
+\&#define
+T} T{
+.ZN CWBitGravity
+T} T{
+(1L<<4)
+T}
+T{
+\&#define
+T} T{
+.ZN CWWinGravity
+T} T{
+(1L<<5)
+T}
+T{
+\&#define
+T} T{
+.ZN CWBackingStore
+T} T{
+(1L<<6)
+T}
+T{
+\&#define
+T} T{
+.ZN CWBackingPlanes
+T} T{
+(1L<<7)
+T}
+T{
+\&#define
+T} T{
+.ZN CWBackingPixel
+T} T{
+(1L<<8)
+T}
+T{
+\&#define
+T} T{
+.ZN CWOverrideRedirect
+T} T{
+(1L<<9)
+T}
+T{
+\&#define
+T} T{
+.ZN CWSaveUnder
+T} T{
+(1L<<10)
+T}
+T{
+\&#define
+T} T{
+.ZN CWEventMask
+T} T{
+(1L<<11)
+T}
+T{
+\&#define
+T} T{
+.ZN CWDontPropagate
+T} T{
+(1L<<12)
+T}
+T{
+\&#define
+T} T{
+.ZN CWColormap
+T} T{
+(1L<<13)
+T}
+T{
+\&#define
+T} T{
+.ZN 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
+For a detailed explanation of the members of this structure,
+see \fI\*(xL\fP\^.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.TP 1i
+.ZN BadCursor
+A value for a Cursor argument does not name a defined Cursor.
+.TP 1i
+.ZN BadMatch
+The values do not exist for an
+.ZN InputOnly
+window.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadPixmap
+A value for a Pixmap argument does not name a defined Pixmap.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XChangeWindowAttributes(__libmansuffix__),
+XConfigureWindow(__libmansuffix__),
+XDefineCursor(__libmansuffix__),
+XDestroyWindow(__libmansuffix__),
+XMapWindow(__libmansuffix__),
+XRaiseWindow(__libmansuffix__),
+XUnmapWindow(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCreateWindowEvent.man b/libX11/man/XCreateWindowEvent.man
index 410a1fb69..1c32b7def 100644
--- a/libX11/man/XCreateWindowEvent.man
+++ b/libX11/man/XCreateWindowEvent.man
@@ -1,229 +1,229 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCreateWindowEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCreateWindowEvent \- CreateNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN CreateNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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
-.ZN True .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCreateWindowEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCreateWindowEvent \- CreateNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN CreateNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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
+.ZN True .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XCrossingEvent.man b/libX11/man/XCrossingEvent.man
index 9603105e0..d7603a00a 100644
--- a/libX11/man/XCrossingEvent.man
+++ b/libX11/man/XCrossingEvent.man
@@ -1,326 +1,326 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCrossingEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XCrossingEvent \- EnterNotify and LeaveNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN EnterNotify
-and
-.ZN LeaveNotify
-events contains:
-.LP
-.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
-When you receive these events,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 window member is set to the window on which the
-.ZN EnterNotify
-or
-.ZN 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
-.ZN 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
-.ZN None .
-For an
-.ZN EnterNotify
-event, if a child of the event window contains the final pointer position,
-the subwindow component is set to that child or
-.ZN 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
-.ZN True
-or
-.ZN False .
-If
-.ZN True ,
-the event and root windows are on the same screen.
-If
-.ZN 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
-.ZN True
-or
-.ZN False .
-If
-.ZN True ,
-the event window is the focus window or an inferior of the focus window.
-If
-.ZN 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:
-.ZN Button1Mask ,
-.ZN Button2Mask ,
-.ZN Button3Mask ,
-.ZN Button4Mask ,
-.ZN Button5Mask ,
-.ZN ShiftMask ,
-.ZN LockMask ,
-.ZN ControlMask ,
-.ZN Mod1Mask ,
-.ZN Mod2Mask ,
-.ZN Mod3Mask ,
-.ZN Mod4Mask ,
-.ZN 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
-.ZN NotifyNormal ,
-.ZN NotifyGrab ,
-or
-.ZN NotifyUngrab .
-.LP
-The detail member is set to indicate the notify detail and can be
-.ZN NotifyAncestor ,
-.ZN NotifyVirtual ,
-.ZN NotifyInferior ,
-.ZN NotifyNonlinear ,
-or
-.ZN NotifyNonlinearVirtual .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCrossingEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XCrossingEvent \- EnterNotify and LeaveNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN EnterNotify
+and
+.ZN LeaveNotify
+events contains:
+.LP
+.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
+When you receive these events,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 window member is set to the window on which the
+.ZN EnterNotify
+or
+.ZN 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
+.ZN 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
+.ZN None .
+For an
+.ZN EnterNotify
+event, if a child of the event window contains the final pointer position,
+the subwindow component is set to that child or
+.ZN 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
+.ZN True
+or
+.ZN False .
+If
+.ZN True ,
+the event and root windows are on the same screen.
+If
+.ZN 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
+.ZN True
+or
+.ZN False .
+If
+.ZN True ,
+the event window is the focus window or an inferior of the focus window.
+If
+.ZN 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:
+.ZN Button1Mask ,
+.ZN Button2Mask ,
+.ZN Button3Mask ,
+.ZN Button4Mask ,
+.ZN Button5Mask ,
+.ZN ShiftMask ,
+.ZN LockMask ,
+.ZN ControlMask ,
+.ZN Mod1Mask ,
+.ZN Mod2Mask ,
+.ZN Mod3Mask ,
+.ZN Mod4Mask ,
+.ZN 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
+.ZN NotifyNormal ,
+.ZN NotifyGrab ,
+or
+.ZN NotifyUngrab .
+.LP
+The detail member is set to indicate the notify detail and can be
+.ZN NotifyAncestor ,
+.ZN NotifyVirtual ,
+.ZN NotifyInferior ,
+.ZN NotifyNonlinear ,
+or
+.ZN NotifyNonlinearVirtual .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XDefineCursor.man b/libX11/man/XDefineCursor.man
index 21e605dff..00166e5ca 100644
--- a/libX11/man/XDefineCursor.man
+++ b/libX11/man/XDefineCursor.man
@@ -1,201 +1,201 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XDefineCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XDefineCursor, XUndefineCursor \- define cursors
-.SH SYNTAX
-.HP
-int XDefineCursor\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Cursor
-\fIcursor\fP\^);
-.HP
-int XUndefineCursor\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
-.SH ARGUMENTS
-.IP \fIcursor\fP 1i
-Specifies the cursor that is to be displayed or
-.ZN None .
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-If a cursor is set, it will be used when the pointer is in the window.
-If the cursor is
-.ZN None ,
-it is equivalent to
-.ZN XUndefineCursor .
-.LP
-.ZN XDefineCursor
-can generate
-.ZN BadCursor
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XUndefineCursor
-function undoes the effect of a previous
-.ZN 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
-.ZN XUndefineCursor
-can generate a
-.ZN BadWindow
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadCursor
-A value for a Cursor argument does not name a defined Cursor.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XCreateFontCursor(__libmansuffix__),
-XRecolorCursor(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XDefineCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XDefineCursor, XUndefineCursor \- define cursors
+.SH SYNTAX
+.HP
+int XDefineCursor\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Cursor
+\fIcursor\fP\^);
+.HP
+int XUndefineCursor\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
+.SH ARGUMENTS
+.IP \fIcursor\fP 1i
+Specifies the cursor that is to be displayed or
+.ZN None .
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+If a cursor is set, it will be used when the pointer is in the window.
+If the cursor is
+.ZN None ,
+it is equivalent to
+.ZN XUndefineCursor .
+.LP
+.ZN XDefineCursor
+can generate
+.ZN BadCursor
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XUndefineCursor
+function undoes the effect of a previous
+.ZN 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
+.ZN XUndefineCursor
+can generate a
+.ZN BadWindow
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadCursor
+A value for a Cursor argument does not name a defined Cursor.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XCreateFontCursor(__libmansuffix__),
+XRecolorCursor(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XDestroyWindow.man b/libX11/man/XDestroyWindow.man
index aec3c8967..e448405d5 100644
--- a/libX11/man/XDestroyWindow.man
+++ b/libX11/man/XDestroyWindow.man
@@ -1,217 +1,217 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XDestroyWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XDestroyWindow, XDestroySubwindows \- destroy windows
-.SH SYNTAX
-.HP
-int XDestroyWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
-.HP
-int XDestroySubwindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-The
-.ZN XDestroyWindow
-function destroys the specified window as well as all of its subwindows and causes
-the X server to generate a
-.ZN 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
-.ZN DestroyNotify
-events is such that for any given window being destroyed,
-.ZN 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
-.ZN Expose
-events on other windows that were obscured by the window being destroyed.
-.LP
-.ZN XDestroyWindow
-can generate a
-.ZN BadWindow
-error.
-.LP
-The
-.ZN XDestroySubwindows
-function destroys all inferior windows of the specified window,
-in bottom-to-top stacking order.
-It causes the X server to generate a
-.ZN DestroyNotify
-event for each window.
-If any mapped
-subwindows were actually destroyed,
-.ZN XDestroySubwindows
-causes the X server to generate
-.ZN 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
-.ZN XDestroySubwindows
-can generate a
-.ZN BadWindow
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XChangeWindowAttributes(__libmansuffix__),
-XConfigureWindow(__libmansuffix__),
-XCreateWindow(__libmansuffix__),
-XMapWindow(__libmansuffix__),
-XRaiseWindow(__libmansuffix__),
-XUnmapWindow(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XDestroyWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XDestroyWindow, XDestroySubwindows \- destroy windows
+.SH SYNTAX
+.HP
+int XDestroyWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
+.HP
+int XDestroySubwindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+The
+.ZN XDestroyWindow
+function destroys the specified window as well as all of its subwindows and causes
+the X server to generate a
+.ZN 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
+.ZN DestroyNotify
+events is such that for any given window being destroyed,
+.ZN 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
+.ZN Expose
+events on other windows that were obscured by the window being destroyed.
+.LP
+.ZN XDestroyWindow
+can generate a
+.ZN BadWindow
+error.
+.LP
+The
+.ZN XDestroySubwindows
+function destroys all inferior windows of the specified window,
+in bottom-to-top stacking order.
+It causes the X server to generate a
+.ZN DestroyNotify
+event for each window.
+If any mapped
+subwindows were actually destroyed,
+.ZN XDestroySubwindows
+causes the X server to generate
+.ZN 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
+.ZN XDestroySubwindows
+can generate a
+.ZN BadWindow
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XChangeWindowAttributes(__libmansuffix__),
+XConfigureWindow(__libmansuffix__),
+XCreateWindow(__libmansuffix__),
+XMapWindow(__libmansuffix__),
+XRaiseWindow(__libmansuffix__),
+XUnmapWindow(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XDestroyWindowEvent.man b/libX11/man/XDestroyWindowEvent.man
index 954406a91..e9f2d15ed 100644
--- a/libX11/man/XDestroyWindowEvent.man
+++ b/libX11/man/XDestroyWindowEvent.man
@@ -1,219 +1,219 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XDestroyWindowEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XDestroyWindowEvent \- DestroyNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN DestroyNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 event member is set either to the destroyed window or to its parent,
-depending on whether
-.ZN StructureNotify
-or
-.ZN SubstructureNotify
-was selected.
-The window member is set to the window that is destroyed.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XDestroyWindowEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XDestroyWindowEvent \- DestroyNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN DestroyNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 event member is set either to the destroyed window or to its parent,
+depending on whether
+.ZN StructureNotify
+or
+.ZN SubstructureNotify
+was selected.
+The window member is set to the window that is destroyed.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XDrawArc.man b/libX11/man/XDrawArc.man
index 3621d1c32..e20692ddc 100644
--- a/libX11/man/XDrawArc.man
+++ b/libX11/man/XDrawArc.man
@@ -1,339 +1,339 @@
-'\" e
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.de EX
-.sp
-.nf
-.ft CW
-..
-.de EE
-.ft R
-.fi
-.sp
-..
-'\" e
-.TH XDrawArc __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XDrawArc, XDrawArcs, XArc \- draw arcs and arc structure
-.SH SYNTAX
-.HP
-int XDrawArc\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
-int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int
-\fIheight\fP\^, int \fIangle1\fP\^, int \fIangle2\fP\^);
-.HP
-int XDrawArcs\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
-XArc *\fIarcs\fP\^, int \fInarcs\fP\^);
-.SH ARGUMENTS
-.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.
-.IP \fIarcs\fP 1i
-Specifies an array of arcs.
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fInarcs\fP 1i
-Specifies the number of arcs in the array.
-.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.
-.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.
-.SH DESCRIPTION
-.EQ
-delim %%
-.EN
-.ZN XDrawArc
-draws a single circular or elliptical arc, and
-.ZN 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,
-.ZN XDrawArc
-or
-.ZN 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
-.TS
-l l.
-%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 ]%
-.TE
-.LP
-For any given arc,
-.ZN XDrawArc
-and
-.ZN 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,
-.ZN XDrawArc
-and
-.ZN 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
-.ZN XDrawArc
-and
-.ZN XDrawArcs
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.SH STRUCTURES
-The
-.ZN XArc
-structure contains:
-.LP
-.EX
-typedef struct {
- short x, y;
- unsigned short width, height;
- short angle1, angle2; /\&* Degrees * 64 */
-} XArc;
-.EE
-.LP
-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.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.SH "SEE ALSO"
-XDrawLine(__libmansuffix__),
-XDrawPoint(__libmansuffix__),
-XDrawRectangle(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" e
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.de EX
+.sp
+.nf
+.ft CW
+..
+.de EE
+.ft R
+.fi
+.sp
+..
+'\" e
+.TH XDrawArc __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XDrawArc, XDrawArcs, XArc \- draw arcs and arc structure
+.SH SYNTAX
+.HP
+int XDrawArc\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
+int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int
+\fIheight\fP\^, int \fIangle1\fP\^, int \fIangle2\fP\^);
+.HP
+int XDrawArcs\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
+XArc *\fIarcs\fP\^, int \fInarcs\fP\^);
+.SH ARGUMENTS
+.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.
+.IP \fIarcs\fP 1i
+Specifies an array of arcs.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fInarcs\fP 1i
+Specifies the number of arcs in the array.
+.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.
+.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.
+.SH DESCRIPTION
+.EQ
+delim %%
+.EN
+.ZN XDrawArc
+draws a single circular or elliptical arc, and
+.ZN 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,
+.ZN XDrawArc
+or
+.ZN 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
+.TS
+l l.
+%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 ]%
+.TE
+.LP
+For any given arc,
+.ZN XDrawArc
+and
+.ZN 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,
+.ZN XDrawArc
+and
+.ZN 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
+.ZN XDrawArc
+and
+.ZN XDrawArcs
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.SH STRUCTURES
+The
+.ZN XArc
+structure contains:
+.LP
+.EX
+typedef struct {
+ short x, y;
+ unsigned short width, height;
+ short angle1, angle2; /\&* Degrees * 64 */
+} XArc;
+.EE
+.LP
+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.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.SH "SEE ALSO"
+XDrawLine(__libmansuffix__),
+XDrawPoint(__libmansuffix__),
+XDrawRectangle(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XDrawImageString.man b/libX11/man/XDrawImageString.man
index 480e2d4e3..43329baf4 100644
--- a/libX11/man/XDrawImageString.man
+++ b/libX11/man/XDrawImageString.man
@@ -1,252 +1,252 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XDrawImageString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XDrawImageString, XDrawImageString16 \- draw image text
-.SH SYNTAX
-.HP
-int XDrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char *\fIstring\fP\^, int
-\fIlength\fP\^);
-.HP
-int XDrawImageString16\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XChar2b *\fIstring\fP\^, int
-\fIlength\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIlength\fP 1i
-Specifies the number of characters in the string argument.
-.IP \fIstring\fP 1i
-Specifies the character string.
-.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.
-.SH DESCRIPTION
-The
-.ZN XDrawImageString16
-function is similar to
-.ZN 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
-.ZN XQueryTextExtents
-using gc and string.
-The function and fill-style defined in the GC are ignored for these functions.
-The effective function is
-.ZN GXcopy ,
-and the effective fill-style is
-.ZN FillSolid .
-.LP
-For fonts defined with 2-byte matrix indexing
-and used with
-.ZN 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
-.ZN XDrawImageString
-and
-.ZN XDrawImageString16
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.SH "SEE ALSO"
-XDrawString(__libmansuffix__),
-XDrawText(__libmansuffix__),
-XLoadFont(__libmansuffix__),
-XTextExtents(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XDrawImageString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XDrawImageString, XDrawImageString16 \- draw image text
+.SH SYNTAX
+.HP
+int XDrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char *\fIstring\fP\^, int
+\fIlength\fP\^);
+.HP
+int XDrawImageString16\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XChar2b *\fIstring\fP\^, int
+\fIlength\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIlength\fP 1i
+Specifies the number of characters in the string argument.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.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.
+.SH DESCRIPTION
+The
+.ZN XDrawImageString16
+function is similar to
+.ZN 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
+.ZN XQueryTextExtents
+using gc and string.
+The function and fill-style defined in the GC are ignored for these functions.
+The effective function is
+.ZN GXcopy ,
+and the effective fill-style is
+.ZN FillSolid .
+.LP
+For fonts defined with 2-byte matrix indexing
+and used with
+.ZN 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
+.ZN XDrawImageString
+and
+.ZN XDrawImageString16
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.SH "SEE ALSO"
+XDrawString(__libmansuffix__),
+XDrawText(__libmansuffix__),
+XLoadFont(__libmansuffix__),
+XTextExtents(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XDrawLine.man b/libX11/man/XDrawLine.man
index 8f22ecf4b..2cc293bdf 100644
--- a/libX11/man/XDrawLine.man
+++ b/libX11/man/XDrawLine.man
@@ -1,308 +1,308 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XDrawLine __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XDrawLine, XDrawLines, XDrawSegments, XSegment \- draw lines, polygons, and line structure
-.SH SYNTAX
-.HP
-int XDrawLine\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
-int \fIx1\fP\^, int \fIy1\fP\^, int \fIx2\fP\^, int \fIy2\fP\^);
-.HP
-int XDrawLines\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, XPoint *\fIpoints\fP\^, int \fInpoints\fP\^, int \fImode\fP\^);
-.HP
-int XDrawSegments\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, XSegment *\fIsegments\fP\^, int \fInsegments\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fImode\fP 1i
-Specifies the coordinate mode.
-You can pass
-.ZN CoordModeOrigin
-or
-.ZN CoordModePrevious .
-.IP \fInpoints\fP 1i
-Specifies the number of points in the array.
-.IP \fInsegments\fP 1i
-Specifies the number of segments in the array.
-.IP \fIpoints\fP 1i
-Specifies an array of points.
-.IP \fIsegments\fP 1i
-Specifies an array of segments.
-.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.
-.SH DESCRIPTION
-The
-.ZN 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,
-.ZN XDrawLine
-does not draw a pixel more than once.
-If lines intersect, the intersecting pixels are drawn multiple times.
-.LP
-The
-.ZN 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
-.ZN 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,
-.ZN 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
-.ZN PolyLine
-protocol request were a single, filled shape.
-.ZN CoordModeOrigin
-treats all coordinates as relative to the origin,
-and
-.ZN CoordModePrevious
-treats all coordinates after the first as relative to the previous point.
-.LP
-The
-.ZN XDrawSegments
-function draws multiple, unconnected lines.
-For each segment,
-.ZN XDrawSegments
-draws a
-line between (x1, y1) and (x2, y2).
-It draws the lines in the order listed in the array of
-.ZN XSegment
-structures and does not perform joining at coincident endpoints.
-For any given line,
-.ZN 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
-.ZN 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
-.ZN XDrawLine ,
-.ZN XDrawLines ,
-and
-.ZN XDrawSegments
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.ZN XDrawLines
-can also generate a
-.ZN BadValue
-error.
-.SH STRUCTURES
-The
-.ZN XSegment
-structure contains:
-.LP
-.Ds 0
-.TA .5i
-.ta .5i
-typedef struct {
- short x1, y1, x2, y2;
-} XSegment;
-.De
-.LP
-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.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XDrawArc(__libmansuffix__),
-XDrawPoint(__libmansuffix__),
-XDrawRectangle(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XDrawLine __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XDrawLine, XDrawLines, XDrawSegments, XSegment \- draw lines, polygons, and line structure
+.SH SYNTAX
+.HP
+int XDrawLine\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
+int \fIx1\fP\^, int \fIy1\fP\^, int \fIx2\fP\^, int \fIy2\fP\^);
+.HP
+int XDrawLines\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, XPoint *\fIpoints\fP\^, int \fInpoints\fP\^, int \fImode\fP\^);
+.HP
+int XDrawSegments\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, XSegment *\fIsegments\fP\^, int \fInsegments\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fImode\fP 1i
+Specifies the coordinate mode.
+You can pass
+.ZN CoordModeOrigin
+or
+.ZN CoordModePrevious .
+.IP \fInpoints\fP 1i
+Specifies the number of points in the array.
+.IP \fInsegments\fP 1i
+Specifies the number of segments in the array.
+.IP \fIpoints\fP 1i
+Specifies an array of points.
+.IP \fIsegments\fP 1i
+Specifies an array of segments.
+.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.
+.SH DESCRIPTION
+The
+.ZN 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,
+.ZN XDrawLine
+does not draw a pixel more than once.
+If lines intersect, the intersecting pixels are drawn multiple times.
+.LP
+The
+.ZN 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
+.ZN 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,
+.ZN 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
+.ZN PolyLine
+protocol request were a single, filled shape.
+.ZN CoordModeOrigin
+treats all coordinates as relative to the origin,
+and
+.ZN CoordModePrevious
+treats all coordinates after the first as relative to the previous point.
+.LP
+The
+.ZN XDrawSegments
+function draws multiple, unconnected lines.
+For each segment,
+.ZN XDrawSegments
+draws a
+line between (x1, y1) and (x2, y2).
+It draws the lines in the order listed in the array of
+.ZN XSegment
+structures and does not perform joining at coincident endpoints.
+For any given line,
+.ZN 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
+.ZN 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
+.ZN XDrawLine ,
+.ZN XDrawLines ,
+and
+.ZN XDrawSegments
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.ZN XDrawLines
+can also generate a
+.ZN BadValue
+error.
+.SH STRUCTURES
+The
+.ZN XSegment
+structure contains:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ short x1, y1, x2, y2;
+} XSegment;
+.De
+.LP
+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.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XDrawArc(__libmansuffix__),
+XDrawPoint(__libmansuffix__),
+XDrawRectangle(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XDrawPoint.man b/libX11/man/XDrawPoint.man
index ca0e0b918..d326d3166 100644
--- a/libX11/man/XDrawPoint.man
+++ b/libX11/man/XDrawPoint.man
@@ -1,252 +1,252 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XDrawPoint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XDrawPoint, XDrawPoints, XPoint \- draw points and points structure
-.SH SYNTAX
-.HP
-int XDrawPoint\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^);
-.HP
-int XDrawPoints\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, XPoint *\fIpoints\fP\^, int \fInpoints\fP\^, int \fImode\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fImode\fP 1i
-Specifies the coordinate mode.
-You can pass
-.ZN CoordModeOrigin
-or
-.ZN CoordModePrevious .
-.IP \fInpoints\fP 1i
-Specifies the number of points in the array.
-.IP \fIpoints\fP 1i
-Specifies an array of points.
-.IP \fIx\fP 1i
-.br
-.ns
-.IP \fIy\fP 1i
-Specify the x and y coordinates where you want the point drawn.
-.SH DESCRIPTION
-The
-.ZN XDrawPoint
-function uses the foreground pixel and function components of the
-GC to draw a single point into the specified drawable;
-.ZN XDrawPoints
-draws multiple points this way.
-.ZN CoordModeOrigin
-treats all coordinates as relative to the origin,
-and
-.ZN CoordModePrevious
-treats all coordinates after the first as relative to the previous point.
-.ZN 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
-.ZN XDrawPoint
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.ZN XDrawPoints
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-.ZN BadMatch ,
-and
-.ZN BadValue
-errors.
-.SH STRUCTURES
-The
-.ZN XPoint
-structure contains:
-.LP
-.Ds 0
-.TA .5i
-.ta .5i
-typedef struct {
- short x, y;
-} XPoint;
-.De
-.LP
-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.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XDrawArc(__libmansuffix__),
-XDrawLine(__libmansuffix__),
-XDrawRectangle(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XDrawPoint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XDrawPoint, XDrawPoints, XPoint \- draw points and points structure
+.SH SYNTAX
+.HP
+int XDrawPoint\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^);
+.HP
+int XDrawPoints\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, XPoint *\fIpoints\fP\^, int \fInpoints\fP\^, int \fImode\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fImode\fP 1i
+Specifies the coordinate mode.
+You can pass
+.ZN CoordModeOrigin
+or
+.ZN CoordModePrevious .
+.IP \fInpoints\fP 1i
+Specifies the number of points in the array.
+.IP \fIpoints\fP 1i
+Specifies an array of points.
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates where you want the point drawn.
+.SH DESCRIPTION
+The
+.ZN XDrawPoint
+function uses the foreground pixel and function components of the
+GC to draw a single point into the specified drawable;
+.ZN XDrawPoints
+draws multiple points this way.
+.ZN CoordModeOrigin
+treats all coordinates as relative to the origin,
+and
+.ZN CoordModePrevious
+treats all coordinates after the first as relative to the previous point.
+.ZN 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
+.ZN XDrawPoint
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.ZN XDrawPoints
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+.ZN BadMatch ,
+and
+.ZN BadValue
+errors.
+.SH STRUCTURES
+The
+.ZN XPoint
+structure contains:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ short x, y;
+} XPoint;
+.De
+.LP
+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.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XDrawArc(__libmansuffix__),
+XDrawLine(__libmansuffix__),
+XDrawRectangle(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XDrawRectangle.man b/libX11/man/XDrawRectangle.man
index 13838256e..9d5e19cba 100644
--- a/libX11/man/XDrawRectangle.man
+++ b/libX11/man/XDrawRectangle.man
@@ -1,252 +1,252 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XDrawRectangle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XDrawRectangle, XDrawRectangles, XRectangle \- draw rectangles and rectangles structure
-.SH SYNTAX
-.HP
-int XDrawRectangle\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned
-int \fIheight\fP\^);
-.HP
-int XDrawRectangles\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, XRectangle \fIrectangles\fP\^[\^]\^, int \fInrectangles\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fInrectangles\fP 1i
-Specifies the number of rectangles in the array.
-.IP \fIrectangles\fP 1i
-Specifies an array of rectangles.
-.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.
-.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.
-.SH DESCRIPTION
-The
-.ZN XDrawRectangle
-and
-.ZN XDrawRectangles
-functions draw the outlines of the specified rectangle or rectangles as
-if a five-point
-.ZN 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.
-.ZN 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
-.ZN XDrawRectangle
-and
-.ZN XDrawRectangles
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.SH STRUCTURES
-The
-.ZN XRectangle
-structure contains:
-.LP
-.Ds 0
-.TA .5i
-.ta .5i
-typedef struct {
- short x, y;
- unsigned short width, height;
-} XRectangle;
-.De
-.LP
-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.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.SH "SEE ALSO"
-XDrawArc(__libmansuffix__),
-XDrawLine(__libmansuffix__),
-XDrawPoint(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XDrawRectangle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XDrawRectangle, XDrawRectangles, XRectangle \- draw rectangles and rectangles structure
+.SH SYNTAX
+.HP
+int XDrawRectangle\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned
+int \fIheight\fP\^);
+.HP
+int XDrawRectangles\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, XRectangle \fIrectangles\fP\^[\^]\^, int \fInrectangles\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fInrectangles\fP 1i
+Specifies the number of rectangles in the array.
+.IP \fIrectangles\fP 1i
+Specifies an array of rectangles.
+.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.
+.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.
+.SH DESCRIPTION
+The
+.ZN XDrawRectangle
+and
+.ZN XDrawRectangles
+functions draw the outlines of the specified rectangle or rectangles as
+if a five-point
+.ZN 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.
+.ZN 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
+.ZN XDrawRectangle
+and
+.ZN XDrawRectangles
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.SH STRUCTURES
+The
+.ZN XRectangle
+structure contains:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ short x, y;
+ unsigned short width, height;
+} XRectangle;
+.De
+.LP
+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.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.SH "SEE ALSO"
+XDrawArc(__libmansuffix__),
+XDrawLine(__libmansuffix__),
+XDrawPoint(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XDrawString.man b/libX11/man/XDrawString.man
index d9a9d35b5..71cd9f1b3 100644
--- a/libX11/man/XDrawString.man
+++ b/libX11/man/XDrawString.man
@@ -1,218 +1,218 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XDrawString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XDrawString, XDrawString16 \- draw text characters
-.SH SYNTAX
-.HP
-int XDrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char *\fIstring\fP\^, int
-\fIlength\fP\^);
-.HP
-int XDrawString16\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XChar2b *\fIstring\fP\^, int
-\fIlength\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIlength\fP 1i
-Specifies the number of characters in the string argument.
-.IP \fIstring\fP 1i
-Specifies the character string.
-.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.
-.SH DESCRIPTION
-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
-.ZN 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
-.ZN XDrawString
-and
-.ZN XDrawString16
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.SH "SEE ALSO"
-XDrawImageString(__libmansuffix__),
-XDrawText(__libmansuffix__),
-XLoadFont(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XDrawString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XDrawString, XDrawString16 \- draw text characters
+.SH SYNTAX
+.HP
+int XDrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char *\fIstring\fP\^, int
+\fIlength\fP\^);
+.HP
+int XDrawString16\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XChar2b *\fIstring\fP\^, int
+\fIlength\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIlength\fP 1i
+Specifies the number of characters in the string argument.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.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.
+.SH DESCRIPTION
+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
+.ZN 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
+.ZN XDrawString
+and
+.ZN XDrawString16
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.SH "SEE ALSO"
+XDrawImageString(__libmansuffix__),
+XDrawText(__libmansuffix__),
+XLoadFont(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XDrawText.man b/libX11/man/XDrawText.man
index 132ea9737..e8a9094ea 100644
--- a/libX11/man/XDrawText.man
+++ b/libX11/man/XDrawText.man
@@ -1,289 +1,289 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XDrawText __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XDrawText, XDrawText16, XTextItem, XTextItem16 \- draw polytext text and text drawing structures
-.SH SYNTAX
-.HP
-int XDrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
-int \fIx\fP\^, int \fIy\fP\^, XTextItem *\fIitems\fP\^, int \fInitems\fP\^);
-.HP
-int XDrawText16\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XTextItem16 *\fIitems\fP\^, int
-\fInitems\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIitems\fP 1i
-Specifies an array of text items.
-.IP \fInitems\fP 1i
-Specifies the number of text items in the array.
-.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.
-.SH DESCRIPTION
-The
-.ZN XDrawText16
-function is similar to
-.ZN 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
-.ZN 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
-.ZN BadFont
-error, the previous text items may have been drawn.
-.LP
-For fonts defined with linear indexing rather than 2-byte matrix indexing,
-each
-.ZN 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
-.ZN XDrawText
-and
-.ZN XDrawText16
-can generate
-.ZN BadDrawable ,
-.ZN BadFont ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.SH STRUCTURES
-The
-.ZN XTextItem
-and
-.ZN XTextItem16
-structures contain:
-.LP
-.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
-.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
-If the font member is not
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN XFontStruct
-structure.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadFont
-A value for a Font or GContext argument does not name a defined Font.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.SH "SEE ALSO"
-XDrawImageString(__libmansuffix__),
-XDrawString(__libmansuffix__),
-XLoadFont(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XDrawText __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XDrawText, XDrawText16, XTextItem, XTextItem16 \- draw polytext text and text drawing structures
+.SH SYNTAX
+.HP
+int XDrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
+int \fIx\fP\^, int \fIy\fP\^, XTextItem *\fIitems\fP\^, int \fInitems\fP\^);
+.HP
+int XDrawText16\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XTextItem16 *\fIitems\fP\^, int
+\fInitems\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIitems\fP 1i
+Specifies an array of text items.
+.IP \fInitems\fP 1i
+Specifies the number of text items in the array.
+.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.
+.SH DESCRIPTION
+The
+.ZN XDrawText16
+function is similar to
+.ZN 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
+.ZN 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
+.ZN BadFont
+error, the previous text items may have been drawn.
+.LP
+For fonts defined with linear indexing rather than 2-byte matrix indexing,
+each
+.ZN 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
+.ZN XDrawText
+and
+.ZN XDrawText16
+can generate
+.ZN BadDrawable ,
+.ZN BadFont ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.SH STRUCTURES
+The
+.ZN XTextItem
+and
+.ZN XTextItem16
+structures contain:
+.LP
+.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
+.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
+If the font member is not
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN XFontStruct
+structure.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadFont
+A value for a Font or GContext argument does not name a defined Font.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.SH "SEE ALSO"
+XDrawImageString(__libmansuffix__),
+XDrawString(__libmansuffix__),
+XLoadFont(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XEmptyRegion.man b/libX11/man/XEmptyRegion.man
index bc00d4c22..dab972c23 100644
--- a/libX11/man/XEmptyRegion.man
+++ b/libX11/man/XEmptyRegion.man
@@ -1,209 +1,209 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XEmptyRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XEmptyRegion, XEqualRegion, XPointInRegion, XRectInRegion \- determine if regions are empty or equal
-.SH SYNTAX
-.HP
-Bool XEmptyRegion\^(\^Region \fIr\fP\^);
-.HP
-Bool XEqualRegion\^(\^Region \fIr1\fP\^, Region \fIr2\fP\^);
-.HP
-Bool XPointInRegion\^(\^Region \fIr\fP\^, int \fIx\fP\^, int \fIy\fP\^);
-.HP
-int XRectInRegion\^(\^Region \fIr\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned
-int \fIwidth\fP\^, unsigned int \fIheight\fP\^);
-.SH ARGUMENTS
-.IP \fIr\fP 1i
-Specifies the region.
-.IP \fIr1\fP 1i
-.br
-.ns
-.IP \fIr2\fP 1i
-Specify the two regions.
-.ds Wh , which define the rectangle
-.IP \fIwidth\fP 1i
-.br
-.ns
-.IP \fIheight\fP 1i
-Specify the width and height\*(Wh.
-.ds Xy , which define the point \
-or 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.
-.SH DESCRIPTION
-The
-.ZN XEmptyRegion
-function returns
-.ZN True
-if the region is empty.
-.LP
-The
-.ZN XEqualRegion
-function returns
-.ZN True
-if the two regions have the same offset, size, and shape.
-.LP
-The
-.ZN XPointInRegion
-function returns
-.ZN True
-if the point (x, y) is contained in the region r.
-.LP
-The
-.ZN XRectInRegion
-function returns
-.ZN RectangleIn
-if the rectangle is entirely in the specified region,
-.ZN RectangleOut
-if the rectangle is entirely out of the specified region,
-and
-.ZN RectanglePart
-if the rectangle is partially in the specified region.
-.SH "SEE ALSO"
-XCreateRegion(__libmansuffix__),
-XIntersectRegion(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XEmptyRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XEmptyRegion, XEqualRegion, XPointInRegion, XRectInRegion \- determine if regions are empty or equal
+.SH SYNTAX
+.HP
+Bool XEmptyRegion\^(\^Region \fIr\fP\^);
+.HP
+Bool XEqualRegion\^(\^Region \fIr1\fP\^, Region \fIr2\fP\^);
+.HP
+Bool XPointInRegion\^(\^Region \fIr\fP\^, int \fIx\fP\^, int \fIy\fP\^);
+.HP
+int XRectInRegion\^(\^Region \fIr\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned
+int \fIwidth\fP\^, unsigned int \fIheight\fP\^);
+.SH ARGUMENTS
+.IP \fIr\fP 1i
+Specifies the region.
+.IP \fIr1\fP 1i
+.br
+.ns
+.IP \fIr2\fP 1i
+Specify the two regions.
+.ds Wh , which define the rectangle
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.ds Xy , which define the point \
+or 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.
+.SH DESCRIPTION
+The
+.ZN XEmptyRegion
+function returns
+.ZN True
+if the region is empty.
+.LP
+The
+.ZN XEqualRegion
+function returns
+.ZN True
+if the two regions have the same offset, size, and shape.
+.LP
+The
+.ZN XPointInRegion
+function returns
+.ZN True
+if the point (x, y) is contained in the region r.
+.LP
+The
+.ZN XRectInRegion
+function returns
+.ZN RectangleIn
+if the rectangle is entirely in the specified region,
+.ZN RectangleOut
+if the rectangle is entirely out of the specified region,
+and
+.ZN RectanglePart
+if the rectangle is partially in the specified region.
+.SH "SEE ALSO"
+XCreateRegion(__libmansuffix__),
+XIntersectRegion(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XErrorEvent.man b/libX11/man/XErrorEvent.man
index 37bb0206f..dde564fa8 100644
--- a/libX11/man/XErrorEvent.man
+++ b/libX11/man/XErrorEvent.man
@@ -1,203 +1,203 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XErrorEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XErrorEvent \- X error event structure
-.SH STRUCTURES
-The
-.ZN XErrorEvent
-structure contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-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
-.ZN 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 .
-.SH "SEE ALSO"
-AllPlanes(__libmansuffix__),
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XErrorEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XErrorEvent \- X error event structure
+.SH STRUCTURES
+The
+.ZN XErrorEvent
+structure contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+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
+.ZN 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 .
+.SH "SEE ALSO"
+AllPlanes(__libmansuffix__),
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XExposeEvent.man b/libX11/man/XExposeEvent.man
index ea2eef77e..500786c02 100644
--- a/libX11/man/XExposeEvent.man
+++ b/libX11/man/XExposeEvent.man
@@ -1,232 +1,232 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XExposeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XExposeEvent \- Expose event structure
-.SH STRUCTURES
-The structure for
-.ZN Expose
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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
-.ZN Expose
-events that are to follow.
-If count is zero, no more
-.ZN Expose
-events follow for this window.
-However, if count is nonzero, at least that number of
-.ZN 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
-.ZN Expose
-events with nonzero counts and perform full redisplays
-on events with zero counts.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XExposeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XExposeEvent \- Expose event structure
+.SH STRUCTURES
+The structure for
+.ZN Expose
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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
+.ZN Expose
+events that are to follow.
+If count is zero, no more
+.ZN Expose
+events follow for this window.
+However, if count is nonzero, at least that number of
+.ZN 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
+.ZN Expose
+events with nonzero counts and perform full redisplays
+on events with zero counts.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XExtentsOfFontSet.man b/libX11/man/XExtentsOfFontSet.man
index 22427294c..96c58faab 100644
--- a/libX11/man/XExtentsOfFontSet.man
+++ b/libX11/man/XExtentsOfFontSet.man
@@ -1,173 +1,173 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XExtentsOfFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XExtentsOfFontSet \- obtain the maximum extents structure for a font set
-.SH SYNTAX
-.HP
-XFontSetExtents *XExtentsOfFontSet\^(\^XFontSet \fIfont_set\fP\^);
-.SH ARGUMENTS
-.IP \fIfont_set\fP 1i
-Specifies the font set.
-.SH DESCRIPTION
-The
-.ZN XExtentsOfFontSet
-function returns an
-.ZN XFontSetExtents
-structure for the fonts used by the Xmb and Xwc layers
-for the given font set.
-.LP
-The
-.ZN XFontSetExtents
-structure is owned by Xlib and should not be modified
-or freed by the client.
-It will be freed by a call to
-.ZN XFreeFontSet
-with the associated
-.ZN XFontSet .
-Until freed, its contents will not be modified by Xlib.
-.SH "SEE ALSO"
-XCreateFontSet(__libmansuffix__),
-XFontsOfFontSet(__libmansuffix__),
-XFontSetExtents(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XExtentsOfFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XExtentsOfFontSet \- obtain the maximum extents structure for a font set
+.SH SYNTAX
+.HP
+XFontSetExtents *XExtentsOfFontSet\^(\^XFontSet \fIfont_set\fP\^);
+.SH ARGUMENTS
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.SH DESCRIPTION
+The
+.ZN XExtentsOfFontSet
+function returns an
+.ZN XFontSetExtents
+structure for the fonts used by the Xmb and Xwc layers
+for the given font set.
+.LP
+The
+.ZN XFontSetExtents
+structure is owned by Xlib and should not be modified
+or freed by the client.
+It will be freed by a call to
+.ZN XFreeFontSet
+with the associated
+.ZN XFontSet .
+Until freed, its contents will not be modified by Xlib.
+.SH "SEE ALSO"
+XCreateFontSet(__libmansuffix__),
+XFontsOfFontSet(__libmansuffix__),
+XFontSetExtents(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XFillRectangle.man b/libX11/man/XFillRectangle.man
index 3ae9ce3ff..70843f906 100644
--- a/libX11/man/XFillRectangle.man
+++ b/libX11/man/XFillRectangle.man
@@ -1,394 +1,394 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XFillRectangle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XFillRectangle, XFillRectangles, XFillPolygon, XFillArc, XFillArcs \- fill rectangles, polygons, or arcs
-.SH SYNTAX
-.HP
-int XFillRectangle\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned
-int \fIheight\fP\^);
-.HP
-int XFillRectangles\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, XRectangle *\fIrectangles\fP\^, int \fInrectangles\fP\^);
-.HP
-int XFillPolygon\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, XPoint *\fIpoints\fP\^, int \fInpoints\fP\^, int \fIshape\fP\^,
-int \fImode\fP\^);
-.HP
-int XFillArc\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
-int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int
-\fIheight\fP\^, int \fIangle1\fP\^, int \fIangle2\fP\^);
-.HP
-int XFillArcs\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
-XArc *\fIarcs\fP\^, int \fInarcs\fP\^);
-.SH ARGUMENTS
-.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.
-.IP \fIarcs\fP 1i
-Specifies an array of arcs.
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fImode\fP 1i
-Specifies the coordinate mode.
-You can pass
-.ZN CoordModeOrigin
-or
-.ZN CoordModePrevious .
-.IP \fInarcs\fP 1i
-Specifies the number of arcs in the array.
-.IP \fInpoints\fP 1i
-Specifies the number of points in the array.
-.IP \fInrectangles\fP 1i
-Specifies the number of rectangles in the array.
-.IP \fIpoints\fP 1i
-Specifies an array of points.
-.IP \fIrectangles\fP 1i
-Specifies an array of rectangles.
-.IP \fIshape\fP 1i
-Specifies a shape that helps the server to improve performance.
-You can pass
-.ZN Complex ,
-.ZN Convex ,
-or
-.ZN Nonconvex .
-.ds Wh , which are the dimensions of the rectangle to be filled \
-or the major and minor axes of the arc
-.IP \fIwidth\fP 1i
-.br
-.ns
-.IP \fIheight\fP 1i
-Specify the width and height\*(Wh.
-.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.
-.SH DESCRIPTION
-The
-.ZN XFillRectangle
-and
-.ZN XFillRectangles
-functions fill the specified rectangle or rectangles
-as if a four-point
-.ZN 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
-.ZN XFillRectangles
-fills the rectangles in the order listed in the array.
-For any given rectangle,
-.ZN XFillRectangle
-and
-.ZN 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
-.ZN XFillRectangle
-and
-.ZN XFillRectangles
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.LP
-.ZN 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.
-.ZN XFillPolygon
-does not draw a pixel of the region more than once.
-.ZN CoordModeOrigin
-treats all coordinates as relative to the origin,
-and
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN Convex
-can improve performance.
-If you specify
-.ZN Convex
-for a path that is not convex,
-the graphics results are undefined.
-.IP \(bu 5
-If shape is
-.ZN Nonconvex ,
-the path does not self-intersect, but the shape is not
-wholly convex.
-If known by the client,
-specifying
-.ZN Nonconvex
-instead of
-.ZN Complex
-may improve performance.
-If you specify
-.ZN 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
-.ZN XFillPolygon
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-.ZN BadMatch ,
-and
-.ZN BadValue
-errors.
-.LP
-For each arc,
-.ZN XFillArc
-or
-.ZN 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
-.ZN ArcChord ,
-the single line segment joining the endpoints of the arc is used.
-For
-.ZN ArcPieSlice ,
-the two line segments joining the endpoints of the arc with the center
-point are used.
-.ZN XFillArcs
-fills the arcs in the order listed in the array.
-For any given arc,
-.ZN XFillArc
-and
-.ZN 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
-.ZN XFillArc
-and
-.ZN XFillArcs
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-and
-.ZN BadMatch
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XDrawArc(__libmansuffix__),
-XDrawPoint(__libmansuffix__),
-XDrawRectangle(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XFillRectangle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XFillRectangle, XFillRectangles, XFillPolygon, XFillArc, XFillArcs \- fill rectangles, polygons, or arcs
+.SH SYNTAX
+.HP
+int XFillRectangle\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned
+int \fIheight\fP\^);
+.HP
+int XFillRectangles\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, XRectangle *\fIrectangles\fP\^, int \fInrectangles\fP\^);
+.HP
+int XFillPolygon\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, XPoint *\fIpoints\fP\^, int \fInpoints\fP\^, int \fIshape\fP\^,
+int \fImode\fP\^);
+.HP
+int XFillArc\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
+int \fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int
+\fIheight\fP\^, int \fIangle1\fP\^, int \fIangle2\fP\^);
+.HP
+int XFillArcs\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
+XArc *\fIarcs\fP\^, int \fInarcs\fP\^);
+.SH ARGUMENTS
+.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.
+.IP \fIarcs\fP 1i
+Specifies an array of arcs.
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fImode\fP 1i
+Specifies the coordinate mode.
+You can pass
+.ZN CoordModeOrigin
+or
+.ZN CoordModePrevious .
+.IP \fInarcs\fP 1i
+Specifies the number of arcs in the array.
+.IP \fInpoints\fP 1i
+Specifies the number of points in the array.
+.IP \fInrectangles\fP 1i
+Specifies the number of rectangles in the array.
+.IP \fIpoints\fP 1i
+Specifies an array of points.
+.IP \fIrectangles\fP 1i
+Specifies an array of rectangles.
+.IP \fIshape\fP 1i
+Specifies a shape that helps the server to improve performance.
+You can pass
+.ZN Complex ,
+.ZN Convex ,
+or
+.ZN Nonconvex .
+.ds Wh , which are the dimensions of the rectangle to be filled \
+or the major and minor axes of the arc
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height\*(Wh.
+.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.
+.SH DESCRIPTION
+The
+.ZN XFillRectangle
+and
+.ZN XFillRectangles
+functions fill the specified rectangle or rectangles
+as if a four-point
+.ZN 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
+.ZN XFillRectangles
+fills the rectangles in the order listed in the array.
+For any given rectangle,
+.ZN XFillRectangle
+and
+.ZN 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
+.ZN XFillRectangle
+and
+.ZN XFillRectangles
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.LP
+.ZN 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.
+.ZN XFillPolygon
+does not draw a pixel of the region more than once.
+.ZN CoordModeOrigin
+treats all coordinates as relative to the origin,
+and
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN Convex
+can improve performance.
+If you specify
+.ZN Convex
+for a path that is not convex,
+the graphics results are undefined.
+.IP \(bu 5
+If shape is
+.ZN Nonconvex ,
+the path does not self-intersect, but the shape is not
+wholly convex.
+If known by the client,
+specifying
+.ZN Nonconvex
+instead of
+.ZN Complex
+may improve performance.
+If you specify
+.ZN 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
+.ZN XFillPolygon
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+.ZN BadMatch ,
+and
+.ZN BadValue
+errors.
+.LP
+For each arc,
+.ZN XFillArc
+or
+.ZN 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
+.ZN ArcChord ,
+the single line segment joining the endpoints of the arc is used.
+For
+.ZN ArcPieSlice ,
+the two line segments joining the endpoints of the arc with the center
+point are used.
+.ZN XFillArcs
+fills the arcs in the order listed in the array.
+For any given arc,
+.ZN XFillArc
+and
+.ZN 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
+.ZN XFillArc
+and
+.ZN XFillArcs
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+and
+.ZN BadMatch
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XDrawArc(__libmansuffix__),
+XDrawPoint(__libmansuffix__),
+XDrawRectangle(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XFilterEvent.man b/libX11/man/XFilterEvent.man
index 2a006f06f..62c59534d 100644
--- a/libX11/man/XFilterEvent.man
+++ b/libX11/man/XFilterEvent.man
@@ -1,186 +1,186 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XFilterEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XFilterEvent \- filter X events for an input method
-.SH SYNTAX
-.HP
-Bool XFilterEvent\^(\^XEvent *\fIevent\fP\^, Window \fIw\fP\^);
-.SH ARGUMENTS
-.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.
-.SH DESCRIPTION
-If the window argument is
-.ZN None ,
-.ZN XFilterEvent
-applies the filter to the window specified in the
-.ZN 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
-.ZN XFilterEvent
-returns
-.ZN True ,
-then some input method has filtered the event,
-and the client should discard the event.
-If
-.ZN XFilterEvent
-returns
-.ZN False ,
-then the client should continue processing the event.
-.LP
-If a grab has occurred in the client and
-.ZN XFilterEvent
-returns
-.ZN True ,
-the client should ungrab the keyboard.
-.SH "SEE ALSO"
-XNextEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XFilterEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XFilterEvent \- filter X events for an input method
+.SH SYNTAX
+.HP
+Bool XFilterEvent\^(\^XEvent *\fIevent\fP\^, Window \fIw\fP\^);
+.SH ARGUMENTS
+.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.
+.SH DESCRIPTION
+If the window argument is
+.ZN None ,
+.ZN XFilterEvent
+applies the filter to the window specified in the
+.ZN 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
+.ZN XFilterEvent
+returns
+.ZN True ,
+then some input method has filtered the event,
+and the client should discard the event.
+If
+.ZN XFilterEvent
+returns
+.ZN False ,
+then the client should continue processing the event.
+.LP
+If a grab has occurred in the client and
+.ZN XFilterEvent
+returns
+.ZN True ,
+the client should ungrab the keyboard.
+.SH "SEE ALSO"
+XNextEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XFlush.man b/libX11/man/XFlush.man
index 87302f0d1..04e64c260 100644
--- a/libX11/man/XFlush.man
+++ b/libX11/man/XFlush.man
@@ -1,264 +1,264 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XFlush __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XFlush, XSync, XEventsQueued, XPending \- handle output buffer or event queue
-.SH SYNTAX
-.HP
-int XFlush\^(\^Display *\fIdisplay\fP\^);
-.HP
-int XSync\^(\^Display *\fIdisplay\fP\^, Bool \fIdiscard\fP\^);
-.HP
-int XEventsQueued\^(\^Display *\fIdisplay\fP\^, int \fImode\fP\^);
-.HP
-int XPending\^(\^Display *\fIdisplay\fP\^);
-.SH ARGUMENTS
-.IP \fIdiscard\fP 1i
-Specifies a Boolean value that indicates whether
-.ZN XSync
-discards all events on the event queue.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fImode\fP 1i
-Specifies the mode.
-You can pass
-.ZN QueuedAlready ,
-.ZN QueuedAfterFlush ,
-or
-.ZN QueuedAfterReading .
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XPending ,
-.ZN XNextEvent ,
-and
-.ZN XWindowEvent .
-.IN "XPending"
-.IN "XNextEvent"
-.IN "XWindowEvent"
-Events generated by the server may be enqueued into the library's event queue.
-.LP
-The
-.ZN 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,
-.ZN 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
-.ZN False ,
-.ZN XSync
-does not discard the events in the queue.
-If you passed
-.ZN True ,
-.ZN XSync
-discards all events in the queue,
-including those events that were on the queue before
-.ZN XSync
-was called.
-Client applications seldom need to call
-.ZN XSync .
-.LP
-If mode is
-.ZN QueuedAlready ,
-.ZN XEventsQueued
-returns the number of events
-already in the event queue (and never performs a system call).
-If mode is
-.ZN QueuedAfterFlush ,
-.ZN XEventsQueued
-returns the number of events already in the queue if the number is nonzero.
-If there are no events in the queue,
-.ZN XEventsQueued
-flushes the output buffer,
-attempts to read more events out of the application's connection,
-and returns the number read.
-If mode is
-.ZN QueuedAfterReading ,
-.ZN XEventsQueued
-returns the number of events already in the queue if the number is nonzero.
-If there are no events in the queue,
-.ZN XEventsQueued
-attempts to read more events out of the application's connection
-without flushing the output buffer and returns the number read.
-.LP
-.ZN XEventsQueued
-always returns immediately without I/O if there are events already in the
-queue.
-.ZN XEventsQueued
-with mode
-.ZN QueuedAfterFlush
-is identical in behavior to
-.ZN XPending .
-.ZN XEventsQueued
-with mode
-.ZN QueuedAlready
-is identical to the
-.ZN XQLength
-function.
-.LP
-The
-.ZN XPending
-function returns the number of events that have been received from the
-X server but have not been removed from the event queue.
-.ZN XPending
-is identical to
-.ZN XEventsQueued
-with the mode
-.ZN QueuedAfterFlush
-specified.
-.SH "SEE ALSO"
-AllPlanes(__libmansuffix__),
-XIfEvent(__libmansuffix__),
-XNextEvent(__libmansuffix__),
-XPutBackEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XFlush __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XFlush, XSync, XEventsQueued, XPending \- handle output buffer or event queue
+.SH SYNTAX
+.HP
+int XFlush\^(\^Display *\fIdisplay\fP\^);
+.HP
+int XSync\^(\^Display *\fIdisplay\fP\^, Bool \fIdiscard\fP\^);
+.HP
+int XEventsQueued\^(\^Display *\fIdisplay\fP\^, int \fImode\fP\^);
+.HP
+int XPending\^(\^Display *\fIdisplay\fP\^);
+.SH ARGUMENTS
+.IP \fIdiscard\fP 1i
+Specifies a Boolean value that indicates whether
+.ZN XSync
+discards all events on the event queue.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImode\fP 1i
+Specifies the mode.
+You can pass
+.ZN QueuedAlready ,
+.ZN QueuedAfterFlush ,
+or
+.ZN QueuedAfterReading .
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XPending ,
+.ZN XNextEvent ,
+and
+.ZN XWindowEvent .
+.IN "XPending"
+.IN "XNextEvent"
+.IN "XWindowEvent"
+Events generated by the server may be enqueued into the library's event queue.
+.LP
+The
+.ZN 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,
+.ZN 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
+.ZN False ,
+.ZN XSync
+does not discard the events in the queue.
+If you passed
+.ZN True ,
+.ZN XSync
+discards all events in the queue,
+including those events that were on the queue before
+.ZN XSync
+was called.
+Client applications seldom need to call
+.ZN XSync .
+.LP
+If mode is
+.ZN QueuedAlready ,
+.ZN XEventsQueued
+returns the number of events
+already in the event queue (and never performs a system call).
+If mode is
+.ZN QueuedAfterFlush ,
+.ZN XEventsQueued
+returns the number of events already in the queue if the number is nonzero.
+If there are no events in the queue,
+.ZN XEventsQueued
+flushes the output buffer,
+attempts to read more events out of the application's connection,
+and returns the number read.
+If mode is
+.ZN QueuedAfterReading ,
+.ZN XEventsQueued
+returns the number of events already in the queue if the number is nonzero.
+If there are no events in the queue,
+.ZN XEventsQueued
+attempts to read more events out of the application's connection
+without flushing the output buffer and returns the number read.
+.LP
+.ZN XEventsQueued
+always returns immediately without I/O if there are events already in the
+queue.
+.ZN XEventsQueued
+with mode
+.ZN QueuedAfterFlush
+is identical in behavior to
+.ZN XPending .
+.ZN XEventsQueued
+with mode
+.ZN QueuedAlready
+is identical to the
+.ZN XQLength
+function.
+.LP
+The
+.ZN XPending
+function returns the number of events that have been received from the
+X server but have not been removed from the event queue.
+.ZN XPending
+is identical to
+.ZN XEventsQueued
+with the mode
+.ZN QueuedAfterFlush
+specified.
+.SH "SEE ALSO"
+AllPlanes(__libmansuffix__),
+XIfEvent(__libmansuffix__),
+XNextEvent(__libmansuffix__),
+XPutBackEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XFocusChangeEvent.man b/libX11/man/XFocusChangeEvent.man
index b95c89daf..8a6349b93 100644
--- a/libX11/man/XFocusChangeEvent.man
+++ b/libX11/man/XFocusChangeEvent.man
@@ -1,266 +1,266 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XFocusChangeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XFocusChangeEvent \- FocusIn and FocusOut event structure
-.SH STRUCTURES
-The structure for
-.ZN FocusIn
-and
-.ZN FocusOut
-events contains:
-.LP
-.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
-When you receive these events,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 window member is set to the window on which the
-.ZN FocusIn
-or
-.ZN 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
-.ZN NotifyNormal ,
-.ZN NotifyWhileGrabbed ,
-.ZN NotifyGrab ,
-or
-.ZN NotifyUngrab .
-.LP
-All
-.ZN FocusOut
-events caused by a window unmap are generated after any
-.ZN UnmapNotify
-event; however, the X protocol does not constrain the ordering of
-.ZN FocusOut
-events with respect to
-generated
-.ZN EnterNotify ,
-.ZN LeaveNotify ,
-.ZN VisibilityNotify ,
-and
-.ZN Expose
-events.
-.LP
-Depending on the event mode,
-the detail member is set to indicate the notify detail and can be
-.ZN NotifyAncestor ,
-.ZN NotifyVirtual ,
-.ZN NotifyInferior ,
-.ZN NotifyNonlinear ,
-.ZN NotifyNonlinearVirtual ,
-.ZN NotifyPointer ,
-.ZN NotifyPointerRoot ,
-or
-.ZN NotifyDetailNone .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XFocusChangeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XFocusChangeEvent \- FocusIn and FocusOut event structure
+.SH STRUCTURES
+The structure for
+.ZN FocusIn
+and
+.ZN FocusOut
+events contains:
+.LP
+.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
+When you receive these events,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 window member is set to the window on which the
+.ZN FocusIn
+or
+.ZN 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
+.ZN NotifyNormal ,
+.ZN NotifyWhileGrabbed ,
+.ZN NotifyGrab ,
+or
+.ZN NotifyUngrab .
+.LP
+All
+.ZN FocusOut
+events caused by a window unmap are generated after any
+.ZN UnmapNotify
+event; however, the X protocol does not constrain the ordering of
+.ZN FocusOut
+events with respect to
+generated
+.ZN EnterNotify ,
+.ZN LeaveNotify ,
+.ZN VisibilityNotify ,
+and
+.ZN Expose
+events.
+.LP
+Depending on the event mode,
+the detail member is set to indicate the notify detail and can be
+.ZN NotifyAncestor ,
+.ZN NotifyVirtual ,
+.ZN NotifyInferior ,
+.ZN NotifyNonlinear ,
+.ZN NotifyNonlinearVirtual ,
+.ZN NotifyPointer ,
+.ZN NotifyPointerRoot ,
+or
+.ZN NotifyDetailNone .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XFontSetExtents.man b/libX11/man/XFontSetExtents.man
index 79ad9e6d0..2786287e6 100644
--- a/libX11/man/XFontSetExtents.man
+++ b/libX11/man/XFontSetExtents.man
@@ -1,193 +1,193 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XFontSetExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XFontSetExtents \- XFontSetExtents structure
-.SH STRUCTURES
-The
-.ZN XFontSetExtents
-structure contains:
-.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
-.ZN 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
-.ZN XmbTextExtents
-and
-.ZN 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.
-.SH "SEE ALSO"
-XCreateFontSet(__libmansuffix__),
-XExtentsOfFontSet(__libmansuffix__),
-XFontsOfFontSet(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XFontSetExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XFontSetExtents \- XFontSetExtents structure
+.SH STRUCTURES
+The
+.ZN XFontSetExtents
+structure contains:
+.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
+.ZN 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
+.ZN XmbTextExtents
+and
+.ZN 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.
+.SH "SEE ALSO"
+XCreateFontSet(__libmansuffix__),
+XExtentsOfFontSet(__libmansuffix__),
+XFontsOfFontSet(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XFontsOfFontSet.man b/libX11/man/XFontsOfFontSet.man
index 3c783ef16..4a6f80ba6 100644
--- a/libX11/man/XFontsOfFontSet.man
+++ b/libX11/man/XFontsOfFontSet.man
@@ -1,288 +1,288 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XFontsOfFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XFontsOfFontSet, XBaseFontNameListOfFontSet, XLocaleOfFontSet, XContextDependentDrawing, XContextualDrawing, XDirectionalDependentDrawing \- obtain fontset information
-.SH SYNTAX
-.HP
-int XFontsOfFontSet\^(\^XFontSet \fIfont_set\fP\^, XFontStruct
-***\fIfont_struct_list_return\fP\^, char ***\fIfont_name_list_return\fP\^);
-.HP
-char *XBaseFontNameListOfFontSet\^(\^XFontSet \fIfont_set\fP\^);
-.HP
-char *XLocaleOfFontSet\^(\^XFontSet \fIfont_set\fP\^);
-.HP
-Bool XContextDependentDrawing\^(\^XFontSet \fIfont_set\fP\^);
-.HP
-Bool XContextualDrawing\^(\^XFontSet \fIfont_set\fP\^);
-.HP
-Bool XDirectionalDependentDrawing\^(\^XFontSet \fIfont_set\fP\^);
-.SH ARGUMENTS
-.IP \fIfont_set\fP 1i
-Specifies the font set.
-.IP \fIfont_name_list_return\fP 1i
-Returns the list of font names.
-.IP \fIfont_struct_list_return\fP 1i
-Returns the list of font structs.
-.SH DESCRIPTION
-The
-.ZN XFontsOfFontSet
-function returns a list of one or more
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN XFontStruct
-structures in the
-.ZN XFontStructSet
-is undefined.
-Also, note that all properties in the
-.ZN XFontStruct
-structures are in the STRING encoding.
-.LP
-The
-.ZN 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
-.ZN XFreeFontSet
-with the associated
-.ZN XFontSet .
-Until freed, their contents will not be modified by Xlib.
-.LP
-The
-.ZN XBaseFontNameListOfFontSet
-function returns the original base font name list supplied
-by the client when the
-.ZN 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
-.ZN XCreateFontSet
-obtained an XLFD name from the font properties for the font specified
-by a non-XLFD base name, the
-.ZN 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
-.ZN XFreeFontSet
-with the associated
-.ZN XFontSet .
-Until freed, its contents will not be modified by Xlib.
-.LP
-The
-.ZN XLocaleOfFontSet
-function
-returns the name of the locale bound to the specified
-.ZN 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
-.ZN XFreeFontSet
-with the associated
-.ZN XFontSet .
-Until freed, it will not be modified by Xlib.
-.LP
-The
-.ZN XContextDependentDrawing
-function returns
-.ZN 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
-.ZN False .
-.LP
-The
-.ZN XContextualDrawing
-function returns
-.ZN True
-if text drawn with the font set might include context-dependent drawing;
-otherwise, it returns
-.ZN False .
-.LP
-The
-.ZN XDirectionalDependentDrawing
-function returns
-.ZN True
-if the drawing functions implement implicit text directionality;
-otherwise, it returns
-.ZN False .
-.SH "SEE ALSO"
-XCreateFontSet(__libmansuffix__),
-XCreateOM(__libmansuffix__),
-XCreateOC(__libmansuffix__),
-XExtentsOfFontSet(__libmansuffix__),
-XFontSetExtents(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XFontsOfFontSet __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XFontsOfFontSet, XBaseFontNameListOfFontSet, XLocaleOfFontSet, XContextDependentDrawing, XContextualDrawing, XDirectionalDependentDrawing \- obtain fontset information
+.SH SYNTAX
+.HP
+int XFontsOfFontSet\^(\^XFontSet \fIfont_set\fP\^, XFontStruct
+***\fIfont_struct_list_return\fP\^, char ***\fIfont_name_list_return\fP\^);
+.HP
+char *XBaseFontNameListOfFontSet\^(\^XFontSet \fIfont_set\fP\^);
+.HP
+char *XLocaleOfFontSet\^(\^XFontSet \fIfont_set\fP\^);
+.HP
+Bool XContextDependentDrawing\^(\^XFontSet \fIfont_set\fP\^);
+.HP
+Bool XContextualDrawing\^(\^XFontSet \fIfont_set\fP\^);
+.HP
+Bool XDirectionalDependentDrawing\^(\^XFontSet \fIfont_set\fP\^);
+.SH ARGUMENTS
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.IP \fIfont_name_list_return\fP 1i
+Returns the list of font names.
+.IP \fIfont_struct_list_return\fP 1i
+Returns the list of font structs.
+.SH DESCRIPTION
+The
+.ZN XFontsOfFontSet
+function returns a list of one or more
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN XFontStruct
+structures in the
+.ZN XFontStructSet
+is undefined.
+Also, note that all properties in the
+.ZN XFontStruct
+structures are in the STRING encoding.
+.LP
+The
+.ZN 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
+.ZN XFreeFontSet
+with the associated
+.ZN XFontSet .
+Until freed, their contents will not be modified by Xlib.
+.LP
+The
+.ZN XBaseFontNameListOfFontSet
+function returns the original base font name list supplied
+by the client when the
+.ZN 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
+.ZN XCreateFontSet
+obtained an XLFD name from the font properties for the font specified
+by a non-XLFD base name, the
+.ZN 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
+.ZN XFreeFontSet
+with the associated
+.ZN XFontSet .
+Until freed, its contents will not be modified by Xlib.
+.LP
+The
+.ZN XLocaleOfFontSet
+function
+returns the name of the locale bound to the specified
+.ZN 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
+.ZN XFreeFontSet
+with the associated
+.ZN XFontSet .
+Until freed, it will not be modified by Xlib.
+.LP
+The
+.ZN XContextDependentDrawing
+function returns
+.ZN 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
+.ZN False .
+.LP
+The
+.ZN XContextualDrawing
+function returns
+.ZN True
+if text drawn with the font set might include context-dependent drawing;
+otherwise, it returns
+.ZN False .
+.LP
+The
+.ZN XDirectionalDependentDrawing
+function returns
+.ZN True
+if the drawing functions implement implicit text directionality;
+otherwise, it returns
+.ZN False .
+.SH "SEE ALSO"
+XCreateFontSet(__libmansuffix__),
+XCreateOM(__libmansuffix__),
+XCreateOC(__libmansuffix__),
+XExtentsOfFontSet(__libmansuffix__),
+XFontSetExtents(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XFree.man b/libX11/man/XFree.man
index f0a8d1fb2..ffa83d898 100644
--- a/libX11/man/XFree.man
+++ b/libX11/man/XFree.man
@@ -1,158 +1,158 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XFree __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XFree \- free client data
-.SH SYNTAX
-int XFree\^(\^void *\fIdata\fP\^);
-.SH ARGUMENTS
-.IP \fIdata\fP 1i
-Specifies the data that are to be freed.
-.SH DESCRIPTION
-The
-.ZN 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.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XFree __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XFree \- free client data
+.SH SYNTAX
+int XFree\^(\^void *\fIdata\fP\^);
+.SH ARGUMENTS
+.IP \fIdata\fP 1i
+Specifies the data that are to be freed.
+.SH DESCRIPTION
+The
+.ZN 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.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XFreeModifierMap.man b/libX11/man/XFreeModifierMap.man
index 013c70a95..cc772afae 100644
--- a/libX11/man/XFreeModifierMap.man
+++ b/libX11/man/XFreeModifierMap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XGetEventData.man b/libX11/man/XGetEventData.man
index fdbab45d8..9d4b0804d 100644
--- a/libX11/man/XGetEventData.man
+++ b/libX11/man/XGetEventData.man
@@ -1,223 +1,223 @@
-.\" Copyright \(co 2009 Red Hat, Inc.
-.\"
-.\" 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 (including the next
-.\" paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XGetEventData __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGetEventData, XFreeEventData, XGenericEventCookie \- retrieve and free additional event data through cookies.
-.SH SYNTAX
-.HP
-Bool XGetEventData\^(\^Display *\fIdisplay\fP\^, XGenericEventCookie *\fIcookie\fP\^);
-.HP
-void XFreeEventData\^(\^Display *\fIdisplay\fP\^, XGenericEventCookie *\fIcookie\fP\^);
-.HP
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIcookie\fP 1i
-Specifies the cookie to free or retrieve the data for.
-
-.SH STRUCTURES
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- int type;
- unsigned long serial;
- Bool send_event;
- Display *display;
- int extension;
- int evtype;
- unsigned int cookie;
- void *data;
-} XGenericEventCookie;
-.De
-
-.SH DESCRIPTION
-Some extension
-.ZN XGenericEvents
-require additional memory to store information.
-For these events, the library returns a
-.ZN XGenericEventCookie
-with a token ('cookie') unique to this event. The
-.ZN XGenericEventCookie 's
-data pointer is undefined until
-.ZN XGetEventData
-is called.
-
-The
-.ZN XGetEventData
-function retrieves this extra data for the given cookie. No round-trip to
-the server is required. If the cookie is invalid or the
-event is not an event handled by cookie handlers,
-.ZN False
-is returned. If
-.ZN XGetEventData
-returns
-.ZN True ,
-the cookie's data pointer points to the memory containing the event
-information. A client must call
-.ZN XFreeEventData
-to free this memory.
-.ZN XGetEventData
-returns
-.ZN False
-for multiple calls for the same event cookie.
-
-The
-.ZN XFreeEventData
-function frees the data associated with a cookie. A client must call
-.ZN XFreeEventData
-for each cookie claimed with
-.ZN XGetEventData .
-
-.SH EXAMPLE CODE
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-XEvent event;
-XGenericEventCookie *cookie = &ev;
-
-XNextEvent(display, &event);
-if (XGetEventData(display, cookie)) {
- handle_cookie_event(cookie->data);
-} else
- handle_event(&event);
-}
-XFreeEventData(display, cookie);
-.De
-
-.SH NOTES
-A cookie is defined as unclaimed if it has been returned to the client
-through
-.ZN XNextEvent
-but its data has not been retrieved via
-.ZN XGetEventData .
-Subsequent calls to
-.ZN XNextEvent
-may free memory associated with unclaimed cookies.
-Multi-threaded X clients must ensure that
-.ZN XGetEventData
-is called before the next call to
-.ZN XNextEvent .
-
-.SH "SEE ALSO"
-XNextEvent(__libmansuffix__),
-.br
-\fI\*(xL\fP
-
+.\" Copyright \(co 2009 Red Hat, Inc.
+.\"
+.\" 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 (including the next
+.\" paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XGetEventData __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGetEventData, XFreeEventData, XGenericEventCookie \- retrieve and free additional event data through cookies.
+.SH SYNTAX
+.HP
+Bool XGetEventData\^(\^Display *\fIdisplay\fP\^, XGenericEventCookie *\fIcookie\fP\^);
+.HP
+void XFreeEventData\^(\^Display *\fIdisplay\fP\^, XGenericEventCookie *\fIcookie\fP\^);
+.HP
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcookie\fP 1i
+Specifies the cookie to free or retrieve the data for.
+
+.SH STRUCTURES
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ int type;
+ unsigned long serial;
+ Bool send_event;
+ Display *display;
+ int extension;
+ int evtype;
+ unsigned int cookie;
+ void *data;
+} XGenericEventCookie;
+.De
+
+.SH DESCRIPTION
+Some extension
+.ZN XGenericEvents
+require additional memory to store information.
+For these events, the library returns a
+.ZN XGenericEventCookie
+with a token ('cookie') unique to this event. The
+.ZN XGenericEventCookie 's
+data pointer is undefined until
+.ZN XGetEventData
+is called.
+
+The
+.ZN XGetEventData
+function retrieves this extra data for the given cookie. No round-trip to
+the server is required. If the cookie is invalid or the
+event is not an event handled by cookie handlers,
+.ZN False
+is returned. If
+.ZN XGetEventData
+returns
+.ZN True ,
+the cookie's data pointer points to the memory containing the event
+information. A client must call
+.ZN XFreeEventData
+to free this memory.
+.ZN XGetEventData
+returns
+.ZN False
+for multiple calls for the same event cookie.
+
+The
+.ZN XFreeEventData
+function frees the data associated with a cookie. A client must call
+.ZN XFreeEventData
+for each cookie claimed with
+.ZN XGetEventData .
+
+.SH EXAMPLE CODE
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+XEvent event;
+XGenericEventCookie *cookie = &ev;
+
+XNextEvent(display, &event);
+if (XGetEventData(display, cookie)) {
+ handle_cookie_event(cookie->data);
+} else
+ handle_event(&event);
+}
+XFreeEventData(display, cookie);
+.De
+
+.SH NOTES
+A cookie is defined as unclaimed if it has been returned to the client
+through
+.ZN XNextEvent
+but its data has not been retrieved via
+.ZN XGetEventData .
+Subsequent calls to
+.ZN XNextEvent
+may free memory associated with unclaimed cookies.
+Multi-threaded X clients must ensure that
+.ZN XGetEventData
+is called before the next call to
+.ZN XNextEvent .
+
+.SH "SEE ALSO"
+XNextEvent(__libmansuffix__),
+.br
+\fI\*(xL\fP
+
diff --git a/libX11/man/XGetVisualInfo.man b/libX11/man/XGetVisualInfo.man
index 7d7dca64e..88e512c72 100644
--- a/libX11/man/XGetVisualInfo.man
+++ b/libX11/man/XGetVisualInfo.man
@@ -1,313 +1,313 @@
-'\" t
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XGetVisualInfo __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGetVisualInfo, XMatchVisualInfo, XVisualIDFromVisual, XVisualInfo \- obtain visual information and visual structure
-.SH SYNTAX
-.HP
-XVisualInfo *XGetVisualInfo\^(\^Display *\fIdisplay\fP\^, long
-\fIvinfo_mask\fP\^, XVisualInfo *\fIvinfo_template\fP\^, int
-*\fInitems_return\fP\^);
-.HP
-Status XMatchVisualInfo\^(\^Display *\fIdisplay\fP\^, int \fIscreen\fP\^, int
-\fIdepth\fP\^, int \fIclass\fP\^, XVisualInfo *\fIvinfo_return\fP\^);
-.HP
-VisualID XVisualIDFromVisual\^(\^Visual *\^\fIvisual\fP\^);
-.SH ARGUMENTS
-.IP \fIclass\fP 1i
-Specifies the class of the screen.
-.IP \fIdepth\fP 1i
-Specifies the depth of the screen.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fInitems_return\fP 1i
-Returns the number of matching visual structures.
-.IP \fIscreen\fP 1i
-Specifies the screen.
-.IP \fIvisual\fP 1i
-Specifies the visual type.
-.IP \fIvinfo_mask\fP 1i
-Specifies the visual mask value.
-.IP \fIvinfo_return\fP 1i
-Returns the matched visual information.
-.IP \fIvinfo_template\fP 1i
-Specifies the visual attributes that are to be used in matching the visual
-structures.
-.SH DESCRIPTION
-The
-.ZN 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,
-.ZN XGetVisualInfo
-returns a NULL.
-To free the data returned by this function, use
-.ZN XFree .
-.LP
-The
-.ZN 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,
-.ZN XMatchVisualInfo
-returns nonzero and the information on the visual to vinfo_return.
-Otherwise, when a visual is not found,
-.ZN XMatchVisualInfo
-returns zero.
-.LP
-The
-.ZN XVisualIDFromVisual
-function returns the visual ID for the specified visual type.
-.SH STRUCTURES
-The
-.ZN XVisualInfo
-structure contains:
-.LP
-.LP
-/\&* Visual information mask bits */
-.TS
-lw(.5i) lw(2.5i) lw(.8i).
-T{
-\&#define
-T} T{
-.ZN VisualNoMask
-T} T{
-0x0
-T}
-T{
-\&#define
-T} T{
-.ZN VisualIDMask
-T} T{
-0x1
-T}
-T{
-\&#define
-T} T{
-.ZN VisualScreenMask
-T} T{
-0x2
-T}
-T{
-\&#define
-T} T{
-.ZN VisualDepthMask
-T} T{
-0x4
-T}
-T{
-\&#define
-T} T{
-.ZN VisualClassMask
-T} T{
-0x8
-T}
-T{
-\&#define
-T} T{
-.ZN VisualRedMaskMask
-T} T{
-0x10
-T}
-T{
-\&#define
-T} T{
-.ZN VisualGreenMaskMask
-T} T{
-0x20
-T}
-T{
-\&#define
-T} T{
-.ZN VisualBlueMaskMask
-T} T{
-0x40
-T}
-T{
-\&#define
-T} T{
-.ZN VisualColormapSizeMask
-T} T{
-0x80
-T}
-T{
-\&#define
-T} T{
-.ZN VisualBitsPerRGBMask
-T} T{
-0x100
-T}
-T{
-\&#define
-T} T{
-.ZN 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;
- 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
-.SH "SEE ALSO"
-XFree(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" t
+.TH XGetVisualInfo __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGetVisualInfo, XMatchVisualInfo, XVisualIDFromVisual, XVisualInfo \- obtain visual information and visual structure
+.SH SYNTAX
+.HP
+XVisualInfo *XGetVisualInfo\^(\^Display *\fIdisplay\fP\^, long
+\fIvinfo_mask\fP\^, XVisualInfo *\fIvinfo_template\fP\^, int
+*\fInitems_return\fP\^);
+.HP
+Status XMatchVisualInfo\^(\^Display *\fIdisplay\fP\^, int \fIscreen\fP\^, int
+\fIdepth\fP\^, int \fIclass\fP\^, XVisualInfo *\fIvinfo_return\fP\^);
+.HP
+VisualID XVisualIDFromVisual\^(\^Visual *\^\fIvisual\fP\^);
+.SH ARGUMENTS
+.IP \fIclass\fP 1i
+Specifies the class of the screen.
+.IP \fIdepth\fP 1i
+Specifies the depth of the screen.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInitems_return\fP 1i
+Returns the number of matching visual structures.
+.IP \fIscreen\fP 1i
+Specifies the screen.
+.IP \fIvisual\fP 1i
+Specifies the visual type.
+.IP \fIvinfo_mask\fP 1i
+Specifies the visual mask value.
+.IP \fIvinfo_return\fP 1i
+Returns the matched visual information.
+.IP \fIvinfo_template\fP 1i
+Specifies the visual attributes that are to be used in matching the visual
+structures.
+.SH DESCRIPTION
+The
+.ZN 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,
+.ZN XGetVisualInfo
+returns a NULL.
+To free the data returned by this function, use
+.ZN XFree .
+.LP
+The
+.ZN 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,
+.ZN XMatchVisualInfo
+returns nonzero and the information on the visual to vinfo_return.
+Otherwise, when a visual is not found,
+.ZN XMatchVisualInfo
+returns zero.
+.LP
+The
+.ZN XVisualIDFromVisual
+function returns the visual ID for the specified visual type.
+.SH STRUCTURES
+The
+.ZN XVisualInfo
+structure contains:
+.LP
+.LP
+/\&* Visual information mask bits */
+.TS
+lw(.5i) lw(2.5i) lw(.8i).
+T{
+\&#define
+T} T{
+.ZN VisualNoMask
+T} T{
+0x0
+T}
+T{
+\&#define
+T} T{
+.ZN VisualIDMask
+T} T{
+0x1
+T}
+T{
+\&#define
+T} T{
+.ZN VisualScreenMask
+T} T{
+0x2
+T}
+T{
+\&#define
+T} T{
+.ZN VisualDepthMask
+T} T{
+0x4
+T}
+T{
+\&#define
+T} T{
+.ZN VisualClassMask
+T} T{
+0x8
+T}
+T{
+\&#define
+T} T{
+.ZN VisualRedMaskMask
+T} T{
+0x10
+T}
+T{
+\&#define
+T} T{
+.ZN VisualGreenMaskMask
+T} T{
+0x20
+T}
+T{
+\&#define
+T} T{
+.ZN VisualBlueMaskMask
+T} T{
+0x40
+T}
+T{
+\&#define
+T} T{
+.ZN VisualColormapSizeMask
+T} T{
+0x80
+T}
+T{
+\&#define
+T} T{
+.ZN VisualBitsPerRGBMask
+T} T{
+0x100
+T}
+T{
+\&#define
+T} T{
+.ZN 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;
+ 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
+.SH "SEE ALSO"
+XFree(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XGetWindowAttributes.man b/libX11/man/XGetWindowAttributes.man
index de8560115..d54292f6c 100644
--- a/libX11/man/XGetWindowAttributes.man
+++ b/libX11/man/XGetWindowAttributes.man
@@ -1,395 +1,395 @@
-'\" t
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XGetWindowAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGetWindowAttributes, XGetGeometry, XWindowAttributes \- get current window attribute or geometry and current window attributes structure
-.SH SYNTAX
-.HP
-Status XGetWindowAttributes\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-XWindowAttributes *\fIwindow_attributes_return\fP\^);
-.HP
-Status XGetGeometry\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, Window
-*\fIroot_return\fP\^, int *\fIx_return\fP\^, int *\fIy_return\fP\^, unsigned
-int *\fIwidth_return\fP\^, unsigned int *\fIheight_return\fP\^, unsigned int
-*\fIborder_width_return\fP\^, unsigned int *\fIdepth_return\fP\^);
-.SH ARGUMENTS
-.IP \fIborder_width_return\fP 1i
-Returns the border width in pixels.
-.ds Dr , which can be a window or a pixmap
-.IP \fId\fP 1i
-Specifies the drawable\*(Dr.
-.IP \fIdepth_return\fP 1i
-Returns the depth of the drawable (bits per pixel for the object).
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIroot_return\fP 1i
-Returns the root window.
-.ds Wi whose current attributes you want to obtain
-.IP \fIw\fP 1i
-Specifies the window \*(Wi.
-.IP \fIwidth_return\fP 1i
-.br
-.ns
-.IP \fIheight_return\fP 1i
-Return the drawable's dimensions (width and height).
-.IP \fIwindow_attributes_return\fP 1i
-Returns the specified window's attributes in the
-.ZN XWindowAttributes
-structure.
-.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.
-.SH DESCRIPTION
-The
-.ZN XGetWindowAttributes
-function returns the current attributes for the specified window to an
-.ZN XWindowAttributes
-structure. It returns a nonzero status on success; otherwise, it returns a
-zero status.
-.LP
-.ZN XGetWindowAttributes
-can generate
-.ZN BadDrawable
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN InputOnly .
-It returns a nonzero status on success; otherwise, it returns a
-zero status.
-.SH STRUCTURES
-The
-.ZN XWindowAttributes
-structure contains:
-.LP
-.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
-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
-.ZN 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
-.ZN InputOutput
-or
-.ZN 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{
-.ZN ForgetGravity
-T} T{
-.ZN EastGravity
-T}
-T{
-.ZN NorthWestGravity
-T} T{
-.ZN SouthWestGravity
-T}
-T{
-.ZN NorthGravity
-T} T{
-.ZN SouthGravity
-T}
-T{
-.ZN NorthEastGravity
-T} T{
-.ZN SouthEastGravity
-T}
-T{
-.ZN WestGravity
-T} T{
-.ZN StaticGravity
-T}
-.ZN 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{
-.ZN UnmapGravity
-T} T{
-.ZN EastGravity
-T}
-T{
-.ZN NorthWestGravity
-T} T{
-.ZN SouthWestGravity
-T}
-T{
-.ZN NorthGravity
-T} T{
-.ZN SouthGravity
-T}
-T{
-.ZN NorthEastGravity
-T} T{
-.ZN SouthEastGravity
-T}
-T{
-.ZN WestGravity
-T} T{
-.ZN StaticGravity
-T}
-.ZN CenterGravity
-.TE
-.LP
-For additional information on gravity,
-see section 3.3.
-.LP
-The backing_store member is set to indicate how the X server should maintain
-the contents of a window
-and can be
-.ZN WhenMapped ,
-.ZN Always ,
-or
-.ZN 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
-.ZN True
-or
-.ZN False .
-The colormap member is set to the colormap for the specified window and can be
-a colormap ID or
-.ZN None .
-The map_installed member is set to indicate whether the colormap is
-currently installed and can be
-.ZN True
-or
-.ZN False .
-The map_state member is set to indicate the state of the window and can be
-.ZN IsUnmapped ,
-.ZN IsUnviewable ,
-or
-.ZN IsViewable .
-.ZN 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
-.ZN True
-or
-.ZN False .
-Window manager clients should ignore the window if this member is
-.ZN 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.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XQueryPointer(__libmansuffix__),
-XQueryTree(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" t
+.TH XGetWindowAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGetWindowAttributes, XGetGeometry, XWindowAttributes \- get current window attribute or geometry and current window attributes structure
+.SH SYNTAX
+.HP
+Status XGetWindowAttributes\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+XWindowAttributes *\fIwindow_attributes_return\fP\^);
+.HP
+Status XGetGeometry\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, Window
+*\fIroot_return\fP\^, int *\fIx_return\fP\^, int *\fIy_return\fP\^, unsigned
+int *\fIwidth_return\fP\^, unsigned int *\fIheight_return\fP\^, unsigned int
+*\fIborder_width_return\fP\^, unsigned int *\fIdepth_return\fP\^);
+.SH ARGUMENTS
+.IP \fIborder_width_return\fP 1i
+Returns the border width in pixels.
+.ds Dr , which can be a window or a pixmap
+.IP \fId\fP 1i
+Specifies the drawable\*(Dr.
+.IP \fIdepth_return\fP 1i
+Returns the depth of the drawable (bits per pixel for the object).
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIroot_return\fP 1i
+Returns the root window.
+.ds Wi whose current attributes you want to obtain
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the drawable's dimensions (width and height).
+.IP \fIwindow_attributes_return\fP 1i
+Returns the specified window's attributes in the
+.ZN XWindowAttributes
+structure.
+.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.
+.SH DESCRIPTION
+The
+.ZN XGetWindowAttributes
+function returns the current attributes for the specified window to an
+.ZN XWindowAttributes
+structure. It returns a nonzero status on success; otherwise, it returns a
+zero status.
+.LP
+.ZN XGetWindowAttributes
+can generate
+.ZN BadDrawable
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN InputOnly .
+It returns a nonzero status on success; otherwise, it returns a
+zero status.
+.SH STRUCTURES
+The
+.ZN XWindowAttributes
+structure contains:
+.LP
+.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
+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
+.ZN 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
+.ZN InputOutput
+or
+.ZN 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{
+.ZN ForgetGravity
+T} T{
+.ZN EastGravity
+T}
+T{
+.ZN NorthWestGravity
+T} T{
+.ZN SouthWestGravity
+T}
+T{
+.ZN NorthGravity
+T} T{
+.ZN SouthGravity
+T}
+T{
+.ZN NorthEastGravity
+T} T{
+.ZN SouthEastGravity
+T}
+T{
+.ZN WestGravity
+T} T{
+.ZN StaticGravity
+T}
+.ZN 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{
+.ZN UnmapGravity
+T} T{
+.ZN EastGravity
+T}
+T{
+.ZN NorthWestGravity
+T} T{
+.ZN SouthWestGravity
+T}
+T{
+.ZN NorthGravity
+T} T{
+.ZN SouthGravity
+T}
+T{
+.ZN NorthEastGravity
+T} T{
+.ZN SouthEastGravity
+T}
+T{
+.ZN WestGravity
+T} T{
+.ZN StaticGravity
+T}
+.ZN CenterGravity
+.TE
+.LP
+For additional information on gravity,
+see section 3.3.
+.LP
+The backing_store member is set to indicate how the X server should maintain
+the contents of a window
+and can be
+.ZN WhenMapped ,
+.ZN Always ,
+or
+.ZN 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
+.ZN True
+or
+.ZN False .
+The colormap member is set to the colormap for the specified window and can be
+a colormap ID or
+.ZN None .
+The map_installed member is set to indicate whether the colormap is
+currently installed and can be
+.ZN True
+or
+.ZN False .
+The map_state member is set to indicate the state of the window and can be
+.ZN IsUnmapped ,
+.ZN IsUnviewable ,
+or
+.ZN IsViewable .
+.ZN 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
+.ZN True
+or
+.ZN False .
+Window manager clients should ignore the window if this member is
+.ZN 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.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XQueryPointer(__libmansuffix__),
+XQueryTree(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XGetWindowProperty.man b/libX11/man/XGetWindowProperty.man
index da9460a30..09dd55b15 100644
--- a/libX11/man/XGetWindowProperty.man
+++ b/libX11/man/XGetWindowProperty.man
@@ -1,476 +1,476 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XGetWindowProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGetWindowProperty, XListProperties, XChangeProperty, XRotateWindowProperties, XDeleteProperty \- obtain and change window properties
-.SH SYNTAX
-.HP
-int XGetWindowProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom
-\fIproperty\fP\^, long \fIlong_offset\fP\^, long \fIlong_length\fP\^, Bool
-\fIdelete\fP\^, Atom \fIreq_type\fP\^, Atom *\fIactual_type_return\fP\^, int
-*\fIactual_format_return\fP\^, unsigned long *\fInitems_return\fP\^, unsigned
-long *\fIbytes_after_return\fP\^, unsigned char **\fIprop_return\fP\^);
-.HP
-Atom *XListProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int
-*\fInum_prop_return\fP\^);
-.HP
-int XChangeProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom
-\fIproperty\fP\^, Atom \fItype\fP\^, int \fIformat\fP\^, int \fImode\fP\^,
-unsigned char *\fIdata\fP\^, int \fInelements\fP\^);
-.HP
-int XRotateWindowProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-Atom \fIproperties\fP\^[]\^, int \fInum_prop\fP\^, int \fInpositions\fP\^);
-.HP
-int XDeleteProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom
-\fIproperty\fP\^);
-.SH ARGUMENTS
-.IP \fIactual_format_return\fP 1i
-Returns the actual format of the property.
-.IP \fIactual_type_return\fP 1i
-Returns the atom identifier that defines the actual type of the property.
-.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 \fIdata\fP 1i
-Specifies the property data.
-.IP \fIdelete\fP 1i
-Specifies a Boolean value that determines whether the property is deleted.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.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
-.ZN XChangeProperty .
-.IP \fIlong_length\fP 1i
-Specifies the length in 32-bit multiples of the data to be retrieved.
-.IP \fIlong_offset\fP 1i
-Specifies the offset in the specified property (in 32-bit quantities)
-where the data is to be retrieved.
-.\" 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
-.ZN PropModeReplace ,
-.ZN PropModePrepend ,
-or
-.ZN PropModeAppend .
-.IP \fInelements\fP 1i
-Specifies the number of elements of the specified data format.
-.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 \fInum_prop\fP 1i
-Specifies the length of the properties array.
-.IP \fInum_prop_return\fP 1i
-Returns the length of the properties array.
-.IP \fInpositions\fP 1i
-Specifies the rotation amount.
-.IP \fIprop_return\fP 1i
-Returns the data in the specified format.
-If the returned format is 8, the returned data is represented as a
-char array. If the returned format is 16, the returned data is
-represented as a array of short int type and should be cast to that
-type to obtain the elements. If the returned format is 32, the
-property data will be stored as an array of longs (which in a 64-bit
-application will be 64-bit values that are padded in the upper 4 bytes).
-.IP \fIproperty\fP 1i
-Specifies the property name.
-.IP \fIproperties\fP 1i
-Specifies the array of properties that are to be rotated.
-.IP \fIreq_type\fP 1i
-Specifies the atom identifier associated with the property type or
-.ZN AnyPropertyType .
-.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
-.ZN XGetWindowProperty .
-.ds Wi whose property you want to obtain, change, rotate or delete
-.IP \fIw\fP 1i
-Specifies the window \*(Wi.
-.SH DESCRIPTION
-The
-.ZN 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.
-.ZN XGetWindowProperty
-sets the return arguments as follows:
-.IP \(bu 5
-If the specified property does not exist for the specified window,
-.ZN XGetWindowProperty
-returns
-.ZN 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,
-.ZN 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
-.ZN AnyPropertyType
-to the req_type argument or the specified type matches the actual property type,
-.ZN 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
-.ZN 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
-.ZN char
-array.
-If the returned format is 16, the returned data is represented as a
-.ZN 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
-.ZN long
-array and should be cast to that type to obtain the elements.
-.LP
-.ZN 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
-.ZN True
-and bytes_after_return is zero,
-.ZN XGetWindowProperty
-deletes the property
-from the window and generates a
-.ZN PropertyNotify
-event on the window.
-.LP
-The function returns
-.ZN Success
-if it executes successfully.
-To free the resulting data,
-use
-.ZN XFree .
-.LP
-.ZN XGetWindowProperty
-can generate
-.ZN BadAtom ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN XFree .
-.LP
-.ZN XListProperties
-can generate a
-.ZN BadWindow
-error.
-.LP
-The
-.ZN XChangeProperty
-function alters the property for the specified window and
-causes the X server to generate a
-.ZN PropertyNotify
-event on that window.
-.ZN XChangeProperty
-performs the following:
-.IP \(bu 5
-If mode is
-.ZN PropModeReplace ,
-.ZN XChangeProperty
-discards the previous property value and stores the new data.
-.IP \(bu 5
-If mode is
-.ZN PropModePrepend
-or
-.ZN PropModeAppend ,
-.ZN 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
-.ZN 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
-.ZN char
-array.
-If the specified format is 16, the property data must be a
-.ZN short
-array.
-If the specified format is 32, the property data must be a
-.ZN 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
-.ZN BadAlloc
-error results.)
-.LP
-.ZN XChangeProperty
-can generate
-.ZN BadAlloc ,
-.ZN BadAtom ,
-.ZN BadMatch ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XRotateWindowProperties
-function allows you to rotate properties on a window and causes
-the X server to generate
-.ZN 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
-.ZN 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
-.ZN BadMatch
-error results.
-If a
-.ZN BadAtom
-or
-.ZN BadMatch
-error results,
-no properties are changed.
-.LP
-.ZN XRotateWindowProperties
-can generate
-.ZN BadAtom ,
-.ZN BadMatch ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XDeleteProperty
-function deletes the specified property only if the
-property was defined on the specified window
-and causes the X server to generate a
-.ZN PropertyNotify
-event on the window unless the property does not exist.
-.LP
-.ZN XDeleteProperty
-can generate
-.ZN BadAtom
-and
-.ZN BadWindow
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadAtom
-A value for an Atom argument does not name a defined Atom.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XFree(__libmansuffix__),
-XInternAtom(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XGetWindowProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGetWindowProperty, XListProperties, XChangeProperty, XRotateWindowProperties, XDeleteProperty \- obtain and change window properties
+.SH SYNTAX
+.HP
+int XGetWindowProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom
+\fIproperty\fP\^, long \fIlong_offset\fP\^, long \fIlong_length\fP\^, Bool
+\fIdelete\fP\^, Atom \fIreq_type\fP\^, Atom *\fIactual_type_return\fP\^, int
+*\fIactual_format_return\fP\^, unsigned long *\fInitems_return\fP\^, unsigned
+long *\fIbytes_after_return\fP\^, unsigned char **\fIprop_return\fP\^);
+.HP
+Atom *XListProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int
+*\fInum_prop_return\fP\^);
+.HP
+int XChangeProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom
+\fIproperty\fP\^, Atom \fItype\fP\^, int \fIformat\fP\^, int \fImode\fP\^,
+unsigned char *\fIdata\fP\^, int \fInelements\fP\^);
+.HP
+int XRotateWindowProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+Atom \fIproperties\fP\^[]\^, int \fInum_prop\fP\^, int \fInpositions\fP\^);
+.HP
+int XDeleteProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom
+\fIproperty\fP\^);
+.SH ARGUMENTS
+.IP \fIactual_format_return\fP 1i
+Returns the actual format of the property.
+.IP \fIactual_type_return\fP 1i
+Returns the atom identifier that defines the actual type of the property.
+.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 \fIdata\fP 1i
+Specifies the property data.
+.IP \fIdelete\fP 1i
+Specifies a Boolean value that determines whether the property is deleted.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.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
+.ZN XChangeProperty .
+.IP \fIlong_length\fP 1i
+Specifies the length in 32-bit multiples of the data to be retrieved.
+.IP \fIlong_offset\fP 1i
+Specifies the offset in the specified property (in 32-bit quantities)
+where the data is to be retrieved.
+.\" 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
+.ZN PropModeReplace ,
+.ZN PropModePrepend ,
+or
+.ZN PropModeAppend .
+.IP \fInelements\fP 1i
+Specifies the number of elements of the specified data format.
+.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 \fInum_prop\fP 1i
+Specifies the length of the properties array.
+.IP \fInum_prop_return\fP 1i
+Returns the length of the properties array.
+.IP \fInpositions\fP 1i
+Specifies the rotation amount.
+.IP \fIprop_return\fP 1i
+Returns the data in the specified format.
+If the returned format is 8, the returned data is represented as a
+char array. If the returned format is 16, the returned data is
+represented as a array of short int type and should be cast to that
+type to obtain the elements. If the returned format is 32, the
+property data will be stored as an array of longs (which in a 64-bit
+application will be 64-bit values that are padded in the upper 4 bytes).
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.IP \fIproperties\fP 1i
+Specifies the array of properties that are to be rotated.
+.IP \fIreq_type\fP 1i
+Specifies the atom identifier associated with the property type or
+.ZN AnyPropertyType .
+.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
+.ZN XGetWindowProperty .
+.ds Wi whose property you want to obtain, change, rotate or delete
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.SH DESCRIPTION
+The
+.ZN 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.
+.ZN XGetWindowProperty
+sets the return arguments as follows:
+.IP \(bu 5
+If the specified property does not exist for the specified window,
+.ZN XGetWindowProperty
+returns
+.ZN 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,
+.ZN 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
+.ZN AnyPropertyType
+to the req_type argument or the specified type matches the actual property type,
+.ZN 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
+.ZN 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
+.ZN char
+array.
+If the returned format is 16, the returned data is represented as a
+.ZN 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
+.ZN long
+array and should be cast to that type to obtain the elements.
+.LP
+.ZN 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
+.ZN True
+and bytes_after_return is zero,
+.ZN XGetWindowProperty
+deletes the property
+from the window and generates a
+.ZN PropertyNotify
+event on the window.
+.LP
+The function returns
+.ZN Success
+if it executes successfully.
+To free the resulting data,
+use
+.ZN XFree .
+.LP
+.ZN XGetWindowProperty
+can generate
+.ZN BadAtom ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN XFree .
+.LP
+.ZN XListProperties
+can generate a
+.ZN BadWindow
+error.
+.LP
+The
+.ZN XChangeProperty
+function alters the property for the specified window and
+causes the X server to generate a
+.ZN PropertyNotify
+event on that window.
+.ZN XChangeProperty
+performs the following:
+.IP \(bu 5
+If mode is
+.ZN PropModeReplace ,
+.ZN XChangeProperty
+discards the previous property value and stores the new data.
+.IP \(bu 5
+If mode is
+.ZN PropModePrepend
+or
+.ZN PropModeAppend ,
+.ZN 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
+.ZN 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
+.ZN char
+array.
+If the specified format is 16, the property data must be a
+.ZN short
+array.
+If the specified format is 32, the property data must be a
+.ZN 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
+.ZN BadAlloc
+error results.)
+.LP
+.ZN XChangeProperty
+can generate
+.ZN BadAlloc ,
+.ZN BadAtom ,
+.ZN BadMatch ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XRotateWindowProperties
+function allows you to rotate properties on a window and causes
+the X server to generate
+.ZN 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
+.ZN 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
+.ZN BadMatch
+error results.
+If a
+.ZN BadAtom
+or
+.ZN BadMatch
+error results,
+no properties are changed.
+.LP
+.ZN XRotateWindowProperties
+can generate
+.ZN BadAtom ,
+.ZN BadMatch ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XDeleteProperty
+function deletes the specified property only if the
+property was defined on the specified window
+and causes the X server to generate a
+.ZN PropertyNotify
+event on the window unless the property does not exist.
+.LP
+.ZN XDeleteProperty
+can generate
+.ZN BadAtom
+and
+.ZN BadWindow
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadAtom
+A value for an Atom argument does not name a defined Atom.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XFree(__libmansuffix__),
+XInternAtom(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XGetXCBConnection.man b/libX11/man/XGetXCBConnection.man
index 3b4ad11f7..7f579bfce 100644
--- a/libX11/man/XGetXCBConnection.man
+++ b/libX11/man/XGetXCBConnection.man
@@ -1,44 +1,44 @@
-.\" Copyright \(co 2006 Josh Triplett
-.\"
-.\" 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.
-.\"
-.TH XGetXCBConnection __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGetXCBConnection \- get the XCB connection for an Xlib Display
-.SH SYNTAX
-.HP
- #include <X11/Xlib-xcb.h>
-.HP
-xcb_connection_t *XGetXCBConnection(Display *\fIdpy\fP);
-.SH ARGUMENTS
-.IP \fIdpy\fP 1i
-Specifies the connection to the X server.
-.IN "Environment" "DISPLAY"
-.SH DESCRIPTION
-The \fIXGetXCBConnection\fP function returns the XCB connection associated with
-an Xlib Display. Clients can use this XCB connection with functions from the
-XCB library, just as they would with an XCB connection created with XCB.
-Callers of this function must link to libX11-xcb and a version of Xlib built
-with XCB support.
-.SH "SEE ALSO"
-XOpenDisplay(__libmansuffix__),
-XSetEventQueueOwner(__libmansuffix__),
-.br
-\fIXlib \- C Language X Interface\fP
+.\" Copyright \(co 2006 Josh Triplett
+.\"
+.\" 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.
+.\"
+.TH XGetXCBConnection __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGetXCBConnection \- get the XCB connection for an Xlib Display
+.SH SYNTAX
+.HP
+ #include <X11/Xlib-xcb.h>
+.HP
+xcb_connection_t *XGetXCBConnection(Display *\fIdpy\fP);
+.SH ARGUMENTS
+.IP \fIdpy\fP 1i
+Specifies the connection to the X server.
+.IN "Environment" "DISPLAY"
+.SH DESCRIPTION
+The \fIXGetXCBConnection\fP function returns the XCB connection associated with
+an Xlib Display. Clients can use this XCB connection with functions from the
+XCB library, just as they would with an XCB connection created with XCB.
+Callers of this function must link to libX11-xcb and a version of Xlib built
+with XCB support.
+.SH "SEE ALSO"
+XOpenDisplay(__libmansuffix__),
+XSetEventQueueOwner(__libmansuffix__),
+.br
+\fIXlib \- C Language X Interface\fP
diff --git a/libX11/man/XGrabButton.man b/libX11/man/XGrabButton.man
index 9a7f0c210..30701d95e 100644
--- a/libX11/man/XGrabButton.man
+++ b/libX11/man/XGrabButton.man
@@ -1,312 +1,312 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XGrabButton __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGrabButton, XUngrabButton \- grab pointer buttons
-.SH SYNTAX
-.HP
-int XGrabButton\^(\^Display *\fIdisplay\fP\^, unsigned int \fIbutton\fP\^,
-unsigned int \fImodifiers\fP\^, Window \fIgrab_window\fP\^, Bool
-\fIowner_events\fP\^, unsigned int \fIevent_mask\fP\^, int
-\fIpointer_mode\fP\^, \fIkeyboard_mode\fP\^, Window \fIconfine_to\fP\^, Cursor
-\fIcursor\fP\^);
-.HP
-int XUngrabButton\^(\^Display *\fIdisplay\fP\^, unsigned int \fIbutton\fP\^,
-unsigned int \fImodifiers\fP\^, Window \fIgrab_window\fP\^);
-.SH ARGUMENTS
-.ds Bu grabbed or released
-.IP \fIbutton\fP 1i
-Specifies the pointer button that is to be \*(Bu or
-.ZN AnyButton .
-.IP \fIconfine_to\fP 1i
-Specifies the window to confine the pointer in or
-.ZN None .
-.IP \fIcursor\fP 1i
-Specifies the cursor that is to be displayed or
-.ZN None .
-.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 \fIgrab_window\fP 1i
-Specifies the grab window.
-.IP \fIkeyboard_mode\fP 1i
-Specifies further processing of keyboard events.
-You can pass
-.ZN GrabModeSync
-or
-.ZN GrabModeAsync .
-.IP \fImodifiers\fP 1i
-Specifies the set of keymasks or
-.ZN AnyModifier .
-The mask is the bitwise inclusive OR of the valid keymask bits.
-.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 \fIpointer_mode\fP 1i
-Specifies further processing of pointer events.
-You can pass
-.ZN GrabModeSync
-or
-.ZN GrabModeAsync .
-.SH DESCRIPTION
-The
-.ZN XGrabButton
-function establishes a passive grab.
-In the future,
-the pointer is actively grabbed (as for
-.ZN XGrabPointer ),
-the last-pointer-grab time is set to the time at which the button was pressed
-(as transmitted in the
-.ZN ButtonPress
-event), and the
-.ZN 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
-.ZN 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),
-at which point a
-.ZN ButtonRelease
-event is reported to the grabbing window.
-.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
-.ZN 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
-.ZN 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 a
-.ZN XGrabButton
-with the same button/key combination on the same window, a
-.ZN BadAccess
-error results.
-When using
-.ZN AnyModifier
-or
-.ZN AnyButton ,
-the request fails completely,
-and a
-.ZN BadAccess
-error results (no grabs are
-established) if there is a conflicting grab for any combination.
-.ZN XGrabButton
-has no effect on an active grab.
-.LP
-.ZN XGrabButton
-can generate
-.ZN BadCursor ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XUngrabButton
-function releases the passive button/key combination on the specified window if
-it was grabbed by this client.
-A modifiers of
-.ZN AnyModifier
-is
-equivalent to issuing
-the ungrab request for all possible modifier combinations, including
-the combination of no modifiers.
-A button of
-.ZN AnyButton
-is equivalent to issuing the
-request for all possible buttons.
-.ZN XUngrabButton
-has no effect on an active grab.
-.LP
-.ZN XUngrabButton
-can generate
-.ZN BadValue
-and
-.ZN BadWindow
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadCursor
-A value for a Cursor argument does not name a defined Cursor.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllowEvents(__libmansuffix__),
-XGrabPointer(__libmansuffix__),
-XGrabKey(__libmansuffix__),
-XGrabKeyboard(__libmansuffix__),
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XGrabButton __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGrabButton, XUngrabButton \- grab pointer buttons
+.SH SYNTAX
+.HP
+int XGrabButton\^(\^Display *\fIdisplay\fP\^, unsigned int \fIbutton\fP\^,
+unsigned int \fImodifiers\fP\^, Window \fIgrab_window\fP\^, Bool
+\fIowner_events\fP\^, unsigned int \fIevent_mask\fP\^, int
+\fIpointer_mode\fP\^, \fIkeyboard_mode\fP\^, Window \fIconfine_to\fP\^, Cursor
+\fIcursor\fP\^);
+.HP
+int XUngrabButton\^(\^Display *\fIdisplay\fP\^, unsigned int \fIbutton\fP\^,
+unsigned int \fImodifiers\fP\^, Window \fIgrab_window\fP\^);
+.SH ARGUMENTS
+.ds Bu grabbed or released
+.IP \fIbutton\fP 1i
+Specifies the pointer button that is to be \*(Bu or
+.ZN AnyButton .
+.IP \fIconfine_to\fP 1i
+Specifies the window to confine the pointer in or
+.ZN None .
+.IP \fIcursor\fP 1i
+Specifies the cursor that is to be displayed or
+.ZN None .
+.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 \fIgrab_window\fP 1i
+Specifies the grab window.
+.IP \fIkeyboard_mode\fP 1i
+Specifies further processing of keyboard events.
+You can pass
+.ZN GrabModeSync
+or
+.ZN GrabModeAsync .
+.IP \fImodifiers\fP 1i
+Specifies the set of keymasks or
+.ZN AnyModifier .
+The mask is the bitwise inclusive OR of the valid keymask bits.
+.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 \fIpointer_mode\fP 1i
+Specifies further processing of pointer events.
+You can pass
+.ZN GrabModeSync
+or
+.ZN GrabModeAsync .
+.SH DESCRIPTION
+The
+.ZN XGrabButton
+function establishes a passive grab.
+In the future,
+the pointer is actively grabbed (as for
+.ZN XGrabPointer ),
+the last-pointer-grab time is set to the time at which the button was pressed
+(as transmitted in the
+.ZN ButtonPress
+event), and the
+.ZN 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
+.ZN 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),
+at which point a
+.ZN ButtonRelease
+event is reported to the grabbing window.
+.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
+.ZN 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
+.ZN 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 a
+.ZN XGrabButton
+with the same button/key combination on the same window, a
+.ZN BadAccess
+error results.
+When using
+.ZN AnyModifier
+or
+.ZN AnyButton ,
+the request fails completely,
+and a
+.ZN BadAccess
+error results (no grabs are
+established) if there is a conflicting grab for any combination.
+.ZN XGrabButton
+has no effect on an active grab.
+.LP
+.ZN XGrabButton
+can generate
+.ZN BadCursor ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XUngrabButton
+function releases the passive button/key combination on the specified window if
+it was grabbed by this client.
+A modifiers of
+.ZN AnyModifier
+is
+equivalent to issuing
+the ungrab request for all possible modifier combinations, including
+the combination of no modifiers.
+A button of
+.ZN AnyButton
+is equivalent to issuing the
+request for all possible buttons.
+.ZN XUngrabButton
+has no effect on an active grab.
+.LP
+.ZN XUngrabButton
+can generate
+.ZN BadValue
+and
+.ZN BadWindow
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadCursor
+A value for a Cursor argument does not name a defined Cursor.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllowEvents(__libmansuffix__),
+XGrabPointer(__libmansuffix__),
+XGrabKey(__libmansuffix__),
+XGrabKeyboard(__libmansuffix__),
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XGrabKeyboard.man b/libX11/man/XGrabKeyboard.man
index e448b3be2..08397c027 100644
--- a/libX11/man/XGrabKeyboard.man
+++ b/libX11/man/XGrabKeyboard.man
@@ -1,297 +1,297 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XGrabKeyboard __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGrabKeyboard, XUngrabKeyboard \- grab the keyboard
-.SH SYNTAX
-.HP
-int XGrabKeyboard\^(\^Display *\fIdisplay\fP\^, Window \fIgrab_window\fP\^,
-Bool \fIowner_events\fP\^, int \fIpointer_mode\fP\^, int
-\fIkeyboard_mode\fP\^, Time \fItime\fP\^);
-.HP
-int XUngrabKeyboard\^(\^Display *\fIdisplay\fP\^, Time \fItime\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgrab_window\fP 1i
-Specifies the grab window.
-.IP \fIkeyboard_mode\fP 1i
-Specifies further processing of keyboard events.
-You can pass
-.ZN GrabModeSync
-or
-.ZN GrabModeAsync .
-.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
-.ZN GrabModeSync
-or
-.ZN GrabModeAsync .
-.IP \fItime\fP 1i
-Specifies the time.
-You can pass either a timestamp or
-.ZN CurrentTime .
-.SH DESCRIPTION
-The
-.ZN XGrabKeyboard
-function actively grabs control of the keyboard and generates
-.ZN FocusIn
-and
-.ZN FocusOut
-events.
-Further key events are reported only to the
-grabbing client.
-.ZN XGrabKeyboard
-overrides any active keyboard grab by this client.
-If owner_events is
-.ZN False ,
-all generated key events are reported with
-respect to grab_window.
-If owner_events is
-.ZN 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
-.ZN KeyPress
-and
-.ZN KeyRelease
-events are always reported,
-independent of any event selection made by the client.
-.LP
-If the keyboard_mode argument is
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN GrabModeAsync ,
-pointer event processing is unaffected
-by activation of the grab.
-If pointer_mode is
-.ZN 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
-.ZN 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,
-.ZN XGrabKeyboard
-fails and returns
-.ZN AlreadyGrabbed .
-If grab_window is not viewable,
-it fails and returns
-.ZN GrabNotViewable .
-If the keyboard is frozen by an active grab of another client,
-it fails and returns
-.ZN 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
-.ZN GrabInvalidTime .
-Otherwise, the last-keyboard-grab time is set to the specified time
-.Pn ( CurrentTime
-is replaced by the current X server time).
-.LP
-.ZN XGrabKeyboard
-can generate
-.ZN BadValue
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XUngrabKeyboard
-function
-releases the keyboard and any queued events if this client has it actively grabbed from
-either
-.ZN XGrabKeyboard
-or
-.ZN XGrabKey .
-.ZN 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
-.ZN FocusIn
-and
-.ZN FocusOut
-events.
-The X server automatically performs an
-.ZN UngrabKeyboard
-request if the event window for an
-active keyboard grab becomes not viewable.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllowEvents(__libmansuffix__),
-XGrabButton(__libmansuffix__),
-XGrabKey(__libmansuffix__),
-XGrabPointer(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XGrabKeyboard __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGrabKeyboard, XUngrabKeyboard \- grab the keyboard
+.SH SYNTAX
+.HP
+int XGrabKeyboard\^(\^Display *\fIdisplay\fP\^, Window \fIgrab_window\fP\^,
+Bool \fIowner_events\fP\^, int \fIpointer_mode\fP\^, int
+\fIkeyboard_mode\fP\^, Time \fItime\fP\^);
+.HP
+int XUngrabKeyboard\^(\^Display *\fIdisplay\fP\^, Time \fItime\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgrab_window\fP 1i
+Specifies the grab window.
+.IP \fIkeyboard_mode\fP 1i
+Specifies further processing of keyboard events.
+You can pass
+.ZN GrabModeSync
+or
+.ZN GrabModeAsync .
+.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
+.ZN GrabModeSync
+or
+.ZN GrabModeAsync .
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.ZN CurrentTime .
+.SH DESCRIPTION
+The
+.ZN XGrabKeyboard
+function actively grabs control of the keyboard and generates
+.ZN FocusIn
+and
+.ZN FocusOut
+events.
+Further key events are reported only to the
+grabbing client.
+.ZN XGrabKeyboard
+overrides any active keyboard grab by this client.
+If owner_events is
+.ZN False ,
+all generated key events are reported with
+respect to grab_window.
+If owner_events is
+.ZN 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
+.ZN KeyPress
+and
+.ZN KeyRelease
+events are always reported,
+independent of any event selection made by the client.
+.LP
+If the keyboard_mode argument is
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN GrabModeAsync ,
+pointer event processing is unaffected
+by activation of the grab.
+If pointer_mode is
+.ZN 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
+.ZN 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,
+.ZN XGrabKeyboard
+fails and returns
+.ZN AlreadyGrabbed .
+If grab_window is not viewable,
+it fails and returns
+.ZN GrabNotViewable .
+If the keyboard is frozen by an active grab of another client,
+it fails and returns
+.ZN 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
+.ZN GrabInvalidTime .
+Otherwise, the last-keyboard-grab time is set to the specified time
+.Pn ( CurrentTime
+is replaced by the current X server time).
+.LP
+.ZN XGrabKeyboard
+can generate
+.ZN BadValue
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XUngrabKeyboard
+function
+releases the keyboard and any queued events if this client has it actively grabbed from
+either
+.ZN XGrabKeyboard
+or
+.ZN XGrabKey .
+.ZN 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
+.ZN FocusIn
+and
+.ZN FocusOut
+events.
+The X server automatically performs an
+.ZN UngrabKeyboard
+request if the event window for an
+active keyboard grab becomes not viewable.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllowEvents(__libmansuffix__),
+XGrabButton(__libmansuffix__),
+XGrabKey(__libmansuffix__),
+XGrabPointer(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XGrabPointer.man b/libX11/man/XGrabPointer.man
index 23426cc6f..f18900526 100644
--- a/libX11/man/XGrabPointer.man
+++ b/libX11/man/XGrabPointer.man
@@ -1,365 +1,365 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XGrabPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGrabPointer, XUngrabPointer, XChangeActivePointerGrab \- grab the pointer
-.SH SYNTAX
-.HP
-int XGrabPointer\^(\^Display *\fIdisplay\fP\^, Window \fIgrab_window\fP\^,
-Bool \fIowner_events\fP\^, unsigned int \fIevent_mask\fP\^, int
-\fIpointer_mode\fP\^, int \fIkeyboard_mode\fP\^, Window \fIconfine_to\fP\^,
-Cursor \fIcursor\fP\^, Time \fItime\fP\^);
-.HP
-int XUngrabPointer\^(\^Display *\fIdisplay\fP\^, Time \fItime\fP\^);
-.HP
-int XChangeActivePointerGrab\^(\^Display *\fIdisplay\fP\^, unsigned int
-\fIevent_mask\fP\^, Cursor \fIcursor\fP\^, Time \fItime\fP\^);
-.SH ARGUMENTS
-.IP \fIconfine_to\fP 1i
-Specifies the window to confine the pointer in or
-.ZN None .
-.IP \fIcursor\fP 1i
-Specifies the cursor that is to be displayed during the grab or
-.ZN None .
-.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 \fIgrab_window\fP 1i
-Specifies the grab window.
-.IP \fIkeyboard_mode\fP 1i
-Specifies further processing of keyboard events.
-You can pass
-.ZN GrabModeSync
-or
-.ZN GrabModeAsync .
-.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 \fIpointer_mode\fP 1i
-Specifies further processing of pointer events.
-You can pass
-.ZN GrabModeSync
-or
-.ZN GrabModeAsync .
-.IP \fItime\fP 1i
-Specifies the time.
-You can pass either a timestamp or
-.ZN CurrentTime .
-.SH DESCRIPTION
-The
-.ZN XGrabPointer
-function actively grabs control of the pointer and returns
-.ZN GrabSuccess
-if the grab was successful.
-Further pointer events are reported only to the grabbing client.
-.ZN XGrabPointer
-overrides any active pointer grab by this client.
-If owner_events is
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN GrabModeAsync ,
-keyboard event processing is unaffected by activation of the grab.
-If the keyboard_mode is
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN XGrabPointer
-generates
-.ZN EnterNotify
-and
-.ZN 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,
-.ZN XGrabPointer
-fails and returns
-.ZN GrabNotViewable .
-If the pointer is actively grabbed by some other client,
-it fails and returns
-.ZN AlreadyGrabbed .
-If the pointer is frozen by an active grab of another client,
-it fails and returns
-.ZN 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
-.ZN GrabInvalidTime .
-Otherwise, the last-pointer-grab time is set to the specified time
-.Pn ( CurrentTime
-is replaced by the current X server time).
-.LP
-.ZN XGrabPointer
-can generate
-.ZN BadCursor ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XUngrabPointer
-function releases the pointer and any queued events
-if this client has actively grabbed the pointer from
-.ZN XGrabPointer ,
-.ZN XGrabButton ,
-or from a normal button press.
-.ZN 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
-.ZN EnterNotify
-and
-.ZN LeaveNotify
-events.
-The X server performs an
-.ZN 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
-The
-.ZN 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 a
-.ZN XGrabButton .
-The interpretation of event_mask and cursor is the same as described in
-.ZN XGrabPointer .
-.LP
-.ZN XChangeActivePointerGrab
-can generate a
-.ZN BadCursor
-and
-.ZN BadValue
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadCursor
-A value for a Cursor argument does not name a defined Cursor.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllowEvents(__libmansuffix__),
-XGrabButton(__libmansuffix__),
-XGrabKey(__libmansuffix__),
-XGrabKeyboard(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XGrabPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGrabPointer, XUngrabPointer, XChangeActivePointerGrab \- grab the pointer
+.SH SYNTAX
+.HP
+int XGrabPointer\^(\^Display *\fIdisplay\fP\^, Window \fIgrab_window\fP\^,
+Bool \fIowner_events\fP\^, unsigned int \fIevent_mask\fP\^, int
+\fIpointer_mode\fP\^, int \fIkeyboard_mode\fP\^, Window \fIconfine_to\fP\^,
+Cursor \fIcursor\fP\^, Time \fItime\fP\^);
+.HP
+int XUngrabPointer\^(\^Display *\fIdisplay\fP\^, Time \fItime\fP\^);
+.HP
+int XChangeActivePointerGrab\^(\^Display *\fIdisplay\fP\^, unsigned int
+\fIevent_mask\fP\^, Cursor \fIcursor\fP\^, Time \fItime\fP\^);
+.SH ARGUMENTS
+.IP \fIconfine_to\fP 1i
+Specifies the window to confine the pointer in or
+.ZN None .
+.IP \fIcursor\fP 1i
+Specifies the cursor that is to be displayed during the grab or
+.ZN None .
+.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 \fIgrab_window\fP 1i
+Specifies the grab window.
+.IP \fIkeyboard_mode\fP 1i
+Specifies further processing of keyboard events.
+You can pass
+.ZN GrabModeSync
+or
+.ZN GrabModeAsync .
+.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 \fIpointer_mode\fP 1i
+Specifies further processing of pointer events.
+You can pass
+.ZN GrabModeSync
+or
+.ZN GrabModeAsync .
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.ZN CurrentTime .
+.SH DESCRIPTION
+The
+.ZN XGrabPointer
+function actively grabs control of the pointer and returns
+.ZN GrabSuccess
+if the grab was successful.
+Further pointer events are reported only to the grabbing client.
+.ZN XGrabPointer
+overrides any active pointer grab by this client.
+If owner_events is
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN GrabModeAsync ,
+keyboard event processing is unaffected by activation of the grab.
+If the keyboard_mode is
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN XGrabPointer
+generates
+.ZN EnterNotify
+and
+.ZN 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,
+.ZN XGrabPointer
+fails and returns
+.ZN GrabNotViewable .
+If the pointer is actively grabbed by some other client,
+it fails and returns
+.ZN AlreadyGrabbed .
+If the pointer is frozen by an active grab of another client,
+it fails and returns
+.ZN 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
+.ZN GrabInvalidTime .
+Otherwise, the last-pointer-grab time is set to the specified time
+.Pn ( CurrentTime
+is replaced by the current X server time).
+.LP
+.ZN XGrabPointer
+can generate
+.ZN BadCursor ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XUngrabPointer
+function releases the pointer and any queued events
+if this client has actively grabbed the pointer from
+.ZN XGrabPointer ,
+.ZN XGrabButton ,
+or from a normal button press.
+.ZN 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
+.ZN EnterNotify
+and
+.ZN LeaveNotify
+events.
+The X server performs an
+.ZN 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
+The
+.ZN 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 a
+.ZN XGrabButton .
+The interpretation of event_mask and cursor is the same as described in
+.ZN XGrabPointer .
+.LP
+.ZN XChangeActivePointerGrab
+can generate a
+.ZN BadCursor
+and
+.ZN BadValue
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadCursor
+A value for a Cursor argument does not name a defined Cursor.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllowEvents(__libmansuffix__),
+XGrabButton(__libmansuffix__),
+XGrabKey(__libmansuffix__),
+XGrabKeyboard(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XGrabServer.man b/libX11/man/XGrabServer.man
index 03b2b90fb..9cfee3935 100644
--- a/libX11/man/XGrabServer.man
+++ b/libX11/man/XGrabServer.man
@@ -1,170 +1,170 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XGrabServer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGrabServer, XUngrabServer \- grab the server
-.SH SYNTAX
-.HP
-int XGrabServer\^(\^Display *\fIdisplay\fP\^);
-.HP
-int XUngrabServer\^(\^Display *\fIdisplay\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.SH DESCRIPTION
-The
-.ZN 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
-The
-.ZN XUngrabServer
-function restarts processing of requests and close downs on other connections.
-You should avoid grabbing the X server as much as possible.
-.SH "SEE ALSO"
-XGrabButton(__libmansuffix__),
-XGrabKey(__libmansuffix__),
-XGrabKeyboard(__libmansuffix__),
-XGrabPointer(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XGrabServer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGrabServer, XUngrabServer \- grab the server
+.SH SYNTAX
+.HP
+int XGrabServer\^(\^Display *\fIdisplay\fP\^);
+.HP
+int XUngrabServer\^(\^Display *\fIdisplay\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.SH DESCRIPTION
+The
+.ZN 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
+The
+.ZN XUngrabServer
+function restarts processing of requests and close downs on other connections.
+You should avoid grabbing the X server as much as possible.
+.SH "SEE ALSO"
+XGrabButton(__libmansuffix__),
+XGrabKey(__libmansuffix__),
+XGrabKeyboard(__libmansuffix__),
+XGrabPointer(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XGraphicsExposeEvent.man b/libX11/man/XGraphicsExposeEvent.man
index 8360822ab..95758d9da 100644
--- a/libX11/man/XGraphicsExposeEvent.man
+++ b/libX11/man/XGraphicsExposeEvent.man
@@ -1,276 +1,276 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XGraphicsExposeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGraphicsExposeEvent, XNoExposeEvent \- GraphicsExpose and NoExpose event structures
-.SH STRUCTURES
-The structures for
-.ZN GraphicsExpose
-and
-.ZN NoExpose
-events contain:
-.LP
-.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
-.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
-When you receive these events,
-their structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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
-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
-.ZN X_CopyArea
-or
-.ZN X_CopyPlane .
-If it is
-.ZN X_CopyArea ,
-a call to
-.ZN XCopyArea
-initiated the request.
-If it is
-.ZN X_CopyPlane ,
-a call to
-.ZN 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
-.ZN 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
-.ZN GraphicsExpose
-events to follow.
-If count is zero, no more
-.ZN GraphicsExpose
-events follow for this window.
-However, if count is nonzero, at least that number of
-.ZN GraphicsExpose
-events (and possibly more) are to follow for this window.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCopyArea(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XGraphicsExposeEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGraphicsExposeEvent, XNoExposeEvent \- GraphicsExpose and NoExpose event structures
+.SH STRUCTURES
+The structures for
+.ZN GraphicsExpose
+and
+.ZN NoExpose
+events contain:
+.LP
+.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
+.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
+When you receive these events,
+their structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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
+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
+.ZN X_CopyArea
+or
+.ZN X_CopyPlane .
+If it is
+.ZN X_CopyArea ,
+a call to
+.ZN XCopyArea
+initiated the request.
+If it is
+.ZN X_CopyPlane ,
+a call to
+.ZN 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
+.ZN 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
+.ZN GraphicsExpose
+events to follow.
+If count is zero, no more
+.ZN GraphicsExpose
+events follow for this window.
+However, if count is nonzero, at least that number of
+.ZN GraphicsExpose
+events (and possibly more) are to follow for this window.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCopyArea(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XGravityEvent.man b/libX11/man/XGravityEvent.man
index 09f56546f..9c3ec8027 100644
--- a/libX11/man/XGravityEvent.man
+++ b/libX11/man/XGravityEvent.man
@@ -1,224 +1,224 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XGravityEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGravityEvent \- GravityNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN GravityNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 event member is set either to the window that was moved or to its parent,
-depending on whether
-.ZN StructureNotify
-or
-.ZN 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.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XGravityEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGravityEvent \- GravityNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN GravityNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 event member is set either to the window that was moved or to its parent,
+depending on whether
+.ZN StructureNotify
+or
+.ZN 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.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XIconifyWindow.man b/libX11/man/XIconifyWindow.man
index a4e6be848..40b1a7f1d 100644
--- a/libX11/man/XIconifyWindow.man
+++ b/libX11/man/XIconifyWindow.man
@@ -1,256 +1,256 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XIconifyWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XIconifyWindow, XWithdrawWindow, XReconfigureWMWindow \- manipulate top-level windows
-.SH SYNTAX
-.HP
-Status XIconifyWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP, int
-\fIscreen_number\fP\^);
-.HP
-Status XWithdrawWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int
-\fIscreen_number\fP\^);
-.HP
-Status XReconfigureWMWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-int \fIscreen_number\fP\^, unsigned int \fIvalue_mask\fP\^, XWindowChanges
-*\fIvalues\fP);
-.SH ARGUMENTS
-.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 \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
-.ZN XWindowChanges
-structure.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-The
-.ZN XIconifyWindow
-function sends a WM_CHANGE_STATE
-.ZN ClientMessage
-event with a format of 32 and a first data element of
-.ZN 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
-.ZN SubstructureNotifyMask |
-.ZN 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,
-.ZN 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.
-.LP
-The
-.ZN XWithdrawWindow
-function unmaps the specified window
-and sends a synthetic
-.ZN 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
-.ZN UnmapNotify
-event is successfully sent;
-otherwise, it returns a zero status.
-.LP
-.ZN XWithdrawWindow
-can generate a
-.ZN BadWindow
-error.
-.LP
-The
-.ZN XReconfigureWMWindow
-function issues a
-.ZN ConfigureWindow
-request on the specified top-level window.
-If the stacking mode is changed and the request fails with a
-.ZN BadMatch
-error,
-the error is trapped by Xlib and a synthetic
-.ZN 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
-.ZN XReconfigureWMWindow
-can generate
-.ZN BadValue
-and
-.ZN BadWindow
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XChangeWindowAttributes(__libmansuffix__),
-XConfigureWindow(__libmansuffix__),
-XCreateWindow(__libmansuffix__),
-XDestroyWindow(__libmansuffix__),
-XRaiseWindow(__libmansuffix__),
-XMapWindow(__libmansuffix__),
-XUnmapWindow(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XIconifyWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XIconifyWindow, XWithdrawWindow, XReconfigureWMWindow \- manipulate top-level windows
+.SH SYNTAX
+.HP
+Status XIconifyWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP, int
+\fIscreen_number\fP\^);
+.HP
+Status XWithdrawWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, int
+\fIscreen_number\fP\^);
+.HP
+Status XReconfigureWMWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+int \fIscreen_number\fP\^, unsigned int \fIvalue_mask\fP\^, XWindowChanges
+*\fIvalues\fP);
+.SH ARGUMENTS
+.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 \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
+.ZN XWindowChanges
+structure.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+The
+.ZN XIconifyWindow
+function sends a WM_CHANGE_STATE
+.ZN ClientMessage
+event with a format of 32 and a first data element of
+.ZN 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
+.ZN SubstructureNotifyMask |
+.ZN 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,
+.ZN 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.
+.LP
+The
+.ZN XWithdrawWindow
+function unmaps the specified window
+and sends a synthetic
+.ZN 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
+.ZN UnmapNotify
+event is successfully sent;
+otherwise, it returns a zero status.
+.LP
+.ZN XWithdrawWindow
+can generate a
+.ZN BadWindow
+error.
+.LP
+The
+.ZN XReconfigureWMWindow
+function issues a
+.ZN ConfigureWindow
+request on the specified top-level window.
+If the stacking mode is changed and the request fails with a
+.ZN BadMatch
+error,
+the error is trapped by Xlib and a synthetic
+.ZN 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
+.ZN XReconfigureWMWindow
+can generate
+.ZN BadValue
+and
+.ZN BadWindow
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XChangeWindowAttributes(__libmansuffix__),
+XConfigureWindow(__libmansuffix__),
+XCreateWindow(__libmansuffix__),
+XDestroyWindow(__libmansuffix__),
+XRaiseWindow(__libmansuffix__),
+XMapWindow(__libmansuffix__),
+XUnmapWindow(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XIfEvent.man b/libX11/man/XIfEvent.man
index ebfbf8c69..4b5ef141d 100644
--- a/libX11/man/XIfEvent.man
+++ b/libX11/man/XIfEvent.man
@@ -1,251 +1,251 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XIfEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XIfEvent, XCheckIfEvent, XPeekIfEvent \- check the event queue with a predicate procedure
-.SH SYNTAX
-.HP
-int XIfEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^, Bool
-(\^*\fIpredicate\fP\^)\^(\^)\^, XPointer \fIarg\fP\^);
-.HP
-Bool XCheckIfEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^,
-Bool (\^*\fIpredicate\fP\^)\^(\^)\^, XPointer \fIarg\fP\^);
-.HP
-int XPeekIfEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^,
-Bool (\^*\fIpredicate\fP\^)\^(\^)\^, XPointer \fIarg\fP\^);
-.SH ARGUMENTS
-.IP \fIarg\fP 1i
-Specifies the user-supplied argument that will be passed to the predicate procedure.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.ds Ev \ either a copy of or
-.IP \fIevent_return\fP 1i
-Returns\*(Ev 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.
-.SH DESCRIPTION
-The
-.ZN XIfEvent
-function completes only when the specified predicate
-procedure returns
-.ZN True
-for an event,
-which indicates an event in the queue matches.
-.ZN XIfEvent
-flushes the output buffer if it blocks waiting for additional events.
-.ZN XIfEvent
-removes the matching event from the queue
-and copies the structure into the client-supplied
-.ZN XEvent
-structure.
-.LP
-When the predicate procedure finds a match,
-.ZN XCheckIfEvent
-copies the matched event into the client-supplied
-.ZN XEvent
-structure and returns
-.ZN True .
-(This event is removed from the queue.)
-If the predicate procedure finds no match,
-.ZN XCheckIfEvent
-returns
-.ZN False ,
-and the output buffer will have been flushed.
-All earlier events stored in the queue are not discarded.
-.LP
-The
-.ZN XPeekIfEvent
-function returns only when the specified predicate
-procedure returns
-.ZN True
-for an event.
-After the predicate procedure finds a match,
-.ZN XPeekIfEvent
-copies the matched event into the client-supplied
-.ZN XEvent
-structure without removing the event from the queue.
-.ZN XPeekIfEvent
-flushes the output buffer if it blocks waiting for additional events.
-.LP
-Each of these functions 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
-.ZN XLockDisplay .
-.LP
-The predicate procedure and its associated arguments are:
-.HP
-Bool (\^*\fIpredicate\fP\^)\^(\^Display *\fIdisplay\fP, XEvent *\fIevent\fP, XPointer \fIarg\fP\^)
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIevent\fP 1i
-Specifies the
-.ZN XEvent
-structure.
-.IP \fIarg\fP 1i
-Specifies the argument passed in from the
-.ZN XIfEvent ,
-.ZN XCheckIfEvent ,
-or
-.ZN XPeekIfEvent
-function.
-.LP
-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
-.ZN True .
-If it did not find a match, it must return
-.ZN False .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XNextEvent(__libmansuffix__),
-XPutBackEvent(__libmansuffix__)
-XSendEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XIfEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XIfEvent, XCheckIfEvent, XPeekIfEvent \- check the event queue with a predicate procedure
+.SH SYNTAX
+.HP
+int XIfEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^, Bool
+(\^*\fIpredicate\fP\^)\^(\^)\^, XPointer \fIarg\fP\^);
+.HP
+Bool XCheckIfEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^,
+Bool (\^*\fIpredicate\fP\^)\^(\^)\^, XPointer \fIarg\fP\^);
+.HP
+int XPeekIfEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^,
+Bool (\^*\fIpredicate\fP\^)\^(\^)\^, XPointer \fIarg\fP\^);
+.SH ARGUMENTS
+.IP \fIarg\fP 1i
+Specifies the user-supplied argument that will be passed to the predicate procedure.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Ev \ either a copy of or
+.IP \fIevent_return\fP 1i
+Returns\*(Ev 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.
+.SH DESCRIPTION
+The
+.ZN XIfEvent
+function completes only when the specified predicate
+procedure returns
+.ZN True
+for an event,
+which indicates an event in the queue matches.
+.ZN XIfEvent
+flushes the output buffer if it blocks waiting for additional events.
+.ZN XIfEvent
+removes the matching event from the queue
+and copies the structure into the client-supplied
+.ZN XEvent
+structure.
+.LP
+When the predicate procedure finds a match,
+.ZN XCheckIfEvent
+copies the matched event into the client-supplied
+.ZN XEvent
+structure and returns
+.ZN True .
+(This event is removed from the queue.)
+If the predicate procedure finds no match,
+.ZN XCheckIfEvent
+returns
+.ZN False ,
+and the output buffer will have been flushed.
+All earlier events stored in the queue are not discarded.
+.LP
+The
+.ZN XPeekIfEvent
+function returns only when the specified predicate
+procedure returns
+.ZN True
+for an event.
+After the predicate procedure finds a match,
+.ZN XPeekIfEvent
+copies the matched event into the client-supplied
+.ZN XEvent
+structure without removing the event from the queue.
+.ZN XPeekIfEvent
+flushes the output buffer if it blocks waiting for additional events.
+.LP
+Each of these functions 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
+.ZN XLockDisplay .
+.LP
+The predicate procedure and its associated arguments are:
+.HP
+Bool (\^*\fIpredicate\fP\^)\^(\^Display *\fIdisplay\fP, XEvent *\fIevent\fP, XPointer \fIarg\fP\^)
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent\fP 1i
+Specifies the
+.ZN XEvent
+structure.
+.IP \fIarg\fP 1i
+Specifies the argument passed in from the
+.ZN XIfEvent ,
+.ZN XCheckIfEvent ,
+or
+.ZN XPeekIfEvent
+function.
+.LP
+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
+.ZN True .
+If it did not find a match, it must return
+.ZN False .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XNextEvent(__libmansuffix__),
+XPutBackEvent(__libmansuffix__)
+XSendEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XInitImage.man b/libX11/man/XInitImage.man
index b58a94624..793c6cb4b 100644
--- a/libX11/man/XInitImage.man
+++ b/libX11/man/XInitImage.man
@@ -1,314 +1,314 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XCreateImage __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XInitImage, XCreateImage, XGetPixel, XPutPixel, XSubImage, XAddPixel, XDestroyImage \- image utilities
-.SH SYNTAX
-.HP
-Status XInitImage\^(\^XImage *\fIimage\fP\^);
-.HP
-XImage *XCreateImage\^(\^Display *\fIdisplay\fP\^, Visual *\fIvisual\fP\^,
-unsigned int \fIdepth\fP\^, int \fIformat\fP\^, int \fIoffset\fP\^, char
-*\fIdata\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, int
-\fIbitmap_pad\fP\^, int \fIbytes_per_line\fP\^);
-.HP
-unsigned long XGetPixel\^(\^XImage *\fIximage\fP\^, int \fIx\fP\^, int
-\fIy\fP\^);
-.HP
-int XPutPixel\^(\^XImage *\fIximage\fP\^, int \fIx\fP\^, int \fIy\fP\^,
-unsigned long \fIpixel\fP\^);
-.HP
-XImage *XSubImage\^(\^XImage *\fIximage\fP\^, int \fIx\fP\^, int \fIy\fP\^,
-unsigned int \fIsubimage_width\fP\^, unsigned int \fIsubimage_height\fP\^);
-.HP
-int XAddPixel\^(\^XImage *\fIximage\fP\^, long \fIvalue\fP\^);
-.HP
-int XDestroyImage\^(\^XImage *\^\fIximage\fP\^);
-.SH ARGUMENTS
-.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.
-.IP \fIdata\fP 1i
-Specifies the image data.
-.IP \fIdepth\fP 1i
-Specifies the depth of the image.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIformat\fP 1i
-Specifies the format for the image.
-You can pass
-.ZN XYBitmap ,
-.ZN XYPixmap ,
-or
-.ZN ZPixmap .
-.IP \fIheight\fP 1i
-Specifies the height of the image, in pixels.
-.IP \fIoffset\fP 1i
-Specifies the number of pixels to ignore at the beginning of the scanline.
-.IP \fIpixel\fP 1i
-Specifies the new pixel value.
-.IP \fIsubimage_height\fP 1i
-Specifies the height of the new subimage, in pixels.
-.IP \fIsubimage_width\fP 1i
-Specifies the width of the new subimage, in pixels.
-.IP \fIvalue\fP 1i
-Specifies the constant value that is to be added.
-.IP \fIvisual\fP 1i
-Specifies the
-.ZN Visual
-structure.
-.IP \fIwidth\fP 1i
-Specifies the width of the image, in pixels.
-.IP \fIximage\fP 1i
-Specifies the image.
-.IP \fIx\fP 1i
-.br
-.ns
-.IP \fIy\fP 1i
-Specify the x and y coordinates.
-.SH DESCRIPTION
-The
-.ZN 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,
-.ZN 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
-The
-.ZN XCreateImage
-function allocates the memory needed for an
-.ZN 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
-.ZN XImage
-structure.
-The red, green, and blue mask values are defined for Z format images only
-and are derived from the
-.ZN 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
-.ZN XCreateImage ,
-.ZN XGetImage ,
-or
-.ZN XSubImage ,
-the destroy procedure that the
-.ZN 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
-The
-.ZN 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
-The
-.ZN 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
-The
-.ZN XSubImage
-function creates a new image that is a subsection of an existing one.
-It allocates the memory necessary for the new
-.ZN 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
-The
-.ZN 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
-The
-.ZN XDestroyImage
-function deallocates the memory associated with the
-.ZN XImage
-structure.
-.SH "SEE ALSO"
-XPutImage(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XCreateImage __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XInitImage, XCreateImage, XGetPixel, XPutPixel, XSubImage, XAddPixel, XDestroyImage \- image utilities
+.SH SYNTAX
+.HP
+Status XInitImage\^(\^XImage *\fIimage\fP\^);
+.HP
+XImage *XCreateImage\^(\^Display *\fIdisplay\fP\^, Visual *\fIvisual\fP\^,
+unsigned int \fIdepth\fP\^, int \fIformat\fP\^, int \fIoffset\fP\^, char
+*\fIdata\fP\^, unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, int
+\fIbitmap_pad\fP\^, int \fIbytes_per_line\fP\^);
+.HP
+unsigned long XGetPixel\^(\^XImage *\fIximage\fP\^, int \fIx\fP\^, int
+\fIy\fP\^);
+.HP
+int XPutPixel\^(\^XImage *\fIximage\fP\^, int \fIx\fP\^, int \fIy\fP\^,
+unsigned long \fIpixel\fP\^);
+.HP
+XImage *XSubImage\^(\^XImage *\fIximage\fP\^, int \fIx\fP\^, int \fIy\fP\^,
+unsigned int \fIsubimage_width\fP\^, unsigned int \fIsubimage_height\fP\^);
+.HP
+int XAddPixel\^(\^XImage *\fIximage\fP\^, long \fIvalue\fP\^);
+.HP
+int XDestroyImage\^(\^XImage *\^\fIximage\fP\^);
+.SH ARGUMENTS
+.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.
+.IP \fIdata\fP 1i
+Specifies the image data.
+.IP \fIdepth\fP 1i
+Specifies the depth of the image.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIformat\fP 1i
+Specifies the format for the image.
+You can pass
+.ZN XYBitmap ,
+.ZN XYPixmap ,
+or
+.ZN ZPixmap .
+.IP \fIheight\fP 1i
+Specifies the height of the image, in pixels.
+.IP \fIoffset\fP 1i
+Specifies the number of pixels to ignore at the beginning of the scanline.
+.IP \fIpixel\fP 1i
+Specifies the new pixel value.
+.IP \fIsubimage_height\fP 1i
+Specifies the height of the new subimage, in pixels.
+.IP \fIsubimage_width\fP 1i
+Specifies the width of the new subimage, in pixels.
+.IP \fIvalue\fP 1i
+Specifies the constant value that is to be added.
+.IP \fIvisual\fP 1i
+Specifies the
+.ZN Visual
+structure.
+.IP \fIwidth\fP 1i
+Specifies the width of the image, in pixels.
+.IP \fIximage\fP 1i
+Specifies the image.
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates.
+.SH DESCRIPTION
+The
+.ZN 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,
+.ZN 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
+The
+.ZN XCreateImage
+function allocates the memory needed for an
+.ZN 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
+.ZN XImage
+structure.
+The red, green, and blue mask values are defined for Z format images only
+and are derived from the
+.ZN 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
+.ZN XCreateImage ,
+.ZN XGetImage ,
+or
+.ZN XSubImage ,
+the destroy procedure that the
+.ZN 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
+The
+.ZN 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
+The
+.ZN 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
+The
+.ZN XSubImage
+function creates a new image that is a subsection of an existing one.
+It allocates the memory necessary for the new
+.ZN 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
+The
+.ZN 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
+The
+.ZN XDestroyImage
+function deallocates the memory associated with the
+.ZN XImage
+structure.
+.SH "SEE ALSO"
+XPutImage(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XInitThreads.man b/libX11/man/XInitThreads.man
index 51db3f571..5ebbb64a4 100644
--- a/libX11/man/XInitThreads.man
+++ b/libX11/man/XInitThreads.man
@@ -1,203 +1,203 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XInitThreads __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XInitThreads, XLockDisplay, XUnlockDisplay \- multi-threading support
-.SH SYNTAX
-.HP
-Status XInitThreads\^(void);
-.HP
-void XLockDisplay\^(\^Display *\fIdisplay\fP\^);
-.HP
-void XUnlockDisplay\^(\^Display *\fIdisplay\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.SH DESCRIPTION
-The
-.ZN 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
-The
-.ZN 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
-.ZN XLockDisplay
-work correctly; the display will not actually be unlocked until
-.ZN XUnlockDisplay
-has been called the same number of times as
-.ZN XLockDisplay .
-This function has no effect unless Xlib was successfully initialized
-for threads using
-.ZN XInitThreads .
-.LP
-The
-.ZN 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
-.ZN XLockDisplay
-has been called multiple times by a thread, then
-.ZN 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
-.ZN XInitThreads .
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XInitThreads __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XInitThreads, XLockDisplay, XUnlockDisplay \- multi-threading support
+.SH SYNTAX
+.HP
+Status XInitThreads\^(void);
+.HP
+void XLockDisplay\^(\^Display *\fIdisplay\fP\^);
+.HP
+void XUnlockDisplay\^(\^Display *\fIdisplay\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.SH DESCRIPTION
+The
+.ZN 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
+The
+.ZN 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
+.ZN XLockDisplay
+work correctly; the display will not actually be unlocked until
+.ZN XUnlockDisplay
+has been called the same number of times as
+.ZN XLockDisplay .
+This function has no effect unless Xlib was successfully initialized
+for threads using
+.ZN XInitThreads .
+.LP
+The
+.ZN 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
+.ZN XLockDisplay
+has been called multiple times by a thread, then
+.ZN 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
+.ZN XInitThreads .
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XInstallColormap.man b/libX11/man/XInstallColormap.man
index 15a1ce5f0..77b4d1350 100644
--- a/libX11/man/XInstallColormap.man
+++ b/libX11/man/XInstallColormap.man
@@ -1,246 +1,246 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XInstallColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XInstallColormap, XUninstallColormap, XListInstalledColormaps \- control colormaps
-.SH SYNTAX
-.HP
-int XInstallColormap\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^);
-.HP
-int XUninstallColormap\^(\^Display *\fIdisplay\fP\^, Colormap
-\fIcolormap\fP\^);
-.HP
-Colormap *XListInstalledColormaps\^(\^Display *\fIdisplay\fP\^, Window
-\fIw\fP\^, int *\fInum_return\fP\^);
-.SH ARGUMENTS
-.IP \fIcolormap\fP 1i
-Specifies the colormap.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fInum_return\fP 1i
-Returns the number of currently installed colormaps.
-.ds Wi that determines the screen
-.IP \fIw\fP 1i
-Specifies the window \*(Wi.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XCreateWindow ,
-.ZN XCreateSimpleWindow ,
-.ZN XChangeWindowAttributes ,
-or
-.ZN XSetWindowColormap .
-.LP
-If the specified colormap is not already an installed colormap,
-the X server generates a
-.ZN 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
-.ZN XInstallColormap ,
-the X server generates a
-.ZN ColormapNotify
-event on each window that has that colormap.
-.LP
-.ZN XInstallColormap
-can generate a
-.ZN BadColor
-error.
-.LP
-The
-.ZN 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
-.ZN 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
-.ZN XUninstallColormap ,
-the X server generates a
-.ZN ColormapNotify
-event on each window that has that colormap.
-.LP
-.ZN XUninstallColormap
-can generate a
-.ZN BadColor
-error.
-.LP
-The
-.ZN 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
-.ZN XFree .
-.LP
-.ZN XListInstalledColormaps
-can generate a
-.ZN BadWindow
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XChangeWindowAttributes(__libmansuffix__),
-XCreateColormap(__libmansuffix__),
-XCreateWindow(__libmansuffix__),
-XFree(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XInstallColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XInstallColormap, XUninstallColormap, XListInstalledColormaps \- control colormaps
+.SH SYNTAX
+.HP
+int XInstallColormap\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^);
+.HP
+int XUninstallColormap\^(\^Display *\fIdisplay\fP\^, Colormap
+\fIcolormap\fP\^);
+.HP
+Colormap *XListInstalledColormaps\^(\^Display *\fIdisplay\fP\^, Window
+\fIw\fP\^, int *\fInum_return\fP\^);
+.SH ARGUMENTS
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInum_return\fP 1i
+Returns the number of currently installed colormaps.
+.ds Wi that determines the screen
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XCreateWindow ,
+.ZN XCreateSimpleWindow ,
+.ZN XChangeWindowAttributes ,
+or
+.ZN XSetWindowColormap .
+.LP
+If the specified colormap is not already an installed colormap,
+the X server generates a
+.ZN 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
+.ZN XInstallColormap ,
+the X server generates a
+.ZN ColormapNotify
+event on each window that has that colormap.
+.LP
+.ZN XInstallColormap
+can generate a
+.ZN BadColor
+error.
+.LP
+The
+.ZN 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
+.ZN 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
+.ZN XUninstallColormap ,
+the X server generates a
+.ZN ColormapNotify
+event on each window that has that colormap.
+.LP
+.ZN XUninstallColormap
+can generate a
+.ZN BadColor
+error.
+.LP
+The
+.ZN 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
+.ZN XFree .
+.LP
+.ZN XListInstalledColormaps
+can generate a
+.ZN BadWindow
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XChangeWindowAttributes(__libmansuffix__),
+XCreateColormap(__libmansuffix__),
+XCreateWindow(__libmansuffix__),
+XFree(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XIntersectRegion.man b/libX11/man/XIntersectRegion.man
index 8d968034a..05cd28fb4 100644
--- a/libX11/man/XIntersectRegion.man
+++ b/libX11/man/XIntersectRegion.man
@@ -1,225 +1,225 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XIntersectRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XIntersectRegion, XUnionRegion, XUnionRectWithRegion, XSubtractRegion, XXorRegion, XOffsetRegion, XShrinkRegion \- region arithmetic
-.SH SYNTAX
-.HP
-int XIntersectRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region
-\fIdr_return\fP\^);
-.HP
-int XUnionRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region
-\fIdr_return\fP\^);
-.HP
-int XUnionRectWithRegion\^(\^XRectangle *\fIrectangle\fP\^, Region
-\fIsrc_region\fP\^, Region \fIdest_region_return\fP\^);
-.HP
-int XSubtractRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region
-\fIdr_return\fP\^);
-.HP
-int XXorRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region
-\fIdr_return\fP\^);
-.HP
-int XOffsetRegion\^(\^Region \fIr\fP\^, int \fIdx\fP\^, int \fIdy\fP\^);
-.HP
-int XShrinkRegion\^(\^Region \fIr\fP\^, int \fIdx\fP\^, int \fIdy\fP\^);
-.SH ARGUMENTS
-.IP \fIdest_region_return\fP 1i
-Returns the destination region.
-.IP \fIdr_return\fP 1i
-Returns the result of the computation.
-ds Dy move or 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.
-.IP \fIr\fP 1i
-Specifies the region.
-.IP \fIrectangle\fP 1i
-Specifies the rectangle.
-.IP \fIsra\fP 1i
-.br
-.ns
-.IP \fIsrb\fP 1i
-Specify the two regions with which you want to perform the computation.
-.IP \fIsrc_region\fP 1i
-Specifies the source region to be used.
-.SH DESCRIPTION
-The
-.ZN XIntersectRegion
-function computes the intersection of two regions.
-.LP
-The
-.ZN XUnionRegion
-function computes the union of two regions.
-.LP
-The
-.ZN XUnionRectWithRegion
-function updates the destination region from a union of the specified rectangle
-and the specified source region.
-.LP
-The
-.ZN XSubtractRegion
-function subtracts srb from sra and stores the results in dr_return.
-.LP
-The
-.ZN XXorRegion
-function calculates the difference between the union and intersection
-of two regions.
-.LP
-The
-.ZN XOffsetRegion
-function moves the specified region by a specified amount.
-.LP
-The
-.ZN XShrinkRegion
-function reduces the specified region by a specified amount.
-Positive values shrink the size of the region,
-and negative values expand the region.
-.SH "SEE ALSO"
-XCreateRegion(__libmansuffix__),
-XDrawRectangle(__libmansuffix__),
-XEmptyRegion(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XIntersectRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XIntersectRegion, XUnionRegion, XUnionRectWithRegion, XSubtractRegion, XXorRegion, XOffsetRegion, XShrinkRegion \- region arithmetic
+.SH SYNTAX
+.HP
+int XIntersectRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region
+\fIdr_return\fP\^);
+.HP
+int XUnionRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region
+\fIdr_return\fP\^);
+.HP
+int XUnionRectWithRegion\^(\^XRectangle *\fIrectangle\fP\^, Region
+\fIsrc_region\fP\^, Region \fIdest_region_return\fP\^);
+.HP
+int XSubtractRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region
+\fIdr_return\fP\^);
+.HP
+int XXorRegion\^(\^Region \fIsra\fP\^, Region \fIsrb\fP\^, Region
+\fIdr_return\fP\^);
+.HP
+int XOffsetRegion\^(\^Region \fIr\fP\^, int \fIdx\fP\^, int \fIdy\fP\^);
+.HP
+int XShrinkRegion\^(\^Region \fIr\fP\^, int \fIdx\fP\^, int \fIdy\fP\^);
+.SH ARGUMENTS
+.IP \fIdest_region_return\fP 1i
+Returns the destination region.
+.IP \fIdr_return\fP 1i
+Returns the result of the computation.
+ds Dy move or 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.
+.IP \fIr\fP 1i
+Specifies the region.
+.IP \fIrectangle\fP 1i
+Specifies the rectangle.
+.IP \fIsra\fP 1i
+.br
+.ns
+.IP \fIsrb\fP 1i
+Specify the two regions with which you want to perform the computation.
+.IP \fIsrc_region\fP 1i
+Specifies the source region to be used.
+.SH DESCRIPTION
+The
+.ZN XIntersectRegion
+function computes the intersection of two regions.
+.LP
+The
+.ZN XUnionRegion
+function computes the union of two regions.
+.LP
+The
+.ZN XUnionRectWithRegion
+function updates the destination region from a union of the specified rectangle
+and the specified source region.
+.LP
+The
+.ZN XSubtractRegion
+function subtracts srb from sra and stores the results in dr_return.
+.LP
+The
+.ZN XXorRegion
+function calculates the difference between the union and intersection
+of two regions.
+.LP
+The
+.ZN XOffsetRegion
+function moves the specified region by a specified amount.
+.LP
+The
+.ZN XShrinkRegion
+function reduces the specified region by a specified amount.
+Positive values shrink the size of the region,
+and negative values expand the region.
+.SH "SEE ALSO"
+XCreateRegion(__libmansuffix__),
+XDrawRectangle(__libmansuffix__),
+XEmptyRegion(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XKeymapEvent.man b/libX11/man/XKeymapEvent.man
index 2bd9346a0..e058c9d2c 100644
--- a/libX11/man/XKeymapEvent.man
+++ b/libX11/man/XKeymapEvent.man
@@ -1,220 +1,220 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XKeymapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XKeymapEvent \- KeymapNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN KeymapNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XKeymapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XKeymapEvent \- KeymapNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN KeymapNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XListFonts.man b/libX11/man/XListFonts.man
index 4077220fa..37126dc59 100644
--- a/libX11/man/XListFonts.man
+++ b/libX11/man/XListFonts.man
@@ -1,265 +1,265 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XListFonts __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XListFonts, XFreeFontNames, XListFontsWithInfo, XFreeFontInfo \- obtain or free font names and information
-.SH SYNTAX
-.HP
-char **XListFonts\^(\^Display *\^\fIdisplay\fP\^, char *\^\fIpattern\fP\^, int
-\fImaxnames\fP\^, int *\^\fIactual_count_return\fP\^);
-.HP
-int XFreeFontNames\^(\^char *\fIlist\fP\^[\^]\^);
-.HP
-char **XListFontsWithInfo\^(\^Display *\fIdisplay\fP\^, char *\fIpattern\fP\^,
-int \fImaxnames\fP\^, int *\fIcount_return\fP\^, XFontStruct
-**\fIinfo_return\fP\^);
-.HP
-int XFreeFontInfo(\^char **\fInames\fP\^, XFontStruct *\fIfree_info\fP, int
-\fIactual_count\fP\^);
-.SH ARGUMENTS
-.IP \fIactual_count\fP 1i
-Specifies the actual number of font names.
-
-.IP \fIactual_count_return\fP 1i
-Returns the actual number of font names.
-.IP \fIcount_return\fP 1i
-Returns the actual number of matched font names.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIinfo_return\fP 1i
-Returns the font information.
-.IP \fIfree_info\fP 1i
-Specifies the font information.
-
-.IP \fIlist\fP 1i
-Specifies the array of strings you want to free.
-.IP \fImaxnames\fP 1i
-Specifies the maximum number of names to be returned.
-.IP \fInames\fP 1i
-Specifies the list of font names.
-
-.IP \fIpattern\fP 1i
-Specifies the null-terminated pattern string that can contain wildcard
-characters.
-.SH DESCRIPTION
-The
-.ZN XListFonts
-function returns an array of available font names
-(as controlled by the font search path; see
-.ZN 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,
-.ZN XListFonts
-returns NULL.
-The client should call
-.ZN XFreeFontNames
-when finished with the result to free the memory.
-.LP
-The
-.ZN XFreeFontNames
-function frees the array and strings returned by
-.ZN XListFonts
-or
-.ZN XListFontsWithInfo .
-.LP
-The
-.ZN 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
-.ZN 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,
-.ZN XListFontsWithInfo
-returns NULL.
-.LP
-To free only the allocated name array,
-the client should call
-.ZN XFreeFontNames .
-To free both the name array and the font information array
-or to free just the font information array,
-the client should call
-.ZN XFreeFontInfo .
-.LP
-The
-.ZN 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
-.ZN XLoadQueryFont )
-is passed, the structure is freed,
-but the font is not closed; use
-.ZN XUnloadFont
-to close the font.
-.LP
-Note that
-.ZN XListFontsWithInfo
-is not thread-safe. If other threads make X requests on the same
-.ZN Display ,
-then this function's behavior is undefined.
-.SH "SEE ALSO"
-XLoadFont(__libmansuffix__),
-XSetFontPath(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XListFonts __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XListFonts, XFreeFontNames, XListFontsWithInfo, XFreeFontInfo \- obtain or free font names and information
+.SH SYNTAX
+.HP
+char **XListFonts\^(\^Display *\^\fIdisplay\fP\^, char *\^\fIpattern\fP\^, int
+\fImaxnames\fP\^, int *\^\fIactual_count_return\fP\^);
+.HP
+int XFreeFontNames\^(\^char *\fIlist\fP\^[\^]\^);
+.HP
+char **XListFontsWithInfo\^(\^Display *\fIdisplay\fP\^, char *\fIpattern\fP\^,
+int \fImaxnames\fP\^, int *\fIcount_return\fP\^, XFontStruct
+**\fIinfo_return\fP\^);
+.HP
+int XFreeFontInfo(\^char **\fInames\fP\^, XFontStruct *\fIfree_info\fP, int
+\fIactual_count\fP\^);
+.SH ARGUMENTS
+.IP \fIactual_count\fP 1i
+Specifies the actual number of font names.
+
+.IP \fIactual_count_return\fP 1i
+Returns the actual number of font names.
+.IP \fIcount_return\fP 1i
+Returns the actual number of matched font names.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIinfo_return\fP 1i
+Returns the font information.
+.IP \fIfree_info\fP 1i
+Specifies the font information.
+
+.IP \fIlist\fP 1i
+Specifies the array of strings you want to free.
+.IP \fImaxnames\fP 1i
+Specifies the maximum number of names to be returned.
+.IP \fInames\fP 1i
+Specifies the list of font names.
+
+.IP \fIpattern\fP 1i
+Specifies the null-terminated pattern string that can contain wildcard
+characters.
+.SH DESCRIPTION
+The
+.ZN XListFonts
+function returns an array of available font names
+(as controlled by the font search path; see
+.ZN 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,
+.ZN XListFonts
+returns NULL.
+The client should call
+.ZN XFreeFontNames
+when finished with the result to free the memory.
+.LP
+The
+.ZN XFreeFontNames
+function frees the array and strings returned by
+.ZN XListFonts
+or
+.ZN XListFontsWithInfo .
+.LP
+The
+.ZN 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
+.ZN 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,
+.ZN XListFontsWithInfo
+returns NULL.
+.LP
+To free only the allocated name array,
+the client should call
+.ZN XFreeFontNames .
+To free both the name array and the font information array
+or to free just the font information array,
+the client should call
+.ZN XFreeFontInfo .
+.LP
+The
+.ZN 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
+.ZN XLoadQueryFont )
+is passed, the structure is freed,
+but the font is not closed; use
+.ZN XUnloadFont
+to close the font.
+.LP
+Note that
+.ZN XListFontsWithInfo
+is not thread-safe. If other threads make X requests on the same
+.ZN Display ,
+then this function's behavior is undefined.
+.SH "SEE ALSO"
+XLoadFont(__libmansuffix__),
+XSetFontPath(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XLoadFont.man b/libX11/man/XLoadFont.man
index b85fcb25f..008d6d1ba 100644
--- a/libX11/man/XLoadFont.man
+++ b/libX11/man/XLoadFont.man
@@ -1,539 +1,539 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.de EX
-.sp
-.nf
-.ft CW
-..
-.de EE
-.ft R
-.fi
-.sp
-..
-.TH XLoadFont __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XLoadFont, XQueryFont, XLoadQueryFont, XFreeFont, XGetFontProperty, XUnloadFont, XCharStruct, XFontProp, XChar2b, XFontStruct \- load or unload fonts and font metric structures
-.SH SYNTAX
-.HP
-Font XLoadFont\^(\^Display *\fIdisplay\fP\^, char *\fIname\fP\^);
-.HP
-XFontStruct *XQueryFont\^(\^Display *\fIdisplay\fP\^, XID \fIfont_ID\fP\^);
-.HP
-XFontStruct *XLoadQueryFont\^(\^Display *\fIdisplay\fP\^, char
-*\fIname\fP\^);
-.HP
-int XFreeFont\^(\^Display *\fIdisplay\fP\^, XFontStruct *\fIfont_struct\fP\^);
-.HP
-Bool XGetFontProperty\^(\^XFontStruct *\fIfont_struct\fP\^, Atom \fIatom\fP\^,
-unsigned long *\fIvalue_return\fP\^);
-.HP
-int XUnloadFont\^(\^Display *\fIdisplay\fP\^, Font \fIfont\fP\^);
-.SH ARGUMENTS
-.IP \fIatom\fP 1i
-Specifies the atom for the property name you want returned.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIfont\fP 1i
-Specifies the font.
-.IP \fIfont_ID\fP 1i
-Specifies the font ID or the
-.ZN GContext
-ID.
-.IP \fIfont_struct\fP 1i
-Specifies the storage associated with the font.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIname\fP 1i
-Specifies the name of the font,
-which is a null-terminated string.
-.IP \fIvalue_return\fP 1i
-Returns the value of the font property.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XLoadFont
-was unsuccessful at loading the specified font,
-a
-.ZN 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
-.ZN XUnloadFont .
-.LP
-.ZN XLoadFont
-can generate
-.ZN BadAlloc
-and
-.ZN BadName
-errors.
-.LP
-The
-.ZN XQueryFont
-function returns a pointer to the
-.ZN 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
-.ZN XFontStruct
-structure will be the
-.ZN GContext
-ID, and you need to be careful when using this ID in other functions
-(see
-.ZN XGContextFromGC ).
-If the font does not exist,
-.ZN XQueryFont
-returns NULL.
-To free this data, use
-.ZN XFreeFontInfo .
-.LP
-.ZN XLoadQueryFont
-can generate a
-.ZN BadAlloc
-error.
-.LP
-The
-.ZN XLoadQueryFont
-function provides the most common way for accessing a font.
-.ZN XLoadQueryFont
-both opens (loads) the specified font and returns a pointer to the
-appropriate
-.ZN 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,
-.ZN XLoadQueryFont
-returns NULL.
-.LP
-The
-.ZN XFreeFont
-function deletes the association between the font resource ID and the specified
-font and frees the
-.ZN 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
-.ZN XFreeFont
-can generate a
-.ZN BadFont
-error.
-.LP
-Given the atom for that property,
-the
-.ZN XGetFontProperty
-function returns the value of the specified font property.
-.ZN XGetFontProperty
-also returns
-.ZN False
-if the property was not defined or
-.ZN 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
-The
-.ZN 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
-.ZN XUnloadFont
-can generate a
-.ZN BadFont
-error.
-.SH STRUCTURES
-The
-.ZN 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
-.ZN XCharStruct
-structures for the
-characters contained in the font.
-The
-.ZN XFontStruct ,
-.ZN XFontProp ,
-and
-.ZN XCharStruct
-structures contain:
-.LP
-.IN "XCharStruct" "" "@DEF@"
-.EX
-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;
-.EE
-.LP
-.IN "XFontProp" "" "@DEF@"
-.EX
-typedef struct {
- Atom name;
- unsigned long card32;
-} XFontProp;
-.EE
-.LP
-.IN "XChar2b" "" "@DEF@"
-.EX
-typedef struct { /\&* normal 16 bit characters are two bytes */
- unsigned char byte1;
- unsigned char byte2;
-} XChar2b;
-.EE
-.LP
-.IN "XFontStruct" "" "@DEF@"
-.EX
-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 decent below baseline for spacing */
-} XFontStruct;
-.EE
-.LP
-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
-.ZN 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
-.ZN XFontStruct
-min and max bounds are used.
-.LP
-The members of the
-.ZN XFontStruct
-have the following semantics:
-.IP \(bu 5
-The direction member can be either
-.ZN FontLeftToRight
-or
-.ZN FontRightToLeft .
-It is just a hint as to whether most
-.ZN 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
-.EX
- byte1 = N/D + min_byte1
- byte2 = N\\D + min_char_or_byte2
-.EE
-where:
-.EX
- D = max_char_or_byte2 \- min_char_or_byte2 + 1
- / = integer division
- \e\e = integer modulus
-.EE
-.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
-.ZN 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
-.ZN 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
-.ZN 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.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadFont
-A value for a Font or GContext argument does not name a defined Font.
-.TP 1i
-.ZN BadName
-A font or color of the specified name does not exist.
-.SH "SEE ALSO"
-XCreateGC(__libmansuffix__),
-XListFonts(__libmansuffix__),
-XSetFontPath(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.de EX
+.sp
+.nf
+.ft CW
+..
+.de EE
+.ft R
+.fi
+.sp
+..
+.TH XLoadFont __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XLoadFont, XQueryFont, XLoadQueryFont, XFreeFont, XGetFontProperty, XUnloadFont, XCharStruct, XFontProp, XChar2b, XFontStruct \- load or unload fonts and font metric structures
+.SH SYNTAX
+.HP
+Font XLoadFont\^(\^Display *\fIdisplay\fP\^, char *\fIname\fP\^);
+.HP
+XFontStruct *XQueryFont\^(\^Display *\fIdisplay\fP\^, XID \fIfont_ID\fP\^);
+.HP
+XFontStruct *XLoadQueryFont\^(\^Display *\fIdisplay\fP\^, char
+*\fIname\fP\^);
+.HP
+int XFreeFont\^(\^Display *\fIdisplay\fP\^, XFontStruct *\fIfont_struct\fP\^);
+.HP
+Bool XGetFontProperty\^(\^XFontStruct *\fIfont_struct\fP\^, Atom \fIatom\fP\^,
+unsigned long *\fIvalue_return\fP\^);
+.HP
+int XUnloadFont\^(\^Display *\fIdisplay\fP\^, Font \fIfont\fP\^);
+.SH ARGUMENTS
+.IP \fIatom\fP 1i
+Specifies the atom for the property name you want returned.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfont\fP 1i
+Specifies the font.
+.IP \fIfont_ID\fP 1i
+Specifies the font ID or the
+.ZN GContext
+ID.
+.IP \fIfont_struct\fP 1i
+Specifies the storage associated with the font.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIname\fP 1i
+Specifies the name of the font,
+which is a null-terminated string.
+.IP \fIvalue_return\fP 1i
+Returns the value of the font property.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XLoadFont
+was unsuccessful at loading the specified font,
+a
+.ZN 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
+.ZN XUnloadFont .
+.LP
+.ZN XLoadFont
+can generate
+.ZN BadAlloc
+and
+.ZN BadName
+errors.
+.LP
+The
+.ZN XQueryFont
+function returns a pointer to the
+.ZN 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
+.ZN XFontStruct
+structure will be the
+.ZN GContext
+ID, and you need to be careful when using this ID in other functions
+(see
+.ZN XGContextFromGC ).
+If the font does not exist,
+.ZN XQueryFont
+returns NULL.
+To free this data, use
+.ZN XFreeFontInfo .
+.LP
+.ZN XLoadQueryFont
+can generate a
+.ZN BadAlloc
+error.
+.LP
+The
+.ZN XLoadQueryFont
+function provides the most common way for accessing a font.
+.ZN XLoadQueryFont
+both opens (loads) the specified font and returns a pointer to the
+appropriate
+.ZN 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,
+.ZN XLoadQueryFont
+returns NULL.
+.LP
+The
+.ZN XFreeFont
+function deletes the association between the font resource ID and the specified
+font and frees the
+.ZN 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
+.ZN XFreeFont
+can generate a
+.ZN BadFont
+error.
+.LP
+Given the atom for that property,
+the
+.ZN XGetFontProperty
+function returns the value of the specified font property.
+.ZN XGetFontProperty
+also returns
+.ZN False
+if the property was not defined or
+.ZN 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
+The
+.ZN 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
+.ZN XUnloadFont
+can generate a
+.ZN BadFont
+error.
+.SH STRUCTURES
+The
+.ZN 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
+.ZN XCharStruct
+structures for the
+characters contained in the font.
+The
+.ZN XFontStruct ,
+.ZN XFontProp ,
+and
+.ZN XCharStruct
+structures contain:
+.LP
+.IN "XCharStruct" "" "@DEF@"
+.EX
+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;
+.EE
+.LP
+.IN "XFontProp" "" "@DEF@"
+.EX
+typedef struct {
+ Atom name;
+ unsigned long card32;
+} XFontProp;
+.EE
+.LP
+.IN "XChar2b" "" "@DEF@"
+.EX
+typedef struct { /\&* normal 16 bit characters are two bytes */
+ unsigned char byte1;
+ unsigned char byte2;
+} XChar2b;
+.EE
+.LP
+.IN "XFontStruct" "" "@DEF@"
+.EX
+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 decent below baseline for spacing */
+} XFontStruct;
+.EE
+.LP
+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
+.ZN 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
+.ZN XFontStruct
+min and max bounds are used.
+.LP
+The members of the
+.ZN XFontStruct
+have the following semantics:
+.IP \(bu 5
+The direction member can be either
+.ZN FontLeftToRight
+or
+.ZN FontRightToLeft .
+It is just a hint as to whether most
+.ZN 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
+.EX
+ byte1 = N/D + min_byte1
+ byte2 = N\\D + min_char_or_byte2
+.EE
+where:
+.EX
+ D = max_char_or_byte2 \- min_char_or_byte2 + 1
+ / = integer division
+ \e\e = integer modulus
+.EE
+.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
+.ZN 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
+.ZN 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
+.ZN 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.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadFont
+A value for a Font or GContext argument does not name a defined Font.
+.TP 1i
+.ZN BadName
+A font or color of the specified name does not exist.
+.SH "SEE ALSO"
+XCreateGC(__libmansuffix__),
+XListFonts(__libmansuffix__),
+XSetFontPath(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XMapEvent.man b/libX11/man/XMapEvent.man
index 551c2bca2..afebe0e1c 100644
--- a/libX11/man/XMapEvent.man
+++ b/libX11/man/XMapEvent.man
@@ -1,290 +1,290 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XMapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XMapEvent, XMappingEvent \- MapNotify and MappingNotify event structures
-.SH STRUCTURES
-The structure for
-.ZN MapNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 event member is set either to the window that was mapped or to its parent,
-depending on whether
-.ZN StructureNotify
-or
-.ZN 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
-.ZN True ,
-because these events usually are generated from pop-ups,
-which override structure control.
-.LP
-The structure for
-.ZN MappingNotify
-events is:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 request member is set to indicate the kind of mapping change that occurred
-and can be
-.ZN MappingModifier ,
-.ZN MappingKeyboard ,
-.ZN MappingPointer .
-If it is
-.ZN MappingModifier ,
-the modifier mapping was changed.
-If it is
-.ZN MappingKeyboard ,
-the keyboard mapping was changed.
-If it is
-.ZN MappingPointer ,
-the pointer button mapping was changed.
-The first_keycode and count members are set only
-if the request member was set to
-.ZN 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.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XMapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XMapEvent, XMappingEvent \- MapNotify and MappingNotify event structures
+.SH STRUCTURES
+The structure for
+.ZN MapNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 event member is set either to the window that was mapped or to its parent,
+depending on whether
+.ZN StructureNotify
+or
+.ZN 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
+.ZN True ,
+because these events usually are generated from pop-ups,
+which override structure control.
+.LP
+The structure for
+.ZN MappingNotify
+events is:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 request member is set to indicate the kind of mapping change that occurred
+and can be
+.ZN MappingModifier ,
+.ZN MappingKeyboard ,
+.ZN MappingPointer .
+If it is
+.ZN MappingModifier ,
+the modifier mapping was changed.
+If it is
+.ZN MappingKeyboard ,
+the keyboard mapping was changed.
+If it is
+.ZN MappingPointer ,
+the pointer button mapping was changed.
+The first_keycode and count members are set only
+if the request member was set to
+.ZN 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.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XMapRequestEvent.man b/libX11/man/XMapRequestEvent.man
index e30edf47e..eddaefd52 100644
--- a/libX11/man/XMapRequestEvent.man
+++ b/libX11/man/XMapRequestEvent.man
@@ -1,214 +1,214 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XMapRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XMapRequestEvent \- MapRequest event structure
-.SH STRUCTURES
-The structure for
-.ZN MapRequest
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 parent member is set to the parent window.
-The window member is set to the window to be mapped.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XMapRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XMapRequestEvent \- MapRequest event structure
+.SH STRUCTURES
+The structure for
+.ZN MapRequest
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 parent member is set to the parent window.
+The window member is set to the window to be mapped.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XMapWindow.man b/libX11/man/XMapWindow.man
index b4e6cde09..1719715ae 100644
--- a/libX11/man/XMapWindow.man
+++ b/libX11/man/XMapWindow.man
@@ -1,277 +1,277 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XMapWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XMapWindow, XMapRaised, XMapSubwindows \- map windows
-.SH SYNTAX
-.HP
-int XMapWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
-.HP
-int XMapRaised\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
-.HP
-int XMapSubwindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN False
-and if some other client has selected
-.ZN SubstructureRedirectMask
-on the parent window, then the X server generates a
-.ZN MapRequest
-event, and the
-.ZN XMapWindow
-function does not map the window.
-Otherwise, the window is mapped, and the X server generates a
-.ZN 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
-.ZN Expose
-events.
-If backing-store was maintained while the window was unmapped, no
-.ZN 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
-.ZN InputOutput
-window,
-.ZN XMapWindow
-generates
-.ZN Expose
-events on each
-.ZN 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
-.ZN Expose
-events and then map the window,
-so the client processes input events as usual.
-The event list will include
-.ZN Expose
-for each
-window that has appeared on the screen.
-The client's normal response to
-an
-.ZN Expose
-event should be to repaint the window.
-This method usually leads to simpler programs and to proper interaction
-with window managers.
-.LP
-.ZN XMapWindow
-can generate a
-.ZN BadWindow
-error.
-.LP
-The
-.ZN XMapRaised
-function
-essentially is similar to
-.ZN 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.
-.LP
-.ZN XMapRaised
-can generate a
-.ZN BadWindow
-error.
-.LP
-The
-.ZN XMapSubwindows
-.IN "XMapSubwindows"
-function maps all subwindows for a specified window in top-to-bottom stacking
-order.
-The X server generates
-.ZN 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
-.ZN XMapSubwindows
-can generate a
-.ZN BadWindow
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XChangeWindowAttributes(__libmansuffix__),
-XConfigureWindow(__libmansuffix__),
-XCreateWindow(__libmansuffix__),
-XDestroyWindow(__libmansuffix__),
-XRaiseWindow(__libmansuffix__),
-XUnmapWindow(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XMapWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XMapWindow, XMapRaised, XMapSubwindows \- map windows
+.SH SYNTAX
+.HP
+int XMapWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
+.HP
+int XMapRaised\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
+.HP
+int XMapSubwindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN False
+and if some other client has selected
+.ZN SubstructureRedirectMask
+on the parent window, then the X server generates a
+.ZN MapRequest
+event, and the
+.ZN XMapWindow
+function does not map the window.
+Otherwise, the window is mapped, and the X server generates a
+.ZN 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
+.ZN Expose
+events.
+If backing-store was maintained while the window was unmapped, no
+.ZN 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
+.ZN InputOutput
+window,
+.ZN XMapWindow
+generates
+.ZN Expose
+events on each
+.ZN 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
+.ZN Expose
+events and then map the window,
+so the client processes input events as usual.
+The event list will include
+.ZN Expose
+for each
+window that has appeared on the screen.
+The client's normal response to
+an
+.ZN Expose
+event should be to repaint the window.
+This method usually leads to simpler programs and to proper interaction
+with window managers.
+.LP
+.ZN XMapWindow
+can generate a
+.ZN BadWindow
+error.
+.LP
+The
+.ZN XMapRaised
+function
+essentially is similar to
+.ZN 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.
+.LP
+.ZN XMapRaised
+can generate a
+.ZN BadWindow
+error.
+.LP
+The
+.ZN XMapSubwindows
+.IN "XMapSubwindows"
+function maps all subwindows for a specified window in top-to-bottom stacking
+order.
+The X server generates
+.ZN 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
+.ZN XMapSubwindows
+can generate a
+.ZN BadWindow
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XChangeWindowAttributes(__libmansuffix__),
+XConfigureWindow(__libmansuffix__),
+XCreateWindow(__libmansuffix__),
+XDestroyWindow(__libmansuffix__),
+XRaiseWindow(__libmansuffix__),
+XUnmapWindow(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XNextEvent.man b/libX11/man/XNextEvent.man
index 84807575c..fbffdb40a 100644
--- a/libX11/man/XNextEvent.man
+++ b/libX11/man/XNextEvent.man
@@ -1,309 +1,309 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XNextEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XNextEvent, XPeekEvent, XWindowEvent, XCheckWindowEvent, XMaskEvent, XCheckMaskEvent, XCheckTypedEvent, XCheckTypedWindowEvent \- select events by type
-.SH SYNTAX
-.HP
-int XNextEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^);
-.HP
-int XPeekEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^);
-.HP
-int XWindowEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, long
-\fIevent_mask\fP\^, XEvent *\fIevent_return\fP\^);
-.HP
-Bool XCheckWindowEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, long
-\fIevent_mask\fP\^, XEvent *\fIevent_return\fP\^);
-.HP
-int XMaskEvent\^(\^Display *\fIdisplay\fP\^, long \fIevent_mask\fP\^, XEvent
-*\fIevent_return\fP\^);
-.HP
-Bool XCheckMaskEvent\^(\^Display *\fIdisplay\fP\^, long \fIevent_mask\fP\^,
-XEvent *\fIevent_return\fP\^);
-.HP
-Bool XCheckTypedEvent\^(\^Display *\fIdisplay\fP\^, int \fIevent_type\fP\^,
-XEvent *\fIevent_return\fP\^);
-.HP
-Bool XCheckTypedWindowEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-int \fIevent_type\fP\^, XEvent *\fIevent_return\fP\^);
-.SH ARGUMENTS
-.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.
-.IP \fIevent_return\fP 1i
-Returns the next event in the queue.
-.IP \fIevent_return\fP 1i
-Returns a copy of the matched event's associated structure.
-.IP \fIevent_type\fP 1i
-Specifies the event type to be compared.
-
-.ds Wi \ whose event uou are interested in
-.IP \fIw\fP 1i
-Specifies the window \*(Wi.
-.SH DESCRIPTION
-The
-.ZN XNextEvent
-function copies the first event from the event queue into the specified
-.ZN XEvent
-structure and then removes it from the queue.
-If the event queue is empty,
-.ZN XNextEvent
-flushes the output buffer and blocks until an event is received.
-.LP
-The
-.ZN 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,
-.ZN XPeekEvent
-flushes the output buffer and blocks until an event is received.
-It then copies the event into the client-supplied
-.ZN XEvent
-structure without removing it from the event queue.
-.LP
-The
-.ZN XWindowEvent
-function searches the event queue for an event that matches both the specified
-window and event mask.
-When it finds a match,
-.ZN XWindowEvent
-removes that event from the queue and copies it into the specified
-.ZN XEvent
-structure.
-The other events stored in the queue are not discarded.
-If a matching event is not in the queue,
-.ZN XWindowEvent
-flushes the output buffer and blocks until one is received.
-.LP
-The
-.ZN 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,
-.ZN XCheckWindowEvent
-removes that event, copies it into the specified
-.ZN XEvent
-structure, and returns
-.ZN True .
-The other events stored in the queue are not discarded.
-If the event you requested is not available,
-.ZN XCheckWindowEvent
-returns
-.ZN False ,
-and the output buffer will have been flushed.
-.LP
-The
-.ZN XMaskEvent
-function searches the event queue for the events associated with the
-specified mask.
-When it finds a match,
-.ZN XMaskEvent
-removes that event and copies it into the specified
-.ZN XEvent
-structure.
-The other events stored in the queue are not discarded.
-If the event you requested is not in the queue,
-.ZN XMaskEvent
-flushes the output buffer and blocks until one is received.
-.LP
-The
-.ZN 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,
-.ZN XCheckMaskEvent
-removes that event, copies it into the specified
-.ZN XEvent
-structure, and returns
-.ZN True .
-The other events stored in the queue are not discarded.
-If the event you requested is not available,
-.ZN XCheckMaskEvent
-returns
-.ZN False ,
-and the output buffer will have been flushed.
-.LP
-The
-.ZN 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,
-.ZN XCheckTypedEvent
-removes that event, copies it into the specified
-.ZN XEvent
-structure, and returns
-.ZN True .
-The other events in the queue are not discarded.
-If the event is not available,
-.ZN XCheckTypedEvent
-returns
-.ZN False ,
-and the output buffer will have been flushed.
-.LP
-The
-.ZN 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,
-.ZN XCheckTypedWindowEvent
-removes the event from the queue, copies it into the specified
-.ZN XEvent
-structure, and returns
-.ZN True .
-The other events in the queue are not discarded.
-If the event is not available,
-.ZN XCheckTypedWindowEvent
-returns
-.ZN False ,
-and the output buffer will have been flushed.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XIfEvent(__libmansuffix__),
-XPutBackEvent(__libmansuffix__),
-XSendEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XNextEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XNextEvent, XPeekEvent, XWindowEvent, XCheckWindowEvent, XMaskEvent, XCheckMaskEvent, XCheckTypedEvent, XCheckTypedWindowEvent \- select events by type
+.SH SYNTAX
+.HP
+int XNextEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^);
+.HP
+int XPeekEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent_return\fP\^);
+.HP
+int XWindowEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, long
+\fIevent_mask\fP\^, XEvent *\fIevent_return\fP\^);
+.HP
+Bool XCheckWindowEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, long
+\fIevent_mask\fP\^, XEvent *\fIevent_return\fP\^);
+.HP
+int XMaskEvent\^(\^Display *\fIdisplay\fP\^, long \fIevent_mask\fP\^, XEvent
+*\fIevent_return\fP\^);
+.HP
+Bool XCheckMaskEvent\^(\^Display *\fIdisplay\fP\^, long \fIevent_mask\fP\^,
+XEvent *\fIevent_return\fP\^);
+.HP
+Bool XCheckTypedEvent\^(\^Display *\fIdisplay\fP\^, int \fIevent_type\fP\^,
+XEvent *\fIevent_return\fP\^);
+.HP
+Bool XCheckTypedWindowEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+int \fIevent_type\fP\^, XEvent *\fIevent_return\fP\^);
+.SH ARGUMENTS
+.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.
+.IP \fIevent_return\fP 1i
+Returns the next event in the queue.
+.IP \fIevent_return\fP 1i
+Returns a copy of the matched event's associated structure.
+.IP \fIevent_type\fP 1i
+Specifies the event type to be compared.
+
+.ds Wi \ whose event uou are interested in
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.SH DESCRIPTION
+The
+.ZN XNextEvent
+function copies the first event from the event queue into the specified
+.ZN XEvent
+structure and then removes it from the queue.
+If the event queue is empty,
+.ZN XNextEvent
+flushes the output buffer and blocks until an event is received.
+.LP
+The
+.ZN 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,
+.ZN XPeekEvent
+flushes the output buffer and blocks until an event is received.
+It then copies the event into the client-supplied
+.ZN XEvent
+structure without removing it from the event queue.
+.LP
+The
+.ZN XWindowEvent
+function searches the event queue for an event that matches both the specified
+window and event mask.
+When it finds a match,
+.ZN XWindowEvent
+removes that event from the queue and copies it into the specified
+.ZN XEvent
+structure.
+The other events stored in the queue are not discarded.
+If a matching event is not in the queue,
+.ZN XWindowEvent
+flushes the output buffer and blocks until one is received.
+.LP
+The
+.ZN 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,
+.ZN XCheckWindowEvent
+removes that event, copies it into the specified
+.ZN XEvent
+structure, and returns
+.ZN True .
+The other events stored in the queue are not discarded.
+If the event you requested is not available,
+.ZN XCheckWindowEvent
+returns
+.ZN False ,
+and the output buffer will have been flushed.
+.LP
+The
+.ZN XMaskEvent
+function searches the event queue for the events associated with the
+specified mask.
+When it finds a match,
+.ZN XMaskEvent
+removes that event and copies it into the specified
+.ZN XEvent
+structure.
+The other events stored in the queue are not discarded.
+If the event you requested is not in the queue,
+.ZN XMaskEvent
+flushes the output buffer and blocks until one is received.
+.LP
+The
+.ZN 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,
+.ZN XCheckMaskEvent
+removes that event, copies it into the specified
+.ZN XEvent
+structure, and returns
+.ZN True .
+The other events stored in the queue are not discarded.
+If the event you requested is not available,
+.ZN XCheckMaskEvent
+returns
+.ZN False ,
+and the output buffer will have been flushed.
+.LP
+The
+.ZN 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,
+.ZN XCheckTypedEvent
+removes that event, copies it into the specified
+.ZN XEvent
+structure, and returns
+.ZN True .
+The other events in the queue are not discarded.
+If the event is not available,
+.ZN XCheckTypedEvent
+returns
+.ZN False ,
+and the output buffer will have been flushed.
+.LP
+The
+.ZN 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,
+.ZN XCheckTypedWindowEvent
+removes the event from the queue, copies it into the specified
+.ZN XEvent
+structure, and returns
+.ZN True .
+The other events in the queue are not discarded.
+If the event is not available,
+.ZN XCheckTypedWindowEvent
+returns
+.ZN False ,
+and the output buffer will have been flushed.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XIfEvent(__libmansuffix__),
+XPutBackEvent(__libmansuffix__),
+XSendEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XNoOp.man b/libX11/man/XNoOp.man
index a85752bec..7772e6cd3 100644
--- a/libX11/man/XNoOp.man
+++ b/libX11/man/XNoOp.man
@@ -1,158 +1,158 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XNoOp __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XNoOp \- No Operation
-.SH SYNTAX
-int XNoOp\^(\^Display *\fIdisplay\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.SH DESCRIPTION
-The
-.ZN XNoOp
-function sends a
-.ZN NoOperation
-protocol request to the X server,
-thereby exercising the connection.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XNoOp __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XNoOp \- No Operation
+.SH SYNTAX
+int XNoOp\^(\^Display *\fIdisplay\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.SH DESCRIPTION
+The
+.ZN XNoOp
+function sends a
+.ZN NoOperation
+protocol request to the X server,
+thereby exercising the connection.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XOpenDisplay.man b/libX11/man/XOpenDisplay.man
index 76d673734..4ab7ac24b 100644
--- a/libX11/man/XOpenDisplay.man
+++ b/libX11/man/XOpenDisplay.man
@@ -1,256 +1,256 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XOpenDisplay __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XOpenDisplay, XCloseDisplay \- connect or disconnect to X server
-.SH SYNTAX
-.HP
-Display *XOpenDisplay\^(\^char *\fIdisplay_name\fP\^);
-.HP
-int XCloseDisplay\^(Display *\fIdisplay\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.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"
-.SH DESCRIPTION
-The
-.ZN XOpenDisplay
-function returns a
-.ZN Display
-structure that serves as the
-connection to the X server and that contains all the information
-about that X server.
-.ZN 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,
-.ZN 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,
-.ZN 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,
-.ZN XOpenDisplay
-returns a pointer to a
-.ZN Display
-structure,
-which is defined in
-.hN X11/Xlib.h .
-If
-.ZN XOpenDisplay
-does not succeed, it returns NULL.
-After a successful call to
-.ZN 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
-.ZN DefaultScreen
-macro (or the
-.ZN XDefaultScreen
-function).
-You can access elements of the
-.ZN Display
-and
-.ZN Screen
-structures only by using the information macros or functions.
-For information about using macros and functions to obtain information from
-the
-.ZN Display
-structure,
-see section 2.2.1.
-.LP
-The
-.ZN XCloseDisplay
-function closes the connection to the X server for the display specified in the
-.ZN Display
-structure and destroys all windows, resource IDs
-.Pn ( Window ,
-.ZN Font ,
-.ZN Pixmap ,
-.ZN Colormap ,
-.ZN Cursor ,
-and
-.ZN GContext ),
-or other resources that the client has created
-on this display, unless the close-down mode of the resource has been changed
-(see
-.ZN 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
-.ZN XCloseDisplay
-explicitly so that any pending errors are reported as
-.ZN XCloseDisplay
-performs a final
-.ZN XSync
-operation.
-.IN "Resource IDs"
-.IN "XCloseDisplay"
-.LP
-.ZN XCloseDisplay
-can generate a
-.ZN BadGC
-error.
-.SH "SEE ALSO"
-AllPlanes(__libmansuffix__),
-XFlush(__libmansuffix__),
-XSetCloseDownMode(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XOpenDisplay __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XOpenDisplay, XCloseDisplay \- connect or disconnect to X server
+.SH SYNTAX
+.HP
+Display *XOpenDisplay\^(\^char *\fIdisplay_name\fP\^);
+.HP
+int XCloseDisplay\^(Display *\fIdisplay\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.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"
+.SH DESCRIPTION
+The
+.ZN XOpenDisplay
+function returns a
+.ZN Display
+structure that serves as the
+connection to the X server and that contains all the information
+about that X server.
+.ZN 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,
+.ZN 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,
+.ZN 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,
+.ZN XOpenDisplay
+returns a pointer to a
+.ZN Display
+structure,
+which is defined in
+.hN X11/Xlib.h .
+If
+.ZN XOpenDisplay
+does not succeed, it returns NULL.
+After a successful call to
+.ZN 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
+.ZN DefaultScreen
+macro (or the
+.ZN XDefaultScreen
+function).
+You can access elements of the
+.ZN Display
+and
+.ZN Screen
+structures only by using the information macros or functions.
+For information about using macros and functions to obtain information from
+the
+.ZN Display
+structure,
+see section 2.2.1.
+.LP
+The
+.ZN XCloseDisplay
+function closes the connection to the X server for the display specified in the
+.ZN Display
+structure and destroys all windows, resource IDs
+.Pn ( Window ,
+.ZN Font ,
+.ZN Pixmap ,
+.ZN Colormap ,
+.ZN Cursor ,
+and
+.ZN GContext ),
+or other resources that the client has created
+on this display, unless the close-down mode of the resource has been changed
+(see
+.ZN 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
+.ZN XCloseDisplay
+explicitly so that any pending errors are reported as
+.ZN XCloseDisplay
+performs a final
+.ZN XSync
+operation.
+.IN "Resource IDs"
+.IN "XCloseDisplay"
+.LP
+.ZN XCloseDisplay
+can generate a
+.ZN BadGC
+error.
+.SH "SEE ALSO"
+AllPlanes(__libmansuffix__),
+XFlush(__libmansuffix__),
+XSetCloseDownMode(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XOpenIM.man b/libX11/man/XOpenIM.man
index c55970542..c22df9f84 100644
--- a/libX11/man/XOpenIM.man
+++ b/libX11/man/XOpenIM.man
@@ -1,304 +1,304 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XOpenIM __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XOpenIM, XCloseIM, XSetIMValues, XGetIMValues, XDisplayOfIM, XLocaleOfIM, XRegisterIMInstantiateCallback, XUnregisterIMInstantiateCallback \- open, close, and obtain input method information
-.SH SYNTAX
-.HP
-XIM XOpenIM\^(\^Display *\fIdisplay\fP\^, XrmDatabase \fIdb\fP\^, char
-*\fIres_name\fP\^, char *\fIres_class\fP\^);
-.HP
-Status XCloseIM\^(\^XIM \fIim\fP\^);
-.HP
-char *XSetIMValues\^(\^XIM \fIim\fP\^, ...);
-.HP
-char *XGetIMValues\^(\^XIM \fIim\fP\^, ...);
-.HP
-Display *XDisplayOfIM\^(\^XIM \fIim\fP\^);
-.HP
-char *XLocaleOfIM\^(\^XIM \fIim\fP\^);
-.HP
-Bool XRegisterIMInstantiateCallback\^(\^Display *\fIdisplay\fP\^, XrmDatabase
-\fIdb\fP\^, char *\fIres_name\fP\^, char *\fIres_class\fP\^, XIDProc
-\fIcallback\fP\^, XPointer \fIclient_data\fP\^);
-.HP
-Bool XUnregisterIMInstantiateCallback\^(\^Display *\fIdisplay\fP\^,
-XrmDatabase \fIdb\fP\^, char *\fIres_name\fP\^, char *\fIres_class\fP\^,
-XIDProc \fIcallback\fP\^, XPointer \fIclient_data\fP\^);
-.LP
-.SH ARGUMENTS
-.IP \fIcallback\fP 1i
-Specifies a pointer to the input method instantiate callback.
-.IP \fIclient_data\fP 1i
-Specifies the additional client data.
-.IP \fIdb\fP 1i
-Specifies a pointer to the resource database.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIim\fP 1i
-Specifies the input method.
-.IP \fIres_class\fP 1i
-Specifies the full class name of the application.
-.IP \fIres_name\fP 1i
-Specifies the full resource name of the application.
-.ds Al \ to set or get XIM values
-.IP ... 1i
-Specifies the variable length argument list\*(Al.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XmbLookupString
-or
-.ZN 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.
-.ZN XOpenIM
-will identify a default input method corresponding to the
-current locale.
-That default can be modified using
-.ZN 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
-.ZN XOpenIM .
-The specified resource database is assumed to exist for the lifetime
-of the input method.
-.LP
-.ZN XOpenIM
-returns NULL if no input method could be opened.
-.LP
-The
-.ZN XCloseIM
-function closes the specified input method.
-.LP
-The
-.ZN 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
-The
-.ZN 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
-.ZN XGetIMValues
-allocates memory to store the actual data,
-and the client is responsible for freeing this data by calling
-.ZN XFree
-with the returned pointer.
-.LP
-The
-.ZN XDisplayOfIM
-function returns the display associated with the specified input method.
-.LP
-The
-.ZN XLocaleOfIM
-function returns the locale associated with the specified input method.
-.LP
-The
-.ZN 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
-.ZN True
-if it succeeds; otherwise, it returns
-.ZN False .
-.LP
-The
-.ZN XUnregisterIMInstantiateCallback
-function removes an input method instantiation callback previously
-registered.
-The function returns
-.ZN True
-if it succeeds; otherwise, it returns
-.ZN False .
-.SH "SEE ALSO"
-XCreateIC(__libmansuffix__),
-XSetICFocus(__libmansuffix__),
-XSetICValues(__libmansuffix__),
-XmbResetIC(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XOpenIM __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XOpenIM, XCloseIM, XSetIMValues, XGetIMValues, XDisplayOfIM, XLocaleOfIM, XRegisterIMInstantiateCallback, XUnregisterIMInstantiateCallback \- open, close, and obtain input method information
+.SH SYNTAX
+.HP
+XIM XOpenIM\^(\^Display *\fIdisplay\fP\^, XrmDatabase \fIdb\fP\^, char
+*\fIres_name\fP\^, char *\fIres_class\fP\^);
+.HP
+Status XCloseIM\^(\^XIM \fIim\fP\^);
+.HP
+char *XSetIMValues\^(\^XIM \fIim\fP\^, ...);
+.HP
+char *XGetIMValues\^(\^XIM \fIim\fP\^, ...);
+.HP
+Display *XDisplayOfIM\^(\^XIM \fIim\fP\^);
+.HP
+char *XLocaleOfIM\^(\^XIM \fIim\fP\^);
+.HP
+Bool XRegisterIMInstantiateCallback\^(\^Display *\fIdisplay\fP\^, XrmDatabase
+\fIdb\fP\^, char *\fIres_name\fP\^, char *\fIres_class\fP\^, XIDProc
+\fIcallback\fP\^, XPointer \fIclient_data\fP\^);
+.HP
+Bool XUnregisterIMInstantiateCallback\^(\^Display *\fIdisplay\fP\^,
+XrmDatabase \fIdb\fP\^, char *\fIres_name\fP\^, char *\fIres_class\fP\^,
+XIDProc \fIcallback\fP\^, XPointer \fIclient_data\fP\^);
+.LP
+.SH ARGUMENTS
+.IP \fIcallback\fP 1i
+Specifies a pointer to the input method instantiate callback.
+.IP \fIclient_data\fP 1i
+Specifies the additional client data.
+.IP \fIdb\fP 1i
+Specifies a pointer to the resource database.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIim\fP 1i
+Specifies the input method.
+.IP \fIres_class\fP 1i
+Specifies the full class name of the application.
+.IP \fIres_name\fP 1i
+Specifies the full resource name of the application.
+.ds Al \ to set or get XIM values
+.IP ... 1i
+Specifies the variable length argument list\*(Al.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XmbLookupString
+or
+.ZN 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.
+.ZN XOpenIM
+will identify a default input method corresponding to the
+current locale.
+That default can be modified using
+.ZN 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
+.ZN XOpenIM .
+The specified resource database is assumed to exist for the lifetime
+of the input method.
+.LP
+.ZN XOpenIM
+returns NULL if no input method could be opened.
+.LP
+The
+.ZN XCloseIM
+function closes the specified input method.
+.LP
+The
+.ZN 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
+The
+.ZN 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
+.ZN XGetIMValues
+allocates memory to store the actual data,
+and the client is responsible for freeing this data by calling
+.ZN XFree
+with the returned pointer.
+.LP
+The
+.ZN XDisplayOfIM
+function returns the display associated with the specified input method.
+.LP
+The
+.ZN XLocaleOfIM
+function returns the locale associated with the specified input method.
+.LP
+The
+.ZN 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
+.ZN True
+if it succeeds; otherwise, it returns
+.ZN False .
+.LP
+The
+.ZN XUnregisterIMInstantiateCallback
+function removes an input method instantiation callback previously
+registered.
+The function returns
+.ZN True
+if it succeeds; otherwise, it returns
+.ZN False .
+.SH "SEE ALSO"
+XCreateIC(__libmansuffix__),
+XSetICFocus(__libmansuffix__),
+XSetICValues(__libmansuffix__),
+XmbResetIC(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XOpenOM.man b/libX11/man/XOpenOM.man
index 3d67b0c14..f847f34a0 100644
--- a/libX11/man/XOpenOM.man
+++ b/libX11/man/XOpenOM.man
@@ -1,257 +1,257 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XOpenOM __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XOpenOM, XCloseOM, XSetOMValues, XGetOMValues, XDisplayOfOM, XLocaleOfOM \- open output methods
-.SH SYNTAX
-.HP
-XOM XOpenOM\^(\^Display *\fIdisplay\fP\^, XrmDatabase \fIdb\fP\^, char
-*\fIres_name\fP\^, char *\fIres_class\fP\^);
-.HP
-Status XCloseOM\^(\^XOM \fIom\fP\^);
-.HP
-char *XSetOMValues\^(\^XOM \fIom\fP\^);
-.HP
-char *XGetOMValues\^(\^XOM \fIom\fP\^);
-.HP
-Display *XDisplayOfOM\^(\^XOM \fIom\fP\^);
-.HP
-char *XLocaleOfOM\^(\^XOM \fIom\fP\^);
-.SH ARGUMENTS
-.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 \fIom\fP 1i
-Specifies the output method.
-.ds Al \ to set or get XOM values
-.IP ... 1i
-Specifies the variable length argument list\*(Al.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN 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.
-.ZN XOpenOM
-will identify a default output method corresponding to the
-current locale.
-That default can be modified using
-.ZN 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
-.ZN XOpenOM .
-The specified resource database is assumed to exist for the lifetime
-of the output method.
-.LP
-.ZN XOpenOM
-returns NULL if no output method could be opened.
-.LP
-The
-.ZN XCloseOM
-function closes the specified output method.
-.LP
-The
-.ZN 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 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
-No standard arguments are currently defined by Xlib.
-.LP
-The
-.ZN 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
-The
-.ZN XDisplayOfOM
-function returns the display associated with the specified output method.
-.LP
-The
-.ZN XLocaleOfOM
-returns the locale associated with the specified output method.
-.SH "SEE ALSO"
-XCreateOC(__libmansuffix__),
-XCreateFontSet(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XOpenOM __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XOpenOM, XCloseOM, XSetOMValues, XGetOMValues, XDisplayOfOM, XLocaleOfOM \- open output methods
+.SH SYNTAX
+.HP
+XOM XOpenOM\^(\^Display *\fIdisplay\fP\^, XrmDatabase \fIdb\fP\^, char
+*\fIres_name\fP\^, char *\fIres_class\fP\^);
+.HP
+Status XCloseOM\^(\^XOM \fIom\fP\^);
+.HP
+char *XSetOMValues\^(\^XOM \fIom\fP\^);
+.HP
+char *XGetOMValues\^(\^XOM \fIom\fP\^);
+.HP
+Display *XDisplayOfOM\^(\^XOM \fIom\fP\^);
+.HP
+char *XLocaleOfOM\^(\^XOM \fIom\fP\^);
+.SH ARGUMENTS
+.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 \fIom\fP 1i
+Specifies the output method.
+.ds Al \ to set or get XOM values
+.IP ... 1i
+Specifies the variable length argument list\*(Al.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN 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.
+.ZN XOpenOM
+will identify a default output method corresponding to the
+current locale.
+That default can be modified using
+.ZN 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
+.ZN XOpenOM .
+The specified resource database is assumed to exist for the lifetime
+of the output method.
+.LP
+.ZN XOpenOM
+returns NULL if no output method could be opened.
+.LP
+The
+.ZN XCloseOM
+function closes the specified output method.
+.LP
+The
+.ZN 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 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
+No standard arguments are currently defined by Xlib.
+.LP
+The
+.ZN 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
+The
+.ZN XDisplayOfOM
+function returns the display associated with the specified output method.
+.LP
+The
+.ZN XLocaleOfOM
+returns the locale associated with the specified output method.
+.SH "SEE ALSO"
+XCreateOC(__libmansuffix__),
+XCreateFontSet(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XParseGeometry.man b/libX11/man/XParseGeometry.man
index 057895f2e..173a4f569 100644
--- a/libX11/man/XParseGeometry.man
+++ b/libX11/man/XParseGeometry.man
@@ -1,283 +1,283 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XParseGeometry __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XParseGeometry, XWMGeometry \- parse window geometry
-.SH SYNTAX
-.HP
-int XParseGeometry\^(\^char *\fIparsestring\fP\^, int *\fIx_return\fP\^, int
-*\fIy_return\fP\^, unsigned int *\fIwidth_return\fP\^, unsigned int
-*\fIheight_return\fP\^);
-.HP
-int XWMGeometry\^(\^Display *\fIdisplay\fP\^, int \fIscreen\fP\^, char
-*\fIuser_geom\fP\^, char *\fIdef_geom\fP\^, unsigned int \fIbwidth\fP\^,
-XSizeHints *\fIhints\fP\^, int *\fIx_return\fP, int *\fIy_return\fP\^, int
-*\fIwidth_return\fP\^, int *\fIheight_return\fP\^, int
-*\fIgravity_return\fP\^);
-.SH ARGUMENTS
-.IP \fIposition\fP 1i
-.br
-.ns
-.IP \fIdefault_position\fP 1i
-Specify the geometry specifications.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIfheight\fP 1i
-.br
-.ns
-.IP \fIfwidth\fP 1i
-Specify the font height and width in pixels (increment size).
-.IP \fIparsestring\fP 1i
-Specifies the string you want to parse.
-.IP \fIscreen\fP 1i
-Specifies the screen.
-.IP \fIwidth_return\fP 1i
-.br
-.ns
-.IP \fIheight_return\fP 1i
-Return the width and height determined.
-.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 \fIbwidth\fP 1i
-Specifies the border width.
-.IP \fIhints\fP 1i
-Specifies the size hints for the window in its normal state.
-.IP \fIdef_geom\fP 1i
-Specifies the application's default geometry or NULL.
-.IP \fIgravity_return\fP 1i
-Returns the window gravity.
-.IP \fIuser_geom\fP 1i
-Specifies the user-specified geometry or NULL.
-.SH DESCRIPTION
-By convention,
-X applications use a standard string to indicate window size and placement.
-.ZN 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
-.ZN 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
-.ZN XValue ,
-.ZN YValue ,
-.ZN WidthValue ,
-.ZN HeightValue ,
-.ZN XNegative ,
-or
-.ZN 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
-.ZN XValue
-or
-.ZN YValue
-flag,
-you should place the window at the requested position.
-.LP
-The
-.ZN XWMGeometry
-function combines any geometry information (given in the format used by
-.ZN 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 ,
-.ZN NorthEastGravity ,
-.ZN SouthEastGravity ,
-or
-.ZN SouthWestGravity )
-that describe the window.
-If the base size is not set in the
-.ZN 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
-.ZN 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.
-.SH "SEE ALSO"
-XSetWMProperties(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XParseGeometry __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XParseGeometry, XWMGeometry \- parse window geometry
+.SH SYNTAX
+.HP
+int XParseGeometry\^(\^char *\fIparsestring\fP\^, int *\fIx_return\fP\^, int
+*\fIy_return\fP\^, unsigned int *\fIwidth_return\fP\^, unsigned int
+*\fIheight_return\fP\^);
+.HP
+int XWMGeometry\^(\^Display *\fIdisplay\fP\^, int \fIscreen\fP\^, char
+*\fIuser_geom\fP\^, char *\fIdef_geom\fP\^, unsigned int \fIbwidth\fP\^,
+XSizeHints *\fIhints\fP\^, int *\fIx_return\fP, int *\fIy_return\fP\^, int
+*\fIwidth_return\fP\^, int *\fIheight_return\fP\^, int
+*\fIgravity_return\fP\^);
+.SH ARGUMENTS
+.IP \fIposition\fP 1i
+.br
+.ns
+.IP \fIdefault_position\fP 1i
+Specify the geometry specifications.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfheight\fP 1i
+.br
+.ns
+.IP \fIfwidth\fP 1i
+Specify the font height and width in pixels (increment size).
+.IP \fIparsestring\fP 1i
+Specifies the string you want to parse.
+.IP \fIscreen\fP 1i
+Specifies the screen.
+.IP \fIwidth_return\fP 1i
+.br
+.ns
+.IP \fIheight_return\fP 1i
+Return the width and height determined.
+.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 \fIbwidth\fP 1i
+Specifies the border width.
+.IP \fIhints\fP 1i
+Specifies the size hints for the window in its normal state.
+.IP \fIdef_geom\fP 1i
+Specifies the application's default geometry or NULL.
+.IP \fIgravity_return\fP 1i
+Returns the window gravity.
+.IP \fIuser_geom\fP 1i
+Specifies the user-specified geometry or NULL.
+.SH DESCRIPTION
+By convention,
+X applications use a standard string to indicate window size and placement.
+.ZN 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
+.ZN 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
+.ZN XValue ,
+.ZN YValue ,
+.ZN WidthValue ,
+.ZN HeightValue ,
+.ZN XNegative ,
+or
+.ZN 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
+.ZN XValue
+or
+.ZN YValue
+flag,
+you should place the window at the requested position.
+.LP
+The
+.ZN XWMGeometry
+function combines any geometry information (given in the format used by
+.ZN 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 ,
+.ZN NorthEastGravity ,
+.ZN SouthEastGravity ,
+or
+.ZN SouthWestGravity )
+that describe the window.
+If the base size is not set in the
+.ZN 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
+.ZN 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.
+.SH "SEE ALSO"
+XSetWMProperties(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XPolygonRegion.man b/libX11/man/XPolygonRegion.man
index ef5e48bd9..30493eb2c 100644
--- a/libX11/man/XPolygonRegion.man
+++ b/libX11/man/XPolygonRegion.man
@@ -1,182 +1,182 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XPolygonRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XPolygonRegion, XClipBox \- generate regions
-.SH SYNTAX
-.HP
-Region XPolygonRegion\^(\^XPoint \fIpoints\fP[]\^, int \fIn\fP\^, int
-\fIfill_rule\fP\^);
-.HP
-int XClipBox\^(\^Region \fIr\fP\^, XRectangle *\fIrect_return\fP\^);
-.SH ARGUMENTS
-.IP \fIfill_rule\fP 1i
-Specifies the fill-rule you want to set for the specified GC.
-You can pass
-.ZN EvenOddRule
-or
-.ZN WindingRule .
-.IP \fIn\fP 1i
-Specifies the number of points in the polygon.
-.IP \fIpoints\fP 1i
-Specifies an array of points.
-.IP \fIr\fP 1i
-Specifies the region.
-.IP \fIrect_return\fP 1i
-Returns the smallest enclosing rectangle.
-.SH DESCRIPTION
-The
-.ZN XPolygonRegion
-function returns a region for the polygon defined by the points array.
-For an explanation of fill_rule,
-see
-.ZN XCreateGC .
-.LP
-The
-.ZN XClipBox
-function returns the smallest rectangle enclosing the specified region.
-.SH "SEE ALSO"
-XCreateGC(__libmansuffix__),
-XDrawPoint(__libmansuffix__),
-XDrawRectangle(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XPolygonRegion __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XPolygonRegion, XClipBox \- generate regions
+.SH SYNTAX
+.HP
+Region XPolygonRegion\^(\^XPoint \fIpoints\fP[]\^, int \fIn\fP\^, int
+\fIfill_rule\fP\^);
+.HP
+int XClipBox\^(\^Region \fIr\fP\^, XRectangle *\fIrect_return\fP\^);
+.SH ARGUMENTS
+.IP \fIfill_rule\fP 1i
+Specifies the fill-rule you want to set for the specified GC.
+You can pass
+.ZN EvenOddRule
+or
+.ZN WindingRule .
+.IP \fIn\fP 1i
+Specifies the number of points in the polygon.
+.IP \fIpoints\fP 1i
+Specifies an array of points.
+.IP \fIr\fP 1i
+Specifies the region.
+.IP \fIrect_return\fP 1i
+Returns the smallest enclosing rectangle.
+.SH DESCRIPTION
+The
+.ZN XPolygonRegion
+function returns a region for the polygon defined by the points array.
+For an explanation of fill_rule,
+see
+.ZN XCreateGC .
+.LP
+The
+.ZN XClipBox
+function returns the smallest rectangle enclosing the specified region.
+.SH "SEE ALSO"
+XCreateGC(__libmansuffix__),
+XDrawPoint(__libmansuffix__),
+XDrawRectangle(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XPropertyEvent.man b/libX11/man/XPropertyEvent.man
index 53c8e7809..2c25da950 100644
--- a/libX11/man/XPropertyEvent.man
+++ b/libX11/man/XPropertyEvent.man
@@ -1,244 +1,244 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XPropertyEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XPropertyEvent \- PropertyNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN PropertyNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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
-.ZN PropertyNewValue
-or
-.ZN PropertyDelete .
-The state member is set to
-.ZN PropertyNewValue
-when a property of the window is changed using
-.ZN XChangeProperty
-or
-.ZN XRotateWindowProperties
-(even when adding zero-length data using
-.ZN XChangeProperty )
-and when replacing all or part of a property with identical data using
-.ZN XChangeProperty
-or
-.ZN XRotateWindowProperties .
-The state member is set to
-.ZN PropertyDelete
-when a property of the window is deleted using
-.ZN XDeleteProperty
-or, if the delete argument is
-.ZN True ,
-.ZN XGetWindowProperty .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGetWindowProperty(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XPropertyEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XPropertyEvent \- PropertyNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN PropertyNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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
+.ZN PropertyNewValue
+or
+.ZN PropertyDelete .
+The state member is set to
+.ZN PropertyNewValue
+when a property of the window is changed using
+.ZN XChangeProperty
+or
+.ZN XRotateWindowProperties
+(even when adding zero-length data using
+.ZN XChangeProperty )
+and when replacing all or part of a property with identical data using
+.ZN XChangeProperty
+or
+.ZN XRotateWindowProperties .
+The state member is set to
+.ZN PropertyDelete
+when a property of the window is deleted using
+.ZN XDeleteProperty
+or, if the delete argument is
+.ZN True ,
+.ZN XGetWindowProperty .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGetWindowProperty(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XPutBackEvent.man b/libX11/man/XPutBackEvent.man
index 16325727f..53d736655 100644
--- a/libX11/man/XPutBackEvent.man
+++ b/libX11/man/XPutBackEvent.man
@@ -1,168 +1,168 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XPutBackEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XPutBackEvent \- put events back on the queue
-.SH SYNTAX
-.HP
-XPutBackEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIevent\fP 1i
-Specifies the event.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XPutBackEvent .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XIfEvent(__libmansuffix__),
-XNextEvent(__libmansuffix__),
-XSendEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XPutBackEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XPutBackEvent \- put events back on the queue
+.SH SYNTAX
+.HP
+XPutBackEvent\^(\^Display *\fIdisplay\fP\^, XEvent *\fIevent\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent\fP 1i
+Specifies the event.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XPutBackEvent .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XIfEvent(__libmansuffix__),
+XNextEvent(__libmansuffix__),
+XSendEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XPutImage.man b/libX11/man/XPutImage.man
index 010ac410f..131dcb32a 100644
--- a/libX11/man/XPutImage.man
+++ b/libX11/man/XPutImage.man
@@ -1,403 +1,403 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XPutImage __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XPutImage, XGetImage, XGetSubImage \- transfer images
-.SH SYNTAX
-.HP
-int XPutImage\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
-XImage *\fIimage\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, int
-\fIdest_x\fP\^, int \fIdest_y\fP\^, unsigned int \fIwidth\fP\^, unsigned int
-\fIheight\fP\^);
-.HP
-XImage *XGetImage\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, int
-\fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int
-\fIheight\fP\^, unsigned long \fIplane_mask\fP\^, int \fIformat\fP\^);
-.HP
-XImage *XGetSubImage\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, int
-\fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int
-\fIheight\fP\^, unsigned long \fIplane_mask\fP\^, int \fIformat\fP\^, XImage
-*\fIdest_image\fP\^, int \fIdest_x\fP\^, \fIdest_y\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdest_image\fP 1i
-Specifies the destination image.
-.ds Dx , which are relative to the origin of the drawable \
-and are the coordinates of the subimage \
-or 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.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIformat\fP 1i
-Specifies the format for the image.
-You can pass
-.ZN XYPixmap
-or
-.ZN ZPixmap .
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIimage\fP 1i
-Specifies the image you want combined with the rectangle.
-.IP \fIplane_mask\fP 1i
-Specifies the plane mask.
-.\" *** JIM: NEED MORE INFO FOR THIS. ***
-.IP \fIsrc_x\fP 1i
-Specifies the offset in X from the left edge of the image defined
-by the
-.ZN XImage
-structure.
-.IP \fIsrc_y\fP 1i
-Specifies the offset in Y from the top edge of the image defined
-by the
-.ZN XImage
-structure.
-.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.
-.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.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XYBitmap
-format is used, the depth of the image must be one,
-or a
-.ZN 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
-.ZN XYPixmap
-and
-.ZN ZPixmap ,
-the depth of the image must match the depth of the drawable,
-or a
-.ZN BadMatch
-error results.
-.LP
-If the characteristics of the image (for example, byte_order and bitmap_unit)
-differ from what the server requires,
-.ZN 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
-.ZN XPutImage
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-.ZN BadMatch ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN XGetImage
-function returns a pointer to an
-.ZN 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
-.ZN 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
-.ZN ZPixmap ,
-.ZN 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
-.ZN XGetImage
-returns the depth of the image to the depth member of the
-.ZN XImage
-structure.
-The depth of the image is as specified when the drawable was created,
-except when getting a subset of the planes in
-.ZN 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
-.ZN 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
-.ZN 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,
-.ZN XGetImage
-returns NULL.
-.LP
-.ZN XGetImage
-can generate
-.ZN BadDrawable ,
-.ZN BadMatch ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN XGetSubImage
-function updates dest_image with the specified subimage in the same manner as
-.ZN XGetImage .
-If the format argument is
-.ZN XYPixmap ,
-the image contains only the bit planes you passed to the plane_mask argument.
-If the format argument is
-.ZN ZPixmap ,
-.ZN 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,
-.ZN XGetSubImage
-returns a pointer to the same
-.ZN XImage
-structure specified by dest_image.
-.LP
-The depth of the destination
-.ZN 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
-.ZN 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
-.ZN 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,
-.ZN XGetSubImage
-returns NULL.
-.LP
-.ZN XGetSubImage
-can generate
-.ZN BadDrawable ,
-.ZN BadGC ,
-.ZN BadMatch ,
-and
-.ZN BadValue
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XPutImage __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XPutImage, XGetImage, XGetSubImage \- transfer images
+.SH SYNTAX
+.HP
+int XPutImage\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC \fIgc\fP\^,
+XImage *\fIimage\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, int
+\fIdest_x\fP\^, int \fIdest_y\fP\^, unsigned int \fIwidth\fP\^, unsigned int
+\fIheight\fP\^);
+.HP
+XImage *XGetImage\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, int
+\fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int
+\fIheight\fP\^, unsigned long \fIplane_mask\fP\^, int \fIformat\fP\^);
+.HP
+XImage *XGetSubImage\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, int
+\fIx\fP\^, int \fIy\fP\^, unsigned int \fIwidth\fP\^, unsigned int
+\fIheight\fP\^, unsigned long \fIplane_mask\fP\^, int \fIformat\fP\^, XImage
+*\fIdest_image\fP\^, int \fIdest_x\fP\^, \fIdest_y\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdest_image\fP 1i
+Specifies the destination image.
+.ds Dx , which are relative to the origin of the drawable \
+and are the coordinates of the subimage \
+or 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.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIformat\fP 1i
+Specifies the format for the image.
+You can pass
+.ZN XYPixmap
+or
+.ZN ZPixmap .
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIimage\fP 1i
+Specifies the image you want combined with the rectangle.
+.IP \fIplane_mask\fP 1i
+Specifies the plane mask.
+.\" *** JIM: NEED MORE INFO FOR THIS. ***
+.IP \fIsrc_x\fP 1i
+Specifies the offset in X from the left edge of the image defined
+by the
+.ZN XImage
+structure.
+.IP \fIsrc_y\fP 1i
+Specifies the offset in Y from the top edge of the image defined
+by the
+.ZN XImage
+structure.
+.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.
+.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.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XYBitmap
+format is used, the depth of the image must be one,
+or a
+.ZN 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
+.ZN XYPixmap
+and
+.ZN ZPixmap ,
+the depth of the image must match the depth of the drawable,
+or a
+.ZN BadMatch
+error results.
+.LP
+If the characteristics of the image (for example, byte_order and bitmap_unit)
+differ from what the server requires,
+.ZN 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
+.ZN XPutImage
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+.ZN BadMatch ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN XGetImage
+function returns a pointer to an
+.ZN 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
+.ZN 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
+.ZN ZPixmap ,
+.ZN 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
+.ZN XGetImage
+returns the depth of the image to the depth member of the
+.ZN XImage
+structure.
+The depth of the image is as specified when the drawable was created,
+except when getting a subset of the planes in
+.ZN 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
+.ZN 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
+.ZN 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,
+.ZN XGetImage
+returns NULL.
+.LP
+.ZN XGetImage
+can generate
+.ZN BadDrawable ,
+.ZN BadMatch ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN XGetSubImage
+function updates dest_image with the specified subimage in the same manner as
+.ZN XGetImage .
+If the format argument is
+.ZN XYPixmap ,
+the image contains only the bit planes you passed to the plane_mask argument.
+If the format argument is
+.ZN ZPixmap ,
+.ZN 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,
+.ZN XGetSubImage
+returns a pointer to the same
+.ZN XImage
+structure specified by dest_image.
+.LP
+The depth of the destination
+.ZN 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
+.ZN 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
+.ZN 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,
+.ZN XGetSubImage
+returns NULL.
+.LP
+.ZN XGetSubImage
+can generate
+.ZN BadDrawable ,
+.ZN BadGC ,
+.ZN BadMatch ,
+and
+.ZN BadValue
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XQueryBestSize.man b/libX11/man/XQueryBestSize.man
index 993491f64..1dcf74930 100644
--- a/libX11/man/XQueryBestSize.man
+++ b/libX11/man/XQueryBestSize.man
@@ -1,287 +1,287 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XQueryBestSize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XQueryBestSize, XQueryBestTile, XQueryBestStipple \- determine efficient sizes
-.SH SYNTAX
-.HP
-Status XQueryBestSize\^(\^Display *\fIdisplay\fP\^, int \fIclass\fP\^,
-Drawable \fIwhich_screen\fP\^, unsigned int \fIwidth\fP, unsigned int
-\fIheight\fP\^, unsigned int *\fIwidth_return\fP, unsigned int
-*\fIheight_return\fP\^);
-.HP
-Status XQueryBestTile\^(\^Display *\fIdisplay\fP\^, Drawable
-\fIwhich_screen\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^,
-unsigned int *\fIwidth_return\fP, unsigned int *\fIheight_return\fP\^);
-.HP
-Status XQueryBestStipple\^(\^Display *\fIdisplay\fP\^, Drawable
-\fIwhich_screen\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^,
-unsigned int *\fIwidth_return\fP, unsigned int *\fIheight_return\fP\^);
-.SH ARGUMENTS
-.IP \fIclass\fP 1i
-Specifies the class that you are interested in.
-You can pass
-.ZN TileShape ,
-.ZN CursorShape ,
-or
-.ZN StippleShape .
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIwidth\fP 1i
-.br
-.ns
-.IP \fIheight\fP 1i
-Specify the width and height.
-.IP \fIwhich_screen\fP 1i
-Specifies any drawable on the screen.
-.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.
-.SH DESCRIPTION
-The
-.ZN XQueryBestSize
-function returns the best or closest size to the specified size.
-For
-.ZN CursorShape ,
-this is the largest size that can be fully displayed on the screen specified by
-which_screen.
-For
-.ZN TileShape ,
-this is the size that can be tiled fastest.
-For
-.ZN StippleShape ,
-this is the size that can be stippled fastest.
-For
-.ZN CursorShape ,
-the drawable indicates the desired screen.
-For
-.ZN TileShape
-and
-.ZN StippleShape ,
-the drawable indicates the screen and possibly the window class and depth.
-An
-.ZN InputOnly
-window cannot be used as the drawable for
-.ZN TileShape
-or
-.ZN StippleShape ,
-or a
-.ZN BadMatch
-error results.
-.LP
-.ZN XQueryBestSize
-can generate
-.ZN BadDrawable ,
-.ZN BadMatch ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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
-.ZN InputOnly
-window is used as the drawable, a
-.ZN BadMatch
-error results.
-.LP
-.ZN XQueryBestTile
-can generate
-.ZN BadDrawable
-and
-.ZN BadMatch
-errors.
-.LP
-The
-.ZN 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
-.ZN InputOnly
-window is used as the drawable, a
-.ZN BadMatch
-error results.
-.LP
-.ZN XQueryBestStipple
-can generate
-.ZN BadDrawable
-and
-.ZN BadMatch
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadMatch
-The values do not exist for an
-.ZN InputOnly
-window.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XCreateGC(__libmansuffix__),
-XSetArcMode(__libmansuffix__),
-XSetClipOrigin(__libmansuffix__),
-XSetFillStyle(__libmansuffix__),
-XSetFont(__libmansuffix__),
-XSetLineAttributes(__libmansuffix__),
-XSetState(__libmansuffix__),
-XSetTile(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XQueryBestSize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XQueryBestSize, XQueryBestTile, XQueryBestStipple \- determine efficient sizes
+.SH SYNTAX
+.HP
+Status XQueryBestSize\^(\^Display *\fIdisplay\fP\^, int \fIclass\fP\^,
+Drawable \fIwhich_screen\fP\^, unsigned int \fIwidth\fP, unsigned int
+\fIheight\fP\^, unsigned int *\fIwidth_return\fP, unsigned int
+*\fIheight_return\fP\^);
+.HP
+Status XQueryBestTile\^(\^Display *\fIdisplay\fP\^, Drawable
+\fIwhich_screen\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^,
+unsigned int *\fIwidth_return\fP, unsigned int *\fIheight_return\fP\^);
+.HP
+Status XQueryBestStipple\^(\^Display *\fIdisplay\fP\^, Drawable
+\fIwhich_screen\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^,
+unsigned int *\fIwidth_return\fP, unsigned int *\fIheight_return\fP\^);
+.SH ARGUMENTS
+.IP \fIclass\fP 1i
+Specifies the class that you are interested in.
+You can pass
+.ZN TileShape ,
+.ZN CursorShape ,
+or
+.ZN StippleShape .
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIwidth\fP 1i
+.br
+.ns
+.IP \fIheight\fP 1i
+Specify the width and height.
+.IP \fIwhich_screen\fP 1i
+Specifies any drawable on the screen.
+.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.
+.SH DESCRIPTION
+The
+.ZN XQueryBestSize
+function returns the best or closest size to the specified size.
+For
+.ZN CursorShape ,
+this is the largest size that can be fully displayed on the screen specified by
+which_screen.
+For
+.ZN TileShape ,
+this is the size that can be tiled fastest.
+For
+.ZN StippleShape ,
+this is the size that can be stippled fastest.
+For
+.ZN CursorShape ,
+the drawable indicates the desired screen.
+For
+.ZN TileShape
+and
+.ZN StippleShape ,
+the drawable indicates the screen and possibly the window class and depth.
+An
+.ZN InputOnly
+window cannot be used as the drawable for
+.ZN TileShape
+or
+.ZN StippleShape ,
+or a
+.ZN BadMatch
+error results.
+.LP
+.ZN XQueryBestSize
+can generate
+.ZN BadDrawable ,
+.ZN BadMatch ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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
+.ZN InputOnly
+window is used as the drawable, a
+.ZN BadMatch
+error results.
+.LP
+.ZN XQueryBestTile
+can generate
+.ZN BadDrawable
+and
+.ZN BadMatch
+errors.
+.LP
+The
+.ZN 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
+.ZN InputOnly
+window is used as the drawable, a
+.ZN BadMatch
+error results.
+.LP
+.ZN XQueryBestStipple
+can generate
+.ZN BadDrawable
+and
+.ZN BadMatch
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadMatch
+The values do not exist for an
+.ZN InputOnly
+window.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XCreateGC(__libmansuffix__),
+XSetArcMode(__libmansuffix__),
+XSetClipOrigin(__libmansuffix__),
+XSetFillStyle(__libmansuffix__),
+XSetFont(__libmansuffix__),
+XSetLineAttributes(__libmansuffix__),
+XSetState(__libmansuffix__),
+XSetTile(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XQueryColor.man b/libX11/man/XQueryColor.man
index fb8c8b5f5..65424421e 100644
--- a/libX11/man/XQueryColor.man
+++ b/libX11/man/XQueryColor.man
@@ -1,344 +1,344 @@
-'\" t
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XQueryColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XQueryColor, XQueryColors, XLookupColor, XParseColor \- obtain color values
-.SH SYNTAX
-.HP
-int XQueryColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XColor
-*\fIdef_in_out\fP\^);
-.HP
-int XQueryColors\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
-XColor \fIdefs_in_out\fP[\^]\^, int \fIncolors\fP\^);
-.HP
-Status XLookupColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
-char *\fIcolor_name\fP\^, XColor *\fIexact_def_return\fP\^, XColor
-*\fIscreen_def_return\fP\^);
-.HP
-Status XParseColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
-char *\fIspec\fP\^, XColor *\fIexact_def_return\fP\^);
-.SH ARGUMENTS
-.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 \fIdef_in_out\fP 1i
-Specifies and returns the RGB values for the pixel specified in the structure.
-.IP \fIdefs_in_out\fP 1i
-Specifies and returns an array of color definition structures for the pixel
-specified in the structure.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIexact_def_return\fP 1i
-Returns the exact RGB values.
-.IP \fIncolors\fP 1i
-.\"Specifies the number of color definition structures.
-Specifies the number of
-.ZN XColor
-structures in the color definition array.
-.IP \fIscreen_def_return\fP 1i
-Returns the closest RGB values provided by the hardware.
-.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
-.ZN DoRed ,
-.ZN DoGreen ,
-and
-.ZN DoBlue
-flags.
-.SH DESCRIPTION
-The
-.ZN XQueryColor
-function returns the current RGB value for the pixel in the
-.ZN XColor
-structure and sets the
-.ZN DoRed ,
-.ZN DoGreen ,
-and
-.ZN DoBlue
-flags.
-The
-.ZN XQueryColors
-function returns the RGB value for each pixel in each
-.ZN XColor
-structure and sets the
-.ZN DoRed ,
-.ZN DoGreen ,
-and
-.ZN DoBlue
-flags in each structure.
-
-.LP
-.ZN XQueryColor
-and
-.ZN XQueryColors
-can generate
-.ZN BadColor
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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.
-.ZN XLookupColor
-returns nonzero if the name is resolved;
-otherwise, it returns zero.
-.LP
-The
-.ZN 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.
-.ZN XParseColor
-returns nonzero if the name is resolved;
-otherwise, it returns zero.
-.LP
-.ZN XLookupColor
-and
-.ZN XParseColor
-can generate
-.ZN BadColor
-error.
-.SH "COLOR NAMES"
-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
-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
-.TS
-l l.
-\&#RGB (4 bits each)
-\&#RRGGBB (8 bits each)
-\&#RRRGGGBBB (12 bits each)
-\&#RRRRGGGGBBBB (16 bits each)
-.TE
-.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''.
-.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.
-.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.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XAllocColor(__libmansuffix__),
-XCreateColormap(__libmansuffix__),
-XStoreColors(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XQueryColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XQueryColor, XQueryColors, XLookupColor, XParseColor \- obtain color values
+.SH SYNTAX
+.HP
+int XQueryColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^, XColor
+*\fIdef_in_out\fP\^);
+.HP
+int XQueryColors\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
+XColor \fIdefs_in_out\fP[\^]\^, int \fIncolors\fP\^);
+.HP
+Status XLookupColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
+char *\fIcolor_name\fP\^, XColor *\fIexact_def_return\fP\^, XColor
+*\fIscreen_def_return\fP\^);
+.HP
+Status XParseColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
+char *\fIspec\fP\^, XColor *\fIexact_def_return\fP\^);
+.SH ARGUMENTS
+.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 \fIdef_in_out\fP 1i
+Specifies and returns the RGB values for the pixel specified in the structure.
+.IP \fIdefs_in_out\fP 1i
+Specifies and returns an array of color definition structures for the pixel
+specified in the structure.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIexact_def_return\fP 1i
+Returns the exact RGB values.
+.IP \fIncolors\fP 1i
+.\"Specifies the number of color definition structures.
+Specifies the number of
+.ZN XColor
+structures in the color definition array.
+.IP \fIscreen_def_return\fP 1i
+Returns the closest RGB values provided by the hardware.
+.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
+.ZN DoRed ,
+.ZN DoGreen ,
+and
+.ZN DoBlue
+flags.
+.SH DESCRIPTION
+The
+.ZN XQueryColor
+function returns the current RGB value for the pixel in the
+.ZN XColor
+structure and sets the
+.ZN DoRed ,
+.ZN DoGreen ,
+and
+.ZN DoBlue
+flags.
+The
+.ZN XQueryColors
+function returns the RGB value for each pixel in each
+.ZN XColor
+structure and sets the
+.ZN DoRed ,
+.ZN DoGreen ,
+and
+.ZN DoBlue
+flags in each structure.
+
+.LP
+.ZN XQueryColor
+and
+.ZN XQueryColors
+can generate
+.ZN BadColor
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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.
+.ZN XLookupColor
+returns nonzero if the name is resolved;
+otherwise, it returns zero.
+.LP
+The
+.ZN 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.
+.ZN XParseColor
+returns nonzero if the name is resolved;
+otherwise, it returns zero.
+.LP
+.ZN XLookupColor
+and
+.ZN XParseColor
+can generate
+.ZN BadColor
+error.
+.SH "COLOR NAMES"
+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
+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
+.TS
+l l.
+\&#RGB (4 bits each)
+\&#RRGGBB (8 bits each)
+\&#RRRGGGBBB (12 bits each)
+\&#RRRRGGGGBBBB (16 bits each)
+.TE
+.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''.
+.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.
+.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.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XAllocColor(__libmansuffix__),
+XCreateColormap(__libmansuffix__),
+XStoreColors(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XQueryExtension.man b/libX11/man/XQueryExtension.man
index bfc096498..2009fcc15 100644
--- a/libX11/man/XQueryExtension.man
+++ b/libX11/man/XQueryExtension.man
@@ -1,67 +1,67 @@
-.\"
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
-.\" Digital Equipment Corporation
-.\"
-.\" Portions Copyright \(co 1990, 1991 by
-.\" Tektronix, Inc
-.\"
-.\" Rewritten for X.org by Chris Lee <clee@freedesktop.org>
-.\"
-.\" Permission to use, copy, modify, distribute, and sell 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.
-.\" Chris Lee 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.
-.\"
-.ds xL Programming with Xlib
-.TH XQueryExtension __libmansuffix__ __xorgversion__ "X FUNCTIONS"
-.SH NAME
-XQueryExtension, XListExtensions, XFreeExtensionList \- list available extensions
-.SH SYNTAX
-.HP
-Bool XQueryExtension(\^\fIdisplay, \fIname\fP, \fImajor_opcode_return\fP, \fIfirst_event_return\fP, \fIfirst_error_return\fP\^)
-.HP
-char **XListExtensions(\^\fIdisplay\fP, \fInextensions_return\fP\^)
-.HP
-XFreeExtensionList(\^\fIlist\fP\^)
-.SH ARGUMENTS
-.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.
-.IP \fInextensions_return\fP 1i
-Returns the number of extensions listed.
-.IP \fIlist\fP 1i
-Specifies the list of extension names.
-.SH DESCRIPTION
-.LP
-The \fIXQueryExtension\fP function determines if the named extension is
-present. If the extension is not present, \fIXQueryExtension\fP returns
-\fIFalse\fP; otherwise, it returns \fITrue\fP. If the extension is present,
-\fIXQueryExtension\fP 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, \fIXQueryExtension\fP 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,
-\fIXQueryExtension\fP 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. 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 \fIXListExtensions\fP 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.
-.LP
-The \fIXFreeExtensionList\fP function frees the memory allocated by
-\fIXListExtensions\fP.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc
+.\"
+.\" Rewritten for X.org by Chris Lee <clee@freedesktop.org>
+.\"
+.\" Permission to use, copy, modify, distribute, and sell 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.
+.\" Chris Lee 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.
+.\"
+.ds xL Programming with Xlib
+.TH XQueryExtension __libmansuffix__ __xorgversion__ "X FUNCTIONS"
+.SH NAME
+XQueryExtension, XListExtensions, XFreeExtensionList \- list available extensions
+.SH SYNTAX
+.HP
+Bool XQueryExtension(\^\fIdisplay, \fIname\fP, \fImajor_opcode_return\fP, \fIfirst_event_return\fP, \fIfirst_error_return\fP\^)
+.HP
+char **XListExtensions(\^\fIdisplay\fP, \fInextensions_return\fP\^)
+.HP
+XFreeExtensionList(\^\fIlist\fP\^)
+.SH ARGUMENTS
+.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.
+.IP \fInextensions_return\fP 1i
+Returns the number of extensions listed.
+.IP \fIlist\fP 1i
+Specifies the list of extension names.
+.SH DESCRIPTION
+.LP
+The \fIXQueryExtension\fP function determines if the named extension is
+present. If the extension is not present, \fIXQueryExtension\fP returns
+\fIFalse\fP; otherwise, it returns \fITrue\fP. If the extension is present,
+\fIXQueryExtension\fP 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, \fIXQueryExtension\fP 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,
+\fIXQueryExtension\fP 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. 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 \fIXListExtensions\fP 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.
+.LP
+The \fIXFreeExtensionList\fP function frees the memory allocated by
+\fIXListExtensions\fP.
diff --git a/libX11/man/XQueryPointer.man b/libX11/man/XQueryPointer.man
index 0550ddd92..c8b35b2cb 100644
--- a/libX11/man/XQueryPointer.man
+++ b/libX11/man/XQueryPointer.man
@@ -1,219 +1,219 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XQueryPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XQueryPointer \- get pointer coordinates
-.SH SYNTAX
-.HP
-Bool XQueryPointer\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window
-*\fIroot_return\fP\^, Window *\fIchild_return\fP\^, int
-*\fIroot_x_return\fP\^, int *\fIroot_y_return\fP\^, int *\fIwin_x_return\fP\^,
-int *\fIwin_y_return\fP\^, unsigned int *\fImask_return\fP\^);
-.SH ARGUMENTS
-.IP \fIchild_return\fP 1i
-Returns the child window that the pointer is located in, if any.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fImask_return\fP 1i
-Returns the current state of the modifier keys and pointer buttons.
-.ds Ro that the pointer is in
-.IP \fIroot_return\fP 1i
-Returns the root window \*(Ro.
-.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 \fIw\fP 1i
-Specifies the window.
-.IP \fIwin_x_return\fP 1i
-.br
-.ns
-.IP \fIwin_y_return\fP 1i
-Return the pointer coordinates relative to the specified window.
-.SH DESCRIPTION
-The
-.ZN XQueryPointer
-function returns the root window the pointer is logically on and the pointer
-coordinates relative to the root window's origin.
-If
-.ZN XQueryPointer
-returns
-.ZN False ,
-the pointer is not on the same screen as the specified window, and
-.ZN XQueryPointer
-returns
-.ZN None
-to child_return and zero to win_x_return and win_y_return.
-If
-.ZN XQueryPointer
-returns
-.ZN 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,
-.ZN XQueryPointer
-returns the child that contains the pointer, if any,
-or else
-.ZN None
-to child_return.
-.LP
-.ZN 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
-.ZN XQueryPointer
-can generate a
-.ZN BadWindow
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XGetWindowAttributes(__libmansuffix__),
-XQueryTree(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XQueryPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XQueryPointer \- get pointer coordinates
+.SH SYNTAX
+.HP
+Bool XQueryPointer\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window
+*\fIroot_return\fP\^, Window *\fIchild_return\fP\^, int
+*\fIroot_x_return\fP\^, int *\fIroot_y_return\fP\^, int *\fIwin_x_return\fP\^,
+int *\fIwin_y_return\fP\^, unsigned int *\fImask_return\fP\^);
+.SH ARGUMENTS
+.IP \fIchild_return\fP 1i
+Returns the child window that the pointer is located in, if any.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImask_return\fP 1i
+Returns the current state of the modifier keys and pointer buttons.
+.ds Ro that the pointer is in
+.IP \fIroot_return\fP 1i
+Returns the root window \*(Ro.
+.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 \fIw\fP 1i
+Specifies the window.
+.IP \fIwin_x_return\fP 1i
+.br
+.ns
+.IP \fIwin_y_return\fP 1i
+Return the pointer coordinates relative to the specified window.
+.SH DESCRIPTION
+The
+.ZN XQueryPointer
+function returns the root window the pointer is logically on and the pointer
+coordinates relative to the root window's origin.
+If
+.ZN XQueryPointer
+returns
+.ZN False ,
+the pointer is not on the same screen as the specified window, and
+.ZN XQueryPointer
+returns
+.ZN None
+to child_return and zero to win_x_return and win_y_return.
+If
+.ZN XQueryPointer
+returns
+.ZN 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,
+.ZN XQueryPointer
+returns the child that contains the pointer, if any,
+or else
+.ZN None
+to child_return.
+.LP
+.ZN 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
+.ZN XQueryPointer
+can generate a
+.ZN BadWindow
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XGetWindowAttributes(__libmansuffix__),
+XQueryTree(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XQueryTree.man b/libX11/man/XQueryTree.man
index e5f6d7823..203cc9a4e 100644
--- a/libX11/man/XQueryTree.man
+++ b/libX11/man/XQueryTree.man
@@ -1,194 +1,194 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XQueryTree __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XQueryTree \- query window tree information
-.SH SYNTAX
-.HP
-Status XQueryTree\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window
-*\fIroot_return\fP\^, Window *\fIparent_return\fP\^, Window
-**\fIchildren_return\fP\^, unsigned int *\fInchildren_return\fP\^);
-.SH ARGUMENTS
-.IP \fIchildren_return\fP 1i
-Returns the list of children.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fInchildren_return\fP 1i
-Returns the number of children.
-.IP \fIparent_return\fP 1i
-Returns the parent window.
-.IP \fIroot_return\fP 1i
-Returns the root window.
-.ds Wi whose list of children, root, parent, and number of children \
-you want to obtain
-.IP \fIw\fP 1i
-Specifies the window \*(Wi.
-.SH DESCRIPTION
-The
-.ZN 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).
-.ZN 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
-.ZN XFree .
-.LP
-.ZN XQueryTree
-can generate a
-.ZN BadWindow
-error.
-.SH BUGS
-This really should return a screen *, not a root window ID.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XFree(__libmansuffix__),
-XGetWindowAttributes(__libmansuffix__),
-XQueryPointer(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XQueryTree __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XQueryTree \- query window tree information
+.SH SYNTAX
+.HP
+Status XQueryTree\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window
+*\fIroot_return\fP\^, Window *\fIparent_return\fP\^, Window
+**\fIchildren_return\fP\^, unsigned int *\fInchildren_return\fP\^);
+.SH ARGUMENTS
+.IP \fIchildren_return\fP 1i
+Returns the list of children.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInchildren_return\fP 1i
+Returns the number of children.
+.IP \fIparent_return\fP 1i
+Returns the parent window.
+.IP \fIroot_return\fP 1i
+Returns the root window.
+.ds Wi whose list of children, root, parent, and number of children \
+you want to obtain
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.SH DESCRIPTION
+The
+.ZN 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).
+.ZN 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
+.ZN XFree .
+.LP
+.ZN XQueryTree
+can generate a
+.ZN BadWindow
+error.
+.SH BUGS
+This really should return a screen *, not a root window ID.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XFree(__libmansuffix__),
+XGetWindowAttributes(__libmansuffix__),
+XQueryPointer(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XReadBitmapFile.man b/libX11/man/XReadBitmapFile.man
index 28fbf57ee..6028e6c70 100644
--- a/libX11/man/XReadBitmapFile.man
+++ b/libX11/man/XReadBitmapFile.man
@@ -1,356 +1,356 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XReadBitmapFile __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XReadBitmapFile, XReadBitmapFileData, XWriteBitmapFile, XCreatePixmapFromBitmapData, XCreateBitmapFromData \- manipulate bitmaps
-.SH SYNTAX
-.HP
-int XReadBitmapFile(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, char
-*\fIfilename\fP\^, unsigned int *\fIwidth_return\fP, unsigned int
-*\fIheight_return\fP\^, Pixmap *\fIbitmap_return\fP\^, int
-*\fIx_hot_return\fP, int *\fIy_hot_return\fP\^);
-.HP
-int XReadBitmapFileData(\^char *\fIfilename\fP\^, unsigned int
-*\fIwidth_return\fP, unsigned int *\fIheight_return\fP\^, unsigned char
-*\fIdata_return\fP\^, int *\fIx_hot_return\fP, int *\fIy_hot_return\fP\^);
-.HP
-int XWriteBitmapFile(\^Display *\fIdisplay\fP\^, char *\fIfilename\fP\^,
-Pixmap \fIbitmap\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^,
-int \fIx_hot\fP, int \fIy_hot\fP\^);
-.HP
-Pixmap XCreatePixmapFromBitmapData\^(\^Display *\fIdisplay\fP\^, Drawable
-\fId\fP\^, char *\fIdata\fP\^, unsigned int \fIwidth\fP, unsigned int
-\fIheight\fP\^, unsigned long \fIfg\fP, unsigned long \fIbg\fP\^, unsigned int
-\fIdepth\fP\^);
-.HP
-Pixmap XCreateBitmapFromData(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
-char *\fIdata\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^);
-.SH ARGUMENTS
-.IP \fIbitmap\fP 1i
-Specifies the bitmap.
-.IP \fIbitmap_return\fP 1i
-Returns the bitmap that is created.
-.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 \fIdata\fP 1i
-Specifies the location of the bitmap data.
-.IP \fIdata_return\fP 1i
-Returns the bitmap data.
-.IP \fIdepth\fP 1i
-Specifies the depth of the pixmap.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIfg\fP 1i
-.br
-.ns
-.IP \fIbg\fP 1i
-Specify the foreground and background pixel values to use.
-.IP \fIfilename\fP 1i
-Specifies the file name to use.
-The format of the file name is operating-system dependent.
-.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 values of the read in bitmap file.
-.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.
-.IP \fIx_hot_return\fP 1i
-.br
-.ns
-.IP \fIy_hot_return\fP 1i
-Return the hotspot coordinates.
-.SH DESCRIPTION
-The
-.ZN 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,
-.ZN XReadBitmapFile
-returns
-.ZN BitmapOpenFailed .
-If the file can be opened but does not contain valid bitmap data,
-it returns
-.ZN BitmapFileInvalid .
-If insufficient working storage is allocated,
-it returns
-.ZN BitmapNoMemory .
-If the file is readable and valid,
-it returns
-.ZN BitmapSuccess .
-.LP
-.ZN 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
-.ZN XFreePixmap
-when finished.
-If \fIname\fP_x_hot and \fIname\fP_y_hot exist,
-.ZN XReadBitmapFile
-returns them to x_hot_return and y_hot_return;
-otherwise, it returns \-1,\-1.
-.LP
-.ZN XReadBitmapFile
-can generate
-.ZN BadAlloc
-and
-.ZN BadDrawable
-errors.
-.LP
-The
-.ZN XReadBitmapFileData
-function reads in a file containing a bitmap, in the same manner as
-.ZN 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
-.ZN XFree .
-The status and other return values are the same as for
-.ZN XReadBitmapFile .
-.LP
-The
-.ZN 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
-.ZN BitmapOpenFailed .
-If insufficient memory is allocated,
-.ZN XWriteBitmapFile
-returns
-.ZN BitmapNoMemory ;
-otherwise, on no error,
-it returns
-.ZN BitmapSuccess .
-If x_hot and y_hot are not \-1, \-1,
-.ZN XWriteBitmapFile
-writes them out as the hotspot coordinates for the bitmap.
-.LP
-.ZN XWriteBitmapFile
-can generate
-.ZN BadDrawable
-and
-.ZN BadMatch
-errors.
-.LP
-The
-.ZN XCreatePixmapFromBitmapData
-function creates a pixmap of the given depth and then does a bitmap-format
-.ZN XPutImage
-of the data into it.
-The depth must be supported by the screen of the specified drawable,
-or a
-.ZN BadMatch
-error results.
-.LP
-.ZN XCreatePixmapFromBitmapData
-can generate
-.ZN BadAlloc
-and
-.ZN BadMatch
-errors.
-.LP
-The
-.ZN XCreateBitmapFromData
-function allows you to include in your C program (using
-.ZN #include )
-a bitmap file that was written out by
-.ZN 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,
-.ZN XCreateBitmapFromData
-returns
-.ZN None .
-It is your responsibility to free the
-bitmap using
-.ZN XFreePixmap
-when finished.
-.LP
-.ZN XCreateBitmapFromData
-can generate a
-.ZN BadAlloc
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.TP 1i
-.ZN BadMatch
-An
-.ZN InputOnly
-window is used as a Drawable.
-.SH "SEE ALSO"
-XCreatePixmap(__libmansuffix__),
-XPutImage(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XReadBitmapFile __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XReadBitmapFile, XReadBitmapFileData, XWriteBitmapFile, XCreatePixmapFromBitmapData, XCreateBitmapFromData \- manipulate bitmaps
+.SH SYNTAX
+.HP
+int XReadBitmapFile(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, char
+*\fIfilename\fP\^, unsigned int *\fIwidth_return\fP, unsigned int
+*\fIheight_return\fP\^, Pixmap *\fIbitmap_return\fP\^, int
+*\fIx_hot_return\fP, int *\fIy_hot_return\fP\^);
+.HP
+int XReadBitmapFileData(\^char *\fIfilename\fP\^, unsigned int
+*\fIwidth_return\fP, unsigned int *\fIheight_return\fP\^, unsigned char
+*\fIdata_return\fP\^, int *\fIx_hot_return\fP, int *\fIy_hot_return\fP\^);
+.HP
+int XWriteBitmapFile(\^Display *\fIdisplay\fP\^, char *\fIfilename\fP\^,
+Pixmap \fIbitmap\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^,
+int \fIx_hot\fP, int \fIy_hot\fP\^);
+.HP
+Pixmap XCreatePixmapFromBitmapData\^(\^Display *\fIdisplay\fP\^, Drawable
+\fId\fP\^, char *\fIdata\fP\^, unsigned int \fIwidth\fP, unsigned int
+\fIheight\fP\^, unsigned long \fIfg\fP, unsigned long \fIbg\fP\^, unsigned int
+\fIdepth\fP\^);
+.HP
+Pixmap XCreateBitmapFromData(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
+char *\fIdata\fP\^, unsigned int \fIwidth\fP, unsigned int \fIheight\fP\^);
+.SH ARGUMENTS
+.IP \fIbitmap\fP 1i
+Specifies the bitmap.
+.IP \fIbitmap_return\fP 1i
+Returns the bitmap that is created.
+.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 \fIdata\fP 1i
+Specifies the location of the bitmap data.
+.IP \fIdata_return\fP 1i
+Returns the bitmap data.
+.IP \fIdepth\fP 1i
+Specifies the depth of the pixmap.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfg\fP 1i
+.br
+.ns
+.IP \fIbg\fP 1i
+Specify the foreground and background pixel values to use.
+.IP \fIfilename\fP 1i
+Specifies the file name to use.
+The format of the file name is operating-system dependent.
+.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 values of the read in bitmap file.
+.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.
+.IP \fIx_hot_return\fP 1i
+.br
+.ns
+.IP \fIy_hot_return\fP 1i
+Return the hotspot coordinates.
+.SH DESCRIPTION
+The
+.ZN 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,
+.ZN XReadBitmapFile
+returns
+.ZN BitmapOpenFailed .
+If the file can be opened but does not contain valid bitmap data,
+it returns
+.ZN BitmapFileInvalid .
+If insufficient working storage is allocated,
+it returns
+.ZN BitmapNoMemory .
+If the file is readable and valid,
+it returns
+.ZN BitmapSuccess .
+.LP
+.ZN 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
+.ZN XFreePixmap
+when finished.
+If \fIname\fP_x_hot and \fIname\fP_y_hot exist,
+.ZN XReadBitmapFile
+returns them to x_hot_return and y_hot_return;
+otherwise, it returns \-1,\-1.
+.LP
+.ZN XReadBitmapFile
+can generate
+.ZN BadAlloc
+and
+.ZN BadDrawable
+errors.
+.LP
+The
+.ZN XReadBitmapFileData
+function reads in a file containing a bitmap, in the same manner as
+.ZN 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
+.ZN XFree .
+The status and other return values are the same as for
+.ZN XReadBitmapFile .
+.LP
+The
+.ZN 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
+.ZN BitmapOpenFailed .
+If insufficient memory is allocated,
+.ZN XWriteBitmapFile
+returns
+.ZN BitmapNoMemory ;
+otherwise, on no error,
+it returns
+.ZN BitmapSuccess .
+If x_hot and y_hot are not \-1, \-1,
+.ZN XWriteBitmapFile
+writes them out as the hotspot coordinates for the bitmap.
+.LP
+.ZN XWriteBitmapFile
+can generate
+.ZN BadDrawable
+and
+.ZN BadMatch
+errors.
+.LP
+The
+.ZN XCreatePixmapFromBitmapData
+function creates a pixmap of the given depth and then does a bitmap-format
+.ZN XPutImage
+of the data into it.
+The depth must be supported by the screen of the specified drawable,
+or a
+.ZN BadMatch
+error results.
+.LP
+.ZN XCreatePixmapFromBitmapData
+can generate
+.ZN BadAlloc
+and
+.ZN BadMatch
+errors.
+.LP
+The
+.ZN XCreateBitmapFromData
+function allows you to include in your C program (using
+.ZN #include )
+a bitmap file that was written out by
+.ZN 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,
+.ZN XCreateBitmapFromData
+returns
+.ZN None .
+It is your responsibility to free the
+bitmap using
+.ZN XFreePixmap
+when finished.
+.LP
+.ZN XCreateBitmapFromData
+can generate a
+.ZN BadAlloc
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.TP 1i
+.ZN BadMatch
+An
+.ZN InputOnly
+window is used as a Drawable.
+.SH "SEE ALSO"
+XCreatePixmap(__libmansuffix__),
+XPutImage(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XRecolorCursor.man b/libX11/man/XRecolorCursor.man
index 0a5608fed..f9900f0a7 100644
--- a/libX11/man/XRecolorCursor.man
+++ b/libX11/man/XRecolorCursor.man
@@ -1,232 +1,232 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XRecolorCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XRecolorCursor, XFreeCursor, XQueryBestCursor \- manipulate cursors
-.SH SYNTAX
-.HP
-int XRecolorCursor\^(\^Display *\fIdisplay\fP\^, Cursor \fIcursor\fP\^, XColor
-*\fIforeground_color\fP\^, XColor *\fIbackground_color\fP\^);
-.HP
-int XFreeCursor\^(\^Display *\fIdisplay\fP\^, Cursor \fIcursor\fP\^);
-.HP
-Status XQueryBestCursor\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
-unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int
-*\fIwidth_return\fP\^, unsigned int *\fIheight_return\fP\^);
-.SH ARGUMENTS
-.IP \fIbackground_color\fP 1i
-Specifies the RGB values for the background of the source.
-.IP \fIcursor\fP 1i
-Specifies the cursor.
-.ds Dr , which indicates the screen
-.IP \fId\fP 1i
-Specifies the drawable\*(Dr.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIforeground_color\fP 1i
-Specifies the RGB values for the foreground of the source.
-.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.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XColor
-structures are ignored; only the RGB values are used.
-.LP
-.ZN XRecolorCursor
-can generate a
-.ZN BadCursor
-error.
-.LP
-The
-.ZN 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
-.ZN XFreeCursor
-can generate a
-.ZN BadCursor
-error.
-.LP
-Some displays allow larger cursors than other displays.
-The
-.ZN 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
-.ZN XQueryBestCursor
-can generate a
-.ZN BadDrawable
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadCursor
-A value for a Cursor argument does not name a defined Cursor.
-.TP 1i
-.ZN BadDrawable
-A value for a Drawable argument does not name a defined Window or Pixmap.
-.SH "SEE ALSO"
-XCreateColormap(__libmansuffix__),
-XCreateFontCursor(__libmansuffix__),
-XDefineCursor(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XRecolorCursor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XRecolorCursor, XFreeCursor, XQueryBestCursor \- manipulate cursors
+.SH SYNTAX
+.HP
+int XRecolorCursor\^(\^Display *\fIdisplay\fP\^, Cursor \fIcursor\fP\^, XColor
+*\fIforeground_color\fP\^, XColor *\fIbackground_color\fP\^);
+.HP
+int XFreeCursor\^(\^Display *\fIdisplay\fP\^, Cursor \fIcursor\fP\^);
+.HP
+Status XQueryBestCursor\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
+unsigned int \fIwidth\fP\^, unsigned int \fIheight\fP\^, unsigned int
+*\fIwidth_return\fP\^, unsigned int *\fIheight_return\fP\^);
+.SH ARGUMENTS
+.IP \fIbackground_color\fP 1i
+Specifies the RGB values for the background of the source.
+.IP \fIcursor\fP 1i
+Specifies the cursor.
+.ds Dr , which indicates the screen
+.IP \fId\fP 1i
+Specifies the drawable\*(Dr.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIforeground_color\fP 1i
+Specifies the RGB values for the foreground of the source.
+.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.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XColor
+structures are ignored; only the RGB values are used.
+.LP
+.ZN XRecolorCursor
+can generate a
+.ZN BadCursor
+error.
+.LP
+The
+.ZN 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
+.ZN XFreeCursor
+can generate a
+.ZN BadCursor
+error.
+.LP
+Some displays allow larger cursors than other displays.
+The
+.ZN 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
+.ZN XQueryBestCursor
+can generate a
+.ZN BadDrawable
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadCursor
+A value for a Cursor argument does not name a defined Cursor.
+.TP 1i
+.ZN BadDrawable
+A value for a Drawable argument does not name a defined Window or Pixmap.
+.SH "SEE ALSO"
+XCreateColormap(__libmansuffix__),
+XCreateFontCursor(__libmansuffix__),
+XDefineCursor(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XReparentEvent.man b/libX11/man/XReparentEvent.man
index fc67d43ea..d4dbdb867 100644
--- a/libX11/man/XReparentEvent.man
+++ b/libX11/man/XReparentEvent.man
@@ -1,231 +1,231 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XReparentEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XReparentEvent \- ReparentNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN ReparentNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 event member is set either to the reparented window
-or to the old or the new parent, depending on whether
-.ZN StructureNotify
-or
-.ZN 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
-.ZN True .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XReparentEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XReparentEvent \- ReparentNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN ReparentNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 event member is set either to the reparented window
+or to the old or the new parent, depending on whether
+.ZN StructureNotify
+or
+.ZN 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
+.ZN True .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XReparentWindow.man b/libX11/man/XReparentWindow.man
index 14653a7be..0883eb27f 100644
--- a/libX11/man/XReparentWindow.man
+++ b/libX11/man/XReparentWindow.man
@@ -1,228 +1,228 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XReparentWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XReparentWindow \- reparent windows
-.SH SYNTAX
-.HP
-int XReparentWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window
-\fIparent\fP\^, int \fIx\fP\^, int \fIy\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIparent\fP 1i
-Specifies the parent window.
-.IP \fIw\fP 1i
-Specifies the 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.
-.SH DESCRIPTION
-If the specified window is mapped,
-.ZN XReparentWindow
-automatically performs an
-.ZN 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,
-.ZN XReparentWindow
-causes the X server to generate a
-.ZN 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
-.ZN True .
-Finally, if the specified window was originally mapped,
-the X server automatically performs a
-.ZN MapWindow
-request on it.
-.LP
-The X server performs normal exposure processing on formerly obscured
-windows.
-The X server might not generate
-.ZN Expose
-events for regions from the initial
-.ZN UnmapWindow
-request that are immediately obscured by the final
-.ZN MapWindow
-request.
-A
-.ZN 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
-.ZN InputOnly ,
-and the window is not.
-.IP \(bu 5
-The specified window has a
-.ZN ParentRelative
-background, and the new parent window is not the same depth as the
-specified window.
-.LP
-.ZN XReparentWindow
-can generate
-.ZN BadMatch
-and
-.ZN BadWindow
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XChangeSaveSet(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XReparentWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XReparentWindow \- reparent windows
+.SH SYNTAX
+.HP
+int XReparentWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Window
+\fIparent\fP\^, int \fIx\fP\^, int \fIy\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIparent\fP 1i
+Specifies the parent window.
+.IP \fIw\fP 1i
+Specifies the 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.
+.SH DESCRIPTION
+If the specified window is mapped,
+.ZN XReparentWindow
+automatically performs an
+.ZN 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,
+.ZN XReparentWindow
+causes the X server to generate a
+.ZN 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
+.ZN True .
+Finally, if the specified window was originally mapped,
+the X server automatically performs a
+.ZN MapWindow
+request on it.
+.LP
+The X server performs normal exposure processing on formerly obscured
+windows.
+The X server might not generate
+.ZN Expose
+events for regions from the initial
+.ZN UnmapWindow
+request that are immediately obscured by the final
+.ZN MapWindow
+request.
+A
+.ZN 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
+.ZN InputOnly ,
+and the window is not.
+.IP \(bu 5
+The specified window has a
+.ZN ParentRelative
+background, and the new parent window is not the same depth as the
+specified window.
+.LP
+.ZN XReparentWindow
+can generate
+.ZN BadMatch
+and
+.ZN BadWindow
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XChangeSaveSet(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XResizeRequestEvent.man b/libX11/man/XResizeRequestEvent.man
index 291a41065..d3cd164f2 100644
--- a/libX11/man/XResizeRequestEvent.man
+++ b/libX11/man/XResizeRequestEvent.man
@@ -1,216 +1,216 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XResizeRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XResizeRequestEvent \- ResizeRequest event structure
-.SH STRUCTURES
-The structure for
-.ZN ResizeRequest
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XResizeRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XResizeRequestEvent \- ResizeRequest event structure
+.SH STRUCTURES
+The structure for
+.ZN ResizeRequest
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XResourceManagerString.man b/libX11/man/XResourceManagerString.man
index 50c1a256c..70530a447 100644
--- a/libX11/man/XResourceManagerString.man
+++ b/libX11/man/XResourceManagerString.man
@@ -1,184 +1,184 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XResourceManagerString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XResourceManagerString, XScreenResourceString \- obtain server resource properties
-.SH SYNTAX
-.HP
-char *XResourceManagerString\^(\^Display *\fIdisplay\fP\^);
-.HP
-char *XScreenResourceString\^(\^Screen *\fIscreen\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIscreen\fP 1i
-Specifies the screen.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XOpenDisplay .
-The property is converted from type STRING to the current locale.
-The conversion is identical to that produced by
-.ZN 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
-.ZN XrmGetStringDatabase .
-If no property exists, NULL is returned.
-.LP
-The
-.ZN 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
-.ZN XmbTextPropertyToTextList
-for a single element STRING property.
-The property value must be in a format that is acceptable to
-.ZN XrmGetStringDatabase .
-If no property exists, NULL is returned.
-The caller is responsible for freeing the returned string by using
-.ZN XFree .
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XResourceManagerString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XResourceManagerString, XScreenResourceString \- obtain server resource properties
+.SH SYNTAX
+.HP
+char *XResourceManagerString\^(\^Display *\fIdisplay\fP\^);
+.HP
+char *XScreenResourceString\^(\^Screen *\fIscreen\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIscreen\fP 1i
+Specifies the screen.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XOpenDisplay .
+The property is converted from type STRING to the current locale.
+The conversion is identical to that produced by
+.ZN 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
+.ZN XrmGetStringDatabase .
+If no property exists, NULL is returned.
+.LP
+The
+.ZN 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
+.ZN XmbTextPropertyToTextList
+for a single element STRING property.
+The property value must be in a format that is acceptable to
+.ZN XrmGetStringDatabase .
+If no property exists, NULL is returned.
+The caller is responsible for freeing the returned string by using
+.ZN XFree .
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XSaveContext.man b/libX11/man/XSaveContext.man
index 64481cc25..77ddca9f1 100644
--- a/libX11/man/XSaveContext.man
+++ b/libX11/man/XSaveContext.man
@@ -1,205 +1,205 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSaveContext __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSaveContext, XFindContext, XDeleteContext, XUniqueContext \- associative look-up routines
-.SH SYNTAX
-.HP
-int XSaveContext(\^Display *\fIdisplay\fP\^, XID \fIrid\fP\^, XContext
-\fIcontext\fP\^, XPointer \fIdata\fP\^);
-.HP
-int XFindContext(\^Display *\fIdisplay\fP\^, XID \fIrid\fP\^, XContext
-\fIcontext\fP\^, XPointer *\fIdata_return\fP\^);
-.HP
-int XDeleteContext(\^Display *\fIdisplay\fP\^, XID \fIrid\fP, XContext
-\fIcontext\fP);
-.LP
-XContext XUniqueContext(void);
-.SH ARGUMENTS
-.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.
-.IP \fIdata_return\fP 1i
-Returns the data.
-.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.
-.SH DESCRIPTION
-If an entry with the specified resource ID and type already exists,
-.ZN XSaveContext
-overrides it with the specified context.
-The
-.ZN XSaveContext
-function returns a nonzero error code if an error has occurred
-and zero otherwise.
-Possible errors are
-.ZN XCNOMEM
-(out of memory).
-.LP
-Because it is a return value,
-the data is a pointer.
-The
-.ZN XFindContext
-function returns a nonzero error code if an error has occurred
-and zero otherwise.
-Possible errors are
-.ZN XCNOENT
-(context-not-found).
-.LP
-The
-.ZN XDeleteContext
-function deletes the entry for the given resource ID
-and type from the data structure.
-This function returns the same error codes that
-.ZN XFindContext
-returns if called with the same arguments.
-.ZN XDeleteContext
-does not free the data whose address was saved.
-.LP
-The
-.ZN XUniqueContext
-function creates a unique context type that may be used in subsequent calls to
-.ZN XSaveContext .
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSaveContext __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSaveContext, XFindContext, XDeleteContext, XUniqueContext \- associative look-up routines
+.SH SYNTAX
+.HP
+int XSaveContext(\^Display *\fIdisplay\fP\^, XID \fIrid\fP\^, XContext
+\fIcontext\fP\^, XPointer \fIdata\fP\^);
+.HP
+int XFindContext(\^Display *\fIdisplay\fP\^, XID \fIrid\fP\^, XContext
+\fIcontext\fP\^, XPointer *\fIdata_return\fP\^);
+.HP
+int XDeleteContext(\^Display *\fIdisplay\fP\^, XID \fIrid\fP, XContext
+\fIcontext\fP);
+.LP
+XContext XUniqueContext(void);
+.SH ARGUMENTS
+.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.
+.IP \fIdata_return\fP 1i
+Returns the data.
+.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.
+.SH DESCRIPTION
+If an entry with the specified resource ID and type already exists,
+.ZN XSaveContext
+overrides it with the specified context.
+The
+.ZN XSaveContext
+function returns a nonzero error code if an error has occurred
+and zero otherwise.
+Possible errors are
+.ZN XCNOMEM
+(out of memory).
+.LP
+Because it is a return value,
+the data is a pointer.
+The
+.ZN XFindContext
+function returns a nonzero error code if an error has occurred
+and zero otherwise.
+Possible errors are
+.ZN XCNOENT
+(context-not-found).
+.LP
+The
+.ZN XDeleteContext
+function deletes the entry for the given resource ID
+and type from the data structure.
+This function returns the same error codes that
+.ZN XFindContext
+returns if called with the same arguments.
+.ZN XDeleteContext
+does not free the data whose address was saved.
+.LP
+The
+.ZN XUniqueContext
+function creates a unique context type that may be used in subsequent calls to
+.ZN XSaveContext .
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XSelectInput.man b/libX11/man/XSelectInput.man
index 39b76398f..bbd3438dc 100644
--- a/libX11/man/XSelectInput.man
+++ b/libX11/man/XSelectInput.man
@@ -1,212 +1,212 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSelectInput __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSelectInput \- select input events
-.SH SYNTAX
-.HP
-int XSelectInput\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, long
-\fIevent_mask\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIevent_mask\fP 1i
-Specifies the event mask.
-.ds Wi whose events you are interested in
-.IP \fIw\fP 1i
-Specifies the window \*(Wi.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN CirculateRequest ,
-.ZN ConfigureRequest ,
-or
-.ZN MapRequest
-events, which are associated with
-the event mask
-.ZN SubstructureRedirectMask .
-.IP \(bu 5
-Only one client at a time can select
-a
-.ZN ResizeRequest
-event, which is associated with
-the event mask
-.ZN ResizeRedirectMask .
-.IP \(bu 5
-Only one client at a time can select a
-.ZN ButtonPress
-event, which is associated with
-the event mask
-.ZN ButtonPressMask .
-.LP
-The server reports the event to all interested clients.
-.LP
-.ZN XSelectInput
-can generate a
-.ZN BadWindow
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSelectInput __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSelectInput \- select input events
+.SH SYNTAX
+.HP
+int XSelectInput\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, long
+\fIevent_mask\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_mask\fP 1i
+Specifies the event mask.
+.ds Wi whose events you are interested in
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN CirculateRequest ,
+.ZN ConfigureRequest ,
+or
+.ZN MapRequest
+events, which are associated with
+the event mask
+.ZN SubstructureRedirectMask .
+.IP \(bu 5
+Only one client at a time can select
+a
+.ZN ResizeRequest
+event, which is associated with
+the event mask
+.ZN ResizeRedirectMask .
+.IP \(bu 5
+Only one client at a time can select a
+.ZN ButtonPress
+event, which is associated with
+the event mask
+.ZN ButtonPressMask .
+.LP
+The server reports the event to all interested clients.
+.LP
+.ZN XSelectInput
+can generate a
+.ZN BadWindow
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XSelectionClearEvent.man b/libX11/man/XSelectionClearEvent.man
index bf04e4376..32108e0f6 100644
--- a/libX11/man/XSelectionClearEvent.man
+++ b/libX11/man/XSelectionClearEvent.man
@@ -1,221 +1,221 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSelectionClearEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSelectionClearEvent \- SelectionClear event structure
-.SH STRUCTURES
-The structure for
-.ZN SelectionClear
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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
-.ZN XSetSelectionOwner
-call.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XSetSelectionOwner(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSelectionClearEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSelectionClearEvent \- SelectionClear event structure
+.SH STRUCTURES
+The structure for
+.ZN SelectionClear
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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
+.ZN XSetSelectionOwner
+call.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XSetSelectionOwner(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSelectionEvent.man b/libX11/man/XSelectionEvent.man
index 618bb6a92..c0a58020a 100644
--- a/libX11/man/XSelectionEvent.man
+++ b/libX11/man/XSelectionEvent.man
@@ -1,229 +1,229 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSelectionEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSelectionEvent \- SelectionNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN SelectionNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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
-.ZN None .
-The time member is set to the time the conversion took place and
-can be a timestamp or
-.ZN CurrentTime .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSelectionEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSelectionEvent \- SelectionNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN SelectionNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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
+.ZN None .
+The time member is set to the time the conversion took place and
+can be a timestamp or
+.ZN CurrentTime .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSelectionRequestEvent.man b/libX11/man/XSelectionRequestEvent.man
index 6ec5cc11e..d6e016c05 100644
--- a/libX11/man/XSelectionRequestEvent.man
+++ b/libX11/man/XSelectionRequestEvent.man
@@ -1,233 +1,233 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSelectionRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSelectionRequestEvent \- SelectionRequest event structure
-.SH STRUCTURES
-The structure for
-.ZN SelectionRequest
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 owner member is set to the window
-that was specified by the current owner in its
-.ZN 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
-.ZN None .
-The time member is set to the timestamp or
-.ZN CurrentTime
-value from the
-.ZN ConvertSelection
-request.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSetSelectionOwner(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSelectionRequestEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSelectionRequestEvent \- SelectionRequest event structure
+.SH STRUCTURES
+The structure for
+.ZN SelectionRequest
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 owner member is set to the window
+that was specified by the current owner in its
+.ZN 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
+.ZN None .
+The time member is set to the timestamp or
+.ZN CurrentTime
+value from the
+.ZN ConvertSelection
+request.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSetSelectionOwner(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSendEvent.man b/libX11/man/XSendEvent.man
index 7dcf99c0e..a3293891a 100644
--- a/libX11/man/XSendEvent.man
+++ b/libX11/man/XSendEvent.man
@@ -1,314 +1,314 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSendEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSendEvent, XDisplayMotionBufferSize, XGetMotionEvents, XTimeCoord \- send events and pointer motion history structure
-.SH SYNTAX
-.HP
-Status XSendEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Bool
-\fIpropagate\fP\^, long \fIevent_mask\fP\^, XEvent *\fIevent_send\fP\^);
-.HP
-unsigned long XDisplayMotionBufferSize\^(\^Display *\fIdisplay\fP\^);
-.HP
-XTimeCoord *XGetMotionEvents\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-Time \fIstart\fP\^, Time \fIstop\fP\^, int *\fInevents_return\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIevent_mask\fP 1i
-Specifies the event mask.
-.IP \fIevent_send\fP 1i
-Specifies the event that is to be sent.
-.IP \fInevents_return\fP 1i
-Returns the number of events from the motion history buffer.
-.IP \fIpropagate\fP 1i
-Specifies a Boolean value.
-.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
-.ZN CurrentTime .
-.ds Wi the window the event is to be sent to,
-.ZN PointerWindow ,
-or
-.ZN InputFocus .
-.IP \fIw\fP 1i
-Specifies the window \*(Wi.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN PointerWindow ,
-the destination window is the window that contains the pointer.
-.IP \(bu 5
-If w is
-.ZN 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,
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN XEvent
-structure must be one of the core events or one of the events
-defined by an extension (or a
-.ZN 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
-.ZN 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
-.ZN XSendEvent .
-.LP
-.ZN XSendEvent
-returns zero if the conversion to wire protocol format failed
-and returns nonzero otherwise.
-.ZN XSendEvent
-can generate
-.ZN BadValue
-and
-.ZN BadWindow
-errors.
-.LP
-The server may retain the recent history of the pointer motion
-and do so to a finer granularity than is reported by
-.ZN MotionNotify
-events.
-The
-.ZN XGetMotionEvents
-function makes this history available.
-.LP
-The
-.ZN 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;
-.ZN XGetMotionEvents
-returns NULL.
-If the stop time is in the future, it is equivalent to specifying
-.ZN CurrentTime .
-.ZN XGetMotionEvents
-can generate a
-.ZN BadWindow
-error.
-.SH STRUCTURES
-The
-.ZN XTimeCoord
-structure contains:
-.LP
-.Ds 0
-.TA .5i
-.ta .5i
-typedef struct {
- Time time;
- short x, y;
-} XTimeCoord;
-.De
-.LP
-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.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XIfEvent(__libmansuffix__),
-XNextEvent(__libmansuffix__),
-XPutBackEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSendEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSendEvent, XDisplayMotionBufferSize, XGetMotionEvents, XTimeCoord \- send events and pointer motion history structure
+.SH SYNTAX
+.HP
+Status XSendEvent\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Bool
+\fIpropagate\fP\^, long \fIevent_mask\fP\^, XEvent *\fIevent_send\fP\^);
+.HP
+unsigned long XDisplayMotionBufferSize\^(\^Display *\fIdisplay\fP\^);
+.HP
+XTimeCoord *XGetMotionEvents\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+Time \fIstart\fP\^, Time \fIstop\fP\^, int *\fInevents_return\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_mask\fP 1i
+Specifies the event mask.
+.IP \fIevent_send\fP 1i
+Specifies the event that is to be sent.
+.IP \fInevents_return\fP 1i
+Returns the number of events from the motion history buffer.
+.IP \fIpropagate\fP 1i
+Specifies a Boolean value.
+.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
+.ZN CurrentTime .
+.ds Wi the window the event is to be sent to,
+.ZN PointerWindow ,
+or
+.ZN InputFocus .
+.IP \fIw\fP 1i
+Specifies the window \*(Wi.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN PointerWindow ,
+the destination window is the window that contains the pointer.
+.IP \(bu 5
+If w is
+.ZN 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,
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN XEvent
+structure must be one of the core events or one of the events
+defined by an extension (or a
+.ZN 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
+.ZN 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
+.ZN XSendEvent .
+.LP
+.ZN XSendEvent
+returns zero if the conversion to wire protocol format failed
+and returns nonzero otherwise.
+.ZN XSendEvent
+can generate
+.ZN BadValue
+and
+.ZN BadWindow
+errors.
+.LP
+The server may retain the recent history of the pointer motion
+and do so to a finer granularity than is reported by
+.ZN MotionNotify
+events.
+The
+.ZN XGetMotionEvents
+function makes this history available.
+.LP
+The
+.ZN 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;
+.ZN XGetMotionEvents
+returns NULL.
+If the stop time is in the future, it is equivalent to specifying
+.ZN CurrentTime .
+.ZN XGetMotionEvents
+can generate a
+.ZN BadWindow
+error.
+.SH STRUCTURES
+The
+.ZN XTimeCoord
+structure contains:
+.LP
+.Ds 0
+.TA .5i
+.ta .5i
+typedef struct {
+ Time time;
+ short x, y;
+} XTimeCoord;
+.De
+.LP
+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.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XIfEvent(__libmansuffix__),
+XNextEvent(__libmansuffix__),
+XPutBackEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetArcMode.man b/libX11/man/XSetArcMode.man
index dc4e12391..91e53e134 100644
--- a/libX11/man/XSetArcMode.man
+++ b/libX11/man/XSetArcMode.man
@@ -1,242 +1,242 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetArcMode __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetArcMode, XSetSubwindowMode, XSetGraphicsExposure \- GC convenience routines
-.SH SYNTAX
-.HP
-int XSetArcMode\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
-\fIarc_mode\fP\^);
-.HP
-int XSetSubwindowMode\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
-\fIsubwindow_mode\fP\^);
-.HP
-int XSetGraphicsExposures\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Bool
-\fIgraphics_exposures\fP\^);
-.SH ARGUMENTS
-.IP \fIarc_mode\fP 1i
-Specifies the arc mode.
-You can pass
-.ZN ArcChord
-or
-.ZN ArcPieSlice .
-.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
-.ZN GraphicsExpose
-and
-.ZN NoExpose
-events to be reported when calling
-.ZN XCopyArea
-and
-.ZN XCopyPlane
-with this GC.
-.IP \fIsubwindow_mode\fP 1i
-Specifies the subwindow mode.
-You can pass
-.ZN ClipByChildren
-or
-.ZN IncludeInferiors .
-.SH DESCRIPTION
-The
-.ZN XSetArcMode
-function sets the arc mode in the specified GC.
-.LP
-.ZN XSetArcMode
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN XSetSubwindowMode
-function sets the subwindow mode in the specified GC.
-.LP
-.ZN XSetSubwindowMode
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN XSetGraphicsExposures
-function sets the graphics-exposures flag in the specified GC.
-.LP
-.ZN XSetGraphicsExposures
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-and
-.ZN BadValue
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XCopyArea(__libmansuffix__),
-XCreateGC(__libmansuffix__),
-XQueryBestSize(__libmansuffix__),
-XSetClipOrigin(__libmansuffix__),
-XSetFillStyle(__libmansuffix__),
-XSetFont(__libmansuffix__),
-XSetLineAttributes(__libmansuffix__),
-XSetState(__libmansuffix__),
-XSetTile(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetArcMode __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetArcMode, XSetSubwindowMode, XSetGraphicsExposure \- GC convenience routines
+.SH SYNTAX
+.HP
+int XSetArcMode\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
+\fIarc_mode\fP\^);
+.HP
+int XSetSubwindowMode\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
+\fIsubwindow_mode\fP\^);
+.HP
+int XSetGraphicsExposures\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Bool
+\fIgraphics_exposures\fP\^);
+.SH ARGUMENTS
+.IP \fIarc_mode\fP 1i
+Specifies the arc mode.
+You can pass
+.ZN ArcChord
+or
+.ZN ArcPieSlice .
+.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
+.ZN GraphicsExpose
+and
+.ZN NoExpose
+events to be reported when calling
+.ZN XCopyArea
+and
+.ZN XCopyPlane
+with this GC.
+.IP \fIsubwindow_mode\fP 1i
+Specifies the subwindow mode.
+You can pass
+.ZN ClipByChildren
+or
+.ZN IncludeInferiors .
+.SH DESCRIPTION
+The
+.ZN XSetArcMode
+function sets the arc mode in the specified GC.
+.LP
+.ZN XSetArcMode
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN XSetSubwindowMode
+function sets the subwindow mode in the specified GC.
+.LP
+.ZN XSetSubwindowMode
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN XSetGraphicsExposures
+function sets the graphics-exposures flag in the specified GC.
+.LP
+.ZN XSetGraphicsExposures
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+and
+.ZN BadValue
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XCopyArea(__libmansuffix__),
+XCreateGC(__libmansuffix__),
+XQueryBestSize(__libmansuffix__),
+XSetClipOrigin(__libmansuffix__),
+XSetFillStyle(__libmansuffix__),
+XSetFont(__libmansuffix__),
+XSetLineAttributes(__libmansuffix__),
+XSetState(__libmansuffix__),
+XSetTile(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetClipOrigin.man b/libX11/man/XSetClipOrigin.man
index 83decc7cb..c9d67ac79 100644
--- a/libX11/man/XSetClipOrigin.man
+++ b/libX11/man/XSetClipOrigin.man
@@ -1,294 +1,294 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetClipOrigin __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetClipOrigin, XSetClipMask, XSetClipRectangles \- GC convenience routines
-.SH SYNTAX
-.HP
-int XSetClipOrigin\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
-\fIclip_x_origin\fP\^, int \fIclip_y_origin\fP\^);
-.HP
-int XSetClipMask\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Pixmap
-\fIpixmap\fP\^);
-.HP
-int XSetClipRectangles\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
-\fIclip_x_origin\fP\^, int \fIclip_y_origin\fP\^, XRectangle
-\fIrectangles\fP[]\^, int \fIn\fP\^, int \fIordering\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.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 \fIgc\fP 1i
-Specifies the GC.
-.IP \fIn\fP 1i
-Specifies the number of rectangles.
-.IP \fIordering\fP 1i
-Specifies the ordering relations on the rectangles.
-You can pass
-.ZN Unsorted ,
-.ZN YSorted ,
-.ZN YXSorted ,
-or
-.ZN YXBanded .
-.IP \fIpixmap\fP 1i
-Specifies the pixmap or
-.ZN None .
-.IP \fIrectangles\fP 1i
-Specifies an array of rectangles that define the clip-mask.
-.SH DESCRIPTION
-The
-.ZN XSetClipOrigin
-function sets the clip origin in the specified GC.
-The clip-mask origin is interpreted relative to the origin of whatever
-destination drawable is specified in the graphics request.
-.LP
-.ZN XSetClipOrigin
-can generate
-.ZN BadAlloc
-and
-.ZN BadGC
-errors.
-.LP
-The
-.ZN XSetClipMask
-function sets the clip-mask in the specified GC to the specified pixmap.
-If the clip-mask is set to
-.ZN None ,
-the pixels are are always drawn (regardless of the clip-origin).
-.LP
-.ZN XSetClipMask
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-.ZN BadMatch ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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
-.ZN None
-as the clip-mask in
-.ZN XCreateGC ,
-.ZN XChangeGC ,
-and
-.ZN 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
-.ZN BadMatch
-error, but it is not required to do so.
-If no error is generated, the graphics
-results are undefined.
-.ZN Unsorted
-means the rectangles are in arbitrary order.
-.ZN YSorted
-means that the rectangles are nondecreasing in their Y origin.
-.ZN YXSorted
-additionally constrains
-.ZN YSorted
-order in that all
-rectangles with an equal Y origin are nondecreasing in their X
-origin.
-.ZN YXBanded
-additionally constrains
-.ZN YXSorted
-by requiring that,
-for every possible Y scanline, all rectangles that include that
-scanline have an identical Y origins and Y extents.
-.LP
-.ZN XSetClipRectangles
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-.ZN BadMatch ,
-and
-.ZN BadValue
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XCreateGC(__libmansuffix__),
-XDrawRectangle(__libmansuffix__),
-XQueryBestSize(__libmansuffix__),
-XSetArcMode(__libmansuffix__),
-XSetFillStyle(__libmansuffix__),
-XSetFont(__libmansuffix__),
-XSetLineAttributes(__libmansuffix__),
-XSetState(__libmansuffix__),
-XSetTile(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetClipOrigin __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetClipOrigin, XSetClipMask, XSetClipRectangles \- GC convenience routines
+.SH SYNTAX
+.HP
+int XSetClipOrigin\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
+\fIclip_x_origin\fP\^, int \fIclip_y_origin\fP\^);
+.HP
+int XSetClipMask\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Pixmap
+\fIpixmap\fP\^);
+.HP
+int XSetClipRectangles\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
+\fIclip_x_origin\fP\^, int \fIclip_y_origin\fP\^, XRectangle
+\fIrectangles\fP[]\^, int \fIn\fP\^, int \fIordering\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.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 \fIgc\fP 1i
+Specifies the GC.
+.IP \fIn\fP 1i
+Specifies the number of rectangles.
+.IP \fIordering\fP 1i
+Specifies the ordering relations on the rectangles.
+You can pass
+.ZN Unsorted ,
+.ZN YSorted ,
+.ZN YXSorted ,
+or
+.ZN YXBanded .
+.IP \fIpixmap\fP 1i
+Specifies the pixmap or
+.ZN None .
+.IP \fIrectangles\fP 1i
+Specifies an array of rectangles that define the clip-mask.
+.SH DESCRIPTION
+The
+.ZN XSetClipOrigin
+function sets the clip origin in the specified GC.
+The clip-mask origin is interpreted relative to the origin of whatever
+destination drawable is specified in the graphics request.
+.LP
+.ZN XSetClipOrigin
+can generate
+.ZN BadAlloc
+and
+.ZN BadGC
+errors.
+.LP
+The
+.ZN XSetClipMask
+function sets the clip-mask in the specified GC to the specified pixmap.
+If the clip-mask is set to
+.ZN None ,
+the pixels are are always drawn (regardless of the clip-origin).
+.LP
+.ZN XSetClipMask
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+.ZN BadMatch ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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
+.ZN None
+as the clip-mask in
+.ZN XCreateGC ,
+.ZN XChangeGC ,
+and
+.ZN 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
+.ZN BadMatch
+error, but it is not required to do so.
+If no error is generated, the graphics
+results are undefined.
+.ZN Unsorted
+means the rectangles are in arbitrary order.
+.ZN YSorted
+means that the rectangles are nondecreasing in their Y origin.
+.ZN YXSorted
+additionally constrains
+.ZN YSorted
+order in that all
+rectangles with an equal Y origin are nondecreasing in their X
+origin.
+.ZN YXBanded
+additionally constrains
+.ZN YXSorted
+by requiring that,
+for every possible Y scanline, all rectangles that include that
+scanline have an identical Y origins and Y extents.
+.LP
+.ZN XSetClipRectangles
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+.ZN BadMatch ,
+and
+.ZN BadValue
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XCreateGC(__libmansuffix__),
+XDrawRectangle(__libmansuffix__),
+XQueryBestSize(__libmansuffix__),
+XSetArcMode(__libmansuffix__),
+XSetFillStyle(__libmansuffix__),
+XSetFont(__libmansuffix__),
+XSetLineAttributes(__libmansuffix__),
+XSetState(__libmansuffix__),
+XSetTile(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetCloseDownMode.man b/libX11/man/XSetCloseDownMode.man
index 27405c43f..290f677cd 100644
--- a/libX11/man/XSetCloseDownMode.man
+++ b/libX11/man/XSetCloseDownMode.man
@@ -1,220 +1,220 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetCloseDownMode __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetCloseDownMode, XKillClient \- control clients
-.SH SYNTAX
-.HP
-int XSetCloseDownMode\^(\^Display *\fIdisplay\fP\^, int \fIclose_mode\fP\^);
-.HP
-int XKillClient\^(\^Display *\fIdisplay\fP\^, XID \fIresource\fP\^);
-.SH ARGUMENTS
-.IP \fIclose_mode\fP 1i
-Specifies the client close-down mode.
-You can pass
-.ZN DestroyAll ,
-.ZN RetainPermanent ,
-or
-.ZN RetainTemporary .
-.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
-.ZN AllTemporary .
-.SH DESCRIPTION
-The
-.ZN XSetCloseDownMode
-defines what will happen to the client's resources at connection close.
-A connection starts in
-.ZN DestroyAll
-mode.
-For information on what happens to the client's resources when the
-close_mode argument is
-.ZN RetainPermanent
-or
-.ZN RetainTemporary ,
-see section 2.6.
-.LP
-.ZN XSetCloseDownMode
-can generate a
-.ZN BadValue
-error.
-.LP
-The
-.ZN 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
-.ZN RetainPermanent
-or
-.ZN RetainTemporary
-mode, all of the client's
-resources are destroyed.
-If
-.ZN AllTemporary
-is specified, the resources of all clients that have terminated in
-.ZN 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
-.ZN 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
-.ZN XKillClient
-can generate a
-.ZN BadValue
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetCloseDownMode __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetCloseDownMode, XKillClient \- control clients
+.SH SYNTAX
+.HP
+int XSetCloseDownMode\^(\^Display *\fIdisplay\fP\^, int \fIclose_mode\fP\^);
+.HP
+int XKillClient\^(\^Display *\fIdisplay\fP\^, XID \fIresource\fP\^);
+.SH ARGUMENTS
+.IP \fIclose_mode\fP 1i
+Specifies the client close-down mode.
+You can pass
+.ZN DestroyAll ,
+.ZN RetainPermanent ,
+or
+.ZN RetainTemporary .
+.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
+.ZN AllTemporary .
+.SH DESCRIPTION
+The
+.ZN XSetCloseDownMode
+defines what will happen to the client's resources at connection close.
+A connection starts in
+.ZN DestroyAll
+mode.
+For information on what happens to the client's resources when the
+close_mode argument is
+.ZN RetainPermanent
+or
+.ZN RetainTemporary ,
+see section 2.6.
+.LP
+.ZN XSetCloseDownMode
+can generate a
+.ZN BadValue
+error.
+.LP
+The
+.ZN 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
+.ZN RetainPermanent
+or
+.ZN RetainTemporary
+mode, all of the client's
+resources are destroyed.
+If
+.ZN AllTemporary
+is specified, the resources of all clients that have terminated in
+.ZN 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
+.ZN 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
+.ZN XKillClient
+can generate a
+.ZN BadValue
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XSetCommand.man b/libX11/man/XSetCommand.man
index 86caed303..ed29e30f9 100644
--- a/libX11/man/XSetCommand.man
+++ b/libX11/man/XSetCommand.man
@@ -1,224 +1,224 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetCommand __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetCommand, XGetCommand \- set or read a window's WM_COMMAND property
-.SH SYNTAX
-.HP
-int XSetCommand\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
-**\fIargv\fP\^, int \fIargc\fP\^);
-.HP
-Status XGetCommand\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
-***\fIargv_return\fP\^, int *\fIargc_return\fP\^);
-.SH ARGUMENTS
-.IP \fIargc\fP 1i
-Specifies the number of arguments.
-.IP \fIargc_return\fP 1i
-Returns the number of arguments returned.
-.IP \fIargv\fP 1i
-Specifies the application's argument list.
-.IP \fIargv_return\fP 1i
-Returns the application's argument list.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XSetCommand
-can generate
-.ZN BadAlloc
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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,
-.ZN XGetCommand
-fills in the argv_return and argc_return arguments
-and returns a nonzero status.
-Otherwise, or if any other error is encountered, 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
-.ZN XFreeStringList .
-.SH PROPERTIES
-.TP 1i
-\s-1WM_COMMAND\s+1
-The command and arguments, null-separated, used to invoke the
-application.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetCommand __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetCommand, XGetCommand \- set or read a window's WM_COMMAND property
+.SH SYNTAX
+.HP
+int XSetCommand\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
+**\fIargv\fP\^, int \fIargc\fP\^);
+.HP
+Status XGetCommand\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
+***\fIargv_return\fP\^, int *\fIargc_return\fP\^);
+.SH ARGUMENTS
+.IP \fIargc\fP 1i
+Specifies the number of arguments.
+.IP \fIargc_return\fP 1i
+Returns the number of arguments returned.
+.IP \fIargv\fP 1i
+Specifies the application's argument list.
+.IP \fIargv_return\fP 1i
+Returns the application's argument list.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XSetCommand
+can generate
+.ZN BadAlloc
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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,
+.ZN XGetCommand
+fills in the argv_return and argc_return arguments
+and returns a nonzero status.
+Otherwise, or if any other error is encountered, 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
+.ZN XFreeStringList .
+.SH PROPERTIES
+.TP 1i
+\s-1WM_COMMAND\s+1
+The command and arguments, null-separated, used to invoke the
+application.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetErrorHandler.man b/libX11/man/XSetErrorHandler.man
index c601837a6..09147dade 100644
--- a/libX11/man/XSetErrorHandler.man
+++ b/libX11/man/XSetErrorHandler.man
@@ -1,275 +1,275 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetErrorHandler __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetErrorHandler, XGetErrorText, XDisplayName, XSetIOErrorHandler, XGetErrorDatabaseText \- default error handlers
-.SH SYNTAX
-.HP
-int (*XSetErrorHandler\^(\^int (\^*\^\fIhandler\fP\^)\^(Display *, XErrorEvent
-*)\^)\^)\^(\^);
-.HP
-int XGetErrorText\^(\^Display *\fIdisplay\fP\^, int \fIcode\fP\^, char
-*\fIbuffer_return\fP\^, int \fIlength\fP\^);
-.HP
-char *XDisplayName\^(\^char *\fIstring\fP\^);
-.HP
-int (*XSetIOErrorHandler\^(\^int (\^*\^\fIhandler\fP\^)(Display
-*)\^)\^)\^(\^);
-.HP
-int XGetErrorDatabaseText\^(\^Display *\fIdisplay\fP\^, char *\fIname\fP, char
-*\fImessage\fP\^, char *\fIdefault_string\fP\^, char *\fIbuffer_return\fP\^,
-int \fIlength\fP\^);
-.SH ARGUMENTS
-.IP \fIbuffer_return\fP 1i
-Returns the error description.
-.IP \fIcode\fP 1i
-Specifies the error code for which you want to obtain a description.
-.IP \fIdefault_string\fP 1i
-Specifies the default error message if none is found in the database.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIhandler\fP 1i
-Specifies the program's supplied error handler.
-.IP \fIlength\fP 1i
-Specifies the size of the buffer.
-.IP \fImessage\fP 1i
-Specifies the type of the error message.
-.IP \fIname\fP 1i
-Specifies the name of the application.
-.IP \fIstring\fP 1i
-Specifies the character string.
-.SH DESCRIPTION
-Xlib generally calls the program's
-supplied error handler whenever an error is received.
-It is not called on
-.ZN BadName
-errors from
-.ZN OpenFont ,
-.ZN LookupColor ,
-or
-.ZN AllocNamedColor
-protocol requests or on
-.ZN BadFont
-errors from a
-.ZN 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
-.ZN 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
-The
-.ZN XDisplayName
-function returns the name of the display that
-.ZN XOpenDisplay
-would attempt to use.
-If a NULL string is specified,
-.ZN XDisplayName
-looks in the environment for the display and returns the display name that
-.ZN 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
-The
-.ZN 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.
-.LP
-The
-.ZN 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
-.ZN 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.
-.SH "SEE ALSO"
-XOpenDisplay(__libmansuffix__),
-XSynchronize(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetErrorHandler __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetErrorHandler, XGetErrorText, XDisplayName, XSetIOErrorHandler, XGetErrorDatabaseText \- default error handlers
+.SH SYNTAX
+.HP
+int (*XSetErrorHandler\^(\^int (\^*\^\fIhandler\fP\^)\^(Display *, XErrorEvent
+*)\^)\^)\^(\^);
+.HP
+int XGetErrorText\^(\^Display *\fIdisplay\fP\^, int \fIcode\fP\^, char
+*\fIbuffer_return\fP\^, int \fIlength\fP\^);
+.HP
+char *XDisplayName\^(\^char *\fIstring\fP\^);
+.HP
+int (*XSetIOErrorHandler\^(\^int (\^*\^\fIhandler\fP\^)(Display
+*)\^)\^)\^(\^);
+.HP
+int XGetErrorDatabaseText\^(\^Display *\fIdisplay\fP\^, char *\fIname\fP, char
+*\fImessage\fP\^, char *\fIdefault_string\fP\^, char *\fIbuffer_return\fP\^,
+int \fIlength\fP\^);
+.SH ARGUMENTS
+.IP \fIbuffer_return\fP 1i
+Returns the error description.
+.IP \fIcode\fP 1i
+Specifies the error code for which you want to obtain a description.
+.IP \fIdefault_string\fP 1i
+Specifies the default error message if none is found in the database.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIhandler\fP 1i
+Specifies the program's supplied error handler.
+.IP \fIlength\fP 1i
+Specifies the size of the buffer.
+.IP \fImessage\fP 1i
+Specifies the type of the error message.
+.IP \fIname\fP 1i
+Specifies the name of the application.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.SH DESCRIPTION
+Xlib generally calls the program's
+supplied error handler whenever an error is received.
+It is not called on
+.ZN BadName
+errors from
+.ZN OpenFont ,
+.ZN LookupColor ,
+or
+.ZN AllocNamedColor
+protocol requests or on
+.ZN BadFont
+errors from a
+.ZN 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
+.ZN 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
+The
+.ZN XDisplayName
+function returns the name of the display that
+.ZN XOpenDisplay
+would attempt to use.
+If a NULL string is specified,
+.ZN XDisplayName
+looks in the environment for the display and returns the display name that
+.ZN 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
+The
+.ZN 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.
+.LP
+The
+.ZN 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
+.ZN 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.
+.SH "SEE ALSO"
+XOpenDisplay(__libmansuffix__),
+XSynchronize(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetEventQueueOwner.man b/libX11/man/XSetEventQueueOwner.man
index d9740d4c6..e53e5c553 100644
--- a/libX11/man/XSetEventQueueOwner.man
+++ b/libX11/man/XSetEventQueueOwner.man
@@ -1,58 +1,58 @@
-.\" Copyright \(co 2006 Josh Triplett
-.\"
-.\" 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.
-.\"
-.TH XSetEventQueueOwner __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetEventQueueOwner \- set event queue owner on a shared Xlib/XCB connection
-.SH SYNTAX
-.HP
- #include <X11/Xlib-xcb.h>
-.HP
-void XSetEventQueueOwner(Display *\fIdpy\fP, enum XEventQueueOwner \fIowner\fP);
-.SH ARGUMENTS
-.IP \fIdpy\fP 1i
-Specifies the connection to the X server.
-.IP \fIowner\fP 1i
-Specifies the event queue ownership:
-.RS
-.TP
-\fIXlibOwnsEventQueue\fP (default)
-Xlib owns the event queue. Use the Xlib event-handling functions. Do not
-call the XCB event-handling functions.
-.TP
-\fIXCBOwnsEventQueue\fP
-XCB owns the event queue. Use the XCB event-handling functions. Do not call
-the Xlib event-handling functions.
-.RE
-.IN "Environment" "DISPLAY"
-.SH DESCRIPTION
-While a client using Xlib/XCB can issue requests and handle their replies or
-errors with either Xlib or XCB, only one can own and handle the event queue.
-By default, Xlib must own the event queue, for compatibility with legacy Xlib
-clients. Clients can call \fIXSetEventQueueOwner\fP immediately after
-\fIXOpenDisplay\fP to let XCB own the event queue instead. Clients may not
-call \fIXSetEventQueueOwner\fP at any other time, as this will potentially
-lose responses.
-.SH "SEE ALSO"
-XOpenDisplay(__libmansuffix__),
-XGetXCBConnection(__libmansuffix__),
-.br
-\fIXlib \- C Language X Interface\fP
+.\" Copyright \(co 2006 Josh Triplett
+.\"
+.\" 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.
+.\"
+.TH XSetEventQueueOwner __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetEventQueueOwner \- set event queue owner on a shared Xlib/XCB connection
+.SH SYNTAX
+.HP
+ #include <X11/Xlib-xcb.h>
+.HP
+void XSetEventQueueOwner(Display *\fIdpy\fP, enum XEventQueueOwner \fIowner\fP);
+.SH ARGUMENTS
+.IP \fIdpy\fP 1i
+Specifies the connection to the X server.
+.IP \fIowner\fP 1i
+Specifies the event queue ownership:
+.RS
+.TP
+\fIXlibOwnsEventQueue\fP (default)
+Xlib owns the event queue. Use the Xlib event-handling functions. Do not
+call the XCB event-handling functions.
+.TP
+\fIXCBOwnsEventQueue\fP
+XCB owns the event queue. Use the XCB event-handling functions. Do not call
+the Xlib event-handling functions.
+.RE
+.IN "Environment" "DISPLAY"
+.SH DESCRIPTION
+While a client using Xlib/XCB can issue requests and handle their replies or
+errors with either Xlib or XCB, only one can own and handle the event queue.
+By default, Xlib must own the event queue, for compatibility with legacy Xlib
+clients. Clients can call \fIXSetEventQueueOwner\fP immediately after
+\fIXOpenDisplay\fP to let XCB own the event queue instead. Clients may not
+call \fIXSetEventQueueOwner\fP at any other time, as this will potentially
+lose responses.
+.SH "SEE ALSO"
+XOpenDisplay(__libmansuffix__),
+XGetXCBConnection(__libmansuffix__),
+.br
+\fIXlib \- C Language X Interface\fP
diff --git a/libX11/man/XSetFillStyle.man b/libX11/man/XSetFillStyle.man
index 3de363c25..49dfd606c 100644
--- a/libX11/man/XSetFillStyle.man
+++ b/libX11/man/XSetFillStyle.man
@@ -1,218 +1,218 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetFillStyle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetFillStyle, XSetFillRule \- GC convenience routines
-.SH SYNTAX
-.HP
-int XSetFillStyle\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
-\fIfill_style\fP\^);
-.HP
-int XSetFillRule\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
-\fIfill_rule\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIfill_rule\fP 1i
-Specifies the fill-rule you want to set for the specified GC.
-You can pass
-.ZN EvenOddRule
-or
-.ZN WindingRule .
-.IP \fIfill_style\fP 1i
-Specifies the fill-style you want to set for the specified GC.
-You can pass
-.ZN FillSolid ,
-.ZN FillTiled ,
-.ZN FillStippled ,
-or
-.ZN FillOpaqueStippled .
-.IP \fIgc\fP 1i
-Specifies the GC.
-.SH DESCRIPTION
-The
-.ZN XSetFillStyle
-function sets the fill-style in the specified GC.
-.LP
-.ZN XSetFillStyle
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN XSetFillRule
-function sets the fill-rule in the specified GC.
-.LP
-.ZN XSetFillRule
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-and
-.ZN BadValue
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XCreateGC(__libmansuffix__),
-XQueryBestSize(__libmansuffix__),
-XSetArcMode(__libmansuffix__),
-XSetClipOrigin(__libmansuffix__),
-XSetFont(__libmansuffix__),
-XSetLineAttributes(__libmansuffix__),
-XSetState(__libmansuffix__),
-XSetTile(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetFillStyle __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetFillStyle, XSetFillRule \- GC convenience routines
+.SH SYNTAX
+.HP
+int XSetFillStyle\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
+\fIfill_style\fP\^);
+.HP
+int XSetFillRule\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
+\fIfill_rule\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfill_rule\fP 1i
+Specifies the fill-rule you want to set for the specified GC.
+You can pass
+.ZN EvenOddRule
+or
+.ZN WindingRule .
+.IP \fIfill_style\fP 1i
+Specifies the fill-style you want to set for the specified GC.
+You can pass
+.ZN FillSolid ,
+.ZN FillTiled ,
+.ZN FillStippled ,
+or
+.ZN FillOpaqueStippled .
+.IP \fIgc\fP 1i
+Specifies the GC.
+.SH DESCRIPTION
+The
+.ZN XSetFillStyle
+function sets the fill-style in the specified GC.
+.LP
+.ZN XSetFillStyle
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN XSetFillRule
+function sets the fill-rule in the specified GC.
+.LP
+.ZN XSetFillRule
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+and
+.ZN BadValue
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XCreateGC(__libmansuffix__),
+XQueryBestSize(__libmansuffix__),
+XSetArcMode(__libmansuffix__),
+XSetClipOrigin(__libmansuffix__),
+XSetFont(__libmansuffix__),
+XSetLineAttributes(__libmansuffix__),
+XSetState(__libmansuffix__),
+XSetTile(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetFont.man b/libX11/man/XSetFont.man
index 702195922..27ead7430 100644
--- a/libX11/man/XSetFont.man
+++ b/libX11/man/XSetFont.man
@@ -1,187 +1,187 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetFont __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetFont \- GC convenience routines
-.SH SYNTAX
-.HP
-int XSetFont\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Font \fIfont\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIfont\fP 1i
-Specifies the font.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.SH DESCRIPTION
-The
-.ZN XSetFont
-function sets the current font in the specified GC.
-.LP
-.ZN XSetFont
-can generate
-.ZN BadAlloc ,
-.ZN BadFont ,
-and
-.ZN BadGC
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadFont
-A value for a Font or GContext argument does not name a defined Font.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.SH "SEE ALSO"
-XCreateGC(__libmansuffix__),
-XQueryBestSize(__libmansuffix__),
-XSetArcMode(__libmansuffix__),
-XSetClipOrigin(__libmansuffix__),
-XSetFillStyle(__libmansuffix__),
-XSetLineAttributes(__libmansuffix__),
-XSetState(__libmansuffix__),
-XSetTile(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetFont __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetFont \- GC convenience routines
+.SH SYNTAX
+.HP
+int XSetFont\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Font \fIfont\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfont\fP 1i
+Specifies the font.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.SH DESCRIPTION
+The
+.ZN XSetFont
+function sets the current font in the specified GC.
+.LP
+.ZN XSetFont
+can generate
+.ZN BadAlloc ,
+.ZN BadFont ,
+and
+.ZN BadGC
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadFont
+A value for a Font or GContext argument does not name a defined Font.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.SH "SEE ALSO"
+XCreateGC(__libmansuffix__),
+XQueryBestSize(__libmansuffix__),
+XSetArcMode(__libmansuffix__),
+XSetClipOrigin(__libmansuffix__),
+XSetFillStyle(__libmansuffix__),
+XSetLineAttributes(__libmansuffix__),
+XSetState(__libmansuffix__),
+XSetTile(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetFontPath.man b/libX11/man/XSetFontPath.man
index b2336f6cb..eb8b67f17 100644
--- a/libX11/man/XSetFontPath.man
+++ b/libX11/man/XSetFontPath.man
@@ -1,213 +1,213 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetFontPath __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetFontPath, XGetFontPath, XFreeFontPath \- set, get, or free the font search path
-.SH SYNTAX
-int XSetFontPath\^(\^Display *\fIdisplay\fP\^, char **\fIdirectories\fP\^, int
-\fIndirs\fP\^);
-.HP
-char **XGetFontPath\^(\^Display *\fIdisplay\fP\^, int *\fInpaths_return\fP\^);
-.HP
-int XFreeFontPath\^(\^char **\fIlist\fP\^);
-.SH ARGUMENTS
-.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 \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIlist\fP 1i
-Specifies the array of strings you want to free.
-.IP \fIndirs\fP 1i
-Specifies the number of directories in the path.
-.IP \fInpaths_return\fP 1i
-Returns the number of strings in the font path array.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XSetFontPath
-can generate a
-.ZN BadValue
-error.
-.LP
-The
-.ZN 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
-.ZN XFreeFontPath .
-.LP
-The
-.ZN XFreeFontPath
-function
-frees the data allocated by
-.ZN XGetFontPath .
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XListFont(__libmansuffix__),
-XLoadFonts(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetFontPath __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetFontPath, XGetFontPath, XFreeFontPath \- set, get, or free the font search path
+.SH SYNTAX
+int XSetFontPath\^(\^Display *\fIdisplay\fP\^, char **\fIdirectories\fP\^, int
+\fIndirs\fP\^);
+.HP
+char **XGetFontPath\^(\^Display *\fIdisplay\fP\^, int *\fInpaths_return\fP\^);
+.HP
+int XFreeFontPath\^(\^char **\fIlist\fP\^);
+.SH ARGUMENTS
+.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 \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIlist\fP 1i
+Specifies the array of strings you want to free.
+.IP \fIndirs\fP 1i
+Specifies the number of directories in the path.
+.IP \fInpaths_return\fP 1i
+Returns the number of strings in the font path array.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XSetFontPath
+can generate a
+.ZN BadValue
+error.
+.LP
+The
+.ZN 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
+.ZN XFreeFontPath .
+.LP
+The
+.ZN XFreeFontPath
+function
+frees the data allocated by
+.ZN XGetFontPath .
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XListFont(__libmansuffix__),
+XLoadFonts(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetICFocus.man b/libX11/man/XSetICFocus.man
index 63a60bd67..772f2a93e 100644
--- a/libX11/man/XSetICFocus.man
+++ b/libX11/man/XSetICFocus.man
@@ -1,184 +1,184 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetICFocus __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetICFocus, XUnsetICFocus \- set and unset input context focus
-.SH SYNTAX
-.HP
-void XSetICFocus\^(\^XIC \fIic\fP\^);
-.HP
-void XUnsetICFocus\^(\^XIC \fIic\fP\^);
-.SH ARGUMENTS
-.IP \fIic\fP 1i
-Specifies the input context.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XSetICFocus
-does not affect the focus window value.
-.LP
-The
-.ZN 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
-.ZN 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.
-.SH "SEE ALSO"
-XCreateIC(__libmansuffix__),
-XOpenIM(__libmansuffix__),
-XSetICValues(__libmansuffix__),
-XmbResetIC(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetICFocus __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetICFocus, XUnsetICFocus \- set and unset input context focus
+.SH SYNTAX
+.HP
+void XSetICFocus\^(\^XIC \fIic\fP\^);
+.HP
+void XUnsetICFocus\^(\^XIC \fIic\fP\^);
+.SH ARGUMENTS
+.IP \fIic\fP 1i
+Specifies the input context.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XSetICFocus
+does not affect the focus window value.
+.LP
+The
+.ZN 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
+.ZN 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.
+.SH "SEE ALSO"
+XCreateIC(__libmansuffix__),
+XOpenIM(__libmansuffix__),
+XSetICValues(__libmansuffix__),
+XmbResetIC(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetICValues.man b/libX11/man/XSetICValues.man
index 36deb6eb0..39ee19fee 100644
--- a/libX11/man/XSetICValues.man
+++ b/libX11/man/XSetICValues.man
@@ -1,235 +1,235 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetICValues __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetICValues, XGetICValues \- set and obtain XIC values
-.SH SYNTAX
-.HP
-char * XSetICValues\^(\^XIC \fIic\fP, ...\^);
-.HP
-char * XGetICValues\^(\^XIC \fIic\fP, ...\^);
-.SH ARGUMENTS
-.IP \fIic\fP 1i
-Specifies the input context.
-.ds Al \ to set or get XIC values
-.IP ... 1i
-Specifies the variable length argument list\*(Al.
-.SH DESCRIPTION
-The
-.ZN 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,
-.ZN 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
-The
-.ZN XSetICValues
-can generate
-.ZN BadAtom ,
-.ZN BadColor ,
-.ZN BadCursor ,
-.ZN BadPixmap ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN XGetICValues
-allocates memory to store the actual data,
-and the client is responsible for freeing this data by calling
-.ZN XFree
-with the returned pointer.
-The exception to this rule is for an IC value of type
-.ZN XNVaNestedList
-(for preedit and status attributes).
-In this case, the argument must also be of type
-.ZN XVaNestedList .
-Then, the rule of changing type T to T* and freeing the allocated data
-applies to each element of the nested list.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAtom
-A value for an Atom argument does not name a defined Atom.
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.TP 1i
-.ZN BadCursor
-A value for a Cursor argument does not name a defined Cursor.
-.TP 1i
-.ZN BadPixmap
-A value for a Pixmap argument does not name a defined Pixmap.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XCreateIC(__libmansuffix__),
-XOpenIM(__libmansuffix__),
-XSetICFocus(__libmansuffix__),
-XmbResetIC(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetICValues __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetICValues, XGetICValues \- set and obtain XIC values
+.SH SYNTAX
+.HP
+char * XSetICValues\^(\^XIC \fIic\fP, ...\^);
+.HP
+char * XGetICValues\^(\^XIC \fIic\fP, ...\^);
+.SH ARGUMENTS
+.IP \fIic\fP 1i
+Specifies the input context.
+.ds Al \ to set or get XIC values
+.IP ... 1i
+Specifies the variable length argument list\*(Al.
+.SH DESCRIPTION
+The
+.ZN 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,
+.ZN 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
+The
+.ZN XSetICValues
+can generate
+.ZN BadAtom ,
+.ZN BadColor ,
+.ZN BadCursor ,
+.ZN BadPixmap ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN XGetICValues
+allocates memory to store the actual data,
+and the client is responsible for freeing this data by calling
+.ZN XFree
+with the returned pointer.
+The exception to this rule is for an IC value of type
+.ZN XNVaNestedList
+(for preedit and status attributes).
+In this case, the argument must also be of type
+.ZN XVaNestedList .
+Then, the rule of changing type T to T* and freeing the allocated data
+applies to each element of the nested list.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAtom
+A value for an Atom argument does not name a defined Atom.
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.TP 1i
+.ZN BadCursor
+A value for a Cursor argument does not name a defined Cursor.
+.TP 1i
+.ZN BadPixmap
+A value for a Pixmap argument does not name a defined Pixmap.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XCreateIC(__libmansuffix__),
+XOpenIM(__libmansuffix__),
+XSetICFocus(__libmansuffix__),
+XmbResetIC(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetInputFocus.man b/libX11/man/XSetInputFocus.man
index 6b6f57d22..4e4db8a0c 100644
--- a/libX11/man/XSetInputFocus.man
+++ b/libX11/man/XSetInputFocus.man
@@ -1,275 +1,275 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetInputFocus __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetInputFocus, XGetInputFocus \- control input focus
-.SH SYNTAX
-.HP
-int XSetInputFocus\^(\^Display *\fIdisplay\fP\^, Window \fIfocus\fP\^, int
-\fIrevert_to\fP\^, Time \fItime\fP\^);
-.HP
-int XGetInputFocus\^(\^Display *\fIdisplay\fP\^, Window *\fIfocus_return\fP\^,
-int *\fIrevert_to_return\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIfocus\fP 1i
-Specifies the window,
-.ZN PointerRoot ,
-or
-.ZN None .
-.IP \fIfocus_return\fP 1i
-Returns the focus window,
-.ZN PointerRoot ,
-or
-.ZN None .
-.IP \fIrevert_to\fP 1i
-Specifies where the input focus reverts to if the window becomes not
-viewable.
-You can pass
-.ZN RevertToParent ,
-.ZN RevertToPointerRoot ,
-or
-.ZN RevertToNone .
-.IP \fIrevert_to_return\fP 1i
-Returns the current focus state
-.Pn ( RevertToParent ,
-.ZN RevertToPointerRoot ,
-or
-.ZN RevertToNone ).
-.IP \fItime\fP 1i
-Specifies the time.
-You can pass either a timestamp or
-.ZN CurrentTime .
-.SH DESCRIPTION
-The
-.ZN 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).
-.ZN XSetInputFocus
-causes the X server to generate
-.ZN FocusIn
-and
-.ZN FocusOut
-events.
-.LP
-Depending on the focus argument,
-the following occurs:
-.IP \(bu 5
-If focus is
-.ZN 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
-.ZN 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
-.ZN XSetInputFocus
-is called,
-or a
-.ZN 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
-.ZN RevertToParent ,
-the focus reverts to the parent (or the closest viewable ancestor),
-and the new revert_to value is taken to be
-.ZN RevertToNone .
-.IP \(bu 5
-If revert_to is
-.ZN RevertToPointerRoot
-or
-.ZN RevertToNone ,
-the focus reverts to
-.ZN PointerRoot
-or
-.ZN None ,
-respectively.
-When the focus reverts,
-the X server generates
-.ZN FocusIn
-and
-.ZN FocusOut
-events, but the last-focus-change time is not affected.
-.LP
-.ZN XSetInputFocus
-can generate
-.ZN BadMatch ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XGetInputFocus
-function returns the focus window and the current focus state.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XWarpPointer(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetInputFocus __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetInputFocus, XGetInputFocus \- control input focus
+.SH SYNTAX
+.HP
+int XSetInputFocus\^(\^Display *\fIdisplay\fP\^, Window \fIfocus\fP\^, int
+\fIrevert_to\fP\^, Time \fItime\fP\^);
+.HP
+int XGetInputFocus\^(\^Display *\fIdisplay\fP\^, Window *\fIfocus_return\fP\^,
+int *\fIrevert_to_return\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfocus\fP 1i
+Specifies the window,
+.ZN PointerRoot ,
+or
+.ZN None .
+.IP \fIfocus_return\fP 1i
+Returns the focus window,
+.ZN PointerRoot ,
+or
+.ZN None .
+.IP \fIrevert_to\fP 1i
+Specifies where the input focus reverts to if the window becomes not
+viewable.
+You can pass
+.ZN RevertToParent ,
+.ZN RevertToPointerRoot ,
+or
+.ZN RevertToNone .
+.IP \fIrevert_to_return\fP 1i
+Returns the current focus state
+.Pn ( RevertToParent ,
+.ZN RevertToPointerRoot ,
+or
+.ZN RevertToNone ).
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.ZN CurrentTime .
+.SH DESCRIPTION
+The
+.ZN 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).
+.ZN XSetInputFocus
+causes the X server to generate
+.ZN FocusIn
+and
+.ZN FocusOut
+events.
+.LP
+Depending on the focus argument,
+the following occurs:
+.IP \(bu 5
+If focus is
+.ZN 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
+.ZN 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
+.ZN XSetInputFocus
+is called,
+or a
+.ZN 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
+.ZN RevertToParent ,
+the focus reverts to the parent (or the closest viewable ancestor),
+and the new revert_to value is taken to be
+.ZN RevertToNone .
+.IP \(bu 5
+If revert_to is
+.ZN RevertToPointerRoot
+or
+.ZN RevertToNone ,
+the focus reverts to
+.ZN PointerRoot
+or
+.ZN None ,
+respectively.
+When the focus reverts,
+the X server generates
+.ZN FocusIn
+and
+.ZN FocusOut
+events, but the last-focus-change time is not affected.
+.LP
+.ZN XSetInputFocus
+can generate
+.ZN BadMatch ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XGetInputFocus
+function returns the focus window and the current focus state.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XWarpPointer(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetLineAttributes.man b/libX11/man/XSetLineAttributes.man
index 690043068..2c85d6918 100644
--- a/libX11/man/XSetLineAttributes.man
+++ b/libX11/man/XSetLineAttributes.man
@@ -1,267 +1,267 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetLineAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetLineAttributes, XSetDashes \- GC convenience routines
-.SH SYNTAX
-.HP
-int XSetLineAttributes\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned
-int \fIline_width\fP\^, int \fIline_style\fP\^, int \fIcap_style\fP\^, int
-\fIjoin_style\fP\^);
-.HP
-int XSetDashes\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
-\fIdash_offset\fP\^, char \fIdash_list\fP[]\^, int \fIn\fP\^);
-.SH ARGUMENTS
-.IP \fIcap_style\fP 1i
-Specifies the line-style and cap-style you want to set for the specified GC.
-You can pass
-.ZN CapNotLast ,
-.ZN CapButt ,
-.ZN CapRound ,
-or
-.ZN CapProjecting .
-.IP \fIdash_list\fP 1i
-Specifies the dash-list for the dashed line-style
-you want to set for the specified 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 \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIjoin_style\fP 1i
-Specifies the line join-style you want to set for the specified GC.
-You can pass
-.ZN JoinMiter ,
-.ZN JoinRound ,
-or
-.ZN JoinBevel .
-.IP \fIline_style\fP 1i
-Specifies the line-style you want to set for the specified GC.
-You can pass
-.ZN LineSolid ,
-.ZN LineOnOffDash ,
-or
-.ZN LineDoubleDash .
-.IP \fIline_width\fP 1i
-Specifies the line-width you want to set for the specified GC.
-.IP \fIn\fP 1i
-Specifies the number of elements in dash_list.
-.SH DESCRIPTION
-The
-.ZN XSetLineAttributes
-function sets the line drawing components in the specified GC.
-.LP
-.ZN XSetLineAttributes
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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
-.ZN 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
-.ZN 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
-.ZN XSetDashes
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-and
-.ZN BadValue
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XCreateGC(__libmansuffix__),
-XQueryBestSize(__libmansuffix__),
-XSetArcMode(__libmansuffix__),
-XSetClipOrigin(__libmansuffix__),
-XSetFillStyle(__libmansuffix__),
-XSetFont(__libmansuffix__),
-XSetState(__libmansuffix__),
-XSetTile(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetLineAttributes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetLineAttributes, XSetDashes \- GC convenience routines
+.SH SYNTAX
+.HP
+int XSetLineAttributes\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned
+int \fIline_width\fP\^, int \fIline_style\fP\^, int \fIcap_style\fP\^, int
+\fIjoin_style\fP\^);
+.HP
+int XSetDashes\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
+\fIdash_offset\fP\^, char \fIdash_list\fP[]\^, int \fIn\fP\^);
+.SH ARGUMENTS
+.IP \fIcap_style\fP 1i
+Specifies the line-style and cap-style you want to set for the specified GC.
+You can pass
+.ZN CapNotLast ,
+.ZN CapButt ,
+.ZN CapRound ,
+or
+.ZN CapProjecting .
+.IP \fIdash_list\fP 1i
+Specifies the dash-list for the dashed line-style
+you want to set for the specified 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 \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIjoin_style\fP 1i
+Specifies the line join-style you want to set for the specified GC.
+You can pass
+.ZN JoinMiter ,
+.ZN JoinRound ,
+or
+.ZN JoinBevel .
+.IP \fIline_style\fP 1i
+Specifies the line-style you want to set for the specified GC.
+You can pass
+.ZN LineSolid ,
+.ZN LineOnOffDash ,
+or
+.ZN LineDoubleDash .
+.IP \fIline_width\fP 1i
+Specifies the line-width you want to set for the specified GC.
+.IP \fIn\fP 1i
+Specifies the number of elements in dash_list.
+.SH DESCRIPTION
+The
+.ZN XSetLineAttributes
+function sets the line drawing components in the specified GC.
+.LP
+.ZN XSetLineAttributes
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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
+.ZN 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
+.ZN 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
+.ZN XSetDashes
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+and
+.ZN BadValue
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XCreateGC(__libmansuffix__),
+XQueryBestSize(__libmansuffix__),
+XSetArcMode(__libmansuffix__),
+XSetClipOrigin(__libmansuffix__),
+XSetFillStyle(__libmansuffix__),
+XSetFont(__libmansuffix__),
+XSetState(__libmansuffix__),
+XSetTile(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetPointerMapping.man b/libX11/man/XSetPointerMapping.man
index d16402855..28cf719d2 100644
--- a/libX11/man/XSetPointerMapping.man
+++ b/libX11/man/XSetPointerMapping.man
@@ -1,217 +1,217 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetPointerMapping __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetPointerMapping, XGetPointerMapping \- manipulate pointer settings
-.SH SYNTAX
-.HP
-int XSetPointerMapping\^(\^Display *\fIdisplay\fP\^, unsigned char
-\fImap\fP\^[]\^, int \fInmap\fP\^);
-.HP
-int XGetPointerMapping\^(\^Display *\fIdisplay\fP\^, unsigned char
-\fImap_return\fP\^[]\^, int \fInmap\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fImap\fP 1i
-Specifies the mapping list.
-.IP \fImap_return\fP 1i
-Returns the mapping list.
-.IP \fInmap\fP 1i
-Specifies the number of items in the mapping list.
-.SH DESCRIPTION
-The
-.ZN XSetPointerMapping
-function sets the mapping of the pointer.
-If it succeeds, the X server generates a
-.ZN MappingNotify
-event, and
-.ZN XSetPointerMapping
-returns
-.ZN 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
-.ZN XGetPointerMapping
-would return,
-or a
-.ZN 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
-.ZN BadValue
-error results.
-If any of the buttons to be altered are logically in the down state,
-.ZN XSetPointerMapping
-returns
-.ZN MappingBusy ,
-and the mapping is not changed.
-.LP
-.ZN XSetPointerMapping
-can generate a
-.ZN BadValue
-error.
-.LP
-The
-.ZN XGetPointerMapping
-function returns the current mapping of the pointer.
-Pointer buttons are numbered starting from one.
-.ZN 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.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XChangeKeyboardControl(__libmansuffix__),
-XChangeKeyboardMapping(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetPointerMapping __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetPointerMapping, XGetPointerMapping \- manipulate pointer settings
+.SH SYNTAX
+.HP
+int XSetPointerMapping\^(\^Display *\fIdisplay\fP\^, unsigned char
+\fImap\fP\^[]\^, int \fInmap\fP\^);
+.HP
+int XGetPointerMapping\^(\^Display *\fIdisplay\fP\^, unsigned char
+\fImap_return\fP\^[]\^, int \fInmap\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fImap\fP 1i
+Specifies the mapping list.
+.IP \fImap_return\fP 1i
+Returns the mapping list.
+.IP \fInmap\fP 1i
+Specifies the number of items in the mapping list.
+.SH DESCRIPTION
+The
+.ZN XSetPointerMapping
+function sets the mapping of the pointer.
+If it succeeds, the X server generates a
+.ZN MappingNotify
+event, and
+.ZN XSetPointerMapping
+returns
+.ZN 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
+.ZN XGetPointerMapping
+would return,
+or a
+.ZN 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
+.ZN BadValue
+error results.
+If any of the buttons to be altered are logically in the down state,
+.ZN XSetPointerMapping
+returns
+.ZN MappingBusy ,
+and the mapping is not changed.
+.LP
+.ZN XSetPointerMapping
+can generate a
+.ZN BadValue
+error.
+.LP
+The
+.ZN XGetPointerMapping
+function returns the current mapping of the pointer.
+Pointer buttons are numbered starting from one.
+.ZN 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.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XChangeKeyboardControl(__libmansuffix__),
+XChangeKeyboardMapping(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetScreenSaver.man b/libX11/man/XSetScreenSaver.man
index e60581790..f42162646 100644
--- a/libX11/man/XSetScreenSaver.man
+++ b/libX11/man/XSetScreenSaver.man
@@ -1,290 +1,290 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetScreenSaver __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetScreenSaver, XForceScreenSaver, XActivateScreenSaver, XResetScreenSaver, XGetScreenSaver \- manipulate the screen saver
-.SH SYNTAX
-.HP
-int XSetScreenSaver\^(\^Display *\fIdisplay\fP\^, int \fItimeout\fP\^,
-int \fIinterval\fP\^, int \fIprefer_blanking\fP\^, int
-\fIallow_exposures\fP\^);
-.HP
-int XForceScreenSaver\^(\^Display *\fIdisplay\fP\^, int \fImode\fP\^);
-.HP
-int XActivateScreenSaver\^(\^Display *\fIdisplay\fP\^);
-.HP
-int XResetScreenSaver\^(\^Display *\fIdisplay\fP\^);
-.HP
-int XGetScreenSaver\^(\^Display *\fIdisplay\fP\^, int *\fItimeout_return\fP\^,
-int *\fIinterval_return\fP\^, int *\fIprefer_blanking_return\fP\^, int
-*\fIallow_exposures_return\fP\^);
-.SH ARGUMENTS
-.IP \fIallow_exposures\fP 1i
-Specifies the screen save control values.
-You can pass
-.ZN DontAllowExposures ,
-.ZN AllowExposures ,
-or
-.ZN DefaultExposures .
-.IP \fIallow_exposures_return\fP 1i
-Returns the current screen save control value
-.Pn ( DontAllowExposures ,
-.ZN AllowExposures ,
-or
-.ZN DefaultExposures ).
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIinterval\fP 1i
-Specifies the interval, in seconds, between screen saver alterations.
-.IP \fIinterval_return\fP 1i
-Returns the interval between screen saver invocations.
-.IP \fImode\fP 1i
-Specifies the mode that is to be applied.
-You can pass
-.ZN ScreenSaverActive
-or
-.ZN ScreenSaverReset .
-.IP \fIprefer_blanking\fP 1i
-Specifies how to enable screen blanking.
-You can pass
-.ZN DontPreferBlanking ,
-.ZN PreferBlanking ,
-or
-.ZN DefaultBlanking .
-.IP \fIprefer_blanking_return\fP 1i
-Returns the current screen blanking preference
-.Pn ( DontPreferBlanking ,
-.ZN PreferBlanking ,
-or
-.ZN DefaultBlanking ).
-.IP \fItimeout\fP 1i
-Specifies the timeout, in seconds, until the screen saver turns on.
-.IP \fItimeout_return\fP 1i
-Returns the timeout, in seconds, until the screen saver turns on.
-.SH DESCRIPTION
-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
-.ZN BadValue
-error.
-If the timeout value is nonzero,
-.ZN XSetScreenSaver
-enables the screen saver.
-An interval of 0 disables the random-pattern motion.
-Both values are limited to a 16-bit signed integer range by the wire protocol,
-despite the C prototype.
-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
-.ZN 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
-.ZN XForceScreenSaver
-with mode
-.ZN 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
-.ZN XSetScreenSaver
-can generate a
-.ZN BadValue
-error.
-.LP
-If the specified mode is
-.ZN ScreenSaverActive
-and the screen saver currently is deactivated,
-.ZN XForceScreenSaver
-activates the screen saver even if the screen saver had been disabled
-with a timeout of zero.
-If the specified mode is
-.ZN ScreenSaverReset
-and the screen saver currently is enabled,
-.ZN 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
-.ZN XForceScreenSaver
-can generate a
-.ZN BadValue
-error.
-.LP
-The
-.ZN XActivateScreenSaver
-function activates the screen saver.
-.LP
-The
-.ZN XResetScreenSaver
-function resets the screen saver.
-.LP
-The
-.ZN XGetScreenSaver
-function gets the current screen saver values.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetScreenSaver __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetScreenSaver, XForceScreenSaver, XActivateScreenSaver, XResetScreenSaver, XGetScreenSaver \- manipulate the screen saver
+.SH SYNTAX
+.HP
+int XSetScreenSaver\^(\^Display *\fIdisplay\fP\^, int \fItimeout\fP\^,
+int \fIinterval\fP\^, int \fIprefer_blanking\fP\^, int
+\fIallow_exposures\fP\^);
+.HP
+int XForceScreenSaver\^(\^Display *\fIdisplay\fP\^, int \fImode\fP\^);
+.HP
+int XActivateScreenSaver\^(\^Display *\fIdisplay\fP\^);
+.HP
+int XResetScreenSaver\^(\^Display *\fIdisplay\fP\^);
+.HP
+int XGetScreenSaver\^(\^Display *\fIdisplay\fP\^, int *\fItimeout_return\fP\^,
+int *\fIinterval_return\fP\^, int *\fIprefer_blanking_return\fP\^, int
+*\fIallow_exposures_return\fP\^);
+.SH ARGUMENTS
+.IP \fIallow_exposures\fP 1i
+Specifies the screen save control values.
+You can pass
+.ZN DontAllowExposures ,
+.ZN AllowExposures ,
+or
+.ZN DefaultExposures .
+.IP \fIallow_exposures_return\fP 1i
+Returns the current screen save control value
+.Pn ( DontAllowExposures ,
+.ZN AllowExposures ,
+or
+.ZN DefaultExposures ).
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIinterval\fP 1i
+Specifies the interval, in seconds, between screen saver alterations.
+.IP \fIinterval_return\fP 1i
+Returns the interval between screen saver invocations.
+.IP \fImode\fP 1i
+Specifies the mode that is to be applied.
+You can pass
+.ZN ScreenSaverActive
+or
+.ZN ScreenSaverReset .
+.IP \fIprefer_blanking\fP 1i
+Specifies how to enable screen blanking.
+You can pass
+.ZN DontPreferBlanking ,
+.ZN PreferBlanking ,
+or
+.ZN DefaultBlanking .
+.IP \fIprefer_blanking_return\fP 1i
+Returns the current screen blanking preference
+.Pn ( DontPreferBlanking ,
+.ZN PreferBlanking ,
+or
+.ZN DefaultBlanking ).
+.IP \fItimeout\fP 1i
+Specifies the timeout, in seconds, until the screen saver turns on.
+.IP \fItimeout_return\fP 1i
+Returns the timeout, in seconds, until the screen saver turns on.
+.SH DESCRIPTION
+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
+.ZN BadValue
+error.
+If the timeout value is nonzero,
+.ZN XSetScreenSaver
+enables the screen saver.
+An interval of 0 disables the random-pattern motion.
+Both values are limited to a 16-bit signed integer range by the wire protocol,
+despite the C prototype.
+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
+.ZN 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
+.ZN XForceScreenSaver
+with mode
+.ZN 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
+.ZN XSetScreenSaver
+can generate a
+.ZN BadValue
+error.
+.LP
+If the specified mode is
+.ZN ScreenSaverActive
+and the screen saver currently is deactivated,
+.ZN XForceScreenSaver
+activates the screen saver even if the screen saver had been disabled
+with a timeout of zero.
+If the specified mode is
+.ZN ScreenSaverReset
+and the screen saver currently is enabled,
+.ZN 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
+.ZN XForceScreenSaver
+can generate a
+.ZN BadValue
+error.
+.LP
+The
+.ZN XActivateScreenSaver
+function activates the screen saver.
+.LP
+The
+.ZN XResetScreenSaver
+function resets the screen saver.
+.LP
+The
+.ZN XGetScreenSaver
+function gets the current screen saver values.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XSetSelectionOwner.man b/libX11/man/XSetSelectionOwner.man
index 011cf1d18..fb0b86f56 100644
--- a/libX11/man/XSetSelectionOwner.man
+++ b/libX11/man/XSetSelectionOwner.man
@@ -1,278 +1,278 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetSelectionOwner __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetSelectionOwner, XGetSelectionOwner, XConvertSelection \- manipulate window selection
-.SH SYNTAX
-.HP
-int XSetSelectionOwner\^(\^Display *\fIdisplay\fP\^, Atom \fIselection\fP\^,
-Window \fIowner\fP\^, Time \fItime\fP\^);
-.HP
-Window XGetSelectionOwner\^(\^Display *\fIdisplay\fP\^, Atom
-\fIselection\fP\^);
-.HP
-int XConvertSelection\^(\^Display *\fIdisplay\fP\^, Atom \fIselection\fP\^,
-Atom \fItarget\fP\^, Atom \fIproperty\fP\^, Window \fIrequestor\fP\^, Time
-\fItime\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIowner\fP 1i
-Specifies the owner of the specified selection atom.
-You can pass a window or
-.ZN None .
-.IP \fIproperty\fP 1i
-Specifies the property name.
-You also can pass
-.ZN None .
-.IP \fIrequestor\fP 1i
-Specifies the requestor.
-.IP \fIselection\fP 1i
-Specifies the selection atom.
-.IP \fItarget\fP 1i
-Specifies the target atom.
-.IP \fItime\fP 1i
-Specifies the time.
-You can pass either a timestamp or
-.ZN CurrentTime .
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN CurrentTime
-replaced by the current server time.
-If the owner window is specified as
-.ZN None ,
-then the owner of the selection becomes
-.ZN 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
-.ZN None )
-is not
-the same as the current owner of the selection and the current
-owner is not
-.ZN None ,
-the current owner is sent a
-.ZN 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
-.ZN None ,
-but the last-change time is not affected.
-The selection atom is uninterpreted by the X server.
-.ZN XGetSelectionOwner
-returns the owner window, which is reported in
-.ZN SelectionRequest
-and
-.ZN SelectionClear
-events.
-Selections are global to the X server.
-.LP
-.ZN XSetSelectionOwner
-can generate
-.ZN BadAtom
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN None .
-If
-.ZN None
-is returned,
-there is no owner for the selection.
-.LP
-.ZN XGetSelectionOwner
-can generate a
-.ZN BadAtom
-error.
-.LP
-.ZN 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
-.ZN SelectionRequest
-event to that owner.
-.IP \(bu 5
-If no owner for the specified
-selection exists, the X server generates a
-.ZN SelectionNotify
-event to the
-requestor with property
-.ZN None .
-.LP
-The arguments are passed on unchanged in either of the events.
-There are two predefined selection atoms: PRIMARY and SECONDARY.
-.LP
-.ZN XConvertSelection
-can generate
-.ZN BadAtom
-and
-.ZN BadWindow
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAtom
-A value for an Atom argument does not name a defined Atom.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetSelectionOwner __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetSelectionOwner, XGetSelectionOwner, XConvertSelection \- manipulate window selection
+.SH SYNTAX
+.HP
+int XSetSelectionOwner\^(\^Display *\fIdisplay\fP\^, Atom \fIselection\fP\^,
+Window \fIowner\fP\^, Time \fItime\fP\^);
+.HP
+Window XGetSelectionOwner\^(\^Display *\fIdisplay\fP\^, Atom
+\fIselection\fP\^);
+.HP
+int XConvertSelection\^(\^Display *\fIdisplay\fP\^, Atom \fIselection\fP\^,
+Atom \fItarget\fP\^, Atom \fIproperty\fP\^, Window \fIrequestor\fP\^, Time
+\fItime\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIowner\fP 1i
+Specifies the owner of the specified selection atom.
+You can pass a window or
+.ZN None .
+.IP \fIproperty\fP 1i
+Specifies the property name.
+You also can pass
+.ZN None .
+.IP \fIrequestor\fP 1i
+Specifies the requestor.
+.IP \fIselection\fP 1i
+Specifies the selection atom.
+.IP \fItarget\fP 1i
+Specifies the target atom.
+.IP \fItime\fP 1i
+Specifies the time.
+You can pass either a timestamp or
+.ZN CurrentTime .
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN CurrentTime
+replaced by the current server time.
+If the owner window is specified as
+.ZN None ,
+then the owner of the selection becomes
+.ZN 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
+.ZN None )
+is not
+the same as the current owner of the selection and the current
+owner is not
+.ZN None ,
+the current owner is sent a
+.ZN 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
+.ZN None ,
+but the last-change time is not affected.
+The selection atom is uninterpreted by the X server.
+.ZN XGetSelectionOwner
+returns the owner window, which is reported in
+.ZN SelectionRequest
+and
+.ZN SelectionClear
+events.
+Selections are global to the X server.
+.LP
+.ZN XSetSelectionOwner
+can generate
+.ZN BadAtom
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN None .
+If
+.ZN None
+is returned,
+there is no owner for the selection.
+.LP
+.ZN XGetSelectionOwner
+can generate a
+.ZN BadAtom
+error.
+.LP
+.ZN 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
+.ZN SelectionRequest
+event to that owner.
+.IP \(bu 5
+If no owner for the specified
+selection exists, the X server generates a
+.ZN SelectionNotify
+event to the
+requestor with property
+.ZN None .
+.LP
+The arguments are passed on unchanged in either of the events.
+There are two predefined selection atoms: PRIMARY and SECONDARY.
+.LP
+.ZN XConvertSelection
+can generate
+.ZN BadAtom
+and
+.ZN BadWindow
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAtom
+A value for an Atom argument does not name a defined Atom.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XSetState.man b/libX11/man/XSetState.man
index 0d152367e..816d13cee 100644
--- a/libX11/man/XSetState.man
+++ b/libX11/man/XSetState.man
@@ -1,256 +1,256 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetState __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetState, XSetFunction, XSetPlaneMask, XSetForeground, XSetBackground \- GC convenience routines
-.SH SYNTAX
-.HP
-int XSetState\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
-\fIforeground\fP\^, unsigned int \fIbackground\fP\^, int \fIfunction\fP\^,
-unsigned long \fIplane_mask\fP\^);
-.HP
-int XSetFunction\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
-\fIfunction\fP\^);
-.HP
-int XSetPlaneMask\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
-\fIplane_mask\fP\^);
-.HP
-int XSetForeground\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
-\fIforeground\fP\^);
-.HP
-int XSetBackground\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
-\fIbackground\fP\^);
-.SH ARGUMENTS
-.IP \fIbackground\fP 1i
-Specifies the background you want to set for the specified GC.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIforeground\fP 1i
-Specifies the foreground you want to set for the specified GC.
-.IP \fIfunction\fP 1i
-Specifies the function you want to set for the specified GC.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIplane_mask\fP 1i
-Specifies the plane mask.
-.\" *** JIM: NEED MORE INFO FOR THIS. ***
-.SH DESCRIPTION
-The
-.ZN XSetState
-function sets the foreground, background, plane mask, and function components
-for the specified GC.
-.LP
-.ZN XSetState
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-and
-.ZN BadValue
-errors.
-.LP
-.ZN XSetFunction
-sets a specified value in the specified GC.
-.LP
-.ZN XSetFunction
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN XSetPlaneMask
-function sets the plane mask in the specified GC.
-.LP
-.ZN XSetPlaneMask
-can generate
-.ZN BadAlloc
-and
-.ZN BadGC
-errors.
-.LP
-The
-.ZN XSetForeground
-function sets the foreground in the specified GC.
-.LP
-.ZN XSetForeground
-can generate
-.ZN BadAlloc
-and
-.ZN BadGC
-errors.
-.LP
-The
-.ZN XSetBackground
-function sets the background in the specified GC.
-.LP
-.ZN XSetBackground
-can generate
-.ZN BadAlloc
-and
-.ZN BadGC
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XCreateGC(__libmansuffix__),
-XQueryBestSize(__libmansuffix__),
-XSetArcMode(__libmansuffix__),
-XSetClipOrigin(__libmansuffix__),
-XSetFillStyle(__libmansuffix__),
-XSetFont(__libmansuffix__),
-XSetLineAttributes(__libmansuffix__),
-XSetTile(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetState __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetState, XSetFunction, XSetPlaneMask, XSetForeground, XSetBackground \- GC convenience routines
+.SH SYNTAX
+.HP
+int XSetState\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
+\fIforeground\fP\^, unsigned int \fIbackground\fP\^, int \fIfunction\fP\^,
+unsigned long \fIplane_mask\fP\^);
+.HP
+int XSetFunction\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
+\fIfunction\fP\^);
+.HP
+int XSetPlaneMask\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
+\fIplane_mask\fP\^);
+.HP
+int XSetForeground\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
+\fIforeground\fP\^);
+.HP
+int XSetBackground\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, unsigned long
+\fIbackground\fP\^);
+.SH ARGUMENTS
+.IP \fIbackground\fP 1i
+Specifies the background you want to set for the specified GC.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIforeground\fP 1i
+Specifies the foreground you want to set for the specified GC.
+.IP \fIfunction\fP 1i
+Specifies the function you want to set for the specified GC.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIplane_mask\fP 1i
+Specifies the plane mask.
+.\" *** JIM: NEED MORE INFO FOR THIS. ***
+.SH DESCRIPTION
+The
+.ZN XSetState
+function sets the foreground, background, plane mask, and function components
+for the specified GC.
+.LP
+.ZN XSetState
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+and
+.ZN BadValue
+errors.
+.LP
+.ZN XSetFunction
+sets a specified value in the specified GC.
+.LP
+.ZN XSetFunction
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN XSetPlaneMask
+function sets the plane mask in the specified GC.
+.LP
+.ZN XSetPlaneMask
+can generate
+.ZN BadAlloc
+and
+.ZN BadGC
+errors.
+.LP
+The
+.ZN XSetForeground
+function sets the foreground in the specified GC.
+.LP
+.ZN XSetForeground
+can generate
+.ZN BadAlloc
+and
+.ZN BadGC
+errors.
+.LP
+The
+.ZN XSetBackground
+function sets the background in the specified GC.
+.LP
+.ZN XSetBackground
+can generate
+.ZN BadAlloc
+and
+.ZN BadGC
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XCreateGC(__libmansuffix__),
+XQueryBestSize(__libmansuffix__),
+XSetArcMode(__libmansuffix__),
+XSetClipOrigin(__libmansuffix__),
+XSetFillStyle(__libmansuffix__),
+XSetFont(__libmansuffix__),
+XSetLineAttributes(__libmansuffix__),
+XSetTile(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetTextProperty.man b/libX11/man/XSetTextProperty.man
index d966ae107..dccd0b071 100644
--- a/libX11/man/XSetTextProperty.man
+++ b/libX11/man/XSetTextProperty.man
@@ -1,267 +1,267 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetTextProperty, XGetTextProperty \- set and read text properties
-.SH SYNTAX
-.HP
-void XSetTextProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-XTextProperty *\fItext_prop\fP\^, Atom \fIproperty\fP\^);
-.HP
-Status XGetTextProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-XTextProperty *\fItext_prop_return\fP\^, Atom \fIproperty\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIproperty\fP 1i
-Specifies the property name.
-.IP \fItext_prop\fP 1i
-Specifies the
-.ZN XTextProperty
-structure to be used.
-.IP \fItext_prop_return\fP 1i
-Returns the
-.ZN XTextProperty
-structure.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XTextProperty
-structure.
-If the property does not already exist,
-.ZN XSetTextProperty
-sets it for the specified window.
-.LP
-.ZN XSetTextProperty
-can generate
-.ZN BadAlloc ,
-.ZN BadAtom ,
-.ZN BadValue ,
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN XGetTextProperty
-function reads the specified property from the window
-and stores the data in the returned
-.ZN 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,
-.ZN XGetTextProperty
-sets the value field to NULL,
-the encoding field to
-.ZN 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
-.ZN XTextProperty
-structure,
-.ZN XGetTextProperty
-returns a nonzero status;
-otherwise, it returns a zero status.
-.LP
-.ZN XGetTextProperty
-can generate
-.ZN BadAtom
-and
-.ZN BadWindow
-errors.
-.SH PROPERTIES
-.TP 1i
-\s-1WM_CLIENT_MACHINE\s+1
-The string name of the machine on which the client application is running.
-.TP 1i
-\s-1WM_COMMAND\s+1
-The command and arguments, null-separated, used to invoke the
-application.
-.TP 1i
-\s-1WM_ICON_NAME\s+1
-The name to be used in an icon.
-.TP 1i
-\s-1WM_NAME\s+1
-The name of the application.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadAtom
-A value for an Atom argument does not name a defined Atom.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetTextProperty, XGetTextProperty \- set and read text properties
+.SH SYNTAX
+.HP
+void XSetTextProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+XTextProperty *\fItext_prop\fP\^, Atom \fIproperty\fP\^);
+.HP
+Status XGetTextProperty\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+XTextProperty *\fItext_prop_return\fP\^, Atom \fIproperty\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIproperty\fP 1i
+Specifies the property name.
+.IP \fItext_prop\fP 1i
+Specifies the
+.ZN XTextProperty
+structure to be used.
+.IP \fItext_prop_return\fP 1i
+Returns the
+.ZN XTextProperty
+structure.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XTextProperty
+structure.
+If the property does not already exist,
+.ZN XSetTextProperty
+sets it for the specified window.
+.LP
+.ZN XSetTextProperty
+can generate
+.ZN BadAlloc ,
+.ZN BadAtom ,
+.ZN BadValue ,
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN XGetTextProperty
+function reads the specified property from the window
+and stores the data in the returned
+.ZN 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,
+.ZN XGetTextProperty
+sets the value field to NULL,
+the encoding field to
+.ZN 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
+.ZN XTextProperty
+structure,
+.ZN XGetTextProperty
+returns a nonzero status;
+otherwise, it returns a zero status.
+.LP
+.ZN XGetTextProperty
+can generate
+.ZN BadAtom
+and
+.ZN BadWindow
+errors.
+.SH PROPERTIES
+.TP 1i
+\s-1WM_CLIENT_MACHINE\s+1
+The string name of the machine on which the client application is running.
+.TP 1i
+\s-1WM_COMMAND\s+1
+The command and arguments, null-separated, used to invoke the
+application.
+.TP 1i
+\s-1WM_ICON_NAME\s+1
+The name to be used in an icon.
+.TP 1i
+\s-1WM_NAME\s+1
+The name of the application.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadAtom
+A value for an Atom argument does not name a defined Atom.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetTile.man b/libX11/man/XSetTile.man
index 8f9e2a46c..6390545f6 100644
--- a/libX11/man/XSetTile.man
+++ b/libX11/man/XSetTile.man
@@ -1,241 +1,241 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetTile __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetTile, XSetStipple, XSetTSOrigin \- GC convenience routines
-.SH SYNTAX
-.HP
-int XSetTile\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Pixmap
-\fItile\fP\^);
-.HP
-int XSetStipple\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Pixmap
-\fIstipple\fP\^);
-.HP
-int XSetTSOrigin\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
-\fIts_x_origin\fP\^, int \fIts_y_origin\fP\^);
-.SH ARGUMENTS
-.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.
-.IP \fItile\fP 1i
-Specifies the fill tile you want to set for the specified 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.
-.SH DESCRIPTION
-The
-.ZN XSetTile
-function sets the fill tile in the specified GC.
-The tile and GC must have the same depth,
-or a
-.ZN BadMatch
-error results.
-.LP
-.ZN XSetTile
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-.ZN BadMatch ,
-and
-.ZN BadPixmap
-errors.
-.LP
-The
-.ZN XSetStipple
-function sets the stipple in the specified GC.
-The stipple must have a depth of one,
-or a
-.ZN BadMatch
-error results.
-.LP
-.ZN XSetStipple
-can generate
-.ZN BadAlloc ,
-.ZN BadGC ,
-.ZN BadMatch ,
-and
-.ZN BadPixmap
-errors.
-.LP
-The
-.ZN XSetTSOrigin
-function sets the tile/stipple origin in the specified GC.
-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
-.ZN XSetTSOrigin
-can generate
-.ZN BadAlloc
-and
-.ZN BadGC
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadPixmap
-A value for a Pixmap argument does not name a defined Pixmap.
-.SH "SEE ALSO"
-XCreateGC(__libmansuffix__),
-XQueryBestSize(__libmansuffix__),
-XSetArcMode(__libmansuffix__),
-XSetClipOrigin(__libmansuffix__),
-XSetFillStyle(__libmansuffix__),
-XSetFont(__libmansuffix__),
-XSetLineAttributes(__libmansuffix__),
-XSetState(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetTile __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetTile, XSetStipple, XSetTSOrigin \- GC convenience routines
+.SH SYNTAX
+.HP
+int XSetTile\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Pixmap
+\fItile\fP\^);
+.HP
+int XSetStipple\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, Pixmap
+\fIstipple\fP\^);
+.HP
+int XSetTSOrigin\^(\^Display *\fIdisplay\fP\^, GC \fIgc\fP\^, int
+\fIts_x_origin\fP\^, int \fIts_y_origin\fP\^);
+.SH ARGUMENTS
+.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.
+.IP \fItile\fP 1i
+Specifies the fill tile you want to set for the specified 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.
+.SH DESCRIPTION
+The
+.ZN XSetTile
+function sets the fill tile in the specified GC.
+The tile and GC must have the same depth,
+or a
+.ZN BadMatch
+error results.
+.LP
+.ZN XSetTile
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+.ZN BadMatch ,
+and
+.ZN BadPixmap
+errors.
+.LP
+The
+.ZN XSetStipple
+function sets the stipple in the specified GC.
+The stipple must have a depth of one,
+or a
+.ZN BadMatch
+error results.
+.LP
+.ZN XSetStipple
+can generate
+.ZN BadAlloc ,
+.ZN BadGC ,
+.ZN BadMatch ,
+and
+.ZN BadPixmap
+errors.
+.LP
+The
+.ZN XSetTSOrigin
+function sets the tile/stipple origin in the specified GC.
+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
+.ZN XSetTSOrigin
+can generate
+.ZN BadAlloc
+and
+.ZN BadGC
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadPixmap
+A value for a Pixmap argument does not name a defined Pixmap.
+.SH "SEE ALSO"
+XCreateGC(__libmansuffix__),
+XQueryBestSize(__libmansuffix__),
+XSetArcMode(__libmansuffix__),
+XSetClipOrigin(__libmansuffix__),
+XSetFillStyle(__libmansuffix__),
+XSetFont(__libmansuffix__),
+XSetLineAttributes(__libmansuffix__),
+XSetState(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetTransientForHint.man b/libX11/man/XSetTransientForHint.man
index fc4cf5c18..e2ab3b91d 100644
--- a/libX11/man/XSetTransientForHint.man
+++ b/libX11/man/XSetTransientForHint.man
@@ -1,211 +1,211 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetTransientForHint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetTransientForHint, XGetTransientForHint \- set or read a window's WM_TRANSIENT_FOR property
-.SH SYNTAX
-.HP
-int XSetTransientForHint\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-Window \fIprop_window\fP\^);
-.HP
-Status XGetTransientForHint\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-Window *\fIprop_window_return\fP\^);
-.SH ARGUMENTS
-.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.
-.IP \fIprop_window_return\fP 1i
-Returns the WM_TRANSIENT_FOR property of the specified window.
-.SH DESCRIPTION
-The
-.ZN XSetTransientForHint
-function sets the WM_TRANSIENT_FOR property of the specified window to the
-specified prop_window.
-.LP
-.ZN XSetTransientForHint
-can generate
-.ZN BadAlloc
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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
-.ZN XGetTransientForHint
-can generate a
-.ZN BadWindow
-error.
-.SH PROPERTIES
-.TP 1i
-\s-1WM_TRANSIENT_FOR\s+1
-Set by application programs to indicate to the window manager that a transient
-top-level window, such as a dialog box.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetTransientForHint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetTransientForHint, XGetTransientForHint \- set or read a window's WM_TRANSIENT_FOR property
+.SH SYNTAX
+.HP
+int XSetTransientForHint\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+Window \fIprop_window\fP\^);
+.HP
+Status XGetTransientForHint\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+Window *\fIprop_window_return\fP\^);
+.SH ARGUMENTS
+.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.
+.IP \fIprop_window_return\fP 1i
+Returns the WM_TRANSIENT_FOR property of the specified window.
+.SH DESCRIPTION
+The
+.ZN XSetTransientForHint
+function sets the WM_TRANSIENT_FOR property of the specified window to the
+specified prop_window.
+.LP
+.ZN XSetTransientForHint
+can generate
+.ZN BadAlloc
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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
+.ZN XGetTransientForHint
+can generate a
+.ZN BadWindow
+error.
+.SH PROPERTIES
+.TP 1i
+\s-1WM_TRANSIENT_FOR\s+1
+Set by application programs to indicate to the window manager that a transient
+top-level window, such as a dialog box.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetWMClientMachine.man b/libX11/man/XSetWMClientMachine.man
index bae111b4d..bc0370299 100644
--- a/libX11/man/XSetWMClientMachine.man
+++ b/libX11/man/XSetWMClientMachine.man
@@ -1,198 +1,198 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetWMClientMachine __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetWMClientMachine, XGetWMClientMachine \- set or read a window's WM_CLIENT_MACHINE property
-.SH SYNTAX
-.HP
-void XSetWMClientMachine\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-XTextProperty *\fItext_prop\fP\^);
-.HP
-Status XGetWMClientMachine\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-XTextProperty *\fItext_prop_return\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fItext_prop\fP 1i
-Specifies the
-.ZN XTextProperty
-structure to be used.
-.IP \fItext_prop_return\fP 1i
-Returns the
-.ZN XTextProperty
-structure.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-The
-.ZN XSetWMClientMachine
-convenience function calls
-.ZN XSetTextProperty
-to set the WM_CLIENT_MACHINE property.
-.LP
-The
-.ZN XGetWMClientMachine
-convenience function performs an
-.ZN XGetTextProperty
-on the WM_CLIENT_MACHINE property.
-It returns a nonzero status on success;
-otherwise, it returns a zero status.
-.SH PROPERTIES
-.TP 1i
-\s-1WM_CLIENT_MACHINE\s+1
-The string name of the machine on which the client application is running.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetWMClientMachine __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetWMClientMachine, XGetWMClientMachine \- set or read a window's WM_CLIENT_MACHINE property
+.SH SYNTAX
+.HP
+void XSetWMClientMachine\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+XTextProperty *\fItext_prop\fP\^);
+.HP
+Status XGetWMClientMachine\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+XTextProperty *\fItext_prop_return\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fItext_prop\fP 1i
+Specifies the
+.ZN XTextProperty
+structure to be used.
+.IP \fItext_prop_return\fP 1i
+Returns the
+.ZN XTextProperty
+structure.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+The
+.ZN XSetWMClientMachine
+convenience function calls
+.ZN XSetTextProperty
+to set the WM_CLIENT_MACHINE property.
+.LP
+The
+.ZN XGetWMClientMachine
+convenience function performs an
+.ZN XGetTextProperty
+on the WM_CLIENT_MACHINE property.
+It returns a nonzero status on success;
+otherwise, it returns a zero status.
+.SH PROPERTIES
+.TP 1i
+\s-1WM_CLIENT_MACHINE\s+1
+The string name of the machine on which the client application is running.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetWMColormapWindows.man b/libX11/man/XSetWMColormapWindows.man
index e205db362..148a83a9e 100644
--- a/libX11/man/XSetWMColormapWindows.man
+++ b/libX11/man/XSetWMColormapWindows.man
@@ -1,238 +1,238 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetWMColormapWindows __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetWMColormapWindows, XGetWMColormapWindows \- set or read a window's WM_COLORMAP_WINDOWS property
-.SH SYNTAX
-.HP
-Status XSetWMColormapWindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-Window *\fIcolormap_windows\fP\^, int \fIcount\fP\^);
-.HP
-Status XGetWMColormapWindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-Window **\fIcolormap_windows_return\fP\^, int *\fIcount_return\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIcolormap_windows\fP 1i
-Specifies the list of windows.
-.IP \fIcolormap_windows_return\fP 1i
-Returns the list of windows.
-.ds Cn windows in the list
-.IP \fIcount\fP 1i
-Specifies the number of \*(Cn.
-.ds Cn windows in the list
-.IP \fIcount_return\fP 1i
-Returns the number of \*(Cn.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-The
-.ZN XSetWMColormapWindows
-function replaces the WM_COLORMAP_WINDOWS property on the specified
-window with the list of windows specified by the colormap_windows argument.
-It the property does not already exist,
-.ZN 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,
-.ZN XSetWMColormapWindows
-returns a zero status.
-Otherwise, it returns a nonzero status.
-.LP
-.ZN XSetWMColormapWindows
-can generate
-.ZN BadAlloc
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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,
-.ZN 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
-.ZN XFree .
-.LP
-.ZN XGetWMColormapWindows
-can generate a
-.ZN BadWindow
-error.
-.SH PROPERTIES
-.TP 1i
-\s-1WM_COLORMAP_WINDOWS\s+1
-The list of window IDs that may need a different colormap
-from that of their top-level window.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XFree(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetWMColormapWindows __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetWMColormapWindows, XGetWMColormapWindows \- set or read a window's WM_COLORMAP_WINDOWS property
+.SH SYNTAX
+.HP
+Status XSetWMColormapWindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+Window *\fIcolormap_windows\fP\^, int \fIcount\fP\^);
+.HP
+Status XGetWMColormapWindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+Window **\fIcolormap_windows_return\fP\^, int *\fIcount_return\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap_windows\fP 1i
+Specifies the list of windows.
+.IP \fIcolormap_windows_return\fP 1i
+Returns the list of windows.
+.ds Cn windows in the list
+.IP \fIcount\fP 1i
+Specifies the number of \*(Cn.
+.ds Cn windows in the list
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+The
+.ZN XSetWMColormapWindows
+function replaces the WM_COLORMAP_WINDOWS property on the specified
+window with the list of windows specified by the colormap_windows argument.
+It the property does not already exist,
+.ZN 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,
+.ZN XSetWMColormapWindows
+returns a zero status.
+Otherwise, it returns a nonzero status.
+.LP
+.ZN XSetWMColormapWindows
+can generate
+.ZN BadAlloc
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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,
+.ZN 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
+.ZN XFree .
+.LP
+.ZN XGetWMColormapWindows
+can generate a
+.ZN BadWindow
+error.
+.SH PROPERTIES
+.TP 1i
+\s-1WM_COLORMAP_WINDOWS\s+1
+The list of window IDs that may need a different colormap
+from that of their top-level window.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XFree(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetWMIconName.man b/libX11/man/XSetWMIconName.man
index f0c87bdda..3b2894f9d 100644
--- a/libX11/man/XSetWMIconName.man
+++ b/libX11/man/XSetWMIconName.man
@@ -1,250 +1,250 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetWMIconName __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetWMIconName, XGetWMIconName, XSetIconName, XGetIconName \- set or read a window's WM_ICON_NAME property
-.SH SYNTAX
-.HP
-void XSetWMIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-XTextProperty *\fItext_prop\fP\^);
-.HP
-Status XGetWMIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-XTextProperty *\fItext_prop_return\fP\^);
-.HP
-int XSetIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
-*\fIicon_name\fP\^);
-.HP
-Status XGetIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
-**\fIicon_name_return\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIicon_name\fP 1i
-Specifies the icon name,
-which should be a null-terminated string.
-.IP \fIicon_name_return\fP 1i
-Returns the window's icon name,
-which is a null-terminated string.
-.IP \fItext_prop\fP 1i
-Specifies the
-.ZN XTextProperty
-structure to be used.
-.IP \fItext_prop_return\fP 1i
-Returns the
-.ZN XTextProperty
-structure.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-The
-.ZN XSetWMIconName
-convenience function calls
-.ZN XSetTextProperty
-to set the WM_ICON_NAME property.
-.LP
-The
-.ZN XGetWMIconName
-convenience function calls
-.ZN XGetTextProperty
-to obtain the WM_ICON_NAME property.
-It returns a nonzero status on success;
-otherwise, it returns a zero status.
-.LP
-The
-.ZN XSetIconName
-function sets the name to be displayed in a window's icon.
-.LP
-.ZN XSetIconName
-can generate
-.ZN BadAlloc
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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,
-.ZN 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
-.ZN XFree .
-.LP
-.ZN XGetIconName
-can generate a
-.ZN BadWindow
-error.
-.SH PROPERTIES
-.TP 1i
-\s-1WM_ICON_NAME\s+1
-The name to be used in an icon.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XFree(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetWMIconName __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetWMIconName, XGetWMIconName, XSetIconName, XGetIconName \- set or read a window's WM_ICON_NAME property
+.SH SYNTAX
+.HP
+void XSetWMIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+XTextProperty *\fItext_prop\fP\^);
+.HP
+Status XGetWMIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+XTextProperty *\fItext_prop_return\fP\^);
+.HP
+int XSetIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
+*\fIicon_name\fP\^);
+.HP
+Status XGetIconName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
+**\fIicon_name_return\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIicon_name\fP 1i
+Specifies the icon name,
+which should be a null-terminated string.
+.IP \fIicon_name_return\fP 1i
+Returns the window's icon name,
+which is a null-terminated string.
+.IP \fItext_prop\fP 1i
+Specifies the
+.ZN XTextProperty
+structure to be used.
+.IP \fItext_prop_return\fP 1i
+Returns the
+.ZN XTextProperty
+structure.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+The
+.ZN XSetWMIconName
+convenience function calls
+.ZN XSetTextProperty
+to set the WM_ICON_NAME property.
+.LP
+The
+.ZN XGetWMIconName
+convenience function calls
+.ZN XGetTextProperty
+to obtain the WM_ICON_NAME property.
+It returns a nonzero status on success;
+otherwise, it returns a zero status.
+.LP
+The
+.ZN XSetIconName
+function sets the name to be displayed in a window's icon.
+.LP
+.ZN XSetIconName
+can generate
+.ZN BadAlloc
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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,
+.ZN 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
+.ZN XFree .
+.LP
+.ZN XGetIconName
+can generate a
+.ZN BadWindow
+error.
+.SH PROPERTIES
+.TP 1i
+\s-1WM_ICON_NAME\s+1
+The name to be used in an icon.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XFree(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetWMName.man b/libX11/man/XSetWMName.man
index 37f2b802d..d64ac3aec 100644
--- a/libX11/man/XSetWMName.man
+++ b/libX11/man/XSetWMName.man
@@ -1,257 +1,257 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetWMName __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetWMName, XGetWMName, XStoreName, XFetchName \- set or read a window's WM_NAME property
-.SH SYNTAX
-.HP
-void XSetWMName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XTextProperty
-*\fItext_prop\fP\^);
-.HP
-Status XGetWMName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-XTextProperty *\fItext_prop_return\fP\^);
-.HP
-int XStoreName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
-*\fIwindow_name\fP\^);
-.HP
-Status XFetchName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
-**\fIwindow_name_return\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fItext_prop\fP 1i
-Specifies the
-.ZN XTextProperty
-structure to be used.
-.IP \fItext_prop_return\fP 1i
-Returns the
-.ZN XTextProperty
-structure.
-.IP \fIw\fP 1i
-Specifies the window.
-.IP \fIwindow_name\fP 1i
-Specifies the window name,
-which should be a null-terminated string.
-.IP \fIwindow_name_return\fP 1i
-Returns the window name, which is a null-terminated string.
-.SH DESCRIPTION
-The
-.ZN XSetWMName
-convenience function calls
-.ZN XSetTextProperty
-to set the WM_NAME property.
-.LP
-The
-.ZN XGetWMName
-convenience function calls
-.ZN XGetTextProperty
-to obtain the WM_NAME property.
-It returns a nonzero status on success;
-otherwise, it returns a zero status.
-.LP
-The
-.ZN 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
-.ZN XStoreName
-can generate
-.ZN BadAlloc
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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,
-.ZN 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
-.ZN XFree .
-.LP
-.ZN XFetchName
-can generate a
-.ZN BadWindow
-error.
-.SH PROPERTIES
-.TP 1i
-\s-1WM_NAME\s+1
-The name of the application.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XFree(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetWMName __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetWMName, XGetWMName, XStoreName, XFetchName \- set or read a window's WM_NAME property
+.SH SYNTAX
+.HP
+void XSetWMName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, XTextProperty
+*\fItext_prop\fP\^);
+.HP
+Status XGetWMName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+XTextProperty *\fItext_prop_return\fP\^);
+.HP
+int XStoreName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
+*\fIwindow_name\fP\^);
+.HP
+Status XFetchName\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
+**\fIwindow_name_return\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fItext_prop\fP 1i
+Specifies the
+.ZN XTextProperty
+structure to be used.
+.IP \fItext_prop_return\fP 1i
+Returns the
+.ZN XTextProperty
+structure.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIwindow_name\fP 1i
+Specifies the window name,
+which should be a null-terminated string.
+.IP \fIwindow_name_return\fP 1i
+Returns the window name, which is a null-terminated string.
+.SH DESCRIPTION
+The
+.ZN XSetWMName
+convenience function calls
+.ZN XSetTextProperty
+to set the WM_NAME property.
+.LP
+The
+.ZN XGetWMName
+convenience function calls
+.ZN XGetTextProperty
+to obtain the WM_NAME property.
+It returns a nonzero status on success;
+otherwise, it returns a zero status.
+.LP
+The
+.ZN 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
+.ZN XStoreName
+can generate
+.ZN BadAlloc
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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,
+.ZN 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
+.ZN XFree .
+.LP
+.ZN XFetchName
+can generate a
+.ZN BadWindow
+error.
+.SH PROPERTIES
+.TP 1i
+\s-1WM_NAME\s+1
+The name of the application.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XFree(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetWMProperties.man b/libX11/man/XSetWMProperties.man
index 8a9b1c38a..18b24d334 100644
--- a/libX11/man/XSetWMProperties.man
+++ b/libX11/man/XSetWMProperties.man
@@ -1,390 +1,390 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetWMProperties __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetWMProperties, XmbSetWMProperties, Xutf8SetWMProperties \- set standard window properties
-.SH SYNTAX
-.HP
-void XSetWMProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
-XTextProperty *\fIwindow_name\fP\^, XTextProperty *\fIicon_name\fP\^, char
-**\fIargv\fP\^, int \fIargc\fP\^, XSizeHints *\fInormal_hints\fP\^, XWMHints
-*\fIwm_hints\fP\^, XClassHint *\fIclass_hints\fP\^);
-.HP
-void XmbSetWMProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
-*\fIwindow_name\fP\^, char *\fIicon_name\fP\^, char *\fIargv\fP\^[], int
-\fIargc\fP\^, XSizeHints *\fInormal_hints\fP\^, XWMHints *\fIwm_hints\fP\^,
-XClassHint *\fIclass_hints\fP\^);
-.HP
-void Xutf8SetWMProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
-*\fIwindow_name\fP\^, char *\fIicon_name\fP\^, char *\fIargv\fP\^[], int
-\fIargc\fP\^, XSizeHints *\fInormal_hints\fP\^, XWMHints *\fIwm_hints\fP\^,
-XClassHint *\fIclass_hints\fP\^);
-.SH ARGUMENTS
-.IP \fIargc\fP 1i
-Specifies the number of arguments.
-.IP \fIargv\fP 1i
-Specifies the application's argument list.
-.IP \fIclass_hints\fP 1i
-Specifies the
-.ZN XClassHint
-structure to be used.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIicon_name\fP 1i
-Specifies the icon name,
-which should be a null-terminated string.
-.IP \fInormal_hints\fP 1i
-Specifies the size hints for the window in its normal state.
-.IP \fIw\fP 1i
-Specifies the window.
-.IP \fIwindow_name\fP 1i
-Specifies the window name,
-which should be a null-terminated string.
-.IP \fIwm_hints\fP 1i
-Specifies the
-.ZN XWMHints
-structure to be used.
-.SH DESCRIPTION
-The
-.ZN 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,
-.ZN XSetWMProperties
-calls
-.ZN XSetWMName ,
-which in turn, sets the WM_NAME property (see section 14.1.4).
-If the icon_name argument is non-NULL,
-.ZN XSetWMProperties
-calls
-.ZN XSetWMIconName ,
-which sets the WM_ICON_NAME property (see section 14.1.5).
-If the argv argument is non-NULL,
-.ZN XSetWMProperties
-calls
-.ZN 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
-.ZN XSetWMClientMachine
-(see section 14.2.2).
-.LP
-If the normal_hints argument is non-NULL,
-.ZN XSetWMProperties
-calls
-.ZN XSetWMNormalHints ,
-which sets the WM_NORMAL_HINTS property (see section 14.1.7).
-If the wm_hints argument is non-NULL,
-.ZN XSetWMProperties
-calls
-.ZN XSetWMHints ,
-which sets the WM_HINTS property (see section 14.1.6).
-.LP
-If the class_hints argument is non-NULL,
-.ZN XSetWMProperties
-calls
-.ZN XSetClassHint ,
-which sets the WM_CLASS property (see section 14.1.8).
-If the res_name member in the
-.ZN 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
-The
-.ZN XmbSetWMProperties
-and
-.ZN Xutf8SetWMProperties
-convenience functions provide 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,
-they set the WM_NAME property.
-If the icon_name argument is non-NULL,
-they set the WM_ICON_NAME property.
-The window_name and icon_name arguments are null-terminated strings, for
-.ZN XmbSetWMProperties
-in the encoding of the current locale, for
-.ZN Xutf8SetWMProperties
-in UTF-8 encoding.
-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,
-.ZN XmbSetWMProperties
-and
-.ZN Xutf8SetWMProperties
-call
-.ZN XSetWMNormalHints ,
-which sets the WM_NORMAL_HINTS property (see section 14.1.7).
-If the wm_hints argument is non-NULL,
-.ZN XmbSetWMProperties
-and
-.ZN Xutf8SetWMProperties
-call
-.ZN XSetWMHints ,
-which sets the WM_HINTS property (see section 14.1.6).
-.LP
-If the argv argument is non-NULL,
-.ZN XmbSetWMProperties
-and
-.ZN Xutf8SetWMProperties
-set 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
-.ZN XSetWMClientMachine
-(see section 14.2.2).
-.LP
-If the class_hints argument is non-NULL,
-.ZN XmbSetWMProperties
-and
-.ZN Xutf8SetWMProperties
-set the WM_CLASS property.
-If the res_name member in the
-.ZN 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 current locale.
-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 for these strings prior to storage
-in the properties.
-.LP
-For clients that need to process the property text in a locale,
-.ZN XmbSetWMProperties
-and
-.ZN Xutf8SetWMProperties
-set 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
-.ZN XSetWMProperties ,
-.ZN XmbSetWMProperties
-and
-.ZN Xutf8SetWMProperties
-can generate
-.ZN BadAlloc
-and
-.ZN BadWindow
-errors.
-.LP
-The function
-.ZN Xutf8SetWMProperties
-is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
-release. Its presence is
-indicated by the macro
-.ZN X_HAVE_UTF8_STRING .
-.SH PROPERTIES
-.TP 1i
-\s-1WM_CLASS\s+1
-Set by application programs to allow window and session
-managers to obtain the application's resources from the resource database.
-.TP 1i
-\s-1WM_CLIENT_MACHINE\s+1
-The string name of the machine on which the client application is running.
-.TP 1i
-\s-1WM_COMMAND\s+1
-The command and arguments, null-separated, used to invoke the
-application.
-.TP 1i
-\s-1WM_HINTS\s+1
-Additional hints set by the client for use by the window manager.
-The C type of this property is
-.ZN XWMHints .
-.TP 1i
-\s-1WM_ICON_NAME\s+1
-The name to be used in an icon.
-.TP 1i
-\s-1WM_NAME\s+1
-The name of the application.
-.TP 1i
-\s-1WM_NORMAL_HINTS\s+1
-Size hints for a window in its normal state.
-The C type of this property is
-.ZN XSizeHints .
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XParseGeometry(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__),
-XTextListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetWMProperties __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetWMProperties, XmbSetWMProperties, Xutf8SetWMProperties \- set standard window properties
+.SH SYNTAX
+.HP
+void XSetWMProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^,
+XTextProperty *\fIwindow_name\fP\^, XTextProperty *\fIicon_name\fP\^, char
+**\fIargv\fP\^, int \fIargc\fP\^, XSizeHints *\fInormal_hints\fP\^, XWMHints
+*\fIwm_hints\fP\^, XClassHint *\fIclass_hints\fP\^);
+.HP
+void XmbSetWMProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
+*\fIwindow_name\fP\^, char *\fIicon_name\fP\^, char *\fIargv\fP\^[], int
+\fIargc\fP\^, XSizeHints *\fInormal_hints\fP\^, XWMHints *\fIwm_hints\fP\^,
+XClassHint *\fIclass_hints\fP\^);
+.HP
+void Xutf8SetWMProperties\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, char
+*\fIwindow_name\fP\^, char *\fIicon_name\fP\^, char *\fIargv\fP\^[], int
+\fIargc\fP\^, XSizeHints *\fInormal_hints\fP\^, XWMHints *\fIwm_hints\fP\^,
+XClassHint *\fIclass_hints\fP\^);
+.SH ARGUMENTS
+.IP \fIargc\fP 1i
+Specifies the number of arguments.
+.IP \fIargv\fP 1i
+Specifies the application's argument list.
+.IP \fIclass_hints\fP 1i
+Specifies the
+.ZN XClassHint
+structure to be used.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIicon_name\fP 1i
+Specifies the icon name,
+which should be a null-terminated string.
+.IP \fInormal_hints\fP 1i
+Specifies the size hints for the window in its normal state.
+.IP \fIw\fP 1i
+Specifies the window.
+.IP \fIwindow_name\fP 1i
+Specifies the window name,
+which should be a null-terminated string.
+.IP \fIwm_hints\fP 1i
+Specifies the
+.ZN XWMHints
+structure to be used.
+.SH DESCRIPTION
+The
+.ZN 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,
+.ZN XSetWMProperties
+calls
+.ZN XSetWMName ,
+which in turn, sets the WM_NAME property (see section 14.1.4).
+If the icon_name argument is non-NULL,
+.ZN XSetWMProperties
+calls
+.ZN XSetWMIconName ,
+which sets the WM_ICON_NAME property (see section 14.1.5).
+If the argv argument is non-NULL,
+.ZN XSetWMProperties
+calls
+.ZN 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
+.ZN XSetWMClientMachine
+(see section 14.2.2).
+.LP
+If the normal_hints argument is non-NULL,
+.ZN XSetWMProperties
+calls
+.ZN XSetWMNormalHints ,
+which sets the WM_NORMAL_HINTS property (see section 14.1.7).
+If the wm_hints argument is non-NULL,
+.ZN XSetWMProperties
+calls
+.ZN XSetWMHints ,
+which sets the WM_HINTS property (see section 14.1.6).
+.LP
+If the class_hints argument is non-NULL,
+.ZN XSetWMProperties
+calls
+.ZN XSetClassHint ,
+which sets the WM_CLASS property (see section 14.1.8).
+If the res_name member in the
+.ZN 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
+The
+.ZN XmbSetWMProperties
+and
+.ZN Xutf8SetWMProperties
+convenience functions provide 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,
+they set the WM_NAME property.
+If the icon_name argument is non-NULL,
+they set the WM_ICON_NAME property.
+The window_name and icon_name arguments are null-terminated strings, for
+.ZN XmbSetWMProperties
+in the encoding of the current locale, for
+.ZN Xutf8SetWMProperties
+in UTF-8 encoding.
+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,
+.ZN XmbSetWMProperties
+and
+.ZN Xutf8SetWMProperties
+call
+.ZN XSetWMNormalHints ,
+which sets the WM_NORMAL_HINTS property (see section 14.1.7).
+If the wm_hints argument is non-NULL,
+.ZN XmbSetWMProperties
+and
+.ZN Xutf8SetWMProperties
+call
+.ZN XSetWMHints ,
+which sets the WM_HINTS property (see section 14.1.6).
+.LP
+If the argv argument is non-NULL,
+.ZN XmbSetWMProperties
+and
+.ZN Xutf8SetWMProperties
+set 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
+.ZN XSetWMClientMachine
+(see section 14.2.2).
+.LP
+If the class_hints argument is non-NULL,
+.ZN XmbSetWMProperties
+and
+.ZN Xutf8SetWMProperties
+set the WM_CLASS property.
+If the res_name member in the
+.ZN 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 current locale.
+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 for these strings prior to storage
+in the properties.
+.LP
+For clients that need to process the property text in a locale,
+.ZN XmbSetWMProperties
+and
+.ZN Xutf8SetWMProperties
+set 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
+.ZN XSetWMProperties ,
+.ZN XmbSetWMProperties
+and
+.ZN Xutf8SetWMProperties
+can generate
+.ZN BadAlloc
+and
+.ZN BadWindow
+errors.
+.LP
+The function
+.ZN Xutf8SetWMProperties
+is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
+release. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
+.SH PROPERTIES
+.TP 1i
+\s-1WM_CLASS\s+1
+Set by application programs to allow window and session
+managers to obtain the application's resources from the resource database.
+.TP 1i
+\s-1WM_CLIENT_MACHINE\s+1
+The string name of the machine on which the client application is running.
+.TP 1i
+\s-1WM_COMMAND\s+1
+The command and arguments, null-separated, used to invoke the
+application.
+.TP 1i
+\s-1WM_HINTS\s+1
+Additional hints set by the client for use by the window manager.
+The C type of this property is
+.ZN XWMHints .
+.TP 1i
+\s-1WM_ICON_NAME\s+1
+The name to be used in an icon.
+.TP 1i
+\s-1WM_NAME\s+1
+The name of the application.
+.TP 1i
+\s-1WM_NORMAL_HINTS\s+1
+Size hints for a window in its normal state.
+The C type of this property is
+.ZN XSizeHints .
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XParseGeometry(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__),
+XTextListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSetWMProtocols.man b/libX11/man/XSetWMProtocols.man
index f3fefb610..543003669 100644
--- a/libX11/man/XSetWMProtocols.man
+++ b/libX11/man/XSetWMProtocols.man
@@ -1,236 +1,236 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSetWMProtocols __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetWMProtocols, XGetWMProtocols \- set or read a window's WM_PROTOCOLS property
-.SH SYNTAX
-.HP
-Status XSetWMProtocols\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom
-*\fIprotocols\fP\^, int \fIcount\fP\^);
-.HP
-Status XGetWMProtocols\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom
-**\fIprotocols_return\fP\^, int *\fIcount_return\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.ds Cn protocols in the list
-.IP \fIcount\fP 1i
-Specifies the number of \*(Cn.
-.ds Cn protocols in the list
-.IP \fIcount_return\fP 1i
-Returns the number of \*(Cn.
-.IP \fIprotocols\fP 1i
-Specifies the list of protocols.
-.IP \fIprotocols_return\fP 1i
-Returns the list of protocols.
-.SH DESCRIPTION
-The
-.ZN 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,
-.ZN 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,
-.ZN XSetWMProtocols
-returns a zero status.
-Otherwise, it returns a nonzero status.
-.LP
-.ZN XSetWMProtocols
-can generate
-.ZN BadAlloc
-and
-.ZN BadWindow
-errors.
-.LP
-The
-.ZN 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,
-.ZN 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
-.ZN XFree .
-.LP
-.ZN XGetWMProtocols
-can generate a
-.ZN BadWindow
-error.
-.SH PROPERTIES
-.TP 1i
-\s-1WM_PROTOCOLS\s+1
-List of atoms that identify the communications protocols between the
-client and window manager in which the client is willing to participate.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XFree(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSetWMProtocols __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetWMProtocols, XGetWMProtocols \- set or read a window's WM_PROTOCOLS property
+.SH SYNTAX
+.HP
+Status XSetWMProtocols\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom
+*\fIprotocols\fP\^, int \fIcount\fP\^);
+.HP
+Status XGetWMProtocols\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^, Atom
+**\fIprotocols_return\fP\^, int *\fIcount_return\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.ds Cn protocols in the list
+.IP \fIcount\fP 1i
+Specifies the number of \*(Cn.
+.ds Cn protocols in the list
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.IP \fIprotocols\fP 1i
+Specifies the list of protocols.
+.IP \fIprotocols_return\fP 1i
+Returns the list of protocols.
+.SH DESCRIPTION
+The
+.ZN 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,
+.ZN 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,
+.ZN XSetWMProtocols
+returns a zero status.
+Otherwise, it returns a nonzero status.
+.LP
+.ZN XSetWMProtocols
+can generate
+.ZN BadAlloc
+and
+.ZN BadWindow
+errors.
+.LP
+The
+.ZN 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,
+.ZN 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
+.ZN XFree .
+.LP
+.ZN XGetWMProtocols
+can generate a
+.ZN BadWindow
+error.
+.SH PROPERTIES
+.TP 1i
+\s-1WM_PROTOCOLS\s+1
+List of atoms that identify the communications protocols between the
+client and window manager in which the client is willing to participate.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XFree(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XStoreBytes.man b/libX11/man/XStoreBytes.man
index 8cc82d7ea..f3a4ccfe5 100644
--- a/libX11/man/XStoreBytes.man
+++ b/libX11/man/XStoreBytes.man
@@ -1,253 +1,253 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XStoreBytes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XStoreBytes, XStoreBuffer, XFetchBytes, XFetchBuffer, XRotateBuffers \- manipulate cut and paste buffers
-.SH SYNTAX
-.HP
-int XStoreBytes\^(\^Display *\fIdisplay\fP\^, char *\fIbytes\fP\^, int
-\^\fInbytes\fP\^);
-.HP
-int XStoreBuffer\^(\^Display *\fIdisplay\fP\^, char *\fIbytes\fP\^, int
-\^\fInbytes\fP\^, int \fIbuffer\fP\^);
-.HP
-char *XFetchBytes\^(\^Display *\fIdisplay\fP\^, int *\fInbytes_return\fP\^);
-.HP
-char *XFetchBuffer\^(\^Display *\fIdisplay\fP\^, int *\fInbytes_return\fP\^,
-int \fIbuffer\fP\^);
-.HP
-int XRotateBuffers\^(\^Display *\fIdisplay\fP\^, int \fIrotate\fP\^);
-.SH ARGUMENTS
-.ds Fn in which you want to store the bytes \
-or from which you want the stored data returned
-.IP \fIbuffer\fP 1i
-Specifies the buffer \*(Fn.
-.IP \fIbytes\fP 1i
-Specifies the bytes, which are not necessarily ASCII or null-terminated.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fInbytes\fP 1i
-Specifies the number of bytes to be stored.
-.IP \fInbytes_return\fP 1i
-Returns the number of bytes in the buffer.
-.IP \fIrotate\fP 1i
-Specifies how much to rotate the cut buffers.
-.SH DESCRIPTION
-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
-.ZN XFetchBytes .
-.LP
-.ZN XStoreBytes
-can generate a
-.ZN BadAlloc
-error.
-.LP
-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
-.ZN XStoreBuffer
-can generate a
-.ZN BadAlloc
-error.
-.LP
-The
-.ZN 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
-.ZN XFree .
-.LP
-The
-.ZN 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
-.ZN XFetchBuffer
-can generate a
-.ZN BadValue
-error.
-.LP
-The
-.ZN 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
-.ZN XRotateBuffers
-generates
-.ZN BadMatch
-errors if any of the eight buffers have not been created.
-.LP
-.ZN XRotateBuffers
-can generate a
-.ZN BadMatch
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAlloc
-The server failed to allocate the requested resource or server memory.
-.TP 1i
-.ZN BadAtom
-A value for an Atom argument does not name a defined Atom.
-.TP 1i
-.ZN BadMatch
-Some argument or pair of arguments has the correct type and range but fails
-to match in some other way required by the request.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XFree(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XStoreBytes __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XStoreBytes, XStoreBuffer, XFetchBytes, XFetchBuffer, XRotateBuffers \- manipulate cut and paste buffers
+.SH SYNTAX
+.HP
+int XStoreBytes\^(\^Display *\fIdisplay\fP\^, char *\fIbytes\fP\^, int
+\^\fInbytes\fP\^);
+.HP
+int XStoreBuffer\^(\^Display *\fIdisplay\fP\^, char *\fIbytes\fP\^, int
+\^\fInbytes\fP\^, int \fIbuffer\fP\^);
+.HP
+char *XFetchBytes\^(\^Display *\fIdisplay\fP\^, int *\fInbytes_return\fP\^);
+.HP
+char *XFetchBuffer\^(\^Display *\fIdisplay\fP\^, int *\fInbytes_return\fP\^,
+int \fIbuffer\fP\^);
+.HP
+int XRotateBuffers\^(\^Display *\fIdisplay\fP\^, int \fIrotate\fP\^);
+.SH ARGUMENTS
+.ds Fn in which you want to store the bytes \
+or from which you want the stored data returned
+.IP \fIbuffer\fP 1i
+Specifies the buffer \*(Fn.
+.IP \fIbytes\fP 1i
+Specifies the bytes, which are not necessarily ASCII or null-terminated.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fInbytes\fP 1i
+Specifies the number of bytes to be stored.
+.IP \fInbytes_return\fP 1i
+Returns the number of bytes in the buffer.
+.IP \fIrotate\fP 1i
+Specifies how much to rotate the cut buffers.
+.SH DESCRIPTION
+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
+.ZN XFetchBytes .
+.LP
+.ZN XStoreBytes
+can generate a
+.ZN BadAlloc
+error.
+.LP
+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
+.ZN XStoreBuffer
+can generate a
+.ZN BadAlloc
+error.
+.LP
+The
+.ZN 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
+.ZN XFree .
+.LP
+The
+.ZN 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
+.ZN XFetchBuffer
+can generate a
+.ZN BadValue
+error.
+.LP
+The
+.ZN 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
+.ZN XRotateBuffers
+generates
+.ZN BadMatch
+errors if any of the eight buffers have not been created.
+.LP
+.ZN XRotateBuffers
+can generate a
+.ZN BadMatch
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAlloc
+The server failed to allocate the requested resource or server memory.
+.TP 1i
+.ZN BadAtom
+A value for an Atom argument does not name a defined Atom.
+.TP 1i
+.ZN BadMatch
+Some argument or pair of arguments has the correct type and range but fails
+to match in some other way required by the request.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XFree(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XStoreColors.man b/libX11/man/XStoreColors.man
index 6dccc93ae..cb2188cca 100644
--- a/libX11/man/XStoreColors.man
+++ b/libX11/man/XStoreColors.man
@@ -1,304 +1,304 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XStoreColors __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XStoreColors, XStoreColor, XStoreNamedColor \- set colors
-.SH SYNTAX
-.HP
-int XStoreColors\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
-XColor \fIcolor\fP\^[\^]\^, int \fIncolors\fP\^);
-.HP
-int XStoreColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
-XColor *\fIcolor\fP\^);
-.HP
-int XStoreNamedColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
-char *\^\fIcolor\fP\^, unsigned long \fIpixel\fP\^, int \fIflags\fP\^);
-.SH ARGUMENTS
-.ds Co pixel and RGB values or the color name string (for example, red)
-.IP \fIcolor\fP 1i
-Specifies the \*(Co.
-.IP \fIcolor\fP 1i
-Specifies an array of color definition structures to be stored.
-.IP \fIcolormap\fP 1i
-Specifies the colormap.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIflags\fP 1i
-Specifies which red, green, and blue components are set.
-.IP \fIncolors\fP 1i
-.\"Specifies the number of color definition structures.
-Specifies the number of
-.ZN XColor
-structures in the color definition array.
-.IP \fIpixel\fP 1i
-Specifies the entry in the colormap.
-.SH DESCRIPTION
-The
-.ZN XStoreColors
-function changes the colormap entries of the pixel values
-specified in the pixel members of the
-.ZN XColor
-structures.
-You specify which color components are to be changed by setting
-.ZN DoRed ,
-.ZN DoGreen ,
-and/or
-.ZN DoBlue
-in the flags member of the
-.ZN XColor
-structures.
-If the colormap is an installed map for its screen, the
-changes are visible immediately.
-.ZN 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
-.ZN BadValue
-error results.
-If a specified pixel either is unallocated or is allocated read-only, a
-.ZN BadAccess
-error results.
-If more than one pixel is in error,
-the one that gets reported is arbitrary.
-.LP
-.ZN XStoreColors
-can generate
-.ZN BadAccess ,
-.ZN BadColor ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN XStoreColor
-function changes the colormap entry of the pixel value specified in the
-pixel member of the
-.ZN XColor
-structure.
-You specified this value in the
-pixel member of the
-.ZN 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
-.ZN BadValue
-error results.
-.ZN XStoreColor
-also changes the red, green, and/or blue color components.
-You specify which color components are to be changed by setting
-.ZN DoRed ,
-.ZN DoGreen ,
-and/or
-.ZN DoBlue
-in the flags member of the
-.ZN XColor
-structure.
-If the colormap is an installed map for its screen,
-the changes are visible immediately.
-.LP
-.ZN XStoreColor
-can generate
-.ZN BadAccess ,
-.ZN BadColor ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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
-.ZN DoRed ,
-.ZN DoGreen ,
-and
-.ZN 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
-.ZN BadValue
-error results.
-If the specified pixel either is unallocated or is allocated read-only, a
-.ZN BadAccess
-error results.
-.LP
-.ZN XStoreNamedColor
-can generate
-.ZN BadAccess ,
-.ZN BadColor ,
-.ZN BadName ,
-and
-.ZN BadValue
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAccess
-A client attempted
-to free a color map entry that it did not already allocate.
-.TP 1i
-.ZN BadAccess
-A client attempted
-to store into a read-only color map entry.
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.TP 1i
-.ZN BadName
-A font or color of the specified name does not exist.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XAllocColor(__libmansuffix__),
-XCreateColormap(__libmansuffix__),
-XQueryColor(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XStoreColors __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XStoreColors, XStoreColor, XStoreNamedColor \- set colors
+.SH SYNTAX
+.HP
+int XStoreColors\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
+XColor \fIcolor\fP\^[\^]\^, int \fIncolors\fP\^);
+.HP
+int XStoreColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
+XColor *\fIcolor\fP\^);
+.HP
+int XStoreNamedColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
+char *\^\fIcolor\fP\^, unsigned long \fIpixel\fP\^, int \fIflags\fP\^);
+.SH ARGUMENTS
+.ds Co pixel and RGB values or the color name string (for example, red)
+.IP \fIcolor\fP 1i
+Specifies the \*(Co.
+.IP \fIcolor\fP 1i
+Specifies an array of color definition structures to be stored.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIflags\fP 1i
+Specifies which red, green, and blue components are set.
+.IP \fIncolors\fP 1i
+.\"Specifies the number of color definition structures.
+Specifies the number of
+.ZN XColor
+structures in the color definition array.
+.IP \fIpixel\fP 1i
+Specifies the entry in the colormap.
+.SH DESCRIPTION
+The
+.ZN XStoreColors
+function changes the colormap entries of the pixel values
+specified in the pixel members of the
+.ZN XColor
+structures.
+You specify which color components are to be changed by setting
+.ZN DoRed ,
+.ZN DoGreen ,
+and/or
+.ZN DoBlue
+in the flags member of the
+.ZN XColor
+structures.
+If the colormap is an installed map for its screen, the
+changes are visible immediately.
+.ZN 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
+.ZN BadValue
+error results.
+If a specified pixel either is unallocated or is allocated read-only, a
+.ZN BadAccess
+error results.
+If more than one pixel is in error,
+the one that gets reported is arbitrary.
+.LP
+.ZN XStoreColors
+can generate
+.ZN BadAccess ,
+.ZN BadColor ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN XStoreColor
+function changes the colormap entry of the pixel value specified in the
+pixel member of the
+.ZN XColor
+structure.
+You specified this value in the
+pixel member of the
+.ZN 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
+.ZN BadValue
+error results.
+.ZN XStoreColor
+also changes the red, green, and/or blue color components.
+You specify which color components are to be changed by setting
+.ZN DoRed ,
+.ZN DoGreen ,
+and/or
+.ZN DoBlue
+in the flags member of the
+.ZN XColor
+structure.
+If the colormap is an installed map for its screen,
+the changes are visible immediately.
+.LP
+.ZN XStoreColor
+can generate
+.ZN BadAccess ,
+.ZN BadColor ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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
+.ZN DoRed ,
+.ZN DoGreen ,
+and
+.ZN 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
+.ZN BadValue
+error results.
+If the specified pixel either is unallocated or is allocated read-only, a
+.ZN BadAccess
+error results.
+.LP
+.ZN XStoreNamedColor
+can generate
+.ZN BadAccess ,
+.ZN BadColor ,
+.ZN BadName ,
+and
+.ZN BadValue
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAccess
+A client attempted
+to free a color map entry that it did not already allocate.
+.TP 1i
+.ZN BadAccess
+A client attempted
+to store into a read-only color map entry.
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.TP 1i
+.ZN BadName
+A font or color of the specified name does not exist.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XAllocColor(__libmansuffix__),
+XCreateColormap(__libmansuffix__),
+XQueryColor(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XStringListToTextProperty.man b/libX11/man/XStringListToTextProperty.man
index 42da5b188..7ed72626b 100644
--- a/libX11/man/XStringListToTextProperty.man
+++ b/libX11/man/XStringListToTextProperty.man
@@ -1,253 +1,253 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XStringListToTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XStringListToTextProperty, XTextPropertyToStringList, XFreeStringList, XTextProperty \- convert string lists and text property structure
-.SH SYNTAX
-.HP
-Status XStringListToTextProperty\^(\^char **\fIlist\fP\^, int \fIcount\fP\^,
-XTextProperty *\fItext_prop_return\fP\^);
-.HP
-Status XTextPropertyToStringList\^(\^XTextProperty *\fItext_prop\fP\^, char
-***\fIlist_return\fP\^, int *\fIcount_return\fP\^);
-.HP
-void XFreeStringList\^(\^char **\fIlist\fP\^);
-.SH ARGUMENTS
-.ds Cn strings
-.IP \fIcount\fP 1i
-Specifies the number of \*(Cn.
-.ds Cn strings
-.IP \fIcount_return\fP 1i
-Returns the number of \*(Cn.
-.IP \fIlist\fP 1i
-Specifies the list of strings to be freed.
-.IP \fIlist\fP 1i
-Specifies a list of null-terminated character strings.
-.IP \fIlist_return\fP 1i
-Returns a list of null-terminated character strings.
-.IP \fItext_prop\fP 1i
-Specifies the
-.ZN XTextProperty
-structure to be used.
-.IP \fItext_prop_return\fP 1i
-Returns the
-.ZN XTextProperty
-structure.
-.SH DESCRIPTION
-The
-.ZN XStringListToTextProperty
-function sets the specified
-.ZN 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,
-.ZN XStringListToTextProperty
-does not set any fields in the
-.ZN XTextProperty
-structure and returns a zero status.
-Otherwise, it returns a nonzero status.
-To free the storage for the value field, use
-.ZN XFree .
-.LP
-The
-.ZN XTextPropertyToStringList
-function returns a list of strings representing the null-separated elements
-of the specified
-.ZN 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,
-.ZN 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
-.ZN XFreeStringList .
-.LP
-The
-.ZN XFreeStringList
-function releases memory allocated by
-.ZN XmbTextPropertyToTextList ,
-.ZN Xutf8TextPropertyToTextList
-and
-.ZN XTextPropertyToStringList
-and the missing charset list allocated by
-.ZN XCreateFontSet .
-.SH STRUCTURES
-The
-.ZN XTextProperty
-structure contains:
-.LP
-.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
-.SH "SEE ALSO"
-XAllocClassHint(__libmansuffix__),
-XAllocIconSize(__libmansuffix__),
-XAllocSizeHints(__libmansuffix__),
-XAllocWMHints(__libmansuffix__),
-XFree(__libmansuffix__),
-XSetCommand(__libmansuffix__),
-XSetTransientForHint(__libmansuffix__),
-XSetTextProperty(__libmansuffix__),
-XSetWMClientMachine(__libmansuffix__),
-XSetWMColormapWindows(__libmansuffix__),
-XSetWMIconName(__libmansuffix__),
-XSetWMName(__libmansuffix__),
-XSetWMProperties(__libmansuffix__),
-XSetWMProtocols(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XStringListToTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XStringListToTextProperty, XTextPropertyToStringList, XFreeStringList, XTextProperty \- convert string lists and text property structure
+.SH SYNTAX
+.HP
+Status XStringListToTextProperty\^(\^char **\fIlist\fP\^, int \fIcount\fP\^,
+XTextProperty *\fItext_prop_return\fP\^);
+.HP
+Status XTextPropertyToStringList\^(\^XTextProperty *\fItext_prop\fP\^, char
+***\fIlist_return\fP\^, int *\fIcount_return\fP\^);
+.HP
+void XFreeStringList\^(\^char **\fIlist\fP\^);
+.SH ARGUMENTS
+.ds Cn strings
+.IP \fIcount\fP 1i
+Specifies the number of \*(Cn.
+.ds Cn strings
+.IP \fIcount_return\fP 1i
+Returns the number of \*(Cn.
+.IP \fIlist\fP 1i
+Specifies the list of strings to be freed.
+.IP \fIlist\fP 1i
+Specifies a list of null-terminated character strings.
+.IP \fIlist_return\fP 1i
+Returns a list of null-terminated character strings.
+.IP \fItext_prop\fP 1i
+Specifies the
+.ZN XTextProperty
+structure to be used.
+.IP \fItext_prop_return\fP 1i
+Returns the
+.ZN XTextProperty
+structure.
+.SH DESCRIPTION
+The
+.ZN XStringListToTextProperty
+function sets the specified
+.ZN 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,
+.ZN XStringListToTextProperty
+does not set any fields in the
+.ZN XTextProperty
+structure and returns a zero status.
+Otherwise, it returns a nonzero status.
+To free the storage for the value field, use
+.ZN XFree .
+.LP
+The
+.ZN XTextPropertyToStringList
+function returns a list of strings representing the null-separated elements
+of the specified
+.ZN 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,
+.ZN 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
+.ZN XFreeStringList .
+.LP
+The
+.ZN XFreeStringList
+function releases memory allocated by
+.ZN XmbTextPropertyToTextList ,
+.ZN Xutf8TextPropertyToTextList
+and
+.ZN XTextPropertyToStringList
+and the missing charset list allocated by
+.ZN XCreateFontSet .
+.SH STRUCTURES
+The
+.ZN XTextProperty
+structure contains:
+.LP
+.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
+.SH "SEE ALSO"
+XAllocClassHint(__libmansuffix__),
+XAllocIconSize(__libmansuffix__),
+XAllocSizeHints(__libmansuffix__),
+XAllocWMHints(__libmansuffix__),
+XFree(__libmansuffix__),
+XSetCommand(__libmansuffix__),
+XSetTransientForHint(__libmansuffix__),
+XSetTextProperty(__libmansuffix__),
+XSetWMClientMachine(__libmansuffix__),
+XSetWMColormapWindows(__libmansuffix__),
+XSetWMIconName(__libmansuffix__),
+XSetWMName(__libmansuffix__),
+XSetWMProperties(__libmansuffix__),
+XSetWMProtocols(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XSupportsLocale.man b/libX11/man/XSupportsLocale.man
index 786aa6e46..ac0c743d2 100644
--- a/libX11/man/XSupportsLocale.man
+++ b/libX11/man/XSupportsLocale.man
@@ -1,227 +1,227 @@
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSupportsLocale __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSupportsLocale, XSetLocaleModifiers \- determine locale support and configure locale modifiers
-.SH SYNTAX
-.HP
-Bool XSupportsLocale\^(void);
-.HP
-char *XSetLocaleModifiers\^(\^char *\fImodifier_list\fP\^);
-.SH ARGUMENTS
-.IP \fImodifier_list\fP 1i
-Specifies the modifiers.
-.SH DESCRIPTION
-The
-.ZN XSupportsLocale
-function returns
-.ZN True
-if Xlib functions are capable of operating under the current locale.
-If it returns
-.ZN False ,
-Xlib locale-dependent functions for which the
-.ZN XLocaleNotSupported
-return status is defined will return
-.ZN XLocaleNotSupported .
-Other Xlib locale-dependent routines will operate in the ``C'' locale.
-.LP
-The
-.ZN 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,
-.ZN 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
-.ZN 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.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSupportsLocale __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSupportsLocale, XSetLocaleModifiers \- determine locale support and configure locale modifiers
+.SH SYNTAX
+.HP
+Bool XSupportsLocale\^(void);
+.HP
+char *XSetLocaleModifiers\^(\^char *\fImodifier_list\fP\^);
+.SH ARGUMENTS
+.IP \fImodifier_list\fP 1i
+Specifies the modifiers.
+.SH DESCRIPTION
+The
+.ZN XSupportsLocale
+function returns
+.ZN True
+if Xlib functions are capable of operating under the current locale.
+If it returns
+.ZN False ,
+Xlib locale-dependent functions for which the
+.ZN XLocaleNotSupported
+return status is defined will return
+.ZN XLocaleNotSupported .
+Other Xlib locale-dependent routines will operate in the ``C'' locale.
+.LP
+The
+.ZN 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,
+.ZN 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
+.ZN 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.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XSynchronize.man b/libX11/man/XSynchronize.man
index cf59c9008..babe156d9 100644
--- a/libX11/man/XSynchronize.man
+++ b/libX11/man/XSynchronize.man
@@ -1,179 +1,179 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XSynchronize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSynchronize, XSetAfterFunction \- enable or disable synchronization
-.SH SYNTAX
-.HP
-int (*XSynchronize\^(\^Display *\fIdisplay\fP\^, Bool \fIonoff\fP\^))();
-.HP
-int (*XSetAfterFunction\^(\^Display *\fIdisplay\fP\^, int
-(\^*\^\fIprocedure\fP\^)\^()))();
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIprocedure\fP 1i
-Specifies the procedure to be called.
-.IP \fIonoff\fP 1i
-Specifies a Boolean value that indicates whether to enable
-or disable synchronization.
-.SH DESCRIPTION
-The
-.ZN XSynchronize
-function returns
-the previous after function.
-If onoff is
-.ZN True ,
-.ZN XSynchronize
-turns on synchronous behavior.
-If onoff is
-.ZN False ,
-.ZN XSynchronize
-turns off synchronous behavior.
-.LP
-The specified procedure is called with only a display pointer.
-.ZN XSetAfterFunction
-returns the previous after function.
-.SH "SEE ALSO"
-XSetErrorHandler(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XSynchronize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSynchronize, XSetAfterFunction \- enable or disable synchronization
+.SH SYNTAX
+.HP
+int (*XSynchronize\^(\^Display *\fIdisplay\fP\^, Bool \fIonoff\fP\^))();
+.HP
+int (*XSetAfterFunction\^(\^Display *\fIdisplay\fP\^, int
+(\^*\^\fIprocedure\fP\^)\^()))();
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIprocedure\fP 1i
+Specifies the procedure to be called.
+.IP \fIonoff\fP 1i
+Specifies a Boolean value that indicates whether to enable
+or disable synchronization.
+.SH DESCRIPTION
+The
+.ZN XSynchronize
+function returns
+the previous after function.
+If onoff is
+.ZN True ,
+.ZN XSynchronize
+turns on synchronous behavior.
+If onoff is
+.ZN False ,
+.ZN XSynchronize
+turns off synchronous behavior.
+.LP
+The specified procedure is called with only a display pointer.
+.ZN XSetAfterFunction
+returns the previous after function.
+.SH "SEE ALSO"
+XSetErrorHandler(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XTextExtents.man b/libX11/man/XTextExtents.man
index c0c524fe1..d366d5a28 100644
--- a/libX11/man/XTextExtents.man
+++ b/libX11/man/XTextExtents.man
@@ -1,290 +1,290 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XTextExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XTextExtents, XTextExtents16, XQueryTextExtents, XQueryTextExtents16 \- compute or query text extents
-.SH SYNTAX
-.HP
-int XTextExtents\^(\^XFontStruct *\fIfont_struct\fP\^, char *\fIstring\fP\^,
-int \fInchars\fP\^, int *\fIdirection_return\fP\^, int
-*\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct
-*\fIoverall_return\fP\^);
-.HP
-int XTextExtents16\^(\^XFontStruct *\fIfont_struct\fP\^, XChar2b
-*\fIstring\fP\^, int \fInchars\fP\^, int *\fIdirection_return\fP\^, int
-*\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct
-*\fIoverall_return\fP\^);
-.HP
-int XQueryTextExtents\^(\^Display *\fIdisplay\fP\^, XID \fIfont_ID\fP\^, char
-*\fIstring\fP\^, int \fInchars\fP\^, int *\fIdirection_return\fP\^, int
-*\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct
-*\fIoverall_return\fP\^);
-.HP
-int XQueryTextExtents16\^(\^Display *\fIdisplay\fP\^, XID \fIfont_ID\fP\^,
-XChar2b *\fIstring\fP\^, int \fInchars\fP\^, int *\fIdirection_return\fP\^,
-int *\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct
-*\fIoverall_return\fP\^);
-.SH ARGUMENTS
-.IP \fIdirection_return\fP 1i
-Returns the value of the direction hint
-.Pn ( FontLeftToRight
-or
-.ZN FontRightToLeft ).
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIfont_ID\fP 1i
-Specifies either the font ID or the
-.ZN GContext
-ID that contains the font.
-.IP \fIfont_ascent_return\fP 1i
-Returns the font ascent.
-.IP \fIfont_descent_return\fP 1i
-Returns the font descent.
-.IP \fIfont_struct\fP 1i
-Specifies the
-.ZN XFontStruct
-structure.
-.IP \fInchars\fP 1i
-Specifies the number of characters in the character string.
-.IP \fIstring\fP 1i
-Specifies the character string.
-.IP \fIoverall_return\fP 1i
-Returns the overall size in the specified
-.ZN XCharStruct
-structure.
-.SH DESCRIPTION
-The
-.ZN XTextExtents
-and
-.ZN XTextExtents16
-functions
-perform the size computation locally and, thereby,
-avoid the round-trip overhead of
-.ZN XQueryTextExtents
-and
-.ZN XQueryTextExtents16 .
-Both functions return an
-.ZN 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
-.ZN 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
-The
-.ZN XQueryTextExtents
-and
-.ZN 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
-.ZN XTextExtents
-and
-.ZN XTextExtents16 .
-Both functions return a
-.ZN 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
-.ZN 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
-.ZN XQueryTextExtents
-and
-.ZN XQueryTextExtents16
-can generate
-.ZN BadFont
-and
-.ZN BadGC
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadFont
-A value for a Font or GContext argument does not name a defined Font.
-.TP 1i
-.ZN BadGC
-A value for a GContext argument does not name a defined GContext.
-.SH "SEE ALSO"
-XLoadFont(__libmansuffix__),
-XTextWidth(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XTextExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XTextExtents, XTextExtents16, XQueryTextExtents, XQueryTextExtents16 \- compute or query text extents
+.SH SYNTAX
+.HP
+int XTextExtents\^(\^XFontStruct *\fIfont_struct\fP\^, char *\fIstring\fP\^,
+int \fInchars\fP\^, int *\fIdirection_return\fP\^, int
+*\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct
+*\fIoverall_return\fP\^);
+.HP
+int XTextExtents16\^(\^XFontStruct *\fIfont_struct\fP\^, XChar2b
+*\fIstring\fP\^, int \fInchars\fP\^, int *\fIdirection_return\fP\^, int
+*\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct
+*\fIoverall_return\fP\^);
+.HP
+int XQueryTextExtents\^(\^Display *\fIdisplay\fP\^, XID \fIfont_ID\fP\^, char
+*\fIstring\fP\^, int \fInchars\fP\^, int *\fIdirection_return\fP\^, int
+*\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct
+*\fIoverall_return\fP\^);
+.HP
+int XQueryTextExtents16\^(\^Display *\fIdisplay\fP\^, XID \fIfont_ID\fP\^,
+XChar2b *\fIstring\fP\^, int \fInchars\fP\^, int *\fIdirection_return\fP\^,
+int *\fIfont_ascent_return\fP, int *\fIfont_descent_return\fP\^, XCharStruct
+*\fIoverall_return\fP\^);
+.SH ARGUMENTS
+.IP \fIdirection_return\fP 1i
+Returns the value of the direction hint
+.Pn ( FontLeftToRight
+or
+.ZN FontRightToLeft ).
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfont_ID\fP 1i
+Specifies either the font ID or the
+.ZN GContext
+ID that contains the font.
+.IP \fIfont_ascent_return\fP 1i
+Returns the font ascent.
+.IP \fIfont_descent_return\fP 1i
+Returns the font descent.
+.IP \fIfont_struct\fP 1i
+Specifies the
+.ZN XFontStruct
+structure.
+.IP \fInchars\fP 1i
+Specifies the number of characters in the character string.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.IP \fIoverall_return\fP 1i
+Returns the overall size in the specified
+.ZN XCharStruct
+structure.
+.SH DESCRIPTION
+The
+.ZN XTextExtents
+and
+.ZN XTextExtents16
+functions
+perform the size computation locally and, thereby,
+avoid the round-trip overhead of
+.ZN XQueryTextExtents
+and
+.ZN XQueryTextExtents16 .
+Both functions return an
+.ZN 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
+.ZN 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
+The
+.ZN XQueryTextExtents
+and
+.ZN 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
+.ZN XTextExtents
+and
+.ZN XTextExtents16 .
+Both functions return a
+.ZN 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
+.ZN 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
+.ZN XQueryTextExtents
+and
+.ZN XQueryTextExtents16
+can generate
+.ZN BadFont
+and
+.ZN BadGC
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadFont
+A value for a Font or GContext argument does not name a defined Font.
+.TP 1i
+.ZN BadGC
+A value for a GContext argument does not name a defined GContext.
+.SH "SEE ALSO"
+XLoadFont(__libmansuffix__),
+XTextWidth(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XTextWidth.man b/libX11/man/XTextWidth.man
index b9ec9424c..9ed0ef2ad 100644
--- a/libX11/man/XTextWidth.man
+++ b/libX11/man/XTextWidth.man
@@ -1,169 +1,169 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XTextWidth __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XTextWidth, XTextWidth16 \- compute text width
-.SH SYNTAX
-.HP
-int XTextWidth\^(\^XFontStruct *\fIfont_struct\fP\^, char *\fIstring\fP\^,
-int \fIcount\fP\^);
-.HP
-int XTextWidth16\^(\^XFontStruct *\fIfont_struct\fP\^, XChar2b
-*\fIstring\fP\^, int \fIcount\fP\^);
-.SH ARGUMENTS
-.IP \fIcount\fP 1i
-Specifies the character count in the specified string.
-.IP \fIfont_struct\fP 1i
-Specifies the font used for the width computation.
-.IP \fIstring\fP 1i
-Specifies the character string.
-.SH DESCRIPTION
-The
-.ZN XTextWidth
-and
-.ZN XTextWidth16
-functions return the width of the specified 8-bit or 2-byte character strings.
-.SH "SEE ALSO"
-XLoadFont(__libmansuffix__),
-XTextExtents(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XTextWidth __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XTextWidth, XTextWidth16 \- compute text width
+.SH SYNTAX
+.HP
+int XTextWidth\^(\^XFontStruct *\fIfont_struct\fP\^, char *\fIstring\fP\^,
+int \fIcount\fP\^);
+.HP
+int XTextWidth16\^(\^XFontStruct *\fIfont_struct\fP\^, XChar2b
+*\fIstring\fP\^, int \fIcount\fP\^);
+.SH ARGUMENTS
+.IP \fIcount\fP 1i
+Specifies the character count in the specified string.
+.IP \fIfont_struct\fP 1i
+Specifies the font used for the width computation.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.SH DESCRIPTION
+The
+.ZN XTextWidth
+and
+.ZN XTextWidth16
+functions return the width of the specified 8-bit or 2-byte character strings.
+.SH "SEE ALSO"
+XLoadFont(__libmansuffix__),
+XTextExtents(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XTranslateCoordinates.man b/libX11/man/XTranslateCoordinates.man
index 019d12307..eb964dd4a 100644
--- a/libX11/man/XTranslateCoordinates.man
+++ b/libX11/man/XTranslateCoordinates.man
@@ -1,200 +1,200 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XTranslateCoordinates __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XTranslateCoordinates \- translate window coordinates
-.SH SYNTAX
-.HP
-Bool XTranslateCoordinates\^(\^Display *\fIdisplay\fP\^, Window \fIsrc_w\fP\^,
-\fIdest_w\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, int
-*\fIdest_x_return\fP\^, int *\fIdest_y_return\fP\^, Window
-*\fIchild_return\fP\^);
-.SH ARGUMENTS
-.IP \fIchild_return\fP 1i
-Returns the child if the coordinates are contained in a mapped child of the
-destination window.
-.IP \fIdest_w\fP 1i
-Specifies the destination 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 \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIsrc_w\fP 1i
-Specifies the source window.
-.IP \fIsrc_x\fP 1i
-.br
-.ns
-.IP \fIsrc_y\fP 1i
-Specify the x and y coordinates within the source window.
-.SH DESCRIPTION
-If
-.ZN XTranslateCoordinates
-returns
-.ZN 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
-.ZN XTranslateCoordinates
-returns
-.ZN 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
-.ZN None .
-.LP
-.ZN XTranslateCoordinates
-can generate a
-.ZN BadWindow
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XTranslateCoordinates __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XTranslateCoordinates \- translate window coordinates
+.SH SYNTAX
+.HP
+Bool XTranslateCoordinates\^(\^Display *\fIdisplay\fP\^, Window \fIsrc_w\fP\^,
+\fIdest_w\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, int
+*\fIdest_x_return\fP\^, int *\fIdest_y_return\fP\^, Window
+*\fIchild_return\fP\^);
+.SH ARGUMENTS
+.IP \fIchild_return\fP 1i
+Returns the child if the coordinates are contained in a mapped child of the
+destination window.
+.IP \fIdest_w\fP 1i
+Specifies the destination 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 \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIsrc_w\fP 1i
+Specifies the source window.
+.IP \fIsrc_x\fP 1i
+.br
+.ns
+.IP \fIsrc_y\fP 1i
+Specify the x and y coordinates within the source window.
+.SH DESCRIPTION
+If
+.ZN XTranslateCoordinates
+returns
+.ZN 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
+.ZN XTranslateCoordinates
+returns
+.ZN 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
+.ZN None .
+.LP
+.ZN XTranslateCoordinates
+can generate a
+.ZN BadWindow
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XUnmapEvent.man b/libX11/man/XUnmapEvent.man
index edc4f644d..657bd23ab 100644
--- a/libX11/man/XUnmapEvent.man
+++ b/libX11/man/XUnmapEvent.man
@@ -1,226 +1,226 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XUnmapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XUnmapEvent \- UnmapNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN UnmapNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 event member is set either to the unmapped window or to its parent,
-depending on whether
-.ZN StructureNotify
-or
-.ZN 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
-.ZN 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
-.ZN UnmapGravity .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XVisibilityEvent(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XUnmapEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XUnmapEvent \- UnmapNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN UnmapNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 event member is set either to the unmapped window or to its parent,
+depending on whether
+.ZN StructureNotify
+or
+.ZN 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
+.ZN 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
+.ZN UnmapGravity .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XVisibilityEvent(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XUnmapWindow.man b/libX11/man/XUnmapWindow.man
index 5c6cd3325..9b0f4672e 100644
--- a/libX11/man/XUnmapWindow.man
+++ b/libX11/man/XUnmapWindow.man
@@ -1,210 +1,210 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XUnmapWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XUnmapWindow, XUnmapSubwindows \- unmap windows
-.SH SYNTAX
-.HP
-int XUnmapWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
-.HP
-int XUnmapSubwindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIw\fP 1i
-Specifies the window.
-.SH DESCRIPTION
-The
-.ZN XUnmapWindow
-function unmaps the specified window and causes the X server to generate an
-.ZN UnmapNotify
-.IN "UnmapNotify Event"
-.IN "XUnmapWindow"
-event.
-If the specified window is already unmapped,
-.ZN 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
-.ZN Expose
-events on windows that were formerly obscured by it.
-.LP
-.ZN XUnmapWindow
-can generate a
-.ZN BadWindow
-error.
-.LP
-The
-.ZN XUnmapSubwindows
-function unmaps all subwindows for the specified window in bottom-to-top
-stacking order.
-It causes the X server to generate an
-.ZN UnmapNotify
-event on each subwindow and
-.ZN 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
-.ZN XUnmapSubwindows
-can generate a
-.ZN BadWindow
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XChangeWindowAttributes(__libmansuffix__),
-XConfigureWindow(__libmansuffix__),
-XCreateWindow(__libmansuffix__),
-XDestroyWindow(__libmansuffix__),
-XMapWindow(__libmansuffix__)
-XRaiseWindow(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XUnmapWindow __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XUnmapWindow, XUnmapSubwindows \- unmap windows
+.SH SYNTAX
+.HP
+int XUnmapWindow\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
+.HP
+int XUnmapSubwindows\^(\^Display *\fIdisplay\fP\^, Window \fIw\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIw\fP 1i
+Specifies the window.
+.SH DESCRIPTION
+The
+.ZN XUnmapWindow
+function unmaps the specified window and causes the X server to generate an
+.ZN UnmapNotify
+.IN "UnmapNotify Event"
+.IN "XUnmapWindow"
+event.
+If the specified window is already unmapped,
+.ZN 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
+.ZN Expose
+events on windows that were formerly obscured by it.
+.LP
+.ZN XUnmapWindow
+can generate a
+.ZN BadWindow
+error.
+.LP
+The
+.ZN XUnmapSubwindows
+function unmaps all subwindows for the specified window in bottom-to-top
+stacking order.
+It causes the X server to generate an
+.ZN UnmapNotify
+event on each subwindow and
+.ZN 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
+.ZN XUnmapSubwindows
+can generate a
+.ZN BadWindow
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XChangeWindowAttributes(__libmansuffix__),
+XConfigureWindow(__libmansuffix__),
+XCreateWindow(__libmansuffix__),
+XDestroyWindow(__libmansuffix__),
+XMapWindow(__libmansuffix__)
+XRaiseWindow(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XVaCreateNestedList.man b/libX11/man/XVaCreateNestedList.man
index 7ccdadb22..4bf068ec9 100644
--- a/libX11/man/XVaCreateNestedList.man
+++ b/libX11/man/XVaCreateNestedList.man
@@ -1,169 +1,169 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XVaCreateNestedList __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XVaCreateNestedList \- allocate a nested variable argument list
-.SH SYNTAX
-typedef void * XVaNestedList;
-.HP
-XVaNestedList XVaCreateNestedList\^(\^int \fIdummy\fP\^, ...\^);
-.SH ARGUMENTS
-.IP \fIdummy\fP 1i
-Specifies an unused argument (required by ANSI C).
-.ds Al
-.IP ... 1i
-Specifies the variable length argument list\*(Al.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XFree
-when it is no longer needed.
-.SH "SEE ALSO"
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XVaCreateNestedList __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XVaCreateNestedList \- allocate a nested variable argument list
+.SH SYNTAX
+typedef void * XVaNestedList;
+.HP
+XVaNestedList XVaCreateNestedList\^(\^int \fIdummy\fP\^, ...\^);
+.SH ARGUMENTS
+.IP \fIdummy\fP 1i
+Specifies an unused argument (required by ANSI C).
+.ds Al
+.IP ... 1i
+Specifies the variable length argument list\*(Al.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XFree
+when it is no longer needed.
+.SH "SEE ALSO"
+\fI\*(xL\fP
diff --git a/libX11/man/XVisibilityEvent.man b/libX11/man/XVisibilityEvent.man
index 0cdf54c88..c82835807 100644
--- a/libX11/man/XVisibilityEvent.man
+++ b/libX11/man/XVisibilityEvent.man
@@ -1,244 +1,244 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XVisibilityEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XVisibilityEvent \- VisibilityNotify event structure
-.SH STRUCTURES
-The structure for
-.ZN VisibilityNotify
-events contains:
-.LP
-.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
-When you receive this event,
-the structure members are set as follows.
-.LP
-The type member is set to the event type constant name that uniquely identifies
-it.
-For example, when the X server reports a
-.ZN GraphicsExpose
-event to a client application, it sends an
-.ZN XGraphicsExposeEvent
-structure with the type member set to
-.ZN GraphicsExpose .
-The display member is set to a pointer to the display the event was read on.
-The send_event member is set to
-.ZN True
-if the event came from a
-.ZN 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 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
-.ZN VisibilityUnobscured ,
-.ZN VisibilityPartiallyObscured ,
-or
-.ZN VisibilityFullyObscured .
-The X server ignores all of a window's subwindows
-when determining the visibility state of the window and processes
-.ZN 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
-.ZN XVisibilityEvent
-structure set to
-.ZN 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
-.ZN XVisibilityEvent
-structure set to
-.ZN 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
-.ZN XVisibilityEvent
-structure set to
-.ZN VisibilityFullyObscured .
-.SH "SEE ALSO"
-XAnyEvent(__libmansuffix__),
-XButtonEvent(__libmansuffix__),
-XCreateWindowEvent(__libmansuffix__),
-XCirculateEvent(__libmansuffix__),
-XCirculateRequestEvent(__libmansuffix__),
-XColormapEvent(__libmansuffix__),
-XConfigureEvent(__libmansuffix__),
-XConfigureRequestEvent(__libmansuffix__),
-XCrossingEvent(__libmansuffix__),
-XDestroyWindowEvent(__libmansuffix__),
-XErrorEvent(__libmansuffix__),
-XExposeEvent(__libmansuffix__),
-XFocusChangeEvent(__libmansuffix__),
-XGraphicsExposeEvent(__libmansuffix__),
-XGravityEvent(__libmansuffix__),
-XKeymapEvent(__libmansuffix__),
-XMapEvent(__libmansuffix__),
-XMapRequestEvent(__libmansuffix__),
-XPropertyEvent(__libmansuffix__),
-XReparentEvent(__libmansuffix__),
-XResizeRequestEvent(__libmansuffix__),
-XSelectionClearEvent(__libmansuffix__),
-XSelectionEvent(__libmansuffix__),
-XSelectionRequestEvent(__libmansuffix__),
-XUnmapEvent(__libmansuffix__),
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XVisibilityEvent __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XVisibilityEvent \- VisibilityNotify event structure
+.SH STRUCTURES
+The structure for
+.ZN VisibilityNotify
+events contains:
+.LP
+.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
+When you receive this event,
+the structure members are set as follows.
+.LP
+The type member is set to the event type constant name that uniquely identifies
+it.
+For example, when the X server reports a
+.ZN GraphicsExpose
+event to a client application, it sends an
+.ZN XGraphicsExposeEvent
+structure with the type member set to
+.ZN GraphicsExpose .
+The display member is set to a pointer to the display the event was read on.
+The send_event member is set to
+.ZN True
+if the event came from a
+.ZN 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 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
+.ZN VisibilityUnobscured ,
+.ZN VisibilityPartiallyObscured ,
+or
+.ZN VisibilityFullyObscured .
+The X server ignores all of a window's subwindows
+when determining the visibility state of the window and processes
+.ZN 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
+.ZN XVisibilityEvent
+structure set to
+.ZN 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
+.ZN XVisibilityEvent
+structure set to
+.ZN 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
+.ZN XVisibilityEvent
+structure set to
+.ZN VisibilityFullyObscured .
+.SH "SEE ALSO"
+XAnyEvent(__libmansuffix__),
+XButtonEvent(__libmansuffix__),
+XCreateWindowEvent(__libmansuffix__),
+XCirculateEvent(__libmansuffix__),
+XCirculateRequestEvent(__libmansuffix__),
+XColormapEvent(__libmansuffix__),
+XConfigureEvent(__libmansuffix__),
+XConfigureRequestEvent(__libmansuffix__),
+XCrossingEvent(__libmansuffix__),
+XDestroyWindowEvent(__libmansuffix__),
+XErrorEvent(__libmansuffix__),
+XExposeEvent(__libmansuffix__),
+XFocusChangeEvent(__libmansuffix__),
+XGraphicsExposeEvent(__libmansuffix__),
+XGravityEvent(__libmansuffix__),
+XKeymapEvent(__libmansuffix__),
+XMapEvent(__libmansuffix__),
+XMapRequestEvent(__libmansuffix__),
+XPropertyEvent(__libmansuffix__),
+XReparentEvent(__libmansuffix__),
+XResizeRequestEvent(__libmansuffix__),
+XSelectionClearEvent(__libmansuffix__),
+XSelectionEvent(__libmansuffix__),
+XSelectionRequestEvent(__libmansuffix__),
+XUnmapEvent(__libmansuffix__),
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XWarpPointer.man b/libX11/man/XWarpPointer.man
index 930e8a563..513700fbe 100644
--- a/libX11/man/XWarpPointer.man
+++ b/libX11/man/XWarpPointer.man
@@ -1,217 +1,217 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XWarpPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XWarpPointer \- move pointer
-.SH SYNTAX
-.HP
-int XWarpPointer\^(\^Display *\fIdisplay\fP\^, Window \fIsrc_w\fP\^, Window
-\fIdest_w\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, unsigned int
-\fIsrc_width\fP\^, unsigned int \fIsrc_height\fP\^, int \fIdest_x\fP\^, int
-\fIdest_y\fP\^);
-.SH ARGUMENTS
-.IP \fIdest_w\fP 1i
-Specifies the destination window or
-.ZN None .
-.IP \fIdest_x\fP 1i
-.br
-.ns
-.IP \fIdest_y\fP 1i
-Specify the x and y coordinates within the destination window.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.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 \fIsrc_w\fP 1i
-Specifies the source window or
-.ZN None .
-.SH DESCRIPTION
-If dest_w is
-.ZN None ,
-.ZN 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,
-.ZN 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
-.ZN 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
-.ZN XWarpPointer
-can generate a
-.ZN BadWindow
-error.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadWindow
-A value for a Window argument does not name a defined Window.
-.SH "SEE ALSO"
-XSetInputFocus(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XWarpPointer __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XWarpPointer \- move pointer
+.SH SYNTAX
+.HP
+int XWarpPointer\^(\^Display *\fIdisplay\fP\^, Window \fIsrc_w\fP\^, Window
+\fIdest_w\fP\^, int \fIsrc_x\fP\^, int \fIsrc_y\fP\^, unsigned int
+\fIsrc_width\fP\^, unsigned int \fIsrc_height\fP\^, int \fIdest_x\fP\^, int
+\fIdest_y\fP\^);
+.SH ARGUMENTS
+.IP \fIdest_w\fP 1i
+Specifies the destination window or
+.ZN None .
+.IP \fIdest_x\fP 1i
+.br
+.ns
+.IP \fIdest_y\fP 1i
+Specify the x and y coordinates within the destination window.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.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 \fIsrc_w\fP 1i
+Specifies the source window or
+.ZN None .
+.SH DESCRIPTION
+If dest_w is
+.ZN None ,
+.ZN 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,
+.ZN 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
+.ZN 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
+.ZN XWarpPointer
+can generate a
+.ZN BadWindow
+error.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadWindow
+A value for a Window argument does not name a defined Window.
+.SH "SEE ALSO"
+XSetInputFocus(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsAllocColor.man b/libX11/man/XcmsAllocColor.man
index 0cef6a8ae..57d742c3b 100644
--- a/libX11/man/XcmsAllocColor.man
+++ b/libX11/man/XcmsAllocColor.man
@@ -1,255 +1,255 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsAllocColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsAllocColor, XcmsAllocNamedColor \- allocate colors
-.SH SYNTAX
-.HP
-Status XcmsAllocColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
-XcmsColor *\fIcolor_in_out\fP\^, XcmsColorFormat \fIresult_format\fP\^);
-.HP
-Status XcmsAllocNamedColor\^(\^Display *\fIdisplay\fP\^, Colormap
-\fIcolormap\fP\^, char *\fIcolor_string\fP\^, XcmsColor
-*\fIcolor_screen_return\fP\^, XcmsColor *\fIcolor_exact_return\fP\^, XcmsColorFormat \fIresult_format\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIcolormap\fP 1i
-Specifies the colormap.
-.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_in_out\fP 1i
-Specifies the color to allocate and returns the pixel and color
-that is actually used in the colormap.
-.IP \fIcolor_screen_return\fP 1i
-Returns the pixel value of the color cell and color specification
-that actually is stored for that cell.
-.ds St \ whose color definition structure is to be returned
-.IP \fIcolor_string\fP 1i
-Specifies the color string\*(St.
-.IP \fIresult_format\fP 1i
-Specifies the color format for the returned color specification.
-.SH DESCRIPTION
-The
-.ZN XcmsAllocColor
-function is similar to
-.ZN XAllocColor
-except the color can be specified in any format.
-The
-.ZN XcmsAllocColor
-function ultimately calls
-.ZN XAllocColor
-to allocate a read-only color cell (colormap entry) with the specified color.
-.ZN XcmsAllocColor
-first converts the color specified
-to an RGB value and then passes this to
-.ZN XAllocColor .
-.ZN 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
-.ZN 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
-.ZN XcmsRGBFormat .
-The corresponding colormap cell is read-only.
-If this routine returns
-.ZN XcmsFailure ,
-the color_in_out color specification is left unchanged.
-.LP
-.ZN XcmsAllocColor
-can generate a
-.ZN BadColor
-errors.
-.LP
-The
-.ZN XcmsAllocNamedColor
-function is similar to
-.ZN XAllocNamedColor
-except that the color returned can be in any format specified.
-This function
-ultimately calls
-.ZN XAllocColor
-to allocate a read-only color cell with
-the color specified by a color string.
-The color string is parsed into an
-.ZN XcmsColor
-structure (see
-.ZN XcmsLookupColor ),
-converted
-to an RGB value, and finally passed to
-.ZN 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
-.ZN 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
-.ZN 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
-.LP
-.ZN XcmsAllocNamedColor
-can generate a
-.ZN BadColor
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.SH "SEE ALSO"
-XcmsQueryColor(__libmansuffix__),
-XcmsStoreColor(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsAllocColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsAllocColor, XcmsAllocNamedColor \- allocate colors
+.SH SYNTAX
+.HP
+Status XcmsAllocColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
+XcmsColor *\fIcolor_in_out\fP\^, XcmsColorFormat \fIresult_format\fP\^);
+.HP
+Status XcmsAllocNamedColor\^(\^Display *\fIdisplay\fP\^, Colormap
+\fIcolormap\fP\^, char *\fIcolor_string\fP\^, XcmsColor
+*\fIcolor_screen_return\fP\^, XcmsColor *\fIcolor_exact_return\fP\^, XcmsColorFormat \fIresult_format\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.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_in_out\fP 1i
+Specifies the color to allocate and returns the pixel and color
+that is actually used in the colormap.
+.IP \fIcolor_screen_return\fP 1i
+Returns the pixel value of the color cell and color specification
+that actually is stored for that cell.
+.ds St \ whose color definition structure is to be returned
+.IP \fIcolor_string\fP 1i
+Specifies the color string\*(St.
+.IP \fIresult_format\fP 1i
+Specifies the color format for the returned color specification.
+.SH DESCRIPTION
+The
+.ZN XcmsAllocColor
+function is similar to
+.ZN XAllocColor
+except the color can be specified in any format.
+The
+.ZN XcmsAllocColor
+function ultimately calls
+.ZN XAllocColor
+to allocate a read-only color cell (colormap entry) with the specified color.
+.ZN XcmsAllocColor
+first converts the color specified
+to an RGB value and then passes this to
+.ZN XAllocColor .
+.ZN 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
+.ZN 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
+.ZN XcmsRGBFormat .
+The corresponding colormap cell is read-only.
+If this routine returns
+.ZN XcmsFailure ,
+the color_in_out color specification is left unchanged.
+.LP
+.ZN XcmsAllocColor
+can generate a
+.ZN BadColor
+errors.
+.LP
+The
+.ZN XcmsAllocNamedColor
+function is similar to
+.ZN XAllocNamedColor
+except that the color returned can be in any format specified.
+This function
+ultimately calls
+.ZN XAllocColor
+to allocate a read-only color cell with
+the color specified by a color string.
+The color string is parsed into an
+.ZN XcmsColor
+structure (see
+.ZN XcmsLookupColor ),
+converted
+to an RGB value, and finally passed to
+.ZN 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
+.ZN 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
+.ZN 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
+.LP
+.ZN XcmsAllocNamedColor
+can generate a
+.ZN BadColor
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.SH "SEE ALSO"
+XcmsQueryColor(__libmansuffix__),
+XcmsStoreColor(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsCCCOfColormap.man b/libX11/man/XcmsCCCOfColormap.man
index 26ce02779..95310e645 100644
--- a/libX11/man/XcmsCCCOfColormap.man
+++ b/libX11/man/XcmsCCCOfColormap.man
@@ -1,187 +1,187 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsCCCOfColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsCCCOfColormap, XcmsSetCCCOfColormap \- query and modify CCC of a colormap
-.SH SYNTAX
-.HP
-XcmsCCC XcmsCCCOfColormap\^(\^Display *\fIdisplay\fP\^, Colormap
-\fIcolormap\fP\^);
-.HP
-XcmsCCC XcmsSetCCCOfColormap\^(\^Display *\fIdisplay\fP\^, Colormap
-\fIcolormap\fP\^, XcmsCCC \fIccc\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIccc\fP 1i
-Specifies the CCC.
-.IP \fIcolormap\fP 1i
-Specifies the colormap.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XcmsSetCCCOfColormap ,
-this CCC is used when the specified colormap is used as an argument
-to color functions.
-.LP
-The
-.ZN 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
-.ZN 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.
-.SH "SEE ALSO"
-DisplayOfCCC(__libmansuffix__),
-XcmsConvertColors(__libmansuffix__),
-XcmsCreateCCC(__libmansuffix__),
-XcmsDefaultCCC(__libmansuffix__),
-XcmsSetWhitePoint(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsCCCOfColormap __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsCCCOfColormap, XcmsSetCCCOfColormap \- query and modify CCC of a colormap
+.SH SYNTAX
+.HP
+XcmsCCC XcmsCCCOfColormap\^(\^Display *\fIdisplay\fP\^, Colormap
+\fIcolormap\fP\^);
+.HP
+XcmsCCC XcmsSetCCCOfColormap\^(\^Display *\fIdisplay\fP\^, Colormap
+\fIcolormap\fP\^, XcmsCCC \fIccc\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XcmsSetCCCOfColormap ,
+this CCC is used when the specified colormap is used as an argument
+to color functions.
+.LP
+The
+.ZN 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
+.ZN 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.
+.SH "SEE ALSO"
+DisplayOfCCC(__libmansuffix__),
+XcmsConvertColors(__libmansuffix__),
+XcmsCreateCCC(__libmansuffix__),
+XcmsDefaultCCC(__libmansuffix__),
+XcmsSetWhitePoint(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsCIELabQueryMaxC.man b/libX11/man/XcmsCIELabQueryMaxC.man
index 03beb48c4..c98099116 100644
--- a/libX11/man/XcmsCIELabQueryMaxC.man
+++ b/libX11/man/XcmsCIELabQueryMaxC.man
@@ -1,221 +1,221 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsCIELabQueryMax __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsCIELabQueryMaxC, XcmsCIELabQueryMaxL, XcmsCIELabQueryMaxLC, XcmsCIELabQueryMinL \- obtain the CIE L*a*b* coordinates
-.SH SYNTAX
-.HP
-Status XcmsCIELabQueryMaxC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
-\fIhue_angle\fP\^, XcmsFloat \fIL_star\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsCIELabQueryMaxL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
-\fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsCIELabQueryMaxLC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
-\fIhue_angle\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsCIELabQueryMinL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
-\fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.SH ARGUMENTS
-.IP \fIccc\fP 1i
-Specifies the CCC.
-Note that the CCC's Client White Point and White Point Adjustment procedures
-are ignored.
-.ds Ch maximum lightness (MaxL) or minimum lightness (MinL)
-.IP \fIchroma\fP 1i
-Specifies the chroma at which to find \*(Ch.
-.ds Lc maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \
-or minimum lightness (MinL)
-.ds lC hue angle and lightness (MaxC), hue angle and chroma (MaxL and MinL), \
-or hue angle (MaxLC)
-.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.
-.ds Ha maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \
-or minimum lightness (MinL)
-.IP \fIhue_angle\fP 1i
-Specifies the hue angle (in degrees) at which to find \*(Ha.
-.ds Ls maximum chroma (MaxC)
-.IP \fIL_star\fP 1i
-Specifies the lightness (L*) at which to find \*(Ls.
-.SH DESCRIPTION
-The
-.ZN 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
-The
-.ZN 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
-.ZN XcmsFailure
-return value usually indicates that the given chroma
-is beyond maximum for the given hue angle.
-.LP
-The
-.ZN 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.
-.LP
-The
-.ZN 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
-.ZN XcmsFailure
-return value usually indicates that the given chroma
-is beyond maximum for the given hue angle.
-.SH "SEE ALSO"
-XcmsCIELuvQueryMaxC(__libmansuffix__),
-XcmsTekHVCQueryMaxC(__libmansuffix__),
-XcmsQueryBlack(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsCIELabQueryMax __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsCIELabQueryMaxC, XcmsCIELabQueryMaxL, XcmsCIELabQueryMaxLC, XcmsCIELabQueryMinL \- obtain the CIE L*a*b* coordinates
+.SH SYNTAX
+.HP
+Status XcmsCIELabQueryMaxC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
+\fIhue_angle\fP\^, XcmsFloat \fIL_star\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsCIELabQueryMaxL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
+\fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsCIELabQueryMaxLC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
+\fIhue_angle\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsCIELabQueryMinL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
+\fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.SH ARGUMENTS
+.IP \fIccc\fP 1i
+Specifies the CCC.
+Note that the CCC's Client White Point and White Point Adjustment procedures
+are ignored.
+.ds Ch maximum lightness (MaxL) or minimum lightness (MinL)
+.IP \fIchroma\fP 1i
+Specifies the chroma at which to find \*(Ch.
+.ds Lc maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \
+or minimum lightness (MinL)
+.ds lC hue angle and lightness (MaxC), hue angle and chroma (MaxL and MinL), \
+or hue angle (MaxLC)
+.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.
+.ds Ha maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \
+or minimum lightness (MinL)
+.IP \fIhue_angle\fP 1i
+Specifies the hue angle (in degrees) at which to find \*(Ha.
+.ds Ls maximum chroma (MaxC)
+.IP \fIL_star\fP 1i
+Specifies the lightness (L*) at which to find \*(Ls.
+.SH DESCRIPTION
+The
+.ZN 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
+The
+.ZN 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
+.ZN XcmsFailure
+return value usually indicates that the given chroma
+is beyond maximum for the given hue angle.
+.LP
+The
+.ZN 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.
+.LP
+The
+.ZN 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
+.ZN XcmsFailure
+return value usually indicates that the given chroma
+is beyond maximum for the given hue angle.
+.SH "SEE ALSO"
+XcmsCIELuvQueryMaxC(__libmansuffix__),
+XcmsTekHVCQueryMaxC(__libmansuffix__),
+XcmsQueryBlack(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsCIELuvQueryMaxC.man b/libX11/man/XcmsCIELuvQueryMaxC.man
index 41113dd4f..33bdb3004 100644
--- a/libX11/man/XcmsCIELuvQueryMaxC.man
+++ b/libX11/man/XcmsCIELuvQueryMaxC.man
@@ -1,221 +1,221 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsCIELuvQueryMaxC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsCIELuvQueryMaxC, XcmsCIELuvQueryMaxL, XcmsCIELuvQueryMaxLC, XcmsCIELuvQueryMinL \- obtain the CIE L*u*v* coordinates
-.SH SYNTAX
-.HP
-Status XcmsCIELuvQueryMaxC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
-\fIhue_angle\fP\^, XcmsFloat \fIL_star\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsCIELuvQueryMaxL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
-\fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsCIELuvQueryMaxLC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
-\fIhue_angle\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsCIELuvQueryMinL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
-\fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.SH ARGUMENTS
-.IP \fIccc\fP 1i
-Specifies the CCC.
-Note that the CCC's Client White Point and White Point Adjustment procedures
-are ignored.
-.ds Ch maximum lightness (MaxL) or minimum lightness (MinL)
-.IP \fIchroma\fP 1i
-Specifies the chroma at which to find \*(Ch.
-.ds Lc maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \
-or minimum lightness (MinL)
-.ds lC hue angle and lightness (MaxC), hue angle and chroma (MaxL and MinL), \
-or hue angle (MaxLC)
-.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.
-.ds Ha maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \
-or minimum lightness (MinL)
-.IP \fIhue_angle\fP 1i
-Specifies the hue angle (in degrees) at which to find \*(Ha.
-.ds Ls maximum chroma (MaxC) or maximum lightness (MaxL)
-.IP \fIL_star\fP 1i
-Specifies the lightness (L*) at which to find \*(Ls.
-.SH DESCRIPTION
-The
-.ZN 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.
-.LP
-The
-.ZN 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
-.ZN XcmsFailure
-return value usually indicates that the given chroma
-is beyond maximum for the given hue angle.
-.LP
-The
-.ZN 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.
-.LP
-The
-.ZN 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
-.ZN XcmsFailure
-return value usually indicates that the given chroma
-is beyond maximum for the given hue angle.
-.SH "SEE ALSO"
-XcmsCIELabQueryMaxC(__libmansuffix__),
-XcmsTekHVCQueryMaxC(__libmansuffix__),
-XcmsQueryBlack(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsCIELuvQueryMaxC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsCIELuvQueryMaxC, XcmsCIELuvQueryMaxL, XcmsCIELuvQueryMaxLC, XcmsCIELuvQueryMinL \- obtain the CIE L*u*v* coordinates
+.SH SYNTAX
+.HP
+Status XcmsCIELuvQueryMaxC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
+\fIhue_angle\fP\^, XcmsFloat \fIL_star\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsCIELuvQueryMaxL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
+\fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsCIELuvQueryMaxLC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
+\fIhue_angle\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsCIELuvQueryMinL\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
+\fIhue_angle\fP\^, XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.SH ARGUMENTS
+.IP \fIccc\fP 1i
+Specifies the CCC.
+Note that the CCC's Client White Point and White Point Adjustment procedures
+are ignored.
+.ds Ch maximum lightness (MaxL) or minimum lightness (MinL)
+.IP \fIchroma\fP 1i
+Specifies the chroma at which to find \*(Ch.
+.ds Lc maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \
+or minimum lightness (MinL)
+.ds lC hue angle and lightness (MaxC), hue angle and chroma (MaxL and MinL), \
+or hue angle (MaxLC)
+.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.
+.ds Ha maximum chroma (MaxC and MaxLC), maximum lightness (MaxL), \
+or minimum lightness (MinL)
+.IP \fIhue_angle\fP 1i
+Specifies the hue angle (in degrees) at which to find \*(Ha.
+.ds Ls maximum chroma (MaxC) or maximum lightness (MaxL)
+.IP \fIL_star\fP 1i
+Specifies the lightness (L*) at which to find \*(Ls.
+.SH DESCRIPTION
+The
+.ZN 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.
+.LP
+The
+.ZN 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
+.ZN XcmsFailure
+return value usually indicates that the given chroma
+is beyond maximum for the given hue angle.
+.LP
+The
+.ZN 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.
+.LP
+The
+.ZN 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
+.ZN XcmsFailure
+return value usually indicates that the given chroma
+is beyond maximum for the given hue angle.
+.SH "SEE ALSO"
+XcmsCIELabQueryMaxC(__libmansuffix__),
+XcmsTekHVCQueryMaxC(__libmansuffix__),
+XcmsQueryBlack(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsColor.man b/libX11/man/XcmsColor.man
index 9bd38f583..273b56fe0 100644
--- a/libX11/man/XcmsColor.man
+++ b/libX11/man/XcmsColor.man
@@ -1,263 +1,263 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.de EX
-.sp
-.nf
-.ft CW
-..
-.de EE
-.ft R
-.fi
-.sp
-..
-.TH XcmsColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsColor, XcmsRGB, XcmsRGBi, XcmsCIEXYZ, XcmsCIEuvY, XcmsCIExyY, XcmsCIELab, XcmsCIELuv, XcmsTekHVC, XcmsPad \- Xcms color structure
-.SH STRUCTURES
-The structure for
-.ZN XcmsColor
-contains:
-.LP
-.EX
-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 */
-.EE
-.LP
-.EX
-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 */
-.EE
-.LP
-.EX
-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 */
-.EE
-.LP
-.EX
-typedef struct {
- XcmsFloat X;
- XcmsFloat Y; /\&* 0.0 to 1.0 */
- XcmsFloat Z;
-} XcmsCIEXYZ; /\&* CIE XYZ */
-.EE
-.LP
-.EX
-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 */
-.EE
-.LP
-.EX
-typedef struct {
- XcmsFloat x; /\&* 0.0 to ~.75 */
- XcmsFloat y; /\&* 0.0 to ~.85 */
- XcmsFloat Y; /\&* 0.0 to 1.0 */
-} XcmsCIExyY; /\&* CIE xyY */
-.EE
-.LP
-.EX
-typedef struct {
- XcmsFloat L_star; /\&* 0.0 to 100.0 */
- XcmsFloat a_star;
- XcmsFloat b_star;
-} XcmsCIELab; /\&* CIE L*a*b* */
-.EE
-.LP
-.EX
-typedef struct {
- XcmsFloat L_star; /\&* 0.0 to 100.0 */
- XcmsFloat u_star;
- XcmsFloat v_star;
-} XcmsCIELuv; /\&* CIE L*u*v* */
-.EE
-.LP
-.EX
-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 */
-.EE
-.LP
-.EX
-typedef struct {
- XcmsFloat pad0;
- XcmsFloat pad1;
- XcmsFloat pad2;
- XcmsFloat pad3;
-} XcmsPad; /\&* four doubles */
-.EE
-.SH DESCRIPTION
-The
-.ZN XcmsColor
-structure contains a union of substructures,
-each supporting color specification encoding for a particular color space.
-.SH "SEE ALSO"
-XcmsAllocColor(__libmansuffix__),
-XcmsStoreColor(__libmansuffix__),
-XcmsConvertColors(__libmansuffix__),
-.LP
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.de EX
+.sp
+.nf
+.ft CW
+..
+.de EE
+.ft R
+.fi
+.sp
+..
+.TH XcmsColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsColor, XcmsRGB, XcmsRGBi, XcmsCIEXYZ, XcmsCIEuvY, XcmsCIExyY, XcmsCIELab, XcmsCIELuv, XcmsTekHVC, XcmsPad \- Xcms color structure
+.SH STRUCTURES
+The structure for
+.ZN XcmsColor
+contains:
+.LP
+.EX
+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 */
+.EE
+.LP
+.EX
+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 */
+.EE
+.LP
+.EX
+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 */
+.EE
+.LP
+.EX
+typedef struct {
+ XcmsFloat X;
+ XcmsFloat Y; /\&* 0.0 to 1.0 */
+ XcmsFloat Z;
+} XcmsCIEXYZ; /\&* CIE XYZ */
+.EE
+.LP
+.EX
+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 */
+.EE
+.LP
+.EX
+typedef struct {
+ XcmsFloat x; /\&* 0.0 to ~.75 */
+ XcmsFloat y; /\&* 0.0 to ~.85 */
+ XcmsFloat Y; /\&* 0.0 to 1.0 */
+} XcmsCIExyY; /\&* CIE xyY */
+.EE
+.LP
+.EX
+typedef struct {
+ XcmsFloat L_star; /\&* 0.0 to 100.0 */
+ XcmsFloat a_star;
+ XcmsFloat b_star;
+} XcmsCIELab; /\&* CIE L*a*b* */
+.EE
+.LP
+.EX
+typedef struct {
+ XcmsFloat L_star; /\&* 0.0 to 100.0 */
+ XcmsFloat u_star;
+ XcmsFloat v_star;
+} XcmsCIELuv; /\&* CIE L*u*v* */
+.EE
+.LP
+.EX
+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 */
+.EE
+.LP
+.EX
+typedef struct {
+ XcmsFloat pad0;
+ XcmsFloat pad1;
+ XcmsFloat pad2;
+ XcmsFloat pad3;
+} XcmsPad; /\&* four doubles */
+.EE
+.SH DESCRIPTION
+The
+.ZN XcmsColor
+structure contains a union of substructures,
+each supporting color specification encoding for a particular color space.
+.SH "SEE ALSO"
+XcmsAllocColor(__libmansuffix__),
+XcmsStoreColor(__libmansuffix__),
+XcmsConvertColors(__libmansuffix__),
+.LP
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsConvertColors.man b/libX11/man/XcmsConvertColors.man
index 1c4c416b5..7c71f4d65 100644
--- a/libX11/man/XcmsConvertColors.man
+++ b/libX11/man/XcmsConvertColors.man
@@ -1,201 +1,201 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsConvertColors __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsConvertColors \- convert CCC color specifications
-.SH SYNTAX
-.HP
-Status XcmsConvertColors\^(\^XcmsCCC \fIccc\fP\^, XcmsColor
-\fIcolors_in_out\fP\^[\^]\^, unsigned int \fIncolors\fP\^, XcmsColorFormat
-\fItarget_format\fP\^, Bool \fIcompression_flags_return\fP\^[\^]\^);
-.SH ARGUMENTS
-.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 \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
-.ZN True
-if the corresponding color was compressed and
-.ZN False
-otherwise.
-Pass NULL if the compression status is not useful.
-.IP \fIncolors\fP 1i
-Specifies the number of
-.ZN XcmsColor
-structures in the color-specification array.
-.IP \fItarget_format\fP 1i
-Specifies the target color specification format.
-.SH DESCRIPTION
-The
-.ZN XcmsConvertColors
-function converts the color specifications in the specified array of
-.ZN XcmsColor
-structures from their current format to a single target format,
-using the specified CCC.
-When the return value is
-.ZN 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,
-.ZN XcmsRGBiFormat ,
-.ZN XcmsRGBFormat ),
-all specifications are converted to CIE XYZ format and then to the target
-device-dependent format.
-.SH "SEE ALSO"
-DisplayOfCCC(__libmansuffix__),
-XcmsCCCOfColormap(__libmansuffix__),
-XcmsCreateCCC(__libmansuffix__),
-XcmsDefaultCCC(__libmansuffix__),
-XcmsSetWhitePoint(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsConvertColors __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsConvertColors \- convert CCC color specifications
+.SH SYNTAX
+.HP
+Status XcmsConvertColors\^(\^XcmsCCC \fIccc\fP\^, XcmsColor
+\fIcolors_in_out\fP\^[\^]\^, unsigned int \fIncolors\fP\^, XcmsColorFormat
+\fItarget_format\fP\^, Bool \fIcompression_flags_return\fP\^[\^]\^);
+.SH ARGUMENTS
+.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 \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
+.ZN True
+if the corresponding color was compressed and
+.ZN False
+otherwise.
+Pass NULL if the compression status is not useful.
+.IP \fIncolors\fP 1i
+Specifies the number of
+.ZN XcmsColor
+structures in the color-specification array.
+.IP \fItarget_format\fP 1i
+Specifies the target color specification format.
+.SH DESCRIPTION
+The
+.ZN XcmsConvertColors
+function converts the color specifications in the specified array of
+.ZN XcmsColor
+structures from their current format to a single target format,
+using the specified CCC.
+When the return value is
+.ZN 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,
+.ZN XcmsRGBiFormat ,
+.ZN XcmsRGBFormat ),
+all specifications are converted to CIE XYZ format and then to the target
+device-dependent format.
+.SH "SEE ALSO"
+DisplayOfCCC(__libmansuffix__),
+XcmsCCCOfColormap(__libmansuffix__),
+XcmsCreateCCC(__libmansuffix__),
+XcmsDefaultCCC(__libmansuffix__),
+XcmsSetWhitePoint(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsCreateCCC.man b/libX11/man/XcmsCreateCCC.man
index 65465d899..54a15075f 100644
--- a/libX11/man/XcmsCreateCCC.man
+++ b/libX11/man/XcmsCreateCCC.man
@@ -1,202 +1,202 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsCreateCCC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsCreateCCC, XcmsFreeCCC \- creating and destroying CCCs
-.SH SYNTAX
-.HP
-XcmsCCC XcmsCreateCCC\^(\^Display *\fIdisplay\fP\^, int \fIscreen_number\fP\^,
-Visual *\fIvisual\fP\^, XcmsColor *\fIclient_white_point\fP\^,
-XcmsCompressionProc \fIcompression_proc\fP\^, XPointer
-\fIcompression_client_data\fP\^, XcmsWhiteAdjustProc
-\fIwhite_adjust_proc\fP\^, XPointer \fIwhite_adjust_client_data\fP\^);
-.LP
-void XcmsFreeCCC\^(\^XcmsCCC \fIccc\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIccc\fP 1i
-Specifies the CCC.
-.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_client_data\fP 1i
-Specifies client data for use by the gamut compression procedure or NULL.
-.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
-.ZN XcmsFailure .
-.IP \fIscreen_number\fP 1i
-Specifies the appropriate screen number on the host server.
-.IP \fIvisual\fP 1i
-Specifies the visual type.
-.IP \fIwhite_adjust_client_data\fP 1i
-Specifies client data for use with the white point adjustment 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.
-.SH DESCRIPTION
-The
-.ZN XcmsCreateCCC
-function creates a CCC for the specified display, screen, and visual.
-.LP
-The
-.ZN XcmsFreeCCC
-function frees the memory used for the specified CCC.
-Note that default CCCs and those currently associated with colormaps
-are ignored.
-.SH "SEE ALSO"
-DisplayOfCCC(__libmansuffix__),
-XcmsCCCOfColormap(__libmansuffix__),
-XcmsConvertColors(__libmansuffix__),
-XcmsDefaultCCC(__libmansuffix__),
-XcmsSetWhitePoint(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsCreateCCC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsCreateCCC, XcmsFreeCCC \- creating and destroying CCCs
+.SH SYNTAX
+.HP
+XcmsCCC XcmsCreateCCC\^(\^Display *\fIdisplay\fP\^, int \fIscreen_number\fP\^,
+Visual *\fIvisual\fP\^, XcmsColor *\fIclient_white_point\fP\^,
+XcmsCompressionProc \fIcompression_proc\fP\^, XPointer
+\fIcompression_client_data\fP\^, XcmsWhiteAdjustProc
+\fIwhite_adjust_proc\fP\^, XPointer \fIwhite_adjust_client_data\fP\^);
+.LP
+void XcmsFreeCCC\^(\^XcmsCCC \fIccc\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.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_client_data\fP 1i
+Specifies client data for use by the gamut compression procedure or NULL.
+.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
+.ZN XcmsFailure .
+.IP \fIscreen_number\fP 1i
+Specifies the appropriate screen number on the host server.
+.IP \fIvisual\fP 1i
+Specifies the visual type.
+.IP \fIwhite_adjust_client_data\fP 1i
+Specifies client data for use with the white point adjustment 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.
+.SH DESCRIPTION
+The
+.ZN XcmsCreateCCC
+function creates a CCC for the specified display, screen, and visual.
+.LP
+The
+.ZN XcmsFreeCCC
+function frees the memory used for the specified CCC.
+Note that default CCCs and those currently associated with colormaps
+are ignored.
+.SH "SEE ALSO"
+DisplayOfCCC(__libmansuffix__),
+XcmsCCCOfColormap(__libmansuffix__),
+XcmsConvertColors(__libmansuffix__),
+XcmsDefaultCCC(__libmansuffix__),
+XcmsSetWhitePoint(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsDefaultCCC.man b/libX11/man/XcmsDefaultCCC.man
index 64c9a91b3..d4d7732bb 100644
--- a/libX11/man/XcmsDefaultCCC.man
+++ b/libX11/man/XcmsDefaultCCC.man
@@ -1,169 +1,169 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsDefaultCCC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsDefaultCCC \- obtain the default CCC for a screen
-.SH SYNTAX
-.HP
-XcmsCCC XcmsDefaultCCC\^(\^Display *\fIdisplay\fP\^, int
-\fIscreen_number\fP\^);
-.SH ARGUMENTS
-.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.
-.SH DESCRIPTION
-The
-.ZN 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.
-.SH "SEE ALSO"
-DisplayOfCCC(__libmansuffix__),
-XcmsCCCOfColormap(__libmansuffix__),
-XcmsConvertColors(__libmansuffix__),
-XcmsCreateCCC(__libmansuffix__),
-XcmsSetWhitePoint(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsDefaultCCC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsDefaultCCC \- obtain the default CCC for a screen
+.SH SYNTAX
+.HP
+XcmsCCC XcmsDefaultCCC\^(\^Display *\fIdisplay\fP\^, int
+\fIscreen_number\fP\^);
+.SH ARGUMENTS
+.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.
+.SH DESCRIPTION
+The
+.ZN 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.
+.SH "SEE ALSO"
+DisplayOfCCC(__libmansuffix__),
+XcmsCCCOfColormap(__libmansuffix__),
+XcmsConvertColors(__libmansuffix__),
+XcmsCreateCCC(__libmansuffix__),
+XcmsSetWhitePoint(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsQueryBlack.man b/libX11/man/XcmsQueryBlack.man
index baa82942d..3874acedd 100644
--- a/libX11/man/XcmsQueryBlack.man
+++ b/libX11/man/XcmsQueryBlack.man
@@ -1,205 +1,205 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsQueryBlack __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsQueryBlack, XcmsQueryBlue, XcmsQueryGreen, XcmsQueryRed, XcmsQueryWhite \- obtain black, blue, green, red, and white CCC color specifications
-.SH SYNTAX
-.HP
-Status XcmsQueryBlack\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat
-\fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsQueryBlue\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat
-\fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsQueryGreen\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat
-\fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsQueryRed\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat
-\fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsQueryWhite\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat
-\fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.SH ARGUMENTS
-.IP \fIccc\fP 1i
-Specifies the CCC.
-Note that the CCC's Client White Point and White Point Adjustment procedures
-are ignored.
-.ds Cs
-.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.
-.IP \fItarget_format\fP 1i
-Specifies the target color specification format.
-.SH DESCRIPTION
-The
-.ZN XcmsQueryBlack
-function returns the color specification in the specified target format
-for zero-intensity red, green, and blue.
-.LP
-The
-.ZN XcmsQueryBlue
-function returns the color specification in the specified target format
-for full-intensity blue while red and green are zero.
-.LP
-The
-.ZN XcmsQueryGreen
-function returns the color specification in the specified target format
-for full-intensity green while red and blue are zero.
-.LP
-The
-.ZN XcmsQueryRed
-function returns the color specification in the specified target format
-for full-intensity red while green and blue are zero.
-.LP
-The
-.ZN XcmsQueryWhite
-function returns the color specification in the specified target format
-for full-intensity red, green, and blue.
-.SH "SEE ALSO"
-XcmsCIELabQueryMaxC(__libmansuffix__),
-XcmsCIELuvQueryMaxC(__libmansuffix__),
-XcmsTekHVCQueryMaxC(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsQueryBlack __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsQueryBlack, XcmsQueryBlue, XcmsQueryGreen, XcmsQueryRed, XcmsQueryWhite \- obtain black, blue, green, red, and white CCC color specifications
+.SH SYNTAX
+.HP
+Status XcmsQueryBlack\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat
+\fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsQueryBlue\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat
+\fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsQueryGreen\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat
+\fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsQueryRed\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat
+\fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsQueryWhite\^(\^XcmsCCC \fIccc\fP\^, XcmsColorFormat
+\fItarget_format\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.SH ARGUMENTS
+.IP \fIccc\fP 1i
+Specifies the CCC.
+Note that the CCC's Client White Point and White Point Adjustment procedures
+are ignored.
+.ds Cs
+.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.
+.IP \fItarget_format\fP 1i
+Specifies the target color specification format.
+.SH DESCRIPTION
+The
+.ZN XcmsQueryBlack
+function returns the color specification in the specified target format
+for zero-intensity red, green, and blue.
+.LP
+The
+.ZN XcmsQueryBlue
+function returns the color specification in the specified target format
+for full-intensity blue while red and green are zero.
+.LP
+The
+.ZN XcmsQueryGreen
+function returns the color specification in the specified target format
+for full-intensity green while red and blue are zero.
+.LP
+The
+.ZN XcmsQueryRed
+function returns the color specification in the specified target format
+for full-intensity red while green and blue are zero.
+.LP
+The
+.ZN XcmsQueryWhite
+function returns the color specification in the specified target format
+for full-intensity red, green, and blue.
+.SH "SEE ALSO"
+XcmsCIELabQueryMaxC(__libmansuffix__),
+XcmsCIELuvQueryMaxC(__libmansuffix__),
+XcmsTekHVCQueryMaxC(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsQueryColor.man b/libX11/man/XcmsQueryColor.man
index 61fa50fb0..9cba008b0 100644
--- a/libX11/man/XcmsQueryColor.man
+++ b/libX11/man/XcmsQueryColor.man
@@ -1,266 +1,266 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsQueryColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsQueryColor, XcmsQueryColors, XcmsLookupColor \- obtain color values
-.SH SYNTAX
-.HP
-Status XcmsQueryColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
-XcmsColor *\fIcolor_in_out\fP\^, XcmsColorFormat \fIresult_format\fP\^);
-.HP
-Status XcmsQueryColors\^(\^Display *\fIdisplay\fP\^, Colormap
-\fIcolormap\fP\^, XcmsColor \fIcolors_in_out\fP\^[\^]\^, unsigned int
-\fIncolors\fP\^, XcmsColorFormat \fIresult_format\fP\^);
-.HP
-Status XcmsLookupColor\^(\^Display *\fIdisplay\fP\^, Colormap
-\fIcolormap\fP\^, char *\fIcolor_string\fP\^, XcmsColor
-*\fIcolor_exact_return\fP\^, XcmsColor *\fIcolor_screen_return\fP\^,
-XcmsColorFormat \fIresult_format\fP\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIcolormap\fP 1i
-Specifies the colormap.
-.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_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
-.ZN XcmsColor
-structure.
-.IP \fIcolor_screen_return\fP 1i
-Returns the color that can be reproduced on the screen.
-.ds St
-.IP \fIcolor_string\fP 1i
-Specifies the color string\*(St.
-.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
-.ZN 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
-.ZN XcmsUndefinedFormat
-and the color string contains a color name,
-the specification is returned in the format used
-to store the color in the database.
-.IP \fIncolors\fP 1i
-Specifies the number of
-.ZN XcmsColor
-structures in the color-specification array.
-.SH DESCRIPTION
-The
-.ZN XcmsQueryColor
-function obtains the RGB value
-for the pixel value in the pixel member of the specified
-.ZN 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
-.ZN BadValue
-error results.
-The
-.ZN XcmsQueryColors
-function obtains the RGB values
-for pixel values in the pixel members of
-.ZN 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
-.ZN BadValue
-error results.
-If more than one pixel is in error,
-the one that gets reported is arbitrary.
-.LP
-.ZN XcmsQueryColor
-and
-.ZN XcmsQueryColors
-can generate
-.ZN BadColor
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN 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.
-.ZN XcmsLookupColor
-returns
-.ZN XcmsSuccess
-or
-.ZN XcmsSuccessWithCompression
-if the name is resolved; otherwise, it returns
-.ZN XcmsFailure .
-If
-.ZN XcmsSuccessWithCompression
-is returned, the color specification returned in
-color_screen_return is the result of gamut compression.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XcmsAllocColor(__libmansuffix__),
-XcmsStoreColor(__libmansuffix__),
-XQueryColor(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsQueryColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsQueryColor, XcmsQueryColors, XcmsLookupColor \- obtain color values
+.SH SYNTAX
+.HP
+Status XcmsQueryColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
+XcmsColor *\fIcolor_in_out\fP\^, XcmsColorFormat \fIresult_format\fP\^);
+.HP
+Status XcmsQueryColors\^(\^Display *\fIdisplay\fP\^, Colormap
+\fIcolormap\fP\^, XcmsColor \fIcolors_in_out\fP\^[\^]\^, unsigned int
+\fIncolors\fP\^, XcmsColorFormat \fIresult_format\fP\^);
+.HP
+Status XcmsLookupColor\^(\^Display *\fIdisplay\fP\^, Colormap
+\fIcolormap\fP\^, char *\fIcolor_string\fP\^, XcmsColor
+*\fIcolor_exact_return\fP\^, XcmsColor *\fIcolor_screen_return\fP\^,
+XcmsColorFormat \fIresult_format\fP\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolormap\fP 1i
+Specifies the colormap.
+.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_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
+.ZN XcmsColor
+structure.
+.IP \fIcolor_screen_return\fP 1i
+Returns the color that can be reproduced on the screen.
+.ds St
+.IP \fIcolor_string\fP 1i
+Specifies the color string\*(St.
+.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
+.ZN 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
+.ZN XcmsUndefinedFormat
+and the color string contains a color name,
+the specification is returned in the format used
+to store the color in the database.
+.IP \fIncolors\fP 1i
+Specifies the number of
+.ZN XcmsColor
+structures in the color-specification array.
+.SH DESCRIPTION
+The
+.ZN XcmsQueryColor
+function obtains the RGB value
+for the pixel value in the pixel member of the specified
+.ZN 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
+.ZN BadValue
+error results.
+The
+.ZN XcmsQueryColors
+function obtains the RGB values
+for pixel values in the pixel members of
+.ZN 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
+.ZN BadValue
+error results.
+If more than one pixel is in error,
+the one that gets reported is arbitrary.
+.LP
+.ZN XcmsQueryColor
+and
+.ZN XcmsQueryColors
+can generate
+.ZN BadColor
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN 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.
+.ZN XcmsLookupColor
+returns
+.ZN XcmsSuccess
+or
+.ZN XcmsSuccessWithCompression
+if the name is resolved; otherwise, it returns
+.ZN XcmsFailure .
+If
+.ZN XcmsSuccessWithCompression
+is returned, the color specification returned in
+color_screen_return is the result of gamut compression.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XcmsAllocColor(__libmansuffix__),
+XcmsStoreColor(__libmansuffix__),
+XQueryColor(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsSetWhitePoint.man b/libX11/man/XcmsSetWhitePoint.man
index c93c02609..7298d52f2 100644
--- a/libX11/man/XcmsSetWhitePoint.man
+++ b/libX11/man/XcmsSetWhitePoint.man
@@ -1,197 +1,197 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsSetWhitePoint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsSetWhitePoint, XcmsSetWhiteAdjustProc \- modifying CCC attributes
-.SH SYNTAX
-.HP
-Status XcmsSetWhitePoint\^(\^XcmsCCC \fIccc\fP\^, XcmsColor *\fIcolor\fP\^);
-.HP
-XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc\^(\^XcmsCCC \fIccc\fP\^,
-XcmsWhiteAdjustProc \fIwhite_adjust_proc\fP\^, XPointer \fIclient_data\fP\^);
-.SH ARGUMENTS
-.IP \fIccc\fP 1i
-Specifies the CCC.
-.ds Cd the white point adjustment procedure
-.IP \fIclient_data\fP 1i
-Specifies client data for \*(Cd or NULL.
-.ds Co new Client White Point
-.IP \fIcolor\fP 1i
-Specifies the \*(Co.
-.IP \fIwhite_adjust_proc\fP 1i
-Specifies the white point adjustment procedure.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XcmsCIEXYZFormat ,
-.ZN XcmsCIEuvYFormat ,
-.ZN XcmsCIExyYFormat ,
-or
-.ZN XcmsUndefinedFormat .
-If the color argument is NULL, this function sets the format component of the
-Client White Point specification to
-.ZN 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.
-
-.LP
-The
-.ZN 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.
-.SH "SEE ALSO"
-DisplayOfCCC(__libmansuffix__),
-XcmsCCCOfColormap(__libmansuffix__),
-XcmsConvertColors(__libmansuffix__),
-XcmsCreateCCC(__libmansuffix__),
-XcmsDefaultCCC(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsSetWhitePoint __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsSetWhitePoint, XcmsSetWhiteAdjustProc \- modifying CCC attributes
+.SH SYNTAX
+.HP
+Status XcmsSetWhitePoint\^(\^XcmsCCC \fIccc\fP\^, XcmsColor *\fIcolor\fP\^);
+.HP
+XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc\^(\^XcmsCCC \fIccc\fP\^,
+XcmsWhiteAdjustProc \fIwhite_adjust_proc\fP\^, XPointer \fIclient_data\fP\^);
+.SH ARGUMENTS
+.IP \fIccc\fP 1i
+Specifies the CCC.
+.ds Cd the white point adjustment procedure
+.IP \fIclient_data\fP 1i
+Specifies client data for \*(Cd or NULL.
+.ds Co new Client White Point
+.IP \fIcolor\fP 1i
+Specifies the \*(Co.
+.IP \fIwhite_adjust_proc\fP 1i
+Specifies the white point adjustment procedure.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XcmsCIEXYZFormat ,
+.ZN XcmsCIEuvYFormat ,
+.ZN XcmsCIExyYFormat ,
+or
+.ZN XcmsUndefinedFormat .
+If the color argument is NULL, this function sets the format component of the
+Client White Point specification to
+.ZN 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.
+
+.LP
+The
+.ZN 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.
+.SH "SEE ALSO"
+DisplayOfCCC(__libmansuffix__),
+XcmsCCCOfColormap(__libmansuffix__),
+XcmsConvertColors(__libmansuffix__),
+XcmsCreateCCC(__libmansuffix__),
+XcmsDefaultCCC(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsStoreColor.man b/libX11/man/XcmsStoreColor.man
index c9774d12f..d49c7efdd 100644
--- a/libX11/man/XcmsStoreColor.man
+++ b/libX11/man/XcmsStoreColor.man
@@ -1,306 +1,306 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsStoreColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsStoreColor, XcmsStoreColors \- set colors
-.SH SYNTAX
-.HP
-Status XcmsStoreColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
-XcmsColor *\fIcolor\fP\^);
-.HP
-Status XcmsStoreColors\^(\^Display *\fIdisplay\fP\^, Colormap
-\fIcolormap\fP\^, XcmsColor \fIcolors\fP\^[\^]\^, int \fIncolors\fP\^, Bool
-\fIcompression_flags_return\fP\^[\^]\^);
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIcolor\fP 1i
-Specifies the color cell and the color to store.
-Values specified in this
-.ZN XcmsColor
-structure remain unchanged on return.
-.IP \fIcolors\fP 1i
-Specifies the color specification array of
-.ZN 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 \fIcolormap\fP 1i
-Specifies the colormap.
-.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
-.ZN True
-if the corresponding color was compressed and
-.ZN False
-otherwise.
-Pass NULL if the compression status is not useful.
-.IP \fIncolors\fP 1i
-Specifies the number of
-.ZN XcmsColor
-structures in the color-specification array.
-.SH DESCRIPTION
-The
-.ZN XcmsStoreColor
-function converts the color specified in the
-.ZN XcmsColor
-structure into RGB values.
-It then uses this RGB specification in an
-.ZN XColor
-structure, whose three flags
-.Pn ( DoRed ,
-.ZN DoGreen ,
-and
-.ZN DoBlue )
-are set, in a call to
-.ZN XStoreColor
-to change the color cell specified by the pixel member of the
-.ZN 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
-.ZN BadValue
-error results.
-If the color cell is unallocated or is allocated read-only, a
-.ZN BadAccess
-error results.
-If the colormap is an installed map for its screen,
-the changes are visible immediately.
-.LP
-Note that
-.ZN XStoreColor
-has no return value; therefore, an
-.ZN XcmsSuccess
-return value from this function indicates that the conversion
-to RGB succeeded and the call to
-.ZN XStoreColor
-was made.
-To obtain the actual color stored, use
-.ZN 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
-.ZN XcmsStoreColor
-can generate
-.ZN BadAccess ,
-.ZN BadColor ,
-and
-.ZN BadValue
-errors.
-.LP
-The
-.ZN XcmsStoreColors
-function converts the colors specified in the array of
-.ZN XcmsColor
-structures into RGB values and then uses these RGB specifications in
-.ZN XColor
-structures, whose three flags
-.Pn ( DoRed ,
-.ZN DoGreen ,
-and
-.ZN DoBlue )
-are set, in a call to
-.ZN XStoreColors
-to change the color cells specified by the pixel member of the corresponding
-.ZN 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
-.ZN BadValue
-error results.
-If a color cell is unallocated or is allocated read-only, a
-.ZN 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
-.ZN XStoreColors
-has no return value; therefore, an
-.ZN XcmsSuccess
-return value from this function indicates that conversions
-to RGB succeeded and the call to
-.ZN XStoreColors
-was made.
-To obtain the actual colors stored, use
-.ZN 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
-.LP
-.ZN XcmsStoreColors
-can generate
-.ZN BadAccess ,
-.ZN BadColor ,
-and
-.ZN BadValue
-errors.
-.SH DIAGNOSTICS
-.TP 1i
-.ZN BadAccess
-A client attempted
-to free a color map entry that it did not already allocate.
-.TP 1i
-.ZN BadAccess
-A client attempted
-to store into a read-only color map entry.
-.TP 1i
-.ZN BadColor
-A value for a Colormap argument does not name a defined Colormap.
-.TP 1i
-.ZN BadValue
-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 can generate this error.
-.SH "SEE ALSO"
-XcmsAllocColor(__libmansuffix__),
-XcmsQueryColor(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsStoreColor __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsStoreColor, XcmsStoreColors \- set colors
+.SH SYNTAX
+.HP
+Status XcmsStoreColor\^(\^Display *\fIdisplay\fP\^, Colormap \fIcolormap\fP\^,
+XcmsColor *\fIcolor\fP\^);
+.HP
+Status XcmsStoreColors\^(\^Display *\fIdisplay\fP\^, Colormap
+\fIcolormap\fP\^, XcmsColor \fIcolors\fP\^[\^]\^, int \fIncolors\fP\^, Bool
+\fIcompression_flags_return\fP\^[\^]\^);
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIcolor\fP 1i
+Specifies the color cell and the color to store.
+Values specified in this
+.ZN XcmsColor
+structure remain unchanged on return.
+.IP \fIcolors\fP 1i
+Specifies the color specification array of
+.ZN 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 \fIcolormap\fP 1i
+Specifies the colormap.
+.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
+.ZN True
+if the corresponding color was compressed and
+.ZN False
+otherwise.
+Pass NULL if the compression status is not useful.
+.IP \fIncolors\fP 1i
+Specifies the number of
+.ZN XcmsColor
+structures in the color-specification array.
+.SH DESCRIPTION
+The
+.ZN XcmsStoreColor
+function converts the color specified in the
+.ZN XcmsColor
+structure into RGB values.
+It then uses this RGB specification in an
+.ZN XColor
+structure, whose three flags
+.Pn ( DoRed ,
+.ZN DoGreen ,
+and
+.ZN DoBlue )
+are set, in a call to
+.ZN XStoreColor
+to change the color cell specified by the pixel member of the
+.ZN 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
+.ZN BadValue
+error results.
+If the color cell is unallocated or is allocated read-only, a
+.ZN BadAccess
+error results.
+If the colormap is an installed map for its screen,
+the changes are visible immediately.
+.LP
+Note that
+.ZN XStoreColor
+has no return value; therefore, an
+.ZN XcmsSuccess
+return value from this function indicates that the conversion
+to RGB succeeded and the call to
+.ZN XStoreColor
+was made.
+To obtain the actual color stored, use
+.ZN 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
+.ZN XcmsStoreColor
+can generate
+.ZN BadAccess ,
+.ZN BadColor ,
+and
+.ZN BadValue
+errors.
+.LP
+The
+.ZN XcmsStoreColors
+function converts the colors specified in the array of
+.ZN XcmsColor
+structures into RGB values and then uses these RGB specifications in
+.ZN XColor
+structures, whose three flags
+.Pn ( DoRed ,
+.ZN DoGreen ,
+and
+.ZN DoBlue )
+are set, in a call to
+.ZN XStoreColors
+to change the color cells specified by the pixel member of the corresponding
+.ZN 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
+.ZN BadValue
+error results.
+If a color cell is unallocated or is allocated read-only, a
+.ZN 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
+.ZN XStoreColors
+has no return value; therefore, an
+.ZN XcmsSuccess
+return value from this function indicates that conversions
+to RGB succeeded and the call to
+.ZN XStoreColors
+was made.
+To obtain the actual colors stored, use
+.ZN 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
+.LP
+.ZN XcmsStoreColors
+can generate
+.ZN BadAccess ,
+.ZN BadColor ,
+and
+.ZN BadValue
+errors.
+.SH DIAGNOSTICS
+.TP 1i
+.ZN BadAccess
+A client attempted
+to free a color map entry that it did not already allocate.
+.TP 1i
+.ZN BadAccess
+A client attempted
+to store into a read-only color map entry.
+.TP 1i
+.ZN BadColor
+A value for a Colormap argument does not name a defined Colormap.
+.TP 1i
+.ZN BadValue
+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 can generate this error.
+.SH "SEE ALSO"
+XcmsAllocColor(__libmansuffix__),
+XcmsQueryColor(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XcmsTekHVCQueryMaxC.man b/libX11/man/XcmsTekHVCQueryMaxC.man
index 3e0f40e37..2f868778a 100644
--- a/libX11/man/XcmsTekHVCQueryMaxC.man
+++ b/libX11/man/XcmsTekHVCQueryMaxC.man
@@ -1,243 +1,243 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XcmsTekHVCQueryMaxC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XcmsTekHVCQueryMaxC, XcmsTekHVCQueryMaxV, XcmsTekHVCQueryMaxVC, XcmsTekHVCQueryMaxVSamples, XcmsTekHVCQueryMinV \- obtain the TekHVC coordinates
-.SH SYNTAX
-.HP
-Status XcmsTekHVCQueryMaxC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^,
-XcmsFloat \fIvalue\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsTekHVCQueryMaxV\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^,
-XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsTekHVCQueryMaxVC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^,
-XcmsColor *\fIcolor_return\fP\^);
-.HP
-Status XcmsTekHVCQueryMaxVSamples\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
-\fIhue\fP\^, XcmsColor \fIcolors_return[]\fP\^, unsigned int
-\fInsamples\fP\^);
-.HP
-Status XcmsTekHVCQueryMinV\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^,
-XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
-.SH ARGUMENTS
-.IP \fIccc\fP 1i
-Specifies the CCC.
-Note that the CCC's Client White Point and White Point Adjustment procedures
-are ignored.
-.ds Ch maximum Value (MaxV)
-.IP \fIchroma\fP 1i
-Specifies the chroma at which to find \*(Ch.
-.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.
-.ds Lc maximum Chroma along with the actual Hue and Value (MaxC), \
-maximum Value along with the Hue and Chroma (MaxV), \
-color specification in XcmsTekHVC for the maximum Chroma, \
-the Value at which that maximum Chroma is reached and actual Hue (MaxVC) \
-or minimum Value and the actual Hue and Chroma (MinL)
-.ds lC maximum Chroma (MaxC and MaxVC), maximum Value (MaxV), or \
-minimum Value (MinL)
-.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.
-.ds Hu in which to find the maximum Chroma (MaxC and MaxVC), \
-maximum Value (MaxV), the maximum Chroma/Value samples (MaxVSamples), \
-or the minimum Value (MinL)
-.IP \fIhue\fP 1i
-Specifies the Hue \*(Hu.
-.IP \fInsamples\fP 1i
-Specifies the number of samples.
-.ds Va maximum Chroma (MaxC) or minimum Value (MinL)
-.IP \fIvalue\fP 1i
-Specifies the Value in which to find the \*(Va.
-.SH DESCRIPTION
-The
-.ZN 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.
-.LP
-The
-.ZN 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.
-.LP
-The
-.ZN 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.
-.LP
-The
-.ZN 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.
-.LP
-The
-.ZN 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.
-.SH "SEE ALSO"
-XcmsCIELabQueryMaxC(__libmansuffix__),
-XcmsCIELuvQueryMaxC(__libmansuffix__),
-XcmsQueryBlack(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XcmsTekHVCQueryMaxC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XcmsTekHVCQueryMaxC, XcmsTekHVCQueryMaxV, XcmsTekHVCQueryMaxVC, XcmsTekHVCQueryMaxVSamples, XcmsTekHVCQueryMinV \- obtain the TekHVC coordinates
+.SH SYNTAX
+.HP
+Status XcmsTekHVCQueryMaxC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^,
+XcmsFloat \fIvalue\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsTekHVCQueryMaxV\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^,
+XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsTekHVCQueryMaxVC\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^,
+XcmsColor *\fIcolor_return\fP\^);
+.HP
+Status XcmsTekHVCQueryMaxVSamples\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat
+\fIhue\fP\^, XcmsColor \fIcolors_return[]\fP\^, unsigned int
+\fInsamples\fP\^);
+.HP
+Status XcmsTekHVCQueryMinV\^(\^XcmsCCC \fIccc\fP\^, XcmsFloat \fIhue\fP\^,
+XcmsFloat \fIchroma\fP\^, XcmsColor *\fIcolor_return\fP\^);
+.SH ARGUMENTS
+.IP \fIccc\fP 1i
+Specifies the CCC.
+Note that the CCC's Client White Point and White Point Adjustment procedures
+are ignored.
+.ds Ch maximum Value (MaxV)
+.IP \fIchroma\fP 1i
+Specifies the chroma at which to find \*(Ch.
+.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.
+.ds Lc maximum Chroma along with the actual Hue and Value (MaxC), \
+maximum Value along with the Hue and Chroma (MaxV), \
+color specification in XcmsTekHVC for the maximum Chroma, \
+the Value at which that maximum Chroma is reached and actual Hue (MaxVC) \
+or minimum Value and the actual Hue and Chroma (MinL)
+.ds lC maximum Chroma (MaxC and MaxVC), maximum Value (MaxV), or \
+minimum Value (MinL)
+.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.
+.ds Hu in which to find the maximum Chroma (MaxC and MaxVC), \
+maximum Value (MaxV), the maximum Chroma/Value samples (MaxVSamples), \
+or the minimum Value (MinL)
+.IP \fIhue\fP 1i
+Specifies the Hue \*(Hu.
+.IP \fInsamples\fP 1i
+Specifies the number of samples.
+.ds Va maximum Chroma (MaxC) or minimum Value (MinL)
+.IP \fIvalue\fP 1i
+Specifies the Value in which to find the \*(Va.
+.SH DESCRIPTION
+The
+.ZN 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.
+.LP
+The
+.ZN 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.
+.LP
+The
+.ZN 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.
+.LP
+The
+.ZN 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.
+.LP
+The
+.ZN 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.
+.SH "SEE ALSO"
+XcmsCIELabQueryMaxC(__libmansuffix__),
+XcmsCIELuvQueryMaxC(__libmansuffix__),
+XcmsQueryBlack(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XmbDrawImageString.man b/libX11/man/XmbDrawImageString.man
index c4d728fc9..d7284da9b 100644
--- a/libX11/man/XmbDrawImageString.man
+++ b/libX11/man/XmbDrawImageString.man
@@ -1,216 +1,216 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XmbDrawImageString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XmbDrawImageString, XwcDrawImageString, Xutf8DrawImageString \- draw image text using a single font set
-.SH SYNTAX
-.HP
-void XmbDrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
-XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char
-*\fIstring\fP\^, int \fInum_bytes\fP\^);
-.HP
-void XwcDrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
-XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^,
-wchar_t *\fIstring\fP\^, int \fInum_wchars\fP\^);
-.HP
-void Xutf8DrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
-XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char
-*\fIstring\fP\^, int \fInum_bytes\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIfont_set\fP 1i
-Specifies the font set.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.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 \fIstring\fP 1i
-Specifies the character string.
-.ds Xy
-.IP \fIx\fP 1i
-.br
-.ns
-.IP \fIy\fP 1i
-Specify the x and y coordinates\*(Xy.
-.SH DESCRIPTION
-The
-.ZN XmbDrawImageString ,
-.ZN XwcDrawImageString
-and
-.ZN Xutf8DrawImageString
-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
-.ZN XmbTextExtents ,
-.ZN XwcTextExtents
-or
-.ZN Xutf8TextExtents
-for the same text and
-.ZN XFontSet .
-.LP
-When the
-.ZN XFontSet
-has missing charsets, each unavailable character is drawn
-with the default string returned by
-.ZN XCreateFontSet .
-The behavior for an invalid codepoint is undefined.
-.LP
-The function
-.ZN Xutf8TextExtents
-is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
-release. Its presence is
-indicated by the macro
-.ZN X_HAVE_UTF8_STRING .
-.SH "SEE ALSO"
-XDrawImageString(__libmansuffix__),
-XDrawString(__libmansuffix__),
-XDrawText(__libmansuffix__),
-XmbDrawString(__libmansuffix__),
-XmbDrawText(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XmbDrawImageString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XmbDrawImageString, XwcDrawImageString, Xutf8DrawImageString \- draw image text using a single font set
+.SH SYNTAX
+.HP
+void XmbDrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
+XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char
+*\fIstring\fP\^, int \fInum_bytes\fP\^);
+.HP
+void XwcDrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
+XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^,
+wchar_t *\fIstring\fP\^, int \fInum_wchars\fP\^);
+.HP
+void Xutf8DrawImageString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
+XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char
+*\fIstring\fP\^, int \fInum_bytes\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.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 \fIstring\fP 1i
+Specifies the character string.
+.ds Xy
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.SH DESCRIPTION
+The
+.ZN XmbDrawImageString ,
+.ZN XwcDrawImageString
+and
+.ZN Xutf8DrawImageString
+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
+.ZN XmbTextExtents ,
+.ZN XwcTextExtents
+or
+.ZN Xutf8TextExtents
+for the same text and
+.ZN XFontSet .
+.LP
+When the
+.ZN XFontSet
+has missing charsets, each unavailable character is drawn
+with the default string returned by
+.ZN XCreateFontSet .
+The behavior for an invalid codepoint is undefined.
+.LP
+The function
+.ZN Xutf8TextExtents
+is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
+release. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
+.SH "SEE ALSO"
+XDrawImageString(__libmansuffix__),
+XDrawString(__libmansuffix__),
+XDrawText(__libmansuffix__),
+XmbDrawString(__libmansuffix__),
+XmbDrawText(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XmbDrawString.man b/libX11/man/XmbDrawString.man
index f09336459..0e15cf0bd 100644
--- a/libX11/man/XmbDrawString.man
+++ b/libX11/man/XmbDrawString.man
@@ -1,207 +1,207 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XmbDrawString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XmbDrawString, XwcDrawString, Xutf8DrawString \- draw text using a single font set
-.SH SYNTAX
-.HP
-void XmbDrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, XFontSet
-\fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char
-*\fIstring\fP\^, int \fInum_bytes\fP\^);
-.HP
-void XwcDrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, XFontSet
-\fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, wchar_t
-*\fIstring\fP\^, int \fInum_wchars\fP\^);
-.HP
-void Xutf8DrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
-XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char
-*\fIstring\fP\^, int \fInum_bytes\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIfont_set\fP 1i
-Specifies the font set.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.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 \fIstring\fP 1i
-Specifies the character string.
-.ds Xy
-.IP \fIx\fP 1i
-.br
-.ns
-.IP \fIy\fP 1i
-Specify the x and y coordinates\*(Xy.
-.SH DESCRIPTION
-The
-.ZN XmbDrawString ,
-.ZN XwcDrawString
-and
-.ZN Xutf8DrawString
-functions draw the specified text with the foreground pixel.
-When the
-.ZN XFontSet
-has missing charsets, each unavailable character is drawn
-with the default string returned by
-.ZN XCreateFontSet .
-The behavior for an invalid codepoint is undefined.
-.LP
-The function
-.ZN Xutf8DrawString
-is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
-release. Its presence is
-indicated by the macro
-.ZN X_HAVE_UTF8_STRING .
-.SH "SEE ALSO"
-XDrawImageString(__libmansuffix__),
-XDrawString(__libmansuffix__),
-XDrawText(__libmansuffix__),
-XmbDrawImageString(__libmansuffix__),
-XmbDrawText(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XmbDrawString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XmbDrawString, XwcDrawString, Xutf8DrawString \- draw text using a single font set
+.SH SYNTAX
+.HP
+void XmbDrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, XFontSet
+\fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char
+*\fIstring\fP\^, int \fInum_bytes\fP\^);
+.HP
+void XwcDrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, XFontSet
+\fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, wchar_t
+*\fIstring\fP\^, int \fInum_wchars\fP\^);
+.HP
+void Xutf8DrawString\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^,
+XFontSet \fIfont_set\fP\^, GC \fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, char
+*\fIstring\fP\^, int \fInum_bytes\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.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 \fIstring\fP 1i
+Specifies the character string.
+.ds Xy
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.SH DESCRIPTION
+The
+.ZN XmbDrawString ,
+.ZN XwcDrawString
+and
+.ZN Xutf8DrawString
+functions draw the specified text with the foreground pixel.
+When the
+.ZN XFontSet
+has missing charsets, each unavailable character is drawn
+with the default string returned by
+.ZN XCreateFontSet .
+The behavior for an invalid codepoint is undefined.
+.LP
+The function
+.ZN Xutf8DrawString
+is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
+release. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
+.SH "SEE ALSO"
+XDrawImageString(__libmansuffix__),
+XDrawString(__libmansuffix__),
+XDrawText(__libmansuffix__),
+XmbDrawImageString(__libmansuffix__),
+XmbDrawText(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XmbDrawText.man b/libX11/man/XmbDrawText.man
index 9b94256aa..02b18301e 100644
--- a/libX11/man/XmbDrawText.man
+++ b/libX11/man/XmbDrawText.man
@@ -1,255 +1,255 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XmbDrawText __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XmbDrawText, XwcDrawText, Xutf8DrawText \- draw text using multiple font sets
-.SH SYNTAX
-.HP
-void XmbDrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XmbTextItem *\fIitems\fP\^, int
-\fInitems\fP\^);
-.HP
-void XwcDrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XwcTextItem *\fIitems\fP\^, int
-\fInitems\fP\^);
-.HP
-void Xutf8DrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
-\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XmbTextItem *\fIitems\fP\^, int \fInitems\fP\^);
-.SH ARGUMENTS
-.IP \fId\fP 1i
-Specifies the drawable.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIgc\fP 1i
-Specifies the GC.
-.IP \fIitems\fP 1i
-Specifies an array of text items.
-.IP \fInitems\fP 1i
-Specifies the number of text items in the array.
-.ds Xy
-.IP \fIx\fP 1i
-.br
-.ns
-.IP \fIy\fP 1i
-Specify the x and y coordinates\*(Xy.
-.SH DESCRIPTION
-The
-.ZN XmbDrawText ,
-.ZN XwcDrawText
-and
-.ZN Xutf8DrawText
-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
-.ZN 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
-.ZN None
-will not be drawn.
-.LP
-.ZN XmbDrawText ,
-.ZN XwcDrawText
-and
-.ZN Xutf8DrawText
-do not perform any context-dependent rendering between text segments.
-Clients may compute the drawing metrics by passing each text segment to
-.ZN XmbTextExtents ,
-.ZN XwcTextExtents ,
-.ZN Xutf8TextExtents
-or
-.ZN XmbTextPerCharExtents ,
-.ZN XwcTextPerCharExtents .
-.ZN Xutf8TextPerCharExtents .
-When the
-.ZN XFontSet
-has missing charsets, each unavailable character is drawn
-with the default string returned by
-.ZN XCreateFontSet .
-The behavior for an invalid codepoint is undefined.
-.LP
-The function
-.ZN Xutf8DrawText
-is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
-release. Its presence is
-indicated by the macro
-.ZN X_HAVE_UTF8_STRING .
-.SH STRUCTURES
-The
-.ZN XmbTextItem
-structure contains:
-.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
-The
-.ZN XwcTextItem
-structure contains:
-.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
-.SH "SEE ALSO"
-XDrawImageString(__libmansuffix__),
-XDrawString(__libmansuffix__),
-XDrawText(__libmansuffix__),
-XmbDrawImageString(__libmansuffix__),
-XmbDrawString(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XmbDrawText __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XmbDrawText, XwcDrawText, Xutf8DrawText \- draw text using multiple font sets
+.SH SYNTAX
+.HP
+void XmbDrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XmbTextItem *\fIitems\fP\^, int
+\fInitems\fP\^);
+.HP
+void XwcDrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XwcTextItem *\fIitems\fP\^, int
+\fInitems\fP\^);
+.HP
+void Xutf8DrawText\^(\^Display *\fIdisplay\fP\^, Drawable \fId\fP\^, GC
+\fIgc\fP\^, int \fIx\fP\^, int \fIy\fP\^, XmbTextItem *\fIitems\fP\^, int \fInitems\fP\^);
+.SH ARGUMENTS
+.IP \fId\fP 1i
+Specifies the drawable.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIgc\fP 1i
+Specifies the GC.
+.IP \fIitems\fP 1i
+Specifies an array of text items.
+.IP \fInitems\fP 1i
+Specifies the number of text items in the array.
+.ds Xy
+.IP \fIx\fP 1i
+.br
+.ns
+.IP \fIy\fP 1i
+Specify the x and y coordinates\*(Xy.
+.SH DESCRIPTION
+The
+.ZN XmbDrawText ,
+.ZN XwcDrawText
+and
+.ZN Xutf8DrawText
+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
+.ZN 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
+.ZN None
+will not be drawn.
+.LP
+.ZN XmbDrawText ,
+.ZN XwcDrawText
+and
+.ZN Xutf8DrawText
+do not perform any context-dependent rendering between text segments.
+Clients may compute the drawing metrics by passing each text segment to
+.ZN XmbTextExtents ,
+.ZN XwcTextExtents ,
+.ZN Xutf8TextExtents
+or
+.ZN XmbTextPerCharExtents ,
+.ZN XwcTextPerCharExtents .
+.ZN Xutf8TextPerCharExtents .
+When the
+.ZN XFontSet
+has missing charsets, each unavailable character is drawn
+with the default string returned by
+.ZN XCreateFontSet .
+The behavior for an invalid codepoint is undefined.
+.LP
+The function
+.ZN Xutf8DrawText
+is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
+release. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
+.SH STRUCTURES
+The
+.ZN XmbTextItem
+structure contains:
+.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
+The
+.ZN XwcTextItem
+structure contains:
+.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
+.SH "SEE ALSO"
+XDrawImageString(__libmansuffix__),
+XDrawString(__libmansuffix__),
+XDrawText(__libmansuffix__),
+XmbDrawImageString(__libmansuffix__),
+XmbDrawString(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XmbLookupString.man b/libX11/man/XmbLookupString.man
index 72bf2cdda..73897f5d2 100644
--- a/libX11/man/XmbLookupString.man
+++ b/libX11/man/XmbLookupString.man
@@ -1,311 +1,311 @@
-'\" t
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XmbLookupString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XmbLookupString, XwcLookupString, Xutf8LookupString \- obtain composed input from an input method
-.SH SYNTAX
-.HP
-int XmbLookupString\^(\^XIC \fIic\fP\^, XKeyPressedEvent *\fIevent\fP, char
-*\fIbuffer_return\fP\^, int \fIbytes_buffer\fP\^, KeySym
-*\fIkeysym_return\fP\^, Status *\fIstatus_return\fP\^);
-.HP
-int XwcLookupString\^(\^XIC \fIic\fP\^, XKeyPressedEvent *\fIevent\fP\^,
-wchar_t *\fIbuffer_return\fP\^, int \fIwchars_buffer\fP\^, KeySym
-*\fIkeysym_return\fP\^, Status *\fIstatus_return\fP\^);
-.HP
-int Xutf8LookupString\^(\^XIC \fIic\fP\^, XKeyPressedEvent *\fIevent\fP, char
-*\fIbuffer_return\fP\^, int \fIbytes_buffer\fP\^, KeySym
-*\fIkeysym_return\fP\^, Status *\fIstatus_return\fP\^);
-.SH ARGUMENTS
-.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.
-.ds Ev key event to be used
-.IP \fIevent\fP 1i
-Specifies the \*(Ev.
-.IP \fIic\fP 1i
-Specifies the input context.
-.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.
-.SH DESCRIPTION
-The
-.ZN XmbLookupString ,
-.ZN XwcLookupString
-and
-.ZN Xutf8LookupString
-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
-.ZN XmbLookupString
-and
-.ZN Xutf8LookupString
-return the length of the string in bytes, and
-.ZN XwcLookupString
-returns the length of the string in characters.
-Both
-.ZN XmbLookupString
-and
-.ZN XwcLookupString
-return text in the encoding of the locale bound to the input method
-of the specified input context, and
-.ZN Xutf8LookupString
-returns text in UTF-8 encoding.
-.LP
-Each string returned by
-.ZN XmbLookupString
-and
-.ZN XwcLookupString
-begins in the initial state of the encoding of the locale
-(if the encoding of the locale is state-dependent).
-.NT
-To ensure proper input processing,
-it is essential that the client pass only
-.ZN KeyPress
-events to
-.ZN XmbLookupString ,
-.ZN XwcLookupString
-and
-.ZN Xutf8LookupString .
-Their behavior when a client passes a
-.ZN KeyRelease
-event is undefined.
-.NE
-.LP
-Clients should check the status_return argument before
-using the other returned values.
-These three functions each 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{
-.ZN XBufferOverflow
-T} T{
-The input string to be returned is too large for the supplied buffer_return.
-The required size (for
-.ZN XmbLookupString ,
-.ZN Xutf8LookupString
-in bytes; for
-.ZN 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{
-.ZN 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{
-.ZN XLookupChars
-T} T{
-Some input characters have been composed.
-They are placed in the buffer_return argument, using the encoding
-described above,
-and the string length is returned as the value of the function.
-The content of the keysym_return argument is not modified.
-T}
-T{
-.ZN 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{
-.ZN XLookupBoth
-T} T{
-Both a KeySym and a string are returned;
-.ZN XLookupChars
-and
-.ZN XLookupKeySym
-occur simultaneously.
-T}
-.TE
-.LP
-It does not make any difference if the input context passed as an argument to
-.ZN XmbLookupString ,
-.ZN XwcLookupString
-and
-.ZN Xutf8LookupString
-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
-.ZN XmbLookupString ,
-.ZN XwcLookupString
-or
-.ZN Xutf8LookupString
-even though it does not have any more keyboard focus.
-.LP
-The function
-.ZN Xutf8LookupString
-is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
-release. Its presence is
-indicated by the macro
-.ZN X_HAVE_UTF8_STRING .
-.SH "SEE ALSO"
-XLookupKeysym(__libmansuffix__),
-Compose(__filemansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" t
+.TH XmbLookupString __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XmbLookupString, XwcLookupString, Xutf8LookupString \- obtain composed input from an input method
+.SH SYNTAX
+.HP
+int XmbLookupString\^(\^XIC \fIic\fP\^, XKeyPressedEvent *\fIevent\fP, char
+*\fIbuffer_return\fP\^, int \fIbytes_buffer\fP\^, KeySym
+*\fIkeysym_return\fP\^, Status *\fIstatus_return\fP\^);
+.HP
+int XwcLookupString\^(\^XIC \fIic\fP\^, XKeyPressedEvent *\fIevent\fP\^,
+wchar_t *\fIbuffer_return\fP\^, int \fIwchars_buffer\fP\^, KeySym
+*\fIkeysym_return\fP\^, Status *\fIstatus_return\fP\^);
+.HP
+int Xutf8LookupString\^(\^XIC \fIic\fP\^, XKeyPressedEvent *\fIevent\fP, char
+*\fIbuffer_return\fP\^, int \fIbytes_buffer\fP\^, KeySym
+*\fIkeysym_return\fP\^, Status *\fIstatus_return\fP\^);
+.SH ARGUMENTS
+.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.
+.ds Ev key event to be used
+.IP \fIevent\fP 1i
+Specifies the \*(Ev.
+.IP \fIic\fP 1i
+Specifies the input context.
+.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.
+.SH DESCRIPTION
+The
+.ZN XmbLookupString ,
+.ZN XwcLookupString
+and
+.ZN Xutf8LookupString
+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
+.ZN XmbLookupString
+and
+.ZN Xutf8LookupString
+return the length of the string in bytes, and
+.ZN XwcLookupString
+returns the length of the string in characters.
+Both
+.ZN XmbLookupString
+and
+.ZN XwcLookupString
+return text in the encoding of the locale bound to the input method
+of the specified input context, and
+.ZN Xutf8LookupString
+returns text in UTF-8 encoding.
+.LP
+Each string returned by
+.ZN XmbLookupString
+and
+.ZN XwcLookupString
+begins in the initial state of the encoding of the locale
+(if the encoding of the locale is state-dependent).
+.NT
+To ensure proper input processing,
+it is essential that the client pass only
+.ZN KeyPress
+events to
+.ZN XmbLookupString ,
+.ZN XwcLookupString
+and
+.ZN Xutf8LookupString .
+Their behavior when a client passes a
+.ZN KeyRelease
+event is undefined.
+.NE
+.LP
+Clients should check the status_return argument before
+using the other returned values.
+These three functions each 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{
+.ZN XBufferOverflow
+T} T{
+The input string to be returned is too large for the supplied buffer_return.
+The required size (for
+.ZN XmbLookupString ,
+.ZN Xutf8LookupString
+in bytes; for
+.ZN 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{
+.ZN 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{
+.ZN XLookupChars
+T} T{
+Some input characters have been composed.
+They are placed in the buffer_return argument, using the encoding
+described above,
+and the string length is returned as the value of the function.
+The content of the keysym_return argument is not modified.
+T}
+T{
+.ZN 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{
+.ZN XLookupBoth
+T} T{
+Both a KeySym and a string are returned;
+.ZN XLookupChars
+and
+.ZN XLookupKeySym
+occur simultaneously.
+T}
+.TE
+.LP
+It does not make any difference if the input context passed as an argument to
+.ZN XmbLookupString ,
+.ZN XwcLookupString
+and
+.ZN Xutf8LookupString
+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
+.ZN XmbLookupString ,
+.ZN XwcLookupString
+or
+.ZN Xutf8LookupString
+even though it does not have any more keyboard focus.
+.LP
+The function
+.ZN Xutf8LookupString
+is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
+release. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
+.SH "SEE ALSO"
+XLookupKeysym(__libmansuffix__),
+Compose(__filemansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XmbResetIC.man b/libX11/man/XmbResetIC.man
index ac67c4a4b..bd9adb59a 100644
--- a/libX11/man/XmbResetIC.man
+++ b/libX11/man/XmbResetIC.man
@@ -1,211 +1,211 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XmbResetIC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XmbResetIC, XwcResetIC, Xutf8ResetIC \- reset the state of an input context
-.SH SYNTAX
-.HP
-char *XmbResetIC\^(\^XIC \fIic\fP\^);
-.HP
-wchar_t *XwcResetIC\^(\^XIC \fIic\fP\^);
-.HP
-char *Xutf8ResetIC\^(\^XIC \fIic\fP\^);
-.SH ARGUMENTS
-.IP \fIic\fP 1i
-Specifies the input context.
-.SH DESCRIPTION
-When
-.ZN XNResetState
-is set to
-.ZN XIMInitialState ,
-.ZN XmbResetIC ,
-.ZN XwcResetIC
-and
-.ZN Xutf8ResetIC
-reset an input context to its initial state;
-when
-.ZN XNResetState
-is set to
-.ZN 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
-.ZN XmbResetIC ,
-.ZN XwcResetIC
-or
-.ZN Xutf8ResetIC
-does not change the focus.
-.LP
-The return value of
-.ZN XmbResetIC
-is its current preedit string as a multibyte string.
-The return value of
-.ZN XwcResetIC
-is its current preedit string as a wide character string.
-The return value of
-.ZN Xutf8ResetIC
-is its current preedit string as an UTF-8 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
-.ZN XFree .
-.LP
-The function
-.ZN Xutf8ResetIC
-is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
-release. Its presence is
-indicated by the macro
-.ZN X_HAVE_UTF8_STRING .
-.SH "SEE ALSO"
-XCreateIC(__libmansuffix__),
-XOpenIM(__libmansuffix__),
-XSetICFocus(__libmansuffix__),
-XSetICValues(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XmbResetIC __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XmbResetIC, XwcResetIC, Xutf8ResetIC \- reset the state of an input context
+.SH SYNTAX
+.HP
+char *XmbResetIC\^(\^XIC \fIic\fP\^);
+.HP
+wchar_t *XwcResetIC\^(\^XIC \fIic\fP\^);
+.HP
+char *Xutf8ResetIC\^(\^XIC \fIic\fP\^);
+.SH ARGUMENTS
+.IP \fIic\fP 1i
+Specifies the input context.
+.SH DESCRIPTION
+When
+.ZN XNResetState
+is set to
+.ZN XIMInitialState ,
+.ZN XmbResetIC ,
+.ZN XwcResetIC
+and
+.ZN Xutf8ResetIC
+reset an input context to its initial state;
+when
+.ZN XNResetState
+is set to
+.ZN 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
+.ZN XmbResetIC ,
+.ZN XwcResetIC
+or
+.ZN Xutf8ResetIC
+does not change the focus.
+.LP
+The return value of
+.ZN XmbResetIC
+is its current preedit string as a multibyte string.
+The return value of
+.ZN XwcResetIC
+is its current preedit string as a wide character string.
+The return value of
+.ZN Xutf8ResetIC
+is its current preedit string as an UTF-8 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
+.ZN XFree .
+.LP
+The function
+.ZN Xutf8ResetIC
+is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
+release. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
+.SH "SEE ALSO"
+XCreateIC(__libmansuffix__),
+XOpenIM(__libmansuffix__),
+XSetICFocus(__libmansuffix__),
+XSetICValues(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XmbTextEscapement.man b/libX11/man/XmbTextEscapement.man
index f6cdd1402..283911069 100644
--- a/libX11/man/XmbTextEscapement.man
+++ b/libX11/man/XmbTextEscapement.man
@@ -1,190 +1,190 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XmbTextEscapement __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XmbTextEscapement, XwcTextEscapement, Xutf8TextEscapement \- obtain the escapement of text
-.SH SYNTAX
-.HP
-int XmbTextEscapement\^(\^XFontSet \fIfont_set\fP\^, char *\fIstring\fP\^, int
-\fInum_bytes\fP\^);
-.HP
-int XwcTextEscapement\^(\^XFontSet \fIfont_set\fP\^, wchar_t *\fIstring\fP\^,
-int \fInum_wchars\fP\^);
-.HP
-int Xutf8TextEscapement\^(\^XFontSet \fIfont_set\fP\^, char *\fIstring\fP\^,
-int \fInum_bytes\fP\^);
-.SH ARGUMENTS
-.IP \fIfont_set\fP 1i
-Specifies the font set.
-.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 \fIstring\fP 1i
-Specifies the character string.
-.SH DESCRIPTION
-The
-.ZN XmbTextEscapement ,
-.ZN XwcTextEscapement
-and
-.ZN Xutf8TextEscapement
-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
-The function
-.ZN Xutf8TextEscapement
-is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
-release. Its presence is
-indicated by the macro
-.ZN X_HAVE_UTF8_STRING .
-.SH "SEE ALSO"
-XmbTextExtents(__libmansuffix__),
-XmbTextPerCharExtents(__libmansuffix__)
-\fI\*(xL\fP
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XmbTextEscapement __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XmbTextEscapement, XwcTextEscapement, Xutf8TextEscapement \- obtain the escapement of text
+.SH SYNTAX
+.HP
+int XmbTextEscapement\^(\^XFontSet \fIfont_set\fP\^, char *\fIstring\fP\^, int
+\fInum_bytes\fP\^);
+.HP
+int XwcTextEscapement\^(\^XFontSet \fIfont_set\fP\^, wchar_t *\fIstring\fP\^,
+int \fInum_wchars\fP\^);
+.HP
+int Xutf8TextEscapement\^(\^XFontSet \fIfont_set\fP\^, char *\fIstring\fP\^,
+int \fInum_bytes\fP\^);
+.SH ARGUMENTS
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.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 \fIstring\fP 1i
+Specifies the character string.
+.SH DESCRIPTION
+The
+.ZN XmbTextEscapement ,
+.ZN XwcTextEscapement
+and
+.ZN Xutf8TextEscapement
+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
+The function
+.ZN Xutf8TextEscapement
+is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
+release. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
+.SH "SEE ALSO"
+XmbTextExtents(__libmansuffix__),
+XmbTextPerCharExtents(__libmansuffix__)
+\fI\*(xL\fP
diff --git a/libX11/man/XmbTextExtents.man b/libX11/man/XmbTextExtents.man
index 4ff3366c3..6d44c52a7 100644
--- a/libX11/man/XmbTextExtents.man
+++ b/libX11/man/XmbTextExtents.man
@@ -1,226 +1,226 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XmbTextExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XmbTextExtents, XwcTextExtents, Xutf8TextExtents \- compute text extents
-.SH SYNTAX
-.HP
-int XmbTextExtents\^(\^XFontSet \fIfont_set\fP\^, char *\fIstring\fP\^, int
-\fInum_bytes\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle
-*\fIoverall_logical_return\fP\^);
-.HP
-int XwcTextExtents\^(\^XFontSet \fIfont_set\fP\^, wchar_t *\fIstring\fP\^, int
-\fInum_wchars\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle
-*\fIoverall_logical_return\fP\^);
-.HP
-int Xutf8TextExtents\^(\^XFontSet \fIfont_set\fP\^, char *\fIstring\fP\^, int
-\fInum_bytes\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle
-*\fIoverall_logical_return\fP\^);
-.SH ARGUMENTS
-.IP \fIfont_set\fP 1i
-Specifies the font set.
-.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.
-.IP \fIstring\fP 1i
-Specifies the character string.
-.SH DESCRIPTION
-The
-.ZN XmbTextExtents ,
-.ZN XwcTextExtents
-and
-.ZN Xutf8TextExtents
-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
-.ZN XmbTextEscapement ,
-.ZN XwcTextEscapement
-or
-.ZN Xutf8TextEscapement .
-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
-.ZN XFontSet
-has missing charsets,
-metrics for each unavailable character are taken
-from the default string returned by
-.ZN XCreateFontSet
-so that the metrics represent the text as it will actually be drawn.
-The behavior for an invalid codepoint is undefined.
-.LP
-The function
-.ZN Xutf8TextExtents
-is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
-release. Its presence is
-indicated by the macro
-.ZN X_HAVE_UTF8_STRING .
-.SH "SEE ALSO"
-XmbTextEscapement(__libmansuffix__),
-XmbTextPerCharExtents(__libmansuffix__)
-\fI\*(xL\fP
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XmbTextExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XmbTextExtents, XwcTextExtents, Xutf8TextExtents \- compute text extents
+.SH SYNTAX
+.HP
+int XmbTextExtents\^(\^XFontSet \fIfont_set\fP\^, char *\fIstring\fP\^, int
+\fInum_bytes\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle
+*\fIoverall_logical_return\fP\^);
+.HP
+int XwcTextExtents\^(\^XFontSet \fIfont_set\fP\^, wchar_t *\fIstring\fP\^, int
+\fInum_wchars\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle
+*\fIoverall_logical_return\fP\^);
+.HP
+int Xutf8TextExtents\^(\^XFontSet \fIfont_set\fP\^, char *\fIstring\fP\^, int
+\fInum_bytes\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle
+*\fIoverall_logical_return\fP\^);
+.SH ARGUMENTS
+.IP \fIfont_set\fP 1i
+Specifies the font set.
+.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.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.SH DESCRIPTION
+The
+.ZN XmbTextExtents ,
+.ZN XwcTextExtents
+and
+.ZN Xutf8TextExtents
+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
+.ZN XmbTextEscapement ,
+.ZN XwcTextEscapement
+or
+.ZN Xutf8TextEscapement .
+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
+.ZN XFontSet
+has missing charsets,
+metrics for each unavailable character are taken
+from the default string returned by
+.ZN XCreateFontSet
+so that the metrics represent the text as it will actually be drawn.
+The behavior for an invalid codepoint is undefined.
+.LP
+The function
+.ZN Xutf8TextExtents
+is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
+release. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
+.SH "SEE ALSO"
+XmbTextEscapement(__libmansuffix__),
+XmbTextPerCharExtents(__libmansuffix__)
+\fI\*(xL\fP
diff --git a/libX11/man/XmbTextListToTextProperty.man b/libX11/man/XmbTextListToTextProperty.man
index 5f1aad748..0c9a9d855 100644
--- a/libX11/man/XmbTextListToTextProperty.man
+++ b/libX11/man/XmbTextListToTextProperty.man
@@ -1,459 +1,459 @@
-'\" t
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XmbTextListToTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XmbTextListToTextProperty, XwcTextListToTextProperty, Xutf8TextListToTextProperty, XmbTextPropertyToTextList, XwcTextPropertyToTextList, Xutf8TextPropertyToTextList, XwcFreeStringList, XDefaultString \- convert text lists and text property structures
-.SH SYNTAX
-.HP
-int XmbTextListToTextProperty\^(\^Display *\fIdisplay\fP\^, char
-**\fIlist\fP\^, int \fIcount\fP\^, XICCEncodingStyle \fIstyle\fP\^,
-XTextProperty *\fItext_prop_return\fP\^);
-.HP
-int XwcTextListToTextProperty\^(\^Display *\fIdisplay\fP\^, wchar_t
-**\fIlist\fP\^, int \fIcount\fP\^, XICCEncodingStyle \fIstyle\fP\^,
-XTextProperty *\fItext_prop_return\fP\^);
-.HP
-int Xutf8TextListToTextProperty\^(\^Display *\fIdisplay\fP\^, char
-**\fIlist\fP\^, int \fIcount\fP\^, XICCEncodingStyle \fIstyle\fP\^,
-XTextProperty *\fItext_prop_return\fP\^);
-.HP
-int XmbTextPropertyToTextList\^(\^Display *\fIdisplay\fP\^, XTextProperty
-*\fItext_prop\fP\^, char ***\fIlist_return\fP\^, int *\fIcount_return\fP\^);
-.HP
-int XwcTextPropertyToTextList\^(\^Display *\fIdisplay\fP\^, XTextProperty
-*\fItext_prop\fP\^, wchar_t ***\fIlist_return\fP\^, int
-*\fIcount_return\fP\^);
-.HP
-int Xutf8TextPropertyToTextList\^(\^Display *\fIdisplay\fP\^, XTextProperty
-*\fItext_prop\fP\^, char ***\fIlist_return\fP\^, int *\fIcount_return\fP\^);
-.HP
-void XwcFreeStringList\^(\^wchar_t **\fIlist\fP\^);
-.HP
-char *XDefaultString\^(void)
-.SH ARGUMENTS
-.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
-.ZN XTextProperty
-structure.
-.IP \fItext_prop\fP 1i
-Specifies the
-.ZN 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.
-.IP \fIlist\fP 1i
-Specifies the list of strings to be freed.
-.SH DESCRIPTION
-The
-.ZN XmbTextListToTextProperty ,
-.ZN XwcTextListToTextProperty
-and
-.ZN Xutf8TextListToTextProperty
-functions set the specified
-.ZN XTextProperty
-value to a set of null-separated elements representing the concatenation
-of the specified list of null-terminated text strings. The input text
-strings must be given in the current locale encoding (for
-.ZN XmbTextListToTextProperty
-and
-.ZN XwcTextListToTextProperty ),
-or in UTF-8 encoding (for
-.ZN Xutf8TextListToTextProperty ).
-.LP
-The functions set the encoding field of text_prop_return to an
-.ZN 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
-.ZN XStringStyle
-or
-.ZN XCompoundTextStyle
-is specified,
-this encoding is ``STRING'' or ``COMPOUND_TEXT'', respectively.
-If the style
-.ZN XUTF8StringStyle
-is specified,
-this encoding is ``UTF8_STRING''.
-(This is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
-release. Its presence is indicated by the macro
-.ZN X_HAVE_UTF8_STRING .)
-If the style
-.ZN XTextStyle
-is specified,
-this encoding is the encoding of the current locale.
-If the style
-.ZN XStdICCTextStyle
-is specified,
-this encoding is ``STRING'' if the text is fully convertible to STRING,
-else ``COMPOUND_TEXT''.
-A final terminating null byte is stored at the end of the value field
-of text_prop_return but is not included in the nitems member.
-.LP
-If insufficient memory is available for the new value string,
-the functions return
-.ZN XNoMemory .
-If the current locale is not supported,
-the functions return
-.ZN 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
-.ZN XLocaleNotSupported ,
-use
-.ZN 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
-.ZN Success .
-Note that full convertibility to all styles except
-.ZN XStringStyle
-is guaranteed.
-.LP
-To free the storage for the value field, use
-.ZN XFree .
-.LP
-The
-.ZN XmbTextPropertyToTextList ,
-.ZN XwcTextPropertyToTextList
-and
-.ZN Xutf8TextPropertyToTextList
-functions return a list of text strings representing the
-null-separated elements of the specified
-.ZN XTextProperty
-structure. The returned strings are encoded using the current locale encoding
-(for
-.ZN XmbTextPropertyToTextList
-and
-.ZN XwcTextPropertyToTextList )
-or in UTF-8 (for
-.ZN Xutf8TextPropertyToTextList ).
-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,
-.ZN XmbTextPropertyToTextList ,
-.ZN XwcTextPropertyToTextList
-and
-.ZN Xutf8TextPropertyToTextList
-return
-.ZN XNoMemory .
-If the current locale is not supported,
-the functions return
-.ZN XLocaleNotSupported .
-Otherwise, if the encoding field of text_prop is not convertible
-to the encoding of the current locale,
-the functions return
-.ZN XConverterNotFound .
-For supported locales,
-existence of a converter from COMPOUND_TEXT, STRING, UTF8_STRING
-or the encoding of the current locale is guaranteed if
-.ZN XSupportsLocale
-returns
-.ZN 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,
-.ZN XmbTextPropertyToTextList ,
-.ZN XwcTextPropertyToTextList
-and
-.ZN Xutf8TextPropertyToTextList
-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
-.ZN XDefaultString .
-Otherwise,
-.ZN XmbTextPropertyToTextList ,
-.ZN XwcTextPropertyToTextList
-and
-.ZN Xutf8TextPropertyToTextList
-return
-.ZN Success .
-.LP
-To free the storage for the list and its contents returned by
-.ZN XmbTextPropertyToTextList
-or
-.ZN Xutf8TextPropertyToTextList ,
-use
-.ZN XFreeStringList .
-To free the storage for the list and its contents returned by
-.ZN XwcTextPropertyToTextList ,
-use
-.ZN XwcFreeStringList .
-.LP
-The
-.ZN XwcFreeStringList
-function frees memory allocated by
-.ZN XwcTextPropertyToTextList .
-.LP
-The
-.ZN XDefaultString
-function returns the default string used by Xlib for text conversion
-(for example, in
-.ZN 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
-.ZN XDefaultString
-is the empty string ("\^"),
-no character is output in the converted text.
-.ZN XDefaultString
-does not return NULL.
-.LP
-The string returned by
-.ZN XDefaultString
-is independent of the default string for text drawing;
-see
-.ZN XCreateFontSet
-to obtain the default string for an
-.ZN 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.
-.LP
-The functions
-.ZN Xutf8TextListToTextProperty
-and
-.ZN Xutf8TextPropertyToTextList
-are extensions introduced by The XFree86 Project, Inc. in their 4.0.2
-release. Their presence is
-indicated by the macro
-.ZN X_HAVE_UTF8_STRING .
-.SH STRUCTURES
-The
-.ZN XTextProperty
-structure contains:
-.LP
-.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
-The
-.ZN XICCEncodingStyle
-structure contains:
-.LP
-.TS
-lw(.5i) lw(2i) lw(2.5i).
-T{
-\&#define
-T} T{
-.ZN XNoMemory
-T} T{
-\-1
-T}
-T{
-\&#define
-T} T{
-.ZN XLocaleNotSupported
-T} T{
-\-2
-T}
-T{
-\&#define
-T} T{
-.ZN 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 */
- XUTF8StringStyle /\&* UTF8_STRING */
-} XICCEncodingStyle;
-.De
-.SH "SEE ALSO"
-XSetTextProperty(__libmansuffix__),
-XStringListToTextProperty(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" t
+.TH XmbTextListToTextProperty __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XmbTextListToTextProperty, XwcTextListToTextProperty, Xutf8TextListToTextProperty, XmbTextPropertyToTextList, XwcTextPropertyToTextList, Xutf8TextPropertyToTextList, XwcFreeStringList, XDefaultString \- convert text lists and text property structures
+.SH SYNTAX
+.HP
+int XmbTextListToTextProperty\^(\^Display *\fIdisplay\fP\^, char
+**\fIlist\fP\^, int \fIcount\fP\^, XICCEncodingStyle \fIstyle\fP\^,
+XTextProperty *\fItext_prop_return\fP\^);
+.HP
+int XwcTextListToTextProperty\^(\^Display *\fIdisplay\fP\^, wchar_t
+**\fIlist\fP\^, int \fIcount\fP\^, XICCEncodingStyle \fIstyle\fP\^,
+XTextProperty *\fItext_prop_return\fP\^);
+.HP
+int Xutf8TextListToTextProperty\^(\^Display *\fIdisplay\fP\^, char
+**\fIlist\fP\^, int \fIcount\fP\^, XICCEncodingStyle \fIstyle\fP\^,
+XTextProperty *\fItext_prop_return\fP\^);
+.HP
+int XmbTextPropertyToTextList\^(\^Display *\fIdisplay\fP\^, XTextProperty
+*\fItext_prop\fP\^, char ***\fIlist_return\fP\^, int *\fIcount_return\fP\^);
+.HP
+int XwcTextPropertyToTextList\^(\^Display *\fIdisplay\fP\^, XTextProperty
+*\fItext_prop\fP\^, wchar_t ***\fIlist_return\fP\^, int
+*\fIcount_return\fP\^);
+.HP
+int Xutf8TextPropertyToTextList\^(\^Display *\fIdisplay\fP\^, XTextProperty
+*\fItext_prop\fP\^, char ***\fIlist_return\fP\^, int *\fIcount_return\fP\^);
+.HP
+void XwcFreeStringList\^(\^wchar_t **\fIlist\fP\^);
+.HP
+char *XDefaultString\^(void)
+.SH ARGUMENTS
+.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
+.ZN XTextProperty
+structure.
+.IP \fItext_prop\fP 1i
+Specifies the
+.ZN 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.
+.IP \fIlist\fP 1i
+Specifies the list of strings to be freed.
+.SH DESCRIPTION
+The
+.ZN XmbTextListToTextProperty ,
+.ZN XwcTextListToTextProperty
+and
+.ZN Xutf8TextListToTextProperty
+functions set the specified
+.ZN XTextProperty
+value to a set of null-separated elements representing the concatenation
+of the specified list of null-terminated text strings. The input text
+strings must be given in the current locale encoding (for
+.ZN XmbTextListToTextProperty
+and
+.ZN XwcTextListToTextProperty ),
+or in UTF-8 encoding (for
+.ZN Xutf8TextListToTextProperty ).
+.LP
+The functions set the encoding field of text_prop_return to an
+.ZN 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
+.ZN XStringStyle
+or
+.ZN XCompoundTextStyle
+is specified,
+this encoding is ``STRING'' or ``COMPOUND_TEXT'', respectively.
+If the style
+.ZN XUTF8StringStyle
+is specified,
+this encoding is ``UTF8_STRING''.
+(This is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
+release. Its presence is indicated by the macro
+.ZN X_HAVE_UTF8_STRING .)
+If the style
+.ZN XTextStyle
+is specified,
+this encoding is the encoding of the current locale.
+If the style
+.ZN XStdICCTextStyle
+is specified,
+this encoding is ``STRING'' if the text is fully convertible to STRING,
+else ``COMPOUND_TEXT''.
+A final terminating null byte is stored at the end of the value field
+of text_prop_return but is not included in the nitems member.
+.LP
+If insufficient memory is available for the new value string,
+the functions return
+.ZN XNoMemory .
+If the current locale is not supported,
+the functions return
+.ZN 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
+.ZN XLocaleNotSupported ,
+use
+.ZN 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
+.ZN Success .
+Note that full convertibility to all styles except
+.ZN XStringStyle
+is guaranteed.
+.LP
+To free the storage for the value field, use
+.ZN XFree .
+.LP
+The
+.ZN XmbTextPropertyToTextList ,
+.ZN XwcTextPropertyToTextList
+and
+.ZN Xutf8TextPropertyToTextList
+functions return a list of text strings representing the
+null-separated elements of the specified
+.ZN XTextProperty
+structure. The returned strings are encoded using the current locale encoding
+(for
+.ZN XmbTextPropertyToTextList
+and
+.ZN XwcTextPropertyToTextList )
+or in UTF-8 (for
+.ZN Xutf8TextPropertyToTextList ).
+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,
+.ZN XmbTextPropertyToTextList ,
+.ZN XwcTextPropertyToTextList
+and
+.ZN Xutf8TextPropertyToTextList
+return
+.ZN XNoMemory .
+If the current locale is not supported,
+the functions return
+.ZN XLocaleNotSupported .
+Otherwise, if the encoding field of text_prop is not convertible
+to the encoding of the current locale,
+the functions return
+.ZN XConverterNotFound .
+For supported locales,
+existence of a converter from COMPOUND_TEXT, STRING, UTF8_STRING
+or the encoding of the current locale is guaranteed if
+.ZN XSupportsLocale
+returns
+.ZN 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,
+.ZN XmbTextPropertyToTextList ,
+.ZN XwcTextPropertyToTextList
+and
+.ZN Xutf8TextPropertyToTextList
+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
+.ZN XDefaultString .
+Otherwise,
+.ZN XmbTextPropertyToTextList ,
+.ZN XwcTextPropertyToTextList
+and
+.ZN Xutf8TextPropertyToTextList
+return
+.ZN Success .
+.LP
+To free the storage for the list and its contents returned by
+.ZN XmbTextPropertyToTextList
+or
+.ZN Xutf8TextPropertyToTextList ,
+use
+.ZN XFreeStringList .
+To free the storage for the list and its contents returned by
+.ZN XwcTextPropertyToTextList ,
+use
+.ZN XwcFreeStringList .
+.LP
+The
+.ZN XwcFreeStringList
+function frees memory allocated by
+.ZN XwcTextPropertyToTextList .
+.LP
+The
+.ZN XDefaultString
+function returns the default string used by Xlib for text conversion
+(for example, in
+.ZN 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
+.ZN XDefaultString
+is the empty string ("\^"),
+no character is output in the converted text.
+.ZN XDefaultString
+does not return NULL.
+.LP
+The string returned by
+.ZN XDefaultString
+is independent of the default string for text drawing;
+see
+.ZN XCreateFontSet
+to obtain the default string for an
+.ZN 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.
+.LP
+The functions
+.ZN Xutf8TextListToTextProperty
+and
+.ZN Xutf8TextPropertyToTextList
+are extensions introduced by The XFree86 Project, Inc. in their 4.0.2
+release. Their presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
+.SH STRUCTURES
+The
+.ZN XTextProperty
+structure contains:
+.LP
+.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
+The
+.ZN XICCEncodingStyle
+structure contains:
+.LP
+.TS
+lw(.5i) lw(2i) lw(2.5i).
+T{
+\&#define
+T} T{
+.ZN XNoMemory
+T} T{
+\-1
+T}
+T{
+\&#define
+T} T{
+.ZN XLocaleNotSupported
+T} T{
+\-2
+T}
+T{
+\&#define
+T} T{
+.ZN 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 */
+ XUTF8StringStyle /\&* UTF8_STRING */
+} XICCEncodingStyle;
+.De
+.SH "SEE ALSO"
+XSetTextProperty(__libmansuffix__),
+XStringListToTextProperty(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XmbTextPerCharExtents.man b/libX11/man/XmbTextPerCharExtents.man
index cfaa1533e..7d96a2399 100644
--- a/libX11/man/XmbTextPerCharExtents.man
+++ b/libX11/man/XmbTextPerCharExtents.man
@@ -1,256 +1,256 @@
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-.\" Copyright \(co 2000 The XFree86 Project, Inc.
-.\"
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XmbTextPerCharExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XmbTextPerCharExtents, XwcTextPerCharExtents, Xutf8TextPerCharExtents \- obtain per-character information for a text string
-.SH SYNTAX
-.HP
-Status XmbTextPerCharExtents\^(\^XFontSet \fIfont_set\fP\^, char
-*\fIstring\fP\^, int \fInum_bytes\fP\^, XRectangle *\fIink_array_return\fP\^,
-XRectangle *\fIlogical_array_return\fP\^, int \fIarray_size\fP\^, int
-*\fInum_chars_return\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle
-*\fIoverall_logical_return\fP\^);
-.HP
-Status XwcTextPerCharExtents\^(\^XFontSet \fIfont_set\fP\^, wchar_t
-*\fIstring\fP\^, int \fInum_wchars\fP\^, XRectangle
-*\fIink_array_return\fP\^, XRectangle *\fIlogical_array_return\fP, int
-\fIarray_size\fP\^, int *\fInum_chars_return\fP\^, XRectangle
-*\fIoverall_ink_return\fP\^, XRectangle *\fIoverall_logical_return\fP\^);
-.HP
-Status Xutf8TextPerCharExtents\^(\^XFontSet \fIfont_set\fP\^, char
-*\fIstring\fP\^, int \fInum_bytes\fP\^, XRectangle *\fIink_array_return\fP\^,
-XRectangle *\fIlogical_array_return\fP\^, int \fIarray_size\fP\^, int
-*\fInum_chars_return\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle
-*\fIoverall_logical_return\fP\^);
-.SH ARGUMENTS
-.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 \fIfont_set\fP 1i
-Specifies the font set.
-.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 \fInum_bytes\fP 1i
-Specifies the number of bytes in the string argument.
-.IP \fInum_chars_return\fP 1i
-Returns the number of characters in the string argument.
-.IP \fInum_wchars\fP 1i
-Specifies 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.
-.IP \fIstring\fP 1i
-Specifies the character string.
-.SH DESCRIPTION
-The
-.ZN XmbTextPerCharExtents ,
-.ZN XwcTextPerCharExtents
-and
-.ZN Xutf8TextPerCharExtents
-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
-.ZN 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
-.ZN XRectangles
-of those characters are the same.
-.LP
-When the
-.ZN XFontSet
-has missing charsets, metrics for each unavailable
-character are taken from the default string returned by
-.ZN 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,
-.ZN XmbTextPerCharExtents ,
-.ZN XwcTextPerCharExtents
-and
-.ZN Xutf8TextPerCharExtents
-return the maximum extent of the string's metrics to overall_ink_return
-or overall_logical_return, as returned by
-.ZN XmbTextExtents ,
-.ZN XwcTextExtents
-or
-.ZN Xutf8TextExtents .
-.LP
-The function
-.ZN Xutf8TextPerCharExtents
-is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
-release. Its presence is
-indicated by the macro
-.ZN X_HAVE_UTF8_STRING .
-.SH "SEE ALSO"
-XmbTextEscapement(__libmansuffix__),
-XmbTextExtents(__libmansuffix__)
-\fI\*(xL\fP
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+.\" Copyright \(co 2000 The XFree86 Project, Inc.
+.\"
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XmbTextPerCharExtents __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XmbTextPerCharExtents, XwcTextPerCharExtents, Xutf8TextPerCharExtents \- obtain per-character information for a text string
+.SH SYNTAX
+.HP
+Status XmbTextPerCharExtents\^(\^XFontSet \fIfont_set\fP\^, char
+*\fIstring\fP\^, int \fInum_bytes\fP\^, XRectangle *\fIink_array_return\fP\^,
+XRectangle *\fIlogical_array_return\fP\^, int \fIarray_size\fP\^, int
+*\fInum_chars_return\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle
+*\fIoverall_logical_return\fP\^);
+.HP
+Status XwcTextPerCharExtents\^(\^XFontSet \fIfont_set\fP\^, wchar_t
+*\fIstring\fP\^, int \fInum_wchars\fP\^, XRectangle
+*\fIink_array_return\fP\^, XRectangle *\fIlogical_array_return\fP, int
+\fIarray_size\fP\^, int *\fInum_chars_return\fP\^, XRectangle
+*\fIoverall_ink_return\fP\^, XRectangle *\fIoverall_logical_return\fP\^);
+.HP
+Status Xutf8TextPerCharExtents\^(\^XFontSet \fIfont_set\fP\^, char
+*\fIstring\fP\^, int \fInum_bytes\fP\^, XRectangle *\fIink_array_return\fP\^,
+XRectangle *\fIlogical_array_return\fP\^, int \fIarray_size\fP\^, int
+*\fInum_chars_return\fP\^, XRectangle *\fIoverall_ink_return\fP\^, XRectangle
+*\fIoverall_logical_return\fP\^);
+.SH ARGUMENTS
+.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 \fIfont_set\fP 1i
+Specifies the font set.
+.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 \fInum_bytes\fP 1i
+Specifies the number of bytes in the string argument.
+.IP \fInum_chars_return\fP 1i
+Returns the number of characters in the string argument.
+.IP \fInum_wchars\fP 1i
+Specifies 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.
+.IP \fIstring\fP 1i
+Specifies the character string.
+.SH DESCRIPTION
+The
+.ZN XmbTextPerCharExtents ,
+.ZN XwcTextPerCharExtents
+and
+.ZN Xutf8TextPerCharExtents
+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
+.ZN 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
+.ZN XRectangles
+of those characters are the same.
+.LP
+When the
+.ZN XFontSet
+has missing charsets, metrics for each unavailable
+character are taken from the default string returned by
+.ZN 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,
+.ZN XmbTextPerCharExtents ,
+.ZN XwcTextPerCharExtents
+and
+.ZN Xutf8TextPerCharExtents
+return the maximum extent of the string's metrics to overall_ink_return
+or overall_logical_return, as returned by
+.ZN XmbTextExtents ,
+.ZN XwcTextExtents
+or
+.ZN Xutf8TextExtents .
+.LP
+The function
+.ZN Xutf8TextPerCharExtents
+is an extension introduced by The XFree86 Project, Inc. in their 4.0.2
+release. Its presence is
+indicated by the macro
+.ZN X_HAVE_UTF8_STRING .
+.SH "SEE ALSO"
+XmbTextEscapement(__libmansuffix__),
+XmbTextExtents(__libmansuffix__)
+\fI\*(xL\fP
diff --git a/libX11/man/XrmEnumerateDatabase.man b/libX11/man/XrmEnumerateDatabase.man
index 4fe68172e..a11c658bf 100644
--- a/libX11/man/XrmEnumerateDatabase.man
+++ b/libX11/man/XrmEnumerateDatabase.man
@@ -1,234 +1,234 @@
-'\" t
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" t
-.TH XrmEnumerateDatabase __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XrmEnumerateDatabase \- enumerate resource database entries
-.SH SYNTAX
-.TS
-lw(.5i) lw(2i) lw(2.5i).
-T{
-\&#define
-T} T{
-.ZN XrmEnumAllLevels
-T} T{
-0
-T}
-T{
-\&#define
-T} T{
-.ZN XrmEnumOneLevel
-T} T{
-1
-T}
-.TE
-.HP
-Bool XrmEnumerateDatabase\^(\^XrmDatabase \fIdatabase\fP\^, XrmNameList
-\fIname_prefix\fP\^, XrmClassList \fIclass_prefix\fP\^, int \fImode\fP\^, Bool
-(\^*\fIproc\fP\^)\^(\^)\^, XPointer \fIarg\fP\^);
-.SH ARGUMENTS
-.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.
-.SH DESCRIPTION
-The
-.ZN 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
-.ZN XrmEnumOneLevel ,
-a resource must match the given name/class prefix with
-just a single name and class appended. If mode is
-.ZN XrmEnumAllLevels ,
-the resource must match the given name/class prefix with one or more names and
-classes appended.
-If the procedure returns
-.ZN True ,
-the enumeration terminates and the function returns
-.ZN True .
-If the procedure always returns
-.ZN False ,
-all matching resources are enumerated and the function returns
-.ZN 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
-.ZN 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.
-.SH "SEE ALSO"
-XrmGetResource(__libmansuffix__),
-XrmInitialize(__libmansuffix__),
-XrmPutResource(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" t
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" t
+.TH XrmEnumerateDatabase __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XrmEnumerateDatabase \- enumerate resource database entries
+.SH SYNTAX
+.TS
+lw(.5i) lw(2i) lw(2.5i).
+T{
+\&#define
+T} T{
+.ZN XrmEnumAllLevels
+T} T{
+0
+T}
+T{
+\&#define
+T} T{
+.ZN XrmEnumOneLevel
+T} T{
+1
+T}
+.TE
+.HP
+Bool XrmEnumerateDatabase\^(\^XrmDatabase \fIdatabase\fP\^, XrmNameList
+\fIname_prefix\fP\^, XrmClassList \fIclass_prefix\fP\^, int \fImode\fP\^, Bool
+(\^*\fIproc\fP\^)\^(\^)\^, XPointer \fIarg\fP\^);
+.SH ARGUMENTS
+.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.
+.SH DESCRIPTION
+The
+.ZN 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
+.ZN XrmEnumOneLevel ,
+a resource must match the given name/class prefix with
+just a single name and class appended. If mode is
+.ZN XrmEnumAllLevels ,
+the resource must match the given name/class prefix with one or more names and
+classes appended.
+If the procedure returns
+.ZN True ,
+the enumeration terminates and the function returns
+.ZN True .
+If the procedure always returns
+.ZN False ,
+all matching resources are enumerated and the function returns
+.ZN 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
+.ZN 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.
+.SH "SEE ALSO"
+XrmGetResource(__libmansuffix__),
+XrmInitialize(__libmansuffix__),
+XrmPutResource(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XrmGetFileDatabase.man b/libX11/man/XrmGetFileDatabase.man
index 08d0810ff..67190a02e 100644
--- a/libX11/man/XrmGetFileDatabase.man
+++ b/libX11/man/XrmGetFileDatabase.man
@@ -1,323 +1,323 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.de EX
-.sp
-.nf
-.ft CW
-..
-.de EE
-.ft R
-.fi
-.sp
-..
-.TH XrmGetFileDatabase __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XrmGetFileDatabase, XrmPutFileDatabase, XrmGetStringDatabase, XrmLocaleOfDatabase, XrmGetDatabase, XrmSetDatabase, XrmDestroyDatabase \- retrieve and store resource databases
-.SH SYNTAX
-.HP
-XrmDatabase XrmGetFileDatabase\^(\^char *\fIfilename\fP\^);
-.HP
-void XrmPutFileDatabase\^(\^XrmDatabase \fIdatabase\fP\^, char
-*\fIstored_db\fP\^);
-.HP
-XrmDatabase XrmGetStringDatabase\^(\^char *\fIdata\fP\^,
-.HP
-char *XrmLocaleOfDatabase\^(\^XrmDatabase \fIdatabase\fP\^);
-.HP
-XrmDatabase XrmGetDatabase\^(\^Display *\fIdisplay\fP\^);
-.HP
-void XrmSetDatabase\^(\^Display *\fIdisplay\fP\^, XrmDatabase
-\fIdatabase\fP\^);
-.HP
-void XrmDestroyDatabase\^(\^XrmDatabase \fIdatabase\fP\^);
-.SH ARGUMENTS
-.IP \fIfilename\fP 1i
-Specifies the resource database file name.
-.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.
-.IP \fIdata\fP 1i
-Specifies the database contents using a string.
-.IP \fIdatabase\fP 1i
-Specifies the resource database.
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.SH DESCRIPTION
-The
-.ZN 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,
-.ZN XrmGetFileDatabase
-returns NULL.
-.LP
-The
-.ZN 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
-The
-.ZN XrmGetStringDatabase
-function creates a new database and stores the resources specified
-in the specified null-terminated string.
-.ZN XrmGetStringDatabase
-is similar to
-.ZN 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
-If database is NULL,
-.ZN XrmDestroyDatabase
-returns immediately.
-.LP
-The
-.ZN 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
-The
-.ZN XrmGetDatabase
-function returns the database associated with the specified display.
-It returns NULL if a database has not yet been set.
-.LP
-The
-.ZN 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.
-.SH "FILE SYNTAX"
-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
-.EX
-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>}
-.EE
-.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 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.
-.SH "SEE ALSO"
-XrmGetResource(__libmansuffix__),
-XrmInitialize(__libmansuffix__),
-XrmPutResource(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.de EX
+.sp
+.nf
+.ft CW
+..
+.de EE
+.ft R
+.fi
+.sp
+..
+.TH XrmGetFileDatabase __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XrmGetFileDatabase, XrmPutFileDatabase, XrmGetStringDatabase, XrmLocaleOfDatabase, XrmGetDatabase, XrmSetDatabase, XrmDestroyDatabase \- retrieve and store resource databases
+.SH SYNTAX
+.HP
+XrmDatabase XrmGetFileDatabase\^(\^char *\fIfilename\fP\^);
+.HP
+void XrmPutFileDatabase\^(\^XrmDatabase \fIdatabase\fP\^, char
+*\fIstored_db\fP\^);
+.HP
+XrmDatabase XrmGetStringDatabase\^(\^char *\fIdata\fP\^,
+.HP
+char *XrmLocaleOfDatabase\^(\^XrmDatabase \fIdatabase\fP\^);
+.HP
+XrmDatabase XrmGetDatabase\^(\^Display *\fIdisplay\fP\^);
+.HP
+void XrmSetDatabase\^(\^Display *\fIdisplay\fP\^, XrmDatabase
+\fIdatabase\fP\^);
+.HP
+void XrmDestroyDatabase\^(\^XrmDatabase \fIdatabase\fP\^);
+.SH ARGUMENTS
+.IP \fIfilename\fP 1i
+Specifies the resource database file name.
+.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.
+.IP \fIdata\fP 1i
+Specifies the database contents using a string.
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.SH DESCRIPTION
+The
+.ZN 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,
+.ZN XrmGetFileDatabase
+returns NULL.
+.LP
+The
+.ZN 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
+The
+.ZN XrmGetStringDatabase
+function creates a new database and stores the resources specified
+in the specified null-terminated string.
+.ZN XrmGetStringDatabase
+is similar to
+.ZN 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
+If database is NULL,
+.ZN XrmDestroyDatabase
+returns immediately.
+.LP
+The
+.ZN 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
+The
+.ZN XrmGetDatabase
+function returns the database associated with the specified display.
+It returns NULL if a database has not yet been set.
+.LP
+The
+.ZN 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.
+.SH "FILE SYNTAX"
+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
+.EX
+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>}
+.EE
+.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 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.
+.SH "SEE ALSO"
+XrmGetResource(__libmansuffix__),
+XrmInitialize(__libmansuffix__),
+XrmPutResource(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XrmGetResource.man b/libX11/man/XrmGetResource.man
index 2745892dc..651992eb0 100644
--- a/libX11/man/XrmGetResource.man
+++ b/libX11/man/XrmGetResource.man
@@ -1,325 +1,325 @@
-'\" e
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-'\" e
-.TH XrmGetResource __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XrmGetResource, XrmQGetResource, XrmQGetSearchList, XrmQGetSearchResource \- retrieve database resources and search lists
-.SH SYNTAX
-.HP
-Bool XrmGetResource\^(\^XrmDatabase \fIdatabase\fP\^, char *\fIstr_name\fP\^,
-char *\fIstr_class\fP\^, char **\fIstr_type_return\fP\^, XrmValue
-*\fIvalue_return\fP\^);
-.HP
-Bool XrmQGetResource\^(\^XrmDatabase \fIdatabase\fP\^, XrmNameList
-\fIquark_name\fP\^, XrmClassList \fIquark_class\fP\^, XrmRepresentation
-*\fIquark_type_return\fP\^, XrmValue *\fIvalue_return\fP\^);
-.HP
-typedef XrmHashTable *XrmSearchList;
-.sp
-Bool XrmQGetSearchList\^(\^XrmDatabase \fIdatabase\fP\^, XrmNameList
-\fInames\fP\^, XrmClassList \fIclasses\fP\^, XrmSearchList
-\fIlist_return\fP\^, int \fIlist_length\fP\^);
-.HP
-Bool XrmQGetSearchResource\^(\^XrmSearchList \fIlist\fP\^, XrmName
-\fIname\fP\^, XrmClass \fIclass\fP\^, XrmRepresentation *\fItype_return\fP\^,
-XrmValue *\fIvalue_return\fP\^);
-.SH ARGUMENTS
-.IP \fIclass\fP 1i
-Specifies the resource class.
-.IP \fIclasses\fP 1i
-Specifies a list of resource classes.
-.IP \fIdatabase\fP 1i
-Specifies the database that is to be used.
-.IP \fIlist\fP 1i
-Specifies the search list returned by
-.ZN XrmQGetSearchList .
-.IP \fIlist_length\fP 1i
-Specifies the number of entries (not the byte size) allocated for list_return.
-.IP \fIlist_return\fP 1i
-Returns a search list for further use.
-.IP \fIname\fP 1i
-Specifies the resource name.
-.IP \fInames\fP 1i
-Specifies a list of resource names.
-.IP \fIquark_class\fP 1i
-Specifies the fully qualified class of the value being retrieved (as a quark).
-.IP \fIquark_name\fP 1i
-Specifies the fully qualified name 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 \fIstr_class\fP 1i
-Specifies the fully qualified class of the value being retrieved (as a string).
-.IP \fIstr_name\fP 1i
-Specifies the fully qualified name 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 \fItype_return\fP 1i
-Returns data representation type.
-.IP \fIvalue_return\fP 1i
-Returns the value in the database.
-.SH DESCRIPTION
-The
-.ZN XrmGetResource
-and
-.ZN 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
-.ZN XrmPutResource ,
-.ZN XrmQPutResource ,
-or
-.ZN 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
-.ZN XrmGetResource
-and
-.ZN XrmQGetResource
-return
-.ZN True ;
-otherwise, they return
-.ZN False .
-.LP
-The
-.ZN 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
-.ZN XrmGetResource
-for determining precedence.
-If list_return was large enough for the search list,
-.ZN XrmQGetSearchList
-returns
-.ZN True ;
-otherwise, it returns
-.ZN 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
-.ZN 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
-.ZN XrmQGetSearchList .
-.LP
-The
-.ZN 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.
-.ZN XrmQGetSearchResource
-returns
-.ZN True
-if the resource was found;
-otherwise, it returns
-.ZN False .
-.LP
-A call to
-.ZN XrmQGetSearchList
-with a name and class list containing all but the last component
-of a resource name followed by a call to
-.ZN XrmQGetSearchResource
-with the last component name and class returns the same database entry as
-.ZN XrmGetResource
-and
-.ZN XrmQGetResource
-with the fully qualified name and class.
-.SH "MATCHING RULES"
-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 ``?'' are 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.
-.SH "SEE ALSO"
-XrmInitialize(__libmansuffix__),
-XrmMergeDatabases(__libmansuffix__),
-XrmPutResource(__libmansuffix__),
-XrmUniqueQuark(__libmansuffix__)
-.br
-\fI\*(xL\fP
+'\" e
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+'\" e
+.TH XrmGetResource __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XrmGetResource, XrmQGetResource, XrmQGetSearchList, XrmQGetSearchResource \- retrieve database resources and search lists
+.SH SYNTAX
+.HP
+Bool XrmGetResource\^(\^XrmDatabase \fIdatabase\fP\^, char *\fIstr_name\fP\^,
+char *\fIstr_class\fP\^, char **\fIstr_type_return\fP\^, XrmValue
+*\fIvalue_return\fP\^);
+.HP
+Bool XrmQGetResource\^(\^XrmDatabase \fIdatabase\fP\^, XrmNameList
+\fIquark_name\fP\^, XrmClassList \fIquark_class\fP\^, XrmRepresentation
+*\fIquark_type_return\fP\^, XrmValue *\fIvalue_return\fP\^);
+.HP
+typedef XrmHashTable *XrmSearchList;
+.sp
+Bool XrmQGetSearchList\^(\^XrmDatabase \fIdatabase\fP\^, XrmNameList
+\fInames\fP\^, XrmClassList \fIclasses\fP\^, XrmSearchList
+\fIlist_return\fP\^, int \fIlist_length\fP\^);
+.HP
+Bool XrmQGetSearchResource\^(\^XrmSearchList \fIlist\fP\^, XrmName
+\fIname\fP\^, XrmClass \fIclass\fP\^, XrmRepresentation *\fItype_return\fP\^,
+XrmValue *\fIvalue_return\fP\^);
+.SH ARGUMENTS
+.IP \fIclass\fP 1i
+Specifies the resource class.
+.IP \fIclasses\fP 1i
+Specifies a list of resource classes.
+.IP \fIdatabase\fP 1i
+Specifies the database that is to be used.
+.IP \fIlist\fP 1i
+Specifies the search list returned by
+.ZN XrmQGetSearchList .
+.IP \fIlist_length\fP 1i
+Specifies the number of entries (not the byte size) allocated for list_return.
+.IP \fIlist_return\fP 1i
+Returns a search list for further use.
+.IP \fIname\fP 1i
+Specifies the resource name.
+.IP \fInames\fP 1i
+Specifies a list of resource names.
+.IP \fIquark_class\fP 1i
+Specifies the fully qualified class of the value being retrieved (as a quark).
+.IP \fIquark_name\fP 1i
+Specifies the fully qualified name 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 \fIstr_class\fP 1i
+Specifies the fully qualified class of the value being retrieved (as a string).
+.IP \fIstr_name\fP 1i
+Specifies the fully qualified name 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 \fItype_return\fP 1i
+Returns data representation type.
+.IP \fIvalue_return\fP 1i
+Returns the value in the database.
+.SH DESCRIPTION
+The
+.ZN XrmGetResource
+and
+.ZN 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
+.ZN XrmPutResource ,
+.ZN XrmQPutResource ,
+or
+.ZN 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
+.ZN XrmGetResource
+and
+.ZN XrmQGetResource
+return
+.ZN True ;
+otherwise, they return
+.ZN False .
+.LP
+The
+.ZN 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
+.ZN XrmGetResource
+for determining precedence.
+If list_return was large enough for the search list,
+.ZN XrmQGetSearchList
+returns
+.ZN True ;
+otherwise, it returns
+.ZN 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
+.ZN 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
+.ZN XrmQGetSearchList .
+.LP
+The
+.ZN 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.
+.ZN XrmQGetSearchResource
+returns
+.ZN True
+if the resource was found;
+otherwise, it returns
+.ZN False .
+.LP
+A call to
+.ZN XrmQGetSearchList
+with a name and class list containing all but the last component
+of a resource name followed by a call to
+.ZN XrmQGetSearchResource
+with the last component name and class returns the same database entry as
+.ZN XrmGetResource
+and
+.ZN XrmQGetResource
+with the fully qualified name and class.
+.SH "MATCHING RULES"
+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 ``?'' are 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.
+.SH "SEE ALSO"
+XrmInitialize(__libmansuffix__),
+XrmMergeDatabases(__libmansuffix__),
+XrmPutResource(__libmansuffix__),
+XrmUniqueQuark(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XrmInitialize.man b/libX11/man/XrmInitialize.man
index 3e6dcd1a7..813ed1cd8 100644
--- a/libX11/man/XrmInitialize.man
+++ b/libX11/man/XrmInitialize.man
@@ -1,263 +1,263 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XrmInitialize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XrmInitialize, XrmParseCommand, XrmValue, XrmOptionKind, XrmOptionDescRec \- initialize the Resource Manager, Resource Manager structures, and parse the command line
-.SH SYNTAX
-.HP
-void XrmInitialize\^(void\^);
-.HP
-void XrmParseCommand\^(\^XrmDatabase *\fIdatabase\fP\^, XrmOptionDescList
-\fItable\fP\^, int \fItable_count\fP\^, char *\fIname\fP\^, int
-*\fIargc_in_out\fP\^, char **\fIargv_in_out\fP\^);
-.SH ARGUMENTS
-.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.
-.IP \fIdatabase\fP 1i
-Specifies the resource database.
-.IP \fIname\fP 1i
-Specifies the application name.
-.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.
-.SH DESCRIPTION
-The
-.ZN XrmInitialize
-function initialize the resource manager.
-It must be called before any other Xrm functions are used.
-.LP
-The
-.ZN 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,
-.ZN 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
-.ZN 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.
-.SH STRUCTURES
-The
-.ZN XrmValue ,
-.ZN XrmOptionKind ,
-and
-.ZN XrmOptionDescRec
-structures contain:
-.LP
-.Ds 0
-.TA .5i 3i
-.ta .5i 3i
-typedef struct {
- unsigned int size;
- XPointer addr;
-} XrmValue, *XrmValuePtr;
-.De
-.LP
-.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
-.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
-.SH "SEE ALSO"
-XrmGetResource(__libmansuffix__),
-XrmMergeDatabases(__libmansuffix__),
-XrmPutResource(__libmansuffix__),
-XrmUniqueQuark(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XrmInitialize __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XrmInitialize, XrmParseCommand, XrmValue, XrmOptionKind, XrmOptionDescRec \- initialize the Resource Manager, Resource Manager structures, and parse the command line
+.SH SYNTAX
+.HP
+void XrmInitialize\^(void\^);
+.HP
+void XrmParseCommand\^(\^XrmDatabase *\fIdatabase\fP\^, XrmOptionDescList
+\fItable\fP\^, int \fItable_count\fP\^, char *\fIname\fP\^, int
+*\fIargc_in_out\fP\^, char **\fIargv_in_out\fP\^);
+.SH ARGUMENTS
+.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.
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.IP \fIname\fP 1i
+Specifies the application name.
+.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.
+.SH DESCRIPTION
+The
+.ZN XrmInitialize
+function initialize the resource manager.
+It must be called before any other Xrm functions are used.
+.LP
+The
+.ZN 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,
+.ZN 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
+.ZN 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.
+.SH STRUCTURES
+The
+.ZN XrmValue ,
+.ZN XrmOptionKind ,
+and
+.ZN XrmOptionDescRec
+structures contain:
+.LP
+.Ds 0
+.TA .5i 3i
+.ta .5i 3i
+typedef struct {
+ unsigned int size;
+ XPointer addr;
+} XrmValue, *XrmValuePtr;
+.De
+.LP
+.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
+.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
+.SH "SEE ALSO"
+XrmGetResource(__libmansuffix__),
+XrmMergeDatabases(__libmansuffix__),
+XrmPutResource(__libmansuffix__),
+XrmUniqueQuark(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XrmMergeDatabases.man b/libX11/man/XrmMergeDatabases.man
index bb4d3bdda..2139448e1 100644
--- a/libX11/man/XrmMergeDatabases.man
+++ b/libX11/man/XrmMergeDatabases.man
@@ -1,215 +1,215 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XrmMergeDatabases __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XrmMergeDatabases, XrmCombineDatabase, XrmCombineFileDatabase \- merge resource databases
-.SH SYNTAX
-.HP
-void XrmMergeDatabases(\^XrmDatabase \fIsource_db\fP, XrmDatabase
-*\fItarget_db\fP\^);
-.HP
-void XrmCombineDatabase(\^XrmDatabase \fIsource_db\fP, XrmDatabase
-*\fItarget_db\fP, Bool \fIoverride\fP\^);
-.HP
-Status XrmCombineFileDatabase(\^char *\fIfilename\fP, XrmDatabase
-*\fItarget_db\fP\^, Bool \fIoverride\fP);
-.SH ARGUMENTS
-.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 \fIfilename\fP 1i
-Specifies the resource database file name.
-.IP \fIoverride\fP 1i
-Specifies whether source entries override target ones.
-.SH DESCRIPTION
-Calling the
-.ZN XrmMergeDatabases
-function is equivalent to calling the
-.ZN XrmCombineDatabase
-function with an override argument of
-.ZN True .
-.LP
-The
-.ZN 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
-.ZN True ;
-otherwise, the entry in source_db is discarded.
-If target_db contains NULL,
-.ZN 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
-The
-.ZN 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
-.ZN 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,
-.ZN 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.
-.SH "SEE ALSO"
-XrmGetResource(__libmansuffix__),
-XrmInitialize(__libmansuffix__),
-XrmPutResource(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XrmMergeDatabases __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XrmMergeDatabases, XrmCombineDatabase, XrmCombineFileDatabase \- merge resource databases
+.SH SYNTAX
+.HP
+void XrmMergeDatabases(\^XrmDatabase \fIsource_db\fP, XrmDatabase
+*\fItarget_db\fP\^);
+.HP
+void XrmCombineDatabase(\^XrmDatabase \fIsource_db\fP, XrmDatabase
+*\fItarget_db\fP, Bool \fIoverride\fP\^);
+.HP
+Status XrmCombineFileDatabase(\^char *\fIfilename\fP, XrmDatabase
+*\fItarget_db\fP\^, Bool \fIoverride\fP);
+.SH ARGUMENTS
+.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 \fIfilename\fP 1i
+Specifies the resource database file name.
+.IP \fIoverride\fP 1i
+Specifies whether source entries override target ones.
+.SH DESCRIPTION
+Calling the
+.ZN XrmMergeDatabases
+function is equivalent to calling the
+.ZN XrmCombineDatabase
+function with an override argument of
+.ZN True .
+.LP
+The
+.ZN 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
+.ZN True ;
+otherwise, the entry in source_db is discarded.
+If target_db contains NULL,
+.ZN 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
+The
+.ZN 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
+.ZN 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,
+.ZN 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.
+.SH "SEE ALSO"
+XrmGetResource(__libmansuffix__),
+XrmInitialize(__libmansuffix__),
+XrmPutResource(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XrmPutResource.man b/libX11/man/XrmPutResource.man
index fb9638e8b..54cdf6b37 100644
--- a/libX11/man/XrmPutResource.man
+++ b/libX11/man/XrmPutResource.man
@@ -1,252 +1,252 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XrmPutResource __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XrmPutResource, XrmQPutResource, XrmPutStringResource, XrmQPutStringResource, XrmPutLineResource \- store database resources
-.SH SYNTAX
-.HP
-void XrmPutResource\^(\^XrmDatabase *\fIdatabase\fP\^, char
-*\fIspecifier\fP\^, char *\fItype\fP\^, XrmValue *\fIvalue\fP\^);
-.HP
-void XrmQPutResource\^(\^XrmDatabase *\fIdatabase\fP\^, XrmBindingList
-\fIbindings\fP\^, XrmQuarkList \fIquarks\fP\^, XrmRepresentation \fItype\fP\^,
-XrmValue *\fIvalue\fP\^);
-.HP
-void XrmPutStringResource\^(\^XrmDatabase *\fIdatabase\fP\^, char
-*\fIspecifier\fP\^, char *\fIvalue\fP\^);
-.HP
-void XrmQPutStringResource\^(\^XrmDatabase *\fIdatabase\fP\^, XrmBindingList
-\fIbindings\fP\^, XrmQuarkList \fIquarks\fP\^, char *\fIvalue\fP\^);
-.HP
-void XrmPutLineResource\^(\^XrmDatabase *\fIdatabase\fP\^, char
-*\fIline\fP\^);
-.SH ARGUMENTS
-.IP \fIbindings\fP 1i
-Specifies a list of bindings.
-.IP \fIdatabase\fP 1i
-Specifies the resource database.
-.IP \fIline\fP 1i
-Specifies the resource name and value pair as a single string.
-.IP \fIquarks\fP 1i
-Specifies the complete or partial name or the class list of the resource.
-.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.
-.SH DESCRIPTION
-If database contains NULL,
-.ZN XrmPutResource
-creates a new database and returns a pointer to it.
-.ZN XrmPutResource
-is a convenience function that calls
-.ZN XrmStringToBindingQuarkList
-followed by:
-.LP
-.Ds
-XrmQPutResource(database, bindings, quarks, XrmStringToQuark(type), value)
-.De
-.LP
-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
-If database contains NULL,
-.ZN 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
-If database contains NULL,
-.ZN XrmPutStringResource
-creates a new database and returns a pointer to it.
-.ZN XrmPutStringResource
-adds a resource with the specified value to the specified database.
-.ZN XrmPutStringResource
-is a convenience function that first calls
-.ZN XrmStringToBindingQuarkList
-on the specifier and then calls
-.ZN 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
-If database contains NULL,
-.ZN XrmQPutStringResource
-creates a new database and returns a pointer to it.
-.ZN XrmQPutStringResource
-is a convenience routine that constructs an
-.ZN XrmValue
-for the value string (by calling
-.ZN strlen
-to compute the size) and
-then calls
-.ZN XrmQPutResource ,
-using a ``String'' representation type.
-The value is stored in the database without modification.
-.LP
-If database contains NULL,
-.ZN XrmPutLineResource
-creates a new database and returns a pointer to it.
-.ZN 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
-.ZN ResourceName
-is not in the Host Portable Character Encoding,
-the result is implementation-dependent.
-Note that comment lines are not stored.
-.SH "SEE ALSO"
-XrmGetResource(__libmansuffix__),
-XrmInitialize(__libmansuffix__),
-XrmMergeDatabases(__libmansuffix__),
-XrmUniqueQuark(__libmansuffix__)
-.br
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XrmPutResource __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XrmPutResource, XrmQPutResource, XrmPutStringResource, XrmQPutStringResource, XrmPutLineResource \- store database resources
+.SH SYNTAX
+.HP
+void XrmPutResource\^(\^XrmDatabase *\fIdatabase\fP\^, char
+*\fIspecifier\fP\^, char *\fItype\fP\^, XrmValue *\fIvalue\fP\^);
+.HP
+void XrmQPutResource\^(\^XrmDatabase *\fIdatabase\fP\^, XrmBindingList
+\fIbindings\fP\^, XrmQuarkList \fIquarks\fP\^, XrmRepresentation \fItype\fP\^,
+XrmValue *\fIvalue\fP\^);
+.HP
+void XrmPutStringResource\^(\^XrmDatabase *\fIdatabase\fP\^, char
+*\fIspecifier\fP\^, char *\fIvalue\fP\^);
+.HP
+void XrmQPutStringResource\^(\^XrmDatabase *\fIdatabase\fP\^, XrmBindingList
+\fIbindings\fP\^, XrmQuarkList \fIquarks\fP\^, char *\fIvalue\fP\^);
+.HP
+void XrmPutLineResource\^(\^XrmDatabase *\fIdatabase\fP\^, char
+*\fIline\fP\^);
+.SH ARGUMENTS
+.IP \fIbindings\fP 1i
+Specifies a list of bindings.
+.IP \fIdatabase\fP 1i
+Specifies the resource database.
+.IP \fIline\fP 1i
+Specifies the resource name and value pair as a single string.
+.IP \fIquarks\fP 1i
+Specifies the complete or partial name or the class list of the resource.
+.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.
+.SH DESCRIPTION
+If database contains NULL,
+.ZN XrmPutResource
+creates a new database and returns a pointer to it.
+.ZN XrmPutResource
+is a convenience function that calls
+.ZN XrmStringToBindingQuarkList
+followed by:
+.LP
+.Ds
+XrmQPutResource(database, bindings, quarks, XrmStringToQuark(type), value)
+.De
+.LP
+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
+If database contains NULL,
+.ZN 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
+If database contains NULL,
+.ZN XrmPutStringResource
+creates a new database and returns a pointer to it.
+.ZN XrmPutStringResource
+adds a resource with the specified value to the specified database.
+.ZN XrmPutStringResource
+is a convenience function that first calls
+.ZN XrmStringToBindingQuarkList
+on the specifier and then calls
+.ZN 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
+If database contains NULL,
+.ZN XrmQPutStringResource
+creates a new database and returns a pointer to it.
+.ZN XrmQPutStringResource
+is a convenience routine that constructs an
+.ZN XrmValue
+for the value string (by calling
+.ZN strlen
+to compute the size) and
+then calls
+.ZN XrmQPutResource ,
+using a ``String'' representation type.
+The value is stored in the database without modification.
+.LP
+If database contains NULL,
+.ZN XrmPutLineResource
+creates a new database and returns a pointer to it.
+.ZN 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
+.ZN ResourceName
+is not in the Host Portable Character Encoding,
+the result is implementation-dependent.
+Note that comment lines are not stored.
+.SH "SEE ALSO"
+XrmGetResource(__libmansuffix__),
+XrmInitialize(__libmansuffix__),
+XrmMergeDatabases(__libmansuffix__),
+XrmUniqueQuark(__libmansuffix__)
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/XrmUniqueQuark.man b/libX11/man/XrmUniqueQuark.man
index 78ae2e63c..4377dad4b 100644
--- a/libX11/man/XrmUniqueQuark.man
+++ b/libX11/man/XrmUniqueQuark.man
@@ -1,303 +1,303 @@
-.\" 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.
-.\"
-.\"
-.ds xT X Toolkit Intrinsics \- C Language Interface
-.ds xW Athena X Widgets \- C Language X Toolkit Interface
-.ds xL Xlib \- C Language X Interface
-.ds xC Inter-Client Communication Conventions Manual
-.na
-.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 De
-.ce 0
-.if \\n(BD .DF
-.nr BD 0
-.in \\n(OIu
-.if \\n(TM .ls 2
-.sp \\n(DDu
-.fi
-..
-.de FD
-.LP
-.KS
-.TA .5i 3i
-.ta .5i 3i
-.nf
-..
-.de FN
-.fi
-.KE
-.LP
-..
-.de IN \" send an index entry to the stderr
-..
-.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
-..
-.de C}
-.DE
-.R
-..
-.de Pn
-.ie t \\$1\fB\^\\$2\^\fR\\$3
-.el \\$1\fI\^\\$2\^\fP\\$3
-..
-.de ZN
-.ie t \fB\^\\$1\^\fR\\$2
-.el \fI\^\\$1\^\fP\\$2
-..
-.de hN
-.ie t <\fB\\$1\fR>\\$2
-.el <\fI\\$1\fP>\\$2
-..
-.de NT
-.ne 7
-.ds NO Note
-.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
-.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
-.ie n .sp
-.el .sp 10p
-.TB
-.ce
-\\*(NO
-.ie n .sp
-.el .sp 5p
-.if '\\$1'C' .ce 99
-.if '\\$2'C' .ce 99
-.in +5n
-.ll -5n
-.R
-..
-. \" Note End -- doug kraft 3/85
-.de NE
-.ce 0
-.in -5n
-.ll +5n
-.ie n .sp
-.el .sp 10p
-..
-.ny0
-.TH XrmUniqueQuark __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XrmUniqueQuark, XrmStringToQuark, XrmPermStringToQuark, XrmQuarkToString, XrmStringToQuarkList, XrmStringToBindingQuarkList \- manipulate resource quarks
-.SH SYNOPSIS
-.HP
-XrmQuark XrmUniqueQuark\^(void);
-.LP
-\&#define XrmStringToName(string) XrmStringToQuark(string)
-.br
-\&#define XrmStringToClass(string) XrmStringToQuark(string)
-.br
-\&#define XrmStringToRepresentation(string) XrmStringToQuark(string)
-.HP
-int XrmQuark XrmStringToQuark\^(\^char *\fIstring\fP\^);
-.HP
-XrmQuark XrmPermStringToQuark\^(\^char *\fIstring\fP\^);
-.LP
-\&#define XrmStringToName(string) XrmStringToQuark(string)
-.br
-\&#define XrmStringToClass(string) XrmStringToQuark(string)
-.br
-\&#define XrmStringToRepresentation(string) XrmStringToQuark(string)
-.HP
-XrmQuark XrmStringToQuark\^(\^char *\fIstring\fP\^);
-.HP
-XrmQuark XrmPermStringToQuark\^(\^char *\fIstring\fP\^);
-.LP
-\&#define XrmNameToString(name) XrmQuarkToString(name)
-.br
-\&#define XrmClassToString(class) XrmQuarkToString(class)
-.br
-\&#define XrmRepresentationToString(type) XrmQuarkToString(type)
-.HP
-char *XrmQuarkToString\^(\^XrmQuark \fIquark\fP\^);
-.LP
-\&#define XrmStringToNameList(str, name) XrmStringToQuarkList((str), (name))
-.br
-\&#define XrmStringToClassList(str,class) XrmStringToQuarkList((str), (class))
-.sp
-.HP
-void XrmStringToQuarkList\^(\^char *\fIstring\fP\^, XrmQuarkList
-\fIquarks_return\fP\^);
-.HP
-XrmStringToBindingQuarkList\^(\^char *\fIstring\fP\^, XrmBindingList
-\fIbindings_return\fP\^, XrmQuarkList \fIquarks_return\fP\^);
-.SH ARGUMENTS
-.IP \fIbindings_return\fP 1i
-Returns the binding list.
-.IP \fIquark\fP 1i
-Specifies the quark for which the equivalent string is desired.
-.IP \fIquarks_return\fP 1i
-Returns the list of quarks.
-.ds Ql \ or quark list
-.IP \fIstring\fP 1i
-Specifies the string for which a quark\*(Ql is to be allocated.
-.SH DESCRIPTION
-The
-.ZN XrmUniqueQuark
-function allocates a quark that is guaranteed not to represent any string that
-is known to the resource manager.
-.LP
-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
-.ZN XrmStringToQuark
-need not be permanently allocated storage.
-.ZN XrmPermStringToQuark
-is just like
-.ZN 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
-.ZN XrmQuarkToString .
-.LP
-For any given quark, if
-.ZN XrmStringToQuark
-returns a non-NULL value,
-all future calls will return the same value (identical address).
-.LP
-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,
-.ZN XrmQuarkToString
-returns NULL.
-For any given quark, if
-.ZN XrmQuarkToString
-returns a non-NULL value,
-all future calls will return the same value (identical address).
-.LP
-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
-.ZN XrmStringToQuark
-need not be permanently allocated storage.
-.ZN XrmPermStringToQuark
-is just like
-.ZN 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
-.ZN XrmQuarkToString .
-.LP
-For any given quark, if
-.ZN XrmStringToQuark
-returns a non-NULL value,
-all future calls will return the same value (identical address).
-.LP
-The
-.ZN XrmStringToQuarkList
-function converts the null-terminated string (generally a fully qualified name)
-to a list of quarks.
-The caller must allocate sufficient space for the quarks list before calling
-.ZN XrmStringToQuarkList .
-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
-.ZN 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
-.EX
-typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList;
-.EE
-.LP
-.ZN XrmBindTightly
-indicates that a period separates the components, and
-.ZN XrmBindLoosely
-indicates that an asterisk separates the components.
-.LP
-The
-.ZN XrmStringToBindingQuarkList
-function converts the specified string to a binding list and a quark list.
-The caller must allocate sufficient space for the quarks list and the
-binding list before calling
-.ZN XrmStringToBindingQuarkList .
-If the string is not in the Host Portable Character Encoding
-the conversion is implementation-dependent.
-Component names in the list are separated by a period or
-an asterisk character.
-If the string does not start with period or asterisk,
-a period is assumed.
-For example, ``*a.b*c'' becomes:
-.LP
-.TS
-l l l.
-quarks a b c
-bindings loose tight loose
-.TE
-.SH "SEE ALSO"
-XrmGetResource(__libmansuffix__),
-XrmInitialize(__libmansuffix__),
-XrmMergeDatabases(__libmansuffix__),
-XrmPutResource(__libmansuffix__)
-.LP
-\fI\*(xL\fP
+.\" 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.
+.\"
+.\"
+.ds xT X Toolkit Intrinsics \- C Language Interface
+.ds xW Athena X Widgets \- C Language X Toolkit Interface
+.ds xL Xlib \- C Language X Interface
+.ds xC Inter-Client Communication Conventions Manual
+.na
+.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 De
+.ce 0
+.if \\n(BD .DF
+.nr BD 0
+.in \\n(OIu
+.if \\n(TM .ls 2
+.sp \\n(DDu
+.fi
+..
+.de FD
+.LP
+.KS
+.TA .5i 3i
+.ta .5i 3i
+.nf
+..
+.de FN
+.fi
+.KE
+.LP
+..
+.de IN \" send an index entry to the stderr
+..
+.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
+..
+.de C}
+.DE
+.R
+..
+.de Pn
+.ie t \\$1\fB\^\\$2\^\fR\\$3
+.el \\$1\fI\^\\$2\^\fP\\$3
+..
+.de ZN
+.ie t \fB\^\\$1\^\fR\\$2
+.el \fI\^\\$1\^\fP\\$2
+..
+.de hN
+.ie t <\fB\\$1\fR>\\$2
+.el <\fI\\$1\fP>\\$2
+..
+.de NT
+.ne 7
+.ds NO Note
+.if \\n(.$>$1 .if !'\\$2'C' .ds NO \\$2
+.if \\n(.$ .if !'\\$1'C' .ds NO \\$1
+.ie n .sp
+.el .sp 10p
+.TB
+.ce
+\\*(NO
+.ie n .sp
+.el .sp 5p
+.if '\\$1'C' .ce 99
+.if '\\$2'C' .ce 99
+.in +5n
+.ll -5n
+.R
+..
+. \" Note End -- doug kraft 3/85
+.de NE
+.ce 0
+.in -5n
+.ll +5n
+.ie n .sp
+.el .sp 10p
+..
+.ny0
+.TH XrmUniqueQuark __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XrmUniqueQuark, XrmStringToQuark, XrmPermStringToQuark, XrmQuarkToString, XrmStringToQuarkList, XrmStringToBindingQuarkList \- manipulate resource quarks
+.SH SYNOPSIS
+.HP
+XrmQuark XrmUniqueQuark\^(void);
+.LP
+\&#define XrmStringToName(string) XrmStringToQuark(string)
+.br
+\&#define XrmStringToClass(string) XrmStringToQuark(string)
+.br
+\&#define XrmStringToRepresentation(string) XrmStringToQuark(string)
+.HP
+int XrmQuark XrmStringToQuark\^(\^char *\fIstring\fP\^);
+.HP
+XrmQuark XrmPermStringToQuark\^(\^char *\fIstring\fP\^);
+.LP
+\&#define XrmStringToName(string) XrmStringToQuark(string)
+.br
+\&#define XrmStringToClass(string) XrmStringToQuark(string)
+.br
+\&#define XrmStringToRepresentation(string) XrmStringToQuark(string)
+.HP
+XrmQuark XrmStringToQuark\^(\^char *\fIstring\fP\^);
+.HP
+XrmQuark XrmPermStringToQuark\^(\^char *\fIstring\fP\^);
+.LP
+\&#define XrmNameToString(name) XrmQuarkToString(name)
+.br
+\&#define XrmClassToString(class) XrmQuarkToString(class)
+.br
+\&#define XrmRepresentationToString(type) XrmQuarkToString(type)
+.HP
+char *XrmQuarkToString\^(\^XrmQuark \fIquark\fP\^);
+.LP
+\&#define XrmStringToNameList(str, name) XrmStringToQuarkList((str), (name))
+.br
+\&#define XrmStringToClassList(str,class) XrmStringToQuarkList((str), (class))
+.sp
+.HP
+void XrmStringToQuarkList\^(\^char *\fIstring\fP\^, XrmQuarkList
+\fIquarks_return\fP\^);
+.HP
+XrmStringToBindingQuarkList\^(\^char *\fIstring\fP\^, XrmBindingList
+\fIbindings_return\fP\^, XrmQuarkList \fIquarks_return\fP\^);
+.SH ARGUMENTS
+.IP \fIbindings_return\fP 1i
+Returns the binding list.
+.IP \fIquark\fP 1i
+Specifies the quark for which the equivalent string is desired.
+.IP \fIquarks_return\fP 1i
+Returns the list of quarks.
+.ds Ql \ or quark list
+.IP \fIstring\fP 1i
+Specifies the string for which a quark\*(Ql is to be allocated.
+.SH DESCRIPTION
+The
+.ZN XrmUniqueQuark
+function allocates a quark that is guaranteed not to represent any string that
+is known to the resource manager.
+.LP
+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
+.ZN XrmStringToQuark
+need not be permanently allocated storage.
+.ZN XrmPermStringToQuark
+is just like
+.ZN 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
+.ZN XrmQuarkToString .
+.LP
+For any given quark, if
+.ZN XrmStringToQuark
+returns a non-NULL value,
+all future calls will return the same value (identical address).
+.LP
+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,
+.ZN XrmQuarkToString
+returns NULL.
+For any given quark, if
+.ZN XrmQuarkToString
+returns a non-NULL value,
+all future calls will return the same value (identical address).
+.LP
+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
+.ZN XrmStringToQuark
+need not be permanently allocated storage.
+.ZN XrmPermStringToQuark
+is just like
+.ZN 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
+.ZN XrmQuarkToString .
+.LP
+For any given quark, if
+.ZN XrmStringToQuark
+returns a non-NULL value,
+all future calls will return the same value (identical address).
+.LP
+The
+.ZN XrmStringToQuarkList
+function converts the null-terminated string (generally a fully qualified name)
+to a list of quarks.
+The caller must allocate sufficient space for the quarks list before calling
+.ZN XrmStringToQuarkList .
+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
+.ZN 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
+.EX
+typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList;
+.EE
+.LP
+.ZN XrmBindTightly
+indicates that a period separates the components, and
+.ZN XrmBindLoosely
+indicates that an asterisk separates the components.
+.LP
+The
+.ZN XrmStringToBindingQuarkList
+function converts the specified string to a binding list and a quark list.
+The caller must allocate sufficient space for the quarks list and the
+binding list before calling
+.ZN XrmStringToBindingQuarkList .
+If the string is not in the Host Portable Character Encoding
+the conversion is implementation-dependent.
+Component names in the list are separated by a period or
+an asterisk character.
+If the string does not start with period or asterisk,
+a period is assumed.
+For example, ``*a.b*c'' becomes:
+.LP
+.TS
+l l l.
+quarks a b c
+bindings loose tight loose
+.TE
+.SH "SEE ALSO"
+XrmGetResource(__libmansuffix__),
+XrmInitialize(__libmansuffix__),
+XrmMergeDatabases(__libmansuffix__),
+XrmPutResource(__libmansuffix__)
+.LP
+\fI\*(xL\fP
diff --git a/libX11/man/xkb/XkbComputeShapeTop.man b/libX11/man/xkb/XkbComputeShapeTop.man
index 1a7f72a00..5bcf469fa 100644
--- a/libX11/man/xkb/XkbComputeShapeTop.man
+++ b/libX11/man/xkb/XkbComputeShapeTop.man
@@ -1,75 +1,75 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" 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 (including the next
-.\" paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-.\"
-.TH XkbComputeShapeTop __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbComputeShapeTop \- Determines the bounding box of the top surface of a shape
-.SH SYNOPSIS
-.HP
-.B Bool XkbComputeShapeTop
-.BI "(\^XkbShapePtr " "shape" "\^,"
-.BI "XkbBoundsPtr " "bounds_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- shape
-shape to be examined
-.TP
-.I \- bounds_rtrn
-backfilled with the bounding box for the shape
-.SH DESCRIPTION
-.LP
-Xkb provides a number of convenience functions to help use a keyboard geometry.
-These include functions to return the bounding box of a shape's top surface and
-to update the bounding box of a shape row or section.
-
-A shape is made up of a number of outlines. Each outline is a polygon made up of
-a number of points. The bounding box of a shape is a rectangle that contains all
-the outlines of that shape.
-
-.I XkbComputeShapeTop
-returns a BoundsRec that contains two x and y coordinates. These coordinates
-describe the corners of a rectangle that contains the outline that describes the
-top surface of the shape. The top surface is defined to be the approximating
-outline if the
-.I approx
-field of
-.I shape
-is not NULL. If
-.I approx
-is NULL, the top surface is defined as the last outline in the
-.I shape's
-array of outlines.
-.I XkbComputeShapeTop
-returns False if
-.I shape
-is NULL or if there are no outlines for the shape; otherwise, it returns True.
-.SH STRUCTURES
-.LP
-.nf
-
-typedef struct _XkbBounds {
- short x1,y1; /\(** upper left corner of the bounds, in mm/10 */
- short x2,y2; /\(** lower right corner of the bounds, in mm/10 */
-} XkbBoundsRec, *XkbBoundsPtr;
-
-.fi
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" 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 (including the next
+.\" paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+.\"
+.TH XkbComputeShapeTop __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbComputeShapeTop \- Determines the bounding box of the top surface of a shape
+.SH SYNOPSIS
+.HP
+.B Bool XkbComputeShapeTop
+.BI "(\^XkbShapePtr " "shape" "\^,"
+.BI "XkbBoundsPtr " "bounds_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- shape
+shape to be examined
+.TP
+.I \- bounds_rtrn
+backfilled with the bounding box for the shape
+.SH DESCRIPTION
+.LP
+Xkb provides a number of convenience functions to help use a keyboard geometry.
+These include functions to return the bounding box of a shape's top surface and
+to update the bounding box of a shape row or section.
+
+A shape is made up of a number of outlines. Each outline is a polygon made up of
+a number of points. The bounding box of a shape is a rectangle that contains all
+the outlines of that shape.
+
+.I XkbComputeShapeTop
+returns a BoundsRec that contains two x and y coordinates. These coordinates
+describe the corners of a rectangle that contains the outline that describes the
+top surface of the shape. The top surface is defined to be the approximating
+outline if the
+.I approx
+field of
+.I shape
+is not NULL. If
+.I approx
+is NULL, the top surface is defined as the last outline in the
+.I shape's
+array of outlines.
+.I XkbComputeShapeTop
+returns False if
+.I shape
+is NULL or if there are no outlines for the shape; otherwise, it returns True.
+.SH STRUCTURES
+.LP
+.nf
+
+typedef struct _XkbBounds {
+ short x1,y1; /\(** upper left corner of the bounds, in mm/10 */
+ short x2,y2; /\(** lower right corner of the bounds, in mm/10 */
+} XkbBoundsRec, *XkbBoundsPtr;
+
+.fi
diff --git a/libX11/modules/Makefile.am b/libX11/modules/Makefile.am
index 76e33839c..1ef0dfbd7 100644
--- a/libX11/modules/Makefile.am
+++ b/libX11/modules/Makefile.am
@@ -1 +1 @@
-SUBDIRS=im lc om
+SUBDIRS=im lc om
diff --git a/libX11/modules/im/Makefile.am b/libX11/modules/im/Makefile.am
index 0974cf615..330a6dd6d 100644
--- a/libX11/modules/im/Makefile.am
+++ b/libX11/modules/im/Makefile.am
@@ -1 +1 @@
-SUBDIRS=ximcp
+SUBDIRS=ximcp
diff --git a/libX11/modules/im/ximcp/imDispch.c b/libX11/modules/im/ximcp/imDispch.c
index f9b4bdb77..3d67909ee 100644
--- a/libX11/modules/im/ximcp/imDispch.c
+++ b/libX11/modules/im/ximcp/imDispch.c
@@ -1,104 +1,104 @@
-/******************************************************************
-
- Copyright 1993, 1994 by FUJITSU LIMITED
-
-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 FUJITSU LIMITED
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-FUJITSU LIMITED makes no representations about the suitability of
-this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL FUJITSU LIMITED 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.
-
- Author: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlib.h>
-#include "Xlibint.h"
-#include "Xutil.h"
-#include "Xlcint.h"
-#include "Ximint.h"
-
-
-Public Bool
-_XimRegProtoIntrCallback(
- Xim im,
- CARD16 major_code,
- CARD16 minor_code,
- Bool (*proc)(
- Xim, INT16, XPointer, XPointer
- ),
-
- XPointer call_data)
-{
- XimProtoIntrRec *rec;
-
- if (!(rec = (XimProtoIntrRec *)Xmalloc(sizeof(XimProtoIntrRec))))
- return False;
- rec->func = proc;
- rec->major_code = major_code;
- rec->minor_code = minor_code;
- rec->call_data = call_data;
- rec->next = im->private.proto.intrproto;
- im->private.proto.intrproto = rec;
- return True;
-}
-
-Public void
-_XimFreeProtoIntrCallback(Xim im)
-{
- register XimProtoIntrRec *rec, *next;
-
- for (rec = im->private.proto.intrproto; rec;) {
- next = rec->next;
- Xfree(rec);
- rec = next;
- }
- im->private.proto.intrproto = NULL;
- return;
-}
-
-Private Bool
-_XimTransportIntr(
- Xim im,
- INT16 len,
- XPointer data,
- XPointer call_data)
-{
- Xim call_im = (Xim)call_data;
- XimProtoIntrRec *rec = call_im->private.proto.intrproto;
- CARD8 major_opcode = *((CARD8 *)data);
- CARD8 minor_opcode = *((CARD8 *)data + 1);
-
- for (; rec; rec = rec->next) {
- if ((major_opcode == (CARD8)rec->major_code)
- && (minor_opcode == (CARD8)rec->minor_code))
- if ((*rec->func)(call_im, len, data, rec->call_data))
- return True;
- }
- return False;
-}
-
-Public Bool
-_XimDispatchInit(Xim im)
-{
- if (_XimRegisterDispatcher(im, _XimTransportIntr, (XPointer)im))
- return True;
- return False;
-}
+/******************************************************************
+
+ Copyright 1993, 1994 by FUJITSU LIMITED
+
+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 FUJITSU LIMITED
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+FUJITSU LIMITED makes no representations about the suitability of
+this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FUJITSU LIMITED 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.
+
+ Author: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlib.h>
+#include "Xlibint.h"
+#include "Xutil.h"
+#include "Xlcint.h"
+#include "Ximint.h"
+
+
+Public Bool
+_XimRegProtoIntrCallback(
+ Xim im,
+ CARD16 major_code,
+ CARD16 minor_code,
+ Bool (*proc)(
+ Xim, INT16, XPointer, XPointer
+ ),
+
+ XPointer call_data)
+{
+ XimProtoIntrRec *rec;
+
+ if (!(rec = (XimProtoIntrRec *)Xmalloc(sizeof(XimProtoIntrRec))))
+ return False;
+ rec->func = proc;
+ rec->major_code = major_code;
+ rec->minor_code = minor_code;
+ rec->call_data = call_data;
+ rec->next = im->private.proto.intrproto;
+ im->private.proto.intrproto = rec;
+ return True;
+}
+
+Public void
+_XimFreeProtoIntrCallback(Xim im)
+{
+ register XimProtoIntrRec *rec, *next;
+
+ for (rec = im->private.proto.intrproto; rec;) {
+ next = rec->next;
+ Xfree(rec);
+ rec = next;
+ }
+ im->private.proto.intrproto = NULL;
+ return;
+}
+
+Private Bool
+_XimTransportIntr(
+ Xim im,
+ INT16 len,
+ XPointer data,
+ XPointer call_data)
+{
+ Xim call_im = (Xim)call_data;
+ XimProtoIntrRec *rec = call_im->private.proto.intrproto;
+ CARD8 major_opcode = *((CARD8 *)data);
+ CARD8 minor_opcode = *((CARD8 *)data + 1);
+
+ for (; rec; rec = rec->next) {
+ if ((major_opcode == (CARD8)rec->major_code)
+ && (minor_opcode == (CARD8)rec->minor_code))
+ if ((*rec->func)(call_im, len, data, rec->call_data))
+ return True;
+ }
+ return False;
+}
+
+Public Bool
+_XimDispatchInit(Xim im)
+{
+ if (_XimRegisterDispatcher(im, _XimTransportIntr, (XPointer)im))
+ return True;
+ return False;
+}
diff --git a/libX11/modules/im/ximcp/imImSw.c b/libX11/modules/im/ximcp/imImSw.c
index acad4b8af..dfa6d6699 100644
--- a/libX11/modules/im/ximcp/imImSw.c
+++ b/libX11/modules/im/ximcp/imImSw.c
@@ -1,55 +1,55 @@
-/******************************************************************
-
- Copyright 1992, 1993 by FUJITSU LIMITED
- Copyright 1993 by Digital Equipment Corporation
-
-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 FUJITSU LIMITED and
-Digital Equipment Corporation not be used in advertising or publicity
-pertaining to distribution of the software without specific, written
-prior permission. FUJITSU LIMITED and Digital Equipment Corporation
-makes no representations about the suitability of this software for
-any purpose. It is provided "as is" without express or implied
-warranty.
-
-FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION 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.
-
- Author: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
- Modifier: Franky Ling Digital Equipment Corporation
- frankyling@hgrd01.enet.dec.com
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-#include "Ximint.h"
-#include "XimImSw.h"
-
-Private Bool
-_XimCheckIfDefault(
- Xim im)
-{
- return(True);
-}
-
-XimImsportSW _XimImSportRec[] = {
- { _XimCheckIfLocalProcessing, _XimLocalOpenIM, _XimLocalIMFree },
- { _XimCheckIfThaiProcessing, _XimThaiOpenIM, _XimThaiIMFree },
- { _XimCheckIfDefault, _XimProtoOpenIM, _XimProtoIMFree },
- { NULL, NULL, NULL },
-};
+/******************************************************************
+
+ Copyright 1992, 1993 by FUJITSU LIMITED
+ Copyright 1993 by Digital Equipment Corporation
+
+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 FUJITSU LIMITED and
+Digital Equipment Corporation not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission. FUJITSU LIMITED and Digital Equipment Corporation
+makes no representations about the suitability of this software for
+any purpose. It is provided "as is" without express or implied
+warranty.
+
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION 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.
+
+ Author: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+ Modifier: Franky Ling Digital Equipment Corporation
+ frankyling@hgrd01.enet.dec.com
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+#include "Ximint.h"
+#include "XimImSw.h"
+
+Private Bool
+_XimCheckIfDefault(
+ Xim im)
+{
+ return(True);
+}
+
+XimImsportSW _XimImSportRec[] = {
+ { _XimCheckIfLocalProcessing, _XimLocalOpenIM, _XimLocalIMFree },
+ { _XimCheckIfThaiProcessing, _XimThaiOpenIM, _XimThaiIMFree },
+ { _XimCheckIfDefault, _XimProtoOpenIM, _XimProtoIMFree },
+ { NULL, NULL, NULL },
+};
diff --git a/libX11/modules/im/ximcp/imLcPrs.c b/libX11/modules/im/ximcp/imLcPrs.c
index f5d6f8cd1..4e54385b5 100644
--- a/libX11/modules/im/ximcp/imLcPrs.c
+++ b/libX11/modules/im/ximcp/imLcPrs.c
@@ -1,685 +1,685 @@
-/******************************************************************
-
- Copyright 1992 by Oki Technosystems Laboratory, Inc.
- Copyright 1992 by Fuji Xerox Co., Ltd.
-
-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 Oki Technosystems
-Laboratory and Fuji Xerox not be used in advertising or publicity
-pertaining to distribution of the software without specific, written
-prior permission.
-Oki Technosystems Laboratory and Fuji Xerox make no representations
-about the suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX DISCLAIM ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OKI TECHNOSYSTEMS
-LABORATORY AND FUJI XEROX 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.
-
- Author: Yasuhiro Kawai Oki Technosystems Laboratory
- Author: Kazunori Nishihara Fuji Xerox
-
-******************************************************************/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlib.h>
-#include <X11/Xmd.h>
-#include <X11/Xos.h>
-#include "Xlibint.h"
-#include "Xlcint.h"
-#include "Ximint.h"
-#include <sys/stat.h>
-#include <stdio.h>
-
-#define XLC_BUFSIZE 256
-
-extern int _Xmbstowcs(
- wchar_t *wstr,
- char *str,
- int len
-);
-
-extern int _Xmbstoutf8(
- char *ustr,
- const char *str,
- int len
-);
-
-/*
- * Parsing File Format:
- *
- * FILE ::= { [PRODUCTION] [COMMENT] "\n"}
- * PRODUCTION ::= LHS ":" RHS [ COMMENT ]
- * COMMENT ::= "#" {<any character except null or newline>}
- * LHS ::= EVENT { EVENT }
- * EVENT ::= [MODIFIER_LIST] "<" keysym ">"
- * MODIFIER_LIST ::= ("!" {MODIFIER} ) | "None"
- * MODIFIER ::= ["~"] modifier_name
- * RHS ::= ( STRING | keysym | STRING keysym )
- * STRING ::= '"' { CHAR } '"'
- * CHAR ::= GRAPHIC_CHAR | ESCAPED_CHAR
- * GRAPHIC_CHAR ::= locale (codeset) dependent code
- * ESCAPED_CHAR ::= ('\\' | '\"' | OCTAL | HEX )
- * OCTAL ::= '\' OCTAL_CHAR [OCTAL_CHAR [OCTAL_CHAR]]
- * OCTAL_CHAR ::= (0|1|2|3|4|5|6|7)
- * HEX ::= '\' (x|X) HEX_CHAR [HEX_CHAR]]
- * HEX_CHAR ::= (0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|a|b|c|d|e|f)
- *
- */
-
-static int
-nextch(
- FILE *fp,
- int *lastch)
-{
- int c;
-
- if (*lastch != 0) {
- c = *lastch;
- *lastch = 0;
- } else {
- c = getc(fp);
- if (c == '\\') {
- c = getc(fp);
- if (c == '\n') {
- c = getc(fp);
- } else {
- ungetc(c, fp);
- c = '\\';
- }
- }
- }
- return(c);
-}
-
-static void
-putbackch(
- int c,
- int *lastch)
-{
- *lastch = c;
-}
-
-#define ENDOFFILE 0
-#define ENDOFLINE 1
-#define COLON 2
-#define LESS 3
-#define GREATER 4
-#define EXCLAM 5
-#define TILDE 6
-#define STRING 7
-#define KEY 8
-#define ERROR 9
-
-#ifndef isalnum
-#define isalnum(c) \
- (('0' <= (c) && (c) <= '9') || \
- ('A' <= (c) && (c) <= 'Z') || \
- ('a' <= (c) && (c) <= 'z'))
-#endif
-
-static int
-nexttoken(
- FILE *fp,
- char *tokenbuf,
- int *lastch)
-{
- int c;
- int token;
- char *p;
- int i, j;
-
- while ((c = nextch(fp, lastch)) == ' ' || c == '\t') {
- }
- switch (c) {
- case EOF:
- token = ENDOFFILE;
- break;
- case '\n':
- token = ENDOFLINE;
- break;
- case '<':
- token = LESS;
- break;
- case '>':
- token = GREATER;
- break;
- case ':':
- token = COLON;
- break;
- case '!':
- token = EXCLAM;
- break;
- case '~':
- token = TILDE;
- break;
- case '"':
- p = tokenbuf;
- while ((c = nextch(fp, lastch)) != '"') {
- if (c == '\n' || c == EOF) {
- putbackch(c, lastch);
- token = ERROR;
- goto string_error;
- } else if (c == '\\') {
- c = nextch(fp, lastch);
- switch (c) {
- case '\\':
- case '"':
- *p++ = c;
- break;
- case 'n':
- *p++ = '\n';
- break;
- case 'r':
- *p++ = '\r';
- break;
- case 't':
- *p++ = '\t';
- break;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- i = c - '0';
- c = nextch(fp, lastch);
- for (j = 0; j < 2 && c >= '0' && c <= '7'; j++) {
- i <<= 3;
- i += c - '0';
- c = nextch(fp, lastch);
- }
- putbackch(c, lastch);
- *p++ = (char)i;
- break;
- case 'X':
- case 'x':
- i = 0;
- for (j = 0; j < 2; j++) {
- c = nextch(fp, lastch);
- i <<= 4;
- if (c >= '0' && c <= '9') {
- i += c - '0';
- } else if (c >= 'A' && c <= 'F') {
- i += c - 'A' + 10;
- } else if (c >= 'a' && c <= 'f') {
- i += c - 'a' + 10;
- } else {
- putbackch(c, lastch);
- i >>= 4;
- break;
- }
- }
- if (j == 0) {
- token = ERROR;
- goto string_error;
- }
- *p++ = (char)i;
- break;
- case EOF:
- putbackch(c, lastch);
- token = ERROR;
- goto string_error;
- default:
- *p++ = c;
- break;
- }
- } else {
- *p++ = c;
- }
- }
- *p = '\0';
- token = STRING;
- break;
- case '#':
- while ((c = nextch(fp, lastch)) != '\n' && c != EOF) {
- }
- if (c == '\n') {
- token = ENDOFLINE;
- } else {
- token = ENDOFFILE;
- }
- break;
- default:
- if (isalnum(c) || c == '_' || c == '-') {
- p = tokenbuf;
- *p++ = c;
- c = nextch(fp, lastch);
- while (isalnum(c) || c == '_' || c == '-') {
- *p++ = c;
- c = nextch(fp, lastch);
- }
- *p = '\0';
- putbackch(c, lastch);
- token = KEY;
- } else {
- token = ERROR;
- }
- break;
- }
-string_error:
- return(token);
-}
-
-static long
-modmask(
- char *name)
-{
- struct _modtbl {
- const char name[6];
- long mask;
- };
-
- static const struct _modtbl tbl[] = {
- { "Ctrl", ControlMask },
- { "Lock", LockMask },
- { "Caps", LockMask },
- { "Shift", ShiftMask },
- { "Alt", Mod1Mask },
- { "Meta", Mod1Mask }};
-
- int i, num_entries = sizeof (tbl) / sizeof (tbl[0]);
-
- for (i = 0; i < num_entries; i++)
- if (!strcmp (name, tbl[i].name))
- return tbl[i].mask;
-
- return 0;
-}
-
-static char*
-TransFileName(Xim im, char *name)
-{
- char *home = NULL, *lcCompose = NULL;
- char dir[XLC_BUFSIZE];
- char *i = name, *ret, *j;
- int l = 0;
-
- while (*i) {
- if (*i == '%') {
- i++;
- switch (*i) {
- case '%':
- l++;
- break;
- case 'H':
- home = getenv("HOME");
- if (home)
- l += strlen(home);
- break;
- case 'L':
- if (lcCompose == NULL)
- lcCompose = _XlcFileName(im->core.lcd, COMPOSE_FILE);
- if (lcCompose)
- l += strlen(lcCompose);
- break;
- case 'S':
- xlocaledir(dir, XLC_BUFSIZE);
- l += strlen(dir);
- break;
- }
- } else {
- l++;
- }
- i++;
- }
-
- j = ret = Xmalloc(l+1);
- if (ret == NULL)
- return ret;
- i = name;
- while (*i) {
- if (*i == '%') {
- i++;
- switch (*i) {
- case '%':
- *j++ = '%';
- break;
- case 'H':
- if (home) {
- strcpy(j, home);
- j += strlen(home);
- }
- break;
- case 'L':
- if (lcCompose) {
- strcpy(j, lcCompose);
- j += strlen(lcCompose);
- }
- break;
- case 'S':
- strcpy(j, dir);
- j += strlen(dir);
- break;
- }
- i++;
- } else {
- *j++ = *i++;
- }
- }
- *j = '\0';
- Xfree(lcCompose);
- return ret;
-}
-
-#ifndef MB_LEN_MAX
-#define MB_LEN_MAX 6
-#endif
-
-static int
-get_mb_string (Xim im, char *buf, KeySym ks)
-{
- XPointer from, to;
- int from_len, to_len, len;
- XPointer args[1];
- XlcCharSet charset;
- char local_buf[MB_LEN_MAX];
- unsigned int ucs;
- ucs = KeySymToUcs4(ks);
-
- from = (XPointer) &ucs;
- to = (XPointer) local_buf;
- from_len = 1;
- to_len = MB_LEN_MAX;
- args[0] = (XPointer) &charset;
- if (_XlcConvert(im->private.local.ucstoc_conv,
- &from, &from_len, &to, &to_len, args, 1 ) != 0) {
- return 0;
- }
-
- from = (XPointer) local_buf;
- to = (XPointer) buf;
- from_len = MB_LEN_MAX - to_len;
- to_len = MB_LEN_MAX + 1;
- args[0] = (XPointer) charset;
- if (_XlcConvert(im->private.local.cstomb_conv,
- &from, &from_len, &to, &to_len, args, 1 ) != 0) {
- return 0;
- }
- len = MB_LEN_MAX + 1 - to_len;
- buf[len] = '\0';
- return len;
-}
-
-#define AllMask (ShiftMask | LockMask | ControlMask | Mod1Mask)
-#define LOCAL_WC_BUFSIZE 128
-#define LOCAL_UTF8_BUFSIZE 256
-#define SEQUENCE_MAX 10
-
-static int
-parseline(
- FILE *fp,
- Xim im,
- char* tokenbuf)
-{
- int token;
- DTModifier modifier_mask;
- DTModifier modifier;
- DTModifier tmp;
- KeySym keysym = NoSymbol;
- DTIndex *top = &im->private.local.top;
- DefTreeBase *b = &im->private.local.base;
- DTIndex t;
- DefTree *p = NULL;
- Bool exclam, tilde;
- KeySym rhs_keysym = 0;
- char *rhs_string_mb;
- int l;
- int lastch = 0;
- char local_mb_buf[MB_LEN_MAX+1];
- wchar_t local_wc_buf[LOCAL_WC_BUFSIZE], *rhs_string_wc;
- char local_utf8_buf[LOCAL_UTF8_BUFSIZE], *rhs_string_utf8;
-
- struct DefBuffer {
- DTModifier modifier_mask;
- DTModifier modifier;
- KeySym keysym;
- };
-
- struct DefBuffer buf[SEQUENCE_MAX];
- int i, n;
-
- do {
- token = nexttoken(fp, tokenbuf, &lastch);
- } while (token == ENDOFLINE);
-
- if (token == ENDOFFILE) {
- return(-1);
- }
-
- n = 0;
- do {
- if ((token == KEY) && (strcmp("include", tokenbuf) == 0)) {
- char *filename;
- FILE *infp;
- token = nexttoken(fp, tokenbuf, &lastch);
- if (token != KEY && token != STRING)
- goto error;
- if ((filename = TransFileName(im, tokenbuf)) == NULL)
- goto error;
- infp = _XFopenFile(filename, "r");
- Xfree(filename);
- if (infp == NULL)
- goto error;
- _XimParseStringFile(infp, im);
- fclose(infp);
- return (0);
- } else if ((token == KEY) && (strcmp("None", tokenbuf) == 0)) {
- modifier = 0;
- modifier_mask = AllMask;
- token = nexttoken(fp, tokenbuf, &lastch);
- } else {
- modifier_mask = modifier = 0;
- exclam = False;
- if (token == EXCLAM) {
- exclam = True;
- token = nexttoken(fp, tokenbuf, &lastch);
- }
- while (token == TILDE || token == KEY) {
- tilde = False;
- if (token == TILDE) {
- tilde = True;
- token = nexttoken(fp, tokenbuf, &lastch);
- if (token != KEY)
- goto error;
- }
- tmp = modmask(tokenbuf);
- if (!tmp) {
- goto error;
- }
- modifier_mask |= tmp;
- if (tilde) {
- modifier &= ~tmp;
- } else {
- modifier |= tmp;
- }
- token = nexttoken(fp, tokenbuf, &lastch);
- }
- if (exclam) {
- modifier_mask = AllMask;
- }
- }
-
- if (token != LESS) {
- goto error;
- }
-
- token = nexttoken(fp, tokenbuf, &lastch);
- if (token != KEY) {
- goto error;
- }
-
- token = nexttoken(fp, tokenbuf, &lastch);
- if (token != GREATER) {
- goto error;
- }
-
- keysym = XStringToKeysym(tokenbuf);
- if (keysym == NoSymbol) {
- goto error;
- }
-
- buf[n].keysym = keysym;
- buf[n].modifier = modifier;
- buf[n].modifier_mask = modifier_mask;
- n++;
- if( n >= SEQUENCE_MAX )
- goto error;
- token = nexttoken(fp, tokenbuf, &lastch);
- } while (token != COLON);
-
- token = nexttoken(fp, tokenbuf, &lastch);
- if (token == STRING) {
- l = strlen(tokenbuf) + 1;
- while (b->mbused + l > b->mbsize) {
- b->mbsize = b->mbsize ? b->mbsize * 1.5 : 1024;
- if (! (b->mb = Xrealloc (b->mb, b->mbsize)) )
- goto error;
- }
- rhs_string_mb = &b->mb[b->mbused];
- b->mbused += l;
- strcpy(rhs_string_mb, tokenbuf);
- token = nexttoken(fp, tokenbuf, &lastch);
- if (token == KEY) {
- rhs_keysym = XStringToKeysym(tokenbuf);
- if (rhs_keysym == NoSymbol) {
- goto error;
- }
- token = nexttoken(fp, tokenbuf, &lastch);
- }
- if (token != ENDOFLINE && token != ENDOFFILE) {
- goto error;
- }
- } else if (token == KEY) {
- rhs_keysym = XStringToKeysym(tokenbuf);
- if (rhs_keysym == NoSymbol) {
- goto error;
- }
- token = nexttoken(fp, tokenbuf, &lastch);
- if (token != ENDOFLINE && token != ENDOFFILE) {
- goto error;
- }
-
- l = get_mb_string(im, local_mb_buf, rhs_keysym);
- while (b->mbused + l + 1 > b->mbsize) {
- b->mbsize = b->mbsize ? b->mbsize * 1.5 : 1024;
- if (! (b->mb = Xrealloc (b->mb, b->mbsize)) )
- goto error;
- }
- rhs_string_mb = &b->mb[b->mbused];
- b->mbused += l + 1;
- memcpy(rhs_string_mb, local_mb_buf, l);
- rhs_string_mb[l] = '\0';
- } else {
- goto error;
- }
-
- l = _Xmbstowcs(local_wc_buf, rhs_string_mb, LOCAL_WC_BUFSIZE - 1);
- if (l == LOCAL_WC_BUFSIZE - 1) {
- local_wc_buf[l] = (wchar_t)'\0';
- }
- while (b->wcused + l + 1 > b->wcsize) {
- b->wcsize = b->wcsize ? b->wcsize * 1.5 : 512;
- if (! (b->wc = Xrealloc (b->wc, sizeof(wchar_t) * b->wcsize)) )
- goto error;
- }
- rhs_string_wc = &b->wc[b->wcused];
- b->wcused += l + 1;
- memcpy((char *)rhs_string_wc, (char *)local_wc_buf, (l + 1) * sizeof(wchar_t) );
-
- l = _Xmbstoutf8(local_utf8_buf, rhs_string_mb, LOCAL_UTF8_BUFSIZE - 1);
- if (l == LOCAL_UTF8_BUFSIZE - 1) {
- local_utf8_buf[l] = '\0';
- }
- while (b->utf8used + l + 1 > b->utf8size) {
- b->utf8size = b->utf8size ? b->utf8size * 1.5 : 1024;
- if (! (b->utf8 = Xrealloc (b->utf8, b->utf8size)) )
- goto error;
- }
- rhs_string_utf8 = &b->utf8[b->utf8used];
- b->utf8used += l + 1;
- memcpy(rhs_string_utf8, local_utf8_buf, l + 1);
-
- for (i = 0; i < n; i++) {
- for (t = *top; t; t = b->tree[t].next) {
- if (buf[i].keysym == b->tree[t].keysym &&
- buf[i].modifier == b->tree[t].modifier &&
- buf[i].modifier_mask == b->tree[t].modifier_mask) {
- break;
- }
- }
- if (t) {
- p = &b->tree[t];
- top = &p->succession;
- } else {
- while (b->treeused >= b->treesize) {
- DefTree *old = b->tree;
- int oldsize = b->treesize;
- b->treesize = b->treesize ? b->treesize * 1.5 : 256;
- if (! (b->tree = Xrealloc (b->tree, sizeof(DefTree) * b->treesize)) )
- goto error;
- if (top >= (DTIndex *) old && top < (DTIndex *) &old[oldsize])
- top = (DTIndex *) (((char *) top) + (((char *)b->tree)-(char *)old));
- }
- p = &b->tree[b->treeused];
- p->keysym = buf[i].keysym;
- p->modifier = buf[i].modifier;
- p->modifier_mask = buf[i].modifier_mask;
- p->succession = 0;
- p->next = *top;
- p->mb = 0;
- p->wc = 0;
- p->utf8 = 0;
- p->ks = NoSymbol;
- *top = b->treeused;
- top = &p->succession;
- b->treeused++;
- }
- }
-
- /* old entries no longer freed... */
- p->mb = rhs_string_mb - b->mb;
- p->wc = rhs_string_wc - b->wc;
- p->utf8 = rhs_string_utf8 - b->utf8;
- p->ks = rhs_keysym;
- return(n);
-error:
- while (token != ENDOFLINE && token != ENDOFFILE) {
- token = nexttoken(fp, tokenbuf, &lastch);
- }
- return(0);
-}
-
-void
-_XimParseStringFile(
- FILE *fp,
- Xim im)
-{
- char tb[8192];
- char* tbp;
- struct stat st;
-
- if (fstat (fileno (fp), &st) != -1) {
- unsigned long size = (unsigned long) st.st_size;
- if (size <= sizeof tb) tbp = tb;
- else tbp = malloc (size);
-
- if (tbp != NULL) {
- while (parseline(fp, im, tbp) >= 0) {}
- if (tbp != tb) free (tbp);
- }
- }
-}
+/******************************************************************
+
+ Copyright 1992 by Oki Technosystems Laboratory, Inc.
+ Copyright 1992 by Fuji Xerox Co., Ltd.
+
+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 Oki Technosystems
+Laboratory and Fuji Xerox not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission.
+Oki Technosystems Laboratory and Fuji Xerox make no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX DISCLAIM ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OKI TECHNOSYSTEMS
+LABORATORY AND FUJI XEROX 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.
+
+ Author: Yasuhiro Kawai Oki Technosystems Laboratory
+ Author: Kazunori Nishihara Fuji Xerox
+
+******************************************************************/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlib.h>
+#include <X11/Xmd.h>
+#include <X11/Xos.h>
+#include "Xlibint.h"
+#include "Xlcint.h"
+#include "Ximint.h"
+#include <sys/stat.h>
+#include <stdio.h>
+
+#define XLC_BUFSIZE 256
+
+extern int _Xmbstowcs(
+ wchar_t *wstr,
+ char *str,
+ int len
+);
+
+extern int _Xmbstoutf8(
+ char *ustr,
+ const char *str,
+ int len
+);
+
+/*
+ * Parsing File Format:
+ *
+ * FILE ::= { [PRODUCTION] [COMMENT] "\n"}
+ * PRODUCTION ::= LHS ":" RHS [ COMMENT ]
+ * COMMENT ::= "#" {<any character except null or newline>}
+ * LHS ::= EVENT { EVENT }
+ * EVENT ::= [MODIFIER_LIST] "<" keysym ">"
+ * MODIFIER_LIST ::= ("!" {MODIFIER} ) | "None"
+ * MODIFIER ::= ["~"] modifier_name
+ * RHS ::= ( STRING | keysym | STRING keysym )
+ * STRING ::= '"' { CHAR } '"'
+ * CHAR ::= GRAPHIC_CHAR | ESCAPED_CHAR
+ * GRAPHIC_CHAR ::= locale (codeset) dependent code
+ * ESCAPED_CHAR ::= ('\\' | '\"' | OCTAL | HEX )
+ * OCTAL ::= '\' OCTAL_CHAR [OCTAL_CHAR [OCTAL_CHAR]]
+ * OCTAL_CHAR ::= (0|1|2|3|4|5|6|7)
+ * HEX ::= '\' (x|X) HEX_CHAR [HEX_CHAR]]
+ * HEX_CHAR ::= (0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|a|b|c|d|e|f)
+ *
+ */
+
+static int
+nextch(
+ FILE *fp,
+ int *lastch)
+{
+ int c;
+
+ if (*lastch != 0) {
+ c = *lastch;
+ *lastch = 0;
+ } else {
+ c = getc(fp);
+ if (c == '\\') {
+ c = getc(fp);
+ if (c == '\n') {
+ c = getc(fp);
+ } else {
+ ungetc(c, fp);
+ c = '\\';
+ }
+ }
+ }
+ return(c);
+}
+
+static void
+putbackch(
+ int c,
+ int *lastch)
+{
+ *lastch = c;
+}
+
+#define ENDOFFILE 0
+#define ENDOFLINE 1
+#define COLON 2
+#define LESS 3
+#define GREATER 4
+#define EXCLAM 5
+#define TILDE 6
+#define STRING 7
+#define KEY 8
+#define ERROR 9
+
+#ifndef isalnum
+#define isalnum(c) \
+ (('0' <= (c) && (c) <= '9') || \
+ ('A' <= (c) && (c) <= 'Z') || \
+ ('a' <= (c) && (c) <= 'z'))
+#endif
+
+static int
+nexttoken(
+ FILE *fp,
+ char *tokenbuf,
+ int *lastch)
+{
+ int c;
+ int token;
+ char *p;
+ int i, j;
+
+ while ((c = nextch(fp, lastch)) == ' ' || c == '\t') {
+ }
+ switch (c) {
+ case EOF:
+ token = ENDOFFILE;
+ break;
+ case '\n':
+ token = ENDOFLINE;
+ break;
+ case '<':
+ token = LESS;
+ break;
+ case '>':
+ token = GREATER;
+ break;
+ case ':':
+ token = COLON;
+ break;
+ case '!':
+ token = EXCLAM;
+ break;
+ case '~':
+ token = TILDE;
+ break;
+ case '"':
+ p = tokenbuf;
+ while ((c = nextch(fp, lastch)) != '"') {
+ if (c == '\n' || c == EOF) {
+ putbackch(c, lastch);
+ token = ERROR;
+ goto string_error;
+ } else if (c == '\\') {
+ c = nextch(fp, lastch);
+ switch (c) {
+ case '\\':
+ case '"':
+ *p++ = c;
+ break;
+ case 'n':
+ *p++ = '\n';
+ break;
+ case 'r':
+ *p++ = '\r';
+ break;
+ case 't':
+ *p++ = '\t';
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ i = c - '0';
+ c = nextch(fp, lastch);
+ for (j = 0; j < 2 && c >= '0' && c <= '7'; j++) {
+ i <<= 3;
+ i += c - '0';
+ c = nextch(fp, lastch);
+ }
+ putbackch(c, lastch);
+ *p++ = (char)i;
+ break;
+ case 'X':
+ case 'x':
+ i = 0;
+ for (j = 0; j < 2; j++) {
+ c = nextch(fp, lastch);
+ i <<= 4;
+ if (c >= '0' && c <= '9') {
+ i += c - '0';
+ } else if (c >= 'A' && c <= 'F') {
+ i += c - 'A' + 10;
+ } else if (c >= 'a' && c <= 'f') {
+ i += c - 'a' + 10;
+ } else {
+ putbackch(c, lastch);
+ i >>= 4;
+ break;
+ }
+ }
+ if (j == 0) {
+ token = ERROR;
+ goto string_error;
+ }
+ *p++ = (char)i;
+ break;
+ case EOF:
+ putbackch(c, lastch);
+ token = ERROR;
+ goto string_error;
+ default:
+ *p++ = c;
+ break;
+ }
+ } else {
+ *p++ = c;
+ }
+ }
+ *p = '\0';
+ token = STRING;
+ break;
+ case '#':
+ while ((c = nextch(fp, lastch)) != '\n' && c != EOF) {
+ }
+ if (c == '\n') {
+ token = ENDOFLINE;
+ } else {
+ token = ENDOFFILE;
+ }
+ break;
+ default:
+ if (isalnum(c) || c == '_' || c == '-') {
+ p = tokenbuf;
+ *p++ = c;
+ c = nextch(fp, lastch);
+ while (isalnum(c) || c == '_' || c == '-') {
+ *p++ = c;
+ c = nextch(fp, lastch);
+ }
+ *p = '\0';
+ putbackch(c, lastch);
+ token = KEY;
+ } else {
+ token = ERROR;
+ }
+ break;
+ }
+string_error:
+ return(token);
+}
+
+static long
+modmask(
+ char *name)
+{
+ struct _modtbl {
+ const char name[6];
+ long mask;
+ };
+
+ static const struct _modtbl tbl[] = {
+ { "Ctrl", ControlMask },
+ { "Lock", LockMask },
+ { "Caps", LockMask },
+ { "Shift", ShiftMask },
+ { "Alt", Mod1Mask },
+ { "Meta", Mod1Mask }};
+
+ int i, num_entries = sizeof (tbl) / sizeof (tbl[0]);
+
+ for (i = 0; i < num_entries; i++)
+ if (!strcmp (name, tbl[i].name))
+ return tbl[i].mask;
+
+ return 0;
+}
+
+static char*
+TransFileName(Xim im, char *name)
+{
+ char *home = NULL, *lcCompose = NULL;
+ char dir[XLC_BUFSIZE];
+ char *i = name, *ret, *j;
+ int l = 0;
+
+ while (*i) {
+ if (*i == '%') {
+ i++;
+ switch (*i) {
+ case '%':
+ l++;
+ break;
+ case 'H':
+ home = getenv("HOME");
+ if (home)
+ l += strlen(home);
+ break;
+ case 'L':
+ if (lcCompose == NULL)
+ lcCompose = _XlcFileName(im->core.lcd, COMPOSE_FILE);
+ if (lcCompose)
+ l += strlen(lcCompose);
+ break;
+ case 'S':
+ xlocaledir(dir, XLC_BUFSIZE);
+ l += strlen(dir);
+ break;
+ }
+ } else {
+ l++;
+ }
+ i++;
+ }
+
+ j = ret = Xmalloc(l+1);
+ if (ret == NULL)
+ return ret;
+ i = name;
+ while (*i) {
+ if (*i == '%') {
+ i++;
+ switch (*i) {
+ case '%':
+ *j++ = '%';
+ break;
+ case 'H':
+ if (home) {
+ strcpy(j, home);
+ j += strlen(home);
+ }
+ break;
+ case 'L':
+ if (lcCompose) {
+ strcpy(j, lcCompose);
+ j += strlen(lcCompose);
+ }
+ break;
+ case 'S':
+ strcpy(j, dir);
+ j += strlen(dir);
+ break;
+ }
+ i++;
+ } else {
+ *j++ = *i++;
+ }
+ }
+ *j = '\0';
+ Xfree(lcCompose);
+ return ret;
+}
+
+#ifndef MB_LEN_MAX
+#define MB_LEN_MAX 6
+#endif
+
+static int
+get_mb_string (Xim im, char *buf, KeySym ks)
+{
+ XPointer from, to;
+ int from_len, to_len, len;
+ XPointer args[1];
+ XlcCharSet charset;
+ char local_buf[MB_LEN_MAX];
+ unsigned int ucs;
+ ucs = KeySymToUcs4(ks);
+
+ from = (XPointer) &ucs;
+ to = (XPointer) local_buf;
+ from_len = 1;
+ to_len = MB_LEN_MAX;
+ args[0] = (XPointer) &charset;
+ if (_XlcConvert(im->private.local.ucstoc_conv,
+ &from, &from_len, &to, &to_len, args, 1 ) != 0) {
+ return 0;
+ }
+
+ from = (XPointer) local_buf;
+ to = (XPointer) buf;
+ from_len = MB_LEN_MAX - to_len;
+ to_len = MB_LEN_MAX + 1;
+ args[0] = (XPointer) charset;
+ if (_XlcConvert(im->private.local.cstomb_conv,
+ &from, &from_len, &to, &to_len, args, 1 ) != 0) {
+ return 0;
+ }
+ len = MB_LEN_MAX + 1 - to_len;
+ buf[len] = '\0';
+ return len;
+}
+
+#define AllMask (ShiftMask | LockMask | ControlMask | Mod1Mask)
+#define LOCAL_WC_BUFSIZE 128
+#define LOCAL_UTF8_BUFSIZE 256
+#define SEQUENCE_MAX 10
+
+static int
+parseline(
+ FILE *fp,
+ Xim im,
+ char* tokenbuf)
+{
+ int token;
+ DTModifier modifier_mask;
+ DTModifier modifier;
+ DTModifier tmp;
+ KeySym keysym = NoSymbol;
+ DTIndex *top = &im->private.local.top;
+ DefTreeBase *b = &im->private.local.base;
+ DTIndex t;
+ DefTree *p = NULL;
+ Bool exclam, tilde;
+ KeySym rhs_keysym = 0;
+ char *rhs_string_mb;
+ int l;
+ int lastch = 0;
+ char local_mb_buf[MB_LEN_MAX+1];
+ wchar_t local_wc_buf[LOCAL_WC_BUFSIZE], *rhs_string_wc;
+ char local_utf8_buf[LOCAL_UTF8_BUFSIZE], *rhs_string_utf8;
+
+ struct DefBuffer {
+ DTModifier modifier_mask;
+ DTModifier modifier;
+ KeySym keysym;
+ };
+
+ struct DefBuffer buf[SEQUENCE_MAX];
+ int i, n;
+
+ do {
+ token = nexttoken(fp, tokenbuf, &lastch);
+ } while (token == ENDOFLINE);
+
+ if (token == ENDOFFILE) {
+ return(-1);
+ }
+
+ n = 0;
+ do {
+ if ((token == KEY) && (strcmp("include", tokenbuf) == 0)) {
+ char *filename;
+ FILE *infp;
+ token = nexttoken(fp, tokenbuf, &lastch);
+ if (token != KEY && token != STRING)
+ goto error;
+ if ((filename = TransFileName(im, tokenbuf)) == NULL)
+ goto error;
+ infp = _XFopenFile(filename, "r");
+ Xfree(filename);
+ if (infp == NULL)
+ goto error;
+ _XimParseStringFile(infp, im);
+ fclose(infp);
+ return (0);
+ } else if ((token == KEY) && (strcmp("None", tokenbuf) == 0)) {
+ modifier = 0;
+ modifier_mask = AllMask;
+ token = nexttoken(fp, tokenbuf, &lastch);
+ } else {
+ modifier_mask = modifier = 0;
+ exclam = False;
+ if (token == EXCLAM) {
+ exclam = True;
+ token = nexttoken(fp, tokenbuf, &lastch);
+ }
+ while (token == TILDE || token == KEY) {
+ tilde = False;
+ if (token == TILDE) {
+ tilde = True;
+ token = nexttoken(fp, tokenbuf, &lastch);
+ if (token != KEY)
+ goto error;
+ }
+ tmp = modmask(tokenbuf);
+ if (!tmp) {
+ goto error;
+ }
+ modifier_mask |= tmp;
+ if (tilde) {
+ modifier &= ~tmp;
+ } else {
+ modifier |= tmp;
+ }
+ token = nexttoken(fp, tokenbuf, &lastch);
+ }
+ if (exclam) {
+ modifier_mask = AllMask;
+ }
+ }
+
+ if (token != LESS) {
+ goto error;
+ }
+
+ token = nexttoken(fp, tokenbuf, &lastch);
+ if (token != KEY) {
+ goto error;
+ }
+
+ token = nexttoken(fp, tokenbuf, &lastch);
+ if (token != GREATER) {
+ goto error;
+ }
+
+ keysym = XStringToKeysym(tokenbuf);
+ if (keysym == NoSymbol) {
+ goto error;
+ }
+
+ buf[n].keysym = keysym;
+ buf[n].modifier = modifier;
+ buf[n].modifier_mask = modifier_mask;
+ n++;
+ if( n >= SEQUENCE_MAX )
+ goto error;
+ token = nexttoken(fp, tokenbuf, &lastch);
+ } while (token != COLON);
+
+ token = nexttoken(fp, tokenbuf, &lastch);
+ if (token == STRING) {
+ l = strlen(tokenbuf) + 1;
+ while (b->mbused + l > b->mbsize) {
+ b->mbsize = b->mbsize ? b->mbsize * 1.5 : 1024;
+ if (! (b->mb = Xrealloc (b->mb, b->mbsize)) )
+ goto error;
+ }
+ rhs_string_mb = &b->mb[b->mbused];
+ b->mbused += l;
+ strcpy(rhs_string_mb, tokenbuf);
+ token = nexttoken(fp, tokenbuf, &lastch);
+ if (token == KEY) {
+ rhs_keysym = XStringToKeysym(tokenbuf);
+ if (rhs_keysym == NoSymbol) {
+ goto error;
+ }
+ token = nexttoken(fp, tokenbuf, &lastch);
+ }
+ if (token != ENDOFLINE && token != ENDOFFILE) {
+ goto error;
+ }
+ } else if (token == KEY) {
+ rhs_keysym = XStringToKeysym(tokenbuf);
+ if (rhs_keysym == NoSymbol) {
+ goto error;
+ }
+ token = nexttoken(fp, tokenbuf, &lastch);
+ if (token != ENDOFLINE && token != ENDOFFILE) {
+ goto error;
+ }
+
+ l = get_mb_string(im, local_mb_buf, rhs_keysym);
+ while (b->mbused + l + 1 > b->mbsize) {
+ b->mbsize = b->mbsize ? b->mbsize * 1.5 : 1024;
+ if (! (b->mb = Xrealloc (b->mb, b->mbsize)) )
+ goto error;
+ }
+ rhs_string_mb = &b->mb[b->mbused];
+ b->mbused += l + 1;
+ memcpy(rhs_string_mb, local_mb_buf, l);
+ rhs_string_mb[l] = '\0';
+ } else {
+ goto error;
+ }
+
+ l = _Xmbstowcs(local_wc_buf, rhs_string_mb, LOCAL_WC_BUFSIZE - 1);
+ if (l == LOCAL_WC_BUFSIZE - 1) {
+ local_wc_buf[l] = (wchar_t)'\0';
+ }
+ while (b->wcused + l + 1 > b->wcsize) {
+ b->wcsize = b->wcsize ? b->wcsize * 1.5 : 512;
+ if (! (b->wc = Xrealloc (b->wc, sizeof(wchar_t) * b->wcsize)) )
+ goto error;
+ }
+ rhs_string_wc = &b->wc[b->wcused];
+ b->wcused += l + 1;
+ memcpy((char *)rhs_string_wc, (char *)local_wc_buf, (l + 1) * sizeof(wchar_t) );
+
+ l = _Xmbstoutf8(local_utf8_buf, rhs_string_mb, LOCAL_UTF8_BUFSIZE - 1);
+ if (l == LOCAL_UTF8_BUFSIZE - 1) {
+ local_utf8_buf[l] = '\0';
+ }
+ while (b->utf8used + l + 1 > b->utf8size) {
+ b->utf8size = b->utf8size ? b->utf8size * 1.5 : 1024;
+ if (! (b->utf8 = Xrealloc (b->utf8, b->utf8size)) )
+ goto error;
+ }
+ rhs_string_utf8 = &b->utf8[b->utf8used];
+ b->utf8used += l + 1;
+ memcpy(rhs_string_utf8, local_utf8_buf, l + 1);
+
+ for (i = 0; i < n; i++) {
+ for (t = *top; t; t = b->tree[t].next) {
+ if (buf[i].keysym == b->tree[t].keysym &&
+ buf[i].modifier == b->tree[t].modifier &&
+ buf[i].modifier_mask == b->tree[t].modifier_mask) {
+ break;
+ }
+ }
+ if (t) {
+ p = &b->tree[t];
+ top = &p->succession;
+ } else {
+ while (b->treeused >= b->treesize) {
+ DefTree *old = b->tree;
+ int oldsize = b->treesize;
+ b->treesize = b->treesize ? b->treesize * 1.5 : 256;
+ if (! (b->tree = Xrealloc (b->tree, sizeof(DefTree) * b->treesize)) )
+ goto error;
+ if (top >= (DTIndex *) old && top < (DTIndex *) &old[oldsize])
+ top = (DTIndex *) (((char *) top) + (((char *)b->tree)-(char *)old));
+ }
+ p = &b->tree[b->treeused];
+ p->keysym = buf[i].keysym;
+ p->modifier = buf[i].modifier;
+ p->modifier_mask = buf[i].modifier_mask;
+ p->succession = 0;
+ p->next = *top;
+ p->mb = 0;
+ p->wc = 0;
+ p->utf8 = 0;
+ p->ks = NoSymbol;
+ *top = b->treeused;
+ top = &p->succession;
+ b->treeused++;
+ }
+ }
+
+ /* old entries no longer freed... */
+ p->mb = rhs_string_mb - b->mb;
+ p->wc = rhs_string_wc - b->wc;
+ p->utf8 = rhs_string_utf8 - b->utf8;
+ p->ks = rhs_keysym;
+ return(n);
+error:
+ while (token != ENDOFLINE && token != ENDOFFILE) {
+ token = nexttoken(fp, tokenbuf, &lastch);
+ }
+ return(0);
+}
+
+void
+_XimParseStringFile(
+ FILE *fp,
+ Xim im)
+{
+ char tb[8192];
+ char* tbp;
+ struct stat st;
+
+ if (fstat (fileno (fp), &st) != -1) {
+ unsigned long size = (unsigned long) st.st_size;
+ if (size <= sizeof tb) tbp = tb;
+ else tbp = malloc (size);
+
+ if (tbp != NULL) {
+ while (parseline(fp, im, tbp) >= 0) {}
+ if (tbp != tb) free (tbp);
+ }
+ }
+}
diff --git a/libX11/modules/im/ximcp/imLcSIc.c b/libX11/modules/im/ximcp/imLcSIc.c
index 095919309..3fce5fdc7 100644
--- a/libX11/modules/im/ximcp/imLcSIc.c
+++ b/libX11/modules/im/ximcp/imLcSIc.c
@@ -1,54 +1,54 @@
-/******************************************************************
-
- Copyright 1990, 1991, 1992, 1993, 1994 by FUJITSU LIMITED
-
-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 FUJITSU LIMITED
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-FUJITSU LIMITED makes no representations about the suitability of
-this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL FUJITSU LIMITED 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.
-
- Author: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <X11/Xlib.h>
-#include <X11/Xmd.h>
-#include <X11/Xutil.h>
-#include "Xlibint.h"
-#include "Xlcint.h"
-#include "Ximint.h"
-
-Public char *
-_XimLocalSetICValues(XIC xic, XIMArg *values)
-{
- XimDefICValues ic_values;
- Xic ic = (Xic)xic;
- char *name;
-
- _XimGetCurrentICValues(ic, &ic_values);
- name = _XimSetICValueData(ic, (XPointer)&ic_values,
- ic->private.local.ic_resources,
- ic->private.local.ic_num_resources,
- values, XIM_SETICVALUES, True);
- _XimSetCurrentICValues(ic, &ic_values);
- return(name);
-}
+/******************************************************************
+
+ Copyright 1990, 1991, 1992, 1993, 1994 by FUJITSU LIMITED
+
+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 FUJITSU LIMITED
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+FUJITSU LIMITED makes no representations about the suitability of
+this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FUJITSU LIMITED 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.
+
+ Author: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <X11/Xlib.h>
+#include <X11/Xmd.h>
+#include <X11/Xutil.h>
+#include "Xlibint.h"
+#include "Xlcint.h"
+#include "Ximint.h"
+
+Public char *
+_XimLocalSetICValues(XIC xic, XIMArg *values)
+{
+ XimDefICValues ic_values;
+ Xic ic = (Xic)xic;
+ char *name;
+
+ _XimGetCurrentICValues(ic, &ic_values);
+ name = _XimSetICValueData(ic, (XPointer)&ic_values,
+ ic->private.local.ic_resources,
+ ic->private.local.ic_num_resources,
+ values, XIM_SETICVALUES, True);
+ _XimSetCurrentICValues(ic, &ic_values);
+ return(name);
+}
diff --git a/libX11/modules/im/ximcp/imThaiFlt.c b/libX11/modules/im/ximcp/imThaiFlt.c
index d22b13038..12e3de265 100644
--- a/libX11/modules/im/ximcp/imThaiFlt.c
+++ b/libX11/modules/im/ximcp/imThaiFlt.c
@@ -1,1421 +1,1421 @@
-/***********************************************************
-
-Copyright 1993, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1993 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-/*
-**++
-** FACILITY:
-**
-** Xlib
-**
-** ABSTRACT:
-**
-** Thai specific functions.
-** Handles character classifications, composibility checking,
-** Input sequence check and other Thai specific requirements
-** according to WTT specification and DEC extensions.
-**
-** MODIFICATION HISTORY:
-**
-**/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <X11/Xlib.h>
-#include <X11/Xmd.h>
-#include <X11/keysym.h>
-#include <X11/Xutil.h>
-#include "Xlibint.h"
-#include "Xlcint.h"
-#include "Ximint.h"
-#include "XimThai.h"
-#include "XlcPubI.h"
-
-
-#define SPACE 32
-
-/* character classification table */
-#define TACTIS_CHARS 256
-Private
-char const tactis_chtype[TACTIS_CHARS] = {
- CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 0 - 7 */
- CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 8 - 15 */
- CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 16 - 23 */
- CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 24 - 31 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 32 - 39 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 40 - 47 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 48 - 55 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 56 - 63 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 64 - 71 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 72 - 79 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 80 - 87 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 88 - 95 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 96 - 103 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 104 - 111 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 112 - 119 */
- NON, NON, NON, NON, NON, NON, NON, CTRL, /* 120 - 127 */
- CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 128 - 135 */
- CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 136 - 143 */
- CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 144 - 151 */
- CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 152 - 159 */
- NON, CONS, CONS, CONS, CONS, CONS, CONS, CONS, /* 160 - 167 */
- CONS, CONS, CONS, CONS, CONS, CONS, CONS, CONS, /* 168 - 175 */
- CONS, CONS, CONS, CONS, CONS, CONS, CONS, CONS, /* 176 - 183 */
- CONS, CONS, CONS, CONS, CONS, CONS, CONS, CONS, /* 184 - 191 */
- CONS, CONS, CONS, CONS, FV3, CONS, FV3, CONS, /* 192 - 199 */
- CONS, CONS, CONS, CONS, CONS, CONS, CONS, NON, /* 200 - 207 */
- FV1, AV2, FV1, FV1, AV1, AV3, AV2, AV3, /* 208 - 215 */
- BV1, BV2, BD, NON, NON, NON, NON, NON, /* 216 - 223 */
- LV, LV, LV, LV, LV, FV2, NON, AD2, /* 224 - 231 */
- TONE, TONE, TONE, TONE, AD1, AD1, AD3, NON, /* 232 - 239 */
- NON, NON, NON, NON, NON, NON, NON, NON, /* 240 - 247 */
- NON, NON, NON, NON, NON, NON, NON, CTRL /* 248 - 255 */
-};
-
-/* Composibility checking tables */
-#define NC 0 /* NOT COMPOSIBLE - following char displays in next cell */
-#define CP 1 /* COMPOSIBLE - following char is displayed in the same cell
- as leading char, also implies ACCEPT */
-#define XC 3 /* Non-display */
-#define AC 4 /* ACCEPT - display the following char in the next cell */
-#define RJ 5 /* REJECT - discard that following char, ignore it */
-
-#define CH_CLASSES 17 /* 17 classes of chars */
-
-Private
-char const write_rules_lookup[CH_CLASSES][CH_CLASSES] = {
- /* Table 0: writing/outputing rules */
- /* row: leading char, column: following char */
-/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
- {XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*CTRL*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*NON*/
- ,{XC, NC, NC, NC, NC, NC, NC, CP, CP, CP, CP, CP, CP, CP, CP, CP, CP}/*CONS*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*LV*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*FV1*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*FV2*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*FV3*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, CP, CP, NC, NC, NC, NC, NC}/*BV1*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, CP, NC, NC, NC, NC, NC, NC}/*BV2*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*BD*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*TONE*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*AD1*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*AD2*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*AD3*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, CP, CP, NC, NC, NC, NC, NC}/*AV1*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, CP, NC, NC, NC, NC, NC, NC}/*AV2*/
- ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, CP, NC, CP, NC, NC, NC, NC}/*AV3*/
-};
-
-Private
-char const wtt_isc1_lookup[CH_CLASSES][CH_CLASSES] = {
- /* Table 1: WTT default input sequence check rules */
- /* row: leading char, column: following char */
-/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
- {XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*CTRL*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*NON*/
- ,{XC, AC, AC, AC, AC, AC, AC, CP, CP, CP, CP, CP, CP, CP, CP, CP, CP}/*CONS*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*LV*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV1*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV2*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV3*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*BV1*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*BV2*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*BD*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*TONE*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD1*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD2*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD3*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*AV1*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*AV2*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, CP, RJ, RJ, RJ, RJ}/*AV3*/
-};
-
-Private
-char const wtt_isc2_lookup[CH_CLASSES][CH_CLASSES] = {
- /* Table 2: WTT strict input sequence check rules */
- /* row: leading char, column: following char */
-/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
- {XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*CTRL*/
- ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*NON*/
- ,{XC, AC, AC, AC, AC, RJ, AC, CP, CP, CP, CP, CP, CP, CP, CP, CP, CP}/*CONS*/
- ,{XC, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*LV*/
- ,{XC, AC, AC, AC, AC, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV1*/
- ,{XC, AC, AC, AC, AC, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV2*/
- ,{XC, AC, AC, AC, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV3*/
- ,{XC, AC, AC, AC, AC, RJ, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*BV1*/
- ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*BV2*/
- ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*BD*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*TONE*/
- ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD1*/
- ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD2*/
- ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD3*/
- ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*AV1*/
- ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*AV2*/
- ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, CP, RJ, CP, RJ, RJ, RJ, RJ}/*AV3*/
-};
-
-Private
-char const thaicat_isc_lookup[CH_CLASSES][CH_CLASSES] = {
- /* Table 3: Thaicat input sequence check rules */
- /* row: leading char, column: following char */
-/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
- {XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*CTRL*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*NON*/
- ,{XC, AC, AC, AC, AC, AC, AC, CP, CP, CP, CP, CP, CP, CP, CP, CP, CP}/*CONS*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*LV*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV1*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV2*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ} /*FV3*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*BV1*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*BV2*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*BD*/
- ,{XC, AC, AC, AC, AC, AC, AC, CP, CP, RJ, RJ, RJ, RJ, RJ, CP, CP, CP}/*TONE*/
- ,{XC, AC, AC, AC, AC, AC, AC, CP, RJ, RJ, RJ, RJ, RJ, RJ, CP, RJ, RJ}/*AD1*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, CP}/*AD2*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD3*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*AV1*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*AV2*/
- ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, CP, RJ, RJ, RJ, RJ}/*AV3*/
-};
-
-
-/* returns classification of a char */
-Private int
-THAI_chtype (unsigned char ch)
-{
- return tactis_chtype[ch];
-}
-
-#ifdef UNUSED
-/* returns the display level */
-Private int
-THAI_chlevel (unsigned char ch)
-{
- int chlevel;
-
- switch (tactis_chtype[ch])
- {
- case CTRL:
- chlevel = NON;
- break;
- case BV1:
- case BV2:
- case BD:
- chlevel = BELOW;
- break;
- case TONE:
- case AD1:
- case AD2:
- chlevel = TOP;
- break;
- case AV1:
- case AV2:
- case AV3:
- case AD3:
- chlevel = ABOVE;
- break;
- case NON:
- case CONS:
- case LV:
- case FV1:
- case FV2:
- case FV3:
- default: /* if tactis_chtype is invalid */
- chlevel = BASE;
- break;
- }
- return chlevel;
-}
-
-
-/* return True if char is non-spacing */
-Private Bool
-THAI_isdead (unsigned char ch)
-{
- return ((tactis_chtype[ch] == CTRL) || (tactis_chtype[ch] == BV1) ||
- (tactis_chtype[ch] == BV2) || (tactis_chtype[ch] == BD) ||
- (tactis_chtype[ch] == TONE) || (tactis_chtype[ch] == AD1) ||
- (tactis_chtype[ch] == AD2) || (tactis_chtype[ch] == AD3) ||
- (tactis_chtype[ch] == AV1) || (tactis_chtype[ch] == AV2) ||
- (tactis_chtype[ch] == AV3));
-}
-
-
-/* return True if char is consonant */
-Private Bool
-THAI_iscons (unsigned char ch)
-{
- return (tactis_chtype[ch] == CONS);
-}
-
-
-/* return True if char is vowel */
-Private Bool
-THAI_isvowel (unsigned char ch)
-{
- return ((tactis_chtype[ch] == LV) || (tactis_chtype[ch] == FV1) ||
- (tactis_chtype[ch] == FV2) || (tactis_chtype[ch] == FV3) ||
- (tactis_chtype[ch] == BV1) || (tactis_chtype[ch] == BV2) ||
- (tactis_chtype[ch] == AV1) || (tactis_chtype[ch] == AV2) ||
- (tactis_chtype[ch] == AV3));
-}
-
-
-/* return True if char is tonemark */
-Private Bool
-THAI_istone (unsigned char ch)
-{
- return (tactis_chtype[ch] == TONE);
-}
-#endif
-
-Private Bool
-THAI_iscomposible (
- unsigned char follow_ch,
- unsigned char lead_ch)
-{/* "Can follow_ch be put in the same display cell as lead_ch?" */
-
- return (write_rules_lookup[THAI_chtype(lead_ch)][THAI_chtype(follow_ch)]
- == CP);
-}
-
-Private Bool
-THAI_isaccepted (
- unsigned char follow_ch,
- unsigned char lead_ch,
- unsigned char mode)
-{
- Bool iskeyvalid; /* means "Can follow_ch be keyed in after lead_ch?" */
-
- switch (mode)
- {
- case WTT_ISC1:
- iskeyvalid =
- (wtt_isc1_lookup[THAI_chtype(lead_ch)][THAI_chtype(follow_ch)] != RJ);
- break;
- case WTT_ISC2:
- iskeyvalid =
- (wtt_isc2_lookup[THAI_chtype(lead_ch)][THAI_chtype(follow_ch)] != RJ);
- break;
- case THAICAT_ISC:
- iskeyvalid =
- (thaicat_isc_lookup[THAI_chtype(lead_ch)][THAI_chtype(follow_ch)] != RJ);
- break;
- default:
- iskeyvalid = True;
- break;
- }
-
- return iskeyvalid;
-}
-
-#ifdef UNUSED
-Private void
-THAI_apply_write_rules(
- unsigned char *instr,
- unsigned char *outstr,
- unsigned char insert_ch,
- int *num_insert_ch)
-{
-/*
-Input parameters:
- instr - input string
- insert_ch specify what char to be added when invalid composition is found
-Output parameters:
- outstr - output string after input string has been applied the rules
- num_insert_ch - number of insert_ch added to outstr.
-*/
- unsigned char *lead_ch = NULL, *follow_ch = NULL, *out_ch = NULL;
-
- *num_insert_ch = 0;
- lead_ch = follow_ch = instr;
- out_ch = outstr;
- if ((*lead_ch == '\0') || !(THAI_find_chtype(instr,DEAD)))
- { /* Empty string or can't find any non-spacing char*/
- strcpy((char *)outstr, (char *)instr);
- } else { /* String of length >= 1, keep looking */
- follow_ch++;
- if (THAI_isdead(*lead_ch)) { /* is first char non-spacing? */
- *out_ch++ = SPACE;
- (*num_insert_ch)++;
- }
- *out_ch++ = *lead_ch;
- while (*follow_ch != '\0') /* more char in string to check */
- {
- if (THAI_isdead(*follow_ch) &&
- !THAI_iscomposible(*follow_ch,*lead_ch))
- {
- *out_ch++ = SPACE;
- (*num_insert_ch)++;
- }
- *out_ch++ = *follow_ch;
- lead_ch = follow_ch;
- follow_ch++;
- }
- *out_ch = '\0';
- }
-}
-
-Private int
-THAI_find_chtype (
- unsigned char *instr,
- int chtype)
-{
-/*
-Input parameters:
- instr - input string
- chtype - type of character to look for
-Output parameters:
- function returns first position of character with matched chtype
- function returns -1 if it does not find.
-*/
- int i = 0, position = -1;
-
- switch (chtype)
- {
- case DEAD:
- for (i = 0; *instr != '\0' && THAI_isdead(*instr); i++, instr++)
- ;
- if (*instr != '\0') position = i;
- break;
- default:
- break;
- }
- return position;
-}
-
-
-Private int
-THAI_apply_scm(
- unsigned char *instr,
- unsigned char *outstr,
- unsigned char spec_ch,
- int num_sp,
- unsigned char insert_ch)
-{
- unsigned char *scan, *outch;
- int i, dead_count, found_count;
- Bool isconsecutive;
-
- scan = instr;
- outch = outstr;
- dead_count = found_count = 0;
- isconsecutive = False;
- while (*scan != '\0') {
- if (THAI_isdead(*scan))
- dead_count++; /* count number of non-spacing char */
- if (*scan == spec_ch)
- if (!isconsecutive)
- found_count++; /* count number consecutive spec char found */
- *outch++ = *scan++;
- if (found_count == num_sp) {
- for (i = 0; i < dead_count; i++)
- *outch++ = insert_ch;
- dead_count = found_count = 0;
- }
- }
- /* what to return? */
- return 0; /* probably not right but better than returning garbage */
-}
-
-
-/* The following functions are copied from XKeyBind.c */
-
-Private void ComputeMaskFromKeytrans();
-Private int IsCancelComposeKey(KeySym *symbol, XKeyEvent *event);
-Private void SetLed(Display *dpy, int num, int state);
-Private CARD8 FindKeyCode();
-
-
-/* The following functions are specific to this module */
-
-Private int XThaiTranslateKey();
-Private int XThaiTranslateKeySym();
-
-
-Private KeySym HexIMNormalKey(
- XicThaiPart *thai_part,
- KeySym symbol,
- XKeyEvent *event);
-Private KeySym HexIMFirstComposeKey(
- XicThaiPart *thai_part,
- KeySym symbol,
- XKeyEvent *event);
-Private KeySym HexIMSecondComposeKey(
- XicThaiPart *thai_part,
- KeySym symbol
- XKeyEvent *event);
-Private KeySym HexIMComposeSequence(KeySym ks1, KeySym ks2);
-Private void InitIscMode(Xic ic);
-Private Bool ThaiComposeConvert(
- Display *dpy,
- KeySym insym,
- KeySym *outsym, KeySym *lower, KeySym *upper);
-#endif
-
-/*
- * Definitions
- */
-
-#define BellVolume 0
-
-#define ucs2tis(wc) \
- (unsigned char) ( \
- (0<=(wc)&&(wc)<=0x7F) ? \
- (wc) : \
- ((0x0E01<=(wc)&&(wc)<=0x0E5F) ? ((wc)-0x0E00+0xA0) : 0))
-/* "c" is an unsigned char */
-#define tis2ucs(c) \
- ( \
- ((c)<=0x7F) ? \
- (wchar_t)(c) : \
- ((0x0A1<=(c)) ? ((wchar_t)(c)-0xA0+0x0E00) : 0))
-
-/*
- * Macros to save and recall last input character in XIC
- */
-#define IC_SavePreviousChar(ic,ch) \
- ((ic)->private.local.base.mb[(ic)->private.local.base.tree[(ic)->private.local.context].mb] = (char) (ch))
-#define IC_ClearPreviousChar(ic) \
- ((ic)->private.local.base.mb[(ic)->private.local.base.tree[(ic)->private.local.context].mb] = 0)
-#define IC_GetPreviousChar(ic) \
- (IC_RealGetPreviousChar(ic,1))
-#define IC_GetContextChar(ic) \
- (IC_RealGetPreviousChar(ic,2))
-#define IC_DeletePreviousChar(ic) \
- (IC_RealDeletePreviousChar(ic))
-
-Private unsigned char
-IC_RealGetPreviousChar(Xic ic, unsigned short pos)
-{
- XICCallback* cb = &ic->core.string_conversion_callback;
- DefTreeBase *b = &ic->private.local.base;
-
- if (cb && cb->callback) {
- XIMStringConversionCallbackStruct screc;
- unsigned char c;
-
- /* Use a safe value of position = 0 and stretch the range to desired
- * place, as XIM protocol is unclear here whether it could be negative
- */
- screc.position = 0;
- screc.direction = XIMBackwardChar;
- screc.operation = XIMStringConversionRetrieval;
- screc.factor = pos;
- screc.text = 0;
-
- (cb->callback)((XIC)ic, cb->client_data, (XPointer)&screc);
- if (!screc.text)
- return (unsigned char) b->mb[b->tree[(ic)->private.local.context].mb];
- if ((screc.text->feedback &&
- *screc.text->feedback == XIMStringConversionLeftEdge) ||
- screc.text->length < 1)
- {
- c = 0;
- } else {
- Xim im;
- XlcConv conv;
- int from_left;
- int to_left;
- char *from_buf;
- char *to_buf;
-
- im = (Xim) XIMOfIC((XIC)ic);
- if (screc.text->encoding_is_wchar) {
- conv = _XlcOpenConverter(im->core.lcd, XlcNWideChar,
- im->core.lcd, XlcNCharSet);
- from_buf = (char *) screc.text->string.wcs;
- from_left = screc.text->length * sizeof(wchar_t);
- } else {
- conv = _XlcOpenConverter(im->core.lcd, XlcNMultiByte,
- im->core.lcd, XlcNCharSet);
- from_buf = screc.text->string.mbs;
- from_left = screc.text->length;
- }
- to_buf = (char *)&c;
- to_left = 1;
-
- _XlcResetConverter(conv);
- if (_XlcConvert(conv, (XPointer *)&from_buf, &from_left,
- (XPointer *)&to_buf, &to_left, NULL, 0) < 0)
- {
- c = (unsigned char) b->mb[b->tree[(ic)->private.local.context].mb];
- }
- _XlcCloseConverter(conv);
-
- XFree(screc.text->string.mbs);
- }
- XFree(screc.text);
- return c;
- } else {
- return (unsigned char) b->mb[b->tree[(ic)->private.local.context].mb];
- }
-}
-
-Private unsigned char
-IC_RealDeletePreviousChar(Xic ic)
-{
- XICCallback* cb = &ic->core.string_conversion_callback;
-
- if (cb && cb->callback) {
- XIMStringConversionCallbackStruct screc;
- unsigned char c;
-
- screc.position = 0;
- screc.direction = XIMBackwardChar;
- screc.operation = XIMStringConversionSubstitution;
- screc.factor = 1;
- screc.text = 0;
-
- (cb->callback)((XIC)ic, cb->client_data, (XPointer)&screc);
- if (!screc.text) { return 0; }
- if ((screc.text->feedback &&
- *screc.text->feedback == XIMStringConversionLeftEdge) ||
- screc.text->length < 1)
- {
- c = 0;
- } else {
- if (screc.text->encoding_is_wchar) {
- c = ucs2tis(screc.text->string.wcs[0]);
- XFree(screc.text->string.wcs);
- } else {
- c = screc.text->string.mbs[0];
- XFree(screc.text->string.mbs);
- }
- }
- XFree(screc.text);
- return c;
- } else {
- return 0;
- }
-}
-/*
- * Input sequence check mode in XIC
- */
-#define IC_IscMode(ic) ((ic)->private.local.thai.input_mode)
-
-/*
- * Max. size of string handled by the two String Lookup functions.
- */
-#define STR_LKUP_BUF_SIZE 256
-
-/*
- * Size of buffer to contain previous locale name.
- */
-#define SAV_LOCALE_NAME_SIZE 256
-
-/*
- * Size of buffer to contain the IM modifier.
- */
-#define MAXTHAIIMMODLEN 20
-
-#define AllMods (ShiftMask|LockMask|ControlMask| \
- Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)
-
-
-#define IsISOControlKey(ks) ((ks) >= XK_2 && (ks) <= XK_8)
-
-#define IsValidControlKey(ks) (((((ks)>=XK_A && (ks)<=XK_asciitilde) || \
- (ks)==XK_space || (ks)==XK_Delete) && \
- ((ks)!=0)))
-
-#define COMPOSE_LED 2
-
-#ifdef UNUSED
-typedef KeySym (*StateProc)(
- XicThaiPart *thai_part,
- KeySym symbol,
- XKeyEvent *event);
-
-
-/*
- * macros to classify XKeyEvent state field
- */
-
-#define IsShift(state) (((state) & ShiftMask) != 0)
-#define IsLock(state) (((state) & LockMask) != 0)
-#define IsControl(state) (((state) & ControlMask) != 0)
-#define IsMod1(state) (((state) & Mod1Mask) != 0)
-#define IsMod2(state) (((state) & Mod2Mask) != 0)
-#define IsMod3(state) (((state) & Mod3Mask) != 0)
-#define IsMod4(state) (((state) & Mod4Mask) != 0)
-#define IsMod5(state) (((state) & Mod5Mask) != 0)
-
-/*
- * key starts Thai compose sequence (Hex input method) if :
- */
-
-#define IsComposeKey(ks, event) \
- (( ks==XK_Alt_L && \
- IsControl((event)->state) && \
- !IsShift((event)->state)) \
- ? True : False)
-
-
-/*
- * State handler to implement the Thai hex input method.
- */
-
-Private int const nstate_handlers = 3;
-Private StateProc state_handler[] = {
- HexIMNormalKey,
- HexIMFirstComposeKey,
- HexIMSecondComposeKey
-};
-
-
-/*
- * Table for 'Thai Compose' character input.
- * The current implementation uses latin-1 keysyms.
- */
-struct _XMapThaiKey {
- KeySym from;
- KeySym to;
-};
-
-Private struct _XMapThaiKey const ThaiComposeTable[] = {
- { /* 0xa4 */ XK_currency, /* 0xa5 */ XK_yen },
- { /* 0xa2 */ XK_cent, /* 0xa3 */ XK_sterling },
- { /* 0xe6 */ XK_ae, /* 0xef */ XK_idiaeresis },
- { /* 0xd3 */ XK_Oacute, /* 0xee */ XK_icircumflex },
- { /* 0xb9 */ XK_onesuperior, /* 0xfa */ XK_uacute },
- { /* 0xd2 */ XK_Ograve, /* 0xe5 */ XK_aring },
- { /* 0xbc */ XK_onequarter, /* 0xfb */ XK_ucircumflex },
- { XK_VoidSymbol, XK_VoidSymbol }
-};
-
-struct _XKeytrans {
- struct _XKeytrans *next;/* next on list */
- char *string; /* string to return when the time comes */
- int len; /* length of string (since NULL is legit)*/
- KeySym key; /* keysym rebound */
- unsigned int state; /* modifier state */
- KeySym *modifiers; /* modifier keysyms you want */
- int mlen; /* length of modifier list */
-};
-
-
-/* Convert keysym to 'Thai Compose' keysym */
-/* The current implementation use latin-1 keysyms */
-Private Bool
-ThaiComposeConvert(
- Display *dpy,
- KeySym insym,
- KeySym *outsym, KeySym *lower, KeySym *upper)
-{
- struct _XMapThaiKey const *table_entry = ThaiComposeTable;
-
- while (table_entry->from != XK_VoidSymbol) {
- if (table_entry->from == insym) {
- *outsym = table_entry->to;
- *lower = *outsym;
- *upper = *outsym;
- return True;
- }
- table_entry++;
- }
- return False;
-}
-
-Private int
-XThaiTranslateKey(
- register Display *dpy,
- KeyCode keycode,
- register unsigned int modifiers,
- unsigned int *modifiers_return,
- KeySym *keysym_return,
- KeySym *lsym_return,
- KeySym *usym_return)
-{
- int per;
- register KeySym *syms;
- KeySym sym = 0, lsym = 0, usym = 0;
-
- if ((! dpy->keysyms) && (! _XKeyInitialize(dpy)))
- return 0;
- *modifiers_return = (ShiftMask|LockMask) | dpy->mode_switch;
- if (((int)keycode < dpy->min_keycode) || ((int)keycode > dpy->max_keycode))
- {
- *keysym_return = NoSymbol;
- return 1;
- }
- per = dpy->keysyms_per_keycode;
- syms = &dpy->keysyms[(keycode - dpy->min_keycode) * per];
- while ((per > 2) && (syms[per - 1] == NoSymbol))
- per--;
- if ((per > 2) && (modifiers & dpy->mode_switch)) {
- syms += 2;
- per -= 2;
- }
- if (!(modifiers & ShiftMask) &&
- (!(modifiers & LockMask) || (dpy->lock_meaning == NoSymbol))) {
- if ((per == 1) || (syms[1] == NoSymbol))
- XConvertCase(syms[0], keysym_return, &usym);
- else {
- XConvertCase(syms[0], &lsym, &usym);
- *keysym_return = syms[0];
- }
- } else if (!(modifiers & LockMask) ||
- (dpy->lock_meaning != XK_Caps_Lock)) {
- if ((per == 1) || ((usym = syms[1]) == NoSymbol))
- XConvertCase(syms[0], &lsym, &usym);
- *keysym_return = usym;
- } else {
- if ((per == 1) || ((sym = syms[1]) == NoSymbol))
- sym = syms[0];
- XConvertCase(sym, &lsym, &usym);
- if (!(modifiers & ShiftMask) && (sym != syms[0]) &&
- ((sym != usym) || (lsym == usym)))
- XConvertCase(syms[0], &lsym, &usym);
- *keysym_return = usym;
- }
- /*
- * ThaiCat keyboard support :
- * When the Shift and Thai keys are hold for some keys a 'Thai Compose'
- * character code is generated which is different from column 3 and
- * 4 of the keymap.
- * Since we don't know whether ThaiCat keyboard or WTT keyboard is
- * in use, the same mapping is done for all Thai input.
- * We just arbitary choose to use column 3 keysyms as the indices of
- * this mapping.
- * When the control key is also hold, this mapping has no effect.
- */
- if ((modifiers & Mod1Mask) &&
- (modifiers & ShiftMask) &&
- !(modifiers & ControlMask)) {
- if (ThaiComposeConvert(dpy, syms[0], &sym, &lsym, &usym))
- *keysym_return = sym;
- }
-
- if (*keysym_return == XK_VoidSymbol)
- *keysym_return = NoSymbol;
- *lsym_return = lsym;
- *usym_return = usym;
- return 1;
-}
-
-/*
- * XThaiTranslateKeySym
- *
- * Translate KeySym to TACTIS code output.
- * The current implementation uses ISO latin-1 keysym.
- * Should be changed to TACTIS keysyms when they are defined by the
- * standard.
- */
-Private int
-XThaiTranslateKeySym(
- Display *dpy,
- register KeySym symbol,
- register KeySym lsym,
- register KeySym usym,
- unsigned int modifiers,
- unsigned char *buffer,
- int nbytes)
-{
- KeySym ckey = 0;
- register struct _XKeytrans *p;
- int length;
- unsigned long hiBytes;
- register unsigned char c;
-
- /*
- * initialize length = 1 ;
- */
- length = 1;
-
- if (!symbol)
- return 0;
- /* see if symbol rebound, if so, return that string. */
- for (p = dpy->key_bindings; p; p = p->next) {
- if (((modifiers & AllMods) == p->state) && (symbol == p->key)) {
- length = p->len;
- if (length > nbytes) length = nbytes;
- memcpy (buffer, p->string, length);
- return length;
- }
- }
- /* try to convert to TACTIS, handling control */
- hiBytes = symbol >> 8;
- if (!(nbytes &&
- ((hiBytes == 0) ||
- ((hiBytes == 0xFF) &&
- (((symbol >= XK_BackSpace) && (symbol <= XK_Clear)) ||
- (symbol == XK_Return) ||
- (symbol == XK_Escape) ||
- (symbol == XK_KP_Space) ||
- (symbol == XK_KP_Tab) ||
- (symbol == XK_KP_Enter) ||
- ((symbol >= XK_KP_Multiply) && (symbol <= XK_KP_9)) ||
- (symbol == XK_KP_Equal) ||
- (symbol == XK_Scroll_Lock) ||
-#ifdef DXK_PRIVATE /* DEC private keysyms */
- (symbol == DXK_Remove) ||
-#endif
- (symbol == NoSymbol) ||
- (symbol == XK_Delete))))))
- return 0;
-
- /* if X keysym, convert to ascii by grabbing low 7 bits */
- if (symbol == XK_KP_Space)
- c = XK_space & 0x7F; /* patch encoding botch */
-/* not for Thai
- else if (symbol == XK_hyphen)
- c = XK_minus & 0xFF; */ /* map to equiv character */
- else if (hiBytes == 0xFF)
- c = symbol & 0x7F;
- else
- c = symbol & 0xFF;
- /* only apply Control key if it makes sense, else ignore it */
- if (modifiers & ControlMask) {
- if (!(IsKeypadKey(lsym) || lsym==XK_Return || lsym==XK_Tab)) {
- if (IsISOControlKey(lsym)) ckey = lsym;
- else if (IsISOControlKey(usym)) ckey = usym;
- else if (lsym == XK_question) ckey = lsym;
- else if (usym == XK_question) ckey = usym;
- else if (IsValidControlKey(lsym)) ckey = lsym;
- else if (IsValidControlKey(usym)) ckey = usym;
- else length = 0;
-
- if (length != 0) {
- if (ckey == XK_2) c = '\000';
- else if (ckey >= XK_3 && ckey <= XK_7)
- c = (char)(ckey-('3'-'\033'));
- else if (ckey == XK_8) c = '\177';
- else if (ckey == XK_Delete) c = '\030';
- else if (ckey == XK_question) c = '\037';
- else if (ckey == XK_quoteleft) c = '\036'; /* KLee 1/24/91 */
- else c = (char)(ckey & 0x1f);
- }
- }
- }
- /*
- * ThaiCat has a key that generates two TACTIS codes D1 & E9.
- * It is represented by the latin-1 keysym XK_thorn (0xfe).
- * If c is XK_thorn, this key is pressed and it is converted to
- * 0xd1 0xe9.
- */
- if (c == XK_thorn) {
- buffer[0] = 0xd1;
- buffer[1] = 0xe9;
- buffer[2] = '\0';
- return 2;
- }
- else {
- /* Normal case */
- buffer[0] = c;
- buffer[1] = '\0';
- return 1;
- }
-}
-
-/*
- * given a KeySym, returns the first keycode containing it, if any.
- */
-Private CARD8
-FindKeyCode(
- register Display *dpy,
- register KeySym code)
-{
-
- register KeySym *kmax = dpy->keysyms +
- (dpy->max_keycode - dpy->min_keycode + 1) * dpy->keysyms_per_keycode;
- register KeySym *k = dpy->keysyms;
- while (k < kmax) {
- if (*k == code)
- return (((k - dpy->keysyms) / dpy->keysyms_per_keycode) +
- dpy->min_keycode);
- k += 1;
- }
- return 0;
-}
-
-/*
- * given a list of modifiers, computes the mask necessary for later matching.
- * This routine must lookup the key in the Keymap and then search to see
- * what modifier it is bound to, if any. Sets the AnyModifier bit if it
- * can't map some keysym to a modifier.
- */
-Private void
-ComputeMaskFromKeytrans(
- Display *dpy,
- register struct _XKeytrans *p)
-{
- register int i;
- register CARD8 code;
- register XModifierKeymap *m = dpy->modifiermap;
-
- p->state = AnyModifier;
- for (i = 0; i < p->mlen; i++) {
- /* if not found, then not on current keyboard */
- if ((code = FindKeyCode(dpy, p->modifiers[i])) == 0)
- return;
- /* code is now the keycode for the modifier you want */
- {
- register int j = m->max_keypermod<<3;
-
- while ((--j >= 0) && (code != m->modifiermap[j]))
- ;
- if (j < 0)
- return;
- p->state |= (1<<(j/m->max_keypermod));
- }
- }
- p->state &= AllMods;
-}
-
-/************************************************************************
- *
- *
- * Compose handling routines - compose handlers 0,1,2
- *
- *
- ************************************************************************/
-
-#define NORMAL_KEY_STATE 0
-#define FIRST_COMPOSE_KEY_STATE 1
-#define SECOND_COMPOSE_KEY_STATE 2
-
-Private
-KeySym HexIMNormalKey(
- XicThaiPart *thai_part,
- KeySym symbol,
- XKeyEvent *event)
-{
- if (IsComposeKey (symbol, event)) /* start compose sequence */
- {
- SetLed (event->display,COMPOSE_LED, LedModeOn);
- thai_part->comp_state = FIRST_COMPOSE_KEY_STATE;
- return NoSymbol;
- }
- return symbol;
-}
-
-
-Private
-KeySym HexIMFirstComposeKey(
- XicThaiPart *thai_part,
- KeySym symbol,
- XKeyEvent *event)
-{
- if (IsModifierKey (symbol)) return symbol; /* ignore shift etc. */
- if (IsCancelComposeKey (&symbol, event)) /* cancel sequence */
- {
- SetLed (event->display,COMPOSE_LED, LedModeOff);
- thai_part->comp_state = NORMAL_KEY_STATE;
- return symbol;
- }
- if (IsComposeKey (symbol, event)) /* restart sequence ?? */
- {
- return NoSymbol; /* no state change necessary */
- }
-
- thai_part->keysym = symbol; /* save key pressed */
- thai_part->comp_state = SECOND_COMPOSE_KEY_STATE;
- return NoSymbol;
-}
-
-Private
-KeySym HexIMSecondComposeKey(
- XicThaiPart *thai_part,
- KeySym symbol,
- XKeyEvent *event)
-{
- if (IsModifierKey (symbol)) return symbol; /* ignore shift etc. */
- if (IsComposeKey (symbol, event)) /* restart sequence ? */
- {
- thai_part->comp_state =FIRST_COMPOSE_KEY_STATE;
- return NoSymbol;
- }
- SetLed (event->display,COMPOSE_LED, LedModeOff);
- if (IsCancelComposeKey (&symbol, event)) /* cancel sequence ? */
- {
- thai_part->comp_state = NORMAL_KEY_STATE;
- return symbol;
- }
-
- if ((symbol = HexIMComposeSequence (thai_part->keysym, symbol))
- ==NoSymbol)
- { /* invalid compose sequence */
- XBell(event->display, BellVolume);
- }
- thai_part->comp_state = NORMAL_KEY_STATE; /* reset to normal state */
- return symbol;
-}
-
-
-/*
- * Interprets two keysyms entered as hex digits and return the Thai keysym
- * correspond to the TACTIS code formed.
- * The current implementation of this routine returns ISO Latin Keysyms.
- */
-
-Private
-KeySym HexIMComposeSequence(KeySym ks1, KeySym ks2)
-{
-int hi_digit;
-int lo_digit;
-int tactis_code;
-
- if ((ks1 >= XK_0) && (ks1 <= XK_9))
- hi_digit = ks1 - XK_0;
- else if ((ks1 >= XK_A) && (ks1 <= XK_F))
- hi_digit = ks1 - XK_A + 10;
- else if ((ks1 >= XK_a) && (ks1 <= XK_f))
- hi_digit = ks1 - XK_a + 10;
- else /* out of range */
- return NoSymbol;
-
- if ((ks2 >= XK_0) && (ks2 <= XK_9))
- lo_digit = ks2 - XK_0;
- else if ((ks2 >= XK_A) && (ks2 <= XK_F))
- lo_digit = ks2 - XK_A + 10;
- else if ((ks2 >= XK_a) && (ks2 <= XK_f))
- lo_digit = ks2 - XK_a + 10;
- else /* out of range */
- return NoSymbol;
-
- tactis_code = hi_digit * 0x10 + lo_digit ;
-
- return (KeySym)tactis_code;
-
-}
-
-/*
- * routine determines
- * 1) whether key event should cancel a compose sequence
- * 2) whether cancelling key event should be processed or ignored
- */
-
-Private
-int IsCancelComposeKey(
- KeySym *symbol,
- XKeyEvent *event)
-{
- if (*symbol==XK_Delete && !IsControl(event->state) &&
- !IsMod1(event->state)) {
- *symbol=NoSymbol; /* cancel compose sequence, and ignore key */
- return True;
- }
- if (IsComposeKey(*symbol, event)) return False;
- return (
- IsControl (event->state) ||
- IsMod1(event->state) ||
- IsKeypadKey (*symbol) ||
- IsFunctionKey (*symbol) ||
- IsMiscFunctionKey (*symbol) ||
-#ifdef DXK_PRIVATE /* DEC private keysyms */
- *symbol == DXK_Remove ||
-#endif
- IsPFKey (*symbol) ||
- IsCursorKey (*symbol) ||
- (*symbol >= XK_Tab && *symbol < XK_Multi_key)
- ? True : False); /* cancel compose sequence and pass */
- /* cancelling key through */
-}
-
-
-/*
- * set specified keyboard LED on or off
- */
-
-Private
-void SetLed(
- Display *dpy,
- int num,
- int state)
-{
- XKeyboardControl led_control;
-
- led_control.led_mode = state;
- led_control.led = num;
- XChangeKeyboardControl (dpy, KBLed | KBLedMode, &led_control);
-}
-#endif
-
-/*
- * Initialize ISC mode from im modifier
- */
-Private void InitIscMode(Xic ic)
-{
- Xim im;
- char *im_modifier_name;
-
- /* If already defined, just return */
-
- if (IC_IscMode(ic)) return;
-
- /* Get IM modifier */
-
- im = (Xim) XIMOfIC((XIC)ic);
- im_modifier_name = im->core.im_name;
-
- /* Match with predefined value, default is Basic Check */
-
- if (!strncmp(im_modifier_name,"BasicCheck",MAXTHAIIMMODLEN+1))
- IC_IscMode(ic) = WTT_ISC1;
- else if (!strncmp(im_modifier_name,"Strict",MAXTHAIIMMODLEN+1))
- IC_IscMode(ic) = WTT_ISC2;
- else if (!strncmp(im_modifier_name,"Thaicat",MAXTHAIIMMODLEN+1))
- IC_IscMode(ic) = THAICAT_ISC;
- else if (!strncmp(im_modifier_name,"Passthrough",MAXTHAIIMMODLEN+1))
- IC_IscMode(ic) = NOISC;
- else
- IC_IscMode(ic) = WTT_ISC1;
-
- return;
-}
-
-/*
- * Helper functions for _XimThaiFilter()
- */
-Private Bool
-ThaiFltAcceptInput(Xic ic, unsigned char new_char, KeySym symbol)
-{
- DefTreeBase *b = &ic->private.local.base;
- b->wc[b->tree[ic->private.local.composed].wc+0] = tis2ucs(new_char);
- b->wc[b->tree[ic->private.local.composed].wc+1] = '\0';
-
- if ((new_char <= 0x1f) || (new_char == 0x7f))
- b->tree[ic->private.local.composed].keysym = symbol;
- else
- b->tree[ic->private.local.composed].keysym = NoSymbol;
-
- return True;
-}
-
-Private Bool
-ThaiFltReorderInput(Xic ic, unsigned char previous_char, unsigned char new_char)
-{
- DefTreeBase *b = &ic->private.local.base;
- if (!IC_DeletePreviousChar(ic)) return False;
- b->wc[b->tree[ic->private.local.composed].wc+0] = tis2ucs(new_char);
- b->wc[b->tree[ic->private.local.composed].wc+1] = tis2ucs(previous_char);
- b->wc[b->tree[ic->private.local.composed].wc+2] = '\0';
-
- b->tree[ic->private.local.composed].keysym = NoSymbol;
-
- return True;
-}
-
-Private Bool
-ThaiFltReplaceInput(Xic ic, unsigned char new_char, KeySym symbol)
-{
- DefTreeBase *b = &ic->private.local.base;
- if (!IC_DeletePreviousChar(ic)) return False;
- b->wc[b->tree[ic->private.local.composed].wc+0] = tis2ucs(new_char);
- b->wc[b->tree[ic->private.local.composed].wc+1] = '\0';
-
- if ((new_char <= 0x1f) || (new_char == 0x7f))
- b->tree[ic->private.local.composed].keysym = symbol;
- else
- b->tree[ic->private.local.composed].keysym = NoSymbol;
-
- return True;
-}
-
-Private unsigned
-NumLockMask(Display *d)
-{
- int i;
- XModifierKeymap *map;
- KeyCode numlock_keycode = XKeysymToKeycode (d, XK_Num_Lock);
- if (numlock_keycode == NoSymbol)
- return 0;
-
- map = XGetModifierMapping (d);
- if (!map)
- return 0;
-
- for (i = 0; i < 8; i++) {
- if (map->modifiermap[map->max_keypermod * i] == numlock_keycode) {
- XFreeModifiermap(map);
- return 1 << i;
- }
- }
- XFreeModifiermap(map);
- return 0;
-}
-
-/*
- * Filter function for TACTIS
- */
-Bool
-_XimThaiFilter(Display *d, Window w, XEvent *ev, XPointer client_data)
-{
- Xic ic = (Xic)client_data;
- KeySym symbol;
- int isc_mode; /* Thai Input Sequence Check mode */
- unsigned char previous_char; /* Last inputted Thai char */
- unsigned char new_char;
-#ifdef UNUSED
- unsigned int modifiers;
- KeySym lsym,usym;
- int state;
- XicThaiPart *thai_part;
- char buf[10];
-#endif
- wchar_t wbuf[10];
- Bool isReject;
- DefTreeBase *b = &ic->private.local.base;
-
- if ((ev->type != KeyPress)
- || (ev->xkey.keycode == 0))
- return False;
-
- if (!IC_IscMode(ic)) InitIscMode(ic);
-
- XwcLookupString((XIC)ic, &ev->xkey, wbuf, sizeof(wbuf) / sizeof(wbuf[0]),
- &symbol, NULL);
-
- if ((ev->xkey.state & (AllMods & ~(ShiftMask|LockMask|NumLockMask(d)))) ||
- ((symbol >> 8 == 0xFF) &&
- ((XK_BackSpace <= symbol && symbol <= XK_Clear) ||
- (symbol == XK_Return) ||
- (symbol == XK_Pause) ||
- (symbol == XK_Scroll_Lock) ||
- (symbol == XK_Sys_Req) ||
- (symbol == XK_Escape) ||
- (symbol == XK_Delete) ||
- IsCursorKey(symbol) ||
- IsKeypadKey(symbol) ||
- IsMiscFunctionKey(symbol) ||
- IsFunctionKey(symbol))))
- {
- IC_ClearPreviousChar(ic);
- return False;
- }
- if (((symbol >> 8 == 0xFF) &&
- IsModifierKey(symbol)) ||
-#ifdef XK_XKB_KEYS
- ((symbol >> 8 == 0xFE) &&
- (XK_ISO_Lock <= symbol && symbol <= XK_ISO_Last_Group_Lock)) ||
-#endif
- (symbol == NoSymbol))
- {
- return False;
- }
-#ifdef UNUSED
- if (! XThaiTranslateKey(ev->xkey.display, ev->xkey.keycode, ev->xkey.state,
- &modifiers, &symbol, &lsym, &usym))
- return False;
-
- /*
- * Hex input method processing
- */
-
- thai_part = &ic->private.local.thai;
- state = thai_part->comp_state;
- if (state >= 0 && state < nstate_handlers) /* call handler for state */
- {
- symbol = (* state_handler[state])(thai_part, symbol, (XKeyEvent *)ev);
- }
-
- /*
- * Translate KeySym into mb.
- */
- count = XThaiTranslateKeySym(ev->xkey.display, symbol, lsym,
- usym, ev->xkey.state, buf, 10);
-
- if (!symbol && !count)
- return True;
-
- /* Return symbol if cannot convert to character */
- if (!count)
- return False;
-#endif
-
- /*
- * Thai Input sequence check
- */
- isc_mode = IC_IscMode(ic);
- if (!(previous_char = IC_GetPreviousChar(ic))) previous_char = ' ';
- new_char = ucs2tis(wbuf[0]);
- isReject = True;
- if (THAI_isaccepted(new_char, previous_char, isc_mode)) {
- ThaiFltAcceptInput(ic, new_char, symbol);
- isReject = False;
- } else {
- unsigned char context_char;
-
- context_char = IC_GetContextChar(ic);
- if (context_char) {
- if (THAI_iscomposible(new_char, context_char)) {
- if (THAI_iscomposible(previous_char, new_char)) {
- isReject = !ThaiFltReorderInput(ic, previous_char, new_char);
- } else if (THAI_iscomposible(previous_char, context_char)) {
- isReject = !ThaiFltReplaceInput(ic, new_char, symbol);
- } else if (THAI_chtype(previous_char) == FV1
- && THAI_chtype(new_char) == TONE) {
- isReject = !ThaiFltReorderInput(ic, previous_char, new_char);
- }
- } else if (THAI_isaccepted(new_char, context_char, isc_mode)) {
- isReject = !ThaiFltReplaceInput(ic, new_char, symbol);
- }
- }
- }
- if (isReject) {
- /* reject character */
- XBell(ev->xkey.display, BellVolume);
- return True;
- }
-
- _Xlcwcstombs(ic->core.im->core.lcd, &b->mb[b->tree[ic->private.local.composed].mb],
- &b->wc[b->tree[ic->private.local.composed].wc], 10);
-
- _Xlcmbstoutf8(ic->core.im->core.lcd, &b->utf8[b->tree[ic->private.local.composed].utf8],
- &b->mb[b->tree[ic->private.local.composed].mb], 10);
-
- /* Remember the last character inputted
- * (as fallback in case StringConversionCallback is not provided)
- */
- IC_SavePreviousChar(ic, new_char);
-
- ev->xkey.keycode = 0;
- XPutBackEvent(d, ev);
- return True;
-}
+/***********************************************************
+
+Copyright 1993, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1993 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+/*
+**++
+** FACILITY:
+**
+** Xlib
+**
+** ABSTRACT:
+**
+** Thai specific functions.
+** Handles character classifications, composibility checking,
+** Input sequence check and other Thai specific requirements
+** according to WTT specification and DEC extensions.
+**
+** MODIFICATION HISTORY:
+**
+**/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <X11/Xlib.h>
+#include <X11/Xmd.h>
+#include <X11/keysym.h>
+#include <X11/Xutil.h>
+#include "Xlibint.h"
+#include "Xlcint.h"
+#include "Ximint.h"
+#include "XimThai.h"
+#include "XlcPubI.h"
+
+
+#define SPACE 32
+
+/* character classification table */
+#define TACTIS_CHARS 256
+Private
+char const tactis_chtype[TACTIS_CHARS] = {
+ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 0 - 7 */
+ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 8 - 15 */
+ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 16 - 23 */
+ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 24 - 31 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 32 - 39 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 40 - 47 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 48 - 55 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 56 - 63 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 64 - 71 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 72 - 79 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 80 - 87 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 88 - 95 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 96 - 103 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 104 - 111 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 112 - 119 */
+ NON, NON, NON, NON, NON, NON, NON, CTRL, /* 120 - 127 */
+ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 128 - 135 */
+ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 136 - 143 */
+ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 144 - 151 */
+ CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, CTRL, /* 152 - 159 */
+ NON, CONS, CONS, CONS, CONS, CONS, CONS, CONS, /* 160 - 167 */
+ CONS, CONS, CONS, CONS, CONS, CONS, CONS, CONS, /* 168 - 175 */
+ CONS, CONS, CONS, CONS, CONS, CONS, CONS, CONS, /* 176 - 183 */
+ CONS, CONS, CONS, CONS, CONS, CONS, CONS, CONS, /* 184 - 191 */
+ CONS, CONS, CONS, CONS, FV3, CONS, FV3, CONS, /* 192 - 199 */
+ CONS, CONS, CONS, CONS, CONS, CONS, CONS, NON, /* 200 - 207 */
+ FV1, AV2, FV1, FV1, AV1, AV3, AV2, AV3, /* 208 - 215 */
+ BV1, BV2, BD, NON, NON, NON, NON, NON, /* 216 - 223 */
+ LV, LV, LV, LV, LV, FV2, NON, AD2, /* 224 - 231 */
+ TONE, TONE, TONE, TONE, AD1, AD1, AD3, NON, /* 232 - 239 */
+ NON, NON, NON, NON, NON, NON, NON, NON, /* 240 - 247 */
+ NON, NON, NON, NON, NON, NON, NON, CTRL /* 248 - 255 */
+};
+
+/* Composibility checking tables */
+#define NC 0 /* NOT COMPOSIBLE - following char displays in next cell */
+#define CP 1 /* COMPOSIBLE - following char is displayed in the same cell
+ as leading char, also implies ACCEPT */
+#define XC 3 /* Non-display */
+#define AC 4 /* ACCEPT - display the following char in the next cell */
+#define RJ 5 /* REJECT - discard that following char, ignore it */
+
+#define CH_CLASSES 17 /* 17 classes of chars */
+
+Private
+char const write_rules_lookup[CH_CLASSES][CH_CLASSES] = {
+ /* Table 0: writing/outputing rules */
+ /* row: leading char, column: following char */
+/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
+ {XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*CTRL*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*NON*/
+ ,{XC, NC, NC, NC, NC, NC, NC, CP, CP, CP, CP, CP, CP, CP, CP, CP, CP}/*CONS*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*LV*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*FV1*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*FV2*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*FV3*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, CP, CP, NC, NC, NC, NC, NC}/*BV1*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, CP, NC, NC, NC, NC, NC, NC}/*BV2*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*BD*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*TONE*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*AD1*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*AD2*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC, NC}/*AD3*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, CP, CP, NC, NC, NC, NC, NC}/*AV1*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, CP, NC, NC, NC, NC, NC, NC}/*AV2*/
+ ,{XC, NC, NC, NC, NC, NC, NC, NC, NC, NC, CP, NC, CP, NC, NC, NC, NC}/*AV3*/
+};
+
+Private
+char const wtt_isc1_lookup[CH_CLASSES][CH_CLASSES] = {
+ /* Table 1: WTT default input sequence check rules */
+ /* row: leading char, column: following char */
+/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
+ {XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*CTRL*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*NON*/
+ ,{XC, AC, AC, AC, AC, AC, AC, CP, CP, CP, CP, CP, CP, CP, CP, CP, CP}/*CONS*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*LV*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV1*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV2*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV3*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*BV1*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*BV2*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*BD*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*TONE*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD1*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD2*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD3*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*AV1*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*AV2*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, CP, RJ, RJ, RJ, RJ}/*AV3*/
+};
+
+Private
+char const wtt_isc2_lookup[CH_CLASSES][CH_CLASSES] = {
+ /* Table 2: WTT strict input sequence check rules */
+ /* row: leading char, column: following char */
+/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
+ {XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*CTRL*/
+ ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*NON*/
+ ,{XC, AC, AC, AC, AC, RJ, AC, CP, CP, CP, CP, CP, CP, CP, CP, CP, CP}/*CONS*/
+ ,{XC, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*LV*/
+ ,{XC, AC, AC, AC, AC, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV1*/
+ ,{XC, AC, AC, AC, AC, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV2*/
+ ,{XC, AC, AC, AC, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV3*/
+ ,{XC, AC, AC, AC, AC, RJ, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*BV1*/
+ ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*BV2*/
+ ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*BD*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*TONE*/
+ ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD1*/
+ ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD2*/
+ ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD3*/
+ ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*AV1*/
+ ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*AV2*/
+ ,{XC, AC, AC, AC, RJ, RJ, AC, RJ, RJ, RJ, CP, RJ, CP, RJ, RJ, RJ, RJ}/*AV3*/
+};
+
+Private
+char const thaicat_isc_lookup[CH_CLASSES][CH_CLASSES] = {
+ /* Table 3: Thaicat input sequence check rules */
+ /* row: leading char, column: following char */
+/* CTRL NON CONS LV FV1 FV2 FV3 BV1 BV2 BD TONE AD1 AD2 AD3 AV1 AV2 AV3 */
+ {XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*CTRL*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*NON*/
+ ,{XC, AC, AC, AC, AC, AC, AC, CP, CP, CP, CP, CP, CP, CP, CP, CP, CP}/*CONS*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*LV*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV1*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*FV2*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ} /*FV3*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*BV1*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*BV2*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*BD*/
+ ,{XC, AC, AC, AC, AC, AC, AC, CP, CP, RJ, RJ, RJ, RJ, RJ, CP, CP, CP}/*TONE*/
+ ,{XC, AC, AC, AC, AC, AC, AC, CP, RJ, RJ, RJ, RJ, RJ, RJ, CP, RJ, RJ}/*AD1*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, CP}/*AD2*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ, RJ}/*AD3*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, CP, RJ, RJ, RJ, RJ, RJ}/*AV1*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, RJ, RJ, RJ, RJ, RJ}/*AV2*/
+ ,{XC, AC, AC, AC, AC, AC, AC, RJ, RJ, RJ, CP, RJ, CP, RJ, RJ, RJ, RJ}/*AV3*/
+};
+
+
+/* returns classification of a char */
+Private int
+THAI_chtype (unsigned char ch)
+{
+ return tactis_chtype[ch];
+}
+
+#ifdef UNUSED
+/* returns the display level */
+Private int
+THAI_chlevel (unsigned char ch)
+{
+ int chlevel;
+
+ switch (tactis_chtype[ch])
+ {
+ case CTRL:
+ chlevel = NON;
+ break;
+ case BV1:
+ case BV2:
+ case BD:
+ chlevel = BELOW;
+ break;
+ case TONE:
+ case AD1:
+ case AD2:
+ chlevel = TOP;
+ break;
+ case AV1:
+ case AV2:
+ case AV3:
+ case AD3:
+ chlevel = ABOVE;
+ break;
+ case NON:
+ case CONS:
+ case LV:
+ case FV1:
+ case FV2:
+ case FV3:
+ default: /* if tactis_chtype is invalid */
+ chlevel = BASE;
+ break;
+ }
+ return chlevel;
+}
+
+
+/* return True if char is non-spacing */
+Private Bool
+THAI_isdead (unsigned char ch)
+{
+ return ((tactis_chtype[ch] == CTRL) || (tactis_chtype[ch] == BV1) ||
+ (tactis_chtype[ch] == BV2) || (tactis_chtype[ch] == BD) ||
+ (tactis_chtype[ch] == TONE) || (tactis_chtype[ch] == AD1) ||
+ (tactis_chtype[ch] == AD2) || (tactis_chtype[ch] == AD3) ||
+ (tactis_chtype[ch] == AV1) || (tactis_chtype[ch] == AV2) ||
+ (tactis_chtype[ch] == AV3));
+}
+
+
+/* return True if char is consonant */
+Private Bool
+THAI_iscons (unsigned char ch)
+{
+ return (tactis_chtype[ch] == CONS);
+}
+
+
+/* return True if char is vowel */
+Private Bool
+THAI_isvowel (unsigned char ch)
+{
+ return ((tactis_chtype[ch] == LV) || (tactis_chtype[ch] == FV1) ||
+ (tactis_chtype[ch] == FV2) || (tactis_chtype[ch] == FV3) ||
+ (tactis_chtype[ch] == BV1) || (tactis_chtype[ch] == BV2) ||
+ (tactis_chtype[ch] == AV1) || (tactis_chtype[ch] == AV2) ||
+ (tactis_chtype[ch] == AV3));
+}
+
+
+/* return True if char is tonemark */
+Private Bool
+THAI_istone (unsigned char ch)
+{
+ return (tactis_chtype[ch] == TONE);
+}
+#endif
+
+Private Bool
+THAI_iscomposible (
+ unsigned char follow_ch,
+ unsigned char lead_ch)
+{/* "Can follow_ch be put in the same display cell as lead_ch?" */
+
+ return (write_rules_lookup[THAI_chtype(lead_ch)][THAI_chtype(follow_ch)]
+ == CP);
+}
+
+Private Bool
+THAI_isaccepted (
+ unsigned char follow_ch,
+ unsigned char lead_ch,
+ unsigned char mode)
+{
+ Bool iskeyvalid; /* means "Can follow_ch be keyed in after lead_ch?" */
+
+ switch (mode)
+ {
+ case WTT_ISC1:
+ iskeyvalid =
+ (wtt_isc1_lookup[THAI_chtype(lead_ch)][THAI_chtype(follow_ch)] != RJ);
+ break;
+ case WTT_ISC2:
+ iskeyvalid =
+ (wtt_isc2_lookup[THAI_chtype(lead_ch)][THAI_chtype(follow_ch)] != RJ);
+ break;
+ case THAICAT_ISC:
+ iskeyvalid =
+ (thaicat_isc_lookup[THAI_chtype(lead_ch)][THAI_chtype(follow_ch)] != RJ);
+ break;
+ default:
+ iskeyvalid = True;
+ break;
+ }
+
+ return iskeyvalid;
+}
+
+#ifdef UNUSED
+Private void
+THAI_apply_write_rules(
+ unsigned char *instr,
+ unsigned char *outstr,
+ unsigned char insert_ch,
+ int *num_insert_ch)
+{
+/*
+Input parameters:
+ instr - input string
+ insert_ch specify what char to be added when invalid composition is found
+Output parameters:
+ outstr - output string after input string has been applied the rules
+ num_insert_ch - number of insert_ch added to outstr.
+*/
+ unsigned char *lead_ch = NULL, *follow_ch = NULL, *out_ch = NULL;
+
+ *num_insert_ch = 0;
+ lead_ch = follow_ch = instr;
+ out_ch = outstr;
+ if ((*lead_ch == '\0') || !(THAI_find_chtype(instr,DEAD)))
+ { /* Empty string or can't find any non-spacing char*/
+ strcpy((char *)outstr, (char *)instr);
+ } else { /* String of length >= 1, keep looking */
+ follow_ch++;
+ if (THAI_isdead(*lead_ch)) { /* is first char non-spacing? */
+ *out_ch++ = SPACE;
+ (*num_insert_ch)++;
+ }
+ *out_ch++ = *lead_ch;
+ while (*follow_ch != '\0') /* more char in string to check */
+ {
+ if (THAI_isdead(*follow_ch) &&
+ !THAI_iscomposible(*follow_ch,*lead_ch))
+ {
+ *out_ch++ = SPACE;
+ (*num_insert_ch)++;
+ }
+ *out_ch++ = *follow_ch;
+ lead_ch = follow_ch;
+ follow_ch++;
+ }
+ *out_ch = '\0';
+ }
+}
+
+Private int
+THAI_find_chtype (
+ unsigned char *instr,
+ int chtype)
+{
+/*
+Input parameters:
+ instr - input string
+ chtype - type of character to look for
+Output parameters:
+ function returns first position of character with matched chtype
+ function returns -1 if it does not find.
+*/
+ int i = 0, position = -1;
+
+ switch (chtype)
+ {
+ case DEAD:
+ for (i = 0; *instr != '\0' && THAI_isdead(*instr); i++, instr++)
+ ;
+ if (*instr != '\0') position = i;
+ break;
+ default:
+ break;
+ }
+ return position;
+}
+
+
+Private int
+THAI_apply_scm(
+ unsigned char *instr,
+ unsigned char *outstr,
+ unsigned char spec_ch,
+ int num_sp,
+ unsigned char insert_ch)
+{
+ unsigned char *scan, *outch;
+ int i, dead_count, found_count;
+ Bool isconsecutive;
+
+ scan = instr;
+ outch = outstr;
+ dead_count = found_count = 0;
+ isconsecutive = False;
+ while (*scan != '\0') {
+ if (THAI_isdead(*scan))
+ dead_count++; /* count number of non-spacing char */
+ if (*scan == spec_ch)
+ if (!isconsecutive)
+ found_count++; /* count number consecutive spec char found */
+ *outch++ = *scan++;
+ if (found_count == num_sp) {
+ for (i = 0; i < dead_count; i++)
+ *outch++ = insert_ch;
+ dead_count = found_count = 0;
+ }
+ }
+ /* what to return? */
+ return 0; /* probably not right but better than returning garbage */
+}
+
+
+/* The following functions are copied from XKeyBind.c */
+
+Private void ComputeMaskFromKeytrans();
+Private int IsCancelComposeKey(KeySym *symbol, XKeyEvent *event);
+Private void SetLed(Display *dpy, int num, int state);
+Private CARD8 FindKeyCode();
+
+
+/* The following functions are specific to this module */
+
+Private int XThaiTranslateKey();
+Private int XThaiTranslateKeySym();
+
+
+Private KeySym HexIMNormalKey(
+ XicThaiPart *thai_part,
+ KeySym symbol,
+ XKeyEvent *event);
+Private KeySym HexIMFirstComposeKey(
+ XicThaiPart *thai_part,
+ KeySym symbol,
+ XKeyEvent *event);
+Private KeySym HexIMSecondComposeKey(
+ XicThaiPart *thai_part,
+ KeySym symbol
+ XKeyEvent *event);
+Private KeySym HexIMComposeSequence(KeySym ks1, KeySym ks2);
+Private void InitIscMode(Xic ic);
+Private Bool ThaiComposeConvert(
+ Display *dpy,
+ KeySym insym,
+ KeySym *outsym, KeySym *lower, KeySym *upper);
+#endif
+
+/*
+ * Definitions
+ */
+
+#define BellVolume 0
+
+#define ucs2tis(wc) \
+ (unsigned char) ( \
+ (0<=(wc)&&(wc)<=0x7F) ? \
+ (wc) : \
+ ((0x0E01<=(wc)&&(wc)<=0x0E5F) ? ((wc)-0x0E00+0xA0) : 0))
+/* "c" is an unsigned char */
+#define tis2ucs(c) \
+ ( \
+ ((c)<=0x7F) ? \
+ (wchar_t)(c) : \
+ ((0x0A1<=(c)) ? ((wchar_t)(c)-0xA0+0x0E00) : 0))
+
+/*
+ * Macros to save and recall last input character in XIC
+ */
+#define IC_SavePreviousChar(ic,ch) \
+ ((ic)->private.local.base.mb[(ic)->private.local.base.tree[(ic)->private.local.context].mb] = (char) (ch))
+#define IC_ClearPreviousChar(ic) \
+ ((ic)->private.local.base.mb[(ic)->private.local.base.tree[(ic)->private.local.context].mb] = 0)
+#define IC_GetPreviousChar(ic) \
+ (IC_RealGetPreviousChar(ic,1))
+#define IC_GetContextChar(ic) \
+ (IC_RealGetPreviousChar(ic,2))
+#define IC_DeletePreviousChar(ic) \
+ (IC_RealDeletePreviousChar(ic))
+
+Private unsigned char
+IC_RealGetPreviousChar(Xic ic, unsigned short pos)
+{
+ XICCallback* cb = &ic->core.string_conversion_callback;
+ DefTreeBase *b = &ic->private.local.base;
+
+ if (cb && cb->callback) {
+ XIMStringConversionCallbackStruct screc;
+ unsigned char c;
+
+ /* Use a safe value of position = 0 and stretch the range to desired
+ * place, as XIM protocol is unclear here whether it could be negative
+ */
+ screc.position = 0;
+ screc.direction = XIMBackwardChar;
+ screc.operation = XIMStringConversionRetrieval;
+ screc.factor = pos;
+ screc.text = 0;
+
+ (cb->callback)((XIC)ic, cb->client_data, (XPointer)&screc);
+ if (!screc.text)
+ return (unsigned char) b->mb[b->tree[(ic)->private.local.context].mb];
+ if ((screc.text->feedback &&
+ *screc.text->feedback == XIMStringConversionLeftEdge) ||
+ screc.text->length < 1)
+ {
+ c = 0;
+ } else {
+ Xim im;
+ XlcConv conv;
+ int from_left;
+ int to_left;
+ char *from_buf;
+ char *to_buf;
+
+ im = (Xim) XIMOfIC((XIC)ic);
+ if (screc.text->encoding_is_wchar) {
+ conv = _XlcOpenConverter(im->core.lcd, XlcNWideChar,
+ im->core.lcd, XlcNCharSet);
+ from_buf = (char *) screc.text->string.wcs;
+ from_left = screc.text->length * sizeof(wchar_t);
+ } else {
+ conv = _XlcOpenConverter(im->core.lcd, XlcNMultiByte,
+ im->core.lcd, XlcNCharSet);
+ from_buf = screc.text->string.mbs;
+ from_left = screc.text->length;
+ }
+ to_buf = (char *)&c;
+ to_left = 1;
+
+ _XlcResetConverter(conv);
+ if (_XlcConvert(conv, (XPointer *)&from_buf, &from_left,
+ (XPointer *)&to_buf, &to_left, NULL, 0) < 0)
+ {
+ c = (unsigned char) b->mb[b->tree[(ic)->private.local.context].mb];
+ }
+ _XlcCloseConverter(conv);
+
+ XFree(screc.text->string.mbs);
+ }
+ XFree(screc.text);
+ return c;
+ } else {
+ return (unsigned char) b->mb[b->tree[(ic)->private.local.context].mb];
+ }
+}
+
+Private unsigned char
+IC_RealDeletePreviousChar(Xic ic)
+{
+ XICCallback* cb = &ic->core.string_conversion_callback;
+
+ if (cb && cb->callback) {
+ XIMStringConversionCallbackStruct screc;
+ unsigned char c;
+
+ screc.position = 0;
+ screc.direction = XIMBackwardChar;
+ screc.operation = XIMStringConversionSubstitution;
+ screc.factor = 1;
+ screc.text = 0;
+
+ (cb->callback)((XIC)ic, cb->client_data, (XPointer)&screc);
+ if (!screc.text) { return 0; }
+ if ((screc.text->feedback &&
+ *screc.text->feedback == XIMStringConversionLeftEdge) ||
+ screc.text->length < 1)
+ {
+ c = 0;
+ } else {
+ if (screc.text->encoding_is_wchar) {
+ c = ucs2tis(screc.text->string.wcs[0]);
+ XFree(screc.text->string.wcs);
+ } else {
+ c = screc.text->string.mbs[0];
+ XFree(screc.text->string.mbs);
+ }
+ }
+ XFree(screc.text);
+ return c;
+ } else {
+ return 0;
+ }
+}
+/*
+ * Input sequence check mode in XIC
+ */
+#define IC_IscMode(ic) ((ic)->private.local.thai.input_mode)
+
+/*
+ * Max. size of string handled by the two String Lookup functions.
+ */
+#define STR_LKUP_BUF_SIZE 256
+
+/*
+ * Size of buffer to contain previous locale name.
+ */
+#define SAV_LOCALE_NAME_SIZE 256
+
+/*
+ * Size of buffer to contain the IM modifier.
+ */
+#define MAXTHAIIMMODLEN 20
+
+#define AllMods (ShiftMask|LockMask|ControlMask| \
+ Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)
+
+
+#define IsISOControlKey(ks) ((ks) >= XK_2 && (ks) <= XK_8)
+
+#define IsValidControlKey(ks) (((((ks)>=XK_A && (ks)<=XK_asciitilde) || \
+ (ks)==XK_space || (ks)==XK_Delete) && \
+ ((ks)!=0)))
+
+#define COMPOSE_LED 2
+
+#ifdef UNUSED
+typedef KeySym (*StateProc)(
+ XicThaiPart *thai_part,
+ KeySym symbol,
+ XKeyEvent *event);
+
+
+/*
+ * macros to classify XKeyEvent state field
+ */
+
+#define IsShift(state) (((state) & ShiftMask) != 0)
+#define IsLock(state) (((state) & LockMask) != 0)
+#define IsControl(state) (((state) & ControlMask) != 0)
+#define IsMod1(state) (((state) & Mod1Mask) != 0)
+#define IsMod2(state) (((state) & Mod2Mask) != 0)
+#define IsMod3(state) (((state) & Mod3Mask) != 0)
+#define IsMod4(state) (((state) & Mod4Mask) != 0)
+#define IsMod5(state) (((state) & Mod5Mask) != 0)
+
+/*
+ * key starts Thai compose sequence (Hex input method) if :
+ */
+
+#define IsComposeKey(ks, event) \
+ (( ks==XK_Alt_L && \
+ IsControl((event)->state) && \
+ !IsShift((event)->state)) \
+ ? True : False)
+
+
+/*
+ * State handler to implement the Thai hex input method.
+ */
+
+Private int const nstate_handlers = 3;
+Private StateProc state_handler[] = {
+ HexIMNormalKey,
+ HexIMFirstComposeKey,
+ HexIMSecondComposeKey
+};
+
+
+/*
+ * Table for 'Thai Compose' character input.
+ * The current implementation uses latin-1 keysyms.
+ */
+struct _XMapThaiKey {
+ KeySym from;
+ KeySym to;
+};
+
+Private struct _XMapThaiKey const ThaiComposeTable[] = {
+ { /* 0xa4 */ XK_currency, /* 0xa5 */ XK_yen },
+ { /* 0xa2 */ XK_cent, /* 0xa3 */ XK_sterling },
+ { /* 0xe6 */ XK_ae, /* 0xef */ XK_idiaeresis },
+ { /* 0xd3 */ XK_Oacute, /* 0xee */ XK_icircumflex },
+ { /* 0xb9 */ XK_onesuperior, /* 0xfa */ XK_uacute },
+ { /* 0xd2 */ XK_Ograve, /* 0xe5 */ XK_aring },
+ { /* 0xbc */ XK_onequarter, /* 0xfb */ XK_ucircumflex },
+ { XK_VoidSymbol, XK_VoidSymbol }
+};
+
+struct _XKeytrans {
+ struct _XKeytrans *next;/* next on list */
+ char *string; /* string to return when the time comes */
+ int len; /* length of string (since NULL is legit)*/
+ KeySym key; /* keysym rebound */
+ unsigned int state; /* modifier state */
+ KeySym *modifiers; /* modifier keysyms you want */
+ int mlen; /* length of modifier list */
+};
+
+
+/* Convert keysym to 'Thai Compose' keysym */
+/* The current implementation use latin-1 keysyms */
+Private Bool
+ThaiComposeConvert(
+ Display *dpy,
+ KeySym insym,
+ KeySym *outsym, KeySym *lower, KeySym *upper)
+{
+ struct _XMapThaiKey const *table_entry = ThaiComposeTable;
+
+ while (table_entry->from != XK_VoidSymbol) {
+ if (table_entry->from == insym) {
+ *outsym = table_entry->to;
+ *lower = *outsym;
+ *upper = *outsym;
+ return True;
+ }
+ table_entry++;
+ }
+ return False;
+}
+
+Private int
+XThaiTranslateKey(
+ register Display *dpy,
+ KeyCode keycode,
+ register unsigned int modifiers,
+ unsigned int *modifiers_return,
+ KeySym *keysym_return,
+ KeySym *lsym_return,
+ KeySym *usym_return)
+{
+ int per;
+ register KeySym *syms;
+ KeySym sym = 0, lsym = 0, usym = 0;
+
+ if ((! dpy->keysyms) && (! _XKeyInitialize(dpy)))
+ return 0;
+ *modifiers_return = (ShiftMask|LockMask) | dpy->mode_switch;
+ if (((int)keycode < dpy->min_keycode) || ((int)keycode > dpy->max_keycode))
+ {
+ *keysym_return = NoSymbol;
+ return 1;
+ }
+ per = dpy->keysyms_per_keycode;
+ syms = &dpy->keysyms[(keycode - dpy->min_keycode) * per];
+ while ((per > 2) && (syms[per - 1] == NoSymbol))
+ per--;
+ if ((per > 2) && (modifiers & dpy->mode_switch)) {
+ syms += 2;
+ per -= 2;
+ }
+ if (!(modifiers & ShiftMask) &&
+ (!(modifiers & LockMask) || (dpy->lock_meaning == NoSymbol))) {
+ if ((per == 1) || (syms[1] == NoSymbol))
+ XConvertCase(syms[0], keysym_return, &usym);
+ else {
+ XConvertCase(syms[0], &lsym, &usym);
+ *keysym_return = syms[0];
+ }
+ } else if (!(modifiers & LockMask) ||
+ (dpy->lock_meaning != XK_Caps_Lock)) {
+ if ((per == 1) || ((usym = syms[1]) == NoSymbol))
+ XConvertCase(syms[0], &lsym, &usym);
+ *keysym_return = usym;
+ } else {
+ if ((per == 1) || ((sym = syms[1]) == NoSymbol))
+ sym = syms[0];
+ XConvertCase(sym, &lsym, &usym);
+ if (!(modifiers & ShiftMask) && (sym != syms[0]) &&
+ ((sym != usym) || (lsym == usym)))
+ XConvertCase(syms[0], &lsym, &usym);
+ *keysym_return = usym;
+ }
+ /*
+ * ThaiCat keyboard support :
+ * When the Shift and Thai keys are hold for some keys a 'Thai Compose'
+ * character code is generated which is different from column 3 and
+ * 4 of the keymap.
+ * Since we don't know whether ThaiCat keyboard or WTT keyboard is
+ * in use, the same mapping is done for all Thai input.
+ * We just arbitary choose to use column 3 keysyms as the indices of
+ * this mapping.
+ * When the control key is also hold, this mapping has no effect.
+ */
+ if ((modifiers & Mod1Mask) &&
+ (modifiers & ShiftMask) &&
+ !(modifiers & ControlMask)) {
+ if (ThaiComposeConvert(dpy, syms[0], &sym, &lsym, &usym))
+ *keysym_return = sym;
+ }
+
+ if (*keysym_return == XK_VoidSymbol)
+ *keysym_return = NoSymbol;
+ *lsym_return = lsym;
+ *usym_return = usym;
+ return 1;
+}
+
+/*
+ * XThaiTranslateKeySym
+ *
+ * Translate KeySym to TACTIS code output.
+ * The current implementation uses ISO latin-1 keysym.
+ * Should be changed to TACTIS keysyms when they are defined by the
+ * standard.
+ */
+Private int
+XThaiTranslateKeySym(
+ Display *dpy,
+ register KeySym symbol,
+ register KeySym lsym,
+ register KeySym usym,
+ unsigned int modifiers,
+ unsigned char *buffer,
+ int nbytes)
+{
+ KeySym ckey = 0;
+ register struct _XKeytrans *p;
+ int length;
+ unsigned long hiBytes;
+ register unsigned char c;
+
+ /*
+ * initialize length = 1 ;
+ */
+ length = 1;
+
+ if (!symbol)
+ return 0;
+ /* see if symbol rebound, if so, return that string. */
+ for (p = dpy->key_bindings; p; p = p->next) {
+ if (((modifiers & AllMods) == p->state) && (symbol == p->key)) {
+ length = p->len;
+ if (length > nbytes) length = nbytes;
+ memcpy (buffer, p->string, length);
+ return length;
+ }
+ }
+ /* try to convert to TACTIS, handling control */
+ hiBytes = symbol >> 8;
+ if (!(nbytes &&
+ ((hiBytes == 0) ||
+ ((hiBytes == 0xFF) &&
+ (((symbol >= XK_BackSpace) && (symbol <= XK_Clear)) ||
+ (symbol == XK_Return) ||
+ (symbol == XK_Escape) ||
+ (symbol == XK_KP_Space) ||
+ (symbol == XK_KP_Tab) ||
+ (symbol == XK_KP_Enter) ||
+ ((symbol >= XK_KP_Multiply) && (symbol <= XK_KP_9)) ||
+ (symbol == XK_KP_Equal) ||
+ (symbol == XK_Scroll_Lock) ||
+#ifdef DXK_PRIVATE /* DEC private keysyms */
+ (symbol == DXK_Remove) ||
+#endif
+ (symbol == NoSymbol) ||
+ (symbol == XK_Delete))))))
+ return 0;
+
+ /* if X keysym, convert to ascii by grabbing low 7 bits */
+ if (symbol == XK_KP_Space)
+ c = XK_space & 0x7F; /* patch encoding botch */
+/* not for Thai
+ else if (symbol == XK_hyphen)
+ c = XK_minus & 0xFF; */ /* map to equiv character */
+ else if (hiBytes == 0xFF)
+ c = symbol & 0x7F;
+ else
+ c = symbol & 0xFF;
+ /* only apply Control key if it makes sense, else ignore it */
+ if (modifiers & ControlMask) {
+ if (!(IsKeypadKey(lsym) || lsym==XK_Return || lsym==XK_Tab)) {
+ if (IsISOControlKey(lsym)) ckey = lsym;
+ else if (IsISOControlKey(usym)) ckey = usym;
+ else if (lsym == XK_question) ckey = lsym;
+ else if (usym == XK_question) ckey = usym;
+ else if (IsValidControlKey(lsym)) ckey = lsym;
+ else if (IsValidControlKey(usym)) ckey = usym;
+ else length = 0;
+
+ if (length != 0) {
+ if (ckey == XK_2) c = '\000';
+ else if (ckey >= XK_3 && ckey <= XK_7)
+ c = (char)(ckey-('3'-'\033'));
+ else if (ckey == XK_8) c = '\177';
+ else if (ckey == XK_Delete) c = '\030';
+ else if (ckey == XK_question) c = '\037';
+ else if (ckey == XK_quoteleft) c = '\036'; /* KLee 1/24/91 */
+ else c = (char)(ckey & 0x1f);
+ }
+ }
+ }
+ /*
+ * ThaiCat has a key that generates two TACTIS codes D1 & E9.
+ * It is represented by the latin-1 keysym XK_thorn (0xfe).
+ * If c is XK_thorn, this key is pressed and it is converted to
+ * 0xd1 0xe9.
+ */
+ if (c == XK_thorn) {
+ buffer[0] = 0xd1;
+ buffer[1] = 0xe9;
+ buffer[2] = '\0';
+ return 2;
+ }
+ else {
+ /* Normal case */
+ buffer[0] = c;
+ buffer[1] = '\0';
+ return 1;
+ }
+}
+
+/*
+ * given a KeySym, returns the first keycode containing it, if any.
+ */
+Private CARD8
+FindKeyCode(
+ register Display *dpy,
+ register KeySym code)
+{
+
+ register KeySym *kmax = dpy->keysyms +
+ (dpy->max_keycode - dpy->min_keycode + 1) * dpy->keysyms_per_keycode;
+ register KeySym *k = dpy->keysyms;
+ while (k < kmax) {
+ if (*k == code)
+ return (((k - dpy->keysyms) / dpy->keysyms_per_keycode) +
+ dpy->min_keycode);
+ k += 1;
+ }
+ return 0;
+}
+
+/*
+ * given a list of modifiers, computes the mask necessary for later matching.
+ * This routine must lookup the key in the Keymap and then search to see
+ * what modifier it is bound to, if any. Sets the AnyModifier bit if it
+ * can't map some keysym to a modifier.
+ */
+Private void
+ComputeMaskFromKeytrans(
+ Display *dpy,
+ register struct _XKeytrans *p)
+{
+ register int i;
+ register CARD8 code;
+ register XModifierKeymap *m = dpy->modifiermap;
+
+ p->state = AnyModifier;
+ for (i = 0; i < p->mlen; i++) {
+ /* if not found, then not on current keyboard */
+ if ((code = FindKeyCode(dpy, p->modifiers[i])) == 0)
+ return;
+ /* code is now the keycode for the modifier you want */
+ {
+ register int j = m->max_keypermod<<3;
+
+ while ((--j >= 0) && (code != m->modifiermap[j]))
+ ;
+ if (j < 0)
+ return;
+ p->state |= (1<<(j/m->max_keypermod));
+ }
+ }
+ p->state &= AllMods;
+}
+
+/************************************************************************
+ *
+ *
+ * Compose handling routines - compose handlers 0,1,2
+ *
+ *
+ ************************************************************************/
+
+#define NORMAL_KEY_STATE 0
+#define FIRST_COMPOSE_KEY_STATE 1
+#define SECOND_COMPOSE_KEY_STATE 2
+
+Private
+KeySym HexIMNormalKey(
+ XicThaiPart *thai_part,
+ KeySym symbol,
+ XKeyEvent *event)
+{
+ if (IsComposeKey (symbol, event)) /* start compose sequence */
+ {
+ SetLed (event->display,COMPOSE_LED, LedModeOn);
+ thai_part->comp_state = FIRST_COMPOSE_KEY_STATE;
+ return NoSymbol;
+ }
+ return symbol;
+}
+
+
+Private
+KeySym HexIMFirstComposeKey(
+ XicThaiPart *thai_part,
+ KeySym symbol,
+ XKeyEvent *event)
+{
+ if (IsModifierKey (symbol)) return symbol; /* ignore shift etc. */
+ if (IsCancelComposeKey (&symbol, event)) /* cancel sequence */
+ {
+ SetLed (event->display,COMPOSE_LED, LedModeOff);
+ thai_part->comp_state = NORMAL_KEY_STATE;
+ return symbol;
+ }
+ if (IsComposeKey (symbol, event)) /* restart sequence ?? */
+ {
+ return NoSymbol; /* no state change necessary */
+ }
+
+ thai_part->keysym = symbol; /* save key pressed */
+ thai_part->comp_state = SECOND_COMPOSE_KEY_STATE;
+ return NoSymbol;
+}
+
+Private
+KeySym HexIMSecondComposeKey(
+ XicThaiPart *thai_part,
+ KeySym symbol,
+ XKeyEvent *event)
+{
+ if (IsModifierKey (symbol)) return symbol; /* ignore shift etc. */
+ if (IsComposeKey (symbol, event)) /* restart sequence ? */
+ {
+ thai_part->comp_state =FIRST_COMPOSE_KEY_STATE;
+ return NoSymbol;
+ }
+ SetLed (event->display,COMPOSE_LED, LedModeOff);
+ if (IsCancelComposeKey (&symbol, event)) /* cancel sequence ? */
+ {
+ thai_part->comp_state = NORMAL_KEY_STATE;
+ return symbol;
+ }
+
+ if ((symbol = HexIMComposeSequence (thai_part->keysym, symbol))
+ ==NoSymbol)
+ { /* invalid compose sequence */
+ XBell(event->display, BellVolume);
+ }
+ thai_part->comp_state = NORMAL_KEY_STATE; /* reset to normal state */
+ return symbol;
+}
+
+
+/*
+ * Interprets two keysyms entered as hex digits and return the Thai keysym
+ * correspond to the TACTIS code formed.
+ * The current implementation of this routine returns ISO Latin Keysyms.
+ */
+
+Private
+KeySym HexIMComposeSequence(KeySym ks1, KeySym ks2)
+{
+int hi_digit;
+int lo_digit;
+int tactis_code;
+
+ if ((ks1 >= XK_0) && (ks1 <= XK_9))
+ hi_digit = ks1 - XK_0;
+ else if ((ks1 >= XK_A) && (ks1 <= XK_F))
+ hi_digit = ks1 - XK_A + 10;
+ else if ((ks1 >= XK_a) && (ks1 <= XK_f))
+ hi_digit = ks1 - XK_a + 10;
+ else /* out of range */
+ return NoSymbol;
+
+ if ((ks2 >= XK_0) && (ks2 <= XK_9))
+ lo_digit = ks2 - XK_0;
+ else if ((ks2 >= XK_A) && (ks2 <= XK_F))
+ lo_digit = ks2 - XK_A + 10;
+ else if ((ks2 >= XK_a) && (ks2 <= XK_f))
+ lo_digit = ks2 - XK_a + 10;
+ else /* out of range */
+ return NoSymbol;
+
+ tactis_code = hi_digit * 0x10 + lo_digit ;
+
+ return (KeySym)tactis_code;
+
+}
+
+/*
+ * routine determines
+ * 1) whether key event should cancel a compose sequence
+ * 2) whether cancelling key event should be processed or ignored
+ */
+
+Private
+int IsCancelComposeKey(
+ KeySym *symbol,
+ XKeyEvent *event)
+{
+ if (*symbol==XK_Delete && !IsControl(event->state) &&
+ !IsMod1(event->state)) {
+ *symbol=NoSymbol; /* cancel compose sequence, and ignore key */
+ return True;
+ }
+ if (IsComposeKey(*symbol, event)) return False;
+ return (
+ IsControl (event->state) ||
+ IsMod1(event->state) ||
+ IsKeypadKey (*symbol) ||
+ IsFunctionKey (*symbol) ||
+ IsMiscFunctionKey (*symbol) ||
+#ifdef DXK_PRIVATE /* DEC private keysyms */
+ *symbol == DXK_Remove ||
+#endif
+ IsPFKey (*symbol) ||
+ IsCursorKey (*symbol) ||
+ (*symbol >= XK_Tab && *symbol < XK_Multi_key)
+ ? True : False); /* cancel compose sequence and pass */
+ /* cancelling key through */
+}
+
+
+/*
+ * set specified keyboard LED on or off
+ */
+
+Private
+void SetLed(
+ Display *dpy,
+ int num,
+ int state)
+{
+ XKeyboardControl led_control;
+
+ led_control.led_mode = state;
+ led_control.led = num;
+ XChangeKeyboardControl (dpy, KBLed | KBLedMode, &led_control);
+}
+#endif
+
+/*
+ * Initialize ISC mode from im modifier
+ */
+Private void InitIscMode(Xic ic)
+{
+ Xim im;
+ char *im_modifier_name;
+
+ /* If already defined, just return */
+
+ if (IC_IscMode(ic)) return;
+
+ /* Get IM modifier */
+
+ im = (Xim) XIMOfIC((XIC)ic);
+ im_modifier_name = im->core.im_name;
+
+ /* Match with predefined value, default is Basic Check */
+
+ if (!strncmp(im_modifier_name,"BasicCheck",MAXTHAIIMMODLEN+1))
+ IC_IscMode(ic) = WTT_ISC1;
+ else if (!strncmp(im_modifier_name,"Strict",MAXTHAIIMMODLEN+1))
+ IC_IscMode(ic) = WTT_ISC2;
+ else if (!strncmp(im_modifier_name,"Thaicat",MAXTHAIIMMODLEN+1))
+ IC_IscMode(ic) = THAICAT_ISC;
+ else if (!strncmp(im_modifier_name,"Passthrough",MAXTHAIIMMODLEN+1))
+ IC_IscMode(ic) = NOISC;
+ else
+ IC_IscMode(ic) = WTT_ISC1;
+
+ return;
+}
+
+/*
+ * Helper functions for _XimThaiFilter()
+ */
+Private Bool
+ThaiFltAcceptInput(Xic ic, unsigned char new_char, KeySym symbol)
+{
+ DefTreeBase *b = &ic->private.local.base;
+ b->wc[b->tree[ic->private.local.composed].wc+0] = tis2ucs(new_char);
+ b->wc[b->tree[ic->private.local.composed].wc+1] = '\0';
+
+ if ((new_char <= 0x1f) || (new_char == 0x7f))
+ b->tree[ic->private.local.composed].keysym = symbol;
+ else
+ b->tree[ic->private.local.composed].keysym = NoSymbol;
+
+ return True;
+}
+
+Private Bool
+ThaiFltReorderInput(Xic ic, unsigned char previous_char, unsigned char new_char)
+{
+ DefTreeBase *b = &ic->private.local.base;
+ if (!IC_DeletePreviousChar(ic)) return False;
+ b->wc[b->tree[ic->private.local.composed].wc+0] = tis2ucs(new_char);
+ b->wc[b->tree[ic->private.local.composed].wc+1] = tis2ucs(previous_char);
+ b->wc[b->tree[ic->private.local.composed].wc+2] = '\0';
+
+ b->tree[ic->private.local.composed].keysym = NoSymbol;
+
+ return True;
+}
+
+Private Bool
+ThaiFltReplaceInput(Xic ic, unsigned char new_char, KeySym symbol)
+{
+ DefTreeBase *b = &ic->private.local.base;
+ if (!IC_DeletePreviousChar(ic)) return False;
+ b->wc[b->tree[ic->private.local.composed].wc+0] = tis2ucs(new_char);
+ b->wc[b->tree[ic->private.local.composed].wc+1] = '\0';
+
+ if ((new_char <= 0x1f) || (new_char == 0x7f))
+ b->tree[ic->private.local.composed].keysym = symbol;
+ else
+ b->tree[ic->private.local.composed].keysym = NoSymbol;
+
+ return True;
+}
+
+Private unsigned
+NumLockMask(Display *d)
+{
+ int i;
+ XModifierKeymap *map;
+ KeyCode numlock_keycode = XKeysymToKeycode (d, XK_Num_Lock);
+ if (numlock_keycode == NoSymbol)
+ return 0;
+
+ map = XGetModifierMapping (d);
+ if (!map)
+ return 0;
+
+ for (i = 0; i < 8; i++) {
+ if (map->modifiermap[map->max_keypermod * i] == numlock_keycode) {
+ XFreeModifiermap(map);
+ return 1 << i;
+ }
+ }
+ XFreeModifiermap(map);
+ return 0;
+}
+
+/*
+ * Filter function for TACTIS
+ */
+Bool
+_XimThaiFilter(Display *d, Window w, XEvent *ev, XPointer client_data)
+{
+ Xic ic = (Xic)client_data;
+ KeySym symbol;
+ int isc_mode; /* Thai Input Sequence Check mode */
+ unsigned char previous_char; /* Last inputted Thai char */
+ unsigned char new_char;
+#ifdef UNUSED
+ unsigned int modifiers;
+ KeySym lsym,usym;
+ int state;
+ XicThaiPart *thai_part;
+ char buf[10];
+#endif
+ wchar_t wbuf[10];
+ Bool isReject;
+ DefTreeBase *b = &ic->private.local.base;
+
+ if ((ev->type != KeyPress)
+ || (ev->xkey.keycode == 0))
+ return False;
+
+ if (!IC_IscMode(ic)) InitIscMode(ic);
+
+ XwcLookupString((XIC)ic, &ev->xkey, wbuf, sizeof(wbuf) / sizeof(wbuf[0]),
+ &symbol, NULL);
+
+ if ((ev->xkey.state & (AllMods & ~(ShiftMask|LockMask|NumLockMask(d)))) ||
+ ((symbol >> 8 == 0xFF) &&
+ ((XK_BackSpace <= symbol && symbol <= XK_Clear) ||
+ (symbol == XK_Return) ||
+ (symbol == XK_Pause) ||
+ (symbol == XK_Scroll_Lock) ||
+ (symbol == XK_Sys_Req) ||
+ (symbol == XK_Escape) ||
+ (symbol == XK_Delete) ||
+ IsCursorKey(symbol) ||
+ IsKeypadKey(symbol) ||
+ IsMiscFunctionKey(symbol) ||
+ IsFunctionKey(symbol))))
+ {
+ IC_ClearPreviousChar(ic);
+ return False;
+ }
+ if (((symbol >> 8 == 0xFF) &&
+ IsModifierKey(symbol)) ||
+#ifdef XK_XKB_KEYS
+ ((symbol >> 8 == 0xFE) &&
+ (XK_ISO_Lock <= symbol && symbol <= XK_ISO_Last_Group_Lock)) ||
+#endif
+ (symbol == NoSymbol))
+ {
+ return False;
+ }
+#ifdef UNUSED
+ if (! XThaiTranslateKey(ev->xkey.display, ev->xkey.keycode, ev->xkey.state,
+ &modifiers, &symbol, &lsym, &usym))
+ return False;
+
+ /*
+ * Hex input method processing
+ */
+
+ thai_part = &ic->private.local.thai;
+ state = thai_part->comp_state;
+ if (state >= 0 && state < nstate_handlers) /* call handler for state */
+ {
+ symbol = (* state_handler[state])(thai_part, symbol, (XKeyEvent *)ev);
+ }
+
+ /*
+ * Translate KeySym into mb.
+ */
+ count = XThaiTranslateKeySym(ev->xkey.display, symbol, lsym,
+ usym, ev->xkey.state, buf, 10);
+
+ if (!symbol && !count)
+ return True;
+
+ /* Return symbol if cannot convert to character */
+ if (!count)
+ return False;
+#endif
+
+ /*
+ * Thai Input sequence check
+ */
+ isc_mode = IC_IscMode(ic);
+ if (!(previous_char = IC_GetPreviousChar(ic))) previous_char = ' ';
+ new_char = ucs2tis(wbuf[0]);
+ isReject = True;
+ if (THAI_isaccepted(new_char, previous_char, isc_mode)) {
+ ThaiFltAcceptInput(ic, new_char, symbol);
+ isReject = False;
+ } else {
+ unsigned char context_char;
+
+ context_char = IC_GetContextChar(ic);
+ if (context_char) {
+ if (THAI_iscomposible(new_char, context_char)) {
+ if (THAI_iscomposible(previous_char, new_char)) {
+ isReject = !ThaiFltReorderInput(ic, previous_char, new_char);
+ } else if (THAI_iscomposible(previous_char, context_char)) {
+ isReject = !ThaiFltReplaceInput(ic, new_char, symbol);
+ } else if (THAI_chtype(previous_char) == FV1
+ && THAI_chtype(new_char) == TONE) {
+ isReject = !ThaiFltReorderInput(ic, previous_char, new_char);
+ }
+ } else if (THAI_isaccepted(new_char, context_char, isc_mode)) {
+ isReject = !ThaiFltReplaceInput(ic, new_char, symbol);
+ }
+ }
+ }
+ if (isReject) {
+ /* reject character */
+ XBell(ev->xkey.display, BellVolume);
+ return True;
+ }
+
+ _Xlcwcstombs(ic->core.im->core.lcd, &b->mb[b->tree[ic->private.local.composed].mb],
+ &b->wc[b->tree[ic->private.local.composed].wc], 10);
+
+ _Xlcmbstoutf8(ic->core.im->core.lcd, &b->utf8[b->tree[ic->private.local.composed].utf8],
+ &b->mb[b->tree[ic->private.local.composed].mb], 10);
+
+ /* Remember the last character inputted
+ * (as fallback in case StringConversionCallback is not provided)
+ */
+ IC_SavePreviousChar(ic, new_char);
+
+ ev->xkey.keycode = 0;
+ XPutBackEvent(d, ev);
+ return True;
+}
diff --git a/libX11/modules/im/ximcp/imThaiIm.c b/libX11/modules/im/ximcp/imThaiIm.c
index 767b52c2a..45c690bbc 100644
--- a/libX11/modules/im/ximcp/imThaiIm.c
+++ b/libX11/modules/im/ximcp/imThaiIm.c
@@ -1,235 +1,235 @@
-/******************************************************************
-
- Copyright 1992, 1993, 1994 by FUJITSU LIMITED
- Copyright 1993 by Digital Equipment Corporation
-
-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 FUJITSU LIMITED and
-Digital Equipment Corporation not be used in advertising or publicity
-pertaining to distribution of the software without specific, written
-prior permission. FUJITSU LIMITED and Digital Equipment Corporation
-makes no representations about the suitability of this software for
-any purpose. It is provided "as is" without express or implied
-warranty.
-
-FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION 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.
-
- Author: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
- Modifier: Franky Ling Digital Equipment Corporation
- frankyling@hgrd01.enet.dec.com
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <X11/Xlib.h>
-#include <X11/Xmd.h>
-#include <X11/Xatom.h>
-#include <X11/Xos.h>
-#include "Xlibint.h"
-#include "Xlcint.h"
-#include "XlcPublic.h"
-#include "XlcPubI.h"
-#include "Ximint.h"
-
-Private XIMMethodsRec Xim_im_thai_methods = {
- _XimThaiCloseIM, /* close */
- _XimLocalSetIMValues, /* set_values */
- _XimLocalGetIMValues, /* get_values */
- _XimThaiCreateIC, /* create_ic */
- _XimLcctstombs, /* ctstombs */
- _XimLcctstowcs, /* ctstowcs */
- _XimLcctstoutf8 /* ctstoutf8 */
-};
-
-#define THAI_LANGUAGE_NAME "th"
-
-Bool
-_XimCheckIfThaiProcessing(Xim im)
-{
- char *language;
-
- _XGetLCValues(im->core.lcd, XlcNLanguage, &language, NULL);
- if(strcmp(language, THAI_LANGUAGE_NAME) == 0 &&
- (strcmp(im->core.im_name, "") == 0 ||
- strcmp(im->core.im_name, "BasicCheck") == 0 ||
- strcmp(im->core.im_name, "Strict") == 0 ||
- strcmp(im->core.im_name, "Thaicat") == 0 ||
- strcmp(im->core.im_name, "Passthrough") == 0))
- {
- return(True);
- }
- return(False);
-}
-
-Public Bool
-_XimThaiOpenIM(Xim im)
-{
- XLCd lcd = im->core.lcd;
- XlcConv conv;
- XimDefIMValues im_values;
- XimLocalPrivateRec* private = &im->private.local;
-
- _XimInitialResourceInfo();
- if(_XimSetIMResourceList(&im->core.im_resources,
- &im->core.im_num_resources) == False) {
- goto Open_Error;
- }
- if(_XimSetICResourceList(&im->core.ic_resources,
- &im->core.ic_num_resources) == False) {
- goto Open_Error;
- }
-
- _XimSetIMMode(im->core.im_resources, im->core.im_num_resources);
-
- _XimGetCurrentIMValues(im, &im_values);
- if(_XimSetLocalIMDefaults(im, (XPointer)&im_values,
- im->core.im_resources, im->core.im_num_resources) == False) {
- goto Open_Error;
- }
- _XimSetCurrentIMValues(im, &im_values);
-
- if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte)))
- goto Open_Error;
- private->ctom_conv = conv;
-
- if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar)))
- goto Open_Error;
- private->ctow_conv = conv;
-
- if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNUtf8String)))
- goto Open_Error;
- private->ctoutf8_conv = conv;
-
- if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte)))
- goto Open_Error;
- private->cstomb_conv = conv;
-
- if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNWideChar)))
- goto Open_Error;
- private->cstowc_conv = conv;
-
- if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String)))
- goto Open_Error;
- private->cstoutf8_conv = conv;
-
- if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNChar)))
- goto Open_Error;
- private->ucstoc_conv = conv;
-
- if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNUtf8String)))
- goto Open_Error;
- private->ucstoutf8_conv = conv;
-
- im->methods = &Xim_im_thai_methods;
- private->current_ic = (XIC)NULL;
-
- return(True);
-
-Open_Error :
- _XimThaiIMFree(im);
- return(False);
-}
-
-Public void
-_XimThaiIMFree(Xim im)
-{
- if(im->core.im_resources) {
- Xfree(im->core.im_resources);
- im->core.im_resources = NULL;
- }
- if(im->core.ic_resources) {
- Xfree(im->core.ic_resources);
- im->core.ic_resources = NULL;
- }
- if(im->core.im_values_list) {
- Xfree(im->core.im_values_list);
- im->core.im_values_list = NULL;
- }
- if(im->core.ic_values_list) {
- Xfree(im->core.ic_values_list);
- im->core.ic_values_list = NULL;
- }
- if(im->core.styles) {
- Xfree(im->core.styles);
- im->core.styles = NULL;
- }
- if(im->core.res_name) {
- Xfree(im->core.res_name);
- im->core.res_name = NULL;
- }
- if(im->core.res_class) {
- Xfree(im->core.res_class);
- im->core.res_class = NULL;
- }
- if(im->core.im_name) {
- Xfree(im->core.im_name);
- im->core.im_name = NULL;
- }
- if (im->private.local.ctom_conv) {
- _XlcCloseConverter(im->private.local.ctom_conv);
- im->private.local.ctom_conv = NULL;
- }
- if (im->private.local.ctow_conv) {
- _XlcCloseConverter(im->private.local.ctow_conv);
- im->private.local.ctow_conv = NULL;
- }
- if (im->private.local.ctoutf8_conv) {
- _XlcCloseConverter(im->private.local.ctoutf8_conv);
- im->private.local.ctoutf8_conv = NULL;
- }
- if (im->private.local.cstomb_conv) {
- _XlcCloseConverter(im->private.local.cstomb_conv);
- im->private.local.cstomb_conv = NULL;
- }
- if (im->private.local.cstowc_conv) {
- _XlcCloseConverter(im->private.local.cstowc_conv);
- im->private.local.cstowc_conv = NULL;
- }
- if (im->private.local.cstoutf8_conv) {
- _XlcCloseConverter(im->private.local.cstoutf8_conv);
- im->private.local.cstoutf8_conv = NULL;
- }
- if (im->private.local.ucstoc_conv) {
- _XlcCloseConverter(im->private.local.ucstoc_conv);
- im->private.local.ucstoc_conv = NULL;
- }
- if (im->private.local.ucstoutf8_conv) {
- _XlcCloseConverter(im->private.local.ucstoutf8_conv);
- im->private.local.ucstoutf8_conv = NULL;
- }
- return;
-}
-
-Public Status
-_XimThaiCloseIM(XIM xim)
-{
- Xim im = (Xim)xim;
- XIC ic;
- XIC next;
-
- ic = im->core.ic_chain;
- im->core.ic_chain = NULL;
- while (ic) {
- (*ic->methods->destroy) (ic);
- next = ic->core.next;
- Xfree ((char *) ic);
- ic = next;
- }
- _XimThaiIMFree(im);
- return(True);
-}
+/******************************************************************
+
+ Copyright 1992, 1993, 1994 by FUJITSU LIMITED
+ Copyright 1993 by Digital Equipment Corporation
+
+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 FUJITSU LIMITED and
+Digital Equipment Corporation not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission. FUJITSU LIMITED and Digital Equipment Corporation
+makes no representations about the suitability of this software for
+any purpose. It is provided "as is" without express or implied
+warranty.
+
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION 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.
+
+ Author: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+ Modifier: Franky Ling Digital Equipment Corporation
+ frankyling@hgrd01.enet.dec.com
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <X11/Xlib.h>
+#include <X11/Xmd.h>
+#include <X11/Xatom.h>
+#include <X11/Xos.h>
+#include "Xlibint.h"
+#include "Xlcint.h"
+#include "XlcPublic.h"
+#include "XlcPubI.h"
+#include "Ximint.h"
+
+Private XIMMethodsRec Xim_im_thai_methods = {
+ _XimThaiCloseIM, /* close */
+ _XimLocalSetIMValues, /* set_values */
+ _XimLocalGetIMValues, /* get_values */
+ _XimThaiCreateIC, /* create_ic */
+ _XimLcctstombs, /* ctstombs */
+ _XimLcctstowcs, /* ctstowcs */
+ _XimLcctstoutf8 /* ctstoutf8 */
+};
+
+#define THAI_LANGUAGE_NAME "th"
+
+Bool
+_XimCheckIfThaiProcessing(Xim im)
+{
+ char *language;
+
+ _XGetLCValues(im->core.lcd, XlcNLanguage, &language, NULL);
+ if(strcmp(language, THAI_LANGUAGE_NAME) == 0 &&
+ (strcmp(im->core.im_name, "") == 0 ||
+ strcmp(im->core.im_name, "BasicCheck") == 0 ||
+ strcmp(im->core.im_name, "Strict") == 0 ||
+ strcmp(im->core.im_name, "Thaicat") == 0 ||
+ strcmp(im->core.im_name, "Passthrough") == 0))
+ {
+ return(True);
+ }
+ return(False);
+}
+
+Public Bool
+_XimThaiOpenIM(Xim im)
+{
+ XLCd lcd = im->core.lcd;
+ XlcConv conv;
+ XimDefIMValues im_values;
+ XimLocalPrivateRec* private = &im->private.local;
+
+ _XimInitialResourceInfo();
+ if(_XimSetIMResourceList(&im->core.im_resources,
+ &im->core.im_num_resources) == False) {
+ goto Open_Error;
+ }
+ if(_XimSetICResourceList(&im->core.ic_resources,
+ &im->core.ic_num_resources) == False) {
+ goto Open_Error;
+ }
+
+ _XimSetIMMode(im->core.im_resources, im->core.im_num_resources);
+
+ _XimGetCurrentIMValues(im, &im_values);
+ if(_XimSetLocalIMDefaults(im, (XPointer)&im_values,
+ im->core.im_resources, im->core.im_num_resources) == False) {
+ goto Open_Error;
+ }
+ _XimSetCurrentIMValues(im, &im_values);
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte)))
+ goto Open_Error;
+ private->ctom_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar)))
+ goto Open_Error;
+ private->ctow_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNUtf8String)))
+ goto Open_Error;
+ private->ctoutf8_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte)))
+ goto Open_Error;
+ private->cstomb_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNWideChar)))
+ goto Open_Error;
+ private->cstowc_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String)))
+ goto Open_Error;
+ private->cstoutf8_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNChar)))
+ goto Open_Error;
+ private->ucstoc_conv = conv;
+
+ if (!(conv = _XlcOpenConverter(lcd, XlcNUcsChar, lcd, XlcNUtf8String)))
+ goto Open_Error;
+ private->ucstoutf8_conv = conv;
+
+ im->methods = &Xim_im_thai_methods;
+ private->current_ic = (XIC)NULL;
+
+ return(True);
+
+Open_Error :
+ _XimThaiIMFree(im);
+ return(False);
+}
+
+Public void
+_XimThaiIMFree(Xim im)
+{
+ if(im->core.im_resources) {
+ Xfree(im->core.im_resources);
+ im->core.im_resources = NULL;
+ }
+ if(im->core.ic_resources) {
+ Xfree(im->core.ic_resources);
+ im->core.ic_resources = NULL;
+ }
+ if(im->core.im_values_list) {
+ Xfree(im->core.im_values_list);
+ im->core.im_values_list = NULL;
+ }
+ if(im->core.ic_values_list) {
+ Xfree(im->core.ic_values_list);
+ im->core.ic_values_list = NULL;
+ }
+ if(im->core.styles) {
+ Xfree(im->core.styles);
+ im->core.styles = NULL;
+ }
+ if(im->core.res_name) {
+ Xfree(im->core.res_name);
+ im->core.res_name = NULL;
+ }
+ if(im->core.res_class) {
+ Xfree(im->core.res_class);
+ im->core.res_class = NULL;
+ }
+ if(im->core.im_name) {
+ Xfree(im->core.im_name);
+ im->core.im_name = NULL;
+ }
+ if (im->private.local.ctom_conv) {
+ _XlcCloseConverter(im->private.local.ctom_conv);
+ im->private.local.ctom_conv = NULL;
+ }
+ if (im->private.local.ctow_conv) {
+ _XlcCloseConverter(im->private.local.ctow_conv);
+ im->private.local.ctow_conv = NULL;
+ }
+ if (im->private.local.ctoutf8_conv) {
+ _XlcCloseConverter(im->private.local.ctoutf8_conv);
+ im->private.local.ctoutf8_conv = NULL;
+ }
+ if (im->private.local.cstomb_conv) {
+ _XlcCloseConverter(im->private.local.cstomb_conv);
+ im->private.local.cstomb_conv = NULL;
+ }
+ if (im->private.local.cstowc_conv) {
+ _XlcCloseConverter(im->private.local.cstowc_conv);
+ im->private.local.cstowc_conv = NULL;
+ }
+ if (im->private.local.cstoutf8_conv) {
+ _XlcCloseConverter(im->private.local.cstoutf8_conv);
+ im->private.local.cstoutf8_conv = NULL;
+ }
+ if (im->private.local.ucstoc_conv) {
+ _XlcCloseConverter(im->private.local.ucstoc_conv);
+ im->private.local.ucstoc_conv = NULL;
+ }
+ if (im->private.local.ucstoutf8_conv) {
+ _XlcCloseConverter(im->private.local.ucstoutf8_conv);
+ im->private.local.ucstoutf8_conv = NULL;
+ }
+ return;
+}
+
+Public Status
+_XimThaiCloseIM(XIM xim)
+{
+ Xim im = (Xim)xim;
+ XIC ic;
+ XIC next;
+
+ ic = im->core.ic_chain;
+ im->core.ic_chain = NULL;
+ while (ic) {
+ (*ic->methods->destroy) (ic);
+ next = ic->core.next;
+ Xfree ((char *) ic);
+ ic = next;
+ }
+ _XimThaiIMFree(im);
+ return(True);
+}
diff --git a/libX11/modules/lc/Makefile.am b/libX11/modules/lc/Makefile.am
index 3cad2d61c..82bd06017 100644
--- a/libX11/modules/lc/Makefile.am
+++ b/libX11/modules/lc/Makefile.am
@@ -1 +1 @@
-SUBDIRS=Utf8 def gen xlocale
+SUBDIRS=Utf8 def gen xlocale
diff --git a/libX11/modules/lc/Utf8/lcUTF8Load.c b/libX11/modules/lc/Utf8/lcUTF8Load.c
index 82ea3b54d..c1eec3749 100644
--- a/libX11/modules/lc/Utf8/lcUTF8Load.c
+++ b/libX11/modules/lc/Utf8/lcUTF8Load.c
@@ -1,70 +1,70 @@
-/******************************************************************
-
- Copyright 1993 by SunSoft, Inc.
- Copyright 1999-2000 by Bruno Haible
-
-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 names of SunSoft, Inc. and
-Bruno Haible not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission. SunSoft, Inc. and Bruno Haible make no representations
-about the suitability of this software for any purpose. It is
-provided "as is" without express or implied warranty.
-
-SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible 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.
-
-******************************************************************/
-
-/*
- * This file contains the UTF-8 locale loader.
- * Supports: all locales with codeset UTF-8.
- * Platforms: all systems.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include "XlcGeneric.h"
-
-XLCd
-_XlcUtf8Loader(
- const char *name)
-{
- XLCd lcd;
-
- lcd = _XlcCreateLC(name, _XlcGenericMethods);
- if (lcd == (XLCd) NULL)
- return lcd;
-
- /* The official IANA name for UTF-8 is "UTF-8" in upper case with a dash. */
- if (!XLC_PUBLIC_PART(lcd)->codeset) {
- _XlcDestroyLC(lcd);
- return (XLCd) NULL;
- }
- else if (!_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "UTF-8")) {
- _XlcAddUtf8LocaleConverters(lcd);
- }
- else if (!_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "GB18030")) {
- _XlcAddGB18030LocaleConverters(lcd);
- }
- else {
- _XlcDestroyLC(lcd);
- return (XLCd) NULL;
- }
-
- _XlcAddUtf8Converters(lcd);
-
- return lcd;
-}
+/******************************************************************
+
+ Copyright 1993 by SunSoft, Inc.
+ Copyright 1999-2000 by Bruno Haible
+
+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 names of SunSoft, Inc. and
+Bruno Haible not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission. SunSoft, Inc. and Bruno Haible make no representations
+about the suitability of this software for any purpose. It is
+provided "as is" without express or implied warranty.
+
+SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible 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.
+
+******************************************************************/
+
+/*
+ * This file contains the UTF-8 locale loader.
+ * Supports: all locales with codeset UTF-8.
+ * Platforms: all systems.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include "XlcGeneric.h"
+
+XLCd
+_XlcUtf8Loader(
+ const char *name)
+{
+ XLCd lcd;
+
+ lcd = _XlcCreateLC(name, _XlcGenericMethods);
+ if (lcd == (XLCd) NULL)
+ return lcd;
+
+ /* The official IANA name for UTF-8 is "UTF-8" in upper case with a dash. */
+ if (!XLC_PUBLIC_PART(lcd)->codeset) {
+ _XlcDestroyLC(lcd);
+ return (XLCd) NULL;
+ }
+ else if (!_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "UTF-8")) {
+ _XlcAddUtf8LocaleConverters(lcd);
+ }
+ else if (!_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "GB18030")) {
+ _XlcAddGB18030LocaleConverters(lcd);
+ }
+ else {
+ _XlcDestroyLC(lcd);
+ return (XLCd) NULL;
+ }
+
+ _XlcAddUtf8Converters(lcd);
+
+ return lcd;
+}
diff --git a/libX11/modules/lc/xlocale/lcEuc.c b/libX11/modules/lc/xlocale/lcEuc.c
index 442e3090f..b39050578 100644
--- a/libX11/modules/lc/xlocale/lcEuc.c
+++ b/libX11/modules/lc/xlocale/lcEuc.c
@@ -1,1537 +1,1537 @@
-/******************************************************************
-
- Copyright 1992, 1993 by FUJITSU LIMITED
- Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
-
-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 FUJITSU LIMITED and
-Fujitsu Open Systems Solutions, Inc. not be used in advertising or
-publicity pertaining to distribution of the software without specific,
-written prior permission.
-FUJITSU LIMITED and Fujitsu Open Systems Solutions, Inc. makes no
-representations about the suitability of this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED AND FUJITSU OPEN SYSTEMS SOLUTIONS, INC. DISCLAIMS ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU OPEN SYSTEMS
-SOLUTIONS, INC. AND FUJITSU LIMITED 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.
-
- Authors: Shigeru Yamada (yamada@ossi.com)
- Jeffrey Bloomfield (jeffb@ossi.com)
- Yoshiyuki Segawa (segawa@ossi.com)
-
-*****************************************************************/
-
-/*
- * An EUC locale.
- * Supports: all locales with codeset eucJP, eucKR, eucCN, eucTW.
- * How: Provides converters for euc*.
- * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
- */
-
-#ifdef X_LOCALE
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcGeneric.h"
-
-#include <ctype.h>
-#ifdef WIN32
-#define isascii __isascii
-#endif
-
-#define CS0 codesets[0] /* Codeset 0 - 7-bit ASCII */
-#define CS1 codesets[1] /* Codeset 1 - Kanji */
-#define CS2 codesets[2] /* Codeset 2 - Half-Kana */
-#define CS3 codesets[3] /* Codeset 3 - User defined */
-
-#define SS2 0x8e /* Single-shift char: CS2 */
-#define SS3 0x8f /* Single-shift char: CS3 */
-
-#define ASCII_CODESET 0
-#define KANJI_CODESET 1
-#define KANA_CODESET 2
-#define USERDEF_CODESET 3
-#define MAX_CODESETS
-
-#define GR 0x80 /* begins right-side (non-ascii) region */
-#define GL 0x7f /* ends left-side (ascii) region */
-
-#define isleftside(c) (((c) & GR) ? 0 : 1)
-#define isrightside(c) (!isleftside(c))
-
-#define BIT8OFF(c) ((c) & GL)
-#define BIT8ON(c) ((c) | GR)
-
-typedef unsigned char Uchar;
-typedef unsigned long Ulong;
-typedef unsigned int Uint;
-
-static CodeSet GetCodeSetFromCharSet (XLCd lcd, XlcCharSet charset);
-static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
-
-#define BADCHAR(min_ch, c) (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
- BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
- BIT8OFF(c) != 0x1b)
-
-/*
- * Notes:
- * 1. Defining FORCE_INDIRECT_CONVERTER (see _XlcEucLoader())
- * forces indirect (charset) conversions (e.g. wcstocs()<->cstombs()).
- * 2. Using direct converters (e.g. mbstowcs()) decreases conversion
- * times by 20-40% (depends on specific converter used).
- */
-
-static int
-euc_mbstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
-
- Uchar ch;
- int chr_len = 0;
- int sshift = False;
- int shift_mult = 0;
- Uint chrcode;
-
- Uint wc_encode = 0;
- Uint wc_tmp = 0;
-
- int cs0flg = False;
- int cs1flg = False;
- int length = 0;
- int unconv_num = 0;
-
- Bool new_char;
-
- const char *inbufptr = *from;
- wchar_t *outbufptr = (wchar_t *) *to;
-
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
- for (new_char = True; *from_left > 0 && *to_left > 0;) {
-
- ch = *inbufptr++;
-
- if (isleftside(ch)) { /* CS0 */
- if (ASCII_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- if( cs0flg == True) {
- new_char = True;
- cs0flg = False;
- }
- length = CS0->length;
- *outbufptr++ = (wchar_t)ch;
- (*from_left)--;
- (*to_left)--;
- continue;
- }
- else if (ch == SS2) { /* CS2 */
- if (KANA_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- if (sshift == True || cs1flg == True) {
- cs1flg = False;
- unconv_num++;
- continue;
- }
- length = CS2->length;
- wc_encode = CS2->wc_encoding;
- chrcode = 0;
- sshift = True;
- cs0flg = True;
- (*from_left)--;
- continue;
- }
- else if (ch == SS3) { /* CS3 */
- if (USERDEF_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- if (sshift == True || cs1flg == True) {
- cs1flg = False;
- unconv_num++;
- continue;
- }
- length = CS3->length;
- if (*from_left < 1 )
- unconv_num++;
- wc_encode = CS3->wc_encoding;
- chrcode = 0;
- sshift = True;
- cs0flg = True;
- (*from_left)--;
- continue;
-
- } else { /* CS1 */
- if (KANJI_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- if (sshift == False) {
- length = CS1->length;
- if (*from_left < 1)
- unconv_num++;
- wc_encode = CS1->wc_encoding;
- }
- chrcode = BIT8OFF(ch);
- cs0flg = True;
- cs1flg = True;
- (*from_left)--;
- }
-
- if (new_char) { /* begin new character */
- chr_len = length;
- shift_mult = length - 1;
- new_char = False;
- }
-
- chrcode <<= (wc_shift * shift_mult);
- shift_mult--;
- wc_tmp |= chrcode;
-
- if (--chr_len == 0) {
- wc_tmp |= wc_encode;
- *outbufptr++ = wc_tmp;
- (*to_left)--;
-
- new_char = True;
- sshift = False;
- cs0flg = False;
- cs1flg = False;
- wc_tmp = (Uint)0;
- }
-
- } /* end for */
-
- *to = (XPointer)outbufptr;
-
- if (cs0flg == True || cs1flg == True) /* error check on last char */
- unconv_num++;
-
- return unconv_num;
-}
-
-
-static int
-euc_wcstombs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- const wchar_t *inbufptr = (const wchar_t *) *from;
- XPointer outbufptr = *to;
- wchar_t wch;
- int length;
- Uchar tmp;
- int unconv_num = 0;
-
- XLCd lcd = (XLCd)conv->state;
- CodeSet codeset;
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
- for (; *from_left > 0 && *to_left > 0; (*from_left)-- ) {
-
- wch = *inbufptr++;
-
- if (!(codeset = wc_codeset(lcd, wch))) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
-
- length = codeset->length;
- wch ^= (wchar_t)codeset->wc_encoding;
-
- if (codeset->parse_info) { /* put out SS2 or SS3 */
- if (*to_left < length + 1) {
- unconv_num++;
- break;
- }
- *outbufptr++ = *codeset->parse_info->encoding;
- (*to_left)--;
- } else {
- if (*to_left < length) {
- unconv_num++;
- break;
- }
- }
-
- do {
- length--;
- tmp = (wch>>(wchar_t)(length * wc_shift));
-
- if (codeset->side == XlcGR)
- tmp = BIT8ON(tmp);
-
- *outbufptr++ = (Uchar)tmp;
- (*to_left)--;
- } while (length);
- }
-
- *to = (XPointer)outbufptr;
-
- return unconv_num;
-}
-
-
-static int
-euc_mbtocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- XlcCharSet charset;
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
- int length;
- int unconv_num = 0;
- int min_ch = 0;
- const char *src = *from;
- char *dst = *to;
-
- if (isleftside(*src)) { /* 7-bit (CS0) */
- if (ASCII_CODESET >= codeset_num)
- return -1;
- charset = *CS0->charset_list;
- }
- else if ((Uchar)*src == SS2) { /* half-kana (CS2) */
- if (KANA_CODESET >= codeset_num)
- return -1;
- charset = *CS2->charset_list;
- src++;
- (*from_left)--;
- }
- else if ((Uchar)*src == SS3) { /* user-def */
- if (USERDEF_CODESET >= codeset_num)
- return -1;
- charset = *CS3->charset_list;
- src++;
- (*from_left)--;
- }
- else { /* Kanji (CS1) */
- if (KANJI_CODESET >= codeset_num)
- return -1;
- charset = *CS1->charset_list;
- }
-
- if(*from_left < charset->char_size || *to_left < charset->char_size)
- return -1;
-
- min_ch = 0x20;
- if (charset->set_size == 94)
- if (charset->char_size > 1 || charset->side == XlcGR)
- min_ch = 0x21;
-
- length = charset->char_size;
- do {
- if(BADCHAR(min_ch, *src)) {
- unconv_num++;
- src++;
- break;
- }
- switch (charset->side) {
- case XlcGL:
- *dst++ = BIT8OFF(*src++);
- break;
- case XlcGR:
- *dst++ = BIT8ON(*src++);
- break;
- default:
- *dst++ = *src++;
- break;
- }
- } while (--length);
-
- *to = dst;
- *from = (XPointer) src;
- *from_left -= charset->char_size;
- *to_left -= charset->char_size - length;
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = charset;
-
- return unconv_num;
-}
-
-
-static int
-euc_mbstocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- const char *tmp_from;
- char *tmp_to;
- int tmp_from_left, tmp_to_left;
- XlcCharSet charset, tmp_charset;
- XPointer tmp_args[1];
- int unconv_num = 0, ret;
-
-/* Determine the charset of the segment and convert one characater: */
-
- tmp_args[0] = (XPointer) &charset; /* charset from euc_mbtocs() */
- while
- ((ret = euc_mbtocs(conv, from, from_left, to, to_left, tmp_args, 1)) > 0)
- unconv_num += ret;
- if ( ret < 0 )
- return ret;
-
- tmp_from = *from;
- tmp_from_left = *from_left;
- tmp_to_left = *to_left;
- tmp_to = *to;
-
-/* Convert remainder of the segment: */
-
- tmp_args[0] = (XPointer) &tmp_charset;
- while( (ret = euc_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
- (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
-
- if (ret > 0) {
- unconv_num += ret;
- continue;
- }
-
- if (tmp_charset != charset) /* quit on end of segment */
- break;
-
- *from = (XPointer) tmp_from;
- *from_left = tmp_from_left;
- *to = (XPointer) tmp_to;
- *to_left = tmp_to_left;
- }
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = charset;
-
- return unconv_num;
-}
-
-
-static int
-euc_wcstocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- const wchar_t *wcptr = (const wchar_t *) *from;
- char *bufptr = (char *) *to;
- wchar_t wch;
- char *tmpptr;
- int length;
- CodeSet codeset;
- Ulong wc_encoding;
- int wcstr_len = *from_left, buf_len = *to_left;
-
- if (!(codeset = wc_codeset(lcd, *wcptr)))
- return -1;
-
- wc_encoding = codeset->wc_encoding;
-
- if (wcstr_len < buf_len / codeset->length)
- buf_len = wcstr_len * codeset->length;
-
- for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) {
- wch = *wcptr;
-
- if ((wch & XLC_GENERIC(lcd, wc_encode_mask)) != wc_encoding)
- break;
-
- length = codeset->length;
-
- buf_len -= length;
- bufptr += length;
- tmpptr = bufptr - 1;
-
- while (length--) {
- *tmpptr-- = codeset->length == 1 && codeset->side == XlcGR ?
- BIT8ON(wch) : BIT8OFF(wch);
- wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
- }
- }
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = *codeset->charset_list;
-
- *from_left -= wcptr - (wchar_t *) *from;
- *from = (XPointer) wcptr;
-
- *to_left -= bufptr - *to;
- *to = bufptr;
-
- return 0;
-}
-
-
-static int
-euc_cstombs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- const char *csptr = *from;
- char *bufptr = *to;
- int csstr_len = *from_left;
- int buf_len = *to_left;
- int length;
- CodeSet codeset;
- int cvt_length;
-
- if (num_args < 1)
- return -1;
-
- if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
- return -1;
-
- cvt_length = 0;
- csstr_len /= codeset->length;
- buf_len /= codeset->length;
-
- if (codeset->parse_info)
- csstr_len *= 2;
-
- if (csstr_len < buf_len)
- buf_len = csstr_len;
-
- cvt_length += buf_len * codeset->length;
-
- if (bufptr) {
- while (buf_len--) {
- if (codeset->parse_info) /* put out SS2 or SS3 */
- *bufptr++ = *codeset->parse_info->encoding;
-
- length = codeset->length;
- while (length--)
- *bufptr++ = codeset->side == XlcGR ?
- BIT8ON(*csptr++) : BIT8OFF(*csptr++);
- }
- }
-
- *from_left -= csptr - *from;
- *from = (XPointer) csptr;
- if (bufptr)
- *to += cvt_length;
- *to_left -= cvt_length;
-
- return 0;
-}
-
-
-static int
-euc_cstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- const char *csptr = *from;
- wchar_t *bufptr = (wchar_t *) *to;
- wchar_t *toptr = (wchar_t *) *to;
- int csstr_len = *from_left;
- int buf_len = *to_left;
- wchar_t wch;
- int length;
- Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
- CodeSet codeset;
-
- if (num_args < 1)
- return -1;
-
- if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
- return -1;
-
- csstr_len /= codeset->length;
- if (csstr_len < buf_len)
- buf_len = csstr_len;
- *to_left -= buf_len;
-
- if (bufptr) {
-
- toptr += buf_len;
- *to = (XPointer) toptr;
-
- while (buf_len--) {
-
- wch = (wchar_t) BIT8OFF(*csptr);
- csptr++;
-
- length = codeset->length - 1;
- while (length--) {
- wch = (wch << wc_shift_bits) | BIT8OFF(*csptr);
- csptr++;
- }
- *bufptr++ = wch | codeset->wc_encoding;
- }
- }
- *from_left -= csptr - *from;
- *from = (XPointer) csptr;
-
- return 0;
-}
-
-
-static CodeSet
-wc_codeset(
- XLCd lcd,
- wchar_t wch)
-{
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- int end = XLC_GENERIC(lcd, codeset_num);
- Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
-
- for (; --end >= 0; codesets++)
- if ( widech == (*codesets)->wc_encoding )
- return *codesets;
-
- return NULL;
-}
-
-
-static CodeSet
-GetCodeSetFromCharSet(
- XLCd lcd,
- XlcCharSet charset)
-{
- CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
- XlcCharSet *charset_list;
- int codeset_num, num_charsets;
-
- codeset_num = XLC_GENERIC(lcd, codeset_num);
-
- for ( ; codeset_num-- > 0; codeset++) {
- num_charsets = (*codeset)->num_charsets;
- charset_list = (*codeset)->charset_list;
-
- for ( ; num_charsets-- > 0; charset_list++)
- if (*charset_list == charset)
- return *codeset;
- }
-
- return (CodeSet) NULL;
-}
-
-
-static XlcConv
-create_conv(
- XLCd lcd,
- XlcConvMethods methods)
-{
- XlcConv conv;
-
- conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
- if (conv == NULL)
- return (XlcConv) NULL;
-
- conv->methods = methods;
- conv->state = (XPointer) lcd;
- return conv;
-}
-
-
-/*
- * Stripped down Direct CT converters for EUC
- *
- */
-
-typedef struct _CTDataRec {
- int side;
- int length;
- char *name;
- Ulong wc_encoding;
- char sshift;
- char *ct_encoding;
- int ct_encoding_len;
- int set_size;
- Uchar min_ch;
- Uchar ct_type;
-} CTDataRec, *CTData;
-
-typedef struct _StateRec {
- CTData GL_charset;
- CTData GR_charset;
- CTData charset;
-} StateRec, *State;
-
-#define CT_STD 0
-#define CT_NSTD 1
-#define CT_DIR 2
-#define CT_EXT0 3
-#define CT_EXT1 4
-#define CT_EXT2 5
-#define CT_VER 6
-
-static CTDataRec ctdata[] =
-{
- { XlcGL, 1, "ISO8859-1:GL", 0, 0, "\033(B" , 3, 0, 0, CT_STD },
- { XlcGR, 1, "ISO8859-1:GR", 0, 0, "\033-A" , 3, 0, 0, CT_STD },
- { XlcGL, 1, "JISX0201.1976-0:GL", 0, 0, "\033(J" , 3, 0, 0, CT_STD },
- { XlcGR, 1, "JISX0201.1976-0:GR", 0, 0, "\033)I" , 3, 0, 0, CT_STD },
- { XlcGL, 2, "JISX0208.1983-0:GL", 0, 0, "\033$(B" , 4, 0, 0, CT_STD },
- { XlcGR, 2, "JISX0208.1983-0:GR", 0, 0, "\033$)B" , 4, 0, 0, CT_STD },
- { XlcGL, 2, "JISX0212.1990-0:GL", 0, 0, "\033$(D" , 4, 0, 0, CT_STD },
- { XlcGR, 2, "JISX0212.1990-0:GR", 0, 0, "\033$)D" , 4, 0, 0, CT_STD },
- { XlcUnknown, 0, "Ignore-Ext-Status?", 0, 0, "\033#" , 2, 0, 0, CT_VER },
- { XlcUnknown, 0, "NonStd-?-OctetChar", 0, 0, "\033%/0" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 1, "NonStd-1-OctetChar", 0, 0, "\033%/1" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 2, "NonStd-2-OctetChar", 0, 0, "\033%/2" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 3, "NonStd-3-OctetChar", 0, 0, "\033%/3" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 4, "NonStd-4-OctetChar", 0, 0, "\033%/4" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 0, "Extension-2" , 0, 0, "\033%/" , 3, 0, 0, CT_EXT2 },
- { XlcUnknown, 0, "Extension-0" , 0, 0, "\033" , 1, 0, 0, CT_EXT0 },
- { XlcUnknown, 0, "Begin-L-to-R-Text", 0, 0, "\2331]" , 3, 0, 0, CT_DIR },
- { XlcUnknown, 0, "Begin-R-to-L-Text", 0, 0, "\2332]" , 3, 0, 0, CT_DIR },
- { XlcUnknown, 0, "End-Of-String", 0, 0, "\233]" , 2, 0, 0, CT_DIR },
- { XlcUnknown, 0, "Extension-1" , 0, 0, "\233" , 1, 0, 0, CT_EXT1 },
-};
-
-/* Note on above table: euc_ctstombs() and euc_ctstowcs() parser depends on
- * certain table entries occuring in decreasing string length--
- * 1. CT_EXT2 and CT_EXT0 entries must occur after CT_NSTD entries.
- * 2. CT_DIR and CT_EXT1 entries must occur after CT_DIR entries.
- */
-
-static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
-static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
-
-#define Ascii 0
-#define Kanji 1
-#define Kana 2
-#define Userdef 3
-
-/*
- * initCTptr(): Set ctdptr[] to point at ctdata[], indexed by codeset_num.
- */
-static void
-initCTptr(
- XLCd lcd)
-{
- int num_codesets = XLC_GENERIC(lcd, codeset_num);
- int num_charsets;
- int i, j;
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- CodeSet codeset;
- XlcCharSet charset;
- CTData ctdp = ctdata;
-
- ctdptr[Ascii] = &ctdata[0]; /* failsafe */
-
- for (i = 0; i < num_codesets; i++) {
-
- codeset = codesets[i];
- num_charsets = codeset->num_charsets;
-
- for (j = 0; j < num_charsets; j++) {
-
- charset = codeset->charset_list[j];
-
- for (ctdp = ctdata; ctdp <= ctd_endp; ctdp++)
-
- if (! strcmp(ctdp->name, charset->name)) {
-
- ctdptr[codeset->cs_num] = ctdp;
-
- ctdptr[codeset->cs_num]->wc_encoding = codeset->wc_encoding;
-
- ctdptr[codeset->cs_num]->set_size =
- charset->set_size;
-
- ctdptr[codeset->cs_num]->min_ch =
- charset->set_size == 94 &&
- (ctdptr[codeset->cs_num]->length > 1 ||
- ctdptr[codeset->cs_num]->side == XlcGR) ? 0x21 : 0x20;
-
- if (codeset->parse_info) {
- ctdptr[codeset->cs_num]->sshift =
- *codeset->parse_info->encoding;
- }
-
- break;
- }
- }
- }
-}
-
-
-#define SKIP_I(str) while (*(str) >= 0x20 && *(str) <= 0x2f) (str)++;
-#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
-
-static int
-euc_ctstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
- const char *inbufptr = *from;
- const char *inbuf_base;
- wchar_t *outbufptr = (wchar_t *) *to;
- wchar_t *outbuf_base = outbufptr;
- int clen, length;
- int unconv_num = 0;
- unsigned int ct_seglen = 0;
- Uchar ct_type = 0;
- int shift_mult;
- wchar_t wc_tmp;
- wchar_t wch;
- Ulong wc_encoding;
- CTData ctdp = ctdata;
- CTData GL_ctdp = ctdp; /* GL ctdp save */
- CTData GR_ctdp = ctdp; /* GR ctdp save */
- Bool save_outbuf = True;
- /* If outbufptr is NULL, doen't save output, but just counts
- a length to hold the output */
- if (outbufptr == NULL) save_outbuf = False;
-
- for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length)
- {
- ct_type = CT_STD;
- /* change GL/GR charset */
- if(ctdp->side == XlcGR && isleftside(*inbufptr)){
- /* select GL side */
- ctdp = GL_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
- /* select GR side */
- ctdp = GR_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }
- if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
- for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
-
- if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
- {
- inbufptr += ctdp->ct_encoding_len;
- (*from_left) -= ctdp->ct_encoding_len;
- if (ctdp->length) {
- length = ctdp->length;
- if( *from_left < length ) {
- *to = (XPointer)outbufptr;
- *to_left -= outbufptr - outbuf_base;
- return( unconv_num + *from_left );
- }
- }
- ct_type = ctdp->ct_type;
- if(ctdp->side == XlcGL){
- GL_ctdp = ctdp; /* save GL ctdp */
- }else{
- GR_ctdp = ctdp; /* save GR ctdp */
- }
- break;
- }
- }
- if (ctdp > ctd_endp) /* failed to match CT sequence */
- unconv_num++;
- }
-
-/* The following code insures that non-standard encodings, direction, extension,
- * and version strings are ignored; subject to change in future.
- */
- switch (ct_type) {
- case CT_STD:
- break;
- case CT_EXT2:
- inbufptr++;
- (*from_left)--;
- case CT_NSTD:
- ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
- inbufptr += ct_seglen;
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT0:
- inbuf_base = inbufptr;
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- *(from_left) -= ct_seglen;
- continue;
- case CT_EXT1:
- inbuf_base = inbufptr;
- SKIP_P(inbufptr);
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- *(from_left) -= ct_seglen;
- continue;
- case CT_DIR:
- continue;
- case CT_VER:
- inbufptr += 2;
- *(from_left) -= 2;
- continue;
- }
-
- wc_encoding = (ctdp == ctdptr[Kana] && isleftside(*inbufptr)) ?
- ctdptr[Ascii]->wc_encoding: ctdp->wc_encoding;
-
- shift_mult = length - 1;
- wch = (wchar_t)0;
- clen = length;
-
- do {
- wc_tmp = BIT8OFF(*inbufptr++) << (wc_shift_bits * shift_mult);
- wch |= wc_tmp;
- shift_mult--;
- } while (--clen);
-
- if (save_outbuf == True)
- *outbufptr++ = wch | wc_encoding;
- if (--*to_left == 0 && *from_left != length) {
- *to = (XPointer)outbufptr;
- unconv_num = *from_left;
- return unconv_num;
- }
- }
-
- *to = (XPointer)outbufptr;
-
- return unconv_num;
-
-}
-
-
-#define byte1 (length == codeset->length - 1)
-#define byte2 (byte1 == 0)
-#define kanji (codeset->cs_num == 1)
-#define kana (codeset->cs_num == 2)
-#define userdef (codeset->cs_num == 3)
-
-static int
-euc_wcstocts(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- int ct_len = *to_left;
- const wchar_t *inbufptr = (const wchar_t *) *from;
- char *ctptr = *to;
- XPointer ct_base = ctptr;
- wchar_t wch;
- int length;
- int unconv_num = 0;
- Uchar tmp;
- Uchar t1 = 0;
- int num_conv;
-
- StateRec ct_state;
- XLCd lcd = (XLCd)conv->state;
- CTData charset;
- CodeSet codeset;
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-/* Initial State: */
- ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
- ct_state.GR_charset = NULL;
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (; *from_left > 0 ; (*from_left)-- ) {
-
- wch = *inbufptr++;
-
- if (!(codeset = wc_codeset(lcd, wch))) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
-
- charset = ctdptr[codeset->cs_num];
-
- length = codeset->length;
- wch ^= (wchar_t)codeset->wc_encoding;
-
- if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
- (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
- ct_len -= ctdptr[codeset->cs_num]->ct_encoding_len;
-
- if (ct_len < 0) {
- unconv_num++;
- break;
- }
-
- if (ctptr) {
- strcpy(ctptr, ctdptr[codeset->cs_num]->ct_encoding);
- ctptr += ctdptr[codeset->cs_num]->ct_encoding_len;
- }
- }
-
- if (charset->side == XlcGR) {
- ct_state.GR_charset = charset;
- ct_state.GL_charset = NULL;
- } else if (charset->side == XlcGL) {
- ct_state.GL_charset = charset;
- ct_state.GR_charset = NULL;
- }
-
- do {
-
- length--;
- tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
-
- if (kana) {
- if (BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
- *ctptr++ = (char)BIT8ON(tmp);
- }
-
- else if (byte1 && (kanji || userdef))
- t1 = tmp;
-
- else if (byte2 && (kanji || userdef)) {
- if (BADCHAR(charset->min_ch, (char)t1) ||
- BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
- if (charset->side == XlcGR) {
- *ctptr++ = (char)BIT8ON(t1);
- *ctptr++ = (char)BIT8ON(tmp);
- } else {
- *ctptr++ = (char)BIT8OFF(t1);
- *ctptr++ = (char)BIT8OFF(tmp);
- }
- }
-
- else {
- if (BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
- *ctptr++ = (char)tmp;
- }
-
-
- } while (length);
-
- } /* end for */
-
- *to = (XPointer)ctptr;
-
- if ((num_conv = (int)(ctptr - ct_base)) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-}
-#undef byte1
-#undef byte2
-#undef kana
-#undef kanji
-#undef userdef
-
-
-#define byte1 (ctdp->length == clen)
-#define kana (ctdp == ctdptr[Kana] && isrightside(*inbufptr))
-/* #define kanji (ctdp == ctdptr[Kanji]) */
-#define kanji (strstr(ctdp->name, "JISX0208"))
-#define userdef (ctdp == ctdptr[Userdef])
-
-static int
-euc_ctstombs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- char *inbufptr = *from;
- XPointer outbufptr = *to;
- const char *inbuf_base;
- XPointer outbuf_base = outbufptr;
- int clen, length;
- int unconv_num = 0;
- unsigned int ct_seglen = 0;
- Uchar ct_type = 0;
- CTData ctdp = &ctdata[0]; /* default */
- CTData GL_ctdp = ctdp; /* GL ctdp save */
- CTData GR_ctdp = ctdp; /* GR ctdp save */
- Bool save_outbuf = True;
- /* If outbufptr is NULL, doen't save output, but just counts
- a length to hold the output */
- if (outbufptr == NULL) save_outbuf = False;
-
- for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length)
- {
- ct_type = CT_STD;
- /* change GL/GR charset */
- if(ctdp->side == XlcGR && isleftside(*inbufptr)){
- /* select GL side */
- ctdp = GL_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
- /* select GR side */
- ctdp = GR_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }
- if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
-
- for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
-
- if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
- {
- inbufptr += ctdp->ct_encoding_len;
- (*from_left) -= ctdp->ct_encoding_len;
- if (ctdp->length) {
- length = ctdp->length;
- if( *from_left < length ) {
- *to = (XPointer)outbufptr;
- *to_left -= outbufptr - outbuf_base;
- return( unconv_num + *from_left );
- }
- }
- ct_type = ctdp->ct_type;
- if(ctdp->side == XlcGL){
- GL_ctdp = ctdp; /* save GL ctdp */
- }else{
- GR_ctdp = ctdp; /* save GR ctdp */
- }
- break;
- }
- }
- if (ctdp > ctd_endp) /* failed to match CT sequence */
- unconv_num++;
- }
-
-/* The following code insures that non-standard encodings, direction, extension,
- * and version strings are ignored; subject to change in future.
- */
- switch (ct_type) {
- case CT_STD:
- break;
- case CT_EXT2:
- inbufptr++;
- (*from_left)--;
- case CT_NSTD:
- ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
- inbufptr += ct_seglen;
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT0:
- inbuf_base = inbufptr;
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- *(from_left) -= ct_seglen;
- continue;
- case CT_EXT1:
- inbuf_base = inbufptr;
- SKIP_P(inbufptr);
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- *(from_left) -= ct_seglen;
- continue;
- case CT_DIR:
- continue;
- case CT_VER:
- inbufptr += 2;
- *(from_left) -= 2;
- continue;
- }
-
- clen = length;
- do {
-
- if (byte1) {
- if (kanji) {
- /* FIXME: assignment of read-only location */
- *inbufptr = BIT8ON(*inbufptr);
- *(inbufptr+1) = BIT8ON(*(inbufptr+1));
- }
- else if (kana || userdef) {
- if (save_outbuf == True) {
- *outbufptr++ = ctdp->sshift;
- }
- (*to_left)--;
- }
- }
- if (save_outbuf == True) {
- *outbufptr++ = *inbufptr;
- }
- (*to_left)--;
- inbufptr++;
-
- if (*to_left == 0 && *from_left != length) {
- *to = (XPointer)outbufptr;
- unconv_num = *from_left;
- return unconv_num;
- }
- } while (--clen);
- }
-
- *to = outbufptr;
-
- return unconv_num;
-
-}
-#undef byte1
-#undef kana
-#undef kanji
-#undef userdef
-
-
-static int
-euc_mbstocts(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- int ct_len = *to_left;
- int cs_num;
- int clen, length = 0;
- int unconv_num = 0;
- int num_conv;
- const char *inbufptr = *from;
- char *ctptr = *to;
- XPointer ct_base = ctptr;
-
- StateRec ct_state;
- CTData charset;
- XLCd lcd = (XLCd) conv->state;
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
-/* Initial State: */
- ct_state.GL_charset = NULL;
- ct_state.GR_charset = NULL;
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (;*from_left > 0; (*from_left) -= length) {
-
- if (isleftside(*inbufptr)) { /* 7-bit (CS0) */
- if (ASCII_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Ascii;
- charset = ctdptr[Ascii];
- }
- else if ((Uchar)*inbufptr == SS2) { /* Kana */
- if (KANA_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Kana;
- charset = ctdptr[Kana];
- inbufptr++;
- (*from_left)--;
- }
- else if ((Uchar)*inbufptr == SS3) { /* Userdef */
- if (USERDEF_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Userdef;
- charset = ctdptr[Userdef];
- inbufptr++;
- (*from_left)--;
- }
- else {
- if (KANJI_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Kanji;
- charset = ctdptr[Kanji];
- }
-
- length = charset->length;
-
- if (BADCHAR(charset->min_ch, *inbufptr))
- continue;
-
- if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
- (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
- ct_len -= ctdptr[cs_num]->ct_encoding_len;
- if (ct_len < 0) {
- unconv_num++;
- break;
- }
-
- if (ctptr) {
- strcpy(ctptr, ctdptr[cs_num]->ct_encoding);
- ctptr += ctdptr[cs_num]->ct_encoding_len;
- }
- }
-
- if (charset->side == XlcGR) {
- ct_state.GR_charset = charset;
- ct_state.GL_charset = NULL;
- } else if (charset->side == XlcGL) {
- ct_state.GL_charset = charset;
- ct_state.GR_charset = NULL;
- }
-
- clen = length;
-
- do {
- *ctptr++ = charset == ct_state.GR_charset ?
- BIT8ON(*inbufptr++) : BIT8OFF(*inbufptr++);
- } while (--clen);
- }
-
- *to = (XPointer)ctptr;
-
- if ((num_conv = (int)(ctptr - ct_base)) > 0)
- (*to_left) -= num_conv;
- return unconv_num;
-
-}
-
-
-static void
-close_converter(
- XlcConv conv)
-{
- Xfree((char *) conv);
-}
-
-enum { MBSTOCS, WCSTOCS, MBTOCS, CSTOMBS, CSTOWCS, MBSTOWCS, WCSTOMBS,
- CTSTOWCS, CTSTOMBS, WCSTOCTS, MBSTOCTS };
-
-static XlcConvMethodsRec conv_methods[] = {
- {close_converter, euc_mbstocs, NULL },
- {close_converter, euc_wcstocs, NULL },
- {close_converter, euc_mbtocs, NULL },
- {close_converter, euc_cstombs, NULL },
- {close_converter, euc_cstowcs, NULL },
- {close_converter, euc_mbstowcs, NULL },
- {close_converter, euc_wcstombs, NULL },
- {close_converter, euc_ctstowcs, NULL },
- {close_converter, euc_ctstombs, NULL },
- {close_converter, euc_wcstocts, NULL },
- {close_converter, euc_mbstocts, NULL },
-};
-
-
-static XlcConv
-open_mbstocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOCS]);
-}
-
-static XlcConv
-open_wcstocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOCS]);
-}
-
-static XlcConv
-open_mbtocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBTOCS]);
-}
-
-static XlcConv
-open_cstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CSTOMBS]);
-}
-
-static XlcConv
-open_cstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CSTOWCS]);
-}
-
-static XlcConv
-open_mbstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
-}
-
-static XlcConv
-open_wcstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
-}
-
-static XlcConv
-open_ctstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
-}
-
-static XlcConv
-open_ctstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
-}
-
-static XlcConv
-open_wcstocts(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
-}
-
-static XlcConv
-open_mbstocts(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
-}
-
-XLCd
-_XlcEucLoader(
- const char *name)
-{
- XLCd lcd;
-
- lcd = _XlcCreateLC(name, _XlcGenericMethods);
- if (lcd == NULL)
- return lcd;
-
- if (!XLC_PUBLIC_PART(lcd)->codeset ||
- (_XlcNCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "euc", 3))) {
- _XlcDestroyLC(lcd);
- return (XLCd) NULL;
- }
-
- initCTptr(lcd);
-
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
-
-#ifndef FORCE_INDIRECT_CONVERTER
- _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs);
- _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstocts);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
-#endif
-
- _XlcAddUtf8Converters(lcd);
-
- return lcd;
-}
-
-#else
-typedef int dummy;
-#endif /* X_LOCALE */
+/******************************************************************
+
+ Copyright 1992, 1993 by FUJITSU LIMITED
+ Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
+
+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 FUJITSU LIMITED and
+Fujitsu Open Systems Solutions, Inc. not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.
+FUJITSU LIMITED and Fujitsu Open Systems Solutions, Inc. makes no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED AND FUJITSU OPEN SYSTEMS SOLUTIONS, INC. DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU OPEN SYSTEMS
+SOLUTIONS, INC. AND FUJITSU LIMITED 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.
+
+ Authors: Shigeru Yamada (yamada@ossi.com)
+ Jeffrey Bloomfield (jeffb@ossi.com)
+ Yoshiyuki Segawa (segawa@ossi.com)
+
+*****************************************************************/
+
+/*
+ * An EUC locale.
+ * Supports: all locales with codeset eucJP, eucKR, eucCN, eucTW.
+ * How: Provides converters for euc*.
+ * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
+ */
+
+#ifdef X_LOCALE
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcGeneric.h"
+
+#include <ctype.h>
+#ifdef WIN32
+#define isascii __isascii
+#endif
+
+#define CS0 codesets[0] /* Codeset 0 - 7-bit ASCII */
+#define CS1 codesets[1] /* Codeset 1 - Kanji */
+#define CS2 codesets[2] /* Codeset 2 - Half-Kana */
+#define CS3 codesets[3] /* Codeset 3 - User defined */
+
+#define SS2 0x8e /* Single-shift char: CS2 */
+#define SS3 0x8f /* Single-shift char: CS3 */
+
+#define ASCII_CODESET 0
+#define KANJI_CODESET 1
+#define KANA_CODESET 2
+#define USERDEF_CODESET 3
+#define MAX_CODESETS
+
+#define GR 0x80 /* begins right-side (non-ascii) region */
+#define GL 0x7f /* ends left-side (ascii) region */
+
+#define isleftside(c) (((c) & GR) ? 0 : 1)
+#define isrightside(c) (!isleftside(c))
+
+#define BIT8OFF(c) ((c) & GL)
+#define BIT8ON(c) ((c) | GR)
+
+typedef unsigned char Uchar;
+typedef unsigned long Ulong;
+typedef unsigned int Uint;
+
+static CodeSet GetCodeSetFromCharSet (XLCd lcd, XlcCharSet charset);
+static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
+
+#define BADCHAR(min_ch, c) (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
+ BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
+ BIT8OFF(c) != 0x1b)
+
+/*
+ * Notes:
+ * 1. Defining FORCE_INDIRECT_CONVERTER (see _XlcEucLoader())
+ * forces indirect (charset) conversions (e.g. wcstocs()<->cstombs()).
+ * 2. Using direct converters (e.g. mbstowcs()) decreases conversion
+ * times by 20-40% (depends on specific converter used).
+ */
+
+static int
+euc_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+
+ Uchar ch;
+ int chr_len = 0;
+ int sshift = False;
+ int shift_mult = 0;
+ Uint chrcode;
+
+ Uint wc_encode = 0;
+ Uint wc_tmp = 0;
+
+ int cs0flg = False;
+ int cs1flg = False;
+ int length = 0;
+ int unconv_num = 0;
+
+ Bool new_char;
+
+ const char *inbufptr = *from;
+ wchar_t *outbufptr = (wchar_t *) *to;
+
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+ for (new_char = True; *from_left > 0 && *to_left > 0;) {
+
+ ch = *inbufptr++;
+
+ if (isleftside(ch)) { /* CS0 */
+ if (ASCII_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ if( cs0flg == True) {
+ new_char = True;
+ cs0flg = False;
+ }
+ length = CS0->length;
+ *outbufptr++ = (wchar_t)ch;
+ (*from_left)--;
+ (*to_left)--;
+ continue;
+ }
+ else if (ch == SS2) { /* CS2 */
+ if (KANA_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ if (sshift == True || cs1flg == True) {
+ cs1flg = False;
+ unconv_num++;
+ continue;
+ }
+ length = CS2->length;
+ wc_encode = CS2->wc_encoding;
+ chrcode = 0;
+ sshift = True;
+ cs0flg = True;
+ (*from_left)--;
+ continue;
+ }
+ else if (ch == SS3) { /* CS3 */
+ if (USERDEF_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ if (sshift == True || cs1flg == True) {
+ cs1flg = False;
+ unconv_num++;
+ continue;
+ }
+ length = CS3->length;
+ if (*from_left < 1 )
+ unconv_num++;
+ wc_encode = CS3->wc_encoding;
+ chrcode = 0;
+ sshift = True;
+ cs0flg = True;
+ (*from_left)--;
+ continue;
+
+ } else { /* CS1 */
+ if (KANJI_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ if (sshift == False) {
+ length = CS1->length;
+ if (*from_left < 1)
+ unconv_num++;
+ wc_encode = CS1->wc_encoding;
+ }
+ chrcode = BIT8OFF(ch);
+ cs0flg = True;
+ cs1flg = True;
+ (*from_left)--;
+ }
+
+ if (new_char) { /* begin new character */
+ chr_len = length;
+ shift_mult = length - 1;
+ new_char = False;
+ }
+
+ chrcode <<= (wc_shift * shift_mult);
+ shift_mult--;
+ wc_tmp |= chrcode;
+
+ if (--chr_len == 0) {
+ wc_tmp |= wc_encode;
+ *outbufptr++ = wc_tmp;
+ (*to_left)--;
+
+ new_char = True;
+ sshift = False;
+ cs0flg = False;
+ cs1flg = False;
+ wc_tmp = (Uint)0;
+ }
+
+ } /* end for */
+
+ *to = (XPointer)outbufptr;
+
+ if (cs0flg == True || cs1flg == True) /* error check on last char */
+ unconv_num++;
+
+ return unconv_num;
+}
+
+
+static int
+euc_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ XPointer outbufptr = *to;
+ wchar_t wch;
+ int length;
+ Uchar tmp;
+ int unconv_num = 0;
+
+ XLCd lcd = (XLCd)conv->state;
+ CodeSet codeset;
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+ for (; *from_left > 0 && *to_left > 0; (*from_left)-- ) {
+
+ wch = *inbufptr++;
+
+ if (!(codeset = wc_codeset(lcd, wch))) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+
+ length = codeset->length;
+ wch ^= (wchar_t)codeset->wc_encoding;
+
+ if (codeset->parse_info) { /* put out SS2 or SS3 */
+ if (*to_left < length + 1) {
+ unconv_num++;
+ break;
+ }
+ *outbufptr++ = *codeset->parse_info->encoding;
+ (*to_left)--;
+ } else {
+ if (*to_left < length) {
+ unconv_num++;
+ break;
+ }
+ }
+
+ do {
+ length--;
+ tmp = (wch>>(wchar_t)(length * wc_shift));
+
+ if (codeset->side == XlcGR)
+ tmp = BIT8ON(tmp);
+
+ *outbufptr++ = (Uchar)tmp;
+ (*to_left)--;
+ } while (length);
+ }
+
+ *to = (XPointer)outbufptr;
+
+ return unconv_num;
+}
+
+
+static int
+euc_mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ XlcCharSet charset;
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+ int length;
+ int unconv_num = 0;
+ int min_ch = 0;
+ const char *src = *from;
+ char *dst = *to;
+
+ if (isleftside(*src)) { /* 7-bit (CS0) */
+ if (ASCII_CODESET >= codeset_num)
+ return -1;
+ charset = *CS0->charset_list;
+ }
+ else if ((Uchar)*src == SS2) { /* half-kana (CS2) */
+ if (KANA_CODESET >= codeset_num)
+ return -1;
+ charset = *CS2->charset_list;
+ src++;
+ (*from_left)--;
+ }
+ else if ((Uchar)*src == SS3) { /* user-def */
+ if (USERDEF_CODESET >= codeset_num)
+ return -1;
+ charset = *CS3->charset_list;
+ src++;
+ (*from_left)--;
+ }
+ else { /* Kanji (CS1) */
+ if (KANJI_CODESET >= codeset_num)
+ return -1;
+ charset = *CS1->charset_list;
+ }
+
+ if(*from_left < charset->char_size || *to_left < charset->char_size)
+ return -1;
+
+ min_ch = 0x20;
+ if (charset->set_size == 94)
+ if (charset->char_size > 1 || charset->side == XlcGR)
+ min_ch = 0x21;
+
+ length = charset->char_size;
+ do {
+ if(BADCHAR(min_ch, *src)) {
+ unconv_num++;
+ src++;
+ break;
+ }
+ switch (charset->side) {
+ case XlcGL:
+ *dst++ = BIT8OFF(*src++);
+ break;
+ case XlcGR:
+ *dst++ = BIT8ON(*src++);
+ break;
+ default:
+ *dst++ = *src++;
+ break;
+ }
+ } while (--length);
+
+ *to = dst;
+ *from = (XPointer) src;
+ *from_left -= charset->char_size;
+ *to_left -= charset->char_size - length;
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = charset;
+
+ return unconv_num;
+}
+
+
+static int
+euc_mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const char *tmp_from;
+ char *tmp_to;
+ int tmp_from_left, tmp_to_left;
+ XlcCharSet charset, tmp_charset;
+ XPointer tmp_args[1];
+ int unconv_num = 0, ret;
+
+/* Determine the charset of the segment and convert one characater: */
+
+ tmp_args[0] = (XPointer) &charset; /* charset from euc_mbtocs() */
+ while
+ ((ret = euc_mbtocs(conv, from, from_left, to, to_left, tmp_args, 1)) > 0)
+ unconv_num += ret;
+ if ( ret < 0 )
+ return ret;
+
+ tmp_from = *from;
+ tmp_from_left = *from_left;
+ tmp_to_left = *to_left;
+ tmp_to = *to;
+
+/* Convert remainder of the segment: */
+
+ tmp_args[0] = (XPointer) &tmp_charset;
+ while( (ret = euc_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
+ (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
+
+ if (ret > 0) {
+ unconv_num += ret;
+ continue;
+ }
+
+ if (tmp_charset != charset) /* quit on end of segment */
+ break;
+
+ *from = (XPointer) tmp_from;
+ *from_left = tmp_from_left;
+ *to = (XPointer) tmp_to;
+ *to_left = tmp_to_left;
+ }
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = charset;
+
+ return unconv_num;
+}
+
+
+static int
+euc_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ const wchar_t *wcptr = (const wchar_t *) *from;
+ char *bufptr = (char *) *to;
+ wchar_t wch;
+ char *tmpptr;
+ int length;
+ CodeSet codeset;
+ Ulong wc_encoding;
+ int wcstr_len = *from_left, buf_len = *to_left;
+
+ if (!(codeset = wc_codeset(lcd, *wcptr)))
+ return -1;
+
+ wc_encoding = codeset->wc_encoding;
+
+ if (wcstr_len < buf_len / codeset->length)
+ buf_len = wcstr_len * codeset->length;
+
+ for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) {
+ wch = *wcptr;
+
+ if ((wch & XLC_GENERIC(lcd, wc_encode_mask)) != wc_encoding)
+ break;
+
+ length = codeset->length;
+
+ buf_len -= length;
+ bufptr += length;
+ tmpptr = bufptr - 1;
+
+ while (length--) {
+ *tmpptr-- = codeset->length == 1 && codeset->side == XlcGR ?
+ BIT8ON(wch) : BIT8OFF(wch);
+ wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
+ }
+ }
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = *codeset->charset_list;
+
+ *from_left -= wcptr - (wchar_t *) *from;
+ *from = (XPointer) wcptr;
+
+ *to_left -= bufptr - *to;
+ *to = bufptr;
+
+ return 0;
+}
+
+
+static int
+euc_cstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ const char *csptr = *from;
+ char *bufptr = *to;
+ int csstr_len = *from_left;
+ int buf_len = *to_left;
+ int length;
+ CodeSet codeset;
+ int cvt_length;
+
+ if (num_args < 1)
+ return -1;
+
+ if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
+ return -1;
+
+ cvt_length = 0;
+ csstr_len /= codeset->length;
+ buf_len /= codeset->length;
+
+ if (codeset->parse_info)
+ csstr_len *= 2;
+
+ if (csstr_len < buf_len)
+ buf_len = csstr_len;
+
+ cvt_length += buf_len * codeset->length;
+
+ if (bufptr) {
+ while (buf_len--) {
+ if (codeset->parse_info) /* put out SS2 or SS3 */
+ *bufptr++ = *codeset->parse_info->encoding;
+
+ length = codeset->length;
+ while (length--)
+ *bufptr++ = codeset->side == XlcGR ?
+ BIT8ON(*csptr++) : BIT8OFF(*csptr++);
+ }
+ }
+
+ *from_left -= csptr - *from;
+ *from = (XPointer) csptr;
+ if (bufptr)
+ *to += cvt_length;
+ *to_left -= cvt_length;
+
+ return 0;
+}
+
+
+static int
+euc_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ const char *csptr = *from;
+ wchar_t *bufptr = (wchar_t *) *to;
+ wchar_t *toptr = (wchar_t *) *to;
+ int csstr_len = *from_left;
+ int buf_len = *to_left;
+ wchar_t wch;
+ int length;
+ Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
+ CodeSet codeset;
+
+ if (num_args < 1)
+ return -1;
+
+ if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
+ return -1;
+
+ csstr_len /= codeset->length;
+ if (csstr_len < buf_len)
+ buf_len = csstr_len;
+ *to_left -= buf_len;
+
+ if (bufptr) {
+
+ toptr += buf_len;
+ *to = (XPointer) toptr;
+
+ while (buf_len--) {
+
+ wch = (wchar_t) BIT8OFF(*csptr);
+ csptr++;
+
+ length = codeset->length - 1;
+ while (length--) {
+ wch = (wch << wc_shift_bits) | BIT8OFF(*csptr);
+ csptr++;
+ }
+ *bufptr++ = wch | codeset->wc_encoding;
+ }
+ }
+ *from_left -= csptr - *from;
+ *from = (XPointer) csptr;
+
+ return 0;
+}
+
+
+static CodeSet
+wc_codeset(
+ XLCd lcd,
+ wchar_t wch)
+{
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int end = XLC_GENERIC(lcd, codeset_num);
+ Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
+
+ for (; --end >= 0; codesets++)
+ if ( widech == (*codesets)->wc_encoding )
+ return *codesets;
+
+ return NULL;
+}
+
+
+static CodeSet
+GetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset)
+{
+ CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
+ XlcCharSet *charset_list;
+ int codeset_num, num_charsets;
+
+ codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+ for ( ; codeset_num-- > 0; codeset++) {
+ num_charsets = (*codeset)->num_charsets;
+ charset_list = (*codeset)->charset_list;
+
+ for ( ; num_charsets-- > 0; charset_list++)
+ if (*charset_list == charset)
+ return *codeset;
+ }
+
+ return (CodeSet) NULL;
+}
+
+
+static XlcConv
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
+ if (conv == NULL)
+ return (XlcConv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) lcd;
+ return conv;
+}
+
+
+/*
+ * Stripped down Direct CT converters for EUC
+ *
+ */
+
+typedef struct _CTDataRec {
+ int side;
+ int length;
+ char *name;
+ Ulong wc_encoding;
+ char sshift;
+ char *ct_encoding;
+ int ct_encoding_len;
+ int set_size;
+ Uchar min_ch;
+ Uchar ct_type;
+} CTDataRec, *CTData;
+
+typedef struct _StateRec {
+ CTData GL_charset;
+ CTData GR_charset;
+ CTData charset;
+} StateRec, *State;
+
+#define CT_STD 0
+#define CT_NSTD 1
+#define CT_DIR 2
+#define CT_EXT0 3
+#define CT_EXT1 4
+#define CT_EXT2 5
+#define CT_VER 6
+
+static CTDataRec ctdata[] =
+{
+ { XlcGL, 1, "ISO8859-1:GL", 0, 0, "\033(B" , 3, 0, 0, CT_STD },
+ { XlcGR, 1, "ISO8859-1:GR", 0, 0, "\033-A" , 3, 0, 0, CT_STD },
+ { XlcGL, 1, "JISX0201.1976-0:GL", 0, 0, "\033(J" , 3, 0, 0, CT_STD },
+ { XlcGR, 1, "JISX0201.1976-0:GR", 0, 0, "\033)I" , 3, 0, 0, CT_STD },
+ { XlcGL, 2, "JISX0208.1983-0:GL", 0, 0, "\033$(B" , 4, 0, 0, CT_STD },
+ { XlcGR, 2, "JISX0208.1983-0:GR", 0, 0, "\033$)B" , 4, 0, 0, CT_STD },
+ { XlcGL, 2, "JISX0212.1990-0:GL", 0, 0, "\033$(D" , 4, 0, 0, CT_STD },
+ { XlcGR, 2, "JISX0212.1990-0:GR", 0, 0, "\033$)D" , 4, 0, 0, CT_STD },
+ { XlcUnknown, 0, "Ignore-Ext-Status?", 0, 0, "\033#" , 2, 0, 0, CT_VER },
+ { XlcUnknown, 0, "NonStd-?-OctetChar", 0, 0, "\033%/0" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 1, "NonStd-1-OctetChar", 0, 0, "\033%/1" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 2, "NonStd-2-OctetChar", 0, 0, "\033%/2" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 3, "NonStd-3-OctetChar", 0, 0, "\033%/3" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 4, "NonStd-4-OctetChar", 0, 0, "\033%/4" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 0, "Extension-2" , 0, 0, "\033%/" , 3, 0, 0, CT_EXT2 },
+ { XlcUnknown, 0, "Extension-0" , 0, 0, "\033" , 1, 0, 0, CT_EXT0 },
+ { XlcUnknown, 0, "Begin-L-to-R-Text", 0, 0, "\2331]" , 3, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "Begin-R-to-L-Text", 0, 0, "\2332]" , 3, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "End-Of-String", 0, 0, "\233]" , 2, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "Extension-1" , 0, 0, "\233" , 1, 0, 0, CT_EXT1 },
+};
+
+/* Note on above table: euc_ctstombs() and euc_ctstowcs() parser depends on
+ * certain table entries occuring in decreasing string length--
+ * 1. CT_EXT2 and CT_EXT0 entries must occur after CT_NSTD entries.
+ * 2. CT_DIR and CT_EXT1 entries must occur after CT_DIR entries.
+ */
+
+static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
+static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
+
+#define Ascii 0
+#define Kanji 1
+#define Kana 2
+#define Userdef 3
+
+/*
+ * initCTptr(): Set ctdptr[] to point at ctdata[], indexed by codeset_num.
+ */
+static void
+initCTptr(
+ XLCd lcd)
+{
+ int num_codesets = XLC_GENERIC(lcd, codeset_num);
+ int num_charsets;
+ int i, j;
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ CodeSet codeset;
+ XlcCharSet charset;
+ CTData ctdp = ctdata;
+
+ ctdptr[Ascii] = &ctdata[0]; /* failsafe */
+
+ for (i = 0; i < num_codesets; i++) {
+
+ codeset = codesets[i];
+ num_charsets = codeset->num_charsets;
+
+ for (j = 0; j < num_charsets; j++) {
+
+ charset = codeset->charset_list[j];
+
+ for (ctdp = ctdata; ctdp <= ctd_endp; ctdp++)
+
+ if (! strcmp(ctdp->name, charset->name)) {
+
+ ctdptr[codeset->cs_num] = ctdp;
+
+ ctdptr[codeset->cs_num]->wc_encoding = codeset->wc_encoding;
+
+ ctdptr[codeset->cs_num]->set_size =
+ charset->set_size;
+
+ ctdptr[codeset->cs_num]->min_ch =
+ charset->set_size == 94 &&
+ (ctdptr[codeset->cs_num]->length > 1 ||
+ ctdptr[codeset->cs_num]->side == XlcGR) ? 0x21 : 0x20;
+
+ if (codeset->parse_info) {
+ ctdptr[codeset->cs_num]->sshift =
+ *codeset->parse_info->encoding;
+ }
+
+ break;
+ }
+ }
+ }
+}
+
+
+#define SKIP_I(str) while (*(str) >= 0x20 && *(str) <= 0x2f) (str)++;
+#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
+
+static int
+euc_ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
+ const char *inbufptr = *from;
+ const char *inbuf_base;
+ wchar_t *outbufptr = (wchar_t *) *to;
+ wchar_t *outbuf_base = outbufptr;
+ int clen, length;
+ int unconv_num = 0;
+ unsigned int ct_seglen = 0;
+ Uchar ct_type = 0;
+ int shift_mult;
+ wchar_t wc_tmp;
+ wchar_t wch;
+ Ulong wc_encoding;
+ CTData ctdp = ctdata;
+ CTData GL_ctdp = ctdp; /* GL ctdp save */
+ CTData GR_ctdp = ctdp; /* GR ctdp save */
+ Bool save_outbuf = True;
+ /* If outbufptr is NULL, doen't save output, but just counts
+ a length to hold the output */
+ if (outbufptr == NULL) save_outbuf = False;
+
+ for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length)
+ {
+ ct_type = CT_STD;
+ /* change GL/GR charset */
+ if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+ /* select GL side */
+ ctdp = GL_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+ /* select GR side */
+ ctdp = GR_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }
+ if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
+ for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
+
+ if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
+ {
+ inbufptr += ctdp->ct_encoding_len;
+ (*from_left) -= ctdp->ct_encoding_len;
+ if (ctdp->length) {
+ length = ctdp->length;
+ if( *from_left < length ) {
+ *to = (XPointer)outbufptr;
+ *to_left -= outbufptr - outbuf_base;
+ return( unconv_num + *from_left );
+ }
+ }
+ ct_type = ctdp->ct_type;
+ if(ctdp->side == XlcGL){
+ GL_ctdp = ctdp; /* save GL ctdp */
+ }else{
+ GR_ctdp = ctdp; /* save GR ctdp */
+ }
+ break;
+ }
+ }
+ if (ctdp > ctd_endp) /* failed to match CT sequence */
+ unconv_num++;
+ }
+
+/* The following code insures that non-standard encodings, direction, extension,
+ * and version strings are ignored; subject to change in future.
+ */
+ switch (ct_type) {
+ case CT_STD:
+ break;
+ case CT_EXT2:
+ inbufptr++;
+ (*from_left)--;
+ case CT_NSTD:
+ ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
+ inbufptr += ct_seglen;
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT0:
+ inbuf_base = inbufptr;
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ *(from_left) -= ct_seglen;
+ continue;
+ case CT_EXT1:
+ inbuf_base = inbufptr;
+ SKIP_P(inbufptr);
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ *(from_left) -= ct_seglen;
+ continue;
+ case CT_DIR:
+ continue;
+ case CT_VER:
+ inbufptr += 2;
+ *(from_left) -= 2;
+ continue;
+ }
+
+ wc_encoding = (ctdp == ctdptr[Kana] && isleftside(*inbufptr)) ?
+ ctdptr[Ascii]->wc_encoding: ctdp->wc_encoding;
+
+ shift_mult = length - 1;
+ wch = (wchar_t)0;
+ clen = length;
+
+ do {
+ wc_tmp = BIT8OFF(*inbufptr++) << (wc_shift_bits * shift_mult);
+ wch |= wc_tmp;
+ shift_mult--;
+ } while (--clen);
+
+ if (save_outbuf == True)
+ *outbufptr++ = wch | wc_encoding;
+ if (--*to_left == 0 && *from_left != length) {
+ *to = (XPointer)outbufptr;
+ unconv_num = *from_left;
+ return unconv_num;
+ }
+ }
+
+ *to = (XPointer)outbufptr;
+
+ return unconv_num;
+
+}
+
+
+#define byte1 (length == codeset->length - 1)
+#define byte2 (byte1 == 0)
+#define kanji (codeset->cs_num == 1)
+#define kana (codeset->cs_num == 2)
+#define userdef (codeset->cs_num == 3)
+
+static int
+euc_wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ int ct_len = *to_left;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *ctptr = *to;
+ XPointer ct_base = ctptr;
+ wchar_t wch;
+ int length;
+ int unconv_num = 0;
+ Uchar tmp;
+ Uchar t1 = 0;
+ int num_conv;
+
+ StateRec ct_state;
+ XLCd lcd = (XLCd)conv->state;
+ CTData charset;
+ CodeSet codeset;
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+/* Initial State: */
+ ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
+ ct_state.GR_charset = NULL;
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (; *from_left > 0 ; (*from_left)-- ) {
+
+ wch = *inbufptr++;
+
+ if (!(codeset = wc_codeset(lcd, wch))) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+
+ charset = ctdptr[codeset->cs_num];
+
+ length = codeset->length;
+ wch ^= (wchar_t)codeset->wc_encoding;
+
+ if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
+ (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
+
+ ct_len -= ctdptr[codeset->cs_num]->ct_encoding_len;
+
+ if (ct_len < 0) {
+ unconv_num++;
+ break;
+ }
+
+ if (ctptr) {
+ strcpy(ctptr, ctdptr[codeset->cs_num]->ct_encoding);
+ ctptr += ctdptr[codeset->cs_num]->ct_encoding_len;
+ }
+ }
+
+ if (charset->side == XlcGR) {
+ ct_state.GR_charset = charset;
+ ct_state.GL_charset = NULL;
+ } else if (charset->side == XlcGL) {
+ ct_state.GL_charset = charset;
+ ct_state.GR_charset = NULL;
+ }
+
+ do {
+
+ length--;
+ tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
+
+ if (kana) {
+ if (BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+ *ctptr++ = (char)BIT8ON(tmp);
+ }
+
+ else if (byte1 && (kanji || userdef))
+ t1 = tmp;
+
+ else if (byte2 && (kanji || userdef)) {
+ if (BADCHAR(charset->min_ch, (char)t1) ||
+ BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+ if (charset->side == XlcGR) {
+ *ctptr++ = (char)BIT8ON(t1);
+ *ctptr++ = (char)BIT8ON(tmp);
+ } else {
+ *ctptr++ = (char)BIT8OFF(t1);
+ *ctptr++ = (char)BIT8OFF(tmp);
+ }
+ }
+
+ else {
+ if (BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+ *ctptr++ = (char)tmp;
+ }
+
+
+ } while (length);
+
+ } /* end for */
+
+ *to = (XPointer)ctptr;
+
+ if ((num_conv = (int)(ctptr - ct_base)) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+}
+#undef byte1
+#undef byte2
+#undef kana
+#undef kanji
+#undef userdef
+
+
+#define byte1 (ctdp->length == clen)
+#define kana (ctdp == ctdptr[Kana] && isrightside(*inbufptr))
+/* #define kanji (ctdp == ctdptr[Kanji]) */
+#define kanji (strstr(ctdp->name, "JISX0208"))
+#define userdef (ctdp == ctdptr[Userdef])
+
+static int
+euc_ctstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ char *inbufptr = *from;
+ XPointer outbufptr = *to;
+ const char *inbuf_base;
+ XPointer outbuf_base = outbufptr;
+ int clen, length;
+ int unconv_num = 0;
+ unsigned int ct_seglen = 0;
+ Uchar ct_type = 0;
+ CTData ctdp = &ctdata[0]; /* default */
+ CTData GL_ctdp = ctdp; /* GL ctdp save */
+ CTData GR_ctdp = ctdp; /* GR ctdp save */
+ Bool save_outbuf = True;
+ /* If outbufptr is NULL, doen't save output, but just counts
+ a length to hold the output */
+ if (outbufptr == NULL) save_outbuf = False;
+
+ for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length)
+ {
+ ct_type = CT_STD;
+ /* change GL/GR charset */
+ if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+ /* select GL side */
+ ctdp = GL_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+ /* select GR side */
+ ctdp = GR_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }
+ if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
+
+ for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
+
+ if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
+ {
+ inbufptr += ctdp->ct_encoding_len;
+ (*from_left) -= ctdp->ct_encoding_len;
+ if (ctdp->length) {
+ length = ctdp->length;
+ if( *from_left < length ) {
+ *to = (XPointer)outbufptr;
+ *to_left -= outbufptr - outbuf_base;
+ return( unconv_num + *from_left );
+ }
+ }
+ ct_type = ctdp->ct_type;
+ if(ctdp->side == XlcGL){
+ GL_ctdp = ctdp; /* save GL ctdp */
+ }else{
+ GR_ctdp = ctdp; /* save GR ctdp */
+ }
+ break;
+ }
+ }
+ if (ctdp > ctd_endp) /* failed to match CT sequence */
+ unconv_num++;
+ }
+
+/* The following code insures that non-standard encodings, direction, extension,
+ * and version strings are ignored; subject to change in future.
+ */
+ switch (ct_type) {
+ case CT_STD:
+ break;
+ case CT_EXT2:
+ inbufptr++;
+ (*from_left)--;
+ case CT_NSTD:
+ ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
+ inbufptr += ct_seglen;
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT0:
+ inbuf_base = inbufptr;
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ *(from_left) -= ct_seglen;
+ continue;
+ case CT_EXT1:
+ inbuf_base = inbufptr;
+ SKIP_P(inbufptr);
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ *(from_left) -= ct_seglen;
+ continue;
+ case CT_DIR:
+ continue;
+ case CT_VER:
+ inbufptr += 2;
+ *(from_left) -= 2;
+ continue;
+ }
+
+ clen = length;
+ do {
+
+ if (byte1) {
+ if (kanji) {
+ /* FIXME: assignment of read-only location */
+ *inbufptr = BIT8ON(*inbufptr);
+ *(inbufptr+1) = BIT8ON(*(inbufptr+1));
+ }
+ else if (kana || userdef) {
+ if (save_outbuf == True) {
+ *outbufptr++ = ctdp->sshift;
+ }
+ (*to_left)--;
+ }
+ }
+ if (save_outbuf == True) {
+ *outbufptr++ = *inbufptr;
+ }
+ (*to_left)--;
+ inbufptr++;
+
+ if (*to_left == 0 && *from_left != length) {
+ *to = (XPointer)outbufptr;
+ unconv_num = *from_left;
+ return unconv_num;
+ }
+ } while (--clen);
+ }
+
+ *to = outbufptr;
+
+ return unconv_num;
+
+}
+#undef byte1
+#undef kana
+#undef kanji
+#undef userdef
+
+
+static int
+euc_mbstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ int ct_len = *to_left;
+ int cs_num;
+ int clen, length = 0;
+ int unconv_num = 0;
+ int num_conv;
+ const char *inbufptr = *from;
+ char *ctptr = *to;
+ XPointer ct_base = ctptr;
+
+ StateRec ct_state;
+ CTData charset;
+ XLCd lcd = (XLCd) conv->state;
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+/* Initial State: */
+ ct_state.GL_charset = NULL;
+ ct_state.GR_charset = NULL;
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (;*from_left > 0; (*from_left) -= length) {
+
+ if (isleftside(*inbufptr)) { /* 7-bit (CS0) */
+ if (ASCII_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Ascii;
+ charset = ctdptr[Ascii];
+ }
+ else if ((Uchar)*inbufptr == SS2) { /* Kana */
+ if (KANA_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Kana;
+ charset = ctdptr[Kana];
+ inbufptr++;
+ (*from_left)--;
+ }
+ else if ((Uchar)*inbufptr == SS3) { /* Userdef */
+ if (USERDEF_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Userdef;
+ charset = ctdptr[Userdef];
+ inbufptr++;
+ (*from_left)--;
+ }
+ else {
+ if (KANJI_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Kanji;
+ charset = ctdptr[Kanji];
+ }
+
+ length = charset->length;
+
+ if (BADCHAR(charset->min_ch, *inbufptr))
+ continue;
+
+ if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
+ (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
+
+ ct_len -= ctdptr[cs_num]->ct_encoding_len;
+ if (ct_len < 0) {
+ unconv_num++;
+ break;
+ }
+
+ if (ctptr) {
+ strcpy(ctptr, ctdptr[cs_num]->ct_encoding);
+ ctptr += ctdptr[cs_num]->ct_encoding_len;
+ }
+ }
+
+ if (charset->side == XlcGR) {
+ ct_state.GR_charset = charset;
+ ct_state.GL_charset = NULL;
+ } else if (charset->side == XlcGL) {
+ ct_state.GL_charset = charset;
+ ct_state.GR_charset = NULL;
+ }
+
+ clen = length;
+
+ do {
+ *ctptr++ = charset == ct_state.GR_charset ?
+ BIT8ON(*inbufptr++) : BIT8OFF(*inbufptr++);
+ } while (--clen);
+ }
+
+ *to = (XPointer)ctptr;
+
+ if ((num_conv = (int)(ctptr - ct_base)) > 0)
+ (*to_left) -= num_conv;
+ return unconv_num;
+
+}
+
+
+static void
+close_converter(
+ XlcConv conv)
+{
+ Xfree((char *) conv);
+}
+
+enum { MBSTOCS, WCSTOCS, MBTOCS, CSTOMBS, CSTOWCS, MBSTOWCS, WCSTOMBS,
+ CTSTOWCS, CTSTOMBS, WCSTOCTS, MBSTOCTS };
+
+static XlcConvMethodsRec conv_methods[] = {
+ {close_converter, euc_mbstocs, NULL },
+ {close_converter, euc_wcstocs, NULL },
+ {close_converter, euc_mbtocs, NULL },
+ {close_converter, euc_cstombs, NULL },
+ {close_converter, euc_cstowcs, NULL },
+ {close_converter, euc_mbstowcs, NULL },
+ {close_converter, euc_wcstombs, NULL },
+ {close_converter, euc_ctstowcs, NULL },
+ {close_converter, euc_ctstombs, NULL },
+ {close_converter, euc_wcstocts, NULL },
+ {close_converter, euc_mbstocts, NULL },
+};
+
+
+static XlcConv
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOCS]);
+}
+
+static XlcConv
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOCS]);
+}
+
+static XlcConv
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBTOCS]);
+}
+
+static XlcConv
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CSTOMBS]);
+}
+
+static XlcConv
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CSTOWCS]);
+}
+
+static XlcConv
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
+}
+
+static XlcConv
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
+}
+
+static XlcConv
+open_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
+}
+
+static XlcConv
+open_ctstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
+}
+
+static XlcConv
+open_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
+}
+
+static XlcConv
+open_mbstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
+}
+
+XLCd
+_XlcEucLoader(
+ const char *name)
+{
+ XLCd lcd;
+
+ lcd = _XlcCreateLC(name, _XlcGenericMethods);
+ if (lcd == NULL)
+ return lcd;
+
+ if (!XLC_PUBLIC_PART(lcd)->codeset ||
+ (_XlcNCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "euc", 3))) {
+ _XlcDestroyLC(lcd);
+ return (XLCd) NULL;
+ }
+
+ initCTptr(lcd);
+
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
+
+#ifndef FORCE_INDIRECT_CONVERTER
+ _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs);
+ _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstocts);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
+#endif
+
+ _XlcAddUtf8Converters(lcd);
+
+ return lcd;
+}
+
+#else
+typedef int dummy;
+#endif /* X_LOCALE */
diff --git a/libX11/modules/lc/xlocale/lcSjis.c b/libX11/modules/lc/xlocale/lcSjis.c
index 74dd033ec..a7a9bbc4f 100644
--- a/libX11/modules/lc/xlocale/lcSjis.c
+++ b/libX11/modules/lc/xlocale/lcSjis.c
@@ -1,1612 +1,1612 @@
-/****************************************************************
-
- Copyright 1992, 1993 by FUJITSU LIMITED
- Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
- Copyright 1994 by Sony Corporation
-
-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 FUJITSU LIMITED,
-Fujitsu Open Systems Solutions, Inc. and Sony Corporation not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-FUJITSU LIMITED, Fujitsu Open Systems Solutions, Inc. and
-Sony Corporation make no representations about the suitability of
-this software for any purpose. It is provided "as is" without
-express or implied warranty.
-
-FUJITSU LIMITED, FUJITSU OPEN SYSTEMS SOLUTIONS, INC. AND SONY
-CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
-IN NO EVENT SHALL FUJITSU OPEN SYSTEMS SOLUTIONS, INC., FUJITSU LIMITED
-AND SONY CORPORATION 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.
-
- Authors: Jeffrey Bloomfield (jeffb@ossi.com)
- Shigeru Yamada (yamada@ossi.com)
- Yoshiyuki Segawa (segawa@ossi.com)
- Modifier:Makoto Wakamatsu Sony Corporation
- makoto@sm.sony.co.jp
-
-*****************************************************************/
-
-/*
- * A Japanese SJIS locale.
- * Supports: all locales with codeset SJIS.
- * How: Provides converters for SJIS.
- * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
- */
-
-#ifdef X_LOCALE
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcGeneric.h"
-
-#include <ctype.h>
-#ifdef WIN32
-#define isascii __isascii
-#endif
-
-#define CS0 codesets[0] /* Codeset 0 - 7-bit ASCII */
-#define CS1 codesets[1] /* Codeset 1 - Kanji */
-#define CS2 codesets[2] /* Codeset 2 - Half-Kana */
-#define CS3 codesets[3] /* Codeset 3 - User defined */
-
-#define ascii (codeset->cs_num == 0)
-#define kanji (codeset->cs_num == 1)
-#define kana (codeset->cs_num == 2)
-#define userdef (codeset->cs_num == 3)
-
-#define ASCII_CODESET 0
-#define KANJI_CODESET 1
-#define KANA_CODESET 2
-#define USERDEF_CODESET 3
-#define MAX_CODESETS 4
-
-#define GR 0x80 /* begins right-side (non-ascii) region */
-#define GL 0x7f /* ends left-side (ascii) region */
-
-#define isleftside(c) (((c) & GR) ? 0 : 1)
-#define isrightside(c) (!isleftside(c))
-
-typedef unsigned char Uchar;
-typedef unsigned long Ulong;
-typedef unsigned int Uint;
-
-/* Acceptable range for 2nd byte of SJIS multibyte char */
-#define VALID_MULTIBYTE(c) \
- ((0x40<=((Uchar)c) && ((Uchar)c)<=0x7e) \
- || (0x80<=((Uchar)c) && ((Uchar)c)<=0xfc))
-
-#ifndef iskanji
-#define iskanji(c) ((0x81<=((Uchar)c) && ((Uchar)c)<=0x9f) \
- || (0xe0<=((Uchar)c) && ((Uchar)c)<=0xef))
-#endif /* !iskanji */
-
-#ifndef iskana
-#define iskana(c) (0xa1<=((Uchar)c) && ((Uchar)c)<=0xdf)
-#endif /* !iskana */
-
-#define isuserdef(c) (0xf0<=((Uchar)c) && ((Uchar)c)<=0xfc)
-
-#define BIT8OFF(c) ((c) & GL)
-#define BIT8ON(c) ((c) | GR)
-
-
-static void jis_to_sjis (Uchar *p1, Uchar *p2);
-static void sjis_to_jis (Uchar *p1, Uchar *p2);
-static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
-
-
-/*
- * Notes:
- * 1. 16-bit widechar format is limited to 14 data bits. Since the 2nd byte
- * of SJIS multibyte chars are in the ranges of 0x40 - 7E and 0x80 - 0xFC,
- * SJIS cannot map directly into 16 bit widechar format within the confines
- * of a single codeset. Therefore, for SJIS widechar conversion, SJIS Kanji
- * is mapped into the JIS codeset. (The algorithms used in jis_to_sjis()
- * and sjis_to_jis() are from Ken Lunde (lunde@mv.us.adobe.com) and are in
- * the public domain.)
- * 2. Defining FORCE_INDIRECT_CONVERTER (see _XlcEucLoader())
- * forces indirect (charset) conversions (e.g. wcstocs()<->cstombs()).
- * 3. Using direct converters (e.g. mbstowcs()) decreases conversion
- * times by 20-40% (depends on specific converter used).
- */
-
-
-static int
-sjis_mbstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
-
- XLCd lcd = (XLCd)conv->state;
-
- int chr_len = 0;
- int shift_mult = 0;
- Uint chrcode = 0;
-
- Uchar ch, ch2;
- Uint wc_encode = 0;
- Uint wc_tmp = 0;
-
- Bool new_char;
-
- int firstbyte;
- int length = 0;
- int num_conv;
- int unconv_num = 0;
-
- const char *inbufptr = *from;
- wchar_t *outbufptr = (wchar_t *) *to;
- wchar_t *outbuf_base = outbufptr;
-
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (new_char = True, firstbyte = True; *from_left > 0; (*from_left)--) {
-
- ch = *inbufptr++;
-
- if (firstbyte) {
- if (ASCII_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- if (isascii(ch)) {
- length = CS0->length;
- *outbufptr++ = (wchar_t)ch;
- continue;
- }
- else if (iskanji(ch)) {
- if (KANJI_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- firstbyte = False;
- length = CS1->length;
- if (*from_left < length || *to_left < length)
- return -1;
- wc_encode = CS1->wc_encoding;
- ch2 = *inbufptr;
- sjis_to_jis(&ch, &ch2);
- chrcode = ch;
- }
- else if (iskana(ch)) {
- if (KANA_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- length = CS2->length;
- wc_encode = CS2->wc_encoding;
- chrcode = BIT8OFF(ch);
- }
- else if (isuserdef(ch)) {
- if (USERDEF_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- firstbyte = False;
- length = CS3->length;
- if (*from_left < length || *to_left < length)
- return -1;
- wc_encode = CS3->wc_encoding;
- ch2 = *inbufptr;
- sjis_to_jis(&ch, &ch2);
- chrcode = ch;
- }
- else /* unknown */ {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- } else { /* 2nd byte of multibyte char */
- if (!VALID_MULTIBYTE((Uchar) *(inbufptr-1))) {
- unconv_num++;
- firstbyte = True;
- }
- chrcode = ch2;
- }
-
- if (new_char) {
- chr_len = length;
- shift_mult = length - 1;
- new_char = False;
- }
-
- chrcode <<= (wc_shift * shift_mult);
- shift_mult--;
- wc_tmp |= chrcode;
- if (--chr_len == 0) {
- wc_tmp |= wc_encode;
- *outbufptr++ = wc_tmp;
-
- firstbyte = True;
- new_char = True;
- wc_tmp = (Uint)0;
- }
-
- } /* end for */
-
- *to = (XPointer)outbufptr;
-
- if ((num_conv = outbufptr - outbuf_base) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-}
-
-
-#define byte1 (length == codeset->length - 1)
-#define byte2 (byte1 == 0)
-
-static int
-sjis_wcstombs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- const wchar_t *inbufptr = (const wchar_t *) *from;
- XPointer outbufptr = *to;
- XPointer outbuf_base = outbufptr;
- wchar_t wch;
- int length;
- Uchar tmp;
- Uchar t1, t2;
- int num_conv;
- int unconv_num = 0;
-
- XLCd lcd = (XLCd)conv->state;
- CodeSet codeset;
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (; *from_left > 0 ; (*from_left)-- ) {
-
- wch = *inbufptr++;
-
- if (!(codeset = wc_codeset(lcd, wch))) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
-
- length = codeset->length;
- wch ^= (wchar_t)codeset->wc_encoding;
-
- do {
- length--;
- tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
-
- if (kana)
- tmp = BIT8ON(tmp);
-
- else if (byte1 && (kanji || userdef)) {
- t1 = BIT8OFF(tmp);
- continue;
- }
-
- else if (byte2 && (kanji || userdef)) {
- t2 = BIT8OFF(tmp);
- jis_to_sjis(&t1, &t2);
- *outbufptr++ = (char)t1;
- tmp = t2;
- }
-
- *outbufptr++ = (char)tmp;
- } while (length);
-
- } /* end for */
-
- *to = (XPointer)outbufptr;
-
- if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-}
-#undef byte1
-#undef byte2
-
-/*
- * sjis<->jis conversion for widechar kanji (See Note at top of file)
- */
-static void
-sjis_to_jis(
- Uchar *p1,
- Uchar *p2)
-{
- Uchar c1 = *p1;
- Uchar c2 = *p2;
- Uchar adjust = c2 < 0x9f;
- Uchar rowOffset = c1 < 0xa0 ? 0x70 : 0xb0;
- Uchar cellOffset = adjust ? (0x1f + (c2 > 0x7f)) : 0x7e;
-
- *p1 = ((c1 - rowOffset) << 1) - adjust;
- *p2 -= cellOffset;
-}
-
-static void
-jis_to_sjis(
- Uchar *p1,
- Uchar *p2)
-{
- Uchar c1 = *p1;
- Uchar c2 = *p2;
- Uchar rowOffset = c1 < 0x5f ? 0x70 : 0xb0;
- Uchar cellOffset = c1 % 2 ? 0x1f + (c2 > 0x5f) : 0x7e;
-
- *p1 = ((Uchar)(c1 + 1) >> 1) + rowOffset;
- *p2 = c2 + cellOffset;
-}
-
-static CodeSet
-wc_codeset(
- XLCd lcd,
- wchar_t wch)
-{
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
-#if !defined(__sony_news) || defined(SVR4)
- int end = XLC_GENERIC(lcd, codeset_num);
- Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
-
- for (; --end >= 0; codesets++)
- if ( widech == (*codesets)->wc_encoding )
- return *codesets;
-
- return NULL;
-#else
- if( iskanji(wch >> 8) )
- return( codesets[1] );
- if( iskana(wch & 0xff) )
- return( codesets[2] );
- return( codesets[0] );
-#endif
-}
-
-
-static int
-sjis_mbtocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- XlcCharSet charset = NULL;
- int char_size = 0;
- int unconv_num = 0;
- const char *src = *from;
- char *dst = *to;
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
- if (iskanji(*src)) {
- if (KANJI_CODESET >= codeset_num)
- return -1;
- charset = *CS1->charset_list;
- char_size = charset->char_size;
-
- if (*from_left >= char_size && *to_left >= char_size) {
- *dst++ = *src++;
- *dst++ = *src++;
- if (!VALID_MULTIBYTE((Uchar) *(src-1))) /* check 2nd byte */
- unconv_num++;
- sjis_to_jis((Uchar *)(dst-2), (Uchar *)(dst-1));
- } else
- return -1;
- }
- else if (isuserdef(*src)) {
- if (USERDEF_CODESET >= codeset_num)
- return -1;
- charset = *CS3->charset_list;
- char_size = charset->char_size;
-
- if (*from_left >= char_size && *to_left >= char_size) {
- *dst++ = *src++;
- *dst++ = *src++;
- if (!VALID_MULTIBYTE((Uchar) *(src-1))) /* check 2nd byte */
- unconv_num++;
- sjis_to_jis((Uchar *)(dst-2), (Uchar *)(dst-1));
- } else
- return -1;
- }
- else if (isascii(*src)) {
- if (ASCII_CODESET >= codeset_num)
- return -1;
- charset = *CS0->charset_list;
- char_size = charset->char_size;
-
- if (*from_left >= char_size && *to_left >= char_size)
- *dst++ = *src++;
- else
- return -1;
- }
- else if (iskana(*src)) {
- if (KANA_CODESET >= codeset_num)
- return -1;
- charset = *CS2->charset_list;
- char_size = charset->char_size;
-
- if (*from_left >= char_size && *to_left >= char_size)
- *dst++ = *src++;
- else
- return -1;
- }
- else /* unknown */
- return -1;
-
- *from_left -= char_size;
- *to_left -= char_size;
-
- *to = (XPointer) dst;
- *from = (XPointer) src;
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = charset;
-
- return unconv_num;
-}
-
-
-static int
-sjis_mbstocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- const char *tmp_from;
- char *tmp_to;
- int tmp_from_left, tmp_to_left;
- XlcCharSet charset, tmp_charset;
- XPointer tmp_args[1];
- int unconv_num = 0, ret;
-
-/* Determine the charset of the segment and convert one character: */
-
- tmp_args[0] = (XPointer) &charset; /* charset from sjis_mbtocs() */
- while
- ((ret = sjis_mbtocs(conv, from, from_left, to, to_left, tmp_args, 1)) > 0)
- unconv_num += ret;
- if ( ret < 0 )
- return ret;
-
- tmp_from = *from;
- tmp_from_left = *from_left;
- tmp_to_left = *to_left;
- tmp_to = *to;
-
-/* Convert remainder of the segment: */
-
- tmp_args[0] = (XPointer) &tmp_charset;
- while( (ret = sjis_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
- (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
-
- if (ret > 0) {
- unconv_num += ret;
- continue;
- }
-
- if (tmp_charset != charset) /* quit on end of segment */
- break;
-
- *from = (XPointer) tmp_from;
- *from_left = tmp_from_left;
- *to = (XPointer) tmp_to;
- *to_left = tmp_to_left;
- }
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = charset;
-
- return unconv_num;
-}
-
-static int
-sjis_wcstocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd) conv->state;
- const wchar_t *wcptr = *((const wchar_t **)from);
- char *bufptr = *((char **) to);
- wchar_t wch;
- char *tmpptr;
- int length;
- CodeSet codeset;
- Ulong wc_encoding;
- int buf_len = *to_left;
- int wcstr_len = *from_left;
-
- if (!(codeset = wc_codeset(lcd, *wcptr)))
- return -1;
-
- if (wcstr_len < buf_len / codeset->length)
- buf_len = wcstr_len * codeset->length;
-
-#if !defined(__sony_news) || defined(SVR4)
- wc_encoding = codeset->wc_encoding;
-
- for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) {
- wch = *wcptr;
-
- if ((wch & XLC_GENERIC(lcd, wc_encode_mask)) != wc_encoding)
- break;
-
- length = codeset->length;
-
- buf_len -= length;
- bufptr += length;
- tmpptr = bufptr - 1;
-
- while (length--) {
- *tmpptr-- = kana ? BIT8ON(wch) : BIT8OFF(wch);
- wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
- }
- }
-#else
- length = codeset->length;
- for( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len-- ) {
- wch = *wcptr;
- if( codeset != wc_codeset( lcd, wch ) )
- break;
-
- buf_len -= length;
- if( length == 2 ) {
- unsigned short code;
-
- code = sjis2jis( wch & 0xffff );
- *bufptr++ = code >> 8;
- *bufptr++ = code & 0xff;
- }
- else
- *bufptr++ = wch & 0xff;
- }
-#endif
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = *codeset->charset_list;
-
- *from_left -= wcptr - (wchar_t *) *from;
- *from = (XPointer) wcptr;
-
- *to_left -= bufptr - *to;
- *to = bufptr;
-
- return 0;
-}
-
-static CodeSet
-GetCodeSetFromCharSet(
- XLCd lcd,
- XlcCharSet charset)
-{
- CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
- XlcCharSet *charset_list;
- int codeset_num, num_charsets;
-
- codeset_num = XLC_GENERIC(lcd, codeset_num);
-
- for ( ; codeset_num-- > 0; codeset++) {
- num_charsets = (*codeset)->num_charsets;
- charset_list = (*codeset)->charset_list;
-
- for ( ; num_charsets-- > 0; charset_list++)
- if (*charset_list == charset)
- return *codeset;
- }
-
- return (CodeSet) NULL;
-}
-
-
-static int
-sjis_cstombs(
- XlcConv conv,
- char **from,
- int *from_left,
- char **to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd) conv->state;
- const char *csptr = *from;
- char *bufptr = *to;
- int csstr_len = *from_left;
- int buf_len = *to_left;
- int length;
- CodeSet codeset;
- int cvt_length = 0;
-
- if (num_args < 1)
- return -1;
-
- if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
- return -1;
-
- csstr_len /= codeset->length;
- buf_len /= codeset->length;
- if (csstr_len < buf_len)
- buf_len = csstr_len;
-
- cvt_length += buf_len * codeset->length;
-
- if (bufptr) {
- while (buf_len--) {
- length = codeset->length;
- while (length--)
- *bufptr++ = codeset->length == 1 && codeset->side == XlcGR ?
- BIT8ON(*csptr++) : BIT8OFF(*csptr++);
-
- if (codeset->length == 2)
- jis_to_sjis((Uchar *)(bufptr-2), (Uchar *)(bufptr-1));
- }
- }
-
- *from_left -= csptr - *from;
- *from = (XPointer) csptr;
-
- if (bufptr)
- *to += cvt_length;
- *to_left -= cvt_length;
-
-
- return 0;
-}
-
-static int
-sjis_cstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd) conv->state;
- const char *csptr = (const char *) *from;
- wchar_t *bufptr = (wchar_t *) *to;
- wchar_t *toptr = (wchar_t *) *to;
- int csstr_len = *from_left;
- int buf_len = *to_left;
- wchar_t wch;
- int length;
- Ulong wc_shift_bits = (int)XLC_GENERIC(lcd, wc_shift_bits);
- CodeSet codeset;
-
- if (num_args < 1)
- return -1;
-
- if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
- return -1;
-
- csstr_len /= codeset->length;
- if (csstr_len < buf_len)
- buf_len = csstr_len;
-
- *to_left -= buf_len;
-
- if (bufptr) {
-
- toptr += buf_len;
- *to = (XPointer) toptr;
-
- while (buf_len--) {
- wch = (wchar_t) BIT8OFF(*csptr);
- csptr++;
-
- length = codeset->length - 1;
- while (length--) {
- wch = (wch << wc_shift_bits) | BIT8OFF(*csptr);
- csptr++;
- }
- *bufptr++ = wch | codeset->wc_encoding;
- }
- }
-
- *from_left -= csptr - *from;
- *from = (XPointer) csptr;
-
- return 0;
-}
-
-
-/*
- * Stripped down Direct CT converters for SJIS
- *
- */
-
-#define BADCHAR(min_ch, c) (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
- BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
- BIT8OFF(c) != 0x1b)
-
-typedef struct _CTDataRec {
- int side;
- int length;
- char *name;
- Ulong wc_encoding;
- char *ct_encoding;
- int ct_encoding_len;
- int set_size;
- Uchar min_ch;
- Uchar ct_type;
-} CTDataRec, *CTData;
-
-typedef struct _StateRec {
- CTData GL_charset;
- CTData GR_charset;
- CTData charset;
-} StateRec, *State;
-
-#define CT_STD 0
-#define CT_NSTD 1
-#define CT_DIR 2
-#define CT_EXT0 3
-#define CT_EXT1 4
-#define CT_EXT2 5
-#define CT_VER 6
-
-static CTDataRec ctdata[] =
-{
- { XlcGL, 1, "ISO8859-1:GL", 0, "\033(B" , 3, 0, 0, CT_STD },
- { XlcGR, 1, "ISO8859-1:GR", 0, "\033-A" , 3, 0, 0, CT_STD },
- { XlcGL, 1, "JISX0201.1976-0:GL", 0, "\033(J" , 3, 0, 0, CT_STD },
- { XlcGR, 1, "JISX0201.1976-0:GR", 0, "\033)I" , 3, 0, 0, CT_STD },
- { XlcGL, 2, "JISX0208.1983-0:GL", 0, "\033$(B" , 4, 0, 0, CT_STD },
- { XlcGR, 2, "JISX0208.1983-0:GR", 0, "\033$)B" , 4, 0, 0, CT_STD },
- { XlcGL, 2, "JISX0212.1990-0:GL", 0, "\033$(D" , 4, 0, 0, CT_STD },
- { XlcGR, 2, "JISX0212.1990-0:GR", 0, "\033$)D" , 4, 0, 0, CT_STD },
- { XlcUnknown, 0, "Ignore-Ext-Status?", 0, "\033#" , 2, 0, 0, CT_VER },
- { XlcUnknown, 0, "NonStd-?-OctetChar", 0, "\033%/0" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 1, "NonStd-1-OctetChar", 0, "\033%/1" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 2, "NonStd-2-OctetChar", 0, "\033%/2" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 3, "NonStd-3-OctetChar", 0, "\033%/3" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 4, "NonStd-4-OctetChar", 0, "\033%/4" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 0, "Extension-2" , 0, "\033%/" , 3, 0, 0, CT_EXT2 },
- { XlcUnknown, 0, "Extension-0" , 0, "\033" , 1, 0, 0, CT_EXT0 },
- { XlcUnknown, 0, "Begin-L-to-R-Text", 0, "\2331]" , 3, 0, 0, CT_DIR },
- { XlcUnknown, 0, "Begin-R-to-L-Text", 0, "\2332]" , 3, 0, 0, CT_DIR },
- { XlcUnknown, 0, "End-Of-String", 0, "\233]" , 2, 0, 0, CT_DIR },
- { XlcUnknown, 0, "Extension-1" , 0, "\233" , 1, 0, 0, CT_EXT1 },
-};
-
-/* Note on above table: sjis_ctstombs() and sjis_ctstowcs() parser depends on
- * certain table entries occuring in decreasing string length--
- * 1. CT_EXT2 and CT_EXT0 entries must occur after CT_NSTD entries.
- * 2. CT_DIR and CT_EXT1 entries must occur after CT_DIR entries.
- */
-
-static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
-static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
-
-#define Ascii 0
-#define Kanji 1
-#define Kana 2
-#define Userdef 3
-
-/*
- * initCTptr(): Set ctptr[] to point at ctdata[], indexed by codeset_num.
- */
-static void
-initCTptr(
- XLCd lcd)
-{
- int num_codesets = XLC_GENERIC(lcd, codeset_num);
- int num_charsets;
- int i, j;
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- CodeSet codeset;
- XlcCharSet charset;
- CTData ctdp = ctdata;
-
- ctdptr[Ascii] = &ctdata[0]; /* failsafe */
-
- for (i = 0; i < num_codesets; i++) {
-
- codeset = codesets[i];
- num_charsets = codeset->num_charsets;
-
- for (j = 0; j < num_charsets; j++) {
-
- charset = codeset->charset_list[j];
-
- for (ctdp = ctdata; ctdp <= ctd_endp; ctdp++)
-
- if (! strcmp(ctdp->name, charset->name)) {
-
- ctdptr[codeset->cs_num] = ctdp;
-
- ctdptr[codeset->cs_num]->wc_encoding = codeset->wc_encoding;
-
- ctdptr[codeset->cs_num]->set_size =
- charset->set_size;
-
- ctdptr[codeset->cs_num]->min_ch =
- charset->set_size == 94 &&
- (ctdptr[codeset->cs_num]->length > 1 ||
- ctdptr[codeset->cs_num]->side == XlcGR) ? 0x21 : 0x20;
-
- break;
- }
- }
- }
-}
-
-
-static int
-sjis_mbstocts(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- int ct_len = *to_left;
- int cs_num;
- int clen;
- int unconv_num = 0;
- int num_conv;
- const char *inbufptr = *from;
- char *ctptr = *to;
- XPointer ct_base = ctptr;
-
- StateRec ct_state;
- CTData charset = NULL;
- XLCd lcd = (XLCd) conv->state;
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
-/* Initial State: */
-
- ct_state.GL_charset = ctdptr[Ascii];
- ct_state.GR_charset = NULL;
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (;*from_left > 0; (*from_left) -= charset->length) {
-
- if (iskanji(*inbufptr)) {
- if (KANJI_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Kanji;
- charset = ctdptr[Kanji];
- if (!VALID_MULTIBYTE((Uchar) *(inbufptr+1)))
- unconv_num++;
- }
- else if (isuserdef(*inbufptr)) {
- if (USERDEF_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Userdef;
- charset = ctdptr[Userdef];
- if (!VALID_MULTIBYTE((Uchar) *(inbufptr+1)))
- unconv_num++;
- }
- else if (isascii(*inbufptr)) {
- if (ASCII_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Ascii;
- charset = ctdptr[Ascii];
- }
- else if (iskana(*inbufptr)) {
- if (KANA_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Kana;
- charset = ctdptr[Kana];
- }
- else { /* unknown */
- unconv_num++;
- (*from_left)--;
- continue;
- }
-
- if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
- (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
- ct_len -= ctdptr[cs_num]->ct_encoding_len;
- if (ct_len < 0) {
- unconv_num++;
- break;
- }
-
- if (ctptr) {
- strcpy(ctptr, ctdptr[cs_num]->ct_encoding);
- ctptr += ctdptr[cs_num]->ct_encoding_len;
- }
- }
-
- clen = charset->length;
- do {
- *ctptr++ = *inbufptr++;
- } while (--clen);
-
- if (charset->length >= 2) {
- sjis_to_jis((Uchar *)(ctptr-2), (Uchar *)(ctptr-1));
- if (BADCHAR(charset->min_ch, *(ctptr-2)) ||
- BADCHAR(charset->min_ch, *(ctptr-1))) {
- unconv_num++;
- continue;
- }
- }
- else
- if (BADCHAR(charset->min_ch, *(ctptr-1))) {
- unconv_num++;
- continue;
- }
-
- if (charset->side == XlcGR)
- ct_state.GR_charset = charset;
- else if (charset->side == XlcGL)
- ct_state.GL_charset = charset;
-
- if (charset->side == XlcGR) {
- clen = charset->length;
- do {
- (*(Uchar *)(ctptr-clen)) = BIT8ON(*(Uchar *)(ctptr-clen));
- } while (--clen);
- }
- }
-
- *to = (XPointer)ctptr;
-
- if ((num_conv = (int)(ctptr - ct_base)) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-
-}
-
-
-#define byte1 (length == codeset->length - 1)
-#define byte2 (byte1 == 0)
-
-static int
-sjis_wcstocts(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- int ct_len = *to_left;
- const wchar_t *inbufptr = (const wchar_t *) *from;
- char *ctptr = *to;
- XPointer ct_base = ctptr;
- wchar_t wch;
- int length;
- Uchar tmp;
- Uchar t1 = 0;
- int num_conv;
-
- StateRec ct_state;
- XLCd lcd = (XLCd)conv->state;
- CTData charset;
- CodeSet codeset;
- int unconv_num = 0;
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-/* Initial State: */
- ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
- ct_state.GR_charset = NULL;
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (; *from_left > 0 ; (*from_left)-- ) {
-
- wch = *inbufptr++;
-
- if (!(codeset = wc_codeset(lcd, wch))) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
-
- charset = ctdptr[codeset->cs_num];
-
- length = codeset->length;
- wch ^= (wchar_t)codeset->wc_encoding;
-
- if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
- (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
- ct_len -= ctdptr[codeset->cs_num]->ct_encoding_len;
- if (ct_len < 0) {
- unconv_num++;
- break;
- }
-
- if (ctptr) {
- strcpy(ctptr, ctdptr[codeset->cs_num]->ct_encoding);
- ctptr += ctdptr[codeset->cs_num]->ct_encoding_len;
- }
-
- }
-
- if (charset->side == XlcGR)
- ct_state.GR_charset = charset;
- else if (charset->side == XlcGL)
- ct_state.GL_charset = charset;
-
- do {
- length--;
- tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
-
- if (kana) {
- if (BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
- *ctptr++ = (char)BIT8ON(tmp);
- }
-
- else if (byte1 && (kanji || userdef)) {
- t1 = tmp;
- }
-
- else if (byte2 && (kanji || userdef)) {
- if (BADCHAR(charset->min_ch, (char)t1) ||
- BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
-
- *ctptr++ = (char)BIT8OFF(t1);
- *ctptr++ = (char)BIT8OFF(tmp);
- }
-
- else {
- if (BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
- *ctptr++ = (char)tmp;
- }
- } while (length);
-
- } /* end for */
-
- *to = (XPointer)ctptr;
-
- if ((num_conv = (int)(ctptr - ct_base)) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-}
-#undef byte1
-#undef byte2
-
-#define SKIP_I(str) while (*(str) >= 0x20 && *(str) <= 0x2f) (str)++;
-#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
-
-static int
-sjis_ctstombs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- const char *inbufptr = *from;
- XPointer outbufptr = *to;
- const char *inbuf_base;
- XPointer outbuf_base = outbufptr;
- int clen, length;
- int unconv_num = 0;
- int num_conv;
- unsigned int ct_seglen = 0;
- Uchar ct_type;
- CTData ctdp = ctdata; /* default */
- CTData GL_ctdp = ctdp; /* GL ctdp save */
- CTData GR_ctdp = ctdp; /* GR ctdp save */
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (length = ctdata[Ascii].length; *from_left > 0 ; (*from_left) -= length)
- {
- ct_type = CT_STD;
- /* change GL/GR charset */
- if(ctdp->side == XlcGR && isleftside(*inbufptr)){
- /* select GL side */
- ctdp = GL_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
- /* select GR side */
- ctdp = GR_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }
- if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
-
- for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
-
- if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
- {
- inbufptr += ctdp->ct_encoding_len;
- (*from_left) -= ctdp->ct_encoding_len;
- if( ctdp->length ) {
- length = ctdp->length;
- if( *from_left < length ) {
- *to = (XPointer)outbufptr;
- *to_left -= outbufptr - outbuf_base;
- return( unconv_num + *from_left );
- }
- }
- ct_type = ctdp->ct_type;
- if(ctdp->side == XlcGL){
- GL_ctdp = ctdp; /* save GL ctdp */
- }else{
- GR_ctdp = ctdp; /* save GR ctdp */
- }
- break;
- }
- }
- if (ctdp > ctd_endp) /* failed to match CT sequence */
- unconv_num++;
- }
-
-/* The following code insures that non-standard encodings, direction, extension,
- * and version strings are ignored; subject to change in future.
- */
- switch (ct_type) {
- case CT_STD:
- break;
- case CT_EXT2:
- inbufptr++;
- (*from_left)--;
- case CT_NSTD:
- ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
- inbufptr += ct_seglen;
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT0:
- inbuf_base = inbufptr;
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT1:
- inbuf_base = inbufptr;
- SKIP_P(inbufptr);
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- (*from_left) -= ct_seglen;
- continue;
- case CT_DIR:
- continue;
- case CT_VER:
- inbufptr += 2;
- (*from_left) -= 2;
- continue;
- }
-
- if (ctdp->side == XlcGL || isrightside (*inbufptr)) {
- clen = length;
- } else {
- clen = 1;
- *from_left += length - clen;
- }
- do {
- Uchar mask = (length == 2) ? GL : -1;
- *outbufptr++ = *inbufptr++ & mask;
- } while (--clen);
-
- if (length >= 2)
- jis_to_sjis((Uchar *)(outbufptr-2), (Uchar *)(outbufptr-1));
- }
-
- *to = (XPointer)outbufptr;
-
- if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-}
-
-
-static int
-sjis_ctstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
- const char *inbufptr = *from;
- const char *inbuf_base;
- wchar_t *outbufptr = (wchar_t *) *to;
- wchar_t *outbuf_base = outbufptr;
- int clen, length;
- int num_conv;
- int unconv_num = 0;
- unsigned int ct_seglen = 0;
- Uchar ct_type = 0;
- int shift_mult;
- wchar_t wc_tmp;
- wchar_t wch;
- Ulong wc_encoding;
- CTData ctdp = ctdata;
- CTData GL_ctdp = ctdp; /* GL ctdp save */
- CTData GR_ctdp = ctdp; /* GR ctdp save */
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length )
- {
- ct_type = CT_STD;
- /* change GL/GR charset */
- if(ctdp->side == XlcGR && isleftside(*inbufptr)){
- /* select GL side */
- ctdp = GL_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
- /* select GR side */
- ctdp = GR_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }
- if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
- for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
-
- if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
- {
- inbufptr += ctdp->ct_encoding_len;
- (*from_left) -= ctdp->ct_encoding_len;
- if( ctdp->length ) {
- length = ctdp->length;
- if( *from_left < length ) {
- *to = (XPointer)outbufptr;
- *to_left -= outbufptr - outbuf_base;
- return( unconv_num + *from_left );
- }
- }
- ct_type = ctdp->ct_type;
- if(ctdp->side == XlcGL){
- GL_ctdp = ctdp; /* save GL ctdp */
- }else{
- GR_ctdp = ctdp; /* save GR ctdp */
- }
- break;
- }
- }
- if (ctdp > ctd_endp) /* failed to match CT sequence */
- unconv_num++;
- }
-
-/* The following block of code insures that non-standard encodings, direction,
- * extension, and version strings are ignored; subject to change in future.
- */
- switch (ct_type) {
- case CT_STD:
- break;
- case CT_EXT2:
- inbufptr++;
- (*from_left)--;
- case CT_NSTD:
- ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
- inbufptr += ct_seglen;
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT0:
- inbuf_base = inbufptr;
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT1:
- inbuf_base = inbufptr;
- SKIP_P(inbufptr);
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- (*from_left) -= ct_seglen;
- continue;
- case CT_DIR:
- continue;
- case CT_VER:
- inbufptr += 2;
- (*from_left) -= 2;
- continue;
- }
-#if !defined(__sony_news) || defined(SVR4)
- if (ctdp->side == XlcGL || isrightside (*inbufptr)) {
- clen = length;
- wc_encoding = ctdp->wc_encoding;
- } else {
- clen = 1;
- *from_left += length - clen;
- wc_encoding = ctdptr[Ascii]->wc_encoding;
- }
- shift_mult = clen - 1;
- wch = (wchar_t)0;
-
- do {
- wc_tmp = BIT8OFF(*inbufptr++) << (wc_shift_bits * shift_mult);
- wch |= wc_tmp;
- shift_mult--;
- } while (--clen);
- *outbufptr++ = wch | wc_encoding;
-#else
- if( length == 1 )
- *outbufptr++ = (unsigned char)*inbufptr++;
- else if( length == 2 ) {
- unsigned short code;
- code = (*inbufptr << 8) | *(inbufptr+1);
- *outbufptr++ = jis2sjis( code );
- inbufptr += 2;
- }
-#endif
- }
- *to = (XPointer)outbufptr;
-
- if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
- (*to_left) -= num_conv ;
-
- return unconv_num;
-
-}
-#undef BADCHAR
-
-static void
-close_converter(
- XlcConv conv)
-{
- Xfree((char *) conv);
-}
-
-
-static XlcConv
-create_conv(
- XLCd lcd,
- XlcConvMethods methods)
-{
- XlcConv conv;
-
- conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
- if (conv == NULL)
- return (XlcConv) NULL;
-
- conv->methods = methods;
- conv->state = (XPointer) lcd;
- return conv;
-}
-
-
-enum { MBSTOCS, WCSTOCS, MBTOCS, CSTOMBS, CSTOWCS, MBSTOWCS, WCSTOMBS,
- WCSTOCTS, MBSTOCTS, CTSTOMBS, CTSTOWCS };
-
-static XlcConvMethodsRec conv_methods[] = {
- {close_converter, sjis_mbstocs, NULL },
- {close_converter, sjis_wcstocs, NULL },
- {close_converter, sjis_mbtocs, NULL },
- {close_converter, sjis_cstombs, NULL },
- {close_converter, sjis_cstowcs, NULL },
- {close_converter, sjis_mbstowcs, NULL },
- {close_converter, sjis_wcstombs, NULL },
- {close_converter, sjis_wcstocts, NULL },
- {close_converter, sjis_mbstocts, NULL },
- {close_converter, sjis_ctstombs, NULL },
- {close_converter, sjis_ctstowcs, NULL },
-};
-
-
-static XlcConv
-open_mbstocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOCS]);
-}
-
-static XlcConv
-open_wcstocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOCS]);
-}
-
-static XlcConv
-open_mbtocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBTOCS]);
-}
-
-static XlcConv
-open_cstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CSTOMBS]);
-}
-
-static XlcConv
-open_cstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CSTOWCS]);
-}
-
-static XlcConv
-open_mbstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
-}
-
-static XlcConv
-open_wcstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
-}
-
-static XlcConv
-open_wcstocts(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
-}
-
-static XlcConv
-open_mbstocts(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
-}
-
-static XlcConv
-open_ctstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
-}
-
-static XlcConv
-open_ctstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
-}
-
-XLCd
-_XlcSjisLoader(
- const char *name)
-{
- XLCd lcd;
-
- lcd = _XlcCreateLC(name, _XlcGenericMethods);
- if (lcd == NULL)
- return lcd;
-
- if (!XLC_PUBLIC_PART(lcd)->codeset ||
- (_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "SJIS"))) {
- _XlcDestroyLC(lcd);
- return (XLCd) NULL;
- }
-
- initCTptr(lcd);
-
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
-
-#ifndef FORCE_INDIRECT_CONVERTER
- _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs);
- _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstocts);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
-#endif
-
- _XlcAddUtf8Converters(lcd);
-
- return lcd;
-}
-
-#else
-typedef int dummy;
-#endif /* X_LOCALE */
+/****************************************************************
+
+ Copyright 1992, 1993 by FUJITSU LIMITED
+ Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
+ Copyright 1994 by Sony Corporation
+
+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 FUJITSU LIMITED,
+Fujitsu Open Systems Solutions, Inc. and Sony Corporation not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+FUJITSU LIMITED, Fujitsu Open Systems Solutions, Inc. and
+Sony Corporation make no representations about the suitability of
+this software for any purpose. It is provided "as is" without
+express or implied warranty.
+
+FUJITSU LIMITED, FUJITSU OPEN SYSTEMS SOLUTIONS, INC. AND SONY
+CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
+IN NO EVENT SHALL FUJITSU OPEN SYSTEMS SOLUTIONS, INC., FUJITSU LIMITED
+AND SONY CORPORATION 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.
+
+ Authors: Jeffrey Bloomfield (jeffb@ossi.com)
+ Shigeru Yamada (yamada@ossi.com)
+ Yoshiyuki Segawa (segawa@ossi.com)
+ Modifier:Makoto Wakamatsu Sony Corporation
+ makoto@sm.sony.co.jp
+
+*****************************************************************/
+
+/*
+ * A Japanese SJIS locale.
+ * Supports: all locales with codeset SJIS.
+ * How: Provides converters for SJIS.
+ * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
+ */
+
+#ifdef X_LOCALE
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcGeneric.h"
+
+#include <ctype.h>
+#ifdef WIN32
+#define isascii __isascii
+#endif
+
+#define CS0 codesets[0] /* Codeset 0 - 7-bit ASCII */
+#define CS1 codesets[1] /* Codeset 1 - Kanji */
+#define CS2 codesets[2] /* Codeset 2 - Half-Kana */
+#define CS3 codesets[3] /* Codeset 3 - User defined */
+
+#define ascii (codeset->cs_num == 0)
+#define kanji (codeset->cs_num == 1)
+#define kana (codeset->cs_num == 2)
+#define userdef (codeset->cs_num == 3)
+
+#define ASCII_CODESET 0
+#define KANJI_CODESET 1
+#define KANA_CODESET 2
+#define USERDEF_CODESET 3
+#define MAX_CODESETS 4
+
+#define GR 0x80 /* begins right-side (non-ascii) region */
+#define GL 0x7f /* ends left-side (ascii) region */
+
+#define isleftside(c) (((c) & GR) ? 0 : 1)
+#define isrightside(c) (!isleftside(c))
+
+typedef unsigned char Uchar;
+typedef unsigned long Ulong;
+typedef unsigned int Uint;
+
+/* Acceptable range for 2nd byte of SJIS multibyte char */
+#define VALID_MULTIBYTE(c) \
+ ((0x40<=((Uchar)c) && ((Uchar)c)<=0x7e) \
+ || (0x80<=((Uchar)c) && ((Uchar)c)<=0xfc))
+
+#ifndef iskanji
+#define iskanji(c) ((0x81<=((Uchar)c) && ((Uchar)c)<=0x9f) \
+ || (0xe0<=((Uchar)c) && ((Uchar)c)<=0xef))
+#endif /* !iskanji */
+
+#ifndef iskana
+#define iskana(c) (0xa1<=((Uchar)c) && ((Uchar)c)<=0xdf)
+#endif /* !iskana */
+
+#define isuserdef(c) (0xf0<=((Uchar)c) && ((Uchar)c)<=0xfc)
+
+#define BIT8OFF(c) ((c) & GL)
+#define BIT8ON(c) ((c) | GR)
+
+
+static void jis_to_sjis (Uchar *p1, Uchar *p2);
+static void sjis_to_jis (Uchar *p1, Uchar *p2);
+static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
+
+
+/*
+ * Notes:
+ * 1. 16-bit widechar format is limited to 14 data bits. Since the 2nd byte
+ * of SJIS multibyte chars are in the ranges of 0x40 - 7E and 0x80 - 0xFC,
+ * SJIS cannot map directly into 16 bit widechar format within the confines
+ * of a single codeset. Therefore, for SJIS widechar conversion, SJIS Kanji
+ * is mapped into the JIS codeset. (The algorithms used in jis_to_sjis()
+ * and sjis_to_jis() are from Ken Lunde (lunde@mv.us.adobe.com) and are in
+ * the public domain.)
+ * 2. Defining FORCE_INDIRECT_CONVERTER (see _XlcEucLoader())
+ * forces indirect (charset) conversions (e.g. wcstocs()<->cstombs()).
+ * 3. Using direct converters (e.g. mbstowcs()) decreases conversion
+ * times by 20-40% (depends on specific converter used).
+ */
+
+
+static int
+sjis_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+
+ XLCd lcd = (XLCd)conv->state;
+
+ int chr_len = 0;
+ int shift_mult = 0;
+ Uint chrcode = 0;
+
+ Uchar ch, ch2;
+ Uint wc_encode = 0;
+ Uint wc_tmp = 0;
+
+ Bool new_char;
+
+ int firstbyte;
+ int length = 0;
+ int num_conv;
+ int unconv_num = 0;
+
+ const char *inbufptr = *from;
+ wchar_t *outbufptr = (wchar_t *) *to;
+ wchar_t *outbuf_base = outbufptr;
+
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (new_char = True, firstbyte = True; *from_left > 0; (*from_left)--) {
+
+ ch = *inbufptr++;
+
+ if (firstbyte) {
+ if (ASCII_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ if (isascii(ch)) {
+ length = CS0->length;
+ *outbufptr++ = (wchar_t)ch;
+ continue;
+ }
+ else if (iskanji(ch)) {
+ if (KANJI_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ firstbyte = False;
+ length = CS1->length;
+ if (*from_left < length || *to_left < length)
+ return -1;
+ wc_encode = CS1->wc_encoding;
+ ch2 = *inbufptr;
+ sjis_to_jis(&ch, &ch2);
+ chrcode = ch;
+ }
+ else if (iskana(ch)) {
+ if (KANA_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ length = CS2->length;
+ wc_encode = CS2->wc_encoding;
+ chrcode = BIT8OFF(ch);
+ }
+ else if (isuserdef(ch)) {
+ if (USERDEF_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ firstbyte = False;
+ length = CS3->length;
+ if (*from_left < length || *to_left < length)
+ return -1;
+ wc_encode = CS3->wc_encoding;
+ ch2 = *inbufptr;
+ sjis_to_jis(&ch, &ch2);
+ chrcode = ch;
+ }
+ else /* unknown */ {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ } else { /* 2nd byte of multibyte char */
+ if (!VALID_MULTIBYTE((Uchar) *(inbufptr-1))) {
+ unconv_num++;
+ firstbyte = True;
+ }
+ chrcode = ch2;
+ }
+
+ if (new_char) {
+ chr_len = length;
+ shift_mult = length - 1;
+ new_char = False;
+ }
+
+ chrcode <<= (wc_shift * shift_mult);
+ shift_mult--;
+ wc_tmp |= chrcode;
+ if (--chr_len == 0) {
+ wc_tmp |= wc_encode;
+ *outbufptr++ = wc_tmp;
+
+ firstbyte = True;
+ new_char = True;
+ wc_tmp = (Uint)0;
+ }
+
+ } /* end for */
+
+ *to = (XPointer)outbufptr;
+
+ if ((num_conv = outbufptr - outbuf_base) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+}
+
+
+#define byte1 (length == codeset->length - 1)
+#define byte2 (byte1 == 0)
+
+static int
+sjis_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ XPointer outbufptr = *to;
+ XPointer outbuf_base = outbufptr;
+ wchar_t wch;
+ int length;
+ Uchar tmp;
+ Uchar t1, t2;
+ int num_conv;
+ int unconv_num = 0;
+
+ XLCd lcd = (XLCd)conv->state;
+ CodeSet codeset;
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (; *from_left > 0 ; (*from_left)-- ) {
+
+ wch = *inbufptr++;
+
+ if (!(codeset = wc_codeset(lcd, wch))) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+
+ length = codeset->length;
+ wch ^= (wchar_t)codeset->wc_encoding;
+
+ do {
+ length--;
+ tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
+
+ if (kana)
+ tmp = BIT8ON(tmp);
+
+ else if (byte1 && (kanji || userdef)) {
+ t1 = BIT8OFF(tmp);
+ continue;
+ }
+
+ else if (byte2 && (kanji || userdef)) {
+ t2 = BIT8OFF(tmp);
+ jis_to_sjis(&t1, &t2);
+ *outbufptr++ = (char)t1;
+ tmp = t2;
+ }
+
+ *outbufptr++ = (char)tmp;
+ } while (length);
+
+ } /* end for */
+
+ *to = (XPointer)outbufptr;
+
+ if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+}
+#undef byte1
+#undef byte2
+
+/*
+ * sjis<->jis conversion for widechar kanji (See Note at top of file)
+ */
+static void
+sjis_to_jis(
+ Uchar *p1,
+ Uchar *p2)
+{
+ Uchar c1 = *p1;
+ Uchar c2 = *p2;
+ Uchar adjust = c2 < 0x9f;
+ Uchar rowOffset = c1 < 0xa0 ? 0x70 : 0xb0;
+ Uchar cellOffset = adjust ? (0x1f + (c2 > 0x7f)) : 0x7e;
+
+ *p1 = ((c1 - rowOffset) << 1) - adjust;
+ *p2 -= cellOffset;
+}
+
+static void
+jis_to_sjis(
+ Uchar *p1,
+ Uchar *p2)
+{
+ Uchar c1 = *p1;
+ Uchar c2 = *p2;
+ Uchar rowOffset = c1 < 0x5f ? 0x70 : 0xb0;
+ Uchar cellOffset = c1 % 2 ? 0x1f + (c2 > 0x5f) : 0x7e;
+
+ *p1 = ((Uchar)(c1 + 1) >> 1) + rowOffset;
+ *p2 = c2 + cellOffset;
+}
+
+static CodeSet
+wc_codeset(
+ XLCd lcd,
+ wchar_t wch)
+{
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+#if !defined(__sony_news) || defined(SVR4)
+ int end = XLC_GENERIC(lcd, codeset_num);
+ Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
+
+ for (; --end >= 0; codesets++)
+ if ( widech == (*codesets)->wc_encoding )
+ return *codesets;
+
+ return NULL;
+#else
+ if( iskanji(wch >> 8) )
+ return( codesets[1] );
+ if( iskana(wch & 0xff) )
+ return( codesets[2] );
+ return( codesets[0] );
+#endif
+}
+
+
+static int
+sjis_mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ XlcCharSet charset = NULL;
+ int char_size = 0;
+ int unconv_num = 0;
+ const char *src = *from;
+ char *dst = *to;
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+ if (iskanji(*src)) {
+ if (KANJI_CODESET >= codeset_num)
+ return -1;
+ charset = *CS1->charset_list;
+ char_size = charset->char_size;
+
+ if (*from_left >= char_size && *to_left >= char_size) {
+ *dst++ = *src++;
+ *dst++ = *src++;
+ if (!VALID_MULTIBYTE((Uchar) *(src-1))) /* check 2nd byte */
+ unconv_num++;
+ sjis_to_jis((Uchar *)(dst-2), (Uchar *)(dst-1));
+ } else
+ return -1;
+ }
+ else if (isuserdef(*src)) {
+ if (USERDEF_CODESET >= codeset_num)
+ return -1;
+ charset = *CS3->charset_list;
+ char_size = charset->char_size;
+
+ if (*from_left >= char_size && *to_left >= char_size) {
+ *dst++ = *src++;
+ *dst++ = *src++;
+ if (!VALID_MULTIBYTE((Uchar) *(src-1))) /* check 2nd byte */
+ unconv_num++;
+ sjis_to_jis((Uchar *)(dst-2), (Uchar *)(dst-1));
+ } else
+ return -1;
+ }
+ else if (isascii(*src)) {
+ if (ASCII_CODESET >= codeset_num)
+ return -1;
+ charset = *CS0->charset_list;
+ char_size = charset->char_size;
+
+ if (*from_left >= char_size && *to_left >= char_size)
+ *dst++ = *src++;
+ else
+ return -1;
+ }
+ else if (iskana(*src)) {
+ if (KANA_CODESET >= codeset_num)
+ return -1;
+ charset = *CS2->charset_list;
+ char_size = charset->char_size;
+
+ if (*from_left >= char_size && *to_left >= char_size)
+ *dst++ = *src++;
+ else
+ return -1;
+ }
+ else /* unknown */
+ return -1;
+
+ *from_left -= char_size;
+ *to_left -= char_size;
+
+ *to = (XPointer) dst;
+ *from = (XPointer) src;
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = charset;
+
+ return unconv_num;
+}
+
+
+static int
+sjis_mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const char *tmp_from;
+ char *tmp_to;
+ int tmp_from_left, tmp_to_left;
+ XlcCharSet charset, tmp_charset;
+ XPointer tmp_args[1];
+ int unconv_num = 0, ret;
+
+/* Determine the charset of the segment and convert one character: */
+
+ tmp_args[0] = (XPointer) &charset; /* charset from sjis_mbtocs() */
+ while
+ ((ret = sjis_mbtocs(conv, from, from_left, to, to_left, tmp_args, 1)) > 0)
+ unconv_num += ret;
+ if ( ret < 0 )
+ return ret;
+
+ tmp_from = *from;
+ tmp_from_left = *from_left;
+ tmp_to_left = *to_left;
+ tmp_to = *to;
+
+/* Convert remainder of the segment: */
+
+ tmp_args[0] = (XPointer) &tmp_charset;
+ while( (ret = sjis_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
+ (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
+
+ if (ret > 0) {
+ unconv_num += ret;
+ continue;
+ }
+
+ if (tmp_charset != charset) /* quit on end of segment */
+ break;
+
+ *from = (XPointer) tmp_from;
+ *from_left = tmp_from_left;
+ *to = (XPointer) tmp_to;
+ *to_left = tmp_to_left;
+ }
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = charset;
+
+ return unconv_num;
+}
+
+static int
+sjis_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd) conv->state;
+ const wchar_t *wcptr = *((const wchar_t **)from);
+ char *bufptr = *((char **) to);
+ wchar_t wch;
+ char *tmpptr;
+ int length;
+ CodeSet codeset;
+ Ulong wc_encoding;
+ int buf_len = *to_left;
+ int wcstr_len = *from_left;
+
+ if (!(codeset = wc_codeset(lcd, *wcptr)))
+ return -1;
+
+ if (wcstr_len < buf_len / codeset->length)
+ buf_len = wcstr_len * codeset->length;
+
+#if !defined(__sony_news) || defined(SVR4)
+ wc_encoding = codeset->wc_encoding;
+
+ for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) {
+ wch = *wcptr;
+
+ if ((wch & XLC_GENERIC(lcd, wc_encode_mask)) != wc_encoding)
+ break;
+
+ length = codeset->length;
+
+ buf_len -= length;
+ bufptr += length;
+ tmpptr = bufptr - 1;
+
+ while (length--) {
+ *tmpptr-- = kana ? BIT8ON(wch) : BIT8OFF(wch);
+ wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
+ }
+ }
+#else
+ length = codeset->length;
+ for( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len-- ) {
+ wch = *wcptr;
+ if( codeset != wc_codeset( lcd, wch ) )
+ break;
+
+ buf_len -= length;
+ if( length == 2 ) {
+ unsigned short code;
+
+ code = sjis2jis( wch & 0xffff );
+ *bufptr++ = code >> 8;
+ *bufptr++ = code & 0xff;
+ }
+ else
+ *bufptr++ = wch & 0xff;
+ }
+#endif
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = *codeset->charset_list;
+
+ *from_left -= wcptr - (wchar_t *) *from;
+ *from = (XPointer) wcptr;
+
+ *to_left -= bufptr - *to;
+ *to = bufptr;
+
+ return 0;
+}
+
+static CodeSet
+GetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset)
+{
+ CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
+ XlcCharSet *charset_list;
+ int codeset_num, num_charsets;
+
+ codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+ for ( ; codeset_num-- > 0; codeset++) {
+ num_charsets = (*codeset)->num_charsets;
+ charset_list = (*codeset)->charset_list;
+
+ for ( ; num_charsets-- > 0; charset_list++)
+ if (*charset_list == charset)
+ return *codeset;
+ }
+
+ return (CodeSet) NULL;
+}
+
+
+static int
+sjis_cstombs(
+ XlcConv conv,
+ char **from,
+ int *from_left,
+ char **to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd) conv->state;
+ const char *csptr = *from;
+ char *bufptr = *to;
+ int csstr_len = *from_left;
+ int buf_len = *to_left;
+ int length;
+ CodeSet codeset;
+ int cvt_length = 0;
+
+ if (num_args < 1)
+ return -1;
+
+ if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
+ return -1;
+
+ csstr_len /= codeset->length;
+ buf_len /= codeset->length;
+ if (csstr_len < buf_len)
+ buf_len = csstr_len;
+
+ cvt_length += buf_len * codeset->length;
+
+ if (bufptr) {
+ while (buf_len--) {
+ length = codeset->length;
+ while (length--)
+ *bufptr++ = codeset->length == 1 && codeset->side == XlcGR ?
+ BIT8ON(*csptr++) : BIT8OFF(*csptr++);
+
+ if (codeset->length == 2)
+ jis_to_sjis((Uchar *)(bufptr-2), (Uchar *)(bufptr-1));
+ }
+ }
+
+ *from_left -= csptr - *from;
+ *from = (XPointer) csptr;
+
+ if (bufptr)
+ *to += cvt_length;
+ *to_left -= cvt_length;
+
+
+ return 0;
+}
+
+static int
+sjis_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd) conv->state;
+ const char *csptr = (const char *) *from;
+ wchar_t *bufptr = (wchar_t *) *to;
+ wchar_t *toptr = (wchar_t *) *to;
+ int csstr_len = *from_left;
+ int buf_len = *to_left;
+ wchar_t wch;
+ int length;
+ Ulong wc_shift_bits = (int)XLC_GENERIC(lcd, wc_shift_bits);
+ CodeSet codeset;
+
+ if (num_args < 1)
+ return -1;
+
+ if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
+ return -1;
+
+ csstr_len /= codeset->length;
+ if (csstr_len < buf_len)
+ buf_len = csstr_len;
+
+ *to_left -= buf_len;
+
+ if (bufptr) {
+
+ toptr += buf_len;
+ *to = (XPointer) toptr;
+
+ while (buf_len--) {
+ wch = (wchar_t) BIT8OFF(*csptr);
+ csptr++;
+
+ length = codeset->length - 1;
+ while (length--) {
+ wch = (wch << wc_shift_bits) | BIT8OFF(*csptr);
+ csptr++;
+ }
+ *bufptr++ = wch | codeset->wc_encoding;
+ }
+ }
+
+ *from_left -= csptr - *from;
+ *from = (XPointer) csptr;
+
+ return 0;
+}
+
+
+/*
+ * Stripped down Direct CT converters for SJIS
+ *
+ */
+
+#define BADCHAR(min_ch, c) (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
+ BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
+ BIT8OFF(c) != 0x1b)
+
+typedef struct _CTDataRec {
+ int side;
+ int length;
+ char *name;
+ Ulong wc_encoding;
+ char *ct_encoding;
+ int ct_encoding_len;
+ int set_size;
+ Uchar min_ch;
+ Uchar ct_type;
+} CTDataRec, *CTData;
+
+typedef struct _StateRec {
+ CTData GL_charset;
+ CTData GR_charset;
+ CTData charset;
+} StateRec, *State;
+
+#define CT_STD 0
+#define CT_NSTD 1
+#define CT_DIR 2
+#define CT_EXT0 3
+#define CT_EXT1 4
+#define CT_EXT2 5
+#define CT_VER 6
+
+static CTDataRec ctdata[] =
+{
+ { XlcGL, 1, "ISO8859-1:GL", 0, "\033(B" , 3, 0, 0, CT_STD },
+ { XlcGR, 1, "ISO8859-1:GR", 0, "\033-A" , 3, 0, 0, CT_STD },
+ { XlcGL, 1, "JISX0201.1976-0:GL", 0, "\033(J" , 3, 0, 0, CT_STD },
+ { XlcGR, 1, "JISX0201.1976-0:GR", 0, "\033)I" , 3, 0, 0, CT_STD },
+ { XlcGL, 2, "JISX0208.1983-0:GL", 0, "\033$(B" , 4, 0, 0, CT_STD },
+ { XlcGR, 2, "JISX0208.1983-0:GR", 0, "\033$)B" , 4, 0, 0, CT_STD },
+ { XlcGL, 2, "JISX0212.1990-0:GL", 0, "\033$(D" , 4, 0, 0, CT_STD },
+ { XlcGR, 2, "JISX0212.1990-0:GR", 0, "\033$)D" , 4, 0, 0, CT_STD },
+ { XlcUnknown, 0, "Ignore-Ext-Status?", 0, "\033#" , 2, 0, 0, CT_VER },
+ { XlcUnknown, 0, "NonStd-?-OctetChar", 0, "\033%/0" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 1, "NonStd-1-OctetChar", 0, "\033%/1" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 2, "NonStd-2-OctetChar", 0, "\033%/2" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 3, "NonStd-3-OctetChar", 0, "\033%/3" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 4, "NonStd-4-OctetChar", 0, "\033%/4" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 0, "Extension-2" , 0, "\033%/" , 3, 0, 0, CT_EXT2 },
+ { XlcUnknown, 0, "Extension-0" , 0, "\033" , 1, 0, 0, CT_EXT0 },
+ { XlcUnknown, 0, "Begin-L-to-R-Text", 0, "\2331]" , 3, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "Begin-R-to-L-Text", 0, "\2332]" , 3, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "End-Of-String", 0, "\233]" , 2, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "Extension-1" , 0, "\233" , 1, 0, 0, CT_EXT1 },
+};
+
+/* Note on above table: sjis_ctstombs() and sjis_ctstowcs() parser depends on
+ * certain table entries occuring in decreasing string length--
+ * 1. CT_EXT2 and CT_EXT0 entries must occur after CT_NSTD entries.
+ * 2. CT_DIR and CT_EXT1 entries must occur after CT_DIR entries.
+ */
+
+static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
+static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
+
+#define Ascii 0
+#define Kanji 1
+#define Kana 2
+#define Userdef 3
+
+/*
+ * initCTptr(): Set ctptr[] to point at ctdata[], indexed by codeset_num.
+ */
+static void
+initCTptr(
+ XLCd lcd)
+{
+ int num_codesets = XLC_GENERIC(lcd, codeset_num);
+ int num_charsets;
+ int i, j;
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ CodeSet codeset;
+ XlcCharSet charset;
+ CTData ctdp = ctdata;
+
+ ctdptr[Ascii] = &ctdata[0]; /* failsafe */
+
+ for (i = 0; i < num_codesets; i++) {
+
+ codeset = codesets[i];
+ num_charsets = codeset->num_charsets;
+
+ for (j = 0; j < num_charsets; j++) {
+
+ charset = codeset->charset_list[j];
+
+ for (ctdp = ctdata; ctdp <= ctd_endp; ctdp++)
+
+ if (! strcmp(ctdp->name, charset->name)) {
+
+ ctdptr[codeset->cs_num] = ctdp;
+
+ ctdptr[codeset->cs_num]->wc_encoding = codeset->wc_encoding;
+
+ ctdptr[codeset->cs_num]->set_size =
+ charset->set_size;
+
+ ctdptr[codeset->cs_num]->min_ch =
+ charset->set_size == 94 &&
+ (ctdptr[codeset->cs_num]->length > 1 ||
+ ctdptr[codeset->cs_num]->side == XlcGR) ? 0x21 : 0x20;
+
+ break;
+ }
+ }
+ }
+}
+
+
+static int
+sjis_mbstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ int ct_len = *to_left;
+ int cs_num;
+ int clen;
+ int unconv_num = 0;
+ int num_conv;
+ const char *inbufptr = *from;
+ char *ctptr = *to;
+ XPointer ct_base = ctptr;
+
+ StateRec ct_state;
+ CTData charset = NULL;
+ XLCd lcd = (XLCd) conv->state;
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+/* Initial State: */
+
+ ct_state.GL_charset = ctdptr[Ascii];
+ ct_state.GR_charset = NULL;
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (;*from_left > 0; (*from_left) -= charset->length) {
+
+ if (iskanji(*inbufptr)) {
+ if (KANJI_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Kanji;
+ charset = ctdptr[Kanji];
+ if (!VALID_MULTIBYTE((Uchar) *(inbufptr+1)))
+ unconv_num++;
+ }
+ else if (isuserdef(*inbufptr)) {
+ if (USERDEF_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Userdef;
+ charset = ctdptr[Userdef];
+ if (!VALID_MULTIBYTE((Uchar) *(inbufptr+1)))
+ unconv_num++;
+ }
+ else if (isascii(*inbufptr)) {
+ if (ASCII_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Ascii;
+ charset = ctdptr[Ascii];
+ }
+ else if (iskana(*inbufptr)) {
+ if (KANA_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Kana;
+ charset = ctdptr[Kana];
+ }
+ else { /* unknown */
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+
+ if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
+ (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
+
+ ct_len -= ctdptr[cs_num]->ct_encoding_len;
+ if (ct_len < 0) {
+ unconv_num++;
+ break;
+ }
+
+ if (ctptr) {
+ strcpy(ctptr, ctdptr[cs_num]->ct_encoding);
+ ctptr += ctdptr[cs_num]->ct_encoding_len;
+ }
+ }
+
+ clen = charset->length;
+ do {
+ *ctptr++ = *inbufptr++;
+ } while (--clen);
+
+ if (charset->length >= 2) {
+ sjis_to_jis((Uchar *)(ctptr-2), (Uchar *)(ctptr-1));
+ if (BADCHAR(charset->min_ch, *(ctptr-2)) ||
+ BADCHAR(charset->min_ch, *(ctptr-1))) {
+ unconv_num++;
+ continue;
+ }
+ }
+ else
+ if (BADCHAR(charset->min_ch, *(ctptr-1))) {
+ unconv_num++;
+ continue;
+ }
+
+ if (charset->side == XlcGR)
+ ct_state.GR_charset = charset;
+ else if (charset->side == XlcGL)
+ ct_state.GL_charset = charset;
+
+ if (charset->side == XlcGR) {
+ clen = charset->length;
+ do {
+ (*(Uchar *)(ctptr-clen)) = BIT8ON(*(Uchar *)(ctptr-clen));
+ } while (--clen);
+ }
+ }
+
+ *to = (XPointer)ctptr;
+
+ if ((num_conv = (int)(ctptr - ct_base)) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+
+}
+
+
+#define byte1 (length == codeset->length - 1)
+#define byte2 (byte1 == 0)
+
+static int
+sjis_wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ int ct_len = *to_left;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *ctptr = *to;
+ XPointer ct_base = ctptr;
+ wchar_t wch;
+ int length;
+ Uchar tmp;
+ Uchar t1 = 0;
+ int num_conv;
+
+ StateRec ct_state;
+ XLCd lcd = (XLCd)conv->state;
+ CTData charset;
+ CodeSet codeset;
+ int unconv_num = 0;
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+/* Initial State: */
+ ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
+ ct_state.GR_charset = NULL;
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (; *from_left > 0 ; (*from_left)-- ) {
+
+ wch = *inbufptr++;
+
+ if (!(codeset = wc_codeset(lcd, wch))) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+
+ charset = ctdptr[codeset->cs_num];
+
+ length = codeset->length;
+ wch ^= (wchar_t)codeset->wc_encoding;
+
+ if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
+ (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
+
+ ct_len -= ctdptr[codeset->cs_num]->ct_encoding_len;
+ if (ct_len < 0) {
+ unconv_num++;
+ break;
+ }
+
+ if (ctptr) {
+ strcpy(ctptr, ctdptr[codeset->cs_num]->ct_encoding);
+ ctptr += ctdptr[codeset->cs_num]->ct_encoding_len;
+ }
+
+ }
+
+ if (charset->side == XlcGR)
+ ct_state.GR_charset = charset;
+ else if (charset->side == XlcGL)
+ ct_state.GL_charset = charset;
+
+ do {
+ length--;
+ tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
+
+ if (kana) {
+ if (BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+ *ctptr++ = (char)BIT8ON(tmp);
+ }
+
+ else if (byte1 && (kanji || userdef)) {
+ t1 = tmp;
+ }
+
+ else if (byte2 && (kanji || userdef)) {
+ if (BADCHAR(charset->min_ch, (char)t1) ||
+ BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+
+ *ctptr++ = (char)BIT8OFF(t1);
+ *ctptr++ = (char)BIT8OFF(tmp);
+ }
+
+ else {
+ if (BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+ *ctptr++ = (char)tmp;
+ }
+ } while (length);
+
+ } /* end for */
+
+ *to = (XPointer)ctptr;
+
+ if ((num_conv = (int)(ctptr - ct_base)) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+}
+#undef byte1
+#undef byte2
+
+#define SKIP_I(str) while (*(str) >= 0x20 && *(str) <= 0x2f) (str)++;
+#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
+
+static int
+sjis_ctstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const char *inbufptr = *from;
+ XPointer outbufptr = *to;
+ const char *inbuf_base;
+ XPointer outbuf_base = outbufptr;
+ int clen, length;
+ int unconv_num = 0;
+ int num_conv;
+ unsigned int ct_seglen = 0;
+ Uchar ct_type;
+ CTData ctdp = ctdata; /* default */
+ CTData GL_ctdp = ctdp; /* GL ctdp save */
+ CTData GR_ctdp = ctdp; /* GR ctdp save */
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (length = ctdata[Ascii].length; *from_left > 0 ; (*from_left) -= length)
+ {
+ ct_type = CT_STD;
+ /* change GL/GR charset */
+ if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+ /* select GL side */
+ ctdp = GL_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+ /* select GR side */
+ ctdp = GR_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }
+ if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
+
+ for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
+
+ if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
+ {
+ inbufptr += ctdp->ct_encoding_len;
+ (*from_left) -= ctdp->ct_encoding_len;
+ if( ctdp->length ) {
+ length = ctdp->length;
+ if( *from_left < length ) {
+ *to = (XPointer)outbufptr;
+ *to_left -= outbufptr - outbuf_base;
+ return( unconv_num + *from_left );
+ }
+ }
+ ct_type = ctdp->ct_type;
+ if(ctdp->side == XlcGL){
+ GL_ctdp = ctdp; /* save GL ctdp */
+ }else{
+ GR_ctdp = ctdp; /* save GR ctdp */
+ }
+ break;
+ }
+ }
+ if (ctdp > ctd_endp) /* failed to match CT sequence */
+ unconv_num++;
+ }
+
+/* The following code insures that non-standard encodings, direction, extension,
+ * and version strings are ignored; subject to change in future.
+ */
+ switch (ct_type) {
+ case CT_STD:
+ break;
+ case CT_EXT2:
+ inbufptr++;
+ (*from_left)--;
+ case CT_NSTD:
+ ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
+ inbufptr += ct_seglen;
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT0:
+ inbuf_base = inbufptr;
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT1:
+ inbuf_base = inbufptr;
+ SKIP_P(inbufptr);
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_DIR:
+ continue;
+ case CT_VER:
+ inbufptr += 2;
+ (*from_left) -= 2;
+ continue;
+ }
+
+ if (ctdp->side == XlcGL || isrightside (*inbufptr)) {
+ clen = length;
+ } else {
+ clen = 1;
+ *from_left += length - clen;
+ }
+ do {
+ Uchar mask = (length == 2) ? GL : -1;
+ *outbufptr++ = *inbufptr++ & mask;
+ } while (--clen);
+
+ if (length >= 2)
+ jis_to_sjis((Uchar *)(outbufptr-2), (Uchar *)(outbufptr-1));
+ }
+
+ *to = (XPointer)outbufptr;
+
+ if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+}
+
+
+static int
+sjis_ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
+ const char *inbufptr = *from;
+ const char *inbuf_base;
+ wchar_t *outbufptr = (wchar_t *) *to;
+ wchar_t *outbuf_base = outbufptr;
+ int clen, length;
+ int num_conv;
+ int unconv_num = 0;
+ unsigned int ct_seglen = 0;
+ Uchar ct_type = 0;
+ int shift_mult;
+ wchar_t wc_tmp;
+ wchar_t wch;
+ Ulong wc_encoding;
+ CTData ctdp = ctdata;
+ CTData GL_ctdp = ctdp; /* GL ctdp save */
+ CTData GR_ctdp = ctdp; /* GR ctdp save */
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length )
+ {
+ ct_type = CT_STD;
+ /* change GL/GR charset */
+ if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+ /* select GL side */
+ ctdp = GL_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+ /* select GR side */
+ ctdp = GR_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }
+ if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
+ for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
+
+ if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
+ {
+ inbufptr += ctdp->ct_encoding_len;
+ (*from_left) -= ctdp->ct_encoding_len;
+ if( ctdp->length ) {
+ length = ctdp->length;
+ if( *from_left < length ) {
+ *to = (XPointer)outbufptr;
+ *to_left -= outbufptr - outbuf_base;
+ return( unconv_num + *from_left );
+ }
+ }
+ ct_type = ctdp->ct_type;
+ if(ctdp->side == XlcGL){
+ GL_ctdp = ctdp; /* save GL ctdp */
+ }else{
+ GR_ctdp = ctdp; /* save GR ctdp */
+ }
+ break;
+ }
+ }
+ if (ctdp > ctd_endp) /* failed to match CT sequence */
+ unconv_num++;
+ }
+
+/* The following block of code insures that non-standard encodings, direction,
+ * extension, and version strings are ignored; subject to change in future.
+ */
+ switch (ct_type) {
+ case CT_STD:
+ break;
+ case CT_EXT2:
+ inbufptr++;
+ (*from_left)--;
+ case CT_NSTD:
+ ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
+ inbufptr += ct_seglen;
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT0:
+ inbuf_base = inbufptr;
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT1:
+ inbuf_base = inbufptr;
+ SKIP_P(inbufptr);
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_DIR:
+ continue;
+ case CT_VER:
+ inbufptr += 2;
+ (*from_left) -= 2;
+ continue;
+ }
+#if !defined(__sony_news) || defined(SVR4)
+ if (ctdp->side == XlcGL || isrightside (*inbufptr)) {
+ clen = length;
+ wc_encoding = ctdp->wc_encoding;
+ } else {
+ clen = 1;
+ *from_left += length - clen;
+ wc_encoding = ctdptr[Ascii]->wc_encoding;
+ }
+ shift_mult = clen - 1;
+ wch = (wchar_t)0;
+
+ do {
+ wc_tmp = BIT8OFF(*inbufptr++) << (wc_shift_bits * shift_mult);
+ wch |= wc_tmp;
+ shift_mult--;
+ } while (--clen);
+ *outbufptr++ = wch | wc_encoding;
+#else
+ if( length == 1 )
+ *outbufptr++ = (unsigned char)*inbufptr++;
+ else if( length == 2 ) {
+ unsigned short code;
+ code = (*inbufptr << 8) | *(inbufptr+1);
+ *outbufptr++ = jis2sjis( code );
+ inbufptr += 2;
+ }
+#endif
+ }
+ *to = (XPointer)outbufptr;
+
+ if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
+ (*to_left) -= num_conv ;
+
+ return unconv_num;
+
+}
+#undef BADCHAR
+
+static void
+close_converter(
+ XlcConv conv)
+{
+ Xfree((char *) conv);
+}
+
+
+static XlcConv
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
+ if (conv == NULL)
+ return (XlcConv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) lcd;
+ return conv;
+}
+
+
+enum { MBSTOCS, WCSTOCS, MBTOCS, CSTOMBS, CSTOWCS, MBSTOWCS, WCSTOMBS,
+ WCSTOCTS, MBSTOCTS, CTSTOMBS, CTSTOWCS };
+
+static XlcConvMethodsRec conv_methods[] = {
+ {close_converter, sjis_mbstocs, NULL },
+ {close_converter, sjis_wcstocs, NULL },
+ {close_converter, sjis_mbtocs, NULL },
+ {close_converter, sjis_cstombs, NULL },
+ {close_converter, sjis_cstowcs, NULL },
+ {close_converter, sjis_mbstowcs, NULL },
+ {close_converter, sjis_wcstombs, NULL },
+ {close_converter, sjis_wcstocts, NULL },
+ {close_converter, sjis_mbstocts, NULL },
+ {close_converter, sjis_ctstombs, NULL },
+ {close_converter, sjis_ctstowcs, NULL },
+};
+
+
+static XlcConv
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOCS]);
+}
+
+static XlcConv
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOCS]);
+}
+
+static XlcConv
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBTOCS]);
+}
+
+static XlcConv
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CSTOMBS]);
+}
+
+static XlcConv
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CSTOWCS]);
+}
+
+static XlcConv
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
+}
+
+static XlcConv
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
+}
+
+static XlcConv
+open_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
+}
+
+static XlcConv
+open_mbstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
+}
+
+static XlcConv
+open_ctstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
+}
+
+static XlcConv
+open_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
+}
+
+XLCd
+_XlcSjisLoader(
+ const char *name)
+{
+ XLCd lcd;
+
+ lcd = _XlcCreateLC(name, _XlcGenericMethods);
+ if (lcd == NULL)
+ return lcd;
+
+ if (!XLC_PUBLIC_PART(lcd)->codeset ||
+ (_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "SJIS"))) {
+ _XlcDestroyLC(lcd);
+ return (XLCd) NULL;
+ }
+
+ initCTptr(lcd);
+
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
+
+#ifndef FORCE_INDIRECT_CONVERTER
+ _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs);
+ _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstocts);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
+#endif
+
+ _XlcAddUtf8Converters(lcd);
+
+ return lcd;
+}
+
+#else
+typedef int dummy;
+#endif /* X_LOCALE */
diff --git a/libX11/modules/om/Makefile.am b/libX11/modules/om/Makefile.am
index 24f4c06a2..cb22f5a42 100644
--- a/libX11/modules/om/Makefile.am
+++ b/libX11/modules/om/Makefile.am
@@ -1 +1 @@
-SUBDIRS=generic
+SUBDIRS=generic
diff --git a/libX11/modules/om/generic/omDefault.c b/libX11/modules/om/generic/omDefault.c
index 322690fa0..3f867ba65 100644
--- a/libX11/modules/om/generic/omDefault.c
+++ b/libX11/modules/om/generic/omDefault.c
@@ -1,449 +1,449 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * (c) Copyright 1995 FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-#include <X11/Xos.h>
-#include <X11/Xatom.h>
-#include <stdio.h>
-
-#define DefineLocalBuf char local_buf[BUFSIZ]
-#define AllocLocalBuf(length) (length > BUFSIZ ? (char *)Xmalloc(length) : local_buf)
-#define FreeLocalBuf(ptr) if (ptr != local_buf) Xfree(ptr)
-
-static Bool
-wcs_to_mbs(
- XOC oc,
- char *to,
- _Xconst wchar_t *from,
- int length)
-{
- XlcConv conv;
- int to_left, ret;
-
- conv = _XomInitConverter(oc, XOMWideChar);
- if (conv == NULL)
- return False;
-
- to_left = length;
- ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
- &to_left, NULL, 0);
- if (ret != 0 || length > 0)
- return False;
-
- return True;
-}
-
-static Bool
-utf8_to_mbs(
- XOC oc,
- char *to,
- _Xconst char *from,
- int length)
-{
- XlcConv conv;
- int to_left, ret;
-
- conv = _XomInitConverter(oc, XOMUtf8String);
- if (conv == NULL)
- return False;
-
- to_left = length;
- ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
- &to_left, NULL, 0);
- if (ret != 0 || length > 0)
- return False;
-
- return True;
-}
-
-int
-_XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length)
-{
- return XTextWidth(*oc->core.font_info.font_struct_list, text, length);
-}
-
-int
-_XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (wcs_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextEscapement(oc, buf, length);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-int
-_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (utf8_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextEscapement(oc, buf, length);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-int
-_XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- int direction, logical_ascent, logical_descent;
- XCharStruct overall;
-
- XTextExtents(*oc->core.font_info.font_struct_list, text, length, &direction,
- &logical_ascent, &logical_descent, &overall);
-
- if (overall_ink) {
- overall_ink->x = overall.lbearing;
- overall_ink->y = -(overall.ascent);
- overall_ink->width = overall.rbearing - overall.lbearing;
- overall_ink->height = overall.ascent + overall.descent;
- }
-
- if (overall_logical) {
- overall_logical->x = 0;
- overall_logical->y = -(logical_ascent);
- overall_logical->width = overall.width;
- overall_logical->height = logical_ascent + logical_descent;
- }
-
- return overall.width;
-}
-
-int
-_XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (wcs_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-int
-_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (utf8_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-Status
-_XmbDefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- XFontStruct *font = *oc->core.font_info.font_struct_list;
- XCharStruct *def, *cs, overall;
- Bool first = True;
-
- if (buf_size < length)
- return 0;
-
- bzero((char *) &overall, sizeof(XCharStruct));
- *num_chars = 0;
-
- CI_GET_DEFAULT_INFO_1D(font, def)
-
- while (length-- > 0) {
- CI_GET_CHAR_INFO_1D(font, *text, def, cs)
- text++;
- if (cs == NULL)
- continue;
-
- ink_buf->x = overall.width + cs->lbearing;
- ink_buf->y = -(cs->ascent);
- ink_buf->width = cs->rbearing - cs->lbearing;
- ink_buf->height = cs->ascent + cs->descent;
- ink_buf++;
-
- logical_buf->x = overall.width;
- logical_buf->y = -(font->ascent);
- logical_buf->width = cs->width;
- logical_buf->height = font->ascent + font->descent;
- logical_buf++;
-
- if (first) {
- overall = *cs;
- first = False;
- } else {
- overall.ascent = max(overall.ascent, cs->ascent);
- overall.descent = max(overall.descent, cs->descent);
- overall.lbearing = min(overall.lbearing, overall.width +
- cs->lbearing);
- overall.rbearing = max(overall.rbearing, overall.width +
- cs->rbearing);
- overall.width += cs->width;
- }
-
- (*num_chars)++;
- }
-
- if (overall_ink) {
- overall_ink->x = overall.lbearing;
- overall_ink->y = -(overall.ascent);
- overall_ink->width = overall.rbearing - overall.lbearing;
- overall_ink->height = overall.ascent + overall.descent;
- }
-
- if (overall_logical) {
- overall_logical->x = 0;
- overall_logical->y = -(font->ascent);
- overall_logical->width = overall.width;
- overall_logical->height = font->ascent + font->descent;
- }
-
- return 1;
-}
-
-Status
-_XwcDefaultTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- Status ret;
-
- if (buf == NULL)
- return 0;
-
- if (wcs_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
- buf_size, num_chars, overall_ink,
- overall_logical);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-Status
-_Xutf8DefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- Status ret;
-
- if (buf == NULL)
- return 0;
-
- if (utf8_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
- buf_size, num_chars, overall_ink,
- overall_logical);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-int
-_XmbDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length)
-{
- XFontStruct *font = *oc->core.font_info.font_struct_list;
-
- XSetFont(dpy, gc, font->fid);
- XDrawString(dpy, d, gc, x, y, text, length);
-
- return XTextWidth(font, text, length);
-}
-
-int
-_XwcDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst wchar_t *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (wcs_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-int
-_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (utf8_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-void
-_XmbDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length)
-{
- XSetFont(dpy, gc, (*oc->core.font_info.font_struct_list)->fid);
- XDrawImageString(dpy, d, gc, x, y, text, length);
-}
-
-void
-_XwcDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst wchar_t *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
-
- if (buf == NULL)
- return;
-
- if (wcs_to_mbs(oc, buf, text, length) == False)
- goto err;
-
- _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, buf, length);
-
-err:
- FreeLocalBuf(buf);
-}
-
-void
-_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
-
- if (buf == NULL)
- return;
-
- if (utf8_to_mbs(oc, buf, text, length) == False)
- goto err;
-
- _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, buf, length);
-
-err:
- FreeLocalBuf(buf);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * (c) Copyright 1995 FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+#include <X11/Xos.h>
+#include <X11/Xatom.h>
+#include <stdio.h>
+
+#define DefineLocalBuf char local_buf[BUFSIZ]
+#define AllocLocalBuf(length) (length > BUFSIZ ? (char *)Xmalloc(length) : local_buf)
+#define FreeLocalBuf(ptr) if (ptr != local_buf) Xfree(ptr)
+
+static Bool
+wcs_to_mbs(
+ XOC oc,
+ char *to,
+ _Xconst wchar_t *from,
+ int length)
+{
+ XlcConv conv;
+ int to_left, ret;
+
+ conv = _XomInitConverter(oc, XOMWideChar);
+ if (conv == NULL)
+ return False;
+
+ to_left = length;
+ ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
+ &to_left, NULL, 0);
+ if (ret != 0 || length > 0)
+ return False;
+
+ return True;
+}
+
+static Bool
+utf8_to_mbs(
+ XOC oc,
+ char *to,
+ _Xconst char *from,
+ int length)
+{
+ XlcConv conv;
+ int to_left, ret;
+
+ conv = _XomInitConverter(oc, XOMUtf8String);
+ if (conv == NULL)
+ return False;
+
+ to_left = length;
+ ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
+ &to_left, NULL, 0);
+ if (ret != 0 || length > 0)
+ return False;
+
+ return True;
+}
+
+int
+_XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length)
+{
+ return XTextWidth(*oc->core.font_info.font_struct_list, text, length);
+}
+
+int
+_XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextEscapement(oc, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextEscapement(oc, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+_XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ int direction, logical_ascent, logical_descent;
+ XCharStruct overall;
+
+ XTextExtents(*oc->core.font_info.font_struct_list, text, length, &direction,
+ &logical_ascent, &logical_descent, &overall);
+
+ if (overall_ink) {
+ overall_ink->x = overall.lbearing;
+ overall_ink->y = -(overall.ascent);
+ overall_ink->width = overall.rbearing - overall.lbearing;
+ overall_ink->height = overall.ascent + overall.descent;
+ }
+
+ if (overall_logical) {
+ overall_logical->x = 0;
+ overall_logical->y = -(logical_ascent);
+ overall_logical->width = overall.width;
+ overall_logical->height = logical_ascent + logical_descent;
+ }
+
+ return overall.width;
+}
+
+int
+_XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+Status
+_XmbDefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ XFontStruct *font = *oc->core.font_info.font_struct_list;
+ XCharStruct *def, *cs, overall;
+ Bool first = True;
+
+ if (buf_size < length)
+ return 0;
+
+ bzero((char *) &overall, sizeof(XCharStruct));
+ *num_chars = 0;
+
+ CI_GET_DEFAULT_INFO_1D(font, def)
+
+ while (length-- > 0) {
+ CI_GET_CHAR_INFO_1D(font, *text, def, cs)
+ text++;
+ if (cs == NULL)
+ continue;
+
+ ink_buf->x = overall.width + cs->lbearing;
+ ink_buf->y = -(cs->ascent);
+ ink_buf->width = cs->rbearing - cs->lbearing;
+ ink_buf->height = cs->ascent + cs->descent;
+ ink_buf++;
+
+ logical_buf->x = overall.width;
+ logical_buf->y = -(font->ascent);
+ logical_buf->width = cs->width;
+ logical_buf->height = font->ascent + font->descent;
+ logical_buf++;
+
+ if (first) {
+ overall = *cs;
+ first = False;
+ } else {
+ overall.ascent = max(overall.ascent, cs->ascent);
+ overall.descent = max(overall.descent, cs->descent);
+ overall.lbearing = min(overall.lbearing, overall.width +
+ cs->lbearing);
+ overall.rbearing = max(overall.rbearing, overall.width +
+ cs->rbearing);
+ overall.width += cs->width;
+ }
+
+ (*num_chars)++;
+ }
+
+ if (overall_ink) {
+ overall_ink->x = overall.lbearing;
+ overall_ink->y = -(overall.ascent);
+ overall_ink->width = overall.rbearing - overall.lbearing;
+ overall_ink->height = overall.ascent + overall.descent;
+ }
+
+ if (overall_logical) {
+ overall_logical->x = 0;
+ overall_logical->y = -(font->ascent);
+ overall_logical->width = overall.width;
+ overall_logical->height = font->ascent + font->descent;
+ }
+
+ return 1;
+}
+
+Status
+_XwcDefaultTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ Status ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
+ buf_size, num_chars, overall_ink,
+ overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+Status
+_Xutf8DefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ Status ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
+ buf_size, num_chars, overall_ink,
+ overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+_XmbDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+{
+ XFontStruct *font = *oc->core.font_info.font_struct_list;
+
+ XSetFont(dpy, gc, font->fid);
+ XDrawString(dpy, d, gc, x, y, text, length);
+
+ return XTextWidth(font, text, length);
+}
+
+int
+_XwcDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst wchar_t *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+void
+_XmbDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+{
+ XSetFont(dpy, gc, (*oc->core.font_info.font_struct_list)->fid);
+ XDrawImageString(dpy, d, gc, x, y, text, length);
+}
+
+void
+_XwcDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst wchar_t *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+
+ if (buf == NULL)
+ return;
+
+ if (wcs_to_mbs(oc, buf, text, length) == False)
+ goto err;
+
+ _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+}
+
+void
+_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+
+ if (buf == NULL)
+ return;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False)
+ goto err;
+
+ _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+}
diff --git a/libX11/modules/om/generic/omImText.c b/libX11/modules/om/generic/omImText.c
index 1bc08bc25..68086ff76 100644
--- a/libX11/modules/om/generic/omImText.c
+++ b/libX11/modules/om/generic/omImText.c
@@ -1,90 +1,90 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-
-#if 0
-extern int _XomGenericTextExtents(), _XomGenericDrawString();
-#endif
-
-#define GET_VALUE_MASK (GCFunction | GCForeground | GCBackground | GCFillStyle)
-#define SET_VALUE_MASK (GCFunction | GCForeground | GCFillStyle)
-
-static void
-_XomGenericDrawImageString(
- Display *dpy,
- Drawable d,
- XOC oc,
- GC gc,
- int x, int y,
- XOMTextType type,
- XPointer text,
- int length)
-{
- XGCValues values;
- XRectangle extent;
-
- XGetGCValues(dpy, gc, GET_VALUE_MASK, &values);
-
- XSetFunction(dpy, gc, GXcopy);
- XSetForeground(dpy, gc, values.background);
- XSetFillStyle(dpy, gc, FillSolid);
-
- _XomGenericTextExtents(oc, type, text, length, 0, &extent);
- XFillRectangle(dpy, d, gc, x + extent.x, y + extent.y, extent.width,
- extent.height);
-
- XChangeGC(dpy, gc, SET_VALUE_MASK, &values);
-
- _XomGenericDrawString(dpy, d, oc, gc, x, y, type, text, length);
-}
-
-void
-_XmbGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length)
-{
- _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMMultiByte,
- (XPointer) text, length);
-}
-
-void
-_XwcGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst wchar_t *text, int length)
-{
- _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMWideChar,
- (XPointer) text, length);
-}
-
-void
-_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length)
-{
- _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMUtf8String,
- (XPointer) text, length);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+
+#if 0
+extern int _XomGenericTextExtents(), _XomGenericDrawString();
+#endif
+
+#define GET_VALUE_MASK (GCFunction | GCForeground | GCBackground | GCFillStyle)
+#define SET_VALUE_MASK (GCFunction | GCForeground | GCFillStyle)
+
+static void
+_XomGenericDrawImageString(
+ Display *dpy,
+ Drawable d,
+ XOC oc,
+ GC gc,
+ int x, int y,
+ XOMTextType type,
+ XPointer text,
+ int length)
+{
+ XGCValues values;
+ XRectangle extent;
+
+ XGetGCValues(dpy, gc, GET_VALUE_MASK, &values);
+
+ XSetFunction(dpy, gc, GXcopy);
+ XSetForeground(dpy, gc, values.background);
+ XSetFillStyle(dpy, gc, FillSolid);
+
+ _XomGenericTextExtents(oc, type, text, length, 0, &extent);
+ XFillRectangle(dpy, d, gc, x + extent.x, y + extent.y, extent.width,
+ extent.height);
+
+ XChangeGC(dpy, gc, SET_VALUE_MASK, &values);
+
+ _XomGenericDrawString(dpy, d, oc, gc, x, y, type, text, length);
+}
+
+void
+_XmbGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+{
+ _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMMultiByte,
+ (XPointer) text, length);
+}
+
+void
+_XwcGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst wchar_t *text, int length)
+{
+ _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMWideChar,
+ (XPointer) text, length);
+}
+
+void
+_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+{
+ _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMUtf8String,
+ (XPointer) text, length);
+}
diff --git a/libX11/modules/om/generic/omText.c b/libX11/modules/om/generic/omText.c
index bfceca96e..fd957d491 100644
--- a/libX11/modules/om/generic/omText.c
+++ b/libX11/modules/om/generic/omText.c
@@ -1,370 +1,370 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- */
-/*
- * Modifiers: Jeff Walls, Paul Anderson (HEWLETT-PACKARD)
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-#include <stdio.h>
-
-/* For VW/UDC */
-
-static int
-is_rotate(
- XOC oc,
- XFontStruct *font)
-{
- XOCGenericPart *gen = XOC_GENERIC(oc);
- FontSet font_set;
- VRotate vrotate;
- int font_set_count;
- int vrotate_num;
-
- font_set = gen->font_set;
- font_set_count = gen->font_set_num;
- for( ; font_set_count-- ; font_set++) {
- if((font_set->vrotate_num > 0) && (font_set->vrotate)) {
- vrotate = font_set->vrotate;
- vrotate_num = font_set->vrotate_num;
- for( ; vrotate_num-- ; vrotate++)
- if(vrotate->font == font)
- return True;
- }
- }
- return False;
-}
-
-static int
-is_codemap(
- XOC oc,
- XFontStruct *font)
-{
- XOCGenericPart *gen = XOC_GENERIC(oc);
- FontSet font_set;
- FontData vmap;
- int font_set_count;
- int vmap_num;
-
- font_set = gen->font_set;
- font_set_count = gen->font_set_num;
- for( ; font_set_count-- ; font_set++) {
- if(font_set->vmap_num > 0) {
- vmap = font_set->vmap;
- vmap_num = font_set->vmap_num;
- for( ; vmap_num-- ; vmap++)
- if(vmap->font == font)
- return True;
- }
- }
- return False;
-}
-
-static int
-draw_vertical(
- Display *dpy,
- Drawable d,
- XOC oc,
- GC gc,
- XFontStruct *font,
- Bool is_xchar2b,
- int x, int y,
- XPointer text,
- int length)
-{
- XChar2b *buf2b;
- char *buf;
- int wx = 0, wy = 0;
- int direction = 0;
- int font_ascent_return = 0, font_descent_return = 0;
- int i;
- XCharStruct overall;
-
- wy = y;
- if (is_xchar2b) {
- for(i = 0, buf2b = (XChar2b *) text ; i < length ; i++, buf2b++) {
- if(is_rotate(oc, font) == True) {
- XTextExtents16(font, buf2b, 1,
- &direction, &font_ascent_return,
- &font_descent_return, &overall);
- wx = x - (int)((overall.rbearing - overall.lbearing) >> 1) -
- (int) overall.lbearing;
- wy += overall.ascent;
- XDrawString16(dpy, d, gc, wx, wy, buf2b, 1);
- wy += overall.descent;
- } else {
- wx = x - (int)((font->max_bounds.rbearing -
- font->min_bounds.lbearing) >> 1) -
- (int) font->min_bounds.lbearing;
- wy += font->max_bounds.ascent;
- XDrawString16(dpy, d, gc, wx, wy, buf2b, 1);
- wy += font->max_bounds.descent;
- }
- }
- } else {
- for(i = 0, buf = (char *)text ; i < length && *buf ; i++, buf++) {
- if(is_rotate(oc, font) == True) {
- XTextExtents(font, buf, 1,
- &direction, &font_ascent_return,
- &font_descent_return, &overall);
- wx = x - (int)((overall.rbearing - overall.lbearing) >> 1) -
- (int) overall.lbearing;
- wy += overall.ascent;
- XDrawString(dpy, d, gc, wx, wy, buf, 1);
- wy += overall.descent;
- } else {
- wx = x - (int)((font->max_bounds.rbearing -
- font->min_bounds.lbearing) >> 1) -
- (int) font->min_bounds.lbearing;
- wy += font->max_bounds.ascent;
- XDrawString(dpy, d, gc, wx, wy, buf, 1);
- wy += font->max_bounds.descent;
- }
- }
- }
- return wy;
-}
-
-#define VMAP 0
-#define VROTATE 1
-#define FONTSCOPE 2
-
-static int
-DrawStringWithFontSet(
- Display *dpy,
- Drawable d,
- XOC oc,
- FontSet fs,
- GC gc,
- int x, int y,
- XPointer text,
- int length)
-{
- XFontStruct *font;
- Bool is_xchar2b;
- unsigned char *ptr;
- int ptr_len, char_len = 0;
- FontData fd;
- int ret = 0;
-
- ptr = (unsigned char *)text;
- is_xchar2b = fs->is_xchar2b;
-
- while (length > 0) {
- fd = _XomGetFontDataFromFontSet(fs,
- ptr,length,&ptr_len,is_xchar2b,FONTSCOPE);
- if(ptr_len <= 0)
- break;
-
- /* First, see if the "Best Match" font for the FontSet was set.
- * If it was, use that font. If it was not set, then use the
- * font defined by font_set->font_data[0] (which is what
- * _XomGetFontDataFromFontSet() always seems to return for
- * non-VW text). Note that given the new algorithm in
- * parse_fontname() and parse_fontdata(), fs->font will
- * *always* contain good data. We should probably remove
- * the check for "fd->font", but we won't :-) -- jjw/pma (HP)
- */
- if((font = fs->font) == (XFontStruct *) NULL){
-
- if(fd == (FontData) NULL ||
- (font = fd->font) == (XFontStruct *) NULL)
- break;
- }
-
- switch(oc->core.orientation) {
- case XOMOrientation_LTR_TTB:
- case XOMOrientation_RTL_TTB:
- XSetFont(dpy, gc, font->fid);
-
- if (is_xchar2b) {
- char_len = ptr_len / sizeof(XChar2b);
- XDrawString16(dpy, d, gc, x, y, (XChar2b *)ptr, char_len);
- x += XTextWidth16(font, (XChar2b *)ptr, char_len);
- } else {
- char_len = ptr_len;
- XDrawString(dpy, d, gc, x, y, (char *)ptr, char_len);
- x += XTextWidth(font, (char *)ptr, char_len);
- }
- break;
- case XOMOrientation_TTB_RTL:
- case XOMOrientation_TTB_LTR:
- if(fs->font == font) {
- fd = _XomGetFontDataFromFontSet(fs,
- ptr,length,&ptr_len,is_xchar2b,VMAP);
- if(ptr_len <= 0)
- break;
- if(fd == (FontData) NULL ||
- (font = fd->font) == (XFontStruct *) NULL)
- break;
-
- if(is_codemap(oc, fd->font) == False) {
- fd = _XomGetFontDataFromFontSet(fs,
- ptr,length,&ptr_len,is_xchar2b,VROTATE);
- if(ptr_len <= 0)
- break;
- if(fd == (FontData) NULL ||
- (font = fd->font) == (XFontStruct *) NULL)
- break;
- }
- }
-
- if(is_xchar2b)
- char_len = ptr_len / sizeof(XChar2b);
- else
- char_len = ptr_len;
- XSetFont(dpy, gc, font->fid);
- y = draw_vertical(dpy, d, oc, gc, font, is_xchar2b, x, y,
- (char *)ptr, char_len);
- break;
-
- case XOMOrientation_Context:
- /* never used? */
- break;
- }
-
- if(char_len <= 0)
- break;
-
- length -= char_len;
- ptr += ptr_len;
- }
-
- switch(oc->core.orientation) {
- case XOMOrientation_LTR_TTB:
- case XOMOrientation_RTL_TTB:
- ret = x;
- break;
- case XOMOrientation_TTB_RTL:
- case XOMOrientation_TTB_LTR:
- ret = y;
- break;
- case XOMOrientation_Context:
- /* not used? */
- break;
- }
- return ret;
-}
-
-/* For VW/UDC */
-
-int
-_XomGenericDrawString(
- Display *dpy,
- Drawable d,
- XOC oc,
- GC gc,
- int x, int y,
- XOMTextType type,
- XPointer text,
- int length)
-{
- XlcConv conv;
- XFontStruct *font;
- Bool is_xchar2b;
-/* VW/UDC */
- XPointer args[3];
- FontSet fs;
-/* VW/UDC */
- XChar2b xchar2b_buf[BUFSIZ], *buf;
- int start_x = x;
- int start_y = y;
- int left = 0, buf_len = 0;
- int next = 0;
-
- conv = _XomInitConverter(oc, type);
- if (conv == NULL)
- return -1;
-
- args[0] = (XPointer) &font;
- args[1] = (XPointer) &is_xchar2b;
- args[2] = (XPointer) &fs;
-
- while (length > 0) {
- buf = xchar2b_buf;
- left = buf_len = BUFSIZ;
-
- if (_XomConvert(oc, conv, (XPointer *) &text, &length,
- (XPointer *) &buf, &left, args, 3) < 0)
- break;
- buf_len -= left;
-
-/* For VW/UDC */
- next = DrawStringWithFontSet(dpy, d, oc, fs, gc, x, y,
- (XPointer)xchar2b_buf, buf_len);
-
- switch(oc->core.orientation) {
- case XOMOrientation_LTR_TTB:
- case XOMOrientation_RTL_TTB:
- x = next;
- break;
- case XOMOrientation_TTB_RTL:
- case XOMOrientation_TTB_LTR:
- y = next;
- break;
- case XOMOrientation_Context:
- /* not used */
- break;
- }
-/* For VW/UDC */
- }
-
- x -= start_x;
- y -= start_y;
-
- return x;
-}
-
-int
-_XmbGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length)
-{
- return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMMultiByte,
- (XPointer) text, length);
-}
-
-int
-_XwcGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst wchar_t *text, int length)
-{
- return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMWideChar,
- (XPointer) text, length);
-}
-
-int
-_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length)
-{
- return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMUtf8String,
- (XPointer) text, length);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ */
+/*
+ * Modifiers: Jeff Walls, Paul Anderson (HEWLETT-PACKARD)
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+#include <stdio.h>
+
+/* For VW/UDC */
+
+static int
+is_rotate(
+ XOC oc,
+ XFontStruct *font)
+{
+ XOCGenericPart *gen = XOC_GENERIC(oc);
+ FontSet font_set;
+ VRotate vrotate;
+ int font_set_count;
+ int vrotate_num;
+
+ font_set = gen->font_set;
+ font_set_count = gen->font_set_num;
+ for( ; font_set_count-- ; font_set++) {
+ if((font_set->vrotate_num > 0) && (font_set->vrotate)) {
+ vrotate = font_set->vrotate;
+ vrotate_num = font_set->vrotate_num;
+ for( ; vrotate_num-- ; vrotate++)
+ if(vrotate->font == font)
+ return True;
+ }
+ }
+ return False;
+}
+
+static int
+is_codemap(
+ XOC oc,
+ XFontStruct *font)
+{
+ XOCGenericPart *gen = XOC_GENERIC(oc);
+ FontSet font_set;
+ FontData vmap;
+ int font_set_count;
+ int vmap_num;
+
+ font_set = gen->font_set;
+ font_set_count = gen->font_set_num;
+ for( ; font_set_count-- ; font_set++) {
+ if(font_set->vmap_num > 0) {
+ vmap = font_set->vmap;
+ vmap_num = font_set->vmap_num;
+ for( ; vmap_num-- ; vmap++)
+ if(vmap->font == font)
+ return True;
+ }
+ }
+ return False;
+}
+
+static int
+draw_vertical(
+ Display *dpy,
+ Drawable d,
+ XOC oc,
+ GC gc,
+ XFontStruct *font,
+ Bool is_xchar2b,
+ int x, int y,
+ XPointer text,
+ int length)
+{
+ XChar2b *buf2b;
+ char *buf;
+ int wx = 0, wy = 0;
+ int direction = 0;
+ int font_ascent_return = 0, font_descent_return = 0;
+ int i;
+ XCharStruct overall;
+
+ wy = y;
+ if (is_xchar2b) {
+ for(i = 0, buf2b = (XChar2b *) text ; i < length ; i++, buf2b++) {
+ if(is_rotate(oc, font) == True) {
+ XTextExtents16(font, buf2b, 1,
+ &direction, &font_ascent_return,
+ &font_descent_return, &overall);
+ wx = x - (int)((overall.rbearing - overall.lbearing) >> 1) -
+ (int) overall.lbearing;
+ wy += overall.ascent;
+ XDrawString16(dpy, d, gc, wx, wy, buf2b, 1);
+ wy += overall.descent;
+ } else {
+ wx = x - (int)((font->max_bounds.rbearing -
+ font->min_bounds.lbearing) >> 1) -
+ (int) font->min_bounds.lbearing;
+ wy += font->max_bounds.ascent;
+ XDrawString16(dpy, d, gc, wx, wy, buf2b, 1);
+ wy += font->max_bounds.descent;
+ }
+ }
+ } else {
+ for(i = 0, buf = (char *)text ; i < length && *buf ; i++, buf++) {
+ if(is_rotate(oc, font) == True) {
+ XTextExtents(font, buf, 1,
+ &direction, &font_ascent_return,
+ &font_descent_return, &overall);
+ wx = x - (int)((overall.rbearing - overall.lbearing) >> 1) -
+ (int) overall.lbearing;
+ wy += overall.ascent;
+ XDrawString(dpy, d, gc, wx, wy, buf, 1);
+ wy += overall.descent;
+ } else {
+ wx = x - (int)((font->max_bounds.rbearing -
+ font->min_bounds.lbearing) >> 1) -
+ (int) font->min_bounds.lbearing;
+ wy += font->max_bounds.ascent;
+ XDrawString(dpy, d, gc, wx, wy, buf, 1);
+ wy += font->max_bounds.descent;
+ }
+ }
+ }
+ return wy;
+}
+
+#define VMAP 0
+#define VROTATE 1
+#define FONTSCOPE 2
+
+static int
+DrawStringWithFontSet(
+ Display *dpy,
+ Drawable d,
+ XOC oc,
+ FontSet fs,
+ GC gc,
+ int x, int y,
+ XPointer text,
+ int length)
+{
+ XFontStruct *font;
+ Bool is_xchar2b;
+ unsigned char *ptr;
+ int ptr_len, char_len = 0;
+ FontData fd;
+ int ret = 0;
+
+ ptr = (unsigned char *)text;
+ is_xchar2b = fs->is_xchar2b;
+
+ while (length > 0) {
+ fd = _XomGetFontDataFromFontSet(fs,
+ ptr,length,&ptr_len,is_xchar2b,FONTSCOPE);
+ if(ptr_len <= 0)
+ break;
+
+ /* First, see if the "Best Match" font for the FontSet was set.
+ * If it was, use that font. If it was not set, then use the
+ * font defined by font_set->font_data[0] (which is what
+ * _XomGetFontDataFromFontSet() always seems to return for
+ * non-VW text). Note that given the new algorithm in
+ * parse_fontname() and parse_fontdata(), fs->font will
+ * *always* contain good data. We should probably remove
+ * the check for "fd->font", but we won't :-) -- jjw/pma (HP)
+ */
+ if((font = fs->font) == (XFontStruct *) NULL){
+
+ if(fd == (FontData) NULL ||
+ (font = fd->font) == (XFontStruct *) NULL)
+ break;
+ }
+
+ switch(oc->core.orientation) {
+ case XOMOrientation_LTR_TTB:
+ case XOMOrientation_RTL_TTB:
+ XSetFont(dpy, gc, font->fid);
+
+ if (is_xchar2b) {
+ char_len = ptr_len / sizeof(XChar2b);
+ XDrawString16(dpy, d, gc, x, y, (XChar2b *)ptr, char_len);
+ x += XTextWidth16(font, (XChar2b *)ptr, char_len);
+ } else {
+ char_len = ptr_len;
+ XDrawString(dpy, d, gc, x, y, (char *)ptr, char_len);
+ x += XTextWidth(font, (char *)ptr, char_len);
+ }
+ break;
+ case XOMOrientation_TTB_RTL:
+ case XOMOrientation_TTB_LTR:
+ if(fs->font == font) {
+ fd = _XomGetFontDataFromFontSet(fs,
+ ptr,length,&ptr_len,is_xchar2b,VMAP);
+ if(ptr_len <= 0)
+ break;
+ if(fd == (FontData) NULL ||
+ (font = fd->font) == (XFontStruct *) NULL)
+ break;
+
+ if(is_codemap(oc, fd->font) == False) {
+ fd = _XomGetFontDataFromFontSet(fs,
+ ptr,length,&ptr_len,is_xchar2b,VROTATE);
+ if(ptr_len <= 0)
+ break;
+ if(fd == (FontData) NULL ||
+ (font = fd->font) == (XFontStruct *) NULL)
+ break;
+ }
+ }
+
+ if(is_xchar2b)
+ char_len = ptr_len / sizeof(XChar2b);
+ else
+ char_len = ptr_len;
+ XSetFont(dpy, gc, font->fid);
+ y = draw_vertical(dpy, d, oc, gc, font, is_xchar2b, x, y,
+ (char *)ptr, char_len);
+ break;
+
+ case XOMOrientation_Context:
+ /* never used? */
+ break;
+ }
+
+ if(char_len <= 0)
+ break;
+
+ length -= char_len;
+ ptr += ptr_len;
+ }
+
+ switch(oc->core.orientation) {
+ case XOMOrientation_LTR_TTB:
+ case XOMOrientation_RTL_TTB:
+ ret = x;
+ break;
+ case XOMOrientation_TTB_RTL:
+ case XOMOrientation_TTB_LTR:
+ ret = y;
+ break;
+ case XOMOrientation_Context:
+ /* not used? */
+ break;
+ }
+ return ret;
+}
+
+/* For VW/UDC */
+
+int
+_XomGenericDrawString(
+ Display *dpy,
+ Drawable d,
+ XOC oc,
+ GC gc,
+ int x, int y,
+ XOMTextType type,
+ XPointer text,
+ int length)
+{
+ XlcConv conv;
+ XFontStruct *font;
+ Bool is_xchar2b;
+/* VW/UDC */
+ XPointer args[3];
+ FontSet fs;
+/* VW/UDC */
+ XChar2b xchar2b_buf[BUFSIZ], *buf;
+ int start_x = x;
+ int start_y = y;
+ int left = 0, buf_len = 0;
+ int next = 0;
+
+ conv = _XomInitConverter(oc, type);
+ if (conv == NULL)
+ return -1;
+
+ args[0] = (XPointer) &font;
+ args[1] = (XPointer) &is_xchar2b;
+ args[2] = (XPointer) &fs;
+
+ while (length > 0) {
+ buf = xchar2b_buf;
+ left = buf_len = BUFSIZ;
+
+ if (_XomConvert(oc, conv, (XPointer *) &text, &length,
+ (XPointer *) &buf, &left, args, 3) < 0)
+ break;
+ buf_len -= left;
+
+/* For VW/UDC */
+ next = DrawStringWithFontSet(dpy, d, oc, fs, gc, x, y,
+ (XPointer)xchar2b_buf, buf_len);
+
+ switch(oc->core.orientation) {
+ case XOMOrientation_LTR_TTB:
+ case XOMOrientation_RTL_TTB:
+ x = next;
+ break;
+ case XOMOrientation_TTB_RTL:
+ case XOMOrientation_TTB_LTR:
+ y = next;
+ break;
+ case XOMOrientation_Context:
+ /* not used */
+ break;
+ }
+/* For VW/UDC */
+ }
+
+ x -= start_x;
+ y -= start_y;
+
+ return x;
+}
+
+int
+_XmbGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+{
+ return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMMultiByte,
+ (XPointer) text, length);
+}
+
+int
+_XwcGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst wchar_t *text, int length)
+{
+ return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMWideChar,
+ (XPointer) text, length);
+}
+
+int
+_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+{
+ return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMUtf8String,
+ (XPointer) text, length);
+}
diff --git a/libX11/modules/om/generic/omTextEsc.c b/libX11/modules/om/generic/omTextEsc.c
index df1fb10c0..cb444f441 100644
--- a/libX11/modules/om/generic/omTextEsc.c
+++ b/libX11/modules/om/generic/omTextEsc.c
@@ -1,300 +1,300 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-#include <stdio.h>
-
-/* For VW/UDC start */
-
-#define VMAP 0
-#define VROTATE 1
-#define FONTSCOPE 2
-
-static int
-is_rotate(
- XOC oc,
- XFontStruct *font)
-{
- XOCGenericPart *gen = XOC_GENERIC(oc);
- FontSet font_set;
- VRotate vrotate;
- int font_set_count;
- int vrotate_num;
-
- font_set = gen->font_set;
- font_set_count = gen->font_set_num;
- for( ; font_set_count-- ; font_set++) {
- if((font_set->vrotate_num > 0) && (font_set->vrotate != NULL)) {
- vrotate = font_set->vrotate;
- vrotate_num = font_set->vrotate_num;
- for( ; vrotate_num-- ; vrotate++)
- if(vrotate->font == font)
- return True;
- }
- }
- return False;
-}
-
-static int
-is_codemap(
- XOC oc,
- XFontStruct *font)
-{
- XOCGenericPart *gen = XOC_GENERIC(oc);
- FontSet font_set;
- FontData vmap;
- int font_set_count;
- int vmap_num;
-
- font_set = gen->font_set;
- font_set_count = gen->font_set_num;
- for( ; font_set_count-- ; font_set++) {
- if(font_set->vmap_num > 0) {
- vmap = font_set->vmap;
- vmap_num = font_set->vmap_num;
- for( ; vmap_num-- ; vmap++)
- if(vmap->font == font)
- return True;
- }
- }
- return False;
-}
-
-static int
-escapement_vertical(
- XOC oc,
- XFontStruct *font,
- Bool is_xchar2b,
- XPointer text,
- int length)
-{
- XChar2b *buf2b;
- char *buf;
- int escapement = 0, i;
-
- if(is_xchar2b) {
- for(i = 0, buf2b = (XChar2b *) text ; i < length ; i++, buf2b++) {
- if(is_rotate(oc, font) == True) {
- escapement += _XTextHeight16(font, buf2b, 1);
- } else {
- escapement += (int) (font->max_bounds.ascent +
- font->max_bounds.descent);
- }
- }
- } else {
- for(i = 0, buf = (char *)text ; i < length && *buf ; i++, buf++) {
- if(is_rotate(oc, font) == True) {
- escapement += _XTextHeight(font, buf, 1);
- } else {
- escapement += (int) (font->max_bounds.ascent +
- font->max_bounds.descent);
- }
- }
- }
- return escapement;
-}
-
-
-static int
-TextWidthWithFontSet(
- FontSet font_set,
- XOC oc,
- XPointer text,
- int length)
-{
- FontData fd;
- XFontStruct *font;
- unsigned char *ptr = (unsigned char *)text;
- Bool is_xchar2b;
- int ptr_len = length;
- int escapement = 0, char_len = 0;
-
- if(font_set == (FontSet) NULL)
- return escapement;
-
- is_xchar2b = font_set->is_xchar2b;
-
- while(length > 0) {
- fd = _XomGetFontDataFromFontSet(font_set, ptr, length, &ptr_len,
- is_xchar2b, FONTSCOPE);
- if(ptr_len <= 0)
- break;
-
- /*
- * First, see if the "Best Match" font for the FontSet was set.
- * If it was, use that font. If it was not set, then use the
- * font defined by font_set->font_data[0] (which is what
- * _XomGetFontDataFromFontSet() always seems to return for
- * non-VW text). Note that given the new algorithm in
- * parse_fontname() and parse_fontdata(), fs->font will
- * *always* contain good data. We should probably remove
- * the check for "fd->font", but we won't :-) -- jjw/pma (HP)
- *
- * Above comment and way this is done propagated from omText.c
- * Note that fd->font is junk so using the result of the
- * above call /needs/ to be ignored.
- *
- * Owen Taylor <otaylor@redhat.com> 12 Jul 2000
- *
- */
-
- if(fd == (FontData) NULL ||
- (font = font_set->font) == (XFontStruct *) NULL) {
-
- if((font = fd->font) == (XFontStruct *) NULL)
- break;
- }
-
- switch(oc->core.orientation) {
- case XOMOrientation_LTR_TTB:
- case XOMOrientation_RTL_TTB:
- if (is_xchar2b) {
- char_len = ptr_len / sizeof(XChar2b);
- escapement += XTextWidth16(font, (XChar2b *)ptr, char_len);
- } else {
- char_len = ptr_len;
- escapement += XTextWidth(font, (char *)ptr, char_len);
- }
- break;
-
- case XOMOrientation_TTB_LTR:
- case XOMOrientation_TTB_RTL:
- if(font_set->font == font) {
- fd = _XomGetFontDataFromFontSet(font_set, ptr, length, &ptr_len,
- is_xchar2b, VMAP);
- if(ptr_len <= 0)
- break;
- if(fd == (FontData) NULL ||
- (font = fd->font) == (XFontStruct *) NULL)
- break;
-
- if(is_codemap(oc, fd->font) == False) {
- fd = _XomGetFontDataFromFontSet(font_set, ptr, length,
- &ptr_len, is_xchar2b,
- VROTATE);
- if(ptr_len <= 0)
- break;
- if(fd == (FontData) NULL ||
- (font = fd->font) == (XFontStruct *) NULL)
- break;
- }
- }
-
- if(is_xchar2b)
- char_len = ptr_len / sizeof(XChar2b);
- else
- char_len = ptr_len;
- escapement += escapement_vertical(oc, font, is_xchar2b,
- (XPointer) ptr, char_len);
- break;
-
- case XOMOrientation_Context:
- /* not used? */
- break;
- }
-
- if(char_len <= 0)
- break;
-
- length -= char_len;
- ptr += ptr_len;
- }
-
- return escapement;
-}
-
-/* For VW/UDC end */
-
-static int
-_XomGenericTextEscapement(
- XOC oc,
- XOMTextType type,
- XPointer text,
- int length)
-{
- XlcConv conv;
- XFontStruct *font;
- Bool is_xchar2b;
-/* VW/UDC */
- XPointer args[3];
- FontSet font_set;
-/* VW/UDC */
- XChar2b xchar2b_buf[BUFSIZ], *buf;
- int escapement = 0;
- int buf_len = 0, left = 0;
-
- conv = _XomInitConverter(oc, type);
- if (conv == NULL)
- return escapement;
-
- args[0] = (XPointer) &font;
- args[1] = (XPointer) &is_xchar2b;
- args[2] = (XPointer) &font_set;
-
- while (length > 0) {
- buf = xchar2b_buf;
- left = buf_len = BUFSIZ;
-
- if (_XomConvert(oc, conv, (XPointer *) &text, &length,
- (XPointer *) &buf, &left, args, 3) < 0)
- break;
- buf_len -= left;
-
-/* VW/UDC */
- escapement += TextWidthWithFontSet(font_set, oc,
- (XPointer) xchar2b_buf, buf_len);
-/* VW/UDC */
- }
-
- return escapement;
-}
-
-int
-_XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length)
-{
- return _XomGenericTextEscapement(oc, XOMMultiByte, (XPointer) text, length);
-}
-
-int
-_XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
-{
- return _XomGenericTextEscapement(oc, XOMWideChar, (XPointer) text, length);
-}
-
-int
-_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length)
-{
- return _XomGenericTextEscapement(oc, XOMUtf8String, (XPointer) text,
- length);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+#include <stdio.h>
+
+/* For VW/UDC start */
+
+#define VMAP 0
+#define VROTATE 1
+#define FONTSCOPE 2
+
+static int
+is_rotate(
+ XOC oc,
+ XFontStruct *font)
+{
+ XOCGenericPart *gen = XOC_GENERIC(oc);
+ FontSet font_set;
+ VRotate vrotate;
+ int font_set_count;
+ int vrotate_num;
+
+ font_set = gen->font_set;
+ font_set_count = gen->font_set_num;
+ for( ; font_set_count-- ; font_set++) {
+ if((font_set->vrotate_num > 0) && (font_set->vrotate != NULL)) {
+ vrotate = font_set->vrotate;
+ vrotate_num = font_set->vrotate_num;
+ for( ; vrotate_num-- ; vrotate++)
+ if(vrotate->font == font)
+ return True;
+ }
+ }
+ return False;
+}
+
+static int
+is_codemap(
+ XOC oc,
+ XFontStruct *font)
+{
+ XOCGenericPart *gen = XOC_GENERIC(oc);
+ FontSet font_set;
+ FontData vmap;
+ int font_set_count;
+ int vmap_num;
+
+ font_set = gen->font_set;
+ font_set_count = gen->font_set_num;
+ for( ; font_set_count-- ; font_set++) {
+ if(font_set->vmap_num > 0) {
+ vmap = font_set->vmap;
+ vmap_num = font_set->vmap_num;
+ for( ; vmap_num-- ; vmap++)
+ if(vmap->font == font)
+ return True;
+ }
+ }
+ return False;
+}
+
+static int
+escapement_vertical(
+ XOC oc,
+ XFontStruct *font,
+ Bool is_xchar2b,
+ XPointer text,
+ int length)
+{
+ XChar2b *buf2b;
+ char *buf;
+ int escapement = 0, i;
+
+ if(is_xchar2b) {
+ for(i = 0, buf2b = (XChar2b *) text ; i < length ; i++, buf2b++) {
+ if(is_rotate(oc, font) == True) {
+ escapement += _XTextHeight16(font, buf2b, 1);
+ } else {
+ escapement += (int) (font->max_bounds.ascent +
+ font->max_bounds.descent);
+ }
+ }
+ } else {
+ for(i = 0, buf = (char *)text ; i < length && *buf ; i++, buf++) {
+ if(is_rotate(oc, font) == True) {
+ escapement += _XTextHeight(font, buf, 1);
+ } else {
+ escapement += (int) (font->max_bounds.ascent +
+ font->max_bounds.descent);
+ }
+ }
+ }
+ return escapement;
+}
+
+
+static int
+TextWidthWithFontSet(
+ FontSet font_set,
+ XOC oc,
+ XPointer text,
+ int length)
+{
+ FontData fd;
+ XFontStruct *font;
+ unsigned char *ptr = (unsigned char *)text;
+ Bool is_xchar2b;
+ int ptr_len = length;
+ int escapement = 0, char_len = 0;
+
+ if(font_set == (FontSet) NULL)
+ return escapement;
+
+ is_xchar2b = font_set->is_xchar2b;
+
+ while(length > 0) {
+ fd = _XomGetFontDataFromFontSet(font_set, ptr, length, &ptr_len,
+ is_xchar2b, FONTSCOPE);
+ if(ptr_len <= 0)
+ break;
+
+ /*
+ * First, see if the "Best Match" font for the FontSet was set.
+ * If it was, use that font. If it was not set, then use the
+ * font defined by font_set->font_data[0] (which is what
+ * _XomGetFontDataFromFontSet() always seems to return for
+ * non-VW text). Note that given the new algorithm in
+ * parse_fontname() and parse_fontdata(), fs->font will
+ * *always* contain good data. We should probably remove
+ * the check for "fd->font", but we won't :-) -- jjw/pma (HP)
+ *
+ * Above comment and way this is done propagated from omText.c
+ * Note that fd->font is junk so using the result of the
+ * above call /needs/ to be ignored.
+ *
+ * Owen Taylor <otaylor@redhat.com> 12 Jul 2000
+ *
+ */
+
+ if(fd == (FontData) NULL ||
+ (font = font_set->font) == (XFontStruct *) NULL) {
+
+ if((font = fd->font) == (XFontStruct *) NULL)
+ break;
+ }
+
+ switch(oc->core.orientation) {
+ case XOMOrientation_LTR_TTB:
+ case XOMOrientation_RTL_TTB:
+ if (is_xchar2b) {
+ char_len = ptr_len / sizeof(XChar2b);
+ escapement += XTextWidth16(font, (XChar2b *)ptr, char_len);
+ } else {
+ char_len = ptr_len;
+ escapement += XTextWidth(font, (char *)ptr, char_len);
+ }
+ break;
+
+ case XOMOrientation_TTB_LTR:
+ case XOMOrientation_TTB_RTL:
+ if(font_set->font == font) {
+ fd = _XomGetFontDataFromFontSet(font_set, ptr, length, &ptr_len,
+ is_xchar2b, VMAP);
+ if(ptr_len <= 0)
+ break;
+ if(fd == (FontData) NULL ||
+ (font = fd->font) == (XFontStruct *) NULL)
+ break;
+
+ if(is_codemap(oc, fd->font) == False) {
+ fd = _XomGetFontDataFromFontSet(font_set, ptr, length,
+ &ptr_len, is_xchar2b,
+ VROTATE);
+ if(ptr_len <= 0)
+ break;
+ if(fd == (FontData) NULL ||
+ (font = fd->font) == (XFontStruct *) NULL)
+ break;
+ }
+ }
+
+ if(is_xchar2b)
+ char_len = ptr_len / sizeof(XChar2b);
+ else
+ char_len = ptr_len;
+ escapement += escapement_vertical(oc, font, is_xchar2b,
+ (XPointer) ptr, char_len);
+ break;
+
+ case XOMOrientation_Context:
+ /* not used? */
+ break;
+ }
+
+ if(char_len <= 0)
+ break;
+
+ length -= char_len;
+ ptr += ptr_len;
+ }
+
+ return escapement;
+}
+
+/* For VW/UDC end */
+
+static int
+_XomGenericTextEscapement(
+ XOC oc,
+ XOMTextType type,
+ XPointer text,
+ int length)
+{
+ XlcConv conv;
+ XFontStruct *font;
+ Bool is_xchar2b;
+/* VW/UDC */
+ XPointer args[3];
+ FontSet font_set;
+/* VW/UDC */
+ XChar2b xchar2b_buf[BUFSIZ], *buf;
+ int escapement = 0;
+ int buf_len = 0, left = 0;
+
+ conv = _XomInitConverter(oc, type);
+ if (conv == NULL)
+ return escapement;
+
+ args[0] = (XPointer) &font;
+ args[1] = (XPointer) &is_xchar2b;
+ args[2] = (XPointer) &font_set;
+
+ while (length > 0) {
+ buf = xchar2b_buf;
+ left = buf_len = BUFSIZ;
+
+ if (_XomConvert(oc, conv, (XPointer *) &text, &length,
+ (XPointer *) &buf, &left, args, 3) < 0)
+ break;
+ buf_len -= left;
+
+/* VW/UDC */
+ escapement += TextWidthWithFontSet(font_set, oc,
+ (XPointer) xchar2b_buf, buf_len);
+/* VW/UDC */
+ }
+
+ return escapement;
+}
+
+int
+_XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length)
+{
+ return _XomGenericTextEscapement(oc, XOMMultiByte, (XPointer) text, length);
+}
+
+int
+_XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
+{
+ return _XomGenericTextEscapement(oc, XOMWideChar, (XPointer) text, length);
+}
+
+int
+_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length)
+{
+ return _XomGenericTextEscapement(oc, XOMUtf8String, (XPointer) text,
+ length);
+}
diff --git a/libX11/modules/om/generic/omTextExt.c b/libX11/modules/om/generic/omTextExt.c
index baeadf6b0..22f99d8f5 100644
--- a/libX11/modules/om/generic/omTextExt.c
+++ b/libX11/modules/om/generic/omTextExt.c
@@ -1,135 +1,135 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-#include <stdio.h>
-
-int
-_XomGenericTextExtents(
- XOC oc,
- XOMTextType type,
- XPointer text,
- int length,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- XlcConv conv;
- XFontStruct *font;
- Bool is_xchar2b;
- XPointer args[2];
- XChar2b xchar2b_buf[BUFSIZ], *buf;
- int direction, logical_ascent, logical_descent, tmp_ascent, tmp_descent;
- XCharStruct overall, tmp_overall;
- int buf_len, left;
- Bool first = True;
-
- conv = _XomInitConverter(oc, type);
- if (conv == NULL)
- return 0;
-
- bzero((char *) &overall, sizeof(XCharStruct));
- logical_ascent = logical_descent = 0;
-
- args[0] = (XPointer) &font;
- args[1] = (XPointer) &is_xchar2b;
-
- while (length > 0) {
- buf = xchar2b_buf;
- left = buf_len = BUFSIZ;
-
- if (_XomConvert(oc, conv, (XPointer *) &text, &length,
- (XPointer *) &buf, &left, args, 2) < 0)
- break;
- buf_len -= left;
-
- if (is_xchar2b)
- XTextExtents16(font, xchar2b_buf, buf_len, &direction,
- &tmp_ascent, &tmp_descent, &tmp_overall);
- else
- XTextExtents(font, (char *) xchar2b_buf, buf_len, &direction,
- &tmp_ascent, &tmp_descent, &tmp_overall);
-
- if (first) { /* initialize overall */
- overall = tmp_overall;
- logical_ascent = tmp_ascent;
- logical_descent = tmp_descent;
- first = False;
- } else {
- overall.lbearing = min(overall.lbearing,
- overall.width + tmp_overall.lbearing);
- overall.rbearing = max(overall.rbearing,
- overall.width + tmp_overall.rbearing);
- overall.ascent = max(overall.ascent, tmp_overall.ascent);
- overall.descent = max(overall.descent, tmp_overall.descent);
- overall.width += tmp_overall.width;
- logical_ascent = max(logical_ascent, tmp_ascent);
- logical_descent = max(logical_descent, tmp_descent);
- }
- }
-
- if (overall_ink) {
- overall_ink->x = overall.lbearing;
- overall_ink->y = -(overall.ascent);
- overall_ink->width = overall.rbearing - overall.lbearing;
- overall_ink->height = overall.ascent + overall.descent;
- }
-
- if (overall_logical) {
- overall_logical->x = 0;
- overall_logical->y = -(logical_ascent);
- overall_logical->width = overall.width;
- overall_logical->height = logical_ascent + logical_descent;
- }
-
- return overall.width;
-}
-
-int
-_XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- return _XomGenericTextExtents(oc, XOMMultiByte, (XPointer) text, length,
- overall_ink, overall_logical);
-}
-
-int
-_XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- return _XomGenericTextExtents(oc, XOMWideChar, (XPointer) text, length,
- overall_ink, overall_logical);
-}
-
-int
-_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- return _XomGenericTextExtents(oc, XOMUtf8String, (XPointer) text, length,
- overall_ink, overall_logical);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+#include <stdio.h>
+
+int
+_XomGenericTextExtents(
+ XOC oc,
+ XOMTextType type,
+ XPointer text,
+ int length,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ XlcConv conv;
+ XFontStruct *font;
+ Bool is_xchar2b;
+ XPointer args[2];
+ XChar2b xchar2b_buf[BUFSIZ], *buf;
+ int direction, logical_ascent, logical_descent, tmp_ascent, tmp_descent;
+ XCharStruct overall, tmp_overall;
+ int buf_len, left;
+ Bool first = True;
+
+ conv = _XomInitConverter(oc, type);
+ if (conv == NULL)
+ return 0;
+
+ bzero((char *) &overall, sizeof(XCharStruct));
+ logical_ascent = logical_descent = 0;
+
+ args[0] = (XPointer) &font;
+ args[1] = (XPointer) &is_xchar2b;
+
+ while (length > 0) {
+ buf = xchar2b_buf;
+ left = buf_len = BUFSIZ;
+
+ if (_XomConvert(oc, conv, (XPointer *) &text, &length,
+ (XPointer *) &buf, &left, args, 2) < 0)
+ break;
+ buf_len -= left;
+
+ if (is_xchar2b)
+ XTextExtents16(font, xchar2b_buf, buf_len, &direction,
+ &tmp_ascent, &tmp_descent, &tmp_overall);
+ else
+ XTextExtents(font, (char *) xchar2b_buf, buf_len, &direction,
+ &tmp_ascent, &tmp_descent, &tmp_overall);
+
+ if (first) { /* initialize overall */
+ overall = tmp_overall;
+ logical_ascent = tmp_ascent;
+ logical_descent = tmp_descent;
+ first = False;
+ } else {
+ overall.lbearing = min(overall.lbearing,
+ overall.width + tmp_overall.lbearing);
+ overall.rbearing = max(overall.rbearing,
+ overall.width + tmp_overall.rbearing);
+ overall.ascent = max(overall.ascent, tmp_overall.ascent);
+ overall.descent = max(overall.descent, tmp_overall.descent);
+ overall.width += tmp_overall.width;
+ logical_ascent = max(logical_ascent, tmp_ascent);
+ logical_descent = max(logical_descent, tmp_descent);
+ }
+ }
+
+ if (overall_ink) {
+ overall_ink->x = overall.lbearing;
+ overall_ink->y = -(overall.ascent);
+ overall_ink->width = overall.rbearing - overall.lbearing;
+ overall_ink->height = overall.ascent + overall.descent;
+ }
+
+ if (overall_logical) {
+ overall_logical->x = 0;
+ overall_logical->y = -(logical_ascent);
+ overall_logical->width = overall.width;
+ overall_logical->height = logical_ascent + logical_descent;
+ }
+
+ return overall.width;
+}
+
+int
+_XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ return _XomGenericTextExtents(oc, XOMMultiByte, (XPointer) text, length,
+ overall_ink, overall_logical);
+}
+
+int
+_XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ return _XomGenericTextExtents(oc, XOMWideChar, (XPointer) text, length,
+ overall_ink, overall_logical);
+}
+
+int
+_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ return _XomGenericTextExtents(oc, XOMUtf8String, (XPointer) text, length,
+ overall_ink, overall_logical);
+}
diff --git a/libX11/modules/om/generic/omTextPer.c b/libX11/modules/om/generic/omTextPer.c
index ae08fe6a4..c66848aa2 100644
--- a/libX11/modules/om/generic/omTextPer.c
+++ b/libX11/modules/om/generic/omTextPer.c
@@ -1,202 +1,202 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-#include <stdio.h>
-
-static Status
-_XomGenericTextPerCharExtents(
- XOC oc,
- XOMTextType type,
- XPointer text,
- int length,
- XRectangle *ink_buf,
- XRectangle *logical_buf,
- int buf_size,
- int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- XlcConv conv;
- XFontStruct *font;
- Bool is_xchar2b;
- XPointer args[2];
- XChar2b xchar2b_buf[BUFSIZ], *xchar2b_ptr;
- char *xchar_ptr = NULL;
- XCharStruct *def, *cs, overall;
- int buf_len, left, require_num;
- int logical_ascent, logical_descent;
- Bool first = True;
-
- conv = _XomInitConverter(oc, type);
- if (conv == NULL)
- return 0;
-
- bzero((char *) &overall, sizeof(XCharStruct));
- logical_ascent = logical_descent = require_num = *num_chars = 0;
-
- args[0] = (XPointer) &font;
- args[1] = (XPointer) &is_xchar2b;
-
- while (length > 0) {
- xchar2b_ptr = xchar2b_buf;
- left = buf_len = BUFSIZ;
-
- if (_XomConvert(oc, conv, (XPointer *) &text, &length,
- (XPointer *) &xchar2b_ptr, &left, args, 2) < 0)
- break;
- buf_len -= left;
-
- if (require_num) {
- require_num += buf_len;
- continue;
- }
- if (buf_size < buf_len) {
- require_num = *num_chars + buf_len;
- continue;
- }
- buf_size -= buf_len;
-
- if (first) {
- logical_ascent = font->ascent;
- logical_descent = font->descent;
- } else {
- logical_ascent = max(logical_ascent, font->ascent);
- logical_descent = max(logical_descent, font->descent);
- }
-
- if (is_xchar2b) {
- CI_GET_DEFAULT_INFO_2D(font, def)
- xchar2b_ptr = xchar2b_buf;
- } else {
- CI_GET_DEFAULT_INFO_1D(font, def)
- xchar_ptr = (char *) xchar2b_buf;
- }
-
- while (buf_len-- > 0) {
- if (is_xchar2b) {
- CI_GET_CHAR_INFO_2D(font, xchar2b_ptr->byte1,
- xchar2b_ptr->byte2, def, cs)
- xchar2b_ptr++;
- } else {
- CI_GET_CHAR_INFO_1D(font, *xchar_ptr, def, cs)
- xchar_ptr++;
- }
- if (cs == NULL)
- continue;
-
- ink_buf->x = overall.width + cs->lbearing;
- ink_buf->y = -(cs->ascent);
- ink_buf->width = cs->rbearing - cs->lbearing;
- ink_buf->height = cs->ascent + cs->descent;
- ink_buf++;
-
- logical_buf->x = overall.width;
- logical_buf->y = -(font->ascent);
- logical_buf->width = cs->width;
- logical_buf->height = font->ascent + font->descent;
- logical_buf++;
-
- if (first) {
- overall = *cs;
- first = False;
- } else {
- overall.ascent = max(overall.ascent, cs->ascent);
- overall.descent = max(overall.descent, cs->descent);
- overall.lbearing = min(overall.lbearing,
- overall.width + cs->lbearing);
- overall.rbearing = max(overall.rbearing,
- overall.width + cs->rbearing);
- overall.width += cs->width;
- }
-
- (*num_chars)++;
- }
- }
-
- if (require_num) {
- *num_chars = require_num;
- return 0;
- } else {
- if (overall_ink) {
- overall_ink->x = overall.lbearing;
- overall_ink->y = -(overall.ascent);
- overall_ink->width = overall.rbearing - overall.lbearing;
- overall_ink->height = overall.ascent + overall.descent;
- }
-
- if (overall_logical) {
- overall_logical->x = 0;
- overall_logical->y = -(logical_ascent);
- overall_logical->width = overall.width;
- overall_logical->height = logical_ascent + logical_descent;
- }
- }
-
- return 1;
-}
-
-Status
-_XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- return _XomGenericTextPerCharExtents(oc, XOMMultiByte, (XPointer) text,
- length, ink_buf, logical_buf, buf_size,
- num_chars, overall_ink,
- overall_logical);
-}
-
-Status
-_XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- return _XomGenericTextPerCharExtents(oc, XOMWideChar, (XPointer) text,
- length, ink_buf, logical_buf, buf_size,
- num_chars, overall_ink,
- overall_logical);
-}
-
-Status
-_Xutf8GenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- return _XomGenericTextPerCharExtents(oc, XOMUtf8String, (XPointer) text,
- length, ink_buf, logical_buf, buf_size,
- num_chars, overall_ink,
- overall_logical);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+#include <stdio.h>
+
+static Status
+_XomGenericTextPerCharExtents(
+ XOC oc,
+ XOMTextType type,
+ XPointer text,
+ int length,
+ XRectangle *ink_buf,
+ XRectangle *logical_buf,
+ int buf_size,
+ int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ XlcConv conv;
+ XFontStruct *font;
+ Bool is_xchar2b;
+ XPointer args[2];
+ XChar2b xchar2b_buf[BUFSIZ], *xchar2b_ptr;
+ char *xchar_ptr = NULL;
+ XCharStruct *def, *cs, overall;
+ int buf_len, left, require_num;
+ int logical_ascent, logical_descent;
+ Bool first = True;
+
+ conv = _XomInitConverter(oc, type);
+ if (conv == NULL)
+ return 0;
+
+ bzero((char *) &overall, sizeof(XCharStruct));
+ logical_ascent = logical_descent = require_num = *num_chars = 0;
+
+ args[0] = (XPointer) &font;
+ args[1] = (XPointer) &is_xchar2b;
+
+ while (length > 0) {
+ xchar2b_ptr = xchar2b_buf;
+ left = buf_len = BUFSIZ;
+
+ if (_XomConvert(oc, conv, (XPointer *) &text, &length,
+ (XPointer *) &xchar2b_ptr, &left, args, 2) < 0)
+ break;
+ buf_len -= left;
+
+ if (require_num) {
+ require_num += buf_len;
+ continue;
+ }
+ if (buf_size < buf_len) {
+ require_num = *num_chars + buf_len;
+ continue;
+ }
+ buf_size -= buf_len;
+
+ if (first) {
+ logical_ascent = font->ascent;
+ logical_descent = font->descent;
+ } else {
+ logical_ascent = max(logical_ascent, font->ascent);
+ logical_descent = max(logical_descent, font->descent);
+ }
+
+ if (is_xchar2b) {
+ CI_GET_DEFAULT_INFO_2D(font, def)
+ xchar2b_ptr = xchar2b_buf;
+ } else {
+ CI_GET_DEFAULT_INFO_1D(font, def)
+ xchar_ptr = (char *) xchar2b_buf;
+ }
+
+ while (buf_len-- > 0) {
+ if (is_xchar2b) {
+ CI_GET_CHAR_INFO_2D(font, xchar2b_ptr->byte1,
+ xchar2b_ptr->byte2, def, cs)
+ xchar2b_ptr++;
+ } else {
+ CI_GET_CHAR_INFO_1D(font, *xchar_ptr, def, cs)
+ xchar_ptr++;
+ }
+ if (cs == NULL)
+ continue;
+
+ ink_buf->x = overall.width + cs->lbearing;
+ ink_buf->y = -(cs->ascent);
+ ink_buf->width = cs->rbearing - cs->lbearing;
+ ink_buf->height = cs->ascent + cs->descent;
+ ink_buf++;
+
+ logical_buf->x = overall.width;
+ logical_buf->y = -(font->ascent);
+ logical_buf->width = cs->width;
+ logical_buf->height = font->ascent + font->descent;
+ logical_buf++;
+
+ if (first) {
+ overall = *cs;
+ first = False;
+ } else {
+ overall.ascent = max(overall.ascent, cs->ascent);
+ overall.descent = max(overall.descent, cs->descent);
+ overall.lbearing = min(overall.lbearing,
+ overall.width + cs->lbearing);
+ overall.rbearing = max(overall.rbearing,
+ overall.width + cs->rbearing);
+ overall.width += cs->width;
+ }
+
+ (*num_chars)++;
+ }
+ }
+
+ if (require_num) {
+ *num_chars = require_num;
+ return 0;
+ } else {
+ if (overall_ink) {
+ overall_ink->x = overall.lbearing;
+ overall_ink->y = -(overall.ascent);
+ overall_ink->width = overall.rbearing - overall.lbearing;
+ overall_ink->height = overall.ascent + overall.descent;
+ }
+
+ if (overall_logical) {
+ overall_logical->x = 0;
+ overall_logical->y = -(logical_ascent);
+ overall_logical->width = overall.width;
+ overall_logical->height = logical_ascent + logical_descent;
+ }
+ }
+
+ return 1;
+}
+
+Status
+_XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ return _XomGenericTextPerCharExtents(oc, XOMMultiByte, (XPointer) text,
+ length, ink_buf, logical_buf, buf_size,
+ num_chars, overall_ink,
+ overall_logical);
+}
+
+Status
+_XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ return _XomGenericTextPerCharExtents(oc, XOMWideChar, (XPointer) text,
+ length, ink_buf, logical_buf, buf_size,
+ num_chars, overall_ink,
+ overall_logical);
+}
+
+Status
+_Xutf8GenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ return _XomGenericTextPerCharExtents(oc, XOMUtf8String, (XPointer) text,
+ length, ink_buf, logical_buf, buf_size,
+ num_chars, overall_ink,
+ overall_logical);
+}
diff --git a/libX11/modules/om/generic/omXChar.c b/libX11/modules/om/generic/omXChar.c
index ff517d5e5..61c8c0b89 100644
--- a/libX11/modules/om/generic/omXChar.c
+++ b/libX11/modules/om/generic/omXChar.c
@@ -1,477 +1,477 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-/*
- * Modifiers: Jeff Walls, Paul Anderson (HEWLETT-PACKARD)
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPublic.h"
-#include "XomGeneric.h"
-#include <stdio.h>
-
-/* for VW/UDC start */
-static Bool
-ismatch_scopes(
- FontData fontdata,
- unsigned long *value,
- Bool is_shift)
-{
- register int scopes_num = fontdata->scopes_num;
- FontScope scopes = fontdata->scopes;
- if (!scopes_num)
- return False;
-
- if(fontdata->font == NULL)
- return False;
-
- for(;scopes_num--;scopes++)
- if ((scopes->start <= (*value & 0x7f7f)) &&
- ((scopes->end) >= (*value & 0x7f7f))){
- if(is_shift == True) {
- if(scopes->shift){
- if(scopes->shift_direction == '+'){
- *value += scopes->shift ;
- } else if( scopes->shift_direction == '-'){
- *value -= scopes->shift ;
- }
- }
- }
- return True;
- }
-
- return False;
-}
-
-static int
-check_vertical_fonttype(
- char *name)
-{
- char *ptr;
- int type = 0;
-
- if(name == (char *)NULL || (int) strlen(name) <= 0)
- return False;
-
- /* Obtains the pointer of CHARSET_ENCODING_FIELD. */
- if((ptr = strchr(name, '-')) == (char *) NULL)
- return False;
- ptr++;
-
- /* Obtains the pointer of vertical_map font type. */
- if((ptr = strchr(ptr, '.')) == (char *) NULL)
- return False;
- ptr++;
-
- switch(*ptr) {
- case '1':
- type = 1; break;
- case '2':
- type = 2; break;
- case '3':
- type = 3; break;
- }
- return type;
-}
-
-/*
-*/
-#define VMAP 0
-#define VROTATE 1
-#define FONTSCOPE 2
-
-FontData
-_XomGetFontDataFromFontSet(
- FontSet fs,
- unsigned char *str,
- int len,
- int *len_ret,
- int is2b,
- int type) /* VMAP , VROTATE , else */
-{
- unsigned long value;
- int num,i,hit,csize;
- FontData fontdata;
- unsigned char *c;
- int vfont_type;
-
- c = str;
- hit = -1;
- if(type == VMAP){
- fontdata = fs->vmap;
- num = fs->vmap_num;
- } else if(type == VROTATE){
- fontdata = (FontData)fs->vrotate;
- num = fs->vrotate_num;
- } else {
- if(fs->font_data_count <= 0 || fs->font_data == (FontData)NULL) {
- fontdata = fs->substitute;
- num = fs->substitute_num;
- }else {
- fontdata = fs->font_data;
- num = fs->font_data_count;
- }
- /* CDExc20229 fix */
- if(fontdata == NULL || num == 0){
- return(NULL);
- }
- }
-
-
- if(is2b){
- csize = 2;
- } else {
- csize = 1;
- }
-
- for(;len;len--){
- if(is2b){
- value = (((unsigned long)*c) << 8)|(unsigned long)*(c + 1);
- } else {
- value = (unsigned long)*c;
- }
-
- /* ### NOTE: This routine DOES NOT WORK!
- * ### We can work around the problem in the calling routine,
- * ### but we really need to understand this better. As it
- * ### stands, the algorithm ALWAYS returns "fontdata[0]"
- * ### for non-VW text! This is clearly wrong. In fact,
- * ### given the new parse_font[name|data]() algorithms,
- * ### we may not even need this routine to do anything
- * ### for non-VW text (since font_set->font always contains
- * ### the best font for this fontset). -- jjw/pma (HP)
- */
- for (i=0;i<num;i++) {
- if(type == VROTATE) {
- if(fontdata[i].font) {
- /* If the num_cr equal zero, all character is rotated. */
- if(fontdata[i].scopes_num == 0) {
- break;
- } else {
- /* The vertical rotate glyph is not have code shift. */
- if (ismatch_scopes(&(fontdata[i]),&value,False)) {
- break;
- }
- }
- }
- } else if(type == VMAP) {
- if(fontdata[i].font) {
- vfont_type = check_vertical_fonttype(fontdata[i].name);
- if(vfont_type == 0 || vfont_type == 1) {
- break;
- } else if(vfont_type == 2 || vfont_type == 3) {
- if(fontdata[i].scopes_num <= 0)
- break;
-
- if (ismatch_scopes(&(fontdata[i]),&value,True)) {
- break;
- }
- }
- }
- } else { /* FONTSCOPE */
- if(fontdata[i].font) {
- if(fontdata[i].scopes_num <= 0)
- break;
- if (ismatch_scopes(&(fontdata[i]),&value,True)){
- break;
- }
- }
- }
- }
- if((hit != -1) && (i != hit)){
- break;
- }
- if(i == num){
- if( type == VROTATE || type == VMAP){
- /* Change 1996.01.23 start */
- if(fs->font_data_count <= 0 ||
- fs->font_data == (FontData)NULL)
- fontdata = fs->substitute;
- else
- fontdata = fs->font_data;
- /* Change 1996.01.23 end */
- }
- hit = 0;
- c += csize;
- break;
- }
- if( hit == -1 ) hit = i;
- if(is2b){
- *c = (unsigned char)(value >> 8);
- *(c + 1) = (unsigned char)(value);
- } else {
- *c = (unsigned char)value;
- }
- c += csize;
- }
- *len_ret = (c - str);
- return(&(fontdata[hit]));
-}
-/* for VW/UDC end */
-
-static FontSet
-_XomGetFontSetFromCharSet(
- XOC oc,
- XlcCharSet charset)
-{
- register FontSet font_set = XOC_GENERIC(oc)->font_set;
- register int num = XOC_GENERIC(oc)->font_set_num;
- XlcCharSet *charset_list;
- int charset_count;
-
- for ( ; num-- > 0; font_set++) {
- charset_count = font_set->charset_count;
- charset_list = font_set->charset_list;
- for ( ; charset_count-- > 0; charset_list++)
- if (*charset_list == charset)
- return font_set;
- }
-
- return (FontSet) NULL;
-}
-
-#ifdef MUSTCOPY
-static void
-cs_to_xchar2b(
- register char *from,
- register XChar2b *to,
- register length)
-{
- while (length-- > 0) {
- to->byte1 = *from++;
- to->byte2 = *from++;
- to++;
- }
-}
-
-static void
-cs_to_xchar2b_gl(
- register char *from,
- register XChar2b *to,
- register length)
-{
- while (length-- > 0) {
- to->byte1 = *from++ & 0x7f;
- to->byte2 = *from++ & 0x7f;
- to++;
- }
-}
-
-static void
-cs_to_xchar2b_gr(
- register char *from,
- register XChar2b *to,
- register length)
-{
- while (length-- > 0) {
- to->byte1 = *from++ | 0x80;
- to->byte2 = *from++ | 0x80;
- to++;
- }
-}
-#endif
-
-static void
-shift_to_gl(
- register char *text,
- register int length)
-{
- while (length-- > 0)
- *text++ &= 0x7f;
-}
-
-static void
-shift_to_gr(
- register char *text,
- register int length)
-{
- while (length-- > 0)
- *text++ |= 0x80;
-}
-
-static Bool
-load_font(
- XOC oc,
- FontSet font_set)
-{
- font_set->font = XLoadQueryFont(oc->core.om->core.display,
- oc->core.font_info.font_name_list[font_set->id]);
- if (font_set->font == NULL)
- return False;
-
- oc->core.font_info.font_struct_list[font_set->id] = font_set->font;
- XFreeFontInfo(NULL, font_set->info, 1);
- font_set->info = NULL;
-
- if (font_set->font->min_byte1 || font_set->font->max_byte1)
- font_set->is_xchar2b = True;
- else
- font_set->is_xchar2b = False;
-
- return True;
-}
-
-int
-_XomConvert(
- XOC oc,
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XPointer cs, lc_args[1];
- XlcCharSet charset;
- int length, cs_left, ret;
- FontSet font_set;
-#ifdef MUSTCOPY
- XChar2b *xchar2b;
- char *buf, buf_local[BUFSIZ];
-#endif
-
- cs = *to;
- cs_left = *to_left;
- lc_args[0] = (XPointer) &charset;
-
- ret = _XlcConvert(conv, from, from_left, &cs, &cs_left, lc_args, 1);
- if (ret < 0)
- return -1;
-
- font_set = _XomGetFontSetFromCharSet(oc, charset);
- if (font_set == NULL)
- return -1;
-
- if (font_set->font == NULL && load_font(oc, font_set) == False)
- return -1;
-
- length = *to_left - cs_left;
-
-#ifdef MUSTCOPY
- if (font_set->is_xchar2b) {
- buf = (length > BUFSIZ) ? Xmalloc(length) : buf_local;
- if (buf == NULL)
- return -1;
- memcpy(buf, (char *) *to, length);
-
- xchar2b = (XChar2b *) *to;
- length >>= 1;
-
- if (font_set->side == charset->side)
- cs_to_xchar2b(buf, xchar2b, length);
- else if (font_set->side == XlcGL)
- cs_to_xchar2b_gl(buf, xchar2b, length);
- else if (font_set->side == XlcGR)
- cs_to_xchar2b_gr(buf, xchar2b, length);
- else
- cs_to_xchar2b(buf, xchar2b, length);
-
- if (buf != buf_local)
- Xfree(buf);
-
- *to = (XPointer) (xchar2b + length);
- *to_left -= length;
- } else
-#endif
- {
- if (font_set->side != charset->side) {
- if (font_set->side == XlcGL)
- shift_to_gl(*to, length);
- else if (font_set->side == XlcGR)
- shift_to_gr(*to, length);
- }
-
- if (font_set->is_xchar2b)
- length >>= 1;
- *to = cs;
- *to_left -= length;
- }
-
- *((XFontStruct **) args[0]) = font_set->font;
- *((Bool *) args[1]) = font_set->is_xchar2b;
- if(num_args >= 3){
- *((FontSet *) args[2]) = font_set;
- }
-
- return ret;
-}
-
-XlcConv
-_XomInitConverter(
- XOC oc,
- XOMTextType type)
-{
- XOCGenericPart *gen = XOC_GENERIC(oc);
- XlcConv *convp;
- const char *conv_type;
- XlcConv conv;
- XLCd lcd;
-
- switch (type) {
- case XOMWideChar:
- convp = &gen->wcs_to_cs;
- conv_type = XlcNWideChar;
- break;
- case XOMMultiByte:
- convp = &gen->mbs_to_cs;
- conv_type = XlcNMultiByte;
- break;
- case XOMUtf8String:
- convp = &gen->utf8_to_cs;
- conv_type = XlcNUtf8String;
- break;
- default:
- return (XlcConv) NULL;
- }
-
- conv = *convp;
- if (conv) {
- _XlcResetConverter(conv);
- return conv;
- }
-
- lcd = oc->core.om->core.lcd;
-
- conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNFontCharSet);
- if (conv == (XlcConv) NULL) {
- conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNCharSet);
- if (conv == (XlcConv) NULL)
- return (XlcConv) NULL;
- }
-
- *convp = conv;
- return conv;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+/*
+ * Modifiers: Jeff Walls, Paul Anderson (HEWLETT-PACKARD)
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPublic.h"
+#include "XomGeneric.h"
+#include <stdio.h>
+
+/* for VW/UDC start */
+static Bool
+ismatch_scopes(
+ FontData fontdata,
+ unsigned long *value,
+ Bool is_shift)
+{
+ register int scopes_num = fontdata->scopes_num;
+ FontScope scopes = fontdata->scopes;
+ if (!scopes_num)
+ return False;
+
+ if(fontdata->font == NULL)
+ return False;
+
+ for(;scopes_num--;scopes++)
+ if ((scopes->start <= (*value & 0x7f7f)) &&
+ ((scopes->end) >= (*value & 0x7f7f))){
+ if(is_shift == True) {
+ if(scopes->shift){
+ if(scopes->shift_direction == '+'){
+ *value += scopes->shift ;
+ } else if( scopes->shift_direction == '-'){
+ *value -= scopes->shift ;
+ }
+ }
+ }
+ return True;
+ }
+
+ return False;
+}
+
+static int
+check_vertical_fonttype(
+ char *name)
+{
+ char *ptr;
+ int type = 0;
+
+ if(name == (char *)NULL || (int) strlen(name) <= 0)
+ return False;
+
+ /* Obtains the pointer of CHARSET_ENCODING_FIELD. */
+ if((ptr = strchr(name, '-')) == (char *) NULL)
+ return False;
+ ptr++;
+
+ /* Obtains the pointer of vertical_map font type. */
+ if((ptr = strchr(ptr, '.')) == (char *) NULL)
+ return False;
+ ptr++;
+
+ switch(*ptr) {
+ case '1':
+ type = 1; break;
+ case '2':
+ type = 2; break;
+ case '3':
+ type = 3; break;
+ }
+ return type;
+}
+
+/*
+*/
+#define VMAP 0
+#define VROTATE 1
+#define FONTSCOPE 2
+
+FontData
+_XomGetFontDataFromFontSet(
+ FontSet fs,
+ unsigned char *str,
+ int len,
+ int *len_ret,
+ int is2b,
+ int type) /* VMAP , VROTATE , else */
+{
+ unsigned long value;
+ int num,i,hit,csize;
+ FontData fontdata;
+ unsigned char *c;
+ int vfont_type;
+
+ c = str;
+ hit = -1;
+ if(type == VMAP){
+ fontdata = fs->vmap;
+ num = fs->vmap_num;
+ } else if(type == VROTATE){
+ fontdata = (FontData)fs->vrotate;
+ num = fs->vrotate_num;
+ } else {
+ if(fs->font_data_count <= 0 || fs->font_data == (FontData)NULL) {
+ fontdata = fs->substitute;
+ num = fs->substitute_num;
+ }else {
+ fontdata = fs->font_data;
+ num = fs->font_data_count;
+ }
+ /* CDExc20229 fix */
+ if(fontdata == NULL || num == 0){
+ return(NULL);
+ }
+ }
+
+
+ if(is2b){
+ csize = 2;
+ } else {
+ csize = 1;
+ }
+
+ for(;len;len--){
+ if(is2b){
+ value = (((unsigned long)*c) << 8)|(unsigned long)*(c + 1);
+ } else {
+ value = (unsigned long)*c;
+ }
+
+ /* ### NOTE: This routine DOES NOT WORK!
+ * ### We can work around the problem in the calling routine,
+ * ### but we really need to understand this better. As it
+ * ### stands, the algorithm ALWAYS returns "fontdata[0]"
+ * ### for non-VW text! This is clearly wrong. In fact,
+ * ### given the new parse_font[name|data]() algorithms,
+ * ### we may not even need this routine to do anything
+ * ### for non-VW text (since font_set->font always contains
+ * ### the best font for this fontset). -- jjw/pma (HP)
+ */
+ for (i=0;i<num;i++) {
+ if(type == VROTATE) {
+ if(fontdata[i].font) {
+ /* If the num_cr equal zero, all character is rotated. */
+ if(fontdata[i].scopes_num == 0) {
+ break;
+ } else {
+ /* The vertical rotate glyph is not have code shift. */
+ if (ismatch_scopes(&(fontdata[i]),&value,False)) {
+ break;
+ }
+ }
+ }
+ } else if(type == VMAP) {
+ if(fontdata[i].font) {
+ vfont_type = check_vertical_fonttype(fontdata[i].name);
+ if(vfont_type == 0 || vfont_type == 1) {
+ break;
+ } else if(vfont_type == 2 || vfont_type == 3) {
+ if(fontdata[i].scopes_num <= 0)
+ break;
+
+ if (ismatch_scopes(&(fontdata[i]),&value,True)) {
+ break;
+ }
+ }
+ }
+ } else { /* FONTSCOPE */
+ if(fontdata[i].font) {
+ if(fontdata[i].scopes_num <= 0)
+ break;
+ if (ismatch_scopes(&(fontdata[i]),&value,True)){
+ break;
+ }
+ }
+ }
+ }
+ if((hit != -1) && (i != hit)){
+ break;
+ }
+ if(i == num){
+ if( type == VROTATE || type == VMAP){
+ /* Change 1996.01.23 start */
+ if(fs->font_data_count <= 0 ||
+ fs->font_data == (FontData)NULL)
+ fontdata = fs->substitute;
+ else
+ fontdata = fs->font_data;
+ /* Change 1996.01.23 end */
+ }
+ hit = 0;
+ c += csize;
+ break;
+ }
+ if( hit == -1 ) hit = i;
+ if(is2b){
+ *c = (unsigned char)(value >> 8);
+ *(c + 1) = (unsigned char)(value);
+ } else {
+ *c = (unsigned char)value;
+ }
+ c += csize;
+ }
+ *len_ret = (c - str);
+ return(&(fontdata[hit]));
+}
+/* for VW/UDC end */
+
+static FontSet
+_XomGetFontSetFromCharSet(
+ XOC oc,
+ XlcCharSet charset)
+{
+ register FontSet font_set = XOC_GENERIC(oc)->font_set;
+ register int num = XOC_GENERIC(oc)->font_set_num;
+ XlcCharSet *charset_list;
+ int charset_count;
+
+ for ( ; num-- > 0; font_set++) {
+ charset_count = font_set->charset_count;
+ charset_list = font_set->charset_list;
+ for ( ; charset_count-- > 0; charset_list++)
+ if (*charset_list == charset)
+ return font_set;
+ }
+
+ return (FontSet) NULL;
+}
+
+#ifdef MUSTCOPY
+static void
+cs_to_xchar2b(
+ register char *from,
+ register XChar2b *to,
+ register length)
+{
+ while (length-- > 0) {
+ to->byte1 = *from++;
+ to->byte2 = *from++;
+ to++;
+ }
+}
+
+static void
+cs_to_xchar2b_gl(
+ register char *from,
+ register XChar2b *to,
+ register length)
+{
+ while (length-- > 0) {
+ to->byte1 = *from++ & 0x7f;
+ to->byte2 = *from++ & 0x7f;
+ to++;
+ }
+}
+
+static void
+cs_to_xchar2b_gr(
+ register char *from,
+ register XChar2b *to,
+ register length)
+{
+ while (length-- > 0) {
+ to->byte1 = *from++ | 0x80;
+ to->byte2 = *from++ | 0x80;
+ to++;
+ }
+}
+#endif
+
+static void
+shift_to_gl(
+ register char *text,
+ register int length)
+{
+ while (length-- > 0)
+ *text++ &= 0x7f;
+}
+
+static void
+shift_to_gr(
+ register char *text,
+ register int length)
+{
+ while (length-- > 0)
+ *text++ |= 0x80;
+}
+
+static Bool
+load_font(
+ XOC oc,
+ FontSet font_set)
+{
+ font_set->font = XLoadQueryFont(oc->core.om->core.display,
+ oc->core.font_info.font_name_list[font_set->id]);
+ if (font_set->font == NULL)
+ return False;
+
+ oc->core.font_info.font_struct_list[font_set->id] = font_set->font;
+ XFreeFontInfo(NULL, font_set->info, 1);
+ font_set->info = NULL;
+
+ if (font_set->font->min_byte1 || font_set->font->max_byte1)
+ font_set->is_xchar2b = True;
+ else
+ font_set->is_xchar2b = False;
+
+ return True;
+}
+
+int
+_XomConvert(
+ XOC oc,
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XPointer cs, lc_args[1];
+ XlcCharSet charset;
+ int length, cs_left, ret;
+ FontSet font_set;
+#ifdef MUSTCOPY
+ XChar2b *xchar2b;
+ char *buf, buf_local[BUFSIZ];
+#endif
+
+ cs = *to;
+ cs_left = *to_left;
+ lc_args[0] = (XPointer) &charset;
+
+ ret = _XlcConvert(conv, from, from_left, &cs, &cs_left, lc_args, 1);
+ if (ret < 0)
+ return -1;
+
+ font_set = _XomGetFontSetFromCharSet(oc, charset);
+ if (font_set == NULL)
+ return -1;
+
+ if (font_set->font == NULL && load_font(oc, font_set) == False)
+ return -1;
+
+ length = *to_left - cs_left;
+
+#ifdef MUSTCOPY
+ if (font_set->is_xchar2b) {
+ buf = (length > BUFSIZ) ? Xmalloc(length) : buf_local;
+ if (buf == NULL)
+ return -1;
+ memcpy(buf, (char *) *to, length);
+
+ xchar2b = (XChar2b *) *to;
+ length >>= 1;
+
+ if (font_set->side == charset->side)
+ cs_to_xchar2b(buf, xchar2b, length);
+ else if (font_set->side == XlcGL)
+ cs_to_xchar2b_gl(buf, xchar2b, length);
+ else if (font_set->side == XlcGR)
+ cs_to_xchar2b_gr(buf, xchar2b, length);
+ else
+ cs_to_xchar2b(buf, xchar2b, length);
+
+ if (buf != buf_local)
+ Xfree(buf);
+
+ *to = (XPointer) (xchar2b + length);
+ *to_left -= length;
+ } else
+#endif
+ {
+ if (font_set->side != charset->side) {
+ if (font_set->side == XlcGL)
+ shift_to_gl(*to, length);
+ else if (font_set->side == XlcGR)
+ shift_to_gr(*to, length);
+ }
+
+ if (font_set->is_xchar2b)
+ length >>= 1;
+ *to = cs;
+ *to_left -= length;
+ }
+
+ *((XFontStruct **) args[0]) = font_set->font;
+ *((Bool *) args[1]) = font_set->is_xchar2b;
+ if(num_args >= 3){
+ *((FontSet *) args[2]) = font_set;
+ }
+
+ return ret;
+}
+
+XlcConv
+_XomInitConverter(
+ XOC oc,
+ XOMTextType type)
+{
+ XOCGenericPart *gen = XOC_GENERIC(oc);
+ XlcConv *convp;
+ const char *conv_type;
+ XlcConv conv;
+ XLCd lcd;
+
+ switch (type) {
+ case XOMWideChar:
+ convp = &gen->wcs_to_cs;
+ conv_type = XlcNWideChar;
+ break;
+ case XOMMultiByte:
+ convp = &gen->mbs_to_cs;
+ conv_type = XlcNMultiByte;
+ break;
+ case XOMUtf8String:
+ convp = &gen->utf8_to_cs;
+ conv_type = XlcNUtf8String;
+ break;
+ default:
+ return (XlcConv) NULL;
+ }
+
+ conv = *convp;
+ if (conv) {
+ _XlcResetConverter(conv);
+ return conv;
+ }
+
+ lcd = oc->core.om->core.lcd;
+
+ conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNFontCharSet);
+ if (conv == (XlcConv) NULL) {
+ conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNCharSet);
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+ }
+
+ *convp = conv;
+ return conv;
+}
diff --git a/libX11/nls/.gitignore b/libX11/nls/.gitignore
new file mode 100644
index 000000000..d9d1160b6
--- /dev/null
+++ b/libX11/nls/.gitignore
@@ -0,0 +1,12 @@
+Compose
+XLC_LOCALE
+compose.dir
+compose.dir.l1
+compose.dir.l2
+locale.alias
+locale.alias.l1
+locale.alias.l2
+locale.dir
+locale.dir.l1
+locale.dir.l2
+xorg.css
diff --git a/libX11/nls/C/XI18N_OBJS b/libX11/nls/C/XI18N_OBJS
index 32e4f3588..f4065656f 100644
--- a/libX11/nls/C/XI18N_OBJS
+++ b/libX11/nls/C/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/C/XLC_LOCALE.pre b/libX11/nls/C/XLC_LOCALE.pre
index 4653930d2..66df3323c 100644
--- a/libX11/nls/C/XLC_LOCALE.pre
+++ b/libX11/nls/C/XLC_LOCALE.pre
@@ -1,61 +1,61 @@
-XCOMM XLocale Database Sample for C.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name STRING
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-1:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for C.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name STRING
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/am_ET.UTF-8/Compose.pre b/libX11/nls/am_ET.UTF-8/Compose.pre
index 760d94629..eb992e6d1 100644
--- a/libX11/nls/am_ET.UTF-8/Compose.pre
+++ b/libX11/nls/am_ET.UTF-8/Compose.pre
@@ -1,360 +1,360 @@
-XCOMM
-XCOMM UTF-8 (Unicode) compose sequence
-XCOMM for Ethiopean layout.
-XCOMM Designed as a part of OLPC project
-XCOMM
-XCOMM 2007 Sergey Udaltsov <svu@gnome.org>
-XCOMM
-
-
-XCOMM
-XCOMM Group I
-XCOMM
-
-XCOMM Modifier: /u/
-<u> <U1200> : "áˆ" U1201 # key h (base character ሀ)
-<u> <U1208> : "ሉ" U1209 # key l (base character ለ)
-<u> <U1218> : "ሙ" U1219 # key m (base character መ)
-<u> <U1228> : "ሩ" U1229 # key r (base character ረ)
-<u> <U1230> : "ሱ" U1231 # key s (base character ሰ)
-<u> <U1240> : "á‰" U1241 # key q (base character ቀ)
-<u> <U1260> : "ቡ" U1261 # key b (base character በ)
-<u> <U1270> : "ቱ" U1271 # key t (base character ተ)
-<u> <U1290> : "ኑ" U1291 # key n (base character áŠ)
-<u> <U12A0> : "ኡ" U12A1 # key x (base character አ)
-<u> <U12A8> : "ኩ" U12A9 # key k (base character ከ)
-<u> <U12C8> : "ዉ" U12C9 # key w (base character ወ)
-<u> <U12D8> : "ዙ" U12D9 # key z (base character ዘ)
-<u> <U12E8> : "ዩ" U12E9 # key y (base character የ)
-<u> <U12F0> : "ዱ" U12F1 # key d (base character ደ)
-<u> <U1300> : "áŒ" U1301 # key j (base character ጀ)
-<u> <U1308> : "ጉ" U1309 # key g (base character ገ)
-<u> <U1340> : "á" U1341 # key [ (base character á€)
-<u> <U1348> : "á‰" U1349 # key f (base character áˆ)
-<u> <U1350> : "á‘" U1351 # key p (base character á)
-<u> <U1238> : "ሹ" U1239 # key v (base character ሸ)
-<u> <U1328> : "ጩ" U1329 # key ] (base character ጨ)
-
-XCOMM Modifier: /i/
-<i> <U1200> : "ሂ" U1202 # key h (base character ሀ)
-<i> <U1208> : "ሊ" U120A # key l (base character ለ)
-<i> <U1218> : "ሚ" U121A # key m (base character መ)
-<i> <U1228> : "ሪ" U122A # key r (base character ረ)
-<i> <U1230> : "ሲ" U1232 # key s (base character ሰ)
-<i> <U1240> : "ቂ" U1242 # key q (base character ቀ)
-<i> <U1260> : "ቢ" U1262 # key b (base character በ)
-<i> <U1270> : "ቲ" U1272 # key t (base character ተ)
-<i> <U1290> : "ኒ" U1292 # key n (base character áŠ)
-<i> <U12A0> : "ኢ" U12A2 # key x (base character አ)
-<i> <U12A8> : "ኪ" U12AA # key k (base character ከ)
-<i> <U12C8> : "ዊ" U12CA # key w (base character ወ)
-<i> <U12D8> : "ዚ" U12DA # key z (base character ዘ)
-<i> <U12E8> : "ዪ" U12EA # key y (base character የ)
-<i> <U12F0> : "ዲ" U12F2 # key d (base character ደ)
-<i> <U1300> : "ጂ" U1302 # key j (base character ጀ)
-<i> <U1308> : "ጊ" U130A # key g (base character ገ)
-<i> <U1340> : "á‚" U1342 # key [ (base character á€)
-<i> <U1348> : "áŠ" U134A # key f (base character áˆ)
-<i> <U1350> : "á’" U1352 # key p (base character á)
-<i> <U1238> : "ሺ" U123A # key v (base character ሸ)
-<i> <U1328> : "ጪ" U132A # key ] (base character ጨ)
-
-XCOMM Modifier: /a/
-<a> <U1200> : "ሃ" U1203 # key h (base character ሀ)
-<a> <U1208> : "ላ" U120B # key l (base character ለ)
-<a> <U1218> : "ማ" U121B # key m (base character መ)
-<a> <U1228> : "ራ" U122B # key r (base character ረ)
-<a> <U1230> : "ሳ" U1233 # key s (base character ሰ)
-<a> <U1240> : "ቃ" U1243 # key q (base character ቀ)
-<a> <U1260> : "ባ" U1263 # key b (base character በ)
-<a> <U1270> : "ታ" U1273 # key t (base character ተ)
-<a> <U1290> : "ና" U1293 # key n (base character áŠ)
-<a> <U12A0> : "ኣ" U12A3 # key x (base character አ)
-<a> <U12A8> : "ካ" U12AB # key k (base character ከ)
-<a> <U12C8> : "ዋ" U12CB # key w (base character ወ)
-<a> <U12D8> : "ዛ" U12DB # key z (base character ዘ)
-<a> <U12E8> : "ያ" U12EB # key y (base character የ)
-<a> <U12F0> : "ዳ" U12F3 # key d (base character ደ)
-<a> <U1300> : "ጃ" U1303 # key j (base character ጀ)
-<a> <U1308> : "ጋ" U130B # key g (base character ገ)
-<a> <U1340> : "áƒ" U1343 # key [ (base character á€)
-<a> <U1348> : "á‹" U134B # key f (base character áˆ)
-<a> <U1350> : "á“" U1353 # key p (base character á)
-<a> <U1238> : "ሻ" U123B # key v (base character ሸ)
-<a> <U1328> : "ጫ" U132B # key ] (base character ጨ)
-
-XCOMM Modifier: /e/
-<e> <U1200> : "ሄ" U1204 # key h (base character ሀ)
-<e> <U1208> : "ሌ" U120C # key l (base character ለ)
-<e> <U1218> : "ሜ" U121C # key m (base character መ)
-<e> <U1228> : "ሬ" U122C # key r (base character ረ)
-<e> <U1230> : "ሴ" U1234 # key s (base character ሰ)
-<e> <U1240> : "ቄ" U1244 # key q (base character ቀ)
-<e> <U1260> : "ቤ" U1264 # key b (base character በ)
-<e> <U1270> : "ቴ" U1274 # key t (base character ተ)
-<e> <U1290> : "ኔ" U1294 # key n (base character áŠ)
-<e> <U12A0> : "ኤ" U12A4 # key x (base character አ)
-<e> <U12A8> : "ኬ" U12AC # key k (base character ከ)
-<e> <U12C8> : "ዌ" U12CC # key w (base character ወ)
-<e> <U12D8> : "ዜ" U12DC # key z (base character ዘ)
-<e> <U12E8> : "ዬ" U12EC # key y (base character የ)
-<e> <U12F0> : "á‹´" U12F4 # key d (base character á‹°)
-<e> <U1300> : "ጄ" U1304 # key j (base character ጀ)
-<e> <U1308> : "ጌ" U130C # key g (base character ገ)
-<e> <U1340> : "á„" U1344 # key [ (base character á€)
-<e> <U1348> : "áŒ" U134C # key f (base character áˆ)
-<e> <U1350> : "á”" U1354 # key p (base character á)
-<e> <U1238> : "ሼ" U123C # key v (base character ሸ)
-<e> <U1328> : "ጬ" U132C # key ] (base character ጨ)
-
-XCOMM Modifier: /c/
-<c> <U1200> : "ህ" U1205 # key h (base character ሀ)
-<c> <U1208> : "áˆ" U120D # key l (base character ለ)
-<c> <U1218> : "áˆ" U121D # key m (base character መ)
-<c> <U1228> : "ር" U122D # key r (base character ረ)
-<c> <U1230> : "ስ" U1235 # key s (base character ሰ)
-<c> <U1240> : "ቅ" U1245 # key q (base character ቀ)
-<c> <U1260> : "ብ" U1265 # key b (base character በ)
-<c> <U1270> : "ት" U1275 # key t (base character ተ)
-<c> <U1290> : "ን" U1295 # key n (base character áŠ)
-<c> <U12A0> : "እ" U12A5 # key x (base character አ)
-<c> <U12A8> : "ክ" U12AD # key k (base character ከ)
-<c> <U12C8> : "á‹" U12CD # key w (base character ወ)
-<c> <U12D8> : "á‹" U12DD # key z (base character ዘ)
-<c> <U12E8> : "ይ" U12ED # key y (base character የ)
-<c> <U12F0> : "ድ" U12F5 # key d (base character ደ)
-<c> <U1300> : "ጅ" U1305 # key j (base character ጀ)
-<c> <U1308> : "áŒ" U130D # key g (base character ገ)
-<c> <U1340> : "á…" U1345 # key [ (base character á€)
-<c> <U1348> : "á" U134D # key f (base character áˆ)
-<c> <U1350> : "á•" U1355 # key p (base character á)
-<c> <U1238> : "ሽ" U123D # key v (base character ሸ)
-<c> <U1328> : "ጭ" U132D # key ] (base character ጨ)
-
-XCOMM Modifier: /o/
-<o> <U1200> : "ሆ" U1206 # key h (base character ሀ)
-<o> <U1208> : "ሎ" U120E # key l (base character ለ)
-<o> <U1218> : "ሞ" U121E # key m (base character መ)
-<o> <U1228> : "ሮ" U122E # key r (base character ረ)
-<o> <U1230> : "ሶ" U1236 # key s (base character ሰ)
-<o> <U1240> : "ቆ" U1246 # key q (base character ቀ)
-<o> <U1260> : "ቦ" U1266 # key b (base character በ)
-<o> <U1270> : "ቶ" U1276 # key t (base character ተ)
-<o> <U1290> : "ኖ" U1296 # key n (base character áŠ)
-<o> <U12A0> : "ኦ" U12A6 # key x (base character አ)
-<o> <U12A8> : "ኮ" U12AE # key k (base character ከ)
-<o> <U12C8> : "ዎ" U12CE # key w (base character ወ)
-<o> <U12D8> : "ዞ" U12DE # key z (base character ዘ)
-<o> <U12E8> : "ዮ" U12EE # key y (base character የ)
-<o> <U12F0> : "ዶ" U12F6 # key d (base character ደ)
-<o> <U1300> : "ጆ" U1306 # key j (base character ጀ)
-<o> <U1308> : "ጎ" U130E # key g (base character ገ)
-<o> <U1340> : "á†" U1346 # key [ (base character á€)
-<o> <U1348> : "áŽ" U134E # key f (base character áˆ)
-<o> <U1350> : "á–" U1356 # key p (base character á)
-<o> <U1238> : "ሾ" U123E # key v (base character ሸ)
-<o> <U1328> : "ጮ" U132E # key ] (base character ጨ)
-
-XCOMM Modifier: /A/
-<A> <U1208> : "áˆ" U120F # key l (base character ለ)
-<A> <U1218> : "ሟ" U121F # key m (base character መ)
-<A> <U1228> : "ሯ" U122F # key r (base character ረ)
-<A> <U1230> : "ሷ" U1237 # key s (base character ሰ)
-<A> <U1240> : "ቋ" U124B # key q (base character ቀ)
-<A> <U1260> : "ቧ" U1267 # key b (base character በ)
-<A> <U1270> : "ቷ" U1277 # key t (base character ተ)
-<A> <U1290> : "ኗ" U1297 # key n (base character áŠ)
-<A> <U12A0> : "ኧ" U12A7 # key x (base character አ)
-<A> <U12A8> : "ኳ" U12B3 # key k (base character ከ)
-<A> <U12D8> : "ዟ" U12DF # key z (base character ዘ)
-<A> <U12F0> : "á‹·" U12F7 # key d (base character á‹°)
-<A> <U1300> : "ጇ" U1307 # key j (base character ጀ)
-<A> <U1308> : "ጓ" U1313 # key g (base character ገ)
-<A> <U1348> : "á" U134F # key f (base character áˆ)
-<A> <U1350> : "á—" U1357 # key p (base character á)
-<A> <U1238> : "ሿ" U123F # key v (base character ሸ)
-<A> <U1328> : "ጯ" U132F # key ] (base character ጨ)
-
-XCOMM Modifier: /U/
-<U> <U1240> : "á‰" U124D # key q (base character ቀ)
-<U> <U12A8> : "ኵ" U12B5 # key k (base character ከ)
-<U> <U1308> : "ጕ" U1315 # key g (base character ገ)
-
-XCOMM Modifier: /I/
-<I> <U1240> : "ቊ" U124A # key q (base character ቀ)
-<I> <U12A8> : "ኲ" U12B2 # key k (base character ከ)
-<I> <U1308> : "ጒ" U1312 # key g (base character ገ)
-
-XCOMM Modifier: /E/
-<E> <U1240> : "ቌ" U124C # key q (base character ቀ)
-<E> <U12A8> : "ኴ" U12B4 # key k (base character ከ)
-<E> <U1308> : "ጔ" U1314 # key g (base character ገ)
-
-XCOMM Modifier: /O/
-<O> <U1240> : "ቈ" U1248 # key q (base character ቀ)
-<O> <U12A8> : "ኰ" U12B0 # key k (base character ከ)
-<O> <U1308> : "áŒ" U1310 # key g (base character ገ)
-
-XCOMM
-XCOMM Group II
-XCOMM
-XCOMM Modifier: /u/
-<u> <U1210> : "ሑ" U1211 # key h (base character áˆ)
-<u> <U1220> : "ሡ" U1221 # key s (base character ሠ)
-<u> <U1250> : "ቑ" U1251 # key q (base character á‰)
-<u> <U1278> : "ቹ" U1279 # key c (base character ቸ)
-<u> <U1320> : "ጡ" U1321 # key t (base character ጠ)
-<u> <U1298> : "ኙ" U1299 # key n (base character ኘ)
-<u> <U12D0> : "á‹‘" U12D1 # key x (base character á‹)
-<u> <U12B8> : "ኹ" U12B9 # key k (base character ኸ)
-<u> <U12E0> : "á‹¡" U12E1 # key z (base character á‹ )
-<u> <U12F8> : "ዹ" U12F9 # key d (base character ዸ)
-<u> <U1318> : "ጙ" U1319 # key g (base character ጘ)
-<u> <U1338> : "ጹ" U1339 # key [ (base character ጸ)
-<u> <U1330> : "ጱ" U1331 # key p (base character ጰ)
-<u> <U1280> : "áŠ" U1281 # key ] (base character ኀ)
-<u> <U1268> : "ቩ" U1269 # key v (base character ቨ)
-
-XCOMM Modifier: /i/
-<i> <U1210> : "ሒ" U1212 # key h (base character áˆ)
-<i> <U1220> : "ሢ" U1222 # key s (base character ሠ)
-<i> <U1250> : "ቒ" U1252 # key q (base character á‰)
-<i> <U1278> : "ቺ" U127A # key c (base character ቸ)
-<i> <U1320> : "ጢ" U1322 # key t (base character ጠ)
-<i> <U1298> : "ኚ" U129A # key n (base character ኘ)
-<i> <U12D0> : "á‹’" U12D2 # key x (base character á‹)
-<i> <U12B8> : "ኺ" U12BA # key k (base character ኸ)
-<i> <U12E0> : "á‹¢" U12E2 # key z (base character á‹ )
-<i> <U12F8> : "ዺ" U12FA # key d (base character ዸ)
-<i> <U1318> : "ጚ" U131A # key g (base character ጘ)
-<i> <U1338> : "ጺ" U133A # key [ (base character ጸ)
-<i> <U1330> : "ጲ" U1332 # key p (base character ጰ)
-<i> <U1280> : "ኂ" U1282 # key ] (base character ኀ)
-<i> <U1268> : "ቪ" U126A # key v (base character ቨ)
-
-XCOMM Modifier: /a/
-<a> <U1210> : "ሓ" U1213 # key h (base character áˆ)
-<a> <U1220> : "ሣ" U1223 # key s (base character ሠ)
-<a> <U1250> : "ቓ" U1253 # key q (base character á‰)
-<a> <U1278> : "ቻ" U127B # key c (base character ቸ)
-<a> <U1320> : "ጣ" U1323 # key t (base character ጠ)
-<a> <U1298> : "ኛ" U129B # key n (base character ኘ)
-<a> <U12D0> : "á‹“" U12D3 # key x (base character á‹)
-<a> <U12B8> : "ኻ" U12BB # key k (base character ኸ)
-<a> <U12E0> : "á‹£" U12E3 # key z (base character á‹ )
-<a> <U12F8> : "ዻ" U12FB # key d (base character ዸ)
-<a> <U1318> : "ጛ" U131B # key g (base character ጘ)
-<a> <U1338> : "ጻ" U133B # key [ (base character ጸ)
-<a> <U1330> : "ጳ" U1333 # key p (base character ጰ)
-<a> <U1280> : "ኃ" U1283 # key ] (base character ኀ)
-<a> <U1268> : "ቫ" U126B # key v (base character ቨ)
-
-XCOMM Modifier: /e/
-<e> <U1210> : "ሔ" U1214 # key h (base character áˆ)
-<e> <U1220> : "ሤ" U1224 # key s (base character ሠ)
-<e> <U1250> : "ቔ" U1254 # key q (base character á‰)
-<e> <U1278> : "ቼ" U127C # key c (base character ቸ)
-<e> <U1320> : "ጤ" U1324 # key t (base character ጠ)
-<e> <U1298> : "ኜ" U129C # key n (base character ኘ)
-<e> <U12D0> : "á‹”" U12D4 # key x (base character á‹)
-<e> <U12B8> : "ኼ" U12BC # key k (base character ኸ)
-<e> <U12E0> : "ዤ" U12E4 # key z (base character ዠ)
-<e> <U12F8> : "ዼ" U12FC # key d (base character ዸ)
-<e> <U1318> : "ጜ" U131C # key g (base character ጘ)
-<e> <U1338> : "ጼ" U133C # key [ (base character ጸ)
-<e> <U1330> : "ጴ" U1334 # key p (base character ጰ)
-<e> <U1280> : "ኄ" U1284 # key ] (base character ኀ)
-<e> <U1268> : "ቬ" U126C # key v (base character ቨ)
-
-XCOMM Modifier: /c/
-<c> <U1210> : "ሕ" U1215 # key h (base character áˆ)
-<c> <U1220> : "ሥ" U1225 # key s (base character ሠ)
-<c> <U1250> : "ቕ" U1255 # key q (base character á‰)
-<c> <U1278> : "ች" U127D # key c (base character ቸ)
-<c> <U1320> : "ጥ" U1325 # key t (base character ጠ)
-<c> <U1298> : "áŠ" U129D # key n (base character ኘ)
-<c> <U12D0> : "á‹•" U12D5 # key x (base character á‹)
-<c> <U12B8> : "ኽ" U12BD # key k (base character ኸ)
-<c> <U12E0> : "á‹¥" U12E5 # key z (base character á‹ )
-<c> <U12F8> : "ዽ" U12FD # key d (base character ዸ)
-<c> <U1318> : "áŒ" U131D # key g (base character ጘ)
-<c> <U1338> : "ጽ" U133D # key [ (base character ጸ)
-<c> <U1330> : "ጵ" U1335 # key p (base character ጰ)
-<c> <U1280> : "ኅ" U1285 # key ] (base character ኀ)
-<c> <U1268> : "ቭ" U126D # key v (base character ቨ)
-
-XCOMM Modifier: /o/
-<o> <U1210> : "ሖ" U1216 # key h (base character áˆ)
-<o> <U1220> : "ሦ" U1226 # key s (base character ሠ)
-<o> <U1250> : "ቖ" U1256 # key q (base character á‰)
-<o> <U1278> : "ቾ" U127E # key c (base character ቸ)
-<o> <U1320> : "ጦ" U1326 # key t (base character ጠ)
-<o> <U1298> : "ኞ" U129E # key n (base character ኘ)
-<o> <U12D0> : "á‹–" U12D6 # key x (base character á‹)
-<o> <U12B8> : "ኾ" U12BE # key k (base character ኸ)
-<o> <U12E0> : "ዦ" U12E6 # key z (base character ዠ)
-<o> <U12F8> : "ዾ" U12FE # key d (base character ዸ)
-<o> <U1318> : "ጞ" U131E # key g (base character ጘ)
-<o> <U1338> : "ጾ" U133E # key [ (base character ጸ)
-<o> <U1330> : "ጶ" U1336 # key p (base character ጰ)
-<o> <U1280> : "ኆ" U1286 # key ] (base character ኀ)
-<o> <U1268> : "ቮ" U126E # key v (base character ቨ)
-
-XCOMM Modifier: /A/
-<A> <U1210> : "ሗ" U1217 # key h (base character áˆ)
-<A> <U1220> : "ሧ" U1227 # key s (base character ሠ)
-<A> <U1250> : "ቛ" U125B # key q (base character á‰)
-<A> <U1278> : "ቿ" U127F # key c (base character ቸ)
-<A> <U1320> : "ጧ" U1327 # key t (base character ጠ)
-<A> <U1298> : "ኟ" U129F # key n (base character ኘ)
-<A> <U12B8> : "ዃ" U12C3 # key k (base character ኸ)
-<A> <U12E0> : "ዧ" U12E7 # key z (base character ዠ)
-<A> <U12F8> : "ዿ" U12FF # key d (base character ዸ)
-<A> <U1338> : "ጿ" U133F # key [ (base character ጸ)
-<A> <U1330> : "ጷ" U1337 # key p (base character ጰ)
-<A> <U1280> : "ኋ" U128B # key ] (base character ኀ)
-<A> <U1268> : "ቯ" U126F # key v (base character ቨ)
-
-XCOMM Modifier: /U/
-<U> <U1250> : "á‰" U125D # key q (base character á‰)
-<U> <U12B8> : "ዅ" U12C5 # key k (base character ኸ)
-
-XCOMM Modifier: /I/
-<I> <U1250> : "ቚ" U125A # key q (base character á‰)
-<I> <U12B8> : "ዂ" U12C2 # key k (base character ኸ)
-
-XCOMM Modifier: /E/
-<E> <U1250> : "ቜ" U125C # key q (base character á‰)
-<E> <U12B8> : "ዄ" U12C4 # key k (base character ኸ)
-
-XCOMM Modifier: /O/
-<O> <U1250> : "ቘ" U1258 # key q (base character á‰)
-<O> <U12B8> : "ዀ" U12C0 # key k (base character ኸ)
-
-XCOMM
-XCOMM Group III
-XCOMM
-<backslash> <quotedbl> : "á¥" U1365 # key "
-<backslash> <apostrophe> : "á¦" U1366 # key "
-<backslash> <minus> : "|" U007C # key -
-<backslash> <underscore> : "Â¥" U00A5 # key _
-<backslash> <question> : "á§" U1367 # key ?
-
-XCOMM
-XCOMM Khmer digraphs
-XCOMM
-
-<U17ff> : "ាំ"
-<U17fe> : "ោះ"
-<U17fd> : "áŸáŸ‡"
-<U17fc> : "ុំ"
-<U17fb> : "ុះ"
-
-XCOMM
-XCOMM Arabic Lam-Alef ligatures
-XCOMM
-
-<UFEFB> : "لا" # ARABIC LIGATURE LAM WITH ALEF
-<UFEF7> : "لأ" # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE
-<UFEF9> : "لإ" # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW
-<UFEF5> : "لآ" # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE
+XCOMM
+XCOMM UTF-8 (Unicode) compose sequence
+XCOMM for Ethiopean layout.
+XCOMM Designed as a part of OLPC project
+XCOMM
+XCOMM 2007 Sergey Udaltsov <svu@gnome.org>
+XCOMM
+
+
+XCOMM
+XCOMM Group I
+XCOMM
+
+XCOMM Modifier: /u/
+<u> <U1200> : "áˆ" U1201 # key h (base character ሀ)
+<u> <U1208> : "ሉ" U1209 # key l (base character ለ)
+<u> <U1218> : "ሙ" U1219 # key m (base character መ)
+<u> <U1228> : "ሩ" U1229 # key r (base character ረ)
+<u> <U1230> : "ሱ" U1231 # key s (base character ሰ)
+<u> <U1240> : "á‰" U1241 # key q (base character ቀ)
+<u> <U1260> : "ቡ" U1261 # key b (base character በ)
+<u> <U1270> : "ቱ" U1271 # key t (base character ተ)
+<u> <U1290> : "ኑ" U1291 # key n (base character áŠ)
+<u> <U12A0> : "ኡ" U12A1 # key x (base character አ)
+<u> <U12A8> : "ኩ" U12A9 # key k (base character ከ)
+<u> <U12C8> : "ዉ" U12C9 # key w (base character ወ)
+<u> <U12D8> : "ዙ" U12D9 # key z (base character ዘ)
+<u> <U12E8> : "ዩ" U12E9 # key y (base character የ)
+<u> <U12F0> : "ዱ" U12F1 # key d (base character ደ)
+<u> <U1300> : "áŒ" U1301 # key j (base character ጀ)
+<u> <U1308> : "ጉ" U1309 # key g (base character ገ)
+<u> <U1340> : "á" U1341 # key [ (base character á€)
+<u> <U1348> : "á‰" U1349 # key f (base character áˆ)
+<u> <U1350> : "á‘" U1351 # key p (base character á)
+<u> <U1238> : "ሹ" U1239 # key v (base character ሸ)
+<u> <U1328> : "ጩ" U1329 # key ] (base character ጨ)
+
+XCOMM Modifier: /i/
+<i> <U1200> : "ሂ" U1202 # key h (base character ሀ)
+<i> <U1208> : "ሊ" U120A # key l (base character ለ)
+<i> <U1218> : "ሚ" U121A # key m (base character መ)
+<i> <U1228> : "ሪ" U122A # key r (base character ረ)
+<i> <U1230> : "ሲ" U1232 # key s (base character ሰ)
+<i> <U1240> : "ቂ" U1242 # key q (base character ቀ)
+<i> <U1260> : "ቢ" U1262 # key b (base character በ)
+<i> <U1270> : "ቲ" U1272 # key t (base character ተ)
+<i> <U1290> : "ኒ" U1292 # key n (base character áŠ)
+<i> <U12A0> : "ኢ" U12A2 # key x (base character አ)
+<i> <U12A8> : "ኪ" U12AA # key k (base character ከ)
+<i> <U12C8> : "ዊ" U12CA # key w (base character ወ)
+<i> <U12D8> : "ዚ" U12DA # key z (base character ዘ)
+<i> <U12E8> : "ዪ" U12EA # key y (base character የ)
+<i> <U12F0> : "ዲ" U12F2 # key d (base character ደ)
+<i> <U1300> : "ጂ" U1302 # key j (base character ጀ)
+<i> <U1308> : "ጊ" U130A # key g (base character ገ)
+<i> <U1340> : "á‚" U1342 # key [ (base character á€)
+<i> <U1348> : "áŠ" U134A # key f (base character áˆ)
+<i> <U1350> : "á’" U1352 # key p (base character á)
+<i> <U1238> : "ሺ" U123A # key v (base character ሸ)
+<i> <U1328> : "ጪ" U132A # key ] (base character ጨ)
+
+XCOMM Modifier: /a/
+<a> <U1200> : "ሃ" U1203 # key h (base character ሀ)
+<a> <U1208> : "ላ" U120B # key l (base character ለ)
+<a> <U1218> : "ማ" U121B # key m (base character መ)
+<a> <U1228> : "ራ" U122B # key r (base character ረ)
+<a> <U1230> : "ሳ" U1233 # key s (base character ሰ)
+<a> <U1240> : "ቃ" U1243 # key q (base character ቀ)
+<a> <U1260> : "ባ" U1263 # key b (base character በ)
+<a> <U1270> : "ታ" U1273 # key t (base character ተ)
+<a> <U1290> : "ና" U1293 # key n (base character áŠ)
+<a> <U12A0> : "ኣ" U12A3 # key x (base character አ)
+<a> <U12A8> : "ካ" U12AB # key k (base character ከ)
+<a> <U12C8> : "ዋ" U12CB # key w (base character ወ)
+<a> <U12D8> : "ዛ" U12DB # key z (base character ዘ)
+<a> <U12E8> : "ያ" U12EB # key y (base character የ)
+<a> <U12F0> : "ዳ" U12F3 # key d (base character ደ)
+<a> <U1300> : "ጃ" U1303 # key j (base character ጀ)
+<a> <U1308> : "ጋ" U130B # key g (base character ገ)
+<a> <U1340> : "áƒ" U1343 # key [ (base character á€)
+<a> <U1348> : "á‹" U134B # key f (base character áˆ)
+<a> <U1350> : "á“" U1353 # key p (base character á)
+<a> <U1238> : "ሻ" U123B # key v (base character ሸ)
+<a> <U1328> : "ጫ" U132B # key ] (base character ጨ)
+
+XCOMM Modifier: /e/
+<e> <U1200> : "ሄ" U1204 # key h (base character ሀ)
+<e> <U1208> : "ሌ" U120C # key l (base character ለ)
+<e> <U1218> : "ሜ" U121C # key m (base character መ)
+<e> <U1228> : "ሬ" U122C # key r (base character ረ)
+<e> <U1230> : "ሴ" U1234 # key s (base character ሰ)
+<e> <U1240> : "ቄ" U1244 # key q (base character ቀ)
+<e> <U1260> : "ቤ" U1264 # key b (base character በ)
+<e> <U1270> : "ቴ" U1274 # key t (base character ተ)
+<e> <U1290> : "ኔ" U1294 # key n (base character áŠ)
+<e> <U12A0> : "ኤ" U12A4 # key x (base character አ)
+<e> <U12A8> : "ኬ" U12AC # key k (base character ከ)
+<e> <U12C8> : "ዌ" U12CC # key w (base character ወ)
+<e> <U12D8> : "ዜ" U12DC # key z (base character ዘ)
+<e> <U12E8> : "ዬ" U12EC # key y (base character የ)
+<e> <U12F0> : "á‹´" U12F4 # key d (base character á‹°)
+<e> <U1300> : "ጄ" U1304 # key j (base character ጀ)
+<e> <U1308> : "ጌ" U130C # key g (base character ገ)
+<e> <U1340> : "á„" U1344 # key [ (base character á€)
+<e> <U1348> : "áŒ" U134C # key f (base character áˆ)
+<e> <U1350> : "á”" U1354 # key p (base character á)
+<e> <U1238> : "ሼ" U123C # key v (base character ሸ)
+<e> <U1328> : "ጬ" U132C # key ] (base character ጨ)
+
+XCOMM Modifier: /c/
+<c> <U1200> : "ህ" U1205 # key h (base character ሀ)
+<c> <U1208> : "áˆ" U120D # key l (base character ለ)
+<c> <U1218> : "áˆ" U121D # key m (base character መ)
+<c> <U1228> : "ር" U122D # key r (base character ረ)
+<c> <U1230> : "ስ" U1235 # key s (base character ሰ)
+<c> <U1240> : "ቅ" U1245 # key q (base character ቀ)
+<c> <U1260> : "ብ" U1265 # key b (base character በ)
+<c> <U1270> : "ት" U1275 # key t (base character ተ)
+<c> <U1290> : "ን" U1295 # key n (base character áŠ)
+<c> <U12A0> : "እ" U12A5 # key x (base character አ)
+<c> <U12A8> : "ክ" U12AD # key k (base character ከ)
+<c> <U12C8> : "á‹" U12CD # key w (base character ወ)
+<c> <U12D8> : "á‹" U12DD # key z (base character ዘ)
+<c> <U12E8> : "ይ" U12ED # key y (base character የ)
+<c> <U12F0> : "ድ" U12F5 # key d (base character ደ)
+<c> <U1300> : "ጅ" U1305 # key j (base character ጀ)
+<c> <U1308> : "áŒ" U130D # key g (base character ገ)
+<c> <U1340> : "á…" U1345 # key [ (base character á€)
+<c> <U1348> : "á" U134D # key f (base character áˆ)
+<c> <U1350> : "á•" U1355 # key p (base character á)
+<c> <U1238> : "ሽ" U123D # key v (base character ሸ)
+<c> <U1328> : "ጭ" U132D # key ] (base character ጨ)
+
+XCOMM Modifier: /o/
+<o> <U1200> : "ሆ" U1206 # key h (base character ሀ)
+<o> <U1208> : "ሎ" U120E # key l (base character ለ)
+<o> <U1218> : "ሞ" U121E # key m (base character መ)
+<o> <U1228> : "ሮ" U122E # key r (base character ረ)
+<o> <U1230> : "ሶ" U1236 # key s (base character ሰ)
+<o> <U1240> : "ቆ" U1246 # key q (base character ቀ)
+<o> <U1260> : "ቦ" U1266 # key b (base character በ)
+<o> <U1270> : "ቶ" U1276 # key t (base character ተ)
+<o> <U1290> : "ኖ" U1296 # key n (base character áŠ)
+<o> <U12A0> : "ኦ" U12A6 # key x (base character አ)
+<o> <U12A8> : "ኮ" U12AE # key k (base character ከ)
+<o> <U12C8> : "ዎ" U12CE # key w (base character ወ)
+<o> <U12D8> : "ዞ" U12DE # key z (base character ዘ)
+<o> <U12E8> : "ዮ" U12EE # key y (base character የ)
+<o> <U12F0> : "ዶ" U12F6 # key d (base character ደ)
+<o> <U1300> : "ጆ" U1306 # key j (base character ጀ)
+<o> <U1308> : "ጎ" U130E # key g (base character ገ)
+<o> <U1340> : "á†" U1346 # key [ (base character á€)
+<o> <U1348> : "áŽ" U134E # key f (base character áˆ)
+<o> <U1350> : "á–" U1356 # key p (base character á)
+<o> <U1238> : "ሾ" U123E # key v (base character ሸ)
+<o> <U1328> : "ጮ" U132E # key ] (base character ጨ)
+
+XCOMM Modifier: /A/
+<A> <U1208> : "áˆ" U120F # key l (base character ለ)
+<A> <U1218> : "ሟ" U121F # key m (base character መ)
+<A> <U1228> : "ሯ" U122F # key r (base character ረ)
+<A> <U1230> : "ሷ" U1237 # key s (base character ሰ)
+<A> <U1240> : "ቋ" U124B # key q (base character ቀ)
+<A> <U1260> : "ቧ" U1267 # key b (base character በ)
+<A> <U1270> : "ቷ" U1277 # key t (base character ተ)
+<A> <U1290> : "ኗ" U1297 # key n (base character áŠ)
+<A> <U12A0> : "ኧ" U12A7 # key x (base character አ)
+<A> <U12A8> : "ኳ" U12B3 # key k (base character ከ)
+<A> <U12D8> : "ዟ" U12DF # key z (base character ዘ)
+<A> <U12F0> : "á‹·" U12F7 # key d (base character á‹°)
+<A> <U1300> : "ጇ" U1307 # key j (base character ጀ)
+<A> <U1308> : "ጓ" U1313 # key g (base character ገ)
+<A> <U1348> : "á" U134F # key f (base character áˆ)
+<A> <U1350> : "á—" U1357 # key p (base character á)
+<A> <U1238> : "ሿ" U123F # key v (base character ሸ)
+<A> <U1328> : "ጯ" U132F # key ] (base character ጨ)
+
+XCOMM Modifier: /U/
+<U> <U1240> : "á‰" U124D # key q (base character ቀ)
+<U> <U12A8> : "ኵ" U12B5 # key k (base character ከ)
+<U> <U1308> : "ጕ" U1315 # key g (base character ገ)
+
+XCOMM Modifier: /I/
+<I> <U1240> : "ቊ" U124A # key q (base character ቀ)
+<I> <U12A8> : "ኲ" U12B2 # key k (base character ከ)
+<I> <U1308> : "ጒ" U1312 # key g (base character ገ)
+
+XCOMM Modifier: /E/
+<E> <U1240> : "ቌ" U124C # key q (base character ቀ)
+<E> <U12A8> : "ኴ" U12B4 # key k (base character ከ)
+<E> <U1308> : "ጔ" U1314 # key g (base character ገ)
+
+XCOMM Modifier: /O/
+<O> <U1240> : "ቈ" U1248 # key q (base character ቀ)
+<O> <U12A8> : "ኰ" U12B0 # key k (base character ከ)
+<O> <U1308> : "áŒ" U1310 # key g (base character ገ)
+
+XCOMM
+XCOMM Group II
+XCOMM
+XCOMM Modifier: /u/
+<u> <U1210> : "ሑ" U1211 # key h (base character áˆ)
+<u> <U1220> : "ሡ" U1221 # key s (base character ሠ)
+<u> <U1250> : "ቑ" U1251 # key q (base character á‰)
+<u> <U1278> : "ቹ" U1279 # key c (base character ቸ)
+<u> <U1320> : "ጡ" U1321 # key t (base character ጠ)
+<u> <U1298> : "ኙ" U1299 # key n (base character ኘ)
+<u> <U12D0> : "á‹‘" U12D1 # key x (base character á‹)
+<u> <U12B8> : "ኹ" U12B9 # key k (base character ኸ)
+<u> <U12E0> : "á‹¡" U12E1 # key z (base character á‹ )
+<u> <U12F8> : "ዹ" U12F9 # key d (base character ዸ)
+<u> <U1318> : "ጙ" U1319 # key g (base character ጘ)
+<u> <U1338> : "ጹ" U1339 # key [ (base character ጸ)
+<u> <U1330> : "ጱ" U1331 # key p (base character ጰ)
+<u> <U1280> : "áŠ" U1281 # key ] (base character ኀ)
+<u> <U1268> : "ቩ" U1269 # key v (base character ቨ)
+
+XCOMM Modifier: /i/
+<i> <U1210> : "ሒ" U1212 # key h (base character áˆ)
+<i> <U1220> : "ሢ" U1222 # key s (base character ሠ)
+<i> <U1250> : "ቒ" U1252 # key q (base character á‰)
+<i> <U1278> : "ቺ" U127A # key c (base character ቸ)
+<i> <U1320> : "ጢ" U1322 # key t (base character ጠ)
+<i> <U1298> : "ኚ" U129A # key n (base character ኘ)
+<i> <U12D0> : "á‹’" U12D2 # key x (base character á‹)
+<i> <U12B8> : "ኺ" U12BA # key k (base character ኸ)
+<i> <U12E0> : "á‹¢" U12E2 # key z (base character á‹ )
+<i> <U12F8> : "ዺ" U12FA # key d (base character ዸ)
+<i> <U1318> : "ጚ" U131A # key g (base character ጘ)
+<i> <U1338> : "ጺ" U133A # key [ (base character ጸ)
+<i> <U1330> : "ጲ" U1332 # key p (base character ጰ)
+<i> <U1280> : "ኂ" U1282 # key ] (base character ኀ)
+<i> <U1268> : "ቪ" U126A # key v (base character ቨ)
+
+XCOMM Modifier: /a/
+<a> <U1210> : "ሓ" U1213 # key h (base character áˆ)
+<a> <U1220> : "ሣ" U1223 # key s (base character ሠ)
+<a> <U1250> : "ቓ" U1253 # key q (base character á‰)
+<a> <U1278> : "ቻ" U127B # key c (base character ቸ)
+<a> <U1320> : "ጣ" U1323 # key t (base character ጠ)
+<a> <U1298> : "ኛ" U129B # key n (base character ኘ)
+<a> <U12D0> : "á‹“" U12D3 # key x (base character á‹)
+<a> <U12B8> : "ኻ" U12BB # key k (base character ኸ)
+<a> <U12E0> : "á‹£" U12E3 # key z (base character á‹ )
+<a> <U12F8> : "ዻ" U12FB # key d (base character ዸ)
+<a> <U1318> : "ጛ" U131B # key g (base character ጘ)
+<a> <U1338> : "ጻ" U133B # key [ (base character ጸ)
+<a> <U1330> : "ጳ" U1333 # key p (base character ጰ)
+<a> <U1280> : "ኃ" U1283 # key ] (base character ኀ)
+<a> <U1268> : "ቫ" U126B # key v (base character ቨ)
+
+XCOMM Modifier: /e/
+<e> <U1210> : "ሔ" U1214 # key h (base character áˆ)
+<e> <U1220> : "ሤ" U1224 # key s (base character ሠ)
+<e> <U1250> : "ቔ" U1254 # key q (base character á‰)
+<e> <U1278> : "ቼ" U127C # key c (base character ቸ)
+<e> <U1320> : "ጤ" U1324 # key t (base character ጠ)
+<e> <U1298> : "ኜ" U129C # key n (base character ኘ)
+<e> <U12D0> : "á‹”" U12D4 # key x (base character á‹)
+<e> <U12B8> : "ኼ" U12BC # key k (base character ኸ)
+<e> <U12E0> : "ዤ" U12E4 # key z (base character ዠ)
+<e> <U12F8> : "ዼ" U12FC # key d (base character ዸ)
+<e> <U1318> : "ጜ" U131C # key g (base character ጘ)
+<e> <U1338> : "ጼ" U133C # key [ (base character ጸ)
+<e> <U1330> : "ጴ" U1334 # key p (base character ጰ)
+<e> <U1280> : "ኄ" U1284 # key ] (base character ኀ)
+<e> <U1268> : "ቬ" U126C # key v (base character ቨ)
+
+XCOMM Modifier: /c/
+<c> <U1210> : "ሕ" U1215 # key h (base character áˆ)
+<c> <U1220> : "ሥ" U1225 # key s (base character ሠ)
+<c> <U1250> : "ቕ" U1255 # key q (base character á‰)
+<c> <U1278> : "ች" U127D # key c (base character ቸ)
+<c> <U1320> : "ጥ" U1325 # key t (base character ጠ)
+<c> <U1298> : "áŠ" U129D # key n (base character ኘ)
+<c> <U12D0> : "á‹•" U12D5 # key x (base character á‹)
+<c> <U12B8> : "ኽ" U12BD # key k (base character ኸ)
+<c> <U12E0> : "á‹¥" U12E5 # key z (base character á‹ )
+<c> <U12F8> : "ዽ" U12FD # key d (base character ዸ)
+<c> <U1318> : "áŒ" U131D # key g (base character ጘ)
+<c> <U1338> : "ጽ" U133D # key [ (base character ጸ)
+<c> <U1330> : "ጵ" U1335 # key p (base character ጰ)
+<c> <U1280> : "ኅ" U1285 # key ] (base character ኀ)
+<c> <U1268> : "ቭ" U126D # key v (base character ቨ)
+
+XCOMM Modifier: /o/
+<o> <U1210> : "ሖ" U1216 # key h (base character áˆ)
+<o> <U1220> : "ሦ" U1226 # key s (base character ሠ)
+<o> <U1250> : "ቖ" U1256 # key q (base character á‰)
+<o> <U1278> : "ቾ" U127E # key c (base character ቸ)
+<o> <U1320> : "ጦ" U1326 # key t (base character ጠ)
+<o> <U1298> : "ኞ" U129E # key n (base character ኘ)
+<o> <U12D0> : "á‹–" U12D6 # key x (base character á‹)
+<o> <U12B8> : "ኾ" U12BE # key k (base character ኸ)
+<o> <U12E0> : "ዦ" U12E6 # key z (base character ዠ)
+<o> <U12F8> : "ዾ" U12FE # key d (base character ዸ)
+<o> <U1318> : "ጞ" U131E # key g (base character ጘ)
+<o> <U1338> : "ጾ" U133E # key [ (base character ጸ)
+<o> <U1330> : "ጶ" U1336 # key p (base character ጰ)
+<o> <U1280> : "ኆ" U1286 # key ] (base character ኀ)
+<o> <U1268> : "ቮ" U126E # key v (base character ቨ)
+
+XCOMM Modifier: /A/
+<A> <U1210> : "ሗ" U1217 # key h (base character áˆ)
+<A> <U1220> : "ሧ" U1227 # key s (base character ሠ)
+<A> <U1250> : "ቛ" U125B # key q (base character á‰)
+<A> <U1278> : "ቿ" U127F # key c (base character ቸ)
+<A> <U1320> : "ጧ" U1327 # key t (base character ጠ)
+<A> <U1298> : "ኟ" U129F # key n (base character ኘ)
+<A> <U12B8> : "ዃ" U12C3 # key k (base character ኸ)
+<A> <U12E0> : "ዧ" U12E7 # key z (base character ዠ)
+<A> <U12F8> : "ዿ" U12FF # key d (base character ዸ)
+<A> <U1338> : "ጿ" U133F # key [ (base character ጸ)
+<A> <U1330> : "ጷ" U1337 # key p (base character ጰ)
+<A> <U1280> : "ኋ" U128B # key ] (base character ኀ)
+<A> <U1268> : "ቯ" U126F # key v (base character ቨ)
+
+XCOMM Modifier: /U/
+<U> <U1250> : "á‰" U125D # key q (base character á‰)
+<U> <U12B8> : "ዅ" U12C5 # key k (base character ኸ)
+
+XCOMM Modifier: /I/
+<I> <U1250> : "ቚ" U125A # key q (base character á‰)
+<I> <U12B8> : "ዂ" U12C2 # key k (base character ኸ)
+
+XCOMM Modifier: /E/
+<E> <U1250> : "ቜ" U125C # key q (base character á‰)
+<E> <U12B8> : "ዄ" U12C4 # key k (base character ኸ)
+
+XCOMM Modifier: /O/
+<O> <U1250> : "ቘ" U1258 # key q (base character á‰)
+<O> <U12B8> : "ዀ" U12C0 # key k (base character ኸ)
+
+XCOMM
+XCOMM Group III
+XCOMM
+<backslash> <quotedbl> : "á¥" U1365 # key "
+<backslash> <apostrophe> : "á¦" U1366 # key "
+<backslash> <minus> : "|" U007C # key -
+<backslash> <underscore> : "Â¥" U00A5 # key _
+<backslash> <question> : "á§" U1367 # key ?
+
+XCOMM
+XCOMM Khmer digraphs
+XCOMM
+
+<U17ff> : "ាំ"
+<U17fe> : "ោះ"
+<U17fd> : "áŸáŸ‡"
+<U17fc> : "ុំ"
+<U17fb> : "ុះ"
+
+XCOMM
+XCOMM Arabic Lam-Alef ligatures
+XCOMM
+
+<UFEFB> : "لا" # ARABIC LIGATURE LAM WITH ALEF
+<UFEF7> : "لأ" # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE
+<UFEF9> : "لإ" # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW
+<UFEF5> : "لآ" # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE
diff --git a/libX11/nls/armscii-8/Compose.pre b/libX11/nls/armscii-8/Compose.pre
index f9ac7dead..f6299bbb2 100644
--- a/libX11/nls/armscii-8/Compose.pre
+++ b/libX11/nls/armscii-8/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ARMSCII-8 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ARMSCII-8 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/armscii-8/XI18N_OBJS b/libX11/nls/armscii-8/XI18N_OBJS
index 02d87c60d..3ece32e62 100644
--- a/libX11/nls/armscii-8/XI18N_OBJS
+++ b/libX11/nls/armscii-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for armscii-8 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for armscii-8 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/armscii-8/XLC_LOCALE.pre b/libX11/nls/armscii-8/XLC_LOCALE.pre
index 72013f711..258ce257d 100644
--- a/libX11/nls/armscii-8/XLC_LOCALE.pre
+++ b/libX11/nls/armscii-8/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for armscii-8.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ARMSCII-8:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset ARMSCII-8:GR
- font ARMSCII-8:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name ARMSCII-8
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ARMSCII-8
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ARMSCII-8:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ARMSCII-8:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for armscii-8.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ARMSCII-8:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset ARMSCII-8:GR
+ font ARMSCII-8:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ARMSCII-8
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ARMSCII-8
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ARMSCII-8:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ARMSCII-8:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/compose.dir.pre b/libX11/nls/compose.dir.pre
index 14a2fa987..f18d3cb62 100644
--- a/libX11/nls/compose.dir.pre
+++ b/libX11/nls/compose.dir.pre
@@ -1,420 +1,420 @@
-XCOMM
-XCOMM This file contains compose table file name.
-XCOMM The first word is the compose table file name and
-XCOMM the second word is full locale name.
-XCOMM
-XCOMM
-iso8859-1/Compose: C
-iso8859-1/Compose: af_ZA.ISO8859-1
-iso8859-6/Compose: ar_AA.ISO8859-6
-iso8859-6/Compose: ar_BH.ISO8859-6
-iso8859-6/Compose: ar_DZ.ISO8859-6
-iso8859-6/Compose: ar_EG.ISO8859-6
-iso8859-6/Compose: ar_IQ.ISO8859-6
-iso8859-6/Compose: ar_JO.ISO8859-6
-iso8859-6/Compose: ar_KW.ISO8859-6
-iso8859-6/Compose: ar_LB.ISO8859-6
-iso8859-6/Compose: ar_LY.ISO8859-6
-iso8859-6/Compose: ar_MA.ISO8859-6
-iso8859-6/Compose: ar_OM.ISO8859-6
-iso8859-6/Compose: ar_QA.ISO8859-6
-iso8859-6/Compose: ar_SA.ISO8859-6
-iso8859-6/Compose: ar_TN.ISO8859-6
-iso8859-6/Compose: ar_YE.ISO8859-6
-iso8859-9e/Compose: az_AZ.ISO8859-9E
-koi8-c/Compose: a3_AZ.KOI8-C
-microsoft-cp1251/Compose: be_BY.CP1251
-iso8859-5/Compose: bg_BG.ISO8859-5
-microsoft-cp1251/Compose: bg_BG.CP1251
-iso8859-1/Compose: br_FR.ISO8859-1
-iso8859-14/Compose: br_FR.ISO8859-14
-iso8859-15/Compose: br_FR.ISO8859-15
-iso8859-2/Compose: bs_BA.ISO8859-2
-iso8859-1/Compose: ca_AD.ISO8859-1
-iso8859-15/Compose: ca_AD.ISO8859-15
-iso8859-1/Compose: ca_ES.ISO8859-1
-iso8859-15/Compose: ca_ES.ISO8859-15
-iso8859-1/Compose: ca_FR.ISO8859-1
-iso8859-15/Compose: ca_FR.ISO8859-15
-iso8859-1/Compose: ca_IT.ISO8859-1
-iso8859-15/Compose: ca_IT.ISO8859-15
-iso8859-2/Compose: cs_CZ.ISO8859-2
-iso8859-1/Compose: cy_GB.ISO8859-1
-iso8859-14/Compose: cy_GB.ISO8859-14
-iso8859-15/Compose: cy_GB.ISO8859-15
-iso8859-1/Compose: da_DK.ISO8859-1
-iso8859-15/Compose: da_DK.ISO8859-15
-iso8859-1/Compose: de_AT.ISO8859-1
-iso8859-15/Compose: de_AT.ISO8859-15
-iso8859-1/Compose: de_CH.ISO8859-1
-iso8859-15/Compose: de_CH.ISO8859-15
-iso8859-1/Compose: de_DE.ISO8859-1
-iso8859-15/Compose: de_DE.ISO8859-15
-iso8859-1/Compose: de_LI.ISO8859-1
-iso8859-15/Compose: de_LI.ISO8859-15
-iso8859-1/Compose: de_LU.ISO8859-1
-iso8859-15/Compose: de_LU.ISO8859-15
-iso8859-7/Compose: el_GR.ISO8859-7
-iso8859-1/Compose: en_AU.ISO8859-1
-iso8859-1/Compose: en_BZ.ISO8859-1
-iso8859-1/Compose: en_CA.ISO8859-1
-iso8859-1/Compose: en_GB.ISO8859-1
-iso8859-15/Compose: en_GB.ISO8859-15
-iso8859-1/Compose: en_IE.ISO8859-1
-iso8859-15/Compose: en_IE.ISO8859-15
-iso8859-1/Compose: en_JM.ISO8859-1
-iso8859-1/Compose: en_NZ.ISO8859-1
-iso8859-1/Compose: en_TT.ISO8859-1
-iso8859-1/Compose: en_UK.ISO8859-1
-iso8859-15/Compose: en_UK.ISO8859-15
-iso8859-1/Compose: en_US.ISO8859-1
-iso8859-15/Compose: en_US.ISO8859-15
-iso8859-1/Compose: en_ZA.ISO8859-1
-iso8859-15/Compose: en_ZA.ISO8859-15
-iso8859-3/Compose: eo_XX.ISO8859-3
-iso8859-1/Compose: es_AR.ISO8859-1
-iso8859-1/Compose: es_BO.ISO8859-1
-iso8859-1/Compose: es_CL.ISO8859-1
-iso8859-1/Compose: es_CO.ISO8859-1
-iso8859-1/Compose: es_CR.ISO8859-1
-iso8859-1/Compose: es_DO.ISO8859-1
-iso8859-1/Compose: es_EC.ISO8859-1
-iso8859-1/Compose: es_ES.ISO8859-1
-iso8859-15/Compose: es_ES.ISO8859-15
-iso8859-1/Compose: es_GT.ISO8859-1
-iso8859-1/Compose: es_HN.ISO8859-1
-iso8859-1/Compose: es_MX.ISO8859-1
-iso8859-1/Compose: es_NI.ISO8859-1
-iso8859-1/Compose: es_PA.ISO8859-1
-iso8859-1/Compose: es_PE.ISO8859-1
-iso8859-1/Compose: es_PR.ISO8859-1
-iso8859-1/Compose: es_PY.ISO8859-1
-iso8859-1/Compose: es_SV.ISO8859-1
-iso8859-1/Compose: es_UY.ISO8859-1
-iso8859-1/Compose: es_VE.ISO8859-1
-iso8859-1/Compose: et_EE.ISO8859-1
-iso8859-4/Compose: et_EE.ISO8859-4
-iso8859-13/Compose: et_EE.ISO8859-13
-iso8859-15/Compose: et_EE.ISO8859-15
-iso8859-1/Compose: eu_ES.ISO8859-1
-iso8859-15/Compose: eu_ES.ISO8859-15
-isiri-3342/Compose: fa_IR.ISIRI-3342
-iso8859-1/Compose: fi_FI.ISO8859-1
-iso8859-15/Compose: fi_FI.ISO8859-15
-iso8859-1/Compose: fo_FO.ISO8859-1
-iso8859-15/Compose: fo_FO.ISO8859-15
-iso8859-1/Compose: fr_BE.ISO8859-1
-iso8859-15/Compose: fr_BE.ISO8859-15
-iso8859-1/Compose: fr_CA.ISO8859-1
-iso8859-15/Compose: fr_CA.ISO8859-15
-iso8859-1/Compose: fr_CH.ISO8859-1
-iso8859-15/Compose: fr_CH.ISO8859-15
-iso8859-1/Compose: fr_FR.ISO8859-1
-iso8859-15/Compose: fr_FR.ISO8859-15
-iso8859-1/Compose: fr_LU.ISO8859-1
-iso8859-15/Compose: fr_LU.ISO8859-15
-iso8859-1/Compose: ga_IE.ISO8859-1
-iso8859-14/Compose: ga_IE.ISO8859-14
-iso8859-15/Compose: ga_IE.ISO8859-15
-iso8859-1/Compose: gd_GB.ISO8859-1
-iso8859-14/Compose: gd_GB.ISO8859-14
-iso8859-15/Compose: gd_GB.ISO8859-15
-iso8859-1/Compose: gl_ES.ISO8859-1
-iso8859-15/Compose: gl_ES.ISO8859-15
-iso8859-1/Compose: gv_GB.ISO8859-1
-iso8859-14/Compose: gv_GB.ISO8859-14
-iso8859-15/Compose: gv_GB.ISO8859-15
-iso8859-8/Compose: he_IL.ISO8859-8
-microsoft-cp1255/Compose: he_IL.CP1255
-iscii-dev/Compose: hi_IN.ISCII-DEV
-iso8859-2/Compose: hr_HR.ISO8859-2
-iso8859-2/Compose: hu_HU.ISO8859-2
-armscii-8/Compose: hy_AM.ARMSCII-8
-iso8859-1/Compose: id_ID.ISO8859-1
-iso8859-15/Compose: id_ID.ISO8859-15
-iso8859-1/Compose: is_IS.ISO8859-1
-iso8859-15/Compose: is_IS.ISO8859-15
-iso8859-1/Compose: it_CH.ISO8859-1
-iso8859-15/Compose: it_CH.ISO8859-15
-iso8859-1/Compose: it_IT.ISO8859-1
-iso8859-15/Compose: it_IT.ISO8859-15
-ja/Compose: ja_JP.eucJP
-ja.SJIS/Compose: ja_JP.SJIS
-ja.JIS/Compose: ja_JP.JIS7
-georgian-academy/Compose: ka_GE.GEORGIAN-ACADEMY
-georgian-ps/Compose: ka_GE.GEORGIAN-PS
-iso8859-1/Compose: kl_GL.ISO8859-1
-iso8859-15/Compose: kl_GL.ISO8859-15
-iso8859-1/Compose: kw_GB.ISO8859-1
-iso8859-14/Compose: kw_GB.ISO8859-14
-iso8859-15/Compose: kw_GB.ISO8859-15
-ko/Compose: ko_KR.eucKR
-ibm-cp1133/Compose: lo_LA.IBM-CP1133
-mulelao-1/Compose: lo_LA.MULELAO-1
-iso8859-1/Compose: lt_LN.ISO8859-1
-iso8859-4/Compose: lt_LT.ISO8859-4
-iso8859-13/Compose: lt_LT.ISO8859-13
-iso8859-4/Compose: lv_LV.ISO8859-4
-iso8859-13/Compose: lv_LV.ISO8859-13
-iso8859-13/Compose: mi_NZ.ISO8859-13
-iso8859-5/Compose: mk_MK.ISO8859-5
-XCOMM mk_MK.UTF-8/Compose: mk_MK.UTF-8
-microsoft-cp1251/Compose: mk_MK.CP1251
-iso8859-1/Compose: ms_MY.ISO8859-1
-iso8859-3/Compose: mt_MT.ISO8859-3
-iso8859-1/Compose: nl_BE.ISO8859-1
-iso8859-15/Compose: nl_BE.ISO8859-15
-iso8859-1/Compose: nl_NL.ISO8859-1
-iso8859-15/Compose: nl_NL.ISO8859-15
-iso8859-1/Compose: no_NO.ISO8859-1
-iso8859-15/Compose: no_NO.ISO8859-15
-iso8859-1/Compose: nb_NO.ISO8859-1
-iso8859-15/Compose: nb_NO.ISO8859-15
-iso8859-1/Compose: nn_NO.ISO8859-1
-iso8859-15/Compose: nn_NO.ISO8859-15
-iso8859-1/Compose: nr_ZA.ISO8859-1
-iso8859-15/Compose: nso_ZA.ISO8859-15
-iso8859-1/Compose: ny_NO.ISO8859-1
-iso8859-15/Compose: ny_NO.ISO8859-15
-iso8859-1/Compose: oc_FR.ISO8859-1
-iso8859-15/Compose: oc_FR.ISO8859-15
-iso8859-1/Compose: pd_DE.ISO8859-1
-iso8859-1/Compose: pd_US.ISO8859-1
-iso8859-1/Compose: ph_PH.ISO8859-1
-iso8859-2/Compose: pl_PL.ISO8859-2
-iso8859-1/Compose: pp_AN.ISO8859-1
-iso8859-1/Compose: pt_BR.ISO8859-1
-iso8859-15/Compose: pt_BR.ISO8859-15
-iso8859-1/Compose: pt_PT.ISO8859-1
-iso8859-15/Compose: pt_PT.ISO8859-15
-iso8859-2/Compose: ro_RO.ISO8859-2
-koi8-r/Compose: ru_RU.KOI8-R
-iso8859-5/Compose: ru_RU.ISO8859-5
-microsoft-cp1251/Compose: ru_RU.CP1251
-koi8-u/Compose: ru_UA.KOI8-U
-iso8859-1/Compose: rw_RW.ISO8859-1
-iso8859-2/Compose: sh_YU.ISO8859-2
-iso8859-2/Compose: sk_SK.ISO8859-2
-iso8859-2/Compose: sl_CS.ISO8859-2
-iso8859-2/Compose: sl_SI.ISO8859-2
-iso8859-2/Compose: sq_AL.ISO8859-2
-iso8859-2/Compose: sr_CS.ISO8859-2
-iso8859-5/Compose: sr_CS.ISO8859-5
-iso8859-2/Compose: sr_YU.ISO8859-2
-iso8859-5/Compose: sr_YU.ISO8859-5
-iso8859-1/Compose: ss_ZA.ISO8859-1
-iso8859-1/Compose: st_ZA.ISO8859-1
-iso8859-1/Compose: sv_FI.ISO8859-1
-iso8859-15/Compose: sv_FI.ISO8859-15
-iso8859-1/Compose: sv_SE.ISO8859-1
-iso8859-15/Compose: sv_SE.ISO8859-15
-tscii-0/Compose: ta_IN.TSCII-0
-koi8-c/Compose: tg_TJ.KOI8-C
-iso8859-1/Compose: tl_PH.ISO8859-1
-iso8859-15/Compose: tn_ZA.ISO8859-15
-iso8859-9/Compose: tr_TR.ISO8859-9
-iso8859-1/Compose: ts_ZA.ISO8859-1
-tatar-cyr/Compose: tt_RU.TATAR-CYR
-koi8-c/Compose: tt_RU.KOI8-C
-koi8-u/Compose: uk_UA.KOI8-U
-microsoft-cp1256/Compose: ur_PK.CP1256
-vi_VN.viscii/Compose: vi_VN.VISCII
-vi_VN.tcvn/Compose: vi_VN.TCVN
-iso8859-1/Compose: wa_BE.ISO8859-1
-iso8859-1/Compose: xh_ZA.ISO8859-1
-microsoft-cp1255/Compose: yi_US.CP1256
-zh_CN/Compose: zh_CN.eucCN
-zh_CN/Compose: zh_CN.GB2312
-zh_CN.gbk/Compose: zh_CN.GBK
-zh_CN.gb18030/Compose: zh_CN.GB18030
-zh_HK.big5/Compose: zh_HK.big5
-zh_HK.big5/Compose: zh_HK.Big5
-zh_HK.big5hkscs/Compose: zh_HK.big5hkscs
-zh_HK.big5hkscs/Compose: zh_HK.Big5HKSCS
-zh_TW.big5/Compose: zh_TW.big5
-zh_TW.big5/Compose: zh_TW.Big5
-zh_TW/Compose: zh_TW.eucTW
-iso8859-1/Compose: zu_ZA.ISO8859-1
-XCOMM
-XCOMM
-en_US.UTF-8/Compose: af_ZA.UTF-8
-en_US.UTF-8/Compose: ar_AA.UTF-8
-en_US.UTF-8/Compose: ar_BH.UTF-8
-en_US.UTF-8/Compose: ar_DZ.UTF-8
-en_US.UTF-8/Compose: ar_EG.UTF-8
-en_US.UTF-8/Compose: ar_IN.UTF-8
-en_US.UTF-8/Compose: ar_IQ.UTF-8
-en_US.UTF-8/Compose: ar_JO.UTF-8
-en_US.UTF-8/Compose: ar_KW.UTF-8
-en_US.UTF-8/Compose: ar_LB.UTF-8
-en_US.UTF-8/Compose: ar_LY.UTF-8
-en_US.UTF-8/Compose: ar_MA.UTF-8
-en_US.UTF-8/Compose: ar_OM.UTF-8
-en_US.UTF-8/Compose: ar_QA.UTF-8
-en_US.UTF-8/Compose: ar_SA.UTF-8
-en_US.UTF-8/Compose: ar_TN.UTF-8
-en_US.UTF-8/Compose: ar_YE.UTF-8
-en_US.UTF-8/Compose: bo_IN.UTF-8
-en_US.UTF-8/Compose: bs_BA.UTF-8
-en_US.UTF-8/Compose: az_AZ.UTF-8
-en_US.UTF-8/Compose: a3_AZ.UTF-8
-en_US.UTF-8/Compose: be_BY.UTF-8
-en_US.UTF-8/Compose: bg_BG.UTF-8
-en_US.UTF-8/Compose: bn_IN.UTF-8
-en_US.UTF-8/Compose: br_FR.UTF-8
-en_US.UTF-8/Compose: ca_AD.UTF-8
-en_US.UTF-8/Compose: ca_ES.UTF-8
-en_US.UTF-8/Compose: ca_FR.UTF-8
-en_US.UTF-8/Compose: ca_IT.UTF-8
-en_US.UTF-8/Compose: cs_CZ.UTF-8
-en_US.UTF-8/Compose: cy_GB.UTF-8
-en_US.UTF-8/Compose: cz_CZ.UTF-8
-en_US.UTF-8/Compose: da_DK.UTF-8
-en_US.UTF-8/Compose: de_AT.UTF-8
-en_US.UTF-8/Compose: de_BE.UTF-8
-en_US.UTF-8/Compose: de_CH.UTF-8
-en_US.UTF-8/Compose: de_DE.UTF-8
-en_US.UTF-8/Compose: de_LI.UTF-8
-en_US.UTF-8/Compose: de_LU.UTF-8
-el_GR.UTF-8/Compose: el_CY.UTF-8
-el_GR.UTF-8/Compose: el_GR.UTF-8
-en_US.UTF-8/Compose: en_AU.UTF-8
-en_US.UTF-8/Compose: en_BZ.UTF-8
-en_US.UTF-8/Compose: en_CA.UTF-8
-en_US.UTF-8/Compose: en_GB.UTF-8
-en_US.UTF-8/Compose: en_IE.UTF-8
-en_US.UTF-8/Compose: en_JM.UTF-8
-en_US.UTF-8/Compose: en_MT.UTF-8
-en_US.UTF-8/Compose: en_NZ.UTF-8
-en_US.UTF-8/Compose: en_TT.UTF-8
-en_US.UTF-8/Compose: en_UK.UTF-8
-en_US.UTF-8/Compose: en_US.UTF-8
-en_US.UTF-8/Compose: en_ZA.UTF-8
-en_US.UTF-8/Compose: eo_XX.UTF-8
-en_US.UTF-8/Compose: es_AR.UTF-8
-en_US.UTF-8/Compose: es_BO.UTF-8
-en_US.UTF-8/Compose: es_CL.UTF-8
-en_US.UTF-8/Compose: es_CO.UTF-8
-en_US.UTF-8/Compose: es_CR.UTF-8
-en_US.UTF-8/Compose: es_DO.UTF-8
-en_US.UTF-8/Compose: es_EC.UTF-8
-en_US.UTF-8/Compose: es_ES.UTF-8
-en_US.UTF-8/Compose: es_GT.UTF-8
-en_US.UTF-8/Compose: es_HN.UTF-8
-en_US.UTF-8/Compose: es_MX.UTF-8
-en_US.UTF-8/Compose: es_NI.UTF-8
-en_US.UTF-8/Compose: es_PA.UTF-8
-en_US.UTF-8/Compose: es_PE.UTF-8
-en_US.UTF-8/Compose: es_PR.UTF-8
-en_US.UTF-8/Compose: es_PY.UTF-8
-en_US.UTF-8/Compose: es_SV.UTF-8
-en_US.UTF-8/Compose: es_US.UTF-8
-en_US.UTF-8/Compose: es_UY.UTF-8
-en_US.UTF-8/Compose: es_VE.UTF-8
-en_US.UTF-8/Compose: et_EE.UTF-8
-en_US.UTF-8/Compose: eu_ES.UTF-8
-en_US.UTF-8/Compose: fa_IR.UTF-8
-fi_FI.UTF-8/Compose: fi_FI.UTF-8
-en_US.UTF-8/Compose: fo_FO.UTF-8
-en_US.UTF-8/Compose: fr_BE.UTF-8
-en_US.UTF-8/Compose: fr_CA.UTF-8
-en_US.UTF-8/Compose: fr_CH.UTF-8
-en_US.UTF-8/Compose: fr_FR.UTF-8
-en_US.UTF-8/Compose: fr_LU.UTF-8
-en_US.UTF-8/Compose: ga_IE.UTF-8
-en_US.UTF-8/Compose: gd_GB.UTF-8
-en_US.UTF-8/Compose: gl_ES.UTF-8
-en_US.UTF-8/Compose: gu_IN.UTF-8
-en_US.UTF-8/Compose: gv_GB.UTF-8
-en_US.UTF-8/Compose: he_IL.UTF-8
-en_US.UTF-8/Compose: hi_IN.UTF-8
-en_US.UTF-8/Compose: hne_IN.UTF-8
-en_US.UTF-8/Compose: hr_HR.UTF-8
-en_US.UTF-8/Compose: hu_HU.UTF-8
-en_US.UTF-8/Compose: hy_AM.UTF-8
-en_US.UTF-8/Compose: id_ID.UTF-8
-en_US.UTF-8/Compose: is_IS.UTF-8
-en_US.UTF-8/Compose: it_CH.UTF-8
-en_US.UTF-8/Compose: it_IT.UTF-8
-en_US.UTF-8/Compose: iu_CA.UTF-8
-en_US.UTF-8/Compose: ja_JP.UTF-8
-en_US.UTF-8/Compose: ka_GE.UTF-8
-en_US.UTF-8/Compose: kl_GL.UTF-8
-en_US.UTF-8/Compose: kk_KZ.UTF-8
-en_US.UTF-8/Compose: kn_IN.UTF-8
-en_US.UTF-8/Compose: ko_KR.UTF-8
-en_US.UTF-8/Compose: ks_IN.UTF-8
-en_US.UTF-8/Compose: ks_IN@devanagari.UTF-8
-en_US.UTF-8/Compose: kw_GB.UTF-8
-en_US.UTF-8/Compose: ky_KG.UTF-8
-en_US.UTF-8/Compose: lo_LA.UTF-8
-en_US.UTF-8/Compose: lt_LT.UTF-8
-en_US.UTF-8/Compose: lv_LV.UTF-8
-en_US.UTF-8/Compose: mai_IN.UTF-8
-en_US.UTF-8/Compose: mi_NZ.UTF-8
-en_US.UTF-8/Compose: mk_MK.UTF-8
-en_US.UTF-8/Compose: ml_IN.UTF-8
-en_US.UTF-8/Compose: mr_IN.UTF-8
-en_US.UTF-8/Compose: ms_MY.UTF-8
-en_US.UTF-8/Compose: mt_MT.UTF-8
-en_US.UTF-8/Compose: nl_BE.UTF-8
-en_US.UTF-8/Compose: nl_NL.UTF-8
-en_US.UTF-8/Compose: nn_NO.UTF-8
-en_US.UTF-8/Compose: no_NO.UTF-8
-en_US.UTF-8/Compose: nb_NO.UTF-8
-en_US.UTF-8/Compose: nr_ZA.UTF-8
-en_US.UTF-8/Compose: nso_ZA.UTF-8
-en_US.UTF-8/Compose: ny_NO.UTF-8
-en_US.UTF-8/Compose: oc_FR.UTF-8
-en_US.UTF-8/Compose: or_IN.UTF-8
-en_US.UTF-8/Compose: pa_IN.UTF-8
-en_US.UTF-8/Compose: pa_PK.UTF-8
-en_US.UTF-8/Compose: pd_DE.UTF-8
-en_US.UTF-8/Compose: pd_US.UTF-8
-en_US.UTF-8/Compose: ph_PH.UTF-8
-en_US.UTF-8/Compose: pl_PL.UTF-8
-en_US.UTF-8/Compose: pp_AN.UTF-8
-pt_BR.UTF-8/Compose: pt_BR.UTF-8
-en_US.UTF-8/Compose: pt_PT.UTF-8
-en_US.UTF-8/Compose: ro_RO.UTF-8
-en_US.UTF-8/Compose: ru_RU.UTF-8
-en_US.UTF-8/Compose: ru_UA.UTF-8
-en_US.UTF-8/Compose: rw_RW.UTF-8
-en_US.UTF-8/Compose: sa_IN.UTF-8
-en_US.UTF-8/Compose: sd_IN.UTF-8
-en_US.UTF-8/Compose: sd_IN@devanagari.UTF-8
-en_US.UTF-8/Compose: sh_BA.UTF-8
-en_US.UTF-8/Compose: si_LK.UTF-8
-en_US.UTF-8/Compose: sk_SK.UTF-8
-en_US.UTF-8/Compose: sl_SI.UTF-8
-en_US.UTF-8/Compose: sq_AL.UTF-8
-en_US.UTF-8/Compose: sr_CS.UTF-8
-en_US.UTF-8/Compose: sr_ME.UTF-8
-en_US.UTF-8/Compose: sr_RS.UTF-8
-en_US.UTF-8/Compose: sr_YU.UTF-8
-en_US.UTF-8/Compose: ss_ZA.UTF-8
-en_US.UTF-8/Compose: st_ZA.UTF-8
-en_US.UTF-8/Compose: sv_FI.UTF-8
-en_US.UTF-8/Compose: sv_SE.UTF-8
-en_US.UTF-8/Compose: ta_IN.UTF-8
-en_US.UTF-8/Compose: te_IN.UTF-8
-en_US.UTF-8/Compose: tg_TJ.UTF-8
-en_US.UTF-8/Compose: th_TH.UTF-8
-en_US.UTF-8/Compose: tl_PH.UTF-8
-en_US.UTF-8/Compose: tn_ZA.UTF-8
-en_US.UTF-8/Compose: tr_TR.UTF-8
-en_US.UTF-8/Compose: ts_ZA.UTF-8
-en_US.UTF-8/Compose: tt_RU.UTF-8
-en_US.UTF-8/Compose: uk_UA.UTF-8
-en_US.UTF-8/Compose: ur_PK.UTF-8
-en_US.UTF-8/Compose: uz_UZ.UTF-8
-en_US.UTF-8/Compose: ve_ZA.UTF-8
-en_US.UTF-8/Compose: vi_VN.UTF-8
-en_US.UTF-8/Compose: wa_BE.UTF-8
-en_US.UTF-8/Compose: yi_US.UTF-8
-en_US.UTF-8/Compose: xh_ZA.UTF-8
-en_US.UTF-8/Compose: zh_TW.UTF-8
-en_US.UTF-8/Compose: zu_ZA.UTF-8
-en_US.UTF-8/Compose: bs_BA.UTF-8
-en_US.UTF-8/Compose: ne_NP.UTF-8
-
+XCOMM
+XCOMM This file contains compose table file name.
+XCOMM The first word is the compose table file name and
+XCOMM the second word is full locale name.
+XCOMM
+XCOMM
+iso8859-1/Compose: C
+iso8859-1/Compose: af_ZA.ISO8859-1
+iso8859-6/Compose: ar_AA.ISO8859-6
+iso8859-6/Compose: ar_BH.ISO8859-6
+iso8859-6/Compose: ar_DZ.ISO8859-6
+iso8859-6/Compose: ar_EG.ISO8859-6
+iso8859-6/Compose: ar_IQ.ISO8859-6
+iso8859-6/Compose: ar_JO.ISO8859-6
+iso8859-6/Compose: ar_KW.ISO8859-6
+iso8859-6/Compose: ar_LB.ISO8859-6
+iso8859-6/Compose: ar_LY.ISO8859-6
+iso8859-6/Compose: ar_MA.ISO8859-6
+iso8859-6/Compose: ar_OM.ISO8859-6
+iso8859-6/Compose: ar_QA.ISO8859-6
+iso8859-6/Compose: ar_SA.ISO8859-6
+iso8859-6/Compose: ar_TN.ISO8859-6
+iso8859-6/Compose: ar_YE.ISO8859-6
+iso8859-9e/Compose: az_AZ.ISO8859-9E
+koi8-c/Compose: a3_AZ.KOI8-C
+microsoft-cp1251/Compose: be_BY.CP1251
+iso8859-5/Compose: bg_BG.ISO8859-5
+microsoft-cp1251/Compose: bg_BG.CP1251
+iso8859-1/Compose: br_FR.ISO8859-1
+iso8859-14/Compose: br_FR.ISO8859-14
+iso8859-15/Compose: br_FR.ISO8859-15
+iso8859-2/Compose: bs_BA.ISO8859-2
+iso8859-1/Compose: ca_AD.ISO8859-1
+iso8859-15/Compose: ca_AD.ISO8859-15
+iso8859-1/Compose: ca_ES.ISO8859-1
+iso8859-15/Compose: ca_ES.ISO8859-15
+iso8859-1/Compose: ca_FR.ISO8859-1
+iso8859-15/Compose: ca_FR.ISO8859-15
+iso8859-1/Compose: ca_IT.ISO8859-1
+iso8859-15/Compose: ca_IT.ISO8859-15
+iso8859-2/Compose: cs_CZ.ISO8859-2
+iso8859-1/Compose: cy_GB.ISO8859-1
+iso8859-14/Compose: cy_GB.ISO8859-14
+iso8859-15/Compose: cy_GB.ISO8859-15
+iso8859-1/Compose: da_DK.ISO8859-1
+iso8859-15/Compose: da_DK.ISO8859-15
+iso8859-1/Compose: de_AT.ISO8859-1
+iso8859-15/Compose: de_AT.ISO8859-15
+iso8859-1/Compose: de_CH.ISO8859-1
+iso8859-15/Compose: de_CH.ISO8859-15
+iso8859-1/Compose: de_DE.ISO8859-1
+iso8859-15/Compose: de_DE.ISO8859-15
+iso8859-1/Compose: de_LI.ISO8859-1
+iso8859-15/Compose: de_LI.ISO8859-15
+iso8859-1/Compose: de_LU.ISO8859-1
+iso8859-15/Compose: de_LU.ISO8859-15
+iso8859-7/Compose: el_GR.ISO8859-7
+iso8859-1/Compose: en_AU.ISO8859-1
+iso8859-1/Compose: en_BZ.ISO8859-1
+iso8859-1/Compose: en_CA.ISO8859-1
+iso8859-1/Compose: en_GB.ISO8859-1
+iso8859-15/Compose: en_GB.ISO8859-15
+iso8859-1/Compose: en_IE.ISO8859-1
+iso8859-15/Compose: en_IE.ISO8859-15
+iso8859-1/Compose: en_JM.ISO8859-1
+iso8859-1/Compose: en_NZ.ISO8859-1
+iso8859-1/Compose: en_TT.ISO8859-1
+iso8859-1/Compose: en_UK.ISO8859-1
+iso8859-15/Compose: en_UK.ISO8859-15
+iso8859-1/Compose: en_US.ISO8859-1
+iso8859-15/Compose: en_US.ISO8859-15
+iso8859-1/Compose: en_ZA.ISO8859-1
+iso8859-15/Compose: en_ZA.ISO8859-15
+iso8859-3/Compose: eo_XX.ISO8859-3
+iso8859-1/Compose: es_AR.ISO8859-1
+iso8859-1/Compose: es_BO.ISO8859-1
+iso8859-1/Compose: es_CL.ISO8859-1
+iso8859-1/Compose: es_CO.ISO8859-1
+iso8859-1/Compose: es_CR.ISO8859-1
+iso8859-1/Compose: es_DO.ISO8859-1
+iso8859-1/Compose: es_EC.ISO8859-1
+iso8859-1/Compose: es_ES.ISO8859-1
+iso8859-15/Compose: es_ES.ISO8859-15
+iso8859-1/Compose: es_GT.ISO8859-1
+iso8859-1/Compose: es_HN.ISO8859-1
+iso8859-1/Compose: es_MX.ISO8859-1
+iso8859-1/Compose: es_NI.ISO8859-1
+iso8859-1/Compose: es_PA.ISO8859-1
+iso8859-1/Compose: es_PE.ISO8859-1
+iso8859-1/Compose: es_PR.ISO8859-1
+iso8859-1/Compose: es_PY.ISO8859-1
+iso8859-1/Compose: es_SV.ISO8859-1
+iso8859-1/Compose: es_UY.ISO8859-1
+iso8859-1/Compose: es_VE.ISO8859-1
+iso8859-1/Compose: et_EE.ISO8859-1
+iso8859-4/Compose: et_EE.ISO8859-4
+iso8859-13/Compose: et_EE.ISO8859-13
+iso8859-15/Compose: et_EE.ISO8859-15
+iso8859-1/Compose: eu_ES.ISO8859-1
+iso8859-15/Compose: eu_ES.ISO8859-15
+isiri-3342/Compose: fa_IR.ISIRI-3342
+iso8859-1/Compose: fi_FI.ISO8859-1
+iso8859-15/Compose: fi_FI.ISO8859-15
+iso8859-1/Compose: fo_FO.ISO8859-1
+iso8859-15/Compose: fo_FO.ISO8859-15
+iso8859-1/Compose: fr_BE.ISO8859-1
+iso8859-15/Compose: fr_BE.ISO8859-15
+iso8859-1/Compose: fr_CA.ISO8859-1
+iso8859-15/Compose: fr_CA.ISO8859-15
+iso8859-1/Compose: fr_CH.ISO8859-1
+iso8859-15/Compose: fr_CH.ISO8859-15
+iso8859-1/Compose: fr_FR.ISO8859-1
+iso8859-15/Compose: fr_FR.ISO8859-15
+iso8859-1/Compose: fr_LU.ISO8859-1
+iso8859-15/Compose: fr_LU.ISO8859-15
+iso8859-1/Compose: ga_IE.ISO8859-1
+iso8859-14/Compose: ga_IE.ISO8859-14
+iso8859-15/Compose: ga_IE.ISO8859-15
+iso8859-1/Compose: gd_GB.ISO8859-1
+iso8859-14/Compose: gd_GB.ISO8859-14
+iso8859-15/Compose: gd_GB.ISO8859-15
+iso8859-1/Compose: gl_ES.ISO8859-1
+iso8859-15/Compose: gl_ES.ISO8859-15
+iso8859-1/Compose: gv_GB.ISO8859-1
+iso8859-14/Compose: gv_GB.ISO8859-14
+iso8859-15/Compose: gv_GB.ISO8859-15
+iso8859-8/Compose: he_IL.ISO8859-8
+microsoft-cp1255/Compose: he_IL.CP1255
+iscii-dev/Compose: hi_IN.ISCII-DEV
+iso8859-2/Compose: hr_HR.ISO8859-2
+iso8859-2/Compose: hu_HU.ISO8859-2
+armscii-8/Compose: hy_AM.ARMSCII-8
+iso8859-1/Compose: id_ID.ISO8859-1
+iso8859-15/Compose: id_ID.ISO8859-15
+iso8859-1/Compose: is_IS.ISO8859-1
+iso8859-15/Compose: is_IS.ISO8859-15
+iso8859-1/Compose: it_CH.ISO8859-1
+iso8859-15/Compose: it_CH.ISO8859-15
+iso8859-1/Compose: it_IT.ISO8859-1
+iso8859-15/Compose: it_IT.ISO8859-15
+ja/Compose: ja_JP.eucJP
+ja.SJIS/Compose: ja_JP.SJIS
+ja.JIS/Compose: ja_JP.JIS7
+georgian-academy/Compose: ka_GE.GEORGIAN-ACADEMY
+georgian-ps/Compose: ka_GE.GEORGIAN-PS
+iso8859-1/Compose: kl_GL.ISO8859-1
+iso8859-15/Compose: kl_GL.ISO8859-15
+iso8859-1/Compose: kw_GB.ISO8859-1
+iso8859-14/Compose: kw_GB.ISO8859-14
+iso8859-15/Compose: kw_GB.ISO8859-15
+ko/Compose: ko_KR.eucKR
+ibm-cp1133/Compose: lo_LA.IBM-CP1133
+mulelao-1/Compose: lo_LA.MULELAO-1
+iso8859-1/Compose: lt_LN.ISO8859-1
+iso8859-4/Compose: lt_LT.ISO8859-4
+iso8859-13/Compose: lt_LT.ISO8859-13
+iso8859-4/Compose: lv_LV.ISO8859-4
+iso8859-13/Compose: lv_LV.ISO8859-13
+iso8859-13/Compose: mi_NZ.ISO8859-13
+iso8859-5/Compose: mk_MK.ISO8859-5
+XCOMM mk_MK.UTF-8/Compose: mk_MK.UTF-8
+microsoft-cp1251/Compose: mk_MK.CP1251
+iso8859-1/Compose: ms_MY.ISO8859-1
+iso8859-3/Compose: mt_MT.ISO8859-3
+iso8859-1/Compose: nl_BE.ISO8859-1
+iso8859-15/Compose: nl_BE.ISO8859-15
+iso8859-1/Compose: nl_NL.ISO8859-1
+iso8859-15/Compose: nl_NL.ISO8859-15
+iso8859-1/Compose: no_NO.ISO8859-1
+iso8859-15/Compose: no_NO.ISO8859-15
+iso8859-1/Compose: nb_NO.ISO8859-1
+iso8859-15/Compose: nb_NO.ISO8859-15
+iso8859-1/Compose: nn_NO.ISO8859-1
+iso8859-15/Compose: nn_NO.ISO8859-15
+iso8859-1/Compose: nr_ZA.ISO8859-1
+iso8859-15/Compose: nso_ZA.ISO8859-15
+iso8859-1/Compose: ny_NO.ISO8859-1
+iso8859-15/Compose: ny_NO.ISO8859-15
+iso8859-1/Compose: oc_FR.ISO8859-1
+iso8859-15/Compose: oc_FR.ISO8859-15
+iso8859-1/Compose: pd_DE.ISO8859-1
+iso8859-1/Compose: pd_US.ISO8859-1
+iso8859-1/Compose: ph_PH.ISO8859-1
+iso8859-2/Compose: pl_PL.ISO8859-2
+iso8859-1/Compose: pp_AN.ISO8859-1
+iso8859-1/Compose: pt_BR.ISO8859-1
+iso8859-15/Compose: pt_BR.ISO8859-15
+iso8859-1/Compose: pt_PT.ISO8859-1
+iso8859-15/Compose: pt_PT.ISO8859-15
+iso8859-2/Compose: ro_RO.ISO8859-2
+koi8-r/Compose: ru_RU.KOI8-R
+iso8859-5/Compose: ru_RU.ISO8859-5
+microsoft-cp1251/Compose: ru_RU.CP1251
+koi8-u/Compose: ru_UA.KOI8-U
+iso8859-1/Compose: rw_RW.ISO8859-1
+iso8859-2/Compose: sh_YU.ISO8859-2
+iso8859-2/Compose: sk_SK.ISO8859-2
+iso8859-2/Compose: sl_CS.ISO8859-2
+iso8859-2/Compose: sl_SI.ISO8859-2
+iso8859-2/Compose: sq_AL.ISO8859-2
+iso8859-2/Compose: sr_CS.ISO8859-2
+iso8859-5/Compose: sr_CS.ISO8859-5
+iso8859-2/Compose: sr_YU.ISO8859-2
+iso8859-5/Compose: sr_YU.ISO8859-5
+iso8859-1/Compose: ss_ZA.ISO8859-1
+iso8859-1/Compose: st_ZA.ISO8859-1
+iso8859-1/Compose: sv_FI.ISO8859-1
+iso8859-15/Compose: sv_FI.ISO8859-15
+iso8859-1/Compose: sv_SE.ISO8859-1
+iso8859-15/Compose: sv_SE.ISO8859-15
+tscii-0/Compose: ta_IN.TSCII-0
+koi8-c/Compose: tg_TJ.KOI8-C
+iso8859-1/Compose: tl_PH.ISO8859-1
+iso8859-15/Compose: tn_ZA.ISO8859-15
+iso8859-9/Compose: tr_TR.ISO8859-9
+iso8859-1/Compose: ts_ZA.ISO8859-1
+tatar-cyr/Compose: tt_RU.TATAR-CYR
+koi8-c/Compose: tt_RU.KOI8-C
+koi8-u/Compose: uk_UA.KOI8-U
+microsoft-cp1256/Compose: ur_PK.CP1256
+vi_VN.viscii/Compose: vi_VN.VISCII
+vi_VN.tcvn/Compose: vi_VN.TCVN
+iso8859-1/Compose: wa_BE.ISO8859-1
+iso8859-1/Compose: xh_ZA.ISO8859-1
+microsoft-cp1255/Compose: yi_US.CP1256
+zh_CN/Compose: zh_CN.eucCN
+zh_CN/Compose: zh_CN.GB2312
+zh_CN.gbk/Compose: zh_CN.GBK
+zh_CN.gb18030/Compose: zh_CN.GB18030
+zh_HK.big5/Compose: zh_HK.big5
+zh_HK.big5/Compose: zh_HK.Big5
+zh_HK.big5hkscs/Compose: zh_HK.big5hkscs
+zh_HK.big5hkscs/Compose: zh_HK.Big5HKSCS
+zh_TW.big5/Compose: zh_TW.big5
+zh_TW.big5/Compose: zh_TW.Big5
+zh_TW/Compose: zh_TW.eucTW
+iso8859-1/Compose: zu_ZA.ISO8859-1
+XCOMM
+XCOMM
+en_US.UTF-8/Compose: af_ZA.UTF-8
+en_US.UTF-8/Compose: ar_AA.UTF-8
+en_US.UTF-8/Compose: ar_BH.UTF-8
+en_US.UTF-8/Compose: ar_DZ.UTF-8
+en_US.UTF-8/Compose: ar_EG.UTF-8
+en_US.UTF-8/Compose: ar_IN.UTF-8
+en_US.UTF-8/Compose: ar_IQ.UTF-8
+en_US.UTF-8/Compose: ar_JO.UTF-8
+en_US.UTF-8/Compose: ar_KW.UTF-8
+en_US.UTF-8/Compose: ar_LB.UTF-8
+en_US.UTF-8/Compose: ar_LY.UTF-8
+en_US.UTF-8/Compose: ar_MA.UTF-8
+en_US.UTF-8/Compose: ar_OM.UTF-8
+en_US.UTF-8/Compose: ar_QA.UTF-8
+en_US.UTF-8/Compose: ar_SA.UTF-8
+en_US.UTF-8/Compose: ar_TN.UTF-8
+en_US.UTF-8/Compose: ar_YE.UTF-8
+en_US.UTF-8/Compose: bo_IN.UTF-8
+en_US.UTF-8/Compose: bs_BA.UTF-8
+en_US.UTF-8/Compose: az_AZ.UTF-8
+en_US.UTF-8/Compose: a3_AZ.UTF-8
+en_US.UTF-8/Compose: be_BY.UTF-8
+en_US.UTF-8/Compose: bg_BG.UTF-8
+en_US.UTF-8/Compose: bn_IN.UTF-8
+en_US.UTF-8/Compose: br_FR.UTF-8
+en_US.UTF-8/Compose: ca_AD.UTF-8
+en_US.UTF-8/Compose: ca_ES.UTF-8
+en_US.UTF-8/Compose: ca_FR.UTF-8
+en_US.UTF-8/Compose: ca_IT.UTF-8
+en_US.UTF-8/Compose: cs_CZ.UTF-8
+en_US.UTF-8/Compose: cy_GB.UTF-8
+en_US.UTF-8/Compose: cz_CZ.UTF-8
+en_US.UTF-8/Compose: da_DK.UTF-8
+en_US.UTF-8/Compose: de_AT.UTF-8
+en_US.UTF-8/Compose: de_BE.UTF-8
+en_US.UTF-8/Compose: de_CH.UTF-8
+en_US.UTF-8/Compose: de_DE.UTF-8
+en_US.UTF-8/Compose: de_LI.UTF-8
+en_US.UTF-8/Compose: de_LU.UTF-8
+el_GR.UTF-8/Compose: el_CY.UTF-8
+el_GR.UTF-8/Compose: el_GR.UTF-8
+en_US.UTF-8/Compose: en_AU.UTF-8
+en_US.UTF-8/Compose: en_BZ.UTF-8
+en_US.UTF-8/Compose: en_CA.UTF-8
+en_US.UTF-8/Compose: en_GB.UTF-8
+en_US.UTF-8/Compose: en_IE.UTF-8
+en_US.UTF-8/Compose: en_JM.UTF-8
+en_US.UTF-8/Compose: en_MT.UTF-8
+en_US.UTF-8/Compose: en_NZ.UTF-8
+en_US.UTF-8/Compose: en_TT.UTF-8
+en_US.UTF-8/Compose: en_UK.UTF-8
+en_US.UTF-8/Compose: en_US.UTF-8
+en_US.UTF-8/Compose: en_ZA.UTF-8
+en_US.UTF-8/Compose: eo_XX.UTF-8
+en_US.UTF-8/Compose: es_AR.UTF-8
+en_US.UTF-8/Compose: es_BO.UTF-8
+en_US.UTF-8/Compose: es_CL.UTF-8
+en_US.UTF-8/Compose: es_CO.UTF-8
+en_US.UTF-8/Compose: es_CR.UTF-8
+en_US.UTF-8/Compose: es_DO.UTF-8
+en_US.UTF-8/Compose: es_EC.UTF-8
+en_US.UTF-8/Compose: es_ES.UTF-8
+en_US.UTF-8/Compose: es_GT.UTF-8
+en_US.UTF-8/Compose: es_HN.UTF-8
+en_US.UTF-8/Compose: es_MX.UTF-8
+en_US.UTF-8/Compose: es_NI.UTF-8
+en_US.UTF-8/Compose: es_PA.UTF-8
+en_US.UTF-8/Compose: es_PE.UTF-8
+en_US.UTF-8/Compose: es_PR.UTF-8
+en_US.UTF-8/Compose: es_PY.UTF-8
+en_US.UTF-8/Compose: es_SV.UTF-8
+en_US.UTF-8/Compose: es_US.UTF-8
+en_US.UTF-8/Compose: es_UY.UTF-8
+en_US.UTF-8/Compose: es_VE.UTF-8
+en_US.UTF-8/Compose: et_EE.UTF-8
+en_US.UTF-8/Compose: eu_ES.UTF-8
+en_US.UTF-8/Compose: fa_IR.UTF-8
+fi_FI.UTF-8/Compose: fi_FI.UTF-8
+en_US.UTF-8/Compose: fo_FO.UTF-8
+en_US.UTF-8/Compose: fr_BE.UTF-8
+en_US.UTF-8/Compose: fr_CA.UTF-8
+en_US.UTF-8/Compose: fr_CH.UTF-8
+en_US.UTF-8/Compose: fr_FR.UTF-8
+en_US.UTF-8/Compose: fr_LU.UTF-8
+en_US.UTF-8/Compose: ga_IE.UTF-8
+en_US.UTF-8/Compose: gd_GB.UTF-8
+en_US.UTF-8/Compose: gl_ES.UTF-8
+en_US.UTF-8/Compose: gu_IN.UTF-8
+en_US.UTF-8/Compose: gv_GB.UTF-8
+en_US.UTF-8/Compose: he_IL.UTF-8
+en_US.UTF-8/Compose: hi_IN.UTF-8
+en_US.UTF-8/Compose: hne_IN.UTF-8
+en_US.UTF-8/Compose: hr_HR.UTF-8
+en_US.UTF-8/Compose: hu_HU.UTF-8
+en_US.UTF-8/Compose: hy_AM.UTF-8
+en_US.UTF-8/Compose: id_ID.UTF-8
+en_US.UTF-8/Compose: is_IS.UTF-8
+en_US.UTF-8/Compose: it_CH.UTF-8
+en_US.UTF-8/Compose: it_IT.UTF-8
+en_US.UTF-8/Compose: iu_CA.UTF-8
+en_US.UTF-8/Compose: ja_JP.UTF-8
+en_US.UTF-8/Compose: ka_GE.UTF-8
+en_US.UTF-8/Compose: kl_GL.UTF-8
+en_US.UTF-8/Compose: kk_KZ.UTF-8
+en_US.UTF-8/Compose: kn_IN.UTF-8
+en_US.UTF-8/Compose: ko_KR.UTF-8
+en_US.UTF-8/Compose: ks_IN.UTF-8
+en_US.UTF-8/Compose: ks_IN@devanagari.UTF-8
+en_US.UTF-8/Compose: kw_GB.UTF-8
+en_US.UTF-8/Compose: ky_KG.UTF-8
+en_US.UTF-8/Compose: lo_LA.UTF-8
+en_US.UTF-8/Compose: lt_LT.UTF-8
+en_US.UTF-8/Compose: lv_LV.UTF-8
+en_US.UTF-8/Compose: mai_IN.UTF-8
+en_US.UTF-8/Compose: mi_NZ.UTF-8
+en_US.UTF-8/Compose: mk_MK.UTF-8
+en_US.UTF-8/Compose: ml_IN.UTF-8
+en_US.UTF-8/Compose: mr_IN.UTF-8
+en_US.UTF-8/Compose: ms_MY.UTF-8
+en_US.UTF-8/Compose: mt_MT.UTF-8
+en_US.UTF-8/Compose: nl_BE.UTF-8
+en_US.UTF-8/Compose: nl_NL.UTF-8
+en_US.UTF-8/Compose: nn_NO.UTF-8
+en_US.UTF-8/Compose: no_NO.UTF-8
+en_US.UTF-8/Compose: nb_NO.UTF-8
+en_US.UTF-8/Compose: nr_ZA.UTF-8
+en_US.UTF-8/Compose: nso_ZA.UTF-8
+en_US.UTF-8/Compose: ny_NO.UTF-8
+en_US.UTF-8/Compose: oc_FR.UTF-8
+en_US.UTF-8/Compose: or_IN.UTF-8
+en_US.UTF-8/Compose: pa_IN.UTF-8
+en_US.UTF-8/Compose: pa_PK.UTF-8
+en_US.UTF-8/Compose: pd_DE.UTF-8
+en_US.UTF-8/Compose: pd_US.UTF-8
+en_US.UTF-8/Compose: ph_PH.UTF-8
+en_US.UTF-8/Compose: pl_PL.UTF-8
+en_US.UTF-8/Compose: pp_AN.UTF-8
+pt_BR.UTF-8/Compose: pt_BR.UTF-8
+en_US.UTF-8/Compose: pt_PT.UTF-8
+en_US.UTF-8/Compose: ro_RO.UTF-8
+en_US.UTF-8/Compose: ru_RU.UTF-8
+en_US.UTF-8/Compose: ru_UA.UTF-8
+en_US.UTF-8/Compose: rw_RW.UTF-8
+en_US.UTF-8/Compose: sa_IN.UTF-8
+en_US.UTF-8/Compose: sd_IN.UTF-8
+en_US.UTF-8/Compose: sd_IN@devanagari.UTF-8
+en_US.UTF-8/Compose: sh_BA.UTF-8
+en_US.UTF-8/Compose: si_LK.UTF-8
+en_US.UTF-8/Compose: sk_SK.UTF-8
+en_US.UTF-8/Compose: sl_SI.UTF-8
+en_US.UTF-8/Compose: sq_AL.UTF-8
+en_US.UTF-8/Compose: sr_CS.UTF-8
+en_US.UTF-8/Compose: sr_ME.UTF-8
+en_US.UTF-8/Compose: sr_RS.UTF-8
+en_US.UTF-8/Compose: sr_YU.UTF-8
+en_US.UTF-8/Compose: ss_ZA.UTF-8
+en_US.UTF-8/Compose: st_ZA.UTF-8
+en_US.UTF-8/Compose: sv_FI.UTF-8
+en_US.UTF-8/Compose: sv_SE.UTF-8
+en_US.UTF-8/Compose: ta_IN.UTF-8
+en_US.UTF-8/Compose: te_IN.UTF-8
+en_US.UTF-8/Compose: tg_TJ.UTF-8
+en_US.UTF-8/Compose: th_TH.UTF-8
+en_US.UTF-8/Compose: tl_PH.UTF-8
+en_US.UTF-8/Compose: tn_ZA.UTF-8
+en_US.UTF-8/Compose: tr_TR.UTF-8
+en_US.UTF-8/Compose: ts_ZA.UTF-8
+en_US.UTF-8/Compose: tt_RU.UTF-8
+en_US.UTF-8/Compose: uk_UA.UTF-8
+en_US.UTF-8/Compose: ur_PK.UTF-8
+en_US.UTF-8/Compose: uz_UZ.UTF-8
+en_US.UTF-8/Compose: ve_ZA.UTF-8
+en_US.UTF-8/Compose: vi_VN.UTF-8
+en_US.UTF-8/Compose: wa_BE.UTF-8
+en_US.UTF-8/Compose: yi_US.UTF-8
+en_US.UTF-8/Compose: xh_ZA.UTF-8
+en_US.UTF-8/Compose: zh_TW.UTF-8
+en_US.UTF-8/Compose: zu_ZA.UTF-8
+en_US.UTF-8/Compose: bs_BA.UTF-8
+en_US.UTF-8/Compose: ne_NP.UTF-8
+
diff --git a/libX11/nls/el_GR.UTF-8/Compose.pre b/libX11/nls/el_GR.UTF-8/Compose.pre
index ad9033717..6ae478ab4 100644
--- a/libX11/nls/el_GR.UTF-8/Compose.pre
+++ b/libX11/nls/el_GR.UTF-8/Compose.pre
@@ -1,1981 +1,1981 @@
-XCOMM
-XCOMM
-XCOMM UTF-8 compose sequence definitions for the greek keyboard layout.
-XCOMM
-XCOMM This file is mostly meant to be used along with the xkb/symbols/el
-XCOMM symbols definition file. In addition, the dead key definitions in
-XCOMM the machine generated part are really only relevant to the
-XCOMM "polytonic" variant in that file.
-XCOMM
-XCOMM The definitions herein cover the following ISO 10646 / Unicode
-XCOMM ranges:
-XCOMM - Basic Latin (0000-007F) (complete coverage)
-XCOMM - Latin-1 Supplement (0080-00FF) (complete coverage)
-XCOMM - Greek and Coptic (0370-03FF) (only the big ISO 8859-7 based
-XCOMM part at the beginning)
-XCOMM - Greek Extended (1F00-1FFF) (complete coverage)
-XCOMM - There are also six (6) characters from other ranges.
-XCOMM Moreover, the following character sets are completely covered:
-XCOMM - ISO 8859-1
-XCOMM - ISO 8859-7
-XCOMM
-XCOMM This file consists of four parts. Two of them have been adapted from
-XCOMM the iso8859-1/Compose and iso8859-7/Compose files. The other two
-XCOMM parts have been created by:
-XCOMM Vasilis Vasaitis <vvas@hal.csd.auth.gr>
-XCOMM based on the idea and initial implementation by:
-XCOMM Alejandros Diamandidis <adia@egnatia.ee.auth.gr>
-
-XCOMM Part 1
-XCOMM
-XCOMM ISO 8859-1 (Latin-1) multi-key definitions extracted and converted
-XCOMM from the iso8859-1/Compose file.
-
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <exclam> <exclam> : "¡" exclamdown
-<Multi_key> <c> <slash> : "¢" cent
-<Multi_key> <slash> <c> : "¢" cent
-<Multi_key> <C> <slash> : "¢" cent
-<Multi_key> <slash> <C> : "¢" cent
-<Multi_key> <C> <bar> : "¢" cent
-<Multi_key> <bar> <C> : "¢" cent
-<Multi_key> <c> <bar> : "¢" cent
-<Multi_key> <bar> <c> : "¢" cent
-<Multi_key> <l> <minus> : "£" sterling
-<Multi_key> <minus> <l> : "£" sterling
-<Multi_key> <L> <minus> : "£" sterling
-<Multi_key> <minus> <L> : "£" sterling
-<Multi_key> <l> <equal> : "£" sterling
-<Multi_key> <equal> <l> : "£" sterling
-<Multi_key> <L> <equal> : "£" sterling
-<Multi_key> <equal> <L> : "£" sterling
-<Multi_key> <y> <minus> : "Â¥" yen
-<Multi_key> <minus> <y> : "Â¥" yen
-<Multi_key> <Y> <minus> : "Â¥" yen
-<Multi_key> <minus> <Y> : "Â¥" yen
-<Multi_key> <y> <equal> : "Â¥" yen
-<Multi_key> <equal> <y> : "Â¥" yen
-<Multi_key> <Y> <equal> : "Â¥" yen
-<Multi_key> <equal> <Y> : "Â¥" yen
-<Multi_key> <s> <o> : "§" section
-<Multi_key> <o> <s> : "§" section
-<Multi_key> <S> <O> : "§" section
-<Multi_key> <O> <S> : "§" section
-<Multi_key> <S> <exclam> : "§" section
-<Multi_key> <exclam> <S> : "§" section
-<Multi_key> <s> <exclam> : "§" section
-<Multi_key> <exclam> <s> : "§" section
-<Multi_key> <S> <0> : "§" section
-<Multi_key> <0> <S> : "§" section
-<Multi_key> <s> <0> : "§" section
-<Multi_key> <0> <s> : "§" section
-<Multi_key> <x> <o> : "¤" currency
-<Multi_key> <o> <x> : "¤" currency
-<Multi_key> <X> <O> : "¤" currency
-<Multi_key> <O> <X> : "¤" currency
-<Multi_key> <x> <O> : "¤" currency
-<Multi_key> <O> <x> : "¤" currency
-<Multi_key> <X> <o> : "¤" currency
-<Multi_key> <o> <X> : "¤" currency
-<Multi_key> <x> <0> : "¤" currency
-<Multi_key> <0> <x> : "¤" currency
-<Multi_key> <X> <0> : "¤" currency
-<Multi_key> <0> <X> : "¤" currency
-<Multi_key> <c> <o> : "©" copyright
-<Multi_key> <o> <c> : "©" copyright
-<Multi_key> <C> <O> : "©" copyright
-<Multi_key> <O> <C> : "©" copyright
-<Multi_key> <c> <O> : "©" copyright
-<Multi_key> <O> <c> : "©" copyright
-<Multi_key> <C> <o> : "©" copyright
-<Multi_key> <o> <C> : "©" copyright
-<Multi_key> <c> <0> : "©" copyright
-<Multi_key> <0> <c> : "©" copyright
-<Multi_key> <C> <0> : "©" copyright
-<Multi_key> <0> <C> : "©" copyright
-<Multi_key> <parenleft> <c> : "©" copyright
-<Multi_key> <a> <underscore> : "ª" ordfeminine
-<Multi_key> <underscore> <a> : "ª" ordfeminine
-<Multi_key> <A> <underscore> : "ª" ordfeminine
-<Multi_key> <underscore> <A> : "ª" ordfeminine
-<Multi_key> <o> <underscore> : "º" masculine
-<Multi_key> <underscore> <o> : "º" masculine
-<Multi_key> <O> <underscore> : "º" masculine
-<Multi_key> <underscore> <O> : "º" masculine
-<Multi_key> <less> <less> : "«" guillemotleft
-<Multi_key> <greater> <greater> : "»" guillemotright
-<Multi_key> <0> <asciicircum> : "°" degree
-<Multi_key> <asciicircum> <0> : "°" degree
-<Multi_key> <0> <asterisk> : "°" degree
-<Multi_key> <asterisk> <0> : "°" degree
-<Multi_key> <plus> <minus> : "±" plusminus
-<Multi_key> <minus> <plus> : "±" plusminus
-<Multi_key> <slash> <u> : "µ" mu
-<Multi_key> <u> <slash> : "µ" mu
-<Multi_key> <slash> <U> : "µ" mu
-<Multi_key> <U> <slash> : "µ" mu
-<Multi_key> <1> <asciicircum> : "¹" onesuperior
-<Multi_key> <asciicircum> <1> : "¹" onesuperior
-<Multi_key> <S> <1> : "¹" onesuperior
-<Multi_key> <1> <S> : "¹" onesuperior
-<Multi_key> <s> <1> : "¹" onesuperior
-<Multi_key> <1> <s> : "¹" onesuperior
-<Multi_key> <2> <asciicircum> : "²" twosuperior
-<Multi_key> <asciicircum> <2> : "²" twosuperior
-<Multi_key> <S> <2> : "²" twosuperior
-<Multi_key> <2> <S> : "²" twosuperior
-<Multi_key> <s> <2> : "²" twosuperior
-<Multi_key> <2> <s> : "²" twosuperior
-<Multi_key> <3> <asciicircum> : "³" threesuperior
-<Multi_key> <asciicircum> <3> : "³" threesuperior
-<Multi_key> <S> <3> : "³" threesuperior
-<Multi_key> <3> <S> : "³" threesuperior
-<Multi_key> <s> <3> : "³" threesuperior
-<Multi_key> <3> <s> : "³" threesuperior
-<Multi_key> <p> <exclam> : "¶" paragraph
-<Multi_key> <exclam> <p> : "¶" paragraph
-<Multi_key> <P> <exclam> : "¶" paragraph
-<Multi_key> <exclam> <P> : "¶" paragraph
-<Multi_key> <period> <asciicircum> : "·" periodcentered
-<Multi_key> <asciicircum> <period> : "·" periodcentered
-<Multi_key> <period> <minus> : "·" periodcentered
-<Multi_key> <period> <equal> : "•" enfilledcircbullet
-<Multi_key> <period> <period> : "…" ellipsis
-<Multi_key> <1> <4> : "¼" onequarter
-<Multi_key> <1> <2> : "½" onehalf
-<Multi_key> <3> <4> : "¾" threequarters
-<Multi_key> <question> <question> : "¿" questiondown
-<Multi_key> <space> <space> : " " nobreakspace
-<Multi_key> <bar> <bar> : "¦" brokenbar
-<Multi_key> <exclam> <asciicircum> : "¦" brokenbar
-<Multi_key> <asciicircum> <exclam> : "¦" brokenbar
-<Multi_key> <V> <B> : "¦" brokenbar
-<Multi_key> <B> <V> : "¦" brokenbar
-<Multi_key> <v> <b> : "¦" brokenbar
-<Multi_key> <b> <v> : "¦" brokenbar
-<Multi_key> <minus> <comma> : "¬" notsign
-<Multi_key> <comma> <minus> : "¬" notsign
-<Multi_key> <minus> <minus> : "­" hyphen
-<Multi_key> <R> <O> : "®" registered
-<Multi_key> <O> <R> : "®" registered
-<Multi_key> <parenleft> <r> : "®" registered
-<Multi_key> <minus> <asciicircum> : "¯" macron
-<Multi_key> <asciicircum> <minus> : "¯" macron
-<Multi_key> <underscore> <asciicircum> : "¯" macron
-<Multi_key> <asciicircum> <underscore> : "¯" macron
-<Multi_key> <underscore> <underscore> : "¯" macron
-<Multi_key> <minus> <colon> : "÷" division
-<Multi_key> <colon> <minus> : "÷" division
-<Multi_key> <x> <x> : "×" multiply
-<Multi_key> <apostrophe> <apostrophe> : "´" acute
-<Multi_key> <comma> <comma> : "¸" cedilla
-<Multi_key> <quotedbl> <quotedbl> : "¨" diaeresis
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "À" Agrave
-<Multi_key> <grave> <A> : "À" Agrave
-<Multi_key> <A> <acute> : "Ã" Aacute
-<Multi_key> <acute> <A> : "Ã" Aacute
-<Multi_key> <A> <apostrophe> : "Ã" Aacute
-<Multi_key> <apostrophe> <A> : "Ã" Aacute
-<Multi_key> <A> <asciicircum> : "Â" Acircumflex
-<Multi_key> <asciicircum> <A> : "Â" Acircumflex
-<Multi_key> <A> <greater> : "Â" Acircumflex
-<Multi_key> <greater> <A> : "Â" Acircumflex
-<Multi_key> <A> <asciitilde> : "Ã" Atilde
-<Multi_key> <asciitilde> <A> : "Ã" Atilde
-<Multi_key> <A> <minus> : "Ã" Atilde
-<Multi_key> <minus> <A> : "Ã" Atilde
-<Multi_key> <A> <quotedbl> : "Ä" Adiaeresis
-<Multi_key> <quotedbl> <A> : "Ä" Adiaeresis
-<Multi_key> <A> <diaeresis> : "Ä" Adiaeresis
-<Multi_key> <diaeresis> <A> : "Ä" Adiaeresis
-<Multi_key> <A> <asterisk> : "Ã…" Aring
-<Multi_key> <asterisk> <A> : "Ã…" Aring
-<Multi_key> <A> <A> : "Ã…" Aring
-<Multi_key> <A> <O> : "Ã…" Aring
-<Multi_key> <A> <E> : "Æ" AE
-<Multi_key> <a> <grave> : "à" agrave
-<Multi_key> <grave> <a> : "à" agrave
-<Multi_key> <a> <acute> : "á" aacute
-<Multi_key> <acute> <a> : "á" aacute
-<Multi_key> <a> <apostrophe> : "á" aacute
-<Multi_key> <apostrophe> <a> : "á" aacute
-<Multi_key> <a> <asciicircum> : "â" acircumflex
-<Multi_key> <asciicircum> <a> : "â" acircumflex
-<Multi_key> <a> <greater> : "â" acircumflex
-<Multi_key> <greater> <a> : "â" acircumflex
-<Multi_key> <a> <asciitilde> : "ã" atilde
-<Multi_key> <asciitilde> <a> : "ã" atilde
-<Multi_key> <a> <minus> : "ã" atilde
-<Multi_key> <minus> <a> : "ã" atilde
-<Multi_key> <a> <quotedbl> : "ä" adiaeresis
-<Multi_key> <quotedbl> <a> : "ä" adiaeresis
-<Multi_key> <a> <diaeresis> : "ä" adiaeresis
-<Multi_key> <diaeresis> <a> : "ä" adiaeresis
-<Multi_key> <a> <asterisk> : "Ã¥" aring
-<Multi_key> <asterisk> <a> : "Ã¥" aring
-<Multi_key> <a> <a> : "Ã¥" aring
-<Multi_key> <a> <o> : "Ã¥" aring
-<Multi_key> <a> <e> : "æ" ae
-<Multi_key> <acute> <C> : "Ç" Ccedilla
-<Multi_key> <acute> <c> : "ç" ccedilla
-<Multi_key> <C> <comma> : "Ç" Ccedilla
-<Multi_key> <C> <cedilla> : "Ç" Ccedilla
-<Multi_key> <comma> <C> : "Ç" Ccedilla
-<Multi_key> <cedilla> <C> : "Ç" Ccedilla
-<Multi_key> <c> <comma> : "ç" ccedilla
-<Multi_key> <c> <cedilla> : "ç" ccedilla
-<Multi_key> <comma> <c> : "ç" ccedilla
-<Multi_key> <cedilla> <c> : "ç" ccedilla
-<Multi_key> <minus> <D> : "Ã" ETH
-<Multi_key> <D> <minus> : "Ã" ETH
-<Multi_key> <minus> <d> : "ð" eth
-<Multi_key> <d> <minus> : "ð" eth
-<Multi_key> <E> <grave> : "È" Egrave
-<Multi_key> <grave> <E> : "È" Egrave
-<Multi_key> <E> <acute> : "É" Eacute
-<Multi_key> <acute> <E> : "É" Eacute
-<Multi_key> <E> <apostrophe> : "É" Eacute
-<Multi_key> <apostrophe> <E> : "É" Eacute
-<Multi_key> <E> <asciicircum> : "Ê" Ecircumflex
-<Multi_key> <asciicircum> <E> : "Ê" Ecircumflex
-<Multi_key> <E> <greater> : "Ê" Ecircumflex
-<Multi_key> <greater> <E> : "Ê" Ecircumflex
-<Multi_key> <E> <quotedbl> : "Ë" Ediaeresis
-<Multi_key> <quotedbl> <E> : "Ë" Ediaeresis
-<Multi_key> <E> <diaeresis> : "Ë" Ediaeresis
-<Multi_key> <diaeresis> <E> : "Ë" Ediaeresis
-<Multi_key> <e> <grave> : "è" egrave
-<Multi_key> <grave> <e> : "è" egrave
-<Multi_key> <e> <acute> : "é" eacute
-<Multi_key> <acute> <e> : "é" eacute
-<Multi_key> <e> <apostrophe> : "é" eacute
-<Multi_key> <apostrophe> <e> : "é" eacute
-<Multi_key> <e> <asciicircum> : "ê" ecircumflex
-<Multi_key> <asciicircum> <e> : "ê" ecircumflex
-<Multi_key> <e> <greater> : "ê" ecircumflex
-<Multi_key> <greater> <e> : "ê" ecircumflex
-<Multi_key> <e> <quotedbl> : "ë" ediaeresis
-<Multi_key> <quotedbl> <e> : "ë" ediaeresis
-<Multi_key> <e> <diaeresis> : "ë" ediaeresis
-<Multi_key> <diaeresis> <e> : "ë" ediaeresis
-<Multi_key> <I> <grave> : "Ì" Igrave
-<Multi_key> <grave> <I> : "Ì" Igrave
-<Multi_key> <I> <acute> : "Ã" Iacute
-<Multi_key> <acute> <I> : "Ã" Iacute
-<Multi_key> <I> <apostrophe> : "Ã" Iacute
-<Multi_key> <apostrophe> <I> : "Ã" Iacute
-<Multi_key> <I> <asciicircum> : "ÃŽ" Icircumflex
-<Multi_key> <asciicircum> <I> : "ÃŽ" Icircumflex
-<Multi_key> <I> <greater> : "ÃŽ" Icircumflex
-<Multi_key> <greater> <I> : "ÃŽ" Icircumflex
-<Multi_key> <I> <quotedbl> : "Ã" Idiaeresis
-<Multi_key> <quotedbl> <I> : "Ã" Idiaeresis
-<Multi_key> <I> <diaeresis> : "Ã" Idiaeresis
-<Multi_key> <diaeresis> <I> : "Ã" Idiaeresis
-<Multi_key> <i> <grave> : "ì" igrave
-<Multi_key> <grave> <i> : "ì" igrave
-<Multi_key> <i> <acute> : "í" iacute
-<Multi_key> <acute> <i> : "í" iacute
-<Multi_key> <i> <apostrophe> : "í" iacute
-<Multi_key> <apostrophe> <i> : "í" iacute
-<Multi_key> <i> <asciicircum> : "î" icircumflex
-<Multi_key> <asciicircum> <i> : "î" icircumflex
-<Multi_key> <i> <greater> : "î" icircumflex
-<Multi_key> <greater> <i> : "î" icircumflex
-<Multi_key> <i> <quotedbl> : "ï" idiaeresis
-<Multi_key> <quotedbl> <i> : "ï" idiaeresis
-<Multi_key> <i> <diaeresis> : "ï" idiaeresis
-<Multi_key> <diaeresis> <i> : "ï" idiaeresis
-<Multi_key> <N> <asciitilde> : "Ñ" Ntilde
-<Multi_key> <asciitilde> <N> : "Ñ" Ntilde
-<Multi_key> <N> <minus> : "Ñ" Ntilde
-<Multi_key> <minus> <N> : "Ñ" Ntilde
-<Multi_key> <n> <asciitilde> : "ñ" ntilde
-<Multi_key> <asciitilde> <n> : "ñ" ntilde
-<Multi_key> <n> <minus> : "ñ" ntilde
-<Multi_key> <minus> <n> : "ñ" ntilde
-<Multi_key> <O> <grave> : "Ã’" Ograve
-<Multi_key> <grave> <O> : "Ã’" Ograve
-<Multi_key> <O> <acute> : "Ó" Oacute
-<Multi_key> <acute> <O> : "Ó" Oacute
-<Multi_key> <O> <apostrophe> : "Ó" Oacute
-<Multi_key> <apostrophe> <O> : "Ó" Oacute
-<Multi_key> <O> <asciicircum> : "Ô" Ocircumflex
-<Multi_key> <asciicircum> <O> : "Ô" Ocircumflex
-<Multi_key> <O> <greater> : "Ô" Ocircumflex
-<Multi_key> <greater> <O> : "Ô" Ocircumflex
-<Multi_key> <O> <asciitilde> : "Õ" Otilde
-<Multi_key> <asciitilde> <O> : "Õ" Otilde
-<Multi_key> <O> <minus> : "Õ" Otilde
-<Multi_key> <minus> <O> : "Õ" Otilde
-<Multi_key> <O> <quotedbl> : "Ö" Odiaeresis
-<Multi_key> <quotedbl> <O> : "Ö" Odiaeresis
-<Multi_key> <O> <diaeresis> : "Ö" Odiaeresis
-<Multi_key> <diaeresis> <O> : "Ö" Odiaeresis
-<Multi_key> <O> <slash> : "Ø" Ooblique
-<Multi_key> <slash> <O> : "Ø" Ooblique
-<Multi_key> <o> <grave> : "ò" ograve
-<Multi_key> <grave> <o> : "ò" ograve
-<Multi_key> <o> <acute> : "ó" oacute
-<Multi_key> <acute> <o> : "ó" oacute
-<Multi_key> <o> <apostrophe> : "ó" oacute
-<Multi_key> <apostrophe> <o> : "ó" oacute
-<Multi_key> <o> <asciicircum> : "ô" ocircumflex
-<Multi_key> <asciicircum> <o> : "ô" ocircumflex
-<Multi_key> <o> <greater> : "ô" ocircumflex
-<Multi_key> <greater> <o> : "ô" ocircumflex
-<Multi_key> <o> <asciitilde> : "õ" otilde
-<Multi_key> <asciitilde> <o> : "õ" otilde
-<Multi_key> <o> <minus> : "õ" otilde
-<Multi_key> <minus> <o> : "õ" otilde
-<Multi_key> <o> <quotedbl> : "ö" odiaeresis
-<Multi_key> <quotedbl> <o> : "ö" odiaeresis
-<Multi_key> <o> <diaeresis> : "ö" odiaeresis
-<Multi_key> <diaeresis> <o> : "ö" odiaeresis
-<Multi_key> <o> <slash> : "ø" oslash
-<Multi_key> <slash> <o> : "ø" oslash
-<Multi_key> <U> <grave> : "Ù" Ugrave
-<Multi_key> <grave> <U> : "Ù" Ugrave
-<Multi_key> <U> <acute> : "Ú" Uacute
-<Multi_key> <acute> <U> : "Ú" Uacute
-<Multi_key> <U> <apostrophe> : "Ú" Uacute
-<Multi_key> <apostrophe> <U> : "Ú" Uacute
-<Multi_key> <U> <asciicircum> : "Û" Ucircumflex
-<Multi_key> <asciicircum> <U> : "Û" Ucircumflex
-<Multi_key> <U> <greater> : "Û" Ucircumflex
-<Multi_key> <greater> <U> : "Û" Ucircumflex
-<Multi_key> <U> <quotedbl> : "Ü" Udiaeresis
-<Multi_key> <quotedbl> <U> : "Ü" Udiaeresis
-<Multi_key> <U> <diaeresis> : "Ü" Udiaeresis
-<Multi_key> <diaeresis> <U> : "Ü" Udiaeresis
-<Multi_key> <u> <grave> : "ù" ugrave
-<Multi_key> <grave> <u> : "ù" ugrave
-<Multi_key> <u> <acute> : "ú" uacute
-<Multi_key> <acute> <u> : "ú" uacute
-<Multi_key> <u> <apostrophe> : "ú" uacute
-<Multi_key> <apostrophe> <u> : "ú" uacute
-<Multi_key> <u> <asciicircum> : "û" ucircumflex
-<Multi_key> <asciicircum> <u> : "û" ucircumflex
-<Multi_key> <u> <greater> : "û" ucircumflex
-<Multi_key> <greater> <u> : "û" ucircumflex
-<Multi_key> <u> <quotedbl> : "ü" udiaeresis
-<Multi_key> <quotedbl> <u> : "ü" udiaeresis
-<Multi_key> <u> <diaeresis> : "ü" udiaeresis
-<Multi_key> <diaeresis> <u> : "ü" udiaeresis
-<Multi_key> <s> <s> : "ß" ssharp
-<Multi_key> <T> <H> : "Þ" THORN
-<Multi_key> <t> <h> : "þ" thorn
-<Multi_key> <Y> <acute> : "Ã" Yacute
-<Multi_key> <acute> <Y> : "Ã" Yacute
-<Multi_key> <Y> <apostrophe> : "Ã" Yacute
-<Multi_key> <apostrophe> <Y> : "Ã" Yacute
-<Multi_key> <y> <acute> : "ý" yacute
-<Multi_key> <acute> <y> : "ý" yacute
-<Multi_key> <y> <apostrophe> : "ý" yacute
-<Multi_key> <apostrophe> <y> : "ý" yacute
-<Multi_key> <y> <quotedbl> : "ÿ" ydiaeresis
-<Multi_key> <quotedbl> <y> : "ÿ" ydiaeresis
-<Multi_key> <y> <diaeresis> : "ÿ" ydiaeresis
-<Multi_key> <diaeresis> <y> : "ÿ" ydiaeresis
-
-XCOMM Part 2
-XCOMM
-XCOMM Greek Extended multi-key and dead key definitions. These have been
-XCOMM machine-generated by a perl script, found at:
-XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl
-
-<Multi_key> <greater> <Greek_alpha> : "á¼€" U1f00
-<dead_horn> <Greek_alpha> : "á¼€" U1f00
-<dead_psili> <Greek_alpha> : "á¼€" U1f00
-<Multi_key> <less> <Greek_alpha> : "á¼" U1f01
-<dead_ogonek> <Greek_alpha> : "á¼" U1f01
-<dead_dasia> <Greek_alpha> : "á¼" U1f01
-<Multi_key> <greater> <grave> <Greek_alpha> : "ἂ" U1f02
-<Multi_key> <grave> <greater> <Greek_alpha> : "ἂ" U1f02
-<dead_horn> <dead_grave> <Greek_alpha> : "ἂ" U1f02
-<dead_psili> <dead_grave> <Greek_alpha> : "ἂ" U1f02
-<dead_grave> <dead_horn> <Greek_alpha> : "ἂ" U1f02
-<dead_grave> <dead_psili> <Greek_alpha> : "ἂ" U1f02
-<Multi_key> <less> <grave> <Greek_alpha> : "ἃ" U1f03
-<Multi_key> <grave> <less> <Greek_alpha> : "ἃ" U1f03
-<dead_ogonek> <dead_grave> <Greek_alpha> : "ἃ" U1f03
-<dead_dasia> <dead_grave> <Greek_alpha> : "ἃ" U1f03
-<dead_grave> <dead_ogonek> <Greek_alpha> : "ἃ" U1f03
-<dead_grave> <dead_dasia> <Greek_alpha> : "ἃ" U1f03
-<Multi_key> <greater> <apostrophe> <Greek_alpha> : "ἄ" U1f04
-<Multi_key> <apostrophe> <greater> <Greek_alpha> : "ἄ" U1f04
-<dead_horn> <dead_acute> <Greek_alpha> : "ἄ" U1f04
-<dead_psili> <dead_acute> <Greek_alpha> : "ἄ" U1f04
-<dead_acute> <dead_horn> <Greek_alpha> : "ἄ" U1f04
-<dead_acute> <dead_psili> <Greek_alpha> : "ἄ" U1f04
-<Multi_key> <less> <apostrophe> <Greek_alpha> : "á¼…" U1f05
-<Multi_key> <apostrophe> <less> <Greek_alpha> : "á¼…" U1f05
-<dead_ogonek> <dead_acute> <Greek_alpha> : "á¼…" U1f05
-<dead_dasia> <dead_acute> <Greek_alpha> : "á¼…" U1f05
-<dead_acute> <dead_ogonek> <Greek_alpha> : "á¼…" U1f05
-<dead_acute> <dead_dasia> <Greek_alpha> : "á¼…" U1f05
-<Multi_key> <greater> <asciitilde> <Greek_alpha> : "ἆ" U1f06
-<Multi_key> <asciitilde> <greater> <Greek_alpha> : "ἆ" U1f06
-<dead_horn> <dead_tilde> <Greek_alpha> : "ἆ" U1f06
-<dead_psili> <dead_tilde> <Greek_alpha> : "ἆ" U1f06
-<dead_tilde> <dead_horn> <Greek_alpha> : "ἆ" U1f06
-<dead_tilde> <dead_psili> <Greek_alpha> : "ἆ" U1f06
-<Multi_key> <less> <asciitilde> <Greek_alpha> : "ἇ" U1f07
-<Multi_key> <asciitilde> <less> <Greek_alpha> : "ἇ" U1f07
-<dead_ogonek> <dead_tilde> <Greek_alpha> : "ἇ" U1f07
-<dead_dasia> <dead_tilde> <Greek_alpha> : "ἇ" U1f07
-<dead_tilde> <dead_ogonek> <Greek_alpha> : "ἇ" U1f07
-<dead_tilde> <dead_dasia> <Greek_alpha> : "ἇ" U1f07
-<Multi_key> <greater> <Greek_ALPHA> : "Ἀ" U1f08
-<dead_horn> <Greek_ALPHA> : "Ἀ" U1f08
-<dead_psili> <Greek_ALPHA> : "Ἀ" U1f08
-<Multi_key> <less> <Greek_ALPHA> : "Ἁ" U1f09
-<dead_ogonek> <Greek_ALPHA> : "Ἁ" U1f09
-<dead_dasia> <Greek_ALPHA> : "Ἁ" U1f09
-<Multi_key> <greater> <grave> <Greek_ALPHA> : "Ἂ" U1f0a
-<Multi_key> <grave> <greater> <Greek_ALPHA> : "Ἂ" U1f0a
-<dead_horn> <dead_grave> <Greek_ALPHA> : "Ἂ" U1f0a
-<dead_psili> <dead_grave> <Greek_ALPHA> : "Ἂ" U1f0a
-<dead_grave> <dead_horn> <Greek_ALPHA> : "Ἂ" U1f0a
-<dead_grave> <dead_psili> <Greek_ALPHA> : "Ἂ" U1f0a
-<Multi_key> <less> <grave> <Greek_ALPHA> : "Ἃ" U1f0b
-<Multi_key> <grave> <less> <Greek_ALPHA> : "Ἃ" U1f0b
-<dead_ogonek> <dead_grave> <Greek_ALPHA> : "Ἃ" U1f0b
-<dead_dasia> <dead_grave> <Greek_ALPHA> : "Ἃ" U1f0b
-<dead_grave> <dead_ogonek> <Greek_ALPHA> : "Ἃ" U1f0b
-<dead_grave> <dead_dasia> <Greek_ALPHA> : "Ἃ" U1f0b
-<Multi_key> <greater> <apostrophe> <Greek_ALPHA> : "Ἄ" U1f0c
-<Multi_key> <apostrophe> <greater> <Greek_ALPHA> : "Ἄ" U1f0c
-<dead_horn> <dead_acute> <Greek_ALPHA> : "Ἄ" U1f0c
-<dead_psili> <dead_acute> <Greek_ALPHA> : "Ἄ" U1f0c
-<dead_acute> <dead_horn> <Greek_ALPHA> : "Ἄ" U1f0c
-<dead_acute> <dead_psili> <Greek_ALPHA> : "Ἄ" U1f0c
-<Multi_key> <less> <apostrophe> <Greek_ALPHA> : "á¼" U1f0d
-<Multi_key> <apostrophe> <less> <Greek_ALPHA> : "á¼" U1f0d
-<dead_ogonek> <dead_acute> <Greek_ALPHA> : "á¼" U1f0d
-<dead_dasia> <dead_acute> <Greek_ALPHA> : "á¼" U1f0d
-<dead_acute> <dead_ogonek> <Greek_ALPHA> : "á¼" U1f0d
-<dead_acute> <dead_dasia> <Greek_ALPHA> : "á¼" U1f0d
-<Multi_key> <greater> <asciitilde> <Greek_ALPHA> : "Ἆ" U1f0e
-<Multi_key> <asciitilde> <greater> <Greek_ALPHA> : "Ἆ" U1f0e
-<dead_horn> <dead_tilde> <Greek_ALPHA> : "Ἆ" U1f0e
-<dead_psili> <dead_tilde> <Greek_ALPHA> : "Ἆ" U1f0e
-<dead_tilde> <dead_horn> <Greek_ALPHA> : "Ἆ" U1f0e
-<dead_tilde> <dead_psili> <Greek_ALPHA> : "Ἆ" U1f0e
-<Multi_key> <less> <asciitilde> <Greek_ALPHA> : "á¼" U1f0f
-<Multi_key> <asciitilde> <less> <Greek_ALPHA> : "á¼" U1f0f
-<dead_ogonek> <dead_tilde> <Greek_ALPHA> : "á¼" U1f0f
-<dead_dasia> <dead_tilde> <Greek_ALPHA> : "á¼" U1f0f
-<dead_tilde> <dead_ogonek> <Greek_ALPHA> : "á¼" U1f0f
-<dead_tilde> <dead_dasia> <Greek_ALPHA> : "á¼" U1f0f
-<Multi_key> <greater> <Greek_epsilon> : "á¼" U1f10
-<dead_horn> <Greek_epsilon> : "á¼" U1f10
-<dead_psili> <Greek_epsilon> : "á¼" U1f10
-<Multi_key> <less> <Greek_epsilon> : "ἑ" U1f11
-<dead_ogonek> <Greek_epsilon> : "ἑ" U1f11
-<dead_dasia> <Greek_epsilon> : "ἑ" U1f11
-<Multi_key> <greater> <grave> <Greek_epsilon> : "á¼’" U1f12
-<Multi_key> <grave> <greater> <Greek_epsilon> : "á¼’" U1f12
-<dead_horn> <dead_grave> <Greek_epsilon> : "á¼’" U1f12
-<dead_psili> <dead_grave> <Greek_epsilon> : "á¼’" U1f12
-<dead_grave> <dead_horn> <Greek_epsilon> : "á¼’" U1f12
-<dead_grave> <dead_psili> <Greek_epsilon> : "á¼’" U1f12
-<Multi_key> <less> <grave> <Greek_epsilon> : "ἓ" U1f13
-<Multi_key> <grave> <less> <Greek_epsilon> : "ἓ" U1f13
-<dead_ogonek> <dead_grave> <Greek_epsilon> : "ἓ" U1f13
-<dead_dasia> <dead_grave> <Greek_epsilon> : "ἓ" U1f13
-<dead_grave> <dead_ogonek> <Greek_epsilon> : "ἓ" U1f13
-<dead_grave> <dead_dasia> <Greek_epsilon> : "ἓ" U1f13
-<Multi_key> <greater> <apostrophe> <Greek_epsilon> : "á¼”" U1f14
-<Multi_key> <apostrophe> <greater> <Greek_epsilon> : "á¼”" U1f14
-<dead_horn> <dead_acute> <Greek_epsilon> : "á¼”" U1f14
-<dead_psili> <dead_acute> <Greek_epsilon> : "á¼”" U1f14
-<dead_acute> <dead_horn> <Greek_epsilon> : "á¼”" U1f14
-<dead_acute> <dead_psili> <Greek_epsilon> : "á¼”" U1f14
-<Multi_key> <less> <apostrophe> <Greek_epsilon> : "ἕ" U1f15
-<Multi_key> <apostrophe> <less> <Greek_epsilon> : "ἕ" U1f15
-<dead_ogonek> <dead_acute> <Greek_epsilon> : "ἕ" U1f15
-<dead_dasia> <dead_acute> <Greek_epsilon> : "ἕ" U1f15
-<dead_acute> <dead_ogonek> <Greek_epsilon> : "ἕ" U1f15
-<dead_acute> <dead_dasia> <Greek_epsilon> : "ἕ" U1f15
-<Multi_key> <greater> <Greek_EPSILON> : "Ἐ" U1f18
-<dead_horn> <Greek_EPSILON> : "Ἐ" U1f18
-<dead_psili> <Greek_EPSILON> : "Ἐ" U1f18
-<Multi_key> <less> <Greek_EPSILON> : "á¼™" U1f19
-<dead_ogonek> <Greek_EPSILON> : "á¼™" U1f19
-<dead_dasia> <Greek_EPSILON> : "á¼™" U1f19
-<Multi_key> <greater> <grave> <Greek_EPSILON> : "Ἒ" U1f1a
-<Multi_key> <grave> <greater> <Greek_EPSILON> : "Ἒ" U1f1a
-<dead_horn> <dead_grave> <Greek_EPSILON> : "Ἒ" U1f1a
-<dead_psili> <dead_grave> <Greek_EPSILON> : "Ἒ" U1f1a
-<dead_grave> <dead_horn> <Greek_EPSILON> : "Ἒ" U1f1a
-<dead_grave> <dead_psili> <Greek_EPSILON> : "Ἒ" U1f1a
-<Multi_key> <less> <grave> <Greek_EPSILON> : "á¼›" U1f1b
-<Multi_key> <grave> <less> <Greek_EPSILON> : "á¼›" U1f1b
-<dead_ogonek> <dead_grave> <Greek_EPSILON> : "á¼›" U1f1b
-<dead_dasia> <dead_grave> <Greek_EPSILON> : "á¼›" U1f1b
-<dead_grave> <dead_ogonek> <Greek_EPSILON> : "á¼›" U1f1b
-<dead_grave> <dead_dasia> <Greek_EPSILON> : "á¼›" U1f1b
-<Multi_key> <greater> <apostrophe> <Greek_EPSILON> : "Ἔ" U1f1c
-<Multi_key> <apostrophe> <greater> <Greek_EPSILON> : "Ἔ" U1f1c
-<dead_horn> <dead_acute> <Greek_EPSILON> : "Ἔ" U1f1c
-<dead_psili> <dead_acute> <Greek_EPSILON> : "Ἔ" U1f1c
-<dead_acute> <dead_horn> <Greek_EPSILON> : "Ἔ" U1f1c
-<dead_acute> <dead_psili> <Greek_EPSILON> : "Ἔ" U1f1c
-<Multi_key> <less> <apostrophe> <Greek_EPSILON> : "á¼" U1f1d
-<Multi_key> <apostrophe> <less> <Greek_EPSILON> : "á¼" U1f1d
-<dead_ogonek> <dead_acute> <Greek_EPSILON> : "á¼" U1f1d
-<dead_dasia> <dead_acute> <Greek_EPSILON> : "á¼" U1f1d
-<dead_acute> <dead_ogonek> <Greek_EPSILON> : "á¼" U1f1d
-<dead_acute> <dead_dasia> <Greek_EPSILON> : "á¼" U1f1d
-<Multi_key> <greater> <Greek_eta> : "á¼ " U1f20
-<dead_horn> <Greek_eta> : "á¼ " U1f20
-<dead_psili> <Greek_eta> : "á¼ " U1f20
-<Multi_key> <less> <Greek_eta> : "ἡ" U1f21
-<dead_ogonek> <Greek_eta> : "ἡ" U1f21
-<dead_dasia> <Greek_eta> : "ἡ" U1f21
-<Multi_key> <greater> <grave> <Greek_eta> : "á¼¢" U1f22
-<Multi_key> <grave> <greater> <Greek_eta> : "á¼¢" U1f22
-<dead_horn> <dead_grave> <Greek_eta> : "á¼¢" U1f22
-<dead_psili> <dead_grave> <Greek_eta> : "á¼¢" U1f22
-<dead_grave> <dead_horn> <Greek_eta> : "á¼¢" U1f22
-<dead_grave> <dead_psili> <Greek_eta> : "á¼¢" U1f22
-<Multi_key> <less> <grave> <Greek_eta> : "á¼£" U1f23
-<Multi_key> <grave> <less> <Greek_eta> : "á¼£" U1f23
-<dead_ogonek> <dead_grave> <Greek_eta> : "á¼£" U1f23
-<dead_dasia> <dead_grave> <Greek_eta> : "á¼£" U1f23
-<dead_grave> <dead_ogonek> <Greek_eta> : "á¼£" U1f23
-<dead_grave> <dead_dasia> <Greek_eta> : "á¼£" U1f23
-<Multi_key> <greater> <apostrophe> <Greek_eta> : "ἤ" U1f24
-<Multi_key> <apostrophe> <greater> <Greek_eta> : "ἤ" U1f24
-<dead_horn> <dead_acute> <Greek_eta> : "ἤ" U1f24
-<dead_psili> <dead_acute> <Greek_eta> : "ἤ" U1f24
-<dead_acute> <dead_horn> <Greek_eta> : "ἤ" U1f24
-<dead_acute> <dead_psili> <Greek_eta> : "ἤ" U1f24
-<Multi_key> <less> <apostrophe> <Greek_eta> : "á¼¥" U1f25
-<Multi_key> <apostrophe> <less> <Greek_eta> : "á¼¥" U1f25
-<dead_ogonek> <dead_acute> <Greek_eta> : "á¼¥" U1f25
-<dead_dasia> <dead_acute> <Greek_eta> : "á¼¥" U1f25
-<dead_acute> <dead_ogonek> <Greek_eta> : "á¼¥" U1f25
-<dead_acute> <dead_dasia> <Greek_eta> : "á¼¥" U1f25
-<Multi_key> <greater> <asciitilde> <Greek_eta> : "ἦ" U1f26
-<Multi_key> <asciitilde> <greater> <Greek_eta> : "ἦ" U1f26
-<dead_horn> <dead_tilde> <Greek_eta> : "ἦ" U1f26
-<dead_psili> <dead_tilde> <Greek_eta> : "ἦ" U1f26
-<dead_tilde> <dead_horn> <Greek_eta> : "ἦ" U1f26
-<dead_tilde> <dead_psili> <Greek_eta> : "ἦ" U1f26
-<Multi_key> <less> <asciitilde> <Greek_eta> : "ἧ" U1f27
-<Multi_key> <asciitilde> <less> <Greek_eta> : "ἧ" U1f27
-<dead_ogonek> <dead_tilde> <Greek_eta> : "ἧ" U1f27
-<dead_dasia> <dead_tilde> <Greek_eta> : "ἧ" U1f27
-<dead_tilde> <dead_ogonek> <Greek_eta> : "ἧ" U1f27
-<dead_tilde> <dead_dasia> <Greek_eta> : "ἧ" U1f27
-<Multi_key> <greater> <Greek_ETA> : "Ἠ" U1f28
-<dead_horn> <Greek_ETA> : "Ἠ" U1f28
-<dead_psili> <Greek_ETA> : "Ἠ" U1f28
-<Multi_key> <less> <Greek_ETA> : "Ἡ" U1f29
-<dead_ogonek> <Greek_ETA> : "Ἡ" U1f29
-<dead_dasia> <Greek_ETA> : "Ἡ" U1f29
-<Multi_key> <greater> <grave> <Greek_ETA> : "Ἢ" U1f2a
-<Multi_key> <grave> <greater> <Greek_ETA> : "Ἢ" U1f2a
-<dead_horn> <dead_grave> <Greek_ETA> : "Ἢ" U1f2a
-<dead_psili> <dead_grave> <Greek_ETA> : "Ἢ" U1f2a
-<dead_grave> <dead_horn> <Greek_ETA> : "Ἢ" U1f2a
-<dead_grave> <dead_psili> <Greek_ETA> : "Ἢ" U1f2a
-<Multi_key> <less> <grave> <Greek_ETA> : "Ἣ" U1f2b
-<Multi_key> <grave> <less> <Greek_ETA> : "Ἣ" U1f2b
-<dead_ogonek> <dead_grave> <Greek_ETA> : "Ἣ" U1f2b
-<dead_dasia> <dead_grave> <Greek_ETA> : "Ἣ" U1f2b
-<dead_grave> <dead_ogonek> <Greek_ETA> : "Ἣ" U1f2b
-<dead_grave> <dead_dasia> <Greek_ETA> : "Ἣ" U1f2b
-<Multi_key> <greater> <apostrophe> <Greek_ETA> : "Ἤ" U1f2c
-<Multi_key> <apostrophe> <greater> <Greek_ETA> : "Ἤ" U1f2c
-<dead_horn> <dead_acute> <Greek_ETA> : "Ἤ" U1f2c
-<dead_psili> <dead_acute> <Greek_ETA> : "Ἤ" U1f2c
-<dead_acute> <dead_horn> <Greek_ETA> : "Ἤ" U1f2c
-<dead_acute> <dead_psili> <Greek_ETA> : "Ἤ" U1f2c
-<Multi_key> <less> <apostrophe> <Greek_ETA> : "á¼­" U1f2d
-<Multi_key> <apostrophe> <less> <Greek_ETA> : "á¼­" U1f2d
-<dead_ogonek> <dead_acute> <Greek_ETA> : "á¼­" U1f2d
-<dead_dasia> <dead_acute> <Greek_ETA> : "á¼­" U1f2d
-<dead_acute> <dead_ogonek> <Greek_ETA> : "á¼­" U1f2d
-<dead_acute> <dead_dasia> <Greek_ETA> : "á¼­" U1f2d
-<Multi_key> <greater> <asciitilde> <Greek_ETA> : "á¼®" U1f2e
-<Multi_key> <asciitilde> <greater> <Greek_ETA> : "á¼®" U1f2e
-<dead_horn> <dead_tilde> <Greek_ETA> : "á¼®" U1f2e
-<dead_psili> <dead_tilde> <Greek_ETA> : "á¼®" U1f2e
-<dead_tilde> <dead_horn> <Greek_ETA> : "á¼®" U1f2e
-<dead_tilde> <dead_psili> <Greek_ETA> : "á¼®" U1f2e
-<Multi_key> <less> <asciitilde> <Greek_ETA> : "Ἧ" U1f2f
-<Multi_key> <asciitilde> <less> <Greek_ETA> : "Ἧ" U1f2f
-<dead_ogonek> <dead_tilde> <Greek_ETA> : "Ἧ" U1f2f
-<dead_dasia> <dead_tilde> <Greek_ETA> : "Ἧ" U1f2f
-<dead_tilde> <dead_ogonek> <Greek_ETA> : "Ἧ" U1f2f
-<dead_tilde> <dead_dasia> <Greek_ETA> : "Ἧ" U1f2f
-<Multi_key> <greater> <Greek_iota> : "á¼°" U1f30
-<dead_horn> <Greek_iota> : "á¼°" U1f30
-<dead_psili> <Greek_iota> : "á¼°" U1f30
-<Multi_key> <less> <Greek_iota> : "á¼±" U1f31
-<dead_ogonek> <Greek_iota> : "á¼±" U1f31
-<dead_dasia> <Greek_iota> : "á¼±" U1f31
-<Multi_key> <greater> <grave> <Greek_iota> : "á¼²" U1f32
-<Multi_key> <grave> <greater> <Greek_iota> : "á¼²" U1f32
-<dead_horn> <dead_grave> <Greek_iota> : "á¼²" U1f32
-<dead_psili> <dead_grave> <Greek_iota> : "á¼²" U1f32
-<dead_grave> <dead_horn> <Greek_iota> : "á¼²" U1f32
-<dead_grave> <dead_psili> <Greek_iota> : "á¼²" U1f32
-<Multi_key> <less> <grave> <Greek_iota> : "á¼³" U1f33
-<Multi_key> <grave> <less> <Greek_iota> : "á¼³" U1f33
-<dead_ogonek> <dead_grave> <Greek_iota> : "á¼³" U1f33
-<dead_dasia> <dead_grave> <Greek_iota> : "á¼³" U1f33
-<dead_grave> <dead_ogonek> <Greek_iota> : "á¼³" U1f33
-<dead_grave> <dead_dasia> <Greek_iota> : "á¼³" U1f33
-<Multi_key> <greater> <apostrophe> <Greek_iota> : "á¼´" U1f34
-<Multi_key> <apostrophe> <greater> <Greek_iota> : "á¼´" U1f34
-<dead_horn> <dead_acute> <Greek_iota> : "á¼´" U1f34
-<dead_psili> <dead_acute> <Greek_iota> : "á¼´" U1f34
-<dead_acute> <dead_horn> <Greek_iota> : "á¼´" U1f34
-<dead_acute> <dead_psili> <Greek_iota> : "á¼´" U1f34
-<Multi_key> <less> <apostrophe> <Greek_iota> : "á¼µ" U1f35
-<Multi_key> <apostrophe> <less> <Greek_iota> : "á¼µ" U1f35
-<dead_ogonek> <dead_acute> <Greek_iota> : "á¼µ" U1f35
-<dead_dasia> <dead_acute> <Greek_iota> : "á¼µ" U1f35
-<dead_acute> <dead_ogonek> <Greek_iota> : "á¼µ" U1f35
-<dead_acute> <dead_dasia> <Greek_iota> : "á¼µ" U1f35
-<Multi_key> <greater> <asciitilde> <Greek_iota> : "ἶ" U1f36
-<Multi_key> <asciitilde> <greater> <Greek_iota> : "ἶ" U1f36
-<dead_horn> <dead_tilde> <Greek_iota> : "ἶ" U1f36
-<dead_psili> <dead_tilde> <Greek_iota> : "ἶ" U1f36
-<dead_tilde> <dead_horn> <Greek_iota> : "ἶ" U1f36
-<dead_tilde> <dead_psili> <Greek_iota> : "ἶ" U1f36
-<Multi_key> <less> <asciitilde> <Greek_iota> : "á¼·" U1f37
-<Multi_key> <asciitilde> <less> <Greek_iota> : "á¼·" U1f37
-<dead_ogonek> <dead_tilde> <Greek_iota> : "á¼·" U1f37
-<dead_dasia> <dead_tilde> <Greek_iota> : "á¼·" U1f37
-<dead_tilde> <dead_ogonek> <Greek_iota> : "á¼·" U1f37
-<dead_tilde> <dead_dasia> <Greek_iota> : "á¼·" U1f37
-<Multi_key> <greater> <Greek_IOTA> : "Ἰ" U1f38
-<dead_horn> <Greek_IOTA> : "Ἰ" U1f38
-<dead_psili> <Greek_IOTA> : "Ἰ" U1f38
-<Multi_key> <less> <Greek_IOTA> : "á¼¹" U1f39
-<dead_ogonek> <Greek_IOTA> : "á¼¹" U1f39
-<dead_dasia> <Greek_IOTA> : "á¼¹" U1f39
-<Multi_key> <greater> <grave> <Greek_IOTA> : "Ἲ" U1f3a
-<Multi_key> <grave> <greater> <Greek_IOTA> : "Ἲ" U1f3a
-<dead_horn> <dead_grave> <Greek_IOTA> : "Ἲ" U1f3a
-<dead_psili> <dead_grave> <Greek_IOTA> : "Ἲ" U1f3a
-<dead_grave> <dead_horn> <Greek_IOTA> : "Ἲ" U1f3a
-<dead_grave> <dead_psili> <Greek_IOTA> : "Ἲ" U1f3a
-<Multi_key> <less> <grave> <Greek_IOTA> : "á¼»" U1f3b
-<Multi_key> <grave> <less> <Greek_IOTA> : "á¼»" U1f3b
-<dead_ogonek> <dead_grave> <Greek_IOTA> : "á¼»" U1f3b
-<dead_dasia> <dead_grave> <Greek_IOTA> : "á¼»" U1f3b
-<dead_grave> <dead_ogonek> <Greek_IOTA> : "á¼»" U1f3b
-<dead_grave> <dead_dasia> <Greek_IOTA> : "á¼»" U1f3b
-<Multi_key> <greater> <apostrophe> <Greek_IOTA> : "á¼¼" U1f3c
-<Multi_key> <apostrophe> <greater> <Greek_IOTA> : "á¼¼" U1f3c
-<dead_horn> <dead_acute> <Greek_IOTA> : "á¼¼" U1f3c
-<dead_psili> <dead_acute> <Greek_IOTA> : "á¼¼" U1f3c
-<dead_acute> <dead_horn> <Greek_IOTA> : "á¼¼" U1f3c
-<dead_acute> <dead_psili> <Greek_IOTA> : "á¼¼" U1f3c
-<Multi_key> <less> <apostrophe> <Greek_IOTA> : "á¼½" U1f3d
-<Multi_key> <apostrophe> <less> <Greek_IOTA> : "á¼½" U1f3d
-<dead_ogonek> <dead_acute> <Greek_IOTA> : "á¼½" U1f3d
-<dead_dasia> <dead_acute> <Greek_IOTA> : "á¼½" U1f3d
-<dead_acute> <dead_ogonek> <Greek_IOTA> : "á¼½" U1f3d
-<dead_acute> <dead_dasia> <Greek_IOTA> : "á¼½" U1f3d
-<Multi_key> <greater> <asciitilde> <Greek_IOTA> : "á¼¾" U1f3e
-<Multi_key> <asciitilde> <greater> <Greek_IOTA> : "á¼¾" U1f3e
-<dead_horn> <dead_tilde> <Greek_IOTA> : "á¼¾" U1f3e
-<dead_psili> <dead_tilde> <Greek_IOTA> : "á¼¾" U1f3e
-<dead_tilde> <dead_horn> <Greek_IOTA> : "á¼¾" U1f3e
-<dead_tilde> <dead_psili> <Greek_IOTA> : "á¼¾" U1f3e
-<Multi_key> <less> <asciitilde> <Greek_IOTA> : "Ἷ" U1f3f
-<Multi_key> <asciitilde> <less> <Greek_IOTA> : "Ἷ" U1f3f
-<dead_ogonek> <dead_tilde> <Greek_IOTA> : "Ἷ" U1f3f
-<dead_dasia> <dead_tilde> <Greek_IOTA> : "Ἷ" U1f3f
-<dead_tilde> <dead_ogonek> <Greek_IOTA> : "Ἷ" U1f3f
-<dead_tilde> <dead_dasia> <Greek_IOTA> : "Ἷ" U1f3f
-<Multi_key> <greater> <Greek_omicron> : "á½€" U1f40
-<dead_horn> <Greek_omicron> : "á½€" U1f40
-<dead_psili> <Greek_omicron> : "á½€" U1f40
-<Multi_key> <less> <Greek_omicron> : "á½" U1f41
-<dead_ogonek> <Greek_omicron> : "á½" U1f41
-<dead_dasia> <Greek_omicron> : "á½" U1f41
-<Multi_key> <greater> <grave> <Greek_omicron> : "ὂ" U1f42
-<Multi_key> <grave> <greater> <Greek_omicron> : "ὂ" U1f42
-<dead_horn> <dead_grave> <Greek_omicron> : "ὂ" U1f42
-<dead_psili> <dead_grave> <Greek_omicron> : "ὂ" U1f42
-<dead_grave> <dead_horn> <Greek_omicron> : "ὂ" U1f42
-<dead_grave> <dead_psili> <Greek_omicron> : "ὂ" U1f42
-<Multi_key> <less> <grave> <Greek_omicron> : "ὃ" U1f43
-<Multi_key> <grave> <less> <Greek_omicron> : "ὃ" U1f43
-<dead_ogonek> <dead_grave> <Greek_omicron> : "ὃ" U1f43
-<dead_dasia> <dead_grave> <Greek_omicron> : "ὃ" U1f43
-<dead_grave> <dead_ogonek> <Greek_omicron> : "ὃ" U1f43
-<dead_grave> <dead_dasia> <Greek_omicron> : "ὃ" U1f43
-<Multi_key> <greater> <apostrophe> <Greek_omicron> : "ὄ" U1f44
-<Multi_key> <apostrophe> <greater> <Greek_omicron> : "ὄ" U1f44
-<dead_horn> <dead_acute> <Greek_omicron> : "ὄ" U1f44
-<dead_psili> <dead_acute> <Greek_omicron> : "ὄ" U1f44
-<dead_acute> <dead_horn> <Greek_omicron> : "ὄ" U1f44
-<dead_acute> <dead_psili> <Greek_omicron> : "ὄ" U1f44
-<Multi_key> <less> <apostrophe> <Greek_omicron> : "á½…" U1f45
-<Multi_key> <apostrophe> <less> <Greek_omicron> : "á½…" U1f45
-<dead_ogonek> <dead_acute> <Greek_omicron> : "á½…" U1f45
-<dead_dasia> <dead_acute> <Greek_omicron> : "á½…" U1f45
-<dead_acute> <dead_ogonek> <Greek_omicron> : "á½…" U1f45
-<dead_acute> <dead_dasia> <Greek_omicron> : "á½…" U1f45
-<Multi_key> <greater> <Greek_OMICRON> : "Ὀ" U1f48
-<dead_horn> <Greek_OMICRON> : "Ὀ" U1f48
-<dead_psili> <Greek_OMICRON> : "Ὀ" U1f48
-<Multi_key> <less> <Greek_OMICRON> : "Ὁ" U1f49
-<dead_ogonek> <Greek_OMICRON> : "Ὁ" U1f49
-<dead_dasia> <Greek_OMICRON> : "Ὁ" U1f49
-<Multi_key> <greater> <grave> <Greek_OMICRON> : "Ὂ" U1f4a
-<Multi_key> <grave> <greater> <Greek_OMICRON> : "Ὂ" U1f4a
-<dead_horn> <dead_grave> <Greek_OMICRON> : "Ὂ" U1f4a
-<dead_psili> <dead_grave> <Greek_OMICRON> : "Ὂ" U1f4a
-<dead_grave> <dead_horn> <Greek_OMICRON> : "Ὂ" U1f4a
-<dead_grave> <dead_psili> <Greek_OMICRON> : "Ὂ" U1f4a
-<Multi_key> <less> <grave> <Greek_OMICRON> : "Ὃ" U1f4b
-<Multi_key> <grave> <less> <Greek_OMICRON> : "Ὃ" U1f4b
-<dead_ogonek> <dead_grave> <Greek_OMICRON> : "Ὃ" U1f4b
-<dead_dasia> <dead_grave> <Greek_OMICRON> : "Ὃ" U1f4b
-<dead_grave> <dead_ogonek> <Greek_OMICRON> : "Ὃ" U1f4b
-<dead_grave> <dead_dasia> <Greek_OMICRON> : "Ὃ" U1f4b
-<Multi_key> <greater> <apostrophe> <Greek_OMICRON> : "Ὄ" U1f4c
-<Multi_key> <apostrophe> <greater> <Greek_OMICRON> : "Ὄ" U1f4c
-<dead_horn> <dead_acute> <Greek_OMICRON> : "Ὄ" U1f4c
-<dead_psili> <dead_acute> <Greek_OMICRON> : "Ὄ" U1f4c
-<dead_acute> <dead_horn> <Greek_OMICRON> : "Ὄ" U1f4c
-<dead_acute> <dead_psili> <Greek_OMICRON> : "Ὄ" U1f4c
-<Multi_key> <less> <apostrophe> <Greek_OMICRON> : "á½" U1f4d
-<Multi_key> <apostrophe> <less> <Greek_OMICRON> : "á½" U1f4d
-<dead_ogonek> <dead_acute> <Greek_OMICRON> : "á½" U1f4d
-<dead_dasia> <dead_acute> <Greek_OMICRON> : "á½" U1f4d
-<dead_acute> <dead_ogonek> <Greek_OMICRON> : "á½" U1f4d
-<dead_acute> <dead_dasia> <Greek_OMICRON> : "á½" U1f4d
-<Multi_key> <greater> <Greek_upsilon> : "á½" U1f50
-<dead_horn> <Greek_upsilon> : "á½" U1f50
-<dead_psili> <Greek_upsilon> : "á½" U1f50
-<Multi_key> <less> <Greek_upsilon> : "ὑ" U1f51
-<dead_ogonek> <Greek_upsilon> : "ὑ" U1f51
-<dead_dasia> <Greek_upsilon> : "ὑ" U1f51
-<Multi_key> <greater> <grave> <Greek_upsilon> : "á½’" U1f52
-<Multi_key> <grave> <greater> <Greek_upsilon> : "á½’" U1f52
-<dead_horn> <dead_grave> <Greek_upsilon> : "á½’" U1f52
-<dead_psili> <dead_grave> <Greek_upsilon> : "á½’" U1f52
-<dead_grave> <dead_horn> <Greek_upsilon> : "á½’" U1f52
-<dead_grave> <dead_psili> <Greek_upsilon> : "á½’" U1f52
-<Multi_key> <less> <grave> <Greek_upsilon> : "ὓ" U1f53
-<Multi_key> <grave> <less> <Greek_upsilon> : "ὓ" U1f53
-<dead_ogonek> <dead_grave> <Greek_upsilon> : "ὓ" U1f53
-<dead_dasia> <dead_grave> <Greek_upsilon> : "ὓ" U1f53
-<dead_grave> <dead_ogonek> <Greek_upsilon> : "ὓ" U1f53
-<dead_grave> <dead_dasia> <Greek_upsilon> : "ὓ" U1f53
-<Multi_key> <greater> <apostrophe> <Greek_upsilon> : "á½”" U1f54
-<Multi_key> <apostrophe> <greater> <Greek_upsilon> : "á½”" U1f54
-<dead_horn> <dead_acute> <Greek_upsilon> : "á½”" U1f54
-<dead_psili> <dead_acute> <Greek_upsilon> : "á½”" U1f54
-<dead_acute> <dead_horn> <Greek_upsilon> : "á½”" U1f54
-<dead_acute> <dead_psili> <Greek_upsilon> : "á½”" U1f54
-<Multi_key> <less> <apostrophe> <Greek_upsilon> : "ὕ" U1f55
-<Multi_key> <apostrophe> <less> <Greek_upsilon> : "ὕ" U1f55
-<dead_ogonek> <dead_acute> <Greek_upsilon> : "ὕ" U1f55
-<dead_dasia> <dead_acute> <Greek_upsilon> : "ὕ" U1f55
-<dead_acute> <dead_ogonek> <Greek_upsilon> : "ὕ" U1f55
-<dead_acute> <dead_dasia> <Greek_upsilon> : "ὕ" U1f55
-<Multi_key> <greater> <asciitilde> <Greek_upsilon> : "á½–" U1f56
-<Multi_key> <asciitilde> <greater> <Greek_upsilon> : "á½–" U1f56
-<dead_horn> <dead_tilde> <Greek_upsilon> : "á½–" U1f56
-<dead_psili> <dead_tilde> <Greek_upsilon> : "á½–" U1f56
-<dead_tilde> <dead_horn> <Greek_upsilon> : "á½–" U1f56
-<dead_tilde> <dead_psili> <Greek_upsilon> : "á½–" U1f56
-<Multi_key> <less> <asciitilde> <Greek_upsilon> : "á½—" U1f57
-<Multi_key> <asciitilde> <less> <Greek_upsilon> : "á½—" U1f57
-<dead_ogonek> <dead_tilde> <Greek_upsilon> : "á½—" U1f57
-<dead_dasia> <dead_tilde> <Greek_upsilon> : "á½—" U1f57
-<dead_tilde> <dead_ogonek> <Greek_upsilon> : "á½—" U1f57
-<dead_tilde> <dead_dasia> <Greek_upsilon> : "á½—" U1f57
-<Multi_key> <less> <Greek_UPSILON> : "á½™" U1f59
-<dead_ogonek> <Greek_UPSILON> : "á½™" U1f59
-<dead_dasia> <Greek_UPSILON> : "á½™" U1f59
-<Multi_key> <less> <grave> <Greek_UPSILON> : "á½›" U1f5b
-<Multi_key> <grave> <less> <Greek_UPSILON> : "á½›" U1f5b
-<dead_ogonek> <dead_grave> <Greek_UPSILON> : "á½›" U1f5b
-<dead_dasia> <dead_grave> <Greek_UPSILON> : "á½›" U1f5b
-<dead_grave> <dead_ogonek> <Greek_UPSILON> : "á½›" U1f5b
-<dead_grave> <dead_dasia> <Greek_UPSILON> : "á½›" U1f5b
-<Multi_key> <less> <apostrophe> <Greek_UPSILON> : "á½" U1f5d
-<Multi_key> <apostrophe> <less> <Greek_UPSILON> : "á½" U1f5d
-<dead_ogonek> <dead_acute> <Greek_UPSILON> : "á½" U1f5d
-<dead_dasia> <dead_acute> <Greek_UPSILON> : "á½" U1f5d
-<dead_acute> <dead_ogonek> <Greek_UPSILON> : "á½" U1f5d
-<dead_acute> <dead_dasia> <Greek_UPSILON> : "á½" U1f5d
-<Multi_key> <less> <asciitilde> <Greek_UPSILON> : "Ὗ" U1f5f
-<Multi_key> <asciitilde> <less> <Greek_UPSILON> : "Ὗ" U1f5f
-<dead_ogonek> <dead_tilde> <Greek_UPSILON> : "Ὗ" U1f5f
-<dead_dasia> <dead_tilde> <Greek_UPSILON> : "Ὗ" U1f5f
-<dead_tilde> <dead_ogonek> <Greek_UPSILON> : "Ὗ" U1f5f
-<dead_tilde> <dead_dasia> <Greek_UPSILON> : "Ὗ" U1f5f
-<Multi_key> <greater> <Greek_omega> : "á½ " U1f60
-<dead_horn> <Greek_omega> : "á½ " U1f60
-<dead_psili> <Greek_omega> : "á½ " U1f60
-<Multi_key> <less> <Greek_omega> : "ὡ" U1f61
-<dead_ogonek> <Greek_omega> : "ὡ" U1f61
-<dead_dasia> <Greek_omega> : "ὡ" U1f61
-<Multi_key> <greater> <grave> <Greek_omega> : "á½¢" U1f62
-<Multi_key> <grave> <greater> <Greek_omega> : "á½¢" U1f62
-<dead_horn> <dead_grave> <Greek_omega> : "á½¢" U1f62
-<dead_psili> <dead_grave> <Greek_omega> : "á½¢" U1f62
-<dead_grave> <dead_horn> <Greek_omega> : "á½¢" U1f62
-<dead_grave> <dead_psili> <Greek_omega> : "á½¢" U1f62
-<Multi_key> <less> <grave> <Greek_omega> : "á½£" U1f63
-<Multi_key> <grave> <less> <Greek_omega> : "á½£" U1f63
-<dead_ogonek> <dead_grave> <Greek_omega> : "á½£" U1f63
-<dead_dasia> <dead_grave> <Greek_omega> : "á½£" U1f63
-<dead_grave> <dead_ogonek> <Greek_omega> : "á½£" U1f63
-<dead_grave> <dead_dasia> <Greek_omega> : "á½£" U1f63
-<Multi_key> <greater> <apostrophe> <Greek_omega> : "ὤ" U1f64
-<Multi_key> <apostrophe> <greater> <Greek_omega> : "ὤ" U1f64
-<dead_horn> <dead_acute> <Greek_omega> : "ὤ" U1f64
-<dead_psili> <dead_acute> <Greek_omega> : "ὤ" U1f64
-<dead_acute> <dead_horn> <Greek_omega> : "ὤ" U1f64
-<dead_acute> <dead_psili> <Greek_omega> : "ὤ" U1f64
-<Multi_key> <less> <apostrophe> <Greek_omega> : "á½¥" U1f65
-<Multi_key> <apostrophe> <less> <Greek_omega> : "á½¥" U1f65
-<dead_ogonek> <dead_acute> <Greek_omega> : "á½¥" U1f65
-<dead_dasia> <dead_acute> <Greek_omega> : "á½¥" U1f65
-<dead_acute> <dead_ogonek> <Greek_omega> : "á½¥" U1f65
-<dead_acute> <dead_dasia> <Greek_omega> : "á½¥" U1f65
-<Multi_key> <greater> <asciitilde> <Greek_omega> : "ὦ" U1f66
-<Multi_key> <asciitilde> <greater> <Greek_omega> : "ὦ" U1f66
-<dead_horn> <dead_tilde> <Greek_omega> : "ὦ" U1f66
-<dead_psili> <dead_tilde> <Greek_omega> : "ὦ" U1f66
-<dead_tilde> <dead_horn> <Greek_omega> : "ὦ" U1f66
-<dead_tilde> <dead_psili> <Greek_omega> : "ὦ" U1f66
-<Multi_key> <less> <asciitilde> <Greek_omega> : "ὧ" U1f67
-<Multi_key> <asciitilde> <less> <Greek_omega> : "ὧ" U1f67
-<dead_ogonek> <dead_tilde> <Greek_omega> : "ὧ" U1f67
-<dead_dasia> <dead_tilde> <Greek_omega> : "ὧ" U1f67
-<dead_tilde> <dead_ogonek> <Greek_omega> : "ὧ" U1f67
-<dead_tilde> <dead_dasia> <Greek_omega> : "ὧ" U1f67
-<Multi_key> <greater> <Greek_OMEGA> : "Ὠ" U1f68
-<dead_horn> <Greek_OMEGA> : "Ὠ" U1f68
-<dead_psili> <Greek_OMEGA> : "Ὠ" U1f68
-<Multi_key> <less> <Greek_OMEGA> : "Ὡ" U1f69
-<dead_ogonek> <Greek_OMEGA> : "Ὡ" U1f69
-<dead_dasia> <Greek_OMEGA> : "Ὡ" U1f69
-<Multi_key> <greater> <grave> <Greek_OMEGA> : "Ὢ" U1f6a
-<Multi_key> <grave> <greater> <Greek_OMEGA> : "Ὢ" U1f6a
-<dead_horn> <dead_grave> <Greek_OMEGA> : "Ὢ" U1f6a
-<dead_psili> <dead_grave> <Greek_OMEGA> : "Ὢ" U1f6a
-<dead_grave> <dead_horn> <Greek_OMEGA> : "Ὢ" U1f6a
-<dead_grave> <dead_psili> <Greek_OMEGA> : "Ὢ" U1f6a
-<Multi_key> <less> <grave> <Greek_OMEGA> : "Ὣ" U1f6b
-<Multi_key> <grave> <less> <Greek_OMEGA> : "Ὣ" U1f6b
-<dead_ogonek> <dead_grave> <Greek_OMEGA> : "Ὣ" U1f6b
-<dead_dasia> <dead_grave> <Greek_OMEGA> : "Ὣ" U1f6b
-<dead_grave> <dead_ogonek> <Greek_OMEGA> : "Ὣ" U1f6b
-<dead_grave> <dead_dasia> <Greek_OMEGA> : "Ὣ" U1f6b
-<Multi_key> <greater> <apostrophe> <Greek_OMEGA> : "Ὤ" U1f6c
-<Multi_key> <apostrophe> <greater> <Greek_OMEGA> : "Ὤ" U1f6c
-<dead_horn> <dead_acute> <Greek_OMEGA> : "Ὤ" U1f6c
-<dead_psili> <dead_acute> <Greek_OMEGA> : "Ὤ" U1f6c
-<dead_acute> <dead_horn> <Greek_OMEGA> : "Ὤ" U1f6c
-<dead_acute> <dead_psili> <Greek_OMEGA> : "Ὤ" U1f6c
-<Multi_key> <less> <apostrophe> <Greek_OMEGA> : "á½­" U1f6d
-<Multi_key> <apostrophe> <less> <Greek_OMEGA> : "á½­" U1f6d
-<dead_ogonek> <dead_acute> <Greek_OMEGA> : "á½­" U1f6d
-<dead_dasia> <dead_acute> <Greek_OMEGA> : "á½­" U1f6d
-<dead_acute> <dead_ogonek> <Greek_OMEGA> : "á½­" U1f6d
-<dead_acute> <dead_dasia> <Greek_OMEGA> : "á½­" U1f6d
-<Multi_key> <greater> <asciitilde> <Greek_OMEGA> : "á½®" U1f6e
-<Multi_key> <asciitilde> <greater> <Greek_OMEGA> : "á½®" U1f6e
-<dead_horn> <dead_tilde> <Greek_OMEGA> : "á½®" U1f6e
-<dead_psili> <dead_tilde> <Greek_OMEGA> : "á½®" U1f6e
-<dead_tilde> <dead_horn> <Greek_OMEGA> : "á½®" U1f6e
-<dead_tilde> <dead_psili> <Greek_OMEGA> : "á½®" U1f6e
-<Multi_key> <less> <asciitilde> <Greek_OMEGA> : "Ὧ" U1f6f
-<Multi_key> <asciitilde> <less> <Greek_OMEGA> : "Ὧ" U1f6f
-<dead_ogonek> <dead_tilde> <Greek_OMEGA> : "Ὧ" U1f6f
-<dead_dasia> <dead_tilde> <Greek_OMEGA> : "Ὧ" U1f6f
-<dead_tilde> <dead_ogonek> <Greek_OMEGA> : "Ὧ" U1f6f
-<dead_tilde> <dead_dasia> <Greek_OMEGA> : "Ὧ" U1f6f
-<Multi_key> <grave> <Greek_alpha> : "á½°" U1f70
-<dead_grave> <Greek_alpha> : "á½°" U1f70
-<Multi_key> <grave> <Greek_epsilon> : "á½²" U1f72
-<dead_grave> <Greek_epsilon> : "á½²" U1f72
-<Multi_key> <grave> <Greek_eta> : "á½´" U1f74
-<dead_grave> <Greek_eta> : "á½´" U1f74
-<Multi_key> <grave> <Greek_iota> : "ὶ" U1f76
-<dead_grave> <Greek_iota> : "ὶ" U1f76
-<Multi_key> <grave> <Greek_omicron> : "ὸ" U1f78
-<dead_grave> <Greek_omicron> : "ὸ" U1f78
-<Multi_key> <grave> <Greek_upsilon> : "ὺ" U1f7a
-<dead_grave> <Greek_upsilon> : "ὺ" U1f7a
-<Multi_key> <grave> <Greek_omega> : "á½¼" U1f7c
-<dead_grave> <Greek_omega> : "á½¼" U1f7c
-<Multi_key> <bar> <greater> <Greek_alpha> : "á¾€" U1f80
-<Multi_key> <greater> <bar> <Greek_alpha> : "á¾€" U1f80
-<dead_iota> <dead_horn> <Greek_alpha> : "á¾€" U1f80
-<dead_iota> <dead_psili> <Greek_alpha> : "á¾€" U1f80
-<dead_horn> <dead_iota> <Greek_alpha> : "á¾€" U1f80
-<dead_psili> <dead_iota> <Greek_alpha> : "á¾€" U1f80
-<Multi_key> <bar> <less> <Greek_alpha> : "á¾" U1f81
-<Multi_key> <less> <bar> <Greek_alpha> : "á¾" U1f81
-<dead_iota> <dead_ogonek> <Greek_alpha> : "á¾" U1f81
-<dead_iota> <dead_dasia> <Greek_alpha> : "á¾" U1f81
-<dead_ogonek> <dead_iota> <Greek_alpha> : "á¾" U1f81
-<dead_dasia> <dead_iota> <Greek_alpha> : "á¾" U1f81
-<Multi_key> <bar> <greater> <grave> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <bar> <grave> <greater> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <greater> <bar> <grave> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <greater> <grave> <bar> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <grave> <bar> <greater> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <grave> <greater> <bar> <Greek_alpha> : "ᾂ" U1f82
-<dead_iota> <dead_horn> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
-<dead_iota> <dead_psili> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
-<dead_iota> <dead_grave> <dead_horn> <Greek_alpha> : "ᾂ" U1f82
-<dead_iota> <dead_grave> <dead_psili> <Greek_alpha> : "ᾂ" U1f82
-<dead_horn> <dead_iota> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
-<dead_psili> <dead_iota> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
-<dead_horn> <dead_grave> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
-<dead_psili> <dead_grave> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
-<dead_grave> <dead_iota> <dead_horn> <Greek_alpha> : "ᾂ" U1f82
-<dead_grave> <dead_iota> <dead_psili> <Greek_alpha> : "ᾂ" U1f82
-<dead_grave> <dead_horn> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
-<dead_grave> <dead_psili> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <bar> <less> <grave> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <bar> <grave> <less> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <less> <bar> <grave> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <less> <grave> <bar> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <grave> <bar> <less> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <grave> <less> <bar> <Greek_alpha> : "ᾃ" U1f83
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
-<dead_iota> <dead_dasia> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_alpha> : "ᾃ" U1f83
-<dead_iota> <dead_grave> <dead_dasia> <Greek_alpha> : "ᾃ" U1f83
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
-<dead_dasia> <dead_iota> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
-<dead_dasia> <dead_grave> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_alpha> : "ᾃ" U1f83
-<dead_grave> <dead_iota> <dead_dasia> <Greek_alpha> : "ᾃ" U1f83
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
-<dead_grave> <dead_dasia> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <bar> <greater> <apostrophe> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <bar> <apostrophe> <greater> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <greater> <bar> <apostrophe> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <greater> <apostrophe> <bar> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <apostrophe> <bar> <greater> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <apostrophe> <greater> <bar> <Greek_alpha> : "ᾄ" U1f84
-<dead_iota> <dead_horn> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
-<dead_iota> <dead_psili> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
-<dead_iota> <dead_acute> <dead_horn> <Greek_alpha> : "ᾄ" U1f84
-<dead_iota> <dead_acute> <dead_psili> <Greek_alpha> : "ᾄ" U1f84
-<dead_horn> <dead_iota> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
-<dead_psili> <dead_iota> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
-<dead_horn> <dead_acute> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
-<dead_psili> <dead_acute> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
-<dead_acute> <dead_iota> <dead_horn> <Greek_alpha> : "ᾄ" U1f84
-<dead_acute> <dead_iota> <dead_psili> <Greek_alpha> : "ᾄ" U1f84
-<dead_acute> <dead_horn> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
-<dead_acute> <dead_psili> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <bar> <less> <apostrophe> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <bar> <apostrophe> <less> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <less> <bar> <apostrophe> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <less> <apostrophe> <bar> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <apostrophe> <bar> <less> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <apostrophe> <less> <bar> <Greek_alpha> : "á¾…" U1f85
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_alpha> : "á¾…" U1f85
-<dead_iota> <dead_dasia> <dead_acute> <Greek_alpha> : "á¾…" U1f85
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_alpha> : "á¾…" U1f85
-<dead_iota> <dead_acute> <dead_dasia> <Greek_alpha> : "á¾…" U1f85
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_alpha> : "á¾…" U1f85
-<dead_dasia> <dead_iota> <dead_acute> <Greek_alpha> : "á¾…" U1f85
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_alpha> : "á¾…" U1f85
-<dead_dasia> <dead_acute> <dead_iota> <Greek_alpha> : "á¾…" U1f85
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_alpha> : "á¾…" U1f85
-<dead_acute> <dead_iota> <dead_dasia> <Greek_alpha> : "á¾…" U1f85
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_alpha> : "á¾…" U1f85
-<dead_acute> <dead_dasia> <dead_iota> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <bar> <greater> <asciitilde> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <bar> <asciitilde> <greater> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <greater> <bar> <asciitilde> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <greater> <asciitilde> <bar> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <asciitilde> <bar> <greater> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <asciitilde> <greater> <bar> <Greek_alpha> : "ᾆ" U1f86
-<dead_iota> <dead_horn> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
-<dead_iota> <dead_psili> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
-<dead_iota> <dead_tilde> <dead_horn> <Greek_alpha> : "ᾆ" U1f86
-<dead_iota> <dead_tilde> <dead_psili> <Greek_alpha> : "ᾆ" U1f86
-<dead_horn> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
-<dead_psili> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
-<dead_horn> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
-<dead_psili> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
-<dead_tilde> <dead_iota> <dead_horn> <Greek_alpha> : "ᾆ" U1f86
-<dead_tilde> <dead_iota> <dead_psili> <Greek_alpha> : "ᾆ" U1f86
-<dead_tilde> <dead_horn> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
-<dead_tilde> <dead_psili> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <bar> <less> <asciitilde> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <bar> <asciitilde> <less> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <less> <bar> <asciitilde> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <less> <asciitilde> <bar> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <asciitilde> <bar> <less> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <asciitilde> <less> <bar> <Greek_alpha> : "ᾇ" U1f87
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_alpha> : "ᾇ" U1f87
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_alpha> : "ᾇ" U1f87
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_alpha> : "ᾇ" U1f87
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_alpha> : "ᾇ" U1f87
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <bar> <greater> <Greek_ALPHA> : "ᾈ" U1f88
-<Multi_key> <greater> <bar> <Greek_ALPHA> : "ᾈ" U1f88
-<dead_iota> <dead_horn> <Greek_ALPHA> : "ᾈ" U1f88
-<dead_iota> <dead_psili> <Greek_ALPHA> : "ᾈ" U1f88
-<dead_horn> <dead_iota> <Greek_ALPHA> : "ᾈ" U1f88
-<dead_psili> <dead_iota> <Greek_ALPHA> : "ᾈ" U1f88
-<Multi_key> <bar> <less> <Greek_ALPHA> : "ᾉ" U1f89
-<Multi_key> <less> <bar> <Greek_ALPHA> : "ᾉ" U1f89
-<dead_iota> <dead_ogonek> <Greek_ALPHA> : "ᾉ" U1f89
-<dead_iota> <dead_dasia> <Greek_ALPHA> : "ᾉ" U1f89
-<dead_ogonek> <dead_iota> <Greek_ALPHA> : "ᾉ" U1f89
-<dead_dasia> <dead_iota> <Greek_ALPHA> : "ᾉ" U1f89
-<Multi_key> <bar> <greater> <grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <bar> <grave> <greater> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <greater> <bar> <grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <greater> <grave> <bar> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <grave> <bar> <greater> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <grave> <greater> <bar> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_iota> <dead_horn> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_iota> <dead_psili> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_iota> <dead_grave> <dead_horn> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_iota> <dead_grave> <dead_psili> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_horn> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_psili> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_horn> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_psili> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_grave> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_grave> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_grave> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_grave> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <bar> <less> <grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <bar> <grave> <less> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <less> <bar> <grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <less> <grave> <bar> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <grave> <bar> <less> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <grave> <less> <bar> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_iota> <dead_dasia> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_iota> <dead_grave> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_dasia> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_dasia> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_grave> <dead_iota> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_grave> <dead_dasia> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <bar> <greater> <apostrophe> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <bar> <apostrophe> <greater> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <greater> <bar> <apostrophe> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <greater> <apostrophe> <bar> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <apostrophe> <bar> <greater> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <apostrophe> <greater> <bar> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_iota> <dead_horn> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_iota> <dead_psili> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_iota> <dead_acute> <dead_horn> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_iota> <dead_acute> <dead_psili> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_horn> <dead_iota> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_psili> <dead_iota> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_horn> <dead_acute> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_psili> <dead_acute> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_acute> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_acute> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_acute> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_acute> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <bar> <less> <apostrophe> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <bar> <apostrophe> <less> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <less> <bar> <apostrophe> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <less> <apostrophe> <bar> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <apostrophe> <bar> <less> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <apostrophe> <less> <bar> <Greek_ALPHA> : "á¾" U1f8d
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
-<dead_iota> <dead_dasia> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8d
-<dead_iota> <dead_acute> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8d
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
-<dead_dasia> <dead_iota> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
-<dead_dasia> <dead_acute> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8d
-<dead_acute> <dead_iota> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8d
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
-<dead_acute> <dead_dasia> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <bar> <greater> <asciitilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <bar> <asciitilde> <greater> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <greater> <bar> <asciitilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <greater> <asciitilde> <bar> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <asciitilde> <bar> <greater> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <asciitilde> <greater> <bar> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_iota> <dead_horn> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_iota> <dead_psili> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_iota> <dead_tilde> <dead_horn> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_iota> <dead_tilde> <dead_psili> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_horn> <dead_iota> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_psili> <dead_iota> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_horn> <dead_tilde> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_psili> <dead_tilde> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_tilde> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_tilde> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_tilde> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_tilde> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <bar> <less> <asciitilde> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <bar> <asciitilde> <less> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <less> <bar> <asciitilde> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <less> <asciitilde> <bar> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <asciitilde> <bar> <less> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <asciitilde> <less> <bar> <Greek_ALPHA> : "á¾" U1f8f
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8f
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8f
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8f
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8f
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <bar> <greater> <Greek_eta> : "á¾" U1f90
-<Multi_key> <greater> <bar> <Greek_eta> : "á¾" U1f90
-<dead_iota> <dead_horn> <Greek_eta> : "á¾" U1f90
-<dead_iota> <dead_psili> <Greek_eta> : "á¾" U1f90
-<dead_horn> <dead_iota> <Greek_eta> : "á¾" U1f90
-<dead_psili> <dead_iota> <Greek_eta> : "á¾" U1f90
-<Multi_key> <bar> <less> <Greek_eta> : "ᾑ" U1f91
-<Multi_key> <less> <bar> <Greek_eta> : "ᾑ" U1f91
-<dead_iota> <dead_ogonek> <Greek_eta> : "ᾑ" U1f91
-<dead_iota> <dead_dasia> <Greek_eta> : "ᾑ" U1f91
-<dead_ogonek> <dead_iota> <Greek_eta> : "ᾑ" U1f91
-<dead_dasia> <dead_iota> <Greek_eta> : "ᾑ" U1f91
-<Multi_key> <bar> <greater> <grave> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <bar> <grave> <greater> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <greater> <bar> <grave> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <greater> <grave> <bar> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <grave> <bar> <greater> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <grave> <greater> <bar> <Greek_eta> : "á¾’" U1f92
-<dead_iota> <dead_horn> <dead_grave> <Greek_eta> : "á¾’" U1f92
-<dead_iota> <dead_psili> <dead_grave> <Greek_eta> : "á¾’" U1f92
-<dead_iota> <dead_grave> <dead_horn> <Greek_eta> : "á¾’" U1f92
-<dead_iota> <dead_grave> <dead_psili> <Greek_eta> : "á¾’" U1f92
-<dead_horn> <dead_iota> <dead_grave> <Greek_eta> : "á¾’" U1f92
-<dead_psili> <dead_iota> <dead_grave> <Greek_eta> : "á¾’" U1f92
-<dead_horn> <dead_grave> <dead_iota> <Greek_eta> : "á¾’" U1f92
-<dead_psili> <dead_grave> <dead_iota> <Greek_eta> : "á¾’" U1f92
-<dead_grave> <dead_iota> <dead_horn> <Greek_eta> : "á¾’" U1f92
-<dead_grave> <dead_iota> <dead_psili> <Greek_eta> : "á¾’" U1f92
-<dead_grave> <dead_horn> <dead_iota> <Greek_eta> : "á¾’" U1f92
-<dead_grave> <dead_psili> <dead_iota> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <bar> <less> <grave> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <bar> <grave> <less> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <less> <bar> <grave> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <less> <grave> <bar> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <grave> <bar> <less> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <grave> <less> <bar> <Greek_eta> : "ᾓ" U1f93
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_eta> : "ᾓ" U1f93
-<dead_iota> <dead_dasia> <dead_grave> <Greek_eta> : "ᾓ" U1f93
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_eta> : "ᾓ" U1f93
-<dead_iota> <dead_grave> <dead_dasia> <Greek_eta> : "ᾓ" U1f93
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_eta> : "ᾓ" U1f93
-<dead_dasia> <dead_iota> <dead_grave> <Greek_eta> : "ᾓ" U1f93
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_eta> : "ᾓ" U1f93
-<dead_dasia> <dead_grave> <dead_iota> <Greek_eta> : "ᾓ" U1f93
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_eta> : "ᾓ" U1f93
-<dead_grave> <dead_iota> <dead_dasia> <Greek_eta> : "ᾓ" U1f93
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_eta> : "ᾓ" U1f93
-<dead_grave> <dead_dasia> <dead_iota> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <bar> <greater> <apostrophe> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <bar> <apostrophe> <greater> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <greater> <bar> <apostrophe> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <greater> <apostrophe> <bar> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <apostrophe> <bar> <greater> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <apostrophe> <greater> <bar> <Greek_eta> : "á¾”" U1f94
-<dead_iota> <dead_horn> <dead_acute> <Greek_eta> : "á¾”" U1f94
-<dead_iota> <dead_psili> <dead_acute> <Greek_eta> : "á¾”" U1f94
-<dead_iota> <dead_acute> <dead_horn> <Greek_eta> : "á¾”" U1f94
-<dead_iota> <dead_acute> <dead_psili> <Greek_eta> : "á¾”" U1f94
-<dead_horn> <dead_iota> <dead_acute> <Greek_eta> : "á¾”" U1f94
-<dead_psili> <dead_iota> <dead_acute> <Greek_eta> : "á¾”" U1f94
-<dead_horn> <dead_acute> <dead_iota> <Greek_eta> : "á¾”" U1f94
-<dead_psili> <dead_acute> <dead_iota> <Greek_eta> : "á¾”" U1f94
-<dead_acute> <dead_iota> <dead_horn> <Greek_eta> : "á¾”" U1f94
-<dead_acute> <dead_iota> <dead_psili> <Greek_eta> : "á¾”" U1f94
-<dead_acute> <dead_horn> <dead_iota> <Greek_eta> : "á¾”" U1f94
-<dead_acute> <dead_psili> <dead_iota> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <bar> <less> <apostrophe> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <bar> <apostrophe> <less> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <less> <bar> <apostrophe> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <less> <apostrophe> <bar> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <apostrophe> <bar> <less> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <apostrophe> <less> <bar> <Greek_eta> : "ᾕ" U1f95
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_eta> : "ᾕ" U1f95
-<dead_iota> <dead_dasia> <dead_acute> <Greek_eta> : "ᾕ" U1f95
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_eta> : "ᾕ" U1f95
-<dead_iota> <dead_acute> <dead_dasia> <Greek_eta> : "ᾕ" U1f95
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_eta> : "ᾕ" U1f95
-<dead_dasia> <dead_iota> <dead_acute> <Greek_eta> : "ᾕ" U1f95
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_eta> : "ᾕ" U1f95
-<dead_dasia> <dead_acute> <dead_iota> <Greek_eta> : "ᾕ" U1f95
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_eta> : "ᾕ" U1f95
-<dead_acute> <dead_iota> <dead_dasia> <Greek_eta> : "ᾕ" U1f95
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_eta> : "ᾕ" U1f95
-<dead_acute> <dead_dasia> <dead_iota> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <bar> <greater> <asciitilde> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <bar> <asciitilde> <greater> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <greater> <bar> <asciitilde> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <greater> <asciitilde> <bar> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <asciitilde> <bar> <greater> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <asciitilde> <greater> <bar> <Greek_eta> : "á¾–" U1f96
-<dead_iota> <dead_horn> <dead_tilde> <Greek_eta> : "á¾–" U1f96
-<dead_iota> <dead_psili> <dead_tilde> <Greek_eta> : "á¾–" U1f96
-<dead_iota> <dead_tilde> <dead_horn> <Greek_eta> : "á¾–" U1f96
-<dead_iota> <dead_tilde> <dead_psili> <Greek_eta> : "á¾–" U1f96
-<dead_horn> <dead_iota> <dead_tilde> <Greek_eta> : "á¾–" U1f96
-<dead_psili> <dead_iota> <dead_tilde> <Greek_eta> : "á¾–" U1f96
-<dead_horn> <dead_tilde> <dead_iota> <Greek_eta> : "á¾–" U1f96
-<dead_psili> <dead_tilde> <dead_iota> <Greek_eta> : "á¾–" U1f96
-<dead_tilde> <dead_iota> <dead_horn> <Greek_eta> : "á¾–" U1f96
-<dead_tilde> <dead_iota> <dead_psili> <Greek_eta> : "á¾–" U1f96
-<dead_tilde> <dead_horn> <dead_iota> <Greek_eta> : "á¾–" U1f96
-<dead_tilde> <dead_psili> <dead_iota> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <bar> <less> <asciitilde> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <bar> <asciitilde> <less> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <less> <bar> <asciitilde> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <less> <asciitilde> <bar> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <asciitilde> <bar> <less> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <asciitilde> <less> <bar> <Greek_eta> : "á¾—" U1f97
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_eta> : "á¾—" U1f97
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_eta> : "á¾—" U1f97
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_eta> : "á¾—" U1f97
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_eta> : "á¾—" U1f97
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_eta> : "á¾—" U1f97
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_eta> : "á¾—" U1f97
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_eta> : "á¾—" U1f97
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_eta> : "á¾—" U1f97
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_eta> : "á¾—" U1f97
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_eta> : "á¾—" U1f97
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_eta> : "á¾—" U1f97
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <bar> <greater> <Greek_ETA> : "ᾘ" U1f98
-<Multi_key> <greater> <bar> <Greek_ETA> : "ᾘ" U1f98
-<dead_iota> <dead_horn> <Greek_ETA> : "ᾘ" U1f98
-<dead_iota> <dead_psili> <Greek_ETA> : "ᾘ" U1f98
-<dead_horn> <dead_iota> <Greek_ETA> : "ᾘ" U1f98
-<dead_psili> <dead_iota> <Greek_ETA> : "ᾘ" U1f98
-<Multi_key> <bar> <less> <Greek_ETA> : "á¾™" U1f99
-<Multi_key> <less> <bar> <Greek_ETA> : "á¾™" U1f99
-<dead_iota> <dead_ogonek> <Greek_ETA> : "á¾™" U1f99
-<dead_iota> <dead_dasia> <Greek_ETA> : "á¾™" U1f99
-<dead_ogonek> <dead_iota> <Greek_ETA> : "á¾™" U1f99
-<dead_dasia> <dead_iota> <Greek_ETA> : "á¾™" U1f99
-<Multi_key> <bar> <greater> <grave> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <bar> <grave> <greater> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <greater> <bar> <grave> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <greater> <grave> <bar> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <grave> <bar> <greater> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <grave> <greater> <bar> <Greek_ETA> : "ᾚ" U1f9a
-<dead_iota> <dead_horn> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
-<dead_iota> <dead_psili> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
-<dead_iota> <dead_grave> <dead_horn> <Greek_ETA> : "ᾚ" U1f9a
-<dead_iota> <dead_grave> <dead_psili> <Greek_ETA> : "ᾚ" U1f9a
-<dead_horn> <dead_iota> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
-<dead_psili> <dead_iota> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
-<dead_horn> <dead_grave> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
-<dead_psili> <dead_grave> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
-<dead_grave> <dead_iota> <dead_horn> <Greek_ETA> : "ᾚ" U1f9a
-<dead_grave> <dead_iota> <dead_psili> <Greek_ETA> : "ᾚ" U1f9a
-<dead_grave> <dead_horn> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
-<dead_grave> <dead_psili> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <bar> <less> <grave> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <bar> <grave> <less> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <less> <bar> <grave> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <less> <grave> <bar> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <grave> <bar> <less> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <grave> <less> <bar> <Greek_ETA> : "á¾›" U1f9b
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
-<dead_iota> <dead_dasia> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_ETA> : "á¾›" U1f9b
-<dead_iota> <dead_grave> <dead_dasia> <Greek_ETA> : "á¾›" U1f9b
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
-<dead_dasia> <dead_iota> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
-<dead_dasia> <dead_grave> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_ETA> : "á¾›" U1f9b
-<dead_grave> <dead_iota> <dead_dasia> <Greek_ETA> : "á¾›" U1f9b
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
-<dead_grave> <dead_dasia> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <bar> <greater> <apostrophe> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <bar> <apostrophe> <greater> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <greater> <bar> <apostrophe> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <greater> <apostrophe> <bar> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <apostrophe> <bar> <greater> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <apostrophe> <greater> <bar> <Greek_ETA> : "ᾜ" U1f9c
-<dead_iota> <dead_horn> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
-<dead_iota> <dead_psili> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
-<dead_iota> <dead_acute> <dead_horn> <Greek_ETA> : "ᾜ" U1f9c
-<dead_iota> <dead_acute> <dead_psili> <Greek_ETA> : "ᾜ" U1f9c
-<dead_horn> <dead_iota> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
-<dead_psili> <dead_iota> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
-<dead_horn> <dead_acute> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
-<dead_psili> <dead_acute> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
-<dead_acute> <dead_iota> <dead_horn> <Greek_ETA> : "ᾜ" U1f9c
-<dead_acute> <dead_iota> <dead_psili> <Greek_ETA> : "ᾜ" U1f9c
-<dead_acute> <dead_horn> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
-<dead_acute> <dead_psili> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <bar> <less> <apostrophe> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <bar> <apostrophe> <less> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <less> <bar> <apostrophe> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <less> <apostrophe> <bar> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <apostrophe> <bar> <less> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <apostrophe> <less> <bar> <Greek_ETA> : "á¾" U1f9d
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_ETA> : "á¾" U1f9d
-<dead_iota> <dead_dasia> <dead_acute> <Greek_ETA> : "á¾" U1f9d
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_ETA> : "á¾" U1f9d
-<dead_iota> <dead_acute> <dead_dasia> <Greek_ETA> : "á¾" U1f9d
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_ETA> : "á¾" U1f9d
-<dead_dasia> <dead_iota> <dead_acute> <Greek_ETA> : "á¾" U1f9d
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_ETA> : "á¾" U1f9d
-<dead_dasia> <dead_acute> <dead_iota> <Greek_ETA> : "á¾" U1f9d
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_ETA> : "á¾" U1f9d
-<dead_acute> <dead_iota> <dead_dasia> <Greek_ETA> : "á¾" U1f9d
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_ETA> : "á¾" U1f9d
-<dead_acute> <dead_dasia> <dead_iota> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <bar> <greater> <asciitilde> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <bar> <asciitilde> <greater> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <greater> <bar> <asciitilde> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <greater> <asciitilde> <bar> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <asciitilde> <bar> <greater> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <asciitilde> <greater> <bar> <Greek_ETA> : "ᾞ" U1f9e
-<dead_iota> <dead_horn> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
-<dead_iota> <dead_psili> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
-<dead_iota> <dead_tilde> <dead_horn> <Greek_ETA> : "ᾞ" U1f9e
-<dead_iota> <dead_tilde> <dead_psili> <Greek_ETA> : "ᾞ" U1f9e
-<dead_horn> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
-<dead_psili> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
-<dead_horn> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
-<dead_psili> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
-<dead_tilde> <dead_iota> <dead_horn> <Greek_ETA> : "ᾞ" U1f9e
-<dead_tilde> <dead_iota> <dead_psili> <Greek_ETA> : "ᾞ" U1f9e
-<dead_tilde> <dead_horn> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
-<dead_tilde> <dead_psili> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <bar> <less> <asciitilde> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <bar> <asciitilde> <less> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <less> <bar> <asciitilde> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <less> <asciitilde> <bar> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <asciitilde> <bar> <less> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <asciitilde> <less> <bar> <Greek_ETA> : "ᾟ" U1f9f
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_ETA> : "ᾟ" U1f9f
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_ETA> : "ᾟ" U1f9f
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_ETA> : "ᾟ" U1f9f
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_ETA> : "ᾟ" U1f9f
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <bar> <greater> <Greek_omega> : "á¾ " U1fa0
-<Multi_key> <greater> <bar> <Greek_omega> : "á¾ " U1fa0
-<dead_iota> <dead_horn> <Greek_omega> : "á¾ " U1fa0
-<dead_iota> <dead_psili> <Greek_omega> : "á¾ " U1fa0
-<dead_horn> <dead_iota> <Greek_omega> : "á¾ " U1fa0
-<dead_psili> <dead_iota> <Greek_omega> : "á¾ " U1fa0
-<Multi_key> <bar> <less> <Greek_omega> : "ᾡ" U1fa1
-<Multi_key> <less> <bar> <Greek_omega> : "ᾡ" U1fa1
-<dead_iota> <dead_ogonek> <Greek_omega> : "ᾡ" U1fa1
-<dead_iota> <dead_dasia> <Greek_omega> : "ᾡ" U1fa1
-<dead_ogonek> <dead_iota> <Greek_omega> : "ᾡ" U1fa1
-<dead_dasia> <dead_iota> <Greek_omega> : "ᾡ" U1fa1
-<Multi_key> <bar> <greater> <grave> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <bar> <grave> <greater> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <greater> <bar> <grave> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <greater> <grave> <bar> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <grave> <bar> <greater> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <grave> <greater> <bar> <Greek_omega> : "á¾¢" U1fa2
-<dead_iota> <dead_horn> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
-<dead_iota> <dead_psili> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
-<dead_iota> <dead_grave> <dead_horn> <Greek_omega> : "á¾¢" U1fa2
-<dead_iota> <dead_grave> <dead_psili> <Greek_omega> : "á¾¢" U1fa2
-<dead_horn> <dead_iota> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
-<dead_psili> <dead_iota> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
-<dead_horn> <dead_grave> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
-<dead_psili> <dead_grave> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
-<dead_grave> <dead_iota> <dead_horn> <Greek_omega> : "á¾¢" U1fa2
-<dead_grave> <dead_iota> <dead_psili> <Greek_omega> : "á¾¢" U1fa2
-<dead_grave> <dead_horn> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
-<dead_grave> <dead_psili> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <bar> <less> <grave> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <bar> <grave> <less> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <less> <bar> <grave> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <less> <grave> <bar> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <grave> <bar> <less> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <grave> <less> <bar> <Greek_omega> : "á¾£" U1fa3
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_omega> : "á¾£" U1fa3
-<dead_iota> <dead_dasia> <dead_grave> <Greek_omega> : "á¾£" U1fa3
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_omega> : "á¾£" U1fa3
-<dead_iota> <dead_grave> <dead_dasia> <Greek_omega> : "á¾£" U1fa3
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_omega> : "á¾£" U1fa3
-<dead_dasia> <dead_iota> <dead_grave> <Greek_omega> : "á¾£" U1fa3
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_omega> : "á¾£" U1fa3
-<dead_dasia> <dead_grave> <dead_iota> <Greek_omega> : "á¾£" U1fa3
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_omega> : "á¾£" U1fa3
-<dead_grave> <dead_iota> <dead_dasia> <Greek_omega> : "á¾£" U1fa3
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_omega> : "á¾£" U1fa3
-<dead_grave> <dead_dasia> <dead_iota> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <bar> <greater> <apostrophe> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <bar> <apostrophe> <greater> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <greater> <bar> <apostrophe> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <greater> <apostrophe> <bar> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <apostrophe> <bar> <greater> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <apostrophe> <greater> <bar> <Greek_omega> : "ᾤ" U1fa4
-<dead_iota> <dead_horn> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
-<dead_iota> <dead_psili> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
-<dead_iota> <dead_acute> <dead_horn> <Greek_omega> : "ᾤ" U1fa4
-<dead_iota> <dead_acute> <dead_psili> <Greek_omega> : "ᾤ" U1fa4
-<dead_horn> <dead_iota> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
-<dead_psili> <dead_iota> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
-<dead_horn> <dead_acute> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
-<dead_psili> <dead_acute> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
-<dead_acute> <dead_iota> <dead_horn> <Greek_omega> : "ᾤ" U1fa4
-<dead_acute> <dead_iota> <dead_psili> <Greek_omega> : "ᾤ" U1fa4
-<dead_acute> <dead_horn> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
-<dead_acute> <dead_psili> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <bar> <less> <apostrophe> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <bar> <apostrophe> <less> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <less> <bar> <apostrophe> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <less> <apostrophe> <bar> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <apostrophe> <bar> <less> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <apostrophe> <less> <bar> <Greek_omega> : "á¾¥" U1fa5
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
-<dead_iota> <dead_dasia> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_omega> : "á¾¥" U1fa5
-<dead_iota> <dead_acute> <dead_dasia> <Greek_omega> : "á¾¥" U1fa5
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
-<dead_dasia> <dead_iota> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
-<dead_dasia> <dead_acute> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_omega> : "á¾¥" U1fa5
-<dead_acute> <dead_iota> <dead_dasia> <Greek_omega> : "á¾¥" U1fa5
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
-<dead_acute> <dead_dasia> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <bar> <greater> <asciitilde> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <bar> <asciitilde> <greater> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <greater> <bar> <asciitilde> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <greater> <asciitilde> <bar> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <asciitilde> <bar> <greater> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <asciitilde> <greater> <bar> <Greek_omega> : "ᾦ" U1fa6
-<dead_iota> <dead_horn> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
-<dead_iota> <dead_psili> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
-<dead_iota> <dead_tilde> <dead_horn> <Greek_omega> : "ᾦ" U1fa6
-<dead_iota> <dead_tilde> <dead_psili> <Greek_omega> : "ᾦ" U1fa6
-<dead_horn> <dead_iota> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
-<dead_psili> <dead_iota> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
-<dead_horn> <dead_tilde> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
-<dead_psili> <dead_tilde> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
-<dead_tilde> <dead_iota> <dead_horn> <Greek_omega> : "ᾦ" U1fa6
-<dead_tilde> <dead_iota> <dead_psili> <Greek_omega> : "ᾦ" U1fa6
-<dead_tilde> <dead_horn> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
-<dead_tilde> <dead_psili> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <bar> <less> <asciitilde> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <bar> <asciitilde> <less> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <less> <bar> <asciitilde> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <less> <asciitilde> <bar> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <asciitilde> <bar> <less> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <asciitilde> <less> <bar> <Greek_omega> : "ᾧ" U1fa7
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_omega> : "ᾧ" U1fa7
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_omega> : "ᾧ" U1fa7
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_omega> : "ᾧ" U1fa7
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_omega> : "ᾧ" U1fa7
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <bar> <greater> <Greek_OMEGA> : "ᾨ" U1fa8
-<Multi_key> <greater> <bar> <Greek_OMEGA> : "ᾨ" U1fa8
-<dead_iota> <dead_horn> <Greek_OMEGA> : "ᾨ" U1fa8
-<dead_iota> <dead_psili> <Greek_OMEGA> : "ᾨ" U1fa8
-<dead_horn> <dead_iota> <Greek_OMEGA> : "ᾨ" U1fa8
-<dead_psili> <dead_iota> <Greek_OMEGA> : "ᾨ" U1fa8
-<Multi_key> <bar> <less> <Greek_OMEGA> : "ᾩ" U1fa9
-<Multi_key> <less> <bar> <Greek_OMEGA> : "ᾩ" U1fa9
-<dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾩ" U1fa9
-<dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾩ" U1fa9
-<dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾩ" U1fa9
-<dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾩ" U1fa9
-<Multi_key> <bar> <greater> <grave> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <bar> <grave> <greater> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <greater> <bar> <grave> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <greater> <grave> <bar> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <grave> <bar> <greater> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <grave> <greater> <bar> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_iota> <dead_horn> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_iota> <dead_psili> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_iota> <dead_grave> <dead_horn> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_iota> <dead_grave> <dead_psili> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_horn> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_psili> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_horn> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_psili> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_grave> <dead_iota> <dead_horn> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_grave> <dead_iota> <dead_psili> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_grave> <dead_horn> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_grave> <dead_psili> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <bar> <less> <grave> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <bar> <grave> <less> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <less> <bar> <grave> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <less> <grave> <bar> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <grave> <bar> <less> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <grave> <less> <bar> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_iota> <dead_dasia> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_iota> <dead_grave> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_dasia> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_dasia> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_grave> <dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_grave> <dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <bar> <greater> <apostrophe> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <bar> <apostrophe> <greater> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <greater> <bar> <apostrophe> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <greater> <apostrophe> <bar> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <apostrophe> <bar> <greater> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <apostrophe> <greater> <bar> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_iota> <dead_horn> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_iota> <dead_psili> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_iota> <dead_acute> <dead_horn> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_iota> <dead_acute> <dead_psili> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_horn> <dead_iota> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_psili> <dead_iota> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_horn> <dead_acute> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_psili> <dead_acute> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_acute> <dead_iota> <dead_horn> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_acute> <dead_iota> <dead_psili> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_acute> <dead_horn> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_acute> <dead_psili> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <bar> <less> <apostrophe> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <bar> <apostrophe> <less> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <less> <bar> <apostrophe> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <less> <apostrophe> <bar> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <apostrophe> <bar> <less> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <apostrophe> <less> <bar> <Greek_OMEGA> : "á¾­" U1fad
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
-<dead_iota> <dead_dasia> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_OMEGA> : "á¾­" U1fad
-<dead_iota> <dead_acute> <dead_dasia> <Greek_OMEGA> : "á¾­" U1fad
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
-<dead_dasia> <dead_iota> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
-<dead_dasia> <dead_acute> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "á¾­" U1fad
-<dead_acute> <dead_iota> <dead_dasia> <Greek_OMEGA> : "á¾­" U1fad
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
-<dead_acute> <dead_dasia> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <bar> <greater> <asciitilde> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <bar> <asciitilde> <greater> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <greater> <bar> <asciitilde> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <greater> <asciitilde> <bar> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <asciitilde> <bar> <greater> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <asciitilde> <greater> <bar> <Greek_OMEGA> : "á¾®" U1fae
-<dead_iota> <dead_horn> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
-<dead_iota> <dead_psili> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
-<dead_iota> <dead_tilde> <dead_horn> <Greek_OMEGA> : "á¾®" U1fae
-<dead_iota> <dead_tilde> <dead_psili> <Greek_OMEGA> : "á¾®" U1fae
-<dead_horn> <dead_iota> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
-<dead_psili> <dead_iota> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
-<dead_horn> <dead_tilde> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
-<dead_psili> <dead_tilde> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
-<dead_tilde> <dead_iota> <dead_horn> <Greek_OMEGA> : "á¾®" U1fae
-<dead_tilde> <dead_iota> <dead_psili> <Greek_OMEGA> : "á¾®" U1fae
-<dead_tilde> <dead_horn> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
-<dead_tilde> <dead_psili> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <bar> <less> <asciitilde> <Greek_OMEGA> : "ᾯ" U1faf
-<Multi_key> <bar> <asciitilde> <less> <Greek_OMEGA> : "ᾯ" U1faf
-<Multi_key> <less> <bar> <asciitilde> <Greek_OMEGA> : "ᾯ" U1faf
-<Multi_key> <less> <asciitilde> <bar> <Greek_OMEGA> : "ᾯ" U1faf
-<Multi_key> <asciitilde> <bar> <less> <Greek_OMEGA> : "ᾯ" U1faf
-<Multi_key> <asciitilde> <less> <bar> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_breve> <Greek_alpha> : "á¾°" U1fb0
-<dead_macron> <Greek_alpha> : "á¾±" U1fb1
-<dead_breve> <Greek_ALPHA> : "Ᾰ" U1fb8
-<dead_macron> <Greek_ALPHA> : "á¾¹" U1fb9
-<dead_breve> <Greek_iota> : "á¿" U1fd0
-<dead_macron> <Greek_iota> : "á¿‘" U1fd1
-<dead_breve> <Greek_IOTA> : "Ῐ" U1fd8
-<dead_macron> <Greek_IOTA> : "á¿™" U1fd9
-<dead_breve> <Greek_upsilon> : "á¿ " U1fe0
-<dead_macron> <Greek_upsilon> : "á¿¡" U1fe1
-<dead_breve> <Greek_UPSILON> : "Ῠ" U1fe8
-<dead_macron> <Greek_UPSILON> : "á¿©" U1fe9
-<Multi_key> <grave> <Greek_ALPHA> : "Ὰ" U1fba
-<dead_grave> <Greek_ALPHA> : "Ὰ" U1fba
-<Multi_key> <grave> <Greek_EPSILON> : "Ὲ" U1fc8
-<dead_grave> <Greek_EPSILON> : "Ὲ" U1fc8
-<Multi_key> <grave> <Greek_ETA> : "á¿Š" U1fca
-<dead_grave> <Greek_ETA> : "á¿Š" U1fca
-<Multi_key> <grave> <Greek_IOTA> : "á¿š" U1fda
-<dead_grave> <Greek_IOTA> : "á¿š" U1fda
-<Multi_key> <grave> <Greek_UPSILON> : "Ὺ" U1fea
-<dead_grave> <Greek_UPSILON> : "Ὺ" U1fea
-<Multi_key> <grave> <Greek_OMICRON> : "Ὸ" U1ff8
-<dead_grave> <Greek_OMICRON> : "Ὸ" U1ff8
-<Multi_key> <grave> <Greek_OMEGA> : "Ὼ" U1ffa
-<dead_grave> <Greek_OMEGA> : "Ὼ" U1ffa
-<Multi_key> <bar> <grave> <Greek_alpha> : "á¾²" U1fb2
-<Multi_key> <grave> <bar> <Greek_alpha> : "á¾²" U1fb2
-<dead_iota> <dead_grave> <Greek_alpha> : "á¾²" U1fb2
-<dead_grave> <dead_iota> <Greek_alpha> : "á¾²" U1fb2
-<Multi_key> <bar> <Greek_alpha> : "á¾³" U1fb3
-<dead_iota> <Greek_alpha> : "á¾³" U1fb3
-<Multi_key> <bar> <apostrophe> <Greek_alpha> : "á¾´" U1fb4
-<Multi_key> <apostrophe> <bar> <Greek_alpha> : "á¾´" U1fb4
-<dead_iota> <dead_acute> <Greek_alpha> : "á¾´" U1fb4
-<dead_acute> <dead_iota> <Greek_alpha> : "á¾´" U1fb4
-<Multi_key> <asciitilde> <Greek_alpha> : "ᾶ" U1fb6
-<dead_tilde> <Greek_alpha> : "ᾶ" U1fb6
-<Multi_key> <bar> <asciitilde> <Greek_alpha> : "á¾·" U1fb7
-<Multi_key> <asciitilde> <bar> <Greek_alpha> : "á¾·" U1fb7
-<dead_iota> <dead_tilde> <Greek_alpha> : "á¾·" U1fb7
-<dead_tilde> <dead_iota> <Greek_alpha> : "á¾·" U1fb7
-<Multi_key> <bar> <grave> <Greek_eta> : "á¿‚" U1fc2
-<Multi_key> <grave> <bar> <Greek_eta> : "á¿‚" U1fc2
-<dead_iota> <dead_grave> <Greek_eta> : "á¿‚" U1fc2
-<dead_grave> <dead_iota> <Greek_eta> : "á¿‚" U1fc2
-<Multi_key> <bar> <Greek_eta> : "ῃ" U1fc3
-<dead_iota> <Greek_eta> : "ῃ" U1fc3
-<Multi_key> <bar> <apostrophe> <Greek_eta> : "á¿„" U1fc4
-<Multi_key> <apostrophe> <bar> <Greek_eta> : "á¿„" U1fc4
-<dead_iota> <dead_acute> <Greek_eta> : "á¿„" U1fc4
-<dead_acute> <dead_iota> <Greek_eta> : "á¿„" U1fc4
-<Multi_key> <asciitilde> <Greek_eta> : "ῆ" U1fc6
-<dead_tilde> <Greek_eta> : "ῆ" U1fc6
-<Multi_key> <bar> <asciitilde> <Greek_eta> : "ῇ" U1fc7
-<Multi_key> <asciitilde> <bar> <Greek_eta> : "ῇ" U1fc7
-<dead_iota> <dead_tilde> <Greek_eta> : "ῇ" U1fc7
-<dead_tilde> <dead_iota> <Greek_eta> : "ῇ" U1fc7
-<Multi_key> <quotedbl> <grave> <Greek_iota> : "á¿’" U1fd2
-<Multi_key> <grave> <quotedbl> <Greek_iota> : "á¿’" U1fd2
-<dead_diaeresis> <dead_grave> <Greek_iota> : "á¿’" U1fd2
-<dead_grave> <dead_diaeresis> <Greek_iota> : "á¿’" U1fd2
-<Multi_key> <asciitilde> <Greek_iota> : "á¿–" U1fd6
-<dead_tilde> <Greek_iota> : "á¿–" U1fd6
-<Multi_key> <quotedbl> <asciitilde> <Greek_iota> : "á¿—" U1fd7
-<Multi_key> <asciitilde> <quotedbl> <Greek_iota> : "á¿—" U1fd7
-<dead_diaeresis> <dead_tilde> <Greek_iota> : "á¿—" U1fd7
-<dead_tilde> <dead_diaeresis> <Greek_iota> : "á¿—" U1fd7
-<Multi_key> <quotedbl> <grave> <Greek_upsilon> : "á¿¢" U1fe2
-<Multi_key> <grave> <quotedbl> <Greek_upsilon> : "á¿¢" U1fe2
-<dead_diaeresis> <dead_grave> <Greek_upsilon> : "á¿¢" U1fe2
-<dead_grave> <dead_diaeresis> <Greek_upsilon> : "á¿¢" U1fe2
-<Multi_key> <asciitilde> <Greek_upsilon> : "ῦ" U1fe6
-<dead_tilde> <Greek_upsilon> : "ῦ" U1fe6
-<Multi_key> <quotedbl> <asciitilde> <Greek_upsilon> : "ῧ" U1fe7
-<Multi_key> <asciitilde> <quotedbl> <Greek_upsilon> : "ῧ" U1fe7
-<dead_diaeresis> <dead_tilde> <Greek_upsilon> : "ῧ" U1fe7
-<dead_tilde> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1fe7
-<Multi_key> <bar> <grave> <Greek_omega> : "ῲ" U1ff2
-<Multi_key> <grave> <bar> <Greek_omega> : "ῲ" U1ff2
-<dead_iota> <dead_grave> <Greek_omega> : "ῲ" U1ff2
-<dead_grave> <dead_iota> <Greek_omega> : "ῲ" U1ff2
-<Multi_key> <bar> <Greek_omega> : "ῳ" U1ff3
-<dead_iota> <Greek_omega> : "ῳ" U1ff3
-<Multi_key> <bar> <apostrophe> <Greek_omega> : "á¿´" U1ff4
-<Multi_key> <apostrophe> <bar> <Greek_omega> : "á¿´" U1ff4
-<dead_iota> <dead_acute> <Greek_omega> : "á¿´" U1ff4
-<dead_acute> <dead_iota> <Greek_omega> : "á¿´" U1ff4
-<Multi_key> <asciitilde> <Greek_omega> : "ῶ" U1ff6
-<dead_tilde> <Greek_omega> : "ῶ" U1ff6
-<Multi_key> <bar> <asciitilde> <Greek_omega> : "á¿·" U1ff7
-<Multi_key> <asciitilde> <bar> <Greek_omega> : "á¿·" U1ff7
-<dead_iota> <dead_tilde> <Greek_omega> : "á¿·" U1ff7
-<dead_tilde> <dead_iota> <Greek_omega> : "á¿·" U1ff7
-<Multi_key> <bar> <Greek_ALPHA> : "á¾¼" U1fbc
-<dead_iota> <Greek_ALPHA> : "á¾¼" U1fbc
-<Multi_key> <bar> <Greek_ETA> : "ῌ" U1fcc
-<dead_iota> <Greek_ETA> : "ῌ" U1fcc
-<Multi_key> <bar> <Greek_OMEGA> : "ῼ" U1ffc
-<dead_iota> <Greek_OMEGA> : "ῼ" U1ffc
-<Multi_key> <greater> <Greek_rho> : "ῤ" U1fe4
-<dead_horn> <Greek_rho> : "ῤ" U1fe4
-<dead_psili> <Greek_rho> : "ῤ" U1fe4
-<Multi_key> <less> <Greek_rho> : "á¿¥" U1fe5
-<dead_ogonek> <Greek_rho> : "á¿¥" U1fe5
-<dead_dasia> <Greek_rho> : "á¿¥" U1fe5
-<Multi_key> <less> <Greek_RHO> : "Ῥ" U1fec
-<dead_ogonek> <Greek_RHO> : "Ῥ" U1fec
-<dead_dasia> <Greek_RHO> : "Ῥ" U1fec
-<dead_horn> <dead_grave> <space> : "á¿" U1fcd
-<dead_psili> <dead_grave> <space> : "á¿" U1fcd
-<dead_grave> <dead_horn> <space> : "á¿" U1fcd
-<dead_grave> <dead_psili> <space> : "á¿" U1fcd
-<dead_horn> <dead_acute> <space> : "á¿Ž" U1fce
-<dead_psili> <dead_acute> <space> : "á¿Ž" U1fce
-<dead_acute> <dead_horn> <space> : "á¿Ž" U1fce
-<dead_acute> <dead_psili> <space> : "á¿Ž" U1fce
-<dead_horn> <dead_tilde> <space> : "á¿" U1fcf
-<dead_psili> <dead_tilde> <space> : "á¿" U1fcf
-<dead_tilde> <dead_horn> <space> : "á¿" U1fcf
-<dead_tilde> <dead_psili> <space> : "á¿" U1fcf
-<dead_ogonek> <dead_grave> <space> : "á¿" U1fdd
-<dead_dasia> <dead_grave> <space> : "á¿" U1fdd
-<dead_grave> <dead_ogonek> <space> : "á¿" U1fdd
-<dead_grave> <dead_dasia> <space> : "á¿" U1fdd
-<dead_ogonek> <dead_acute> <space> : "á¿ž" U1fde
-<dead_dasia> <dead_acute> <space> : "á¿ž" U1fde
-<dead_acute> <dead_ogonek> <space> : "á¿ž" U1fde
-<dead_acute> <dead_dasia> <space> : "á¿ž" U1fde
-<dead_ogonek> <dead_tilde> <space> : "á¿Ÿ" U1fdf
-<dead_dasia> <dead_tilde> <space> : "á¿Ÿ" U1fdf
-<dead_tilde> <dead_ogonek> <space> : "á¿Ÿ" U1fdf
-<dead_tilde> <dead_dasia> <space> : "á¿Ÿ" U1fdf
-<dead_diaeresis> <dead_grave> <space> : "á¿­" U1fed
-<dead_grave> <dead_diaeresis> <space> : "á¿­" U1fed
-<dead_diaeresis> <dead_tilde> <space> : "á¿" U1fc1
-<dead_tilde> <dead_diaeresis> <space> : "á¿" U1fc1
-<dead_horn> <space> : "᾿" U1fbf
-<dead_psili> <space> : "᾿" U1fbf
-<dead_horn> <dead_horn> : "᾿" U1fbf
-<dead_psili> <dead_horn> : "᾿" U1fbf
-<dead_ogonek> <space> : "῾" U1ffe
-<dead_dasia> <space> : "῾" U1ffe
-<dead_ogonek> <dead_ogonek> : "῾" U1ffe
-<dead_dasia> <dead_ogonek> : "῾" U1ffe
-<dead_grave> <space> : "`" U1fef
-<dead_grave> <dead_grave> : "`" U1fef
-<dead_tilde> <space> : "á¿€" U1fc0
-<dead_tilde> <dead_tilde> : "á¿€" U1fc0
-<dead_horn> <underscore> : "á¾½" U1fbd
-<dead_psili> <underscore> : "á¾½" U1fbd
-<dead_iota> <underscore> : "á¾¾" U1fbe
-<dead_iota> <space> : "ͺ" U037a
-<dead_iota> <dead_iota> : "ͺ" U037a
-
-XCOMM Part 3
-XCOMM
-XCOMM ISO 8859-7 (Greek) multi-key and dead key definitions extracted and
-XCOMM converted from the iso8859-7/Compose file.
-
-<Multi_key> <Greek_ALPHA> <apostrophe> : "Ά" Greek_ALPHAaccent
-<Multi_key> <apostrophe> <Greek_ALPHA> : "Ά" Greek_ALPHAaccent
-<Multi_key> <Greek_EPSILON> <apostrophe>: "Έ" Greek_EPSILONaccent
-<Multi_key> <apostrophe> <Greek_EPSILON>: "Έ" Greek_EPSILONaccent
-<Multi_key> <Greek_ETA> <apostrophe> : "Ή" Greek_ETAaccent
-<Multi_key> <apostrophe> <Greek_ETA> : "Ή" Greek_ETAaccent
-<Multi_key> <Greek_IOTA> <apostrophe> : "Ί" Greek_IOTAaccent
-<Multi_key> <apostrophe> <Greek_IOTA> : "Ί" Greek_IOTAaccent
-<Multi_key> <Greek_OMICRON> <apostrophe>: "Ό" Greek_OMICRONaccent
-<Multi_key> <apostrophe> <Greek_OMICRON>: "Ό" Greek_OMICRONaccent
-<Multi_key> <Greek_UPSILON> <apostrophe>: "ÎŽ" Greek_UPSILONaccent
-<Multi_key> <apostrophe> <Greek_UPSILON>: "ÎŽ" Greek_UPSILONaccent
-<Multi_key> <Greek_OMEGA> <apostrophe> : "Î" Greek_OMEGAaccent
-<Multi_key> <apostrophe> <Greek_OMEGA> : "Î" Greek_OMEGAaccent
-<Multi_key> <Greek_IOTA> <quotedbl> : "Ϊ" Greek_IOTAdieresis
-<Multi_key> <quotedbl> <Greek_IOTA> : "Ϊ" Greek_IOTAdieresis
-<Multi_key> <Greek_UPSILON> <quotedbl> : "Ϋ" Greek_UPSILONdieresis
-<Multi_key> <quotedbl> <Greek_UPSILON> : "Ϋ" Greek_UPSILONdieresis
-
-<Multi_key> <Greek_alpha> <apostrophe> : "ά" Greek_alphaaccent
-<Multi_key> <apostrophe> <Greek_alpha> : "ά" Greek_alphaaccent
-<Multi_key> <Greek_epsilon> <apostrophe>: "έ" Greek_epsilonaccent
-<Multi_key> <apostrophe> <Greek_epsilon>: "έ" Greek_epsilonaccent
-<Multi_key> <Greek_eta> <apostrophe> : "ή" Greek_etaaccent
-<Multi_key> <apostrophe> <Greek_eta> : "ή" Greek_etaaccent
-<Multi_key> <Greek_iota> <apostrophe> : "ί" Greek_iotaaccent
-<Multi_key> <apostrophe> <Greek_iota> : "ί" Greek_iotaaccent
-<Multi_key> <Greek_omicron> <apostrophe>: "ό" Greek_omicronaccent
-<Multi_key> <apostrophe> <Greek_omicron>: "ό" Greek_omicronaccent
-<Multi_key> <Greek_upsilon> <apostrophe>: "Ï" Greek_upsilonaccent
-<Multi_key> <apostrophe> <Greek_upsilon>: "Ï" Greek_upsilonaccent
-<Multi_key> <Greek_omega> <apostrophe> : "ÏŽ" Greek_omegaaccent
-<Multi_key> <apostrophe> <Greek_omega> : "ÏŽ" Greek_omegaaccent
-<Multi_key> <Greek_iota> <quotedbl> : "ÏŠ" Greek_iotadieresis
-<Multi_key> <quotedbl> <Greek_iota> : "ÏŠ" Greek_iotadieresis
-<Multi_key> <Greek_upsilon> <quotedbl> : "Ï‹" Greek_upsilondieresis
-<Multi_key> <quotedbl> <Greek_upsilon> : "Ï‹" Greek_upsilondieresis
-
-<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "Î" Greek_iotaaccentdieresis
-<Multi_key> <quotedbl> <apostrophe> <Greek_iota> : "Î" Greek_iotaaccentdieresis
-<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
-<Multi_key> <quotedbl> <apostrophe> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
-<Multi_key> <apostrophe> <quotedbl> <space> : "Î…" Greek_accentdieresis
-<Multi_key> <quotedbl> <apostrophe> <space> : "Î…" Greek_accentdieresis
-
-<dead_acute> <Greek_alpha> : "ά" Greek_alphaaccent
-<dead_acute> <Greek_epsilon> : "έ" Greek_epsilonaccent
-<dead_acute> <Greek_eta> : "ή" Greek_etaaccent
-<dead_acute> <Greek_iota> : "ί" Greek_iotaaccent
-<dead_acute> <Greek_omicron> : "ό" Greek_omicronaccent
-<dead_acute> <Greek_upsilon> : "Ï" Greek_upsilonaccent
-<dead_acute> <Greek_omega> : "ÏŽ" Greek_omegaaccent
-<dead_acute> <Greek_ALPHA> : "Ά" Greek_ALPHAaccent
-<dead_acute> <Greek_EPSILON> : "Έ" Greek_EPSILONaccent
-<dead_acute> <Greek_ETA> : "Ή" Greek_ETAaccent
-<dead_acute> <Greek_IOTA> : "Ί" Greek_IOTAaccent
-<dead_acute> <Greek_OMICRON> : "Ό" Greek_OMICRONaccent
-<dead_acute> <Greek_UPSILON> : "ÎŽ" Greek_UPSILONaccent
-<dead_acute> <Greek_OMEGA> : "Î" Greek_OMEGAaccent
-<dead_acute> <space> : "΄" U0384
-<dead_acute> <dead_acute> : "΄" U0384
-<dead_acute> <period> : "·" periodcentered
-<dead_acute> <less> : "«" guillemotleft
-<dead_acute> <greater> : "»" guillemotright
-
-<dead_diaeresis> <Greek_iota> : "ÏŠ" Greek_iotadieresis
-<dead_diaeresis> <Greek_upsilon> : "Ï‹" Greek_upsilondieresis
-<dead_diaeresis> <Greek_IOTA> : "Ϊ" Greek_IOTAdieresis
-<dead_diaeresis> <Greek_UPSILON> : "Ϋ" Greek_UPSILONdieresis
-<dead_diaeresis> <space> : "¨" diaeresis
-<dead_diaeresis> <dead_diaeresis> : "¨" diaeresis
-<dead_diaeresis> <period> : "·" periodcentered
-<dead_diaeresis> <less> : "«" guillemotleft
-<dead_diaeresis> <greater> : "»" guillemotright
-
-<dead_acute> <dead_diaeresis> <Greek_iota> : "Î" Greek_iotaaccentdieresis
-<dead_acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
-<dead_acute> <dead_diaeresis> <space> : "Î…" Greek_accentdieresis
-
-<dead_diaeresis> <dead_acute> <Greek_iota> : "Î" Greek_iotaaccentdieresis
-<dead_diaeresis> <dead_acute> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
-<dead_diaeresis> <dead_acute> <space> : "Î…" Greek_accentdieresis
-
-XCOMM Part 4
-XCOMM
-XCOMM Miscellaneous extensions.
-
-<dead_macron> <space> : "¯" macron
-<dead_macron> <dead_macron> : "¯" macron
-<dead_breve> <space> : "˘" breve
-<dead_breve> <dead_breve> : "˘" breve
-
-<dead_grave> <underscore> : "`" grave
-<dead_acute> <underscore> : "´" acute
-<dead_tilde> <underscore> : "~" asciitilde
-
-<Multi_key> <less> <apostrophe> <space> : "‘" leftsinglequotemark
-<Multi_key> <apostrophe> <less> <space> : "‘" leftsinglequotemark
-<Multi_key> <greater> <apostrophe> <space> : "’" rightsinglequotemark
-<Multi_key> <apostrophe> <greater> <space> : "’" rightsinglequotemark
-<Multi_key> <asciitilde> <asciitilde> : "―" Greek_horizbar
-<Multi_key> <asciicircum> <asciicircum> : "˘" breve
-
-<Multi_key> <slash> <slash> : "Í´" U0374
-<Multi_key> <backslash> <backslash> : "͵" U0375
-<Multi_key> <semicolon> <semicolon> : ";" U037e
-<Multi_key> <colon> <colon> : "·" U0387
-
-<Multi_key> <C> <equal> : "€" EuroSign
-<Multi_key> <equal> <C> : "€" EuroSign
-<Multi_key> <c> <equal> : "€" EuroSign
-<Multi_key> <equal> <c> : "€" EuroSign
-<Multi_key> <E> <equal> : "€" EuroSign
-<Multi_key> <equal> <E> : "€" EuroSign
-<Multi_key> <e> <equal> : "€" EuroSign
-<Multi_key> <equal> <e> : "€" EuroSign
-<Multi_key> <Greek_EPSILON> <equal> : "€" EuroSign
-<Multi_key> <equal> <Greek_EPSILON> : "€" EuroSign
-<Multi_key> <Greek_epsilon> <equal> : "€" EuroSign
-<Multi_key> <equal> <Greek_epsilon> : "€" EuroSign
-
-<Multi_key> <Greek_DELTA> <Greek_RHO> : "₯" U20af
-<Multi_key> <Greek_DELTA> <Greek_rho> : "₯" U20af
-<Multi_key> <Greek_delta> <Greek_RHO> : "₯" U20af
-<Multi_key> <Greek_delta> <Greek_rho> : "₯" U20af
-
-<Multi_key> <question> <exclam> : "‽" U203D # INTERROBANG
-<Multi_key> <exclam> <question> : "‽" U203D # INTERROBANG
-
-<Multi_key> <1> <3> : "â…“" U2153 # VULGAR FRACTION ONE THIRD
-<Multi_key> <2> <3> : "â…”" U2154 # VULGAR FRACTION TWO THIRDS
-<Multi_key> <1> <5> : "â…•" U2155 # VULGAR FRACTION ONE FIFTH
-<Multi_key> <2> <5> : "â…–" U2156 # VULGAR FRACTION TWO FIFTHS
-<Multi_key> <3> <5> : "â…—" U2157 # VULGAR FRACTION THREE FIFTHS
-<Multi_key> <4> <5> : "â…˜" U2158 # VULGAR FRACTION FOUR FIFTHS
-<Multi_key> <1> <6> : "â…™" U2159 # VULGAR FRACTION ONE SIXTH
-<Multi_key> <5> <6> : "â…š" U215A # VULGAR FRACTION FIVE SIXTHS
-<Multi_key> <1> <8> : "â…›" U215B # VULGAR FRACTION ONE EIGHTH
-<Multi_key> <3> <8> : "⅜" U215C # VULGAR FRACTION THREE EIGHTHS
-<Multi_key> <5> <8> : "â…" U215D # VULGAR FRACTION FIVE EIGHTHS
-<Multi_key> <7> <8> : "â…ž" U215E # VULGAR FRACTION SEVEN EIGHTHS
-
-XCOMM
-XCOMM Khmer digraphs
-XCOMM
-
-<U17ff> : "ាំ"
-<U17fe> : "ោះ"
-<U17fd> : "áŸáŸ‡"
-<U17fc> : "ុំ"
-<U17fb> : "ុះ"
-
-XCOMM End
+XCOMM
+XCOMM
+XCOMM UTF-8 compose sequence definitions for the greek keyboard layout.
+XCOMM
+XCOMM This file is mostly meant to be used along with the xkb/symbols/el
+XCOMM symbols definition file. In addition, the dead key definitions in
+XCOMM the machine generated part are really only relevant to the
+XCOMM "polytonic" variant in that file.
+XCOMM
+XCOMM The definitions herein cover the following ISO 10646 / Unicode
+XCOMM ranges:
+XCOMM - Basic Latin (0000-007F) (complete coverage)
+XCOMM - Latin-1 Supplement (0080-00FF) (complete coverage)
+XCOMM - Greek and Coptic (0370-03FF) (only the big ISO 8859-7 based
+XCOMM part at the beginning)
+XCOMM - Greek Extended (1F00-1FFF) (complete coverage)
+XCOMM - There are also six (6) characters from other ranges.
+XCOMM Moreover, the following character sets are completely covered:
+XCOMM - ISO 8859-1
+XCOMM - ISO 8859-7
+XCOMM
+XCOMM This file consists of four parts. Two of them have been adapted from
+XCOMM the iso8859-1/Compose and iso8859-7/Compose files. The other two
+XCOMM parts have been created by:
+XCOMM Vasilis Vasaitis <vvas@hal.csd.auth.gr>
+XCOMM based on the idea and initial implementation by:
+XCOMM Alejandros Diamandidis <adia@egnatia.ee.auth.gr>
+
+XCOMM Part 1
+XCOMM
+XCOMM ISO 8859-1 (Latin-1) multi-key definitions extracted and converted
+XCOMM from the iso8859-1/Compose file.
+
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "¡" exclamdown
+<Multi_key> <c> <slash> : "¢" cent
+<Multi_key> <slash> <c> : "¢" cent
+<Multi_key> <C> <slash> : "¢" cent
+<Multi_key> <slash> <C> : "¢" cent
+<Multi_key> <C> <bar> : "¢" cent
+<Multi_key> <bar> <C> : "¢" cent
+<Multi_key> <c> <bar> : "¢" cent
+<Multi_key> <bar> <c> : "¢" cent
+<Multi_key> <l> <minus> : "£" sterling
+<Multi_key> <minus> <l> : "£" sterling
+<Multi_key> <L> <minus> : "£" sterling
+<Multi_key> <minus> <L> : "£" sterling
+<Multi_key> <l> <equal> : "£" sterling
+<Multi_key> <equal> <l> : "£" sterling
+<Multi_key> <L> <equal> : "£" sterling
+<Multi_key> <equal> <L> : "£" sterling
+<Multi_key> <y> <minus> : "Â¥" yen
+<Multi_key> <minus> <y> : "Â¥" yen
+<Multi_key> <Y> <minus> : "Â¥" yen
+<Multi_key> <minus> <Y> : "Â¥" yen
+<Multi_key> <y> <equal> : "Â¥" yen
+<Multi_key> <equal> <y> : "Â¥" yen
+<Multi_key> <Y> <equal> : "Â¥" yen
+<Multi_key> <equal> <Y> : "Â¥" yen
+<Multi_key> <s> <o> : "§" section
+<Multi_key> <o> <s> : "§" section
+<Multi_key> <S> <O> : "§" section
+<Multi_key> <O> <S> : "§" section
+<Multi_key> <S> <exclam> : "§" section
+<Multi_key> <exclam> <S> : "§" section
+<Multi_key> <s> <exclam> : "§" section
+<Multi_key> <exclam> <s> : "§" section
+<Multi_key> <S> <0> : "§" section
+<Multi_key> <0> <S> : "§" section
+<Multi_key> <s> <0> : "§" section
+<Multi_key> <0> <s> : "§" section
+<Multi_key> <x> <o> : "¤" currency
+<Multi_key> <o> <x> : "¤" currency
+<Multi_key> <X> <O> : "¤" currency
+<Multi_key> <O> <X> : "¤" currency
+<Multi_key> <x> <O> : "¤" currency
+<Multi_key> <O> <x> : "¤" currency
+<Multi_key> <X> <o> : "¤" currency
+<Multi_key> <o> <X> : "¤" currency
+<Multi_key> <x> <0> : "¤" currency
+<Multi_key> <0> <x> : "¤" currency
+<Multi_key> <X> <0> : "¤" currency
+<Multi_key> <0> <X> : "¤" currency
+<Multi_key> <c> <o> : "©" copyright
+<Multi_key> <o> <c> : "©" copyright
+<Multi_key> <C> <O> : "©" copyright
+<Multi_key> <O> <C> : "©" copyright
+<Multi_key> <c> <O> : "©" copyright
+<Multi_key> <O> <c> : "©" copyright
+<Multi_key> <C> <o> : "©" copyright
+<Multi_key> <o> <C> : "©" copyright
+<Multi_key> <c> <0> : "©" copyright
+<Multi_key> <0> <c> : "©" copyright
+<Multi_key> <C> <0> : "©" copyright
+<Multi_key> <0> <C> : "©" copyright
+<Multi_key> <parenleft> <c> : "©" copyright
+<Multi_key> <a> <underscore> : "ª" ordfeminine
+<Multi_key> <underscore> <a> : "ª" ordfeminine
+<Multi_key> <A> <underscore> : "ª" ordfeminine
+<Multi_key> <underscore> <A> : "ª" ordfeminine
+<Multi_key> <o> <underscore> : "º" masculine
+<Multi_key> <underscore> <o> : "º" masculine
+<Multi_key> <O> <underscore> : "º" masculine
+<Multi_key> <underscore> <O> : "º" masculine
+<Multi_key> <less> <less> : "«" guillemotleft
+<Multi_key> <greater> <greater> : "»" guillemotright
+<Multi_key> <0> <asciicircum> : "°" degree
+<Multi_key> <asciicircum> <0> : "°" degree
+<Multi_key> <0> <asterisk> : "°" degree
+<Multi_key> <asterisk> <0> : "°" degree
+<Multi_key> <plus> <minus> : "±" plusminus
+<Multi_key> <minus> <plus> : "±" plusminus
+<Multi_key> <slash> <u> : "µ" mu
+<Multi_key> <u> <slash> : "µ" mu
+<Multi_key> <slash> <U> : "µ" mu
+<Multi_key> <U> <slash> : "µ" mu
+<Multi_key> <1> <asciicircum> : "¹" onesuperior
+<Multi_key> <asciicircum> <1> : "¹" onesuperior
+<Multi_key> <S> <1> : "¹" onesuperior
+<Multi_key> <1> <S> : "¹" onesuperior
+<Multi_key> <s> <1> : "¹" onesuperior
+<Multi_key> <1> <s> : "¹" onesuperior
+<Multi_key> <2> <asciicircum> : "²" twosuperior
+<Multi_key> <asciicircum> <2> : "²" twosuperior
+<Multi_key> <S> <2> : "²" twosuperior
+<Multi_key> <2> <S> : "²" twosuperior
+<Multi_key> <s> <2> : "²" twosuperior
+<Multi_key> <2> <s> : "²" twosuperior
+<Multi_key> <3> <asciicircum> : "³" threesuperior
+<Multi_key> <asciicircum> <3> : "³" threesuperior
+<Multi_key> <S> <3> : "³" threesuperior
+<Multi_key> <3> <S> : "³" threesuperior
+<Multi_key> <s> <3> : "³" threesuperior
+<Multi_key> <3> <s> : "³" threesuperior
+<Multi_key> <p> <exclam> : "¶" paragraph
+<Multi_key> <exclam> <p> : "¶" paragraph
+<Multi_key> <P> <exclam> : "¶" paragraph
+<Multi_key> <exclam> <P> : "¶" paragraph
+<Multi_key> <period> <asciicircum> : "·" periodcentered
+<Multi_key> <asciicircum> <period> : "·" periodcentered
+<Multi_key> <period> <minus> : "·" periodcentered
+<Multi_key> <period> <equal> : "•" enfilledcircbullet
+<Multi_key> <period> <period> : "…" ellipsis
+<Multi_key> <1> <4> : "¼" onequarter
+<Multi_key> <1> <2> : "½" onehalf
+<Multi_key> <3> <4> : "¾" threequarters
+<Multi_key> <question> <question> : "¿" questiondown
+<Multi_key> <space> <space> : " " nobreakspace
+<Multi_key> <bar> <bar> : "¦" brokenbar
+<Multi_key> <exclam> <asciicircum> : "¦" brokenbar
+<Multi_key> <asciicircum> <exclam> : "¦" brokenbar
+<Multi_key> <V> <B> : "¦" brokenbar
+<Multi_key> <B> <V> : "¦" brokenbar
+<Multi_key> <v> <b> : "¦" brokenbar
+<Multi_key> <b> <v> : "¦" brokenbar
+<Multi_key> <minus> <comma> : "¬" notsign
+<Multi_key> <comma> <minus> : "¬" notsign
+<Multi_key> <minus> <minus> : "­" hyphen
+<Multi_key> <R> <O> : "®" registered
+<Multi_key> <O> <R> : "®" registered
+<Multi_key> <parenleft> <r> : "®" registered
+<Multi_key> <minus> <asciicircum> : "¯" macron
+<Multi_key> <asciicircum> <minus> : "¯" macron
+<Multi_key> <underscore> <asciicircum> : "¯" macron
+<Multi_key> <asciicircum> <underscore> : "¯" macron
+<Multi_key> <underscore> <underscore> : "¯" macron
+<Multi_key> <minus> <colon> : "÷" division
+<Multi_key> <colon> <minus> : "÷" division
+<Multi_key> <x> <x> : "×" multiply
+<Multi_key> <apostrophe> <apostrophe> : "´" acute
+<Multi_key> <comma> <comma> : "¸" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "¨" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "À" Agrave
+<Multi_key> <grave> <A> : "À" Agrave
+<Multi_key> <A> <acute> : "Ã" Aacute
+<Multi_key> <acute> <A> : "Ã" Aacute
+<Multi_key> <A> <apostrophe> : "Ã" Aacute
+<Multi_key> <apostrophe> <A> : "Ã" Aacute
+<Multi_key> <A> <asciicircum> : "Â" Acircumflex
+<Multi_key> <asciicircum> <A> : "Â" Acircumflex
+<Multi_key> <A> <greater> : "Â" Acircumflex
+<Multi_key> <greater> <A> : "Â" Acircumflex
+<Multi_key> <A> <asciitilde> : "Ã" Atilde
+<Multi_key> <asciitilde> <A> : "Ã" Atilde
+<Multi_key> <A> <minus> : "Ã" Atilde
+<Multi_key> <minus> <A> : "Ã" Atilde
+<Multi_key> <A> <quotedbl> : "Ä" Adiaeresis
+<Multi_key> <quotedbl> <A> : "Ä" Adiaeresis
+<Multi_key> <A> <diaeresis> : "Ä" Adiaeresis
+<Multi_key> <diaeresis> <A> : "Ä" Adiaeresis
+<Multi_key> <A> <asterisk> : "Ã…" Aring
+<Multi_key> <asterisk> <A> : "Ã…" Aring
+<Multi_key> <A> <A> : "Ã…" Aring
+<Multi_key> <A> <O> : "Ã…" Aring
+<Multi_key> <A> <E> : "Æ" AE
+<Multi_key> <a> <grave> : "à" agrave
+<Multi_key> <grave> <a> : "à" agrave
+<Multi_key> <a> <acute> : "á" aacute
+<Multi_key> <acute> <a> : "á" aacute
+<Multi_key> <a> <apostrophe> : "á" aacute
+<Multi_key> <apostrophe> <a> : "á" aacute
+<Multi_key> <a> <asciicircum> : "â" acircumflex
+<Multi_key> <asciicircum> <a> : "â" acircumflex
+<Multi_key> <a> <greater> : "â" acircumflex
+<Multi_key> <greater> <a> : "â" acircumflex
+<Multi_key> <a> <asciitilde> : "ã" atilde
+<Multi_key> <asciitilde> <a> : "ã" atilde
+<Multi_key> <a> <minus> : "ã" atilde
+<Multi_key> <minus> <a> : "ã" atilde
+<Multi_key> <a> <quotedbl> : "ä" adiaeresis
+<Multi_key> <quotedbl> <a> : "ä" adiaeresis
+<Multi_key> <a> <diaeresis> : "ä" adiaeresis
+<Multi_key> <diaeresis> <a> : "ä" adiaeresis
+<Multi_key> <a> <asterisk> : "Ã¥" aring
+<Multi_key> <asterisk> <a> : "Ã¥" aring
+<Multi_key> <a> <a> : "Ã¥" aring
+<Multi_key> <a> <o> : "Ã¥" aring
+<Multi_key> <a> <e> : "æ" ae
+<Multi_key> <acute> <C> : "Ç" Ccedilla
+<Multi_key> <acute> <c> : "ç" ccedilla
+<Multi_key> <C> <comma> : "Ç" Ccedilla
+<Multi_key> <C> <cedilla> : "Ç" Ccedilla
+<Multi_key> <comma> <C> : "Ç" Ccedilla
+<Multi_key> <cedilla> <C> : "Ç" Ccedilla
+<Multi_key> <c> <comma> : "ç" ccedilla
+<Multi_key> <c> <cedilla> : "ç" ccedilla
+<Multi_key> <comma> <c> : "ç" ccedilla
+<Multi_key> <cedilla> <c> : "ç" ccedilla
+<Multi_key> <minus> <D> : "Ã" ETH
+<Multi_key> <D> <minus> : "Ã" ETH
+<Multi_key> <minus> <d> : "ð" eth
+<Multi_key> <d> <minus> : "ð" eth
+<Multi_key> <E> <grave> : "È" Egrave
+<Multi_key> <grave> <E> : "È" Egrave
+<Multi_key> <E> <acute> : "É" Eacute
+<Multi_key> <acute> <E> : "É" Eacute
+<Multi_key> <E> <apostrophe> : "É" Eacute
+<Multi_key> <apostrophe> <E> : "É" Eacute
+<Multi_key> <E> <asciicircum> : "Ê" Ecircumflex
+<Multi_key> <asciicircum> <E> : "Ê" Ecircumflex
+<Multi_key> <E> <greater> : "Ê" Ecircumflex
+<Multi_key> <greater> <E> : "Ê" Ecircumflex
+<Multi_key> <E> <quotedbl> : "Ë" Ediaeresis
+<Multi_key> <quotedbl> <E> : "Ë" Ediaeresis
+<Multi_key> <E> <diaeresis> : "Ë" Ediaeresis
+<Multi_key> <diaeresis> <E> : "Ë" Ediaeresis
+<Multi_key> <e> <grave> : "è" egrave
+<Multi_key> <grave> <e> : "è" egrave
+<Multi_key> <e> <acute> : "é" eacute
+<Multi_key> <acute> <e> : "é" eacute
+<Multi_key> <e> <apostrophe> : "é" eacute
+<Multi_key> <apostrophe> <e> : "é" eacute
+<Multi_key> <e> <asciicircum> : "ê" ecircumflex
+<Multi_key> <asciicircum> <e> : "ê" ecircumflex
+<Multi_key> <e> <greater> : "ê" ecircumflex
+<Multi_key> <greater> <e> : "ê" ecircumflex
+<Multi_key> <e> <quotedbl> : "ë" ediaeresis
+<Multi_key> <quotedbl> <e> : "ë" ediaeresis
+<Multi_key> <e> <diaeresis> : "ë" ediaeresis
+<Multi_key> <diaeresis> <e> : "ë" ediaeresis
+<Multi_key> <I> <grave> : "Ì" Igrave
+<Multi_key> <grave> <I> : "Ì" Igrave
+<Multi_key> <I> <acute> : "Ã" Iacute
+<Multi_key> <acute> <I> : "Ã" Iacute
+<Multi_key> <I> <apostrophe> : "Ã" Iacute
+<Multi_key> <apostrophe> <I> : "Ã" Iacute
+<Multi_key> <I> <asciicircum> : "ÃŽ" Icircumflex
+<Multi_key> <asciicircum> <I> : "ÃŽ" Icircumflex
+<Multi_key> <I> <greater> : "ÃŽ" Icircumflex
+<Multi_key> <greater> <I> : "ÃŽ" Icircumflex
+<Multi_key> <I> <quotedbl> : "Ã" Idiaeresis
+<Multi_key> <quotedbl> <I> : "Ã" Idiaeresis
+<Multi_key> <I> <diaeresis> : "Ã" Idiaeresis
+<Multi_key> <diaeresis> <I> : "Ã" Idiaeresis
+<Multi_key> <i> <grave> : "ì" igrave
+<Multi_key> <grave> <i> : "ì" igrave
+<Multi_key> <i> <acute> : "í" iacute
+<Multi_key> <acute> <i> : "í" iacute
+<Multi_key> <i> <apostrophe> : "í" iacute
+<Multi_key> <apostrophe> <i> : "í" iacute
+<Multi_key> <i> <asciicircum> : "î" icircumflex
+<Multi_key> <asciicircum> <i> : "î" icircumflex
+<Multi_key> <i> <greater> : "î" icircumflex
+<Multi_key> <greater> <i> : "î" icircumflex
+<Multi_key> <i> <quotedbl> : "ï" idiaeresis
+<Multi_key> <quotedbl> <i> : "ï" idiaeresis
+<Multi_key> <i> <diaeresis> : "ï" idiaeresis
+<Multi_key> <diaeresis> <i> : "ï" idiaeresis
+<Multi_key> <N> <asciitilde> : "Ñ" Ntilde
+<Multi_key> <asciitilde> <N> : "Ñ" Ntilde
+<Multi_key> <N> <minus> : "Ñ" Ntilde
+<Multi_key> <minus> <N> : "Ñ" Ntilde
+<Multi_key> <n> <asciitilde> : "ñ" ntilde
+<Multi_key> <asciitilde> <n> : "ñ" ntilde
+<Multi_key> <n> <minus> : "ñ" ntilde
+<Multi_key> <minus> <n> : "ñ" ntilde
+<Multi_key> <O> <grave> : "Ã’" Ograve
+<Multi_key> <grave> <O> : "Ã’" Ograve
+<Multi_key> <O> <acute> : "Ó" Oacute
+<Multi_key> <acute> <O> : "Ó" Oacute
+<Multi_key> <O> <apostrophe> : "Ó" Oacute
+<Multi_key> <apostrophe> <O> : "Ó" Oacute
+<Multi_key> <O> <asciicircum> : "Ô" Ocircumflex
+<Multi_key> <asciicircum> <O> : "Ô" Ocircumflex
+<Multi_key> <O> <greater> : "Ô" Ocircumflex
+<Multi_key> <greater> <O> : "Ô" Ocircumflex
+<Multi_key> <O> <asciitilde> : "Õ" Otilde
+<Multi_key> <asciitilde> <O> : "Õ" Otilde
+<Multi_key> <O> <minus> : "Õ" Otilde
+<Multi_key> <minus> <O> : "Õ" Otilde
+<Multi_key> <O> <quotedbl> : "Ö" Odiaeresis
+<Multi_key> <quotedbl> <O> : "Ö" Odiaeresis
+<Multi_key> <O> <diaeresis> : "Ö" Odiaeresis
+<Multi_key> <diaeresis> <O> : "Ö" Odiaeresis
+<Multi_key> <O> <slash> : "Ø" Ooblique
+<Multi_key> <slash> <O> : "Ø" Ooblique
+<Multi_key> <o> <grave> : "ò" ograve
+<Multi_key> <grave> <o> : "ò" ograve
+<Multi_key> <o> <acute> : "ó" oacute
+<Multi_key> <acute> <o> : "ó" oacute
+<Multi_key> <o> <apostrophe> : "ó" oacute
+<Multi_key> <apostrophe> <o> : "ó" oacute
+<Multi_key> <o> <asciicircum> : "ô" ocircumflex
+<Multi_key> <asciicircum> <o> : "ô" ocircumflex
+<Multi_key> <o> <greater> : "ô" ocircumflex
+<Multi_key> <greater> <o> : "ô" ocircumflex
+<Multi_key> <o> <asciitilde> : "õ" otilde
+<Multi_key> <asciitilde> <o> : "õ" otilde
+<Multi_key> <o> <minus> : "õ" otilde
+<Multi_key> <minus> <o> : "õ" otilde
+<Multi_key> <o> <quotedbl> : "ö" odiaeresis
+<Multi_key> <quotedbl> <o> : "ö" odiaeresis
+<Multi_key> <o> <diaeresis> : "ö" odiaeresis
+<Multi_key> <diaeresis> <o> : "ö" odiaeresis
+<Multi_key> <o> <slash> : "ø" oslash
+<Multi_key> <slash> <o> : "ø" oslash
+<Multi_key> <U> <grave> : "Ù" Ugrave
+<Multi_key> <grave> <U> : "Ù" Ugrave
+<Multi_key> <U> <acute> : "Ú" Uacute
+<Multi_key> <acute> <U> : "Ú" Uacute
+<Multi_key> <U> <apostrophe> : "Ú" Uacute
+<Multi_key> <apostrophe> <U> : "Ú" Uacute
+<Multi_key> <U> <asciicircum> : "Û" Ucircumflex
+<Multi_key> <asciicircum> <U> : "Û" Ucircumflex
+<Multi_key> <U> <greater> : "Û" Ucircumflex
+<Multi_key> <greater> <U> : "Û" Ucircumflex
+<Multi_key> <U> <quotedbl> : "Ü" Udiaeresis
+<Multi_key> <quotedbl> <U> : "Ü" Udiaeresis
+<Multi_key> <U> <diaeresis> : "Ü" Udiaeresis
+<Multi_key> <diaeresis> <U> : "Ü" Udiaeresis
+<Multi_key> <u> <grave> : "ù" ugrave
+<Multi_key> <grave> <u> : "ù" ugrave
+<Multi_key> <u> <acute> : "ú" uacute
+<Multi_key> <acute> <u> : "ú" uacute
+<Multi_key> <u> <apostrophe> : "ú" uacute
+<Multi_key> <apostrophe> <u> : "ú" uacute
+<Multi_key> <u> <asciicircum> : "û" ucircumflex
+<Multi_key> <asciicircum> <u> : "û" ucircumflex
+<Multi_key> <u> <greater> : "û" ucircumflex
+<Multi_key> <greater> <u> : "û" ucircumflex
+<Multi_key> <u> <quotedbl> : "ü" udiaeresis
+<Multi_key> <quotedbl> <u> : "ü" udiaeresis
+<Multi_key> <u> <diaeresis> : "ü" udiaeresis
+<Multi_key> <diaeresis> <u> : "ü" udiaeresis
+<Multi_key> <s> <s> : "ß" ssharp
+<Multi_key> <T> <H> : "Þ" THORN
+<Multi_key> <t> <h> : "þ" thorn
+<Multi_key> <Y> <acute> : "Ã" Yacute
+<Multi_key> <acute> <Y> : "Ã" Yacute
+<Multi_key> <Y> <apostrophe> : "Ã" Yacute
+<Multi_key> <apostrophe> <Y> : "Ã" Yacute
+<Multi_key> <y> <acute> : "ý" yacute
+<Multi_key> <acute> <y> : "ý" yacute
+<Multi_key> <y> <apostrophe> : "ý" yacute
+<Multi_key> <apostrophe> <y> : "ý" yacute
+<Multi_key> <y> <quotedbl> : "ÿ" ydiaeresis
+<Multi_key> <quotedbl> <y> : "ÿ" ydiaeresis
+<Multi_key> <y> <diaeresis> : "ÿ" ydiaeresis
+<Multi_key> <diaeresis> <y> : "ÿ" ydiaeresis
+
+XCOMM Part 2
+XCOMM
+XCOMM Greek Extended multi-key and dead key definitions. These have been
+XCOMM machine-generated by a perl script, found at:
+XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl
+
+<Multi_key> <greater> <Greek_alpha> : "á¼€" U1f00
+<dead_horn> <Greek_alpha> : "á¼€" U1f00
+<dead_psili> <Greek_alpha> : "á¼€" U1f00
+<Multi_key> <less> <Greek_alpha> : "á¼" U1f01
+<dead_ogonek> <Greek_alpha> : "á¼" U1f01
+<dead_dasia> <Greek_alpha> : "á¼" U1f01
+<Multi_key> <greater> <grave> <Greek_alpha> : "ἂ" U1f02
+<Multi_key> <grave> <greater> <Greek_alpha> : "ἂ" U1f02
+<dead_horn> <dead_grave> <Greek_alpha> : "ἂ" U1f02
+<dead_psili> <dead_grave> <Greek_alpha> : "ἂ" U1f02
+<dead_grave> <dead_horn> <Greek_alpha> : "ἂ" U1f02
+<dead_grave> <dead_psili> <Greek_alpha> : "ἂ" U1f02
+<Multi_key> <less> <grave> <Greek_alpha> : "ἃ" U1f03
+<Multi_key> <grave> <less> <Greek_alpha> : "ἃ" U1f03
+<dead_ogonek> <dead_grave> <Greek_alpha> : "ἃ" U1f03
+<dead_dasia> <dead_grave> <Greek_alpha> : "ἃ" U1f03
+<dead_grave> <dead_ogonek> <Greek_alpha> : "ἃ" U1f03
+<dead_grave> <dead_dasia> <Greek_alpha> : "ἃ" U1f03
+<Multi_key> <greater> <apostrophe> <Greek_alpha> : "ἄ" U1f04
+<Multi_key> <apostrophe> <greater> <Greek_alpha> : "ἄ" U1f04
+<dead_horn> <dead_acute> <Greek_alpha> : "ἄ" U1f04
+<dead_psili> <dead_acute> <Greek_alpha> : "ἄ" U1f04
+<dead_acute> <dead_horn> <Greek_alpha> : "ἄ" U1f04
+<dead_acute> <dead_psili> <Greek_alpha> : "ἄ" U1f04
+<Multi_key> <less> <apostrophe> <Greek_alpha> : "á¼…" U1f05
+<Multi_key> <apostrophe> <less> <Greek_alpha> : "á¼…" U1f05
+<dead_ogonek> <dead_acute> <Greek_alpha> : "á¼…" U1f05
+<dead_dasia> <dead_acute> <Greek_alpha> : "á¼…" U1f05
+<dead_acute> <dead_ogonek> <Greek_alpha> : "á¼…" U1f05
+<dead_acute> <dead_dasia> <Greek_alpha> : "á¼…" U1f05
+<Multi_key> <greater> <asciitilde> <Greek_alpha> : "ἆ" U1f06
+<Multi_key> <asciitilde> <greater> <Greek_alpha> : "ἆ" U1f06
+<dead_horn> <dead_tilde> <Greek_alpha> : "ἆ" U1f06
+<dead_psili> <dead_tilde> <Greek_alpha> : "ἆ" U1f06
+<dead_tilde> <dead_horn> <Greek_alpha> : "ἆ" U1f06
+<dead_tilde> <dead_psili> <Greek_alpha> : "ἆ" U1f06
+<Multi_key> <less> <asciitilde> <Greek_alpha> : "ἇ" U1f07
+<Multi_key> <asciitilde> <less> <Greek_alpha> : "ἇ" U1f07
+<dead_ogonek> <dead_tilde> <Greek_alpha> : "ἇ" U1f07
+<dead_dasia> <dead_tilde> <Greek_alpha> : "ἇ" U1f07
+<dead_tilde> <dead_ogonek> <Greek_alpha> : "ἇ" U1f07
+<dead_tilde> <dead_dasia> <Greek_alpha> : "ἇ" U1f07
+<Multi_key> <greater> <Greek_ALPHA> : "Ἀ" U1f08
+<dead_horn> <Greek_ALPHA> : "Ἀ" U1f08
+<dead_psili> <Greek_ALPHA> : "Ἀ" U1f08
+<Multi_key> <less> <Greek_ALPHA> : "Ἁ" U1f09
+<dead_ogonek> <Greek_ALPHA> : "Ἁ" U1f09
+<dead_dasia> <Greek_ALPHA> : "Ἁ" U1f09
+<Multi_key> <greater> <grave> <Greek_ALPHA> : "Ἂ" U1f0a
+<Multi_key> <grave> <greater> <Greek_ALPHA> : "Ἂ" U1f0a
+<dead_horn> <dead_grave> <Greek_ALPHA> : "Ἂ" U1f0a
+<dead_psili> <dead_grave> <Greek_ALPHA> : "Ἂ" U1f0a
+<dead_grave> <dead_horn> <Greek_ALPHA> : "Ἂ" U1f0a
+<dead_grave> <dead_psili> <Greek_ALPHA> : "Ἂ" U1f0a
+<Multi_key> <less> <grave> <Greek_ALPHA> : "Ἃ" U1f0b
+<Multi_key> <grave> <less> <Greek_ALPHA> : "Ἃ" U1f0b
+<dead_ogonek> <dead_grave> <Greek_ALPHA> : "Ἃ" U1f0b
+<dead_dasia> <dead_grave> <Greek_ALPHA> : "Ἃ" U1f0b
+<dead_grave> <dead_ogonek> <Greek_ALPHA> : "Ἃ" U1f0b
+<dead_grave> <dead_dasia> <Greek_ALPHA> : "Ἃ" U1f0b
+<Multi_key> <greater> <apostrophe> <Greek_ALPHA> : "Ἄ" U1f0c
+<Multi_key> <apostrophe> <greater> <Greek_ALPHA> : "Ἄ" U1f0c
+<dead_horn> <dead_acute> <Greek_ALPHA> : "Ἄ" U1f0c
+<dead_psili> <dead_acute> <Greek_ALPHA> : "Ἄ" U1f0c
+<dead_acute> <dead_horn> <Greek_ALPHA> : "Ἄ" U1f0c
+<dead_acute> <dead_psili> <Greek_ALPHA> : "Ἄ" U1f0c
+<Multi_key> <less> <apostrophe> <Greek_ALPHA> : "á¼" U1f0d
+<Multi_key> <apostrophe> <less> <Greek_ALPHA> : "á¼" U1f0d
+<dead_ogonek> <dead_acute> <Greek_ALPHA> : "á¼" U1f0d
+<dead_dasia> <dead_acute> <Greek_ALPHA> : "á¼" U1f0d
+<dead_acute> <dead_ogonek> <Greek_ALPHA> : "á¼" U1f0d
+<dead_acute> <dead_dasia> <Greek_ALPHA> : "á¼" U1f0d
+<Multi_key> <greater> <asciitilde> <Greek_ALPHA> : "Ἆ" U1f0e
+<Multi_key> <asciitilde> <greater> <Greek_ALPHA> : "Ἆ" U1f0e
+<dead_horn> <dead_tilde> <Greek_ALPHA> : "Ἆ" U1f0e
+<dead_psili> <dead_tilde> <Greek_ALPHA> : "Ἆ" U1f0e
+<dead_tilde> <dead_horn> <Greek_ALPHA> : "Ἆ" U1f0e
+<dead_tilde> <dead_psili> <Greek_ALPHA> : "Ἆ" U1f0e
+<Multi_key> <less> <asciitilde> <Greek_ALPHA> : "á¼" U1f0f
+<Multi_key> <asciitilde> <less> <Greek_ALPHA> : "á¼" U1f0f
+<dead_ogonek> <dead_tilde> <Greek_ALPHA> : "á¼" U1f0f
+<dead_dasia> <dead_tilde> <Greek_ALPHA> : "á¼" U1f0f
+<dead_tilde> <dead_ogonek> <Greek_ALPHA> : "á¼" U1f0f
+<dead_tilde> <dead_dasia> <Greek_ALPHA> : "á¼" U1f0f
+<Multi_key> <greater> <Greek_epsilon> : "á¼" U1f10
+<dead_horn> <Greek_epsilon> : "á¼" U1f10
+<dead_psili> <Greek_epsilon> : "á¼" U1f10
+<Multi_key> <less> <Greek_epsilon> : "ἑ" U1f11
+<dead_ogonek> <Greek_epsilon> : "ἑ" U1f11
+<dead_dasia> <Greek_epsilon> : "ἑ" U1f11
+<Multi_key> <greater> <grave> <Greek_epsilon> : "á¼’" U1f12
+<Multi_key> <grave> <greater> <Greek_epsilon> : "á¼’" U1f12
+<dead_horn> <dead_grave> <Greek_epsilon> : "á¼’" U1f12
+<dead_psili> <dead_grave> <Greek_epsilon> : "á¼’" U1f12
+<dead_grave> <dead_horn> <Greek_epsilon> : "á¼’" U1f12
+<dead_grave> <dead_psili> <Greek_epsilon> : "á¼’" U1f12
+<Multi_key> <less> <grave> <Greek_epsilon> : "ἓ" U1f13
+<Multi_key> <grave> <less> <Greek_epsilon> : "ἓ" U1f13
+<dead_ogonek> <dead_grave> <Greek_epsilon> : "ἓ" U1f13
+<dead_dasia> <dead_grave> <Greek_epsilon> : "ἓ" U1f13
+<dead_grave> <dead_ogonek> <Greek_epsilon> : "ἓ" U1f13
+<dead_grave> <dead_dasia> <Greek_epsilon> : "ἓ" U1f13
+<Multi_key> <greater> <apostrophe> <Greek_epsilon> : "á¼”" U1f14
+<Multi_key> <apostrophe> <greater> <Greek_epsilon> : "á¼”" U1f14
+<dead_horn> <dead_acute> <Greek_epsilon> : "á¼”" U1f14
+<dead_psili> <dead_acute> <Greek_epsilon> : "á¼”" U1f14
+<dead_acute> <dead_horn> <Greek_epsilon> : "á¼”" U1f14
+<dead_acute> <dead_psili> <Greek_epsilon> : "á¼”" U1f14
+<Multi_key> <less> <apostrophe> <Greek_epsilon> : "ἕ" U1f15
+<Multi_key> <apostrophe> <less> <Greek_epsilon> : "ἕ" U1f15
+<dead_ogonek> <dead_acute> <Greek_epsilon> : "ἕ" U1f15
+<dead_dasia> <dead_acute> <Greek_epsilon> : "ἕ" U1f15
+<dead_acute> <dead_ogonek> <Greek_epsilon> : "ἕ" U1f15
+<dead_acute> <dead_dasia> <Greek_epsilon> : "ἕ" U1f15
+<Multi_key> <greater> <Greek_EPSILON> : "Ἐ" U1f18
+<dead_horn> <Greek_EPSILON> : "Ἐ" U1f18
+<dead_psili> <Greek_EPSILON> : "Ἐ" U1f18
+<Multi_key> <less> <Greek_EPSILON> : "á¼™" U1f19
+<dead_ogonek> <Greek_EPSILON> : "á¼™" U1f19
+<dead_dasia> <Greek_EPSILON> : "á¼™" U1f19
+<Multi_key> <greater> <grave> <Greek_EPSILON> : "Ἒ" U1f1a
+<Multi_key> <grave> <greater> <Greek_EPSILON> : "Ἒ" U1f1a
+<dead_horn> <dead_grave> <Greek_EPSILON> : "Ἒ" U1f1a
+<dead_psili> <dead_grave> <Greek_EPSILON> : "Ἒ" U1f1a
+<dead_grave> <dead_horn> <Greek_EPSILON> : "Ἒ" U1f1a
+<dead_grave> <dead_psili> <Greek_EPSILON> : "Ἒ" U1f1a
+<Multi_key> <less> <grave> <Greek_EPSILON> : "á¼›" U1f1b
+<Multi_key> <grave> <less> <Greek_EPSILON> : "á¼›" U1f1b
+<dead_ogonek> <dead_grave> <Greek_EPSILON> : "á¼›" U1f1b
+<dead_dasia> <dead_grave> <Greek_EPSILON> : "á¼›" U1f1b
+<dead_grave> <dead_ogonek> <Greek_EPSILON> : "á¼›" U1f1b
+<dead_grave> <dead_dasia> <Greek_EPSILON> : "á¼›" U1f1b
+<Multi_key> <greater> <apostrophe> <Greek_EPSILON> : "Ἔ" U1f1c
+<Multi_key> <apostrophe> <greater> <Greek_EPSILON> : "Ἔ" U1f1c
+<dead_horn> <dead_acute> <Greek_EPSILON> : "Ἔ" U1f1c
+<dead_psili> <dead_acute> <Greek_EPSILON> : "Ἔ" U1f1c
+<dead_acute> <dead_horn> <Greek_EPSILON> : "Ἔ" U1f1c
+<dead_acute> <dead_psili> <Greek_EPSILON> : "Ἔ" U1f1c
+<Multi_key> <less> <apostrophe> <Greek_EPSILON> : "á¼" U1f1d
+<Multi_key> <apostrophe> <less> <Greek_EPSILON> : "á¼" U1f1d
+<dead_ogonek> <dead_acute> <Greek_EPSILON> : "á¼" U1f1d
+<dead_dasia> <dead_acute> <Greek_EPSILON> : "á¼" U1f1d
+<dead_acute> <dead_ogonek> <Greek_EPSILON> : "á¼" U1f1d
+<dead_acute> <dead_dasia> <Greek_EPSILON> : "á¼" U1f1d
+<Multi_key> <greater> <Greek_eta> : "á¼ " U1f20
+<dead_horn> <Greek_eta> : "á¼ " U1f20
+<dead_psili> <Greek_eta> : "á¼ " U1f20
+<Multi_key> <less> <Greek_eta> : "ἡ" U1f21
+<dead_ogonek> <Greek_eta> : "ἡ" U1f21
+<dead_dasia> <Greek_eta> : "ἡ" U1f21
+<Multi_key> <greater> <grave> <Greek_eta> : "á¼¢" U1f22
+<Multi_key> <grave> <greater> <Greek_eta> : "á¼¢" U1f22
+<dead_horn> <dead_grave> <Greek_eta> : "á¼¢" U1f22
+<dead_psili> <dead_grave> <Greek_eta> : "á¼¢" U1f22
+<dead_grave> <dead_horn> <Greek_eta> : "á¼¢" U1f22
+<dead_grave> <dead_psili> <Greek_eta> : "á¼¢" U1f22
+<Multi_key> <less> <grave> <Greek_eta> : "á¼£" U1f23
+<Multi_key> <grave> <less> <Greek_eta> : "á¼£" U1f23
+<dead_ogonek> <dead_grave> <Greek_eta> : "á¼£" U1f23
+<dead_dasia> <dead_grave> <Greek_eta> : "á¼£" U1f23
+<dead_grave> <dead_ogonek> <Greek_eta> : "á¼£" U1f23
+<dead_grave> <dead_dasia> <Greek_eta> : "á¼£" U1f23
+<Multi_key> <greater> <apostrophe> <Greek_eta> : "ἤ" U1f24
+<Multi_key> <apostrophe> <greater> <Greek_eta> : "ἤ" U1f24
+<dead_horn> <dead_acute> <Greek_eta> : "ἤ" U1f24
+<dead_psili> <dead_acute> <Greek_eta> : "ἤ" U1f24
+<dead_acute> <dead_horn> <Greek_eta> : "ἤ" U1f24
+<dead_acute> <dead_psili> <Greek_eta> : "ἤ" U1f24
+<Multi_key> <less> <apostrophe> <Greek_eta> : "á¼¥" U1f25
+<Multi_key> <apostrophe> <less> <Greek_eta> : "á¼¥" U1f25
+<dead_ogonek> <dead_acute> <Greek_eta> : "á¼¥" U1f25
+<dead_dasia> <dead_acute> <Greek_eta> : "á¼¥" U1f25
+<dead_acute> <dead_ogonek> <Greek_eta> : "á¼¥" U1f25
+<dead_acute> <dead_dasia> <Greek_eta> : "á¼¥" U1f25
+<Multi_key> <greater> <asciitilde> <Greek_eta> : "ἦ" U1f26
+<Multi_key> <asciitilde> <greater> <Greek_eta> : "ἦ" U1f26
+<dead_horn> <dead_tilde> <Greek_eta> : "ἦ" U1f26
+<dead_psili> <dead_tilde> <Greek_eta> : "ἦ" U1f26
+<dead_tilde> <dead_horn> <Greek_eta> : "ἦ" U1f26
+<dead_tilde> <dead_psili> <Greek_eta> : "ἦ" U1f26
+<Multi_key> <less> <asciitilde> <Greek_eta> : "ἧ" U1f27
+<Multi_key> <asciitilde> <less> <Greek_eta> : "ἧ" U1f27
+<dead_ogonek> <dead_tilde> <Greek_eta> : "ἧ" U1f27
+<dead_dasia> <dead_tilde> <Greek_eta> : "ἧ" U1f27
+<dead_tilde> <dead_ogonek> <Greek_eta> : "ἧ" U1f27
+<dead_tilde> <dead_dasia> <Greek_eta> : "ἧ" U1f27
+<Multi_key> <greater> <Greek_ETA> : "Ἠ" U1f28
+<dead_horn> <Greek_ETA> : "Ἠ" U1f28
+<dead_psili> <Greek_ETA> : "Ἠ" U1f28
+<Multi_key> <less> <Greek_ETA> : "Ἡ" U1f29
+<dead_ogonek> <Greek_ETA> : "Ἡ" U1f29
+<dead_dasia> <Greek_ETA> : "Ἡ" U1f29
+<Multi_key> <greater> <grave> <Greek_ETA> : "Ἢ" U1f2a
+<Multi_key> <grave> <greater> <Greek_ETA> : "Ἢ" U1f2a
+<dead_horn> <dead_grave> <Greek_ETA> : "Ἢ" U1f2a
+<dead_psili> <dead_grave> <Greek_ETA> : "Ἢ" U1f2a
+<dead_grave> <dead_horn> <Greek_ETA> : "Ἢ" U1f2a
+<dead_grave> <dead_psili> <Greek_ETA> : "Ἢ" U1f2a
+<Multi_key> <less> <grave> <Greek_ETA> : "Ἣ" U1f2b
+<Multi_key> <grave> <less> <Greek_ETA> : "Ἣ" U1f2b
+<dead_ogonek> <dead_grave> <Greek_ETA> : "Ἣ" U1f2b
+<dead_dasia> <dead_grave> <Greek_ETA> : "Ἣ" U1f2b
+<dead_grave> <dead_ogonek> <Greek_ETA> : "Ἣ" U1f2b
+<dead_grave> <dead_dasia> <Greek_ETA> : "Ἣ" U1f2b
+<Multi_key> <greater> <apostrophe> <Greek_ETA> : "Ἤ" U1f2c
+<Multi_key> <apostrophe> <greater> <Greek_ETA> : "Ἤ" U1f2c
+<dead_horn> <dead_acute> <Greek_ETA> : "Ἤ" U1f2c
+<dead_psili> <dead_acute> <Greek_ETA> : "Ἤ" U1f2c
+<dead_acute> <dead_horn> <Greek_ETA> : "Ἤ" U1f2c
+<dead_acute> <dead_psili> <Greek_ETA> : "Ἤ" U1f2c
+<Multi_key> <less> <apostrophe> <Greek_ETA> : "á¼­" U1f2d
+<Multi_key> <apostrophe> <less> <Greek_ETA> : "á¼­" U1f2d
+<dead_ogonek> <dead_acute> <Greek_ETA> : "á¼­" U1f2d
+<dead_dasia> <dead_acute> <Greek_ETA> : "á¼­" U1f2d
+<dead_acute> <dead_ogonek> <Greek_ETA> : "á¼­" U1f2d
+<dead_acute> <dead_dasia> <Greek_ETA> : "á¼­" U1f2d
+<Multi_key> <greater> <asciitilde> <Greek_ETA> : "á¼®" U1f2e
+<Multi_key> <asciitilde> <greater> <Greek_ETA> : "á¼®" U1f2e
+<dead_horn> <dead_tilde> <Greek_ETA> : "á¼®" U1f2e
+<dead_psili> <dead_tilde> <Greek_ETA> : "á¼®" U1f2e
+<dead_tilde> <dead_horn> <Greek_ETA> : "á¼®" U1f2e
+<dead_tilde> <dead_psili> <Greek_ETA> : "á¼®" U1f2e
+<Multi_key> <less> <asciitilde> <Greek_ETA> : "Ἧ" U1f2f
+<Multi_key> <asciitilde> <less> <Greek_ETA> : "Ἧ" U1f2f
+<dead_ogonek> <dead_tilde> <Greek_ETA> : "Ἧ" U1f2f
+<dead_dasia> <dead_tilde> <Greek_ETA> : "Ἧ" U1f2f
+<dead_tilde> <dead_ogonek> <Greek_ETA> : "Ἧ" U1f2f
+<dead_tilde> <dead_dasia> <Greek_ETA> : "Ἧ" U1f2f
+<Multi_key> <greater> <Greek_iota> : "á¼°" U1f30
+<dead_horn> <Greek_iota> : "á¼°" U1f30
+<dead_psili> <Greek_iota> : "á¼°" U1f30
+<Multi_key> <less> <Greek_iota> : "á¼±" U1f31
+<dead_ogonek> <Greek_iota> : "á¼±" U1f31
+<dead_dasia> <Greek_iota> : "á¼±" U1f31
+<Multi_key> <greater> <grave> <Greek_iota> : "á¼²" U1f32
+<Multi_key> <grave> <greater> <Greek_iota> : "á¼²" U1f32
+<dead_horn> <dead_grave> <Greek_iota> : "á¼²" U1f32
+<dead_psili> <dead_grave> <Greek_iota> : "á¼²" U1f32
+<dead_grave> <dead_horn> <Greek_iota> : "á¼²" U1f32
+<dead_grave> <dead_psili> <Greek_iota> : "á¼²" U1f32
+<Multi_key> <less> <grave> <Greek_iota> : "á¼³" U1f33
+<Multi_key> <grave> <less> <Greek_iota> : "á¼³" U1f33
+<dead_ogonek> <dead_grave> <Greek_iota> : "á¼³" U1f33
+<dead_dasia> <dead_grave> <Greek_iota> : "á¼³" U1f33
+<dead_grave> <dead_ogonek> <Greek_iota> : "á¼³" U1f33
+<dead_grave> <dead_dasia> <Greek_iota> : "á¼³" U1f33
+<Multi_key> <greater> <apostrophe> <Greek_iota> : "á¼´" U1f34
+<Multi_key> <apostrophe> <greater> <Greek_iota> : "á¼´" U1f34
+<dead_horn> <dead_acute> <Greek_iota> : "á¼´" U1f34
+<dead_psili> <dead_acute> <Greek_iota> : "á¼´" U1f34
+<dead_acute> <dead_horn> <Greek_iota> : "á¼´" U1f34
+<dead_acute> <dead_psili> <Greek_iota> : "á¼´" U1f34
+<Multi_key> <less> <apostrophe> <Greek_iota> : "á¼µ" U1f35
+<Multi_key> <apostrophe> <less> <Greek_iota> : "á¼µ" U1f35
+<dead_ogonek> <dead_acute> <Greek_iota> : "á¼µ" U1f35
+<dead_dasia> <dead_acute> <Greek_iota> : "á¼µ" U1f35
+<dead_acute> <dead_ogonek> <Greek_iota> : "á¼µ" U1f35
+<dead_acute> <dead_dasia> <Greek_iota> : "á¼µ" U1f35
+<Multi_key> <greater> <asciitilde> <Greek_iota> : "ἶ" U1f36
+<Multi_key> <asciitilde> <greater> <Greek_iota> : "ἶ" U1f36
+<dead_horn> <dead_tilde> <Greek_iota> : "ἶ" U1f36
+<dead_psili> <dead_tilde> <Greek_iota> : "ἶ" U1f36
+<dead_tilde> <dead_horn> <Greek_iota> : "ἶ" U1f36
+<dead_tilde> <dead_psili> <Greek_iota> : "ἶ" U1f36
+<Multi_key> <less> <asciitilde> <Greek_iota> : "á¼·" U1f37
+<Multi_key> <asciitilde> <less> <Greek_iota> : "á¼·" U1f37
+<dead_ogonek> <dead_tilde> <Greek_iota> : "á¼·" U1f37
+<dead_dasia> <dead_tilde> <Greek_iota> : "á¼·" U1f37
+<dead_tilde> <dead_ogonek> <Greek_iota> : "á¼·" U1f37
+<dead_tilde> <dead_dasia> <Greek_iota> : "á¼·" U1f37
+<Multi_key> <greater> <Greek_IOTA> : "Ἰ" U1f38
+<dead_horn> <Greek_IOTA> : "Ἰ" U1f38
+<dead_psili> <Greek_IOTA> : "Ἰ" U1f38
+<Multi_key> <less> <Greek_IOTA> : "á¼¹" U1f39
+<dead_ogonek> <Greek_IOTA> : "á¼¹" U1f39
+<dead_dasia> <Greek_IOTA> : "á¼¹" U1f39
+<Multi_key> <greater> <grave> <Greek_IOTA> : "Ἲ" U1f3a
+<Multi_key> <grave> <greater> <Greek_IOTA> : "Ἲ" U1f3a
+<dead_horn> <dead_grave> <Greek_IOTA> : "Ἲ" U1f3a
+<dead_psili> <dead_grave> <Greek_IOTA> : "Ἲ" U1f3a
+<dead_grave> <dead_horn> <Greek_IOTA> : "Ἲ" U1f3a
+<dead_grave> <dead_psili> <Greek_IOTA> : "Ἲ" U1f3a
+<Multi_key> <less> <grave> <Greek_IOTA> : "á¼»" U1f3b
+<Multi_key> <grave> <less> <Greek_IOTA> : "á¼»" U1f3b
+<dead_ogonek> <dead_grave> <Greek_IOTA> : "á¼»" U1f3b
+<dead_dasia> <dead_grave> <Greek_IOTA> : "á¼»" U1f3b
+<dead_grave> <dead_ogonek> <Greek_IOTA> : "á¼»" U1f3b
+<dead_grave> <dead_dasia> <Greek_IOTA> : "á¼»" U1f3b
+<Multi_key> <greater> <apostrophe> <Greek_IOTA> : "á¼¼" U1f3c
+<Multi_key> <apostrophe> <greater> <Greek_IOTA> : "á¼¼" U1f3c
+<dead_horn> <dead_acute> <Greek_IOTA> : "á¼¼" U1f3c
+<dead_psili> <dead_acute> <Greek_IOTA> : "á¼¼" U1f3c
+<dead_acute> <dead_horn> <Greek_IOTA> : "á¼¼" U1f3c
+<dead_acute> <dead_psili> <Greek_IOTA> : "á¼¼" U1f3c
+<Multi_key> <less> <apostrophe> <Greek_IOTA> : "á¼½" U1f3d
+<Multi_key> <apostrophe> <less> <Greek_IOTA> : "á¼½" U1f3d
+<dead_ogonek> <dead_acute> <Greek_IOTA> : "á¼½" U1f3d
+<dead_dasia> <dead_acute> <Greek_IOTA> : "á¼½" U1f3d
+<dead_acute> <dead_ogonek> <Greek_IOTA> : "á¼½" U1f3d
+<dead_acute> <dead_dasia> <Greek_IOTA> : "á¼½" U1f3d
+<Multi_key> <greater> <asciitilde> <Greek_IOTA> : "á¼¾" U1f3e
+<Multi_key> <asciitilde> <greater> <Greek_IOTA> : "á¼¾" U1f3e
+<dead_horn> <dead_tilde> <Greek_IOTA> : "á¼¾" U1f3e
+<dead_psili> <dead_tilde> <Greek_IOTA> : "á¼¾" U1f3e
+<dead_tilde> <dead_horn> <Greek_IOTA> : "á¼¾" U1f3e
+<dead_tilde> <dead_psili> <Greek_IOTA> : "á¼¾" U1f3e
+<Multi_key> <less> <asciitilde> <Greek_IOTA> : "Ἷ" U1f3f
+<Multi_key> <asciitilde> <less> <Greek_IOTA> : "Ἷ" U1f3f
+<dead_ogonek> <dead_tilde> <Greek_IOTA> : "Ἷ" U1f3f
+<dead_dasia> <dead_tilde> <Greek_IOTA> : "Ἷ" U1f3f
+<dead_tilde> <dead_ogonek> <Greek_IOTA> : "Ἷ" U1f3f
+<dead_tilde> <dead_dasia> <Greek_IOTA> : "Ἷ" U1f3f
+<Multi_key> <greater> <Greek_omicron> : "á½€" U1f40
+<dead_horn> <Greek_omicron> : "á½€" U1f40
+<dead_psili> <Greek_omicron> : "á½€" U1f40
+<Multi_key> <less> <Greek_omicron> : "á½" U1f41
+<dead_ogonek> <Greek_omicron> : "á½" U1f41
+<dead_dasia> <Greek_omicron> : "á½" U1f41
+<Multi_key> <greater> <grave> <Greek_omicron> : "ὂ" U1f42
+<Multi_key> <grave> <greater> <Greek_omicron> : "ὂ" U1f42
+<dead_horn> <dead_grave> <Greek_omicron> : "ὂ" U1f42
+<dead_psili> <dead_grave> <Greek_omicron> : "ὂ" U1f42
+<dead_grave> <dead_horn> <Greek_omicron> : "ὂ" U1f42
+<dead_grave> <dead_psili> <Greek_omicron> : "ὂ" U1f42
+<Multi_key> <less> <grave> <Greek_omicron> : "ὃ" U1f43
+<Multi_key> <grave> <less> <Greek_omicron> : "ὃ" U1f43
+<dead_ogonek> <dead_grave> <Greek_omicron> : "ὃ" U1f43
+<dead_dasia> <dead_grave> <Greek_omicron> : "ὃ" U1f43
+<dead_grave> <dead_ogonek> <Greek_omicron> : "ὃ" U1f43
+<dead_grave> <dead_dasia> <Greek_omicron> : "ὃ" U1f43
+<Multi_key> <greater> <apostrophe> <Greek_omicron> : "ὄ" U1f44
+<Multi_key> <apostrophe> <greater> <Greek_omicron> : "ὄ" U1f44
+<dead_horn> <dead_acute> <Greek_omicron> : "ὄ" U1f44
+<dead_psili> <dead_acute> <Greek_omicron> : "ὄ" U1f44
+<dead_acute> <dead_horn> <Greek_omicron> : "ὄ" U1f44
+<dead_acute> <dead_psili> <Greek_omicron> : "ὄ" U1f44
+<Multi_key> <less> <apostrophe> <Greek_omicron> : "á½…" U1f45
+<Multi_key> <apostrophe> <less> <Greek_omicron> : "á½…" U1f45
+<dead_ogonek> <dead_acute> <Greek_omicron> : "á½…" U1f45
+<dead_dasia> <dead_acute> <Greek_omicron> : "á½…" U1f45
+<dead_acute> <dead_ogonek> <Greek_omicron> : "á½…" U1f45
+<dead_acute> <dead_dasia> <Greek_omicron> : "á½…" U1f45
+<Multi_key> <greater> <Greek_OMICRON> : "Ὀ" U1f48
+<dead_horn> <Greek_OMICRON> : "Ὀ" U1f48
+<dead_psili> <Greek_OMICRON> : "Ὀ" U1f48
+<Multi_key> <less> <Greek_OMICRON> : "Ὁ" U1f49
+<dead_ogonek> <Greek_OMICRON> : "Ὁ" U1f49
+<dead_dasia> <Greek_OMICRON> : "Ὁ" U1f49
+<Multi_key> <greater> <grave> <Greek_OMICRON> : "Ὂ" U1f4a
+<Multi_key> <grave> <greater> <Greek_OMICRON> : "Ὂ" U1f4a
+<dead_horn> <dead_grave> <Greek_OMICRON> : "Ὂ" U1f4a
+<dead_psili> <dead_grave> <Greek_OMICRON> : "Ὂ" U1f4a
+<dead_grave> <dead_horn> <Greek_OMICRON> : "Ὂ" U1f4a
+<dead_grave> <dead_psili> <Greek_OMICRON> : "Ὂ" U1f4a
+<Multi_key> <less> <grave> <Greek_OMICRON> : "Ὃ" U1f4b
+<Multi_key> <grave> <less> <Greek_OMICRON> : "Ὃ" U1f4b
+<dead_ogonek> <dead_grave> <Greek_OMICRON> : "Ὃ" U1f4b
+<dead_dasia> <dead_grave> <Greek_OMICRON> : "Ὃ" U1f4b
+<dead_grave> <dead_ogonek> <Greek_OMICRON> : "Ὃ" U1f4b
+<dead_grave> <dead_dasia> <Greek_OMICRON> : "Ὃ" U1f4b
+<Multi_key> <greater> <apostrophe> <Greek_OMICRON> : "Ὄ" U1f4c
+<Multi_key> <apostrophe> <greater> <Greek_OMICRON> : "Ὄ" U1f4c
+<dead_horn> <dead_acute> <Greek_OMICRON> : "Ὄ" U1f4c
+<dead_psili> <dead_acute> <Greek_OMICRON> : "Ὄ" U1f4c
+<dead_acute> <dead_horn> <Greek_OMICRON> : "Ὄ" U1f4c
+<dead_acute> <dead_psili> <Greek_OMICRON> : "Ὄ" U1f4c
+<Multi_key> <less> <apostrophe> <Greek_OMICRON> : "á½" U1f4d
+<Multi_key> <apostrophe> <less> <Greek_OMICRON> : "á½" U1f4d
+<dead_ogonek> <dead_acute> <Greek_OMICRON> : "á½" U1f4d
+<dead_dasia> <dead_acute> <Greek_OMICRON> : "á½" U1f4d
+<dead_acute> <dead_ogonek> <Greek_OMICRON> : "á½" U1f4d
+<dead_acute> <dead_dasia> <Greek_OMICRON> : "á½" U1f4d
+<Multi_key> <greater> <Greek_upsilon> : "á½" U1f50
+<dead_horn> <Greek_upsilon> : "á½" U1f50
+<dead_psili> <Greek_upsilon> : "á½" U1f50
+<Multi_key> <less> <Greek_upsilon> : "ὑ" U1f51
+<dead_ogonek> <Greek_upsilon> : "ὑ" U1f51
+<dead_dasia> <Greek_upsilon> : "ὑ" U1f51
+<Multi_key> <greater> <grave> <Greek_upsilon> : "á½’" U1f52
+<Multi_key> <grave> <greater> <Greek_upsilon> : "á½’" U1f52
+<dead_horn> <dead_grave> <Greek_upsilon> : "á½’" U1f52
+<dead_psili> <dead_grave> <Greek_upsilon> : "á½’" U1f52
+<dead_grave> <dead_horn> <Greek_upsilon> : "á½’" U1f52
+<dead_grave> <dead_psili> <Greek_upsilon> : "á½’" U1f52
+<Multi_key> <less> <grave> <Greek_upsilon> : "ὓ" U1f53
+<Multi_key> <grave> <less> <Greek_upsilon> : "ὓ" U1f53
+<dead_ogonek> <dead_grave> <Greek_upsilon> : "ὓ" U1f53
+<dead_dasia> <dead_grave> <Greek_upsilon> : "ὓ" U1f53
+<dead_grave> <dead_ogonek> <Greek_upsilon> : "ὓ" U1f53
+<dead_grave> <dead_dasia> <Greek_upsilon> : "ὓ" U1f53
+<Multi_key> <greater> <apostrophe> <Greek_upsilon> : "á½”" U1f54
+<Multi_key> <apostrophe> <greater> <Greek_upsilon> : "á½”" U1f54
+<dead_horn> <dead_acute> <Greek_upsilon> : "á½”" U1f54
+<dead_psili> <dead_acute> <Greek_upsilon> : "á½”" U1f54
+<dead_acute> <dead_horn> <Greek_upsilon> : "á½”" U1f54
+<dead_acute> <dead_psili> <Greek_upsilon> : "á½”" U1f54
+<Multi_key> <less> <apostrophe> <Greek_upsilon> : "ὕ" U1f55
+<Multi_key> <apostrophe> <less> <Greek_upsilon> : "ὕ" U1f55
+<dead_ogonek> <dead_acute> <Greek_upsilon> : "ὕ" U1f55
+<dead_dasia> <dead_acute> <Greek_upsilon> : "ὕ" U1f55
+<dead_acute> <dead_ogonek> <Greek_upsilon> : "ὕ" U1f55
+<dead_acute> <dead_dasia> <Greek_upsilon> : "ὕ" U1f55
+<Multi_key> <greater> <asciitilde> <Greek_upsilon> : "á½–" U1f56
+<Multi_key> <asciitilde> <greater> <Greek_upsilon> : "á½–" U1f56
+<dead_horn> <dead_tilde> <Greek_upsilon> : "á½–" U1f56
+<dead_psili> <dead_tilde> <Greek_upsilon> : "á½–" U1f56
+<dead_tilde> <dead_horn> <Greek_upsilon> : "á½–" U1f56
+<dead_tilde> <dead_psili> <Greek_upsilon> : "á½–" U1f56
+<Multi_key> <less> <asciitilde> <Greek_upsilon> : "á½—" U1f57
+<Multi_key> <asciitilde> <less> <Greek_upsilon> : "á½—" U1f57
+<dead_ogonek> <dead_tilde> <Greek_upsilon> : "á½—" U1f57
+<dead_dasia> <dead_tilde> <Greek_upsilon> : "á½—" U1f57
+<dead_tilde> <dead_ogonek> <Greek_upsilon> : "á½—" U1f57
+<dead_tilde> <dead_dasia> <Greek_upsilon> : "á½—" U1f57
+<Multi_key> <less> <Greek_UPSILON> : "á½™" U1f59
+<dead_ogonek> <Greek_UPSILON> : "á½™" U1f59
+<dead_dasia> <Greek_UPSILON> : "á½™" U1f59
+<Multi_key> <less> <grave> <Greek_UPSILON> : "á½›" U1f5b
+<Multi_key> <grave> <less> <Greek_UPSILON> : "á½›" U1f5b
+<dead_ogonek> <dead_grave> <Greek_UPSILON> : "á½›" U1f5b
+<dead_dasia> <dead_grave> <Greek_UPSILON> : "á½›" U1f5b
+<dead_grave> <dead_ogonek> <Greek_UPSILON> : "á½›" U1f5b
+<dead_grave> <dead_dasia> <Greek_UPSILON> : "á½›" U1f5b
+<Multi_key> <less> <apostrophe> <Greek_UPSILON> : "á½" U1f5d
+<Multi_key> <apostrophe> <less> <Greek_UPSILON> : "á½" U1f5d
+<dead_ogonek> <dead_acute> <Greek_UPSILON> : "á½" U1f5d
+<dead_dasia> <dead_acute> <Greek_UPSILON> : "á½" U1f5d
+<dead_acute> <dead_ogonek> <Greek_UPSILON> : "á½" U1f5d
+<dead_acute> <dead_dasia> <Greek_UPSILON> : "á½" U1f5d
+<Multi_key> <less> <asciitilde> <Greek_UPSILON> : "Ὗ" U1f5f
+<Multi_key> <asciitilde> <less> <Greek_UPSILON> : "Ὗ" U1f5f
+<dead_ogonek> <dead_tilde> <Greek_UPSILON> : "Ὗ" U1f5f
+<dead_dasia> <dead_tilde> <Greek_UPSILON> : "Ὗ" U1f5f
+<dead_tilde> <dead_ogonek> <Greek_UPSILON> : "Ὗ" U1f5f
+<dead_tilde> <dead_dasia> <Greek_UPSILON> : "Ὗ" U1f5f
+<Multi_key> <greater> <Greek_omega> : "á½ " U1f60
+<dead_horn> <Greek_omega> : "á½ " U1f60
+<dead_psili> <Greek_omega> : "á½ " U1f60
+<Multi_key> <less> <Greek_omega> : "ὡ" U1f61
+<dead_ogonek> <Greek_omega> : "ὡ" U1f61
+<dead_dasia> <Greek_omega> : "ὡ" U1f61
+<Multi_key> <greater> <grave> <Greek_omega> : "á½¢" U1f62
+<Multi_key> <grave> <greater> <Greek_omega> : "á½¢" U1f62
+<dead_horn> <dead_grave> <Greek_omega> : "á½¢" U1f62
+<dead_psili> <dead_grave> <Greek_omega> : "á½¢" U1f62
+<dead_grave> <dead_horn> <Greek_omega> : "á½¢" U1f62
+<dead_grave> <dead_psili> <Greek_omega> : "á½¢" U1f62
+<Multi_key> <less> <grave> <Greek_omega> : "á½£" U1f63
+<Multi_key> <grave> <less> <Greek_omega> : "á½£" U1f63
+<dead_ogonek> <dead_grave> <Greek_omega> : "á½£" U1f63
+<dead_dasia> <dead_grave> <Greek_omega> : "á½£" U1f63
+<dead_grave> <dead_ogonek> <Greek_omega> : "á½£" U1f63
+<dead_grave> <dead_dasia> <Greek_omega> : "á½£" U1f63
+<Multi_key> <greater> <apostrophe> <Greek_omega> : "ὤ" U1f64
+<Multi_key> <apostrophe> <greater> <Greek_omega> : "ὤ" U1f64
+<dead_horn> <dead_acute> <Greek_omega> : "ὤ" U1f64
+<dead_psili> <dead_acute> <Greek_omega> : "ὤ" U1f64
+<dead_acute> <dead_horn> <Greek_omega> : "ὤ" U1f64
+<dead_acute> <dead_psili> <Greek_omega> : "ὤ" U1f64
+<Multi_key> <less> <apostrophe> <Greek_omega> : "á½¥" U1f65
+<Multi_key> <apostrophe> <less> <Greek_omega> : "á½¥" U1f65
+<dead_ogonek> <dead_acute> <Greek_omega> : "á½¥" U1f65
+<dead_dasia> <dead_acute> <Greek_omega> : "á½¥" U1f65
+<dead_acute> <dead_ogonek> <Greek_omega> : "á½¥" U1f65
+<dead_acute> <dead_dasia> <Greek_omega> : "á½¥" U1f65
+<Multi_key> <greater> <asciitilde> <Greek_omega> : "ὦ" U1f66
+<Multi_key> <asciitilde> <greater> <Greek_omega> : "ὦ" U1f66
+<dead_horn> <dead_tilde> <Greek_omega> : "ὦ" U1f66
+<dead_psili> <dead_tilde> <Greek_omega> : "ὦ" U1f66
+<dead_tilde> <dead_horn> <Greek_omega> : "ὦ" U1f66
+<dead_tilde> <dead_psili> <Greek_omega> : "ὦ" U1f66
+<Multi_key> <less> <asciitilde> <Greek_omega> : "ὧ" U1f67
+<Multi_key> <asciitilde> <less> <Greek_omega> : "ὧ" U1f67
+<dead_ogonek> <dead_tilde> <Greek_omega> : "ὧ" U1f67
+<dead_dasia> <dead_tilde> <Greek_omega> : "ὧ" U1f67
+<dead_tilde> <dead_ogonek> <Greek_omega> : "ὧ" U1f67
+<dead_tilde> <dead_dasia> <Greek_omega> : "ὧ" U1f67
+<Multi_key> <greater> <Greek_OMEGA> : "Ὠ" U1f68
+<dead_horn> <Greek_OMEGA> : "Ὠ" U1f68
+<dead_psili> <Greek_OMEGA> : "Ὠ" U1f68
+<Multi_key> <less> <Greek_OMEGA> : "Ὡ" U1f69
+<dead_ogonek> <Greek_OMEGA> : "Ὡ" U1f69
+<dead_dasia> <Greek_OMEGA> : "Ὡ" U1f69
+<Multi_key> <greater> <grave> <Greek_OMEGA> : "Ὢ" U1f6a
+<Multi_key> <grave> <greater> <Greek_OMEGA> : "Ὢ" U1f6a
+<dead_horn> <dead_grave> <Greek_OMEGA> : "Ὢ" U1f6a
+<dead_psili> <dead_grave> <Greek_OMEGA> : "Ὢ" U1f6a
+<dead_grave> <dead_horn> <Greek_OMEGA> : "Ὢ" U1f6a
+<dead_grave> <dead_psili> <Greek_OMEGA> : "Ὢ" U1f6a
+<Multi_key> <less> <grave> <Greek_OMEGA> : "Ὣ" U1f6b
+<Multi_key> <grave> <less> <Greek_OMEGA> : "Ὣ" U1f6b
+<dead_ogonek> <dead_grave> <Greek_OMEGA> : "Ὣ" U1f6b
+<dead_dasia> <dead_grave> <Greek_OMEGA> : "Ὣ" U1f6b
+<dead_grave> <dead_ogonek> <Greek_OMEGA> : "Ὣ" U1f6b
+<dead_grave> <dead_dasia> <Greek_OMEGA> : "Ὣ" U1f6b
+<Multi_key> <greater> <apostrophe> <Greek_OMEGA> : "Ὤ" U1f6c
+<Multi_key> <apostrophe> <greater> <Greek_OMEGA> : "Ὤ" U1f6c
+<dead_horn> <dead_acute> <Greek_OMEGA> : "Ὤ" U1f6c
+<dead_psili> <dead_acute> <Greek_OMEGA> : "Ὤ" U1f6c
+<dead_acute> <dead_horn> <Greek_OMEGA> : "Ὤ" U1f6c
+<dead_acute> <dead_psili> <Greek_OMEGA> : "Ὤ" U1f6c
+<Multi_key> <less> <apostrophe> <Greek_OMEGA> : "á½­" U1f6d
+<Multi_key> <apostrophe> <less> <Greek_OMEGA> : "á½­" U1f6d
+<dead_ogonek> <dead_acute> <Greek_OMEGA> : "á½­" U1f6d
+<dead_dasia> <dead_acute> <Greek_OMEGA> : "á½­" U1f6d
+<dead_acute> <dead_ogonek> <Greek_OMEGA> : "á½­" U1f6d
+<dead_acute> <dead_dasia> <Greek_OMEGA> : "á½­" U1f6d
+<Multi_key> <greater> <asciitilde> <Greek_OMEGA> : "á½®" U1f6e
+<Multi_key> <asciitilde> <greater> <Greek_OMEGA> : "á½®" U1f6e
+<dead_horn> <dead_tilde> <Greek_OMEGA> : "á½®" U1f6e
+<dead_psili> <dead_tilde> <Greek_OMEGA> : "á½®" U1f6e
+<dead_tilde> <dead_horn> <Greek_OMEGA> : "á½®" U1f6e
+<dead_tilde> <dead_psili> <Greek_OMEGA> : "á½®" U1f6e
+<Multi_key> <less> <asciitilde> <Greek_OMEGA> : "Ὧ" U1f6f
+<Multi_key> <asciitilde> <less> <Greek_OMEGA> : "Ὧ" U1f6f
+<dead_ogonek> <dead_tilde> <Greek_OMEGA> : "Ὧ" U1f6f
+<dead_dasia> <dead_tilde> <Greek_OMEGA> : "Ὧ" U1f6f
+<dead_tilde> <dead_ogonek> <Greek_OMEGA> : "Ὧ" U1f6f
+<dead_tilde> <dead_dasia> <Greek_OMEGA> : "Ὧ" U1f6f
+<Multi_key> <grave> <Greek_alpha> : "á½°" U1f70
+<dead_grave> <Greek_alpha> : "á½°" U1f70
+<Multi_key> <grave> <Greek_epsilon> : "á½²" U1f72
+<dead_grave> <Greek_epsilon> : "á½²" U1f72
+<Multi_key> <grave> <Greek_eta> : "á½´" U1f74
+<dead_grave> <Greek_eta> : "á½´" U1f74
+<Multi_key> <grave> <Greek_iota> : "ὶ" U1f76
+<dead_grave> <Greek_iota> : "ὶ" U1f76
+<Multi_key> <grave> <Greek_omicron> : "ὸ" U1f78
+<dead_grave> <Greek_omicron> : "ὸ" U1f78
+<Multi_key> <grave> <Greek_upsilon> : "ὺ" U1f7a
+<dead_grave> <Greek_upsilon> : "ὺ" U1f7a
+<Multi_key> <grave> <Greek_omega> : "á½¼" U1f7c
+<dead_grave> <Greek_omega> : "á½¼" U1f7c
+<Multi_key> <bar> <greater> <Greek_alpha> : "á¾€" U1f80
+<Multi_key> <greater> <bar> <Greek_alpha> : "á¾€" U1f80
+<dead_iota> <dead_horn> <Greek_alpha> : "á¾€" U1f80
+<dead_iota> <dead_psili> <Greek_alpha> : "á¾€" U1f80
+<dead_horn> <dead_iota> <Greek_alpha> : "á¾€" U1f80
+<dead_psili> <dead_iota> <Greek_alpha> : "á¾€" U1f80
+<Multi_key> <bar> <less> <Greek_alpha> : "á¾" U1f81
+<Multi_key> <less> <bar> <Greek_alpha> : "á¾" U1f81
+<dead_iota> <dead_ogonek> <Greek_alpha> : "á¾" U1f81
+<dead_iota> <dead_dasia> <Greek_alpha> : "á¾" U1f81
+<dead_ogonek> <dead_iota> <Greek_alpha> : "á¾" U1f81
+<dead_dasia> <dead_iota> <Greek_alpha> : "á¾" U1f81
+<Multi_key> <bar> <greater> <grave> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <bar> <grave> <greater> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <greater> <bar> <grave> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <greater> <grave> <bar> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <grave> <bar> <greater> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <grave> <greater> <bar> <Greek_alpha> : "ᾂ" U1f82
+<dead_iota> <dead_horn> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
+<dead_iota> <dead_psili> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
+<dead_iota> <dead_grave> <dead_horn> <Greek_alpha> : "ᾂ" U1f82
+<dead_iota> <dead_grave> <dead_psili> <Greek_alpha> : "ᾂ" U1f82
+<dead_horn> <dead_iota> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
+<dead_psili> <dead_iota> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
+<dead_horn> <dead_grave> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
+<dead_psili> <dead_grave> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
+<dead_grave> <dead_iota> <dead_horn> <Greek_alpha> : "ᾂ" U1f82
+<dead_grave> <dead_iota> <dead_psili> <Greek_alpha> : "ᾂ" U1f82
+<dead_grave> <dead_horn> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
+<dead_grave> <dead_psili> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <bar> <less> <grave> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <bar> <grave> <less> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <less> <bar> <grave> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <less> <grave> <bar> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <grave> <bar> <less> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <grave> <less> <bar> <Greek_alpha> : "ᾃ" U1f83
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
+<dead_iota> <dead_dasia> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_alpha> : "ᾃ" U1f83
+<dead_iota> <dead_grave> <dead_dasia> <Greek_alpha> : "ᾃ" U1f83
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
+<dead_dasia> <dead_iota> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
+<dead_dasia> <dead_grave> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_alpha> : "ᾃ" U1f83
+<dead_grave> <dead_iota> <dead_dasia> <Greek_alpha> : "ᾃ" U1f83
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
+<dead_grave> <dead_dasia> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <bar> <greater> <apostrophe> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <bar> <apostrophe> <greater> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <greater> <bar> <apostrophe> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <greater> <apostrophe> <bar> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <apostrophe> <bar> <greater> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <apostrophe> <greater> <bar> <Greek_alpha> : "ᾄ" U1f84
+<dead_iota> <dead_horn> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
+<dead_iota> <dead_psili> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
+<dead_iota> <dead_acute> <dead_horn> <Greek_alpha> : "ᾄ" U1f84
+<dead_iota> <dead_acute> <dead_psili> <Greek_alpha> : "ᾄ" U1f84
+<dead_horn> <dead_iota> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
+<dead_psili> <dead_iota> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
+<dead_horn> <dead_acute> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
+<dead_psili> <dead_acute> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
+<dead_acute> <dead_iota> <dead_horn> <Greek_alpha> : "ᾄ" U1f84
+<dead_acute> <dead_iota> <dead_psili> <Greek_alpha> : "ᾄ" U1f84
+<dead_acute> <dead_horn> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
+<dead_acute> <dead_psili> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <bar> <less> <apostrophe> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <bar> <apostrophe> <less> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <less> <bar> <apostrophe> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <less> <apostrophe> <bar> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <apostrophe> <bar> <less> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <apostrophe> <less> <bar> <Greek_alpha> : "á¾…" U1f85
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_alpha> : "á¾…" U1f85
+<dead_iota> <dead_dasia> <dead_acute> <Greek_alpha> : "á¾…" U1f85
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_alpha> : "á¾…" U1f85
+<dead_iota> <dead_acute> <dead_dasia> <Greek_alpha> : "á¾…" U1f85
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_alpha> : "á¾…" U1f85
+<dead_dasia> <dead_iota> <dead_acute> <Greek_alpha> : "á¾…" U1f85
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_alpha> : "á¾…" U1f85
+<dead_dasia> <dead_acute> <dead_iota> <Greek_alpha> : "á¾…" U1f85
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_alpha> : "á¾…" U1f85
+<dead_acute> <dead_iota> <dead_dasia> <Greek_alpha> : "á¾…" U1f85
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_alpha> : "á¾…" U1f85
+<dead_acute> <dead_dasia> <dead_iota> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <bar> <greater> <asciitilde> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <bar> <asciitilde> <greater> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <greater> <bar> <asciitilde> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <greater> <asciitilde> <bar> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <asciitilde> <bar> <greater> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <asciitilde> <greater> <bar> <Greek_alpha> : "ᾆ" U1f86
+<dead_iota> <dead_horn> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
+<dead_iota> <dead_psili> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
+<dead_iota> <dead_tilde> <dead_horn> <Greek_alpha> : "ᾆ" U1f86
+<dead_iota> <dead_tilde> <dead_psili> <Greek_alpha> : "ᾆ" U1f86
+<dead_horn> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
+<dead_psili> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
+<dead_horn> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
+<dead_psili> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
+<dead_tilde> <dead_iota> <dead_horn> <Greek_alpha> : "ᾆ" U1f86
+<dead_tilde> <dead_iota> <dead_psili> <Greek_alpha> : "ᾆ" U1f86
+<dead_tilde> <dead_horn> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
+<dead_tilde> <dead_psili> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <bar> <less> <asciitilde> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <bar> <asciitilde> <less> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <less> <bar> <asciitilde> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <less> <asciitilde> <bar> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <asciitilde> <bar> <less> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <asciitilde> <less> <bar> <Greek_alpha> : "ᾇ" U1f87
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_alpha> : "ᾇ" U1f87
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_alpha> : "ᾇ" U1f87
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_alpha> : "ᾇ" U1f87
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_alpha> : "ᾇ" U1f87
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <bar> <greater> <Greek_ALPHA> : "ᾈ" U1f88
+<Multi_key> <greater> <bar> <Greek_ALPHA> : "ᾈ" U1f88
+<dead_iota> <dead_horn> <Greek_ALPHA> : "ᾈ" U1f88
+<dead_iota> <dead_psili> <Greek_ALPHA> : "ᾈ" U1f88
+<dead_horn> <dead_iota> <Greek_ALPHA> : "ᾈ" U1f88
+<dead_psili> <dead_iota> <Greek_ALPHA> : "ᾈ" U1f88
+<Multi_key> <bar> <less> <Greek_ALPHA> : "ᾉ" U1f89
+<Multi_key> <less> <bar> <Greek_ALPHA> : "ᾉ" U1f89
+<dead_iota> <dead_ogonek> <Greek_ALPHA> : "ᾉ" U1f89
+<dead_iota> <dead_dasia> <Greek_ALPHA> : "ᾉ" U1f89
+<dead_ogonek> <dead_iota> <Greek_ALPHA> : "ᾉ" U1f89
+<dead_dasia> <dead_iota> <Greek_ALPHA> : "ᾉ" U1f89
+<Multi_key> <bar> <greater> <grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <bar> <grave> <greater> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <greater> <bar> <grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <greater> <grave> <bar> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <grave> <bar> <greater> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <grave> <greater> <bar> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_iota> <dead_horn> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_iota> <dead_psili> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_iota> <dead_grave> <dead_horn> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_iota> <dead_grave> <dead_psili> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_horn> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_psili> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_horn> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_psili> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_grave> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_grave> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_grave> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_grave> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <bar> <less> <grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <bar> <grave> <less> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <less> <bar> <grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <less> <grave> <bar> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <grave> <bar> <less> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <grave> <less> <bar> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_iota> <dead_dasia> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_iota> <dead_grave> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_dasia> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_dasia> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_grave> <dead_iota> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_grave> <dead_dasia> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <bar> <greater> <apostrophe> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <bar> <apostrophe> <greater> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <greater> <bar> <apostrophe> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <greater> <apostrophe> <bar> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <apostrophe> <bar> <greater> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <apostrophe> <greater> <bar> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_iota> <dead_horn> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_iota> <dead_psili> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_iota> <dead_acute> <dead_horn> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_iota> <dead_acute> <dead_psili> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_horn> <dead_iota> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_psili> <dead_iota> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_horn> <dead_acute> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_psili> <dead_acute> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_acute> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_acute> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_acute> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_acute> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <bar> <less> <apostrophe> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <bar> <apostrophe> <less> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <less> <bar> <apostrophe> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <less> <apostrophe> <bar> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <apostrophe> <bar> <less> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <apostrophe> <less> <bar> <Greek_ALPHA> : "á¾" U1f8d
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
+<dead_iota> <dead_dasia> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8d
+<dead_iota> <dead_acute> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8d
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
+<dead_dasia> <dead_iota> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
+<dead_dasia> <dead_acute> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8d
+<dead_acute> <dead_iota> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8d
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
+<dead_acute> <dead_dasia> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <bar> <greater> <asciitilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <bar> <asciitilde> <greater> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <greater> <bar> <asciitilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <greater> <asciitilde> <bar> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <asciitilde> <bar> <greater> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <asciitilde> <greater> <bar> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_iota> <dead_horn> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_iota> <dead_psili> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_iota> <dead_tilde> <dead_horn> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_iota> <dead_tilde> <dead_psili> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_horn> <dead_iota> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_psili> <dead_iota> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_horn> <dead_tilde> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_psili> <dead_tilde> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_tilde> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_tilde> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_tilde> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_tilde> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <bar> <less> <asciitilde> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <bar> <asciitilde> <less> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <less> <bar> <asciitilde> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <less> <asciitilde> <bar> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <asciitilde> <bar> <less> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <asciitilde> <less> <bar> <Greek_ALPHA> : "á¾" U1f8f
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8f
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8f
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8f
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8f
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <bar> <greater> <Greek_eta> : "á¾" U1f90
+<Multi_key> <greater> <bar> <Greek_eta> : "á¾" U1f90
+<dead_iota> <dead_horn> <Greek_eta> : "á¾" U1f90
+<dead_iota> <dead_psili> <Greek_eta> : "á¾" U1f90
+<dead_horn> <dead_iota> <Greek_eta> : "á¾" U1f90
+<dead_psili> <dead_iota> <Greek_eta> : "á¾" U1f90
+<Multi_key> <bar> <less> <Greek_eta> : "ᾑ" U1f91
+<Multi_key> <less> <bar> <Greek_eta> : "ᾑ" U1f91
+<dead_iota> <dead_ogonek> <Greek_eta> : "ᾑ" U1f91
+<dead_iota> <dead_dasia> <Greek_eta> : "ᾑ" U1f91
+<dead_ogonek> <dead_iota> <Greek_eta> : "ᾑ" U1f91
+<dead_dasia> <dead_iota> <Greek_eta> : "ᾑ" U1f91
+<Multi_key> <bar> <greater> <grave> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <bar> <grave> <greater> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <greater> <bar> <grave> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <greater> <grave> <bar> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <grave> <bar> <greater> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <grave> <greater> <bar> <Greek_eta> : "á¾’" U1f92
+<dead_iota> <dead_horn> <dead_grave> <Greek_eta> : "á¾’" U1f92
+<dead_iota> <dead_psili> <dead_grave> <Greek_eta> : "á¾’" U1f92
+<dead_iota> <dead_grave> <dead_horn> <Greek_eta> : "á¾’" U1f92
+<dead_iota> <dead_grave> <dead_psili> <Greek_eta> : "á¾’" U1f92
+<dead_horn> <dead_iota> <dead_grave> <Greek_eta> : "á¾’" U1f92
+<dead_psili> <dead_iota> <dead_grave> <Greek_eta> : "á¾’" U1f92
+<dead_horn> <dead_grave> <dead_iota> <Greek_eta> : "á¾’" U1f92
+<dead_psili> <dead_grave> <dead_iota> <Greek_eta> : "á¾’" U1f92
+<dead_grave> <dead_iota> <dead_horn> <Greek_eta> : "á¾’" U1f92
+<dead_grave> <dead_iota> <dead_psili> <Greek_eta> : "á¾’" U1f92
+<dead_grave> <dead_horn> <dead_iota> <Greek_eta> : "á¾’" U1f92
+<dead_grave> <dead_psili> <dead_iota> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <bar> <less> <grave> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <bar> <grave> <less> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <less> <bar> <grave> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <less> <grave> <bar> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <grave> <bar> <less> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <grave> <less> <bar> <Greek_eta> : "ᾓ" U1f93
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_eta> : "ᾓ" U1f93
+<dead_iota> <dead_dasia> <dead_grave> <Greek_eta> : "ᾓ" U1f93
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_eta> : "ᾓ" U1f93
+<dead_iota> <dead_grave> <dead_dasia> <Greek_eta> : "ᾓ" U1f93
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_eta> : "ᾓ" U1f93
+<dead_dasia> <dead_iota> <dead_grave> <Greek_eta> : "ᾓ" U1f93
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_eta> : "ᾓ" U1f93
+<dead_dasia> <dead_grave> <dead_iota> <Greek_eta> : "ᾓ" U1f93
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_eta> : "ᾓ" U1f93
+<dead_grave> <dead_iota> <dead_dasia> <Greek_eta> : "ᾓ" U1f93
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_eta> : "ᾓ" U1f93
+<dead_grave> <dead_dasia> <dead_iota> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <bar> <greater> <apostrophe> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <bar> <apostrophe> <greater> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <greater> <bar> <apostrophe> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <greater> <apostrophe> <bar> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <apostrophe> <bar> <greater> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <apostrophe> <greater> <bar> <Greek_eta> : "á¾”" U1f94
+<dead_iota> <dead_horn> <dead_acute> <Greek_eta> : "á¾”" U1f94
+<dead_iota> <dead_psili> <dead_acute> <Greek_eta> : "á¾”" U1f94
+<dead_iota> <dead_acute> <dead_horn> <Greek_eta> : "á¾”" U1f94
+<dead_iota> <dead_acute> <dead_psili> <Greek_eta> : "á¾”" U1f94
+<dead_horn> <dead_iota> <dead_acute> <Greek_eta> : "á¾”" U1f94
+<dead_psili> <dead_iota> <dead_acute> <Greek_eta> : "á¾”" U1f94
+<dead_horn> <dead_acute> <dead_iota> <Greek_eta> : "á¾”" U1f94
+<dead_psili> <dead_acute> <dead_iota> <Greek_eta> : "á¾”" U1f94
+<dead_acute> <dead_iota> <dead_horn> <Greek_eta> : "á¾”" U1f94
+<dead_acute> <dead_iota> <dead_psili> <Greek_eta> : "á¾”" U1f94
+<dead_acute> <dead_horn> <dead_iota> <Greek_eta> : "á¾”" U1f94
+<dead_acute> <dead_psili> <dead_iota> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <bar> <less> <apostrophe> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <bar> <apostrophe> <less> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <less> <bar> <apostrophe> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <less> <apostrophe> <bar> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <apostrophe> <bar> <less> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <apostrophe> <less> <bar> <Greek_eta> : "ᾕ" U1f95
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_eta> : "ᾕ" U1f95
+<dead_iota> <dead_dasia> <dead_acute> <Greek_eta> : "ᾕ" U1f95
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_eta> : "ᾕ" U1f95
+<dead_iota> <dead_acute> <dead_dasia> <Greek_eta> : "ᾕ" U1f95
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_eta> : "ᾕ" U1f95
+<dead_dasia> <dead_iota> <dead_acute> <Greek_eta> : "ᾕ" U1f95
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_eta> : "ᾕ" U1f95
+<dead_dasia> <dead_acute> <dead_iota> <Greek_eta> : "ᾕ" U1f95
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_eta> : "ᾕ" U1f95
+<dead_acute> <dead_iota> <dead_dasia> <Greek_eta> : "ᾕ" U1f95
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_eta> : "ᾕ" U1f95
+<dead_acute> <dead_dasia> <dead_iota> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <bar> <greater> <asciitilde> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <bar> <asciitilde> <greater> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <greater> <bar> <asciitilde> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <greater> <asciitilde> <bar> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <asciitilde> <bar> <greater> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <asciitilde> <greater> <bar> <Greek_eta> : "á¾–" U1f96
+<dead_iota> <dead_horn> <dead_tilde> <Greek_eta> : "á¾–" U1f96
+<dead_iota> <dead_psili> <dead_tilde> <Greek_eta> : "á¾–" U1f96
+<dead_iota> <dead_tilde> <dead_horn> <Greek_eta> : "á¾–" U1f96
+<dead_iota> <dead_tilde> <dead_psili> <Greek_eta> : "á¾–" U1f96
+<dead_horn> <dead_iota> <dead_tilde> <Greek_eta> : "á¾–" U1f96
+<dead_psili> <dead_iota> <dead_tilde> <Greek_eta> : "á¾–" U1f96
+<dead_horn> <dead_tilde> <dead_iota> <Greek_eta> : "á¾–" U1f96
+<dead_psili> <dead_tilde> <dead_iota> <Greek_eta> : "á¾–" U1f96
+<dead_tilde> <dead_iota> <dead_horn> <Greek_eta> : "á¾–" U1f96
+<dead_tilde> <dead_iota> <dead_psili> <Greek_eta> : "á¾–" U1f96
+<dead_tilde> <dead_horn> <dead_iota> <Greek_eta> : "á¾–" U1f96
+<dead_tilde> <dead_psili> <dead_iota> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <bar> <less> <asciitilde> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <bar> <asciitilde> <less> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <less> <bar> <asciitilde> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <less> <asciitilde> <bar> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <asciitilde> <bar> <less> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <asciitilde> <less> <bar> <Greek_eta> : "á¾—" U1f97
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_eta> : "á¾—" U1f97
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_eta> : "á¾—" U1f97
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_eta> : "á¾—" U1f97
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_eta> : "á¾—" U1f97
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_eta> : "á¾—" U1f97
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_eta> : "á¾—" U1f97
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_eta> : "á¾—" U1f97
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_eta> : "á¾—" U1f97
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_eta> : "á¾—" U1f97
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_eta> : "á¾—" U1f97
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_eta> : "á¾—" U1f97
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <bar> <greater> <Greek_ETA> : "ᾘ" U1f98
+<Multi_key> <greater> <bar> <Greek_ETA> : "ᾘ" U1f98
+<dead_iota> <dead_horn> <Greek_ETA> : "ᾘ" U1f98
+<dead_iota> <dead_psili> <Greek_ETA> : "ᾘ" U1f98
+<dead_horn> <dead_iota> <Greek_ETA> : "ᾘ" U1f98
+<dead_psili> <dead_iota> <Greek_ETA> : "ᾘ" U1f98
+<Multi_key> <bar> <less> <Greek_ETA> : "á¾™" U1f99
+<Multi_key> <less> <bar> <Greek_ETA> : "á¾™" U1f99
+<dead_iota> <dead_ogonek> <Greek_ETA> : "á¾™" U1f99
+<dead_iota> <dead_dasia> <Greek_ETA> : "á¾™" U1f99
+<dead_ogonek> <dead_iota> <Greek_ETA> : "á¾™" U1f99
+<dead_dasia> <dead_iota> <Greek_ETA> : "á¾™" U1f99
+<Multi_key> <bar> <greater> <grave> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <bar> <grave> <greater> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <greater> <bar> <grave> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <greater> <grave> <bar> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <grave> <bar> <greater> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <grave> <greater> <bar> <Greek_ETA> : "ᾚ" U1f9a
+<dead_iota> <dead_horn> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
+<dead_iota> <dead_psili> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
+<dead_iota> <dead_grave> <dead_horn> <Greek_ETA> : "ᾚ" U1f9a
+<dead_iota> <dead_grave> <dead_psili> <Greek_ETA> : "ᾚ" U1f9a
+<dead_horn> <dead_iota> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
+<dead_psili> <dead_iota> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
+<dead_horn> <dead_grave> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
+<dead_psili> <dead_grave> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
+<dead_grave> <dead_iota> <dead_horn> <Greek_ETA> : "ᾚ" U1f9a
+<dead_grave> <dead_iota> <dead_psili> <Greek_ETA> : "ᾚ" U1f9a
+<dead_grave> <dead_horn> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
+<dead_grave> <dead_psili> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <bar> <less> <grave> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <bar> <grave> <less> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <less> <bar> <grave> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <less> <grave> <bar> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <grave> <bar> <less> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <grave> <less> <bar> <Greek_ETA> : "á¾›" U1f9b
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
+<dead_iota> <dead_dasia> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_ETA> : "á¾›" U1f9b
+<dead_iota> <dead_grave> <dead_dasia> <Greek_ETA> : "á¾›" U1f9b
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
+<dead_dasia> <dead_iota> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
+<dead_dasia> <dead_grave> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_ETA> : "á¾›" U1f9b
+<dead_grave> <dead_iota> <dead_dasia> <Greek_ETA> : "á¾›" U1f9b
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
+<dead_grave> <dead_dasia> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <bar> <greater> <apostrophe> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <bar> <apostrophe> <greater> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <greater> <bar> <apostrophe> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <greater> <apostrophe> <bar> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <apostrophe> <bar> <greater> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <apostrophe> <greater> <bar> <Greek_ETA> : "ᾜ" U1f9c
+<dead_iota> <dead_horn> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
+<dead_iota> <dead_psili> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
+<dead_iota> <dead_acute> <dead_horn> <Greek_ETA> : "ᾜ" U1f9c
+<dead_iota> <dead_acute> <dead_psili> <Greek_ETA> : "ᾜ" U1f9c
+<dead_horn> <dead_iota> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
+<dead_psili> <dead_iota> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
+<dead_horn> <dead_acute> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
+<dead_psili> <dead_acute> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
+<dead_acute> <dead_iota> <dead_horn> <Greek_ETA> : "ᾜ" U1f9c
+<dead_acute> <dead_iota> <dead_psili> <Greek_ETA> : "ᾜ" U1f9c
+<dead_acute> <dead_horn> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
+<dead_acute> <dead_psili> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <bar> <less> <apostrophe> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <bar> <apostrophe> <less> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <less> <bar> <apostrophe> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <less> <apostrophe> <bar> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <apostrophe> <bar> <less> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <apostrophe> <less> <bar> <Greek_ETA> : "á¾" U1f9d
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_ETA> : "á¾" U1f9d
+<dead_iota> <dead_dasia> <dead_acute> <Greek_ETA> : "á¾" U1f9d
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_ETA> : "á¾" U1f9d
+<dead_iota> <dead_acute> <dead_dasia> <Greek_ETA> : "á¾" U1f9d
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_ETA> : "á¾" U1f9d
+<dead_dasia> <dead_iota> <dead_acute> <Greek_ETA> : "á¾" U1f9d
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_ETA> : "á¾" U1f9d
+<dead_dasia> <dead_acute> <dead_iota> <Greek_ETA> : "á¾" U1f9d
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_ETA> : "á¾" U1f9d
+<dead_acute> <dead_iota> <dead_dasia> <Greek_ETA> : "á¾" U1f9d
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_ETA> : "á¾" U1f9d
+<dead_acute> <dead_dasia> <dead_iota> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <bar> <greater> <asciitilde> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <bar> <asciitilde> <greater> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <greater> <bar> <asciitilde> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <greater> <asciitilde> <bar> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <asciitilde> <bar> <greater> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <asciitilde> <greater> <bar> <Greek_ETA> : "ᾞ" U1f9e
+<dead_iota> <dead_horn> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
+<dead_iota> <dead_psili> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
+<dead_iota> <dead_tilde> <dead_horn> <Greek_ETA> : "ᾞ" U1f9e
+<dead_iota> <dead_tilde> <dead_psili> <Greek_ETA> : "ᾞ" U1f9e
+<dead_horn> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
+<dead_psili> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
+<dead_horn> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
+<dead_psili> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
+<dead_tilde> <dead_iota> <dead_horn> <Greek_ETA> : "ᾞ" U1f9e
+<dead_tilde> <dead_iota> <dead_psili> <Greek_ETA> : "ᾞ" U1f9e
+<dead_tilde> <dead_horn> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
+<dead_tilde> <dead_psili> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <bar> <less> <asciitilde> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <bar> <asciitilde> <less> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <less> <bar> <asciitilde> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <less> <asciitilde> <bar> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <asciitilde> <bar> <less> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <asciitilde> <less> <bar> <Greek_ETA> : "ᾟ" U1f9f
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_ETA> : "ᾟ" U1f9f
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_ETA> : "ᾟ" U1f9f
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_ETA> : "ᾟ" U1f9f
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_ETA> : "ᾟ" U1f9f
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <bar> <greater> <Greek_omega> : "á¾ " U1fa0
+<Multi_key> <greater> <bar> <Greek_omega> : "á¾ " U1fa0
+<dead_iota> <dead_horn> <Greek_omega> : "á¾ " U1fa0
+<dead_iota> <dead_psili> <Greek_omega> : "á¾ " U1fa0
+<dead_horn> <dead_iota> <Greek_omega> : "á¾ " U1fa0
+<dead_psili> <dead_iota> <Greek_omega> : "á¾ " U1fa0
+<Multi_key> <bar> <less> <Greek_omega> : "ᾡ" U1fa1
+<Multi_key> <less> <bar> <Greek_omega> : "ᾡ" U1fa1
+<dead_iota> <dead_ogonek> <Greek_omega> : "ᾡ" U1fa1
+<dead_iota> <dead_dasia> <Greek_omega> : "ᾡ" U1fa1
+<dead_ogonek> <dead_iota> <Greek_omega> : "ᾡ" U1fa1
+<dead_dasia> <dead_iota> <Greek_omega> : "ᾡ" U1fa1
+<Multi_key> <bar> <greater> <grave> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <bar> <grave> <greater> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <greater> <bar> <grave> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <greater> <grave> <bar> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <grave> <bar> <greater> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <grave> <greater> <bar> <Greek_omega> : "á¾¢" U1fa2
+<dead_iota> <dead_horn> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
+<dead_iota> <dead_psili> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
+<dead_iota> <dead_grave> <dead_horn> <Greek_omega> : "á¾¢" U1fa2
+<dead_iota> <dead_grave> <dead_psili> <Greek_omega> : "á¾¢" U1fa2
+<dead_horn> <dead_iota> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
+<dead_psili> <dead_iota> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
+<dead_horn> <dead_grave> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
+<dead_psili> <dead_grave> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
+<dead_grave> <dead_iota> <dead_horn> <Greek_omega> : "á¾¢" U1fa2
+<dead_grave> <dead_iota> <dead_psili> <Greek_omega> : "á¾¢" U1fa2
+<dead_grave> <dead_horn> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
+<dead_grave> <dead_psili> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <bar> <less> <grave> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <bar> <grave> <less> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <less> <bar> <grave> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <less> <grave> <bar> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <grave> <bar> <less> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <grave> <less> <bar> <Greek_omega> : "á¾£" U1fa3
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_omega> : "á¾£" U1fa3
+<dead_iota> <dead_dasia> <dead_grave> <Greek_omega> : "á¾£" U1fa3
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_omega> : "á¾£" U1fa3
+<dead_iota> <dead_grave> <dead_dasia> <Greek_omega> : "á¾£" U1fa3
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_omega> : "á¾£" U1fa3
+<dead_dasia> <dead_iota> <dead_grave> <Greek_omega> : "á¾£" U1fa3
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_omega> : "á¾£" U1fa3
+<dead_dasia> <dead_grave> <dead_iota> <Greek_omega> : "á¾£" U1fa3
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_omega> : "á¾£" U1fa3
+<dead_grave> <dead_iota> <dead_dasia> <Greek_omega> : "á¾£" U1fa3
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_omega> : "á¾£" U1fa3
+<dead_grave> <dead_dasia> <dead_iota> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <bar> <greater> <apostrophe> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <bar> <apostrophe> <greater> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <greater> <bar> <apostrophe> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <greater> <apostrophe> <bar> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <apostrophe> <bar> <greater> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <apostrophe> <greater> <bar> <Greek_omega> : "ᾤ" U1fa4
+<dead_iota> <dead_horn> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
+<dead_iota> <dead_psili> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
+<dead_iota> <dead_acute> <dead_horn> <Greek_omega> : "ᾤ" U1fa4
+<dead_iota> <dead_acute> <dead_psili> <Greek_omega> : "ᾤ" U1fa4
+<dead_horn> <dead_iota> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
+<dead_psili> <dead_iota> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
+<dead_horn> <dead_acute> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
+<dead_psili> <dead_acute> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
+<dead_acute> <dead_iota> <dead_horn> <Greek_omega> : "ᾤ" U1fa4
+<dead_acute> <dead_iota> <dead_psili> <Greek_omega> : "ᾤ" U1fa4
+<dead_acute> <dead_horn> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
+<dead_acute> <dead_psili> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <bar> <less> <apostrophe> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <bar> <apostrophe> <less> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <less> <bar> <apostrophe> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <less> <apostrophe> <bar> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <apostrophe> <bar> <less> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <apostrophe> <less> <bar> <Greek_omega> : "á¾¥" U1fa5
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
+<dead_iota> <dead_dasia> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_omega> : "á¾¥" U1fa5
+<dead_iota> <dead_acute> <dead_dasia> <Greek_omega> : "á¾¥" U1fa5
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
+<dead_dasia> <dead_iota> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
+<dead_dasia> <dead_acute> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_omega> : "á¾¥" U1fa5
+<dead_acute> <dead_iota> <dead_dasia> <Greek_omega> : "á¾¥" U1fa5
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
+<dead_acute> <dead_dasia> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <bar> <greater> <asciitilde> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <bar> <asciitilde> <greater> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <greater> <bar> <asciitilde> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <greater> <asciitilde> <bar> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <asciitilde> <bar> <greater> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <asciitilde> <greater> <bar> <Greek_omega> : "ᾦ" U1fa6
+<dead_iota> <dead_horn> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
+<dead_iota> <dead_psili> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
+<dead_iota> <dead_tilde> <dead_horn> <Greek_omega> : "ᾦ" U1fa6
+<dead_iota> <dead_tilde> <dead_psili> <Greek_omega> : "ᾦ" U1fa6
+<dead_horn> <dead_iota> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
+<dead_psili> <dead_iota> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
+<dead_horn> <dead_tilde> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
+<dead_psili> <dead_tilde> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
+<dead_tilde> <dead_iota> <dead_horn> <Greek_omega> : "ᾦ" U1fa6
+<dead_tilde> <dead_iota> <dead_psili> <Greek_omega> : "ᾦ" U1fa6
+<dead_tilde> <dead_horn> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
+<dead_tilde> <dead_psili> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <bar> <less> <asciitilde> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <bar> <asciitilde> <less> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <less> <bar> <asciitilde> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <less> <asciitilde> <bar> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <asciitilde> <bar> <less> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <asciitilde> <less> <bar> <Greek_omega> : "ᾧ" U1fa7
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_omega> : "ᾧ" U1fa7
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_omega> : "ᾧ" U1fa7
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_omega> : "ᾧ" U1fa7
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_omega> : "ᾧ" U1fa7
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <bar> <greater> <Greek_OMEGA> : "ᾨ" U1fa8
+<Multi_key> <greater> <bar> <Greek_OMEGA> : "ᾨ" U1fa8
+<dead_iota> <dead_horn> <Greek_OMEGA> : "ᾨ" U1fa8
+<dead_iota> <dead_psili> <Greek_OMEGA> : "ᾨ" U1fa8
+<dead_horn> <dead_iota> <Greek_OMEGA> : "ᾨ" U1fa8
+<dead_psili> <dead_iota> <Greek_OMEGA> : "ᾨ" U1fa8
+<Multi_key> <bar> <less> <Greek_OMEGA> : "ᾩ" U1fa9
+<Multi_key> <less> <bar> <Greek_OMEGA> : "ᾩ" U1fa9
+<dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾩ" U1fa9
+<dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾩ" U1fa9
+<dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾩ" U1fa9
+<dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾩ" U1fa9
+<Multi_key> <bar> <greater> <grave> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <bar> <grave> <greater> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <greater> <bar> <grave> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <greater> <grave> <bar> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <grave> <bar> <greater> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <grave> <greater> <bar> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_iota> <dead_horn> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_iota> <dead_psili> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_iota> <dead_grave> <dead_horn> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_iota> <dead_grave> <dead_psili> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_horn> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_psili> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_horn> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_psili> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_grave> <dead_iota> <dead_horn> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_grave> <dead_iota> <dead_psili> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_grave> <dead_horn> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_grave> <dead_psili> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <bar> <less> <grave> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <bar> <grave> <less> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <less> <bar> <grave> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <less> <grave> <bar> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <grave> <bar> <less> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <grave> <less> <bar> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_iota> <dead_dasia> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_iota> <dead_grave> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_dasia> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_dasia> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_grave> <dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_grave> <dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <bar> <greater> <apostrophe> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <bar> <apostrophe> <greater> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <greater> <bar> <apostrophe> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <greater> <apostrophe> <bar> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <apostrophe> <bar> <greater> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <apostrophe> <greater> <bar> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_iota> <dead_horn> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_iota> <dead_psili> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_iota> <dead_acute> <dead_horn> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_iota> <dead_acute> <dead_psili> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_horn> <dead_iota> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_psili> <dead_iota> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_horn> <dead_acute> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_psili> <dead_acute> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_acute> <dead_iota> <dead_horn> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_acute> <dead_iota> <dead_psili> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_acute> <dead_horn> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_acute> <dead_psili> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <bar> <less> <apostrophe> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <bar> <apostrophe> <less> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <less> <bar> <apostrophe> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <less> <apostrophe> <bar> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <apostrophe> <bar> <less> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <apostrophe> <less> <bar> <Greek_OMEGA> : "á¾­" U1fad
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
+<dead_iota> <dead_dasia> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_OMEGA> : "á¾­" U1fad
+<dead_iota> <dead_acute> <dead_dasia> <Greek_OMEGA> : "á¾­" U1fad
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
+<dead_dasia> <dead_iota> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
+<dead_dasia> <dead_acute> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "á¾­" U1fad
+<dead_acute> <dead_iota> <dead_dasia> <Greek_OMEGA> : "á¾­" U1fad
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
+<dead_acute> <dead_dasia> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <bar> <greater> <asciitilde> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <bar> <asciitilde> <greater> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <greater> <bar> <asciitilde> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <greater> <asciitilde> <bar> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <asciitilde> <bar> <greater> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <asciitilde> <greater> <bar> <Greek_OMEGA> : "á¾®" U1fae
+<dead_iota> <dead_horn> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
+<dead_iota> <dead_psili> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
+<dead_iota> <dead_tilde> <dead_horn> <Greek_OMEGA> : "á¾®" U1fae
+<dead_iota> <dead_tilde> <dead_psili> <Greek_OMEGA> : "á¾®" U1fae
+<dead_horn> <dead_iota> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
+<dead_psili> <dead_iota> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
+<dead_horn> <dead_tilde> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
+<dead_psili> <dead_tilde> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
+<dead_tilde> <dead_iota> <dead_horn> <Greek_OMEGA> : "á¾®" U1fae
+<dead_tilde> <dead_iota> <dead_psili> <Greek_OMEGA> : "á¾®" U1fae
+<dead_tilde> <dead_horn> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
+<dead_tilde> <dead_psili> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <bar> <less> <asciitilde> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <bar> <asciitilde> <less> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <less> <bar> <asciitilde> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <less> <asciitilde> <bar> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <asciitilde> <bar> <less> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <asciitilde> <less> <bar> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_breve> <Greek_alpha> : "á¾°" U1fb0
+<dead_macron> <Greek_alpha> : "á¾±" U1fb1
+<dead_breve> <Greek_ALPHA> : "Ᾰ" U1fb8
+<dead_macron> <Greek_ALPHA> : "á¾¹" U1fb9
+<dead_breve> <Greek_iota> : "á¿" U1fd0
+<dead_macron> <Greek_iota> : "á¿‘" U1fd1
+<dead_breve> <Greek_IOTA> : "Ῐ" U1fd8
+<dead_macron> <Greek_IOTA> : "á¿™" U1fd9
+<dead_breve> <Greek_upsilon> : "á¿ " U1fe0
+<dead_macron> <Greek_upsilon> : "á¿¡" U1fe1
+<dead_breve> <Greek_UPSILON> : "Ῠ" U1fe8
+<dead_macron> <Greek_UPSILON> : "á¿©" U1fe9
+<Multi_key> <grave> <Greek_ALPHA> : "Ὰ" U1fba
+<dead_grave> <Greek_ALPHA> : "Ὰ" U1fba
+<Multi_key> <grave> <Greek_EPSILON> : "Ὲ" U1fc8
+<dead_grave> <Greek_EPSILON> : "Ὲ" U1fc8
+<Multi_key> <grave> <Greek_ETA> : "á¿Š" U1fca
+<dead_grave> <Greek_ETA> : "á¿Š" U1fca
+<Multi_key> <grave> <Greek_IOTA> : "á¿š" U1fda
+<dead_grave> <Greek_IOTA> : "á¿š" U1fda
+<Multi_key> <grave> <Greek_UPSILON> : "Ὺ" U1fea
+<dead_grave> <Greek_UPSILON> : "Ὺ" U1fea
+<Multi_key> <grave> <Greek_OMICRON> : "Ὸ" U1ff8
+<dead_grave> <Greek_OMICRON> : "Ὸ" U1ff8
+<Multi_key> <grave> <Greek_OMEGA> : "Ὼ" U1ffa
+<dead_grave> <Greek_OMEGA> : "Ὼ" U1ffa
+<Multi_key> <bar> <grave> <Greek_alpha> : "á¾²" U1fb2
+<Multi_key> <grave> <bar> <Greek_alpha> : "á¾²" U1fb2
+<dead_iota> <dead_grave> <Greek_alpha> : "á¾²" U1fb2
+<dead_grave> <dead_iota> <Greek_alpha> : "á¾²" U1fb2
+<Multi_key> <bar> <Greek_alpha> : "á¾³" U1fb3
+<dead_iota> <Greek_alpha> : "á¾³" U1fb3
+<Multi_key> <bar> <apostrophe> <Greek_alpha> : "á¾´" U1fb4
+<Multi_key> <apostrophe> <bar> <Greek_alpha> : "á¾´" U1fb4
+<dead_iota> <dead_acute> <Greek_alpha> : "á¾´" U1fb4
+<dead_acute> <dead_iota> <Greek_alpha> : "á¾´" U1fb4
+<Multi_key> <asciitilde> <Greek_alpha> : "ᾶ" U1fb6
+<dead_tilde> <Greek_alpha> : "ᾶ" U1fb6
+<Multi_key> <bar> <asciitilde> <Greek_alpha> : "á¾·" U1fb7
+<Multi_key> <asciitilde> <bar> <Greek_alpha> : "á¾·" U1fb7
+<dead_iota> <dead_tilde> <Greek_alpha> : "á¾·" U1fb7
+<dead_tilde> <dead_iota> <Greek_alpha> : "á¾·" U1fb7
+<Multi_key> <bar> <grave> <Greek_eta> : "á¿‚" U1fc2
+<Multi_key> <grave> <bar> <Greek_eta> : "á¿‚" U1fc2
+<dead_iota> <dead_grave> <Greek_eta> : "á¿‚" U1fc2
+<dead_grave> <dead_iota> <Greek_eta> : "á¿‚" U1fc2
+<Multi_key> <bar> <Greek_eta> : "ῃ" U1fc3
+<dead_iota> <Greek_eta> : "ῃ" U1fc3
+<Multi_key> <bar> <apostrophe> <Greek_eta> : "á¿„" U1fc4
+<Multi_key> <apostrophe> <bar> <Greek_eta> : "á¿„" U1fc4
+<dead_iota> <dead_acute> <Greek_eta> : "á¿„" U1fc4
+<dead_acute> <dead_iota> <Greek_eta> : "á¿„" U1fc4
+<Multi_key> <asciitilde> <Greek_eta> : "ῆ" U1fc6
+<dead_tilde> <Greek_eta> : "ῆ" U1fc6
+<Multi_key> <bar> <asciitilde> <Greek_eta> : "ῇ" U1fc7
+<Multi_key> <asciitilde> <bar> <Greek_eta> : "ῇ" U1fc7
+<dead_iota> <dead_tilde> <Greek_eta> : "ῇ" U1fc7
+<dead_tilde> <dead_iota> <Greek_eta> : "ῇ" U1fc7
+<Multi_key> <quotedbl> <grave> <Greek_iota> : "á¿’" U1fd2
+<Multi_key> <grave> <quotedbl> <Greek_iota> : "á¿’" U1fd2
+<dead_diaeresis> <dead_grave> <Greek_iota> : "á¿’" U1fd2
+<dead_grave> <dead_diaeresis> <Greek_iota> : "á¿’" U1fd2
+<Multi_key> <asciitilde> <Greek_iota> : "á¿–" U1fd6
+<dead_tilde> <Greek_iota> : "á¿–" U1fd6
+<Multi_key> <quotedbl> <asciitilde> <Greek_iota> : "á¿—" U1fd7
+<Multi_key> <asciitilde> <quotedbl> <Greek_iota> : "á¿—" U1fd7
+<dead_diaeresis> <dead_tilde> <Greek_iota> : "á¿—" U1fd7
+<dead_tilde> <dead_diaeresis> <Greek_iota> : "á¿—" U1fd7
+<Multi_key> <quotedbl> <grave> <Greek_upsilon> : "á¿¢" U1fe2
+<Multi_key> <grave> <quotedbl> <Greek_upsilon> : "á¿¢" U1fe2
+<dead_diaeresis> <dead_grave> <Greek_upsilon> : "á¿¢" U1fe2
+<dead_grave> <dead_diaeresis> <Greek_upsilon> : "á¿¢" U1fe2
+<Multi_key> <asciitilde> <Greek_upsilon> : "ῦ" U1fe6
+<dead_tilde> <Greek_upsilon> : "ῦ" U1fe6
+<Multi_key> <quotedbl> <asciitilde> <Greek_upsilon> : "ῧ" U1fe7
+<Multi_key> <asciitilde> <quotedbl> <Greek_upsilon> : "ῧ" U1fe7
+<dead_diaeresis> <dead_tilde> <Greek_upsilon> : "ῧ" U1fe7
+<dead_tilde> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1fe7
+<Multi_key> <bar> <grave> <Greek_omega> : "ῲ" U1ff2
+<Multi_key> <grave> <bar> <Greek_omega> : "ῲ" U1ff2
+<dead_iota> <dead_grave> <Greek_omega> : "ῲ" U1ff2
+<dead_grave> <dead_iota> <Greek_omega> : "ῲ" U1ff2
+<Multi_key> <bar> <Greek_omega> : "ῳ" U1ff3
+<dead_iota> <Greek_omega> : "ῳ" U1ff3
+<Multi_key> <bar> <apostrophe> <Greek_omega> : "á¿´" U1ff4
+<Multi_key> <apostrophe> <bar> <Greek_omega> : "á¿´" U1ff4
+<dead_iota> <dead_acute> <Greek_omega> : "á¿´" U1ff4
+<dead_acute> <dead_iota> <Greek_omega> : "á¿´" U1ff4
+<Multi_key> <asciitilde> <Greek_omega> : "ῶ" U1ff6
+<dead_tilde> <Greek_omega> : "ῶ" U1ff6
+<Multi_key> <bar> <asciitilde> <Greek_omega> : "á¿·" U1ff7
+<Multi_key> <asciitilde> <bar> <Greek_omega> : "á¿·" U1ff7
+<dead_iota> <dead_tilde> <Greek_omega> : "á¿·" U1ff7
+<dead_tilde> <dead_iota> <Greek_omega> : "á¿·" U1ff7
+<Multi_key> <bar> <Greek_ALPHA> : "á¾¼" U1fbc
+<dead_iota> <Greek_ALPHA> : "á¾¼" U1fbc
+<Multi_key> <bar> <Greek_ETA> : "ῌ" U1fcc
+<dead_iota> <Greek_ETA> : "ῌ" U1fcc
+<Multi_key> <bar> <Greek_OMEGA> : "ῼ" U1ffc
+<dead_iota> <Greek_OMEGA> : "ῼ" U1ffc
+<Multi_key> <greater> <Greek_rho> : "ῤ" U1fe4
+<dead_horn> <Greek_rho> : "ῤ" U1fe4
+<dead_psili> <Greek_rho> : "ῤ" U1fe4
+<Multi_key> <less> <Greek_rho> : "á¿¥" U1fe5
+<dead_ogonek> <Greek_rho> : "á¿¥" U1fe5
+<dead_dasia> <Greek_rho> : "á¿¥" U1fe5
+<Multi_key> <less> <Greek_RHO> : "Ῥ" U1fec
+<dead_ogonek> <Greek_RHO> : "Ῥ" U1fec
+<dead_dasia> <Greek_RHO> : "Ῥ" U1fec
+<dead_horn> <dead_grave> <space> : "á¿" U1fcd
+<dead_psili> <dead_grave> <space> : "á¿" U1fcd
+<dead_grave> <dead_horn> <space> : "á¿" U1fcd
+<dead_grave> <dead_psili> <space> : "á¿" U1fcd
+<dead_horn> <dead_acute> <space> : "á¿Ž" U1fce
+<dead_psili> <dead_acute> <space> : "á¿Ž" U1fce
+<dead_acute> <dead_horn> <space> : "á¿Ž" U1fce
+<dead_acute> <dead_psili> <space> : "á¿Ž" U1fce
+<dead_horn> <dead_tilde> <space> : "á¿" U1fcf
+<dead_psili> <dead_tilde> <space> : "á¿" U1fcf
+<dead_tilde> <dead_horn> <space> : "á¿" U1fcf
+<dead_tilde> <dead_psili> <space> : "á¿" U1fcf
+<dead_ogonek> <dead_grave> <space> : "á¿" U1fdd
+<dead_dasia> <dead_grave> <space> : "á¿" U1fdd
+<dead_grave> <dead_ogonek> <space> : "á¿" U1fdd
+<dead_grave> <dead_dasia> <space> : "á¿" U1fdd
+<dead_ogonek> <dead_acute> <space> : "á¿ž" U1fde
+<dead_dasia> <dead_acute> <space> : "á¿ž" U1fde
+<dead_acute> <dead_ogonek> <space> : "á¿ž" U1fde
+<dead_acute> <dead_dasia> <space> : "á¿ž" U1fde
+<dead_ogonek> <dead_tilde> <space> : "á¿Ÿ" U1fdf
+<dead_dasia> <dead_tilde> <space> : "á¿Ÿ" U1fdf
+<dead_tilde> <dead_ogonek> <space> : "á¿Ÿ" U1fdf
+<dead_tilde> <dead_dasia> <space> : "á¿Ÿ" U1fdf
+<dead_diaeresis> <dead_grave> <space> : "á¿­" U1fed
+<dead_grave> <dead_diaeresis> <space> : "á¿­" U1fed
+<dead_diaeresis> <dead_tilde> <space> : "á¿" U1fc1
+<dead_tilde> <dead_diaeresis> <space> : "á¿" U1fc1
+<dead_horn> <space> : "᾿" U1fbf
+<dead_psili> <space> : "᾿" U1fbf
+<dead_horn> <dead_horn> : "᾿" U1fbf
+<dead_psili> <dead_horn> : "᾿" U1fbf
+<dead_ogonek> <space> : "῾" U1ffe
+<dead_dasia> <space> : "῾" U1ffe
+<dead_ogonek> <dead_ogonek> : "῾" U1ffe
+<dead_dasia> <dead_ogonek> : "῾" U1ffe
+<dead_grave> <space> : "`" U1fef
+<dead_grave> <dead_grave> : "`" U1fef
+<dead_tilde> <space> : "á¿€" U1fc0
+<dead_tilde> <dead_tilde> : "á¿€" U1fc0
+<dead_horn> <underscore> : "á¾½" U1fbd
+<dead_psili> <underscore> : "á¾½" U1fbd
+<dead_iota> <underscore> : "á¾¾" U1fbe
+<dead_iota> <space> : "ͺ" U037a
+<dead_iota> <dead_iota> : "ͺ" U037a
+
+XCOMM Part 3
+XCOMM
+XCOMM ISO 8859-7 (Greek) multi-key and dead key definitions extracted and
+XCOMM converted from the iso8859-7/Compose file.
+
+<Multi_key> <Greek_ALPHA> <apostrophe> : "Ά" Greek_ALPHAaccent
+<Multi_key> <apostrophe> <Greek_ALPHA> : "Ά" Greek_ALPHAaccent
+<Multi_key> <Greek_EPSILON> <apostrophe>: "Έ" Greek_EPSILONaccent
+<Multi_key> <apostrophe> <Greek_EPSILON>: "Έ" Greek_EPSILONaccent
+<Multi_key> <Greek_ETA> <apostrophe> : "Ή" Greek_ETAaccent
+<Multi_key> <apostrophe> <Greek_ETA> : "Ή" Greek_ETAaccent
+<Multi_key> <Greek_IOTA> <apostrophe> : "Ί" Greek_IOTAaccent
+<Multi_key> <apostrophe> <Greek_IOTA> : "Ί" Greek_IOTAaccent
+<Multi_key> <Greek_OMICRON> <apostrophe>: "Ό" Greek_OMICRONaccent
+<Multi_key> <apostrophe> <Greek_OMICRON>: "Ό" Greek_OMICRONaccent
+<Multi_key> <Greek_UPSILON> <apostrophe>: "ÎŽ" Greek_UPSILONaccent
+<Multi_key> <apostrophe> <Greek_UPSILON>: "ÎŽ" Greek_UPSILONaccent
+<Multi_key> <Greek_OMEGA> <apostrophe> : "Î" Greek_OMEGAaccent
+<Multi_key> <apostrophe> <Greek_OMEGA> : "Î" Greek_OMEGAaccent
+<Multi_key> <Greek_IOTA> <quotedbl> : "Ϊ" Greek_IOTAdieresis
+<Multi_key> <quotedbl> <Greek_IOTA> : "Ϊ" Greek_IOTAdieresis
+<Multi_key> <Greek_UPSILON> <quotedbl> : "Ϋ" Greek_UPSILONdieresis
+<Multi_key> <quotedbl> <Greek_UPSILON> : "Ϋ" Greek_UPSILONdieresis
+
+<Multi_key> <Greek_alpha> <apostrophe> : "ά" Greek_alphaaccent
+<Multi_key> <apostrophe> <Greek_alpha> : "ά" Greek_alphaaccent
+<Multi_key> <Greek_epsilon> <apostrophe>: "έ" Greek_epsilonaccent
+<Multi_key> <apostrophe> <Greek_epsilon>: "έ" Greek_epsilonaccent
+<Multi_key> <Greek_eta> <apostrophe> : "ή" Greek_etaaccent
+<Multi_key> <apostrophe> <Greek_eta> : "ή" Greek_etaaccent
+<Multi_key> <Greek_iota> <apostrophe> : "ί" Greek_iotaaccent
+<Multi_key> <apostrophe> <Greek_iota> : "ί" Greek_iotaaccent
+<Multi_key> <Greek_omicron> <apostrophe>: "ό" Greek_omicronaccent
+<Multi_key> <apostrophe> <Greek_omicron>: "ό" Greek_omicronaccent
+<Multi_key> <Greek_upsilon> <apostrophe>: "Ï" Greek_upsilonaccent
+<Multi_key> <apostrophe> <Greek_upsilon>: "Ï" Greek_upsilonaccent
+<Multi_key> <Greek_omega> <apostrophe> : "ÏŽ" Greek_omegaaccent
+<Multi_key> <apostrophe> <Greek_omega> : "ÏŽ" Greek_omegaaccent
+<Multi_key> <Greek_iota> <quotedbl> : "ÏŠ" Greek_iotadieresis
+<Multi_key> <quotedbl> <Greek_iota> : "ÏŠ" Greek_iotadieresis
+<Multi_key> <Greek_upsilon> <quotedbl> : "Ï‹" Greek_upsilondieresis
+<Multi_key> <quotedbl> <Greek_upsilon> : "Ï‹" Greek_upsilondieresis
+
+<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <space> : "Î…" Greek_accentdieresis
+<Multi_key> <quotedbl> <apostrophe> <space> : "Î…" Greek_accentdieresis
+
+<dead_acute> <Greek_alpha> : "ά" Greek_alphaaccent
+<dead_acute> <Greek_epsilon> : "έ" Greek_epsilonaccent
+<dead_acute> <Greek_eta> : "ή" Greek_etaaccent
+<dead_acute> <Greek_iota> : "ί" Greek_iotaaccent
+<dead_acute> <Greek_omicron> : "ό" Greek_omicronaccent
+<dead_acute> <Greek_upsilon> : "Ï" Greek_upsilonaccent
+<dead_acute> <Greek_omega> : "ÏŽ" Greek_omegaaccent
+<dead_acute> <Greek_ALPHA> : "Ά" Greek_ALPHAaccent
+<dead_acute> <Greek_EPSILON> : "Έ" Greek_EPSILONaccent
+<dead_acute> <Greek_ETA> : "Ή" Greek_ETAaccent
+<dead_acute> <Greek_IOTA> : "Ί" Greek_IOTAaccent
+<dead_acute> <Greek_OMICRON> : "Ό" Greek_OMICRONaccent
+<dead_acute> <Greek_UPSILON> : "ÎŽ" Greek_UPSILONaccent
+<dead_acute> <Greek_OMEGA> : "Î" Greek_OMEGAaccent
+<dead_acute> <space> : "΄" U0384
+<dead_acute> <dead_acute> : "΄" U0384
+<dead_acute> <period> : "·" periodcentered
+<dead_acute> <less> : "«" guillemotleft
+<dead_acute> <greater> : "»" guillemotright
+
+<dead_diaeresis> <Greek_iota> : "ÏŠ" Greek_iotadieresis
+<dead_diaeresis> <Greek_upsilon> : "Ï‹" Greek_upsilondieresis
+<dead_diaeresis> <Greek_IOTA> : "Ϊ" Greek_IOTAdieresis
+<dead_diaeresis> <Greek_UPSILON> : "Ϋ" Greek_UPSILONdieresis
+<dead_diaeresis> <space> : "¨" diaeresis
+<dead_diaeresis> <dead_diaeresis> : "¨" diaeresis
+<dead_diaeresis> <period> : "·" periodcentered
+<dead_diaeresis> <less> : "«" guillemotleft
+<dead_diaeresis> <greater> : "»" guillemotright
+
+<dead_acute> <dead_diaeresis> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<dead_acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<dead_acute> <dead_diaeresis> <space> : "Î…" Greek_accentdieresis
+
+<dead_diaeresis> <dead_acute> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<dead_diaeresis> <dead_acute> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<dead_diaeresis> <dead_acute> <space> : "Î…" Greek_accentdieresis
+
+XCOMM Part 4
+XCOMM
+XCOMM Miscellaneous extensions.
+
+<dead_macron> <space> : "¯" macron
+<dead_macron> <dead_macron> : "¯" macron
+<dead_breve> <space> : "˘" breve
+<dead_breve> <dead_breve> : "˘" breve
+
+<dead_grave> <underscore> : "`" grave
+<dead_acute> <underscore> : "´" acute
+<dead_tilde> <underscore> : "~" asciitilde
+
+<Multi_key> <less> <apostrophe> <space> : "‘" leftsinglequotemark
+<Multi_key> <apostrophe> <less> <space> : "‘" leftsinglequotemark
+<Multi_key> <greater> <apostrophe> <space> : "’" rightsinglequotemark
+<Multi_key> <apostrophe> <greater> <space> : "’" rightsinglequotemark
+<Multi_key> <asciitilde> <asciitilde> : "―" Greek_horizbar
+<Multi_key> <asciicircum> <asciicircum> : "˘" breve
+
+<Multi_key> <slash> <slash> : "Í´" U0374
+<Multi_key> <backslash> <backslash> : "͵" U0375
+<Multi_key> <semicolon> <semicolon> : ";" U037e
+<Multi_key> <colon> <colon> : "·" U0387
+
+<Multi_key> <C> <equal> : "€" EuroSign
+<Multi_key> <equal> <C> : "€" EuroSign
+<Multi_key> <c> <equal> : "€" EuroSign
+<Multi_key> <equal> <c> : "€" EuroSign
+<Multi_key> <E> <equal> : "€" EuroSign
+<Multi_key> <equal> <E> : "€" EuroSign
+<Multi_key> <e> <equal> : "€" EuroSign
+<Multi_key> <equal> <e> : "€" EuroSign
+<Multi_key> <Greek_EPSILON> <equal> : "€" EuroSign
+<Multi_key> <equal> <Greek_EPSILON> : "€" EuroSign
+<Multi_key> <Greek_epsilon> <equal> : "€" EuroSign
+<Multi_key> <equal> <Greek_epsilon> : "€" EuroSign
+
+<Multi_key> <Greek_DELTA> <Greek_RHO> : "₯" U20af
+<Multi_key> <Greek_DELTA> <Greek_rho> : "₯" U20af
+<Multi_key> <Greek_delta> <Greek_RHO> : "₯" U20af
+<Multi_key> <Greek_delta> <Greek_rho> : "₯" U20af
+
+<Multi_key> <question> <exclam> : "‽" U203D # INTERROBANG
+<Multi_key> <exclam> <question> : "‽" U203D # INTERROBANG
+
+<Multi_key> <1> <3> : "â…“" U2153 # VULGAR FRACTION ONE THIRD
+<Multi_key> <2> <3> : "â…”" U2154 # VULGAR FRACTION TWO THIRDS
+<Multi_key> <1> <5> : "â…•" U2155 # VULGAR FRACTION ONE FIFTH
+<Multi_key> <2> <5> : "â…–" U2156 # VULGAR FRACTION TWO FIFTHS
+<Multi_key> <3> <5> : "â…—" U2157 # VULGAR FRACTION THREE FIFTHS
+<Multi_key> <4> <5> : "â…˜" U2158 # VULGAR FRACTION FOUR FIFTHS
+<Multi_key> <1> <6> : "â…™" U2159 # VULGAR FRACTION ONE SIXTH
+<Multi_key> <5> <6> : "â…š" U215A # VULGAR FRACTION FIVE SIXTHS
+<Multi_key> <1> <8> : "â…›" U215B # VULGAR FRACTION ONE EIGHTH
+<Multi_key> <3> <8> : "⅜" U215C # VULGAR FRACTION THREE EIGHTHS
+<Multi_key> <5> <8> : "â…" U215D # VULGAR FRACTION FIVE EIGHTHS
+<Multi_key> <7> <8> : "â…ž" U215E # VULGAR FRACTION SEVEN EIGHTHS
+
+XCOMM
+XCOMM Khmer digraphs
+XCOMM
+
+<U17ff> : "ាំ"
+<U17fe> : "ោះ"
+<U17fd> : "áŸáŸ‡"
+<U17fc> : "ុំ"
+<U17fb> : "ុះ"
+
+XCOMM End
diff --git a/libX11/nls/en_US.UTF-8/XI18N_OBJS b/libX11/nls/en_US.UTF-8/XI18N_OBJS
index f201bf435..1d481b615 100644
--- a/libX11/nls/en_US.UTF-8/XI18N_OBJS
+++ b/libX11/nls/en_US.UTF-8/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XOM common/xomLTRTTB _XomGenericOpenOM # XOM_open
-XIM common/xiiimp _SwitchOpenIM # XIM_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XOM common/xomLTRTTB _XomGenericOpenOM # XOM_open
+XIM common/xiiimp _SwitchOpenIM # XIM_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
diff --git a/libX11/nls/en_US.UTF-8/XLC_LOCALE.pre b/libX11/nls/en_US.UTF-8/XLC_LOCALE.pre
index 35d009f24..1678f9b3a 100644
--- a/libX11/nls/en_US.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/en_US.UTF-8/XLC_LOCALE.pre
@@ -1,300 +1,300 @@
-XCOMM XLocale Database Sample for en_US.UTF-8
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-XCOMM fs2 class (ISO8859 families)
-fs2 {
- charset {
- name ISO8859-2:GR
- }
- font {
- primary ISO8859-2:GR
- }
-}
-XCOMM fs3 class (ISO8859 families)
-fs3 {
- charset {
- name ISO8859-3:GR
- }
- font {
- primary ISO8859-3:GR
- }
-}
-XCOMM fs4 class (ISO8859 families)
-fs4 {
- charset {
- name ISO8859-4:GR
- }
- font {
- primary ISO8859-4:GR
- }
-}
-XCOMM fs5 class (ISO8859 families)
-fs5 {
- charset {
- name ISO8859-5:GR
- }
- font {
- primary ISO8859-5:GR
- }
-}
-XCOMM fs6 class (koi8-r)
-fs6 {
- charset {
- name KOI8-R:GR
- }
- font {
- primary KOI8-R:GR
- }
-}
-XCOMM fs7 class (ISO8859 families)
-fs7 {
- charset {
- name ISO8859-7:GR
- }
- font {
- primary ISO8859-7:GR
- }
-}
-XCOMM fs9 class (ISO8859 families)
-fs8 {
- charset {
- name ISO8859-9:GR
- }
- font {
- primary ISO8859-9:GR
- }
-}
-XCOMM fs13 class (ISO8859 families)
-fs9 {
- charset {
- name ISO8859-13:GR
- }
- font {
- primary ISO8859-13:GR
- }
-}
-XCOMM fs14 class (ISO8859 families)
-fs10 {
- charset {
- name ISO8859-14:GR
- }
- font {
- primary ISO8859-14:GR
- }
-}
-XCOMM fs15 class (ISO8859 families)
-fs11 {
- charset {
- name ISO8859-15:GR
- }
- font {
- primary ISO8859-15:GR
- }
-}
-XCOMM fs16 class (Kanji)
-fs12 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- }
-}
-XCOMM fs17 class (Korean Character)
-fs13 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- }
-}
-XCOMM fs18 class (Chinese Han Character)
-fs14 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-XCOMM fs20 class (Half Kana)
-fs15 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM ISO10646 should come last so the fonts above will actually be used
-XCOMM fs24 class
-fs16 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
- ct_encoding ISO8859-2:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side GR
- length 1
- ct_encoding ISO8859-3:GR
-}
-
-XCOMM cs4 class
-cs4 {
- side GR
- length 1
- ct_encoding ISO8859-4:GR
-}
-
-XCOMM cs5 class
-cs5 {
- side GR
- length 1
- ct_encoding ISO8859-5:GR
-}
-
-XCOMM cs6 class
-cs6 {
- side GR
- length 1
- ct_encoding KOI8-R:GR
-}
-
-XCOMM cs7 class
-cs7 {
- side GR
- length 1
- ct_encoding ISO8859-7:GR
-}
-
-XCOMM cs9 class
-cs8 {
- side GR
- length 1
- ct_encoding ISO8859-9:GR
-}
-
-XCOMM cs13 class
-cs9 {
- side GR
- length 1
- ct_encoding ISO8859-13:GR
-}
-
-XCOMM cs14 class
-cs10 {
- side GR
- length 1
- ct_encoding ISO8859-14:GR
-}
-
-XCOMM cs15 class
-cs11 {
- side GR
- length 1
- ct_encoding ISO8859-15:GR
-}
-
-XCOMM cs16 class
-cs12 {
- side GR
- length 2
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs17 class
-cs13 {
- side GL
- length 2
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\
- KSC5601.1987-1:GL; KSC5601.1987-1:GR
-}
-
-XCOMM cs18 class
-cs14 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs20 class
-cs15 {
- side GR
- length 1
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs24 class
-cs16 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for en_US.UTF-8
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+XCOMM fs2 class (ISO8859 families)
+fs2 {
+ charset {
+ name ISO8859-2:GR
+ }
+ font {
+ primary ISO8859-2:GR
+ }
+}
+XCOMM fs3 class (ISO8859 families)
+fs3 {
+ charset {
+ name ISO8859-3:GR
+ }
+ font {
+ primary ISO8859-3:GR
+ }
+}
+XCOMM fs4 class (ISO8859 families)
+fs4 {
+ charset {
+ name ISO8859-4:GR
+ }
+ font {
+ primary ISO8859-4:GR
+ }
+}
+XCOMM fs5 class (ISO8859 families)
+fs5 {
+ charset {
+ name ISO8859-5:GR
+ }
+ font {
+ primary ISO8859-5:GR
+ }
+}
+XCOMM fs6 class (koi8-r)
+fs6 {
+ charset {
+ name KOI8-R:GR
+ }
+ font {
+ primary KOI8-R:GR
+ }
+}
+XCOMM fs7 class (ISO8859 families)
+fs7 {
+ charset {
+ name ISO8859-7:GR
+ }
+ font {
+ primary ISO8859-7:GR
+ }
+}
+XCOMM fs9 class (ISO8859 families)
+fs8 {
+ charset {
+ name ISO8859-9:GR
+ }
+ font {
+ primary ISO8859-9:GR
+ }
+}
+XCOMM fs13 class (ISO8859 families)
+fs9 {
+ charset {
+ name ISO8859-13:GR
+ }
+ font {
+ primary ISO8859-13:GR
+ }
+}
+XCOMM fs14 class (ISO8859 families)
+fs10 {
+ charset {
+ name ISO8859-14:GR
+ }
+ font {
+ primary ISO8859-14:GR
+ }
+}
+XCOMM fs15 class (ISO8859 families)
+fs11 {
+ charset {
+ name ISO8859-15:GR
+ }
+ font {
+ primary ISO8859-15:GR
+ }
+}
+XCOMM fs16 class (Kanji)
+fs12 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+XCOMM fs17 class (Korean Character)
+fs13 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+XCOMM fs18 class (Chinese Han Character)
+fs14 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs20 class (Half Kana)
+fs15 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM ISO10646 should come last so the fonts above will actually be used
+XCOMM fs24 class
+fs16 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+ ct_encoding ISO8859-2:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side GR
+ length 1
+ ct_encoding ISO8859-3:GR
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 1
+ ct_encoding ISO8859-4:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding ISO8859-5:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side GR
+ length 1
+ ct_encoding KOI8-R:GR
+}
+
+XCOMM cs7 class
+cs7 {
+ side GR
+ length 1
+ ct_encoding ISO8859-7:GR
+}
+
+XCOMM cs9 class
+cs8 {
+ side GR
+ length 1
+ ct_encoding ISO8859-9:GR
+}
+
+XCOMM cs13 class
+cs9 {
+ side GR
+ length 1
+ ct_encoding ISO8859-13:GR
+}
+
+XCOMM cs14 class
+cs10 {
+ side GR
+ length 1
+ ct_encoding ISO8859-14:GR
+}
+
+XCOMM cs15 class
+cs11 {
+ side GR
+ length 1
+ ct_encoding ISO8859-15:GR
+}
+
+XCOMM cs16 class
+cs12 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs17 class
+cs13 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\
+ KSC5601.1987-1:GL; KSC5601.1987-1:GR
+}
+
+XCOMM cs18 class
+cs14 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs20 class
+cs15 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs24 class
+cs16 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/georgian-academy/Compose.pre b/libX11/nls/georgian-academy/Compose.pre
index 1f9b450c0..2fe78a957 100644
--- a/libX11/nls/georgian-academy/Compose.pre
+++ b/libX11/nls/georgian-academy/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM georgian-academy Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM georgian-academy Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/georgian-academy/XI18N_OBJS b/libX11/nls/georgian-academy/XI18N_OBJS
index c4f7ffa19..53cb477eb 100644
--- a/libX11/nls/georgian-academy/XI18N_OBJS
+++ b/libX11/nls/georgian-academy/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for georgian-academy locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for georgian-academy locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/georgian-academy/XLC_LOCALE.pre b/libX11/nls/georgian-academy/XLC_LOCALE.pre
index c51b1efa7..18c82ff28 100644
--- a/libX11/nls/georgian-academy/XLC_LOCALE.pre
+++ b/libX11/nls/georgian-academy/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for georgian-academy
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary GEORGIAN-ACADEMY:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset GEORGIAN-ACADEMY:GR
- font GEORGIAN-ACADEMY:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name GEORGIAN-ACADEMY
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name GEORGIAN-ACADEMY
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding GEORGIAN-ACADEMY:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding GEORGIAN-ACADEMY:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for georgian-academy
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary GEORGIAN-ACADEMY:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset GEORGIAN-ACADEMY:GR
+ font GEORGIAN-ACADEMY:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name GEORGIAN-ACADEMY
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name GEORGIAN-ACADEMY
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding GEORGIAN-ACADEMY:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding GEORGIAN-ACADEMY:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/georgian-ps/Compose.pre b/libX11/nls/georgian-ps/Compose.pre
index 672835b1d..acbebbf63 100644
--- a/libX11/nls/georgian-ps/Compose.pre
+++ b/libX11/nls/georgian-ps/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM georgian-ps Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM georgian-ps Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/georgian-ps/XI18N_OBJS b/libX11/nls/georgian-ps/XI18N_OBJS
index 558452d9d..b9907e77d 100644
--- a/libX11/nls/georgian-ps/XI18N_OBJS
+++ b/libX11/nls/georgian-ps/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for georgian-ps locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for georgian-ps locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/georgian-ps/XLC_LOCALE.pre b/libX11/nls/georgian-ps/XLC_LOCALE.pre
index 470dcae2d..9c1ba03d3 100644
--- a/libX11/nls/georgian-ps/XLC_LOCALE.pre
+++ b/libX11/nls/georgian-ps/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for georgian-ps
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary GEORGIAN-PS:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset GEORGIAN-PS:GR
- font GEORGIAN-PS:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name GEORGIAN-PS
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name GEORGIAN-PS
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding GEORGIAN-PS:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding GEORGIAN-PS:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for georgian-ps
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary GEORGIAN-PS:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset GEORGIAN-PS:GR
+ font GEORGIAN-PS:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name GEORGIAN-PS
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name GEORGIAN-PS
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding GEORGIAN-PS:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding GEORGIAN-PS:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ibm-cp1133/Compose.pre b/libX11/nls/ibm-cp1133/Compose.pre
index ef0f59aab..69d3679fe 100644
--- a/libX11/nls/ibm-cp1133/Compose.pre
+++ b/libX11/nls/ibm-cp1133/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ibm-cp1133 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ibm-cp1133 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/ibm-cp1133/XI18N_OBJS b/libX11/nls/ibm-cp1133/XI18N_OBJS
index 02ca83b16..da47e0cfb 100644
--- a/libX11/nls/ibm-cp1133/XI18N_OBJS
+++ b/libX11/nls/ibm-cp1133/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ibm-cp1133 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ibm-cp1133 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ibm-cp1133/XLC_LOCALE.pre b/libX11/nls/ibm-cp1133/XLC_LOCALE.pre
index f3b762c8f..52e536242 100644
--- a/libX11/nls/ibm-cp1133/XLC_LOCALE.pre
+++ b/libX11/nls/ibm-cp1133/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for ibm-cp1133.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary IBM-CP1133:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset IBM-CP1133:GR
- font IBM-CP1133:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name IBM-CP1133
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name IBM-CP1133
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding IBM-CP1133:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding IBM-CP1133:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for ibm-cp1133.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary IBM-CP1133:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset IBM-CP1133:GR
+ font IBM-CP1133:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name IBM-CP1133
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name IBM-CP1133
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding IBM-CP1133:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding IBM-CP1133:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iscii-dev/XI18N_OBJS b/libX11/nls/iscii-dev/XI18N_OBJS
index 0dbaed515..568791098 100644
--- a/libX11/nls/iscii-dev/XI18N_OBJS
+++ b/libX11/nls/iscii-dev/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iscii-dev locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iscii-dev locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iscii-dev/XLC_LOCALE.pre b/libX11/nls/iscii-dev/XLC_LOCALE.pre
index 1ddb1861c..7a300cf81 100644
--- a/libX11/nls/iscii-dev/XLC_LOCALE.pre
+++ b/libX11/nls/iscii-dev/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for mulelao-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISCII-DEV:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset ISCII-DEV:GR
- font ISCII-DEV:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name ISCII-DEV
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISCII-DEV
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISCII-DEV:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISCII-DEV:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISCII-DEV:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset ISCII-DEV:GR
+ font ISCII-DEV:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ISCII-DEV
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISCII-DEV
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISCII-DEV:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISCII-DEV:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/isiri-3342/XI18N_OBJS b/libX11/nls/isiri-3342/XI18N_OBJS
index 028d84716..0eab87106 100644
--- a/libX11/nls/isiri-3342/XI18N_OBJS
+++ b/libX11/nls/isiri-3342/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for isiri-3342 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for isiri-3342 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/isiri-3342/XLC_LOCALE.pre b/libX11/nls/isiri-3342/XLC_LOCALE.pre
index 59072fcea..a375c623a 100644
--- a/libX11/nls/isiri-3342/XLC_LOCALE.pre
+++ b/libX11/nls/isiri-3342/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for mulelao-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISIRI-3342:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset ISIRI-3342:GR
- font ISIRI-3342:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name ISIRI-3342
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISIRI-3342
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISIRI-3342:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISIRI-3342:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISIRI-3342:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset ISIRI-3342:GR
+ font ISIRI-3342:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ISIRI-3342
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISIRI-3342
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISIRI-3342:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISIRI-3342:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-1/XI18N_OBJS b/libX11/nls/iso8859-1/XI18N_OBJS
index 32e4f3588..f4065656f 100644
--- a/libX11/nls/iso8859-1/XI18N_OBJS
+++ b/libX11/nls/iso8859-1/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-1/XLC_LOCALE.pre b/libX11/nls/iso8859-1/XLC_LOCALE.pre
index af09009b3..72ee4f8e7 100644
--- a/libX11/nls/iso8859-1/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-1/XLC_LOCALE.pre
@@ -1,71 +1,71 @@
-XCOMM XLocale Database Sample for iso8859-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-1
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-1:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-1
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-10/Compose.pre b/libX11/nls/iso8859-10/Compose.pre
index 12fa7f669..1809f509f 100644
--- a/libX11/nls/iso8859-10/Compose.pre
+++ b/libX11/nls/iso8859-10/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ISO 8859-10 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-10 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-10/XI18N_OBJS b/libX11/nls/iso8859-10/XI18N_OBJS
index 7e3b8549c..7d27dba61 100644
--- a/libX11/nls/iso8859-10/XI18N_OBJS
+++ b/libX11/nls/iso8859-10/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-10 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-10 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-10/XLC_LOCALE.pre b/libX11/nls/iso8859-10/XLC_LOCALE.pre
index a075c38c7..9dfbb7f3f 100644
--- a/libX11/nls/iso8859-10/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-10/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-4.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-10:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-10:GR
- }
- font {
- primary ISO8859-10:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-10
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-10:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-10:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-4.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-10:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-10:GR
+ }
+ font {
+ primary ISO8859-10:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-10
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-10:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-10:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-11/XI18N_OBJS b/libX11/nls/iso8859-11/XI18N_OBJS
index 168ccc04d..24f9e7e74 100644
--- a/libX11/nls/iso8859-11/XI18N_OBJS
+++ b/libX11/nls/iso8859-11/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-11 locale
-#
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-11 locale
+#
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-11/XLC_LOCALE.pre b/libX11/nls/iso8859-11/XLC_LOCALE.pre
index 4949e654b..1d332be90 100644
--- a/libX11/nls/iso8859-11/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-11/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-11.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-11:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-11:GR
- }
- font {
- primary ISO8859-11:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-11
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-11:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-11:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-11.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-11:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-11:GR
+ }
+ font {
+ primary ISO8859-11:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-11
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-11:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-11:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-13/Compose.pre b/libX11/nls/iso8859-13/Compose.pre
index 3e02ca9c1..410201873 100644
--- a/libX11/nls/iso8859-13/Compose.pre
+++ b/libX11/nls/iso8859-13/Compose.pre
@@ -1,432 +1,432 @@
-XCOMM
-XCOMM ISO 8859-13 (Latin7) Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-XCOMM Right-hand side (Accented Alphabet)
-XCOMM These compose sequences are pure supposition on my part.
-XCOMM It would be nice to know what the real cultural conventions
-XCOMM are for compose sequences.
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <less> <apostrophe> : "`" grave
-<Multi_key> <apostrophe> <less> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <greater> <quotedbl> : "\241" rightdoublequotemark
-<Multi_key> <quotedbl> <greater> : "\241" rightdoublequotemark
-<Multi_key> <greater> <comma> : "\245" doublelowquotemark
-<Multi_key> <comma> <greater> : "\245" doublelowquotemark
-<Multi_key> <less> <quotedbl> : "\264" leftdoublequotemark
-<Multi_key> <quotedbl> <less> : "\264" leftdoublequotemark
-<Multi_key> <less> <less> : "\253" guillemotleft
-<Multi_key> <greater> <greater> : "\273" guillemotright
-<Multi_key> <apostrophe> <apostrophe> : "\377" rightsinglequotemark
-<Multi_key> <greater> <apostrophe> : "\377" rightsinglequotemark
-<Multi_key> <apostrophe> <greater> : "\377" rightsinglequotemark
-<Multi_key> <c> <slash> : "\242" cent
-<Multi_key> <slash> <c> : "\242" cent
-<Multi_key> <C> <slash> : "\242" cent
-<Multi_key> <slash> <C> : "\242" cent
-<Multi_key> <C> <bar> : "\242" cent
-<Multi_key> <bar> <C> : "\242" cent
-<Multi_key> <c> <bar> : "\242" cent
-<Multi_key> <bar> <c> : "\242" cent
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <parenleft> <c> : "\251" copyright
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <x> <o> : "\244" currency
-<Multi_key> <o> <x> : "\244" currency
-<Multi_key> <X> <O> : "\244" currency
-<Multi_key> <O> <X> : "\244" currency
-<Multi_key> <x> <O> : "\244" currency
-<Multi_key> <O> <x> : "\244" currency
-<Multi_key> <X> <o> : "\244" currency
-<Multi_key> <o> <X> : "\244" currency
-<Multi_key> <x> <0> : "\244" currency
-<Multi_key> <0> <x> : "\244" currency
-<Multi_key> <X> <0> : "\244" currency
-<Multi_key> <0> <X> : "\244" currency
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <plus> <minus> : "\261" plusminus
-<Multi_key> <minus> <plus> : "\261" plusminus
-<Multi_key> <m> <u> : "\265" mu
-<Multi_key> <slash> <u> : "\265" mu
-<Multi_key> <u> <slash> : "\265" mu
-<Multi_key> <slash> <U> : "\265" mu
-<Multi_key> <U> <slash> : "\265" mu
-<Multi_key> <1> <asciicircum> : "\271" onesuperior
-<Multi_key> <asciicircum> <1> : "\271" onesuperior
-<Multi_key> <S> <1> : "\271" onesuperior
-<Multi_key> <1> <S> : "\271" onesuperior
-<Multi_key> <s> <1> : "\271" onesuperior
-<Multi_key> <1> <s> : "\271" onesuperior
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <1> <4> : "\274" onequarter
-<Multi_key> <1> <2> : "\275" onehalf
-<Multi_key> <3> <4> : "\276" threequarters
-<Multi_key> <question> <question> : "\277" questiondown
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <bar> <bar> : "\246" brokenbar
-<Multi_key> <exclam> <asciicircum> : "\246" brokenbar
-<Multi_key> <asciicircum> <exclam> : "\246" brokenbar
-<Multi_key> <V> <B> : "\246" brokenbar
-<Multi_key> <B> <V> : "\246" brokenbar
-<Multi_key> <v> <b> : "\246" brokenbar
-<Multi_key> <b> <v> : "\246" brokenbar
-<Multi_key> <minus> <comma> : "\254" notsign
-<Multi_key> <comma> <minus> : "\254" notsign
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <parenleft> <r> : "\256" registered
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <x> <x> : "\327" multiply
-XCOMM Accented Alphabet
-<Multi_key> <A> <semicolon> : "\300" Aogonek
-<Multi_key> <semicolon> <A> : "\300" Aogonek
-<Multi_key> <A> <comma> : "\300" Aogonek
-<Multi_key> <comma> <A> : "\300" Aogonek
-<Multi_key> <R> <comma> : "\252" Rcedilla
-<Multi_key> <R> <cedilla> : "\252" Rcedilla
-<Multi_key> <comma> <R> : "\252" Rcedilla
-<Multi_key> <cedilla> <R> : "\252" Rcedilla
-<Multi_key> <L> <comma> : "\317" Lcedilla
-<Multi_key> <L> <cedilla> : "\317" Lcedilla
-<Multi_key> <comma> <L> : "\317" Lcedilla
-<Multi_key> <cedilla> <L> : "\317" Lcedilla
-<Multi_key> <S> <less> : "\320" Scaron
-<Multi_key> <less> <S> : "\320" Scaron
-<Multi_key> <E> <minus> : "\307" Emacron
-<Multi_key> <minus> <E> : "\307" Emacron
-<Multi_key> <E> <underscore> : "\307" Emacron
-<Multi_key> <underscore> <E> : "\307" Emacron
-<Multi_key> <G> <comma> : "\314" Gcedilla
-<Multi_key> <G> <cedilla> : "\314" Gcedilla
-<Multi_key> <comma> <G> : "\314" Gcedilla
-<Multi_key> <cedilla> <G> : "\314" Gcedilla
-<Multi_key> <Z> <less> : "\336" Zcaron
-<Multi_key> <less> <Z> : "\336" Zcaron
-<Multi_key> <a> <semicolon> : "\340" aogonek
-<Multi_key> <semicolon> <a> : "\340" aogonek
-<Multi_key> <a> <comma> : "\340" aogonek
-<Multi_key> <comma> <a> : "\340" aogonek
-<Multi_key> <r> <comma> : "\272" rcedilla
-<Multi_key> <r> <cedilla> : "\272" rcedilla
-<Multi_key> <comma> <r> : "\272" rcedilla
-<Multi_key> <cedilla> <r> : "\272" rcedilla
-<Multi_key> <l> <comma> : "\357" lcedilla
-<Multi_key> <l> <cedilla> : "\357" lcedilla
-<Multi_key> <comma> <l> : "\357" lcedilla
-<Multi_key> <cedilla> <l> : "\357" lcedilla
-<Multi_key> <s> <less> : "\360" scaron
-<Multi_key> <less> <s> : "\360" scaron
-<Multi_key> <e> <minus> : "\347" emacron
-<Multi_key> <minus> <e> : "\347" emacron
-<Multi_key> <e> <underscore> : "\347" emacron
-<Multi_key> <underscore> <e> : "\347" emacron
-<Multi_key> <g> <comma> : "\354" gcedilla
-<Multi_key> <g> <cedilla> : "\354" gcedilla
-<Multi_key> <comma> <g> : "\354" gcedilla
-<Multi_key> <cedilla> <g> : "\354" gcedilla
-<Multi_key> <z> <less> : "\376" zcaron
-<Multi_key> <less> <z> : "\376" zcaron
-<Multi_key> <A> <underscore> : "\302" Amacron
-<Multi_key> <underscore> <A> : "\302" Amacron
-<Multi_key> <A> <minus> : "\302" Amacron
-<Multi_key> <minus> <A> : "\302" Amacron
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <A> : "\305" Aring
-<Multi_key> <A> <O> : "\305" Aring
-<Multi_key> <A> <E> : "\257" AE
-<Multi_key> <I> <semicolon> : "\301" Iogonek
-<Multi_key> <semicolon> <I> : "\301" Iogonek
-<Multi_key> <I> <comma> : "\301" Iogonek
-<Multi_key> <comma> <I> : "\301" Iogonek
-<Multi_key> <C> <less> : "\310" Ccaron
-<Multi_key> <less> <C> : "\310" Ccaron
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <semicolon> : "\306" Eogonek
-<Multi_key> <semicolon> <E> : "\306" Eogonek
-<Multi_key> <E> <comma> : "\306" Eogonek
-<Multi_key> <comma> <E> : "\306" Eogonek
-<Multi_key> <E> <period> : "\313" Eabovedot
-<Multi_key> <period> <E> : "\313" Eabovedot
-<Multi_key> <I> <minus> : "\316" Imacron
-<Multi_key> <minus> <I> : "\316" Imacron
-<Multi_key> <I> <underscore> : "\316" Imacron
-<Multi_key> <underscore> <I> : "\316" Imacron
-<Multi_key> <N> <comma> : "\322" Ncedilla
-<Multi_key> <N> <cedilla> : "\322" Ncedilla
-<Multi_key> <comma> <N> : "\322" Ncedilla
-<Multi_key> <cedilla> <N> : "\322" Ncedilla
-<Multi_key> <O> <underscore> : "\324" Omacron
-<Multi_key> <underscore> <O> : "\324" Omacron
-<Multi_key> <O> <minus> : "\324" Omacron
-<Multi_key> <minus> <O> : "\324" Omacron
-<Multi_key> <K> <comma> : "\315" Kcedilla
-<Multi_key> <K> <cedilla> : "\315" Kcedilla
-<Multi_key> <comma> <K> : "\315" Kcedilla
-<Multi_key> <cedilla> <K> : "\315" Kcedilla
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <slash> : "\250" Ooblique
-<Multi_key> <slash> <O> : "\250" Ooblique
-<Multi_key> <U> <semicolon> : "\330" Uogonek
-<Multi_key> <semicolon> <U> : "\330" Uogonek
-<Multi_key> <U> <comma> : "\330" Uogonek
-<Multi_key> <comma> <U> : "\330" Uogonek
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <underscore> : "\333" Umacron
-<Multi_key> <underscore> <U> : "\333" Umacron
-<Multi_key> <U> <minus> : "\333" Umacron
-<Multi_key> <minus> <U> : "\333" Umacron
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <a> <underscore> : "\342" amacron
-<Multi_key> <underscore> <a> : "\342" amacron
-<Multi_key> <a> <minus> : "\342" amacron
-<Multi_key> <minus> <a> : "\342" amacron
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <a> : "\345" aring
-<Multi_key> <a> <o> : "\345" aring
-<Multi_key> <a> <e> : "\277" ae
-<Multi_key> <i> <semicolon> : "\341" iogonek
-<Multi_key> <semicolon> <i> : "\341" iogonek
-<Multi_key> <i> <comma> : "\341" iogonek
-<Multi_key> <comma> <i> : "\341" iogonek
-<Multi_key> <c> <less> : "\350" ccaron
-<Multi_key> <less> <c> : "\350" ccaron
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <semicolon> : "\346" eogonek
-<Multi_key> <semicolon> <e> : "\346" eogonek
-<Multi_key> <e> <comma> : "\346" eogonek
-<Multi_key> <comma> <e> : "\346" eogonek
-<Multi_key> <e> <period> : "\353" eabovedot
-<Multi_key> <period> <e> : "\353" eabovedot
-<Multi_key> <i> <minus> : "\356" imacron
-<Multi_key> <minus> <i> : "\356" imacron
-<Multi_key> <i> <underscore> : "\356" imacron
-<Multi_key> <underscore> <i> : "\356" imacron
-<Multi_key> <n> <comma> : "\362" ncedilla
-<Multi_key> <n> <cedilla> : "\362" ncedilla
-<Multi_key> <comma> <n> : "\362" ncedilla
-<Multi_key> <cedilla> <n> : "\362" ncedilla
-<Multi_key> <o> <underscore> : "\364" omacron
-<Multi_key> <underscore> <o> : "\364" omacron
-<Multi_key> <o> <minus> : "\364" omacron
-<Multi_key> <minus> <o> : "\364" omacron
-<Multi_key> <k> <comma> : "\355" kcedilla
-<Multi_key> <k> <cedilla> : "\355" kcedilla
-<Multi_key> <comma> <k> : "\355" kcedilla
-<Multi_key> <cedilla> <k> : "\355" kcedilla
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <slash> : "\270" ooblique
-<Multi_key> <slash> <o> : "\270" ooblique
-<Multi_key> <u> <semicolon> : "\370" uogonek
-<Multi_key> <semicolon> <u> : "\370" uogonek
-<Multi_key> <u> <comma> : "\370" uogonek
-<Multi_key> <comma> <u> : "\370" uogonek
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <underscore> : "\373" umacron
-<Multi_key> <underscore> <u> : "\373" umacron
-<Multi_key> <u> <minus> : "\373" umacron
-<Multi_key> <minus> <u> : "\373" umacron
-<Multi_key> <C> <apostrophe> : "\303" Cacute
-<Multi_key> <apostrophe> <C> : "\303" Cacute
-<Multi_key> <c> <apostrophe> : "\343" cacute
-<Multi_key> <apostrophe> <c> : "\343" cacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <Z> <apostrophe> : "\312" Zacute
-<Multi_key> <apostrophe> <Z> : "\312" Zacute
-<Multi_key> <z> <apostrophe> : "\352" zacute
-<Multi_key> <apostrophe> <z> : "\352" zacute
-<Multi_key> <N> <apostrophe> : "\321" Nacute
-<Multi_key> <apostrophe> <N> : "\321" Nacute
-<Multi_key> <n> <apostrophe> : "\361" nacute
-<Multi_key> <apostrophe> <n> : "\361" nacute
-<Multi_key> <L> <minus> : "\331" Lstroke
-<Multi_key> <minus> <L> : "\331" Lstroke
-<Multi_key> <L> <slash> : "\331" Lstroke
-<Multi_key> <slash> <L> : "\331" Lstroke
-<Multi_key> <l> <minus> : "\371" lstroke
-<Multi_key> <minus> <l> : "\371" lstroke
-<Multi_key> <l> <slash> : "\371" lstroke
-<Multi_key> <slash> <l> : "\371" lstroke
-<Multi_key> <S> <apostrophe> : "\332" Sacute
-<Multi_key> <apostrophe> <S> : "\332" Sacute
-<Multi_key> <s> <apostrophe> : "\372" sacute
-<Multi_key> <apostrophe> <s> : "\372" sacute
-<Multi_key> <Z> <period> : "\335" Zabovedot
-<Multi_key> <period> <Z> : "\335" Zabovedot
-<Multi_key> <z> <period> : "\375" zabovedot
-<Multi_key> <period> <z> : "\375" zabovedot
-
-<dead_abovedot> <A> : "\305" Aring
-<dead_abovedot> <a> : "\345" aring
-<dead_abovedot> <E> : "\313" Eabovedot
-<dead_abovedot> <e> : "\353" eabovedot
-<dead_abovedot> <Z> : "\335" Zabovedot
-<dead_abovedot> <z> : "\375" zabovedot
-<dead_abovedot> <dead_abovedot> : "\267" abovedot
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_abovering> <E> : "\313" Eabovedot
-<dead_abovering> <e> : "\353" eabovedot
-<dead_abovering> <Z> : "\335" Zabovedot
-<dead_abovering> <z> : "\375" zabovedot
-<dead_abovering> <ring> : "\260" ring
-<dead_abovering> <dead_abovering> : "\260" ring
-<dead_acute> <dead_acute> : "\377" rightsinglequotemark
-<dead_acute> <C> : "\303" Cacute
-<dead_acute> <E> : "\311" Eacute
-<dead_acute> <Z> : "\312" Zacute
-<dead_acute> <N> : "\321" Nacute
-<dead_acute> <O> : "\323" Oacute
-<dead_acute> <S> : "\332" Sacute
-<dead_acute> <c> : "\343" cacute
-<dead_acute> <e> : "\351" eacute
-<dead_acute> <z> : "\352" zacute
-<dead_acute> <n> : "\361" nacute
-<dead_acute> <o> : "\363" oacute
-<dead_acute> <s> : "\372" sacute
-<dead_caron> <C> : "\310" Ccaron
-<dead_caron> <S> : "\320" Scaron
-<dead_caron> <Z> : "\336" Zcaron
-<dead_caron> <c> : "\350" ccaron
-<dead_caron> <s> : "\360" scaron
-<dead_caron> <z> : "\376" zcaron
-<dead_cedilla> <R> : "\252" Rcedilla
-<dead_cedilla> <G> : "\314" Gcedilla
-<dead_cedilla> <K> : "\315" Kcedilla
-<dead_cedilla> <L> : "\317" Lcedilla
-<dead_cedilla> <N> : "\322" Ncedilla
-<dead_cedilla> <r> : "\272" rcedilla
-<dead_cedilla> <g> : "\354" gcedilla
-<dead_cedilla> <k> : "\355" kcedilla
-<dead_cedilla> <l> : "\357" lcedilla
-<dead_cedilla> <n> : "\362" ncedilla
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_macron> <A> : "\302" Amacron
-<dead_macron> <E> : "\307" Emacron
-<dead_macron> <I> : "\316" Imacron
-<dead_macron> <O> : "\324" Omacron
-<dead_macron> <U> : "\333" Umacron
-<dead_macron> <a> : "\342" amacron
-<dead_macron> <e> : "\347" emacron
-<dead_macron> <i> : "\356" imacron
-<dead_macron> <o> : "\364" omacron
-<dead_macron> <u> : "\373" umacron
-<dead_macron> <macron> : "\255" macron
-<dead_macron> <dead_macron> : "\255" macron
-<dead_ogonek> <A> : "\300" Aogonek
-<dead_ogonek> <I> : "\301" Iogonek
-<dead_ogonek> <E> : "\306" Eogonek
-<dead_ogonek> <U> : "\330" Uogonek
-<dead_ogonek> <a> : "\340" aogonek
-<dead_ogonek> <i> : "\341" iogonek
-<dead_ogonek> <e> : "\346" eogonek
-<dead_ogonek> <u> : "\370" uogonek
-<dead_tilde> <O> : "\325" Otilde
-<dead_tilde> <o> : "\365" otilde
-<dead_tilde> <asciitilde> : "~" asciitilde
-<dead_tilde> <dead_tilde> : "~" asciitilde
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-13 (Latin7) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+XCOMM Right-hand side (Accented Alphabet)
+XCOMM These compose sequences are pure supposition on my part.
+XCOMM It would be nice to know what the real cultural conventions
+XCOMM are for compose sequences.
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <less> <apostrophe> : "`" grave
+<Multi_key> <apostrophe> <less> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <greater> <quotedbl> : "\241" rightdoublequotemark
+<Multi_key> <quotedbl> <greater> : "\241" rightdoublequotemark
+<Multi_key> <greater> <comma> : "\245" doublelowquotemark
+<Multi_key> <comma> <greater> : "\245" doublelowquotemark
+<Multi_key> <less> <quotedbl> : "\264" leftdoublequotemark
+<Multi_key> <quotedbl> <less> : "\264" leftdoublequotemark
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <apostrophe> <apostrophe> : "\377" rightsinglequotemark
+<Multi_key> <greater> <apostrophe> : "\377" rightsinglequotemark
+<Multi_key> <apostrophe> <greater> : "\377" rightsinglequotemark
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <x> <o> : "\244" currency
+<Multi_key> <o> <x> : "\244" currency
+<Multi_key> <X> <O> : "\244" currency
+<Multi_key> <O> <X> : "\244" currency
+<Multi_key> <x> <O> : "\244" currency
+<Multi_key> <O> <x> : "\244" currency
+<Multi_key> <X> <o> : "\244" currency
+<Multi_key> <o> <X> : "\244" currency
+<Multi_key> <x> <0> : "\244" currency
+<Multi_key> <0> <x> : "\244" currency
+<Multi_key> <X> <0> : "\244" currency
+<Multi_key> <0> <X> : "\244" currency
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <m> <u> : "\265" mu
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <1> <4> : "\274" onequarter
+<Multi_key> <1> <2> : "\275" onehalf
+<Multi_key> <3> <4> : "\276" threequarters
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <bar> <bar> : "\246" brokenbar
+<Multi_key> <exclam> <asciicircum> : "\246" brokenbar
+<Multi_key> <asciicircum> <exclam> : "\246" brokenbar
+<Multi_key> <V> <B> : "\246" brokenbar
+<Multi_key> <B> <V> : "\246" brokenbar
+<Multi_key> <v> <b> : "\246" brokenbar
+<Multi_key> <b> <v> : "\246" brokenbar
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+XCOMM Accented Alphabet
+<Multi_key> <A> <semicolon> : "\300" Aogonek
+<Multi_key> <semicolon> <A> : "\300" Aogonek
+<Multi_key> <A> <comma> : "\300" Aogonek
+<Multi_key> <comma> <A> : "\300" Aogonek
+<Multi_key> <R> <comma> : "\252" Rcedilla
+<Multi_key> <R> <cedilla> : "\252" Rcedilla
+<Multi_key> <comma> <R> : "\252" Rcedilla
+<Multi_key> <cedilla> <R> : "\252" Rcedilla
+<Multi_key> <L> <comma> : "\317" Lcedilla
+<Multi_key> <L> <cedilla> : "\317" Lcedilla
+<Multi_key> <comma> <L> : "\317" Lcedilla
+<Multi_key> <cedilla> <L> : "\317" Lcedilla
+<Multi_key> <S> <less> : "\320" Scaron
+<Multi_key> <less> <S> : "\320" Scaron
+<Multi_key> <E> <minus> : "\307" Emacron
+<Multi_key> <minus> <E> : "\307" Emacron
+<Multi_key> <E> <underscore> : "\307" Emacron
+<Multi_key> <underscore> <E> : "\307" Emacron
+<Multi_key> <G> <comma> : "\314" Gcedilla
+<Multi_key> <G> <cedilla> : "\314" Gcedilla
+<Multi_key> <comma> <G> : "\314" Gcedilla
+<Multi_key> <cedilla> <G> : "\314" Gcedilla
+<Multi_key> <Z> <less> : "\336" Zcaron
+<Multi_key> <less> <Z> : "\336" Zcaron
+<Multi_key> <a> <semicolon> : "\340" aogonek
+<Multi_key> <semicolon> <a> : "\340" aogonek
+<Multi_key> <a> <comma> : "\340" aogonek
+<Multi_key> <comma> <a> : "\340" aogonek
+<Multi_key> <r> <comma> : "\272" rcedilla
+<Multi_key> <r> <cedilla> : "\272" rcedilla
+<Multi_key> <comma> <r> : "\272" rcedilla
+<Multi_key> <cedilla> <r> : "\272" rcedilla
+<Multi_key> <l> <comma> : "\357" lcedilla
+<Multi_key> <l> <cedilla> : "\357" lcedilla
+<Multi_key> <comma> <l> : "\357" lcedilla
+<Multi_key> <cedilla> <l> : "\357" lcedilla
+<Multi_key> <s> <less> : "\360" scaron
+<Multi_key> <less> <s> : "\360" scaron
+<Multi_key> <e> <minus> : "\347" emacron
+<Multi_key> <minus> <e> : "\347" emacron
+<Multi_key> <e> <underscore> : "\347" emacron
+<Multi_key> <underscore> <e> : "\347" emacron
+<Multi_key> <g> <comma> : "\354" gcedilla
+<Multi_key> <g> <cedilla> : "\354" gcedilla
+<Multi_key> <comma> <g> : "\354" gcedilla
+<Multi_key> <cedilla> <g> : "\354" gcedilla
+<Multi_key> <z> <less> : "\376" zcaron
+<Multi_key> <less> <z> : "\376" zcaron
+<Multi_key> <A> <underscore> : "\302" Amacron
+<Multi_key> <underscore> <A> : "\302" Amacron
+<Multi_key> <A> <minus> : "\302" Amacron
+<Multi_key> <minus> <A> : "\302" Amacron
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <A> <O> : "\305" Aring
+<Multi_key> <A> <E> : "\257" AE
+<Multi_key> <I> <semicolon> : "\301" Iogonek
+<Multi_key> <semicolon> <I> : "\301" Iogonek
+<Multi_key> <I> <comma> : "\301" Iogonek
+<Multi_key> <comma> <I> : "\301" Iogonek
+<Multi_key> <C> <less> : "\310" Ccaron
+<Multi_key> <less> <C> : "\310" Ccaron
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <semicolon> : "\306" Eogonek
+<Multi_key> <semicolon> <E> : "\306" Eogonek
+<Multi_key> <E> <comma> : "\306" Eogonek
+<Multi_key> <comma> <E> : "\306" Eogonek
+<Multi_key> <E> <period> : "\313" Eabovedot
+<Multi_key> <period> <E> : "\313" Eabovedot
+<Multi_key> <I> <minus> : "\316" Imacron
+<Multi_key> <minus> <I> : "\316" Imacron
+<Multi_key> <I> <underscore> : "\316" Imacron
+<Multi_key> <underscore> <I> : "\316" Imacron
+<Multi_key> <N> <comma> : "\322" Ncedilla
+<Multi_key> <N> <cedilla> : "\322" Ncedilla
+<Multi_key> <comma> <N> : "\322" Ncedilla
+<Multi_key> <cedilla> <N> : "\322" Ncedilla
+<Multi_key> <O> <underscore> : "\324" Omacron
+<Multi_key> <underscore> <O> : "\324" Omacron
+<Multi_key> <O> <minus> : "\324" Omacron
+<Multi_key> <minus> <O> : "\324" Omacron
+<Multi_key> <K> <comma> : "\315" Kcedilla
+<Multi_key> <K> <cedilla> : "\315" Kcedilla
+<Multi_key> <comma> <K> : "\315" Kcedilla
+<Multi_key> <cedilla> <K> : "\315" Kcedilla
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\250" Ooblique
+<Multi_key> <slash> <O> : "\250" Ooblique
+<Multi_key> <U> <semicolon> : "\330" Uogonek
+<Multi_key> <semicolon> <U> : "\330" Uogonek
+<Multi_key> <U> <comma> : "\330" Uogonek
+<Multi_key> <comma> <U> : "\330" Uogonek
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <underscore> : "\333" Umacron
+<Multi_key> <underscore> <U> : "\333" Umacron
+<Multi_key> <U> <minus> : "\333" Umacron
+<Multi_key> <minus> <U> : "\333" Umacron
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <a> <underscore> : "\342" amacron
+<Multi_key> <underscore> <a> : "\342" amacron
+<Multi_key> <a> <minus> : "\342" amacron
+<Multi_key> <minus> <a> : "\342" amacron
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <a> <o> : "\345" aring
+<Multi_key> <a> <e> : "\277" ae
+<Multi_key> <i> <semicolon> : "\341" iogonek
+<Multi_key> <semicolon> <i> : "\341" iogonek
+<Multi_key> <i> <comma> : "\341" iogonek
+<Multi_key> <comma> <i> : "\341" iogonek
+<Multi_key> <c> <less> : "\350" ccaron
+<Multi_key> <less> <c> : "\350" ccaron
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <semicolon> : "\346" eogonek
+<Multi_key> <semicolon> <e> : "\346" eogonek
+<Multi_key> <e> <comma> : "\346" eogonek
+<Multi_key> <comma> <e> : "\346" eogonek
+<Multi_key> <e> <period> : "\353" eabovedot
+<Multi_key> <period> <e> : "\353" eabovedot
+<Multi_key> <i> <minus> : "\356" imacron
+<Multi_key> <minus> <i> : "\356" imacron
+<Multi_key> <i> <underscore> : "\356" imacron
+<Multi_key> <underscore> <i> : "\356" imacron
+<Multi_key> <n> <comma> : "\362" ncedilla
+<Multi_key> <n> <cedilla> : "\362" ncedilla
+<Multi_key> <comma> <n> : "\362" ncedilla
+<Multi_key> <cedilla> <n> : "\362" ncedilla
+<Multi_key> <o> <underscore> : "\364" omacron
+<Multi_key> <underscore> <o> : "\364" omacron
+<Multi_key> <o> <minus> : "\364" omacron
+<Multi_key> <minus> <o> : "\364" omacron
+<Multi_key> <k> <comma> : "\355" kcedilla
+<Multi_key> <k> <cedilla> : "\355" kcedilla
+<Multi_key> <comma> <k> : "\355" kcedilla
+<Multi_key> <cedilla> <k> : "\355" kcedilla
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\270" ooblique
+<Multi_key> <slash> <o> : "\270" ooblique
+<Multi_key> <u> <semicolon> : "\370" uogonek
+<Multi_key> <semicolon> <u> : "\370" uogonek
+<Multi_key> <u> <comma> : "\370" uogonek
+<Multi_key> <comma> <u> : "\370" uogonek
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <underscore> : "\373" umacron
+<Multi_key> <underscore> <u> : "\373" umacron
+<Multi_key> <u> <minus> : "\373" umacron
+<Multi_key> <minus> <u> : "\373" umacron
+<Multi_key> <C> <apostrophe> : "\303" Cacute
+<Multi_key> <apostrophe> <C> : "\303" Cacute
+<Multi_key> <c> <apostrophe> : "\343" cacute
+<Multi_key> <apostrophe> <c> : "\343" cacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <Z> <apostrophe> : "\312" Zacute
+<Multi_key> <apostrophe> <Z> : "\312" Zacute
+<Multi_key> <z> <apostrophe> : "\352" zacute
+<Multi_key> <apostrophe> <z> : "\352" zacute
+<Multi_key> <N> <apostrophe> : "\321" Nacute
+<Multi_key> <apostrophe> <N> : "\321" Nacute
+<Multi_key> <n> <apostrophe> : "\361" nacute
+<Multi_key> <apostrophe> <n> : "\361" nacute
+<Multi_key> <L> <minus> : "\331" Lstroke
+<Multi_key> <minus> <L> : "\331" Lstroke
+<Multi_key> <L> <slash> : "\331" Lstroke
+<Multi_key> <slash> <L> : "\331" Lstroke
+<Multi_key> <l> <minus> : "\371" lstroke
+<Multi_key> <minus> <l> : "\371" lstroke
+<Multi_key> <l> <slash> : "\371" lstroke
+<Multi_key> <slash> <l> : "\371" lstroke
+<Multi_key> <S> <apostrophe> : "\332" Sacute
+<Multi_key> <apostrophe> <S> : "\332" Sacute
+<Multi_key> <s> <apostrophe> : "\372" sacute
+<Multi_key> <apostrophe> <s> : "\372" sacute
+<Multi_key> <Z> <period> : "\335" Zabovedot
+<Multi_key> <period> <Z> : "\335" Zabovedot
+<Multi_key> <z> <period> : "\375" zabovedot
+<Multi_key> <period> <z> : "\375" zabovedot
+
+<dead_abovedot> <A> : "\305" Aring
+<dead_abovedot> <a> : "\345" aring
+<dead_abovedot> <E> : "\313" Eabovedot
+<dead_abovedot> <e> : "\353" eabovedot
+<dead_abovedot> <Z> : "\335" Zabovedot
+<dead_abovedot> <z> : "\375" zabovedot
+<dead_abovedot> <dead_abovedot> : "\267" abovedot
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_abovering> <E> : "\313" Eabovedot
+<dead_abovering> <e> : "\353" eabovedot
+<dead_abovering> <Z> : "\335" Zabovedot
+<dead_abovering> <z> : "\375" zabovedot
+<dead_abovering> <ring> : "\260" ring
+<dead_abovering> <dead_abovering> : "\260" ring
+<dead_acute> <dead_acute> : "\377" rightsinglequotemark
+<dead_acute> <C> : "\303" Cacute
+<dead_acute> <E> : "\311" Eacute
+<dead_acute> <Z> : "\312" Zacute
+<dead_acute> <N> : "\321" Nacute
+<dead_acute> <O> : "\323" Oacute
+<dead_acute> <S> : "\332" Sacute
+<dead_acute> <c> : "\343" cacute
+<dead_acute> <e> : "\351" eacute
+<dead_acute> <z> : "\352" zacute
+<dead_acute> <n> : "\361" nacute
+<dead_acute> <o> : "\363" oacute
+<dead_acute> <s> : "\372" sacute
+<dead_caron> <C> : "\310" Ccaron
+<dead_caron> <S> : "\320" Scaron
+<dead_caron> <Z> : "\336" Zcaron
+<dead_caron> <c> : "\350" ccaron
+<dead_caron> <s> : "\360" scaron
+<dead_caron> <z> : "\376" zcaron
+<dead_cedilla> <R> : "\252" Rcedilla
+<dead_cedilla> <G> : "\314" Gcedilla
+<dead_cedilla> <K> : "\315" Kcedilla
+<dead_cedilla> <L> : "\317" Lcedilla
+<dead_cedilla> <N> : "\322" Ncedilla
+<dead_cedilla> <r> : "\272" rcedilla
+<dead_cedilla> <g> : "\354" gcedilla
+<dead_cedilla> <k> : "\355" kcedilla
+<dead_cedilla> <l> : "\357" lcedilla
+<dead_cedilla> <n> : "\362" ncedilla
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_macron> <A> : "\302" Amacron
+<dead_macron> <E> : "\307" Emacron
+<dead_macron> <I> : "\316" Imacron
+<dead_macron> <O> : "\324" Omacron
+<dead_macron> <U> : "\333" Umacron
+<dead_macron> <a> : "\342" amacron
+<dead_macron> <e> : "\347" emacron
+<dead_macron> <i> : "\356" imacron
+<dead_macron> <o> : "\364" omacron
+<dead_macron> <u> : "\373" umacron
+<dead_macron> <macron> : "\255" macron
+<dead_macron> <dead_macron> : "\255" macron
+<dead_ogonek> <A> : "\300" Aogonek
+<dead_ogonek> <I> : "\301" Iogonek
+<dead_ogonek> <E> : "\306" Eogonek
+<dead_ogonek> <U> : "\330" Uogonek
+<dead_ogonek> <a> : "\340" aogonek
+<dead_ogonek> <i> : "\341" iogonek
+<dead_ogonek> <e> : "\346" eogonek
+<dead_ogonek> <u> : "\370" uogonek
+<dead_tilde> <O> : "\325" Otilde
+<dead_tilde> <o> : "\365" otilde
+<dead_tilde> <asciitilde> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-13/XI18N_OBJS b/libX11/nls/iso8859-13/XI18N_OBJS
index f20902a61..daac7d36c 100644
--- a/libX11/nls/iso8859-13/XI18N_OBJS
+++ b/libX11/nls/iso8859-13/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-13/XLC_LOCALE.pre b/libX11/nls/iso8859-13/XLC_LOCALE.pre
index b12750048..c85978582 100644
--- a/libX11/nls/iso8859-13/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-13/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-13.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-13:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-13:GR
- }
- font {
- primary ISO8859-13:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-13
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-13:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-13:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-13.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-13:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-13:GR
+ }
+ font {
+ primary ISO8859-13:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-13
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-13:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-13:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-14/Compose.pre b/libX11/nls/iso8859-14/Compose.pre
index 911a1eb2f..8bf641f1e 100644
--- a/libX11/nls/iso8859-14/Compose.pre
+++ b/libX11/nls/iso8859-14/Compose.pre
@@ -1,509 +1,509 @@
-XCOMM ISO 8859-14 (Latin 8) Compose Sequences
-XCOMM
-XCOMM Original version by Alastair McKinstry, <amck@maths.tcd.ie>
-XCOMM Fixed and tidied up by Seamus O Ciardhuain <seoc@cnds.ucd.ie> (Dec 2002)
-XCOMM
-XCOMM
-XCOMM First part is taken from the Latin-1 definitions,
-XCOMM i.e. characters the same in 8859-1 and 8859-14.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <r> <o> : "\256" registered
-<Multi_key> <o> <r> : "\256" registered
-<Multi_key> <R> <0> : "\256" registered
-<Multi_key> <r> <0> : "\256" registered
-<Multi_key> <0> <R> : "\256" registered
-<Multi_key> <0> <r> : "\256" registered
-
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "\300" Agrave
-<Multi_key> <grave> <A> : "\300" Agrave
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <minus> : "\303" Atilde
-<Multi_key> <minus> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
-<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <E> : "\306" AE
-<Multi_key> <a> <grave> : "\340" agrave
-<Multi_key> <grave> <a> : "\340" agrave
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <minus> : "\343" atilde
-<Multi_key> <minus> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <diaeresis> : "\344" adiaeresis
-<Multi_key> <diaeresis> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <e> : "\346" ae
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <E> <grave> : "\310" Egrave
-<Multi_key> <grave> <E> : "\310" Egrave
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
-<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
-<Multi_key> <E> <greater> : "\312" Ecircumflex
-<Multi_key> <greater> <E> : "\312" Ecircumflex
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
-<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
-<Multi_key> <e> <grave> : "\350" egrave
-<Multi_key> <grave> <e> : "\350" egrave
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <asciicircum> : "\352" ecircumflex
-<Multi_key> <asciicircum> <e> : "\352" ecircumflex
-<Multi_key> <e> <greater> : "\352" ecircumflex
-<Multi_key> <greater> <e> : "\352" ecircumflex
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <diaeresis> : "\353" ediaeresis
-<Multi_key> <diaeresis> <e> : "\353" ediaeresis
-<Multi_key> <I> <grave> : "\314" Igrave
-<Multi_key> <grave> <I> : "\314" Igrave
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
-<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
-<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
-<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
-<Multi_key> <i> <grave> : "\354" igrave
-<Multi_key> <grave> <i> : "\354" igrave
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <quotedbl> : "\357" idiaeresis
-<Multi_key> <quotedbl> <i> : "\357" idiaeresis
-<Multi_key> <i> <diaeresis> : "\357" idiaeresis
-<Multi_key> <diaeresis> <i> : "\357" idiaeresis
-<Multi_key> <N> <asciitilde> : "\321" Ntilde
-<Multi_key> <asciitilde> <N> : "\321" Ntilde
-<Multi_key> <N> <minus> : "\321" Ntilde
-<Multi_key> <minus> <N> : "\321" Ntilde
-<Multi_key> <n> <asciitilde> : "\361" ntilde
-<Multi_key> <asciitilde> <n> : "\361" ntilde
-<Multi_key> <n> <minus> : "\361" ntilde
-<Multi_key> <minus> <n> : "\361" ntilde
-<Multi_key> <O> <grave> : "\322" Ograve
-<Multi_key> <grave> <O> : "\322" Ograve
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <minus> : "\325" Otilde
-<Multi_key> <minus> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
-<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
-<Multi_key> <O> <slash> : "\330" Ooblique
-<Multi_key> <slash> <O> : "\330" Ooblique
-<Multi_key> <o> <grave> : "\362" ograve
-<Multi_key> <grave> <o> : "\362" ograve
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <minus> : "\365" otilde
-<Multi_key> <minus> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <diaeresis> : "\366" odiaeresis
-<Multi_key> <diaeresis> <o> : "\366" odiaeresis
-<Multi_key> <o> <slash> : "\370" oslash
-<Multi_key> <slash> <o> : "\370" oslash
-<Multi_key> <U> <grave> : "\331" Ugrave
-<Multi_key> <grave> <U> : "\331" Ugrave
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
-<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
-<Multi_key> <u> <grave> : "\371" ugrave
-<Multi_key> <grave> <u> : "\371" ugrave
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <diaeresis> : "\374" udiaeresis
-<Multi_key> <diaeresis> <u> : "\374" udiaeresis
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <Y> <acute> : "\335" Yacute
-<Multi_key> <acute> <Y> : "\335" Yacute
-<Multi_key> <Y> <apostrophe> : "\335" Yacute
-<Multi_key> <apostrophe> <Y> : "\335" Yacute
-<Multi_key> <y> <acute> : "\375" yacute
-<Multi_key> <acute> <y> : "\375" yacute
-<Multi_key> <y> <apostrophe> : "\375" yacute
-<Multi_key> <apostrophe> <y> : "\375" yacute
-<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
-<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
-<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
-<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
-
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_grave> <space> : "`" grave
-<dead_acute> <space> : "'" apostrophe
-<dead_circumflex> <space> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-
-XCOMM Accented Alphabet
-<dead_grave> <A> : "\300" Agrave
-<dead_acute> <A> : "\301" Aacute
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_tilde> <A> : "\303" Atilde
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_grave> <a> : "\340" agrave
-<dead_acute> <a> : "\341" aacute
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_tilde> <a> : "\343" atilde
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_grave> <E> : "\310" Egrave
-<dead_acute> <E> : "\311" Eacute
-<dead_circumflex> <E> : "\312" Ecircumflex
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_grave> <e> : "\350" egrave
-<dead_acute> <e> : "\351" eacute
-<dead_circumflex> <e> : "\352" ecircumflex
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_grave> <I> : "\314" Igrave
-<dead_acute> <I> : "\315" Iacute
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_grave> <i> : "\354" igrave
-<dead_acute> <i> : "\355" iacute
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_grave> <O> : "\322" Ograve
-<dead_acute> <O> : "\323" Oacute
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_tilde> <O> : "\325" Otilde
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_grave> <o> : "\362" ograve
-<dead_acute> <o> : "\363" oacute
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_tilde> <o> : "\365" otilde
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_grave> <U> : "\331" Ugrave
-<dead_acute> <U> : "\332" Uacute
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_grave> <u> : "\371" ugrave
-<dead_acute> <u> : "\372" uacute
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_acute> <Y> : "\335" Yacute
-<dead_acute> <y> : "\375" yacute
-<dead_diaeresis> <y> : "\377" ydiaeresis
-
-
-XCOMM The following is Celtic character support,
-XCOMM i.e. the characters in 8859-14 which differ from 8859-1.
-
-<Multi_key> <period> <b> : "\242" babovedot
-<Multi_key> <period> <B> : "\241" Babovedot
-<Multi_key> <period> <c> : "\245" cabovedot
-<Multi_key> <period> <C> : "\245" Cabovedot
-<Multi_key> <period> <d> : "\253" dabovedot
-<Multi_key> <period> <D> : "\246" Dabovedot
-<Multi_key> <period> <f> : "\261" fabovedot
-<Multi_key> <period> <F> : "\260" Fabovedot
-<Multi_key> <period> <g> : "\263" gabovedot
-<Multi_key> <period> <G> : "\262" Gabovedot
-<Multi_key> <period> <m> : "\265" mabovedot
-<Multi_key> <period> <M> : "\264" Mabovedot
-<Multi_key> <period> <p> : "\271" pabovedot
-<Multi_key> <period> <P> : "\267" Pabovedot
-<Multi_key> <period> <s> : "\277" sabovedot
-<Multi_key> <period> <S> : "\273" Sabovedot
-<Multi_key> <period> <t> : "\367" tabovedot
-<Multi_key> <period> <T> : "\327" Tabovedot
-
-<Multi_key> <b> <period> : "\242" babovedot
-<Multi_key> <B> <period> : "\241" Babovedot
-<Multi_key> <c> <period> : "\245" cabovedot
-<Multi_key> <C> <period> : "\245" Cabovedot
-<Multi_key> <d> <period> : "\253" dabovedot
-<Multi_key> <D> <period> : "\246" Dabovedot
-<Multi_key> <f> <period> : "\261" fabovedot
-<Multi_key> <F> <period> : "\260" Fabovedot
-<Multi_key> <g> <period> : "\263" gabovedot
-<Multi_key> <G> <period> : "\262" Gabovedot
-<Multi_key> <m> <period> : "\265" mabovedot
-<Multi_key> <M> <period> : "\264" Mabovedot
-<Multi_key> <p> <period> : "\271" pabovedot
-<Multi_key> <P> <period> : "\267" Pabovedot
-<Multi_key> <s> <period> : "\277" sabovedot
-<Multi_key> <S> <period> : "\273" Sabovedot
-<Multi_key> <t> <period> : "\367" tabovedot
-<Multi_key> <T> <period> : "\327" Tabovedot
-
-<Multi_key> <y> <asciicircum> : "\376" ycircumflex
-<Multi_key> <asciicircum> <y> : "\376" ycircumflex
-<Multi_key> <Y> <asciicircum> : "\336" Ycircumflex
-<Multi_key> <asciicircum> <Y> : "\336" Ycircumflex
-
-<Multi_key> <w> <asciicircum> : "\360" wcircumflex
-<Multi_key> <asciicircum> <w> : "\360" wcircumflex
-<Multi_key> <W> <asciicircum> : "\320" Wcircumflex
-<Multi_key> <asciicircum> <W> : "\320" Wcircumflex
-
-<Multi_key> <Y> <quotedbl> : "\257" Ydiaeresis
-<Multi_key> <quotedbl> <Y> : "\257" Ydiaeresis
-<Multi_key> <Y> <diaeresis> : "\257" Ydiaeresis
-<Multi_key> <diaeresis> <Y> : "\257" Ydiaeresis
-
-<Multi_key> <W> <quotedbl> : "\275" Wdiaeresis
-<Multi_key> <quotedbl> <W> : "\275" Wdiaeresis
-<Multi_key> <W> <diaeresis> : "\275" Wdiaeresis
-<Multi_key> <diaeresis> <W> : "\275" Wdiaeresis
-<Multi_key> <w> <quotedbl> : "\276" wdiaeresis
-<Multi_key> <quotedbl> <w> : "\276" wdiaeresis
-<Multi_key> <w> <diaeresis> : "\276" wdiaeresis
-<Multi_key> <diaeresis> <w> : "\276" wdiaeresis
-
-<Multi_key> <Y> <grave> : "\254" Ygrave
-<Multi_key> <grave> <Y> : "\254" Ygrave
-<Multi_key> <y> <grave> : "\274" ygrave
-<Multi_key> <grave> <y> : "\274" ygrave
-
-<Multi_key> <W> <grave> : "\250" Wgrave
-<Multi_key> <grave> <W> : "\250" Wgrave
-<Multi_key> <w> <grave> : "\270" wgrave
-<Multi_key> <grave> <w> : "\270" wgrave
-
-<Multi_key> <W> <apostrophe> : "\252" Wacute
-<Multi_key> <apostrophe> <W> : "\252" Wacute
-<Multi_key> <W> <acute> : "\252" Wacute
-<Multi_key> <acute> <W> : "\252" Wacute
-<Multi_key> <w> <apostrophe> : "\272" wacute
-<Multi_key> <apostrophe> <w> : "\272" wacute
-<Multi_key> <w> <acute> : "\272" wacute
-<Multi_key> <acute> <w> : "\272" wacute
-
-<dead_abovedot> <b> : "\242" babovedot
-<dead_abovedot> <B> : "\241" Babovedot
-<dead_abovedot> <c> : "\245" cabovedot
-<dead_abovedot> <C> : "\245" Cabovedot
-<dead_abovedot> <d> : "\253" dabovedot
-<dead_abovedot> <D> : "\246" Dabovedot
-<dead_abovedot> <f> : "\261" fabovedot
-<dead_abovedot> <F> : "\260" Fabovedot
-<dead_abovedot> <g> : "\263" gabovedot
-<dead_abovedot> <G> : "\262" Gabovedot
-<dead_abovedot> <m> : "\265" mabovedot
-<dead_abovedot> <M> : "\264" Mabovedot
-<dead_abovedot> <p> : "\271" pabovedot
-<dead_abovedot> <P> : "\267" Pabovedot
-<dead_abovedot> <s> : "\277" sabovedot
-<dead_abovedot> <S> : "\273" Sabovedot
-<dead_abovedot> <t> : "\367" tabovedot
-<dead_abovedot> <T> : "\327" Tabovedot
-
-<dead_circumflex> <b> : "\242" babovedot
-<dead_circumflex> <B> : "\241" Babovedot
-<dead_circumflex> <c> : "\245" cabovedot
-<dead_circumflex> <C> : "\245" Cabovedot
-<dead_circumflex> <d> : "\253" dabovedot
-<dead_circumflex> <D> : "\246" Dabovedot
-<dead_circumflex> <f> : "\261" fabovedot
-<dead_circumflex> <F> : "\260" Fabovedot
-<dead_circumflex> <g> : "\263" gabovedot
-<dead_circumflex> <G> : "\262" Gabovedot
-<dead_circumflex> <m> : "\265" mabovedot
-<dead_circumflex> <M> : "\264" Mabovedot
-<dead_circumflex> <p> : "\271" pabovedot
-<dead_circumflex> <P> : "\267" Pabovedot
-<dead_circumflex> <s> : "\277" sabovedot
-<dead_circumflex> <S> : "\273" Sabovedot
-<dead_circumflex> <t> : "\367" tabovedot
-<dead_circumflex> <T> : "\327" Tabovedot
-
-<dead_acute> <b> : "\242" babovedot
-<dead_acute> <B> : "\241" Babovedot
-<dead_acute> <c> : "\245" cabovedot
-<dead_acute> <C> : "\245" Cabovedot
-<dead_acute> <d> : "\253" dabovedot
-<dead_acute> <D> : "\246" Dabovedot
-<dead_acute> <f> : "\261" fabovedot
-<dead_acute> <F> : "\260" Fabovedot
-<dead_acute> <g> : "\263" gabovedot
-<dead_acute> <G> : "\262" Gabovedot
-<dead_acute> <m> : "\265" mabovedot
-<dead_acute> <M> : "\264" Mabovedot
-<dead_acute> <p> : "\271" pabovedot
-<dead_acute> <P> : "\267" Pabovedot
-<dead_acute> <s> : "\277" sabovedot
-<dead_acute> <S> : "\273" Sabovedot
-<dead_acute> <t> : "\367" tabovedot
-<dead_acute> <T> : "\327" Tabovedot
-
-<dead_diaeresis> <Y> : "\257" Ydiaeresis
-
-<dead_grave> <Y> : "\254" Ygrave
-<dead_grave> <y> : "\274" ygrave
-
-<dead_circumflex> <y> : "\376" ycircumflex
-<dead_circumflex> <Y> : "\336" Ycircumflex
-
-<dead_circumflex> <w> : "\360" wcircumflex
-<dead_circumflex> <W> : "\320" Wcircumflex
-
-<dead_diaeresis> <w> : "\276" wdiaeresis
-<dead_diaeresis> <W> : "\275" Wdiaeresis
-
-<dead_acute> <w> : "\272" wacute
-<dead_acute> <W> : "\252" Wacute
-
-<dead_grave> <W> : "\250" Wgrave
-<dead_grave> <w> : "\270" wgrave
-
-XCOMM End of Sequence Definition
+XCOMM ISO 8859-14 (Latin 8) Compose Sequences
+XCOMM
+XCOMM Original version by Alastair McKinstry, <amck@maths.tcd.ie>
+XCOMM Fixed and tidied up by Seamus O Ciardhuain <seoc@cnds.ucd.ie> (Dec 2002)
+XCOMM
+XCOMM
+XCOMM First part is taken from the Latin-1 definitions,
+XCOMM i.e. characters the same in 8859-1 and 8859-14.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <r> <o> : "\256" registered
+<Multi_key> <o> <r> : "\256" registered
+<Multi_key> <R> <0> : "\256" registered
+<Multi_key> <r> <0> : "\256" registered
+<Multi_key> <0> <R> : "\256" registered
+<Multi_key> <0> <r> : "\256" registered
+
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+
+XCOMM Accented Alphabet
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+
+
+XCOMM The following is Celtic character support,
+XCOMM i.e. the characters in 8859-14 which differ from 8859-1.
+
+<Multi_key> <period> <b> : "\242" babovedot
+<Multi_key> <period> <B> : "\241" Babovedot
+<Multi_key> <period> <c> : "\245" cabovedot
+<Multi_key> <period> <C> : "\245" Cabovedot
+<Multi_key> <period> <d> : "\253" dabovedot
+<Multi_key> <period> <D> : "\246" Dabovedot
+<Multi_key> <period> <f> : "\261" fabovedot
+<Multi_key> <period> <F> : "\260" Fabovedot
+<Multi_key> <period> <g> : "\263" gabovedot
+<Multi_key> <period> <G> : "\262" Gabovedot
+<Multi_key> <period> <m> : "\265" mabovedot
+<Multi_key> <period> <M> : "\264" Mabovedot
+<Multi_key> <period> <p> : "\271" pabovedot
+<Multi_key> <period> <P> : "\267" Pabovedot
+<Multi_key> <period> <s> : "\277" sabovedot
+<Multi_key> <period> <S> : "\273" Sabovedot
+<Multi_key> <period> <t> : "\367" tabovedot
+<Multi_key> <period> <T> : "\327" Tabovedot
+
+<Multi_key> <b> <period> : "\242" babovedot
+<Multi_key> <B> <period> : "\241" Babovedot
+<Multi_key> <c> <period> : "\245" cabovedot
+<Multi_key> <C> <period> : "\245" Cabovedot
+<Multi_key> <d> <period> : "\253" dabovedot
+<Multi_key> <D> <period> : "\246" Dabovedot
+<Multi_key> <f> <period> : "\261" fabovedot
+<Multi_key> <F> <period> : "\260" Fabovedot
+<Multi_key> <g> <period> : "\263" gabovedot
+<Multi_key> <G> <period> : "\262" Gabovedot
+<Multi_key> <m> <period> : "\265" mabovedot
+<Multi_key> <M> <period> : "\264" Mabovedot
+<Multi_key> <p> <period> : "\271" pabovedot
+<Multi_key> <P> <period> : "\267" Pabovedot
+<Multi_key> <s> <period> : "\277" sabovedot
+<Multi_key> <S> <period> : "\273" Sabovedot
+<Multi_key> <t> <period> : "\367" tabovedot
+<Multi_key> <T> <period> : "\327" Tabovedot
+
+<Multi_key> <y> <asciicircum> : "\376" ycircumflex
+<Multi_key> <asciicircum> <y> : "\376" ycircumflex
+<Multi_key> <Y> <asciicircum> : "\336" Ycircumflex
+<Multi_key> <asciicircum> <Y> : "\336" Ycircumflex
+
+<Multi_key> <w> <asciicircum> : "\360" wcircumflex
+<Multi_key> <asciicircum> <w> : "\360" wcircumflex
+<Multi_key> <W> <asciicircum> : "\320" Wcircumflex
+<Multi_key> <asciicircum> <W> : "\320" Wcircumflex
+
+<Multi_key> <Y> <quotedbl> : "\257" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\257" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\257" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\257" Ydiaeresis
+
+<Multi_key> <W> <quotedbl> : "\275" Wdiaeresis
+<Multi_key> <quotedbl> <W> : "\275" Wdiaeresis
+<Multi_key> <W> <diaeresis> : "\275" Wdiaeresis
+<Multi_key> <diaeresis> <W> : "\275" Wdiaeresis
+<Multi_key> <w> <quotedbl> : "\276" wdiaeresis
+<Multi_key> <quotedbl> <w> : "\276" wdiaeresis
+<Multi_key> <w> <diaeresis> : "\276" wdiaeresis
+<Multi_key> <diaeresis> <w> : "\276" wdiaeresis
+
+<Multi_key> <Y> <grave> : "\254" Ygrave
+<Multi_key> <grave> <Y> : "\254" Ygrave
+<Multi_key> <y> <grave> : "\274" ygrave
+<Multi_key> <grave> <y> : "\274" ygrave
+
+<Multi_key> <W> <grave> : "\250" Wgrave
+<Multi_key> <grave> <W> : "\250" Wgrave
+<Multi_key> <w> <grave> : "\270" wgrave
+<Multi_key> <grave> <w> : "\270" wgrave
+
+<Multi_key> <W> <apostrophe> : "\252" Wacute
+<Multi_key> <apostrophe> <W> : "\252" Wacute
+<Multi_key> <W> <acute> : "\252" Wacute
+<Multi_key> <acute> <W> : "\252" Wacute
+<Multi_key> <w> <apostrophe> : "\272" wacute
+<Multi_key> <apostrophe> <w> : "\272" wacute
+<Multi_key> <w> <acute> : "\272" wacute
+<Multi_key> <acute> <w> : "\272" wacute
+
+<dead_abovedot> <b> : "\242" babovedot
+<dead_abovedot> <B> : "\241" Babovedot
+<dead_abovedot> <c> : "\245" cabovedot
+<dead_abovedot> <C> : "\245" Cabovedot
+<dead_abovedot> <d> : "\253" dabovedot
+<dead_abovedot> <D> : "\246" Dabovedot
+<dead_abovedot> <f> : "\261" fabovedot
+<dead_abovedot> <F> : "\260" Fabovedot
+<dead_abovedot> <g> : "\263" gabovedot
+<dead_abovedot> <G> : "\262" Gabovedot
+<dead_abovedot> <m> : "\265" mabovedot
+<dead_abovedot> <M> : "\264" Mabovedot
+<dead_abovedot> <p> : "\271" pabovedot
+<dead_abovedot> <P> : "\267" Pabovedot
+<dead_abovedot> <s> : "\277" sabovedot
+<dead_abovedot> <S> : "\273" Sabovedot
+<dead_abovedot> <t> : "\367" tabovedot
+<dead_abovedot> <T> : "\327" Tabovedot
+
+<dead_circumflex> <b> : "\242" babovedot
+<dead_circumflex> <B> : "\241" Babovedot
+<dead_circumflex> <c> : "\245" cabovedot
+<dead_circumflex> <C> : "\245" Cabovedot
+<dead_circumflex> <d> : "\253" dabovedot
+<dead_circumflex> <D> : "\246" Dabovedot
+<dead_circumflex> <f> : "\261" fabovedot
+<dead_circumflex> <F> : "\260" Fabovedot
+<dead_circumflex> <g> : "\263" gabovedot
+<dead_circumflex> <G> : "\262" Gabovedot
+<dead_circumflex> <m> : "\265" mabovedot
+<dead_circumflex> <M> : "\264" Mabovedot
+<dead_circumflex> <p> : "\271" pabovedot
+<dead_circumflex> <P> : "\267" Pabovedot
+<dead_circumflex> <s> : "\277" sabovedot
+<dead_circumflex> <S> : "\273" Sabovedot
+<dead_circumflex> <t> : "\367" tabovedot
+<dead_circumflex> <T> : "\327" Tabovedot
+
+<dead_acute> <b> : "\242" babovedot
+<dead_acute> <B> : "\241" Babovedot
+<dead_acute> <c> : "\245" cabovedot
+<dead_acute> <C> : "\245" Cabovedot
+<dead_acute> <d> : "\253" dabovedot
+<dead_acute> <D> : "\246" Dabovedot
+<dead_acute> <f> : "\261" fabovedot
+<dead_acute> <F> : "\260" Fabovedot
+<dead_acute> <g> : "\263" gabovedot
+<dead_acute> <G> : "\262" Gabovedot
+<dead_acute> <m> : "\265" mabovedot
+<dead_acute> <M> : "\264" Mabovedot
+<dead_acute> <p> : "\271" pabovedot
+<dead_acute> <P> : "\267" Pabovedot
+<dead_acute> <s> : "\277" sabovedot
+<dead_acute> <S> : "\273" Sabovedot
+<dead_acute> <t> : "\367" tabovedot
+<dead_acute> <T> : "\327" Tabovedot
+
+<dead_diaeresis> <Y> : "\257" Ydiaeresis
+
+<dead_grave> <Y> : "\254" Ygrave
+<dead_grave> <y> : "\274" ygrave
+
+<dead_circumflex> <y> : "\376" ycircumflex
+<dead_circumflex> <Y> : "\336" Ycircumflex
+
+<dead_circumflex> <w> : "\360" wcircumflex
+<dead_circumflex> <W> : "\320" Wcircumflex
+
+<dead_diaeresis> <w> : "\276" wdiaeresis
+<dead_diaeresis> <W> : "\275" Wdiaeresis
+
+<dead_acute> <w> : "\272" wacute
+<dead_acute> <W> : "\252" Wacute
+
+<dead_grave> <W> : "\250" Wgrave
+<dead_grave> <w> : "\270" wgrave
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-14/XI18N_OBJS b/libX11/nls/iso8859-14/XI18N_OBJS
index ebd00a6bb..ae0e6f505 100644
--- a/libX11/nls/iso8859-14/XI18N_OBJS
+++ b/libX11/nls/iso8859-14/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-14 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-14 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-14/XLC_LOCALE.pre b/libX11/nls/iso8859-14/XLC_LOCALE.pre
index 287f757be..feeca6c62 100644
--- a/libX11/nls/iso8859-14/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-14/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-14.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-14:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-14:GR
- }
- font {
- primary ISO8859-14:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-14
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-14:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-14:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-14.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-14:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-14:GR
+ }
+ font {
+ primary ISO8859-14:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-14
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-14:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-14:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-15/Compose.pre b/libX11/nls/iso8859-15/Compose.pre
index ec75cfe28..db937f39b 100644
--- a/libX11/nls/iso8859-15/Compose.pre
+++ b/libX11/nls/iso8859-15/Compose.pre
@@ -1,476 +1,476 @@
-XCOMM
-XCOMM ISO 8859-15 (Latin1) Compose Sequence
-XCOMM
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <exclam> <exclam> : "\241" exclamdown
-<Multi_key> <c> <slash> : "\242" cent
-<Multi_key> <slash> <c> : "\242" cent
-<Multi_key> <C> <slash> : "\242" cent
-<Multi_key> <slash> <C> : "\242" cent
-<Multi_key> <C> <bar> : "\242" cent
-<Multi_key> <bar> <C> : "\242" cent
-<Multi_key> <c> <bar> : "\242" cent
-<Multi_key> <bar> <c> : "\242" cent
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <C> <equal> : "\244" EuroSign
-<Multi_key> <equal> <C> : "\244" EuroSign
-<Multi_key> <c> <equal> : "\244" EuroSign
-<Multi_key> <equal> <c> : "\244" EuroSign
-<Multi_key> <E> <equal> : "\244" EuroSign
-<Multi_key> <equal> <E> : "\244" EuroSign
-<Multi_key> <e> <equal> : "\244" EuroSign
-<Multi_key> <equal> <e> : "\244" EuroSign
-<Multi_key> <y> <minus> : "\245" yen
-<Multi_key> <minus> <y> : "\245" yen
-<Multi_key> <Y> <minus> : "\245" yen
-<Multi_key> <minus> <Y> : "\245" yen
-<Multi_key> <y> <equal> : "\245" yen
-<Multi_key> <equal> <y> : "\245" yen
-<Multi_key> <Y> <equal> : "\245" yen
-<Multi_key> <equal> <Y> : "\245" yen
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <parenleft> <c> : "\251" copyright
-<Multi_key> <parenleft> <C> : "\251" copyright
-<Multi_key> <a> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <a> : "\252" ordfeminine
-<Multi_key> <A> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <A> : "\252" ordfeminine
-<Multi_key> <o> <underscore> : "\272" masculine
-<Multi_key> <underscore> <o> : "\272" masculine
-<Multi_key> <O> <underscore> : "\272" masculine
-<Multi_key> <underscore> <O> : "\272" masculine
-<Multi_key> <less> <less> : "\253" guillemotleft
-<Multi_key> <greater> <greater> : "\273" guillemotright
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <plus> <minus> : "\261" plusminus
-<Multi_key> <minus> <plus> : "\261" plusminus
-<Multi_key> <slash> <u> : "\265" mu
-<Multi_key> <u> <slash> : "\265" mu
-<Multi_key> <slash> <U> : "\265" mu
-<Multi_key> <U> <slash> : "\265" mu
-<Multi_key> <1> <asciicircum> : "\271" onesuperior
-<Multi_key> <asciicircum> <1> : "\271" onesuperior
-<Multi_key> <S> <1> : "\271" onesuperior
-<Multi_key> <1> <S> : "\271" onesuperior
-<Multi_key> <s> <1> : "\271" onesuperior
-<Multi_key> <1> <s> : "\271" onesuperior
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <question> <question> : "\277" questiondown
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <minus> <comma> : "\254" notsign
-<Multi_key> <comma> <minus> : "\254" notsign
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <parenleft> <r> : "\256" registered
-<Multi_key> <minus> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <minus> : "\257" macron
-<Multi_key> <underscore> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <underscore> : "\257" macron
-<Multi_key> <underscore> <underscore> : "\257" macron
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <quotedbl> <quotedbl> : "\"" quotedbl
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "\300" Agrave
-<Multi_key> <grave> <A> : "\300" Agrave
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <minus> : "\303" Atilde
-<Multi_key> <minus> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
-<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <A> : "\305" Aring
-<Multi_key> <A> <O> : "\305" Aring
-<Multi_key> <A> <E> : "\306" AE
-<Multi_key> <a> <grave> : "\340" agrave
-<Multi_key> <grave> <a> : "\340" agrave
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <minus> : "\343" atilde
-<Multi_key> <minus> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <diaeresis> : "\344" adiaeresis
-<Multi_key> <diaeresis> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <a> : "\345" aring
-<Multi_key> <a> <o> : "\345" aring
-<Multi_key> <a> <e> : "\346" ae
-<Multi_key> <acute> <C> : "\307" Ccedilla
-<Multi_key> <acute> <c> : "\347" ccedilla
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <minus> <D> : "\320" ETH
-<Multi_key> <D> <minus> : "\320" ETH
-<Multi_key> <minus> <d> : "\360" eth
-<Multi_key> <d> <minus> : "\360" eth
-<Multi_key> <E> <grave> : "\310" Egrave
-<Multi_key> <grave> <E> : "\310" Egrave
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
-<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
-<Multi_key> <E> <greater> : "\312" Ecircumflex
-<Multi_key> <greater> <E> : "\312" Ecircumflex
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
-<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
-<Multi_key> <e> <grave> : "\350" egrave
-<Multi_key> <grave> <e> : "\350" egrave
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <asciicircum> : "\352" ecircumflex
-<Multi_key> <asciicircum> <e> : "\352" ecircumflex
-<Multi_key> <e> <greater> : "\352" ecircumflex
-<Multi_key> <greater> <e> : "\352" ecircumflex
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <diaeresis> : "\353" ediaeresis
-<Multi_key> <diaeresis> <e> : "\353" ediaeresis
-<Multi_key> <I> <grave> : "\314" Igrave
-<Multi_key> <grave> <I> : "\314" Igrave
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
-<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
-<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
-<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
-<Multi_key> <i> <grave> : "\354" igrave
-<Multi_key> <grave> <i> : "\354" igrave
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <quotedbl> : "\357" idiaeresis
-<Multi_key> <quotedbl> <i> : "\357" idiaeresis
-<Multi_key> <i> <diaeresis> : "\357" idiaeresis
-<Multi_key> <diaeresis> <i> : "\357" idiaeresis
-<Multi_key> <N> <asciitilde> : "\321" Ntilde
-<Multi_key> <asciitilde> <N> : "\321" Ntilde
-<Multi_key> <N> <minus> : "\321" Ntilde
-<Multi_key> <minus> <N> : "\321" Ntilde
-<Multi_key> <n> <asciitilde> : "\361" ntilde
-<Multi_key> <asciitilde> <n> : "\361" ntilde
-<Multi_key> <n> <minus> : "\361" ntilde
-<Multi_key> <minus> <n> : "\361" ntilde
-<Multi_key> <O> <grave> : "\322" Ograve
-<Multi_key> <grave> <O> : "\322" Ograve
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <minus> : "\325" Otilde
-<Multi_key> <minus> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
-<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
-<Multi_key> <O> <slash> : "\330" Ooblique
-<Multi_key> <slash> <O> : "\330" Ooblique
-<Multi_key> <O> <E> : "\274" OE
-<Multi_key> <o> <grave> : "\362" ograve
-<Multi_key> <grave> <o> : "\362" ograve
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <minus> : "\365" otilde
-<Multi_key> <minus> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <diaeresis> : "\366" odiaeresis
-<Multi_key> <diaeresis> <o> : "\366" odiaeresis
-<Multi_key> <o> <slash> : "\370" oslash
-<Multi_key> <slash> <o> : "\370" oslash
-<Multi_key> <o> <e> : "\275" oe
-<Multi_key> <S> <less> : "\246" Scaron
-<Multi_key> <less> <S> : "\246" Scaron
-<Multi_key> <s> <less> : "\250" scaron
-<Multi_key> <less> <s> : "\250" scaron
-<Multi_key> <U> <grave> : "\331" Ugrave
-<Multi_key> <grave> <U> : "\331" Ugrave
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
-<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
-<Multi_key> <u> <grave> : "\371" ugrave
-<Multi_key> <grave> <u> : "\371" ugrave
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <diaeresis> : "\374" udiaeresis
-<Multi_key> <diaeresis> <u> : "\374" udiaeresis
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <T> <H> : "\336" THORN
-<Multi_key> <t> <h> : "\376" thorn
-<Multi_key> <Y> <acute> : "\335" Yacute
-<Multi_key> <acute> <Y> : "\335" Yacute
-<Multi_key> <Y> <apostrophe> : "\335" Yacute
-<Multi_key> <apostrophe> <Y> : "\335" Yacute
-<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
-<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
-<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
-<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
-<Multi_key> <y> <acute> : "\375" yacute
-<Multi_key> <acute> <y> : "\375" yacute
-<Multi_key> <y> <apostrophe> : "\375" yacute
-<Multi_key> <apostrophe> <y> : "\375" yacute
-<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
-<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
-<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
-<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
-<Multi_key> <Z> <less> : "\264" Zcaron
-<Multi_key> <less> <Z> : "\264" Zcaron
-<Multi_key> <z> <less> : "\270" zcaron
-<Multi_key> <less> <z> : "\270" zcaron
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_circumflex> <space> : "^" asciicircum
-<dead_circumflex> <dead_circumflex> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-<dead_tilde> <dead_tilde> : "~" asciitilde
-<dead_grave> <space> : "`" grave
-<dead_grave> <dead_grave> : "`" grave
-XCOMM These are for us_intl, that does not have diaeresis, etc
-<dead_acute> <space> : "'" apostrophe
-<dead_acute> <dead_acute> : "\264" acute
-<dead_diaeresis> <space> : "\"" quotedbl
-<dead_diaeresis> <dead_diaeresis> : "\"" quotedbl
-<dead_doubleacute> <space> : "\"" quotedbl
-<dead_circumflex> <0> : "\260" degree
-<dead_circumflex> <1> : "\271" onesuperior
-<dead_circumflex> <2> : "\262" twosuperior
-<dead_circumflex> <3> : "\263" threesuperior
-<dead_circumflex> <period> : "\267" periodcentered
-<dead_cedilla> <minus> : "\254" notsign
-<dead_circumflex> <minus> : "\257" macron
-<dead_circumflex> <underscore> : "\257" macron
-<dead_acute> <apostrophe> : "\264" acute
-<dead_cedilla> <comma> : "\270" cedilla
-<dead_diaeresis> <quotedbl> : "\"" quotedbl
-XCOMM Accented Alphabet
-<dead_abovering> <A> : "\305" Aring
-<dead_grave> <A> : "\300" Agrave
-<dead_acute> <A> : "\301" Aacute
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_tilde> <A> : "\303" Atilde
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_abovering> <a> : "\345" aring
-<dead_grave> <a> : "\340" agrave
-<dead_acute> <a> : "\341" aacute
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_tilde> <a> : "\343" atilde
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_grave> <E> : "\310" Egrave
-<dead_acute> <E> : "\311" Eacute
-<dead_circumflex> <E> : "\312" Ecircumflex
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_grave> <e> : "\350" egrave
-<dead_acute> <e> : "\351" eacute
-<dead_circumflex> <e> : "\352" ecircumflex
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_grave> <I> : "\314" Igrave
-<dead_acute> <I> : "\315" Iacute
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_grave> <i> : "\354" igrave
-<dead_acute> <i> : "\355" iacute
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_grave> <O> : "\322" Ograve
-<dead_acute> <O> : "\323" Oacute
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_tilde> <O> : "\325" Otilde
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_grave> <o> : "\362" ograve
-<dead_acute> <o> : "\363" oacute
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_tilde> <o> : "\365" otilde
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_caron> <S> : "\246" Scaron
-<dead_caron> <s> : "\250" scaron
-<dead_circumflex> <S> : "\246" Scaron
-<dead_circumflex> <s> : "\250" scaron
-<dead_grave> <U> : "\331" Ugrave
-<dead_acute> <U> : "\332" Uacute
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_grave> <u> : "\371" ugrave
-<dead_acute> <u> : "\372" uacute
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_acute> <Y> : "\335" Yacute
-<dead_diaeresis> <Y> : "\276" Ydiaeresis
-<dead_acute> <y> : "\375" yacute
-<dead_diaeresis> <y> : "\377" ydiaeresis
-<dead_caron> <Z> : "\264" Zcaron
-<dead_caron> <z> : "\270" zcaron
-<dead_circumflex> <Z> : "\264" Zcaron
-<dead_circumflex> <z> : "\270" zcaron
-XCOMM Useful for portuguese language
-<dead_acute> <C> : "\307" Ccedilla
-<dead_acute> <c> : "\347" ccedilla
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-15 (Latin1) Compose Sequence
+XCOMM
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "\241" exclamdown
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <c> <equal> : "\244" EuroSign
+<Multi_key> <equal> <c> : "\244" EuroSign
+<Multi_key> <E> <equal> : "\244" EuroSign
+<Multi_key> <equal> <E> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <equal> <e> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <parenleft> <C> : "\251" copyright
+<Multi_key> <a> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <a> : "\252" ordfeminine
+<Multi_key> <A> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <A> : "\252" ordfeminine
+<Multi_key> <o> <underscore> : "\272" masculine
+<Multi_key> <underscore> <o> : "\272" masculine
+<Multi_key> <O> <underscore> : "\272" masculine
+<Multi_key> <underscore> <O> : "\272" masculine
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\"" quotedbl
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <A> <O> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <a> <o> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <acute> <C> : "\307" Ccedilla
+<Multi_key> <acute> <c> : "\347" ccedilla
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <o> <e> : "\275" oe
+<Multi_key> <S> <less> : "\246" Scaron
+<Multi_key> <less> <S> : "\246" Scaron
+<Multi_key> <s> <less> : "\250" scaron
+<Multi_key> <less> <s> : "\250" scaron
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <T> <H> : "\336" THORN
+<Multi_key> <t> <h> : "\376" thorn
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <less> : "\264" Zcaron
+<Multi_key> <less> <Z> : "\264" Zcaron
+<Multi_key> <z> <less> : "\270" zcaron
+<Multi_key> <less> <z> : "\270" zcaron
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_circumflex> <space> : "^" asciicircum
+<dead_circumflex> <dead_circumflex> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+<dead_grave> <space> : "`" grave
+<dead_grave> <dead_grave> : "`" grave
+XCOMM These are for us_intl, that does not have diaeresis, etc
+<dead_acute> <space> : "'" apostrophe
+<dead_acute> <dead_acute> : "\264" acute
+<dead_diaeresis> <space> : "\"" quotedbl
+<dead_diaeresis> <dead_diaeresis> : "\"" quotedbl
+<dead_doubleacute> <space> : "\"" quotedbl
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\"" quotedbl
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_caron> <S> : "\246" Scaron
+<dead_caron> <s> : "\250" scaron
+<dead_circumflex> <S> : "\246" Scaron
+<dead_circumflex> <s> : "\250" scaron
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\264" Zcaron
+<dead_caron> <z> : "\270" zcaron
+<dead_circumflex> <Z> : "\264" Zcaron
+<dead_circumflex> <z> : "\270" zcaron
+XCOMM Useful for portuguese language
+<dead_acute> <C> : "\307" Ccedilla
+<dead_acute> <c> : "\347" ccedilla
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-15/XI18N_OBJS b/libX11/nls/iso8859-15/XI18N_OBJS
index 1e4f6cc51..03f9f2c62 100644
--- a/libX11/nls/iso8859-15/XI18N_OBJS
+++ b/libX11/nls/iso8859-15/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-15 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-15 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-15/XLC_LOCALE.pre b/libX11/nls/iso8859-15/XLC_LOCALE.pre
index 892187429..285fa7544 100644
--- a/libX11/nls/iso8859-15/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-15/XLC_LOCALE.pre
@@ -1,78 +1,78 @@
-XCOMM XLocale Database Sample for fcd/dis/iso 8859-15.
-XCOMM When Final Committee Draft (FCD) 8859-15 is formalized
-XCOMM then this file will be renamed iso8859-15.
-XCOMM This file is provided as preliminary support for the Latin-9
-XCOMM (a.k.a. Latin-0) character set so that Europeans who want
-XCOMM the Euro currency character can do so.
-XCOMM
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-15:GL
- substitute ISO8859-15:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-15:GR
- }
- font {
- primary ISO8859-15:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-15
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-15:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-15:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for fcd/dis/iso 8859-15.
+XCOMM When Final Committee Draft (FCD) 8859-15 is formalized
+XCOMM then this file will be renamed iso8859-15.
+XCOMM This file is provided as preliminary support for the Latin-9
+XCOMM (a.k.a. Latin-0) character set so that Europeans who want
+XCOMM the Euro currency character can do so.
+XCOMM
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-15:GL
+ substitute ISO8859-15:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-15:GR
+ }
+ font {
+ primary ISO8859-15:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-15
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-15:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-15:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-2/Compose.pre b/libX11/nls/iso8859-2/Compose.pre
index 876e82c6d..a4ea6f49a 100644
--- a/libX11/nls/iso8859-2/Compose.pre
+++ b/libX11/nls/iso8859-2/Compose.pre
@@ -1,535 +1,535 @@
-XCOMM
-XCOMM ISO 8859-2 (Latin2) Compose Sequence
-XCOMM
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <A> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <x> <o> : "\244" currency
-<Multi_key> <o> <x> : "\244" currency
-<Multi_key> <X> <O> : "\244" currency
-<Multi_key> <O> <X> : "\244" currency
-<Multi_key> <x> <O> : "\244" currency
-<Multi_key> <O> <x> : "\244" currency
-<Multi_key> <X> <o> : "\244" currency
-<Multi_key> <o> <X> : "\244" currency
-<Multi_key> <x> <0> : "\244" currency
-<Multi_key> <0> <x> : "\244" currency
-<Multi_key> <X> <0> : "\244" currency
-<Multi_key> <0> <X> : "\244" currency
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-XCOMM Right-hand side (Accented Alphabet)
-XCOMM These compose sequences are pure supposition on my part.
-XCOMM It would be nice to know what the real cultural conventions
-XCOMM are for compose sequences.
-<Multi_key> <A> <comma> : "\241" Aogonek
-<Multi_key> <comma> <A> : "\241" Aogonek
-<Multi_key> <A> <ogonek> : "\241" Aogonek
-<Multi_key> <ogonek> <A> : "\241" Aogonek
-<Multi_key> <U> <space> : "\242" breve
-<Multi_key> <L> <minus> : "\243" Lstroke
-<Multi_key> <L> <less> : "\245" Lcaron
-<Multi_key> <less> <L> : "\245" Lcaron
-<Multi_key> <L> <caron> : "\245" Lcaron
-<Multi_key> <caron> <L> : "\245" Lcaron
-<Multi_key> <S> <apostrophe> : "\246" Sacute
-<Multi_key> <apostrophe> <S> : "\246" Sacute
-<Multi_key> <S> <acute> : "\246" Sacute
-<Multi_key> <acute> <S> : "\246" Sacute
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-<Multi_key> <S> <less> : "\251" Scaron
-<Multi_key> <less> <S> : "\251" Scaron
-<Multi_key> <S> <caron> : "\251" Scaron
-<Multi_key> <caron> <S> : "\251" Scaron
-<Multi_key> <S> <comma> : "\252" Scedilla
-<Multi_key> <comma> <S> : "\252" Scedilla
-<Multi_key> <S> <cedilla> : "\252" Scedilla
-<Multi_key> <cedilla> <S> : "\252" Scedilla
-<Multi_key> <T> <less> : "\253" Tcaron
-<Multi_key> <less> <T> : "\253" Tcaron
-<Multi_key> <T> <caron> : "\253" Tcaron
-<Multi_key> <caron> <T> : "\253" Tcaron
-<Multi_key> <Z> <apostrophe> : "\254" Zacute
-<Multi_key> <apostrophe> <Z> : "\254" Zacute
-<Multi_key> <Z> <acute> : "\254" Zacute
-<Multi_key> <acute> <Z> : "\254" Zacute
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <Z> <less> : "\256" Zcaron
-<Multi_key> <less> <Z> : "\256" Zcaron
-<Multi_key> <Z> <caron> : "\256" Zcaron
-<Multi_key> <caron> <Z> : "\256" Zcaron
-<Multi_key> <Z> <period> : "\257" Zabovedot
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <a> <comma> : "\261" aogonek
-<Multi_key> <comma> <a> : "\261" aogonek
-<Multi_key> <a> <ogonek> : "\261" aogonek
-<Multi_key> <ogonek> <a> : "\261" aogonek
-<Multi_key> <l> <minus> : "\263" lstroke
-<Multi_key> <l> <less> : "\265" lcaron
-<Multi_key> <less> <l> : "\265" lcaron
-<Multi_key> <l> <caron> : "\265" lcaron
-<Multi_key> <caron> <l> : "\265" lcaron
-<Multi_key> <s> <apostrophe> : "\266" sacute
-<Multi_key> <apostrophe> <s> : "\266" sacute
-<Multi_key> <s> <acute> : "\266" sacute
-<Multi_key> <acute> <s> : "\266" sacute
-<Multi_key> <less> <less> : "\267" caron
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <s> <less> : "\271" scaron
-<Multi_key> <less> <s> : "\271" scaron
-<Multi_key> <s> <caron> : "\271" scaron
-<Multi_key> <caron> <s> : "\271" scaron
-<Multi_key> <s> <comma> : "\272" scedilla
-<Multi_key> <comma> <s> : "\272" scedilla
-<Multi_key> <s> <cedilla> : "\272" scedilla
-<Multi_key> <cedilla> <s> : "\272" scedilla
-<Multi_key> <t> <less> : "\273" tcaron
-<Multi_key> <less> <t> : "\273" tcaron
-<Multi_key> <t> <caron> : "\273" tcaron
-<Multi_key> <caron> <t> : "\273" tcaron
-<Multi_key> <z> <apostrophe> : "\274" zacute
-<Multi_key> <apostrophe> <z> : "\274" zacute
-<Multi_key> <z> <acute> : "\274" zacute
-<Multi_key> <acute> <z> : "\274" zacute
-<Multi_key> <apostrophe> <apostrophe> <space> : "\275" doubleacute
-<Multi_key> <acute> <acute> <space> : "\275" doubleacute
-<Multi_key> <z> <less> : "\276" zcaron
-<Multi_key> <less> <z> : "\276" zcaron
-<Multi_key> <z> <caron> : "\276" zcaron
-<Multi_key> <caron> <z> : "\276" zcaron
-<Multi_key> <z> <period> : "\277" zabovedot
-<Multi_key> <R> <acute> : "\300" Racute
-<Multi_key> <acute> <R> : "\300" Racute
-<Multi_key> <R> <apostrophe> : "\300" Racute
-<Multi_key> <apostrophe> <R> : "\300" Racute
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <U> : "\303" Abreve
-<Multi_key> <A> <breve> : "\303" Abreve
-<Multi_key> <breve> <A> : "\303" Abreve
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <L> <acute> : "\305" Lacute
-<Multi_key> <acute> <L> : "\305" Lacute
-<Multi_key> <L> <apostrophe> : "\305" Lacute
-<Multi_key> <apostrophe> <L> : "\305" Lacute
-<Multi_key> <C> <acute> : "\306" Cacute
-<Multi_key> <acute> <C> : "\306" Cacute
-<Multi_key> <C> <apostrophe> : "\306" Cacute
-<Multi_key> <apostrophe> <C> : "\306" Cacute
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <C> <less> : "\310" Ccaron
-<Multi_key> <less> <C> : "\310" Ccaron
-<Multi_key> <C> <caron> : "\310" Ccaron
-<Multi_key> <caron> <C> : "\310" Ccaron
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <comma> : "\312" Eogonek
-<Multi_key> <comma> <E> : "\312" Eogonek
-<Multi_key> <E> <ogonek> : "\312" Eogonek
-<Multi_key> <ogonek> <E> : "\312" Eogonek
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <less> : "\314" Ecaron
-<Multi_key> <less> <E> : "\314" Ecaron
-<Multi_key> <E> <caron> : "\314" Ecaron
-<Multi_key> <caron> <E> : "\314" Ecaron
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <D> <less> : "\317" Dcaron
-<Multi_key> <less> <D> : "\317" Dcaron
-<Multi_key> <D> <caron> : "\317" Dcaron
-<Multi_key> <caron> <D> : "\317" Dcaron
-<Multi_key> <D> <minus> : "\320" Dstroke
-<Multi_key> <minus> <D> : "\320" Dstroke
-<Multi_key> <N> <acute> : "\321" Nacute
-<Multi_key> <acute> <N> : "\321" Nacute
-<Multi_key> <N> <apostrophe> : "\321" Nacute
-<Multi_key> <apostrophe> <N> : "\321" Nacute
-<Multi_key> <N> <less> : "\322" Ncaron
-<Multi_key> <less> <N> : "\322" Ncaron
-<Multi_key> <N> <caron> : "\322" Ncaron
-<Multi_key> <caron> <N> : "\322" Ncaron
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <apostrophe> <apostrophe> <O> : "\325" Odoubleacute
-<Multi_key> <acute> <acute> <O> : "\325" Odoubleacute
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <R> <less> : "\330" Rcaron
-<Multi_key> <less> <R> : "\330" Rcaron
-<Multi_key> <R> <caron> : "\330" Rcaron
-<Multi_key> <caron> <R> : "\330" Rcaron
-<Multi_key> <U> <asterisk> : "\331" Uring
-<Multi_key> <asterisk> <U> : "\331" Uring
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <apostrophe> <apostrophe> <U> : "\333" Udoubleacute
-<Multi_key> <acute> <acute> <U> : "\333" Udoubleacute
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <Y> <acute> : "\335" Yacute
-<Multi_key> <acute> <Y> : "\335" Yacute
-<Multi_key> <Y> <apostrophe> : "\335" Yacute
-<Multi_key> <apostrophe> <Y> : "\335" Yacute
-<Multi_key> <T> <comma> : "\336" Tcedilla
-<Multi_key> <comma> <T> : "\336" Tcedilla
-<Multi_key> <T> <cedilla> : "\336" Tcedilla
-<Multi_key> <cedilla> <T> : "\336" Tcedilla
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <r> <acute> : "\340" racute
-<Multi_key> <acute> <r> : "\340" racute
-<Multi_key> <r> <apostrophe> : "\340" racute
-<Multi_key> <apostrophe> <r> : "\340" racute
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <U> : "\343" abreve
-<Multi_key> <a> <breve> : "\343" abreve
-<Multi_key> <breve> <a> : "\343" abreve
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <l> <acute> : "\345" lacute
-<Multi_key> <acute> <l> : "\345" lacute
-<Multi_key> <l> <apostrophe> : "\345" lacute
-<Multi_key> <apostrophe> <l> : "\345" lacute
-<Multi_key> <c> <acute> : "\346" cacute
-<Multi_key> <acute> <c> : "\346" cacute
-<Multi_key> <c> <apostrophe> : "\346" cacute
-<Multi_key> <apostrophe> <c> : "\346" cacute
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <c> <less> : "\350" ccaron
-<Multi_key> <less> <c> : "\350" ccaron
-<Multi_key> <c> <caron> : "\350" ccaron
-<Multi_key> <caron> <c> : "\350" ccaron
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <comma> : "\352" eogonek
-<Multi_key> <comma> <e> : "\352" eogonek
-<Multi_key> <e> <ogonek> : "\352" eogonek
-<Multi_key> <ogonek> <e> : "\352" eogonek
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <less> : "\354" ecaron
-<Multi_key> <less> <e> : "\354" ecaron
-<Multi_key> <e> <caron> : "\354" ecaron
-<Multi_key> <caron> <e> : "\354" ecaron
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <d> <less> : "\357" dcaron
-<Multi_key> <less> <d> : "\357" dcaron
-<Multi_key> <d> <caron> : "\357" dcaron
-<Multi_key> <caron> <d> : "\357" dcaron
-<Multi_key> <d> <minus> : "\360" dstroke
-<Multi_key> <minus> <d> : "\360" dstroke
-<Multi_key> <n> <acute> : "\361" nacute
-<Multi_key> <acute> <n> : "\361" nacute
-<Multi_key> <n> <apostrophe> : "\361" nacute
-<Multi_key> <apostrophe> <n> : "\361" nacute
-<Multi_key> <n> <less> : "\362" ncaron
-<Multi_key> <less> <n> : "\362" ncaron
-<Multi_key> <n> <caron> : "\362" ncaron
-<Multi_key> <caron> <n> : "\362" ncaron
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <apostrophe> <apostrophe> <o> : "\365" odoubleacute
-<Multi_key> <acute> <acute> <o> : "\365" odoubleacute
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <r> <less> : "\370" rcaron
-<Multi_key> <less> <r> : "\370" rcaron
-<Multi_key> <r> <caron> : "\370" rcaron
-<Multi_key> <caron> <r> : "\370" rcaron
-<Multi_key> <u> <asterisk> : "\371" uring
-<Multi_key> <asterisk> <u> : "\371" uring
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <apostrophe> <apostrophe> <u> : "\373" udoubleacute
-<Multi_key> <acute> <acute> <u> : "\373" udoubleacute
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <y> <acute> : "\375" yacute
-<Multi_key> <acute> <y> : "\375" yacute
-<Multi_key> <y> <apostrophe> : "\375" yacute
-<Multi_key> <apostrophe> <y> : "\375" yacute
-<Multi_key> <t> <comma> : "\376" tcedilla
-<Multi_key> <comma> <t> : "\376" tcedilla
-<Multi_key> <t> <cedilla> : "\376" tcedilla
-<Multi_key> <cedilla> <t> : "\376" tcedilla
-<Multi_key> <period> <period> : "\377" abovedot
-<dead_acute> <A> : "\301" Aacute
-<dead_acute> <C> : "\306" Cacute
-<dead_acute> <E> : "\311" Eacute
-<dead_acute> <I> : "\315" Iacute
-<dead_acute> <L> : "\305" Lacute
-<dead_acute> <N> : "\321" Nacute
-<dead_acute> <O> : "\323" Oacute
-<dead_acute> <R> : "\300" Racute
-<dead_acute> <S> : "\246" Sacute
-<dead_acute> <U> : "\332" Uacute
-<dead_acute> <Y> : "\335" Yacute
-<dead_acute> <Z> : "\254" Zacute
-<dead_acute> <a> : "\341" aacute
-<dead_acute> <c> : "\346" cacute
-<dead_acute> <e> : "\351" eacute
-<dead_acute> <i> : "\355" iacute
-<dead_acute> <l> : "\345" lacute
-<dead_acute> <n> : "\361" nacute
-<dead_acute> <o> : "\363" oacute
-<dead_acute> <r> : "\340" racute
-<dead_acute> <s> : "\266" sacute
-<dead_acute> <u> : "\372" uacute
-<dead_acute> <y> : "\375" yacute
-<dead_acute> <z> : "\274" zacute
-<dead_breve> <A> : "\303" Abreve
-<dead_breve> <a> : "\343" abreve
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_abovering> <U> : "\331" Uring
-<dead_abovering> <u> : "\371" uring
-<dead_doubleacute> <O> : "\325" Odoubleacute
-<dead_doubleacute> <U> : "\333" Udoubleacute
-<dead_doubleacute> <o> : "\365" odoubleacute
-<dead_doubleacute> <u> : "\373" udoubleacute
-<dead_caron> <C> : "\310" Ccaron
-<dead_caron> <D> : "\317" Dcaron
-<dead_caron> <E> : "\314" Ecaron
-<dead_caron> <L> : "\245" Lcaron
-<dead_caron> <N> : "\322" Ncaron
-<dead_caron> <R> : "\330" Rcaron
-<dead_caron> <S> : "\251" Scaron
-<dead_caron> <T> : "\253" Tcaron
-<dead_caron> <Z> : "\256" Zcaron
-<dead_caron> <c> : "\350" ccaron
-<dead_caron> <d> : "\357" dcaron
-<dead_caron> <e> : "\354" ecaron
-<dead_caron> <l> : "\265" lcaron
-<dead_caron> <n> : "\362" ncaron
-<dead_caron> <r> : "\370" rcaron
-<dead_caron> <s> : "\271" scaron
-<dead_caron> <t> : "\273" tcaron
-<dead_caron> <z> : "\276" zcaron
-<dead_cedilla> <S> : "\252" Scedilla
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_cedilla> <T> : "\336" Tcedilla
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_cedilla> <s> : "\272" scedilla
-<dead_cedilla> <t> : "\376" tcedilla
-XCOMM those are for ease of use
-<dead_abovedot> <U> : "\331" Uring
-<dead_abovedot> <u> : "\371" uring
-<dead_caron> <U> : "\331" Uring
-<dead_caron> <u> : "\371" uring
-XCOMM traditional sequences
-<Multi_key> <O> <E> : "\274" OE
-<Multi_key> <o> <e> : "\275" oe
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_abovering> <dead_abovering> : "\260" degree
-<dead_abovering> <degree> : "\260" degree
-<dead_abovering> <space> : "\260" degree
-<dead_abovering> <nobreakspace> : "\260" degree
-<dead_tilde> <I> : "\245" Itilde
-<dead_tilde> <i> : "\265" itilde
-<dead_tilde> <A> : "\303" Atilde
-<dead_tilde> <O> : "\325" Otilde
-<dead_tilde> <U> : "\335" Utilde
-<dead_tilde> <a> : "\343" atilde
-<dead_tilde> <o> : "\365" otilde
-<dead_tilde> <u> : "\375" utilde
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_tilde> <dead_tilde> : "~" asciitilde
-<dead_tilde> <asciitilde> : "~" asciitilde
-<dead_tilde> <space> : "~" asciitilde
-<dead_tilde> <nobreakspace> : "~" asciitilde
-<dead_caron> <caron> : "\267" caron
-<dead_caron> <dead_caron> : "\267" caron
-<dead_caron> <space> : "\267" caron
-<dead_caron> <nobreakspace> : "\267" caron
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_circumflex> <dead_circumflex> : "\136" asciicircum
-<dead_circumflex> <asciicircum> : "\136" asciicircum
-<dead_circumflex> <space> : "\136" asciicircum
-<dead_circumflex> <nobreakspace> : "\136" asciicircum
-<dead_breve> <G> : "\253" Gbreve
-<dead_breve> <g> : "\273" gbreve
-<dead_breve> <U> : "\335" Ubreve
-<dead_breve> <u> : "\375" ubreve
-<dead_breve> <dead_breve> : "\242" breve
-<dead_breve> <breve> : "\242" breve
-<dead_breve> <space> : "\242" breve
-<dead_breve> <nobreakspace> : "\242" breve
-<dead_ogonek> <A> : "\241" Aogonek
-<dead_ogonek> <I> : "\307" Iogonek
-<dead_ogonek> <E> : "\312" Eogonek
-<dead_ogonek> <U> : "\331" Uogonek
-<dead_ogonek> <a> : "\261" aogonek
-<dead_ogonek> <i> : "\347" iogonek
-<dead_ogonek> <e> : "\352" eogonek
-<dead_ogonek> <u> : "\371" uogonek
-<dead_ogonek> <dead_ogonek> : "\662" ogonek
-<dead_ogonek> <ogonek> : "\662" ogonek
-<dead_ogonek> <space> : "\662" ogonek
-<dead_ogonek> <nobreakspace> : "\662" ogonek
-<dead_grave> <A> : "\300" Agrave
-<dead_grave> <a> : "\340" agrave
-<dead_grave> <E> : "\310" Egrave
-<dead_grave> <e> : "\350" egrave
-<dead_grave> <I> : "\314" Igrave
-<dead_grave> <i> : "\354" igrave
-<dead_grave> <O> : "\322" Ograve
-<dead_grave> <o> : "\362" ograve
-<dead_grave> <U> : "\331" Ugrave
-<dead_grave> <u> : "\371" ugrave
-<dead_grave> <dead_grave> : "`" grave
-<dead_grave> <grave> : "`" grave
-<dead_grave> <space> : "`" grave
-<dead_grave> <nobreakspace> : "`" grave
-<dead_abovedot> <C> : "\305" Cabovedot
-<dead_abovedot> <c> : "\345" cabovedot
-<dead_abovedot> <I> : "\251" Iabovedot
-<dead_abovedot> <i> : "\271" idotless
-<dead_abovedot> <Z> : "\257" Zabovedot
-<dead_abovedot> <z> : "\277" zabovedot
-<dead_abovedot> <E> : "\314" Eabovedot
-<dead_abovedot> <e> : "\354" eabovedot
-<dead_abovedot> <dead_abovedot> : "\377" abovedot
-<dead_abovedot> <abovedot> : "\377" abovedot
-<dead_abovedot> <space> : "\377" abovedot
-<dead_abovedot> <nobreakspace> : "\377" abovedot
-<dead_acute> <dead_acute> : "\264" acute
-<dead_acute> <acute> : "\264" acute
-<dead_acute> <space> : "\264" acute
-<dead_acute> <nobreakspace> : "\264" acute
-<dead_doubleacute> <dead_doubleacute> : "\675" doubleacute
-<dead_doubleacute> <doubleacute> : "\675" doubleacute
-<dead_doubleacute> <space> : "\675" doubleacute
-<dead_doubleacute> <nobreakspace> : "\675" doubleacute
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_diaeresis> <y> : "\377" ydiaeresis
-<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
-<dead_diaeresis> <diaeresis> : "\250" diaeresis
-<dead_diaeresis> <space> : "\250" diaeresis
-<dead_diaeresis> <nobreakspace> : "\250" diaeresis
-<dead_cedilla> <dead_cedilla> : "\270" cedilla
-<dead_cedilla> <cedilla> : "\270" cedilla
-<dead_cedilla> <space> : "\270" cedilla
-<dead_cedilla> <nobreakspace> : "\270" cedilla
-<dead_macron> <dead_macron> : "\257" macron
-<dead_macron> <macron> : "\257" macron
-<dead_macron> <space> : "\257" macron
-<dead_macron> <nobreakspace> : "\257" macron
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-2 (Latin2) Compose Sequence
+XCOMM
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <A> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <x> <o> : "\244" currency
+<Multi_key> <o> <x> : "\244" currency
+<Multi_key> <X> <O> : "\244" currency
+<Multi_key> <O> <X> : "\244" currency
+<Multi_key> <x> <O> : "\244" currency
+<Multi_key> <O> <x> : "\244" currency
+<Multi_key> <X> <o> : "\244" currency
+<Multi_key> <o> <X> : "\244" currency
+<Multi_key> <x> <0> : "\244" currency
+<Multi_key> <0> <x> : "\244" currency
+<Multi_key> <X> <0> : "\244" currency
+<Multi_key> <0> <X> : "\244" currency
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+XCOMM Right-hand side (Accented Alphabet)
+XCOMM These compose sequences are pure supposition on my part.
+XCOMM It would be nice to know what the real cultural conventions
+XCOMM are for compose sequences.
+<Multi_key> <A> <comma> : "\241" Aogonek
+<Multi_key> <comma> <A> : "\241" Aogonek
+<Multi_key> <A> <ogonek> : "\241" Aogonek
+<Multi_key> <ogonek> <A> : "\241" Aogonek
+<Multi_key> <U> <space> : "\242" breve
+<Multi_key> <L> <minus> : "\243" Lstroke
+<Multi_key> <L> <less> : "\245" Lcaron
+<Multi_key> <less> <L> : "\245" Lcaron
+<Multi_key> <L> <caron> : "\245" Lcaron
+<Multi_key> <caron> <L> : "\245" Lcaron
+<Multi_key> <S> <apostrophe> : "\246" Sacute
+<Multi_key> <apostrophe> <S> : "\246" Sacute
+<Multi_key> <S> <acute> : "\246" Sacute
+<Multi_key> <acute> <S> : "\246" Sacute
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+<Multi_key> <S> <less> : "\251" Scaron
+<Multi_key> <less> <S> : "\251" Scaron
+<Multi_key> <S> <caron> : "\251" Scaron
+<Multi_key> <caron> <S> : "\251" Scaron
+<Multi_key> <S> <comma> : "\252" Scedilla
+<Multi_key> <comma> <S> : "\252" Scedilla
+<Multi_key> <S> <cedilla> : "\252" Scedilla
+<Multi_key> <cedilla> <S> : "\252" Scedilla
+<Multi_key> <T> <less> : "\253" Tcaron
+<Multi_key> <less> <T> : "\253" Tcaron
+<Multi_key> <T> <caron> : "\253" Tcaron
+<Multi_key> <caron> <T> : "\253" Tcaron
+<Multi_key> <Z> <apostrophe> : "\254" Zacute
+<Multi_key> <apostrophe> <Z> : "\254" Zacute
+<Multi_key> <Z> <acute> : "\254" Zacute
+<Multi_key> <acute> <Z> : "\254" Zacute
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <Z> <less> : "\256" Zcaron
+<Multi_key> <less> <Z> : "\256" Zcaron
+<Multi_key> <Z> <caron> : "\256" Zcaron
+<Multi_key> <caron> <Z> : "\256" Zcaron
+<Multi_key> <Z> <period> : "\257" Zabovedot
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <a> <comma> : "\261" aogonek
+<Multi_key> <comma> <a> : "\261" aogonek
+<Multi_key> <a> <ogonek> : "\261" aogonek
+<Multi_key> <ogonek> <a> : "\261" aogonek
+<Multi_key> <l> <minus> : "\263" lstroke
+<Multi_key> <l> <less> : "\265" lcaron
+<Multi_key> <less> <l> : "\265" lcaron
+<Multi_key> <l> <caron> : "\265" lcaron
+<Multi_key> <caron> <l> : "\265" lcaron
+<Multi_key> <s> <apostrophe> : "\266" sacute
+<Multi_key> <apostrophe> <s> : "\266" sacute
+<Multi_key> <s> <acute> : "\266" sacute
+<Multi_key> <acute> <s> : "\266" sacute
+<Multi_key> <less> <less> : "\267" caron
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <s> <less> : "\271" scaron
+<Multi_key> <less> <s> : "\271" scaron
+<Multi_key> <s> <caron> : "\271" scaron
+<Multi_key> <caron> <s> : "\271" scaron
+<Multi_key> <s> <comma> : "\272" scedilla
+<Multi_key> <comma> <s> : "\272" scedilla
+<Multi_key> <s> <cedilla> : "\272" scedilla
+<Multi_key> <cedilla> <s> : "\272" scedilla
+<Multi_key> <t> <less> : "\273" tcaron
+<Multi_key> <less> <t> : "\273" tcaron
+<Multi_key> <t> <caron> : "\273" tcaron
+<Multi_key> <caron> <t> : "\273" tcaron
+<Multi_key> <z> <apostrophe> : "\274" zacute
+<Multi_key> <apostrophe> <z> : "\274" zacute
+<Multi_key> <z> <acute> : "\274" zacute
+<Multi_key> <acute> <z> : "\274" zacute
+<Multi_key> <apostrophe> <apostrophe> <space> : "\275" doubleacute
+<Multi_key> <acute> <acute> <space> : "\275" doubleacute
+<Multi_key> <z> <less> : "\276" zcaron
+<Multi_key> <less> <z> : "\276" zcaron
+<Multi_key> <z> <caron> : "\276" zcaron
+<Multi_key> <caron> <z> : "\276" zcaron
+<Multi_key> <z> <period> : "\277" zabovedot
+<Multi_key> <R> <acute> : "\300" Racute
+<Multi_key> <acute> <R> : "\300" Racute
+<Multi_key> <R> <apostrophe> : "\300" Racute
+<Multi_key> <apostrophe> <R> : "\300" Racute
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <U> : "\303" Abreve
+<Multi_key> <A> <breve> : "\303" Abreve
+<Multi_key> <breve> <A> : "\303" Abreve
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <L> <acute> : "\305" Lacute
+<Multi_key> <acute> <L> : "\305" Lacute
+<Multi_key> <L> <apostrophe> : "\305" Lacute
+<Multi_key> <apostrophe> <L> : "\305" Lacute
+<Multi_key> <C> <acute> : "\306" Cacute
+<Multi_key> <acute> <C> : "\306" Cacute
+<Multi_key> <C> <apostrophe> : "\306" Cacute
+<Multi_key> <apostrophe> <C> : "\306" Cacute
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <C> <less> : "\310" Ccaron
+<Multi_key> <less> <C> : "\310" Ccaron
+<Multi_key> <C> <caron> : "\310" Ccaron
+<Multi_key> <caron> <C> : "\310" Ccaron
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <comma> : "\312" Eogonek
+<Multi_key> <comma> <E> : "\312" Eogonek
+<Multi_key> <E> <ogonek> : "\312" Eogonek
+<Multi_key> <ogonek> <E> : "\312" Eogonek
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <less> : "\314" Ecaron
+<Multi_key> <less> <E> : "\314" Ecaron
+<Multi_key> <E> <caron> : "\314" Ecaron
+<Multi_key> <caron> <E> : "\314" Ecaron
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <D> <less> : "\317" Dcaron
+<Multi_key> <less> <D> : "\317" Dcaron
+<Multi_key> <D> <caron> : "\317" Dcaron
+<Multi_key> <caron> <D> : "\317" Dcaron
+<Multi_key> <D> <minus> : "\320" Dstroke
+<Multi_key> <minus> <D> : "\320" Dstroke
+<Multi_key> <N> <acute> : "\321" Nacute
+<Multi_key> <acute> <N> : "\321" Nacute
+<Multi_key> <N> <apostrophe> : "\321" Nacute
+<Multi_key> <apostrophe> <N> : "\321" Nacute
+<Multi_key> <N> <less> : "\322" Ncaron
+<Multi_key> <less> <N> : "\322" Ncaron
+<Multi_key> <N> <caron> : "\322" Ncaron
+<Multi_key> <caron> <N> : "\322" Ncaron
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <apostrophe> <apostrophe> <O> : "\325" Odoubleacute
+<Multi_key> <acute> <acute> <O> : "\325" Odoubleacute
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <R> <less> : "\330" Rcaron
+<Multi_key> <less> <R> : "\330" Rcaron
+<Multi_key> <R> <caron> : "\330" Rcaron
+<Multi_key> <caron> <R> : "\330" Rcaron
+<Multi_key> <U> <asterisk> : "\331" Uring
+<Multi_key> <asterisk> <U> : "\331" Uring
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <apostrophe> <apostrophe> <U> : "\333" Udoubleacute
+<Multi_key> <acute> <acute> <U> : "\333" Udoubleacute
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <T> <comma> : "\336" Tcedilla
+<Multi_key> <comma> <T> : "\336" Tcedilla
+<Multi_key> <T> <cedilla> : "\336" Tcedilla
+<Multi_key> <cedilla> <T> : "\336" Tcedilla
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <r> <acute> : "\340" racute
+<Multi_key> <acute> <r> : "\340" racute
+<Multi_key> <r> <apostrophe> : "\340" racute
+<Multi_key> <apostrophe> <r> : "\340" racute
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <U> : "\343" abreve
+<Multi_key> <a> <breve> : "\343" abreve
+<Multi_key> <breve> <a> : "\343" abreve
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <l> <acute> : "\345" lacute
+<Multi_key> <acute> <l> : "\345" lacute
+<Multi_key> <l> <apostrophe> : "\345" lacute
+<Multi_key> <apostrophe> <l> : "\345" lacute
+<Multi_key> <c> <acute> : "\346" cacute
+<Multi_key> <acute> <c> : "\346" cacute
+<Multi_key> <c> <apostrophe> : "\346" cacute
+<Multi_key> <apostrophe> <c> : "\346" cacute
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <c> <less> : "\350" ccaron
+<Multi_key> <less> <c> : "\350" ccaron
+<Multi_key> <c> <caron> : "\350" ccaron
+<Multi_key> <caron> <c> : "\350" ccaron
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <comma> : "\352" eogonek
+<Multi_key> <comma> <e> : "\352" eogonek
+<Multi_key> <e> <ogonek> : "\352" eogonek
+<Multi_key> <ogonek> <e> : "\352" eogonek
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <less> : "\354" ecaron
+<Multi_key> <less> <e> : "\354" ecaron
+<Multi_key> <e> <caron> : "\354" ecaron
+<Multi_key> <caron> <e> : "\354" ecaron
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <d> <less> : "\357" dcaron
+<Multi_key> <less> <d> : "\357" dcaron
+<Multi_key> <d> <caron> : "\357" dcaron
+<Multi_key> <caron> <d> : "\357" dcaron
+<Multi_key> <d> <minus> : "\360" dstroke
+<Multi_key> <minus> <d> : "\360" dstroke
+<Multi_key> <n> <acute> : "\361" nacute
+<Multi_key> <acute> <n> : "\361" nacute
+<Multi_key> <n> <apostrophe> : "\361" nacute
+<Multi_key> <apostrophe> <n> : "\361" nacute
+<Multi_key> <n> <less> : "\362" ncaron
+<Multi_key> <less> <n> : "\362" ncaron
+<Multi_key> <n> <caron> : "\362" ncaron
+<Multi_key> <caron> <n> : "\362" ncaron
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <apostrophe> <apostrophe> <o> : "\365" odoubleacute
+<Multi_key> <acute> <acute> <o> : "\365" odoubleacute
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <r> <less> : "\370" rcaron
+<Multi_key> <less> <r> : "\370" rcaron
+<Multi_key> <r> <caron> : "\370" rcaron
+<Multi_key> <caron> <r> : "\370" rcaron
+<Multi_key> <u> <asterisk> : "\371" uring
+<Multi_key> <asterisk> <u> : "\371" uring
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <apostrophe> <apostrophe> <u> : "\373" udoubleacute
+<Multi_key> <acute> <acute> <u> : "\373" udoubleacute
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <t> <comma> : "\376" tcedilla
+<Multi_key> <comma> <t> : "\376" tcedilla
+<Multi_key> <t> <cedilla> : "\376" tcedilla
+<Multi_key> <cedilla> <t> : "\376" tcedilla
+<Multi_key> <period> <period> : "\377" abovedot
+<dead_acute> <A> : "\301" Aacute
+<dead_acute> <C> : "\306" Cacute
+<dead_acute> <E> : "\311" Eacute
+<dead_acute> <I> : "\315" Iacute
+<dead_acute> <L> : "\305" Lacute
+<dead_acute> <N> : "\321" Nacute
+<dead_acute> <O> : "\323" Oacute
+<dead_acute> <R> : "\300" Racute
+<dead_acute> <S> : "\246" Sacute
+<dead_acute> <U> : "\332" Uacute
+<dead_acute> <Y> : "\335" Yacute
+<dead_acute> <Z> : "\254" Zacute
+<dead_acute> <a> : "\341" aacute
+<dead_acute> <c> : "\346" cacute
+<dead_acute> <e> : "\351" eacute
+<dead_acute> <i> : "\355" iacute
+<dead_acute> <l> : "\345" lacute
+<dead_acute> <n> : "\361" nacute
+<dead_acute> <o> : "\363" oacute
+<dead_acute> <r> : "\340" racute
+<dead_acute> <s> : "\266" sacute
+<dead_acute> <u> : "\372" uacute
+<dead_acute> <y> : "\375" yacute
+<dead_acute> <z> : "\274" zacute
+<dead_breve> <A> : "\303" Abreve
+<dead_breve> <a> : "\343" abreve
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_abovering> <U> : "\331" Uring
+<dead_abovering> <u> : "\371" uring
+<dead_doubleacute> <O> : "\325" Odoubleacute
+<dead_doubleacute> <U> : "\333" Udoubleacute
+<dead_doubleacute> <o> : "\365" odoubleacute
+<dead_doubleacute> <u> : "\373" udoubleacute
+<dead_caron> <C> : "\310" Ccaron
+<dead_caron> <D> : "\317" Dcaron
+<dead_caron> <E> : "\314" Ecaron
+<dead_caron> <L> : "\245" Lcaron
+<dead_caron> <N> : "\322" Ncaron
+<dead_caron> <R> : "\330" Rcaron
+<dead_caron> <S> : "\251" Scaron
+<dead_caron> <T> : "\253" Tcaron
+<dead_caron> <Z> : "\256" Zcaron
+<dead_caron> <c> : "\350" ccaron
+<dead_caron> <d> : "\357" dcaron
+<dead_caron> <e> : "\354" ecaron
+<dead_caron> <l> : "\265" lcaron
+<dead_caron> <n> : "\362" ncaron
+<dead_caron> <r> : "\370" rcaron
+<dead_caron> <s> : "\271" scaron
+<dead_caron> <t> : "\273" tcaron
+<dead_caron> <z> : "\276" zcaron
+<dead_cedilla> <S> : "\252" Scedilla
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <T> : "\336" Tcedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_cedilla> <s> : "\272" scedilla
+<dead_cedilla> <t> : "\376" tcedilla
+XCOMM those are for ease of use
+<dead_abovedot> <U> : "\331" Uring
+<dead_abovedot> <u> : "\371" uring
+<dead_caron> <U> : "\331" Uring
+<dead_caron> <u> : "\371" uring
+XCOMM traditional sequences
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <e> : "\275" oe
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_abovering> <dead_abovering> : "\260" degree
+<dead_abovering> <degree> : "\260" degree
+<dead_abovering> <space> : "\260" degree
+<dead_abovering> <nobreakspace> : "\260" degree
+<dead_tilde> <I> : "\245" Itilde
+<dead_tilde> <i> : "\265" itilde
+<dead_tilde> <A> : "\303" Atilde
+<dead_tilde> <O> : "\325" Otilde
+<dead_tilde> <U> : "\335" Utilde
+<dead_tilde> <a> : "\343" atilde
+<dead_tilde> <o> : "\365" otilde
+<dead_tilde> <u> : "\375" utilde
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+<dead_tilde> <asciitilde> : "~" asciitilde
+<dead_tilde> <space> : "~" asciitilde
+<dead_tilde> <nobreakspace> : "~" asciitilde
+<dead_caron> <caron> : "\267" caron
+<dead_caron> <dead_caron> : "\267" caron
+<dead_caron> <space> : "\267" caron
+<dead_caron> <nobreakspace> : "\267" caron
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_circumflex> <dead_circumflex> : "\136" asciicircum
+<dead_circumflex> <asciicircum> : "\136" asciicircum
+<dead_circumflex> <space> : "\136" asciicircum
+<dead_circumflex> <nobreakspace> : "\136" asciicircum
+<dead_breve> <G> : "\253" Gbreve
+<dead_breve> <g> : "\273" gbreve
+<dead_breve> <U> : "\335" Ubreve
+<dead_breve> <u> : "\375" ubreve
+<dead_breve> <dead_breve> : "\242" breve
+<dead_breve> <breve> : "\242" breve
+<dead_breve> <space> : "\242" breve
+<dead_breve> <nobreakspace> : "\242" breve
+<dead_ogonek> <A> : "\241" Aogonek
+<dead_ogonek> <I> : "\307" Iogonek
+<dead_ogonek> <E> : "\312" Eogonek
+<dead_ogonek> <U> : "\331" Uogonek
+<dead_ogonek> <a> : "\261" aogonek
+<dead_ogonek> <i> : "\347" iogonek
+<dead_ogonek> <e> : "\352" eogonek
+<dead_ogonek> <u> : "\371" uogonek
+<dead_ogonek> <dead_ogonek> : "\662" ogonek
+<dead_ogonek> <ogonek> : "\662" ogonek
+<dead_ogonek> <space> : "\662" ogonek
+<dead_ogonek> <nobreakspace> : "\662" ogonek
+<dead_grave> <A> : "\300" Agrave
+<dead_grave> <a> : "\340" agrave
+<dead_grave> <E> : "\310" Egrave
+<dead_grave> <e> : "\350" egrave
+<dead_grave> <I> : "\314" Igrave
+<dead_grave> <i> : "\354" igrave
+<dead_grave> <O> : "\322" Ograve
+<dead_grave> <o> : "\362" ograve
+<dead_grave> <U> : "\331" Ugrave
+<dead_grave> <u> : "\371" ugrave
+<dead_grave> <dead_grave> : "`" grave
+<dead_grave> <grave> : "`" grave
+<dead_grave> <space> : "`" grave
+<dead_grave> <nobreakspace> : "`" grave
+<dead_abovedot> <C> : "\305" Cabovedot
+<dead_abovedot> <c> : "\345" cabovedot
+<dead_abovedot> <I> : "\251" Iabovedot
+<dead_abovedot> <i> : "\271" idotless
+<dead_abovedot> <Z> : "\257" Zabovedot
+<dead_abovedot> <z> : "\277" zabovedot
+<dead_abovedot> <E> : "\314" Eabovedot
+<dead_abovedot> <e> : "\354" eabovedot
+<dead_abovedot> <dead_abovedot> : "\377" abovedot
+<dead_abovedot> <abovedot> : "\377" abovedot
+<dead_abovedot> <space> : "\377" abovedot
+<dead_abovedot> <nobreakspace> : "\377" abovedot
+<dead_acute> <dead_acute> : "\264" acute
+<dead_acute> <acute> : "\264" acute
+<dead_acute> <space> : "\264" acute
+<dead_acute> <nobreakspace> : "\264" acute
+<dead_doubleacute> <dead_doubleacute> : "\675" doubleacute
+<dead_doubleacute> <doubleacute> : "\675" doubleacute
+<dead_doubleacute> <space> : "\675" doubleacute
+<dead_doubleacute> <nobreakspace> : "\675" doubleacute
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
+<dead_diaeresis> <diaeresis> : "\250" diaeresis
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_diaeresis> <nobreakspace> : "\250" diaeresis
+<dead_cedilla> <dead_cedilla> : "\270" cedilla
+<dead_cedilla> <cedilla> : "\270" cedilla
+<dead_cedilla> <space> : "\270" cedilla
+<dead_cedilla> <nobreakspace> : "\270" cedilla
+<dead_macron> <dead_macron> : "\257" macron
+<dead_macron> <macron> : "\257" macron
+<dead_macron> <space> : "\257" macron
+<dead_macron> <nobreakspace> : "\257" macron
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-2/XI18N_OBJS b/libX11/nls/iso8859-2/XI18N_OBJS
index f20902a61..daac7d36c 100644
--- a/libX11/nls/iso8859-2/XI18N_OBJS
+++ b/libX11/nls/iso8859-2/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-2/XLC_LOCALE.pre b/libX11/nls/iso8859-2/XLC_LOCALE.pre
index 8c70e8a4e..357966291 100644
--- a/libX11/nls/iso8859-2/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-2/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-2.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-2:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-2:GR
- }
- font {
- primary ISO8859-2:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-2
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-2:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-2:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-2.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-2:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-2:GR
+ }
+ font {
+ primary ISO8859-2:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-2
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-2:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-2:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-3/Compose.pre b/libX11/nls/iso8859-3/Compose.pre
index 6238d5c34..bb45ff9e5 100644
--- a/libX11/nls/iso8859-3/Compose.pre
+++ b/libX11/nls/iso8859-3/Compose.pre
@@ -1,483 +1,483 @@
-XCOMM
-XCOMM ISO 8859-3 (Latin3) Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <A> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <C> <equal> : "\244" EuroSign
-<Multi_key> <equal> <C> : "\244" EuroSign
-<Multi_key> <c> <equal> : "\244" EuroSign
-<Multi_key> <equal> <c> : "\244" EuroSign
-<Multi_key> <E> <equal> : "\244" EuroSign
-<Multi_key> <equal> <E> : "\244" EuroSign
-<Multi_key> <e> <equal> : "\244" EuroSign
-<Multi_key> <equal> <e> : "\244" EuroSign
-<Multi_key> <y> <minus> : "\245" yen
-<Multi_key> <minus> <y> : "\245" yen
-<Multi_key> <Y> <minus> : "\245" yen
-<Multi_key> <minus> <Y> : "\245" yen
-<Multi_key> <y> <equal> : "\245" yen
-<Multi_key> <equal> <y> : "\245" yen
-<Multi_key> <Y> <equal> : "\245" yen
-<Multi_key> <equal> <Y> : "\245" yen
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <slash> <u> : "\265" mu
-<Multi_key> <u> <slash> : "\265" mu
-<Multi_key> <slash> <U> : "\265" mu
-<Multi_key> <U> <slash> : "\265" mu
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <parenleft> <r> : "\256" registered
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "\300" Agrave
-<Multi_key> <grave> <A> : "\300" Agrave
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <minus> : "\303" Atilde
-<Multi_key> <minus> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
-<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
-<Multi_key> <a> <grave> : "\340" agrave
-<Multi_key> <grave> <a> : "\340" agrave
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <minus> : "\343" atilde
-<Multi_key> <minus> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <diaeresis> : "\344" adiaeresis
-<Multi_key> <diaeresis> <a> : "\344" adiaeresis
-<Multi_key> <C> <period> : "\305" Cabovedot
-<Multi_key> <period> <C> : "\305" Cabovedot
-<Multi_key> <C> <asciicircum> : "\306" Ccircumflex
-<Multi_key> <asciicircum> <C> : "\306" Ccircumflex
-<Multi_key> <C> <greater> : "\306" Ccircumflex
-<Multi_key> <greater> <C> : "\306" Ccircumflex
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <c> <period> : "\345" cabovedot
-<Multi_key> <period> <c> : "\345" cabovedot
-<Multi_key> <c> <asciicircum> : "\346" ccircumflex
-<Multi_key> <asciicircum> <c> : "\346" ccircumflex
-<Multi_key> <c> <greater> : "\346" ccircumflex
-<Multi_key> <greater> <c> : "\346" ccircumflex
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <minus> <D> : "\320" ETH
-<Multi_key> <D> <minus> : "\320" ETH
-<Multi_key> <minus> <d> : "\360" eth
-<Multi_key> <d> <minus> : "\360" eth
-<Multi_key> <E> <grave> : "\310" Egrave
-<Multi_key> <grave> <E> : "\310" Egrave
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
-<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
-<Multi_key> <E> <greater> : "\312" Ecircumflex
-<Multi_key> <greater> <E> : "\312" Ecircumflex
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
-<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
-<Multi_key> <e> <grave> : "\350" egrave
-<Multi_key> <grave> <e> : "\350" egrave
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <asciicircum> : "\352" ecircumflex
-<Multi_key> <asciicircum> <e> : "\352" ecircumflex
-<Multi_key> <e> <greater> : "\352" ecircumflex
-<Multi_key> <greater> <e> : "\352" ecircumflex
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <diaeresis> : "\353" ediaeresis
-<Multi_key> <diaeresis> <e> : "\353" ediaeresis
-<Multi_key> <G> <U> : "\253" Gbreve
-<Multi_key> <G> <parenleft> : "\253" Gbreve
-<Multi_key> <parenleft> <G> : "\253" Gbreve
-<Multi_key> <G> <breve> : "\253" Gbreve
-<Multi_key> <breve> <G> : "\253" Gbreve
-<Multi_key> <G> <period> : "\325" Gabovedot
-<Multi_key> <period> <G> : "\325" Gabovedot
-<Multi_key> <G> <asciicircum> : "\330" Gcircumflex
-<Multi_key> <asciicircum> <G> : "\330" Gcircumflex
-<Multi_key> <G> <greater> : "\330" Gcircumflex
-<Multi_key> <greater> <G> : "\330" Gcircumflex
-<Multi_key> <g> <U> : "\273" gbreve
-<Multi_key> <g> <parenleft> : "\273" gbreve
-<Multi_key> <parenleft> <g> : "\273" gbreve
-<Multi_key> <g> <breve> : "\273" gbreve
-<Multi_key> <breve> <g> : "\273" gbreve
-<Multi_key> <g> <period> : "\365" gabovedot
-<Multi_key> <period> <g> : "\365" gabovedot
-<Multi_key> <g> <asciicircum> : "\370" gcircumflex
-<Multi_key> <asciicircum> <g> : "\370" gcircumflex
-<Multi_key> <g> <greater> : "\370" gcircumflex
-<Multi_key> <greater> <g> : "\370" gcircumflex
-<Multi_key> <H> <minus> : "\241" Hstroke
-<Multi_key> <minus> <H> : "\241" Hstroke
-<Multi_key> <H> <asciicircum> : "\246" Hcircumflex
-<Multi_key> <asciicircum> <H> : "\246" Hcircumflex
-<Multi_key> <H> <greater> : "\246" Hcircumflex
-<Multi_key> <greater> <H> : "\246" Hcircumflex
-<Multi_key> <h> <minus> : "\261" hstroke
-<Multi_key> <minus> <h> : "\261" hstroke
-<Multi_key> <h> <asciicircum> : "\266" hcircumflex
-<Multi_key> <asciicircum> <h> : "\266" hcircumflex
-<Multi_key> <h> <greater> : "\266" hcircumflex
-<Multi_key> <greater> <h> : "\266" hcircumflex
-<Multi_key> <I> <period> : "\251" Iabovedot
-<Multi_key> <period> <I> : "\251" Iabovedot
-<Multi_key> <I> <grave> : "\314" Igrave
-<Multi_key> <grave> <I> : "\314" Igrave
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
-<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
-<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
-<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
-<Multi_key> <i> <period> : "\271" idotless
-<Multi_key> <period> <i> : "\271" idotless
-<Multi_key> <i> <grave> : "\354" igrave
-<Multi_key> <grave> <i> : "\354" igrave
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <quotedbl> : "\357" idiaeresis
-<Multi_key> <quotedbl> <i> : "\357" idiaeresis
-<Multi_key> <i> <diaeresis> : "\357" idiaeresis
-<Multi_key> <diaeresis> <i> : "\357" idiaeresis
-<Multi_key> <J> <asciicircum> : "\254" Jcircumflex
-<Multi_key> <asciicircum> <J> : "\254" Jcircumflex
-<Multi_key> <J> <greater> : "\254" Jcircumflex
-<Multi_key> <greater> <J> : "\254" Jcircumflex
-<Multi_key> <j> <asciicircum> : "\274" jcircumflex
-<Multi_key> <asciicircum> <j> : "\274" jcircumflex
-<Multi_key> <j> <greater> : "\274" jcircumflex
-<Multi_key> <greater> <j> : "\274" jcircumflex
-<Multi_key> <O> <grave> : "\322" Ograve
-<Multi_key> <grave> <O> : "\322" Ograve
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <minus> : "\325" Otilde
-<Multi_key> <minus> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
-<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
-<Multi_key> <o> <grave> : "\362" ograve
-<Multi_key> <grave> <o> : "\362" ograve
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <minus> : "\365" otilde
-<Multi_key> <minus> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <diaeresis> : "\366" odiaeresis
-<Multi_key> <diaeresis> <o> : "\366" odiaeresis
-<Multi_key> <S> <cedilla> : "\252" Scedilla
-<Multi_key> <S> <comma> : "\252" Scedilla
-<Multi_key> <cedilla> <S> : "\252" Scedilla
-<Multi_key> <cedilla> <s> : "\272" scedilla
-<Multi_key> <comma> <S> : "\252" Scedilla
-<Multi_key> <comma> <s> : "\272" scedilla
-<Multi_key> <s> <cedilla> : "\272" scedilla
-<Multi_key> <s> <comma> : "\272" scedilla
-<Multi_key> <S> <asciicircum> : "\336" Scircumflex
-<Multi_key> <asciicircum> <S> : "\336" Scircumflex
-<Multi_key> <S> <greater> : "\336" Scircumflex
-<Multi_key> <greater> <S> : "\336" Scircumflex
-<Multi_key> <s> <asciicircum> : "\376" scircumflex
-<Multi_key> <asciicircum> <s> : "\376" scircumflex
-<Multi_key> <s> <greater> : "\376" scircumflex
-<Multi_key> <greater> <s> : "\376" scircumflex
-<Multi_key> <U> <grave> : "\331" Ugrave
-<Multi_key> <grave> <U> : "\331" Ugrave
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
-<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
-<Multi_key> <U> <U> : "\335" Ubreve
-<Multi_key> <U> <parenleft> : "\335" Ubreve
-<Multi_key> <parenleft> <U> : "\335" Ubreve
-<Multi_key> <U> <breve> : "\335" Ubreve
-<Multi_key> <breve> <U> : "\335" Ubreve
-<Multi_key> <u> <grave> : "\371" ugrave
-<Multi_key> <grave> <u> : "\371" ugrave
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <diaeresis> : "\374" udiaeresis
-<Multi_key> <diaeresis> <u> : "\374" udiaeresis
-<Multi_key> <u> <U> : "\375" ubreve
-<Multi_key> <u> <parenleft> : "\375" ubreve
-<Multi_key> <parenleft> <u> : "\375" ubreve
-<Multi_key> <u> <breve> : "\375" ubreve
-<Multi_key> <breve> <u> : "\375" ubreve
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <Y> <acute> : "\335" Yacute
-<Multi_key> <acute> <Y> : "\335" Yacute
-<Multi_key> <Y> <apostrophe> : "\335" Yacute
-<Multi_key> <apostrophe> <Y> : "\335" Yacute
-<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
-<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
-<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
-<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
-<Multi_key> <y> <acute> : "\375" yacute
-<Multi_key> <acute> <y> : "\375" yacute
-<Multi_key> <y> <apostrophe> : "\375" yacute
-<Multi_key> <apostrophe> <y> : "\375" yacute
-<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
-<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
-<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
-<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
-<Multi_key> <Z> <period> : "\257" Zabovedot
-<Multi_key> <period> <Z> : "\257" Zabovedot
-<Multi_key> <z> <period> : "\277" zabovedot
-<Multi_key> <period> <z> : "\277" zabovedot
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_grave> <space> : "`" grave
-<dead_acute> <space> : "'" apostrophe
-<dead_diaeresis> <space> : "\250" diaeresis
-<dead_circumflex> <space> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-<dead_circumflex> <0> : "\260" degree
-<dead_circumflex> <1> : "\271" onesuperior
-<dead_circumflex> <2> : "\262" twosuperior
-<dead_circumflex> <3> : "\263" threesuperior
-<dead_circumflex> <period> : "\267" periodcentered
-<dead_cedilla> <minus> : "\254" notsign
-<dead_circumflex> <minus> : "\257" macron
-<dead_circumflex> <underscore> : "\257" macron
-<dead_acute> <apostrophe> : "\264" acute
-<dead_cedilla> <comma> : "\270" cedilla
-<dead_diaeresis> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_grave> <A> : "\300" Agrave
-<dead_acute> <A> : "\301" Aacute
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_tilde> <A> : "\303" Atilde
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_grave> <a> : "\340" agrave
-<dead_acute> <a> : "\341" aacute
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_tilde> <a> : "\343" atilde
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_circumflex> <C> : "\306" Ccircumflex
-<dead_abovedot> <C> : "\305" Cabovedot
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_circumflex> <c> : "\346" ccircumflex
-<dead_abovedot> <c> : "\345" cabovedot
-<dead_grave> <E> : "\310" Egrave
-<dead_acute> <E> : "\311" Eacute
-<dead_circumflex> <E> : "\312" Ecircumflex
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_grave> <e> : "\350" egrave
-<dead_acute> <e> : "\351" eacute
-<dead_circumflex> <e> : "\352" ecircumflex
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_breve> <G> : "\253" Gbreve
-<dead_circumflex> <G> : "\330" Gcircumflex
-<dead_breve> <g> : "\273" gbreve
-<dead_circumflex> <g> : "\370" gcircumflex
-<dead_circumflex> <H> : "\246" Hcircumflex
-<dead_circumflex> <h> : "\266" hcircumflex
-<dead_grave> <I> : "\314" Igrave
-<dead_acute> <I> : "\315" Iacute
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_abovedot> <I> : "\251" Iabovedot
-<dead_grave> <i> : "\354" igrave
-<dead_acute> <i> : "\355" iacute
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_abovedot> <i> : "\271" idotless
-<dead_circumflex> <J> : "\254" Jcircumflex
-<dead_circumflex> <j> : "\274" jcircumflex
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_grave> <O> : "\322" Ograve
-<dead_acute> <O> : "\323" Oacute
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_tilde> <O> : "\325" Otilde
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_grave> <o> : "\362" ograve
-<dead_acute> <o> : "\363" oacute
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_tilde> <o> : "\365" otilde
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_caron> <S> : "\246" Scaron
-<dead_cedilla> <S> : "\252" Scedilla
-<dead_circumflex> <S> : "\336" Scircumflex
-<dead_caron> <s> : "\250" scaron
-<dead_cedilla> <s> : "\272" scedilla
-<dead_circumflex> <s> : "\376" scircumflex
-<dead_breve> <U> : "\335" Ubreve
-<dead_grave> <U> : "\331" Ugrave
-<dead_acute> <U> : "\332" Uacute
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_breve> <u> : "\375" ubreve
-<dead_grave> <u> : "\371" ugrave
-<dead_acute> <u> : "\372" uacute
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_acute> <Y> : "\335" Yacute
-<dead_diaeresis> <Y> : "\276" Ydiaeresis
-<dead_acute> <y> : "\375" yacute
-<dead_diaeresis> <y> : "\377" ydiaeresis
-<dead_caron> <Z> : "\264" Zcaron
-<dead_abovedot> <Z> : "\257" Zabovedot
-<dead_caron> <z> : "\270" zcaron
-<dead_abovedot> <z> : "\277" zabovedot
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-3 (Latin3) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <A> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <c> <equal> : "\244" EuroSign
+<Multi_key> <equal> <c> : "\244" EuroSign
+<Multi_key> <E> <equal> : "\244" EuroSign
+<Multi_key> <equal> <E> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <equal> <e> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <C> <period> : "\305" Cabovedot
+<Multi_key> <period> <C> : "\305" Cabovedot
+<Multi_key> <C> <asciicircum> : "\306" Ccircumflex
+<Multi_key> <asciicircum> <C> : "\306" Ccircumflex
+<Multi_key> <C> <greater> : "\306" Ccircumflex
+<Multi_key> <greater> <C> : "\306" Ccircumflex
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <c> <period> : "\345" cabovedot
+<Multi_key> <period> <c> : "\345" cabovedot
+<Multi_key> <c> <asciicircum> : "\346" ccircumflex
+<Multi_key> <asciicircum> <c> : "\346" ccircumflex
+<Multi_key> <c> <greater> : "\346" ccircumflex
+<Multi_key> <greater> <c> : "\346" ccircumflex
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <G> <U> : "\253" Gbreve
+<Multi_key> <G> <parenleft> : "\253" Gbreve
+<Multi_key> <parenleft> <G> : "\253" Gbreve
+<Multi_key> <G> <breve> : "\253" Gbreve
+<Multi_key> <breve> <G> : "\253" Gbreve
+<Multi_key> <G> <period> : "\325" Gabovedot
+<Multi_key> <period> <G> : "\325" Gabovedot
+<Multi_key> <G> <asciicircum> : "\330" Gcircumflex
+<Multi_key> <asciicircum> <G> : "\330" Gcircumflex
+<Multi_key> <G> <greater> : "\330" Gcircumflex
+<Multi_key> <greater> <G> : "\330" Gcircumflex
+<Multi_key> <g> <U> : "\273" gbreve
+<Multi_key> <g> <parenleft> : "\273" gbreve
+<Multi_key> <parenleft> <g> : "\273" gbreve
+<Multi_key> <g> <breve> : "\273" gbreve
+<Multi_key> <breve> <g> : "\273" gbreve
+<Multi_key> <g> <period> : "\365" gabovedot
+<Multi_key> <period> <g> : "\365" gabovedot
+<Multi_key> <g> <asciicircum> : "\370" gcircumflex
+<Multi_key> <asciicircum> <g> : "\370" gcircumflex
+<Multi_key> <g> <greater> : "\370" gcircumflex
+<Multi_key> <greater> <g> : "\370" gcircumflex
+<Multi_key> <H> <minus> : "\241" Hstroke
+<Multi_key> <minus> <H> : "\241" Hstroke
+<Multi_key> <H> <asciicircum> : "\246" Hcircumflex
+<Multi_key> <asciicircum> <H> : "\246" Hcircumflex
+<Multi_key> <H> <greater> : "\246" Hcircumflex
+<Multi_key> <greater> <H> : "\246" Hcircumflex
+<Multi_key> <h> <minus> : "\261" hstroke
+<Multi_key> <minus> <h> : "\261" hstroke
+<Multi_key> <h> <asciicircum> : "\266" hcircumflex
+<Multi_key> <asciicircum> <h> : "\266" hcircumflex
+<Multi_key> <h> <greater> : "\266" hcircumflex
+<Multi_key> <greater> <h> : "\266" hcircumflex
+<Multi_key> <I> <period> : "\251" Iabovedot
+<Multi_key> <period> <I> : "\251" Iabovedot
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <i> <period> : "\271" idotless
+<Multi_key> <period> <i> : "\271" idotless
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <J> <asciicircum> : "\254" Jcircumflex
+<Multi_key> <asciicircum> <J> : "\254" Jcircumflex
+<Multi_key> <J> <greater> : "\254" Jcircumflex
+<Multi_key> <greater> <J> : "\254" Jcircumflex
+<Multi_key> <j> <asciicircum> : "\274" jcircumflex
+<Multi_key> <asciicircum> <j> : "\274" jcircumflex
+<Multi_key> <j> <greater> : "\274" jcircumflex
+<Multi_key> <greater> <j> : "\274" jcircumflex
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <S> <cedilla> : "\252" Scedilla
+<Multi_key> <S> <comma> : "\252" Scedilla
+<Multi_key> <cedilla> <S> : "\252" Scedilla
+<Multi_key> <cedilla> <s> : "\272" scedilla
+<Multi_key> <comma> <S> : "\252" Scedilla
+<Multi_key> <comma> <s> : "\272" scedilla
+<Multi_key> <s> <cedilla> : "\272" scedilla
+<Multi_key> <s> <comma> : "\272" scedilla
+<Multi_key> <S> <asciicircum> : "\336" Scircumflex
+<Multi_key> <asciicircum> <S> : "\336" Scircumflex
+<Multi_key> <S> <greater> : "\336" Scircumflex
+<Multi_key> <greater> <S> : "\336" Scircumflex
+<Multi_key> <s> <asciicircum> : "\376" scircumflex
+<Multi_key> <asciicircum> <s> : "\376" scircumflex
+<Multi_key> <s> <greater> : "\376" scircumflex
+<Multi_key> <greater> <s> : "\376" scircumflex
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <U> <U> : "\335" Ubreve
+<Multi_key> <U> <parenleft> : "\335" Ubreve
+<Multi_key> <parenleft> <U> : "\335" Ubreve
+<Multi_key> <U> <breve> : "\335" Ubreve
+<Multi_key> <breve> <U> : "\335" Ubreve
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <u> <U> : "\375" ubreve
+<Multi_key> <u> <parenleft> : "\375" ubreve
+<Multi_key> <parenleft> <u> : "\375" ubreve
+<Multi_key> <u> <breve> : "\375" ubreve
+<Multi_key> <breve> <u> : "\375" ubreve
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <period> : "\257" Zabovedot
+<Multi_key> <period> <Z> : "\257" Zabovedot
+<Multi_key> <z> <period> : "\277" zabovedot
+<Multi_key> <period> <z> : "\277" zabovedot
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_circumflex> <C> : "\306" Ccircumflex
+<dead_abovedot> <C> : "\305" Cabovedot
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_circumflex> <c> : "\346" ccircumflex
+<dead_abovedot> <c> : "\345" cabovedot
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_breve> <G> : "\253" Gbreve
+<dead_circumflex> <G> : "\330" Gcircumflex
+<dead_breve> <g> : "\273" gbreve
+<dead_circumflex> <g> : "\370" gcircumflex
+<dead_circumflex> <H> : "\246" Hcircumflex
+<dead_circumflex> <h> : "\266" hcircumflex
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_abovedot> <I> : "\251" Iabovedot
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_abovedot> <i> : "\271" idotless
+<dead_circumflex> <J> : "\254" Jcircumflex
+<dead_circumflex> <j> : "\274" jcircumflex
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_caron> <S> : "\246" Scaron
+<dead_cedilla> <S> : "\252" Scedilla
+<dead_circumflex> <S> : "\336" Scircumflex
+<dead_caron> <s> : "\250" scaron
+<dead_cedilla> <s> : "\272" scedilla
+<dead_circumflex> <s> : "\376" scircumflex
+<dead_breve> <U> : "\335" Ubreve
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_breve> <u> : "\375" ubreve
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\264" Zcaron
+<dead_abovedot> <Z> : "\257" Zabovedot
+<dead_caron> <z> : "\270" zcaron
+<dead_abovedot> <z> : "\277" zabovedot
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-3/XI18N_OBJS b/libX11/nls/iso8859-3/XI18N_OBJS
index 1f39eba73..f41a9e259 100644
--- a/libX11/nls/iso8859-3/XI18N_OBJS
+++ b/libX11/nls/iso8859-3/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-3 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-3 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-3/XLC_LOCALE.pre b/libX11/nls/iso8859-3/XLC_LOCALE.pre
index e8f9e776f..0780ce976 100644
--- a/libX11/nls/iso8859-3/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-3/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-3.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-3:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-3:GR
- }
- font {
- primary ISO8859-3:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-3
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-3:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-3:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-3.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-3:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-3:GR
+ }
+ font {
+ primary ISO8859-3:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-3
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-3:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-3:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-4/Compose.pre b/libX11/nls/iso8859-4/Compose.pre
index 74480452e..0af56e87c 100644
--- a/libX11/nls/iso8859-4/Compose.pre
+++ b/libX11/nls/iso8859-4/Compose.pre
@@ -1,374 +1,374 @@
-XCOMM
-XCOMM ISO 8859-4 (Latin4) Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-XCOMM Right-hand side (Accented Alphabet)
-XCOMM These compose sequences are pure supposition on my part.
-XCOMM It would be nice to know what the real cultural conventions
-XCOMM are for compose sequences.
-<Multi_key> <A> <comma> : "\241" Aogonek
-<Multi_key> <comma> <A> : "\241" Aogonek
-<Multi_key> <k> <k> : "\242" kra
-<Multi_key> <R> <comma> : "\243" Rcedilla
-<Multi_key> <R> <cedilla> : "\243" Rcedilla
-<Multi_key> <comma> <R> : "\243" Rcedilla
-<Multi_key> <cedilla> <R> : "\243" Rcedilla
-<Multi_key> <x> <o> : "\244" currency
-<Multi_key> <o> <x> : "\244" currency
-<Multi_key> <X> <O> : "\244" currency
-<Multi_key> <O> <X> : "\244" currency
-<Multi_key> <x> <O> : "\244" currency
-<Multi_key> <O> <x> : "\244" currency
-<Multi_key> <X> <o> : "\244" currency
-<Multi_key> <o> <X> : "\244" currency
-<Multi_key> <x> <0> : "\244" currency
-<Multi_key> <0> <x> : "\244" currency
-<Multi_key> <X> <0> : "\244" currency
-<Multi_key> <0> <X> : "\244" currency
-<Multi_key> <I> <asciitilde> : "\245" Itilde
-<Multi_key> <asciitilde> <I> : "\245" Itilde
-<Multi_key> <L> <comma> : "\246" Lcedilla
-<Multi_key> <L> <cedilla> : "\246" Lcedilla
-<Multi_key> <comma> <L> : "\246" Lcedilla
-<Multi_key> <cedilla> <L> : "\246" Lcedilla
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-<Multi_key> <S> <less> : "\251" Scaron
-<Multi_key> <less> <S> : "\251" Scaron
-<Multi_key> <E> <minus> : "\252" Emacron
-<Multi_key> <minus> <E> : "\252" Emacron
-<Multi_key> <E> <underscore> : "\252" Emacron
-<Multi_key> <underscore> <E> : "\252" Emacron
-<Multi_key> <G> <comma> : "\253" Gcedilla
-<Multi_key> <G> <cedilla> : "\253" Gcedilla
-<Multi_key> <comma> <G> : "\253" Gcedilla
-<Multi_key> <cedilla> <G> : "\253" Gcedilla
-<Multi_key> <T> <minus> : "\254" Tstroke
-<Multi_key> <T> <slash> : "\254" Tstroke
-<Multi_key> <slash> <T> : "\254" Tstroke
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <Z> <less> : "\256" Zcaron
-<Multi_key> <less> <Z> : "\256" Zcaron
-<Multi_key> <minus> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <minus> : "\257" macron
-<Multi_key> <underscore> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <underscore> : "\257" macron
-<Multi_key> <underscore> <underscore> : "\257" macron
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <a> <comma> : "\261" aogonek
-<Multi_key> <comma> <a> : "\261" aogonek
-<Multi_key> <r> <comma> : "\263" rcedilla
-<Multi_key> <r> <cedilla> : "\263" rcedilla
-<Multi_key> <comma> <r> : "\263" rcedilla
-<Multi_key> <cedilla> <r> : "\263" rcedilla
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-<Multi_key> <i> <asciitilde> : "\265" itilde
-<Multi_key> <asciitilde> <i> : "\265" itilde
-<Multi_key> <l> <comma> : "\266" lcedilla
-<Multi_key> <l> <cedilla> : "\266" lcedilla
-<Multi_key> <comma> <l> : "\266" lcedilla
-<Multi_key> <cedilla> <l> : "\266" lcedilla
-<Multi_key> <less> <less> : "\267" caron
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <s> <less> : "\271" scaron
-<Multi_key> <less> <s> : "\271" scaron
-<Multi_key> <e> <minus> : "\272" emacron
-<Multi_key> <minus> <e> : "\272" emacron
-<Multi_key> <e> <underscore> : "\272" emacron
-<Multi_key> <underscore> <e> : "\272" emacron
-<Multi_key> <g> <comma> : "\273" gcedilla
-<Multi_key> <g> <cedilla> : "\273" gcedilla
-<Multi_key> <comma> <g> : "\273" gcedilla
-<Multi_key> <cedilla> <g> : "\273" gcedilla
-<Multi_key> <t> <minus> : "\274" tstroke
-<Multi_key> <t> <slash> : "\274" tstroke
-<Multi_key> <slash> <t> : "\274" tstroke
-<Multi_key> <N> <G> : "\275" ENG
-<Multi_key> <z> <less> : "\276" zcaron
-<Multi_key> <less> <z> : "\276" zcaron
-<Multi_key> <n> <g> : "\277" eng
-<Multi_key> <A> <underscore> : "\300" Amacron
-<Multi_key> <underscore> <A> : "\300" Amacron
-<Multi_key> <A> <minus> : "\300" Amacron
-<Multi_key> <minus> <A> : "\300" Amacron
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <E> : "\306" AE
-<Multi_key> <I> <comma> : "\307" Iogonek
-<Multi_key> <comma> <I> : "\307" Iogonek
-<Multi_key> <C> <less> : "\310" Ccaron
-<Multi_key> <less> <C> : "\310" Ccaron
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <comma> : "\312" Eogonek
-<Multi_key> <comma> <E> : "\312" Eogonek
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <period> : "\314" Eabovedot
-<Multi_key> <period> <E> : "\314" Eabovedot
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <minus> : "\317" Imacron
-<Multi_key> <minus> <I> : "\317" Imacron
-<Multi_key> <I> <underscore> : "\317" Imacron
-<Multi_key> <underscore> <I> : "\317" Imacron
-<Multi_key> <D> <minus> : "\320" Dstroke
-<Multi_key> <minus> <D> : "\320" Dstroke
-<Multi_key> <N> <comma> : "\321" Ncedilla
-<Multi_key> <N> <cedilla> : "\321" Ncedilla
-<Multi_key> <comma> <N> : "\321" Ncedilla
-<Multi_key> <cedilla> <N> : "\321" Ncedilla
-<Multi_key> <O> <underscore> : "\322" Omacron
-<Multi_key> <underscore> <O> : "\322" Omacron
-<Multi_key> <O> <minus> : "\322" Omacron
-<Multi_key> <minus> <O> : "\322" Omacron
-<Multi_key> <K> <comma> : "\323" Kcedilla
-<Multi_key> <K> <cedilla> : "\323" Kcedilla
-<Multi_key> <comma> <K> : "\323" Kcedilla
-<Multi_key> <cedilla> <K> : "\323" Kcedilla
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <O> <slash> : "\330" Ooblique
-<Multi_key> <slash> <O> : "\330" Ooblique
-<Multi_key> <U> <comma> : "\331" Uogonek
-<Multi_key> <comma> <U> : "\331" Uogonek
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <asciitilde> : "\335" Utilde
-<Multi_key> <asciitilde> <U> : "\335" Utilde
-<Multi_key> <U> <underscore> : "\336" Umacron
-<Multi_key> <underscore> <U> : "\336" Umacron
-<Multi_key> <U> <minus> : "\336" Umacron
-<Multi_key> <minus> <U> : "\336" Umacron
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <a> <underscore> : "\340" amacron
-<Multi_key> <underscore> <a> : "\340" amacron
-<Multi_key> <a> <minus> : "\340" amacron
-<Multi_key> <minus> <a> : "\340" amacron
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <e> : "\346" ae
-<Multi_key> <i> <comma> : "\347" iogonek
-<Multi_key> <comma> <i> : "\347" iogonek
-<Multi_key> <c> <less> : "\350" ccaron
-<Multi_key> <less> <c> : "\350" ccaron
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <comma> : "\352" eogonek
-<Multi_key> <comma> <e> : "\352" eogonek
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <period> : "\354" eabovedot
-<Multi_key> <period> <e> : "\354" eabovedot
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <minus> : "\357" imacron
-<Multi_key> <minus> <i> : "\357" imacron
-<Multi_key> <i> <underscore> : "\357" imacron
-<Multi_key> <underscore> <i> : "\357" imacron
-<Multi_key> <d> <minus> : "\360" dstroke
-<Multi_key> <minus> <d> : "\360" dstroke
-<Multi_key> <n> <comma> : "\361" ncedilla
-<Multi_key> <n> <cedilla> : "\361" ncedilla
-<Multi_key> <comma> <n> : "\361" ncedilla
-<Multi_key> <cedilla> <n> : "\361" ncedilla
-<Multi_key> <o> <underscore> : "\362" omacron
-<Multi_key> <underscore> <o> : "\362" omacron
-<Multi_key> <o> <minus> : "\362" omacron
-<Multi_key> <minus> <o> : "\362" omacron
-<Multi_key> <k> <comma> : "\363" kcedilla
-<Multi_key> <k> <cedilla> : "\363" kcedilla
-<Multi_key> <comma> <k> : "\363" kcedilla
-<Multi_key> <cedilla> <k> : "\363" kcedilla
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-
-<Multi_key> <o> <slash> : "\370" ooblique
-<Multi_key> <slash> <o> : "\370" ooblique
-<Multi_key> <u> <comma> : "\371" uogonek
-<Multi_key> <comma> <u> : "\371" uogonek
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <asciitilde> : "\375" utilde
-<Multi_key> <asciitilde> <u> : "\375" utilde
-<Multi_key> <u> <underscore> : "\376" umacron
-<Multi_key> <underscore> <u> : "\376" umacron
-<Multi_key> <u> <minus> : "\376" umacron
-<Multi_key> <minus> <u> : "\376" umacron
-<Multi_key> <period> <period> : "\377" abovedot
-
-<dead_abovedot> <E> : "\314" Eabovedot
-<dead_abovedot> <e> : "\354" eabovedot
-<dead_abovedot> <abovedot> : "\377" abovedot
-<dead_abovedot> <dead_abovedot> : "\377" abovedot
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_acute> <acute> : "\264" acute
-<dead_acute> <dead_acute> : "\264" acute
-<dead_acute> <A> : "\301" Aacute
-<dead_acute> <E> : "\311" Eacute
-<dead_acute> <I> : "\315" Iacute
-<dead_acute> <U> : "\332" Uacute
-<dead_acute> <a> : "\341" aacute
-<dead_acute> <e> : "\351" eacute
-<dead_acute> <i> : "\355" iacute
-<dead_acute> <u> : "\372" uacute
-<dead_caron> <S> : "\251" Scaron
-<dead_caron> <Z> : "\256" Zcaron
-<dead_caron> <caron> : "\267" caron
-<dead_caron> <dead_caron> : "\267" caron
-<dead_caron> <s> : "\271" scaron
-<dead_caron> <z> : "\276" zcaron
-<dead_caron> <C> : "\310" Ccaron
-<dead_caron> <c> : "\350" ccaron
-<dead_cedilla> <R> : "\243" Rcedilla
-<dead_cedilla> <L> : "\246" Lcedilla
-<dead_cedilla> <G> : "\253" Gcedilla
-<dead_cedilla> <r> : "\263" rcedilla
-<dead_cedilla> <l> : "\266" lcedilla
-<dead_cedilla> <cedilla> : "\270" cedilla
-<dead_cedilla> <dead_cedilla> : "\270" cedilla
-<dead_cedilla> <g> : "\273" gcedilla
-<dead_cedilla> <N> : "\321" Ncedilla
-<dead_cedilla> <K> : "\323" Kcedilla
-<dead_cedilla> <n> : "\361" ncedilla
-<dead_cedilla> <k> : "\363" kcedilla
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <diaeresis> : "\250" diaeresis
-<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_macron> <E> : "\252" Emacron
-<dead_macron> <macron> : "\257" macron
-<dead_macron> <dead_macron> : "\257" macron
-<dead_macron> <e> : "\272" emacron
-<dead_macron> <A> : "\300" Amacron
-<dead_macron> <I> : "\317" Imacron
-<dead_macron> <O> : "\322" Omacron
-<dead_macron> <U> : "\336" Umacron
-<dead_macron> <a> : "\340" amacron
-<dead_macron> <i> : "\357" imacron
-<dead_macron> <o> : "\362" omacron
-<dead_macron> <u> : "\376" umacron
-<dead_ogonek> <A> : "\241" Aogonek
-<dead_ogonek> <a> : "\261" aogonek
-<dead_ogonek> <ogonek> : "\262" ogonek
-<dead_ogonek> <dead_ogonek> : "\262" ogonek
-<dead_ogonek> <I> : "\307" Iogonek
-<dead_ogonek> <E> : "\312" Eogonek
-<dead_ogonek> <U> : "\331" Uogonek
-<dead_ogonek> <i> : "\347" iogonek
-<dead_ogonek> <e> : "\352" eogonek
-<dead_ogonek> <u> : "\371" uogonek
-<dead_abovering> <ring> : "\260" ring
-<dead_abovering> <dead_abovering> : "\260" ring
-<dead_tilde> <I> : "\245" Itilde
-<dead_tilde> <i> : "\265" itilde
-<dead_tilde> <A> : "\303" Atilde
-<dead_tilde> <O> : "\325" Otilde
-<dead_tilde> <U> : "\335" Utilde
-<dead_tilde> <a> : "\343" atilde
-<dead_tilde> <o> : "\365" otilde
-<dead_tilde> <u> : "\375" utilde
-<dead_tilde> <asciitilde> : "~" asciitilde
-<dead_tilde> <dead_tilde> : "~" asciitilde
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-4 (Latin4) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+XCOMM Right-hand side (Accented Alphabet)
+XCOMM These compose sequences are pure supposition on my part.
+XCOMM It would be nice to know what the real cultural conventions
+XCOMM are for compose sequences.
+<Multi_key> <A> <comma> : "\241" Aogonek
+<Multi_key> <comma> <A> : "\241" Aogonek
+<Multi_key> <k> <k> : "\242" kra
+<Multi_key> <R> <comma> : "\243" Rcedilla
+<Multi_key> <R> <cedilla> : "\243" Rcedilla
+<Multi_key> <comma> <R> : "\243" Rcedilla
+<Multi_key> <cedilla> <R> : "\243" Rcedilla
+<Multi_key> <x> <o> : "\244" currency
+<Multi_key> <o> <x> : "\244" currency
+<Multi_key> <X> <O> : "\244" currency
+<Multi_key> <O> <X> : "\244" currency
+<Multi_key> <x> <O> : "\244" currency
+<Multi_key> <O> <x> : "\244" currency
+<Multi_key> <X> <o> : "\244" currency
+<Multi_key> <o> <X> : "\244" currency
+<Multi_key> <x> <0> : "\244" currency
+<Multi_key> <0> <x> : "\244" currency
+<Multi_key> <X> <0> : "\244" currency
+<Multi_key> <0> <X> : "\244" currency
+<Multi_key> <I> <asciitilde> : "\245" Itilde
+<Multi_key> <asciitilde> <I> : "\245" Itilde
+<Multi_key> <L> <comma> : "\246" Lcedilla
+<Multi_key> <L> <cedilla> : "\246" Lcedilla
+<Multi_key> <comma> <L> : "\246" Lcedilla
+<Multi_key> <cedilla> <L> : "\246" Lcedilla
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+<Multi_key> <S> <less> : "\251" Scaron
+<Multi_key> <less> <S> : "\251" Scaron
+<Multi_key> <E> <minus> : "\252" Emacron
+<Multi_key> <minus> <E> : "\252" Emacron
+<Multi_key> <E> <underscore> : "\252" Emacron
+<Multi_key> <underscore> <E> : "\252" Emacron
+<Multi_key> <G> <comma> : "\253" Gcedilla
+<Multi_key> <G> <cedilla> : "\253" Gcedilla
+<Multi_key> <comma> <G> : "\253" Gcedilla
+<Multi_key> <cedilla> <G> : "\253" Gcedilla
+<Multi_key> <T> <minus> : "\254" Tstroke
+<Multi_key> <T> <slash> : "\254" Tstroke
+<Multi_key> <slash> <T> : "\254" Tstroke
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <Z> <less> : "\256" Zcaron
+<Multi_key> <less> <Z> : "\256" Zcaron
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <a> <comma> : "\261" aogonek
+<Multi_key> <comma> <a> : "\261" aogonek
+<Multi_key> <r> <comma> : "\263" rcedilla
+<Multi_key> <r> <cedilla> : "\263" rcedilla
+<Multi_key> <comma> <r> : "\263" rcedilla
+<Multi_key> <cedilla> <r> : "\263" rcedilla
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <i> <asciitilde> : "\265" itilde
+<Multi_key> <asciitilde> <i> : "\265" itilde
+<Multi_key> <l> <comma> : "\266" lcedilla
+<Multi_key> <l> <cedilla> : "\266" lcedilla
+<Multi_key> <comma> <l> : "\266" lcedilla
+<Multi_key> <cedilla> <l> : "\266" lcedilla
+<Multi_key> <less> <less> : "\267" caron
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <s> <less> : "\271" scaron
+<Multi_key> <less> <s> : "\271" scaron
+<Multi_key> <e> <minus> : "\272" emacron
+<Multi_key> <minus> <e> : "\272" emacron
+<Multi_key> <e> <underscore> : "\272" emacron
+<Multi_key> <underscore> <e> : "\272" emacron
+<Multi_key> <g> <comma> : "\273" gcedilla
+<Multi_key> <g> <cedilla> : "\273" gcedilla
+<Multi_key> <comma> <g> : "\273" gcedilla
+<Multi_key> <cedilla> <g> : "\273" gcedilla
+<Multi_key> <t> <minus> : "\274" tstroke
+<Multi_key> <t> <slash> : "\274" tstroke
+<Multi_key> <slash> <t> : "\274" tstroke
+<Multi_key> <N> <G> : "\275" ENG
+<Multi_key> <z> <less> : "\276" zcaron
+<Multi_key> <less> <z> : "\276" zcaron
+<Multi_key> <n> <g> : "\277" eng
+<Multi_key> <A> <underscore> : "\300" Amacron
+<Multi_key> <underscore> <A> : "\300" Amacron
+<Multi_key> <A> <minus> : "\300" Amacron
+<Multi_key> <minus> <A> : "\300" Amacron
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <I> <comma> : "\307" Iogonek
+<Multi_key> <comma> <I> : "\307" Iogonek
+<Multi_key> <C> <less> : "\310" Ccaron
+<Multi_key> <less> <C> : "\310" Ccaron
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <comma> : "\312" Eogonek
+<Multi_key> <comma> <E> : "\312" Eogonek
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <period> : "\314" Eabovedot
+<Multi_key> <period> <E> : "\314" Eabovedot
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <minus> : "\317" Imacron
+<Multi_key> <minus> <I> : "\317" Imacron
+<Multi_key> <I> <underscore> : "\317" Imacron
+<Multi_key> <underscore> <I> : "\317" Imacron
+<Multi_key> <D> <minus> : "\320" Dstroke
+<Multi_key> <minus> <D> : "\320" Dstroke
+<Multi_key> <N> <comma> : "\321" Ncedilla
+<Multi_key> <N> <cedilla> : "\321" Ncedilla
+<Multi_key> <comma> <N> : "\321" Ncedilla
+<Multi_key> <cedilla> <N> : "\321" Ncedilla
+<Multi_key> <O> <underscore> : "\322" Omacron
+<Multi_key> <underscore> <O> : "\322" Omacron
+<Multi_key> <O> <minus> : "\322" Omacron
+<Multi_key> <minus> <O> : "\322" Omacron
+<Multi_key> <K> <comma> : "\323" Kcedilla
+<Multi_key> <K> <cedilla> : "\323" Kcedilla
+<Multi_key> <comma> <K> : "\323" Kcedilla
+<Multi_key> <cedilla> <K> : "\323" Kcedilla
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <U> <comma> : "\331" Uogonek
+<Multi_key> <comma> <U> : "\331" Uogonek
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <asciitilde> : "\335" Utilde
+<Multi_key> <asciitilde> <U> : "\335" Utilde
+<Multi_key> <U> <underscore> : "\336" Umacron
+<Multi_key> <underscore> <U> : "\336" Umacron
+<Multi_key> <U> <minus> : "\336" Umacron
+<Multi_key> <minus> <U> : "\336" Umacron
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <a> <underscore> : "\340" amacron
+<Multi_key> <underscore> <a> : "\340" amacron
+<Multi_key> <a> <minus> : "\340" amacron
+<Multi_key> <minus> <a> : "\340" amacron
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <i> <comma> : "\347" iogonek
+<Multi_key> <comma> <i> : "\347" iogonek
+<Multi_key> <c> <less> : "\350" ccaron
+<Multi_key> <less> <c> : "\350" ccaron
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <comma> : "\352" eogonek
+<Multi_key> <comma> <e> : "\352" eogonek
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <period> : "\354" eabovedot
+<Multi_key> <period> <e> : "\354" eabovedot
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <minus> : "\357" imacron
+<Multi_key> <minus> <i> : "\357" imacron
+<Multi_key> <i> <underscore> : "\357" imacron
+<Multi_key> <underscore> <i> : "\357" imacron
+<Multi_key> <d> <minus> : "\360" dstroke
+<Multi_key> <minus> <d> : "\360" dstroke
+<Multi_key> <n> <comma> : "\361" ncedilla
+<Multi_key> <n> <cedilla> : "\361" ncedilla
+<Multi_key> <comma> <n> : "\361" ncedilla
+<Multi_key> <cedilla> <n> : "\361" ncedilla
+<Multi_key> <o> <underscore> : "\362" omacron
+<Multi_key> <underscore> <o> : "\362" omacron
+<Multi_key> <o> <minus> : "\362" omacron
+<Multi_key> <minus> <o> : "\362" omacron
+<Multi_key> <k> <comma> : "\363" kcedilla
+<Multi_key> <k> <cedilla> : "\363" kcedilla
+<Multi_key> <comma> <k> : "\363" kcedilla
+<Multi_key> <cedilla> <k> : "\363" kcedilla
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+
+<Multi_key> <o> <slash> : "\370" ooblique
+<Multi_key> <slash> <o> : "\370" ooblique
+<Multi_key> <u> <comma> : "\371" uogonek
+<Multi_key> <comma> <u> : "\371" uogonek
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <asciitilde> : "\375" utilde
+<Multi_key> <asciitilde> <u> : "\375" utilde
+<Multi_key> <u> <underscore> : "\376" umacron
+<Multi_key> <underscore> <u> : "\376" umacron
+<Multi_key> <u> <minus> : "\376" umacron
+<Multi_key> <minus> <u> : "\376" umacron
+<Multi_key> <period> <period> : "\377" abovedot
+
+<dead_abovedot> <E> : "\314" Eabovedot
+<dead_abovedot> <e> : "\354" eabovedot
+<dead_abovedot> <abovedot> : "\377" abovedot
+<dead_abovedot> <dead_abovedot> : "\377" abovedot
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_acute> <acute> : "\264" acute
+<dead_acute> <dead_acute> : "\264" acute
+<dead_acute> <A> : "\301" Aacute
+<dead_acute> <E> : "\311" Eacute
+<dead_acute> <I> : "\315" Iacute
+<dead_acute> <U> : "\332" Uacute
+<dead_acute> <a> : "\341" aacute
+<dead_acute> <e> : "\351" eacute
+<dead_acute> <i> : "\355" iacute
+<dead_acute> <u> : "\372" uacute
+<dead_caron> <S> : "\251" Scaron
+<dead_caron> <Z> : "\256" Zcaron
+<dead_caron> <caron> : "\267" caron
+<dead_caron> <dead_caron> : "\267" caron
+<dead_caron> <s> : "\271" scaron
+<dead_caron> <z> : "\276" zcaron
+<dead_caron> <C> : "\310" Ccaron
+<dead_caron> <c> : "\350" ccaron
+<dead_cedilla> <R> : "\243" Rcedilla
+<dead_cedilla> <L> : "\246" Lcedilla
+<dead_cedilla> <G> : "\253" Gcedilla
+<dead_cedilla> <r> : "\263" rcedilla
+<dead_cedilla> <l> : "\266" lcedilla
+<dead_cedilla> <cedilla> : "\270" cedilla
+<dead_cedilla> <dead_cedilla> : "\270" cedilla
+<dead_cedilla> <g> : "\273" gcedilla
+<dead_cedilla> <N> : "\321" Ncedilla
+<dead_cedilla> <K> : "\323" Kcedilla
+<dead_cedilla> <n> : "\361" ncedilla
+<dead_cedilla> <k> : "\363" kcedilla
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <diaeresis> : "\250" diaeresis
+<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_macron> <E> : "\252" Emacron
+<dead_macron> <macron> : "\257" macron
+<dead_macron> <dead_macron> : "\257" macron
+<dead_macron> <e> : "\272" emacron
+<dead_macron> <A> : "\300" Amacron
+<dead_macron> <I> : "\317" Imacron
+<dead_macron> <O> : "\322" Omacron
+<dead_macron> <U> : "\336" Umacron
+<dead_macron> <a> : "\340" amacron
+<dead_macron> <i> : "\357" imacron
+<dead_macron> <o> : "\362" omacron
+<dead_macron> <u> : "\376" umacron
+<dead_ogonek> <A> : "\241" Aogonek
+<dead_ogonek> <a> : "\261" aogonek
+<dead_ogonek> <ogonek> : "\262" ogonek
+<dead_ogonek> <dead_ogonek> : "\262" ogonek
+<dead_ogonek> <I> : "\307" Iogonek
+<dead_ogonek> <E> : "\312" Eogonek
+<dead_ogonek> <U> : "\331" Uogonek
+<dead_ogonek> <i> : "\347" iogonek
+<dead_ogonek> <e> : "\352" eogonek
+<dead_ogonek> <u> : "\371" uogonek
+<dead_abovering> <ring> : "\260" ring
+<dead_abovering> <dead_abovering> : "\260" ring
+<dead_tilde> <I> : "\245" Itilde
+<dead_tilde> <i> : "\265" itilde
+<dead_tilde> <A> : "\303" Atilde
+<dead_tilde> <O> : "\325" Otilde
+<dead_tilde> <U> : "\335" Utilde
+<dead_tilde> <a> : "\343" atilde
+<dead_tilde> <o> : "\365" otilde
+<dead_tilde> <u> : "\375" utilde
+<dead_tilde> <asciitilde> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-4/XI18N_OBJS b/libX11/nls/iso8859-4/XI18N_OBJS
index 7404dab99..555fd4c4a 100644
--- a/libX11/nls/iso8859-4/XI18N_OBJS
+++ b/libX11/nls/iso8859-4/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-4 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-4 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-4/XLC_LOCALE.pre b/libX11/nls/iso8859-4/XLC_LOCALE.pre
index 9bf101d07..9a484f807 100644
--- a/libX11/nls/iso8859-4/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-4/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-4.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-4:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-4:GR
- }
- font {
- primary ISO8859-4:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-4
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-4:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-4:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-4.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-4:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-4:GR
+ }
+ font {
+ primary ISO8859-4:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-4
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-4:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-4:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-5/Compose.pre b/libX11/nls/iso8859-5/Compose.pre
index 01ee440fe..8c802fbbe 100644
--- a/libX11/nls/iso8859-5/Compose.pre
+++ b/libX11/nls/iso8859-5/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ISO 8859-5 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-5 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-5/XI18N_OBJS b/libX11/nls/iso8859-5/XI18N_OBJS
index f20902a61..daac7d36c 100644
--- a/libX11/nls/iso8859-5/XI18N_OBJS
+++ b/libX11/nls/iso8859-5/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-5/XLC_LOCALE.pre b/libX11/nls/iso8859-5/XLC_LOCALE.pre
index 5a78709ac..70606c5ec 100644
--- a/libX11/nls/iso8859-5/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-5/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-5.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-5:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-5:GR
- }
- font {
- primary ISO8859-5:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-5
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-5:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-5:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-5.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-5:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-5:GR
+ }
+ font {
+ primary ISO8859-5:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-5
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-5:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-5:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-6/Compose.pre b/libX11/nls/iso8859-6/Compose.pre
index cb033155f..a43e4ffc2 100644
--- a/libX11/nls/iso8859-6/Compose.pre
+++ b/libX11/nls/iso8859-6/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ISO 8859-6 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-6 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-6/XI18N_OBJS b/libX11/nls/iso8859-6/XI18N_OBJS
index ab2d30076..da139ca5d 100644
--- a/libX11/nls/iso8859-6/XI18N_OBJS
+++ b/libX11/nls/iso8859-6/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-6 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-6 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-6/XLC_LOCALE.pre b/libX11/nls/iso8859-6/XLC_LOCALE.pre
index 5b0d4d4a5..60a388741 100644
--- a/libX11/nls/iso8859-6/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-6/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-6.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-6:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-6:GR
- }
- font {
- primary ISO8859-6:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-6
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-6:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-6:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-6.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-6:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-6:GR
+ }
+ font {
+ primary ISO8859-6:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-6
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-6:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-6:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-7/Compose.pre b/libX11/nls/iso8859-7/Compose.pre
index c79b2773c..ca80de23c 100644
--- a/libX11/nls/iso8859-7/Compose.pre
+++ b/libX11/nls/iso8859-7/Compose.pre
@@ -1,222 +1,222 @@
-XCOMM
-XCOMM ISO 8859-7 (Greek) Compose Sequence
-XCOMM
-XCOMM
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <parenleft> <c> : "\251" copyright
-<Multi_key> <less> <less> : "\253" guillemotleft
-<Multi_key> <greater> <greater> : "\273" guillemotright
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <plus> <minus> : "\261" plusminus
-<Multi_key> <minus> <plus> : "\261" plusminus
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <1> <2> : "\275" onehalf
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <bar> <bar> : "\246" brokenbar
-<Multi_key> <exclam> <asciicircum> : "\246" brokenbar
-<Multi_key> <asciicircum> <exclam> : "\246" brokenbar
-<Multi_key> <V> <B> : "\246" brokenbar
-<Multi_key> <B> <V> : "\246" brokenbar
-<Multi_key> <v> <b> : "\246" brokenbar
-<Multi_key> <b> <v> : "\246" brokenbar
-<Multi_key> <minus> <comma> : "\254" notsign
-<Multi_key> <comma> <minus> : "\254" notsign
-<Multi_key> <minus> <minus> : "\255" hyphen
-XCOMM should be Greek tonos but not defined in X11
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-XCOMM should be Greek dialytika but not defined in X11
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-XCOMM special characters that don't exist in Latin-1
-<Multi_key> <less> <apostrophe> : "\241" leftsinglequotemark
-<Multi_key> <apostrophe> <less> : "\241" leftsinglequotemark
-<Multi_key> <greater> <apostrophe> : "\242" rightsinglequotemark
-<Multi_key> <apostrophe> <greater> : "\242" rightsinglequotemark
-<Multi_key> <asciitilde> <asciitilde> : "\257" Greek_horizbar
-
-XCOMM Accented Alphabet
-<Multi_key> <Greek_ALPHA> <apostrophe> : "\266" Greek_ALPHAaccent
-<Multi_key> <apostrophe> <Greek_ALPHA> : "\266" Greek_ALPHAaccent
-<Multi_key> <Greek_EPSILON> <apostrophe>: "\270" Greek_EPSILONaccent
-<Multi_key> <apostrophe> <Greek_EPSILON>: "\270" Greek_EPSILONaccent
-<Multi_key> <Greek_ETA> <apostrophe> : "\271" Greek_ETAaccent
-<Multi_key> <apostrophe> <Greek_ETA> : "\271" Greek_ETAaccent
-<Multi_key> <Greek_IOTA> <apostrophe> : "\272" Greek_IOTAaccent
-<Multi_key> <apostrophe> <Greek_IOTA> : "\272" Greek_IOTAaccent
-<Multi_key> <Greek_OMICRON> <apostrophe>: "\274" Greek_OMICRONaccent
-<Multi_key> <apostrophe> <Greek_OMICRON>: "\274" Greek_OMICRONaccent
-<Multi_key> <Greek_UPSILON> <apostrophe>: "\276" Greek_UPSILONaccent
-<Multi_key> <apostrophe> <Greek_UPSILON>: "\276" Greek_UPSILONaccent
-<Multi_key> <Greek_OMEGA> <apostrophe> : "\277" Greek_OMEGAaccent
-<Multi_key> <apostrophe> <Greek_OMEGA> : "\277" Greek_OMEGAaccent
-<Multi_key> <Greek_IOTA> <quotedbl> : "\332" Greek_IOTAdieresis
-<Multi_key> <quotedbl> <Greek_IOTA> : "\332" Greek_IOTAdieresis
-<Multi_key> <Greek_UPSILON> <quotedbl> : "\333" Greek_UPSILONdieresis
-<Multi_key> <quotedbl> <Greek_UPSILON> : "\333" Greek_UPSILONdieresis
-
-<Multi_key> <Greek_alpha> <apostrophe> : "\334" Greek_alphaaccent
-<Multi_key> <apostrophe> <Greek_alpha> : "\334" Greek_alphaaccent
-<Multi_key> <Greek_epsilon> <apostrophe>: "\335" Greek_epsilonaccent
-<Multi_key> <apostrophe> <Greek_epsilon>: "\335" Greek_epsilonaccent
-<Multi_key> <Greek_eta> <apostrophe> : "\336" Greek_etaaccent
-<Multi_key> <apostrophe> <Greek_eta> : "\336" Greek_etaaccent
-<Multi_key> <Greek_iota> <apostrophe> : "\337" Greek_iotaaccent
-<Multi_key> <apostrophe> <Greek_iota> : "\337" Greek_iotaaccent
-<Multi_key> <Greek_omicron> <apostrophe>: "\374" Greek_omicronaccent
-<Multi_key> <apostrophe> <Greek_omicron>: "\374" Greek_omicronaccent
-<Multi_key> <Greek_upsilon> <apostrophe>: "\375" Greek_upsilonaccent
-<Multi_key> <apostrophe> <Greek_upsilon>: "\375" Greek_upsilonaccent
-<Multi_key> <Greek_omega> <apostrophe> : "\376" Greek_omegaaccent
-<Multi_key> <apostrophe> <Greek_omega> : "\376" Greek_omegaaccent
-<Multi_key> <Greek_iota> <quotedbl> : "\372" Greek_iotadieresis
-<Multi_key> <quotedbl> <Greek_iota> : "\372" Greek_iotadieresis
-<Multi_key> <Greek_upsilon> <quotedbl> : "\373" Greek_upsilondieresis
-<Multi_key> <quotedbl> <Greek_upsilon> : "\373" Greek_upsilondieresis
-
-<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "\300" Greek_iotaaccentdieresis
-<Multi_key> <quotedbl> <apostrophe> <Greek_iota> : "\300" Greek_iotaaccentdieresis
-<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
-<Multi_key> <quotedbl> <apostrophe> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
-<Multi_key> <apostrophe> <quotedbl> <space> : "\265" Greek_accentdieresis
-<Multi_key> <quotedbl> <apostrophe> <space> : "\265" Greek_accentdieresis
-
-XCOMM
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_grave> <space> : "`" grave
-<dead_diaeresis> <space> : "\250" diaeresis
-<dead_circumflex> <space> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-<dead_doubleacute> <space> : "\"" quotedbl
-<dead_abovering> <space> : "\260" degree
-<dead_abovering> <dead_abovering> : "\260" degree
-<dead_circumflex> <0> : "\260" degree
-<dead_circumflex> <2> : "\262" twosuperior
-<dead_circumflex> <3> : "\263" threesuperior
-<dead_circumflex> <period> : "\267" periodcentered
-<dead_circumflex> <exclam> : "\246" brokenbar
-<dead_cedilla> <minus> : "\254" notsign
-<dead_acute> <apostrophe> : "\264" acute
-<dead_diaeresis> <quotedbl> : "\250" diaeresis
-
-XCOMM Accented Alphabet (plus some more symbols)
-<dead_acute> <Greek_alpha> : "\334" Greek_alphaaccent
-<dead_acute> <Greek_epsilon> : "\335" Greek_epsilonaccent
-<dead_acute> <Greek_eta> : "\336" Greek_etaaccent
-<dead_acute> <Greek_iota> : "\337" Greek_iotaaccent
-<dead_acute> <Greek_omicron> : "\374" Greek_omicronaccent
-<dead_acute> <Greek_upsilon> : "\375" Greek_upsilonaccent
-<dead_acute> <Greek_omega> : "\376" Greek_omegaaccent
-<dead_acute> <Greek_ALPHA> : "\266" Greek_ALPHAaccent
-<dead_acute> <Greek_EPSILON> : "\270" Greek_EPSILONaccent
-<dead_acute> <Greek_ETA> : "\271" Greek_ETAaccent
-<dead_acute> <Greek_IOTA> : "\272" Greek_IOTAaccent
-<dead_acute> <Greek_OMICRON> : "\274" Greek_OMICRONaccent
-<dead_acute> <Greek_UPSILON> : "\276" Greek_UPSILONaccent
-<dead_acute> <Greek_OMEGA> : "\277" Greek_OMEGAaccent
-<dead_acute> <space> : "\264" acute
-<dead_acute> <dead_acute> : "\264" acute
-<dead_acute> <period> : "\267" periodcentered
-<dead_acute> <less> : "\253" guillemotleft
-<dead_acute> <greater> : "\273" guillemotright
-
-<dead_diaeresis> <Greek_iota> : "\372" Greek_iotadieresis
-<dead_diaeresis> <Greek_upsilon> : "\373" Greek_upsilondieresis
-<dead_diaeresis> <Greek_IOTA> : "\332" Greek_IOTAdieresis
-<dead_diaeresis> <Greek_UPSILON> : "\333" Greek_UPSILONdieresis
-<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
-<dead_diaeresis> <period> : "\267" periodcentered
-<dead_diaeresis> <less> : "\253" guillemotleft
-<dead_diaeresis> <greater> : "\273" guillemotright
-
-<dead_acute> <dead_diaeresis> <Greek_iota> : "\300" Greek_iotaaccentdieresis
-<dead_acute> <dead_diaeresis> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
-<dead_acute> <dead_diaeresis> <space> : "\265" Greek_accentdieresis
-
-<dead_diaeresis> <dead_acute> <Greek_iota> : "\300" Greek_iotaaccentdieresis
-<dead_diaeresis> <dead_acute> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
-<dead_diaeresis> <dead_acute> <space> : "\265" Greek_accentdieresis
+XCOMM
+XCOMM ISO 8859-7 (Greek) Compose Sequence
+XCOMM
+XCOMM
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <1> <2> : "\275" onehalf
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <bar> <bar> : "\246" brokenbar
+<Multi_key> <exclam> <asciicircum> : "\246" brokenbar
+<Multi_key> <asciicircum> <exclam> : "\246" brokenbar
+<Multi_key> <V> <B> : "\246" brokenbar
+<Multi_key> <B> <V> : "\246" brokenbar
+<Multi_key> <v> <b> : "\246" brokenbar
+<Multi_key> <b> <v> : "\246" brokenbar
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+XCOMM should be Greek tonos but not defined in X11
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+XCOMM should be Greek dialytika but not defined in X11
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM special characters that don't exist in Latin-1
+<Multi_key> <less> <apostrophe> : "\241" leftsinglequotemark
+<Multi_key> <apostrophe> <less> : "\241" leftsinglequotemark
+<Multi_key> <greater> <apostrophe> : "\242" rightsinglequotemark
+<Multi_key> <apostrophe> <greater> : "\242" rightsinglequotemark
+<Multi_key> <asciitilde> <asciitilde> : "\257" Greek_horizbar
+
+XCOMM Accented Alphabet
+<Multi_key> <Greek_ALPHA> <apostrophe> : "\266" Greek_ALPHAaccent
+<Multi_key> <apostrophe> <Greek_ALPHA> : "\266" Greek_ALPHAaccent
+<Multi_key> <Greek_EPSILON> <apostrophe>: "\270" Greek_EPSILONaccent
+<Multi_key> <apostrophe> <Greek_EPSILON>: "\270" Greek_EPSILONaccent
+<Multi_key> <Greek_ETA> <apostrophe> : "\271" Greek_ETAaccent
+<Multi_key> <apostrophe> <Greek_ETA> : "\271" Greek_ETAaccent
+<Multi_key> <Greek_IOTA> <apostrophe> : "\272" Greek_IOTAaccent
+<Multi_key> <apostrophe> <Greek_IOTA> : "\272" Greek_IOTAaccent
+<Multi_key> <Greek_OMICRON> <apostrophe>: "\274" Greek_OMICRONaccent
+<Multi_key> <apostrophe> <Greek_OMICRON>: "\274" Greek_OMICRONaccent
+<Multi_key> <Greek_UPSILON> <apostrophe>: "\276" Greek_UPSILONaccent
+<Multi_key> <apostrophe> <Greek_UPSILON>: "\276" Greek_UPSILONaccent
+<Multi_key> <Greek_OMEGA> <apostrophe> : "\277" Greek_OMEGAaccent
+<Multi_key> <apostrophe> <Greek_OMEGA> : "\277" Greek_OMEGAaccent
+<Multi_key> <Greek_IOTA> <quotedbl> : "\332" Greek_IOTAdieresis
+<Multi_key> <quotedbl> <Greek_IOTA> : "\332" Greek_IOTAdieresis
+<Multi_key> <Greek_UPSILON> <quotedbl> : "\333" Greek_UPSILONdieresis
+<Multi_key> <quotedbl> <Greek_UPSILON> : "\333" Greek_UPSILONdieresis
+
+<Multi_key> <Greek_alpha> <apostrophe> : "\334" Greek_alphaaccent
+<Multi_key> <apostrophe> <Greek_alpha> : "\334" Greek_alphaaccent
+<Multi_key> <Greek_epsilon> <apostrophe>: "\335" Greek_epsilonaccent
+<Multi_key> <apostrophe> <Greek_epsilon>: "\335" Greek_epsilonaccent
+<Multi_key> <Greek_eta> <apostrophe> : "\336" Greek_etaaccent
+<Multi_key> <apostrophe> <Greek_eta> : "\336" Greek_etaaccent
+<Multi_key> <Greek_iota> <apostrophe> : "\337" Greek_iotaaccent
+<Multi_key> <apostrophe> <Greek_iota> : "\337" Greek_iotaaccent
+<Multi_key> <Greek_omicron> <apostrophe>: "\374" Greek_omicronaccent
+<Multi_key> <apostrophe> <Greek_omicron>: "\374" Greek_omicronaccent
+<Multi_key> <Greek_upsilon> <apostrophe>: "\375" Greek_upsilonaccent
+<Multi_key> <apostrophe> <Greek_upsilon>: "\375" Greek_upsilonaccent
+<Multi_key> <Greek_omega> <apostrophe> : "\376" Greek_omegaaccent
+<Multi_key> <apostrophe> <Greek_omega> : "\376" Greek_omegaaccent
+<Multi_key> <Greek_iota> <quotedbl> : "\372" Greek_iotadieresis
+<Multi_key> <quotedbl> <Greek_iota> : "\372" Greek_iotadieresis
+<Multi_key> <Greek_upsilon> <quotedbl> : "\373" Greek_upsilondieresis
+<Multi_key> <quotedbl> <Greek_upsilon> : "\373" Greek_upsilondieresis
+
+<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <space> : "\265" Greek_accentdieresis
+<Multi_key> <quotedbl> <apostrophe> <space> : "\265" Greek_accentdieresis
+
+XCOMM
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_doubleacute> <space> : "\"" quotedbl
+<dead_abovering> <space> : "\260" degree
+<dead_abovering> <dead_abovering> : "\260" degree
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_circumflex> <exclam> : "\246" brokenbar
+<dead_cedilla> <minus> : "\254" notsign
+<dead_acute> <apostrophe> : "\264" acute
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+
+XCOMM Accented Alphabet (plus some more symbols)
+<dead_acute> <Greek_alpha> : "\334" Greek_alphaaccent
+<dead_acute> <Greek_epsilon> : "\335" Greek_epsilonaccent
+<dead_acute> <Greek_eta> : "\336" Greek_etaaccent
+<dead_acute> <Greek_iota> : "\337" Greek_iotaaccent
+<dead_acute> <Greek_omicron> : "\374" Greek_omicronaccent
+<dead_acute> <Greek_upsilon> : "\375" Greek_upsilonaccent
+<dead_acute> <Greek_omega> : "\376" Greek_omegaaccent
+<dead_acute> <Greek_ALPHA> : "\266" Greek_ALPHAaccent
+<dead_acute> <Greek_EPSILON> : "\270" Greek_EPSILONaccent
+<dead_acute> <Greek_ETA> : "\271" Greek_ETAaccent
+<dead_acute> <Greek_IOTA> : "\272" Greek_IOTAaccent
+<dead_acute> <Greek_OMICRON> : "\274" Greek_OMICRONaccent
+<dead_acute> <Greek_UPSILON> : "\276" Greek_UPSILONaccent
+<dead_acute> <Greek_OMEGA> : "\277" Greek_OMEGAaccent
+<dead_acute> <space> : "\264" acute
+<dead_acute> <dead_acute> : "\264" acute
+<dead_acute> <period> : "\267" periodcentered
+<dead_acute> <less> : "\253" guillemotleft
+<dead_acute> <greater> : "\273" guillemotright
+
+<dead_diaeresis> <Greek_iota> : "\372" Greek_iotadieresis
+<dead_diaeresis> <Greek_upsilon> : "\373" Greek_upsilondieresis
+<dead_diaeresis> <Greek_IOTA> : "\332" Greek_IOTAdieresis
+<dead_diaeresis> <Greek_UPSILON> : "\333" Greek_UPSILONdieresis
+<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
+<dead_diaeresis> <period> : "\267" periodcentered
+<dead_diaeresis> <less> : "\253" guillemotleft
+<dead_diaeresis> <greater> : "\273" guillemotright
+
+<dead_acute> <dead_diaeresis> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<dead_acute> <dead_diaeresis> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<dead_acute> <dead_diaeresis> <space> : "\265" Greek_accentdieresis
+
+<dead_diaeresis> <dead_acute> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<dead_diaeresis> <dead_acute> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<dead_diaeresis> <dead_acute> <space> : "\265" Greek_accentdieresis
diff --git a/libX11/nls/iso8859-7/XI18N_OBJS b/libX11/nls/iso8859-7/XI18N_OBJS
index f20902a61..daac7d36c 100644
--- a/libX11/nls/iso8859-7/XI18N_OBJS
+++ b/libX11/nls/iso8859-7/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-7/XLC_LOCALE.pre b/libX11/nls/iso8859-7/XLC_LOCALE.pre
index 9910bbe43..a40fd8894 100644
--- a/libX11/nls/iso8859-7/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-7/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-7.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-7:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-7:GR
- }
- font {
- primary ISO8859-7:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-7
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-7:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-7:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-7.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-7:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-7:GR
+ }
+ font {
+ primary ISO8859-7:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-7
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-7:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-7:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-8/Compose.pre b/libX11/nls/iso8859-8/Compose.pre
index 1ca90c720..ba1c8318c 100644
--- a/libX11/nls/iso8859-8/Compose.pre
+++ b/libX11/nls/iso8859-8/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ISO 8859-8 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-8 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-8/XI18N_OBJS b/libX11/nls/iso8859-8/XI18N_OBJS
index e85b513b3..7cd2436ce 100644
--- a/libX11/nls/iso8859-8/XI18N_OBJS
+++ b/libX11/nls/iso8859-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-8 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-8 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-8/XLC_LOCALE.pre b/libX11/nls/iso8859-8/XLC_LOCALE.pre
index 20a9f8f2a..64412f604 100644
--- a/libX11/nls/iso8859-8/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-8/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-8.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-8:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-8:GR
- }
- font {
- primary ISO8859-8:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-8
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-8:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-8:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-8.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-8:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-8:GR
+ }
+ font {
+ primary ISO8859-8:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-8
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-8:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-8:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-9/Compose.pre b/libX11/nls/iso8859-9/Compose.pre
index 83122a235..2cd18c156 100644
--- a/libX11/nls/iso8859-9/Compose.pre
+++ b/libX11/nls/iso8859-9/Compose.pre
@@ -1,481 +1,481 @@
-XCOMM
-XCOMM ISO 8859-9 (Latin5) Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <exclam> <exclam> : "\241" exclamdown
-<Multi_key> <c> <slash> : "\242" cent
-<Multi_key> <slash> <c> : "\242" cent
-<Multi_key> <C> <slash> : "\242" cent
-<Multi_key> <slash> <C> : "\242" cent
-<Multi_key> <C> <bar> : "\242" cent
-<Multi_key> <bar> <C> : "\242" cent
-<Multi_key> <c> <bar> : "\242" cent
-<Multi_key> <bar> <c> : "\242" cent
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <C> <equal> : "\244" EuroSign
-<Multi_key> <equal> <C> : "\244" EuroSign
-<Multi_key> <c> <equal> : "\244" EuroSign
-<Multi_key> <equal> <c> : "\244" EuroSign
-<Multi_key> <E> <equal> : "\244" EuroSign
-<Multi_key> <equal> <E> : "\244" EuroSign
-<Multi_key> <e> <equal> : "\244" EuroSign
-<Multi_key> <equal> <e> : "\244" EuroSign
-<Multi_key> <y> <minus> : "\245" yen
-<Multi_key> <minus> <y> : "\245" yen
-<Multi_key> <Y> <minus> : "\245" yen
-<Multi_key> <minus> <Y> : "\245" yen
-<Multi_key> <y> <equal> : "\245" yen
-<Multi_key> <equal> <y> : "\245" yen
-<Multi_key> <Y> <equal> : "\245" yen
-<Multi_key> <equal> <Y> : "\245" yen
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <parenleft> <c> : "\251" copyright
-<Multi_key> <a> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <a> : "\252" ordfeminine
-<Multi_key> <A> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <A> : "\252" ordfeminine
-<Multi_key> <o> <underscore> : "\272" masculine
-<Multi_key> <underscore> <o> : "\272" masculine
-<Multi_key> <O> <underscore> : "\272" masculine
-<Multi_key> <underscore> <O> : "\272" masculine
-<Multi_key> <less> <less> : "\253" guillemotleft
-<Multi_key> <greater> <greater> : "\273" guillemotright
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <plus> <minus> : "\261" plusminus
-<Multi_key> <minus> <plus> : "\261" plusminus
-<Multi_key> <slash> <u> : "\265" mu
-<Multi_key> <u> <slash> : "\265" mu
-<Multi_key> <slash> <U> : "\265" mu
-<Multi_key> <U> <slash> : "\265" mu
-<Multi_key> <1> <asciicircum> : "\271" onesuperior
-<Multi_key> <asciicircum> <1> : "\271" onesuperior
-<Multi_key> <S> <1> : "\271" onesuperior
-<Multi_key> <1> <S> : "\271" onesuperior
-<Multi_key> <s> <1> : "\271" onesuperior
-<Multi_key> <1> <s> : "\271" onesuperior
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <question> <question> : "\277" questiondown
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <minus> <comma> : "\254" notsign
-<Multi_key> <comma> <minus> : "\254" notsign
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <parenleft> <r> : "\256" registered
-<Multi_key> <minus> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <minus> : "\257" macron
-<Multi_key> <underscore> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <underscore> : "\257" macron
-<Multi_key> <underscore> <underscore> : "\257" macron
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "\300" Agrave
-<Multi_key> <grave> <A> : "\300" Agrave
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <minus> : "\303" Atilde
-<Multi_key> <minus> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
-<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <A> : "\305" Aring
-<Multi_key> <A> <E> : "\306" AE
-<Multi_key> <a> <grave> : "\340" agrave
-<Multi_key> <grave> <a> : "\340" agrave
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <minus> : "\343" atilde
-<Multi_key> <minus> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <diaeresis> : "\344" adiaeresis
-<Multi_key> <diaeresis> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <a> : "\345" aring
-<Multi_key> <a> <e> : "\346" ae
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <minus> <D> : "\320" ETH
-<Multi_key> <D> <minus> : "\320" ETH
-<Multi_key> <minus> <d> : "\360" eth
-<Multi_key> <d> <minus> : "\360" eth
-<Multi_key> <E> <grave> : "\310" Egrave
-<Multi_key> <grave> <E> : "\310" Egrave
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
-<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
-<Multi_key> <E> <greater> : "\312" Ecircumflex
-<Multi_key> <greater> <E> : "\312" Ecircumflex
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
-<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
-<Multi_key> <e> <grave> : "\350" egrave
-<Multi_key> <grave> <e> : "\350" egrave
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <asciicircum> : "\352" ecircumflex
-<Multi_key> <asciicircum> <e> : "\352" ecircumflex
-<Multi_key> <e> <greater> : "\352" ecircumflex
-<Multi_key> <greater> <e> : "\352" ecircumflex
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <diaeresis> : "\353" ediaeresis
-<Multi_key> <diaeresis> <e> : "\353" ediaeresis
-<Multi_key> <G> <U> : "\320" Gbreve
-<Multi_key> <G> <parenleft> : "\320" Gbreve
-<Multi_key> <parenleft> <G> : "\320" Gbreve
-<Multi_key> <G> <breve> : "\320" Gbreve
-<Multi_key> <breve> <G> : "\320" Gbreve
-<Multi_key> <g> <U> : "\360" gbreve
-<Multi_key> <g> <parenleft> : "\360" gbreve
-<Multi_key> <parenleft> <g> : "\360" gbreve
-<Multi_key> <g> <breve> : "\360" gbreve
-<Multi_key> <breve> <g> : "\360" gbreve
-<Multi_key> <I> <grave> : "\314" Igrave
-<Multi_key> <grave> <I> : "\314" Igrave
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
-<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
-<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
-<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
-<Multi_key> <I> <period> : "\335" Iabovedot
-<Multi_key> <period> <I> : "\335" Iabovedot
-<Multi_key> <i> <grave> : "\354" igrave
-<Multi_key> <grave> <i> : "\354" igrave
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <quotedbl> : "\357" idiaeresis
-<Multi_key> <quotedbl> <i> : "\357" idiaeresis
-<Multi_key> <i> <diaeresis> : "\357" idiaeresis
-<Multi_key> <diaeresis> <i> : "\357" idiaeresis
-<Multi_key> <i> <period> : "\375" idotless
-<Multi_key> <period> <i> : "\375" idotless
-<Multi_key> <N> <asciitilde> : "\321" Ntilde
-<Multi_key> <asciitilde> <N> : "\321" Ntilde
-<Multi_key> <N> <minus> : "\321" Ntilde
-<Multi_key> <minus> <N> : "\321" Ntilde
-<Multi_key> <n> <asciitilde> : "\361" ntilde
-<Multi_key> <asciitilde> <n> : "\361" ntilde
-<Multi_key> <n> <minus> : "\361" ntilde
-<Multi_key> <minus> <n> : "\361" ntilde
-<Multi_key> <O> <grave> : "\322" Ograve
-<Multi_key> <grave> <O> : "\322" Ograve
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <minus> : "\325" Otilde
-<Multi_key> <minus> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
-<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
-<Multi_key> <O> <slash> : "\330" Ooblique
-<Multi_key> <slash> <O> : "\330" Ooblique
-<Multi_key> <O> <E> : "\274" OE
-<Multi_key> <o> <grave> : "\362" ograve
-<Multi_key> <grave> <o> : "\362" ograve
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <minus> : "\365" otilde
-<Multi_key> <minus> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <diaeresis> : "\366" odiaeresis
-<Multi_key> <diaeresis> <o> : "\366" odiaeresis
-<Multi_key> <o> <slash> : "\370" oslash
-<Multi_key> <slash> <o> : "\370" oslash
-<Multi_key> <S> <cedilla> : "\336" Scedilla
-<Multi_key> <S> <comma> : "\336" Scedilla
-<Multi_key> <cedilla> <S> : "\336" Scedilla
-<Multi_key> <cedilla> <s> : "\376" scedilla
-<Multi_key> <comma> <S> : "\336" Scedilla
-<Multi_key> <comma> <s> : "\376" scedilla
-<Multi_key> <s> <cedilla> : "\376" scedilla
-<Multi_key> <s> <comma> : "\376" scedilla
-<Multi_key> <U> <grave> : "\331" Ugrave
-<Multi_key> <grave> <U> : "\331" Ugrave
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
-<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
-<Multi_key> <u> <grave> : "\371" ugrave
-<Multi_key> <grave> <u> : "\371" ugrave
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <diaeresis> : "\374" udiaeresis
-<Multi_key> <diaeresis> <u> : "\374" udiaeresis
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <T> <H> : "\336" THORN
-<Multi_key> <t> <h> : "\376" thorn
-<Multi_key> <Y> <acute> : "\335" Yacute
-<Multi_key> <acute> <Y> : "\335" Yacute
-<Multi_key> <Y> <apostrophe> : "\335" Yacute
-<Multi_key> <apostrophe> <Y> : "\335" Yacute
-<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
-<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
-<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
-<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
-<Multi_key> <y> <acute> : "\375" yacute
-<Multi_key> <acute> <y> : "\375" yacute
-<Multi_key> <y> <apostrophe> : "\375" yacute
-<Multi_key> <apostrophe> <y> : "\375" yacute
-<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
-<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
-<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
-<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
-<Multi_key> <Z> <less> : "\264" Zcaron
-<Multi_key> <less> <Z> : "\264" Zcaron
-<Multi_key> <z> <less> : "\270" zcaron
-<Multi_key> <less> <z> : "\270" zcaron
-<Multi_key> <v> <Z> : "\264" Zcaron
-<Multi_key> <v> <z> : "\270" zcaron
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_grave> <space> : "`" grave
-<dead_acute> <space> : "'" apostrophe
-<dead_diaeresis> <space> : "\250" diaeresis
-<dead_circumflex> <space> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-<dead_circumflex> <0> : "\260" degree
-<dead_circumflex> <1> : "\271" onesuperior
-<dead_circumflex> <2> : "\262" twosuperior
-<dead_circumflex> <3> : "\263" threesuperior
-<dead_circumflex> <period> : "\267" periodcentered
-<dead_cedilla> <minus> : "\254" notsign
-<dead_circumflex> <minus> : "\257" macron
-<dead_circumflex> <underscore> : "\257" macron
-<dead_acute> <apostrophe> : "\264" acute
-<dead_cedilla> <comma> : "\270" cedilla
-<dead_diaeresis> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_grave> <A> : "\300" Agrave
-<dead_acute> <A> : "\301" Aacute
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_tilde> <A> : "\303" Atilde
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_grave> <a> : "\340" agrave
-<dead_acute> <a> : "\341" aacute
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_tilde> <a> : "\343" atilde
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_grave> <E> : "\310" Egrave
-<dead_acute> <E> : "\311" Eacute
-<dead_circumflex> <E> : "\312" Ecircumflex
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_grave> <e> : "\350" egrave
-<dead_acute> <e> : "\351" eacute
-<dead_circumflex> <e> : "\352" ecircumflex
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_breve> <G> : "\320" Gbreve
-<dead_breve> <g> : "\360" gbreve
-<dead_abovedot> <I> : "\335" Iabovedot
-<dead_grave> <I> : "\314" Igrave
-<dead_acute> <I> : "\315" Iacute
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_abovedot> <i> : "\375" idotless
-<dead_grave> <i> : "\354" igrave
-<dead_acute> <i> : "\355" iacute
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_grave> <O> : "\322" Ograve
-<dead_acute> <O> : "\323" Oacute
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_tilde> <O> : "\325" Otilde
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_grave> <o> : "\362" ograve
-<dead_acute> <o> : "\363" oacute
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_tilde> <o> : "\365" otilde
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_caron> <S> : "\246" Scaron
-<dead_caron> <s> : "\250" scaron
-<dead_cedilla> <S> : "\336" Scedilla
-<dead_cedilla> <s> : "\376" scedilla
-<dead_grave> <U> : "\331" Ugrave
-<dead_acute> <U> : "\332" Uacute
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_grave> <u> : "\371" ugrave
-<dead_acute> <u> : "\372" uacute
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_acute> <Y> : "\335" Yacute
-<dead_diaeresis> <Y> : "\276" Ydiaeresis
-<dead_acute> <y> : "\375" yacute
-<dead_diaeresis> <y> : "\377" ydiaeresis
-<dead_caron> <Z> : "\264" Zcaron
-<dead_caron> <z> : "\270" zcaron
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-9 (Latin5) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "\241" exclamdown
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <c> <equal> : "\244" EuroSign
+<Multi_key> <equal> <c> : "\244" EuroSign
+<Multi_key> <E> <equal> : "\244" EuroSign
+<Multi_key> <equal> <E> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <equal> <e> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <a> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <a> : "\252" ordfeminine
+<Multi_key> <A> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <A> : "\252" ordfeminine
+<Multi_key> <o> <underscore> : "\272" masculine
+<Multi_key> <underscore> <o> : "\272" masculine
+<Multi_key> <O> <underscore> : "\272" masculine
+<Multi_key> <underscore> <O> : "\272" masculine
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <G> <U> : "\320" Gbreve
+<Multi_key> <G> <parenleft> : "\320" Gbreve
+<Multi_key> <parenleft> <G> : "\320" Gbreve
+<Multi_key> <G> <breve> : "\320" Gbreve
+<Multi_key> <breve> <G> : "\320" Gbreve
+<Multi_key> <g> <U> : "\360" gbreve
+<Multi_key> <g> <parenleft> : "\360" gbreve
+<Multi_key> <parenleft> <g> : "\360" gbreve
+<Multi_key> <g> <breve> : "\360" gbreve
+<Multi_key> <breve> <g> : "\360" gbreve
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <I> <period> : "\335" Iabovedot
+<Multi_key> <period> <I> : "\335" Iabovedot
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <i> <period> : "\375" idotless
+<Multi_key> <period> <i> : "\375" idotless
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <S> <cedilla> : "\336" Scedilla
+<Multi_key> <S> <comma> : "\336" Scedilla
+<Multi_key> <cedilla> <S> : "\336" Scedilla
+<Multi_key> <cedilla> <s> : "\376" scedilla
+<Multi_key> <comma> <S> : "\336" Scedilla
+<Multi_key> <comma> <s> : "\376" scedilla
+<Multi_key> <s> <cedilla> : "\376" scedilla
+<Multi_key> <s> <comma> : "\376" scedilla
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <T> <H> : "\336" THORN
+<Multi_key> <t> <h> : "\376" thorn
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <less> : "\264" Zcaron
+<Multi_key> <less> <Z> : "\264" Zcaron
+<Multi_key> <z> <less> : "\270" zcaron
+<Multi_key> <less> <z> : "\270" zcaron
+<Multi_key> <v> <Z> : "\264" Zcaron
+<Multi_key> <v> <z> : "\270" zcaron
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_breve> <G> : "\320" Gbreve
+<dead_breve> <g> : "\360" gbreve
+<dead_abovedot> <I> : "\335" Iabovedot
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_abovedot> <i> : "\375" idotless
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_caron> <S> : "\246" Scaron
+<dead_caron> <s> : "\250" scaron
+<dead_cedilla> <S> : "\336" Scedilla
+<dead_cedilla> <s> : "\376" scedilla
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\264" Zcaron
+<dead_caron> <z> : "\270" zcaron
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-9/XI18N_OBJS b/libX11/nls/iso8859-9/XI18N_OBJS
index f20902a61..daac7d36c 100644
--- a/libX11/nls/iso8859-9/XI18N_OBJS
+++ b/libX11/nls/iso8859-9/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-9/XLC_LOCALE.pre b/libX11/nls/iso8859-9/XLC_LOCALE.pre
index 4ffbce79f..48a06da6a 100644
--- a/libX11/nls/iso8859-9/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-9/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-9.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-9:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-9:GR
- }
- font {
- primary ISO8859-9:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-9
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-9:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-9:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-9.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-9:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-9:GR
+ }
+ font {
+ primary ISO8859-9:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-9
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-9:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-9:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-9e/Compose.pre b/libX11/nls/iso8859-9e/Compose.pre
index 96815319b..4d90987a7 100644
--- a/libX11/nls/iso8859-9e/Compose.pre
+++ b/libX11/nls/iso8859-9e/Compose.pre
@@ -1,493 +1,493 @@
-XCOMM
-XCOMM ISO 8859-9e (Latin??) Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <exclam> <exclam> : "\241" exclamdown
-<Multi_key> <c> <slash> : "\242" cent
-<Multi_key> <slash> <c> : "\242" cent
-<Multi_key> <C> <slash> : "\242" cent
-<Multi_key> <slash> <C> : "\242" cent
-<Multi_key> <C> <bar> : "\242" cent
-<Multi_key> <bar> <C> : "\242" cent
-<Multi_key> <c> <bar> : "\242" cent
-<Multi_key> <bar> <c> : "\242" cent
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <C> <equal> : "\244" EuroSign
-<Multi_key> <equal> <C> : "\244" EuroSign
-<Multi_key> <c> <equal> : "\244" EuroSign
-<Multi_key> <equal> <c> : "\244" EuroSign
-<Multi_key> <E> <equal> : "\244" EuroSign
-<Multi_key> <equal> <E> : "\244" EuroSign
-<Multi_key> <e> <equal> : "\244" EuroSign
-<Multi_key> <equal> <e> : "\244" EuroSign
-<Multi_key> <y> <minus> : "\245" yen
-<Multi_key> <minus> <y> : "\245" yen
-<Multi_key> <Y> <minus> : "\245" yen
-<Multi_key> <minus> <Y> : "\245" yen
-<Multi_key> <y> <equal> : "\245" yen
-<Multi_key> <equal> <y> : "\245" yen
-<Multi_key> <Y> <equal> : "\245" yen
-<Multi_key> <equal> <Y> : "\245" yen
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <parenleft> <c> : "\251" copyright
-<Multi_key> <a> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <a> : "\252" ordfeminine
-<Multi_key> <A> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <A> : "\252" ordfeminine
-<Multi_key> <o> <underscore> : "\272" masculine
-<Multi_key> <underscore> <o> : "\272" masculine
-<Multi_key> <O> <underscore> : "\272" masculine
-<Multi_key> <underscore> <O> : "\272" masculine
-<Multi_key> <less> <less> : "\253" guillemotleft
-<Multi_key> <greater> <greater> : "\273" guillemotright
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <plus> <minus> : "\261" plusminus
-<Multi_key> <minus> <plus> : "\261" plusminus
-<Multi_key> <slash> <u> : "\265" mu
-<Multi_key> <u> <slash> : "\265" mu
-<Multi_key> <slash> <U> : "\265" mu
-<Multi_key> <U> <slash> : "\265" mu
-<Multi_key> <1> <asciicircum> : "\271" onesuperior
-<Multi_key> <asciicircum> <1> : "\271" onesuperior
-<Multi_key> <S> <1> : "\271" onesuperior
-<Multi_key> <1> <S> : "\271" onesuperior
-<Multi_key> <s> <1> : "\271" onesuperior
-<Multi_key> <1> <s> : "\271" onesuperior
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <question> <question> : "\277" questiondown
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <minus> <comma> : "\254" notsign
-<Multi_key> <comma> <minus> : "\254" notsign
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <parenleft> <r> : "\256" registered
-<Multi_key> <minus> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <minus> : "\257" macron
-<Multi_key> <underscore> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <underscore> : "\257" macron
-<Multi_key> <underscore> <underscore> : "\257" macron
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "\300" Agrave
-<Multi_key> <grave> <A> : "\300" Agrave
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <minus> : "\303" Atilde
-<Multi_key> <minus> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
-<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <A> : "\305" Aring
-<Multi_key> <E> <E> : "\306" SCHWA
-<Multi_key> <a> <grave> : "\340" agrave
-<Multi_key> <grave> <a> : "\340" agrave
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <minus> : "\343" atilde
-<Multi_key> <minus> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <diaeresis> : "\344" adiaeresis
-<Multi_key> <diaeresis> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <a> : "\345" aring
-<Multi_key> <e> <e> : "\346" schwa
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <minus> <D> : "\320" ETH
-<Multi_key> <D> <minus> : "\320" ETH
-<Multi_key> <minus> <d> : "\360" eth
-<Multi_key> <d> <minus> : "\360" eth
-<Multi_key> <E> <grave> : "\310" Egrave
-<Multi_key> <grave> <E> : "\310" Egrave
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
-<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
-<Multi_key> <E> <greater> : "\312" Ecircumflex
-<Multi_key> <greater> <E> : "\312" Ecircumflex
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
-<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
-<Multi_key> <e> <grave> : "\350" egrave
-<Multi_key> <grave> <e> : "\350" egrave
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <asciicircum> : "\352" ecircumflex
-<Multi_key> <asciicircum> <e> : "\352" ecircumflex
-<Multi_key> <e> <greater> : "\352" ecircumflex
-<Multi_key> <greater> <e> : "\352" ecircumflex
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <diaeresis> : "\353" ediaeresis
-<Multi_key> <diaeresis> <e> : "\353" ediaeresis
-<Multi_key> <G> <U> : "\320" Gbreve
-<Multi_key> <G> <parenleft> : "\320" Gbreve
-<Multi_key> <parenleft> <G> : "\320" Gbreve
-<Multi_key> <G> <breve> : "\320" Gbreve
-<Multi_key> <breve> <G> : "\320" Gbreve
-<Multi_key> <g> <U> : "\360" gbreve
-<Multi_key> <g> <parenleft> : "\360" gbreve
-<Multi_key> <parenleft> <g> : "\360" gbreve
-<Multi_key> <g> <breve> : "\360" gbreve
-<Multi_key> <breve> <g> : "\360" gbreve
-<Multi_key> <I> <grave> : "\314" Igrave
-<Multi_key> <grave> <I> : "\314" Igrave
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
-<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
-<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
-<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
-<Multi_key> <I> <period> : "\335" Iabovedot
-<Multi_key> <period> <I> : "\335" Iabovedot
-<Multi_key> <i> <grave> : "\354" igrave
-<Multi_key> <grave> <i> : "\354" igrave
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <quotedbl> : "\357" idiaeresis
-<Multi_key> <quotedbl> <i> : "\357" idiaeresis
-<Multi_key> <i> <diaeresis> : "\357" idiaeresis
-<Multi_key> <diaeresis> <i> : "\357" idiaeresis
-<Multi_key> <i> <period> : "\375" idotless
-<Multi_key> <period> <i> : "\375" idotless
-<Multi_key> <N> <asciitilde> : "\321" Ntilde
-<Multi_key> <asciitilde> <N> : "\321" Ntilde
-<Multi_key> <N> <minus> : "\321" Ntilde
-<Multi_key> <minus> <N> : "\321" Ntilde
-<Multi_key> <n> <asciitilde> : "\361" ntilde
-<Multi_key> <asciitilde> <n> : "\361" ntilde
-<Multi_key> <n> <minus> : "\361" ntilde
-<Multi_key> <minus> <n> : "\361" ntilde
-<Multi_key> <O> <grave> : "\322" Ograve
-<Multi_key> <grave> <O> : "\322" Ograve
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <minus> : "\325" Otilde
-<Multi_key> <minus> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
-<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
-<Multi_key> <O> <slash> : "\330" Ooblique
-<Multi_key> <slash> <O> : "\330" Ooblique
-<Multi_key> <O> <E> : "\274" OE
-<Multi_key> <o> <grave> : "\362" ograve
-<Multi_key> <grave> <o> : "\362" ograve
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <minus> : "\365" otilde
-<Multi_key> <minus> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <diaeresis> : "\366" odiaeresis
-<Multi_key> <diaeresis> <o> : "\366" odiaeresis
-<Multi_key> <o> <slash> : "\370" oslash
-<Multi_key> <slash> <o> : "\370" oslash
-<Multi_key> <S> <cedilla> : "\336" Scedilla
-<Multi_key> <S> <comma> : "\336" Scedilla
-<Multi_key> <cedilla> <S> : "\336" Scedilla
-<Multi_key> <cedilla> <s> : "\376" scedilla
-<Multi_key> <comma> <S> : "\336" Scedilla
-<Multi_key> <comma> <s> : "\376" scedilla
-<Multi_key> <s> <cedilla> : "\376" scedilla
-<Multi_key> <s> <comma> : "\376" scedilla
-<Multi_key> <U> <grave> : "\331" Ugrave
-<Multi_key> <grave> <U> : "\331" Ugrave
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
-<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
-<Multi_key> <u> <grave> : "\371" ugrave
-<Multi_key> <grave> <u> : "\371" ugrave
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <diaeresis> : "\374" udiaeresis
-<Multi_key> <diaeresis> <u> : "\374" udiaeresis
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <T> <H> : "\336" THORN
-<Multi_key> <t> <h> : "\376" thorn
-<Multi_key> <Y> <acute> : "\327" Yacute
-<Multi_key> <acute> <Y> : "\327" Yacute
-<Multi_key> <Y> <apostrophe> : "\327" Yacute
-<Multi_key> <apostrophe> <Y> : "\327" Yacute
-<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
-<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
-<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
-<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
-<Multi_key> <y> <acute> : "\367" yacute
-<Multi_key> <acute> <y> : "\367" yacute
-<Multi_key> <y> <apostrophe> : "\367" yacute
-<Multi_key> <apostrophe> <y> : "\367" yacute
-<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
-<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
-<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
-<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
-<Multi_key> <Z> <less> : "\241" Zcaron
-<Multi_key> <less> <Z> : "\241" Zcaron
-<Multi_key> <z> <less> : "\261" zcaron
-<Multi_key> <less> <z> : "\261" zcaron
-<Multi_key> <v> <Z> : "\241" Zcaron
-<Multi_key> <v> <z> : "\261" zcaron
-<Multi_key> <G> <less> : "\252" Gcaron
-<Multi_key> <less> <G> : "\252" Gcaron
-<Multi_key> <g> <less> : "\272" gcaron
-<Multi_key> <less> <g> : "\272" gcaron
-<Multi_key> <v> <G> : "\252" Gcaron
-<Multi_key> <v> <g> : "\272" gcaron
-<Multi_key> <O> <less> : "\264" Ocaron
-<Multi_key> <less> <O> : "\264" Ocaron
-<Multi_key> <o> <less> : "\275" ocaron
-<Multi_key> <less> <o> : "\275" ocaron
-<Multi_key> <v> <O> : "\264" Ocaron
-<Multi_key> <v> <o> : "\275" ocaron
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_grave> <space> : "`" grave
-<dead_acute> <space> : "'" apostrophe
-<dead_diaeresis> <space> : "\250" diaeresis
-<dead_circumflex> <space> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-<dead_circumflex> <0> : "\260" degree
-<dead_circumflex> <1> : "\271" onesuperior
-<dead_circumflex> <2> : "\262" twosuperior
-<dead_circumflex> <3> : "\263" threesuperior
-<dead_circumflex> <period> : "\267" periodcentered
-<dead_cedilla> <minus> : "\254" notsign
-<dead_circumflex> <minus> : "\257" macron
-<dead_circumflex> <underscore> : "\257" macron
-<dead_acute> <apostrophe> : "\264" acute
-<dead_cedilla> <comma> : "\270" cedilla
-<dead_diaeresis> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_grave> <A> : "\300" Agrave
-<dead_acute> <A> : "\301" Aacute
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_tilde> <A> : "\303" Atilde
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_grave> <a> : "\340" agrave
-<dead_acute> <a> : "\341" aacute
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_tilde> <a> : "\343" atilde
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_grave> <E> : "\310" Egrave
-<dead_acute> <E> : "\311" Eacute
-<dead_circumflex> <E> : "\312" Ecircumflex
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_grave> <e> : "\350" egrave
-<dead_acute> <e> : "\351" eacute
-<dead_circumflex> <e> : "\352" ecircumflex
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_breve> <G> : "\320" Gbreve
-<dead_breve> <g> : "\360" gbreve
-<dead_abovedot> <I> : "\335" Iabovedot
-<dead_grave> <I> : "\314" Igrave
-<dead_acute> <I> : "\315" Iacute
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_abovedot> <i> : "\375" idotless
-<dead_grave> <i> : "\354" igrave
-<dead_acute> <i> : "\355" iacute
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_grave> <O> : "\322" Ograve
-<dead_acute> <O> : "\323" Oacute
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_tilde> <O> : "\325" Otilde
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_grave> <o> : "\362" ograve
-<dead_acute> <o> : "\363" oacute
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_tilde> <o> : "\365" otilde
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_cedilla> <S> : "\336" Scedilla
-<dead_cedilla> <s> : "\376" scedilla
-<dead_grave> <U> : "\331" Ugrave
-<dead_acute> <U> : "\332" Uacute
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_grave> <u> : "\371" ugrave
-<dead_acute> <u> : "\372" uacute
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_acute> <Y> : "\327" Yacute
-<dead_diaeresis> <Y> : "\276" Ydiaeresis
-<dead_acute> <y> : "\367" yacute
-<dead_diaeresis> <y> : "\377" ydiaeresis
-<dead_caron> <Z> : "\241" Zcaron
-<dead_caron> <z> : "\261" zcaron
-<dead_caron> <G> : "\252" Gcaron
-<dead_caron> <g> : "\272" gcaron
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-9e (Latin??) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "\241" exclamdown
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <c> <equal> : "\244" EuroSign
+<Multi_key> <equal> <c> : "\244" EuroSign
+<Multi_key> <E> <equal> : "\244" EuroSign
+<Multi_key> <equal> <E> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <equal> <e> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <a> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <a> : "\252" ordfeminine
+<Multi_key> <A> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <A> : "\252" ordfeminine
+<Multi_key> <o> <underscore> : "\272" masculine
+<Multi_key> <underscore> <o> : "\272" masculine
+<Multi_key> <O> <underscore> : "\272" masculine
+<Multi_key> <underscore> <O> : "\272" masculine
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <E> <E> : "\306" SCHWA
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <e> <e> : "\346" schwa
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <G> <U> : "\320" Gbreve
+<Multi_key> <G> <parenleft> : "\320" Gbreve
+<Multi_key> <parenleft> <G> : "\320" Gbreve
+<Multi_key> <G> <breve> : "\320" Gbreve
+<Multi_key> <breve> <G> : "\320" Gbreve
+<Multi_key> <g> <U> : "\360" gbreve
+<Multi_key> <g> <parenleft> : "\360" gbreve
+<Multi_key> <parenleft> <g> : "\360" gbreve
+<Multi_key> <g> <breve> : "\360" gbreve
+<Multi_key> <breve> <g> : "\360" gbreve
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <I> <period> : "\335" Iabovedot
+<Multi_key> <period> <I> : "\335" Iabovedot
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <i> <period> : "\375" idotless
+<Multi_key> <period> <i> : "\375" idotless
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <S> <cedilla> : "\336" Scedilla
+<Multi_key> <S> <comma> : "\336" Scedilla
+<Multi_key> <cedilla> <S> : "\336" Scedilla
+<Multi_key> <cedilla> <s> : "\376" scedilla
+<Multi_key> <comma> <S> : "\336" Scedilla
+<Multi_key> <comma> <s> : "\376" scedilla
+<Multi_key> <s> <cedilla> : "\376" scedilla
+<Multi_key> <s> <comma> : "\376" scedilla
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <T> <H> : "\336" THORN
+<Multi_key> <t> <h> : "\376" thorn
+<Multi_key> <Y> <acute> : "\327" Yacute
+<Multi_key> <acute> <Y> : "\327" Yacute
+<Multi_key> <Y> <apostrophe> : "\327" Yacute
+<Multi_key> <apostrophe> <Y> : "\327" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\367" yacute
+<Multi_key> <acute> <y> : "\367" yacute
+<Multi_key> <y> <apostrophe> : "\367" yacute
+<Multi_key> <apostrophe> <y> : "\367" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <less> : "\241" Zcaron
+<Multi_key> <less> <Z> : "\241" Zcaron
+<Multi_key> <z> <less> : "\261" zcaron
+<Multi_key> <less> <z> : "\261" zcaron
+<Multi_key> <v> <Z> : "\241" Zcaron
+<Multi_key> <v> <z> : "\261" zcaron
+<Multi_key> <G> <less> : "\252" Gcaron
+<Multi_key> <less> <G> : "\252" Gcaron
+<Multi_key> <g> <less> : "\272" gcaron
+<Multi_key> <less> <g> : "\272" gcaron
+<Multi_key> <v> <G> : "\252" Gcaron
+<Multi_key> <v> <g> : "\272" gcaron
+<Multi_key> <O> <less> : "\264" Ocaron
+<Multi_key> <less> <O> : "\264" Ocaron
+<Multi_key> <o> <less> : "\275" ocaron
+<Multi_key> <less> <o> : "\275" ocaron
+<Multi_key> <v> <O> : "\264" Ocaron
+<Multi_key> <v> <o> : "\275" ocaron
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_breve> <G> : "\320" Gbreve
+<dead_breve> <g> : "\360" gbreve
+<dead_abovedot> <I> : "\335" Iabovedot
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_abovedot> <i> : "\375" idotless
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_cedilla> <S> : "\336" Scedilla
+<dead_cedilla> <s> : "\376" scedilla
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\327" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\367" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\241" Zcaron
+<dead_caron> <z> : "\261" zcaron
+<dead_caron> <G> : "\252" Gcaron
+<dead_caron> <g> : "\272" gcaron
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-9e/XI18N_OBJS b/libX11/nls/iso8859-9e/XI18N_OBJS
index a0d710b6b..325fb2135 100644
--- a/libX11/nls/iso8859-9e/XI18N_OBJS
+++ b/libX11/nls/iso8859-9e/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-9e locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-9e locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-9e/XLC_LOCALE.pre b/libX11/nls/iso8859-9e/XLC_LOCALE.pre
index cc7657850..ba35c7ee8 100644
--- a/libX11/nls/iso8859-9e/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-9e/XLC_LOCALE.pre
@@ -1,84 +1,84 @@
-XCOMM XLocale Database Sample for iso8859-9e.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-9E:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-9E:GR
- }
- font {
- primary ISO8859-9E:GR
- }
-}
-END XLC_FONTSET
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name ISO8859-9E
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-9E
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-9E:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-9E:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-9e.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-9E:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-9E:GR
+ }
+ font {
+ primary ISO8859-9E:GR
+ }
+}
+END XLC_FONTSET
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ISO8859-9E
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-9E
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-9E:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-9E:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ja.JIS/Compose.pre b/libX11/nls/ja.JIS/Compose.pre
index b1f8e55a0..7473fb859 100644
--- a/libX11/nls/ja.JIS/Compose.pre
+++ b/libX11/nls/ja.JIS/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ja.JIS Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ja.JIS Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/ja.JIS/XI18N_OBJS b/libX11/nls/ja.JIS/XI18N_OBJS
index 0cf97ee81..b709c8210 100644
--- a/libX11/nls/ja.JIS/XI18N_OBJS
+++ b/libX11/nls/ja.JIS/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja.JIS locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja.JIS locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja.JIS/XLC_LOCALE.pre b/libX11/nls/ja.JIS/XLC_LOCALE.pre
index 4b771aca2..8fc4d056c 100644
--- a/libX11/nls/ja.JIS/XLC_LOCALE.pre
+++ b/libX11/nls/ja.JIS/XLC_LOCALE.pre
@@ -1,124 +1,124 @@
-XCOMM
-XCOMM XLocale Database Sample for ja_JP.jis
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- substitute JISX0201.1976-0:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- substitute JISX0208.1990-0:GL
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- substitute JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (Supplementary Kanji)
-XCOMM fs3 {
-XCOMM charset {
-XCOMM name JISX0212.1990-0:GL
-XCOMM }
-XCOMM font {
-XCOMM primary JISX0212.1990-0:GL
-XCOMM }
-XCOMM }
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ja.jis
-mb_cur_max 5
-state_depend_encoding True
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- mb_encoding <LSL> \x1b \x28 \x4a;\
- <LSL> \x1b \x28 \x42
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GL
- length 2
- mb_encoding <LSL> \x1b \x24 \x42;\
- <LSL> \x1b \x24 \x40
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GL
- length 1
- mb_encoding <LSL> \x1b \x28 \x49
-#if WCHAR32
- wc_encoding \x10000000
-#else
- wc_encoding \x00000080
-#endif
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs3 class
-XCOMM cs3 {
-XCOMM side GL
-XCOMM length 2
-XCOMM mb_encoding <LSL> \x1b \x24 \x28 \x44
-XCOMM #if WCHAR32
-XCOMM wc_encoding \x20000000
-XCOMM #else
-XCOMM wc_encoding \x00008000
-XCOMM #endif
-XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
-XCOMM }
-
-END XLC_XLOCALE
+XCOMM
+XCOMM XLocale Database Sample for ja_JP.jis
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ substitute JISX0201.1976-0:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ substitute JISX0208.1990-0:GL
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ substitute JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (Supplementary Kanji)
+XCOMM fs3 {
+XCOMM charset {
+XCOMM name JISX0212.1990-0:GL
+XCOMM }
+XCOMM font {
+XCOMM primary JISX0212.1990-0:GL
+XCOMM }
+XCOMM }
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ja.jis
+mb_cur_max 5
+state_depend_encoding True
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ mb_encoding <LSL> \x1b \x28 \x4a;\
+ <LSL> \x1b \x28 \x42
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GL
+ length 2
+ mb_encoding <LSL> \x1b \x24 \x42;\
+ <LSL> \x1b \x24 \x40
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GL
+ length 1
+ mb_encoding <LSL> \x1b \x28 \x49
+#if WCHAR32
+ wc_encoding \x10000000
+#else
+ wc_encoding \x00000080
+#endif
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs3 class
+XCOMM cs3 {
+XCOMM side GL
+XCOMM length 2
+XCOMM mb_encoding <LSL> \x1b \x24 \x28 \x44
+XCOMM #if WCHAR32
+XCOMM wc_encoding \x20000000
+XCOMM #else
+XCOMM wc_encoding \x00008000
+XCOMM #endif
+XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
+XCOMM }
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ja.S90/XI18N_OBJS b/libX11/nls/ja.S90/XI18N_OBJS
index d8f0fdd99..8f5a14992 100644
--- a/libX11/nls/ja.S90/XI18N_OBJS
+++ b/libX11/nls/ja.S90/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja.S90 locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja.S90 locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja.S90/XLC_LOCALE.pre b/libX11/nls/ja.S90/XLC_LOCALE.pre
index cb4e49d13..d373187ae 100644
--- a/libX11/nls/ja.S90/XLC_LOCALE.pre
+++ b/libX11/nls/ja.S90/XLC_LOCALE.pre
@@ -1,150 +1,150 @@
-XCOMM Copyright 1995 by FUJITSU LIMITED
-XCOMM This is source code modified by FUJITSU LIMITED under the Joint
-XCOMM Development Agreement for the CDEnext PST.
-XCOMM This is unpublished proprietary source code of FUJITSU LIMITED
-XCOMM
-XCOMM NLS-DB for ja_JP.S90
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name u90x03.1991-0
- side GL
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x28\x32
- encoding_name fujitsu.U90X03
-}
-
-csd1 {
- charset_name u90x03.1991-0
- side GR
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x2f\x32
- encoding_name fujitsu.U90X03
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name JISX0201.1976-0:GL
- }
- font {
- primary JISX0201.1976-0:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- udc_area \x7521,\x7e7e
- }
- font {
- primary fujitsu.u90x01.1991-0:GL,[\x2121,\x747e];\
- fujitsu.u90x03.1991-0:GL,[\x7521,\x7e7e]->\x6521
- substitute u90x01.1991-0:GL;\
- JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR
- vertical_map u90x01.1991-0.2:GL,\
- [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
- [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
- [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
- [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
- [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
- [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
- [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
- [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
- [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
- [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
- [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
- [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
- [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (JEF Kanji + User Defined Character)
-fs3 {
- charset {
- name u90x03.1991-0:GR; u90x03.1991-0:GL
- udc_area \x6521,\x787e
- }
- font {
- primary fujitsu.u90x03.1991-0:GL
- substitute u90x03.1991-0:GL;\
- JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-XCOMM encoding_name ja.euc
-encoding_name ja_JP.S90
-mb_cur_max 3
-state_depend_encoding False
-
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
- wc_encoding \x30000000
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
- mb_encoding <SS> \x8e
- wc_encoding \x10000000
- ct_encoding JISX0201.1976-0:GR
-}
-XCOMM cs3 class
-cs3 {
- side GR
- length 2
- mb_encoding <SS> \x8f
- wc_encoding \x20000000
- ct_encoding u90x03.1991-0:GR; u90x03.1991-0:GL
-}
-END XLC_XLOCALE
+XCOMM Copyright 1995 by FUJITSU LIMITED
+XCOMM This is source code modified by FUJITSU LIMITED under the Joint
+XCOMM Development Agreement for the CDEnext PST.
+XCOMM This is unpublished proprietary source code of FUJITSU LIMITED
+XCOMM
+XCOMM NLS-DB for ja_JP.S90
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name u90x03.1991-0
+ side GL
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x28\x32
+ encoding_name fujitsu.U90X03
+}
+
+csd1 {
+ charset_name u90x03.1991-0
+ side GR
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x2f\x32
+ encoding_name fujitsu.U90X03
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name JISX0201.1976-0:GL
+ }
+ font {
+ primary JISX0201.1976-0:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ udc_area \x7521,\x7e7e
+ }
+ font {
+ primary fujitsu.u90x01.1991-0:GL,[\x2121,\x747e];\
+ fujitsu.u90x03.1991-0:GL,[\x7521,\x7e7e]->\x6521
+ substitute u90x01.1991-0:GL;\
+ JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR
+ vertical_map u90x01.1991-0.2:GL,\
+ [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
+ [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
+ [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
+ [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
+ [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
+ [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
+ [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
+ [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
+ [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
+ [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
+ [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
+ [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
+ [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (JEF Kanji + User Defined Character)
+fs3 {
+ charset {
+ name u90x03.1991-0:GR; u90x03.1991-0:GL
+ udc_area \x6521,\x787e
+ }
+ font {
+ primary fujitsu.u90x03.1991-0:GL
+ substitute u90x03.1991-0:GL;\
+ JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+XCOMM encoding_name ja.euc
+encoding_name ja_JP.S90
+mb_cur_max 3
+state_depend_encoding False
+
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+ wc_encoding \x30000000
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+ mb_encoding <SS> \x8e
+ wc_encoding \x10000000
+ ct_encoding JISX0201.1976-0:GR
+}
+XCOMM cs3 class
+cs3 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8f
+ wc_encoding \x20000000
+ ct_encoding u90x03.1991-0:GR; u90x03.1991-0:GL
+}
+END XLC_XLOCALE
diff --git a/libX11/nls/ja.SJIS/Compose.pre b/libX11/nls/ja.SJIS/Compose.pre
index a6c75ef29..3b9bc8618 100644
--- a/libX11/nls/ja.SJIS/Compose.pre
+++ b/libX11/nls/ja.SJIS/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ja.SJIS Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ja.SJIS Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/ja.SJIS/XI18N_OBJS b/libX11/nls/ja.SJIS/XI18N_OBJS
index 29dffff7e..3972441c4 100644
--- a/libX11/nls/ja.SJIS/XI18N_OBJS
+++ b/libX11/nls/ja.SJIS/XI18N_OBJS
@@ -1,10 +1,10 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja locale
-#
-XLC ja_JP.PCK/xlibi18n_PCK _XlcGenericLoader # XLC_open
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XIM common/ximlocal _XimpLocalOpenIM # XIM_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja locale
+#
+XLC ja_JP.PCK/xlibi18n_PCK _XlcGenericLoader # XLC_open
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximp40 _Ximp_OpenIM # XIM_open
+XIM common/ximlocal _XimpLocalOpenIM # XIM_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja.SJIS/XLC_LOCALE.pre b/libX11/nls/ja.SJIS/XLC_LOCALE.pre
index 671a98535..8ba3fb1f4 100644
--- a/libX11/nls/ja.SJIS/XLC_LOCALE.pre
+++ b/libX11/nls/ja.SJIS/XLC_LOCALE.pre
@@ -1,384 +1,384 @@
-XCOMM
-XCOMM XLocale Database Sample for ja_JP.sjis
-XCOMM
-
-#ifndef __uxp__
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- substitute JISX0201.1976-0:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- substitute JISX0208.1990-0:GL
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- substitute JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (Supplementary Kanji)
-XCOMM fs3 {
-XCOMM charset {
-XCOMM name JISX0212.1990-0:GL
-XCOMM }
-XCOMM font {
-XCOMM primary JISX0212.1990-0:GL
-XCOMM }
-XCOMM }
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ja.sjis
-mb_cur_max 2
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \x81,\x9f;\xe0,\xef
- byte2 \x40,\x7e;\x80,\xfc
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
- mb_conversion \
- [\x8140,\x817e]->\x2121,[\x8180,\x819e]->\x2160,[\x819f,\x81fc]->\x2221,\
- [\x8240,\x827e]->\x2321,[\x8280,\x829e]->\x2360,[\x829f,\x82fc]->\x2421,\
- [\x8340,\x837e]->\x2521,[\x8380,\x839e]->\x2560,[\x839f,\x83fc]->\x2621,\
- [\x8440,\x847e]->\x2721,[\x8480,\x849e]->\x2760,[\x849f,\x84fc]->\x2821,\
- [\x8540,\x857e]->\x2921,[\x8580,\x859e]->\x2960,[\x859f,\x85fc]->\x2a21,\
- [\x8640,\x867e]->\x2b21,[\x8680,\x869e]->\x2b60,[\x869f,\x86fc]->\x2c21,\
- [\x8740,\x877e]->\x2d21,[\x8780,\x879e]->\x2d60,[\x879f,\x87fc]->\x2e21,\
- [\x8840,\x887e]->\x2f21,[\x8880,\x889e]->\x2f60,[\x889f,\x88fc]->\x3021,\
- [\x8940,\x897e]->\x3121,[\x8980,\x899e]->\x3160,[\x899f,\x89fc]->\x3221,\
- [\x8a40,\x8a7e]->\x3321,[\x8a80,\x8a9e]->\x3360,[\x8a9f,\x8afc]->\x3421,\
- [\x8b40,\x8b7e]->\x3521,[\x8b80,\x8b9e]->\x3560,[\x8b9f,\x8bfc]->\x3621,\
- [\x8c40,\x8c7e]->\x3721,[\x8c80,\x8c9e]->\x3760,[\x8c9f,\x8cfc]->\x3821,\
- [\x8d40,\x8d7e]->\x3921,[\x8d80,\x8d9e]->\x3960,[\x8d9f,\x8dfc]->\x3a21,\
- [\x8e40,\x8e7e]->\x3b21,[\x8e80,\x8e9e]->\x3b60,[\x8e9f,\x8efc]->\x3c21,\
- [\x8f40,\x8f7e]->\x3d21,[\x8f80,\x8f9e]->\x3d60,[\x8f9f,\x8ffc]->\x3e21,\
- [\x9040,\x907e]->\x3f21,[\x9080,\x909e]->\x3f60,[\x909f,\x90fc]->\x4021,\
- [\x9140,\x917e]->\x4121,[\x9180,\x919e]->\x4160,[\x919f,\x91fc]->\x4221,\
- [\x9240,\x927e]->\x4321,[\x9280,\x929e]->\x4360,[\x929f,\x92fc]->\x4421,\
- [\x9340,\x937e]->\x4521,[\x9380,\x939e]->\x4560,[\x939f,\x93fc]->\x4621,\
- [\x9440,\x947e]->\x4721,[\x9480,\x949e]->\x4760,[\x949f,\x94fc]->\x4821,\
- [\x9540,\x957e]->\x4921,[\x9580,\x959e]->\x4960,[\x959f,\x95fc]->\x4a21,\
- [\x9640,\x967e]->\x4b21,[\x9680,\x969e]->\x4b60,[\x969f,\x96fc]->\x4c21,\
- [\x9740,\x977e]->\x4d21,[\x9780,\x979e]->\x4d60,[\x979f,\x97fc]->\x4e21,\
- [\x9840,\x987e]->\x4f21,[\x9880,\x989e]->\x4f60,[\x989f,\x98fc]->\x5021,\
- [\x9940,\x997e]->\x5121,[\x9980,\x999e]->\x5160,[\x999f,\x99fc]->\x5221,\
- [\x9a40,\x9a7e]->\x5321,[\x9a80,\x9a9e]->\x5360,[\x9a9f,\x9afc]->\x5421,\
- [\x9b40,\x9b7e]->\x5521,[\x9b80,\x9b9e]->\x5560,[\x9b9f,\x9bfc]->\x5621,\
- [\x9c40,\x9c7e]->\x5721,[\x9c80,\x9c9e]->\x5760,[\x9c9f,\x9cfc]->\x5821,\
- [\x9d40,\x9d7e]->\x5921,[\x9d80,\x9d9e]->\x5960,[\x9d9f,\x9dfc]->\x5a21,\
- [\x9e40,\x9e7e]->\x5b21,[\x9e80,\x9e9e]->\x5b60,[\x9e9f,\x9efc]->\x5c21,\
- [\x9f40,\x9f7e]->\x5d21,[\x9f80,\x9f9e]->\x5d60,[\x9f9f,\x9ffc]->\x5e21,\
- [\xe040,\xe07e]->\x5f21,[\xe080,\xe09e]->\x5f60,[\xe09f,\xe0fc]->\x6021,\
- [\xe140,\xe17e]->\x6121,[\xe180,\xe19e]->\x6160,[\xe19f,\xe1fc]->\x6221,\
- [\xe240,\xe27e]->\x6321,[\xe280,\xe29e]->\x6360,[\xe29f,\xe2fc]->\x6421,\
- [\xe340,\xe37e]->\x6521,[\xe380,\xe39e]->\x6560,[\xe39f,\xe3fc]->\x6621,\
- [\xe440,\xe47e]->\x6721,[\xe480,\xe49e]->\x6760,[\xe49f,\xe4fc]->\x6821,\
- [\xe540,\xe57e]->\x6921,[\xe580,\xe59e]->\x6960,[\xe59f,\xe5fc]->\x6a21,\
- [\xe640,\xe67e]->\x6b21,[\xe680,\xe69e]->\x6b60,[\xe69f,\xe6fc]->\x6c21,\
- [\xe740,\xe77e]->\x6d21,[\xe780,\xe79e]->\x6d60,[\xe79f,\xe7fc]->\x6e21,\
- [\xe840,\xe87e]->\x6f21,[\xe880,\xe89e]->\x6f60,[\xe89f,\xe8fc]->\x7021,\
- [\xe940,\xe97e]->\x7121,[\xe980,\xe99e]->\x7160,[\xe99f,\xe9fc]->\x7221,\
- [\xea40,\xea7e]->\x7321,[\xea80,\xea9e]->\x7360,[\xea9f,\xeafc]->\x7421,\
- [\xeb40,\xeb7e]->\x7521,[\xeb80,\xeb9e]->\x7560,[\xeb9f,\xebfc]->\x7621,\
- [\xec40,\xec7e]->\x7721,[\xec80,\xec9e]->\x7760,[\xec9f,\xecfc]->\x7821,\
- [\xed40,\xed7e]->\x7921,[\xed80,\xed9e]->\x7960,[\xed9f,\xedfc]->\x7a21,\
- [\xee40,\xee7e]->\x7b21,[\xee80,\xee9e]->\x7b60,[\xee9f,\xeefc]->\x7c21,\
- [\xef40,\xef7e]->\x7d21,[\xef80,\xef9e]->\x7d60,[\xef9f,\xeffc]->\x7e21
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
-#if WCHAR32
- wc_encoding \x10000000
-#else
- wc_encoding \x00000080
-#endif
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs3 class
-XCOMM cs3 {
-XCOMM side GR
-XCOMM length 2
-XCOMM #if WCHAR32
-XCOMM wc_encoding \x20000000
-XCOMM #else
-XCOMM wc_encoding \x00008000
-XCOMM #endif
-XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
-XCOMM }
-
-END XLC_XLOCALE
-
-#else /* __uxp__ */
-
-XCOMM For UXP/DS plat form
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name u90x03.1991-0
- side GL
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x28\x32
- encoding_name fujitsu.U90X03
-}
-
-csd1 {
- charset_name u90x03.1991-0
- side GR
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x2f\x32
- encoding_name fujitsu.U90X03
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name JISX0201.1976-0:GL
- }
- font {
- primary JISX0201.1976-0:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary fujitsu.u90x01.1991-0:GL
- substitute u90x01.1991-0:GL;\
- JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR
- vertical_map u90x01.1991-0.2:GL,\
- [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
- [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
- [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
- [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
- [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
- [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
- [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
- [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
- [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
- [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
- [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
- [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
- [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (Supplementary Kanji)
-fs3 {
- charset {
- name u90x03.1991-0:GL; u90x03.1991-0:GR
- udc_area \x6521,\x787e
- }
- font {
- primary fujitsu.u90x03.1991-0:GL
- substitute u90x03.1991-0:GL;\
- JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ja.sjis
-mb_cur_max 2
-state_depend_encoding False
-
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \x81,\x9f;\xe0,\xef
- byte2 \x40,\x7e;\x80,\xfc
-
- wc_encoding \x30000000
-
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
- mb_conversion \
- [\x8140,\x817e]->\x2121,[\x8180,\x819e]->\x2160,[\x819f,\x81fc]->\x2221,\
- [\x8240,\x827e]->\x2321,[\x8280,\x829e]->\x2360,[\x829f,\x82fc]->\x2421,\
- [\x8340,\x837e]->\x2521,[\x8380,\x839e]->\x2560,[\x839f,\x83fc]->\x2621,\
- [\x8440,\x847e]->\x2721,[\x8480,\x849e]->\x2760,[\x849f,\x84fc]->\x2821,\
- [\x8540,\x857e]->\x2921,[\x8580,\x859e]->\x2960,[\x859f,\x85fc]->\x2a21,\
- [\x8640,\x867e]->\x2b21,[\x8680,\x869e]->\x2b60,[\x869f,\x86fc]->\x2c21,\
- [\x8740,\x877e]->\x2d21,[\x8780,\x879e]->\x2d60,[\x879f,\x87fc]->\x2e21,\
- [\x8840,\x887e]->\x2f21,[\x8880,\x889e]->\x2f60,[\x889f,\x88fc]->\x3021,\
- [\x8940,\x897e]->\x3121,[\x8980,\x899e]->\x3160,[\x899f,\x89fc]->\x3221,\
- [\x8a40,\x8a7e]->\x3321,[\x8a80,\x8a9e]->\x3360,[\x8a9f,\x8afc]->\x3421,\
- [\x8b40,\x8b7e]->\x3521,[\x8b80,\x8b9e]->\x3560,[\x8b9f,\x8bfc]->\x3621,\
- [\x8c40,\x8c7e]->\x3721,[\x8c80,\x8c9e]->\x3760,[\x8c9f,\x8cfc]->\x3821,\
- [\x8d40,\x8d7e]->\x3921,[\x8d80,\x8d9e]->\x3960,[\x8d9f,\x8dfc]->\x3a21,\
- [\x8e40,\x8e7e]->\x3b21,[\x8e80,\x8e9e]->\x3b60,[\x8e9f,\x8efc]->\x3c21,\
- [\x8f40,\x8f7e]->\x3d21,[\x8f80,\x8f9e]->\x3d60,[\x8f9f,\x8ffc]->\x3e21,\
- [\x9040,\x907e]->\x3f21,[\x9080,\x909e]->\x3f60,[\x909f,\x90fc]->\x4021,\
- [\x9140,\x917e]->\x4121,[\x9180,\x919e]->\x4160,[\x919f,\x91fc]->\x4221,\
- [\x9240,\x927e]->\x4321,[\x9280,\x929e]->\x4360,[\x929f,\x92fc]->\x4421,\
- [\x9340,\x937e]->\x4521,[\x9380,\x939e]->\x4560,[\x939f,\x93fc]->\x4621,\
- [\x9440,\x947e]->\x4721,[\x9480,\x949e]->\x4760,[\x949f,\x94fc]->\x4821,\
- [\x9540,\x957e]->\x4921,[\x9580,\x959e]->\x4960,[\x959f,\x95fc]->\x4a21,\
- [\x9640,\x967e]->\x4b21,[\x9680,\x969e]->\x4b60,[\x969f,\x96fc]->\x4c21,\
- [\x9740,\x977e]->\x4d21,[\x9780,\x979e]->\x4d60,[\x979f,\x97fc]->\x4e21,\
- [\x9840,\x987e]->\x4f21,[\x9880,\x989e]->\x4f60,[\x989f,\x98fc]->\x5021,\
- [\x9940,\x997e]->\x5121,[\x9980,\x999e]->\x5160,[\x999f,\x99fc]->\x5221,\
- [\x9a40,\x9a7e]->\x5321,[\x9a80,\x9a9e]->\x5360,[\x9a9f,\x9afc]->\x5421,\
- [\x9b40,\x9b7e]->\x5521,[\x9b80,\x9b9e]->\x5560,[\x9b9f,\x9bfc]->\x5621,\
- [\x9c40,\x9c7e]->\x5721,[\x9c80,\x9c9e]->\x5760,[\x9c9f,\x9cfc]->\x5821,\
- [\x9d40,\x9d7e]->\x5921,[\x9d80,\x9d9e]->\x5960,[\x9d9f,\x9dfc]->\x5a21,\
- [\x9e40,\x9e7e]->\x5b21,[\x9e80,\x9e9e]->\x5b60,[\x9e9f,\x9efc]->\x5c21,\
- [\x9f40,\x9f7e]->\x5d21,[\x9f80,\x9f9e]->\x5d60,[\x9f9f,\x9ffc]->\x5e21,\
- [\xe040,\xe07e]->\x5f21,[\xe080,\xe09e]->\x5f60,[\xe09f,\xe0fc]->\x6021,\
- [\xe140,\xe17e]->\x6121,[\xe180,\xe19e]->\x6160,[\xe19f,\xe1fc]->\x6221,\
- [\xe240,\xe27e]->\x6321,[\xe280,\xe29e]->\x6360,[\xe29f,\xe2fc]->\x6421,\
- [\xe340,\xe37e]->\x6521,[\xe380,\xe39e]->\x6560,[\xe39f,\xe3fc]->\x6621,\
- [\xe440,\xe47e]->\x6721,[\xe480,\xe49e]->\x6760,[\xe49f,\xe4fc]->\x6821,\
- [\xe540,\xe57e]->\x6921,[\xe580,\xe59e]->\x6960,[\xe59f,\xe5fc]->\x6a21,\
- [\xe640,\xe67e]->\x6b21,[\xe680,\xe69e]->\x6b60,[\xe69f,\xe6fc]->\x6c21,\
- [\xe740,\xe77e]->\x6d21,[\xe780,\xe79e]->\x6d60,[\xe79f,\xe7fc]->\x6e21,\
- [\xe840,\xe87e]->\x6f21,[\xe880,\xe89e]->\x6f60,[\xe89f,\xe8fc]->\x7021,\
- [\xe940,\xe97e]->\x7121,[\xe980,\xe99e]->\x7160,[\xe99f,\xe9fc]->\x7221,\
- [\xea40,\xea7e]->\x7321,[\xea80,\xea9e]->\x7360,[\xea9f,\xeafc]->\x7421,\
- [\xeb40,\xeb7e]->\x7521,[\xeb80,\xeb9e]->\x7560,[\xeb9f,\xebfc]->\x7621,\
- [\xec40,\xec7e]->\x7721,[\xec80,\xec9e]->\x7760,[\xec9f,\xecfc]->\x7821,\
- [\xed40,\xed7e]->\x7921,[\xed80,\xed9e]->\x7960,[\xed9f,\xedfc]->\x7a21,\
- [\xee40,\xee7e]->\x7b21,[\xee80,\xee9e]->\x7b60,[\xee9f,\xeefc]->\x7c21,\
- [\xef40,\xef7e]->\x7d21,[\xef80,\xef9e]->\x7d60,[\xef9f,\xeffc]->\x7e21
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
- wc_encoding \x10000000
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- length 2
- byte1 \xf0,\xfc
- byte2 \x40,\x7e;\x80,\xfc
- wc_encoding \x20000000
- ct_encoding u90x03.1991-0:GL; u90x03.1991-0:GR
- mb_conversion \
- [\xf040,\xf07e]->\x6521,[\xf080,\xf09e]->\x6560,[\xf09f,\xf0fc]->\x6621,\
- [\xf140,\xf17e]->\x6721,[\xf180,\xf19e]->\x6760,[\xf19f,\xf1fc]->\x6821,\
- [\xf240,\xf27e]->\x6921,[\xf280,\xf29e]->\x6960,[\xf29f,\xf2fc]->\x6a21,\
- [\xf340,\xf37e]->\x6b21,[\xf380,\xf39e]->\x6b60,[\xf39f,\xf3fc]->\x6c21,\
- [\xf440,\xf47e]->\x6d21,[\xf480,\xf49e]->\x6d60,[\xf49f,\xf4fc]->\x6e21,\
- [\xf540,\xf57e]->\x6f21,[\xf580,\xf59e]->\x6f60,[\xf59f,\xf5fc]->\x7021,\
- [\xf640,\xf67e]->\x7121,[\xf680,\xf69e]->\x7160,[\xf69f,\xf6fc]->\x7221,\
- [\xf740,\xf77e]->\x7321,[\xf780,\xf79e]->\x7360,[\xf79f,\xf7fc]->\x7421,\
- [\xf840,\xf87e]->\x7521,[\xf880,\xf89e]->\x7560,[\xf89f,\xf8fc]->\x7621,\
- [\xf940,\xf97e]->\x7721,[\xf980,\xf99e]->\x7760,[\xf99f,\xf9fc]->\x7821,\
- [\xfa40,\xfa7e]->\x7921,[\xfa80,\xfa9e]->\x7960,[\xfa9f,\xfafc]->\x7a21,\
- [\xfb40,\xfb7e]->\x7b21,[\xfb80,\xfb9e]->\x7b60,[\xfb9f,\xfbfc]->\x7c21,\
- [\xfc40,\xfc7e]->\x7d21,[\xfc80,\xfc9e]->\x7d60,[\xfc9f,\xfcfc]->\x7e21
-}
-
-END XLC_XLOCALE
-
-#endif /* __uxp__ */
+XCOMM
+XCOMM XLocale Database Sample for ja_JP.sjis
+XCOMM
+
+#ifndef __uxp__
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ substitute JISX0201.1976-0:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ substitute JISX0208.1990-0:GL
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ substitute JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (Supplementary Kanji)
+XCOMM fs3 {
+XCOMM charset {
+XCOMM name JISX0212.1990-0:GL
+XCOMM }
+XCOMM font {
+XCOMM primary JISX0212.1990-0:GL
+XCOMM }
+XCOMM }
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ja.sjis
+mb_cur_max 2
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \x81,\x9f;\xe0,\xef
+ byte2 \x40,\x7e;\x80,\xfc
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+ mb_conversion \
+ [\x8140,\x817e]->\x2121,[\x8180,\x819e]->\x2160,[\x819f,\x81fc]->\x2221,\
+ [\x8240,\x827e]->\x2321,[\x8280,\x829e]->\x2360,[\x829f,\x82fc]->\x2421,\
+ [\x8340,\x837e]->\x2521,[\x8380,\x839e]->\x2560,[\x839f,\x83fc]->\x2621,\
+ [\x8440,\x847e]->\x2721,[\x8480,\x849e]->\x2760,[\x849f,\x84fc]->\x2821,\
+ [\x8540,\x857e]->\x2921,[\x8580,\x859e]->\x2960,[\x859f,\x85fc]->\x2a21,\
+ [\x8640,\x867e]->\x2b21,[\x8680,\x869e]->\x2b60,[\x869f,\x86fc]->\x2c21,\
+ [\x8740,\x877e]->\x2d21,[\x8780,\x879e]->\x2d60,[\x879f,\x87fc]->\x2e21,\
+ [\x8840,\x887e]->\x2f21,[\x8880,\x889e]->\x2f60,[\x889f,\x88fc]->\x3021,\
+ [\x8940,\x897e]->\x3121,[\x8980,\x899e]->\x3160,[\x899f,\x89fc]->\x3221,\
+ [\x8a40,\x8a7e]->\x3321,[\x8a80,\x8a9e]->\x3360,[\x8a9f,\x8afc]->\x3421,\
+ [\x8b40,\x8b7e]->\x3521,[\x8b80,\x8b9e]->\x3560,[\x8b9f,\x8bfc]->\x3621,\
+ [\x8c40,\x8c7e]->\x3721,[\x8c80,\x8c9e]->\x3760,[\x8c9f,\x8cfc]->\x3821,\
+ [\x8d40,\x8d7e]->\x3921,[\x8d80,\x8d9e]->\x3960,[\x8d9f,\x8dfc]->\x3a21,\
+ [\x8e40,\x8e7e]->\x3b21,[\x8e80,\x8e9e]->\x3b60,[\x8e9f,\x8efc]->\x3c21,\
+ [\x8f40,\x8f7e]->\x3d21,[\x8f80,\x8f9e]->\x3d60,[\x8f9f,\x8ffc]->\x3e21,\
+ [\x9040,\x907e]->\x3f21,[\x9080,\x909e]->\x3f60,[\x909f,\x90fc]->\x4021,\
+ [\x9140,\x917e]->\x4121,[\x9180,\x919e]->\x4160,[\x919f,\x91fc]->\x4221,\
+ [\x9240,\x927e]->\x4321,[\x9280,\x929e]->\x4360,[\x929f,\x92fc]->\x4421,\
+ [\x9340,\x937e]->\x4521,[\x9380,\x939e]->\x4560,[\x939f,\x93fc]->\x4621,\
+ [\x9440,\x947e]->\x4721,[\x9480,\x949e]->\x4760,[\x949f,\x94fc]->\x4821,\
+ [\x9540,\x957e]->\x4921,[\x9580,\x959e]->\x4960,[\x959f,\x95fc]->\x4a21,\
+ [\x9640,\x967e]->\x4b21,[\x9680,\x969e]->\x4b60,[\x969f,\x96fc]->\x4c21,\
+ [\x9740,\x977e]->\x4d21,[\x9780,\x979e]->\x4d60,[\x979f,\x97fc]->\x4e21,\
+ [\x9840,\x987e]->\x4f21,[\x9880,\x989e]->\x4f60,[\x989f,\x98fc]->\x5021,\
+ [\x9940,\x997e]->\x5121,[\x9980,\x999e]->\x5160,[\x999f,\x99fc]->\x5221,\
+ [\x9a40,\x9a7e]->\x5321,[\x9a80,\x9a9e]->\x5360,[\x9a9f,\x9afc]->\x5421,\
+ [\x9b40,\x9b7e]->\x5521,[\x9b80,\x9b9e]->\x5560,[\x9b9f,\x9bfc]->\x5621,\
+ [\x9c40,\x9c7e]->\x5721,[\x9c80,\x9c9e]->\x5760,[\x9c9f,\x9cfc]->\x5821,\
+ [\x9d40,\x9d7e]->\x5921,[\x9d80,\x9d9e]->\x5960,[\x9d9f,\x9dfc]->\x5a21,\
+ [\x9e40,\x9e7e]->\x5b21,[\x9e80,\x9e9e]->\x5b60,[\x9e9f,\x9efc]->\x5c21,\
+ [\x9f40,\x9f7e]->\x5d21,[\x9f80,\x9f9e]->\x5d60,[\x9f9f,\x9ffc]->\x5e21,\
+ [\xe040,\xe07e]->\x5f21,[\xe080,\xe09e]->\x5f60,[\xe09f,\xe0fc]->\x6021,\
+ [\xe140,\xe17e]->\x6121,[\xe180,\xe19e]->\x6160,[\xe19f,\xe1fc]->\x6221,\
+ [\xe240,\xe27e]->\x6321,[\xe280,\xe29e]->\x6360,[\xe29f,\xe2fc]->\x6421,\
+ [\xe340,\xe37e]->\x6521,[\xe380,\xe39e]->\x6560,[\xe39f,\xe3fc]->\x6621,\
+ [\xe440,\xe47e]->\x6721,[\xe480,\xe49e]->\x6760,[\xe49f,\xe4fc]->\x6821,\
+ [\xe540,\xe57e]->\x6921,[\xe580,\xe59e]->\x6960,[\xe59f,\xe5fc]->\x6a21,\
+ [\xe640,\xe67e]->\x6b21,[\xe680,\xe69e]->\x6b60,[\xe69f,\xe6fc]->\x6c21,\
+ [\xe740,\xe77e]->\x6d21,[\xe780,\xe79e]->\x6d60,[\xe79f,\xe7fc]->\x6e21,\
+ [\xe840,\xe87e]->\x6f21,[\xe880,\xe89e]->\x6f60,[\xe89f,\xe8fc]->\x7021,\
+ [\xe940,\xe97e]->\x7121,[\xe980,\xe99e]->\x7160,[\xe99f,\xe9fc]->\x7221,\
+ [\xea40,\xea7e]->\x7321,[\xea80,\xea9e]->\x7360,[\xea9f,\xeafc]->\x7421,\
+ [\xeb40,\xeb7e]->\x7521,[\xeb80,\xeb9e]->\x7560,[\xeb9f,\xebfc]->\x7621,\
+ [\xec40,\xec7e]->\x7721,[\xec80,\xec9e]->\x7760,[\xec9f,\xecfc]->\x7821,\
+ [\xed40,\xed7e]->\x7921,[\xed80,\xed9e]->\x7960,[\xed9f,\xedfc]->\x7a21,\
+ [\xee40,\xee7e]->\x7b21,[\xee80,\xee9e]->\x7b60,[\xee9f,\xeefc]->\x7c21,\
+ [\xef40,\xef7e]->\x7d21,[\xef80,\xef9e]->\x7d60,[\xef9f,\xeffc]->\x7e21
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+#if WCHAR32
+ wc_encoding \x10000000
+#else
+ wc_encoding \x00000080
+#endif
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs3 class
+XCOMM cs3 {
+XCOMM side GR
+XCOMM length 2
+XCOMM #if WCHAR32
+XCOMM wc_encoding \x20000000
+XCOMM #else
+XCOMM wc_encoding \x00008000
+XCOMM #endif
+XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
+XCOMM }
+
+END XLC_XLOCALE
+
+#else /* __uxp__ */
+
+XCOMM For UXP/DS plat form
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name u90x03.1991-0
+ side GL
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x28\x32
+ encoding_name fujitsu.U90X03
+}
+
+csd1 {
+ charset_name u90x03.1991-0
+ side GR
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x2f\x32
+ encoding_name fujitsu.U90X03
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name JISX0201.1976-0:GL
+ }
+ font {
+ primary JISX0201.1976-0:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary fujitsu.u90x01.1991-0:GL
+ substitute u90x01.1991-0:GL;\
+ JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR
+ vertical_map u90x01.1991-0.2:GL,\
+ [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
+ [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
+ [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
+ [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
+ [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
+ [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
+ [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
+ [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
+ [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
+ [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
+ [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
+ [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
+ [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (Supplementary Kanji)
+fs3 {
+ charset {
+ name u90x03.1991-0:GL; u90x03.1991-0:GR
+ udc_area \x6521,\x787e
+ }
+ font {
+ primary fujitsu.u90x03.1991-0:GL
+ substitute u90x03.1991-0:GL;\
+ JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ja.sjis
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \x81,\x9f;\xe0,\xef
+ byte2 \x40,\x7e;\x80,\xfc
+
+ wc_encoding \x30000000
+
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+ mb_conversion \
+ [\x8140,\x817e]->\x2121,[\x8180,\x819e]->\x2160,[\x819f,\x81fc]->\x2221,\
+ [\x8240,\x827e]->\x2321,[\x8280,\x829e]->\x2360,[\x829f,\x82fc]->\x2421,\
+ [\x8340,\x837e]->\x2521,[\x8380,\x839e]->\x2560,[\x839f,\x83fc]->\x2621,\
+ [\x8440,\x847e]->\x2721,[\x8480,\x849e]->\x2760,[\x849f,\x84fc]->\x2821,\
+ [\x8540,\x857e]->\x2921,[\x8580,\x859e]->\x2960,[\x859f,\x85fc]->\x2a21,\
+ [\x8640,\x867e]->\x2b21,[\x8680,\x869e]->\x2b60,[\x869f,\x86fc]->\x2c21,\
+ [\x8740,\x877e]->\x2d21,[\x8780,\x879e]->\x2d60,[\x879f,\x87fc]->\x2e21,\
+ [\x8840,\x887e]->\x2f21,[\x8880,\x889e]->\x2f60,[\x889f,\x88fc]->\x3021,\
+ [\x8940,\x897e]->\x3121,[\x8980,\x899e]->\x3160,[\x899f,\x89fc]->\x3221,\
+ [\x8a40,\x8a7e]->\x3321,[\x8a80,\x8a9e]->\x3360,[\x8a9f,\x8afc]->\x3421,\
+ [\x8b40,\x8b7e]->\x3521,[\x8b80,\x8b9e]->\x3560,[\x8b9f,\x8bfc]->\x3621,\
+ [\x8c40,\x8c7e]->\x3721,[\x8c80,\x8c9e]->\x3760,[\x8c9f,\x8cfc]->\x3821,\
+ [\x8d40,\x8d7e]->\x3921,[\x8d80,\x8d9e]->\x3960,[\x8d9f,\x8dfc]->\x3a21,\
+ [\x8e40,\x8e7e]->\x3b21,[\x8e80,\x8e9e]->\x3b60,[\x8e9f,\x8efc]->\x3c21,\
+ [\x8f40,\x8f7e]->\x3d21,[\x8f80,\x8f9e]->\x3d60,[\x8f9f,\x8ffc]->\x3e21,\
+ [\x9040,\x907e]->\x3f21,[\x9080,\x909e]->\x3f60,[\x909f,\x90fc]->\x4021,\
+ [\x9140,\x917e]->\x4121,[\x9180,\x919e]->\x4160,[\x919f,\x91fc]->\x4221,\
+ [\x9240,\x927e]->\x4321,[\x9280,\x929e]->\x4360,[\x929f,\x92fc]->\x4421,\
+ [\x9340,\x937e]->\x4521,[\x9380,\x939e]->\x4560,[\x939f,\x93fc]->\x4621,\
+ [\x9440,\x947e]->\x4721,[\x9480,\x949e]->\x4760,[\x949f,\x94fc]->\x4821,\
+ [\x9540,\x957e]->\x4921,[\x9580,\x959e]->\x4960,[\x959f,\x95fc]->\x4a21,\
+ [\x9640,\x967e]->\x4b21,[\x9680,\x969e]->\x4b60,[\x969f,\x96fc]->\x4c21,\
+ [\x9740,\x977e]->\x4d21,[\x9780,\x979e]->\x4d60,[\x979f,\x97fc]->\x4e21,\
+ [\x9840,\x987e]->\x4f21,[\x9880,\x989e]->\x4f60,[\x989f,\x98fc]->\x5021,\
+ [\x9940,\x997e]->\x5121,[\x9980,\x999e]->\x5160,[\x999f,\x99fc]->\x5221,\
+ [\x9a40,\x9a7e]->\x5321,[\x9a80,\x9a9e]->\x5360,[\x9a9f,\x9afc]->\x5421,\
+ [\x9b40,\x9b7e]->\x5521,[\x9b80,\x9b9e]->\x5560,[\x9b9f,\x9bfc]->\x5621,\
+ [\x9c40,\x9c7e]->\x5721,[\x9c80,\x9c9e]->\x5760,[\x9c9f,\x9cfc]->\x5821,\
+ [\x9d40,\x9d7e]->\x5921,[\x9d80,\x9d9e]->\x5960,[\x9d9f,\x9dfc]->\x5a21,\
+ [\x9e40,\x9e7e]->\x5b21,[\x9e80,\x9e9e]->\x5b60,[\x9e9f,\x9efc]->\x5c21,\
+ [\x9f40,\x9f7e]->\x5d21,[\x9f80,\x9f9e]->\x5d60,[\x9f9f,\x9ffc]->\x5e21,\
+ [\xe040,\xe07e]->\x5f21,[\xe080,\xe09e]->\x5f60,[\xe09f,\xe0fc]->\x6021,\
+ [\xe140,\xe17e]->\x6121,[\xe180,\xe19e]->\x6160,[\xe19f,\xe1fc]->\x6221,\
+ [\xe240,\xe27e]->\x6321,[\xe280,\xe29e]->\x6360,[\xe29f,\xe2fc]->\x6421,\
+ [\xe340,\xe37e]->\x6521,[\xe380,\xe39e]->\x6560,[\xe39f,\xe3fc]->\x6621,\
+ [\xe440,\xe47e]->\x6721,[\xe480,\xe49e]->\x6760,[\xe49f,\xe4fc]->\x6821,\
+ [\xe540,\xe57e]->\x6921,[\xe580,\xe59e]->\x6960,[\xe59f,\xe5fc]->\x6a21,\
+ [\xe640,\xe67e]->\x6b21,[\xe680,\xe69e]->\x6b60,[\xe69f,\xe6fc]->\x6c21,\
+ [\xe740,\xe77e]->\x6d21,[\xe780,\xe79e]->\x6d60,[\xe79f,\xe7fc]->\x6e21,\
+ [\xe840,\xe87e]->\x6f21,[\xe880,\xe89e]->\x6f60,[\xe89f,\xe8fc]->\x7021,\
+ [\xe940,\xe97e]->\x7121,[\xe980,\xe99e]->\x7160,[\xe99f,\xe9fc]->\x7221,\
+ [\xea40,\xea7e]->\x7321,[\xea80,\xea9e]->\x7360,[\xea9f,\xeafc]->\x7421,\
+ [\xeb40,\xeb7e]->\x7521,[\xeb80,\xeb9e]->\x7560,[\xeb9f,\xebfc]->\x7621,\
+ [\xec40,\xec7e]->\x7721,[\xec80,\xec9e]->\x7760,[\xec9f,\xecfc]->\x7821,\
+ [\xed40,\xed7e]->\x7921,[\xed80,\xed9e]->\x7960,[\xed9f,\xedfc]->\x7a21,\
+ [\xee40,\xee7e]->\x7b21,[\xee80,\xee9e]->\x7b60,[\xee9f,\xeefc]->\x7c21,\
+ [\xef40,\xef7e]->\x7d21,[\xef80,\xef9e]->\x7d60,[\xef9f,\xeffc]->\x7e21
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+ wc_encoding \x10000000
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ length 2
+ byte1 \xf0,\xfc
+ byte2 \x40,\x7e;\x80,\xfc
+ wc_encoding \x20000000
+ ct_encoding u90x03.1991-0:GL; u90x03.1991-0:GR
+ mb_conversion \
+ [\xf040,\xf07e]->\x6521,[\xf080,\xf09e]->\x6560,[\xf09f,\xf0fc]->\x6621,\
+ [\xf140,\xf17e]->\x6721,[\xf180,\xf19e]->\x6760,[\xf19f,\xf1fc]->\x6821,\
+ [\xf240,\xf27e]->\x6921,[\xf280,\xf29e]->\x6960,[\xf29f,\xf2fc]->\x6a21,\
+ [\xf340,\xf37e]->\x6b21,[\xf380,\xf39e]->\x6b60,[\xf39f,\xf3fc]->\x6c21,\
+ [\xf440,\xf47e]->\x6d21,[\xf480,\xf49e]->\x6d60,[\xf49f,\xf4fc]->\x6e21,\
+ [\xf540,\xf57e]->\x6f21,[\xf580,\xf59e]->\x6f60,[\xf59f,\xf5fc]->\x7021,\
+ [\xf640,\xf67e]->\x7121,[\xf680,\xf69e]->\x7160,[\xf69f,\xf6fc]->\x7221,\
+ [\xf740,\xf77e]->\x7321,[\xf780,\xf79e]->\x7360,[\xf79f,\xf7fc]->\x7421,\
+ [\xf840,\xf87e]->\x7521,[\xf880,\xf89e]->\x7560,[\xf89f,\xf8fc]->\x7621,\
+ [\xf940,\xf97e]->\x7721,[\xf980,\xf99e]->\x7760,[\xf99f,\xf9fc]->\x7821,\
+ [\xfa40,\xfa7e]->\x7921,[\xfa80,\xfa9e]->\x7960,[\xfa9f,\xfafc]->\x7a21,\
+ [\xfb40,\xfb7e]->\x7b21,[\xfb80,\xfb9e]->\x7b60,[\xfb9f,\xfbfc]->\x7c21,\
+ [\xfc40,\xfc7e]->\x7d21,[\xfc80,\xfc9e]->\x7d60,[\xfc9f,\xfcfc]->\x7e21
+}
+
+END XLC_XLOCALE
+
+#endif /* __uxp__ */
diff --git a/libX11/nls/ja.U90/XI18N_OBJS b/libX11/nls/ja.U90/XI18N_OBJS
index 8c766a958..cedf8bc53 100644
--- a/libX11/nls/ja.U90/XI18N_OBJS
+++ b/libX11/nls/ja.U90/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja.U90 locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja.U90 locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja.U90/XLC_LOCALE.pre b/libX11/nls/ja.U90/XLC_LOCALE.pre
index 5d8fd3c0a..bad4687e6 100644
--- a/libX11/nls/ja.U90/XLC_LOCALE.pre
+++ b/libX11/nls/ja.U90/XLC_LOCALE.pre
@@ -1,151 +1,151 @@
-XCOMM Copyright 1995 by FUJITSU LIMITED
-XCOMM This is source code modified by FUJITSU LIMITED under the Joint
-XCOMM Development Agreement for the CDEnext PST.
-XCOMM This is unpublished proprietary source code of FUJITSU LIMITED
-XCOMM
-XCOMM NLS-DB for ja_JP.U90
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name u90x03.1991-0
- side GL
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x28\x32
- encoding_name fujitsu.U90X03
-}
-
-csd1 {
- charset_name u90x03.1991-0
- side GR
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x2f\x32
- encoding_name fujitsu.U90X03
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name JISX0201.1976-0:GL
- }
- font {
- primary JISX0201.1976-0:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary fujitsu.u90x01.1991-0:GL
-XCOMM primary JISX0208.1983-0:GL
- substitute JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR;\
- u90x01.1991-0:GL
- vertical_map u90x01.1991-0.2:GL,\
- [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
- [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
- [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
- [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
- [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
- [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
- [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
- [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
- [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
- [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
- [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
- [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
- [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (JEF Kanji + User Defined Character)
-fs3 {
- charset {
- name u90x03.1991-0:GR; u90x03.1991-0:GL
- udc_area \x6521,\x787e
- }
- font {
- primary fujitsu.u90x03.1991-0:GL
- substitute u90x03.1991-0:GL;\
- JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-XCOMM encoding_name ja.euc
-encoding_name ja_JP.U90
-mb_cur_max 3
-state_depend_encoding False
-
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
- wc_encoding \x30000000
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
- mb_encoding <SS> \x8e
- wc_encoding \x10000000
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side GR
- length 2
- mb_encoding <SS> \x8f
- wc_encoding \x20000000
- ct_encoding u90x03.1991-0:GR; u90x03.1991-0:GL
-}
-
-END XLC_XLOCALE
+XCOMM Copyright 1995 by FUJITSU LIMITED
+XCOMM This is source code modified by FUJITSU LIMITED under the Joint
+XCOMM Development Agreement for the CDEnext PST.
+XCOMM This is unpublished proprietary source code of FUJITSU LIMITED
+XCOMM
+XCOMM NLS-DB for ja_JP.U90
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name u90x03.1991-0
+ side GL
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x28\x32
+ encoding_name fujitsu.U90X03
+}
+
+csd1 {
+ charset_name u90x03.1991-0
+ side GR
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x2f\x32
+ encoding_name fujitsu.U90X03
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name JISX0201.1976-0:GL
+ }
+ font {
+ primary JISX0201.1976-0:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary fujitsu.u90x01.1991-0:GL
+XCOMM primary JISX0208.1983-0:GL
+ substitute JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR;\
+ u90x01.1991-0:GL
+ vertical_map u90x01.1991-0.2:GL,\
+ [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
+ [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
+ [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
+ [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
+ [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
+ [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
+ [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
+ [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
+ [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
+ [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
+ [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
+ [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
+ [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (JEF Kanji + User Defined Character)
+fs3 {
+ charset {
+ name u90x03.1991-0:GR; u90x03.1991-0:GL
+ udc_area \x6521,\x787e
+ }
+ font {
+ primary fujitsu.u90x03.1991-0:GL
+ substitute u90x03.1991-0:GL;\
+ JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+XCOMM encoding_name ja.euc
+encoding_name ja_JP.U90
+mb_cur_max 3
+state_depend_encoding False
+
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+ wc_encoding \x30000000
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+ mb_encoding <SS> \x8e
+ wc_encoding \x10000000
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8f
+ wc_encoding \x20000000
+ ct_encoding u90x03.1991-0:GR; u90x03.1991-0:GL
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ja/Compose.pre b/libX11/nls/ja/Compose.pre
index 26042570d..0935d75a4 100644
--- a/libX11/nls/ja/Compose.pre
+++ b/libX11/nls/ja/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ja Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ja Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/ja/XI18N_OBJS b/libX11/nls/ja/XI18N_OBJS
index 50b51fecd..2db64ddc2 100644
--- a/libX11/nls/ja/XI18N_OBJS
+++ b/libX11/nls/ja/XI18N_OBJS
@@ -1,11 +1,11 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja locale
-#
-XLC ja/xlibi18n_ja _XlcGenericLoader # XLC_open
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-#XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XIM common/ximlocal _XimpLocalOpenIM # XIM_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja locale
+#
+XLC ja/xlibi18n_ja _XlcGenericLoader # XLC_open
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+#XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
+XIM common/ximp40 _Ximp_OpenIM # XIM_open
+XIM common/ximlocal _XimpLocalOpenIM # XIM_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja/XLC_LOCALE.pre b/libX11/nls/ja/XLC_LOCALE.pre
index 99decf0a0..ae619ec15 100644
--- a/libX11/nls/ja/XLC_LOCALE.pre
+++ b/libX11/nls/ja/XLC_LOCALE.pre
@@ -1,124 +1,124 @@
-XCOMM
-XCOMM XLocale Database Sample for ja_JP.euc
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- substitute JISX0201.1976-0:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- udc_area \x7521,\x7e7e
- }
- font {
- primary JISX0208.1983-0:GL
- substitute JISX0208.1990-0:GL
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- substitute JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (Supplementary Kanji)
-XCOMM fs3 {
-XCOMM charset {
-XCOMM name JISX0212.1990-0:GL
-XCOMM udc_area \x7521,\x7e7e
-XCOMM }
-XCOMM font {
-XCOMM primary JISX0212.1990-0:GL
-XCOMM }
-XCOMM }
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ja.euc
-mb_cur_max 3
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
- mb_encoding <SS> \x8e
-#if WCHAR32
- wc_encoding \x10000000
-#else
- wc_encoding \x00000080
-#endif
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs3 class
-XCOMM cs3 {
-XCOMM side GL
-XCOMM length 2
-XCOMM mb_encoding <SS> \x8f
-XCOMM #if WCHAR32
-XCOMM wc_encoding \x20000000
-XCOMM #else
-XCOMM wc_encoding \x00008000
-XCOMM #endif
-XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
-XCOMM }
-
-
-END XLC_XLOCALE
-
+XCOMM
+XCOMM XLocale Database Sample for ja_JP.euc
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ substitute JISX0201.1976-0:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ udc_area \x7521,\x7e7e
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ substitute JISX0208.1990-0:GL
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ substitute JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (Supplementary Kanji)
+XCOMM fs3 {
+XCOMM charset {
+XCOMM name JISX0212.1990-0:GL
+XCOMM udc_area \x7521,\x7e7e
+XCOMM }
+XCOMM font {
+XCOMM primary JISX0212.1990-0:GL
+XCOMM }
+XCOMM }
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ja.euc
+mb_cur_max 3
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+ mb_encoding <SS> \x8e
+#if WCHAR32
+ wc_encoding \x10000000
+#else
+ wc_encoding \x00000080
+#endif
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs3 class
+XCOMM cs3 {
+XCOMM side GL
+XCOMM length 2
+XCOMM mb_encoding <SS> \x8f
+XCOMM #if WCHAR32
+XCOMM wc_encoding \x20000000
+XCOMM #else
+XCOMM wc_encoding \x00008000
+XCOMM #endif
+XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
+XCOMM }
+
+
+END XLC_XLOCALE
+
diff --git a/libX11/nls/ja_JP.UTF-8/XI18N_OBJS b/libX11/nls/ja_JP.UTF-8/XI18N_OBJS
index 9159b67e9..af46a1a2b 100644
--- a/libX11/nls/ja_JP.UTF-8/XI18N_OBJS
+++ b/libX11/nls/ja_JP.UTF-8/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja_JP.UTF-8 locale
-#
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja_JP.UTF-8 locale
+#
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja_JP.UTF-8/XLC_LOCALE.pre b/libX11/nls/ja_JP.UTF-8/XLC_LOCALE.pre
index 0f5ebe29d..c1c4e8e00 100644
--- a/libX11/nls/ja_JP.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/ja_JP.UTF-8/XLC_LOCALE.pre
@@ -1,149 +1,149 @@
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-
-XCOMM fs2 class (Kanji)
-fs2 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- }
-}
-
-XCOMM fs3 class (Korean Character)
-fs3 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- }
-}
-
-XCOMM fs4 class (Chinese Han Character)
-fs4 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-XCOMM fs5 class (Half Kana)
-fs5 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM ISO10646-1 is put last to make usually better-looking
-XCOMM other fonts are picked up before iso10646-1 fonts.
-XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all
-XCOMM in ISO8859-X ranges.
-
-XCOMM fs6 class
-fs6 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 2
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
-
-}
-
-XCOMM cs3 class
-cs3 {
- side GL
- length 2
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
-
-}
-
-XCOMM cs4 class
-cs4 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs5 class
-cs5 {
- side GR
- length 1
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs6 class
-cs6 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM fs2 class (Kanji)
+fs2 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+
+XCOMM fs3 class (Korean Character)
+fs3 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+
+XCOMM fs4 class (Chinese Han Character)
+fs4 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs5 class (Half Kana)
+fs5 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM ISO10646-1 is put last to make usually better-looking
+XCOMM other fonts are picked up before iso10646-1 fonts.
+XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all
+XCOMM in ISO8859-X ranges.
+
+XCOMM fs6 class
+fs6 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
+
+}
+
+XCOMM cs3 class
+cs3 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
+
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ko/Compose.pre b/libX11/nls/ko/Compose.pre
index 4297871e7..0b1f57045 100644
--- a/libX11/nls/ko/Compose.pre
+++ b/libX11/nls/ko/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ko Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ko Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/ko/XI18N_OBJS b/libX11/nls/ko/XI18N_OBJS
index 5ee523799..f57b4648b 100644
--- a/libX11/nls/ko/XI18N_OBJS
+++ b/libX11/nls/ko/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ko locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ko locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximp40 _Ximp_OpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ko/XLC_LOCALE.pre b/libX11/nls/ko/XLC_LOCALE.pre
index bda77b7f8..a91795462 100644
--- a/libX11/nls/ko/XLC_LOCALE.pre
+++ b/libX11/nls/ko/XLC_LOCALE.pre
@@ -1,71 +1,71 @@
-XCOMM XLocale Database Sample for ko.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- substitute KSC5601.1987-0:GL
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ko.euc
-mb_cur_max 2
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for ko.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ substitute KSC5601.1987-0:GL
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ko.euc
+mb_cur_max 2
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ko_KR.UTF-8/XI18N_OBJS b/libX11/nls/ko_KR.UTF-8/XI18N_OBJS
index 96e753cb6..3c46c5a92 100644
--- a/libX11/nls/ko_KR.UTF-8/XI18N_OBJS
+++ b/libX11/nls/ko_KR.UTF-8/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ko_KR.UTF-8 locale
-#
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ko_KR.UTF-8 locale
+#
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ko_KR.UTF-8/XLC_LOCALE.pre b/libX11/nls/ko_KR.UTF-8/XLC_LOCALE.pre
index b3db89da2..33338a14e 100644
--- a/libX11/nls/ko_KR.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/ko_KR.UTF-8/XLC_LOCALE.pre
@@ -1,147 +1,147 @@
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-
-XCOMM fs2 class (Korean Character)
-fs2 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- }
-}
-XCOMM fs3 class (Kanji)
-fs3 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- }
-}
-XCOMM fs4 class (Chinese Han Character)
-fs4 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-XCOMM fs5 class (Half Kana)
-fs5 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-
-XCOMM ISO10646-1 is put last to make usually better-looking
-XCOMM other fonts are picked up before iso10646-1 fonts.
-XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all
-XCOMM in ISO8859-X ranges.
-
-XCOMM fs6 class
-fs6 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GL
- length 2
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
-
-}
-
-XCOMM cs3 class
-cs3 {
- side GR
- length 2
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
-
-}
-
-XCOMM cs4 class
-cs4 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs5 class
-cs5 {
- side GR
- length 1
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs6 class
-cs6 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM fs2 class (Korean Character)
+fs2 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+XCOMM fs3 class (Kanji)
+fs3 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+XCOMM fs4 class (Chinese Han Character)
+fs4 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs5 class (Half Kana)
+fs5 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+
+XCOMM ISO10646-1 is put last to make usually better-looking
+XCOMM other fonts are picked up before iso10646-1 fonts.
+XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all
+XCOMM in ISO8859-X ranges.
+
+XCOMM fs6 class
+fs6 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
+
+}
+
+XCOMM cs3 class
+cs3 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
+
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/koi8-c/Compose.pre b/libX11/nls/koi8-c/Compose.pre
index c15a3bbe9..53561c9c0 100644
--- a/libX11/nls/koi8-c/Compose.pre
+++ b/libX11/nls/koi8-c/Compose.pre
@@ -1,122 +1,122 @@
-XCOMM
-XCOMM koi8-c Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-
-<Multi_key> <space> <space> : "\240" nobreakspace
-
-<Multi_key> <Cyrillic_ghe> <minus> : "\200" Cyrillic_ghe_bar
-<Multi_key> <Cyrillic_GHE> <minus> : "\220" Cyrillic_GHE_bar
-<Multi_key> <Cyrillic_zhe> <comma> : "\201" Cyrillic_zhe_descender
-<Multi_key> <Cyrillic_ZHE> <comma> : "\221" Cyrillic_ZHE_descender
-<Multi_key> <Cyrillic_ka> <comma> : "\202" Cyrillic_ka_descender
-<Multi_key> <Cyrillic_KA> <comma> : "\222" Cyrillic_KA_descender
-<Multi_key> <Cyrillic_ka> <slash> : "\203" Cyrillic_ka_vertstroke
-<Multi_key> <Cyrillic_KA> <slash> : "\223" Cyrillic_KA_vertstroke
-<Multi_key> <Cyrillic_ka> <bar> : "\203" Cyrillic_ka_vertstroke
-<Multi_key> <Cyrillic_KA> <bar> : "\223" Cyrillic_KA_vertstroke
-<Multi_key> <Cyrillic_en> <comma> : "\204" Cyrillic_en_descender
-<Multi_key> <Cyrillic_EN> <comma> : "\224" Cyrillic_EN_descender
-<Multi_key> <Cyrillic_u> <apostrophe> : "\205" Cyrillic_u_straight
-<Multi_key> <Cyrillic_U> <apostrophe> : "\225" Cyrillic_U_straight
-<Multi_key> <Cyrillic_u> <bar> : "\205" Cyrillic_u_straight
-<Multi_key> <Cyrillic_U> <bar> : "\225" Cyrillic_U_straight
-<Multi_key> <Cyrillic_u> <comma> : "\206" Cyrillic_u_straight_bar
-<Multi_key> <Cyrillic_U> <comma> : "\226" Cyrillic_U_straight_bat
-<Multi_key> <Cyrillic_u> <slash> : "\206" Cyrillic_u_straight_bar
-<Multi_key> <Cyrillic_U> <slash> : "\226" Cyrillic_U_straight_bat
-<Multi_key> <Cyrillic_ha> <comma> : "\207" Cyrillic_ha_descender
-<Multi_key> <Cyrillic_HA> <comma> : "\227" Cyrillic_HA_descender
-<Multi_key> <Cyrillic_che> <comma> : "\210" Cyrillic_che_descender
-<Multi_key> <Cyrillic_CHE> <comma> : "\230" Cyrillic_CHE_descender
-<Multi_key> <Cyrillic_che> <slash> : "\211" Cyrillic_che_vertstroke
-<Multi_key> <Cyrillic_CHE> <slash> : "\231" Cyrillic_CHE_vertstroke
-<Multi_key> <Cyrillic_che> <bar> : "\211" Cyrillic_che_vertstroke
-<Multi_key> <Cyrillic_CHE> <bar> : "\231" Cyrillic_CHE_vertstroke
-<Multi_key> <Cyrillic_ha> <apostrophe> : "\212" Cyrillic_shha
-<Multi_key> <Cyrillic_HA> <apostrophe> : "\232" Cyrillic_SHHA
-<Multi_key> <h> <apostrophe> : "\212" Cyrillic_shha
-<Multi_key> <H> <apostrophe> : "\232" Cyrillic_SHHA
-<Multi_key> <h> <h> : "\212" Cyrillic_shha
-<Multi_key> <H> <H> : "\232" Cyrillic_SHHA
-<Multi_key> <Cyrillic_ie> <Cyrillic_ie> : "\213" Cyrillic_schwa
-<Multi_key> <Cyrillic_IE> <Cyrillic_IE> : "\233" Cyrillic_SCHWA
-<Multi_key> <e> <e> : "\213" Cyrillic_schwa
-<Multi_key> <E> <E> : "\233" Cyrillic_SCHWA
-<Multi_key> <Cyrillic_i> <minus> : "\214" Cyrillic_i_macron
-<Multi_key> <Cyrillic_I> <minus> : "\234" Cyrillic_I_macron
-<Multi_key> <Cyrillic_o> <minus> : "\215" Cyrillic_o_bar
-<Multi_key> <Cyrillic_O> <minus> : "\235" Cyrillic_O_bar
-<Multi_key> <Cyrillic_u> <minus> : "\216" Cyrillic_u_macron
-<Multi_key> <Cyrillic_U> <minus> : "\236" Cyrillic_U_macron
-
-<Multi_key> <Cyrillic_de> <Cyrillic_je> : "\241" Serbian_dje
-<Multi_key> <Cyrillic_DE> <Cyrillic_JE> : "\261" Serbian_DJE
-<Multi_key> <Cyrillic_ghe> <Cyrillic_je> : "\242" Macedonia_gje
-<Multi_key> <Cyrillic_GHE> <Cyrillic_JE> : "\262" Macedonia_GJE
-<Multi_key> <Cyrillic_shorti> <Cyrillic_o> : "\243" Cyrillic_io
-<Multi_key> <Cyrillic_SHORTI> <Cyrillic_O> : "\263" Cyrillic_IO
-<Multi_key> <Cyrillic_je> <Cyrillic_o> : "\243" Cyrillic_io
-<Multi_key> <Cyrillic_JE> <Cyrillic_O> : "\263" Cyrillic_IO
-<Multi_key> <Cyrillic_ie> <colon> : "\243" Cyrillic_io
-<Multi_key> <Cyrillic_IE> <colon> : "\263" Cyrillic_IO
-
-<Multi_key> <Cyrillic_el> <Cyrillic_je> : "\251" Cyrillic_lje
-<Multi_key> <Cyrillic_EL> <Cyrillic_JE> : "\271" Cyrillic_LJE
-<Multi_key> <Cyrillic_en> <Cyrillic_je> : "\252" Cyrillic_nje
-<Multi_key> <Cyrillic_EN> <Cyrillic_JE> : "\272" Cyrillic_NJE
-
-<Multi_key> <Cyrillic_shorti> <Cyrillic_u> : "\300" Cyrillic_yu
-<Multi_key> <Cyrillic_SHORTI> <Cyrillic_U> : "\340" Cyrillic_YU
-<Multi_key> <Cyrillic_je> <Cyrillic_u> : "\300" Cyrillic_yu
-<Multi_key> <Cyrillic_JE> <Cyrillic_U> : "\340" Cyrillic_YU
-
-<Multi_key> <Cyrillic_te> <Cyrillic_es> : "\303" Cyrillic_tse
-<Multi_key> <Cyrillic_TE> <Cyrillic_ES> : "\343" Cyrillic_TSE
-
-<Multi_key> <Cyrillic_shorti> <Cyrillic_a> : "\321" Cyrillic_ya
-<Multi_key> <Cyrillic_SHORTI> <Cyrillic_A> : "\361" Cyrillic_YA
-<Multi_key> <Cyrillic_je> <Cyrillic_a> : "\321" Cyrillic_ya
-<Multi_key> <Cyrillic_JE> <Cyrillic_A> : "\361" Cyrillic_YA
-
-
-<Multi_key> <Cyrillic_sha> <comma> : "\335" Cyrillic_shcha
-<Multi_key> <Cyrillic_SHA> <comma> : "\375" Cyrillic_SHCHA
-
-
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM koi8-c Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+
+<Multi_key> <space> <space> : "\240" nobreakspace
+
+<Multi_key> <Cyrillic_ghe> <minus> : "\200" Cyrillic_ghe_bar
+<Multi_key> <Cyrillic_GHE> <minus> : "\220" Cyrillic_GHE_bar
+<Multi_key> <Cyrillic_zhe> <comma> : "\201" Cyrillic_zhe_descender
+<Multi_key> <Cyrillic_ZHE> <comma> : "\221" Cyrillic_ZHE_descender
+<Multi_key> <Cyrillic_ka> <comma> : "\202" Cyrillic_ka_descender
+<Multi_key> <Cyrillic_KA> <comma> : "\222" Cyrillic_KA_descender
+<Multi_key> <Cyrillic_ka> <slash> : "\203" Cyrillic_ka_vertstroke
+<Multi_key> <Cyrillic_KA> <slash> : "\223" Cyrillic_KA_vertstroke
+<Multi_key> <Cyrillic_ka> <bar> : "\203" Cyrillic_ka_vertstroke
+<Multi_key> <Cyrillic_KA> <bar> : "\223" Cyrillic_KA_vertstroke
+<Multi_key> <Cyrillic_en> <comma> : "\204" Cyrillic_en_descender
+<Multi_key> <Cyrillic_EN> <comma> : "\224" Cyrillic_EN_descender
+<Multi_key> <Cyrillic_u> <apostrophe> : "\205" Cyrillic_u_straight
+<Multi_key> <Cyrillic_U> <apostrophe> : "\225" Cyrillic_U_straight
+<Multi_key> <Cyrillic_u> <bar> : "\205" Cyrillic_u_straight
+<Multi_key> <Cyrillic_U> <bar> : "\225" Cyrillic_U_straight
+<Multi_key> <Cyrillic_u> <comma> : "\206" Cyrillic_u_straight_bar
+<Multi_key> <Cyrillic_U> <comma> : "\226" Cyrillic_U_straight_bat
+<Multi_key> <Cyrillic_u> <slash> : "\206" Cyrillic_u_straight_bar
+<Multi_key> <Cyrillic_U> <slash> : "\226" Cyrillic_U_straight_bat
+<Multi_key> <Cyrillic_ha> <comma> : "\207" Cyrillic_ha_descender
+<Multi_key> <Cyrillic_HA> <comma> : "\227" Cyrillic_HA_descender
+<Multi_key> <Cyrillic_che> <comma> : "\210" Cyrillic_che_descender
+<Multi_key> <Cyrillic_CHE> <comma> : "\230" Cyrillic_CHE_descender
+<Multi_key> <Cyrillic_che> <slash> : "\211" Cyrillic_che_vertstroke
+<Multi_key> <Cyrillic_CHE> <slash> : "\231" Cyrillic_CHE_vertstroke
+<Multi_key> <Cyrillic_che> <bar> : "\211" Cyrillic_che_vertstroke
+<Multi_key> <Cyrillic_CHE> <bar> : "\231" Cyrillic_CHE_vertstroke
+<Multi_key> <Cyrillic_ha> <apostrophe> : "\212" Cyrillic_shha
+<Multi_key> <Cyrillic_HA> <apostrophe> : "\232" Cyrillic_SHHA
+<Multi_key> <h> <apostrophe> : "\212" Cyrillic_shha
+<Multi_key> <H> <apostrophe> : "\232" Cyrillic_SHHA
+<Multi_key> <h> <h> : "\212" Cyrillic_shha
+<Multi_key> <H> <H> : "\232" Cyrillic_SHHA
+<Multi_key> <Cyrillic_ie> <Cyrillic_ie> : "\213" Cyrillic_schwa
+<Multi_key> <Cyrillic_IE> <Cyrillic_IE> : "\233" Cyrillic_SCHWA
+<Multi_key> <e> <e> : "\213" Cyrillic_schwa
+<Multi_key> <E> <E> : "\233" Cyrillic_SCHWA
+<Multi_key> <Cyrillic_i> <minus> : "\214" Cyrillic_i_macron
+<Multi_key> <Cyrillic_I> <minus> : "\234" Cyrillic_I_macron
+<Multi_key> <Cyrillic_o> <minus> : "\215" Cyrillic_o_bar
+<Multi_key> <Cyrillic_O> <minus> : "\235" Cyrillic_O_bar
+<Multi_key> <Cyrillic_u> <minus> : "\216" Cyrillic_u_macron
+<Multi_key> <Cyrillic_U> <minus> : "\236" Cyrillic_U_macron
+
+<Multi_key> <Cyrillic_de> <Cyrillic_je> : "\241" Serbian_dje
+<Multi_key> <Cyrillic_DE> <Cyrillic_JE> : "\261" Serbian_DJE
+<Multi_key> <Cyrillic_ghe> <Cyrillic_je> : "\242" Macedonia_gje
+<Multi_key> <Cyrillic_GHE> <Cyrillic_JE> : "\262" Macedonia_GJE
+<Multi_key> <Cyrillic_shorti> <Cyrillic_o> : "\243" Cyrillic_io
+<Multi_key> <Cyrillic_SHORTI> <Cyrillic_O> : "\263" Cyrillic_IO
+<Multi_key> <Cyrillic_je> <Cyrillic_o> : "\243" Cyrillic_io
+<Multi_key> <Cyrillic_JE> <Cyrillic_O> : "\263" Cyrillic_IO
+<Multi_key> <Cyrillic_ie> <colon> : "\243" Cyrillic_io
+<Multi_key> <Cyrillic_IE> <colon> : "\263" Cyrillic_IO
+
+<Multi_key> <Cyrillic_el> <Cyrillic_je> : "\251" Cyrillic_lje
+<Multi_key> <Cyrillic_EL> <Cyrillic_JE> : "\271" Cyrillic_LJE
+<Multi_key> <Cyrillic_en> <Cyrillic_je> : "\252" Cyrillic_nje
+<Multi_key> <Cyrillic_EN> <Cyrillic_JE> : "\272" Cyrillic_NJE
+
+<Multi_key> <Cyrillic_shorti> <Cyrillic_u> : "\300" Cyrillic_yu
+<Multi_key> <Cyrillic_SHORTI> <Cyrillic_U> : "\340" Cyrillic_YU
+<Multi_key> <Cyrillic_je> <Cyrillic_u> : "\300" Cyrillic_yu
+<Multi_key> <Cyrillic_JE> <Cyrillic_U> : "\340" Cyrillic_YU
+
+<Multi_key> <Cyrillic_te> <Cyrillic_es> : "\303" Cyrillic_tse
+<Multi_key> <Cyrillic_TE> <Cyrillic_ES> : "\343" Cyrillic_TSE
+
+<Multi_key> <Cyrillic_shorti> <Cyrillic_a> : "\321" Cyrillic_ya
+<Multi_key> <Cyrillic_SHORTI> <Cyrillic_A> : "\361" Cyrillic_YA
+<Multi_key> <Cyrillic_je> <Cyrillic_a> : "\321" Cyrillic_ya
+<Multi_key> <Cyrillic_JE> <Cyrillic_A> : "\361" Cyrillic_YA
+
+
+<Multi_key> <Cyrillic_sha> <comma> : "\335" Cyrillic_shcha
+<Multi_key> <Cyrillic_SHA> <comma> : "\375" Cyrillic_SHCHA
+
+
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/koi8-c/XI18N_OBJS b/libX11/nls/koi8-c/XI18N_OBJS
index a6374f358..3fed1f118 100644
--- a/libX11/nls/koi8-c/XI18N_OBJS
+++ b/libX11/nls/koi8-c/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for koi8-c locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for koi8-c locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/koi8-c/XLC_LOCALE.pre b/libX11/nls/koi8-c/XLC_LOCALE.pre
index 68cd02f3b..85bbc0923 100644
--- a/libX11/nls/koi8-c/XLC_LOCALE.pre
+++ b/libX11/nls/koi8-c/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for koi8-c.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary KOI8-C:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset KOI8-C:GR
- font KOI8-C:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name KOI8-C
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name KOI8-C
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding KOI8-C:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding KOI8-C:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for koi8-c.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary KOI8-C:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset KOI8-C:GR
+ font KOI8-C:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name KOI8-C
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name KOI8-C
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding KOI8-C:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding KOI8-C:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/koi8-r/Compose.pre b/libX11/nls/koi8-r/Compose.pre
index d44893e64..3b9081b9b 100644
--- a/libX11/nls/koi8-r/Compose.pre
+++ b/libX11/nls/koi8-r/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM koi8-r Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM koi8-r Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/koi8-r/XI18N_OBJS b/libX11/nls/koi8-r/XI18N_OBJS
index b704fec52..9833d6283 100644
--- a/libX11/nls/koi8-r/XI18N_OBJS
+++ b/libX11/nls/koi8-r/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for koi8-r locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for koi8-r locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/koi8-r/XLC_LOCALE.pre b/libX11/nls/koi8-r/XLC_LOCALE.pre
index cda283e5d..12090506e 100644
--- a/libX11/nls/koi8-r/XLC_LOCALE.pre
+++ b/libX11/nls/koi8-r/XLC_LOCALE.pre
@@ -1,80 +1,80 @@
-XCOMM XLocale Database Sample for koi8-r.
-XCOMM
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary KOI8-R:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset KOI8-R:GR
- font KOI8-R:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name KOI8-R
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name KOI8-R
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding KOI8-R:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding KOI8-R:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for koi8-r.
+XCOMM
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary KOI8-R:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset KOI8-R:GR
+ font KOI8-R:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name KOI8-R
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name KOI8-R
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding KOI8-R:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding KOI8-R:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/koi8-u/Compose.pre b/libX11/nls/koi8-u/Compose.pre
index fab51ed91..e06b12b48 100644
--- a/libX11/nls/koi8-u/Compose.pre
+++ b/libX11/nls/koi8-u/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM koi8-u Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM koi8-u Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/koi8-u/XI18N_OBJS b/libX11/nls/koi8-u/XI18N_OBJS
index dd2c992f1..1cb6b359b 100644
--- a/libX11/nls/koi8-u/XI18N_OBJS
+++ b/libX11/nls/koi8-u/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for koi8-u locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for koi8-u locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/koi8-u/XLC_LOCALE.pre b/libX11/nls/koi8-u/XLC_LOCALE.pre
index 860438ad6..a0c01560e 100644
--- a/libX11/nls/koi8-u/XLC_LOCALE.pre
+++ b/libX11/nls/koi8-u/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for koi8-u.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary KOI8-U:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset KOI8-U:GR
- font KOI8-U:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name KOI8-U
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name KOI8-U
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding KOI8-U:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding KOI8-U:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for koi8-u.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary KOI8-U:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset KOI8-U:GR
+ font KOI8-U:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name KOI8-U
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name KOI8-U
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding KOI8-U:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding KOI8-U:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/locale.dir.pre b/libX11/nls/locale.dir.pre
index e0d9ef7ef..bc49f2c8c 100644
--- a/libX11/nls/locale.dir.pre
+++ b/libX11/nls/locale.dir.pre
@@ -1,451 +1,451 @@
-XCOMM
-XCOMM This file contains locale database file names
-XCOMM The first word is the locale database file name and
-XCOMM the second word is the full locale name.
-XCOMM
-XCOMM
-
-C/XLC_LOCALE: C
-iso8859-1/XLC_LOCALE: af_ZA.ISO8859-1
-iso8859-6/XLC_LOCALE: ar_AA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_BH.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_DZ.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_EG.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_IQ.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_JO.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_KW.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_LB.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_LY.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_MA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_OM.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_QA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_SA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_SD.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_SY.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_TN.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_YE.ISO8859-6
-iso8859-9e/XLC_LOCALE: az_AZ.ISO8859-9E
-koi8-c/XLC_LOCALE: az_AZ.KOI8-C
-iso8859-5/XLC_LOCALE: be_BY.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: be_BY.CP1251
-iso8859-5/XLC_LOCALE: bg_BG.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: bg_BG.CP1251
-koi8-r/XLC_LOCALE: bg_BG.KOI8-R
-iso8859-2/XLC_LOCALE: bs_BA.ISO8859-2
-iso8859-1/XLC_LOCALE: br_FR.ISO8859-1
-iso8859-14/XLC_LOCALE: br_FR.ISO8859-14
-iso8859-15/XLC_LOCALE: br_FR.ISO8859-15
-iso8859-1/XLC_LOCALE: ca_AD.ISO8859-1
-iso8859-15/XLC_LOCALE: ca_AD.ISO8859-15
-iso8859-1/XLC_LOCALE: ca_ES.ISO8859-1
-iso8859-15/XLC_LOCALE: ca_ES.ISO8859-15
-iso8859-1/XLC_LOCALE: ca_FR.ISO8859-1
-iso8859-15/XLC_LOCALE: ca_FR.ISO8859-15
-iso8859-1/XLC_LOCALE: ca_IT.ISO8859-1
-iso8859-15/XLC_LOCALE: ca_IT.ISO8859-15
-iso8859-2/XLC_LOCALE: cs_CZ.ISO8859-2
-iso8859-1/XLC_LOCALE: cy_GB.ISO8859-1
-iso8859-14/XLC_LOCALE: cy_GB.ISO8859-14
-iso8859-15/XLC_LOCALE: cy_GB.ISO8859-15
-iso8859-2/XLC_LOCALE: cz_CZ.ISO8859-2
-iso8859-1/XLC_LOCALE: da_DK.ISO8859-1
-iso8859-15/XLC_LOCALE: da_DK.ISO8859-15
-iso8859-1/XLC_LOCALE: de_AT.ISO8859-1
-iso8859-15/XLC_LOCALE: de_AT.ISO8859-15
-iso8859-1/XLC_LOCALE: de_BE.ISO8859-1
-iso8859-15/XLC_LOCALE: de_BE.ISO8859-15
-iso8859-1/XLC_LOCALE: de_CH.ISO8859-1
-iso8859-15/XLC_LOCALE: de_CH.ISO8859-15
-iso8859-1/XLC_LOCALE: de_DE.ISO8859-1
-iso8859-15/XLC_LOCALE: de_DE.ISO8859-15
-iso8859-1/XLC_LOCALE: de_LI.ISO8859-1
-iso8859-1/XLC_LOCALE: de_LU.ISO8859-1
-iso8859-15/XLC_LOCALE: de_LU.ISO8859-15
-iso8859-7/XLC_LOCALE: el_GR.ISO8859-7
-iso8859-15/XLC_LOCALE: el_GR.ISO8859-15
-iso8859-1/XLC_LOCALE: en_AU.ISO8859-1
-iso8859-1/XLC_LOCALE: en_BE.ISO8859-1
-iso8859-1/XLC_LOCALE: en_BZ.ISO8859-1
-iso8859-1/XLC_LOCALE: en_BW.ISO8859-1
-iso8859-1/XLC_LOCALE: en_CA.ISO8859-1
-iso8859-1/XLC_LOCALE: en_GB.ISO8859-1
-iso8859-15/XLC_LOCALE: en_GB.ISO8859-15
-iso8859-1/XLC_LOCALE: en_HK.ISO8859-1
-iso8859-1/XLC_LOCALE: en_IE.ISO8859-1
-iso8859-15/XLC_LOCALE: en_IE.ISO8859-15
-iso8859-15/XLC_LOCALE: en_IN.ISO8859-15
-iso8859-1/XLC_LOCALE: en_JM.ISO8859-1
-iso8859-1/XLC_LOCALE: en_NZ.ISO8859-1
-iso8859-1/XLC_LOCALE: en_PH.ISO8859-1
-iso8859-1/XLC_LOCALE: en_SG.ISO8859-1
-iso8859-1/XLC_LOCALE: en_TT.ISO8859-1
-iso8859-1/XLC_LOCALE: en_UK.ISO8859-1
-iso8859-15/XLC_LOCALE: en_UK.ISO8859-15
-iso8859-1/XLC_LOCALE: en_US.ISO8859-1
-iso8859-15/XLC_LOCALE: en_US.ISO8859-15
-iso8859-1/XLC_LOCALE: en_ZA.ISO8859-1
-iso8859-15/XLC_LOCALE: en_ZA.ISO8859-15
-iso8859-3/XLC_LOCALE: eo_EO.ISO8859-3
-iso8859-3/XLC_LOCALE: eo_XX.ISO8859-3
-iso8859-1/XLC_LOCALE: es_AR.ISO8859-1
-iso8859-1/XLC_LOCALE: es_BO.ISO8859-1
-iso8859-1/XLC_LOCALE: es_CL.ISO8859-1
-iso8859-1/XLC_LOCALE: es_CO.ISO8859-1
-iso8859-1/XLC_LOCALE: es_CR.ISO8859-1
-iso8859-1/XLC_LOCALE: es_DO.ISO8859-1
-iso8859-1/XLC_LOCALE: es_EC.ISO8859-1
-iso8859-1/XLC_LOCALE: es_ES.ISO8859-1
-iso8859-15/XLC_LOCALE: es_ES.ISO8859-15
-iso8859-1/XLC_LOCALE: es_GT.ISO8859-1
-iso8859-1/XLC_LOCALE: es_HN.ISO8859-1
-iso8859-1/XLC_LOCALE: es_MX.ISO8859-1
-iso8859-1/XLC_LOCALE: es_NI.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PA.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PE.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PR.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PY.ISO8859-1
-iso8859-1/XLC_LOCALE: es_SV.ISO8859-1
-iso8859-1/XLC_LOCALE: es_US.ISO8859-1
-iso8859-1/XLC_LOCALE: es_UY.ISO8859-1
-iso8859-1/XLC_LOCALE: es_VE.ISO8859-1
-iso8859-1/XLC_LOCALE: et_EE.ISO8859-1
-iso8859-4/XLC_LOCALE: et_EE.ISO8859-4
-iso8859-13/XLC_LOCALE: et_EE.ISO8859-13
-iso8859-15/XLC_LOCALE: et_EE.ISO8859-15
-iso8859-1/XLC_LOCALE: eu_ES.ISO8859-1
-iso8859-15/XLC_LOCALE: eu_ES.ISO8859-15
-isiri-3342/XLC_LOCALE: fa_IR.ISIRI-3342
-iso8859-1/XLC_LOCALE: fi_FI.ISO8859-1
-iso8859-15/XLC_LOCALE: fi_FI.ISO8859-15
-iso8859-1/XLC_LOCALE: fo_FO.ISO8859-1
-iso8859-15/XLC_LOCALE: fo_FO.ISO8859-15
-iso8859-1/XLC_LOCALE: fr_BE.ISO8859-1
-iso8859-15/XLC_LOCALE: fr_BE.ISO8859-15
-iso8859-1/XLC_LOCALE: fr_CA.ISO8859-1
-iso8859-15/XLC_LOCALE: fr_CA.ISO8859-15
-iso8859-1/XLC_LOCALE: fr_CH.ISO8859-1
-iso8859-15/XLC_LOCALE: fr_CH.ISO8859-15
-iso8859-1/XLC_LOCALE: fr_FR.ISO8859-1
-iso8859-15/XLC_LOCALE: fr_FR.ISO8859-15
-iso8859-1/XLC_LOCALE: fr_LU.ISO8859-1
-iso8859-15/XLC_LOCALE: fr_LU.ISO8859-15
-iso8859-1/XLC_LOCALE: ga_IE.ISO8859-1
-iso8859-14/XLC_LOCALE: ga_IE.ISO8859-14
-iso8859-15/XLC_LOCALE: ga_IE.ISO8859-15
-iso8859-1/XLC_LOCALE: gd_GB.ISO8859-1
-iso8859-14/XLC_LOCALE: gd_GB.ISO8859-14
-iso8859-15/XLC_LOCALE: gd_GB.ISO8859-15
-iso8859-1/XLC_LOCALE: gl_ES.ISO8859-1
-iso8859-15/XLC_LOCALE: gl_ES.ISO8859-15
-iso8859-1/XLC_LOCALE: gv_GB.ISO8859-1
-iso8859-14/XLC_LOCALE: gv_GB.ISO8859-14
-iso8859-15/XLC_LOCALE: gv_GB.ISO8859-15
-iso8859-8/XLC_LOCALE: he_IL.ISO8859-8
-microsoft-cp1255/XLC_LOCALE: he_IL.CP1255
-iscii-dev/XLC_LOCALE: hi_IN.ISCII-DEV
-iso8859-2/XLC_LOCALE: hr_HR.ISO8859-2
-iso8859-2/XLC_LOCALE: hu_HU.ISO8859-2
-armscii-8/XLC_LOCALE: hy_AM.ARMSCII-8
-iso8859-1/XLC_LOCALE: id_ID.ISO8859-1
-iso8859-1/XLC_LOCALE: is_IS.ISO8859-1
-iso8859-15/XLC_LOCALE: is_IS.ISO8859-15
-iso8859-1/XLC_LOCALE: it_CH.ISO8859-1
-iso8859-1/XLC_LOCALE: it_IT.ISO8859-1
-iso8859-15/XLC_LOCALE: it_IT.ISO8859-15
-ja/XLC_LOCALE: ja_JP.eucJP
-ja.SJIS/XLC_LOCALE: ja_JP.SJIS
-ja.JIS/XLC_LOCALE: ja_JP.JIS7
-georgian-academy/XLC_LOCALE: ka_GE.GEORGIAN-ACADEMY
-georgian-ps/XLC_LOCALE: ka_GE.GEORGIAN-PS
-iso8859-1/XLC_LOCALE: kl_GL.ISO8859-1
-ko/XLC_LOCALE: ko_KR.eucKR
-iso8859-1/XLC_LOCALE: kw_GB.ISO8859-1
-iso8859-14/XLC_LOCALE: kw_GB.ISO8859-14
-iso8859-15/XLC_LOCALE: kw_GB.ISO8859-15
-ibm-cp1133/XLC_LOCALE: lo_LA.IBM-CP1133
-mulelao-1/XLC_LOCALE: lo_LA.MULELAO-1
-iso8859-4/XLC_LOCALE: lt_LT.ISO8859-4
-iso8859-13/XLC_LOCALE: lt_LT.ISO8859-13
-iso8859-4/XLC_LOCALE: lv_LV.ISO8859-4
-iso8859-13/XLC_LOCALE: lv_LV.ISO8859-13
-iso8859-13/XLC_LOCALE: mi_NZ.ISO8859-13
-iso8859-5/XLC_LOCALE: mk_MK.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: mk_MK.CP1251
-iso8859-1/XLC_LOCALE: ms_MY.ISO8859-1
-iso8859-3/XLC_LOCALE: mt_MT.ISO8859-3
-iso8859-1/XLC_LOCALE: nb_NO.ISO8859-1
-iso8859-1/XLC_LOCALE: nb_NO.ISO8859-15
-iso8859-1/XLC_LOCALE: nl_BE.ISO8859-1
-iso8859-15/XLC_LOCALE: nl_BE.ISO8859-15
-iso8859-1/XLC_LOCALE: nl_NL.ISO8859-1
-iso8859-15/XLC_LOCALE: nl_NL.ISO8859-15
-iso8859-1/XLC_LOCALE: nn_NO.ISO8859-1
-iso8859-1/XLC_LOCALE: nn_NO.ISO8859-15
-iso8859-1/XLC_LOCALE: no_NO.ISO8859-1
-iso8859-1/XLC_LOCALE: no_NO.ISO8859-15
-iso8859-1/XLC_LOCALE: nr_ZA.ISO8859-1
-iso8859-15/XLC_LOCALE: nso_ZA.ISO8859-15
-iso8859-1/XLC_LOCALE: ny_NO.ISO8859-1
-iso8859-1/XLC_LOCALE: ny_NO.ISO8859-15
-iso8859-1/XLC_LOCALE: oc_FR.ISO8859-1
-iso8859-15/XLC_LOCALE: oc_FR.ISO8859-15
-iso8859-1/XLC_LOCALE: pd_DE.ISO8859-1
-iso8859-1/XLC_LOCALE: ph_PH.ISO8859-1
-iso8859-2/XLC_LOCALE: pl_PL.ISO8859-2
-iso8859-1/XLC_LOCALE: pp_AN.ISO8859-1
-iso8859-1/XLC_LOCALE: pt_BR.ISO8859-1
-iso8859-1/XLC_LOCALE: pt_PT.ISO8859-1
-iso8859-15/XLC_LOCALE: pt_PT.ISO8859-15
-iso8859-2/XLC_LOCALE: ro_RO.ISO8859-2
-iso8859-5/XLC_LOCALE: ru_RU.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: ru_RU.CP1251
-koi8-r/XLC_LOCALE: ru_RU.KOI8-R
-koi8-u/XLC_LOCALE: ru_UA.KOI8-U
-iso8859-1/XLC_LOCALE: rw_RW.ISO8859-1
-iso8859-2/XLC_LOCALE: sh_YU.ISO8859-2
-iso8859-2/XLC_LOCALE: sk_SK.ISO8859-2
-iso8859-2/XLC_LOCALE: sl_SI.ISO8859-2
-iso8859-2/XLC_LOCALE: sq_AL.ISO8859-2
-iso8859-2/XLC_LOCALE: sr_CS.ISO8859-2
-iso8859-5/XLC_LOCALE: sr_CS.ISO8859-5
-iso8859-2/XLC_LOCALE: sr_YU.ISO8859-2
-iso8859-5/XLC_LOCALE: sr_YU.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: sr_YU.CP1251
-iso8859-1/XLC_LOCALE: ss_ZA.ISO8859-1
-iso8859-1/XLC_LOCALE: st_ZA.ISO8859-1
-iso8859-1/XLC_LOCALE: sv_FI.ISO8859-1
-iso8859-15/XLC_LOCALE: sv_FI.ISO8859-15
-iso8859-1/XLC_LOCALE: sv_SE.ISO8859-1
-iso8859-15/XLC_LOCALE: sv_SE.ISO8859-15
-tscii-0/XLC_LOCALE: ta_IN.TSCII-0
-koi8-c/XLC_LOCALE: tg_TJ.KOI8-C
-th_TH/XLC_LOCALE: th_TH.TIS620
-iso8859-11/XLC_LOCALE: th_TH.ISO8859-11
-iso8859-1/XLC_LOCALE: tl_PH.ISO8859-1
-iso8859-15/XLC_LOCALE: tn_ZA.ISO8859-15
-iso8859-9/XLC_LOCALE: tr_TR.ISO8859-9
-iso8859-1/XLC_LOCALE: ts_ZA.ISO8859-1
-tatar-cyr/XLC_LOCALE: tt_RU.TATAR-CYR
-koi8-c/XLC_LOCALE: tt_RU.KOI8-C
-iso8859-5/XLC_LOCALE: uk_UA.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: uk_UA.CP1251
-koi8-u/XLC_LOCALE: uk_UA.KOI8-U
-microsoft-cp1256/XLC_LOCALE: ur_PK.CP1256
-vi_VN.tcvn/XLC_LOCALE: vi_VN.TCVN
-vi_VN.viscii/XLC_LOCALE: vi_VN.VISCII
-iso8859-1/XLC_LOCALE: wa_BE.ISO8859-1
-iso8859-15/XLC_LOCALE: wa_BE.ISO8859-15
-iso8859-1/XLC_LOCALE: xh_ZA.ISO8859-1
-microsoft-cp1255/XLC_LOCALE: yi_US.CP1255
-zh_CN/XLC_LOCALE: zh_CN.eucCN
-zh_CN/XLC_LOCALE: zh_CN.gb2312
-zh_CN.gbk/XLC_LOCALE: zh_CN.gbk
-zh_CN.gb18030/XLC_LOCALE: zh_CN.gb18030
-zh_HK.big5/XLC_LOCALE: zh_HK.big5
-zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5-hkscs
-zh_HK.big5hkscs/XLC_LOCALE: zh_HK.Big5-HKSCS
-zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5hkscs
-zh_HK.big5hkscs/XLC_LOCALE: zh_HK.Big5HKSCS
-zh_TW.big5/XLC_LOCALE: zh_TW.big5
-zh_TW/XLC_LOCALE: zh_TW.eucTW
-iso8859-1/XLC_LOCALE: zu_ZA.ISO8859-1
-XCOMM Note: The UTF-8 locales don't work correctly yet. Work in progress.
-en_US.UTF-8/XLC_LOCALE: af_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: am_ET.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_AA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_AE.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_BH.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_DZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_EG.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_IQ.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_JO.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_KW.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_LB.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_LY.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_MA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_OM.UTF-8
-en_US.UTF-8/XLC_LOCALE: bs_BA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_QA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_SA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_SD.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_SY.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_TN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_YE.UTF-8
-en_US.UTF-8/XLC_LOCALE: as_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: az_AZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: a3_AZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: be_BY.UTF-8
-en_US.UTF-8/XLC_LOCALE: bg_BG.UTF-8
-en_US.UTF-8/XLC_LOCALE: bn_BD.UTF-8
-en_US.UTF-8/XLC_LOCALE: bn_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: bo_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: br_FR.UTF-8
-en_US.UTF-8/XLC_LOCALE: ca_AD.UTF-8
-en_US.UTF-8/XLC_LOCALE: ca_ES.UTF-8
-en_US.UTF-8/XLC_LOCALE: ca_FR.UTF-8
-en_US.UTF-8/XLC_LOCALE: ca_IT.UTF-8
-en_US.UTF-8/XLC_LOCALE: cs_CZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: cy_GB.UTF-8
-en_US.UTF-8/XLC_LOCALE: cs_CZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: da_DK.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_AT.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_BE.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_CH.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_DE.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_LI.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_LU.UTF-8
-en_US.UTF-8/XLC_LOCALE: el_CY.UTF-8
-en_US.UTF-8/XLC_LOCALE: el_GR.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_AU.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_BE.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_BZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_CA.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_GB.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_IE.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_JM.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_MT.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_NZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_TT.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_UK.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_US.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: eo_EO.UTF-8
-en_US.UTF-8/XLC_LOCALE: eo_XX.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_AR.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_BO.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_CL.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_CO.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_CR.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_DO.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_EC.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_ES.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_GT.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_HN.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_MX.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_NI.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_PA.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_PE.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_PR.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_PY.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_SV.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_US.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_UY.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_VE.UTF-8
-en_US.UTF-8/XLC_LOCALE: et_EE.UTF-8
-en_US.UTF-8/XLC_LOCALE: eu_ES.UTF-8
-en_US.UTF-8/XLC_LOCALE: fa_IR.UTF-8
-en_US.UTF-8/XLC_LOCALE: fi_FI.UTF-8
-en_US.UTF-8/XLC_LOCALE: fo_FO.UTF-8
-en_US.UTF-8/XLC_LOCALE: fr_BE.UTF-8
-en_US.UTF-8/XLC_LOCALE: fr_CA.UTF-8
-en_US.UTF-8/XLC_LOCALE: fr_CH.UTF-8
-en_US.UTF-8/XLC_LOCALE: fr_FR.UTF-8
-en_US.UTF-8/XLC_LOCALE: fr_LU.UTF-8
-en_US.UTF-8/XLC_LOCALE: ga_IE.UTF-8
-en_US.UTF-8/XLC_LOCALE: gd_GB.UTF-8
-en_US.UTF-8/XLC_LOCALE: gl_ES.UTF-8
-en_US.UTF-8/XLC_LOCALE: gu_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: gv_GB.UTF-8
-en_US.UTF-8/XLC_LOCALE: he_IL.UTF-8
-en_US.UTF-8/XLC_LOCALE: hi_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: hne_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: hr_HR.UTF-8
-en_US.UTF-8/XLC_LOCALE: hu_HU.UTF-8
-en_US.UTF-8/XLC_LOCALE: hy_AM.UTF-8
-en_US.UTF-8/XLC_LOCALE: id_ID.UTF-8
-en_US.UTF-8/XLC_LOCALE: is_IS.UTF-8
-en_US.UTF-8/XLC_LOCALE: it_CH.UTF-8
-en_US.UTF-8/XLC_LOCALE: it_IT.UTF-8
-en_US.UTF-8/XLC_LOCALE: iu_CA.UTF-8
-ja_JP.UTF-8/XLC_LOCALE: ja_JP.UTF-8
-en_US.UTF-8/XLC_LOCALE: ka_GE.UTF-8
-en_US.UTF-8/XLC_LOCALE: kl_GL.UTF-8
-en_US.UTF-8/XLC_LOCALE: kk_KZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: kn_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ks_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ks_IN@devanagari.UTF-8
-ko_KR.UTF-8/XLC_LOCALE: ko_KR.UTF-8
-en_US.UTF-8/XLC_LOCALE: kw_GB.UTF-8
-en_US.UTF-8/XLC_LOCALE: ky_KG.UTF-8
-en_US.UTF-8/XLC_LOCALE: lo_LA.UTF-8
-en_US.UTF-8/XLC_LOCALE: lt_LT.UTF-8
-en_US.UTF-8/XLC_LOCALE: lv_LV.UTF-8
-en_US.UTF-8/XLC_LOCALE: mai_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: mi_NZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: mk_MK.UTF-8
-en_US.UTF-8/XLC_LOCALE: ml_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: mr_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ms_MY.UTF-8
-en_US.UTF-8/XLC_LOCALE: mt_MT.UTF-8
-en_US.UTF-8/XLC_LOCALE: nl_BE.UTF-8
-en_US.UTF-8/XLC_LOCALE: nl_NL.UTF-8
-en_US.UTF-8/XLC_LOCALE: nb_NO.UTF-8
-en_US.UTF-8/XLC_LOCALE: nn_NO.UTF-8
-en_US.UTF-8/XLC_LOCALE: no_NO.UTF-8
-en_US.UTF-8/XLC_LOCALE: nr_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: nso_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ny_NO.UTF-8
-en_US.UTF-8/XLC_LOCALE: oc_FR.UTF-8
-en_US.UTF-8/XLC_LOCALE: or_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: pa_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: pa_PK.UTF-8
-en_US.UTF-8/XLC_LOCALE: pd_DE.UTF-8
-en_US.UTF-8/XLC_LOCALE: pd_US.UTF-8
-en_US.UTF-8/XLC_LOCALE: ph_PH.UTF-8
-en_US.UTF-8/XLC_LOCALE: pl_PL.UTF-8
-en_US.UTF-8/XLC_LOCALE: pp_AN.UTF-8
-pt_BR.UTF-8/XLC_LOCALE: pt_BR.UTF-8
-en_US.UTF-8/XLC_LOCALE: pt_PT.UTF-8
-en_US.UTF-8/XLC_LOCALE: ro_RO.UTF-8
-ru_RU.UTF-8/XLC_LOCALE: ru_RU.UTF-8
-en_US.UTF-8/XLC_LOCALE: ru_UA.UTF-8
-en_US.UTF-8/XLC_LOCALE: rw_RW.UTF-8
-en_US.UTF-8/XLC_LOCALE: sa_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: sd_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: sd_IN@devanagari.UTF-8
-en_US.UTF-8/XLC_LOCALE: se_NO.UTF-8
-en_US.UTF-8/XLC_LOCALE: sh_BA.UTF-8
-en_US.UTF-8/XLC_LOCALE: sh_YU.UTF-8
-en_US.UTF-8/XLC_LOCALE: si_LK.UTF-8
-en_US.UTF-8/XLC_LOCALE: sk_SK.UTF-8
-en_US.UTF-8/XLC_LOCALE: sl_SI.UTF-8
-en_US.UTF-8/XLC_LOCALE: sq_AL.UTF-8
-en_US.UTF-8/XLC_LOCALE: sr_CS.UTF-8
-en_US.UTF-8/XLC_LOCALE: sr_ME.UTF-8
-en_US.UTF-8/XLC_LOCALE: sr_RS.UTF-8
-en_US.UTF-8/XLC_LOCALE: sr_YU.UTF-8
-en_US.UTF-8/XLC_LOCALE: ss_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: st_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: sv_FI.UTF-8
-en_US.UTF-8/XLC_LOCALE: sv_SE.UTF-8
-en_US.UTF-8/XLC_LOCALE: ta_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: te_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: tg_TJ.UTF-8
-th_TH.UTF-8/XLC_LOCALE: th_TH.UTF-8
-en_US.UTF-8/XLC_LOCALE: ti_ER.UTF-8
-en_US.UTF-8/XLC_LOCALE: ti_ET.UTF-8
-en_US.UTF-8/XLC_LOCALE: tl_PH.UTF-8
-en_US.UTF-8/XLC_LOCALE: tn_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: tr_TR.UTF-8
-en_US.UTF-8/XLC_LOCALE: ts_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: tt_RU.UTF-8
-en_US.UTF-8/XLC_LOCALE: uk_UA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ur_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ur_PK.UTF-8
-en_US.UTF-8/XLC_LOCALE: uz_UZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: ve_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: vi_VN.UTF-8
-en_US.UTF-8/XLC_LOCALE: wa_BE.UTF-8
-en_US.UTF-8/XLC_LOCALE: xh_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: yi_US.UTF-8
-en_US.UTF-8/XLC_LOCALE: ne_NP.UTF-8
-zh_CN.UTF-8/XLC_LOCALE: zh_CN.UTF-8
-zh_HK.UTF-8/XLC_LOCALE: zh_HK.UTF-8
-zh_CN.UTF-8/XLC_LOCALE: zh_SG.UTF-8
-zh_TW.UTF-8/XLC_LOCALE: zh_TW.UTF-8
-en_US.UTF-8/XLC_LOCALE: zu_ZA.UTF-8
-#ifdef __uxp__
-ja.U90/XLC_LOCALE: ja_JP.U90
-ja.S90/XLC_LOCALE: ja_JP.S90
-#endif
+XCOMM
+XCOMM This file contains locale database file names
+XCOMM The first word is the locale database file name and
+XCOMM the second word is the full locale name.
+XCOMM
+XCOMM
+
+C/XLC_LOCALE: C
+iso8859-1/XLC_LOCALE: af_ZA.ISO8859-1
+iso8859-6/XLC_LOCALE: ar_AA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_BH.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_DZ.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_EG.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_IQ.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_JO.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_KW.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_LB.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_LY.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_MA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_OM.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_QA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_SA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_SD.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_SY.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_TN.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_YE.ISO8859-6
+iso8859-9e/XLC_LOCALE: az_AZ.ISO8859-9E
+koi8-c/XLC_LOCALE: az_AZ.KOI8-C
+iso8859-5/XLC_LOCALE: be_BY.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: be_BY.CP1251
+iso8859-5/XLC_LOCALE: bg_BG.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: bg_BG.CP1251
+koi8-r/XLC_LOCALE: bg_BG.KOI8-R
+iso8859-2/XLC_LOCALE: bs_BA.ISO8859-2
+iso8859-1/XLC_LOCALE: br_FR.ISO8859-1
+iso8859-14/XLC_LOCALE: br_FR.ISO8859-14
+iso8859-15/XLC_LOCALE: br_FR.ISO8859-15
+iso8859-1/XLC_LOCALE: ca_AD.ISO8859-1
+iso8859-15/XLC_LOCALE: ca_AD.ISO8859-15
+iso8859-1/XLC_LOCALE: ca_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: ca_ES.ISO8859-15
+iso8859-1/XLC_LOCALE: ca_FR.ISO8859-1
+iso8859-15/XLC_LOCALE: ca_FR.ISO8859-15
+iso8859-1/XLC_LOCALE: ca_IT.ISO8859-1
+iso8859-15/XLC_LOCALE: ca_IT.ISO8859-15
+iso8859-2/XLC_LOCALE: cs_CZ.ISO8859-2
+iso8859-1/XLC_LOCALE: cy_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: cy_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: cy_GB.ISO8859-15
+iso8859-2/XLC_LOCALE: cz_CZ.ISO8859-2
+iso8859-1/XLC_LOCALE: da_DK.ISO8859-1
+iso8859-15/XLC_LOCALE: da_DK.ISO8859-15
+iso8859-1/XLC_LOCALE: de_AT.ISO8859-1
+iso8859-15/XLC_LOCALE: de_AT.ISO8859-15
+iso8859-1/XLC_LOCALE: de_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: de_BE.ISO8859-15
+iso8859-1/XLC_LOCALE: de_CH.ISO8859-1
+iso8859-15/XLC_LOCALE: de_CH.ISO8859-15
+iso8859-1/XLC_LOCALE: de_DE.ISO8859-1
+iso8859-15/XLC_LOCALE: de_DE.ISO8859-15
+iso8859-1/XLC_LOCALE: de_LI.ISO8859-1
+iso8859-1/XLC_LOCALE: de_LU.ISO8859-1
+iso8859-15/XLC_LOCALE: de_LU.ISO8859-15
+iso8859-7/XLC_LOCALE: el_GR.ISO8859-7
+iso8859-15/XLC_LOCALE: el_GR.ISO8859-15
+iso8859-1/XLC_LOCALE: en_AU.ISO8859-1
+iso8859-1/XLC_LOCALE: en_BE.ISO8859-1
+iso8859-1/XLC_LOCALE: en_BZ.ISO8859-1
+iso8859-1/XLC_LOCALE: en_BW.ISO8859-1
+iso8859-1/XLC_LOCALE: en_CA.ISO8859-1
+iso8859-1/XLC_LOCALE: en_GB.ISO8859-1
+iso8859-15/XLC_LOCALE: en_GB.ISO8859-15
+iso8859-1/XLC_LOCALE: en_HK.ISO8859-1
+iso8859-1/XLC_LOCALE: en_IE.ISO8859-1
+iso8859-15/XLC_LOCALE: en_IE.ISO8859-15
+iso8859-15/XLC_LOCALE: en_IN.ISO8859-15
+iso8859-1/XLC_LOCALE: en_JM.ISO8859-1
+iso8859-1/XLC_LOCALE: en_NZ.ISO8859-1
+iso8859-1/XLC_LOCALE: en_PH.ISO8859-1
+iso8859-1/XLC_LOCALE: en_SG.ISO8859-1
+iso8859-1/XLC_LOCALE: en_TT.ISO8859-1
+iso8859-1/XLC_LOCALE: en_UK.ISO8859-1
+iso8859-15/XLC_LOCALE: en_UK.ISO8859-15
+iso8859-1/XLC_LOCALE: en_US.ISO8859-1
+iso8859-15/XLC_LOCALE: en_US.ISO8859-15
+iso8859-1/XLC_LOCALE: en_ZA.ISO8859-1
+iso8859-15/XLC_LOCALE: en_ZA.ISO8859-15
+iso8859-3/XLC_LOCALE: eo_EO.ISO8859-3
+iso8859-3/XLC_LOCALE: eo_XX.ISO8859-3
+iso8859-1/XLC_LOCALE: es_AR.ISO8859-1
+iso8859-1/XLC_LOCALE: es_BO.ISO8859-1
+iso8859-1/XLC_LOCALE: es_CL.ISO8859-1
+iso8859-1/XLC_LOCALE: es_CO.ISO8859-1
+iso8859-1/XLC_LOCALE: es_CR.ISO8859-1
+iso8859-1/XLC_LOCALE: es_DO.ISO8859-1
+iso8859-1/XLC_LOCALE: es_EC.ISO8859-1
+iso8859-1/XLC_LOCALE: es_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: es_ES.ISO8859-15
+iso8859-1/XLC_LOCALE: es_GT.ISO8859-1
+iso8859-1/XLC_LOCALE: es_HN.ISO8859-1
+iso8859-1/XLC_LOCALE: es_MX.ISO8859-1
+iso8859-1/XLC_LOCALE: es_NI.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PA.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PE.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PR.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PY.ISO8859-1
+iso8859-1/XLC_LOCALE: es_SV.ISO8859-1
+iso8859-1/XLC_LOCALE: es_US.ISO8859-1
+iso8859-1/XLC_LOCALE: es_UY.ISO8859-1
+iso8859-1/XLC_LOCALE: es_VE.ISO8859-1
+iso8859-1/XLC_LOCALE: et_EE.ISO8859-1
+iso8859-4/XLC_LOCALE: et_EE.ISO8859-4
+iso8859-13/XLC_LOCALE: et_EE.ISO8859-13
+iso8859-15/XLC_LOCALE: et_EE.ISO8859-15
+iso8859-1/XLC_LOCALE: eu_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: eu_ES.ISO8859-15
+isiri-3342/XLC_LOCALE: fa_IR.ISIRI-3342
+iso8859-1/XLC_LOCALE: fi_FI.ISO8859-1
+iso8859-15/XLC_LOCALE: fi_FI.ISO8859-15
+iso8859-1/XLC_LOCALE: fo_FO.ISO8859-1
+iso8859-15/XLC_LOCALE: fo_FO.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_BE.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_CA.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_CA.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_CH.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_CH.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_FR.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_FR.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_LU.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_LU.ISO8859-15
+iso8859-1/XLC_LOCALE: ga_IE.ISO8859-1
+iso8859-14/XLC_LOCALE: ga_IE.ISO8859-14
+iso8859-15/XLC_LOCALE: ga_IE.ISO8859-15
+iso8859-1/XLC_LOCALE: gd_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: gd_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: gd_GB.ISO8859-15
+iso8859-1/XLC_LOCALE: gl_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: gl_ES.ISO8859-15
+iso8859-1/XLC_LOCALE: gv_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: gv_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: gv_GB.ISO8859-15
+iso8859-8/XLC_LOCALE: he_IL.ISO8859-8
+microsoft-cp1255/XLC_LOCALE: he_IL.CP1255
+iscii-dev/XLC_LOCALE: hi_IN.ISCII-DEV
+iso8859-2/XLC_LOCALE: hr_HR.ISO8859-2
+iso8859-2/XLC_LOCALE: hu_HU.ISO8859-2
+armscii-8/XLC_LOCALE: hy_AM.ARMSCII-8
+iso8859-1/XLC_LOCALE: id_ID.ISO8859-1
+iso8859-1/XLC_LOCALE: is_IS.ISO8859-1
+iso8859-15/XLC_LOCALE: is_IS.ISO8859-15
+iso8859-1/XLC_LOCALE: it_CH.ISO8859-1
+iso8859-1/XLC_LOCALE: it_IT.ISO8859-1
+iso8859-15/XLC_LOCALE: it_IT.ISO8859-15
+ja/XLC_LOCALE: ja_JP.eucJP
+ja.SJIS/XLC_LOCALE: ja_JP.SJIS
+ja.JIS/XLC_LOCALE: ja_JP.JIS7
+georgian-academy/XLC_LOCALE: ka_GE.GEORGIAN-ACADEMY
+georgian-ps/XLC_LOCALE: ka_GE.GEORGIAN-PS
+iso8859-1/XLC_LOCALE: kl_GL.ISO8859-1
+ko/XLC_LOCALE: ko_KR.eucKR
+iso8859-1/XLC_LOCALE: kw_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: kw_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: kw_GB.ISO8859-15
+ibm-cp1133/XLC_LOCALE: lo_LA.IBM-CP1133
+mulelao-1/XLC_LOCALE: lo_LA.MULELAO-1
+iso8859-4/XLC_LOCALE: lt_LT.ISO8859-4
+iso8859-13/XLC_LOCALE: lt_LT.ISO8859-13
+iso8859-4/XLC_LOCALE: lv_LV.ISO8859-4
+iso8859-13/XLC_LOCALE: lv_LV.ISO8859-13
+iso8859-13/XLC_LOCALE: mi_NZ.ISO8859-13
+iso8859-5/XLC_LOCALE: mk_MK.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: mk_MK.CP1251
+iso8859-1/XLC_LOCALE: ms_MY.ISO8859-1
+iso8859-3/XLC_LOCALE: mt_MT.ISO8859-3
+iso8859-1/XLC_LOCALE: nb_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: nb_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: nl_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: nl_BE.ISO8859-15
+iso8859-1/XLC_LOCALE: nl_NL.ISO8859-1
+iso8859-15/XLC_LOCALE: nl_NL.ISO8859-15
+iso8859-1/XLC_LOCALE: nn_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: nn_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: no_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: no_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: nr_ZA.ISO8859-1
+iso8859-15/XLC_LOCALE: nso_ZA.ISO8859-15
+iso8859-1/XLC_LOCALE: ny_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: ny_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: oc_FR.ISO8859-1
+iso8859-15/XLC_LOCALE: oc_FR.ISO8859-15
+iso8859-1/XLC_LOCALE: pd_DE.ISO8859-1
+iso8859-1/XLC_LOCALE: ph_PH.ISO8859-1
+iso8859-2/XLC_LOCALE: pl_PL.ISO8859-2
+iso8859-1/XLC_LOCALE: pp_AN.ISO8859-1
+iso8859-1/XLC_LOCALE: pt_BR.ISO8859-1
+iso8859-1/XLC_LOCALE: pt_PT.ISO8859-1
+iso8859-15/XLC_LOCALE: pt_PT.ISO8859-15
+iso8859-2/XLC_LOCALE: ro_RO.ISO8859-2
+iso8859-5/XLC_LOCALE: ru_RU.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: ru_RU.CP1251
+koi8-r/XLC_LOCALE: ru_RU.KOI8-R
+koi8-u/XLC_LOCALE: ru_UA.KOI8-U
+iso8859-1/XLC_LOCALE: rw_RW.ISO8859-1
+iso8859-2/XLC_LOCALE: sh_YU.ISO8859-2
+iso8859-2/XLC_LOCALE: sk_SK.ISO8859-2
+iso8859-2/XLC_LOCALE: sl_SI.ISO8859-2
+iso8859-2/XLC_LOCALE: sq_AL.ISO8859-2
+iso8859-2/XLC_LOCALE: sr_CS.ISO8859-2
+iso8859-5/XLC_LOCALE: sr_CS.ISO8859-5
+iso8859-2/XLC_LOCALE: sr_YU.ISO8859-2
+iso8859-5/XLC_LOCALE: sr_YU.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: sr_YU.CP1251
+iso8859-1/XLC_LOCALE: ss_ZA.ISO8859-1
+iso8859-1/XLC_LOCALE: st_ZA.ISO8859-1
+iso8859-1/XLC_LOCALE: sv_FI.ISO8859-1
+iso8859-15/XLC_LOCALE: sv_FI.ISO8859-15
+iso8859-1/XLC_LOCALE: sv_SE.ISO8859-1
+iso8859-15/XLC_LOCALE: sv_SE.ISO8859-15
+tscii-0/XLC_LOCALE: ta_IN.TSCII-0
+koi8-c/XLC_LOCALE: tg_TJ.KOI8-C
+th_TH/XLC_LOCALE: th_TH.TIS620
+iso8859-11/XLC_LOCALE: th_TH.ISO8859-11
+iso8859-1/XLC_LOCALE: tl_PH.ISO8859-1
+iso8859-15/XLC_LOCALE: tn_ZA.ISO8859-15
+iso8859-9/XLC_LOCALE: tr_TR.ISO8859-9
+iso8859-1/XLC_LOCALE: ts_ZA.ISO8859-1
+tatar-cyr/XLC_LOCALE: tt_RU.TATAR-CYR
+koi8-c/XLC_LOCALE: tt_RU.KOI8-C
+iso8859-5/XLC_LOCALE: uk_UA.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: uk_UA.CP1251
+koi8-u/XLC_LOCALE: uk_UA.KOI8-U
+microsoft-cp1256/XLC_LOCALE: ur_PK.CP1256
+vi_VN.tcvn/XLC_LOCALE: vi_VN.TCVN
+vi_VN.viscii/XLC_LOCALE: vi_VN.VISCII
+iso8859-1/XLC_LOCALE: wa_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: wa_BE.ISO8859-15
+iso8859-1/XLC_LOCALE: xh_ZA.ISO8859-1
+microsoft-cp1255/XLC_LOCALE: yi_US.CP1255
+zh_CN/XLC_LOCALE: zh_CN.eucCN
+zh_CN/XLC_LOCALE: zh_CN.gb2312
+zh_CN.gbk/XLC_LOCALE: zh_CN.gbk
+zh_CN.gb18030/XLC_LOCALE: zh_CN.gb18030
+zh_HK.big5/XLC_LOCALE: zh_HK.big5
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5-hkscs
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.Big5-HKSCS
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5hkscs
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.Big5HKSCS
+zh_TW.big5/XLC_LOCALE: zh_TW.big5
+zh_TW/XLC_LOCALE: zh_TW.eucTW
+iso8859-1/XLC_LOCALE: zu_ZA.ISO8859-1
+XCOMM Note: The UTF-8 locales don't work correctly yet. Work in progress.
+en_US.UTF-8/XLC_LOCALE: af_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: am_ET.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_AA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_AE.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_BH.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_DZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_EG.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_IQ.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_JO.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_KW.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_LB.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_LY.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_MA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_OM.UTF-8
+en_US.UTF-8/XLC_LOCALE: bs_BA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_QA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_SA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_SD.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_SY.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_TN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_YE.UTF-8
+en_US.UTF-8/XLC_LOCALE: as_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: az_AZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: a3_AZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: be_BY.UTF-8
+en_US.UTF-8/XLC_LOCALE: bg_BG.UTF-8
+en_US.UTF-8/XLC_LOCALE: bn_BD.UTF-8
+en_US.UTF-8/XLC_LOCALE: bn_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: bo_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: br_FR.UTF-8
+en_US.UTF-8/XLC_LOCALE: ca_AD.UTF-8
+en_US.UTF-8/XLC_LOCALE: ca_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: ca_FR.UTF-8
+en_US.UTF-8/XLC_LOCALE: ca_IT.UTF-8
+en_US.UTF-8/XLC_LOCALE: cs_CZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: cy_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: cs_CZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: da_DK.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_AT.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_CH.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_DE.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_LI.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_LU.UTF-8
+en_US.UTF-8/XLC_LOCALE: el_CY.UTF-8
+en_US.UTF-8/XLC_LOCALE: el_GR.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_AU.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_BZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_CA.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_IE.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_JM.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_MT.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_NZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_TT.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_UK.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_US.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: eo_EO.UTF-8
+en_US.UTF-8/XLC_LOCALE: eo_XX.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_AR.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_BO.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_CL.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_CO.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_CR.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_DO.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_EC.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_GT.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_HN.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_MX.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_NI.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PA.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PE.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PR.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PY.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_SV.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_US.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_UY.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_VE.UTF-8
+en_US.UTF-8/XLC_LOCALE: et_EE.UTF-8
+en_US.UTF-8/XLC_LOCALE: eu_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: fa_IR.UTF-8
+en_US.UTF-8/XLC_LOCALE: fi_FI.UTF-8
+en_US.UTF-8/XLC_LOCALE: fo_FO.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_CA.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_CH.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_FR.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_LU.UTF-8
+en_US.UTF-8/XLC_LOCALE: ga_IE.UTF-8
+en_US.UTF-8/XLC_LOCALE: gd_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: gl_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: gu_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: gv_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: he_IL.UTF-8
+en_US.UTF-8/XLC_LOCALE: hi_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: hne_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: hr_HR.UTF-8
+en_US.UTF-8/XLC_LOCALE: hu_HU.UTF-8
+en_US.UTF-8/XLC_LOCALE: hy_AM.UTF-8
+en_US.UTF-8/XLC_LOCALE: id_ID.UTF-8
+en_US.UTF-8/XLC_LOCALE: is_IS.UTF-8
+en_US.UTF-8/XLC_LOCALE: it_CH.UTF-8
+en_US.UTF-8/XLC_LOCALE: it_IT.UTF-8
+en_US.UTF-8/XLC_LOCALE: iu_CA.UTF-8
+ja_JP.UTF-8/XLC_LOCALE: ja_JP.UTF-8
+en_US.UTF-8/XLC_LOCALE: ka_GE.UTF-8
+en_US.UTF-8/XLC_LOCALE: kl_GL.UTF-8
+en_US.UTF-8/XLC_LOCALE: kk_KZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: kn_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ks_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ks_IN@devanagari.UTF-8
+ko_KR.UTF-8/XLC_LOCALE: ko_KR.UTF-8
+en_US.UTF-8/XLC_LOCALE: kw_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: ky_KG.UTF-8
+en_US.UTF-8/XLC_LOCALE: lo_LA.UTF-8
+en_US.UTF-8/XLC_LOCALE: lt_LT.UTF-8
+en_US.UTF-8/XLC_LOCALE: lv_LV.UTF-8
+en_US.UTF-8/XLC_LOCALE: mai_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: mi_NZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: mk_MK.UTF-8
+en_US.UTF-8/XLC_LOCALE: ml_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: mr_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ms_MY.UTF-8
+en_US.UTF-8/XLC_LOCALE: mt_MT.UTF-8
+en_US.UTF-8/XLC_LOCALE: nl_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: nl_NL.UTF-8
+en_US.UTF-8/XLC_LOCALE: nb_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: nn_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: no_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: nr_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: nso_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ny_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: oc_FR.UTF-8
+en_US.UTF-8/XLC_LOCALE: or_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: pa_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: pa_PK.UTF-8
+en_US.UTF-8/XLC_LOCALE: pd_DE.UTF-8
+en_US.UTF-8/XLC_LOCALE: pd_US.UTF-8
+en_US.UTF-8/XLC_LOCALE: ph_PH.UTF-8
+en_US.UTF-8/XLC_LOCALE: pl_PL.UTF-8
+en_US.UTF-8/XLC_LOCALE: pp_AN.UTF-8
+pt_BR.UTF-8/XLC_LOCALE: pt_BR.UTF-8
+en_US.UTF-8/XLC_LOCALE: pt_PT.UTF-8
+en_US.UTF-8/XLC_LOCALE: ro_RO.UTF-8
+ru_RU.UTF-8/XLC_LOCALE: ru_RU.UTF-8
+en_US.UTF-8/XLC_LOCALE: ru_UA.UTF-8
+en_US.UTF-8/XLC_LOCALE: rw_RW.UTF-8
+en_US.UTF-8/XLC_LOCALE: sa_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: sd_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: sd_IN@devanagari.UTF-8
+en_US.UTF-8/XLC_LOCALE: se_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: sh_BA.UTF-8
+en_US.UTF-8/XLC_LOCALE: sh_YU.UTF-8
+en_US.UTF-8/XLC_LOCALE: si_LK.UTF-8
+en_US.UTF-8/XLC_LOCALE: sk_SK.UTF-8
+en_US.UTF-8/XLC_LOCALE: sl_SI.UTF-8
+en_US.UTF-8/XLC_LOCALE: sq_AL.UTF-8
+en_US.UTF-8/XLC_LOCALE: sr_CS.UTF-8
+en_US.UTF-8/XLC_LOCALE: sr_ME.UTF-8
+en_US.UTF-8/XLC_LOCALE: sr_RS.UTF-8
+en_US.UTF-8/XLC_LOCALE: sr_YU.UTF-8
+en_US.UTF-8/XLC_LOCALE: ss_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: st_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: sv_FI.UTF-8
+en_US.UTF-8/XLC_LOCALE: sv_SE.UTF-8
+en_US.UTF-8/XLC_LOCALE: ta_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: te_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: tg_TJ.UTF-8
+th_TH.UTF-8/XLC_LOCALE: th_TH.UTF-8
+en_US.UTF-8/XLC_LOCALE: ti_ER.UTF-8
+en_US.UTF-8/XLC_LOCALE: ti_ET.UTF-8
+en_US.UTF-8/XLC_LOCALE: tl_PH.UTF-8
+en_US.UTF-8/XLC_LOCALE: tn_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: tr_TR.UTF-8
+en_US.UTF-8/XLC_LOCALE: ts_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: tt_RU.UTF-8
+en_US.UTF-8/XLC_LOCALE: uk_UA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ur_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ur_PK.UTF-8
+en_US.UTF-8/XLC_LOCALE: uz_UZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: ve_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: vi_VN.UTF-8
+en_US.UTF-8/XLC_LOCALE: wa_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: xh_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: yi_US.UTF-8
+en_US.UTF-8/XLC_LOCALE: ne_NP.UTF-8
+zh_CN.UTF-8/XLC_LOCALE: zh_CN.UTF-8
+zh_HK.UTF-8/XLC_LOCALE: zh_HK.UTF-8
+zh_CN.UTF-8/XLC_LOCALE: zh_SG.UTF-8
+zh_TW.UTF-8/XLC_LOCALE: zh_TW.UTF-8
+en_US.UTF-8/XLC_LOCALE: zu_ZA.UTF-8
+#ifdef __uxp__
+ja.U90/XLC_LOCALE: ja_JP.U90
+ja.S90/XLC_LOCALE: ja_JP.S90
+#endif
diff --git a/libX11/nls/microsoft-cp1251/XI18N_OBJS b/libX11/nls/microsoft-cp1251/XI18N_OBJS
index 98c5ef5ed..8bad8beb2 100644
--- a/libX11/nls/microsoft-cp1251/XI18N_OBJS
+++ b/libX11/nls/microsoft-cp1251/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for microsoft-cp1251 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for microsoft-cp1251 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/microsoft-cp1251/XLC_LOCALE.pre b/libX11/nls/microsoft-cp1251/XLC_LOCALE.pre
index 77b9cd26e..743c4618f 100644
--- a/libX11/nls/microsoft-cp1251/XLC_LOCALE.pre
+++ b/libX11/nls/microsoft-cp1251/XLC_LOCALE.pre
@@ -1,85 +1,85 @@
-XCOMM XLocale Database Sample for microsoft-cp1251.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary MICROSOFT-CP1251:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name MICROSOFT-CP1251:GR
- }
- font {
- primary MICROSOFT-CP1251:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name MICROSOFT-CP1251
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name MICROSOFT-CP1251
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding MICROSOFT-CP1251:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding MICROSOFT-CP1251:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for microsoft-cp1251.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MICROSOFT-CP1251:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name MICROSOFT-CP1251:GR
+ }
+ font {
+ primary MICROSOFT-CP1251:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MICROSOFT-CP1251
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MICROSOFT-CP1251
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MICROSOFT-CP1251:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MICROSOFT-CP1251:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/microsoft-cp1255/XI18N_OBJS b/libX11/nls/microsoft-cp1255/XI18N_OBJS
index 3d0d9a5db..c468efb03 100644
--- a/libX11/nls/microsoft-cp1255/XI18N_OBJS
+++ b/libX11/nls/microsoft-cp1255/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for microsoft-cp1255 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for microsoft-cp1255 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/microsoft-cp1255/XLC_LOCALE.pre b/libX11/nls/microsoft-cp1255/XLC_LOCALE.pre
index a9bea9c6c..26f361880 100644
--- a/libX11/nls/microsoft-cp1255/XLC_LOCALE.pre
+++ b/libX11/nls/microsoft-cp1255/XLC_LOCALE.pre
@@ -1,85 +1,85 @@
-XCOMM XLocale Database Sample for microsoft-cp1255.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary MICROSOFT-CP1255:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name MICROSOFT-CP1255:GR
- }
- font {
- primary MICROSOFT-CP1255:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name MICROSOFT-CP1255
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name MICROSOFT-CP1255
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding MICROSOFT-CP1255:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding MICROSOFT-CP1255:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for microsoft-cp1255.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MICROSOFT-CP1255:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name MICROSOFT-CP1255:GR
+ }
+ font {
+ primary MICROSOFT-CP1255:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MICROSOFT-CP1255
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MICROSOFT-CP1255
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MICROSOFT-CP1255:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MICROSOFT-CP1255:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/microsoft-cp1256/XI18N_OBJS b/libX11/nls/microsoft-cp1256/XI18N_OBJS
index e58719d06..228ae4d73 100644
--- a/libX11/nls/microsoft-cp1256/XI18N_OBJS
+++ b/libX11/nls/microsoft-cp1256/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for microsoft-cp1256 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for microsoft-cp1256 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/microsoft-cp1256/XLC_LOCALE.pre b/libX11/nls/microsoft-cp1256/XLC_LOCALE.pre
index 7fdb074f1..2c29af79d 100644
--- a/libX11/nls/microsoft-cp1256/XLC_LOCALE.pre
+++ b/libX11/nls/microsoft-cp1256/XLC_LOCALE.pre
@@ -1,85 +1,85 @@
-XCOMM XLocale Database Sample for microsoft-cp1256.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary MICROSOFT-CP1256:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name MICROSOFT-CP1256:GR
- }
- font {
- primary MICROSOFT-CP1256:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name MICROSOFT-CP1256
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name MICROSOFT-CP1256
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding MICROSOFT-CP1256:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding MICROSOFT-CP1256:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for microsoft-cp1256.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MICROSOFT-CP1256:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name MICROSOFT-CP1256:GR
+ }
+ font {
+ primary MICROSOFT-CP1256:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MICROSOFT-CP1256
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MICROSOFT-CP1256
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MICROSOFT-CP1256:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MICROSOFT-CP1256:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/mulelao-1/Compose.pre b/libX11/nls/mulelao-1/Compose.pre
index 89302cc89..c35be0f76 100644
--- a/libX11/nls/mulelao-1/Compose.pre
+++ b/libX11/nls/mulelao-1/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM mulelao-1 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM mulelao-1 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/mulelao-1/XI18N_OBJS b/libX11/nls/mulelao-1/XI18N_OBJS
index 10d7248f8..dbb9f0ee7 100644
--- a/libX11/nls/mulelao-1/XI18N_OBJS
+++ b/libX11/nls/mulelao-1/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for mulelao-1 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for mulelao-1 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/mulelao-1/XLC_LOCALE.pre b/libX11/nls/mulelao-1/XLC_LOCALE.pre
index 45a63452f..03676560d 100644
--- a/libX11/nls/mulelao-1/XLC_LOCALE.pre
+++ b/libX11/nls/mulelao-1/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for mulelao-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary MULELAO-1:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset MULELAO-1:GR
- font MULELAO-1:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name MULELAO-1
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name MULELAO-1
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding MULELAO-1:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding MULELAO-1:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MULELAO-1:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset MULELAO-1:GR
+ font MULELAO-1:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MULELAO-1
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MULELAO-1
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MULELAO-1:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MULELAO-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/nokhchi-1/XI18N_OBJS b/libX11/nls/nokhchi-1/XI18N_OBJS
index 58b1d01f7..b57cb6d1f 100644
--- a/libX11/nls/nokhchi-1/XI18N_OBJS
+++ b/libX11/nls/nokhchi-1/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for nokhchi-1 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for nokhchi-1 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/nokhchi-1/XLC_LOCALE.pre b/libX11/nls/nokhchi-1/XLC_LOCALE.pre
index 303867908..8fe7205d0 100644
--- a/libX11/nls/nokhchi-1/XLC_LOCALE.pre
+++ b/libX11/nls/nokhchi-1/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for mulelao-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary NOKHCHI-1:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset NOKHCHI-1:GR
- font NOKHCHI-1:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name NOKHCHI-1
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name NOKHCHI-1
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding NOKHCHI-1:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding NOKHCHI-1:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary NOKHCHI-1:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset NOKHCHI-1:GR
+ font NOKHCHI-1:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name NOKHCHI-1
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name NOKHCHI-1
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding NOKHCHI-1:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding NOKHCHI-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/pt_BR.UTF-8/XI18N_OBJS b/libX11/nls/pt_BR.UTF-8/XI18N_OBJS
index 8eac6d8af..745b001d3 100644
--- a/libX11/nls/pt_BR.UTF-8/XI18N_OBJS
+++ b/libX11/nls/pt_BR.UTF-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for pt_BR.UTF-8 locale
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for pt_BR.UTF-8 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/pt_BR.UTF-8/XLC_LOCALE.pre b/libX11/nls/pt_BR.UTF-8/XLC_LOCALE.pre
index e53dd5080..64ecc5d37 100644
--- a/libX11/nls/pt_BR.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/pt_BR.UTF-8/XLC_LOCALE.pre
@@ -1,142 +1,142 @@
-XCOMM XLocale Database Sample for pt_BR.UTF-8
-XCOMM
-XCOMM Based on XLocale Database Sample for en_US.UTF-8
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-XCOMM fs2 class (Kanji)
-fs2 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- }
-}
-XCOMM fs3 class (Korean Character)
-fs3 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- }
-}
-XCOMM fs4 class (Chinese Han Character)
-fs4 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-XCOMM fs5 class (Half Kana)
-fs5 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM ISO10646 is last, per Roland Mainz in
-XCOMM http://bugs.freedesktop.org/show_bug.cgi?id=1896
-fs6 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 2
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side GL
- length 2
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\
- KSC5601.1987-1:GL; KSC5601.1987-1:GR
-}
-
-XCOMM cs4 class
-cs4 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs5 class
-cs5 {
- side GR
- length 1
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs6 class
-cs6 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for pt_BR.UTF-8
+XCOMM
+XCOMM Based on XLocale Database Sample for en_US.UTF-8
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+XCOMM fs2 class (Kanji)
+fs2 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+XCOMM fs3 class (Korean Character)
+fs3 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+XCOMM fs4 class (Chinese Han Character)
+fs4 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs5 class (Half Kana)
+fs5 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM ISO10646 is last, per Roland Mainz in
+XCOMM http://bugs.freedesktop.org/show_bug.cgi?id=1896
+fs6 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\
+ KSC5601.1987-1:GL; KSC5601.1987-1:GR
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ru_RU.UTF-8/Compose.pre b/libX11/nls/ru_RU.UTF-8/Compose.pre
index 6c2c4114d..5a4dd18b9 100644
--- a/libX11/nls/ru_RU.UTF-8/Compose.pre
+++ b/libX11/nls/ru_RU.UTF-8/Compose.pre
@@ -1 +1 @@
-include "X11_LOCALEDATADIR/en_US.UTF-8/Compose"
+include "X11_LOCALEDATADIR/en_US.UTF-8/Compose"
diff --git a/libX11/nls/ru_RU.UTF-8/XI18N_OBJS b/libX11/nls/ru_RU.UTF-8/XI18N_OBJS
index 842fc27f3..1f8498788 100644
--- a/libX11/nls/ru_RU.UTF-8/XI18N_OBJS
+++ b/libX11/nls/ru_RU.UTF-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ru_RU.UTF-8 locale
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ru_RU.UTF-8 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ru_RU.UTF-8/XLC_LOCALE.pre b/libX11/nls/ru_RU.UTF-8/XLC_LOCALE.pre
index d2f397e47..9ae59e166 100644
--- a/libX11/nls/ru_RU.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/ru_RU.UTF-8/XLC_LOCALE.pre
@@ -1,169 +1,169 @@
-XCOMM
-XCOMM XLocale Database Sample for ru_RU.UTF-8
-XCOMM Derived from en_US.UTF-8
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-XCOMM fs2 class (KOI8-R)
-fs2 {
- charset {
- name KOI8-R:GR
- }
- font {
- primary KOI8-R:GR
- }
-}
-XCOMM fs3 class (MICROSOFT-CP1251)
-fs3 {
- charset {
- name MICROSOFT-CP1251:GR
- }
- font {
- primary MICROSOFT-CP1251:GR
- }
-}
-XCOMM fs4 class (ISO8859-5)
-fs4 {
- charset {
- name ISO8859-5:GR
- }
- font {
- primary ISO8859-5:GR
- }
-}
-XCOMM fs5 class (Kanji)
-fs5 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- }
-}
-XCOMM fs6 class (Korean Character)
-fs6 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- }
-}
-XCOMM fs7 class (Chinese Han Character)
-fs7 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-XCOMM fs8 class (Half Kana)
-fs8 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM ISO10646 should come last so the fonts above will actually be used
-XCOMM fs9 class
-fs9 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 2
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
-
-}
-
-XCOMM cs3 class
-cs3 {
- side GL
- length 2
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
-
-}
-
-XCOMM cs4 class
-cs4 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs5 class
-cs5 {
- side GR
- length 1
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs6 class
-cs6 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM
+XCOMM XLocale Database Sample for ru_RU.UTF-8
+XCOMM Derived from en_US.UTF-8
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+XCOMM fs2 class (KOI8-R)
+fs2 {
+ charset {
+ name KOI8-R:GR
+ }
+ font {
+ primary KOI8-R:GR
+ }
+}
+XCOMM fs3 class (MICROSOFT-CP1251)
+fs3 {
+ charset {
+ name MICROSOFT-CP1251:GR
+ }
+ font {
+ primary MICROSOFT-CP1251:GR
+ }
+}
+XCOMM fs4 class (ISO8859-5)
+fs4 {
+ charset {
+ name ISO8859-5:GR
+ }
+ font {
+ primary ISO8859-5:GR
+ }
+}
+XCOMM fs5 class (Kanji)
+fs5 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+XCOMM fs6 class (Korean Character)
+fs6 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+XCOMM fs7 class (Chinese Han Character)
+fs7 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs8 class (Half Kana)
+fs8 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM ISO10646 should come last so the fonts above will actually be used
+XCOMM fs9 class
+fs9 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
+
+}
+
+XCOMM cs3 class
+cs3 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
+
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/tatar-cyr/XI18N_OBJS b/libX11/nls/tatar-cyr/XI18N_OBJS
index 074f2a173..fafb35ebe 100644
--- a/libX11/nls/tatar-cyr/XI18N_OBJS
+++ b/libX11/nls/tatar-cyr/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for tatar-cyr locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for tatar-cyr locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/tatar-cyr/XLC_LOCALE.pre b/libX11/nls/tatar-cyr/XLC_LOCALE.pre
index aaa95059e..45c12412a 100644
--- a/libX11/nls/tatar-cyr/XLC_LOCALE.pre
+++ b/libX11/nls/tatar-cyr/XLC_LOCALE.pre
@@ -1,85 +1,85 @@
-XCOMM XLocale Database Sample for tatar-cyr.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary TATAR-CYR:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name TATAR-CYR:GR
- }
- font {
- primary TATAR-CYR:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name TATAR-CYR
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name TATAR-CYR
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding TATAR-CYR:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding TATAR-CYR:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for tatar-cyr.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary TATAR-CYR:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name TATAR-CYR:GR
+ }
+ font {
+ primary TATAR-CYR:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name TATAR-CYR
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TATAR-CYR
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding TATAR-CYR:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding TATAR-CYR:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/th_TH.UTF-8/XI18N_OBJS b/libX11/nls/th_TH.UTF-8/XI18N_OBJS
index dec38b0f5..5fa487ffe 100644
--- a/libX11/nls/th_TH.UTF-8/XI18N_OBJS
+++ b/libX11/nls/th_TH.UTF-8/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for th_TH.UTF-8 locale
-#
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for th_TH.UTF-8 locale
+#
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/th_TH.UTF-8/XLC_LOCALE.pre b/libX11/nls/th_TH.UTF-8/XLC_LOCALE.pre
index f79091ad5..165675f67 100644
--- a/libX11/nls/th_TH.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/th_TH.UTF-8/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for th_TH
-XCOMM
-XCOMM
-XCOMM Modified from origial th_TH.TACTIS
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs1 {
- charset ISO8859-1:GL
- font ISO8859-1:GL
-}
-XCOMM fs1 class (Thai)
-fs2 {
- charset ISO8859-11:GR
- font ISO8859-11:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 3
-state_depend_encoding False
-
-
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-
-
-
-
-
-
-use_stdc_env True
-force_convert_to_mb True
-
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-
- wc_encoding \x30000000
- ct_encoding ISO8859-11:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for th_TH
+XCOMM
+XCOMM
+XCOMM Modified from origial th_TH.TACTIS
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs1 {
+ charset ISO8859-1:GL
+ font ISO8859-1:GL
+}
+XCOMM fs1 class (Thai)
+fs2 {
+ charset ISO8859-11:GR
+ font ISO8859-11:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 3
+state_depend_encoding False
+
+
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+
+
+
+
+
+use_stdc_env True
+force_convert_to_mb True
+
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+
+ wc_encoding \x30000000
+ ct_encoding ISO8859-11:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/th_TH/XI18N_OBJS b/libX11/nls/th_TH/XI18N_OBJS
index d677a002d..3b6fbbdd1 100644
--- a/libX11/nls/th_TH/XI18N_OBJS
+++ b/libX11/nls/th_TH/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for th_TH locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for th_TH locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/th_TH/XLC_LOCALE.pre b/libX11/nls/th_TH/XLC_LOCALE.pre
index 8530f0b0d..c349b3e8f 100644
--- a/libX11/nls/th_TH/XLC_LOCALE.pre
+++ b/libX11/nls/th_TH/XLC_LOCALE.pre
@@ -1,65 +1,65 @@
-XCOMM XLocale Database Sample for th_TH
-XCOMM
-XCOMM
-XCOMM Modified from origial th_TH.TACTIS
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset ISO8859-1:GL
- font ISO8859-1:GL
-}
-XCOMM fs1 class (Thai)
-fs1 {
- charset ISO8859-11:GR
- font ISO8859-11:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name TIS620
-mb_cur_max 1
-state_depend_encoding False
-
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-11:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for th_TH
+XCOMM
+XCOMM
+XCOMM Modified from origial th_TH.TACTIS
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset ISO8859-1:GL
+ font ISO8859-1:GL
+}
+XCOMM fs1 class (Thai)
+fs1 {
+ charset ISO8859-11:GR
+ font ISO8859-11:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TIS620
+mb_cur_max 1
+state_depend_encoding False
+
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-11:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/tscii-0/XI18N_OBJS b/libX11/nls/tscii-0/XI18N_OBJS
index 237a33798..c2d4ed7b6 100644
--- a/libX11/nls/tscii-0/XI18N_OBJS
+++ b/libX11/nls/tscii-0/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for tscii-0 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for tscii-0 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/tscii-0/XLC_LOCALE.pre b/libX11/nls/tscii-0/XLC_LOCALE.pre
index 617bfdfe3..04317ce1a 100644
--- a/libX11/nls/tscii-0/XLC_LOCALE.pre
+++ b/libX11/nls/tscii-0/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for mulelao-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary TSCII-0:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset TSCII-0:GR
- font TSCII-0:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name TSCII-0
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name TSCII-0
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding TSCII-0:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding TSCII-0:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary TSCII-0:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset TSCII-0:GR
+ font TSCII-0:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name TSCII-0
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TSCII-0
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding TSCII-0:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding TSCII-0:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/vi_VN.tcvn/Compose.pre b/libX11/nls/vi_VN.tcvn/Compose.pre
index 0f2279d36..bff4826f5 100644
--- a/libX11/nls/vi_VN.tcvn/Compose.pre
+++ b/libX11/nls/vi_VN.tcvn/Compose.pre
@@ -1,135 +1,135 @@
-XCOMM 1998/12/18 Le Hong Boi $
-XCOMM
-XCOMM TCVN 5712-2 Compose Sequences
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_grave> <space> : "`" grave
-<dead_hook> <space> : " " space
-<dead_tilde> <space> : "~" asciitilde
-<dead_acute> <space> : "'" apostrophe
-<dead_acute> <apostrophe> : "\264" acute
-XCOMM Accented Alphabet
-<dead_grave> <A> : "\200" Agrave
-<dead_grave> <a> : "\265" agrave
-<dead_hook> <A> : "\266" Ahook
-<dead_hook> <a> : "\266" ahook
-<dead_tilde> <A> : "\202" Atilde
-<dead_tilde> <a> : "\267" atilde
-<dead_acute> <A> : "\203" Aacute
-<dead_acute> <a> : "\270" aacute
-<dead_belowdot> <A> : "\271" Abelowdot
-<dead_belowdot> <a> : "\271" abelowdot
-<dead_grave> <Abreve> : "\273" Abrevegrave
-<dead_grave> <abreve> : "\273" abrevegrave
-<dead_hook> <Abreve> : "\274" Abrevehook
-<dead_hook> <abreve> : "\274" abrevehook
-<dead_tilde> <Abreve> : "\275" Abrevetilde
-<dead_tilde> <abreve> : "\275" abrevetilde
-<dead_acute> <Abreve> : "\276" Abreveacute
-<dead_acute> <abreve> : "\276" abreveacute
-<dead_belowdot> <Abreve> : "\306" Abrevebelowdot
-<dead_belowdot> <abreve> : "\306" abrevebelowdot
-<dead_grave> <Acircumflex> : "\307" Acircumflexgrave
-<dead_grave> <acircumflex> : "\307" acircumflexgrave
-<dead_hook> <Acircumflex> : "\310" Acircumflexhook
-<dead_hook> <acircumflex> : "\310" acircumflexhook
-<dead_tilde> <Acircumflex> : "\311" Acircumflextilde
-<dead_tilde> <acircumflex> : "\311" acircumflextilde
-<dead_acute> <Acircumflex> : "\312" Acircumflexacute
-<dead_acute> <acircumflex> : "\312" acircumflexacute
-<dead_belowdot> <Acircumflex> : "\313" Acircumflexbelowdot
-<dead_belowdot> <acircumflex> : "\313" acircumflexbelowdot
-<dead_grave> <E> : "\207" Egrave
-<dead_grave> <e> : "\314" egrave
-<dead_hook> <E> : "\316" Ehook
-<dead_hook> <e> : "\316" ehook
-<dead_tilde> <E> : "\317" Etilde
-<dead_tilde> <e> : "\317" etilde
-<dead_acute> <E> : "\212" Eacute
-<dead_acute> <e> : "\320" eacute
-<dead_belowdot> <E> : "\321" Ebelowdot
-<dead_belowdot> <e> : "\321" ebelowdot
-<dead_grave> <Ecircumflex> : "\322" Ecircumflexgrave
-<dead_grave> <ecircumflex> : "\322" ecircumflexgrave
-<dead_hook> <Ecircumflex> : "\323" Ecircumflexhook
-<dead_hook> <ecircumflex> : "\323" ecircumflexhook
-<dead_tilde> <Ecircumflex> : "\324" Ecircumflextilde
-<dead_tilde> <ecircumflex> : "\324" ecircumflextilde
-<dead_acute> <Ecircumflex> : "\325" Ecircumflexacute
-<dead_acute> <ecircumflex> : "\325" ecircumflexacute
-<dead_belowdot> <Ecircumflex> : "\326" Ecircumflexbelowdot
-<dead_belowdot> <ecircumflex> : "\326" ecircumflexbelowdot
-<dead_grave> <I> : "\215" Igrave
-<dead_grave> <i> : "\327" igrave
-<dead_hook> <I> : "\330" Ihook
-<dead_hook> <i> : "\330" ihook
-<dead_tilde> <I> : "\217" Itilde
-<dead_tilde> <i> : "\334" itilde
-<dead_acute> <I> : "\220" Iacute
-<dead_acute> <i> : "\335" iacute
-<dead_belowdot> <I> : "\336" Ibelowdot
-<dead_belowdot> <i> : "\336" ibelowdot
-<dead_grave> <O> : "\222" Ograve
-<dead_grave> <o> : "\337" ograve
-<dead_hook> <O> : "\341" Ohook
-<dead_hook> <o> : "\341" ohook
-<dead_tilde> <O> : "\224" Otilde
-<dead_tilde> <o> : "\342" otilde
-<dead_acute> <O> : "\225" Oacute
-<dead_acute> <o> : "\343" oacute
-<dead_belowdot> <O> : "\344" Obelowdot
-<dead_belowdot> <o> : "\344" obelowdot
-<dead_grave> <Ocircumflex> : "\345" Ocircumflexgrave
-<dead_grave> <ocircumflex> : "\345" ocircumflexgrave
-<dead_hook> <Ocircumflex> : "\346" Ocircumflexhook
-<dead_hook> <ocircumflex> : "\346" ocircumflexhook
-<dead_tilde> <Ocircumflex> : "\347" Ocircumflextilde
-<dead_tilde> <ocircumflex> : "\347" ocircumflextilde
-<dead_acute> <Ocircumflex> : "\350" Ocircumflexacute
-<dead_acute> <ocircumflex> : "\350" ocircumflexacute
-<dead_belowdot> <Ocircumflex> : "\351" Ocircumflexbelowdot
-<dead_belowdot> <ocircumflex> : "\351" ocircumflexbelowdot
-<dead_grave> <Ohorn> : "\352" Ohorngrave
-<dead_grave> <ohorn> : "\352" ohorngrave
-<dead_hook> <Ohorn> : "\353" Ohornhook
-<dead_hook> <ohorn> : "\353" ohornhook
-<dead_tilde> <Ohorn> : "\354" Ohorntilde
-<dead_tilde> <ohorn> : "\354" ohorntilde
-<dead_acute> <Ohorn> : "\355" Ohornacute
-<dead_acute> <ohorn> : "\355" ohornacute
-<dead_belowdot> <Ohorn> : "\356" Ohornbelowdot
-<dead_belowdot> <ohorn> : "\356" ohornbelowdot
-<dead_grave> <U> : "\235" Ugrave
-<dead_grave> <u> : "\357" ugrave
-<dead_hook> <U> : "\361" Uhook
-<dead_hook> <u> : "\361" uhook
-<dead_tilde> <U> : "\237" Utilde
-<dead_tilde> <u> : "\362" utilde
-<dead_acute> <U> : "\001" Uacute
-<dead_acute> <u> : "\363" uacute
-<dead_belowdot> <U> : "\364" Ubelowdot
-<dead_belowdot> <u> : "\364" ubelowdot
-<dead_grave> <Uhorn> : "\365" Uhorngrave
-<dead_grave> <uhorn> : "\365" uhorngrave
-<dead_hook> <Uhorn> : "\366" Uhornhook
-<dead_hook> <uhorn> : "\366" uhornhook
-<dead_tilde> <Uhorn> : "\367" Uhorntilde
-<dead_tilde> <uhorn> : "\367" uhorntilde
-<dead_acute> <Uhorn> : "\370" Uhornacute
-<dead_acute> <uhorn> : "\370" uhornacute
-<dead_belowdot> <Uhorn> : "\371" Uhornbelowdot
-<dead_belowdot> <uhorn> : "\371" uhornbelowdot
-<dead_grave> <Y> : "\023" Ygrave
-<dead_grave> <y> : "\372" ygrave
-<dead_hook> <Y> : "\373" Yhook
-<dead_hook> <y> : "\373" yhook
-<dead_tilde> <Y> : "\374" Ytilde
-<dead_tilde> <y> : "\374" ytilde
-<dead_acute> <Y> : "\026" Yacute
-<dead_acute> <y> : "\375" yacute
-<dead_belowdot> <Y> : "\376" Ybelowdot
-<dead_belowdot> <y> : "\376" ybelowdot
-XCOMM End of Sequence Definition
+XCOMM 1998/12/18 Le Hong Boi $
+XCOMM
+XCOMM TCVN 5712-2 Compose Sequences
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_grave> <space> : "`" grave
+<dead_hook> <space> : " " space
+<dead_tilde> <space> : "~" asciitilde
+<dead_acute> <space> : "'" apostrophe
+<dead_acute> <apostrophe> : "\264" acute
+XCOMM Accented Alphabet
+<dead_grave> <A> : "\200" Agrave
+<dead_grave> <a> : "\265" agrave
+<dead_hook> <A> : "\266" Ahook
+<dead_hook> <a> : "\266" ahook
+<dead_tilde> <A> : "\202" Atilde
+<dead_tilde> <a> : "\267" atilde
+<dead_acute> <A> : "\203" Aacute
+<dead_acute> <a> : "\270" aacute
+<dead_belowdot> <A> : "\271" Abelowdot
+<dead_belowdot> <a> : "\271" abelowdot
+<dead_grave> <Abreve> : "\273" Abrevegrave
+<dead_grave> <abreve> : "\273" abrevegrave
+<dead_hook> <Abreve> : "\274" Abrevehook
+<dead_hook> <abreve> : "\274" abrevehook
+<dead_tilde> <Abreve> : "\275" Abrevetilde
+<dead_tilde> <abreve> : "\275" abrevetilde
+<dead_acute> <Abreve> : "\276" Abreveacute
+<dead_acute> <abreve> : "\276" abreveacute
+<dead_belowdot> <Abreve> : "\306" Abrevebelowdot
+<dead_belowdot> <abreve> : "\306" abrevebelowdot
+<dead_grave> <Acircumflex> : "\307" Acircumflexgrave
+<dead_grave> <acircumflex> : "\307" acircumflexgrave
+<dead_hook> <Acircumflex> : "\310" Acircumflexhook
+<dead_hook> <acircumflex> : "\310" acircumflexhook
+<dead_tilde> <Acircumflex> : "\311" Acircumflextilde
+<dead_tilde> <acircumflex> : "\311" acircumflextilde
+<dead_acute> <Acircumflex> : "\312" Acircumflexacute
+<dead_acute> <acircumflex> : "\312" acircumflexacute
+<dead_belowdot> <Acircumflex> : "\313" Acircumflexbelowdot
+<dead_belowdot> <acircumflex> : "\313" acircumflexbelowdot
+<dead_grave> <E> : "\207" Egrave
+<dead_grave> <e> : "\314" egrave
+<dead_hook> <E> : "\316" Ehook
+<dead_hook> <e> : "\316" ehook
+<dead_tilde> <E> : "\317" Etilde
+<dead_tilde> <e> : "\317" etilde
+<dead_acute> <E> : "\212" Eacute
+<dead_acute> <e> : "\320" eacute
+<dead_belowdot> <E> : "\321" Ebelowdot
+<dead_belowdot> <e> : "\321" ebelowdot
+<dead_grave> <Ecircumflex> : "\322" Ecircumflexgrave
+<dead_grave> <ecircumflex> : "\322" ecircumflexgrave
+<dead_hook> <Ecircumflex> : "\323" Ecircumflexhook
+<dead_hook> <ecircumflex> : "\323" ecircumflexhook
+<dead_tilde> <Ecircumflex> : "\324" Ecircumflextilde
+<dead_tilde> <ecircumflex> : "\324" ecircumflextilde
+<dead_acute> <Ecircumflex> : "\325" Ecircumflexacute
+<dead_acute> <ecircumflex> : "\325" ecircumflexacute
+<dead_belowdot> <Ecircumflex> : "\326" Ecircumflexbelowdot
+<dead_belowdot> <ecircumflex> : "\326" ecircumflexbelowdot
+<dead_grave> <I> : "\215" Igrave
+<dead_grave> <i> : "\327" igrave
+<dead_hook> <I> : "\330" Ihook
+<dead_hook> <i> : "\330" ihook
+<dead_tilde> <I> : "\217" Itilde
+<dead_tilde> <i> : "\334" itilde
+<dead_acute> <I> : "\220" Iacute
+<dead_acute> <i> : "\335" iacute
+<dead_belowdot> <I> : "\336" Ibelowdot
+<dead_belowdot> <i> : "\336" ibelowdot
+<dead_grave> <O> : "\222" Ograve
+<dead_grave> <o> : "\337" ograve
+<dead_hook> <O> : "\341" Ohook
+<dead_hook> <o> : "\341" ohook
+<dead_tilde> <O> : "\224" Otilde
+<dead_tilde> <o> : "\342" otilde
+<dead_acute> <O> : "\225" Oacute
+<dead_acute> <o> : "\343" oacute
+<dead_belowdot> <O> : "\344" Obelowdot
+<dead_belowdot> <o> : "\344" obelowdot
+<dead_grave> <Ocircumflex> : "\345" Ocircumflexgrave
+<dead_grave> <ocircumflex> : "\345" ocircumflexgrave
+<dead_hook> <Ocircumflex> : "\346" Ocircumflexhook
+<dead_hook> <ocircumflex> : "\346" ocircumflexhook
+<dead_tilde> <Ocircumflex> : "\347" Ocircumflextilde
+<dead_tilde> <ocircumflex> : "\347" ocircumflextilde
+<dead_acute> <Ocircumflex> : "\350" Ocircumflexacute
+<dead_acute> <ocircumflex> : "\350" ocircumflexacute
+<dead_belowdot> <Ocircumflex> : "\351" Ocircumflexbelowdot
+<dead_belowdot> <ocircumflex> : "\351" ocircumflexbelowdot
+<dead_grave> <Ohorn> : "\352" Ohorngrave
+<dead_grave> <ohorn> : "\352" ohorngrave
+<dead_hook> <Ohorn> : "\353" Ohornhook
+<dead_hook> <ohorn> : "\353" ohornhook
+<dead_tilde> <Ohorn> : "\354" Ohorntilde
+<dead_tilde> <ohorn> : "\354" ohorntilde
+<dead_acute> <Ohorn> : "\355" Ohornacute
+<dead_acute> <ohorn> : "\355" ohornacute
+<dead_belowdot> <Ohorn> : "\356" Ohornbelowdot
+<dead_belowdot> <ohorn> : "\356" ohornbelowdot
+<dead_grave> <U> : "\235" Ugrave
+<dead_grave> <u> : "\357" ugrave
+<dead_hook> <U> : "\361" Uhook
+<dead_hook> <u> : "\361" uhook
+<dead_tilde> <U> : "\237" Utilde
+<dead_tilde> <u> : "\362" utilde
+<dead_acute> <U> : "\001" Uacute
+<dead_acute> <u> : "\363" uacute
+<dead_belowdot> <U> : "\364" Ubelowdot
+<dead_belowdot> <u> : "\364" ubelowdot
+<dead_grave> <Uhorn> : "\365" Uhorngrave
+<dead_grave> <uhorn> : "\365" uhorngrave
+<dead_hook> <Uhorn> : "\366" Uhornhook
+<dead_hook> <uhorn> : "\366" uhornhook
+<dead_tilde> <Uhorn> : "\367" Uhorntilde
+<dead_tilde> <uhorn> : "\367" uhorntilde
+<dead_acute> <Uhorn> : "\370" Uhornacute
+<dead_acute> <uhorn> : "\370" uhornacute
+<dead_belowdot> <Uhorn> : "\371" Uhornbelowdot
+<dead_belowdot> <uhorn> : "\371" uhornbelowdot
+<dead_grave> <Y> : "\023" Ygrave
+<dead_grave> <y> : "\372" ygrave
+<dead_hook> <Y> : "\373" Yhook
+<dead_hook> <y> : "\373" yhook
+<dead_tilde> <Y> : "\374" Ytilde
+<dead_tilde> <y> : "\374" ytilde
+<dead_acute> <Y> : "\026" Yacute
+<dead_acute> <y> : "\375" yacute
+<dead_belowdot> <Y> : "\376" Ybelowdot
+<dead_belowdot> <y> : "\376" ybelowdot
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/vi_VN.tcvn/XI18N_OBJS b/libX11/nls/vi_VN.tcvn/XI18N_OBJS
index cff66dfca..0b3507b84 100644
--- a/libX11/nls/vi_VN.tcvn/XI18N_OBJS
+++ b/libX11/nls/vi_VN.tcvn/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for vi_VN.tcvn locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for vi_VN.tcvn locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/vi_VN.tcvn/XLC_LOCALE.pre b/libX11/nls/vi_VN.tcvn/XLC_LOCALE.pre
index d2897d6dd..5e149f68a 100644
--- a/libX11/nls/vi_VN.tcvn/XLC_LOCALE.pre
+++ b/libX11/nls/vi_VN.tcvn/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for vi_VN.TCVN
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary TCVN-5712:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset TCVN-5712:GR
- font TCVN-5712:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name TCVN-5712
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name TCVN-5712
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding TCVN-5712:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding TCVN-5712:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for vi_VN.TCVN
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary TCVN-5712:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset TCVN-5712:GR
+ font TCVN-5712:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name TCVN-5712
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TCVN-5712
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding TCVN-5712:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding TCVN-5712:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/vi_VN.viscii/Compose.pre b/libX11/nls/vi_VN.viscii/Compose.pre
index 59cdb83ce..7f4338712 100644
--- a/libX11/nls/vi_VN.viscii/Compose.pre
+++ b/libX11/nls/vi_VN.viscii/Compose.pre
@@ -1,135 +1,135 @@
-XCOMM 1998/12/18 Le Hong Boi $
-XCOMM
-XCOMM TCVN 5712-2 Compose Sequences
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_grave> <space> : "`" grave
-<dead_hook> <space> : " " space
-<dead_tilde> <space> : "~" asciitilde
-<dead_acute> <space> : "'" apostrophe
-<dead_acute> <apostrophe> : "\264" acute
-XCOMM Accented Alphabet
-<dead_grave> <A> : "\300" Agrave
-<dead_grave> <a> : "\340" agrave
-<dead_hook> <A> : "\304" Ahook
-<dead_hook> <a> : "\344" ahook
-<dead_tilde> <A> : "\303" Atilde
-<dead_tilde> <a> : "\343" atilde
-<dead_acute> <A> : "\301" Aacute
-<dead_acute> <a> : "\341" aacute
-<dead_belowdot> <A> : "\200" Abelowdot
-<dead_belowdot> <a> : "\325" abelowdot
-<dead_grave> <Abreve> : "\202" Abrevegrave
-<dead_grave> <abreve> : "\242" abrevegrave
-<dead_hook> <Abreve> : "\002" Abrevehook
-<dead_hook> <abreve> : "\306" abrevehook
-<dead_tilde> <Abreve> : "\005" Abrevetilde
-<dead_tilde> <abreve> : "\307" abrevetilde
-<dead_acute> <Abreve> : "\201" Abreveacute
-<dead_acute> <abreve> : "\241" abreveacute
-<dead_belowdot> <Abreve> : "\203" Abrevebelowdot
-<dead_belowdot> <abreve> : "\243" abrevebelowdot
-<dead_grave> <Acircumflex> : "\205" Acircumflexgrave
-<dead_grave> <acircumflex> : "\245" acircumflexgrave
-<dead_hook> <Acircumflex> : "\206" Acircumflexhook
-<dead_hook> <acircumflex> : "\246" acircumflexhook
-<dead_tilde> <Acircumflex> : "\006" Acircumflextilde
-<dead_tilde> <acircumflex> : "\347" acircumflextilde
-<dead_acute> <Acircumflex> : "\204" Acircumflexacute
-<dead_acute> <acircumflex> : "\244" acircumflexacute
-<dead_belowdot> <Acircumflex> : "\207" Acircumflexbelowdot
-<dead_belowdot> <acircumflex> : "\247" acircumflexbelowdot
-<dead_grave> <E> : "\310" Egrave
-<dead_grave> <e> : "\350" egrave
-<dead_hook> <E> : "\313" Ehook
-<dead_hook> <e> : "\353" ehook
-<dead_tilde> <E> : "\210" Etilde
-<dead_tilde> <e> : "\250" etilde
-<dead_acute> <E> : "\311" Eacute
-<dead_acute> <e> : "\351" eacute
-<dead_belowdot> <E> : "\211" Ebelowdot
-<dead_belowdot> <e> : "\251" ebelowdot
-<dead_grave> <Ecircumflex> : "\213" Ecircumflexgrave
-<dead_grave> <ecircumflex> : "\253" ecircumflexgrave
-<dead_hook> <Ecircumflex> : "\214" Ecircumflexhook
-<dead_hook> <ecircumflex> : "\254" ecircumflexhook
-<dead_tilde> <Ecircumflex> : "\215" Ecircumflextilde
-<dead_tilde> <ecircumflex> : "\255" ecircumflextilde
-<dead_acute> <Ecircumflex> : "\212" Ecircumflexacute
-<dead_acute> <ecircumflex> : "\252" ecircumflexacute
-<dead_belowdot> <Ecircumflex> : "\216" Ecircumflexbelowdot
-<dead_belowdot> <ecircumflex> : "\256" ecircumflexbelowdot
-<dead_grave> <I> : "\314" Igrave
-<dead_grave> <i> : "\354" igrave
-<dead_hook> <I> : "\233" Ihook
-<dead_hook> <i> : "\357" ihook
-<dead_tilde> <I> : "\316" Itilde
-<dead_tilde> <i> : "\356" itilde
-<dead_acute> <I> : "\315" Iacute
-<dead_acute> <i> : "\355" iacute
-<dead_belowdot> <I> : "\230" Ibelowdot
-<dead_belowdot> <i> : "\270" ibelowdot
-<dead_grave> <O> : "\322" Ograve
-<dead_grave> <o> : "\362" ograve
-<dead_hook> <O> : "\231" Ohook
-<dead_hook> <o> : "\366" ohook
-<dead_tilde> <O> : "\240" Otilde
-<dead_tilde> <o> : "\365" otilde
-<dead_acute> <O> : "\323" Oacute
-<dead_acute> <o> : "\363" oacute
-<dead_belowdot> <O> : "\232" Obelowdot
-<dead_belowdot> <o> : "\367" obelowdot
-<dead_grave> <Ocircumflex> : "\220" Ocircumflexgrave
-<dead_grave> <ocircumflex> : "\260" ocircumflexgrave
-<dead_hook> <Ocircumflex> : "\221" Ocircumflexhook
-<dead_hook> <ocircumflex> : "\261" ocircumflexhook
-<dead_tilde> <Ocircumflex> : "\222" Ocircumflextilde
-<dead_tilde> <ocircumflex> : "\262" ocircumflextilde
-<dead_acute> <Ocircumflex> : "\217" Ocircumflexacute
-<dead_acute> <ocircumflex> : "\257" ocircumflexacute
-<dead_belowdot> <Ocircumflex> : "\223" Ocircumflexbelowdot
-<dead_belowdot> <ocircumflex> : "\265" ocircumflexbelowdot
-<dead_grave> <Ohorn> : "\226" Ohorngrave
-<dead_grave> <ohorn> : "\266" ohorngrave
-<dead_hook> <Ohorn> : "\227" Ohornhook
-<dead_hook> <ohorn> : "\267" ohornhook
-<dead_tilde> <Ohorn> : "\263" Ohorntilde
-<dead_tilde> <ohorn> : "\336" ohorntilde
-<dead_acute> <Ohorn> : "\225" Ohornacute
-<dead_acute> <ohorn> : "\276" ohornacute
-<dead_belowdot> <Ohorn> : "\224" Ohornbelowdot
-<dead_belowdot> <ohorn> : "\376" ohornbelowdot
-<dead_grave> <U> : "\331" Ugrave
-<dead_grave> <u> : "\371" ugrave
-<dead_hook> <U> : "\234" Uhook
-<dead_hook> <u> : "\374" uhook
-<dead_tilde> <U> : "\235" Utilde
-<dead_tilde> <u> : "\373" utilde
-<dead_acute> <U> : "\332" Uacute
-<dead_acute> <u> : "\372" uacute
-<dead_belowdot> <U> : "\236" Ubelowdot
-<dead_belowdot> <u> : "\370" ubelowdot
-<dead_grave> <Uhorn> : "\273" Uhorngrave
-<dead_grave> <uhorn> : "\327" uhorngrave
-<dead_hook> <Uhorn> : "\274" Uhornhook
-<dead_hook> <uhorn> : "\330" uhornhook
-<dead_tilde> <Uhorn> : "\377" Uhorntilde
-<dead_tilde> <uhorn> : "\346" uhorntilde
-<dead_acute> <Uhorn> : "\272" Uhornacute
-<dead_acute> <uhorn> : "\321" uhornacute
-<dead_belowdot> <Uhorn> : "\271" Uhornbelowdot
-<dead_belowdot> <uhorn> : "\361" uhornbelowdot
-<dead_grave> <Y> : "\237" Ygrave
-<dead_grave> <y> : "\317" ygrave
-<dead_hook> <Y> : "\024" Yhook
-<dead_hook> <y> : "\326" yhook
-<dead_tilde> <Y> : "\031" Ytilde
-<dead_tilde> <y> : "\333" ytilde
-<dead_acute> <Y> : "\335" Yacute
-<dead_acute> <y> : "\375" yacute
-<dead_belowdot> <Y> : "\036" Ybelowdot
-<dead_belowdot> <y> : "\334" ybelowdot
-XCOMM End of Sequence Definition
+XCOMM 1998/12/18 Le Hong Boi $
+XCOMM
+XCOMM TCVN 5712-2 Compose Sequences
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_grave> <space> : "`" grave
+<dead_hook> <space> : " " space
+<dead_tilde> <space> : "~" asciitilde
+<dead_acute> <space> : "'" apostrophe
+<dead_acute> <apostrophe> : "\264" acute
+XCOMM Accented Alphabet
+<dead_grave> <A> : "\300" Agrave
+<dead_grave> <a> : "\340" agrave
+<dead_hook> <A> : "\304" Ahook
+<dead_hook> <a> : "\344" ahook
+<dead_tilde> <A> : "\303" Atilde
+<dead_tilde> <a> : "\343" atilde
+<dead_acute> <A> : "\301" Aacute
+<dead_acute> <a> : "\341" aacute
+<dead_belowdot> <A> : "\200" Abelowdot
+<dead_belowdot> <a> : "\325" abelowdot
+<dead_grave> <Abreve> : "\202" Abrevegrave
+<dead_grave> <abreve> : "\242" abrevegrave
+<dead_hook> <Abreve> : "\002" Abrevehook
+<dead_hook> <abreve> : "\306" abrevehook
+<dead_tilde> <Abreve> : "\005" Abrevetilde
+<dead_tilde> <abreve> : "\307" abrevetilde
+<dead_acute> <Abreve> : "\201" Abreveacute
+<dead_acute> <abreve> : "\241" abreveacute
+<dead_belowdot> <Abreve> : "\203" Abrevebelowdot
+<dead_belowdot> <abreve> : "\243" abrevebelowdot
+<dead_grave> <Acircumflex> : "\205" Acircumflexgrave
+<dead_grave> <acircumflex> : "\245" acircumflexgrave
+<dead_hook> <Acircumflex> : "\206" Acircumflexhook
+<dead_hook> <acircumflex> : "\246" acircumflexhook
+<dead_tilde> <Acircumflex> : "\006" Acircumflextilde
+<dead_tilde> <acircumflex> : "\347" acircumflextilde
+<dead_acute> <Acircumflex> : "\204" Acircumflexacute
+<dead_acute> <acircumflex> : "\244" acircumflexacute
+<dead_belowdot> <Acircumflex> : "\207" Acircumflexbelowdot
+<dead_belowdot> <acircumflex> : "\247" acircumflexbelowdot
+<dead_grave> <E> : "\310" Egrave
+<dead_grave> <e> : "\350" egrave
+<dead_hook> <E> : "\313" Ehook
+<dead_hook> <e> : "\353" ehook
+<dead_tilde> <E> : "\210" Etilde
+<dead_tilde> <e> : "\250" etilde
+<dead_acute> <E> : "\311" Eacute
+<dead_acute> <e> : "\351" eacute
+<dead_belowdot> <E> : "\211" Ebelowdot
+<dead_belowdot> <e> : "\251" ebelowdot
+<dead_grave> <Ecircumflex> : "\213" Ecircumflexgrave
+<dead_grave> <ecircumflex> : "\253" ecircumflexgrave
+<dead_hook> <Ecircumflex> : "\214" Ecircumflexhook
+<dead_hook> <ecircumflex> : "\254" ecircumflexhook
+<dead_tilde> <Ecircumflex> : "\215" Ecircumflextilde
+<dead_tilde> <ecircumflex> : "\255" ecircumflextilde
+<dead_acute> <Ecircumflex> : "\212" Ecircumflexacute
+<dead_acute> <ecircumflex> : "\252" ecircumflexacute
+<dead_belowdot> <Ecircumflex> : "\216" Ecircumflexbelowdot
+<dead_belowdot> <ecircumflex> : "\256" ecircumflexbelowdot
+<dead_grave> <I> : "\314" Igrave
+<dead_grave> <i> : "\354" igrave
+<dead_hook> <I> : "\233" Ihook
+<dead_hook> <i> : "\357" ihook
+<dead_tilde> <I> : "\316" Itilde
+<dead_tilde> <i> : "\356" itilde
+<dead_acute> <I> : "\315" Iacute
+<dead_acute> <i> : "\355" iacute
+<dead_belowdot> <I> : "\230" Ibelowdot
+<dead_belowdot> <i> : "\270" ibelowdot
+<dead_grave> <O> : "\322" Ograve
+<dead_grave> <o> : "\362" ograve
+<dead_hook> <O> : "\231" Ohook
+<dead_hook> <o> : "\366" ohook
+<dead_tilde> <O> : "\240" Otilde
+<dead_tilde> <o> : "\365" otilde
+<dead_acute> <O> : "\323" Oacute
+<dead_acute> <o> : "\363" oacute
+<dead_belowdot> <O> : "\232" Obelowdot
+<dead_belowdot> <o> : "\367" obelowdot
+<dead_grave> <Ocircumflex> : "\220" Ocircumflexgrave
+<dead_grave> <ocircumflex> : "\260" ocircumflexgrave
+<dead_hook> <Ocircumflex> : "\221" Ocircumflexhook
+<dead_hook> <ocircumflex> : "\261" ocircumflexhook
+<dead_tilde> <Ocircumflex> : "\222" Ocircumflextilde
+<dead_tilde> <ocircumflex> : "\262" ocircumflextilde
+<dead_acute> <Ocircumflex> : "\217" Ocircumflexacute
+<dead_acute> <ocircumflex> : "\257" ocircumflexacute
+<dead_belowdot> <Ocircumflex> : "\223" Ocircumflexbelowdot
+<dead_belowdot> <ocircumflex> : "\265" ocircumflexbelowdot
+<dead_grave> <Ohorn> : "\226" Ohorngrave
+<dead_grave> <ohorn> : "\266" ohorngrave
+<dead_hook> <Ohorn> : "\227" Ohornhook
+<dead_hook> <ohorn> : "\267" ohornhook
+<dead_tilde> <Ohorn> : "\263" Ohorntilde
+<dead_tilde> <ohorn> : "\336" ohorntilde
+<dead_acute> <Ohorn> : "\225" Ohornacute
+<dead_acute> <ohorn> : "\276" ohornacute
+<dead_belowdot> <Ohorn> : "\224" Ohornbelowdot
+<dead_belowdot> <ohorn> : "\376" ohornbelowdot
+<dead_grave> <U> : "\331" Ugrave
+<dead_grave> <u> : "\371" ugrave
+<dead_hook> <U> : "\234" Uhook
+<dead_hook> <u> : "\374" uhook
+<dead_tilde> <U> : "\235" Utilde
+<dead_tilde> <u> : "\373" utilde
+<dead_acute> <U> : "\332" Uacute
+<dead_acute> <u> : "\372" uacute
+<dead_belowdot> <U> : "\236" Ubelowdot
+<dead_belowdot> <u> : "\370" ubelowdot
+<dead_grave> <Uhorn> : "\273" Uhorngrave
+<dead_grave> <uhorn> : "\327" uhorngrave
+<dead_hook> <Uhorn> : "\274" Uhornhook
+<dead_hook> <uhorn> : "\330" uhornhook
+<dead_tilde> <Uhorn> : "\377" Uhorntilde
+<dead_tilde> <uhorn> : "\346" uhorntilde
+<dead_acute> <Uhorn> : "\272" Uhornacute
+<dead_acute> <uhorn> : "\321" uhornacute
+<dead_belowdot> <Uhorn> : "\271" Uhornbelowdot
+<dead_belowdot> <uhorn> : "\361" uhornbelowdot
+<dead_grave> <Y> : "\237" Ygrave
+<dead_grave> <y> : "\317" ygrave
+<dead_hook> <Y> : "\024" Yhook
+<dead_hook> <y> : "\326" yhook
+<dead_tilde> <Y> : "\031" Ytilde
+<dead_tilde> <y> : "\333" ytilde
+<dead_acute> <Y> : "\335" Yacute
+<dead_acute> <y> : "\375" yacute
+<dead_belowdot> <Y> : "\036" Ybelowdot
+<dead_belowdot> <y> : "\334" ybelowdot
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/vi_VN.viscii/XI18N_OBJS b/libX11/nls/vi_VN.viscii/XI18N_OBJS
index 5f4b3b604..6422fa7ed 100644
--- a/libX11/nls/vi_VN.viscii/XI18N_OBJS
+++ b/libX11/nls/vi_VN.viscii/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for vi_VN.viscii locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for vi_VN.viscii locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/vi_VN.viscii/XLC_LOCALE.pre b/libX11/nls/vi_VN.viscii/XLC_LOCALE.pre
index 9df03005c..9df54f809 100644
--- a/libX11/nls/vi_VN.viscii/XLC_LOCALE.pre
+++ b/libX11/nls/vi_VN.viscii/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for vi_VN.VISCII
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary VISCII1.1-1:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset VISCII1.1-1:GR
- font VISCII1.1-1:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name VISCII1.1-1
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name VISCII1.1-1
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding VISCII1.1-1:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding VISCII1.1-1:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for vi_VN.VISCII
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary VISCII1.1-1:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset VISCII1.1-1:GR
+ font VISCII1.1-1:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name VISCII1.1-1
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name VISCII1.1-1
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding VISCII1.1-1:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding VISCII1.1-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_CN.UTF-8/XI18N_OBJS b/libX11/nls/zh_CN.UTF-8/XI18N_OBJS
index 29dd53a30..a0ef7384f 100644
--- a/libX11/nls/zh_CN.UTF-8/XI18N_OBJS
+++ b/libX11/nls/zh_CN.UTF-8/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_CN.UTF-8 locale
-#
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_CN.UTF-8 locale
+#
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_CN.UTF-8/XLC_LOCALE.pre b/libX11/nls/zh_CN.UTF-8/XLC_LOCALE.pre
index 6f05d7a8e..2f72fb272 100644
--- a/libX11/nls/zh_CN.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/zh_CN.UTF-8/XLC_LOCALE.pre
@@ -1,107 +1,107 @@
-XCOMM XFree86 NLS for Chinese locale zh_CN.UTF-8
-XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
-XCOMM by James Su <suzhe@turbolinux.com.cn>
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-
-XCOMM fs2 class (Chinese Han Character)
-fs2 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-
-XCOMM fs3 class (Chinese Han Character GBK)
-fs3 {
- charset {
- name GBK-0:GLGR
- }
- font {
- primary GBK-0:GLGR
- substitute GB13000.1993-1:GLGR
- }
-}
-
-XCOMM fs4 class
-fs4 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
-
+XCOMM XFree86 NLS for Chinese locale zh_CN.UTF-8
+XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
+XCOMM by James Su <suzhe@turbolinux.com.cn>
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM fs2 class (Chinese Han Character)
+fs2 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+
+XCOMM fs3 class (Chinese Han Character GBK)
+fs3 {
+ charset {
+ name GBK-0:GLGR
+ }
+ font {
+ primary GBK-0:GLGR
+ substitute GB13000.1993-1:GLGR
+ }
+}
+
+XCOMM fs4 class
+fs4 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
+
diff --git a/libX11/nls/zh_CN.gb18030/Compose.pre b/libX11/nls/zh_CN.gb18030/Compose.pre
index a9e259fab..7a7c7f241 100644
--- a/libX11/nls/zh_CN.gb18030/Compose.pre
+++ b/libX11/nls/zh_CN.gb18030/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM zh_CN.GB18030 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_CN.GB18030 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_CN.gb18030/XI18N_OBJS b/libX11/nls/zh_CN.gb18030/XI18N_OBJS
index a92b4033c..e9fef4c7a 100644
--- a/libX11/nls/zh_CN.gb18030/XI18N_OBJS
+++ b/libX11/nls/zh_CN.gb18030/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_CN.gb18030 locale
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_CN.gb18030 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_CN.gb18030/XLC_LOCALE.pre b/libX11/nls/zh_CN.gb18030/XLC_LOCALE.pre
index f9544c70e..4d01c8f7f 100644
--- a/libX11/nls/zh_CN.gb18030/XLC_LOCALE.pre
+++ b/libX11/nls/zh_CN.gb18030/XLC_LOCALE.pre
@@ -1,106 +1,106 @@
-XCOMM XFree86 NLS for Chinese encoding GB18030
-XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
-XCOMM by James Su <suzhe@turbolinux.com.cn>
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-
-XCOMM fs2 class (Chinese Han Character)
-fs2 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-
-XCOMM fs3 class (Chinese Han Character GBK)
-fs3 {
- charset {
- name GBK-0:GLGR
- }
- font {
- primary GBK-0:GLGR
- substitute GB13000.1993-1:GLGR
- }
-}
-
-XCOMM fs4 class
-fs4 {
- charset {
- name ISO10646-1
- }
- font {
- primary GB18030-0
- substitute GBK2K-0
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name GB18030
-mb_cur_max 4
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM XFree86 NLS for Chinese encoding GB18030
+XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
+XCOMM by James Su <suzhe@turbolinux.com.cn>
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM fs2 class (Chinese Han Character)
+fs2 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+
+XCOMM fs3 class (Chinese Han Character GBK)
+fs3 {
+ charset {
+ name GBK-0:GLGR
+ }
+ font {
+ primary GBK-0:GLGR
+ substitute GB13000.1993-1:GLGR
+ }
+}
+
+XCOMM fs4 class
+fs4 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary GB18030-0
+ substitute GBK2K-0
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name GB18030
+mb_cur_max 4
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_CN.gbk/Compose.pre b/libX11/nls/zh_CN.gbk/Compose.pre
index c95d9ac82..5b849aadd 100644
--- a/libX11/nls/zh_CN.gbk/Compose.pre
+++ b/libX11/nls/zh_CN.gbk/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM zh_CN.GBK Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_CN.GBK Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_CN.gbk/XI18N_OBJS b/libX11/nls/zh_CN.gbk/XI18N_OBJS
index 197a3e194..274697e49 100644
--- a/libX11/nls/zh_CN.gbk/XI18N_OBJS
+++ b/libX11/nls/zh_CN.gbk/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_CN.gbk locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_CN.gbk locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_CN.gbk/XLC_LOCALE.pre b/libX11/nls/zh_CN.gbk/XLC_LOCALE.pre
index 302818bca..b43dbec97 100644
--- a/libX11/nls/zh_CN.gbk/XLC_LOCALE.pre
+++ b/libX11/nls/zh_CN.gbk/XLC_LOCALE.pre
@@ -1,70 +1,70 @@
-XCOMM
-XCOMM X11R6 L10N for Chinese GBK Encoding.
-XCOMM modified from xc/nls/XLC_LOCALE/zh_TW.Big5
-XCOMM by Sean Chen <seanc@turbolinux.com>
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name GBK-0:GLGR
- }
- font {
- primary GBK-0:GLGR
- substitute GB13000.1993-1:GLGR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh_CN.GBK
-mb_cur_max 2
-state_depend_encoding False
-
-wc_encoding_mask \x00008000
-wc_shift_bits 8
-
-use_stdc_env True
-force_convert_to_mb True
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \x81,\xfe
- byte2 \x40,\x7e;\x80,\xfe
-
- wc_encoding \x00008000
- ct_encoding GBK-0:GLGR:\x1b\x25\x2f\x32
-
- mb_conversion [\x8140,\xfefe]->\x0140
- ct_conversion [\x0140,\x7efe]->\x8140
-}
-
-END XLC_XLOCALE
+XCOMM
+XCOMM X11R6 L10N for Chinese GBK Encoding.
+XCOMM modified from xc/nls/XLC_LOCALE/zh_TW.Big5
+XCOMM by Sean Chen <seanc@turbolinux.com>
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name GBK-0:GLGR
+ }
+ font {
+ primary GBK-0:GLGR
+ substitute GB13000.1993-1:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_CN.GBK
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00008000
+wc_shift_bits 8
+
+use_stdc_env True
+force_convert_to_mb True
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \x81,\xfe
+ byte2 \x40,\x7e;\x80,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding GBK-0:GLGR:\x1b\x25\x2f\x32
+
+ mb_conversion [\x8140,\xfefe]->\x0140
+ ct_conversion [\x0140,\x7efe]->\x8140
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_CN/Compose.pre b/libX11/nls/zh_CN/Compose.pre
index 2f04b4218..d7ec8005f 100644
--- a/libX11/nls/zh_CN/Compose.pre
+++ b/libX11/nls/zh_CN/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM zh Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_CN/XI18N_OBJS b/libX11/nls/zh_CN/XI18N_OBJS
index 3ad1a6230..bc7f81bfc 100644
--- a/libX11/nls/zh_CN/XI18N_OBJS
+++ b/libX11/nls/zh_CN/XI18N_OBJS
@@ -1,9 +1,9 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh locale
-#
-#
-XLC common/xlocale _XlcEucLoader # XLC_open
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh locale
+#
+#
+XLC common/xlocale _XlcEucLoader # XLC_open
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_CN/XLC_LOCALE.pre b/libX11/nls/zh_CN/XLC_LOCALE.pre
index 0065d8df1..f8d60a70a 100644
--- a/libX11/nls/zh_CN/XLC_LOCALE.pre
+++ b/libX11/nls/zh_CN/XLC_LOCALE.pre
@@ -1,62 +1,62 @@
-XCOMM XLocale Database Sample for zh (eucCN).
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- substitute GB2312.1980-0:GLGR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh.euc
-mb_cur_max 2
-state_depend_encoding False
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
- wc_encoding \x30000000
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for zh (eucCN).
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ substitute GB2312.1980-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh.euc
+mb_cur_max 2
+state_depend_encoding False
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+ wc_encoding \x30000000
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_HK.UTF-8/XI18N_OBJS b/libX11/nls/zh_HK.UTF-8/XI18N_OBJS
index e9d5ef8ad..8fb0b1be0 100644
--- a/libX11/nls/zh_HK.UTF-8/XI18N_OBJS
+++ b/libX11/nls/zh_HK.UTF-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_HK.UTF-8 locale
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_HK.UTF-8 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_HK.UTF-8/XLC_LOCALE.pre b/libX11/nls/zh_HK.UTF-8/XLC_LOCALE.pre
index c08803258..7eac192c7 100644
--- a/libX11/nls/zh_HK.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/zh_HK.UTF-8/XLC_LOCALE.pre
@@ -1,96 +1,96 @@
-XCOMM XFree86 NLS for Chinese locale zh_HK.UTF-8
-XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
-XCOMM by James Su <suzhe@turbolinux.com.cn>
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-
-XCOMM fs2 class
-fs2 {
- charset {
- name BIG5HKSCS-0:GLGR
- }
- font {
- primary BIG5HKSCS-0:GLGR
- substitute BIG5-0:GLGR
- }
-}
-
-XCOMM fs3 class
-fs3 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side none
- length 2
- ct_encoding BIG5HKSCS-0:GLGR
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
-
+XCOMM XFree86 NLS for Chinese locale zh_HK.UTF-8
+XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
+XCOMM by James Su <suzhe@turbolinux.com.cn>
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM fs2 class
+fs2 {
+ charset {
+ name BIG5HKSCS-0:GLGR
+ }
+ font {
+ primary BIG5HKSCS-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+
+XCOMM fs3 class
+fs3 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side none
+ length 2
+ ct_encoding BIG5HKSCS-0:GLGR
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
+
diff --git a/libX11/nls/zh_HK.big5/Compose.pre b/libX11/nls/zh_HK.big5/Compose.pre
index 79dd3a00d..ec6055c72 100644
--- a/libX11/nls/zh_HK.big5/Compose.pre
+++ b/libX11/nls/zh_HK.big5/Compose.pre
@@ -1,13 +1,13 @@
-XCOMM
-XCOMM zh_HK.big5 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_HK.big5 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_HK.big5/XI18N_OBJS b/libX11/nls/zh_HK.big5/XI18N_OBJS
index 826c79831..f724f7cc9 100644
--- a/libX11/nls/zh_HK.big5/XI18N_OBJS
+++ b/libX11/nls/zh_HK.big5/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_HK.big5 locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_HK.big5 locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_HK.big5/XLC_LOCALE.pre b/libX11/nls/zh_HK.big5/XLC_LOCALE.pre
index 03f9d08f4..cebd49582 100644
--- a/libX11/nls/zh_HK.big5/XLC_LOCALE.pre
+++ b/libX11/nls/zh_HK.big5/XLC_LOCALE.pre
@@ -1,69 +1,69 @@
-XCOMM
-XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
-XCOMM
-XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name BIG5-0:GLGR
- }
- font {
- primary BIG5-0:GLGR
- substitute BIG5-0:GLGR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh_HK.Big5
-mb_cur_max 2
-state_depend_encoding False
-
-wc_encoding_mask \x00008000
-wc_shift_bits 8
-
-use_stdc_env True
-force_convert_to_mb True
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \xa1,\xf9
- byte2 \x40,\x7e;\xa1,\xfe
-
- wc_encoding \x00008000
- ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32\x80\x89\x42\x49\x47\x35\x2d\x30\x02
-
- mb_conversion [\xa140,\xf9fe]->\x2140
- ct_conversion [\x2140,\x79fe]->\xa140
-}
-
-END XLC_XLOCALE
+XCOMM
+XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
+XCOMM
+XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name BIG5-0:GLGR
+ }
+ font {
+ primary BIG5-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_HK.Big5
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00008000
+wc_shift_bits 8
+
+use_stdc_env True
+force_convert_to_mb True
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \xa1,\xf9
+ byte2 \x40,\x7e;\xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32\x80\x89\x42\x49\x47\x35\x2d\x30\x02
+
+ mb_conversion [\xa140,\xf9fe]->\x2140
+ ct_conversion [\x2140,\x79fe]->\xa140
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_HK.big5hkscs/Compose.pre b/libX11/nls/zh_HK.big5hkscs/Compose.pre
index a06611f07..14ec90348 100644
--- a/libX11/nls/zh_HK.big5hkscs/Compose.pre
+++ b/libX11/nls/zh_HK.big5hkscs/Compose.pre
@@ -1,13 +1,13 @@
-XCOMM
-XCOMM zh_HK.big5hkscs Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_HK.big5hkscs Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_HK.big5hkscs/XI18N_OBJS b/libX11/nls/zh_HK.big5hkscs/XI18N_OBJS
index 29dc2167a..e5ccf4a21 100644
--- a/libX11/nls/zh_HK.big5hkscs/XI18N_OBJS
+++ b/libX11/nls/zh_HK.big5hkscs/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_HK.big5hkscs locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_HK.big5hkscs locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_HK.big5hkscs/XLC_LOCALE.pre b/libX11/nls/zh_HK.big5hkscs/XLC_LOCALE.pre
index dc19438dd..7aae554a0 100644
--- a/libX11/nls/zh_HK.big5hkscs/XLC_LOCALE.pre
+++ b/libX11/nls/zh_HK.big5hkscs/XLC_LOCALE.pre
@@ -1,71 +1,71 @@
-XCOMM
-XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
-XCOMM
-XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
-XCOMM modified for Big5HKSCS by Roger So <roger.so@sw-linux.com>
-XCOMM
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-
-XCOMM fs1 class (HKSCS extensions)
-fs1 {
- charset {
- name BIG5HKSCS-0:GLGR
- }
- font {
- primary BIG5HKSCS-0:GLGR
- substitute BIG5HKSCS-0:GLGR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh_HK.big5hkscs
-mb_cur_max 2
-state_depend_encoding False
-
-wc_encoding_mask \x00008000
-wc_shift_bits 8
-
-use_stdc_env True
-force_convert_to_mb True
-
-+XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \x85,\xfe
- byte2 \x40,\x7e;\xa1,\xfe
-
- wc_encoding \x00008000
- ct_encoding BIG5HKSCS-0:GLGR:\x1b\x25\x2f\x32
-
- mb_conversion [\x8540,\xfefe]->\x0540
- ct_conversion [\x0540,\x7efe]->\x8540
-}
-
-END XLC_XLOCALE
+XCOMM
+XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
+XCOMM
+XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
+XCOMM modified for Big5HKSCS by Roger So <roger.so@sw-linux.com>
+XCOMM
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+
+XCOMM fs1 class (HKSCS extensions)
+fs1 {
+ charset {
+ name BIG5HKSCS-0:GLGR
+ }
+ font {
+ primary BIG5HKSCS-0:GLGR
+ substitute BIG5HKSCS-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_HK.big5hkscs
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00008000
+wc_shift_bits 8
+
+use_stdc_env True
+force_convert_to_mb True
+
++XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \x85,\xfe
+ byte2 \x40,\x7e;\xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5HKSCS-0:GLGR:\x1b\x25\x2f\x32
+
+ mb_conversion [\x8540,\xfefe]->\x0540
+ ct_conversion [\x0540,\x7efe]->\x8540
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_TW.UTF-8/XI18N_OBJS b/libX11/nls/zh_TW.UTF-8/XI18N_OBJS
index a3a644b7c..aa9a447bd 100644
--- a/libX11/nls/zh_TW.UTF-8/XI18N_OBJS
+++ b/libX11/nls/zh_TW.UTF-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_TW.UTF-8 locale
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_TW.UTF-8 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_TW.UTF-8/XLC_LOCALE.pre b/libX11/nls/zh_TW.UTF-8/XLC_LOCALE.pre
index d5b19c03d..d650d6c32 100644
--- a/libX11/nls/zh_TW.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/zh_TW.UTF-8/XLC_LOCALE.pre
@@ -1,91 +1,91 @@
-XCOMM XLocale Database Sample for zh_TW.UTF-8
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-XCOMM fs2 class (Chinese Han Character (Traditional))
-fs2 {
- charset {
- name BIG5-0:GLGR
- }
- font {
- primary BIG5-0:GLGR
- substitute BIG5-0:GLGR
- }
-}
-XCOMM fs3 class
-fs3 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side none
- length 2
- ct_encoding BIG5-0:GLGR
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for zh_TW.UTF-8
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+XCOMM fs2 class (Chinese Han Character (Traditional))
+fs2 {
+ charset {
+ name BIG5-0:GLGR
+ }
+ font {
+ primary BIG5-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+XCOMM fs3 class
+fs3 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side none
+ length 2
+ ct_encoding BIG5-0:GLGR
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_TW.big5/Compose.pre b/libX11/nls/zh_TW.big5/Compose.pre
index 3c0dbb704..054c42e25 100644
--- a/libX11/nls/zh_TW.big5/Compose.pre
+++ b/libX11/nls/zh_TW.big5/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM zh_TW.big5 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_TW.big5 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_TW.big5/XI18N_OBJS b/libX11/nls/zh_TW.big5/XI18N_OBJS
index 6937f614b..ff5ba24b6 100644
--- a/libX11/nls/zh_TW.big5/XI18N_OBJS
+++ b/libX11/nls/zh_TW.big5/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_TW.big5 locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_TW.big5 locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_TW.big5/XLC_LOCALE.pre b/libX11/nls/zh_TW.big5/XLC_LOCALE.pre
index b04d02318..551e5d0fe 100644
--- a/libX11/nls/zh_TW.big5/XLC_LOCALE.pre
+++ b/libX11/nls/zh_TW.big5/XLC_LOCALE.pre
@@ -1,93 +1,93 @@
-XCOMM
-XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
-XCOMM
-XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
-XCOMM
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name BIG5-0:GLGR
- }
- font {
- primary BIG5-0:GLGR
- substitute BIG5-0:GLGR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh_TW.Big5
-mb_cur_max 2
-state_depend_encoding False
-
-wc_encoding_mask \x00038000
-wc_shift_bits 8
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \xa1,\xf9
- byte2 \x40,\x7e;\xa1,\xfe
-
- wc_encoding \x00008000
- ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32
-
- mb_conversion [\xa140,\xf9fe]->\x2140
- ct_conversion [\x2140,\x79fe]->\xa140
-}
-
-XCOMM cs2 class
-cs2 {
- side none
- length 2
- byte1 \xa1,\xc7
- byte2 \x40,\x7e;\xa1,\xfe
- wc_encoding \x00010000
- ct_encoding BIG5-E0:GL;BIG5-E0:GR
- mb_conversion [\xa140,\xa17e]->\x2121, [\xa1a1,\xa1bf]->\x2160, [\xa1c0,\xa1fe]->\x2221, [\xa240,\xa25e]->\x2260, [\xa25f,\xa27e]->\x2321, [\xa2a1,\xa2de]->\x2341, [\xa2df,\xa2fe]->\x2421, [\xa340,\xa37d]->\x2441, [\xa37e,\xa37e]->\x2521, [\xa3a1,\xa3fd]->\x2522, [\xa3fe,\xa3fe]->\x2621, [\xa440,\xa47e]->\x2622, [\xa4a1,\xa4be]->\x2661, [\xa4bf,\xa4fe]->\x2721, [\xa540,\xa55d]->\x2761, [\xa55e,\xa57e]->\x2821, [\xa5a1,\xa5dd]->\x2842, [\xa5de,\xa5fe]->\x2921, [\xa640,\xa67c]->\x2942, [\xa67d,\xa67e]->\x2a21, [\xa6a1,\xa6fc]->\x2a23, [\xa6fd,\xa6fe]->\x2b21, [\xa740,\xa77e]->\x2b23, [\xa7a1,\xa7bd]->\x2b62, [\xa7be,\xa7fe]->\x2c21, [\xa840,\xa85c]->\x2c62, [\xa85d,\xa87e]->\x2d21, [\xa8a1,\xa8dc]->\x2d43, [\xa8dd,\xa8fe]->\x2e21, [\xa940,\xa97b]->\x2e43, [\xa97c,\xa97e]->\x2f21, [\xa9a1,\xa9fb]->\x2f24, [\xa9fc,\xa9fe]->\x3021, [\xaa40,\xaa7e]->\x3024, [\xaaa1,\xaabc]->\x3063, [\xaabd,\xaafe]->\x3121, [\xab40,\xab5b]->\x3163, [\xab5c,\xab7e]->\x3221, [\xaba1,\xabdb]->\x3244, [\xabdc,\xabfe]->\x3321, [\xac40,\xac7a]->\x3344, [\xac7b,\xac7e]->\x3421, [\xaca1,\xacfa]->\x3425, [\xacfb,\xacfe]->\x3521, [\xad40,\xad7e]->\x3525, [\xada1,\xadbb]->\x3564, [\xadbc,\xadfe]->\x3621, [\xae40,\xae5a]->\x3664, [\xae5b,\xae7e]->\x3721, [\xaea1,\xaeda]->\x3745, [\xaedb,\xaefe]->\x3821, [\xaf40,\xaf79]->\x3845, [\xaf7a,\xaf7e]->\x3921, [\xafa1,\xaff9]->\x3926, [\xaffa,\xaffe]->\x3a21, [\xb040,\xb07e]->\x3a26, [\xb0a1,\xb0ba]->\x3a65, [\xb0bb,\xb0fe]->\x3b21, [\xb140,\xb159]->\x3b65, [\xb15a,\xb17e]->\x3c21, [\xb1a1,\xb1d9]->\x3c46, [\xb1da,\xb1fe]->\x3d21, [\xb240,\xb278]->\x3d46, [\xb279,\xb27e]->\x3e21, [\xb2a1,\xb2f8]->\x3e27, [\xb2f9,\xb2fe]->\x3f21, [\xb340,\xb37e]->\x3f27, [\xb3a1,\xb3b9]->\x3f66, [\xb3ba,\xb3fe]->\x4021, [\xb440,\xb458]->\x4066, [\xb459,\xb47e]->\x4121, [\xb4a1,\xb4d8]->\x4147, [\xb4d9,\xb4fe]->\x4221, [\xb540,\xb577]->\x4247, [\xb578,\xb57e]->\x4321, [\xb5a1,\xb5f7]->\x4328, [\xb5f8,\xb5fe]->\x4421, [\xb640,\xb67e]->\x4428, [\xb6a1,\xb6b8]->\x4467, [\xb6b9,\xb6fe]->\x4521, [\xb740,\xb757]->\x4567, [\xb758,\xb77e]->\x4621, [\xb7a1,\xb7d7]->\x4648, [\xb7d8,\xb7fe]->\x4721, [\xb840,\xb876]->\x4748, [\xb877,\xb87e]->\x4821, [\xb8a1,\xb8f6]->\x4829, [\xb8f7,\xb8fe]->\x4921, [\xb940,\xb97e]->\x4929, [\xb9a1,\xb9b7]->\x4968, [\xb9b8,\xb9fe]->\x4a21, [\xba40,\xba56]->\x4a68, [\xba57,\xba7e]->\x4b21, [\xbaa1,\xbad6]->\x4b49, [\xbad7,\xbafe]->\x4c21, [\xbb40,\xbb75]->\x4c49, [\xbb76,\xbb7e]->\x4d21, [\xbba1,\xbbf5]->\x4d2a, [\xbbf6,\xbbfe]->\x4e21, [\xbc40,\xbc7e]->\x4e2a, [\xbca1,\xbcb6]->\x4e69, [\xbcb7,\xbcfe]->\x4f21, [\xbd40,\xbd55]->\x4f69, [\xbd56,\xbd7e]->\x5021, [\xbda1,\xbdd5]->\x504a, [\xbdd6,\xbdfe]->\x5121, [\xbe40,\xbe74]->\x514a, [\xbe75,\xbe7e]->\x5221, [\xbea1,\xbef4]->\x522b, [\xbef5,\xbefe]->\x5321, [\xbf40,\xbf7e]->\x532b, [\xbfa1,\xbfb5]->\x536a, [\xbfb6,\xbffe]->\x5421, [\xc040,\xc054]->\x546a, [\xc055,\xc07e]->\x5521, [\xc0a1,\xc0d4]->\x554b, [\xc0d5,\xc0fe]->\x5621, [\xc140,\xc173]->\x564b, [\xc174,\xc17e]->\x5721, [\xc1a1,\xc1f3]->\x572c, [\xc1f4,\xc1fe]->\x5821, [\xc240,\xc27e]->\x582c, [\xc2a1,\xc2b4]->\x586b, [\xc2b5,\xc2fe]->\x5921, [\xc340,\xc353]->\x596b, [\xc354,\xc37e]->\x5a21, [\xc3a1,\xc3d3]->\x5a4c, [\xc3d4,\xc3fe]->\x5b21, [\xc440,\xc472]->\x5b4c, [\xc473,\xc47e]->\x5c21, [\xc4a1,\xc4f2]->\x5c2d, [\xc4f3,\xc4fe]->\x5d21, [\xc540,\xc57e]->\x5d2d, [\xc5a1,\xc5b3]->\x5d6c, [\xc5b4,\xc5fe]->\x5e21, [\xc640,\xc652]->\x5e6c, [\xc653,\xc67e]->\x5f21, [\xc6a1,\xc6d2]->\x5f4d, [\xc6d3,\xc6fe]->\x6021, [\xc740,\xc771]->\x604d, [\xc772,\xc77e]->\x6121, [\xc7a1,\xc7f1]->\x612e, [\xc7f2,\xc7fe]->\x6221
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- length 2
- byte1 \xc9,\xf9
- byte2 \x40,\x7e;\xa1,\xfe
- wc_encoding \x00020000
- ct_encoding BIG5-E1:GL;BIG5-E1:GR
- mb_conversion [\xc940,\xc97e]->\x2121, [\xc9a1,\xc9bf]->\x2160, [\xc9c0,\xc9fe]->\x2221, [\xca40,\xca5e]->\x2260, [\xca5f,\xca7e]->\x2321, [\xcaa1,\xcade]->\x2341, [\xcadf,\xcafe]->\x2421, [\xcb40,\xcb7d]->\x2441, [\xcb7e,\xcb7e]->\x2521, [\xcba1,\xcbfd]->\x2522, [\xcbfe,\xcbfe]->\x2621, [\xcc40,\xcc7e]->\x2622, [\xcca1,\xccbe]->\x2661, [\xccbf,\xccfe]->\x2721, [\xcd40,\xcd5d]->\x2761, [\xcd5e,\xcd7e]->\x2821, [\xcda1,\xcddd]->\x2842, [\xcdde,\xcdfe]->\x2921, [\xce40,\xce7c]->\x2942, [\xce7d,\xce7e]->\x2a21, [\xcea1,\xcefc]->\x2a23, [\xcefd,\xcefe]->\x2b21, [\xcf40,\xcf7e]->\x2b23, [\xcfa1,\xcfbd]->\x2b62, [\xcfbe,\xcffe]->\x2c21, [\xd040,\xd05c]->\x2c62, [\xd05d,\xd07e]->\x2d21, [\xd0a1,\xd0dc]->\x2d43, [\xd0dd,\xd0fe]->\x2e21, [\xd140,\xd17b]->\x2e43, [\xd17c,\xd17e]->\x2f21, [\xd1a1,\xd1fb]->\x2f24, [\xd1fc,\xd1fe]->\x3021, [\xd240,\xd27e]->\x3024, [\xd2a1,\xd2bc]->\x3063, [\xd2bd,\xd2fe]->\x3121, [\xd340,\xd35b]->\x3163, [\xd35c,\xd37e]->\x3221, [\xd3a1,\xd3db]->\x3244, [\xd3dc,\xd3fe]->\x3321, [\xd440,\xd47a]->\x3344, [\xd47b,\xd47e]->\x3421, [\xd4a1,\xd4fa]->\x3425, [\xd4fb,\xd4fe]->\x3521, [\xd540,\xd57e]->\x3525, [\xd5a1,\xd5bb]->\x3564, [\xd5bc,\xd5fe]->\x3621, [\xd640,\xd65a]->\x3664, [\xd65b,\xd67e]->\x3721, [\xd6a1,\xd6da]->\x3745, [\xd6db,\xd6fe]->\x3821, [\xd740,\xd779]->\x3845, [\xd77a,\xd77e]->\x3921, [\xd7a1,\xd7f9]->\x3926, [\xd7fa,\xd7fe]->\x3a21, [\xd840,\xd87e]->\x3a26, [\xd8a1,\xd8ba]->\x3a65, [\xd8bb,\xd8fe]->\x3b21, [\xd940,\xd959]->\x3b65, [\xd95a,\xd97e]->\x3c21, [\xd9a1,\xd9d9]->\x3c46, [\xd9da,\xd9fe]->\x3d21, [\xda40,\xda78]->\x3d46, [\xda79,\xda7e]->\x3e21, [\xdaa1,\xdaf8]->\x3e27, [\xdaf9,\xdafe]->\x3f21, [\xdb40,\xdb7e]->\x3f27, [\xdba1,\xdbb9]->\x3f66, [\xdbba,\xdbfe]->\x4021, [\xdc40,\xdc58]->\x4066, [\xdc59,\xdc7e]->\x4121, [\xdca1,\xdcd8]->\x4147, [\xdcd9,\xdcfe]->\x4221, [\xdd40,\xdd77]->\x4247, [\xdd78,\xdd7e]->\x4321, [\xdda1,\xddf7]->\x4328, [\xddf8,\xddfe]->\x4421, [\xde40,\xde7e]->\x4428, [\xdea1,\xdeb8]->\x4467, [\xdeb9,\xdefe]->\x4521, [\xdf40,\xdf57]->\x4567, [\xdf58,\xdf7e]->\x4621, [\xdfa1,\xdfd7]->\x4648, [\xdfd8,\xdffe]->\x4721, [\xe040,\xe076]->\x4748, [\xe077,\xe07e]->\x4821, [\xe0a1,\xe0f6]->\x4829, [\xe0f7,\xe0fe]->\x4921, [\xe140,\xe17e]->\x4929, [\xe1a1,\xe1b7]->\x4968, [\xe1b8,\xe1fe]->\x4a21, [\xe240,\xe256]->\x4a68, [\xe257,\xe27e]->\x4b21, [\xe2a1,\xe2d6]->\x4b49, [\xe2d7,\xe2fe]->\x4c21, [\xe340,\xe375]->\x4c49, [\xe376,\xe37e]->\x4d21, [\xe3a1,\xe3f5]->\x4d2a, [\xe3f6,\xe3fe]->\x4e21, [\xe440,\xe47e]->\x4e2a, [\xe4a1,\xe4b6]->\x4e69, [\xe4b7,\xe4fe]->\x4f21, [\xe540,\xe555]->\x4f69, [\xe556,\xe57e]->\x5021, [\xe5a1,\xe5d5]->\x504a, [\xe5d6,\xe5fe]->\x5121, [\xe640,\xe674]->\x514a, [\xe675,\xe67e]->\x5221, [\xe6a1,\xe6f4]->\x522b, [\xe6f5,\xe6fe]->\x5321, [\xe740,\xe77e]->\x532b, [\xe7a1,\xe7b5]->\x536a, [\xe7b6,\xe7fe]->\x5421, [\xe840,\xe854]->\x546a, [\xe855,\xe87e]->\x5521, [\xe8a1,\xe8d4]->\x554b, [\xe8d5,\xe8fe]->\x5621, [\xe940,\xe973]->\x564b, [\xe974,\xe97e]->\x5721, [\xe9a1,\xe9f3]->\x572c, [\xe9f4,\xe9fe]->\x5821, [\xea40,\xea7e]->\x582c, [\xeaa1,\xeab4]->\x586b, [\xeab5,\xeafe]->\x5921, [\xeb40,\xeb53]->\x596b, [\xeb54,\xeb7e]->\x5a21, [\xeba1,\xebd3]->\x5a4c, [\xebd4,\xebfe]->\x5b21, [\xec40,\xec72]->\x5b4c, [\xec73,\xec7e]->\x5c21, [\xeca1,\xecf2]->\x5c2d, [\xecf3,\xecfe]->\x5d21, [\xed40,\xed7e]->\x5d2d, [\xeda1,\xedb3]->\x5d6c, [\xedb4,\xedfe]->\x5e21, [\xee40,\xee52]->\x5e6c, [\xee53,\xee7e]->\x5f21, [\xeea1,\xeed2]->\x5f4d, [\xeed3,\xeefe]->\x6021, [\xef40,\xef71]->\x604d, [\xef72,\xef7e]->\x6121, [\xefa1,\xeff1]->\x612e, [\xeff2,\xeffe]->\x6221, [\xf040,\xf07e]->\x622e, [\xf0a1,\xf0b2]->\x626d, [\xf0b3,\xf0fe]->\x6321, [\xf140,\xf151]->\x636d, [\xf152,\xf17e]->\x6421, [\xf1a1,\xf1d1]->\x644e, [\xf1d2,\xf1fe]->\x6521, [\xf240,\xf270]->\x654e, [\xf271,\xf27e]->\x6621, [\xf2a1,\xf2f0]->\x662f, [\xf2f1,\xf2fe]->\x6721, [\xf340,\xf37e]->\x672f, [\xf3a1,\xf3b1]->\x676e, [\xf3b2,\xf3fe]->\x6821, [\xf440,\xf450]->\x686e, [\xf451,\xf47e]->\x6921, [\xf4a1,\xf4d0]->\x694f, [\xf4d1,\xf4fe]->\x6a21, [\xf540,\xf56f]->\x6a4f, [\xf570,\xf57e]->\x6b21, [\xf5a1,\xf5ef]->\x6b30, [\xf5f0,\xf5fe]->\x6c21, [\xf640,\xf67e]->\x6c30, [\xf6a1,\xf6b0]->\x6c6f, [\xf6b1,\xf6fe]->\x6d21, [\xf740,\xf74f]->\x6d6f, [\xf750,\xf77e]->\x6e21, [\xf7a1,\xf7cf]->\x6e50, [\xf7d0,\xf7fe]->\x6f21, [\xf840,\xf86e]->\x6f50, [\xf86f,\xf87e]->\x7021, [\xf8a1,\xf8ee]->\x7031, [\xf8ef,\xf8fe]->\x7121, [\xf940,\xf97e]->\x7131, [\xf9a1,\xf9af]->\x7170, [\xf9b0,\xf9fe]->\x7221
-}
-
-END XLC_XLOCALE
+XCOMM
+XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
+XCOMM
+XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
+XCOMM
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name BIG5-0:GLGR
+ }
+ font {
+ primary BIG5-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_TW.Big5
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00038000
+wc_shift_bits 8
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \xa1,\xf9
+ byte2 \x40,\x7e;\xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32
+
+ mb_conversion [\xa140,\xf9fe]->\x2140
+ ct_conversion [\x2140,\x79fe]->\xa140
+}
+
+XCOMM cs2 class
+cs2 {
+ side none
+ length 2
+ byte1 \xa1,\xc7
+ byte2 \x40,\x7e;\xa1,\xfe
+ wc_encoding \x00010000
+ ct_encoding BIG5-E0:GL;BIG5-E0:GR
+ mb_conversion [\xa140,\xa17e]->\x2121, [\xa1a1,\xa1bf]->\x2160, [\xa1c0,\xa1fe]->\x2221, [\xa240,\xa25e]->\x2260, [\xa25f,\xa27e]->\x2321, [\xa2a1,\xa2de]->\x2341, [\xa2df,\xa2fe]->\x2421, [\xa340,\xa37d]->\x2441, [\xa37e,\xa37e]->\x2521, [\xa3a1,\xa3fd]->\x2522, [\xa3fe,\xa3fe]->\x2621, [\xa440,\xa47e]->\x2622, [\xa4a1,\xa4be]->\x2661, [\xa4bf,\xa4fe]->\x2721, [\xa540,\xa55d]->\x2761, [\xa55e,\xa57e]->\x2821, [\xa5a1,\xa5dd]->\x2842, [\xa5de,\xa5fe]->\x2921, [\xa640,\xa67c]->\x2942, [\xa67d,\xa67e]->\x2a21, [\xa6a1,\xa6fc]->\x2a23, [\xa6fd,\xa6fe]->\x2b21, [\xa740,\xa77e]->\x2b23, [\xa7a1,\xa7bd]->\x2b62, [\xa7be,\xa7fe]->\x2c21, [\xa840,\xa85c]->\x2c62, [\xa85d,\xa87e]->\x2d21, [\xa8a1,\xa8dc]->\x2d43, [\xa8dd,\xa8fe]->\x2e21, [\xa940,\xa97b]->\x2e43, [\xa97c,\xa97e]->\x2f21, [\xa9a1,\xa9fb]->\x2f24, [\xa9fc,\xa9fe]->\x3021, [\xaa40,\xaa7e]->\x3024, [\xaaa1,\xaabc]->\x3063, [\xaabd,\xaafe]->\x3121, [\xab40,\xab5b]->\x3163, [\xab5c,\xab7e]->\x3221, [\xaba1,\xabdb]->\x3244, [\xabdc,\xabfe]->\x3321, [\xac40,\xac7a]->\x3344, [\xac7b,\xac7e]->\x3421, [\xaca1,\xacfa]->\x3425, [\xacfb,\xacfe]->\x3521, [\xad40,\xad7e]->\x3525, [\xada1,\xadbb]->\x3564, [\xadbc,\xadfe]->\x3621, [\xae40,\xae5a]->\x3664, [\xae5b,\xae7e]->\x3721, [\xaea1,\xaeda]->\x3745, [\xaedb,\xaefe]->\x3821, [\xaf40,\xaf79]->\x3845, [\xaf7a,\xaf7e]->\x3921, [\xafa1,\xaff9]->\x3926, [\xaffa,\xaffe]->\x3a21, [\xb040,\xb07e]->\x3a26, [\xb0a1,\xb0ba]->\x3a65, [\xb0bb,\xb0fe]->\x3b21, [\xb140,\xb159]->\x3b65, [\xb15a,\xb17e]->\x3c21, [\xb1a1,\xb1d9]->\x3c46, [\xb1da,\xb1fe]->\x3d21, [\xb240,\xb278]->\x3d46, [\xb279,\xb27e]->\x3e21, [\xb2a1,\xb2f8]->\x3e27, [\xb2f9,\xb2fe]->\x3f21, [\xb340,\xb37e]->\x3f27, [\xb3a1,\xb3b9]->\x3f66, [\xb3ba,\xb3fe]->\x4021, [\xb440,\xb458]->\x4066, [\xb459,\xb47e]->\x4121, [\xb4a1,\xb4d8]->\x4147, [\xb4d9,\xb4fe]->\x4221, [\xb540,\xb577]->\x4247, [\xb578,\xb57e]->\x4321, [\xb5a1,\xb5f7]->\x4328, [\xb5f8,\xb5fe]->\x4421, [\xb640,\xb67e]->\x4428, [\xb6a1,\xb6b8]->\x4467, [\xb6b9,\xb6fe]->\x4521, [\xb740,\xb757]->\x4567, [\xb758,\xb77e]->\x4621, [\xb7a1,\xb7d7]->\x4648, [\xb7d8,\xb7fe]->\x4721, [\xb840,\xb876]->\x4748, [\xb877,\xb87e]->\x4821, [\xb8a1,\xb8f6]->\x4829, [\xb8f7,\xb8fe]->\x4921, [\xb940,\xb97e]->\x4929, [\xb9a1,\xb9b7]->\x4968, [\xb9b8,\xb9fe]->\x4a21, [\xba40,\xba56]->\x4a68, [\xba57,\xba7e]->\x4b21, [\xbaa1,\xbad6]->\x4b49, [\xbad7,\xbafe]->\x4c21, [\xbb40,\xbb75]->\x4c49, [\xbb76,\xbb7e]->\x4d21, [\xbba1,\xbbf5]->\x4d2a, [\xbbf6,\xbbfe]->\x4e21, [\xbc40,\xbc7e]->\x4e2a, [\xbca1,\xbcb6]->\x4e69, [\xbcb7,\xbcfe]->\x4f21, [\xbd40,\xbd55]->\x4f69, [\xbd56,\xbd7e]->\x5021, [\xbda1,\xbdd5]->\x504a, [\xbdd6,\xbdfe]->\x5121, [\xbe40,\xbe74]->\x514a, [\xbe75,\xbe7e]->\x5221, [\xbea1,\xbef4]->\x522b, [\xbef5,\xbefe]->\x5321, [\xbf40,\xbf7e]->\x532b, [\xbfa1,\xbfb5]->\x536a, [\xbfb6,\xbffe]->\x5421, [\xc040,\xc054]->\x546a, [\xc055,\xc07e]->\x5521, [\xc0a1,\xc0d4]->\x554b, [\xc0d5,\xc0fe]->\x5621, [\xc140,\xc173]->\x564b, [\xc174,\xc17e]->\x5721, [\xc1a1,\xc1f3]->\x572c, [\xc1f4,\xc1fe]->\x5821, [\xc240,\xc27e]->\x582c, [\xc2a1,\xc2b4]->\x586b, [\xc2b5,\xc2fe]->\x5921, [\xc340,\xc353]->\x596b, [\xc354,\xc37e]->\x5a21, [\xc3a1,\xc3d3]->\x5a4c, [\xc3d4,\xc3fe]->\x5b21, [\xc440,\xc472]->\x5b4c, [\xc473,\xc47e]->\x5c21, [\xc4a1,\xc4f2]->\x5c2d, [\xc4f3,\xc4fe]->\x5d21, [\xc540,\xc57e]->\x5d2d, [\xc5a1,\xc5b3]->\x5d6c, [\xc5b4,\xc5fe]->\x5e21, [\xc640,\xc652]->\x5e6c, [\xc653,\xc67e]->\x5f21, [\xc6a1,\xc6d2]->\x5f4d, [\xc6d3,\xc6fe]->\x6021, [\xc740,\xc771]->\x604d, [\xc772,\xc77e]->\x6121, [\xc7a1,\xc7f1]->\x612e, [\xc7f2,\xc7fe]->\x6221
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ length 2
+ byte1 \xc9,\xf9
+ byte2 \x40,\x7e;\xa1,\xfe
+ wc_encoding \x00020000
+ ct_encoding BIG5-E1:GL;BIG5-E1:GR
+ mb_conversion [\xc940,\xc97e]->\x2121, [\xc9a1,\xc9bf]->\x2160, [\xc9c0,\xc9fe]->\x2221, [\xca40,\xca5e]->\x2260, [\xca5f,\xca7e]->\x2321, [\xcaa1,\xcade]->\x2341, [\xcadf,\xcafe]->\x2421, [\xcb40,\xcb7d]->\x2441, [\xcb7e,\xcb7e]->\x2521, [\xcba1,\xcbfd]->\x2522, [\xcbfe,\xcbfe]->\x2621, [\xcc40,\xcc7e]->\x2622, [\xcca1,\xccbe]->\x2661, [\xccbf,\xccfe]->\x2721, [\xcd40,\xcd5d]->\x2761, [\xcd5e,\xcd7e]->\x2821, [\xcda1,\xcddd]->\x2842, [\xcdde,\xcdfe]->\x2921, [\xce40,\xce7c]->\x2942, [\xce7d,\xce7e]->\x2a21, [\xcea1,\xcefc]->\x2a23, [\xcefd,\xcefe]->\x2b21, [\xcf40,\xcf7e]->\x2b23, [\xcfa1,\xcfbd]->\x2b62, [\xcfbe,\xcffe]->\x2c21, [\xd040,\xd05c]->\x2c62, [\xd05d,\xd07e]->\x2d21, [\xd0a1,\xd0dc]->\x2d43, [\xd0dd,\xd0fe]->\x2e21, [\xd140,\xd17b]->\x2e43, [\xd17c,\xd17e]->\x2f21, [\xd1a1,\xd1fb]->\x2f24, [\xd1fc,\xd1fe]->\x3021, [\xd240,\xd27e]->\x3024, [\xd2a1,\xd2bc]->\x3063, [\xd2bd,\xd2fe]->\x3121, [\xd340,\xd35b]->\x3163, [\xd35c,\xd37e]->\x3221, [\xd3a1,\xd3db]->\x3244, [\xd3dc,\xd3fe]->\x3321, [\xd440,\xd47a]->\x3344, [\xd47b,\xd47e]->\x3421, [\xd4a1,\xd4fa]->\x3425, [\xd4fb,\xd4fe]->\x3521, [\xd540,\xd57e]->\x3525, [\xd5a1,\xd5bb]->\x3564, [\xd5bc,\xd5fe]->\x3621, [\xd640,\xd65a]->\x3664, [\xd65b,\xd67e]->\x3721, [\xd6a1,\xd6da]->\x3745, [\xd6db,\xd6fe]->\x3821, [\xd740,\xd779]->\x3845, [\xd77a,\xd77e]->\x3921, [\xd7a1,\xd7f9]->\x3926, [\xd7fa,\xd7fe]->\x3a21, [\xd840,\xd87e]->\x3a26, [\xd8a1,\xd8ba]->\x3a65, [\xd8bb,\xd8fe]->\x3b21, [\xd940,\xd959]->\x3b65, [\xd95a,\xd97e]->\x3c21, [\xd9a1,\xd9d9]->\x3c46, [\xd9da,\xd9fe]->\x3d21, [\xda40,\xda78]->\x3d46, [\xda79,\xda7e]->\x3e21, [\xdaa1,\xdaf8]->\x3e27, [\xdaf9,\xdafe]->\x3f21, [\xdb40,\xdb7e]->\x3f27, [\xdba1,\xdbb9]->\x3f66, [\xdbba,\xdbfe]->\x4021, [\xdc40,\xdc58]->\x4066, [\xdc59,\xdc7e]->\x4121, [\xdca1,\xdcd8]->\x4147, [\xdcd9,\xdcfe]->\x4221, [\xdd40,\xdd77]->\x4247, [\xdd78,\xdd7e]->\x4321, [\xdda1,\xddf7]->\x4328, [\xddf8,\xddfe]->\x4421, [\xde40,\xde7e]->\x4428, [\xdea1,\xdeb8]->\x4467, [\xdeb9,\xdefe]->\x4521, [\xdf40,\xdf57]->\x4567, [\xdf58,\xdf7e]->\x4621, [\xdfa1,\xdfd7]->\x4648, [\xdfd8,\xdffe]->\x4721, [\xe040,\xe076]->\x4748, [\xe077,\xe07e]->\x4821, [\xe0a1,\xe0f6]->\x4829, [\xe0f7,\xe0fe]->\x4921, [\xe140,\xe17e]->\x4929, [\xe1a1,\xe1b7]->\x4968, [\xe1b8,\xe1fe]->\x4a21, [\xe240,\xe256]->\x4a68, [\xe257,\xe27e]->\x4b21, [\xe2a1,\xe2d6]->\x4b49, [\xe2d7,\xe2fe]->\x4c21, [\xe340,\xe375]->\x4c49, [\xe376,\xe37e]->\x4d21, [\xe3a1,\xe3f5]->\x4d2a, [\xe3f6,\xe3fe]->\x4e21, [\xe440,\xe47e]->\x4e2a, [\xe4a1,\xe4b6]->\x4e69, [\xe4b7,\xe4fe]->\x4f21, [\xe540,\xe555]->\x4f69, [\xe556,\xe57e]->\x5021, [\xe5a1,\xe5d5]->\x504a, [\xe5d6,\xe5fe]->\x5121, [\xe640,\xe674]->\x514a, [\xe675,\xe67e]->\x5221, [\xe6a1,\xe6f4]->\x522b, [\xe6f5,\xe6fe]->\x5321, [\xe740,\xe77e]->\x532b, [\xe7a1,\xe7b5]->\x536a, [\xe7b6,\xe7fe]->\x5421, [\xe840,\xe854]->\x546a, [\xe855,\xe87e]->\x5521, [\xe8a1,\xe8d4]->\x554b, [\xe8d5,\xe8fe]->\x5621, [\xe940,\xe973]->\x564b, [\xe974,\xe97e]->\x5721, [\xe9a1,\xe9f3]->\x572c, [\xe9f4,\xe9fe]->\x5821, [\xea40,\xea7e]->\x582c, [\xeaa1,\xeab4]->\x586b, [\xeab5,\xeafe]->\x5921, [\xeb40,\xeb53]->\x596b, [\xeb54,\xeb7e]->\x5a21, [\xeba1,\xebd3]->\x5a4c, [\xebd4,\xebfe]->\x5b21, [\xec40,\xec72]->\x5b4c, [\xec73,\xec7e]->\x5c21, [\xeca1,\xecf2]->\x5c2d, [\xecf3,\xecfe]->\x5d21, [\xed40,\xed7e]->\x5d2d, [\xeda1,\xedb3]->\x5d6c, [\xedb4,\xedfe]->\x5e21, [\xee40,\xee52]->\x5e6c, [\xee53,\xee7e]->\x5f21, [\xeea1,\xeed2]->\x5f4d, [\xeed3,\xeefe]->\x6021, [\xef40,\xef71]->\x604d, [\xef72,\xef7e]->\x6121, [\xefa1,\xeff1]->\x612e, [\xeff2,\xeffe]->\x6221, [\xf040,\xf07e]->\x622e, [\xf0a1,\xf0b2]->\x626d, [\xf0b3,\xf0fe]->\x6321, [\xf140,\xf151]->\x636d, [\xf152,\xf17e]->\x6421, [\xf1a1,\xf1d1]->\x644e, [\xf1d2,\xf1fe]->\x6521, [\xf240,\xf270]->\x654e, [\xf271,\xf27e]->\x6621, [\xf2a1,\xf2f0]->\x662f, [\xf2f1,\xf2fe]->\x6721, [\xf340,\xf37e]->\x672f, [\xf3a1,\xf3b1]->\x676e, [\xf3b2,\xf3fe]->\x6821, [\xf440,\xf450]->\x686e, [\xf451,\xf47e]->\x6921, [\xf4a1,\xf4d0]->\x694f, [\xf4d1,\xf4fe]->\x6a21, [\xf540,\xf56f]->\x6a4f, [\xf570,\xf57e]->\x6b21, [\xf5a1,\xf5ef]->\x6b30, [\xf5f0,\xf5fe]->\x6c21, [\xf640,\xf67e]->\x6c30, [\xf6a1,\xf6b0]->\x6c6f, [\xf6b1,\xf6fe]->\x6d21, [\xf740,\xf74f]->\x6d6f, [\xf750,\xf77e]->\x6e21, [\xf7a1,\xf7cf]->\x6e50, [\xf7d0,\xf7fe]->\x6f21, [\xf840,\xf86e]->\x6f50, [\xf86f,\xf87e]->\x7021, [\xf8a1,\xf8ee]->\x7031, [\xf8ef,\xf8fe]->\x7121, [\xf940,\xf97e]->\x7131, [\xf9a1,\xf9af]->\x7170, [\xf9b0,\xf9fe]->\x7221
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_TW/Compose.pre b/libX11/nls/zh_TW/Compose.pre
index 79be29051..32be5b186 100644
--- a/libX11/nls/zh_TW/Compose.pre
+++ b/libX11/nls/zh_TW/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM zh_TW Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_TW Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_TW/XI18N_OBJS b/libX11/nls/zh_TW/XI18N_OBJS
index 0f471dd00..e8218cf29 100644
--- a/libX11/nls/zh_TW/XI18N_OBJS
+++ b/libX11/nls/zh_TW/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_TW locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_TW locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximp40 _Ximp_OpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_TW/XLC_LOCALE.pre b/libX11/nls/zh_TW/XLC_LOCALE.pre
index d75ece85f..7eed43670 100644
--- a/libX11/nls/zh_TW/XLC_LOCALE.pre
+++ b/libX11/nls/zh_TW/XLC_LOCALE.pre
@@ -1,142 +1,142 @@
-XCOMM XLocale Database Sample for zh_TW
-XCOMM
-XCOMM Note: In lib/X11/lcCT.c, charset names for CNS11643 coded character
-XCOMM sets are defined as CNS11643.1986-1 and -2. In the ECMA Registry,
-XCOMM CNS coded character sets 1-7 are registered as CNS 11643-1992.
-XCOMM CJK.INF Version 1.7 (August 15, 1995) written by Ken Lunde says
-XCOMM plane 14 of CNS 11643-1983 now became plane 3 of CNS 11643-1992.
-XCOMM I do not know how Taiwanese EUC is organized currently, so I left the
-XCOMM X11R6 organization of fsN/csN as it is and only changed "CNS11643-*"
-XCOMM to "CNS11643.1986-*".
-XCOMM 1995-10-24 T. Numata (numa@rp.open.cs.fujitsu.co.jp)
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name CNS11643.1986-1:GL
- }
- font {
- primary CNS11643.1986-1:GL
- }
-}
-XCOMM fs2 class
-fs2 {
- charset {
- name CNS11643.1986-2:GL
- }
- font {
- primary CNS11643.1986-2:GL
- }
-}
-XCOMM fs3 class
-fs3 {
- charset {
- name CNS11643.1986-14:GL
- }
- font {
- primary CNS11643.1986-14:GL
- }
-}
-XCOMM fs4 class
-fs4 {
- charset {
- name CNS11643.1986-15:GL
- }
- font {
- primary CNS11643.1986-15:GL
- }
-}
-XCOMM fs5 class
-fs5 {
- charset {
- name CNS11643.1986-16:GL
- }
- font {
- primary CNS11643.1986-16:GL
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh_TW.euc
-mb_cur_max 4
-state_depend_encoding False
-wc_encoding_mask \x3fffc000
-wc_shift_bits 7
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL; CNS11643.1986-0:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
- wc_encoding \x30000000
- ct_encoding CNS11643.1986-1:GR
-}
-
-XCOMM cs2 class # plane 2
-cs2 {
- side GR
- length 2
- mb_encoding <SS> \x8e\xa2
- wc_encoding \x10088000
- ct_encoding CNS11643.1986-2:GR
-}
-
-XCOMM cs3 class # plane 14
-cs3 {
- side GR
- length 2
- mb_encoding <SS> \x8e\xae
- wc_encoding \x100b8000
- ct_encoding CNS11643.1986-14:GR
-}
-
-XCOMM cs4 class # plane 15
-cs4 {
- side GR
- length 2
- mb_encoding <SS> \x8e\xaf
- wc_encoding \x100bc000
- ct_encoding CNS11643.1986-15:GR
-}
-
-XCOMM cs5 class # plane 16
-cs5 {
- side GR
- length 2
- mb_encoding <SS> \x8e\xb0
- wc_encoding \x100c0000
- ct_encoding CNS11643.1986-16:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for zh_TW
+XCOMM
+XCOMM Note: In lib/X11/lcCT.c, charset names for CNS11643 coded character
+XCOMM sets are defined as CNS11643.1986-1 and -2. In the ECMA Registry,
+XCOMM CNS coded character sets 1-7 are registered as CNS 11643-1992.
+XCOMM CJK.INF Version 1.7 (August 15, 1995) written by Ken Lunde says
+XCOMM plane 14 of CNS 11643-1983 now became plane 3 of CNS 11643-1992.
+XCOMM I do not know how Taiwanese EUC is organized currently, so I left the
+XCOMM X11R6 organization of fsN/csN as it is and only changed "CNS11643-*"
+XCOMM to "CNS11643.1986-*".
+XCOMM 1995-10-24 T. Numata (numa@rp.open.cs.fujitsu.co.jp)
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name CNS11643.1986-1:GL
+ }
+ font {
+ primary CNS11643.1986-1:GL
+ }
+}
+XCOMM fs2 class
+fs2 {
+ charset {
+ name CNS11643.1986-2:GL
+ }
+ font {
+ primary CNS11643.1986-2:GL
+ }
+}
+XCOMM fs3 class
+fs3 {
+ charset {
+ name CNS11643.1986-14:GL
+ }
+ font {
+ primary CNS11643.1986-14:GL
+ }
+}
+XCOMM fs4 class
+fs4 {
+ charset {
+ name CNS11643.1986-15:GL
+ }
+ font {
+ primary CNS11643.1986-15:GL
+ }
+}
+XCOMM fs5 class
+fs5 {
+ charset {
+ name CNS11643.1986-16:GL
+ }
+ font {
+ primary CNS11643.1986-16:GL
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_TW.euc
+mb_cur_max 4
+state_depend_encoding False
+wc_encoding_mask \x3fffc000
+wc_shift_bits 7
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL; CNS11643.1986-0:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+ wc_encoding \x30000000
+ ct_encoding CNS11643.1986-1:GR
+}
+
+XCOMM cs2 class # plane 2
+cs2 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8e\xa2
+ wc_encoding \x10088000
+ ct_encoding CNS11643.1986-2:GR
+}
+
+XCOMM cs3 class # plane 14
+cs3 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8e\xae
+ wc_encoding \x100b8000
+ ct_encoding CNS11643.1986-14:GR
+}
+
+XCOMM cs4 class # plane 15
+cs4 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8e\xaf
+ wc_encoding \x100bc000
+ ct_encoding CNS11643.1986-15:GR
+}
+
+XCOMM cs5 class # plane 16
+cs5 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8e\xb0
+ wc_encoding \x100c0000
+ ct_encoding CNS11643.1986-16:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/specs/.gitignore b/libX11/specs/.gitignore
new file mode 100644
index 000000000..92946c9f0
--- /dev/null
+++ b/libX11/specs/.gitignore
@@ -0,0 +1,5 @@
+*.html
+*.ps
+*.pdf
+*.txt
+*.db
diff --git a/libX11/specs/Makefile.am b/libX11/specs/Makefile.am
index 697de5dda..6d49014a7 100644
--- a/libX11/specs/Makefile.am
+++ b/libX11/specs/Makefile.am
@@ -1,24 +1,24 @@
-#
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
-#
-# 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 (including the next
-# paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-
-SUBDIRS=libX11 i18n XIM XKB
+#
+# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+#
+# 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 (including the next
+# paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+
+SUBDIRS=libX11 i18n XIM XKB
diff --git a/libX11/specs/i18n/compose/.gitignore b/libX11/specs/i18n/compose/.gitignore
new file mode 100644
index 000000000..c8f2485b0
--- /dev/null
+++ b/libX11/specs/i18n/compose/.gitignore
@@ -0,0 +1,2 @@
+# Generated DocBook XML from a perl script
+*.xml
diff --git a/libX11/specs/libX11/CH04.xml b/libX11/specs/libX11/CH04.xml
index 9cdfd1a7f..388a6801c 100644
--- a/libX11/specs/libX11/CH04.xml
+++ b/libX11/specs/libX11/CH04.xml
@@ -2388,7 +2388,8 @@ To request conversion of a selection, use
<funcprototype>
<funcdef><function>XConvertSelection</function></funcdef>
<paramdef>Display<parameter> *display</parameter></paramdef>
- <paramdef>Atomselection,<parameter> target</parameter></paramdef>
+ <paramdef>Atom<parameter> selection</parameter></paramdef>
+ <paramdef>Atom<parameter> target</parameter></paramdef>
<paramdef>Atom<parameter> property</parameter></paramdef>
<paramdef>Window<parameter> requestor</parameter></paramdef>
<paramdef>Time<parameter> time</parameter></paramdef>
diff --git a/libX11/src/.gitignore b/libX11/src/.gitignore
new file mode 100644
index 000000000..20eb6c6b7
--- /dev/null
+++ b/libX11/src/.gitignore
@@ -0,0 +1,2 @@
+# Add & Override for this directory and it's subdirectories
+ks_tables.h
diff --git a/libX11/src/AllowEv.c b/libX11/src/AllowEv.c
index 4a17e7b2d..ec093a7b8 100644
--- a/libX11/src/AllowEv.c
+++ b/libX11/src/AllowEv.c
@@ -1,51 +1,51 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XAllowEvents(
- register Display *dpy,
- int mode,
- Time time)
-
-{
- register xAllowEventsReq *req;
-
- LockDisplay(dpy);
- GetReq(AllowEvents,req);
- req->mode = mode;
- req->time = time;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XAllowEvents(
+ register Display *dpy,
+ int mode,
+ Time time)
+
+{
+ register xAllowEventsReq *req;
+
+ LockDisplay(dpy);
+ GetReq(AllowEvents,req);
+ req->mode = mode;
+ req->time = time;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+
+
diff --git a/libX11/src/AutoRep.c b/libX11/src/AutoRep.c
index 66b4097a8..b39332d98 100644
--- a/libX11/src/AutoRep.c
+++ b/libX11/src/AutoRep.c
@@ -1,50 +1,50 @@
-/*
-
-Copyright 1985, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XAutoRepeatOn (register Display *dpy)
-{
- XKeyboardControl values;
- values.auto_repeat_mode = AutoRepeatModeOn;
- XChangeKeyboardControl (dpy, KBAutoRepeatMode, &values);
- return 1;
-}
-
-int
-XAutoRepeatOff (register Display *dpy)
-{
- XKeyboardControl values;
- values.auto_repeat_mode = AutoRepeatModeOff;
- XChangeKeyboardControl (dpy, KBAutoRepeatMode, &values);
- return 1;
-}
-
-
+/*
+
+Copyright 1985, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XAutoRepeatOn (register Display *dpy)
+{
+ XKeyboardControl values;
+ values.auto_repeat_mode = AutoRepeatModeOn;
+ XChangeKeyboardControl (dpy, KBAutoRepeatMode, &values);
+ return 1;
+}
+
+int
+XAutoRepeatOff (register Display *dpy)
+{
+ XKeyboardControl values;
+ values.auto_repeat_mode = AutoRepeatModeOff;
+ XChangeKeyboardControl (dpy, KBAutoRepeatMode, &values);
+ return 1;
+}
+
+
diff --git a/libX11/src/Backgnd.c b/libX11/src/Backgnd.c
index bf7d75f8f..3b5b51b6b 100644
--- a/libX11/src/Backgnd.c
+++ b/libX11/src/Backgnd.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowBackground(
- register Display *dpy,
- Window w,
- unsigned long pixel)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWBackPixel;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixel);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowBackground(
+ register Display *dpy,
+ Window w,
+ unsigned long pixel)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWBackPixel;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixel);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/BdrWidth.c b/libX11/src/BdrWidth.c
index 5da8ce772..a8dc8ee10 100644
--- a/libX11/src/BdrWidth.c
+++ b/libX11/src/BdrWidth.c
@@ -1,53 +1,53 @@
-
-/*
-
-Copyright 1994, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowBorderWidth(
- Display *dpy,
- Window w,
- unsigned int width)
-{
- unsigned long lwidth = width; /* must be CARD32 */
-
- register xConfigureWindowReq *req;
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 4, req);
- req->window = w;
- req->mask = CWBorderWidth;
- OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), lwidth);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+
+/*
+
+Copyright 1994, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowBorderWidth(
+ Display *dpy,
+ Window w,
+ unsigned int width)
+{
+ unsigned long lwidth = width; /* must be CARD32 */
+
+ register xConfigureWindowReq *req;
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 4, req);
+ req->window = w;
+ req->mask = CWBorderWidth;
+ OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), lwidth);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Bell.c b/libX11/src/Bell.c
index 7da8772cf..31522c547 100644
--- a/libX11/src/Bell.c
+++ b/libX11/src/Bell.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XBell(
- register Display *dpy,
- int percent)
-{
- register xBellReq *req;
-
- LockDisplay(dpy);
- GetReq(Bell,req);
- req->percent = percent;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XBell(
+ register Display *dpy,
+ int percent)
+{
+ register xBellReq *req;
+
+ LockDisplay(dpy);
+ GetReq(Bell,req);
+ req->percent = percent;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Border.c b/libX11/src/Border.c
index 133043a5b..f83cf09a3 100644
--- a/libX11/src/Border.c
+++ b/libX11/src/Border.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowBorder(
- register Display *dpy,
- Window w,
- unsigned long pixel)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWBorderPixel;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixel);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowBorder(
+ register Display *dpy,
+ Window w,
+ unsigned long pixel)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWBorderPixel;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixel);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChAccCon.c b/libX11/src/ChAccCon.c
index f8d099668..6ec9441f7 100644
--- a/libX11/src/ChAccCon.c
+++ b/libX11/src/ChAccCon.c
@@ -1,59 +1,59 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XEnableAccessControl(register Display *dpy)
-{
- return XSetAccessControl(dpy, EnableAccess);
-}
-
-int
-XDisableAccessControl(register Display *dpy)
-{
- return XSetAccessControl(dpy, DisableAccess);
-}
-
-int
-XSetAccessControl(
- register Display *dpy,
- int mode)
-
-{
- register xSetAccessControlReq *req;
-
- LockDisplay(dpy);
- GetReq(SetAccessControl, req);
- req->mode = mode;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XEnableAccessControl(register Display *dpy)
+{
+ return XSetAccessControl(dpy, EnableAccess);
+}
+
+int
+XDisableAccessControl(register Display *dpy)
+{
+ return XSetAccessControl(dpy, DisableAccess);
+}
+
+int
+XSetAccessControl(
+ register Display *dpy,
+ int mode)
+
+{
+ register xSetAccessControlReq *req;
+
+ LockDisplay(dpy);
+ GetReq(SetAccessControl, req);
+ req->mode = mode;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChActPGb.c b/libX11/src/ChActPGb.c
index bebef2b01..8a77c84af 100644
--- a/libX11/src/ChActPGb.c
+++ b/libX11/src/ChActPGb.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XChangeActivePointerGrab(
- register Display *dpy,
- unsigned int event_mask, /* CARD16 */
- Cursor curs,
- Time time)
-{
- register xChangeActivePointerGrabReq *req;
-
- LockDisplay(dpy);
- GetReq(ChangeActivePointerGrab, req);
- req->eventMask = event_mask;
- req->cursor = curs;
- req->time = time;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XChangeActivePointerGrab(
+ register Display *dpy,
+ unsigned int event_mask, /* CARD16 */
+ Cursor curs,
+ Time time)
+{
+ register xChangeActivePointerGrabReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ChangeActivePointerGrab, req);
+ req->eventMask = event_mask;
+ req->cursor = curs;
+ req->time = time;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/ChClMode.c b/libX11/src/ChClMode.c
index 5250a80bc..320564218 100644
--- a/libX11/src/ChClMode.c
+++ b/libX11/src/ChClMode.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetCloseDownMode(
- register Display *dpy,
- int mode)
-{
- register xSetCloseDownModeReq *req;
-
- LockDisplay(dpy);
- GetReq(SetCloseDownMode, req);
- req->mode = mode;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetCloseDownMode(
+ register Display *dpy,
+ int mode)
+{
+ register xSetCloseDownModeReq *req;
+
+ LockDisplay(dpy);
+ GetReq(SetCloseDownMode, req);
+ req->mode = mode;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChCmap.c b/libX11/src/ChCmap.c
index d9372cdf3..6dba0fc28 100644
--- a/libX11/src/ChCmap.c
+++ b/libX11/src/ChCmap.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowColormap(
- register Display *dpy,
- Window w,
- Colormap colormap)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWColormap;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), colormap);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowColormap(
+ register Display *dpy,
+ Window w,
+ Colormap colormap)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWColormap;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), colormap);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChGC.c b/libX11/src/ChGC.c
index 8f677dc3a..56a339c5a 100644
--- a/libX11/src/ChGC.c
+++ b/libX11/src/ChGC.c
@@ -1,52 +1,52 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Cr.h"
-
-int
-XChangeGC (
- register Display *dpy,
- GC gc,
- unsigned long valuemask,
- XGCValues *values)
-{
- LockDisplay(dpy);
-
- valuemask &= (1L << (GCLastBit + 1)) - 1;
- if (valuemask) _XUpdateGCCache (gc, valuemask, values);
-
- /* if any Resource ID changed, must flush */
- if (gc->dirty & (GCFont | GCTile | GCStipple))
- _XFlushGCCache(dpy, gc);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Cr.h"
+
+int
+XChangeGC (
+ register Display *dpy,
+ GC gc,
+ unsigned long valuemask,
+ XGCValues *values)
+{
+ LockDisplay(dpy);
+
+ valuemask &= (1L << (GCLastBit + 1)) - 1;
+ if (valuemask) _XUpdateGCCache (gc, valuemask, values);
+
+ /* if any Resource ID changed, must flush */
+ if (gc->dirty & (GCFont | GCTile | GCStipple))
+ _XFlushGCCache(dpy, gc);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChKeyCon.c b/libX11/src/ChKeyCon.c
index bcf522340..182cef1d8 100644
--- a/libX11/src/ChKeyCon.c
+++ b/libX11/src/ChKeyCon.c
@@ -1,83 +1,83 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XChangeKeyboardControl(
- register Display *dpy,
- unsigned long mask,
- XKeyboardControl *value_list)
-{
- unsigned long values[8];
- register unsigned long *value = values;
- long nvalues;
- register xChangeKeyboardControlReq *req;
-
- LockDisplay(dpy);
- GetReq(ChangeKeyboardControl, req);
- req->mask = mask;
-
- if (mask & KBKeyClickPercent)
- *value++ = value_list->key_click_percent;
-
- if (mask & KBBellPercent)
- *value++ = value_list->bell_percent;
-
- if (mask & KBBellPitch)
- *value++ = value_list->bell_pitch;
-
- if (mask & KBBellDuration)
- *value++ = value_list->bell_duration;
-
- if (mask & KBLed)
- *value++ = value_list->led;
-
- if (mask & KBLedMode)
- *value++ = value_list->led_mode;
-
- if (mask & KBKey)
- *value++ = value_list->key;
-
- if (mask & KBAutoRepeatMode)
- *value++ = value_list->auto_repeat_mode;
-
-
- req->length += (nvalues = value - values);
-
- /* note: Data is a macro that uses its arguments multiple
- times, so "nvalues" is changed in a separate assignment
- statement */
-
- nvalues <<= 2;
- Data32 (dpy, (long *) values, nvalues);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XChangeKeyboardControl(
+ register Display *dpy,
+ unsigned long mask,
+ XKeyboardControl *value_list)
+{
+ unsigned long values[8];
+ register unsigned long *value = values;
+ long nvalues;
+ register xChangeKeyboardControlReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ChangeKeyboardControl, req);
+ req->mask = mask;
+
+ if (mask & KBKeyClickPercent)
+ *value++ = value_list->key_click_percent;
+
+ if (mask & KBBellPercent)
+ *value++ = value_list->bell_percent;
+
+ if (mask & KBBellPitch)
+ *value++ = value_list->bell_pitch;
+
+ if (mask & KBBellDuration)
+ *value++ = value_list->bell_duration;
+
+ if (mask & KBLed)
+ *value++ = value_list->led;
+
+ if (mask & KBLedMode)
+ *value++ = value_list->led_mode;
+
+ if (mask & KBKey)
+ *value++ = value_list->key;
+
+ if (mask & KBAutoRepeatMode)
+ *value++ = value_list->auto_repeat_mode;
+
+
+ req->length += (nvalues = value - values);
+
+ /* note: Data is a macro that uses its arguments multiple
+ times, so "nvalues" is changed in a separate assignment
+ statement */
+
+ nvalues <<= 2;
+ Data32 (dpy, (long *) values, nvalues);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
diff --git a/libX11/src/ChPntCon.c b/libX11/src/ChPntCon.c
index c177c0045..3d1cf216a 100644
--- a/libX11/src/ChPntCon.c
+++ b/libX11/src/ChPntCon.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XChangePointerControl(
- register Display *dpy,
- Bool do_acc,
- Bool do_thresh,
- int acc_numerator,
- int acc_denominator,
- int threshold)
-
-{
- register xChangePointerControlReq *req;
-
- LockDisplay(dpy);
- GetReq(ChangePointerControl, req);
- req->doAccel = do_acc;
- req->doThresh = do_thresh;
- req->accelNum = acc_numerator;
- req->accelDenum = acc_denominator;
- req->threshold = threshold;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XChangePointerControl(
+ register Display *dpy,
+ Bool do_acc,
+ Bool do_thresh,
+ int acc_numerator,
+ int acc_denominator,
+ int threshold)
+
+{
+ register xChangePointerControlReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ChangePointerControl, req);
+ req->doAccel = do_acc;
+ req->doThresh = do_thresh;
+ req->accelNum = acc_numerator;
+ req->accelDenum = acc_denominator;
+ req->threshold = threshold;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChProp.c b/libX11/src/ChProp.c
index b95775128..50aedc80a 100644
--- a/libX11/src/ChProp.c
+++ b/libX11/src/ChProp.c
@@ -1,99 +1,99 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XChangeProperty (
- register Display *dpy,
- Window w,
- Atom property,
- Atom type,
- int format, /* 8, 16, or 32 */
- int mode, /* PropModeReplace, PropModePrepend, PropModeAppend */
- _Xconst unsigned char *data,
- int nelements)
- {
- register xChangePropertyReq *req;
- register long len;
-
- LockDisplay(dpy);
- GetReq (ChangeProperty, req);
- req->window = w;
- req->property = property;
- req->type = type;
- req->mode = mode;
- if (nelements < 0) {
- req->nUnits = 0;
- req->format = 0; /* ask for garbage, get garbage */
- } else {
- req->nUnits = nelements;
- req->format = format;
- }
-
- switch (req->format) {
- case 8:
- len = ((long)nelements + 3)>>2;
- if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
- SetReqLen(req, len, len);
- Data (dpy, (char *)data, nelements);
- } /* else force BadLength */
- break;
-
- case 16:
- len = ((long)nelements + 1)>>1;
- if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
- SetReqLen(req, len, len);
- len = (long)nelements << 1;
- Data16 (dpy, (short *) data, len);
- } /* else force BadLength */
- break;
-
- case 32:
- len = nelements;
- if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
- SetReqLen(req, len, len);
- len = (long)nelements << 2;
- Data32 (dpy, (long *) data, len);
- } /* else force BadLength */
- break;
-
- default:
- /* BadValue will be generated */ ;
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
-
-
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XChangeProperty (
+ register Display *dpy,
+ Window w,
+ Atom property,
+ Atom type,
+ int format, /* 8, 16, or 32 */
+ int mode, /* PropModeReplace, PropModePrepend, PropModeAppend */
+ _Xconst unsigned char *data,
+ int nelements)
+ {
+ register xChangePropertyReq *req;
+ register long len;
+
+ LockDisplay(dpy);
+ GetReq (ChangeProperty, req);
+ req->window = w;
+ req->property = property;
+ req->type = type;
+ req->mode = mode;
+ if (nelements < 0) {
+ req->nUnits = 0;
+ req->format = 0; /* ask for garbage, get garbage */
+ } else {
+ req->nUnits = nelements;
+ req->format = format;
+ }
+
+ switch (req->format) {
+ case 8:
+ len = ((long)nelements + 3)>>2;
+ if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
+ SetReqLen(req, len, len);
+ Data (dpy, (char *)data, nelements);
+ } /* else force BadLength */
+ break;
+
+ case 16:
+ len = ((long)nelements + 1)>>1;
+ if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
+ SetReqLen(req, len, len);
+ len = (long)nelements << 1;
+ Data16 (dpy, (short *) data, len);
+ } /* else force BadLength */
+ break;
+
+ case 32:
+ len = nelements;
+ if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
+ SetReqLen(req, len, len);
+ len = (long)nelements << 2;
+ Data32 (dpy, (long *) data, len);
+ } /* else force BadLength */
+ break;
+
+ default:
+ /* BadValue will be generated */ ;
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
+
+
+
+
+
diff --git a/libX11/src/ChSaveSet.c b/libX11/src/ChSaveSet.c
index 068b042d2..46f73270d 100644
--- a/libX11/src/ChSaveSet.c
+++ b/libX11/src/ChSaveSet.c
@@ -1,63 +1,63 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XChangeSaveSet(
- register Display *dpy,
- Window win,
- int mode)
-{
- register xChangeSaveSetReq *req;
-
- LockDisplay(dpy);
- GetReq(ChangeSaveSet, req);
- req->window = win;
- req->mode = mode;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XAddToSaveSet(
- register Display *dpy,
- Window win)
-{
- return XChangeSaveSet(dpy,win,SetModeInsert);
-}
-
-int
-XRemoveFromSaveSet (
- register Display *dpy,
- Window win)
-{
- return XChangeSaveSet(dpy,win,SetModeDelete);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XChangeSaveSet(
+ register Display *dpy,
+ Window win,
+ int mode)
+{
+ register xChangeSaveSetReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ChangeSaveSet, req);
+ req->window = win;
+ req->mode = mode;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XAddToSaveSet(
+ register Display *dpy,
+ Window win)
+{
+ return XChangeSaveSet(dpy,win,SetModeInsert);
+}
+
+int
+XRemoveFromSaveSet (
+ register Display *dpy,
+ Window win)
+{
+ return XChangeSaveSet(dpy,win,SetModeDelete);
+}
diff --git a/libX11/src/ChWAttrs.c b/libX11/src/ChWAttrs.c
index 25cbcbd05..d92afd748 100644
--- a/libX11/src/ChWAttrs.c
+++ b/libX11/src/ChWAttrs.c
@@ -1,57 +1,57 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define AllMaskBits (CWBackPixmap|CWBackPixel|CWBorderPixmap|\
- CWBorderPixel|CWBitGravity|CWWinGravity|\
- CWBackingStore|CWBackingPlanes|CWBackingPixel|\
- CWOverrideRedirect|CWSaveUnder|CWEventMask|\
- CWDontPropagate|CWColormap|CWCursor)
-
-int
-XChangeWindowAttributes (
- register Display *dpy,
- Window w,
- unsigned long valuemask,
- XSetWindowAttributes *attributes)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReq(ChangeWindowAttributes,req);
- req->window = w;
- valuemask &= AllMaskBits;
- if ((req->valueMask = valuemask))
- _XProcessWindowAttributes (dpy, req, valuemask, attributes);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define AllMaskBits (CWBackPixmap|CWBackPixel|CWBorderPixmap|\
+ CWBorderPixel|CWBitGravity|CWWinGravity|\
+ CWBackingStore|CWBackingPlanes|CWBackingPixel|\
+ CWOverrideRedirect|CWSaveUnder|CWEventMask|\
+ CWDontPropagate|CWColormap|CWCursor)
+
+int
+XChangeWindowAttributes (
+ register Display *dpy,
+ Window w,
+ unsigned long valuemask,
+ XSetWindowAttributes *attributes)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ChangeWindowAttributes,req);
+ req->window = w;
+ valuemask &= AllMaskBits;
+ if ((req->valueMask = valuemask))
+ _XProcessWindowAttributes (dpy, req, valuemask, attributes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChWindow.c b/libX11/src/ChWindow.c
index fbd6e8846..c00a9167f 100644
--- a/libX11/src/ChWindow.c
+++ b/libX11/src/ChWindow.c
@@ -1,63 +1,63 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XResizeWindow(
- register Display *dpy,
- Window w,
- unsigned int width,
- unsigned int height)
-{
- register xConfigureWindowReq *req;
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 8, req); /* 2 4-byte quantities */
-
- req->window = w;
- req->mask = CWWidth | CWHeight;
-#ifdef MUSTCOPY
- {
- unsigned long lwidth = width, lheight = height;
- dpy->bufptr -= 8;
- Data32 (dpy, (long *) &lwidth, 4); /* order dictated by values of */
- Data32 (dpy, (long *) &lheight, 4); /* CWWidth and CWHeight */
- }
-#else
- {
- CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
- *valuePtr++ = width;
- *valuePtr = height;
- }
-#endif /* MUSTCOPY */
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XResizeWindow(
+ register Display *dpy,
+ Window w,
+ unsigned int width,
+ unsigned int height)
+{
+ register xConfigureWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 8, req); /* 2 4-byte quantities */
+
+ req->window = w;
+ req->mask = CWWidth | CWHeight;
+#ifdef MUSTCOPY
+ {
+ unsigned long lwidth = width, lheight = height;
+ dpy->bufptr -= 8;
+ Data32 (dpy, (long *) &lwidth, 4); /* order dictated by values of */
+ Data32 (dpy, (long *) &lheight, 4); /* CWWidth and CWHeight */
+ }
+#else
+ {
+ CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
+ *valuePtr++ = width;
+ *valuePtr = height;
+ }
+#endif /* MUSTCOPY */
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/ChkTypEv.c b/libX11/src/ChkTypEv.c
index 498b29e19..2e9bcdd0a 100644
--- a/libX11/src/ChkTypEv.c
+++ b/libX11/src/ChkTypEv.c
@@ -1,81 +1,81 @@
-/*
-
-Copyright 1985, 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * Check existing events in queue to find if any match. If so, return.
- * If not, flush buffer and see if any more events are readable. If one
- * matches, return. If all else fails, tell the user no events found.
- */
-
-Bool XCheckTypedEvent (
- register Display *dpy,
- int type, /* Selected event type. */
- register XEvent *event) /* XEvent to be filled in. */
-{
- register _XQEvent *prev, *qelt;
- unsigned long qe_serial = 0;
- int n; /* time through count */
-
- LockDisplay(dpy);
-
- /* Delete unclaimed cookies */
- _XFreeEventCookies(dpy);
-
- prev = NULL;
- for (n = 3; --n >= 0;) {
- for (qelt = prev ? prev->next : dpy->head;
- qelt;
- prev = qelt, qelt = qelt->next) {
- if (qelt->event.type == type) {
- *event = qelt->event;
- _XDeq(dpy, prev, qelt);
- _XStoreEventCookie(dpy, event);
- UnlockDisplay(dpy);
- return True;
- }
- }
- if (prev)
- qe_serial = prev->qserial_num;
- switch (n) {
- case 2:
- _XEventsQueued(dpy, QueuedAfterReading);
- break;
- case 1:
- _XFlush(dpy);
- break;
- }
- if (prev && prev->qserial_num != qe_serial)
- /* another thread has snatched this event */
- prev = NULL;
- }
- UnlockDisplay(dpy);
- return False;
-}
+/*
+
+Copyright 1985, 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * Check existing events in queue to find if any match. If so, return.
+ * If not, flush buffer and see if any more events are readable. If one
+ * matches, return. If all else fails, tell the user no events found.
+ */
+
+Bool XCheckTypedEvent (
+ register Display *dpy,
+ int type, /* Selected event type. */
+ register XEvent *event) /* XEvent to be filled in. */
+{
+ register _XQEvent *prev, *qelt;
+ unsigned long qe_serial = 0;
+ int n; /* time through count */
+
+ LockDisplay(dpy);
+
+ /* Delete unclaimed cookies */
+ _XFreeEventCookies(dpy);
+
+ prev = NULL;
+ for (n = 3; --n >= 0;) {
+ for (qelt = prev ? prev->next : dpy->head;
+ qelt;
+ prev = qelt, qelt = qelt->next) {
+ if (qelt->event.type == type) {
+ *event = qelt->event;
+ _XDeq(dpy, prev, qelt);
+ _XStoreEventCookie(dpy, event);
+ UnlockDisplay(dpy);
+ return True;
+ }
+ }
+ if (prev)
+ qe_serial = prev->qserial_num;
+ switch (n) {
+ case 2:
+ _XEventsQueued(dpy, QueuedAfterReading);
+ break;
+ case 1:
+ _XFlush(dpy);
+ break;
+ }
+ if (prev && prev->qserial_num != qe_serial)
+ /* another thread has snatched this event */
+ prev = NULL;
+ }
+ UnlockDisplay(dpy);
+ return False;
+}
diff --git a/libX11/src/ChkTypWEv.c b/libX11/src/ChkTypWEv.c
index b0429f084..2f247be26 100644
--- a/libX11/src/ChkTypWEv.c
+++ b/libX11/src/ChkTypWEv.c
@@ -1,83 +1,83 @@
-/*
-
-Copyright 1985, 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * Check existing events in queue to find if any match. If so, return.
- * If not, flush buffer and see if any more events are readable. If one
- * matches, return. If all else fails, tell the user no events found.
- */
-
-Bool XCheckTypedWindowEvent (
- register Display *dpy,
- Window w, /* Selected window. */
- int type, /* Selected event type. */
- register XEvent *event) /* XEvent to be filled in. */
-{
- register _XQEvent *prev, *qelt;
- unsigned long qe_serial = 0;
- int n; /* time through count */
-
- LockDisplay(dpy);
-
- /* Delete unclaimed cookies */
- _XFreeEventCookies(dpy);
-
- prev = NULL;
- for (n = 3; --n >= 0;) {
- for (qelt = prev ? prev->next : dpy->head;
- qelt;
- prev = qelt, qelt = qelt->next) {
- if ((qelt->event.xany.window == w) &&
- (qelt->event.type == type)) {
- *event = qelt->event;
- _XDeq(dpy, prev, qelt);
- _XStoreEventCookie(dpy, event);
- UnlockDisplay(dpy);
- return True;
- }
- }
- if (prev)
- qe_serial = prev->qserial_num;
- switch (n) {
- case 2:
- _XEventsQueued(dpy, QueuedAfterReading);
- break;
- case 1:
- _XFlush(dpy);
- break;
- }
- if (prev && prev->qserial_num != qe_serial)
- /* another thread has snatched this event */
- prev = NULL;
- }
- UnlockDisplay(dpy);
- return False;
-}
+/*
+
+Copyright 1985, 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * Check existing events in queue to find if any match. If so, return.
+ * If not, flush buffer and see if any more events are readable. If one
+ * matches, return. If all else fails, tell the user no events found.
+ */
+
+Bool XCheckTypedWindowEvent (
+ register Display *dpy,
+ Window w, /* Selected window. */
+ int type, /* Selected event type. */
+ register XEvent *event) /* XEvent to be filled in. */
+{
+ register _XQEvent *prev, *qelt;
+ unsigned long qe_serial = 0;
+ int n; /* time through count */
+
+ LockDisplay(dpy);
+
+ /* Delete unclaimed cookies */
+ _XFreeEventCookies(dpy);
+
+ prev = NULL;
+ for (n = 3; --n >= 0;) {
+ for (qelt = prev ? prev->next : dpy->head;
+ qelt;
+ prev = qelt, qelt = qelt->next) {
+ if ((qelt->event.xany.window == w) &&
+ (qelt->event.type == type)) {
+ *event = qelt->event;
+ _XDeq(dpy, prev, qelt);
+ _XStoreEventCookie(dpy, event);
+ UnlockDisplay(dpy);
+ return True;
+ }
+ }
+ if (prev)
+ qe_serial = prev->qserial_num;
+ switch (n) {
+ case 2:
+ _XEventsQueued(dpy, QueuedAfterReading);
+ break;
+ case 1:
+ _XFlush(dpy);
+ break;
+ }
+ if (prev && prev->qserial_num != qe_serial)
+ /* another thread has snatched this event */
+ prev = NULL;
+ }
+ UnlockDisplay(dpy);
+ return False;
+}
diff --git a/libX11/src/CirWin.c b/libX11/src/CirWin.c
index e37a42ade..673755cb3 100644
--- a/libX11/src/CirWin.c
+++ b/libX11/src/CirWin.c
@@ -1,48 +1,48 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCirculateSubwindows(
- register Display *dpy,
- Window w,
- int direction)
-{
- register xCirculateWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(CirculateWindow, req);
- req->window = w;
- req->direction = direction;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCirculateSubwindows(
+ register Display *dpy,
+ Window w,
+ int direction)
+{
+ register xCirculateWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CirculateWindow, req);
+ req->window = w;
+ req->direction = direction;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/CirWinDn.c b/libX11/src/CirWinDn.c
index f2b54852b..51a5cd218 100644
--- a/libX11/src/CirWinDn.c
+++ b/libX11/src/CirWinDn.c
@@ -1,47 +1,47 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCirculateSubwindowsDown(
- register Display *dpy,
- Window w)
-{
- register xCirculateWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(CirculateWindow, req);
- req->window = w;
- req->direction = LowerHighest;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCirculateSubwindowsDown(
+ register Display *dpy,
+ Window w)
+{
+ register xCirculateWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CirculateWindow, req);
+ req->window = w;
+ req->direction = LowerHighest;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/CirWinUp.c b/libX11/src/CirWinUp.c
index be9f094cd..ffbae76c7 100644
--- a/libX11/src/CirWinUp.c
+++ b/libX11/src/CirWinUp.c
@@ -1,47 +1,47 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCirculateSubwindowsUp(
- register Display *dpy,
- Window w)
-{
- register xCirculateWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(CirculateWindow, req);
- req->window = w;
- req->direction = RaiseLowest;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCirculateSubwindowsUp(
+ register Display *dpy,
+ Window w)
+{
+ register xCirculateWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CirculateWindow, req);
+ req->window = w;
+ req->direction = RaiseLowest;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Clear.c b/libX11/src/Clear.c
index 63dc64045..16ad2ec0b 100644
--- a/libX11/src/Clear.c
+++ b/libX11/src/Clear.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XClearWindow(
- register Display *dpy,
- Window w)
-{
- register xClearAreaReq *req;
-
- LockDisplay(dpy);
- GetReq(ClearArea, req);
- req->window = w;
- req->x = req->y = req->width = req->height = 0;
- /* these values mean "clear the entire window" */
- req->exposures = xFalse;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XClearWindow(
+ register Display *dpy,
+ Window w)
+{
+ register xClearAreaReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ClearArea, req);
+ req->window = w;
+ req->x = req->y = req->width = req->height = 0;
+ /* these values mean "clear the entire window" */
+ req->exposures = xFalse;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ClearArea.c b/libX11/src/ClearArea.c
index 41fd17c80..f0d7308dd 100644
--- a/libX11/src/ClearArea.c
+++ b/libX11/src/ClearArea.c
@@ -1,56 +1,56 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XClearArea (
- register Display *dpy,
- Window w,
- int x,
- int y,
- unsigned int width,
- unsigned int height,
- Bool exposures)
-{
- register xClearAreaReq *req;
-
- LockDisplay(dpy);
- GetReq(ClearArea, req);
- req->window = w;
- req->x = x;
- req->y = y;
- req->width = width;
- req->height = height;
- req->exposures = exposures;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XClearArea (
+ register Display *dpy,
+ Window w,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height,
+ Bool exposures)
+{
+ register xClearAreaReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ClearArea, req);
+ req->window = w;
+ req->x = x;
+ req->y = y;
+ req->width = width;
+ req->height = height;
+ req->exposures = exposures;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Cmap.h b/libX11/src/Cmap.h
index 062b5383b..e41c96512 100644
--- a/libX11/src/Cmap.h
+++ b/libX11/src/Cmap.h
@@ -1,10 +1,10 @@
-
-#ifndef _CMAP_H_
-#define _CMAP_H_
-
-extern void
-_XcmsDeleteCmapRec(
- Display *dpy,
- Colormap cmap);
-
-#endif /* _CMAP_H_ */
+
+#ifndef _CMAP_H_
+#define _CMAP_H_
+
+extern void
+_XcmsDeleteCmapRec(
+ Display *dpy,
+ Colormap cmap);
+
+#endif /* _CMAP_H_ */
diff --git a/libX11/src/ConfWind.c b/libX11/src/ConfWind.c
index dd55b4422..2d627763e 100644
--- a/libX11/src/ConfWind.c
+++ b/libX11/src/ConfWind.c
@@ -1,71 +1,71 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XMoveResizeWindow(
- register Display *dpy,
- Window w,
- int x,
- int y,
- unsigned int width,
- unsigned int height)
-{
- register xConfigureWindowReq *req;
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 16, req);
- req->window = w;
- req->mask = CWX | CWY | CWWidth | CWHeight;
-#ifdef MUSTCOPY
- {
- long lx = x, ly = y;
- unsigned long lwidth = width, lheight = height;
-
- dpy->bufptr -= 16;
- Data32 (dpy, (long *) &lx, 4); /* order must match values of */
- Data32 (dpy, (long *) &ly, 4); /* CWX, CWY, CWWidth, and CWHeight */
- Data32 (dpy, (long *) &lwidth, 4);
- Data32 (dpy, (long *) &lheight, 4);
- }
-#else
- {
- register CARD32 *valuePtr =
- (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
- *valuePtr++ = x;
- *valuePtr++ = y;
- *valuePtr++ = width;
- *valuePtr = height;
- }
-#endif /* MUSTCOPY */
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XMoveResizeWindow(
+ register Display *dpy,
+ Window w,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height)
+{
+ register xConfigureWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 16, req);
+ req->window = w;
+ req->mask = CWX | CWY | CWWidth | CWHeight;
+#ifdef MUSTCOPY
+ {
+ long lx = x, ly = y;
+ unsigned long lwidth = width, lheight = height;
+
+ dpy->bufptr -= 16;
+ Data32 (dpy, (long *) &lx, 4); /* order must match values of */
+ Data32 (dpy, (long *) &ly, 4); /* CWX, CWY, CWWidth, and CWHeight */
+ Data32 (dpy, (long *) &lwidth, 4);
+ Data32 (dpy, (long *) &lheight, 4);
+ }
+#else
+ {
+ register CARD32 *valuePtr =
+ (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
+ *valuePtr++ = x;
+ *valuePtr++ = y;
+ *valuePtr++ = width;
+ *valuePtr = height;
+ }
+#endif /* MUSTCOPY */
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/Context.c b/libX11/src/Context.c
index 79ae7d66c..ae059cb5c 100644
--- a/libX11/src/Context.c
+++ b/libX11/src/Context.c
@@ -1,302 +1,302 @@
-
-/***********************************************************
-Copyright 1987, 1988, 1990 by Digital Equipment Corporation, Maynard,
-
- 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 name Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-/*
-
-Copyright 1987, 1988, 1990, 1994, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-/* This module implements a simple sparse array.
-
- XSaveContext(a,b,c,d) will store d in position (a,b,c) of the array.
- XFindContext(a,b,c,&d) will set d to be the value in position (a,b,c).
- XDeleteContext(a,b,c) will delete the entry in (a,b,c).
-
- a is a display id, b is a resource id, and c is a Context. d is just an
- XPointer. This code will work with any range of parameters, but is geared
- to be most efficient with very few (one or two) different a's.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-#ifdef XTHREADS
-#include "locking.h"
-#endif
-
-#define INITHASHMASK 63 /* Number of entries originally in the hash table. */
-
-typedef struct _TableEntryRec { /* Stores one entry. */
- XID rid;
- XContext context;
- XPointer data;
- struct _TableEntryRec *next;
-} TableEntryRec, *TableEntry;
-
-typedef struct _XContextDB { /* Stores hash table for one display. */
- TableEntry *table; /* Pointer to array of hash entries. */
- int mask; /* Current size of hash table minus 1. */
- int numentries; /* Number of entries currently in table. */
-#ifdef XTHREADS
- LockInfoRec linfo;
-#endif
-} DBRec, *DB;
-
-#ifdef MOTIFBC
-static DB NullDB = (DB)0;
-#endif
-
-/* Given an XID and a context, returns a value between 0 and HashSize-1.
- Currently, this requires that HashSize be a power of 2.
-*/
-
-#define Hash(db,rid,context) \
- (db)->table[(((rid) << 1) + context) & (db)->mask]
-
-/* Resize the given db */
-
-static void ResizeTable(DB db)
-{
- TableEntry *otable;
- register TableEntry entry, next, *pold, *head;
- register int i, j;
-
- otable = db->table;
- for (i = INITHASHMASK+1; (i + i) < db->numentries; )
- i += i;
- db->table = (TableEntry *) Xcalloc((unsigned)i, sizeof(TableEntry));
- if (!db->table) {
- db->table = otable;
- return;
- }
- j = db->mask + 1;
- db->mask = i - 1;
- for (pold = otable ; --j >= 0; pold++) {
- for (entry = *pold; entry; entry = next) {
- next = entry->next;
- head = &Hash(db, entry->rid, entry->context);
- entry->next = *head;
- *head = entry;
- }
- }
- Xfree((char *) otable);
-}
-
-static void _XFreeContextDB(Display *display)
-{
- register DB db;
- register int i;
- register TableEntry *pentry, entry, next;
-
- db = display->context_db;
- if (db) {
- for (i = db->mask + 1, pentry = db->table ; --i >= 0; pentry++) {
- for (entry = *pentry; entry; entry = next) {
- next = entry->next;
- Xfree((char *)entry);
- }
- }
- Xfree((char *) db->table);
- _XFreeMutex(&db->linfo);
- Xfree((char *) db);
- }
-}
-
-/* Public routines. */
-
-/* Save the given value of data to correspond with the keys XID and context.
- Returns nonzero error code if an error has occured, 0 otherwise.
- Possible errors are Out-of-memory.
-*/
-
-int XSaveContext(
- Display *display,
- register XID rid,
- register XContext context,
- _Xconst char* data)
-{
- DB *pdb;
- register DB db;
- TableEntry *head;
- register TableEntry entry;
-
-#ifdef MOTIFBC
- if (!display) {
- pdb = &NullDB;
- db = *pdb;
- } else
-#endif
- {
- LockDisplay(display);
- pdb = &display->context_db;
- db = *pdb;
- UnlockDisplay(display);
- }
- if (!db) {
- db = (DB) Xmalloc(sizeof(DBRec));
- if (!db)
- return XCNOMEM;
- db->mask = INITHASHMASK;
- db->table = (TableEntry *)Xcalloc(db->mask + 1, sizeof(TableEntry));
- if (!db->table) {
- Xfree((char *)db);
- return XCNOMEM;
- }
- db->numentries = 0;
- _XCreateMutex(&db->linfo);
-#ifdef MOTIFBC
- if (!display) *pdb = db; else
-#endif
- {
- LockDisplay(display);
- *pdb = db;
- display->free_funcs->context_db = _XFreeContextDB;
- UnlockDisplay(display);
- }
- }
- _XLockMutex(&db->linfo);
- head = &Hash(db, rid, context);
- _XUnlockMutex(&db->linfo);
- for (entry = *head; entry; entry = entry->next) {
- if (entry->rid == rid && entry->context == context) {
- entry->data = (XPointer)data;
- return 0;
- }
- }
- entry = (TableEntry) Xmalloc(sizeof(TableEntryRec));
- if (!entry)
- return XCNOMEM;
- entry->rid = rid;
- entry->context = context;
- entry->data = (XPointer)data;
- entry->next = *head;
- *head = entry;
- _XLockMutex(&db->linfo);
- db->numentries++;
- if (db->numentries > (db->mask << 2))
- ResizeTable(db);
- _XUnlockMutex(&db->linfo);
- return 0;
-}
-
-
-
-/* Given an XID and context, returns the associated data. Note that data
- here is a pointer since it is a return value. Returns nonzero error code
- if an error has occured, 0 otherwise. Possible errors are Entry-not-found.
-*/
-
-int XFindContext(Display *display, XID rid, XContext context, XPointer *data)
-{
- register DB db;
- register TableEntry entry;
-
-#ifdef MOTIFBC
- if (!display) db = NullDB; else
-#endif
- {
- LockDisplay(display);
- db = display->context_db;
- UnlockDisplay(display);
- }
- if (!db)
- return XCNOENT;
- _XLockMutex(&db->linfo);
- for (entry = Hash(db, rid, context); entry; entry = entry->next)
- {
- if (entry->rid == rid && entry->context == context) {
- *data = (XPointer)entry->data;
- _XUnlockMutex(&db->linfo);
- return 0;
- }
- }
- _XUnlockMutex(&db->linfo);
- return XCNOENT;
-}
-
-
-
-/* Deletes the entry for the given XID and context from the datastructure.
- This returns the same thing that FindContext would have returned if called
- with the same arguments.
-*/
-
-int XDeleteContext(Display *display, XID rid, XContext context)
-{
- register DB db;
- register TableEntry entry, *prev;
-
-#ifdef MOTIFBC
- if (!display) db = NullDB; else
-#endif
- {
- LockDisplay(display);
- db = display->context_db;
- UnlockDisplay(display);
- }
- if (!db)
- return XCNOENT;
- _XLockMutex(&db->linfo);
- for (prev = &Hash(db, rid, context);
- (entry = *prev);
- prev = &entry->next) {
- if (entry->rid == rid && entry->context == context) {
- *prev = entry->next;
- Xfree((char *) entry);
- db->numentries--;
- if (db->numentries < db->mask && db->mask > INITHASHMASK)
- ResizeTable(db);
- _XUnlockMutex(&db->linfo);
- return 0;
- }
- }
- _XUnlockMutex(&db->linfo);
- return XCNOENT;
-}
+
+/***********************************************************
+Copyright 1987, 1988, 1990 by Digital Equipment Corporation, Maynard,
+
+ 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 name Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1990, 1994, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+/* This module implements a simple sparse array.
+
+ XSaveContext(a,b,c,d) will store d in position (a,b,c) of the array.
+ XFindContext(a,b,c,&d) will set d to be the value in position (a,b,c).
+ XDeleteContext(a,b,c) will delete the entry in (a,b,c).
+
+ a is a display id, b is a resource id, and c is a Context. d is just an
+ XPointer. This code will work with any range of parameters, but is geared
+ to be most efficient with very few (one or two) different a's.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+#ifdef XTHREADS
+#include "locking.h"
+#endif
+
+#define INITHASHMASK 63 /* Number of entries originally in the hash table. */
+
+typedef struct _TableEntryRec { /* Stores one entry. */
+ XID rid;
+ XContext context;
+ XPointer data;
+ struct _TableEntryRec *next;
+} TableEntryRec, *TableEntry;
+
+typedef struct _XContextDB { /* Stores hash table for one display. */
+ TableEntry *table; /* Pointer to array of hash entries. */
+ int mask; /* Current size of hash table minus 1. */
+ int numentries; /* Number of entries currently in table. */
+#ifdef XTHREADS
+ LockInfoRec linfo;
+#endif
+} DBRec, *DB;
+
+#ifdef MOTIFBC
+static DB NullDB = (DB)0;
+#endif
+
+/* Given an XID and a context, returns a value between 0 and HashSize-1.
+ Currently, this requires that HashSize be a power of 2.
+*/
+
+#define Hash(db,rid,context) \
+ (db)->table[(((rid) << 1) + context) & (db)->mask]
+
+/* Resize the given db */
+
+static void ResizeTable(DB db)
+{
+ TableEntry *otable;
+ register TableEntry entry, next, *pold, *head;
+ register int i, j;
+
+ otable = db->table;
+ for (i = INITHASHMASK+1; (i + i) < db->numentries; )
+ i += i;
+ db->table = (TableEntry *) Xcalloc((unsigned)i, sizeof(TableEntry));
+ if (!db->table) {
+ db->table = otable;
+ return;
+ }
+ j = db->mask + 1;
+ db->mask = i - 1;
+ for (pold = otable ; --j >= 0; pold++) {
+ for (entry = *pold; entry; entry = next) {
+ next = entry->next;
+ head = &Hash(db, entry->rid, entry->context);
+ entry->next = *head;
+ *head = entry;
+ }
+ }
+ Xfree((char *) otable);
+}
+
+static void _XFreeContextDB(Display *display)
+{
+ register DB db;
+ register int i;
+ register TableEntry *pentry, entry, next;
+
+ db = display->context_db;
+ if (db) {
+ for (i = db->mask + 1, pentry = db->table ; --i >= 0; pentry++) {
+ for (entry = *pentry; entry; entry = next) {
+ next = entry->next;
+ Xfree((char *)entry);
+ }
+ }
+ Xfree((char *) db->table);
+ _XFreeMutex(&db->linfo);
+ Xfree((char *) db);
+ }
+}
+
+/* Public routines. */
+
+/* Save the given value of data to correspond with the keys XID and context.
+ Returns nonzero error code if an error has occured, 0 otherwise.
+ Possible errors are Out-of-memory.
+*/
+
+int XSaveContext(
+ Display *display,
+ register XID rid,
+ register XContext context,
+ _Xconst char* data)
+{
+ DB *pdb;
+ register DB db;
+ TableEntry *head;
+ register TableEntry entry;
+
+#ifdef MOTIFBC
+ if (!display) {
+ pdb = &NullDB;
+ db = *pdb;
+ } else
+#endif
+ {
+ LockDisplay(display);
+ pdb = &display->context_db;
+ db = *pdb;
+ UnlockDisplay(display);
+ }
+ if (!db) {
+ db = (DB) Xmalloc(sizeof(DBRec));
+ if (!db)
+ return XCNOMEM;
+ db->mask = INITHASHMASK;
+ db->table = (TableEntry *)Xcalloc(db->mask + 1, sizeof(TableEntry));
+ if (!db->table) {
+ Xfree((char *)db);
+ return XCNOMEM;
+ }
+ db->numentries = 0;
+ _XCreateMutex(&db->linfo);
+#ifdef MOTIFBC
+ if (!display) *pdb = db; else
+#endif
+ {
+ LockDisplay(display);
+ *pdb = db;
+ display->free_funcs->context_db = _XFreeContextDB;
+ UnlockDisplay(display);
+ }
+ }
+ _XLockMutex(&db->linfo);
+ head = &Hash(db, rid, context);
+ _XUnlockMutex(&db->linfo);
+ for (entry = *head; entry; entry = entry->next) {
+ if (entry->rid == rid && entry->context == context) {
+ entry->data = (XPointer)data;
+ return 0;
+ }
+ }
+ entry = (TableEntry) Xmalloc(sizeof(TableEntryRec));
+ if (!entry)
+ return XCNOMEM;
+ entry->rid = rid;
+ entry->context = context;
+ entry->data = (XPointer)data;
+ entry->next = *head;
+ *head = entry;
+ _XLockMutex(&db->linfo);
+ db->numentries++;
+ if (db->numentries > (db->mask << 2))
+ ResizeTable(db);
+ _XUnlockMutex(&db->linfo);
+ return 0;
+}
+
+
+
+/* Given an XID and context, returns the associated data. Note that data
+ here is a pointer since it is a return value. Returns nonzero error code
+ if an error has occured, 0 otherwise. Possible errors are Entry-not-found.
+*/
+
+int XFindContext(Display *display, XID rid, XContext context, XPointer *data)
+{
+ register DB db;
+ register TableEntry entry;
+
+#ifdef MOTIFBC
+ if (!display) db = NullDB; else
+#endif
+ {
+ LockDisplay(display);
+ db = display->context_db;
+ UnlockDisplay(display);
+ }
+ if (!db)
+ return XCNOENT;
+ _XLockMutex(&db->linfo);
+ for (entry = Hash(db, rid, context); entry; entry = entry->next)
+ {
+ if (entry->rid == rid && entry->context == context) {
+ *data = (XPointer)entry->data;
+ _XUnlockMutex(&db->linfo);
+ return 0;
+ }
+ }
+ _XUnlockMutex(&db->linfo);
+ return XCNOENT;
+}
+
+
+
+/* Deletes the entry for the given XID and context from the datastructure.
+ This returns the same thing that FindContext would have returned if called
+ with the same arguments.
+*/
+
+int XDeleteContext(Display *display, XID rid, XContext context)
+{
+ register DB db;
+ register TableEntry entry, *prev;
+
+#ifdef MOTIFBC
+ if (!display) db = NullDB; else
+#endif
+ {
+ LockDisplay(display);
+ db = display->context_db;
+ UnlockDisplay(display);
+ }
+ if (!db)
+ return XCNOENT;
+ _XLockMutex(&db->linfo);
+ for (prev = &Hash(db, rid, context);
+ (entry = *prev);
+ prev = &entry->next) {
+ if (entry->rid == rid && entry->context == context) {
+ *prev = entry->next;
+ Xfree((char *) entry);
+ db->numentries--;
+ if (db->numentries < db->mask && db->mask > INITHASHMASK)
+ ResizeTable(db);
+ _XUnlockMutex(&db->linfo);
+ return 0;
+ }
+ }
+ _XUnlockMutex(&db->linfo);
+ return XCNOENT;
+}
diff --git a/libX11/src/ConvSel.c b/libX11/src/ConvSel.c
index 2dece58b5..6b5058fd9 100644
--- a/libX11/src/ConvSel.c
+++ b/libX11/src/ConvSel.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1986,1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XConvertSelection(
- register Display *dpy,
- Atom selection,
- Atom target,
- Atom property,
- Window requestor,
- Time time)
-{
- register xConvertSelectionReq *req;
-
- LockDisplay(dpy);
- GetReq(ConvertSelection, req);
- req->selection = selection;
- req->target = target;
- req->property = property;
- req->requestor = requestor;
- req->time = time;
- UnlockDisplay(dpy);
- SyncHandle();
- return Success;
-}
+/*
+
+Copyright 1986,1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XConvertSelection(
+ register Display *dpy,
+ Atom selection,
+ Atom target,
+ Atom property,
+ Window requestor,
+ Time time)
+{
+ register xConvertSelectionReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ConvertSelection, req);
+ req->selection = selection;
+ req->target = target;
+ req->property = property;
+ req->requestor = requestor;
+ req->time = time;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return Success;
+}
diff --git a/libX11/src/CopyArea.c b/libX11/src/CopyArea.c
index 582582120..7d7dd5fbf 100644
--- a/libX11/src/CopyArea.c
+++ b/libX11/src/CopyArea.c
@@ -1,64 +1,64 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCopyArea(
- register Display *dpy,
- Drawable src_drawable,
- Drawable dst_drawable,
- GC gc,
- int src_x,
- int src_y,
- unsigned int width,
- unsigned int height,
- int dst_x,
- int dst_y)
-
-{
- register xCopyAreaReq *req;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq(CopyArea, req);
- req->srcDrawable = src_drawable;
- req->dstDrawable = dst_drawable;
- req->gc = gc->gid;
- req->srcX = src_x;
- req->srcY = src_y;
- req->dstX = dst_x;
- req->dstY = dst_y;
- req->width = width;
- req->height = height;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCopyArea(
+ register Display *dpy,
+ Drawable src_drawable,
+ Drawable dst_drawable,
+ GC gc,
+ int src_x,
+ int src_y,
+ unsigned int width,
+ unsigned int height,
+ int dst_x,
+ int dst_y)
+
+{
+ register xCopyAreaReq *req;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq(CopyArea, req);
+ req->srcDrawable = src_drawable;
+ req->dstDrawable = dst_drawable;
+ req->gc = gc->gid;
+ req->srcX = src_x;
+ req->srcY = src_y;
+ req->dstX = dst_x;
+ req->dstY = dst_y;
+ req->width = width;
+ req->height = height;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/CopyCmap.c b/libX11/src/CopyCmap.c
index 5444550cd..750f6f701 100644
--- a/libX11/src/CopyCmap.c
+++ b/libX11/src/CopyCmap.c
@@ -1,64 +1,64 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#else
-#define XCMS 1
-#endif
-#include "Xlibint.h"
-
-#if XCMS
-#include "Xcmsint.h"
-
-/* cmsCmap.c */
-extern XcmsCmapRec * _XcmsCopyCmapRecAndFree(Display *dpy,
- Colormap src_cmap,
- Colormap copy_cmap);
-#endif
-
-Colormap XCopyColormapAndFree(
- register Display *dpy,
- Colormap src_cmap)
-{
- Colormap mid;
- register xCopyColormapAndFreeReq *req;
-
- LockDisplay(dpy);
- GetReq(CopyColormapAndFree, req);
-
- mid = req->mid = XAllocID(dpy);
- req->srcCmap = src_cmap;
-
- UnlockDisplay(dpy);
- SyncHandle();
-
-#if XCMS
- _XcmsCopyCmapRecAndFree(dpy, src_cmap, mid);
-#endif
-
- return(mid);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#define XCMS 1
+#endif
+#include "Xlibint.h"
+
+#if XCMS
+#include "Xcmsint.h"
+
+/* cmsCmap.c */
+extern XcmsCmapRec * _XcmsCopyCmapRecAndFree(Display *dpy,
+ Colormap src_cmap,
+ Colormap copy_cmap);
+#endif
+
+Colormap XCopyColormapAndFree(
+ register Display *dpy,
+ Colormap src_cmap)
+{
+ Colormap mid;
+ register xCopyColormapAndFreeReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CopyColormapAndFree, req);
+
+ mid = req->mid = XAllocID(dpy);
+ req->srcCmap = src_cmap;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+#if XCMS
+ _XcmsCopyCmapRecAndFree(dpy, src_cmap, mid);
+#endif
+
+ return(mid);
+}
diff --git a/libX11/src/CopyGC.c b/libX11/src/CopyGC.c
index 9c71249cf..b83a110b7 100644
--- a/libX11/src/CopyGC.c
+++ b/libX11/src/CopyGC.c
@@ -1,138 +1,138 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCopyGC (
- register Display *dpy,
- GC srcGC,
- unsigned long mask, /* which ones to set initially */
- GC destGC)
-{
- register XGCValues *destgv = &destGC->values,
- *srcgv = &srcGC->values;
- register xCopyGCReq *req;
- register _XExtension *ext;
-
- LockDisplay(dpy);
-
- mask &= (1L << (GCLastBit + 1)) - 1;
- /* if some of the source values to be copied are "dirty", flush them
- out before sending the CopyGC request. */
- if (srcGC->dirty & mask)
- _XFlushGCCache(dpy, srcGC);
-
- /* mark the copied values "not dirty" in the destination. */
- destGC->dirty &= ~mask;
-
- GetReq(CopyGC, req);
- req->srcGC = srcGC->gid;
- req->dstGC = destGC->gid;
- req->mask = mask;
-
- if (mask & GCFunction)
- destgv->function = srcgv->function;
-
- if (mask & GCPlaneMask)
- destgv->plane_mask = srcgv->plane_mask;
-
- if (mask & GCForeground)
- destgv->foreground = srcgv->foreground;
-
- if (mask & GCBackground)
- destgv->background = srcgv->background;
-
- if (mask & GCLineWidth)
- destgv->line_width = srcgv->line_width;
-
- if (mask & GCLineStyle)
- destgv->line_style = srcgv->line_style;
-
- if (mask & GCCapStyle)
- destgv->cap_style = srcgv->cap_style;
-
- if (mask & GCJoinStyle)
- destgv->join_style = srcgv->join_style;
-
- if (mask & GCFillStyle)
- destgv->fill_style = srcgv->fill_style;
-
- if (mask & GCFillRule)
- destgv->fill_rule = srcgv->fill_rule;
-
- if (mask & GCArcMode)
- destgv->arc_mode = srcgv->arc_mode;
-
- if (mask & GCTile)
- destgv->tile = srcgv->tile;
-
- if (mask & GCStipple)
- destgv->stipple = srcgv->stipple;
-
- if (mask & GCTileStipXOrigin)
- destgv->ts_x_origin = srcgv->ts_x_origin;
-
- if (mask & GCTileStipYOrigin)
- destgv->ts_y_origin = srcgv->ts_y_origin;
-
- if (mask & GCFont)
- destgv->font = srcgv->font;
-
- if (mask & GCSubwindowMode)
- destgv->subwindow_mode = srcgv->subwindow_mode;
-
- if (mask & GCGraphicsExposures)
- destgv->graphics_exposures = srcgv->graphics_exposures;
-
- if (mask & GCClipXOrigin)
- destgv->clip_x_origin = srcgv->clip_x_origin;
-
- if (mask & GCClipYOrigin)
- destgv->clip_y_origin = srcgv->clip_y_origin;
-
- if (mask & GCClipMask) {
- destGC->rects = srcGC->rects;
- destgv->clip_mask = srcgv->clip_mask;
- }
-
- if (mask & GCDashOffset)
- destgv->dash_offset = srcgv->dash_offset;
-
- if (mask & GCDashList) {
- destGC->dashes = srcGC->dashes;
- destgv->dashes = srcgv->dashes;
- }
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next)
- if (ext->copy_GC) (*ext->copy_GC)(dpy, destGC, &ext->codes);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCopyGC (
+ register Display *dpy,
+ GC srcGC,
+ unsigned long mask, /* which ones to set initially */
+ GC destGC)
+{
+ register XGCValues *destgv = &destGC->values,
+ *srcgv = &srcGC->values;
+ register xCopyGCReq *req;
+ register _XExtension *ext;
+
+ LockDisplay(dpy);
+
+ mask &= (1L << (GCLastBit + 1)) - 1;
+ /* if some of the source values to be copied are "dirty", flush them
+ out before sending the CopyGC request. */
+ if (srcGC->dirty & mask)
+ _XFlushGCCache(dpy, srcGC);
+
+ /* mark the copied values "not dirty" in the destination. */
+ destGC->dirty &= ~mask;
+
+ GetReq(CopyGC, req);
+ req->srcGC = srcGC->gid;
+ req->dstGC = destGC->gid;
+ req->mask = mask;
+
+ if (mask & GCFunction)
+ destgv->function = srcgv->function;
+
+ if (mask & GCPlaneMask)
+ destgv->plane_mask = srcgv->plane_mask;
+
+ if (mask & GCForeground)
+ destgv->foreground = srcgv->foreground;
+
+ if (mask & GCBackground)
+ destgv->background = srcgv->background;
+
+ if (mask & GCLineWidth)
+ destgv->line_width = srcgv->line_width;
+
+ if (mask & GCLineStyle)
+ destgv->line_style = srcgv->line_style;
+
+ if (mask & GCCapStyle)
+ destgv->cap_style = srcgv->cap_style;
+
+ if (mask & GCJoinStyle)
+ destgv->join_style = srcgv->join_style;
+
+ if (mask & GCFillStyle)
+ destgv->fill_style = srcgv->fill_style;
+
+ if (mask & GCFillRule)
+ destgv->fill_rule = srcgv->fill_rule;
+
+ if (mask & GCArcMode)
+ destgv->arc_mode = srcgv->arc_mode;
+
+ if (mask & GCTile)
+ destgv->tile = srcgv->tile;
+
+ if (mask & GCStipple)
+ destgv->stipple = srcgv->stipple;
+
+ if (mask & GCTileStipXOrigin)
+ destgv->ts_x_origin = srcgv->ts_x_origin;
+
+ if (mask & GCTileStipYOrigin)
+ destgv->ts_y_origin = srcgv->ts_y_origin;
+
+ if (mask & GCFont)
+ destgv->font = srcgv->font;
+
+ if (mask & GCSubwindowMode)
+ destgv->subwindow_mode = srcgv->subwindow_mode;
+
+ if (mask & GCGraphicsExposures)
+ destgv->graphics_exposures = srcgv->graphics_exposures;
+
+ if (mask & GCClipXOrigin)
+ destgv->clip_x_origin = srcgv->clip_x_origin;
+
+ if (mask & GCClipYOrigin)
+ destgv->clip_y_origin = srcgv->clip_y_origin;
+
+ if (mask & GCClipMask) {
+ destGC->rects = srcGC->rects;
+ destgv->clip_mask = srcgv->clip_mask;
+ }
+
+ if (mask & GCDashOffset)
+ destgv->dash_offset = srcgv->dash_offset;
+
+ if (mask & GCDashList) {
+ destGC->dashes = srcGC->dashes;
+ destgv->dashes = srcgv->dashes;
+ }
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next)
+ if (ext->copy_GC) (*ext->copy_GC)(dpy, destGC, &ext->codes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
diff --git a/libX11/src/CopyPlane.c b/libX11/src/CopyPlane.c
index 818687687..f46f6b533 100644
--- a/libX11/src/CopyPlane.c
+++ b/libX11/src/CopyPlane.c
@@ -1,66 +1,66 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCopyPlane(
- register Display *dpy,
- Drawable src_drawable,
- Drawable dst_drawable,
- GC gc,
- int src_x,
- int src_y,
- unsigned int width,
- unsigned int height,
- int dst_x,
- int dst_y,
- unsigned long bit_plane)
-
-{
- register xCopyPlaneReq *req;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq(CopyPlane, req);
- req->srcDrawable = src_drawable;
- req->dstDrawable = dst_drawable;
- req->gc = gc->gid;
- req->srcX = src_x;
- req->srcY = src_y;
- req->dstX = dst_x;
- req->dstY = dst_y;
- req->width = width;
- req->height = height;
- req->bitPlane = bit_plane;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCopyPlane(
+ register Display *dpy,
+ Drawable src_drawable,
+ Drawable dst_drawable,
+ GC gc,
+ int src_x,
+ int src_y,
+ unsigned int width,
+ unsigned int height,
+ int dst_x,
+ int dst_y,
+ unsigned long bit_plane)
+
+{
+ register xCopyPlaneReq *req;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq(CopyPlane, req);
+ req->srcDrawable = src_drawable;
+ req->dstDrawable = dst_drawable;
+ req->gc = gc->gid;
+ req->srcX = src_x;
+ req->srcY = src_y;
+ req->dstX = dst_x;
+ req->dstY = dst_y;
+ req->width = width;
+ req->height = height;
+ req->bitPlane = bit_plane;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Cr.h b/libX11/src/Cr.h
index 800c9ab1c..d07266265 100644
--- a/libX11/src/Cr.h
+++ b/libX11/src/Cr.h
@@ -1,27 +1,27 @@
-
-#ifndef _CR_H_
-#define _CR_H_
-
-extern int _XUpdateGCCache(
- register GC gc,
- register unsigned long mask,
- register XGCValues *attr);
-extern void _XNoticeCreateBitmap(
- Display *dpy,
- Pixmap pid,
- unsigned int width,
- unsigned int height);
-extern void _XNoticePutBitmap(
- Display *dpy,
- Drawable draw,
- XImage *image);
-extern Cursor _XTryShapeBitmapCursor(
- Display *dpy,
- Pixmap source,
- Pixmap mask,
- XColor *foreground,
- XColor *background,
- unsigned int x,
- unsigned int y);
-
-#endif /* _CR_H_ */
+
+#ifndef _CR_H_
+#define _CR_H_
+
+extern int _XUpdateGCCache(
+ register GC gc,
+ register unsigned long mask,
+ register XGCValues *attr);
+extern void _XNoticeCreateBitmap(
+ Display *dpy,
+ Pixmap pid,
+ unsigned int width,
+ unsigned int height);
+extern void _XNoticePutBitmap(
+ Display *dpy,
+ Drawable draw,
+ XImage *image);
+extern Cursor _XTryShapeBitmapCursor(
+ Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y);
+
+#endif /* _CR_H_ */
diff --git a/libX11/src/CrBFData.c b/libX11/src/CrBFData.c
index 449095690..a45c49480 100644
--- a/libX11/src/CrBFData.c
+++ b/libX11/src/CrBFData.c
@@ -1,79 +1,79 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlib.h"
-
-/*
- * XCreateBitmapFromData: Routine to make a pixmap of depth 1 from user
- * supplied data.
- * D is any drawable on the same screen that the pixmap will be used in.
- * Data is a pointer to the bit data, and
- * width & height give the size in bits of the pixmap.
- *
- * The following format is assumed for data:
- *
- * format=XYPixmap
- * bit_order=LSBFirst
- * byte_order=LSBFirst
- * padding=8
- * bitmap_unit=8
- * xoffset=0
- * no extra bytes per line
- */
-Pixmap XCreateBitmapFromData(
- Display *display,
- Drawable d,
- _Xconst char *data,
- unsigned int width,
- unsigned int height)
-{
- XImage ximage;
- GC gc;
- Pixmap pix;
-
- pix = XCreatePixmap(display, d, width, height, 1);
- if (! (gc = XCreateGC(display, pix, (unsigned long) 0, (XGCValues *) 0)))
- return (Pixmap) None;
- ximage.height = height;
- ximage.width = width;
- ximage.depth = 1;
- ximage.bits_per_pixel = 1;
- ximage.xoffset = 0;
- ximage.format = XYPixmap;
- ximage.data = (char *)data;
- ximage.byte_order = LSBFirst;
- ximage.bitmap_unit = 8;
- ximage.bitmap_bit_order = LSBFirst;
- ximage.bitmap_pad = 8;
- ximage.bytes_per_line = (width+7)/8;
-
- XPutImage(display, pix, gc, &ximage, 0, 0, 0, 0, width, height);
- XFreeGC(display, gc);
- return(pix);
-}
+/*
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlib.h"
+
+/*
+ * XCreateBitmapFromData: Routine to make a pixmap of depth 1 from user
+ * supplied data.
+ * D is any drawable on the same screen that the pixmap will be used in.
+ * Data is a pointer to the bit data, and
+ * width & height give the size in bits of the pixmap.
+ *
+ * The following format is assumed for data:
+ *
+ * format=XYPixmap
+ * bit_order=LSBFirst
+ * byte_order=LSBFirst
+ * padding=8
+ * bitmap_unit=8
+ * xoffset=0
+ * no extra bytes per line
+ */
+Pixmap XCreateBitmapFromData(
+ Display *display,
+ Drawable d,
+ _Xconst char *data,
+ unsigned int width,
+ unsigned int height)
+{
+ XImage ximage;
+ GC gc;
+ Pixmap pix;
+
+ pix = XCreatePixmap(display, d, width, height, 1);
+ if (! (gc = XCreateGC(display, pix, (unsigned long) 0, (XGCValues *) 0)))
+ return (Pixmap) None;
+ ximage.height = height;
+ ximage.width = width;
+ ximage.depth = 1;
+ ximage.bits_per_pixel = 1;
+ ximage.xoffset = 0;
+ ximage.format = XYPixmap;
+ ximage.data = (char *)data;
+ ximage.byte_order = LSBFirst;
+ ximage.bitmap_unit = 8;
+ ximage.bitmap_bit_order = LSBFirst;
+ ximage.bitmap_pad = 8;
+ ximage.bytes_per_line = (width+7)/8;
+
+ XPutImage(display, pix, gc, &ximage, 0, 0, 0, 0, width, height);
+ XFreeGC(display, gc);
+ return(pix);
+}
diff --git a/libX11/src/CrCmap.c b/libX11/src/CrCmap.c
index 9904c7dda..bddf237e7 100644
--- a/libX11/src/CrCmap.c
+++ b/libX11/src/CrCmap.c
@@ -1,59 +1,59 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-
-
-Colormap XCreateColormap(
- register Display *dpy,
- Window w,
- Visual *visual,
- int alloc)
-{
- register xCreateColormapReq *req;
- Colormap mid;
-
- LockDisplay(dpy);
- GetReq(CreateColormap, req);
- req->window = w;
- mid = req->mid = XAllocID(dpy);
- req->alloc = alloc;
- if (visual == CopyFromParent) req->visual = CopyFromParent;
- else req->visual = visual->visualid;
-
- UnlockDisplay(dpy);
- SyncHandle();
-
-#ifdef XCMS
- _XcmsAddCmapRec(dpy, mid, w, visual);
-#endif
-
- return(mid);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+
+
+Colormap XCreateColormap(
+ register Display *dpy,
+ Window w,
+ Visual *visual,
+ int alloc)
+{
+ register xCreateColormapReq *req;
+ Colormap mid;
+
+ LockDisplay(dpy);
+ GetReq(CreateColormap, req);
+ req->window = w;
+ mid = req->mid = XAllocID(dpy);
+ req->alloc = alloc;
+ if (visual == CopyFromParent) req->visual = CopyFromParent;
+ else req->visual = visual->visualid;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+#ifdef XCMS
+ _XcmsAddCmapRec(dpy, mid, w, visual);
+#endif
+
+ return(mid);
+}
diff --git a/libX11/src/CrCursor.c b/libX11/src/CrCursor.c
index c8c174e5f..57e062c29 100644
--- a/libX11/src/CrCursor.c
+++ b/libX11/src/CrCursor.c
@@ -1,79 +1,79 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#ifdef USE_DYNAMIC_XCURSOR
-Cursor
-_XTryShapeBitmapCursor (Display *dpy,
- Pixmap source,
- Pixmap mask,
- XColor *foreground,
- XColor *background,
- unsigned int x,
- unsigned int y);
-#endif
-
-Cursor XCreatePixmapCursor(
- register Display *dpy,
- Pixmap source,
- Pixmap mask,
- XColor *foreground,
- XColor *background,
- unsigned int x,
- unsigned int y)
-
-{
- register xCreateCursorReq *req;
- Cursor cid;
-
-#ifdef USE_DYNAMIC_XCURSOR
- cid = _XTryShapeBitmapCursor (dpy, source, mask,
- foreground, background, x, y);
- if (cid)
- return cid;
-#endif
- LockDisplay(dpy);
- GetReq(CreateCursor, req);
- req->cid = cid = XAllocID(dpy);
- req->source = source;
- req->mask = mask;
- req->foreRed = foreground->red;
- req->foreGreen = foreground->green;
- req->foreBlue = foreground->blue;
- req->backRed = background->red;
- req->backGreen = background->green;
- req->backBlue = background->blue;
- req->x = x;
- req->y = y;
- UnlockDisplay(dpy);
- SyncHandle();
- return (cid);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#ifdef USE_DYNAMIC_XCURSOR
+Cursor
+_XTryShapeBitmapCursor (Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y);
+#endif
+
+Cursor XCreatePixmapCursor(
+ register Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y)
+
+{
+ register xCreateCursorReq *req;
+ Cursor cid;
+
+#ifdef USE_DYNAMIC_XCURSOR
+ cid = _XTryShapeBitmapCursor (dpy, source, mask,
+ foreground, background, x, y);
+ if (cid)
+ return cid;
+#endif
+ LockDisplay(dpy);
+ GetReq(CreateCursor, req);
+ req->cid = cid = XAllocID(dpy);
+ req->source = source;
+ req->mask = mask;
+ req->foreRed = foreground->red;
+ req->foreGreen = foreground->green;
+ req->foreBlue = foreground->blue;
+ req->backRed = background->red;
+ req->backGreen = background->green;
+ req->backBlue = background->blue;
+ req->x = x;
+ req->y = y;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (cid);
+}
+
diff --git a/libX11/src/CrGC.c b/libX11/src/CrGC.c
index 11de94c1f..5212c36a1 100644
--- a/libX11/src/CrGC.c
+++ b/libX11/src/CrGC.c
@@ -1,345 +1,345 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Cr.h"
-
-static XGCValues const initial_GC = {
- GXcopy, /* function */
- AllPlanes, /* plane_mask */
- 0L, /* foreground */
- 1L, /* background */
- 0, /* line_width */
- LineSolid, /* line_style */
- CapButt, /* cap_style */
- JoinMiter, /* join_style */
- FillSolid, /* fill_style */
- EvenOddRule,/* fill_rule */
- ArcPieSlice,/* arc_mode */
- (Pixmap)~0L,/* tile, impossible (unknown) resource */
- (Pixmap)~0L,/* stipple, impossible (unknown) resource */
- 0, /* ts_x_origin */
- 0, /* ts_y_origin */
- (Font)~0L, /* font, impossible (unknown) resource */
- ClipByChildren, /* subwindow_mode */
- True, /* graphics_exposures */
- 0, /* clip_x_origin */
- 0, /* clip_y_origin */
- None, /* clip_mask */
- 0, /* dash_offset */
- 4 /* dashes (list [4,4]) */
-};
-
-static void _XGenerateGCList(
- register Display *dpy,
- GC gc,
- xReq *req);
-
-GC XCreateGC (
- register Display *dpy,
- Drawable d, /* Window or Pixmap for which depth matches */
- unsigned long valuemask, /* which ones to set initially */
- XGCValues *values) /* the values themselves */
-{
- register GC gc;
- register xCreateGCReq *req;
- register _XExtension *ext;
-
- LockDisplay(dpy);
- if ((gc = (GC)Xmalloc (sizeof(struct _XGC))) == NULL) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (NULL);
- }
- gc->rects = 0;
- gc->dashes = 0;
- gc->ext_data = NULL;
- gc->values = initial_GC;
- gc->dirty = 0L;
-
- valuemask &= (1L << (GCLastBit + 1)) - 1;
- if (valuemask) _XUpdateGCCache (gc, valuemask, values);
-
- GetReq(CreateGC, req);
- req->drawable = d;
- req->gc = gc->gid = XAllocID(dpy);
-
- if ((req->mask = gc->dirty))
- _XGenerateGCList (dpy, gc, (xReq *) req);
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next)
- if (ext->create_GC) (*ext->create_GC)(dpy, gc, &ext->codes);
- gc->dirty = 0L; /* allow extensions to see dirty bits */
- UnlockDisplay(dpy);
- SyncHandle();
- return (gc);
- }
-
-/*
- * GenerateGCList looks at the GC dirty bits, and appends all the required
- * long words to the request being generated.
- */
-
-static void
-_XGenerateGCList (
- register Display *dpy,
- GC gc,
- xReq *req)
- {
- unsigned long values[32];
- register unsigned long *value = values;
- long nvalues;
- register XGCValues *gv = &gc->values;
- register unsigned long dirty = gc->dirty;
-
- /*
- * Note: The order of these tests are critical; the order must be the
- * same as the GC mask bits in the word.
- */
- if (dirty & GCFunction) *value++ = gv->function;
- if (dirty & GCPlaneMask) *value++ = gv->plane_mask;
- if (dirty & GCForeground) *value++ = gv->foreground;
- if (dirty & GCBackground) *value++ = gv->background;
- if (dirty & GCLineWidth) *value++ = gv->line_width;
- if (dirty & GCLineStyle) *value++ = gv->line_style;
- if (dirty & GCCapStyle) *value++ = gv->cap_style;
- if (dirty & GCJoinStyle) *value++ = gv->join_style;
- if (dirty & GCFillStyle) *value++ = gv->fill_style;
- if (dirty & GCFillRule) *value++ = gv->fill_rule;
- if (dirty & GCTile) *value++ = gv->tile;
- if (dirty & GCStipple) *value++ = gv->stipple;
- if (dirty & GCTileStipXOrigin) *value++ = gv->ts_x_origin;
- if (dirty & GCTileStipYOrigin) *value++ = gv->ts_y_origin;
- if (dirty & GCFont) *value++ = gv->font;
- if (dirty & GCSubwindowMode) *value++ = gv->subwindow_mode;
- if (dirty & GCGraphicsExposures) *value++ = gv->graphics_exposures;
- if (dirty & GCClipXOrigin) *value++ = gv->clip_x_origin;
- if (dirty & GCClipYOrigin) *value++ = gv->clip_y_origin;
- if (dirty & GCClipMask) *value++ = gv->clip_mask;
- if (dirty & GCDashOffset) *value++ = gv->dash_offset;
- if (dirty & GCDashList) *value++ = gv->dashes;
- if (dirty & GCArcMode) *value++ = gv->arc_mode;
-
- req->length += (nvalues = value - values);
-
- /*
- * note: Data is a macro that uses its arguments multiple
- * times, so "nvalues" is changed in a separate assignment
- * statement
- */
-
- nvalues <<= 2;
- Data32 (dpy, (long *) values, nvalues);
-
- }
-
-
-int
-_XUpdateGCCache (
- register GC gc,
- register unsigned long mask,
- register XGCValues *attr)
-{
- register XGCValues *gv = &gc->values;
-
- if (mask & GCFunction)
- if (gv->function != attr->function) {
- gv->function = attr->function;
- gc->dirty |= GCFunction;
- }
-
- if (mask & GCPlaneMask)
- if (gv->plane_mask != attr->plane_mask) {
- gv->plane_mask = attr->plane_mask;
- gc->dirty |= GCPlaneMask;
- }
-
- if (mask & GCForeground)
- if (gv->foreground != attr->foreground) {
- gv->foreground = attr->foreground;
- gc->dirty |= GCForeground;
- }
-
- if (mask & GCBackground)
- if (gv->background != attr->background) {
- gv->background = attr->background;
- gc->dirty |= GCBackground;
- }
-
- if (mask & GCLineWidth)
- if (gv->line_width != attr->line_width) {
- gv->line_width = attr->line_width;
- gc->dirty |= GCLineWidth;
- }
-
- if (mask & GCLineStyle)
- if (gv->line_style != attr->line_style) {
- gv->line_style = attr->line_style;
- gc->dirty |= GCLineStyle;
- }
-
- if (mask & GCCapStyle)
- if (gv->cap_style != attr->cap_style) {
- gv->cap_style = attr->cap_style;
- gc->dirty |= GCCapStyle;
- }
-
- if (mask & GCJoinStyle)
- if (gv->join_style != attr->join_style) {
- gv->join_style = attr->join_style;
- gc->dirty |= GCJoinStyle;
- }
-
- if (mask & GCFillStyle)
- if (gv->fill_style != attr->fill_style) {
- gv->fill_style = attr->fill_style;
- gc->dirty |= GCFillStyle;
- }
-
- if (mask & GCFillRule)
- if (gv->fill_rule != attr->fill_rule) {
- gv->fill_rule = attr->fill_rule;
- gc->dirty |= GCFillRule;
- }
-
- if (mask & GCArcMode)
- if (gv->arc_mode != attr->arc_mode) {
- gv->arc_mode = attr->arc_mode;
- gc->dirty |= GCArcMode;
- }
-
- /* always write through tile change, since client may have changed pixmap contents */
- if (mask & GCTile) {
- gv->tile = attr->tile;
- gc->dirty |= GCTile;
- }
-
- /* always write through stipple change, since client may have changed pixmap contents */
- if (mask & GCStipple) {
- gv->stipple = attr->stipple;
- gc->dirty |= GCStipple;
- }
-
- if (mask & GCTileStipXOrigin)
- if (gv->ts_x_origin != attr->ts_x_origin) {
- gv->ts_x_origin = attr->ts_x_origin;
- gc->dirty |= GCTileStipXOrigin;
- }
-
- if (mask & GCTileStipYOrigin)
- if (gv->ts_y_origin != attr->ts_y_origin) {
- gv->ts_y_origin = attr->ts_y_origin;
- gc->dirty |= GCTileStipYOrigin;
- }
-
- if (mask & GCFont)
- if (gv->font != attr->font) {
- gv->font = attr->font;
- gc->dirty |= GCFont;
- }
-
- if (mask & GCSubwindowMode)
- if (gv->subwindow_mode != attr->subwindow_mode) {
- gv->subwindow_mode = attr->subwindow_mode;
- gc->dirty |= GCSubwindowMode;
- }
-
- if (mask & GCGraphicsExposures)
- if (gv->graphics_exposures != attr->graphics_exposures) {
- gv->graphics_exposures = attr->graphics_exposures;
- gc->dirty |= GCGraphicsExposures;
- }
-
- if (mask & GCClipXOrigin)
- if (gv->clip_x_origin != attr->clip_x_origin) {
- gv->clip_x_origin = attr->clip_x_origin;
- gc->dirty |= GCClipXOrigin;
- }
-
- if (mask & GCClipYOrigin)
- if (gv->clip_y_origin != attr->clip_y_origin) {
- gv->clip_y_origin = attr->clip_y_origin;
- gc->dirty |= GCClipYOrigin;
- }
-
- /* always write through mask change, since client may have changed pixmap contents */
- if (mask & GCClipMask) {
- gv->clip_mask = attr->clip_mask;
- gc->dirty |= GCClipMask;
- gc->rects = 0;
- }
-
- if (mask & GCDashOffset)
- if (gv->dash_offset != attr->dash_offset) {
- gv->dash_offset = attr->dash_offset;
- gc->dirty |= GCDashOffset;
- }
-
- if (mask & GCDashList)
- if ((gv->dashes != attr->dashes) || (gc->dashes == True)) {
- gv->dashes = attr->dashes;
- gc->dirty |= GCDashList;
- gc->dashes = 0;
- }
- return 0;
-}
-
-/* can only call when display is already locked. */
-
-void _XFlushGCCache(
- Display *dpy,
- GC gc)
-{
- register xChangeGCReq *req;
- register _XExtension *ext;
-
- if (gc->dirty) {
- GetReq(ChangeGC, req);
- req->gc = gc->gid;
- req->mask = gc->dirty;
- _XGenerateGCList (dpy, gc, (xReq *) req);
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next)
- if (ext->flush_GC) (*ext->flush_GC)(dpy, gc, &ext->codes);
- gc->dirty = 0L; /* allow extensions to see dirty bits */
- }
-}
-
-void
-XFlushGC(
- Display *dpy,
- GC gc)
-{
- FlushGC(dpy, gc);
-}
-
-GContext XGContextFromGC(GC gc)
-{
- return (gc->gid);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Cr.h"
+
+static XGCValues const initial_GC = {
+ GXcopy, /* function */
+ AllPlanes, /* plane_mask */
+ 0L, /* foreground */
+ 1L, /* background */
+ 0, /* line_width */
+ LineSolid, /* line_style */
+ CapButt, /* cap_style */
+ JoinMiter, /* join_style */
+ FillSolid, /* fill_style */
+ EvenOddRule,/* fill_rule */
+ ArcPieSlice,/* arc_mode */
+ (Pixmap)~0L,/* tile, impossible (unknown) resource */
+ (Pixmap)~0L,/* stipple, impossible (unknown) resource */
+ 0, /* ts_x_origin */
+ 0, /* ts_y_origin */
+ (Font)~0L, /* font, impossible (unknown) resource */
+ ClipByChildren, /* subwindow_mode */
+ True, /* graphics_exposures */
+ 0, /* clip_x_origin */
+ 0, /* clip_y_origin */
+ None, /* clip_mask */
+ 0, /* dash_offset */
+ 4 /* dashes (list [4,4]) */
+};
+
+static void _XGenerateGCList(
+ register Display *dpy,
+ GC gc,
+ xReq *req);
+
+GC XCreateGC (
+ register Display *dpy,
+ Drawable d, /* Window or Pixmap for which depth matches */
+ unsigned long valuemask, /* which ones to set initially */
+ XGCValues *values) /* the values themselves */
+{
+ register GC gc;
+ register xCreateGCReq *req;
+ register _XExtension *ext;
+
+ LockDisplay(dpy);
+ if ((gc = (GC)Xmalloc (sizeof(struct _XGC))) == NULL) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (NULL);
+ }
+ gc->rects = 0;
+ gc->dashes = 0;
+ gc->ext_data = NULL;
+ gc->values = initial_GC;
+ gc->dirty = 0L;
+
+ valuemask &= (1L << (GCLastBit + 1)) - 1;
+ if (valuemask) _XUpdateGCCache (gc, valuemask, values);
+
+ GetReq(CreateGC, req);
+ req->drawable = d;
+ req->gc = gc->gid = XAllocID(dpy);
+
+ if ((req->mask = gc->dirty))
+ _XGenerateGCList (dpy, gc, (xReq *) req);
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next)
+ if (ext->create_GC) (*ext->create_GC)(dpy, gc, &ext->codes);
+ gc->dirty = 0L; /* allow extensions to see dirty bits */
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (gc);
+ }
+
+/*
+ * GenerateGCList looks at the GC dirty bits, and appends all the required
+ * long words to the request being generated.
+ */
+
+static void
+_XGenerateGCList (
+ register Display *dpy,
+ GC gc,
+ xReq *req)
+ {
+ unsigned long values[32];
+ register unsigned long *value = values;
+ long nvalues;
+ register XGCValues *gv = &gc->values;
+ register unsigned long dirty = gc->dirty;
+
+ /*
+ * Note: The order of these tests are critical; the order must be the
+ * same as the GC mask bits in the word.
+ */
+ if (dirty & GCFunction) *value++ = gv->function;
+ if (dirty & GCPlaneMask) *value++ = gv->plane_mask;
+ if (dirty & GCForeground) *value++ = gv->foreground;
+ if (dirty & GCBackground) *value++ = gv->background;
+ if (dirty & GCLineWidth) *value++ = gv->line_width;
+ if (dirty & GCLineStyle) *value++ = gv->line_style;
+ if (dirty & GCCapStyle) *value++ = gv->cap_style;
+ if (dirty & GCJoinStyle) *value++ = gv->join_style;
+ if (dirty & GCFillStyle) *value++ = gv->fill_style;
+ if (dirty & GCFillRule) *value++ = gv->fill_rule;
+ if (dirty & GCTile) *value++ = gv->tile;
+ if (dirty & GCStipple) *value++ = gv->stipple;
+ if (dirty & GCTileStipXOrigin) *value++ = gv->ts_x_origin;
+ if (dirty & GCTileStipYOrigin) *value++ = gv->ts_y_origin;
+ if (dirty & GCFont) *value++ = gv->font;
+ if (dirty & GCSubwindowMode) *value++ = gv->subwindow_mode;
+ if (dirty & GCGraphicsExposures) *value++ = gv->graphics_exposures;
+ if (dirty & GCClipXOrigin) *value++ = gv->clip_x_origin;
+ if (dirty & GCClipYOrigin) *value++ = gv->clip_y_origin;
+ if (dirty & GCClipMask) *value++ = gv->clip_mask;
+ if (dirty & GCDashOffset) *value++ = gv->dash_offset;
+ if (dirty & GCDashList) *value++ = gv->dashes;
+ if (dirty & GCArcMode) *value++ = gv->arc_mode;
+
+ req->length += (nvalues = value - values);
+
+ /*
+ * note: Data is a macro that uses its arguments multiple
+ * times, so "nvalues" is changed in a separate assignment
+ * statement
+ */
+
+ nvalues <<= 2;
+ Data32 (dpy, (long *) values, nvalues);
+
+ }
+
+
+int
+_XUpdateGCCache (
+ register GC gc,
+ register unsigned long mask,
+ register XGCValues *attr)
+{
+ register XGCValues *gv = &gc->values;
+
+ if (mask & GCFunction)
+ if (gv->function != attr->function) {
+ gv->function = attr->function;
+ gc->dirty |= GCFunction;
+ }
+
+ if (mask & GCPlaneMask)
+ if (gv->plane_mask != attr->plane_mask) {
+ gv->plane_mask = attr->plane_mask;
+ gc->dirty |= GCPlaneMask;
+ }
+
+ if (mask & GCForeground)
+ if (gv->foreground != attr->foreground) {
+ gv->foreground = attr->foreground;
+ gc->dirty |= GCForeground;
+ }
+
+ if (mask & GCBackground)
+ if (gv->background != attr->background) {
+ gv->background = attr->background;
+ gc->dirty |= GCBackground;
+ }
+
+ if (mask & GCLineWidth)
+ if (gv->line_width != attr->line_width) {
+ gv->line_width = attr->line_width;
+ gc->dirty |= GCLineWidth;
+ }
+
+ if (mask & GCLineStyle)
+ if (gv->line_style != attr->line_style) {
+ gv->line_style = attr->line_style;
+ gc->dirty |= GCLineStyle;
+ }
+
+ if (mask & GCCapStyle)
+ if (gv->cap_style != attr->cap_style) {
+ gv->cap_style = attr->cap_style;
+ gc->dirty |= GCCapStyle;
+ }
+
+ if (mask & GCJoinStyle)
+ if (gv->join_style != attr->join_style) {
+ gv->join_style = attr->join_style;
+ gc->dirty |= GCJoinStyle;
+ }
+
+ if (mask & GCFillStyle)
+ if (gv->fill_style != attr->fill_style) {
+ gv->fill_style = attr->fill_style;
+ gc->dirty |= GCFillStyle;
+ }
+
+ if (mask & GCFillRule)
+ if (gv->fill_rule != attr->fill_rule) {
+ gv->fill_rule = attr->fill_rule;
+ gc->dirty |= GCFillRule;
+ }
+
+ if (mask & GCArcMode)
+ if (gv->arc_mode != attr->arc_mode) {
+ gv->arc_mode = attr->arc_mode;
+ gc->dirty |= GCArcMode;
+ }
+
+ /* always write through tile change, since client may have changed pixmap contents */
+ if (mask & GCTile) {
+ gv->tile = attr->tile;
+ gc->dirty |= GCTile;
+ }
+
+ /* always write through stipple change, since client may have changed pixmap contents */
+ if (mask & GCStipple) {
+ gv->stipple = attr->stipple;
+ gc->dirty |= GCStipple;
+ }
+
+ if (mask & GCTileStipXOrigin)
+ if (gv->ts_x_origin != attr->ts_x_origin) {
+ gv->ts_x_origin = attr->ts_x_origin;
+ gc->dirty |= GCTileStipXOrigin;
+ }
+
+ if (mask & GCTileStipYOrigin)
+ if (gv->ts_y_origin != attr->ts_y_origin) {
+ gv->ts_y_origin = attr->ts_y_origin;
+ gc->dirty |= GCTileStipYOrigin;
+ }
+
+ if (mask & GCFont)
+ if (gv->font != attr->font) {
+ gv->font = attr->font;
+ gc->dirty |= GCFont;
+ }
+
+ if (mask & GCSubwindowMode)
+ if (gv->subwindow_mode != attr->subwindow_mode) {
+ gv->subwindow_mode = attr->subwindow_mode;
+ gc->dirty |= GCSubwindowMode;
+ }
+
+ if (mask & GCGraphicsExposures)
+ if (gv->graphics_exposures != attr->graphics_exposures) {
+ gv->graphics_exposures = attr->graphics_exposures;
+ gc->dirty |= GCGraphicsExposures;
+ }
+
+ if (mask & GCClipXOrigin)
+ if (gv->clip_x_origin != attr->clip_x_origin) {
+ gv->clip_x_origin = attr->clip_x_origin;
+ gc->dirty |= GCClipXOrigin;
+ }
+
+ if (mask & GCClipYOrigin)
+ if (gv->clip_y_origin != attr->clip_y_origin) {
+ gv->clip_y_origin = attr->clip_y_origin;
+ gc->dirty |= GCClipYOrigin;
+ }
+
+ /* always write through mask change, since client may have changed pixmap contents */
+ if (mask & GCClipMask) {
+ gv->clip_mask = attr->clip_mask;
+ gc->dirty |= GCClipMask;
+ gc->rects = 0;
+ }
+
+ if (mask & GCDashOffset)
+ if (gv->dash_offset != attr->dash_offset) {
+ gv->dash_offset = attr->dash_offset;
+ gc->dirty |= GCDashOffset;
+ }
+
+ if (mask & GCDashList)
+ if ((gv->dashes != attr->dashes) || (gc->dashes == True)) {
+ gv->dashes = attr->dashes;
+ gc->dirty |= GCDashList;
+ gc->dashes = 0;
+ }
+ return 0;
+}
+
+/* can only call when display is already locked. */
+
+void _XFlushGCCache(
+ Display *dpy,
+ GC gc)
+{
+ register xChangeGCReq *req;
+ register _XExtension *ext;
+
+ if (gc->dirty) {
+ GetReq(ChangeGC, req);
+ req->gc = gc->gid;
+ req->mask = gc->dirty;
+ _XGenerateGCList (dpy, gc, (xReq *) req);
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next)
+ if (ext->flush_GC) (*ext->flush_GC)(dpy, gc, &ext->codes);
+ gc->dirty = 0L; /* allow extensions to see dirty bits */
+ }
+}
+
+void
+XFlushGC(
+ Display *dpy,
+ GC gc)
+{
+ FlushGC(dpy, gc);
+}
+
+GContext XGContextFromGC(GC gc)
+{
+ return (gc->gid);
+}
diff --git a/libX11/src/CrGlCur.c b/libX11/src/CrGlCur.c
index 510ff5d75..4f332836b 100644
--- a/libX11/src/CrGlCur.c
+++ b/libX11/src/CrGlCur.c
@@ -1,270 +1,270 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#ifdef USE_DYNAMIC_XCURSOR
-
-#ifdef __UNIXOS2__
-#define RTLD_LAZY 1
-#define LIBXCURSOR "Xcursor.dll"
-#endif
-#include <stdio.h>
-#include <string.h>
-#if defined(hpux)
-#include <dl.h>
-#else
-#include <dlfcn.h>
-#endif
-#include "Cr.h"
-
-#ifdef __CYGWIN__
-#define LIBXCURSOR "cygXcursor-1.dll"
-#endif
-
-#if defined(hpux)
-typedef shl_t XModuleType;
-#else
-#ifdef _MSC_VER
-#include <X11/XWindows.h>
-typedef HANDLE XModuleType;
-#define dlsym GetProcAddress
-#else
-typedef void *XModuleType;
-#endif
-#endif
-
-#ifndef LIBXCURSOR
-#define LIBXCURSOR "libXcursor.so.1"
-#endif
-
-static char libraryName[] = LIBXCURSOR;
-
-static XModuleType
-open_library (void)
-{
- char *library = libraryName;
- char *dot;
- XModuleType module;
- for (;;)
- {
-#if defined(hpux)
- module = shl_load(library, BIND_DEFERRED, 0L);
-#else
-#ifdef _MSC_VER
- module = LoadLibrary(library);
-#else
- module = dlopen(library, RTLD_LAZY);
-#endif
-#endif
- if (module)
- return module;
- dot = strrchr (library, '.');
- if (!dot)
- break;
- *dot = '\0';
- }
- return NULL;
-}
-
-static void *
-fetch_symbol (XModuleType module, const char *under_symbol)
-{
- void *result = NULL;
- const char *symbol = under_symbol + 1;
-#if defined(hpux)
- int getsyms_cnt, i;
- struct shl_symbol *symbols;
-
- getsyms_cnt = shl_getsymbols(module, TYPE_PROCEDURE,
- EXPORT_SYMBOLS, malloc, &symbols);
-
- for(i=0; i<getsyms_cnt; i++) {
- if(!strcmp(symbols[i].name, symbol)) {
- result = symbols[i].value;
- break;
- }
- }
-
- if(getsyms_cnt > 0) {
- free(symbols);
- }
-#else
- result = dlsym (module, symbol);
- if (!result)
- result = dlsym (module, under_symbol);
-#endif
- return result;
-}
-
-typedef void (*NoticeCreateBitmapFunc) (Display *dpy,
- Pixmap pid,
- unsigned int width,
- unsigned int height);
-
-typedef void (*NoticePutBitmapFunc) (Display *dpy,
- Drawable draw,
- XImage *image);
-
-typedef Cursor (*TryShapeBitmapCursorFunc) (Display *dpy,
- Pixmap source,
- Pixmap mask,
- XColor *foreground,
- XColor *background,
- unsigned int x,
- unsigned int y);
-
-typedef Cursor (*TryShapeCursorFunc) (Display *dpy,
- Font source_font,
- Font mask_font,
- unsigned int source_char,
- unsigned int mask_char,
- XColor _Xconst *foreground,
- XColor _Xconst *background);
-
-static XModuleType _XcursorModule;
-static Bool _XcursorModuleTried;
-
-#define GetFunc(type,name,ret) {\
- static Bool been_here; \
- static type staticFunc; \
- \
- _XLockMutex (_Xglobal_lock); \
- if (!been_here) \
- { \
- been_here = True; \
- if (!_XcursorModuleTried) \
- { \
- _XcursorModuleTried = True; \
- _XcursorModule = open_library (); \
- } \
- if (_XcursorModule) \
- staticFunc = (type) fetch_symbol (_XcursorModule, "_" name); \
- } \
- ret = staticFunc; \
- _XUnlockMutex (_Xglobal_lock); \
-}
-
-static Cursor
-_XTryShapeCursor (Display *dpy,
- Font source_font,
- Font mask_font,
- unsigned int source_char,
- unsigned int mask_char,
- XColor _Xconst *foreground,
- XColor _Xconst *background)
-{
- TryShapeCursorFunc func;
-
- GetFunc (TryShapeCursorFunc, "XcursorTryShapeCursor", func);
- if (func)
- return (*func) (dpy, source_font, mask_font, source_char, mask_char,
- foreground, background);
- return None;
-}
-
-void
-_XNoticeCreateBitmap (Display *dpy,
- Pixmap pid,
- unsigned int width,
- unsigned int height)
-{
- NoticeCreateBitmapFunc func;
-
- GetFunc (NoticeCreateBitmapFunc, "XcursorNoticeCreateBitmap", func);
- if (func)
- (*func) (dpy, pid, width, height);
-}
-
-void
-_XNoticePutBitmap (Display *dpy,
- Drawable draw,
- XImage *image)
-{
- NoticePutBitmapFunc func;
-
- GetFunc (NoticePutBitmapFunc, "XcursorNoticePutBitmap", func);
- if (func)
- (*func) (dpy, draw, image);
-}
-
-Cursor
-_XTryShapeBitmapCursor (Display *dpy,
- Pixmap source,
- Pixmap mask,
- XColor *foreground,
- XColor *background,
- unsigned int x,
- unsigned int y)
-{
- TryShapeBitmapCursorFunc func;
-
- GetFunc (TryShapeBitmapCursorFunc, "XcursorTryShapeBitmapCursor", func);
- if (func)
- return (*func) (dpy, source, mask, foreground, background, x, y);
- return None;
-}
-#endif
-
-Cursor XCreateGlyphCursor(
- register Display *dpy,
- Font source_font,
- Font mask_font,
- unsigned int source_char,
- unsigned int mask_char,
- XColor _Xconst *foreground,
- XColor _Xconst *background)
-{
- Cursor cid;
- register xCreateGlyphCursorReq *req;
-
-#ifdef USE_DYNAMIC_XCURSOR
- cid = _XTryShapeCursor (dpy, source_font, mask_font,
- source_char, mask_char, foreground, background);
- if (cid)
- return cid;
-#endif
- LockDisplay(dpy);
- GetReq(CreateGlyphCursor, req);
- cid = req->cid = XAllocID(dpy);
- req->source = source_font;
- req->mask = mask_font;
- req->sourceChar = source_char;
- req->maskChar = mask_char;
- req->foreRed = foreground->red;
- req->foreGreen = foreground->green;
- req->foreBlue = foreground->blue;
- req->backRed = background->red;
- req->backGreen = background->green;
- req->backBlue = background->blue;
- UnlockDisplay(dpy);
- SyncHandle();
- return (cid);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#ifdef USE_DYNAMIC_XCURSOR
+
+#ifdef __UNIXOS2__
+#define RTLD_LAZY 1
+#define LIBXCURSOR "Xcursor.dll"
+#endif
+#include <stdio.h>
+#include <string.h>
+#if defined(hpux)
+#include <dl.h>
+#else
+#include <dlfcn.h>
+#endif
+#include "Cr.h"
+
+#ifdef __CYGWIN__
+#define LIBXCURSOR "cygXcursor-1.dll"
+#endif
+
+#if defined(hpux)
+typedef shl_t XModuleType;
+#else
+#ifdef _MSC_VER
+#include <X11/XWindows.h>
+typedef HANDLE XModuleType;
+#define dlsym GetProcAddress
+#else
+typedef void *XModuleType;
+#endif
+#endif
+
+#ifndef LIBXCURSOR
+#define LIBXCURSOR "libXcursor.so.1"
+#endif
+
+static char libraryName[] = LIBXCURSOR;
+
+static XModuleType
+open_library (void)
+{
+ char *library = libraryName;
+ char *dot;
+ XModuleType module;
+ for (;;)
+ {
+#if defined(hpux)
+ module = shl_load(library, BIND_DEFERRED, 0L);
+#else
+#ifdef _MSC_VER
+ module = LoadLibrary(library);
+#else
+ module = dlopen(library, RTLD_LAZY);
+#endif
+#endif
+ if (module)
+ return module;
+ dot = strrchr (library, '.');
+ if (!dot)
+ break;
+ *dot = '\0';
+ }
+ return NULL;
+}
+
+static void *
+fetch_symbol (XModuleType module, const char *under_symbol)
+{
+ void *result = NULL;
+ const char *symbol = under_symbol + 1;
+#if defined(hpux)
+ int getsyms_cnt, i;
+ struct shl_symbol *symbols;
+
+ getsyms_cnt = shl_getsymbols(module, TYPE_PROCEDURE,
+ EXPORT_SYMBOLS, malloc, &symbols);
+
+ for(i=0; i<getsyms_cnt; i++) {
+ if(!strcmp(symbols[i].name, symbol)) {
+ result = symbols[i].value;
+ break;
+ }
+ }
+
+ if(getsyms_cnt > 0) {
+ free(symbols);
+ }
+#else
+ result = dlsym (module, symbol);
+ if (!result)
+ result = dlsym (module, under_symbol);
+#endif
+ return result;
+}
+
+typedef void (*NoticeCreateBitmapFunc) (Display *dpy,
+ Pixmap pid,
+ unsigned int width,
+ unsigned int height);
+
+typedef void (*NoticePutBitmapFunc) (Display *dpy,
+ Drawable draw,
+ XImage *image);
+
+typedef Cursor (*TryShapeBitmapCursorFunc) (Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y);
+
+typedef Cursor (*TryShapeCursorFunc) (Display *dpy,
+ Font source_font,
+ Font mask_font,
+ unsigned int source_char,
+ unsigned int mask_char,
+ XColor _Xconst *foreground,
+ XColor _Xconst *background);
+
+static XModuleType _XcursorModule;
+static Bool _XcursorModuleTried;
+
+#define GetFunc(type,name,ret) {\
+ static Bool been_here; \
+ static type staticFunc; \
+ \
+ _XLockMutex (_Xglobal_lock); \
+ if (!been_here) \
+ { \
+ been_here = True; \
+ if (!_XcursorModuleTried) \
+ { \
+ _XcursorModuleTried = True; \
+ _XcursorModule = open_library (); \
+ } \
+ if (_XcursorModule) \
+ staticFunc = (type) fetch_symbol (_XcursorModule, "_" name); \
+ } \
+ ret = staticFunc; \
+ _XUnlockMutex (_Xglobal_lock); \
+}
+
+static Cursor
+_XTryShapeCursor (Display *dpy,
+ Font source_font,
+ Font mask_font,
+ unsigned int source_char,
+ unsigned int mask_char,
+ XColor _Xconst *foreground,
+ XColor _Xconst *background)
+{
+ TryShapeCursorFunc func;
+
+ GetFunc (TryShapeCursorFunc, "XcursorTryShapeCursor", func);
+ if (func)
+ return (*func) (dpy, source_font, mask_font, source_char, mask_char,
+ foreground, background);
+ return None;
+}
+
+void
+_XNoticeCreateBitmap (Display *dpy,
+ Pixmap pid,
+ unsigned int width,
+ unsigned int height)
+{
+ NoticeCreateBitmapFunc func;
+
+ GetFunc (NoticeCreateBitmapFunc, "XcursorNoticeCreateBitmap", func);
+ if (func)
+ (*func) (dpy, pid, width, height);
+}
+
+void
+_XNoticePutBitmap (Display *dpy,
+ Drawable draw,
+ XImage *image)
+{
+ NoticePutBitmapFunc func;
+
+ GetFunc (NoticePutBitmapFunc, "XcursorNoticePutBitmap", func);
+ if (func)
+ (*func) (dpy, draw, image);
+}
+
+Cursor
+_XTryShapeBitmapCursor (Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y)
+{
+ TryShapeBitmapCursorFunc func;
+
+ GetFunc (TryShapeBitmapCursorFunc, "XcursorTryShapeBitmapCursor", func);
+ if (func)
+ return (*func) (dpy, source, mask, foreground, background, x, y);
+ return None;
+}
+#endif
+
+Cursor XCreateGlyphCursor(
+ register Display *dpy,
+ Font source_font,
+ Font mask_font,
+ unsigned int source_char,
+ unsigned int mask_char,
+ XColor _Xconst *foreground,
+ XColor _Xconst *background)
+{
+ Cursor cid;
+ register xCreateGlyphCursorReq *req;
+
+#ifdef USE_DYNAMIC_XCURSOR
+ cid = _XTryShapeCursor (dpy, source_font, mask_font,
+ source_char, mask_char, foreground, background);
+ if (cid)
+ return cid;
+#endif
+ LockDisplay(dpy);
+ GetReq(CreateGlyphCursor, req);
+ cid = req->cid = XAllocID(dpy);
+ req->source = source_font;
+ req->mask = mask_font;
+ req->sourceChar = source_char;
+ req->maskChar = mask_char;
+ req->foreRed = foreground->red;
+ req->foreGreen = foreground->green;
+ req->foreBlue = foreground->blue;
+ req->backRed = background->red;
+ req->backGreen = background->green;
+ req->backBlue = background->blue;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (cid);
+}
+
diff --git a/libX11/src/CrPFBData.c b/libX11/src/CrPFBData.c
index 57cd15303..cbb1c91fb 100644
--- a/libX11/src/CrPFBData.c
+++ b/libX11/src/CrPFBData.c
@@ -1,87 +1,87 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlib.h"
-#include <stdio.h>
-
-/*
- * XCreatePixmapFromBitmapData: Routine to make a pixmap from user supplied bitmap data.
- * D is any drawable on the same screen that the pixmap will be used in.
- * Data is a pointer to the bit data, and
- * width & height give the size in bits of the pixmap.
- * Fg and Bg are the pixel values to use for the two colors.
- * Depth is the depth of the pixmap to create.
- *
- * The following format is assumed for data:
- *
- * format=XYPixmap
- * bit_order=LSBFirst
- * byte_order=LSBFirst
- * padding=8
- * bitmap_unit=8
- * xoffset=0
- * no extra bytes per line
- */
-Pixmap XCreatePixmapFromBitmapData(
- Display *display,
- Drawable d,
- char *data,
- unsigned int width,
- unsigned int height,
- unsigned long fg,
- unsigned long bg,
- unsigned int depth)
-{
- XImage ximage;
- GC gc;
- XGCValues gcv;
- Pixmap pix;
-
- pix = XCreatePixmap(display, d, width, height, depth);
- gcv.foreground = fg;
- gcv.background = bg;
- if (! (gc = XCreateGC(display, pix, GCForeground|GCBackground, &gcv)))
- return (Pixmap) NULL;
- ximage.height = height;
- ximage.width = width;
- ximage.depth = 1;
- ximage.bits_per_pixel = 1;
- ximage.xoffset = 0;
- ximage.format = XYBitmap;
- ximage.data = data;
- ximage.byte_order = LSBFirst;
- ximage.bitmap_unit = 8;
- ximage.bitmap_bit_order = LSBFirst;
- ximage.bitmap_pad = 8;
- ximage.bytes_per_line = (width+7)/8;
-
- XPutImage(display, pix, gc, &ximage, 0, 0, 0, 0, width, height);
- XFreeGC(display, gc);
- return(pix);
-}
+/*
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlib.h"
+#include <stdio.h>
+
+/*
+ * XCreatePixmapFromBitmapData: Routine to make a pixmap from user supplied bitmap data.
+ * D is any drawable on the same screen that the pixmap will be used in.
+ * Data is a pointer to the bit data, and
+ * width & height give the size in bits of the pixmap.
+ * Fg and Bg are the pixel values to use for the two colors.
+ * Depth is the depth of the pixmap to create.
+ *
+ * The following format is assumed for data:
+ *
+ * format=XYPixmap
+ * bit_order=LSBFirst
+ * byte_order=LSBFirst
+ * padding=8
+ * bitmap_unit=8
+ * xoffset=0
+ * no extra bytes per line
+ */
+Pixmap XCreatePixmapFromBitmapData(
+ Display *display,
+ Drawable d,
+ char *data,
+ unsigned int width,
+ unsigned int height,
+ unsigned long fg,
+ unsigned long bg,
+ unsigned int depth)
+{
+ XImage ximage;
+ GC gc;
+ XGCValues gcv;
+ Pixmap pix;
+
+ pix = XCreatePixmap(display, d, width, height, depth);
+ gcv.foreground = fg;
+ gcv.background = bg;
+ if (! (gc = XCreateGC(display, pix, GCForeground|GCBackground, &gcv)))
+ return (Pixmap) NULL;
+ ximage.height = height;
+ ximage.width = width;
+ ximage.depth = 1;
+ ximage.bits_per_pixel = 1;
+ ximage.xoffset = 0;
+ ximage.format = XYBitmap;
+ ximage.data = data;
+ ximage.byte_order = LSBFirst;
+ ximage.bitmap_unit = 8;
+ ximage.bitmap_bit_order = LSBFirst;
+ ximage.bitmap_pad = 8;
+ ximage.bytes_per_line = (width+7)/8;
+
+ XPutImage(display, pix, gc, &ximage, 0, 0, 0, 0, width, height);
+ XFreeGC(display, gc);
+ return(pix);
+}
diff --git a/libX11/src/CrPixmap.c b/libX11/src/CrPixmap.c
index cdf312076..a1b072279 100644
--- a/libX11/src/CrPixmap.c
+++ b/libX11/src/CrPixmap.c
@@ -1,65 +1,65 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#ifdef USE_DYNAMIC_XCURSOR
-void
-_XNoticeCreateBitmap (Display *dpy,
- Pixmap pid,
- unsigned int width,
- unsigned int height);
-#endif
-
-Pixmap XCreatePixmap (
- register Display *dpy,
- Drawable d,
- unsigned int width,
- unsigned int height,
- unsigned int depth)
-{
- Pixmap pid;
- register xCreatePixmapReq *req;
-
- LockDisplay(dpy);
- GetReq(CreatePixmap, req);
- req->drawable = d;
- req->width = width;
- req->height = height;
- req->depth = depth;
- pid = req->pid = XAllocID(dpy);
- UnlockDisplay(dpy);
- SyncHandle();
-#ifdef USE_DYNAMIC_XCURSOR
- if (depth == 1)
- _XNoticeCreateBitmap (dpy, pid, width, height);
-#endif
- return (pid);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#ifdef USE_DYNAMIC_XCURSOR
+void
+_XNoticeCreateBitmap (Display *dpy,
+ Pixmap pid,
+ unsigned int width,
+ unsigned int height);
+#endif
+
+Pixmap XCreatePixmap (
+ register Display *dpy,
+ Drawable d,
+ unsigned int width,
+ unsigned int height,
+ unsigned int depth)
+{
+ Pixmap pid;
+ register xCreatePixmapReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CreatePixmap, req);
+ req->drawable = d;
+ req->width = width;
+ req->height = height;
+ req->depth = depth;
+ pid = req->pid = XAllocID(dpy);
+ UnlockDisplay(dpy);
+ SyncHandle();
+#ifdef USE_DYNAMIC_XCURSOR
+ if (depth == 1)
+ _XNoticeCreateBitmap (dpy, pid, width, height);
+#endif
+ return (pid);
+}
+
diff --git a/libX11/src/CrWindow.c b/libX11/src/CrWindow.c
index 347e9a022..bb5dfc50e 100644
--- a/libX11/src/CrWindow.c
+++ b/libX11/src/CrWindow.c
@@ -1,82 +1,82 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#ifdef _MSC_VER
-#undef CreateWindow
-#endif
-
-Window XCreateSimpleWindow(
- register Display *dpy,
- Window parent,
- int x,
- int y,
- unsigned int width,
- unsigned int height,
- unsigned int borderWidth,
- unsigned long border,
- unsigned long background)
-{
- Window wid;
- register xCreateWindowReq *req;
-
- LockDisplay(dpy);
- GetReqExtra(CreateWindow, 8, req);
- req->parent = parent;
- req->x = x;
- req->y = y;
- req->width = width;
- req->height = height;
- req->borderWidth = borderWidth;
- req->depth = 0;
- req->class = CopyFromParent;
- req->visual = CopyFromParent;
- wid = req->wid = XAllocID(dpy);
- req->mask = CWBackPixel | CWBorderPixel;
-
-#ifdef MUSTCOPY
- {
- unsigned long lbackground = background, lborder = border;
- dpy->bufptr -= 8;
- Data32 (dpy, (long *) &lbackground, 4);
- Data32 (dpy, (long *) &lborder, 4);
- }
-#else
- {
- register CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xCreateWindowReq);
- *valuePtr++ = background;
- *valuePtr = border;
- }
-#endif /* MUSTCOPY */
-
- UnlockDisplay(dpy);
- SyncHandle();
- return (wid);
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#ifdef _MSC_VER
+#undef CreateWindow
+#endif
+
+Window XCreateSimpleWindow(
+ register Display *dpy,
+ Window parent,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height,
+ unsigned int borderWidth,
+ unsigned long border,
+ unsigned long background)
+{
+ Window wid;
+ register xCreateWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra(CreateWindow, 8, req);
+ req->parent = parent;
+ req->x = x;
+ req->y = y;
+ req->width = width;
+ req->height = height;
+ req->borderWidth = borderWidth;
+ req->depth = 0;
+ req->class = CopyFromParent;
+ req->visual = CopyFromParent;
+ wid = req->wid = XAllocID(dpy);
+ req->mask = CWBackPixel | CWBorderPixel;
+
+#ifdef MUSTCOPY
+ {
+ unsigned long lbackground = background, lborder = border;
+ dpy->bufptr -= 8;
+ Data32 (dpy, (long *) &lbackground, 4);
+ Data32 (dpy, (long *) &lborder, 4);
+ }
+#else
+ {
+ register CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xCreateWindowReq);
+ *valuePtr++ = background;
+ *valuePtr = border;
+ }
+#endif /* MUSTCOPY */
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (wid);
+ }
diff --git a/libX11/src/Cursor.c b/libX11/src/Cursor.c
index 80b91c36d..b8fb7e629 100644
--- a/libX11/src/Cursor.c
+++ b/libX11/src/Cursor.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-static XColor _Xconst foreground = { 0, 0, 0, 0 }; /* black */
-static XColor _Xconst background = { 0, 65535, 65535, 65535 }; /* white */
-
-Cursor XCreateFontCursor(
- Display *dpy,
- unsigned int which)
-{
- /*
- * the cursor font contains the shape glyph followed by the mask
- * glyph; so character position 0 contains a shape, 1 the mask for 0,
- * 2 a shape, etc. <X11/cursorfont.h> contains hash define names
- * for all of these.
- */
-
- if (dpy->cursor_font == None) {
- dpy->cursor_font = XLoadFont (dpy, CURSORFONT);
- if (dpy->cursor_font == None) return None;
- }
-
- return XCreateGlyphCursor (dpy, dpy->cursor_font, dpy->cursor_font,
- which, which + 1, &foreground, &background);
-}
-
+/*
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+static XColor _Xconst foreground = { 0, 0, 0, 0 }; /* black */
+static XColor _Xconst background = { 0, 65535, 65535, 65535 }; /* white */
+
+Cursor XCreateFontCursor(
+ Display *dpy,
+ unsigned int which)
+{
+ /*
+ * the cursor font contains the shape glyph followed by the mask
+ * glyph; so character position 0 contains a shape, 1 the mask for 0,
+ * 2 a shape, etc. <X11/cursorfont.h> contains hash define names
+ * for all of these.
+ */
+
+ if (dpy->cursor_font == None) {
+ dpy->cursor_font = XLoadFont (dpy, CURSORFONT);
+ if (dpy->cursor_font == None) return None;
+ }
+
+ return XCreateGlyphCursor (dpy, dpy->cursor_font, dpy->cursor_font,
+ which, which + 1, &foreground, &background);
+}
+
diff --git a/libX11/src/DefCursor.c b/libX11/src/DefCursor.c
index e3cee0649..cba155036 100644
--- a/libX11/src/DefCursor.c
+++ b/libX11/src/DefCursor.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986,1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDefineCursor (
- register Display *dpy,
- Window w,
- Cursor cursor)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWCursor;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), cursor);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986,1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDefineCursor (
+ register Display *dpy,
+ Window w,
+ Cursor cursor)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWCursor;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), cursor);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/DelProp.c b/libX11/src/DelProp.c
index da486b8ef..161334708 100644
--- a/libX11/src/DelProp.c
+++ b/libX11/src/DelProp.c
@@ -1,47 +1,47 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDeleteProperty(
- register Display *dpy,
- Window window,
- Atom property)
-{
- register xDeletePropertyReq *req;
-
- LockDisplay(dpy);
- GetReq(DeleteProperty, req);
- req->window = window;
- req->property = property;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDeleteProperty(
+ register Display *dpy,
+ Window window,
+ Atom property)
+{
+ register xDeletePropertyReq *req;
+
+ LockDisplay(dpy);
+ GetReq(DeleteProperty, req);
+ req->window = window;
+ req->property = property;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/Depths.c b/libX11/src/Depths.c
index f49655cb2..1f3545a6c 100644
--- a/libX11/src/Depths.c
+++ b/libX11/src/Depths.c
@@ -1,62 +1,62 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <stdio.h>
-
-/*
- * XListDepths - return info from connection setup
- */
-int *XListDepths (
- Display *dpy,
- int scrnum,
- int *countp)
-{
- Screen *scr;
- int count;
- int *depths;
-
- if (scrnum < 0 || scrnum >= dpy->nscreens) return NULL;
-
- scr = &dpy->screens[scrnum];
- if ((count = scr->ndepths) > 0) {
- register Depth *dp;
- register int i;
-
- depths = (int *) Xmalloc (count * sizeof(int));
- if (!depths) return NULL;
- for (i = 0, dp = scr->depths; i < count; i++, dp++)
- depths[i] = dp->depth;
- } else {
- /* a screen must have a depth */
- return NULL;
- }
- *countp = count;
- return depths;
-}
+/*
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <stdio.h>
+
+/*
+ * XListDepths - return info from connection setup
+ */
+int *XListDepths (
+ Display *dpy,
+ int scrnum,
+ int *countp)
+{
+ Screen *scr;
+ int count;
+ int *depths;
+
+ if (scrnum < 0 || scrnum >= dpy->nscreens) return NULL;
+
+ scr = &dpy->screens[scrnum];
+ if ((count = scr->ndepths) > 0) {
+ register Depth *dp;
+ register int i;
+
+ depths = (int *) Xmalloc (count * sizeof(int));
+ if (!depths) return NULL;
+ for (i = 0, dp = scr->depths; i < count; i++, dp++)
+ depths[i] = dp->depth;
+ } else {
+ /* a screen must have a depth */
+ return NULL;
+ }
+ *countp = count;
+ return depths;
+}
diff --git a/libX11/src/DestSubs.c b/libX11/src/DestSubs.c
index 7c6c428be..ab63cc67e 100644
--- a/libX11/src/DestSubs.c
+++ b/libX11/src/DestSubs.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDestroySubwindows(
- register Display *dpy,
- Window win)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq (DestroySubwindows,win, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDestroySubwindows(
+ register Display *dpy,
+ Window win)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq (DestroySubwindows,win, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/DestWind.c b/libX11/src/DestWind.c
index c1aec893a..066e42eaf 100644
--- a/libX11/src/DestWind.c
+++ b/libX11/src/DestWind.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDestroyWindow (
- register Display *dpy,
- Window w)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(DestroyWindow, w, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDestroyWindow (
+ register Display *dpy,
+ Window w)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(DestroyWindow, w, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/DisName.c b/libX11/src/DisName.c
index 87a1e2f0e..598347746 100644
--- a/libX11/src/DisName.c
+++ b/libX11/src/DisName.c
@@ -1,64 +1,64 @@
-
-/*
-
-Copyright 1994, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-/* XDisplayName.c */
-/*
- * Returns the name of the display XOpenDisplay would use. This is better
- * than just printing the "display" variable in a program because that
- * could be NULL and/or there could be an environment variable set.
- * This makes it easier for programmers to provide meaningful error
- * messages.
- *
- *
- * For example, this is used in XOpenDisplay() as
- * strncpy( displaybuf, XDisplayName( display ), sizeof(displaybuf) );
- * if ( *displaybuf == '\0' ) return( NULL );
- * This check is actually unnecessary because the next thing is an index()
- * call looking for a ':' which will fail and we'll return(NULL).
- */
-/* Written at Waterloo - JMSellens */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include "Xlib.h"
-
-char *
-XDisplayName(
- _Xconst char *display)
-{
- char *d;
- if ( display != (char *)NULL && *display != '\0' )
- return( (char *)display );
- if ( (d = getenv( "DISPLAY" )) != (char *)NULL )
- return( d );
- return( "" );
-}
+
+/*
+
+Copyright 1994, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+/* XDisplayName.c */
+/*
+ * Returns the name of the display XOpenDisplay would use. This is better
+ * than just printing the "display" variable in a program because that
+ * could be NULL and/or there could be an environment variable set.
+ * This makes it easier for programmers to provide meaningful error
+ * messages.
+ *
+ *
+ * For example, this is used in XOpenDisplay() as
+ * strncpy( displaybuf, XDisplayName( display ), sizeof(displaybuf) );
+ * if ( *displaybuf == '\0' ) return( NULL );
+ * This check is actually unnecessary because the next thing is an index()
+ * call looking for a ':' which will fail and we'll return(NULL).
+ */
+/* Written at Waterloo - JMSellens */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include "Xlib.h"
+
+char *
+XDisplayName(
+ _Xconst char *display)
+{
+ char *d;
+ if ( display != (char *)NULL && *display != '\0' )
+ return( (char *)display );
+ if ( (d = getenv( "DISPLAY" )) != (char *)NULL )
+ return( d );
+ return( "" );
+}
diff --git a/libX11/src/DrArc.c b/libX11/src/DrArc.c
index 1dc4a07b2..8e90ebee0 100644
--- a/libX11/src/DrArc.c
+++ b/libX11/src/DrArc.c
@@ -1,85 +1,85 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-/* Note to future maintainers: XDrawArc does NOT batch successive PolyArc
- requests into a single request like XDrawLine, XDrawPoint, etc.
- We don't do this because X_PolyArc applies the GC's join-style if
- the last point in one arc coincides with the first point in another.
- The client wouldn't expect this and would have no easy way to defeat it. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawArc(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y, /* INT16 */
- unsigned int width,
- unsigned int height, /* CARD16 */
- int angle1,
- int angle2) /* INT16 */
-{
- register xPolyArcReq *req;
- register xArc *arc;
-#ifdef MUSTCOPY
- xArc arcdata;
- long len = SIZEOF(xArc);
-
- arc = &arcdata;
-#endif /* MUSTCOPY */
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReqExtra (PolyArc, SIZEOF(xArc), req);
-
- req->drawable = d;
- req->gc = gc->gid;
-
-#ifndef MUSTCOPY
- arc = (xArc *) NEXTPTR(req,xPolyArcReq);
-#endif /* MUSTCOPY */
-
- arc->x = x;
- arc->y = y;
- arc->width = width;
- arc->height = height;
- arc->angle1 = angle1;
- arc->angle2 = angle2;
-
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xArc);
- Data (dpy, (char *) arc, len);
-#endif /* MUSTCOPY */
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+/* Note to future maintainers: XDrawArc does NOT batch successive PolyArc
+ requests into a single request like XDrawLine, XDrawPoint, etc.
+ We don't do this because X_PolyArc applies the GC's join-style if
+ the last point in one arc coincides with the first point in another.
+ The client wouldn't expect this and would have no easy way to defeat it. */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawArc(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y, /* INT16 */
+ unsigned int width,
+ unsigned int height, /* CARD16 */
+ int angle1,
+ int angle2) /* INT16 */
+{
+ register xPolyArcReq *req;
+ register xArc *arc;
+#ifdef MUSTCOPY
+ xArc arcdata;
+ long len = SIZEOF(xArc);
+
+ arc = &arcdata;
+#endif /* MUSTCOPY */
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReqExtra (PolyArc, SIZEOF(xArc), req);
+
+ req->drawable = d;
+ req->gc = gc->gid;
+
+#ifndef MUSTCOPY
+ arc = (xArc *) NEXTPTR(req,xPolyArcReq);
+#endif /* MUSTCOPY */
+
+ arc->x = x;
+ arc->y = y;
+ arc->width = width;
+ arc->height = height;
+ arc->angle1 = angle1;
+ arc->angle2 = angle2;
+
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xArc);
+ Data (dpy, (char *) arc, len);
+#endif /* MUSTCOPY */
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/DrArcs.c b/libX11/src/DrArcs.c
index 14405aa3d..c802a2726 100644
--- a/libX11/src/DrArcs.c
+++ b/libX11/src/DrArcs.c
@@ -1,57 +1,57 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define arc_scale (SIZEOF(xArc) / 4)
-
-int
-XDrawArcs(
- register Display *dpy,
- Drawable d,
- GC gc,
- XArc *arcs,
- int n_arcs)
-{
- register xPolyArcReq *req;
- register long len;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq(PolyArc,req);
- req->drawable = d;
- req->gc = gc->gid;
- len = ((long)n_arcs) * arc_scale;
- SetReqLen(req, len, 1);
- len <<= 2; /* watch out for macros... */
- Data16 (dpy, (short *) arcs, len);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define arc_scale (SIZEOF(xArc) / 4)
+
+int
+XDrawArcs(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XArc *arcs,
+ int n_arcs)
+{
+ register xPolyArcReq *req;
+ register long len;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq(PolyArc,req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ len = ((long)n_arcs) * arc_scale;
+ SetReqLen(req, len, 1);
+ len <<= 2; /* watch out for macros... */
+ Data16 (dpy, (short *) arcs, len);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/DrLine.c b/libX11/src/DrLine.c
index 3786f5933..c25efad9e 100644
--- a/libX11/src/DrLine.c
+++ b/libX11/src/DrLine.c
@@ -1,101 +1,101 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* precompute the maximum size of batching request allowed */
-
-#define wsize (SIZEOF(xPolySegmentReq) + WLNSPERBATCH * SIZEOF(xSegment))
-#define zsize (SIZEOF(xPolySegmentReq) + ZLNSPERBATCH * SIZEOF(xSegment))
-
-int
-XDrawLine (
- register Display *dpy,
- Drawable d,
- GC gc,
- int x1,
- int y1,
- int x2,
- int y2)
-{
- register xSegment *segment;
-#ifdef MUSTCOPY
- xSegment segmentdata;
- long len = SIZEOF(xSegment);
-
- segment = &segmentdata;
-#endif /* not MUSTCOPY */
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- {
- register xPolySegmentReq *req = (xPolySegmentReq *) dpy->last_req;
-
- /* if same as previous request, with same drawable, batch requests */
- if (
- (req->reqType == X_PolySegment)
- && (req->drawable == d)
- && (req->gc == gc->gid)
- && ((dpy->bufptr + SIZEOF(xSegment)) <= dpy->bufmax)
- && (((char *)dpy->bufptr - (char *)req) < (gc->values.line_width ?
- wsize : zsize)) ) {
- req->length += SIZEOF(xSegment) >> 2;
-#ifndef MUSTCOPY
- segment = (xSegment *) dpy->bufptr;
- dpy->bufptr += SIZEOF(xSegment);
-#endif /* not MUSTCOPY */
- }
-
- else {
- GetReqExtra (PolySegment, SIZEOF(xSegment), req);
- req->drawable = d;
- req->gc = gc->gid;
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xSegment);
-#else
- segment = (xSegment *) NEXTPTR(req,xPolySegmentReq);
-#endif /* MUSTCOPY */
- }
-
- segment->x1 = x1;
- segment->y1 = y1;
- segment->x2 = x2;
- segment->y2 = y2;
-
-#ifdef MUSTCOPY
- Data (dpy, (char *) &segmentdata, len);
-#endif /* MUSTCOPY */
-
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* precompute the maximum size of batching request allowed */
+
+#define wsize (SIZEOF(xPolySegmentReq) + WLNSPERBATCH * SIZEOF(xSegment))
+#define zsize (SIZEOF(xPolySegmentReq) + ZLNSPERBATCH * SIZEOF(xSegment))
+
+int
+XDrawLine (
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x1,
+ int y1,
+ int x2,
+ int y2)
+{
+ register xSegment *segment;
+#ifdef MUSTCOPY
+ xSegment segmentdata;
+ long len = SIZEOF(xSegment);
+
+ segment = &segmentdata;
+#endif /* not MUSTCOPY */
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ {
+ register xPolySegmentReq *req = (xPolySegmentReq *) dpy->last_req;
+
+ /* if same as previous request, with same drawable, batch requests */
+ if (
+ (req->reqType == X_PolySegment)
+ && (req->drawable == d)
+ && (req->gc == gc->gid)
+ && ((dpy->bufptr + SIZEOF(xSegment)) <= dpy->bufmax)
+ && (((char *)dpy->bufptr - (char *)req) < (gc->values.line_width ?
+ wsize : zsize)) ) {
+ req->length += SIZEOF(xSegment) >> 2;
+#ifndef MUSTCOPY
+ segment = (xSegment *) dpy->bufptr;
+ dpy->bufptr += SIZEOF(xSegment);
+#endif /* not MUSTCOPY */
+ }
+
+ else {
+ GetReqExtra (PolySegment, SIZEOF(xSegment), req);
+ req->drawable = d;
+ req->gc = gc->gid;
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xSegment);
+#else
+ segment = (xSegment *) NEXTPTR(req,xPolySegmentReq);
+#endif /* MUSTCOPY */
+ }
+
+ segment->x1 = x1;
+ segment->y1 = y1;
+ segment->x2 = x2;
+ segment->y2 = y2;
+
+#ifdef MUSTCOPY
+ Data (dpy, (char *) &segmentdata, len);
+#endif /* MUSTCOPY */
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ }
+ return 1;
+}
+
diff --git a/libX11/src/DrLines.c b/libX11/src/DrLines.c
index 68071b6b4..d7d641068 100644
--- a/libX11/src/DrLines.c
+++ b/libX11/src/DrLines.c
@@ -1,57 +1,57 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawLines (
- register Display *dpy,
- Drawable d,
- GC gc,
- XPoint *points,
- int npoints,
- int mode)
-{
- register xPolyLineReq *req;
- register long length;
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq (PolyLine, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->coordMode = mode;
- SetReqLen(req, npoints, 65535 - req->length);
- /* each point is 2 16-bit integers */
- length = npoints << 2; /* watch out for macros... */
- Data16 (dpy, (short *) points, length);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawLines (
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XPoint *points,
+ int npoints,
+ int mode)
+{
+ register xPolyLineReq *req;
+ register long length;
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq (PolyLine, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->coordMode = mode;
+ SetReqLen(req, npoints, 65535 - req->length);
+ /* each point is 2 16-bit integers */
+ length = npoints << 2; /* watch out for macros... */
+ Data16 (dpy, (short *) points, length);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/DrPoint.c b/libX11/src/DrPoint.c
index 5c89b5c63..7ca8715d6 100644
--- a/libX11/src/DrPoint.c
+++ b/libX11/src/DrPoint.c
@@ -1,97 +1,97 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* precompute the maximum size of batching request allowed */
-
-#define size (SIZEOF(xPolyPointReq) + PTSPERBATCH * SIZEOF(xPoint))
-
-int
-XDrawPoint(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y) /* INT16 */
-{
- xPoint *point;
-#ifdef MUSTCOPY
- xPoint pointdata;
- long len = SIZEOF(xPoint);
-
- point = &pointdata;
-#endif /* MUSTCOPY */
-
- 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) ) {
- req->length += SIZEOF(xPoint) >> 2;
-#ifndef MUSTCOPY
- point = (xPoint *) dpy->bufptr;
- dpy->bufptr += SIZEOF(xPoint);
-#endif /* not MUSTCOPY */
- }
-
- else {
- GetReqExtra(PolyPoint, 4, req); /* 1 point = 4 bytes */
- req->drawable = d;
- req->gc = gc->gid;
- req->coordMode = CoordModeOrigin;
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xPoint);
-#else
- point = (xPoint *) NEXTPTR(req,xPolyPointReq);
-#endif /* MUSTCOPY */
- }
-
- point->x = x;
- point->y = y;
-
-#ifdef MUSTCOPY
- Data (dpy, (char *) point, len);
-#endif /* MUSTCOPY */
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* precompute the maximum size of batching request allowed */
+
+#define size (SIZEOF(xPolyPointReq) + PTSPERBATCH * SIZEOF(xPoint))
+
+int
+XDrawPoint(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y) /* INT16 */
+{
+ xPoint *point;
+#ifdef MUSTCOPY
+ xPoint pointdata;
+ long len = SIZEOF(xPoint);
+
+ point = &pointdata;
+#endif /* MUSTCOPY */
+
+ 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) ) {
+ req->length += SIZEOF(xPoint) >> 2;
+#ifndef MUSTCOPY
+ point = (xPoint *) dpy->bufptr;
+ dpy->bufptr += SIZEOF(xPoint);
+#endif /* not MUSTCOPY */
+ }
+
+ else {
+ GetReqExtra(PolyPoint, 4, req); /* 1 point = 4 bytes */
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->coordMode = CoordModeOrigin;
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xPoint);
+#else
+ point = (xPoint *) NEXTPTR(req,xPolyPointReq);
+#endif /* MUSTCOPY */
+ }
+
+ point->x = x;
+ point->y = y;
+
+#ifdef MUSTCOPY
+ Data (dpy, (char *) point, len);
+#endif /* MUSTCOPY */
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/DrPoints.c b/libX11/src/DrPoints.c
index 287fa057d..e8b092555 100644
--- a/libX11/src/DrPoints.c
+++ b/libX11/src/DrPoints.c
@@ -1,85 +1,85 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawPoints(
- register Display *dpy,
- Drawable d,
- GC gc,
- XPoint *points,
- int n_points,
- int mode) /* CoordMode */
-{
- register xPolyPointReq *req;
- register long nbytes;
- int n;
- int xoff, yoff;
- XPoint pt;
-
- xoff = yoff = 0;
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- while (n_points) {
- GetReq(PolyPoint, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->coordMode = mode;
- n = n_points;
- if (!dpy->bigreq_size && n > (dpy->max_request_size - req->length))
- n = dpy->max_request_size - req->length;
- SetReqLen(req, n, n);
- nbytes = ((long)n) << 2; /* watch out for macros... */
- if (xoff || yoff) {
- pt.x = xoff + points->x;
- pt.y = yoff + points->y;
- Data16 (dpy, (short *) &pt, 4);
- if (nbytes > 4) {
- Data16 (dpy, (short *) (points + 1), nbytes - 4);
- }
- } else {
- Data16 (dpy, (short *) points, nbytes);
- }
- n_points -= n;
- if (n_points && (mode == CoordModePrevious)) {
- register XPoint *pptr = points;
- points += n;
- while (pptr != points) {
- xoff += pptr->x;
- yoff += pptr->y;
- pptr++;
- }
- } else
- points += n;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawPoints(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XPoint *points,
+ int n_points,
+ int mode) /* CoordMode */
+{
+ register xPolyPointReq *req;
+ register long nbytes;
+ int n;
+ int xoff, yoff;
+ XPoint pt;
+
+ xoff = yoff = 0;
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ while (n_points) {
+ GetReq(PolyPoint, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->coordMode = mode;
+ n = n_points;
+ if (!dpy->bigreq_size && n > (dpy->max_request_size - req->length))
+ n = dpy->max_request_size - req->length;
+ SetReqLen(req, n, n);
+ nbytes = ((long)n) << 2; /* watch out for macros... */
+ if (xoff || yoff) {
+ pt.x = xoff + points->x;
+ pt.y = yoff + points->y;
+ Data16 (dpy, (short *) &pt, 4);
+ if (nbytes > 4) {
+ Data16 (dpy, (short *) (points + 1), nbytes - 4);
+ }
+ } else {
+ Data16 (dpy, (short *) points, nbytes);
+ }
+ n_points -= n;
+ if (n_points && (mode == CoordModePrevious)) {
+ register XPoint *pptr = points;
+ points += n;
+ while (pptr != points) {
+ xoff += pptr->x;
+ yoff += pptr->y;
+ pptr++;
+ }
+ } else
+ points += n;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/DrRect.c b/libX11/src/DrRect.c
index dadd55ea2..0fe301a2c 100644
--- a/libX11/src/DrRect.c
+++ b/libX11/src/DrRect.c
@@ -1,100 +1,100 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* precompute the maximum size of batching request allowed */
-
-#define wsize (SIZEOF(xPolyRectangleReq) + WRCTSPERBATCH * SIZEOF(xRectangle))
-#define zsize (SIZEOF(xPolyRectangleReq) + ZRCTSPERBATCH * SIZEOF(xRectangle))
-
-int
-XDrawRectangle(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y, /* INT16 */
- unsigned int width,
- unsigned int height) /* CARD16 */
-{
- xRectangle *rect;
-#ifdef MUSTCOPY
- xRectangle rectdata;
- long len = SIZEOF(xRectangle);
-
- rect = &rectdata;
-#endif /* MUSTCOPY */
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- {
- register xPolyRectangleReq *req = (xPolyRectangleReq *) dpy->last_req;
-
- /* if same as previous request, with same drawable, batch requests */
- if (
- (req->reqType == X_PolyRectangle)
- && (req->drawable == d)
- && (req->gc == gc->gid)
- && ((dpy->bufptr + SIZEOF(xRectangle)) <= dpy->bufmax)
- && (((char *)dpy->bufptr - (char *)req) < (gc->values.line_width ?
- wsize : zsize)) ) {
- req->length += SIZEOF(xRectangle) >> 2;
-#ifndef MUSTCOPY
- rect = (xRectangle *) dpy->bufptr;
- dpy->bufptr += SIZEOF(xRectangle);
-#endif /* not MUSTCOPY */
- }
-
- else {
- GetReqExtra(PolyRectangle, SIZEOF(xRectangle), req);
- req->drawable = d;
- req->gc = gc->gid;
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xRectangle);
-#else
- rect = (xRectangle *) NEXTPTR(req,xPolyRectangleReq);
-#endif /* MUSTCOPY */
- }
-
- rect->x = x;
- rect->y = y;
- rect->width = width;
- rect->height = height;
-
-#ifdef MUSTCOPY
- Data (dpy, (char *) rect, len); /* subtracted bufptr up above */
-#endif /* MUSTCOPY */
-
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* precompute the maximum size of batching request allowed */
+
+#define wsize (SIZEOF(xPolyRectangleReq) + WRCTSPERBATCH * SIZEOF(xRectangle))
+#define zsize (SIZEOF(xPolyRectangleReq) + ZRCTSPERBATCH * SIZEOF(xRectangle))
+
+int
+XDrawRectangle(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y, /* INT16 */
+ unsigned int width,
+ unsigned int height) /* CARD16 */
+{
+ xRectangle *rect;
+#ifdef MUSTCOPY
+ xRectangle rectdata;
+ long len = SIZEOF(xRectangle);
+
+ rect = &rectdata;
+#endif /* MUSTCOPY */
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ {
+ register xPolyRectangleReq *req = (xPolyRectangleReq *) dpy->last_req;
+
+ /* if same as previous request, with same drawable, batch requests */
+ if (
+ (req->reqType == X_PolyRectangle)
+ && (req->drawable == d)
+ && (req->gc == gc->gid)
+ && ((dpy->bufptr + SIZEOF(xRectangle)) <= dpy->bufmax)
+ && (((char *)dpy->bufptr - (char *)req) < (gc->values.line_width ?
+ wsize : zsize)) ) {
+ req->length += SIZEOF(xRectangle) >> 2;
+#ifndef MUSTCOPY
+ rect = (xRectangle *) dpy->bufptr;
+ dpy->bufptr += SIZEOF(xRectangle);
+#endif /* not MUSTCOPY */
+ }
+
+ else {
+ GetReqExtra(PolyRectangle, SIZEOF(xRectangle), req);
+ req->drawable = d;
+ req->gc = gc->gid;
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xRectangle);
+#else
+ rect = (xRectangle *) NEXTPTR(req,xPolyRectangleReq);
+#endif /* MUSTCOPY */
+ }
+
+ rect->x = x;
+ rect->y = y;
+ rect->width = width;
+ rect->height = height;
+
+#ifdef MUSTCOPY
+ Data (dpy, (char *) rect, len); /* subtracted bufptr up above */
+#endif /* MUSTCOPY */
+
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/DrRects.c b/libX11/src/DrRects.c
index 7827bf18d..d21fd0fa6 100644
--- a/libX11/src/DrRects.c
+++ b/libX11/src/DrRects.c
@@ -1,65 +1,65 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawRectangles(
- register Display *dpy,
- Drawable d,
- GC gc,
- XRectangle *rects,
- int n_rects)
-{
- register xPolyRectangleReq *req;
- long len;
- int n;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- while (n_rects) {
- GetReq(PolyRectangle, req);
- req->drawable = d;
- req->gc = gc->gid;
- n = n_rects;
- len = ((long)n) << 1;
- if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
- n = (dpy->max_request_size - req->length) >> 1;
- len = ((long)n) << 1;
- }
- SetReqLen(req, len, len);
- len <<= 2; /* watch out for macros... */
- Data16 (dpy, (short *) rects, len);
- n_rects -= n;
- rects += n;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawRectangles(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XRectangle *rects,
+ int n_rects)
+{
+ register xPolyRectangleReq *req;
+ long len;
+ int n;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ while (n_rects) {
+ GetReq(PolyRectangle, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ n = n_rects;
+ len = ((long)n) << 1;
+ if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
+ n = (dpy->max_request_size - req->length) >> 1;
+ len = ((long)n) << 1;
+ }
+ SetReqLen(req, len, len);
+ len <<= 2; /* watch out for macros... */
+ Data16 (dpy, (short *) rects, len);
+ n_rects -= n;
+ rects += n;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/DrSegs.c b/libX11/src/DrSegs.c
index 93eab4d08..70812413c 100644
--- a/libX11/src/DrSegs.c
+++ b/libX11/src/DrSegs.c
@@ -1,66 +1,66 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawSegments (
- register Display *dpy,
- Drawable d,
- GC gc,
- XSegment *segments,
- int nsegments)
-{
- register xPolySegmentReq *req;
- long len;
- int n;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- while (nsegments) {
- GetReq (PolySegment, req);
- req->drawable = d;
- req->gc = gc->gid;
- n = nsegments;
- len = ((long)n) << 1;
- if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
- n = (dpy->max_request_size - req->length) >> 1;
- len = ((long)n) << 1;
- }
- SetReqLen(req, len, len);
- len <<= 2; /* watch out for macros... */
- Data16 (dpy, (short *) segments, len);
- nsegments -= n;
- segments += n;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawSegments (
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XSegment *segments,
+ int nsegments)
+{
+ register xPolySegmentReq *req;
+ long len;
+ int n;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ while (nsegments) {
+ GetReq (PolySegment, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ n = nsegments;
+ len = ((long)n) << 1;
+ if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
+ n = (dpy->max_request_size - req->length) >> 1;
+ len = ((long)n) << 1;
+ }
+ SetReqLen(req, len, len);
+ len <<= 2; /* watch out for macros... */
+ Data16 (dpy, (short *) segments, len);
+ nsegments -= n;
+ segments += n;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ErrDes.c b/libX11/src/ErrDes.c
index 9a5b1805f..7dde06136 100644
--- a/libX11/src/ErrDes.c
+++ b/libX11/src/ErrDes.c
@@ -1,211 +1,211 @@
-/*
- */
-
-/***********************************************************
-
-Copyright 1987, 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987, 1988 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xos.h>
-#include "Xresource.h"
-#include <stdio.h>
-
-#ifndef ERRORDB
-#ifndef XERRORDB
-#define ERRORDB "/usr/lib/X11/XErrorDB"
-#else
-#define ERRORDB XERRORDB
-#endif
-#endif
-
-/*
- * descriptions of errors in Section 4 of Protocol doc (pp. 350-351); more
- * verbose descriptions are given in the error database
- */
-static const char _XErrorList[] =
- /* No error */ "no error\0"
- /* BadRequest */ "BadRequest\0"
- /* BadValue */ "BadValue\0"
- /* BadWindow */ "BadWindow\0"
- /* BadPixmap */ "BadPixmap\0"
- /* BadAtom */ "BadAtom\0"
- /* BadCursor */ "BadCursor\0"
- /* BadFont */ "BadFont\0"
- /* BadMatch */ "BadMatch\0"
- /* BadDrawable */ "BadDrawable\0"
- /* BadAccess */ "BadAccess\0"
- /* BadAlloc */ "BadAlloc\0"
- /* BadColor */ "BadColor\0"
- /* BadGC */ "BadGC\0"
- /* BadIDChoice */ "BadIDChoice\0"
- /* BadName */ "BadName\0"
- /* BadLength */ "BadLength\0"
- /* BadImplementation */ "BadImplementation"
-;
-
-/* offsets into _XErrorList */
-static const unsigned char _XErrorOffsets[] = {
- 0, 9, 20, 29, 39, 49, 57, 67, 75, 84, 96,
- 106, 115, 124, 130, 142, 150, 160
-};
-
-
-int
-XGetErrorText(
- register Display *dpy,
- register int code,
- char *buffer,
- int nbytes)
-{
- char buf[150];
- register _XExtension *ext;
- _XExtension *bext = (_XExtension *)NULL;
-
- if (nbytes == 0) return 0;
- if (code <= BadImplementation && code > 0) {
- sprintf(buf, "%d", code);
- (void) XGetErrorDatabaseText(dpy, "XProtoError", buf,
- _XErrorList + _XErrorOffsets[code],
- buffer, nbytes);
- } else
- buffer[0] = '\0';
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next) {
- if (ext->error_string)
- (*ext->error_string)(dpy, code, &ext->codes, buffer, nbytes);
- if (ext->codes.first_error &&
- ext->codes.first_error <= code &&
- (!bext || ext->codes.first_error > bext->codes.first_error))
- bext = ext;
- }
- if (!buffer[0] && bext) {
- sprintf(buf, "%s.%d", bext->name, code - bext->codes.first_error);
- (void) XGetErrorDatabaseText(dpy, "XProtoError", buf, "", buffer, nbytes);
- }
- if (!buffer[0])
- sprintf(buffer, "%d", code);
- return 0;
-}
-
-int
-/*ARGSUSED*/
-XGetErrorDatabaseText(
- Display *dpy,
- register _Xconst char *name,
- register _Xconst char *type,
- _Xconst char *defaultp,
- char *buffer,
- int nbytes)
-{
-
- static XrmDatabase db = NULL;
- XrmString type_str;
- XrmValue result;
- char temp[BUFSIZ];
- char* tptr;
- unsigned long tlen;
-
- if (nbytes == 0) return 0;
-
- if (!db) {
- /* the Xrm routines expect to be called with the global
- mutex unlocked. */
- XrmDatabase temp_db;
- int do_destroy;
- const char *dbname;
-
- XrmInitialize();
-#ifdef WIN32
- dbname = getenv("XERRORDB");
- if (!dbname)
- dbname = ERRORDB;
-#else
- dbname = ERRORDB;
-#endif
- temp_db = XrmGetFileDatabase(dbname);
-
- _XLockMutex(_Xglobal_lock);
- if (!db) {
- db = temp_db;
- do_destroy = 0;
- } else
- do_destroy = 1; /* we didn't need to get it after all */
- _XUnlockMutex(_Xglobal_lock);
-
- if (do_destroy)
- XrmDestroyDatabase(temp_db);
- }
-
- if (db)
- {
- tlen = strlen (name) + strlen (type) + 2;
- if (tlen <= sizeof(temp))
- tptr = temp;
- else
- tptr = Xmalloc (tlen);
- if (tptr) {
- sprintf(tptr, "%s.%s", name, type);
- XrmGetResource(db, tptr, "ErrorType.ErrorNumber",
- &type_str, &result);
- if (tptr != temp)
- Xfree (tptr);
- } else {
- result.addr = (XPointer) NULL;
- }
- }
- else
- result.addr = (XPointer)NULL;
- if (!result.addr) {
- result.addr = (XPointer) defaultp;
- result.size = strlen(defaultp) + 1;
- }
- (void) strncpy (buffer, (char *) result.addr, nbytes);
- if (result.size > nbytes) buffer[nbytes-1] = '\0';
- return 0;
-}
+/*
+ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987, 1988 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xos.h>
+#include "Xresource.h"
+#include <stdio.h>
+
+#ifndef ERRORDB
+#ifndef XERRORDB
+#define ERRORDB "/usr/lib/X11/XErrorDB"
+#else
+#define ERRORDB XERRORDB
+#endif
+#endif
+
+/*
+ * descriptions of errors in Section 4 of Protocol doc (pp. 350-351); more
+ * verbose descriptions are given in the error database
+ */
+static const char _XErrorList[] =
+ /* No error */ "no error\0"
+ /* BadRequest */ "BadRequest\0"
+ /* BadValue */ "BadValue\0"
+ /* BadWindow */ "BadWindow\0"
+ /* BadPixmap */ "BadPixmap\0"
+ /* BadAtom */ "BadAtom\0"
+ /* BadCursor */ "BadCursor\0"
+ /* BadFont */ "BadFont\0"
+ /* BadMatch */ "BadMatch\0"
+ /* BadDrawable */ "BadDrawable\0"
+ /* BadAccess */ "BadAccess\0"
+ /* BadAlloc */ "BadAlloc\0"
+ /* BadColor */ "BadColor\0"
+ /* BadGC */ "BadGC\0"
+ /* BadIDChoice */ "BadIDChoice\0"
+ /* BadName */ "BadName\0"
+ /* BadLength */ "BadLength\0"
+ /* BadImplementation */ "BadImplementation"
+;
+
+/* offsets into _XErrorList */
+static const unsigned char _XErrorOffsets[] = {
+ 0, 9, 20, 29, 39, 49, 57, 67, 75, 84, 96,
+ 106, 115, 124, 130, 142, 150, 160
+};
+
+
+int
+XGetErrorText(
+ register Display *dpy,
+ register int code,
+ char *buffer,
+ int nbytes)
+{
+ char buf[150];
+ register _XExtension *ext;
+ _XExtension *bext = (_XExtension *)NULL;
+
+ if (nbytes == 0) return 0;
+ if (code <= BadImplementation && code > 0) {
+ sprintf(buf, "%d", code);
+ (void) XGetErrorDatabaseText(dpy, "XProtoError", buf,
+ _XErrorList + _XErrorOffsets[code],
+ buffer, nbytes);
+ } else
+ buffer[0] = '\0';
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next) {
+ if (ext->error_string)
+ (*ext->error_string)(dpy, code, &ext->codes, buffer, nbytes);
+ if (ext->codes.first_error &&
+ ext->codes.first_error <= code &&
+ (!bext || ext->codes.first_error > bext->codes.first_error))
+ bext = ext;
+ }
+ if (!buffer[0] && bext) {
+ sprintf(buf, "%s.%d", bext->name, code - bext->codes.first_error);
+ (void) XGetErrorDatabaseText(dpy, "XProtoError", buf, "", buffer, nbytes);
+ }
+ if (!buffer[0])
+ sprintf(buffer, "%d", code);
+ return 0;
+}
+
+int
+/*ARGSUSED*/
+XGetErrorDatabaseText(
+ Display *dpy,
+ register _Xconst char *name,
+ register _Xconst char *type,
+ _Xconst char *defaultp,
+ char *buffer,
+ int nbytes)
+{
+
+ static XrmDatabase db = NULL;
+ XrmString type_str;
+ XrmValue result;
+ char temp[BUFSIZ];
+ char* tptr;
+ unsigned long tlen;
+
+ if (nbytes == 0) return 0;
+
+ if (!db) {
+ /* the Xrm routines expect to be called with the global
+ mutex unlocked. */
+ XrmDatabase temp_db;
+ int do_destroy;
+ const char *dbname;
+
+ XrmInitialize();
+#ifdef WIN32
+ dbname = getenv("XERRORDB");
+ if (!dbname)
+ dbname = ERRORDB;
+#else
+ dbname = ERRORDB;
+#endif
+ temp_db = XrmGetFileDatabase(dbname);
+
+ _XLockMutex(_Xglobal_lock);
+ if (!db) {
+ db = temp_db;
+ do_destroy = 0;
+ } else
+ do_destroy = 1; /* we didn't need to get it after all */
+ _XUnlockMutex(_Xglobal_lock);
+
+ if (do_destroy)
+ XrmDestroyDatabase(temp_db);
+ }
+
+ if (db)
+ {
+ tlen = strlen (name) + strlen (type) + 2;
+ if (tlen <= sizeof(temp))
+ tptr = temp;
+ else
+ tptr = Xmalloc (tlen);
+ if (tptr) {
+ sprintf(tptr, "%s.%s", name, type);
+ XrmGetResource(db, tptr, "ErrorType.ErrorNumber",
+ &type_str, &result);
+ if (tptr != temp)
+ Xfree (tptr);
+ } else {
+ result.addr = (XPointer) NULL;
+ }
+ }
+ else
+ result.addr = (XPointer)NULL;
+ if (!result.addr) {
+ result.addr = (XPointer) defaultp;
+ result.size = strlen(defaultp) + 1;
+ }
+ (void) strncpy (buffer, (char *) result.addr, nbytes);
+ if (result.size > nbytes) buffer[nbytes-1] = '\0';
+ return 0;
+}
diff --git a/libX11/src/ErrHndlr.c b/libX11/src/ErrHndlr.c
index 167a68b1e..c17d4eb26 100644
--- a/libX11/src/ErrHndlr.c
+++ b/libX11/src/ErrHndlr.c
@@ -1,86 +1,86 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * XErrorHandler - This procedure sets the X non-fatal error handler
- * (_XErrorFunction) to be the specified routine. If NULL is passed in
- * the original error handler is restored.
- */
-
-XErrorHandler
-XSetErrorHandler(XErrorHandler handler)
-{
- int (*oldhandler)(Display *dpy, XErrorEvent *event);
-
- _XLockMutex(_Xglobal_lock);
- oldhandler = _XErrorFunction;
-
- if (!oldhandler)
- oldhandler = _XDefaultError;
-
- if (handler != NULL) {
- _XErrorFunction = handler;
- }
- else {
- _XErrorFunction = _XDefaultError;
- }
- _XUnlockMutex(_Xglobal_lock);
-
- return (XErrorHandler) oldhandler;
-}
-
-/*
- * XIOErrorHandler - This procedure sets the X fatal I/O error handler
- * (_XIOErrorFunction) to be the specified routine. If NULL is passed in
- * the original error handler is restored.
- */
-
-XIOErrorHandler
-XSetIOErrorHandler(XIOErrorHandler handler)
-{
- int (*oldhandler)(Display *dpy);
-
- _XLockMutex(_Xglobal_lock);
- oldhandler = _XIOErrorFunction;
-
- if (!oldhandler)
- oldhandler = _XDefaultIOError;
-
- if (handler != NULL) {
- _XIOErrorFunction = handler;
- }
- else {
- _XIOErrorFunction = _XDefaultIOError;
- }
- _XUnlockMutex(_Xglobal_lock);
-
- return (XIOErrorHandler) oldhandler;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * XErrorHandler - This procedure sets the X non-fatal error handler
+ * (_XErrorFunction) to be the specified routine. If NULL is passed in
+ * the original error handler is restored.
+ */
+
+XErrorHandler
+XSetErrorHandler(XErrorHandler handler)
+{
+ int (*oldhandler)(Display *dpy, XErrorEvent *event);
+
+ _XLockMutex(_Xglobal_lock);
+ oldhandler = _XErrorFunction;
+
+ if (!oldhandler)
+ oldhandler = _XDefaultError;
+
+ if (handler != NULL) {
+ _XErrorFunction = handler;
+ }
+ else {
+ _XErrorFunction = _XDefaultError;
+ }
+ _XUnlockMutex(_Xglobal_lock);
+
+ return (XErrorHandler) oldhandler;
+}
+
+/*
+ * XIOErrorHandler - This procedure sets the X fatal I/O error handler
+ * (_XIOErrorFunction) to be the specified routine. If NULL is passed in
+ * the original error handler is restored.
+ */
+
+XIOErrorHandler
+XSetIOErrorHandler(XIOErrorHandler handler)
+{
+ int (*oldhandler)(Display *dpy);
+
+ _XLockMutex(_Xglobal_lock);
+ oldhandler = _XIOErrorFunction;
+
+ if (!oldhandler)
+ oldhandler = _XDefaultIOError;
+
+ if (handler != NULL) {
+ _XIOErrorFunction = handler;
+ }
+ else {
+ _XIOErrorFunction = _XDefaultIOError;
+ }
+ _XUnlockMutex(_Xglobal_lock);
+
+ return (XIOErrorHandler) oldhandler;
+}
diff --git a/libX11/src/FSSaver.c b/libX11/src/FSSaver.c
index 3df8ae681..4861b1d72 100644
--- a/libX11/src/FSSaver.c
+++ b/libX11/src/FSSaver.c
@@ -1,60 +1,60 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XActivateScreenSaver(register Display *dpy)
-{
- XForceScreenSaver (dpy, ScreenSaverActive);
- return 1;
-}
-
-int
-XResetScreenSaver(register Display *dpy)
-{
- XForceScreenSaver (dpy, ScreenSaverReset);
- return 1;
-}
-
-int
-XForceScreenSaver(
- register Display *dpy,
- int mode)
-{
- register xForceScreenSaverReq *req;
-
- LockDisplay(dpy);
- GetReq(ForceScreenSaver, req);
- req->mode = mode;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XActivateScreenSaver(register Display *dpy)
+{
+ XForceScreenSaver (dpy, ScreenSaverActive);
+ return 1;
+}
+
+int
+XResetScreenSaver(register Display *dpy)
+{
+ XForceScreenSaver (dpy, ScreenSaverReset);
+ return 1;
+}
+
+int
+XForceScreenSaver(
+ register Display *dpy,
+ int mode)
+{
+ register xForceScreenSaverReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ForceScreenSaver, req);
+ req->mode = mode;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/FetchName.c b/libX11/src/FetchName.c
index 22bd4607a..4363a01cb 100644
--- a/libX11/src/FetchName.c
+++ b/libX11/src/FetchName.c
@@ -1,95 +1,95 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xos.h>
-#include <stdio.h>
-
-
-Status XFetchName (
- register Display *dpy,
- Window w,
- char **name)
-{
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- unsigned char *data = NULL;
- if (XGetWindowProperty(dpy, w, XA_WM_NAME, 0L, (long)BUFSIZ, False, XA_STRING,
- &actual_type,
- &actual_format, &nitems, &leftover, &data) != Success) {
- *name = NULL;
- return (0);
- }
- if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
-
- /* The data returned by XGetWindowProperty is guarranteed to
- contain one extra byte that is null terminated to make retrieveing
- string properties easy. */
-
- *name = (char *)data;
- return(1);
- }
- if (data) Xfree ((char *)data);
- *name = NULL;
- return(0);
-}
-
-Status XGetIconName (
- register Display *dpy,
- Window w,
- char **icon_name)
-{
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- unsigned char *data = NULL;
- if (XGetWindowProperty(dpy, w, XA_WM_ICON_NAME, 0L, (long)BUFSIZ, False,
- XA_STRING,
- &actual_type,
- &actual_format, &nitems, &leftover, &data) != Success) {
- *icon_name = NULL;
- return (0);
- }
- if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
-
- /* The data returned by XGetWindowProperty is guarranteed to
- contain one extra byte that is null terminated to make retrieveing
- string properties easy. */
-
- *icon_name = (char*)data;
- return(1);
- }
- if (data) Xfree ((char *)data);
- *icon_name = NULL;
- return(0);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xos.h>
+#include <stdio.h>
+
+
+Status XFetchName (
+ register Display *dpy,
+ Window w,
+ char **name)
+{
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ unsigned char *data = NULL;
+ if (XGetWindowProperty(dpy, w, XA_WM_NAME, 0L, (long)BUFSIZ, False, XA_STRING,
+ &actual_type,
+ &actual_format, &nitems, &leftover, &data) != Success) {
+ *name = NULL;
+ return (0);
+ }
+ if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
+
+ /* The data returned by XGetWindowProperty is guarranteed to
+ contain one extra byte that is null terminated to make retrieveing
+ string properties easy. */
+
+ *name = (char *)data;
+ return(1);
+ }
+ if (data) Xfree ((char *)data);
+ *name = NULL;
+ return(0);
+}
+
+Status XGetIconName (
+ register Display *dpy,
+ Window w,
+ char **icon_name)
+{
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ unsigned char *data = NULL;
+ if (XGetWindowProperty(dpy, w, XA_WM_ICON_NAME, 0L, (long)BUFSIZ, False,
+ XA_STRING,
+ &actual_type,
+ &actual_format, &nitems, &leftover, &data) != Success) {
+ *icon_name = NULL;
+ return (0);
+ }
+ if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
+
+ /* The data returned by XGetWindowProperty is guarranteed to
+ contain one extra byte that is null terminated to make retrieveing
+ string properties easy. */
+
+ *icon_name = (char*)data;
+ return(1);
+ }
+ if (data) Xfree ((char *)data);
+ *icon_name = NULL;
+ return(0);
+}
diff --git a/libX11/src/FillArc.c b/libX11/src/FillArc.c
index 0f1ad02d1..635b56aa5 100644
--- a/libX11/src/FillArc.c
+++ b/libX11/src/FillArc.c
@@ -1,102 +1,102 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* precompute the maximum size of batching request allowed */
-
-#define size (SIZEOF(xPolyFillArcReq) + FARCSPERBATCH * SIZEOF(xArc))
-
-int
-XFillArc(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y, /* INT16 */
- unsigned int width,
- unsigned int height, /* CARD16 */
- int angle1,
- int angle2) /* INT16 */
-{
- xArc *arc;
-#ifdef MUSTCOPY
- xArc arcdata;
- long len = SIZEOF(xArc);
-
- arc = &arcdata;
-#endif /* MUSTCOPY */
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- {
- register xPolyFillArcReq *req = (xPolyFillArcReq *) dpy->last_req;
-
- /* if same as previous request, with same drawable, batch requests */
- if (
- (req->reqType == X_PolyFillArc)
- && (req->drawable == d)
- && (req->gc == gc->gid)
- && ((dpy->bufptr + SIZEOF(xArc)) <= dpy->bufmax)
- && (((char *)dpy->bufptr - (char *)req) < size) ) {
- req->length += SIZEOF(xArc) >> 2;
-#ifndef MUSTCOPY
- arc = (xArc *) dpy->bufptr;
- dpy->bufptr += SIZEOF(xArc);
-#endif /* not MUSTCOPY */
- }
-
- else {
- GetReqExtra(PolyFillArc, SIZEOF(xArc), req);
-
- req->drawable = d;
- req->gc = gc->gid;
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xArc);
-#else
- arc = (xArc *) NEXTPTR(req,xPolyFillArcReq);
-#endif /* MUSTCOPY */
- }
- arc->x = x;
- arc->y = y;
- arc->width = width;
- arc->height = height;
- arc->angle1 = angle1;
- arc->angle2 = angle2;
-
-#ifdef MUSTCOPY
- Data (dpy, (char *) arc, len);
-#endif /* MUSTCOPY */
-
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* precompute the maximum size of batching request allowed */
+
+#define size (SIZEOF(xPolyFillArcReq) + FARCSPERBATCH * SIZEOF(xArc))
+
+int
+XFillArc(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y, /* INT16 */
+ unsigned int width,
+ unsigned int height, /* CARD16 */
+ int angle1,
+ int angle2) /* INT16 */
+{
+ xArc *arc;
+#ifdef MUSTCOPY
+ xArc arcdata;
+ long len = SIZEOF(xArc);
+
+ arc = &arcdata;
+#endif /* MUSTCOPY */
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ {
+ register xPolyFillArcReq *req = (xPolyFillArcReq *) dpy->last_req;
+
+ /* if same as previous request, with same drawable, batch requests */
+ if (
+ (req->reqType == X_PolyFillArc)
+ && (req->drawable == d)
+ && (req->gc == gc->gid)
+ && ((dpy->bufptr + SIZEOF(xArc)) <= dpy->bufmax)
+ && (((char *)dpy->bufptr - (char *)req) < size) ) {
+ req->length += SIZEOF(xArc) >> 2;
+#ifndef MUSTCOPY
+ arc = (xArc *) dpy->bufptr;
+ dpy->bufptr += SIZEOF(xArc);
+#endif /* not MUSTCOPY */
+ }
+
+ else {
+ GetReqExtra(PolyFillArc, SIZEOF(xArc), req);
+
+ req->drawable = d;
+ req->gc = gc->gid;
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xArc);
+#else
+ arc = (xArc *) NEXTPTR(req,xPolyFillArcReq);
+#endif /* MUSTCOPY */
+ }
+ arc->x = x;
+ arc->y = y;
+ arc->width = width;
+ arc->height = height;
+ arc->angle1 = angle1;
+ arc->angle2 = angle2;
+
+#ifdef MUSTCOPY
+ Data (dpy, (char *) arc, len);
+#endif /* MUSTCOPY */
+
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/FillArcs.c b/libX11/src/FillArcs.c
index 62cfabf8f..841f9ba83 100644
--- a/libX11/src/FillArcs.c
+++ b/libX11/src/FillArcs.c
@@ -1,67 +1,67 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define arc_scale (SIZEOF(xArc) / 4)
-
-int
-XFillArcs(
- register Display *dpy,
- Drawable d,
- GC gc,
- XArc *arcs,
- int n_arcs)
-{
- register xPolyFillArcReq *req;
- long len;
- int n;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- while (n_arcs) {
- GetReq(PolyFillArc, req);
- req->drawable = d;
- req->gc = gc->gid;
- n = n_arcs;
- len = ((long)n) * arc_scale;
- if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
- n = (dpy->max_request_size - req->length) / arc_scale;
- len = ((long)n) * arc_scale;
- }
- SetReqLen(req, len, len);
- len <<= 2; /* watch out for macros... */
- Data16 (dpy, (short *) arcs, len);
- n_arcs -= n;
- arcs += n;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define arc_scale (SIZEOF(xArc) / 4)
+
+int
+XFillArcs(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XArc *arcs,
+ int n_arcs)
+{
+ register xPolyFillArcReq *req;
+ long len;
+ int n;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ while (n_arcs) {
+ GetReq(PolyFillArc, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ n = n_arcs;
+ len = ((long)n) * arc_scale;
+ if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
+ n = (dpy->max_request_size - req->length) / arc_scale;
+ len = ((long)n) * arc_scale;
+ }
+ SetReqLen(req, len, len);
+ len <<= 2; /* watch out for macros... */
+ Data16 (dpy, (short *) arcs, len);
+ n_arcs -= n;
+ arcs += n;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/FillPoly.c b/libX11/src/FillPoly.c
index ea162a41e..6468ea1ed 100644
--- a/libX11/src/FillPoly.c
+++ b/libX11/src/FillPoly.c
@@ -1,64 +1,64 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFillPolygon(
- register Display *dpy,
- Drawable d,
- GC gc,
- XPoint *points,
- int n_points,
- int shape,
- int mode)
-{
- register xFillPolyReq *req;
- register long nbytes;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq(FillPoly, req);
-
- req->drawable = d;
- req->gc = gc->gid;
- req->shape = shape;
- req->coordMode = mode;
-
- SetReqLen(req, n_points, 65535 - req->length);
-
- /* shift (mult. by 4) before passing to the (possible) macro */
-
- nbytes = n_points << 2;
-
- Data16 (dpy, (short *) points, nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFillPolygon(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XPoint *points,
+ int n_points,
+ int shape,
+ int mode)
+{
+ register xFillPolyReq *req;
+ register long nbytes;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq(FillPoly, req);
+
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->shape = shape;
+ req->coordMode = mode;
+
+ SetReqLen(req, n_points, 65535 - req->length);
+
+ /* shift (mult. by 4) before passing to the (possible) macro */
+
+ nbytes = n_points << 2;
+
+ Data16 (dpy, (short *) points, nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/FillRct.c b/libX11/src/FillRct.c
index 4cd104cb1..957f55a04 100644
--- a/libX11/src/FillRct.c
+++ b/libX11/src/FillRct.c
@@ -1,97 +1,97 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* precompute the maximum size of batching request allowed */
-
-#define size (SIZEOF(xPolyFillRectangleReq) + FRCTSPERBATCH * SIZEOF(xRectangle))
-
-int
-XFillRectangle(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y, /* INT16 */
- unsigned int width,
- unsigned int height) /* CARD16 */
-{
- xRectangle *rect;
-#ifdef MUSTCOPY
- xRectangle rectdata;
- long len = SIZEOF(xRectangle);
-
- rect = &rectdata;
-#endif /* MUSTCOPY */
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- {
- register xPolyFillRectangleReq *req
- = (xPolyFillRectangleReq *) dpy->last_req;
-
- /* if same as previous request, with same drawable, batch requests */
- if (
- (req->reqType == X_PolyFillRectangle)
- && (req->drawable == d)
- && (req->gc == gc->gid)
- && ((dpy->bufptr + SIZEOF(xRectangle)) <= dpy->bufmax)
- && (((char *)dpy->bufptr - (char *)req) < size) ) {
- req->length += SIZEOF(xRectangle) >> 2;
-#ifndef MUSTCOPY
- rect = (xRectangle *) dpy->bufptr;
- dpy->bufptr += SIZEOF(xRectangle);
-#endif /* not MUSTCOPY */
- }
-
- else {
- GetReqExtra(PolyFillRectangle, SIZEOF(xRectangle), req);
- req->drawable = d;
- req->gc = gc->gid;
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xRectangle);
-#else
- rect = (xRectangle *) NEXTPTR(req,xPolyFillRectangleReq);
-#endif /* MUSTCOPY */
- }
- rect->x = x;
- rect->y = y;
- rect->width = width;
- rect->height = height;
-
-#ifdef MUSTCOPY
- Data (dpy, (char *) rect, len);
-#endif /* MUSTCOPY */
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* precompute the maximum size of batching request allowed */
+
+#define size (SIZEOF(xPolyFillRectangleReq) + FRCTSPERBATCH * SIZEOF(xRectangle))
+
+int
+XFillRectangle(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y, /* INT16 */
+ unsigned int width,
+ unsigned int height) /* CARD16 */
+{
+ xRectangle *rect;
+#ifdef MUSTCOPY
+ xRectangle rectdata;
+ long len = SIZEOF(xRectangle);
+
+ rect = &rectdata;
+#endif /* MUSTCOPY */
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ {
+ register xPolyFillRectangleReq *req
+ = (xPolyFillRectangleReq *) dpy->last_req;
+
+ /* if same as previous request, with same drawable, batch requests */
+ if (
+ (req->reqType == X_PolyFillRectangle)
+ && (req->drawable == d)
+ && (req->gc == gc->gid)
+ && ((dpy->bufptr + SIZEOF(xRectangle)) <= dpy->bufmax)
+ && (((char *)dpy->bufptr - (char *)req) < size) ) {
+ req->length += SIZEOF(xRectangle) >> 2;
+#ifndef MUSTCOPY
+ rect = (xRectangle *) dpy->bufptr;
+ dpy->bufptr += SIZEOF(xRectangle);
+#endif /* not MUSTCOPY */
+ }
+
+ else {
+ GetReqExtra(PolyFillRectangle, SIZEOF(xRectangle), req);
+ req->drawable = d;
+ req->gc = gc->gid;
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xRectangle);
+#else
+ rect = (xRectangle *) NEXTPTR(req,xPolyFillRectangleReq);
+#endif /* MUSTCOPY */
+ }
+ rect->x = x;
+ rect->y = y;
+ rect->width = width;
+ rect->height = height;
+
+#ifdef MUSTCOPY
+ Data (dpy, (char *) rect, len);
+#endif /* MUSTCOPY */
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/FillRcts.c b/libX11/src/FillRcts.c
index ad334244f..0ce18f817 100644
--- a/libX11/src/FillRcts.c
+++ b/libX11/src/FillRcts.c
@@ -1,66 +1,66 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFillRectangles(
- register Display *dpy,
- Drawable d,
- GC gc,
- XRectangle *rectangles,
- int n_rects)
-{
- register xPolyFillRectangleReq *req;
- long len;
- int n;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- while (n_rects) {
- GetReq(PolyFillRectangle, req);
- req->drawable = d;
- req->gc = gc->gid;
- n = n_rects;
- len = ((long)n) << 1;
- if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
- n = (dpy->max_request_size - req->length) >> 1;
- len = ((long)n) << 1;
- }
- SetReqLen(req, len, len);
- len <<= 2; /* watch out for macros... */
- Data16 (dpy, (short *) rectangles, len);
- n_rects -= n;
- rectangles += n;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFillRectangles(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XRectangle *rectangles,
+ int n_rects)
+{
+ register xPolyFillRectangleReq *req;
+ long len;
+ int n;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ while (n_rects) {
+ GetReq(PolyFillRectangle, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ n = n_rects;
+ len = ((long)n) << 1;
+ if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
+ n = (dpy->max_request_size - req->length) >> 1;
+ len = ((long)n) << 1;
+ }
+ SetReqLen(req, len, len);
+ len <<= 2; /* watch out for macros... */
+ Data16 (dpy, (short *) rectangles, len);
+ n_rects -= n;
+ rectangles += n;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Flush.c b/libX11/src/Flush.c
index 46168999b..d0be0b922 100644
--- a/libX11/src/Flush.c
+++ b/libX11/src/Flush.c
@@ -1,42 +1,42 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* Flush all buffered output requests. */
-/* NOTE: NOT necessary when calling any of the Xlib routines. */
-
-int
-XFlush (register Display *dpy)
-{
- LockDisplay(dpy);
- _XFlush (dpy);
- UnlockDisplay(dpy);
- return 1;
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* Flush all buffered output requests. */
+/* NOTE: NOT necessary when calling any of the Xlib routines. */
+
+int
+XFlush (register Display *dpy)
+{
+ LockDisplay(dpy);
+ _XFlush (dpy);
+ UnlockDisplay(dpy);
+ return 1;
+ }
diff --git a/libX11/src/FreeCmap.c b/libX11/src/FreeCmap.c
index e2b76fa6f..f68f5f449 100644
--- a/libX11/src/FreeCmap.c
+++ b/libX11/src/FreeCmap.c
@@ -1,52 +1,52 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlib.h"
-#include "Xlibint.h"
-#include "Cmap.h"
-
-int
-XFreeColormap(
- register Display *dpy,
- Colormap cmap)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(FreeColormap, cmap, req);
-
- UnlockDisplay(dpy);
- SyncHandle();
-
-#ifdef XCMS
- _XcmsDeleteCmapRec(dpy, cmap);
-#endif
-
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlib.h"
+#include "Xlibint.h"
+#include "Cmap.h"
+
+int
+XFreeColormap(
+ register Display *dpy,
+ Colormap cmap)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(FreeColormap, cmap, req);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+#ifdef XCMS
+ _XcmsDeleteCmapRec(dpy, cmap);
+#endif
+
+ return 1;
+}
diff --git a/libX11/src/FreeCols.c b/libX11/src/FreeCols.c
index a8b7f8867..c8ce982ed 100644
--- a/libX11/src/FreeCols.c
+++ b/libX11/src/FreeCols.c
@@ -1,57 +1,57 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFreeColors(
- register Display *dpy,
- Colormap cmap,
- unsigned long *pixels, /* LISTofCARD32 */
- int npixels,
- unsigned long planes) /* CARD32 */
-{
- register xFreeColorsReq *req;
- register long nbytes;
-
- LockDisplay(dpy);
- GetReq(FreeColors, req);
- req->cmap = cmap;
- req->planeMask = planes;
-
- /* on the VAX, each pixel is a 32-bit (unsigned) integer */
- req->length += npixels;
-
- nbytes = npixels << 2; /* watch out for macros... */
- Data32 (dpy, (long *) pixels, nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFreeColors(
+ register Display *dpy,
+ Colormap cmap,
+ unsigned long *pixels, /* LISTofCARD32 */
+ int npixels,
+ unsigned long planes) /* CARD32 */
+{
+ register xFreeColorsReq *req;
+ register long nbytes;
+
+ LockDisplay(dpy);
+ GetReq(FreeColors, req);
+ req->cmap = cmap;
+ req->planeMask = planes;
+
+ /* on the VAX, each pixel is a 32-bit (unsigned) integer */
+ req->length += npixels;
+
+ nbytes = npixels << 2; /* watch out for macros... */
+ Data32 (dpy, (long *) pixels, nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/FreeCurs.c b/libX11/src/FreeCurs.c
index 89fb577cc..c957456b0 100644
--- a/libX11/src/FreeCurs.c
+++ b/libX11/src/FreeCurs.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFreeCursor(
- register Display *dpy,
- Cursor cursor)
-{
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(FreeCursor, cursor, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFreeCursor(
+ register Display *dpy,
+ Cursor cursor)
+{
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(FreeCursor, cursor, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/FreeEData.c b/libX11/src/FreeEData.c
index 3a7abca74..d4d8acdb1 100644
--- a/libX11/src/FreeEData.c
+++ b/libX11/src/FreeEData.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-_XFreeExtData (XExtData *extension)
-{
- XExtData *temp;
- while (extension) {
- if (extension->free_private)
- (*extension->free_private)(extension);
- else Xfree ((char *)extension->private_data);
- temp = extension->next;
- Xfree ((char *)extension);
- extension = temp;
- }
- return 0;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+_XFreeExtData (XExtData *extension)
+{
+ XExtData *temp;
+ while (extension) {
+ if (extension->free_private)
+ (*extension->free_private)(extension);
+ else Xfree ((char *)extension->private_data);
+ temp = extension->next;
+ Xfree ((char *)extension);
+ extension = temp;
+ }
+ return 0;
+}
diff --git a/libX11/src/FreeEventData.c b/libX11/src/FreeEventData.c
index e2d40b0db..ddf6c71b6 100644
--- a/libX11/src/FreeEventData.c
+++ b/libX11/src/FreeEventData.c
@@ -1,42 +1,42 @@
-/*
- * Copyright © 2009 Red Hat, Inc.
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-void
-XFreeEventData(Display *dpy, XGenericEventCookie *event)
-{
-
- if (_XIsEventCookie(dpy, (XEvent*)event) && event->data)
- {
- XFree(event->data);
- event->data = NULL;
- event->cookie = 0;
- }
- return;
-}
-
+/*
+ * Copyright © 2009 Red Hat, Inc.
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+void
+XFreeEventData(Display *dpy, XGenericEventCookie *event)
+{
+
+ if (_XIsEventCookie(dpy, (XEvent*)event) && event->data)
+ {
+ XFree(event->data);
+ event->data = NULL;
+ event->cookie = 0;
+ }
+ return;
+}
+
diff --git a/libX11/src/FreeGC.c b/libX11/src/FreeGC.c
index ab994bc64..af902b552 100644
--- a/libX11/src/FreeGC.c
+++ b/libX11/src/FreeGC.c
@@ -1,50 +1,50 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFreeGC (
- register Display *dpy,
- GC gc)
- {
- register xResourceReq *req;
- register _XExtension *ext;
- LockDisplay(dpy);
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next)
- if (ext->free_GC) (*ext->free_GC)(dpy, gc, &ext->codes);
- GetResReq (FreeGC, gc->gid, req);
- UnlockDisplay(dpy);
- SyncHandle();
- _XFreeExtData(gc->ext_data);
- Xfree ((char *) gc);
- return 1;
- }
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFreeGC (
+ register Display *dpy,
+ GC gc)
+ {
+ register xResourceReq *req;
+ register _XExtension *ext;
+ LockDisplay(dpy);
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next)
+ if (ext->free_GC) (*ext->free_GC)(dpy, gc, &ext->codes);
+ GetResReq (FreeGC, gc->gid, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ _XFreeExtData(gc->ext_data);
+ Xfree ((char *) gc);
+ return 1;
+ }
+
diff --git a/libX11/src/FreePix.c b/libX11/src/FreePix.c
index 21367978e..e16c162e5 100644
--- a/libX11/src/FreePix.c
+++ b/libX11/src/FreePix.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFreePixmap(
- register Display *dpy,
- Pixmap pixmap)
-{
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(FreePixmap, pixmap, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFreePixmap(
+ register Display *dpy,
+ Pixmap pixmap)
+{
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(FreePixmap, pixmap, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/GCMisc.c b/libX11/src/GCMisc.c
index 751e27dca..26f894817 100644
--- a/libX11/src/GCMisc.c
+++ b/libX11/src/GCMisc.c
@@ -1,110 +1,110 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetArcMode (
- register Display *dpy,
- register GC gc,
- int arc_mode)
-{
- LockDisplay(dpy);
- if (gc->values.arc_mode != arc_mode) {
- gc->values.arc_mode = arc_mode;
- gc->dirty |= GCArcMode;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XSetFillRule (
- register Display *dpy,
- register GC gc,
- int fill_rule)
-{
- LockDisplay(dpy);
- if (gc->values.fill_rule != fill_rule) {
- gc->values.fill_rule = fill_rule;
- gc->dirty |= GCFillRule;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XSetFillStyle (
- register Display *dpy,
- register GC gc,
- int fill_style)
-{
- LockDisplay(dpy);
- if (gc->values.fill_style != fill_style) {
- gc->values.fill_style = fill_style;
- gc->dirty |= GCFillStyle;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XSetGraphicsExposures (
- register Display *dpy,
- register GC gc,
- Bool graphics_exposures)
-{
- LockDisplay(dpy);
- if (gc->values.graphics_exposures != graphics_exposures) {
- gc->values.graphics_exposures = graphics_exposures;
- gc->dirty |= GCGraphicsExposures;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XSetSubwindowMode (
- register Display *dpy,
- register GC gc,
- int subwindow_mode)
-{
- LockDisplay(dpy);
- if (gc->values.subwindow_mode != subwindow_mode) {
- gc->values.subwindow_mode = subwindow_mode;
- gc->dirty |= GCSubwindowMode;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetArcMode (
+ register Display *dpy,
+ register GC gc,
+ int arc_mode)
+{
+ LockDisplay(dpy);
+ if (gc->values.arc_mode != arc_mode) {
+ gc->values.arc_mode = arc_mode;
+ gc->dirty |= GCArcMode;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XSetFillRule (
+ register Display *dpy,
+ register GC gc,
+ int fill_rule)
+{
+ LockDisplay(dpy);
+ if (gc->values.fill_rule != fill_rule) {
+ gc->values.fill_rule = fill_rule;
+ gc->dirty |= GCFillRule;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XSetFillStyle (
+ register Display *dpy,
+ register GC gc,
+ int fill_style)
+{
+ LockDisplay(dpy);
+ if (gc->values.fill_style != fill_style) {
+ gc->values.fill_style = fill_style;
+ gc->dirty |= GCFillStyle;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XSetGraphicsExposures (
+ register Display *dpy,
+ register GC gc,
+ Bool graphics_exposures)
+{
+ LockDisplay(dpy);
+ if (gc->values.graphics_exposures != graphics_exposures) {
+ gc->values.graphics_exposures = graphics_exposures;
+ gc->dirty |= GCGraphicsExposures;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XSetSubwindowMode (
+ register Display *dpy,
+ register GC gc,
+ int subwindow_mode)
+{
+ LockDisplay(dpy);
+ if (gc->values.subwindow_mode != subwindow_mode) {
+ gc->values.subwindow_mode = subwindow_mode;
+ gc->dirty |= GCSubwindowMode;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/Geom.c b/libX11/src/Geom.c
index 1da74f1c3..2313eebe0 100644
--- a/libX11/src/Geom.c
+++ b/libX11/src/Geom.c
@@ -1,89 +1,89 @@
-
-/*
-
-Copyright 1985, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-
-/*
- * This routine given a user supplied positional argument and a default
- * argument (fully qualified) will return the position the window should take
- * returns 0 if there was some problem, else the position bitmask.
- */
-
-int
-XGeometry (
- Display *dpy, /* user's display connection */
- int screen, /* screen on which to do computation */
- _Xconst char *pos, /* user provided geometry spec */
- _Xconst char *def, /* default geometry spec for window */
- unsigned int bwidth, /* border width */
- unsigned int fwidth, /* size of position units */
- unsigned int fheight,
- int xadd, /* any additional interior space */
- int yadd,
- register int *x, /* always set on successful RETURN */
- register int *y, /* always set on successful RETURN */
- register int *width, /* always set on successful RETURN */
- register int *height) /* always set on successful RETURN */
-{
- int px, py; /* returned values from parse */
- unsigned int pwidth, pheight; /* returned values from parse */
- int dx, dy; /* default values from parse */
- unsigned int dwidth, dheight; /* default values from parse */
- int pmask, dmask; /* values back from parse */
-
- pmask = XParseGeometry(pos, &px, &py, &pwidth, &pheight);
- dmask = XParseGeometry(def, &dx, &dy, &dwidth, &dheight);
-
- /* set default values */
- *x = (dmask & XNegative) ?
- DisplayWidth(dpy, screen) + dx - dwidth * fwidth -
- 2 * bwidth - xadd : dx;
- *y = (dmask & YNegative) ?
- DisplayHeight(dpy, screen) + dy - dheight * fheight -
- 2 * bwidth - yadd : dy;
- *width = dwidth;
- *height = dheight;
-
- if (pmask & WidthValue) *width = pwidth;
- if (pmask & HeightValue) *height = pheight;
-
- if (pmask & XValue)
- *x = (pmask & XNegative) ?
- DisplayWidth(dpy, screen) + px - *width * fwidth -
- 2 * bwidth - xadd : px;
- if (pmask & YValue)
- *y = (pmask & YNegative) ?
- DisplayHeight(dpy, screen) + py - *height * fheight -
- 2 * bwidth - yadd : py;
- return (pmask);
-}
+
+/*
+
+Copyright 1985, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+
+/*
+ * This routine given a user supplied positional argument and a default
+ * argument (fully qualified) will return the position the window should take
+ * returns 0 if there was some problem, else the position bitmask.
+ */
+
+int
+XGeometry (
+ Display *dpy, /* user's display connection */
+ int screen, /* screen on which to do computation */
+ _Xconst char *pos, /* user provided geometry spec */
+ _Xconst char *def, /* default geometry spec for window */
+ unsigned int bwidth, /* border width */
+ unsigned int fwidth, /* size of position units */
+ unsigned int fheight,
+ int xadd, /* any additional interior space */
+ int yadd,
+ register int *x, /* always set on successful RETURN */
+ register int *y, /* always set on successful RETURN */
+ register int *width, /* always set on successful RETURN */
+ register int *height) /* always set on successful RETURN */
+{
+ int px, py; /* returned values from parse */
+ unsigned int pwidth, pheight; /* returned values from parse */
+ int dx, dy; /* default values from parse */
+ unsigned int dwidth, dheight; /* default values from parse */
+ int pmask, dmask; /* values back from parse */
+
+ pmask = XParseGeometry(pos, &px, &py, &pwidth, &pheight);
+ dmask = XParseGeometry(def, &dx, &dy, &dwidth, &dheight);
+
+ /* set default values */
+ *x = (dmask & XNegative) ?
+ DisplayWidth(dpy, screen) + dx - dwidth * fwidth -
+ 2 * bwidth - xadd : dx;
+ *y = (dmask & YNegative) ?
+ DisplayHeight(dpy, screen) + dy - dheight * fheight -
+ 2 * bwidth - yadd : dy;
+ *width = dwidth;
+ *height = dheight;
+
+ if (pmask & WidthValue) *width = pwidth;
+ if (pmask & HeightValue) *height = pheight;
+
+ if (pmask & XValue)
+ *x = (pmask & XNegative) ?
+ DisplayWidth(dpy, screen) + px - *width * fwidth -
+ 2 * bwidth - xadd : px;
+ if (pmask & YValue)
+ *y = (pmask & YNegative) ?
+ DisplayHeight(dpy, screen) + py - *height * fheight -
+ 2 * bwidth - yadd : py;
+ return (pmask);
+}
diff --git a/libX11/src/GetDflt.c b/libX11/src/GetDflt.c
index 0443e2d1a..584f32c54 100644
--- a/libX11/src/GetDflt.c
+++ b/libX11/src/GetDflt.c
@@ -1,265 +1,265 @@
-
-/***********************************************************
-
-Copyright 1987, 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987, 1988 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xos.h>
-#include <X11/Xresource.h>
-
-#ifndef X_NOT_POSIX
-#ifdef _POSIX_SOURCE
-#include <limits.h>
-#else
-#define _POSIX_SOURCE
-#include <limits.h>
-#undef _POSIX_SOURCE
-#endif
-#endif
-#ifndef PATH_MAX
-#ifdef WIN32
-#define PATH_MAX 512
-#else
-#include <sys/param.h>
-#endif
-#ifndef PATH_MAX
-#ifdef MAXPATHLEN
-#define PATH_MAX MAXPATHLEN
-#else
-#define PATH_MAX 1024
-#endif
-#endif
-#endif
-
-#ifdef XTHREADS
-#include <X11/Xthreads.h>
-#endif
-#ifndef WIN32
-#define X_INCLUDE_PWD_H
-#define XOS_USE_XLIB_LOCKING
-#include <X11/Xos_r.h>
-#endif
-#include <stdio.h>
-#include <ctype.h>
-
-
-/*ARGSUSED*/
-static char *
-GetHomeDir(
- char *dest,
- int len)
-{
-#ifdef WIN32
- register char *ptr1 = NULL;
- register char *ptr2 = NULL;
- int len1 = 0, len2 = 0;
-
- if ((ptr1 = getenv("HOME"))) { /* old, deprecated */
- len1 = strlen (ptr1);
- } else if ((ptr1 = getenv("HOMEDRIVE")) && (ptr2 = getenv("HOMEDIR"))) {
- len1 = strlen (ptr1);
- len2 = strlen (ptr2);
- } else if ((ptr2 = getenv("USERNAME"))) {
- len1 = strlen (ptr1 = "/users/");
- len2 = strlen (ptr2);
- }
- if ((len1 + len2 + 1) < len)
- sprintf (dest, "%s%s", ptr1, (ptr2) ? ptr2 : "");
- else
- *dest = '\0';
-#else
-#ifdef X_NEEDS_PWPARAMS
- _Xgetpwparams pwparams;
-#endif
- struct passwd *pw;
- register char *ptr;
-
- if (len <= 0 || dest == NULL)
- return NULL;
-
- if ((ptr = getenv("HOME"))) {
- (void) strncpy(dest, ptr, len-1);
- dest[len-1] = '\0';
- } else {
- if ((ptr = getenv("USER")))
- pw = _XGetpwnam(ptr,pwparams);
- else
- pw = _XGetpwuid(getuid(),pwparams);
- if (pw != NULL) {
- (void) strncpy(dest, pw->pw_dir, len-1);
- dest[len-1] = '\0';
- } else
- *dest = '\0';
- }
-#endif
- return dest;
-}
-
-
-static XrmDatabase
-InitDefaults(
- Display *dpy) /* display for defaults.... */
-{
- XrmDatabase userdb;
- XrmDatabase xdb;
- char fname[PATH_MAX]; /* longer than any conceivable size */
- char *xenv;
-
- XrmInitialize();
-
- /*
- * See lib/Xt/Initialize.c
- *
- * First, get the defaults from the server; if none, then load from
- * ~/.Xdefaults. Next, if there is an XENVIRONMENT environment variable,
- * then load that file.
- */
-
- if (dpy->xdefaults == NULL) {
- #ifdef _MSC_VER
- const char *slashDotXdefaults = ".Xdefaults";
- #else
- const char *slashDotXdefaults = "/.Xdefaults";
- #endif
-
- (void) GetHomeDir (fname, PATH_MAX - strlen (slashDotXdefaults) - 1);
- (void) strcat (fname, slashDotXdefaults);
- xdb = XrmGetFileDatabase (fname);
- } else {
- xdb = XrmGetStringDatabase(dpy->xdefaults);
- }
-
- if (!(xenv = getenv ("XENVIRONMENT"))) {
- #ifdef _MSC_VER
- const char *slashDotXdefaultsDash = ".Xdefaults-";
- #else
- const char *slashDotXdefaultsDash = "/.Xdefaults-";
- #endif
- int len;
-
- (void) GetHomeDir (fname, PATH_MAX - strlen (slashDotXdefaultsDash) - 1);
- (void) strcat (fname, slashDotXdefaultsDash);
- len = strlen (fname);
- (void) _XGetHostname (fname+len, PATH_MAX-len);
- xenv = fname;
- }
- userdb = XrmGetFileDatabase (xenv);
- XrmMergeDatabases (userdb, &xdb);
- return (xdb);
-
-#ifdef old
- if (fname[0] != '\0') userdb = XrmGetFileDatabase(fname);
- xdb = XrmGetStringDatabase(dpy->xdefaults);
- XrmMergeDatabases(userdb, &xdb);
- return xdb;
-#endif
-}
-
-char *
-XGetDefault(
- Display *dpy, /* display for defaults.... */
- char _Xconst *prog, /* name of program for option */
- register _Xconst char *name) /* name of option program wants */
-{ /* to get, for example, "font" */
- XrmName names[3];
- XrmClass classes[3];
- XrmRepresentation fromType;
- XrmValue result;
- char *progname;
-#ifdef WIN32
- char *progname2;
-#endif
-#ifdef __UNIXOS2__
- char *progname2;
- char *dotpos;
-#endif
-
- /*
- * strip path off of program name (XXX - this is OS specific)
- */
- progname = strrchr (prog, '/');
-#ifdef WIN32
- progname2 = strrchr (prog, '\\');
- if (progname2 && (!progname || progname < progname2))
- progname = progname2;
-#endif
-#ifdef __UNIXOS2__ /* Very similar to WIN32 */
- progname2 = strrchr (prog, '\\');
- if (progname2 && (!progname || progname < progname2))
- progname = progname2;
- dotpos = strrchr (prog, '.');
- if (dotpos && (dotpos>progname2)) *dotpos='\0';
-#endif /* We take out the .exe suffix */
-
- if (progname)
- progname++;
- else
- progname = (char *)prog;
-
- /*
- * see if database has ever been initialized. Lookups can be done
- * without locks held.
- */
- LockDisplay(dpy);
- if (dpy->db == NULL) {
- dpy->db = InitDefaults(dpy);
- dpy->flags |= XlibDisplayDfltRMDB;
- }
- UnlockDisplay(dpy);
-
- names[0] = XrmStringToName(progname);
- names[1] = XrmStringToName(name);
- names[2] = NULLQUARK;
- classes[0] = XrmStringToClass("Program");
- classes[1] = XrmStringToClass("Name");
- classes[2] = NULLQUARK;
- (void)XrmQGetResource(dpy->db, names, classes, &fromType, &result);
- return (result.addr);
-}
-
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987, 1988 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xos.h>
+#include <X11/Xresource.h>
+
+#ifndef X_NOT_POSIX
+#ifdef _POSIX_SOURCE
+#include <limits.h>
+#else
+#define _POSIX_SOURCE
+#include <limits.h>
+#undef _POSIX_SOURCE
+#endif
+#endif
+#ifndef PATH_MAX
+#ifdef WIN32
+#define PATH_MAX 512
+#else
+#include <sys/param.h>
+#endif
+#ifndef PATH_MAX
+#ifdef MAXPATHLEN
+#define PATH_MAX MAXPATHLEN
+#else
+#define PATH_MAX 1024
+#endif
+#endif
+#endif
+
+#ifdef XTHREADS
+#include <X11/Xthreads.h>
+#endif
+#ifndef WIN32
+#define X_INCLUDE_PWD_H
+#define XOS_USE_XLIB_LOCKING
+#include <X11/Xos_r.h>
+#endif
+#include <stdio.h>
+#include <ctype.h>
+
+
+/*ARGSUSED*/
+static char *
+GetHomeDir(
+ char *dest,
+ int len)
+{
+#ifdef WIN32
+ register char *ptr1 = NULL;
+ register char *ptr2 = NULL;
+ int len1 = 0, len2 = 0;
+
+ if ((ptr1 = getenv("HOME"))) { /* old, deprecated */
+ len1 = strlen (ptr1);
+ } else if ((ptr1 = getenv("HOMEDRIVE")) && (ptr2 = getenv("HOMEDIR"))) {
+ len1 = strlen (ptr1);
+ len2 = strlen (ptr2);
+ } else if ((ptr2 = getenv("USERNAME"))) {
+ len1 = strlen (ptr1 = "/users/");
+ len2 = strlen (ptr2);
+ }
+ if ((len1 + len2 + 1) < len)
+ sprintf (dest, "%s%s", ptr1, (ptr2) ? ptr2 : "");
+ else
+ *dest = '\0';
+#else
+#ifdef X_NEEDS_PWPARAMS
+ _Xgetpwparams pwparams;
+#endif
+ struct passwd *pw;
+ register char *ptr;
+
+ if (len <= 0 || dest == NULL)
+ return NULL;
+
+ if ((ptr = getenv("HOME"))) {
+ (void) strncpy(dest, ptr, len-1);
+ dest[len-1] = '\0';
+ } else {
+ if ((ptr = getenv("USER")))
+ pw = _XGetpwnam(ptr,pwparams);
+ else
+ pw = _XGetpwuid(getuid(),pwparams);
+ if (pw != NULL) {
+ (void) strncpy(dest, pw->pw_dir, len-1);
+ dest[len-1] = '\0';
+ } else
+ *dest = '\0';
+ }
+#endif
+ return dest;
+}
+
+
+static XrmDatabase
+InitDefaults(
+ Display *dpy) /* display for defaults.... */
+{
+ XrmDatabase userdb;
+ XrmDatabase xdb;
+ char fname[PATH_MAX]; /* longer than any conceivable size */
+ char *xenv;
+
+ XrmInitialize();
+
+ /*
+ * See lib/Xt/Initialize.c
+ *
+ * First, get the defaults from the server; if none, then load from
+ * ~/.Xdefaults. Next, if there is an XENVIRONMENT environment variable,
+ * then load that file.
+ */
+
+ if (dpy->xdefaults == NULL) {
+ #ifdef _MSC_VER
+ const char *slashDotXdefaults = ".Xdefaults";
+ #else
+ const char *slashDotXdefaults = "/.Xdefaults";
+ #endif
+
+ (void) GetHomeDir (fname, PATH_MAX - strlen (slashDotXdefaults) - 1);
+ (void) strcat (fname, slashDotXdefaults);
+ xdb = XrmGetFileDatabase (fname);
+ } else {
+ xdb = XrmGetStringDatabase(dpy->xdefaults);
+ }
+
+ if (!(xenv = getenv ("XENVIRONMENT"))) {
+ #ifdef _MSC_VER
+ const char *slashDotXdefaultsDash = ".Xdefaults-";
+ #else
+ const char *slashDotXdefaultsDash = "/.Xdefaults-";
+ #endif
+ int len;
+
+ (void) GetHomeDir (fname, PATH_MAX - strlen (slashDotXdefaultsDash) - 1);
+ (void) strcat (fname, slashDotXdefaultsDash);
+ len = strlen (fname);
+ (void) _XGetHostname (fname+len, PATH_MAX-len);
+ xenv = fname;
+ }
+ userdb = XrmGetFileDatabase (xenv);
+ XrmMergeDatabases (userdb, &xdb);
+ return (xdb);
+
+#ifdef old
+ if (fname[0] != '\0') userdb = XrmGetFileDatabase(fname);
+ xdb = XrmGetStringDatabase(dpy->xdefaults);
+ XrmMergeDatabases(userdb, &xdb);
+ return xdb;
+#endif
+}
+
+char *
+XGetDefault(
+ Display *dpy, /* display for defaults.... */
+ char _Xconst *prog, /* name of program for option */
+ register _Xconst char *name) /* name of option program wants */
+{ /* to get, for example, "font" */
+ XrmName names[3];
+ XrmClass classes[3];
+ XrmRepresentation fromType;
+ XrmValue result;
+ char *progname;
+#ifdef WIN32
+ char *progname2;
+#endif
+#ifdef __UNIXOS2__
+ char *progname2;
+ char *dotpos;
+#endif
+
+ /*
+ * strip path off of program name (XXX - this is OS specific)
+ */
+ progname = strrchr (prog, '/');
+#ifdef WIN32
+ progname2 = strrchr (prog, '\\');
+ if (progname2 && (!progname || progname < progname2))
+ progname = progname2;
+#endif
+#ifdef __UNIXOS2__ /* Very similar to WIN32 */
+ progname2 = strrchr (prog, '\\');
+ if (progname2 && (!progname || progname < progname2))
+ progname = progname2;
+ dotpos = strrchr (prog, '.');
+ if (dotpos && (dotpos>progname2)) *dotpos='\0';
+#endif /* We take out the .exe suffix */
+
+ if (progname)
+ progname++;
+ else
+ progname = (char *)prog;
+
+ /*
+ * see if database has ever been initialized. Lookups can be done
+ * without locks held.
+ */
+ LockDisplay(dpy);
+ if (dpy->db == NULL) {
+ dpy->db = InitDefaults(dpy);
+ dpy->flags |= XlibDisplayDfltRMDB;
+ }
+ UnlockDisplay(dpy);
+
+ names[0] = XrmStringToName(progname);
+ names[1] = XrmStringToName(name);
+ names[2] = NULLQUARK;
+ classes[0] = XrmStringToClass("Program");
+ classes[1] = XrmStringToClass("Name");
+ classes[2] = NULLQUARK;
+ (void)XrmQGetResource(dpy->db, names, classes, &fromType, &result);
+ return (result.addr);
+}
+
diff --git a/libX11/src/GetEventData.c b/libX11/src/GetEventData.c
index b93dee6cd..7ead6cae2 100644
--- a/libX11/src/GetEventData.c
+++ b/libX11/src/GetEventData.c
@@ -1,42 +1,42 @@
-/*
- * Copyright © 2009 Red Hat, Inc.
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Bool
-XGetEventData(Display *dpy, XGenericEventCookie *event)
-{
- Bool rc;
- LockDisplay(dpy);
-
- rc = _XFetchEventCookie(dpy, event);
-
- UnlockDisplay(dpy);
-
- return rc;
-}
-
+/*
+ * Copyright © 2009 Red Hat, Inc.
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Bool
+XGetEventData(Display *dpy, XGenericEventCookie *event)
+{
+ Bool rc;
+ LockDisplay(dpy);
+
+ rc = _XFetchEventCookie(dpy, event);
+
+ UnlockDisplay(dpy);
+
+ return rc;
+}
+
diff --git a/libX11/src/GetFProp.c b/libX11/src/GetFProp.c
index 27ec98b72..5ccefe5e3 100644
--- a/libX11/src/GetFProp.c
+++ b/libX11/src/GetFProp.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Bool XGetFontProperty (
- XFontStruct *fs,
- register Atom name,
- unsigned long *valuePtr)
-{
- /* XXX this is a simple linear search for now. If the
- protocol is changed to sort the property list, this should
- become a binary search. */
- register XFontProp *prop = fs->properties;
- register XFontProp *last = prop + fs->n_properties;
- while (prop != last) {
- if (prop->name == name) {
- *valuePtr = prop->card32;
- return (1);
- }
- prop++;
- }
- return (0);
- }
-
-
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Bool XGetFontProperty (
+ XFontStruct *fs,
+ register Atom name,
+ unsigned long *valuePtr)
+{
+ /* XXX this is a simple linear search for now. If the
+ protocol is changed to sort the property list, this should
+ become a binary search. */
+ register XFontProp *prop = fs->properties;
+ register XFontProp *last = prop + fs->n_properties;
+ while (prop != last) {
+ if (prop->name == name) {
+ *valuePtr = prop->card32;
+ return (1);
+ }
+ prop++;
+ }
+ return (0);
+ }
+
+
+
+
+
diff --git a/libX11/src/GetGCVals.c b/libX11/src/GetGCVals.c
index 4861739a6..390528489 100644
--- a/libX11/src/GetGCVals.c
+++ b/libX11/src/GetGCVals.c
@@ -1,128 +1,128 @@
-
-/*
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * All gc fields except GCClipMask and GCDashList
- */
-#define ValidGCValuesBits (GCFunction | GCPlaneMask | GCForeground | \
- GCBackground | GCLineWidth | GCLineStyle | \
- GCCapStyle | GCJoinStyle | GCFillStyle | \
- GCFillRule | GCTile | GCStipple | \
- GCTileStipXOrigin | GCTileStipYOrigin | \
- GCFont | GCSubwindowMode | GCGraphicsExposures | \
- GCClipXOrigin | GCClipYOrigin | GCDashOffset | \
- GCArcMode)
-
-/*ARGSUSED*/
-Status XGetGCValues (
- Display *dpy,
- GC gc,
- unsigned long valuemask,
- XGCValues *values)
-{
- if (valuemask == ValidGCValuesBits) {
- char dashes = values->dashes;
- Pixmap clip_mask = values->clip_mask;
- *values = gc->values;
- values->dashes = dashes;
- values->clip_mask = clip_mask;
- return True;
- }
-
- if (valuemask & ~ValidGCValuesBits) return False;
-
- if (valuemask & GCFunction)
- values->function = gc->values.function;
-
- if (valuemask & GCPlaneMask)
- values->plane_mask = gc->values.plane_mask;
-
- if (valuemask & GCForeground)
- values->foreground = gc->values.foreground;
-
- if (valuemask & GCBackground)
- values->background = gc->values.background;
-
- if (valuemask & GCLineWidth)
- values->line_width = gc->values.line_width;
-
- if (valuemask & GCLineStyle)
- values->line_style = gc->values.line_style;
-
- if (valuemask & GCCapStyle)
- values->cap_style = gc->values.cap_style;
-
- if (valuemask & GCJoinStyle)
- values->join_style = gc->values.join_style;
-
- if (valuemask & GCFillStyle)
- values->fill_style = gc->values.fill_style;
-
- if (valuemask & GCFillRule)
- values->fill_rule = gc->values.fill_rule;
-
- if (valuemask & GCTile)
- values->tile = gc->values.tile;
-
- if (valuemask & GCStipple)
- values->stipple = gc->values.stipple;
-
- if (valuemask & GCTileStipXOrigin)
- values->ts_x_origin = gc->values.ts_x_origin;
-
- if (valuemask & GCTileStipYOrigin)
- values->ts_y_origin = gc->values.ts_y_origin;
-
- if (valuemask & GCFont)
- values->font = gc->values.font;
-
- if (valuemask & GCSubwindowMode)
- values->subwindow_mode = gc->values.subwindow_mode;
-
- if (valuemask & GCGraphicsExposures)
- values->graphics_exposures = gc->values.graphics_exposures;
-
- if (valuemask & GCClipXOrigin)
- values->clip_x_origin = gc->values.clip_x_origin;
-
- if (valuemask & GCClipYOrigin)
- values->clip_y_origin = gc->values.clip_y_origin;
-
- if (valuemask & GCDashOffset)
-
- values->dash_offset = gc->values.dash_offset;
-
- if (valuemask & GCArcMode)
- values->arc_mode = gc->values.arc_mode;
-
- return True;
-}
+
+/*
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * All gc fields except GCClipMask and GCDashList
+ */
+#define ValidGCValuesBits (GCFunction | GCPlaneMask | GCForeground | \
+ GCBackground | GCLineWidth | GCLineStyle | \
+ GCCapStyle | GCJoinStyle | GCFillStyle | \
+ GCFillRule | GCTile | GCStipple | \
+ GCTileStipXOrigin | GCTileStipYOrigin | \
+ GCFont | GCSubwindowMode | GCGraphicsExposures | \
+ GCClipXOrigin | GCClipYOrigin | GCDashOffset | \
+ GCArcMode)
+
+/*ARGSUSED*/
+Status XGetGCValues (
+ Display *dpy,
+ GC gc,
+ unsigned long valuemask,
+ XGCValues *values)
+{
+ if (valuemask == ValidGCValuesBits) {
+ char dashes = values->dashes;
+ Pixmap clip_mask = values->clip_mask;
+ *values = gc->values;
+ values->dashes = dashes;
+ values->clip_mask = clip_mask;
+ return True;
+ }
+
+ if (valuemask & ~ValidGCValuesBits) return False;
+
+ if (valuemask & GCFunction)
+ values->function = gc->values.function;
+
+ if (valuemask & GCPlaneMask)
+ values->plane_mask = gc->values.plane_mask;
+
+ if (valuemask & GCForeground)
+ values->foreground = gc->values.foreground;
+
+ if (valuemask & GCBackground)
+ values->background = gc->values.background;
+
+ if (valuemask & GCLineWidth)
+ values->line_width = gc->values.line_width;
+
+ if (valuemask & GCLineStyle)
+ values->line_style = gc->values.line_style;
+
+ if (valuemask & GCCapStyle)
+ values->cap_style = gc->values.cap_style;
+
+ if (valuemask & GCJoinStyle)
+ values->join_style = gc->values.join_style;
+
+ if (valuemask & GCFillStyle)
+ values->fill_style = gc->values.fill_style;
+
+ if (valuemask & GCFillRule)
+ values->fill_rule = gc->values.fill_rule;
+
+ if (valuemask & GCTile)
+ values->tile = gc->values.tile;
+
+ if (valuemask & GCStipple)
+ values->stipple = gc->values.stipple;
+
+ if (valuemask & GCTileStipXOrigin)
+ values->ts_x_origin = gc->values.ts_x_origin;
+
+ if (valuemask & GCTileStipYOrigin)
+ values->ts_y_origin = gc->values.ts_y_origin;
+
+ if (valuemask & GCFont)
+ values->font = gc->values.font;
+
+ if (valuemask & GCSubwindowMode)
+ values->subwindow_mode = gc->values.subwindow_mode;
+
+ if (valuemask & GCGraphicsExposures)
+ values->graphics_exposures = gc->values.graphics_exposures;
+
+ if (valuemask & GCClipXOrigin)
+ values->clip_x_origin = gc->values.clip_x_origin;
+
+ if (valuemask & GCClipYOrigin)
+ values->clip_y_origin = gc->values.clip_y_origin;
+
+ if (valuemask & GCDashOffset)
+
+ values->dash_offset = gc->values.dash_offset;
+
+ if (valuemask & GCArcMode)
+ values->arc_mode = gc->values.arc_mode;
+
+ return True;
+}
diff --git a/libX11/src/GetHints.c b/libX11/src/GetHints.c
index 4800fe793..681ed1baa 100644
--- a/libX11/src/GetHints.c
+++ b/libX11/src/GetHints.c
@@ -1,339 +1,339 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xos.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-#include <stdio.h>
-
-Status XGetSizeHints (
- Display *dpy,
- Window w,
- XSizeHints *hints,
- Atom property)
-{
- xPropSizeHints *prop = NULL;
- Atom actual_type;
- int actual_format;
- unsigned long leftover;
- unsigned long nitems;
- if (XGetWindowProperty(dpy, w, property, 0L,
- (long) OldNumPropSizeElements,
- False, XA_WM_SIZE_HINTS, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **)&prop)
- != Success) return (0);
-
- if ((actual_type != XA_WM_SIZE_HINTS) ||
- (nitems < OldNumPropSizeElements) || (actual_format != 32)) {
- if (prop != NULL) Xfree ((char *)prop);
- return(0);
- }
- hints->flags = (prop->flags & (USPosition|USSize|PAllHints));
- hints->x = cvtINT32toInt (prop->x);
- hints->y = cvtINT32toInt (prop->y);
- hints->width = cvtINT32toInt (prop->width);
- hints->height = cvtINT32toInt (prop->height);
- hints->min_width = cvtINT32toInt (prop->minWidth);
- hints->min_height = cvtINT32toInt (prop->minHeight);
- hints->max_width = cvtINT32toInt (prop->maxWidth);
- hints->max_height = cvtINT32toInt (prop->maxHeight);
- hints->width_inc = cvtINT32toInt (prop->widthInc);
- hints->height_inc = cvtINT32toInt (prop->heightInc);
- hints->min_aspect.x = cvtINT32toInt (prop->minAspectX);
- hints->min_aspect.y = cvtINT32toInt (prop->minAspectY);
- hints->max_aspect.x = cvtINT32toInt (prop->maxAspectX);
- hints->max_aspect.y = cvtINT32toInt (prop->maxAspectY);
- Xfree((char *)prop);
- return(1);
-}
-
-/*
- * must return a pointer to the hint, in malloc'd memory, or routine is not
- * extensible; any use of the caller's memory would cause things to be stepped
- * on.
- */
-
-XWMHints *XGetWMHints (
- Display *dpy,
- Window w)
-{
- xPropWMHints *prop = NULL;
- register XWMHints *hints;
- Atom actual_type;
- int actual_format;
- unsigned long leftover;
- unsigned long nitems;
- if (XGetWindowProperty(dpy, w, XA_WM_HINTS,
- 0L, (long)NumPropWMHintsElements,
- False, XA_WM_HINTS, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **)&prop)
- != Success) return (NULL);
-
- /* If the property is undefined on the window, return null pointer. */
- /* pre-R3 bogusly truncated window_group, don't fail on them */
-
- if ((actual_type != XA_WM_HINTS) ||
- (nitems < (NumPropWMHintsElements - 1)) || (actual_format != 32)) {
- if (prop != NULL) Xfree ((char *)prop);
- return(NULL);
- }
- /* static copies not allowed in library, due to reentrancy constraint*/
- if ((hints = (XWMHints *) Xcalloc (1, (unsigned) sizeof(XWMHints)))) {
- hints->flags = prop->flags;
- hints->input = (prop->input ? True : False);
- hints->initial_state = cvtINT32toInt (prop->initialState);
- hints->icon_pixmap = prop->iconPixmap;
- hints->icon_window = prop->iconWindow;
- hints->icon_x = cvtINT32toInt (prop->iconX);
- hints->icon_y = cvtINT32toInt (prop->iconY);
- hints->icon_mask = prop->iconMask;
- if (nitems >= NumPropWMHintsElements)
- hints->window_group = prop->windowGroup;
- else
- hints->window_group = 0;
- }
- Xfree ((char *)prop);
- return(hints);
-}
-
-Status
-XGetZoomHints (
- Display *dpy,
- Window w,
- XSizeHints *zhints)
-{
- return (XGetSizeHints(dpy, w, zhints, XA_WM_ZOOM_HINTS));
-}
-
-Status
-XGetNormalHints (
- Display *dpy,
- Window w,
- XSizeHints *hints)
-{
- return (XGetSizeHints(dpy, w, hints, XA_WM_NORMAL_HINTS));
-}
-
-
-/*
- * XGetIconSizes reads the property
- * ICONSIZE_ATOM type: ICONSIZE_ATOM format: 32
- */
-
-Status XGetIconSizes (
- Display *dpy,
- Window w, /* typically, root */
- XIconSize **size_list, /* RETURN */
- int *count) /* RETURN number of items on the list */
-{
- xPropIconSize *prop = NULL;
- register xPropIconSize *pp;
- register XIconSize *hp, *hints;
- Atom actual_type;
- int actual_format;
- unsigned long leftover;
- unsigned long nitems;
- register int i;
-
- if (XGetWindowProperty(dpy, w, XA_WM_ICON_SIZE, 0L, 60L,
- False, XA_WM_ICON_SIZE, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **)&prop)
- != Success) return (0);
-
- pp = prop;
-
- if ((actual_type != XA_WM_ICON_SIZE) ||
- (nitems < NumPropIconSizeElements) ||
- (nitems % NumPropIconSizeElements != 0) ||
- (actual_format != 32)) {
- if (prop != NULL) Xfree ((char *)prop);
- return(0);
- }
-
- /* static copies not allowed in library, due to reentrancy constraint*/
-
- nitems /= NumPropIconSizeElements;
- if (! (hp = hints = (XIconSize *)
- Xcalloc ((unsigned) nitems, (unsigned) sizeof(XIconSize)))) {
- if (prop) Xfree ((char *) prop);
- return 0;
- }
-
- /* march down array putting things into native form */
- for (i = 0; i < nitems; i++) {
- hp->min_width = cvtINT32toInt (pp->minWidth);
- hp->min_height = cvtINT32toInt (pp->minHeight);
- hp->max_width = cvtINT32toInt (pp->maxWidth);
- hp->max_height = cvtINT32toInt (pp->maxHeight);
- hp->width_inc = cvtINT32toInt (pp->widthInc);
- hp->height_inc = cvtINT32toInt (pp->heightInc);
- hp += 1;
- pp += 1;
- }
- *count = nitems;
- *size_list = hints;
- Xfree ((char *)prop);
- return(1);
-}
-
-
-Status XGetCommand (
- Display *dpy,
- Window w,
- char ***argvp,
- int *argcp)
-{
- XTextProperty tp;
- int argc;
- char **argv;
-
- if (!XGetTextProperty (dpy, w, &tp, XA_WM_COMMAND)) return 0;
-
- if (tp.encoding != XA_STRING || tp.format != 8) {
- if (tp.value) Xfree ((char *) tp.value);
- return 0;
- }
-
-
- /*
- * ignore final <NUL> if present since UNIX WM_COMMAND is nul-terminated
- */
- if (tp.nitems && (tp.value[tp.nitems - 1] == '\0')) tp.nitems--;
-
-
- /*
- * create a string list and return if successful
- */
- if (!XTextPropertyToStringList (&tp, &argv, &argc)) {
- if (tp.value) Xfree ((char *) tp.value);
- return (0);
- }
-
- if (tp.value) Xfree ((char *) tp.value);
- *argvp = argv;
- *argcp = argc;
- return 1;
-}
-
-
-Status
-XGetTransientForHint(
- Display *dpy,
- Window w,
- Window *propWindow)
-{
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- Window *data = NULL;
- if (XGetWindowProperty(dpy, w, XA_WM_TRANSIENT_FOR, 0L, 1L, False,
- XA_WINDOW,
- &actual_type,
- &actual_format, &nitems, &leftover, (unsigned char **) &data)
- != Success) {
- *propWindow = None;
- return (0);
- }
- if ( (actual_type == XA_WINDOW) && (actual_format == 32) &&
- (nitems != 0) ) {
- *propWindow = *data;
- Xfree( (char *) data);
- return (1);
- }
- *propWindow = None;
- if (data) Xfree( (char *) data);
- return(0);
-}
-
-Status
-XGetClassHint(
- Display *dpy,
- Window w,
- XClassHint *classhint) /* RETURN */
-{
- int len_name, len_class;
-
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- unsigned char *data = NULL;
- if (XGetWindowProperty(dpy, w, XA_WM_CLASS, 0L, (long)BUFSIZ, False,
- XA_STRING,
- &actual_type,
- &actual_format, &nitems, &leftover, &data) != Success)
- return (0);
-
- if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
- len_name = strlen((char *) data);
- if (! (classhint->res_name = Xmalloc((unsigned) (len_name+1)))) {
- Xfree((char *) data);
- return (0);
- }
- strcpy(classhint->res_name, (char *) data);
- if (len_name == nitems) len_name--;
- len_class = strlen((char *) (data+len_name+1));
- if (! (classhint->res_class = Xmalloc((unsigned) (len_class+1)))) {
- Xfree(classhint->res_name);
- classhint->res_name = (char *) NULL;
- Xfree((char *) data);
- return (0);
- }
- strcpy(classhint->res_class, (char *) (data+len_name+1));
- Xfree( (char *) data);
- return(1);
- }
- if (data) Xfree( (char *) data);
- return(0);
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xos.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+#include <stdio.h>
+
+Status XGetSizeHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints,
+ Atom property)
+{
+ xPropSizeHints *prop = NULL;
+ Atom actual_type;
+ int actual_format;
+ unsigned long leftover;
+ unsigned long nitems;
+ if (XGetWindowProperty(dpy, w, property, 0L,
+ (long) OldNumPropSizeElements,
+ False, XA_WM_SIZE_HINTS, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **)&prop)
+ != Success) return (0);
+
+ if ((actual_type != XA_WM_SIZE_HINTS) ||
+ (nitems < OldNumPropSizeElements) || (actual_format != 32)) {
+ if (prop != NULL) Xfree ((char *)prop);
+ return(0);
+ }
+ hints->flags = (prop->flags & (USPosition|USSize|PAllHints));
+ hints->x = cvtINT32toInt (prop->x);
+ hints->y = cvtINT32toInt (prop->y);
+ hints->width = cvtINT32toInt (prop->width);
+ hints->height = cvtINT32toInt (prop->height);
+ hints->min_width = cvtINT32toInt (prop->minWidth);
+ hints->min_height = cvtINT32toInt (prop->minHeight);
+ hints->max_width = cvtINT32toInt (prop->maxWidth);
+ hints->max_height = cvtINT32toInt (prop->maxHeight);
+ hints->width_inc = cvtINT32toInt (prop->widthInc);
+ hints->height_inc = cvtINT32toInt (prop->heightInc);
+ hints->min_aspect.x = cvtINT32toInt (prop->minAspectX);
+ hints->min_aspect.y = cvtINT32toInt (prop->minAspectY);
+ hints->max_aspect.x = cvtINT32toInt (prop->maxAspectX);
+ hints->max_aspect.y = cvtINT32toInt (prop->maxAspectY);
+ Xfree((char *)prop);
+ return(1);
+}
+
+/*
+ * must return a pointer to the hint, in malloc'd memory, or routine is not
+ * extensible; any use of the caller's memory would cause things to be stepped
+ * on.
+ */
+
+XWMHints *XGetWMHints (
+ Display *dpy,
+ Window w)
+{
+ xPropWMHints *prop = NULL;
+ register XWMHints *hints;
+ Atom actual_type;
+ int actual_format;
+ unsigned long leftover;
+ unsigned long nitems;
+ if (XGetWindowProperty(dpy, w, XA_WM_HINTS,
+ 0L, (long)NumPropWMHintsElements,
+ False, XA_WM_HINTS, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **)&prop)
+ != Success) return (NULL);
+
+ /* If the property is undefined on the window, return null pointer. */
+ /* pre-R3 bogusly truncated window_group, don't fail on them */
+
+ if ((actual_type != XA_WM_HINTS) ||
+ (nitems < (NumPropWMHintsElements - 1)) || (actual_format != 32)) {
+ if (prop != NULL) Xfree ((char *)prop);
+ return(NULL);
+ }
+ /* static copies not allowed in library, due to reentrancy constraint*/
+ if ((hints = (XWMHints *) Xcalloc (1, (unsigned) sizeof(XWMHints)))) {
+ hints->flags = prop->flags;
+ hints->input = (prop->input ? True : False);
+ hints->initial_state = cvtINT32toInt (prop->initialState);
+ hints->icon_pixmap = prop->iconPixmap;
+ hints->icon_window = prop->iconWindow;
+ hints->icon_x = cvtINT32toInt (prop->iconX);
+ hints->icon_y = cvtINT32toInt (prop->iconY);
+ hints->icon_mask = prop->iconMask;
+ if (nitems >= NumPropWMHintsElements)
+ hints->window_group = prop->windowGroup;
+ else
+ hints->window_group = 0;
+ }
+ Xfree ((char *)prop);
+ return(hints);
+}
+
+Status
+XGetZoomHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *zhints)
+{
+ return (XGetSizeHints(dpy, w, zhints, XA_WM_ZOOM_HINTS));
+}
+
+Status
+XGetNormalHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints)
+{
+ return (XGetSizeHints(dpy, w, hints, XA_WM_NORMAL_HINTS));
+}
+
+
+/*
+ * XGetIconSizes reads the property
+ * ICONSIZE_ATOM type: ICONSIZE_ATOM format: 32
+ */
+
+Status XGetIconSizes (
+ Display *dpy,
+ Window w, /* typically, root */
+ XIconSize **size_list, /* RETURN */
+ int *count) /* RETURN number of items on the list */
+{
+ xPropIconSize *prop = NULL;
+ register xPropIconSize *pp;
+ register XIconSize *hp, *hints;
+ Atom actual_type;
+ int actual_format;
+ unsigned long leftover;
+ unsigned long nitems;
+ register int i;
+
+ if (XGetWindowProperty(dpy, w, XA_WM_ICON_SIZE, 0L, 60L,
+ False, XA_WM_ICON_SIZE, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **)&prop)
+ != Success) return (0);
+
+ pp = prop;
+
+ if ((actual_type != XA_WM_ICON_SIZE) ||
+ (nitems < NumPropIconSizeElements) ||
+ (nitems % NumPropIconSizeElements != 0) ||
+ (actual_format != 32)) {
+ if (prop != NULL) Xfree ((char *)prop);
+ return(0);
+ }
+
+ /* static copies not allowed in library, due to reentrancy constraint*/
+
+ nitems /= NumPropIconSizeElements;
+ if (! (hp = hints = (XIconSize *)
+ Xcalloc ((unsigned) nitems, (unsigned) sizeof(XIconSize)))) {
+ if (prop) Xfree ((char *) prop);
+ return 0;
+ }
+
+ /* march down array putting things into native form */
+ for (i = 0; i < nitems; i++) {
+ hp->min_width = cvtINT32toInt (pp->minWidth);
+ hp->min_height = cvtINT32toInt (pp->minHeight);
+ hp->max_width = cvtINT32toInt (pp->maxWidth);
+ hp->max_height = cvtINT32toInt (pp->maxHeight);
+ hp->width_inc = cvtINT32toInt (pp->widthInc);
+ hp->height_inc = cvtINT32toInt (pp->heightInc);
+ hp += 1;
+ pp += 1;
+ }
+ *count = nitems;
+ *size_list = hints;
+ Xfree ((char *)prop);
+ return(1);
+}
+
+
+Status XGetCommand (
+ Display *dpy,
+ Window w,
+ char ***argvp,
+ int *argcp)
+{
+ XTextProperty tp;
+ int argc;
+ char **argv;
+
+ if (!XGetTextProperty (dpy, w, &tp, XA_WM_COMMAND)) return 0;
+
+ if (tp.encoding != XA_STRING || tp.format != 8) {
+ if (tp.value) Xfree ((char *) tp.value);
+ return 0;
+ }
+
+
+ /*
+ * ignore final <NUL> if present since UNIX WM_COMMAND is nul-terminated
+ */
+ if (tp.nitems && (tp.value[tp.nitems - 1] == '\0')) tp.nitems--;
+
+
+ /*
+ * create a string list and return if successful
+ */
+ if (!XTextPropertyToStringList (&tp, &argv, &argc)) {
+ if (tp.value) Xfree ((char *) tp.value);
+ return (0);
+ }
+
+ if (tp.value) Xfree ((char *) tp.value);
+ *argvp = argv;
+ *argcp = argc;
+ return 1;
+}
+
+
+Status
+XGetTransientForHint(
+ Display *dpy,
+ Window w,
+ Window *propWindow)
+{
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ Window *data = NULL;
+ if (XGetWindowProperty(dpy, w, XA_WM_TRANSIENT_FOR, 0L, 1L, False,
+ XA_WINDOW,
+ &actual_type,
+ &actual_format, &nitems, &leftover, (unsigned char **) &data)
+ != Success) {
+ *propWindow = None;
+ return (0);
+ }
+ if ( (actual_type == XA_WINDOW) && (actual_format == 32) &&
+ (nitems != 0) ) {
+ *propWindow = *data;
+ Xfree( (char *) data);
+ return (1);
+ }
+ *propWindow = None;
+ if (data) Xfree( (char *) data);
+ return(0);
+}
+
+Status
+XGetClassHint(
+ Display *dpy,
+ Window w,
+ XClassHint *classhint) /* RETURN */
+{
+ int len_name, len_class;
+
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ unsigned char *data = NULL;
+ if (XGetWindowProperty(dpy, w, XA_WM_CLASS, 0L, (long)BUFSIZ, False,
+ XA_STRING,
+ &actual_type,
+ &actual_format, &nitems, &leftover, &data) != Success)
+ return (0);
+
+ if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
+ len_name = strlen((char *) data);
+ if (! (classhint->res_name = Xmalloc((unsigned) (len_name+1)))) {
+ Xfree((char *) data);
+ return (0);
+ }
+ strcpy(classhint->res_name, (char *) data);
+ if (len_name == nitems) len_name--;
+ len_class = strlen((char *) (data+len_name+1));
+ if (! (classhint->res_class = Xmalloc((unsigned) (len_class+1)))) {
+ Xfree(classhint->res_name);
+ classhint->res_name = (char *) NULL;
+ Xfree((char *) data);
+ return (0);
+ }
+ strcpy(classhint->res_class, (char *) (data+len_name+1));
+ Xfree( (char *) data);
+ return(1);
+ }
+ if (data) Xfree( (char *) data);
+ return(0);
+}
diff --git a/libX11/src/GetNrmHint.c b/libX11/src/GetNrmHint.c
index 6f328e8fd..289b9c429 100644
--- a/libX11/src/GetNrmHint.c
+++ b/libX11/src/GetNrmHint.c
@@ -1,127 +1,127 @@
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
-Copyright 1987 by 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 name Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL DIGITAL OR WYSE 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.
-
-******************************************************************/
-
-/*
-
-Copyright 1987, 1988, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include "Xatomtype.h"
-#include <X11/Xutil.h>
-#include <stdio.h>
-
-Status XGetWMSizeHints (
- Display *dpy,
- Window w,
- XSizeHints *hints,
- long *supplied,
- Atom property)
-{
- xPropSizeHints *prop = NULL;
- Atom actual_type;
- int actual_format;
- unsigned long leftover;
- unsigned long nitems;
-
- if (XGetWindowProperty (dpy, w, property, 0L,
- (long)NumPropSizeElements,
- False, XA_WM_SIZE_HINTS, &actual_type,
- &actual_format, &nitems, &leftover,
- (unsigned char **)&prop)
- != Success)
- return False;
-
- if ((actual_type != XA_WM_SIZE_HINTS) ||
- (nitems < OldNumPropSizeElements) || (actual_format != 32)) {
- if (prop != NULL) Xfree ((char *)prop);
- return False;
- }
-
- hints->flags = prop->flags;
- /* XSizeHints misdeclares these as int instead of long */
- hints->x = cvtINT32toInt (prop->x);
- hints->y = cvtINT32toInt (prop->y);
- hints->width = cvtINT32toInt (prop->width);
- hints->height = cvtINT32toInt (prop->height);
- hints->min_width = cvtINT32toInt (prop->minWidth);
- hints->min_height = cvtINT32toInt (prop->minHeight);
- hints->max_width = cvtINT32toInt (prop->maxWidth);
- hints->max_height = cvtINT32toInt (prop->maxHeight);
- hints->width_inc = cvtINT32toInt (prop->widthInc);
- hints->height_inc = cvtINT32toInt (prop->heightInc);
- hints->min_aspect.x = cvtINT32toInt (prop->minAspectX);
- hints->min_aspect.y = cvtINT32toInt (prop->minAspectY);
- hints->max_aspect.x = cvtINT32toInt (prop->maxAspectX);
- hints->max_aspect.y = cvtINT32toInt (prop->maxAspectY);
-
- *supplied = (USPosition | USSize | PAllHints);
- if (nitems >= NumPropSizeElements) {
- hints->base_width= cvtINT32toInt (prop->baseWidth);
- hints->base_height= cvtINT32toInt (prop->baseHeight);
- hints->win_gravity= cvtINT32toInt (prop->winGravity);
- *supplied |= (PBaseSize | PWinGravity);
- }
- hints->flags &= (*supplied); /* get rid of unwanted bits */
- Xfree((char *)prop);
- return True;
-}
-
-
-Status XGetWMNormalHints (
- Display *dpy,
- Window w,
- XSizeHints *hints,
- long *supplied)
-{
- return (XGetWMSizeHints (dpy, w, hints, supplied, XA_WM_NORMAL_HINTS));
-}
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
+Copyright 1987 by 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 name Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL DIGITAL OR WYSE 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.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include "Xatomtype.h"
+#include <X11/Xutil.h>
+#include <stdio.h>
+
+Status XGetWMSizeHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints,
+ long *supplied,
+ Atom property)
+{
+ xPropSizeHints *prop = NULL;
+ Atom actual_type;
+ int actual_format;
+ unsigned long leftover;
+ unsigned long nitems;
+
+ if (XGetWindowProperty (dpy, w, property, 0L,
+ (long)NumPropSizeElements,
+ False, XA_WM_SIZE_HINTS, &actual_type,
+ &actual_format, &nitems, &leftover,
+ (unsigned char **)&prop)
+ != Success)
+ return False;
+
+ if ((actual_type != XA_WM_SIZE_HINTS) ||
+ (nitems < OldNumPropSizeElements) || (actual_format != 32)) {
+ if (prop != NULL) Xfree ((char *)prop);
+ return False;
+ }
+
+ hints->flags = prop->flags;
+ /* XSizeHints misdeclares these as int instead of long */
+ hints->x = cvtINT32toInt (prop->x);
+ hints->y = cvtINT32toInt (prop->y);
+ hints->width = cvtINT32toInt (prop->width);
+ hints->height = cvtINT32toInt (prop->height);
+ hints->min_width = cvtINT32toInt (prop->minWidth);
+ hints->min_height = cvtINT32toInt (prop->minHeight);
+ hints->max_width = cvtINT32toInt (prop->maxWidth);
+ hints->max_height = cvtINT32toInt (prop->maxHeight);
+ hints->width_inc = cvtINT32toInt (prop->widthInc);
+ hints->height_inc = cvtINT32toInt (prop->heightInc);
+ hints->min_aspect.x = cvtINT32toInt (prop->minAspectX);
+ hints->min_aspect.y = cvtINT32toInt (prop->minAspectY);
+ hints->max_aspect.x = cvtINT32toInt (prop->maxAspectX);
+ hints->max_aspect.y = cvtINT32toInt (prop->maxAspectY);
+
+ *supplied = (USPosition | USSize | PAllHints);
+ if (nitems >= NumPropSizeElements) {
+ hints->base_width= cvtINT32toInt (prop->baseWidth);
+ hints->base_height= cvtINT32toInt (prop->baseHeight);
+ hints->win_gravity= cvtINT32toInt (prop->winGravity);
+ *supplied |= (PBaseSize | PWinGravity);
+ }
+ hints->flags &= (*supplied); /* get rid of unwanted bits */
+ Xfree((char *)prop);
+ return True;
+}
+
+
+Status XGetWMNormalHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints,
+ long *supplied)
+{
+ return (XGetWMSizeHints (dpy, w, hints, supplied, XA_WM_NORMAL_HINTS));
+}
diff --git a/libX11/src/GetRGBCMap.c b/libX11/src/GetRGBCMap.c
index 9e227a263..67148e72c 100644
--- a/libX11/src/GetRGBCMap.c
+++ b/libX11/src/GetRGBCMap.c
@@ -1,135 +1,135 @@
-
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-
-Status XGetRGBColormaps (
- Display *dpy,
- Window w,
- XStandardColormap **stdcmap, /* RETURN */
- int *count, /* RETURN */
- Atom property) /* XA_RGB_BEST_MAP, etc. */
-{
- register int i; /* iterator variable */
- xPropStandardColormap *data = NULL; /* data read in from prop */
- Atom actual_type; /* how the prop was actually stored */
- int actual_format; /* ditto */
- unsigned long leftover; /* how much was left over */
- unsigned long nitems; /* number of 32bits read */
- int ncmaps; /* number of structs this makes */
- Bool old_style = False; /* if was too short */
- VisualID def_visual = None; /* visual to use if prop too short */
- XStandardColormap *cmaps; /* return value */
-
-
- if (XGetWindowProperty (dpy, w, property, 0L, 1000000L, False,
- XA_RGB_COLOR_MAP, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **)&data)
- != Success)
- return False;
-
- /* if wrong type or format, or too small for us, then punt */
- if ((actual_type != XA_RGB_COLOR_MAP) || (actual_format != 32) ||
- (nitems < OldNumPropStandardColormapElements)) {
- if (data) Xfree ((char *) data);
- return False;
- }
-
- /*
- * See how many properties were found; if pre-ICCCM then assume
- * default visual and a kill id of 1.
- */
- if (nitems < NumPropStandardColormapElements) {
- ncmaps = 1;
- old_style = True;
- if (nitems < (NumPropStandardColormapElements - 1)) {
- Screen *sp = _XScreenOfWindow (dpy, w);
-
- if (!sp) {
- if (data) Xfree ((char *) data);
- return False;
- }
- def_visual = sp->root_visual->visualid;
- }
- } else {
- /*
- * make sure we have an integral number of colormaps
- */
- ncmaps = (nitems / NumPropStandardColormapElements);
- if ((((unsigned long) ncmaps) * NumPropStandardColormapElements) !=
- nitems) {
- if (data) Xfree ((char *) data);
- return False;
- }
- }
-
-
- /*
- * allocate array
- */
- cmaps = (XStandardColormap *) Xmalloc (ncmaps *
- sizeof (XStandardColormap));
- if (!cmaps) {
- if (data) Xfree ((char *) data);
- return False;
- }
-
-
- /*
- * and fill it in, handling compatibility with pre-ICCCM short stdcmaps
- */
- {
- register XStandardColormap *map;
- register xPropStandardColormap *prop;
-
- for (i = ncmaps, map = cmaps, prop = data; i > 0; i--, map++, prop++) {
- map->colormap = prop->colormap;
- map->red_max = prop->red_max;
- map->red_mult = prop->red_mult;
- map->green_max = prop->green_max;
- map->green_mult = prop->green_mult;
- map->blue_max = prop->blue_max;
- map->blue_mult = prop->blue_mult;
- map->base_pixel = prop->base_pixel;
- map->visualid = (def_visual ? def_visual : prop->visualid);
- map->killid = (old_style ? None : prop->killid);
- }
- }
- Xfree ((char *) data);
- *stdcmap = cmaps;
- *count = ncmaps;
- return True;
-}
-
+
+/*
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+
+Status XGetRGBColormaps (
+ Display *dpy,
+ Window w,
+ XStandardColormap **stdcmap, /* RETURN */
+ int *count, /* RETURN */
+ Atom property) /* XA_RGB_BEST_MAP, etc. */
+{
+ register int i; /* iterator variable */
+ xPropStandardColormap *data = NULL; /* data read in from prop */
+ Atom actual_type; /* how the prop was actually stored */
+ int actual_format; /* ditto */
+ unsigned long leftover; /* how much was left over */
+ unsigned long nitems; /* number of 32bits read */
+ int ncmaps; /* number of structs this makes */
+ Bool old_style = False; /* if was too short */
+ VisualID def_visual = None; /* visual to use if prop too short */
+ XStandardColormap *cmaps; /* return value */
+
+
+ if (XGetWindowProperty (dpy, w, property, 0L, 1000000L, False,
+ XA_RGB_COLOR_MAP, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **)&data)
+ != Success)
+ return False;
+
+ /* if wrong type or format, or too small for us, then punt */
+ if ((actual_type != XA_RGB_COLOR_MAP) || (actual_format != 32) ||
+ (nitems < OldNumPropStandardColormapElements)) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+
+ /*
+ * See how many properties were found; if pre-ICCCM then assume
+ * default visual and a kill id of 1.
+ */
+ if (nitems < NumPropStandardColormapElements) {
+ ncmaps = 1;
+ old_style = True;
+ if (nitems < (NumPropStandardColormapElements - 1)) {
+ Screen *sp = _XScreenOfWindow (dpy, w);
+
+ if (!sp) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+ def_visual = sp->root_visual->visualid;
+ }
+ } else {
+ /*
+ * make sure we have an integral number of colormaps
+ */
+ ncmaps = (nitems / NumPropStandardColormapElements);
+ if ((((unsigned long) ncmaps) * NumPropStandardColormapElements) !=
+ nitems) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+ }
+
+
+ /*
+ * allocate array
+ */
+ cmaps = (XStandardColormap *) Xmalloc (ncmaps *
+ sizeof (XStandardColormap));
+ if (!cmaps) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+
+
+ /*
+ * and fill it in, handling compatibility with pre-ICCCM short stdcmaps
+ */
+ {
+ register XStandardColormap *map;
+ register xPropStandardColormap *prop;
+
+ for (i = ncmaps, map = cmaps, prop = data; i > 0; i--, map++, prop++) {
+ map->colormap = prop->colormap;
+ map->red_max = prop->red_max;
+ map->red_mult = prop->red_mult;
+ map->green_max = prop->green_max;
+ map->green_mult = prop->green_mult;
+ map->blue_max = prop->blue_max;
+ map->blue_mult = prop->blue_mult;
+ map->base_pixel = prop->base_pixel;
+ map->visualid = (def_visual ? def_visual : prop->visualid);
+ map->killid = (old_style ? None : prop->killid);
+ }
+ }
+ Xfree ((char *) data);
+ *stdcmap = cmaps;
+ *count = ncmaps;
+ return True;
+}
+
diff --git a/libX11/src/GetStCmap.c b/libX11/src/GetStCmap.c
index 82fb2134e..ec4244acf 100644
--- a/libX11/src/GetStCmap.c
+++ b/libX11/src/GetStCmap.c
@@ -1,117 +1,117 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-
-/*
- * WARNING
- *
- * This is a pre-ICCCM routine. It must not reference any of the new fields
- * in the XStandardColormap structure.
- */
-
-Status XGetStandardColormap (
- Display *dpy,
- Window w,
- XStandardColormap *cmap,
- Atom property) /* XA_RGB_BEST_MAP, etc. */
-{
- Status stat; /* return value */
- XStandardColormap *stdcmaps; /* will get malloced value */
- int nstdcmaps; /* count of above */
-
- stat = XGetRGBColormaps (dpy, w, &stdcmaps, &nstdcmaps, property);
- if (stat) {
- XStandardColormap *use;
-
- if (nstdcmaps > 1) {
- VisualID vid;
- Screen *sp = _XScreenOfWindow (dpy, w);
- int i;
-
- if (!sp) {
- if (stdcmaps) Xfree ((char *) stdcmaps);
- return False;
- }
- vid = sp->root_visual->visualid;
-
- for (i = 0; i < nstdcmaps; i++) {
- if (stdcmaps[i].visualid == vid) break;
- }
-
- if (i == nstdcmaps) { /* not found */
- Xfree ((char *) stdcmaps);
- return False;
- }
- use = &stdcmaps[i];
- } else {
- use = stdcmaps;
- }
-
- /*
- * assign only those fields which were in the pre-ICCCM version
- */
- cmap->colormap = use->colormap;
- cmap->red_max = use->red_max;
- cmap->red_mult = use->red_mult;
- cmap->green_max = use->green_max;
- cmap->green_mult = use->green_mult;
- cmap->blue_max = use->blue_max;
- cmap->blue_mult = use->blue_mult;
- cmap->base_pixel = use->base_pixel;
-
- Xfree ((char *) stdcmaps); /* don't need alloced memory */
- }
- return stat;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+
+/*
+ * WARNING
+ *
+ * This is a pre-ICCCM routine. It must not reference any of the new fields
+ * in the XStandardColormap structure.
+ */
+
+Status XGetStandardColormap (
+ Display *dpy,
+ Window w,
+ XStandardColormap *cmap,
+ Atom property) /* XA_RGB_BEST_MAP, etc. */
+{
+ Status stat; /* return value */
+ XStandardColormap *stdcmaps; /* will get malloced value */
+ int nstdcmaps; /* count of above */
+
+ stat = XGetRGBColormaps (dpy, w, &stdcmaps, &nstdcmaps, property);
+ if (stat) {
+ XStandardColormap *use;
+
+ if (nstdcmaps > 1) {
+ VisualID vid;
+ Screen *sp = _XScreenOfWindow (dpy, w);
+ int i;
+
+ if (!sp) {
+ if (stdcmaps) Xfree ((char *) stdcmaps);
+ return False;
+ }
+ vid = sp->root_visual->visualid;
+
+ for (i = 0; i < nstdcmaps; i++) {
+ if (stdcmaps[i].visualid == vid) break;
+ }
+
+ if (i == nstdcmaps) { /* not found */
+ Xfree ((char *) stdcmaps);
+ return False;
+ }
+ use = &stdcmaps[i];
+ } else {
+ use = stdcmaps;
+ }
+
+ /*
+ * assign only those fields which were in the pre-ICCCM version
+ */
+ cmap->colormap = use->colormap;
+ cmap->red_max = use->red_max;
+ cmap->red_mult = use->red_mult;
+ cmap->green_max = use->green_max;
+ cmap->green_mult = use->green_mult;
+ cmap->blue_max = use->blue_max;
+ cmap->blue_mult = use->blue_mult;
+ cmap->base_pixel = use->base_pixel;
+
+ Xfree ((char *) stdcmaps); /* don't need alloced memory */
+ }
+ return stat;
+}
diff --git a/libX11/src/GetTxtProp.c b/libX11/src/GetTxtProp.c
index d14505e2e..0589c361c 100644
--- a/libX11/src/GetTxtProp.c
+++ b/libX11/src/GetTxtProp.c
@@ -1,113 +1,113 @@
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
-
- 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 name Wyse not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-/*
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/Xos.h>
-#include <stdio.h>
-
-Status XGetTextProperty (
- Display *display,
- Window window,
- XTextProperty *tp,
- Atom property)
-{
- Atom actual_type;
- int actual_format = 0;
- unsigned long nitems = 0L, leftover = 0L;
- unsigned char *prop = NULL;
-
- if (XGetWindowProperty (display, window, property, 0L, 1000000L, False,
- AnyPropertyType, &actual_type, &actual_format,
- &nitems, &leftover, &prop) == Success &&
- actual_type != None) {
- /* okay, fill it in */
- tp->value = prop;
- tp->encoding = actual_type;
- tp->format = actual_format;
- tp->nitems = nitems;
- return True;
- }
-
- tp->value = NULL;
- tp->encoding = None;
- tp->format = 0;
- tp->nitems = 0;
- return False;
-}
-
-Status XGetWMName (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- return (XGetTextProperty (dpy, w, tp, XA_WM_NAME));
-}
-
-Status XGetWMIconName (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- return (XGetTextProperty (dpy, w, tp, XA_WM_ICON_NAME));
-}
-
-Status XGetWMClientMachine (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- return (XGetTextProperty (dpy, w, tp, XA_WM_CLIENT_MACHINE));
-}
-
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
+
+ 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 name Wyse not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/*
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include <X11/Xos.h>
+#include <stdio.h>
+
+Status XGetTextProperty (
+ Display *display,
+ Window window,
+ XTextProperty *tp,
+ Atom property)
+{
+ Atom actual_type;
+ int actual_format = 0;
+ unsigned long nitems = 0L, leftover = 0L;
+ unsigned char *prop = NULL;
+
+ if (XGetWindowProperty (display, window, property, 0L, 1000000L, False,
+ AnyPropertyType, &actual_type, &actual_format,
+ &nitems, &leftover, &prop) == Success &&
+ actual_type != None) {
+ /* okay, fill it in */
+ tp->value = prop;
+ tp->encoding = actual_type;
+ tp->format = actual_format;
+ tp->nitems = nitems;
+ return True;
+ }
+
+ tp->value = NULL;
+ tp->encoding = None;
+ tp->format = 0;
+ tp->nitems = 0;
+ return False;
+}
+
+Status XGetWMName (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ return (XGetTextProperty (dpy, w, tp, XA_WM_NAME));
+}
+
+Status XGetWMIconName (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ return (XGetTextProperty (dpy, w, tp, XA_WM_ICON_NAME));
+}
+
+Status XGetWMClientMachine (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ return (XGetTextProperty (dpy, w, tp, XA_WM_CLIENT_MACHINE));
+}
+
diff --git a/libX11/src/GetWMCMapW.c b/libX11/src/GetWMCMapW.c
index 5d54cc1ce..6268cada8 100644
--- a/libX11/src/GetWMCMapW.c
+++ b/libX11/src/GetWMCMapW.c
@@ -1,87 +1,87 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xatom.h>
-#include <stdio.h>
-
-Status XGetWMColormapWindows (
- Display *dpy,
- Window w,
- Window **colormapWindows,
- int *countReturn)
-{
- Atom *data = NULL;
- Atom actual_type;
- Atom prop;
- int actual_format;
- unsigned long leftover, nitems;
-
- prop = XInternAtom(dpy, "WM_COLORMAP_WINDOWS", False);
- if (prop == None) return False;
-
- /* get the property */
- if (XGetWindowProperty (dpy, w, prop,
- 0L, 1000000L, False,
- XA_WINDOW, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **) &data)
- != Success)
- return False;
-
- if (actual_type != XA_WINDOW || actual_format != 32) {
- if (data) Xfree ((char *) data);
- return False;
- }
-
- *colormapWindows = (Window *) data;
- *countReturn = (int) nitems;
- return True;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xatom.h>
+#include <stdio.h>
+
+Status XGetWMColormapWindows (
+ Display *dpy,
+ Window w,
+ Window **colormapWindows,
+ int *countReturn)
+{
+ Atom *data = NULL;
+ Atom actual_type;
+ Atom prop;
+ int actual_format;
+ unsigned long leftover, nitems;
+
+ prop = XInternAtom(dpy, "WM_COLORMAP_WINDOWS", False);
+ if (prop == None) return False;
+
+ /* get the property */
+ if (XGetWindowProperty (dpy, w, prop,
+ 0L, 1000000L, False,
+ XA_WINDOW, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **) &data)
+ != Success)
+ return False;
+
+ if (actual_type != XA_WINDOW || actual_format != 32) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+
+ *colormapWindows = (Window *) data;
+ *countReturn = (int) nitems;
+ return True;
+}
diff --git a/libX11/src/GetWMProto.c b/libX11/src/GetWMProto.c
index d8f8bdab4..41b1721cf 100644
--- a/libX11/src/GetWMProto.c
+++ b/libX11/src/GetWMProto.c
@@ -1,87 +1,87 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xatom.h>
-#include <stdio.h>
-
-Status XGetWMProtocols (
- Display *dpy,
- Window w,
- Atom **protocols,
- int *countReturn)
-{
- Atom *data = NULL;
- Atom actual_type;
- Atom prop;
- int actual_format;
- unsigned long leftover, nitems;
-
- prop = XInternAtom(dpy, "WM_PROTOCOLS", False);
- if (prop == None) return False;
-
- /* get the property */
- if (XGetWindowProperty (dpy, w, prop,
- 0L, 1000000L, False,
- XA_ATOM, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **) &data)
- != Success)
- return False;
-
- if (actual_type != XA_ATOM || actual_format != 32) {
- if (data) Xfree ((char *) data);
- return False;
- }
-
- *protocols = (Atom *) data;
- *countReturn = (int) nitems;
- return True;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xatom.h>
+#include <stdio.h>
+
+Status XGetWMProtocols (
+ Display *dpy,
+ Window w,
+ Atom **protocols,
+ int *countReturn)
+{
+ Atom *data = NULL;
+ Atom actual_type;
+ Atom prop;
+ int actual_format;
+ unsigned long leftover, nitems;
+
+ prop = XInternAtom(dpy, "WM_PROTOCOLS", False);
+ if (prop == None) return False;
+
+ /* get the property */
+ if (XGetWindowProperty (dpy, w, prop,
+ 0L, 1000000L, False,
+ XA_ATOM, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **) &data)
+ != Success)
+ return False;
+
+ if (actual_type != XA_ATOM || actual_format != 32) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+
+ *protocols = (Atom *) data;
+ *countReturn = (int) nitems;
+ return True;
+}
diff --git a/libX11/src/GrButton.c b/libX11/src/GrButton.c
index 621f49a5c..2c3f25941 100644
--- a/libX11/src/GrButton.c
+++ b/libX11/src/GrButton.c
@@ -1,60 +1,60 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XGrabButton(
- register Display *dpy,
- unsigned int button, /* CARD8 */
- unsigned int modifiers, /* CARD16 */
- Window grab_window,
- Bool owner_events,
- unsigned int event_mask, /* CARD16 */
- int pointer_mode,
- int keyboard_mode,
- Window confine_to,
- Cursor curs)
-{
- register xGrabButtonReq *req;
- LockDisplay(dpy);
- GetReq(GrabButton, req);
- req->modifiers = modifiers;
- req->button = button;
- req->grabWindow = grab_window;
- req->ownerEvents = owner_events;
- req->eventMask = event_mask;
- req->pointerMode = pointer_mode;
- req->keyboardMode = keyboard_mode;
- req->confineTo = confine_to;
- req->cursor = curs;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XGrabButton(
+ register Display *dpy,
+ unsigned int button, /* CARD8 */
+ unsigned int modifiers, /* CARD16 */
+ Window grab_window,
+ Bool owner_events,
+ unsigned int event_mask, /* CARD16 */
+ int pointer_mode,
+ int keyboard_mode,
+ Window confine_to,
+ Cursor curs)
+{
+ register xGrabButtonReq *req;
+ LockDisplay(dpy);
+ GetReq(GrabButton, req);
+ req->modifiers = modifiers;
+ req->button = button;
+ req->grabWindow = grab_window;
+ req->ownerEvents = owner_events;
+ req->eventMask = event_mask;
+ req->pointerMode = pointer_mode;
+ req->keyboardMode = keyboard_mode;
+ req->confineTo = confine_to;
+ req->cursor = curs;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/GrKey.c b/libX11/src/GrKey.c
index d2da5952f..960e38842 100644
--- a/libX11/src/GrKey.c
+++ b/libX11/src/GrKey.c
@@ -1,58 +1,58 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XGrabKey(
- register Display *dpy,
- int key,
- unsigned int modifiers,
- Window grab_window,
- Bool owner_events,
- int pointer_mode,
- int keyboard_mode)
-
-{
- register xGrabKeyReq *req;
- LockDisplay(dpy);
- GetReq(GrabKey, req);
- req->ownerEvents = owner_events;
- req->grabWindow = grab_window;
- req->modifiers = modifiers;
- req->key = key;
- req->pointerMode = pointer_mode;
- req->keyboardMode = keyboard_mode;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XGrabKey(
+ register Display *dpy,
+ int key,
+ unsigned int modifiers,
+ Window grab_window,
+ Bool owner_events,
+ int pointer_mode,
+ int keyboard_mode)
+
+{
+ register xGrabKeyReq *req;
+ LockDisplay(dpy);
+ GetReq(GrabKey, req);
+ req->ownerEvents = owner_events;
+ req->grabWindow = grab_window;
+ req->modifiers = modifiers;
+ req->key = key;
+ req->pointerMode = pointer_mode;
+ req->keyboardMode = keyboard_mode;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+
+
diff --git a/libX11/src/GrServer.c b/libX11/src/GrServer.c
index 11d21e491..dddfad018 100644
--- a/libX11/src/GrServer.c
+++ b/libX11/src/GrServer.c
@@ -1,42 +1,42 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XGrabServer (register Display *dpy)
-{
- register xReq *req;
- LockDisplay(dpy);
- GetEmptyReq(GrabServer, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XGrabServer (register Display *dpy)
+{
+ register xReq *req;
+ LockDisplay(dpy);
+ GetEmptyReq(GrabServer, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/InsCmap.c b/libX11/src/InsCmap.c
index 735ab080e..99ee8daac 100644
--- a/libX11/src/InsCmap.c
+++ b/libX11/src/InsCmap.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XInstallColormap(
- register Display *dpy,
- Colormap cmap)
-{
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(InstallColormap, cmap, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XInstallColormap(
+ register Display *dpy,
+ Colormap cmap)
+{
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(InstallColormap, cmap, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Key.h b/libX11/src/Key.h
index 0fe89ba37..d3bd55f0d 100644
--- a/libX11/src/Key.h
+++ b/libX11/src/Key.h
@@ -1,17 +1,17 @@
-
-#ifndef _KEY_H_
-#define _KEY_H_
-
-#ifndef NEEDKTABLE
-extern const unsigned char _XkeyTable[];
-#endif
-
-extern int
-_XKeyInitialize(
- Display *dpy);
-
-extern XrmDatabase
-_XInitKeysymDB(
- void);
-
-#endif /* _KEY_H_ */
+
+#ifndef _KEY_H_
+#define _KEY_H_
+
+#ifndef NEEDKTABLE
+extern const unsigned char _XkeyTable[];
+#endif
+
+extern int
+_XKeyInitialize(
+ Display *dpy);
+
+extern XrmDatabase
+_XInitKeysymDB(
+ void);
+
+#endif /* _KEY_H_ */
diff --git a/libX11/src/KillCl.c b/libX11/src/KillCl.c
index cfd8cb000..f3c48c43e 100644
--- a/libX11/src/KillCl.c
+++ b/libX11/src/KillCl.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XKillClient(
- register Display *dpy,
- XID resource)
-{
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(KillClient, resource, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XKillClient(
+ register Display *dpy,
+ XID resource)
+{
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(KillClient, resource, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/LoadFont.c b/libX11/src/LoadFont.c
index f547976ba..ad94f46ac 100644
--- a/libX11/src/LoadFont.c
+++ b/libX11/src/LoadFont.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Font
-XLoadFont (
- register Display *dpy,
- _Xconst char *name)
-{
- register long nbytes;
- Font fid;
- register xOpenFontReq *req;
-
- if (_XF86LoadQueryLocaleFont(dpy, name, (XFontStruct **)0, &fid))
- return fid;
-
- LockDisplay(dpy);
- GetReq(OpenFont, req);
- nbytes = req->nbytes = name ? strlen(name) : 0;
- req->fid = fid = XAllocID(dpy);
- req->length += (nbytes+3)>>2;
- Data (dpy, name, nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return (fid);
- /* can't return (req->fid) since request may have already been sent */
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Font
+XLoadFont (
+ register Display *dpy,
+ _Xconst char *name)
+{
+ register long nbytes;
+ Font fid;
+ register xOpenFontReq *req;
+
+ if (_XF86LoadQueryLocaleFont(dpy, name, (XFontStruct **)0, &fid))
+ return fid;
+
+ LockDisplay(dpy);
+ GetReq(OpenFont, req);
+ nbytes = req->nbytes = name ? strlen(name) : 0;
+ req->fid = fid = XAllocID(dpy);
+ req->length += (nbytes+3)>>2;
+ Data (dpy, name, nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (fid);
+ /* can't return (req->fid) since request may have already been sent */
+}
+
diff --git a/libX11/src/LockDis.c b/libX11/src/LockDis.c
index 12dd97df0..f7bfa7017 100644
--- a/libX11/src/LockDis.c
+++ b/libX11/src/LockDis.c
@@ -1,84 +1,84 @@
-
-/*
-
-Copyright 1993, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-/*
- * Author: Stephen Gildea, MIT X Consortium
- *
- * XLockDis.c - multi-thread application-level locking routines
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#ifdef XTHREADS
-#include "locking.h"
-#endif
-
-void
-XLockDisplay(
- register Display* dpy)
-{
-#ifdef XTHREADS
- LockDisplay(dpy);
- if (dpy->lock)
- (*dpy->lock->user_lock_display)(dpy);
- /*
- * We want the threads in the reply queue to all get out before
- * XLockDisplay returns, in case they have any side effects the
- * caller of XLockDisplay was trying to protect against.
- * XLockDisplay puts itself at the head of the event waiters queue
- * to wait for all the replies to come in.
- */
- if (dpy->lock && dpy->lock->reply_awaiters) {
- struct _XCVList *cvl;
-
- cvl = (*dpy->lock->create_cvl)(dpy);
-
- /* stuff ourselves on the head of the queue */
- cvl->next = dpy->lock->event_awaiters;
- dpy->lock->event_awaiters = cvl;
-
- while (dpy->lock->reply_awaiters)
- ConditionWait(dpy, cvl->cv);
- UnlockNextEventReader(dpy); /* pass the signal on */
- }
- UnlockDisplay(dpy);
-#endif
-}
-
-void
-XUnlockDisplay(
- register Display* dpy)
-{
-#ifdef XTHREADS
- LockDisplay(dpy);
- if (dpy->lock)
- (*dpy->lock->user_unlock_display)(dpy);
- UnlockDisplay(dpy);
-#endif
-}
+
+/*
+
+Copyright 1993, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+/*
+ * Author: Stephen Gildea, MIT X Consortium
+ *
+ * XLockDis.c - multi-thread application-level locking routines
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#ifdef XTHREADS
+#include "locking.h"
+#endif
+
+void
+XLockDisplay(
+ register Display* dpy)
+{
+#ifdef XTHREADS
+ LockDisplay(dpy);
+ if (dpy->lock)
+ (*dpy->lock->user_lock_display)(dpy);
+ /*
+ * We want the threads in the reply queue to all get out before
+ * XLockDisplay returns, in case they have any side effects the
+ * caller of XLockDisplay was trying to protect against.
+ * XLockDisplay puts itself at the head of the event waiters queue
+ * to wait for all the replies to come in.
+ */
+ if (dpy->lock && dpy->lock->reply_awaiters) {
+ struct _XCVList *cvl;
+
+ cvl = (*dpy->lock->create_cvl)(dpy);
+
+ /* stuff ourselves on the head of the queue */
+ cvl->next = dpy->lock->event_awaiters;
+ dpy->lock->event_awaiters = cvl;
+
+ while (dpy->lock->reply_awaiters)
+ ConditionWait(dpy, cvl->cv);
+ UnlockNextEventReader(dpy); /* pass the signal on */
+ }
+ UnlockDisplay(dpy);
+#endif
+}
+
+void
+XUnlockDisplay(
+ register Display* dpy)
+{
+#ifdef XTHREADS
+ LockDisplay(dpy);
+ if (dpy->lock)
+ (*dpy->lock->user_unlock_display)(dpy);
+ UnlockDisplay(dpy);
+#endif
+}
diff --git a/libX11/src/LowerWin.c b/libX11/src/LowerWin.c
index d430e6fd7..d0a2ea97d 100644
--- a/libX11/src/LowerWin.c
+++ b/libX11/src/LowerWin.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XLowerWindow(
- Display *dpy,
- Window w)
-{
- register xConfigureWindowReq *req;
- unsigned long val = Below; /* needed for macro */
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 4, req);
- req->window = w;
- req->mask = CWStackMode;
- OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XLowerWindow(
+ Display *dpy,
+ Window w)
+{
+ register xConfigureWindowReq *req;
+ unsigned long val = Below; /* needed for macro */
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 4, req);
+ req->window = w;
+ req->mask = CWStackMode;
+ OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Macros.c b/libX11/src/Macros.c
index 42d4cf1c5..eee68980a 100644
--- a/libX11/src/Macros.c
+++ b/libX11/src/Macros.c
@@ -1,287 +1,287 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#define XUTIL_DEFINE_FUNCTIONS
-#include "Xutil.h"
-
-/*
- * This file makes full definitions of routines for each macro.
- * We do not expect C programs to use these, but other languages may
- * need them.
- */
-
-int XConnectionNumber(Display *dpy) { return (ConnectionNumber(dpy)); }
-
-Window XRootWindow (Display *dpy, int scr)
-{
- return (RootWindow(dpy,scr));
-}
-
-int XDefaultScreen(Display *dpy) { return (DefaultScreen(dpy)); }
-
-Window XDefaultRootWindow (Display *dpy)
-{
- return (RootWindow(dpy,DefaultScreen(dpy)));
-}
-
-Visual *XDefaultVisual(Display *dpy, int scr)
-{
- return (DefaultVisual(dpy, scr));
-}
-
-GC XDefaultGC(Display *dpy, int scr)
-{
- return (DefaultGC(dpy,scr));
-}
-
-unsigned long XBlackPixel(Display *dpy, int scr)
-{
- return (BlackPixel(dpy, scr));
-}
-
-unsigned long XWhitePixel(Display *dpy, int scr)
-{
- return (WhitePixel(dpy,scr));
-}
-
-unsigned long XAllPlanes(void) { return AllPlanes; }
-
-int XQLength(Display *dpy) { return (QLength(dpy)); }
-
-int XDisplayWidth(Display *dpy, int scr)
-{
- return (DisplayWidth(dpy,scr));
-}
-
-int XDisplayHeight(Display *dpy, int scr)
-{
- return (DisplayHeight(dpy, scr));
-}
-
-int XDisplayWidthMM(Display *dpy, int scr)
-{
- return (DisplayWidthMM(dpy, scr));
-}
-
-int XDisplayHeightMM(Display *dpy, int scr)
-{
- return (DisplayHeightMM(dpy, scr));
-}
-
-int XDisplayPlanes(Display *dpy, int scr)
-{
- return (DisplayPlanes(dpy, scr));
-}
-
-int XDisplayCells(Display *dpy, int scr)
-{
- return (DisplayCells (dpy, scr));
-}
-
-int XScreenCount(Display *dpy) { return (ScreenCount(dpy)); }
-
-char *XServerVendor(Display *dpy) { return (ServerVendor(dpy)); }
-
-int XProtocolVersion(Display *dpy) { return (ProtocolVersion(dpy)); }
-
-int XProtocolRevision(Display *dpy) { return (ProtocolRevision(dpy));}
-
-int XVendorRelease(Display *dpy) { return (VendorRelease(dpy)); }
-
-char *XDisplayString(Display *dpy) { return (DisplayString(dpy)); }
-
-int XDefaultDepth(Display *dpy, int scr)
-{
- return(DefaultDepth(dpy, scr));
-}
-
-Colormap XDefaultColormap(Display *dpy, int scr)
-{
- return (DefaultColormap(dpy, scr));
-}
-
-int XBitmapUnit(Display *dpy) { return (BitmapUnit(dpy)); }
-
-int XBitmapBitOrder(Display *dpy) { return (BitmapBitOrder(dpy)); }
-
-int XBitmapPad(Display *dpy) { return (BitmapPad(dpy)); }
-
-int XImageByteOrder(Display *dpy) { return (ImageByteOrder(dpy)); }
-
-unsigned long XNextRequest(Display *dpy)
-{
-#ifdef WORD64
- WORD64ALIGN
- return dpy->request + 1;
-#else
- return (NextRequest(dpy));
-#endif
-}
-
-unsigned long XLastKnownRequestProcessed(Display *dpy)
-{
- return (LastKnownRequestProcessed(dpy));
-}
-
-/* screen oriented macros (toolkit) */
-Screen *XScreenOfDisplay(Display *dpy, int scr)
-{
- return (ScreenOfDisplay(dpy, scr));
-}
-
-Screen *XDefaultScreenOfDisplay(Display *dpy)
-{
- return (DefaultScreenOfDisplay(dpy));
-}
-
-Display *XDisplayOfScreen(Screen *s) { return (DisplayOfScreen(s)); }
-
-Window XRootWindowOfScreen(Screen *s) { return (RootWindowOfScreen(s)); }
-
-unsigned long XBlackPixelOfScreen(Screen *s)
-{
- return (BlackPixelOfScreen(s));
-}
-
-unsigned long XWhitePixelOfScreen(Screen *s)
-{
- return (WhitePixelOfScreen(s));
-}
-
-Colormap XDefaultColormapOfScreen(Screen *s)
-{
- return (DefaultColormapOfScreen(s));
-}
-
-int XDefaultDepthOfScreen(Screen *s)
-{
- return (DefaultDepthOfScreen(s));
-}
-
-GC XDefaultGCOfScreen(Screen *s)
-{
- return (DefaultGCOfScreen(s));
-}
-
-Visual *XDefaultVisualOfScreen(Screen *s)
-{
- return (DefaultVisualOfScreen(s));
-}
-
-int XWidthOfScreen(Screen *s) { return (WidthOfScreen(s)); }
-
-int XHeightOfScreen(Screen *s) { return (HeightOfScreen(s)); }
-
-int XWidthMMOfScreen(Screen *s) { return (WidthMMOfScreen(s)); }
-
-int XHeightMMOfScreen(Screen *s) { return (HeightMMOfScreen(s)); }
-
-int XPlanesOfScreen(Screen *s) { return (PlanesOfScreen(s)); }
-
-int XCellsOfScreen(Screen *s) { return (CellsOfScreen(s)); }
-
-int XMinCmapsOfScreen(Screen *s) { return (MinCmapsOfScreen(s)); }
-
-int XMaxCmapsOfScreen(Screen *s) { return (MaxCmapsOfScreen(s)); }
-
-Bool XDoesSaveUnders(Screen *s) { return (DoesSaveUnders(s)); }
-
-int XDoesBackingStore(Screen *s) { return (DoesBackingStore(s)); }
-
-long XEventMaskOfScreen(Screen *s) { return (EventMaskOfScreen(s)); }
-
-int XScreenNumberOfScreen (register Screen *scr)
-{
- register Display *dpy = scr->display;
- register Screen *dpyscr = dpy->screens;
- register int i;
-
- for (i = 0; i < dpy->nscreens; i++, dpyscr++) {
- if (scr == dpyscr) return i;
- }
- return -1;
-}
-
-/*
- * These macros are used to give some sugar to the image routines so that
- * naive people are more comfortable with them.
- */
-#undef XDestroyImage
-int
-XDestroyImage(
- XImage *ximage)
-{
- return((*((ximage)->f.destroy_image))((ximage)));
-}
-#undef XGetPixel
-unsigned long XGetPixel(
- XImage *ximage,
- int x, int y)
-{
- return ((*((ximage)->f.get_pixel))((ximage), (x), (y)));
-}
-#undef XPutPixel
-int XPutPixel(
- XImage *ximage,
- int x, int y,
- unsigned long pixel)
-{
- return((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)));
-}
-#undef XSubImage
-XImage *XSubImage(
- XImage *ximage,
- int x, int y,
- unsigned int width, unsigned int height)
-{
- return((*((ximage)->f.sub_image))((ximage), (x),
- (y), (width), (height)));
-}
-#undef XAddPixel
-int XAddPixel(
- XImage *ximage,
- long value)
-{
- return((*((ximage)->f.add_pixel))((ximage), (value)));
-}
-
-
-int
-XNoOp (register Display *dpy)
-{
- register xReq *req;
-
- LockDisplay(dpy);
- GetEmptyReq(NoOperation, req);
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#define XUTIL_DEFINE_FUNCTIONS
+#include "Xutil.h"
+
+/*
+ * This file makes full definitions of routines for each macro.
+ * We do not expect C programs to use these, but other languages may
+ * need them.
+ */
+
+int XConnectionNumber(Display *dpy) { return (ConnectionNumber(dpy)); }
+
+Window XRootWindow (Display *dpy, int scr)
+{
+ return (RootWindow(dpy,scr));
+}
+
+int XDefaultScreen(Display *dpy) { return (DefaultScreen(dpy)); }
+
+Window XDefaultRootWindow (Display *dpy)
+{
+ return (RootWindow(dpy,DefaultScreen(dpy)));
+}
+
+Visual *XDefaultVisual(Display *dpy, int scr)
+{
+ return (DefaultVisual(dpy, scr));
+}
+
+GC XDefaultGC(Display *dpy, int scr)
+{
+ return (DefaultGC(dpy,scr));
+}
+
+unsigned long XBlackPixel(Display *dpy, int scr)
+{
+ return (BlackPixel(dpy, scr));
+}
+
+unsigned long XWhitePixel(Display *dpy, int scr)
+{
+ return (WhitePixel(dpy,scr));
+}
+
+unsigned long XAllPlanes(void) { return AllPlanes; }
+
+int XQLength(Display *dpy) { return (QLength(dpy)); }
+
+int XDisplayWidth(Display *dpy, int scr)
+{
+ return (DisplayWidth(dpy,scr));
+}
+
+int XDisplayHeight(Display *dpy, int scr)
+{
+ return (DisplayHeight(dpy, scr));
+}
+
+int XDisplayWidthMM(Display *dpy, int scr)
+{
+ return (DisplayWidthMM(dpy, scr));
+}
+
+int XDisplayHeightMM(Display *dpy, int scr)
+{
+ return (DisplayHeightMM(dpy, scr));
+}
+
+int XDisplayPlanes(Display *dpy, int scr)
+{
+ return (DisplayPlanes(dpy, scr));
+}
+
+int XDisplayCells(Display *dpy, int scr)
+{
+ return (DisplayCells (dpy, scr));
+}
+
+int XScreenCount(Display *dpy) { return (ScreenCount(dpy)); }
+
+char *XServerVendor(Display *dpy) { return (ServerVendor(dpy)); }
+
+int XProtocolVersion(Display *dpy) { return (ProtocolVersion(dpy)); }
+
+int XProtocolRevision(Display *dpy) { return (ProtocolRevision(dpy));}
+
+int XVendorRelease(Display *dpy) { return (VendorRelease(dpy)); }
+
+char *XDisplayString(Display *dpy) { return (DisplayString(dpy)); }
+
+int XDefaultDepth(Display *dpy, int scr)
+{
+ return(DefaultDepth(dpy, scr));
+}
+
+Colormap XDefaultColormap(Display *dpy, int scr)
+{
+ return (DefaultColormap(dpy, scr));
+}
+
+int XBitmapUnit(Display *dpy) { return (BitmapUnit(dpy)); }
+
+int XBitmapBitOrder(Display *dpy) { return (BitmapBitOrder(dpy)); }
+
+int XBitmapPad(Display *dpy) { return (BitmapPad(dpy)); }
+
+int XImageByteOrder(Display *dpy) { return (ImageByteOrder(dpy)); }
+
+unsigned long XNextRequest(Display *dpy)
+{
+#ifdef WORD64
+ WORD64ALIGN
+ return dpy->request + 1;
+#else
+ return (NextRequest(dpy));
+#endif
+}
+
+unsigned long XLastKnownRequestProcessed(Display *dpy)
+{
+ return (LastKnownRequestProcessed(dpy));
+}
+
+/* screen oriented macros (toolkit) */
+Screen *XScreenOfDisplay(Display *dpy, int scr)
+{
+ return (ScreenOfDisplay(dpy, scr));
+}
+
+Screen *XDefaultScreenOfDisplay(Display *dpy)
+{
+ return (DefaultScreenOfDisplay(dpy));
+}
+
+Display *XDisplayOfScreen(Screen *s) { return (DisplayOfScreen(s)); }
+
+Window XRootWindowOfScreen(Screen *s) { return (RootWindowOfScreen(s)); }
+
+unsigned long XBlackPixelOfScreen(Screen *s)
+{
+ return (BlackPixelOfScreen(s));
+}
+
+unsigned long XWhitePixelOfScreen(Screen *s)
+{
+ return (WhitePixelOfScreen(s));
+}
+
+Colormap XDefaultColormapOfScreen(Screen *s)
+{
+ return (DefaultColormapOfScreen(s));
+}
+
+int XDefaultDepthOfScreen(Screen *s)
+{
+ return (DefaultDepthOfScreen(s));
+}
+
+GC XDefaultGCOfScreen(Screen *s)
+{
+ return (DefaultGCOfScreen(s));
+}
+
+Visual *XDefaultVisualOfScreen(Screen *s)
+{
+ return (DefaultVisualOfScreen(s));
+}
+
+int XWidthOfScreen(Screen *s) { return (WidthOfScreen(s)); }
+
+int XHeightOfScreen(Screen *s) { return (HeightOfScreen(s)); }
+
+int XWidthMMOfScreen(Screen *s) { return (WidthMMOfScreen(s)); }
+
+int XHeightMMOfScreen(Screen *s) { return (HeightMMOfScreen(s)); }
+
+int XPlanesOfScreen(Screen *s) { return (PlanesOfScreen(s)); }
+
+int XCellsOfScreen(Screen *s) { return (CellsOfScreen(s)); }
+
+int XMinCmapsOfScreen(Screen *s) { return (MinCmapsOfScreen(s)); }
+
+int XMaxCmapsOfScreen(Screen *s) { return (MaxCmapsOfScreen(s)); }
+
+Bool XDoesSaveUnders(Screen *s) { return (DoesSaveUnders(s)); }
+
+int XDoesBackingStore(Screen *s) { return (DoesBackingStore(s)); }
+
+long XEventMaskOfScreen(Screen *s) { return (EventMaskOfScreen(s)); }
+
+int XScreenNumberOfScreen (register Screen *scr)
+{
+ register Display *dpy = scr->display;
+ register Screen *dpyscr = dpy->screens;
+ register int i;
+
+ for (i = 0; i < dpy->nscreens; i++, dpyscr++) {
+ if (scr == dpyscr) return i;
+ }
+ return -1;
+}
+
+/*
+ * These macros are used to give some sugar to the image routines so that
+ * naive people are more comfortable with them.
+ */
+#undef XDestroyImage
+int
+XDestroyImage(
+ XImage *ximage)
+{
+ return((*((ximage)->f.destroy_image))((ximage)));
+}
+#undef XGetPixel
+unsigned long XGetPixel(
+ XImage *ximage,
+ int x, int y)
+{
+ return ((*((ximage)->f.get_pixel))((ximage), (x), (y)));
+}
+#undef XPutPixel
+int XPutPixel(
+ XImage *ximage,
+ int x, int y,
+ unsigned long pixel)
+{
+ return((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)));
+}
+#undef XSubImage
+XImage *XSubImage(
+ XImage *ximage,
+ int x, int y,
+ unsigned int width, unsigned int height)
+{
+ return((*((ximage)->f.sub_image))((ximage), (x),
+ (y), (width), (height)));
+}
+#undef XAddPixel
+int XAddPixel(
+ XImage *ximage,
+ long value)
+{
+ return((*((ximage)->f.add_pixel))((ximage), (value)));
+}
+
+
+int
+XNoOp (register Display *dpy)
+{
+ register xReq *req;
+
+ LockDisplay(dpy);
+ GetEmptyReq(NoOperation, req);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/MapRaised.c b/libX11/src/MapRaised.c
index 6ad6aef08..e853e404f 100644
--- a/libX11/src/MapRaised.c
+++ b/libX11/src/MapRaised.c
@@ -1,51 +1,51 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XMapRaised (
- register Display *dpy,
- Window w)
-{
- register xConfigureWindowReq *req;
- register xResourceReq *req2;
- unsigned long val = Above; /* needed for macro */
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 4, req);
- req->window = w;
- req->mask = CWStackMode;
- OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
- GetResReq (MapWindow, w, req2);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XMapRaised (
+ register Display *dpy,
+ Window w)
+{
+ register xConfigureWindowReq *req;
+ register xResourceReq *req2;
+ unsigned long val = Above; /* needed for macro */
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 4, req);
+ req->window = w;
+ req->mask = CWStackMode;
+ OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
+ GetResReq (MapWindow, w, req2);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/MapSubs.c b/libX11/src/MapSubs.c
index 14e8b8af5..737131d38 100644
--- a/libX11/src/MapSubs.c
+++ b/libX11/src/MapSubs.c
@@ -1,43 +1,43 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XMapSubwindows(
- register Display *dpy,
- Window win)
-{
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(MapSubwindows, win, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XMapSubwindows(
+ register Display *dpy,
+ Window win)
+{
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(MapSubwindows, win, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/MapWindow.c b/libX11/src/MapWindow.c
index cc041ff51..23303e9b4 100644
--- a/libX11/src/MapWindow.c
+++ b/libX11/src/MapWindow.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XMapWindow (
- register Display *dpy,
- Window w)
-{
- register xResourceReq *req;
- LockDisplay (dpy);
- GetResReq(MapWindow, w, req);
- UnlockDisplay (dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XMapWindow (
+ register Display *dpy,
+ Window w)
+{
+ register xResourceReq *req;
+ LockDisplay (dpy);
+ GetResReq(MapWindow, w, req);
+ UnlockDisplay (dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Misc.c b/libX11/src/Misc.c
index c3a028408..cd24c8b44 100644
--- a/libX11/src/Misc.c
+++ b/libX11/src/Misc.c
@@ -1,66 +1,66 @@
-/*
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-long XMaxRequestSize(Display *dpy)
-{
- return dpy->max_request_size;
-}
-
-char *XResourceManagerString(Display *dpy)
-{
- return dpy->xdefaults;
-}
-
-unsigned long XDisplayMotionBufferSize(Display *dpy)
-{
- return dpy->motion_buffer;
-}
-
-int
-XDisplayKeycodes(
- Display *dpy,
- int *min_keycode_return,
- int *max_keycode_return)
-{
- *min_keycode_return = dpy->min_keycode;
- *max_keycode_return = dpy->max_keycode;
- return 1;
-}
-
-VisualID XVisualIDFromVisual(Visual *visual)
-{
- return visual->visualid;
-}
-
-long XExtendedMaxRequestSize(Display *dpy)
-{
- return dpy->bigreq_size;
-}
+/*
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+long XMaxRequestSize(Display *dpy)
+{
+ return dpy->max_request_size;
+}
+
+char *XResourceManagerString(Display *dpy)
+{
+ return dpy->xdefaults;
+}
+
+unsigned long XDisplayMotionBufferSize(Display *dpy)
+{
+ return dpy->motion_buffer;
+}
+
+int
+XDisplayKeycodes(
+ Display *dpy,
+ int *min_keycode_return,
+ int *max_keycode_return)
+{
+ *min_keycode_return = dpy->min_keycode;
+ *max_keycode_return = dpy->max_keycode;
+ return 1;
+}
+
+VisualID XVisualIDFromVisual(Visual *visual)
+{
+ return visual->visualid;
+}
+
+long XExtendedMaxRequestSize(Display *dpy)
+{
+ return dpy->bigreq_size;
+}
diff --git a/libX11/src/MoveWin.c b/libX11/src/MoveWin.c
index 3cd75e106..719c1d7d2 100644
--- a/libX11/src/MoveWin.c
+++ b/libX11/src/MoveWin.c
@@ -1,65 +1,65 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XMoveWindow (
- register Display *dpy,
- Window w,
- int x,
- int y)
-{
- register xConfigureWindowReq *req;
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 8, req);
-
- req->window = w;
- req->mask = CWX | CWY;
-
-#ifdef MUSTCOPY
- {
- long lx = (long) x, ly = (long) y;
- dpy->bufptr -= 8;
- Data32 (dpy, (long *) &lx, 4); /* order dictated by CWX and CWY */
- Data32 (dpy, (long *) &ly, 4);
- }
-#else
- {
- CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
- *valuePtr++ = x;
- *valuePtr = y;
- }
-#endif /* MUSTCOPY */
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XMoveWindow (
+ register Display *dpy,
+ Window w,
+ int x,
+ int y)
+{
+ register xConfigureWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 8, req);
+
+ req->window = w;
+ req->mask = CWX | CWY;
+
+#ifdef MUSTCOPY
+ {
+ long lx = (long) x, ly = (long) y;
+ dpy->bufptr -= 8;
+ Data32 (dpy, (long *) &lx, 4); /* order dictated by CWX and CWY */
+ Data32 (dpy, (long *) &ly, 4);
+ }
+#else
+ {
+ CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
+ *valuePtr++ = x;
+ *valuePtr = y;
+ }
+#endif /* MUSTCOPY */
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/OCWrap.c b/libX11/src/OCWrap.c
index fe23a3495..dd04ad856 100644
--- a/libX11/src/OCWrap.c
+++ b/libX11/src/OCWrap.c
@@ -1,140 +1,140 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-XOC
-XCreateOC(XOM om, ...)
-{
- va_list var;
- XlcArgList args;
- XOC oc;
- int num_args;
-
- va_start(var, om);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, om);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (XOC) NULL;
-
- oc = (*om->methods->create_oc)(om, args, num_args);
-
- Xfree(args);
-
- if (oc) {
- oc->core.next = om->core.oc_list;
- om->core.oc_list = oc;
- }
-
- return oc;
-}
-
-void
-XDestroyOC(XOC oc)
-{
- XOC prev, oc_list;
-
- prev = oc_list = oc->core.om->core.oc_list;
- if (oc_list == oc)
- oc->core.om->core.oc_list = oc_list->core.next;
- else {
- while ((oc_list = oc_list->core.next)) {
- if (oc_list == oc) {
- prev->core.next = oc_list->core.next;
- break;
- }
- prev = oc_list;
- }
- }
-
- (*oc->methods->destroy)(oc);
-}
-
-XOM
-XOMOfOC(XOC oc)
-{
- return oc->core.om;
-}
-
-char *
-XSetOCValues(XOC oc, ...)
-{
- va_list var;
- XlcArgList args;
- char *ret;
- int num_args;
-
- va_start(var, oc);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, oc);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (char *) NULL;
-
- ret = (*oc->methods->set_values)(oc, args, num_args);
-
- Xfree(args);
-
- return ret;
-}
-
-char *
-XGetOCValues(XOC oc, ...)
-{
- va_list var;
- XlcArgList args;
- char *ret;
- int num_args;
-
- va_start(var, oc);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, oc);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (char *) NULL;
-
- ret = (*oc->methods->get_values)(oc, args, num_args);
-
- Xfree(args);
-
- return ret;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+XOC
+XCreateOC(XOM om, ...)
+{
+ va_list var;
+ XlcArgList args;
+ XOC oc;
+ int num_args;
+
+ va_start(var, om);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, om);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (XOC) NULL;
+
+ oc = (*om->methods->create_oc)(om, args, num_args);
+
+ Xfree(args);
+
+ if (oc) {
+ oc->core.next = om->core.oc_list;
+ om->core.oc_list = oc;
+ }
+
+ return oc;
+}
+
+void
+XDestroyOC(XOC oc)
+{
+ XOC prev, oc_list;
+
+ prev = oc_list = oc->core.om->core.oc_list;
+ if (oc_list == oc)
+ oc->core.om->core.oc_list = oc_list->core.next;
+ else {
+ while ((oc_list = oc_list->core.next)) {
+ if (oc_list == oc) {
+ prev->core.next = oc_list->core.next;
+ break;
+ }
+ prev = oc_list;
+ }
+ }
+
+ (*oc->methods->destroy)(oc);
+}
+
+XOM
+XOMOfOC(XOC oc)
+{
+ return oc->core.om;
+}
+
+char *
+XSetOCValues(XOC oc, ...)
+{
+ va_list var;
+ XlcArgList args;
+ char *ret;
+ int num_args;
+
+ va_start(var, oc);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, oc);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (char *) NULL;
+
+ ret = (*oc->methods->set_values)(oc, args, num_args);
+
+ Xfree(args);
+
+ return ret;
+}
+
+char *
+XGetOCValues(XOC oc, ...)
+{
+ va_list var;
+ XlcArgList args;
+ char *ret;
+ int num_args;
+
+ va_start(var, oc);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, oc);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (char *) NULL;
+
+ ret = (*oc->methods->get_values)(oc, args, num_args);
+
+ Xfree(args);
+
+ return ret;
+}
diff --git a/libX11/src/OMWrap.c b/libX11/src/OMWrap.c
index 045ca16bc..056e1169e 100644
--- a/libX11/src/OMWrap.c
+++ b/libX11/src/OMWrap.c
@@ -1,129 +1,129 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-XOM
-XOpenOM(Display *dpy, XrmDatabase rdb, _Xconst char *res_name,
- _Xconst char *res_class)
-{
- XLCd lcd = _XOpenLC((char *) NULL);
-
- if (lcd == NULL)
- return (XOM) NULL;
-
- if (lcd->methods->open_om)
- return (*lcd->methods->open_om)(lcd, dpy, rdb, res_name, res_class);
-
- return (XOM) NULL;
-}
-
-Status
-XCloseOM(XOM om)
-{
- XOC oc, next;
- XLCd lcd = om->core.lcd;
-
- next = om->core.oc_list;
-
- while ((oc = next)) {
- next = oc->core.next;
- (*oc->methods->destroy)(oc);
- }
-
- om->core.oc_list = NULL;
-
- _XCloseLC(lcd);
-
- return (*om->methods->close)(om);
-}
-
-char *
-XSetOMValues(XOM om, ...)
-{
- va_list var;
- XlcArgList args;
- char *ret;
- int num_args;
-
- va_start(var, om);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, om);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (char *) NULL;
-
- ret = (*om->methods->set_values)(om, args, num_args);
-
- Xfree(args);
-
- return ret;
-}
-
-char *
-XGetOMValues(XOM om, ...)
-{
- va_list var;
- XlcArgList args;
- char *ret;
- int num_args;
-
- va_start(var, om);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, om);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (char *) NULL;
-
- ret = (*om->methods->get_values)(om, args, num_args);
-
- Xfree(args);
-
- return ret;
-}
-
-Display *
-XDisplayOfOM(XOM om)
-{
- return om->core.display;
-}
-
-char *
-XLocaleOfOM(XOM om)
-{
- return om->core.lcd->core->name;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+XOM
+XOpenOM(Display *dpy, XrmDatabase rdb, _Xconst char *res_name,
+ _Xconst char *res_class)
+{
+ XLCd lcd = _XOpenLC((char *) NULL);
+
+ if (lcd == NULL)
+ return (XOM) NULL;
+
+ if (lcd->methods->open_om)
+ return (*lcd->methods->open_om)(lcd, dpy, rdb, res_name, res_class);
+
+ return (XOM) NULL;
+}
+
+Status
+XCloseOM(XOM om)
+{
+ XOC oc, next;
+ XLCd lcd = om->core.lcd;
+
+ next = om->core.oc_list;
+
+ while ((oc = next)) {
+ next = oc->core.next;
+ (*oc->methods->destroy)(oc);
+ }
+
+ om->core.oc_list = NULL;
+
+ _XCloseLC(lcd);
+
+ return (*om->methods->close)(om);
+}
+
+char *
+XSetOMValues(XOM om, ...)
+{
+ va_list var;
+ XlcArgList args;
+ char *ret;
+ int num_args;
+
+ va_start(var, om);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, om);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (char *) NULL;
+
+ ret = (*om->methods->set_values)(om, args, num_args);
+
+ Xfree(args);
+
+ return ret;
+}
+
+char *
+XGetOMValues(XOM om, ...)
+{
+ va_list var;
+ XlcArgList args;
+ char *ret;
+ int num_args;
+
+ va_start(var, om);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, om);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (char *) NULL;
+
+ ret = (*om->methods->get_values)(om, args, num_args);
+
+ Xfree(args);
+
+ return ret;
+}
+
+Display *
+XDisplayOfOM(XOM om)
+{
+ return om->core.display;
+}
+
+char *
+XLocaleOfOM(XOM om)
+{
+ return om->core.lcd->core->name;
+}
diff --git a/libX11/src/ParseCmd.c b/libX11/src/ParseCmd.c
index 677190812..a29f1952f 100644
--- a/libX11/src/ParseCmd.c
+++ b/libX11/src/ParseCmd.c
@@ -1,225 +1,225 @@
-
-/***********************************************************
-
-Copyright 1987, 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987, 1988 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-/* XrmParseCommand()
-
- Parse command line and store argument values into resource database
-
- Allows any un-ambiguous abbreviation for an option name, but requires
- that the table be ordered with any options that are prefixes of
- other options appearing before the longer version in the table.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xresource.h>
-#include <stdio.h>
-
-
-static void _XReportParseError(XrmOptionDescRec *arg, const char *msg)
-{
- (void) fprintf(stderr, "Error parsing argument \"%s\" (%s); %s\n",
- arg->option, arg->specifier, msg);
- exit(1);
-}
-
-void
-XrmParseCommand(
- XrmDatabase *pdb, /* data base */
- register XrmOptionDescList options, /* pointer to table of valid options */
- int num_options, /* number of options */
- _Xconst char *prefix, /* name to prefix resources with */
- int *argc, /* address of argument count */
- char **argv) /* argument list (command line) */
-{
- int foundOption;
- char **argsave;
- register int i, myargc;
- XrmBinding bindings[100];
- XrmQuark quarks[100];
- XrmBinding *start_bindings;
- XrmQuark *start_quarks;
- char *optP, *argP = NULL, optchar, argchar = 0;
- int matches;
- enum {DontCare, Check, NotSorted, Sorted} table_is_sorted;
- char **argend;
-
-#define PutCommandResource(value_str) \
- { \
- XrmStringToBindingQuarkList( \
- options[i].specifier, start_bindings, start_quarks); \
- XrmQPutStringResource(pdb, bindings, quarks, value_str); \
- } /* PutCommandResource */
-
- myargc = (*argc);
- argend = argv + myargc;
- argsave = ++argv;
-
- /* Initialize bindings/quark list with prefix (typically app name). */
- quarks[0] = XrmStringToName(prefix);
- bindings[0] = XrmBindTightly;
- start_quarks = quarks+1;
- start_bindings = bindings+1;
-
- table_is_sorted = (myargc > 2) ? Check : DontCare;
- for (--myargc; myargc > 0; --myargc, ++argv) {
- foundOption = False;
- matches = 0;
- for (i=0; i < num_options; ++i) {
- /* checking the sort order first insures we don't have to
- re-do the check if the arg hits on the last entry in
- the table. Useful because usually '=' is the last entry
- and users frequently specify geometry early in the command */
- if (table_is_sorted == Check && i > 0 &&
- strcmp(options[i].option, options[i-1].option) < 0) {
- table_is_sorted = NotSorted;
- }
- for (argP = *argv, optP = options[i].option;
- (optchar = *optP++) &&
- (argchar = *argP++) &&
- argchar == optchar;);
- if (!optchar) {
- if (!*argP ||
- options[i].argKind == XrmoptionStickyArg ||
- options[i].argKind == XrmoptionIsArg) {
- /* give preference to exact matches, StickyArg and IsArg */
- matches = 1;
- foundOption = i;
- break;
- }
- }
- else if (!argchar) {
- /* may be an abbreviation for this option */
- matches++;
- foundOption = i;
- }
- else if (table_is_sorted == Sorted && optchar > argchar) {
- break;
- }
- if (table_is_sorted == Check && i > 0 &&
- strcmp(options[i].option, options[i-1].option) < 0) {
- table_is_sorted = NotSorted;
- }
- }
- if (table_is_sorted == Check && i >= (num_options-1))
- table_is_sorted = Sorted;
- if (matches == 1) {
- i = foundOption;
- switch (options[i].argKind){
- case XrmoptionNoArg:
- --(*argc);
- PutCommandResource(options[i].value);
- break;
-
- case XrmoptionIsArg:
- --(*argc);
- PutCommandResource(*argv);
- break;
-
- case XrmoptionStickyArg:
- --(*argc);
- PutCommandResource(argP);
- break;
-
- case XrmoptionSepArg:
- if (myargc > 1) {
- ++argv; --myargc; --(*argc); --(*argc);
- PutCommandResource(*argv);
- } else
- (*argsave++) = (*argv);
- break;
-
- case XrmoptionResArg:
- if (myargc > 1) {
- ++argv; --myargc; --(*argc); --(*argc);
- XrmPutLineResource(pdb, *argv);
- } else
- (*argsave++) = (*argv);
- break;
-
- case XrmoptionSkipArg:
- if (myargc > 1) {
- --myargc;
- (*argsave++) = (*argv++);
- }
- (*argsave++) = (*argv);
- break;
-
- case XrmoptionSkipLine:
- for (; myargc > 0; myargc--)
- (*argsave++) = (*argv++);
- break;
-
- case XrmoptionSkipNArgs:
- {
- register int j = 1 + (long) options[i].value;
-
- if (j > myargc) j = myargc;
- for (; j > 0; j--) {
- (*argsave++) = (*argv++);
- myargc--;
- }
- argv--; /* went one too far before */
- myargc++;
- }
- break;
-
- default:
- _XReportParseError (&options[i], "unknown kind");
- break;
- }
- }
- else
- (*argsave++) = (*argv); /*compress arglist*/
- }
-
- if (argsave < argend)
- (*argsave)=NULL; /* put NULL terminator on compressed argv */
-}
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987, 1988 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+/* XrmParseCommand()
+
+ Parse command line and store argument values into resource database
+
+ Allows any un-ambiguous abbreviation for an option name, but requires
+ that the table be ordered with any options that are prefixes of
+ other options appearing before the longer version in the table.
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xresource.h>
+#include <stdio.h>
+
+
+static void _XReportParseError(XrmOptionDescRec *arg, const char *msg)
+{
+ (void) fprintf(stderr, "Error parsing argument \"%s\" (%s); %s\n",
+ arg->option, arg->specifier, msg);
+ exit(1);
+}
+
+void
+XrmParseCommand(
+ XrmDatabase *pdb, /* data base */
+ register XrmOptionDescList options, /* pointer to table of valid options */
+ int num_options, /* number of options */
+ _Xconst char *prefix, /* name to prefix resources with */
+ int *argc, /* address of argument count */
+ char **argv) /* argument list (command line) */
+{
+ int foundOption;
+ char **argsave;
+ register int i, myargc;
+ XrmBinding bindings[100];
+ XrmQuark quarks[100];
+ XrmBinding *start_bindings;
+ XrmQuark *start_quarks;
+ char *optP, *argP = NULL, optchar, argchar = 0;
+ int matches;
+ enum {DontCare, Check, NotSorted, Sorted} table_is_sorted;
+ char **argend;
+
+#define PutCommandResource(value_str) \
+ { \
+ XrmStringToBindingQuarkList( \
+ options[i].specifier, start_bindings, start_quarks); \
+ XrmQPutStringResource(pdb, bindings, quarks, value_str); \
+ } /* PutCommandResource */
+
+ myargc = (*argc);
+ argend = argv + myargc;
+ argsave = ++argv;
+
+ /* Initialize bindings/quark list with prefix (typically app name). */
+ quarks[0] = XrmStringToName(prefix);
+ bindings[0] = XrmBindTightly;
+ start_quarks = quarks+1;
+ start_bindings = bindings+1;
+
+ table_is_sorted = (myargc > 2) ? Check : DontCare;
+ for (--myargc; myargc > 0; --myargc, ++argv) {
+ foundOption = False;
+ matches = 0;
+ for (i=0; i < num_options; ++i) {
+ /* checking the sort order first insures we don't have to
+ re-do the check if the arg hits on the last entry in
+ the table. Useful because usually '=' is the last entry
+ and users frequently specify geometry early in the command */
+ if (table_is_sorted == Check && i > 0 &&
+ strcmp(options[i].option, options[i-1].option) < 0) {
+ table_is_sorted = NotSorted;
+ }
+ for (argP = *argv, optP = options[i].option;
+ (optchar = *optP++) &&
+ (argchar = *argP++) &&
+ argchar == optchar;);
+ if (!optchar) {
+ if (!*argP ||
+ options[i].argKind == XrmoptionStickyArg ||
+ options[i].argKind == XrmoptionIsArg) {
+ /* give preference to exact matches, StickyArg and IsArg */
+ matches = 1;
+ foundOption = i;
+ break;
+ }
+ }
+ else if (!argchar) {
+ /* may be an abbreviation for this option */
+ matches++;
+ foundOption = i;
+ }
+ else if (table_is_sorted == Sorted && optchar > argchar) {
+ break;
+ }
+ if (table_is_sorted == Check && i > 0 &&
+ strcmp(options[i].option, options[i-1].option) < 0) {
+ table_is_sorted = NotSorted;
+ }
+ }
+ if (table_is_sorted == Check && i >= (num_options-1))
+ table_is_sorted = Sorted;
+ if (matches == 1) {
+ i = foundOption;
+ switch (options[i].argKind){
+ case XrmoptionNoArg:
+ --(*argc);
+ PutCommandResource(options[i].value);
+ break;
+
+ case XrmoptionIsArg:
+ --(*argc);
+ PutCommandResource(*argv);
+ break;
+
+ case XrmoptionStickyArg:
+ --(*argc);
+ PutCommandResource(argP);
+ break;
+
+ case XrmoptionSepArg:
+ if (myargc > 1) {
+ ++argv; --myargc; --(*argc); --(*argc);
+ PutCommandResource(*argv);
+ } else
+ (*argsave++) = (*argv);
+ break;
+
+ case XrmoptionResArg:
+ if (myargc > 1) {
+ ++argv; --myargc; --(*argc); --(*argc);
+ XrmPutLineResource(pdb, *argv);
+ } else
+ (*argsave++) = (*argv);
+ break;
+
+ case XrmoptionSkipArg:
+ if (myargc > 1) {
+ --myargc;
+ (*argsave++) = (*argv++);
+ }
+ (*argsave++) = (*argv);
+ break;
+
+ case XrmoptionSkipLine:
+ for (; myargc > 0; myargc--)
+ (*argsave++) = (*argv++);
+ break;
+
+ case XrmoptionSkipNArgs:
+ {
+ register int j = 1 + (long) options[i].value;
+
+ if (j > myargc) j = myargc;
+ for (; j > 0; j--) {
+ (*argsave++) = (*argv++);
+ myargc--;
+ }
+ argv--; /* went one too far before */
+ myargc++;
+ }
+ break;
+
+ default:
+ _XReportParseError (&options[i], "unknown kind");
+ break;
+ }
+ }
+ else
+ (*argsave++) = (*argv); /*compress arglist*/
+ }
+
+ if (argsave < argend)
+ (*argsave)=NULL; /* put NULL terminator on compressed argv */
+}
diff --git a/libX11/src/ParseGeom.c b/libX11/src/ParseGeom.c
index dfd812fc9..ad33fe15b 100644
--- a/libX11/src/ParseGeom.c
+++ b/libX11/src/ParseGeom.c
@@ -1,162 +1,162 @@
-
-/*
-
-Copyright 1985, 1986, 1987,1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-
-/*
- * XParseGeometry parses strings of the form
- * "=<width>x<height>{+-}<xoffset>{+-}<yoffset>", where
- * width, height, xoffset, and yoffset are unsigned integers.
- * Example: "=80x24+300-49"
- * The equal sign is optional.
- * It returns a bitmask that indicates which of the four values
- * were actually found in the string. For each value found,
- * the corresponding argument is updated; for each value
- * not found, the corresponding argument is left unchanged.
- */
-
-static int
-ReadInteger(char *string, char **NextString)
-{
- register int Result = 0;
- int Sign = 1;
-
- if (*string == '+')
- string++;
- else if (*string == '-')
- {
- string++;
- Sign = -1;
- }
- for (; (*string >= '0') && (*string <= '9'); string++)
- {
- Result = (Result * 10) + (*string - '0');
- }
- *NextString = string;
- if (Sign >= 0)
- return (Result);
- else
- return (-Result);
-}
-
-int
-XParseGeometry (
-_Xconst char *string,
-int *x,
-int *y,
-unsigned int *width, /* RETURN */
-unsigned int *height) /* RETURN */
-{
- int mask = NoValue;
- register char *strind;
- unsigned int tempWidth = 0, tempHeight = 0;
- int tempX = 0, tempY = 0;
- char *nextCharacter;
-
- if ( (string == NULL) || (*string == '\0')) return(mask);
- if (*string == '=')
- string++; /* ignore possible '=' at beg of geometry spec */
-
- strind = (char *)string;
- if (*strind != '+' && *strind != '-' && *strind != 'x') {
- tempWidth = ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return (0);
- strind = nextCharacter;
- mask |= WidthValue;
- }
-
- if (*strind == 'x' || *strind == 'X') {
- strind++;
- tempHeight = ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return (0);
- strind = nextCharacter;
- mask |= HeightValue;
- }
-
- if ((*strind == '+') || (*strind == '-')) {
- if (*strind == '-') {
- strind++;
- tempX = -ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return (0);
- strind = nextCharacter;
- mask |= XNegative;
-
- }
- else
- { strind++;
- tempX = ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return(0);
- strind = nextCharacter;
- }
- mask |= XValue;
- if ((*strind == '+') || (*strind == '-')) {
- if (*strind == '-') {
- strind++;
- tempY = -ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return(0);
- strind = nextCharacter;
- mask |= YNegative;
-
- }
- else
- {
- strind++;
- tempY = ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return(0);
- strind = nextCharacter;
- }
- mask |= YValue;
- }
- }
-
- /* If strind isn't at the end of the string the it's an invalid
- geometry specification. */
-
- if (*strind != '\0') return (0);
-
- if (mask & XValue)
- *x = tempX;
- if (mask & YValue)
- *y = tempY;
- if (mask & WidthValue)
- *width = tempWidth;
- if (mask & HeightValue)
- *height = tempHeight;
- return (mask);
-}
+
+/*
+
+Copyright 1985, 1986, 1987,1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+
+/*
+ * XParseGeometry parses strings of the form
+ * "=<width>x<height>{+-}<xoffset>{+-}<yoffset>", where
+ * width, height, xoffset, and yoffset are unsigned integers.
+ * Example: "=80x24+300-49"
+ * The equal sign is optional.
+ * It returns a bitmask that indicates which of the four values
+ * were actually found in the string. For each value found,
+ * the corresponding argument is updated; for each value
+ * not found, the corresponding argument is left unchanged.
+ */
+
+static int
+ReadInteger(char *string, char **NextString)
+{
+ register int Result = 0;
+ int Sign = 1;
+
+ if (*string == '+')
+ string++;
+ else if (*string == '-')
+ {
+ string++;
+ Sign = -1;
+ }
+ for (; (*string >= '0') && (*string <= '9'); string++)
+ {
+ Result = (Result * 10) + (*string - '0');
+ }
+ *NextString = string;
+ if (Sign >= 0)
+ return (Result);
+ else
+ return (-Result);
+}
+
+int
+XParseGeometry (
+_Xconst char *string,
+int *x,
+int *y,
+unsigned int *width, /* RETURN */
+unsigned int *height) /* RETURN */
+{
+ int mask = NoValue;
+ register char *strind;
+ unsigned int tempWidth = 0, tempHeight = 0;
+ int tempX = 0, tempY = 0;
+ char *nextCharacter;
+
+ if ( (string == NULL) || (*string == '\0')) return(mask);
+ if (*string == '=')
+ string++; /* ignore possible '=' at beg of geometry spec */
+
+ strind = (char *)string;
+ if (*strind != '+' && *strind != '-' && *strind != 'x') {
+ tempWidth = ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return (0);
+ strind = nextCharacter;
+ mask |= WidthValue;
+ }
+
+ if (*strind == 'x' || *strind == 'X') {
+ strind++;
+ tempHeight = ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return (0);
+ strind = nextCharacter;
+ mask |= HeightValue;
+ }
+
+ if ((*strind == '+') || (*strind == '-')) {
+ if (*strind == '-') {
+ strind++;
+ tempX = -ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return (0);
+ strind = nextCharacter;
+ mask |= XNegative;
+
+ }
+ else
+ { strind++;
+ tempX = ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return(0);
+ strind = nextCharacter;
+ }
+ mask |= XValue;
+ if ((*strind == '+') || (*strind == '-')) {
+ if (*strind == '-') {
+ strind++;
+ tempY = -ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return(0);
+ strind = nextCharacter;
+ mask |= YNegative;
+
+ }
+ else
+ {
+ strind++;
+ tempY = ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return(0);
+ strind = nextCharacter;
+ }
+ mask |= YValue;
+ }
+ }
+
+ /* If strind isn't at the end of the string the it's an invalid
+ geometry specification. */
+
+ if (*strind != '\0') return (0);
+
+ if (mask & XValue)
+ *x = tempX;
+ if (mask & YValue)
+ *y = tempY;
+ if (mask & WidthValue)
+ *width = tempWidth;
+ if (mask & HeightValue)
+ *height = tempHeight;
+ return (mask);
+}
diff --git a/libX11/src/Pending.c b/libX11/src/Pending.c
index eb97060ca..16be7a0df 100644
--- a/libX11/src/Pending.c
+++ b/libX11/src/Pending.c
@@ -1,58 +1,58 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* Read in pending events if needed and return the number of queued events. */
-
-int XEventsQueued (
- register Display *dpy,
- int mode)
-{
- int ret_val;
- LockDisplay(dpy);
- if (dpy->qlen || (mode == QueuedAlready))
- ret_val = dpy->qlen;
- else
- ret_val = _XEventsQueued (dpy, mode);
- UnlockDisplay(dpy);
- return ret_val;
-}
-
-int XPending (register Display *dpy)
-{
- int ret_val;
- LockDisplay(dpy);
- if (dpy->qlen)
- ret_val = dpy->qlen;
- else
- ret_val = _XEventsQueued (dpy, QueuedAfterFlush);
- UnlockDisplay(dpy);
- return ret_val;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* Read in pending events if needed and return the number of queued events. */
+
+int XEventsQueued (
+ register Display *dpy,
+ int mode)
+{
+ int ret_val;
+ LockDisplay(dpy);
+ if (dpy->qlen || (mode == QueuedAlready))
+ ret_val = dpy->qlen;
+ else
+ ret_val = _XEventsQueued (dpy, mode);
+ UnlockDisplay(dpy);
+ return ret_val;
+}
+
+int XPending (register Display *dpy)
+{
+ int ret_val;
+ LockDisplay(dpy);
+ if (dpy->qlen)
+ ret_val = dpy->qlen;
+ else
+ ret_val = _XEventsQueued (dpy, QueuedAfterFlush);
+ UnlockDisplay(dpy);
+ return ret_val;
+}
diff --git a/libX11/src/PixFormats.c b/libX11/src/PixFormats.c
index 8e4a10027..5d25d4118 100644
--- a/libX11/src/PixFormats.c
+++ b/libX11/src/PixFormats.c
@@ -1,62 +1,62 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <stdio.h>
-
-/*
- * XListPixmapFormats - return info from connection setup
- */
-
-XPixmapFormatValues *XListPixmapFormats (
- Display *dpy,
- int *count) /* RETURN */
-{
- XPixmapFormatValues *formats = (XPixmapFormatValues *)
- Xmalloc((unsigned) (dpy->nformats * sizeof (XPixmapFormatValues)));
-
- if (formats) {
- register int i;
- register XPixmapFormatValues *f;
- register ScreenFormat *sf;
-
- /*
- * copy data from internal Xlib data structure in display
- */
- for (i = dpy->nformats, f = formats, sf = dpy->pixmap_format; i > 0;
- i--, f++, sf++) {
- f->depth = sf->depth;
- f->bits_per_pixel = sf->bits_per_pixel;
- f->scanline_pad = sf->scanline_pad;
- }
-
- *count = dpy->nformats;
- }
- return formats;
-}
+/*
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <stdio.h>
+
+/*
+ * XListPixmapFormats - return info from connection setup
+ */
+
+XPixmapFormatValues *XListPixmapFormats (
+ Display *dpy,
+ int *count) /* RETURN */
+{
+ XPixmapFormatValues *formats = (XPixmapFormatValues *)
+ Xmalloc((unsigned) (dpy->nformats * sizeof (XPixmapFormatValues)));
+
+ if (formats) {
+ register int i;
+ register XPixmapFormatValues *f;
+ register ScreenFormat *sf;
+
+ /*
+ * copy data from internal Xlib data structure in display
+ */
+ for (i = dpy->nformats, f = formats, sf = dpy->pixmap_format; i > 0;
+ i--, f++, sf++) {
+ f->depth = sf->depth;
+ f->bits_per_pixel = sf->bits_per_pixel;
+ f->scanline_pad = sf->scanline_pad;
+ }
+
+ *count = dpy->nformats;
+ }
+ return formats;
+}
diff --git a/libX11/src/PmapBgnd.c b/libX11/src/PmapBgnd.c
index 9c5155833..b25dddcca 100644
--- a/libX11/src/PmapBgnd.c
+++ b/libX11/src/PmapBgnd.c
@@ -1,48 +1,48 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowBackgroundPixmap(
- register Display *dpy,
- Window w,
- Pixmap pixmap)
-{
- register xChangeWindowAttributesReq *req;
- LockDisplay (dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWBackPixmap;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixmap);
- UnlockDisplay (dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowBackgroundPixmap(
+ register Display *dpy,
+ Window w,
+ Pixmap pixmap)
+{
+ register xChangeWindowAttributesReq *req;
+ LockDisplay (dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWBackPixmap;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixmap);
+ UnlockDisplay (dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/PmapBord.c b/libX11/src/PmapBord.c
index 7e1be616e..99937b3bc 100644
--- a/libX11/src/PmapBord.c
+++ b/libX11/src/PmapBord.c
@@ -1,48 +1,48 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowBorderPixmap(
- register Display *dpy,
- Window w,
- Pixmap pixmap)
-{
- register xChangeWindowAttributesReq *req;
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWBorderPixmap;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixmap);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowBorderPixmap(
+ register Display *dpy,
+ Window w,
+ Pixmap pixmap)
+{
+ register xChangeWindowAttributesReq *req;
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWBorderPixmap;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixmap);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/PolyReg.c b/libX11/src/PolyReg.c
index 74c8765fe..af367cf6f 100644
--- a/libX11/src/PolyReg.c
+++ b/libX11/src/PolyReg.c
@@ -1,638 +1,638 @@
-/************************************************************************
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-************************************************************************/
-
-#define LARGE_COORDINATE 1000000
-#define SMALL_COORDINATE -LARGE_COORDINATE
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-#include <X11/Xregion.h>
-#include "poly.h"
-
-/*
- * InsertEdgeInET
- *
- * Insert the given edge into the edge table.
- * First we must find the correct bucket in the
- * Edge table, then find the right slot in the
- * bucket. Finally, we can insert it.
- *
- */
-static void
-InsertEdgeInET(
- EdgeTable *ET,
- EdgeTableEntry *ETE,
- int scanline,
- ScanLineListBlock **SLLBlock,
- int *iSLLBlock)
-{
- register EdgeTableEntry *start, *prev;
- register ScanLineList *pSLL, *pPrevSLL;
- ScanLineListBlock *tmpSLLBlock;
-
- /*
- * find the right bucket to put the edge into
- */
- pPrevSLL = &ET->scanlines;
- pSLL = pPrevSLL->next;
- while (pSLL && (pSLL->scanline < scanline))
- {
- pPrevSLL = pSLL;
- pSLL = pSLL->next;
- }
-
- /*
- * reassign pSLL (pointer to ScanLineList) if necessary
- */
- if ((!pSLL) || (pSLL->scanline > scanline))
- {
- if (*iSLLBlock > SLLSPERBLOCK-1)
- {
- tmpSLLBlock =
- (ScanLineListBlock *)Xmalloc(sizeof(ScanLineListBlock));
- (*SLLBlock)->next = tmpSLLBlock;
- tmpSLLBlock->next = (ScanLineListBlock *)NULL;
- *SLLBlock = tmpSLLBlock;
- *iSLLBlock = 0;
- }
- pSLL = &((*SLLBlock)->SLLs[(*iSLLBlock)++]);
-
- pSLL->next = pPrevSLL->next;
- pSLL->edgelist = (EdgeTableEntry *)NULL;
- pPrevSLL->next = pSLL;
- }
- pSLL->scanline = scanline;
-
- /*
- * now insert the edge in the right bucket
- */
- prev = (EdgeTableEntry *)NULL;
- start = pSLL->edgelist;
- while (start && (start->bres.minor_axis < ETE->bres.minor_axis))
- {
- prev = start;
- start = start->next;
- }
- ETE->next = start;
-
- if (prev)
- prev->next = ETE;
- else
- pSLL->edgelist = ETE;
-}
-
-/*
- * CreateEdgeTable
- *
- * This routine creates the edge table for
- * scan converting polygons.
- * The Edge Table (ET) looks like:
- *
- * EdgeTable
- * --------
- * | ymax | ScanLineLists
- * |scanline|-->------------>-------------->...
- * -------- |scanline| |scanline|
- * |edgelist| |edgelist|
- * --------- ---------
- * | |
- * | |
- * V V
- * list of ETEs list of ETEs
- *
- * where ETE is an EdgeTableEntry data structure,
- * and there is one ScanLineList per scanline at
- * which an edge is initially entered.
- *
- */
-
-static void
-CreateETandAET(
- register int count,
- register XPoint *pts,
- EdgeTable *ET,
- EdgeTableEntry *AET,
- register EdgeTableEntry *pETEs,
- ScanLineListBlock *pSLLBlock)
-{
- register XPoint *top, *bottom;
- register XPoint *PrevPt, *CurrPt;
- int iSLLBlock = 0;
- int dy;
-
- if (count < 2) return;
-
- /*
- * initialize the Active Edge Table
- */
- AET->next = (EdgeTableEntry *)NULL;
- AET->back = (EdgeTableEntry *)NULL;
- AET->nextWETE = (EdgeTableEntry *)NULL;
- AET->bres.minor_axis = SMALL_COORDINATE;
-
- /*
- * initialize the Edge Table.
- */
- ET->scanlines.next = (ScanLineList *)NULL;
- ET->ymax = SMALL_COORDINATE;
- ET->ymin = LARGE_COORDINATE;
- pSLLBlock->next = (ScanLineListBlock *)NULL;
-
- PrevPt = &pts[count-1];
-
- /*
- * for each vertex in the array of points.
- * In this loop we are dealing with two vertices at
- * a time -- these make up one edge of the polygon.
- */
- while (count--)
- {
- CurrPt = pts++;
-
- /*
- * find out which point is above and which is below.
- */
- if (PrevPt->y > CurrPt->y)
- {
- bottom = PrevPt, top = CurrPt;
- pETEs->ClockWise = 0;
- }
- else
- {
- bottom = CurrPt, top = PrevPt;
- pETEs->ClockWise = 1;
- }
-
- /*
- * don't add horizontal edges to the Edge table.
- */
- if (bottom->y != top->y)
- {
- pETEs->ymax = bottom->y-1; /* -1 so we don't get last scanline */
-
- /*
- * initialize integer edge algorithm
- */
- dy = bottom->y - top->y;
- BRESINITPGONSTRUCT(dy, top->x, bottom->x, pETEs->bres);
-
- InsertEdgeInET(ET, pETEs, top->y, &pSLLBlock, &iSLLBlock);
-
- if (PrevPt->y > ET->ymax)
- ET->ymax = PrevPt->y;
- if (PrevPt->y < ET->ymin)
- ET->ymin = PrevPt->y;
- pETEs++;
- }
-
- PrevPt = CurrPt;
- }
-}
-
-/*
- * loadAET
- *
- * This routine moves EdgeTableEntries from the
- * EdgeTable into the Active Edge Table,
- * leaving them sorted by smaller x coordinate.
- *
- */
-
-static void
-loadAET(
- register EdgeTableEntry *AET,
- register EdgeTableEntry *ETEs)
-{
- register EdgeTableEntry *pPrevAET;
- register EdgeTableEntry *tmp;
-
- pPrevAET = AET;
- AET = AET->next;
- while (ETEs)
- {
- while (AET && (AET->bres.minor_axis < ETEs->bres.minor_axis))
- {
- pPrevAET = AET;
- AET = AET->next;
- }
- tmp = ETEs->next;
- ETEs->next = AET;
- if (AET)
- AET->back = ETEs;
- ETEs->back = pPrevAET;
- pPrevAET->next = ETEs;
- pPrevAET = ETEs;
-
- ETEs = tmp;
- }
-}
-
-/*
- * computeWAET
- *
- * This routine links the AET by the
- * nextWETE (winding EdgeTableEntry) link for
- * use by the winding number rule. The final
- * Active Edge Table (AET) might look something
- * like:
- *
- * AET
- * ---------- --------- ---------
- * |ymax | |ymax | |ymax |
- * | ... | |... | |... |
- * |next |->|next |->|next |->...
- * |nextWETE| |nextWETE| |nextWETE|
- * --------- --------- ^--------
- * | | |
- * V-------------------> V---> ...
- *
- */
-static void
-computeWAET(
- register EdgeTableEntry *AET)
-{
- register EdgeTableEntry *pWETE;
- register int inside = 1;
- register int isInside = 0;
-
- AET->nextWETE = (EdgeTableEntry *)NULL;
- pWETE = AET;
- AET = AET->next;
- while (AET)
- {
- if (AET->ClockWise)
- isInside++;
- else
- isInside--;
-
- if ((!inside && !isInside) ||
- ( inside && isInside))
- {
- pWETE->nextWETE = AET;
- pWETE = AET;
- inside = !inside;
- }
- AET = AET->next;
- }
- pWETE->nextWETE = (EdgeTableEntry *)NULL;
-}
-
-/*
- * InsertionSort
- *
- * Just a simple insertion sort using
- * pointers and back pointers to sort the Active
- * Edge Table.
- *
- */
-
-static int
-InsertionSort(
- register EdgeTableEntry *AET)
-{
- register EdgeTableEntry *pETEchase;
- register EdgeTableEntry *pETEinsert;
- register EdgeTableEntry *pETEchaseBackTMP;
- register int changed = 0;
-
- AET = AET->next;
- while (AET)
- {
- pETEinsert = AET;
- pETEchase = AET;
- while (pETEchase->back->bres.minor_axis > AET->bres.minor_axis)
- pETEchase = pETEchase->back;
-
- AET = AET->next;
- if (pETEchase != pETEinsert)
- {
- pETEchaseBackTMP = pETEchase->back;
- pETEinsert->back->next = AET;
- if (AET)
- AET->back = pETEinsert->back;
- pETEinsert->next = pETEchase;
- pETEchase->back->next = pETEinsert;
- pETEchase->back = pETEinsert;
- pETEinsert->back = pETEchaseBackTMP;
- changed = 1;
- }
- }
- return(changed);
-}
-
-/*
- * Clean up our act.
- */
-static void
-FreeStorage(
- register ScanLineListBlock *pSLLBlock)
-{
- register ScanLineListBlock *tmpSLLBlock;
-
- while (pSLLBlock)
- {
- tmpSLLBlock = pSLLBlock->next;
- Xfree((char *)pSLLBlock);
- pSLLBlock = tmpSLLBlock;
- }
-}
-
-/*
- * Create an array of rectangles from a list of points.
- * If indeed these things (POINTS, RECTS) are the same,
- * then this proc is still needed, because it allocates
- * storage for the array, which was allocated on the
- * stack by the calling procedure.
- *
- */
-static int PtsToRegion(
- register int numFullPtBlocks,
- register int iCurPtBlock,
- POINTBLOCK *FirstPtBlock,
- REGION *reg)
-{
- register BOX *rects;
- register XPoint *pts;
- register POINTBLOCK *CurPtBlock;
- register int i;
- register BOX *extents;
- register int numRects;
- BOX *prevRects = reg->rects;
-
- extents = &reg->extents;
-
- numRects = ((numFullPtBlocks * NUMPTSTOBUFFER) + iCurPtBlock) >> 1;
-
- if (!(reg->rects = (BOX *)Xrealloc((char *)reg->rects,
- (unsigned) (sizeof(BOX) * numRects)))) {
- Xfree(prevRects);
- return(0);
- }
-
- reg->size = numRects;
- CurPtBlock = FirstPtBlock;
- rects = reg->rects - 1;
- numRects = 0;
- extents->x1 = MAXSHORT, extents->x2 = MINSHORT;
-
- for ( ; numFullPtBlocks >= 0; numFullPtBlocks--) {
- /* the loop uses 2 points per iteration */
- i = NUMPTSTOBUFFER >> 1;
- if (!numFullPtBlocks)
- i = iCurPtBlock >> 1;
- for (pts = CurPtBlock->pts; i--; pts += 2) {
- if (pts->x == pts[1].x)
- continue;
- if (numRects && pts->x == rects->x1 && pts->y == rects->y2 &&
- pts[1].x == rects->x2 &&
- (numRects == 1 || rects[-1].y1 != rects->y1) &&
- (i && pts[2].y > pts[1].y)) {
- rects->y2 = pts[1].y + 1;
- continue;
- }
- numRects++;
- rects++;
- rects->x1 = pts->x; rects->y1 = pts->y;
- rects->x2 = pts[1].x; rects->y2 = pts[1].y + 1;
- if (rects->x1 < extents->x1)
- extents->x1 = rects->x1;
- if (rects->x2 > extents->x2)
- extents->x2 = rects->x2;
- }
- CurPtBlock = CurPtBlock->next;
- }
-
- if (numRects) {
- extents->y1 = reg->rects->y1;
- extents->y2 = rects->y2;
- } else {
- extents->x1 = 0;
- extents->y1 = 0;
- extents->x2 = 0;
- extents->y2 = 0;
- }
- reg->numRects = numRects;
-
- return(TRUE);
-}
-
-/*
- * polytoregion
- *
- * Scan converts a polygon by returning a run-length
- * encoding of the resultant bitmap -- the run-length
- * encoding is in the form of an array of rectangles.
- */
-Region
-XPolygonRegion(
- XPoint *Pts, /* the pts */
- int Count, /* number of pts */
- int rule) /* winding rule */
-{
- Region region;
- register EdgeTableEntry *pAET; /* Active Edge Table */
- register int y; /* current scanline */
- register int iPts = 0; /* number of pts in buffer */
- register EdgeTableEntry *pWETE; /* Winding Edge Table Entry*/
- register ScanLineList *pSLL; /* current scanLineList */
- register XPoint *pts; /* output buffer */
- EdgeTableEntry *pPrevAET; /* ptr to previous AET */
- EdgeTable ET; /* header node for ET */
- EdgeTableEntry AET; /* header node for AET */
- EdgeTableEntry *pETEs; /* EdgeTableEntries pool */
- ScanLineListBlock SLLBlock; /* header for scanlinelist */
- int fixWAET = FALSE;
- POINTBLOCK FirstPtBlock, *curPtBlock; /* PtBlock buffers */
- POINTBLOCK *tmpPtBlock;
- int numFullPtBlocks = 0;
-
- if (! (region = XCreateRegion())) return (Region) NULL;
-
- /* special case a rectangle */
- pts = Pts;
- if (((Count == 4) ||
- ((Count == 5) && (pts[4].x == pts[0].x) && (pts[4].y == pts[0].y))) &&
- (((pts[0].y == pts[1].y) &&
- (pts[1].x == pts[2].x) &&
- (pts[2].y == pts[3].y) &&
- (pts[3].x == pts[0].x)) ||
- ((pts[0].x == pts[1].x) &&
- (pts[1].y == pts[2].y) &&
- (pts[2].x == pts[3].x) &&
- (pts[3].y == pts[0].y)))) {
- region->extents.x1 = min(pts[0].x, pts[2].x);
- region->extents.y1 = min(pts[0].y, pts[2].y);
- region->extents.x2 = max(pts[0].x, pts[2].x);
- region->extents.y2 = max(pts[0].y, pts[2].y);
- if ((region->extents.x1 != region->extents.x2) &&
- (region->extents.y1 != region->extents.y2)) {
- region->numRects = 1;
- *(region->rects) = region->extents;
- }
- return(region);
- }
-
- if (Count < 2) return region;
-
- if (! (pETEs = (EdgeTableEntry *)
- Xmalloc((unsigned) (sizeof(EdgeTableEntry) * Count)))) {
- XDestroyRegion(region);
- return (Region) NULL;
- }
-
- pts = FirstPtBlock.pts;
- CreateETandAET(Count, Pts, &ET, &AET, pETEs, &SLLBlock);
- pSLL = ET.scanlines.next;
- curPtBlock = &FirstPtBlock;
-
- if (rule == EvenOddRule) {
- /*
- * for each scanline
- */
- for (y = ET.ymin; y < ET.ymax; y++) {
- /*
- * Add a new edge to the active edge table when we
- * get to the next edge.
- */
- if (pSLL != NULL && y == pSLL->scanline) {
- loadAET(&AET, pSLL->edgelist);
- pSLL = pSLL->next;
- }
- pPrevAET = &AET;
- pAET = AET.next;
-
- /*
- * for each active edge
- */
- while (pAET) {
- pts->x = pAET->bres.minor_axis, pts->y = y;
- pts++, iPts++;
-
- /*
- * send out the buffer
- */
- if (iPts == NUMPTSTOBUFFER) {
- tmpPtBlock = (POINTBLOCK *)Xmalloc(sizeof(POINTBLOCK));
- curPtBlock->next = tmpPtBlock;
- curPtBlock = tmpPtBlock;
- pts = curPtBlock->pts;
- numFullPtBlocks++;
- iPts = 0;
- }
- EVALUATEEDGEEVENODD(pAET, pPrevAET, y);
- }
- (void) InsertionSort(&AET);
- }
- }
- else {
- /*
- * for each scanline
- */
- for (y = ET.ymin; y < ET.ymax; y++) {
- /*
- * Add a new edge to the active edge table when we
- * get to the next edge.
- */
- if (pSLL != NULL && y == pSLL->scanline) {
- loadAET(&AET, pSLL->edgelist);
- computeWAET(&AET);
- pSLL = pSLL->next;
- }
- pPrevAET = &AET;
- pAET = AET.next;
- pWETE = pAET;
-
- /*
- * for each active edge
- */
- while (pAET) {
- /*
- * add to the buffer only those edges that
- * are in the Winding active edge table.
- */
- if (pWETE == pAET) {
- pts->x = pAET->bres.minor_axis, pts->y = y;
- pts++, iPts++;
-
- /*
- * send out the buffer
- */
- if (iPts == NUMPTSTOBUFFER) {
- tmpPtBlock = (POINTBLOCK *)Xmalloc(sizeof(POINTBLOCK));
- curPtBlock->next = tmpPtBlock;
- curPtBlock = tmpPtBlock;
- pts = curPtBlock->pts;
- numFullPtBlocks++; iPts = 0;
- }
- pWETE = pWETE->nextWETE;
- }
- EVALUATEEDGEWINDING(pAET, pPrevAET, y, fixWAET);
- }
-
- /*
- * recompute the winding active edge table if
- * we just resorted or have exited an edge.
- */
- if (InsertionSort(&AET) || fixWAET) {
- computeWAET(&AET);
- fixWAET = FALSE;
- }
- }
- }
- FreeStorage(SLLBlock.next);
- (void) PtsToRegion(numFullPtBlocks, iPts, &FirstPtBlock, region);
- for (curPtBlock = FirstPtBlock.next; --numFullPtBlocks >= 0;) {
- tmpPtBlock = curPtBlock->next;
- Xfree((char *)curPtBlock);
- curPtBlock = tmpPtBlock;
- }
- Xfree((char *)pETEs);
- return(region);
-}
+/************************************************************************
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+************************************************************************/
+
+#define LARGE_COORDINATE 1000000
+#define SMALL_COORDINATE -LARGE_COORDINATE
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+#include <X11/Xregion.h>
+#include "poly.h"
+
+/*
+ * InsertEdgeInET
+ *
+ * Insert the given edge into the edge table.
+ * First we must find the correct bucket in the
+ * Edge table, then find the right slot in the
+ * bucket. Finally, we can insert it.
+ *
+ */
+static void
+InsertEdgeInET(
+ EdgeTable *ET,
+ EdgeTableEntry *ETE,
+ int scanline,
+ ScanLineListBlock **SLLBlock,
+ int *iSLLBlock)
+{
+ register EdgeTableEntry *start, *prev;
+ register ScanLineList *pSLL, *pPrevSLL;
+ ScanLineListBlock *tmpSLLBlock;
+
+ /*
+ * find the right bucket to put the edge into
+ */
+ pPrevSLL = &ET->scanlines;
+ pSLL = pPrevSLL->next;
+ while (pSLL && (pSLL->scanline < scanline))
+ {
+ pPrevSLL = pSLL;
+ pSLL = pSLL->next;
+ }
+
+ /*
+ * reassign pSLL (pointer to ScanLineList) if necessary
+ */
+ if ((!pSLL) || (pSLL->scanline > scanline))
+ {
+ if (*iSLLBlock > SLLSPERBLOCK-1)
+ {
+ tmpSLLBlock =
+ (ScanLineListBlock *)Xmalloc(sizeof(ScanLineListBlock));
+ (*SLLBlock)->next = tmpSLLBlock;
+ tmpSLLBlock->next = (ScanLineListBlock *)NULL;
+ *SLLBlock = tmpSLLBlock;
+ *iSLLBlock = 0;
+ }
+ pSLL = &((*SLLBlock)->SLLs[(*iSLLBlock)++]);
+
+ pSLL->next = pPrevSLL->next;
+ pSLL->edgelist = (EdgeTableEntry *)NULL;
+ pPrevSLL->next = pSLL;
+ }
+ pSLL->scanline = scanline;
+
+ /*
+ * now insert the edge in the right bucket
+ */
+ prev = (EdgeTableEntry *)NULL;
+ start = pSLL->edgelist;
+ while (start && (start->bres.minor_axis < ETE->bres.minor_axis))
+ {
+ prev = start;
+ start = start->next;
+ }
+ ETE->next = start;
+
+ if (prev)
+ prev->next = ETE;
+ else
+ pSLL->edgelist = ETE;
+}
+
+/*
+ * CreateEdgeTable
+ *
+ * This routine creates the edge table for
+ * scan converting polygons.
+ * The Edge Table (ET) looks like:
+ *
+ * EdgeTable
+ * --------
+ * | ymax | ScanLineLists
+ * |scanline|-->------------>-------------->...
+ * -------- |scanline| |scanline|
+ * |edgelist| |edgelist|
+ * --------- ---------
+ * | |
+ * | |
+ * V V
+ * list of ETEs list of ETEs
+ *
+ * where ETE is an EdgeTableEntry data structure,
+ * and there is one ScanLineList per scanline at
+ * which an edge is initially entered.
+ *
+ */
+
+static void
+CreateETandAET(
+ register int count,
+ register XPoint *pts,
+ EdgeTable *ET,
+ EdgeTableEntry *AET,
+ register EdgeTableEntry *pETEs,
+ ScanLineListBlock *pSLLBlock)
+{
+ register XPoint *top, *bottom;
+ register XPoint *PrevPt, *CurrPt;
+ int iSLLBlock = 0;
+ int dy;
+
+ if (count < 2) return;
+
+ /*
+ * initialize the Active Edge Table
+ */
+ AET->next = (EdgeTableEntry *)NULL;
+ AET->back = (EdgeTableEntry *)NULL;
+ AET->nextWETE = (EdgeTableEntry *)NULL;
+ AET->bres.minor_axis = SMALL_COORDINATE;
+
+ /*
+ * initialize the Edge Table.
+ */
+ ET->scanlines.next = (ScanLineList *)NULL;
+ ET->ymax = SMALL_COORDINATE;
+ ET->ymin = LARGE_COORDINATE;
+ pSLLBlock->next = (ScanLineListBlock *)NULL;
+
+ PrevPt = &pts[count-1];
+
+ /*
+ * for each vertex in the array of points.
+ * In this loop we are dealing with two vertices at
+ * a time -- these make up one edge of the polygon.
+ */
+ while (count--)
+ {
+ CurrPt = pts++;
+
+ /*
+ * find out which point is above and which is below.
+ */
+ if (PrevPt->y > CurrPt->y)
+ {
+ bottom = PrevPt, top = CurrPt;
+ pETEs->ClockWise = 0;
+ }
+ else
+ {
+ bottom = CurrPt, top = PrevPt;
+ pETEs->ClockWise = 1;
+ }
+
+ /*
+ * don't add horizontal edges to the Edge table.
+ */
+ if (bottom->y != top->y)
+ {
+ pETEs->ymax = bottom->y-1; /* -1 so we don't get last scanline */
+
+ /*
+ * initialize integer edge algorithm
+ */
+ dy = bottom->y - top->y;
+ BRESINITPGONSTRUCT(dy, top->x, bottom->x, pETEs->bres);
+
+ InsertEdgeInET(ET, pETEs, top->y, &pSLLBlock, &iSLLBlock);
+
+ if (PrevPt->y > ET->ymax)
+ ET->ymax = PrevPt->y;
+ if (PrevPt->y < ET->ymin)
+ ET->ymin = PrevPt->y;
+ pETEs++;
+ }
+
+ PrevPt = CurrPt;
+ }
+}
+
+/*
+ * loadAET
+ *
+ * This routine moves EdgeTableEntries from the
+ * EdgeTable into the Active Edge Table,
+ * leaving them sorted by smaller x coordinate.
+ *
+ */
+
+static void
+loadAET(
+ register EdgeTableEntry *AET,
+ register EdgeTableEntry *ETEs)
+{
+ register EdgeTableEntry *pPrevAET;
+ register EdgeTableEntry *tmp;
+
+ pPrevAET = AET;
+ AET = AET->next;
+ while (ETEs)
+ {
+ while (AET && (AET->bres.minor_axis < ETEs->bres.minor_axis))
+ {
+ pPrevAET = AET;
+ AET = AET->next;
+ }
+ tmp = ETEs->next;
+ ETEs->next = AET;
+ if (AET)
+ AET->back = ETEs;
+ ETEs->back = pPrevAET;
+ pPrevAET->next = ETEs;
+ pPrevAET = ETEs;
+
+ ETEs = tmp;
+ }
+}
+
+/*
+ * computeWAET
+ *
+ * This routine links the AET by the
+ * nextWETE (winding EdgeTableEntry) link for
+ * use by the winding number rule. The final
+ * Active Edge Table (AET) might look something
+ * like:
+ *
+ * AET
+ * ---------- --------- ---------
+ * |ymax | |ymax | |ymax |
+ * | ... | |... | |... |
+ * |next |->|next |->|next |->...
+ * |nextWETE| |nextWETE| |nextWETE|
+ * --------- --------- ^--------
+ * | | |
+ * V-------------------> V---> ...
+ *
+ */
+static void
+computeWAET(
+ register EdgeTableEntry *AET)
+{
+ register EdgeTableEntry *pWETE;
+ register int inside = 1;
+ register int isInside = 0;
+
+ AET->nextWETE = (EdgeTableEntry *)NULL;
+ pWETE = AET;
+ AET = AET->next;
+ while (AET)
+ {
+ if (AET->ClockWise)
+ isInside++;
+ else
+ isInside--;
+
+ if ((!inside && !isInside) ||
+ ( inside && isInside))
+ {
+ pWETE->nextWETE = AET;
+ pWETE = AET;
+ inside = !inside;
+ }
+ AET = AET->next;
+ }
+ pWETE->nextWETE = (EdgeTableEntry *)NULL;
+}
+
+/*
+ * InsertionSort
+ *
+ * Just a simple insertion sort using
+ * pointers and back pointers to sort the Active
+ * Edge Table.
+ *
+ */
+
+static int
+InsertionSort(
+ register EdgeTableEntry *AET)
+{
+ register EdgeTableEntry *pETEchase;
+ register EdgeTableEntry *pETEinsert;
+ register EdgeTableEntry *pETEchaseBackTMP;
+ register int changed = 0;
+
+ AET = AET->next;
+ while (AET)
+ {
+ pETEinsert = AET;
+ pETEchase = AET;
+ while (pETEchase->back->bres.minor_axis > AET->bres.minor_axis)
+ pETEchase = pETEchase->back;
+
+ AET = AET->next;
+ if (pETEchase != pETEinsert)
+ {
+ pETEchaseBackTMP = pETEchase->back;
+ pETEinsert->back->next = AET;
+ if (AET)
+ AET->back = pETEinsert->back;
+ pETEinsert->next = pETEchase;
+ pETEchase->back->next = pETEinsert;
+ pETEchase->back = pETEinsert;
+ pETEinsert->back = pETEchaseBackTMP;
+ changed = 1;
+ }
+ }
+ return(changed);
+}
+
+/*
+ * Clean up our act.
+ */
+static void
+FreeStorage(
+ register ScanLineListBlock *pSLLBlock)
+{
+ register ScanLineListBlock *tmpSLLBlock;
+
+ while (pSLLBlock)
+ {
+ tmpSLLBlock = pSLLBlock->next;
+ Xfree((char *)pSLLBlock);
+ pSLLBlock = tmpSLLBlock;
+ }
+}
+
+/*
+ * Create an array of rectangles from a list of points.
+ * If indeed these things (POINTS, RECTS) are the same,
+ * then this proc is still needed, because it allocates
+ * storage for the array, which was allocated on the
+ * stack by the calling procedure.
+ *
+ */
+static int PtsToRegion(
+ register int numFullPtBlocks,
+ register int iCurPtBlock,
+ POINTBLOCK *FirstPtBlock,
+ REGION *reg)
+{
+ register BOX *rects;
+ register XPoint *pts;
+ register POINTBLOCK *CurPtBlock;
+ register int i;
+ register BOX *extents;
+ register int numRects;
+ BOX *prevRects = reg->rects;
+
+ extents = &reg->extents;
+
+ numRects = ((numFullPtBlocks * NUMPTSTOBUFFER) + iCurPtBlock) >> 1;
+
+ if (!(reg->rects = (BOX *)Xrealloc((char *)reg->rects,
+ (unsigned) (sizeof(BOX) * numRects)))) {
+ Xfree(prevRects);
+ return(0);
+ }
+
+ reg->size = numRects;
+ CurPtBlock = FirstPtBlock;
+ rects = reg->rects - 1;
+ numRects = 0;
+ extents->x1 = MAXSHORT, extents->x2 = MINSHORT;
+
+ for ( ; numFullPtBlocks >= 0; numFullPtBlocks--) {
+ /* the loop uses 2 points per iteration */
+ i = NUMPTSTOBUFFER >> 1;
+ if (!numFullPtBlocks)
+ i = iCurPtBlock >> 1;
+ for (pts = CurPtBlock->pts; i--; pts += 2) {
+ if (pts->x == pts[1].x)
+ continue;
+ if (numRects && pts->x == rects->x1 && pts->y == rects->y2 &&
+ pts[1].x == rects->x2 &&
+ (numRects == 1 || rects[-1].y1 != rects->y1) &&
+ (i && pts[2].y > pts[1].y)) {
+ rects->y2 = pts[1].y + 1;
+ continue;
+ }
+ numRects++;
+ rects++;
+ rects->x1 = pts->x; rects->y1 = pts->y;
+ rects->x2 = pts[1].x; rects->y2 = pts[1].y + 1;
+ if (rects->x1 < extents->x1)
+ extents->x1 = rects->x1;
+ if (rects->x2 > extents->x2)
+ extents->x2 = rects->x2;
+ }
+ CurPtBlock = CurPtBlock->next;
+ }
+
+ if (numRects) {
+ extents->y1 = reg->rects->y1;
+ extents->y2 = rects->y2;
+ } else {
+ extents->x1 = 0;
+ extents->y1 = 0;
+ extents->x2 = 0;
+ extents->y2 = 0;
+ }
+ reg->numRects = numRects;
+
+ return(TRUE);
+}
+
+/*
+ * polytoregion
+ *
+ * Scan converts a polygon by returning a run-length
+ * encoding of the resultant bitmap -- the run-length
+ * encoding is in the form of an array of rectangles.
+ */
+Region
+XPolygonRegion(
+ XPoint *Pts, /* the pts */
+ int Count, /* number of pts */
+ int rule) /* winding rule */
+{
+ Region region;
+ register EdgeTableEntry *pAET; /* Active Edge Table */
+ register int y; /* current scanline */
+ register int iPts = 0; /* number of pts in buffer */
+ register EdgeTableEntry *pWETE; /* Winding Edge Table Entry*/
+ register ScanLineList *pSLL; /* current scanLineList */
+ register XPoint *pts; /* output buffer */
+ EdgeTableEntry *pPrevAET; /* ptr to previous AET */
+ EdgeTable ET; /* header node for ET */
+ EdgeTableEntry AET; /* header node for AET */
+ EdgeTableEntry *pETEs; /* EdgeTableEntries pool */
+ ScanLineListBlock SLLBlock; /* header for scanlinelist */
+ int fixWAET = FALSE;
+ POINTBLOCK FirstPtBlock, *curPtBlock; /* PtBlock buffers */
+ POINTBLOCK *tmpPtBlock;
+ int numFullPtBlocks = 0;
+
+ if (! (region = XCreateRegion())) return (Region) NULL;
+
+ /* special case a rectangle */
+ pts = Pts;
+ if (((Count == 4) ||
+ ((Count == 5) && (pts[4].x == pts[0].x) && (pts[4].y == pts[0].y))) &&
+ (((pts[0].y == pts[1].y) &&
+ (pts[1].x == pts[2].x) &&
+ (pts[2].y == pts[3].y) &&
+ (pts[3].x == pts[0].x)) ||
+ ((pts[0].x == pts[1].x) &&
+ (pts[1].y == pts[2].y) &&
+ (pts[2].x == pts[3].x) &&
+ (pts[3].y == pts[0].y)))) {
+ region->extents.x1 = min(pts[0].x, pts[2].x);
+ region->extents.y1 = min(pts[0].y, pts[2].y);
+ region->extents.x2 = max(pts[0].x, pts[2].x);
+ region->extents.y2 = max(pts[0].y, pts[2].y);
+ if ((region->extents.x1 != region->extents.x2) &&
+ (region->extents.y1 != region->extents.y2)) {
+ region->numRects = 1;
+ *(region->rects) = region->extents;
+ }
+ return(region);
+ }
+
+ if (Count < 2) return region;
+
+ if (! (pETEs = (EdgeTableEntry *)
+ Xmalloc((unsigned) (sizeof(EdgeTableEntry) * Count)))) {
+ XDestroyRegion(region);
+ return (Region) NULL;
+ }
+
+ pts = FirstPtBlock.pts;
+ CreateETandAET(Count, Pts, &ET, &AET, pETEs, &SLLBlock);
+ pSLL = ET.scanlines.next;
+ curPtBlock = &FirstPtBlock;
+
+ if (rule == EvenOddRule) {
+ /*
+ * for each scanline
+ */
+ for (y = ET.ymin; y < ET.ymax; y++) {
+ /*
+ * Add a new edge to the active edge table when we
+ * get to the next edge.
+ */
+ if (pSLL != NULL && y == pSLL->scanline) {
+ loadAET(&AET, pSLL->edgelist);
+ pSLL = pSLL->next;
+ }
+ pPrevAET = &AET;
+ pAET = AET.next;
+
+ /*
+ * for each active edge
+ */
+ while (pAET) {
+ pts->x = pAET->bres.minor_axis, pts->y = y;
+ pts++, iPts++;
+
+ /*
+ * send out the buffer
+ */
+ if (iPts == NUMPTSTOBUFFER) {
+ tmpPtBlock = (POINTBLOCK *)Xmalloc(sizeof(POINTBLOCK));
+ curPtBlock->next = tmpPtBlock;
+ curPtBlock = tmpPtBlock;
+ pts = curPtBlock->pts;
+ numFullPtBlocks++;
+ iPts = 0;
+ }
+ EVALUATEEDGEEVENODD(pAET, pPrevAET, y);
+ }
+ (void) InsertionSort(&AET);
+ }
+ }
+ else {
+ /*
+ * for each scanline
+ */
+ for (y = ET.ymin; y < ET.ymax; y++) {
+ /*
+ * Add a new edge to the active edge table when we
+ * get to the next edge.
+ */
+ if (pSLL != NULL && y == pSLL->scanline) {
+ loadAET(&AET, pSLL->edgelist);
+ computeWAET(&AET);
+ pSLL = pSLL->next;
+ }
+ pPrevAET = &AET;
+ pAET = AET.next;
+ pWETE = pAET;
+
+ /*
+ * for each active edge
+ */
+ while (pAET) {
+ /*
+ * add to the buffer only those edges that
+ * are in the Winding active edge table.
+ */
+ if (pWETE == pAET) {
+ pts->x = pAET->bres.minor_axis, pts->y = y;
+ pts++, iPts++;
+
+ /*
+ * send out the buffer
+ */
+ if (iPts == NUMPTSTOBUFFER) {
+ tmpPtBlock = (POINTBLOCK *)Xmalloc(sizeof(POINTBLOCK));
+ curPtBlock->next = tmpPtBlock;
+ curPtBlock = tmpPtBlock;
+ pts = curPtBlock->pts;
+ numFullPtBlocks++; iPts = 0;
+ }
+ pWETE = pWETE->nextWETE;
+ }
+ EVALUATEEDGEWINDING(pAET, pPrevAET, y, fixWAET);
+ }
+
+ /*
+ * recompute the winding active edge table if
+ * we just resorted or have exited an edge.
+ */
+ if (InsertionSort(&AET) || fixWAET) {
+ computeWAET(&AET);
+ fixWAET = FALSE;
+ }
+ }
+ }
+ FreeStorage(SLLBlock.next);
+ (void) PtsToRegion(numFullPtBlocks, iPts, &FirstPtBlock, region);
+ for (curPtBlock = FirstPtBlock.next; --numFullPtBlocks >= 0;) {
+ tmpPtBlock = curPtBlock->next;
+ Xfree((char *)curPtBlock);
+ curPtBlock = tmpPtBlock;
+ }
+ Xfree((char *)pETEs);
+ return(region);
+}
diff --git a/libX11/src/PolyTxt.c b/libX11/src/PolyTxt.c
index 471383b57..727cdbb4a 100644
--- a/libX11/src/PolyTxt.c
+++ b/libX11/src/PolyTxt.c
@@ -1,234 +1,234 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawText(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- XTextItem *items,
- int nitems)
-{
- register int i;
- register XTextItem *item;
- int length = 0;
- register xPolyText8Req *req;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq (PolyText8, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->x = x;
- req->y = y;
-
- item = items;
- for (i=0; i < nitems; i++) {
- if (item->font)
- length += 5; /* a 255 byte, plus size of Font id */
- if (item->delta)
- {
- if (item->delta > 0)
- {
- length += SIZEOF(xTextElt) * ((item->delta + 126) / 127);
- }
- else
- {
- length += SIZEOF(xTextElt) * ((-item->delta + 127) / 128);
- }
- }
- if (item->nchars > 0)
- {
- length += SIZEOF(xTextElt) * ((item->nchars + 253) / 254 - 1);
- if (!item->delta) length += SIZEOF(xTextElt);
- length += item->nchars;
- }
- item++;
- }
-
- req->length += (length + 3)>>2; /* convert to number of 32-bit words */
-
-
- /*
- * If the entire request does not fit into the remaining space in the
- * buffer, flush the buffer first. If the request does fit into the
- * empty buffer, then we won't have to flush it at the end to keep
- * the buffer 32-bit aligned.
- */
-
- if (dpy->bufptr + length > dpy->bufmax)
- _XFlush (dpy);
-
- item = items;
- for (i=0; i< nitems; i++) {
-
- if (item->font) {
- /* to mark a font shift, write a 255 byte followed by
- the 4 bytes of font ID, big-end first */
- register unsigned char *f;
- BufAlloc (unsigned char *, f, 5);
-
- f[0] = 255;
- f[1] = (item->font & 0xff000000) >> 24;
- f[2] = (item->font & 0x00ff0000) >> 16;
- f[3] = (item->font & 0x0000ff00) >> 8;
- f[4] = item->font & 0x000000ff;
-
- /* update GC shadow */
- gc->values.font = item->font;
- }
-
- {
- int nbytes = SIZEOF(xTextElt);
- int PartialNChars = item->nchars;
- int PartialDelta = item->delta;
- /* register xTextElt *elt; */
- int FirstTimeThrough = True;
- char *CharacterOffset = item->chars;
- char *tbuf = NULL;
-
- while((PartialDelta < -128) || (PartialDelta > 127))
- {
- int nb = SIZEOF(xTextElt);
-
- BufAlloc (char *, tbuf, nb);
- *tbuf = 0; /* elt->len */
- if (PartialDelta > 0 )
- {
- *(tbuf+1) = 127; /* elt->delta */
- PartialDelta = PartialDelta - 127;
- }
- else
- {
- /* -128 = 0x8, need to be careful of signed chars... */
- *((unsigned char *)(tbuf+1)) = 0x80; /* elt->delta */
- PartialDelta = PartialDelta + 128;
- }
- }
- if (PartialDelta)
- {
- BufAlloc (char *, tbuf , nbytes);
- *tbuf = 0; /* elt->len */
- *(tbuf+1) = PartialDelta; /* elt->delta */
- }
- while(PartialNChars > 254)
- {
- nbytes = 254;
- if (FirstTimeThrough)
- {
- FirstTimeThrough = False;
- if (!item->delta)
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (char *, tbuf, nbytes);
- *(tbuf+1) = 0; /* elt->delta */
- }
- else
- {
- char *DummyChar;
- BufAlloc(char *, DummyChar, nbytes);
- }
- }
- else
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (char *, tbuf, nbytes);
- *(tbuf+1) = 0; /* elt->delta */
- }
- /* watch out for signs on chars */
- *(unsigned char *)tbuf = 254; /* elt->len */
- memcpy (tbuf+2 , CharacterOffset, 254);
- PartialNChars = PartialNChars - 254;
- CharacterOffset += 254;
-
- }
- if (PartialNChars)
- {
- nbytes = PartialNChars;
- if (FirstTimeThrough)
- {
- FirstTimeThrough = False;
- if (!item->delta)
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (char *, tbuf, nbytes);
- *(tbuf+1) = 0; /* elt->delta */
- }
- else
- {
- char *DummyChar;
- BufAlloc(char *, DummyChar, nbytes);
- }
- }
- else
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (char *, tbuf, nbytes);
- *(tbuf+1) = 0; /* elt->delta */
- }
- *tbuf = PartialNChars; /* elt->len */
- memcpy (tbuf+2 , CharacterOffset, PartialNChars);
- }
- }
- item++;
- }
-
- /* Pad request out to a 32-bit boundary */
-
- if (length &= 3) {
- char *pad;
- /*
- * BufAlloc is a macro that uses its last argument more than
- * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
- */
- length = 4 - length;
- BufAlloc (char *, pad, length);
- /*
- * if there are 3 bytes of padding, the first byte MUST be 0
- * so the pad bytes aren't mistaken for a final xTextElt
- */
- *pad = 0;
- }
-
- /*
- * If the buffer pointer is not now pointing to a 32-bit boundary,
- * we must flush the buffer so that it does point to a 32-bit boundary
- * at the end of this routine.
- */
-
- if ((dpy->bufptr - dpy->buffer) & 3)
- _XFlush (dpy);
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawText(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XTextItem *items,
+ int nitems)
+{
+ register int i;
+ register XTextItem *item;
+ int length = 0;
+ register xPolyText8Req *req;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq (PolyText8, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->x = x;
+ req->y = y;
+
+ item = items;
+ for (i=0; i < nitems; i++) {
+ if (item->font)
+ length += 5; /* a 255 byte, plus size of Font id */
+ if (item->delta)
+ {
+ if (item->delta > 0)
+ {
+ length += SIZEOF(xTextElt) * ((item->delta + 126) / 127);
+ }
+ else
+ {
+ length += SIZEOF(xTextElt) * ((-item->delta + 127) / 128);
+ }
+ }
+ if (item->nchars > 0)
+ {
+ length += SIZEOF(xTextElt) * ((item->nchars + 253) / 254 - 1);
+ if (!item->delta) length += SIZEOF(xTextElt);
+ length += item->nchars;
+ }
+ item++;
+ }
+
+ req->length += (length + 3)>>2; /* convert to number of 32-bit words */
+
+
+ /*
+ * If the entire request does not fit into the remaining space in the
+ * buffer, flush the buffer first. If the request does fit into the
+ * empty buffer, then we won't have to flush it at the end to keep
+ * the buffer 32-bit aligned.
+ */
+
+ if (dpy->bufptr + length > dpy->bufmax)
+ _XFlush (dpy);
+
+ item = items;
+ for (i=0; i< nitems; i++) {
+
+ if (item->font) {
+ /* to mark a font shift, write a 255 byte followed by
+ the 4 bytes of font ID, big-end first */
+ register unsigned char *f;
+ BufAlloc (unsigned char *, f, 5);
+
+ f[0] = 255;
+ f[1] = (item->font & 0xff000000) >> 24;
+ f[2] = (item->font & 0x00ff0000) >> 16;
+ f[3] = (item->font & 0x0000ff00) >> 8;
+ f[4] = item->font & 0x000000ff;
+
+ /* update GC shadow */
+ gc->values.font = item->font;
+ }
+
+ {
+ int nbytes = SIZEOF(xTextElt);
+ int PartialNChars = item->nchars;
+ int PartialDelta = item->delta;
+ /* register xTextElt *elt; */
+ int FirstTimeThrough = True;
+ char *CharacterOffset = item->chars;
+ char *tbuf = NULL;
+
+ while((PartialDelta < -128) || (PartialDelta > 127))
+ {
+ int nb = SIZEOF(xTextElt);
+
+ BufAlloc (char *, tbuf, nb);
+ *tbuf = 0; /* elt->len */
+ if (PartialDelta > 0 )
+ {
+ *(tbuf+1) = 127; /* elt->delta */
+ PartialDelta = PartialDelta - 127;
+ }
+ else
+ {
+ /* -128 = 0x8, need to be careful of signed chars... */
+ *((unsigned char *)(tbuf+1)) = 0x80; /* elt->delta */
+ PartialDelta = PartialDelta + 128;
+ }
+ }
+ if (PartialDelta)
+ {
+ BufAlloc (char *, tbuf , nbytes);
+ *tbuf = 0; /* elt->len */
+ *(tbuf+1) = PartialDelta; /* elt->delta */
+ }
+ while(PartialNChars > 254)
+ {
+ nbytes = 254;
+ if (FirstTimeThrough)
+ {
+ FirstTimeThrough = False;
+ if (!item->delta)
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (char *, tbuf, nbytes);
+ *(tbuf+1) = 0; /* elt->delta */
+ }
+ else
+ {
+ char *DummyChar;
+ BufAlloc(char *, DummyChar, nbytes);
+ }
+ }
+ else
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (char *, tbuf, nbytes);
+ *(tbuf+1) = 0; /* elt->delta */
+ }
+ /* watch out for signs on chars */
+ *(unsigned char *)tbuf = 254; /* elt->len */
+ memcpy (tbuf+2 , CharacterOffset, 254);
+ PartialNChars = PartialNChars - 254;
+ CharacterOffset += 254;
+
+ }
+ if (PartialNChars)
+ {
+ nbytes = PartialNChars;
+ if (FirstTimeThrough)
+ {
+ FirstTimeThrough = False;
+ if (!item->delta)
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (char *, tbuf, nbytes);
+ *(tbuf+1) = 0; /* elt->delta */
+ }
+ else
+ {
+ char *DummyChar;
+ BufAlloc(char *, DummyChar, nbytes);
+ }
+ }
+ else
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (char *, tbuf, nbytes);
+ *(tbuf+1) = 0; /* elt->delta */
+ }
+ *tbuf = PartialNChars; /* elt->len */
+ memcpy (tbuf+2 , CharacterOffset, PartialNChars);
+ }
+ }
+ item++;
+ }
+
+ /* Pad request out to a 32-bit boundary */
+
+ if (length &= 3) {
+ char *pad;
+ /*
+ * BufAlloc is a macro that uses its last argument more than
+ * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
+ */
+ length = 4 - length;
+ BufAlloc (char *, pad, length);
+ /*
+ * if there are 3 bytes of padding, the first byte MUST be 0
+ * so the pad bytes aren't mistaken for a final xTextElt
+ */
+ *pad = 0;
+ }
+
+ /*
+ * If the buffer pointer is not now pointing to a 32-bit boundary,
+ * we must flush the buffer so that it does point to a 32-bit boundary
+ * at the end of this routine.
+ */
+
+ if ((dpy->bufptr - dpy->buffer) & 3)
+ _XFlush (dpy);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+ }
diff --git a/libX11/src/PolyTxt16.c b/libX11/src/PolyTxt16.c
index dd6581827..13f17f85e 100644
--- a/libX11/src/PolyTxt16.c
+++ b/libX11/src/PolyTxt16.c
@@ -1,268 +1,268 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawText16(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- XTextItem16 *items,
- int nitems)
-{
- register int i;
- register XTextItem16 *item;
- int length = 0;
- register xPolyText16Req *req;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq (PolyText16, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->x = x;
- req->y = y;
-
- item = items;
- for (i=0; i < nitems; i++) {
- if (item->font)
- length += 5; /* a 255 byte, plus size of Font id */
- if (item->delta)
- {
- if (item->delta > 0)
- {
- length += SIZEOF(xTextElt) * ((item->delta + 126) / 127);
- }
- else
- {
- length += SIZEOF(xTextElt) * ((-item->delta + 127) / 128);
- }
- }
- if (item->nchars > 0)
- {
- length += SIZEOF(xTextElt) * ((item->nchars + 253) / 254 - 1);
- if (!item->delta) length += SIZEOF(xTextElt);
- length += item->nchars << 1;
- }
- item++;
- }
-
- req->length += (length + 3)>>2; /* convert to number of 32-bit words */
-
-
- /*
- * If the entire request does not fit into the remaining space in the
- * buffer, flush the buffer first. If the request does fit into the
- * empty buffer, then we won't have to flush it at the end to keep
- * the buffer 32-bit aligned.
- */
-
- if (dpy->bufptr + length > dpy->bufmax)
- _XFlush (dpy);
-
- item = items;
- for (i=0; i< nitems; i++) {
-
- if (item->font) {
- /* to mark a font shift, write a 255 byte followed by
- the 4 bytes of font ID, big-end first */
- register unsigned char *f;
- BufAlloc (unsigned char *, f, 5);
-
- f[0] = 255;
- f[1] = (item->font & 0xff000000) >> 24;
- f[2] = (item->font & 0x00ff0000) >> 16;
- f[3] = (item->font & 0x0000ff00) >> 8;
- f[4] = item->font & 0x000000ff;
-
- /* update GC shadow */
- gc->values.font = item->font;
- }
-
- {
- int nbytes = SIZEOF(xTextElt);
- int PartialNChars = item->nchars;
- int PartialDelta = item->delta;
- register xTextElt *elt = NULL;
- int FirstTimeThrough = True;
- XChar2b *CharacterOffset = item->chars;
-
- while((PartialDelta < -128) || (PartialDelta > 127))
- {
- int nb = SIZEOF(xTextElt);
-
- BufAlloc (xTextElt *, elt, nb);
- elt->len = 0;
- if (PartialDelta > 0 )
- {
- elt->delta = 127;
- PartialDelta = PartialDelta - 127;
- }
- else
- {
- elt->delta = -128;
- PartialDelta = PartialDelta + 128;
- }
- }
- if (PartialDelta)
- {
- BufAlloc (xTextElt *, elt, nbytes);
- elt->len = 0;
- elt->delta = PartialDelta;
- }
- while(PartialNChars > 254)
- {
- nbytes = 254 * 2;
- if (FirstTimeThrough)
- {
- FirstTimeThrough = False;
- if (!item->delta)
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- }
- else
- {
- char *DummyChar;
- BufAlloc(char *, DummyChar, nbytes);
-#ifdef lint
- DummyChar = DummyChar;
-#endif
- }
- }
- else
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- }
- elt->len = 254;
-
-#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
- {
- register int i;
- register unsigned char *cp;
- for (i = 0, cp = ((unsigned char *)elt) + 2; i < 254; i++) {
- *cp++ = CharacterOffset[i].byte1;
- *cp++ = CharacterOffset[i].byte2;
- }
- }
-#else
- memcpy ((char *) (elt + 1), (char *)CharacterOffset, 254 * 2);
-#endif
- PartialNChars = PartialNChars - 254;
- CharacterOffset += 254;
-
- }
- if (PartialNChars)
- {
- nbytes = PartialNChars * 2;
- if (FirstTimeThrough)
- {
- FirstTimeThrough = False;
- if (!item->delta)
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- }
- else
- {
- char *DummyChar;
- BufAlloc(char *, DummyChar, nbytes);
-#ifdef lint
- DummyChar = DummyChar;
-#endif
- }
- }
- else
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- }
- elt->len = PartialNChars;
-
-#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
- {
- register int i;
- register unsigned char *cp;
- for (i = 0, cp = ((unsigned char *)elt) + 2; i < PartialNChars;
- i++) {
- *cp++ = CharacterOffset[i].byte1;
- *cp++ = CharacterOffset[i].byte2;
- }
- }
-#else
- memcpy ((char *) (elt + 1), (char *)CharacterOffset,
- PartialNChars *
-2);
-#endif
- }
- }
- item++;
- }
-
- /* Pad request out to a 32-bit boundary */
-
- if (length &= 3) {
- char *pad;
- /*
- * BufAlloc is a macro that uses its last argument more than
- * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
- */
- length = 4 - length;
- BufAlloc (char *, pad, length);
- /*
- * if there are 3 bytes of padding, the first byte MUST be 0
- * so the pad bytes aren't mistaken for a final xTextElt
- */
- *pad = 0;
- }
-
- /*
- * If the buffer pointer is not now pointing to a 32-bit boundary,
- * we must flush the buffer so that it does point to a 32-bit boundary
- * at the end of this routine.
- */
-
- if ((dpy->bufptr - dpy->buffer) & 3)
- _XFlush (dpy);
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawText16(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XTextItem16 *items,
+ int nitems)
+{
+ register int i;
+ register XTextItem16 *item;
+ int length = 0;
+ register xPolyText16Req *req;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq (PolyText16, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->x = x;
+ req->y = y;
+
+ item = items;
+ for (i=0; i < nitems; i++) {
+ if (item->font)
+ length += 5; /* a 255 byte, plus size of Font id */
+ if (item->delta)
+ {
+ if (item->delta > 0)
+ {
+ length += SIZEOF(xTextElt) * ((item->delta + 126) / 127);
+ }
+ else
+ {
+ length += SIZEOF(xTextElt) * ((-item->delta + 127) / 128);
+ }
+ }
+ if (item->nchars > 0)
+ {
+ length += SIZEOF(xTextElt) * ((item->nchars + 253) / 254 - 1);
+ if (!item->delta) length += SIZEOF(xTextElt);
+ length += item->nchars << 1;
+ }
+ item++;
+ }
+
+ req->length += (length + 3)>>2; /* convert to number of 32-bit words */
+
+
+ /*
+ * If the entire request does not fit into the remaining space in the
+ * buffer, flush the buffer first. If the request does fit into the
+ * empty buffer, then we won't have to flush it at the end to keep
+ * the buffer 32-bit aligned.
+ */
+
+ if (dpy->bufptr + length > dpy->bufmax)
+ _XFlush (dpy);
+
+ item = items;
+ for (i=0; i< nitems; i++) {
+
+ if (item->font) {
+ /* to mark a font shift, write a 255 byte followed by
+ the 4 bytes of font ID, big-end first */
+ register unsigned char *f;
+ BufAlloc (unsigned char *, f, 5);
+
+ f[0] = 255;
+ f[1] = (item->font & 0xff000000) >> 24;
+ f[2] = (item->font & 0x00ff0000) >> 16;
+ f[3] = (item->font & 0x0000ff00) >> 8;
+ f[4] = item->font & 0x000000ff;
+
+ /* update GC shadow */
+ gc->values.font = item->font;
+ }
+
+ {
+ int nbytes = SIZEOF(xTextElt);
+ int PartialNChars = item->nchars;
+ int PartialDelta = item->delta;
+ register xTextElt *elt = NULL;
+ int FirstTimeThrough = True;
+ XChar2b *CharacterOffset = item->chars;
+
+ while((PartialDelta < -128) || (PartialDelta > 127))
+ {
+ int nb = SIZEOF(xTextElt);
+
+ BufAlloc (xTextElt *, elt, nb);
+ elt->len = 0;
+ if (PartialDelta > 0 )
+ {
+ elt->delta = 127;
+ PartialDelta = PartialDelta - 127;
+ }
+ else
+ {
+ elt->delta = -128;
+ PartialDelta = PartialDelta + 128;
+ }
+ }
+ if (PartialDelta)
+ {
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->len = 0;
+ elt->delta = PartialDelta;
+ }
+ while(PartialNChars > 254)
+ {
+ nbytes = 254 * 2;
+ if (FirstTimeThrough)
+ {
+ FirstTimeThrough = False;
+ if (!item->delta)
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ }
+ else
+ {
+ char *DummyChar;
+ BufAlloc(char *, DummyChar, nbytes);
+#ifdef lint
+ DummyChar = DummyChar;
+#endif
+ }
+ }
+ else
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ }
+ elt->len = 254;
+
+#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
+ {
+ register int i;
+ register unsigned char *cp;
+ for (i = 0, cp = ((unsigned char *)elt) + 2; i < 254; i++) {
+ *cp++ = CharacterOffset[i].byte1;
+ *cp++ = CharacterOffset[i].byte2;
+ }
+ }
+#else
+ memcpy ((char *) (elt + 1), (char *)CharacterOffset, 254 * 2);
+#endif
+ PartialNChars = PartialNChars - 254;
+ CharacterOffset += 254;
+
+ }
+ if (PartialNChars)
+ {
+ nbytes = PartialNChars * 2;
+ if (FirstTimeThrough)
+ {
+ FirstTimeThrough = False;
+ if (!item->delta)
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ }
+ else
+ {
+ char *DummyChar;
+ BufAlloc(char *, DummyChar, nbytes);
+#ifdef lint
+ DummyChar = DummyChar;
+#endif
+ }
+ }
+ else
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ }
+ elt->len = PartialNChars;
+
+#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
+ {
+ register int i;
+ register unsigned char *cp;
+ for (i = 0, cp = ((unsigned char *)elt) + 2; i < PartialNChars;
+ i++) {
+ *cp++ = CharacterOffset[i].byte1;
+ *cp++ = CharacterOffset[i].byte2;
+ }
+ }
+#else
+ memcpy ((char *) (elt + 1), (char *)CharacterOffset,
+ PartialNChars *
+2);
+#endif
+ }
+ }
+ item++;
+ }
+
+ /* Pad request out to a 32-bit boundary */
+
+ if (length &= 3) {
+ char *pad;
+ /*
+ * BufAlloc is a macro that uses its last argument more than
+ * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
+ */
+ length = 4 - length;
+ BufAlloc (char *, pad, length);
+ /*
+ * if there are 3 bytes of padding, the first byte MUST be 0
+ * so the pad bytes aren't mistaken for a final xTextElt
+ */
+ *pad = 0;
+ }
+
+ /*
+ * If the buffer pointer is not now pointing to a 32-bit boundary,
+ * we must flush the buffer so that it does point to a 32-bit boundary
+ * at the end of this routine.
+ */
+
+ if ((dpy->bufptr - dpy->buffer) & 3)
+ _XFlush (dpy);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
+
+
+
diff --git a/libX11/src/PropAlloc.c b/libX11/src/PropAlloc.c
index bad768153..d1ca9427c 100644
--- a/libX11/src/PropAlloc.c
+++ b/libX11/src/PropAlloc.c
@@ -1,75 +1,75 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-#include <stdio.h>
-
-
-/*
- * Routines for allocating space for structures that are expected to get
- * longer at some point.
- */
-
-XSizeHints *XAllocSizeHints (void)
-{
- return ((XSizeHints *) Xcalloc (1, (unsigned) sizeof (XSizeHints)));
-}
-
-
-XStandardColormap *XAllocStandardColormap (void)
-{
- return ((XStandardColormap *)
- Xcalloc (1, (unsigned) sizeof (XStandardColormap)));
-}
-
-
-XWMHints *XAllocWMHints (void)
-{
- return ((XWMHints *) Xcalloc (1, (unsigned) sizeof (XWMHints)));
-}
-
-
-XClassHint *XAllocClassHint (void)
-{
- register XClassHint *h;
-
- if ((h = (XClassHint *) Xcalloc (1, (unsigned) sizeof (XClassHint))))
- h->res_name = h->res_class = NULL;
-
- return h;
-}
-
-
-XIconSize *XAllocIconSize (void)
-{
- return ((XIconSize *) Xcalloc (1, (unsigned) sizeof (XIconSize)));
-}
-
-
+/*
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+#include <stdio.h>
+
+
+/*
+ * Routines for allocating space for structures that are expected to get
+ * longer at some point.
+ */
+
+XSizeHints *XAllocSizeHints (void)
+{
+ return ((XSizeHints *) Xcalloc (1, (unsigned) sizeof (XSizeHints)));
+}
+
+
+XStandardColormap *XAllocStandardColormap (void)
+{
+ return ((XStandardColormap *)
+ Xcalloc (1, (unsigned) sizeof (XStandardColormap)));
+}
+
+
+XWMHints *XAllocWMHints (void)
+{
+ return ((XWMHints *) Xcalloc (1, (unsigned) sizeof (XWMHints)));
+}
+
+
+XClassHint *XAllocClassHint (void)
+{
+ register XClassHint *h;
+
+ if ((h = (XClassHint *) Xcalloc (1, (unsigned) sizeof (XClassHint))))
+ h->res_name = h->res_class = NULL;
+
+ return h;
+}
+
+
+XIconSize *XAllocIconSize (void)
+{
+ return ((XIconSize *) Xcalloc (1, (unsigned) sizeof (XIconSize)));
+}
+
+
diff --git a/libX11/src/PutImage.c b/libX11/src/PutImage.c
index 6dad4f13a..f5d74575c 100644
--- a/libX11/src/PutImage.c
+++ b/libX11/src/PutImage.c
@@ -1,1044 +1,1044 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-#include <stdio.h>
-#include "Cr.h"
-#include "ImUtil.h"
-
-#if defined(__STDC__) && ((defined(sun) && defined(SVR4)) || defined(WIN32))
-#define RConst /**/
-#else
-#define RConst const
-#endif
-
-#if defined(Lynx) && defined(ROUNDUP)
-#undef ROUNDUP
-#endif
-
-/* assumes pad is a power of 2 */
-#define ROUNDUP(nbytes, pad) (((nbytes) + ((pad) - 1)) & ~(long)((pad) - 1))
-
-static unsigned char const _reverse_byte[0x100] = {
- 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
- 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
- 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
- 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
- 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
- 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
- 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
- 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
- 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
- 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
- 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
- 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
- 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
- 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
- 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
- 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
- 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
- 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
- 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
- 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
- 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
- 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
- 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
- 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
- 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
- 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
- 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
- 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
- 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
- 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
- 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
- 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
-};
-
-static unsigned char const _reverse_nibs[0x100] = {
- 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
- 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0,
- 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71,
- 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1,
- 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72,
- 0x82, 0x92, 0xa2, 0xb2, 0xc2, 0xd2, 0xe2, 0xf2,
- 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73,
- 0x83, 0x93, 0xa3, 0xb3, 0xc3, 0xd3, 0xe3, 0xf3,
- 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74,
- 0x84, 0x94, 0xa4, 0xb4, 0xc4, 0xd4, 0xe4, 0xf4,
- 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75,
- 0x85, 0x95, 0xa5, 0xb5, 0xc5, 0xd5, 0xe5, 0xf5,
- 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76,
- 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, 0xe6, 0xf6,
- 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77,
- 0x87, 0x97, 0xa7, 0xb7, 0xc7, 0xd7, 0xe7, 0xf7,
- 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78,
- 0x88, 0x98, 0xa8, 0xb8, 0xc8, 0xd8, 0xe8, 0xf8,
- 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79,
- 0x89, 0x99, 0xa9, 0xb9, 0xc9, 0xd9, 0xe9, 0xf9,
- 0x0a, 0x1a, 0x2a, 0x3a, 0x4a, 0x5a, 0x6a, 0x7a,
- 0x8a, 0x9a, 0xaa, 0xba, 0xca, 0xda, 0xea, 0xfa,
- 0x0b, 0x1b, 0x2b, 0x3b, 0x4b, 0x5b, 0x6b, 0x7b,
- 0x8b, 0x9b, 0xab, 0xbb, 0xcb, 0xdb, 0xeb, 0xfb,
- 0x0c, 0x1c, 0x2c, 0x3c, 0x4c, 0x5c, 0x6c, 0x7c,
- 0x8c, 0x9c, 0xac, 0xbc, 0xcc, 0xdc, 0xec, 0xfc,
- 0x0d, 0x1d, 0x2d, 0x3d, 0x4d, 0x5d, 0x6d, 0x7d,
- 0x8d, 0x9d, 0xad, 0xbd, 0xcd, 0xdd, 0xed, 0xfd,
- 0x0e, 0x1e, 0x2e, 0x3e, 0x4e, 0x5e, 0x6e, 0x7e,
- 0x8e, 0x9e, 0xae, 0xbe, 0xce, 0xde, 0xee, 0xfe,
- 0x0f, 0x1f, 0x2f, 0x3f, 0x4f, 0x5f, 0x6f, 0x7f,
- 0x8f, 0x9f, 0xaf, 0xbf, 0xcf, 0xdf, 0xef, 0xff
-};
-
-int
-_XReverse_Bytes(
- register unsigned char *bpt,
- register int nb)
-{
- do {
- *bpt = _reverse_byte[*bpt];
- bpt++;
- } while (--nb > 0);
- return 0;
-}
-
-
-/* XXX the following functions are declared int instead of void because various
- * compilers and lints complain about later initialization of SwapFunc and/or
- * (swapfunc == NoSwap) when void is used.
- */
-
-/*ARGSUSED*/
-static void
-NoSwap (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen,
- long srcinc,
- long destinc,
- unsigned int height,
- int half_order)
-{
- long h = height;
-
- if (srcinc == destinc)
- memcpy((char *)dest, (char *)src, (int)(srcinc * (h - 1) + srclen));
- else
- for (; --h >= 0; src += srcinc, dest += destinc)
- memcpy((char *)dest, (char *)src, (int)srclen);
-}
-
-static void
-SwapTwoBytes (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 2);
- register long h, n;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 2;
- if (half_order == MSBFirst)
- *(dest + length) = *(src + length + 1);
- else
- *(dest + length + 1) = *(src + length);
- }
- for (n = length; n > 0; n -= 2, src += 2) {
- *dest++ = *(src + 1);
- *dest++ = *src;
- }
- }
-}
-
-static void
-SwapThreeBytes (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int byte_order)
-{
- long length = ((srclen + 2) / 3) * 3;
- register long h, n;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 3;
- if ((srclen - length) == 2)
- *(dest + length + 1) = *(src + length + 1);
- if (byte_order == MSBFirst)
- *(dest + length) = *(src + length + 2);
- else
- *(dest + length + 2) = *(src + length);
- }
- for (n = length; n > 0; n -= 3, src += 3) {
- *dest++ = *(src + 2);
- *dest++ = *(src + 1);
- *dest++ = *src;
- }
- }
-}
-
-static void
-SwapFourBytes (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 4);
- register long h, n;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 4;
- if (half_order == MSBFirst)
- *(dest + length) = *(src + length + 3);
- if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == MSBFirst) && (srclen & 2)))
- *(dest + length + 1) = *(src + length + 2);
- if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == LSBFirst) && (srclen & 2)))
- *(dest + length + 2) = *(src + length + 1);
- if (half_order == LSBFirst)
- *(dest + length + 3) = *(src + length);
- }
- for (n = length; n > 0; n -= 4, src += 4) {
- *dest++ = *(src + 3);
- *dest++ = *(src + 2);
- *dest++ = *(src + 1);
- *dest++ = *src;
- }
- }
-}
-
-static void
-SwapWords (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 4);
- register long h, n;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 4;
- if (half_order == MSBFirst)
- *(dest + length + 1) = *(src + length + 3);
- if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == MSBFirst) && (srclen & 2)))
- *(dest + length) = *(src + length + 2);
- if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == LSBFirst) && (srclen & 2)))
- *(dest + length + 3) = *(src + length + 1);
- if (half_order == LSBFirst)
- *(dest + length + 2) = *(src + length);
- }
- for (n = length; n > 0; n -= 4, src += 2) {
- *dest++ = *(src + 2);
- *dest++ = *(src + 3);
- *dest++ = *src++;
- *dest++ = *src++;
- }
- }
-}
-
-static void
-SwapNibbles(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height)
-{
- register long h, n;
- register const unsigned char *rev = _reverse_nibs;
-
- srcinc -= srclen;
- destinc -= srclen;
- for (h = height; --h >= 0; src += srcinc, dest += destinc)
- for (n = srclen; --n >= 0; )
- *dest++ = rev[*src++];
-}
-
-static void
-ShiftNibblesLeft (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int nibble_order)
-{
- register long h, n;
- register unsigned char c1, c2;
-
- srcinc -= srclen;
- destinc -= srclen;
- if (nibble_order == MSBFirst) {
- for (h = height; --h >= 0; src += srcinc, dest += destinc)
- for (n = srclen; --n >= 0; ) {
- c1 = *src++;
- c2 = *src;
- *dest++ = ((c1 & 0x0f) << 4) | ((c2 & (unsigned)0xf0) >> 4);
- }
- } else {
- for (h = height; --h >= 0; src += srcinc, dest += destinc)
- for (n = srclen; --n >= 0; ) {
- c1 = *src++;
- c2 = *src;
- *dest++ = ((c2 & 0x0f) << 4) | ((c1 & (unsigned)0xf0) >> 4);
- }
- }
-}
-
-/*ARGSUSED*/
-static void
-SwapBits(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- register long h, n;
- register const unsigned char *rev = _reverse_byte;
-
- srcinc -= srclen;
- destinc -= srclen;
- for (h = height; --h >= 0; src += srcinc, dest += destinc)
- for (n = srclen; --n >= 0; )
- *dest++ = rev[*src++];
-}
-
-static void
-SwapBitsAndTwoBytes(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 2);
- register long h, n;
- register const unsigned char *rev = _reverse_byte;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 2;
- if (half_order == MSBFirst)
- *(dest + length) = rev[*(src + length + 1)];
- else
- *(dest + length + 1) = rev[*(src + length)];
- }
- for (n = length; n > 0; n -= 2, src += 2) {
- *dest++ = rev[*(src + 1)];
- *dest++ = rev[*src];
- }
- }
-}
-
-static void
-SwapBitsAndFourBytes(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 4);
- register long h, n;
- register const unsigned char *rev = _reverse_byte;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 4;
- if (half_order == MSBFirst)
- *(dest + length) = rev[*(src + length + 3)];
- if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == MSBFirst) && (srclen & 2)))
- *(dest + length + 1) = rev[*(src + length + 2)];
- if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == LSBFirst) && (srclen & 2)))
- *(dest + length + 2) = rev[*(src + length + 1)];
- if (half_order == LSBFirst)
- *(dest + length + 3) = rev[*(src + length)];
- }
- for (n = length; n > 0; n -= 4, src += 4) {
- *dest++ = rev[*(src + 3)];
- *dest++ = rev[*(src + 2)];
- *dest++ = rev[*(src + 1)];
- *dest++ = rev[*src];
- }
- }
-}
-
-static void
-SwapBitsAndWords(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 4);
- register long h, n;
- register const unsigned char *rev = _reverse_byte;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 4;
- if (half_order == MSBFirst)
- *(dest + length + 1) = rev[*(src + length + 3)];
- if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == MSBFirst) && (srclen & 2)))
- *(dest + length) = rev[*(src + length + 2)];
- if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == LSBFirst) && (srclen & 2)))
- *(dest + length + 3) = rev[*(src + length + 1)];
- if (half_order == LSBFirst)
- *(dest + length + 2) = rev[*(src + length)];
- }
- for (n = length; n > 0; n -= 4, src += 2) {
- *dest++ = rev[*(src + 2)];
- *dest++ = rev[*(src + 3)];
- *dest++ = rev[*src++];
- *dest++ = rev[*src++];
- }
- }
-}
-
-/*
-
-The following table gives the bit ordering within bytes (when accessed
-sequentially) for a scanline containing 32 bits, with bits numbered 0 to
-31, where bit 0 should be leftmost on the display. For a given byte
-labelled A-B, A is for the most significant bit of the byte, and B is
-for the least significant bit.
-
-legend:
- 1 scanline-unit = 8
- 2 scanline-unit = 16
- 4 scanline-unit = 32
- M byte-order = MostSignificant
- L byte-order = LeastSignificant
- m bit-order = MostSignificant
- l bit-order = LeastSignificant
-
-
-format ordering
-
-1Mm 00-07 08-15 16-23 24-31
-2Mm 00-07 08-15 16-23 24-31
-4Mm 00-07 08-15 16-23 24-31
-1Ml 07-00 15-08 23-16 31-24
-2Ml 15-08 07-00 31-24 23-16
-4Ml 31-24 23-16 15-08 07-00
-1Lm 00-07 08-15 16-23 24-31
-2Lm 08-15 00-07 24-31 16-23
-4Lm 24-31 16-23 08-15 00-07
-1Ll 07-00 15-08 23-16 31-24
-2Ll 07-00 15-08 23-16 31-24
-4Ll 07-00 15-08 23-16 31-24
-
-
-The following table gives the required conversion between any two
-formats. It is based strictly on the table above. If you believe one,
-you should believe the other.
-
-legend:
- n no changes
- s reverse 8-bit units within 16-bit units
- l reverse 8-bit units within 32-bit units
- w reverse 16-bit units within 32-bit units
- R reverse bits within 8-bit units
- S s+R
- L l+R
- W w+R
-
-*/
-
-static void (* RConst (SwapFunction[12][12]))(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen,
- long srcinc,
- long destinc,
- unsigned int height,
- int half_order) = {
-#define n NoSwap,
-#define s SwapTwoBytes,
-#define l SwapFourBytes,
-#define w SwapWords,
-#define R SwapBits,
-#define S SwapBitsAndTwoBytes,
-#define L SwapBitsAndFourBytes,
-#define W SwapBitsAndWords,
-
-/* 1Mm 2Mm 4Mm 1Ml 2Ml 4Ml 1Lm 2Lm 4Lm 1Ll 2Ll 4Ll */
-/* 1Mm */ { n n n R S L n s l R R R },
-/* 2Mm */ { n n n R S L n s l R R R },
-/* 4Mm */ { n n n R S L n s l R R R },
-/* 1Ml */ { R R R n s l R S L n n n },
-/* 2Ml */ { S S S s n w S R W s s s },
-/* 4Ml */ { L L L l w n L W R l l l },
-/* 1Lm */ { n n n R S L n s l R R R },
-/* 2Lm */ { s s s S R W s n w S S S },
-/* 4Lm */ { l l l L W R l w n L L L },
-/* 1Ll */ { R R R n s l R S L n n n },
-/* 2Ll */ { R R R n s l R S L n n n },
-/* 4Ll */ { R R R n s l R S L n n n }
-
-#undef n
-#undef s
-#undef l
-#undef w
-#undef R
-#undef S
-#undef L
-#undef W
-
-};
-
-/* Of course, the table above is a lie. We also need to factor in the
- * order of the source data to cope with swapping half of a unit at the
- * end of a scanline, since we are trying to avoid de-ref'ing off the
- * end of the source.
- *
- * Defines whether the first half of a unit has the first half of the data
- */
-static int const HalfOrder[12] = {
- LSBFirst, /* 1Mm */
- LSBFirst, /* 2Mm */
- LSBFirst, /* 4Mm */
- LSBFirst, /* 1Ml */
- MSBFirst, /* 2Ml */
- MSBFirst, /* 4Ml */
- LSBFirst, /* 1Lm */
- MSBFirst, /* 2Lm */
- MSBFirst, /* 4Lm */
- LSBFirst, /* 1Ll */
- LSBFirst, /* 2Ll */
- LSBFirst /* 4Ll */
- };
-
-/* Finally, for SwapWords cases, the half order depends not just on the source
- * but also on the destination scanline unit. Use of this table changes some
- * MSBFirsts to LSBFirsts that are "do not care" (because the function will be
- * NoSwap or SwapBits) in addition to changing the desired ones.
- */
-
-static int const HalfOrderWord[12] = {
- MSBFirst, /* 1Mm */
- MSBFirst, /* 2Mm */
- MSBFirst, /* 4Mm */
- MSBFirst, /* 1Ml */
- MSBFirst, /* 2Ml */
- LSBFirst, /* 4Ml */
- MSBFirst, /* 1Lm */
- MSBFirst, /* 2Lm */
- LSBFirst, /* 4Lm */
- MSBFirst, /* 1Ll */
- MSBFirst, /* 2Ll */
- MSBFirst /* 4Ll */
- };
-
-/*
- * This macro creates a value from 0 to 11 suitable for indexing
- * into the table above.
- */
-#define ComposeIndex(bitmap_unit, bitmap_bit_order, byte_order) \
- (((bitmap_unit == 32) ? 2 : ((bitmap_unit == 16) ? 1 : 0)) \
- + (((bitmap_bit_order == MSBFirst) ? 0 : 3) \
- + ((byte_order == MSBFirst) ? 0 : 6)))
-
-/* Cancel a GetReq operation, before doing _XSend or Data */
-
-#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)
-#define UnGetReq(name)\
- dpy->bufptr -= SIZEOF(x##name##Req);\
- dpy->request--
-#else
-#define UnGetReq(name)\
- dpy->bufptr -= SIZEOF(x/**/name/**/Req);\
- dpy->request--
-#endif
-
-static void
-SendXYImage(
- register Display *dpy,
- register xPutImageReq *req,
- register XImage *image,
- int req_xoffset, int req_yoffset)
-{
- register int j;
- long total_xoffset, bytes_per_src, bytes_per_dest, length;
- long bytes_per_line, bytes_per_src_plane, bytes_per_dest_plane;
- char *src, *dest, *buf;
- char *extra = (char *)NULL;
- register void (*swapfunc)(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen,
- long srcinc,
- long destinc,
- unsigned int height,
- int half_order);
- int half_order;
-
- total_xoffset = image->xoffset + req_xoffset;
- req->leftPad = total_xoffset & (dpy->bitmap_unit - 1);
- total_xoffset = (unsigned)(total_xoffset - req->leftPad) >> 3;
- /* The protocol requires left-pad of zero on all ZPixmap, even
- * though the 1-bit case is identical to bitmap format. This is a
- * bug in the protocol, caused because 1-bit ZPixmap was added late
- * in the game. Hairy shifting code compensation isn't worth it,
- * just use XYPixmap format instead.
- */
- if ((req->leftPad != 0) && (req->format == ZPixmap))
- req->format = XYPixmap;
- bytes_per_dest = (unsigned long)ROUNDUP((long)req->width + req->leftPad,
- dpy->bitmap_pad) >> 3;
- bytes_per_dest_plane = bytes_per_dest * req->height;
- length = bytes_per_dest_plane * image->depth;
- req->length += (length + 3) >> 2;
-
- swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
- image->bitmap_bit_order,
- image->byte_order)]
- [ComposeIndex(dpy->bitmap_unit,
- dpy->bitmap_bit_order,
- dpy->byte_order)];
- half_order = HalfOrder[ComposeIndex(image->bitmap_unit,
- image->bitmap_bit_order,
- image->byte_order)];
- if (half_order == MSBFirst)
- half_order = HalfOrderWord[ComposeIndex(dpy->bitmap_unit,
- dpy->bitmap_bit_order,
- dpy->byte_order)];
-
- src = image->data + (image->bytes_per_line * req_yoffset) + total_xoffset;
-
- /* when total_xoffset > 0, we have to worry about stepping off the
- * end of image->data.
- */
- if ((swapfunc == NoSwap) &&
- (image->bytes_per_line == bytes_per_dest) &&
- (((total_xoffset == 0) &&
- ((image->depth == 1) || (image->height == req->height))) ||
- ((image->depth == 1) &&
- ((req_yoffset + req->height) < (unsigned)image->height)))) {
- Data(dpy, src, length);
- return;
- }
-
- length = ROUNDUP(length, 4);
- if ((dpy->bufptr + length) > dpy->bufmax) {
- if ((buf = _XAllocScratch(dpy, (unsigned long) (length))) == NULL) {
- UnGetReq(PutImage);
- return;
- }
- }
- else
- buf = dpy->bufptr;
-
- bytes_per_src = (req->width + req->leftPad + (unsigned)7) >> 3;
- bytes_per_line = image->bytes_per_line;
- bytes_per_src_plane = bytes_per_line * image->height;
- total_xoffset &= (image->bitmap_unit - 1) >> 3;
-
- if ((total_xoffset > 0) &&
- (image->byte_order != image->bitmap_bit_order)) {
- char *temp;
- long bytes_per_temp_plane, temp_length;
-
- bytes_per_line = bytes_per_src + total_xoffset;
- src -= total_xoffset;
- bytes_per_temp_plane = bytes_per_line * req->height;
- temp_length = ROUNDUP(bytes_per_temp_plane * image->depth, 4);
- if (buf == dpy->bufptr) {
- if (! (temp = _XAllocScratch(dpy, (unsigned long) temp_length))) {
- UnGetReq(PutImage);
- return;
- }
- }
- else
- if ((extra = temp = Xmalloc((unsigned) temp_length)) == NULL) {
- UnGetReq(PutImage);
- return;
- }
-
- swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
- image->bitmap_bit_order,
- image->byte_order)]
- [ComposeIndex(image->bitmap_unit,
- dpy->byte_order,
- dpy->byte_order)];
- for (dest = temp, j = image->depth;
- --j >= 0;
- src += bytes_per_src_plane, dest += bytes_per_temp_plane)
- (*swapfunc)((unsigned char *)src, (unsigned char *)dest,
- bytes_per_line, (long)image->bytes_per_line,
- bytes_per_line, req->height, half_order);
- swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
- dpy->byte_order,
- dpy->byte_order)]
- [ComposeIndex(dpy->bitmap_unit,
- dpy->bitmap_bit_order,
- dpy->byte_order)];
- half_order = HalfOrder[ComposeIndex(image->bitmap_unit,
- dpy->byte_order,
- dpy->byte_order)];
- src = temp + total_xoffset;
- bytes_per_src_plane = bytes_per_temp_plane;
- }
-
- for (dest = buf, j = image->depth;
- --j >= 0;
- src += bytes_per_src_plane, dest += bytes_per_dest_plane)
- (*swapfunc)((unsigned char *)src, (unsigned char *)dest,
- bytes_per_src, bytes_per_line,
- bytes_per_dest, req->height, half_order);
-
- if (extra)
- Xfree(extra);
-
- if (buf == dpy->bufptr)
- dpy->bufptr += length;
- else
- _XSend(dpy, buf, length);
- }
-
-static void
-SendZImage(
- register Display *dpy,
- register xPutImageReq *req,
- register XImage *image,
- int req_xoffset, int req_yoffset,
- int dest_bits_per_pixel, int dest_scanline_pad)
-{
- long bytes_per_src, bytes_per_dest, length;
- unsigned char *src, *dest;
- unsigned char *shifted_src = NULL;
-
- req->leftPad = 0;
- bytes_per_src = ROUNDUP((long)req->width * image->bits_per_pixel, 8) >> 3;
- bytes_per_dest = ROUNDUP((long)req->width * dest_bits_per_pixel,
- dest_scanline_pad) >> 3;
- length = bytes_per_dest * req->height;
- req->length += (length + 3) >> 2;
-
- src = (unsigned char *)image->data +
- (req_yoffset * image->bytes_per_line) +
- ((req_xoffset * image->bits_per_pixel) >> 3);
- if ((image->bits_per_pixel == 4) && ((unsigned int) req_xoffset & 0x01)) {
- if (! (shifted_src = (unsigned char *)
- Xmalloc((unsigned) (req->height * image->bytes_per_line)))) {
- UnGetReq(PutImage);
- return;
- }
-
- ShiftNibblesLeft(src, shifted_src, bytes_per_src,
- (long) image->bytes_per_line,
- (long) image->bytes_per_line, req->height,
- image->byte_order);
- src = shifted_src;
- }
-
- /* when req_xoffset > 0, we have to worry about stepping off the
- * end of image->data.
- */
- if (((image->byte_order == dpy->byte_order) ||
- (image->bits_per_pixel == 8)) &&
- ((long)image->bytes_per_line == bytes_per_dest) &&
- ((req_xoffset == 0) ||
- ((req_yoffset + req->height) < (unsigned)image->height))) {
- Data(dpy, (char *)src, length);
- if (shifted_src)
- Xfree((char *)shifted_src);
- return;
- }
-
- length = ROUNDUP(length, 4);
- if ((dpy->bufptr + length) <= dpy->bufmax)
- dest = (unsigned char *)dpy->bufptr;
- else
- if ((dest = (unsigned char *)
- _XAllocScratch(dpy, (unsigned long)(length))) == NULL) {
- if (shifted_src) Xfree((char *) shifted_src);
- UnGetReq(PutImage);
- return;
- }
-
- if ((image->byte_order == dpy->byte_order) ||
- (image->bits_per_pixel == 8))
- NoSwap(src, dest, bytes_per_src, (long)image->bytes_per_line,
- bytes_per_dest, req->height, image->byte_order);
- else if (image->bits_per_pixel == 32)
- SwapFourBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
- bytes_per_dest, req->height, image->byte_order);
- else if (image->bits_per_pixel == 24)
- SwapThreeBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
- bytes_per_dest, req->height, image->byte_order);
- else if (image->bits_per_pixel == 16)
- SwapTwoBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
- bytes_per_dest, req->height, image->byte_order);
- else
- SwapNibbles(src, dest, bytes_per_src, (long)image->bytes_per_line,
- bytes_per_dest, req->height);
-
- if (dest == (unsigned char *)dpy->bufptr)
- dpy->bufptr += length;
- else
- _XSend(dpy, (char *)dest, length);
-
- if (shifted_src)
- Xfree((char *)shifted_src);
-}
-
-static void
-PutImageRequest(
- register Display *dpy,
- Drawable d,
- GC gc,
- register XImage *image,
- int req_xoffset, int req_yoffset,
- int x, int y,
- unsigned int req_width, unsigned int req_height,
- int dest_bits_per_pixel, int dest_scanline_pad)
-{
- register xPutImageReq *req;
-
- GetReq(PutImage, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->dstX = x;
- req->dstY = y;
- req->width = req_width;
- req->height = req_height;
- req->depth = image->depth;
- req->format = image->format;
- if ((image->bits_per_pixel == 1) || (image->format != ZPixmap))
- SendXYImage(dpy, req, image, req_xoffset, req_yoffset);
- else
- SendZImage(dpy, req, image, req_xoffset, req_yoffset,
- dest_bits_per_pixel, dest_scanline_pad);
-}
-
-static void
-PutSubImage (
- register Display *dpy,
- Drawable d,
- GC gc,
- register XImage *image,
- int req_xoffset,
- int req_yoffset,
- int x, int y,
- unsigned int req_width,
- unsigned int req_height,
- int dest_bits_per_pixel,
- int dest_scanline_pad)
-{
- int left_pad, BytesPerRow, Available;
-
- if ((req_width == 0) || (req_height == 0))
- return;
-
- Available = ((65536 < dpy->max_request_size) ? (65536 << 2)
- : (dpy->max_request_size << 2))
- - SIZEOF(xPutImageReq);
-
- if ((image->bits_per_pixel == 1) || (image->format != ZPixmap)) {
- left_pad = (image->xoffset + req_xoffset) & (dpy->bitmap_unit - 1);
- BytesPerRow = (ROUNDUP((long)req_width + left_pad,
- dpy->bitmap_pad) >> 3) * image->depth;
- } else {
- left_pad = 0;
- BytesPerRow = ROUNDUP((long)req_width * dest_bits_per_pixel,
- dest_scanline_pad) >> 3;
- }
-
- if ((BytesPerRow * req_height) <= Available) {
- PutImageRequest(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
- req_width, req_height,
- dest_bits_per_pixel, dest_scanline_pad);
- } else if (req_height > 1) {
- int SubImageHeight = Available / BytesPerRow;
-
- if (SubImageHeight == 0)
- SubImageHeight = 1;
-
- PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
- req_width, (unsigned int) SubImageHeight,
- dest_bits_per_pixel, dest_scanline_pad);
-
- PutSubImage(dpy, d, gc, image, req_xoffset,
- req_yoffset + SubImageHeight, x, y + SubImageHeight,
- req_width, req_height - SubImageHeight,
- dest_bits_per_pixel, dest_scanline_pad);
- } else {
- int SubImageWidth = (((Available << 3) / dest_scanline_pad)
- * dest_scanline_pad) - left_pad;
-
- PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
- (unsigned int) SubImageWidth, 1,
- dest_bits_per_pixel, dest_scanline_pad);
-
- PutSubImage(dpy, d, gc, image, req_xoffset + SubImageWidth,
- req_yoffset, x + SubImageWidth, y,
- req_width - SubImageWidth, 1,
- dest_bits_per_pixel, dest_scanline_pad);
- }
-}
-
-
-int
-XPutImage (
- register Display *dpy,
- Drawable d,
- GC gc,
- register XImage *image,
- int req_xoffset,
- int req_yoffset,
- int x,
- int y,
- unsigned int req_width,
- unsigned int req_height)
-
-{
- long width = req_width;
- long height = req_height;
- int dest_bits_per_pixel, dest_scanline_pad;
-
- if (req_xoffset < 0) {
- width += req_xoffset;
- req_xoffset = 0;
- }
- if (req_yoffset < 0) {
- height += req_yoffset;
- req_yoffset = 0;
- }
- if ((req_xoffset + width) > image->width)
- width = image->width - req_xoffset;
- if ((req_yoffset + height) > image->height)
- height = image->height - req_yoffset;
- if ((width <= 0) || (height <= 0))
- return 0;
-
- if ((image->bits_per_pixel == 1) || (image->format != ZPixmap)) {
- dest_bits_per_pixel = 1;
- dest_scanline_pad = dpy->bitmap_pad;
- } else {
- register int n;
- register ScreenFormat *format;
-
- dest_bits_per_pixel = image->bits_per_pixel;
- dest_scanline_pad = image->bitmap_pad;
- for (n = dpy->nformats, format = dpy->pixmap_format; --n >= 0; format++)
- if (format->depth == image->depth) {
- dest_bits_per_pixel = format->bits_per_pixel;
- dest_scanline_pad = format->scanline_pad;
- }
- if (dest_bits_per_pixel != image->bits_per_pixel) {
- XImage img;
- register long i, j;
- /* XXX slow, but works */
- img.width = width;
- img.height = height;
- img.xoffset = 0;
- img.format = ZPixmap;
- img.byte_order = dpy->byte_order;
- img.bitmap_unit = dpy->bitmap_unit;
- img.bitmap_bit_order = dpy->bitmap_bit_order;
- img.bitmap_pad = dest_scanline_pad;
- img.depth = image->depth;
- img.bits_per_pixel = dest_bits_per_pixel;
- img.bytes_per_line = ROUNDUP((dest_bits_per_pixel * width),
- dest_scanline_pad) >> 3;
- img.data = Xmalloc((unsigned) (img.bytes_per_line * height));
- if (img.data == NULL)
- return 0;
- _XInitImageFuncPtrs(&img);
- for (j = height; --j >= 0; )
- for (i = width; --i >= 0; )
- XPutPixel(&img, i, j, XGetPixel(image, req_xoffset + i,
- req_yoffset + j));
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- PutSubImage(dpy, d, gc, &img, 0, 0, x, y,
- (unsigned int) width, (unsigned int) height,
- dest_bits_per_pixel, dest_scanline_pad);
- UnlockDisplay(dpy);
- SyncHandle();
- Xfree(img.data);
- return 0;
- }
- }
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
- (unsigned int) width, (unsigned int) height,
- dest_bits_per_pixel, dest_scanline_pad);
-
- UnlockDisplay(dpy);
- SyncHandle();
-#ifdef USE_DYNAMIC_XCURSOR
- if (image->bits_per_pixel == 1 &&
- x == 0 && y == 0 &&
- width == image->width && height == image->height &&
- gc->values.function == GXcopy &&
- (gc->values.plane_mask & 1))
- {
- _XNoticePutBitmap (dpy, d, image);
- }
-#endif
- return 0;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+#include <stdio.h>
+#include "Cr.h"
+#include "ImUtil.h"
+
+#if defined(__STDC__) && ((defined(sun) && defined(SVR4)) || defined(WIN32))
+#define RConst /**/
+#else
+#define RConst const
+#endif
+
+#if defined(Lynx) && defined(ROUNDUP)
+#undef ROUNDUP
+#endif
+
+/* assumes pad is a power of 2 */
+#define ROUNDUP(nbytes, pad) (((nbytes) + ((pad) - 1)) & ~(long)((pad) - 1))
+
+static unsigned char const _reverse_byte[0x100] = {
+ 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
+ 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
+ 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
+ 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
+ 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
+ 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
+ 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
+ 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
+ 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
+ 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
+ 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
+ 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
+ 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
+ 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
+ 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
+ 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
+ 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
+ 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
+ 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
+ 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
+ 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
+ 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
+ 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
+ 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
+ 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
+ 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
+ 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
+ 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
+ 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
+ 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
+ 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
+ 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
+};
+
+static unsigned char const _reverse_nibs[0x100] = {
+ 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
+ 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0,
+ 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71,
+ 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1,
+ 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72,
+ 0x82, 0x92, 0xa2, 0xb2, 0xc2, 0xd2, 0xe2, 0xf2,
+ 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73,
+ 0x83, 0x93, 0xa3, 0xb3, 0xc3, 0xd3, 0xe3, 0xf3,
+ 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74,
+ 0x84, 0x94, 0xa4, 0xb4, 0xc4, 0xd4, 0xe4, 0xf4,
+ 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75,
+ 0x85, 0x95, 0xa5, 0xb5, 0xc5, 0xd5, 0xe5, 0xf5,
+ 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76,
+ 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, 0xe6, 0xf6,
+ 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77,
+ 0x87, 0x97, 0xa7, 0xb7, 0xc7, 0xd7, 0xe7, 0xf7,
+ 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78,
+ 0x88, 0x98, 0xa8, 0xb8, 0xc8, 0xd8, 0xe8, 0xf8,
+ 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79,
+ 0x89, 0x99, 0xa9, 0xb9, 0xc9, 0xd9, 0xe9, 0xf9,
+ 0x0a, 0x1a, 0x2a, 0x3a, 0x4a, 0x5a, 0x6a, 0x7a,
+ 0x8a, 0x9a, 0xaa, 0xba, 0xca, 0xda, 0xea, 0xfa,
+ 0x0b, 0x1b, 0x2b, 0x3b, 0x4b, 0x5b, 0x6b, 0x7b,
+ 0x8b, 0x9b, 0xab, 0xbb, 0xcb, 0xdb, 0xeb, 0xfb,
+ 0x0c, 0x1c, 0x2c, 0x3c, 0x4c, 0x5c, 0x6c, 0x7c,
+ 0x8c, 0x9c, 0xac, 0xbc, 0xcc, 0xdc, 0xec, 0xfc,
+ 0x0d, 0x1d, 0x2d, 0x3d, 0x4d, 0x5d, 0x6d, 0x7d,
+ 0x8d, 0x9d, 0xad, 0xbd, 0xcd, 0xdd, 0xed, 0xfd,
+ 0x0e, 0x1e, 0x2e, 0x3e, 0x4e, 0x5e, 0x6e, 0x7e,
+ 0x8e, 0x9e, 0xae, 0xbe, 0xce, 0xde, 0xee, 0xfe,
+ 0x0f, 0x1f, 0x2f, 0x3f, 0x4f, 0x5f, 0x6f, 0x7f,
+ 0x8f, 0x9f, 0xaf, 0xbf, 0xcf, 0xdf, 0xef, 0xff
+};
+
+int
+_XReverse_Bytes(
+ register unsigned char *bpt,
+ register int nb)
+{
+ do {
+ *bpt = _reverse_byte[*bpt];
+ bpt++;
+ } while (--nb > 0);
+ return 0;
+}
+
+
+/* XXX the following functions are declared int instead of void because various
+ * compilers and lints complain about later initialization of SwapFunc and/or
+ * (swapfunc == NoSwap) when void is used.
+ */
+
+/*ARGSUSED*/
+static void
+NoSwap (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen,
+ long srcinc,
+ long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long h = height;
+
+ if (srcinc == destinc)
+ memcpy((char *)dest, (char *)src, (int)(srcinc * (h - 1) + srclen));
+ else
+ for (; --h >= 0; src += srcinc, dest += destinc)
+ memcpy((char *)dest, (char *)src, (int)srclen);
+}
+
+static void
+SwapTwoBytes (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 2);
+ register long h, n;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 2;
+ if (half_order == MSBFirst)
+ *(dest + length) = *(src + length + 1);
+ else
+ *(dest + length + 1) = *(src + length);
+ }
+ for (n = length; n > 0; n -= 2, src += 2) {
+ *dest++ = *(src + 1);
+ *dest++ = *src;
+ }
+ }
+}
+
+static void
+SwapThreeBytes (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int byte_order)
+{
+ long length = ((srclen + 2) / 3) * 3;
+ register long h, n;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 3;
+ if ((srclen - length) == 2)
+ *(dest + length + 1) = *(src + length + 1);
+ if (byte_order == MSBFirst)
+ *(dest + length) = *(src + length + 2);
+ else
+ *(dest + length + 2) = *(src + length);
+ }
+ for (n = length; n > 0; n -= 3, src += 3) {
+ *dest++ = *(src + 2);
+ *dest++ = *(src + 1);
+ *dest++ = *src;
+ }
+ }
+}
+
+static void
+SwapFourBytes (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 4);
+ register long h, n;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 4;
+ if (half_order == MSBFirst)
+ *(dest + length) = *(src + length + 3);
+ if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == MSBFirst) && (srclen & 2)))
+ *(dest + length + 1) = *(src + length + 2);
+ if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == LSBFirst) && (srclen & 2)))
+ *(dest + length + 2) = *(src + length + 1);
+ if (half_order == LSBFirst)
+ *(dest + length + 3) = *(src + length);
+ }
+ for (n = length; n > 0; n -= 4, src += 4) {
+ *dest++ = *(src + 3);
+ *dest++ = *(src + 2);
+ *dest++ = *(src + 1);
+ *dest++ = *src;
+ }
+ }
+}
+
+static void
+SwapWords (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 4);
+ register long h, n;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 4;
+ if (half_order == MSBFirst)
+ *(dest + length + 1) = *(src + length + 3);
+ if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == MSBFirst) && (srclen & 2)))
+ *(dest + length) = *(src + length + 2);
+ if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == LSBFirst) && (srclen & 2)))
+ *(dest + length + 3) = *(src + length + 1);
+ if (half_order == LSBFirst)
+ *(dest + length + 2) = *(src + length);
+ }
+ for (n = length; n > 0; n -= 4, src += 2) {
+ *dest++ = *(src + 2);
+ *dest++ = *(src + 3);
+ *dest++ = *src++;
+ *dest++ = *src++;
+ }
+ }
+}
+
+static void
+SwapNibbles(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height)
+{
+ register long h, n;
+ register const unsigned char *rev = _reverse_nibs;
+
+ srcinc -= srclen;
+ destinc -= srclen;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc)
+ for (n = srclen; --n >= 0; )
+ *dest++ = rev[*src++];
+}
+
+static void
+ShiftNibblesLeft (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int nibble_order)
+{
+ register long h, n;
+ register unsigned char c1, c2;
+
+ srcinc -= srclen;
+ destinc -= srclen;
+ if (nibble_order == MSBFirst) {
+ for (h = height; --h >= 0; src += srcinc, dest += destinc)
+ for (n = srclen; --n >= 0; ) {
+ c1 = *src++;
+ c2 = *src;
+ *dest++ = ((c1 & 0x0f) << 4) | ((c2 & (unsigned)0xf0) >> 4);
+ }
+ } else {
+ for (h = height; --h >= 0; src += srcinc, dest += destinc)
+ for (n = srclen; --n >= 0; ) {
+ c1 = *src++;
+ c2 = *src;
+ *dest++ = ((c2 & 0x0f) << 4) | ((c1 & (unsigned)0xf0) >> 4);
+ }
+ }
+}
+
+/*ARGSUSED*/
+static void
+SwapBits(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ register long h, n;
+ register const unsigned char *rev = _reverse_byte;
+
+ srcinc -= srclen;
+ destinc -= srclen;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc)
+ for (n = srclen; --n >= 0; )
+ *dest++ = rev[*src++];
+}
+
+static void
+SwapBitsAndTwoBytes(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 2);
+ register long h, n;
+ register const unsigned char *rev = _reverse_byte;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 2;
+ if (half_order == MSBFirst)
+ *(dest + length) = rev[*(src + length + 1)];
+ else
+ *(dest + length + 1) = rev[*(src + length)];
+ }
+ for (n = length; n > 0; n -= 2, src += 2) {
+ *dest++ = rev[*(src + 1)];
+ *dest++ = rev[*src];
+ }
+ }
+}
+
+static void
+SwapBitsAndFourBytes(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 4);
+ register long h, n;
+ register const unsigned char *rev = _reverse_byte;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 4;
+ if (half_order == MSBFirst)
+ *(dest + length) = rev[*(src + length + 3)];
+ if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == MSBFirst) && (srclen & 2)))
+ *(dest + length + 1) = rev[*(src + length + 2)];
+ if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == LSBFirst) && (srclen & 2)))
+ *(dest + length + 2) = rev[*(src + length + 1)];
+ if (half_order == LSBFirst)
+ *(dest + length + 3) = rev[*(src + length)];
+ }
+ for (n = length; n > 0; n -= 4, src += 4) {
+ *dest++ = rev[*(src + 3)];
+ *dest++ = rev[*(src + 2)];
+ *dest++ = rev[*(src + 1)];
+ *dest++ = rev[*src];
+ }
+ }
+}
+
+static void
+SwapBitsAndWords(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 4);
+ register long h, n;
+ register const unsigned char *rev = _reverse_byte;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 4;
+ if (half_order == MSBFirst)
+ *(dest + length + 1) = rev[*(src + length + 3)];
+ if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == MSBFirst) && (srclen & 2)))
+ *(dest + length) = rev[*(src + length + 2)];
+ if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == LSBFirst) && (srclen & 2)))
+ *(dest + length + 3) = rev[*(src + length + 1)];
+ if (half_order == LSBFirst)
+ *(dest + length + 2) = rev[*(src + length)];
+ }
+ for (n = length; n > 0; n -= 4, src += 2) {
+ *dest++ = rev[*(src + 2)];
+ *dest++ = rev[*(src + 3)];
+ *dest++ = rev[*src++];
+ *dest++ = rev[*src++];
+ }
+ }
+}
+
+/*
+
+The following table gives the bit ordering within bytes (when accessed
+sequentially) for a scanline containing 32 bits, with bits numbered 0 to
+31, where bit 0 should be leftmost on the display. For a given byte
+labelled A-B, A is for the most significant bit of the byte, and B is
+for the least significant bit.
+
+legend:
+ 1 scanline-unit = 8
+ 2 scanline-unit = 16
+ 4 scanline-unit = 32
+ M byte-order = MostSignificant
+ L byte-order = LeastSignificant
+ m bit-order = MostSignificant
+ l bit-order = LeastSignificant
+
+
+format ordering
+
+1Mm 00-07 08-15 16-23 24-31
+2Mm 00-07 08-15 16-23 24-31
+4Mm 00-07 08-15 16-23 24-31
+1Ml 07-00 15-08 23-16 31-24
+2Ml 15-08 07-00 31-24 23-16
+4Ml 31-24 23-16 15-08 07-00
+1Lm 00-07 08-15 16-23 24-31
+2Lm 08-15 00-07 24-31 16-23
+4Lm 24-31 16-23 08-15 00-07
+1Ll 07-00 15-08 23-16 31-24
+2Ll 07-00 15-08 23-16 31-24
+4Ll 07-00 15-08 23-16 31-24
+
+
+The following table gives the required conversion between any two
+formats. It is based strictly on the table above. If you believe one,
+you should believe the other.
+
+legend:
+ n no changes
+ s reverse 8-bit units within 16-bit units
+ l reverse 8-bit units within 32-bit units
+ w reverse 16-bit units within 32-bit units
+ R reverse bits within 8-bit units
+ S s+R
+ L l+R
+ W w+R
+
+*/
+
+static void (* RConst (SwapFunction[12][12]))(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen,
+ long srcinc,
+ long destinc,
+ unsigned int height,
+ int half_order) = {
+#define n NoSwap,
+#define s SwapTwoBytes,
+#define l SwapFourBytes,
+#define w SwapWords,
+#define R SwapBits,
+#define S SwapBitsAndTwoBytes,
+#define L SwapBitsAndFourBytes,
+#define W SwapBitsAndWords,
+
+/* 1Mm 2Mm 4Mm 1Ml 2Ml 4Ml 1Lm 2Lm 4Lm 1Ll 2Ll 4Ll */
+/* 1Mm */ { n n n R S L n s l R R R },
+/* 2Mm */ { n n n R S L n s l R R R },
+/* 4Mm */ { n n n R S L n s l R R R },
+/* 1Ml */ { R R R n s l R S L n n n },
+/* 2Ml */ { S S S s n w S R W s s s },
+/* 4Ml */ { L L L l w n L W R l l l },
+/* 1Lm */ { n n n R S L n s l R R R },
+/* 2Lm */ { s s s S R W s n w S S S },
+/* 4Lm */ { l l l L W R l w n L L L },
+/* 1Ll */ { R R R n s l R S L n n n },
+/* 2Ll */ { R R R n s l R S L n n n },
+/* 4Ll */ { R R R n s l R S L n n n }
+
+#undef n
+#undef s
+#undef l
+#undef w
+#undef R
+#undef S
+#undef L
+#undef W
+
+};
+
+/* Of course, the table above is a lie. We also need to factor in the
+ * order of the source data to cope with swapping half of a unit at the
+ * end of a scanline, since we are trying to avoid de-ref'ing off the
+ * end of the source.
+ *
+ * Defines whether the first half of a unit has the first half of the data
+ */
+static int const HalfOrder[12] = {
+ LSBFirst, /* 1Mm */
+ LSBFirst, /* 2Mm */
+ LSBFirst, /* 4Mm */
+ LSBFirst, /* 1Ml */
+ MSBFirst, /* 2Ml */
+ MSBFirst, /* 4Ml */
+ LSBFirst, /* 1Lm */
+ MSBFirst, /* 2Lm */
+ MSBFirst, /* 4Lm */
+ LSBFirst, /* 1Ll */
+ LSBFirst, /* 2Ll */
+ LSBFirst /* 4Ll */
+ };
+
+/* Finally, for SwapWords cases, the half order depends not just on the source
+ * but also on the destination scanline unit. Use of this table changes some
+ * MSBFirsts to LSBFirsts that are "do not care" (because the function will be
+ * NoSwap or SwapBits) in addition to changing the desired ones.
+ */
+
+static int const HalfOrderWord[12] = {
+ MSBFirst, /* 1Mm */
+ MSBFirst, /* 2Mm */
+ MSBFirst, /* 4Mm */
+ MSBFirst, /* 1Ml */
+ MSBFirst, /* 2Ml */
+ LSBFirst, /* 4Ml */
+ MSBFirst, /* 1Lm */
+ MSBFirst, /* 2Lm */
+ LSBFirst, /* 4Lm */
+ MSBFirst, /* 1Ll */
+ MSBFirst, /* 2Ll */
+ MSBFirst /* 4Ll */
+ };
+
+/*
+ * This macro creates a value from 0 to 11 suitable for indexing
+ * into the table above.
+ */
+#define ComposeIndex(bitmap_unit, bitmap_bit_order, byte_order) \
+ (((bitmap_unit == 32) ? 2 : ((bitmap_unit == 16) ? 1 : 0)) \
+ + (((bitmap_bit_order == MSBFirst) ? 0 : 3) \
+ + ((byte_order == MSBFirst) ? 0 : 6)))
+
+/* Cancel a GetReq operation, before doing _XSend or Data */
+
+#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)
+#define UnGetReq(name)\
+ dpy->bufptr -= SIZEOF(x##name##Req);\
+ dpy->request--
+#else
+#define UnGetReq(name)\
+ dpy->bufptr -= SIZEOF(x/**/name/**/Req);\
+ dpy->request--
+#endif
+
+static void
+SendXYImage(
+ register Display *dpy,
+ register xPutImageReq *req,
+ register XImage *image,
+ int req_xoffset, int req_yoffset)
+{
+ register int j;
+ long total_xoffset, bytes_per_src, bytes_per_dest, length;
+ long bytes_per_line, bytes_per_src_plane, bytes_per_dest_plane;
+ char *src, *dest, *buf;
+ char *extra = (char *)NULL;
+ register void (*swapfunc)(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen,
+ long srcinc,
+ long destinc,
+ unsigned int height,
+ int half_order);
+ int half_order;
+
+ total_xoffset = image->xoffset + req_xoffset;
+ req->leftPad = total_xoffset & (dpy->bitmap_unit - 1);
+ total_xoffset = (unsigned)(total_xoffset - req->leftPad) >> 3;
+ /* The protocol requires left-pad of zero on all ZPixmap, even
+ * though the 1-bit case is identical to bitmap format. This is a
+ * bug in the protocol, caused because 1-bit ZPixmap was added late
+ * in the game. Hairy shifting code compensation isn't worth it,
+ * just use XYPixmap format instead.
+ */
+ if ((req->leftPad != 0) && (req->format == ZPixmap))
+ req->format = XYPixmap;
+ bytes_per_dest = (unsigned long)ROUNDUP((long)req->width + req->leftPad,
+ dpy->bitmap_pad) >> 3;
+ bytes_per_dest_plane = bytes_per_dest * req->height;
+ length = bytes_per_dest_plane * image->depth;
+ req->length += (length + 3) >> 2;
+
+ swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
+ image->bitmap_bit_order,
+ image->byte_order)]
+ [ComposeIndex(dpy->bitmap_unit,
+ dpy->bitmap_bit_order,
+ dpy->byte_order)];
+ half_order = HalfOrder[ComposeIndex(image->bitmap_unit,
+ image->bitmap_bit_order,
+ image->byte_order)];
+ if (half_order == MSBFirst)
+ half_order = HalfOrderWord[ComposeIndex(dpy->bitmap_unit,
+ dpy->bitmap_bit_order,
+ dpy->byte_order)];
+
+ src = image->data + (image->bytes_per_line * req_yoffset) + total_xoffset;
+
+ /* when total_xoffset > 0, we have to worry about stepping off the
+ * end of image->data.
+ */
+ if ((swapfunc == NoSwap) &&
+ (image->bytes_per_line == bytes_per_dest) &&
+ (((total_xoffset == 0) &&
+ ((image->depth == 1) || (image->height == req->height))) ||
+ ((image->depth == 1) &&
+ ((req_yoffset + req->height) < (unsigned)image->height)))) {
+ Data(dpy, src, length);
+ return;
+ }
+
+ length = ROUNDUP(length, 4);
+ if ((dpy->bufptr + length) > dpy->bufmax) {
+ if ((buf = _XAllocScratch(dpy, (unsigned long) (length))) == NULL) {
+ UnGetReq(PutImage);
+ return;
+ }
+ }
+ else
+ buf = dpy->bufptr;
+
+ bytes_per_src = (req->width + req->leftPad + (unsigned)7) >> 3;
+ bytes_per_line = image->bytes_per_line;
+ bytes_per_src_plane = bytes_per_line * image->height;
+ total_xoffset &= (image->bitmap_unit - 1) >> 3;
+
+ if ((total_xoffset > 0) &&
+ (image->byte_order != image->bitmap_bit_order)) {
+ char *temp;
+ long bytes_per_temp_plane, temp_length;
+
+ bytes_per_line = bytes_per_src + total_xoffset;
+ src -= total_xoffset;
+ bytes_per_temp_plane = bytes_per_line * req->height;
+ temp_length = ROUNDUP(bytes_per_temp_plane * image->depth, 4);
+ if (buf == dpy->bufptr) {
+ if (! (temp = _XAllocScratch(dpy, (unsigned long) temp_length))) {
+ UnGetReq(PutImage);
+ return;
+ }
+ }
+ else
+ if ((extra = temp = Xmalloc((unsigned) temp_length)) == NULL) {
+ UnGetReq(PutImage);
+ return;
+ }
+
+ swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
+ image->bitmap_bit_order,
+ image->byte_order)]
+ [ComposeIndex(image->bitmap_unit,
+ dpy->byte_order,
+ dpy->byte_order)];
+ for (dest = temp, j = image->depth;
+ --j >= 0;
+ src += bytes_per_src_plane, dest += bytes_per_temp_plane)
+ (*swapfunc)((unsigned char *)src, (unsigned char *)dest,
+ bytes_per_line, (long)image->bytes_per_line,
+ bytes_per_line, req->height, half_order);
+ swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
+ dpy->byte_order,
+ dpy->byte_order)]
+ [ComposeIndex(dpy->bitmap_unit,
+ dpy->bitmap_bit_order,
+ dpy->byte_order)];
+ half_order = HalfOrder[ComposeIndex(image->bitmap_unit,
+ dpy->byte_order,
+ dpy->byte_order)];
+ src = temp + total_xoffset;
+ bytes_per_src_plane = bytes_per_temp_plane;
+ }
+
+ for (dest = buf, j = image->depth;
+ --j >= 0;
+ src += bytes_per_src_plane, dest += bytes_per_dest_plane)
+ (*swapfunc)((unsigned char *)src, (unsigned char *)dest,
+ bytes_per_src, bytes_per_line,
+ bytes_per_dest, req->height, half_order);
+
+ if (extra)
+ Xfree(extra);
+
+ if (buf == dpy->bufptr)
+ dpy->bufptr += length;
+ else
+ _XSend(dpy, buf, length);
+ }
+
+static void
+SendZImage(
+ register Display *dpy,
+ register xPutImageReq *req,
+ register XImage *image,
+ int req_xoffset, int req_yoffset,
+ int dest_bits_per_pixel, int dest_scanline_pad)
+{
+ long bytes_per_src, bytes_per_dest, length;
+ unsigned char *src, *dest;
+ unsigned char *shifted_src = NULL;
+
+ req->leftPad = 0;
+ bytes_per_src = ROUNDUP((long)req->width * image->bits_per_pixel, 8) >> 3;
+ bytes_per_dest = ROUNDUP((long)req->width * dest_bits_per_pixel,
+ dest_scanline_pad) >> 3;
+ length = bytes_per_dest * req->height;
+ req->length += (length + 3) >> 2;
+
+ src = (unsigned char *)image->data +
+ (req_yoffset * image->bytes_per_line) +
+ ((req_xoffset * image->bits_per_pixel) >> 3);
+ if ((image->bits_per_pixel == 4) && ((unsigned int) req_xoffset & 0x01)) {
+ if (! (shifted_src = (unsigned char *)
+ Xmalloc((unsigned) (req->height * image->bytes_per_line)))) {
+ UnGetReq(PutImage);
+ return;
+ }
+
+ ShiftNibblesLeft(src, shifted_src, bytes_per_src,
+ (long) image->bytes_per_line,
+ (long) image->bytes_per_line, req->height,
+ image->byte_order);
+ src = shifted_src;
+ }
+
+ /* when req_xoffset > 0, we have to worry about stepping off the
+ * end of image->data.
+ */
+ if (((image->byte_order == dpy->byte_order) ||
+ (image->bits_per_pixel == 8)) &&
+ ((long)image->bytes_per_line == bytes_per_dest) &&
+ ((req_xoffset == 0) ||
+ ((req_yoffset + req->height) < (unsigned)image->height))) {
+ Data(dpy, (char *)src, length);
+ if (shifted_src)
+ Xfree((char *)shifted_src);
+ return;
+ }
+
+ length = ROUNDUP(length, 4);
+ if ((dpy->bufptr + length) <= dpy->bufmax)
+ dest = (unsigned char *)dpy->bufptr;
+ else
+ if ((dest = (unsigned char *)
+ _XAllocScratch(dpy, (unsigned long)(length))) == NULL) {
+ if (shifted_src) Xfree((char *) shifted_src);
+ UnGetReq(PutImage);
+ return;
+ }
+
+ if ((image->byte_order == dpy->byte_order) ||
+ (image->bits_per_pixel == 8))
+ NoSwap(src, dest, bytes_per_src, (long)image->bytes_per_line,
+ bytes_per_dest, req->height, image->byte_order);
+ else if (image->bits_per_pixel == 32)
+ SwapFourBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
+ bytes_per_dest, req->height, image->byte_order);
+ else if (image->bits_per_pixel == 24)
+ SwapThreeBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
+ bytes_per_dest, req->height, image->byte_order);
+ else if (image->bits_per_pixel == 16)
+ SwapTwoBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
+ bytes_per_dest, req->height, image->byte_order);
+ else
+ SwapNibbles(src, dest, bytes_per_src, (long)image->bytes_per_line,
+ bytes_per_dest, req->height);
+
+ if (dest == (unsigned char *)dpy->bufptr)
+ dpy->bufptr += length;
+ else
+ _XSend(dpy, (char *)dest, length);
+
+ if (shifted_src)
+ Xfree((char *)shifted_src);
+}
+
+static void
+PutImageRequest(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ register XImage *image,
+ int req_xoffset, int req_yoffset,
+ int x, int y,
+ unsigned int req_width, unsigned int req_height,
+ int dest_bits_per_pixel, int dest_scanline_pad)
+{
+ register xPutImageReq *req;
+
+ GetReq(PutImage, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->dstX = x;
+ req->dstY = y;
+ req->width = req_width;
+ req->height = req_height;
+ req->depth = image->depth;
+ req->format = image->format;
+ if ((image->bits_per_pixel == 1) || (image->format != ZPixmap))
+ SendXYImage(dpy, req, image, req_xoffset, req_yoffset);
+ else
+ SendZImage(dpy, req, image, req_xoffset, req_yoffset,
+ dest_bits_per_pixel, dest_scanline_pad);
+}
+
+static void
+PutSubImage (
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ register XImage *image,
+ int req_xoffset,
+ int req_yoffset,
+ int x, int y,
+ unsigned int req_width,
+ unsigned int req_height,
+ int dest_bits_per_pixel,
+ int dest_scanline_pad)
+{
+ int left_pad, BytesPerRow, Available;
+
+ if ((req_width == 0) || (req_height == 0))
+ return;
+
+ Available = ((65536 < dpy->max_request_size) ? (65536 << 2)
+ : (dpy->max_request_size << 2))
+ - SIZEOF(xPutImageReq);
+
+ if ((image->bits_per_pixel == 1) || (image->format != ZPixmap)) {
+ left_pad = (image->xoffset + req_xoffset) & (dpy->bitmap_unit - 1);
+ BytesPerRow = (ROUNDUP((long)req_width + left_pad,
+ dpy->bitmap_pad) >> 3) * image->depth;
+ } else {
+ left_pad = 0;
+ BytesPerRow = ROUNDUP((long)req_width * dest_bits_per_pixel,
+ dest_scanline_pad) >> 3;
+ }
+
+ if ((BytesPerRow * req_height) <= Available) {
+ PutImageRequest(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
+ req_width, req_height,
+ dest_bits_per_pixel, dest_scanline_pad);
+ } else if (req_height > 1) {
+ int SubImageHeight = Available / BytesPerRow;
+
+ if (SubImageHeight == 0)
+ SubImageHeight = 1;
+
+ PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
+ req_width, (unsigned int) SubImageHeight,
+ dest_bits_per_pixel, dest_scanline_pad);
+
+ PutSubImage(dpy, d, gc, image, req_xoffset,
+ req_yoffset + SubImageHeight, x, y + SubImageHeight,
+ req_width, req_height - SubImageHeight,
+ dest_bits_per_pixel, dest_scanline_pad);
+ } else {
+ int SubImageWidth = (((Available << 3) / dest_scanline_pad)
+ * dest_scanline_pad) - left_pad;
+
+ PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
+ (unsigned int) SubImageWidth, 1,
+ dest_bits_per_pixel, dest_scanline_pad);
+
+ PutSubImage(dpy, d, gc, image, req_xoffset + SubImageWidth,
+ req_yoffset, x + SubImageWidth, y,
+ req_width - SubImageWidth, 1,
+ dest_bits_per_pixel, dest_scanline_pad);
+ }
+}
+
+
+int
+XPutImage (
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ register XImage *image,
+ int req_xoffset,
+ int req_yoffset,
+ int x,
+ int y,
+ unsigned int req_width,
+ unsigned int req_height)
+
+{
+ long width = req_width;
+ long height = req_height;
+ int dest_bits_per_pixel, dest_scanline_pad;
+
+ if (req_xoffset < 0) {
+ width += req_xoffset;
+ req_xoffset = 0;
+ }
+ if (req_yoffset < 0) {
+ height += req_yoffset;
+ req_yoffset = 0;
+ }
+ if ((req_xoffset + width) > image->width)
+ width = image->width - req_xoffset;
+ if ((req_yoffset + height) > image->height)
+ height = image->height - req_yoffset;
+ if ((width <= 0) || (height <= 0))
+ return 0;
+
+ if ((image->bits_per_pixel == 1) || (image->format != ZPixmap)) {
+ dest_bits_per_pixel = 1;
+ dest_scanline_pad = dpy->bitmap_pad;
+ } else {
+ register int n;
+ register ScreenFormat *format;
+
+ dest_bits_per_pixel = image->bits_per_pixel;
+ dest_scanline_pad = image->bitmap_pad;
+ for (n = dpy->nformats, format = dpy->pixmap_format; --n >= 0; format++)
+ if (format->depth == image->depth) {
+ dest_bits_per_pixel = format->bits_per_pixel;
+ dest_scanline_pad = format->scanline_pad;
+ }
+ if (dest_bits_per_pixel != image->bits_per_pixel) {
+ XImage img;
+ register long i, j;
+ /* XXX slow, but works */
+ img.width = width;
+ img.height = height;
+ img.xoffset = 0;
+ img.format = ZPixmap;
+ img.byte_order = dpy->byte_order;
+ img.bitmap_unit = dpy->bitmap_unit;
+ img.bitmap_bit_order = dpy->bitmap_bit_order;
+ img.bitmap_pad = dest_scanline_pad;
+ img.depth = image->depth;
+ img.bits_per_pixel = dest_bits_per_pixel;
+ img.bytes_per_line = ROUNDUP((dest_bits_per_pixel * width),
+ dest_scanline_pad) >> 3;
+ img.data = Xmalloc((unsigned) (img.bytes_per_line * height));
+ if (img.data == NULL)
+ return 0;
+ _XInitImageFuncPtrs(&img);
+ for (j = height; --j >= 0; )
+ for (i = width; --i >= 0; )
+ XPutPixel(&img, i, j, XGetPixel(image, req_xoffset + i,
+ req_yoffset + j));
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ PutSubImage(dpy, d, gc, &img, 0, 0, x, y,
+ (unsigned int) width, (unsigned int) height,
+ dest_bits_per_pixel, dest_scanline_pad);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ Xfree(img.data);
+ return 0;
+ }
+ }
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
+ (unsigned int) width, (unsigned int) height,
+ dest_bits_per_pixel, dest_scanline_pad);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+#ifdef USE_DYNAMIC_XCURSOR
+ if (image->bits_per_pixel == 1 &&
+ x == 0 && y == 0 &&
+ width == image->width && height == image->height &&
+ gc->values.function == GXcopy &&
+ (gc->values.plane_mask & 1))
+ {
+ _XNoticePutBitmap (dpy, d, image);
+ }
+#endif
+ return 0;
+}
diff --git a/libX11/src/RaiseWin.c b/libX11/src/RaiseWin.c
index f431db579..079439f2f 100644
--- a/libX11/src/RaiseWin.c
+++ b/libX11/src/RaiseWin.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XRaiseWindow (
- register Display *dpy,
- Window w)
-{
- register xConfigureWindowReq *req;
- unsigned long val = Above; /* needed for macro below */
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 4, req);
- req->window = w;
- req->mask = CWStackMode;
- OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XRaiseWindow (
+ register Display *dpy,
+ Window w)
+{
+ register xConfigureWindowReq *req;
+ unsigned long val = Above; /* needed for macro below */
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 4, req);
+ req->window = w;
+ req->mask = CWStackMode;
+ OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/RecolorC.c b/libX11/src/RecolorC.c
index a54b48cb8..6d2aacfa0 100644
--- a/libX11/src/RecolorC.c
+++ b/libX11/src/RecolorC.c
@@ -1,54 +1,54 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XRecolorCursor(
- register Display *dpy,
- Cursor cursor,
- XColor *foreground,
- XColor *background)
-{
- register xRecolorCursorReq *req;
-
- LockDisplay(dpy);
- GetReq(RecolorCursor, req);
- req->cursor = cursor;
- req->foreRed = foreground->red;
- req->foreGreen = foreground->green;
- req->foreBlue = foreground->blue;
- req->backRed = background->red;
- req->backGreen = background->green;
- req->backBlue = background->blue;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XRecolorCursor(
+ register Display *dpy,
+ Cursor cursor,
+ XColor *foreground,
+ XColor *background)
+{
+ register xRecolorCursorReq *req;
+
+ LockDisplay(dpy);
+ GetReq(RecolorCursor, req);
+ req->cursor = cursor;
+ req->foreRed = foreground->red;
+ req->foreGreen = foreground->green;
+ req->foreBlue = foreground->blue;
+ req->backRed = background->red;
+ req->backGreen = background->green;
+ req->backBlue = background->blue;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ReconfWin.c b/libX11/src/ReconfWin.c
index bfa99f528..4c2614d9d 100644
--- a/libX11/src/ReconfWin.c
+++ b/libX11/src/ReconfWin.c
@@ -1,81 +1,81 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define AllMaskBits (CWX|CWY|CWWidth|CWHeight|\
- CWBorderWidth|CWSibling|CWStackMode)
-
-int
-XConfigureWindow(
- register Display *dpy,
- Window w,
- unsigned int mask,
- XWindowChanges *changes)
-{
- unsigned long values[7];
- register unsigned long *value = values;
- long nvalues;
- register xConfigureWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(ConfigureWindow, req);
- req->window = w;
- mask &= AllMaskBits;
- req->mask = mask;
-
- if (mask & CWX)
- *value++ = changes->x;
-
- if (mask & CWY)
- *value++ = changes->y;
-
- if (mask & CWWidth)
- *value++ = changes->width;
-
- if (mask & CWHeight)
- *value++ = changes->height;
-
- if (mask & CWBorderWidth)
- *value++ = changes->border_width;
-
- if (mask & CWSibling)
- *value++ = changes->sibling;
-
- if (mask & CWStackMode)
- *value++ = changes->stack_mode;
-
- req->length += (nvalues = value - values);
-
- nvalues <<= 2; /* watch out for macros... */
- Data32 (dpy, (long *) values, nvalues);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define AllMaskBits (CWX|CWY|CWWidth|CWHeight|\
+ CWBorderWidth|CWSibling|CWStackMode)
+
+int
+XConfigureWindow(
+ register Display *dpy,
+ Window w,
+ unsigned int mask,
+ XWindowChanges *changes)
+{
+ unsigned long values[7];
+ register unsigned long *value = values;
+ long nvalues;
+ register xConfigureWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ConfigureWindow, req);
+ req->window = w;
+ mask &= AllMaskBits;
+ req->mask = mask;
+
+ if (mask & CWX)
+ *value++ = changes->x;
+
+ if (mask & CWY)
+ *value++ = changes->y;
+
+ if (mask & CWWidth)
+ *value++ = changes->width;
+
+ if (mask & CWHeight)
+ *value++ = changes->height;
+
+ if (mask & CWBorderWidth)
+ *value++ = changes->border_width;
+
+ if (mask & CWSibling)
+ *value++ = changes->sibling;
+
+ if (mask & CWStackMode)
+ *value++ = changes->stack_mode;
+
+ req->length += (nvalues = value - values);
+
+ nvalues <<= 2; /* watch out for macros... */
+ Data32 (dpy, (long *) values, nvalues);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
diff --git a/libX11/src/Region.c b/libX11/src/Region.c
index 3003ac52a..41047b242 100644
--- a/libX11/src/Region.c
+++ b/libX11/src/Region.c
@@ -1,1604 +1,1604 @@
-/************************************************************************
-
-Copyright 1987, 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987, 1988 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-************************************************************************/
-/*
- * The functions in this file implement the Region abstraction, similar to one
- * used in the X11 sample server. A Region is simply an area, as the name
- * implies, and is implemented as a "y-x-banded" array of rectangles. To
- * explain: Each Region is made up of a certain number of rectangles sorted
- * by y coordinate first, and then by x coordinate.
- *
- * Furthermore, the rectangles are banded such that every rectangle with a
- * given upper-left y coordinate (y1) will have the same lower-right y
- * coordinate (y2) and vice versa. If a rectangle has scanlines in a band, it
- * will span the entire vertical distance of the band. This means that some
- * areas that could be merged into a taller rectangle will be represented as
- * several shorter rectangles to account for shorter rectangles to its left
- * or right but within its "vertical scope".
- *
- * An added constraint on the rectangles is that they must cover as much
- * horizontal area as possible. E.g. no two rectangles in a band are allowed
- * to touch.
- *
- * Whenever possible, bands will be merged together to cover a greater vertical
- * distance (and thus reduce the number of rectangles). Two bands can be merged
- * only if the bottom of one touches the top of the other and they have
- * rectangles in the same places (of the same width, of course). This maintains
- * the y-x-banding that's so nice to have...
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-#include <X11/Xregion.h>
-#include "poly.h"
-
-#ifdef DEBUG
-#include <stdio.h>
-#define assert(expr) {if (!(expr)) fprintf(stderr,\
-"Assertion failed file %s, line %d: expr\n", __FILE__, __LINE__); }
-#else
-#define assert(expr)
-#endif
-
-typedef int (*overlapProcp)(
- register Region pReg,
- register BoxPtr r1,
- BoxPtr r1End,
- register BoxPtr r2,
- BoxPtr r2End,
- short y1,
- short y2);
-
-typedef int (*nonOverlapProcp)(
- register Region pReg,
- register BoxPtr r,
- BoxPtr rEnd,
- register short y1,
- register short y2);
-
-static void miRegionOp(
- register Region newReg, /* Place to store result */
- Region reg1, /* First region in operation */
- Region reg2, /* 2d region in operation */
- int (*overlapFunc)(
- register Region pReg,
- register BoxPtr r1,
- BoxPtr r1End,
- register BoxPtr r2,
- BoxPtr r2End,
- short y1,
- short y2), /* Function to call for over-
- * lapping bands */
- int (*nonOverlap1Func)(
- register Region pReg,
- register BoxPtr r,
- BoxPtr rEnd,
- register short y1,
- register short y2), /* Function to call for non-
- * overlapping bands in region
- * 1 */
- int (*nonOverlap2Func)(
- register Region pReg,
- register BoxPtr r,
- BoxPtr rEnd,
- register short y1,
- register short y2)); /* Function to call for non-
- * overlapping bands in region
- * 2 */
-
-
-/* Create a new empty region */
-Region
-XCreateRegion(void)
-{
- Region temp;
-
- if (! (temp = ( Region )Xmalloc( (unsigned) sizeof( REGION ))))
- return (Region) NULL;
- if (! (temp->rects = ( BOX * )Xmalloc( (unsigned) sizeof( BOX )))) {
- Xfree((char *) temp);
- return (Region) NULL;
- }
- temp->numRects = 0;
- temp->extents.x1 = 0;
- temp->extents.y1 = 0;
- temp->extents.x2 = 0;
- temp->extents.y2 = 0;
- temp->size = 1;
- return( temp );
-}
-
-int
-XClipBox(
- Region r,
- XRectangle *rect)
-{
- rect->x = r->extents.x1;
- rect->y = r->extents.y1;
- rect->width = r->extents.x2 - r->extents.x1;
- rect->height = r->extents.y2 - r->extents.y1;
- return 1;
-}
-
-int
-XUnionRectWithRegion(
- register XRectangle *rect,
- Region source, Region dest)
-{
- REGION region;
-
- if (!rect->width || !rect->height)
- return 0;
- region.rects = &region.extents;
- region.numRects = 1;
- region.extents.x1 = rect->x;
- region.extents.y1 = rect->y;
- region.extents.x2 = rect->x + rect->width;
- region.extents.y2 = rect->y + rect->height;
- region.size = 1;
-
- return XUnionRegion(&region, source, dest);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * miSetExtents --
- * Reset the extents of a region to what they should be. Called by
- * miSubtract and miIntersect b/c they can't figure it out along the
- * way or do so easily, as miUnion can.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The region's 'extents' structure is overwritten.
- *
- *-----------------------------------------------------------------------
- */
-static void
-miSetExtents (
- Region pReg)
-{
- register BoxPtr pBox,
- pBoxEnd,
- pExtents;
-
- if (pReg->numRects == 0)
- {
- pReg->extents.x1 = 0;
- pReg->extents.y1 = 0;
- pReg->extents.x2 = 0;
- pReg->extents.y2 = 0;
- return;
- }
-
- pExtents = &pReg->extents;
- pBox = pReg->rects;
- pBoxEnd = &pBox[pReg->numRects - 1];
-
- /*
- * Since pBox is the first rectangle in the region, it must have the
- * smallest y1 and since pBoxEnd is the last rectangle in the region,
- * it must have the largest y2, because of banding. Initialize x1 and
- * x2 from pBox and pBoxEnd, resp., as good things to initialize them
- * to...
- */
- pExtents->x1 = pBox->x1;
- pExtents->y1 = pBox->y1;
- pExtents->x2 = pBoxEnd->x2;
- pExtents->y2 = pBoxEnd->y2;
-
- assert(pExtents->y1 < pExtents->y2);
- while (pBox <= pBoxEnd)
- {
- if (pBox->x1 < pExtents->x1)
- {
- pExtents->x1 = pBox->x1;
- }
- if (pBox->x2 > pExtents->x2)
- {
- pExtents->x2 = pBox->x2;
- }
- pBox++;
- }
- assert(pExtents->x1 < pExtents->x2);
-}
-
-int
-XSetRegion(
- Display *dpy,
- GC gc,
- register Region r)
-{
- register int i;
- register XRectangle *xr, *pr;
- register BOX *pb;
- unsigned long total;
-
- LockDisplay (dpy);
- total = r->numRects * sizeof (XRectangle);
- if ((xr = (XRectangle *) _XAllocTemp(dpy, total))) {
- for (pr = xr, pb = r->rects, i = r->numRects; --i >= 0; pr++, pb++) {
- pr->x = pb->x1;
- pr->y = pb->y1;
- pr->width = pb->x2 - pb->x1;
- pr->height = pb->y2 - pb->y1;
- }
- }
- if (xr || !r->numRects)
- _XSetClipRectangles(dpy, gc, 0, 0, xr, r->numRects, YXBanded);
- if (xr)
- _XFreeTemp(dpy, (char *)xr, total);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XDestroyRegion(
- Region r)
-{
- Xfree( (char *) r->rects );
- Xfree( (char *) r );
- return 1;
-}
-
-
-/* TranslateRegion(pRegion, x, y)
- translates in place
- added by raymond
-*/
-
-int
-XOffsetRegion(
- register Region pRegion,
- register int x,
- register int y)
-{
- register int nbox;
- register BOX *pbox;
-
- pbox = pRegion->rects;
- nbox = pRegion->numRects;
-
- while(nbox--)
- {
- pbox->x1 += x;
- pbox->x2 += x;
- pbox->y1 += y;
- pbox->y2 += y;
- pbox++;
- }
- pRegion->extents.x1 += x;
- pRegion->extents.x2 += x;
- pRegion->extents.y1 += y;
- pRegion->extents.y2 += y;
- return 1;
-}
-
-/*
- Utility procedure Compress:
- Replace r by the region r', where
- p in r' iff (Quantifer m <= dx) (p + m in r), and
- Quantifier is Exists if grow is TRUE, For all if grow is FALSE, and
- (x,y) + m = (x+m,y) if xdir is TRUE; (x,y+m) if xdir is FALSE.
-
- Thus, if xdir is TRUE and grow is FALSE, r is replaced by the region
- of all points p such that p and the next dx points on the same
- horizontal scan line are all in r. We do this using by noting
- that p is the head of a run of length 2^i + k iff p is the head
- of a run of length 2^i and p+2^i is the head of a run of length
- k. Thus, the loop invariant: s contains the region corresponding
- to the runs of length shift. r contains the region corresponding
- to the runs of length 1 + dxo & (shift-1), where dxo is the original
- value of dx. dx = dxo & ~(shift-1). As parameters, s and t are
- scratch regions, so that we don't have to allocate them on every
- call.
-*/
-
-#define ZOpRegion(a,b,c) if (grow) XUnionRegion(a,b,c); \
- else XIntersectRegion(a,b,c)
-#define ZShiftRegion(a,b) if (xdir) XOffsetRegion(a,b,0); \
- else XOffsetRegion(a,0,b)
-#define ZCopyRegion(a,b) XUnionRegion(a,a,b)
-
-static void
-Compress(
- Region r, Region s, Region t,
- register unsigned dx,
- register int xdir, register int grow)
-{
- register unsigned shift = 1;
-
- ZCopyRegion(r, s);
- while (dx) {
- if (dx & shift) {
- ZShiftRegion(r, -(int)shift);
- ZOpRegion(r, s, r);
- dx -= shift;
- if (!dx) break;
- }
- ZCopyRegion(s, t);
- ZShiftRegion(s, -(int)shift);
- ZOpRegion(s, t, s);
- shift <<= 1;
- }
-}
-
-#undef ZOpRegion
-#undef ZShiftRegion
-#undef ZCopyRegion
-
-int
-XShrinkRegion(
- Region r,
- int dx, int dy)
-{
- Region s, t;
- int grow;
-
- if (!dx && !dy) return 0;
- if (! (s = XCreateRegion()) )
- return 0;
- if (! (t = XCreateRegion()) ) {
- XDestroyRegion(s);
- return 0;
- }
- if ((grow = (dx < 0))) dx = -dx;
- if (dx) Compress(r, s, t, (unsigned) 2*dx, TRUE, grow);
- if ((grow = (dy < 0))) dy = -dy;
- if (dy) Compress(r, s, t, (unsigned) 2*dy, FALSE, grow);
- XOffsetRegion(r, dx, dy);
- XDestroyRegion(s);
- XDestroyRegion(t);
- return 0;
-}
-
-
-/*======================================================================
- * Region Intersection
- *====================================================================*/
-/*-
- *-----------------------------------------------------------------------
- * miIntersectO --
- * Handle an overlapping band for miIntersect.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Rectangles may be added to the region.
- *
- *-----------------------------------------------------------------------
- */
-/* static void*/
-static int
-miIntersectO (
- register Region pReg,
- register BoxPtr r1,
- BoxPtr r1End,
- register BoxPtr r2,
- BoxPtr r2End,
- short y1,
- short y2)
-{
- register short x1;
- register short x2;
- register BoxPtr pNextRect;
-
- pNextRect = &pReg->rects[pReg->numRects];
-
- while ((r1 != r1End) && (r2 != r2End))
- {
- x1 = max(r1->x1,r2->x1);
- x2 = min(r1->x2,r2->x2);
-
- /*
- * If there's any overlap between the two rectangles, add that
- * overlap to the new region.
- * There's no need to check for subsumption because the only way
- * such a need could arise is if some region has two rectangles
- * right next to each other. Since that should never happen...
- */
- if (x1 < x2)
- {
- assert(y1<y2);
-
- MEMCHECK(pReg, pNextRect, pReg->rects);
- pNextRect->x1 = x1;
- pNextRect->y1 = y1;
- pNextRect->x2 = x2;
- pNextRect->y2 = y2;
- pReg->numRects += 1;
- pNextRect++;
- assert(pReg->numRects <= pReg->size);
- }
-
- /*
- * Need to advance the pointers. Shift the one that extends
- * to the right the least, since the other still has a chance to
- * overlap with that region's next rectangle, if you see what I mean.
- */
- if (r1->x2 < r2->x2)
- {
- r1++;
- }
- else if (r2->x2 < r1->x2)
- {
- r2++;
- }
- else
- {
- r1++;
- r2++;
- }
- }
- return 0; /* lint */
-}
-
-int
-XIntersectRegion(
- Region reg1,
- Region reg2, /* source regions */
- register Region newReg) /* destination Region */
-{
- /* check for trivial reject */
- if ( (!(reg1->numRects)) || (!(reg2->numRects)) ||
- (!EXTENTCHECK(&reg1->extents, &reg2->extents)))
- newReg->numRects = 0;
- else
- miRegionOp (newReg, reg1, reg2,
- miIntersectO, NULL, NULL);
-
- /*
- * Can't alter newReg's extents before we call miRegionOp because
- * it might be one of the source regions and miRegionOp depends
- * on the extents of those regions being the same. Besides, this
- * way there's no checking against rectangles that will be nuked
- * due to coalescing, so we have to examine fewer rectangles.
- */
- miSetExtents(newReg);
- return 1;
-}
-
-static void
-miRegionCopy(
- register Region dstrgn,
- register Region rgn)
-
-{
- if (dstrgn != rgn) /* don't want to copy to itself */
- {
- if (dstrgn->size < rgn->numRects)
- {
- if (dstrgn->rects)
- {
- BOX *prevRects = dstrgn->rects;
-
- if (! (dstrgn->rects = (BOX *)
- Xrealloc((char *) dstrgn->rects,
- (unsigned) rgn->numRects * (sizeof(BOX))))) {
- Xfree(prevRects);
- return;
- }
- }
- dstrgn->size = rgn->numRects;
- }
- dstrgn->numRects = rgn->numRects;
- dstrgn->extents.x1 = rgn->extents.x1;
- dstrgn->extents.y1 = rgn->extents.y1;
- dstrgn->extents.x2 = rgn->extents.x2;
- dstrgn->extents.y2 = rgn->extents.y2;
-
- memcpy((char *) dstrgn->rects, (char *) rgn->rects,
- (int) (rgn->numRects * sizeof(BOX)));
- }
-}
-
-/*======================================================================
- * Generic Region Operator
- *====================================================================*/
-
-/*-
- *-----------------------------------------------------------------------
- * miCoalesce --
- * Attempt to merge the boxes in the current band with those in the
- * previous one. Used only by miRegionOp.
- *
- * Results:
- * The new index for the previous band.
- *
- * Side Effects:
- * If coalescing takes place:
- * - rectangles in the previous band will have their y2 fields
- * altered.
- * - pReg->numRects will be decreased.
- *
- *-----------------------------------------------------------------------
- */
-/* static int*/
-static int
-miCoalesce(
- register Region pReg, /* Region to coalesce */
- int prevStart, /* Index of start of previous band */
- int curStart) /* Index of start of current band */
-{
- register BoxPtr pPrevBox; /* Current box in previous band */
- register BoxPtr pCurBox; /* Current box in current band */
- register BoxPtr pRegEnd; /* End of region */
- int curNumRects; /* Number of rectangles in current
- * band */
- int prevNumRects; /* Number of rectangles in previous
- * band */
- int bandY1; /* Y1 coordinate for current band */
-
- pRegEnd = &pReg->rects[pReg->numRects];
-
- pPrevBox = &pReg->rects[prevStart];
- prevNumRects = curStart - prevStart;
-
- /*
- * Figure out how many rectangles are in the current band. Have to do
- * this because multiple bands could have been added in miRegionOp
- * at the end when one region has been exhausted.
- */
- pCurBox = &pReg->rects[curStart];
- bandY1 = pCurBox->y1;
- for (curNumRects = 0;
- (pCurBox != pRegEnd) && (pCurBox->y1 == bandY1);
- curNumRects++)
- {
- pCurBox++;
- }
-
- if (pCurBox != pRegEnd)
- {
- /*
- * If more than one band was added, we have to find the start
- * of the last band added so the next coalescing job can start
- * at the right place... (given when multiple bands are added,
- * this may be pointless -- see above).
- */
- pRegEnd--;
- while (pRegEnd[-1].y1 == pRegEnd->y1)
- {
- pRegEnd--;
- }
- curStart = pRegEnd - pReg->rects;
- pRegEnd = pReg->rects + pReg->numRects;
- }
-
- if ((curNumRects == prevNumRects) && (curNumRects != 0)) {
- pCurBox -= curNumRects;
- /*
- * The bands may only be coalesced if the bottom of the previous
- * matches the top scanline of the current.
- */
- if (pPrevBox->y2 == pCurBox->y1)
- {
- /*
- * Make sure the bands have boxes in the same places. This
- * assumes that boxes have been added in such a way that they
- * cover the most area possible. I.e. two boxes in a band must
- * have some horizontal space between them.
- */
- do
- {
- if ((pPrevBox->x1 != pCurBox->x1) ||
- (pPrevBox->x2 != pCurBox->x2))
- {
- /*
- * The bands don't line up so they can't be coalesced.
- */
- return (curStart);
- }
- pPrevBox++;
- pCurBox++;
- prevNumRects -= 1;
- } while (prevNumRects != 0);
-
- pReg->numRects -= curNumRects;
- pCurBox -= curNumRects;
- pPrevBox -= curNumRects;
-
- /*
- * The bands may be merged, so set the bottom y of each box
- * in the previous band to that of the corresponding box in
- * the current band.
- */
- do
- {
- pPrevBox->y2 = pCurBox->y2;
- pPrevBox++;
- pCurBox++;
- curNumRects -= 1;
- } while (curNumRects != 0);
-
- /*
- * If only one band was added to the region, we have to backup
- * curStart to the start of the previous band.
- *
- * If more than one band was added to the region, copy the
- * other bands down. The assumption here is that the other bands
- * came from the same region as the current one and no further
- * coalescing can be done on them since it's all been done
- * already... curStart is already in the right place.
- */
- if (pCurBox == pRegEnd)
- {
- curStart = prevStart;
- }
- else
- {
- do
- {
- *pPrevBox++ = *pCurBox++;
- } while (pCurBox != pRegEnd);
- }
-
- }
- }
- return (curStart);
-}
-
-/*-
- *-----------------------------------------------------------------------
- * miRegionOp --
- * Apply an operation to two regions. Called by miUnion, miInverse,
- * miSubtract, miIntersect...
- *
- * Results:
- * None.
- *
- * Side Effects:
- * The new region is overwritten.
- *
- * Notes:
- * The idea behind this function is to view the two regions as sets.
- * Together they cover a rectangle of area that this function divides
- * into horizontal bands where points are covered only by one region
- * or by both. For the first case, the nonOverlapFunc is called with
- * each the band and the band's upper and lower extents. For the
- * second, the overlapFunc is called to process the entire band. It
- * is responsible for clipping the rectangles in the band, though
- * this function provides the boundaries.
- * At the end of each band, the new region is coalesced, if possible,
- * to reduce the number of rectangles in the region.
- *
- *-----------------------------------------------------------------------
- */
-/* static void*/
-static void
-miRegionOp(
- register Region newReg, /* Place to store result */
- Region reg1, /* First region in operation */
- Region reg2, /* 2d region in operation */
- int (*overlapFunc)(
- register Region pReg,
- register BoxPtr r1,
- BoxPtr r1End,
- register BoxPtr r2,
- BoxPtr r2End,
- short y1,
- short y2), /* Function to call for over-
- * lapping bands */
- int (*nonOverlap1Func)(
- register Region pReg,
- register BoxPtr r,
- BoxPtr rEnd,
- register short y1,
- register short y2), /* Function to call for non-
- * overlapping bands in region
- * 1 */
- int (*nonOverlap2Func)(
- register Region pReg,
- register BoxPtr r,
- BoxPtr rEnd,
- register short y1,
- register short y2)) /* Function to call for non-
- * overlapping bands in region
- * 2 */
-{
- register BoxPtr r1; /* Pointer into first region */
- register BoxPtr r2; /* Pointer into 2d region */
- BoxPtr r1End; /* End of 1st region */
- BoxPtr r2End; /* End of 2d region */
- register short ybot; /* Bottom of intersection */
- register short ytop; /* Top of intersection */
- BoxPtr oldRects; /* Old rects for newReg */
- int prevBand; /* Index of start of
- * previous band in newReg */
- int curBand; /* Index of start of current
- * band in newReg */
- register BoxPtr r1BandEnd; /* End of current band in r1 */
- register BoxPtr r2BandEnd; /* End of current band in r2 */
- short top; /* Top of non-overlapping
- * band */
- short bot; /* Bottom of non-overlapping
- * band */
-
- /*
- * Initialization:
- * set r1, r2, r1End and r2End appropriately, preserve the important
- * parts of the destination region until the end in case it's one of
- * the two source regions, then mark the "new" region empty, allocating
- * another array of rectangles for it to use.
- */
- r1 = reg1->rects;
- r2 = reg2->rects;
- r1End = r1 + reg1->numRects;
- r2End = r2 + reg2->numRects;
-
- oldRects = newReg->rects;
-
- EMPTY_REGION(newReg);
-
- /*
- * Allocate a reasonable number of rectangles for the new region. The idea
- * is to allocate enough so the individual functions don't need to
- * reallocate and copy the array, which is time consuming, yet we don't
- * have to worry about using too much memory. I hope to be able to
- * nuke the Xrealloc() at the end of this function eventually.
- */
- newReg->size = max(reg1->numRects,reg2->numRects) * 2;
-
- if (! (newReg->rects = (BoxPtr)
- Xmalloc ((unsigned) (sizeof(BoxRec) * newReg->size)))) {
- newReg->size = 0;
- return;
- }
-
- /*
- * Initialize ybot and ytop.
- * In the upcoming loop, ybot and ytop serve different functions depending
- * on whether the band being handled is an overlapping or non-overlapping
- * band.
- * In the case of a non-overlapping band (only one of the regions
- * has points in the band), ybot is the bottom of the most recent
- * intersection and thus clips the top of the rectangles in that band.
- * ytop is the top of the next intersection between the two regions and
- * serves to clip the bottom of the rectangles in the current band.
- * For an overlapping band (where the two regions intersect), ytop clips
- * the top of the rectangles of both regions and ybot clips the bottoms.
- */
- if (reg1->extents.y1 < reg2->extents.y1)
- ybot = reg1->extents.y1;
- else
- ybot = reg2->extents.y1;
-
- /*
- * prevBand serves to mark the start of the previous band so rectangles
- * can be coalesced into larger rectangles. qv. miCoalesce, above.
- * In the beginning, there is no previous band, so prevBand == curBand
- * (curBand is set later on, of course, but the first band will always
- * start at index 0). prevBand and curBand must be indices because of
- * the possible expansion, and resultant moving, of the new region's
- * array of rectangles.
- */
- prevBand = 0;
-
- do
- {
- curBand = newReg->numRects;
-
- /*
- * This algorithm proceeds one source-band (as opposed to a
- * destination band, which is determined by where the two regions
- * intersect) at a time. r1BandEnd and r2BandEnd serve to mark the
- * rectangle after the last one in the current band for their
- * respective regions.
- */
- r1BandEnd = r1;
- while ((r1BandEnd != r1End) && (r1BandEnd->y1 == r1->y1))
- {
- r1BandEnd++;
- }
-
- r2BandEnd = r2;
- while ((r2BandEnd != r2End) && (r2BandEnd->y1 == r2->y1))
- {
- r2BandEnd++;
- }
-
- /*
- * First handle the band that doesn't intersect, if any.
- *
- * Note that attention is restricted to one band in the
- * non-intersecting region at once, so if a region has n
- * bands between the current position and the next place it overlaps
- * the other, this entire loop will be passed through n times.
- */
- if (r1->y1 < r2->y1)
- {
- top = max(r1->y1,ybot);
- bot = min(r1->y2,r2->y1);
-
- if ((top != bot) && (nonOverlap1Func != NULL))
- {
- (* nonOverlap1Func) (newReg, r1, r1BandEnd, top, bot);
- }
-
- ytop = r2->y1;
- }
- else if (r2->y1 < r1->y1)
- {
- top = max(r2->y1,ybot);
- bot = min(r2->y2,r1->y1);
-
- if ((top != bot) && (nonOverlap2Func != NULL))
- {
- (* nonOverlap2Func) (newReg, r2, r2BandEnd, top, bot);
- }
-
- ytop = r1->y1;
- }
- else
- {
- ytop = r1->y1;
- }
-
- /*
- * If any rectangles got added to the region, try and coalesce them
- * with rectangles from the previous band. Note we could just do
- * this test in miCoalesce, but some machines incur a not
- * inconsiderable cost for function calls, so...
- */
- if (newReg->numRects != curBand)
- {
- prevBand = miCoalesce (newReg, prevBand, curBand);
- }
-
- /*
- * Now see if we've hit an intersecting band. The two bands only
- * intersect if ybot > ytop
- */
- ybot = min(r1->y2, r2->y2);
- curBand = newReg->numRects;
- if (ybot > ytop)
- {
- (* overlapFunc) (newReg, r1, r1BandEnd, r2, r2BandEnd, ytop, ybot);
-
- }
-
- if (newReg->numRects != curBand)
- {
- prevBand = miCoalesce (newReg, prevBand, curBand);
- }
-
- /*
- * If we've finished with a band (y2 == ybot) we skip forward
- * in the region to the next band.
- */
- if (r1->y2 == ybot)
- {
- r1 = r1BandEnd;
- }
- if (r2->y2 == ybot)
- {
- r2 = r2BandEnd;
- }
- } while ((r1 != r1End) && (r2 != r2End));
-
- /*
- * Deal with whichever region still has rectangles left.
- */
- curBand = newReg->numRects;
- if (r1 != r1End)
- {
- if (nonOverlap1Func != NULL)
- {
- do
- {
- r1BandEnd = r1;
- while ((r1BandEnd < r1End) && (r1BandEnd->y1 == r1->y1))
- {
- r1BandEnd++;
- }
- (* nonOverlap1Func) (newReg, r1, r1BandEnd,
- max(r1->y1,ybot), r1->y2);
- r1 = r1BandEnd;
- } while (r1 != r1End);
- }
- }
- else if ((r2 != r2End) && (nonOverlap2Func != NULL))
- {
- do
- {
- r2BandEnd = r2;
- while ((r2BandEnd < r2End) && (r2BandEnd->y1 == r2->y1))
- {
- r2BandEnd++;
- }
- (* nonOverlap2Func) (newReg, r2, r2BandEnd,
- max(r2->y1,ybot), r2->y2);
- r2 = r2BandEnd;
- } while (r2 != r2End);
- }
-
- if (newReg->numRects != curBand)
- {
- (void) miCoalesce (newReg, prevBand, curBand);
- }
-
- /*
- * A bit of cleanup. To keep regions from growing without bound,
- * we shrink the array of rectangles to match the new number of
- * rectangles in the region. This never goes to 0, however...
- *
- * Only do this stuff if the number of rectangles allocated is more than
- * twice the number of rectangles in the region (a simple optimization...).
- */
- if (newReg->numRects < (newReg->size >> 1))
- {
- if (REGION_NOT_EMPTY(newReg))
- {
- BoxPtr prev_rects = newReg->rects;
- newReg->size = newReg->numRects;
- newReg->rects = (BoxPtr) Xrealloc ((char *) newReg->rects,
- (unsigned) (sizeof(BoxRec) * newReg->size));
- if (! newReg->rects)
- newReg->rects = prev_rects;
- }
- else
- {
- /*
- * No point in doing the extra work involved in an Xrealloc if
- * the region is empty
- */
- newReg->size = 1;
- Xfree((char *) newReg->rects);
- newReg->rects = (BoxPtr) Xmalloc(sizeof(BoxRec));
- }
- }
- Xfree ((char *) oldRects);
- return;
-}
-
-
-/*======================================================================
- * Region Union
- *====================================================================*/
-
-/*-
- *-----------------------------------------------------------------------
- * miUnionNonO --
- * Handle a non-overlapping band for the union operation. Just
- * Adds the rectangles into the region. Doesn't have to check for
- * subsumption or anything.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * pReg->numRects is incremented and the final rectangles overwritten
- * with the rectangles we're passed.
- *
- *-----------------------------------------------------------------------
- */
-/* static void*/
-static int
-miUnionNonO (
- register Region pReg,
- register BoxPtr r,
- BoxPtr rEnd,
- register short y1,
- register short y2)
-{
- register BoxPtr pNextRect;
-
- pNextRect = &pReg->rects[pReg->numRects];
-
- assert(y1 < y2);
-
- while (r != rEnd)
- {
- assert(r->x1 < r->x2);
- MEMCHECK(pReg, pNextRect, pReg->rects);
- pNextRect->x1 = r->x1;
- pNextRect->y1 = y1;
- pNextRect->x2 = r->x2;
- pNextRect->y2 = y2;
- pReg->numRects += 1;
- pNextRect++;
-
- assert(pReg->numRects<=pReg->size);
- r++;
- }
- return 0; /* lint */
-}
-
-
-/*-
- *-----------------------------------------------------------------------
- * miUnionO --
- * Handle an overlapping band for the union operation. Picks the
- * left-most rectangle each time and merges it into the region.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * Rectangles are overwritten in pReg->rects and pReg->numRects will
- * be changed.
- *
- *-----------------------------------------------------------------------
- */
-
-/* static void*/
-static int
-miUnionO (
- register Region pReg,
- register BoxPtr r1,
- BoxPtr r1End,
- register BoxPtr r2,
- BoxPtr r2End,
- register short y1,
- register short y2)
-{
- register BoxPtr pNextRect;
-
- pNextRect = &pReg->rects[pReg->numRects];
-
-#define MERGERECT(r) \
- if ((pReg->numRects != 0) && \
- (pNextRect[-1].y1 == y1) && \
- (pNextRect[-1].y2 == y2) && \
- (pNextRect[-1].x2 >= r->x1)) \
- { \
- if (pNextRect[-1].x2 < r->x2) \
- { \
- pNextRect[-1].x2 = r->x2; \
- assert(pNextRect[-1].x1<pNextRect[-1].x2); \
- } \
- } \
- else \
- { \
- MEMCHECK(pReg, pNextRect, pReg->rects); \
- pNextRect->y1 = y1; \
- pNextRect->y2 = y2; \
- pNextRect->x1 = r->x1; \
- pNextRect->x2 = r->x2; \
- pReg->numRects += 1; \
- pNextRect += 1; \
- } \
- assert(pReg->numRects<=pReg->size);\
- r++;
-
- assert (y1<y2);
- while ((r1 != r1End) && (r2 != r2End))
- {
- if (r1->x1 < r2->x1)
- {
- MERGERECT(r1);
- }
- else
- {
- MERGERECT(r2);
- }
- }
-
- if (r1 != r1End)
- {
- do
- {
- MERGERECT(r1);
- } while (r1 != r1End);
- }
- else while (r2 != r2End)
- {
- MERGERECT(r2);
- }
- return 0; /* lint */
-}
-
-int
-XUnionRegion(
- Region reg1,
- Region reg2, /* source regions */
- Region newReg) /* destination Region */
-{
- /* checks all the simple cases */
-
- /*
- * Region 1 and 2 are the same or region 1 is empty
- */
- if ( (reg1 == reg2) || (!(reg1->numRects)) )
- {
- if (newReg != reg2)
- miRegionCopy(newReg, reg2);
- return 1;
- }
-
- /*
- * if nothing to union (region 2 empty)
- */
- if (!(reg2->numRects))
- {
- if (newReg != reg1)
- miRegionCopy(newReg, reg1);
- return 1;
- }
-
- /*
- * Region 1 completely subsumes region 2
- */
- if ((reg1->numRects == 1) &&
- (reg1->extents.x1 <= reg2->extents.x1) &&
- (reg1->extents.y1 <= reg2->extents.y1) &&
- (reg1->extents.x2 >= reg2->extents.x2) &&
- (reg1->extents.y2 >= reg2->extents.y2))
- {
- if (newReg != reg1)
- miRegionCopy(newReg, reg1);
- return 1;
- }
-
- /*
- * Region 2 completely subsumes region 1
- */
- if ((reg2->numRects == 1) &&
- (reg2->extents.x1 <= reg1->extents.x1) &&
- (reg2->extents.y1 <= reg1->extents.y1) &&
- (reg2->extents.x2 >= reg1->extents.x2) &&
- (reg2->extents.y2 >= reg1->extents.y2))
- {
- if (newReg != reg2)
- miRegionCopy(newReg, reg2);
- return 1;
- }
-
- miRegionOp (newReg, reg1, reg2, miUnionO,
- miUnionNonO, miUnionNonO);
-
- newReg->extents.x1 = min(reg1->extents.x1, reg2->extents.x1);
- newReg->extents.y1 = min(reg1->extents.y1, reg2->extents.y1);
- newReg->extents.x2 = max(reg1->extents.x2, reg2->extents.x2);
- newReg->extents.y2 = max(reg1->extents.y2, reg2->extents.y2);
-
- return 1;
-}
-
-
-/*======================================================================
- * Region Subtraction
- *====================================================================*/
-
-/*-
- *-----------------------------------------------------------------------
- * miSubtractNonO --
- * Deal with non-overlapping band for subtraction. Any parts from
- * region 2 we discard. Anything from region 1 we add to the region.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * pReg may be affected.
- *
- *-----------------------------------------------------------------------
- */
-/* static void*/
-static int
-miSubtractNonO1 (
- register Region pReg,
- register BoxPtr r,
- BoxPtr rEnd,
- register short y1,
- register short y2)
-{
- register BoxPtr pNextRect;
-
- pNextRect = &pReg->rects[pReg->numRects];
-
- assert(y1<y2);
-
- while (r != rEnd)
- {
- assert(r->x1<r->x2);
- MEMCHECK(pReg, pNextRect, pReg->rects);
- pNextRect->x1 = r->x1;
- pNextRect->y1 = y1;
- pNextRect->x2 = r->x2;
- pNextRect->y2 = y2;
- pReg->numRects += 1;
- pNextRect++;
-
- assert(pReg->numRects <= pReg->size);
-
- r++;
- }
- return 0; /* lint */
-}
-
-/*-
- *-----------------------------------------------------------------------
- * miSubtractO --
- * Overlapping band subtraction. x1 is the left-most point not yet
- * checked.
- *
- * Results:
- * None.
- *
- * Side Effects:
- * pReg may have rectangles added to it.
- *
- *-----------------------------------------------------------------------
- */
-/* static void*/
-static int
-miSubtractO (
- register Region pReg,
- register BoxPtr r1,
- BoxPtr r1End,
- register BoxPtr r2,
- BoxPtr r2End,
- register short y1,
- register short y2)
-{
- register BoxPtr pNextRect;
- register int x1;
-
- x1 = r1->x1;
-
- assert(y1<y2);
- pNextRect = &pReg->rects[pReg->numRects];
-
- while ((r1 != r1End) && (r2 != r2End))
- {
- if (r2->x2 <= x1)
- {
- /*
- * Subtrahend missed the boat: go to next subtrahend.
- */
- r2++;
- }
- else if (r2->x1 <= x1)
- {
- /*
- * Subtrahend preceeds minuend: nuke left edge of minuend.
- */
- x1 = r2->x2;
- if (x1 >= r1->x2)
- {
- /*
- * Minuend completely covered: advance to next minuend and
- * reset left fence to edge of new minuend.
- */
- r1++;
- if (r1 != r1End)
- x1 = r1->x1;
- }
- else
- {
- /*
- * Subtrahend now used up since it doesn't extend beyond
- * minuend
- */
- r2++;
- }
- }
- else if (r2->x1 < r1->x2)
- {
- /*
- * Left part of subtrahend covers part of minuend: add uncovered
- * part of minuend to region and skip to next subtrahend.
- */
- assert(x1<r2->x1);
- MEMCHECK(pReg, pNextRect, pReg->rects);
- pNextRect->x1 = x1;
- pNextRect->y1 = y1;
- pNextRect->x2 = r2->x1;
- pNextRect->y2 = y2;
- pReg->numRects += 1;
- pNextRect++;
-
- assert(pReg->numRects<=pReg->size);
-
- x1 = r2->x2;
- if (x1 >= r1->x2)
- {
- /*
- * Minuend used up: advance to new...
- */
- r1++;
- if (r1 != r1End)
- x1 = r1->x1;
- }
- else
- {
- /*
- * Subtrahend used up
- */
- r2++;
- }
- }
- else
- {
- /*
- * Minuend used up: add any remaining piece before advancing.
- */
- if (r1->x2 > x1)
- {
- MEMCHECK(pReg, pNextRect, pReg->rects);
- pNextRect->x1 = x1;
- pNextRect->y1 = y1;
- pNextRect->x2 = r1->x2;
- pNextRect->y2 = y2;
- pReg->numRects += 1;
- pNextRect++;
- assert(pReg->numRects<=pReg->size);
- }
- r1++;
- if (r1 != r1End)
- x1 = r1->x1;
- }
- }
-
- /*
- * Add remaining minuend rectangles to region.
- */
- while (r1 != r1End)
- {
- assert(x1<r1->x2);
- MEMCHECK(pReg, pNextRect, pReg->rects);
- pNextRect->x1 = x1;
- pNextRect->y1 = y1;
- pNextRect->x2 = r1->x2;
- pNextRect->y2 = y2;
- pReg->numRects += 1;
- pNextRect++;
-
- assert(pReg->numRects<=pReg->size);
-
- r1++;
- if (r1 != r1End)
- {
- x1 = r1->x1;
- }
- }
- return 0; /* lint */
-}
-
-/*-
- *-----------------------------------------------------------------------
- * miSubtract --
- * Subtract regS from regM and leave the result in regD.
- * S stands for subtrahend, M for minuend and D for difference.
- *
- * Results:
- * TRUE.
- *
- * Side Effects:
- * regD is overwritten.
- *
- *-----------------------------------------------------------------------
- */
-
-int
-XSubtractRegion(
- Region regM,
- Region regS,
- register Region regD)
-{
- /* check for trivial reject */
- if ( (!(regM->numRects)) || (!(regS->numRects)) ||
- (!EXTENTCHECK(&regM->extents, &regS->extents)) )
- {
- miRegionCopy(regD, regM);
- return 1;
- }
-
- miRegionOp (regD, regM, regS, miSubtractO,
- miSubtractNonO1, NULL);
-
- /*
- * Can't alter newReg's extents before we call miRegionOp because
- * it might be one of the source regions and miRegionOp depends
- * on the extents of those regions being the unaltered. Besides, this
- * way there's no checking against rectangles that will be nuked
- * due to coalescing, so we have to examine fewer rectangles.
- */
- miSetExtents (regD);
- return 1;
-}
-
-int
-XXorRegion(Region sra, Region srb, Region dr)
-{
- Region tra, trb;
-
- if (! (tra = XCreateRegion()) )
- return 0;
- if (! (trb = XCreateRegion()) ) {
- XDestroyRegion(tra);
- return 0;
- }
- (void) XSubtractRegion(sra,srb,tra);
- (void) XSubtractRegion(srb,sra,trb);
- (void) XUnionRegion(tra,trb,dr);
- XDestroyRegion(tra);
- XDestroyRegion(trb);
- return 0;
-}
-
-/*
- * Check to see if the region is empty. Assumes a region is passed
- * as a parameter
- */
-int
-XEmptyRegion(
- Region r)
-{
- if( r->numRects == 0 ) return TRUE;
- else return FALSE;
-}
-
-/*
- * Check to see if two regions are equal
- */
-int
-XEqualRegion(Region r1, Region r2)
-{
- int i;
-
- if( r1->numRects != r2->numRects ) return FALSE;
- else if( r1->numRects == 0 ) return TRUE;
- else if ( r1->extents.x1 != r2->extents.x1 ) return FALSE;
- else if ( r1->extents.x2 != r2->extents.x2 ) return FALSE;
- else if ( r1->extents.y1 != r2->extents.y1 ) return FALSE;
- else if ( r1->extents.y2 != r2->extents.y2 ) return FALSE;
- else for( i=0; i < r1->numRects; i++ ) {
- if ( r1->rects[i].x1 != r2->rects[i].x1 ) return FALSE;
- else if ( r1->rects[i].x2 != r2->rects[i].x2 ) return FALSE;
- else if ( r1->rects[i].y1 != r2->rects[i].y1 ) return FALSE;
- else if ( r1->rects[i].y2 != r2->rects[i].y2 ) return FALSE;
- }
- return TRUE;
-}
-
-int
-XPointInRegion(
- Region pRegion,
- int x, int y)
-{
- int i;
-
- if (pRegion->numRects == 0)
- return FALSE;
- if (!INBOX(pRegion->extents, x, y))
- return FALSE;
- for (i=0; i<pRegion->numRects; i++)
- {
- if (INBOX (pRegion->rects[i], x, y))
- return TRUE;
- }
- return FALSE;
-}
-
-int
-XRectInRegion(
- register Region region,
- int rx, int ry,
- unsigned int rwidth, unsigned int rheight)
-{
- register BoxPtr pbox;
- register BoxPtr pboxEnd;
- Box rect;
- register BoxPtr prect = &rect;
- int partIn, partOut;
-
- prect->x1 = rx;
- prect->y1 = ry;
- prect->x2 = rwidth + rx;
- prect->y2 = rheight + ry;
-
- /* this is (just) a useful optimization */
- if ((region->numRects == 0) || !EXTENTCHECK(&region->extents, prect))
- return(RectangleOut);
-
- partOut = FALSE;
- partIn = FALSE;
-
- /* can stop when both partOut and partIn are TRUE, or we reach prect->y2 */
- for (pbox = region->rects, pboxEnd = pbox + region->numRects;
- pbox < pboxEnd;
- pbox++)
- {
-
- if (pbox->y2 <= ry)
- continue; /* getting up to speed or skipping remainder of band */
-
- if (pbox->y1 > ry)
- {
- partOut = TRUE; /* missed part of rectangle above */
- if (partIn || (pbox->y1 >= prect->y2))
- break;
- ry = pbox->y1; /* x guaranteed to be == prect->x1 */
- }
-
- if (pbox->x2 <= rx)
- continue; /* not far enough over yet */
-
- if (pbox->x1 > rx)
- {
- partOut = TRUE; /* missed part of rectangle to left */
- if (partIn)
- break;
- }
-
- if (pbox->x1 < prect->x2)
- {
- partIn = TRUE; /* definitely overlap */
- if (partOut)
- break;
- }
-
- if (pbox->x2 >= prect->x2)
- {
- ry = pbox->y2; /* finished with this band */
- if (ry >= prect->y2)
- break;
- rx = prect->x1; /* reset x out to left again */
- } else
- {
- /*
- * Because boxes in a band are maximal width, if the first box
- * to overlap the rectangle doesn't completely cover it in that
- * band, the rectangle must be partially out, since some of it
- * will be uncovered in that band. partIn will have been set true
- * by now...
- */
- break;
- }
-
- }
-
- return(partIn ? ((ry < prect->y2) ? RectanglePart : RectangleIn) :
- RectangleOut);
-}
+/************************************************************************
+
+Copyright 1987, 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987, 1988 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+************************************************************************/
+/*
+ * The functions in this file implement the Region abstraction, similar to one
+ * used in the X11 sample server. A Region is simply an area, as the name
+ * implies, and is implemented as a "y-x-banded" array of rectangles. To
+ * explain: Each Region is made up of a certain number of rectangles sorted
+ * by y coordinate first, and then by x coordinate.
+ *
+ * Furthermore, the rectangles are banded such that every rectangle with a
+ * given upper-left y coordinate (y1) will have the same lower-right y
+ * coordinate (y2) and vice versa. If a rectangle has scanlines in a band, it
+ * will span the entire vertical distance of the band. This means that some
+ * areas that could be merged into a taller rectangle will be represented as
+ * several shorter rectangles to account for shorter rectangles to its left
+ * or right but within its "vertical scope".
+ *
+ * An added constraint on the rectangles is that they must cover as much
+ * horizontal area as possible. E.g. no two rectangles in a band are allowed
+ * to touch.
+ *
+ * Whenever possible, bands will be merged together to cover a greater vertical
+ * distance (and thus reduce the number of rectangles). Two bands can be merged
+ * only if the bottom of one touches the top of the other and they have
+ * rectangles in the same places (of the same width, of course). This maintains
+ * the y-x-banding that's so nice to have...
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+#include <X11/Xregion.h>
+#include "poly.h"
+
+#ifdef DEBUG
+#include <stdio.h>
+#define assert(expr) {if (!(expr)) fprintf(stderr,\
+"Assertion failed file %s, line %d: expr\n", __FILE__, __LINE__); }
+#else
+#define assert(expr)
+#endif
+
+typedef int (*overlapProcp)(
+ register Region pReg,
+ register BoxPtr r1,
+ BoxPtr r1End,
+ register BoxPtr r2,
+ BoxPtr r2End,
+ short y1,
+ short y2);
+
+typedef int (*nonOverlapProcp)(
+ register Region pReg,
+ register BoxPtr r,
+ BoxPtr rEnd,
+ register short y1,
+ register short y2);
+
+static void miRegionOp(
+ register Region newReg, /* Place to store result */
+ Region reg1, /* First region in operation */
+ Region reg2, /* 2d region in operation */
+ int (*overlapFunc)(
+ register Region pReg,
+ register BoxPtr r1,
+ BoxPtr r1End,
+ register BoxPtr r2,
+ BoxPtr r2End,
+ short y1,
+ short y2), /* Function to call for over-
+ * lapping bands */
+ int (*nonOverlap1Func)(
+ register Region pReg,
+ register BoxPtr r,
+ BoxPtr rEnd,
+ register short y1,
+ register short y2), /* Function to call for non-
+ * overlapping bands in region
+ * 1 */
+ int (*nonOverlap2Func)(
+ register Region pReg,
+ register BoxPtr r,
+ BoxPtr rEnd,
+ register short y1,
+ register short y2)); /* Function to call for non-
+ * overlapping bands in region
+ * 2 */
+
+
+/* Create a new empty region */
+Region
+XCreateRegion(void)
+{
+ Region temp;
+
+ if (! (temp = ( Region )Xmalloc( (unsigned) sizeof( REGION ))))
+ return (Region) NULL;
+ if (! (temp->rects = ( BOX * )Xmalloc( (unsigned) sizeof( BOX )))) {
+ Xfree((char *) temp);
+ return (Region) NULL;
+ }
+ temp->numRects = 0;
+ temp->extents.x1 = 0;
+ temp->extents.y1 = 0;
+ temp->extents.x2 = 0;
+ temp->extents.y2 = 0;
+ temp->size = 1;
+ return( temp );
+}
+
+int
+XClipBox(
+ Region r,
+ XRectangle *rect)
+{
+ rect->x = r->extents.x1;
+ rect->y = r->extents.y1;
+ rect->width = r->extents.x2 - r->extents.x1;
+ rect->height = r->extents.y2 - r->extents.y1;
+ return 1;
+}
+
+int
+XUnionRectWithRegion(
+ register XRectangle *rect,
+ Region source, Region dest)
+{
+ REGION region;
+
+ if (!rect->width || !rect->height)
+ return 0;
+ region.rects = &region.extents;
+ region.numRects = 1;
+ region.extents.x1 = rect->x;
+ region.extents.y1 = rect->y;
+ region.extents.x2 = rect->x + rect->width;
+ region.extents.y2 = rect->y + rect->height;
+ region.size = 1;
+
+ return XUnionRegion(&region, source, dest);
+}
+
+/*-
+ *-----------------------------------------------------------------------
+ * miSetExtents --
+ * Reset the extents of a region to what they should be. Called by
+ * miSubtract and miIntersect b/c they can't figure it out along the
+ * way or do so easily, as miUnion can.
+ *
+ * Results:
+ * None.
+ *
+ * Side Effects:
+ * The region's 'extents' structure is overwritten.
+ *
+ *-----------------------------------------------------------------------
+ */
+static void
+miSetExtents (
+ Region pReg)
+{
+ register BoxPtr pBox,
+ pBoxEnd,
+ pExtents;
+
+ if (pReg->numRects == 0)
+ {
+ pReg->extents.x1 = 0;
+ pReg->extents.y1 = 0;
+ pReg->extents.x2 = 0;
+ pReg->extents.y2 = 0;
+ return;
+ }
+
+ pExtents = &pReg->extents;
+ pBox = pReg->rects;
+ pBoxEnd = &pBox[pReg->numRects - 1];
+
+ /*
+ * Since pBox is the first rectangle in the region, it must have the
+ * smallest y1 and since pBoxEnd is the last rectangle in the region,
+ * it must have the largest y2, because of banding. Initialize x1 and
+ * x2 from pBox and pBoxEnd, resp., as good things to initialize them
+ * to...
+ */
+ pExtents->x1 = pBox->x1;
+ pExtents->y1 = pBox->y1;
+ pExtents->x2 = pBoxEnd->x2;
+ pExtents->y2 = pBoxEnd->y2;
+
+ assert(pExtents->y1 < pExtents->y2);
+ while (pBox <= pBoxEnd)
+ {
+ if (pBox->x1 < pExtents->x1)
+ {
+ pExtents->x1 = pBox->x1;
+ }
+ if (pBox->x2 > pExtents->x2)
+ {
+ pExtents->x2 = pBox->x2;
+ }
+ pBox++;
+ }
+ assert(pExtents->x1 < pExtents->x2);
+}
+
+int
+XSetRegion(
+ Display *dpy,
+ GC gc,
+ register Region r)
+{
+ register int i;
+ register XRectangle *xr, *pr;
+ register BOX *pb;
+ unsigned long total;
+
+ LockDisplay (dpy);
+ total = r->numRects * sizeof (XRectangle);
+ if ((xr = (XRectangle *) _XAllocTemp(dpy, total))) {
+ for (pr = xr, pb = r->rects, i = r->numRects; --i >= 0; pr++, pb++) {
+ pr->x = pb->x1;
+ pr->y = pb->y1;
+ pr->width = pb->x2 - pb->x1;
+ pr->height = pb->y2 - pb->y1;
+ }
+ }
+ if (xr || !r->numRects)
+ _XSetClipRectangles(dpy, gc, 0, 0, xr, r->numRects, YXBanded);
+ if (xr)
+ _XFreeTemp(dpy, (char *)xr, total);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XDestroyRegion(
+ Region r)
+{
+ Xfree( (char *) r->rects );
+ Xfree( (char *) r );
+ return 1;
+}
+
+
+/* TranslateRegion(pRegion, x, y)
+ translates in place
+ added by raymond
+*/
+
+int
+XOffsetRegion(
+ register Region pRegion,
+ register int x,
+ register int y)
+{
+ register int nbox;
+ register BOX *pbox;
+
+ pbox = pRegion->rects;
+ nbox = pRegion->numRects;
+
+ while(nbox--)
+ {
+ pbox->x1 += x;
+ pbox->x2 += x;
+ pbox->y1 += y;
+ pbox->y2 += y;
+ pbox++;
+ }
+ pRegion->extents.x1 += x;
+ pRegion->extents.x2 += x;
+ pRegion->extents.y1 += y;
+ pRegion->extents.y2 += y;
+ return 1;
+}
+
+/*
+ Utility procedure Compress:
+ Replace r by the region r', where
+ p in r' iff (Quantifer m <= dx) (p + m in r), and
+ Quantifier is Exists if grow is TRUE, For all if grow is FALSE, and
+ (x,y) + m = (x+m,y) if xdir is TRUE; (x,y+m) if xdir is FALSE.
+
+ Thus, if xdir is TRUE and grow is FALSE, r is replaced by the region
+ of all points p such that p and the next dx points on the same
+ horizontal scan line are all in r. We do this using by noting
+ that p is the head of a run of length 2^i + k iff p is the head
+ of a run of length 2^i and p+2^i is the head of a run of length
+ k. Thus, the loop invariant: s contains the region corresponding
+ to the runs of length shift. r contains the region corresponding
+ to the runs of length 1 + dxo & (shift-1), where dxo is the original
+ value of dx. dx = dxo & ~(shift-1). As parameters, s and t are
+ scratch regions, so that we don't have to allocate them on every
+ call.
+*/
+
+#define ZOpRegion(a,b,c) if (grow) XUnionRegion(a,b,c); \
+ else XIntersectRegion(a,b,c)
+#define ZShiftRegion(a,b) if (xdir) XOffsetRegion(a,b,0); \
+ else XOffsetRegion(a,0,b)
+#define ZCopyRegion(a,b) XUnionRegion(a,a,b)
+
+static void
+Compress(
+ Region r, Region s, Region t,
+ register unsigned dx,
+ register int xdir, register int grow)
+{
+ register unsigned shift = 1;
+
+ ZCopyRegion(r, s);
+ while (dx) {
+ if (dx & shift) {
+ ZShiftRegion(r, -(int)shift);
+ ZOpRegion(r, s, r);
+ dx -= shift;
+ if (!dx) break;
+ }
+ ZCopyRegion(s, t);
+ ZShiftRegion(s, -(int)shift);
+ ZOpRegion(s, t, s);
+ shift <<= 1;
+ }
+}
+
+#undef ZOpRegion
+#undef ZShiftRegion
+#undef ZCopyRegion
+
+int
+XShrinkRegion(
+ Region r,
+ int dx, int dy)
+{
+ Region s, t;
+ int grow;
+
+ if (!dx && !dy) return 0;
+ if (! (s = XCreateRegion()) )
+ return 0;
+ if (! (t = XCreateRegion()) ) {
+ XDestroyRegion(s);
+ return 0;
+ }
+ if ((grow = (dx < 0))) dx = -dx;
+ if (dx) Compress(r, s, t, (unsigned) 2*dx, TRUE, grow);
+ if ((grow = (dy < 0))) dy = -dy;
+ if (dy) Compress(r, s, t, (unsigned) 2*dy, FALSE, grow);
+ XOffsetRegion(r, dx, dy);
+ XDestroyRegion(s);
+ XDestroyRegion(t);
+ return 0;
+}
+
+
+/*======================================================================
+ * Region Intersection
+ *====================================================================*/
+/*-
+ *-----------------------------------------------------------------------
+ * miIntersectO --
+ * Handle an overlapping band for miIntersect.
+ *
+ * Results:
+ * None.
+ *
+ * Side Effects:
+ * Rectangles may be added to the region.
+ *
+ *-----------------------------------------------------------------------
+ */
+/* static void*/
+static int
+miIntersectO (
+ register Region pReg,
+ register BoxPtr r1,
+ BoxPtr r1End,
+ register BoxPtr r2,
+ BoxPtr r2End,
+ short y1,
+ short y2)
+{
+ register short x1;
+ register short x2;
+ register BoxPtr pNextRect;
+
+ pNextRect = &pReg->rects[pReg->numRects];
+
+ while ((r1 != r1End) && (r2 != r2End))
+ {
+ x1 = max(r1->x1,r2->x1);
+ x2 = min(r1->x2,r2->x2);
+
+ /*
+ * If there's any overlap between the two rectangles, add that
+ * overlap to the new region.
+ * There's no need to check for subsumption because the only way
+ * such a need could arise is if some region has two rectangles
+ * right next to each other. Since that should never happen...
+ */
+ if (x1 < x2)
+ {
+ assert(y1<y2);
+
+ MEMCHECK(pReg, pNextRect, pReg->rects);
+ pNextRect->x1 = x1;
+ pNextRect->y1 = y1;
+ pNextRect->x2 = x2;
+ pNextRect->y2 = y2;
+ pReg->numRects += 1;
+ pNextRect++;
+ assert(pReg->numRects <= pReg->size);
+ }
+
+ /*
+ * Need to advance the pointers. Shift the one that extends
+ * to the right the least, since the other still has a chance to
+ * overlap with that region's next rectangle, if you see what I mean.
+ */
+ if (r1->x2 < r2->x2)
+ {
+ r1++;
+ }
+ else if (r2->x2 < r1->x2)
+ {
+ r2++;
+ }
+ else
+ {
+ r1++;
+ r2++;
+ }
+ }
+ return 0; /* lint */
+}
+
+int
+XIntersectRegion(
+ Region reg1,
+ Region reg2, /* source regions */
+ register Region newReg) /* destination Region */
+{
+ /* check for trivial reject */
+ if ( (!(reg1->numRects)) || (!(reg2->numRects)) ||
+ (!EXTENTCHECK(&reg1->extents, &reg2->extents)))
+ newReg->numRects = 0;
+ else
+ miRegionOp (newReg, reg1, reg2,
+ miIntersectO, NULL, NULL);
+
+ /*
+ * Can't alter newReg's extents before we call miRegionOp because
+ * it might be one of the source regions and miRegionOp depends
+ * on the extents of those regions being the same. Besides, this
+ * way there's no checking against rectangles that will be nuked
+ * due to coalescing, so we have to examine fewer rectangles.
+ */
+ miSetExtents(newReg);
+ return 1;
+}
+
+static void
+miRegionCopy(
+ register Region dstrgn,
+ register Region rgn)
+
+{
+ if (dstrgn != rgn) /* don't want to copy to itself */
+ {
+ if (dstrgn->size < rgn->numRects)
+ {
+ if (dstrgn->rects)
+ {
+ BOX *prevRects = dstrgn->rects;
+
+ if (! (dstrgn->rects = (BOX *)
+ Xrealloc((char *) dstrgn->rects,
+ (unsigned) rgn->numRects * (sizeof(BOX))))) {
+ Xfree(prevRects);
+ return;
+ }
+ }
+ dstrgn->size = rgn->numRects;
+ }
+ dstrgn->numRects = rgn->numRects;
+ dstrgn->extents.x1 = rgn->extents.x1;
+ dstrgn->extents.y1 = rgn->extents.y1;
+ dstrgn->extents.x2 = rgn->extents.x2;
+ dstrgn->extents.y2 = rgn->extents.y2;
+
+ memcpy((char *) dstrgn->rects, (char *) rgn->rects,
+ (int) (rgn->numRects * sizeof(BOX)));
+ }
+}
+
+/*======================================================================
+ * Generic Region Operator
+ *====================================================================*/
+
+/*-
+ *-----------------------------------------------------------------------
+ * miCoalesce --
+ * Attempt to merge the boxes in the current band with those in the
+ * previous one. Used only by miRegionOp.
+ *
+ * Results:
+ * The new index for the previous band.
+ *
+ * Side Effects:
+ * If coalescing takes place:
+ * - rectangles in the previous band will have their y2 fields
+ * altered.
+ * - pReg->numRects will be decreased.
+ *
+ *-----------------------------------------------------------------------
+ */
+/* static int*/
+static int
+miCoalesce(
+ register Region pReg, /* Region to coalesce */
+ int prevStart, /* Index of start of previous band */
+ int curStart) /* Index of start of current band */
+{
+ register BoxPtr pPrevBox; /* Current box in previous band */
+ register BoxPtr pCurBox; /* Current box in current band */
+ register BoxPtr pRegEnd; /* End of region */
+ int curNumRects; /* Number of rectangles in current
+ * band */
+ int prevNumRects; /* Number of rectangles in previous
+ * band */
+ int bandY1; /* Y1 coordinate for current band */
+
+ pRegEnd = &pReg->rects[pReg->numRects];
+
+ pPrevBox = &pReg->rects[prevStart];
+ prevNumRects = curStart - prevStart;
+
+ /*
+ * Figure out how many rectangles are in the current band. Have to do
+ * this because multiple bands could have been added in miRegionOp
+ * at the end when one region has been exhausted.
+ */
+ pCurBox = &pReg->rects[curStart];
+ bandY1 = pCurBox->y1;
+ for (curNumRects = 0;
+ (pCurBox != pRegEnd) && (pCurBox->y1 == bandY1);
+ curNumRects++)
+ {
+ pCurBox++;
+ }
+
+ if (pCurBox != pRegEnd)
+ {
+ /*
+ * If more than one band was added, we have to find the start
+ * of the last band added so the next coalescing job can start
+ * at the right place... (given when multiple bands are added,
+ * this may be pointless -- see above).
+ */
+ pRegEnd--;
+ while (pRegEnd[-1].y1 == pRegEnd->y1)
+ {
+ pRegEnd--;
+ }
+ curStart = pRegEnd - pReg->rects;
+ pRegEnd = pReg->rects + pReg->numRects;
+ }
+
+ if ((curNumRects == prevNumRects) && (curNumRects != 0)) {
+ pCurBox -= curNumRects;
+ /*
+ * The bands may only be coalesced if the bottom of the previous
+ * matches the top scanline of the current.
+ */
+ if (pPrevBox->y2 == pCurBox->y1)
+ {
+ /*
+ * Make sure the bands have boxes in the same places. This
+ * assumes that boxes have been added in such a way that they
+ * cover the most area possible. I.e. two boxes in a band must
+ * have some horizontal space between them.
+ */
+ do
+ {
+ if ((pPrevBox->x1 != pCurBox->x1) ||
+ (pPrevBox->x2 != pCurBox->x2))
+ {
+ /*
+ * The bands don't line up so they can't be coalesced.
+ */
+ return (curStart);
+ }
+ pPrevBox++;
+ pCurBox++;
+ prevNumRects -= 1;
+ } while (prevNumRects != 0);
+
+ pReg->numRects -= curNumRects;
+ pCurBox -= curNumRects;
+ pPrevBox -= curNumRects;
+
+ /*
+ * The bands may be merged, so set the bottom y of each box
+ * in the previous band to that of the corresponding box in
+ * the current band.
+ */
+ do
+ {
+ pPrevBox->y2 = pCurBox->y2;
+ pPrevBox++;
+ pCurBox++;
+ curNumRects -= 1;
+ } while (curNumRects != 0);
+
+ /*
+ * If only one band was added to the region, we have to backup
+ * curStart to the start of the previous band.
+ *
+ * If more than one band was added to the region, copy the
+ * other bands down. The assumption here is that the other bands
+ * came from the same region as the current one and no further
+ * coalescing can be done on them since it's all been done
+ * already... curStart is already in the right place.
+ */
+ if (pCurBox == pRegEnd)
+ {
+ curStart = prevStart;
+ }
+ else
+ {
+ do
+ {
+ *pPrevBox++ = *pCurBox++;
+ } while (pCurBox != pRegEnd);
+ }
+
+ }
+ }
+ return (curStart);
+}
+
+/*-
+ *-----------------------------------------------------------------------
+ * miRegionOp --
+ * Apply an operation to two regions. Called by miUnion, miInverse,
+ * miSubtract, miIntersect...
+ *
+ * Results:
+ * None.
+ *
+ * Side Effects:
+ * The new region is overwritten.
+ *
+ * Notes:
+ * The idea behind this function is to view the two regions as sets.
+ * Together they cover a rectangle of area that this function divides
+ * into horizontal bands where points are covered only by one region
+ * or by both. For the first case, the nonOverlapFunc is called with
+ * each the band and the band's upper and lower extents. For the
+ * second, the overlapFunc is called to process the entire band. It
+ * is responsible for clipping the rectangles in the band, though
+ * this function provides the boundaries.
+ * At the end of each band, the new region is coalesced, if possible,
+ * to reduce the number of rectangles in the region.
+ *
+ *-----------------------------------------------------------------------
+ */
+/* static void*/
+static void
+miRegionOp(
+ register Region newReg, /* Place to store result */
+ Region reg1, /* First region in operation */
+ Region reg2, /* 2d region in operation */
+ int (*overlapFunc)(
+ register Region pReg,
+ register BoxPtr r1,
+ BoxPtr r1End,
+ register BoxPtr r2,
+ BoxPtr r2End,
+ short y1,
+ short y2), /* Function to call for over-
+ * lapping bands */
+ int (*nonOverlap1Func)(
+ register Region pReg,
+ register BoxPtr r,
+ BoxPtr rEnd,
+ register short y1,
+ register short y2), /* Function to call for non-
+ * overlapping bands in region
+ * 1 */
+ int (*nonOverlap2Func)(
+ register Region pReg,
+ register BoxPtr r,
+ BoxPtr rEnd,
+ register short y1,
+ register short y2)) /* Function to call for non-
+ * overlapping bands in region
+ * 2 */
+{
+ register BoxPtr r1; /* Pointer into first region */
+ register BoxPtr r2; /* Pointer into 2d region */
+ BoxPtr r1End; /* End of 1st region */
+ BoxPtr r2End; /* End of 2d region */
+ register short ybot; /* Bottom of intersection */
+ register short ytop; /* Top of intersection */
+ BoxPtr oldRects; /* Old rects for newReg */
+ int prevBand; /* Index of start of
+ * previous band in newReg */
+ int curBand; /* Index of start of current
+ * band in newReg */
+ register BoxPtr r1BandEnd; /* End of current band in r1 */
+ register BoxPtr r2BandEnd; /* End of current band in r2 */
+ short top; /* Top of non-overlapping
+ * band */
+ short bot; /* Bottom of non-overlapping
+ * band */
+
+ /*
+ * Initialization:
+ * set r1, r2, r1End and r2End appropriately, preserve the important
+ * parts of the destination region until the end in case it's one of
+ * the two source regions, then mark the "new" region empty, allocating
+ * another array of rectangles for it to use.
+ */
+ r1 = reg1->rects;
+ r2 = reg2->rects;
+ r1End = r1 + reg1->numRects;
+ r2End = r2 + reg2->numRects;
+
+ oldRects = newReg->rects;
+
+ EMPTY_REGION(newReg);
+
+ /*
+ * Allocate a reasonable number of rectangles for the new region. The idea
+ * is to allocate enough so the individual functions don't need to
+ * reallocate and copy the array, which is time consuming, yet we don't
+ * have to worry about using too much memory. I hope to be able to
+ * nuke the Xrealloc() at the end of this function eventually.
+ */
+ newReg->size = max(reg1->numRects,reg2->numRects) * 2;
+
+ if (! (newReg->rects = (BoxPtr)
+ Xmalloc ((unsigned) (sizeof(BoxRec) * newReg->size)))) {
+ newReg->size = 0;
+ return;
+ }
+
+ /*
+ * Initialize ybot and ytop.
+ * In the upcoming loop, ybot and ytop serve different functions depending
+ * on whether the band being handled is an overlapping or non-overlapping
+ * band.
+ * In the case of a non-overlapping band (only one of the regions
+ * has points in the band), ybot is the bottom of the most recent
+ * intersection and thus clips the top of the rectangles in that band.
+ * ytop is the top of the next intersection between the two regions and
+ * serves to clip the bottom of the rectangles in the current band.
+ * For an overlapping band (where the two regions intersect), ytop clips
+ * the top of the rectangles of both regions and ybot clips the bottoms.
+ */
+ if (reg1->extents.y1 < reg2->extents.y1)
+ ybot = reg1->extents.y1;
+ else
+ ybot = reg2->extents.y1;
+
+ /*
+ * prevBand serves to mark the start of the previous band so rectangles
+ * can be coalesced into larger rectangles. qv. miCoalesce, above.
+ * In the beginning, there is no previous band, so prevBand == curBand
+ * (curBand is set later on, of course, but the first band will always
+ * start at index 0). prevBand and curBand must be indices because of
+ * the possible expansion, and resultant moving, of the new region's
+ * array of rectangles.
+ */
+ prevBand = 0;
+
+ do
+ {
+ curBand = newReg->numRects;
+
+ /*
+ * This algorithm proceeds one source-band (as opposed to a
+ * destination band, which is determined by where the two regions
+ * intersect) at a time. r1BandEnd and r2BandEnd serve to mark the
+ * rectangle after the last one in the current band for their
+ * respective regions.
+ */
+ r1BandEnd = r1;
+ while ((r1BandEnd != r1End) && (r1BandEnd->y1 == r1->y1))
+ {
+ r1BandEnd++;
+ }
+
+ r2BandEnd = r2;
+ while ((r2BandEnd != r2End) && (r2BandEnd->y1 == r2->y1))
+ {
+ r2BandEnd++;
+ }
+
+ /*
+ * First handle the band that doesn't intersect, if any.
+ *
+ * Note that attention is restricted to one band in the
+ * non-intersecting region at once, so if a region has n
+ * bands between the current position and the next place it overlaps
+ * the other, this entire loop will be passed through n times.
+ */
+ if (r1->y1 < r2->y1)
+ {
+ top = max(r1->y1,ybot);
+ bot = min(r1->y2,r2->y1);
+
+ if ((top != bot) && (nonOverlap1Func != NULL))
+ {
+ (* nonOverlap1Func) (newReg, r1, r1BandEnd, top, bot);
+ }
+
+ ytop = r2->y1;
+ }
+ else if (r2->y1 < r1->y1)
+ {
+ top = max(r2->y1,ybot);
+ bot = min(r2->y2,r1->y1);
+
+ if ((top != bot) && (nonOverlap2Func != NULL))
+ {
+ (* nonOverlap2Func) (newReg, r2, r2BandEnd, top, bot);
+ }
+
+ ytop = r1->y1;
+ }
+ else
+ {
+ ytop = r1->y1;
+ }
+
+ /*
+ * If any rectangles got added to the region, try and coalesce them
+ * with rectangles from the previous band. Note we could just do
+ * this test in miCoalesce, but some machines incur a not
+ * inconsiderable cost for function calls, so...
+ */
+ if (newReg->numRects != curBand)
+ {
+ prevBand = miCoalesce (newReg, prevBand, curBand);
+ }
+
+ /*
+ * Now see if we've hit an intersecting band. The two bands only
+ * intersect if ybot > ytop
+ */
+ ybot = min(r1->y2, r2->y2);
+ curBand = newReg->numRects;
+ if (ybot > ytop)
+ {
+ (* overlapFunc) (newReg, r1, r1BandEnd, r2, r2BandEnd, ytop, ybot);
+
+ }
+
+ if (newReg->numRects != curBand)
+ {
+ prevBand = miCoalesce (newReg, prevBand, curBand);
+ }
+
+ /*
+ * If we've finished with a band (y2 == ybot) we skip forward
+ * in the region to the next band.
+ */
+ if (r1->y2 == ybot)
+ {
+ r1 = r1BandEnd;
+ }
+ if (r2->y2 == ybot)
+ {
+ r2 = r2BandEnd;
+ }
+ } while ((r1 != r1End) && (r2 != r2End));
+
+ /*
+ * Deal with whichever region still has rectangles left.
+ */
+ curBand = newReg->numRects;
+ if (r1 != r1End)
+ {
+ if (nonOverlap1Func != NULL)
+ {
+ do
+ {
+ r1BandEnd = r1;
+ while ((r1BandEnd < r1End) && (r1BandEnd->y1 == r1->y1))
+ {
+ r1BandEnd++;
+ }
+ (* nonOverlap1Func) (newReg, r1, r1BandEnd,
+ max(r1->y1,ybot), r1->y2);
+ r1 = r1BandEnd;
+ } while (r1 != r1End);
+ }
+ }
+ else if ((r2 != r2End) && (nonOverlap2Func != NULL))
+ {
+ do
+ {
+ r2BandEnd = r2;
+ while ((r2BandEnd < r2End) && (r2BandEnd->y1 == r2->y1))
+ {
+ r2BandEnd++;
+ }
+ (* nonOverlap2Func) (newReg, r2, r2BandEnd,
+ max(r2->y1,ybot), r2->y2);
+ r2 = r2BandEnd;
+ } while (r2 != r2End);
+ }
+
+ if (newReg->numRects != curBand)
+ {
+ (void) miCoalesce (newReg, prevBand, curBand);
+ }
+
+ /*
+ * A bit of cleanup. To keep regions from growing without bound,
+ * we shrink the array of rectangles to match the new number of
+ * rectangles in the region. This never goes to 0, however...
+ *
+ * Only do this stuff if the number of rectangles allocated is more than
+ * twice the number of rectangles in the region (a simple optimization...).
+ */
+ if (newReg->numRects < (newReg->size >> 1))
+ {
+ if (REGION_NOT_EMPTY(newReg))
+ {
+ BoxPtr prev_rects = newReg->rects;
+ newReg->size = newReg->numRects;
+ newReg->rects = (BoxPtr) Xrealloc ((char *) newReg->rects,
+ (unsigned) (sizeof(BoxRec) * newReg->size));
+ if (! newReg->rects)
+ newReg->rects = prev_rects;
+ }
+ else
+ {
+ /*
+ * No point in doing the extra work involved in an Xrealloc if
+ * the region is empty
+ */
+ newReg->size = 1;
+ Xfree((char *) newReg->rects);
+ newReg->rects = (BoxPtr) Xmalloc(sizeof(BoxRec));
+ }
+ }
+ Xfree ((char *) oldRects);
+ return;
+}
+
+
+/*======================================================================
+ * Region Union
+ *====================================================================*/
+
+/*-
+ *-----------------------------------------------------------------------
+ * miUnionNonO --
+ * Handle a non-overlapping band for the union operation. Just
+ * Adds the rectangles into the region. Doesn't have to check for
+ * subsumption or anything.
+ *
+ * Results:
+ * None.
+ *
+ * Side Effects:
+ * pReg->numRects is incremented and the final rectangles overwritten
+ * with the rectangles we're passed.
+ *
+ *-----------------------------------------------------------------------
+ */
+/* static void*/
+static int
+miUnionNonO (
+ register Region pReg,
+ register BoxPtr r,
+ BoxPtr rEnd,
+ register short y1,
+ register short y2)
+{
+ register BoxPtr pNextRect;
+
+ pNextRect = &pReg->rects[pReg->numRects];
+
+ assert(y1 < y2);
+
+ while (r != rEnd)
+ {
+ assert(r->x1 < r->x2);
+ MEMCHECK(pReg, pNextRect, pReg->rects);
+ pNextRect->x1 = r->x1;
+ pNextRect->y1 = y1;
+ pNextRect->x2 = r->x2;
+ pNextRect->y2 = y2;
+ pReg->numRects += 1;
+ pNextRect++;
+
+ assert(pReg->numRects<=pReg->size);
+ r++;
+ }
+ return 0; /* lint */
+}
+
+
+/*-
+ *-----------------------------------------------------------------------
+ * miUnionO --
+ * Handle an overlapping band for the union operation. Picks the
+ * left-most rectangle each time and merges it into the region.
+ *
+ * Results:
+ * None.
+ *
+ * Side Effects:
+ * Rectangles are overwritten in pReg->rects and pReg->numRects will
+ * be changed.
+ *
+ *-----------------------------------------------------------------------
+ */
+
+/* static void*/
+static int
+miUnionO (
+ register Region pReg,
+ register BoxPtr r1,
+ BoxPtr r1End,
+ register BoxPtr r2,
+ BoxPtr r2End,
+ register short y1,
+ register short y2)
+{
+ register BoxPtr pNextRect;
+
+ pNextRect = &pReg->rects[pReg->numRects];
+
+#define MERGERECT(r) \
+ if ((pReg->numRects != 0) && \
+ (pNextRect[-1].y1 == y1) && \
+ (pNextRect[-1].y2 == y2) && \
+ (pNextRect[-1].x2 >= r->x1)) \
+ { \
+ if (pNextRect[-1].x2 < r->x2) \
+ { \
+ pNextRect[-1].x2 = r->x2; \
+ assert(pNextRect[-1].x1<pNextRect[-1].x2); \
+ } \
+ } \
+ else \
+ { \
+ MEMCHECK(pReg, pNextRect, pReg->rects); \
+ pNextRect->y1 = y1; \
+ pNextRect->y2 = y2; \
+ pNextRect->x1 = r->x1; \
+ pNextRect->x2 = r->x2; \
+ pReg->numRects += 1; \
+ pNextRect += 1; \
+ } \
+ assert(pReg->numRects<=pReg->size);\
+ r++;
+
+ assert (y1<y2);
+ while ((r1 != r1End) && (r2 != r2End))
+ {
+ if (r1->x1 < r2->x1)
+ {
+ MERGERECT(r1);
+ }
+ else
+ {
+ MERGERECT(r2);
+ }
+ }
+
+ if (r1 != r1End)
+ {
+ do
+ {
+ MERGERECT(r1);
+ } while (r1 != r1End);
+ }
+ else while (r2 != r2End)
+ {
+ MERGERECT(r2);
+ }
+ return 0; /* lint */
+}
+
+int
+XUnionRegion(
+ Region reg1,
+ Region reg2, /* source regions */
+ Region newReg) /* destination Region */
+{
+ /* checks all the simple cases */
+
+ /*
+ * Region 1 and 2 are the same or region 1 is empty
+ */
+ if ( (reg1 == reg2) || (!(reg1->numRects)) )
+ {
+ if (newReg != reg2)
+ miRegionCopy(newReg, reg2);
+ return 1;
+ }
+
+ /*
+ * if nothing to union (region 2 empty)
+ */
+ if (!(reg2->numRects))
+ {
+ if (newReg != reg1)
+ miRegionCopy(newReg, reg1);
+ return 1;
+ }
+
+ /*
+ * Region 1 completely subsumes region 2
+ */
+ if ((reg1->numRects == 1) &&
+ (reg1->extents.x1 <= reg2->extents.x1) &&
+ (reg1->extents.y1 <= reg2->extents.y1) &&
+ (reg1->extents.x2 >= reg2->extents.x2) &&
+ (reg1->extents.y2 >= reg2->extents.y2))
+ {
+ if (newReg != reg1)
+ miRegionCopy(newReg, reg1);
+ return 1;
+ }
+
+ /*
+ * Region 2 completely subsumes region 1
+ */
+ if ((reg2->numRects == 1) &&
+ (reg2->extents.x1 <= reg1->extents.x1) &&
+ (reg2->extents.y1 <= reg1->extents.y1) &&
+ (reg2->extents.x2 >= reg1->extents.x2) &&
+ (reg2->extents.y2 >= reg1->extents.y2))
+ {
+ if (newReg != reg2)
+ miRegionCopy(newReg, reg2);
+ return 1;
+ }
+
+ miRegionOp (newReg, reg1, reg2, miUnionO,
+ miUnionNonO, miUnionNonO);
+
+ newReg->extents.x1 = min(reg1->extents.x1, reg2->extents.x1);
+ newReg->extents.y1 = min(reg1->extents.y1, reg2->extents.y1);
+ newReg->extents.x2 = max(reg1->extents.x2, reg2->extents.x2);
+ newReg->extents.y2 = max(reg1->extents.y2, reg2->extents.y2);
+
+ return 1;
+}
+
+
+/*======================================================================
+ * Region Subtraction
+ *====================================================================*/
+
+/*-
+ *-----------------------------------------------------------------------
+ * miSubtractNonO --
+ * Deal with non-overlapping band for subtraction. Any parts from
+ * region 2 we discard. Anything from region 1 we add to the region.
+ *
+ * Results:
+ * None.
+ *
+ * Side Effects:
+ * pReg may be affected.
+ *
+ *-----------------------------------------------------------------------
+ */
+/* static void*/
+static int
+miSubtractNonO1 (
+ register Region pReg,
+ register BoxPtr r,
+ BoxPtr rEnd,
+ register short y1,
+ register short y2)
+{
+ register BoxPtr pNextRect;
+
+ pNextRect = &pReg->rects[pReg->numRects];
+
+ assert(y1<y2);
+
+ while (r != rEnd)
+ {
+ assert(r->x1<r->x2);
+ MEMCHECK(pReg, pNextRect, pReg->rects);
+ pNextRect->x1 = r->x1;
+ pNextRect->y1 = y1;
+ pNextRect->x2 = r->x2;
+ pNextRect->y2 = y2;
+ pReg->numRects += 1;
+ pNextRect++;
+
+ assert(pReg->numRects <= pReg->size);
+
+ r++;
+ }
+ return 0; /* lint */
+}
+
+/*-
+ *-----------------------------------------------------------------------
+ * miSubtractO --
+ * Overlapping band subtraction. x1 is the left-most point not yet
+ * checked.
+ *
+ * Results:
+ * None.
+ *
+ * Side Effects:
+ * pReg may have rectangles added to it.
+ *
+ *-----------------------------------------------------------------------
+ */
+/* static void*/
+static int
+miSubtractO (
+ register Region pReg,
+ register BoxPtr r1,
+ BoxPtr r1End,
+ register BoxPtr r2,
+ BoxPtr r2End,
+ register short y1,
+ register short y2)
+{
+ register BoxPtr pNextRect;
+ register int x1;
+
+ x1 = r1->x1;
+
+ assert(y1<y2);
+ pNextRect = &pReg->rects[pReg->numRects];
+
+ while ((r1 != r1End) && (r2 != r2End))
+ {
+ if (r2->x2 <= x1)
+ {
+ /*
+ * Subtrahend missed the boat: go to next subtrahend.
+ */
+ r2++;
+ }
+ else if (r2->x1 <= x1)
+ {
+ /*
+ * Subtrahend preceeds minuend: nuke left edge of minuend.
+ */
+ x1 = r2->x2;
+ if (x1 >= r1->x2)
+ {
+ /*
+ * Minuend completely covered: advance to next minuend and
+ * reset left fence to edge of new minuend.
+ */
+ r1++;
+ if (r1 != r1End)
+ x1 = r1->x1;
+ }
+ else
+ {
+ /*
+ * Subtrahend now used up since it doesn't extend beyond
+ * minuend
+ */
+ r2++;
+ }
+ }
+ else if (r2->x1 < r1->x2)
+ {
+ /*
+ * Left part of subtrahend covers part of minuend: add uncovered
+ * part of minuend to region and skip to next subtrahend.
+ */
+ assert(x1<r2->x1);
+ MEMCHECK(pReg, pNextRect, pReg->rects);
+ pNextRect->x1 = x1;
+ pNextRect->y1 = y1;
+ pNextRect->x2 = r2->x1;
+ pNextRect->y2 = y2;
+ pReg->numRects += 1;
+ pNextRect++;
+
+ assert(pReg->numRects<=pReg->size);
+
+ x1 = r2->x2;
+ if (x1 >= r1->x2)
+ {
+ /*
+ * Minuend used up: advance to new...
+ */
+ r1++;
+ if (r1 != r1End)
+ x1 = r1->x1;
+ }
+ else
+ {
+ /*
+ * Subtrahend used up
+ */
+ r2++;
+ }
+ }
+ else
+ {
+ /*
+ * Minuend used up: add any remaining piece before advancing.
+ */
+ if (r1->x2 > x1)
+ {
+ MEMCHECK(pReg, pNextRect, pReg->rects);
+ pNextRect->x1 = x1;
+ pNextRect->y1 = y1;
+ pNextRect->x2 = r1->x2;
+ pNextRect->y2 = y2;
+ pReg->numRects += 1;
+ pNextRect++;
+ assert(pReg->numRects<=pReg->size);
+ }
+ r1++;
+ if (r1 != r1End)
+ x1 = r1->x1;
+ }
+ }
+
+ /*
+ * Add remaining minuend rectangles to region.
+ */
+ while (r1 != r1End)
+ {
+ assert(x1<r1->x2);
+ MEMCHECK(pReg, pNextRect, pReg->rects);
+ pNextRect->x1 = x1;
+ pNextRect->y1 = y1;
+ pNextRect->x2 = r1->x2;
+ pNextRect->y2 = y2;
+ pReg->numRects += 1;
+ pNextRect++;
+
+ assert(pReg->numRects<=pReg->size);
+
+ r1++;
+ if (r1 != r1End)
+ {
+ x1 = r1->x1;
+ }
+ }
+ return 0; /* lint */
+}
+
+/*-
+ *-----------------------------------------------------------------------
+ * miSubtract --
+ * Subtract regS from regM and leave the result in regD.
+ * S stands for subtrahend, M for minuend and D for difference.
+ *
+ * Results:
+ * TRUE.
+ *
+ * Side Effects:
+ * regD is overwritten.
+ *
+ *-----------------------------------------------------------------------
+ */
+
+int
+XSubtractRegion(
+ Region regM,
+ Region regS,
+ register Region regD)
+{
+ /* check for trivial reject */
+ if ( (!(regM->numRects)) || (!(regS->numRects)) ||
+ (!EXTENTCHECK(&regM->extents, &regS->extents)) )
+ {
+ miRegionCopy(regD, regM);
+ return 1;
+ }
+
+ miRegionOp (regD, regM, regS, miSubtractO,
+ miSubtractNonO1, NULL);
+
+ /*
+ * Can't alter newReg's extents before we call miRegionOp because
+ * it might be one of the source regions and miRegionOp depends
+ * on the extents of those regions being the unaltered. Besides, this
+ * way there's no checking against rectangles that will be nuked
+ * due to coalescing, so we have to examine fewer rectangles.
+ */
+ miSetExtents (regD);
+ return 1;
+}
+
+int
+XXorRegion(Region sra, Region srb, Region dr)
+{
+ Region tra, trb;
+
+ if (! (tra = XCreateRegion()) )
+ return 0;
+ if (! (trb = XCreateRegion()) ) {
+ XDestroyRegion(tra);
+ return 0;
+ }
+ (void) XSubtractRegion(sra,srb,tra);
+ (void) XSubtractRegion(srb,sra,trb);
+ (void) XUnionRegion(tra,trb,dr);
+ XDestroyRegion(tra);
+ XDestroyRegion(trb);
+ return 0;
+}
+
+/*
+ * Check to see if the region is empty. Assumes a region is passed
+ * as a parameter
+ */
+int
+XEmptyRegion(
+ Region r)
+{
+ if( r->numRects == 0 ) return TRUE;
+ else return FALSE;
+}
+
+/*
+ * Check to see if two regions are equal
+ */
+int
+XEqualRegion(Region r1, Region r2)
+{
+ int i;
+
+ if( r1->numRects != r2->numRects ) return FALSE;
+ else if( r1->numRects == 0 ) return TRUE;
+ else if ( r1->extents.x1 != r2->extents.x1 ) return FALSE;
+ else if ( r1->extents.x2 != r2->extents.x2 ) return FALSE;
+ else if ( r1->extents.y1 != r2->extents.y1 ) return FALSE;
+ else if ( r1->extents.y2 != r2->extents.y2 ) return FALSE;
+ else for( i=0; i < r1->numRects; i++ ) {
+ if ( r1->rects[i].x1 != r2->rects[i].x1 ) return FALSE;
+ else if ( r1->rects[i].x2 != r2->rects[i].x2 ) return FALSE;
+ else if ( r1->rects[i].y1 != r2->rects[i].y1 ) return FALSE;
+ else if ( r1->rects[i].y2 != r2->rects[i].y2 ) return FALSE;
+ }
+ return TRUE;
+}
+
+int
+XPointInRegion(
+ Region pRegion,
+ int x, int y)
+{
+ int i;
+
+ if (pRegion->numRects == 0)
+ return FALSE;
+ if (!INBOX(pRegion->extents, x, y))
+ return FALSE;
+ for (i=0; i<pRegion->numRects; i++)
+ {
+ if (INBOX (pRegion->rects[i], x, y))
+ return TRUE;
+ }
+ return FALSE;
+}
+
+int
+XRectInRegion(
+ register Region region,
+ int rx, int ry,
+ unsigned int rwidth, unsigned int rheight)
+{
+ register BoxPtr pbox;
+ register BoxPtr pboxEnd;
+ Box rect;
+ register BoxPtr prect = &rect;
+ int partIn, partOut;
+
+ prect->x1 = rx;
+ prect->y1 = ry;
+ prect->x2 = rwidth + rx;
+ prect->y2 = rheight + ry;
+
+ /* this is (just) a useful optimization */
+ if ((region->numRects == 0) || !EXTENTCHECK(&region->extents, prect))
+ return(RectangleOut);
+
+ partOut = FALSE;
+ partIn = FALSE;
+
+ /* can stop when both partOut and partIn are TRUE, or we reach prect->y2 */
+ for (pbox = region->rects, pboxEnd = pbox + region->numRects;
+ pbox < pboxEnd;
+ pbox++)
+ {
+
+ if (pbox->y2 <= ry)
+ continue; /* getting up to speed or skipping remainder of band */
+
+ if (pbox->y1 > ry)
+ {
+ partOut = TRUE; /* missed part of rectangle above */
+ if (partIn || (pbox->y1 >= prect->y2))
+ break;
+ ry = pbox->y1; /* x guaranteed to be == prect->x1 */
+ }
+
+ if (pbox->x2 <= rx)
+ continue; /* not far enough over yet */
+
+ if (pbox->x1 > rx)
+ {
+ partOut = TRUE; /* missed part of rectangle to left */
+ if (partIn)
+ break;
+ }
+
+ if (pbox->x1 < prect->x2)
+ {
+ partIn = TRUE; /* definitely overlap */
+ if (partOut)
+ break;
+ }
+
+ if (pbox->x2 >= prect->x2)
+ {
+ ry = pbox->y2; /* finished with this band */
+ if (ry >= prect->y2)
+ break;
+ rx = prect->x1; /* reset x out to left again */
+ } else
+ {
+ /*
+ * Because boxes in a band are maximal width, if the first box
+ * to overlap the rectangle doesn't completely cover it in that
+ * band, the rectangle must be partially out, since some of it
+ * will be uncovered in that band. partIn will have been set true
+ * by now...
+ */
+ break;
+ }
+
+ }
+
+ return(partIn ? ((ry < prect->y2) ? RectanglePart : RectangleIn) :
+ RectangleOut);
+}
diff --git a/libX11/src/RegstFlt.c b/libX11/src/RegstFlt.c
index 9a560e794..934c73f14 100644
--- a/libX11/src/RegstFlt.c
+++ b/libX11/src/RegstFlt.c
@@ -1,155 +1,155 @@
-
- /*
- * Copyright 1990, 1991 by OMRON Corporation
- *
- * 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 OMRON not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. OMRON makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL OMRON 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
- * TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Seiji Kuwari OMRON Corporation
- * kuwa@omron.co.jp
- * kuwa%omron.co.jp@uunet.uu.net
- */
-/*
-
-Copyright 1990, 1991, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-static void
-_XFreeIMFilters(
- Display *display)
-{
- register XFilterEventList fl;
-
- while ((fl = display->im_filters)) {
- display->im_filters = fl->next;
- Xfree((char *)fl);
- }
-}
-
-/*
- * Register a filter with the filter machinery by event mask.
- */
-void
-_XRegisterFilterByMask(
- Display *display,
- Window window,
- unsigned long event_mask,
- Bool (*filter)(
- Display*, Window, XEvent*, XPointer
- ),
- XPointer client_data)
-{
- XFilterEventRec *rec;
-
- rec = (XFilterEventList)Xmalloc(sizeof(XFilterEventRec));
- if (!rec)
- return;
- rec->window = window;
- rec->event_mask = event_mask;
- rec->start_type = 0;
- rec->end_type = 0;
- rec->filter = filter;
- rec->client_data = client_data;
- LockDisplay(display);
- rec->next = display->im_filters;
- display->im_filters = rec;
- display->free_funcs->im_filters = _XFreeIMFilters;
- UnlockDisplay(display);
-}
-
-/*
- * Register a filter with the filter machinery by type code.
- */
-void
-_XRegisterFilterByType(
- Display *display,
- Window window,
- int start_type,
- int end_type,
- Bool (*filter)(
- Display*, Window, XEvent*, XPointer
- ),
- XPointer client_data)
-{
- XFilterEventRec *rec;
-
- rec = (XFilterEventList)Xmalloc(sizeof(XFilterEventRec));
- if (!rec)
- return;
- rec->window = window;
- rec->event_mask = 0;
- rec->start_type = start_type;
- rec->end_type = end_type;
- rec->filter = filter;
- rec->client_data = client_data;
- LockDisplay(display);
- rec->next = display->im_filters;
- display->im_filters = rec;
- display->free_funcs->im_filters = _XFreeIMFilters;
- UnlockDisplay(display);
-}
-
-void
-_XUnregisterFilter(
- Display *display,
- Window window,
- Bool (*filter)(
- Display*, Window, XEvent*, XPointer
- ),
- XPointer client_data)
-{
- register XFilterEventList *prev, fl;
-
- for (prev = &display->im_filters; (fl = *prev); ) {
- if (fl->window == window &&
- fl->filter == filter && fl->client_data == client_data) {
- *prev = fl->next;
- Xfree((char *)fl);
- } else
- prev = &fl->next;
- }
-}
+
+ /*
+ * Copyright 1990, 1991 by OMRON Corporation
+ *
+ * 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 OMRON not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. OMRON makes no representations
+ * about the suitability of this software for any purpose. It is provided
+ * "as is" without express or implied warranty.
+ *
+ * OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL OMRON 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
+ * TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Seiji Kuwari OMRON Corporation
+ * kuwa@omron.co.jp
+ * kuwa%omron.co.jp@uunet.uu.net
+ */
+/*
+
+Copyright 1990, 1991, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+static void
+_XFreeIMFilters(
+ Display *display)
+{
+ register XFilterEventList fl;
+
+ while ((fl = display->im_filters)) {
+ display->im_filters = fl->next;
+ Xfree((char *)fl);
+ }
+}
+
+/*
+ * Register a filter with the filter machinery by event mask.
+ */
+void
+_XRegisterFilterByMask(
+ Display *display,
+ Window window,
+ unsigned long event_mask,
+ Bool (*filter)(
+ Display*, Window, XEvent*, XPointer
+ ),
+ XPointer client_data)
+{
+ XFilterEventRec *rec;
+
+ rec = (XFilterEventList)Xmalloc(sizeof(XFilterEventRec));
+ if (!rec)
+ return;
+ rec->window = window;
+ rec->event_mask = event_mask;
+ rec->start_type = 0;
+ rec->end_type = 0;
+ rec->filter = filter;
+ rec->client_data = client_data;
+ LockDisplay(display);
+ rec->next = display->im_filters;
+ display->im_filters = rec;
+ display->free_funcs->im_filters = _XFreeIMFilters;
+ UnlockDisplay(display);
+}
+
+/*
+ * Register a filter with the filter machinery by type code.
+ */
+void
+_XRegisterFilterByType(
+ Display *display,
+ Window window,
+ int start_type,
+ int end_type,
+ Bool (*filter)(
+ Display*, Window, XEvent*, XPointer
+ ),
+ XPointer client_data)
+{
+ XFilterEventRec *rec;
+
+ rec = (XFilterEventList)Xmalloc(sizeof(XFilterEventRec));
+ if (!rec)
+ return;
+ rec->window = window;
+ rec->event_mask = 0;
+ rec->start_type = start_type;
+ rec->end_type = end_type;
+ rec->filter = filter;
+ rec->client_data = client_data;
+ LockDisplay(display);
+ rec->next = display->im_filters;
+ display->im_filters = rec;
+ display->free_funcs->im_filters = _XFreeIMFilters;
+ UnlockDisplay(display);
+}
+
+void
+_XUnregisterFilter(
+ Display *display,
+ Window window,
+ Bool (*filter)(
+ Display*, Window, XEvent*, XPointer
+ ),
+ XPointer client_data)
+{
+ register XFilterEventList *prev, fl;
+
+ for (prev = &display->im_filters; (fl = *prev); ) {
+ if (fl->window == window &&
+ fl->filter == filter && fl->client_data == client_data) {
+ *prev = fl->next;
+ Xfree((char *)fl);
+ } else
+ prev = &fl->next;
+ }
+}
diff --git a/libX11/src/RepWindow.c b/libX11/src/RepWindow.c
index 1fde8d80f..13e933e8c 100644
--- a/libX11/src/RepWindow.c
+++ b/libX11/src/RepWindow.c
@@ -1,52 +1,52 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XReparentWindow(
- register Display *dpy,
- Window w,
- Window p,
- int x,
- int y)
-{
- register xReparentWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(ReparentWindow, req);
- req->window = w;
- req->parent = p;
- req->x = x;
- req->y = y;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XReparentWindow(
+ register Display *dpy,
+ Window w,
+ Window p,
+ int x,
+ int y)
+{
+ register xReparentWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ReparentWindow, req);
+ req->window = w;
+ req->parent = p;
+ req->x = x;
+ req->y = y;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/RestackWs.c b/libX11/src/RestackWs.c
index 1dba3c89f..c4e870971 100644
--- a/libX11/src/RestackWs.c
+++ b/libX11/src/RestackWs.c
@@ -1,70 +1,70 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XRestackWindows (
- register Display *dpy,
- register Window *windows,
- int n)
-{
- int i = 0;
-#ifdef MUSTCOPY
- unsigned long val = Below; /* needed for macro below */
-#endif
-
- LockDisplay(dpy);
- while (windows++, ++i < n) {
- register xConfigureWindowReq *req;
-
- GetReqExtra (ConfigureWindow, 8, req);
- req->window = *windows;
- req->mask = CWSibling | CWStackMode;
-#ifdef MUSTCOPY
- dpy->bufptr -= 8;
- Data32 (dpy, (long *)(windows-1), 4);
- Data32 (dpy, (long *)&val, 4);
-#else
- {
- register CARD32 *values = (CARD32 *)
- NEXTPTR(req,xConfigureWindowReq);
- *values++ = *(windows-1);
- *values = Below;
- }
-#endif /* MUSTCOPY */
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
-
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XRestackWindows (
+ register Display *dpy,
+ register Window *windows,
+ int n)
+{
+ int i = 0;
+#ifdef MUSTCOPY
+ unsigned long val = Below; /* needed for macro below */
+#endif
+
+ LockDisplay(dpy);
+ while (windows++, ++i < n) {
+ register xConfigureWindowReq *req;
+
+ GetReqExtra (ConfigureWindow, 8, req);
+ req->window = *windows;
+ req->mask = CWSibling | CWStackMode;
+#ifdef MUSTCOPY
+ dpy->bufptr -= 8;
+ Data32 (dpy, (long *)(windows-1), 4);
+ Data32 (dpy, (long *)&val, 4);
+#else
+ {
+ register CARD32 *values = (CARD32 *)
+ NEXTPTR(req,xConfigureWindowReq);
+ *values++ = *(windows-1);
+ *values = Below;
+ }
+#endif /* MUSTCOPY */
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
+
+
+
+
diff --git a/libX11/src/RotProp.c b/libX11/src/RotProp.c
index 98d7dbd81..0a371c681 100644
--- a/libX11/src/RotProp.c
+++ b/libX11/src/RotProp.c
@@ -1,63 +1,63 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XRotateWindowProperties(
- register Display *dpy,
- Window w,
- Atom *properties,
- register int nprops,
- int npositions)
-{
- register long nbytes;
- register xRotatePropertiesReq *req;
-
- LockDisplay(dpy);
- GetReq (RotateProperties, req);
- req->window = w;
- req->nAtoms = nprops;
- req->nPositions = npositions;
-
- req->length += nprops;
- nbytes = nprops << 2;
-/* XXX Cray needs packing here.... */
- Data32 (dpy, (long *) properties, nbytes);
-
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
-
-
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XRotateWindowProperties(
+ register Display *dpy,
+ Window w,
+ Atom *properties,
+ register int nprops,
+ int npositions)
+{
+ register long nbytes;
+ register xRotatePropertiesReq *req;
+
+ LockDisplay(dpy);
+ GetReq (RotateProperties, req);
+ req->window = w;
+ req->nAtoms = nprops;
+ req->nPositions = npositions;
+
+ req->length += nprops;
+ nbytes = nprops << 2;
+/* XXX Cray needs packing here.... */
+ Data32 (dpy, (long *) properties, nbytes);
+
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
+
+
+
+
+
diff --git a/libX11/src/ScrResStr.c b/libX11/src/ScrResStr.c
index 0601c8644..8e7ad93e9 100644
--- a/libX11/src/ScrResStr.c
+++ b/libX11/src/ScrResStr.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xatom.h>
-
-char *XScreenResourceString(Screen *screen)
-{
- Atom prop_name;
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- char *val = NULL;
-
- prop_name = XInternAtom(screen->display, "SCREEN_RESOURCES", True);
- if (prop_name &&
- XGetWindowProperty(screen->display, screen->root, prop_name,
- 0L, 100000000L, False,
- XA_STRING, &actual_type, &actual_format,
- &nitems, &leftover,
- (unsigned char **) &val) == Success) {
- if ((actual_type == XA_STRING) && (actual_format == 8))
- return val;
- if (val)
- Xfree(val);
- }
- return (char *)NULL;
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xatom.h>
+
+char *XScreenResourceString(Screen *screen)
+{
+ Atom prop_name;
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ char *val = NULL;
+
+ prop_name = XInternAtom(screen->display, "SCREEN_RESOURCES", True);
+ if (prop_name &&
+ XGetWindowProperty(screen->display, screen->root, prop_name,
+ 0L, 100000000L, False,
+ XA_STRING, &actual_type, &actual_format,
+ &nitems, &leftover,
+ (unsigned char **) &val) == Success) {
+ if ((actual_type == XA_STRING) && (actual_format == 8))
+ return val;
+ if (val)
+ Xfree(val);
+ }
+ return (char *)NULL;
+}
diff --git a/libX11/src/SelInput.c b/libX11/src/SelInput.c
index a3fa294f4..d79c82bed 100644
--- a/libX11/src/SelInput.c
+++ b/libX11/src/SelInput.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSelectInput (
- register Display *dpy,
- Window w,
- long mask)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWEventMask;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), mask);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSelectInput (
+ register Display *dpy,
+ Window w,
+ long mask)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWEventMask;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), mask);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/SetBack.c b/libX11/src/SetBack.c
index 269d10cc7..384b8b9e5 100644
--- a/libX11/src/SetBack.c
+++ b/libX11/src/SetBack.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetBackground (
- register Display *dpy,
- GC gc,
- unsigned long background) /* CARD32 */
-{
- LockDisplay(dpy);
- if (gc->values.background != background) {
- gc->values.background = background;
- gc->dirty |= GCBackground;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetBackground (
+ register Display *dpy,
+ GC gc,
+ unsigned long background) /* CARD32 */
+{
+ LockDisplay(dpy);
+ if (gc->values.background != background) {
+ gc->values.background = background;
+ gc->dirty |= GCBackground;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetCRects.c b/libX11/src/SetCRects.c
index c7ad3fcf2..4809592a4 100644
--- a/libX11/src/SetCRects.c
+++ b/libX11/src/SetCRects.c
@@ -1,81 +1,81 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* can only call when display is locked. */
-void _XSetClipRectangles (
- register Display *dpy,
- GC gc,
- int clip_x_origin, int clip_y_origin,
- XRectangle *rectangles,
- int n,
- int ordering)
-{
- register xSetClipRectanglesReq *req;
- register long len;
- unsigned long dirty;
- register _XExtension *ext;
-
- GetReq (SetClipRectangles, req);
- req->gc = gc->gid;
- req->xOrigin = gc->values.clip_x_origin = clip_x_origin;
- req->yOrigin = gc->values.clip_y_origin = clip_y_origin;
- req->ordering = ordering;
- len = ((long)n) << 1;
- SetReqLen(req, len, 1);
- len <<= 2;
- Data16 (dpy, (short *) rectangles, len);
- gc->rects = 1;
- dirty = gc->dirty & ~(GCClipMask | GCClipXOrigin | GCClipYOrigin);
- gc->dirty = GCClipMask | GCClipXOrigin | GCClipYOrigin;
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next)
- if (ext->flush_GC) (*ext->flush_GC)(dpy, gc, &ext->codes);
- gc->dirty = dirty;
-}
-
-int
-XSetClipRectangles (
- register Display *dpy,
- GC gc,
- int clip_x_origin,
- int clip_y_origin,
- XRectangle *rectangles,
- int n,
- int ordering)
-{
- LockDisplay(dpy);
- _XSetClipRectangles (dpy, gc, clip_x_origin, clip_y_origin, rectangles, n,
- ordering);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* can only call when display is locked. */
+void _XSetClipRectangles (
+ register Display *dpy,
+ GC gc,
+ int clip_x_origin, int clip_y_origin,
+ XRectangle *rectangles,
+ int n,
+ int ordering)
+{
+ register xSetClipRectanglesReq *req;
+ register long len;
+ unsigned long dirty;
+ register _XExtension *ext;
+
+ GetReq (SetClipRectangles, req);
+ req->gc = gc->gid;
+ req->xOrigin = gc->values.clip_x_origin = clip_x_origin;
+ req->yOrigin = gc->values.clip_y_origin = clip_y_origin;
+ req->ordering = ordering;
+ len = ((long)n) << 1;
+ SetReqLen(req, len, 1);
+ len <<= 2;
+ Data16 (dpy, (short *) rectangles, len);
+ gc->rects = 1;
+ dirty = gc->dirty & ~(GCClipMask | GCClipXOrigin | GCClipYOrigin);
+ gc->dirty = GCClipMask | GCClipXOrigin | GCClipYOrigin;
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next)
+ if (ext->flush_GC) (*ext->flush_GC)(dpy, gc, &ext->codes);
+ gc->dirty = dirty;
+}
+
+int
+XSetClipRectangles (
+ register Display *dpy,
+ GC gc,
+ int clip_x_origin,
+ int clip_y_origin,
+ XRectangle *rectangles,
+ int n,
+ int ordering)
+{
+ LockDisplay(dpy);
+ _XSetClipRectangles (dpy, gc, clip_x_origin, clip_y_origin, rectangles, n,
+ ordering);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/SetClMask.c b/libX11/src/SetClMask.c
index 82cdb2cce..ba65250fd 100644
--- a/libX11/src/SetClMask.c
+++ b/libX11/src/SetClMask.c
@@ -1,47 +1,47 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetClipMask (
- register Display *dpy,
- GC gc,
- Pixmap mask)
-{
- LockDisplay(dpy);
- /* always update, since client may have changed pixmap contents */
- gc->values.clip_mask = mask;
- gc->dirty |= GCClipMask;
- gc->rects = 0;
- _XFlushGCCache(dpy, gc);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetClipMask (
+ register Display *dpy,
+ GC gc,
+ Pixmap mask)
+{
+ LockDisplay(dpy);
+ /* always update, since client may have changed pixmap contents */
+ gc->values.clip_mask = mask;
+ gc->dirty |= GCClipMask;
+ gc->rects = 0;
+ _XFlushGCCache(dpy, gc);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetClOrig.c b/libX11/src/SetClOrig.c
index 800e1570d..ea0231586 100644
--- a/libX11/src/SetClOrig.c
+++ b/libX11/src/SetClOrig.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetClipOrigin (
- register Display *dpy,
- GC gc,
- int xorig,
- int yorig)
-{
- XGCValues *gv = &gc->values;
-
- LockDisplay(dpy);
- if (xorig != gv->clip_x_origin) {
- gv->clip_x_origin = xorig;
- gc->dirty |= GCClipXOrigin;
- }
- if (yorig != gv->clip_y_origin) {
- gv->clip_y_origin = yorig;
- gc->dirty |= GCClipYOrigin;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetClipOrigin (
+ register Display *dpy,
+ GC gc,
+ int xorig,
+ int yorig)
+{
+ XGCValues *gv = &gc->values;
+
+ LockDisplay(dpy);
+ if (xorig != gv->clip_x_origin) {
+ gv->clip_x_origin = xorig;
+ gc->dirty |= GCClipXOrigin;
+ }
+ if (yorig != gv->clip_y_origin) {
+ gv->clip_y_origin = yorig;
+ gc->dirty |= GCClipYOrigin;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetDashes.c b/libX11/src/SetDashes.c
index ffe4a95ff..e88b87dbd 100644
--- a/libX11/src/SetDashes.c
+++ b/libX11/src/SetDashes.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetDashes (
- register Display *dpy,
- GC gc,
- int dash_offset,
- _Xconst char *list,
- int n)
- {
- register xSetDashesReq *req;
-
- LockDisplay(dpy);
- GetReq (SetDashes,req);
- req->gc = gc->gid;
- req->dashOffset = gc->values.dash_offset = dash_offset;
- req->nDashes = n;
- req->length += (n+3)>>2;
- gc->dashes = 1;
- gc->dirty &= ~(GCDashList | GCDashOffset);
- Data (dpy, list, (long)n);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetDashes (
+ register Display *dpy,
+ GC gc,
+ int dash_offset,
+ _Xconst char *list,
+ int n)
+ {
+ register xSetDashesReq *req;
+
+ LockDisplay(dpy);
+ GetReq (SetDashes,req);
+ req->gc = gc->gid;
+ req->dashOffset = gc->values.dash_offset = dash_offset;
+ req->nDashes = n;
+ req->length += (n+3)>>2;
+ gc->dashes = 1;
+ gc->dirty &= ~(GCDashList | GCDashOffset);
+ Data (dpy, list, (long)n);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
+
diff --git a/libX11/src/SetFPath.c b/libX11/src/SetFPath.c
index 89955c23e..04d9436d7 100644
--- a/libX11/src/SetFPath.c
+++ b/libX11/src/SetFPath.c
@@ -1,77 +1,77 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define safestrlen(s) ((s) ? strlen(s) : 0)
-
-int
-XSetFontPath (
- register Display *dpy,
- char **directories,
- int ndirs)
-{
- register int n = 0;
- register int i;
- register int nbytes;
- char *p;
- register xSetFontPathReq *req;
- int retCode;
-
- LockDisplay(dpy);
- GetReq (SetFontPath, req);
- req->nFonts = ndirs;
- for (i = 0; i < ndirs; i++) {
- n += safestrlen (directories[i]) + 1;
- }
- nbytes = (n + 3) & ~3;
- req->length += nbytes >> 2;
- if ((p = (char *) Xmalloc ((unsigned) nbytes))) {
- /*
- * pack into counted strings.
- */
- char *tmp = p;
-
- for (i = 0; i < ndirs; i++) {
- register int length = safestrlen (directories[i]);
- *p = length;
- memcpy (p + 1, directories[i], length);
- p += length + 1;
- }
- Data (dpy, tmp, nbytes);
- Xfree ((char *) tmp);
- retCode = 1;
- }
- else
- retCode = 0;
-
- UnlockDisplay(dpy);
- SyncHandle();
- return (retCode);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define safestrlen(s) ((s) ? strlen(s) : 0)
+
+int
+XSetFontPath (
+ register Display *dpy,
+ char **directories,
+ int ndirs)
+{
+ register int n = 0;
+ register int i;
+ register int nbytes;
+ char *p;
+ register xSetFontPathReq *req;
+ int retCode;
+
+ LockDisplay(dpy);
+ GetReq (SetFontPath, req);
+ req->nFonts = ndirs;
+ for (i = 0; i < ndirs; i++) {
+ n += safestrlen (directories[i]) + 1;
+ }
+ nbytes = (n + 3) & ~3;
+ req->length += nbytes >> 2;
+ if ((p = (char *) Xmalloc ((unsigned) nbytes))) {
+ /*
+ * pack into counted strings.
+ */
+ char *tmp = p;
+
+ for (i = 0; i < ndirs; i++) {
+ register int length = safestrlen (directories[i]);
+ *p = length;
+ memcpy (p + 1, directories[i], length);
+ p += length + 1;
+ }
+ Data (dpy, tmp, nbytes);
+ Xfree ((char *) tmp);
+ retCode = 1;
+ }
+ else
+ retCode = 0;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (retCode);
+}
diff --git a/libX11/src/SetFont.c b/libX11/src/SetFont.c
index 33ffca02d..6dd873981 100644
--- a/libX11/src/SetFont.c
+++ b/libX11/src/SetFont.c
@@ -1,47 +1,47 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetFont (
- register Display *dpy,
- GC gc,
- Font font)
-{
- LockDisplay(dpy);
- if (gc->values.font != font) {
- gc->values.font = font;
- gc->dirty |= GCFont;
- _XFlushGCCache(dpy, gc);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetFont (
+ register Display *dpy,
+ GC gc,
+ Font font)
+{
+ LockDisplay(dpy);
+ if (gc->values.font != font) {
+ gc->values.font = font;
+ gc->dirty |= GCFont;
+ _XFlushGCCache(dpy, gc);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetFore.c b/libX11/src/SetFore.c
index 50c9f1228..92ca40d79 100644
--- a/libX11/src/SetFore.c
+++ b/libX11/src/SetFore.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetForeground (
- register Display *dpy,
- GC gc,
- unsigned long foreground) /* CARD32 */
-{
- LockDisplay(dpy);
- if (gc->values.foreground != foreground) {
- gc->values.foreground = foreground;
- gc->dirty |= GCForeground;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetForeground (
+ register Display *dpy,
+ GC gc,
+ unsigned long foreground) /* CARD32 */
+{
+ LockDisplay(dpy);
+ if (gc->values.foreground != foreground) {
+ gc->values.foreground = foreground;
+ gc->dirty |= GCForeground;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetFunc.c b/libX11/src/SetFunc.c
index ffe4ec0cc..897ab03de 100644
--- a/libX11/src/SetFunc.c
+++ b/libX11/src/SetFunc.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetFunction (
- register Display *dpy,
- GC gc,
- int function)
-{
- LockDisplay(dpy);
- if (gc->values.function != function) {
- gc->values.function = function;
- gc->dirty |= GCFunction;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetFunction (
+ register Display *dpy,
+ GC gc,
+ int function)
+{
+ LockDisplay(dpy);
+ if (gc->values.function != function) {
+ gc->values.function = function;
+ gc->dirty |= GCFunction;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetHints.c b/libX11/src/SetHints.c
index 0c33f5901..0914287da 100644
--- a/libX11/src/SetHints.c
+++ b/libX11/src/SetHints.c
@@ -1,317 +1,317 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-#include <X11/Xos.h>
-
-#define safestrlen(s) ((s) ? strlen(s) : 0)
-
-int
-XSetSizeHints( /* old routine */
- Display *dpy,
- Window w,
- XSizeHints *hints,
- Atom property)
-{
- xPropSizeHints prop;
- memset(&prop, 0, sizeof(prop));
- prop.flags = (hints->flags & (USPosition|USSize|PAllHints));
- if (hints->flags & (USPosition|PPosition)) {
- prop.x = hints->x;
- prop.y = hints->y;
- }
- if (hints->flags & (USSize|PSize)) {
- prop.width = hints->width;
- prop.height = hints->height;
- }
- if (hints->flags & PMinSize) {
- prop.minWidth = hints->min_width;
- prop.minHeight = hints->min_height;
- }
- if (hints->flags & PMaxSize) {
- prop.maxWidth = hints->max_width;
- prop.maxHeight = hints->max_height;
- }
- if (hints->flags & PResizeInc) {
- prop.widthInc = hints->width_inc;
- prop.heightInc = hints->height_inc;
- }
- if (hints->flags & PAspect) {
- prop.minAspectX = hints->min_aspect.x;
- prop.minAspectY = hints->min_aspect.y;
- prop.maxAspectX = hints->max_aspect.x;
- prop.maxAspectY = hints->max_aspect.y;
- }
- return XChangeProperty (dpy, w, property, XA_WM_SIZE_HINTS, 32,
- PropModeReplace, (unsigned char *) &prop,
- OldNumPropSizeElements);
-}
-
-/*
- * XSetWMHints sets the property
- * WM_HINTS type: WM_HINTS format:32
- */
-
-int
-XSetWMHints (
- Display *dpy,
- Window w,
- XWMHints *wmhints)
-{
- xPropWMHints prop;
- memset(&prop, 0, sizeof(prop));
- prop.flags = wmhints->flags;
- if (wmhints->flags & InputHint)
- prop.input = (wmhints->input == True ? 1 : 0);
- if (wmhints->flags & StateHint)
- prop.initialState = wmhints->initial_state;
- if (wmhints->flags & IconPixmapHint)
- prop.iconPixmap = wmhints->icon_pixmap;
- if (wmhints->flags & IconWindowHint)
- prop.iconWindow = wmhints->icon_window;
- if (wmhints->flags & IconPositionHint) {
- prop.iconX = wmhints->icon_x;
- prop.iconY = wmhints->icon_y;
- }
- if (wmhints->flags & IconMaskHint)
- prop.iconMask = wmhints->icon_mask;
- if (wmhints->flags & WindowGroupHint)
- prop.windowGroup = wmhints->window_group;
- return XChangeProperty (dpy, w, XA_WM_HINTS, XA_WM_HINTS, 32,
- PropModeReplace, (unsigned char *) &prop,
- NumPropWMHintsElements);
-}
-
-
-
-/*
- * XSetZoomHints sets the property
- * WM_ZOOM_HINTS type: WM_SIZE_HINTS format: 32
- */
-
-int
-XSetZoomHints (
- Display *dpy,
- Window w,
- XSizeHints *zhints)
-{
- return XSetSizeHints (dpy, w, zhints, XA_WM_ZOOM_HINTS);
-}
-
-
-/*
- * XSetNormalHints sets the property
- * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
- */
-
-int
-XSetNormalHints ( /* old routine */
- Display *dpy,
- Window w,
- XSizeHints *hints)
-{
- return XSetSizeHints (dpy, w, hints, XA_WM_NORMAL_HINTS);
-}
-
-
-
-/*
- * Note, the following is one of the few cases were we really do want sizeof
- * when examining a protocol structure. This is because the XChangeProperty
- * routine will take care of converting to host to network data structures.
- */
-
-int
-XSetIconSizes (
- Display *dpy,
- Window w, /* typically, root */
- XIconSize *list,
- int count) /* number of items on the list */
-{
- register int i;
- xPropIconSize *pp, *prop;
-#define size_of_the_real_thing sizeof /* avoid grepping screwups */
- unsigned nbytes = count * size_of_the_real_thing(xPropIconSize);
-#undef size_of_the_real_thing
- if ((prop = pp = (xPropIconSize *) Xmalloc (nbytes))) {
- for (i = 0; i < count; i++) {
- pp->minWidth = list->min_width;
- pp->minHeight = list->min_height;
- pp->maxWidth = list->max_width;
- pp->maxHeight = list->max_height;
- pp->widthInc = list->width_inc;
- pp->heightInc = list->height_inc;
- pp += 1;
- list += 1;
- }
- XChangeProperty (dpy, w, XA_WM_ICON_SIZE, XA_WM_ICON_SIZE, 32,
- PropModeReplace, (unsigned char *) prop,
- count * NumPropIconSizeElements);
- Xfree ((char *)prop);
- }
- return 1;
-}
-
-int
-XSetCommand (
- Display *dpy,
- Window w,
- char **argv,
- int argc)
-{
- register int i;
- register int nbytes;
- register char *buf, *bp;
- for (i = 0, nbytes = 0; i < argc; i++) {
- nbytes += safestrlen(argv[i]) + 1;
- }
- if ((bp = buf = Xmalloc((unsigned) nbytes))) {
- /* copy arguments into single buffer */
- for (i = 0; i < argc; i++) {
- if (argv[i]) {
- (void) strcpy(bp, argv[i]);
- bp += strlen(argv[i]) + 1;
- }
- else
- *bp++ = '\0';
- }
- XChangeProperty (dpy, w, XA_WM_COMMAND, XA_STRING, 8,
- PropModeReplace, (unsigned char *)buf, nbytes);
- Xfree(buf);
- }
- return 1;
-}
-/*
- * XSetStandardProperties sets the following properties:
- * WM_NAME type: STRING format: 8
- * WM_ICON_NAME type: STRING format: 8
- * WM_HINTS type: WM_HINTS format: 32
- * WM_COMMAND type: STRING
- * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
- */
-
-int
-XSetStandardProperties (
- Display *dpy,
- Window w, /* window to decorate */
- _Xconst char *name, /* name of application */
- _Xconst char *icon_string,/* name string for icon */
- Pixmap icon_pixmap, /* pixmap to use as icon, or None */
- char **argv, /* command to be used to restart application */
- int argc, /* count of arguments */
- XSizeHints *hints) /* size hints for window in its normal state */
-{
- XWMHints phints;
- phints.flags = 0;
-
- if (name != NULL) XStoreName (dpy, w, name);
-
- if (icon_string != NULL) {
- XChangeProperty (dpy, w, XA_WM_ICON_NAME, XA_STRING, 8,
- PropModeReplace, (unsigned char *)icon_string, safestrlen(icon_string));
- }
-
- if (icon_pixmap != None) {
- phints.icon_pixmap = icon_pixmap;
- phints.flags |= IconPixmapHint;
- }
- if (argv != NULL) XSetCommand(dpy, w, argv, argc);
-
- if (hints != NULL) XSetNormalHints(dpy, w, hints);
-
- if (phints.flags != 0) XSetWMHints(dpy, w, &phints);
-
- return 1;
-}
-
-int
-XSetTransientForHint(
- Display *dpy,
- Window w,
- Window propWindow)
-{
- return XChangeProperty(dpy, w, XA_WM_TRANSIENT_FOR, XA_WINDOW, 32,
- PropModeReplace, (unsigned char *) &propWindow, 1);
-}
-
-int
-XSetClassHint(
- Display *dpy,
- Window w,
- XClassHint *classhint)
-{
- char *class_string;
- char *s;
- int len_nm, len_cl;
-
- len_nm = safestrlen(classhint->res_name);
- len_cl = safestrlen(classhint->res_class);
- if ((class_string = s = Xmalloc((unsigned) (len_nm + len_cl + 2)))) {
- if (len_nm) {
- strcpy(s, classhint->res_name);
- s += len_nm + 1;
- }
- else
- *s++ = '\0';
- if (len_cl)
- strcpy(s, classhint->res_class);
- else
- *s = '\0';
- XChangeProperty(dpy, w, XA_WM_CLASS, XA_STRING, 8,
- PropModeReplace, (unsigned char *) class_string,
- len_nm+len_cl+2);
- Xfree(class_string);
- }
- return 1;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+#include <X11/Xos.h>
+
+#define safestrlen(s) ((s) ? strlen(s) : 0)
+
+int
+XSetSizeHints( /* old routine */
+ Display *dpy,
+ Window w,
+ XSizeHints *hints,
+ Atom property)
+{
+ xPropSizeHints prop;
+ memset(&prop, 0, sizeof(prop));
+ prop.flags = (hints->flags & (USPosition|USSize|PAllHints));
+ if (hints->flags & (USPosition|PPosition)) {
+ prop.x = hints->x;
+ prop.y = hints->y;
+ }
+ if (hints->flags & (USSize|PSize)) {
+ prop.width = hints->width;
+ prop.height = hints->height;
+ }
+ if (hints->flags & PMinSize) {
+ prop.minWidth = hints->min_width;
+ prop.minHeight = hints->min_height;
+ }
+ if (hints->flags & PMaxSize) {
+ prop.maxWidth = hints->max_width;
+ prop.maxHeight = hints->max_height;
+ }
+ if (hints->flags & PResizeInc) {
+ prop.widthInc = hints->width_inc;
+ prop.heightInc = hints->height_inc;
+ }
+ if (hints->flags & PAspect) {
+ prop.minAspectX = hints->min_aspect.x;
+ prop.minAspectY = hints->min_aspect.y;
+ prop.maxAspectX = hints->max_aspect.x;
+ prop.maxAspectY = hints->max_aspect.y;
+ }
+ return XChangeProperty (dpy, w, property, XA_WM_SIZE_HINTS, 32,
+ PropModeReplace, (unsigned char *) &prop,
+ OldNumPropSizeElements);
+}
+
+/*
+ * XSetWMHints sets the property
+ * WM_HINTS type: WM_HINTS format:32
+ */
+
+int
+XSetWMHints (
+ Display *dpy,
+ Window w,
+ XWMHints *wmhints)
+{
+ xPropWMHints prop;
+ memset(&prop, 0, sizeof(prop));
+ prop.flags = wmhints->flags;
+ if (wmhints->flags & InputHint)
+ prop.input = (wmhints->input == True ? 1 : 0);
+ if (wmhints->flags & StateHint)
+ prop.initialState = wmhints->initial_state;
+ if (wmhints->flags & IconPixmapHint)
+ prop.iconPixmap = wmhints->icon_pixmap;
+ if (wmhints->flags & IconWindowHint)
+ prop.iconWindow = wmhints->icon_window;
+ if (wmhints->flags & IconPositionHint) {
+ prop.iconX = wmhints->icon_x;
+ prop.iconY = wmhints->icon_y;
+ }
+ if (wmhints->flags & IconMaskHint)
+ prop.iconMask = wmhints->icon_mask;
+ if (wmhints->flags & WindowGroupHint)
+ prop.windowGroup = wmhints->window_group;
+ return XChangeProperty (dpy, w, XA_WM_HINTS, XA_WM_HINTS, 32,
+ PropModeReplace, (unsigned char *) &prop,
+ NumPropWMHintsElements);
+}
+
+
+
+/*
+ * XSetZoomHints sets the property
+ * WM_ZOOM_HINTS type: WM_SIZE_HINTS format: 32
+ */
+
+int
+XSetZoomHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *zhints)
+{
+ return XSetSizeHints (dpy, w, zhints, XA_WM_ZOOM_HINTS);
+}
+
+
+/*
+ * XSetNormalHints sets the property
+ * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
+ */
+
+int
+XSetNormalHints ( /* old routine */
+ Display *dpy,
+ Window w,
+ XSizeHints *hints)
+{
+ return XSetSizeHints (dpy, w, hints, XA_WM_NORMAL_HINTS);
+}
+
+
+
+/*
+ * Note, the following is one of the few cases were we really do want sizeof
+ * when examining a protocol structure. This is because the XChangeProperty
+ * routine will take care of converting to host to network data structures.
+ */
+
+int
+XSetIconSizes (
+ Display *dpy,
+ Window w, /* typically, root */
+ XIconSize *list,
+ int count) /* number of items on the list */
+{
+ register int i;
+ xPropIconSize *pp, *prop;
+#define size_of_the_real_thing sizeof /* avoid grepping screwups */
+ unsigned nbytes = count * size_of_the_real_thing(xPropIconSize);
+#undef size_of_the_real_thing
+ if ((prop = pp = (xPropIconSize *) Xmalloc (nbytes))) {
+ for (i = 0; i < count; i++) {
+ pp->minWidth = list->min_width;
+ pp->minHeight = list->min_height;
+ pp->maxWidth = list->max_width;
+ pp->maxHeight = list->max_height;
+ pp->widthInc = list->width_inc;
+ pp->heightInc = list->height_inc;
+ pp += 1;
+ list += 1;
+ }
+ XChangeProperty (dpy, w, XA_WM_ICON_SIZE, XA_WM_ICON_SIZE, 32,
+ PropModeReplace, (unsigned char *) prop,
+ count * NumPropIconSizeElements);
+ Xfree ((char *)prop);
+ }
+ return 1;
+}
+
+int
+XSetCommand (
+ Display *dpy,
+ Window w,
+ char **argv,
+ int argc)
+{
+ register int i;
+ register int nbytes;
+ register char *buf, *bp;
+ for (i = 0, nbytes = 0; i < argc; i++) {
+ nbytes += safestrlen(argv[i]) + 1;
+ }
+ if ((bp = buf = Xmalloc((unsigned) nbytes))) {
+ /* copy arguments into single buffer */
+ for (i = 0; i < argc; i++) {
+ if (argv[i]) {
+ (void) strcpy(bp, argv[i]);
+ bp += strlen(argv[i]) + 1;
+ }
+ else
+ *bp++ = '\0';
+ }
+ XChangeProperty (dpy, w, XA_WM_COMMAND, XA_STRING, 8,
+ PropModeReplace, (unsigned char *)buf, nbytes);
+ Xfree(buf);
+ }
+ return 1;
+}
+/*
+ * XSetStandardProperties sets the following properties:
+ * WM_NAME type: STRING format: 8
+ * WM_ICON_NAME type: STRING format: 8
+ * WM_HINTS type: WM_HINTS format: 32
+ * WM_COMMAND type: STRING
+ * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
+ */
+
+int
+XSetStandardProperties (
+ Display *dpy,
+ Window w, /* window to decorate */
+ _Xconst char *name, /* name of application */
+ _Xconst char *icon_string,/* name string for icon */
+ Pixmap icon_pixmap, /* pixmap to use as icon, or None */
+ char **argv, /* command to be used to restart application */
+ int argc, /* count of arguments */
+ XSizeHints *hints) /* size hints for window in its normal state */
+{
+ XWMHints phints;
+ phints.flags = 0;
+
+ if (name != NULL) XStoreName (dpy, w, name);
+
+ if (icon_string != NULL) {
+ XChangeProperty (dpy, w, XA_WM_ICON_NAME, XA_STRING, 8,
+ PropModeReplace, (unsigned char *)icon_string, safestrlen(icon_string));
+ }
+
+ if (icon_pixmap != None) {
+ phints.icon_pixmap = icon_pixmap;
+ phints.flags |= IconPixmapHint;
+ }
+ if (argv != NULL) XSetCommand(dpy, w, argv, argc);
+
+ if (hints != NULL) XSetNormalHints(dpy, w, hints);
+
+ if (phints.flags != 0) XSetWMHints(dpy, w, &phints);
+
+ return 1;
+}
+
+int
+XSetTransientForHint(
+ Display *dpy,
+ Window w,
+ Window propWindow)
+{
+ return XChangeProperty(dpy, w, XA_WM_TRANSIENT_FOR, XA_WINDOW, 32,
+ PropModeReplace, (unsigned char *) &propWindow, 1);
+}
+
+int
+XSetClassHint(
+ Display *dpy,
+ Window w,
+ XClassHint *classhint)
+{
+ char *class_string;
+ char *s;
+ int len_nm, len_cl;
+
+ len_nm = safestrlen(classhint->res_name);
+ len_cl = safestrlen(classhint->res_class);
+ if ((class_string = s = Xmalloc((unsigned) (len_nm + len_cl + 2)))) {
+ if (len_nm) {
+ strcpy(s, classhint->res_name);
+ s += len_nm + 1;
+ }
+ else
+ *s++ = '\0';
+ if (len_cl)
+ strcpy(s, classhint->res_class);
+ else
+ *s = '\0';
+ XChangeProperty(dpy, w, XA_WM_CLASS, XA_STRING, 8,
+ PropModeReplace, (unsigned char *) class_string,
+ len_nm+len_cl+2);
+ Xfree(class_string);
+ }
+ return 1;
+}
diff --git a/libX11/src/SetIFocus.c b/libX11/src/SetIFocus.c
index bee96ca82..44cc30b75 100644
--- a/libX11/src/SetIFocus.c
+++ b/libX11/src/SetIFocus.c
@@ -1,50 +1,50 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetInputFocus(
- register Display *dpy,
- Window focus,
- int revert_to,
- Time time)
-{
- register xSetInputFocusReq *req;
-
- LockDisplay(dpy);
- GetReq(SetInputFocus, req);
- req->focus = focus;
- req->revertTo = revert_to;
- req->time = time;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetInputFocus(
+ register Display *dpy,
+ Window focus,
+ int revert_to,
+ Time time)
+{
+ register xSetInputFocusReq *req;
+
+ LockDisplay(dpy);
+ GetReq(SetInputFocus, req);
+ req->focus = focus;
+ req->revertTo = revert_to;
+ req->time = time;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/SetLStyle.c b/libX11/src/SetLStyle.c
index 8b00fae9c..e730abb6e 100644
--- a/libX11/src/SetLStyle.c
+++ b/libX11/src/SetLStyle.c
@@ -1,63 +1,63 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetLineAttributes(
- register Display *dpy,
- GC gc,
- unsigned int linewidth, /* CARD16 */
- int linestyle,
- int capstyle,
- int joinstyle)
-{
- XGCValues *gv = &gc->values;
-
- LockDisplay(dpy);
- if (linewidth != gv->line_width) {
- gv->line_width = linewidth;
- gc->dirty |= GCLineWidth;
- }
- if (linestyle != gv->line_style) {
- gv->line_style = linestyle;
- gc->dirty |= GCLineStyle;
- }
- if (capstyle != gv->cap_style) {
- gv->cap_style = capstyle;
- gc->dirty |= GCCapStyle;
- }
- if (joinstyle != gv->join_style) {
- gv->join_style = joinstyle;
- gc->dirty |= GCJoinStyle;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetLineAttributes(
+ register Display *dpy,
+ GC gc,
+ unsigned int linewidth, /* CARD16 */
+ int linestyle,
+ int capstyle,
+ int joinstyle)
+{
+ XGCValues *gv = &gc->values;
+
+ LockDisplay(dpy);
+ if (linewidth != gv->line_width) {
+ gv->line_width = linewidth;
+ gc->dirty |= GCLineWidth;
+ }
+ if (linestyle != gv->line_style) {
+ gv->line_style = linestyle;
+ gc->dirty |= GCLineStyle;
+ }
+ if (capstyle != gv->cap_style) {
+ gv->cap_style = capstyle;
+ gc->dirty |= GCCapStyle;
+ }
+ if (joinstyle != gv->join_style) {
+ gv->join_style = joinstyle;
+ gc->dirty |= GCJoinStyle;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetNrmHint.c b/libX11/src/SetNrmHint.c
index 94b447f26..73e3dc742 100644
--- a/libX11/src/SetNrmHint.c
+++ b/libX11/src/SetNrmHint.c
@@ -1,127 +1,127 @@
-
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
-Copyright 1987 by 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 name Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL DIGITAL OR WYSE 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.
-
-******************************************************************/
-/*
-
-Copyright 1987, 1988, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-#include <X11/Xos.h>
-
-void XSetWMSizeHints (
- Display *dpy,
- Window w,
- XSizeHints *hints,
- Atom prop)
-{
- xPropSizeHints data;
-
- memset(&data, 0, sizeof(data));
- data.flags = (hints->flags &
- (USPosition|USSize|PPosition|PSize|PMinSize|PMaxSize|
- PResizeInc|PAspect|PBaseSize|PWinGravity));
-
- /*
- * The x, y, width, and height fields are obsolete; but, applications
- * that want to work with old window managers might set them.
- */
- if (hints->flags & (USPosition|PPosition)) {
- data.x = hints->x;
- data.y = hints->y;
- }
- if (hints->flags & (USSize|PSize)) {
- data.width = hints->width;
- data.height = hints->height;
- }
-
- if (hints->flags & PMinSize) {
- data.minWidth = hints->min_width;
- data.minHeight = hints->min_height;
- }
- if (hints->flags & PMaxSize) {
- data.maxWidth = hints->max_width;
- data.maxHeight = hints->max_height;
- }
- if (hints->flags & PResizeInc) {
- data.widthInc = hints->width_inc;
- data.heightInc = hints->height_inc;
- }
- if (hints->flags & PAspect) {
- data.minAspectX = hints->min_aspect.x;
- data.minAspectY = hints->min_aspect.y;
- data.maxAspectX = hints->max_aspect.x;
- data.maxAspectY = hints->max_aspect.y;
- }
- if (hints->flags & PBaseSize) {
- data.baseWidth = hints->base_width;
- data.baseHeight = hints->base_height;
- }
- if (hints->flags & PWinGravity) {
- data.winGravity = hints->win_gravity;
- }
-
- XChangeProperty (dpy, w, prop, XA_WM_SIZE_HINTS, 32,
- PropModeReplace, (unsigned char *) &data,
- NumPropSizeElements);
-}
-
-
-void XSetWMNormalHints (
- Display *dpy,
- Window w,
- XSizeHints *hints)
-{
- XSetWMSizeHints (dpy, w, hints, XA_WM_NORMAL_HINTS);
-}
-
+
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
+Copyright 1987 by 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 name Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL DIGITAL OR WYSE 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.
+
+******************************************************************/
+/*
+
+Copyright 1987, 1988, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+#include <X11/Xos.h>
+
+void XSetWMSizeHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints,
+ Atom prop)
+{
+ xPropSizeHints data;
+
+ memset(&data, 0, sizeof(data));
+ data.flags = (hints->flags &
+ (USPosition|USSize|PPosition|PSize|PMinSize|PMaxSize|
+ PResizeInc|PAspect|PBaseSize|PWinGravity));
+
+ /*
+ * The x, y, width, and height fields are obsolete; but, applications
+ * that want to work with old window managers might set them.
+ */
+ if (hints->flags & (USPosition|PPosition)) {
+ data.x = hints->x;
+ data.y = hints->y;
+ }
+ if (hints->flags & (USSize|PSize)) {
+ data.width = hints->width;
+ data.height = hints->height;
+ }
+
+ if (hints->flags & PMinSize) {
+ data.minWidth = hints->min_width;
+ data.minHeight = hints->min_height;
+ }
+ if (hints->flags & PMaxSize) {
+ data.maxWidth = hints->max_width;
+ data.maxHeight = hints->max_height;
+ }
+ if (hints->flags & PResizeInc) {
+ data.widthInc = hints->width_inc;
+ data.heightInc = hints->height_inc;
+ }
+ if (hints->flags & PAspect) {
+ data.minAspectX = hints->min_aspect.x;
+ data.minAspectY = hints->min_aspect.y;
+ data.maxAspectX = hints->max_aspect.x;
+ data.maxAspectY = hints->max_aspect.y;
+ }
+ if (hints->flags & PBaseSize) {
+ data.baseWidth = hints->base_width;
+ data.baseHeight = hints->base_height;
+ }
+ if (hints->flags & PWinGravity) {
+ data.winGravity = hints->win_gravity;
+ }
+
+ XChangeProperty (dpy, w, prop, XA_WM_SIZE_HINTS, 32,
+ PropModeReplace, (unsigned char *) &data,
+ NumPropSizeElements);
+}
+
+
+void XSetWMNormalHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints)
+{
+ XSetWMSizeHints (dpy, w, hints, XA_WM_NORMAL_HINTS);
+}
+
diff --git a/libX11/src/SetPMask.c b/libX11/src/SetPMask.c
index 9f236b00b..42659da3e 100644
--- a/libX11/src/SetPMask.c
+++ b/libX11/src/SetPMask.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetPlaneMask (
- register Display *dpy,
- GC gc,
- unsigned long planemask) /* CARD32 */
-{
- LockDisplay(dpy);
- if (gc->values.plane_mask != planemask) {
- gc->values.plane_mask = planemask;
- gc->dirty |= GCPlaneMask;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetPlaneMask (
+ register Display *dpy,
+ GC gc,
+ unsigned long planemask) /* CARD32 */
+{
+ LockDisplay(dpy);
+ if (gc->values.plane_mask != planemask) {
+ gc->values.plane_mask = planemask;
+ gc->dirty |= GCPlaneMask;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetRGBCMap.c b/libX11/src/SetRGBCMap.c
index d2cbb5b5b..8acf98d6f 100644
--- a/libX11/src/SetRGBCMap.c
+++ b/libX11/src/SetRGBCMap.c
@@ -1,100 +1,100 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-
-void XSetRGBColormaps (
- Display *dpy,
- Window w,
- XStandardColormap *cmaps,
- int count,
- Atom property) /* XA_RGB_BEST_MAP, etc. */
-{
- register int i; /* iterator variable */
- register xPropStandardColormap *map; /* tmp variable, data in prop */
- register XStandardColormap *cmap; /* tmp variable, user data */
- xPropStandardColormap *data, tmpdata; /* scratch data */
- int mode = PropModeReplace; /* for partial writes */
- Bool alloced_scratch_space; /* do we need to free? */
-
-
- if (count < 1) return;
-
- /*
- * if doing more than one, allocate scratch space for it
- */
- if ((count > 1) && ((data = ((xPropStandardColormap *)
- Xmalloc(count*sizeof(xPropStandardColormap))))
- != NULL)) {
- alloced_scratch_space = True;
- } else {
- data = &tmpdata;
- alloced_scratch_space = False;
- }
-
-
- /*
- * Do the iteration. If using temp space put out each part of the prop;
- * otherwise, wait until the end and blast it all at once.
- */
- for (i = count, map = data, cmap = cmaps; i > 0; i--, cmap++) {
- map->colormap = cmap->colormap;
- map->red_max = cmap->red_max;
- map->red_mult = cmap->red_mult;
- map->green_max = cmap->green_max;
- map->green_mult = cmap->green_mult;
- map->blue_max = cmap->blue_max;
- map->blue_mult = cmap->blue_mult;
- map->base_pixel = cmap->base_pixel;
- map->visualid = cmap->visualid;
- map->killid = cmap->killid;
-
- if (alloced_scratch_space) {
- map++;
- } else {
- XChangeProperty (dpy, w, property, XA_RGB_COLOR_MAP, 32, mode,
- (unsigned char *) data,
- NumPropStandardColormapElements);
- mode = PropModeAppend;
- }
- }
-
- if (alloced_scratch_space) {
- XChangeProperty (dpy, w, property, XA_RGB_COLOR_MAP, 32,
- PropModeReplace, (unsigned char *) data,
- (int) (count * NumPropStandardColormapElements));
- Xfree ((char *) data);
- }
-}
+/*
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+
+void XSetRGBColormaps (
+ Display *dpy,
+ Window w,
+ XStandardColormap *cmaps,
+ int count,
+ Atom property) /* XA_RGB_BEST_MAP, etc. */
+{
+ register int i; /* iterator variable */
+ register xPropStandardColormap *map; /* tmp variable, data in prop */
+ register XStandardColormap *cmap; /* tmp variable, user data */
+ xPropStandardColormap *data, tmpdata; /* scratch data */
+ int mode = PropModeReplace; /* for partial writes */
+ Bool alloced_scratch_space; /* do we need to free? */
+
+
+ if (count < 1) return;
+
+ /*
+ * if doing more than one, allocate scratch space for it
+ */
+ if ((count > 1) && ((data = ((xPropStandardColormap *)
+ Xmalloc(count*sizeof(xPropStandardColormap))))
+ != NULL)) {
+ alloced_scratch_space = True;
+ } else {
+ data = &tmpdata;
+ alloced_scratch_space = False;
+ }
+
+
+ /*
+ * Do the iteration. If using temp space put out each part of the prop;
+ * otherwise, wait until the end and blast it all at once.
+ */
+ for (i = count, map = data, cmap = cmaps; i > 0; i--, cmap++) {
+ map->colormap = cmap->colormap;
+ map->red_max = cmap->red_max;
+ map->red_mult = cmap->red_mult;
+ map->green_max = cmap->green_max;
+ map->green_mult = cmap->green_mult;
+ map->blue_max = cmap->blue_max;
+ map->blue_mult = cmap->blue_mult;
+ map->base_pixel = cmap->base_pixel;
+ map->visualid = cmap->visualid;
+ map->killid = cmap->killid;
+
+ if (alloced_scratch_space) {
+ map++;
+ } else {
+ XChangeProperty (dpy, w, property, XA_RGB_COLOR_MAP, 32, mode,
+ (unsigned char *) data,
+ NumPropStandardColormapElements);
+ mode = PropModeAppend;
+ }
+ }
+
+ if (alloced_scratch_space) {
+ XChangeProperty (dpy, w, property, XA_RGB_COLOR_MAP, 32,
+ PropModeReplace, (unsigned char *) data,
+ (int) (count * NumPropStandardColormapElements));
+ Xfree ((char *) data);
+ }
+}
diff --git a/libX11/src/SetSOwner.c b/libX11/src/SetSOwner.c
index bc8f56403..c521ab714 100644
--- a/libX11/src/SetSOwner.c
+++ b/libX11/src/SetSOwner.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetSelectionOwner(
- register Display *dpy,
- Atom selection,
- Window owner,
- Time time)
-{
- register xSetSelectionOwnerReq *req;
-
- LockDisplay(dpy);
- GetReq(SetSelectionOwner,req);
- req->selection = selection;
- req->window = owner;
- req->time = time;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetSelectionOwner(
+ register Display *dpy,
+ Atom selection,
+ Window owner,
+ Time time)
+{
+ register xSetSelectionOwnerReq *req;
+
+ LockDisplay(dpy);
+ GetReq(SetSelectionOwner,req);
+ req->selection = selection;
+ req->window = owner;
+ req->time = time;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetSSaver.c b/libX11/src/SetSSaver.c
index adce749e1..1a3b85c96 100644
--- a/libX11/src/SetSSaver.c
+++ b/libX11/src/SetSSaver.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetScreenSaver(
- register Display *dpy,
- int timeout,
- int interval,
- int prefer_blank,
- int allow_exp)
-
-{
- register xSetScreenSaverReq *req;
-
- LockDisplay(dpy);
- GetReq(SetScreenSaver, req);
- req->timeout = timeout;
- req->interval = interval;
- req->preferBlank = prefer_blank;
- req->allowExpose = allow_exp;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetScreenSaver(
+ register Display *dpy,
+ int timeout,
+ int interval,
+ int prefer_blank,
+ int allow_exp)
+
+{
+ register xSetScreenSaverReq *req;
+
+ LockDisplay(dpy);
+ GetReq(SetScreenSaver, req);
+ req->timeout = timeout;
+ req->interval = interval;
+ req->preferBlank = prefer_blank;
+ req->allowExpose = allow_exp;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/SetStCmap.c b/libX11/src/SetStCmap.c
index 8c3ae6e3b..1ed9edba6 100644
--- a/libX11/src/SetStCmap.c
+++ b/libX11/src/SetStCmap.c
@@ -1,95 +1,95 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-
-/*
- * WARNING
- *
- * This is a pre-ICCCM routine. It must not reference any of the new fields
- * in the XStandardColormap structure.
- */
-
-void XSetStandardColormap(
- Display *dpy,
- Window w,
- XStandardColormap *cmap,
- Atom property) /* XA_RGB_BEST_MAP, etc. */
-{
- Screen *sp;
- XStandardColormap stdcmap;
-
- sp = _XScreenOfWindow (dpy, w);
- if (!sp) {
- /* already caught the XGetGeometry error in _XScreenOfWindow */
- return;
- }
-
- stdcmap.colormap = cmap->colormap;
- stdcmap.red_max = cmap->red_max;
- stdcmap.red_mult = cmap->red_mult;
- stdcmap.green_max = cmap->green_max;
- stdcmap.green_mult = cmap->green_mult;
- stdcmap.blue_max = cmap->blue_max;
- stdcmap.blue_mult = cmap->blue_mult;
- stdcmap.base_pixel = cmap->base_pixel;
- stdcmap.visualid = sp->root_visual->visualid;
- stdcmap.killid = None; /* don't know how to kill this one */
-
-#ifdef XCMS
- XSetRGBColormaps (dpy, w, &stdcmap, 1, property);
-#endif
-
- return;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+
+/*
+ * WARNING
+ *
+ * This is a pre-ICCCM routine. It must not reference any of the new fields
+ * in the XStandardColormap structure.
+ */
+
+void XSetStandardColormap(
+ Display *dpy,
+ Window w,
+ XStandardColormap *cmap,
+ Atom property) /* XA_RGB_BEST_MAP, etc. */
+{
+ Screen *sp;
+ XStandardColormap stdcmap;
+
+ sp = _XScreenOfWindow (dpy, w);
+ if (!sp) {
+ /* already caught the XGetGeometry error in _XScreenOfWindow */
+ return;
+ }
+
+ stdcmap.colormap = cmap->colormap;
+ stdcmap.red_max = cmap->red_max;
+ stdcmap.red_mult = cmap->red_mult;
+ stdcmap.green_max = cmap->green_max;
+ stdcmap.green_mult = cmap->green_mult;
+ stdcmap.blue_max = cmap->blue_max;
+ stdcmap.blue_mult = cmap->blue_mult;
+ stdcmap.base_pixel = cmap->base_pixel;
+ stdcmap.visualid = sp->root_visual->visualid;
+ stdcmap.killid = None; /* don't know how to kill this one */
+
+#ifdef XCMS
+ XSetRGBColormaps (dpy, w, &stdcmap, 1, property);
+#endif
+
+ return;
+}
diff --git a/libX11/src/SetState.c b/libX11/src/SetState.c
index e5aa21c05..7f51518f6 100644
--- a/libX11/src/SetState.c
+++ b/libX11/src/SetState.c
@@ -1,64 +1,64 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetState(
- register Display *dpy,
- GC gc,
- unsigned long foreground,
- unsigned long background,
- int function,
- unsigned long planemask)
-{
- XGCValues *gv = &gc->values;
-
- LockDisplay(dpy);
-
- if (function != gv->function) {
- gv->function = function;
- gc->dirty |= GCFunction;
- }
- if (planemask != gv->plane_mask) {
- gv->plane_mask = planemask;
- gc->dirty |= GCPlaneMask;
- }
- if (foreground != gv->foreground) {
- gv->foreground = foreground;
- gc->dirty |= GCForeground;
- }
- if (background != gv->background) {
- gv->background = background;
- gc->dirty |= GCBackground;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetState(
+ register Display *dpy,
+ GC gc,
+ unsigned long foreground,
+ unsigned long background,
+ int function,
+ unsigned long planemask)
+{
+ XGCValues *gv = &gc->values;
+
+ LockDisplay(dpy);
+
+ if (function != gv->function) {
+ gv->function = function;
+ gc->dirty |= GCFunction;
+ }
+ if (planemask != gv->plane_mask) {
+ gv->plane_mask = planemask;
+ gc->dirty |= GCPlaneMask;
+ }
+ if (foreground != gv->foreground) {
+ gv->foreground = foreground;
+ gc->dirty |= GCForeground;
+ }
+ if (background != gv->background) {
+ gv->background = background;
+ gc->dirty |= GCBackground;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetStip.c b/libX11/src/SetStip.c
index e95882786..752cc7ec6 100644
--- a/libX11/src/SetStip.c
+++ b/libX11/src/SetStip.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetStipple (
- register Display *dpy,
- GC gc,
- Pixmap stipple)
-{
- LockDisplay(dpy);
- /* always update, since client may have changed pixmap contents */
- gc->values.stipple = stipple;
- gc->dirty |= GCStipple;
- _XFlushGCCache(dpy, gc);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetStipple (
+ register Display *dpy,
+ GC gc,
+ Pixmap stipple)
+{
+ LockDisplay(dpy);
+ /* always update, since client may have changed pixmap contents */
+ gc->values.stipple = stipple;
+ gc->dirty |= GCStipple;
+ _XFlushGCCache(dpy, gc);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetTSOrig.c b/libX11/src/SetTSOrig.c
index 0117c818b..7259a7f61 100644
--- a/libX11/src/SetTSOrig.c
+++ b/libX11/src/SetTSOrig.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetTSOrigin (
- register Display *dpy,
- GC gc,
- int x,
- int y)
-{
- XGCValues *gv = &gc->values;
-
- LockDisplay(dpy);
- if (x != gv->ts_x_origin) {
- gv->ts_x_origin = x;
- gc->dirty |= GCTileStipXOrigin;
- }
- if (y != gv->ts_y_origin) {
- gv->ts_y_origin = y;
- gc->dirty |= GCTileStipYOrigin;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetTSOrigin (
+ register Display *dpy,
+ GC gc,
+ int x,
+ int y)
+{
+ XGCValues *gv = &gc->values;
+
+ LockDisplay(dpy);
+ if (x != gv->ts_x_origin) {
+ gv->ts_x_origin = x;
+ gc->dirty |= GCTileStipXOrigin;
+ }
+ if (y != gv->ts_y_origin) {
+ gv->ts_y_origin = y;
+ gc->dirty |= GCTileStipYOrigin;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetTile.c b/libX11/src/SetTile.c
index d32edff06..32b91ffa0 100644
--- a/libX11/src/SetTile.c
+++ b/libX11/src/SetTile.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetTile (
- register Display *dpy,
- GC gc,
- Pixmap tile)
-{
- LockDisplay(dpy);
- /* always update, since client may have changed pixmap contents */
- gc->values.tile = tile;
- gc->dirty |= GCTile;
- _XFlushGCCache(dpy, gc);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetTile (
+ register Display *dpy,
+ GC gc,
+ Pixmap tile)
+{
+ LockDisplay(dpy);
+ /* always update, since client may have changed pixmap contents */
+ gc->values.tile = tile;
+ gc->dirty |= GCTile;
+ _XFlushGCCache(dpy, gc);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetTxtProp.c b/libX11/src/SetTxtProp.c
index 48689bcf1..55de0b96f 100644
--- a/libX11/src/SetTxtProp.c
+++ b/libX11/src/SetTxtProp.c
@@ -1,93 +1,93 @@
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.
-
- 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 name of Wyse not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-/*
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/Xos.h>
-#include <stdio.h>
-
-void XSetTextProperty (
- Display *dpy,
- Window w,
- XTextProperty *tp,
- Atom property)
-{
- XChangeProperty (dpy, w, property, tp->encoding, tp->format,
- PropModeReplace, tp->value, tp->nitems);
-}
-
-void XSetWMName (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- XSetTextProperty (dpy, w, tp, XA_WM_NAME);
-}
-
-void XSetWMIconName (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- XSetTextProperty (dpy, w, tp, XA_WM_ICON_NAME);
-}
-
-void XSetWMClientMachine (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- XSetTextProperty (dpy, w, tp, XA_WM_CLIENT_MACHINE);
-}
-
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.
+
+ 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 name of Wyse not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+/*
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include <X11/Xos.h>
+#include <stdio.h>
+
+void XSetTextProperty (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp,
+ Atom property)
+{
+ XChangeProperty (dpy, w, property, tp->encoding, tp->format,
+ PropModeReplace, tp->value, tp->nitems);
+}
+
+void XSetWMName (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ XSetTextProperty (dpy, w, tp, XA_WM_NAME);
+}
+
+void XSetWMIconName (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ XSetTextProperty (dpy, w, tp, XA_WM_ICON_NAME);
+}
+
+void XSetWMClientMachine (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ XSetTextProperty (dpy, w, tp, XA_WM_CLIENT_MACHINE);
+}
+
diff --git a/libX11/src/SetWMCMapW.c b/libX11/src/SetWMCMapW.c
index a323912e7..ae772b307 100644
--- a/libX11/src/SetWMCMapW.c
+++ b/libX11/src/SetWMCMapW.c
@@ -1,74 +1,74 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xatom.h>
-
-/*
- * XSetWMProtocols sets the property
- * WM_COLORMAP_WINDOWS type: WINDOW format:32
- */
-
-Status XSetWMColormapWindows (
- Display *dpy,
- Window w,
- Window *windows,
- int count)
-{
- Atom prop;
-
- prop = XInternAtom (dpy, "WM_COLORMAP_WINDOWS", False);
- if (prop == None) return False;
-
- XChangeProperty (dpy, w, prop, XA_WINDOW, 32,
- PropModeReplace, (unsigned char *) windows, count);
- return True;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xatom.h>
+
+/*
+ * XSetWMProtocols sets the property
+ * WM_COLORMAP_WINDOWS type: WINDOW format:32
+ */
+
+Status XSetWMColormapWindows (
+ Display *dpy,
+ Window w,
+ Window *windows,
+ int count)
+{
+ Atom prop;
+
+ prop = XInternAtom (dpy, "WM_COLORMAP_WINDOWS", False);
+ if (prop == None) return False;
+
+ XChangeProperty (dpy, w, prop, XA_WINDOW, 32,
+ PropModeReplace, (unsigned char *) windows, count);
+ return True;
+}
diff --git a/libX11/src/SetWMProto.c b/libX11/src/SetWMProto.c
index 700e13e8e..5f3185ce1 100644
--- a/libX11/src/SetWMProto.c
+++ b/libX11/src/SetWMProto.c
@@ -1,74 +1,74 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xatom.h>
-
-/*
- * XSetWMProtocols sets the property
- * WM_PROTOCOLS type: ATOM format: 32
- */
-
-Status XSetWMProtocols (
- Display *dpy,
- Window w,
- Atom *protocols,
- int count)
-{
- Atom prop;
-
- prop = XInternAtom (dpy, "WM_PROTOCOLS", False);
- if (prop == None) return False;
-
- XChangeProperty (dpy, w, prop, XA_ATOM, 32,
- PropModeReplace, (unsigned char *) protocols, count);
- return True;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xatom.h>
+
+/*
+ * XSetWMProtocols sets the property
+ * WM_PROTOCOLS type: ATOM format: 32
+ */
+
+Status XSetWMProtocols (
+ Display *dpy,
+ Window w,
+ Atom *protocols,
+ int count)
+{
+ Atom prop;
+
+ prop = XInternAtom (dpy, "WM_PROTOCOLS", False);
+ if (prop == None) return False;
+
+ XChangeProperty (dpy, w, prop, XA_ATOM, 32,
+ PropModeReplace, (unsigned char *) protocols, count);
+ return True;
+}
diff --git a/libX11/src/StBytes.c b/libX11/src/StBytes.c
index 13ac879c5..4f2cc7101 100644
--- a/libX11/src/StBytes.c
+++ b/libX11/src/StBytes.c
@@ -1,107 +1,107 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-
-/* insulate predefined atom numbers from cut routines */
-static const Atom n_to_atom[8] = {
- XA_CUT_BUFFER0,
- XA_CUT_BUFFER1,
- XA_CUT_BUFFER2,
- XA_CUT_BUFFER3,
- XA_CUT_BUFFER4,
- XA_CUT_BUFFER5,
- XA_CUT_BUFFER6,
- XA_CUT_BUFFER7};
-
-int
-XRotateBuffers (
- register Display *dpy,
- int rotate)
-{
- /* XRotateWindowProperties wants a non-const Atom*, but it doesn't
- * modify it, so this is safe.
- */
- return XRotateWindowProperties(dpy, RootWindow(dpy, 0), (Atom *)n_to_atom, 8, rotate);
-}
-
-char *XFetchBuffer (
- register Display *dpy,
- int *nbytes,
- register int buffer)
-{
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- unsigned char *data;
- *nbytes = 0;
- if ((buffer < 0) || (buffer > 7)) return (NULL);
-/* XXX should be (sizeof (maxint) - 1)/4 */
- if (XGetWindowProperty(dpy, RootWindow(dpy, 0), n_to_atom[buffer],
- 0L, 10000000L, False, XA_STRING,
- &actual_type, &actual_format, &nitems, &leftover, &data) != Success) {
- return (NULL);
- }
- if ( (actual_type == XA_STRING) && (actual_format != 32) ) {
- *nbytes = nitems;
- return((char *)data);
- }
- if ((char *) data != NULL) Xfree ((char *)data);
- return(NULL);
-}
-
-char *XFetchBytes (
- register Display *dpy,
- int *nbytes)
-{
- return (XFetchBuffer (dpy, nbytes, 0));
-}
-
-int
-XStoreBuffer (
- register Display *dpy,
- _Xconst char *bytes,
- int nbytes,
- register int buffer)
-{
- if ((buffer < 0) || (buffer > 7)) return 0;
- return XChangeProperty(dpy, RootWindow(dpy, 0), n_to_atom[buffer],
- XA_STRING, 8, PropModeReplace, (unsigned char *) bytes, nbytes);
-}
-
-int
-XStoreBytes (
- register Display *dpy,
- _Xconst char *bytes,
- int nbytes)
-{
- return XStoreBuffer (dpy, bytes, nbytes, 0);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+
+/* insulate predefined atom numbers from cut routines */
+static const Atom n_to_atom[8] = {
+ XA_CUT_BUFFER0,
+ XA_CUT_BUFFER1,
+ XA_CUT_BUFFER2,
+ XA_CUT_BUFFER3,
+ XA_CUT_BUFFER4,
+ XA_CUT_BUFFER5,
+ XA_CUT_BUFFER6,
+ XA_CUT_BUFFER7};
+
+int
+XRotateBuffers (
+ register Display *dpy,
+ int rotate)
+{
+ /* XRotateWindowProperties wants a non-const Atom*, but it doesn't
+ * modify it, so this is safe.
+ */
+ return XRotateWindowProperties(dpy, RootWindow(dpy, 0), (Atom *)n_to_atom, 8, rotate);
+}
+
+char *XFetchBuffer (
+ register Display *dpy,
+ int *nbytes,
+ register int buffer)
+{
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ unsigned char *data;
+ *nbytes = 0;
+ if ((buffer < 0) || (buffer > 7)) return (NULL);
+/* XXX should be (sizeof (maxint) - 1)/4 */
+ if (XGetWindowProperty(dpy, RootWindow(dpy, 0), n_to_atom[buffer],
+ 0L, 10000000L, False, XA_STRING,
+ &actual_type, &actual_format, &nitems, &leftover, &data) != Success) {
+ return (NULL);
+ }
+ if ( (actual_type == XA_STRING) && (actual_format != 32) ) {
+ *nbytes = nitems;
+ return((char *)data);
+ }
+ if ((char *) data != NULL) Xfree ((char *)data);
+ return(NULL);
+}
+
+char *XFetchBytes (
+ register Display *dpy,
+ int *nbytes)
+{
+ return (XFetchBuffer (dpy, nbytes, 0));
+}
+
+int
+XStoreBuffer (
+ register Display *dpy,
+ _Xconst char *bytes,
+ int nbytes,
+ register int buffer)
+{
+ if ((buffer < 0) || (buffer > 7)) return 0;
+ return XChangeProperty(dpy, RootWindow(dpy, 0), n_to_atom[buffer],
+ XA_STRING, 8, PropModeReplace, (unsigned char *) bytes, nbytes);
+}
+
+int
+XStoreBytes (
+ register Display *dpy,
+ _Xconst char *bytes,
+ int nbytes)
+{
+ return XStoreBuffer (dpy, bytes, nbytes, 0);
+}
diff --git a/libX11/src/StColor.c b/libX11/src/StColor.c
index 19f2a4b1a..45a112eb4 100644
--- a/libX11/src/StColor.c
+++ b/libX11/src/StColor.c
@@ -1,70 +1,70 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XStoreColor(
- register Display *dpy,
- Colormap cmap,
- XColor *def)
-{
- xColorItem *citem;
- register xStoreColorsReq *req;
-#ifdef MUSTCOPY
- xColorItem citemdata;
- long len = SIZEOF(xColorItem);
-
- citem = &citemdata;
-#endif /* MUSTCOPY */
-
- LockDisplay(dpy);
- GetReqExtra(StoreColors, SIZEOF(xColorItem), req); /* assume size is 4*n */
-
- req->cmap = cmap;
-
-#ifndef MUSTCOPY
- citem = (xColorItem *) NEXTPTR(req,xStoreColorsReq);
-#endif /* not MUSTCOPY */
-
- citem->pixel = def->pixel;
- citem->red = def->red;
- citem->green = def->green;
- citem->blue = def->blue;
- citem->flags = def->flags; /* do_red, do_green, do_blue */
-
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xColorItem); /* adjust for GetReqExtra */
- Data (dpy, (char *) citem, len);
-#endif /* MUSTCOPY */
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XStoreColor(
+ register Display *dpy,
+ Colormap cmap,
+ XColor *def)
+{
+ xColorItem *citem;
+ register xStoreColorsReq *req;
+#ifdef MUSTCOPY
+ xColorItem citemdata;
+ long len = SIZEOF(xColorItem);
+
+ citem = &citemdata;
+#endif /* MUSTCOPY */
+
+ LockDisplay(dpy);
+ GetReqExtra(StoreColors, SIZEOF(xColorItem), req); /* assume size is 4*n */
+
+ req->cmap = cmap;
+
+#ifndef MUSTCOPY
+ citem = (xColorItem *) NEXTPTR(req,xStoreColorsReq);
+#endif /* not MUSTCOPY */
+
+ citem->pixel = def->pixel;
+ citem->red = def->red;
+ citem->green = def->green;
+ citem->blue = def->blue;
+ citem->flags = def->flags; /* do_red, do_green, do_blue */
+
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xColorItem); /* adjust for GetReqExtra */
+ Data (dpy, (char *) citem, len);
+#endif /* MUSTCOPY */
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/StColors.c b/libX11/src/StColors.c
index 17a215cc0..d281f6965 100644
--- a/libX11/src/StColors.c
+++ b/libX11/src/StColors.c
@@ -1,65 +1,65 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XStoreColors(
- register Display *dpy,
- Colormap cmap,
- XColor *defs,
- int ncolors)
-{
- register int i;
- xColorItem citem;
- register xStoreColorsReq *req;
-
- LockDisplay(dpy);
- GetReq(StoreColors, req);
-
- req->cmap = cmap;
-
- req->length += (ncolors * SIZEOF(xColorItem)) >> 2; /* assume size is 4*n */
-
- for (i = 0; i < ncolors; i++) {
- citem.pixel = defs[i].pixel;
- citem.red = defs[i].red;
- citem.green = defs[i].green;
- citem.blue = defs[i].blue;
- citem.flags = defs[i].flags;
-
- /* note that xColorItem doesn't contain all 16-bit quantities, so
- we can't use Data16 */
- Data(dpy, (char *)&citem, (long) SIZEOF(xColorItem));
- /* assume size is 4*n */
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XStoreColors(
+ register Display *dpy,
+ Colormap cmap,
+ XColor *defs,
+ int ncolors)
+{
+ register int i;
+ xColorItem citem;
+ register xStoreColorsReq *req;
+
+ LockDisplay(dpy);
+ GetReq(StoreColors, req);
+
+ req->cmap = cmap;
+
+ req->length += (ncolors * SIZEOF(xColorItem)) >> 2; /* assume size is 4*n */
+
+ for (i = 0; i < ncolors; i++) {
+ citem.pixel = defs[i].pixel;
+ citem.red = defs[i].red;
+ citem.green = defs[i].green;
+ citem.blue = defs[i].blue;
+ citem.flags = defs[i].flags;
+
+ /* note that xColorItem doesn't contain all 16-bit quantities, so
+ we can't use Data16 */
+ Data(dpy, (char *)&citem, (long) SIZEOF(xColorItem));
+ /* assume size is 4*n */
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/StNColor.c b/libX11/src/StNColor.c
index 8b821c3ef..77a385e7f 100644
--- a/libX11/src/StNColor.c
+++ b/libX11/src/StNColor.c
@@ -1,87 +1,87 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-
-
-int
-XStoreNamedColor(
-register Display *dpy,
-Colormap cmap,
-_Xconst char *name, /* STRING8 */
-unsigned long pixel, /* CARD32 */
-int flags) /* DoRed, DoGreen, DoBlue */
-{
- unsigned int nbytes;
- register xStoreNamedColorReq *req;
- XcmsCCC ccc;
- XcmsColor cmsColor_exact;
- XColor scr_def;
-
-#ifdef XCMS
- /*
- * Let's Attempt to use Xcms approach to Parse Color
- */
- if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
- if (_XcmsResolveColorString(ccc, &name, &cmsColor_exact,
- XcmsRGBFormat) >= XcmsSuccess) {
- _XcmsRGB_to_XColor(&cmsColor_exact, &scr_def, 1);
- scr_def.pixel = pixel;
- scr_def.flags = flags;
- return XStoreColor(dpy, cmap, &scr_def);
- }
- /*
- * Otherwise we failed; or name was changed with yet another
- * name. Thus pass name to the X Server.
- */
- }
-#endif
-
- /*
- * The Xcms and i18n methods failed, so lets pass it to the server
- * for parsing.
- */
-
- LockDisplay(dpy);
- GetReq(StoreNamedColor, req);
-
- req->cmap = cmap;
- req->flags = flags;
- req->pixel = pixel;
- req->nbytes = nbytes = strlen(name);
- req->length += (nbytes + 3) >> 2; /* round up to multiple of 4 */
- Data(dpy, name, (long)nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
-}
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+
+
+int
+XStoreNamedColor(
+register Display *dpy,
+Colormap cmap,
+_Xconst char *name, /* STRING8 */
+unsigned long pixel, /* CARD32 */
+int flags) /* DoRed, DoGreen, DoBlue */
+{
+ unsigned int nbytes;
+ register xStoreNamedColorReq *req;
+ XcmsCCC ccc;
+ XcmsColor cmsColor_exact;
+ XColor scr_def;
+
+#ifdef XCMS
+ /*
+ * Let's Attempt to use Xcms approach to Parse Color
+ */
+ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
+ if (_XcmsResolveColorString(ccc, &name, &cmsColor_exact,
+ XcmsRGBFormat) >= XcmsSuccess) {
+ _XcmsRGB_to_XColor(&cmsColor_exact, &scr_def, 1);
+ scr_def.pixel = pixel;
+ scr_def.flags = flags;
+ return XStoreColor(dpy, cmap, &scr_def);
+ }
+ /*
+ * Otherwise we failed; or name was changed with yet another
+ * name. Thus pass name to the X Server.
+ */
+ }
+#endif
+
+ /*
+ * The Xcms and i18n methods failed, so lets pass it to the server
+ * for parsing.
+ */
+
+ LockDisplay(dpy);
+ GetReq(StoreNamedColor, req);
+
+ req->cmap = cmap;
+ req->flags = flags;
+ req->pixel = pixel;
+ req->nbytes = nbytes = strlen(name);
+ req->length += (nbytes + 3) >> 2; /* round up to multiple of 4 */
+ Data(dpy, name, (long)nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+}
+
+
diff --git a/libX11/src/StName.c b/libX11/src/StName.c
index fb1e6f5e1..624868ebb 100644
--- a/libX11/src/StName.c
+++ b/libX11/src/StName.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-
-int
-XStoreName (
- register Display *dpy,
- Window w,
- _Xconst char *name)
-{
- return XChangeProperty(dpy, w, XA_WM_NAME, XA_STRING,
- 8, PropModeReplace, (unsigned char *)name,
- name ? strlen(name) : 0);
-}
-
-int
-XSetIconName (
- register Display *dpy,
- Window w,
- _Xconst char *icon_name)
-{
- return XChangeProperty(dpy, w, XA_WM_ICON_NAME, XA_STRING,
- 8, PropModeReplace, (unsigned char *)icon_name,
- icon_name ? strlen(icon_name) : 0);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+
+int
+XStoreName (
+ register Display *dpy,
+ Window w,
+ _Xconst char *name)
+{
+ return XChangeProperty(dpy, w, XA_WM_NAME, XA_STRING,
+ 8, PropModeReplace, (unsigned char *)name,
+ name ? strlen(name) : 0);
+}
+
+int
+XSetIconName (
+ register Display *dpy,
+ Window w,
+ _Xconst char *icon_name)
+{
+ return XChangeProperty(dpy, w, XA_WM_ICON_NAME, XA_STRING,
+ 8, PropModeReplace, (unsigned char *)icon_name,
+ icon_name ? strlen(icon_name) : 0);
+}
diff --git a/libX11/src/StrToText.c b/libX11/src/StrToText.c
index b5327e8fc..c65f96e95 100644
--- a/libX11/src/StrToText.c
+++ b/libX11/src/StrToText.c
@@ -1,90 +1,90 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-
-/*
- * XStringListToTextProperty - fill in TextProperty structure with
- * concatenated list of null-separated strings. Return True if successful
- * else False. Allocate room on end for trailing NULL, but don't include in
- * count.
- */
-
-Status XStringListToTextProperty (
- char **argv,
- int argc,
- XTextProperty *textprop)
-{
- register int i;
- register unsigned int nbytes;
- XTextProperty proto;
-
- /* figure out how much space we'll need for this list */
- for (i = 0, nbytes = 0; i < argc; i++) {
- nbytes += (unsigned) ((argv[i] ? strlen (argv[i]) : 0) + 1);
- }
-
- /* fill in a prototype containing results so far */
- proto.encoding = XA_STRING;
- proto.format = 8;
- if (nbytes)
- proto.nitems = nbytes - 1; /* subtract one for trailing <NUL> */
- else
- proto.nitems = 0;
- proto.value = NULL;
-
- /* build concatenated list of strings */
- if (nbytes > 0) {
- register char *buf = Xmalloc (nbytes);
- if (!buf) return False;
-
- proto.value = (unsigned char *) buf;
- for (i = 0; i < argc; i++) {
- char *arg = argv[i];
-
- if (arg) {
- (void) strcpy (buf, arg);
- buf += (strlen (arg) + 1);
- } else {
- *buf++ = '\0';
- }
- }
- } else {
- proto.value = (unsigned char *) Xmalloc (1); /* easier for client */
- if (!proto.value) return False;
-
- proto.value[0] = '\0';
- }
-
- /* we were successful, so set return value */
- *textprop = proto;
- return True;
-}
+/*
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+/*
+ * XStringListToTextProperty - fill in TextProperty structure with
+ * concatenated list of null-separated strings. Return True if successful
+ * else False. Allocate room on end for trailing NULL, but don't include in
+ * count.
+ */
+
+Status XStringListToTextProperty (
+ char **argv,
+ int argc,
+ XTextProperty *textprop)
+{
+ register int i;
+ register unsigned int nbytes;
+ XTextProperty proto;
+
+ /* figure out how much space we'll need for this list */
+ for (i = 0, nbytes = 0; i < argc; i++) {
+ nbytes += (unsigned) ((argv[i] ? strlen (argv[i]) : 0) + 1);
+ }
+
+ /* fill in a prototype containing results so far */
+ proto.encoding = XA_STRING;
+ proto.format = 8;
+ if (nbytes)
+ proto.nitems = nbytes - 1; /* subtract one for trailing <NUL> */
+ else
+ proto.nitems = 0;
+ proto.value = NULL;
+
+ /* build concatenated list of strings */
+ if (nbytes > 0) {
+ register char *buf = Xmalloc (nbytes);
+ if (!buf) return False;
+
+ proto.value = (unsigned char *) buf;
+ for (i = 0; i < argc; i++) {
+ char *arg = argv[i];
+
+ if (arg) {
+ (void) strcpy (buf, arg);
+ buf += (strlen (arg) + 1);
+ } else {
+ *buf++ = '\0';
+ }
+ }
+ } else {
+ proto.value = (unsigned char *) Xmalloc (1); /* easier for client */
+ if (!proto.value) return False;
+
+ proto.value[0] = '\0';
+ }
+
+ /* we were successful, so set return value */
+ *textprop = proto;
+ return True;
+}
diff --git a/libX11/src/Synchro.c b/libX11/src/Synchro.c
index 930448ee9..7b5ab8331 100644
--- a/libX11/src/Synchro.c
+++ b/libX11/src/Synchro.c
@@ -1,79 +1,79 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-
-static int _XSyncFunction(register Display *dpy)
-{
- XSync(dpy,0);
- return 0;
-}
-
-int (*XSynchronize(Display *dpy, int onoff))(Display *)
-{
- int (*temp)(Display *);
- int (*func)(Display *) = NULL;
-
- if (onoff)
- func = _XSyncFunction;
-
- LockDisplay(dpy);
- if (dpy->flags & XlibDisplayPrivSync) {
- temp = dpy->savedsynchandler;
- dpy->savedsynchandler = func;
- } else {
- temp = dpy->synchandler;
- dpy->synchandler = func;
- }
- UnlockDisplay(dpy);
- return (temp);
-}
-
-int (*XSetAfterFunction(
- Display *dpy,
- int (*func)(
- Display*
- )
- ))(Display *)
-{
- int (*temp)(Display *);
-
- LockDisplay(dpy);
- if (dpy->flags & XlibDisplayPrivSync) {
- temp = dpy->savedsynchandler;
- dpy->savedsynchandler = func;
- } else {
- temp = dpy->synchandler;
- dpy->synchandler = func;
- }
- UnlockDisplay(dpy);
- return (temp);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+
+static int _XSyncFunction(register Display *dpy)
+{
+ XSync(dpy,0);
+ return 0;
+}
+
+int (*XSynchronize(Display *dpy, int onoff))(Display *)
+{
+ int (*temp)(Display *);
+ int (*func)(Display *) = NULL;
+
+ if (onoff)
+ func = _XSyncFunction;
+
+ LockDisplay(dpy);
+ if (dpy->flags & XlibDisplayPrivSync) {
+ temp = dpy->savedsynchandler;
+ dpy->savedsynchandler = func;
+ } else {
+ temp = dpy->synchandler;
+ dpy->synchandler = func;
+ }
+ UnlockDisplay(dpy);
+ return (temp);
+}
+
+int (*XSetAfterFunction(
+ Display *dpy,
+ int (*func)(
+ Display*
+ )
+ ))(Display *)
+{
+ int (*temp)(Display *);
+
+ LockDisplay(dpy);
+ if (dpy->flags & XlibDisplayPrivSync) {
+ temp = dpy->savedsynchandler;
+ dpy->savedsynchandler = func;
+ } else {
+ temp = dpy->synchandler;
+ dpy->synchandler = func;
+ }
+ UnlockDisplay(dpy);
+ return (temp);
+}
+
diff --git a/libX11/src/Text.c b/libX11/src/Text.c
index 223b1cf8b..6a4479ee5 100644
--- a/libX11/src/Text.c
+++ b/libX11/src/Text.c
@@ -1,139 +1,139 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawString(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- _Xconst char *string,
- int length)
-{
- int Datalength = 0;
- register xPolyText8Req *req;
-
- if (length <= 0)
- return 0;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq (PolyText8, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->x = x;
- req->y = y;
-
-
- Datalength += SIZEOF(xTextElt) * ((length + 253) / 254) + length;
-
-
- req->length += (Datalength + 3)>>2; /* convert to number of 32-bit words */
-
-
- /*
- * If the entire request does not fit into the remaining space in the
- * buffer, flush the buffer first. If the request does fit into the
- * empty buffer, then we won't have to flush it at the end to keep
- * the buffer 32-bit aligned.
- */
-
- if (dpy->bufptr + Datalength > dpy->bufmax)
- _XFlush (dpy);
-
- {
- int nbytes;
- int PartialNChars = length;
- /* register xTextElt *elt; */
- char *CharacterOffset = (char *)string;
- unsigned char *tbuf;
-
- while(PartialNChars > 254)
- {
- nbytes = 254 + SIZEOF(xTextElt);
- BufAlloc (unsigned char *, tbuf, nbytes);
-/* elt->delta = 0;
- * elt->len = 254;
- */
- *(unsigned char *)tbuf = 254;
- *(tbuf+1) = 0;
-/* memcpy ((char *) (elt + 1), CharacterOffset, 254);
- */
- memcpy ((char *)tbuf+2, CharacterOffset, 254);
- PartialNChars = PartialNChars - 254;
- CharacterOffset += 254;
- }
-
- if (PartialNChars)
- {
- nbytes = PartialNChars + SIZEOF(xTextElt);
- BufAlloc (unsigned char *, tbuf, nbytes);
-/* elt->delta = 0;
- * elt->len = PartialNChars;
- */
- *(unsigned char *)tbuf = PartialNChars;
- *(tbuf+1) = 0;
-/* memcpy ((char *) (elt + 1), CharacterOffset, PartialNChars);
- */
- memcpy ((char *)tbuf+2, CharacterOffset, PartialNChars);
- }
- }
-
- /* Pad request out to a 32-bit boundary */
-
- if (Datalength &= 3) {
- char *pad;
- /*
- * BufAlloc is a macro that uses its last argument more than
- * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
- */
- length = 4 - Datalength;
- BufAlloc (char *, pad, length);
- /*
- * if there are 3 bytes of padding, the first byte MUST be 0
- * so the pad bytes aren't mistaken for a final xTextElt
- */
- *pad = 0;
- }
-
- /*
- * If the buffer pointer is not now pointing to a 32-bit boundary,
- * we must flush the buffer so that it does point to a 32-bit boundary
- * at the end of this routine.
- */
-
- if ((dpy->bufptr - dpy->buffer) & 3)
- _XFlush (dpy);
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawString(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *string,
+ int length)
+{
+ int Datalength = 0;
+ register xPolyText8Req *req;
+
+ if (length <= 0)
+ return 0;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq (PolyText8, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->x = x;
+ req->y = y;
+
+
+ Datalength += SIZEOF(xTextElt) * ((length + 253) / 254) + length;
+
+
+ req->length += (Datalength + 3)>>2; /* convert to number of 32-bit words */
+
+
+ /*
+ * If the entire request does not fit into the remaining space in the
+ * buffer, flush the buffer first. If the request does fit into the
+ * empty buffer, then we won't have to flush it at the end to keep
+ * the buffer 32-bit aligned.
+ */
+
+ if (dpy->bufptr + Datalength > dpy->bufmax)
+ _XFlush (dpy);
+
+ {
+ int nbytes;
+ int PartialNChars = length;
+ /* register xTextElt *elt; */
+ char *CharacterOffset = (char *)string;
+ unsigned char *tbuf;
+
+ while(PartialNChars > 254)
+ {
+ nbytes = 254 + SIZEOF(xTextElt);
+ BufAlloc (unsigned char *, tbuf, nbytes);
+/* elt->delta = 0;
+ * elt->len = 254;
+ */
+ *(unsigned char *)tbuf = 254;
+ *(tbuf+1) = 0;
+/* memcpy ((char *) (elt + 1), CharacterOffset, 254);
+ */
+ memcpy ((char *)tbuf+2, CharacterOffset, 254);
+ PartialNChars = PartialNChars - 254;
+ CharacterOffset += 254;
+ }
+
+ if (PartialNChars)
+ {
+ nbytes = PartialNChars + SIZEOF(xTextElt);
+ BufAlloc (unsigned char *, tbuf, nbytes);
+/* elt->delta = 0;
+ * elt->len = PartialNChars;
+ */
+ *(unsigned char *)tbuf = PartialNChars;
+ *(tbuf+1) = 0;
+/* memcpy ((char *) (elt + 1), CharacterOffset, PartialNChars);
+ */
+ memcpy ((char *)tbuf+2, CharacterOffset, PartialNChars);
+ }
+ }
+
+ /* Pad request out to a 32-bit boundary */
+
+ if (Datalength &= 3) {
+ char *pad;
+ /*
+ * BufAlloc is a macro that uses its last argument more than
+ * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
+ */
+ length = 4 - Datalength;
+ BufAlloc (char *, pad, length);
+ /*
+ * if there are 3 bytes of padding, the first byte MUST be 0
+ * so the pad bytes aren't mistaken for a final xTextElt
+ */
+ *pad = 0;
+ }
+
+ /*
+ * If the buffer pointer is not now pointing to a 32-bit boundary,
+ * we must flush the buffer so that it does point to a 32-bit boundary
+ * at the end of this routine.
+ */
+
+ if ((dpy->bufptr - dpy->buffer) & 3)
+ _XFlush (dpy);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+}
diff --git a/libX11/src/Text16.c b/libX11/src/Text16.c
index 5a66a2bf6..f25e0ce27 100644
--- a/libX11/src/Text16.c
+++ b/libX11/src/Text16.c
@@ -1,152 +1,152 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawString16(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- _Xconst XChar2b *string,
- int length)
-{
- int Datalength = 0;
- register xPolyText16Req *req;
-
- if (length <= 0)
- return 0;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq (PolyText16, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->x = x;
- req->y = y;
-
-
- Datalength += SIZEOF(xTextElt) * ((length + 253) / 254) + (length << 1);
-
-
- req->length += (Datalength + 3)>>2; /* convert to number of 32-bit words */
-
-
- /*
- * If the entire request does not fit into the remaining space in the
- * buffer, flush the buffer first. If the request does fit into the
- * empty buffer, then we won't have to flush it at the end to keep
- * the buffer 32-bit aligned.
- */
-
- if (dpy->bufptr + Datalength > dpy->bufmax)
- _XFlush (dpy);
-
- {
- int nbytes;
- int PartialNChars = length;
- register xTextElt *elt;
- XChar2b *CharacterOffset = (XChar2b *)string;
-
- while(PartialNChars > 254)
- {
- nbytes = 254 * 2 + SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- elt->len = 254;
-#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
- {
- register int i;
- register unsigned char *cp;
- for (i = 0, cp = ((unsigned char *)elt) + 2; i < 254; i++) {
- *cp++ = CharacterOffset[i].byte1;
- *cp++ = CharacterOffset[i].byte2;
- }
- }
-#else
- memcpy (((char *) elt) + 2, (char *)CharacterOffset, 254 * 2);
-#endif
- PartialNChars = PartialNChars - 254;
- CharacterOffset += 254;
- }
-
- if (PartialNChars)
- {
- nbytes = PartialNChars * 2 + SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- elt->len = PartialNChars;
-#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
- {
- register int i;
- register unsigned char *cp;
- for (i = 0, cp = ((unsigned char *)elt) + 2; i < PartialNChars;
- i++) {
- *cp++ = CharacterOffset[i].byte1;
- *cp++ = CharacterOffset[i].byte2;
- }
- }
-#else
- memcpy(((char *)elt) + 2, (char *)CharacterOffset, PartialNChars * 2);
-#endif
- }
- }
-
- /* Pad request out to a 32-bit boundary */
-
- if (Datalength &= 3) {
- char *pad;
- /*
- * BufAlloc is a macro that uses its last argument more than
- * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
- */
- length = 4 - Datalength;
- BufAlloc (char *, pad, length);
- /*
- * if there are 3 bytes of padding, the first byte MUST be 0
- * so the pad bytes aren't mistaken for a final xTextElt
- */
- *pad = 0;
- }
-
- /*
- * If the buffer pointer is not now pointing to a 32-bit boundary,
- * we must flush the buffer so that it does point to a 32-bit boundary
- * at the end of this routine.
- */
-
- if ((dpy->bufptr - dpy->buffer) & 3)
- _XFlush (dpy);
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawString16(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ _Xconst XChar2b *string,
+ int length)
+{
+ int Datalength = 0;
+ register xPolyText16Req *req;
+
+ if (length <= 0)
+ return 0;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq (PolyText16, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->x = x;
+ req->y = y;
+
+
+ Datalength += SIZEOF(xTextElt) * ((length + 253) / 254) + (length << 1);
+
+
+ req->length += (Datalength + 3)>>2; /* convert to number of 32-bit words */
+
+
+ /*
+ * If the entire request does not fit into the remaining space in the
+ * buffer, flush the buffer first. If the request does fit into the
+ * empty buffer, then we won't have to flush it at the end to keep
+ * the buffer 32-bit aligned.
+ */
+
+ if (dpy->bufptr + Datalength > dpy->bufmax)
+ _XFlush (dpy);
+
+ {
+ int nbytes;
+ int PartialNChars = length;
+ register xTextElt *elt;
+ XChar2b *CharacterOffset = (XChar2b *)string;
+
+ while(PartialNChars > 254)
+ {
+ nbytes = 254 * 2 + SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ elt->len = 254;
+#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
+ {
+ register int i;
+ register unsigned char *cp;
+ for (i = 0, cp = ((unsigned char *)elt) + 2; i < 254; i++) {
+ *cp++ = CharacterOffset[i].byte1;
+ *cp++ = CharacterOffset[i].byte2;
+ }
+ }
+#else
+ memcpy (((char *) elt) + 2, (char *)CharacterOffset, 254 * 2);
+#endif
+ PartialNChars = PartialNChars - 254;
+ CharacterOffset += 254;
+ }
+
+ if (PartialNChars)
+ {
+ nbytes = PartialNChars * 2 + SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ elt->len = PartialNChars;
+#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
+ {
+ register int i;
+ register unsigned char *cp;
+ for (i = 0, cp = ((unsigned char *)elt) + 2; i < PartialNChars;
+ i++) {
+ *cp++ = CharacterOffset[i].byte1;
+ *cp++ = CharacterOffset[i].byte2;
+ }
+ }
+#else
+ memcpy(((char *)elt) + 2, (char *)CharacterOffset, PartialNChars * 2);
+#endif
+ }
+ }
+
+ /* Pad request out to a 32-bit boundary */
+
+ if (Datalength &= 3) {
+ char *pad;
+ /*
+ * BufAlloc is a macro that uses its last argument more than
+ * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
+ */
+ length = 4 - Datalength;
+ BufAlloc (char *, pad, length);
+ /*
+ * if there are 3 bytes of padding, the first byte MUST be 0
+ * so the pad bytes aren't mistaken for a final xTextElt
+ */
+ *pad = 0;
+ }
+
+ /*
+ * If the buffer pointer is not now pointing to a 32-bit boundary,
+ * we must flush the buffer so that it does point to a 32-bit boundary
+ * at the end of this routine.
+ */
+
+ if ((dpy->bufptr - dpy->buffer) & 3)
+ _XFlush (dpy);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+}
+
diff --git a/libX11/src/TextExt.c b/libX11/src/TextExt.c
index b883b01b4..686814a77 100644
--- a/libX11/src/TextExt.c
+++ b/libX11/src/TextExt.c
@@ -1,234 +1,234 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define min_byte2 min_char_or_byte2
-#define max_byte2 max_char_or_byte2
-
-
-/*
- * CI_GET_ROWZERO_CHAR_INFO_2D - do the same thing as CI_GET_CHAR_INFO_1D,
- * except that the font has more than one row. This is special case of more
- * general version used in XTextExt16.c since row == 0. This is used when
- * max_byte2 is not zero. A further optimization would do the check for
- * min_byte1 being zero ahead of time.
- */
-
-#define CI_GET_ROWZERO_CHAR_INFO_2D(fs,col,def,cs) \
-{ \
- cs = def; \
- if (fs->min_byte1 == 0 && \
- col >= fs->min_byte2 && col <= fs->max_byte2) { \
- if (fs->per_char == NULL) { \
- cs = &fs->min_bounds; \
- } else { \
- cs = &fs->per_char[(col - fs->min_byte2)]; \
- if (CI_NONEXISTCHAR(cs)) cs = def; \
- } \
- } \
-}
-
-
-/*
- * XTextExtents - compute the extents of string given as a sequences of eight
- * bit bytes. Since we know that the input characters will always be from the
- * first row of the font (i.e. byte1 == 0), we can do some optimizations beyond
- * what is done in XTextExtents16.
- */
-int
-XTextExtents (
- XFontStruct *fs,
- _Xconst char *string,
- int nchars,
- int *dir, /* RETURN font information */
- int *font_ascent, /* RETURN font information */
- int *font_descent, /* RETURN font information */
- register XCharStruct *overall) /* RETURN character information */
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- int nfound = 0; /* number of characters found */
- XCharStruct *def; /* info about default char */
- unsigned char *us; /* be 8bit clean */
-
- if (singlerow) { /* optimization */
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- *dir = fs->direction;
- *font_ascent = fs->ascent;
- *font_descent = fs->descent;
-
- /*
- * Iterate over the input string getting the appropriate * char struct.
- * The default (which may be null if there is no def_char) will be returned
- * if the character doesn't exist. On the first time * through the loop,
- * assign the values to overall; otherwise, compute * the new values.
- */
-
- for (i = 0, us = (unsigned char *) string; i < nchars; i++, us++) {
- register unsigned uc = (unsigned) *us; /* since about to do macro */
- register XCharStruct *cs;
-
- if (singlerow) { /* optimization */
- CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
- } else {
- CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
- }
-
- if (cs) {
- if (nfound++ == 0) {
- *overall = *cs;
- } else {
- overall->ascent = max (overall->ascent, cs->ascent);
- overall->descent = max (overall->descent, cs->descent);
- overall->lbearing = min (overall->lbearing,
- overall->width + cs->lbearing);
- overall->rbearing = max (overall->rbearing,
- overall->width + cs->rbearing);
- overall->width += cs->width;
- }
- }
- }
-
- /*
- * if there were no characters, then set everything to 0
- */
- if (nfound == 0) {
- overall->width = overall->ascent = overall->descent =
- overall->lbearing = overall->rbearing = 0;
- }
-
- return 0;
-}
-
-
-/*
- * XTextWidth - compute the width of a string of eightbit bytes. This is a
- * subset of XTextExtents.
- */
-int
-XTextWidth (
- XFontStruct *fs,
- _Xconst char *string,
- int count)
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- XCharStruct *def; /* info about default char */
- unsigned char *us; /* be 8bit clean */
- int width = 0; /* RETURN value */
-
- if (singlerow) { /* optimization */
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- if (def && fs->min_bounds.width == fs->max_bounds.width)
- return (fs->min_bounds.width * count);
-
- /*
- * Iterate over all character in the input string; only consider characters
- * that exist.
- */
- for (i = 0, us = (unsigned char *) string; i < count; i++, us++) {
- register unsigned uc = (unsigned) *us; /* since about to do macro */
- register XCharStruct *cs;
-
- if (singlerow) { /* optimization */
- CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
- } else {
- CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
- }
-
- if (cs) width += cs->width;
- }
-
- return width;
-}
-
-
-
-/*
- * _XTextHeight - compute the height of a string of eightbit bytes.
- */
-int
-_XTextHeight (
- XFontStruct *fs,
- _Xconst char *string,
- int count)
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- XCharStruct *def; /* info about default char */
- unsigned char *us; /* be 8bit clean */
- int height = 0; /* RETURN value */
-
- if (singlerow) { /* optimization */
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- if (def && (fs->min_bounds.ascent == fs->max_bounds.ascent)
- && (fs->min_bounds.descent == fs->max_bounds.descent))
- return ((fs->min_bounds.ascent + fs->min_bounds.descent) * count);
-
- /*
- * Iterate over all character in the input string; only consider characters
- * that exist.
- */
- for (i = 0, us = (unsigned char *) string; i < count; i++, us++) {
- register unsigned uc = (unsigned) *us; /* since about to do macro */
- register XCharStruct *cs;
-
- if (singlerow) { /* optimization */
- CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
- } else {
- CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
- }
-
- if (cs) height += (cs->ascent + cs->descent);
- }
-
- return height;
-}
-
+/*
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define min_byte2 min_char_or_byte2
+#define max_byte2 max_char_or_byte2
+
+
+/*
+ * CI_GET_ROWZERO_CHAR_INFO_2D - do the same thing as CI_GET_CHAR_INFO_1D,
+ * except that the font has more than one row. This is special case of more
+ * general version used in XTextExt16.c since row == 0. This is used when
+ * max_byte2 is not zero. A further optimization would do the check for
+ * min_byte1 being zero ahead of time.
+ */
+
+#define CI_GET_ROWZERO_CHAR_INFO_2D(fs,col,def,cs) \
+{ \
+ cs = def; \
+ if (fs->min_byte1 == 0 && \
+ col >= fs->min_byte2 && col <= fs->max_byte2) { \
+ if (fs->per_char == NULL) { \
+ cs = &fs->min_bounds; \
+ } else { \
+ cs = &fs->per_char[(col - fs->min_byte2)]; \
+ if (CI_NONEXISTCHAR(cs)) cs = def; \
+ } \
+ } \
+}
+
+
+/*
+ * XTextExtents - compute the extents of string given as a sequences of eight
+ * bit bytes. Since we know that the input characters will always be from the
+ * first row of the font (i.e. byte1 == 0), we can do some optimizations beyond
+ * what is done in XTextExtents16.
+ */
+int
+XTextExtents (
+ XFontStruct *fs,
+ _Xconst char *string,
+ int nchars,
+ int *dir, /* RETURN font information */
+ int *font_ascent, /* RETURN font information */
+ int *font_descent, /* RETURN font information */
+ register XCharStruct *overall) /* RETURN character information */
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ int nfound = 0; /* number of characters found */
+ XCharStruct *def; /* info about default char */
+ unsigned char *us; /* be 8bit clean */
+
+ if (singlerow) { /* optimization */
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ *dir = fs->direction;
+ *font_ascent = fs->ascent;
+ *font_descent = fs->descent;
+
+ /*
+ * Iterate over the input string getting the appropriate * char struct.
+ * The default (which may be null if there is no def_char) will be returned
+ * if the character doesn't exist. On the first time * through the loop,
+ * assign the values to overall; otherwise, compute * the new values.
+ */
+
+ for (i = 0, us = (unsigned char *) string; i < nchars; i++, us++) {
+ register unsigned uc = (unsigned) *us; /* since about to do macro */
+ register XCharStruct *cs;
+
+ if (singlerow) { /* optimization */
+ CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
+ } else {
+ CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
+ }
+
+ if (cs) {
+ if (nfound++ == 0) {
+ *overall = *cs;
+ } else {
+ overall->ascent = max (overall->ascent, cs->ascent);
+ overall->descent = max (overall->descent, cs->descent);
+ overall->lbearing = min (overall->lbearing,
+ overall->width + cs->lbearing);
+ overall->rbearing = max (overall->rbearing,
+ overall->width + cs->rbearing);
+ overall->width += cs->width;
+ }
+ }
+ }
+
+ /*
+ * if there were no characters, then set everything to 0
+ */
+ if (nfound == 0) {
+ overall->width = overall->ascent = overall->descent =
+ overall->lbearing = overall->rbearing = 0;
+ }
+
+ return 0;
+}
+
+
+/*
+ * XTextWidth - compute the width of a string of eightbit bytes. This is a
+ * subset of XTextExtents.
+ */
+int
+XTextWidth (
+ XFontStruct *fs,
+ _Xconst char *string,
+ int count)
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ XCharStruct *def; /* info about default char */
+ unsigned char *us; /* be 8bit clean */
+ int width = 0; /* RETURN value */
+
+ if (singlerow) { /* optimization */
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ if (def && fs->min_bounds.width == fs->max_bounds.width)
+ return (fs->min_bounds.width * count);
+
+ /*
+ * Iterate over all character in the input string; only consider characters
+ * that exist.
+ */
+ for (i = 0, us = (unsigned char *) string; i < count; i++, us++) {
+ register unsigned uc = (unsigned) *us; /* since about to do macro */
+ register XCharStruct *cs;
+
+ if (singlerow) { /* optimization */
+ CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
+ } else {
+ CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
+ }
+
+ if (cs) width += cs->width;
+ }
+
+ return width;
+}
+
+
+
+/*
+ * _XTextHeight - compute the height of a string of eightbit bytes.
+ */
+int
+_XTextHeight (
+ XFontStruct *fs,
+ _Xconst char *string,
+ int count)
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ XCharStruct *def; /* info about default char */
+ unsigned char *us; /* be 8bit clean */
+ int height = 0; /* RETURN value */
+
+ if (singlerow) { /* optimization */
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ if (def && (fs->min_bounds.ascent == fs->max_bounds.ascent)
+ && (fs->min_bounds.descent == fs->max_bounds.descent))
+ return ((fs->min_bounds.ascent + fs->min_bounds.descent) * count);
+
+ /*
+ * Iterate over all character in the input string; only consider characters
+ * that exist.
+ */
+ for (i = 0, us = (unsigned char *) string; i < count; i++, us++) {
+ register unsigned uc = (unsigned) *us; /* since about to do macro */
+ register XCharStruct *cs;
+
+ if (singlerow) { /* optimization */
+ CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
+ } else {
+ CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
+ }
+
+ if (cs) height += (cs->ascent + cs->descent);
+ }
+
+ return height;
+}
+
diff --git a/libX11/src/TextExt16.c b/libX11/src/TextExt16.c
index 01a0f32e4..eb108a107 100644
--- a/libX11/src/TextExt16.c
+++ b/libX11/src/TextExt16.c
@@ -1,210 +1,210 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define min_byte2 min_char_or_byte2
-#define max_byte2 max_char_or_byte2
-
-/*
- * XTextExtents16 - compute the extents of string given as a sequence of
- * XChar2bs.
- */
-int
-XTextExtents16 (
- XFontStruct *fs,
- _Xconst XChar2b *string,
- int nchars,
- int *dir, /* RETURN font information */
- int *font_ascent, /* RETURN font information */
- int *font_descent, /* RETURN font information */
- register XCharStruct *overall) /* RETURN character information */
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- int nfound = 0; /* number of characters found */
- XCharStruct *def; /* info about default char */
-
- if (singlerow) {
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- *dir = fs->direction;
- *font_ascent = fs->ascent;
- *font_descent = fs->descent;
-
- /*
- * Iterate over the input string getting the appropriate * char struct.
- * The default (which may be null if there is no def_char) will be returned
- * if the character doesn't exist. On the first time * through the loop,
- * assign the values to overall; otherwise, compute * the new values.
- */
-
- for (i = 0; i < nchars; i++, string++) {
- register XCharStruct *cs;
- unsigned int r = (unsigned int) string->byte1; /* watch for macros */
- unsigned int c = (unsigned int) string->byte2; /* watch for macros */
-
- if (singlerow) {
- unsigned int ind = ((r << 8) | c); /* watch for macros */
- CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
- } else {
- CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
- }
-
- if (cs) {
- if (nfound++ == 0) {
- *overall = *cs;
- } else {
- overall->ascent = max (overall->ascent, cs->ascent);
- overall->descent = max (overall->descent, cs->descent);
- overall->lbearing = min (overall->lbearing,
- overall->width + cs->lbearing);
- overall->rbearing = max (overall->rbearing,
- overall->width + cs->rbearing);
- overall->width += cs->width;
- }
- }
- }
-
- /*
- * if there were no characters, then set everything to 0
- */
- if (nfound == 0) {
- overall->width = overall->ascent = overall->descent =
- overall->lbearing = overall->rbearing = 0;
- }
-
- return 0;
-}
-
-
-/*
- * XTextWidth16 - compute the width of sequence of XChar2bs. This is a
- * subset of XTextExtents16.
- */
-int
-XTextWidth16 (
- XFontStruct *fs,
- _Xconst XChar2b *string,
- int count)
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- XCharStruct *def; /* info about default char */
- int width = 0; /* RETURN value */
-
- if (singlerow) {
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- if (def && fs->min_bounds.width == fs->max_bounds.width)
- return (fs->min_bounds.width * count);
-
- /*
- * Iterate over all character in the input string; only consider characters
- * that exist.
- */
- for (i = 0; i < count; i++, string++) {
- register XCharStruct *cs;
- unsigned int r = (unsigned int) string->byte1; /* watch for macros */
- unsigned int c = (unsigned int) string->byte2; /* watch for macros */
-
- if (singlerow) {
- unsigned int ind = ((r << 8) | c); /* watch for macros */
- CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
- } else {
- CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
- }
-
- if (cs) width += cs->width;
- }
-
- return width;
-}
-
-
-/*
- * _XTextHeight16 - compute the height of sequence of XChar2bs.
- */
-int
-_XTextHeight16 (
- XFontStruct *fs,
- _Xconst XChar2b *string,
- int count)
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- XCharStruct *def; /* info about default char */
- int height = 0; /* RETURN value */
-
- if (singlerow) {
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- if (def && (fs->min_bounds.ascent == fs->max_bounds.ascent)
- && (fs->min_bounds.descent == fs->max_bounds.descent))
- return ((fs->min_bounds.ascent + fs->min_bounds.descent) * count);
-
- /*
- * Iterate over all character in the input string; only consider characters
- * that exist.
- */
- for (i = 0; i < count; i++, string++) {
- register XCharStruct *cs;
- unsigned int r = (unsigned int) string->byte1; /* watch for macros */
- unsigned int c = (unsigned int) string->byte2; /* watch for macros */
-
- if (singlerow) {
- unsigned int ind = ((r << 8) | c); /* watch for macros */
- CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
- } else {
- CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
- }
-
- if (cs) height += (cs->ascent + cs->descent);
- }
-
- return height;
-}
-
+/*
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define min_byte2 min_char_or_byte2
+#define max_byte2 max_char_or_byte2
+
+/*
+ * XTextExtents16 - compute the extents of string given as a sequence of
+ * XChar2bs.
+ */
+int
+XTextExtents16 (
+ XFontStruct *fs,
+ _Xconst XChar2b *string,
+ int nchars,
+ int *dir, /* RETURN font information */
+ int *font_ascent, /* RETURN font information */
+ int *font_descent, /* RETURN font information */
+ register XCharStruct *overall) /* RETURN character information */
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ int nfound = 0; /* number of characters found */
+ XCharStruct *def; /* info about default char */
+
+ if (singlerow) {
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ *dir = fs->direction;
+ *font_ascent = fs->ascent;
+ *font_descent = fs->descent;
+
+ /*
+ * Iterate over the input string getting the appropriate * char struct.
+ * The default (which may be null if there is no def_char) will be returned
+ * if the character doesn't exist. On the first time * through the loop,
+ * assign the values to overall; otherwise, compute * the new values.
+ */
+
+ for (i = 0; i < nchars; i++, string++) {
+ register XCharStruct *cs;
+ unsigned int r = (unsigned int) string->byte1; /* watch for macros */
+ unsigned int c = (unsigned int) string->byte2; /* watch for macros */
+
+ if (singlerow) {
+ unsigned int ind = ((r << 8) | c); /* watch for macros */
+ CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
+ } else {
+ CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
+ }
+
+ if (cs) {
+ if (nfound++ == 0) {
+ *overall = *cs;
+ } else {
+ overall->ascent = max (overall->ascent, cs->ascent);
+ overall->descent = max (overall->descent, cs->descent);
+ overall->lbearing = min (overall->lbearing,
+ overall->width + cs->lbearing);
+ overall->rbearing = max (overall->rbearing,
+ overall->width + cs->rbearing);
+ overall->width += cs->width;
+ }
+ }
+ }
+
+ /*
+ * if there were no characters, then set everything to 0
+ */
+ if (nfound == 0) {
+ overall->width = overall->ascent = overall->descent =
+ overall->lbearing = overall->rbearing = 0;
+ }
+
+ return 0;
+}
+
+
+/*
+ * XTextWidth16 - compute the width of sequence of XChar2bs. This is a
+ * subset of XTextExtents16.
+ */
+int
+XTextWidth16 (
+ XFontStruct *fs,
+ _Xconst XChar2b *string,
+ int count)
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ XCharStruct *def; /* info about default char */
+ int width = 0; /* RETURN value */
+
+ if (singlerow) {
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ if (def && fs->min_bounds.width == fs->max_bounds.width)
+ return (fs->min_bounds.width * count);
+
+ /*
+ * Iterate over all character in the input string; only consider characters
+ * that exist.
+ */
+ for (i = 0; i < count; i++, string++) {
+ register XCharStruct *cs;
+ unsigned int r = (unsigned int) string->byte1; /* watch for macros */
+ unsigned int c = (unsigned int) string->byte2; /* watch for macros */
+
+ if (singlerow) {
+ unsigned int ind = ((r << 8) | c); /* watch for macros */
+ CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
+ } else {
+ CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
+ }
+
+ if (cs) width += cs->width;
+ }
+
+ return width;
+}
+
+
+/*
+ * _XTextHeight16 - compute the height of sequence of XChar2bs.
+ */
+int
+_XTextHeight16 (
+ XFontStruct *fs,
+ _Xconst XChar2b *string,
+ int count)
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ XCharStruct *def; /* info about default char */
+ int height = 0; /* RETURN value */
+
+ if (singlerow) {
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ if (def && (fs->min_bounds.ascent == fs->max_bounds.ascent)
+ && (fs->min_bounds.descent == fs->max_bounds.descent))
+ return ((fs->min_bounds.ascent + fs->min_bounds.descent) * count);
+
+ /*
+ * Iterate over all character in the input string; only consider characters
+ * that exist.
+ */
+ for (i = 0; i < count; i++, string++) {
+ register XCharStruct *cs;
+ unsigned int r = (unsigned int) string->byte1; /* watch for macros */
+ unsigned int c = (unsigned int) string->byte2; /* watch for macros */
+
+ if (singlerow) {
+ unsigned int ind = ((r << 8) | c); /* watch for macros */
+ CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
+ } else {
+ CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
+ }
+
+ if (cs) height += (cs->ascent + cs->descent);
+ }
+
+ return height;
+}
+
diff --git a/libX11/src/TextToStr.c b/libX11/src/TextToStr.c
index 216391c2e..87c66564b 100644
--- a/libX11/src/TextToStr.c
+++ b/libX11/src/TextToStr.c
@@ -1,118 +1,118 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-
-
-/*
- * XTextPropertyToStringList - set list and count to contain data stored in
- * null-separated STRING property.
- */
-
-Status XTextPropertyToStringList (
- XTextProperty *tp,
- char ***list_return,
- int *count_return)
-{
- char **list; /* return value */
- int nelements; /* return value */
- register char *cp; /* temp variable */
- char *start; /* start of thing to copy */
- int i, j; /* iterator variables */
- int datalen = (int) tp->nitems; /* for convenience */
-
- /*
- * make sure we understand how to do it
- */
- if (tp->encoding != XA_STRING || tp->format != 8) return False;
-
- if (datalen == 0) {
- *list_return = NULL;
- *count_return = 0;
- return True;
- }
-
- /*
- * walk the list to figure out how many elements there are
- */
- nelements = 1; /* since null-separated */
- for (cp = (char *) tp->value, i = datalen; i > 0; cp++, i--) {
- if (*cp == '\0') nelements++;
- }
-
- /*
- * allocate list and duplicate
- */
- list = (char **) Xmalloc (nelements * sizeof (char *));
- if (!list) return False;
-
- start = (char *) Xmalloc ((datalen + 1) * sizeof (char)); /* for <NUL> */
- if (!start) {
- Xfree ((char *) list);
- return False;
- }
-
- /*
- * copy data
- */
- memcpy (start, (char *) tp->value, tp->nitems);
- start[datalen] = '\0';
-
- /*
- * walk down list setting value
- */
- for (cp = start, i = datalen + 1, j = 0; i > 0; cp++, i--) {
- if (*cp == '\0') {
- list[j] = start;
- start = (cp + 1);
- j++;
- }
- }
-
- /*
- * append final null pointer and then return data
- */
- *list_return = list;
- *count_return = nelements;
- return True;
-}
-
-
-void XFreeStringList (char **list)
-{
- if (list) {
- if (list[0]) Xfree (list[0]);
- Xfree ((char *) list);
- list = NULL;
- }
-}
-
+/*
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+
+/*
+ * XTextPropertyToStringList - set list and count to contain data stored in
+ * null-separated STRING property.
+ */
+
+Status XTextPropertyToStringList (
+ XTextProperty *tp,
+ char ***list_return,
+ int *count_return)
+{
+ char **list; /* return value */
+ int nelements; /* return value */
+ register char *cp; /* temp variable */
+ char *start; /* start of thing to copy */
+ int i, j; /* iterator variables */
+ int datalen = (int) tp->nitems; /* for convenience */
+
+ /*
+ * make sure we understand how to do it
+ */
+ if (tp->encoding != XA_STRING || tp->format != 8) return False;
+
+ if (datalen == 0) {
+ *list_return = NULL;
+ *count_return = 0;
+ return True;
+ }
+
+ /*
+ * walk the list to figure out how many elements there are
+ */
+ nelements = 1; /* since null-separated */
+ for (cp = (char *) tp->value, i = datalen; i > 0; cp++, i--) {
+ if (*cp == '\0') nelements++;
+ }
+
+ /*
+ * allocate list and duplicate
+ */
+ list = (char **) Xmalloc (nelements * sizeof (char *));
+ if (!list) return False;
+
+ start = (char *) Xmalloc ((datalen + 1) * sizeof (char)); /* for <NUL> */
+ if (!start) {
+ Xfree ((char *) list);
+ return False;
+ }
+
+ /*
+ * copy data
+ */
+ memcpy (start, (char *) tp->value, tp->nitems);
+ start[datalen] = '\0';
+
+ /*
+ * walk down list setting value
+ */
+ for (cp = start, i = datalen + 1, j = 0; i > 0; cp++, i--) {
+ if (*cp == '\0') {
+ list[j] = start;
+ start = (cp + 1);
+ j++;
+ }
+ }
+
+ /*
+ * append final null pointer and then return data
+ */
+ *list_return = list;
+ *count_return = nelements;
+ return True;
+}
+
+
+void XFreeStringList (char **list)
+{
+ if (list) {
+ if (list[0]) Xfree (list[0]);
+ Xfree ((char *) list);
+ list = NULL;
+ }
+}
+
diff --git a/libX11/src/UndefCurs.c b/libX11/src/UndefCurs.c
index 1d46ff946..c7116c940 100644
--- a/libX11/src/UndefCurs.c
+++ b/libX11/src/UndefCurs.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUndefineCursor (
- register Display *dpy,
- Window w)
-{
- register xChangeWindowAttributesReq *req;
- unsigned long defcurs = None;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWCursor;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), defcurs);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUndefineCursor (
+ register Display *dpy,
+ Window w)
+{
+ register xChangeWindowAttributesReq *req;
+ unsigned long defcurs = None;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWCursor;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), defcurs);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/UngrabBut.c b/libX11/src/UngrabBut.c
index 13545ed98..ad7a0c06a 100644
--- a/libX11/src/UngrabBut.c
+++ b/libX11/src/UngrabBut.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUngrabButton(
- register Display *dpy,
- unsigned int button, /* CARD8 */
- unsigned int modifiers, /* CARD16 */
- Window grab_window)
-{
- register xUngrabButtonReq *req;
-
- LockDisplay(dpy);
- GetReq(UngrabButton, req);
- req->button = button;
- req->modifiers = modifiers;
- req->grabWindow = grab_window;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUngrabButton(
+ register Display *dpy,
+ unsigned int button, /* CARD8 */
+ unsigned int modifiers, /* CARD16 */
+ Window grab_window)
+{
+ register xUngrabButtonReq *req;
+
+ LockDisplay(dpy);
+ GetReq(UngrabButton, req);
+ req->button = button;
+ req->modifiers = modifiers;
+ req->grabWindow = grab_window;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/UngrabKbd.c b/libX11/src/UngrabKbd.c
index 974e8a324..b3c86db8f 100644
--- a/libX11/src/UngrabKbd.c
+++ b/libX11/src/UngrabKbd.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUngrabKeyboard (
- register Display *dpy,
- Time time)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(UngrabKeyboard, time, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUngrabKeyboard (
+ register Display *dpy,
+ Time time)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(UngrabKeyboard, time, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/UngrabKey.c b/libX11/src/UngrabKey.c
index 919c4e76c..f3cd4c956 100644
--- a/libX11/src/UngrabKey.c
+++ b/libX11/src/UngrabKey.c
@@ -1,52 +1,52 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUngrabKey(
- register Display *dpy,
- int key,
- unsigned int modifiers,
- Window grab_window)
-{
- register xUngrabKeyReq *req;
-
- LockDisplay(dpy);
- GetReq(UngrabKey, req);
- req->grabWindow = grab_window;
- req->modifiers = modifiers;
- req->key = key;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUngrabKey(
+ register Display *dpy,
+ int key,
+ unsigned int modifiers,
+ Window grab_window)
+{
+ register xUngrabKeyReq *req;
+
+ LockDisplay(dpy);
+ GetReq(UngrabKey, req);
+ req->grabWindow = grab_window;
+ req->modifiers = modifiers;
+ req->key = key;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+
+
diff --git a/libX11/src/UngrabPtr.c b/libX11/src/UngrabPtr.c
index 16417921c..cabebf40e 100644
--- a/libX11/src/UngrabPtr.c
+++ b/libX11/src/UngrabPtr.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUngrabPointer(
- register Display *dpy,
- Time time)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(UngrabPointer, time, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUngrabPointer(
+ register Display *dpy,
+ Time time)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(UngrabPointer, time, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/UngrabSvr.c b/libX11/src/UngrabSvr.c
index ea0084879..4b7aa44e8 100644
--- a/libX11/src/UngrabSvr.c
+++ b/libX11/src/UngrabSvr.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUngrabServer (
- register Display *dpy)
-{
- register xReq *req;
-
- LockDisplay(dpy);
- GetEmptyReq(UngrabServer, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUngrabServer (
+ register Display *dpy)
+{
+ register xReq *req;
+
+ LockDisplay(dpy);
+ GetEmptyReq(UngrabServer, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/UninsCmap.c b/libX11/src/UninsCmap.c
index db574ef7c..b38f7c7df 100644
--- a/libX11/src/UninsCmap.c
+++ b/libX11/src/UninsCmap.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUninstallColormap(
- register Display *dpy,
- Colormap cmap)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(UninstallColormap, cmap, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUninstallColormap(
+ register Display *dpy,
+ Colormap cmap)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(UninstallColormap, cmap, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/UnldFont.c b/libX11/src/UnldFont.c
index a4f69fee4..bd622d4ca 100644
--- a/libX11/src/UnldFont.c
+++ b/libX11/src/UnldFont.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUnloadFont(
- register Display *dpy,
- Font font)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(CloseFont, font, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUnloadFont(
+ register Display *dpy,
+ Font font)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(CloseFont, font, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/UnmapSubs.c b/libX11/src/UnmapSubs.c
index 7490a70e9..57da27244 100644
--- a/libX11/src/UnmapSubs.c
+++ b/libX11/src/UnmapSubs.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUnmapSubwindows(
- register Display *dpy,
- Window win)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(UnmapSubwindows,win, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUnmapSubwindows(
+ register Display *dpy,
+ Window win)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(UnmapSubwindows,win, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/UnmapWin.c b/libX11/src/UnmapWin.c
index 51ae16319..5dddfcbea 100644
--- a/libX11/src/UnmapWin.c
+++ b/libX11/src/UnmapWin.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUnmapWindow (
- register Display *dpy,
- Window w)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(UnmapWindow, w, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUnmapWindow (
+ register Display *dpy,
+ Window w)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(UnmapWindow, w, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/VisUtil.c b/libX11/src/VisUtil.c
index 3434c0161..e44825734 100644
--- a/libX11/src/VisUtil.c
+++ b/libX11/src/VisUtil.c
@@ -1,254 +1,254 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-#include <stdio.h>
-/*
- * This procedure returns a list of visual information structures
- * that match the specified attributes given in the visual information
- * template.
- *
- * If no visuals exist that match the specified attributes, a NULL is
- * returned.
- *
- * The choices for visual_info_mask are:
- *
- * VisualNoMask
- * VisualIDMask
- * VisualScreenMask
- * VisualDepthMask
- * VisualClassMask
- * VisualRedMaskMask
- * VisualGreenMaskMask
- * VisualBlueMaskMask
- * VisualColormapSizeMask
- * VisualBitsPerRGBMask
- * VisualAllMask
- */
-
-XVisualInfo *XGetVisualInfo(
- Display *dpy,
- register long visual_info_mask,
- register XVisualInfo *visual_info_template,
- int *nitems) /* RETURN */
-{
-
- register Visual *vp;
- register Depth *dp;
- Screen *sp;
- int ii,screen_s,screen_e,total,count;
- register XVisualInfo *vip,*vip_base;
-
- /* NOTE: NO HIGH PERFORMING CODE TO BE FOUND HERE */
-
- LockDisplay(dpy);
-
- /* ALLOCATE THE ORIGINAL BUFFER; REALLOCED LATER IF OVERFLOW OCCURS;
- FREED AT END IF NO VISUALS ARE FOUND */
-
- count = 0;
- total = 10;
- if (! (vip_base = vip = (XVisualInfo *)
- Xmalloc((unsigned) (sizeof(XVisualInfo) * total)))) {
- UnlockDisplay(dpy);
- return (XVisualInfo *) NULL;
- }
-
- /* DETERMINE IF WE DO ALL SCREENS OR ONLY ONE */
-
- screen_s = 0;
- screen_e = dpy->nscreens;
- if (visual_info_mask & VisualScreenMask)
- {
- screen_s = visual_info_template->screen;
- if (screen_s < 0 || screen_s >= screen_e)
- screen_e = screen_s;
- else
- screen_e = screen_s + 1;
- }
-
- /* LOOP THROUGH SCREENS */
-
- for (ii=screen_s; ii<screen_e; ii++)
- {
- sp = (Screen *)(&dpy->screens[ii]);
-
- /* LOOP THROUGH DEPTHS */
-
- for (dp=sp->depths; dp < (sp->depths + sp->ndepths); dp++)
- {
- if ((visual_info_mask & VisualDepthMask) &&
- (dp->depth != visual_info_template->depth)) continue;
-
- /* LOOP THROUGH VISUALS */
-
- if (dp->visuals) {
- for (vp=dp->visuals; vp<(dp->visuals + dp->nvisuals); vp++) {
- if ((visual_info_mask & VisualIDMask) &&
- (vp->visualid != visual_info_template->visualid)) continue;
- if ((visual_info_mask & VisualClassMask) &&
- (vp->class != visual_info_template->class)) continue;
- if ((visual_info_mask & VisualRedMaskMask) &&
- (vp->red_mask != visual_info_template->red_mask)) continue;
- if ((visual_info_mask & VisualGreenMaskMask) &&
- (vp->green_mask != visual_info_template->green_mask)) continue;
- if ((visual_info_mask & VisualBlueMaskMask) &&
- (vp->blue_mask != visual_info_template->blue_mask)) continue;
- if ((visual_info_mask & VisualColormapSizeMask) &&
- (vp->map_entries != visual_info_template->colormap_size)) continue;
- if ((visual_info_mask & VisualBitsPerRGBMask) &&
- (vp->bits_per_rgb != visual_info_template->bits_per_rgb)) continue;
-
- /* YEA!!! WE FOUND A GOOD ONE */
-
- if (count+1 > total)
- {
- XVisualInfo *old_vip_base = vip_base;
- total += 10;
- if (! (vip_base = (XVisualInfo *)
- Xrealloc((char *) vip_base,
- (unsigned) (sizeof(XVisualInfo) * total)))) {
- Xfree((char *) old_vip_base);
- UnlockDisplay(dpy);
- return (XVisualInfo *) NULL;
- }
- vip = &vip_base[count];
- }
-
- count++;
-
- vip->visual = _XVIDtoVisual(dpy, vp->visualid);
- vip->visualid = vp->visualid;
- vip->screen = ii;
- vip->depth = dp->depth;
- vip->class = vp->class;
- vip->red_mask = vp->red_mask;
- vip->green_mask = vp->green_mask;
- vip->blue_mask = vp->blue_mask;
- vip->colormap_size = vp->map_entries;
- vip->bits_per_rgb = vp->bits_per_rgb;
-
- vip++;
-
- } /* END OF LOOP ON VISUALS */
- } /* END OF IF THERE ARE ANY VISUALS AT THIS DEPTH */
-
- } /* END OF LOOP ON DEPTHS */
-
- } /* END OF LOOP ON SCREENS */
-
- UnlockDisplay(dpy);
-
- if (count)
- {
- *nitems = count;
- return vip_base;
- }
-
- Xfree((char *) vip_base);
- *nitems = 0;
- return NULL;
-}
-
-
-/*
- * This procedure will return the visual information for a visual
- * that matches the specified depth and class for a screen. Since
- * multiple visuals may exist that match the specified depth and
- * class, which visual chosen is undefined.
- *
- * If a visual is found, True is returned as the function value,
- * otherwise False is returned.
- */
-
-Status XMatchVisualInfo(
- Display *dpy,
- int screen,
- int depth,
- int class,
- XVisualInfo *visual_info) /* RETURNED */
-{
-
- Visual *vp;
- Depth *dp;
- Screen *sp;
- int ii,jj;
-
- if (screen < 0 || screen >= dpy->nscreens)
- return False;
-
- LockDisplay(dpy);
-
- sp = (Screen *)(&dpy->screens[screen]);
-
- dp = sp->depths;
-
- for (ii=0; ii < sp->ndepths; ii++)
- {
-
- /* LOOK THROUGH DEPTHS FOR THE WANTED DEPTH */
-
- if (dp->depth == depth)
- {
- vp = dp->visuals;
-
- /* LOOK THROUGH VISUALS FOR THE WANTED CLASS */
-
- /* if nvisuals == 0 then vp will be NULL */
- for (jj=0; jj<dp->nvisuals; jj++)
- {
- if (vp->class == class)
- {
- visual_info->visual = _XVIDtoVisual(dpy, vp->visualid);
- visual_info->visualid = vp->visualid;
- visual_info->screen = screen;
- visual_info->depth = depth;
- visual_info->class = vp->class;
- visual_info->red_mask = vp->red_mask;
- visual_info->green_mask = vp->green_mask;
- visual_info->blue_mask = vp->blue_mask;
- visual_info->colormap_size = vp->map_entries;
- visual_info->bits_per_rgb = vp->bits_per_rgb;
- UnlockDisplay(dpy);
- return True;
- }
- vp++;
- }
- }
-
- dp++;
-
- }
-
- UnlockDisplay(dpy);
-
- return False;
-
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+#include <stdio.h>
+/*
+ * This procedure returns a list of visual information structures
+ * that match the specified attributes given in the visual information
+ * template.
+ *
+ * If no visuals exist that match the specified attributes, a NULL is
+ * returned.
+ *
+ * The choices for visual_info_mask are:
+ *
+ * VisualNoMask
+ * VisualIDMask
+ * VisualScreenMask
+ * VisualDepthMask
+ * VisualClassMask
+ * VisualRedMaskMask
+ * VisualGreenMaskMask
+ * VisualBlueMaskMask
+ * VisualColormapSizeMask
+ * VisualBitsPerRGBMask
+ * VisualAllMask
+ */
+
+XVisualInfo *XGetVisualInfo(
+ Display *dpy,
+ register long visual_info_mask,
+ register XVisualInfo *visual_info_template,
+ int *nitems) /* RETURN */
+{
+
+ register Visual *vp;
+ register Depth *dp;
+ Screen *sp;
+ int ii,screen_s,screen_e,total,count;
+ register XVisualInfo *vip,*vip_base;
+
+ /* NOTE: NO HIGH PERFORMING CODE TO BE FOUND HERE */
+
+ LockDisplay(dpy);
+
+ /* ALLOCATE THE ORIGINAL BUFFER; REALLOCED LATER IF OVERFLOW OCCURS;
+ FREED AT END IF NO VISUALS ARE FOUND */
+
+ count = 0;
+ total = 10;
+ if (! (vip_base = vip = (XVisualInfo *)
+ Xmalloc((unsigned) (sizeof(XVisualInfo) * total)))) {
+ UnlockDisplay(dpy);
+ return (XVisualInfo *) NULL;
+ }
+
+ /* DETERMINE IF WE DO ALL SCREENS OR ONLY ONE */
+
+ screen_s = 0;
+ screen_e = dpy->nscreens;
+ if (visual_info_mask & VisualScreenMask)
+ {
+ screen_s = visual_info_template->screen;
+ if (screen_s < 0 || screen_s >= screen_e)
+ screen_e = screen_s;
+ else
+ screen_e = screen_s + 1;
+ }
+
+ /* LOOP THROUGH SCREENS */
+
+ for (ii=screen_s; ii<screen_e; ii++)
+ {
+ sp = (Screen *)(&dpy->screens[ii]);
+
+ /* LOOP THROUGH DEPTHS */
+
+ for (dp=sp->depths; dp < (sp->depths + sp->ndepths); dp++)
+ {
+ if ((visual_info_mask & VisualDepthMask) &&
+ (dp->depth != visual_info_template->depth)) continue;
+
+ /* LOOP THROUGH VISUALS */
+
+ if (dp->visuals) {
+ for (vp=dp->visuals; vp<(dp->visuals + dp->nvisuals); vp++) {
+ if ((visual_info_mask & VisualIDMask) &&
+ (vp->visualid != visual_info_template->visualid)) continue;
+ if ((visual_info_mask & VisualClassMask) &&
+ (vp->class != visual_info_template->class)) continue;
+ if ((visual_info_mask & VisualRedMaskMask) &&
+ (vp->red_mask != visual_info_template->red_mask)) continue;
+ if ((visual_info_mask & VisualGreenMaskMask) &&
+ (vp->green_mask != visual_info_template->green_mask)) continue;
+ if ((visual_info_mask & VisualBlueMaskMask) &&
+ (vp->blue_mask != visual_info_template->blue_mask)) continue;
+ if ((visual_info_mask & VisualColormapSizeMask) &&
+ (vp->map_entries != visual_info_template->colormap_size)) continue;
+ if ((visual_info_mask & VisualBitsPerRGBMask) &&
+ (vp->bits_per_rgb != visual_info_template->bits_per_rgb)) continue;
+
+ /* YEA!!! WE FOUND A GOOD ONE */
+
+ if (count+1 > total)
+ {
+ XVisualInfo *old_vip_base = vip_base;
+ total += 10;
+ if (! (vip_base = (XVisualInfo *)
+ Xrealloc((char *) vip_base,
+ (unsigned) (sizeof(XVisualInfo) * total)))) {
+ Xfree((char *) old_vip_base);
+ UnlockDisplay(dpy);
+ return (XVisualInfo *) NULL;
+ }
+ vip = &vip_base[count];
+ }
+
+ count++;
+
+ vip->visual = _XVIDtoVisual(dpy, vp->visualid);
+ vip->visualid = vp->visualid;
+ vip->screen = ii;
+ vip->depth = dp->depth;
+ vip->class = vp->class;
+ vip->red_mask = vp->red_mask;
+ vip->green_mask = vp->green_mask;
+ vip->blue_mask = vp->blue_mask;
+ vip->colormap_size = vp->map_entries;
+ vip->bits_per_rgb = vp->bits_per_rgb;
+
+ vip++;
+
+ } /* END OF LOOP ON VISUALS */
+ } /* END OF IF THERE ARE ANY VISUALS AT THIS DEPTH */
+
+ } /* END OF LOOP ON DEPTHS */
+
+ } /* END OF LOOP ON SCREENS */
+
+ UnlockDisplay(dpy);
+
+ if (count)
+ {
+ *nitems = count;
+ return vip_base;
+ }
+
+ Xfree((char *) vip_base);
+ *nitems = 0;
+ return NULL;
+}
+
+
+/*
+ * This procedure will return the visual information for a visual
+ * that matches the specified depth and class for a screen. Since
+ * multiple visuals may exist that match the specified depth and
+ * class, which visual chosen is undefined.
+ *
+ * If a visual is found, True is returned as the function value,
+ * otherwise False is returned.
+ */
+
+Status XMatchVisualInfo(
+ Display *dpy,
+ int screen,
+ int depth,
+ int class,
+ XVisualInfo *visual_info) /* RETURNED */
+{
+
+ Visual *vp;
+ Depth *dp;
+ Screen *sp;
+ int ii,jj;
+
+ if (screen < 0 || screen >= dpy->nscreens)
+ return False;
+
+ LockDisplay(dpy);
+
+ sp = (Screen *)(&dpy->screens[screen]);
+
+ dp = sp->depths;
+
+ for (ii=0; ii < sp->ndepths; ii++)
+ {
+
+ /* LOOK THROUGH DEPTHS FOR THE WANTED DEPTH */
+
+ if (dp->depth == depth)
+ {
+ vp = dp->visuals;
+
+ /* LOOK THROUGH VISUALS FOR THE WANTED CLASS */
+
+ /* if nvisuals == 0 then vp will be NULL */
+ for (jj=0; jj<dp->nvisuals; jj++)
+ {
+ if (vp->class == class)
+ {
+ visual_info->visual = _XVIDtoVisual(dpy, vp->visualid);
+ visual_info->visualid = vp->visualid;
+ visual_info->screen = screen;
+ visual_info->depth = depth;
+ visual_info->class = vp->class;
+ visual_info->red_mask = vp->red_mask;
+ visual_info->green_mask = vp->green_mask;
+ visual_info->blue_mask = vp->blue_mask;
+ visual_info->colormap_size = vp->map_entries;
+ visual_info->bits_per_rgb = vp->bits_per_rgb;
+ UnlockDisplay(dpy);
+ return True;
+ }
+ vp++;
+ }
+ }
+
+ dp++;
+
+ }
+
+ UnlockDisplay(dpy);
+
+ return False;
+
+}
diff --git a/libX11/src/WMGeom.c b/libX11/src/WMGeom.c
index 7947536f5..a7d0faf1d 100644
--- a/libX11/src/WMGeom.c
+++ b/libX11/src/WMGeom.c
@@ -1,183 +1,183 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-
-static int _GeometryMaskToGravity(
- int mask);
-
-/*
- * This routine given a user supplied positional argument and a default
- * argument (fully qualified) will return the position the window should take
- * as well as the gravity to be set in the WM_NORMAL_HINTS size hints.
- * Always sets all return values and returns a mask describing which fields
- * were set by the user or'ed with whether or not the x and y values should
- * be considered "negative".
- */
-
-int
-XWMGeometry (
- Display *dpy, /* user's display connection */
- int screen, /* screen on which to do computation */
- _Xconst char *user_geom, /* user provided geometry spec */
- _Xconst char *def_geom, /* default geometry spec for window */
- unsigned int bwidth, /* border width */
- XSizeHints *hints, /* usually WM_NORMAL_HINTS */
- int *x_return, /* location of window */
- int *y_return, /* location of window */
- int *width_return, /* size of window */
- int *height_return, /* size of window */
- int *gravity_return) /* gravity of window */
-{
- int ux, uy; /* returned values from parse */
- unsigned int uwidth, uheight; /* returned values from parse */
- int umask; /* parse mask of returned values */
- int dx, dy; /* default values from parse */
- unsigned int dwidth, dheight; /* default values from parse */
- int dmask; /* parse mask of returned values */
- int base_width, base_height; /* valid amounts */
- int min_width, min_height; /* valid amounts */
- int width_inc, height_inc; /* valid amounts */
- int rx, ry, rwidth, rheight; /* return values */
- int rmask; /* return mask */
-
- /*
- * Get the base sizes and increments. Section 4.1.2.3 of the ICCCM
- * states that the base and minimum sizes are defaults for each other.
- * If neither is given, then the base sizes should be 0. These parameters
- * control the sets of sizes that window managers should allow for the
- * window according to the following formulae:
- *
- * width = base_width + (i * width_inc)
- * height = base_height + (j * height_inc)
- */
- base_width = ((hints->flags & PBaseSize) ? hints->base_width :
- ((hints->flags & PMinSize) ? hints->min_width : 0));
- base_height = ((hints->flags & PBaseSize) ? hints->base_height :
- ((hints->flags & PMinSize) ? hints->min_height : 0));
- min_width = ((hints->flags & PMinSize) ? hints->min_width : base_width);
- min_height = ((hints->flags & PMinSize) ? hints->min_height : base_height);
- width_inc = (hints->flags & PResizeInc) ? hints->width_inc : 1;
- height_inc = (hints->flags & PResizeInc) ? hints->height_inc : 1;
-
-
- /*
- * parse the two geometry masks
- */
- rmask = umask = XParseGeometry (user_geom, &ux, &uy, &uwidth, &uheight);
- dmask = XParseGeometry (def_geom, &dx, &dy, &dwidth, &dheight);
-
-
- /*
- * get the width and height:
- * 1. if user-specified, then take that value
- * 2. else, if program-specified, then take that value
- * 3. else, take 1
- * 4. multiply by the size increment
- * 5. and add to the base size
- */
- rwidth = ((((umask & WidthValue) ? uwidth :
- ((dmask & WidthValue) ? dwidth : 1)) * width_inc) +
- base_width);
- rheight = ((((umask & HeightValue) ? uheight :
- ((dmask & HeightValue) ? dheight : 1)) * height_inc) +
- base_height);
-
- /*
- * Make sure computed size is within limits. Note that we always do the
- * lower bounds check since the base size (which defaults to 0) should
- * be used if a minimum size isn't specified.
- */
- if (rwidth < min_width) rwidth = min_width;
- if (rheight < min_height) rheight = min_height;
-
- if (hints->flags & PMaxSize) {
- if (rwidth > hints->max_width) rwidth = hints->max_width;
- if (rheight > hints->max_height) rheight = hints->max_height;
- }
-
-
- /*
- * Compute the location. Set the negative flags in the return mask
- * (and watch out for borders), if necessary.
- */
- if (umask & XValue) {
- rx = ((umask & XNegative) ?
- (DisplayWidth (dpy, screen) + ux - rwidth - 2 * bwidth) : ux);
- } else if (dmask & XValue) {
- if (dmask & XNegative) {
- rx = (DisplayWidth (dpy, screen) + dx - rwidth - 2 * bwidth);
- rmask |= XNegative;
- } else
- rx = dx;
- } else {
- rx = 0; /* gotta choose something... */
- }
-
- if (umask & YValue) {
- ry = ((umask & YNegative) ?
- (DisplayHeight(dpy, screen) + uy - rheight - 2 * bwidth) : uy);
- } else if (dmask & YValue) {
- if (dmask & YNegative) {
- ry = (DisplayHeight(dpy, screen) + dy - rheight - 2 * bwidth);
- rmask |= YNegative;
- } else
- ry = dy;
- } else {
- ry = 0; /* gotta choose something... */
- }
-
-
- /*
- * All finished, so set the return variables.
- */
- *x_return = rx;
- *y_return = ry;
- *width_return = rwidth;
- *height_return = rheight;
- *gravity_return = _GeometryMaskToGravity (rmask);
- return rmask;
-}
-
-
-static int _GeometryMaskToGravity(
- int mask)
-{
- switch (mask & (XNegative|YNegative)) {
- case 0:
- return NorthWestGravity;
- case XNegative:
- return NorthEastGravity;
- case YNegative:
- return SouthWestGravity;
- default:
- return SouthEastGravity;
- }
-}
+/*
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+
+static int _GeometryMaskToGravity(
+ int mask);
+
+/*
+ * This routine given a user supplied positional argument and a default
+ * argument (fully qualified) will return the position the window should take
+ * as well as the gravity to be set in the WM_NORMAL_HINTS size hints.
+ * Always sets all return values and returns a mask describing which fields
+ * were set by the user or'ed with whether or not the x and y values should
+ * be considered "negative".
+ */
+
+int
+XWMGeometry (
+ Display *dpy, /* user's display connection */
+ int screen, /* screen on which to do computation */
+ _Xconst char *user_geom, /* user provided geometry spec */
+ _Xconst char *def_geom, /* default geometry spec for window */
+ unsigned int bwidth, /* border width */
+ XSizeHints *hints, /* usually WM_NORMAL_HINTS */
+ int *x_return, /* location of window */
+ int *y_return, /* location of window */
+ int *width_return, /* size of window */
+ int *height_return, /* size of window */
+ int *gravity_return) /* gravity of window */
+{
+ int ux, uy; /* returned values from parse */
+ unsigned int uwidth, uheight; /* returned values from parse */
+ int umask; /* parse mask of returned values */
+ int dx, dy; /* default values from parse */
+ unsigned int dwidth, dheight; /* default values from parse */
+ int dmask; /* parse mask of returned values */
+ int base_width, base_height; /* valid amounts */
+ int min_width, min_height; /* valid amounts */
+ int width_inc, height_inc; /* valid amounts */
+ int rx, ry, rwidth, rheight; /* return values */
+ int rmask; /* return mask */
+
+ /*
+ * Get the base sizes and increments. Section 4.1.2.3 of the ICCCM
+ * states that the base and minimum sizes are defaults for each other.
+ * If neither is given, then the base sizes should be 0. These parameters
+ * control the sets of sizes that window managers should allow for the
+ * window according to the following formulae:
+ *
+ * width = base_width + (i * width_inc)
+ * height = base_height + (j * height_inc)
+ */
+ base_width = ((hints->flags & PBaseSize) ? hints->base_width :
+ ((hints->flags & PMinSize) ? hints->min_width : 0));
+ base_height = ((hints->flags & PBaseSize) ? hints->base_height :
+ ((hints->flags & PMinSize) ? hints->min_height : 0));
+ min_width = ((hints->flags & PMinSize) ? hints->min_width : base_width);
+ min_height = ((hints->flags & PMinSize) ? hints->min_height : base_height);
+ width_inc = (hints->flags & PResizeInc) ? hints->width_inc : 1;
+ height_inc = (hints->flags & PResizeInc) ? hints->height_inc : 1;
+
+
+ /*
+ * parse the two geometry masks
+ */
+ rmask = umask = XParseGeometry (user_geom, &ux, &uy, &uwidth, &uheight);
+ dmask = XParseGeometry (def_geom, &dx, &dy, &dwidth, &dheight);
+
+
+ /*
+ * get the width and height:
+ * 1. if user-specified, then take that value
+ * 2. else, if program-specified, then take that value
+ * 3. else, take 1
+ * 4. multiply by the size increment
+ * 5. and add to the base size
+ */
+ rwidth = ((((umask & WidthValue) ? uwidth :
+ ((dmask & WidthValue) ? dwidth : 1)) * width_inc) +
+ base_width);
+ rheight = ((((umask & HeightValue) ? uheight :
+ ((dmask & HeightValue) ? dheight : 1)) * height_inc) +
+ base_height);
+
+ /*
+ * Make sure computed size is within limits. Note that we always do the
+ * lower bounds check since the base size (which defaults to 0) should
+ * be used if a minimum size isn't specified.
+ */
+ if (rwidth < min_width) rwidth = min_width;
+ if (rheight < min_height) rheight = min_height;
+
+ if (hints->flags & PMaxSize) {
+ if (rwidth > hints->max_width) rwidth = hints->max_width;
+ if (rheight > hints->max_height) rheight = hints->max_height;
+ }
+
+
+ /*
+ * Compute the location. Set the negative flags in the return mask
+ * (and watch out for borders), if necessary.
+ */
+ if (umask & XValue) {
+ rx = ((umask & XNegative) ?
+ (DisplayWidth (dpy, screen) + ux - rwidth - 2 * bwidth) : ux);
+ } else if (dmask & XValue) {
+ if (dmask & XNegative) {
+ rx = (DisplayWidth (dpy, screen) + dx - rwidth - 2 * bwidth);
+ rmask |= XNegative;
+ } else
+ rx = dx;
+ } else {
+ rx = 0; /* gotta choose something... */
+ }
+
+ if (umask & YValue) {
+ ry = ((umask & YNegative) ?
+ (DisplayHeight(dpy, screen) + uy - rheight - 2 * bwidth) : uy);
+ } else if (dmask & YValue) {
+ if (dmask & YNegative) {
+ ry = (DisplayHeight(dpy, screen) + dy - rheight - 2 * bwidth);
+ rmask |= YNegative;
+ } else
+ ry = dy;
+ } else {
+ ry = 0; /* gotta choose something... */
+ }
+
+
+ /*
+ * All finished, so set the return variables.
+ */
+ *x_return = rx;
+ *y_return = ry;
+ *width_return = rwidth;
+ *height_return = rheight;
+ *gravity_return = _GeometryMaskToGravity (rmask);
+ return rmask;
+}
+
+
+static int _GeometryMaskToGravity(
+ int mask)
+{
+ switch (mask & (XNegative|YNegative)) {
+ case 0:
+ return NorthWestGravity;
+ case XNegative:
+ return NorthEastGravity;
+ case YNegative:
+ return SouthWestGravity;
+ default:
+ return SouthEastGravity;
+ }
+}
diff --git a/libX11/src/WMProps.c b/libX11/src/WMProps.c
index 3ccb654fa..732a5cb3b 100644
--- a/libX11/src/WMProps.c
+++ b/libX11/src/WMProps.c
@@ -1,147 +1,147 @@
-/*
-
-Copyright 1987, 1988, 1993, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
-Copyright 1987 by 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 name of Wyse not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/Xos.h>
-#include <X11/Xlocale.h>
-
-
-/*
- * XSetWMProperties sets the following properties:
- * WM_NAME type: TEXT format: varies?
- * WM_ICON_NAME type: TEXT format: varies?
- * WM_HINTS type: WM_HINTS format: 32
- * WM_COMMAND type: TEXT format: varies?
- * WM_CLIENT_MACHINE type: TEXT format: varies?
- * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
- * WM_CLASS type: STRING/STRING format: 8
- * WM_LOCALE_NAME type: STRING format: 8
- */
-
-void XSetWMProperties (
- Display *dpy,
- Window w, /* window to decorate */
- XTextProperty *windowName, /* name of application */
- XTextProperty *iconName, /* name string for icon */
- char **argv, /* command line */
- int argc, /* size of command line */
- XSizeHints *sizeHints, /* size hints for window in its normal state */
- XWMHints *wmHints, /* miscelaneous window manager hints */
- XClassHint *classHints) /* resource name and class */
-{
- XTextProperty textprop;
- char hostName[256];
- int len = _XGetHostname (hostName, sizeof hostName);
- char *locale;
-
- /* set names of window and icon */
- if (windowName) XSetWMName (dpy, w, windowName);
- if (iconName) XSetWMIconName (dpy, w, iconName);
-
- /* set the command if given */
- if (argv) {
- /*
- * for UNIX and other operating systems which use nul-terminated
- * arrays of STRINGs.
- */
- XSetCommand (dpy, w, argv, argc);
- }
-
- /* set the name of the machine on which this application is running */
- textprop.value = (unsigned char *) hostName;
- textprop.encoding = XA_STRING;
- textprop.format = 8;
- textprop.nitems = len;
- XSetWMClientMachine (dpy, w, &textprop);
-
- /* set hints about how geometry and window manager interaction */
- if (sizeHints) XSetWMNormalHints (dpy, w, sizeHints);
- if (wmHints) XSetWMHints (dpy, w, wmHints);
- if (classHints) {
- XClassHint tmp;
-
- if (!classHints->res_name) {
- tmp.res_name = getenv ("RESOURCE_NAME");
- if (!tmp.res_name && argv && argv[0]) {
- /*
- * UNIX uses /dir/subdir/.../basename; other operating
- * systems will have to change this.
- */
- char *cp = strrchr (argv[0], '/');
-#ifdef __UNIXOS2__
- char *os2_cp = strrchr (argv[0],'\\');
- char *dot_cp = strrchr (argv[0],'.');
- if (os2_cp && (os2_cp > cp)) {
- if(dot_cp && (dot_cp > os2_cp)) *dot_cp = '\0';
- cp=os2_cp;
- }
-#endif
- tmp.res_name = (cp ? cp + 1 : argv[0]);
- }
- tmp.res_class = classHints->res_class;
- classHints = &tmp;
- }
- XSetClassHint (dpy, w, classHints);
- }
-
- locale = setlocale(LC_CTYPE, (char *)NULL);
- if (locale)
- XChangeProperty (dpy, w, XInternAtom(dpy, "WM_LOCALE_NAME", False),
- XA_STRING, 8, PropModeReplace,
- (unsigned char *)locale, strlen(locale));
-}
-
+/*
+
+Copyright 1987, 1988, 1993, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
+Copyright 1987 by 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 name of Wyse not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include <X11/Xos.h>
+#include <X11/Xlocale.h>
+
+
+/*
+ * XSetWMProperties sets the following properties:
+ * WM_NAME type: TEXT format: varies?
+ * WM_ICON_NAME type: TEXT format: varies?
+ * WM_HINTS type: WM_HINTS format: 32
+ * WM_COMMAND type: TEXT format: varies?
+ * WM_CLIENT_MACHINE type: TEXT format: varies?
+ * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
+ * WM_CLASS type: STRING/STRING format: 8
+ * WM_LOCALE_NAME type: STRING format: 8
+ */
+
+void XSetWMProperties (
+ Display *dpy,
+ Window w, /* window to decorate */
+ XTextProperty *windowName, /* name of application */
+ XTextProperty *iconName, /* name string for icon */
+ char **argv, /* command line */
+ int argc, /* size of command line */
+ XSizeHints *sizeHints, /* size hints for window in its normal state */
+ XWMHints *wmHints, /* miscelaneous window manager hints */
+ XClassHint *classHints) /* resource name and class */
+{
+ XTextProperty textprop;
+ char hostName[256];
+ int len = _XGetHostname (hostName, sizeof hostName);
+ char *locale;
+
+ /* set names of window and icon */
+ if (windowName) XSetWMName (dpy, w, windowName);
+ if (iconName) XSetWMIconName (dpy, w, iconName);
+
+ /* set the command if given */
+ if (argv) {
+ /*
+ * for UNIX and other operating systems which use nul-terminated
+ * arrays of STRINGs.
+ */
+ XSetCommand (dpy, w, argv, argc);
+ }
+
+ /* set the name of the machine on which this application is running */
+ textprop.value = (unsigned char *) hostName;
+ textprop.encoding = XA_STRING;
+ textprop.format = 8;
+ textprop.nitems = len;
+ XSetWMClientMachine (dpy, w, &textprop);
+
+ /* set hints about how geometry and window manager interaction */
+ if (sizeHints) XSetWMNormalHints (dpy, w, sizeHints);
+ if (wmHints) XSetWMHints (dpy, w, wmHints);
+ if (classHints) {
+ XClassHint tmp;
+
+ if (!classHints->res_name) {
+ tmp.res_name = getenv ("RESOURCE_NAME");
+ if (!tmp.res_name && argv && argv[0]) {
+ /*
+ * UNIX uses /dir/subdir/.../basename; other operating
+ * systems will have to change this.
+ */
+ char *cp = strrchr (argv[0], '/');
+#ifdef __UNIXOS2__
+ char *os2_cp = strrchr (argv[0],'\\');
+ char *dot_cp = strrchr (argv[0],'.');
+ if (os2_cp && (os2_cp > cp)) {
+ if(dot_cp && (dot_cp > os2_cp)) *dot_cp = '\0';
+ cp=os2_cp;
+ }
+#endif
+ tmp.res_name = (cp ? cp + 1 : argv[0]);
+ }
+ tmp.res_class = classHints->res_class;
+ classHints = &tmp;
+ }
+ XSetClassHint (dpy, w, classHints);
+ }
+
+ locale = setlocale(LC_CTYPE, (char *)NULL);
+ if (locale)
+ XChangeProperty (dpy, w, XInternAtom(dpy, "WM_LOCALE_NAME", False),
+ XA_STRING, 8, PropModeReplace,
+ (unsigned char *)locale, strlen(locale));
+}
+
diff --git a/libX11/src/WarpPtr.c b/libX11/src/WarpPtr.c
index c88ca4704..f3c889165 100644
--- a/libX11/src/WarpPtr.c
+++ b/libX11/src/WarpPtr.c
@@ -1,60 +1,60 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XWarpPointer(
- register Display *dpy,
- Window src_win,
- Window dest_win,
- int src_x,
- int src_y,
- unsigned int src_width,
- unsigned int src_height,
- int dest_x,
- int dest_y)
-{
- register xWarpPointerReq *req;
-
- LockDisplay(dpy);
- GetReq(WarpPointer, req);
- req->srcWid = src_win;
- req->dstWid = dest_win;
- req->srcX = src_x;
- req->srcY = src_y;
- req->srcWidth = src_width;
- req->srcHeight = src_height;
- req->dstX = dest_x;
- req->dstY = dest_y;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XWarpPointer(
+ register Display *dpy,
+ Window src_win,
+ Window dest_win,
+ int src_x,
+ int src_y,
+ unsigned int src_width,
+ unsigned int src_height,
+ int dest_x,
+ int dest_y)
+{
+ register xWarpPointerReq *req;
+
+ LockDisplay(dpy);
+ GetReq(WarpPointer, req);
+ req->srcWid = src_win;
+ req->dstWid = dest_win;
+ req->srcX = src_x;
+ req->srcY = src_y;
+ req->srcWidth = src_width;
+ req->srcHeight = src_height;
+ req->dstX = dest_x;
+ req->dstY = dest_y;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Window.c b/libX11/src/Window.c
index 341efee0f..1bceef819 100644
--- a/libX11/src/Window.c
+++ b/libX11/src/Window.c
@@ -1,144 +1,144 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#ifdef _MSC_VER
-#undef CreateWindow
-#endif
-
-void _XProcessWindowAttributes (
- register Display *dpy,
- xChangeWindowAttributesReq *req,
- register unsigned long valuemask,
- register XSetWindowAttributes *attributes)
-{
- unsigned long values[32];
- register unsigned long *value = values;
- unsigned int nvalues;
-
- if (valuemask & CWBackPixmap)
- *value++ = attributes->background_pixmap;
-
- if (valuemask & CWBackPixel)
- *value++ = attributes->background_pixel;
-
- if (valuemask & CWBorderPixmap)
- *value++ = attributes->border_pixmap;
-
- if (valuemask & CWBorderPixel)
- *value++ = attributes->border_pixel;
-
- if (valuemask & CWBitGravity)
- *value++ = attributes->bit_gravity;
-
- if (valuemask & CWWinGravity)
- *value++ = attributes->win_gravity;
-
- if (valuemask & CWBackingStore)
- *value++ = attributes->backing_store;
-
- if (valuemask & CWBackingPlanes)
- *value++ = attributes->backing_planes;
-
- if (valuemask & CWBackingPixel)
- *value++ = attributes->backing_pixel;
-
- if (valuemask & CWOverrideRedirect)
- *value++ = attributes->override_redirect;
-
- if (valuemask & CWSaveUnder)
- *value++ = attributes->save_under;
-
- if (valuemask & CWEventMask)
- *value++ = attributes->event_mask;
-
- if (valuemask & CWDontPropagate)
- *value++ = attributes->do_not_propagate_mask;
-
- if (valuemask & CWColormap)
- *value++ = attributes->colormap;
-
- if (valuemask & CWCursor)
- *value++ = attributes->cursor;
-
- req->length += (nvalues = value - values);
-
- nvalues <<= 2; /* watch out for macros... */
- Data32 (dpy, (long *) values, (long)nvalues);
-
-}
-
-#define AllMaskBits (CWBackPixmap|CWBackPixel|CWBorderPixmap|\
- CWBorderPixel|CWBitGravity|CWWinGravity|\
- CWBackingStore|CWBackingPlanes|CWBackingPixel|\
- CWOverrideRedirect|CWSaveUnder|CWEventMask|\
- CWDontPropagate|CWColormap|CWCursor)
-
-Window XCreateWindow(
- register Display *dpy,
- Window parent,
- int x,
- int y,
- unsigned int width,
- unsigned int height,
- unsigned int borderWidth,
- int depth,
- unsigned int class,
- Visual *visual,
- unsigned long valuemask,
- XSetWindowAttributes *attributes)
-{
- Window wid;
- register xCreateWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(CreateWindow, req);
- req->parent = parent;
- req->x = x;
- req->y = y;
- req->width = width;
- req->height = height;
- req->borderWidth = borderWidth;
- req->depth = depth;
- req->class = class;
- if (visual == CopyFromParent)
- req->visual = CopyFromParent;
- else
- req->visual = visual->visualid;
- wid = req->wid = XAllocID(dpy);
- valuemask &= AllMaskBits;
- if ((req->mask = valuemask))
- _XProcessWindowAttributes (dpy, (xChangeWindowAttributesReq *)req,
- valuemask, attributes);
- UnlockDisplay(dpy);
- SyncHandle();
- return (wid);
- }
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#ifdef _MSC_VER
+#undef CreateWindow
+#endif
+
+void _XProcessWindowAttributes (
+ register Display *dpy,
+ xChangeWindowAttributesReq *req,
+ register unsigned long valuemask,
+ register XSetWindowAttributes *attributes)
+{
+ unsigned long values[32];
+ register unsigned long *value = values;
+ unsigned int nvalues;
+
+ if (valuemask & CWBackPixmap)
+ *value++ = attributes->background_pixmap;
+
+ if (valuemask & CWBackPixel)
+ *value++ = attributes->background_pixel;
+
+ if (valuemask & CWBorderPixmap)
+ *value++ = attributes->border_pixmap;
+
+ if (valuemask & CWBorderPixel)
+ *value++ = attributes->border_pixel;
+
+ if (valuemask & CWBitGravity)
+ *value++ = attributes->bit_gravity;
+
+ if (valuemask & CWWinGravity)
+ *value++ = attributes->win_gravity;
+
+ if (valuemask & CWBackingStore)
+ *value++ = attributes->backing_store;
+
+ if (valuemask & CWBackingPlanes)
+ *value++ = attributes->backing_planes;
+
+ if (valuemask & CWBackingPixel)
+ *value++ = attributes->backing_pixel;
+
+ if (valuemask & CWOverrideRedirect)
+ *value++ = attributes->override_redirect;
+
+ if (valuemask & CWSaveUnder)
+ *value++ = attributes->save_under;
+
+ if (valuemask & CWEventMask)
+ *value++ = attributes->event_mask;
+
+ if (valuemask & CWDontPropagate)
+ *value++ = attributes->do_not_propagate_mask;
+
+ if (valuemask & CWColormap)
+ *value++ = attributes->colormap;
+
+ if (valuemask & CWCursor)
+ *value++ = attributes->cursor;
+
+ req->length += (nvalues = value - values);
+
+ nvalues <<= 2; /* watch out for macros... */
+ Data32 (dpy, (long *) values, (long)nvalues);
+
+}
+
+#define AllMaskBits (CWBackPixmap|CWBackPixel|CWBorderPixmap|\
+ CWBorderPixel|CWBitGravity|CWWinGravity|\
+ CWBackingStore|CWBackingPlanes|CWBackingPixel|\
+ CWOverrideRedirect|CWSaveUnder|CWEventMask|\
+ CWDontPropagate|CWColormap|CWCursor)
+
+Window XCreateWindow(
+ register Display *dpy,
+ Window parent,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height,
+ unsigned int borderWidth,
+ int depth,
+ unsigned int class,
+ Visual *visual,
+ unsigned long valuemask,
+ XSetWindowAttributes *attributes)
+{
+ Window wid;
+ register xCreateWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CreateWindow, req);
+ req->parent = parent;
+ req->x = x;
+ req->y = y;
+ req->width = width;
+ req->height = height;
+ req->borderWidth = borderWidth;
+ req->depth = depth;
+ req->class = class;
+ if (visual == CopyFromParent)
+ req->visual = CopyFromParent;
+ else
+ req->visual = visual->visualid;
+ wid = req->wid = XAllocID(dpy);
+ valuemask &= AllMaskBits;
+ if ((req->mask = valuemask))
+ _XProcessWindowAttributes (dpy, (xChangeWindowAttributesReq *)req,
+ valuemask, attributes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (wid);
+ }
+
diff --git a/libX11/src/WrBitF.c b/libX11/src/WrBitF.c
index 1ec6280fb..e6d3fa0e0 100644
--- a/libX11/src/WrBitF.c
+++ b/libX11/src/WrBitF.c
@@ -1,156 +1,156 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xos.h>
-#include "Xutil.h"
-#include <stdio.h>
-
-#define ERR_RETURN NULL
-
-static char *Format_Image(
- XImage *image,
- int *resultsize)
-{
- register int x, c, b;
- register char *ptr;
- int y;
- char *data;
- int width, height;
- int bytes_per_line;
-
- width = image->width;
- height = image->height;
-
- bytes_per_line = (width+7)/8;
- *resultsize = bytes_per_line * height; /* Calculate size of data */
-
- data = (char *) Xmalloc( *resultsize ); /* Get space for data */
- if (!data)
- return(ERR_RETURN);
-
- /*
- * The slow but robust brute force method of converting the image:
- */
- ptr = data;
- c = 0; b=1;
- for (y=0; y<height; y++) {
- for (x=0; x<width;) {
- if (XGetPixel(image, x, y))
- c |= b;
- b <<= 1;
- if (!(++x & 7)) {
- *(ptr++)=c;
- c=0; b=1;
- }
- }
- if (x & 7) {
- *(ptr++)=c;
- c=0; b=1;
- }
- }
-
- return(data);
-}
-
-#define BYTES_PER_OUTPUT_LINE 12
-
-int
-XWriteBitmapFile(
- Display *display,
- _Xconst char *filename,
- Pixmap bitmap,
- unsigned int width,
- unsigned int height,
- int x_hot,
- int y_hot)
-{
- char *data, *ptr;
- int size, byte;
- int c;
- XImage *image;
- FILE *stream;
- char *name;
-
- if (!(name = strrchr(filename, '/')))
- name = (char *)filename;
- else
- name++;
-
-#ifdef __UNIXOS2__
- filename = (char*)__XOS2RedirRoot(filename);
-#endif
- if (!(stream = fopen(filename, "w")))
- return(BitmapOpenFailed);
-
- /* Convert bitmap to an image */
- image = XGetImage(display, bitmap, 0,0,width, height, 1L, XYPixmap);
- if (!image) {
- fclose(stream);
- return(4); /* XXX spec does not say what to return */
- }
-
- /* Get standard format for data */
- data = Format_Image(image, &size);
- XDestroyImage(image);
- if (!data) {
- fclose(stream);
- return(BitmapNoMemory);
- }
-
- /* Write out standard header */
- fprintf(stream, "#define %s_width %d\n", name, width);
- fprintf(stream, "#define %s_height %d\n", name, height);
- if (x_hot != -1) {
- fprintf(stream, "#define %s_x_hot %d\n", name, x_hot);
- fprintf(stream, "#define %s_y_hot %d\n", name, y_hot);
- }
-
- /* Print out the data itself */
- fprintf(stream, "static unsigned char %s_bits[] = {", name);
- for (byte=0, ptr=data; byte<size; byte++, ptr++) {
- if (!byte)
- fprintf(stream, "\n ");
- else if (!(byte % BYTES_PER_OUTPUT_LINE))
- fprintf(stream, ",\n ");
- else
- fprintf(stream, ", ");
- c = *ptr;
- if (c<0)
- c += 256;
- fprintf(stream, "0x%02x", c);
- }
- fprintf(stream, "};\n");
-
- Xfree(data);
- fclose(stream);
- return(BitmapSuccess);
-}
+/*
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xos.h>
+#include "Xutil.h"
+#include <stdio.h>
+
+#define ERR_RETURN NULL
+
+static char *Format_Image(
+ XImage *image,
+ int *resultsize)
+{
+ register int x, c, b;
+ register char *ptr;
+ int y;
+ char *data;
+ int width, height;
+ int bytes_per_line;
+
+ width = image->width;
+ height = image->height;
+
+ bytes_per_line = (width+7)/8;
+ *resultsize = bytes_per_line * height; /* Calculate size of data */
+
+ data = (char *) Xmalloc( *resultsize ); /* Get space for data */
+ if (!data)
+ return(ERR_RETURN);
+
+ /*
+ * The slow but robust brute force method of converting the image:
+ */
+ ptr = data;
+ c = 0; b=1;
+ for (y=0; y<height; y++) {
+ for (x=0; x<width;) {
+ if (XGetPixel(image, x, y))
+ c |= b;
+ b <<= 1;
+ if (!(++x & 7)) {
+ *(ptr++)=c;
+ c=0; b=1;
+ }
+ }
+ if (x & 7) {
+ *(ptr++)=c;
+ c=0; b=1;
+ }
+ }
+
+ return(data);
+}
+
+#define BYTES_PER_OUTPUT_LINE 12
+
+int
+XWriteBitmapFile(
+ Display *display,
+ _Xconst char *filename,
+ Pixmap bitmap,
+ unsigned int width,
+ unsigned int height,
+ int x_hot,
+ int y_hot)
+{
+ char *data, *ptr;
+ int size, byte;
+ int c;
+ XImage *image;
+ FILE *stream;
+ char *name;
+
+ if (!(name = strrchr(filename, '/')))
+ name = (char *)filename;
+ else
+ name++;
+
+#ifdef __UNIXOS2__
+ filename = (char*)__XOS2RedirRoot(filename);
+#endif
+ if (!(stream = fopen(filename, "w")))
+ return(BitmapOpenFailed);
+
+ /* Convert bitmap to an image */
+ image = XGetImage(display, bitmap, 0,0,width, height, 1L, XYPixmap);
+ if (!image) {
+ fclose(stream);
+ return(4); /* XXX spec does not say what to return */
+ }
+
+ /* Get standard format for data */
+ data = Format_Image(image, &size);
+ XDestroyImage(image);
+ if (!data) {
+ fclose(stream);
+ return(BitmapNoMemory);
+ }
+
+ /* Write out standard header */
+ fprintf(stream, "#define %s_width %d\n", name, width);
+ fprintf(stream, "#define %s_height %d\n", name, height);
+ if (x_hot != -1) {
+ fprintf(stream, "#define %s_x_hot %d\n", name, x_hot);
+ fprintf(stream, "#define %s_y_hot %d\n", name, y_hot);
+ }
+
+ /* Print out the data itself */
+ fprintf(stream, "static unsigned char %s_bits[] = {", name);
+ for (byte=0, ptr=data; byte<size; byte++, ptr++) {
+ if (!byte)
+ fprintf(stream, "\n ");
+ else if (!(byte % BYTES_PER_OUTPUT_LINE))
+ fprintf(stream, ",\n ");
+ else
+ fprintf(stream, ", ");
+ c = *ptr;
+ if (c<0)
+ c += 256;
+ fprintf(stream, "0x%02x", c);
+ }
+ fprintf(stream, "};\n");
+
+ Xfree(data);
+ fclose(stream);
+ return(BitmapSuccess);
+}
diff --git a/libX11/src/Xatomtype.h b/libX11/src/Xatomtype.h
index 1b2b47766..ad4094a4b 100644
--- a/libX11/src/Xatomtype.h
+++ b/libX11/src/Xatomtype.h
@@ -1,133 +1,133 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#ifndef _XATOMTYPE_H_
-#define _XATOMTYPE_H_
-
-/*
- * This files defines crock C structures for calling XGetWindowProperty and
- * XChangeProperty. All fields must be longs as the semantics of property
- * routines will handle conversion to and from actual 32 bit objects. If your
- * compiler doesn't treat &structoflongs the same as &arrayoflongs[0], you
- * will have some work to do.
- */
-
-#define BOOL long
-#define SIGNEDINT long
-#define UNSIGNEDINT unsigned long
-#define RESOURCEID unsigned long
-
-
-/* this structure may be extended, but do not change the order */
-typedef struct {
- UNSIGNEDINT flags;
- SIGNEDINT x, y, width, height; /* need to cvt; only for pre-ICCCM */
- SIGNEDINT minWidth, minHeight; /* need to cvt */
- SIGNEDINT maxWidth, maxHeight; /* need to cvt */
- SIGNEDINT widthInc, heightInc; /* need to cvt */
- SIGNEDINT minAspectX, minAspectY; /* need to cvt */
- SIGNEDINT maxAspectX, maxAspectY; /* need to cvt */
- SIGNEDINT baseWidth,baseHeight; /* need to cvt; ICCCM version 1 */
- SIGNEDINT winGravity; /* need to cvt; ICCCM version 1 */
-} xPropSizeHints;
-#define OldNumPropSizeElements 15 /* pre-ICCCM */
-#define NumPropSizeElements 18 /* ICCCM version 1 */
-
-/* this structure may be extended, but do not change the order */
-/* RGB properties */
-typedef struct {
- RESOURCEID colormap;
- UNSIGNEDINT red_max;
- UNSIGNEDINT red_mult;
- UNSIGNEDINT green_max;
- UNSIGNEDINT green_mult;
- UNSIGNEDINT blue_max;
- UNSIGNEDINT blue_mult;
- UNSIGNEDINT base_pixel;
- RESOURCEID visualid; /* ICCCM version 1 */
- RESOURCEID killid; /* ICCCM version 1 */
-} xPropStandardColormap;
-#define OldNumPropStandardColormapElements 8 /* pre-ICCCM */
-#define NumPropStandardColormapElements 10 /* ICCCM version 1 */
-
-
-/* this structure may be extended, but do not change the order */
-typedef struct {
- UNSIGNEDINT flags;
- BOOL input; /* need to convert */
- SIGNEDINT initialState; /* need to cvt */
- RESOURCEID iconPixmap;
- RESOURCEID iconWindow;
- SIGNEDINT iconX; /* need to cvt */
- SIGNEDINT iconY; /* need to cvt */
- RESOURCEID iconMask;
- UNSIGNEDINT windowGroup;
- } xPropWMHints;
-#define NumPropWMHintsElements 9 /* number of elements in this structure */
-
-/* this structure defines the icon size hints information */
-typedef struct {
- SIGNEDINT minWidth, minHeight; /* need to cvt */
- SIGNEDINT maxWidth, maxHeight; /* need to cvt */
- SIGNEDINT widthInc, heightInc; /* need to cvt */
- } xPropIconSize;
-#define NumPropIconSizeElements 6 /* number of elements in this structure */
-
-/* this structure defines the window manager state information */
-typedef struct {
- SIGNEDINT state; /* need to cvt */
- RESOURCEID iconWindow;
-} xPropWMState;
-#define NumPropWMStateElements 2 /* number of elements in struct */
-
-#undef BOOL
-#undef SIGNEDINT
-#undef UNSIGNEDINT
-#undef RESOURCEID
-
-#endif /* _XATOMTYPE_H_ */
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#ifndef _XATOMTYPE_H_
+#define _XATOMTYPE_H_
+
+/*
+ * This files defines crock C structures for calling XGetWindowProperty and
+ * XChangeProperty. All fields must be longs as the semantics of property
+ * routines will handle conversion to and from actual 32 bit objects. If your
+ * compiler doesn't treat &structoflongs the same as &arrayoflongs[0], you
+ * will have some work to do.
+ */
+
+#define BOOL long
+#define SIGNEDINT long
+#define UNSIGNEDINT unsigned long
+#define RESOURCEID unsigned long
+
+
+/* this structure may be extended, but do not change the order */
+typedef struct {
+ UNSIGNEDINT flags;
+ SIGNEDINT x, y, width, height; /* need to cvt; only for pre-ICCCM */
+ SIGNEDINT minWidth, minHeight; /* need to cvt */
+ SIGNEDINT maxWidth, maxHeight; /* need to cvt */
+ SIGNEDINT widthInc, heightInc; /* need to cvt */
+ SIGNEDINT minAspectX, minAspectY; /* need to cvt */
+ SIGNEDINT maxAspectX, maxAspectY; /* need to cvt */
+ SIGNEDINT baseWidth,baseHeight; /* need to cvt; ICCCM version 1 */
+ SIGNEDINT winGravity; /* need to cvt; ICCCM version 1 */
+} xPropSizeHints;
+#define OldNumPropSizeElements 15 /* pre-ICCCM */
+#define NumPropSizeElements 18 /* ICCCM version 1 */
+
+/* this structure may be extended, but do not change the order */
+/* RGB properties */
+typedef struct {
+ RESOURCEID colormap;
+ UNSIGNEDINT red_max;
+ UNSIGNEDINT red_mult;
+ UNSIGNEDINT green_max;
+ UNSIGNEDINT green_mult;
+ UNSIGNEDINT blue_max;
+ UNSIGNEDINT blue_mult;
+ UNSIGNEDINT base_pixel;
+ RESOURCEID visualid; /* ICCCM version 1 */
+ RESOURCEID killid; /* ICCCM version 1 */
+} xPropStandardColormap;
+#define OldNumPropStandardColormapElements 8 /* pre-ICCCM */
+#define NumPropStandardColormapElements 10 /* ICCCM version 1 */
+
+
+/* this structure may be extended, but do not change the order */
+typedef struct {
+ UNSIGNEDINT flags;
+ BOOL input; /* need to convert */
+ SIGNEDINT initialState; /* need to cvt */
+ RESOURCEID iconPixmap;
+ RESOURCEID iconWindow;
+ SIGNEDINT iconX; /* need to cvt */
+ SIGNEDINT iconY; /* need to cvt */
+ RESOURCEID iconMask;
+ UNSIGNEDINT windowGroup;
+ } xPropWMHints;
+#define NumPropWMHintsElements 9 /* number of elements in this structure */
+
+/* this structure defines the icon size hints information */
+typedef struct {
+ SIGNEDINT minWidth, minHeight; /* need to cvt */
+ SIGNEDINT maxWidth, maxHeight; /* need to cvt */
+ SIGNEDINT widthInc, heightInc; /* need to cvt */
+ } xPropIconSize;
+#define NumPropIconSizeElements 6 /* number of elements in this structure */
+
+/* this structure defines the window manager state information */
+typedef struct {
+ SIGNEDINT state; /* need to cvt */
+ RESOURCEID iconWindow;
+} xPropWMState;
+#define NumPropWMStateElements 2 /* number of elements in struct */
+
+#undef BOOL
+#undef SIGNEDINT
+#undef UNSIGNEDINT
+#undef RESOURCEID
+
+#endif /* _XATOMTYPE_H_ */
diff --git a/libX11/src/Xintatom.h b/libX11/src/Xintatom.h
index 82dba36e1..ba344f7f9 100644
--- a/libX11/src/Xintatom.h
+++ b/libX11/src/Xintatom.h
@@ -1,32 +1,32 @@
-
-#ifndef _XINTATOM_H_
-#define _XINTATOM_H_ 1
-
-#include <X11/Xfuncproto.h>
-
-/* IntAtom.c */
-
-#define TABLESIZE 64
-
-typedef struct _Entry {
- unsigned long sig;
- Atom atom;
-} EntryRec, *Entry;
-
-#define RESERVED ((Entry) 1)
-
-#define EntryName(e) ((char *)(e+1))
-
-typedef struct _XDisplayAtoms {
- Entry table[TABLESIZE];
-} AtomTable;
-
-_XFUNCPROTOBEGIN
-
-extern void _XUpdateAtomCache(Display *dpy, const char *name, Atom atom,
- unsigned long sig, int idx, int n);
-extern void _XFreeAtomTable(Display *dpy);
-
-_XFUNCPROTOEND
-
-#endif /* _XINTATOM_H_ */
+
+#ifndef _XINTATOM_H_
+#define _XINTATOM_H_ 1
+
+#include <X11/Xfuncproto.h>
+
+/* IntAtom.c */
+
+#define TABLESIZE 64
+
+typedef struct _Entry {
+ unsigned long sig;
+ Atom atom;
+} EntryRec, *Entry;
+
+#define RESERVED ((Entry) 1)
+
+#define EntryName(e) ((char *)(e+1))
+
+typedef struct _XDisplayAtoms {
+ Entry table[TABLESIZE];
+} AtomTable;
+
+_XFUNCPROTOBEGIN
+
+extern void _XUpdateAtomCache(Display *dpy, const char *name, Atom atom,
+ unsigned long sig, int idx, int n);
+extern void _XFreeAtomTable(Display *dpy);
+
+_XFUNCPROTOEND
+
+#endif /* _XINTATOM_H_ */
diff --git a/libX11/src/XomGeneric.h b/libX11/src/XomGeneric.h
index d6f182d19..ab7c7e636 100644
--- a/libX11/src/XomGeneric.h
+++ b/libX11/src/XomGeneric.h
@@ -1,316 +1,316 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-
-#ifndef _XOMGENERIC_H_
-#define _XOMGENERIC_H_
-
-#include "XlcPublic.h"
-
-#define XOM_GENERIC(om) (&((XOMGeneric) om)->gen)
-#define XOC_GENERIC(font_set) (&((XOCGeneric) font_set)->gen)
-
-/* For VW/UDC */
-typedef struct _CodeRangeRec {
- unsigned long start;
- unsigned long end;
- unsigned long dmy1;
- unsigned long dmy2;
-} CodeRangeRec, *CodeRange;
-
-typedef struct _VRotateRec {
- char *charset_name; /* Charset name */
- XlcSide side; /* Encoding side */
- int num_cr;
- CodeRange code_range;
- char *xlfd_name;
- XFontStruct *font;
-} VRotateRec, *VRotate;
-
-typedef enum {
- XOMMultiByte,
- XOMWideChar,
- XOMUtf8String
-} XOMTextType;
-
-typedef struct _FontDataRec {
- char *name;
- XlcSide side;
- /* For VW/UDC */
- int scopes_num;
- FontScope scopes;
- char *xlfd_name;
- XFontStruct *font;
-} FontDataRec, *FontData;
-
-#define VROTATE_NONE 0
-#define VROTATE_PART 1
-#define VROTATE_ALL 2
-
-typedef struct _OMDataRec {
- int charset_count;
- XlcCharSet *charset_list;
- int font_data_count;
- FontData font_data;
- /* For VW/UDC */
- int substitute_num;
- FontData substitute;
- /* Vertical Writing */
- int vmap_num;
- FontData vmap;
- int vrotate_type;
- int vrotate_num;
- CodeRange vrotate;
-} OMDataRec, *OMData;
-
-typedef struct _XOMGenericPart {
- int data_num;
- OMData data;
- Bool on_demand_loading;
- char *object_name;
-} XOMGenericPart;
-
-typedef struct _XOMGenericRec {
- XOMMethods methods;
- XOMCoreRec core;
- XOMGenericPart gen;
-} XOMGenericRec, *XOMGeneric;
-
-/*
- * XOC dependent data
- */
-
-typedef struct _FontSetRec {
- int id;
- int charset_count;
- XlcCharSet *charset_list;
- int font_data_count;
- FontData font_data;
- char *font_name;
- XFontStruct *info;
- XFontStruct *font;
- XlcSide side;
- Bool is_xchar2b;
- /* For VW/UDC */
- int substitute_num;
- FontData substitute;
- /* Vertical Writing */
- int vpart_initialize;
- int vmap_num;
- FontData vmap;
- int vrotate_num;
- VRotate vrotate;
-} FontSetRec, *FontSet;
-
-typedef struct _XOCGenericPart {
- XlcConv mbs_to_cs;
- XlcConv wcs_to_cs;
- XlcConv utf8_to_cs;
- int font_set_num;
- FontSet font_set;
-} XOCGenericPart;
-
-typedef struct _XOCGenericRec {
- XOCMethods methods;
- XOCCoreRec core;
- XOCGenericPart gen;
-} XOCGenericRec, *XOCGeneric;
-
-_XFUNCPROTOBEGIN
-
-extern XOM _XomGenericOpenOM(
- XLCd /* lcd */,
- Display* /* dpy */,
- XrmDatabase /* rdb */,
- _Xconst char* /* res_name */,
- _Xconst char* /* res_class */
-);
-
-extern XlcConv _XomInitConverter(
- XOC /* oc */,
- XOMTextType /* type */
-);
-
-extern int _XomConvert(
- XOC /* oc */,
- XlcConv /* conv */,
- XPointer* /* from */,
- int* /* from_left */,
- XPointer* /* to */,
- int* /* to_left */,
- XPointer* /* args */,
- int /* num_args */
-);
-
-extern int
-_XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length);
-extern int
-_XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
-extern int
-_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length);
-extern int
-_XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern int
-_XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern int
-_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern Status
-_XmbDefaultTextPerCharExtents(
- XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern Status
-_XwcDefaultTextPerCharExtents(
- XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern Status
-_Xutf8DefaultTextPerCharExtents(
- XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern int
-_XmbDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length);
-extern int
-_XwcDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst wchar_t *text, int length);
-extern int
-_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length);
-extern void
-_XmbDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length);
-extern void
-_XwcDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst wchar_t *text, int length);
-extern void
-_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length);
-
-extern int
-_XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length);
-extern int
-_XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern int
-_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length);
-extern void
-_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length);
-extern Status
-_Xutf8GenericTextPerCharExtents(
- XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern int
-_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern int
-_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length);
-extern void
-_XwcGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst wchar_t *text, int length);
-extern int
-_XwcGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst wchar_t *text, int length);
-extern Status
-_XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern int
-_XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern int
-_XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
-extern void
-_XmbGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length);
-extern int
-_XmbGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length);
-extern Status
-_XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-
-extern FontData
-read_EncodingInfo(
- int count,
- char **value);
-
-extern int
-_XomGenericDrawString(
- Display *dpy,
- Drawable d,
- XOC oc,
- GC gc,
- int x, int y,
- XOMTextType type,
- XPointer text,
- int length);
-extern int
-_XomGenericTextExtents(
- XOC oc,
- XOMTextType type,
- XPointer text,
- int length,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern FontData
-_XomGetFontDataFromFontSet(
- FontSet fs,
- unsigned char *str,
- int len,
- int *len_ret,
- int is2b,
- int type);
-
-_XFUNCPROTOEND
-
-#endif /* _XOMGENERIC_H_ */
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+
+#ifndef _XOMGENERIC_H_
+#define _XOMGENERIC_H_
+
+#include "XlcPublic.h"
+
+#define XOM_GENERIC(om) (&((XOMGeneric) om)->gen)
+#define XOC_GENERIC(font_set) (&((XOCGeneric) font_set)->gen)
+
+/* For VW/UDC */
+typedef struct _CodeRangeRec {
+ unsigned long start;
+ unsigned long end;
+ unsigned long dmy1;
+ unsigned long dmy2;
+} CodeRangeRec, *CodeRange;
+
+typedef struct _VRotateRec {
+ char *charset_name; /* Charset name */
+ XlcSide side; /* Encoding side */
+ int num_cr;
+ CodeRange code_range;
+ char *xlfd_name;
+ XFontStruct *font;
+} VRotateRec, *VRotate;
+
+typedef enum {
+ XOMMultiByte,
+ XOMWideChar,
+ XOMUtf8String
+} XOMTextType;
+
+typedef struct _FontDataRec {
+ char *name;
+ XlcSide side;
+ /* For VW/UDC */
+ int scopes_num;
+ FontScope scopes;
+ char *xlfd_name;
+ XFontStruct *font;
+} FontDataRec, *FontData;
+
+#define VROTATE_NONE 0
+#define VROTATE_PART 1
+#define VROTATE_ALL 2
+
+typedef struct _OMDataRec {
+ int charset_count;
+ XlcCharSet *charset_list;
+ int font_data_count;
+ FontData font_data;
+ /* For VW/UDC */
+ int substitute_num;
+ FontData substitute;
+ /* Vertical Writing */
+ int vmap_num;
+ FontData vmap;
+ int vrotate_type;
+ int vrotate_num;
+ CodeRange vrotate;
+} OMDataRec, *OMData;
+
+typedef struct _XOMGenericPart {
+ int data_num;
+ OMData data;
+ Bool on_demand_loading;
+ char *object_name;
+} XOMGenericPart;
+
+typedef struct _XOMGenericRec {
+ XOMMethods methods;
+ XOMCoreRec core;
+ XOMGenericPart gen;
+} XOMGenericRec, *XOMGeneric;
+
+/*
+ * XOC dependent data
+ */
+
+typedef struct _FontSetRec {
+ int id;
+ int charset_count;
+ XlcCharSet *charset_list;
+ int font_data_count;
+ FontData font_data;
+ char *font_name;
+ XFontStruct *info;
+ XFontStruct *font;
+ XlcSide side;
+ Bool is_xchar2b;
+ /* For VW/UDC */
+ int substitute_num;
+ FontData substitute;
+ /* Vertical Writing */
+ int vpart_initialize;
+ int vmap_num;
+ FontData vmap;
+ int vrotate_num;
+ VRotate vrotate;
+} FontSetRec, *FontSet;
+
+typedef struct _XOCGenericPart {
+ XlcConv mbs_to_cs;
+ XlcConv wcs_to_cs;
+ XlcConv utf8_to_cs;
+ int font_set_num;
+ FontSet font_set;
+} XOCGenericPart;
+
+typedef struct _XOCGenericRec {
+ XOCMethods methods;
+ XOCCoreRec core;
+ XOCGenericPart gen;
+} XOCGenericRec, *XOCGeneric;
+
+_XFUNCPROTOBEGIN
+
+extern XOM _XomGenericOpenOM(
+ XLCd /* lcd */,
+ Display* /* dpy */,
+ XrmDatabase /* rdb */,
+ _Xconst char* /* res_name */,
+ _Xconst char* /* res_class */
+);
+
+extern XlcConv _XomInitConverter(
+ XOC /* oc */,
+ XOMTextType /* type */
+);
+
+extern int _XomConvert(
+ XOC /* oc */,
+ XlcConv /* conv */,
+ XPointer* /* from */,
+ int* /* from_left */,
+ XPointer* /* to */,
+ int* /* to_left */,
+ XPointer* /* args */,
+ int /* num_args */
+);
+
+extern int
+_XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length);
+extern int
+_XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
+extern int
+_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length);
+extern int
+_XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern int
+_XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern int
+_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern Status
+_XmbDefaultTextPerCharExtents(
+ XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern Status
+_XwcDefaultTextPerCharExtents(
+ XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern Status
+_Xutf8DefaultTextPerCharExtents(
+ XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern int
+_XmbDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length);
+extern int
+_XwcDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst wchar_t *text, int length);
+extern int
+_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length);
+extern void
+_XmbDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length);
+extern void
+_XwcDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst wchar_t *text, int length);
+extern void
+_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length);
+
+extern int
+_XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length);
+extern int
+_XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern int
+_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length);
+extern void
+_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length);
+extern Status
+_Xutf8GenericTextPerCharExtents(
+ XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern int
+_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern int
+_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length);
+extern void
+_XwcGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst wchar_t *text, int length);
+extern int
+_XwcGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst wchar_t *text, int length);
+extern Status
+_XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern int
+_XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern int
+_XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
+extern void
+_XmbGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length);
+extern int
+_XmbGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length);
+extern Status
+_XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+
+extern FontData
+read_EncodingInfo(
+ int count,
+ char **value);
+
+extern int
+_XomGenericDrawString(
+ Display *dpy,
+ Drawable d,
+ XOC oc,
+ GC gc,
+ int x, int y,
+ XOMTextType type,
+ XPointer text,
+ int length);
+extern int
+_XomGenericTextExtents(
+ XOC oc,
+ XOMTextType type,
+ XPointer text,
+ int length,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern FontData
+_XomGetFontDataFromFontSet(
+ FontSet fs,
+ unsigned char *str,
+ int len,
+ int *len_ret,
+ int is2b,
+ int type);
+
+_XFUNCPROTOEND
+
+#endif /* _XOMGENERIC_H_ */
diff --git a/libX11/src/evtomask.c b/libX11/src/evtomask.c
index b108d2a88..fde80b440 100644
--- a/libX11/src/evtomask.c
+++ b/libX11/src/evtomask.c
@@ -1,74 +1,74 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/X.h>
-
-/*
- * This array can be used given an event type to determine the mask bits
- * that could have generated it.
- */
-long const _Xevent_to_mask [LASTEvent] = {
- 0, /* no event 0 */
- 0, /* no event 1 */
- KeyPressMask, /* KeyPress */
- KeyReleaseMask, /* KeyRelease */
- ButtonPressMask, /* ButtonPress */
- ButtonReleaseMask, /* ButtonRelease */
- PointerMotionMask|PointerMotionHintMask|Button1MotionMask|
- Button2MotionMask|Button3MotionMask|Button4MotionMask|
- Button5MotionMask|ButtonMotionMask, /* MotionNotify */
- EnterWindowMask, /* EnterNotify */
- LeaveWindowMask, /* LeaveNotify */
- FocusChangeMask, /* FocusIn */
- FocusChangeMask, /* FocusOut */
- KeymapStateMask, /* KeymapNotify */
- ExposureMask, /* Expose */
- ExposureMask, /* GraphicsExpose */
- ExposureMask, /* NoExpose */
- VisibilityChangeMask, /* VisibilityNotify */
- SubstructureNotifyMask, /* CreateNotify */
- StructureNotifyMask|SubstructureNotifyMask, /* DestroyNotify */
- StructureNotifyMask|SubstructureNotifyMask, /* UnmapNotify */
- StructureNotifyMask|SubstructureNotifyMask, /* MapNotify */
- SubstructureRedirectMask, /* MapRequest */
- SubstructureNotifyMask|StructureNotifyMask, /* ReparentNotify */
- StructureNotifyMask|SubstructureNotifyMask, /* ConfigureNotify */
- SubstructureRedirectMask, /* ConfigureRequest */
- SubstructureNotifyMask|StructureNotifyMask, /* GravityNotify */
- ResizeRedirectMask, /* ResizeRequest */
- SubstructureNotifyMask|StructureNotifyMask, /* CirculateNotify */
- SubstructureRedirectMask, /* CirculateRequest */
- PropertyChangeMask, /* PropertyNotify */
- 0, /* SelectionClear */
- 0, /* SelectionRequest */
- 0, /* SelectionNotify */
- ColormapChangeMask, /* ColormapNotify */
- 0, /* ClientMessage */
- 0, /* MappingNotify */
-};
+/*
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/X.h>
+
+/*
+ * This array can be used given an event type to determine the mask bits
+ * that could have generated it.
+ */
+long const _Xevent_to_mask [LASTEvent] = {
+ 0, /* no event 0 */
+ 0, /* no event 1 */
+ KeyPressMask, /* KeyPress */
+ KeyReleaseMask, /* KeyRelease */
+ ButtonPressMask, /* ButtonPress */
+ ButtonReleaseMask, /* ButtonRelease */
+ PointerMotionMask|PointerMotionHintMask|Button1MotionMask|
+ Button2MotionMask|Button3MotionMask|Button4MotionMask|
+ Button5MotionMask|ButtonMotionMask, /* MotionNotify */
+ EnterWindowMask, /* EnterNotify */
+ LeaveWindowMask, /* LeaveNotify */
+ FocusChangeMask, /* FocusIn */
+ FocusChangeMask, /* FocusOut */
+ KeymapStateMask, /* KeymapNotify */
+ ExposureMask, /* Expose */
+ ExposureMask, /* GraphicsExpose */
+ ExposureMask, /* NoExpose */
+ VisibilityChangeMask, /* VisibilityNotify */
+ SubstructureNotifyMask, /* CreateNotify */
+ StructureNotifyMask|SubstructureNotifyMask, /* DestroyNotify */
+ StructureNotifyMask|SubstructureNotifyMask, /* UnmapNotify */
+ StructureNotifyMask|SubstructureNotifyMask, /* MapNotify */
+ SubstructureRedirectMask, /* MapRequest */
+ SubstructureNotifyMask|StructureNotifyMask, /* ReparentNotify */
+ StructureNotifyMask|SubstructureNotifyMask, /* ConfigureNotify */
+ SubstructureRedirectMask, /* ConfigureRequest */
+ SubstructureNotifyMask|StructureNotifyMask, /* GravityNotify */
+ ResizeRedirectMask, /* ResizeRequest */
+ SubstructureNotifyMask|StructureNotifyMask, /* CirculateNotify */
+ SubstructureRedirectMask, /* CirculateRequest */
+ PropertyChangeMask, /* PropertyNotify */
+ 0, /* SelectionClear */
+ 0, /* SelectionRequest */
+ 0, /* SelectionNotify */
+ ColormapChangeMask, /* ColormapNotify */
+ 0, /* ClientMessage */
+ 0, /* MappingNotify */
+};
diff --git a/libX11/src/locking.h b/libX11/src/locking.h
index 96019fc91..0dd3ebb6b 100644
--- a/libX11/src/locking.h
+++ b/libX11/src/locking.h
@@ -1,154 +1,154 @@
-/*
-
-Copyright 1992, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-/*
- * Author: Stephen Gildea, MIT X Consortium
- *
- * locking.h - data types for C Threads locking.
- * Used by XlibInt.c, locking.c, LockDis.c
- */
-
-#ifndef _X_locking_H_
-#define _X_locking_H_
-
-#define xmalloc(s) Xmalloc(s)
-#define xfree(s) Xfree(s)
-#include <X11/Xthreads.h>
-
-struct _XCVList {
- xcondition_t cv;
- xReply *buf;
- struct _XCVList *next;
-};
-
-extern xthread_t (*_Xthread_self_fn)( /* in XlibInt.c */
- void
-);
-
-/* Display->lock is a pointer to one of these */
-
-struct _XLockInfo {
- xmutex_t mutex; /* mutex for critical sections */
- int reply_bytes_left; /* nbytes of the reply still to read */
- Bool reply_was_read; /* _XReadEvents read a reply for _XReply */
- struct _XCVList *reply_awaiters; /* list of CVs for _XReply */
- struct _XCVList **reply_awaiters_tail;
- struct _XCVList *event_awaiters; /* list of CVs for _XReadEvents */
- struct _XCVList **event_awaiters_tail;
- Bool reply_first; /* who may read, reply queue or event queue */
- /* for XLockDisplay */
- int locking_level; /* how many times into XLockDisplay we are */
- xthread_t locking_thread; /* thread that did XLockDisplay */
- xcondition_t cv; /* wait if another thread has XLockDisplay */
- xthread_t reading_thread; /* cache */
- xthread_t conni_thread; /* thread in XProcessInternalConnection */
- xcondition_t writers; /* wait for writable */
- int num_free_cvls;
- struct _XCVList *free_cvls;
- /* used only in XlibInt.c */
- void (*pop_reader)(
- Display* /* dpy */,
- struct _XCVList** /* list */,
- struct _XCVList*** /* tail */
- );
- struct _XCVList *(*push_reader)(
- Display * /* dpy */,
- struct _XCVList*** /* tail */
- );
- void (*condition_wait)(
- xcondition_t /* cv */,
- xmutex_t /* mutex */
-#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
- , char* /* file */,
- int /* line */
-#endif
- );
- void (*internal_lock_display)(
- Display* /* dpy */,
- Bool /* wskip */
-#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
- , char* /* file */,
- int /* line */
-#endif
- );
- /* used in XlibInt.c and locking.c */
- void (*condition_signal)(
- xcondition_t /* cv */
-#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
- , char* /* file */,
- int /* line */
-#endif
- );
- void (*condition_broadcast)(
- xcondition_t /* cv */
-#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
- , char* /* file */,
- int /* line */
-#endif
- );
- /* used in XlibInt.c and XLockDis.c */
- void (*lock_wait)(
- Display* /* dpy */
- );
- void (*user_lock_display)(
- Display* /* dpy */
- );
- void (*user_unlock_display)(
- Display* /* dpy */
- );
- struct _XCVList *(*create_cvl)(
- Display * /* dpy */
- );
-};
-
-#define UnlockNextEventReader(d) if ((d)->lock) \
- (*(d)->lock->pop_reader)((d),&(d)->lock->event_awaiters,&(d)->lock->event_awaiters_tail)
-
-#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
-#define ConditionWait(d,c) if ((d)->lock) \
- (*(d)->lock->condition_wait)(c, (d)->lock->mutex,__FILE__,__LINE__)
-#define ConditionSignal(d,c) if ((d)->lock) \
- (*(d)->lock->condition_signal)(c,__FILE__,__LINE__)
-#define ConditionBroadcast(d,c) if ((d)->lock) \
- (*(d)->lock->condition_broadcast)(c,__FILE__,__LINE__)
-#else
-#define ConditionWait(d,c) if ((d)->lock) \
- (*(d)->lock->condition_wait)(c, (d)->lock->mutex)
-#define ConditionSignal(d,c) if ((d)->lock) \
- (*(d)->lock->condition_signal)(c)
-#define ConditionBroadcast(d,c) if ((d)->lock) \
- (*(d)->lock->condition_broadcast)(c)
-#endif
-
-typedef struct _LockInfoRec {
- xmutex_t lock;
-} LockInfoRec;
-
-/* XOpenDis.c */
-extern int (*_XInitDisplayLock_fn)(Display *dpy);
-extern void (*_XFreeDisplayLock_fn)(Display *dpy);
-
-#endif /* _X_locking_H_ */
+/*
+
+Copyright 1992, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+/*
+ * Author: Stephen Gildea, MIT X Consortium
+ *
+ * locking.h - data types for C Threads locking.
+ * Used by XlibInt.c, locking.c, LockDis.c
+ */
+
+#ifndef _X_locking_H_
+#define _X_locking_H_
+
+#define xmalloc(s) Xmalloc(s)
+#define xfree(s) Xfree(s)
+#include <X11/Xthreads.h>
+
+struct _XCVList {
+ xcondition_t cv;
+ xReply *buf;
+ struct _XCVList *next;
+};
+
+extern xthread_t (*_Xthread_self_fn)( /* in XlibInt.c */
+ void
+);
+
+/* Display->lock is a pointer to one of these */
+
+struct _XLockInfo {
+ xmutex_t mutex; /* mutex for critical sections */
+ int reply_bytes_left; /* nbytes of the reply still to read */
+ Bool reply_was_read; /* _XReadEvents read a reply for _XReply */
+ struct _XCVList *reply_awaiters; /* list of CVs for _XReply */
+ struct _XCVList **reply_awaiters_tail;
+ struct _XCVList *event_awaiters; /* list of CVs for _XReadEvents */
+ struct _XCVList **event_awaiters_tail;
+ Bool reply_first; /* who may read, reply queue or event queue */
+ /* for XLockDisplay */
+ int locking_level; /* how many times into XLockDisplay we are */
+ xthread_t locking_thread; /* thread that did XLockDisplay */
+ xcondition_t cv; /* wait if another thread has XLockDisplay */
+ xthread_t reading_thread; /* cache */
+ xthread_t conni_thread; /* thread in XProcessInternalConnection */
+ xcondition_t writers; /* wait for writable */
+ int num_free_cvls;
+ struct _XCVList *free_cvls;
+ /* used only in XlibInt.c */
+ void (*pop_reader)(
+ Display* /* dpy */,
+ struct _XCVList** /* list */,
+ struct _XCVList*** /* tail */
+ );
+ struct _XCVList *(*push_reader)(
+ Display * /* dpy */,
+ struct _XCVList*** /* tail */
+ );
+ void (*condition_wait)(
+ xcondition_t /* cv */,
+ xmutex_t /* mutex */
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+ , char* /* file */,
+ int /* line */
+#endif
+ );
+ void (*internal_lock_display)(
+ Display* /* dpy */,
+ Bool /* wskip */
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+ , char* /* file */,
+ int /* line */
+#endif
+ );
+ /* used in XlibInt.c and locking.c */
+ void (*condition_signal)(
+ xcondition_t /* cv */
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+ , char* /* file */,
+ int /* line */
+#endif
+ );
+ void (*condition_broadcast)(
+ xcondition_t /* cv */
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+ , char* /* file */,
+ int /* line */
+#endif
+ );
+ /* used in XlibInt.c and XLockDis.c */
+ void (*lock_wait)(
+ Display* /* dpy */
+ );
+ void (*user_lock_display)(
+ Display* /* dpy */
+ );
+ void (*user_unlock_display)(
+ Display* /* dpy */
+ );
+ struct _XCVList *(*create_cvl)(
+ Display * /* dpy */
+ );
+};
+
+#define UnlockNextEventReader(d) if ((d)->lock) \
+ (*(d)->lock->pop_reader)((d),&(d)->lock->event_awaiters,&(d)->lock->event_awaiters_tail)
+
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+#define ConditionWait(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_wait)(c, (d)->lock->mutex,__FILE__,__LINE__)
+#define ConditionSignal(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_signal)(c,__FILE__,__LINE__)
+#define ConditionBroadcast(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_broadcast)(c,__FILE__,__LINE__)
+#else
+#define ConditionWait(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_wait)(c, (d)->lock->mutex)
+#define ConditionSignal(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_signal)(c)
+#define ConditionBroadcast(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_broadcast)(c)
+#endif
+
+typedef struct _LockInfoRec {
+ xmutex_t lock;
+} LockInfoRec;
+
+/* XOpenDis.c */
+extern int (*_XInitDisplayLock_fn)(Display *dpy);
+extern void (*_XFreeDisplayLock_fn)(Display *dpy);
+
+#endif /* _X_locking_H_ */
diff --git a/libX11/src/os2Stubs.c b/libX11/src/os2Stubs.c
index ee09cb5fe..f1408095c 100644
--- a/libX11/src/os2Stubs.c
+++ b/libX11/src/os2Stubs.c
@@ -1,428 +1,428 @@
-/*
- * (c) Copyright 1996 by Sebastien Marineau and Holger Veit
- * <marineau@genie.uottawa.ca>
- * <Holger.Veit@gmd.de>
- *
- * 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
- * HOLGER VEIT 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 Sebastien Marineau or Holger Veit
- * shall not be used in advertising or otherwise to promote the sale, use or other
- * dealings in this Software without prior written authorization from Holger Veit or
- * Sebastien Marineau.
- *
- */
-
-
-/* A few OS/2 functions needed in the X11 lib. Mainly, the file path redirection
- * functions and the "optimized" select() for the clients */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xpoll.h>
-#include <stdio.h>
-#include <sys/errno.h>
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSNPIPES
-#define INCL_DOSMISC
-#define INCL_DOSMODULEMGR
-#undef BOOL
-#undef BYTE
-#include <os2.h>
-#include <sys/select.h>
-#include <sys/time.h>
-
-char *__XOS2RedirRoot(char *fname)
-{
- /* This adds a further redirection by allowing the ProjectRoot
- * to be prepended by the content of the envvar X11ROOT.
- * This is for the purpose to move the whole X11 stuff to a different
- * disk drive.
- * The feature was added despite various environment variables
- * because not all file opens respect them.
- */
- static char redirname[300]; /* enough for long filenames */
- char *root;
-
- /* if name does not start with /, assume it is not root-based */
- if (fname==0 || !(fname[0]=='/' || fname[0]=='\\'))
- return fname;
-
- root = (char*)getenv("X11ROOT");
- if (root==0 ||
- (fname[1]==':' && isalpha(fname[0])) ||
- (strlen(fname)+strlen(root)+2) > 300)
- return fname;
- sprintf(redirname,"%s%s",root,fname);
- return redirname;
-}
-
-char *__XOS2RedirRoot1(char *format, char *arg1, char *arg2, char *arg3)
-{
- /* this first constructs a name from a format and up to three
- * components, then adds a path
- */
- char buf[300];
- sprintf(buf,format,arg1,arg2,arg3);
- return __XOS2RedirRoot(buf);
-}
-
-/* This below implements select() for the calls in this file. It has been */
-/* somewhat optimized for improved performance, but assumes a few */
-/* things so it cannot be used as a general select. If both pipes and */
-/* sockets are present, this may call the emx select */
-
-
-HEV hPipeSem;
-HMODULE hmod_so32dll;
-static int (*os2_tcp_select)(int*,int,int,int,long);
-ULONG os2_get_sys_millis();
-extern int _files[];
-
-#define MAX_TCP 256
-/* These lifted from sys/emx.h. Change if that changes there! */
-#define F_SOCKET 0x10000000
-#define F_PIPE 0x20000000
-
-struct select_data
-{
- fd_set read_copy;
- fd_set write_copy;
- BOOL have_read;
- BOOL have_write;
- int tcp_select_mask[MAX_TCP];
- int tcp_emx_handles[MAX_TCP];
- int tcp_select_copy[MAX_TCP];
- int socket_nread;
- int socket_nwrite;
- int socket_ntotal;
- int pipe_ntotal;
- int pipe_have_write;
- int max_fds;
-};
-
-int os2ClientSelect(int nfds, fd_set *readfds, fd_set *writefds,
- fd_set *exceptfds, struct timeval *timeout)
-{
-static BOOL FirstTime=TRUE;
-static haveTCPIP=TRUE;
-ULONG timeout_ms;
-ULONG postCount, start_millis,now_millis;
-char faildata[16];
-struct select_data sd;
-BOOL any_ready;
-int np,ns, i,ready_handles,n;
-APIRET rc;
-
-sd.have_read=FALSE; sd.have_write=FALSE;
-sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
-sd.max_fds=31; ready_handles=0; any_ready=FALSE;
-sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
-
-if(FirstTime){
- /* First load the so32dll.dll module and get a pointer to the SELECT fn */
-
- if((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0){
- fprintf(stderr, "Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
- haveTCPIP=FALSE;
- }
- if((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0){
- fprintf(stderr, "Could not query address of SELECT, rc = %d.\n",rc);
- haveTCPIP=FALSE;
- }
- /* Call these a first time to set the semaphore */
- rc = DosCreateEventSem(NULL, &hPipeSem, DC_SEM_SHARED, FALSE);
- if(rc) {
- fprintf(stderr, "Could not create event semaphore, rc=%d\n",rc);
- return(-1);
- }
- rc = DosResetEventSem(hPipeSem, &postCount);
- FirstTime = FALSE;
-}
-
-/* Set up the time delay structs */
-
- if(timeout!=NULL) {
- timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
- }
- else { timeout_ms=1000000; } /* This should be large enough... */
- if(timeout_ms>0) start_millis=os2_get_sys_millis();
-
-/* Copy the masks */
- {FD_ZERO(&sd.read_copy);}
- {FD_ZERO(&sd.write_copy);}
- if(readfds!=NULL){ XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE;}
- if(writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy);sd.have_write=TRUE;}
-
-/* And zero the original masks */
- if(sd.have_read){ FD_ZERO(readfds);}
- if(sd.have_write) {FD_ZERO(writefds);}
- if(exceptfds != NULL) {FD_ZERO(exceptfds);}
-
-/* Now we parse the fd_sets passed to select and separate pipe/sockets */
- n = os2_parse_select(&sd,nfds);
- if(n == -1) {
- errno = EBADF;
- return (-1);
- }
-
-/* Now we have three cases: either we have sockets, pipes, or both */
-/* We handle all three cases differently to optimize things */
-
-/* Case 1: only pipes! */
- if((sd.pipe_ntotal >0) && (!sd.socket_ntotal)){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- return (np);
- }
- else if (np == -1) { return(-1); }
- while(!any_ready){
- rc = DosWaitEventSem(hPipeSem, timeout_ms);
- if(rc == 640) {
- return(0);
- }
- if((rc != 0) && (rc != 95)) {errno= EBADF; return(-1);}
- np = os2_check_pipes(&sd,readfds,writefds);
- if (np > 0){
- return(np);
- }
- else if (np < 0){ return(-1); }
- }
- }
-
-/* Case 2: only sockets. Just let the os/2 tcp select do the work */
- if((sd.socket_ntotal > 0) && (!sd.pipe_ntotal)){
- ns = os2_check_sockets(&sd, readfds, writefds, timeout_ms);
- return (ns);
- }
-
-/* Case 3: combination of both */
- if((sd.socket_ntotal > 0) && (sd.pipe_ntotal)){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- any_ready=TRUE;
- ready_handles += np;
- }
- else if (np == -1) { return(-1); }
-
- ns = os2_check_sockets(&sd,readfds,writefds, 0);
- if(ns>0){
- ready_handles+=ns;
- any_ready = TRUE;
- }
- else if (ns == -1) {return(-1);}
-
- while (!any_ready && timeout_ms){
-
- rc = DosWaitEventSem(hPipeSem, 10L);
- if(rc == 0){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- ready_handles+=np;
- any_ready = TRUE;
- }
- else if (np == -1) {
- return(-1); }
- }
-
- ns = os2_check_sockets(&sd,readfds,writefds,exceptfds, 0);
- if(ns>0){
- ready_handles+=ns;
- any_ready = TRUE;
- }
- else if (ns == -1) {return(-1);}
-
- if (i%8 == 0) {
- now_millis = os2_get_sys_millis();
- if((now_millis-start_millis) > timeout_ms) timeout_ms = 0;
- }
- i++;
- }
- }
-
-return(ready_handles);
-}
-
-
-ULONG os2_get_sys_millis()
-{
- APIRET rc;
- ULONG milli;
-
- rc = DosQuerySysInfo(14, 14, &milli, sizeof(milli));
- if(rc) {
- fprintf(stderr,"Bad return code querying the millisecond counter! rc=%d\n",rc);
- return(0);
- }
- return(milli);
-}
-
-int os2_parse_select(sd,nfds)
-struct select_data *sd;
-int nfds;
-{
- int i;
- APIRET rc;
-/* First we determine up to which descriptor we need to check. */
-/* No need to check up to 256 if we don't have to (and usually we dont...)*/
-/* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX!!! */
-
- if(nfds > sd->max_fds){
- for(i=0;i<((FD_SETSIZE+31)/32);i++){
- if(sd->read_copy.fds_bits[i] ||
- sd->write_copy.fds_bits[i])
- sd->max_fds=(i*32) +32;
- }
- }
- else { sd->max_fds = nfds; }
-/* Check if result is greater than specified in select() call */
- if(sd->max_fds > nfds) sd->max_fds = nfds;
-
- if (sd->have_read)
- {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->read_copy)){
- if(_files[i] & F_SOCKET)
- {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nread++;
- }
- else if (_files[i] & F_PIPE)
- {
- sd -> pipe_ntotal++;
- rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
- if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
- }
- }
- }
- }
-
- if (sd->have_write)
- {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->write_copy)){
- if(_files[i] & F_SOCKET)
- {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nwrite++;
- }
- else if (_files[i] & F_PIPE)
- {
- sd -> pipe_ntotal++;
- rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
- if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
- sd -> pipe_have_write=TRUE;
- }
- }
- }
- }
-
-
-return(sd->socket_ntotal);
-}
-
-
-int os2_check_sockets(sd,readfds,writefds)
-struct select_data *sd;
-fd_set *readfds,*writefds;
-{
- int e,i;
- int j,n;
- memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
- sd->socket_ntotal*sizeof(int));
-
- e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
- sd->socket_nwrite, 0, 0);
-
- if(e == 0) return(e);
-/* We have something ready? */
- if(e>0){
- j = 0; n = 0;
- for (i = 0; i < sd->socket_nread; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1)
- {
- FD_SET (sd->tcp_emx_handles[j], readfds);
- n ++;
- }
- for (i = 0; i < sd->socket_nwrite; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1)
- {
- FD_SET (sd->tcp_emx_handles[j], writefds);
- n ++;
- }
- errno = 0;
-
- return n;
- }
- if(e<0){
- /*Error -- TODO */
- fprintf(stderr,"Error in server select! e=%d\n",e);
- errno = EBADF;
- return (-1);
- }
- }
-
-/* Check to see if anything is ready on pipes */
-
-int os2_check_pipes(sd,readfds,writefds)
-struct select_data *sd;
-fd_set *readfds,*writefds;
-{
-int i,e;
-ULONG ulPostCount;
-PIPESEMSTATE pipeSemState[128];
-APIRET rc;
- e = 0;
- rc = DosResetEventSem(hPipeSem,&ulPostCount);
- rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
- sizeof(pipeSemState));
- if(rc) fprintf(stderr,"SELECT: rc from QueryNPipeSem: %d\n",rc);
- i=0;
- while (pipeSemState[i].fStatus != 0) {
- /*fprintf(stderr,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
- pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
- pipeSemState[i].usAvail); */
- if((pipeSemState[i].fStatus == 1) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))){
- FD_SET(pipeSemState[i].usKey,readfds);
- e++;
- }
- else if((pipeSemState[i].fStatus == 2) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))){
- FD_SET(pipeSemState[i].usKey,writefds);
- e++;
- }
- else if( (pipeSemState[i].fStatus == 3) &&
- ( (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )){
- errno = EBADF;
- return (-1);
- }
- i++;
- } /* endwhile */
- /*fprintf(stderr,"Done listing pipe sem entries, total %d entries, total ready entries %d\n",i,e);*/
-errno = 0;
-return(e);
-}
-
-
-
+/*
+ * (c) Copyright 1996 by Sebastien Marineau and Holger Veit
+ * <marineau@genie.uottawa.ca>
+ * <Holger.Veit@gmd.de>
+ *
+ * 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
+ * HOLGER VEIT 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 Sebastien Marineau or Holger Veit
+ * shall not be used in advertising or otherwise to promote the sale, use or other
+ * dealings in this Software without prior written authorization from Holger Veit or
+ * Sebastien Marineau.
+ *
+ */
+
+
+/* A few OS/2 functions needed in the X11 lib. Mainly, the file path redirection
+ * functions and the "optimized" select() for the clients */
+
+#define I_NEED_OS2_H
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xpoll.h>
+#include <stdio.h>
+#include <sys/errno.h>
+#define INCL_DOSSEMAPHORES
+#define INCL_DOSNPIPES
+#define INCL_DOSMISC
+#define INCL_DOSMODULEMGR
+#undef BOOL
+#undef BYTE
+#include <os2.h>
+#include <sys/select.h>
+#include <sys/time.h>
+
+char *__XOS2RedirRoot(char *fname)
+{
+ /* This adds a further redirection by allowing the ProjectRoot
+ * to be prepended by the content of the envvar X11ROOT.
+ * This is for the purpose to move the whole X11 stuff to a different
+ * disk drive.
+ * The feature was added despite various environment variables
+ * because not all file opens respect them.
+ */
+ static char redirname[300]; /* enough for long filenames */
+ char *root;
+
+ /* if name does not start with /, assume it is not root-based */
+ if (fname==0 || !(fname[0]=='/' || fname[0]=='\\'))
+ return fname;
+
+ root = (char*)getenv("X11ROOT");
+ if (root==0 ||
+ (fname[1]==':' && isalpha(fname[0])) ||
+ (strlen(fname)+strlen(root)+2) > 300)
+ return fname;
+ sprintf(redirname,"%s%s",root,fname);
+ return redirname;
+}
+
+char *__XOS2RedirRoot1(char *format, char *arg1, char *arg2, char *arg3)
+{
+ /* this first constructs a name from a format and up to three
+ * components, then adds a path
+ */
+ char buf[300];
+ sprintf(buf,format,arg1,arg2,arg3);
+ return __XOS2RedirRoot(buf);
+}
+
+/* This below implements select() for the calls in this file. It has been */
+/* somewhat optimized for improved performance, but assumes a few */
+/* things so it cannot be used as a general select. If both pipes and */
+/* sockets are present, this may call the emx select */
+
+
+HEV hPipeSem;
+HMODULE hmod_so32dll;
+static int (*os2_tcp_select)(int*,int,int,int,long);
+ULONG os2_get_sys_millis();
+extern int _files[];
+
+#define MAX_TCP 256
+/* These lifted from sys/emx.h. Change if that changes there! */
+#define F_SOCKET 0x10000000
+#define F_PIPE 0x20000000
+
+struct select_data
+{
+ fd_set read_copy;
+ fd_set write_copy;
+ BOOL have_read;
+ BOOL have_write;
+ int tcp_select_mask[MAX_TCP];
+ int tcp_emx_handles[MAX_TCP];
+ int tcp_select_copy[MAX_TCP];
+ int socket_nread;
+ int socket_nwrite;
+ int socket_ntotal;
+ int pipe_ntotal;
+ int pipe_have_write;
+ int max_fds;
+};
+
+int os2ClientSelect(int nfds, fd_set *readfds, fd_set *writefds,
+ fd_set *exceptfds, struct timeval *timeout)
+{
+static BOOL FirstTime=TRUE;
+static haveTCPIP=TRUE;
+ULONG timeout_ms;
+ULONG postCount, start_millis,now_millis;
+char faildata[16];
+struct select_data sd;
+BOOL any_ready;
+int np,ns, i,ready_handles,n;
+APIRET rc;
+
+sd.have_read=FALSE; sd.have_write=FALSE;
+sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
+sd.max_fds=31; ready_handles=0; any_ready=FALSE;
+sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
+
+if(FirstTime){
+ /* First load the so32dll.dll module and get a pointer to the SELECT fn */
+
+ if((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0){
+ fprintf(stderr, "Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
+ haveTCPIP=FALSE;
+ }
+ if((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0){
+ fprintf(stderr, "Could not query address of SELECT, rc = %d.\n",rc);
+ haveTCPIP=FALSE;
+ }
+ /* Call these a first time to set the semaphore */
+ rc = DosCreateEventSem(NULL, &hPipeSem, DC_SEM_SHARED, FALSE);
+ if(rc) {
+ fprintf(stderr, "Could not create event semaphore, rc=%d\n",rc);
+ return(-1);
+ }
+ rc = DosResetEventSem(hPipeSem, &postCount);
+ FirstTime = FALSE;
+}
+
+/* Set up the time delay structs */
+
+ if(timeout!=NULL) {
+ timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
+ }
+ else { timeout_ms=1000000; } /* This should be large enough... */
+ if(timeout_ms>0) start_millis=os2_get_sys_millis();
+
+/* Copy the masks */
+ {FD_ZERO(&sd.read_copy);}
+ {FD_ZERO(&sd.write_copy);}
+ if(readfds!=NULL){ XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE;}
+ if(writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy);sd.have_write=TRUE;}
+
+/* And zero the original masks */
+ if(sd.have_read){ FD_ZERO(readfds);}
+ if(sd.have_write) {FD_ZERO(writefds);}
+ if(exceptfds != NULL) {FD_ZERO(exceptfds);}
+
+/* Now we parse the fd_sets passed to select and separate pipe/sockets */
+ n = os2_parse_select(&sd,nfds);
+ if(n == -1) {
+ errno = EBADF;
+ return (-1);
+ }
+
+/* Now we have three cases: either we have sockets, pipes, or both */
+/* We handle all three cases differently to optimize things */
+
+/* Case 1: only pipes! */
+ if((sd.pipe_ntotal >0) && (!sd.socket_ntotal)){
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if(np > 0){
+ return (np);
+ }
+ else if (np == -1) { return(-1); }
+ while(!any_ready){
+ rc = DosWaitEventSem(hPipeSem, timeout_ms);
+ if(rc == 640) {
+ return(0);
+ }
+ if((rc != 0) && (rc != 95)) {errno= EBADF; return(-1);}
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if (np > 0){
+ return(np);
+ }
+ else if (np < 0){ return(-1); }
+ }
+ }
+
+/* Case 2: only sockets. Just let the os/2 tcp select do the work */
+ if((sd.socket_ntotal > 0) && (!sd.pipe_ntotal)){
+ ns = os2_check_sockets(&sd, readfds, writefds, timeout_ms);
+ return (ns);
+ }
+
+/* Case 3: combination of both */
+ if((sd.socket_ntotal > 0) && (sd.pipe_ntotal)){
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if(np > 0){
+ any_ready=TRUE;
+ ready_handles += np;
+ }
+ else if (np == -1) { return(-1); }
+
+ ns = os2_check_sockets(&sd,readfds,writefds, 0);
+ if(ns>0){
+ ready_handles+=ns;
+ any_ready = TRUE;
+ }
+ else if (ns == -1) {return(-1);}
+
+ while (!any_ready && timeout_ms){
+
+ rc = DosWaitEventSem(hPipeSem, 10L);
+ if(rc == 0){
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if(np > 0){
+ ready_handles+=np;
+ any_ready = TRUE;
+ }
+ else if (np == -1) {
+ return(-1); }
+ }
+
+ ns = os2_check_sockets(&sd,readfds,writefds,exceptfds, 0);
+ if(ns>0){
+ ready_handles+=ns;
+ any_ready = TRUE;
+ }
+ else if (ns == -1) {return(-1);}
+
+ if (i%8 == 0) {
+ now_millis = os2_get_sys_millis();
+ if((now_millis-start_millis) > timeout_ms) timeout_ms = 0;
+ }
+ i++;
+ }
+ }
+
+return(ready_handles);
+}
+
+
+ULONG os2_get_sys_millis()
+{
+ APIRET rc;
+ ULONG milli;
+
+ rc = DosQuerySysInfo(14, 14, &milli, sizeof(milli));
+ if(rc) {
+ fprintf(stderr,"Bad return code querying the millisecond counter! rc=%d\n",rc);
+ return(0);
+ }
+ return(milli);
+}
+
+int os2_parse_select(sd,nfds)
+struct select_data *sd;
+int nfds;
+{
+ int i;
+ APIRET rc;
+/* First we determine up to which descriptor we need to check. */
+/* No need to check up to 256 if we don't have to (and usually we dont...)*/
+/* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX!!! */
+
+ if(nfds > sd->max_fds){
+ for(i=0;i<((FD_SETSIZE+31)/32);i++){
+ if(sd->read_copy.fds_bits[i] ||
+ sd->write_copy.fds_bits[i])
+ sd->max_fds=(i*32) +32;
+ }
+ }
+ else { sd->max_fds = nfds; }
+/* Check if result is greater than specified in select() call */
+ if(sd->max_fds > nfds) sd->max_fds = nfds;
+
+ if (sd->have_read)
+ {
+ for (i = 0; i < sd->max_fds; ++i) {
+ if (FD_ISSET (i, &sd->read_copy)){
+ if(_files[i] & F_SOCKET)
+ {
+ sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
+ sd->tcp_emx_handles[sd->socket_ntotal]=i;
+ sd->socket_ntotal++; sd->socket_nread++;
+ }
+ else if (_files[i] & F_PIPE)
+ {
+ sd -> pipe_ntotal++;
+ rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
+ if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
+ }
+ }
+ }
+ }
+
+ if (sd->have_write)
+ {
+ for (i = 0; i < sd->max_fds; ++i) {
+ if (FD_ISSET (i, &sd->write_copy)){
+ if(_files[i] & F_SOCKET)
+ {
+ sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
+ sd->tcp_emx_handles[sd->socket_ntotal]=i;
+ sd->socket_ntotal++; sd->socket_nwrite++;
+ }
+ else if (_files[i] & F_PIPE)
+ {
+ sd -> pipe_ntotal++;
+ rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
+ if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
+ sd -> pipe_have_write=TRUE;
+ }
+ }
+ }
+ }
+
+
+return(sd->socket_ntotal);
+}
+
+
+int os2_check_sockets(sd,readfds,writefds)
+struct select_data *sd;
+fd_set *readfds,*writefds;
+{
+ int e,i;
+ int j,n;
+ memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
+ sd->socket_ntotal*sizeof(int));
+
+ e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
+ sd->socket_nwrite, 0, 0);
+
+ if(e == 0) return(e);
+/* We have something ready? */
+ if(e>0){
+ j = 0; n = 0;
+ for (i = 0; i < sd->socket_nread; ++i, ++j)
+ if (sd->tcp_select_copy[j] != -1)
+ {
+ FD_SET (sd->tcp_emx_handles[j], readfds);
+ n ++;
+ }
+ for (i = 0; i < sd->socket_nwrite; ++i, ++j)
+ if (sd->tcp_select_copy[j] != -1)
+ {
+ FD_SET (sd->tcp_emx_handles[j], writefds);
+ n ++;
+ }
+ errno = 0;
+
+ return n;
+ }
+ if(e<0){
+ /*Error -- TODO */
+ fprintf(stderr,"Error in server select! e=%d\n",e);
+ errno = EBADF;
+ return (-1);
+ }
+ }
+
+/* Check to see if anything is ready on pipes */
+
+int os2_check_pipes(sd,readfds,writefds)
+struct select_data *sd;
+fd_set *readfds,*writefds;
+{
+int i,e;
+ULONG ulPostCount;
+PIPESEMSTATE pipeSemState[128];
+APIRET rc;
+ e = 0;
+ rc = DosResetEventSem(hPipeSem,&ulPostCount);
+ rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
+ sizeof(pipeSemState));
+ if(rc) fprintf(stderr,"SELECT: rc from QueryNPipeSem: %d\n",rc);
+ i=0;
+ while (pipeSemState[i].fStatus != 0) {
+ /*fprintf(stderr,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
+ pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
+ pipeSemState[i].usAvail); */
+ if((pipeSemState[i].fStatus == 1) &&
+ (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))){
+ FD_SET(pipeSemState[i].usKey,readfds);
+ e++;
+ }
+ else if((pipeSemState[i].fStatus == 2) &&
+ (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))){
+ FD_SET(pipeSemState[i].usKey,writefds);
+ e++;
+ }
+ else if( (pipeSemState[i].fStatus == 3) &&
+ ( (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
+ (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )){
+ errno = EBADF;
+ return (-1);
+ }
+ i++;
+ } /* endwhile */
+ /*fprintf(stderr,"Done listing pipe sem entries, total %d entries, total ready entries %d\n",i,e);*/
+errno = 0;
+return(e);
+}
+
+
+
diff --git a/libX11/src/poly.h b/libX11/src/poly.h
index e064783d7..1a5163d48 100644
--- a/libX11/src/poly.h
+++ b/libX11/src/poly.h
@@ -1,294 +1,294 @@
-/************************************************************************
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1987 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-************************************************************************/
-
-/*
- * This file contains a few macros to help track
- * the edge of a filled object. The object is assumed
- * to be filled in scanline order, and thus the
- * algorithm used is an extension of Bresenham's line
- * drawing algorithm which assumes that y is always the
- * major axis.
- * Since these pieces of code are the same for any filled shape,
- * it is more convenient to gather the library in one
- * place, but since these pieces of code are also in
- * the inner loops of output primitives, procedure call
- * overhead is out of the question.
- * See the author for a derivation if needed.
- */
-
-
-/*
- * In scan converting polygons, we want to choose those pixels
- * which are inside the polygon. Thus, we add .5 to the starting
- * x coordinate for both left and right edges. Now we choose the
- * first pixel which is inside the pgon for the left edge and the
- * first pixel which is outside the pgon for the right edge.
- * Draw the left pixel, but not the right.
- *
- * How to add .5 to the starting x coordinate:
- * If the edge is moving to the right, then subtract dy from the
- * error term from the general form of the algorithm.
- * If the edge is moving to the left, then add dy to the error term.
- *
- * The reason for the difference between edges moving to the left
- * and edges moving to the right is simple: If an edge is moving
- * to the right, then we want the algorithm to flip immediately.
- * If it is moving to the left, then we don't want it to flip until
- * we traverse an entire pixel.
- */
-#define BRESINITPGON(dy, x1, x2, xStart, d, m, m1, incr1, incr2) { \
- int dx; /* local storage */ \
-\
- /* \
- * if the edge is horizontal, then it is ignored \
- * and assumed not to be processed. Otherwise, do this stuff. \
- */ \
- if ((dy) != 0) { \
- xStart = (x1); \
- dx = (x2) - xStart; \
- if (dx < 0) { \
- m = dx / (dy); \
- m1 = m - 1; \
- incr1 = -2 * dx + 2 * (dy) * m1; \
- incr2 = -2 * dx + 2 * (dy) * m; \
- d = 2 * m * (dy) - 2 * dx - 2 * (dy); \
- } else { \
- m = dx / (dy); \
- m1 = m + 1; \
- incr1 = 2 * dx - 2 * (dy) * m1; \
- incr2 = 2 * dx - 2 * (dy) * m; \
- d = -2 * m * (dy) + 2 * dx; \
- } \
- } \
-}
-
-#define BRESINCRPGON(d, minval, m, m1, incr1, incr2) { \
- if (m1 > 0) { \
- if (d > 0) { \
- minval += m1; \
- d += incr1; \
- } \
- else { \
- minval += m; \
- d += incr2; \
- } \
- } else {\
- if (d >= 0) { \
- minval += m1; \
- d += incr1; \
- } \
- else { \
- minval += m; \
- d += incr2; \
- } \
- } \
-}
-
-
-/*
- * This structure contains all of the information needed
- * to run the bresenham algorithm.
- * The variables may be hardcoded into the declarations
- * instead of using this structure to make use of
- * register declarations.
- */
-typedef struct {
- int minor_axis; /* minor axis */
- int d; /* decision variable */
- int m, m1; /* slope and slope+1 */
- int incr1, incr2; /* error increments */
-} BRESINFO;
-
-
-#define BRESINITPGONSTRUCT(dmaj, min1, min2, bres) \
- BRESINITPGON(dmaj, min1, min2, bres.minor_axis, bres.d, \
- bres.m, bres.m1, bres.incr1, bres.incr2)
-
-#define BRESINCRPGONSTRUCT(bres) \
- BRESINCRPGON(bres.d, bres.minor_axis, bres.m, bres.m1, bres.incr1, bres.incr2)
-
-
-
-/*
- * These are the data structures needed to scan
- * convert regions. Two different scan conversion
- * methods are available -- the even-odd method, and
- * the winding number method.
- * The even-odd rule states that a point is inside
- * the polygon if a ray drawn from that point in any
- * direction will pass through an odd number of
- * path segments.
- * By the winding number rule, a point is decided
- * to be inside the polygon if a ray drawn from that
- * point in any direction passes through a different
- * number of clockwise and counter-clockwise path
- * segments.
- *
- * These data structures are adapted somewhat from
- * the algorithm in (Foley/Van Dam) for scan converting
- * polygons.
- * The basic algorithm is to start at the top (smallest y)
- * of the polygon, stepping down to the bottom of
- * the polygon by incrementing the y coordinate. We
- * keep a list of edges which the current scanline crosses,
- * sorted by x. This list is called the Active Edge Table (AET)
- * As we change the y-coordinate, we update each entry in
- * in the active edge table to reflect the edges new xcoord.
- * This list must be sorted at each scanline in case
- * two edges intersect.
- * We also keep a data structure known as the Edge Table (ET),
- * which keeps track of all the edges which the current
- * scanline has not yet reached. The ET is basically a
- * list of ScanLineList structures containing a list of
- * edges which are entered at a given scanline. There is one
- * ScanLineList per scanline at which an edge is entered.
- * When we enter a new edge, we move it from the ET to the AET.
- *
- * From the AET, we can implement the even-odd rule as in
- * (Foley/Van Dam).
- * The winding number rule is a little trickier. We also
- * keep the EdgeTableEntries in the AET linked by the
- * nextWETE (winding EdgeTableEntry) link. This allows
- * the edges to be linked just as before for updating
- * purposes, but only uses the edges linked by the nextWETE
- * link as edges representing spans of the polygon to
- * drawn (as with the even-odd rule).
- */
-
-/*
- * for the winding number rule
- */
-#define CLOCKWISE 1
-#define COUNTERCLOCKWISE -1
-
-typedef struct _EdgeTableEntry {
- int ymax; /* ycoord at which we exit this edge. */
- BRESINFO bres; /* Bresenham info to run the edge */
- struct _EdgeTableEntry *next; /* next in the list */
- struct _EdgeTableEntry *back; /* for insertion sort */
- struct _EdgeTableEntry *nextWETE; /* for winding num rule */
- int ClockWise; /* flag for winding number rule */
-} EdgeTableEntry;
-
-
-typedef struct _ScanLineList{
- int scanline; /* the scanline represented */
- EdgeTableEntry *edgelist; /* header node */
- struct _ScanLineList *next; /* next in the list */
-} ScanLineList;
-
-
-typedef struct {
- int ymax; /* ymax for the polygon */
- int ymin; /* ymin for the polygon */
- ScanLineList scanlines; /* header node */
-} EdgeTable;
-
-
-/*
- * Here is a struct to help with storage allocation
- * so we can allocate a big chunk at a time, and then take
- * pieces from this heap when we need to.
- */
-#define SLLSPERBLOCK 25
-
-typedef struct _ScanLineListBlock {
- ScanLineList SLLs[SLLSPERBLOCK];
- struct _ScanLineListBlock *next;
-} ScanLineListBlock;
-
-
-
-/*
- *
- * a few macros for the inner loops of the fill code where
- * performance considerations don't allow a procedure call.
- *
- * Evaluate the given edge at the given scanline.
- * If the edge has expired, then we leave it and fix up
- * the active edge table; otherwise, we increment the
- * x value to be ready for the next scanline.
- * The winding number rule is in effect, so we must notify
- * the caller when the edge has been removed so he
- * can reorder the Winding Active Edge Table.
- */
-#define EVALUATEEDGEWINDING(pAET, pPrevAET, y, fixWAET) { \
- if (pAET->ymax == y) { /* leaving this edge */ \
- pPrevAET->next = pAET->next; \
- pAET = pPrevAET->next; \
- fixWAET = 1; \
- if (pAET) \
- pAET->back = pPrevAET; \
- } \
- else { \
- BRESINCRPGONSTRUCT(pAET->bres); \
- pPrevAET = pAET; \
- pAET = pAET->next; \
- } \
-}
-
-
-/*
- * Evaluate the given edge at the given scanline.
- * If the edge has expired, then we leave it and fix up
- * the active edge table; otherwise, we increment the
- * x value to be ready for the next scanline.
- * The even-odd rule is in effect.
- */
-#define EVALUATEEDGEEVENODD(pAET, pPrevAET, y) { \
- if (pAET->ymax == y) { /* leaving this edge */ \
- pPrevAET->next = pAET->next; \
- pAET = pPrevAET->next; \
- if (pAET) \
- pAET->back = pPrevAET; \
- } \
- else { \
- BRESINCRPGONSTRUCT(pAET->bres); \
- pPrevAET = pAET; \
- pAET = pAET->next; \
- } \
-}
+/************************************************************************
+
+Copyright 1987, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1987 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+************************************************************************/
+
+/*
+ * This file contains a few macros to help track
+ * the edge of a filled object. The object is assumed
+ * to be filled in scanline order, and thus the
+ * algorithm used is an extension of Bresenham's line
+ * drawing algorithm which assumes that y is always the
+ * major axis.
+ * Since these pieces of code are the same for any filled shape,
+ * it is more convenient to gather the library in one
+ * place, but since these pieces of code are also in
+ * the inner loops of output primitives, procedure call
+ * overhead is out of the question.
+ * See the author for a derivation if needed.
+ */
+
+
+/*
+ * In scan converting polygons, we want to choose those pixels
+ * which are inside the polygon. Thus, we add .5 to the starting
+ * x coordinate for both left and right edges. Now we choose the
+ * first pixel which is inside the pgon for the left edge and the
+ * first pixel which is outside the pgon for the right edge.
+ * Draw the left pixel, but not the right.
+ *
+ * How to add .5 to the starting x coordinate:
+ * If the edge is moving to the right, then subtract dy from the
+ * error term from the general form of the algorithm.
+ * If the edge is moving to the left, then add dy to the error term.
+ *
+ * The reason for the difference between edges moving to the left
+ * and edges moving to the right is simple: If an edge is moving
+ * to the right, then we want the algorithm to flip immediately.
+ * If it is moving to the left, then we don't want it to flip until
+ * we traverse an entire pixel.
+ */
+#define BRESINITPGON(dy, x1, x2, xStart, d, m, m1, incr1, incr2) { \
+ int dx; /* local storage */ \
+\
+ /* \
+ * if the edge is horizontal, then it is ignored \
+ * and assumed not to be processed. Otherwise, do this stuff. \
+ */ \
+ if ((dy) != 0) { \
+ xStart = (x1); \
+ dx = (x2) - xStart; \
+ if (dx < 0) { \
+ m = dx / (dy); \
+ m1 = m - 1; \
+ incr1 = -2 * dx + 2 * (dy) * m1; \
+ incr2 = -2 * dx + 2 * (dy) * m; \
+ d = 2 * m * (dy) - 2 * dx - 2 * (dy); \
+ } else { \
+ m = dx / (dy); \
+ m1 = m + 1; \
+ incr1 = 2 * dx - 2 * (dy) * m1; \
+ incr2 = 2 * dx - 2 * (dy) * m; \
+ d = -2 * m * (dy) + 2 * dx; \
+ } \
+ } \
+}
+
+#define BRESINCRPGON(d, minval, m, m1, incr1, incr2) { \
+ if (m1 > 0) { \
+ if (d > 0) { \
+ minval += m1; \
+ d += incr1; \
+ } \
+ else { \
+ minval += m; \
+ d += incr2; \
+ } \
+ } else {\
+ if (d >= 0) { \
+ minval += m1; \
+ d += incr1; \
+ } \
+ else { \
+ minval += m; \
+ d += incr2; \
+ } \
+ } \
+}
+
+
+/*
+ * This structure contains all of the information needed
+ * to run the bresenham algorithm.
+ * The variables may be hardcoded into the declarations
+ * instead of using this structure to make use of
+ * register declarations.
+ */
+typedef struct {
+ int minor_axis; /* minor axis */
+ int d; /* decision variable */
+ int m, m1; /* slope and slope+1 */
+ int incr1, incr2; /* error increments */
+} BRESINFO;
+
+
+#define BRESINITPGONSTRUCT(dmaj, min1, min2, bres) \
+ BRESINITPGON(dmaj, min1, min2, bres.minor_axis, bres.d, \
+ bres.m, bres.m1, bres.incr1, bres.incr2)
+
+#define BRESINCRPGONSTRUCT(bres) \
+ BRESINCRPGON(bres.d, bres.minor_axis, bres.m, bres.m1, bres.incr1, bres.incr2)
+
+
+
+/*
+ * These are the data structures needed to scan
+ * convert regions. Two different scan conversion
+ * methods are available -- the even-odd method, and
+ * the winding number method.
+ * The even-odd rule states that a point is inside
+ * the polygon if a ray drawn from that point in any
+ * direction will pass through an odd number of
+ * path segments.
+ * By the winding number rule, a point is decided
+ * to be inside the polygon if a ray drawn from that
+ * point in any direction passes through a different
+ * number of clockwise and counter-clockwise path
+ * segments.
+ *
+ * These data structures are adapted somewhat from
+ * the algorithm in (Foley/Van Dam) for scan converting
+ * polygons.
+ * The basic algorithm is to start at the top (smallest y)
+ * of the polygon, stepping down to the bottom of
+ * the polygon by incrementing the y coordinate. We
+ * keep a list of edges which the current scanline crosses,
+ * sorted by x. This list is called the Active Edge Table (AET)
+ * As we change the y-coordinate, we update each entry in
+ * in the active edge table to reflect the edges new xcoord.
+ * This list must be sorted at each scanline in case
+ * two edges intersect.
+ * We also keep a data structure known as the Edge Table (ET),
+ * which keeps track of all the edges which the current
+ * scanline has not yet reached. The ET is basically a
+ * list of ScanLineList structures containing a list of
+ * edges which are entered at a given scanline. There is one
+ * ScanLineList per scanline at which an edge is entered.
+ * When we enter a new edge, we move it from the ET to the AET.
+ *
+ * From the AET, we can implement the even-odd rule as in
+ * (Foley/Van Dam).
+ * The winding number rule is a little trickier. We also
+ * keep the EdgeTableEntries in the AET linked by the
+ * nextWETE (winding EdgeTableEntry) link. This allows
+ * the edges to be linked just as before for updating
+ * purposes, but only uses the edges linked by the nextWETE
+ * link as edges representing spans of the polygon to
+ * drawn (as with the even-odd rule).
+ */
+
+/*
+ * for the winding number rule
+ */
+#define CLOCKWISE 1
+#define COUNTERCLOCKWISE -1
+
+typedef struct _EdgeTableEntry {
+ int ymax; /* ycoord at which we exit this edge. */
+ BRESINFO bres; /* Bresenham info to run the edge */
+ struct _EdgeTableEntry *next; /* next in the list */
+ struct _EdgeTableEntry *back; /* for insertion sort */
+ struct _EdgeTableEntry *nextWETE; /* for winding num rule */
+ int ClockWise; /* flag for winding number rule */
+} EdgeTableEntry;
+
+
+typedef struct _ScanLineList{
+ int scanline; /* the scanline represented */
+ EdgeTableEntry *edgelist; /* header node */
+ struct _ScanLineList *next; /* next in the list */
+} ScanLineList;
+
+
+typedef struct {
+ int ymax; /* ymax for the polygon */
+ int ymin; /* ymin for the polygon */
+ ScanLineList scanlines; /* header node */
+} EdgeTable;
+
+
+/*
+ * Here is a struct to help with storage allocation
+ * so we can allocate a big chunk at a time, and then take
+ * pieces from this heap when we need to.
+ */
+#define SLLSPERBLOCK 25
+
+typedef struct _ScanLineListBlock {
+ ScanLineList SLLs[SLLSPERBLOCK];
+ struct _ScanLineListBlock *next;
+} ScanLineListBlock;
+
+
+
+/*
+ *
+ * a few macros for the inner loops of the fill code where
+ * performance considerations don't allow a procedure call.
+ *
+ * Evaluate the given edge at the given scanline.
+ * If the edge has expired, then we leave it and fix up
+ * the active edge table; otherwise, we increment the
+ * x value to be ready for the next scanline.
+ * The winding number rule is in effect, so we must notify
+ * the caller when the edge has been removed so he
+ * can reorder the Winding Active Edge Table.
+ */
+#define EVALUATEEDGEWINDING(pAET, pPrevAET, y, fixWAET) { \
+ if (pAET->ymax == y) { /* leaving this edge */ \
+ pPrevAET->next = pAET->next; \
+ pAET = pPrevAET->next; \
+ fixWAET = 1; \
+ if (pAET) \
+ pAET->back = pPrevAET; \
+ } \
+ else { \
+ BRESINCRPGONSTRUCT(pAET->bres); \
+ pPrevAET = pAET; \
+ pAET = pAET->next; \
+ } \
+}
+
+
+/*
+ * Evaluate the given edge at the given scanline.
+ * If the edge has expired, then we leave it and fix up
+ * the active edge table; otherwise, we increment the
+ * x value to be ready for the next scanline.
+ * The even-odd rule is in effect.
+ */
+#define EVALUATEEDGEEVENODD(pAET, pPrevAET, y) { \
+ if (pAET->ymax == y) { /* leaving this edge */ \
+ pPrevAET->next = pAET->next; \
+ pAET = pPrevAET->next; \
+ if (pAET) \
+ pAET->back = pPrevAET; \
+ } \
+ else { \
+ BRESINCRPGONSTRUCT(pAET->bres); \
+ pPrevAET = pAET; \
+ pAET = pAET->next; \
+ } \
+}
diff --git a/libX11/src/udcInf.c b/libX11/src/udcInf.c
index db7ad10f3..7eb18ea7e 100644
--- a/libX11/src/udcInf.c
+++ b/libX11/src/udcInf.c
@@ -1,716 +1,716 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-*/
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <locale.h>
-#include <Xlib.h>
-#include <Xlibint.h>
-#include <Xlcint.h>
-#include <XlcPubI.h>
-#include <XlcGeneric.h>
-#include <XomGeneric.h>
-
-/*
- external symbols
-*/
-extern FontData read_EncodingInfo();
-extern int _xudc_get_codeset();
-
-extern int _xudc_utyderror ;
-extern int _xudc_utyerror ;
-
-extern unsigned long _xudc_utyerrno ;
-
-#define _XUDC_ERROR -1
-
-
-/*
- UDC structure define
-*/
-typedef struct __XUDCGlyphRegion {
- unsigned long start;
- unsigned long end;
-} _XUDCGlyphRegion ;
-
-/*
- * "code" no jyoui "i" byte me wo "unsigned char" toshite kaesu.
- */
-static unsigned char getbyte(code,i)
-unsigned long code;
-int i;
-{
- unsigned long byteL;
- unsigned char byte;
- byteL = code >> (8*(3-i));
- byte = (unsigned char)(0x000000ff & byteL);
- return(byte);
-}
-/*
- get codeset which described by charset_str and locale.
- for examples ...
- locale : ja_JP
- charset_str : JISX0208.1983-0
-*/
-
-_xudc_get_codeset(locale,charset_str,codeset,num_codeset)
-char *locale;
-char *charset_str;
-int **codeset;
-int *num_codeset;
-{
- XLCdRec lcdrec;
- XLCd lcd;
- XLCdPublicRec xlcdp;
- XPointer rdb;
- int num = 0,count,num_ret=0,i,*ret;
- char **value,buf[128],*ptr;
-
-
- _xudc_utyderror = 0;
- _xudc_utyerror = 0;
-
- if((locale == NULL) || (charset_str == NULL)){
- _xudc_utyerror = 5;
- _xudc_utyderror = 1;
- _xudc_utyerrno = 0x04 ;
- return(_XUDC_ERROR);
- }
- if(codeset == NULL){
- _xudc_utyerror = 5;
- _xudc_utyderror = 2;
- _xudc_utyerrno = 0x04 ;
- return(_XUDC_ERROR);
- }
-
- /* create XLCd */
- xlcdp.pub.siname = locale;
- lcdrec.core = (XLCdCore)&xlcdp;
- lcd = &lcdrec;
- /* create X RDB (X NLS DB) */
- rdb = _XlcCreateLocaleDataBase(lcd);
- if(rdb == NULL){
- _xudc_utyerror = 1;
- _xudc_utyerrno = 0x15 ;
- return(_XUDC_ERROR);
- }
-
- for(num=0;;num++){
- /* XLC_FONTSET */
- sprintf(buf, "fs%d.font.primary", num);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count < 1){
- break ;
- }
- for(i=0;i<count;i++){
- if (strlen(value[i]) >= sizeof(buf))
- continue;
- strcpy(buf,value[i]);
- ptr = (char *)strchr(buf,(int)':');
- *ptr = 0;
- if(!_XlcCompareISOLatin1(charset_str,buf)){
- num_ret += 1;
- if(num_ret == 1){
- ret = (int *)Xmalloc(sizeof(int));
- } else {
- int *prev_ret = ret;
-
- ret =
- (int *)Xrealloc(ret,num_ret*sizeof(int));
- if (ret == NULL){
- Xfree(prev_ret);
- }
- }
- if(ret == NULL){
- _xudc_utyerrno = 0x03 ;
- return(_XUDC_ERROR);
- }
- ret[num_ret-1]=num;
- break ;
- }
- }
- }
- if(num_ret == 0){
- *num_codeset = 0;
- *codeset = NULL;
- return (0xff);
- }
-
- *num_codeset = num_ret;
- *codeset = ret;
- return 0;
-}
-
-static Bool gi_to_vgi(gi,vgi,scope)
-unsigned long gi,*vgi;
-FontScope scope;
-{
- if(scope->shift_direction == (unsigned long)'+'){
- gi -= scope->shift;
- } else {
- gi += scope->shift;
- }
- if(gi >= scope->start && gi <= scope->end){
- *vgi = gi;
- return(True);
- }
- return(False);
-}
-
-static void shift_area(udc,scope)
-_XUDCGlyphRegion *udc;
-FontScope scope;
-{
- if(scope->shift_direction == (unsigned long)'+'){
- udc->start += scope->shift;
- udc->end += scope->shift;
- } else {
- udc->start -= scope->shift;
- udc->end -= scope->shift;
- }
-}
-
-/*
- get UDC area with glyph index.
- for examples ...
- locale : ja_JP
- charset_str : JISX0208.1983-0
-*/
-_XUDCGetUDCGIArea(locale,codeset,charset_str,gr,num_gr)
-char *locale;
-int codeset;
-char *charset_str;
-_XUDCGlyphRegion **gr;
-int *num_gr;
-{
- XLCdRec lcdrec;
- XLCd lcd;
- XLCdPublicRec xlcdp;
- XPointer rdb;
- _XUDCGlyphRegion *udc;
- int num = 0,count,num_ret=0;
- int i,j,k;
- char **value,buf[128],ptr;
- FontData font_data;
-
-
- _xudc_utyderror = 0;
- _xudc_utyerror = 0;
- _xudc_utyerrno = 0x00 ;
-
- if((locale == NULL) || (charset_str == NULL)){
- _xudc_utyerror = 5;
- _xudc_utyderror = 1;
- _xudc_utyerrno = 0x04;
- _xudc_utyerrno |= (0x0b<<8) ;
- return(_XUDC_ERROR);
- }
- if(gr == NULL){
- _xudc_utyerror = 5;
- _xudc_utyderror = 1;
- _xudc_utyerrno = 0x04;
- _xudc_utyerrno |= (0x0b<<8) ;
- return(_XUDC_ERROR);
- }
- if(num_gr == NULL){
- _xudc_utyerror = 5;
- _xudc_utyderror = 2;
- _xudc_utyerrno = 0x04;
- _xudc_utyerrno |= (0x0b<<8) ;
- return(_XUDC_ERROR);
- }
-
- /* create XLCd */
- xlcdp.pub.siname = locale;
- lcdrec.core = (XLCdCore)&xlcdp;
- lcd = &lcdrec;
- /* create X RDB (X NLS DB) */
- rdb = _XlcCreateLocaleDataBase(lcd);
- if(rdb == NULL){
- _xudc_utyerror = 1;
- _xudc_utyerrno = 0x15 ;
- _xudc_utyerrno |= (0x0b<<8) ;
- return(_XUDC_ERROR);
- }
- udc = NULL;
-
- /* XLC_FONTSET */
- sprintf(buf, "fs%d.charset.udc_area", codeset-1);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- udc = (_XUDCGlyphRegion *)Xmalloc(count * sizeof(_XUDCGlyphRegion));
- if(udc == NULL){
- _xudc_utyerrno = 0x03 ;
- _xudc_utyerrno |= (0x0b<<8) ;
- return(_XUDC_ERROR);
- }
- for(i=0;i<count;i++){
- sscanf(value[i],"\\x%lx,\\x%lx", &(udc[i].start), &(udc[i].end));
- }
- }
-
- *num_gr = count;
-
- sprintf(buf, "fs%d.font.primary", codeset-1);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- font_data = read_EncodingInfo(count,value);
- for(i=0;i<count;i++){
- if( !_XlcCompareISOLatin1(font_data[i].name,charset_str)){
- for(j=0;j<(*num_gr);j++){
- for(k=0;k<font_data[i].scopes_num;k++){
- if(udc[j].start == font_data[i].scopes[k].start
- && font_data[i].scopes[k].shift){
- shift_area(&udc[j],&(font_data[i].scopes[k]));
- }
- }
- }
- }
- }
- }
-
- *gr = udc;
- return 0;
-}
-
-/*
- * Code convert wo tomonau UDC area no kakutoku
- * GetUDCCPArea() / glyph_to_code()
- *
- */
-
-static int
-_xudc_gi_to_vgi(lcd,locale,charset_str,codeset,gi,vgi,charsetname,size)
-XLCd lcd;
-char *locale;
-char *charset_str;
-int codeset;
-unsigned long gi;
-unsigned long *vgi;
-char *charsetname;
-int size;
-{
- _XUDCGlyphRegion *udc;
- int num = 0,count,num_ret=0;
- int i,j,k;
- char **value,buf[128],ptr;
- FontData font_data;
-
-
- sprintf(buf, "fs%d.charset.name", codeset-1);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- strcpy(charsetname,value[0]);
- }
- if (count >= size)
- return False;
- sprintf(buf, "fs%d.font.primary", codeset-1);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- font_data = read_EncodingInfo(count,value);
- for(i=0;i<count;i++){
- if( !_XlcCompareISOLatin1(font_data[i].name,charset_str)){
- for(k=0;k<font_data[i].scopes_num;k++){
- if( gi_to_vgi(gi,vgi,&(font_data[i].scopes[k])) == True){
- return(True);
- }
- }
- }
- }
- }
-/*
- free_fontdata(font_data);
-*/
- *vgi = gi;
- return(True);
-}
-
-Bool non_standard(lcd,charset)
-XLCd lcd;
-XlcCharSet charset;
-{
- char buf[256];
- int count,i;
- char **value;
- if(charset->ct_sequence == NULL){
- return(False);
- }
- for(i=0;;i++){
- sprintf(buf, "csd%d.charset_name", i);
- _XlcGetLocaleDataBase(lcd, "XLC_CHARSET_DEFINE", buf, &value, &count);
- if(count > 0){
- if(!_XlcNCompareISOLatin1(value[0],
- charset->name,strlen(value[0])) ){
- return(True);
- }
- } else {
- return(False);
- }
- }
-}
-
-static Bool
-make_none_standard(from,charset,src,size)
-char *from;
-XlcCharSet charset;
-char *src;
-int size;
-{
- int name_len,seq_len,rest_len,i;
- name_len = 2 + strlen(charset->encoding_name) + 1;
- seq_len = strlen(charset->ct_sequence);
- rest_len = strlen(charset->encoding_name) + 1 + strlen(src);
- if (name_len + seq_len + strlen(src) >= size || rest_len >= 0x4000)
- return False;
- strcpy(from,charset->ct_sequence);
- from[seq_len] = (rest_len >> 7) + 128;
- from[seq_len+1] = (rest_len & 0x7f) + 128;
- strcpy(&from[seq_len + 2],charset->encoding_name);
- from[seq_len+name_len-1] = 0x02; /* STX */
- strcpy(&from[seq_len + name_len],src);
- return True;
-}
-int
-_xudc_glyph_to_code(locale,charset_str,codeset,glyph_index,codepoint)
-char *locale;
-char *charset_str;
-int codeset;
-unsigned long glyph_index;
-unsigned long *codepoint;
-{
- XLCd lcd;
- unsigned char *from; int from_left;
- unsigned char *to ; int to_left = 10;
- unsigned char *dst;
- unsigned char byte;
- unsigned long from32[25];
- unsigned long to32[25];
- int i,j;
- char charsetname[256],src[10];
- XlcConv conv;
- XlcCharSet charset;
- XPointer args[2];
-
- from = (unsigned char *)from32;
- to = (unsigned char *)to32;
- dst = (unsigned char *)to32;
-
- memset(dst,0,25);
-
- lcd = (XLCd)_XlcGenericLoader(locale);
-
- if (!_xudc_gi_to_vgi(lcd,locale,charset_str,codeset,
- glyph_index,&glyph_index,charsetname,sizeof(charsetname)))
- return(_XUDC_ERROR);
-
- for(i=0,j=0;i<4;i++){
- byte = getbyte(glyph_index,i);
- if(byte){
- src[j] = byte;
- j ++;
- }
- }
- src[j] = 0;
-
-
- /* get charset */
-/*
- sprintf(tmp,"%s%s",charset_str,":GL");
- charset_name = strdup(tmp);
-*/
- charset = _XlcGetCharSet(charsetname);
- if(charset == NULL){
- _xudc_utyerrno = 0x16 ;
- return(_XUDC_ERROR);
- }
- /* make ct */
- if( non_standard(lcd,charset)) {
- if (!make_none_standard(from,charset,src,sizeof(from32)))
- return(_XUDC_ERROR);
- } else if(charset->ct_sequence){
- if (strlen(charset->ct_sequence) + strlen(src) >= sizeof(from32))
- return(_XUDC_ERROR);
- sprintf((char *)from,"%s%s",charset->ct_sequence,src);
- } else {
- sprintf((char *)from,"%s\0",src);
- }
- /* compound text -> multi byte */
- conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte);
- from_left = strlen((char *)from);
- _XlcConvert(conv,(XPointer *)&from,&from_left,
- (XPointer *)&to, &to_left,args,0);
- _XlcCloseConverter(conv);
- _XlcDestroyLC(lcd);
-
- *codepoint = 0;
- for(i=0;dst[i];i++){
- *codepoint = ((*codepoint << 8) | dst[i]) ;
- }
- return(0);
-}
-
-typedef struct __XUDCCodeRegion {
- unsigned long start,end;
-} _XUDCCodeRegion ;
-
-int
-_XUDCGetUDCCPArea(locale,codeset,charset_str,cr,num_cr)
-char *locale;
-int codeset;
-char *charset_str;
-_XUDCCodeRegion **cr;
-int *num_cr;
-{
- int i,num_gr,ret;
- _XUDCGlyphRegion *gr;
- _XUDCCodeRegion *crr;
-
- _xudc_utyerror = 0;
- _xudc_utyderror = 0;
-
- if(cr == NULL){
- _xudc_utyerror = 5;
- _xudc_utyderror = 1;
- _xudc_utyerrno = 0x04 ;
- _xudc_utyerrno |= (0x0a<<8) ;
- return(_XUDC_ERROR);
- }
- if(num_cr == NULL){
- _xudc_utyerror = 5;
- _xudc_utyderror = 2;
- _xudc_utyerrno = 0x04 ;
- _xudc_utyerrno |= (0x0a<<8) ;
- return(_XUDC_ERROR);
- }
-
- ret = _XUDCGetUDCGIArea(locale,codeset,charset_str,&gr,&num_gr);
- if(ret == _XUDC_ERROR){
- _xudc_utyerrno &= 0xff ;
- _xudc_utyerrno |= (0x0a<<8) ;
- return(ret);
- }
-
- crr = (_XUDCCodeRegion *)Xmalloc(num_gr*sizeof(_XUDCCodeRegion));
- if(crr == NULL){
- Xfree(gr);
- _xudc_utyerrno = 0x03 ;
- _xudc_utyerrno |= (0x0a<<8) ;
- return(_XUDC_ERROR);
- }
-
- for(i=0;i<num_gr;i++){
- ret = _xudc_glyph_to_code(locale,charset_str,codeset,
- gr[i].start, &(crr[i].start));
- if(ret == _XUDC_ERROR){
- _xudc_utyerrno |= (0x0a<<8) ;
- Xfree(gr);
- Xfree(crr);
- return(ret);
- }
- ret = _xudc_glyph_to_code(locale,charset_str,codeset,
- gr[i].end, &(crr[i].end));
- if(ret == _XUDC_ERROR){
- _xudc_utyerrno |= (0x0a<<8) ;
- Xfree(gr);
- Xfree(crr);
- return(ret);
- }
- }
- Xfree(gr);
- *cr = crr;
- *num_cr = num_gr;
- return(0);
-}
-
-/*
- * code_to_glyph()
- *
- */
-typedef struct __XUDCGIInf {
- char *charset_str;
- unsigned long glyph_index;
-} _XUDCGIInf ;
-
-/*
- *
- *
- */
-static Bool vgi_to_gi(gi,vgi,scope)
-unsigned long *gi,vgi;
-FontScope scope;
-{
- if(vgi >= scope->start && vgi <= scope->end){
- if(scope->shift_direction == (unsigned long)'+'){
- *gi = vgi + scope->shift;
- } else {
- *gi = vgi - scope->shift;
- }
- return(True);
- }
- return(False);
-}
-/*
- *
- *
- */
-static Bool
-_xudc_vgi_to_gi(lcd,locale,vglyph,glyph,charset,charsetname,size)
-XLCd lcd;
-char *locale;
-unsigned long vglyph;
-unsigned long *glyph;
-XlcCharSet charset;
-char *charsetname;
-int size;
-{
- int num = 0,count,num_ret=0;
- int i,j,k;
- char **value,buf[128],ptr;
- FontData font_data;
- CodeSet cs;
-
-
- for(i=0;;i++){
- sprintf(buf, "fs%d.charset.name",i);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- if(!_XlcNCompareISOLatin1(charset->name,value[0],
- strlen(charset->name))){
- break;
- }
- } else {
- _xudc_utyerrno = 0x17 ;
- return(False);
- }
- }
-/*
- sprintf(buf, "fs%d.charset.name", codeset-1);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- strcpy(charsetname,value[0]);
- }
-*/
- sprintf(buf, "fs%d.font.primary", i);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- font_data = read_EncodingInfo(count,value);
- for(i=0;i<count;i++){
- for(k=0;k<font_data[i].scopes_num;k++){
- if( vgi_to_gi(glyph,vglyph,&(font_data[i].scopes[k])) == True){
- if (strlen(font_data[i].name) >= size)
- return(False);
- strcpy(charsetname,font_data[i].name);
- return(True);
- }
- }
- }
- }
- *glyph = vglyph;
- return(True);
-}
-int
-_xudc_code_to_glyph(locale,codepoint,gi,num_gi)
-char *locale;
-unsigned long codepoint;
-_XUDCGIInf **gi;
-int *num_gi;
-{
- XLCd lcd;
- unsigned char *from; int from_left;
- unsigned char *to ; int to_left = 10;
- unsigned char *dst;
- unsigned char byte;
- unsigned int from32[25];
- unsigned int to32[25];
- int i,j;
- char charsetname[256],src[10];
- XlcConv conv;
- XlcCharSet charset;
- XPointer args[2];
- unsigned long glyph,vglyph;
-
- from = (unsigned char *)from32;
- to = (unsigned char *)to32;
- dst = (unsigned char *)to32;
- memset(dst,0,25);
-
- lcd = (XLCd)_XlcGenericLoader(locale);
-
- for(i=0,j=0;i<4;i++){
- byte = getbyte(codepoint,i);
- if(byte){
- src[j] = byte;
- j ++;
- }
- }
- src[j] = 0;
- sprintf((char *)from,"%s\0",src);
- /* multi byte -> vgi */
- conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet);
- from_left = strlen((char *)from);
- args[0] = (XPointer) &charset;
- _XlcConvert(conv,(XPointer *)&from,&from_left,
- (XPointer *)&to, &to_left,args,1);
-
- /* vgi -> gi */
- vglyph = 0;
- for(i=0;dst[i];i++){
- vglyph = ((vglyph << 8) | dst[i]) ;
- }
- if(_xudc_vgi_to_gi(lcd,locale,vglyph,&glyph,charset,charsetname,
- sizeof(charsetname))==False){
- _XlcCloseConverter(conv);
- _XlcDestroyLC(lcd);
- *num_gi = 0;
- return(0);
- }
-
- _XlcCloseConverter(conv);
- _XlcDestroyLC(lcd);
-
- *gi = (_XUDCGIInf *)Xmalloc(sizeof(_XUDCGIInf));
- (*gi)->charset_str = (char *)Xmalloc(strlen(charsetname)+1);
- strcpy((*gi)->charset_str,charsetname);
- (*gi)->glyph_index = glyph;
- if(*gi == NULL){
- _xudc_utyerrno = 0x03 ;
- return(_XUDC_ERROR);
- }
- *num_gi = 1;
- return(0);
-}
-
+/*
+Copyright 1996, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+*/
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <locale.h>
+#include <Xlib.h>
+#include <Xlibint.h>
+#include <Xlcint.h>
+#include <XlcPubI.h>
+#include <XlcGeneric.h>
+#include <XomGeneric.h>
+
+/*
+ external symbols
+*/
+extern FontData read_EncodingInfo();
+extern int _xudc_get_codeset();
+
+extern int _xudc_utyderror ;
+extern int _xudc_utyerror ;
+
+extern unsigned long _xudc_utyerrno ;
+
+#define _XUDC_ERROR -1
+
+
+/*
+ UDC structure define
+*/
+typedef struct __XUDCGlyphRegion {
+ unsigned long start;
+ unsigned long end;
+} _XUDCGlyphRegion ;
+
+/*
+ * "code" no jyoui "i" byte me wo "unsigned char" toshite kaesu.
+ */
+static unsigned char getbyte(code,i)
+unsigned long code;
+int i;
+{
+ unsigned long byteL;
+ unsigned char byte;
+ byteL = code >> (8*(3-i));
+ byte = (unsigned char)(0x000000ff & byteL);
+ return(byte);
+}
+/*
+ get codeset which described by charset_str and locale.
+ for examples ...
+ locale : ja_JP
+ charset_str : JISX0208.1983-0
+*/
+
+_xudc_get_codeset(locale,charset_str,codeset,num_codeset)
+char *locale;
+char *charset_str;
+int **codeset;
+int *num_codeset;
+{
+ XLCdRec lcdrec;
+ XLCd lcd;
+ XLCdPublicRec xlcdp;
+ XPointer rdb;
+ int num = 0,count,num_ret=0,i,*ret;
+ char **value,buf[128],*ptr;
+
+
+ _xudc_utyderror = 0;
+ _xudc_utyerror = 0;
+
+ if((locale == NULL) || (charset_str == NULL)){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 1;
+ _xudc_utyerrno = 0x04 ;
+ return(_XUDC_ERROR);
+ }
+ if(codeset == NULL){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 2;
+ _xudc_utyerrno = 0x04 ;
+ return(_XUDC_ERROR);
+ }
+
+ /* create XLCd */
+ xlcdp.pub.siname = locale;
+ lcdrec.core = (XLCdCore)&xlcdp;
+ lcd = &lcdrec;
+ /* create X RDB (X NLS DB) */
+ rdb = _XlcCreateLocaleDataBase(lcd);
+ if(rdb == NULL){
+ _xudc_utyerror = 1;
+ _xudc_utyerrno = 0x15 ;
+ return(_XUDC_ERROR);
+ }
+
+ for(num=0;;num++){
+ /* XLC_FONTSET */
+ sprintf(buf, "fs%d.font.primary", num);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count < 1){
+ break ;
+ }
+ for(i=0;i<count;i++){
+ if (strlen(value[i]) >= sizeof(buf))
+ continue;
+ strcpy(buf,value[i]);
+ ptr = (char *)strchr(buf,(int)':');
+ *ptr = 0;
+ if(!_XlcCompareISOLatin1(charset_str,buf)){
+ num_ret += 1;
+ if(num_ret == 1){
+ ret = (int *)Xmalloc(sizeof(int));
+ } else {
+ int *prev_ret = ret;
+
+ ret =
+ (int *)Xrealloc(ret,num_ret*sizeof(int));
+ if (ret == NULL){
+ Xfree(prev_ret);
+ }
+ }
+ if(ret == NULL){
+ _xudc_utyerrno = 0x03 ;
+ return(_XUDC_ERROR);
+ }
+ ret[num_ret-1]=num;
+ break ;
+ }
+ }
+ }
+ if(num_ret == 0){
+ *num_codeset = 0;
+ *codeset = NULL;
+ return (0xff);
+ }
+
+ *num_codeset = num_ret;
+ *codeset = ret;
+ return 0;
+}
+
+static Bool gi_to_vgi(gi,vgi,scope)
+unsigned long gi,*vgi;
+FontScope scope;
+{
+ if(scope->shift_direction == (unsigned long)'+'){
+ gi -= scope->shift;
+ } else {
+ gi += scope->shift;
+ }
+ if(gi >= scope->start && gi <= scope->end){
+ *vgi = gi;
+ return(True);
+ }
+ return(False);
+}
+
+static void shift_area(udc,scope)
+_XUDCGlyphRegion *udc;
+FontScope scope;
+{
+ if(scope->shift_direction == (unsigned long)'+'){
+ udc->start += scope->shift;
+ udc->end += scope->shift;
+ } else {
+ udc->start -= scope->shift;
+ udc->end -= scope->shift;
+ }
+}
+
+/*
+ get UDC area with glyph index.
+ for examples ...
+ locale : ja_JP
+ charset_str : JISX0208.1983-0
+*/
+_XUDCGetUDCGIArea(locale,codeset,charset_str,gr,num_gr)
+char *locale;
+int codeset;
+char *charset_str;
+_XUDCGlyphRegion **gr;
+int *num_gr;
+{
+ XLCdRec lcdrec;
+ XLCd lcd;
+ XLCdPublicRec xlcdp;
+ XPointer rdb;
+ _XUDCGlyphRegion *udc;
+ int num = 0,count,num_ret=0;
+ int i,j,k;
+ char **value,buf[128],ptr;
+ FontData font_data;
+
+
+ _xudc_utyderror = 0;
+ _xudc_utyerror = 0;
+ _xudc_utyerrno = 0x00 ;
+
+ if((locale == NULL) || (charset_str == NULL)){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 1;
+ _xudc_utyerrno = 0x04;
+ _xudc_utyerrno |= (0x0b<<8) ;
+ return(_XUDC_ERROR);
+ }
+ if(gr == NULL){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 1;
+ _xudc_utyerrno = 0x04;
+ _xudc_utyerrno |= (0x0b<<8) ;
+ return(_XUDC_ERROR);
+ }
+ if(num_gr == NULL){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 2;
+ _xudc_utyerrno = 0x04;
+ _xudc_utyerrno |= (0x0b<<8) ;
+ return(_XUDC_ERROR);
+ }
+
+ /* create XLCd */
+ xlcdp.pub.siname = locale;
+ lcdrec.core = (XLCdCore)&xlcdp;
+ lcd = &lcdrec;
+ /* create X RDB (X NLS DB) */
+ rdb = _XlcCreateLocaleDataBase(lcd);
+ if(rdb == NULL){
+ _xudc_utyerror = 1;
+ _xudc_utyerrno = 0x15 ;
+ _xudc_utyerrno |= (0x0b<<8) ;
+ return(_XUDC_ERROR);
+ }
+ udc = NULL;
+
+ /* XLC_FONTSET */
+ sprintf(buf, "fs%d.charset.udc_area", codeset-1);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ udc = (_XUDCGlyphRegion *)Xmalloc(count * sizeof(_XUDCGlyphRegion));
+ if(udc == NULL){
+ _xudc_utyerrno = 0x03 ;
+ _xudc_utyerrno |= (0x0b<<8) ;
+ return(_XUDC_ERROR);
+ }
+ for(i=0;i<count;i++){
+ sscanf(value[i],"\\x%lx,\\x%lx", &(udc[i].start), &(udc[i].end));
+ }
+ }
+
+ *num_gr = count;
+
+ sprintf(buf, "fs%d.font.primary", codeset-1);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ font_data = read_EncodingInfo(count,value);
+ for(i=0;i<count;i++){
+ if( !_XlcCompareISOLatin1(font_data[i].name,charset_str)){
+ for(j=0;j<(*num_gr);j++){
+ for(k=0;k<font_data[i].scopes_num;k++){
+ if(udc[j].start == font_data[i].scopes[k].start
+ && font_data[i].scopes[k].shift){
+ shift_area(&udc[j],&(font_data[i].scopes[k]));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ *gr = udc;
+ return 0;
+}
+
+/*
+ * Code convert wo tomonau UDC area no kakutoku
+ * GetUDCCPArea() / glyph_to_code()
+ *
+ */
+
+static int
+_xudc_gi_to_vgi(lcd,locale,charset_str,codeset,gi,vgi,charsetname,size)
+XLCd lcd;
+char *locale;
+char *charset_str;
+int codeset;
+unsigned long gi;
+unsigned long *vgi;
+char *charsetname;
+int size;
+{
+ _XUDCGlyphRegion *udc;
+ int num = 0,count,num_ret=0;
+ int i,j,k;
+ char **value,buf[128],ptr;
+ FontData font_data;
+
+
+ sprintf(buf, "fs%d.charset.name", codeset-1);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ strcpy(charsetname,value[0]);
+ }
+ if (count >= size)
+ return False;
+ sprintf(buf, "fs%d.font.primary", codeset-1);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ font_data = read_EncodingInfo(count,value);
+ for(i=0;i<count;i++){
+ if( !_XlcCompareISOLatin1(font_data[i].name,charset_str)){
+ for(k=0;k<font_data[i].scopes_num;k++){
+ if( gi_to_vgi(gi,vgi,&(font_data[i].scopes[k])) == True){
+ return(True);
+ }
+ }
+ }
+ }
+ }
+/*
+ free_fontdata(font_data);
+*/
+ *vgi = gi;
+ return(True);
+}
+
+Bool non_standard(lcd,charset)
+XLCd lcd;
+XlcCharSet charset;
+{
+ char buf[256];
+ int count,i;
+ char **value;
+ if(charset->ct_sequence == NULL){
+ return(False);
+ }
+ for(i=0;;i++){
+ sprintf(buf, "csd%d.charset_name", i);
+ _XlcGetLocaleDataBase(lcd, "XLC_CHARSET_DEFINE", buf, &value, &count);
+ if(count > 0){
+ if(!_XlcNCompareISOLatin1(value[0],
+ charset->name,strlen(value[0])) ){
+ return(True);
+ }
+ } else {
+ return(False);
+ }
+ }
+}
+
+static Bool
+make_none_standard(from,charset,src,size)
+char *from;
+XlcCharSet charset;
+char *src;
+int size;
+{
+ int name_len,seq_len,rest_len,i;
+ name_len = 2 + strlen(charset->encoding_name) + 1;
+ seq_len = strlen(charset->ct_sequence);
+ rest_len = strlen(charset->encoding_name) + 1 + strlen(src);
+ if (name_len + seq_len + strlen(src) >= size || rest_len >= 0x4000)
+ return False;
+ strcpy(from,charset->ct_sequence);
+ from[seq_len] = (rest_len >> 7) + 128;
+ from[seq_len+1] = (rest_len & 0x7f) + 128;
+ strcpy(&from[seq_len + 2],charset->encoding_name);
+ from[seq_len+name_len-1] = 0x02; /* STX */
+ strcpy(&from[seq_len + name_len],src);
+ return True;
+}
+int
+_xudc_glyph_to_code(locale,charset_str,codeset,glyph_index,codepoint)
+char *locale;
+char *charset_str;
+int codeset;
+unsigned long glyph_index;
+unsigned long *codepoint;
+{
+ XLCd lcd;
+ unsigned char *from; int from_left;
+ unsigned char *to ; int to_left = 10;
+ unsigned char *dst;
+ unsigned char byte;
+ unsigned long from32[25];
+ unsigned long to32[25];
+ int i,j;
+ char charsetname[256],src[10];
+ XlcConv conv;
+ XlcCharSet charset;
+ XPointer args[2];
+
+ from = (unsigned char *)from32;
+ to = (unsigned char *)to32;
+ dst = (unsigned char *)to32;
+
+ memset(dst,0,25);
+
+ lcd = (XLCd)_XlcGenericLoader(locale);
+
+ if (!_xudc_gi_to_vgi(lcd,locale,charset_str,codeset,
+ glyph_index,&glyph_index,charsetname,sizeof(charsetname)))
+ return(_XUDC_ERROR);
+
+ for(i=0,j=0;i<4;i++){
+ byte = getbyte(glyph_index,i);
+ if(byte){
+ src[j] = byte;
+ j ++;
+ }
+ }
+ src[j] = 0;
+
+
+ /* get charset */
+/*
+ sprintf(tmp,"%s%s",charset_str,":GL");
+ charset_name = strdup(tmp);
+*/
+ charset = _XlcGetCharSet(charsetname);
+ if(charset == NULL){
+ _xudc_utyerrno = 0x16 ;
+ return(_XUDC_ERROR);
+ }
+ /* make ct */
+ if( non_standard(lcd,charset)) {
+ if (!make_none_standard(from,charset,src,sizeof(from32)))
+ return(_XUDC_ERROR);
+ } else if(charset->ct_sequence){
+ if (strlen(charset->ct_sequence) + strlen(src) >= sizeof(from32))
+ return(_XUDC_ERROR);
+ sprintf((char *)from,"%s%s",charset->ct_sequence,src);
+ } else {
+ sprintf((char *)from,"%s\0",src);
+ }
+ /* compound text -> multi byte */
+ conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte);
+ from_left = strlen((char *)from);
+ _XlcConvert(conv,(XPointer *)&from,&from_left,
+ (XPointer *)&to, &to_left,args,0);
+ _XlcCloseConverter(conv);
+ _XlcDestroyLC(lcd);
+
+ *codepoint = 0;
+ for(i=0;dst[i];i++){
+ *codepoint = ((*codepoint << 8) | dst[i]) ;
+ }
+ return(0);
+}
+
+typedef struct __XUDCCodeRegion {
+ unsigned long start,end;
+} _XUDCCodeRegion ;
+
+int
+_XUDCGetUDCCPArea(locale,codeset,charset_str,cr,num_cr)
+char *locale;
+int codeset;
+char *charset_str;
+_XUDCCodeRegion **cr;
+int *num_cr;
+{
+ int i,num_gr,ret;
+ _XUDCGlyphRegion *gr;
+ _XUDCCodeRegion *crr;
+
+ _xudc_utyerror = 0;
+ _xudc_utyderror = 0;
+
+ if(cr == NULL){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 1;
+ _xudc_utyerrno = 0x04 ;
+ _xudc_utyerrno |= (0x0a<<8) ;
+ return(_XUDC_ERROR);
+ }
+ if(num_cr == NULL){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 2;
+ _xudc_utyerrno = 0x04 ;
+ _xudc_utyerrno |= (0x0a<<8) ;
+ return(_XUDC_ERROR);
+ }
+
+ ret = _XUDCGetUDCGIArea(locale,codeset,charset_str,&gr,&num_gr);
+ if(ret == _XUDC_ERROR){
+ _xudc_utyerrno &= 0xff ;
+ _xudc_utyerrno |= (0x0a<<8) ;
+ return(ret);
+ }
+
+ crr = (_XUDCCodeRegion *)Xmalloc(num_gr*sizeof(_XUDCCodeRegion));
+ if(crr == NULL){
+ Xfree(gr);
+ _xudc_utyerrno = 0x03 ;
+ _xudc_utyerrno |= (0x0a<<8) ;
+ return(_XUDC_ERROR);
+ }
+
+ for(i=0;i<num_gr;i++){
+ ret = _xudc_glyph_to_code(locale,charset_str,codeset,
+ gr[i].start, &(crr[i].start));
+ if(ret == _XUDC_ERROR){
+ _xudc_utyerrno |= (0x0a<<8) ;
+ Xfree(gr);
+ Xfree(crr);
+ return(ret);
+ }
+ ret = _xudc_glyph_to_code(locale,charset_str,codeset,
+ gr[i].end, &(crr[i].end));
+ if(ret == _XUDC_ERROR){
+ _xudc_utyerrno |= (0x0a<<8) ;
+ Xfree(gr);
+ Xfree(crr);
+ return(ret);
+ }
+ }
+ Xfree(gr);
+ *cr = crr;
+ *num_cr = num_gr;
+ return(0);
+}
+
+/*
+ * code_to_glyph()
+ *
+ */
+typedef struct __XUDCGIInf {
+ char *charset_str;
+ unsigned long glyph_index;
+} _XUDCGIInf ;
+
+/*
+ *
+ *
+ */
+static Bool vgi_to_gi(gi,vgi,scope)
+unsigned long *gi,vgi;
+FontScope scope;
+{
+ if(vgi >= scope->start && vgi <= scope->end){
+ if(scope->shift_direction == (unsigned long)'+'){
+ *gi = vgi + scope->shift;
+ } else {
+ *gi = vgi - scope->shift;
+ }
+ return(True);
+ }
+ return(False);
+}
+/*
+ *
+ *
+ */
+static Bool
+_xudc_vgi_to_gi(lcd,locale,vglyph,glyph,charset,charsetname,size)
+XLCd lcd;
+char *locale;
+unsigned long vglyph;
+unsigned long *glyph;
+XlcCharSet charset;
+char *charsetname;
+int size;
+{
+ int num = 0,count,num_ret=0;
+ int i,j,k;
+ char **value,buf[128],ptr;
+ FontData font_data;
+ CodeSet cs;
+
+
+ for(i=0;;i++){
+ sprintf(buf, "fs%d.charset.name",i);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ if(!_XlcNCompareISOLatin1(charset->name,value[0],
+ strlen(charset->name))){
+ break;
+ }
+ } else {
+ _xudc_utyerrno = 0x17 ;
+ return(False);
+ }
+ }
+/*
+ sprintf(buf, "fs%d.charset.name", codeset-1);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ strcpy(charsetname,value[0]);
+ }
+*/
+ sprintf(buf, "fs%d.font.primary", i);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ font_data = read_EncodingInfo(count,value);
+ for(i=0;i<count;i++){
+ for(k=0;k<font_data[i].scopes_num;k++){
+ if( vgi_to_gi(glyph,vglyph,&(font_data[i].scopes[k])) == True){
+ if (strlen(font_data[i].name) >= size)
+ return(False);
+ strcpy(charsetname,font_data[i].name);
+ return(True);
+ }
+ }
+ }
+ }
+ *glyph = vglyph;
+ return(True);
+}
+int
+_xudc_code_to_glyph(locale,codepoint,gi,num_gi)
+char *locale;
+unsigned long codepoint;
+_XUDCGIInf **gi;
+int *num_gi;
+{
+ XLCd lcd;
+ unsigned char *from; int from_left;
+ unsigned char *to ; int to_left = 10;
+ unsigned char *dst;
+ unsigned char byte;
+ unsigned int from32[25];
+ unsigned int to32[25];
+ int i,j;
+ char charsetname[256],src[10];
+ XlcConv conv;
+ XlcCharSet charset;
+ XPointer args[2];
+ unsigned long glyph,vglyph;
+
+ from = (unsigned char *)from32;
+ to = (unsigned char *)to32;
+ dst = (unsigned char *)to32;
+ memset(dst,0,25);
+
+ lcd = (XLCd)_XlcGenericLoader(locale);
+
+ for(i=0,j=0;i<4;i++){
+ byte = getbyte(codepoint,i);
+ if(byte){
+ src[j] = byte;
+ j ++;
+ }
+ }
+ src[j] = 0;
+ sprintf((char *)from,"%s\0",src);
+ /* multi byte -> vgi */
+ conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet);
+ from_left = strlen((char *)from);
+ args[0] = (XPointer) &charset;
+ _XlcConvert(conv,(XPointer *)&from,&from_left,
+ (XPointer *)&to, &to_left,args,1);
+
+ /* vgi -> gi */
+ vglyph = 0;
+ for(i=0;dst[i];i++){
+ vglyph = ((vglyph << 8) | dst[i]) ;
+ }
+ if(_xudc_vgi_to_gi(lcd,locale,vglyph,&glyph,charset,charsetname,
+ sizeof(charsetname))==False){
+ _XlcCloseConverter(conv);
+ _XlcDestroyLC(lcd);
+ *num_gi = 0;
+ return(0);
+ }
+
+ _XlcCloseConverter(conv);
+ _XlcDestroyLC(lcd);
+
+ *gi = (_XUDCGIInf *)Xmalloc(sizeof(_XUDCGIInf));
+ (*gi)->charset_str = (char *)Xmalloc(strlen(charsetname)+1);
+ strcpy((*gi)->charset_str,charsetname);
+ (*gi)->glyph_index = glyph;
+ if(*gi == NULL){
+ _xudc_utyerrno = 0x03 ;
+ return(_XUDC_ERROR);
+ }
+ *num_gi = 1;
+ return(0);
+}
+
diff --git a/libX11/src/util/.gitignore b/libX11/src/util/.gitignore
new file mode 100644
index 000000000..e744d636d
--- /dev/null
+++ b/libX11/src/util/.gitignore
@@ -0,0 +1,2 @@
+# Add & Override for this directory and it's subdirectories
+makekeys
diff --git a/libX11/src/util/mkks.sh b/libX11/src/util/mkks.sh
index 262cc9540..3e80c354b 100644
--- a/libX11/src/util/mkks.sh
+++ b/libX11/src/util/mkks.sh
@@ -1,11 +1,11 @@
-#!/bin/sh
-
-cat $* | awk 'BEGIN { \
- printf "/*\n * This file is generated from %s. Do not edit.\n */\n", \
- "$(INCLUDESRC)/keysymdef.h";\
-} \
-/^#define/ { \
- len = length($2)-3; \
- printf("{ \"%s\", %s },\n", substr($2,4,len), $3); \
-}'
-
+#!/bin/sh
+
+cat $* | awk 'BEGIN { \
+ printf "/*\n * This file is generated from %s. Do not edit.\n */\n", \
+ "$(INCLUDESRC)/keysymdef.h";\
+} \
+/^#define/ { \
+ len = length($2)-3; \
+ printf("{ \"%s\", %s },\n", substr($2,4,len), $3); \
+}'
+
diff --git a/libX11/src/utlist.h b/libX11/src/utlist.h
index 215c2c62e..948eb6953 100644
--- a/libX11/src/utlist.h
+++ b/libX11/src/utlist.h
@@ -1,116 +1,116 @@
-/*
-Copyright (c) 2007-2009, Troy D. Hanson
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef UTLIST_H
-#define UTLIST_H
-
-#define UTLIST_VERSION 1.7
-
-/* From: http://uthash.sourceforge.net/utlist.html */
-/*
- * This file contains macros to manipulate singly and doubly-linked lists.
- *
- * 1. LL_ macros: singly-linked lists.
- * 2. DL_ macros: doubly-linked lists.
- * 3. CDL_ macros: circular doubly-linked lists.
- *
- * To use singly-linked lists, your structure must have a "next" pointer.
- * To use doubly-linked lists, your structure must "prev" and "next" pointers.
- * Either way, the pointer to the head of the list must be initialized to NULL.
- *
- * ----------------.EXAMPLE -------------------------
- * struct item {
- * int id;
- * struct item *prev, *next;
- * }
- *
- * struct item *list = NULL:
- *
- * int main() {
- * struct item *item;
- * ... allocate and populate item ...
- * DL_APPEND(list, item);
- * }
- * --------------------------------------------------
- *
- * For doubly-linked lists, the append and delete macros are O(1)
- * For singly-linked lists, append and delete are O(n) but prepend is O(1)
- * The sort macro is O(n log(n)) for all types of single/double/circular lists.
- */
-
-
-/******************************************************************************
- * doubly linked list macros (non-circular) *
- *****************************************************************************/
-#define DL_PREPEND(head,add) \
-do { \
- (add)->next = head; \
- if (head) { \
- (add)->prev = (head)->prev; \
- (head)->prev = (add); \
- } else { \
- (add)->prev = (add); \
- } \
- (head) = (add); \
-} while (0)
-
-#define DL_APPEND(head,add) \
-do { \
- if (head) { \
- (add)->prev = (head)->prev; \
- (head)->prev->next = (add); \
- (head)->prev = (add); \
- (add)->next = NULL; \
- } else { \
- (head)=(add); \
- (head)->prev = (head); \
- (head)->next = NULL; \
- } \
-} while (0);
-
-#define DL_DELETE(head,del) \
-do { \
- if ((del)->prev == (del)) { \
- (head)=NULL; \
- } else if ((del)==(head)) { \
- (del)->next->prev = (del)->prev; \
- (head) = (del)->next; \
- } else { \
- (del)->prev->next = (del)->next; \
- if ((del)->next) { \
- (del)->next->prev = (del)->prev; \
- } else { \
- (head)->prev = (del)->prev; \
- } \
- } \
-} while (0);
-
-
-#define DL_FOREACH(head,el) \
- for(el=head;el;el=el->next)
-
-#define DL_FOREACH_SAFE(head,el,tmp) \
- for(el=head,tmp=el->next;el;el=tmp,tmp=(el) ? (el->next) : NULL)
-
-#endif /* UTLIST_H */
-
+/*
+Copyright (c) 2007-2009, Troy D. Hanson
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef UTLIST_H
+#define UTLIST_H
+
+#define UTLIST_VERSION 1.7
+
+/* From: http://uthash.sourceforge.net/utlist.html */
+/*
+ * This file contains macros to manipulate singly and doubly-linked lists.
+ *
+ * 1. LL_ macros: singly-linked lists.
+ * 2. DL_ macros: doubly-linked lists.
+ * 3. CDL_ macros: circular doubly-linked lists.
+ *
+ * To use singly-linked lists, your structure must have a "next" pointer.
+ * To use doubly-linked lists, your structure must "prev" and "next" pointers.
+ * Either way, the pointer to the head of the list must be initialized to NULL.
+ *
+ * ----------------.EXAMPLE -------------------------
+ * struct item {
+ * int id;
+ * struct item *prev, *next;
+ * }
+ *
+ * struct item *list = NULL:
+ *
+ * int main() {
+ * struct item *item;
+ * ... allocate and populate item ...
+ * DL_APPEND(list, item);
+ * }
+ * --------------------------------------------------
+ *
+ * For doubly-linked lists, the append and delete macros are O(1)
+ * For singly-linked lists, append and delete are O(n) but prepend is O(1)
+ * The sort macro is O(n log(n)) for all types of single/double/circular lists.
+ */
+
+
+/******************************************************************************
+ * doubly linked list macros (non-circular) *
+ *****************************************************************************/
+#define DL_PREPEND(head,add) \
+do { \
+ (add)->next = head; \
+ if (head) { \
+ (add)->prev = (head)->prev; \
+ (head)->prev = (add); \
+ } else { \
+ (add)->prev = (add); \
+ } \
+ (head) = (add); \
+} while (0)
+
+#define DL_APPEND(head,add) \
+do { \
+ if (head) { \
+ (add)->prev = (head)->prev; \
+ (head)->prev->next = (add); \
+ (head)->prev = (add); \
+ (add)->next = NULL; \
+ } else { \
+ (head)=(add); \
+ (head)->prev = (head); \
+ (head)->next = NULL; \
+ } \
+} while (0);
+
+#define DL_DELETE(head,del) \
+do { \
+ if ((del)->prev == (del)) { \
+ (head)=NULL; \
+ } else if ((del)==(head)) { \
+ (del)->next->prev = (del)->prev; \
+ (head) = (del)->next; \
+ } else { \
+ (del)->prev->next = (del)->next; \
+ if ((del)->next) { \
+ (del)->next->prev = (del)->prev; \
+ } else { \
+ (head)->prev = (del)->prev; \
+ } \
+ } \
+} while (0);
+
+
+#define DL_FOREACH(head,el) \
+ for(el=head;el;el=el->next)
+
+#define DL_FOREACH_SAFE(head,el,tmp) \
+ for(el=head,tmp=el->next;el;el=tmp,tmp=(el) ? (el->next) : NULL)
+
+#endif /* UTLIST_H */
+
diff --git a/libX11/src/x11_xcb.c b/libX11/src/x11_xcb.c
index 3ddf403b6..a40a03e76 100644
--- a/libX11/src/x11_xcb.c
+++ b/libX11/src/x11_xcb.c
@@ -1,15 +1,15 @@
-/* Copyright (C) 2003,2006 Jamey Sharp, Josh Triplett
- * This file is licensed under the MIT license. See the file COPYING. */
-
-#include "Xlibint.h"
-#include "Xxcbint.h"
-
-xcb_connection_t *XGetXCBConnection(Display *dpy)
-{
- return dpy->xcb->connection;
-}
-
-void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner)
-{
- dpy->xcb->event_owner = owner;
-}
+/* Copyright (C) 2003,2006 Jamey Sharp, Josh Triplett
+ * This file is licensed under the MIT license. See the file COPYING. */
+
+#include "Xlibint.h"
+#include "Xxcbint.h"
+
+xcb_connection_t *XGetXCBConnection(Display *dpy)
+{
+ return dpy->xcb->connection;
+}
+
+void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner)
+{
+ dpy->xcb->event_owner = owner;
+}
diff --git a/libX11/src/xcms/AddDIC.c b/libX11/src/xcms/AddDIC.c
index ecc6650ab..d38d905cb 100644
--- a/libX11/src/xcms/AddDIC.c
+++ b/libX11/src/xcms/AddDIC.c
@@ -1,149 +1,149 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsAddDIC.c
- *
- * DESCRIPTION
- * Source for XcmsAddColorSpace
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/*
- * DEFINES
- */
-#define NextUnregDiCsID(lastid) \
- (XCMS_UNREG_ID(lastid) ? ++lastid : XCMS_FIRST_UNREG_DI_ID)
-#define MAX(x,y) ((x) < (y) ? (y) : (x))
-
-
-/*
- * NAME
- * XcmsAddColorSpace - Add a Device-Independent Color Space
- *
- * SYNOPSIS
- */
-Status
-XcmsAddColorSpace(XcmsColorSpace *pCS)
-/*
- * DESCRIPTION
- * DI Color Spaces are managed on a global basis.
- * This means that with exception of the provided DI color spaces:
- * CIEXYZ, CIExyY, CIELab, CIEuvY, CIELuv, and TekHVC
- * DI color spaces may have different XcmsColorFormat IDs between
- * clients. So, you must be careful when using XcmsColor
- * structures between clients! Use the routines XcmsFormatOfPrefix()
- * and XcmsPrefixOfFormat() appropriately.
- *
- * RETURNS
- * XcmsSuccess if succeeded, otherwise XcmsFailure
- */
-{
- XcmsColorSpace **papColorSpaces;
- XcmsColorSpace *ptmpCS;
- XcmsColorFormat lastID = 0;
-
- if ((pCS->id = _XcmsRegFormatOfPrefix(pCS->prefix)) != 0) {
- if (XCMS_DD_ID(pCS->id)) {
- /* This is a Device-Dependent Color Space */
- return(XcmsFailure);
- }
- /*
- * REGISTERED DI Color Space
- * then see if the color space has already been added to the
- * system:
- * a. If the same ID/prefix and same XcmsColorSpec is found,
- * then its a duplicate, so return success.
- * b. If same ID/prefix but different XcmsColorSpec is
- * found, then add the color space to the front of the
- * list using the same ID. This allows one to override
- * an existing DI Color Space.
- * c. Otherwise none found so just add the color space.
- */
- if ((papColorSpaces = _XcmsDIColorSpaces) != NULL) {
- while ((ptmpCS = *papColorSpaces++) != NULL) {
- if (pCS->id == ptmpCS->id) {
- if (pCS == ptmpCS) {
- /* a. duplicate*/
- return(XcmsSuccess);
- }
- /* b. same ID/prefix but different XcmsColorSpace */
- break;
- }
- }
- }
- /* c. None found */
- } else {
- /*
- * UNREGISTERED DI Color Space
- * then see if the color space has already been added to the
- * system:
- * a. If same prefix and XcmsColorSpec, then
- * its a duplicate ... return success.
- * b. If same prefix but different XcmsColorSpec, then
- * add the color space to the front of the list using
- * the same ID. This allows one to override an existing
- * DI Color Space.
- * c. Otherwise none found so, add the color space using the
- * next unregistered ID for the connection.
- */
- if ((papColorSpaces = _XcmsDIColorSpaces) != NULL) {
- while ((ptmpCS = *papColorSpaces++) != NULL) {
- lastID = MAX(lastID, ptmpCS->id);
- if (strcmp(pCS->prefix, ptmpCS->prefix) == 0) {
- if (pCS == ptmpCS) {
- /* a. duplicate */
- return(XcmsSuccess);
- }
- /* b. same prefix but different XcmsColorSpec */
- pCS->id = ptmpCS->id;
- goto AddColorSpace;
- }
- }
- }
- /* c. None found */
- pCS->id = NextUnregDiCsID(lastID);
- }
-
-
-AddColorSpace:
- if ((papColorSpaces = (XcmsColorSpace **)
- _XcmsPushPointerArray((XPointer *)_XcmsDIColorSpaces,
- (XPointer)pCS,
- (XPointer *)_XcmsDIColorSpacesInit)) == NULL) {
- return(XcmsFailure);
- }
- _XcmsDIColorSpaces = papColorSpaces;
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsAddDIC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsAddColorSpace
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/*
+ * DEFINES
+ */
+#define NextUnregDiCsID(lastid) \
+ (XCMS_UNREG_ID(lastid) ? ++lastid : XCMS_FIRST_UNREG_DI_ID)
+#define MAX(x,y) ((x) < (y) ? (y) : (x))
+
+
+/*
+ * NAME
+ * XcmsAddColorSpace - Add a Device-Independent Color Space
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsAddColorSpace(XcmsColorSpace *pCS)
+/*
+ * DESCRIPTION
+ * DI Color Spaces are managed on a global basis.
+ * This means that with exception of the provided DI color spaces:
+ * CIEXYZ, CIExyY, CIELab, CIEuvY, CIELuv, and TekHVC
+ * DI color spaces may have different XcmsColorFormat IDs between
+ * clients. So, you must be careful when using XcmsColor
+ * structures between clients! Use the routines XcmsFormatOfPrefix()
+ * and XcmsPrefixOfFormat() appropriately.
+ *
+ * RETURNS
+ * XcmsSuccess if succeeded, otherwise XcmsFailure
+ */
+{
+ XcmsColorSpace **papColorSpaces;
+ XcmsColorSpace *ptmpCS;
+ XcmsColorFormat lastID = 0;
+
+ if ((pCS->id = _XcmsRegFormatOfPrefix(pCS->prefix)) != 0) {
+ if (XCMS_DD_ID(pCS->id)) {
+ /* This is a Device-Dependent Color Space */
+ return(XcmsFailure);
+ }
+ /*
+ * REGISTERED DI Color Space
+ * then see if the color space has already been added to the
+ * system:
+ * a. If the same ID/prefix and same XcmsColorSpec is found,
+ * then its a duplicate, so return success.
+ * b. If same ID/prefix but different XcmsColorSpec is
+ * found, then add the color space to the front of the
+ * list using the same ID. This allows one to override
+ * an existing DI Color Space.
+ * c. Otherwise none found so just add the color space.
+ */
+ if ((papColorSpaces = _XcmsDIColorSpaces) != NULL) {
+ while ((ptmpCS = *papColorSpaces++) != NULL) {
+ if (pCS->id == ptmpCS->id) {
+ if (pCS == ptmpCS) {
+ /* a. duplicate*/
+ return(XcmsSuccess);
+ }
+ /* b. same ID/prefix but different XcmsColorSpace */
+ break;
+ }
+ }
+ }
+ /* c. None found */
+ } else {
+ /*
+ * UNREGISTERED DI Color Space
+ * then see if the color space has already been added to the
+ * system:
+ * a. If same prefix and XcmsColorSpec, then
+ * its a duplicate ... return success.
+ * b. If same prefix but different XcmsColorSpec, then
+ * add the color space to the front of the list using
+ * the same ID. This allows one to override an existing
+ * DI Color Space.
+ * c. Otherwise none found so, add the color space using the
+ * next unregistered ID for the connection.
+ */
+ if ((papColorSpaces = _XcmsDIColorSpaces) != NULL) {
+ while ((ptmpCS = *papColorSpaces++) != NULL) {
+ lastID = MAX(lastID, ptmpCS->id);
+ if (strcmp(pCS->prefix, ptmpCS->prefix) == 0) {
+ if (pCS == ptmpCS) {
+ /* a. duplicate */
+ return(XcmsSuccess);
+ }
+ /* b. same prefix but different XcmsColorSpec */
+ pCS->id = ptmpCS->id;
+ goto AddColorSpace;
+ }
+ }
+ }
+ /* c. None found */
+ pCS->id = NextUnregDiCsID(lastID);
+ }
+
+
+AddColorSpace:
+ if ((papColorSpaces = (XcmsColorSpace **)
+ _XcmsPushPointerArray((XPointer *)_XcmsDIColorSpaces,
+ (XPointer)pCS,
+ (XPointer *)_XcmsDIColorSpacesInit)) == NULL) {
+ return(XcmsFailure);
+ }
+ _XcmsDIColorSpaces = papColorSpaces;
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/AddSF.c b/libX11/src/xcms/AddSF.c
index 2e244e73b..97c6e09fe 100644
--- a/libX11/src/xcms/AddSF.c
+++ b/libX11/src/xcms/AddSF.c
@@ -1,145 +1,145 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsAddSF.c
- *
- * DESCRIPTION
- * Source for XcmsAddFunctionSet
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define NextUnregDdCsID(lastid) \
- (XCMS_UNREG_ID(lastid) ? ++lastid : XCMS_FIRST_UNREG_DD_ID)
-#define MIN(x,y) ((x) > (y) ? (y) : (x))
-
-
-/*
- * NAME
- * XcmsAddFunctionSet - Add an Screen Color Characterization
- * Function Set
- *
- * SYNOPSIS
- */
-Status
-XcmsAddFunctionSet(XcmsFunctionSet *pNewFS)
-/*
- * DESCRIPTION
- * Additional Screen Color Characterization Function Sets are
- * managed on a global basis. This means that with exception
- * of the provided DD color spaces:
- * RGB and RGBi
- * DD color spaces may have different XcmsColorFormat IDs between
- * clients. So, you must be careful when using XcmsColorFormat
- * across clients! Use the routines XcmsFormatOfPrefix()
- * and XcmsPrefixOfFormat() appropriately.
- *
- * RETURNS
- * XcmsSuccess if succeeded, otherwise XcmsFailure
- *
- * CAVEATS
- * Additional Screen Color Characterization Function Sets
- * should be added prior to any use of the routine
- * XcmsCreateCCC(). If not, XcmsCCC structures created
- * prior to the call of this routines will not have had
- * a chance to initialize using the added Screen Color
- * Characterization Function Set.
- */
-{
- XcmsFunctionSet **papSCCFuncSets = _XcmsSCCFuncSets;
- XcmsColorSpace **papNewCSs;
- XcmsColorSpace *pNewCS, **paptmpCS;
- XcmsColorFormat lastID = 0;
-
-
- if (papSCCFuncSets != NULL) {
- if ((papNewCSs = pNewFS->DDColorSpaces) == NULL) {
- /*
- * Error, new Screen Color Characterization Function Set
- * missing color spaces
- */
- return(XcmsFailure);
- }
- while ((pNewCS = *papNewCSs++) != NULL) {
- if ((pNewCS->id = _XcmsRegFormatOfPrefix(pNewCS->prefix)) != 0) {
- if (XCMS_DI_ID(pNewCS->id)) {
- /* This is a Device-Independent Color Space */
- return(XcmsFailure);
- }
- /*
- * REGISTERED DD Color Space
- * therefore use the registered ID.
- */
- } else {
- /*
- * UNREGISTERED DD Color Space
- * then see if the color space is already in
- * _XcmsDDColorSpaces.
- * a. If same prefix, then use the same ID.
- * b. Otherwise, use a new ID.
- */
- for (paptmpCS = _XcmsDDColorSpaces; *paptmpCS != NULL;
- paptmpCS++){
- lastID = MIN(lastID, (*paptmpCS)->id);
- if (strcmp(pNewCS->prefix, (*paptmpCS)->prefix) == 0) {
- pNewCS->id = (*paptmpCS)->id;
- break;
- }
- }
- if (pNewCS->id == 0) {
- /* still haven't found one */
- pNewCS->id = NextUnregDdCsID(lastID);
- if ((paptmpCS = (XcmsColorSpace **)_XcmsPushPointerArray(
- (XPointer *) _XcmsDDColorSpaces,
- (XPointer) pNewCS,
- (XPointer *) _XcmsDDColorSpacesInit)) == NULL) {
- return(XcmsFailure);
- }
- _XcmsDDColorSpaces = paptmpCS;
- }
- }
- }
- }
- if ((papSCCFuncSets = (XcmsFunctionSet **)
- _XcmsPushPointerArray((XPointer *) _XcmsSCCFuncSets,
- (XPointer) pNewFS,
- (XPointer *)_XcmsSCCFuncSetsInit)) == NULL) {
- return(XcmsFailure);
- }
- _XcmsSCCFuncSets = papSCCFuncSets;
-
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsAddSF.c
+ *
+ * DESCRIPTION
+ * Source for XcmsAddFunctionSet
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define NextUnregDdCsID(lastid) \
+ (XCMS_UNREG_ID(lastid) ? ++lastid : XCMS_FIRST_UNREG_DD_ID)
+#define MIN(x,y) ((x) > (y) ? (y) : (x))
+
+
+/*
+ * NAME
+ * XcmsAddFunctionSet - Add an Screen Color Characterization
+ * Function Set
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsAddFunctionSet(XcmsFunctionSet *pNewFS)
+/*
+ * DESCRIPTION
+ * Additional Screen Color Characterization Function Sets are
+ * managed on a global basis. This means that with exception
+ * of the provided DD color spaces:
+ * RGB and RGBi
+ * DD color spaces may have different XcmsColorFormat IDs between
+ * clients. So, you must be careful when using XcmsColorFormat
+ * across clients! Use the routines XcmsFormatOfPrefix()
+ * and XcmsPrefixOfFormat() appropriately.
+ *
+ * RETURNS
+ * XcmsSuccess if succeeded, otherwise XcmsFailure
+ *
+ * CAVEATS
+ * Additional Screen Color Characterization Function Sets
+ * should be added prior to any use of the routine
+ * XcmsCreateCCC(). If not, XcmsCCC structures created
+ * prior to the call of this routines will not have had
+ * a chance to initialize using the added Screen Color
+ * Characterization Function Set.
+ */
+{
+ XcmsFunctionSet **papSCCFuncSets = _XcmsSCCFuncSets;
+ XcmsColorSpace **papNewCSs;
+ XcmsColorSpace *pNewCS, **paptmpCS;
+ XcmsColorFormat lastID = 0;
+
+
+ if (papSCCFuncSets != NULL) {
+ if ((papNewCSs = pNewFS->DDColorSpaces) == NULL) {
+ /*
+ * Error, new Screen Color Characterization Function Set
+ * missing color spaces
+ */
+ return(XcmsFailure);
+ }
+ while ((pNewCS = *papNewCSs++) != NULL) {
+ if ((pNewCS->id = _XcmsRegFormatOfPrefix(pNewCS->prefix)) != 0) {
+ if (XCMS_DI_ID(pNewCS->id)) {
+ /* This is a Device-Independent Color Space */
+ return(XcmsFailure);
+ }
+ /*
+ * REGISTERED DD Color Space
+ * therefore use the registered ID.
+ */
+ } else {
+ /*
+ * UNREGISTERED DD Color Space
+ * then see if the color space is already in
+ * _XcmsDDColorSpaces.
+ * a. If same prefix, then use the same ID.
+ * b. Otherwise, use a new ID.
+ */
+ for (paptmpCS = _XcmsDDColorSpaces; *paptmpCS != NULL;
+ paptmpCS++){
+ lastID = MIN(lastID, (*paptmpCS)->id);
+ if (strcmp(pNewCS->prefix, (*paptmpCS)->prefix) == 0) {
+ pNewCS->id = (*paptmpCS)->id;
+ break;
+ }
+ }
+ if (pNewCS->id == 0) {
+ /* still haven't found one */
+ pNewCS->id = NextUnregDdCsID(lastID);
+ if ((paptmpCS = (XcmsColorSpace **)_XcmsPushPointerArray(
+ (XPointer *) _XcmsDDColorSpaces,
+ (XPointer) pNewCS,
+ (XPointer *) _XcmsDDColorSpacesInit)) == NULL) {
+ return(XcmsFailure);
+ }
+ _XcmsDDColorSpaces = paptmpCS;
+ }
+ }
+ }
+ }
+ if ((papSCCFuncSets = (XcmsFunctionSet **)
+ _XcmsPushPointerArray((XPointer *) _XcmsSCCFuncSets,
+ (XPointer) pNewFS,
+ (XPointer *)_XcmsSCCFuncSetsInit)) == NULL) {
+ return(XcmsFailure);
+ }
+ _XcmsSCCFuncSets = papSCCFuncSets;
+
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/CCC.c b/libX11/src/xcms/CCC.c
index 090b1078c..d0b055b7a 100644
--- a/libX11/src/xcms/CCC.c
+++ b/libX11/src/xcms/CCC.c
@@ -1,286 +1,286 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsCCC.c - Color Conversion Context Routines
- *
- * DESCRIPTION
- * Routines to create, access, and free Color Conversion
- * Context structures.
- *
- *
- */
-
-/*
-
-Copyright 1994, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCreateCCC
- *
- * SYNOPSIS
- */
-
-XcmsCCC
-XcmsCreateCCC(
- Display *dpy,
- int screenNumber,
- Visual *visual,
- XcmsColor *clientWhitePt,
- XcmsCompressionProc gamutCompProc,
- XPointer gamutCompClientData,
- XcmsWhiteAdjustProc whitePtAdjProc,
- XPointer whitePtAdjClientData)
-/*
- * DESCRIPTION
- * Given a Display, Screen, Visual, etc., this routine creates
- * an appropriate Color Conversion Context.
- *
- * RETURNS
- * Returns NULL if failed; otherwise address of the newly
- * created XcmsCCC.
- *
- */
-{
- XcmsCCC pDefaultCCC = XcmsDefaultCCC(dpy, screenNumber);
- XcmsCCC newccc;
- XcmsIntensityMap *pIMap;
- XcmsPerScrnInfo *pNewScrnInfo;
-
- if (pDefaultCCC == NULL ||
- !(newccc = (XcmsCCC) Xcalloc(1, (unsigned) sizeof(XcmsCCCRec)))) {
- return(NULL);
- }
-
- /*
- * Should inherit the following as result of a memmove():
- * dpy
- * screenNumber
- * pPerScrnInfo
- */
- memcpy((char *)newccc, (char *)pDefaultCCC, sizeof(XcmsCCCRec));
- if (clientWhitePt) {
- memcpy((char *)&newccc->clientWhitePt, (char *)clientWhitePt,
- sizeof(XcmsColor));
- }
- if (gamutCompProc) {
- newccc->gamutCompProc = gamutCompProc;
- }
- if (gamutCompClientData) {
- newccc->gamutCompClientData = gamutCompClientData;
- }
- if (whitePtAdjProc) {
- newccc->whitePtAdjProc = whitePtAdjProc;
- }
- if (whitePtAdjClientData) {
- newccc->whitePtAdjClientData = whitePtAdjClientData;
- }
-
- /*
- * Now check our list of per-Visual Intensity tables.
- * If one exists replace the pPerScrnInfo.
- */
- if ((pIMap = _XcmsGetIntensityMap(dpy, visual)) != NULL) {
- if (!(pNewScrnInfo = (XcmsPerScrnInfo *)
- Xcalloc(1, (unsigned) sizeof(XcmsPerScrnInfo)))) {
- Xfree(newccc);
- return(NULL);
- }
- memcpy((char *)pNewScrnInfo, (char *)newccc->pPerScrnInfo,
- sizeof(XcmsPerScrnInfo));
- pNewScrnInfo->screenData = pIMap->screenData;
- newccc->pPerScrnInfo = pNewScrnInfo;
- }
-
- /*
- * Set visual component
- */
- newccc->visual = visual;
-
- return(newccc);
-}
-
-
-/*
- * NAME
- * XcmsDefaultCCC
- *
- * SYNOPSIS
- */
-XcmsCCC
-XcmsDefaultCCC(
- Display *dpy,
- int screenNumber)
-/*
- * DESCRIPTION
- * Given a Display and Screen, this routine creates
- * returns the Screen's default Color Conversion Context.
- * Note that a Screen's default CCC is built with the
- * screen default visual.
- *
- * RETURNS
- * Returns NULL if failed; otherwise address of the
- * XcmsCCC for the Screen's default CCC.
- *
- */
-{
- XcmsCCC ccc;
-
-
- if ((screenNumber < 0) || (screenNumber >= ScreenCount(dpy))) {
- return((XcmsCCC)NULL);
- }
-
- /*
- * Check if the XcmsCCC's for each screen has been created
- */
- if ((XcmsCCC)dpy->cms.defaultCCCs == NULL) {
- if (!_XcmsInitDefaultCCCs(dpy)) {
- return((XcmsCCC)NULL);
- }
- }
-
- ccc = (XcmsCCC)dpy->cms.defaultCCCs + screenNumber;
-
- if (!ccc->pPerScrnInfo) {
- /*
- * Need to create the XcmsPerScrnInfo structure. The
- * _XcmsInitScrnInfo routine will create the XcmsPerScrnInfo
- * structure as well as initialize its functionSet and pScreenData
- * components.
- */
- if (!_XcmsInitScrnInfo(dpy, screenNumber)) {
- return((XcmsCCC)NULL);
- }
- return(ccc);
- } else {
- /*
- * If ccc->pPerScrnInfo->state == XcmsInitSuccess,
- * then the pPerScrnInfo component has already been initialized
- * therefore, just return ccc.
- * If ccc->pPerScrnInfo->state == XcmsInitFailure,
- * then this means that we already attempted to initialize
- * the pPerScrnInfo component but failed therefore stuffing
- * the pPerScrnInfo component with defaults. Just return ccc.
- * If ccc->pPerScrnInfo->state == XcmsInitNone,
- * then attempt to initialize the pPerScrnInfo component.
- */
- switch (ccc->pPerScrnInfo->state) {
- case XcmsInitFailure :
- /* fall through */
- case XcmsInitSuccess :
- return(ccc);
- case XcmsInitNone :
- /* XcmsPerScreenInfo has not been initialized */
- if (!_XcmsInitScrnInfo(dpy, screenNumber)) {
- return((XcmsCCC)NULL);
- }
- return(ccc);
- default :
- return((XcmsCCC)NULL);
- }
- }
-}
-
-
-/*
- * NAME
- * XcmsFreeCCC
- *
- * SYNOPSIS
- */
-void
-XcmsFreeCCC(XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Frees memory associated with a Color Conversion Context
- * that was created with XcmsCreateCCC().
- *
- * RETURNS
- * void
- *
- */
-{
- if (ccc->dpy->cms.defaultCCCs &&
- ccc == ((XcmsCCC)ccc->dpy->cms.defaultCCCs) + ccc->screenNumber) {
- /* do not allow clients to free DefaultCCC's */
- return;
- }
-
- /*
- * Note that XcmsPerScrnInfo sub-structures are freed here only if
- * they are for visuals that have per-Visual intensity tables.
- * Otherwise the XcmsPerScrnInfo structure is being shared!
- * For the latter, there is only one allocated per Screen and it just
- * so happens * that we place its initial reference is placed in the
- * default CCC. The routine _XcmsFreeDefaultCCCs frees them.
- */
- if (_XcmsGetIntensityMap(ccc->dpy, ccc->visual) != NULL) {
- Xfree(ccc->pPerScrnInfo);
- }
-
- Xfree(ccc);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsCCC.c - Color Conversion Context Routines
+ *
+ * DESCRIPTION
+ * Routines to create, access, and free Color Conversion
+ * Context structures.
+ *
+ *
+ */
+
+/*
+
+Copyright 1994, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCreateCCC
+ *
+ * SYNOPSIS
+ */
+
+XcmsCCC
+XcmsCreateCCC(
+ Display *dpy,
+ int screenNumber,
+ Visual *visual,
+ XcmsColor *clientWhitePt,
+ XcmsCompressionProc gamutCompProc,
+ XPointer gamutCompClientData,
+ XcmsWhiteAdjustProc whitePtAdjProc,
+ XPointer whitePtAdjClientData)
+/*
+ * DESCRIPTION
+ * Given a Display, Screen, Visual, etc., this routine creates
+ * an appropriate Color Conversion Context.
+ *
+ * RETURNS
+ * Returns NULL if failed; otherwise address of the newly
+ * created XcmsCCC.
+ *
+ */
+{
+ XcmsCCC pDefaultCCC = XcmsDefaultCCC(dpy, screenNumber);
+ XcmsCCC newccc;
+ XcmsIntensityMap *pIMap;
+ XcmsPerScrnInfo *pNewScrnInfo;
+
+ if (pDefaultCCC == NULL ||
+ !(newccc = (XcmsCCC) Xcalloc(1, (unsigned) sizeof(XcmsCCCRec)))) {
+ return(NULL);
+ }
+
+ /*
+ * Should inherit the following as result of a memmove():
+ * dpy
+ * screenNumber
+ * pPerScrnInfo
+ */
+ memcpy((char *)newccc, (char *)pDefaultCCC, sizeof(XcmsCCCRec));
+ if (clientWhitePt) {
+ memcpy((char *)&newccc->clientWhitePt, (char *)clientWhitePt,
+ sizeof(XcmsColor));
+ }
+ if (gamutCompProc) {
+ newccc->gamutCompProc = gamutCompProc;
+ }
+ if (gamutCompClientData) {
+ newccc->gamutCompClientData = gamutCompClientData;
+ }
+ if (whitePtAdjProc) {
+ newccc->whitePtAdjProc = whitePtAdjProc;
+ }
+ if (whitePtAdjClientData) {
+ newccc->whitePtAdjClientData = whitePtAdjClientData;
+ }
+
+ /*
+ * Now check our list of per-Visual Intensity tables.
+ * If one exists replace the pPerScrnInfo.
+ */
+ if ((pIMap = _XcmsGetIntensityMap(dpy, visual)) != NULL) {
+ if (!(pNewScrnInfo = (XcmsPerScrnInfo *)
+ Xcalloc(1, (unsigned) sizeof(XcmsPerScrnInfo)))) {
+ Xfree(newccc);
+ return(NULL);
+ }
+ memcpy((char *)pNewScrnInfo, (char *)newccc->pPerScrnInfo,
+ sizeof(XcmsPerScrnInfo));
+ pNewScrnInfo->screenData = pIMap->screenData;
+ newccc->pPerScrnInfo = pNewScrnInfo;
+ }
+
+ /*
+ * Set visual component
+ */
+ newccc->visual = visual;
+
+ return(newccc);
+}
+
+
+/*
+ * NAME
+ * XcmsDefaultCCC
+ *
+ * SYNOPSIS
+ */
+XcmsCCC
+XcmsDefaultCCC(
+ Display *dpy,
+ int screenNumber)
+/*
+ * DESCRIPTION
+ * Given a Display and Screen, this routine creates
+ * returns the Screen's default Color Conversion Context.
+ * Note that a Screen's default CCC is built with the
+ * screen default visual.
+ *
+ * RETURNS
+ * Returns NULL if failed; otherwise address of the
+ * XcmsCCC for the Screen's default CCC.
+ *
+ */
+{
+ XcmsCCC ccc;
+
+
+ if ((screenNumber < 0) || (screenNumber >= ScreenCount(dpy))) {
+ return((XcmsCCC)NULL);
+ }
+
+ /*
+ * Check if the XcmsCCC's for each screen has been created
+ */
+ if ((XcmsCCC)dpy->cms.defaultCCCs == NULL) {
+ if (!_XcmsInitDefaultCCCs(dpy)) {
+ return((XcmsCCC)NULL);
+ }
+ }
+
+ ccc = (XcmsCCC)dpy->cms.defaultCCCs + screenNumber;
+
+ if (!ccc->pPerScrnInfo) {
+ /*
+ * Need to create the XcmsPerScrnInfo structure. The
+ * _XcmsInitScrnInfo routine will create the XcmsPerScrnInfo
+ * structure as well as initialize its functionSet and pScreenData
+ * components.
+ */
+ if (!_XcmsInitScrnInfo(dpy, screenNumber)) {
+ return((XcmsCCC)NULL);
+ }
+ return(ccc);
+ } else {
+ /*
+ * If ccc->pPerScrnInfo->state == XcmsInitSuccess,
+ * then the pPerScrnInfo component has already been initialized
+ * therefore, just return ccc.
+ * If ccc->pPerScrnInfo->state == XcmsInitFailure,
+ * then this means that we already attempted to initialize
+ * the pPerScrnInfo component but failed therefore stuffing
+ * the pPerScrnInfo component with defaults. Just return ccc.
+ * If ccc->pPerScrnInfo->state == XcmsInitNone,
+ * then attempt to initialize the pPerScrnInfo component.
+ */
+ switch (ccc->pPerScrnInfo->state) {
+ case XcmsInitFailure :
+ /* fall through */
+ case XcmsInitSuccess :
+ return(ccc);
+ case XcmsInitNone :
+ /* XcmsPerScreenInfo has not been initialized */
+ if (!_XcmsInitScrnInfo(dpy, screenNumber)) {
+ return((XcmsCCC)NULL);
+ }
+ return(ccc);
+ default :
+ return((XcmsCCC)NULL);
+ }
+ }
+}
+
+
+/*
+ * NAME
+ * XcmsFreeCCC
+ *
+ * SYNOPSIS
+ */
+void
+XcmsFreeCCC(XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Frees memory associated with a Color Conversion Context
+ * that was created with XcmsCreateCCC().
+ *
+ * RETURNS
+ * void
+ *
+ */
+{
+ if (ccc->dpy->cms.defaultCCCs &&
+ ccc == ((XcmsCCC)ccc->dpy->cms.defaultCCCs) + ccc->screenNumber) {
+ /* do not allow clients to free DefaultCCC's */
+ return;
+ }
+
+ /*
+ * Note that XcmsPerScrnInfo sub-structures are freed here only if
+ * they are for visuals that have per-Visual intensity tables.
+ * Otherwise the XcmsPerScrnInfo structure is being shared!
+ * For the latter, there is only one allocated per Screen and it just
+ * so happens * that we place its initial reference is placed in the
+ * default CCC. The routine _XcmsFreeDefaultCCCs frees them.
+ */
+ if (_XcmsGetIntensityMap(ccc->dpy, ccc->visual) != NULL) {
+ Xfree(ccc->pPerScrnInfo);
+ }
+
+ Xfree(ccc);
+}
diff --git a/libX11/src/xcms/Cv.h b/libX11/src/xcms/Cv.h
index 0b662811f..c2a93a4aa 100644
--- a/libX11/src/xcms/Cv.h
+++ b/libX11/src/xcms/Cv.h
@@ -1,189 +1,189 @@
-
-#ifndef _CV_H_
-#define _CV_H_
-
-/* variables */
-extern const char _XcmsCIEXYZ_prefix[];
-extern const char _XcmsCIEuvY_prefix[];
-extern const char _XcmsCIExyY_prefix[];
-extern const char _XcmsCIELab_prefix[];
-extern const char _XcmsCIELuv_prefix[];
-extern const char _XcmsTekHVC_prefix[];
-extern const char _XcmsRGBi_prefix[];
-extern const char _XcmsRGB_prefix[];
-
-extern XcmsColorSpace XcmsUNDEFINEDColorSpace;
-extern XcmsColorSpace XcmsTekHVCColorSpace;
-extern XcmsColorSpace XcmsCIEXYZColorSpace;
-extern XcmsColorSpace XcmsCIEuvYColorSpace;
-extern XcmsColorSpace XcmsCIExyYColorSpace;
-extern XcmsColorSpace XcmsCIELabColorSpace;
-extern XcmsColorSpace XcmsCIELuvColorSpace;
-extern XcmsColorSpace XcmsRGBColorSpace;
-extern XcmsColorSpace XcmsRGBiColorSpace;
-
-extern XcmsColorSpace *_XcmsDIColorSpacesInit[];
-extern XcmsColorSpace **_XcmsDIColorSpaces;
-
-extern XcmsColorSpace *_XcmsDDColorSpacesInit[];
-extern XcmsColorSpace **_XcmsDDColorSpaces;
-
-extern XcmsFunctionSet XcmsLinearRGBFunctionSet;
-
-extern XcmsFunctionSet *_XcmsSCCFuncSetsInit[];
-extern XcmsFunctionSet **_XcmsSCCFuncSets;
-
-extern XcmsRegColorSpaceEntry _XcmsRegColorSpaces[];
-
-/* functions */
-extern XPointer *
-_XcmsCopyPointerArray(
- XPointer *pap);
-extern void
-_XcmsFreePointerArray(
- XPointer *pap);
-extern XPointer *
-_XcmsPushPointerArray(
- XPointer *pap,
- XPointer p,
- XPointer *papNoFree);
-extern Status
-_XcmsCIEXYZ_ValidSpec(
- XcmsColor *pColor);
-extern Status
-_XcmsCIEuvY_ValidSpec(
- XcmsColor *pColor);
-extern int
-_XcmsTekHVC_CheckModify(
- XcmsColor *pColor);
-
-extern Status
-_XcmsTekHVCQueryMaxVCRGB(
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return);
-extern Status
-_XcmsCIELabQueryMaxLCRGB(
- XcmsCCC ccc,
- XcmsFloat hue, /* hue in radians */
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return);
-extern Status
-_XcmsConvertColorsWithWhitePt(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- XcmsColor *pWhitePt,
- unsigned int nColors,
- XcmsColorFormat newFormat,
- Bool *pCompressed);
-
-extern Status
-_XcmsDIConvertColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- XcmsColor *pWhitePt,
- unsigned int nColors,
- XcmsColorFormat newFormat);
-extern Status
-_XcmsDDConvertColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- XcmsColorFormat newFormat,
- Bool *pCompressed);
-extern XcmsColorFormat
-_XcmsRegFormatOfPrefix(
- _Xconst char *prefix);
-extern void
-_XColor_to_XcmsRGB(
- XcmsCCC ccc,
- XColor *pXColors,
- XcmsColor *pColors,
- unsigned int nColors);
-extern Status
-_XcmsSetGetColor(
- Status (*xColorProc)(
- Display* /* display */,
- Colormap /* colormap */,
- XColor* /* screen_in_out */),
- Display *dpy,
- Colormap cmap,
- XcmsColor *pColors_in_out,
- XcmsColorFormat result_format,
- Bool *pCompressed);
-extern Status
-_XcmsSetGetColors(
- Status (*xColorProc)(
- Display* /* display */,
- Colormap /* colormap */,
- XColor* /* screen_in_out */,
- int /* nColors */),
- Display *dpy,
- Colormap cmap,
- XcmsColor *pColors_in_out,
- int nColors,
- XcmsColorFormat result_format,
- Bool *pCompressed);
-extern Status
-_XcmsCIELuvQueryMaxLCRGB(
- XcmsCCC ccc,
- XcmsFloat hue, /* hue in radians */
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return);
-
-extern XcmsIntensityMap *
-_XcmsGetIntensityMap(
- Display *dpy,
- Visual *visual);
-extern int
-_XcmsInitDefaultCCCs(
- Display *dpy);
-extern int
-_XcmsInitScrnInfo(
- register Display *dpy,
- int screenNumber);
-extern XcmsCmapRec *
-_XcmsCopyCmapRecAndFree(
- Display *dpy,
- Colormap src_cmap,
- Colormap copy_cmap);
-extern void
-_XcmsCopyISOLatin1Lowered(
- char *dst,
- const char *src);
-extern int
-_XcmsEqualWhitePts(
- XcmsCCC ccc, XcmsColor *pWhitePt1, XcmsColor *pWhitePt2);
-extern int
-_XcmsLRGB_InitScrnDefault(
- Display *dpy,
- int screenNumber,
- XcmsPerScrnInfo *pPerScrnInfo);
-extern void
-_XcmsFreeIntensityMaps(
- Display *dpy);
-extern int
-_XcmsGetProperty(
- Display *pDpy,
- Window w,
- Atom property,
- int *pFormat,
- unsigned long *pNItems,
- unsigned long *pNBytes,
- char **pValue);
-extern unsigned long
-_XcmsGetElement(
- int format,
- char **pValue,
- unsigned long *pCount);
-extern void
-_XcmsUnresolveColor(
- XcmsCCC ccc,
- XcmsColor *pColor);
-extern void
-_XcmsResolveColor(
- XcmsCCC ccc,
- XcmsColor *pXcmsColor);
-
-#endif /* _CV_H_ */
+
+#ifndef _CV_H_
+#define _CV_H_
+
+/* variables */
+extern const char _XcmsCIEXYZ_prefix[];
+extern const char _XcmsCIEuvY_prefix[];
+extern const char _XcmsCIExyY_prefix[];
+extern const char _XcmsCIELab_prefix[];
+extern const char _XcmsCIELuv_prefix[];
+extern const char _XcmsTekHVC_prefix[];
+extern const char _XcmsRGBi_prefix[];
+extern const char _XcmsRGB_prefix[];
+
+extern XcmsColorSpace XcmsUNDEFINEDColorSpace;
+extern XcmsColorSpace XcmsTekHVCColorSpace;
+extern XcmsColorSpace XcmsCIEXYZColorSpace;
+extern XcmsColorSpace XcmsCIEuvYColorSpace;
+extern XcmsColorSpace XcmsCIExyYColorSpace;
+extern XcmsColorSpace XcmsCIELabColorSpace;
+extern XcmsColorSpace XcmsCIELuvColorSpace;
+extern XcmsColorSpace XcmsRGBColorSpace;
+extern XcmsColorSpace XcmsRGBiColorSpace;
+
+extern XcmsColorSpace *_XcmsDIColorSpacesInit[];
+extern XcmsColorSpace **_XcmsDIColorSpaces;
+
+extern XcmsColorSpace *_XcmsDDColorSpacesInit[];
+extern XcmsColorSpace **_XcmsDDColorSpaces;
+
+extern XcmsFunctionSet XcmsLinearRGBFunctionSet;
+
+extern XcmsFunctionSet *_XcmsSCCFuncSetsInit[];
+extern XcmsFunctionSet **_XcmsSCCFuncSets;
+
+extern XcmsRegColorSpaceEntry _XcmsRegColorSpaces[];
+
+/* functions */
+extern XPointer *
+_XcmsCopyPointerArray(
+ XPointer *pap);
+extern void
+_XcmsFreePointerArray(
+ XPointer *pap);
+extern XPointer *
+_XcmsPushPointerArray(
+ XPointer *pap,
+ XPointer p,
+ XPointer *papNoFree);
+extern Status
+_XcmsCIEXYZ_ValidSpec(
+ XcmsColor *pColor);
+extern Status
+_XcmsCIEuvY_ValidSpec(
+ XcmsColor *pColor);
+extern int
+_XcmsTekHVC_CheckModify(
+ XcmsColor *pColor);
+
+extern Status
+_XcmsTekHVCQueryMaxVCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return);
+extern Status
+_XcmsCIELabQueryMaxLCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue, /* hue in radians */
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return);
+extern Status
+_XcmsConvertColorsWithWhitePt(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ XcmsColor *pWhitePt,
+ unsigned int nColors,
+ XcmsColorFormat newFormat,
+ Bool *pCompressed);
+
+extern Status
+_XcmsDIConvertColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ XcmsColor *pWhitePt,
+ unsigned int nColors,
+ XcmsColorFormat newFormat);
+extern Status
+_XcmsDDConvertColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ XcmsColorFormat newFormat,
+ Bool *pCompressed);
+extern XcmsColorFormat
+_XcmsRegFormatOfPrefix(
+ _Xconst char *prefix);
+extern void
+_XColor_to_XcmsRGB(
+ XcmsCCC ccc,
+ XColor *pXColors,
+ XcmsColor *pColors,
+ unsigned int nColors);
+extern Status
+_XcmsSetGetColor(
+ Status (*xColorProc)(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* screen_in_out */),
+ Display *dpy,
+ Colormap cmap,
+ XcmsColor *pColors_in_out,
+ XcmsColorFormat result_format,
+ Bool *pCompressed);
+extern Status
+_XcmsSetGetColors(
+ Status (*xColorProc)(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* screen_in_out */,
+ int /* nColors */),
+ Display *dpy,
+ Colormap cmap,
+ XcmsColor *pColors_in_out,
+ int nColors,
+ XcmsColorFormat result_format,
+ Bool *pCompressed);
+extern Status
+_XcmsCIELuvQueryMaxLCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue, /* hue in radians */
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return);
+
+extern XcmsIntensityMap *
+_XcmsGetIntensityMap(
+ Display *dpy,
+ Visual *visual);
+extern int
+_XcmsInitDefaultCCCs(
+ Display *dpy);
+extern int
+_XcmsInitScrnInfo(
+ register Display *dpy,
+ int screenNumber);
+extern XcmsCmapRec *
+_XcmsCopyCmapRecAndFree(
+ Display *dpy,
+ Colormap src_cmap,
+ Colormap copy_cmap);
+extern void
+_XcmsCopyISOLatin1Lowered(
+ char *dst,
+ const char *src);
+extern int
+_XcmsEqualWhitePts(
+ XcmsCCC ccc, XcmsColor *pWhitePt1, XcmsColor *pWhitePt2);
+extern int
+_XcmsLRGB_InitScrnDefault(
+ Display *dpy,
+ int screenNumber,
+ XcmsPerScrnInfo *pPerScrnInfo);
+extern void
+_XcmsFreeIntensityMaps(
+ Display *dpy);
+extern int
+_XcmsGetProperty(
+ Display *pDpy,
+ Window w,
+ Atom property,
+ int *pFormat,
+ unsigned long *pNItems,
+ unsigned long *pNBytes,
+ char **pValue);
+extern unsigned long
+_XcmsGetElement(
+ int format,
+ char **pValue,
+ unsigned long *pCount);
+extern void
+_XcmsUnresolveColor(
+ XcmsCCC ccc,
+ XcmsColor *pColor);
+extern void
+_XcmsResolveColor(
+ XcmsCCC ccc,
+ XcmsColor *pXcmsColor);
+
+#endif /* _CV_H_ */
diff --git a/libX11/src/xcms/CvColW.c b/libX11/src/xcms/CvColW.c
index 4aabded0d..2476d1c97 100644
--- a/libX11/src/xcms/CvColW.c
+++ b/libX11/src/xcms/CvColW.c
@@ -1,141 +1,141 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * XcmsCvColW.c
- *
- * DESCRIPTION
- * <overall description of what the package does>
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-
-/*
- * NAME
- * _XcmsConvertColorsWithWhitePt - Convert XcmsColor structures
- *
- * SYNOPSIS
- */
-Status
-_XcmsConvertColorsWithWhitePt(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- XcmsColor *pWhitePt,
- unsigned int nColors,
- XcmsColorFormat newFormat,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Convert XcmsColor structures between device-independent
- * and/or device-dependent formats but allowing the calling
- * routine to specify the white point to be associated
- * with the color specifications (overriding
- * ccc->clientWhitePt).
- *
- * This routine has been provided for use in white point
- * adjustment routines.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded without gamut compression,
- * XcmsSuccessWithCompression if succeeded with gamut
- * compression.
- *
- */
-{
- if (ccc == NULL || pColors_in_out == NULL ||
- pColors_in_out->format == XcmsUndefinedFormat) {
- return(XcmsFailure);
- }
-
- if (nColors == 0 || pColors_in_out->format == newFormat) {
- /* do nothing */
- return(XcmsSuccess);
- }
-
- if (XCMS_DI_ID(pColors_in_out->format) && XCMS_DI_ID(newFormat)) {
- /*
- * Device-Independent to Device-Independent Conversion
- */
- return(_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
- newFormat));
- }
- if (XCMS_DD_ID(pColors_in_out->format) && XCMS_DD_ID(newFormat)) {
- /*
- * Device-Dependent to Device-Dependent Conversion
- */
- return(_XcmsDDConvertColors(ccc, pColors_in_out, nColors, newFormat,
- pCompressed));
- }
-
- /*
- * Otherwise we have:
- * 1. Device-Independent to Device-Dependent Conversion
- * OR
- * 2. Device-Dependent to Device-Independent Conversion
- */
-
- if (XCMS_DI_ID(pColors_in_out->format)) {
- /*
- * 1. Device-Independent to Device-Dependent Conversion
- */
- /* First convert to CIEXYZ */
- if (_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
- XcmsCIEXYZFormat) == XcmsFailure) {
- return(XcmsFailure);
- }
- /* Then convert to DD Format */
- return(_XcmsDDConvertColors(ccc, pColors_in_out, nColors, newFormat,
- pCompressed));
- } else {
- /*
- * 2. Device-Dependent to Device-Independent Conversion
- */
- /* First convert to CIEXYZ */
- if (_XcmsDDConvertColors(ccc, pColors_in_out, nColors,
- XcmsCIEXYZFormat, pCompressed) == XcmsFailure) {
- return(XcmsFailure);
- }
- /* Then convert to DI Format */
- return(_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
- newFormat));
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * XcmsCvColW.c
+ *
+ * DESCRIPTION
+ * <overall description of what the package does>
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+
+/*
+ * NAME
+ * _XcmsConvertColorsWithWhitePt - Convert XcmsColor structures
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsConvertColorsWithWhitePt(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ XcmsColor *pWhitePt,
+ unsigned int nColors,
+ XcmsColorFormat newFormat,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Convert XcmsColor structures between device-independent
+ * and/or device-dependent formats but allowing the calling
+ * routine to specify the white point to be associated
+ * with the color specifications (overriding
+ * ccc->clientWhitePt).
+ *
+ * This routine has been provided for use in white point
+ * adjustment routines.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded without gamut compression,
+ * XcmsSuccessWithCompression if succeeded with gamut
+ * compression.
+ *
+ */
+{
+ if (ccc == NULL || pColors_in_out == NULL ||
+ pColors_in_out->format == XcmsUndefinedFormat) {
+ return(XcmsFailure);
+ }
+
+ if (nColors == 0 || pColors_in_out->format == newFormat) {
+ /* do nothing */
+ return(XcmsSuccess);
+ }
+
+ if (XCMS_DI_ID(pColors_in_out->format) && XCMS_DI_ID(newFormat)) {
+ /*
+ * Device-Independent to Device-Independent Conversion
+ */
+ return(_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
+ newFormat));
+ }
+ if (XCMS_DD_ID(pColors_in_out->format) && XCMS_DD_ID(newFormat)) {
+ /*
+ * Device-Dependent to Device-Dependent Conversion
+ */
+ return(_XcmsDDConvertColors(ccc, pColors_in_out, nColors, newFormat,
+ pCompressed));
+ }
+
+ /*
+ * Otherwise we have:
+ * 1. Device-Independent to Device-Dependent Conversion
+ * OR
+ * 2. Device-Dependent to Device-Independent Conversion
+ */
+
+ if (XCMS_DI_ID(pColors_in_out->format)) {
+ /*
+ * 1. Device-Independent to Device-Dependent Conversion
+ */
+ /* First convert to CIEXYZ */
+ if (_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
+ XcmsCIEXYZFormat) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ /* Then convert to DD Format */
+ return(_XcmsDDConvertColors(ccc, pColors_in_out, nColors, newFormat,
+ pCompressed));
+ } else {
+ /*
+ * 2. Device-Dependent to Device-Independent Conversion
+ */
+ /* First convert to CIEXYZ */
+ if (_XcmsDDConvertColors(ccc, pColors_in_out, nColors,
+ XcmsCIEXYZFormat, pCompressed) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ /* Then convert to DI Format */
+ return(_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
+ newFormat));
+ }
+}
diff --git a/libX11/src/xcms/CvCols.c b/libX11/src/xcms/CvCols.c
index ed3582663..f86595595 100644
--- a/libX11/src/xcms/CvCols.c
+++ b/libX11/src/xcms/CvCols.c
@@ -1,1030 +1,1030 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsCvCols.c
- *
- * DESCRIPTION
- * Xcms API routine that converts between the
- * device-independent color spaces.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * LOCAL DEFINES
- */
-#define DD_FORMAT 0x01
-#define DI_FORMAT 0x02
-#define MIX_FORMAT 0x04
-#ifndef MAX
-# define MAX(x,y) ((x) > (y) ? (x) : (y))
-#endif
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * EqualCIEXYZ
- *
- * SYNOPSIS
- */
-static int
-EqualCIEXYZ(
- XcmsColor *p1, XcmsColor *p2)
-/*
- * DESCRIPTION
- * Compares two XcmsColor structures that are in XcmsCIEXYZFormat
- *
- * RETURNS
- * Returns 1 if equal; 0 otherwise.
- *
- */
-{
- if (p1->format != XcmsCIEXYZFormat || p2->format != XcmsCIEXYZFormat) {
- return(0);
- }
- if ((p1->spec.CIEXYZ.X != p2->spec.CIEXYZ.X)
- || (p1->spec.CIEXYZ.Y != p2->spec.CIEXYZ.Y)
- || (p1->spec.CIEXYZ.Z != p2->spec.CIEXYZ.Z)) {
- return(0);
- }
- return(1);
-}
-
-
-/*
- * NAME
- * XcmsColorSpace
- *
- * SYNOPSIS
- */
-static XcmsColorSpace *
-ColorSpaceOfID(
- XcmsCCC ccc,
- XcmsColorFormat id)
-/*
- * DESCRIPTION
- * Returns a pointer to the color space structure
- * (XcmsColorSpace) associated with the specified color space
- * ID.
- *
- * RETURNS
- * Pointer to matching XcmsColorSpace structure if found;
- * otherwise NULL.
- */
-{
- XcmsColorSpace **papColorSpaces;
-
- if (ccc == NULL) {
- return(NULL);
- }
-
- /*
- * First try Device-Independent color spaces
- */
- papColorSpaces = _XcmsDIColorSpaces;
- if (papColorSpaces != NULL) {
- while (*papColorSpaces != NULL) {
- if ((*papColorSpaces)->id == id) {
- return(*papColorSpaces);
- }
- papColorSpaces++;
- }
- }
-
- /*
- * Next try Device-Dependent color spaces
- */
- papColorSpaces = ((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->DDColorSpaces;
- if (papColorSpaces != NULL) {
- while (*papColorSpaces != NULL) {
- if ((*papColorSpaces)->id == id) {
- return(*papColorSpaces);
- }
- papColorSpaces++;
- }
- }
-
- return(NULL);
-}
-
-
-/*
- * NAME
- * ValidDIColorSpaceID
- *
- * SYNOPSIS
- */
-static int
-ValidDIColorSpaceID(
- XcmsColorFormat id)
-/*
- * DESCRIPTION
- * Determines if the specified color space ID is a valid
- * Device-Independent color space in the specified Color
- * Conversion Context.
- *
- * RETURNS
- * Returns zero if not valid; otherwise non-zero.
- */
-{
- XcmsColorSpace **papRec;
- papRec = _XcmsDIColorSpaces;
- if (papRec != NULL) {
- while (*papRec != NULL) {
- if ((*papRec)->id == id) {
- return(1);
- }
- papRec++;
- }
- }
- return(0);
-}
-
-
-/*
- * NAME
- * ValidDDColorSpaceID
- *
- * SYNOPSIS
- */
-static int
-ValidDDColorSpaceID(
- XcmsCCC ccc,
- XcmsColorFormat id)
-/*
- * DESCRIPTION
- * Determines if the specified color space ID is a valid
- * Device-Dependent color space in the specified Color
- * Conversion Context.
- *
- * RETURNS
- * Returns zero if not valid; otherwise non-zero.
- */
-{
- XcmsColorSpace **papRec;
-
- if (ccc->pPerScrnInfo->state != XcmsInitNone) {
- papRec = ((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->DDColorSpaces;
- while (*papRec != NULL) {
- if ((*papRec)->id == id) {
- return(1);
- }
- papRec++;
- }
- }
- return(0);
-}
-
-
-/*
- * NAME
- * ConvertMixedColors - Convert XcmsColor structures
- *
- * SYNOPSIS
- */
-static Status
-ConvertMixedColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- XcmsColor *pWhitePt,
- unsigned int nColors,
- XcmsColorFormat targetFormat,
- unsigned char format_flag)
-/*
- * DESCRIPTION
- * This routine will only convert the following types of
- * batches:
- * DI to DI
- * DD to DD
- * DD to CIEXYZ
- * In other words, it will not convert the following types of
- * batches:
- * DI to DD
- * DD to DI(not CIEXYZ)
- *
- * format_flag:
- * 0x01 : convert Device-Dependent only specifications to the
- * target format.
- * 0x02 : convert Device-Independent only specifications to the
- * target format.
- * 0x03 : convert all specifications to the target format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if none of the color specifications were
- * compressed in the conversion process
- * XcmsSuccessWithCompression if at least one of the
- * color specifications were compressed in the
- * conversion process.
- *
- */
-{
- XcmsColor *pColor, *pColors_start;
- XcmsColorFormat format;
- Status retval_tmp;
- Status retval = XcmsSuccess;
- unsigned int iColors;
- unsigned int nBatch;
-
- /*
- * Convert array of mixed color specifications in batches of
- * contiguous formats to the target format
- */
- iColors = 0;
- while (iColors < nColors) {
- /*
- * Find contiguous array of color specifications with the
- * same format
- */
- pColor = pColors_start = pColors_in_out + iColors;
- format = pColors_start->format;
- nBatch = 0;
- while (iColors < nColors && pColor->format == format) {
- pColor++;
- nBatch++;
- iColors++;
- }
- if (format != targetFormat) {
- /*
- * Need to convert this batch from current format to target format.
- */
- if (XCMS_DI_ID(format) && (format_flag & DI_FORMAT) &&
- XCMS_DI_ID(targetFormat)) {
- /*
- * DI->DI
- *
- * Format of interest is Device-Independent,
- * This batch contains Device-Independent specifications, and
- * the Target format is Device-Independent.
- */
- retval_tmp = _XcmsDIConvertColors(ccc, pColors_start, pWhitePt,
- nBatch, targetFormat);
- } else if (XCMS_DD_ID(format) && (format_flag & DD_FORMAT) &&
- (targetFormat == XcmsCIEXYZFormat)) {
- /*
- * DD->CIEXYZ
- *
- * Format of interest is Device-Dependent,
- * This batch contains Device-Dependent specifications, and
- * the Target format is CIEXYZ.
- *
- * Since DD->CIEXYZ we can use NULL instead of pCompressed.
- */
- if ((ccc->whitePtAdjProc != NULL) && !_XcmsEqualWhitePts(ccc,
- pWhitePt, ScreenWhitePointOfCCC(ccc))) {
- /*
- * Need to call WhiteAdjustProc (Screen White Point to
- * White Point).
- */
- retval_tmp = (*ccc->whitePtAdjProc)(ccc,
- ScreenWhitePointOfCCC(ccc), pWhitePt,
- XcmsCIEXYZFormat, pColors_start, nBatch,
- (Bool *)NULL);
- } else {
- retval_tmp = _XcmsDDConvertColors(ccc, pColors_start,
- nBatch, XcmsCIEXYZFormat, (Bool *)NULL);
- }
- } else if (XCMS_DD_ID(format) && (format_flag & DD_FORMAT) &&
- XCMS_DD_ID(targetFormat)) {
- /*
- * DD->DD(not CIEXYZ)
- *
- * Format of interest is Device-Dependent,
- * This batch contains Device-Dependent specifications, and
- * the Target format is Device-Dependent and not CIEXYZ.
- */
- retval_tmp = _XcmsDDConvertColors(ccc, pColors_start, nBatch,
- targetFormat, (Bool *)NULL);
- } else {
- /*
- * This routine is called for the wrong reason.
- */
- return(XcmsFailure);
- }
- if (retval_tmp == XcmsFailure) {
- return(XcmsFailure);
- }
- retval = MAX(retval, retval_tmp);
- }
- }
- return(retval);
-}
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsEqualWhitePts
- *
- * SYNOPSIS
- */
-int
-_XcmsEqualWhitePts(XcmsCCC ccc, XcmsColor *pWhitePt1, XcmsColor *pWhitePt2)
-/*
- * DESCRIPTION
- *
- * RETURNS
- * Returns 0 if not equal; otherwise 1.
- *
- */
-{
- XcmsColor tmp1, tmp2;
-
- memcpy((char *)&tmp1, (char *)pWhitePt1, sizeof(XcmsColor));
- memcpy((char *)&tmp2, (char *)pWhitePt2, sizeof(XcmsColor));
-
- if (tmp1.format != XcmsCIEXYZFormat) {
- if (_XcmsDIConvertColors(ccc, &tmp1, (XcmsColor *) NULL, 1,
- XcmsCIEXYZFormat)==0) {
- return(0);
- }
- }
-
- if (tmp2.format != XcmsCIEXYZFormat) {
- if (_XcmsDIConvertColors(ccc, &tmp2, (XcmsColor *) NULL, 1,
- XcmsCIEXYZFormat)==0) {
- return(0);
- }
- }
-
- return (EqualCIEXYZ(&tmp1, &tmp2));
-}
-
-
-/*
- * NAME
- * _XcmsDIConvertColors - Convert XcmsColor structures
- *
- * SYNOPSIS
- */
-Status
-_XcmsDIConvertColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- XcmsColor *pWhitePt,
- unsigned int nColors,
- XcmsColorFormat newFormat)
-/*
- * DESCRIPTION
- * Convert XcmsColor structures to another Device-Independent
- * form.
- *
- * Here are some assumptions that this routine makes:
- * 1. The calling routine has already checked if
- * pColors_in_out->format == newFormat, therefore
- * there is no need to check again here.
- * 2. The calling routine has already checked nColors,
- * therefore this routine assumes nColors > 0.
- * 3. The calling routine may want to convert only between
- * CIExyY <-> CIEXYZ <-> CIEuvY
- * therefore, this routine allows pWhitePt to equal NULL.
- *
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsColorSpace *pFrom, *pTo;
- XcmsDIConversionProc *src_to_CIEXYZ, *src_from_CIEXYZ;
- XcmsDIConversionProc *dest_to_CIEXYZ, *dest_from_CIEXYZ;
- XcmsDIConversionProc *to_CIEXYZ_stop, *from_CIEXYZ_start;
- XcmsDIConversionProc *tmp;
-
- /*
- * Allow pWhitePt to equal NULL. This appropriate when converting
- * anywhere between:
- * CIExyY <-> CIEXYZ <-> CIEuvY
- */
-
- if (pColors_in_out == NULL ||
- !ValidDIColorSpaceID(pColors_in_out->format) ||
- !ValidDIColorSpaceID(newFormat)) {
- return(XcmsFailure);
- }
-
- /*
- * Get a handle on the function list for the current specification format
- */
- if ((pFrom = ColorSpaceOfID(ccc, pColors_in_out->format))
- == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Get a handle on the function list for the new specification format
- */
- if ((pTo = ColorSpaceOfID(ccc, newFormat)) == NULL) {
- return(XcmsFailure);
- }
-
- src_to_CIEXYZ = pFrom->to_CIEXYZ;
- src_from_CIEXYZ = pFrom->from_CIEXYZ;
- dest_to_CIEXYZ = pTo->to_CIEXYZ;
- dest_from_CIEXYZ = pTo->from_CIEXYZ;
-
- if (pTo->inverse_flag && pFrom->inverse_flag) {
- /*
- * Find common function pointers
- */
- for (to_CIEXYZ_stop = src_to_CIEXYZ; *to_CIEXYZ_stop; to_CIEXYZ_stop++){
- for (tmp = dest_to_CIEXYZ; *tmp; tmp++) {
- if (*to_CIEXYZ_stop == *tmp) {
- goto Continue;
- }
- }
- }
-
-Continue:
-
- /*
- * Execute the functions to CIEXYZ, stopping short as necessary
- */
- while (src_to_CIEXYZ != to_CIEXYZ_stop) {
- if ((*src_to_CIEXYZ++)(ccc, pWhitePt, pColors_in_out,
- nColors) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- /*
- * Determine where to start on the from_CIEXYZ path.
- */
- from_CIEXYZ_start = dest_from_CIEXYZ;
- tmp = src_from_CIEXYZ;
- while ((*from_CIEXYZ_start == *tmp) && (*from_CIEXYZ_start != NULL)) {
- from_CIEXYZ_start++;
- tmp++;
- }
-
- } else {
- /*
- * The function in at least one of the Color Spaces are not
- * complementary, i.e.,
- * for an i, 0 <= i < n elements
- * from_CIEXYZ[i] is not the inverse of to_CIEXYZ[i]
- *
- * Execute the functions all the way to CIEXYZ
- */
- while (*src_to_CIEXYZ) {
- if ((*src_to_CIEXYZ++)(ccc, pWhitePt, pColors_in_out,
- nColors) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- /*
- * Determine where to start on the from_CIEXYZ path.
- */
- from_CIEXYZ_start = dest_from_CIEXYZ;
- }
-
-
- /*
- * Execute the functions from CIEXYZ.
- */
- while (*from_CIEXYZ_start) {
- if ((*from_CIEXYZ_start++)(ccc, pWhitePt, pColors_in_out,
- nColors) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * _XcmsDDConvertColors - Convert XcmsColor structures
- *
- * SYNOPSIS
- */
-Status
-_XcmsDDConvertColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- XcmsColorFormat newFormat,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Convert XcmsColor structures:
- *
- * 1. From CIEXYZ to Device-Dependent formats (typically RGB and
- * RGBi),
- * or
- * 2. Between Device-Dependent formats (typically RGB and RGBi).
- *
- * Assumes that these specifications have already been white point
- * adjusted if necessary from Client White Point to Screen
- * White Point. Therefore, the white point now associated
- * with the specifications is the Screen White Point.
- *
- * pCompressed may be NULL. If so this indicates that the
- * calling routine is not interested in knowing exactly which
- * color was compressed, if any.
- *
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if none of the color specifications were
- * compressed in the conversion process
- * XcmsSuccessWithCompression if at least one of the
- * color specifications were compressed in the
- * conversion process.
- *
- */
-{
- XcmsColorSpace *pFrom, *pTo;
- XcmsDDConversionProc *src_to_CIEXYZ, *src_from_CIEXYZ;
- XcmsDDConversionProc *dest_to_CIEXYZ, *dest_from_CIEXYZ;
- XcmsDDConversionProc *from_CIEXYZ_start, *to_CIEXYZ_stop;
- XcmsDDConversionProc *tmp;
- int retval;
- int hasCompressed = 0;
-
- if (ccc == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- if (nColors == 0 || pColors_in_out->format == newFormat) {
- /* do nothing */
- return(XcmsSuccess);
- }
-
- if (((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet) == NULL) {
- return(XcmsFailure); /* hmm, an internal error? */
- }
-
- /*
- * Its ok if pColors_in_out->format == XcmsCIEXYZFormat
- * or
- * if newFormat == XcmsCIEXYZFormat
- */
- if ( !( ValidDDColorSpaceID(ccc, pColors_in_out->format)
- ||
- (pColors_in_out->format == XcmsCIEXYZFormat))
- ||
- !(ValidDDColorSpaceID(ccc, newFormat)
- ||
- newFormat == XcmsCIEXYZFormat)) {
- return(XcmsFailure);
- }
-
- if ((pFrom = ColorSpaceOfID(ccc, pColors_in_out->format)) == NULL){
- return(XcmsFailure);
- }
-
- if ((pTo = ColorSpaceOfID(ccc, newFormat)) == NULL) {
- return(XcmsFailure);
- }
-
- src_to_CIEXYZ = (XcmsDDConversionProc *)pFrom->to_CIEXYZ;
- src_from_CIEXYZ = (XcmsDDConversionProc *)pFrom->from_CIEXYZ;
- dest_to_CIEXYZ = (XcmsDDConversionProc *)pTo->to_CIEXYZ;
- dest_from_CIEXYZ = (XcmsDDConversionProc *)pTo->from_CIEXYZ;
-
- if (pTo->inverse_flag && pFrom->inverse_flag) {
- /*
- * Find common function pointers
- */
- for (to_CIEXYZ_stop = src_to_CIEXYZ; *to_CIEXYZ_stop; to_CIEXYZ_stop++){
- for (tmp = dest_to_CIEXYZ; *tmp; tmp++) {
- if (*to_CIEXYZ_stop == *tmp) {
- goto Continue;
- }
- }
- }
-Continue:
-
- /*
- * Execute the functions
- */
- while (src_to_CIEXYZ != to_CIEXYZ_stop) {
- retval = (*src_to_CIEXYZ++)(ccc, pColors_in_out, nColors,
- pCompressed);
- if (retval == XcmsFailure) {
- return(XcmsFailure);
- }
- hasCompressed |= (retval == XcmsSuccessWithCompression);
- }
-
- /*
- * Determine where to start on the from_CIEXYZ path.
- */
- from_CIEXYZ_start = dest_from_CIEXYZ;
- tmp = src_from_CIEXYZ;
- while ((*from_CIEXYZ_start == *tmp) && (*from_CIEXYZ_start != NULL)) {
- from_CIEXYZ_start++;
- tmp++;
- }
-
- } else {
- /*
- * The function in at least one of the Color Spaces are not
- * complementary, i.e.,
- * for an i, 0 <= i < n elements
- * from_CIEXYZ[i] is not the inverse of to_CIEXYZ[i]
- *
- * Execute the functions all the way to CIEXYZ
- */
- while (*src_to_CIEXYZ) {
- retval = (*src_to_CIEXYZ++)(ccc, pColors_in_out, nColors,
- pCompressed);
- if (retval == XcmsFailure) {
- return(XcmsFailure);
- }
- hasCompressed |= (retval == XcmsSuccessWithCompression);
- }
-
- /*
- * Determine where to start on the from_CIEXYZ path.
- */
- from_CIEXYZ_start = dest_from_CIEXYZ;
- }
-
- while (*from_CIEXYZ_start) {
- retval = (*from_CIEXYZ_start++)(ccc, pColors_in_out, nColors,
- pCompressed);
- if (retval == XcmsFailure) {
- return(XcmsFailure);
- }
- hasCompressed |= (retval == XcmsSuccessWithCompression);
- }
-
- return(hasCompressed ? XcmsSuccessWithCompression : XcmsSuccess);
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsConvertColors - Convert XcmsColor structures
- *
- * SYNOPSIS
- */
-Status
-XcmsConvertColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- XcmsColorFormat targetFormat,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Convert XcmsColor structures to another format
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded without gamut compression,
- * XcmsSuccessWithCompression if succeeded with gamut
- * compression.
- *
- */
-{
- XcmsColor clientWhitePt;
- XcmsColor Color1;
- XcmsColor *pColors_tmp;
- int callWhiteAdjustProc = 0;
- XcmsColorFormat format;
- Status retval;
- unsigned char contents_flag = 0x00;
- unsigned int iColors;
-
- if (ccc == NULL || pColors_in_out == NULL ||
- !(ValidDIColorSpaceID(targetFormat) ||
- ValidDDColorSpaceID(ccc, targetFormat))) {
- return(XcmsFailure);
- }
-
- /*
- * Check formats in color specification array
- */
- format = pColors_in_out->format;
- for (pColors_tmp = pColors_in_out, iColors = nColors; iColors; pColors_tmp++, iColors--) {
- if (!(ValidDIColorSpaceID(pColors_tmp->format) ||
- ValidDDColorSpaceID(ccc, pColors_tmp->format))) {
- return(XcmsFailure);
- }
- if (XCMS_DI_ID(pColors_tmp->format)) {
- contents_flag |= DI_FORMAT;
- } else {
- contents_flag |= DD_FORMAT;
- }
- if (pColors_tmp->format != format) {
- contents_flag |= MIX_FORMAT;
- }
- }
-
- /*
- * Check if we need the Client White Point.
- */
- if ((contents_flag & DI_FORMAT) || XCMS_DI_ID(targetFormat)) {
- /* To proceed, we need to get the Client White Point */
- memcpy((char *)&clientWhitePt, (char *)&ccc->clientWhitePt,
- sizeof(XcmsColor));
- if (clientWhitePt.format == XcmsUndefinedFormat) {
- /*
- * Client White Point is undefined, therefore set to the Screen
- * White Point.
- * Since Client White Point == Screen White Point, WhiteAdjustProc
- * is not called.
- */
- memcpy((char *)&clientWhitePt,
- (char *)&ccc->pPerScrnInfo->screenWhitePt,
- sizeof(XcmsColor));
- } else if ((ccc->whitePtAdjProc != NULL) && !_XcmsEqualWhitePts(ccc,
- &clientWhitePt, ScreenWhitePointOfCCC(ccc))) {
- /*
- * Client White Point != Screen White Point, and WhiteAdjustProc
- * is not NULL, therefore, will need to call it when
- * converting between DI and DD specifications.
- */
- callWhiteAdjustProc = 1;
- }
- }
-
- /*
- * Make copy of array of color specifications
- */
- if (nColors > 1) {
- pColors_tmp = (XcmsColor *) Xmalloc(nColors * sizeof(XcmsColor));
- } else {
- pColors_tmp = &Color1;
- }
- memcpy((char *)pColors_tmp, (char *)pColors_in_out,
- nColors * sizeof(XcmsColor));
-
- /*
- * zero out pCompressed
- */
- if (pCompressed) {
- bzero((char *)pCompressed, nColors * sizeof(Bool));
- }
-
- if (contents_flag == DD_FORMAT || contents_flag == DI_FORMAT) {
- /*
- * ENTIRE ARRAY IS IN ONE FORMAT.
- */
- if (XCMS_DI_ID(format) && XCMS_DI_ID(targetFormat)) {
- /*
- * DI-to-DI only conversion
- */
- retval = _XcmsDIConvertColors(ccc, pColors_tmp,
- &clientWhitePt, nColors, targetFormat);
- } else if (XCMS_DD_ID(format) && XCMS_DD_ID(targetFormat)) {
- /*
- * DD-to-DD only conversion
- * Since DD->DD there will be no compressed thus we can
- * pass NULL instead of pCompressed.
- */
- retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
- targetFormat, (Bool *)NULL);
- } else {
- /*
- * Otherwise we have:
- * 1. Device-Independent to Device-Dependent Conversion
- * OR
- * 2. Device-Dependent to Device-Independent Conversion
- *
- * We need to go from oldFormat -> CIEXYZ -> targetFormat
- * adjusting for white points as necessary.
- */
-
- if (XCMS_DI_ID(format)) {
- /*
- * 1. Device-Independent to Device-Dependent Conversion
- */
- if (callWhiteAdjustProc) {
- /*
- * White Point Adjustment
- * Client White Point to Screen White Point
- */
- retval = (*ccc->whitePtAdjProc)(ccc, &clientWhitePt,
- ScreenWhitePointOfCCC(ccc), targetFormat,
- pColors_tmp, nColors, pCompressed);
- } else {
- if (_XcmsDIConvertColors(ccc, pColors_tmp,
- &clientWhitePt, nColors, XcmsCIEXYZFormat)
- == XcmsFailure) {
- goto Failure;
- }
- retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
- targetFormat, pCompressed);
- }
- } else {
- /*
- * 2. Device-Dependent to Device-Independent Conversion
- */
- if (callWhiteAdjustProc) {
- /*
- * White Point Adjustment
- * Screen White Point to Client White Point
- */
- retval = (*ccc->whitePtAdjProc)(ccc,
- ScreenWhitePointOfCCC(ccc), &clientWhitePt,
- targetFormat, pColors_tmp, nColors, pCompressed);
- } else {
- /*
- * Since DD->CIEXYZ, no compression takes place therefore
- * we can pass NULL instead of pCompressed.
- */
- if (_XcmsDDConvertColors(ccc, pColors_tmp, nColors,
- XcmsCIEXYZFormat, (Bool *)NULL) == XcmsFailure) {
- goto Failure;
- }
- retval = _XcmsDIConvertColors(ccc, pColors_tmp,
- &clientWhitePt, nColors, targetFormat);
- }
- }
- }
- } else {
- /*
- * ARRAY HAS MIXED FORMATS.
- */
- if ((contents_flag == (DI_FORMAT | MIX_FORMAT)) &&
- XCMS_DI_ID(targetFormat)) {
- /*
- * Convert from DI to DI in batches of contiguous formats
- *
- * Because DI->DI, WhiteAdjustProc not called.
- */
- retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
- nColors, targetFormat, (unsigned char)DI_FORMAT);
- } else if ((contents_flag == (DD_FORMAT | MIX_FORMAT)) &&
- XCMS_DD_ID(targetFormat)) {
- /*
- * Convert from DD to DD in batches of contiguous formats
- *
- * Because DD->DD, WhiteAdjustProc not called.
- */
- retval = ConvertMixedColors(ccc, pColors_tmp,
- (XcmsColor *)NULL, nColors, targetFormat,
- (unsigned char)DD_FORMAT);
- } else if (XCMS_DI_ID(targetFormat)) {
- /*
- * We need to convert from DI-to-DI and DD-to-DI, therefore
- * 1. convert DD specifications to CIEXYZ, then
- * 2. convert all in batches to the target DI format.
- *
- * Note that ConvertMixedColors will call WhiteAdjustProc
- * as necessary.
- */
-
- /*
- * Convert only DD specifications in batches of contiguous formats
- * to CIEXYZ
- *
- * Since DD->CIEXYZ, ConvertMixedColors will apply WhiteAdjustProc
- * if required.
- */
- retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
- nColors, XcmsCIEXYZFormat, (unsigned char)DD_FORMAT);
-
- /*
- * Because at this point we may have a mix of DI formats
- * (e.g., CIEXYZ, CIELuv) we must convert the specs to the
- * target DI format in batches of contiguous source formats.
- */
- retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
- nColors, targetFormat, (unsigned char)DI_FORMAT);
- } else {
- /*
- * We need to convert from DI-to-DD and DD-to-DD, therefore
- * 1. convert DI specifications to CIEXYZ, then
- * 2. convert all to the DD target format.
- *
- * This allows white point adjustment and gamut compression
- * to be applied to all the color specifications in one
- * swoop if those functions do in fact modify the entire
- * group of color specifications.
- */
-
- /*
- * Convert in batches to CIEXYZ
- *
- * If DD->CIEXYZ, ConvertMixedColors will apply WhiteAdjustProc
- * if required.
- */
- if ((retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
- nColors, XcmsCIEXYZFormat,
- (unsigned char)(DI_FORMAT | DD_FORMAT))) == XcmsFailure) {
- goto Failure;
- }
-
- /*
- * Convert all specifications (now in CIEXYZ format) to
- * the target DD format.
- * Since CIEXYZ->DD, compression MAY take place therefore
- * we must pass pCompressed.
- * Note that WhiteAdjustProc must be used if necessary.
- */
- if (callWhiteAdjustProc) {
- /*
- * White Point Adjustment
- * Client White Point to Screen White Point
- */
- retval = (*ccc->whitePtAdjProc)(ccc,
- &clientWhitePt, ScreenWhitePointOfCCC(ccc),
- targetFormat, pColors_tmp, nColors, pCompressed);
- } else {
- retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
- targetFormat, pCompressed);
- }
- }
- }
-
- if (retval != XcmsFailure) {
- memcpy((char *)pColors_in_out, (char *)pColors_tmp,
- nColors * sizeof(XcmsColor));
- }
- if (nColors > 1) {
- Xfree((char *)pColors_tmp);
- }
- return(retval);
-
-Failure:
- if (nColors > 1) {
- Xfree((char *)pColors_tmp);
- }
- return(XcmsFailure);
-}
-
-
-/*
- * NAME
- * XcmsRegFormatOfPrefix
- *
- * SYNOPSIS
- */
-XcmsColorFormat
-_XcmsRegFormatOfPrefix(
- _Xconst char *prefix)
-/*
- * DESCRIPTION
- * Returns a color space ID associated with the specified
- * X Consortium registered color space prefix.
- *
- * RETURNS
- * The color space ID if found;
- * otherwise NULL.
- */
-{
- XcmsRegColorSpaceEntry *pEntry = _XcmsRegColorSpaces;
-
- while (pEntry->prefix != NULL) {
- if (strcmp(prefix, pEntry->prefix) == 0) {
- return(pEntry->id);
- }
- pEntry++;
- }
- return(XcmsUndefinedFormat);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsCvCols.c
+ *
+ * DESCRIPTION
+ * Xcms API routine that converts between the
+ * device-independent color spaces.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * LOCAL DEFINES
+ */
+#define DD_FORMAT 0x01
+#define DI_FORMAT 0x02
+#define MIX_FORMAT 0x04
+#ifndef MAX
+# define MAX(x,y) ((x) > (y) ? (x) : (y))
+#endif
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * EqualCIEXYZ
+ *
+ * SYNOPSIS
+ */
+static int
+EqualCIEXYZ(
+ XcmsColor *p1, XcmsColor *p2)
+/*
+ * DESCRIPTION
+ * Compares two XcmsColor structures that are in XcmsCIEXYZFormat
+ *
+ * RETURNS
+ * Returns 1 if equal; 0 otherwise.
+ *
+ */
+{
+ if (p1->format != XcmsCIEXYZFormat || p2->format != XcmsCIEXYZFormat) {
+ return(0);
+ }
+ if ((p1->spec.CIEXYZ.X != p2->spec.CIEXYZ.X)
+ || (p1->spec.CIEXYZ.Y != p2->spec.CIEXYZ.Y)
+ || (p1->spec.CIEXYZ.Z != p2->spec.CIEXYZ.Z)) {
+ return(0);
+ }
+ return(1);
+}
+
+
+/*
+ * NAME
+ * XcmsColorSpace
+ *
+ * SYNOPSIS
+ */
+static XcmsColorSpace *
+ColorSpaceOfID(
+ XcmsCCC ccc,
+ XcmsColorFormat id)
+/*
+ * DESCRIPTION
+ * Returns a pointer to the color space structure
+ * (XcmsColorSpace) associated with the specified color space
+ * ID.
+ *
+ * RETURNS
+ * Pointer to matching XcmsColorSpace structure if found;
+ * otherwise NULL.
+ */
+{
+ XcmsColorSpace **papColorSpaces;
+
+ if (ccc == NULL) {
+ return(NULL);
+ }
+
+ /*
+ * First try Device-Independent color spaces
+ */
+ papColorSpaces = _XcmsDIColorSpaces;
+ if (papColorSpaces != NULL) {
+ while (*papColorSpaces != NULL) {
+ if ((*papColorSpaces)->id == id) {
+ return(*papColorSpaces);
+ }
+ papColorSpaces++;
+ }
+ }
+
+ /*
+ * Next try Device-Dependent color spaces
+ */
+ papColorSpaces = ((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->DDColorSpaces;
+ if (papColorSpaces != NULL) {
+ while (*papColorSpaces != NULL) {
+ if ((*papColorSpaces)->id == id) {
+ return(*papColorSpaces);
+ }
+ papColorSpaces++;
+ }
+ }
+
+ return(NULL);
+}
+
+
+/*
+ * NAME
+ * ValidDIColorSpaceID
+ *
+ * SYNOPSIS
+ */
+static int
+ValidDIColorSpaceID(
+ XcmsColorFormat id)
+/*
+ * DESCRIPTION
+ * Determines if the specified color space ID is a valid
+ * Device-Independent color space in the specified Color
+ * Conversion Context.
+ *
+ * RETURNS
+ * Returns zero if not valid; otherwise non-zero.
+ */
+{
+ XcmsColorSpace **papRec;
+ papRec = _XcmsDIColorSpaces;
+ if (papRec != NULL) {
+ while (*papRec != NULL) {
+ if ((*papRec)->id == id) {
+ return(1);
+ }
+ papRec++;
+ }
+ }
+ return(0);
+}
+
+
+/*
+ * NAME
+ * ValidDDColorSpaceID
+ *
+ * SYNOPSIS
+ */
+static int
+ValidDDColorSpaceID(
+ XcmsCCC ccc,
+ XcmsColorFormat id)
+/*
+ * DESCRIPTION
+ * Determines if the specified color space ID is a valid
+ * Device-Dependent color space in the specified Color
+ * Conversion Context.
+ *
+ * RETURNS
+ * Returns zero if not valid; otherwise non-zero.
+ */
+{
+ XcmsColorSpace **papRec;
+
+ if (ccc->pPerScrnInfo->state != XcmsInitNone) {
+ papRec = ((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->DDColorSpaces;
+ while (*papRec != NULL) {
+ if ((*papRec)->id == id) {
+ return(1);
+ }
+ papRec++;
+ }
+ }
+ return(0);
+}
+
+
+/*
+ * NAME
+ * ConvertMixedColors - Convert XcmsColor structures
+ *
+ * SYNOPSIS
+ */
+static Status
+ConvertMixedColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ XcmsColor *pWhitePt,
+ unsigned int nColors,
+ XcmsColorFormat targetFormat,
+ unsigned char format_flag)
+/*
+ * DESCRIPTION
+ * This routine will only convert the following types of
+ * batches:
+ * DI to DI
+ * DD to DD
+ * DD to CIEXYZ
+ * In other words, it will not convert the following types of
+ * batches:
+ * DI to DD
+ * DD to DI(not CIEXYZ)
+ *
+ * format_flag:
+ * 0x01 : convert Device-Dependent only specifications to the
+ * target format.
+ * 0x02 : convert Device-Independent only specifications to the
+ * target format.
+ * 0x03 : convert all specifications to the target format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if none of the color specifications were
+ * compressed in the conversion process
+ * XcmsSuccessWithCompression if at least one of the
+ * color specifications were compressed in the
+ * conversion process.
+ *
+ */
+{
+ XcmsColor *pColor, *pColors_start;
+ XcmsColorFormat format;
+ Status retval_tmp;
+ Status retval = XcmsSuccess;
+ unsigned int iColors;
+ unsigned int nBatch;
+
+ /*
+ * Convert array of mixed color specifications in batches of
+ * contiguous formats to the target format
+ */
+ iColors = 0;
+ while (iColors < nColors) {
+ /*
+ * Find contiguous array of color specifications with the
+ * same format
+ */
+ pColor = pColors_start = pColors_in_out + iColors;
+ format = pColors_start->format;
+ nBatch = 0;
+ while (iColors < nColors && pColor->format == format) {
+ pColor++;
+ nBatch++;
+ iColors++;
+ }
+ if (format != targetFormat) {
+ /*
+ * Need to convert this batch from current format to target format.
+ */
+ if (XCMS_DI_ID(format) && (format_flag & DI_FORMAT) &&
+ XCMS_DI_ID(targetFormat)) {
+ /*
+ * DI->DI
+ *
+ * Format of interest is Device-Independent,
+ * This batch contains Device-Independent specifications, and
+ * the Target format is Device-Independent.
+ */
+ retval_tmp = _XcmsDIConvertColors(ccc, pColors_start, pWhitePt,
+ nBatch, targetFormat);
+ } else if (XCMS_DD_ID(format) && (format_flag & DD_FORMAT) &&
+ (targetFormat == XcmsCIEXYZFormat)) {
+ /*
+ * DD->CIEXYZ
+ *
+ * Format of interest is Device-Dependent,
+ * This batch contains Device-Dependent specifications, and
+ * the Target format is CIEXYZ.
+ *
+ * Since DD->CIEXYZ we can use NULL instead of pCompressed.
+ */
+ if ((ccc->whitePtAdjProc != NULL) && !_XcmsEqualWhitePts(ccc,
+ pWhitePt, ScreenWhitePointOfCCC(ccc))) {
+ /*
+ * Need to call WhiteAdjustProc (Screen White Point to
+ * White Point).
+ */
+ retval_tmp = (*ccc->whitePtAdjProc)(ccc,
+ ScreenWhitePointOfCCC(ccc), pWhitePt,
+ XcmsCIEXYZFormat, pColors_start, nBatch,
+ (Bool *)NULL);
+ } else {
+ retval_tmp = _XcmsDDConvertColors(ccc, pColors_start,
+ nBatch, XcmsCIEXYZFormat, (Bool *)NULL);
+ }
+ } else if (XCMS_DD_ID(format) && (format_flag & DD_FORMAT) &&
+ XCMS_DD_ID(targetFormat)) {
+ /*
+ * DD->DD(not CIEXYZ)
+ *
+ * Format of interest is Device-Dependent,
+ * This batch contains Device-Dependent specifications, and
+ * the Target format is Device-Dependent and not CIEXYZ.
+ */
+ retval_tmp = _XcmsDDConvertColors(ccc, pColors_start, nBatch,
+ targetFormat, (Bool *)NULL);
+ } else {
+ /*
+ * This routine is called for the wrong reason.
+ */
+ return(XcmsFailure);
+ }
+ if (retval_tmp == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ retval = MAX(retval, retval_tmp);
+ }
+ }
+ return(retval);
+}
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsEqualWhitePts
+ *
+ * SYNOPSIS
+ */
+int
+_XcmsEqualWhitePts(XcmsCCC ccc, XcmsColor *pWhitePt1, XcmsColor *pWhitePt2)
+/*
+ * DESCRIPTION
+ *
+ * RETURNS
+ * Returns 0 if not equal; otherwise 1.
+ *
+ */
+{
+ XcmsColor tmp1, tmp2;
+
+ memcpy((char *)&tmp1, (char *)pWhitePt1, sizeof(XcmsColor));
+ memcpy((char *)&tmp2, (char *)pWhitePt2, sizeof(XcmsColor));
+
+ if (tmp1.format != XcmsCIEXYZFormat) {
+ if (_XcmsDIConvertColors(ccc, &tmp1, (XcmsColor *) NULL, 1,
+ XcmsCIEXYZFormat)==0) {
+ return(0);
+ }
+ }
+
+ if (tmp2.format != XcmsCIEXYZFormat) {
+ if (_XcmsDIConvertColors(ccc, &tmp2, (XcmsColor *) NULL, 1,
+ XcmsCIEXYZFormat)==0) {
+ return(0);
+ }
+ }
+
+ return (EqualCIEXYZ(&tmp1, &tmp2));
+}
+
+
+/*
+ * NAME
+ * _XcmsDIConvertColors - Convert XcmsColor structures
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsDIConvertColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ XcmsColor *pWhitePt,
+ unsigned int nColors,
+ XcmsColorFormat newFormat)
+/*
+ * DESCRIPTION
+ * Convert XcmsColor structures to another Device-Independent
+ * form.
+ *
+ * Here are some assumptions that this routine makes:
+ * 1. The calling routine has already checked if
+ * pColors_in_out->format == newFormat, therefore
+ * there is no need to check again here.
+ * 2. The calling routine has already checked nColors,
+ * therefore this routine assumes nColors > 0.
+ * 3. The calling routine may want to convert only between
+ * CIExyY <-> CIEXYZ <-> CIEuvY
+ * therefore, this routine allows pWhitePt to equal NULL.
+ *
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsColorSpace *pFrom, *pTo;
+ XcmsDIConversionProc *src_to_CIEXYZ, *src_from_CIEXYZ;
+ XcmsDIConversionProc *dest_to_CIEXYZ, *dest_from_CIEXYZ;
+ XcmsDIConversionProc *to_CIEXYZ_stop, *from_CIEXYZ_start;
+ XcmsDIConversionProc *tmp;
+
+ /*
+ * Allow pWhitePt to equal NULL. This appropriate when converting
+ * anywhere between:
+ * CIExyY <-> CIEXYZ <-> CIEuvY
+ */
+
+ if (pColors_in_out == NULL ||
+ !ValidDIColorSpaceID(pColors_in_out->format) ||
+ !ValidDIColorSpaceID(newFormat)) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Get a handle on the function list for the current specification format
+ */
+ if ((pFrom = ColorSpaceOfID(ccc, pColors_in_out->format))
+ == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Get a handle on the function list for the new specification format
+ */
+ if ((pTo = ColorSpaceOfID(ccc, newFormat)) == NULL) {
+ return(XcmsFailure);
+ }
+
+ src_to_CIEXYZ = pFrom->to_CIEXYZ;
+ src_from_CIEXYZ = pFrom->from_CIEXYZ;
+ dest_to_CIEXYZ = pTo->to_CIEXYZ;
+ dest_from_CIEXYZ = pTo->from_CIEXYZ;
+
+ if (pTo->inverse_flag && pFrom->inverse_flag) {
+ /*
+ * Find common function pointers
+ */
+ for (to_CIEXYZ_stop = src_to_CIEXYZ; *to_CIEXYZ_stop; to_CIEXYZ_stop++){
+ for (tmp = dest_to_CIEXYZ; *tmp; tmp++) {
+ if (*to_CIEXYZ_stop == *tmp) {
+ goto Continue;
+ }
+ }
+ }
+
+Continue:
+
+ /*
+ * Execute the functions to CIEXYZ, stopping short as necessary
+ */
+ while (src_to_CIEXYZ != to_CIEXYZ_stop) {
+ if ((*src_to_CIEXYZ++)(ccc, pWhitePt, pColors_in_out,
+ nColors) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ /*
+ * Determine where to start on the from_CIEXYZ path.
+ */
+ from_CIEXYZ_start = dest_from_CIEXYZ;
+ tmp = src_from_CIEXYZ;
+ while ((*from_CIEXYZ_start == *tmp) && (*from_CIEXYZ_start != NULL)) {
+ from_CIEXYZ_start++;
+ tmp++;
+ }
+
+ } else {
+ /*
+ * The function in at least one of the Color Spaces are not
+ * complementary, i.e.,
+ * for an i, 0 <= i < n elements
+ * from_CIEXYZ[i] is not the inverse of to_CIEXYZ[i]
+ *
+ * Execute the functions all the way to CIEXYZ
+ */
+ while (*src_to_CIEXYZ) {
+ if ((*src_to_CIEXYZ++)(ccc, pWhitePt, pColors_in_out,
+ nColors) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ /*
+ * Determine where to start on the from_CIEXYZ path.
+ */
+ from_CIEXYZ_start = dest_from_CIEXYZ;
+ }
+
+
+ /*
+ * Execute the functions from CIEXYZ.
+ */
+ while (*from_CIEXYZ_start) {
+ if ((*from_CIEXYZ_start++)(ccc, pWhitePt, pColors_in_out,
+ nColors) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * _XcmsDDConvertColors - Convert XcmsColor structures
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsDDConvertColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ XcmsColorFormat newFormat,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Convert XcmsColor structures:
+ *
+ * 1. From CIEXYZ to Device-Dependent formats (typically RGB and
+ * RGBi),
+ * or
+ * 2. Between Device-Dependent formats (typically RGB and RGBi).
+ *
+ * Assumes that these specifications have already been white point
+ * adjusted if necessary from Client White Point to Screen
+ * White Point. Therefore, the white point now associated
+ * with the specifications is the Screen White Point.
+ *
+ * pCompressed may be NULL. If so this indicates that the
+ * calling routine is not interested in knowing exactly which
+ * color was compressed, if any.
+ *
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if none of the color specifications were
+ * compressed in the conversion process
+ * XcmsSuccessWithCompression if at least one of the
+ * color specifications were compressed in the
+ * conversion process.
+ *
+ */
+{
+ XcmsColorSpace *pFrom, *pTo;
+ XcmsDDConversionProc *src_to_CIEXYZ, *src_from_CIEXYZ;
+ XcmsDDConversionProc *dest_to_CIEXYZ, *dest_from_CIEXYZ;
+ XcmsDDConversionProc *from_CIEXYZ_start, *to_CIEXYZ_stop;
+ XcmsDDConversionProc *tmp;
+ int retval;
+ int hasCompressed = 0;
+
+ if (ccc == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ if (nColors == 0 || pColors_in_out->format == newFormat) {
+ /* do nothing */
+ return(XcmsSuccess);
+ }
+
+ if (((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet) == NULL) {
+ return(XcmsFailure); /* hmm, an internal error? */
+ }
+
+ /*
+ * Its ok if pColors_in_out->format == XcmsCIEXYZFormat
+ * or
+ * if newFormat == XcmsCIEXYZFormat
+ */
+ if ( !( ValidDDColorSpaceID(ccc, pColors_in_out->format)
+ ||
+ (pColors_in_out->format == XcmsCIEXYZFormat))
+ ||
+ !(ValidDDColorSpaceID(ccc, newFormat)
+ ||
+ newFormat == XcmsCIEXYZFormat)) {
+ return(XcmsFailure);
+ }
+
+ if ((pFrom = ColorSpaceOfID(ccc, pColors_in_out->format)) == NULL){
+ return(XcmsFailure);
+ }
+
+ if ((pTo = ColorSpaceOfID(ccc, newFormat)) == NULL) {
+ return(XcmsFailure);
+ }
+
+ src_to_CIEXYZ = (XcmsDDConversionProc *)pFrom->to_CIEXYZ;
+ src_from_CIEXYZ = (XcmsDDConversionProc *)pFrom->from_CIEXYZ;
+ dest_to_CIEXYZ = (XcmsDDConversionProc *)pTo->to_CIEXYZ;
+ dest_from_CIEXYZ = (XcmsDDConversionProc *)pTo->from_CIEXYZ;
+
+ if (pTo->inverse_flag && pFrom->inverse_flag) {
+ /*
+ * Find common function pointers
+ */
+ for (to_CIEXYZ_stop = src_to_CIEXYZ; *to_CIEXYZ_stop; to_CIEXYZ_stop++){
+ for (tmp = dest_to_CIEXYZ; *tmp; tmp++) {
+ if (*to_CIEXYZ_stop == *tmp) {
+ goto Continue;
+ }
+ }
+ }
+Continue:
+
+ /*
+ * Execute the functions
+ */
+ while (src_to_CIEXYZ != to_CIEXYZ_stop) {
+ retval = (*src_to_CIEXYZ++)(ccc, pColors_in_out, nColors,
+ pCompressed);
+ if (retval == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ hasCompressed |= (retval == XcmsSuccessWithCompression);
+ }
+
+ /*
+ * Determine where to start on the from_CIEXYZ path.
+ */
+ from_CIEXYZ_start = dest_from_CIEXYZ;
+ tmp = src_from_CIEXYZ;
+ while ((*from_CIEXYZ_start == *tmp) && (*from_CIEXYZ_start != NULL)) {
+ from_CIEXYZ_start++;
+ tmp++;
+ }
+
+ } else {
+ /*
+ * The function in at least one of the Color Spaces are not
+ * complementary, i.e.,
+ * for an i, 0 <= i < n elements
+ * from_CIEXYZ[i] is not the inverse of to_CIEXYZ[i]
+ *
+ * Execute the functions all the way to CIEXYZ
+ */
+ while (*src_to_CIEXYZ) {
+ retval = (*src_to_CIEXYZ++)(ccc, pColors_in_out, nColors,
+ pCompressed);
+ if (retval == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ hasCompressed |= (retval == XcmsSuccessWithCompression);
+ }
+
+ /*
+ * Determine where to start on the from_CIEXYZ path.
+ */
+ from_CIEXYZ_start = dest_from_CIEXYZ;
+ }
+
+ while (*from_CIEXYZ_start) {
+ retval = (*from_CIEXYZ_start++)(ccc, pColors_in_out, nColors,
+ pCompressed);
+ if (retval == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ hasCompressed |= (retval == XcmsSuccessWithCompression);
+ }
+
+ return(hasCompressed ? XcmsSuccessWithCompression : XcmsSuccess);
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsConvertColors - Convert XcmsColor structures
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsConvertColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ XcmsColorFormat targetFormat,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Convert XcmsColor structures to another format
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded without gamut compression,
+ * XcmsSuccessWithCompression if succeeded with gamut
+ * compression.
+ *
+ */
+{
+ XcmsColor clientWhitePt;
+ XcmsColor Color1;
+ XcmsColor *pColors_tmp;
+ int callWhiteAdjustProc = 0;
+ XcmsColorFormat format;
+ Status retval;
+ unsigned char contents_flag = 0x00;
+ unsigned int iColors;
+
+ if (ccc == NULL || pColors_in_out == NULL ||
+ !(ValidDIColorSpaceID(targetFormat) ||
+ ValidDDColorSpaceID(ccc, targetFormat))) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Check formats in color specification array
+ */
+ format = pColors_in_out->format;
+ for (pColors_tmp = pColors_in_out, iColors = nColors; iColors; pColors_tmp++, iColors--) {
+ if (!(ValidDIColorSpaceID(pColors_tmp->format) ||
+ ValidDDColorSpaceID(ccc, pColors_tmp->format))) {
+ return(XcmsFailure);
+ }
+ if (XCMS_DI_ID(pColors_tmp->format)) {
+ contents_flag |= DI_FORMAT;
+ } else {
+ contents_flag |= DD_FORMAT;
+ }
+ if (pColors_tmp->format != format) {
+ contents_flag |= MIX_FORMAT;
+ }
+ }
+
+ /*
+ * Check if we need the Client White Point.
+ */
+ if ((contents_flag & DI_FORMAT) || XCMS_DI_ID(targetFormat)) {
+ /* To proceed, we need to get the Client White Point */
+ memcpy((char *)&clientWhitePt, (char *)&ccc->clientWhitePt,
+ sizeof(XcmsColor));
+ if (clientWhitePt.format == XcmsUndefinedFormat) {
+ /*
+ * Client White Point is undefined, therefore set to the Screen
+ * White Point.
+ * Since Client White Point == Screen White Point, WhiteAdjustProc
+ * is not called.
+ */
+ memcpy((char *)&clientWhitePt,
+ (char *)&ccc->pPerScrnInfo->screenWhitePt,
+ sizeof(XcmsColor));
+ } else if ((ccc->whitePtAdjProc != NULL) && !_XcmsEqualWhitePts(ccc,
+ &clientWhitePt, ScreenWhitePointOfCCC(ccc))) {
+ /*
+ * Client White Point != Screen White Point, and WhiteAdjustProc
+ * is not NULL, therefore, will need to call it when
+ * converting between DI and DD specifications.
+ */
+ callWhiteAdjustProc = 1;
+ }
+ }
+
+ /*
+ * Make copy of array of color specifications
+ */
+ if (nColors > 1) {
+ pColors_tmp = (XcmsColor *) Xmalloc(nColors * sizeof(XcmsColor));
+ } else {
+ pColors_tmp = &Color1;
+ }
+ memcpy((char *)pColors_tmp, (char *)pColors_in_out,
+ nColors * sizeof(XcmsColor));
+
+ /*
+ * zero out pCompressed
+ */
+ if (pCompressed) {
+ bzero((char *)pCompressed, nColors * sizeof(Bool));
+ }
+
+ if (contents_flag == DD_FORMAT || contents_flag == DI_FORMAT) {
+ /*
+ * ENTIRE ARRAY IS IN ONE FORMAT.
+ */
+ if (XCMS_DI_ID(format) && XCMS_DI_ID(targetFormat)) {
+ /*
+ * DI-to-DI only conversion
+ */
+ retval = _XcmsDIConvertColors(ccc, pColors_tmp,
+ &clientWhitePt, nColors, targetFormat);
+ } else if (XCMS_DD_ID(format) && XCMS_DD_ID(targetFormat)) {
+ /*
+ * DD-to-DD only conversion
+ * Since DD->DD there will be no compressed thus we can
+ * pass NULL instead of pCompressed.
+ */
+ retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
+ targetFormat, (Bool *)NULL);
+ } else {
+ /*
+ * Otherwise we have:
+ * 1. Device-Independent to Device-Dependent Conversion
+ * OR
+ * 2. Device-Dependent to Device-Independent Conversion
+ *
+ * We need to go from oldFormat -> CIEXYZ -> targetFormat
+ * adjusting for white points as necessary.
+ */
+
+ if (XCMS_DI_ID(format)) {
+ /*
+ * 1. Device-Independent to Device-Dependent Conversion
+ */
+ if (callWhiteAdjustProc) {
+ /*
+ * White Point Adjustment
+ * Client White Point to Screen White Point
+ */
+ retval = (*ccc->whitePtAdjProc)(ccc, &clientWhitePt,
+ ScreenWhitePointOfCCC(ccc), targetFormat,
+ pColors_tmp, nColors, pCompressed);
+ } else {
+ if (_XcmsDIConvertColors(ccc, pColors_tmp,
+ &clientWhitePt, nColors, XcmsCIEXYZFormat)
+ == XcmsFailure) {
+ goto Failure;
+ }
+ retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
+ targetFormat, pCompressed);
+ }
+ } else {
+ /*
+ * 2. Device-Dependent to Device-Independent Conversion
+ */
+ if (callWhiteAdjustProc) {
+ /*
+ * White Point Adjustment
+ * Screen White Point to Client White Point
+ */
+ retval = (*ccc->whitePtAdjProc)(ccc,
+ ScreenWhitePointOfCCC(ccc), &clientWhitePt,
+ targetFormat, pColors_tmp, nColors, pCompressed);
+ } else {
+ /*
+ * Since DD->CIEXYZ, no compression takes place therefore
+ * we can pass NULL instead of pCompressed.
+ */
+ if (_XcmsDDConvertColors(ccc, pColors_tmp, nColors,
+ XcmsCIEXYZFormat, (Bool *)NULL) == XcmsFailure) {
+ goto Failure;
+ }
+ retval = _XcmsDIConvertColors(ccc, pColors_tmp,
+ &clientWhitePt, nColors, targetFormat);
+ }
+ }
+ }
+ } else {
+ /*
+ * ARRAY HAS MIXED FORMATS.
+ */
+ if ((contents_flag == (DI_FORMAT | MIX_FORMAT)) &&
+ XCMS_DI_ID(targetFormat)) {
+ /*
+ * Convert from DI to DI in batches of contiguous formats
+ *
+ * Because DI->DI, WhiteAdjustProc not called.
+ */
+ retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
+ nColors, targetFormat, (unsigned char)DI_FORMAT);
+ } else if ((contents_flag == (DD_FORMAT | MIX_FORMAT)) &&
+ XCMS_DD_ID(targetFormat)) {
+ /*
+ * Convert from DD to DD in batches of contiguous formats
+ *
+ * Because DD->DD, WhiteAdjustProc not called.
+ */
+ retval = ConvertMixedColors(ccc, pColors_tmp,
+ (XcmsColor *)NULL, nColors, targetFormat,
+ (unsigned char)DD_FORMAT);
+ } else if (XCMS_DI_ID(targetFormat)) {
+ /*
+ * We need to convert from DI-to-DI and DD-to-DI, therefore
+ * 1. convert DD specifications to CIEXYZ, then
+ * 2. convert all in batches to the target DI format.
+ *
+ * Note that ConvertMixedColors will call WhiteAdjustProc
+ * as necessary.
+ */
+
+ /*
+ * Convert only DD specifications in batches of contiguous formats
+ * to CIEXYZ
+ *
+ * Since DD->CIEXYZ, ConvertMixedColors will apply WhiteAdjustProc
+ * if required.
+ */
+ retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
+ nColors, XcmsCIEXYZFormat, (unsigned char)DD_FORMAT);
+
+ /*
+ * Because at this point we may have a mix of DI formats
+ * (e.g., CIEXYZ, CIELuv) we must convert the specs to the
+ * target DI format in batches of contiguous source formats.
+ */
+ retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
+ nColors, targetFormat, (unsigned char)DI_FORMAT);
+ } else {
+ /*
+ * We need to convert from DI-to-DD and DD-to-DD, therefore
+ * 1. convert DI specifications to CIEXYZ, then
+ * 2. convert all to the DD target format.
+ *
+ * This allows white point adjustment and gamut compression
+ * to be applied to all the color specifications in one
+ * swoop if those functions do in fact modify the entire
+ * group of color specifications.
+ */
+
+ /*
+ * Convert in batches to CIEXYZ
+ *
+ * If DD->CIEXYZ, ConvertMixedColors will apply WhiteAdjustProc
+ * if required.
+ */
+ if ((retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
+ nColors, XcmsCIEXYZFormat,
+ (unsigned char)(DI_FORMAT | DD_FORMAT))) == XcmsFailure) {
+ goto Failure;
+ }
+
+ /*
+ * Convert all specifications (now in CIEXYZ format) to
+ * the target DD format.
+ * Since CIEXYZ->DD, compression MAY take place therefore
+ * we must pass pCompressed.
+ * Note that WhiteAdjustProc must be used if necessary.
+ */
+ if (callWhiteAdjustProc) {
+ /*
+ * White Point Adjustment
+ * Client White Point to Screen White Point
+ */
+ retval = (*ccc->whitePtAdjProc)(ccc,
+ &clientWhitePt, ScreenWhitePointOfCCC(ccc),
+ targetFormat, pColors_tmp, nColors, pCompressed);
+ } else {
+ retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
+ targetFormat, pCompressed);
+ }
+ }
+ }
+
+ if (retval != XcmsFailure) {
+ memcpy((char *)pColors_in_out, (char *)pColors_tmp,
+ nColors * sizeof(XcmsColor));
+ }
+ if (nColors > 1) {
+ Xfree((char *)pColors_tmp);
+ }
+ return(retval);
+
+Failure:
+ if (nColors > 1) {
+ Xfree((char *)pColors_tmp);
+ }
+ return(XcmsFailure);
+}
+
+
+/*
+ * NAME
+ * XcmsRegFormatOfPrefix
+ *
+ * SYNOPSIS
+ */
+XcmsColorFormat
+_XcmsRegFormatOfPrefix(
+ _Xconst char *prefix)
+/*
+ * DESCRIPTION
+ * Returns a color space ID associated with the specified
+ * X Consortium registered color space prefix.
+ *
+ * RETURNS
+ * The color space ID if found;
+ * otherwise NULL.
+ */
+{
+ XcmsRegColorSpaceEntry *pEntry = _XcmsRegColorSpaces;
+
+ while (pEntry->prefix != NULL) {
+ if (strcmp(prefix, pEntry->prefix) == 0) {
+ return(pEntry->id);
+ }
+ pEntry++;
+ }
+ return(XcmsUndefinedFormat);
+}
diff --git a/libX11/src/xcms/HVC.c b/libX11/src/xcms/HVC.c
index 80f1735cf..c5c9823e2 100644
--- a/libX11/src/xcms/HVC.c
+++ b/libX11/src/xcms/HVC.c
@@ -1,625 +1,625 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVC.c
- *
- * DESCRIPTION
- * This file contains routines that support the TekHVC
- * color space to include conversions to and from the CIE
- * XYZ space.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <X11/Xos.h>
-#include <math.h>
-#include "Cv.h"
-
-#include <stdio.h>
-
-/*
- * DEFINES
- */
-#define u_BR 0.7127 /* u' Best Red */
-#define v_BR 0.4931 /* v' Best Red */
-#define EPS 0.001
-#define CHROMA_SCALE_FACTOR 7.50725
-#ifndef PI
-# ifdef M_PI
-# define PI M_PI
-# else
-# define PI 3.14159265358979323846264338327950
-# endif
-#endif
-#ifndef degrees
-# define degrees(r) ((XcmsFloat)(r) * 180.0 / PI)
-#endif /* degrees */
-#ifndef radians
-# define radians(d) ((XcmsFloat)(d) * PI / 180.0)
-#endif /* radians */
-
-/*************************************************************************
- * Note: The DBL_EPSILON for ANSI is 1e-5 so my checks need to take
- * this into account. If your DBL_EPSILON is different then
- * adjust this define.
- *
- * Also note that EPS is the error factor in the calculations
- * This may need to be the same as XMY_DBL_EPSILON in
- * some implementations.
- **************************************************************************/
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-
-/*
- * FORWARD DECLARATIONS
- */
-static int TekHVC_ParseString(register char *spec, XcmsColor *pColor);
-static Status XcmsTekHVC_ValidSpec(XcmsColor *pColor);
-
-/*
- * LOCAL VARIABLES
- */
-
- /*
- * NULL terminated list of functions applied to get from TekHVC to CIEXYZ
- */
-static XcmsConversionProc Fl_TekHVC_to_CIEXYZ[] = {
- XcmsTekHVCToCIEuvY,
- XcmsCIEuvYToCIEXYZ,
- NULL
-};
-
- /*
- * NULL terminated list of functions applied to get from CIEXYZ to TekHVC
- */
-static XcmsConversionProc Fl_CIEXYZ_to_TekHVC[] = {
- XcmsCIEXYZToCIEuvY,
- XcmsCIEuvYToTekHVC,
- NULL
-};
-
-/*
- * GLOBALS
- */
-
- /*
- * TekHVC Color Space
- */
-XcmsColorSpace XcmsTekHVCColorSpace =
- {
- _XcmsTekHVC_prefix, /* prefix */
- XcmsTekHVCFormat, /* id */
- TekHVC_ParseString, /* parseString */
- Fl_TekHVC_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_TekHVC, /* from_CIEXYZ */
- 1
- };
-
-
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * TekHVC_ParseString
- *
- * SYNOPSIS
- */
-static int
-TekHVC_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsTekHVCFormat.
- * The assumed TekHVC string syntax is:
- * TekHVC:<H>/<V>/<C>
- * Where H, V, and C are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- * XcmsFailure if invalid;
- * XcmsSuccess if valid.
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsTekHVC_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.TekHVC.H,
- &pColor->spec.TekHVC.V,
- &pColor->spec.TekHVC.C) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.TekHVC.H,
- &pColor->spec.TekHVC.V,
- &pColor->spec.TekHVC.C) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsTekHVCFormat;
- pColor->pixel = 0;
- return(XcmsTekHVC_ValidSpec(pColor));
-}
-
-
-/*
- * NAME
- * ThetaOffset -- compute thetaOffset
- *
- * SYNOPSIS
- */
-static int
-ThetaOffset(
- XcmsColor *pWhitePt,
- XcmsFloat *pThetaOffset)
-/*
- * DESCRIPTION
- * This routine computes the theta offset of a given
- * white point, i.e. XcmsColor. It is used in both this
- * conversion and the printer conversions.
- *
- * RETURNS
- * 0 if failed.
- * 1 if succeeded with no modifications.
- *
- * ASSUMPTIONS
- * Assumes:
- * pWhitePt != NULL
- * pWhitePt->format == XcmsCIEuvYFormat
- *
- */
-{
- double div, slopeuv;
-
- if (pWhitePt == NULL || pWhitePt->format != XcmsCIEuvYFormat) {
- return(0);
- }
-
- if ((div = u_BR - pWhitePt->spec.CIEuvY.u_prime) == 0.0) {
- return(0);
- }
- slopeuv = (v_BR - pWhitePt->spec.CIEuvY.v_prime) / div;
- *pThetaOffset = degrees(XCMS_ATAN(slopeuv));
- return(1);
-}
-
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVC_ValidSpec()
- *
- * SYNOPSIS
- */
-static int
-XcmsTekHVC_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if values in the color specification are valid.
- * Also brings hue into the range 0.0 <= Hue < 360.0
- *
- * RETURNS
- * 0 if not valid.
- * 1 if valid.
- *
- */
-{
- if (pColor->format != XcmsTekHVCFormat) {
- return(XcmsFailure);
- }
- if (pColor->spec.TekHVC.V < (0.0 - XMY_DBL_EPSILON)
- || pColor->spec.TekHVC.V > (100.0 + XMY_DBL_EPSILON)
- || (pColor->spec.TekHVC.C < 0.0 - XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
-
- if (pColor->spec.TekHVC.V < 0.0) {
- pColor->spec.TekHVC.V = 0.0 + XMY_DBL_EPSILON;
- } else if (pColor->spec.TekHVC.V > 100.0) {
- pColor->spec.TekHVC.V = 100.0 - XMY_DBL_EPSILON;
- }
-
- if (pColor->spec.TekHVC.C < 0.0) {
- pColor->spec.TekHVC.C = 0.0 - XMY_DBL_EPSILON;
- }
-
- while (pColor->spec.TekHVC.H < 0.0) {
- pColor->spec.TekHVC.H += 360.0;
- }
- while (pColor->spec.TekHVC.H >= 360.0) {
- pColor->spec.TekHVC.H -= 360.0;
- }
- return(XcmsSuccess);
-}
-
-/*
- * NAME
- * XcmsTekHVCToCIEuvY - convert TekHVC to CIEuvY
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCToCIEuvY(
- XcmsCCC ccc,
- XcmsColor *pHVC_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Transforms an array of TekHVC color specifications, given
- * their associated white point, to CIECIEuvY.color
- * specifications.
- *
- * RETURNS
- * XcmsFailure if failed, XcmsSuccess otherwise.
- *
- */
-{
- XcmsFloat thetaOffset;
- XcmsColor *pColor = pColors_in_out;
- XcmsColor whitePt;
- XcmsCIEuvY uvY_return;
- XcmsFloat tempHue, u, v;
- XcmsFloat tmpVal;
- register int i;
-
- /*
- * Check arguments
- */
- if (pHVC_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEuvY form
- */
- if (pHVC_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pHVC_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
- XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- pHVC_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (pHVC_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
-
- /* Get the thetaOffset */
- if (!ThetaOffset(pHVC_WhitePt, &thetaOffset)) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is TekHVC and is valid */
- if (!XcmsTekHVC_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- if (pColor->spec.TekHVC.V == 0.0 || pColor->spec.TekHVC.V == 100.0) {
- if (pColor->spec.TekHVC.V == 100.0) {
- uvY_return.Y = 1.0;
- } else { /* pColor->spec.TekHVC.V == 0.0 */
- uvY_return.Y = 0.0;
- }
- uvY_return.u_prime = pHVC_WhitePt->spec.CIEuvY.u_prime;
- uvY_return.v_prime = pHVC_WhitePt->spec.CIEuvY.v_prime;
- } else {
-
- /* Find the hue based on the white point offset */
- tempHue = pColor->spec.TekHVC.H + thetaOffset;
-
- while (tempHue < 0.0) {
- tempHue += 360.0;
- }
- while (tempHue >= 360.0) {
- tempHue -= 360.0;
- }
-
- tempHue = radians(tempHue);
-
- /* Calculate u'v' for the obtained hue */
- u = (XcmsFloat) ((XCMS_COS(tempHue) * pColor->spec.TekHVC.C) /
- (pColor->spec.TekHVC.V * (double)CHROMA_SCALE_FACTOR));
- v = (XcmsFloat) ((XCMS_SIN(tempHue) * pColor->spec.TekHVC.C) /
- (pColor->spec.TekHVC.V * (double)CHROMA_SCALE_FACTOR));
-
- /* Based on the white point get the offset from best red */
- uvY_return.u_prime = u + pHVC_WhitePt->spec.CIEuvY.u_prime;
- uvY_return.v_prime = v + pHVC_WhitePt->spec.CIEuvY.v_prime;
-
- /* Calculate the Y value based on the L* = V. */
- if (pColor->spec.TekHVC.V < 7.99953624) {
- uvY_return.Y = pColor->spec.TekHVC.V / 903.29;
- } else {
- tmpVal = (pColor->spec.TekHVC.V + 16.0) / 116.0;
- uvY_return.Y = tmpVal * tmpVal * tmpVal; /* tmpVal ** 3 */
- }
- }
-
- /* Copy result to pColor */
- memcpy((char *)&pColor->spec, (char *)&uvY_return, sizeof(XcmsCIEuvY));
-
- /* Identify that the format is now CIEuvY */
- pColor->format = XcmsCIEuvYFormat;
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIEuvYToTekHVC - convert CIEuvY to TekHVC
- *
- * SYNOPSIS
- */
-Status
-XcmsCIEuvYToTekHVC(
- XcmsCCC ccc,
- XcmsColor *pHVC_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Transforms an array of CIECIEuvY.color specifications, given
- * their assiciated white point, to TekHVC specifications.
- *
- * RETURNS
- * XcmsFailure if failed, XcmsSuccess otherwise.
- *
- */
-{
- XcmsFloat theta, L2, u, v, nThetaLow, nThetaHigh;
- XcmsFloat thetaOffset;
- XcmsColor *pColor = pColors_in_out;
- XcmsColor whitePt;
- XcmsTekHVC HVC_return;
- register int i;
-
- /*
- * Check arguments
- */
- if (pHVC_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEuvY form
- */
- if (pHVC_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pHVC_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
- XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- pHVC_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (pHVC_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
- if (!ThetaOffset(pHVC_WhitePt, &thetaOffset)) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
- if (!_XcmsCIEuvY_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /* Use the white point offset to determine HVC */
- u = pColor->spec.CIEuvY.u_prime - pHVC_WhitePt->spec.CIEuvY.u_prime;
- v = pColor->spec.CIEuvY.v_prime - pHVC_WhitePt->spec.CIEuvY.v_prime;
-
- /* Calculate the offset */
- if (u == 0.0) {
- theta = 0.0;
- } else {
- theta = v / u;
- theta = (XcmsFloat) XCMS_ATAN((double)theta);
- theta = degrees(theta);
- }
-
- nThetaLow = 0.0;
- nThetaHigh = 360.0;
- if (u > 0.0 && v > 0.0) {
- nThetaLow = 0.0;
- nThetaHigh = 90.0;
- } else if (u < 0.0 && v > 0.0) {
- nThetaLow = 90.0;
- nThetaHigh = 180.0;
- } else if (u < 0.0 && v < 0.0) {
- nThetaLow = 180.0;
- nThetaHigh = 270.0;
- } else if (u > 0.0 && v < 0.0) {
- nThetaLow = 270.0;
- nThetaHigh = 360.0;
- }
- while (theta < nThetaLow) {
- theta += 90.0;
- }
- while (theta >= nThetaHigh) {
- theta -= 90.0;
- }
-
- /* calculate the L value from the given Y */
- L2 = (pColor->spec.CIEuvY.Y < 0.008856)
- ?
- (pColor->spec.CIEuvY.Y * 903.29)
- :
- ((XcmsFloat)(XCMS_CUBEROOT(pColor->spec.CIEuvY.Y) * 116.0) - 16.0);
- HVC_return.C = L2 * CHROMA_SCALE_FACTOR * XCMS_SQRT((double) ((u * u) + (v * v)));
- if (HVC_return.C < 0.0) {
- theta = 0.0;
- }
- HVC_return.V = L2;
- HVC_return.H = theta - thetaOffset;
-
- /*
- * If this is within the error margin let some other routine later
- * in the chain worry about the slop in the calculations.
- */
- while (HVC_return.H < -EPS) {
- HVC_return.H += 360.0;
- }
- while (HVC_return.H >= 360.0 + EPS) {
- HVC_return.H -= 360.0;
- }
-
- /* Copy result to pColor */
- memcpy((char *)&pColor->spec, (char *)&HVC_return, sizeof(XcmsTekHVC));
-
- /* Identify that the format is now CIEuvY */
- pColor->format = XcmsTekHVCFormat;
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * _XcmsTekHVC_CheckModify
- *
- * SYNOPSIS
- */
-int
-_XcmsTekHVC_CheckModify(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if values in the color specification are valid.
- * If they are not it modifies the values.
- * Also brings hue into the range 0.0 <= Hue < 360.0
- *
- * RETURNS
- * 0 if not valid.
- * 1 if valid.
- *
- */
-{
- int n;
-
- /* For now only use the TekHVC numbers as inputs */
- if (pColor->format != XcmsTekHVCFormat) {
- return(0);
- }
-
- if (pColor->spec.TekHVC.V < 0.0) {
- pColor->spec.TekHVC.V = 0.0 + XMY_DBL_EPSILON;
- } else if (pColor->spec.TekHVC.V > 100.0) {
- pColor->spec.TekHVC.V = 100.0 - XMY_DBL_EPSILON;
- }
-
- if (pColor->spec.TekHVC.C < 0.0) {
- pColor->spec.TekHVC.C = 0.0 - XMY_DBL_EPSILON;
- }
-
- if (pColor->spec.TekHVC.H < 0.0) {
- n = -pColor->spec.TekHVC.H / 360.0;
- pColor->spec.TekHVC.H += (n + 1) * 360.0;
- if (pColor->spec.TekHVC.H >= 360.0)
- pColor->spec.TekHVC.H -= 360.0;
- } else if (pColor->spec.TekHVC.H >= 360.0) {
- n = pColor->spec.TekHVC.H / 360.0;
- pColor->spec.TekHVC.H -= n * 360.0;
- }
- return(1);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVC.c
+ *
+ * DESCRIPTION
+ * This file contains routines that support the TekHVC
+ * color space to include conversions to and from the CIE
+ * XYZ space.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <X11/Xos.h>
+#include <math.h>
+#include "Cv.h"
+
+#include <stdio.h>
+
+/*
+ * DEFINES
+ */
+#define u_BR 0.7127 /* u' Best Red */
+#define v_BR 0.4931 /* v' Best Red */
+#define EPS 0.001
+#define CHROMA_SCALE_FACTOR 7.50725
+#ifndef PI
+# ifdef M_PI
+# define PI M_PI
+# else
+# define PI 3.14159265358979323846264338327950
+# endif
+#endif
+#ifndef degrees
+# define degrees(r) ((XcmsFloat)(r) * 180.0 / PI)
+#endif /* degrees */
+#ifndef radians
+# define radians(d) ((XcmsFloat)(d) * PI / 180.0)
+#endif /* radians */
+
+/*************************************************************************
+ * Note: The DBL_EPSILON for ANSI is 1e-5 so my checks need to take
+ * this into account. If your DBL_EPSILON is different then
+ * adjust this define.
+ *
+ * Also note that EPS is the error factor in the calculations
+ * This may need to be the same as XMY_DBL_EPSILON in
+ * some implementations.
+ **************************************************************************/
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+
+/*
+ * FORWARD DECLARATIONS
+ */
+static int TekHVC_ParseString(register char *spec, XcmsColor *pColor);
+static Status XcmsTekHVC_ValidSpec(XcmsColor *pColor);
+
+/*
+ * LOCAL VARIABLES
+ */
+
+ /*
+ * NULL terminated list of functions applied to get from TekHVC to CIEXYZ
+ */
+static XcmsConversionProc Fl_TekHVC_to_CIEXYZ[] = {
+ XcmsTekHVCToCIEuvY,
+ XcmsCIEuvYToCIEXYZ,
+ NULL
+};
+
+ /*
+ * NULL terminated list of functions applied to get from CIEXYZ to TekHVC
+ */
+static XcmsConversionProc Fl_CIEXYZ_to_TekHVC[] = {
+ XcmsCIEXYZToCIEuvY,
+ XcmsCIEuvYToTekHVC,
+ NULL
+};
+
+/*
+ * GLOBALS
+ */
+
+ /*
+ * TekHVC Color Space
+ */
+XcmsColorSpace XcmsTekHVCColorSpace =
+ {
+ _XcmsTekHVC_prefix, /* prefix */
+ XcmsTekHVCFormat, /* id */
+ TekHVC_ParseString, /* parseString */
+ Fl_TekHVC_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_TekHVC, /* from_CIEXYZ */
+ 1
+ };
+
+
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * TekHVC_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+TekHVC_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsTekHVCFormat.
+ * The assumed TekHVC string syntax is:
+ * TekHVC:<H>/<V>/<C>
+ * Where H, V, and C are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ * XcmsFailure if invalid;
+ * XcmsSuccess if valid.
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsTekHVC_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.TekHVC.H,
+ &pColor->spec.TekHVC.V,
+ &pColor->spec.TekHVC.C) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.TekHVC.H,
+ &pColor->spec.TekHVC.V,
+ &pColor->spec.TekHVC.C) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsTekHVCFormat;
+ pColor->pixel = 0;
+ return(XcmsTekHVC_ValidSpec(pColor));
+}
+
+
+/*
+ * NAME
+ * ThetaOffset -- compute thetaOffset
+ *
+ * SYNOPSIS
+ */
+static int
+ThetaOffset(
+ XcmsColor *pWhitePt,
+ XcmsFloat *pThetaOffset)
+/*
+ * DESCRIPTION
+ * This routine computes the theta offset of a given
+ * white point, i.e. XcmsColor. It is used in both this
+ * conversion and the printer conversions.
+ *
+ * RETURNS
+ * 0 if failed.
+ * 1 if succeeded with no modifications.
+ *
+ * ASSUMPTIONS
+ * Assumes:
+ * pWhitePt != NULL
+ * pWhitePt->format == XcmsCIEuvYFormat
+ *
+ */
+{
+ double div, slopeuv;
+
+ if (pWhitePt == NULL || pWhitePt->format != XcmsCIEuvYFormat) {
+ return(0);
+ }
+
+ if ((div = u_BR - pWhitePt->spec.CIEuvY.u_prime) == 0.0) {
+ return(0);
+ }
+ slopeuv = (v_BR - pWhitePt->spec.CIEuvY.v_prime) / div;
+ *pThetaOffset = degrees(XCMS_ATAN(slopeuv));
+ return(1);
+}
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVC_ValidSpec()
+ *
+ * SYNOPSIS
+ */
+static int
+XcmsTekHVC_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if values in the color specification are valid.
+ * Also brings hue into the range 0.0 <= Hue < 360.0
+ *
+ * RETURNS
+ * 0 if not valid.
+ * 1 if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsTekHVCFormat) {
+ return(XcmsFailure);
+ }
+ if (pColor->spec.TekHVC.V < (0.0 - XMY_DBL_EPSILON)
+ || pColor->spec.TekHVC.V > (100.0 + XMY_DBL_EPSILON)
+ || (pColor->spec.TekHVC.C < 0.0 - XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+
+ if (pColor->spec.TekHVC.V < 0.0) {
+ pColor->spec.TekHVC.V = 0.0 + XMY_DBL_EPSILON;
+ } else if (pColor->spec.TekHVC.V > 100.0) {
+ pColor->spec.TekHVC.V = 100.0 - XMY_DBL_EPSILON;
+ }
+
+ if (pColor->spec.TekHVC.C < 0.0) {
+ pColor->spec.TekHVC.C = 0.0 - XMY_DBL_EPSILON;
+ }
+
+ while (pColor->spec.TekHVC.H < 0.0) {
+ pColor->spec.TekHVC.H += 360.0;
+ }
+ while (pColor->spec.TekHVC.H >= 360.0) {
+ pColor->spec.TekHVC.H -= 360.0;
+ }
+ return(XcmsSuccess);
+}
+
+/*
+ * NAME
+ * XcmsTekHVCToCIEuvY - convert TekHVC to CIEuvY
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCToCIEuvY(
+ XcmsCCC ccc,
+ XcmsColor *pHVC_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Transforms an array of TekHVC color specifications, given
+ * their associated white point, to CIECIEuvY.color
+ * specifications.
+ *
+ * RETURNS
+ * XcmsFailure if failed, XcmsSuccess otherwise.
+ *
+ */
+{
+ XcmsFloat thetaOffset;
+ XcmsColor *pColor = pColors_in_out;
+ XcmsColor whitePt;
+ XcmsCIEuvY uvY_return;
+ XcmsFloat tempHue, u, v;
+ XcmsFloat tmpVal;
+ register int i;
+
+ /*
+ * Check arguments
+ */
+ if (pHVC_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (pHVC_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pHVC_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
+ XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ pHVC_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (pHVC_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+
+ /* Get the thetaOffset */
+ if (!ThetaOffset(pHVC_WhitePt, &thetaOffset)) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is TekHVC and is valid */
+ if (!XcmsTekHVC_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ if (pColor->spec.TekHVC.V == 0.0 || pColor->spec.TekHVC.V == 100.0) {
+ if (pColor->spec.TekHVC.V == 100.0) {
+ uvY_return.Y = 1.0;
+ } else { /* pColor->spec.TekHVC.V == 0.0 */
+ uvY_return.Y = 0.0;
+ }
+ uvY_return.u_prime = pHVC_WhitePt->spec.CIEuvY.u_prime;
+ uvY_return.v_prime = pHVC_WhitePt->spec.CIEuvY.v_prime;
+ } else {
+
+ /* Find the hue based on the white point offset */
+ tempHue = pColor->spec.TekHVC.H + thetaOffset;
+
+ while (tempHue < 0.0) {
+ tempHue += 360.0;
+ }
+ while (tempHue >= 360.0) {
+ tempHue -= 360.0;
+ }
+
+ tempHue = radians(tempHue);
+
+ /* Calculate u'v' for the obtained hue */
+ u = (XcmsFloat) ((XCMS_COS(tempHue) * pColor->spec.TekHVC.C) /
+ (pColor->spec.TekHVC.V * (double)CHROMA_SCALE_FACTOR));
+ v = (XcmsFloat) ((XCMS_SIN(tempHue) * pColor->spec.TekHVC.C) /
+ (pColor->spec.TekHVC.V * (double)CHROMA_SCALE_FACTOR));
+
+ /* Based on the white point get the offset from best red */
+ uvY_return.u_prime = u + pHVC_WhitePt->spec.CIEuvY.u_prime;
+ uvY_return.v_prime = v + pHVC_WhitePt->spec.CIEuvY.v_prime;
+
+ /* Calculate the Y value based on the L* = V. */
+ if (pColor->spec.TekHVC.V < 7.99953624) {
+ uvY_return.Y = pColor->spec.TekHVC.V / 903.29;
+ } else {
+ tmpVal = (pColor->spec.TekHVC.V + 16.0) / 116.0;
+ uvY_return.Y = tmpVal * tmpVal * tmpVal; /* tmpVal ** 3 */
+ }
+ }
+
+ /* Copy result to pColor */
+ memcpy((char *)&pColor->spec, (char *)&uvY_return, sizeof(XcmsCIEuvY));
+
+ /* Identify that the format is now CIEuvY */
+ pColor->format = XcmsCIEuvYFormat;
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEuvYToTekHVC - convert CIEuvY to TekHVC
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIEuvYToTekHVC(
+ XcmsCCC ccc,
+ XcmsColor *pHVC_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Transforms an array of CIECIEuvY.color specifications, given
+ * their assiciated white point, to TekHVC specifications.
+ *
+ * RETURNS
+ * XcmsFailure if failed, XcmsSuccess otherwise.
+ *
+ */
+{
+ XcmsFloat theta, L2, u, v, nThetaLow, nThetaHigh;
+ XcmsFloat thetaOffset;
+ XcmsColor *pColor = pColors_in_out;
+ XcmsColor whitePt;
+ XcmsTekHVC HVC_return;
+ register int i;
+
+ /*
+ * Check arguments
+ */
+ if (pHVC_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (pHVC_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pHVC_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
+ XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ pHVC_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (pHVC_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+ if (!ThetaOffset(pHVC_WhitePt, &thetaOffset)) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+ if (!_XcmsCIEuvY_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /* Use the white point offset to determine HVC */
+ u = pColor->spec.CIEuvY.u_prime - pHVC_WhitePt->spec.CIEuvY.u_prime;
+ v = pColor->spec.CIEuvY.v_prime - pHVC_WhitePt->spec.CIEuvY.v_prime;
+
+ /* Calculate the offset */
+ if (u == 0.0) {
+ theta = 0.0;
+ } else {
+ theta = v / u;
+ theta = (XcmsFloat) XCMS_ATAN((double)theta);
+ theta = degrees(theta);
+ }
+
+ nThetaLow = 0.0;
+ nThetaHigh = 360.0;
+ if (u > 0.0 && v > 0.0) {
+ nThetaLow = 0.0;
+ nThetaHigh = 90.0;
+ } else if (u < 0.0 && v > 0.0) {
+ nThetaLow = 90.0;
+ nThetaHigh = 180.0;
+ } else if (u < 0.0 && v < 0.0) {
+ nThetaLow = 180.0;
+ nThetaHigh = 270.0;
+ } else if (u > 0.0 && v < 0.0) {
+ nThetaLow = 270.0;
+ nThetaHigh = 360.0;
+ }
+ while (theta < nThetaLow) {
+ theta += 90.0;
+ }
+ while (theta >= nThetaHigh) {
+ theta -= 90.0;
+ }
+
+ /* calculate the L value from the given Y */
+ L2 = (pColor->spec.CIEuvY.Y < 0.008856)
+ ?
+ (pColor->spec.CIEuvY.Y * 903.29)
+ :
+ ((XcmsFloat)(XCMS_CUBEROOT(pColor->spec.CIEuvY.Y) * 116.0) - 16.0);
+ HVC_return.C = L2 * CHROMA_SCALE_FACTOR * XCMS_SQRT((double) ((u * u) + (v * v)));
+ if (HVC_return.C < 0.0) {
+ theta = 0.0;
+ }
+ HVC_return.V = L2;
+ HVC_return.H = theta - thetaOffset;
+
+ /*
+ * If this is within the error margin let some other routine later
+ * in the chain worry about the slop in the calculations.
+ */
+ while (HVC_return.H < -EPS) {
+ HVC_return.H += 360.0;
+ }
+ while (HVC_return.H >= 360.0 + EPS) {
+ HVC_return.H -= 360.0;
+ }
+
+ /* Copy result to pColor */
+ memcpy((char *)&pColor->spec, (char *)&HVC_return, sizeof(XcmsTekHVC));
+
+ /* Identify that the format is now CIEuvY */
+ pColor->format = XcmsTekHVCFormat;
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * _XcmsTekHVC_CheckModify
+ *
+ * SYNOPSIS
+ */
+int
+_XcmsTekHVC_CheckModify(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if values in the color specification are valid.
+ * If they are not it modifies the values.
+ * Also brings hue into the range 0.0 <= Hue < 360.0
+ *
+ * RETURNS
+ * 0 if not valid.
+ * 1 if valid.
+ *
+ */
+{
+ int n;
+
+ /* For now only use the TekHVC numbers as inputs */
+ if (pColor->format != XcmsTekHVCFormat) {
+ return(0);
+ }
+
+ if (pColor->spec.TekHVC.V < 0.0) {
+ pColor->spec.TekHVC.V = 0.0 + XMY_DBL_EPSILON;
+ } else if (pColor->spec.TekHVC.V > 100.0) {
+ pColor->spec.TekHVC.V = 100.0 - XMY_DBL_EPSILON;
+ }
+
+ if (pColor->spec.TekHVC.C < 0.0) {
+ pColor->spec.TekHVC.C = 0.0 - XMY_DBL_EPSILON;
+ }
+
+ if (pColor->spec.TekHVC.H < 0.0) {
+ n = -pColor->spec.TekHVC.H / 360.0;
+ pColor->spec.TekHVC.H += (n + 1) * 360.0;
+ if (pColor->spec.TekHVC.H >= 360.0)
+ pColor->spec.TekHVC.H -= 360.0;
+ } else if (pColor->spec.TekHVC.H >= 360.0) {
+ n = pColor->spec.TekHVC.H / 360.0;
+ pColor->spec.TekHVC.H -= n * 360.0;
+ }
+ return(1);
+}
diff --git a/libX11/src/xcms/HVCGcC.c b/libX11/src/xcms/HVCGcC.c
index 6d52eac63..33743dc34 100644
--- a/libX11/src/xcms/HVCGcC.c
+++ b/libX11/src/xcms/HVCGcC.c
@@ -1,149 +1,149 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCGcC.c
- *
- * DESCRIPTION
- * Source for XcmsTekHVCClipC() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCClipC - Reduce the chroma for a hue and value
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsTekHVCClipC (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Reduce the Chroma for a specific hue and value to
- * to bring the given color into the gamut of the
- * specified device. As required of gamut compression
- * functions in Xcms, this routine returns pColor_in_out
- * in XcmsCIEXYZFormat on successful completion.
- *
- * Since this routine works with the value within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsColor *pColor;
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor &&
- FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
- 1, XcmsTekHVCFormat);
- pColor->spec.TekHVC.H = pColor->spec.TekHVC.C = 0.0;
- _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- } else {
- if (pColor->format != XcmsTekHVCFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsTekHVCQueryMaxC(ccc,
- pColor->spec.TekHVC.H,
- pColor->spec.TekHVC.V,
- pColor)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- retval = _XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCGcC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsTekHVCClipC() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCClipC - Reduce the chroma for a hue and value
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsTekHVCClipC (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Reduce the Chroma for a specific hue and value to
+ * to bring the given color into the gamut of the
+ * specified device. As required of gamut compression
+ * functions in Xcms, this routine returns pColor_in_out
+ * in XcmsCIEXYZFormat on successful completion.
+ *
+ * Since this routine works with the value within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsColor *pColor;
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor &&
+ FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
+ 1, XcmsTekHVCFormat);
+ pColor->spec.TekHVC.H = pColor->spec.TekHVC.C = 0.0;
+ _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ } else {
+ if (pColor->format != XcmsTekHVCFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsTekHVCQueryMaxC(ccc,
+ pColor->spec.TekHVC.H,
+ pColor->spec.TekHVC.V,
+ pColor)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/HVCGcV.c b/libX11/src/xcms/HVCGcV.c
index 0752a0724..9998cc43d 100644
--- a/libX11/src/xcms/HVCGcV.c
+++ b/libX11/src/xcms/HVCGcV.c
@@ -1,201 +1,201 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCGcV.c
- *
- * DESCRIPTION
- * Source for XcmsTekHVCClipV() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCClipV - Return the closest value
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsTekHVCClipV (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Return the closest value for a specific hue and chroma.
- * This routine takes any color as input and outputs
- * a CIE XYZ color.
- *
- * Since this routine works with the value within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsColor *pColor;
- XcmsColor hvc_max;
- XcmsCCCRec myCCC;
- Status retval;
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor &&
- FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
- /*
- * GRAY !
- */
- return(XcmsFailure);
- } else {
- /* Convert from CIEXYZ to TekHVC format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* check to make sure we have a valid TekHVC number */
- if (!_XcmsTekHVC_CheckModify (pColor)) {
- return (XcmsFailure);
- }
-
- /* Step 1: compute the maximum value and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&hvc_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, hvc_max.spec.TekHVC.H, &hvc_max,
- (XcmsRGBi *)NULL) == XcmsFailure) {
- return (XcmsFailure);
- }
-
- /* Now check and return the appropriate value */
- if (pColor->spec.TekHVC.C == hvc_max.spec.TekHVC.C) {
- /* When the chroma input is equal to the maximum chroma */
- /* merely return the value for that chroma. */
- pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
- if (!_XcmsTekHVC_CheckModify (pColor)) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- } else if (pColor->spec.TekHVC.C > hvc_max.spec.TekHVC.C) {
- /* When the chroma input is greater than the maximum chroma */
- /* merely return the value and chroma for the given hue. */
- pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
- pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
- return (XcmsFailure);
- } else if (pColor->spec.TekHVC.V < hvc_max.spec.TekHVC.V) {
- /* When the value input is less than the maximum value point */
- /* compute the intersection of the line from 0,0 to max_V, max_C */
- /* using the chroma input. */
- pColor->spec.TekHVC.V = pColor->spec.TekHVC.C *
- hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C;
- if (pColor->spec.TekHVC.V >= hvc_max.spec.TekHVC.V) {
- pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
- pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
- }
- if (!_XcmsTekHVC_CheckModify (pColor)) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- } else {
- /* When the value input is greater than the maximum value point */
- /* use HvcMaxValue to find the maximum value for the given chroma. */
- if (pColor->format != XcmsTekHVCFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsTekHVCQueryMaxV(&myCCC,
- pColor->spec.TekHVC.H,
- pColor->spec.TekHVC.C,
- pColor)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- }
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCGcV.c
+ *
+ * DESCRIPTION
+ * Source for XcmsTekHVCClipV() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCClipV - Return the closest value
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsTekHVCClipV (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Return the closest value for a specific hue and chroma.
+ * This routine takes any color as input and outputs
+ * a CIE XYZ color.
+ *
+ * Since this routine works with the value within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsColor *pColor;
+ XcmsColor hvc_max;
+ XcmsCCCRec myCCC;
+ Status retval;
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor &&
+ FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
+ /*
+ * GRAY !
+ */
+ return(XcmsFailure);
+ } else {
+ /* Convert from CIEXYZ to TekHVC format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* check to make sure we have a valid TekHVC number */
+ if (!_XcmsTekHVC_CheckModify (pColor)) {
+ return (XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&hvc_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, hvc_max.spec.TekHVC.H, &hvc_max,
+ (XcmsRGBi *)NULL) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ /* Now check and return the appropriate value */
+ if (pColor->spec.TekHVC.C == hvc_max.spec.TekHVC.C) {
+ /* When the chroma input is equal to the maximum chroma */
+ /* merely return the value for that chroma. */
+ pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
+ if (!_XcmsTekHVC_CheckModify (pColor)) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ } else if (pColor->spec.TekHVC.C > hvc_max.spec.TekHVC.C) {
+ /* When the chroma input is greater than the maximum chroma */
+ /* merely return the value and chroma for the given hue. */
+ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
+ pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
+ return (XcmsFailure);
+ } else if (pColor->spec.TekHVC.V < hvc_max.spec.TekHVC.V) {
+ /* When the value input is less than the maximum value point */
+ /* compute the intersection of the line from 0,0 to max_V, max_C */
+ /* using the chroma input. */
+ pColor->spec.TekHVC.V = pColor->spec.TekHVC.C *
+ hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C;
+ if (pColor->spec.TekHVC.V >= hvc_max.spec.TekHVC.V) {
+ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
+ pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
+ }
+ if (!_XcmsTekHVC_CheckModify (pColor)) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ } else {
+ /* When the value input is greater than the maximum value point */
+ /* use HvcMaxValue to find the maximum value for the given chroma. */
+ if (pColor->format != XcmsTekHVCFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsTekHVCQueryMaxV(&myCCC,
+ pColor->spec.TekHVC.H,
+ pColor->spec.TekHVC.C,
+ pColor)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ }
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/HVCGcVC.c b/libX11/src/xcms/HVCGcVC.c
index 7ace5f13f..9c6b598f8 100644
--- a/libX11/src/xcms/HVCGcVC.c
+++ b/libX11/src/xcms/HVCGcVC.c
@@ -1,262 +1,262 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCGcVC.c
- *
- * DESCRIPTION
- * Source for XcmsTekHVCClipVC() gamut
- * compression function.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * INTERNALS
- * Internal defines that need NOT be exported to any package or
- * program using this package.
- */
-#define MAXBISECTCOUNT 100
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCClipVC - Return the closest value and chroma
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsTekHVCClipVC (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * This routine will find the closest value and chroma
- * for a specific hue. The color input is converted to
- * HVC format and returned as CIE XYZ format.
- *
- * Since this routine works with the value within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsCCCRec myCCC;
- XcmsColor *pColor;
- XcmsColor hvc_max;
- XcmsRGBi rgb_max;
- int nCount, nMaxCount, nI, nILast;
- XcmsFloat Chroma, Value, bestChroma, bestValue, nT, saveDist, tmpDist;
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white pt */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor &&
- FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
- 1, XcmsTekHVCFormat);
- pColor->spec.TekHVC.H = pColor->spec.TekHVC.C = 0.0;
- _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- } else {
- /* Convert from CIEXYZ to TekHVC format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- if (!_XcmsTekHVC_CheckModify(pColor)) {
- return (XcmsFailure);
- }
-
- /* Step 1: compute the maximum value and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&hvc_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, hvc_max.spec.TekHVC.H, &hvc_max,
- &rgb_max) == XcmsFailure) {
- return (XcmsFailure);
- }
-
- /* Now check and return the appropriate value */
- if (pColor->spec.TekHVC.V == hvc_max.spec.TekHVC.V) {
- /* When the value input is equal to the maximum value */
- /* merely return the chroma for that value. */
- pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- }
-
- if (pColor->spec.TekHVC.V < hvc_max.spec.TekHVC.V) {
- /* return the intersection of the perpindicular line through */
- /* the value and chroma given and the line from 0,0 and hvc_max. */
- Chroma = pColor->spec.TekHVC.C;
- Value = pColor->spec.TekHVC.V;
- pColor->spec.TekHVC.C =
- (Value + (hvc_max.spec.TekHVC.C / hvc_max.spec.TekHVC.V * Chroma)) /
- ((hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C) +
- (hvc_max.spec.TekHVC.C / hvc_max.spec.TekHVC.V));
- if (pColor->spec.TekHVC.C >= hvc_max.spec.TekHVC.C) {
- pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
- pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
- } else {
- pColor->spec.TekHVC.V = pColor->spec.TekHVC.C *
- hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C;
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
-
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return (retval);
- }
-
- /* return the closest point on the upper part of the hue leaf. */
- /* must do a bisection here to compute the delta e. */
- nMaxCount = MAXBISECTCOUNT;
- nI = nMaxCount / 2;
- bestValue = Value = pColor->spec.TekHVC.V;
- bestChroma = Chroma = pColor->spec.TekHVC.C;
- saveDist = (XcmsFloat) XCMS_SQRT ((double) (((Chroma - hvc_max.spec.TekHVC.C) *
- (Chroma - hvc_max.spec.TekHVC.C)) +
- ((Value - hvc_max.spec.TekHVC.V) *
- (Value - hvc_max.spec.TekHVC.V))));
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
- pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
- pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
- pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
- pColor->format = XcmsRGBiFormat;
-
- /* Convert from RGBi to HVC */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
- (Bool *) NULL)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- if (!_XcmsTekHVC_CheckModify(pColor)) {
- return (XcmsFailure);
- }
- tmpDist = (XcmsFloat) XCMS_SQRT ((double)
- (((Chroma - pColor->spec.TekHVC.C) *
- (Chroma - pColor->spec.TekHVC.C)) +
- ((Value - pColor->spec.TekHVC.V) *
- (Value - pColor->spec.TekHVC.V))));
- nILast = nI;
- if (tmpDist > saveDist) {
- nI /= 2;
- } else {
- nI = (nMaxCount + nI) / 2;
- saveDist = tmpDist;
- bestValue = pColor->spec.TekHVC.V;
- bestChroma = pColor->spec.TekHVC.C;
- }
- if (nI == nILast || nI == 0) {
- break;
- }
-
- }
-
- if (bestChroma >= hvc_max.spec.TekHVC.C) {
- pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
- pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
- } else {
- pColor->spec.TekHVC.C = bestChroma;
- pColor->spec.TekHVC.V = bestValue;
- }
- if (!_XcmsTekHVC_CheckModify(pColor)) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
-
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCGcVC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsTekHVCClipVC() gamut
+ * compression function.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * INTERNALS
+ * Internal defines that need NOT be exported to any package or
+ * program using this package.
+ */
+#define MAXBISECTCOUNT 100
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCClipVC - Return the closest value and chroma
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsTekHVCClipVC (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * This routine will find the closest value and chroma
+ * for a specific hue. The color input is converted to
+ * HVC format and returned as CIE XYZ format.
+ *
+ * Since this routine works with the value within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsCCCRec myCCC;
+ XcmsColor *pColor;
+ XcmsColor hvc_max;
+ XcmsRGBi rgb_max;
+ int nCount, nMaxCount, nI, nILast;
+ XcmsFloat Chroma, Value, bestChroma, bestValue, nT, saveDist, tmpDist;
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white pt */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor &&
+ FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
+ 1, XcmsTekHVCFormat);
+ pColor->spec.TekHVC.H = pColor->spec.TekHVC.C = 0.0;
+ _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ } else {
+ /* Convert from CIEXYZ to TekHVC format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ if (!_XcmsTekHVC_CheckModify(pColor)) {
+ return (XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&hvc_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, hvc_max.spec.TekHVC.H, &hvc_max,
+ &rgb_max) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ /* Now check and return the appropriate value */
+ if (pColor->spec.TekHVC.V == hvc_max.spec.TekHVC.V) {
+ /* When the value input is equal to the maximum value */
+ /* merely return the chroma for that value. */
+ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ }
+
+ if (pColor->spec.TekHVC.V < hvc_max.spec.TekHVC.V) {
+ /* return the intersection of the perpindicular line through */
+ /* the value and chroma given and the line from 0,0 and hvc_max. */
+ Chroma = pColor->spec.TekHVC.C;
+ Value = pColor->spec.TekHVC.V;
+ pColor->spec.TekHVC.C =
+ (Value + (hvc_max.spec.TekHVC.C / hvc_max.spec.TekHVC.V * Chroma)) /
+ ((hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C) +
+ (hvc_max.spec.TekHVC.C / hvc_max.spec.TekHVC.V));
+ if (pColor->spec.TekHVC.C >= hvc_max.spec.TekHVC.C) {
+ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
+ pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
+ } else {
+ pColor->spec.TekHVC.V = pColor->spec.TekHVC.C *
+ hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C;
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return (retval);
+ }
+
+ /* return the closest point on the upper part of the hue leaf. */
+ /* must do a bisection here to compute the delta e. */
+ nMaxCount = MAXBISECTCOUNT;
+ nI = nMaxCount / 2;
+ bestValue = Value = pColor->spec.TekHVC.V;
+ bestChroma = Chroma = pColor->spec.TekHVC.C;
+ saveDist = (XcmsFloat) XCMS_SQRT ((double) (((Chroma - hvc_max.spec.TekHVC.C) *
+ (Chroma - hvc_max.spec.TekHVC.C)) +
+ ((Value - hvc_max.spec.TekHVC.V) *
+ (Value - hvc_max.spec.TekHVC.V))));
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
+ pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
+ pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
+ pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
+ pColor->format = XcmsRGBiFormat;
+
+ /* Convert from RGBi to HVC */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
+ (Bool *) NULL)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ if (!_XcmsTekHVC_CheckModify(pColor)) {
+ return (XcmsFailure);
+ }
+ tmpDist = (XcmsFloat) XCMS_SQRT ((double)
+ (((Chroma - pColor->spec.TekHVC.C) *
+ (Chroma - pColor->spec.TekHVC.C)) +
+ ((Value - pColor->spec.TekHVC.V) *
+ (Value - pColor->spec.TekHVC.V))));
+ nILast = nI;
+ if (tmpDist > saveDist) {
+ nI /= 2;
+ } else {
+ nI = (nMaxCount + nI) / 2;
+ saveDist = tmpDist;
+ bestValue = pColor->spec.TekHVC.V;
+ bestChroma = pColor->spec.TekHVC.C;
+ }
+ if (nI == nILast || nI == 0) {
+ break;
+ }
+
+ }
+
+ if (bestChroma >= hvc_max.spec.TekHVC.C) {
+ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
+ pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
+ } else {
+ pColor->spec.TekHVC.C = bestChroma;
+ pColor->spec.TekHVC.V = bestValue;
+ }
+ if (!_XcmsTekHVC_CheckModify(pColor)) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/HVCMnV.c b/libX11/src/xcms/HVCMnV.c
index 10a9f857a..14e569932 100644
--- a/libX11/src/xcms/HVCMnV.c
+++ b/libX11/src/xcms/HVCMnV.c
@@ -1,163 +1,163 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCMnV.c
- *
- * DESCRIPTION
- * Source for XcmsTekHVCQueryMinV gamut boundary querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define EPS 0.001
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCQueryMinV - Compute minimum value for hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCQueryMinV (
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-
-/*
- * DESCRIPTION
- * Return the minimum value for a specific hue, and the
- * corresponding chroma. The input color specification
- * may be in any format, however output is in XcmsTekHVCFormat.
- *
- * Since this routine works with the value within
- * pColor_return intermediate results may be returned
- * even though it may be invalid.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor tmp;
- XcmsColor max_vc;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white pt */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
-
- tmp.spec.TekHVC.H = hue;
- tmp.spec.TekHVC.V = 100.0;
- tmp.spec.TekHVC.C = chroma;
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsTekHVCFormat;
-
-
- /* Check for a valid HVC */
- if (!_XcmsTekHVC_CheckModify (&tmp)) {
- return(XcmsFailure);
- }
-
- /* Step 1: compute the maximum value and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
- if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, max_vc.spec.TekHVC.H, &max_vc,
- (XcmsRGBi *)NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Step 2: find the intersection with the maximum hvc and chroma line. */
- if (tmp.spec.TekHVC.C > max_vc.spec.TekHVC.C + EPS) {
- /* If the chroma is to large then return maximum hvc. */
- tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
- tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
- } else {
- tmp.spec.TekHVC.V = tmp.spec.TekHVC.C *
- max_vc.spec.TekHVC.V / max_vc.spec.TekHVC.C;
- if (tmp.spec.TekHVC.V > max_vc.spec.TekHVC.V) {
- tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
- } else if (tmp.spec.TekHVC.V < 0.0) {
- tmp.spec.TekHVC.V = tmp.spec.TekHVC.C = 0.0;
- }
- }
- if (_XcmsTekHVC_CheckModify (&tmp)) {
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- } else {
- return(XcmsFailure);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCMnV.c
+ *
+ * DESCRIPTION
+ * Source for XcmsTekHVCQueryMinV gamut boundary querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define EPS 0.001
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCQueryMinV - Compute minimum value for hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCQueryMinV (
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+
+/*
+ * DESCRIPTION
+ * Return the minimum value for a specific hue, and the
+ * corresponding chroma. The input color specification
+ * may be in any format, however output is in XcmsTekHVCFormat.
+ *
+ * Since this routine works with the value within
+ * pColor_return intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor tmp;
+ XcmsColor max_vc;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white pt */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
+
+ tmp.spec.TekHVC.H = hue;
+ tmp.spec.TekHVC.V = 100.0;
+ tmp.spec.TekHVC.C = chroma;
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsTekHVCFormat;
+
+
+ /* Check for a valid HVC */
+ if (!_XcmsTekHVC_CheckModify (&tmp)) {
+ return(XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
+ if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, max_vc.spec.TekHVC.H, &max_vc,
+ (XcmsRGBi *)NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Step 2: find the intersection with the maximum hvc and chroma line. */
+ if (tmp.spec.TekHVC.C > max_vc.spec.TekHVC.C + EPS) {
+ /* If the chroma is to large then return maximum hvc. */
+ tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
+ tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
+ } else {
+ tmp.spec.TekHVC.V = tmp.spec.TekHVC.C *
+ max_vc.spec.TekHVC.V / max_vc.spec.TekHVC.C;
+ if (tmp.spec.TekHVC.V > max_vc.spec.TekHVC.V) {
+ tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
+ } else if (tmp.spec.TekHVC.V < 0.0) {
+ tmp.spec.TekHVC.V = tmp.spec.TekHVC.C = 0.0;
+ }
+ }
+ if (_XcmsTekHVC_CheckModify (&tmp)) {
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ } else {
+ return(XcmsFailure);
+ }
+}
diff --git a/libX11/src/xcms/HVCMxC.c b/libX11/src/xcms/HVCMxC.c
index 074844ccc..cded0e8a5 100644
--- a/libX11/src/xcms/HVCMxC.c
+++ b/libX11/src/xcms/HVCMxC.c
@@ -1,243 +1,243 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCMxC.c
- *
- * DESCRIPTION
- * Source for the XcmsTekHVCQueryMaxC() gamut boudary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS 0.001
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCQueryMaxC - Compute the maximum chroma for a hue and value
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCQueryMaxC(
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsFloat value,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum chroma for a specific hue and value.
- * The returned format is in XcmsTekHVCFormat.
- *
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor tmp;
- XcmsColor max_vc;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
- XcmsFloat nValue, savedValue, lastValue, lastChroma, prevValue;
- XcmsFloat maxDist, nT, rFactor;
- XcmsFloat ftmp1, ftmp2;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat; /* inherit screen white Pt */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
-
- tmp.spec.TekHVC.H = hue;
- tmp.spec.TekHVC.V = value;
- tmp.spec.TekHVC.C = 100.0;
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsTekHVCFormat;
-
- /* check to make sure we have a valid TekHVC number */
- if (!_XcmsTekHVC_CheckModify(&tmp)) {
- return(XcmsFailure);
- }
-
- /* Step 1: compute the maximum value and chroma for this hue. */
- memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
- if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, hue, &max_vc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Step 2: If the value is less than the value for the maximum */
- /* value, chroma point then the chroma is on the line */
- /* from max_vc to 0,0. */
- if (value <= max_vc.spec.TekHVC.V) {
- tmp.spec.TekHVC.C = value
- * max_vc.spec.TekHVC.C / max_vc.spec.TekHVC.V;
- if (_XcmsTekHVC_CheckModify (&tmp)) {
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
- } else {
- return(XcmsFailure);
- }
- } else {
- /* must do a bisection here to compute the maximum chroma */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nValue = savedValue = value;
- lastChroma = -1.0;
- lastValue = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- maxDist = 100.0 - max_vc.spec.TekHVC.V;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevValue = lastValue;
- lastValue = tmp.spec.TekHVC.V;
- lastChroma = tmp.spec.TekHVC.C;
- nT = (nValue - max_vc.spec.TekHVC.V) / maxDist * rFactor;
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to HVC */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- if (tmp.spec.TekHVC.V <= savedValue + EPS &&
- tmp.spec.TekHVC.V >= savedValue - EPS) {
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- if (_XcmsTekHVC_CheckModify (&tmp)) {
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
- } else {
- return(XcmsFailure);
- }
- }
- nValue += savedValue - tmp.spec.TekHVC.V;
- if (nValue < max_vc.spec.TekHVC.V) {
- nValue = max_vc.spec.TekHVC.V;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nValue > 100.0) {
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- /* avoid using fabs */
- ftmp1 = lastValue - savedValue;
- if (ftmp1 < 0.0)
- ftmp1 = -ftmp1;
- ftmp2 = tmp.spec.TekHVC.V - savedValue;
- if (ftmp2 < 0.0)
- ftmp2 = -ftmp2;
- if (ftmp1 < ftmp2) {
- tmp.spec.TekHVC.V = lastValue;
- tmp.spec.TekHVC.C = lastChroma;
- }
- if (_XcmsTekHVC_CheckModify (&tmp)) {
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
- } else {
- return(XcmsFailure);
- }
- } else if (tmp.spec.TekHVC.V <= prevValue + EPS &&
- tmp.spec.TekHVC.V >= prevValue - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
- if (nCount >= nMaxCount) {
- /* avoid using fabs */
- ftmp1 = lastValue - savedValue;
- if (ftmp1 < 0.0)
- ftmp1 = -ftmp1;
- ftmp2 = tmp.spec.TekHVC.V - savedValue;
- if (ftmp2 < 0.0)
- ftmp2 = -ftmp2;
- if (ftmp1 < ftmp2) {
- tmp.spec.TekHVC.V = lastValue;
- tmp.spec.TekHVC.C = lastChroma;
- }
- }
- }
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCMxC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsTekHVCQueryMaxC() gamut boudary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS 0.001
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCQueryMaxC - Compute the maximum chroma for a hue and value
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCQueryMaxC(
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsFloat value,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum chroma for a specific hue and value.
+ * The returned format is in XcmsTekHVCFormat.
+ *
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor tmp;
+ XcmsColor max_vc;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+ XcmsFloat nValue, savedValue, lastValue, lastChroma, prevValue;
+ XcmsFloat maxDist, nT, rFactor;
+ XcmsFloat ftmp1, ftmp2;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat; /* inherit screen white Pt */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
+
+ tmp.spec.TekHVC.H = hue;
+ tmp.spec.TekHVC.V = value;
+ tmp.spec.TekHVC.C = 100.0;
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsTekHVCFormat;
+
+ /* check to make sure we have a valid TekHVC number */
+ if (!_XcmsTekHVC_CheckModify(&tmp)) {
+ return(XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+ memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
+ if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, hue, &max_vc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Step 2: If the value is less than the value for the maximum */
+ /* value, chroma point then the chroma is on the line */
+ /* from max_vc to 0,0. */
+ if (value <= max_vc.spec.TekHVC.V) {
+ tmp.spec.TekHVC.C = value
+ * max_vc.spec.TekHVC.C / max_vc.spec.TekHVC.V;
+ if (_XcmsTekHVC_CheckModify (&tmp)) {
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+ } else {
+ return(XcmsFailure);
+ }
+ } else {
+ /* must do a bisection here to compute the maximum chroma */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nValue = savedValue = value;
+ lastChroma = -1.0;
+ lastValue = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ maxDist = 100.0 - max_vc.spec.TekHVC.V;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevValue = lastValue;
+ lastValue = tmp.spec.TekHVC.V;
+ lastChroma = tmp.spec.TekHVC.C;
+ nT = (nValue - max_vc.spec.TekHVC.V) / maxDist * rFactor;
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to HVC */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ if (tmp.spec.TekHVC.V <= savedValue + EPS &&
+ tmp.spec.TekHVC.V >= savedValue - EPS) {
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ if (_XcmsTekHVC_CheckModify (&tmp)) {
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+ } else {
+ return(XcmsFailure);
+ }
+ }
+ nValue += savedValue - tmp.spec.TekHVC.V;
+ if (nValue < max_vc.spec.TekHVC.V) {
+ nValue = max_vc.spec.TekHVC.V;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nValue > 100.0) {
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ /* avoid using fabs */
+ ftmp1 = lastValue - savedValue;
+ if (ftmp1 < 0.0)
+ ftmp1 = -ftmp1;
+ ftmp2 = tmp.spec.TekHVC.V - savedValue;
+ if (ftmp2 < 0.0)
+ ftmp2 = -ftmp2;
+ if (ftmp1 < ftmp2) {
+ tmp.spec.TekHVC.V = lastValue;
+ tmp.spec.TekHVC.C = lastChroma;
+ }
+ if (_XcmsTekHVC_CheckModify (&tmp)) {
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+ } else {
+ return(XcmsFailure);
+ }
+ } else if (tmp.spec.TekHVC.V <= prevValue + EPS &&
+ tmp.spec.TekHVC.V >= prevValue - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+ if (nCount >= nMaxCount) {
+ /* avoid using fabs */
+ ftmp1 = lastValue - savedValue;
+ if (ftmp1 < 0.0)
+ ftmp1 = -ftmp1;
+ ftmp2 = tmp.spec.TekHVC.V - savedValue;
+ if (ftmp2 < 0.0)
+ ftmp2 = -ftmp2;
+ if (ftmp1 < ftmp2) {
+ tmp.spec.TekHVC.V = lastValue;
+ tmp.spec.TekHVC.C = lastChroma;
+ }
+ }
+ }
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/HVCMxV.c b/libX11/src/xcms/HVCMxV.c
index d5ef94ec5..a0da9fa50 100644
--- a/libX11/src/xcms/HVCMxV.c
+++ b/libX11/src/xcms/HVCMxV.c
@@ -1,247 +1,247 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCMxV.c
- *
- * DESCRIPTION
- * Source for the XcmsTekHVCQueryMaxV() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS 0.001
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCQueryMaxV - Compute maximum value for a hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCQueryMaxV(
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum value for a specified hue and chroma.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor tmp;
- XcmsColor max_vc;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
- XcmsFloat nT, nChroma, savedChroma, lastValue, lastChroma, prevChroma;
- XcmsFloat rFactor;
- XcmsFloat ftmp1, ftmp2;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- tmp.spec.TekHVC.H = hue;
- tmp.spec.TekHVC.V = 0.0;
- tmp.spec.TekHVC.C = chroma;
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsTekHVCFormat;
-
- if (!_XcmsTekHVC_CheckModify (&tmp)) {
- return(XcmsFailure);
- }
-
- /* Step 1: compute the maximum value and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
- hue = max_vc.spec.TekHVC.H;
- if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, max_vc.spec.TekHVC.H, &max_vc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- if (max_vc.spec.TekHVC.C < tmp.spec.TekHVC.C) {
- /*
- * If the chroma is greater than the chroma for the
- * maximum value/chroma point then the value is the
- * the value for the maximum value, chroma point.
- * This is an error but it I return the best approximation I can.
- * Thus the inconsistency.
- */
- tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
- tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- } else if (max_vc.spec.TekHVC.C == tmp.spec.TekHVC.C) {
- /*
- * If the chroma is equal to the chroma for the
- * maximum value/chroma point then the value is the
- * the value for the maximum value, chroma point.
- */
- tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- } else {
- /* must do a bisection here to compute the maximum value */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nChroma = savedChroma = tmp.spec.TekHVC.C;
- tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
- tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
- lastChroma = -1.0;
- lastValue = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevChroma = lastChroma;
- lastValue = tmp.spec.TekHVC.V;
- lastChroma = tmp.spec.TekHVC.C;
- nT = (1.0 - (nChroma / max_vc.spec.TekHVC.C)) * rFactor;
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to HVC */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- if (tmp.spec.TekHVC.C <= savedChroma + EPS &&
- tmp.spec.TekHVC.C >= savedChroma - EPS) {
- tmp.spec.TekHVC.H = hue; /* use the saved hue */
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
- nChroma += savedChroma - tmp.spec.TekHVC.C;
- if (nChroma > max_vc.spec.TekHVC.C) {
- nChroma = max_vc.spec.TekHVC.C;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nChroma < 0.0) {
- /* avoid using fabs */
- ftmp1 = lastChroma - savedChroma;
- if (ftmp1 < 0.0)
- ftmp1 = -ftmp1;
- ftmp2 = tmp.spec.TekHVC.C - savedChroma;
- if (ftmp2 < 0.0)
- ftmp2 = -ftmp2;
- if (ftmp1 < ftmp2) {
- tmp.spec.TekHVC.V = lastValue;
- tmp.spec.TekHVC.C = lastChroma;
- }
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- if (!_XcmsTekHVC_CheckModify(&tmp)) {
- return(XcmsFailure);
- }
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- } else if (tmp.spec.TekHVC.C <= prevChroma + EPS &&
- tmp.spec.TekHVC.C >= prevChroma - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
- if (nCount >= nMaxCount) {
- /* avoid using fabs */
- ftmp1 = lastChroma - savedChroma;
- if (ftmp1 < 0.0)
- ftmp1 = -ftmp1;
- ftmp2 = tmp.spec.TekHVC.C - savedChroma;
- if (ftmp2 < 0.0)
- ftmp2 = -ftmp2;
- if (ftmp1 < ftmp2) {
- tmp.spec.TekHVC.V = lastValue;
- tmp.spec.TekHVC.C = lastChroma;
- }
- }
- }
-
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCMxV.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsTekHVCQueryMaxV() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS 0.001
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCQueryMaxV - Compute maximum value for a hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCQueryMaxV(
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum value for a specified hue and chroma.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor tmp;
+ XcmsColor max_vc;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+ XcmsFloat nT, nChroma, savedChroma, lastValue, lastChroma, prevChroma;
+ XcmsFloat rFactor;
+ XcmsFloat ftmp1, ftmp2;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ tmp.spec.TekHVC.H = hue;
+ tmp.spec.TekHVC.V = 0.0;
+ tmp.spec.TekHVC.C = chroma;
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsTekHVCFormat;
+
+ if (!_XcmsTekHVC_CheckModify (&tmp)) {
+ return(XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
+ hue = max_vc.spec.TekHVC.H;
+ if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, max_vc.spec.TekHVC.H, &max_vc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ if (max_vc.spec.TekHVC.C < tmp.spec.TekHVC.C) {
+ /*
+ * If the chroma is greater than the chroma for the
+ * maximum value/chroma point then the value is the
+ * the value for the maximum value, chroma point.
+ * This is an error but it I return the best approximation I can.
+ * Thus the inconsistency.
+ */
+ tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
+ tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ } else if (max_vc.spec.TekHVC.C == tmp.spec.TekHVC.C) {
+ /*
+ * If the chroma is equal to the chroma for the
+ * maximum value/chroma point then the value is the
+ * the value for the maximum value, chroma point.
+ */
+ tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ } else {
+ /* must do a bisection here to compute the maximum value */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nChroma = savedChroma = tmp.spec.TekHVC.C;
+ tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
+ tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
+ lastChroma = -1.0;
+ lastValue = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevChroma = lastChroma;
+ lastValue = tmp.spec.TekHVC.V;
+ lastChroma = tmp.spec.TekHVC.C;
+ nT = (1.0 - (nChroma / max_vc.spec.TekHVC.C)) * rFactor;
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to HVC */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ if (tmp.spec.TekHVC.C <= savedChroma + EPS &&
+ tmp.spec.TekHVC.C >= savedChroma - EPS) {
+ tmp.spec.TekHVC.H = hue; /* use the saved hue */
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+ nChroma += savedChroma - tmp.spec.TekHVC.C;
+ if (nChroma > max_vc.spec.TekHVC.C) {
+ nChroma = max_vc.spec.TekHVC.C;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nChroma < 0.0) {
+ /* avoid using fabs */
+ ftmp1 = lastChroma - savedChroma;
+ if (ftmp1 < 0.0)
+ ftmp1 = -ftmp1;
+ ftmp2 = tmp.spec.TekHVC.C - savedChroma;
+ if (ftmp2 < 0.0)
+ ftmp2 = -ftmp2;
+ if (ftmp1 < ftmp2) {
+ tmp.spec.TekHVC.V = lastValue;
+ tmp.spec.TekHVC.C = lastChroma;
+ }
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ if (!_XcmsTekHVC_CheckModify(&tmp)) {
+ return(XcmsFailure);
+ }
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ } else if (tmp.spec.TekHVC.C <= prevChroma + EPS &&
+ tmp.spec.TekHVC.C >= prevChroma - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+ if (nCount >= nMaxCount) {
+ /* avoid using fabs */
+ ftmp1 = lastChroma - savedChroma;
+ if (ftmp1 < 0.0)
+ ftmp1 = -ftmp1;
+ ftmp2 = tmp.spec.TekHVC.C - savedChroma;
+ if (ftmp2 < 0.0)
+ ftmp2 = -ftmp2;
+ if (ftmp1 < ftmp2) {
+ tmp.spec.TekHVC.V = lastValue;
+ tmp.spec.TekHVC.C = lastChroma;
+ }
+ }
+ }
+
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/HVCMxVC.c b/libX11/src/xcms/HVCMxVC.c
index c7e087866..729ee12bf 100644
--- a/libX11/src/xcms/HVCMxVC.c
+++ b/libX11/src/xcms/HVCMxVC.c
@@ -1,235 +1,235 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCMxVC.c
- *
- * DESCRIPTION
- * Source for the XcmsTekHVCQueryMaxVC() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MIN(x,y) ((x) > (y) ? (y) : (x))
-#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
-#define MAX(x,y) ((x) > (y) ? (x) : (y))
-#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
-#define START_V 40.0
-#define START_C 120.0
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsTekHVCQueryMaxVCRGB - Compute maximum value/chroma.
- *
- * SYNOPSIS
- */
-Status
-_XcmsTekHVCQueryMaxVCRGB(
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return)
-
-/*
- * DESCRIPTION
- * Return the maximum chroma for a specified hue, and the
- * corresponding value. This is computed by a binary search of
- * all possible chromas. An assumption is made that there are
- * no local maxima. Use the unrounded Max Chroma because
- * the difference check can be small.
- *
- * NOTE: No local CCC is used because this is a private
- * routine and all routines that call it are expected
- * to behave properly, i.e. send a local CCC with
- * no white adjust function and no gamut compression
- * function.
- *
- * This routine only accepts hue as input and outputs
- * HVC's and RGBi's.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XCMS_SUCCUSS - Succeeded
- *
- */
-{
- XcmsFloat nSmall, nLarge;
- XcmsColor tmp;
-
- tmp.format = XcmsTekHVCFormat;
- tmp.spec.TekHVC.H = hue;
- /* Use some unreachable color on the given hue */
- tmp.spec.TekHVC.V = START_V;
- tmp.spec.TekHVC.C = START_C;
-
-
- /*
- * Convert from HVC to RGB
- *
- * Note that the CIEXYZ to RGBi conversion routine must stuff the
- * out of bounds RGBi values in tmp when the ccc->gamutCompProc
- * is NULL.
- */
- if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsRGBiFormat, (Bool *) NULL)
- == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
- return (XcmsFailure);
- }
-
- /* Now pick the smallest RGB */
- nSmall = MIN3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Make the smallest RGB equal to zero */
- tmp.spec.RGBi.red -= nSmall;
- tmp.spec.RGBi.green -= nSmall;
- tmp.spec.RGBi.blue -= nSmall;
-
- /* Now pick the largest RGB */
- nLarge = MAX3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Scale the RGB values based on the largest one */
- tmp.spec.RGBi.red /= nLarge;
- tmp.spec.RGBi.green /= nLarge;
- tmp.spec.RGBi.blue /= nLarge;
- tmp.format = XcmsRGBiFormat;
-
- /* If the calling routine wants RGB value give them the ones used. */
- if (pRGB_return) {
- pRGB_return->red = tmp.spec.RGBi.red;
- pRGB_return->green = tmp.spec.RGBi.green;
- pRGB_return->blue = tmp.spec.RGBi.blue;
- }
-
- /* Convert from RGBi to HVC */
- if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat, (Bool *) NULL)
- == XcmsFailure) {
- return (XcmsFailure);
- }
-
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return (XcmsSuccess);
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCQueryMaxVC - Compute maximum value and chroma.
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCQueryMaxVC (
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsColor *pColor_return)
-
-/*
- * DESCRIPTION
- * Return the maximum chroma for the specified hue, and the
- * corresponding value.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
-
- while (hue < 0.0) {
- hue += 360.0;
- }
- while (hue >= 360.0) {
- hue -= 360.0;
- }
-
- return(_XcmsTekHVCQueryMaxVCRGB (&myCCC, hue, pColor_return,
- (XcmsRGBi *)NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCMxVC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsTekHVCQueryMaxVC() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MIN(x,y) ((x) > (y) ? (y) : (x))
+#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
+#define MAX(x,y) ((x) > (y) ? (x) : (y))
+#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
+#define START_V 40.0
+#define START_C 120.0
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsTekHVCQueryMaxVCRGB - Compute maximum value/chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsTekHVCQueryMaxVCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return)
+
+/*
+ * DESCRIPTION
+ * Return the maximum chroma for a specified hue, and the
+ * corresponding value. This is computed by a binary search of
+ * all possible chromas. An assumption is made that there are
+ * no local maxima. Use the unrounded Max Chroma because
+ * the difference check can be small.
+ *
+ * NOTE: No local CCC is used because this is a private
+ * routine and all routines that call it are expected
+ * to behave properly, i.e. send a local CCC with
+ * no white adjust function and no gamut compression
+ * function.
+ *
+ * This routine only accepts hue as input and outputs
+ * HVC's and RGBi's.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XCMS_SUCCUSS - Succeeded
+ *
+ */
+{
+ XcmsFloat nSmall, nLarge;
+ XcmsColor tmp;
+
+ tmp.format = XcmsTekHVCFormat;
+ tmp.spec.TekHVC.H = hue;
+ /* Use some unreachable color on the given hue */
+ tmp.spec.TekHVC.V = START_V;
+ tmp.spec.TekHVC.C = START_C;
+
+
+ /*
+ * Convert from HVC to RGB
+ *
+ * Note that the CIEXYZ to RGBi conversion routine must stuff the
+ * out of bounds RGBi values in tmp when the ccc->gamutCompProc
+ * is NULL.
+ */
+ if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsRGBiFormat, (Bool *) NULL)
+ == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
+ return (XcmsFailure);
+ }
+
+ /* Now pick the smallest RGB */
+ nSmall = MIN3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Make the smallest RGB equal to zero */
+ tmp.spec.RGBi.red -= nSmall;
+ tmp.spec.RGBi.green -= nSmall;
+ tmp.spec.RGBi.blue -= nSmall;
+
+ /* Now pick the largest RGB */
+ nLarge = MAX3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Scale the RGB values based on the largest one */
+ tmp.spec.RGBi.red /= nLarge;
+ tmp.spec.RGBi.green /= nLarge;
+ tmp.spec.RGBi.blue /= nLarge;
+ tmp.format = XcmsRGBiFormat;
+
+ /* If the calling routine wants RGB value give them the ones used. */
+ if (pRGB_return) {
+ pRGB_return->red = tmp.spec.RGBi.red;
+ pRGB_return->green = tmp.spec.RGBi.green;
+ pRGB_return->blue = tmp.spec.RGBi.blue;
+ }
+
+ /* Convert from RGBi to HVC */
+ if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat, (Bool *) NULL)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return (XcmsSuccess);
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCQueryMaxVC - Compute maximum value and chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCQueryMaxVC (
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsColor *pColor_return)
+
+/*
+ * DESCRIPTION
+ * Return the maximum chroma for the specified hue, and the
+ * corresponding value.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
+
+ while (hue < 0.0) {
+ hue += 360.0;
+ }
+ while (hue >= 360.0) {
+ hue -= 360.0;
+ }
+
+ return(_XcmsTekHVCQueryMaxVCRGB (&myCCC, hue, pColor_return,
+ (XcmsRGBi *)NULL));
+}
diff --git a/libX11/src/xcms/HVCMxVs.c b/libX11/src/xcms/HVCMxVs.c
index 540e5c2f4..2bd2bfacc 100644
--- a/libX11/src/xcms/HVCMxVs.c
+++ b/libX11/src/xcms/HVCMxVs.c
@@ -1,161 +1,161 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCMxVs.c
- *
- * DESCRIPTION
- * Source for the XcmsTekHVCQueryMaxVSamples() gamut boundary
- * querying routine.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCQueryMaxVSamples - Compute a set of value/chroma
- * pairs.
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCQueryMaxVSamples(
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsColor *pColor_in_out,
- unsigned int nSamples)
-
-/*
- * DESCRIPTION
- * Return a set of values and chromas for the input Hue.
- * This routine will take any color as input.
- * It returns TekHVC colors.
- *
- * Since this routine works with the value within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor *pHVC;
- XcmsRGBi rgb_saved;
- unsigned short nI;
- XcmsFloat nT;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_in_out == NULL || nSamples == 0) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- /* Step 1: compute the maximum value and chroma for this hue. */
-
-
- /* save the Hue for use later. */
- while (hue < 0.0) {
- hue += 360.0;
- }
- while (hue > 360.0) {
- hue -= 360.0;
- }
- pColor_in_out->spec.TekHVC.H = hue;
- pColor_in_out->format = XcmsTekHVCFormat;
-
- /* Get the maximum value and chroma point for this hue */
- if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, pColor_in_out->spec.TekHVC.H,
- pColor_in_out, (XcmsRGBi *)&rgb_saved) == XcmsFailure) {
- return (XcmsFailure);
- }
-
- /* Step 2: Convert each of the RGBi's to HVC's */
- pHVC = pColor_in_out;
- for (nI = 0; nI < nSamples; nI++, pHVC++) {
- nT = (XcmsFloat) nI / (XcmsFloat) nSamples;
- pHVC->spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- pHVC->spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- pHVC->spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- pHVC->format = XcmsRGBiFormat;
- pHVC->pixel = pColor_in_out->pixel;
- /* convert from RGB to HVC */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, pHVC,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* make sure to return the input hue */
- pHVC->spec.TekHVC.H = hue;
- }
-
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCMxVs.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsTekHVCQueryMaxVSamples() gamut boundary
+ * querying routine.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCQueryMaxVSamples - Compute a set of value/chroma
+ * pairs.
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCQueryMaxVSamples(
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsColor *pColor_in_out,
+ unsigned int nSamples)
+
+/*
+ * DESCRIPTION
+ * Return a set of values and chromas for the input Hue.
+ * This routine will take any color as input.
+ * It returns TekHVC colors.
+ *
+ * Since this routine works with the value within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor *pHVC;
+ XcmsRGBi rgb_saved;
+ unsigned short nI;
+ XcmsFloat nT;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_in_out == NULL || nSamples == 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+
+
+ /* save the Hue for use later. */
+ while (hue < 0.0) {
+ hue += 360.0;
+ }
+ while (hue > 360.0) {
+ hue -= 360.0;
+ }
+ pColor_in_out->spec.TekHVC.H = hue;
+ pColor_in_out->format = XcmsTekHVCFormat;
+
+ /* Get the maximum value and chroma point for this hue */
+ if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, pColor_in_out->spec.TekHVC.H,
+ pColor_in_out, (XcmsRGBi *)&rgb_saved) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ /* Step 2: Convert each of the RGBi's to HVC's */
+ pHVC = pColor_in_out;
+ for (nI = 0; nI < nSamples; nI++, pHVC++) {
+ nT = (XcmsFloat) nI / (XcmsFloat) nSamples;
+ pHVC->spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ pHVC->spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ pHVC->spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ pHVC->format = XcmsRGBiFormat;
+ pHVC->pixel = pColor_in_out->pixel;
+ /* convert from RGB to HVC */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, pHVC,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* make sure to return the input hue */
+ pHVC->spec.TekHVC.H = hue;
+ }
+
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/HVCWpAj.c b/libX11/src/xcms/HVCWpAj.c
index dcefe7535..d77b2b0ef 100644
--- a/libX11/src/xcms/HVCWpAj.c
+++ b/libX11/src/xcms/HVCWpAj.c
@@ -1,114 +1,114 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * DESCRIPTION
- * TekHVCWpAj.c
- *
- * DESCRIPTION
- * This file contains routine(s) that support white point
- * adjustment of color specifications in the TekHVC color
- * space.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCWhiteShiftColors
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCWhiteShiftColors(
- XcmsCCC ccc,
- XcmsColor *pWhitePtFrom,
- XcmsColor *pWhitePtTo,
- XcmsColorFormat destSpecFmt,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Convert color specifications in an array of XcmsColor structures
- * for differences in white points.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded without gamut compression,
- * XcmsSuccessWithCompression if succeeded with
- * gamut compression.
- */
-{
- if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Convert to TekHVC using pWhitePtFrom
- * We can ignore return value for compression because we are converting
- * to XcmsTekHVCFormat which is device-independent, not device-dependent.
- */
- if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
- nColors, XcmsTekHVCFormat, pCompressed) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Convert from TekHVC to destSpecFmt using pWhitePtTo
- */
- return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtTo,
- nColors, destSpecFmt, pCompressed));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * DESCRIPTION
+ * TekHVCWpAj.c
+ *
+ * DESCRIPTION
+ * This file contains routine(s) that support white point
+ * adjustment of color specifications in the TekHVC color
+ * space.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCWhiteShiftColors
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCWhiteShiftColors(
+ XcmsCCC ccc,
+ XcmsColor *pWhitePtFrom,
+ XcmsColor *pWhitePtTo,
+ XcmsColorFormat destSpecFmt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Convert color specifications in an array of XcmsColor structures
+ * for differences in white points.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded without gamut compression,
+ * XcmsSuccessWithCompression if succeeded with
+ * gamut compression.
+ */
+{
+ if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert to TekHVC using pWhitePtFrom
+ * We can ignore return value for compression because we are converting
+ * to XcmsTekHVCFormat which is device-independent, not device-dependent.
+ */
+ if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
+ nColors, XcmsTekHVCFormat, pCompressed) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert from TekHVC to destSpecFmt using pWhitePtTo
+ */
+ return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtTo,
+ nColors, destSpecFmt, pCompressed));
+}
diff --git a/libX11/src/xcms/IdOfPr.c b/libX11/src/xcms/IdOfPr.c
index 3a92e0a11..9da2d3bd2 100644
--- a/libX11/src/xcms/IdOfPr.c
+++ b/libX11/src/xcms/IdOfPr.c
@@ -1,106 +1,106 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsIdOfPr.c
- *
- * DESCRIPTION
- * Source for XcmsFormatOfPrefix()
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/*
- * NAME
- * XcmsFormatOfPrefix
- *
- * SYNOPSIS
- */
-XcmsColorFormat
-XcmsFormatOfPrefix(char *prefix)
-/*
- * DESCRIPTION
- * Returns the Color Space ID for the specified prefix
- * if the color space is found in the Color Conversion
- * Context.
- *
- * RETURNS
- * Color Space ID if found; zero otherwise.
- */
-{
- XcmsColorSpace **papColorSpaces;
- char string_buf[64];
- char *string_lowered;
- int len;
-
- /*
- * While copying prefix to string_lowered, convert to lowercase
- */
- if ((len = strlen(prefix)) >= sizeof(string_buf)) {
- string_lowered = (char *) Xmalloc(len+1);
- } else {
- string_lowered = string_buf;
- }
- _XcmsCopyISOLatin1Lowered(string_lowered, prefix);
-
- /*
- * First try Device-Independent color spaces
- */
- papColorSpaces = _XcmsDIColorSpaces;
- if (papColorSpaces != NULL) {
- while (*papColorSpaces != NULL) {
- if (strcmp((*papColorSpaces)->prefix, string_lowered) == 0) {
- if (len >= sizeof(string_buf)) Xfree(string_lowered);
- return((*papColorSpaces)->id);
- }
- papColorSpaces++;
- }
- }
-
- /*
- * Next try Device-Dependent color spaces
- */
- papColorSpaces = _XcmsDDColorSpaces;
- if (papColorSpaces != NULL) {
- while (*papColorSpaces != NULL) {
- if (strcmp((*papColorSpaces)->prefix, string_lowered) == 0) {
- if (len >= sizeof(string_buf)) Xfree(string_lowered);
- return((*papColorSpaces)->id);
- }
- papColorSpaces++;
- }
- }
-
- if (len >= sizeof(string_buf)) Xfree(string_lowered);
- return(XcmsUndefinedFormat);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsIdOfPr.c
+ *
+ * DESCRIPTION
+ * Source for XcmsFormatOfPrefix()
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/*
+ * NAME
+ * XcmsFormatOfPrefix
+ *
+ * SYNOPSIS
+ */
+XcmsColorFormat
+XcmsFormatOfPrefix(char *prefix)
+/*
+ * DESCRIPTION
+ * Returns the Color Space ID for the specified prefix
+ * if the color space is found in the Color Conversion
+ * Context.
+ *
+ * RETURNS
+ * Color Space ID if found; zero otherwise.
+ */
+{
+ XcmsColorSpace **papColorSpaces;
+ char string_buf[64];
+ char *string_lowered;
+ int len;
+
+ /*
+ * While copying prefix to string_lowered, convert to lowercase
+ */
+ if ((len = strlen(prefix)) >= sizeof(string_buf)) {
+ string_lowered = (char *) Xmalloc(len+1);
+ } else {
+ string_lowered = string_buf;
+ }
+ _XcmsCopyISOLatin1Lowered(string_lowered, prefix);
+
+ /*
+ * First try Device-Independent color spaces
+ */
+ papColorSpaces = _XcmsDIColorSpaces;
+ if (papColorSpaces != NULL) {
+ while (*papColorSpaces != NULL) {
+ if (strcmp((*papColorSpaces)->prefix, string_lowered) == 0) {
+ if (len >= sizeof(string_buf)) Xfree(string_lowered);
+ return((*papColorSpaces)->id);
+ }
+ papColorSpaces++;
+ }
+ }
+
+ /*
+ * Next try Device-Dependent color spaces
+ */
+ papColorSpaces = _XcmsDDColorSpaces;
+ if (papColorSpaces != NULL) {
+ while (*papColorSpaces != NULL) {
+ if (strcmp((*papColorSpaces)->prefix, string_lowered) == 0) {
+ if (len >= sizeof(string_buf)) Xfree(string_lowered);
+ return((*papColorSpaces)->id);
+ }
+ papColorSpaces++;
+ }
+ }
+
+ if (len >= sizeof(string_buf)) Xfree(string_lowered);
+ return(XcmsUndefinedFormat);
+}
diff --git a/libX11/src/xcms/Lab.c b/libX11/src/xcms/Lab.c
index 02c8d3b7c..1101754d4 100644
--- a/libX11/src/xcms/Lab.c
+++ b/libX11/src/xcms/Lab.c
@@ -1,431 +1,431 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * CIELab.c
- *
- * DESCRIPTION
- * This file contains routines that support the CIE L*a*b*
- * color space to include conversions to and from the CIE
- * XYZ space. These conversions are from Principles of
- * Color Technology Second Edition, Fred W. Billmeyer, Jr.
- * and Max Saltzman, John Wiley & Sons, Inc., 1981.
- *
- * Note that the range for L* is 0 to 1.
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include <stdio.h> /* sscanf */
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- * Internal definitions that need NOT be exported to any package
- * or program using this package.
- */
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-#define DIV16BY116 0.137931
-
-/*
- * FORWARD DECLARATIONS
- */
-
-static int CIELab_ParseString(register char *spec, XcmsColor *pColor);
-static Status XcmsCIELab_ValidSpec(XcmsColor *pColor);
-
-
-/*
- * LOCAL VARIABLES
- */
-
-
- /*
- * NULL terminated list of functions applied to get from CIELab to CIEXYZ
- */
-static XcmsConversionProc Fl_CIELab_to_CIEXYZ[] = {
- XcmsCIELabToCIEXYZ,
- NULL
-};
-
- /*
- * NULL terminated list of functions applied to get from CIEXYZ to CIELab
- */
-static XcmsConversionProc Fl_CIEXYZ_to_CIELab[] = {
- XcmsCIEXYZToCIELab,
- NULL
-};
-
-
-/*
- * GLOBALS
- */
- /*
- * CIE Lab Color Space
- */
-XcmsColorSpace XcmsCIELabColorSpace =
- {
- _XcmsCIELab_prefix, /* prefix */
- XcmsCIELabFormat, /* id */
- CIELab_ParseString, /* parseString */
- Fl_CIELab_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_CIELab, /* from_CIEXYZ */
- 1
- };
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIELab_ParseString
- *
- * SYNOPSIS
- */
-static int
-CIELab_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsCIELabFormat.
- * The assumed CIELab string syntax is:
- * CIELab:<L>/<a>/<b>
- * Where L, a, and b are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- * 0 if failed, non-zero otherwise.
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsCIELab_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIELab.L_star,
- &pColor->spec.CIELab.a_star,
- &pColor->spec.CIELab.b_star) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIELab.L_star,
- &pColor->spec.CIELab.a_star,
- &pColor->spec.CIELab.b_star) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsCIELabFormat;
- pColor->pixel = 0;
-
- return(XcmsCIELab_ValidSpec(pColor));
-}
-
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELab_ValidSpec
- *
- * SYNOPSIS
- */
-static Status
-XcmsCIELab_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if color specification valid for CIE L*a*b*.
- *
- * RETURNS
- * XcmsFailure if invalid,
- * XcmsSuccess if valid.
- *
- */
-{
- if (pColor->format != XcmsCIELabFormat
- ||
- (pColor->spec.CIELab.L_star < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIELab.L_star > 100.0 + XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIELabToCIEXYZ - convert CIELab to CIEXYZ
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabToCIEXYZ(
- XcmsCCC ccc,
- XcmsColor *pLab_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIELab format to CIEXYZ format.
- *
- * WARNING: This routine assumes that Yn = 1.0;
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsCIEXYZ XYZ_return;
- XcmsFloat tmpFloat, tmpL;
- XcmsColor whitePt;
- int i;
- XcmsColor *pColor = pColors_in_out;
-
- /*
- * Check arguments
- */
- if (pLab_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEXYZ form, if not, convert it.
- */
- if (pLab_WhitePt->format != XcmsCIEXYZFormat) {
- /* Make a copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pLab_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt,
- (XcmsColor *)NULL, 1, XcmsCIEXYZFormat)) {
- return(XcmsFailure);
- }
- pLab_WhitePt = &whitePt;
- }
-
- /*
- * Make sure it is a white point, i.e., Y == 1.0
- */
- if (pLab_WhitePt->spec.CIEXYZ.Y != 1.0) {
- return (0);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is CIELab */
- if (!XcmsCIELab_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /* Calculate Y: assume that Yn = 1.0 */
- tmpL = (pColor->spec.CIELab.L_star + 16.0) / 116.0;
- XYZ_return.Y = tmpL * tmpL * tmpL;
-
- if (XYZ_return.Y < 0.008856) {
- /* Calculate Y: assume that Yn = 1.0 */
- tmpL = pColor->spec.CIELab.L_star / 9.03292;
-
- /* Calculate X */
- XYZ_return.X = pLab_WhitePt->spec.CIEXYZ.X *
- ((pColor->spec.CIELab.a_star / 3893.5) + tmpL);
- /* Calculate Y */
- XYZ_return.Y = tmpL;
- /* Calculate Z */
- XYZ_return.Z = pLab_WhitePt->spec.CIEXYZ.Z *
- (tmpL - (pColor->spec.CIELab.b_star / 1557.4));
- } else {
- /* Calculate X */
- tmpFloat = tmpL + (pColor->spec.CIELab.a_star / 5.0);
- XYZ_return.X = pLab_WhitePt->spec.CIEXYZ.X * tmpFloat * tmpFloat * tmpFloat;
-
- /* Calculate Z */
- tmpFloat = tmpL - (pColor->spec.CIELab.b_star / 2.0);
- XYZ_return.Z = pLab_WhitePt->spec.CIEXYZ.Z * tmpFloat * tmpFloat * tmpFloat;
- }
-
- memcpy((char *)&pColor->spec.CIEXYZ, (char *)&XYZ_return,
- sizeof(XcmsCIEXYZ));
- pColor->format = XcmsCIEXYZFormat;
- }
-
- return (1);
-}
-
-
-/*
- * NAME
- * XcmsCIEXYZToCIELab - convert CIEXYZ to CIELab
- *
- * SYNOPSIS
- */
-Status
-XcmsCIEXYZToCIELab(
- XcmsCCC ccc,
- XcmsColor *pLab_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIEXYZ format to CIELab format.
- *
- * WARNING: This routine assumes that Yn = 1.0;
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsCIELab Lab_return;
- XcmsFloat fX_Xn, fY_Yn, fZ_Zn;
- XcmsColor whitePt;
- int i;
- XcmsColor *pColor = pColors_in_out;
-
- /*
- * Check arguments
- */
- if (pLab_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEXYZ form, if not, convert it.
- */
- if (pLab_WhitePt->format != XcmsCIEXYZFormat) {
- /* Make a copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pLab_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL,
- 1, XcmsCIEXYZFormat)) {
- return(XcmsFailure);
- }
- pLab_WhitePt = &whitePt;
- }
-
- /*
- * Make sure it is a white point, i.e., Y == 1.0
- */
- if (pLab_WhitePt->spec.CIEXYZ.Y != 1.0) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is CIELab */
- if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /* Calculate L*: assume Yn = 1.0 */
- if (pColor->spec.CIEXYZ.Y < 0.008856) {
- fY_Yn = (0.07787 * pColor->spec.CIEXYZ.Y) + DIV16BY116;
- /* note fY_Yn used to compute Lab_return.a below */
- Lab_return.L_star = 116.0 * (fY_Yn - DIV16BY116);
- } else {
- fY_Yn = (XcmsFloat)XCMS_CUBEROOT(pColor->spec.CIEXYZ.Y);
- /* note fY_Yn used to compute Lab_return.a_star below */
- Lab_return.L_star = (116.0 * fY_Yn) - 16.0;
- }
-
- /* Calculate f(X/Xn) */
- if ((fX_Xn = pColor->spec.CIEXYZ.X / pLab_WhitePt->spec.CIEXYZ.X) < 0.008856) {
- fX_Xn = (0.07787 * fX_Xn) + DIV16BY116;
- } else {
- fX_Xn = (XcmsFloat) XCMS_CUBEROOT(fX_Xn);
- }
-
- /* Calculate f(Z/Zn) */
- if ((fZ_Zn = pColor->spec.CIEXYZ.Z / pLab_WhitePt->spec.CIEXYZ.Z) < 0.008856) {
- fZ_Zn = (0.07787 * fZ_Zn) + DIV16BY116;
- } else {
- fZ_Zn = (XcmsFloat) XCMS_CUBEROOT(fZ_Zn);
- }
-
- Lab_return.a_star = 5.0 * (fX_Xn - fY_Yn);
- Lab_return.b_star = 2.0 * (fY_Yn - fZ_Zn);
-
- memcpy((char *)&pColor->spec.CIELab, (char *)&Lab_return,
- sizeof(XcmsCIELab));
- pColor->format = XcmsCIELabFormat;
- }
-
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * CIELab.c
+ *
+ * DESCRIPTION
+ * This file contains routines that support the CIE L*a*b*
+ * color space to include conversions to and from the CIE
+ * XYZ space. These conversions are from Principles of
+ * Color Technology Second Edition, Fred W. Billmeyer, Jr.
+ * and Max Saltzman, John Wiley & Sons, Inc., 1981.
+ *
+ * Note that the range for L* is 0 to 1.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include <stdio.h> /* sscanf */
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ * Internal definitions that need NOT be exported to any package
+ * or program using this package.
+ */
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+#define DIV16BY116 0.137931
+
+/*
+ * FORWARD DECLARATIONS
+ */
+
+static int CIELab_ParseString(register char *spec, XcmsColor *pColor);
+static Status XcmsCIELab_ValidSpec(XcmsColor *pColor);
+
+
+/*
+ * LOCAL VARIABLES
+ */
+
+
+ /*
+ * NULL terminated list of functions applied to get from CIELab to CIEXYZ
+ */
+static XcmsConversionProc Fl_CIELab_to_CIEXYZ[] = {
+ XcmsCIELabToCIEXYZ,
+ NULL
+};
+
+ /*
+ * NULL terminated list of functions applied to get from CIEXYZ to CIELab
+ */
+static XcmsConversionProc Fl_CIEXYZ_to_CIELab[] = {
+ XcmsCIEXYZToCIELab,
+ NULL
+};
+
+
+/*
+ * GLOBALS
+ */
+ /*
+ * CIE Lab Color Space
+ */
+XcmsColorSpace XcmsCIELabColorSpace =
+ {
+ _XcmsCIELab_prefix, /* prefix */
+ XcmsCIELabFormat, /* id */
+ CIELab_ParseString, /* parseString */
+ Fl_CIELab_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_CIELab, /* from_CIEXYZ */
+ 1
+ };
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIELab_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+CIELab_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsCIELabFormat.
+ * The assumed CIELab string syntax is:
+ * CIELab:<L>/<a>/<b>
+ * Where L, a, and b are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ * 0 if failed, non-zero otherwise.
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsCIELab_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIELab.L_star,
+ &pColor->spec.CIELab.a_star,
+ &pColor->spec.CIELab.b_star) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIELab.L_star,
+ &pColor->spec.CIELab.a_star,
+ &pColor->spec.CIELab.b_star) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsCIELabFormat;
+ pColor->pixel = 0;
+
+ return(XcmsCIELab_ValidSpec(pColor));
+}
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELab_ValidSpec
+ *
+ * SYNOPSIS
+ */
+static Status
+XcmsCIELab_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if color specification valid for CIE L*a*b*.
+ *
+ * RETURNS
+ * XcmsFailure if invalid,
+ * XcmsSuccess if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsCIELabFormat
+ ||
+ (pColor->spec.CIELab.L_star < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIELab.L_star > 100.0 + XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIELabToCIEXYZ - convert CIELab to CIEXYZ
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabToCIEXYZ(
+ XcmsCCC ccc,
+ XcmsColor *pLab_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIELab format to CIEXYZ format.
+ *
+ * WARNING: This routine assumes that Yn = 1.0;
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsCIEXYZ XYZ_return;
+ XcmsFloat tmpFloat, tmpL;
+ XcmsColor whitePt;
+ int i;
+ XcmsColor *pColor = pColors_in_out;
+
+ /*
+ * Check arguments
+ */
+ if (pLab_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEXYZ form, if not, convert it.
+ */
+ if (pLab_WhitePt->format != XcmsCIEXYZFormat) {
+ /* Make a copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pLab_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt,
+ (XcmsColor *)NULL, 1, XcmsCIEXYZFormat)) {
+ return(XcmsFailure);
+ }
+ pLab_WhitePt = &whitePt;
+ }
+
+ /*
+ * Make sure it is a white point, i.e., Y == 1.0
+ */
+ if (pLab_WhitePt->spec.CIEXYZ.Y != 1.0) {
+ return (0);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is CIELab */
+ if (!XcmsCIELab_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /* Calculate Y: assume that Yn = 1.0 */
+ tmpL = (pColor->spec.CIELab.L_star + 16.0) / 116.0;
+ XYZ_return.Y = tmpL * tmpL * tmpL;
+
+ if (XYZ_return.Y < 0.008856) {
+ /* Calculate Y: assume that Yn = 1.0 */
+ tmpL = pColor->spec.CIELab.L_star / 9.03292;
+
+ /* Calculate X */
+ XYZ_return.X = pLab_WhitePt->spec.CIEXYZ.X *
+ ((pColor->spec.CIELab.a_star / 3893.5) + tmpL);
+ /* Calculate Y */
+ XYZ_return.Y = tmpL;
+ /* Calculate Z */
+ XYZ_return.Z = pLab_WhitePt->spec.CIEXYZ.Z *
+ (tmpL - (pColor->spec.CIELab.b_star / 1557.4));
+ } else {
+ /* Calculate X */
+ tmpFloat = tmpL + (pColor->spec.CIELab.a_star / 5.0);
+ XYZ_return.X = pLab_WhitePt->spec.CIEXYZ.X * tmpFloat * tmpFloat * tmpFloat;
+
+ /* Calculate Z */
+ tmpFloat = tmpL - (pColor->spec.CIELab.b_star / 2.0);
+ XYZ_return.Z = pLab_WhitePt->spec.CIEXYZ.Z * tmpFloat * tmpFloat * tmpFloat;
+ }
+
+ memcpy((char *)&pColor->spec.CIEXYZ, (char *)&XYZ_return,
+ sizeof(XcmsCIEXYZ));
+ pColor->format = XcmsCIEXYZFormat;
+ }
+
+ return (1);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEXYZToCIELab - convert CIEXYZ to CIELab
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIEXYZToCIELab(
+ XcmsCCC ccc,
+ XcmsColor *pLab_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIEXYZ format to CIELab format.
+ *
+ * WARNING: This routine assumes that Yn = 1.0;
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsCIELab Lab_return;
+ XcmsFloat fX_Xn, fY_Yn, fZ_Zn;
+ XcmsColor whitePt;
+ int i;
+ XcmsColor *pColor = pColors_in_out;
+
+ /*
+ * Check arguments
+ */
+ if (pLab_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEXYZ form, if not, convert it.
+ */
+ if (pLab_WhitePt->format != XcmsCIEXYZFormat) {
+ /* Make a copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pLab_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL,
+ 1, XcmsCIEXYZFormat)) {
+ return(XcmsFailure);
+ }
+ pLab_WhitePt = &whitePt;
+ }
+
+ /*
+ * Make sure it is a white point, i.e., Y == 1.0
+ */
+ if (pLab_WhitePt->spec.CIEXYZ.Y != 1.0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is CIELab */
+ if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /* Calculate L*: assume Yn = 1.0 */
+ if (pColor->spec.CIEXYZ.Y < 0.008856) {
+ fY_Yn = (0.07787 * pColor->spec.CIEXYZ.Y) + DIV16BY116;
+ /* note fY_Yn used to compute Lab_return.a below */
+ Lab_return.L_star = 116.0 * (fY_Yn - DIV16BY116);
+ } else {
+ fY_Yn = (XcmsFloat)XCMS_CUBEROOT(pColor->spec.CIEXYZ.Y);
+ /* note fY_Yn used to compute Lab_return.a_star below */
+ Lab_return.L_star = (116.0 * fY_Yn) - 16.0;
+ }
+
+ /* Calculate f(X/Xn) */
+ if ((fX_Xn = pColor->spec.CIEXYZ.X / pLab_WhitePt->spec.CIEXYZ.X) < 0.008856) {
+ fX_Xn = (0.07787 * fX_Xn) + DIV16BY116;
+ } else {
+ fX_Xn = (XcmsFloat) XCMS_CUBEROOT(fX_Xn);
+ }
+
+ /* Calculate f(Z/Zn) */
+ if ((fZ_Zn = pColor->spec.CIEXYZ.Z / pLab_WhitePt->spec.CIEXYZ.Z) < 0.008856) {
+ fZ_Zn = (0.07787 * fZ_Zn) + DIV16BY116;
+ } else {
+ fZ_Zn = (XcmsFloat) XCMS_CUBEROOT(fZ_Zn);
+ }
+
+ Lab_return.a_star = 5.0 * (fX_Xn - fY_Yn);
+ Lab_return.b_star = 2.0 * (fY_Yn - fZ_Zn);
+
+ memcpy((char *)&pColor->spec.CIELab, (char *)&Lab_return,
+ sizeof(XcmsCIELab));
+ pColor->format = XcmsCIELabFormat;
+ }
+
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LabGcC.c b/libX11/src/xcms/LabGcC.c
index a5ec9f457..84a20cc83 100644
--- a/libX11/src/xcms/LabGcC.c
+++ b/libX11/src/xcms/LabGcC.c
@@ -1,127 +1,127 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELabGcC.c
- *
- * DESCRIPTION
- * Source for XcmsCIELabClipuv() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabClipab - Reduce the chroma for a hue and L*
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELabClipab (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Reduce the Chroma for a specific hue and chroma to
- * to bring the given color into the gamut of the
- * specified device. As required of gamut compression
- * functions, this routine returns pColor_in_out
- * in XcmsCIEXYZFormat on successful completion.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsColor *pColor;
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < PseudoColor) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIELabFormat);
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- } else {
- if (pColor->format != XcmsCIELabFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIELabFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELabQueryMaxC(ccc,
- degrees(XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star)),
- pColor->spec.CIELab.L_star,
- pColor) == XcmsFailure) {
- return(XcmsFailure);
- }
- retval = _XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELabGcC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELabClipuv() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabClipab - Reduce the chroma for a hue and L*
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELabClipab (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Reduce the Chroma for a specific hue and chroma to
+ * to bring the given color into the gamut of the
+ * specified device. As required of gamut compression
+ * functions, this routine returns pColor_in_out
+ * in XcmsCIEXYZFormat on successful completion.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsColor *pColor;
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < PseudoColor) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIELabFormat);
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ } else {
+ if (pColor->format != XcmsCIELabFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIELabFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELabQueryMaxC(ccc,
+ degrees(XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star)),
+ pColor->spec.CIELab.L_star,
+ pColor) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/LabGcL.c b/libX11/src/xcms/LabGcL.c
index 3038b18a8..169e7ce9f 100644
--- a/libX11/src/xcms/LabGcL.c
+++ b/libX11/src/xcms/LabGcL.c
@@ -1,174 +1,174 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELabGcL.c
- *
- * DESCRIPTION
- * Source for XcmsCIELabClipL() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabClipL - Return the closest L*
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELabClipL (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Return the closest L* for a specific hue and chroma.
- * This routine takes any color as input and outputs
- * a CIE XYZ color.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor *pColor;
- XcmsColor Lab_max;
- XcmsFloat hue, chroma, maxChroma;
- Status retval;
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor) {
- /*
- * GRAY !
- */
- return(XcmsFailure);
- } else {
- /* Convert from CIEXYZ to CIE L*u*v* format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- hue = XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star);
- chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star);
- /* Step 1: compute the maximum L* and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&Lab_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsCIELabQueryMaxLCRGB (&myCCC, hue, &Lab_max,
- (XcmsRGBi *)NULL) == XcmsFailure) {
- return (XcmsFailure);
- }
- maxChroma = XCMS_CIELAB_PMETRIC_CHROMA(Lab_max.spec.CIELab.a_star,
- Lab_max.spec.CIELab.b_star);
-
- /* Now check and return the appropriate L* */
- if (chroma == maxChroma) {
- /* When the chroma input is equal to the maximum chroma */
- /* merely return the L* for that chroma. */
- memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else if (chroma > maxChroma) {
- /* When the chroma input is greater than the maximum chroma */
- /* merely return the L* and chroma for the given hue. */
- memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
- return (XcmsFailure);
- } else if (pColor->spec.CIELab.L_star < Lab_max.spec.CIELab.L_star) {
- /* Find the minimum lightness for the given chroma. */
- if (pColor->format != XcmsCIELabFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELabQueryMinL(&myCCC, degrees(hue), chroma, pColor)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else {
- /* Find the maximum lightness for the given chroma. */
- if (pColor->format != XcmsCIELabFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELabQueryMaxL(&myCCC, degrees(hue), chroma, pColor)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- }
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELabGcL.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELabClipL() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabClipL - Return the closest L*
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELabClipL (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Return the closest L* for a specific hue and chroma.
+ * This routine takes any color as input and outputs
+ * a CIE XYZ color.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor *pColor;
+ XcmsColor Lab_max;
+ XcmsFloat hue, chroma, maxChroma;
+ Status retval;
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor) {
+ /*
+ * GRAY !
+ */
+ return(XcmsFailure);
+ } else {
+ /* Convert from CIEXYZ to CIE L*u*v* format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ hue = XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star);
+ chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star);
+ /* Step 1: compute the maximum L* and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&Lab_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsCIELabQueryMaxLCRGB (&myCCC, hue, &Lab_max,
+ (XcmsRGBi *)NULL) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ maxChroma = XCMS_CIELAB_PMETRIC_CHROMA(Lab_max.spec.CIELab.a_star,
+ Lab_max.spec.CIELab.b_star);
+
+ /* Now check and return the appropriate L* */
+ if (chroma == maxChroma) {
+ /* When the chroma input is equal to the maximum chroma */
+ /* merely return the L* for that chroma. */
+ memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else if (chroma > maxChroma) {
+ /* When the chroma input is greater than the maximum chroma */
+ /* merely return the L* and chroma for the given hue. */
+ memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
+ return (XcmsFailure);
+ } else if (pColor->spec.CIELab.L_star < Lab_max.spec.CIELab.L_star) {
+ /* Find the minimum lightness for the given chroma. */
+ if (pColor->format != XcmsCIELabFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELabQueryMinL(&myCCC, degrees(hue), chroma, pColor)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else {
+ /* Find the maximum lightness for the given chroma. */
+ if (pColor->format != XcmsCIELabFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELabQueryMaxL(&myCCC, degrees(hue), chroma, pColor)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ }
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/LabGcLC.c b/libX11/src/xcms/LabGcLC.c
index 494d34e57..cedaf1229 100644
--- a/libX11/src/xcms/LabGcLC.c
+++ b/libX11/src/xcms/LabGcLC.c
@@ -1,223 +1,223 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELabGcLC.c
- *
- * DESCRIPTION
- * Source for XcmsCIELabClipLab() gamut
- * compression function.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * INTERNALS
- * Internal defines that need NOT be exported to any package or
- * program using this package.
- */
-#define MAXBISECTCOUNT 100
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabClipLab - Return the closest L* and chroma
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELabClipLab (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * This routine will find the closest L* and chroma
- * for a specific hue. The color input is converted to
- * CIE L*u*v* format and returned as CIE XYZ format.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsCCCRec myCCC;
- XcmsColor *pColor;
- XcmsColor Lab_max;
- XcmsFloat hue, chroma, maxChroma;
- XcmsFloat Chroma, bestChroma, Lstar, maxLstar, saveLstar;
- XcmsFloat bestLstar, bestastar, bestbstar;
- XcmsFloat nT, saveDist, tmpDist;
- XcmsRGBi rgb_max;
- int nCount, nMaxCount, nI, nILast;
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIELabFormat);
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- }
-
- /* Convert from CIEXYZ to CIELab format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Step 1: compute the maximum L* and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- saveLstar = pColor->spec.CIELab.L_star;
- hue = XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star);
- chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star);
- memcpy((char *)&Lab_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsCIELabQueryMaxLCRGB (&myCCC, hue, &Lab_max, &rgb_max)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- maxLstar = Lab_max.spec.CIELab.L_star;
-
- /* Now check and return the appropriate L* */
- if (saveLstar == maxLstar) {
- /* When the L* input is equal to the maximum L* */
- /* merely return the maximum Lab point. */
- memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else {
- /* return the closest point on the hue leaf. */
- /* must do a bisection here to compute the delta e. */
- maxChroma = XCMS_CIELAB_PMETRIC_CHROMA(Lab_max.spec.CIELab.a_star,
- Lab_max.spec.CIELab.b_star);
- nMaxCount = MAXBISECTCOUNT;
- nI = nMaxCount / 2;
- bestLstar = Lstar = pColor->spec.CIELab.L_star;
- bestastar = pColor->spec.CIELab.a_star;
- bestbstar = pColor->spec.CIELab.b_star;
- bestChroma = Chroma = chroma;
- saveDist = XCMS_SQRT(((Chroma - maxChroma) * (Chroma - maxChroma)) +
- ((Lstar - maxLstar) * (Lstar - maxLstar)));
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
- if (saveLstar > maxLstar) {
- pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
- pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
- pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
- } else {
- pColor->spec.RGBi.red = rgb_max.red - (rgb_max.red * nT);
- pColor->spec.RGBi.green = rgb_max.green - (rgb_max.green * nT);
- pColor->spec.RGBi.blue = rgb_max.blue - (rgb_max.blue * nT);
- }
- pColor->format = XcmsRGBiFormat;
-
- /* Convert from RGBi to CIE Lab */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
- (Bool *) NULL) == XcmsFailure) {
- return (XcmsFailure);
- }
- chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star);
- tmpDist = XCMS_SQRT(((Chroma - chroma) * (Chroma - chroma)) +
- ((Lstar - pColor->spec.CIELab.L_star) *
- (Lstar - pColor->spec.CIELab.L_star)));
- nILast = nI;
- if (tmpDist > saveDist) {
- nI /= 2;
- } else {
- nI = (nMaxCount + nI) / 2;
- saveDist = tmpDist;
- bestLstar = pColor->spec.CIELab.L_star;
- bestastar = pColor->spec.CIELab.a_star;
- bestbstar = pColor->spec.CIELab.b_star;
- bestChroma = chroma;
- }
- if (nI == nILast || nI == 0) {
- break;
- }
- }
- if (bestChroma >= maxChroma) {
- pColor->spec.CIELab.L_star = maxLstar;
- pColor->spec.CIELab.a_star = Lab_max.spec.CIELab.a_star;
- pColor->spec.CIELab.b_star = Lab_max.spec.CIELab.b_star;
- } else {
- pColor->spec.CIELab.L_star = bestLstar;
- pColor->spec.CIELab.a_star = bestastar;
- pColor->spec.CIELab.b_star = bestbstar;
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
-
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- }
- return(retval);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELabGcLC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELabClipLab() gamut
+ * compression function.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * INTERNALS
+ * Internal defines that need NOT be exported to any package or
+ * program using this package.
+ */
+#define MAXBISECTCOUNT 100
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabClipLab - Return the closest L* and chroma
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELabClipLab (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * This routine will find the closest L* and chroma
+ * for a specific hue. The color input is converted to
+ * CIE L*u*v* format and returned as CIE XYZ format.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsCCCRec myCCC;
+ XcmsColor *pColor;
+ XcmsColor Lab_max;
+ XcmsFloat hue, chroma, maxChroma;
+ XcmsFloat Chroma, bestChroma, Lstar, maxLstar, saveLstar;
+ XcmsFloat bestLstar, bestastar, bestbstar;
+ XcmsFloat nT, saveDist, tmpDist;
+ XcmsRGBi rgb_max;
+ int nCount, nMaxCount, nI, nILast;
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIELabFormat);
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ }
+
+ /* Convert from CIEXYZ to CIELab format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum L* and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ saveLstar = pColor->spec.CIELab.L_star;
+ hue = XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star);
+ chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star);
+ memcpy((char *)&Lab_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsCIELabQueryMaxLCRGB (&myCCC, hue, &Lab_max, &rgb_max)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ maxLstar = Lab_max.spec.CIELab.L_star;
+
+ /* Now check and return the appropriate L* */
+ if (saveLstar == maxLstar) {
+ /* When the L* input is equal to the maximum L* */
+ /* merely return the maximum Lab point. */
+ memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else {
+ /* return the closest point on the hue leaf. */
+ /* must do a bisection here to compute the delta e. */
+ maxChroma = XCMS_CIELAB_PMETRIC_CHROMA(Lab_max.spec.CIELab.a_star,
+ Lab_max.spec.CIELab.b_star);
+ nMaxCount = MAXBISECTCOUNT;
+ nI = nMaxCount / 2;
+ bestLstar = Lstar = pColor->spec.CIELab.L_star;
+ bestastar = pColor->spec.CIELab.a_star;
+ bestbstar = pColor->spec.CIELab.b_star;
+ bestChroma = Chroma = chroma;
+ saveDist = XCMS_SQRT(((Chroma - maxChroma) * (Chroma - maxChroma)) +
+ ((Lstar - maxLstar) * (Lstar - maxLstar)));
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
+ if (saveLstar > maxLstar) {
+ pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
+ pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
+ pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
+ } else {
+ pColor->spec.RGBi.red = rgb_max.red - (rgb_max.red * nT);
+ pColor->spec.RGBi.green = rgb_max.green - (rgb_max.green * nT);
+ pColor->spec.RGBi.blue = rgb_max.blue - (rgb_max.blue * nT);
+ }
+ pColor->format = XcmsRGBiFormat;
+
+ /* Convert from RGBi to CIE Lab */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star);
+ tmpDist = XCMS_SQRT(((Chroma - chroma) * (Chroma - chroma)) +
+ ((Lstar - pColor->spec.CIELab.L_star) *
+ (Lstar - pColor->spec.CIELab.L_star)));
+ nILast = nI;
+ if (tmpDist > saveDist) {
+ nI /= 2;
+ } else {
+ nI = (nMaxCount + nI) / 2;
+ saveDist = tmpDist;
+ bestLstar = pColor->spec.CIELab.L_star;
+ bestastar = pColor->spec.CIELab.a_star;
+ bestbstar = pColor->spec.CIELab.b_star;
+ bestChroma = chroma;
+ }
+ if (nI == nILast || nI == 0) {
+ break;
+ }
+ }
+ if (bestChroma >= maxChroma) {
+ pColor->spec.CIELab.L_star = maxLstar;
+ pColor->spec.CIELab.a_star = Lab_max.spec.CIELab.a_star;
+ pColor->spec.CIELab.b_star = Lab_max.spec.CIELab.b_star;
+ } else {
+ pColor->spec.CIELab.L_star = bestLstar;
+ pColor->spec.CIELab.a_star = bestastar;
+ pColor->spec.CIELab.b_star = bestbstar;
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ }
+ return(retval);
+}
diff --git a/libX11/src/xcms/LabMnL.c b/libX11/src/xcms/LabMnL.c
index 18ff04cd1..2495ba8fb 100644
--- a/libX11/src/xcms/LabMnL.c
+++ b/libX11/src/xcms/LabMnL.c
@@ -1,216 +1,216 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELabMnL.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELabQueryMinL() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_L_STAR (XcmsFloat)40.0
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabQueryMinL - Compute max Lstar for a hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabQueryMinL(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum Lstar for a specified hue_angle and chroma.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor max_lc, tmp, prev;
- XcmsFloat max_chroma, tmp_chroma;
- XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
- XcmsFloat rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELab.L_star = START_L_STAR;
- tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, chroma);
- tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, chroma);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELabFormat;
-
- /* Step 1: Obtain the maximum L_star and chroma for this hue. */
- if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- max_chroma = XCMS_CIELAB_PMETRIC_CHROMA(max_lc.spec.CIELab.a_star,
- max_lc.spec.CIELab.b_star);
-
- if (max_chroma <= chroma) {
- /*
- * If the chroma is greater than the chroma for the
- * maximum L/chroma point then the L_star is the
- * the L_star for the maximum L_star/chroma point.
- * This is an error but I return the best approximation I can.
- * Thus the inconsistency.
- */
- memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
-
- /*
- * If the chroma is equal to the chroma for the
- * maximum L_star/chroma point then the L_star is the
- * the L_star for the maximum L* and chroma point.
- */
- /* if (max_chroma == chroma) {
- * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- * return(XcmsSuccess);
- * }
- */
-
- /* must do a bisection here to compute the maximum L* */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nChroma = chroma;
- tmp_chroma = max_chroma;
- lastChroma = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevChroma = lastChroma;
- lastChroma = tmp_chroma;
- nT = (nChroma - max_chroma) / max_chroma * rFactor;
- memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
- tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
- tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
- tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELab */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- tmp_chroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star,
- tmp.spec.CIELab.b_star);
- if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
- /* Found It! */
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
- nChroma += chroma - tmp_chroma;
- if (nChroma > max_chroma) {
- nChroma = max_chroma;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nChroma < 0.0) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- return(XcmsSuccess);
- } else if (tmp_chroma <= prevChroma + EPS &&
- tmp_chroma >= prevChroma - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
-
- if (nCount >= nMaxCount) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- }
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELabMnL.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELabQueryMinL() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_L_STAR (XcmsFloat)40.0
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabQueryMinL - Compute max Lstar for a hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabQueryMinL(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum Lstar for a specified hue_angle and chroma.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor max_lc, tmp, prev;
+ XcmsFloat max_chroma, tmp_chroma;
+ XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
+ XcmsFloat rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELab.L_star = START_L_STAR;
+ tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, chroma);
+ tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, chroma);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELabFormat;
+
+ /* Step 1: Obtain the maximum L_star and chroma for this hue. */
+ if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ max_chroma = XCMS_CIELAB_PMETRIC_CHROMA(max_lc.spec.CIELab.a_star,
+ max_lc.spec.CIELab.b_star);
+
+ if (max_chroma <= chroma) {
+ /*
+ * If the chroma is greater than the chroma for the
+ * maximum L/chroma point then the L_star is the
+ * the L_star for the maximum L_star/chroma point.
+ * This is an error but I return the best approximation I can.
+ * Thus the inconsistency.
+ */
+ memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+
+ /*
+ * If the chroma is equal to the chroma for the
+ * maximum L_star/chroma point then the L_star is the
+ * the L_star for the maximum L* and chroma point.
+ */
+ /* if (max_chroma == chroma) {
+ * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ * return(XcmsSuccess);
+ * }
+ */
+
+ /* must do a bisection here to compute the maximum L* */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nChroma = chroma;
+ tmp_chroma = max_chroma;
+ lastChroma = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevChroma = lastChroma;
+ lastChroma = tmp_chroma;
+ nT = (nChroma - max_chroma) / max_chroma * rFactor;
+ memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
+ tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
+ tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
+ tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELab */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ tmp_chroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star,
+ tmp.spec.CIELab.b_star);
+ if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
+ /* Found It! */
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+ nChroma += chroma - tmp_chroma;
+ if (nChroma > max_chroma) {
+ nChroma = max_chroma;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nChroma < 0.0) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ return(XcmsSuccess);
+ } else if (tmp_chroma <= prevChroma + EPS &&
+ tmp_chroma >= prevChroma - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+
+ if (nCount >= nMaxCount) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ }
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LabMxC.c b/libX11/src/xcms/LabMxC.c
index fcadd236a..83226783a 100644
--- a/libX11/src/xcms/LabMxC.c
+++ b/libX11/src/xcms/LabMxC.c
@@ -1,203 +1,203 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * CIELabMxC.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELabQueryMaxC() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_CHROMA (XcmsFloat)3.6
-#define TOPL (XcmsFloat)100.0
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabQueryMaxC - max chroma for a hue_angle and L_star
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabQueryMaxC(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsFloat L_star,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum chroma for a specific hue_angle and L_star.
- * The returned format is in XcmsCIELabFormat.
- *
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor tmp;
- XcmsColor max_lc;
- XcmsFloat n_L_star, last_L_star, prev_L_star;
- XcmsFloat hue, lastaStar, lastbStar, /*lastChroma,*/ maxDist, nT, rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC and inherit screen white Pt */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELab.L_star = L_star;
- tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, START_CHROMA);
- tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, START_CHROMA);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELabFormat;
-
- /* Step 1: compute the maximum L_star and chroma for this hue. */
- memcpy((char *)&max_lc, (char *)&tmp, sizeof(XcmsColor));
- if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Step 2: Do a bisection here to compute the maximum chroma
- * Note the differences between when the point to be found
- * is above the maximum LC point and when it is below.
- */
- if (L_star <= max_lc.spec.CIELab.L_star) {
- maxDist = max_lc.spec.CIELab.L_star;
- } else {
- maxDist = TOPL - max_lc.spec.CIELab.L_star;
- }
-
- n_L_star = L_star;
- last_L_star = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prev_L_star = last_L_star;
- last_L_star = tmp.spec.CIELab.L_star;
-/* lastChroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star, */
-/* tmp.spec.CIELab.b_star); */
- lastaStar = tmp.spec.CIELab.a_star;
- lastbStar = tmp.spec.CIELab.b_star;
- nT = (n_L_star - max_lc.spec.CIELab.L_star) / maxDist * rFactor;
- if (nT > 0) {
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- } else {
- tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
- tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
- tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
- }
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELab */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Now check if we've reached the target L_star
- */
- /* printf("result Lstar = %lf\n", tmp.spec.CIELab.L_star); */
- if (tmp.spec.CIELab.L_star <= L_star + EPS &&
- tmp.spec.CIELab.L_star >= L_star - EPS) {
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
- }
- if (nT > 0) {
- n_L_star += ((TOPL - n_L_star) *
- (L_star - tmp.spec.CIELab.L_star)) / (TOPL - L_star);
- } else {
- n_L_star *= L_star / tmp.spec.CIELuv.L_star;
- }
- if (tmp.spec.CIELab.L_star <= prev_L_star + EPS &&
- tmp.spec.CIELab.L_star >= prev_L_star - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- /* printf("rFactor = %lf\n", rFactor); */
- }
- }
- if (XCMS_FABS(last_L_star - L_star) <
- XCMS_FABS(tmp.spec.CIELab.L_star - L_star)) {
- tmp.spec.CIELab.a_star = lastaStar;
- tmp.spec.CIELab.b_star = lastbStar;
-/* tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, lastChroma); */
-/* tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, lastChroma); */
- }
- tmp.spec.CIELab.L_star = L_star;
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * CIELabMxC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELabQueryMaxC() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_CHROMA (XcmsFloat)3.6
+#define TOPL (XcmsFloat)100.0
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabQueryMaxC - max chroma for a hue_angle and L_star
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabQueryMaxC(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsFloat L_star,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum chroma for a specific hue_angle and L_star.
+ * The returned format is in XcmsCIELabFormat.
+ *
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor tmp;
+ XcmsColor max_lc;
+ XcmsFloat n_L_star, last_L_star, prev_L_star;
+ XcmsFloat hue, lastaStar, lastbStar, /*lastChroma,*/ maxDist, nT, rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC and inherit screen white Pt */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELab.L_star = L_star;
+ tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, START_CHROMA);
+ tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, START_CHROMA);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELabFormat;
+
+ /* Step 1: compute the maximum L_star and chroma for this hue. */
+ memcpy((char *)&max_lc, (char *)&tmp, sizeof(XcmsColor));
+ if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Step 2: Do a bisection here to compute the maximum chroma
+ * Note the differences between when the point to be found
+ * is above the maximum LC point and when it is below.
+ */
+ if (L_star <= max_lc.spec.CIELab.L_star) {
+ maxDist = max_lc.spec.CIELab.L_star;
+ } else {
+ maxDist = TOPL - max_lc.spec.CIELab.L_star;
+ }
+
+ n_L_star = L_star;
+ last_L_star = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prev_L_star = last_L_star;
+ last_L_star = tmp.spec.CIELab.L_star;
+/* lastChroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star, */
+/* tmp.spec.CIELab.b_star); */
+ lastaStar = tmp.spec.CIELab.a_star;
+ lastbStar = tmp.spec.CIELab.b_star;
+ nT = (n_L_star - max_lc.spec.CIELab.L_star) / maxDist * rFactor;
+ if (nT > 0) {
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ } else {
+ tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
+ tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
+ tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
+ }
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELab */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now check if we've reached the target L_star
+ */
+ /* printf("result Lstar = %lf\n", tmp.spec.CIELab.L_star); */
+ if (tmp.spec.CIELab.L_star <= L_star + EPS &&
+ tmp.spec.CIELab.L_star >= L_star - EPS) {
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+ }
+ if (nT > 0) {
+ n_L_star += ((TOPL - n_L_star) *
+ (L_star - tmp.spec.CIELab.L_star)) / (TOPL - L_star);
+ } else {
+ n_L_star *= L_star / tmp.spec.CIELuv.L_star;
+ }
+ if (tmp.spec.CIELab.L_star <= prev_L_star + EPS &&
+ tmp.spec.CIELab.L_star >= prev_L_star - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ /* printf("rFactor = %lf\n", rFactor); */
+ }
+ }
+ if (XCMS_FABS(last_L_star - L_star) <
+ XCMS_FABS(tmp.spec.CIELab.L_star - L_star)) {
+ tmp.spec.CIELab.a_star = lastaStar;
+ tmp.spec.CIELab.b_star = lastbStar;
+/* tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, lastChroma); */
+/* tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, lastChroma); */
+ }
+ tmp.spec.CIELab.L_star = L_star;
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LabMxL.c b/libX11/src/xcms/LabMxL.c
index 66ef48481..34a6499a4 100644
--- a/libX11/src/xcms/LabMxL.c
+++ b/libX11/src/xcms/LabMxL.c
@@ -1,216 +1,216 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELabMxL.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELabQueryMaxL() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_L_STAR (XcmsFloat)40
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabQueryMaxL - Compute max Lstar for a hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabQueryMaxL(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue in degrees */
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum Lstar for a specified hue_angle and chroma.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor max_lc, tmp, prev;
- XcmsFloat max_chroma, tmp_chroma;
- XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
- XcmsFloat rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELab.L_star = START_L_STAR;
- tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, chroma);
- tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, chroma);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELabFormat;
-
- /* Step 1: Obtain the maximum L_star and chroma for this hue. */
- if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- max_chroma = XCMS_CIELAB_PMETRIC_CHROMA(max_lc.spec.CIELab.a_star,
- max_lc.spec.CIELab.b_star);
-
- if (max_chroma <= chroma) {
- /*
- * If the chroma is greater than the chroma for the
- * maximum L/chroma point then the L_star is the
- * the L_star for the maximum L_star/chroma point.
- * This is an error but I return the best approximation I can.
- * Thus the inconsistency.
- */
- memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
-
- /*
- * If the chroma is equal to the chroma for the
- * maximum L_star/chroma point then the L_star is the
- * the L_star for the maximum L* and chroma point.
- */
- /* if (max_chroma == chroma) {
- * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- * return(XcmsSuccess);
- * }
- */
-
- /* must do a bisection here to compute the maximum L* */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nChroma = chroma;
- tmp_chroma = max_chroma;
- lastChroma = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevChroma = lastChroma;
- lastChroma = tmp_chroma;
- nT = (1.0 - (nChroma / max_chroma)) * rFactor;
- memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELab */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- tmp_chroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star,
- tmp.spec.CIELab.b_star);
- if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
- /* Found It! */
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
- nChroma += chroma - tmp_chroma;
- if (nChroma > max_chroma) {
- nChroma = max_chroma;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nChroma < 0.0) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- return(XcmsSuccess);
- } else if (tmp_chroma <= prevChroma + EPS &&
- tmp_chroma >= prevChroma - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
-
- if (nCount >= nMaxCount) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- }
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELabMxL.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELabQueryMaxL() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_L_STAR (XcmsFloat)40
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabQueryMaxL - Compute max Lstar for a hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabQueryMaxL(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue in degrees */
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum Lstar for a specified hue_angle and chroma.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor max_lc, tmp, prev;
+ XcmsFloat max_chroma, tmp_chroma;
+ XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
+ XcmsFloat rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELab.L_star = START_L_STAR;
+ tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, chroma);
+ tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, chroma);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELabFormat;
+
+ /* Step 1: Obtain the maximum L_star and chroma for this hue. */
+ if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ max_chroma = XCMS_CIELAB_PMETRIC_CHROMA(max_lc.spec.CIELab.a_star,
+ max_lc.spec.CIELab.b_star);
+
+ if (max_chroma <= chroma) {
+ /*
+ * If the chroma is greater than the chroma for the
+ * maximum L/chroma point then the L_star is the
+ * the L_star for the maximum L_star/chroma point.
+ * This is an error but I return the best approximation I can.
+ * Thus the inconsistency.
+ */
+ memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+
+ /*
+ * If the chroma is equal to the chroma for the
+ * maximum L_star/chroma point then the L_star is the
+ * the L_star for the maximum L* and chroma point.
+ */
+ /* if (max_chroma == chroma) {
+ * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ * return(XcmsSuccess);
+ * }
+ */
+
+ /* must do a bisection here to compute the maximum L* */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nChroma = chroma;
+ tmp_chroma = max_chroma;
+ lastChroma = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevChroma = lastChroma;
+ lastChroma = tmp_chroma;
+ nT = (1.0 - (nChroma / max_chroma)) * rFactor;
+ memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELab */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ tmp_chroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star,
+ tmp.spec.CIELab.b_star);
+ if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
+ /* Found It! */
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+ nChroma += chroma - tmp_chroma;
+ if (nChroma > max_chroma) {
+ nChroma = max_chroma;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nChroma < 0.0) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ return(XcmsSuccess);
+ } else if (tmp_chroma <= prevChroma + EPS &&
+ tmp_chroma >= prevChroma - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+
+ if (nCount >= nMaxCount) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ }
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LabMxLC.c b/libX11/src/xcms/LabMxLC.c
index 8cc089a22..a81c7cfbf 100644
--- a/libX11/src/xcms/LabMxLC.c
+++ b/libX11/src/xcms/LabMxLC.c
@@ -1,218 +1,218 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * CIELabMxVC.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELabQueryMaxLC() gamut boundary
- * querying routine.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- * and
- * Fred W. Billmeyer & Max Saltzman, "Principles of Color
- * Technology", John Wily & Sons, Inc, 1981.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MIN(x,y) ((x) > (y) ? (y) : (x))
-#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
-#define MAX(x,y) ((x) > (y) ? (x) : (y))
-#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
-#define START_LSTAR (XcmsFloat)40.0
-#define START_CHROMA (XcmsFloat)3.6
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsCIELabQueryMaxLCRGB - Compute maximum L* and chroma.
- *
- * SYNOPSIS
- */
-Status
-_XcmsCIELabQueryMaxLCRGB(
- XcmsCCC ccc,
- XcmsFloat hue, /* hue in radians */
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return)
-/*
- * DESCRIPTION
- * Return the maximum psychometric chroma for a specified
- * hue, and the corresponding L*. This is computed
- * by a binary search of all possible chromas. An assumption
- * is made that there are no local maxima. Use the unrounded
- * Max psychometric chroma because the difference check can be
- * small.
- *
- * NOTE: No local CCC is used because this is a private
- * routine and all routines that call it are expected
- * to behave properly, i.e. send a local CCC with
- * no white adjust function and no gamut compression
- * function.
- *
- * This routine only accepts hue in radians as input and outputs
- * Lab and RGBi.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsFloat nSmall, nLarge;
- XcmsColor tmp;
-
- tmp.format = XcmsCIELabFormat;
- /* Use some unreachable color on the given hue */
- tmp.spec.CIELab.L_star = START_LSTAR;
- tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, START_CHROMA);
- tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, START_CHROMA);
- /*
- * Convert from Lab to RGB
- *
- * Note that the CIEXYZ to RGBi conversion routine must stuff the
- * out of bounds RGBi values in tmp when the ccc->gamutCompProc
- * is NULL.
- */
- if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc),
- (unsigned int)1, XcmsRGBiFormat, (Bool *) NULL)
- == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
- return (XcmsFailure);
- }
-
- /* Now pick the smallest RGB */
- nSmall = MIN3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Make the smallest RGB equal to zero */
- tmp.spec.RGBi.red -= nSmall;
- tmp.spec.RGBi.green -= nSmall;
- tmp.spec.RGBi.blue -= nSmall;
-
- /* Now pick the largest RGB */
- nLarge = MAX3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Scale the RGB values based on the largest one */
- tmp.spec.RGBi.red /= nLarge;
- tmp.spec.RGBi.green /= nLarge;
- tmp.spec.RGBi.blue /= nLarge;
- tmp.format = XcmsRGBiFormat;
-
- /* If the calling routine wants RGB value give them the ones used. */
- if (pRGB_return) {
- pRGB_return->red = tmp.spec.RGBi.red;
- pRGB_return->green = tmp.spec.RGBi.green;
- pRGB_return->blue = tmp.spec.RGBi.blue;
- }
-
- /* Convert from RGBi to Lab */
- if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat, (Bool *) NULL)
- == XcmsFailure) {
- return (XcmsFailure);
- }
-
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return (XcmsSuccess);
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabQueryMaxLC - Compute maximum L* and chroma.
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabQueryMaxLC (
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue_angle in degrees */
- XcmsColor *pColor_return)
-
-/*
- * DESCRIPTION
- * Return the point of maximum chroma for the specified
- * hue_angle.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- return(_XcmsCIELabQueryMaxLCRGB (&myCCC, radians(hue_angle), pColor_return,
- (XcmsRGBi *)NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * CIELabMxVC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELabQueryMaxLC() gamut boundary
+ * querying routine.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ * and
+ * Fred W. Billmeyer & Max Saltzman, "Principles of Color
+ * Technology", John Wily & Sons, Inc, 1981.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MIN(x,y) ((x) > (y) ? (y) : (x))
+#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
+#define MAX(x,y) ((x) > (y) ? (x) : (y))
+#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
+#define START_LSTAR (XcmsFloat)40.0
+#define START_CHROMA (XcmsFloat)3.6
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsCIELabQueryMaxLCRGB - Compute maximum L* and chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsCIELabQueryMaxLCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue, /* hue in radians */
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return)
+/*
+ * DESCRIPTION
+ * Return the maximum psychometric chroma for a specified
+ * hue, and the corresponding L*. This is computed
+ * by a binary search of all possible chromas. An assumption
+ * is made that there are no local maxima. Use the unrounded
+ * Max psychometric chroma because the difference check can be
+ * small.
+ *
+ * NOTE: No local CCC is used because this is a private
+ * routine and all routines that call it are expected
+ * to behave properly, i.e. send a local CCC with
+ * no white adjust function and no gamut compression
+ * function.
+ *
+ * This routine only accepts hue in radians as input and outputs
+ * Lab and RGBi.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsFloat nSmall, nLarge;
+ XcmsColor tmp;
+
+ tmp.format = XcmsCIELabFormat;
+ /* Use some unreachable color on the given hue */
+ tmp.spec.CIELab.L_star = START_LSTAR;
+ tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, START_CHROMA);
+ tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, START_CHROMA);
+ /*
+ * Convert from Lab to RGB
+ *
+ * Note that the CIEXYZ to RGBi conversion routine must stuff the
+ * out of bounds RGBi values in tmp when the ccc->gamutCompProc
+ * is NULL.
+ */
+ if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc),
+ (unsigned int)1, XcmsRGBiFormat, (Bool *) NULL)
+ == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
+ return (XcmsFailure);
+ }
+
+ /* Now pick the smallest RGB */
+ nSmall = MIN3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Make the smallest RGB equal to zero */
+ tmp.spec.RGBi.red -= nSmall;
+ tmp.spec.RGBi.green -= nSmall;
+ tmp.spec.RGBi.blue -= nSmall;
+
+ /* Now pick the largest RGB */
+ nLarge = MAX3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Scale the RGB values based on the largest one */
+ tmp.spec.RGBi.red /= nLarge;
+ tmp.spec.RGBi.green /= nLarge;
+ tmp.spec.RGBi.blue /= nLarge;
+ tmp.format = XcmsRGBiFormat;
+
+ /* If the calling routine wants RGB value give them the ones used. */
+ if (pRGB_return) {
+ pRGB_return->red = tmp.spec.RGBi.red;
+ pRGB_return->green = tmp.spec.RGBi.green;
+ pRGB_return->blue = tmp.spec.RGBi.blue;
+ }
+
+ /* Convert from RGBi to Lab */
+ if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat, (Bool *) NULL)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return (XcmsSuccess);
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabQueryMaxLC - Compute maximum L* and chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabQueryMaxLC (
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue_angle in degrees */
+ XcmsColor *pColor_return)
+
+/*
+ * DESCRIPTION
+ * Return the point of maximum chroma for the specified
+ * hue_angle.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ return(_XcmsCIELabQueryMaxLCRGB (&myCCC, radians(hue_angle), pColor_return,
+ (XcmsRGBi *)NULL));
+}
diff --git a/libX11/src/xcms/LabWpAj.c b/libX11/src/xcms/LabWpAj.c
index 0559fdee3..6ec7fff8e 100644
--- a/libX11/src/xcms/LabWpAj.c
+++ b/libX11/src/xcms/LabWpAj.c
@@ -1,97 +1,97 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * CIELabWpAj.c
- *
- * DESCRIPTION
- * This file contains routine(s) that support white point
- * adjustment of color specifications in the CIE L*a*b* color
- * space.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * EXTERNS
- */
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabWhiteShiftColors
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabWhiteShiftColors(
- XcmsCCC ccc,
- XcmsColor *pWhitePtFrom,
- XcmsColor *pWhitePtTo,
- XcmsColorFormat destSpecFmt,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Adjust color specifications in XcmsColor structures for
- * differences in white points.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded without gamut compression,
- * XcmsSuccessWithCompression if succeeded with gamut
- * compression.
- */
-{
- if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
- return(0);
- }
-
- /*
- * Convert to CIELab using pWhitePtFrom
- */
- if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
- nColors, XcmsCIELabFormat, pCompressed) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Convert from CIELab to destSpecFmt using pWhitePtTo
- */
- return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out,
- pWhitePtTo, nColors, destSpecFmt, pCompressed));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * CIELabWpAj.c
+ *
+ * DESCRIPTION
+ * This file contains routine(s) that support white point
+ * adjustment of color specifications in the CIE L*a*b* color
+ * space.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * EXTERNS
+ */
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabWhiteShiftColors
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabWhiteShiftColors(
+ XcmsCCC ccc,
+ XcmsColor *pWhitePtFrom,
+ XcmsColor *pWhitePtTo,
+ XcmsColorFormat destSpecFmt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Adjust color specifications in XcmsColor structures for
+ * differences in white points.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded without gamut compression,
+ * XcmsSuccessWithCompression if succeeded with gamut
+ * compression.
+ */
+{
+ if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
+ return(0);
+ }
+
+ /*
+ * Convert to CIELab using pWhitePtFrom
+ */
+ if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
+ nColors, XcmsCIELabFormat, pCompressed) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert from CIELab to destSpecFmt using pWhitePtTo
+ */
+ return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out,
+ pWhitePtTo, nColors, destSpecFmt, pCompressed));
+}
diff --git a/libX11/src/xcms/Luv.c b/libX11/src/xcms/Luv.c
index 82bc2946a..0b1325252 100644
--- a/libX11/src/xcms/Luv.c
+++ b/libX11/src/xcms/Luv.c
@@ -1,401 +1,401 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * CIELuv.c
- *
- * DESCRIPTION
- * This file contains routines that support the CIE L*u*v*
- * color space to include conversions to and from the CIE
- * XYZ space.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- * and
- * Fred W. Billmeyer & Max Saltzman, "Principles of Color
- * Technology", John Wily & Sons, Inc, 1981.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-#include <stdio.h> /* sscanf */
-
-
-/*
- * FORWARD DECLARATIONS
- */
-
-static int CIELuv_ParseString(register char *spec, XcmsColor *pColor);
-static Status XcmsCIELuv_ValidSpec(XcmsColor *pColor);
-
-/*
- * DEFINES
- * Internal definitions that need NOT be exported to any package
- * or program using this package.
- */
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-
-
-/*
- * LOCAL VARIABLES
- */
-
- /*
- * NULL terminated list of functions applied to get from CIELuv to CIEXYZ
- */
-static XcmsConversionProc Fl_CIELuv_to_CIEXYZ[] = {
- XcmsCIELuvToCIEuvY,
- XcmsCIEuvYToCIEXYZ,
- NULL
-};
-
- /*
- * NULL terminated list of functions applied to get from CIEXYZ to CIELuv
- */
-static XcmsConversionProc Fl_CIEXYZ_to_CIELuv[] = {
- XcmsCIEXYZToCIEuvY,
- XcmsCIEuvYToCIELuv,
- NULL
-};
-
-/*
- * GLOBALS
- */
-
- /*
- * CIE Luv Color Space
- */
-XcmsColorSpace XcmsCIELuvColorSpace =
- {
- _XcmsCIELuv_prefix, /* prefix */
- XcmsCIELuvFormat, /* id */
- CIELuv_ParseString, /* parseString */
- Fl_CIELuv_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_CIELuv, /* from_CIEXYZ */
- 1
- };
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIELuv_ParseString
- *
- * SYNOPSIS
- */
-static int
-CIELuv_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsCIELuvFormat.
- * The assumed CIELuv string syntax is:
- * CIELuv:<L>/<u>/<v>
- * Where L, u, and v are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- * 0 if failed, non-zero otherwise.
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsCIELuv_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIELuv.L_star,
- &pColor->spec.CIELuv.u_star,
- &pColor->spec.CIELuv.v_star) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIELuv.L_star,
- &pColor->spec.CIELuv.u_star,
- &pColor->spec.CIELuv.v_star) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsCIELuvFormat;
- pColor->pixel = 0;
- return(XcmsCIELuv_ValidSpec(pColor));
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuv_ValidSpec
- *
- * SYNOPSIS
- */
-static Status
-XcmsCIELuv_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if color specification valid for CIE L*u*v*.
- *
- * RETURNS
- * XcmsFailure if invalid,
- * XcmsSuccess if valid.
- *
- */
-{
- if (pColor->format != XcmsCIELuvFormat
- ||
- (pColor->spec.CIELuv.L_star < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIELuv.L_star > 100.0 + XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIELuvToCIEuvY - convert CIELuv to CIEuvY
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvToCIEuvY(
- XcmsCCC ccc,
- XcmsColor *pLuv_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIELuv format to CIEuvY format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsColor *pColor = pColors_in_out;
- XcmsColor whitePt;
- XcmsCIEuvY uvY_return;
- XcmsFloat tmpVal;
- register int i;
-
- /*
- * Check arguments
- */
- if (pLuv_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEuvY form
- */
- if (pLuv_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pLuv_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL,
- 1, XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- pLuv_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (pLuv_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is CIELuv and is valid */
- if (!XcmsCIELuv_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- if (pColor->spec.CIELuv.L_star < 7.99953624) {
- uvY_return.Y = pColor->spec.CIELuv.L_star / 903.29;
- } else {
- tmpVal = (pColor->spec.CIELuv.L_star + 16.0) / 116.0;
- uvY_return.Y = tmpVal * tmpVal * tmpVal; /* tmpVal ** 3 */
- }
-
-
-
- if (pColor->spec.CIELuv.L_star == 0.0) {
- uvY_return.u_prime = pLuv_WhitePt->spec.CIEuvY.u_prime;
- uvY_return.v_prime = pLuv_WhitePt->spec.CIEuvY.v_prime;
- } else {
- tmpVal = 13.0 * (pColor->spec.CIELuv.L_star / 100.0);
- uvY_return.u_prime = pColor->spec.CIELuv.u_star/tmpVal +
- pLuv_WhitePt->spec.CIEuvY.u_prime;
- uvY_return.v_prime = pColor->spec.CIELuv.v_star/tmpVal +
- pLuv_WhitePt->spec.CIEuvY.v_prime;
- }
- /* Copy result to pColor */
- memcpy((char *)&pColor->spec, (char *)&uvY_return, sizeof(XcmsCIEuvY));
-
- /* Identify that the format is now CIEuvY */
- pColor->format = XcmsCIEuvYFormat;
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIEuvYToCIELuv - convert CIEuvY to CIELuv
- *
- * SYNOPSIS
- */
-Status
-XcmsCIEuvYToCIELuv(
- XcmsCCC ccc,
- XcmsColor *pLuv_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIEuvY format to CIELab format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsColor *pColor = pColors_in_out;
- XcmsColor whitePt;
- XcmsCIELuv Luv_return;
- XcmsFloat tmpVal;
- register int i;
-
- /*
- * Check arguments
- */
- if (pLuv_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEuvY form
- */
- if (pLuv_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pLuv_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt,
- (XcmsColor *)NULL, 1, XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- pLuv_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (pLuv_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- if (!_XcmsCIEuvY_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /* Now convert the uvY to Luv */
- Luv_return.L_star =
- (pColor->spec.CIEuvY.Y < 0.008856)
- ?
- (pColor->spec.CIEuvY.Y * 903.29)
- :
- ((XcmsFloat)(XCMS_CUBEROOT(pColor->spec.CIEuvY.Y) * 116.0) - 16.0);
- tmpVal = 13.0 * (Luv_return.L_star / 100.0);
- Luv_return.u_star = tmpVal *
- (pColor->spec.CIEuvY.u_prime - pLuv_WhitePt->spec.CIEuvY.u_prime);
- Luv_return.v_star = tmpVal *
- (pColor->spec.CIEuvY.v_prime - pLuv_WhitePt->spec.CIEuvY.v_prime);
-
- /* Copy result to pColor */
- memcpy((char *)&pColor->spec, (char *)&Luv_return, sizeof(XcmsCIELuv));
-
- /* Identify that the format is now CIEuvY */
- pColor->format = XcmsCIELuvFormat;
- }
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * CIELuv.c
+ *
+ * DESCRIPTION
+ * This file contains routines that support the CIE L*u*v*
+ * color space to include conversions to and from the CIE
+ * XYZ space.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ * and
+ * Fred W. Billmeyer & Max Saltzman, "Principles of Color
+ * Technology", John Wily & Sons, Inc, 1981.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+#include <stdio.h> /* sscanf */
+
+
+/*
+ * FORWARD DECLARATIONS
+ */
+
+static int CIELuv_ParseString(register char *spec, XcmsColor *pColor);
+static Status XcmsCIELuv_ValidSpec(XcmsColor *pColor);
+
+/*
+ * DEFINES
+ * Internal definitions that need NOT be exported to any package
+ * or program using this package.
+ */
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+
+
+/*
+ * LOCAL VARIABLES
+ */
+
+ /*
+ * NULL terminated list of functions applied to get from CIELuv to CIEXYZ
+ */
+static XcmsConversionProc Fl_CIELuv_to_CIEXYZ[] = {
+ XcmsCIELuvToCIEuvY,
+ XcmsCIEuvYToCIEXYZ,
+ NULL
+};
+
+ /*
+ * NULL terminated list of functions applied to get from CIEXYZ to CIELuv
+ */
+static XcmsConversionProc Fl_CIEXYZ_to_CIELuv[] = {
+ XcmsCIEXYZToCIEuvY,
+ XcmsCIEuvYToCIELuv,
+ NULL
+};
+
+/*
+ * GLOBALS
+ */
+
+ /*
+ * CIE Luv Color Space
+ */
+XcmsColorSpace XcmsCIELuvColorSpace =
+ {
+ _XcmsCIELuv_prefix, /* prefix */
+ XcmsCIELuvFormat, /* id */
+ CIELuv_ParseString, /* parseString */
+ Fl_CIELuv_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_CIELuv, /* from_CIEXYZ */
+ 1
+ };
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIELuv_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+CIELuv_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsCIELuvFormat.
+ * The assumed CIELuv string syntax is:
+ * CIELuv:<L>/<u>/<v>
+ * Where L, u, and v are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ * 0 if failed, non-zero otherwise.
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsCIELuv_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIELuv.L_star,
+ &pColor->spec.CIELuv.u_star,
+ &pColor->spec.CIELuv.v_star) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIELuv.L_star,
+ &pColor->spec.CIELuv.u_star,
+ &pColor->spec.CIELuv.v_star) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsCIELuvFormat;
+ pColor->pixel = 0;
+ return(XcmsCIELuv_ValidSpec(pColor));
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuv_ValidSpec
+ *
+ * SYNOPSIS
+ */
+static Status
+XcmsCIELuv_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if color specification valid for CIE L*u*v*.
+ *
+ * RETURNS
+ * XcmsFailure if invalid,
+ * XcmsSuccess if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsCIELuvFormat
+ ||
+ (pColor->spec.CIELuv.L_star < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIELuv.L_star > 100.0 + XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIELuvToCIEuvY - convert CIELuv to CIEuvY
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvToCIEuvY(
+ XcmsCCC ccc,
+ XcmsColor *pLuv_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIELuv format to CIEuvY format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsColor *pColor = pColors_in_out;
+ XcmsColor whitePt;
+ XcmsCIEuvY uvY_return;
+ XcmsFloat tmpVal;
+ register int i;
+
+ /*
+ * Check arguments
+ */
+ if (pLuv_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (pLuv_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pLuv_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL,
+ 1, XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ pLuv_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (pLuv_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is CIELuv and is valid */
+ if (!XcmsCIELuv_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ if (pColor->spec.CIELuv.L_star < 7.99953624) {
+ uvY_return.Y = pColor->spec.CIELuv.L_star / 903.29;
+ } else {
+ tmpVal = (pColor->spec.CIELuv.L_star + 16.0) / 116.0;
+ uvY_return.Y = tmpVal * tmpVal * tmpVal; /* tmpVal ** 3 */
+ }
+
+
+
+ if (pColor->spec.CIELuv.L_star == 0.0) {
+ uvY_return.u_prime = pLuv_WhitePt->spec.CIEuvY.u_prime;
+ uvY_return.v_prime = pLuv_WhitePt->spec.CIEuvY.v_prime;
+ } else {
+ tmpVal = 13.0 * (pColor->spec.CIELuv.L_star / 100.0);
+ uvY_return.u_prime = pColor->spec.CIELuv.u_star/tmpVal +
+ pLuv_WhitePt->spec.CIEuvY.u_prime;
+ uvY_return.v_prime = pColor->spec.CIELuv.v_star/tmpVal +
+ pLuv_WhitePt->spec.CIEuvY.v_prime;
+ }
+ /* Copy result to pColor */
+ memcpy((char *)&pColor->spec, (char *)&uvY_return, sizeof(XcmsCIEuvY));
+
+ /* Identify that the format is now CIEuvY */
+ pColor->format = XcmsCIEuvYFormat;
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEuvYToCIELuv - convert CIEuvY to CIELuv
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIEuvYToCIELuv(
+ XcmsCCC ccc,
+ XcmsColor *pLuv_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIEuvY format to CIELab format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsColor *pColor = pColors_in_out;
+ XcmsColor whitePt;
+ XcmsCIELuv Luv_return;
+ XcmsFloat tmpVal;
+ register int i;
+
+ /*
+ * Check arguments
+ */
+ if (pLuv_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (pLuv_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pLuv_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt,
+ (XcmsColor *)NULL, 1, XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ pLuv_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (pLuv_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ if (!_XcmsCIEuvY_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /* Now convert the uvY to Luv */
+ Luv_return.L_star =
+ (pColor->spec.CIEuvY.Y < 0.008856)
+ ?
+ (pColor->spec.CIEuvY.Y * 903.29)
+ :
+ ((XcmsFloat)(XCMS_CUBEROOT(pColor->spec.CIEuvY.Y) * 116.0) - 16.0);
+ tmpVal = 13.0 * (Luv_return.L_star / 100.0);
+ Luv_return.u_star = tmpVal *
+ (pColor->spec.CIEuvY.u_prime - pLuv_WhitePt->spec.CIEuvY.u_prime);
+ Luv_return.v_star = tmpVal *
+ (pColor->spec.CIEuvY.v_prime - pLuv_WhitePt->spec.CIEuvY.v_prime);
+
+ /* Copy result to pColor */
+ memcpy((char *)&pColor->spec, (char *)&Luv_return, sizeof(XcmsCIELuv));
+
+ /* Identify that the format is now CIEuvY */
+ pColor->format = XcmsCIELuvFormat;
+ }
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LuvGcC.c b/libX11/src/xcms/LuvGcC.c
index cadf4a8b2..c760f0fbb 100644
--- a/libX11/src/xcms/LuvGcC.c
+++ b/libX11/src/xcms/LuvGcC.c
@@ -1,127 +1,127 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELuvGcC.c
- *
- * DESCRIPTION
- * Source for XcmsCIELuvClipuv() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvClipuv - Reduce the chroma for a hue and L*
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELuvClipuv (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Reduce the Chroma for a specific hue and chroma to
- * to bring the given color into the gamut of the
- * specified device. As required of gamut compression
- * functions, this routine returns pColor_in_out
- * in XcmsCIEXYZFormat on successful completion.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsColor *pColor;
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < PseudoColor) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIELuvFormat);
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- } else {
- if (pColor->format != XcmsCIELuvFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIELuvFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELuvQueryMaxC(ccc,
- degrees(XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star)),
- pColor->spec.CIELuv.L_star,
- pColor) == XcmsFailure) {
- return(XcmsFailure);
- }
- retval = _XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELuvGcC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELuvClipuv() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvClipuv - Reduce the chroma for a hue and L*
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELuvClipuv (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Reduce the Chroma for a specific hue and chroma to
+ * to bring the given color into the gamut of the
+ * specified device. As required of gamut compression
+ * functions, this routine returns pColor_in_out
+ * in XcmsCIEXYZFormat on successful completion.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsColor *pColor;
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < PseudoColor) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIELuvFormat);
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ } else {
+ if (pColor->format != XcmsCIELuvFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIELuvFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELuvQueryMaxC(ccc,
+ degrees(XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star)),
+ pColor->spec.CIELuv.L_star,
+ pColor) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/LuvGcL.c b/libX11/src/xcms/LuvGcL.c
index f5b6d99e4..b6305eae1 100644
--- a/libX11/src/xcms/LuvGcL.c
+++ b/libX11/src/xcms/LuvGcL.c
@@ -1,174 +1,174 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELuvGcL.c
- *
- * DESCRIPTION
- * Source for XcmsCIELuvClipL() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvClipL - Return the closest L*
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELuvClipL (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Return the closest L* for a specific hue and chroma.
- * This routine takes any color as input and outputs
- * a CIE XYZ color.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor *pColor;
- XcmsColor Luv_max;
- XcmsFloat hue, chroma, maxChroma;
- Status retval;
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor) {
- /*
- * GRAY !
- */
- return(XcmsFailure);
- } else {
- /* Convert from CIEXYZ to CIE L*u*v* format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- hue = XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star);
- chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star);
- /* Step 1: compute the maximum L* and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&Luv_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsCIELuvQueryMaxLCRGB (&myCCC, hue, &Luv_max,
- (XcmsRGBi *)NULL) == XcmsFailure) {
- return (XcmsFailure);
- }
- maxChroma = XCMS_CIELUV_PMETRIC_CHROMA(Luv_max.spec.CIELuv.u_star,
- Luv_max.spec.CIELuv.v_star);
-
- /* Now check and return the appropriate L* */
- if (chroma == maxChroma) {
- /* When the chroma input is equal to the maximum chroma */
- /* merely return the L* for that chroma. */
- memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else if (chroma > maxChroma) {
- /* When the chroma input is greater than the maximum chroma */
- /* merely return the L* and chroma for the given hue. */
- memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
- return (XcmsFailure);
- } else if (pColor->spec.CIELuv.L_star < Luv_max.spec.CIELuv.L_star) {
- /* Find the minimum lightness for the given chroma. */
- if (pColor->format != XcmsCIELuvFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELuvQueryMinL(&myCCC, degrees(hue), chroma, pColor)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else {
- /* Find the maximum lightness for the given chroma. */
- if (pColor->format != XcmsCIELuvFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELuvQueryMaxL(&myCCC, degrees(hue), chroma, pColor)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- }
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELuvGcL.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELuvClipL() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvClipL - Return the closest L*
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELuvClipL (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Return the closest L* for a specific hue and chroma.
+ * This routine takes any color as input and outputs
+ * a CIE XYZ color.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor *pColor;
+ XcmsColor Luv_max;
+ XcmsFloat hue, chroma, maxChroma;
+ Status retval;
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor) {
+ /*
+ * GRAY !
+ */
+ return(XcmsFailure);
+ } else {
+ /* Convert from CIEXYZ to CIE L*u*v* format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ hue = XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star);
+ chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star);
+ /* Step 1: compute the maximum L* and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&Luv_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsCIELuvQueryMaxLCRGB (&myCCC, hue, &Luv_max,
+ (XcmsRGBi *)NULL) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ maxChroma = XCMS_CIELUV_PMETRIC_CHROMA(Luv_max.spec.CIELuv.u_star,
+ Luv_max.spec.CIELuv.v_star);
+
+ /* Now check and return the appropriate L* */
+ if (chroma == maxChroma) {
+ /* When the chroma input is equal to the maximum chroma */
+ /* merely return the L* for that chroma. */
+ memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else if (chroma > maxChroma) {
+ /* When the chroma input is greater than the maximum chroma */
+ /* merely return the L* and chroma for the given hue. */
+ memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
+ return (XcmsFailure);
+ } else if (pColor->spec.CIELuv.L_star < Luv_max.spec.CIELuv.L_star) {
+ /* Find the minimum lightness for the given chroma. */
+ if (pColor->format != XcmsCIELuvFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELuvQueryMinL(&myCCC, degrees(hue), chroma, pColor)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else {
+ /* Find the maximum lightness for the given chroma. */
+ if (pColor->format != XcmsCIELuvFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELuvQueryMaxL(&myCCC, degrees(hue), chroma, pColor)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ }
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/LuvGcLC.c b/libX11/src/xcms/LuvGcLC.c
index a9f8cbaf1..03da90ff4 100644
--- a/libX11/src/xcms/LuvGcLC.c
+++ b/libX11/src/xcms/LuvGcLC.c
@@ -1,223 +1,223 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELuvGcLC.c
- *
- * DESCRIPTION
- * Source for XcmsCIELuvClipLuv() gamut
- * compression function.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * INTERNALS
- * Internal defines that need NOT be exported to any package or
- * program using this package.
- */
-#define MAXBISECTCOUNT 100
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvClipLuv - Return the closest L* and chroma
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELuvClipLuv (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * This routine will find the closest L* and chroma
- * for a specific hue. The color input is converted to
- * CIE L*u*v* format and returned as CIE XYZ format.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsCCCRec myCCC;
- XcmsColor *pColor;
- XcmsColor Luv_max;
- XcmsFloat hue, chroma, maxChroma;
- XcmsFloat Chroma, bestChroma, Lstar, maxLstar, saveLstar;
- XcmsFloat bestLstar, bestustar, bestvstar;
- XcmsFloat nT, saveDist, tmpDist;
- XcmsRGBi rgb_max;
- int nCount, nMaxCount, nI, nILast;
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIELuvFormat);
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- }
-
- /* Convert from CIEXYZ to CIELuv format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Step 1: compute the maximum L* and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- saveLstar = pColor->spec.CIELuv.L_star;
- hue = XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star);
- chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star);
- memcpy((char *)&Luv_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsCIELuvQueryMaxLCRGB (&myCCC, hue, &Luv_max, &rgb_max)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- maxLstar = Luv_max.spec.CIELuv.L_star;
-
- /* Now check and return the appropriate L* */
- if (saveLstar == maxLstar) {
- /* When the L* input is equal to the maximum L* */
- /* merely return the maximum Luv point. */
- memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else {
- /* return the closest point on the hue leaf. */
- /* must do a bisection here to compute the delta e. */
- maxChroma = XCMS_CIELUV_PMETRIC_CHROMA(Luv_max.spec.CIELuv.u_star,
- Luv_max.spec.CIELuv.v_star);
- nMaxCount = MAXBISECTCOUNT;
- nI = nMaxCount / 2;
- bestLstar = Lstar = pColor->spec.CIELuv.L_star;
- bestustar = pColor->spec.CIELuv.u_star;
- bestvstar = pColor->spec.CIELuv.v_star;
- bestChroma = Chroma = chroma;
- saveDist = XCMS_SQRT(((Chroma - maxChroma) * (Chroma - maxChroma)) +
- ((Lstar - maxLstar) * (Lstar - maxLstar)));
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
- if (saveLstar > maxLstar) {
- pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
- pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
- pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
- } else {
- pColor->spec.RGBi.red = rgb_max.red - (rgb_max.red * nT);
- pColor->spec.RGBi.green = rgb_max.green - (rgb_max.green * nT);
- pColor->spec.RGBi.blue = rgb_max.blue - (rgb_max.blue * nT);
- }
- pColor->format = XcmsRGBiFormat;
-
- /* Convert from RGBi to CIE Luv */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
- (Bool *) NULL) == XcmsFailure) {
- return (XcmsFailure);
- }
- chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star);
- tmpDist = XCMS_SQRT(((Chroma - chroma) * (Chroma - chroma)) +
- ((Lstar - pColor->spec.CIELuv.L_star) *
- (Lstar - pColor->spec.CIELuv.L_star)));
- nILast = nI;
- if (tmpDist > saveDist) {
- nI /= 2;
- } else {
- nI = (nMaxCount + nI) / 2;
- saveDist = tmpDist;
- bestLstar = pColor->spec.CIELuv.L_star;
- bestustar = pColor->spec.CIELuv.u_star;
- bestvstar = pColor->spec.CIELuv.v_star;
- bestChroma = chroma;
- }
- if (nI == nILast || nI == 0) {
- break;
- }
- }
- if (bestChroma >= maxChroma) {
- pColor->spec.CIELuv.L_star = maxLstar;
- pColor->spec.CIELuv.u_star = Luv_max.spec.CIELuv.u_star;
- pColor->spec.CIELuv.v_star = Luv_max.spec.CIELuv.v_star;
- } else {
- pColor->spec.CIELuv.L_star = bestLstar;
- pColor->spec.CIELuv.u_star = bestustar;
- pColor->spec.CIELuv.v_star = bestvstar;
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
-
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- }
- return(retval);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELuvGcLC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELuvClipLuv() gamut
+ * compression function.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * INTERNALS
+ * Internal defines that need NOT be exported to any package or
+ * program using this package.
+ */
+#define MAXBISECTCOUNT 100
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvClipLuv - Return the closest L* and chroma
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELuvClipLuv (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * This routine will find the closest L* and chroma
+ * for a specific hue. The color input is converted to
+ * CIE L*u*v* format and returned as CIE XYZ format.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsCCCRec myCCC;
+ XcmsColor *pColor;
+ XcmsColor Luv_max;
+ XcmsFloat hue, chroma, maxChroma;
+ XcmsFloat Chroma, bestChroma, Lstar, maxLstar, saveLstar;
+ XcmsFloat bestLstar, bestustar, bestvstar;
+ XcmsFloat nT, saveDist, tmpDist;
+ XcmsRGBi rgb_max;
+ int nCount, nMaxCount, nI, nILast;
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIELuvFormat);
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ }
+
+ /* Convert from CIEXYZ to CIELuv format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum L* and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ saveLstar = pColor->spec.CIELuv.L_star;
+ hue = XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star);
+ chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star);
+ memcpy((char *)&Luv_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsCIELuvQueryMaxLCRGB (&myCCC, hue, &Luv_max, &rgb_max)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ maxLstar = Luv_max.spec.CIELuv.L_star;
+
+ /* Now check and return the appropriate L* */
+ if (saveLstar == maxLstar) {
+ /* When the L* input is equal to the maximum L* */
+ /* merely return the maximum Luv point. */
+ memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else {
+ /* return the closest point on the hue leaf. */
+ /* must do a bisection here to compute the delta e. */
+ maxChroma = XCMS_CIELUV_PMETRIC_CHROMA(Luv_max.spec.CIELuv.u_star,
+ Luv_max.spec.CIELuv.v_star);
+ nMaxCount = MAXBISECTCOUNT;
+ nI = nMaxCount / 2;
+ bestLstar = Lstar = pColor->spec.CIELuv.L_star;
+ bestustar = pColor->spec.CIELuv.u_star;
+ bestvstar = pColor->spec.CIELuv.v_star;
+ bestChroma = Chroma = chroma;
+ saveDist = XCMS_SQRT(((Chroma - maxChroma) * (Chroma - maxChroma)) +
+ ((Lstar - maxLstar) * (Lstar - maxLstar)));
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
+ if (saveLstar > maxLstar) {
+ pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
+ pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
+ pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
+ } else {
+ pColor->spec.RGBi.red = rgb_max.red - (rgb_max.red * nT);
+ pColor->spec.RGBi.green = rgb_max.green - (rgb_max.green * nT);
+ pColor->spec.RGBi.blue = rgb_max.blue - (rgb_max.blue * nT);
+ }
+ pColor->format = XcmsRGBiFormat;
+
+ /* Convert from RGBi to CIE Luv */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star);
+ tmpDist = XCMS_SQRT(((Chroma - chroma) * (Chroma - chroma)) +
+ ((Lstar - pColor->spec.CIELuv.L_star) *
+ (Lstar - pColor->spec.CIELuv.L_star)));
+ nILast = nI;
+ if (tmpDist > saveDist) {
+ nI /= 2;
+ } else {
+ nI = (nMaxCount + nI) / 2;
+ saveDist = tmpDist;
+ bestLstar = pColor->spec.CIELuv.L_star;
+ bestustar = pColor->spec.CIELuv.u_star;
+ bestvstar = pColor->spec.CIELuv.v_star;
+ bestChroma = chroma;
+ }
+ if (nI == nILast || nI == 0) {
+ break;
+ }
+ }
+ if (bestChroma >= maxChroma) {
+ pColor->spec.CIELuv.L_star = maxLstar;
+ pColor->spec.CIELuv.u_star = Luv_max.spec.CIELuv.u_star;
+ pColor->spec.CIELuv.v_star = Luv_max.spec.CIELuv.v_star;
+ } else {
+ pColor->spec.CIELuv.L_star = bestLstar;
+ pColor->spec.CIELuv.u_star = bestustar;
+ pColor->spec.CIELuv.v_star = bestvstar;
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ }
+ return(retval);
+}
diff --git a/libX11/src/xcms/LuvMnL.c b/libX11/src/xcms/LuvMnL.c
index b873fa652..d463c4da5 100644
--- a/libX11/src/xcms/LuvMnL.c
+++ b/libX11/src/xcms/LuvMnL.c
@@ -1,216 +1,216 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELuvMnL.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELuvQueryMinL() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_L_STAR (XcmsFloat)40.0
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvQueryMinL - Compute max Lstar for a hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvQueryMinL(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum Lstar for a specified hue_angle and chroma.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor max_lc, tmp, prev;
- XcmsFloat max_chroma, tmp_chroma;
- XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
- XcmsFloat rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELuv.L_star = START_L_STAR;
- tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, chroma);
- tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, chroma);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELuvFormat;
-
- /* Step 1: Obtain the maximum L_star and chroma for this hue. */
- if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- max_chroma = XCMS_CIELUV_PMETRIC_CHROMA(max_lc.spec.CIELuv.u_star,
- max_lc.spec.CIELuv.v_star);
-
- if (max_chroma <= chroma) {
- /*
- * If the chroma is greater than the chroma for the
- * maximum L/chroma point then the L_star is the
- * the L_star for the maximum L_star/chroma point.
- * This is an error but I return the best approximation I can.
- * Thus the inconsistency.
- */
- memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
-
- /*
- * If the chroma is equal to the chroma for the
- * maximum L_star/chroma point then the L_star is the
- * the L_star for the maximum L* and chroma point.
- */
- /* if (max_chroma == chroma) {
- * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- * return(XcmsSuccess);
- * }
- */
-
- /* must do a bisection here to compute the maximum L* */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nChroma = chroma;
- tmp_chroma = max_chroma;
- lastChroma = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevChroma = lastChroma;
- lastChroma = tmp_chroma;
- nT = (nChroma - max_chroma) / max_chroma * rFactor;
- memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
- tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
- tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
- tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELuv */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- tmp_chroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star,
- tmp.spec.CIELuv.v_star);
- if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
- /* Found It! */
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
- nChroma += chroma - tmp_chroma;
- if (nChroma > max_chroma) {
- nChroma = max_chroma;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nChroma < 0.0) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- return(XcmsSuccess);
- } else if (tmp_chroma <= prevChroma + EPS &&
- tmp_chroma >= prevChroma - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
-
- if (nCount >= nMaxCount) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- }
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELuvMnL.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELuvQueryMinL() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_L_STAR (XcmsFloat)40.0
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvQueryMinL - Compute max Lstar for a hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvQueryMinL(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum Lstar for a specified hue_angle and chroma.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor max_lc, tmp, prev;
+ XcmsFloat max_chroma, tmp_chroma;
+ XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
+ XcmsFloat rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELuv.L_star = START_L_STAR;
+ tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, chroma);
+ tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, chroma);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELuvFormat;
+
+ /* Step 1: Obtain the maximum L_star and chroma for this hue. */
+ if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ max_chroma = XCMS_CIELUV_PMETRIC_CHROMA(max_lc.spec.CIELuv.u_star,
+ max_lc.spec.CIELuv.v_star);
+
+ if (max_chroma <= chroma) {
+ /*
+ * If the chroma is greater than the chroma for the
+ * maximum L/chroma point then the L_star is the
+ * the L_star for the maximum L_star/chroma point.
+ * This is an error but I return the best approximation I can.
+ * Thus the inconsistency.
+ */
+ memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+
+ /*
+ * If the chroma is equal to the chroma for the
+ * maximum L_star/chroma point then the L_star is the
+ * the L_star for the maximum L* and chroma point.
+ */
+ /* if (max_chroma == chroma) {
+ * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ * return(XcmsSuccess);
+ * }
+ */
+
+ /* must do a bisection here to compute the maximum L* */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nChroma = chroma;
+ tmp_chroma = max_chroma;
+ lastChroma = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevChroma = lastChroma;
+ lastChroma = tmp_chroma;
+ nT = (nChroma - max_chroma) / max_chroma * rFactor;
+ memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
+ tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
+ tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
+ tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELuv */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ tmp_chroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star,
+ tmp.spec.CIELuv.v_star);
+ if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
+ /* Found It! */
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+ nChroma += chroma - tmp_chroma;
+ if (nChroma > max_chroma) {
+ nChroma = max_chroma;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nChroma < 0.0) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ return(XcmsSuccess);
+ } else if (tmp_chroma <= prevChroma + EPS &&
+ tmp_chroma >= prevChroma - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+
+ if (nCount >= nMaxCount) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ }
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LuvMxC.c b/libX11/src/xcms/LuvMxC.c
index a67251477..be8bc4f70 100644
--- a/libX11/src/xcms/LuvMxC.c
+++ b/libX11/src/xcms/LuvMxC.c
@@ -1,204 +1,204 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * CIELuvMxC.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELuvQueryMaxC() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_CHROMA (XcmsFloat)2.2
-#define TOPL (XcmsFloat)100.0
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvQueryMaxC - max chroma for a hue_angle and L_star
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvQueryMaxC(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsFloat L_star,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum chroma for a specific hue_angle and L_star.
- * The returned format is in XcmsCIELuvFormat.
- *
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor tmp;
- XcmsColor max_lc;
- XcmsFloat n_L_star, last_L_star, prev_L_star;
- XcmsFloat hue, lastuStar, lastvStar, /*lastChroma,*/ maxDist, nT, rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC and inherit screen white Pt */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELuv.L_star = L_star;
- tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, START_CHROMA);
- tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, START_CHROMA);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELuvFormat;
-
- /* Step 1: compute the maximum L_star and chroma for this hue. */
- memcpy((char *)&max_lc, (char *)&tmp, sizeof(XcmsColor));
- if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Step 2: Do a bisection here to compute the maximum chroma
- * Note the differences between when the point to be found
- * is above the maximum LC point and when it is below.
- */
- if (L_star <= max_lc.spec.CIELuv.L_star) {
- maxDist = max_lc.spec.CIELuv.L_star;
- } else {
- maxDist = TOPL - max_lc.spec.CIELuv.L_star;
- }
-
- n_L_star = L_star;
- last_L_star = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prev_L_star = last_L_star;
- last_L_star = tmp.spec.CIELuv.L_star;
-/* lastChroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star, */
-/* tmp.spec.CIELuv.v_star); */
- lastuStar = tmp.spec.CIELuv.u_star;
- lastvStar = tmp.spec.CIELuv.v_star;
- nT = (n_L_star - max_lc.spec.CIELuv.L_star) / maxDist * rFactor;
- /* printf("(n_L_star, nT) = %lf %lf ", n_L_star, nT); */
- if (nT > 0) {
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- } else {
- tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
- tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
- tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
- }
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELuv */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Now check if we've reached the target L_star
- */
- /* printf("result Lstar = %lf\n", tmp.spec.CIELuv.L_star); */
- if (tmp.spec.CIELuv.L_star <= L_star + EPS &&
- tmp.spec.CIELuv.L_star >= L_star - EPS) {
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
- }
- if (nT > 0) {
- n_L_star += ((TOPL - n_L_star) *
- (L_star - tmp.spec.CIELuv.L_star)) / (TOPL - L_star);
- } else {
- n_L_star *= L_star / tmp.spec.CIELuv.L_star;
- }
- if (tmp.spec.CIELuv.L_star <= prev_L_star + EPS &&
- tmp.spec.CIELuv.L_star >= prev_L_star - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- /* printf("rFactor = %lf\n", rFactor); */
- }
- }
- if (XCMS_FABS(last_L_star - L_star) <
- XCMS_FABS(tmp.spec.CIELuv.L_star - L_star)) {
- tmp.spec.CIELuv.u_star = lastuStar;
- tmp.spec.CIELuv.v_star = lastvStar;
-/* tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, lastChroma); */
-/* tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, lastChroma); */
- }
- tmp.spec.CIELuv.L_star = L_star;
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * CIELuvMxC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELuvQueryMaxC() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_CHROMA (XcmsFloat)2.2
+#define TOPL (XcmsFloat)100.0
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvQueryMaxC - max chroma for a hue_angle and L_star
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvQueryMaxC(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsFloat L_star,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum chroma for a specific hue_angle and L_star.
+ * The returned format is in XcmsCIELuvFormat.
+ *
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor tmp;
+ XcmsColor max_lc;
+ XcmsFloat n_L_star, last_L_star, prev_L_star;
+ XcmsFloat hue, lastuStar, lastvStar, /*lastChroma,*/ maxDist, nT, rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC and inherit screen white Pt */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELuv.L_star = L_star;
+ tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, START_CHROMA);
+ tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, START_CHROMA);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELuvFormat;
+
+ /* Step 1: compute the maximum L_star and chroma for this hue. */
+ memcpy((char *)&max_lc, (char *)&tmp, sizeof(XcmsColor));
+ if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Step 2: Do a bisection here to compute the maximum chroma
+ * Note the differences between when the point to be found
+ * is above the maximum LC point and when it is below.
+ */
+ if (L_star <= max_lc.spec.CIELuv.L_star) {
+ maxDist = max_lc.spec.CIELuv.L_star;
+ } else {
+ maxDist = TOPL - max_lc.spec.CIELuv.L_star;
+ }
+
+ n_L_star = L_star;
+ last_L_star = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prev_L_star = last_L_star;
+ last_L_star = tmp.spec.CIELuv.L_star;
+/* lastChroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star, */
+/* tmp.spec.CIELuv.v_star); */
+ lastuStar = tmp.spec.CIELuv.u_star;
+ lastvStar = tmp.spec.CIELuv.v_star;
+ nT = (n_L_star - max_lc.spec.CIELuv.L_star) / maxDist * rFactor;
+ /* printf("(n_L_star, nT) = %lf %lf ", n_L_star, nT); */
+ if (nT > 0) {
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ } else {
+ tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
+ tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
+ tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
+ }
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELuv */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now check if we've reached the target L_star
+ */
+ /* printf("result Lstar = %lf\n", tmp.spec.CIELuv.L_star); */
+ if (tmp.spec.CIELuv.L_star <= L_star + EPS &&
+ tmp.spec.CIELuv.L_star >= L_star - EPS) {
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+ }
+ if (nT > 0) {
+ n_L_star += ((TOPL - n_L_star) *
+ (L_star - tmp.spec.CIELuv.L_star)) / (TOPL - L_star);
+ } else {
+ n_L_star *= L_star / tmp.spec.CIELuv.L_star;
+ }
+ if (tmp.spec.CIELuv.L_star <= prev_L_star + EPS &&
+ tmp.spec.CIELuv.L_star >= prev_L_star - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ /* printf("rFactor = %lf\n", rFactor); */
+ }
+ }
+ if (XCMS_FABS(last_L_star - L_star) <
+ XCMS_FABS(tmp.spec.CIELuv.L_star - L_star)) {
+ tmp.spec.CIELuv.u_star = lastuStar;
+ tmp.spec.CIELuv.v_star = lastvStar;
+/* tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, lastChroma); */
+/* tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, lastChroma); */
+ }
+ tmp.spec.CIELuv.L_star = L_star;
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LuvMxL.c b/libX11/src/xcms/LuvMxL.c
index d1d495b08..71ef0fffe 100644
--- a/libX11/src/xcms/LuvMxL.c
+++ b/libX11/src/xcms/LuvMxL.c
@@ -1,216 +1,216 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELuvMxL.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELuvQueryMaxL() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_L_STAR (XcmsFloat)40.0
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvQueryMaxL - Compute max Lstar for a hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvQueryMaxL(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum Lstar for a specified hue_angle and chroma.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor max_lc, tmp, prev;
- XcmsFloat max_chroma, tmp_chroma;
- XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
- XcmsFloat rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELuv.L_star = START_L_STAR;
- tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, chroma);
- tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, chroma);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELuvFormat;
-
- /* Step 1: Obtain the maximum L_star and chroma for this hue. */
- if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- max_chroma = XCMS_CIELUV_PMETRIC_CHROMA(max_lc.spec.CIELuv.u_star,
- max_lc.spec.CIELuv.v_star);
-
- if (max_chroma <= chroma) {
- /*
- * If the chroma is greater than the chroma for the
- * maximum L/chroma point then the L_star is the
- * the L_star for the maximum L_star/chroma point.
- * This is an error but I return the best approximation I can.
- * Thus the inconsistency.
- */
- memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
-
- /*
- * If the chroma is equal to the chroma for the
- * maximum L_star/chroma point then the L_star is the
- * the L_star for the maximum L* and chroma point.
- */
- /* if (max_chroma == chroma) {
- * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- * return(XcmsSuccess);
- * }
- */
-
- /* must do a bisection here to compute the maximum L* */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nChroma = chroma;
- tmp_chroma = max_chroma;
- lastChroma = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevChroma = lastChroma;
- lastChroma = tmp_chroma;
- nT = (1.0 - (nChroma / max_chroma)) * rFactor;
- memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELuv */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- tmp_chroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star,
- tmp.spec.CIELuv.v_star);
- if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
- /* Found It! */
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
- nChroma += chroma - tmp_chroma;
- if (nChroma > max_chroma) {
- nChroma = max_chroma;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nChroma < 0.0) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- return(XcmsSuccess);
- } else if (tmp_chroma <= prevChroma + EPS &&
- tmp_chroma >= prevChroma - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
-
- if (nCount >= nMaxCount) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- }
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELuvMxL.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELuvQueryMaxL() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_L_STAR (XcmsFloat)40.0
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvQueryMaxL - Compute max Lstar for a hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvQueryMaxL(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum Lstar for a specified hue_angle and chroma.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor max_lc, tmp, prev;
+ XcmsFloat max_chroma, tmp_chroma;
+ XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
+ XcmsFloat rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELuv.L_star = START_L_STAR;
+ tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, chroma);
+ tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, chroma);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELuvFormat;
+
+ /* Step 1: Obtain the maximum L_star and chroma for this hue. */
+ if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ max_chroma = XCMS_CIELUV_PMETRIC_CHROMA(max_lc.spec.CIELuv.u_star,
+ max_lc.spec.CIELuv.v_star);
+
+ if (max_chroma <= chroma) {
+ /*
+ * If the chroma is greater than the chroma for the
+ * maximum L/chroma point then the L_star is the
+ * the L_star for the maximum L_star/chroma point.
+ * This is an error but I return the best approximation I can.
+ * Thus the inconsistency.
+ */
+ memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+
+ /*
+ * If the chroma is equal to the chroma for the
+ * maximum L_star/chroma point then the L_star is the
+ * the L_star for the maximum L* and chroma point.
+ */
+ /* if (max_chroma == chroma) {
+ * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ * return(XcmsSuccess);
+ * }
+ */
+
+ /* must do a bisection here to compute the maximum L* */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nChroma = chroma;
+ tmp_chroma = max_chroma;
+ lastChroma = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevChroma = lastChroma;
+ lastChroma = tmp_chroma;
+ nT = (1.0 - (nChroma / max_chroma)) * rFactor;
+ memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELuv */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ tmp_chroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star,
+ tmp.spec.CIELuv.v_star);
+ if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
+ /* Found It! */
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+ nChroma += chroma - tmp_chroma;
+ if (nChroma > max_chroma) {
+ nChroma = max_chroma;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nChroma < 0.0) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ return(XcmsSuccess);
+ } else if (tmp_chroma <= prevChroma + EPS &&
+ tmp_chroma >= prevChroma - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+
+ if (nCount >= nMaxCount) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ }
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LuvMxLC.c b/libX11/src/xcms/LuvMxLC.c
index 60b954916..f63e1528f 100644
--- a/libX11/src/xcms/LuvMxLC.c
+++ b/libX11/src/xcms/LuvMxLC.c
@@ -1,218 +1,218 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * CIELuvMxVC.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELuvQueryMaxLC() gamut boundary
- * querying routine.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- * and
- * Fred W. Billmeyer & Max Saltzman, "Principles of Color
- * Technology", John Wily & Sons, Inc, 1981.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MIN(x,y) ((x) > (y) ? (y) : (x))
-#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
-#define MAX(x,y) ((x) > (y) ? (x) : (y))
-#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
-#define START_LSTAR (XcmsFloat)40.0
-#define START_CHROMA (XcmsFloat)2.2
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsCIELuvQueryMaxLCRGB - Compute maximum L* and chroma.
- *
- * SYNOPSIS
- */
-Status
-_XcmsCIELuvQueryMaxLCRGB(
- XcmsCCC ccc,
- XcmsFloat hue, /* hue in radians */
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return)
-/*
- * DESCRIPTION
- * Return the maximum psychometric chroma for a specified
- * hue angle(radians), and the corresponding L*. This is computed
- * by a binary search of all possible chromas. An assumption
- * is made that there are no local maxima. Use the unrounded
- * Max psychometric chroma because the difference check can be
- * small.
- *
- * NOTE: No local CCC is used because this is a private
- * routine and all routines that call it are expected
- * to behave properly, i.e. send a local CCC with
- * no white adjust function and no gamut compression
- * function.
- *
- * This routine only accepts hue as input and outputs
- * Luv and RGBi.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsFloat nSmall, nLarge;
- XcmsColor tmp;
-
- tmp.format = XcmsCIELuvFormat;
- /* Use some unreachable color on the given hue angle */
- tmp.spec.CIELuv.L_star = START_LSTAR;
- tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, START_CHROMA);
- tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, START_CHROMA);
- /*
- * Convert from Luv to RGB
- *
- * Note that the CIEXYZ to RGBi conversion routine must stuff the
- * out of bounds RGBi values in tmp when the ccc->gamutCompProc
- * is NULL.
- */
- if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc),
- (unsigned int)1, XcmsRGBiFormat, (Bool *) NULL)
- == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
- return (XcmsFailure);
- }
-
- /* Now pick the smallest RGB */
- nSmall = MIN3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Make the smallest RGB equal to zero */
- tmp.spec.RGBi.red -= nSmall;
- tmp.spec.RGBi.green -= nSmall;
- tmp.spec.RGBi.blue -= nSmall;
-
- /* Now pick the largest RGB */
- nLarge = MAX3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Scale the RGB values based on the largest one */
- tmp.spec.RGBi.red /= nLarge;
- tmp.spec.RGBi.green /= nLarge;
- tmp.spec.RGBi.blue /= nLarge;
- tmp.format = XcmsRGBiFormat;
-
- /* If the calling routine wants RGB value give them the ones used. */
- if (pRGB_return) {
- pRGB_return->red = tmp.spec.RGBi.red;
- pRGB_return->green = tmp.spec.RGBi.green;
- pRGB_return->blue = tmp.spec.RGBi.blue;
- }
-
- /* Convert from RGBi to Luv */
- if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat, (Bool *) NULL)
- == XcmsFailure) {
- return (XcmsFailure);
- }
-
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return (XcmsSuccess);
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvQueryMaxLC - Compute maximum L* and chroma.
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvQueryMaxLC (
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsColor *pColor_return)
-
-/*
- * DESCRIPTION
- * Return the point of maximum chroma for the specified
- * hue angle.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- return(_XcmsCIELuvQueryMaxLCRGB (&myCCC, radians(hue_angle), pColor_return,
- (XcmsRGBi *)NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * CIELuvMxVC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELuvQueryMaxLC() gamut boundary
+ * querying routine.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ * and
+ * Fred W. Billmeyer & Max Saltzman, "Principles of Color
+ * Technology", John Wily & Sons, Inc, 1981.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MIN(x,y) ((x) > (y) ? (y) : (x))
+#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
+#define MAX(x,y) ((x) > (y) ? (x) : (y))
+#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
+#define START_LSTAR (XcmsFloat)40.0
+#define START_CHROMA (XcmsFloat)2.2
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsCIELuvQueryMaxLCRGB - Compute maximum L* and chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsCIELuvQueryMaxLCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue, /* hue in radians */
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return)
+/*
+ * DESCRIPTION
+ * Return the maximum psychometric chroma for a specified
+ * hue angle(radians), and the corresponding L*. This is computed
+ * by a binary search of all possible chromas. An assumption
+ * is made that there are no local maxima. Use the unrounded
+ * Max psychometric chroma because the difference check can be
+ * small.
+ *
+ * NOTE: No local CCC is used because this is a private
+ * routine and all routines that call it are expected
+ * to behave properly, i.e. send a local CCC with
+ * no white adjust function and no gamut compression
+ * function.
+ *
+ * This routine only accepts hue as input and outputs
+ * Luv and RGBi.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsFloat nSmall, nLarge;
+ XcmsColor tmp;
+
+ tmp.format = XcmsCIELuvFormat;
+ /* Use some unreachable color on the given hue angle */
+ tmp.spec.CIELuv.L_star = START_LSTAR;
+ tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, START_CHROMA);
+ tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, START_CHROMA);
+ /*
+ * Convert from Luv to RGB
+ *
+ * Note that the CIEXYZ to RGBi conversion routine must stuff the
+ * out of bounds RGBi values in tmp when the ccc->gamutCompProc
+ * is NULL.
+ */
+ if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc),
+ (unsigned int)1, XcmsRGBiFormat, (Bool *) NULL)
+ == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
+ return (XcmsFailure);
+ }
+
+ /* Now pick the smallest RGB */
+ nSmall = MIN3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Make the smallest RGB equal to zero */
+ tmp.spec.RGBi.red -= nSmall;
+ tmp.spec.RGBi.green -= nSmall;
+ tmp.spec.RGBi.blue -= nSmall;
+
+ /* Now pick the largest RGB */
+ nLarge = MAX3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Scale the RGB values based on the largest one */
+ tmp.spec.RGBi.red /= nLarge;
+ tmp.spec.RGBi.green /= nLarge;
+ tmp.spec.RGBi.blue /= nLarge;
+ tmp.format = XcmsRGBiFormat;
+
+ /* If the calling routine wants RGB value give them the ones used. */
+ if (pRGB_return) {
+ pRGB_return->red = tmp.spec.RGBi.red;
+ pRGB_return->green = tmp.spec.RGBi.green;
+ pRGB_return->blue = tmp.spec.RGBi.blue;
+ }
+
+ /* Convert from RGBi to Luv */
+ if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat, (Bool *) NULL)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return (XcmsSuccess);
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvQueryMaxLC - Compute maximum L* and chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvQueryMaxLC (
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsColor *pColor_return)
+
+/*
+ * DESCRIPTION
+ * Return the point of maximum chroma for the specified
+ * hue angle.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ return(_XcmsCIELuvQueryMaxLCRGB (&myCCC, radians(hue_angle), pColor_return,
+ (XcmsRGBi *)NULL));
+}
diff --git a/libX11/src/xcms/LuvWpAj.c b/libX11/src/xcms/LuvWpAj.c
index aa2a3f462..9f811d27e 100644
--- a/libX11/src/xcms/LuvWpAj.c
+++ b/libX11/src/xcms/LuvWpAj.c
@@ -1,96 +1,96 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * CIELuvWpAj.c
- *
- * DESCRIPTION
- * This file contains routine(s) that support white point
- * adjustment of color specifications in the CIE CIELuv.color
- * space.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvWhiteShiftColors
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvWhiteShiftColors(
- XcmsCCC ccc,
- XcmsColor *pWhitePtFrom,
- XcmsColor *pWhitePtTo,
- XcmsColorFormat destSpecFmt,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Adjusts color specifications in an array of XcmsColor
- * structures for white point differences.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded without gamut compression,
- * XcmsSuccessWithCompression if succeeded with
- * gamut compression.
- */
-{
- if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Convert to CIELuv using pWhitePtFrom
- * We can ignore return value for compression because we are converting
- * to XcmsCIELuvFormat which is device-independent, not device-dependent.
- */
- if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
- nColors, XcmsCIELuvFormat, pCompressed) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Convert from CIELuv to destSpecFmt using pWhitePtTo
- */
- return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtTo,
- nColors, destSpecFmt, pCompressed));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * CIELuvWpAj.c
+ *
+ * DESCRIPTION
+ * This file contains routine(s) that support white point
+ * adjustment of color specifications in the CIE CIELuv.color
+ * space.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvWhiteShiftColors
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvWhiteShiftColors(
+ XcmsCCC ccc,
+ XcmsColor *pWhitePtFrom,
+ XcmsColor *pWhitePtTo,
+ XcmsColorFormat destSpecFmt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Adjusts color specifications in an array of XcmsColor
+ * structures for white point differences.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded without gamut compression,
+ * XcmsSuccessWithCompression if succeeded with
+ * gamut compression.
+ */
+{
+ if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert to CIELuv using pWhitePtFrom
+ * We can ignore return value for compression because we are converting
+ * to XcmsCIELuvFormat which is device-independent, not device-dependent.
+ */
+ if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
+ nColors, XcmsCIELuvFormat, pCompressed) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert from CIELuv to destSpecFmt using pWhitePtTo
+ */
+ return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtTo,
+ nColors, destSpecFmt, pCompressed));
+}
diff --git a/libX11/src/xcms/OfCCC.c b/libX11/src/xcms/OfCCC.c
index 06fc3d7a1..1d8e0b436 100644
--- a/libX11/src/xcms/OfCCC.c
+++ b/libX11/src/xcms/OfCCC.c
@@ -1,162 +1,162 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsOfCCC.c - Color Conversion Context Querying Routines
- *
- * DESCRIPTION
- * Routines to query components of a Color Conversion
- * Context structure.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlib.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsDisplayOfCCC
- *
- * SYNOPSIS
- */
-
-Display *
-XcmsDisplayOfCCC(
- XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Queries the Display of the specified CCC.
- *
- * RETURNS
- * Pointer to the Display.
- *
- */
-{
- return(ccc->dpy);
-}
-
-
-/*
- * NAME
- * XcmsVisualOfCCC
- *
- * SYNOPSIS
- */
-
-Visual *
-XcmsVisualOfCCC(
- XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Queries the Visual of the specified CCC.
- *
- * RETURNS
- * Pointer to the Visual.
- *
- */
-{
- return(ccc->visual);
-}
-
-
-/*
- * NAME
- * XcmsScreenNumberOfCCC
- *
- * SYNOPSIS
- */
-
-int
-XcmsScreenNumberOfCCC(
- XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Queries the screen number of the specified CCC.
- *
- * RETURNS
- * screen number.
- *
- */
-{
- return(ccc->screenNumber);
-}
-
-
-/*
- * NAME
- * XcmsScreenWhitePointOfCCC
- *
- * SYNOPSIS
- */
-
-XcmsColor *
-XcmsScreenWhitePointOfCCC(
- XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Queries the screen white point of the specified CCC.
- *
- * RETURNS
- * Pointer to the XcmsColor containing the screen white point.
- *
- */
-{
- return(&ccc->pPerScrnInfo->screenWhitePt);
-}
-
-
-/*
- * NAME
- * XcmsClientWhitePointOfCCC
- *
- * SYNOPSIS
- */
-
-XcmsColor *
-XcmsClientWhitePointOfCCC(
- XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Queries the client white point of the specified CCC.
- *
- * RETURNS
- * Pointer to the XcmsColor containing the client white point.
- *
- */
-{
- return(&ccc->clientWhitePt);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsOfCCC.c - Color Conversion Context Querying Routines
+ *
+ * DESCRIPTION
+ * Routines to query components of a Color Conversion
+ * Context structure.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlib.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsDisplayOfCCC
+ *
+ * SYNOPSIS
+ */
+
+Display *
+XcmsDisplayOfCCC(
+ XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Queries the Display of the specified CCC.
+ *
+ * RETURNS
+ * Pointer to the Display.
+ *
+ */
+{
+ return(ccc->dpy);
+}
+
+
+/*
+ * NAME
+ * XcmsVisualOfCCC
+ *
+ * SYNOPSIS
+ */
+
+Visual *
+XcmsVisualOfCCC(
+ XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Queries the Visual of the specified CCC.
+ *
+ * RETURNS
+ * Pointer to the Visual.
+ *
+ */
+{
+ return(ccc->visual);
+}
+
+
+/*
+ * NAME
+ * XcmsScreenNumberOfCCC
+ *
+ * SYNOPSIS
+ */
+
+int
+XcmsScreenNumberOfCCC(
+ XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Queries the screen number of the specified CCC.
+ *
+ * RETURNS
+ * screen number.
+ *
+ */
+{
+ return(ccc->screenNumber);
+}
+
+
+/*
+ * NAME
+ * XcmsScreenWhitePointOfCCC
+ *
+ * SYNOPSIS
+ */
+
+XcmsColor *
+XcmsScreenWhitePointOfCCC(
+ XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Queries the screen white point of the specified CCC.
+ *
+ * RETURNS
+ * Pointer to the XcmsColor containing the screen white point.
+ *
+ */
+{
+ return(&ccc->pPerScrnInfo->screenWhitePt);
+}
+
+
+/*
+ * NAME
+ * XcmsClientWhitePointOfCCC
+ *
+ * SYNOPSIS
+ */
+
+XcmsColor *
+XcmsClientWhitePointOfCCC(
+ XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Queries the client white point of the specified CCC.
+ *
+ * RETURNS
+ * Pointer to the XcmsColor containing the client white point.
+ *
+ */
+{
+ return(&ccc->clientWhitePt);
+}
diff --git a/libX11/src/xcms/QBlack.c b/libX11/src/xcms/QBlack.c
index d7a69d399..fc28e16be 100644
--- a/libX11/src/xcms/QBlack.c
+++ b/libX11/src/xcms/QBlack.c
@@ -1,84 +1,84 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQBlack.c - Query Black
- *
- * DESCRIPTION
- * Routine to obtain a color specification for zero
- * red, green, and blue intensities.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryBlack
- *
- * SYNOPSIS
- */
-
-Status
-XcmsQueryBlack(
- XcmsCCC ccc,
- XcmsColorFormat target_format,
- XcmsColor *pColor_ret)
-/*
- * DESCRIPTION
- * Returns the color specification in the target format for
- * zero intensity red, green, and blue.
- *
- * RETURNS
- * Returns XcmsSuccess, if failed; otherwise XcmsFailure
- *
- */
-{
- XcmsColor tmp;
-
- tmp.format = XcmsRGBiFormat;
- tmp.pixel = 0;
- tmp.spec.RGBi.red = 0.0;
- tmp.spec.RGBi.green = 0.0;
- tmp.spec.RGBi.blue = 0.0;
- if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
- return(XcmsFailure);
- }
- memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQBlack.c - Query Black
+ *
+ * DESCRIPTION
+ * Routine to obtain a color specification for zero
+ * red, green, and blue intensities.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryBlack
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsQueryBlack(
+ XcmsCCC ccc,
+ XcmsColorFormat target_format,
+ XcmsColor *pColor_ret)
+/*
+ * DESCRIPTION
+ * Returns the color specification in the target format for
+ * zero intensity red, green, and blue.
+ *
+ * RETURNS
+ * Returns XcmsSuccess, if failed; otherwise XcmsFailure
+ *
+ */
+{
+ XcmsColor tmp;
+
+ tmp.format = XcmsRGBiFormat;
+ tmp.pixel = 0;
+ tmp.spec.RGBi.red = 0.0;
+ tmp.spec.RGBi.green = 0.0;
+ tmp.spec.RGBi.blue = 0.0;
+ if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
+ return(XcmsFailure);
+ }
+ memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/QBlue.c b/libX11/src/xcms/QBlue.c
index 4555344e6..ac79dc2e9 100644
--- a/libX11/src/xcms/QBlue.c
+++ b/libX11/src/xcms/QBlue.c
@@ -1,84 +1,84 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQBlue.c - Query Blue
- *
- * DESCRIPTION
- * Routine to obtain a color specification for full
- * blue intensity and zero red and green intensities.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryBlue
- *
- * SYNOPSIS
- */
-
-Status
-XcmsQueryBlue(
- XcmsCCC ccc,
- XcmsColorFormat target_format,
- XcmsColor *pColor_ret)
-/*
- * DESCRIPTION
- * Returns the color specification in the target format for
- * full intensity blue and zero intensity red and green.
- *
- * RETURNS
- * Returns XcmsSuccess, if failed; otherwise XcmsFailure
- *
- */
-{
- XcmsColor tmp;
-
- tmp.format = XcmsRGBiFormat;
- tmp.pixel = 0;
- tmp.spec.RGBi.red = 0.0;
- tmp.spec.RGBi.green = 0.0;
- tmp.spec.RGBi.blue = 1.0;
- if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
- return(XcmsFailure);
- }
- memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQBlue.c - Query Blue
+ *
+ * DESCRIPTION
+ * Routine to obtain a color specification for full
+ * blue intensity and zero red and green intensities.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryBlue
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsQueryBlue(
+ XcmsCCC ccc,
+ XcmsColorFormat target_format,
+ XcmsColor *pColor_ret)
+/*
+ * DESCRIPTION
+ * Returns the color specification in the target format for
+ * full intensity blue and zero intensity red and green.
+ *
+ * RETURNS
+ * Returns XcmsSuccess, if failed; otherwise XcmsFailure
+ *
+ */
+{
+ XcmsColor tmp;
+
+ tmp.format = XcmsRGBiFormat;
+ tmp.pixel = 0;
+ tmp.spec.RGBi.red = 0.0;
+ tmp.spec.RGBi.green = 0.0;
+ tmp.spec.RGBi.blue = 1.0;
+ if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
+ return(XcmsFailure);
+ }
+ memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/QGreen.c b/libX11/src/xcms/QGreen.c
index 0c888358a..bc6b7bb7a 100644
--- a/libX11/src/xcms/QGreen.c
+++ b/libX11/src/xcms/QGreen.c
@@ -1,84 +1,84 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQGreen.c - Query Green
- *
- * DESCRIPTION
- * Routine to obtain a color specification for full
- * green intensity and zero red and blue intensities.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryGreen
- *
- * SYNOPSIS
- */
-
-Status
-XcmsQueryGreen(
- XcmsCCC ccc,
- XcmsColorFormat target_format,
- XcmsColor *pColor_ret)
-/*
- * DESCRIPTION
- * Returns the color specification in the target format for
- * full intensity green and zero intensity red and blue.
- *
- * RETURNS
- * Returns XcmsSuccess, if failed; otherwise XcmsFailure
- *
- */
-{
- XcmsColor tmp;
-
- tmp.format = XcmsRGBiFormat;
- tmp.pixel = 0;
- tmp.spec.RGBi.red = 0.0;
- tmp.spec.RGBi.green = 1.0;
- tmp.spec.RGBi.blue = 0.0;
- if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
- return(XcmsFailure);
- }
- memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQGreen.c - Query Green
+ *
+ * DESCRIPTION
+ * Routine to obtain a color specification for full
+ * green intensity and zero red and blue intensities.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryGreen
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsQueryGreen(
+ XcmsCCC ccc,
+ XcmsColorFormat target_format,
+ XcmsColor *pColor_ret)
+/*
+ * DESCRIPTION
+ * Returns the color specification in the target format for
+ * full intensity green and zero intensity red and blue.
+ *
+ * RETURNS
+ * Returns XcmsSuccess, if failed; otherwise XcmsFailure
+ *
+ */
+{
+ XcmsColor tmp;
+
+ tmp.format = XcmsRGBiFormat;
+ tmp.pixel = 0;
+ tmp.spec.RGBi.red = 0.0;
+ tmp.spec.RGBi.green = 1.0;
+ tmp.spec.RGBi.blue = 0.0;
+ if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
+ return(XcmsFailure);
+ }
+ memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/QRed.c b/libX11/src/xcms/QRed.c
index 357380d60..32cde9e9c 100644
--- a/libX11/src/xcms/QRed.c
+++ b/libX11/src/xcms/QRed.c
@@ -1,84 +1,84 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQRed.c - Query Red
- *
- * DESCRIPTION
- * Routine to obtain a color specification for full
- * red intensity and zero green and blue intensities.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryRed
- *
- * SYNOPSIS
- */
-
-Status
-XcmsQueryRed(
- XcmsCCC ccc,
- XcmsColorFormat target_format,
- XcmsColor *pColor_ret)
-/*
- * DESCRIPTION
- * Returns the color specification in the target format for
- * full intensity red and zero intensity green and blue.
- *
- * RETURNS
- * Returns XcmsSuccess, if failed; otherwise XcmsFailure
- *
- */
-{
- XcmsColor tmp;
-
- tmp.format = XcmsRGBiFormat;
- tmp.pixel = 0;
- tmp.spec.RGBi.red = 1.0;
- tmp.spec.RGBi.green = 0.0;
- tmp.spec.RGBi.blue = 0.0;
- if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
- return(XcmsFailure);
- }
- memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQRed.c - Query Red
+ *
+ * DESCRIPTION
+ * Routine to obtain a color specification for full
+ * red intensity and zero green and blue intensities.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryRed
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsQueryRed(
+ XcmsCCC ccc,
+ XcmsColorFormat target_format,
+ XcmsColor *pColor_ret)
+/*
+ * DESCRIPTION
+ * Returns the color specification in the target format for
+ * full intensity red and zero intensity green and blue.
+ *
+ * RETURNS
+ * Returns XcmsSuccess, if failed; otherwise XcmsFailure
+ *
+ */
+{
+ XcmsColor tmp;
+
+ tmp.format = XcmsRGBiFormat;
+ tmp.pixel = 0;
+ tmp.spec.RGBi.red = 1.0;
+ tmp.spec.RGBi.green = 0.0;
+ tmp.spec.RGBi.blue = 0.0;
+ if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
+ return(XcmsFailure);
+ }
+ memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/QWhite.c b/libX11/src/xcms/QWhite.c
index 36b764c9d..1f89f2e20 100644
--- a/libX11/src/xcms/QWhite.c
+++ b/libX11/src/xcms/QWhite.c
@@ -1,84 +1,84 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQWhite.c - Query White
- *
- * DESCRIPTION
- * Routine to obtain a color specification for full
- * red, green, and blue intensities.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryWhite
- *
- * SYNOPSIS
- */
-
-Status
-XcmsQueryWhite(
- XcmsCCC ccc,
- XcmsColorFormat target_format,
- XcmsColor *pColor_ret)
-/*
- * DESCRIPTION
- * Returns the color specification in the target format for
- * full intensity red, green, and blue.
- *
- * RETURNS
- * Returns XcmsSuccess, if failed; otherwise XcmsFailure
- *
- */
-{
- XcmsColor tmp;
-
- tmp.format = XcmsRGBiFormat;
- tmp.pixel = 0;
- tmp.spec.RGBi.red = 1.0;
- tmp.spec.RGBi.green = 1.0;
- tmp.spec.RGBi.blue = 1.0;
- if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
- return(XcmsFailure);
- }
- memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQWhite.c - Query White
+ *
+ * DESCRIPTION
+ * Routine to obtain a color specification for full
+ * red, green, and blue intensities.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryWhite
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsQueryWhite(
+ XcmsCCC ccc,
+ XcmsColorFormat target_format,
+ XcmsColor *pColor_ret)
+/*
+ * DESCRIPTION
+ * Returns the color specification in the target format for
+ * full intensity red, green, and blue.
+ *
+ * RETURNS
+ * Returns XcmsSuccess, if failed; otherwise XcmsFailure
+ *
+ */
+{
+ XcmsColor tmp;
+
+ tmp.format = XcmsRGBiFormat;
+ tmp.pixel = 0;
+ tmp.spec.RGBi.red = 1.0;
+ tmp.spec.RGBi.green = 1.0;
+ tmp.spec.RGBi.blue = 1.0;
+ if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
+ return(XcmsFailure);
+ }
+ memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/QuCol.c b/libX11/src/xcms/QuCol.c
index b4c1cd33a..d70d29431 100644
--- a/libX11/src/xcms/QuCol.c
+++ b/libX11/src/xcms/QuCol.c
@@ -1,78 +1,78 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQuCol.c
- *
- * DESCRIPTION
- * Source for XcmsQueryColors
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryColor - Query Color
- *
- * SYNOPSIS
- */
-Status
-XcmsQueryColor(
- Display *dpy,
- Colormap colormap,
- XcmsColor *pXcmsColor_in_out,
- XcmsColorFormat result_format)
-/*
- * DESCRIPTION
- * This routine uses XQueryColor to obtain the X RGB values
- * stored in the specified colormap for the specified pixel.
- * The X RGB values are then converted to the target format as
- * specified by the format component of the XcmsColor structure.
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded.
- *
- * Returns a color specification of the color stored in the
- * specified pixel.
- */
-{
- return(_XcmsSetGetColor(XQueryColor, dpy, colormap,
- pXcmsColor_in_out, result_format, (Bool *) NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQuCol.c
+ *
+ * DESCRIPTION
+ * Source for XcmsQueryColors
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryColor - Query Color
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsQueryColor(
+ Display *dpy,
+ Colormap colormap,
+ XcmsColor *pXcmsColor_in_out,
+ XcmsColorFormat result_format)
+/*
+ * DESCRIPTION
+ * This routine uses XQueryColor to obtain the X RGB values
+ * stored in the specified colormap for the specified pixel.
+ * The X RGB values are then converted to the target format as
+ * specified by the format component of the XcmsColor structure.
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded.
+ *
+ * Returns a color specification of the color stored in the
+ * specified pixel.
+ */
+{
+ return(_XcmsSetGetColor(XQueryColor, dpy, colormap,
+ pXcmsColor_in_out, result_format, (Bool *) NULL));
+}
diff --git a/libX11/src/xcms/QuCols.c b/libX11/src/xcms/QuCols.c
index 25a38b818..b286935d8 100644
--- a/libX11/src/xcms/QuCols.c
+++ b/libX11/src/xcms/QuCols.c
@@ -1,78 +1,78 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQuCol.c
- *
- * DESCRIPTION
- * Source for XcmsQueryColors
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-/*
- * NAME
- * XcmsQueryColors - Query Colors
- *
- * SYNOPSIS
- */
-Status
-XcmsQueryColors(
- Display *dpy,
- Colormap colormap,
- XcmsColor *pXcmsColors_in_out,
- unsigned int nColors,
- XcmsColorFormat result_format)
-/*
- * DESCRIPTION
- * This routine uses XQueryColors to obtain the X RGB values
- * stored in the specified colormap for the specified pixels.
- * The X RGB values are then converted to the target format as
- * specified by the format component of the XcmsColor structure.
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded.
- *
- * Returns the color specifications of the colors stored in the
- * specified pixels.
- */
-{
- return(_XcmsSetGetColors(XQueryColors, dpy, colormap,
- pXcmsColors_in_out, nColors, result_format, (Bool *) NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQuCol.c
+ *
+ * DESCRIPTION
+ * Source for XcmsQueryColors
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+/*
+ * NAME
+ * XcmsQueryColors - Query Colors
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsQueryColors(
+ Display *dpy,
+ Colormap colormap,
+ XcmsColor *pXcmsColors_in_out,
+ unsigned int nColors,
+ XcmsColorFormat result_format)
+/*
+ * DESCRIPTION
+ * This routine uses XQueryColors to obtain the X RGB values
+ * stored in the specified colormap for the specified pixels.
+ * The X RGB values are then converted to the target format as
+ * specified by the format component of the XcmsColor structure.
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded.
+ *
+ * Returns the color specifications of the colors stored in the
+ * specified pixels.
+ */
+{
+ return(_XcmsSetGetColors(XQueryColors, dpy, colormap,
+ pXcmsColors_in_out, nColors, result_format, (Bool *) NULL));
+}
diff --git a/libX11/src/xcms/SetCCC.c b/libX11/src/xcms/SetCCC.c
index e8171b4ea..8ae6278f8 100644
--- a/libX11/src/xcms/SetCCC.c
+++ b/libX11/src/xcms/SetCCC.c
@@ -1,138 +1,138 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsSetCCC.c - Color Conversion Context Setting Routines
- *
- * DESCRIPTION
- * Routines to set components of a Color Conversion
- * Context structure.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsSetWhitePoint
- *
- * SYNOPSIS
- */
-
-Status
-XcmsSetWhitePoint(
- XcmsCCC ccc,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Sets the Client White Point in the specified CCC.
- *
- * RETURNS
- * Returns XcmsSuccess if succeeded; otherwise XcmsFailure.
- *
- */
-{
- if (pColor == NULL || pColor->format == XcmsUndefinedFormat) {
- ccc->clientWhitePt.format = XcmsUndefinedFormat;
- } else if (pColor->format != XcmsCIEXYZFormat &&
- pColor->format != XcmsCIEuvYFormat &&
- pColor->format != XcmsCIExyYFormat) {
- return(XcmsFailure);
- } else {
- memcpy((char *)&ccc->clientWhitePt, (char *)pColor, sizeof(XcmsColor));
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsSetCompressionProc
- *
- * SYNOPSIS
- */
-
-XcmsCompressionProc
-XcmsSetCompressionProc(
- XcmsCCC ccc,
- XcmsCompressionProc compression_proc,
- XPointer client_data)
-/*
- * DESCRIPTION
- * Set the specified CCC's compression function and client data.
- *
- * RETURNS
- * Returns the old compression function.
- *
- */
-{
- XcmsCompressionProc old = ccc->gamutCompProc;
-
- ccc->gamutCompProc = compression_proc;
- ccc->gamutCompClientData = client_data;
- return(old);
-}
-
-
-/*
- * NAME
- * XcmsSetWhiteAdjustProc
- *
- * SYNOPSIS
- */
-
-XcmsWhiteAdjustProc
-XcmsSetWhiteAdjustProc(
- XcmsCCC ccc,
- XcmsWhiteAdjustProc white_adjust_proc,
- XPointer client_data )
-/*
- * DESCRIPTION
- * Set the specified CCC's white_adjust function and client data.
- *
- * RETURNS
- * Returns the old white_adjust function.
- *
- */
-{
- XcmsWhiteAdjustProc old = ccc->whitePtAdjProc;
-
- ccc->whitePtAdjProc = white_adjust_proc;
- ccc->whitePtAdjClientData = client_data;
- return(old);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsSetCCC.c - Color Conversion Context Setting Routines
+ *
+ * DESCRIPTION
+ * Routines to set components of a Color Conversion
+ * Context structure.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsSetWhitePoint
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsSetWhitePoint(
+ XcmsCCC ccc,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Sets the Client White Point in the specified CCC.
+ *
+ * RETURNS
+ * Returns XcmsSuccess if succeeded; otherwise XcmsFailure.
+ *
+ */
+{
+ if (pColor == NULL || pColor->format == XcmsUndefinedFormat) {
+ ccc->clientWhitePt.format = XcmsUndefinedFormat;
+ } else if (pColor->format != XcmsCIEXYZFormat &&
+ pColor->format != XcmsCIEuvYFormat &&
+ pColor->format != XcmsCIExyYFormat) {
+ return(XcmsFailure);
+ } else {
+ memcpy((char *)&ccc->clientWhitePt, (char *)pColor, sizeof(XcmsColor));
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsSetCompressionProc
+ *
+ * SYNOPSIS
+ */
+
+XcmsCompressionProc
+XcmsSetCompressionProc(
+ XcmsCCC ccc,
+ XcmsCompressionProc compression_proc,
+ XPointer client_data)
+/*
+ * DESCRIPTION
+ * Set the specified CCC's compression function and client data.
+ *
+ * RETURNS
+ * Returns the old compression function.
+ *
+ */
+{
+ XcmsCompressionProc old = ccc->gamutCompProc;
+
+ ccc->gamutCompProc = compression_proc;
+ ccc->gamutCompClientData = client_data;
+ return(old);
+}
+
+
+/*
+ * NAME
+ * XcmsSetWhiteAdjustProc
+ *
+ * SYNOPSIS
+ */
+
+XcmsWhiteAdjustProc
+XcmsSetWhiteAdjustProc(
+ XcmsCCC ccc,
+ XcmsWhiteAdjustProc white_adjust_proc,
+ XPointer client_data )
+/*
+ * DESCRIPTION
+ * Set the specified CCC's white_adjust function and client data.
+ *
+ * RETURNS
+ * Returns the old white_adjust function.
+ *
+ */
+{
+ XcmsWhiteAdjustProc old = ccc->whitePtAdjProc;
+
+ ccc->whitePtAdjProc = white_adjust_proc;
+ ccc->whitePtAdjClientData = client_data;
+ return(old);
+}
diff --git a/libX11/src/xcms/SetGetCols.c b/libX11/src/xcms/SetGetCols.c
index 9b548dbb2..763e6dda4 100644
--- a/libX11/src/xcms/SetGetCols.c
+++ b/libX11/src/xcms/SetGetCols.c
@@ -1,301 +1,301 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsSetGet.c
- *
- * DESCRIPTION
- * Source for _XcmsSetGetColors()
- *
- *
- */
-
-/*
- * EXTERNAL INCLUDES
- * Include files that must be exported to any package or
- * program using this package.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsSetColor -
- *
- * SYNOPSIS
- */
-Status
-_XcmsSetGetColor(
- Status (*xColorProc)(
- Display* /* display */,
- Colormap /* colormap */,
- XColor* /* screen_in_out */),
- Display *dpy,
- Colormap cmap,
- XcmsColor *pColors_in_out,
- XcmsColorFormat result_format,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Routine containing code common to:
- * XcmsAllocColor
- * XcmsQueryColor
- * XcmsStoreColor
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded without gamut compression;
- * XcmsSuccessWithCompression if it succeeded with gamut
- * compression;
- */
-{
- XcmsCCC ccc;
- XColor XColors_in_out;
- Status retval = XcmsSuccess;
-
- /*
- * Argument Checking
- * 1. Assume xColorProc is correct
- * 2. Insure ccc not NULL
- * 3. Assume cmap correct (should be checked by Server)
- * 4. Insure pColors_in_out valid
- * 5. Assume method_in is valid (should be checked by Server)
- */
-
- if (dpy == NULL) {
- return(XcmsFailure);
- }
-
- if (result_format == XcmsUndefinedFormat) {
- return(XcmsFailure);
- }
-
- if ( !((*xColorProc == XAllocColor) || (*xColorProc == XStoreColor)
- || (*xColorProc == XQueryColor)) ) {
- return(XcmsFailure);
- }
-
- if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
- return(XcmsFailure);
- }
-
- if (*xColorProc == XQueryColor) {
- goto Query;
- }
-
- /*
- * Convert to RGB, adjusting for white point differences if necessary.
- */
- if ((retval = XcmsConvertColors(ccc, pColors_in_out, 1, XcmsRGBFormat,
- pCompressed)) == XcmsFailure) {
- return(XcmsFailure);
- }
-
-Query:
- /*
- * Convert XcmsColor to XColor structures
- */
- _XcmsRGB_to_XColor(pColors_in_out, &XColors_in_out, 1);
-
- /*
- * Now make appropriate X Call
- */
- if (*xColorProc == XAllocColor) {
- if ((*xColorProc)(ccc->dpy, cmap, &XColors_in_out) == 0) {
- return(XcmsFailure);
- }
- } else if ((*xColorProc == XQueryColor) || (*xColorProc == XStoreColor)) {
- /* Note: XQueryColor and XStoreColor do not return any Status */
- (*xColorProc)(ccc->dpy, cmap, &XColors_in_out);
- } else {
- return(XcmsFailure);
- }
-
- if ((*xColorProc == XStoreColor)) {
- return(retval);
- }
-
- /*
- * Now, convert the returned XColor (i.e., rgb) to XcmsColor structures
- */
- _XColor_to_XcmsRGB(ccc, &XColors_in_out, pColors_in_out, 1);
-
- /*
- * Then, convert XcmsColor structures to the original specification
- * format. Note that we must use NULL instead of passing
- * pCompressed.
- */
-
- if (result_format != XcmsRGBFormat) {
- if (XcmsConvertColors(ccc, pColors_in_out, 1, result_format,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- return(retval);
-}
-
-/*
- * NAME
- * XcmsSetColors -
- *
- * SYNOPSIS
- */
-Status
-_XcmsSetGetColors(
- Status (*xColorProc)(
- Display* /* display */,
- Colormap /* colormap */,
- XColor* /* screen_in_out */,
- int /* nColors */),
- Display *dpy,
- Colormap cmap,
- XcmsColor *pColors_in_out,
- int nColors,
- XcmsColorFormat result_format,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Routine containing code common to:
- * XcmsQueryColors
- * XcmsStoreColors
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded without gamut compression;
- * XcmsSuccessWithCompression if it succeeded with gamut
- * compression;
- */
-{
- XcmsCCC ccc;
- XColor *pXColors_in_out;
- Status retval = XcmsSuccess;
-
- /*
- * Argument Checking
- * 1. Assume xColorProc is correct
- * 2. Insure ccc not NULL
- * 3. Assume cmap correct (should be checked by Server)
- * 4. Insure pColors_in_out valid
- * 5. Assume method_in is valid (should be checked by Server)
- * 6. Insure nColors > 0
- */
-
- if (dpy == NULL) {
- return(XcmsFailure);
- }
-
- if (nColors == 0) {
- return(XcmsSuccess);
- }
-
- if (result_format == XcmsUndefinedFormat) {
- return(XcmsFailure);
- }
-
- if ( !((*xColorProc == XStoreColors) || (*xColorProc == XQueryColors)) ) {
- return(XcmsFailure);
- }
-
- if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Allocate space for XColors
- */
- if ((pXColors_in_out = (XColor *)Xcalloc(nColors, sizeof(XColor))) ==
- NULL) {
- return(XcmsFailure);
- }
-
- if (*xColorProc == XQueryColors) {
- goto Query;
- }
-
- /*
- * Convert to RGB, adjusting for white point differences if necessary.
- */
- if ((retval = XcmsConvertColors(ccc, pColors_in_out, nColors, XcmsRGBFormat,
- pCompressed)) == XcmsFailure) {
- Xfree((char *)pXColors_in_out);
- return(XcmsFailure);
- }
-
-Query:
- /*
- * Convert XcmsColor to XColor structures
- */
- _XcmsRGB_to_XColor(pColors_in_out, pXColors_in_out, nColors);
-
- /*
- * Now make appropriate X Call
- */
- if ((*xColorProc == XQueryColors) || (*xColorProc == XStoreColors)){
- /* Note: XQueryColors and XStoreColors do not return any Status */
- (*xColorProc)(ccc->dpy, cmap, pXColors_in_out, nColors);
- } else {
- Xfree((char *)pXColors_in_out);
- return(XcmsFailure);
- }
-
- if (*xColorProc == XStoreColors) {
- Xfree((char *)pXColors_in_out);
- return(retval);
- }
-
- /*
- * Now, convert the returned XColor (i.e., rgb) to XcmsColor structures
- */
- _XColor_to_XcmsRGB(ccc, pXColors_in_out, pColors_in_out, nColors);
- Xfree((char *)pXColors_in_out);
-
- /*
- * Then, convert XcmsColor structures to the original specification
- * format. Note that we must use NULL instead of passing
- * pCompressed.
- */
- if (result_format != XcmsRGBFormat) {
- if (XcmsConvertColors(ccc, pColors_in_out, nColors, result_format,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- return(retval);
-}
-
-/* ### EOF ### */
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsSetGet.c
+ *
+ * DESCRIPTION
+ * Source for _XcmsSetGetColors()
+ *
+ *
+ */
+
+/*
+ * EXTERNAL INCLUDES
+ * Include files that must be exported to any package or
+ * program using this package.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsSetColor -
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsSetGetColor(
+ Status (*xColorProc)(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* screen_in_out */),
+ Display *dpy,
+ Colormap cmap,
+ XcmsColor *pColors_in_out,
+ XcmsColorFormat result_format,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Routine containing code common to:
+ * XcmsAllocColor
+ * XcmsQueryColor
+ * XcmsStoreColor
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded without gamut compression;
+ * XcmsSuccessWithCompression if it succeeded with gamut
+ * compression;
+ */
+{
+ XcmsCCC ccc;
+ XColor XColors_in_out;
+ Status retval = XcmsSuccess;
+
+ /*
+ * Argument Checking
+ * 1. Assume xColorProc is correct
+ * 2. Insure ccc not NULL
+ * 3. Assume cmap correct (should be checked by Server)
+ * 4. Insure pColors_in_out valid
+ * 5. Assume method_in is valid (should be checked by Server)
+ */
+
+ if (dpy == NULL) {
+ return(XcmsFailure);
+ }
+
+ if (result_format == XcmsUndefinedFormat) {
+ return(XcmsFailure);
+ }
+
+ if ( !((*xColorProc == XAllocColor) || (*xColorProc == XStoreColor)
+ || (*xColorProc == XQueryColor)) ) {
+ return(XcmsFailure);
+ }
+
+ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
+ return(XcmsFailure);
+ }
+
+ if (*xColorProc == XQueryColor) {
+ goto Query;
+ }
+
+ /*
+ * Convert to RGB, adjusting for white point differences if necessary.
+ */
+ if ((retval = XcmsConvertColors(ccc, pColors_in_out, 1, XcmsRGBFormat,
+ pCompressed)) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+Query:
+ /*
+ * Convert XcmsColor to XColor structures
+ */
+ _XcmsRGB_to_XColor(pColors_in_out, &XColors_in_out, 1);
+
+ /*
+ * Now make appropriate X Call
+ */
+ if (*xColorProc == XAllocColor) {
+ if ((*xColorProc)(ccc->dpy, cmap, &XColors_in_out) == 0) {
+ return(XcmsFailure);
+ }
+ } else if ((*xColorProc == XQueryColor) || (*xColorProc == XStoreColor)) {
+ /* Note: XQueryColor and XStoreColor do not return any Status */
+ (*xColorProc)(ccc->dpy, cmap, &XColors_in_out);
+ } else {
+ return(XcmsFailure);
+ }
+
+ if ((*xColorProc == XStoreColor)) {
+ return(retval);
+ }
+
+ /*
+ * Now, convert the returned XColor (i.e., rgb) to XcmsColor structures
+ */
+ _XColor_to_XcmsRGB(ccc, &XColors_in_out, pColors_in_out, 1);
+
+ /*
+ * Then, convert XcmsColor structures to the original specification
+ * format. Note that we must use NULL instead of passing
+ * pCompressed.
+ */
+
+ if (result_format != XcmsRGBFormat) {
+ if (XcmsConvertColors(ccc, pColors_in_out, 1, result_format,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ return(retval);
+}
+
+/*
+ * NAME
+ * XcmsSetColors -
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsSetGetColors(
+ Status (*xColorProc)(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* screen_in_out */,
+ int /* nColors */),
+ Display *dpy,
+ Colormap cmap,
+ XcmsColor *pColors_in_out,
+ int nColors,
+ XcmsColorFormat result_format,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Routine containing code common to:
+ * XcmsQueryColors
+ * XcmsStoreColors
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded without gamut compression;
+ * XcmsSuccessWithCompression if it succeeded with gamut
+ * compression;
+ */
+{
+ XcmsCCC ccc;
+ XColor *pXColors_in_out;
+ Status retval = XcmsSuccess;
+
+ /*
+ * Argument Checking
+ * 1. Assume xColorProc is correct
+ * 2. Insure ccc not NULL
+ * 3. Assume cmap correct (should be checked by Server)
+ * 4. Insure pColors_in_out valid
+ * 5. Assume method_in is valid (should be checked by Server)
+ * 6. Insure nColors > 0
+ */
+
+ if (dpy == NULL) {
+ return(XcmsFailure);
+ }
+
+ if (nColors == 0) {
+ return(XcmsSuccess);
+ }
+
+ if (result_format == XcmsUndefinedFormat) {
+ return(XcmsFailure);
+ }
+
+ if ( !((*xColorProc == XStoreColors) || (*xColorProc == XQueryColors)) ) {
+ return(XcmsFailure);
+ }
+
+ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Allocate space for XColors
+ */
+ if ((pXColors_in_out = (XColor *)Xcalloc(nColors, sizeof(XColor))) ==
+ NULL) {
+ return(XcmsFailure);
+ }
+
+ if (*xColorProc == XQueryColors) {
+ goto Query;
+ }
+
+ /*
+ * Convert to RGB, adjusting for white point differences if necessary.
+ */
+ if ((retval = XcmsConvertColors(ccc, pColors_in_out, nColors, XcmsRGBFormat,
+ pCompressed)) == XcmsFailure) {
+ Xfree((char *)pXColors_in_out);
+ return(XcmsFailure);
+ }
+
+Query:
+ /*
+ * Convert XcmsColor to XColor structures
+ */
+ _XcmsRGB_to_XColor(pColors_in_out, pXColors_in_out, nColors);
+
+ /*
+ * Now make appropriate X Call
+ */
+ if ((*xColorProc == XQueryColors) || (*xColorProc == XStoreColors)){
+ /* Note: XQueryColors and XStoreColors do not return any Status */
+ (*xColorProc)(ccc->dpy, cmap, pXColors_in_out, nColors);
+ } else {
+ Xfree((char *)pXColors_in_out);
+ return(XcmsFailure);
+ }
+
+ if (*xColorProc == XStoreColors) {
+ Xfree((char *)pXColors_in_out);
+ return(retval);
+ }
+
+ /*
+ * Now, convert the returned XColor (i.e., rgb) to XcmsColor structures
+ */
+ _XColor_to_XcmsRGB(ccc, pXColors_in_out, pColors_in_out, nColors);
+ Xfree((char *)pXColors_in_out);
+
+ /*
+ * Then, convert XcmsColor structures to the original specification
+ * format. Note that we must use NULL instead of passing
+ * pCompressed.
+ */
+ if (result_format != XcmsRGBFormat) {
+ if (XcmsConvertColors(ccc, pColors_in_out, nColors, result_format,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ return(retval);
+}
+
+/* ### EOF ### */
diff --git a/libX11/src/xcms/StCol.c b/libX11/src/xcms/StCol.c
index 941ad0743..b882ff706 100644
--- a/libX11/src/xcms/StCol.c
+++ b/libX11/src/xcms/StCol.c
@@ -1,82 +1,82 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsStCol.c
- *
- * DESCRIPTION
- * Source for XcmsStoreColor
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsStoreColor - Store Color
- *
- * SYNOPSIS
- */
-Status
-XcmsStoreColor(
- Display *dpy,
- Colormap colormap,
- XcmsColor *pColor_in)
-/*
- * DESCRIPTION
- * Given a device-dependent or device-independent color
- * specification, this routine will convert it to X RGB
- * values then use it in a call to XStoreColor.
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded without gamut compression;
- * XcmsSuccessWithCompression if it succeeded with gamut
- * compression;
- *
- * Since XStoreColor has no return value this routine
- * does not return the color specification of the color actually
- * stored.
- */
-{
- XcmsColor tmpColor;
-
- tmpColor = *pColor_in;
- return(_XcmsSetGetColor(XStoreColor, dpy, colormap,
- &tmpColor, XcmsRGBFormat, (Bool *) NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsStCol.c
+ *
+ * DESCRIPTION
+ * Source for XcmsStoreColor
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsStoreColor - Store Color
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsStoreColor(
+ Display *dpy,
+ Colormap colormap,
+ XcmsColor *pColor_in)
+/*
+ * DESCRIPTION
+ * Given a device-dependent or device-independent color
+ * specification, this routine will convert it to X RGB
+ * values then use it in a call to XStoreColor.
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded without gamut compression;
+ * XcmsSuccessWithCompression if it succeeded with gamut
+ * compression;
+ *
+ * Since XStoreColor has no return value this routine
+ * does not return the color specification of the color actually
+ * stored.
+ */
+{
+ XcmsColor tmpColor;
+
+ tmpColor = *pColor_in;
+ return(_XcmsSetGetColor(XStoreColor, dpy, colormap,
+ &tmpColor, XcmsRGBFormat, (Bool *) NULL));
+}
diff --git a/libX11/src/xcms/StCols.c b/libX11/src/xcms/StCols.c
index 24ccd386f..01ad78115 100644
--- a/libX11/src/xcms/StCols.c
+++ b/libX11/src/xcms/StCols.c
@@ -1,112 +1,112 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsStCols.c
- *
- * DESCRIPTION
- * Source for XcmsStoreColors
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsStoreColors - Store Colors
- *
- * SYNOPSIS
- */
-Status
-XcmsStoreColors(
- Display *dpy,
- Colormap colormap,
- XcmsColor *pColors_in,
- unsigned int nColors,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Given device-dependent or device-independent color
- * specifications, this routine will convert them to X RGB
- * values then use it in a call to XStoreColors.
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded without gamut compression;
- * XcmsSuccessWithCompression if it succeeded with gamut
- * compression;
- *
- * Since XStoreColors has no return value, this routine
- * does not return color specifications of the colors actually
- * stored.
- */
-{
- XcmsColor Color1;
- XcmsColor *pColors_tmp;
- Status retval;
-
- /*
- * Make copy of array of color specifications so we don't
- * overwrite the contents.
- */
- if (nColors > 1) {
- pColors_tmp = (XcmsColor *) Xmalloc(nColors * sizeof(XcmsColor));
- } else {
- pColors_tmp = &Color1;
- }
- memcpy((char *)pColors_tmp, (char *)pColors_in,
- nColors * sizeof(XcmsColor));
-
- /*
- * Call routine to store colors using the copied color structures
- */
- retval = _XcmsSetGetColors (XStoreColors, dpy, colormap,
- pColors_tmp, nColors, XcmsRGBFormat, pCompressed);
-
- /*
- * Free copies as needed.
- */
- if (nColors > 1) {
- Xfree((char *)pColors_tmp);
- }
-
- /*
- * Ah, finally return.
- */
- return(retval);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsStCols.c
+ *
+ * DESCRIPTION
+ * Source for XcmsStoreColors
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsStoreColors - Store Colors
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsStoreColors(
+ Display *dpy,
+ Colormap colormap,
+ XcmsColor *pColors_in,
+ unsigned int nColors,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Given device-dependent or device-independent color
+ * specifications, this routine will convert them to X RGB
+ * values then use it in a call to XStoreColors.
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded without gamut compression;
+ * XcmsSuccessWithCompression if it succeeded with gamut
+ * compression;
+ *
+ * Since XStoreColors has no return value, this routine
+ * does not return color specifications of the colors actually
+ * stored.
+ */
+{
+ XcmsColor Color1;
+ XcmsColor *pColors_tmp;
+ Status retval;
+
+ /*
+ * Make copy of array of color specifications so we don't
+ * overwrite the contents.
+ */
+ if (nColors > 1) {
+ pColors_tmp = (XcmsColor *) Xmalloc(nColors * sizeof(XcmsColor));
+ } else {
+ pColors_tmp = &Color1;
+ }
+ memcpy((char *)pColors_tmp, (char *)pColors_in,
+ nColors * sizeof(XcmsColor));
+
+ /*
+ * Call routine to store colors using the copied color structures
+ */
+ retval = _XcmsSetGetColors (XStoreColors, dpy, colormap,
+ pColors_tmp, nColors, XcmsRGBFormat, pCompressed);
+
+ /*
+ * Free copies as needed.
+ */
+ if (nColors > 1) {
+ Xfree((char *)pColors_tmp);
+ }
+
+ /*
+ * Ah, finally return.
+ */
+ return(retval);
+}
diff --git a/libX11/src/xcms/UNDEFINED.c b/libX11/src/xcms/UNDEFINED.c
index 7b1bdb68c..d7a3631fc 100644
--- a/libX11/src/xcms/UNDEFINED.c
+++ b/libX11/src/xcms/UNDEFINED.c
@@ -1,131 +1,131 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * UNDEFINED.c
- *
- * DESCRIPTION
- * UNDEFINED Color Space
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-
-/*
- * FORWARD DECLARATIONS
- */
-static int DummyParseStringProc(
- char* /* color_string */,
- XcmsColor* /* color_return */
- );
-static Status ReturnZero(
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
- );
-
-
-/*
- * LOCALS VARIABLES
- */
-
-static Status (*(Fl_ReturnZero[]))(
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
- ) = {
- ReturnZero,
- NULL
-};
-
-
-/*
- * GLOBALS
- * Variables declared in this package that are allowed
- * to be used globally.
- */
- /*
- * UNDEFINED Color Space
- */
-XcmsColorSpace XcmsUNDEFINEDColorSpace =
- {
- "undefined", /* prefix */
- XcmsUndefinedFormat, /* id */
- &DummyParseStringProc, /* parseString */
- Fl_ReturnZero, /* to_CIEXYZ */
- Fl_ReturnZero /* from_CIEXYZ */
- };
-
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * ReturnZero
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-static Status
-ReturnZero(
- XcmsCCC ccc /* ccc */,
- XcmsColor* white /* white_point */,
- XcmsColor* colors /* colors */,
- unsigned int ncolors /* ncolors */
- )
-/*
- * DESCRIPTION
- * Does nothing.
- *
- * RETURNS
- * 0
- *
- */
-{
- return(0);
-}
-
-static int DummyParseStringProc(
- char* color_string /* color_string */,
- XcmsColor* color_return /* color_return */
- )
-{
- return(0);
-}
-
-/* ### EOF ### */
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * UNDEFINED.c
+ *
+ * DESCRIPTION
+ * UNDEFINED Color Space
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+
+/*
+ * FORWARD DECLARATIONS
+ */
+static int DummyParseStringProc(
+ char* /* color_string */,
+ XcmsColor* /* color_return */
+ );
+static Status ReturnZero(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+ );
+
+
+/*
+ * LOCALS VARIABLES
+ */
+
+static Status (*(Fl_ReturnZero[]))(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+ ) = {
+ ReturnZero,
+ NULL
+};
+
+
+/*
+ * GLOBALS
+ * Variables declared in this package that are allowed
+ * to be used globally.
+ */
+ /*
+ * UNDEFINED Color Space
+ */
+XcmsColorSpace XcmsUNDEFINEDColorSpace =
+ {
+ "undefined", /* prefix */
+ XcmsUndefinedFormat, /* id */
+ &DummyParseStringProc, /* parseString */
+ Fl_ReturnZero, /* to_CIEXYZ */
+ Fl_ReturnZero /* from_CIEXYZ */
+ };
+
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * ReturnZero
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+static Status
+ReturnZero(
+ XcmsCCC ccc /* ccc */,
+ XcmsColor* white /* white_point */,
+ XcmsColor* colors /* colors */,
+ unsigned int ncolors /* ncolors */
+ )
+/*
+ * DESCRIPTION
+ * Does nothing.
+ *
+ * RETURNS
+ * 0
+ *
+ */
+{
+ return(0);
+}
+
+static int DummyParseStringProc(
+ char* color_string /* color_string */,
+ XcmsColor* color_return /* color_return */
+ )
+{
+ return(0);
+}
+
+/* ### EOF ### */
diff --git a/libX11/src/xcms/XRGB.c b/libX11/src/xcms/XRGB.c
index 03f980e99..d9db8c074 100644
--- a/libX11/src/xcms/XRGB.c
+++ b/libX11/src/xcms/XRGB.c
@@ -1,242 +1,242 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsRtoX.c
- *
- * DESCRIPTION
- * Convert color specifications in XcmsRGB format in one array of
- * XcmsColor structures to RGB in an array of XColor structures.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * LOCAL VARIABLES
- */
-
-static unsigned short const MASK[17] = {
- 0x0000, /* 0 bitsPerRGB */
- 0x8000, /* 1 bitsPerRGB */
- 0xc000, /* 2 bitsPerRGB */
- 0xe000, /* 3 bitsPerRGB */
- 0xf000, /* 4 bitsPerRGB */
- 0xf800, /* 5 bitsPerRGB */
- 0xfc00, /* 6 bitsPerRGB */
- 0xfe00, /* 7 bitsPerRGB */
- 0xff00, /* 8 bitsPerRGB */
- 0xff80, /* 9 bitsPerRGB */
- 0xffc0, /* 10 bitsPerRGB */
- 0xffe0, /* 11 bitsPerRGB */
- 0xfff0, /* 12 bitsPerRGB */
- 0xfff8, /* 13 bitsPerRGB */
- 0xfffc, /* 14 bitsPerRGB */
- 0xfffe, /* 15 bitsPerRGB */
- 0xffff /* 16 bitsPerRGB */
-};
-
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsRGB_to_XColor -
- *
- * SYNOPSIS
- */
-void
-_XcmsRGB_to_XColor(
- XcmsColor *pColors,
- XColor *pXColors,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Translates a color specification in XcmsRGBFormat in a XcmsColor
- * structure to an XColor structure.
- *
- * RETURNS
- * void.
- */
-{
- for (; nColors--; pXColors++, pColors++) {
- pXColors->pixel = pColors->pixel;
- pXColors->red = pColors->spec.RGB.red;
- pXColors->green = pColors->spec.RGB.green;
- pXColors->blue = pColors->spec.RGB.blue;
- pXColors->flags = (DoRed | DoGreen | DoBlue);
- }
-}
-
-
-/*
- * NAME
- * _XColor_to_XcmsRGB
- *
- * SYNOPSIS
- */
-void
-_XColor_to_XcmsRGB(
- XcmsCCC ccc,
- XColor *pXColors,
- XcmsColor *pColors,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Translates an RGB color specification in an XColor
- * structure to an XcmsRGB structure.
- *
- * IMPORTANT NOTE: Bit replication that may have been caused
- * with ResolveColor() routine in the X Server is undone
- * here if requested! For example, if red = 0xcaca and the
- * bits_per_rgb is 8, then spec.RGB.red will be 0xca00.
- *
- * RETURNS
- * void
- */
-{
- int bits_per_rgb = ccc->visual->bits_per_rgb;
-
- for (; nColors--; pXColors++, pColors++) {
- pColors->spec.RGB.red = (pXColors->red & MASK[bits_per_rgb]);
- pColors->spec.RGB.green = (pXColors->green & MASK[bits_per_rgb]);
- pColors->spec.RGB.blue = (pXColors->blue & MASK[bits_per_rgb]);
- pColors->format = XcmsRGBFormat;
- pColors->pixel = pXColors->pixel;
- }
-}
-
-
-/*
- * NAME
- * _XcmsResolveColor
- *
- * SYNOPSIS
- */
-void
-_XcmsResolveColor(
- XcmsCCC ccc,
- XcmsColor *pXcmsColor)
-/*
- * DESCRIPTION
- * Uses the X Server ResolveColor() algorithm to
- * modify values to closest values supported by hardware.
- * Old algorithm simply masked low-order bits. The new algorithm
- * has the effect of replicating significant bits into lower order
- * bits in order to stretch the hardware value into all 16 bits.
- *
- * On a display with N-bit DACs, the "hardware" color is computed as:
- *
- * ((unsignedlong)(ClientValue >> (16-N)) * 0xFFFF) / ((1 << N) - 1)
- *
- *
- * RETURNS
- * void.
- */
-{
- int shift;
- int max_color;
-
- shift = 16 - ccc->visual->bits_per_rgb;
- max_color = (1 << ccc->visual->bits_per_rgb) - 1;
-
-
- pXcmsColor->spec.RGB.red =
- ((unsigned long)(pXcmsColor->spec.RGB.red >> shift) * 0xFFFF)
- / max_color;
- pXcmsColor->spec.RGB.green =
- ((unsigned long)(pXcmsColor->spec.RGB.green >> shift) * 0xFFFF)
- / max_color;
- pXcmsColor->spec.RGB.blue =
- ((unsigned long)(pXcmsColor->spec.RGB.blue >> shift) * 0xFFFF)
- / max_color;
-}
-
-
-/*
- * NAME
- * _XcmsUnresolveColor
- *
- * SYNOPSIS
- */
-void
-_XcmsUnresolveColor(
- XcmsCCC ccc,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Masks out insignificant bits.
- *
- * RETURNS
- * void.
- *
- * ASSUMPTIONS
- * format == XcmsRGBFormat
- */
-{
- int bits_per_rgb = ccc->visual->bits_per_rgb;
-
- pColor->spec.RGB.red &= MASK[bits_per_rgb];
- pColor->spec.RGB.green &= MASK[bits_per_rgb];
- pColor->spec.RGB.blue &= MASK[bits_per_rgb];
-}
-
-
-/*
- * NAME
- * _XUnresolveColor
- *
- * SYNOPSIS
- */
-void
-_XUnresolveColor(
- XcmsCCC ccc,
- XColor *pXColor)
-/*
- * DESCRIPTION
- * Masks out insignificant bits.
- *
- * RETURNS
- * void.
- */
-{
- int bits_per_rgb = ccc->visual->bits_per_rgb;
-
- pXColor->red &= MASK[bits_per_rgb];
- pXColor->green &= MASK[bits_per_rgb];
- pXColor->blue &= MASK[bits_per_rgb];
-}
-
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsRtoX.c
+ *
+ * DESCRIPTION
+ * Convert color specifications in XcmsRGB format in one array of
+ * XcmsColor structures to RGB in an array of XColor structures.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * LOCAL VARIABLES
+ */
+
+static unsigned short const MASK[17] = {
+ 0x0000, /* 0 bitsPerRGB */
+ 0x8000, /* 1 bitsPerRGB */
+ 0xc000, /* 2 bitsPerRGB */
+ 0xe000, /* 3 bitsPerRGB */
+ 0xf000, /* 4 bitsPerRGB */
+ 0xf800, /* 5 bitsPerRGB */
+ 0xfc00, /* 6 bitsPerRGB */
+ 0xfe00, /* 7 bitsPerRGB */
+ 0xff00, /* 8 bitsPerRGB */
+ 0xff80, /* 9 bitsPerRGB */
+ 0xffc0, /* 10 bitsPerRGB */
+ 0xffe0, /* 11 bitsPerRGB */
+ 0xfff0, /* 12 bitsPerRGB */
+ 0xfff8, /* 13 bitsPerRGB */
+ 0xfffc, /* 14 bitsPerRGB */
+ 0xfffe, /* 15 bitsPerRGB */
+ 0xffff /* 16 bitsPerRGB */
+};
+
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsRGB_to_XColor -
+ *
+ * SYNOPSIS
+ */
+void
+_XcmsRGB_to_XColor(
+ XcmsColor *pColors,
+ XColor *pXColors,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Translates a color specification in XcmsRGBFormat in a XcmsColor
+ * structure to an XColor structure.
+ *
+ * RETURNS
+ * void.
+ */
+{
+ for (; nColors--; pXColors++, pColors++) {
+ pXColors->pixel = pColors->pixel;
+ pXColors->red = pColors->spec.RGB.red;
+ pXColors->green = pColors->spec.RGB.green;
+ pXColors->blue = pColors->spec.RGB.blue;
+ pXColors->flags = (DoRed | DoGreen | DoBlue);
+ }
+}
+
+
+/*
+ * NAME
+ * _XColor_to_XcmsRGB
+ *
+ * SYNOPSIS
+ */
+void
+_XColor_to_XcmsRGB(
+ XcmsCCC ccc,
+ XColor *pXColors,
+ XcmsColor *pColors,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Translates an RGB color specification in an XColor
+ * structure to an XcmsRGB structure.
+ *
+ * IMPORTANT NOTE: Bit replication that may have been caused
+ * with ResolveColor() routine in the X Server is undone
+ * here if requested! For example, if red = 0xcaca and the
+ * bits_per_rgb is 8, then spec.RGB.red will be 0xca00.
+ *
+ * RETURNS
+ * void
+ */
+{
+ int bits_per_rgb = ccc->visual->bits_per_rgb;
+
+ for (; nColors--; pXColors++, pColors++) {
+ pColors->spec.RGB.red = (pXColors->red & MASK[bits_per_rgb]);
+ pColors->spec.RGB.green = (pXColors->green & MASK[bits_per_rgb]);
+ pColors->spec.RGB.blue = (pXColors->blue & MASK[bits_per_rgb]);
+ pColors->format = XcmsRGBFormat;
+ pColors->pixel = pXColors->pixel;
+ }
+}
+
+
+/*
+ * NAME
+ * _XcmsResolveColor
+ *
+ * SYNOPSIS
+ */
+void
+_XcmsResolveColor(
+ XcmsCCC ccc,
+ XcmsColor *pXcmsColor)
+/*
+ * DESCRIPTION
+ * Uses the X Server ResolveColor() algorithm to
+ * modify values to closest values supported by hardware.
+ * Old algorithm simply masked low-order bits. The new algorithm
+ * has the effect of replicating significant bits into lower order
+ * bits in order to stretch the hardware value into all 16 bits.
+ *
+ * On a display with N-bit DACs, the "hardware" color is computed as:
+ *
+ * ((unsignedlong)(ClientValue >> (16-N)) * 0xFFFF) / ((1 << N) - 1)
+ *
+ *
+ * RETURNS
+ * void.
+ */
+{
+ int shift;
+ int max_color;
+
+ shift = 16 - ccc->visual->bits_per_rgb;
+ max_color = (1 << ccc->visual->bits_per_rgb) - 1;
+
+
+ pXcmsColor->spec.RGB.red =
+ ((unsigned long)(pXcmsColor->spec.RGB.red >> shift) * 0xFFFF)
+ / max_color;
+ pXcmsColor->spec.RGB.green =
+ ((unsigned long)(pXcmsColor->spec.RGB.green >> shift) * 0xFFFF)
+ / max_color;
+ pXcmsColor->spec.RGB.blue =
+ ((unsigned long)(pXcmsColor->spec.RGB.blue >> shift) * 0xFFFF)
+ / max_color;
+}
+
+
+/*
+ * NAME
+ * _XcmsUnresolveColor
+ *
+ * SYNOPSIS
+ */
+void
+_XcmsUnresolveColor(
+ XcmsCCC ccc,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Masks out insignificant bits.
+ *
+ * RETURNS
+ * void.
+ *
+ * ASSUMPTIONS
+ * format == XcmsRGBFormat
+ */
+{
+ int bits_per_rgb = ccc->visual->bits_per_rgb;
+
+ pColor->spec.RGB.red &= MASK[bits_per_rgb];
+ pColor->spec.RGB.green &= MASK[bits_per_rgb];
+ pColor->spec.RGB.blue &= MASK[bits_per_rgb];
+}
+
+
+/*
+ * NAME
+ * _XUnresolveColor
+ *
+ * SYNOPSIS
+ */
+void
+_XUnresolveColor(
+ XcmsCCC ccc,
+ XColor *pXColor)
+/*
+ * DESCRIPTION
+ * Masks out insignificant bits.
+ *
+ * RETURNS
+ * void.
+ */
+{
+ int bits_per_rgb = ccc->visual->bits_per_rgb;
+
+ pXColor->red &= MASK[bits_per_rgb];
+ pXColor->green &= MASK[bits_per_rgb];
+ pXColor->blue &= MASK[bits_per_rgb];
+}
+
diff --git a/libX11/src/xcms/XYZ.c b/libX11/src/xcms/XYZ.c
index 40d6ed3bb..82215478b 100644
--- a/libX11/src/xcms/XYZ.c
+++ b/libX11/src/xcms/XYZ.c
@@ -1,203 +1,203 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * CIEXYZ.c
- *
- * DESCRIPTION
- * CIE XYZ Color Space
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-#include <stdio.h> /* sscanf */
-
-/*
- * DEFINES
- * Internal definitions that need NOT be exported to any package
- * or program using this package.
- */
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-
-/*
- * FORWARD DECLARATIONS
- */
-static int CIEXYZ_ParseString(register char *spec, XcmsColor *pColor);
-
-/*
- * LOCALS VARIABLES
- */
-
-static XcmsConversionProc Fl_CIEXYZ_to_CIEXYZ[] = {
- NULL
-};
-
-
-
-/*
- * GLOBALS
- * Variables declared in this package that are allowed
- * to be used globally.
- */
- /*
- * CIE XYZ Color Space
- */
-XcmsColorSpace XcmsCIEXYZColorSpace =
- {
- _XcmsCIEXYZ_prefix, /* prefix */
- XcmsCIEXYZFormat, /* id */
- CIEXYZ_ParseString, /* parseString */
- Fl_CIEXYZ_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_CIEXYZ, /* from_CIEXYZ */
- 1
- };
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIEXYZ_ParseString
- *
- * SYNOPSIS
- */
-static int
-CIEXYZ_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsCIEXYZFormat.
- * The assumed CIEXYZ string syntax is:
- * CIEXYZ:<X>/<Y>/<Z>
- * Where X, Y, and Z are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsCIEXYZ_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIEXYZ.X,
- &pColor->spec.CIEXYZ.Y,
- &pColor->spec.CIEXYZ.Z) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIEXYZ.X,
- &pColor->spec.CIEXYZ.Y,
- &pColor->spec.CIEXYZ.Z) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsCIEXYZFormat;
- pColor->pixel = 0;
- return(_XcmsCIEXYZ_ValidSpec(pColor));
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELab_ValidSpec
- *
- * SYNOPSIS
- */
-Status
-_XcmsCIEXYZ_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if color specification valid for CIE XYZ
- *
- * RETURNS
- * XcmsFailure if invalid,
- * XcmsSuccess if valid.
- *
- */
-{
- if (pColor->format != XcmsCIEXYZFormat
- ||
- (pColor->spec.CIEXYZ.Y < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIEXYZ.Y > 1.0 + XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * CIEXYZ.c
+ *
+ * DESCRIPTION
+ * CIE XYZ Color Space
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+#include <stdio.h> /* sscanf */
+
+/*
+ * DEFINES
+ * Internal definitions that need NOT be exported to any package
+ * or program using this package.
+ */
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+
+/*
+ * FORWARD DECLARATIONS
+ */
+static int CIEXYZ_ParseString(register char *spec, XcmsColor *pColor);
+
+/*
+ * LOCALS VARIABLES
+ */
+
+static XcmsConversionProc Fl_CIEXYZ_to_CIEXYZ[] = {
+ NULL
+};
+
+
+
+/*
+ * GLOBALS
+ * Variables declared in this package that are allowed
+ * to be used globally.
+ */
+ /*
+ * CIE XYZ Color Space
+ */
+XcmsColorSpace XcmsCIEXYZColorSpace =
+ {
+ _XcmsCIEXYZ_prefix, /* prefix */
+ XcmsCIEXYZFormat, /* id */
+ CIEXYZ_ParseString, /* parseString */
+ Fl_CIEXYZ_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_CIEXYZ, /* from_CIEXYZ */
+ 1
+ };
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIEXYZ_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+CIEXYZ_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsCIEXYZFormat.
+ * The assumed CIEXYZ string syntax is:
+ * CIEXYZ:<X>/<Y>/<Z>
+ * Where X, Y, and Z are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsCIEXYZ_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIEXYZ.X,
+ &pColor->spec.CIEXYZ.Y,
+ &pColor->spec.CIEXYZ.Z) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIEXYZ.X,
+ &pColor->spec.CIEXYZ.Y,
+ &pColor->spec.CIEXYZ.Z) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsCIEXYZFormat;
+ pColor->pixel = 0;
+ return(_XcmsCIEXYZ_ValidSpec(pColor));
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELab_ValidSpec
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsCIEXYZ_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if color specification valid for CIE XYZ
+ *
+ * RETURNS
+ * XcmsFailure if invalid,
+ * XcmsSuccess if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsCIEXYZFormat
+ ||
+ (pColor->spec.CIEXYZ.Y < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIEXYZ.Y > 1.0 + XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/Xcms.txt b/libX11/src/xcms/Xcms.txt
index 1c5b1adec..bf302d17f 100644
--- a/libX11/src/xcms/Xcms.txt
+++ b/libX11/src/xcms/Xcms.txt
@@ -1,44 +1,44 @@
-/*
- * (c) Copyright 1990 1991 Tektronix Inc.
- * 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 name of Tektronix not be used
- * in advertising or publicity pertaining to distribution of the software
- * without specific, written prior permission.
- *
- * Tektronix disclaims all warranties with regard to this software, including
- * all implied warranties of merchantability and fitness, in no event shall
- * Tektronix 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.
- *
- *
- * NAME
- * Xcms.txt
- *
- * DESCRIPTION
- * Sample Color Name Database
- *
- */
-
-
-This device-independent color name database is provided just as an example.
-There are no claims that these color specifications are or should be bound
-to the corresponding color name.
-
-As you can see, the start of the database is indicated by "XCMS_COLORDB_START".
-Anything before this is assumed to be comments. The "0.1" indicates the
-version number of the format/syntax used in this file. The color name is
-delimited from the color specification by one or more tabs.
-
-XCMS_COLORDB_START 0.1
-cms red CIEXYZ:0.3811/0.2073/0.0213
-cms green CIEXYZ:0.3203/0.6805/0.1430
-cms blue CIEXYZ:0.2483/0.1122/1.2417
-XCMS_COLORDB_END
+/*
+ * (c) Copyright 1990 1991 Tektronix Inc.
+ * 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 name of Tektronix not be used
+ * in advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+ *
+ * Tektronix disclaims all warranties with regard to this software, including
+ * all implied warranties of merchantability and fitness, in no event shall
+ * Tektronix 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.
+ *
+ *
+ * NAME
+ * Xcms.txt
+ *
+ * DESCRIPTION
+ * Sample Color Name Database
+ *
+ */
+
+
+This device-independent color name database is provided just as an example.
+There are no claims that these color specifications are or should be bound
+to the corresponding color name.
+
+As you can see, the start of the database is indicated by "XCMS_COLORDB_START".
+Anything before this is assumed to be comments. The "0.1" indicates the
+version number of the format/syntax used in this file. The color name is
+delimited from the color specification by one or more tabs.
+
+XCMS_COLORDB_START 0.1
+cms red CIEXYZ:0.3811/0.2073/0.0213
+cms green CIEXYZ:0.3203/0.6805/0.1430
+cms blue CIEXYZ:0.2483/0.1122/1.2417
+XCMS_COLORDB_END
diff --git a/libX11/src/xcms/Xcmsint.h b/libX11/src/xcms/Xcmsint.h
index 75d947184..a28a2ff60 100644
--- a/libX11/src/xcms/Xcmsint.h
+++ b/libX11/src/xcms/Xcmsint.h
@@ -1,260 +1,260 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * DESCRIPTION
- * Private include file for Color Management System.
- * (i.e., for API internal use only)
- *
- */
-
-#ifndef _XCMSINT_H_
-#define _XCMSINT_H_
-
-#include <X11/Xcms.h>
-
-/*
- * DEFINES
- */
-
- /*
- * Private Status Value
- */
-#define _XCMS_NEWNAME -1
-
- /*
- * Color Space ID's are of XcmsColorFormat type.
- *
- * bit 31
- * 0 == Device-Independent
- * 1 == Device-Dependent
- *
- * bit 30:
- * 0 == Registered with X Consortium
- * 1 == Unregistered
- */
-#define XCMS_DD_ID(id) ((id) & (XcmsColorFormat)0x80000000)
-#define XCMS_DI_ID(id) (!((id) & (XcmsColorFormat)0x80000000))
-#define XCMS_UNREG_ID(id) ((id) & (XcmsColorFormat)0x40000000)
-#define XCMS_REG_ID(id) (!((id) & (XcmsColorFormat)0x40000000))
-#define XCMS_FIRST_REG_DI_ID (XcmsColorFormat)0x00000001
-#define XCMS_FIRST_UNREG_DI_ID (XcmsColorFormat)0x40000000
-#define XCMS_FIRST_REG_DD_ID (XcmsColorFormat)0x80000000
-#define XCMS_FIRST_UNREG_DD_ID (XcmsColorFormat)0xc0000000
-
-/*
- * TYPEDEFS
- */
-
- /*
- * Structure for caching Colormap info.
- * This is provided for the Xlib modifications to:
- * XAllocNamedColor()
- * XLookupColor()
- * XParseColor()
- * XStoreNamedColor()
- */
-typedef struct _XcmsCmapRec {
- Colormap cmapID;
- Display *dpy;
- Window windowID;
- Visual *visual;
- struct _XcmsCCC *ccc;
- struct _XcmsCmapRec *pNext;
-} XcmsCmapRec;
-
- /*
- * Intensity Record (i.e., value / intensity tuple)
- */
-typedef struct _IntensityRec {
- unsigned short value;
- XcmsFloat intensity;
-} IntensityRec;
-
- /*
- * Intensity Table
- */
-typedef struct _IntensityTbl {
- IntensityRec *pBase;
- unsigned int nEntries;
-} IntensityTbl;
-
- /*
- * Structure for storing per-Visual Intensity Tables (aka gamma maps).
- */
-typedef struct _XcmsIntensityMap {
- VisualID visualID;
- XPointer screenData; /* pointer to corresponding Screen Color*/
- /* Characterization Data */
- void (*pFreeScreenData)(XPointer pScreenDataTemp); /* Function that frees a Screen */
- /* structure. */
- struct _XcmsIntensityMap *pNext;
-} XcmsIntensityMap;
-
-
- /*
- * Structure for storing "registered" color space prefix/ID
- */
-typedef struct _XcmsRegColorSpaceEntry {
- const char *prefix; /* Color Space prefix (e.g., "CIEXYZ:") */
- XcmsColorFormat id; /* Color Space ID (e.g., XcmsCIEXYZFormat) */
-} XcmsRegColorSpaceEntry;
-
-
- /*
- * Xcms Per Display (i.e. connection) related data
- */
-typedef struct _XcmsPerDpyInfo {
-
- XcmsCCC paDefaultCCC; /* based on default visual of screen */
- /*
- * Pointer to an array of XcmsCCC structures, one for
- * each screen.
- */
- XcmsCmapRec *pClientCmaps; /* Pointer to linked list of XcmsCmapRec's */
-
-} XcmsPerDpyInfo, *XcmsPerDpyInfoPtr;
-
-/*
- * DEFINES
- */
-
-#define XDCCC_NUMBER 0x8000000L /* 2**27 per XDCCC */
-
-#ifdef GRAY
-#define XDCCC_SCREENWHITEPT_ATOM_NAME "XDCCC_GRAY_SCREENWHITEPOINT"
-#define XDCCC_GRAY_CORRECT_ATOM_NAME "XDCCC_GRAY_CORRECTION"
-#endif /* GRAY */
-
-#ifndef _ConversionValues
-typedef struct _ConversionValues {
- IntensityTbl IntensityTbl;
-} ConversionValues;
-#endif
-
-#ifdef GRAY
-typedef struct {
- IntensityTbl *IntensityTbl;
-} GRAY_SCCData;
-#endif /* GRAY */
-
-/*
- * DEFINES
- */
-
-#define XDCCC_MATRIX_ATOM_NAME "XDCCC_LINEAR_RGB_MATRICES"
-#define XDCCC_CORRECT_ATOM_NAME "XDCCC_LINEAR_RGB_CORRECTION"
-
-typedef struct {
- XcmsFloat XYZtoRGBmatrix[3][3];
- XcmsFloat RGBtoXYZmatrix[3][3];
- IntensityTbl *pRedTbl;
- IntensityTbl *pGreenTbl;
- IntensityTbl *pBlueTbl;
-} LINEAR_RGB_SCCData;
-
-/* function prototypes */
-extern XcmsCmapRec *
-_XcmsAddCmapRec(
- Display *dpy,
- Colormap cmap,
- Window windowID,
- Visual *visual);
-extern void
-_XcmsRGB_to_XColor(
- XcmsColor *pColors,
- XColor *pXColors,
- unsigned int nColors);
-extern Status
-_XcmsResolveColorString (
- XcmsCCC ccc,
- const char **color_string,
- XcmsColor *pColor_exact_return,
- XcmsColorFormat result_format);
-extern void
-_XUnresolveColor(
- XcmsCCC ccc,
- XColor *pXColor);
-/*
- * DESCRIPTION
- * Include file for defining the math macros used in the
- * XCMS source. Instead of using math library routines
- * directly, XCMS uses macros so that based on the
- * definitions here, vendors and sites can specify exactly
- * what routine will be called (those from libm.a or their
- * custom routines). If not defined to math library routines
- * (e.g., sqrt in libm.a), then the client is not forced to
- * be linked with -lm.
- */
-
-#define XCMS_ATAN(x) _XcmsArcTangent(x)
-#define XCMS_COS(x) _XcmsCosine(x)
-#define XCMS_CUBEROOT(x) _XcmsCubeRoot(x)
-#define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x))
-#define XCMS_SIN(x) _XcmsSine(x)
-#define XCMS_SQRT(x) _XcmsSquareRoot(x)
-#define XCMS_TAN(x) (XCMS_SIN(x) / XCMS_COS(x))
-
-double _XcmsArcTangent(double a);
-double _XcmsCosine(double a);
-double _XcmsCubeRoot(double a);
-double _XcmsSine(double a);
-double _XcmsSquareRoot(double a);
-
-/*
- * DEFINES FOR GAMUT COMPRESSION AND QUERY ROUTINES
- */
-#ifndef PI
-# ifdef M_PI
-# define PI M_PI
-# else
-# define PI 3.14159265358979323846264338327950
-# endif /* M_PI */
-#endif /* PI */
-#ifndef degrees
-# define degrees(r) ((XcmsFloat)(r) * 180.0 / PI)
-#endif /* degrees */
-#ifndef radians
-# define radians(d) ((XcmsFloat)(d) * PI / 180.0)
-#endif /* radians */
-
-#define XCMS_CIEUSTAROFHUE(h,c) \
-((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \
-((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT((XCMS_TAN(h) * XCMS_TAN(h)) + \
-(XcmsFloat)1.0)))
-#define XCMS_CIEVSTAROFHUE(h,c) \
-((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \
-((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT(((XcmsFloat)1.0 / \
-(XcmsFloat)(XCMS_TAN(h) * XCMS_TAN(h))) + (XcmsFloat)1.0)))
-/* this hue is returned in radians */
-#define XCMS_CIELUV_PMETRIC_HUE(u,v) \
-(((u) != 0.0) ? XCMS_ATAN( (v) / (u)) : ((v >= 0.0) ? PI / 2 : -(PI / 2)))
-#define XCMS_CIELUV_PMETRIC_CHROMA(u,v) XCMS_SQRT(((u)*(u)) + ((v)*(v)))
-
-#define XCMS_CIEASTAROFHUE(h,c) XCMS_CIEUSTAROFHUE((h), (c))
-#define XCMS_CIEBSTAROFHUE(h,c) XCMS_CIEVSTAROFHUE((h), (c))
-#define XCMS_CIELAB_PMETRIC_HUE(a,b) XCMS_CIELUV_PMETRIC_HUE((a), (b))
-#define XCMS_CIELAB_PMETRIC_CHROMA(a,b) XCMS_CIELUV_PMETRIC_CHROMA((a), (b))
-
-#endif /* _XCMSINT_H_ */
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * DESCRIPTION
+ * Private include file for Color Management System.
+ * (i.e., for API internal use only)
+ *
+ */
+
+#ifndef _XCMSINT_H_
+#define _XCMSINT_H_
+
+#include <X11/Xcms.h>
+
+/*
+ * DEFINES
+ */
+
+ /*
+ * Private Status Value
+ */
+#define _XCMS_NEWNAME -1
+
+ /*
+ * Color Space ID's are of XcmsColorFormat type.
+ *
+ * bit 31
+ * 0 == Device-Independent
+ * 1 == Device-Dependent
+ *
+ * bit 30:
+ * 0 == Registered with X Consortium
+ * 1 == Unregistered
+ */
+#define XCMS_DD_ID(id) ((id) & (XcmsColorFormat)0x80000000)
+#define XCMS_DI_ID(id) (!((id) & (XcmsColorFormat)0x80000000))
+#define XCMS_UNREG_ID(id) ((id) & (XcmsColorFormat)0x40000000)
+#define XCMS_REG_ID(id) (!((id) & (XcmsColorFormat)0x40000000))
+#define XCMS_FIRST_REG_DI_ID (XcmsColorFormat)0x00000001
+#define XCMS_FIRST_UNREG_DI_ID (XcmsColorFormat)0x40000000
+#define XCMS_FIRST_REG_DD_ID (XcmsColorFormat)0x80000000
+#define XCMS_FIRST_UNREG_DD_ID (XcmsColorFormat)0xc0000000
+
+/*
+ * TYPEDEFS
+ */
+
+ /*
+ * Structure for caching Colormap info.
+ * This is provided for the Xlib modifications to:
+ * XAllocNamedColor()
+ * XLookupColor()
+ * XParseColor()
+ * XStoreNamedColor()
+ */
+typedef struct _XcmsCmapRec {
+ Colormap cmapID;
+ Display *dpy;
+ Window windowID;
+ Visual *visual;
+ struct _XcmsCCC *ccc;
+ struct _XcmsCmapRec *pNext;
+} XcmsCmapRec;
+
+ /*
+ * Intensity Record (i.e., value / intensity tuple)
+ */
+typedef struct _IntensityRec {
+ unsigned short value;
+ XcmsFloat intensity;
+} IntensityRec;
+
+ /*
+ * Intensity Table
+ */
+typedef struct _IntensityTbl {
+ IntensityRec *pBase;
+ unsigned int nEntries;
+} IntensityTbl;
+
+ /*
+ * Structure for storing per-Visual Intensity Tables (aka gamma maps).
+ */
+typedef struct _XcmsIntensityMap {
+ VisualID visualID;
+ XPointer screenData; /* pointer to corresponding Screen Color*/
+ /* Characterization Data */
+ void (*pFreeScreenData)(XPointer pScreenDataTemp); /* Function that frees a Screen */
+ /* structure. */
+ struct _XcmsIntensityMap *pNext;
+} XcmsIntensityMap;
+
+
+ /*
+ * Structure for storing "registered" color space prefix/ID
+ */
+typedef struct _XcmsRegColorSpaceEntry {
+ const char *prefix; /* Color Space prefix (e.g., "CIEXYZ:") */
+ XcmsColorFormat id; /* Color Space ID (e.g., XcmsCIEXYZFormat) */
+} XcmsRegColorSpaceEntry;
+
+
+ /*
+ * Xcms Per Display (i.e. connection) related data
+ */
+typedef struct _XcmsPerDpyInfo {
+
+ XcmsCCC paDefaultCCC; /* based on default visual of screen */
+ /*
+ * Pointer to an array of XcmsCCC structures, one for
+ * each screen.
+ */
+ XcmsCmapRec *pClientCmaps; /* Pointer to linked list of XcmsCmapRec's */
+
+} XcmsPerDpyInfo, *XcmsPerDpyInfoPtr;
+
+/*
+ * DEFINES
+ */
+
+#define XDCCC_NUMBER 0x8000000L /* 2**27 per XDCCC */
+
+#ifdef GRAY
+#define XDCCC_SCREENWHITEPT_ATOM_NAME "XDCCC_GRAY_SCREENWHITEPOINT"
+#define XDCCC_GRAY_CORRECT_ATOM_NAME "XDCCC_GRAY_CORRECTION"
+#endif /* GRAY */
+
+#ifndef _ConversionValues
+typedef struct _ConversionValues {
+ IntensityTbl IntensityTbl;
+} ConversionValues;
+#endif
+
+#ifdef GRAY
+typedef struct {
+ IntensityTbl *IntensityTbl;
+} GRAY_SCCData;
+#endif /* GRAY */
+
+/*
+ * DEFINES
+ */
+
+#define XDCCC_MATRIX_ATOM_NAME "XDCCC_LINEAR_RGB_MATRICES"
+#define XDCCC_CORRECT_ATOM_NAME "XDCCC_LINEAR_RGB_CORRECTION"
+
+typedef struct {
+ XcmsFloat XYZtoRGBmatrix[3][3];
+ XcmsFloat RGBtoXYZmatrix[3][3];
+ IntensityTbl *pRedTbl;
+ IntensityTbl *pGreenTbl;
+ IntensityTbl *pBlueTbl;
+} LINEAR_RGB_SCCData;
+
+/* function prototypes */
+extern XcmsCmapRec *
+_XcmsAddCmapRec(
+ Display *dpy,
+ Colormap cmap,
+ Window windowID,
+ Visual *visual);
+extern void
+_XcmsRGB_to_XColor(
+ XcmsColor *pColors,
+ XColor *pXColors,
+ unsigned int nColors);
+extern Status
+_XcmsResolveColorString (
+ XcmsCCC ccc,
+ const char **color_string,
+ XcmsColor *pColor_exact_return,
+ XcmsColorFormat result_format);
+extern void
+_XUnresolveColor(
+ XcmsCCC ccc,
+ XColor *pXColor);
+/*
+ * DESCRIPTION
+ * Include file for defining the math macros used in the
+ * XCMS source. Instead of using math library routines
+ * directly, XCMS uses macros so that based on the
+ * definitions here, vendors and sites can specify exactly
+ * what routine will be called (those from libm.a or their
+ * custom routines). If not defined to math library routines
+ * (e.g., sqrt in libm.a), then the client is not forced to
+ * be linked with -lm.
+ */
+
+#define XCMS_ATAN(x) _XcmsArcTangent(x)
+#define XCMS_COS(x) _XcmsCosine(x)
+#define XCMS_CUBEROOT(x) _XcmsCubeRoot(x)
+#define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x))
+#define XCMS_SIN(x) _XcmsSine(x)
+#define XCMS_SQRT(x) _XcmsSquareRoot(x)
+#define XCMS_TAN(x) (XCMS_SIN(x) / XCMS_COS(x))
+
+double _XcmsArcTangent(double a);
+double _XcmsCosine(double a);
+double _XcmsCubeRoot(double a);
+double _XcmsSine(double a);
+double _XcmsSquareRoot(double a);
+
+/*
+ * DEFINES FOR GAMUT COMPRESSION AND QUERY ROUTINES
+ */
+#ifndef PI
+# ifdef M_PI
+# define PI M_PI
+# else
+# define PI 3.14159265358979323846264338327950
+# endif /* M_PI */
+#endif /* PI */
+#ifndef degrees
+# define degrees(r) ((XcmsFloat)(r) * 180.0 / PI)
+#endif /* degrees */
+#ifndef radians
+# define radians(d) ((XcmsFloat)(d) * PI / 180.0)
+#endif /* radians */
+
+#define XCMS_CIEUSTAROFHUE(h,c) \
+((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \
+((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT((XCMS_TAN(h) * XCMS_TAN(h)) + \
+(XcmsFloat)1.0)))
+#define XCMS_CIEVSTAROFHUE(h,c) \
+((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \
+((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT(((XcmsFloat)1.0 / \
+(XcmsFloat)(XCMS_TAN(h) * XCMS_TAN(h))) + (XcmsFloat)1.0)))
+/* this hue is returned in radians */
+#define XCMS_CIELUV_PMETRIC_HUE(u,v) \
+(((u) != 0.0) ? XCMS_ATAN( (v) / (u)) : ((v >= 0.0) ? PI / 2 : -(PI / 2)))
+#define XCMS_CIELUV_PMETRIC_CHROMA(u,v) XCMS_SQRT(((u)*(u)) + ((v)*(v)))
+
+#define XCMS_CIEASTAROFHUE(h,c) XCMS_CIEUSTAROFHUE((h), (c))
+#define XCMS_CIEBSTAROFHUE(h,c) XCMS_CIEVSTAROFHUE((h), (c))
+#define XCMS_CIELAB_PMETRIC_HUE(a,b) XCMS_CIELUV_PMETRIC_HUE((a), (b))
+#define XCMS_CIELAB_PMETRIC_CHROMA(a,b) XCMS_CIELUV_PMETRIC_CHROMA((a), (b))
+
+#endif /* _XCMSINT_H_ */
diff --git a/libX11/src/xcms/cmsAllCol.c b/libX11/src/xcms/cmsAllCol.c
index aeea46461..1ada07c1b 100644
--- a/libX11/src/xcms/cmsAllCol.c
+++ b/libX11/src/xcms/cmsAllCol.c
@@ -1,74 +1,74 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsAllCol.c
- *
- * DESCRIPTION
- * Source for XcmsAllocColor
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/*
- * NAME
- * XcmsAllocColor - Allocate Color
- *
- * SYNOPSIS
- */
-Status
-XcmsAllocColor(
- Display *dpy,
- Colormap colormap,
- XcmsColor *pXcmsColor_in_out,
- XcmsColorFormat result_format)
-/*
- * DESCRIPTION
- * Given a device-dependent or device-independent color
- * specification, XcmsAllocColor will convert it to X RGB
- * values then use it in a call to XAllocColor.
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded without gamut compression;
- * XcmsSuccessWithCompression if it succeeded with gamut
- * compression;
- *
- * Also returns the pixel value of the color cell and a color
- * specification of the color actually stored.
- *
- */
-{
- return(_XcmsSetGetColor(XAllocColor, dpy, colormap, pXcmsColor_in_out,
- result_format, (Bool *)NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsAllCol.c
+ *
+ * DESCRIPTION
+ * Source for XcmsAllocColor
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/*
+ * NAME
+ * XcmsAllocColor - Allocate Color
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsAllocColor(
+ Display *dpy,
+ Colormap colormap,
+ XcmsColor *pXcmsColor_in_out,
+ XcmsColorFormat result_format)
+/*
+ * DESCRIPTION
+ * Given a device-dependent or device-independent color
+ * specification, XcmsAllocColor will convert it to X RGB
+ * values then use it in a call to XAllocColor.
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded without gamut compression;
+ * XcmsSuccessWithCompression if it succeeded with gamut
+ * compression;
+ *
+ * Also returns the pixel value of the color cell and a color
+ * specification of the color actually stored.
+ *
+ */
+{
+ return(_XcmsSetGetColor(XAllocColor, dpy, colormap, pXcmsColor_in_out,
+ result_format, (Bool *)NULL));
+}
diff --git a/libX11/src/xcms/cmsGlobls.c b/libX11/src/xcms/cmsGlobls.c
index c9e82f242..13f351841 100644
--- a/libX11/src/xcms/cmsGlobls.c
+++ b/libX11/src/xcms/cmsGlobls.c
@@ -1,126 +1,126 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsGlobls.c
- *
- * DESCRIPTION
- * Source file containing Xcms globals
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * GLOBALS
- * Variables declared in this package that are allowed
- * to be used globally.
- */
-
- /*
- * Initial array of Device Independent Color Spaces
- */
-XcmsColorSpace *_XcmsDIColorSpacesInit[] = {
- &XcmsCIEXYZColorSpace,
- &XcmsCIEuvYColorSpace,
- &XcmsCIExyYColorSpace,
- &XcmsCIELabColorSpace,
- &XcmsCIELuvColorSpace,
- &XcmsTekHVCColorSpace,
- &XcmsUNDEFINEDColorSpace,
- NULL
-};
- /*
- * Pointer to the array of pointers to XcmsColorSpace structures for
- * Device-Independent Color Spaces that are currently accessible by
- * the color management system. End of list is indicated by a NULL pointer.
- */
-XcmsColorSpace **_XcmsDIColorSpaces = _XcmsDIColorSpacesInit;
-
- /*
- * Initial array of Device Dependent Color Spaces
- */
-XcmsColorSpace *_XcmsDDColorSpacesInit[] = {
- &XcmsRGBColorSpace,
- &XcmsRGBiColorSpace,
- NULL
-};
- /*
- * Pointer to the array of pointers to XcmsColorSpace structures for
- * Device-Dependent Color Spaces that are currently accessible by
- * the color management system. End of list is indicated by a NULL pointer.
- */
-XcmsColorSpace **_XcmsDDColorSpaces = &_XcmsDDColorSpacesInit[0];
-
- /*
- * Initial array of Screen Color Characterization Function Sets
- */
-XcmsFunctionSet *_XcmsSCCFuncSetsInit[] = {
- &XcmsLinearRGBFunctionSet,
-#ifdef GRAY
- &XcmsGrayFunctionSet,
-#endif /* GRAY */
- NULL};
- /*
- * Pointer to the array of pointers to XcmsSCCFuncSet structures
- * (Screen Color Characterization Function Sets) that are currently
- * accessible by the color management system. End of list is
- * indicated by a NULL pointer.
- */
-XcmsFunctionSet **_XcmsSCCFuncSets = _XcmsSCCFuncSetsInit;
-
- /*
- * X Consortium Registered Device-Independent Color Spaces
- * Note that prefix must be in lowercase.
- */
-const char _XcmsCIEXYZ_prefix[] = "ciexyz";
-const char _XcmsCIEuvY_prefix[] = "cieuvy";
-const char _XcmsCIExyY_prefix[] = "ciexyy";
-const char _XcmsCIELab_prefix[] = "cielab";
-const char _XcmsCIELuv_prefix[] = "cieluv";
-const char _XcmsTekHVC_prefix[] = "tekhvc";
- /*
- * Registered Device-Dependent Color Spaces
- */
-const char _XcmsRGBi_prefix[] = "rgbi";
-const char _XcmsRGB_prefix[] = "rgb";
-
-XcmsRegColorSpaceEntry _XcmsRegColorSpaces[] = {
- { _XcmsCIEXYZ_prefix, XcmsCIEXYZFormat },
- { _XcmsCIEuvY_prefix, XcmsCIEuvYFormat },
- { _XcmsCIExyY_prefix, XcmsCIExyYFormat },
- { _XcmsCIELab_prefix, XcmsCIELabFormat },
- { _XcmsCIELuv_prefix, XcmsCIELuvFormat },
- { _XcmsTekHVC_prefix, XcmsTekHVCFormat },
- { _XcmsRGB_prefix, XcmsRGBFormat },
- { _XcmsRGBi_prefix, XcmsRGBiFormat },
- { NULL, 0 }
-};
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsGlobls.c
+ *
+ * DESCRIPTION
+ * Source file containing Xcms globals
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * GLOBALS
+ * Variables declared in this package that are allowed
+ * to be used globally.
+ */
+
+ /*
+ * Initial array of Device Independent Color Spaces
+ */
+XcmsColorSpace *_XcmsDIColorSpacesInit[] = {
+ &XcmsCIEXYZColorSpace,
+ &XcmsCIEuvYColorSpace,
+ &XcmsCIExyYColorSpace,
+ &XcmsCIELabColorSpace,
+ &XcmsCIELuvColorSpace,
+ &XcmsTekHVCColorSpace,
+ &XcmsUNDEFINEDColorSpace,
+ NULL
+};
+ /*
+ * Pointer to the array of pointers to XcmsColorSpace structures for
+ * Device-Independent Color Spaces that are currently accessible by
+ * the color management system. End of list is indicated by a NULL pointer.
+ */
+XcmsColorSpace **_XcmsDIColorSpaces = _XcmsDIColorSpacesInit;
+
+ /*
+ * Initial array of Device Dependent Color Spaces
+ */
+XcmsColorSpace *_XcmsDDColorSpacesInit[] = {
+ &XcmsRGBColorSpace,
+ &XcmsRGBiColorSpace,
+ NULL
+};
+ /*
+ * Pointer to the array of pointers to XcmsColorSpace structures for
+ * Device-Dependent Color Spaces that are currently accessible by
+ * the color management system. End of list is indicated by a NULL pointer.
+ */
+XcmsColorSpace **_XcmsDDColorSpaces = &_XcmsDDColorSpacesInit[0];
+
+ /*
+ * Initial array of Screen Color Characterization Function Sets
+ */
+XcmsFunctionSet *_XcmsSCCFuncSetsInit[] = {
+ &XcmsLinearRGBFunctionSet,
+#ifdef GRAY
+ &XcmsGrayFunctionSet,
+#endif /* GRAY */
+ NULL};
+ /*
+ * Pointer to the array of pointers to XcmsSCCFuncSet structures
+ * (Screen Color Characterization Function Sets) that are currently
+ * accessible by the color management system. End of list is
+ * indicated by a NULL pointer.
+ */
+XcmsFunctionSet **_XcmsSCCFuncSets = _XcmsSCCFuncSetsInit;
+
+ /*
+ * X Consortium Registered Device-Independent Color Spaces
+ * Note that prefix must be in lowercase.
+ */
+const char _XcmsCIEXYZ_prefix[] = "ciexyz";
+const char _XcmsCIEuvY_prefix[] = "cieuvy";
+const char _XcmsCIExyY_prefix[] = "ciexyy";
+const char _XcmsCIELab_prefix[] = "cielab";
+const char _XcmsCIELuv_prefix[] = "cieluv";
+const char _XcmsTekHVC_prefix[] = "tekhvc";
+ /*
+ * Registered Device-Dependent Color Spaces
+ */
+const char _XcmsRGBi_prefix[] = "rgbi";
+const char _XcmsRGB_prefix[] = "rgb";
+
+XcmsRegColorSpaceEntry _XcmsRegColorSpaces[] = {
+ { _XcmsCIEXYZ_prefix, XcmsCIEXYZFormat },
+ { _XcmsCIEuvY_prefix, XcmsCIEuvYFormat },
+ { _XcmsCIExyY_prefix, XcmsCIExyYFormat },
+ { _XcmsCIELab_prefix, XcmsCIELabFormat },
+ { _XcmsCIELuv_prefix, XcmsCIELuvFormat },
+ { _XcmsTekHVC_prefix, XcmsTekHVCFormat },
+ { _XcmsRGB_prefix, XcmsRGBFormat },
+ { _XcmsRGBi_prefix, XcmsRGBiFormat },
+ { NULL, 0 }
+};
diff --git a/libX11/src/xcms/cmsMath.c b/libX11/src/xcms/cmsMath.c
index 70b067587..009a623b4 100644
--- a/libX11/src/xcms/cmsMath.c
+++ b/libX11/src/xcms/cmsMath.c
@@ -1,136 +1,136 @@
-
-/*
-
-Copyright 1990, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-/*
- * Stephen Gildea, MIT X Consortium, January 1991
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-
-#include <float.h>
-#ifndef DBL_EPSILON
-#define DBL_EPSILON 1e-6
-#endif
-
-#ifdef _X_ROOT_STATS
-int cbrt_loopcount;
-int sqrt_loopcount;
-#endif
-
-/* Newton's Method: x_n+1 = x_n - ( f(x_n) / f'(x_n) ) */
-
-
-/* for cube roots, x^3 - a = 0, x_new = x - 1/3 (x - a/x^2) */
-
-double
-_XcmsCubeRoot(double a)
-{
- register double abs_a, cur_guess, delta;
-
-#ifdef DEBUG
- printf("_XcmsCubeRoot passed in %g\n", a);
-#endif
-#ifdef _X_ROOT_STATS
- cbrt_loopcount = 0;
-#endif
- if (a == 0.)
- return 0.;
-
- abs_a = a<0. ? -a : a; /* convert to positive to speed loop tests */
-
- /* arbitrary first guess */
- if (abs_a > 1.)
- cur_guess = abs_a/8.;
- else
- cur_guess = abs_a*8.;
-
- do {
-#ifdef _X_ROOT_STATS
- cbrt_loopcount++;
-#endif
- delta = (cur_guess - abs_a/(cur_guess*cur_guess))/3.;
- cur_guess -= delta;
- if (delta < 0.) delta = -delta;
- } while (delta >= cur_guess*DBL_EPSILON);
-
- if (a < 0.)
- cur_guess = -cur_guess;
-
-#ifdef DEBUG
- printf("_XcmsCubeRoot returning %g\n", cur_guess);
-#endif
- return cur_guess;
-}
-
-
-
-/* for square roots, x^2 - a = 0, x_new = x - 1/2 (x - a/x) */
-
-double
-_XcmsSquareRoot(double a)
-{
- register double cur_guess, delta;
-
-#ifdef DEBUG
- printf("_XcmsSquareRoot passed in %g\n", a);
-#endif
-#ifdef _X_ROOT_STATS
- sqrt_loopcount = 0;
-#endif
- if (a == 0.)
- return 0.;
-
- if (a < 0.) {
- /* errno = EDOM; */
- return 0.;
- }
-
- /* arbitrary first guess */
- if (a > 1.)
- cur_guess = a/4.;
- else
- cur_guess = a*4.;
-
- do {
-#ifdef _X_ROOT_STATS
- sqrt_loopcount++;
-#endif
- delta = (cur_guess - a/cur_guess)/2.;
- cur_guess -= delta;
- if (delta < 0.) delta = -delta;
- } while (delta >= cur_guess*DBL_EPSILON);
-
-#ifdef DEBUG
- printf("_XcmsSquareRoot returning %g\n", cur_guess);
-#endif
- return cur_guess;
-}
-
+
+/*
+
+Copyright 1990, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+/*
+ * Stephen Gildea, MIT X Consortium, January 1991
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+
+#include <float.h>
+#ifndef DBL_EPSILON
+#define DBL_EPSILON 1e-6
+#endif
+
+#ifdef _X_ROOT_STATS
+int cbrt_loopcount;
+int sqrt_loopcount;
+#endif
+
+/* Newton's Method: x_n+1 = x_n - ( f(x_n) / f'(x_n) ) */
+
+
+/* for cube roots, x^3 - a = 0, x_new = x - 1/3 (x - a/x^2) */
+
+double
+_XcmsCubeRoot(double a)
+{
+ register double abs_a, cur_guess, delta;
+
+#ifdef DEBUG
+ printf("_XcmsCubeRoot passed in %g\n", a);
+#endif
+#ifdef _X_ROOT_STATS
+ cbrt_loopcount = 0;
+#endif
+ if (a == 0.)
+ return 0.;
+
+ abs_a = a<0. ? -a : a; /* convert to positive to speed loop tests */
+
+ /* arbitrary first guess */
+ if (abs_a > 1.)
+ cur_guess = abs_a/8.;
+ else
+ cur_guess = abs_a*8.;
+
+ do {
+#ifdef _X_ROOT_STATS
+ cbrt_loopcount++;
+#endif
+ delta = (cur_guess - abs_a/(cur_guess*cur_guess))/3.;
+ cur_guess -= delta;
+ if (delta < 0.) delta = -delta;
+ } while (delta >= cur_guess*DBL_EPSILON);
+
+ if (a < 0.)
+ cur_guess = -cur_guess;
+
+#ifdef DEBUG
+ printf("_XcmsCubeRoot returning %g\n", cur_guess);
+#endif
+ return cur_guess;
+}
+
+
+
+/* for square roots, x^2 - a = 0, x_new = x - 1/2 (x - a/x) */
+
+double
+_XcmsSquareRoot(double a)
+{
+ register double cur_guess, delta;
+
+#ifdef DEBUG
+ printf("_XcmsSquareRoot passed in %g\n", a);
+#endif
+#ifdef _X_ROOT_STATS
+ sqrt_loopcount = 0;
+#endif
+ if (a == 0.)
+ return 0.;
+
+ if (a < 0.) {
+ /* errno = EDOM; */
+ return 0.;
+ }
+
+ /* arbitrary first guess */
+ if (a > 1.)
+ cur_guess = a/4.;
+ else
+ cur_guess = a*4.;
+
+ do {
+#ifdef _X_ROOT_STATS
+ sqrt_loopcount++;
+#endif
+ delta = (cur_guess - a/cur_guess)/2.;
+ cur_guess -= delta;
+ if (delta < 0.) delta = -delta;
+ } while (delta >= cur_guess*DBL_EPSILON);
+
+#ifdef DEBUG
+ printf("_XcmsSquareRoot returning %g\n", cur_guess);
+#endif
+ return cur_guess;
+}
+
diff --git a/libX11/src/xcms/cmsTrig.c b/libX11/src/xcms/cmsTrig.c
index 5a01a56c8..26ae05f75 100644
--- a/libX11/src/xcms/cmsTrig.c
+++ b/libX11/src/xcms/cmsTrig.c
@@ -1,593 +1,593 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * It should be pointed out that for simplicity's sake, the
- * environment parameters are defined as floating point constants,
- * rather than octal or hexadecimal initializations of allocated
- * storage areas. This means that the range of allowed numbers
- * may not exactly match the hardware's capabilities. For example,
- * if the maximum positive double precision floating point number
- * is EXACTLY 1.11...E100 and the constant "MAXDOUBLE is
- * defined to be 1.11E100 then the numbers between 1.11E100 and
- * 1.11...E100 are considered to be undefined. For most
- * applications, this will cause no problems.
- *
- * An alternate method is to allocate a global static "double" variable,
- * say "maxdouble", and use a union declaration and initialization
- * to initialize it with the proper bits for the EXACT maximum value.
- * This was not done because the only compilers available to the
- * author did not fully support union initialization features.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xcmsint.h"
-
-/* forward/static */
-static double _XcmsModulo(double value, double base);
-static double _XcmsPolynomial(
- register int order,
- double const *coeffs,
- double x);
-static double
-_XcmsModuloF(
- double val,
- register double *dp);
-
-/*
- * DEFINES
- */
-#define XCMS_MAXERROR 0.000001
-#define XCMS_MAXITER 10000
-#define XCMS_PI 3.14159265358979323846264338327950
-#define XCMS_TWOPI 6.28318530717958620
-#define XCMS_HALFPI 1.57079632679489660
-#define XCMS_FOURTHPI 0.785398163397448280
-#define XCMS_SIXTHPI 0.523598775598298820
-#define XCMS_RADIANS(d) ((d) * XCMS_PI / 180.0)
-#define XCMS_DEGREES(r) ((r) * 180.0 / XCMS_PI)
-#define XCMS_X6_UNDERFLOWS (4.209340e-52) /* X**6 almost underflows */
-#define XCMS_X16_UNDERFLOWS (5.421010e-20) /* X**16 almost underflows*/
-#define XCMS_CHAR_BIT 8
-#define XCMS_LONG_MAX 0x7FFFFFFF
-#define XCMS_DEXPLEN 11
-#define XCMS_NBITS(type) (XCMS_CHAR_BIT * (int)sizeof(type))
-#define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x))
-
-/* XCMS_DMAXPOWTWO - largest power of two exactly representable as a double */
-#ifdef _CRAY
-#define XCMS_DMAXPOWTWO ((double)(1 < 47))
-#else
-#define XCMS_DMAXPOWTWO ((double)(XCMS_LONG_MAX) * \
- (1L << ((XCMS_NBITS(double)-XCMS_DEXPLEN) - XCMS_NBITS(int) + 1)))
-#endif
-
-/*
- * LOCAL VARIABLES
- */
-
-static double const cos_pcoeffs[] = {
- 0.12905394659037374438e7,
- -0.37456703915723204710e6,
- 0.13432300986539084285e5,
- -0.11231450823340933092e3
-};
-
-static double const cos_qcoeffs[] = {
- 0.12905394659037373590e7,
- 0.23467773107245835052e5,
- 0.20969518196726306286e3,
- 1.0
-};
-
-static double const sin_pcoeffs[] = {
- 0.20664343336995858240e7,
- -0.18160398797407332550e6,
- 0.35999306949636188317e4,
- -0.20107483294588615719e2
-};
-
-static double const sin_qcoeffs[] = {
- 0.26310659102647698963e7,
- 0.39270242774649000308e5,
- 0.27811919481083844087e3,
- 1.0
-};
-
-/*
- *
- * FUNCTION
- *
- * _XcmsCosine double precision cosine
- *
- * KEY WORDS
- *
- * cos
- * machine independent routines
- * trigonometric functions
- * math libraries
- *
- * DESCRIPTION
- *
- * Returns double precision cosine of double precision
- * floating point argument.
- *
- * USAGE
- *
- * double _XcmsCosine (x)
- * double x;
- *
- * REFERENCES
- *
- * Computer Approximations, J.F. Hart et al, John Wiley & Sons,
- * 1968, pp. 112-120.
- *
- * RESTRICTIONS
- *
- * The sin and cos routines are interactive in the sense that
- * in the process of reducing the argument to the range -PI/4
- * to PI/4, each may call the other. Ultimately one or the
- * other uses a polynomial approximation on the reduced
- * argument. The sin approximation has a maximum relative error
- * of 10**(-17.59) and the cos approximation has a maximum
- * relative error of 10**(-16.18).
- *
- * These error bounds assume exact arithmetic
- * in the polynomial evaluation. Additional rounding and
- * truncation errors may occur as the argument is reduced
- * to the range over which the polynomial approximation
- * is valid, and as the polynomial is evaluated using
- * finite-precision arithmetic.
- *
- * PROGRAMMER
- *
- * Fred Fish
- *
- * INTERNALS
- *
- * Computes cos(x) from:
- *
- * (1) Reduce argument x to range -PI to PI.
- *
- * (2) If x > PI/2 then call cos recursively
- * using relation cos(x) = -cos(x - PI).
- *
- * (3) If x < -PI/2 then call cos recursively
- * using relation cos(x) = -cos(x + PI).
- *
- * (4) If x > PI/4 then call sin using
- * relation cos(x) = sin(PI/2 - x).
- *
- * (5) If x < -PI/4 then call cos using
- * relation cos(x) = sin(PI/2 + x).
- *
- * (6) If x would cause underflow in approx
- * evaluation arithmetic then return
- * sqrt(1.0 - x**2).
- *
- * (7) By now x has been reduced to range
- * -PI/4 to PI/4 and the approximation
- * from HART pg. 119 can be used:
- *
- * cos(x) = ( p(y) / q(y) )
- * Where:
- *
- * y = x * (4/PI)
- *
- * p(y) = SUM [ Pj * (y**(2*j)) ]
- * over j = {0,1,2,3}
- *
- * q(y) = SUM [ Qj * (y**(2*j)) ]
- * over j = {0,1,2,3}
- *
- * P0 = 0.12905394659037374438571854e+7
- * P1 = -0.3745670391572320471032359e+6
- * P2 = 0.134323009865390842853673e+5
- * P3 = -0.112314508233409330923e+3
- * Q0 = 0.12905394659037373590295914e+7
- * Q1 = 0.234677731072458350524124e+5
- * Q2 = 0.2096951819672630628621e+3
- * Q3 = 1.0000...
- * (coefficients from HART table #3843 pg 244)
- *
- *
- * **** NOTE **** The range reduction relations used in
- * this routine depend on the final approximation being valid
- * over the negative argument range in addition to the positive
- * argument range. The particular approximation chosen from
- * HART satisfies this requirement, although not explicitly
- * stated in the text. This may not be true of other
- * approximations given in the reference.
- *
- */
-
-double _XcmsCosine(double x)
-{
- auto double y;
- auto double yt2;
- double retval;
-
- if (x < -XCMS_PI || x > XCMS_PI) {
- x = _XcmsModulo (x, XCMS_TWOPI);
- if (x > XCMS_PI) {
- x = x - XCMS_TWOPI;
- } else if (x < -XCMS_PI) {
- x = x + XCMS_TWOPI;
- }
- }
- if (x > XCMS_HALFPI) {
- retval = -(_XcmsCosine (x - XCMS_PI));
- } else if (x < -XCMS_HALFPI) {
- retval = -(_XcmsCosine (x + XCMS_PI));
- } else if (x > XCMS_FOURTHPI) {
- retval = _XcmsSine (XCMS_HALFPI - x);
- } else if (x < -XCMS_FOURTHPI) {
- retval = _XcmsSine (XCMS_HALFPI + x);
- } else if (x < XCMS_X6_UNDERFLOWS && x > -XCMS_X6_UNDERFLOWS) {
- retval = _XcmsSquareRoot (1.0 - (x * x));
- } else {
- y = x / XCMS_FOURTHPI;
- yt2 = y * y;
- retval = _XcmsPolynomial (3, cos_pcoeffs, yt2) / _XcmsPolynomial (3, cos_qcoeffs, yt2);
- }
- return (retval);
-}
-
-
-/*
- * FUNCTION
- *
- * _XcmsModulo double precision modulo
- *
- * KEY WORDS
- *
- * _XcmsModulo
- * machine independent routines
- * math libraries
- *
- * DESCRIPTION
- *
- * Returns double precision modulo of two double
- * precision arguments.
- *
- * USAGE
- *
- * double _XcmsModulo (value, base)
- * double value;
- * double base;
- *
- * PROGRAMMER
- *
- * Fred Fish
- *
- */
-static double _XcmsModulo(double value, double base)
-{
- auto double intpart;
-
- value /= base;
- value = _XcmsModuloF (value, &intpart);
- value *= base;
- return(value);
-}
-
-
-/*
- * frac = (double) _XcmsModuloF(double val, double *dp)
- * return fractional part of 'val'
- * set *dp to integer part of 'val'
- *
- * Note -> only compiled for the CA or KA. For the KB/MC,
- * "math.c" instantiates a copy of the inline function
- * defined in "math.h".
- */
-static double
-_XcmsModuloF(
- double val,
- register double *dp)
-{
- register double abs;
- /*
- * Don't use a register for this. The extra precision this results
- * in on some systems causes problems.
- */
- double ip;
-
- /* should check for illegal values here - nan, inf, etc */
- abs = XCMS_FABS(val);
- if (abs >= XCMS_DMAXPOWTWO) {
- ip = val;
- } else {
- ip = abs + XCMS_DMAXPOWTWO; /* dump fraction */
- ip -= XCMS_DMAXPOWTWO; /* restore w/o frac */
- if (ip > abs) /* if it rounds up */
- ip -= 1.0; /* fix it */
- ip = XCMS_FABS(ip);
- }
- *dp = ip;
- return (val - ip); /* signed fractional part */
-}
-
-
-/*
- * FUNCTION
- *
- * _XcmsPolynomial double precision polynomial evaluation
- *
- * KEY WORDS
- *
- * poly
- * machine independent routines
- * math libraries
- *
- * DESCRIPTION
- *
- * Evaluates a polynomial and returns double precision
- * result. Is passed a the order of the polynomial,
- * a pointer to an array of double precision polynomial
- * coefficients (in ascending order), and the independent
- * variable.
- *
- * USAGE
- *
- * double _XcmsPolynomial (order, coeffs, x)
- * int order;
- * double *coeffs;
- * double x;
- *
- * PROGRAMMER
- *
- * Fred Fish
- *
- * INTERNALS
- *
- * Evalates the polynomial using recursion and the form:
- *
- * P(x) = P0 + x(P1 + x(P2 +...x(Pn)))
- *
- */
-
-static double _XcmsPolynomial(
- register int order,
- double const *coeffs,
- double x)
-{
- auto double rtn_value;
-
-#if 0
- auto double curr_coeff;
- if (order <= 0) {
- rtn_value = *coeffs;
- } else {
- curr_coeff = *coeffs; /* Bug in Unisoft's compiler. Does not */
- coeffs++; /* generate good code for *coeffs++ */
- rtn_value = curr_coeff + x * _XcmsPolynomial (--order, coeffs, x);
- }
-#else /* ++jrb -- removed tail recursion */
- coeffs += order;
- rtn_value = *coeffs--;
- while(order-- > 0)
- rtn_value = *coeffs-- + (x * rtn_value);
-#endif
-
- return(rtn_value);
-}
-
-
-/*
- * FUNCTION
- *
- * _XcmsSine double precision sine
- *
- * KEY WORDS
- *
- * sin
- * machine independent routines
- * trigonometric functions
- * math libraries
- *
- * DESCRIPTION
- *
- * Returns double precision sine of double precision
- * floating point argument.
- *
- * USAGE
- *
- * double _XcmsSine (x)
- * double x;
- *
- * REFERENCES
- *
- * Computer Approximations, J.F. Hart et al, John Wiley & Sons,
- * 1968, pp. 112-120.
- *
- * RESTRICTIONS
- *
- * The sin and cos routines are interactive in the sense that
- * in the process of reducing the argument to the range -PI/4
- * to PI/4, each may call the other. Ultimately one or the
- * other uses a polynomial approximation on the reduced
- * argument. The sin approximation has a maximum relative error
- * of 10**(-17.59) and the cos approximation has a maximum
- * relative error of 10**(-16.18).
- *
- * These error bounds assume exact arithmetic
- * in the polynomial evaluation. Additional rounding and
- * truncation errors may occur as the argument is reduced
- * to the range over which the polynomial approximation
- * is valid, and as the polynomial is evaluated using
- * finite-precision arithmetic.
- *
- * PROGRAMMER
- *
- * Fred Fish
- *
- * INTERNALS
- *
- * Computes sin(x) from:
- *
- * (1) Reduce argument x to range -PI to PI.
- *
- * (2) If x > PI/2 then call sin recursively
- * using relation sin(x) = -sin(x - PI).
- *
- * (3) If x < -PI/2 then call sin recursively
- * using relation sin(x) = -sin(x + PI).
- *
- * (4) If x > PI/4 then call cos using
- * relation sin(x) = cos(PI/2 - x).
- *
- * (5) If x < -PI/4 then call cos using
- * relation sin(x) = -cos(PI/2 + x).
- *
- * (6) If x is small enough that polynomial
- * evaluation would cause underflow
- * then return x, since sin(x)
- * approaches x as x approaches zero.
- *
- * (7) By now x has been reduced to range
- * -PI/4 to PI/4 and the approximation
- * from HART pg. 118 can be used:
- *
- * sin(x) = y * ( p(y) / q(y) )
- * Where:
- *
- * y = x * (4/PI)
- *
- * p(y) = SUM [ Pj * (y**(2*j)) ]
- * over j = {0,1,2,3}
- *
- * q(y) = SUM [ Qj * (y**(2*j)) ]
- * over j = {0,1,2,3}
- *
- * P0 = 0.206643433369958582409167054e+7
- * P1 = -0.18160398797407332550219213e+6
- * P2 = 0.359993069496361883172836e+4
- * P3 = -0.2010748329458861571949e+2
- * Q0 = 0.263106591026476989637710307e+7
- * Q1 = 0.3927024277464900030883986e+5
- * Q2 = 0.27811919481083844087953e+3
- * Q3 = 1.0000...
- * (coefficients from HART table #3063 pg 234)
- *
- *
- * **** NOTE **** The range reduction relations used in
- * this routine depend on the final approximation being valid
- * over the negative argument range in addition to the positive
- * argument range. The particular approximation chosen from
- * HART satisfies this requirement, although not explicitly
- * stated in the text. This may not be true of other
- * approximations given in the reference.
- *
- */
-
-double
-_XcmsSine (double x)
-{
- double y;
- double yt2;
- double retval;
-
- if (x < -XCMS_PI || x > XCMS_PI) {
- x = _XcmsModulo (x, XCMS_TWOPI);
- if (x > XCMS_PI) {
- x = x - XCMS_TWOPI;
- } else if (x < -XCMS_PI) {
- x = x + XCMS_TWOPI;
- }
- }
- if (x > XCMS_HALFPI) {
- retval = -(_XcmsSine (x - XCMS_PI));
- } else if (x < -XCMS_HALFPI) {
- retval = -(_XcmsSine (x + XCMS_PI));
- } else if (x > XCMS_FOURTHPI) {
- retval = _XcmsCosine (XCMS_HALFPI - x);
- } else if (x < -XCMS_FOURTHPI) {
- retval = -(_XcmsCosine (XCMS_HALFPI + x));
- } else if (x < XCMS_X6_UNDERFLOWS && x > -XCMS_X6_UNDERFLOWS) {
- retval = x;
- } else {
- y = x / XCMS_FOURTHPI;
- yt2 = y * y;
- retval = y * (_XcmsPolynomial (3, sin_pcoeffs, yt2) / _XcmsPolynomial(3, sin_qcoeffs, yt2));
- }
- return(retval);
-}
-
-
-/*
- * NAME
- * _XcmsArcTangent
- *
- * SYNOPSIS
- */
-double
-_XcmsArcTangent(double x)
-/*
- * DESCRIPTION
- * Computes the arctangent.
- * This is an implementation of the Gauss algorithm as
- * described in:
- * Forman S. Acton, Numerical Methods That Work,
- * New York, NY, Harper & Row, 1970.
- *
- * RETURNS
- * Returns the arctangent
- */
-{
- double ai, a1 = 0.0, bi, b1 = 0.0, l, d;
- double maxerror;
- int i;
-
- if (x == 0.0) {
- return (0.0);
- }
- if (x < 1.0) {
- maxerror = x * XCMS_MAXERROR;
- } else {
- maxerror = XCMS_MAXERROR;
- }
- ai = _XcmsSquareRoot( 1.0 / (1.0 + (x * x)) );
- bi = 1.0;
- for (i = 0; i < XCMS_MAXITER; i++) {
- a1 = (ai + bi) / 2.0;
- b1 = _XcmsSquareRoot((a1 * bi));
- if (a1 == b1)
- break;
- d = XCMS_FABS(a1 - b1);
- if (d < maxerror)
- break;
- ai = a1;
- bi = b1;
- }
-
- l = ((a1 > b1) ? b1 : a1);
-
- a1 = _XcmsSquareRoot(1 + (x * x));
- return (x / (a1 * l));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * It should be pointed out that for simplicity's sake, the
+ * environment parameters are defined as floating point constants,
+ * rather than octal or hexadecimal initializations of allocated
+ * storage areas. This means that the range of allowed numbers
+ * may not exactly match the hardware's capabilities. For example,
+ * if the maximum positive double precision floating point number
+ * is EXACTLY 1.11...E100 and the constant "MAXDOUBLE is
+ * defined to be 1.11E100 then the numbers between 1.11E100 and
+ * 1.11...E100 are considered to be undefined. For most
+ * applications, this will cause no problems.
+ *
+ * An alternate method is to allocate a global static "double" variable,
+ * say "maxdouble", and use a union declaration and initialization
+ * to initialize it with the proper bits for the EXACT maximum value.
+ * This was not done because the only compilers available to the
+ * author did not fully support union initialization features.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xcmsint.h"
+
+/* forward/static */
+static double _XcmsModulo(double value, double base);
+static double _XcmsPolynomial(
+ register int order,
+ double const *coeffs,
+ double x);
+static double
+_XcmsModuloF(
+ double val,
+ register double *dp);
+
+/*
+ * DEFINES
+ */
+#define XCMS_MAXERROR 0.000001
+#define XCMS_MAXITER 10000
+#define XCMS_PI 3.14159265358979323846264338327950
+#define XCMS_TWOPI 6.28318530717958620
+#define XCMS_HALFPI 1.57079632679489660
+#define XCMS_FOURTHPI 0.785398163397448280
+#define XCMS_SIXTHPI 0.523598775598298820
+#define XCMS_RADIANS(d) ((d) * XCMS_PI / 180.0)
+#define XCMS_DEGREES(r) ((r) * 180.0 / XCMS_PI)
+#define XCMS_X6_UNDERFLOWS (4.209340e-52) /* X**6 almost underflows */
+#define XCMS_X16_UNDERFLOWS (5.421010e-20) /* X**16 almost underflows*/
+#define XCMS_CHAR_BIT 8
+#define XCMS_LONG_MAX 0x7FFFFFFF
+#define XCMS_DEXPLEN 11
+#define XCMS_NBITS(type) (XCMS_CHAR_BIT * (int)sizeof(type))
+#define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x))
+
+/* XCMS_DMAXPOWTWO - largest power of two exactly representable as a double */
+#ifdef _CRAY
+#define XCMS_DMAXPOWTWO ((double)(1 < 47))
+#else
+#define XCMS_DMAXPOWTWO ((double)(XCMS_LONG_MAX) * \
+ (1L << ((XCMS_NBITS(double)-XCMS_DEXPLEN) - XCMS_NBITS(int) + 1)))
+#endif
+
+/*
+ * LOCAL VARIABLES
+ */
+
+static double const cos_pcoeffs[] = {
+ 0.12905394659037374438e7,
+ -0.37456703915723204710e6,
+ 0.13432300986539084285e5,
+ -0.11231450823340933092e3
+};
+
+static double const cos_qcoeffs[] = {
+ 0.12905394659037373590e7,
+ 0.23467773107245835052e5,
+ 0.20969518196726306286e3,
+ 1.0
+};
+
+static double const sin_pcoeffs[] = {
+ 0.20664343336995858240e7,
+ -0.18160398797407332550e6,
+ 0.35999306949636188317e4,
+ -0.20107483294588615719e2
+};
+
+static double const sin_qcoeffs[] = {
+ 0.26310659102647698963e7,
+ 0.39270242774649000308e5,
+ 0.27811919481083844087e3,
+ 1.0
+};
+
+/*
+ *
+ * FUNCTION
+ *
+ * _XcmsCosine double precision cosine
+ *
+ * KEY WORDS
+ *
+ * cos
+ * machine independent routines
+ * trigonometric functions
+ * math libraries
+ *
+ * DESCRIPTION
+ *
+ * Returns double precision cosine of double precision
+ * floating point argument.
+ *
+ * USAGE
+ *
+ * double _XcmsCosine (x)
+ * double x;
+ *
+ * REFERENCES
+ *
+ * Computer Approximations, J.F. Hart et al, John Wiley & Sons,
+ * 1968, pp. 112-120.
+ *
+ * RESTRICTIONS
+ *
+ * The sin and cos routines are interactive in the sense that
+ * in the process of reducing the argument to the range -PI/4
+ * to PI/4, each may call the other. Ultimately one or the
+ * other uses a polynomial approximation on the reduced
+ * argument. The sin approximation has a maximum relative error
+ * of 10**(-17.59) and the cos approximation has a maximum
+ * relative error of 10**(-16.18).
+ *
+ * These error bounds assume exact arithmetic
+ * in the polynomial evaluation. Additional rounding and
+ * truncation errors may occur as the argument is reduced
+ * to the range over which the polynomial approximation
+ * is valid, and as the polynomial is evaluated using
+ * finite-precision arithmetic.
+ *
+ * PROGRAMMER
+ *
+ * Fred Fish
+ *
+ * INTERNALS
+ *
+ * Computes cos(x) from:
+ *
+ * (1) Reduce argument x to range -PI to PI.
+ *
+ * (2) If x > PI/2 then call cos recursively
+ * using relation cos(x) = -cos(x - PI).
+ *
+ * (3) If x < -PI/2 then call cos recursively
+ * using relation cos(x) = -cos(x + PI).
+ *
+ * (4) If x > PI/4 then call sin using
+ * relation cos(x) = sin(PI/2 - x).
+ *
+ * (5) If x < -PI/4 then call cos using
+ * relation cos(x) = sin(PI/2 + x).
+ *
+ * (6) If x would cause underflow in approx
+ * evaluation arithmetic then return
+ * sqrt(1.0 - x**2).
+ *
+ * (7) By now x has been reduced to range
+ * -PI/4 to PI/4 and the approximation
+ * from HART pg. 119 can be used:
+ *
+ * cos(x) = ( p(y) / q(y) )
+ * Where:
+ *
+ * y = x * (4/PI)
+ *
+ * p(y) = SUM [ Pj * (y**(2*j)) ]
+ * over j = {0,1,2,3}
+ *
+ * q(y) = SUM [ Qj * (y**(2*j)) ]
+ * over j = {0,1,2,3}
+ *
+ * P0 = 0.12905394659037374438571854e+7
+ * P1 = -0.3745670391572320471032359e+6
+ * P2 = 0.134323009865390842853673e+5
+ * P3 = -0.112314508233409330923e+3
+ * Q0 = 0.12905394659037373590295914e+7
+ * Q1 = 0.234677731072458350524124e+5
+ * Q2 = 0.2096951819672630628621e+3
+ * Q3 = 1.0000...
+ * (coefficients from HART table #3843 pg 244)
+ *
+ *
+ * **** NOTE **** The range reduction relations used in
+ * this routine depend on the final approximation being valid
+ * over the negative argument range in addition to the positive
+ * argument range. The particular approximation chosen from
+ * HART satisfies this requirement, although not explicitly
+ * stated in the text. This may not be true of other
+ * approximations given in the reference.
+ *
+ */
+
+double _XcmsCosine(double x)
+{
+ auto double y;
+ auto double yt2;
+ double retval;
+
+ if (x < -XCMS_PI || x > XCMS_PI) {
+ x = _XcmsModulo (x, XCMS_TWOPI);
+ if (x > XCMS_PI) {
+ x = x - XCMS_TWOPI;
+ } else if (x < -XCMS_PI) {
+ x = x + XCMS_TWOPI;
+ }
+ }
+ if (x > XCMS_HALFPI) {
+ retval = -(_XcmsCosine (x - XCMS_PI));
+ } else if (x < -XCMS_HALFPI) {
+ retval = -(_XcmsCosine (x + XCMS_PI));
+ } else if (x > XCMS_FOURTHPI) {
+ retval = _XcmsSine (XCMS_HALFPI - x);
+ } else if (x < -XCMS_FOURTHPI) {
+ retval = _XcmsSine (XCMS_HALFPI + x);
+ } else if (x < XCMS_X6_UNDERFLOWS && x > -XCMS_X6_UNDERFLOWS) {
+ retval = _XcmsSquareRoot (1.0 - (x * x));
+ } else {
+ y = x / XCMS_FOURTHPI;
+ yt2 = y * y;
+ retval = _XcmsPolynomial (3, cos_pcoeffs, yt2) / _XcmsPolynomial (3, cos_qcoeffs, yt2);
+ }
+ return (retval);
+}
+
+
+/*
+ * FUNCTION
+ *
+ * _XcmsModulo double precision modulo
+ *
+ * KEY WORDS
+ *
+ * _XcmsModulo
+ * machine independent routines
+ * math libraries
+ *
+ * DESCRIPTION
+ *
+ * Returns double precision modulo of two double
+ * precision arguments.
+ *
+ * USAGE
+ *
+ * double _XcmsModulo (value, base)
+ * double value;
+ * double base;
+ *
+ * PROGRAMMER
+ *
+ * Fred Fish
+ *
+ */
+static double _XcmsModulo(double value, double base)
+{
+ auto double intpart;
+
+ value /= base;
+ value = _XcmsModuloF (value, &intpart);
+ value *= base;
+ return(value);
+}
+
+
+/*
+ * frac = (double) _XcmsModuloF(double val, double *dp)
+ * return fractional part of 'val'
+ * set *dp to integer part of 'val'
+ *
+ * Note -> only compiled for the CA or KA. For the KB/MC,
+ * "math.c" instantiates a copy of the inline function
+ * defined in "math.h".
+ */
+static double
+_XcmsModuloF(
+ double val,
+ register double *dp)
+{
+ register double abs;
+ /*
+ * Don't use a register for this. The extra precision this results
+ * in on some systems causes problems.
+ */
+ double ip;
+
+ /* should check for illegal values here - nan, inf, etc */
+ abs = XCMS_FABS(val);
+ if (abs >= XCMS_DMAXPOWTWO) {
+ ip = val;
+ } else {
+ ip = abs + XCMS_DMAXPOWTWO; /* dump fraction */
+ ip -= XCMS_DMAXPOWTWO; /* restore w/o frac */
+ if (ip > abs) /* if it rounds up */
+ ip -= 1.0; /* fix it */
+ ip = XCMS_FABS(ip);
+ }
+ *dp = ip;
+ return (val - ip); /* signed fractional part */
+}
+
+
+/*
+ * FUNCTION
+ *
+ * _XcmsPolynomial double precision polynomial evaluation
+ *
+ * KEY WORDS
+ *
+ * poly
+ * machine independent routines
+ * math libraries
+ *
+ * DESCRIPTION
+ *
+ * Evaluates a polynomial and returns double precision
+ * result. Is passed a the order of the polynomial,
+ * a pointer to an array of double precision polynomial
+ * coefficients (in ascending order), and the independent
+ * variable.
+ *
+ * USAGE
+ *
+ * double _XcmsPolynomial (order, coeffs, x)
+ * int order;
+ * double *coeffs;
+ * double x;
+ *
+ * PROGRAMMER
+ *
+ * Fred Fish
+ *
+ * INTERNALS
+ *
+ * Evalates the polynomial using recursion and the form:
+ *
+ * P(x) = P0 + x(P1 + x(P2 +...x(Pn)))
+ *
+ */
+
+static double _XcmsPolynomial(
+ register int order,
+ double const *coeffs,
+ double x)
+{
+ auto double rtn_value;
+
+#if 0
+ auto double curr_coeff;
+ if (order <= 0) {
+ rtn_value = *coeffs;
+ } else {
+ curr_coeff = *coeffs; /* Bug in Unisoft's compiler. Does not */
+ coeffs++; /* generate good code for *coeffs++ */
+ rtn_value = curr_coeff + x * _XcmsPolynomial (--order, coeffs, x);
+ }
+#else /* ++jrb -- removed tail recursion */
+ coeffs += order;
+ rtn_value = *coeffs--;
+ while(order-- > 0)
+ rtn_value = *coeffs-- + (x * rtn_value);
+#endif
+
+ return(rtn_value);
+}
+
+
+/*
+ * FUNCTION
+ *
+ * _XcmsSine double precision sine
+ *
+ * KEY WORDS
+ *
+ * sin
+ * machine independent routines
+ * trigonometric functions
+ * math libraries
+ *
+ * DESCRIPTION
+ *
+ * Returns double precision sine of double precision
+ * floating point argument.
+ *
+ * USAGE
+ *
+ * double _XcmsSine (x)
+ * double x;
+ *
+ * REFERENCES
+ *
+ * Computer Approximations, J.F. Hart et al, John Wiley & Sons,
+ * 1968, pp. 112-120.
+ *
+ * RESTRICTIONS
+ *
+ * The sin and cos routines are interactive in the sense that
+ * in the process of reducing the argument to the range -PI/4
+ * to PI/4, each may call the other. Ultimately one or the
+ * other uses a polynomial approximation on the reduced
+ * argument. The sin approximation has a maximum relative error
+ * of 10**(-17.59) and the cos approximation has a maximum
+ * relative error of 10**(-16.18).
+ *
+ * These error bounds assume exact arithmetic
+ * in the polynomial evaluation. Additional rounding and
+ * truncation errors may occur as the argument is reduced
+ * to the range over which the polynomial approximation
+ * is valid, and as the polynomial is evaluated using
+ * finite-precision arithmetic.
+ *
+ * PROGRAMMER
+ *
+ * Fred Fish
+ *
+ * INTERNALS
+ *
+ * Computes sin(x) from:
+ *
+ * (1) Reduce argument x to range -PI to PI.
+ *
+ * (2) If x > PI/2 then call sin recursively
+ * using relation sin(x) = -sin(x - PI).
+ *
+ * (3) If x < -PI/2 then call sin recursively
+ * using relation sin(x) = -sin(x + PI).
+ *
+ * (4) If x > PI/4 then call cos using
+ * relation sin(x) = cos(PI/2 - x).
+ *
+ * (5) If x < -PI/4 then call cos using
+ * relation sin(x) = -cos(PI/2 + x).
+ *
+ * (6) If x is small enough that polynomial
+ * evaluation would cause underflow
+ * then return x, since sin(x)
+ * approaches x as x approaches zero.
+ *
+ * (7) By now x has been reduced to range
+ * -PI/4 to PI/4 and the approximation
+ * from HART pg. 118 can be used:
+ *
+ * sin(x) = y * ( p(y) / q(y) )
+ * Where:
+ *
+ * y = x * (4/PI)
+ *
+ * p(y) = SUM [ Pj * (y**(2*j)) ]
+ * over j = {0,1,2,3}
+ *
+ * q(y) = SUM [ Qj * (y**(2*j)) ]
+ * over j = {0,1,2,3}
+ *
+ * P0 = 0.206643433369958582409167054e+7
+ * P1 = -0.18160398797407332550219213e+6
+ * P2 = 0.359993069496361883172836e+4
+ * P3 = -0.2010748329458861571949e+2
+ * Q0 = 0.263106591026476989637710307e+7
+ * Q1 = 0.3927024277464900030883986e+5
+ * Q2 = 0.27811919481083844087953e+3
+ * Q3 = 1.0000...
+ * (coefficients from HART table #3063 pg 234)
+ *
+ *
+ * **** NOTE **** The range reduction relations used in
+ * this routine depend on the final approximation being valid
+ * over the negative argument range in addition to the positive
+ * argument range. The particular approximation chosen from
+ * HART satisfies this requirement, although not explicitly
+ * stated in the text. This may not be true of other
+ * approximations given in the reference.
+ *
+ */
+
+double
+_XcmsSine (double x)
+{
+ double y;
+ double yt2;
+ double retval;
+
+ if (x < -XCMS_PI || x > XCMS_PI) {
+ x = _XcmsModulo (x, XCMS_TWOPI);
+ if (x > XCMS_PI) {
+ x = x - XCMS_TWOPI;
+ } else if (x < -XCMS_PI) {
+ x = x + XCMS_TWOPI;
+ }
+ }
+ if (x > XCMS_HALFPI) {
+ retval = -(_XcmsSine (x - XCMS_PI));
+ } else if (x < -XCMS_HALFPI) {
+ retval = -(_XcmsSine (x + XCMS_PI));
+ } else if (x > XCMS_FOURTHPI) {
+ retval = _XcmsCosine (XCMS_HALFPI - x);
+ } else if (x < -XCMS_FOURTHPI) {
+ retval = -(_XcmsCosine (XCMS_HALFPI + x));
+ } else if (x < XCMS_X6_UNDERFLOWS && x > -XCMS_X6_UNDERFLOWS) {
+ retval = x;
+ } else {
+ y = x / XCMS_FOURTHPI;
+ yt2 = y * y;
+ retval = y * (_XcmsPolynomial (3, sin_pcoeffs, yt2) / _XcmsPolynomial(3, sin_qcoeffs, yt2));
+ }
+ return(retval);
+}
+
+
+/*
+ * NAME
+ * _XcmsArcTangent
+ *
+ * SYNOPSIS
+ */
+double
+_XcmsArcTangent(double x)
+/*
+ * DESCRIPTION
+ * Computes the arctangent.
+ * This is an implementation of the Gauss algorithm as
+ * described in:
+ * Forman S. Acton, Numerical Methods That Work,
+ * New York, NY, Harper & Row, 1970.
+ *
+ * RETURNS
+ * Returns the arctangent
+ */
+{
+ double ai, a1 = 0.0, bi, b1 = 0.0, l, d;
+ double maxerror;
+ int i;
+
+ if (x == 0.0) {
+ return (0.0);
+ }
+ if (x < 1.0) {
+ maxerror = x * XCMS_MAXERROR;
+ } else {
+ maxerror = XCMS_MAXERROR;
+ }
+ ai = _XcmsSquareRoot( 1.0 / (1.0 + (x * x)) );
+ bi = 1.0;
+ for (i = 0; i < XCMS_MAXITER; i++) {
+ a1 = (ai + bi) / 2.0;
+ b1 = _XcmsSquareRoot((a1 * bi));
+ if (a1 == b1)
+ break;
+ d = XCMS_FABS(a1 - b1);
+ if (d < maxerror)
+ break;
+ ai = a1;
+ bi = b1;
+ }
+
+ l = ((a1 > b1) ? b1 : a1);
+
+ a1 = _XcmsSquareRoot(1 + (x * x));
+ return (x / (a1 * l));
+}
diff --git a/libX11/src/xcms/uvY.c b/libX11/src/xcms/uvY.c
index 5344fb17c..a4abc66cd 100644
--- a/libX11/src/xcms/uvY.c
+++ b/libX11/src/xcms/uvY.c
@@ -1,423 +1,423 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * CIEuvy.c
- *
- * DESCRIPTION
- * This file contains routines that support the CIE u'v'Y
- * color space to include conversions to and from the CIE
- * XYZ space.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-#include <stdio.h>
-
-/*
- * FORWARD DECLARATIONS
- */
-static int CIEuvY_ParseString(register char *spec, XcmsColor *pColor);
-
-/*
- * DEFINES
- * Internal definitions that need NOT be exported to any package
- * or program using this package.
- */
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-
-
-/*
- * LOCAL VARIABLES
- */
-
- /*
- * NULL terminated list of functions applied to get from CIEuvY to CIEXYZ
- */
-static XcmsConversionProc Fl_CIEuvY_to_CIEXYZ[] = {
- XcmsCIEuvYToCIEXYZ,
- NULL
-};
-
- /*
- * NULL terminated list of functions applied to get from CIEXYZ to CIEuvY
- */
-static XcmsConversionProc Fl_CIEXYZ_to_CIEuvY[] = {
- XcmsCIEXYZToCIEuvY,
- NULL
-};
-
-
-/*
- * GLOBALS
- */
-
- /*
- * CIE uvY Color Space
- */
-XcmsColorSpace XcmsCIEuvYColorSpace =
- {
- _XcmsCIEuvY_prefix, /* prefix */
- XcmsCIEuvYFormat, /* id */
- CIEuvY_ParseString, /* parseString */
- Fl_CIEuvY_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_CIEuvY, /* from_CIEXYZ */
- 1
- };
-
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIEuvY_ParseString
- *
- * SYNOPSIS
- */
-static int
-CIEuvY_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsCIEuvYFormat.
- * The assumed CIEuvY string syntax is:
- * CIEuvY:<u>/<v>/<Y>
- * Where u, v, and Y are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- * 0 if failed, non-zero otherwise.
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsCIEuvY_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIEuvY.u_prime,
- &pColor->spec.CIEuvY.v_prime,
- &pColor->spec.CIEuvY.Y) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIEuvY.u_prime,
- &pColor->spec.CIEuvY.v_prime,
- &pColor->spec.CIEuvY.Y) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsCIEuvYFormat;
- pColor->pixel = 0;
- return(_XcmsCIEuvY_ValidSpec(pColor));
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIEuvY_ValidSpec
- *
- * SYNOPSIS
- */
-Status
-_XcmsCIEuvY_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if color specification valid for CIE u'v'Y.
- *
- * RETURNS
- * XcmsFailure if invalid,
- * XcmsSuccess if valid.
- *
- */
-{
- if (pColor->format != XcmsCIEuvYFormat
- ||
- (pColor->spec.CIEuvY.Y < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIEuvY.Y > 1.0 + XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIEuvYToCIEXYZ - convert CIEuvY to CIEXYZ
- *
- * SYNOPSIS
- */
-Status
-XcmsCIEuvYToCIEXYZ(
- XcmsCCC ccc,
- XcmsColor *puvY_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIEuvY format to CIEXYZ format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsCIEXYZ XYZ_return;
- XcmsColor whitePt;
- int i;
- XcmsColor *pColor = pColors_in_out;
- XcmsFloat div, x, y, z, Y;
-
- /*
- * Check arguments
- * Postpone checking puvY_WhitePt until it is actually needed
- * otherwise converting between XYZ and uvY will fail.
- */
- if (pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is CIEuvY */
- if (!_XcmsCIEuvY_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /*
- * Convert to CIEXYZ
- */
-
- Y = pColor->spec.CIEuvY.Y;
-
- /* Convert color u'v' to xyz space */
- div = (6.0 * pColor->spec.CIEuvY.u_prime) - (16.0 * pColor->spec.CIEuvY.v_prime) + 12.0;
- if (div == 0.0) {
- /* use white point since div == 0 */
- if (puvY_WhitePt == NULL ) {
- return(XcmsFailure);
- }
- /*
- * Make sure white point is in CIEuvY form
- */
- if (puvY_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)puvY_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
- XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- puvY_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (puvY_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
- div = (6.0 * puvY_WhitePt->spec.CIEuvY.u_prime) -
- (16.0 * puvY_WhitePt->spec.CIEuvY.v_prime) + 12.0;
- if (div == 0) {
- /* internal error */
- return(XcmsFailure);
- }
- x = 9.0 * puvY_WhitePt->spec.CIEuvY.u_prime / div;
- y = 4.0 * puvY_WhitePt->spec.CIEuvY.v_prime / div;
- } else {
- x = 9.0 * pColor->spec.CIEuvY.u_prime / div;
- y = 4.0 * pColor->spec.CIEuvY.v_prime / div;
- }
- z = 1.0 - x - y;
-
- /* Convert from xyz to XYZ */
- /* Conversion uses color normalized lightness based on Y */
- if (y != 0.0) {
- XYZ_return.X = x * Y / y;
- } else {
- XYZ_return.X = x;
- }
- XYZ_return.Y = Y;
- if (y != 0.0) {
- XYZ_return.Z = z * Y / y;
- } else {
- XYZ_return.Z = z;
- }
-
- memcpy((char *)&pColor->spec.CIEXYZ, (char *)&XYZ_return, sizeof(XcmsCIEXYZ));
- /* Identify that format is now CIEXYZ */
- pColor->format = XcmsCIEXYZFormat;
- }
-
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIEXYZToCIEuvY - convert CIEXYZ to CIEuvY
- *
- * SYNOPSIS
- */
-Status
-XcmsCIEXYZToCIEuvY(
- XcmsCCC ccc,
- XcmsColor *puvY_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIEXYZ format to CIEuvY format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsCIEuvY uvY_return;
- XcmsColor whitePt;
- int i;
- XcmsColor *pColor = pColors_in_out;
- XcmsFloat div;
-
- /*
- * Check arguments
- * Postpone checking puvY_WhitePt until it is actually needed
- * otherwise converting between XYZ and uvY will fail.
- */
- if (pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEuvY form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is CIEXYZ */
- if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /* Convert to CIEuvY */
- div = pColor->spec.CIEXYZ.X + (15.0 * pColor->spec.CIEXYZ.Y) +
- (3.0 * pColor->spec.CIEXYZ.Z);
- if (div == 0.0) {
- /* Use white point since div == 0.0 */
- if (puvY_WhitePt == NULL ) {
- return(XcmsFailure);
- }
- /*
- * Make sure white point is in CIEuvY form
- */
- if (puvY_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)puvY_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
- XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- puvY_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (puvY_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
- uvY_return.Y = pColor->spec.CIEXYZ.Y;
- uvY_return.u_prime = puvY_WhitePt->spec.CIEuvY.u_prime;
- uvY_return.v_prime = puvY_WhitePt->spec.CIEuvY.v_prime;
- } else {
- uvY_return.u_prime = 4.0 * pColor->spec.CIEXYZ.X / div;
- uvY_return.v_prime = 9.0 * pColor->spec.CIEXYZ.Y / div;
- uvY_return.Y = pColor->spec.CIEXYZ.Y;
- }
-
- memcpy((char *)&pColor->spec.CIEuvY, (char *)&uvY_return, sizeof(XcmsCIEuvY));
- /* Identify that format is now CIEuvY */
- pColor->format = XcmsCIEuvYFormat;
- }
-
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * CIEuvy.c
+ *
+ * DESCRIPTION
+ * This file contains routines that support the CIE u'v'Y
+ * color space to include conversions to and from the CIE
+ * XYZ space.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+#include <stdio.h>
+
+/*
+ * FORWARD DECLARATIONS
+ */
+static int CIEuvY_ParseString(register char *spec, XcmsColor *pColor);
+
+/*
+ * DEFINES
+ * Internal definitions that need NOT be exported to any package
+ * or program using this package.
+ */
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+
+
+/*
+ * LOCAL VARIABLES
+ */
+
+ /*
+ * NULL terminated list of functions applied to get from CIEuvY to CIEXYZ
+ */
+static XcmsConversionProc Fl_CIEuvY_to_CIEXYZ[] = {
+ XcmsCIEuvYToCIEXYZ,
+ NULL
+};
+
+ /*
+ * NULL terminated list of functions applied to get from CIEXYZ to CIEuvY
+ */
+static XcmsConversionProc Fl_CIEXYZ_to_CIEuvY[] = {
+ XcmsCIEXYZToCIEuvY,
+ NULL
+};
+
+
+/*
+ * GLOBALS
+ */
+
+ /*
+ * CIE uvY Color Space
+ */
+XcmsColorSpace XcmsCIEuvYColorSpace =
+ {
+ _XcmsCIEuvY_prefix, /* prefix */
+ XcmsCIEuvYFormat, /* id */
+ CIEuvY_ParseString, /* parseString */
+ Fl_CIEuvY_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_CIEuvY, /* from_CIEXYZ */
+ 1
+ };
+
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIEuvY_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+CIEuvY_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsCIEuvYFormat.
+ * The assumed CIEuvY string syntax is:
+ * CIEuvY:<u>/<v>/<Y>
+ * Where u, v, and Y are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ * 0 if failed, non-zero otherwise.
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsCIEuvY_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIEuvY.u_prime,
+ &pColor->spec.CIEuvY.v_prime,
+ &pColor->spec.CIEuvY.Y) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIEuvY.u_prime,
+ &pColor->spec.CIEuvY.v_prime,
+ &pColor->spec.CIEuvY.Y) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsCIEuvYFormat;
+ pColor->pixel = 0;
+ return(_XcmsCIEuvY_ValidSpec(pColor));
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIEuvY_ValidSpec
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsCIEuvY_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if color specification valid for CIE u'v'Y.
+ *
+ * RETURNS
+ * XcmsFailure if invalid,
+ * XcmsSuccess if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsCIEuvYFormat
+ ||
+ (pColor->spec.CIEuvY.Y < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIEuvY.Y > 1.0 + XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEuvYToCIEXYZ - convert CIEuvY to CIEXYZ
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIEuvYToCIEXYZ(
+ XcmsCCC ccc,
+ XcmsColor *puvY_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIEuvY format to CIEXYZ format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsCIEXYZ XYZ_return;
+ XcmsColor whitePt;
+ int i;
+ XcmsColor *pColor = pColors_in_out;
+ XcmsFloat div, x, y, z, Y;
+
+ /*
+ * Check arguments
+ * Postpone checking puvY_WhitePt until it is actually needed
+ * otherwise converting between XYZ and uvY will fail.
+ */
+ if (pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is CIEuvY */
+ if (!_XcmsCIEuvY_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert to CIEXYZ
+ */
+
+ Y = pColor->spec.CIEuvY.Y;
+
+ /* Convert color u'v' to xyz space */
+ div = (6.0 * pColor->spec.CIEuvY.u_prime) - (16.0 * pColor->spec.CIEuvY.v_prime) + 12.0;
+ if (div == 0.0) {
+ /* use white point since div == 0 */
+ if (puvY_WhitePt == NULL ) {
+ return(XcmsFailure);
+ }
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (puvY_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)puvY_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
+ XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ puvY_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (puvY_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+ div = (6.0 * puvY_WhitePt->spec.CIEuvY.u_prime) -
+ (16.0 * puvY_WhitePt->spec.CIEuvY.v_prime) + 12.0;
+ if (div == 0) {
+ /* internal error */
+ return(XcmsFailure);
+ }
+ x = 9.0 * puvY_WhitePt->spec.CIEuvY.u_prime / div;
+ y = 4.0 * puvY_WhitePt->spec.CIEuvY.v_prime / div;
+ } else {
+ x = 9.0 * pColor->spec.CIEuvY.u_prime / div;
+ y = 4.0 * pColor->spec.CIEuvY.v_prime / div;
+ }
+ z = 1.0 - x - y;
+
+ /* Convert from xyz to XYZ */
+ /* Conversion uses color normalized lightness based on Y */
+ if (y != 0.0) {
+ XYZ_return.X = x * Y / y;
+ } else {
+ XYZ_return.X = x;
+ }
+ XYZ_return.Y = Y;
+ if (y != 0.0) {
+ XYZ_return.Z = z * Y / y;
+ } else {
+ XYZ_return.Z = z;
+ }
+
+ memcpy((char *)&pColor->spec.CIEXYZ, (char *)&XYZ_return, sizeof(XcmsCIEXYZ));
+ /* Identify that format is now CIEXYZ */
+ pColor->format = XcmsCIEXYZFormat;
+ }
+
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEXYZToCIEuvY - convert CIEXYZ to CIEuvY
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIEXYZToCIEuvY(
+ XcmsCCC ccc,
+ XcmsColor *puvY_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIEXYZ format to CIEuvY format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsCIEuvY uvY_return;
+ XcmsColor whitePt;
+ int i;
+ XcmsColor *pColor = pColors_in_out;
+ XcmsFloat div;
+
+ /*
+ * Check arguments
+ * Postpone checking puvY_WhitePt until it is actually needed
+ * otherwise converting between XYZ and uvY will fail.
+ */
+ if (pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEuvY form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is CIEXYZ */
+ if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /* Convert to CIEuvY */
+ div = pColor->spec.CIEXYZ.X + (15.0 * pColor->spec.CIEXYZ.Y) +
+ (3.0 * pColor->spec.CIEXYZ.Z);
+ if (div == 0.0) {
+ /* Use white point since div == 0.0 */
+ if (puvY_WhitePt == NULL ) {
+ return(XcmsFailure);
+ }
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (puvY_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)puvY_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
+ XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ puvY_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (puvY_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+ uvY_return.Y = pColor->spec.CIEXYZ.Y;
+ uvY_return.u_prime = puvY_WhitePt->spec.CIEuvY.u_prime;
+ uvY_return.v_prime = puvY_WhitePt->spec.CIEuvY.v_prime;
+ } else {
+ uvY_return.u_prime = 4.0 * pColor->spec.CIEXYZ.X / div;
+ uvY_return.v_prime = 9.0 * pColor->spec.CIEXYZ.Y / div;
+ uvY_return.Y = pColor->spec.CIEXYZ.Y;
+ }
+
+ memcpy((char *)&pColor->spec.CIEuvY, (char *)&uvY_return, sizeof(XcmsCIEuvY));
+ /* Identify that format is now CIEuvY */
+ pColor->format = XcmsCIEuvYFormat;
+ }
+
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/xyY.c b/libX11/src/xcms/xyY.c
index 6f9457496..6f6562621 100644
--- a/libX11/src/xcms/xyY.c
+++ b/libX11/src/xcms/xyY.c
@@ -1,395 +1,395 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIExyY.c
- *
- * DESCRIPTION
- * This file contains routines that support the CIE xyY
- * color space to include conversions to and from the CIE
- * XYZ space.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <X11/Xos.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define EPS 0.00001 /* some extremely small number */
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-
-/*
- * FORWARD DECLARATIONS
- */
-
-static int CIExyY_ParseString(register char *spec, XcmsColor *pColor);
-static Status XcmsCIExyY_ValidSpec(XcmsColor *pColor);
-
-
-/*
- * LOCAL VARIABLES
- */
-
- /*
- * NULL terminated list of functions applied to get from CIExyY to CIEXYZ
- */
-static XcmsConversionProc Fl_CIExyY_to_CIEXYZ[] = {
- XcmsCIExyYToCIEXYZ,
- NULL
-};
-
- /*
- * NULL terminated list of functions applied to get from CIEXYZ to CIExyY
- */
-static XcmsConversionProc Fl_CIEXYZ_to_CIExyY[] = {
- XcmsCIEXYZToCIExyY,
- NULL
-};
-
-
-/*
- * GLOBALS
- */
-
- /*
- * CIE xyY Color Space
- */
-XcmsColorSpace XcmsCIExyYColorSpace =
- {
- _XcmsCIExyY_prefix, /* prefix */
- XcmsCIExyYFormat, /* id */
- CIExyY_ParseString, /* parseString */
- Fl_CIExyY_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_CIExyY, /* from_CIEXYZ */
- 1
- };
-
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIExyY_ParseString
- *
- * SYNOPSIS
- */
-static int
-CIExyY_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsCIExyYFormat.
- * The assumed CIExyY string syntax is:
- * CIExyY:<x>/<y>/<Y>
- * Where x, y, and Y are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- * 0 if failed, non-zero otherwise.
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsCIExyY_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIExyY.x,
- &pColor->spec.CIExyY.y,
- &pColor->spec.CIExyY.Y) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIExyY.x,
- &pColor->spec.CIExyY.y,
- &pColor->spec.CIExyY.Y) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsCIExyYFormat;
- pColor->pixel = 0;
- return(XcmsCIExyY_ValidSpec(pColor));
-}
-
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIExyY_ValidSpec()
- *
- * SYNOPSIS
- */
-static Status
-XcmsCIExyY_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks a valid CIExyY color specification.
- *
- * RETURNS
- * XcmsFailure if invalid.
- * XcmsSuccess if valid.
- *
- */
-{
- if (pColor->format != XcmsCIExyYFormat
- ||
- (pColor->spec.CIExyY.x < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIExyY.x > 1.0 + XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIExyY.y < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIExyY.y > 1.0 + XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIExyY.Y < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIExyY.Y > 1.0 + XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIExyYToCIEXYZ - convert CIExyY to CIEXYZ
- *
- * SYNOPSIS
- */
-Status
-XcmsCIExyYToCIEXYZ(
- XcmsCCC ccc,
- XcmsColor *pxyY_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIExyY format to CIEXYZ format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- */
-{
- XcmsColor *pColor = pColors_in_out;
- XcmsColor whitePt;
- XcmsCIEXYZ XYZ_return;
- XcmsFloat div; /* temporary storage in case divisor is zero */
- XcmsFloat u, v, x, y, z; /* temporary storage */
- register int i;
-
- /*
- * Check arguments
- */
- if (pxyY_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
- /* Make sure original format is CIExyY and valid */
- if (!XcmsCIExyY_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- if ((div = (-2 * pColor->spec.CIExyY.x) + (12 * pColor->spec.CIExyY.y) + 3) == 0.0) {
- /* Note that the divisor is zero */
- /* This return is abitrary. */
- XYZ_return.X = 0;
- XYZ_return.Y = 0;
- XYZ_return.Z = 0;
- } else {
- /*
- * Make sure white point is in CIEXYZ form
- */
- if (pxyY_WhitePt->format != XcmsCIEXYZFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pxyY_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
- XcmsCIEXYZFormat)) {
- return(XcmsFailure);
- }
- pxyY_WhitePt = &whitePt;
- }
-
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (pxyY_WhitePt->spec.CIEXYZ.Y != 1.0) {
- return(XcmsFailure);
- }
-
- /* Convert from xyY to uvY to XYZ */
- u = (4 * pColor->spec.CIExyY.x) / div;
- v = (9 * pColor->spec.CIExyY.y) / div;
- div = (6.0 * u) - (16.0 * v) + 12.0;
- if (div == 0.0) {
- /* Note that the divisor is zero */
- /* This return is abitrary. */
- if ((div = (6.0 * whitePt.spec.CIEuvY.u_prime) -
- (16.0 * whitePt.spec.CIEuvY.v_prime) + 12.0) == 0.0) {
- div = EPS;
- }
- x = 9.0 * whitePt.spec.CIEuvY.u_prime / div;
- y = 4.0 * whitePt.spec.CIEuvY.u_prime / div;
- } else {
- /* convert u, v to small xyz */
- x = 9.0 * u / div;
- y = 4.0 * v / div;
- }
- z = 1.0 - x - y;
- if (y == 0.0) y = EPS; /* Have to worry about divide by 0 */
- XYZ_return.Y = pColor->spec.CIExyY.Y;
- XYZ_return.X = x * XYZ_return.Y / y;
- XYZ_return.Z = z * XYZ_return.Y / y;
- }
-
- /* Copy result to pColor */
- memcpy ((char *)&pColor->spec, (char *)&XYZ_return, sizeof(XcmsCIEXYZ));
-
- /* Identify that the format is now CIEXYZ */
- pColor->format = XcmsCIEXYZFormat;
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIEXYZToCIExyY - convert CIEXYZ to CIExyY
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIEXYZToCIExyY(
- XcmsCCC ccc,
- XcmsColor *pxyY_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIEXYZ format to CIExyY format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsColor *pColor = pColors_in_out;
- XcmsCIExyY xyY_return;
- XcmsFloat div; /* temporary storage in case divisor is zero */
- register int i;
-
- /*
- * Check arguments
- * pxyY_WhitePt ignored
- */
- if (pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
- /* Now convert for XYZ to xyY */
- if ((div = pColor->spec.CIEXYZ.X + pColor->spec.CIEXYZ.Y + pColor->spec.CIEXYZ.Z) == 0.0) {
- div = EPS;
- }
- xyY_return.x = pColor->spec.CIEXYZ.X / div;
- xyY_return.y = pColor->spec.CIEXYZ.Y / div;
- xyY_return.Y = pColor->spec.CIEXYZ.Y;
-
- /* Copy result to pColor */
- memcpy ((char *)&pColor->spec, (char *)&xyY_return, sizeof(XcmsCIExyY));
-
- /* Identify that the format is now CIEXYZ */
- pColor->format = XcmsCIExyYFormat;
- }
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX 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 THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIExyY.c
+ *
+ * DESCRIPTION
+ * This file contains routines that support the CIE xyY
+ * color space to include conversions to and from the CIE
+ * XYZ space.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <X11/Xos.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define EPS 0.00001 /* some extremely small number */
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+
+/*
+ * FORWARD DECLARATIONS
+ */
+
+static int CIExyY_ParseString(register char *spec, XcmsColor *pColor);
+static Status XcmsCIExyY_ValidSpec(XcmsColor *pColor);
+
+
+/*
+ * LOCAL VARIABLES
+ */
+
+ /*
+ * NULL terminated list of functions applied to get from CIExyY to CIEXYZ
+ */
+static XcmsConversionProc Fl_CIExyY_to_CIEXYZ[] = {
+ XcmsCIExyYToCIEXYZ,
+ NULL
+};
+
+ /*
+ * NULL terminated list of functions applied to get from CIEXYZ to CIExyY
+ */
+static XcmsConversionProc Fl_CIEXYZ_to_CIExyY[] = {
+ XcmsCIEXYZToCIExyY,
+ NULL
+};
+
+
+/*
+ * GLOBALS
+ */
+
+ /*
+ * CIE xyY Color Space
+ */
+XcmsColorSpace XcmsCIExyYColorSpace =
+ {
+ _XcmsCIExyY_prefix, /* prefix */
+ XcmsCIExyYFormat, /* id */
+ CIExyY_ParseString, /* parseString */
+ Fl_CIExyY_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_CIExyY, /* from_CIEXYZ */
+ 1
+ };
+
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIExyY_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+CIExyY_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsCIExyYFormat.
+ * The assumed CIExyY string syntax is:
+ * CIExyY:<x>/<y>/<Y>
+ * Where x, y, and Y are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ * 0 if failed, non-zero otherwise.
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsCIExyY_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIExyY.x,
+ &pColor->spec.CIExyY.y,
+ &pColor->spec.CIExyY.Y) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIExyY.x,
+ &pColor->spec.CIExyY.y,
+ &pColor->spec.CIExyY.Y) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsCIExyYFormat;
+ pColor->pixel = 0;
+ return(XcmsCIExyY_ValidSpec(pColor));
+}
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIExyY_ValidSpec()
+ *
+ * SYNOPSIS
+ */
+static Status
+XcmsCIExyY_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks a valid CIExyY color specification.
+ *
+ * RETURNS
+ * XcmsFailure if invalid.
+ * XcmsSuccess if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsCIExyYFormat
+ ||
+ (pColor->spec.CIExyY.x < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIExyY.x > 1.0 + XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIExyY.y < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIExyY.y > 1.0 + XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIExyY.Y < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIExyY.Y > 1.0 + XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIExyYToCIEXYZ - convert CIExyY to CIEXYZ
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIExyYToCIEXYZ(
+ XcmsCCC ccc,
+ XcmsColor *pxyY_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIExyY format to CIEXYZ format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ */
+{
+ XcmsColor *pColor = pColors_in_out;
+ XcmsColor whitePt;
+ XcmsCIEXYZ XYZ_return;
+ XcmsFloat div; /* temporary storage in case divisor is zero */
+ XcmsFloat u, v, x, y, z; /* temporary storage */
+ register int i;
+
+ /*
+ * Check arguments
+ */
+ if (pxyY_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+ /* Make sure original format is CIExyY and valid */
+ if (!XcmsCIExyY_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ if ((div = (-2 * pColor->spec.CIExyY.x) + (12 * pColor->spec.CIExyY.y) + 3) == 0.0) {
+ /* Note that the divisor is zero */
+ /* This return is abitrary. */
+ XYZ_return.X = 0;
+ XYZ_return.Y = 0;
+ XYZ_return.Z = 0;
+ } else {
+ /*
+ * Make sure white point is in CIEXYZ form
+ */
+ if (pxyY_WhitePt->format != XcmsCIEXYZFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pxyY_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
+ XcmsCIEXYZFormat)) {
+ return(XcmsFailure);
+ }
+ pxyY_WhitePt = &whitePt;
+ }
+
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (pxyY_WhitePt->spec.CIEXYZ.Y != 1.0) {
+ return(XcmsFailure);
+ }
+
+ /* Convert from xyY to uvY to XYZ */
+ u = (4 * pColor->spec.CIExyY.x) / div;
+ v = (9 * pColor->spec.CIExyY.y) / div;
+ div = (6.0 * u) - (16.0 * v) + 12.0;
+ if (div == 0.0) {
+ /* Note that the divisor is zero */
+ /* This return is abitrary. */
+ if ((div = (6.0 * whitePt.spec.CIEuvY.u_prime) -
+ (16.0 * whitePt.spec.CIEuvY.v_prime) + 12.0) == 0.0) {
+ div = EPS;
+ }
+ x = 9.0 * whitePt.spec.CIEuvY.u_prime / div;
+ y = 4.0 * whitePt.spec.CIEuvY.u_prime / div;
+ } else {
+ /* convert u, v to small xyz */
+ x = 9.0 * u / div;
+ y = 4.0 * v / div;
+ }
+ z = 1.0 - x - y;
+ if (y == 0.0) y = EPS; /* Have to worry about divide by 0 */
+ XYZ_return.Y = pColor->spec.CIExyY.Y;
+ XYZ_return.X = x * XYZ_return.Y / y;
+ XYZ_return.Z = z * XYZ_return.Y / y;
+ }
+
+ /* Copy result to pColor */
+ memcpy ((char *)&pColor->spec, (char *)&XYZ_return, sizeof(XcmsCIEXYZ));
+
+ /* Identify that the format is now CIEXYZ */
+ pColor->format = XcmsCIEXYZFormat;
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEXYZToCIExyY - convert CIEXYZ to CIExyY
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIEXYZToCIExyY(
+ XcmsCCC ccc,
+ XcmsColor *pxyY_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIEXYZ format to CIExyY format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsColor *pColor = pColors_in_out;
+ XcmsCIExyY xyY_return;
+ XcmsFloat div; /* temporary storage in case divisor is zero */
+ register int i;
+
+ /*
+ * Check arguments
+ * pxyY_WhitePt ignored
+ */
+ if (pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+ /* Now convert for XYZ to xyY */
+ if ((div = pColor->spec.CIEXYZ.X + pColor->spec.CIEXYZ.Y + pColor->spec.CIEXYZ.Z) == 0.0) {
+ div = EPS;
+ }
+ xyY_return.x = pColor->spec.CIEXYZ.X / div;
+ xyY_return.y = pColor->spec.CIEXYZ.Y / div;
+ xyY_return.Y = pColor->spec.CIEXYZ.Y;
+
+ /* Copy result to pColor */
+ memcpy ((char *)&pColor->spec, (char *)&xyY_return, sizeof(XcmsCIExyY));
+
+ /* Identify that the format is now CIEXYZ */
+ pColor->format = XcmsCIExyYFormat;
+ }
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xkb/XKBlibint.h b/libX11/src/xkb/XKBlibint.h
index ce145276c..bb39f7a22 100644
--- a/libX11/src/xkb/XKBlibint.h
+++ b/libX11/src/xkb/XKBlibint.h
@@ -1,343 +1,343 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-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 of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS 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.
-
-********************************************************/
-
-#ifndef _XKBLIBINT_H_
-#define _XKBLIBINT_H_
-
-#include <X11/Xutil.h>
-#include <X11/XKBlib.h>
-
-#define XkbMapPending (1<<0)
-#define XkbXlibNewKeyboard (1<<1)
-
-typedef int (*XkbKSToMBFunc)(
- XPointer /* priv */,
- KeySym /* sym */,
- char * /* buf */,
- int /* len */,
- int * /* extra_rtrn */
-);
-
-typedef KeySym (*XkbMBToKSFunc)(
- XPointer /* priv */,
- char * /* buf */,
- int /* len */,
- Status * /* status */
-);
-
-typedef KeySym (*XkbToUpperFunc)(
- KeySym /* sym */
-);
-
-typedef struct _XkbConverters {
- XkbKSToMBFunc KSToMB;
- XPointer KSToMBPriv;
- XkbMBToKSFunc MBToKS;
- XPointer MBToKSPriv;
- XkbToUpperFunc KSToUpper;
-} XkbConverters;
-
-extern XkbInternAtomFunc _XkbInternAtomFunc;
-extern XkbGetAtomNameFunc _XkbGetAtomNameFunc;
-
-typedef struct _XkbInfoRec {
- unsigned flags;
- unsigned xlib_ctrls;
- XExtCodes *codes;
- int srv_major;
- int srv_minor;
- unsigned selected_events;
- unsigned short selected_nkn_details;
- unsigned short selected_map_details;
- XkbDescRec *desc;
- XkbMapChangesRec changes;
- Atom composeLED;
- XkbConverters cvt;
- XkbConverters latin1cvt;
-} XkbInfoRec, *XkbInfoPtr;
-
-
-#define _XkbUnavailable(d) \
- (((d)->flags&XlibDisplayNoXkb) ||\
- ((!(d)->xkb_info || (!(d)->xkb_info->desc)) && !_XkbLoadDpy(d)))
-
-#define _XkbCheckPendingRefresh(d,xi) {\
- if ((xi)->flags&XkbXlibNewKeyboard)\
- _XkbReloadDpy((d));\
- else if ((xi)->flags&XkbMapPending) {\
- if (XkbGetMapChanges((d),(xi)->desc, &(xi)->changes)==Success) {\
- LockDisplay((d));\
- (xi)->changes.changed= 0;\
- UnlockDisplay((d));\
- }\
- }\
-}
-
-#define _XkbNeedModmap(i) ((!(i)->desc->map)||(!(i)->desc->map->modmap))
-
- /*
- * mask of the events that the "invisible" XKB support in Xlib needs
- */
-#define XKB_XLIB_MAP_MASK (XkbAllClientInfoMask)
-
- /*
- * Handy helper macros
- */
-#define XKB_INSURE_SIZE(f,t,nNum,oNum) {\
- if ((f)==NULL) \
- (f)=(t *)Xmalloc(sizeof(t)*(nNum));\
- else if ((nNum)<(oNum))\
- (f)=(t *)Xrealloc((f),sizeof(t)*(nNum));\
- }
-
-typedef struct _XkbReadBuffer {
- int error;
- int size;
- char *start;
- char *data;
-} XkbReadBufferRec,*XkbReadBufferPtr;
-
-#define _XkbAlloc(s) Xmalloc((s))
-#define _XkbCalloc(n,s) Xcalloc((n),(s))
-#define _XkbRealloc(o,s) Xrealloc((o),(s))
-#define _XkbTypedAlloc(t) ((t *)Xmalloc(sizeof(t)))
-#define _XkbTypedCalloc(n,t) ((t *)Xcalloc((n),sizeof(t)))
-#define _XkbTypedRealloc(o,n,t) \
- ((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t))
-#define _XkbClearElems(a,f,l,t) bzero(&(a)[f],((l)-(f)+1)*sizeof(t))
-#define _XkbFree(p) Xfree(p)
-
-_XFUNCPROTOBEGIN
-
-extern void _XkbReloadDpy(
- Display * /* dpy */
-);
-
-extern KeySym _XKeycodeToKeysym(
- Display* /* display */,
-#if NeedWidePrototypes
- unsigned int /* keycode */,
-#else
- KeyCode /* keycode */,
-#endif
- int /* index */
-);
-
-extern KeyCode _XKeysymToKeycode(
- Display* /* display */,
- KeySym /* keysym */
-);
-
-extern KeySym _XLookupKeysym(
- XKeyEvent* /* key_event */,
- int /* index */
-);
-
-extern int _XRefreshKeyboardMapping(
- XMappingEvent* /* event_map */
-);
-
-extern unsigned _XKeysymToModifiers(
- Display * /* dpy */,
- KeySym /* ks */
-);
-
-extern int _XTranslateKey(
- register Display * /* dpy */,
- KeyCode /* keycode */,
- register unsigned int /* modifiers */,
- unsigned int * /* modifiers_return */,
- KeySym * /* keysym_return */
-);
-
-extern int _XTranslateKeySym(
- Display * /* dpy */,
- register KeySym /* symbol */,
- unsigned int /* modifiers */,
- char * /* buffer */,
- int /* nbytes */
-);
-
-extern int _XLookupString(
- register XKeyEvent * /* event */,
- char * /* buffer */,
- int /* nbytes */,
- KeySym * /* keysym */,
- XComposeStatus * /* status */
-);
-
-extern void _XkbNoteCoreMapChanges(
- XkbMapChangesRec * /* old */,
- XMappingEvent * /* new */,
- unsigned int /* wanted */
-);
-
-extern int _XkbInitReadBuffer(
- Display * /* dpy */,
- XkbReadBufferPtr /* buf */,
- int /* size */
-);
-
-extern int _XkbSkipReadBufferData(
- XkbReadBufferPtr /* from */,
- int /* size */
-);
-
-extern int _XkbCopyFromReadBuffer(
- XkbReadBufferPtr /* from */,
- char * /* to */,
- int /* size */
-);
-
-
-#if defined(WORD64) || defined(LONG64)
-extern int _XkbReadCopyData32(
- int * /* from */,
- long * /* to */,
- int /* num_words */
-);
-
-extern int _XkbWriteCopyData32(
- unsigned long * /* from */,
- CARD32 * /* to */,
- int /* num_words */
-);
-
-extern int _XkbReadBufferCopy32(
- XkbReadBufferPtr /* from */,
- long * /* to */,
- int /* size */
-);
-#else
-#define _XkbReadCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4)
-#define _XkbWriteCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4)
-#define _XkbReadBufferCopy32(f,t,s) _XkbCopyFromReadBuffer(f,(char *)t,(s)*4)
-#endif
-
-#ifndef NO_DEC_BINARY_COMPATIBILITY
-#define XKB_FORCE_INT_KEYSYM 1
-#endif
-
-#ifdef XKB_FORCE_INT_KEYSYM
-extern int _XkbReadCopyKeySyms(
- int * /* from */,
- KeySym * /* to */,
- int /* num_words */
-);
-
-extern int _XkbWriteCopyKeySyms(
- KeySym * /* from */,
- CARD32 * /* to */,
- int /* num_words */
-);
-
-extern int _XkbReadBufferCopyKeySyms(
- XkbReadBufferPtr /* from */,
-#ifndef NO_DEC_BUG_FIX
- KeySym * /* to */,
-#else
- long * /* to */,
-#endif
- int /* size */
-);
-#else
-#define _XkbReadCopyKeySyms(f,t,n) _XkbReadCopyData32(f,t,n)
-#define _XkbWriteCopyKeySyms(f,t,n) _XkbWriteCopyData32(f,t,n)
-#define _XkbReadBufferCopyKeySyms(f,t,s) _XkbReadBufferCopy32(f,t,s)
-#endif
-
-extern char *_XkbPeekAtReadBuffer(
- XkbReadBufferPtr /* from */,
- int /* size */
-);
-
-extern char *_XkbGetReadBufferPtr(
- XkbReadBufferPtr /* from */,
- int /* size */
-);
-#define _XkbGetTypedRdBufPtr(b,n,t) ((t *)_XkbGetReadBufferPtr(b,(n)*SIZEOF(t)))
-
-extern int _XkbFreeReadBuffer(
- XkbReadBufferPtr /* buf */
-);
-
-extern Bool
-_XkbGetReadBufferCountedString(
- XkbReadBufferPtr /* buf */,
- char ** /* rtrn */
-);
-
-extern char *_XkbGetCharset(
- void
-);
-
-extern int _XkbGetConverters(
- const char * /* encoding_name */,
- XkbConverters * /* cvt_rtrn */
-);
-
-#ifdef NEED_MAP_READERS
-
-extern Status _XkbReadGetMapReply(
- Display * /* dpy */,
- xkbGetMapReply * /* rep */,
- XkbDescRec * /* xkb */,
- int * /* nread_rtrn */
-);
-
-extern Status _XkbReadGetCompatMapReply(
- Display * /* dpy */,
- xkbGetCompatMapReply * /* rep */,
- XkbDescPtr /* xkb */,
- int * /* nread_rtrn */
-);
-
-extern Status _XkbReadGetIndicatorMapReply(
- Display * /* dpy */,
- xkbGetIndicatorMapReply * /* rep */,
- XkbDescPtr /* xkb */,
- int * /* nread_rtrn */
-);
-
-extern Status _XkbReadGetNamesReply(
- Display * /* dpy */,
- xkbGetNamesReply * /* rep */,
- XkbDescPtr /* xkb */,
- int * /* nread_rtrn */
-);
-
-extern Status _XkbReadGetGeometryReply(
- Display * /* dpy */,
- xkbGetGeometryReply * /* rep */,
- XkbDescPtr /* xkb */,
- int * /* nread_rtrn */
-);
-
-#endif
-
-_XFUNCPROTOEND
-
-#endif /* _XKBLIBINT_H_ */
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+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 of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS 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.
+
+********************************************************/
+
+#ifndef _XKBLIBINT_H_
+#define _XKBLIBINT_H_
+
+#include <X11/Xutil.h>
+#include <X11/XKBlib.h>
+
+#define XkbMapPending (1<<0)
+#define XkbXlibNewKeyboard (1<<1)
+
+typedef int (*XkbKSToMBFunc)(
+ XPointer /* priv */,
+ KeySym /* sym */,
+ char * /* buf */,
+ int /* len */,
+ int * /* extra_rtrn */
+);
+
+typedef KeySym (*XkbMBToKSFunc)(
+ XPointer /* priv */,
+ char * /* buf */,
+ int /* len */,
+ Status * /* status */
+);
+
+typedef KeySym (*XkbToUpperFunc)(
+ KeySym /* sym */
+);
+
+typedef struct _XkbConverters {
+ XkbKSToMBFunc KSToMB;
+ XPointer KSToMBPriv;
+ XkbMBToKSFunc MBToKS;
+ XPointer MBToKSPriv;
+ XkbToUpperFunc KSToUpper;
+} XkbConverters;
+
+extern XkbInternAtomFunc _XkbInternAtomFunc;
+extern XkbGetAtomNameFunc _XkbGetAtomNameFunc;
+
+typedef struct _XkbInfoRec {
+ unsigned flags;
+ unsigned xlib_ctrls;
+ XExtCodes *codes;
+ int srv_major;
+ int srv_minor;
+ unsigned selected_events;
+ unsigned short selected_nkn_details;
+ unsigned short selected_map_details;
+ XkbDescRec *desc;
+ XkbMapChangesRec changes;
+ Atom composeLED;
+ XkbConverters cvt;
+ XkbConverters latin1cvt;
+} XkbInfoRec, *XkbInfoPtr;
+
+
+#define _XkbUnavailable(d) \
+ (((d)->flags&XlibDisplayNoXkb) ||\
+ ((!(d)->xkb_info || (!(d)->xkb_info->desc)) && !_XkbLoadDpy(d)))
+
+#define _XkbCheckPendingRefresh(d,xi) {\
+ if ((xi)->flags&XkbXlibNewKeyboard)\
+ _XkbReloadDpy((d));\
+ else if ((xi)->flags&XkbMapPending) {\
+ if (XkbGetMapChanges((d),(xi)->desc, &(xi)->changes)==Success) {\
+ LockDisplay((d));\
+ (xi)->changes.changed= 0;\
+ UnlockDisplay((d));\
+ }\
+ }\
+}
+
+#define _XkbNeedModmap(i) ((!(i)->desc->map)||(!(i)->desc->map->modmap))
+
+ /*
+ * mask of the events that the "invisible" XKB support in Xlib needs
+ */
+#define XKB_XLIB_MAP_MASK (XkbAllClientInfoMask)
+
+ /*
+ * Handy helper macros
+ */
+#define XKB_INSURE_SIZE(f,t,nNum,oNum) {\
+ if ((f)==NULL) \
+ (f)=(t *)Xmalloc(sizeof(t)*(nNum));\
+ else if ((nNum)<(oNum))\
+ (f)=(t *)Xrealloc((f),sizeof(t)*(nNum));\
+ }
+
+typedef struct _XkbReadBuffer {
+ int error;
+ int size;
+ char *start;
+ char *data;
+} XkbReadBufferRec,*XkbReadBufferPtr;
+
+#define _XkbAlloc(s) Xmalloc((s))
+#define _XkbCalloc(n,s) Xcalloc((n),(s))
+#define _XkbRealloc(o,s) Xrealloc((o),(s))
+#define _XkbTypedAlloc(t) ((t *)Xmalloc(sizeof(t)))
+#define _XkbTypedCalloc(n,t) ((t *)Xcalloc((n),sizeof(t)))
+#define _XkbTypedRealloc(o,n,t) \
+ ((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t))
+#define _XkbClearElems(a,f,l,t) bzero(&(a)[f],((l)-(f)+1)*sizeof(t))
+#define _XkbFree(p) Xfree(p)
+
+_XFUNCPROTOBEGIN
+
+extern void _XkbReloadDpy(
+ Display * /* dpy */
+);
+
+extern KeySym _XKeycodeToKeysym(
+ Display* /* display */,
+#if NeedWidePrototypes
+ unsigned int /* keycode */,
+#else
+ KeyCode /* keycode */,
+#endif
+ int /* index */
+);
+
+extern KeyCode _XKeysymToKeycode(
+ Display* /* display */,
+ KeySym /* keysym */
+);
+
+extern KeySym _XLookupKeysym(
+ XKeyEvent* /* key_event */,
+ int /* index */
+);
+
+extern int _XRefreshKeyboardMapping(
+ XMappingEvent* /* event_map */
+);
+
+extern unsigned _XKeysymToModifiers(
+ Display * /* dpy */,
+ KeySym /* ks */
+);
+
+extern int _XTranslateKey(
+ register Display * /* dpy */,
+ KeyCode /* keycode */,
+ register unsigned int /* modifiers */,
+ unsigned int * /* modifiers_return */,
+ KeySym * /* keysym_return */
+);
+
+extern int _XTranslateKeySym(
+ Display * /* dpy */,
+ register KeySym /* symbol */,
+ unsigned int /* modifiers */,
+ char * /* buffer */,
+ int /* nbytes */
+);
+
+extern int _XLookupString(
+ register XKeyEvent * /* event */,
+ char * /* buffer */,
+ int /* nbytes */,
+ KeySym * /* keysym */,
+ XComposeStatus * /* status */
+);
+
+extern void _XkbNoteCoreMapChanges(
+ XkbMapChangesRec * /* old */,
+ XMappingEvent * /* new */,
+ unsigned int /* wanted */
+);
+
+extern int _XkbInitReadBuffer(
+ Display * /* dpy */,
+ XkbReadBufferPtr /* buf */,
+ int /* size */
+);
+
+extern int _XkbSkipReadBufferData(
+ XkbReadBufferPtr /* from */,
+ int /* size */
+);
+
+extern int _XkbCopyFromReadBuffer(
+ XkbReadBufferPtr /* from */,
+ char * /* to */,
+ int /* size */
+);
+
+
+#if defined(WORD64) || defined(LONG64)
+extern int _XkbReadCopyData32(
+ int * /* from */,
+ long * /* to */,
+ int /* num_words */
+);
+
+extern int _XkbWriteCopyData32(
+ unsigned long * /* from */,
+ CARD32 * /* to */,
+ int /* num_words */
+);
+
+extern int _XkbReadBufferCopy32(
+ XkbReadBufferPtr /* from */,
+ long * /* to */,
+ int /* size */
+);
+#else
+#define _XkbReadCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4)
+#define _XkbWriteCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4)
+#define _XkbReadBufferCopy32(f,t,s) _XkbCopyFromReadBuffer(f,(char *)t,(s)*4)
+#endif
+
+#ifndef NO_DEC_BINARY_COMPATIBILITY
+#define XKB_FORCE_INT_KEYSYM 1
+#endif
+
+#ifdef XKB_FORCE_INT_KEYSYM
+extern int _XkbReadCopyKeySyms(
+ int * /* from */,
+ KeySym * /* to */,
+ int /* num_words */
+);
+
+extern int _XkbWriteCopyKeySyms(
+ KeySym * /* from */,
+ CARD32 * /* to */,
+ int /* num_words */
+);
+
+extern int _XkbReadBufferCopyKeySyms(
+ XkbReadBufferPtr /* from */,
+#ifndef NO_DEC_BUG_FIX
+ KeySym * /* to */,
+#else
+ long * /* to */,
+#endif
+ int /* size */
+);
+#else
+#define _XkbReadCopyKeySyms(f,t,n) _XkbReadCopyData32(f,t,n)
+#define _XkbWriteCopyKeySyms(f,t,n) _XkbWriteCopyData32(f,t,n)
+#define _XkbReadBufferCopyKeySyms(f,t,s) _XkbReadBufferCopy32(f,t,s)
+#endif
+
+extern char *_XkbPeekAtReadBuffer(
+ XkbReadBufferPtr /* from */,
+ int /* size */
+);
+
+extern char *_XkbGetReadBufferPtr(
+ XkbReadBufferPtr /* from */,
+ int /* size */
+);
+#define _XkbGetTypedRdBufPtr(b,n,t) ((t *)_XkbGetReadBufferPtr(b,(n)*SIZEOF(t)))
+
+extern int _XkbFreeReadBuffer(
+ XkbReadBufferPtr /* buf */
+);
+
+extern Bool
+_XkbGetReadBufferCountedString(
+ XkbReadBufferPtr /* buf */,
+ char ** /* rtrn */
+);
+
+extern char *_XkbGetCharset(
+ void
+);
+
+extern int _XkbGetConverters(
+ const char * /* encoding_name */,
+ XkbConverters * /* cvt_rtrn */
+);
+
+#ifdef NEED_MAP_READERS
+
+extern Status _XkbReadGetMapReply(
+ Display * /* dpy */,
+ xkbGetMapReply * /* rep */,
+ XkbDescRec * /* xkb */,
+ int * /* nread_rtrn */
+);
+
+extern Status _XkbReadGetCompatMapReply(
+ Display * /* dpy */,
+ xkbGetCompatMapReply * /* rep */,
+ XkbDescPtr /* xkb */,
+ int * /* nread_rtrn */
+);
+
+extern Status _XkbReadGetIndicatorMapReply(
+ Display * /* dpy */,
+ xkbGetIndicatorMapReply * /* rep */,
+ XkbDescPtr /* xkb */,
+ int * /* nread_rtrn */
+);
+
+extern Status _XkbReadGetNamesReply(
+ Display * /* dpy */,
+ xkbGetNamesReply * /* rep */,
+ XkbDescPtr /* xkb */,
+ int * /* nread_rtrn */
+);
+
+extern Status _XkbReadGetGeometryReply(
+ Display * /* dpy */,
+ xkbGetGeometryReply * /* rep */,
+ XkbDescPtr /* xkb */,
+ int * /* nread_rtrn */
+);
+
+#endif
+
+_XFUNCPROTOEND
+
+#endif /* _XKBLIBINT_H_ */
diff --git a/libX11/src/xlibi18n/IMWrap.c b/libX11/src/xlibi18n/IMWrap.c
index 0f6ed5593..ef63a6208 100644
--- a/libX11/src/xlibi18n/IMWrap.c
+++ b/libX11/src/xlibi18n/IMWrap.c
@@ -1,204 +1,204 @@
-/*
- * Copyright 1991 by the Open Software Foundation
- * Copyright 1993, 1994 by the Sony Corporation
- *
- * 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 names of Open Software Foundation and
- * Sony Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- * Open Software Foundation and Sony Corporation make no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * OPEN SOFTWARE FOUNDATION AND SONY CORPORATION DISCLAIM ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OPEN
- * SOFTWARE FOUNDATIONN OR SONY CORPORATION 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.
- *
- * M. Collins OSF
- * Makoto Wakamatsu Sony Corporation
- */
-/*
-
-Copyright 1991, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-/*
- * Compile the resource name. (resource_name ---> xrm_name)
- */
-void
-_XIMCompileResourceList(XIMResourceList res, unsigned int num_res)
-{
- register unsigned int count;
-
- for (count = 0; count < num_res; res++, count++) {
- res->xrm_name = XrmStringToQuark(res->resource_name);
- }
-}
-
-void
-_XCopyToArg(XPointer src, XPointer *dst, unsigned int size)
-{
- if (!*dst) {
- union {
- long longval;
-#ifdef LONG64
- int intval;
-#endif
- short shortval;
- char charval;
- char* charptr;
- XPointer ptr;
- } u;
- if (size <= sizeof(XPointer)) {
- memcpy((char *)&u, (char *)src, (int)size);
- if (size == sizeof(long)) *dst = (XPointer)u.longval;
-#ifdef LONG64
- else if (size == sizeof(int)) *dst = (XPointer)(long)u.intval;
-#endif
- else if (size == sizeof(short)) *dst = (XPointer)(long)u.shortval;
- else if (size == sizeof(char)) *dst = (XPointer)(long)u.charval;
- else if (size == sizeof(char*)) *dst = (XPointer)u.charptr;
- else if (size == sizeof(XPointer)) *dst = (XPointer)u.ptr;
- else memcpy( (char*)dst, (char*)src, (int)size );
- } else {
- memcpy( (char*)dst, (char*)src, (int)size );
- }
- } else {
- memcpy( (char*)*dst, (char*)src, (int)size );
- }
-}
-
-/*
- * Connects to an input method matching current locale specification, creates
- * a XIM object and return a pointer the newly created XIM back to the caller.
- */
-
-XIM
-XOpenIM(Display *display, XrmDatabase rdb, char *res_name, char *res_class)
-{
- XLCd lcd = _XOpenLC( (char *)NULL );
-
- if( !lcd )
- return( (XIM)NULL );
- return (*lcd->methods->open_im) (lcd, display, rdb, res_name, res_class);
-}
-
-/*
- * Close the connection to the input manager, and free the XIM structure
- */
-Status
-XCloseIM(XIM im)
-{
- Status s;
- XIC ic;
- XLCd lcd = im->core.lcd;
-
- s = (im->methods->close) (im);
- for (ic = im->core.ic_chain; ic; ic = ic->core.next)
- ic->core.im = (XIM)NULL;
- Xfree ((char *) im);
- _XCloseLC (lcd);
- return (s);
-}
-
-/*
- * Return the Display associated with the input method.
- */
-Display *
-XDisplayOfIM(XIM im)
-{
- return im->core.display;
-}
-
-/*
- * Return the Locale associated with the input method.
- */
-char *
-XLocaleOfIM(XIM im)
-{
- return im->core.lcd->core->name;
-}
-
-/*
- * Register to a input method instantiation callback to prepare the
- * on-demand input method instantiation.
- */
-Bool
-XRegisterIMInstantiateCallback(
- Display *display,
- XrmDatabase rdb,
- char *res_name,
- char *res_class,
- XIDProc callback,
- XPointer client_data)
-{
- XLCd lcd = _XOpenLC( (char *)NULL );
-
- if( !lcd )
- return( False );
- return( (*lcd->methods->register_callback)( lcd, display, rdb, res_name,
- res_class, callback,
- client_data ) );
-}
-
-/*
- * Unregister to a input method instantiation callback.
- */
-Bool
-XUnregisterIMInstantiateCallback(
- Display *display,
- XrmDatabase rdb,
- char *res_name,
- char *res_class,
- XIDProc callback,
- XPointer client_data)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if( !lcd )
- return( False );
- if( lcd->methods->unregister_callback == NULL )
- return( False );
- return( (*lcd->methods->unregister_callback)( lcd, display, rdb, res_name,
- res_class, callback,
- client_data ) );
-}
-
+/*
+ * Copyright 1991 by the Open Software Foundation
+ * Copyright 1993, 1994 by the Sony Corporation
+ *
+ * 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 names of Open Software Foundation and
+ * Sony Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Open Software Foundation and Sony Corporation make no
+ * representations about the suitability of this software for any purpose.
+ * It is provided "as is" without express or implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION AND SONY CORPORATION DISCLAIM ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OPEN
+ * SOFTWARE FOUNDATIONN OR SONY CORPORATION 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.
+ *
+ * M. Collins OSF
+ * Makoto Wakamatsu Sony Corporation
+ */
+/*
+
+Copyright 1991, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+/*
+ * Compile the resource name. (resource_name ---> xrm_name)
+ */
+void
+_XIMCompileResourceList(XIMResourceList res, unsigned int num_res)
+{
+ register unsigned int count;
+
+ for (count = 0; count < num_res; res++, count++) {
+ res->xrm_name = XrmStringToQuark(res->resource_name);
+ }
+}
+
+void
+_XCopyToArg(XPointer src, XPointer *dst, unsigned int size)
+{
+ if (!*dst) {
+ union {
+ long longval;
+#ifdef LONG64
+ int intval;
+#endif
+ short shortval;
+ char charval;
+ char* charptr;
+ XPointer ptr;
+ } u;
+ if (size <= sizeof(XPointer)) {
+ memcpy((char *)&u, (char *)src, (int)size);
+ if (size == sizeof(long)) *dst = (XPointer)u.longval;
+#ifdef LONG64
+ else if (size == sizeof(int)) *dst = (XPointer)(long)u.intval;
+#endif
+ else if (size == sizeof(short)) *dst = (XPointer)(long)u.shortval;
+ else if (size == sizeof(char)) *dst = (XPointer)(long)u.charval;
+ else if (size == sizeof(char*)) *dst = (XPointer)u.charptr;
+ else if (size == sizeof(XPointer)) *dst = (XPointer)u.ptr;
+ else memcpy( (char*)dst, (char*)src, (int)size );
+ } else {
+ memcpy( (char*)dst, (char*)src, (int)size );
+ }
+ } else {
+ memcpy( (char*)*dst, (char*)src, (int)size );
+ }
+}
+
+/*
+ * Connects to an input method matching current locale specification, creates
+ * a XIM object and return a pointer the newly created XIM back to the caller.
+ */
+
+XIM
+XOpenIM(Display *display, XrmDatabase rdb, char *res_name, char *res_class)
+{
+ XLCd lcd = _XOpenLC( (char *)NULL );
+
+ if( !lcd )
+ return( (XIM)NULL );
+ return (*lcd->methods->open_im) (lcd, display, rdb, res_name, res_class);
+}
+
+/*
+ * Close the connection to the input manager, and free the XIM structure
+ */
+Status
+XCloseIM(XIM im)
+{
+ Status s;
+ XIC ic;
+ XLCd lcd = im->core.lcd;
+
+ s = (im->methods->close) (im);
+ for (ic = im->core.ic_chain; ic; ic = ic->core.next)
+ ic->core.im = (XIM)NULL;
+ Xfree ((char *) im);
+ _XCloseLC (lcd);
+ return (s);
+}
+
+/*
+ * Return the Display associated with the input method.
+ */
+Display *
+XDisplayOfIM(XIM im)
+{
+ return im->core.display;
+}
+
+/*
+ * Return the Locale associated with the input method.
+ */
+char *
+XLocaleOfIM(XIM im)
+{
+ return im->core.lcd->core->name;
+}
+
+/*
+ * Register to a input method instantiation callback to prepare the
+ * on-demand input method instantiation.
+ */
+Bool
+XRegisterIMInstantiateCallback(
+ Display *display,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class,
+ XIDProc callback,
+ XPointer client_data)
+{
+ XLCd lcd = _XOpenLC( (char *)NULL );
+
+ if( !lcd )
+ return( False );
+ return( (*lcd->methods->register_callback)( lcd, display, rdb, res_name,
+ res_class, callback,
+ client_data ) );
+}
+
+/*
+ * Unregister to a input method instantiation callback.
+ */
+Bool
+XUnregisterIMInstantiateCallback(
+ Display *display,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class,
+ XIDProc callback,
+ XPointer client_data)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if( !lcd )
+ return( False );
+ if( lcd->methods->unregister_callback == NULL )
+ return( False );
+ return( (*lcd->methods->unregister_callback)( lcd, display, rdb, res_name,
+ res_class, callback,
+ client_data ) );
+}
+
diff --git a/libX11/src/xlibi18n/Xaixlcint.h b/libX11/src/xlibi18n/Xaixlcint.h
index 446ba2581..9b455f6bb 100644
--- a/libX11/src/xlibi18n/Xaixlcint.h
+++ b/libX11/src/xlibi18n/Xaixlcint.h
@@ -1,53 +1,53 @@
-/*
- *
- * Copyright IBM Corporation 1993
- *
- * All Rights Reserved
- *
- * 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.
- *
- * 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.
- *
-*/
-/************************************************************************/
-/* Xaixlcint.h */
-/*----------------------------------------------------------------------*/
-/* This file contains Xlcint.h extension for AIX. */
-/************************************************************************/
-#ifndef _Xaixlcint_h
-#define _Xaixlcint_h
-
-#include "Xlcint.h"
-#include <sys/lc_core.h>
-
-#define _LC_LDX 11
-#define _LC_LDX_R6 (_LC_LDX+1)
-#define _LC_VERSION_R5 5
-#define _LC_VERSION_R6 6
-
-typedef struct _LC_core_ldx_t {
- _LC_object_t lc_object_header;
- XLCd (*default_loader)();
- Bool sticky;
-} _XlcCoreObjRec, *_XlcCoreObj;
-
-#if _LC_VERSION < 0x40000000
-#define __type_id type_id
-#define __magic magic
-#define __version version
-#endif
-
-#endif /*_Xaixlcint_h*/
+/*
+ *
+ * Copyright IBM Corporation 1993
+ *
+ * All Rights Reserved
+ *
+ * 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.
+ *
+ * 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.
+ *
+*/
+/************************************************************************/
+/* Xaixlcint.h */
+/*----------------------------------------------------------------------*/
+/* This file contains Xlcint.h extension for AIX. */
+/************************************************************************/
+#ifndef _Xaixlcint_h
+#define _Xaixlcint_h
+
+#include "Xlcint.h"
+#include <sys/lc_core.h>
+
+#define _LC_LDX 11
+#define _LC_LDX_R6 (_LC_LDX+1)
+#define _LC_VERSION_R5 5
+#define _LC_VERSION_R6 6
+
+typedef struct _LC_core_ldx_t {
+ _LC_object_t lc_object_header;
+ XLCd (*default_loader)();
+ Bool sticky;
+} _XlcCoreObjRec, *_XlcCoreObj;
+
+#if _LC_VERSION < 0x40000000
+#define __type_id type_id
+#define __magic magic
+#define __version version
+#endif
+
+#endif /*_Xaixlcint_h*/
diff --git a/libX11/src/xlibi18n/XimImSw.h b/libX11/src/xlibi18n/XimImSw.h
index e3a962552..3883e3eee 100644
--- a/libX11/src/xlibi18n/XimImSw.h
+++ b/libX11/src/xlibi18n/XimImSw.h
@@ -1,46 +1,46 @@
-/******************************************************************
-
- Copyright 1992, 1993 by FUJITSU LIMITED
-
-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 FUJITSU LIMITED
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-FUJITSU LIMITED makes no representations about the suitability of
-this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL FUJITSU LIMITED 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.
-
- Author: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
-
-******************************************************************/
-
-#ifndef _XIMIMSW_H
-#define _XIMIMSW_H
-
-typedef struct {
- Bool (*checkprocessing)(
- Xim im
- );
- Bool (*im_open)(
- Xim im
- );
- void (*im_free)(
- Xim im
- );
-} XimImsportSW;
-
-extern XimImsportSW _XimImSportRec[];
-
-#endif /* _XIMIMSW_H */
+/******************************************************************
+
+ Copyright 1992, 1993 by FUJITSU LIMITED
+
+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 FUJITSU LIMITED
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+FUJITSU LIMITED makes no representations about the suitability of
+this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FUJITSU LIMITED 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.
+
+ Author: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+
+******************************************************************/
+
+#ifndef _XIMIMSW_H
+#define _XIMIMSW_H
+
+typedef struct {
+ Bool (*checkprocessing)(
+ Xim im
+ );
+ Bool (*im_open)(
+ Xim im
+ );
+ void (*im_free)(
+ Xim im
+ );
+} XimImsportSW;
+
+extern XimImsportSW _XimImSportRec[];
+
+#endif /* _XIMIMSW_H */
diff --git a/libX11/src/xlibi18n/XimProto.h b/libX11/src/xlibi18n/XimProto.h
index 9551301a2..5d91b210b 100644
--- a/libX11/src/xlibi18n/XimProto.h
+++ b/libX11/src/xlibi18n/XimProto.h
@@ -1,233 +1,233 @@
-/******************************************************************
-
- Copyright 1992, 1993 by FUJITSU LIMITED
-
-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 FUJITSU LIMITED
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-FUJITSU LIMITED makes no representations about the suitability of
-this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL FUJITSU LIMITED 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.
-
- Author: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
-
-******************************************************************/
-
-#ifndef _XIMPROTO_H
-#define _XIMPROTO_H
-
-/*
- * Default Preconnection selection target
- */
-#define XIM_SERVERS "XIM_SERVERS"
-#define XIM_LOCALES "LOCALES"
-#define XIM_TRANSPORT "TRANSPORT"
-
-/*
- * categories in XIM_SERVERS
- */
-#define XIM_SERVER_CATEGORY "@server="
-#define XIM_LOCAL_CATEGORY "@locale="
-#define XIM_TRANSPORT_CATEGORY "@transport="
-
-/*
- * Xim implementation revision
- */
-#define PROTOCOLMAJORVERSION 1
-#define PROTOCOLMINORVERSION 0
-
-/*
- * Major Protocol number
- */
-#define XIM_CONNECT 1
-#define XIM_CONNECT_REPLY 2
-#define XIM_DISCONNECT 3
-#define XIM_DISCONNECT_REPLY 4
-
-#define XIM_AUTH_REQUIRED 10
-#define XIM_AUTH_REPLY 11
-#define XIM_AUTH_NEXT 12
-#define XIM_AUTH_SETUP 13
-#define XIM_AUTH_NG 14
-
-#define XIM_ERROR 20
-
-#define XIM_OPEN 30
-#define XIM_OPEN_REPLY 31
-#define XIM_CLOSE 32
-#define XIM_CLOSE_REPLY 33
-#define XIM_REGISTER_TRIGGERKEYS 34
-#define XIM_TRIGGER_NOTIFY 35
-#define XIM_TRIGGER_NOTIFY_REPLY 36
-#define XIM_SET_EVENT_MASK 37
-#define XIM_ENCODING_NEGOTIATION 38
-#define XIM_ENCODING_NEGOTIATION_REPLY 39
-#define XIM_QUERY_EXTENSION 40
-#define XIM_QUERY_EXTENSION_REPLY 41
-#define XIM_SET_IM_VALUES 42
-#define XIM_SET_IM_VALUES_REPLY 43
-#define XIM_GET_IM_VALUES 44
-#define XIM_GET_IM_VALUES_REPLY 45
-
-#define XIM_CREATE_IC 50
-#define XIM_CREATE_IC_REPLY 51
-#define XIM_DESTROY_IC 52
-#define XIM_DESTROY_IC_REPLY 53
-#define XIM_SET_IC_VALUES 54
-#define XIM_SET_IC_VALUES_REPLY 55
-#define XIM_GET_IC_VALUES 56
-#define XIM_GET_IC_VALUES_REPLY 57
-#define XIM_SET_IC_FOCUS 58
-#define XIM_UNSET_IC_FOCUS 59
-#define XIM_FORWARD_EVENT 60
-#define XIM_SYNC 61
-#define XIM_SYNC_REPLY 62
-#define XIM_COMMIT 63
-#define XIM_RESET_IC 64
-#define XIM_RESET_IC_REPLY 65
-
-#define XIM_GEOMETRY 70
-#define XIM_STR_CONVERSION 71
-#define XIM_STR_CONVERSION_REPLY 72
-#define XIM_PREEDIT_START 73
-#define XIM_PREEDIT_START_REPLY 74
-#define XIM_PREEDIT_DRAW 75
-#define XIM_PREEDIT_CARET 76
-#define XIM_PREEDIT_CARET_REPLY 77
-#define XIM_PREEDIT_DONE 78
-#define XIM_STATUS_START 79
-#define XIM_STATUS_DRAW 80
-#define XIM_STATUS_DONE 81
-#define XIM_PREEDITSTATE 82
-
-/*
- * values for the flag of XIM_ERROR
- */
-#define XIM_IMID_VALID 0x0001
-#define XIM_ICID_VALID 0x0002
-
-/*
- * XIM Error Code
- */
-#define XIM_BadAlloc 1
-#define XIM_BadStyle 2
-#define XIM_BadClientWindow 3
-#define XIM_BadFocusWindow 4
-#define XIM_BadArea 5
-#define XIM_BadSpotLocation 6
-#define XIM_BadColormap 7
-#define XIM_BadAtom 8
-#define XIM_BadPixel 9
-#define XIM_BadPixmap 10
-#define XIM_BadName 11
-#define XIM_BadCursor 12
-#define XIM_BadProtocol 13
-#define XIM_BadForeground 14
-#define XIM_BadBackground 15
-#define XIM_LocaleNotSupported 16
-#define XIM_BadSomething 999
-
-/*
- * byte order
- */
-#ifdef BIGENDIAN
-#undef BIGENDIAN
-#endif
-#ifdef LITTLEENDIAN
-#undef LITTLEENDIAN
-#endif
-
-#define BIGENDIAN (CARD8)0x42 /* MSB first */
-#define LITTLEENDIAN (CARD8)0x6c /* LSB first */
-
-/*
- * values for the type of XIMATTR & XICATTR
- */
-#define XimType_SeparatorOfNestedList 0
-#define XimType_CARD8 1
-#define XimType_CARD16 2
-#define XimType_CARD32 3
-#define XimType_STRING8 4
-#define XimType_Window 5
-#define XimType_XIMStyles 10
-#define XimType_XRectangle 11
-#define XimType_XPoint 12
-#define XimType_XFontSet 13
-#define XimType_XIMOptions 14
-#define XimType_XIMHotKeyTriggers 15
-#define XimType_XIMHotKeyState 16
-#define XimType_XIMStringConversion 17
-#define XimType_NEST 0x7fff
-
-/*
- * values for the category of XIM_ENCODING_NEGITIATON_REPLY
- */
-#define XIM_Encoding_NameCategory 0
-#define XIM_Encoding_DetailCategory 1
-
-/*
- * value for the index of XIM_ENCODING_NEGITIATON_REPLY
- */
-#define XIM_Default_Encoding_IDX -1
-
-/*
- * value for the flag of XIM_FORWARD_EVENT, XIM_COMMIT
- */
-#define XimSYNCHRONUS 0x0001
-#define XimLookupChars 0x0002
-#define XimLookupKeySym 0x0004
-#define XimLookupBoth 0x0006
-
-/*
- * request packet header size
- */
-#define XIM_HEADER_SIZE \
- sizeof(CARD8) /* sizeof mejor-opcode */ \
- + sizeof(CARD8) /* sizeof minor-opcode */ \
- + sizeof(INT16) /* sizeof length */
-
-/*
- * Client Message data size
- */
-#define XIM_CM_DATA_SIZE 20
-
-/*
- * XIM data structure
- */
-typedef CARD16 BITMASK16;
-typedef CARD32 BITMASK32;
-typedef CARD32 EVENTMASK;
-
-typedef CARD16 XIMID; /* Input Method ID */
-typedef CARD16 XICID; /* Input Context ID */
-
-/*
- * Padding macro
- */
-#define XIM_PAD(length) ((4 - ((length) % 4)) % 4)
-
-#define XIM_SET_PAD(ptr, length) \
- { \
- register int Counter = XIM_PAD((int)length); \
- if (Counter) { \
- register char *Ptr = (char *)(ptr) + (length); \
- length += Counter; \
- for (; Counter; --Counter, ++Ptr) \
- *Ptr = '\0'; \
- } \
- }
-
-#endif /* _XIMPROTO_H */
+/******************************************************************
+
+ Copyright 1992, 1993 by FUJITSU LIMITED
+
+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 FUJITSU LIMITED
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+FUJITSU LIMITED makes no representations about the suitability of
+this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FUJITSU LIMITED 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.
+
+ Author: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+
+******************************************************************/
+
+#ifndef _XIMPROTO_H
+#define _XIMPROTO_H
+
+/*
+ * Default Preconnection selection target
+ */
+#define XIM_SERVERS "XIM_SERVERS"
+#define XIM_LOCALES "LOCALES"
+#define XIM_TRANSPORT "TRANSPORT"
+
+/*
+ * categories in XIM_SERVERS
+ */
+#define XIM_SERVER_CATEGORY "@server="
+#define XIM_LOCAL_CATEGORY "@locale="
+#define XIM_TRANSPORT_CATEGORY "@transport="
+
+/*
+ * Xim implementation revision
+ */
+#define PROTOCOLMAJORVERSION 1
+#define PROTOCOLMINORVERSION 0
+
+/*
+ * Major Protocol number
+ */
+#define XIM_CONNECT 1
+#define XIM_CONNECT_REPLY 2
+#define XIM_DISCONNECT 3
+#define XIM_DISCONNECT_REPLY 4
+
+#define XIM_AUTH_REQUIRED 10
+#define XIM_AUTH_REPLY 11
+#define XIM_AUTH_NEXT 12
+#define XIM_AUTH_SETUP 13
+#define XIM_AUTH_NG 14
+
+#define XIM_ERROR 20
+
+#define XIM_OPEN 30
+#define XIM_OPEN_REPLY 31
+#define XIM_CLOSE 32
+#define XIM_CLOSE_REPLY 33
+#define XIM_REGISTER_TRIGGERKEYS 34
+#define XIM_TRIGGER_NOTIFY 35
+#define XIM_TRIGGER_NOTIFY_REPLY 36
+#define XIM_SET_EVENT_MASK 37
+#define XIM_ENCODING_NEGOTIATION 38
+#define XIM_ENCODING_NEGOTIATION_REPLY 39
+#define XIM_QUERY_EXTENSION 40
+#define XIM_QUERY_EXTENSION_REPLY 41
+#define XIM_SET_IM_VALUES 42
+#define XIM_SET_IM_VALUES_REPLY 43
+#define XIM_GET_IM_VALUES 44
+#define XIM_GET_IM_VALUES_REPLY 45
+
+#define XIM_CREATE_IC 50
+#define XIM_CREATE_IC_REPLY 51
+#define XIM_DESTROY_IC 52
+#define XIM_DESTROY_IC_REPLY 53
+#define XIM_SET_IC_VALUES 54
+#define XIM_SET_IC_VALUES_REPLY 55
+#define XIM_GET_IC_VALUES 56
+#define XIM_GET_IC_VALUES_REPLY 57
+#define XIM_SET_IC_FOCUS 58
+#define XIM_UNSET_IC_FOCUS 59
+#define XIM_FORWARD_EVENT 60
+#define XIM_SYNC 61
+#define XIM_SYNC_REPLY 62
+#define XIM_COMMIT 63
+#define XIM_RESET_IC 64
+#define XIM_RESET_IC_REPLY 65
+
+#define XIM_GEOMETRY 70
+#define XIM_STR_CONVERSION 71
+#define XIM_STR_CONVERSION_REPLY 72
+#define XIM_PREEDIT_START 73
+#define XIM_PREEDIT_START_REPLY 74
+#define XIM_PREEDIT_DRAW 75
+#define XIM_PREEDIT_CARET 76
+#define XIM_PREEDIT_CARET_REPLY 77
+#define XIM_PREEDIT_DONE 78
+#define XIM_STATUS_START 79
+#define XIM_STATUS_DRAW 80
+#define XIM_STATUS_DONE 81
+#define XIM_PREEDITSTATE 82
+
+/*
+ * values for the flag of XIM_ERROR
+ */
+#define XIM_IMID_VALID 0x0001
+#define XIM_ICID_VALID 0x0002
+
+/*
+ * XIM Error Code
+ */
+#define XIM_BadAlloc 1
+#define XIM_BadStyle 2
+#define XIM_BadClientWindow 3
+#define XIM_BadFocusWindow 4
+#define XIM_BadArea 5
+#define XIM_BadSpotLocation 6
+#define XIM_BadColormap 7
+#define XIM_BadAtom 8
+#define XIM_BadPixel 9
+#define XIM_BadPixmap 10
+#define XIM_BadName 11
+#define XIM_BadCursor 12
+#define XIM_BadProtocol 13
+#define XIM_BadForeground 14
+#define XIM_BadBackground 15
+#define XIM_LocaleNotSupported 16
+#define XIM_BadSomething 999
+
+/*
+ * byte order
+ */
+#ifdef BIGENDIAN
+#undef BIGENDIAN
+#endif
+#ifdef LITTLEENDIAN
+#undef LITTLEENDIAN
+#endif
+
+#define BIGENDIAN (CARD8)0x42 /* MSB first */
+#define LITTLEENDIAN (CARD8)0x6c /* LSB first */
+
+/*
+ * values for the type of XIMATTR & XICATTR
+ */
+#define XimType_SeparatorOfNestedList 0
+#define XimType_CARD8 1
+#define XimType_CARD16 2
+#define XimType_CARD32 3
+#define XimType_STRING8 4
+#define XimType_Window 5
+#define XimType_XIMStyles 10
+#define XimType_XRectangle 11
+#define XimType_XPoint 12
+#define XimType_XFontSet 13
+#define XimType_XIMOptions 14
+#define XimType_XIMHotKeyTriggers 15
+#define XimType_XIMHotKeyState 16
+#define XimType_XIMStringConversion 17
+#define XimType_NEST 0x7fff
+
+/*
+ * values for the category of XIM_ENCODING_NEGITIATON_REPLY
+ */
+#define XIM_Encoding_NameCategory 0
+#define XIM_Encoding_DetailCategory 1
+
+/*
+ * value for the index of XIM_ENCODING_NEGITIATON_REPLY
+ */
+#define XIM_Default_Encoding_IDX -1
+
+/*
+ * value for the flag of XIM_FORWARD_EVENT, XIM_COMMIT
+ */
+#define XimSYNCHRONUS 0x0001
+#define XimLookupChars 0x0002
+#define XimLookupKeySym 0x0004
+#define XimLookupBoth 0x0006
+
+/*
+ * request packet header size
+ */
+#define XIM_HEADER_SIZE \
+ sizeof(CARD8) /* sizeof mejor-opcode */ \
+ + sizeof(CARD8) /* sizeof minor-opcode */ \
+ + sizeof(INT16) /* sizeof length */
+
+/*
+ * Client Message data size
+ */
+#define XIM_CM_DATA_SIZE 20
+
+/*
+ * XIM data structure
+ */
+typedef CARD16 BITMASK16;
+typedef CARD32 BITMASK32;
+typedef CARD32 EVENTMASK;
+
+typedef CARD16 XIMID; /* Input Method ID */
+typedef CARD16 XICID; /* Input Context ID */
+
+/*
+ * Padding macro
+ */
+#define XIM_PAD(length) ((4 - ((length) % 4)) % 4)
+
+#define XIM_SET_PAD(ptr, length) \
+ { \
+ register int Counter = XIM_PAD((int)length); \
+ if (Counter) { \
+ register char *Ptr = (char *)(ptr) + (length); \
+ length += Counter; \
+ for (; Counter; --Counter, ++Ptr) \
+ *Ptr = '\0'; \
+ } \
+ }
+
+#endif /* _XIMPROTO_H */
diff --git a/libX11/src/xlibi18n/XimThai.h b/libX11/src/xlibi18n/XimThai.h
index e4c476cf6..f0d3be762 100644
--- a/libX11/src/xlibi18n/XimThai.h
+++ b/libX11/src/xlibi18n/XimThai.h
@@ -1,110 +1,110 @@
-/***********************************************************
-
-Copyright 1993, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1993 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-/*
-**++
-** FACILITY:
-**
-** Xlib
-**
-** ABSTRACT:
-**
-** Definition file for Thai specific functions.
-**
-** MODIFICATION HISTORY:
-**
-**/
-
-#ifndef _XIMTHAI_H_
-#define _XIMTHAI_H_
-
-#include <X11/Xlib.h>
-
-/* Classification of characters in TIS620 according to WTT */
-
-#define CTRL 0 /* control chars */
-#define NON 1 /* non composibles */
-#define CONS 2 /* consonants */
-#define LV 3 /* leading vowels */
-#define FV1 4 /* following vowels */
-#define FV2 5
-#define FV3 6
-#define BV1 7 /* below vowels */
-#define BV2 8
-#define BD 9 /* below diacritics */
-#define TONE 10 /* tonemarks */
-#define AD1 11 /* above diacritics */
-#define AD2 12
-#define AD3 13
-#define AV1 14 /* above vowels */
-#define AV2 15
-#define AV3 16
-
-
-/* extended classification */
-
-#define DEAD 17 /* group of non-spacing characters */
-
-
-/* display levels in display cell */
-
-#define NONDISP 0 /* non displayable */
-#define TOP 1
-#define ABOVE 2
-#define BASE 3
-#define BELOW 4
-
-
-/* Input Sequence Check modes */
-
-#define WTT_ISC1 1 /* WTT default ISC mode */
-#define WTT_ISC2 2 /* WTT strict ISC mode */
-#define THAICAT_ISC 3 /* THAICAT ISC mode */
-#define NOISC 255 /* No ISC */
-
-
-#endif /* _XIMTHAI_H_ */
+/***********************************************************
+
+Copyright 1993, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1993 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+/*
+**++
+** FACILITY:
+**
+** Xlib
+**
+** ABSTRACT:
+**
+** Definition file for Thai specific functions.
+**
+** MODIFICATION HISTORY:
+**
+**/
+
+#ifndef _XIMTHAI_H_
+#define _XIMTHAI_H_
+
+#include <X11/Xlib.h>
+
+/* Classification of characters in TIS620 according to WTT */
+
+#define CTRL 0 /* control chars */
+#define NON 1 /* non composibles */
+#define CONS 2 /* consonants */
+#define LV 3 /* leading vowels */
+#define FV1 4 /* following vowels */
+#define FV2 5
+#define FV3 6
+#define BV1 7 /* below vowels */
+#define BV2 8
+#define BD 9 /* below diacritics */
+#define TONE 10 /* tonemarks */
+#define AD1 11 /* above diacritics */
+#define AD2 12
+#define AD3 13
+#define AV1 14 /* above vowels */
+#define AV2 15
+#define AV3 16
+
+
+/* extended classification */
+
+#define DEAD 17 /* group of non-spacing characters */
+
+
+/* display levels in display cell */
+
+#define NONDISP 0 /* non displayable */
+#define TOP 1
+#define ABOVE 2
+#define BASE 3
+#define BELOW 4
+
+
+/* Input Sequence Check modes */
+
+#define WTT_ISC1 1 /* WTT default ISC mode */
+#define WTT_ISC2 2 /* WTT strict ISC mode */
+#define THAICAT_ISC 3 /* THAICAT ISC mode */
+#define NOISC 255 /* No ISC */
+
+
+#endif /* _XIMTHAI_H_ */
diff --git a/libX11/src/xlibi18n/Ximint.h b/libX11/src/xlibi18n/Ximint.h
index 2fd3017af..7d84e9396 100644
--- a/libX11/src/xlibi18n/Ximint.h
+++ b/libX11/src/xlibi18n/Ximint.h
@@ -1,998 +1,998 @@
-/******************************************************************
-
- Copyright 1992, 1993, 1994 by FUJITSU LIMITED
- Copyright 1993, 1994 by Sony Corporation
-
-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 FUJITSU LIMITED and
-Sony Corporation not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission. FUJITSU LIMITED and Sony Corporation makes no
-representations about the suitability of this software for any
-purpose. It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED AND SONY CORPORATION DISCLAIM ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU LIMITED AND
-SONY CORPORATION 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.
-
- Author: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
- Motifier: Makoto Wakamatsu Sony Corporation
- makoto@sm.sony.co.jp
-
-******************************************************************/
-
-#ifndef _XIMINT_H
-#define _XIMINT_H
-
-#include <stdio.h>
-#include <X11/Xutil.h>
-
-#define Public /**/
-#define Private static
-
-typedef struct _Xim *Xim;
-typedef struct _Xic *Xic;
-
-/*
- * Input Method data
- */
-#include "XimintP.h"
-#include "XimintL.h"
-
-/*
- * XIM dependent data
- */
-
-typedef struct _XimCommonPrivateRec {
- /* This struct is also inlined in XimLocalPrivateRec, XimProtoPrivateRec. */
- XlcConv ctom_conv;
- XlcConv ctow_conv;
- XlcConv ctoutf8_conv;
- XlcConv cstomb_conv;
- XlcConv cstowc_conv;
- XlcConv cstoutf8_conv;
- XlcConv ucstoc_conv;
- XlcConv ucstoutf8_conv;
-} XimCommonPrivateRec;
-
-typedef union _XIMPrivateRec {
- XimCommonPrivateRec common;
- XimLocalPrivateRec local;
- XimProtoPrivateRec proto;
-} XIMPrivateRec;
-
-/*
- * IM struct
- */
-typedef struct _Xim {
- XIMMethods methods;
- XIMCoreRec core;
- XIMPrivateRec private;
-} XimRec;
-
-/*
- * IC deprndent data
- */
-typedef union _XICPrivateRec {
- XicLocalPrivateRec local;
- XicProtoPrivateRec proto;
-} XICPrivateRec;
-
-/*
- * IC struct
- */
-typedef struct _Xic {
- XICMethods methods;
- XICCoreRec core;
- XICPrivateRec private;
-} XicRec;
-
-typedef struct _XimDefIMValues {
- XIMValuesList *im_values_list;
- XIMValuesList *ic_values_list;
- XIMStyles *styles;
- XIMCallback destroy_callback;
- char *res_name;
- char *res_class;
- Bool visible_position;
-} XimDefIMValues;
-
-typedef struct _XimDefICValues {
- XIMStyle input_style;
- Window client_window;
- Window focus_window;
- unsigned long filter_events;
- XICCallback geometry_callback;
- char *res_name;
- char *res_class;
- XICCallback destroy_callback;
- XICCallback preedit_state_notify_callback;
- XICCallback string_conversion_callback;
- XIMStringConversionText string_conversion;
- XIMResetState reset_state;
- XIMHotKeyTriggers *hotkey;
- XIMHotKeyState hotkey_state;
- ICPreeditAttributes preedit_attr;
- ICStatusAttributes status_attr;
-} XimDefICValues;
-
-#define XIM_MODE_IM_GET (1 << 0)
-#define XIM_MODE_IM_SET (1 << 1)
-#define XIM_MODE_IM_DEFAULT (1 << 2)
-
-#define XIM_MODE_PRE_GET (1 << 0)
-#define XIM_MODE_PRE_SET (1 << 1)
-#define XIM_MODE_PRE_CREATE (1 << 2)
-#define XIM_MODE_PRE_ONCE (1 << 3)
-#define XIM_MODE_PRE_DEFAULT (1 << 4)
-
-#define XIM_MODE_STS_GET (1 << 5)
-#define XIM_MODE_STS_SET (1 << 6)
-#define XIM_MODE_STS_CREATE (1 << 7)
-#define XIM_MODE_STS_ONCE (1 << 8)
-#define XIM_MODE_STS_DEFAULT (1 << 9)
-
-#define XIM_MODE_IC_GET (XIM_MODE_PRE_GET | XIM_MODE_STS_GET)
-#define XIM_MODE_IC_SET (XIM_MODE_PRE_SET | XIM_MODE_STS_SET)
-#define XIM_MODE_IC_CREATE (XIM_MODE_PRE_CREATE | XIM_MODE_STS_CREATE)
-#define XIM_MODE_IC_ONCE (XIM_MODE_PRE_ONCE | XIM_MODE_STS_ONCE)
-#define XIM_MODE_IC_DEFAULT (XIM_MODE_PRE_DEFAULT | XIM_MODE_STS_DEFAULT)
-
-#define XIM_MODE_PRE_MASK (XIM_MODE_PRE_GET | XIM_MODE_PRE_SET | \
- XIM_MODE_PRE_CREATE | XIM_MODE_PRE_ONCE | \
- XIM_MODE_PRE_DEFAULT)
-#define XIM_MODE_STS_MASK (XIM_MODE_STS_GET | XIM_MODE_STS_SET | \
- XIM_MODE_STS_CREATE | XIM_MODE_STS_ONCE | \
- XIM_MODE_STS_DEFAULT)
-
-#define XIM_SETIMDEFAULTS (1L << 0)
-#define XIM_SETIMVALUES (1L << 1)
-#define XIM_GETIMVALUES (1L << 2)
-
-#define XIM_SETICDEFAULTS (1L << 0)
-#define XIM_CREATEIC (1L << 1)
-#define XIM_SETICVALUES (1L << 2)
-#define XIM_GETICVALUES (1L << 3)
-#define XIM_PREEDIT_ATTR (1L << 4)
-#define XIM_STATUS_ATTR (1L << 5)
-
-#define XIM_CHECK_VALID 0
-#define XIM_CHECK_INVALID 1
-#define XIM_CHECK_ERROR 2
-
-#define FILTERD True
-#define NOTFILTERD False
-
-#define XIMMODIFIER "@im="
-
-#define XIM_TRUE True
-#define XIM_FALSE False
-#define XIM_OVERFLOW (-1)
-
-#define BRL_UC_ROW 0x2800
-
-/*
- * Global symbols
- */
-
-XPointer _XimGetLocaleCode (
- const char *encoding_name
-);
-
-int _XimGetCharCode (
- XPointer conv,
- KeySym keysym,
- unsigned char *buf,
- int nbytes
-);
-
-unsigned int KeySymToUcs4 (
- KeySym keysym
-);
-
-extern Bool _XimSetIMResourceList(
- XIMResourceList *res_list,
- unsigned int *list_num
-);
-
-extern Bool _XimSetICResourceList(
- XIMResourceList *res_list,
- unsigned int *list_num
-);
-
-extern Bool _XimSetInnerIMResourceList(
- XIMResourceList *res_list,
- unsigned int *list_num
-);
-
-extern Bool _XimSetInnerICResourceList(
- XIMResourceList *res_list,
- unsigned int *list_num
-);
-
-extern Bool _XimCheckCreateICValues(
- XIMResourceList res_list,
- unsigned int list_num
-);
-
-extern XIMResourceList _XimGetResourceListRec(
- XIMResourceList res_list,
- unsigned int list_num,
- const char *name
-);
-
-extern void _XimSetIMMode(
- XIMResourceList res_list,
- unsigned int list_num
-);
-
-extern void _XimSetICMode(
- XIMResourceList res_list,
- unsigned int list_num,
- XIMStyle style
-);
-
-extern int _XimCheckIMMode(
- XIMResourceList res_list,
- unsigned long mode
-);
-
-extern int _XimCheckICMode(
- XIMResourceList res_list,
- unsigned long mode
-);
-
-extern Bool _XimSetLocalIMDefaults(
- Xim im,
- XPointer top,
- XIMResourceList res_list,
- unsigned int list_num
-);
-
-extern Bool _XimSetICDefaults(
- Xic ic,
- XPointer top,
- unsigned long mode,
- XIMResourceList res_list,
- unsigned int list_num
-);
-
-extern Bool _XimEncodeLocalIMAttr(
- XIMResourceList res,
- XPointer top,
- XPointer val
-);
-
-extern Bool _XimEncodeLocalICAttr(
- Xic ic,
- XIMResourceList res,
- XPointer top,
- XIMArg *arg,
- unsigned long mode
-);
-
-extern Bool _XimCheckLocalInputStyle(
- Xic ic,
- XPointer top,
- XIMArg *values,
- XIMStyles *styles,
- XIMResourceList res_list,
- unsigned int list_num
-);
-
-extern Bool _XimDecodeLocalIMAttr(
- XIMResourceList res,
- XPointer top,
- XPointer val
-);
-
-extern Bool _XimDecodeLocalICAttr(
- XIMResourceList res,
- XPointer top,
- XPointer val,
- unsigned long mode
-);
-
-extern void _XimGetCurrentIMValues(
- Xim im,
- XimDefIMValues *im_values
-);
-
-extern void _XimSetCurrentIMValues(
- Xim im,
- XimDefIMValues *im_values
-);
-
-extern void _XimGetCurrentICValues(
- Xic ic,
- XimDefICValues *ic_values
-);
-
-extern void _XimSetCurrentICValues(
- Xic ic,
- XimDefICValues *ic_values
-);
-
-extern void _XimInitialResourceInfo(
- void
-);
-
-extern void _XimParseStringFile(
- FILE *fp,
- Xim im
-);
-
-extern Bool _XimCheckIfLocalProcessing(
- Xim im
-);
-
-extern Bool _XimCheckIfThaiProcessing(
- Xim im
-);
-
-extern Bool _XimLocalOpenIM(
- Xim im
-);
-
-extern Bool _XimThaiOpenIM(
- Xim im
-);
-
-extern Bool _XimProtoOpenIM(
- Xim im
-);
-
-extern void _XimLocalIMFree(
- Xim im
-);
-
-extern void _XimThaiIMFree(
- Xim im
-);
-
-extern void _XimProtoIMFree(
- Xim im
-);
-
-extern char * _XimSetIMValueData(
- Xim im,
- XPointer top,
- XIMArg *arg,
- XIMResourceList res_list,
- unsigned int list_num
-);
-
-extern char * _XimGetIMValueData(
- Xim im,
- XPointer top,
- XIMArg *arg,
- XIMResourceList res_list,
- unsigned int list_num
-);
-
-extern char * _XimSetICValueData(
- Xic ic,
- XPointer top,
- XIMResourceList res_list,
- unsigned int list_num,
- XIMArg *arg,
- unsigned long mode,
- Bool flag
-);
-
-extern char * _XimGetICValueData(
- Xic ic,
- XPointer top,
- XIMResourceList res_list,
- unsigned int list_num,
- XIMArg *arg,
- unsigned long mode
-);
-
-extern char * _XimLocalSetIMValues(
- XIM im,
- XIMArg *arg
-);
-
-extern char * _XimLocalGetIMValues(
- XIM im,
- XIMArg *arg
-);
-
-extern XIC _XimLocalCreateIC(
- XIM im,
- XIMArg *arg
-);
-
-extern Bool _XimDispatchInit(
- Xim im
-);
-
-extern Bool _XimGetAttributeID(
- Xim im,
- CARD16 *buf
-);
-
-extern Bool _XimExtension(
- Xim im
-);
-
-extern void _XimDestroyIMStructureList(
- Xim im
-);
-
-extern char * _XimMakeIMAttrIDList(
- Xim im,
- XIMResourceList res_list,
- unsigned int res_num,
- XIMArg *arg,
- CARD16 *buf,
- INT16 *len,
- unsigned long mode
-);
-
-extern char * _XimMakeICAttrIDList(
- Xic ic,
- XIMResourceList res_list,
- unsigned int res_num,
- XIMArg *arg,
- CARD16 *idList,
- INT16 *num,
- unsigned long mode
-);
-
-extern char * _XimDecodeIMATTRIBUTE(
- Xim im,
- XIMResourceList res_list,
- unsigned int res_num,
- CARD16 *buf,
- INT16 buf_len,
- XIMArg *arg,
- BITMASK32 mode
-);
-
-extern char * _XimDecodeICATTRIBUTE(
- Xic ic,
- XIMResourceList res_list,
- unsigned int res_num,
- CARD16 *buf,
- INT16 buf_len,
- XIMArg *arg,
- BITMASK32 mode
-);
-
-extern Bool _XimRegProtoIntrCallback(
- Xim im,
- CARD16 major_code,
- CARD16 minor_code,
- Bool (*proc)(
- Xim, INT16, XPointer, XPointer
- ),
- XPointer call_data
-);
-
-extern Bool _XimErrorCallback(
- Xim im,
- INT16 len,
- XPointer data,
- XPointer call_data
-);
-
-extern Bool _XimError(
- Xim im,
- Xic ic,
- CARD16 error_code,
- INT16 detail_length,
- CARD16 type,
- char *detail
-);
-
-extern Bool _XimRegisterTriggerKeysCallback(
- Xim im,
- INT16 len,
- XPointer data,
- XPointer call_data
-);
-
-extern Bool _XimSetEventMaskCallback(
- Xim im,
- INT16 len,
- XPointer data,
- XPointer call_data
-);
-
-extern Bool _XimForwardEventCallback(
- Xim im,
- INT16 len,
- XPointer data,
- XPointer call_data
-);
-
-extern Bool _XimCommitCallback(
- Xim im,
- INT16 len,
- XPointer data,
- XPointer call_data
-);
-
-extern Bool _XimSyncCallback(
- Xim im,
- INT16 len,
- XPointer data,
- XPointer call_data
-);
-
-extern void _XimFreeProtoIntrCallback(
- Xim im
-);
-
-extern XIC _XimProtoCreateIC(
- XIM im,
- XIMArg *arg
-);
-
-extern void _XimRegisterServerFilter(
- Xim im
-);
-
-extern void _XimUnregisterServerFilter(
- Xim im
-);
-
-extern Bool _XimTriggerNotify(
- Xim im,
- Xic ic,
- int mode,
- CARD32 idx
-);
-
-extern Bool _XimProcSyncReply(
- Xim im,
- Xic ic
-);
-
-extern void _XimSendSetFocus(
- Xim im,
- Xic ic
-);
-
-extern Bool _XimForwardEvent(
- Xic ic,
- XEvent *ev,
- Bool sync
-);
-
-extern void _XimFreeRemakeArg(
- XIMArg *arg
-);
-
-extern void _XimServerDestroy(
- Xim im
-);
-
-extern char * _XimEncodeIMATTRIBUTE(
- Xim im,
- XIMResourceList res_list,
- unsigned int res_num,
- XIMArg *arg,
- XIMArg **arg_ret,
- char *buf,
- int size,
- int *ret_len,
- XPointer top,
- unsigned long mode
-);
-
-extern char * _XimEncodeICATTRIBUTE(
- Xic ic,
- XIMResourceList res_list,
- unsigned int res_num,
- XIMArg *arg,
- XIMArg **arg_ret,
- char *buf,
- int size,
- int *ret_len,
- XPointer top,
- BITMASK32 *flag,
- unsigned long mode
-);
-
-#ifdef EXT_MOVE
-extern Bool _XimExtenMove(
- Xim im,
- Xic ic,
- CARD32 flag,
- CARD16 *buf,
- INT16 length
-);
-#endif
-
-extern int _Ximctstombs(
- XIM im,
- char *from,
- int from_len,
- char *to,
- int to_len,
- Status *state
-);
-
-extern int _Ximctstowcs(
- XIM im,
- char *from,
- int from_len,
- wchar_t *to,
- int to_len,
- Status *state
-);
-
-extern int _Ximctstoutf8(
- XIM im,
- char *from,
- int from_len,
- char *to,
- int to_len,
- Status *state
-);
-
-extern int _XimLcctstombs(
- XIM im,
- char *from,
- int from_len,
- char *to,
- int to_len,
- Status *state
-);
-
-extern int _XimLcctstowcs(
- XIM im,
- char *from,
- int from_len,
- wchar_t *to,
- int to_len,
- Status *state
-);
-
-extern int _XimLcctstoutf8(
- XIM im,
- char *from,
- int from_len,
- char *to,
- int to_len,
- Status *state
-);
-
-extern char _XimGetMyEndian(
- void
-);
-
-extern int _XimCheckDataSize(
- XPointer buf,
- int len
-);
-
-extern void _XimSetHeader(
- XPointer buf,
- CARD8 major_opcode,
- CARD8 minor_opcode,
- INT16 *len
-);
-
-extern Bool _XimSync(
- Xim im,
- Xic ic
-);
-
-extern int _XimProtoMbLookupString(
- XIC xic,
- XKeyEvent *ev,
- char *buffer,
- int bytes,
- KeySym *keysym,
- Status *state
-);
-
-extern int _XimProtoWcLookupString(
- XIC xic,
- XKeyEvent *ev,
- wchar_t *buffer,
- int bytes,
- KeySym *keysym,
- Status *state
-);
-
-extern int _XimProtoUtf8LookupString(
- XIC xic,
- XKeyEvent *ev,
- char *buffer,
- int bytes,
- KeySym *keysym,
- Status *state
-);
-
-extern void _XimRegisterFilter(
- Xic ic
-);
-
-extern void _XimUnregisterFilter(
- Xic ic
-);
-
-extern void _XimReregisterFilter(
- Xic ic
-);
-
-extern Status _XimProtoEventToWire(
- XEvent *re,
- xEvent *event,
- Bool sw
-);
-
-extern Bool _XimProtoWireToEvent(
- XEvent *re,
- xEvent *event,
- Bool sw
-);
-
-#ifdef EXT_FORWARD
-extern Bool _XimExtForwardKeyEvent(
- Xic ic,
- XKeyEvent *ev,
- Bool sync
-);
-#endif
-
-extern int _XimLookupMBText(
- Xic ic,
- XKeyEvent *event,
- char *buffer,
- int nbytes,
- KeySym *keysym,
- XComposeStatus *status
-);
-
-extern int _XimLookupWCText(
- Xic ic,
- XKeyEvent *event,
- wchar_t *buffer,
- int nbytes,
- KeySym *keysym,
- XComposeStatus *status
-);
-
-extern int _XimLookupUTF8Text(
- Xic ic,
- XKeyEvent *event,
- char *buffer,
- int nbytes,
- KeySym *keysym,
- XComposeStatus *status
-);
-
-extern EVENTMASK _XimGetWindowEventmask(
- Xic ic
-);
-
-extern Xic _XimICOfXICID(
- Xim im,
- XICID icid
-);
-
-extern void _XimResetIMInstantiateCallback(
- Xim xim
-);
-
-extern Bool _XimRegisterIMInstantiateCallback(
- XLCd lcd,
- Display *display,
- XrmDatabase rdb,
- char *res_name,
- char *res_class,
- XIDProc callback,
- XPointer client_data
-);
-
-extern Bool _XimUnRegisterIMInstantiateCallback(
- XLCd lcd,
- Display *display,
- XrmDatabase rdb,
- char *res_name,
- char *res_class,
- XIDProc callback,
- XPointer client_data
-);
-
-extern void _XimFreeCommitInfo(
- Xic ic
-);
-
-extern Bool _XimConnect(
- Xim im
-);
-
-extern Bool _XimShutdown(
- Xim im
-);
-
-extern Bool _XimWrite(
- Xim im,
- INT16 len,
- XPointer data
-);
-
-extern Bool _XimRead(
- Xim im,
- INT16 *len,
- XPointer data,
- int data_len,
- Bool (*predicate)(
- Xim, INT16, XPointer, XPointer
- ),
- XPointer arg
-);
-
-extern void _XimFlush(
- Xim im
-);
-
-extern Bool _XimFilterWaitEvent(
- Xim im
-);
-
-extern void _XimProcError(
- Xim im,
- Xic ic,
- XPointer data
-);
-
-#ifdef EXT_MOVE
-extern CARD32 _XimExtenArgCheck(
- XIMArg *arg
-);
-#endif
-
-extern Bool _XimCbDispatch(
- Xim im,
- INT16 len,
- XPointer data,
- XPointer call_data
-);
-
-extern Bool _XimLocalFilter(
- Display *d,
- Window w,
- XEvent *ev,
- XPointer client_data
-);
-
-extern XIMResourceList _XimGetResourceListRecByQuark(
- XIMResourceList res_list,
- unsigned int list_num,
- XrmQuark quark
-);
-
-extern Bool _XimReconnectModeCreateIC(
- Xic ic
-);
-
-extern char *_XimLocalSetICValues(
- XIC ic,
- XIMArg *values
-);
-
-extern char * _XimLocalGetICValues(
- XIC ic,
- XIMArg *values
-);
-
-extern int _XimLocalMbLookupString(
- XIC ic,
- XKeyEvent *ev,
- char *buffer,
- int bytes,
- KeySym *keysym,
- Status *status
-);
-
-extern int _XimLocalWcLookupString(
- XIC ic,
- XKeyEvent *ev,
- wchar_t *buffer,
- int bytes,
- KeySym *keysym,
- Status *status
-);
-
-extern int _XimLocalUtf8LookupString(
- XIC ic,
- XKeyEvent *ev,
- char *buffer,
- int bytes,
- KeySym *keysym,
- Status *status
-);
-
-extern Bool _XimThaiFilter(
- Display *d,
- Window w,
- XEvent *ev,
- XPointer client_data
-);
-
-extern XIC _XimThaiCreateIC(
- XIM im,
- XIMArg *values
-);
-
-extern Status _XimThaiCloseIM(
- XIM xim
-);
-
-#ifdef XIM_CONNECTABLE
-extern void _XimSetProtoResource(
- Xim im
-);
-
-extern Bool _XimConnectServer(
- Xim im
-);
-
-extern Bool _XimDelayModeSetAttr(
- Xim im
-);
-
-extern void _XimServerReconectableDestroy(
- void
-);
-
-extern Bool _XimReCreateIC(
- Xic ic
-);
-
-extern Bool _XimEncodeSavedIMATTRIBUTE(
- Xim im,
- XIMResourceList res_list,
- unsigned int res_num,
- int *idx,
- char *buf,
- int size,
- int *ret_len,
- XPointer top,
- unsigned long mode
-);
-
-extern Bool _XimEncodeSavedICATTRIBUTE(
- Xic ic,
- XIMResourceList res_list,
- unsigned int res_num,
- int *idx,
- char *buf,
- int size,
- int *ret_len,
- XPointer top,
- unsigned long mode
-);
-#endif
-
-extern Public Bool
-_XimRegisterDispatcher(
- Xim im,
- Bool (*callback)(
- Xim, INT16, XPointer, XPointer
- ),
- XPointer call_data);
-
-extern Public Bool
-_XimRespSyncReply(
- Xic ic,
- BITMASK16 mode);
-
-#endif /* _XIMINT_H */
+/******************************************************************
+
+ Copyright 1992, 1993, 1994 by FUJITSU LIMITED
+ Copyright 1993, 1994 by Sony Corporation
+
+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 FUJITSU LIMITED and
+Sony Corporation not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission. FUJITSU LIMITED and Sony Corporation makes no
+representations about the suitability of this software for any
+purpose. It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED AND SONY CORPORATION DISCLAIM ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU LIMITED AND
+SONY CORPORATION 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.
+
+ Author: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+ Motifier: Makoto Wakamatsu Sony Corporation
+ makoto@sm.sony.co.jp
+
+******************************************************************/
+
+#ifndef _XIMINT_H
+#define _XIMINT_H
+
+#include <stdio.h>
+#include <X11/Xutil.h>
+
+#define Public /**/
+#define Private static
+
+typedef struct _Xim *Xim;
+typedef struct _Xic *Xic;
+
+/*
+ * Input Method data
+ */
+#include "XimintP.h"
+#include "XimintL.h"
+
+/*
+ * XIM dependent data
+ */
+
+typedef struct _XimCommonPrivateRec {
+ /* This struct is also inlined in XimLocalPrivateRec, XimProtoPrivateRec. */
+ XlcConv ctom_conv;
+ XlcConv ctow_conv;
+ XlcConv ctoutf8_conv;
+ XlcConv cstomb_conv;
+ XlcConv cstowc_conv;
+ XlcConv cstoutf8_conv;
+ XlcConv ucstoc_conv;
+ XlcConv ucstoutf8_conv;
+} XimCommonPrivateRec;
+
+typedef union _XIMPrivateRec {
+ XimCommonPrivateRec common;
+ XimLocalPrivateRec local;
+ XimProtoPrivateRec proto;
+} XIMPrivateRec;
+
+/*
+ * IM struct
+ */
+typedef struct _Xim {
+ XIMMethods methods;
+ XIMCoreRec core;
+ XIMPrivateRec private;
+} XimRec;
+
+/*
+ * IC deprndent data
+ */
+typedef union _XICPrivateRec {
+ XicLocalPrivateRec local;
+ XicProtoPrivateRec proto;
+} XICPrivateRec;
+
+/*
+ * IC struct
+ */
+typedef struct _Xic {
+ XICMethods methods;
+ XICCoreRec core;
+ XICPrivateRec private;
+} XicRec;
+
+typedef struct _XimDefIMValues {
+ XIMValuesList *im_values_list;
+ XIMValuesList *ic_values_list;
+ XIMStyles *styles;
+ XIMCallback destroy_callback;
+ char *res_name;
+ char *res_class;
+ Bool visible_position;
+} XimDefIMValues;
+
+typedef struct _XimDefICValues {
+ XIMStyle input_style;
+ Window client_window;
+ Window focus_window;
+ unsigned long filter_events;
+ XICCallback geometry_callback;
+ char *res_name;
+ char *res_class;
+ XICCallback destroy_callback;
+ XICCallback preedit_state_notify_callback;
+ XICCallback string_conversion_callback;
+ XIMStringConversionText string_conversion;
+ XIMResetState reset_state;
+ XIMHotKeyTriggers *hotkey;
+ XIMHotKeyState hotkey_state;
+ ICPreeditAttributes preedit_attr;
+ ICStatusAttributes status_attr;
+} XimDefICValues;
+
+#define XIM_MODE_IM_GET (1 << 0)
+#define XIM_MODE_IM_SET (1 << 1)
+#define XIM_MODE_IM_DEFAULT (1 << 2)
+
+#define XIM_MODE_PRE_GET (1 << 0)
+#define XIM_MODE_PRE_SET (1 << 1)
+#define XIM_MODE_PRE_CREATE (1 << 2)
+#define XIM_MODE_PRE_ONCE (1 << 3)
+#define XIM_MODE_PRE_DEFAULT (1 << 4)
+
+#define XIM_MODE_STS_GET (1 << 5)
+#define XIM_MODE_STS_SET (1 << 6)
+#define XIM_MODE_STS_CREATE (1 << 7)
+#define XIM_MODE_STS_ONCE (1 << 8)
+#define XIM_MODE_STS_DEFAULT (1 << 9)
+
+#define XIM_MODE_IC_GET (XIM_MODE_PRE_GET | XIM_MODE_STS_GET)
+#define XIM_MODE_IC_SET (XIM_MODE_PRE_SET | XIM_MODE_STS_SET)
+#define XIM_MODE_IC_CREATE (XIM_MODE_PRE_CREATE | XIM_MODE_STS_CREATE)
+#define XIM_MODE_IC_ONCE (XIM_MODE_PRE_ONCE | XIM_MODE_STS_ONCE)
+#define XIM_MODE_IC_DEFAULT (XIM_MODE_PRE_DEFAULT | XIM_MODE_STS_DEFAULT)
+
+#define XIM_MODE_PRE_MASK (XIM_MODE_PRE_GET | XIM_MODE_PRE_SET | \
+ XIM_MODE_PRE_CREATE | XIM_MODE_PRE_ONCE | \
+ XIM_MODE_PRE_DEFAULT)
+#define XIM_MODE_STS_MASK (XIM_MODE_STS_GET | XIM_MODE_STS_SET | \
+ XIM_MODE_STS_CREATE | XIM_MODE_STS_ONCE | \
+ XIM_MODE_STS_DEFAULT)
+
+#define XIM_SETIMDEFAULTS (1L << 0)
+#define XIM_SETIMVALUES (1L << 1)
+#define XIM_GETIMVALUES (1L << 2)
+
+#define XIM_SETICDEFAULTS (1L << 0)
+#define XIM_CREATEIC (1L << 1)
+#define XIM_SETICVALUES (1L << 2)
+#define XIM_GETICVALUES (1L << 3)
+#define XIM_PREEDIT_ATTR (1L << 4)
+#define XIM_STATUS_ATTR (1L << 5)
+
+#define XIM_CHECK_VALID 0
+#define XIM_CHECK_INVALID 1
+#define XIM_CHECK_ERROR 2
+
+#define FILTERD True
+#define NOTFILTERD False
+
+#define XIMMODIFIER "@im="
+
+#define XIM_TRUE True
+#define XIM_FALSE False
+#define XIM_OVERFLOW (-1)
+
+#define BRL_UC_ROW 0x2800
+
+/*
+ * Global symbols
+ */
+
+XPointer _XimGetLocaleCode (
+ const char *encoding_name
+);
+
+int _XimGetCharCode (
+ XPointer conv,
+ KeySym keysym,
+ unsigned char *buf,
+ int nbytes
+);
+
+unsigned int KeySymToUcs4 (
+ KeySym keysym
+);
+
+extern Bool _XimSetIMResourceList(
+ XIMResourceList *res_list,
+ unsigned int *list_num
+);
+
+extern Bool _XimSetICResourceList(
+ XIMResourceList *res_list,
+ unsigned int *list_num
+);
+
+extern Bool _XimSetInnerIMResourceList(
+ XIMResourceList *res_list,
+ unsigned int *list_num
+);
+
+extern Bool _XimSetInnerICResourceList(
+ XIMResourceList *res_list,
+ unsigned int *list_num
+);
+
+extern Bool _XimCheckCreateICValues(
+ XIMResourceList res_list,
+ unsigned int list_num
+);
+
+extern XIMResourceList _XimGetResourceListRec(
+ XIMResourceList res_list,
+ unsigned int list_num,
+ const char *name
+);
+
+extern void _XimSetIMMode(
+ XIMResourceList res_list,
+ unsigned int list_num
+);
+
+extern void _XimSetICMode(
+ XIMResourceList res_list,
+ unsigned int list_num,
+ XIMStyle style
+);
+
+extern int _XimCheckIMMode(
+ XIMResourceList res_list,
+ unsigned long mode
+);
+
+extern int _XimCheckICMode(
+ XIMResourceList res_list,
+ unsigned long mode
+);
+
+extern Bool _XimSetLocalIMDefaults(
+ Xim im,
+ XPointer top,
+ XIMResourceList res_list,
+ unsigned int list_num
+);
+
+extern Bool _XimSetICDefaults(
+ Xic ic,
+ XPointer top,
+ unsigned long mode,
+ XIMResourceList res_list,
+ unsigned int list_num
+);
+
+extern Bool _XimEncodeLocalIMAttr(
+ XIMResourceList res,
+ XPointer top,
+ XPointer val
+);
+
+extern Bool _XimEncodeLocalICAttr(
+ Xic ic,
+ XIMResourceList res,
+ XPointer top,
+ XIMArg *arg,
+ unsigned long mode
+);
+
+extern Bool _XimCheckLocalInputStyle(
+ Xic ic,
+ XPointer top,
+ XIMArg *values,
+ XIMStyles *styles,
+ XIMResourceList res_list,
+ unsigned int list_num
+);
+
+extern Bool _XimDecodeLocalIMAttr(
+ XIMResourceList res,
+ XPointer top,
+ XPointer val
+);
+
+extern Bool _XimDecodeLocalICAttr(
+ XIMResourceList res,
+ XPointer top,
+ XPointer val,
+ unsigned long mode
+);
+
+extern void _XimGetCurrentIMValues(
+ Xim im,
+ XimDefIMValues *im_values
+);
+
+extern void _XimSetCurrentIMValues(
+ Xim im,
+ XimDefIMValues *im_values
+);
+
+extern void _XimGetCurrentICValues(
+ Xic ic,
+ XimDefICValues *ic_values
+);
+
+extern void _XimSetCurrentICValues(
+ Xic ic,
+ XimDefICValues *ic_values
+);
+
+extern void _XimInitialResourceInfo(
+ void
+);
+
+extern void _XimParseStringFile(
+ FILE *fp,
+ Xim im
+);
+
+extern Bool _XimCheckIfLocalProcessing(
+ Xim im
+);
+
+extern Bool _XimCheckIfThaiProcessing(
+ Xim im
+);
+
+extern Bool _XimLocalOpenIM(
+ Xim im
+);
+
+extern Bool _XimThaiOpenIM(
+ Xim im
+);
+
+extern Bool _XimProtoOpenIM(
+ Xim im
+);
+
+extern void _XimLocalIMFree(
+ Xim im
+);
+
+extern void _XimThaiIMFree(
+ Xim im
+);
+
+extern void _XimProtoIMFree(
+ Xim im
+);
+
+extern char * _XimSetIMValueData(
+ Xim im,
+ XPointer top,
+ XIMArg *arg,
+ XIMResourceList res_list,
+ unsigned int list_num
+);
+
+extern char * _XimGetIMValueData(
+ Xim im,
+ XPointer top,
+ XIMArg *arg,
+ XIMResourceList res_list,
+ unsigned int list_num
+);
+
+extern char * _XimSetICValueData(
+ Xic ic,
+ XPointer top,
+ XIMResourceList res_list,
+ unsigned int list_num,
+ XIMArg *arg,
+ unsigned long mode,
+ Bool flag
+);
+
+extern char * _XimGetICValueData(
+ Xic ic,
+ XPointer top,
+ XIMResourceList res_list,
+ unsigned int list_num,
+ XIMArg *arg,
+ unsigned long mode
+);
+
+extern char * _XimLocalSetIMValues(
+ XIM im,
+ XIMArg *arg
+);
+
+extern char * _XimLocalGetIMValues(
+ XIM im,
+ XIMArg *arg
+);
+
+extern XIC _XimLocalCreateIC(
+ XIM im,
+ XIMArg *arg
+);
+
+extern Bool _XimDispatchInit(
+ Xim im
+);
+
+extern Bool _XimGetAttributeID(
+ Xim im,
+ CARD16 *buf
+);
+
+extern Bool _XimExtension(
+ Xim im
+);
+
+extern void _XimDestroyIMStructureList(
+ Xim im
+);
+
+extern char * _XimMakeIMAttrIDList(
+ Xim im,
+ XIMResourceList res_list,
+ unsigned int res_num,
+ XIMArg *arg,
+ CARD16 *buf,
+ INT16 *len,
+ unsigned long mode
+);
+
+extern char * _XimMakeICAttrIDList(
+ Xic ic,
+ XIMResourceList res_list,
+ unsigned int res_num,
+ XIMArg *arg,
+ CARD16 *idList,
+ INT16 *num,
+ unsigned long mode
+);
+
+extern char * _XimDecodeIMATTRIBUTE(
+ Xim im,
+ XIMResourceList res_list,
+ unsigned int res_num,
+ CARD16 *buf,
+ INT16 buf_len,
+ XIMArg *arg,
+ BITMASK32 mode
+);
+
+extern char * _XimDecodeICATTRIBUTE(
+ Xic ic,
+ XIMResourceList res_list,
+ unsigned int res_num,
+ CARD16 *buf,
+ INT16 buf_len,
+ XIMArg *arg,
+ BITMASK32 mode
+);
+
+extern Bool _XimRegProtoIntrCallback(
+ Xim im,
+ CARD16 major_code,
+ CARD16 minor_code,
+ Bool (*proc)(
+ Xim, INT16, XPointer, XPointer
+ ),
+ XPointer call_data
+);
+
+extern Bool _XimErrorCallback(
+ Xim im,
+ INT16 len,
+ XPointer data,
+ XPointer call_data
+);
+
+extern Bool _XimError(
+ Xim im,
+ Xic ic,
+ CARD16 error_code,
+ INT16 detail_length,
+ CARD16 type,
+ char *detail
+);
+
+extern Bool _XimRegisterTriggerKeysCallback(
+ Xim im,
+ INT16 len,
+ XPointer data,
+ XPointer call_data
+);
+
+extern Bool _XimSetEventMaskCallback(
+ Xim im,
+ INT16 len,
+ XPointer data,
+ XPointer call_data
+);
+
+extern Bool _XimForwardEventCallback(
+ Xim im,
+ INT16 len,
+ XPointer data,
+ XPointer call_data
+);
+
+extern Bool _XimCommitCallback(
+ Xim im,
+ INT16 len,
+ XPointer data,
+ XPointer call_data
+);
+
+extern Bool _XimSyncCallback(
+ Xim im,
+ INT16 len,
+ XPointer data,
+ XPointer call_data
+);
+
+extern void _XimFreeProtoIntrCallback(
+ Xim im
+);
+
+extern XIC _XimProtoCreateIC(
+ XIM im,
+ XIMArg *arg
+);
+
+extern void _XimRegisterServerFilter(
+ Xim im
+);
+
+extern void _XimUnregisterServerFilter(
+ Xim im
+);
+
+extern Bool _XimTriggerNotify(
+ Xim im,
+ Xic ic,
+ int mode,
+ CARD32 idx
+);
+
+extern Bool _XimProcSyncReply(
+ Xim im,
+ Xic ic
+);
+
+extern void _XimSendSetFocus(
+ Xim im,
+ Xic ic
+);
+
+extern Bool _XimForwardEvent(
+ Xic ic,
+ XEvent *ev,
+ Bool sync
+);
+
+extern void _XimFreeRemakeArg(
+ XIMArg *arg
+);
+
+extern void _XimServerDestroy(
+ Xim im
+);
+
+extern char * _XimEncodeIMATTRIBUTE(
+ Xim im,
+ XIMResourceList res_list,
+ unsigned int res_num,
+ XIMArg *arg,
+ XIMArg **arg_ret,
+ char *buf,
+ int size,
+ int *ret_len,
+ XPointer top,
+ unsigned long mode
+);
+
+extern char * _XimEncodeICATTRIBUTE(
+ Xic ic,
+ XIMResourceList res_list,
+ unsigned int res_num,
+ XIMArg *arg,
+ XIMArg **arg_ret,
+ char *buf,
+ int size,
+ int *ret_len,
+ XPointer top,
+ BITMASK32 *flag,
+ unsigned long mode
+);
+
+#ifdef EXT_MOVE
+extern Bool _XimExtenMove(
+ Xim im,
+ Xic ic,
+ CARD32 flag,
+ CARD16 *buf,
+ INT16 length
+);
+#endif
+
+extern int _Ximctstombs(
+ XIM im,
+ char *from,
+ int from_len,
+ char *to,
+ int to_len,
+ Status *state
+);
+
+extern int _Ximctstowcs(
+ XIM im,
+ char *from,
+ int from_len,
+ wchar_t *to,
+ int to_len,
+ Status *state
+);
+
+extern int _Ximctstoutf8(
+ XIM im,
+ char *from,
+ int from_len,
+ char *to,
+ int to_len,
+ Status *state
+);
+
+extern int _XimLcctstombs(
+ XIM im,
+ char *from,
+ int from_len,
+ char *to,
+ int to_len,
+ Status *state
+);
+
+extern int _XimLcctstowcs(
+ XIM im,
+ char *from,
+ int from_len,
+ wchar_t *to,
+ int to_len,
+ Status *state
+);
+
+extern int _XimLcctstoutf8(
+ XIM im,
+ char *from,
+ int from_len,
+ char *to,
+ int to_len,
+ Status *state
+);
+
+extern char _XimGetMyEndian(
+ void
+);
+
+extern int _XimCheckDataSize(
+ XPointer buf,
+ int len
+);
+
+extern void _XimSetHeader(
+ XPointer buf,
+ CARD8 major_opcode,
+ CARD8 minor_opcode,
+ INT16 *len
+);
+
+extern Bool _XimSync(
+ Xim im,
+ Xic ic
+);
+
+extern int _XimProtoMbLookupString(
+ XIC xic,
+ XKeyEvent *ev,
+ char *buffer,
+ int bytes,
+ KeySym *keysym,
+ Status *state
+);
+
+extern int _XimProtoWcLookupString(
+ XIC xic,
+ XKeyEvent *ev,
+ wchar_t *buffer,
+ int bytes,
+ KeySym *keysym,
+ Status *state
+);
+
+extern int _XimProtoUtf8LookupString(
+ XIC xic,
+ XKeyEvent *ev,
+ char *buffer,
+ int bytes,
+ KeySym *keysym,
+ Status *state
+);
+
+extern void _XimRegisterFilter(
+ Xic ic
+);
+
+extern void _XimUnregisterFilter(
+ Xic ic
+);
+
+extern void _XimReregisterFilter(
+ Xic ic
+);
+
+extern Status _XimProtoEventToWire(
+ XEvent *re,
+ xEvent *event,
+ Bool sw
+);
+
+extern Bool _XimProtoWireToEvent(
+ XEvent *re,
+ xEvent *event,
+ Bool sw
+);
+
+#ifdef EXT_FORWARD
+extern Bool _XimExtForwardKeyEvent(
+ Xic ic,
+ XKeyEvent *ev,
+ Bool sync
+);
+#endif
+
+extern int _XimLookupMBText(
+ Xic ic,
+ XKeyEvent *event,
+ char *buffer,
+ int nbytes,
+ KeySym *keysym,
+ XComposeStatus *status
+);
+
+extern int _XimLookupWCText(
+ Xic ic,
+ XKeyEvent *event,
+ wchar_t *buffer,
+ int nbytes,
+ KeySym *keysym,
+ XComposeStatus *status
+);
+
+extern int _XimLookupUTF8Text(
+ Xic ic,
+ XKeyEvent *event,
+ char *buffer,
+ int nbytes,
+ KeySym *keysym,
+ XComposeStatus *status
+);
+
+extern EVENTMASK _XimGetWindowEventmask(
+ Xic ic
+);
+
+extern Xic _XimICOfXICID(
+ Xim im,
+ XICID icid
+);
+
+extern void _XimResetIMInstantiateCallback(
+ Xim xim
+);
+
+extern Bool _XimRegisterIMInstantiateCallback(
+ XLCd lcd,
+ Display *display,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class,
+ XIDProc callback,
+ XPointer client_data
+);
+
+extern Bool _XimUnRegisterIMInstantiateCallback(
+ XLCd lcd,
+ Display *display,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class,
+ XIDProc callback,
+ XPointer client_data
+);
+
+extern void _XimFreeCommitInfo(
+ Xic ic
+);
+
+extern Bool _XimConnect(
+ Xim im
+);
+
+extern Bool _XimShutdown(
+ Xim im
+);
+
+extern Bool _XimWrite(
+ Xim im,
+ INT16 len,
+ XPointer data
+);
+
+extern Bool _XimRead(
+ Xim im,
+ INT16 *len,
+ XPointer data,
+ int data_len,
+ Bool (*predicate)(
+ Xim, INT16, XPointer, XPointer
+ ),
+ XPointer arg
+);
+
+extern void _XimFlush(
+ Xim im
+);
+
+extern Bool _XimFilterWaitEvent(
+ Xim im
+);
+
+extern void _XimProcError(
+ Xim im,
+ Xic ic,
+ XPointer data
+);
+
+#ifdef EXT_MOVE
+extern CARD32 _XimExtenArgCheck(
+ XIMArg *arg
+);
+#endif
+
+extern Bool _XimCbDispatch(
+ Xim im,
+ INT16 len,
+ XPointer data,
+ XPointer call_data
+);
+
+extern Bool _XimLocalFilter(
+ Display *d,
+ Window w,
+ XEvent *ev,
+ XPointer client_data
+);
+
+extern XIMResourceList _XimGetResourceListRecByQuark(
+ XIMResourceList res_list,
+ unsigned int list_num,
+ XrmQuark quark
+);
+
+extern Bool _XimReconnectModeCreateIC(
+ Xic ic
+);
+
+extern char *_XimLocalSetICValues(
+ XIC ic,
+ XIMArg *values
+);
+
+extern char * _XimLocalGetICValues(
+ XIC ic,
+ XIMArg *values
+);
+
+extern int _XimLocalMbLookupString(
+ XIC ic,
+ XKeyEvent *ev,
+ char *buffer,
+ int bytes,
+ KeySym *keysym,
+ Status *status
+);
+
+extern int _XimLocalWcLookupString(
+ XIC ic,
+ XKeyEvent *ev,
+ wchar_t *buffer,
+ int bytes,
+ KeySym *keysym,
+ Status *status
+);
+
+extern int _XimLocalUtf8LookupString(
+ XIC ic,
+ XKeyEvent *ev,
+ char *buffer,
+ int bytes,
+ KeySym *keysym,
+ Status *status
+);
+
+extern Bool _XimThaiFilter(
+ Display *d,
+ Window w,
+ XEvent *ev,
+ XPointer client_data
+);
+
+extern XIC _XimThaiCreateIC(
+ XIM im,
+ XIMArg *values
+);
+
+extern Status _XimThaiCloseIM(
+ XIM xim
+);
+
+#ifdef XIM_CONNECTABLE
+extern void _XimSetProtoResource(
+ Xim im
+);
+
+extern Bool _XimConnectServer(
+ Xim im
+);
+
+extern Bool _XimDelayModeSetAttr(
+ Xim im
+);
+
+extern void _XimServerReconectableDestroy(
+ void
+);
+
+extern Bool _XimReCreateIC(
+ Xic ic
+);
+
+extern Bool _XimEncodeSavedIMATTRIBUTE(
+ Xim im,
+ XIMResourceList res_list,
+ unsigned int res_num,
+ int *idx,
+ char *buf,
+ int size,
+ int *ret_len,
+ XPointer top,
+ unsigned long mode
+);
+
+extern Bool _XimEncodeSavedICATTRIBUTE(
+ Xic ic,
+ XIMResourceList res_list,
+ unsigned int res_num,
+ int *idx,
+ char *buf,
+ int size,
+ int *ret_len,
+ XPointer top,
+ unsigned long mode
+);
+#endif
+
+extern Public Bool
+_XimRegisterDispatcher(
+ Xim im,
+ Bool (*callback)(
+ Xim, INT16, XPointer, XPointer
+ ),
+ XPointer call_data);
+
+extern Public Bool
+_XimRespSyncReply(
+ Xic ic,
+ BITMASK16 mode);
+
+#endif /* _XIMINT_H */
diff --git a/libX11/src/xlibi18n/XimintL.h b/libX11/src/xlibi18n/XimintL.h
index d2d92387f..cb67cf624 100644
--- a/libX11/src/xlibi18n/XimintL.h
+++ b/libX11/src/xlibi18n/XimintL.h
@@ -1,106 +1,106 @@
-/******************************************************************
-
- Copyright 1991, 1992, 1993, 1994 by FUJITSU LIMITED
- Copyright 1993 by Digital Equipment Corporation
-
-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 FUJITSU LIMITED and
-Digital Equipment Corporation not be used in advertising or publicity
-pertaining to distribution of the software without specific, written
-prior permission. FUJITSU LIMITED and Digital Equipment Corporation
-makes no representations about the suitability of this software for
-any purpose. It is provided "as is" without express or implied
-warranty.
-
-FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION 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.
-
- Author: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
- Modifier: Franky Ling Digital Equipment Corporation
- frankyling@hgrd01.enet.dec.com
-
-******************************************************************/
-
-#ifndef _XIMINTL_H
-#define _XIMINTL_H
-
-#define COMPOSE_FILE "Compose"
-
-/*
- * Data Structures for Local Processing
- */
-typedef INT32 DTIndex;
-typedef INT32 DTCharIndex;
-typedef BITS32 DTModifier;
-
-typedef struct _DefTree {
- DTIndex next;
- DTIndex succession; /* successive Key Sequence */
- /* Key definitions */
- DTModifier modifier_mask;
- DTModifier modifier;
- KeySym keysym; /* leaf only */
- DTCharIndex mb;
- DTCharIndex wc; /* make from mb */
- DTCharIndex utf8; /* make from mb */
- KeySym ks;
-} DefTree;
-
-typedef struct _DefTreeBase {
- DefTree *tree;
- char *mb;
- wchar_t *wc;
- char *utf8;
- DTIndex treeused, treesize;
- DTCharIndex mbused, mbsize;
- DTCharIndex wcused, wcsize;
- DTCharIndex utf8used, utf8size;
-} DefTreeBase;
-
-typedef struct _XimLocalPrivateRec {
- /* The first fields are identical with XimCommonPrivateRec. */
- XlcConv ctom_conv;
- XlcConv ctow_conv;
- XlcConv ctoutf8_conv;
- XlcConv cstomb_conv;
- XlcConv cstowc_conv;
- XlcConv cstoutf8_conv;
- XlcConv ucstoc_conv;
- XlcConv ucstoutf8_conv;
-
- XIC current_ic;
- DefTreeBase base;
- DTIndex top;
-} XimLocalPrivateRec;
-
-typedef struct _XicThaiPart {
- int comp_state;
- KeySym keysym;
- int input_mode;
-} XicThaiPart;
-
-typedef struct _XicLocalPrivateRec {
- long value_mask;
- DefTreeBase base;
- DTIndex context;
- DTIndex composed;
- XicThaiPart thai;
-
- XIMResourceList ic_resources;
- unsigned int ic_num_resources;
-
- unsigned char brl_pressed, brl_committing, brl_committed;
- Time brl_release_start;
-} XicLocalPrivateRec;
-#endif /* _XIMINTL_H */
+/******************************************************************
+
+ Copyright 1991, 1992, 1993, 1994 by FUJITSU LIMITED
+ Copyright 1993 by Digital Equipment Corporation
+
+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 FUJITSU LIMITED and
+Digital Equipment Corporation not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission. FUJITSU LIMITED and Digital Equipment Corporation
+makes no representations about the suitability of this software for
+any purpose. It is provided "as is" without express or implied
+warranty.
+
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION 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.
+
+ Author: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+ Modifier: Franky Ling Digital Equipment Corporation
+ frankyling@hgrd01.enet.dec.com
+
+******************************************************************/
+
+#ifndef _XIMINTL_H
+#define _XIMINTL_H
+
+#define COMPOSE_FILE "Compose"
+
+/*
+ * Data Structures for Local Processing
+ */
+typedef INT32 DTIndex;
+typedef INT32 DTCharIndex;
+typedef BITS32 DTModifier;
+
+typedef struct _DefTree {
+ DTIndex next;
+ DTIndex succession; /* successive Key Sequence */
+ /* Key definitions */
+ DTModifier modifier_mask;
+ DTModifier modifier;
+ KeySym keysym; /* leaf only */
+ DTCharIndex mb;
+ DTCharIndex wc; /* make from mb */
+ DTCharIndex utf8; /* make from mb */
+ KeySym ks;
+} DefTree;
+
+typedef struct _DefTreeBase {
+ DefTree *tree;
+ char *mb;
+ wchar_t *wc;
+ char *utf8;
+ DTIndex treeused, treesize;
+ DTCharIndex mbused, mbsize;
+ DTCharIndex wcused, wcsize;
+ DTCharIndex utf8used, utf8size;
+} DefTreeBase;
+
+typedef struct _XimLocalPrivateRec {
+ /* The first fields are identical with XimCommonPrivateRec. */
+ XlcConv ctom_conv;
+ XlcConv ctow_conv;
+ XlcConv ctoutf8_conv;
+ XlcConv cstomb_conv;
+ XlcConv cstowc_conv;
+ XlcConv cstoutf8_conv;
+ XlcConv ucstoc_conv;
+ XlcConv ucstoutf8_conv;
+
+ XIC current_ic;
+ DefTreeBase base;
+ DTIndex top;
+} XimLocalPrivateRec;
+
+typedef struct _XicThaiPart {
+ int comp_state;
+ KeySym keysym;
+ int input_mode;
+} XicThaiPart;
+
+typedef struct _XicLocalPrivateRec {
+ long value_mask;
+ DefTreeBase base;
+ DTIndex context;
+ DTIndex composed;
+ XicThaiPart thai;
+
+ XIMResourceList ic_resources;
+ unsigned int ic_num_resources;
+
+ unsigned char brl_pressed, brl_committing, brl_committed;
+ Time brl_release_start;
+} XicLocalPrivateRec;
+#endif /* _XIMINTL_H */
diff --git a/libX11/src/xlibi18n/XlcGeneric.h b/libX11/src/xlibi18n/XlcGeneric.h
index 0c008fdaa..99bbb7f8f 100644
--- a/libX11/src/xlibi18n/XlcGeneric.h
+++ b/libX11/src/xlibi18n/XlcGeneric.h
@@ -1,162 +1,162 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-
-#ifndef _XLCGENERIC_H_
-#define _XLCGENERIC_H_
-
-#include "XlcPubI.h"
-
-typedef struct _ByteInfo {
- unsigned char start,end;
-} ByteInfoRec, *ByteInfo;
-
-typedef struct _ByteInfoList {
- int M; /* 1 <= M <= length */
- int byteinfo_num;
- ByteInfo byteinfo;
-} ByteInfoListRec, *ByteInfoList;
-
-/* conversion_type values */
-#define LOCALCONV 1
-#define FILECONV 2
-#define FUNCTIONCONV 4
-
-typedef struct _Conversion {
- unsigned long conversion_type;
- int conv_num;
- FontScope convlist;
- char *cnv_file;
- XlcConv cnvfunc;
-} ConversionRec, *Conversion;
-
-typedef struct _ExtdSegment {
- char *name;
- XlcSide side;
- FontScope area;
- int area_num;
- XlcCharSet charset;
-} ExtdSegmentRec, *ExtdSegment;
-
-typedef struct _SegConvRec {
- int length;
- char *source_encoding;
- XlcCharSet source;
- char *destination_encoding;
- XlcCharSet dest;
- FontScopeRec range;
- int conv_num;
- FontScope conv;
-} SegConvRec, *SegConv;
-
-typedef struct _ParseInfoRec *ParseInfo;
-
-typedef struct _CodeSetRec {
- XlcCharSet *charset_list;
- int num_charsets;
- int cs_num;
- XlcSide side;
- int length;
- ByteInfoList byteM;
- Conversion mbconv;
- Conversion ctconv;
- ExtdSegment ctextseg;
- ParseInfo parse_info;
- unsigned long wc_encoding;
- Bool string_encoding;
-} CodeSetRec, *CodeSet;
-
-typedef enum {
- E_GL, /* GL encoding */
- E_GR, /* GR encoding */
- E_SS, /* single shift */
- E_LSL, /* locking shift left */
- E_LSR, /* locking shift right */
- E_LAST
-} EncodingType;
-
-typedef struct _ParseInfoRec {
- EncodingType type;
- char *encoding;
- CodeSet codeset;
-} ParseInfoRec;
-
-/*
- * XLCd private data
- */
-
-#define XLC_GENERIC(lcd, x) (((XLCdGeneric) lcd->core)->gen.x)
-#define XLC_GENERIC_PART(lcd) (&(((XLCdGeneric) lcd->core)->gen))
-
-typedef struct _XLCdGenericPart {
- int codeset_num;
- CodeSet *codeset_list;
- unsigned char *mb_parse_table;
- int mb_parse_list_num;
- ParseInfo *mb_parse_list;
- unsigned long wc_encode_mask;
- unsigned long wc_shift_bits;
- CodeSet initial_state_GL;
- CodeSet initial_state_GR;
- int segment_conv_num; /* UDC */
- SegConv segment_conv; /* UDC */
- Bool use_stdc_env;
- Bool force_convert_to_mb;
-} XLCdGenericPart;
-
-typedef struct _XLCdGenericRec {
- XLCdCoreRec core;
- XLCdPublicPart pub;
- XLCdGenericPart gen;
-} XLCdGenericRec, *XLCdGeneric;
-
-extern XLCdMethods _XlcGenericMethods;
-
-extern FontScope
-_XlcParse_scopemaps(
- const char *str,
- int *size);
-extern void
-_XlcDbg_printValue(
- const char *str,
- char **value,
- int num);
-
-extern XIM
-_XDefaultOpenIM(
- XLCd lcd,
- Display *dpy,
- XrmDatabase rdb,
- char *res_name,
- char *res_class);
-
-#endif /* _XLCGENERIC_H_ */
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+
+#ifndef _XLCGENERIC_H_
+#define _XLCGENERIC_H_
+
+#include "XlcPubI.h"
+
+typedef struct _ByteInfo {
+ unsigned char start,end;
+} ByteInfoRec, *ByteInfo;
+
+typedef struct _ByteInfoList {
+ int M; /* 1 <= M <= length */
+ int byteinfo_num;
+ ByteInfo byteinfo;
+} ByteInfoListRec, *ByteInfoList;
+
+/* conversion_type values */
+#define LOCALCONV 1
+#define FILECONV 2
+#define FUNCTIONCONV 4
+
+typedef struct _Conversion {
+ unsigned long conversion_type;
+ int conv_num;
+ FontScope convlist;
+ char *cnv_file;
+ XlcConv cnvfunc;
+} ConversionRec, *Conversion;
+
+typedef struct _ExtdSegment {
+ char *name;
+ XlcSide side;
+ FontScope area;
+ int area_num;
+ XlcCharSet charset;
+} ExtdSegmentRec, *ExtdSegment;
+
+typedef struct _SegConvRec {
+ int length;
+ char *source_encoding;
+ XlcCharSet source;
+ char *destination_encoding;
+ XlcCharSet dest;
+ FontScopeRec range;
+ int conv_num;
+ FontScope conv;
+} SegConvRec, *SegConv;
+
+typedef struct _ParseInfoRec *ParseInfo;
+
+typedef struct _CodeSetRec {
+ XlcCharSet *charset_list;
+ int num_charsets;
+ int cs_num;
+ XlcSide side;
+ int length;
+ ByteInfoList byteM;
+ Conversion mbconv;
+ Conversion ctconv;
+ ExtdSegment ctextseg;
+ ParseInfo parse_info;
+ unsigned long wc_encoding;
+ Bool string_encoding;
+} CodeSetRec, *CodeSet;
+
+typedef enum {
+ E_GL, /* GL encoding */
+ E_GR, /* GR encoding */
+ E_SS, /* single shift */
+ E_LSL, /* locking shift left */
+ E_LSR, /* locking shift right */
+ E_LAST
+} EncodingType;
+
+typedef struct _ParseInfoRec {
+ EncodingType type;
+ char *encoding;
+ CodeSet codeset;
+} ParseInfoRec;
+
+/*
+ * XLCd private data
+ */
+
+#define XLC_GENERIC(lcd, x) (((XLCdGeneric) lcd->core)->gen.x)
+#define XLC_GENERIC_PART(lcd) (&(((XLCdGeneric) lcd->core)->gen))
+
+typedef struct _XLCdGenericPart {
+ int codeset_num;
+ CodeSet *codeset_list;
+ unsigned char *mb_parse_table;
+ int mb_parse_list_num;
+ ParseInfo *mb_parse_list;
+ unsigned long wc_encode_mask;
+ unsigned long wc_shift_bits;
+ CodeSet initial_state_GL;
+ CodeSet initial_state_GR;
+ int segment_conv_num; /* UDC */
+ SegConv segment_conv; /* UDC */
+ Bool use_stdc_env;
+ Bool force_convert_to_mb;
+} XLCdGenericPart;
+
+typedef struct _XLCdGenericRec {
+ XLCdCoreRec core;
+ XLCdPublicPart pub;
+ XLCdGenericPart gen;
+} XLCdGenericRec, *XLCdGeneric;
+
+extern XLCdMethods _XlcGenericMethods;
+
+extern FontScope
+_XlcParse_scopemaps(
+ const char *str,
+ int *size);
+extern void
+_XlcDbg_printValue(
+ const char *str,
+ char **value,
+ int num);
+
+extern XIM
+_XDefaultOpenIM(
+ XLCd lcd,
+ Display *dpy,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class);
+
+#endif /* _XLCGENERIC_H_ */
diff --git a/libX11/src/xlibi18n/XlcPubI.h b/libX11/src/xlibi18n/XlcPubI.h
index 22ac2bdf0..997ac0b75 100644
--- a/libX11/src/xlibi18n/XlcPubI.h
+++ b/libX11/src/xlibi18n/XlcPubI.h
@@ -1,305 +1,305 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifndef _XLCPUBLICI_H_
-#define _XLCPUBLICI_H_
-
-#include "XlcPublic.h"
-
-#define XLC_PUBLIC(lcd, x) (((XLCdPublic) lcd->core)->pub.x)
-#define XLC_PUBLIC_PART(lcd) (&(((XLCdPublic) lcd->core)->pub))
-#define XLC_PUBLIC_METHODS(lcd) (&(((XLCdPublicMethods) lcd->methods)->pub))
-
-/*
- * XLCd public methods
- */
-
-typedef struct _XLCdPublicMethodsRec *XLCdPublicMethods;
-
-typedef XLCd (*XlcPubCreateProc)(
- const char* name,
- XLCdMethods methods
-);
-
-typedef Bool (*XlcPubInitializeProc)(
- XLCd lcd
-);
-
-typedef void (*XlcPubDestroyProc)(
- XLCd lcd
-);
-
-typedef char* (*XlcPubGetValuesProc)(
- XLCd lcd,
- XlcArgList args,
- int num_args
-);
-
-typedef void (*XlcPubGetResourceProc)(
- XLCd lcd,
- const char* category,
- const char* _class,
- char*** value,
- int* count
-);
-
-typedef struct _XLCdPublicMethodsPart {
- XLCdPublicMethods superclass;
- XlcPubCreateProc create;
- XlcPubInitializeProc initialize;
- XlcPubDestroyProc destroy;
- XlcPubGetValuesProc get_values;
- XlcPubGetResourceProc get_resource;
-} XLCdPublicMethodsPart;
-
-typedef struct _XLCdPublicMethodsRec {
- XLCdMethodsRec core;
- XLCdPublicMethodsPart pub;
-} XLCdPublicMethodsRec;
-
-/*
- * XLCd public data
- */
-
-typedef struct _XLCdPublicPart {
- char *siname; /* for _XlcMapOSLocaleName() */
- char *language; /* language part of locale name */
- char *territory; /* territory part of locale name */
- char *codeset; /* codeset part of locale name */
- char *encoding_name; /* encoding name */
- int mb_cur_max; /* ANSI C MB_CUR_MAX */
- Bool is_state_depend; /* state-depend encoding */
- const char *default_string; /* for XDefaultString() */
- XPointer xlocale_db;
-} XLCdPublicPart;
-
-typedef struct _XLCdPublicRec {
- XLCdCoreRec core;
- XLCdPublicPart pub;
-} XLCdPublicRec, *XLCdPublic;
-
-extern XLCdMethods _XlcPublicMethods;
-
-_XFUNCPROTOBEGIN
-
-extern XLCd _XlcCreateLC(
- const char* name,
- XLCdMethods methods
-);
-
-extern void _XlcDestroyLC(
- XLCd lcd
-);
-
-/* Fills into a freshly created XlcCharSet the fields that can be inferred
- from the ESC sequence. These are side, char_size, set_size. */
-extern Bool _XlcParseCharSet(
- XlcCharSet charset
-);
-
-/* Creates a new XlcCharSet, given its name (including side suffix) and
- Compound Text ESC sequence (normally at most 4 bytes). */
-extern XlcCharSet _XlcCreateDefaultCharSet(
- const char* name,
- const char* ct_sequence
-);
-
-extern XlcCharSet _XlcAddCT(
- const char* name,
- const char* ct_sequence
-);
-
-extern Bool _XlcInitCTInfo (void);
-
-extern XrmMethods _XrmDefaultInitParseInfo(
- XLCd lcd,
- XPointer* state
-);
-
-extern int _XmbTextPropertyToTextList(
- XLCd lcd,
- Display* dpy,
- const XTextProperty* text_prop,
- char*** list_ret,
- int* count_ret
-);
-
-extern int _XwcTextPropertyToTextList(
- XLCd lcd,
- Display* dpy,
- const XTextProperty* text_prop,
- wchar_t*** list_ret,
- int* count_ret
-);
-
-extern int _Xutf8TextPropertyToTextList(
- XLCd lcd,
- Display* dpy,
- const XTextProperty* text_prop,
- char*** list_ret,
- int* count_ret
-);
-
-extern int _XmbTextListToTextProperty(
- XLCd /* lcd */,
- Display* /* dpy */,
- char** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop */
-);
-
-extern int _XwcTextListToTextProperty(
- XLCd /* lcd */,
- Display* /* dpy */,
- wchar_t** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop */
-);
-
-extern int _Xutf8TextListToTextProperty(
- XLCd /* lcd */,
- Display* /* dpy */,
- char** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop */
-);
-
-extern void _XwcFreeStringList(
- XLCd /* lcd */,
- wchar_t** /* list */
-);
-
-extern int _XlcResolveLocaleName(
- const char* lc_name,
- XLCdPublicPart* pub
-);
-
-extern int _XlcResolveI18NPath(
- char* buf,
- int buf_len
-);
-
-extern char *_XlcLocaleLibDirName(
- char* /* dir_name */,
- size_t, /* dir_len */
- char* /* lc_name */
-);
-
-extern char *_XlcLocaleDirName(
- char* /* dir_name */,
- size_t, /* dir_len */
- char* /* lc_name */
-);
-
-extern XPointer _XlcCreateLocaleDataBase(
- XLCd lcd
-);
-
-extern void _XlcDestroyLocaleDataBase(
- XLCd lcd
-);
-
-extern void _XlcGetLocaleDataBase(
- XLCd /* lcd */,
- const char* /* category */,
- const char* /* name */,
- char*** /* value */,
- int* /* count */
-);
-
-#ifdef X_LOCALE
-extern char *
-_Xsetlocale(
- int category,
- _Xconst char *name);
-#else
-#ifdef __APPLE__
-extern char *
-_Xsetlocale(
- int category,
- _Xconst char *name);
-#endif
-extern char *_XlcMapOSLocaleName(
- char *osname,
- char *siname);
-#endif
-
-extern int
-_Xmbstoutf8(
- char *ustr,
- const char *str,
- int len);
-extern int
-_Xlcmbstoutf8(
- XLCd lcd,
- char *ustr,
- const char *str,
- int len);
-extern int
-_Xmbstowcs(
- wchar_t *wstr,
- char *str,
- int len);
-extern int
-_Xlcwcstombs(
- XLCd lcd,
- char *str,
- wchar_t *wstr,
- int len);
-extern int
-_Xlcmbstowcs(
- XLCd lcd,
- wchar_t *wstr,
- char *str,
- int len);
-extern int
-_Xwcstombs(
- char *str,
- wchar_t *wstr,
- int len);
-extern int
-_Xlcmbtowc(
- XLCd lcd,
- wchar_t *wstr,
- char *str,
- int len);
-extern int
-_Xlcwctomb(
- XLCd lcd,
- char *str,
- wchar_t wc);
-
-
-
-extern XPointer
-_Utf8GetConvByName(
- const char *name);
-
-_XFUNCPROTOEND
-
-#endif /* _XLCPUBLICI_H_ */
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifndef _XLCPUBLICI_H_
+#define _XLCPUBLICI_H_
+
+#include "XlcPublic.h"
+
+#define XLC_PUBLIC(lcd, x) (((XLCdPublic) lcd->core)->pub.x)
+#define XLC_PUBLIC_PART(lcd) (&(((XLCdPublic) lcd->core)->pub))
+#define XLC_PUBLIC_METHODS(lcd) (&(((XLCdPublicMethods) lcd->methods)->pub))
+
+/*
+ * XLCd public methods
+ */
+
+typedef struct _XLCdPublicMethodsRec *XLCdPublicMethods;
+
+typedef XLCd (*XlcPubCreateProc)(
+ const char* name,
+ XLCdMethods methods
+);
+
+typedef Bool (*XlcPubInitializeProc)(
+ XLCd lcd
+);
+
+typedef void (*XlcPubDestroyProc)(
+ XLCd lcd
+);
+
+typedef char* (*XlcPubGetValuesProc)(
+ XLCd lcd,
+ XlcArgList args,
+ int num_args
+);
+
+typedef void (*XlcPubGetResourceProc)(
+ XLCd lcd,
+ const char* category,
+ const char* _class,
+ char*** value,
+ int* count
+);
+
+typedef struct _XLCdPublicMethodsPart {
+ XLCdPublicMethods superclass;
+ XlcPubCreateProc create;
+ XlcPubInitializeProc initialize;
+ XlcPubDestroyProc destroy;
+ XlcPubGetValuesProc get_values;
+ XlcPubGetResourceProc get_resource;
+} XLCdPublicMethodsPart;
+
+typedef struct _XLCdPublicMethodsRec {
+ XLCdMethodsRec core;
+ XLCdPublicMethodsPart pub;
+} XLCdPublicMethodsRec;
+
+/*
+ * XLCd public data
+ */
+
+typedef struct _XLCdPublicPart {
+ char *siname; /* for _XlcMapOSLocaleName() */
+ char *language; /* language part of locale name */
+ char *territory; /* territory part of locale name */
+ char *codeset; /* codeset part of locale name */
+ char *encoding_name; /* encoding name */
+ int mb_cur_max; /* ANSI C MB_CUR_MAX */
+ Bool is_state_depend; /* state-depend encoding */
+ const char *default_string; /* for XDefaultString() */
+ XPointer xlocale_db;
+} XLCdPublicPart;
+
+typedef struct _XLCdPublicRec {
+ XLCdCoreRec core;
+ XLCdPublicPart pub;
+} XLCdPublicRec, *XLCdPublic;
+
+extern XLCdMethods _XlcPublicMethods;
+
+_XFUNCPROTOBEGIN
+
+extern XLCd _XlcCreateLC(
+ const char* name,
+ XLCdMethods methods
+);
+
+extern void _XlcDestroyLC(
+ XLCd lcd
+);
+
+/* Fills into a freshly created XlcCharSet the fields that can be inferred
+ from the ESC sequence. These are side, char_size, set_size. */
+extern Bool _XlcParseCharSet(
+ XlcCharSet charset
+);
+
+/* Creates a new XlcCharSet, given its name (including side suffix) and
+ Compound Text ESC sequence (normally at most 4 bytes). */
+extern XlcCharSet _XlcCreateDefaultCharSet(
+ const char* name,
+ const char* ct_sequence
+);
+
+extern XlcCharSet _XlcAddCT(
+ const char* name,
+ const char* ct_sequence
+);
+
+extern Bool _XlcInitCTInfo (void);
+
+extern XrmMethods _XrmDefaultInitParseInfo(
+ XLCd lcd,
+ XPointer* state
+);
+
+extern int _XmbTextPropertyToTextList(
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ char*** list_ret,
+ int* count_ret
+);
+
+extern int _XwcTextPropertyToTextList(
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ wchar_t*** list_ret,
+ int* count_ret
+);
+
+extern int _Xutf8TextPropertyToTextList(
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ char*** list_ret,
+ int* count_ret
+);
+
+extern int _XmbTextListToTextProperty(
+ XLCd /* lcd */,
+ Display* /* dpy */,
+ char** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop */
+);
+
+extern int _XwcTextListToTextProperty(
+ XLCd /* lcd */,
+ Display* /* dpy */,
+ wchar_t** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop */
+);
+
+extern int _Xutf8TextListToTextProperty(
+ XLCd /* lcd */,
+ Display* /* dpy */,
+ char** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop */
+);
+
+extern void _XwcFreeStringList(
+ XLCd /* lcd */,
+ wchar_t** /* list */
+);
+
+extern int _XlcResolveLocaleName(
+ const char* lc_name,
+ XLCdPublicPart* pub
+);
+
+extern int _XlcResolveI18NPath(
+ char* buf,
+ int buf_len
+);
+
+extern char *_XlcLocaleLibDirName(
+ char* /* dir_name */,
+ size_t, /* dir_len */
+ char* /* lc_name */
+);
+
+extern char *_XlcLocaleDirName(
+ char* /* dir_name */,
+ size_t, /* dir_len */
+ char* /* lc_name */
+);
+
+extern XPointer _XlcCreateLocaleDataBase(
+ XLCd lcd
+);
+
+extern void _XlcDestroyLocaleDataBase(
+ XLCd lcd
+);
+
+extern void _XlcGetLocaleDataBase(
+ XLCd /* lcd */,
+ const char* /* category */,
+ const char* /* name */,
+ char*** /* value */,
+ int* /* count */
+);
+
+#ifdef X_LOCALE
+extern char *
+_Xsetlocale(
+ int category,
+ _Xconst char *name);
+#else
+#ifdef __APPLE__
+extern char *
+_Xsetlocale(
+ int category,
+ _Xconst char *name);
+#endif
+extern char *_XlcMapOSLocaleName(
+ char *osname,
+ char *siname);
+#endif
+
+extern int
+_Xmbstoutf8(
+ char *ustr,
+ const char *str,
+ int len);
+extern int
+_Xlcmbstoutf8(
+ XLCd lcd,
+ char *ustr,
+ const char *str,
+ int len);
+extern int
+_Xmbstowcs(
+ wchar_t *wstr,
+ char *str,
+ int len);
+extern int
+_Xlcwcstombs(
+ XLCd lcd,
+ char *str,
+ wchar_t *wstr,
+ int len);
+extern int
+_Xlcmbstowcs(
+ XLCd lcd,
+ wchar_t *wstr,
+ char *str,
+ int len);
+extern int
+_Xwcstombs(
+ char *str,
+ wchar_t *wstr,
+ int len);
+extern int
+_Xlcmbtowc(
+ XLCd lcd,
+ wchar_t *wstr,
+ char *str,
+ int len);
+extern int
+_Xlcwctomb(
+ XLCd lcd,
+ char *str,
+ wchar_t wc);
+
+
+
+extern XPointer
+_Utf8GetConvByName(
+ const char *name);
+
+_XFUNCPROTOEND
+
+#endif /* _XLCPUBLICI_H_ */
diff --git a/libX11/src/xlibi18n/XlcPublic.h b/libX11/src/xlibi18n/XlcPublic.h
index 3d94ef37d..1d2bd3842 100644
--- a/libX11/src/xlibi18n/XlcPublic.h
+++ b/libX11/src/xlibi18n/XlcPublic.h
@@ -1,324 +1,324 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-/*
- * Most of this API is documented in i18n/Framework.PS
- */
-
-#ifndef _XLCPUBLIC_H_
-#define _XLCPUBLIC_H_
-
-#include "Xlcint.h"
-
-
-/*
- * Character sets.
- */
-
-/* Every character set has a "side". It denotes the range of byte values for
- which the character set is responsible. This means that the character
- set's encoded characters will only assumes bytes within the range, and
- that the character set can be used simultaneously with another character
- set responsible for a disjoint range. */
-typedef enum {
- XlcUnknown,
- XlcC0, /* responsible for values 0x00..0x1F */
- XlcGL, /* responsible for values 0x00..0x7F or 0x20..0x7F */
- XlcC1, /* responsible for values 0x80..0x9F */
- XlcGR, /* responsible for values 0x80..0xFF or 0xA0..0xFF */
- XlcGLGR, /* responsible for values 0x00..0xFF */
- XlcOther, /* unused */
- XlcNONE
-} XlcSide;
-
-/* Data read from XLC_LOCALE files.
- XXX Apparently superseded by _XUDCGlyphRegion. */
-typedef struct _UDCArea {
- unsigned long start;
- unsigned long end;
-} UDCAreaRec, *UDCArea;
-
-/* Where the character set comes from. */
-typedef enum {
- CSsrcUndef, /* unused */
- CSsrcStd, /* defined in libX11 */
- CSsrcXLC /* defined in an XLC_LOCALE file */
-} CSSrc;
-
-/* These are the supported properties of XlcCharSet. */
-#define XlcNCharSize "charSize"
-#define XlcNControlSequence "controlSequence"
-#define XlcNEncodingName "encodingName"
-#define XlcNName "name"
-#define XlcNSetSize "setSize"
-#define XlcNSide "side"
-
-/* This is the structure of an XlcCharSet.
- Once allocated, they are never freed. */
-typedef struct _XlcCharSetRec {
- /* Character set name, including side suffix */
- const char *name;
- XrmQuark xrm_name;
-
- /* XLFD encoding name, no side suffix */
- const char *encoding_name;
- XrmQuark xrm_encoding_name;
-
- /* Range for which the charset is responsible: XlcGL, XlcGR or XlcGLGR */
- XlcSide side;
-
- /* Number of bytes per character. 0 means a varying number (e.g. UTF-8) */
- int char_size;
- /* Classification of the character set according to ISO-2022 */
- int set_size; /* e.g. 94 or 96 */
- const char *ct_sequence; /* control sequence of CT */
- /* (normally at most 4 bytes) */
-
- /* for UDC */
- Bool string_encoding;
- UDCArea udc_area;
- int udc_area_num;
-
- /* Description source */
- CSSrc source;
-} XlcCharSetRec, *XlcCharSet;
-
-_XFUNCPROTOBEGIN
-
-/* Returns the charset with the given name (including side suffix).
- Returns NULL if not found. */
-extern XlcCharSet _XlcGetCharSet(
- const char* name
-);
-
-/* Returns the charset with the given encoding (no side suffix) and
- responsible for at least the given side (XlcGL or XlcGR).
- Returns NULL if not found. */
-extern XlcCharSet _XlcGetCharSetWithSide(
- const char* encoding_name,
- XlcSide side
-);
-
-/* Registers an XlcCharSet in the list of character sets.
- Returns True if successful. */
-extern Bool _XlcAddCharSet(
- XlcCharSet charset
-);
-
-/* Retrieves a number of attributes of an XlcCharSet.
- Return NULL if successful, otherwise the name of the first argument
- specifiying a nonexistent attribute. */
-extern char *_XlcGetCSValues(
- XlcCharSet charset,
- ...
-);
-
-_XFUNCPROTOEND
-
-
-#define XlcNCodeset "codeset"
-#define XlcNDefaultString "defaultString"
-#define XlcNLanguage "language"
-#define XlcNMbCurMax "mbCurMax"
-#define XlcNStateDependentEncoding "stateDependentEncoding"
-#define XlcNTerritory "territory"
-
-typedef struct _FontScope {
- unsigned long start;
- unsigned long end;
- unsigned long shift;
- unsigned long shift_direction;
-} FontScopeRec, *FontScope;
-
-/*
- * conversion methods
- */
-
-typedef struct _XlcConvRec *XlcConv;
-
-typedef XlcConv (*XlcOpenConverterProc)(
- XLCd from_lcd,
- const char* from_type,
- XLCd to_lcd,
- const char* to_type
-);
-
-typedef void (*XlcCloseConverterProc)(
- XlcConv /* conv */
-);
-
-typedef int (*XlcConvertProc)(
- XlcConv /* conv */,
- XPointer* /* from */,
- int* /* from_left */,
- XPointer* /* to */,
- int* /* to_left */,
- XPointer* /* args */,
- int /* num_args */
-);
-
-typedef void (*XlcResetConverterProc)(
- XlcConv /* conv */
-);
-
-typedef struct _XlcConvMethodsRec{
- XlcCloseConverterProc close;
- XlcConvertProc convert;
- XlcResetConverterProc reset;
-} XlcConvMethodsRec, *XlcConvMethods;
-
-/*
- * conversion data
- */
-
-#define XlcNMultiByte "multiByte"
-#define XlcNWideChar "wideChar"
-#define XlcNCompoundText "compoundText"
-#define XlcNString "string"
-#define XlcNUtf8String "utf8String"
-#define XlcNCharSet "charSet"
-#define XlcNCTCharSet "CTcharSet"
-#define XlcNFontCharSet "FontCharSet"
-#define XlcNChar "char"
-#define XlcNUcsChar "UCSchar"
-
-typedef struct _XlcConvRec {
- XlcConvMethods methods;
- XPointer state;
-} XlcConvRec;
-
-
-_XFUNCPROTOBEGIN
-
-extern Bool _XInitOM(
- XLCd /* lcd */
-);
-
-extern Bool _XInitIM(
- XLCd /* lcd */
-);
-
-extern XIM _XimOpenIM(
- XLCd /* lcd */,
- Display * /* dpy */,
- XrmDatabase /* rdb */,
- char * /* res_name */,
- char * /* res_class */
-);
-
-extern char *_XGetLCValues(
- XLCd /* lcd */,
- ...
-);
-
-extern XlcConv _XlcOpenConverter(
- XLCd from_lcd,
- const char* from_type,
- XLCd to_lcd,
- const char* to_type
-);
-
-extern void _XlcCloseConverter(
- XlcConv conv
-);
-
-extern int _XlcConvert(
- XlcConv conv,
- XPointer* from,
- int* from_left,
- XPointer* to,
- int* to_left,
- XPointer* args,
- int num_args
-);
-
-extern void _XlcResetConverter(
- XlcConv conv
-);
-
-extern Bool _XlcSetConverter(
- XLCd from_lcd,
- const char* from_type,
- XLCd to_lcd,
- const char* to_type,
- XlcOpenConverterProc open_converter
-);
-
-extern void _XlcGetResource(
- XLCd lcd,
- const char* category,
- const char* _class,
- char*** value,
- int* count
-);
-
-extern char *_XlcFileName(
- XLCd lcd,
- const char* category
-);
-
-extern int _Xwcslen(
- wchar_t* /* wstr */
-);
-
-extern wchar_t *_Xwcscpy(
- wchar_t* /* wstr1 */,
- wchar_t* /* wstr2 */
-);
-
-extern wchar_t *_Xwcsncpy(wchar_t *wstr1, wchar_t *wstr2, int len);
-extern int _Xwcscmp(wchar_t *wstr1, wchar_t *wstr2);
-extern int _Xwcsncmp(wchar_t *wstr1, wchar_t *wstr2, int len);
-
-/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
- Like strcasecmp in an ASCII locale. */
-extern int _XlcCompareISOLatin1(
- const char* str1,
- const char* str2
-);
-
-/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
- case of ASCII letters. Like strncasecmp in an ASCII locale. */
-extern int _XlcNCompareISOLatin1(
- const char* str1,
- const char* str2,
- int len
-);
-
-extern XOM
-_XDefaultOpenOM(
- XLCd lcd, Display *dpy, XrmDatabase rdb,
- _Xconst char *res_name, _Xconst char *res_class);
-
-_XFUNCPROTOEND
-
-#endif /* _XLCPUBLIC_H_ */
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+/*
+ * Most of this API is documented in i18n/Framework.PS
+ */
+
+#ifndef _XLCPUBLIC_H_
+#define _XLCPUBLIC_H_
+
+#include "Xlcint.h"
+
+
+/*
+ * Character sets.
+ */
+
+/* Every character set has a "side". It denotes the range of byte values for
+ which the character set is responsible. This means that the character
+ set's encoded characters will only assumes bytes within the range, and
+ that the character set can be used simultaneously with another character
+ set responsible for a disjoint range. */
+typedef enum {
+ XlcUnknown,
+ XlcC0, /* responsible for values 0x00..0x1F */
+ XlcGL, /* responsible for values 0x00..0x7F or 0x20..0x7F */
+ XlcC1, /* responsible for values 0x80..0x9F */
+ XlcGR, /* responsible for values 0x80..0xFF or 0xA0..0xFF */
+ XlcGLGR, /* responsible for values 0x00..0xFF */
+ XlcOther, /* unused */
+ XlcNONE
+} XlcSide;
+
+/* Data read from XLC_LOCALE files.
+ XXX Apparently superseded by _XUDCGlyphRegion. */
+typedef struct _UDCArea {
+ unsigned long start;
+ unsigned long end;
+} UDCAreaRec, *UDCArea;
+
+/* Where the character set comes from. */
+typedef enum {
+ CSsrcUndef, /* unused */
+ CSsrcStd, /* defined in libX11 */
+ CSsrcXLC /* defined in an XLC_LOCALE file */
+} CSSrc;
+
+/* These are the supported properties of XlcCharSet. */
+#define XlcNCharSize "charSize"
+#define XlcNControlSequence "controlSequence"
+#define XlcNEncodingName "encodingName"
+#define XlcNName "name"
+#define XlcNSetSize "setSize"
+#define XlcNSide "side"
+
+/* This is the structure of an XlcCharSet.
+ Once allocated, they are never freed. */
+typedef struct _XlcCharSetRec {
+ /* Character set name, including side suffix */
+ const char *name;
+ XrmQuark xrm_name;
+
+ /* XLFD encoding name, no side suffix */
+ const char *encoding_name;
+ XrmQuark xrm_encoding_name;
+
+ /* Range for which the charset is responsible: XlcGL, XlcGR or XlcGLGR */
+ XlcSide side;
+
+ /* Number of bytes per character. 0 means a varying number (e.g. UTF-8) */
+ int char_size;
+ /* Classification of the character set according to ISO-2022 */
+ int set_size; /* e.g. 94 or 96 */
+ const char *ct_sequence; /* control sequence of CT */
+ /* (normally at most 4 bytes) */
+
+ /* for UDC */
+ Bool string_encoding;
+ UDCArea udc_area;
+ int udc_area_num;
+
+ /* Description source */
+ CSSrc source;
+} XlcCharSetRec, *XlcCharSet;
+
+_XFUNCPROTOBEGIN
+
+/* Returns the charset with the given name (including side suffix).
+ Returns NULL if not found. */
+extern XlcCharSet _XlcGetCharSet(
+ const char* name
+);
+
+/* Returns the charset with the given encoding (no side suffix) and
+ responsible for at least the given side (XlcGL or XlcGR).
+ Returns NULL if not found. */
+extern XlcCharSet _XlcGetCharSetWithSide(
+ const char* encoding_name,
+ XlcSide side
+);
+
+/* Registers an XlcCharSet in the list of character sets.
+ Returns True if successful. */
+extern Bool _XlcAddCharSet(
+ XlcCharSet charset
+);
+
+/* Retrieves a number of attributes of an XlcCharSet.
+ Return NULL if successful, otherwise the name of the first argument
+ specifiying a nonexistent attribute. */
+extern char *_XlcGetCSValues(
+ XlcCharSet charset,
+ ...
+);
+
+_XFUNCPROTOEND
+
+
+#define XlcNCodeset "codeset"
+#define XlcNDefaultString "defaultString"
+#define XlcNLanguage "language"
+#define XlcNMbCurMax "mbCurMax"
+#define XlcNStateDependentEncoding "stateDependentEncoding"
+#define XlcNTerritory "territory"
+
+typedef struct _FontScope {
+ unsigned long start;
+ unsigned long end;
+ unsigned long shift;
+ unsigned long shift_direction;
+} FontScopeRec, *FontScope;
+
+/*
+ * conversion methods
+ */
+
+typedef struct _XlcConvRec *XlcConv;
+
+typedef XlcConv (*XlcOpenConverterProc)(
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type
+);
+
+typedef void (*XlcCloseConverterProc)(
+ XlcConv /* conv */
+);
+
+typedef int (*XlcConvertProc)(
+ XlcConv /* conv */,
+ XPointer* /* from */,
+ int* /* from_left */,
+ XPointer* /* to */,
+ int* /* to_left */,
+ XPointer* /* args */,
+ int /* num_args */
+);
+
+typedef void (*XlcResetConverterProc)(
+ XlcConv /* conv */
+);
+
+typedef struct _XlcConvMethodsRec{
+ XlcCloseConverterProc close;
+ XlcConvertProc convert;
+ XlcResetConverterProc reset;
+} XlcConvMethodsRec, *XlcConvMethods;
+
+/*
+ * conversion data
+ */
+
+#define XlcNMultiByte "multiByte"
+#define XlcNWideChar "wideChar"
+#define XlcNCompoundText "compoundText"
+#define XlcNString "string"
+#define XlcNUtf8String "utf8String"
+#define XlcNCharSet "charSet"
+#define XlcNCTCharSet "CTcharSet"
+#define XlcNFontCharSet "FontCharSet"
+#define XlcNChar "char"
+#define XlcNUcsChar "UCSchar"
+
+typedef struct _XlcConvRec {
+ XlcConvMethods methods;
+ XPointer state;
+} XlcConvRec;
+
+
+_XFUNCPROTOBEGIN
+
+extern Bool _XInitOM(
+ XLCd /* lcd */
+);
+
+extern Bool _XInitIM(
+ XLCd /* lcd */
+);
+
+extern XIM _XimOpenIM(
+ XLCd /* lcd */,
+ Display * /* dpy */,
+ XrmDatabase /* rdb */,
+ char * /* res_name */,
+ char * /* res_class */
+);
+
+extern char *_XGetLCValues(
+ XLCd /* lcd */,
+ ...
+);
+
+extern XlcConv _XlcOpenConverter(
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type
+);
+
+extern void _XlcCloseConverter(
+ XlcConv conv
+);
+
+extern int _XlcConvert(
+ XlcConv conv,
+ XPointer* from,
+ int* from_left,
+ XPointer* to,
+ int* to_left,
+ XPointer* args,
+ int num_args
+);
+
+extern void _XlcResetConverter(
+ XlcConv conv
+);
+
+extern Bool _XlcSetConverter(
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type,
+ XlcOpenConverterProc open_converter
+);
+
+extern void _XlcGetResource(
+ XLCd lcd,
+ const char* category,
+ const char* _class,
+ char*** value,
+ int* count
+);
+
+extern char *_XlcFileName(
+ XLCd lcd,
+ const char* category
+);
+
+extern int _Xwcslen(
+ wchar_t* /* wstr */
+);
+
+extern wchar_t *_Xwcscpy(
+ wchar_t* /* wstr1 */,
+ wchar_t* /* wstr2 */
+);
+
+extern wchar_t *_Xwcsncpy(wchar_t *wstr1, wchar_t *wstr2, int len);
+extern int _Xwcscmp(wchar_t *wstr1, wchar_t *wstr2);
+extern int _Xwcsncmp(wchar_t *wstr1, wchar_t *wstr2, int len);
+
+/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
+ Like strcasecmp in an ASCII locale. */
+extern int _XlcCompareISOLatin1(
+ const char* str1,
+ const char* str2
+);
+
+/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
+ case of ASCII letters. Like strncasecmp in an ASCII locale. */
+extern int _XlcNCompareISOLatin1(
+ const char* str1,
+ const char* str2,
+ int len
+);
+
+extern XOM
+_XDefaultOpenOM(
+ XLCd lcd, Display *dpy, XrmDatabase rdb,
+ _Xconst char *res_name, _Xconst char *res_class);
+
+_XFUNCPROTOEND
+
+#endif /* _XLCPUBLIC_H_ */
diff --git a/libX11/src/xlibi18n/Xlcint.h b/libX11/src/xlibi18n/Xlcint.h
index 95d1f5d5c..534ea8252 100644
--- a/libX11/src/xlibi18n/Xlcint.h
+++ b/libX11/src/xlibi18n/Xlcint.h
@@ -1,979 +1,979 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-/*
- * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
- * and Nippon Telegraph and Telephone Corporation
- * Copyright 1991 by the Open Software Foundation
- * Copyright 1993 by the TOSHIBA Corp.
- * Copyright 1993, 1994 by Sony Corporation
- * Copyright 1993, 1994 by the FUJITSU LIMITED
- *
- * 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 names of OMRON, NTT Software, NTT, Open
- * Software Foundation, and Sony Corporation not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. OMRON, NTT Software, NTT, Open Software
- * Foundation, and Sony Corporation make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, AND SONY
- * CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
- * SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, OR SONY
- * CORPORATION 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.
- *
- * Authors: Li Yuhong OMRON Corporation
- * Tatsuya Kato NTT Software Corporation
- * Hiroshi Kuribayashi OMRON Coproration
- * Muneiyoshi Suzuki Nippon Telegraph and Telephone Co.
- *
- * M. Collins OSF
- * Katsuhisa Yano TOSHIBA Corp.
- * Makoto Wakamatsu Sony Corporation
- * Takashi Fujiwara FUJITSU LIMITED
- */
-
-
-#ifndef _XLCINT_H_
-#define _XLCINT_H_
-
-#ifndef _XP_PRINT_SERVER_
-
-#include <X11/Xresource.h>
-#include <X11/Xutil.h>
-#include <stdarg.h>
-
-typedef Bool (*XFilterEventProc)(
- Display* /* display */,
- Window /* window */,
- XEvent* /* event */,
- XPointer /* client_data */
-);
-
-typedef struct _XIMFilter {
- struct _XIMFilter *next;
- Window window;
- unsigned long event_mask;
- int start_type, end_type;
- XFilterEventProc filter;
- XPointer client_data;
-} XFilterEventRec, *XFilterEventList;
-
-typedef struct {
- char *name;
- XPointer value;
-} XIMArg;
-
-#ifdef offsetof
-#define XOffsetOf(s_type,field) offsetof(s_type,field)
-#else
-#define XOffsetOf(s_type,field) ((unsigned int)&(((s_type*)NULL)->field))
-#endif
-
-#define XIMNumber(arr) ((unsigned int) (sizeof(arr) / sizeof(arr[0])))
-
-/*
- * define secondary data structs which are part of Input Methods
- * and Input Context
- */
-typedef struct {
- const char *resource_name; /* Resource string */
- XrmQuark xrm_name; /* Resource name quark */
- int resource_size; /* Size in bytes of data */
- long resource_offset; /* Offset from base */
- unsigned short mode; /* Read Write Permission */
- unsigned short id; /* Input Method Protocol */
-} XIMResource, *XIMResourceList;
-
-/*
- * data block describing the visual attributes associated with
- * an input context
- */
-typedef struct {
- XRectangle area;
- XRectangle area_needed;
- XPoint spot_location;
- Colormap colormap;
- Atom std_colormap;
- unsigned long foreground;
- unsigned long background;
- Pixmap background_pixmap;
- XFontSet fontset;
- int line_spacing;
- Cursor cursor;
- XICCallback start_callback;
- XICCallback done_callback;
- XICCallback draw_callback;
- XICCallback caret_callback;
- XIMPreeditState preedit_state;
- XICCallback state_notify_callback;
-} ICPreeditAttributes, *ICPreeditAttributesPtr;
-
-typedef struct {
- XRectangle area;
- XRectangle area_needed;
- Colormap colormap;
- Atom std_colormap;
- unsigned long foreground;
- unsigned long background;
- Pixmap background_pixmap;
- XFontSet fontset;
- int line_spacing;
- Cursor cursor;
- XICCallback start_callback;
- XICCallback done_callback;
- XICCallback draw_callback;
-} ICStatusAttributes, *ICStatusAttributesPtr;
-
-#endif /* !_XP_PRINT_SERVER_ */
-
-/*
- * Methods for Xrm parsing
- */
-
-/* The state is a pointer to an object created by the locale's
- init_parse_info function (default: _XrmDefaultInitParseInfo). */
-
-/* Sets the state to the initial state.
- Initiates a sequence of calls to the XmbCharProc. */
-typedef void (*XmbInitProc)(
- XPointer state
-);
-
-/* Transforms one multibyte character, starting at str, and return a 'char'
- in the same parsing class (not a wide character!). Returns the number of
- consumed bytes in *lenp. */
-typedef char (*XmbCharProc)(
- XPointer state,
- const char * str,
- int* lenp
-);
-
-/* Terminates a sequence of calls to the XmbCharProc. */
-typedef void (*XmbFinishProc)(
- XPointer state
-);
-
-/* Returns the name of the state's locale, as a static string. */
-typedef const char* (*XlcNameProc)(
- XPointer state
-);
-
-/* Frees the state, which was allocated by the locale's init_parse_info
- function. */
-typedef void (*XrmDestroyProc)(
- XPointer state
-);
-
-/* Set of methods for Xrm parsing. */
-typedef struct {
- XmbInitProc mbinit;
- XmbCharProc mbchar;
- XmbFinishProc mbfinish;
- XlcNameProc lcname;
- XrmDestroyProc destroy;
-} XrmMethodsRec;
-typedef const XrmMethodsRec *XrmMethods;
-
-#ifndef _XP_PRINT_SERVER_
-
-typedef struct _XLCd *XLCd; /* need forward reference */
-
-/*
- * define an LC, it's methods, and data.
- */
-
-typedef void (*XCloseLCProc)(
- XLCd /* lcd */
-);
-
-typedef char* (*XlcMapModifiersProc)(
- XLCd /* lcd */,
- _Xconst char* /* user_mods */,
- _Xconst char* /* prog_mods */
-);
-
-typedef XOM (*XOpenOMProc)(
- XLCd /* lcd */,
- Display* /* display */,
- XrmDatabase /* rdb */,
- _Xconst char* /* res_name */,
- _Xconst char* /* res_class */
-);
-
-typedef XIM (*XOpenIMProc)(
- XLCd /* lcd */,
- Display* /* display */,
- XrmDatabase /* rdb */,
- char* /* res_name */,
- char* /* res_class */
-);
-
-typedef Bool (*XRegisterIMInstantiateCBProc)(
- XLCd /* lcd */,
- Display* /* display */,
- XrmDatabase /* rdb */,
- char* /* res_name */,
- char* /* res_class */,
- XIDProc /* callback */,
- XPointer /* client_data */
-);
-
-typedef Bool (*XUnregisterIMInstantiateCBProc)(
- XLCd /* lcd */,
- Display* /* display */,
- XrmDatabase /* rdb */,
- char* /* res_name */,
- char* /* res_class */,
- XIDProc /* callback */,
- XPointer /* client_data */
-);
-
-typedef XrmMethods (*XrmInitParseInfoProc)(
- XLCd /* lcd */,
- XPointer* /* state */
-);
-
-typedef int (*XmbTextPropertyToTextListProc)(
- XLCd lcd,
- Display* display,
- const XTextProperty* text_prop,
- char*** list_return,
- int* count_return
-);
-
-typedef int (*XwcTextPropertyToTextListProc)(
- XLCd lcd,
- Display* display,
- const XTextProperty* text_prop,
- wchar_t*** list_return,
- int* count_return
-);
-
-typedef int (*XmbTextListToTextPropertyProc)(
- XLCd lcd,
- Display* display,
- char** list,
- int count,
- XICCEncodingStyle style,
- XTextProperty* text_prop_return
-);
-
-typedef int (*XwcTextListToTextPropertyProc)(
- XLCd lcd,
- Display* display,
- wchar_t** list,
- int count,
- XICCEncodingStyle style,
- XTextProperty* text_prop_return
-);
-
-typedef void (*XwcFreeStringListProc)(
- XLCd lcd,
- wchar_t** list
-);
-
-typedef const char* (*XDefaultStringProc)(
- XLCd lcd
-);
-
-typedef struct {
- XCloseLCProc close;
- XlcMapModifiersProc map_modifiers;
- XOpenOMProc open_om;
- XOpenIMProc open_im;
- XrmInitParseInfoProc init_parse_info;
- XmbTextPropertyToTextListProc mb_text_prop_to_list;
- XwcTextPropertyToTextListProc wc_text_prop_to_list;
- XmbTextPropertyToTextListProc utf8_text_prop_to_list;
- XmbTextListToTextPropertyProc mb_text_list_to_prop;
- XwcTextListToTextPropertyProc wc_text_list_to_prop;
- XmbTextListToTextPropertyProc utf8_text_list_to_prop;
- XwcFreeStringListProc wc_free_string_list;
- XDefaultStringProc default_string;
- XRegisterIMInstantiateCBProc register_callback;
- XUnregisterIMInstantiateCBProc unregister_callback;
-} XLCdMethodsRec, *XLCdMethods;
-
-
-typedef struct {
- char* name; /* name of this LC */
- char* modifiers; /* modifiers of locale */
-} XLCdCoreRec, *XLCdCore;
-
-
-typedef struct _XLCd {
- XLCdMethods methods; /* methods of this LC */
- XLCdCore core; /* data of this LC */
- XPointer opaque; /* LDX specific data */
-} XLCdRec;
-
-typedef int XlcPosition;
-
-#define XlcHead 0
-#define XlcTail -1
-
-typedef struct {
- char *name;
- XPointer value;
-} XlcArg, *XlcArgList;
-
-typedef struct _XlcResource {
- const char *name;
- XrmQuark xrm_name;
- int size;
- int offset;
- unsigned long mask;
-} XlcResource, *XlcResourceList;
-
-#define XlcCreateMask (1L<<0)
-#define XlcDefaultMask (1L<<1)
-#define XlcGetMask (1L<<2)
-#define XlcSetMask (1L<<3)
-#define XlcIgnoreMask (1L<<4)
-
-#define XlcNumber(arr) (sizeof(arr) / sizeof(arr[0]))
-
-typedef Status (*XCloseOMProc)(
- XOM /* om */
-);
-
-typedef char* (*XSetOMValuesProc)(
- XOM /* om */,
- XlcArgList /* args */,
- int /* num_args */
-);
-
-typedef char* (*XGetOMValuesProc)(
- XOM /* om */,
- XlcArgList /* args */,
- int /* num_args */
-);
-
-typedef XOC (*XCreateOCProc)(
- XOM /* om */,
- XlcArgList /* args */,
- int /* num_args */
-);
-
-typedef struct _XOMMethodsRec {
- XCloseOMProc close;
- XSetOMValuesProc set_values;
- XGetOMValuesProc get_values;
- XCreateOCProc create_oc;
-} XOMMethodsRec, *XOMMethods;
-
-typedef struct _XOMCoreRec {
- XLCd lcd; /* lcd */
- Display *display; /* display */
- XrmDatabase rdb; /* database */
- char *res_name; /* resource name */
- char *res_class; /* resource class */
- XOC oc_list; /* xoc list */
- XlcResourceList resources; /* xom resources */
- int num_resources; /* number of xom resources */
- XOMCharSetList required_charset; /* required charset list */
- XOMOrientation orientation_list; /* orientation list */
- Bool directional_dependent; /* directional-dependent */
- Bool contextual_drawing; /* contextual drawing */
- Bool context_dependent; /* context-dependent drawing */
-} XOMCoreRec, *XOMCore;
-
-typedef struct _XOM {
- XOMMethods methods;
- XOMCoreRec core;
-} XOMRec;
-
-typedef void (*XDestroyOCProc)(
- XOC /* oc */
-);
-
-typedef char* (*XSetOCValuesProc)(
- XOC /* oc */,
- XlcArgList /* args */,
- int /* num_args */
-);
-
-typedef char* (*XGetOCValuesProc)(
- XOC /* oc */,
- XlcArgList /* args */,
- int /* num_args */
-);
-
-/*
- * X Font Sets are an instantiable object, so we define it, the
- * object itself, a method list and data
- */
-
-/*
- * XFontSet object method list
- */
-
-typedef int (*XmbTextEscapementProc)(
- XFontSet /* font_set */,
- _Xconst char* /* text */,
- int /* text_len */
-);
-
-typedef int (*XmbTextExtentsProc)(
- XFontSet /* font_set */,
- _Xconst char* /* text */,
- int /* text_len */,
- XRectangle* /* overall_ink_extents */,
- XRectangle* /* overall_logical_extents */
-);
-
-typedef Status (*XmbTextPerCharExtentsProc)(
- XFontSet /* font_set */,
- _Xconst char* /* text */,
- int /* text_len */,
- XRectangle* /* ink_extents_buffer */,
- XRectangle* /* logical_extents_buffer */,
- int /* buffer_size */,
- int* /* num_chars */,
- XRectangle* /* max_ink_extents */,
- XRectangle* /* max_logical_extents */
-);
-
-typedef int (*XmbDrawStringProc)(
- Display* /* display */,
- Drawable /* drawable */,
- XFontSet /* font_set */,
- GC /* gc */,
- int /* x */,
- int /* y */,
- _Xconst char* /* text */,
- int /* text_len */
-);
-
-typedef void (*XmbDrawImageStringProc)(
- Display* /* display */,
- Drawable /* drawable */,
- XFontSet /* font_set */,
- GC /* gc */,
- int /* x */,
- int /* y */,
- _Xconst char* /* text */,
- int /* text_len */
-);
-
-typedef int (*XwcTextEscapementProc)(
- XFontSet /* font_set */,
- _Xconst wchar_t* /* text */,
- int /* text_len */
-);
-
-typedef int (*XwcTextExtentsProc)(
- XFontSet /* font_set */,
- _Xconst wchar_t* /* text */,
- int /* text_len */,
- XRectangle* /* overall_ink_extents */,
- XRectangle* /* overall_logical_extents */
-);
-
-typedef Status (*XwcTextPerCharExtentsProc)(
- XFontSet /* font_set */,
- _Xconst wchar_t* /* text */,
- int /* text_len */,
- XRectangle* /* ink_extents_buffer */,
- XRectangle* /* logical_extents_buffer */,
- int /* buffer_size */,
- int* /* num_chars */,
- XRectangle* /* max_ink_extents */,
- XRectangle* /* max_logical_extents */
-);
-
-typedef int (*XwcDrawStringProc)(
- Display* /* display */,
- Drawable /* drawable */,
- XFontSet /* font_set */,
- GC /* gc */,
- int /* x */,
- int /* y */,
- _Xconst wchar_t* /* text */,
- int /* text_len */
-);
-
-typedef void (*XwcDrawImageStringProc)(
- Display* /* display */,
- Drawable /* drawable */,
- XFontSet /* font_set */,
- GC /* gc */,
- int /* x */,
- int /* y */,
- _Xconst wchar_t* /* text */,
- int /* text_len */
-);
-
-typedef struct {
- XDestroyOCProc destroy;
- XSetOCValuesProc set_values;
- XGetOCValuesProc get_values;
-
- /* multi-byte text drawing methods */
-
- XmbTextEscapementProc mb_escapement;
- XmbTextExtentsProc mb_extents;
- XmbTextPerCharExtentsProc mb_extents_per_char;
- XmbDrawStringProc mb_draw_string;
- XmbDrawImageStringProc mb_draw_image_string;
-
- /* wide character text drawing methods */
-
- XwcTextEscapementProc wc_escapement;
- XwcTextExtentsProc wc_extents;
- XwcTextPerCharExtentsProc wc_extents_per_char;
- XwcDrawStringProc wc_draw_string;
- XwcDrawImageStringProc wc_draw_image_string;
-
- /* UTF-8 text drawing methods */
-
- XmbTextEscapementProc utf8_escapement;
- XmbTextExtentsProc utf8_extents;
- XmbTextPerCharExtentsProc utf8_extents_per_char;
- XmbDrawStringProc utf8_draw_string;
- XmbDrawImageStringProc utf8_draw_image_string;
-} XOCMethodsRec, *XOCMethods;
-
-
-/*
- * XOC independent data
- */
-
-typedef struct {
- XOM om; /* XOM */
- XOC next; /* next XOC */
- XlcResourceList resources; /* xoc resources */
- int num_resources; /* number of xoc resources */
- char *base_name_list; /* base font name list */
- Bool om_automatic; /* OM Automatic */
- XOMFontInfo font_info; /* font info */
- XFontSetExtents font_set_extents; /* font set extents */
- char *default_string; /* default string */
- XOMCharSetList missing_list; /* missing charset list */
- XOrientation orientation; /* orientation */
- char *res_name; /* resource name */
- char *res_class; /* resource class */
-} XOCCoreRec, *XOCCore;
-
-typedef struct _XOC {
- XOCMethods methods;
- XOCCoreRec core;
-} XOCRec;
-
-
-/*
- * X Input Managers are an instantiable object, so we define it, the
- * object itself, a method list and data.
- */
-
-/*
- * an Input Manager object method list
- */
-typedef struct {
- Status (*close)(
- XIM
- );
- char* (*set_values)(
- XIM, XIMArg*
- );
- char* (*get_values)(
- XIM, XIMArg*
- );
- XIC (*create_ic)(
- XIM, XIMArg*
- );
- int (*ctstombs)(
- XIM, char*, int, char*, int, Status *
- );
- int (*ctstowcs)(
- XIM, char*, int, wchar_t*, int, Status *
- );
- int (*ctstoutf8)(
- XIM, char*, int, char*, int, Status *
- );
-} XIMMethodsRec, *XIMMethods;
-
-/*
- * Input Manager LC independent data
- */
-typedef struct {
- XLCd lcd; /* LC of this input method */
- XIC ic_chain; /* list of ICs for this IM */
-
- Display * display; /* display */
- XrmDatabase rdb;
- char * res_name;
- char * res_class;
-
- XIMValuesList *im_values_list;
- XIMValuesList *ic_values_list;
- XIMStyles *styles;
- XIMCallback destroy_callback;
- char * im_name; /* XIMMODIFIER name */
- XIMResourceList im_resources; /* compiled IM resource list */
- unsigned int im_num_resources;
- XIMResourceList ic_resources; /* compiled IC resource list */
- unsigned int ic_num_resources;
- Bool visible_position;
-} XIMCoreRec, *XIMCore;
-
-
-
-/*
- * An X Input Manager (IM). Implementations may need to extend this data
- * structure to accomodate additional data, state information etc.
- */
-typedef struct _XIM {
- XIMMethods methods; /* method list of this IM */
- XIMCoreRec core; /* data of this IM */
-} XIMRec;
-
-
-
-/*
- * X Input Contexts (IC) are an instantiable object, so we define it, the
- * object itself, a method list and data for this object
- */
-
-/*
- * Input Context method list
- */
-typedef struct {
- void (*destroy)(
- XIC
- );
- void (*set_focus)(
- XIC
- );
- void (*unset_focus)(
- XIC
- );
- char* (*set_values)(
- XIC, XIMArg*
- );
- char* (*get_values)(
- XIC, XIMArg*
- );
- char* (*mb_reset)(
- XIC
- );
- wchar_t* (*wc_reset)(
- XIC
- );
- char* (*utf8_reset)(
- XIC
- );
- int (*mb_lookup_string)(
- XIC, XKeyEvent*, char*, int, KeySym*, Status*
- );
- int (*wc_lookup_string)(
- XIC, XKeyEvent*, wchar_t*, int, KeySym*, Status*
- );
- int (*utf8_lookup_string)(
- XIC, XKeyEvent*, char*, int, KeySym*, Status*
- );
-} XICMethodsRec, *XICMethods;
-
-
-/*
- * Input Context LC independent data
- */
-typedef struct {
- XIM im; /* XIM this IC belongs too */
- XIC next; /* linked list of ICs for IM */
-
- Window client_window; /* window IM can use for */
- /* display or subwindows */
- XIMStyle input_style; /* IM's input style */
- Window focus_window; /* where key events go */
- unsigned long filter_events; /* event mask from IM */
- XICCallback geometry_callback; /* client callback */
- char * res_name;
- char * res_class;
-
- XICCallback destroy_callback;
- XICCallback string_conversion_callback;
- XIMStringConversionText string_conversion;
- XIMResetState reset_state;
- XIMHotKeyTriggers *hotkey;
- XIMHotKeyState hotkey_state;
-
- ICPreeditAttributes preedit_attr; /* visuals of preedit area */
- ICStatusAttributes status_attr; /* visuals of status area */
-} XICCoreRec, *XICCore;
-
-
-/*
- * an Input Context. Implementations may need to extend this data
- * structure to accomodate additional data, state information etc.
- */
-typedef struct _XIC {
- XICMethods methods; /* method list of this IC */
- XICCoreRec core; /* data of this IC */
-} XICRec;
-
-
-/* If the argument 'name' is appropriate for this loader, it instantiates an
- XLCd object with appropriate locale methods and returns it. May return
- NULL; in this case, the remaining loaders are tried. */
-typedef XLCd (*XLCdLoadProc)(
- const char* name
-);
-
-_XFUNCPROTOBEGIN
-
-extern XLCd _XOpenLC(
- char* name
-);
-
-extern void _XCloseLC(
- XLCd lcd
-);
-
-extern XLCd _XlcCurrentLC (void);
-
-extern Bool _XlcValidModSyntax(
- const char* mods,
- const char* const * valid
-);
-
-extern char *_XlcDefaultMapModifiers(
- XLCd lcd,
- _Xconst char* user_mods,
- _Xconst char* prog_mods
-);
-
-extern void _XIMCompileResourceList(
- XIMResourceList /* res */,
- unsigned int /* num_res */
-);
-
-extern void _XCopyToArg(
- XPointer /* src */,
- XPointer* /* dst */,
- unsigned int /* size */
-);
-
-extern char ** _XParseBaseFontNameList(
- char* /* str */,
- int* /* num */
-);
-
-extern XrmMethods _XrmInitParseInfo(
- XPointer* statep
-);
-
-extern void _XRegisterFilterByMask(
- Display* /* dpy */,
- Window /* window */,
- unsigned long /* event_mask */,
- Bool (*)(
- Display* /* display */,
- Window /* window */,
- XEvent* /* event */,
- XPointer /* client_data */
- ) /* filter */,
- XPointer /* client_data */
-);
-
-extern void _XRegisterFilterByType(
- Display* /* dpy */,
- Window /* window */,
- int /* start_type */,
- int /* end_type */,
- Bool (*)(
- Display* /* display */,
- Window /* window */,
- XEvent* /* event */,
- XPointer /* client_data */
- ) /* filter */,
- XPointer /* client_data */
-);
-
-extern void _XUnregisterFilter(
- Display* /* dpy */,
- Window /* window */,
- Bool (*)(
- Display* /* display */,
- Window /* window */,
- XEvent* /* event */,
- XPointer /* client_data */
- ) /* filter */,
- XPointer /* client_data */
-);
-
-extern void _XlcCountVaList(
- va_list var,
- int* count_return
-);
-
-extern void _XlcVaToArgList(
- va_list var,
- int count,
- XlcArgList* args_return
-);
-
-
-extern void _XlcCopyFromArg(
- char * src,
- char * dst,
- int size
-);
-
-extern void _XlcCopyToArg(
- char * src,
- char ** dst,
- int size
-);
-
-extern void _XlcCompileResourceList(
- XlcResourceList resources,
- int num_resources
-);
-
-extern char *_XlcGetValues(
- XPointer base,
- XlcResourceList resources,
- int num_resources,
- XlcArgList args,
- int num_args,
- unsigned long mask
-);
-
-extern char *_XlcSetValues(
- XPointer base,
- XlcResourceList resources,
- int num_resources,
- XlcArgList args,
- int num_args,
- unsigned long mask
-);
-
-/* documented in i18n/Framework.PS */
-extern void _XlcInitLoader (void);
-
-extern void _XlcDeInitLoader (void);
-
-/* documented in i18n/Framework.PS */
-/* Returns True on success, False on failure. */
-extern Bool _XlcAddLoader(
- XLCdLoadProc proc,
- XlcPosition position
-);
-
-/* documented in i18n/Framework.PS */
-extern void _XlcRemoveLoader(
- XLCdLoadProc proc
-);
-
-/* Registers UTF-8 converters for a non-UTF-8 locale. */
-extern void _XlcAddUtf8Converters(
- XLCd lcd
-);
-
-/* Registers UTF-8 converters for a UTF-8 locale. */
-extern void _XlcAddUtf8LocaleConverters(
- XLCd lcd
-);
-
-/* Registers GB18030 converters for a GB18030 locale. */
-extern void _XlcAddGB18030LocaleConverters(
- XLCd lcd
-);
-
-/* The default locale loader. Assumes an ASCII encoding. */
-extern XLCd _XlcDefaultLoader(
- const char* name
-);
-
-/* The generic locale loader. Suitable for all encodings except UTF-8.
- Uses an XLC_LOCALE configuration file. */
-extern XLCd _XlcGenericLoader(
- const char* name
-);
-
-/* The UTF-8 locale loader. Suitable for UTF-8 encoding.
- Uses an XLC_LOCALE configuration file. */
-extern XLCd _XlcUtf8Loader(
- const char* name
-);
-
-/* The old EUC locale loader. */
-extern XLCd _XlcEucLoader(
- const char* name
-);
-
-/* The old SJIS locale loader. */
-extern XLCd _XlcSjisLoader(
- const char* name
-);
-
-/* The old ISO-2022-JP locale loader. */
-extern XLCd _XlcJisLoader(
- const char* name
-);
-
-extern XLCd _XlcDynamicLoad(
- const char* name
-);
-
-/* The old dynamic loader. */
-extern XLCd _XlcDynamicLoader(
- const char* name
-);
-
-extern Bool _XInitDefaultIM(
- XLCd lcd
-);
-
-extern Bool _XInitDefaultOM(
- XLCd lcd
-);
-
-extern Bool _XInitDynamicIM(
- XLCd lcd
-);
-
-extern Bool _XInitDynamicOM(
- XLCd lcd
-);
-
-_XFUNCPROTOEND
-
-#endif /* !_XP_PRINT_SERVER_ */
-
-#endif /* _XLCINT_H_ */
+/*
+
+Copyright 1991, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+/*
+ * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
+ * and Nippon Telegraph and Telephone Corporation
+ * Copyright 1991 by the Open Software Foundation
+ * Copyright 1993 by the TOSHIBA Corp.
+ * Copyright 1993, 1994 by Sony Corporation
+ * Copyright 1993, 1994 by the FUJITSU LIMITED
+ *
+ * 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 names of OMRON, NTT Software, NTT, Open
+ * Software Foundation, and Sony Corporation not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. OMRON, NTT Software, NTT, Open Software
+ * Foundation, and Sony Corporation make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, AND SONY
+ * CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+ * SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, OR SONY
+ * CORPORATION 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.
+ *
+ * Authors: Li Yuhong OMRON Corporation
+ * Tatsuya Kato NTT Software Corporation
+ * Hiroshi Kuribayashi OMRON Coproration
+ * Muneiyoshi Suzuki Nippon Telegraph and Telephone Co.
+ *
+ * M. Collins OSF
+ * Katsuhisa Yano TOSHIBA Corp.
+ * Makoto Wakamatsu Sony Corporation
+ * Takashi Fujiwara FUJITSU LIMITED
+ */
+
+
+#ifndef _XLCINT_H_
+#define _XLCINT_H_
+
+#ifndef _XP_PRINT_SERVER_
+
+#include <X11/Xresource.h>
+#include <X11/Xutil.h>
+#include <stdarg.h>
+
+typedef Bool (*XFilterEventProc)(
+ Display* /* display */,
+ Window /* window */,
+ XEvent* /* event */,
+ XPointer /* client_data */
+);
+
+typedef struct _XIMFilter {
+ struct _XIMFilter *next;
+ Window window;
+ unsigned long event_mask;
+ int start_type, end_type;
+ XFilterEventProc filter;
+ XPointer client_data;
+} XFilterEventRec, *XFilterEventList;
+
+typedef struct {
+ char *name;
+ XPointer value;
+} XIMArg;
+
+#ifdef offsetof
+#define XOffsetOf(s_type,field) offsetof(s_type,field)
+#else
+#define XOffsetOf(s_type,field) ((unsigned int)&(((s_type*)NULL)->field))
+#endif
+
+#define XIMNumber(arr) ((unsigned int) (sizeof(arr) / sizeof(arr[0])))
+
+/*
+ * define secondary data structs which are part of Input Methods
+ * and Input Context
+ */
+typedef struct {
+ const char *resource_name; /* Resource string */
+ XrmQuark xrm_name; /* Resource name quark */
+ int resource_size; /* Size in bytes of data */
+ long resource_offset; /* Offset from base */
+ unsigned short mode; /* Read Write Permission */
+ unsigned short id; /* Input Method Protocol */
+} XIMResource, *XIMResourceList;
+
+/*
+ * data block describing the visual attributes associated with
+ * an input context
+ */
+typedef struct {
+ XRectangle area;
+ XRectangle area_needed;
+ XPoint spot_location;
+ Colormap colormap;
+ Atom std_colormap;
+ unsigned long foreground;
+ unsigned long background;
+ Pixmap background_pixmap;
+ XFontSet fontset;
+ int line_spacing;
+ Cursor cursor;
+ XICCallback start_callback;
+ XICCallback done_callback;
+ XICCallback draw_callback;
+ XICCallback caret_callback;
+ XIMPreeditState preedit_state;
+ XICCallback state_notify_callback;
+} ICPreeditAttributes, *ICPreeditAttributesPtr;
+
+typedef struct {
+ XRectangle area;
+ XRectangle area_needed;
+ Colormap colormap;
+ Atom std_colormap;
+ unsigned long foreground;
+ unsigned long background;
+ Pixmap background_pixmap;
+ XFontSet fontset;
+ int line_spacing;
+ Cursor cursor;
+ XICCallback start_callback;
+ XICCallback done_callback;
+ XICCallback draw_callback;
+} ICStatusAttributes, *ICStatusAttributesPtr;
+
+#endif /* !_XP_PRINT_SERVER_ */
+
+/*
+ * Methods for Xrm parsing
+ */
+
+/* The state is a pointer to an object created by the locale's
+ init_parse_info function (default: _XrmDefaultInitParseInfo). */
+
+/* Sets the state to the initial state.
+ Initiates a sequence of calls to the XmbCharProc. */
+typedef void (*XmbInitProc)(
+ XPointer state
+);
+
+/* Transforms one multibyte character, starting at str, and return a 'char'
+ in the same parsing class (not a wide character!). Returns the number of
+ consumed bytes in *lenp. */
+typedef char (*XmbCharProc)(
+ XPointer state,
+ const char * str,
+ int* lenp
+);
+
+/* Terminates a sequence of calls to the XmbCharProc. */
+typedef void (*XmbFinishProc)(
+ XPointer state
+);
+
+/* Returns the name of the state's locale, as a static string. */
+typedef const char* (*XlcNameProc)(
+ XPointer state
+);
+
+/* Frees the state, which was allocated by the locale's init_parse_info
+ function. */
+typedef void (*XrmDestroyProc)(
+ XPointer state
+);
+
+/* Set of methods for Xrm parsing. */
+typedef struct {
+ XmbInitProc mbinit;
+ XmbCharProc mbchar;
+ XmbFinishProc mbfinish;
+ XlcNameProc lcname;
+ XrmDestroyProc destroy;
+} XrmMethodsRec;
+typedef const XrmMethodsRec *XrmMethods;
+
+#ifndef _XP_PRINT_SERVER_
+
+typedef struct _XLCd *XLCd; /* need forward reference */
+
+/*
+ * define an LC, it's methods, and data.
+ */
+
+typedef void (*XCloseLCProc)(
+ XLCd /* lcd */
+);
+
+typedef char* (*XlcMapModifiersProc)(
+ XLCd /* lcd */,
+ _Xconst char* /* user_mods */,
+ _Xconst char* /* prog_mods */
+);
+
+typedef XOM (*XOpenOMProc)(
+ XLCd /* lcd */,
+ Display* /* display */,
+ XrmDatabase /* rdb */,
+ _Xconst char* /* res_name */,
+ _Xconst char* /* res_class */
+);
+
+typedef XIM (*XOpenIMProc)(
+ XLCd /* lcd */,
+ Display* /* display */,
+ XrmDatabase /* rdb */,
+ char* /* res_name */,
+ char* /* res_class */
+);
+
+typedef Bool (*XRegisterIMInstantiateCBProc)(
+ XLCd /* lcd */,
+ Display* /* display */,
+ XrmDatabase /* rdb */,
+ char* /* res_name */,
+ char* /* res_class */,
+ XIDProc /* callback */,
+ XPointer /* client_data */
+);
+
+typedef Bool (*XUnregisterIMInstantiateCBProc)(
+ XLCd /* lcd */,
+ Display* /* display */,
+ XrmDatabase /* rdb */,
+ char* /* res_name */,
+ char* /* res_class */,
+ XIDProc /* callback */,
+ XPointer /* client_data */
+);
+
+typedef XrmMethods (*XrmInitParseInfoProc)(
+ XLCd /* lcd */,
+ XPointer* /* state */
+);
+
+typedef int (*XmbTextPropertyToTextListProc)(
+ XLCd lcd,
+ Display* display,
+ const XTextProperty* text_prop,
+ char*** list_return,
+ int* count_return
+);
+
+typedef int (*XwcTextPropertyToTextListProc)(
+ XLCd lcd,
+ Display* display,
+ const XTextProperty* text_prop,
+ wchar_t*** list_return,
+ int* count_return
+);
+
+typedef int (*XmbTextListToTextPropertyProc)(
+ XLCd lcd,
+ Display* display,
+ char** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
+);
+
+typedef int (*XwcTextListToTextPropertyProc)(
+ XLCd lcd,
+ Display* display,
+ wchar_t** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
+);
+
+typedef void (*XwcFreeStringListProc)(
+ XLCd lcd,
+ wchar_t** list
+);
+
+typedef const char* (*XDefaultStringProc)(
+ XLCd lcd
+);
+
+typedef struct {
+ XCloseLCProc close;
+ XlcMapModifiersProc map_modifiers;
+ XOpenOMProc open_om;
+ XOpenIMProc open_im;
+ XrmInitParseInfoProc init_parse_info;
+ XmbTextPropertyToTextListProc mb_text_prop_to_list;
+ XwcTextPropertyToTextListProc wc_text_prop_to_list;
+ XmbTextPropertyToTextListProc utf8_text_prop_to_list;
+ XmbTextListToTextPropertyProc mb_text_list_to_prop;
+ XwcTextListToTextPropertyProc wc_text_list_to_prop;
+ XmbTextListToTextPropertyProc utf8_text_list_to_prop;
+ XwcFreeStringListProc wc_free_string_list;
+ XDefaultStringProc default_string;
+ XRegisterIMInstantiateCBProc register_callback;
+ XUnregisterIMInstantiateCBProc unregister_callback;
+} XLCdMethodsRec, *XLCdMethods;
+
+
+typedef struct {
+ char* name; /* name of this LC */
+ char* modifiers; /* modifiers of locale */
+} XLCdCoreRec, *XLCdCore;
+
+
+typedef struct _XLCd {
+ XLCdMethods methods; /* methods of this LC */
+ XLCdCore core; /* data of this LC */
+ XPointer opaque; /* LDX specific data */
+} XLCdRec;
+
+typedef int XlcPosition;
+
+#define XlcHead 0
+#define XlcTail -1
+
+typedef struct {
+ char *name;
+ XPointer value;
+} XlcArg, *XlcArgList;
+
+typedef struct _XlcResource {
+ const char *name;
+ XrmQuark xrm_name;
+ int size;
+ int offset;
+ unsigned long mask;
+} XlcResource, *XlcResourceList;
+
+#define XlcCreateMask (1L<<0)
+#define XlcDefaultMask (1L<<1)
+#define XlcGetMask (1L<<2)
+#define XlcSetMask (1L<<3)
+#define XlcIgnoreMask (1L<<4)
+
+#define XlcNumber(arr) (sizeof(arr) / sizeof(arr[0]))
+
+typedef Status (*XCloseOMProc)(
+ XOM /* om */
+);
+
+typedef char* (*XSetOMValuesProc)(
+ XOM /* om */,
+ XlcArgList /* args */,
+ int /* num_args */
+);
+
+typedef char* (*XGetOMValuesProc)(
+ XOM /* om */,
+ XlcArgList /* args */,
+ int /* num_args */
+);
+
+typedef XOC (*XCreateOCProc)(
+ XOM /* om */,
+ XlcArgList /* args */,
+ int /* num_args */
+);
+
+typedef struct _XOMMethodsRec {
+ XCloseOMProc close;
+ XSetOMValuesProc set_values;
+ XGetOMValuesProc get_values;
+ XCreateOCProc create_oc;
+} XOMMethodsRec, *XOMMethods;
+
+typedef struct _XOMCoreRec {
+ XLCd lcd; /* lcd */
+ Display *display; /* display */
+ XrmDatabase rdb; /* database */
+ char *res_name; /* resource name */
+ char *res_class; /* resource class */
+ XOC oc_list; /* xoc list */
+ XlcResourceList resources; /* xom resources */
+ int num_resources; /* number of xom resources */
+ XOMCharSetList required_charset; /* required charset list */
+ XOMOrientation orientation_list; /* orientation list */
+ Bool directional_dependent; /* directional-dependent */
+ Bool contextual_drawing; /* contextual drawing */
+ Bool context_dependent; /* context-dependent drawing */
+} XOMCoreRec, *XOMCore;
+
+typedef struct _XOM {
+ XOMMethods methods;
+ XOMCoreRec core;
+} XOMRec;
+
+typedef void (*XDestroyOCProc)(
+ XOC /* oc */
+);
+
+typedef char* (*XSetOCValuesProc)(
+ XOC /* oc */,
+ XlcArgList /* args */,
+ int /* num_args */
+);
+
+typedef char* (*XGetOCValuesProc)(
+ XOC /* oc */,
+ XlcArgList /* args */,
+ int /* num_args */
+);
+
+/*
+ * X Font Sets are an instantiable object, so we define it, the
+ * object itself, a method list and data
+ */
+
+/*
+ * XFontSet object method list
+ */
+
+typedef int (*XmbTextEscapementProc)(
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* text_len */
+);
+
+typedef int (*XmbTextExtentsProc)(
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* text_len */,
+ XRectangle* /* overall_ink_extents */,
+ XRectangle* /* overall_logical_extents */
+);
+
+typedef Status (*XmbTextPerCharExtentsProc)(
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* text_len */,
+ XRectangle* /* ink_extents_buffer */,
+ XRectangle* /* logical_extents_buffer */,
+ int /* buffer_size */,
+ int* /* num_chars */,
+ XRectangle* /* max_ink_extents */,
+ XRectangle* /* max_logical_extents */
+);
+
+typedef int (*XmbDrawStringProc)(
+ Display* /* display */,
+ Drawable /* drawable */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* text */,
+ int /* text_len */
+);
+
+typedef void (*XmbDrawImageStringProc)(
+ Display* /* display */,
+ Drawable /* drawable */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* text */,
+ int /* text_len */
+);
+
+typedef int (*XwcTextEscapementProc)(
+ XFontSet /* font_set */,
+ _Xconst wchar_t* /* text */,
+ int /* text_len */
+);
+
+typedef int (*XwcTextExtentsProc)(
+ XFontSet /* font_set */,
+ _Xconst wchar_t* /* text */,
+ int /* text_len */,
+ XRectangle* /* overall_ink_extents */,
+ XRectangle* /* overall_logical_extents */
+);
+
+typedef Status (*XwcTextPerCharExtentsProc)(
+ XFontSet /* font_set */,
+ _Xconst wchar_t* /* text */,
+ int /* text_len */,
+ XRectangle* /* ink_extents_buffer */,
+ XRectangle* /* logical_extents_buffer */,
+ int /* buffer_size */,
+ int* /* num_chars */,
+ XRectangle* /* max_ink_extents */,
+ XRectangle* /* max_logical_extents */
+);
+
+typedef int (*XwcDrawStringProc)(
+ Display* /* display */,
+ Drawable /* drawable */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst wchar_t* /* text */,
+ int /* text_len */
+);
+
+typedef void (*XwcDrawImageStringProc)(
+ Display* /* display */,
+ Drawable /* drawable */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst wchar_t* /* text */,
+ int /* text_len */
+);
+
+typedef struct {
+ XDestroyOCProc destroy;
+ XSetOCValuesProc set_values;
+ XGetOCValuesProc get_values;
+
+ /* multi-byte text drawing methods */
+
+ XmbTextEscapementProc mb_escapement;
+ XmbTextExtentsProc mb_extents;
+ XmbTextPerCharExtentsProc mb_extents_per_char;
+ XmbDrawStringProc mb_draw_string;
+ XmbDrawImageStringProc mb_draw_image_string;
+
+ /* wide character text drawing methods */
+
+ XwcTextEscapementProc wc_escapement;
+ XwcTextExtentsProc wc_extents;
+ XwcTextPerCharExtentsProc wc_extents_per_char;
+ XwcDrawStringProc wc_draw_string;
+ XwcDrawImageStringProc wc_draw_image_string;
+
+ /* UTF-8 text drawing methods */
+
+ XmbTextEscapementProc utf8_escapement;
+ XmbTextExtentsProc utf8_extents;
+ XmbTextPerCharExtentsProc utf8_extents_per_char;
+ XmbDrawStringProc utf8_draw_string;
+ XmbDrawImageStringProc utf8_draw_image_string;
+} XOCMethodsRec, *XOCMethods;
+
+
+/*
+ * XOC independent data
+ */
+
+typedef struct {
+ XOM om; /* XOM */
+ XOC next; /* next XOC */
+ XlcResourceList resources; /* xoc resources */
+ int num_resources; /* number of xoc resources */
+ char *base_name_list; /* base font name list */
+ Bool om_automatic; /* OM Automatic */
+ XOMFontInfo font_info; /* font info */
+ XFontSetExtents font_set_extents; /* font set extents */
+ char *default_string; /* default string */
+ XOMCharSetList missing_list; /* missing charset list */
+ XOrientation orientation; /* orientation */
+ char *res_name; /* resource name */
+ char *res_class; /* resource class */
+} XOCCoreRec, *XOCCore;
+
+typedef struct _XOC {
+ XOCMethods methods;
+ XOCCoreRec core;
+} XOCRec;
+
+
+/*
+ * X Input Managers are an instantiable object, so we define it, the
+ * object itself, a method list and data.
+ */
+
+/*
+ * an Input Manager object method list
+ */
+typedef struct {
+ Status (*close)(
+ XIM
+ );
+ char* (*set_values)(
+ XIM, XIMArg*
+ );
+ char* (*get_values)(
+ XIM, XIMArg*
+ );
+ XIC (*create_ic)(
+ XIM, XIMArg*
+ );
+ int (*ctstombs)(
+ XIM, char*, int, char*, int, Status *
+ );
+ int (*ctstowcs)(
+ XIM, char*, int, wchar_t*, int, Status *
+ );
+ int (*ctstoutf8)(
+ XIM, char*, int, char*, int, Status *
+ );
+} XIMMethodsRec, *XIMMethods;
+
+/*
+ * Input Manager LC independent data
+ */
+typedef struct {
+ XLCd lcd; /* LC of this input method */
+ XIC ic_chain; /* list of ICs for this IM */
+
+ Display * display; /* display */
+ XrmDatabase rdb;
+ char * res_name;
+ char * res_class;
+
+ XIMValuesList *im_values_list;
+ XIMValuesList *ic_values_list;
+ XIMStyles *styles;
+ XIMCallback destroy_callback;
+ char * im_name; /* XIMMODIFIER name */
+ XIMResourceList im_resources; /* compiled IM resource list */
+ unsigned int im_num_resources;
+ XIMResourceList ic_resources; /* compiled IC resource list */
+ unsigned int ic_num_resources;
+ Bool visible_position;
+} XIMCoreRec, *XIMCore;
+
+
+
+/*
+ * An X Input Manager (IM). Implementations may need to extend this data
+ * structure to accomodate additional data, state information etc.
+ */
+typedef struct _XIM {
+ XIMMethods methods; /* method list of this IM */
+ XIMCoreRec core; /* data of this IM */
+} XIMRec;
+
+
+
+/*
+ * X Input Contexts (IC) are an instantiable object, so we define it, the
+ * object itself, a method list and data for this object
+ */
+
+/*
+ * Input Context method list
+ */
+typedef struct {
+ void (*destroy)(
+ XIC
+ );
+ void (*set_focus)(
+ XIC
+ );
+ void (*unset_focus)(
+ XIC
+ );
+ char* (*set_values)(
+ XIC, XIMArg*
+ );
+ char* (*get_values)(
+ XIC, XIMArg*
+ );
+ char* (*mb_reset)(
+ XIC
+ );
+ wchar_t* (*wc_reset)(
+ XIC
+ );
+ char* (*utf8_reset)(
+ XIC
+ );
+ int (*mb_lookup_string)(
+ XIC, XKeyEvent*, char*, int, KeySym*, Status*
+ );
+ int (*wc_lookup_string)(
+ XIC, XKeyEvent*, wchar_t*, int, KeySym*, Status*
+ );
+ int (*utf8_lookup_string)(
+ XIC, XKeyEvent*, char*, int, KeySym*, Status*
+ );
+} XICMethodsRec, *XICMethods;
+
+
+/*
+ * Input Context LC independent data
+ */
+typedef struct {
+ XIM im; /* XIM this IC belongs too */
+ XIC next; /* linked list of ICs for IM */
+
+ Window client_window; /* window IM can use for */
+ /* display or subwindows */
+ XIMStyle input_style; /* IM's input style */
+ Window focus_window; /* where key events go */
+ unsigned long filter_events; /* event mask from IM */
+ XICCallback geometry_callback; /* client callback */
+ char * res_name;
+ char * res_class;
+
+ XICCallback destroy_callback;
+ XICCallback string_conversion_callback;
+ XIMStringConversionText string_conversion;
+ XIMResetState reset_state;
+ XIMHotKeyTriggers *hotkey;
+ XIMHotKeyState hotkey_state;
+
+ ICPreeditAttributes preedit_attr; /* visuals of preedit area */
+ ICStatusAttributes status_attr; /* visuals of status area */
+} XICCoreRec, *XICCore;
+
+
+/*
+ * an Input Context. Implementations may need to extend this data
+ * structure to accomodate additional data, state information etc.
+ */
+typedef struct _XIC {
+ XICMethods methods; /* method list of this IC */
+ XICCoreRec core; /* data of this IC */
+} XICRec;
+
+
+/* If the argument 'name' is appropriate for this loader, it instantiates an
+ XLCd object with appropriate locale methods and returns it. May return
+ NULL; in this case, the remaining loaders are tried. */
+typedef XLCd (*XLCdLoadProc)(
+ const char* name
+);
+
+_XFUNCPROTOBEGIN
+
+extern XLCd _XOpenLC(
+ char* name
+);
+
+extern void _XCloseLC(
+ XLCd lcd
+);
+
+extern XLCd _XlcCurrentLC (void);
+
+extern Bool _XlcValidModSyntax(
+ const char* mods,
+ const char* const * valid
+);
+
+extern char *_XlcDefaultMapModifiers(
+ XLCd lcd,
+ _Xconst char* user_mods,
+ _Xconst char* prog_mods
+);
+
+extern void _XIMCompileResourceList(
+ XIMResourceList /* res */,
+ unsigned int /* num_res */
+);
+
+extern void _XCopyToArg(
+ XPointer /* src */,
+ XPointer* /* dst */,
+ unsigned int /* size */
+);
+
+extern char ** _XParseBaseFontNameList(
+ char* /* str */,
+ int* /* num */
+);
+
+extern XrmMethods _XrmInitParseInfo(
+ XPointer* statep
+);
+
+extern void _XRegisterFilterByMask(
+ Display* /* dpy */,
+ Window /* window */,
+ unsigned long /* event_mask */,
+ Bool (*)(
+ Display* /* display */,
+ Window /* window */,
+ XEvent* /* event */,
+ XPointer /* client_data */
+ ) /* filter */,
+ XPointer /* client_data */
+);
+
+extern void _XRegisterFilterByType(
+ Display* /* dpy */,
+ Window /* window */,
+ int /* start_type */,
+ int /* end_type */,
+ Bool (*)(
+ Display* /* display */,
+ Window /* window */,
+ XEvent* /* event */,
+ XPointer /* client_data */
+ ) /* filter */,
+ XPointer /* client_data */
+);
+
+extern void _XUnregisterFilter(
+ Display* /* dpy */,
+ Window /* window */,
+ Bool (*)(
+ Display* /* display */,
+ Window /* window */,
+ XEvent* /* event */,
+ XPointer /* client_data */
+ ) /* filter */,
+ XPointer /* client_data */
+);
+
+extern void _XlcCountVaList(
+ va_list var,
+ int* count_return
+);
+
+extern void _XlcVaToArgList(
+ va_list var,
+ int count,
+ XlcArgList* args_return
+);
+
+
+extern void _XlcCopyFromArg(
+ char * src,
+ char * dst,
+ int size
+);
+
+extern void _XlcCopyToArg(
+ char * src,
+ char ** dst,
+ int size
+);
+
+extern void _XlcCompileResourceList(
+ XlcResourceList resources,
+ int num_resources
+);
+
+extern char *_XlcGetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask
+);
+
+extern char *_XlcSetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask
+);
+
+/* documented in i18n/Framework.PS */
+extern void _XlcInitLoader (void);
+
+extern void _XlcDeInitLoader (void);
+
+/* documented in i18n/Framework.PS */
+/* Returns True on success, False on failure. */
+extern Bool _XlcAddLoader(
+ XLCdLoadProc proc,
+ XlcPosition position
+);
+
+/* documented in i18n/Framework.PS */
+extern void _XlcRemoveLoader(
+ XLCdLoadProc proc
+);
+
+/* Registers UTF-8 converters for a non-UTF-8 locale. */
+extern void _XlcAddUtf8Converters(
+ XLCd lcd
+);
+
+/* Registers UTF-8 converters for a UTF-8 locale. */
+extern void _XlcAddUtf8LocaleConverters(
+ XLCd lcd
+);
+
+/* Registers GB18030 converters for a GB18030 locale. */
+extern void _XlcAddGB18030LocaleConverters(
+ XLCd lcd
+);
+
+/* The default locale loader. Assumes an ASCII encoding. */
+extern XLCd _XlcDefaultLoader(
+ const char* name
+);
+
+/* The generic locale loader. Suitable for all encodings except UTF-8.
+ Uses an XLC_LOCALE configuration file. */
+extern XLCd _XlcGenericLoader(
+ const char* name
+);
+
+/* The UTF-8 locale loader. Suitable for UTF-8 encoding.
+ Uses an XLC_LOCALE configuration file. */
+extern XLCd _XlcUtf8Loader(
+ const char* name
+);
+
+/* The old EUC locale loader. */
+extern XLCd _XlcEucLoader(
+ const char* name
+);
+
+/* The old SJIS locale loader. */
+extern XLCd _XlcSjisLoader(
+ const char* name
+);
+
+/* The old ISO-2022-JP locale loader. */
+extern XLCd _XlcJisLoader(
+ const char* name
+);
+
+extern XLCd _XlcDynamicLoad(
+ const char* name
+);
+
+/* The old dynamic loader. */
+extern XLCd _XlcDynamicLoader(
+ const char* name
+);
+
+extern Bool _XInitDefaultIM(
+ XLCd lcd
+);
+
+extern Bool _XInitDefaultOM(
+ XLCd lcd
+);
+
+extern Bool _XInitDynamicIM(
+ XLCd lcd
+);
+
+extern Bool _XInitDynamicOM(
+ XLCd lcd
+);
+
+_XFUNCPROTOEND
+
+#endif /* !_XP_PRINT_SERVER_ */
+
+#endif /* _XLCINT_H_ */
diff --git a/libX11/src/xlibi18n/lcCT.c b/libX11/src/xlibi18n/lcCT.c
index 2fbe8aa88..a230567f9 100644
--- a/libX11/src/xlibi18n/lcCT.c
+++ b/libX11/src/xlibi18n/lcCT.c
@@ -1,1303 +1,1303 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-/*
- * 2000
- * Modifier: Ivan Pascal The XFree86 Project
- * Modifier: Bruno Haible The XFree86 Project
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include <X11/Xos.h>
-#include <stdio.h>
-
-
-/* ====================== Built-in Character Sets ====================== */
-
-/*
- * Static representation of a character set that can be used in Compound Text.
- */
-typedef struct _CTDataRec {
- const char name[19];
- const char ct_sequence[5]; /* Compound Text encoding, ESC sequence */
-} CTDataRec, *CTData;
-
-static const CTDataRec default_ct_data[] =
-{
- /* */
- /* X11 registry name MIME name ISO-IR ESC sequence */
- /* */
-
- /* Registered character sets with one byte per character */
- { "ISO8859-1:GL", /* US-ASCII 6 */ "\033(B" },
- { "ISO8859-1:GR", /* ISO-8859-1 100 */ "\033-A" },
- { "ISO8859-2:GR", /* ISO-8859-2 101 */ "\033-B" },
- { "ISO8859-3:GR", /* ISO-8859-3 109 */ "\033-C" },
- { "ISO8859-4:GR", /* ISO-8859-4 110 */ "\033-D" },
- { "ISO8859-5:GR", /* ISO-8859-5 144 */ "\033-L" },
- { "ISO8859-6:GR", /* ISO-8859-6 127 */ "\033-G" },
- { "ISO8859-7:GR", /* ISO-8859-7 126 */ "\033-F" },
- { "ISO8859-8:GR", /* ISO-8859-8 138 */ "\033-H" },
- { "ISO8859-9:GR", /* ISO-8859-9 148 */ "\033-M" },
- { "ISO8859-10:GR", /* ISO-8859-10 157 */ "\033-V" },
- { "ISO8859-11:GR", /* ISO-8859-11 166 */ "\033-T" },
- { "ISO8859-13:GR", /* ISO-8859-13 179 */ "\033-Y" },
- { "ISO8859-14:GR", /* ISO-8859-14 199 */ "\033-_" },
- { "ISO8859-15:GR", /* ISO-8859-15 203 */ "\033-b" },
- { "ISO8859-16:GR", /* ISO-8859-16 226 */ "\033-f" },
- { "JISX0201.1976-0:GL", /* ISO-646-JP 14 */ "\033(J" },
- { "JISX0201.1976-0:GR", "\033)I" },
-#if 0
- { "TIS620-0:GR", /* TIS-620 166 */ "\033-T" },
-#endif
-
- /* Registered character sets with two byte per character */
- { "GB2312.1980-0:GL", /* GB_2312-80 58 */ "\033$(A" },
- { "GB2312.1980-0:GR", /* GB_2312-80 58 */ "\033$)A" },
- { "JISX0208.1983-0:GL", /* JIS_X0208-1983 87 */ "\033$(B" },
- { "JISX0208.1983-0:GR", /* JIS_X0208-1983 87 */ "\033$)B" },
- { "JISX0208.1990-0:GL", /* JIS_X0208-1990 168 */ "\033$(B" },
- { "JISX0208.1990-0:GR", /* JIS_X0208-1990 168 */ "\033$)B" },
- { "JISX0212.1990-0:GL", /* JIS_X0212-1990 159 */ "\033$(D" },
- { "JISX0212.1990-0:GR", /* JIS_X0212-1990 159 */ "\033$)D" },
- { "KSC5601.1987-0:GL", /* KS_C_5601-1987 149 */ "\033$(C" },
- { "KSC5601.1987-0:GR", /* KS_C_5601-1987 149 */ "\033$)C" },
- { "CNS11643.1986-1:GL", /* CNS 11643-1992 pl.1 171 */ "\033$(G" },
- { "CNS11643.1986-1:GR", /* CNS 11643-1992 pl.1 171 */ "\033$)G" },
- { "CNS11643.1986-2:GL", /* CNS 11643-1992 pl.2 172 */ "\033$(H" },
- { "CNS11643.1986-2:GR", /* CNS 11643-1992 pl.2 172 */ "\033$)H" },
- { "CNS11643.1992-3:GL", /* CNS 11643-1992 pl.3 183 */ "\033$(I" },
- { "CNS11643.1992-3:GR", /* CNS 11643-1992 pl.3 183 */ "\033$)I" },
- { "CNS11643.1992-4:GL", /* CNS 11643-1992 pl.4 184 */ "\033$(J" },
- { "CNS11643.1992-4:GR", /* CNS 11643-1992 pl.4 184 */ "\033$)J" },
- { "CNS11643.1992-5:GL", /* CNS 11643-1992 pl.5 185 */ "\033$(K" },
- { "CNS11643.1992-5:GR", /* CNS 11643-1992 pl.5 185 */ "\033$)K" },
- { "CNS11643.1992-6:GL", /* CNS 11643-1992 pl.6 186 */ "\033$(L" },
- { "CNS11643.1992-6:GR", /* CNS 11643-1992 pl.6 186 */ "\033$)L" },
- { "CNS11643.1992-7:GL", /* CNS 11643-1992 pl.7 187 */ "\033$(M" },
- { "CNS11643.1992-7:GR", /* CNS 11643-1992 pl.7 187 */ "\033$)M" },
-
- /* Registered encodings with a varying number of bytes per character */
- { "ISO10646-1", /* UTF-8 196 */ "\033%G" },
-
- /* Encodings without ISO-IR assigned escape sequence must be
- defined in XLC_LOCALE files, using "\033%/1" or "\033%/2". */
-
- /* Backward compatibility with XFree86 3.x */
-#if 1
- { "ISO8859-14:GR", "\033%/1" },
- { "ISO8859-15:GR", "\033%/1" },
-#endif
- /* For use by utf8 -> ctext */
- { "BIG5-0:GLGR", "\033%/2"},
- { "BIG5HKSCS-0:GLGR", "\033%/2"},
- { "GBK-0:GLGR", "\033%/2"},
- /* used by Emacs, but not backed by ISO-IR */
- { "BIG5-E0:GL", "\033$(0" },
- { "BIG5-E0:GR", "\033$)0" },
- { "BIG5-E1:GL", "\033$(1" },
- { "BIG5-E1:GR", "\033$)1" },
-
-};
-
-/* We represent UTF-8 as an XlcGLGR charset, not in extended segments. */
-#define UTF8_IN_EXTSEQ 0
-
-/* ======================= Parsing ESC Sequences ======================= */
-
-#define XctC0 0x0000
-#define XctHT 0x0009
-#define XctNL 0x000a
-#define XctESC 0x001b
-#define XctGL 0x0020
-#define XctC1 0x0080
-#define XctCSI 0x009b
-#define XctGR 0x00a0
-#define XctSTX 0x0002
-
-#define XctCntrlFunc 0x0023
-#define XctMB 0x0024
-#define XctOtherCoding 0x0025
-#define XctGL94 0x0028
-#define XctGR94 0x0029
-#define XctGR96 0x002d
-#define XctNonStandard 0x002f
-#define XctIgnoreExt 0x0030
-#define XctNotIgnoreExt 0x0031
-#define XctLeftToRight 0x0031
-#define XctRightToLeft 0x0032
-#define XctDirection 0x005d
-#define XctDirectionEnd 0x005d
-
-#define XctGL94MB 0x2428
-#define XctGR94MB 0x2429
-#define XctExtSeg 0x252f
-#define XctReturn 0x2540
-
-/*
- * Parses the header of a Compound Text segment, i.e. the charset designator.
- * The string starts at *text and has *length bytes.
- * Return value is one of:
- * 0 (no valid charset designator),
- * XctGL94, XctGR94, XctGR96, XctGL94MB, XctGR94MB,
- * XctLeftToRight, XctRightToLeft, XctDirectionEnd,
- * XctExtSeg, XctOtherCoding, XctReturn, XctIgnoreExt, XctNotIgnoreExt.
- * If the return value is not 0, *text is incremented and *length decremented,
- * to point past the charset designator. If the return value is one of
- * XctGL94, XctGR94, XctGR96, XctGL94MB, XctGR94MB,
- * XctExtSeg, XctOtherCoding, XctIgnoreExt, XctNotIgnoreExt,
- * *final_byte is set to the "final byte" of the charset designator.
- */
-static unsigned int
-_XlcParseCT(
- const char **text,
- int *length,
- unsigned char *final_byte)
-{
- unsigned int ret = 0;
- unsigned char ch;
- const unsigned char *str = (const unsigned char *) *text;
-
- *final_byte = 0;
-
- if (*length < 1)
- return 0;
- switch (ch = *str++) {
- case XctESC:
- if (*length < 2)
- return 0;
- switch (ch = *str++) {
- case XctOtherCoding: /* % */
- if (*length < 3)
- return 0;
- ch = *str++;
- if (ch == XctNonStandard) { /* / */
- if (*length < 4)
- return 0;
- ret = XctExtSeg;
- ch = *str++;
- } else if (ch == '@') {
- ret = XctReturn;
- } else {
- ret = XctOtherCoding;
- }
- *final_byte = ch;
- break;
-
- case XctCntrlFunc: /* # */
- if (*length < 4)
- return 0;
- *final_byte = *str++;
- switch (*str++) {
- case XctIgnoreExt: /* 0 */
- ret = XctIgnoreExt;
- break;
- case XctNotIgnoreExt: /* 1 */
- ret = XctNotIgnoreExt;
- break;
- default:
- ret = 0;
- break;
- }
- break;
-
- case XctMB: /* $ */
- if (*length < 4)
- return 0;
- ch = *str++;
- switch (ch) {
- case XctGL94: /* ( */
- ret = XctGL94MB;
- break;
- case XctGR94: /* ) */
- ret = XctGR94MB;
- break;
- default:
- ret = 0;
- break;
- }
- *final_byte = *str++;
- break;
-
- case XctGL94: /* ( */
- if (*length < 3)
- return 0;
- ret = XctGL94;
- *final_byte = *str++;
- break;
- case XctGR94: /* ) */
- if (*length < 3)
- return 0;
- ret = XctGR94;
- *final_byte = *str++;
- break;
- case XctGR96: /* - */
- if (*length < 3)
- return 0;
- ret = XctGR96;
- *final_byte = *str++;
- break;
- }
- break;
- case XctCSI:
- /* direction */
- if (*length < 2)
- return 0;
- switch (*str++) {
- case XctLeftToRight:
- if (*length < 3)
- return 0;
- if (*str++ == XctDirection)
- ret = XctLeftToRight;
- break;
- case XctRightToLeft:
- if (*length < 3)
- return 0;
- if (*str++ == XctDirection)
- ret = XctRightToLeft;
- break;
- case XctDirectionEnd:
- ret = XctDirectionEnd;
- break;
- }
- break;
- }
-
- if (ret) {
- *length -= (const char *) str - *text;
- *text = (const char *) str;
- }
- return ret;
-}
-
-/*
- * Fills into a freshly created XlcCharSet the fields that can be inferred
- * from the ESC sequence. These are side, char_size, set_size.
- * Returns True if the charset can be used with Compound Text.
- *
- * Used by _XlcCreateDefaultCharSet.
- */
-Bool
-_XlcParseCharSet(
- XlcCharSet charset)
-{
- unsigned int type;
- unsigned char final_byte;
- const char *ptr = charset->ct_sequence;
- int length;
- int char_size;
-
- if (*ptr == '\0')
- return False;
-
- length = strlen(ptr);
-
- type = _XlcParseCT(&ptr, &length, &final_byte);
-
- /* Check for validity and determine char_size.
- char_size = 0 means varying number of bytes per character. */
- switch (type) {
- case XctGL94:
- case XctGR94:
- case XctGR96:
- char_size = 1;
- break;
- case XctGL94MB:
- case XctGR94MB:
- char_size = (final_byte < 0x60 ? 2 : final_byte < 0x70 ? 3 : 4);
- break;
- case XctExtSeg:
- char_size = final_byte - '0';
- if (!(char_size >= 0 && char_size <= 4))
- return False;
- break;
- case XctOtherCoding:
- char_size = 0;
- break;
- default:
- return False;
- }
-
- charset->char_size = char_size;
-
- /* Fill in other values. */
- switch (type) {
- case XctGL94:
- case XctGL94MB:
- charset->side = XlcGL;
- charset->set_size = 94;
- break;
- case XctGR94:
- case XctGR94MB:
- charset->side = XlcGR;
- charset->set_size = 94;
- break;
- case XctGR96:
- charset->side = XlcGR;
- charset->set_size = 96;
- break;
- case XctExtSeg:
- case XctOtherCoding:
- charset->side = XlcGLGR;
- charset->set_size = 0;
- break;
- }
- return True;
-}
-
-
-/* =============== Management of the List of Character Sets =============== */
-
-/*
- * Representation of a character set that can be used for Compound Text,
- * at run time.
- * Note: This information is not contained in the XlcCharSet, because
- * multiple ESC sequences may be used for the same XlcCharSet.
- */
-typedef struct _CTInfoRec {
- XlcCharSet charset;
- const char *ct_sequence; /* Compound Text ESC sequence */
- unsigned int type;
- unsigned char final_byte;
- /* If type == XctExtSeg: */
- const char *ext_segment; /* extended segment name, then '\002' */
- int ext_segment_len; /* length of above, including final '\002' */
-
- struct _CTInfoRec *next;
-} CTInfoRec, *CTInfo;
-
-/*
- * List of character sets that can be used for Compound Text,
- * Includes all that are listed in default_ct_data, but more can be added
- * at runtime through _XlcAddCT.
- */
-static CTInfo ct_list = NULL;
-static CTInfo ct_list_end = NULL;
-
-/*
- * Returns a Compound Text info record for an ESC sequence.
- * The first part of the ESC sequence has already been parsed into 'type'
- * and 'final_byte'. The remainder starts at 'text', at least 'text_len'
- * bytes (only used if type == XctExtSeg).
- */
-static CTInfo
-_XlcGetCTInfo(
- unsigned int type,
- unsigned char final_byte,
- const char *text,
- int text_len)
-{
- CTInfo ct_info;
-
- for (ct_info = ct_list; ct_info; ct_info = ct_info->next)
- if (ct_info->type == type
- && ct_info->final_byte == final_byte
- && (type != XctExtSeg
- || (text_len >= ct_info->ext_segment_len
- && memcmp(text, ct_info->ext_segment,
- ct_info->ext_segment_len) == 0)))
- return ct_info;
-
- return (CTInfo) NULL;
-}
-
-/* Returns the Compound Text info for a given XlcCharSet.
- Returns NULL if none is found. */
-static CTInfo
-_XlcGetCTInfoFromCharSet(
- XlcCharSet charset)
-{
- CTInfo ct_info;
-
- for (ct_info = ct_list; ct_info; ct_info = ct_info->next)
- if (ct_info->charset == charset)
- return ct_info;
-
- return (CTInfo) NULL;
-}
-
-/* Creates a new XlcCharSet, given its name (including side suffix) and
- Compound Text ESC sequence (normally at most 4 bytes), and makes it
- eligible for Compound Text processing. */
-XlcCharSet
-_XlcAddCT(
- const char *name,
- const char *ct_sequence)
-{
- CTInfo ct_info, existing_info;
- XlcCharSet charset;
- const char *ct_ptr;
- int length;
- unsigned int type;
- unsigned char final_byte;
-
- charset = _XlcGetCharSet(name);
- if (charset != NULL) {
- /* Even if the charset already exists, it is OK to register a second
- Compound Text sequence for it. */
- } else {
- /* Attempt to create the charset. */
- charset = _XlcCreateDefaultCharSet(name, ct_sequence);
- if (charset == NULL)
- return (XlcCharSet) NULL;
- _XlcAddCharSet(charset);
- }
-
- /* Allocate a CTinfo record. */
- length = strlen(ct_sequence);
- ct_info = (CTInfo) Xmalloc(sizeof(CTInfoRec) + length+1);
- if (ct_info == NULL)
- return charset;
-
- ct_info->charset = charset;
- ct_info->ct_sequence = strcpy((char *) (ct_info + 1), ct_sequence);
-
- /* Parse the Compound Text sequence. */
- ct_ptr = ct_sequence;
- type = _XlcParseCT(&ct_ptr, &length, &final_byte);
-
- ct_info->type = type;
- ct_info->final_byte = final_byte;
-
- switch (type) {
- case XctGL94:
- case XctGR94:
- case XctGR96:
- case XctGL94MB:
- case XctGR94MB:
- case XctOtherCoding:
- ct_info->ext_segment = NULL;
- ct_info->ext_segment_len = 0;
- break;
- case XctExtSeg: {
- /* By convention, the extended segment name is the encoding_name
- in lowercase. */
- const char *q = charset->encoding_name;
- int n = strlen(q);
- char *p;
-
- /* Ensure ct_info->ext_segment_len <= 0x3fff - 6. */
- if (n > 0x3fff - 6 - 1) {
- Xfree(ct_info);
- return charset;
- }
- p = (char *) Xmalloc(n+1);
- if (p == NULL) {
- Xfree(ct_info);
- return charset;
- }
- ct_info->ext_segment = p;
- ct_info->ext_segment_len = n+1;
- for ( ; n > 0; p++, q++, n--)
- *p = (*q >= 'A' && *q <= 'Z' ? *q - 'A' + 'a' : *q);
- *p = XctSTX;
- break;
- }
- default:
- Xfree(ct_info);
- return (XlcCharSet) NULL;
- }
-
- /* Insert it into the list, if not already present. */
- existing_info =
- _XlcGetCTInfo(type, ct_info->final_byte,
- ct_info->ext_segment, ct_info->ext_segment_len);
- if (existing_info == NULL) {
- /* Insert it at the end. If there are duplicates CTinfo entries
- for the same XlcCharSet, we want the first (standard) one to
- override the second (user defined) one. */
- ct_info->next = NULL;
- if (ct_list_end)
- ct_list_end->next = ct_info;
- else
- ct_list = ct_info;
- ct_list_end = ct_info;
- } else {
- if (existing_info->charset != charset
- /* We have a conflict, with one exception: JISX0208.1983-0 and
- JISX0208.1990-0 are the same for all practical purposes. */
- && !(strncmp(existing_info->charset->name, "JISX0208", 8) == 0
- && strncmp(charset->name, "JISX0208", 8) == 0)) {
- fprintf(stderr,
- "Xlib: charsets %s and %s have the same CT sequence\n",
- charset->name, existing_info->charset->name);
- if (strcmp(charset->ct_sequence, ct_sequence) == 0)
- charset->ct_sequence = "";
- }
- Xfree(ct_info);
- }
-
- return charset;
-}
-
-
-/* ========== Converters String <--> CharSet <--> Compound Text ========== */
-
-/*
- * Structure representing the parse state of a Compound Text string.
- */
-typedef struct _StateRec {
- XlcCharSet charset; /* The charset of the current segment */
- XlcCharSet GL_charset; /* The charset responsible for 0x00..0x7F */
- XlcCharSet GR_charset; /* The charset responsible for 0x80..0xFF */
- XlcCharSet Other_charset; /* != NULL if currently in an other segment */
- int ext_seg_left; /* > 0 if currently in an extended segment */
-} StateRec, *State;
-
-
-/* Subroutine for parsing an ESC sequence. */
-
-typedef enum {
- resOK, /* Charset saved in 'state', sequence skipped */
- resNotInList, /* Charset not found, sequence skipped */
- resNotCTSeq /* EscSeq not recognized, pointers not changed */
-} CheckResult;
-
-static CheckResult
-_XlcCheckCTSequence(
- State state,
- const char **ctext,
- int *ctext_len)
-{
- XlcCharSet charset;
- CTInfo ct_info;
- const char *tmp_ctext = *ctext;
- int tmp_ctext_len = *ctext_len;
- unsigned int type;
- unsigned char final_byte;
- int ext_seg_left = 0;
-
- /* Check for validity. */
- type = _XlcParseCT(&tmp_ctext, &tmp_ctext_len, &final_byte);
-
- switch (type) {
- case XctGL94:
- case XctGR94:
- case XctGR96:
- case XctGL94MB:
- case XctGR94MB:
- case XctOtherCoding:
- *ctext = tmp_ctext;
- *ctext_len = tmp_ctext_len;
- break;
- case XctReturn:
- *ctext = tmp_ctext;
- *ctext_len = tmp_ctext_len;
- state->Other_charset = NULL;
- return resOK;
- case XctExtSeg:
- if (tmp_ctext_len > 2
- && (tmp_ctext[0] & 0x80) && (tmp_ctext[0] & 0x80)) {
- unsigned int msb = tmp_ctext[0] & 0x7f;
- unsigned int lsb = tmp_ctext[1] & 0x7f;
- ext_seg_left = (msb << 7) + lsb;
- if (ext_seg_left <= tmp_ctext_len - 2) {
- *ctext = tmp_ctext + 2;
- *ctext_len = tmp_ctext_len - 2;
- break;
- }
- }
- return resNotCTSeq;
- default:
- return resNotCTSeq;
- }
-
- ct_info = _XlcGetCTInfo(type, final_byte, *ctext, ext_seg_left);
-
- if (ct_info) {
- charset = ct_info->charset;
- state->ext_seg_left = ext_seg_left;
- if (type == XctExtSeg) {
- state->charset = charset;
- /* Skip past the extended segment name and the separator. */
- *ctext += ct_info->ext_segment_len;
- *ctext_len -= ct_info->ext_segment_len;
- state->ext_seg_left -= ct_info->ext_segment_len;
- } else if (type == XctOtherCoding) {
- state->Other_charset = charset;
- } else {
- if (charset->side == XlcGL) {
- state->GL_charset = charset;
- } else if (charset->side == XlcGR) {
- state->GR_charset = charset;
- } else {
- state->GL_charset = charset;
- state->GR_charset = charset;
- }
- }
- return resOK;
- } else {
- state->ext_seg_left = 0;
- if (type == XctExtSeg) {
- /* Skip the entire extended segment. */
- *ctext += ext_seg_left;
- *ctext_len -= ext_seg_left;
- }
- return resNotInList;
- }
-}
-
-static void
-init_state(
- XlcConv conv)
-{
- State state = (State) conv->state;
- static XlcCharSet default_GL_charset = NULL;
- static XlcCharSet default_GR_charset = NULL;
-
- if (default_GL_charset == NULL) {
- default_GL_charset = _XlcGetCharSet("ISO8859-1:GL");
- default_GR_charset = _XlcGetCharSet("ISO8859-1:GR");
- }
-
- /* The initial state is ISO-8859-1 on both sides. */
- state->GL_charset = state->charset = default_GL_charset;
- state->GR_charset = default_GR_charset;
-
- state->Other_charset = NULL;
-
- state->ext_seg_left = 0;
-}
-
-/* from XlcNCompoundText to XlcNCharSet */
-
-static int
-cttocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- State state = (State) conv->state;
- XlcCharSet charset = NULL;
- const char *ctptr;
- char *bufptr;
- int ctext_len, buf_len;
- int unconv_num = 0;
-
- ctptr = (const char *) *from;
- bufptr = (char *) *to;
- ctext_len = *from_left;
- buf_len = *to_left;
-
- while (ctext_len > 0 && buf_len > 0) {
- if (state->ext_seg_left == 0) {
- /* Not in the middle of an extended segment; look at next byte. */
- unsigned char ch = *ctptr;
- XlcCharSet ch_charset;
-
- if (ch == XctESC) {
- CheckResult ret =
- _XlcCheckCTSequence(state, &ctptr, &ctext_len);
- if (ret == resOK)
- /* state has been modified. */
- continue;
- if (ret == resNotInList) {
- /* XXX Just continue with previous charset. */
- unconv_num++;
- continue;
- }
- } else if (ch == XctCSI) {
- /* XXX Simply ignore the XctLeftToRight, XctRightToLeft,
- XctDirectionEnd sequences for the moment. */
- unsigned char dummy;
- if (_XlcParseCT(&ctptr, &ctext_len, &dummy)) {
- unconv_num++;
- continue;
- }
- }
-
- /* Find the charset which is responsible for this byte. */
- ch_charset = (state->Other_charset != NULL ? state->Other_charset :
- (ch & 0x80 ? state->GR_charset : state->GL_charset));
-
- /* Set the charset of this run, or continue the current run,
- or stop the current run. */
- if (charset) {
- if (charset != ch_charset)
- break;
- } else {
- state->charset = charset = ch_charset;
- }
-
- /* We don't want to split a character into multiple pieces. */
- if (buf_len < 6) {
- if (charset->char_size > 0) {
- if (buf_len < charset->char_size)
- break;
- } else {
- /* char_size == 0 is tricky. The code here is good only
- for valid UTF-8 input. */
- if (charset->ct_sequence[0] == XctESC
- && charset->ct_sequence[1] == XctOtherCoding
- && charset->ct_sequence[2] == 'G') {
- int char_size = (ch < 0xc0 ? 1 :
- ch < 0xe0 ? 2 :
- ch < 0xf0 ? 3 :
- ch < 0xf8 ? 4 :
- ch < 0xfc ? 5 :
- 6);
- if (buf_len < char_size)
- break;
- }
- }
- }
-
- *bufptr++ = *ctptr++;
- ctext_len--;
- buf_len--;
- } else {
- /* Copy as much as possible from the current extended segment
- to the buffer. */
- int char_size;
-
- /* Set the charset of this run, or continue the current run,
- or stop the current run. */
- if (charset) {
- if (charset != state->charset)
- break;
- } else {
- charset = state->charset;
- }
-
- char_size = charset->char_size;
-
- if (state->ext_seg_left <= buf_len || char_size > 0) {
- int n = (state->ext_seg_left <= buf_len
- ? state->ext_seg_left
- : (buf_len / char_size) * char_size);
- memcpy(bufptr, ctptr, n);
- ctptr += n; ctext_len -= n;
- bufptr += n; buf_len -= n;
- state->ext_seg_left -= n;
- } else {
-#if UTF8_IN_EXTSEQ
- /* char_size == 0 is tricky. The code here is good only
- for valid UTF-8 input. */
- if (strcmp(charset->name, "ISO10646-1") == 0) {
- unsigned char ch = *ctptr;
- int char_size = (ch < 0xc0 ? 1 :
- ch < 0xe0 ? 2 :
- ch < 0xf0 ? 3 :
- ch < 0xf8 ? 4 :
- ch < 0xfc ? 5 :
- 6);
- int i;
- if (buf_len < char_size)
- break;
- /* A small loop is faster than calling memcpy. */
- for (i = char_size; i > 0; i--)
- *bufptr++ = *ctptr++;
- ctext_len -= char_size;
- buf_len -= char_size;
- state->ext_seg_left -= char_size;
- } else
-#endif
- {
- /* Here ctext_len >= state->ext_seg_left > buf_len.
- We may be splitting a character into multiple pieces.
- Oh well. */
- int n = buf_len;
- memcpy(bufptr, ctptr, n);
- ctptr += n; ctext_len -= n;
- bufptr += n; buf_len -= n;
- state->ext_seg_left -= n;
- }
- }
- }
- }
-
- /* 'charset' is the charset for the current run. In some cases,
- 'state->charset' contains the charset for the next run. Therefore,
- return 'charset'.
- 'charset' may still be NULL only if no output was produced. */
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = charset;
-
- *from_left -= ctptr - *((const char **) from);
- *from = (XPointer) ctptr;
-
- *to_left -= bufptr - *((char **) to);
- *to = (XPointer) bufptr;
-
- return unconv_num;
-}
-
-/* from XlcNCharSet to XlcNCompoundText */
-
-static int
-cstoct(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- State state = (State) conv->state;
- XlcSide side;
- unsigned char min_ch = 0, max_ch = 0;
- int length, unconv_num;
- CTInfo ct_info;
- XlcCharSet charset;
- const char *csptr;
- char *ctptr;
- int csstr_len, ct_len;
- char *ext_segment_start;
- int char_size;
-
- /* One argument is required, of type XlcCharSet. */
- if (num_args < 1)
- return -1;
-
- csptr = *((const char **) from);
- ctptr = *((char **) to);
- csstr_len = *from_left;
- ct_len = *to_left;
-
- charset = (XlcCharSet) args[0];
-
- ct_info = _XlcGetCTInfoFromCharSet(charset);
- if (ct_info == NULL)
- return -1;
-
- side = charset->side;
- length = strlen(ct_info->ct_sequence);
-
- ext_segment_start = NULL;
-
- if (ct_info->type == XctOtherCoding) {
- /* Output the Escape sequence for switching to the charset, and
- reserve room now for the XctReturn sequence at the end. */
- if (ct_len < length + 3)
- return -1;
-
- memcpy(ctptr, ct_info->ct_sequence, length);
- ctptr += length;
- ct_len -= length + 3;
- } else
- /* Test whether the charset is already active. */
- if (((side == XlcGR || side == XlcGLGR)
- && charset != state->GR_charset)
- || ((side == XlcGL || side == XlcGLGR)
- && charset != state->GL_charset)) {
-
- /* Output the Escape sequence for switching to the charset. */
- if (ct_info->type == XctExtSeg) {
- if (ct_len < length + 2 + ct_info->ext_segment_len)
- return -1;
-
- memcpy(ctptr, ct_info->ct_sequence, length);
- ctptr += length;
- ct_len -= length;
-
- ctptr += 2;
- ct_len -= 2;
- ext_segment_start = ctptr;
-
- /* The size of an extended segment must fit in 14 bits. */
- if (ct_len > 0x3fff)
- ct_len = 0x3fff;
-
- memcpy(ctptr, ct_info->ext_segment, ct_info->ext_segment_len);
- ctptr += ct_info->ext_segment_len;
- ct_len -= ct_info->ext_segment_len;
- } else {
- if (ct_len < length)
- return -1;
-
- memcpy(ctptr, ct_info->ct_sequence, length);
- ctptr += length;
- ct_len -= length;
- }
- }
-
- /* If the charset has side GL or GR, prepare remapping the characters
- to the correct side. */
- if (charset->set_size) {
- min_ch = 0x20;
- max_ch = 0x7f;
- if (charset->set_size == 94) {
- max_ch--;
- if (charset->char_size > 1 || side == XlcGR)
- min_ch++;
- }
- }
-
- /* Actually copy the contents. */
- unconv_num = 0;
- char_size = charset->char_size;
- if (char_size == 1) {
- while (csstr_len > 0 && ct_len > 0) {
- if (charset->set_size) {
- /* The CompoundText specification says that the only
- control characters allowed are 0x09, 0x0a, 0x1b, 0x9b.
- Therefore here we eliminate other control characters. */
- unsigned char ch = *((unsigned char *) csptr) & 0x7f;
- if (!((ch >= min_ch && ch <= max_ch)
- || (side == XlcGL
- && (ch == 0x00 || ch == 0x09 || ch == 0x0a))
- || ((side == XlcGL || side == XlcGR)
- && (ch == 0x1b)))) {
- csptr++;
- csstr_len--;
- unconv_num++;
- continue;
- }
- }
-
- if (side == XlcGL)
- *ctptr++ = *csptr++ & 0x7f;
- else if (side == XlcGR)
- *ctptr++ = *csptr++ | 0x80;
- else
- *ctptr++ = *csptr++;
- csstr_len--;
- ct_len--;
- }
- } else if (char_size > 1) {
- while (csstr_len >= char_size && ct_len >= char_size) {
- if (side == XlcGL) {
- int i;
- for (i = char_size; i > 0; i--)
- *ctptr++ = *csptr++ & 0x7f;
- } else if (side == XlcGR) {
- int i;
- for (i = char_size; i > 0; i--)
- *ctptr++ = *csptr++ | 0x80;
- } else {
- int i;
- for (i = char_size; i > 0; i--)
- *ctptr++ = *csptr++;
- }
- csstr_len -= char_size;
- ct_len -= char_size;
- }
- } else {
- /* char_size = 0. The code here is good only for valid UTF-8 input. */
- if ((charset->ct_sequence[0] == XctESC
- && charset->ct_sequence[1] == XctOtherCoding
- && charset->ct_sequence[2] == 'G')
-#if UTF8_IN_EXTSEQ
- || strcmp(charset->name, "ISO10646-1") == 0
-#endif
- ) {
- while (csstr_len > 0 && ct_len > 0) {
- unsigned char ch = * (unsigned char *) csptr;
- int char_size = (ch < 0xc0 ? 1 :
- ch < 0xe0 ? 2 :
- ch < 0xf0 ? 3 :
- ch < 0xf8 ? 4 :
- ch < 0xfc ? 5 :
- 6);
- int i;
- if (!(csstr_len >= char_size && ct_len >= char_size))
- break;
- for (i = char_size; i > 0; i--)
- *ctptr++ = *csptr++;
- csstr_len -= char_size;
- ct_len -= char_size;
- }
- } else {
- while (csstr_len > 0 && ct_len > 0) {
- *ctptr++ = *csptr++;
- csstr_len--;
- ct_len--;
- }
- }
- }
-
- if (ct_info->type == XctOtherCoding) {
- /* Terminate with an XctReturn sequence. */
- ctptr[0] = XctESC;
- ctptr[1] = XctOtherCoding;
- ctptr[2] = '@';
- ctptr += 3;
- } else if (ext_segment_start != NULL) {
- /* Backpatch the extended segment's length. */
- int ext_segment_length = ctptr - ext_segment_start;
- *(ext_segment_start - 2) = (ext_segment_length >> 7) | 0x80;
- *(ext_segment_start - 1) = (ext_segment_length & 0x7f) | 0x80;
- } else {
- if (side == XlcGR || side == XlcGLGR)
- state->GR_charset = charset;
- if (side == XlcGL || side == XlcGLGR)
- state->GL_charset = charset;
- }
-
- *from_left -= csptr - *((const char **) from);
- *from = (XPointer) csptr;
-
- *to_left -= ctptr - *((char **) to);
- *to = (XPointer) ctptr;
-
- return 0;
-}
-
-/* from XlcNString to XlcNCharSet */
-
-static int
-strtocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- State state = (State) conv->state;
- const char *src;
- char *dst;
- unsigned char side;
- int length;
-
- src = (const char *) *from;
- dst = (char *) *to;
-
- length = min(*from_left, *to_left);
- side = *((unsigned char *) src) & 0x80;
-
- while (side == (*((unsigned char *) src) & 0x80) && length-- > 0)
- *dst++ = *src++;
-
- *from_left -= src - (const char *) *from;
- *from = (XPointer) src;
- *to_left -= dst - (char *) *to;
- *to = (XPointer) dst;
-
- if (num_args > 0)
- *((XlcCharSet *)args[0]) = (side ? state->GR_charset : state->GL_charset);
-
- return 0;
-}
-
-/* from XlcNCharSet to XlcNString */
-
-static int
-cstostr(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- State state = (State) conv->state;
- const char *csptr;
- char *string_ptr;
- int csstr_len, str_len;
- unsigned char ch;
- int unconv_num = 0;
-
- /* This converter can only convert from ISO8859-1:GL and ISO8859-1:GR. */
- if (num_args < 1
- || !((XlcCharSet) args[0] == state->GL_charset
- || (XlcCharSet) args[0] == state->GR_charset))
- return -1;
-
- csptr = *((const char **) from);
- string_ptr = *((char **) to);
- csstr_len = *from_left;
- str_len = *to_left;
-
- while (csstr_len > 0 && str_len > 0) {
- ch = *((unsigned char *) csptr++);
- csstr_len--;
- /* Citing ICCCM: "STRING as a type specifies the ISO Latin-1 character
- set plus the control characters TAB and NEWLINE." */
- if ((ch < 0x20 && ch != 0x00 && ch != 0x09 && ch != 0x0a)
- || (ch >= 0x7f && ch < 0xa0)) {
- unconv_num++;
- continue;
- }
- *((unsigned char *) string_ptr++) = ch;
- str_len--;
- }
-
- *from_left -= csptr - *((const char **) from);
- *from = (XPointer) csptr;
-
- *to_left -= string_ptr - *((char **) to);
- *to = (XPointer) string_ptr;
-
- return unconv_num;
-}
-
-
-static XlcConv
-create_conv(
- XlcConvMethods methods)
-{
- XlcConv conv;
-
- conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + sizeof(StateRec));
- if (conv == NULL)
- return (XlcConv) NULL;
-
- conv->state = (XPointer) &conv[1];
-
- conv->methods = methods;
-
- init_state(conv);
-
- return conv;
-}
-
-static void
-close_converter(
- XlcConv conv)
-{
- /* conv->state is allocated together with conv, free both at once. */
- Xfree((char *) conv);
-}
-
-
-static XlcConvMethodsRec cttocs_methods = {
- close_converter,
- cttocs,
- init_state
-};
-
-static XlcConv
-open_cttocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(&cttocs_methods);
-}
-
-
-static XlcConvMethodsRec cstoct_methods = {
- close_converter,
- cstoct,
- init_state
-};
-
-static XlcConv
-open_cstoct(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(&cstoct_methods);
-}
-
-
-static XlcConvMethodsRec strtocs_methods = {
- close_converter,
- strtocs,
- init_state
-};
-
-static XlcConv
-open_strtocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(&strtocs_methods);
-}
-
-
-static XlcConvMethodsRec cstostr_methods = {
- close_converter,
- cstostr,
- init_state
-};
-
-static XlcConv
-open_cstostr(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(&cstostr_methods);
-}
-
-
-/* =========================== Initialization =========================== */
-
-Bool
-_XlcInitCTInfo(void)
-{
- if (ct_list == NULL) {
- const CTDataRec *ct_data;
- int num;
- XlcCharSet charset;
-
- /* Initialize ct_list. */
-
- num = sizeof(default_ct_data) / sizeof(CTDataRec);
- for (ct_data = default_ct_data; num > 0; ct_data++, num--) {
- charset = _XlcAddCT(ct_data->name, ct_data->ct_sequence);
- if (charset == NULL)
- continue;
- if (strncmp(charset->ct_sequence, "\x1b\x25\x2f", 3) != 0)
- charset->source = CSsrcStd;
- else
- charset->source = CSsrcXLC;
- }
-
- /* Register CompoundText and CharSet converters. */
-
- _XlcSetConverter((XLCd) NULL, XlcNCompoundText,
- (XLCd) NULL, XlcNCharSet,
- open_cttocs);
- _XlcSetConverter((XLCd) NULL, XlcNString,
- (XLCd) NULL, XlcNCharSet,
- open_strtocs);
-
- _XlcSetConverter((XLCd) NULL, XlcNCharSet,
- (XLCd) NULL, XlcNCompoundText,
- open_cstoct);
- _XlcSetConverter((XLCd) NULL, XlcNCharSet,
- (XLCd) NULL, XlcNString,
- open_cstostr);
- }
-
- return True;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+/*
+ * 2000
+ * Modifier: Ivan Pascal The XFree86 Project
+ * Modifier: Bruno Haible The XFree86 Project
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include <X11/Xos.h>
+#include <stdio.h>
+
+
+/* ====================== Built-in Character Sets ====================== */
+
+/*
+ * Static representation of a character set that can be used in Compound Text.
+ */
+typedef struct _CTDataRec {
+ const char name[19];
+ const char ct_sequence[5]; /* Compound Text encoding, ESC sequence */
+} CTDataRec, *CTData;
+
+static const CTDataRec default_ct_data[] =
+{
+ /* */
+ /* X11 registry name MIME name ISO-IR ESC sequence */
+ /* */
+
+ /* Registered character sets with one byte per character */
+ { "ISO8859-1:GL", /* US-ASCII 6 */ "\033(B" },
+ { "ISO8859-1:GR", /* ISO-8859-1 100 */ "\033-A" },
+ { "ISO8859-2:GR", /* ISO-8859-2 101 */ "\033-B" },
+ { "ISO8859-3:GR", /* ISO-8859-3 109 */ "\033-C" },
+ { "ISO8859-4:GR", /* ISO-8859-4 110 */ "\033-D" },
+ { "ISO8859-5:GR", /* ISO-8859-5 144 */ "\033-L" },
+ { "ISO8859-6:GR", /* ISO-8859-6 127 */ "\033-G" },
+ { "ISO8859-7:GR", /* ISO-8859-7 126 */ "\033-F" },
+ { "ISO8859-8:GR", /* ISO-8859-8 138 */ "\033-H" },
+ { "ISO8859-9:GR", /* ISO-8859-9 148 */ "\033-M" },
+ { "ISO8859-10:GR", /* ISO-8859-10 157 */ "\033-V" },
+ { "ISO8859-11:GR", /* ISO-8859-11 166 */ "\033-T" },
+ { "ISO8859-13:GR", /* ISO-8859-13 179 */ "\033-Y" },
+ { "ISO8859-14:GR", /* ISO-8859-14 199 */ "\033-_" },
+ { "ISO8859-15:GR", /* ISO-8859-15 203 */ "\033-b" },
+ { "ISO8859-16:GR", /* ISO-8859-16 226 */ "\033-f" },
+ { "JISX0201.1976-0:GL", /* ISO-646-JP 14 */ "\033(J" },
+ { "JISX0201.1976-0:GR", "\033)I" },
+#if 0
+ { "TIS620-0:GR", /* TIS-620 166 */ "\033-T" },
+#endif
+
+ /* Registered character sets with two byte per character */
+ { "GB2312.1980-0:GL", /* GB_2312-80 58 */ "\033$(A" },
+ { "GB2312.1980-0:GR", /* GB_2312-80 58 */ "\033$)A" },
+ { "JISX0208.1983-0:GL", /* JIS_X0208-1983 87 */ "\033$(B" },
+ { "JISX0208.1983-0:GR", /* JIS_X0208-1983 87 */ "\033$)B" },
+ { "JISX0208.1990-0:GL", /* JIS_X0208-1990 168 */ "\033$(B" },
+ { "JISX0208.1990-0:GR", /* JIS_X0208-1990 168 */ "\033$)B" },
+ { "JISX0212.1990-0:GL", /* JIS_X0212-1990 159 */ "\033$(D" },
+ { "JISX0212.1990-0:GR", /* JIS_X0212-1990 159 */ "\033$)D" },
+ { "KSC5601.1987-0:GL", /* KS_C_5601-1987 149 */ "\033$(C" },
+ { "KSC5601.1987-0:GR", /* KS_C_5601-1987 149 */ "\033$)C" },
+ { "CNS11643.1986-1:GL", /* CNS 11643-1992 pl.1 171 */ "\033$(G" },
+ { "CNS11643.1986-1:GR", /* CNS 11643-1992 pl.1 171 */ "\033$)G" },
+ { "CNS11643.1986-2:GL", /* CNS 11643-1992 pl.2 172 */ "\033$(H" },
+ { "CNS11643.1986-2:GR", /* CNS 11643-1992 pl.2 172 */ "\033$)H" },
+ { "CNS11643.1992-3:GL", /* CNS 11643-1992 pl.3 183 */ "\033$(I" },
+ { "CNS11643.1992-3:GR", /* CNS 11643-1992 pl.3 183 */ "\033$)I" },
+ { "CNS11643.1992-4:GL", /* CNS 11643-1992 pl.4 184 */ "\033$(J" },
+ { "CNS11643.1992-4:GR", /* CNS 11643-1992 pl.4 184 */ "\033$)J" },
+ { "CNS11643.1992-5:GL", /* CNS 11643-1992 pl.5 185 */ "\033$(K" },
+ { "CNS11643.1992-5:GR", /* CNS 11643-1992 pl.5 185 */ "\033$)K" },
+ { "CNS11643.1992-6:GL", /* CNS 11643-1992 pl.6 186 */ "\033$(L" },
+ { "CNS11643.1992-6:GR", /* CNS 11643-1992 pl.6 186 */ "\033$)L" },
+ { "CNS11643.1992-7:GL", /* CNS 11643-1992 pl.7 187 */ "\033$(M" },
+ { "CNS11643.1992-7:GR", /* CNS 11643-1992 pl.7 187 */ "\033$)M" },
+
+ /* Registered encodings with a varying number of bytes per character */
+ { "ISO10646-1", /* UTF-8 196 */ "\033%G" },
+
+ /* Encodings without ISO-IR assigned escape sequence must be
+ defined in XLC_LOCALE files, using "\033%/1" or "\033%/2". */
+
+ /* Backward compatibility with XFree86 3.x */
+#if 1
+ { "ISO8859-14:GR", "\033%/1" },
+ { "ISO8859-15:GR", "\033%/1" },
+#endif
+ /* For use by utf8 -> ctext */
+ { "BIG5-0:GLGR", "\033%/2"},
+ { "BIG5HKSCS-0:GLGR", "\033%/2"},
+ { "GBK-0:GLGR", "\033%/2"},
+ /* used by Emacs, but not backed by ISO-IR */
+ { "BIG5-E0:GL", "\033$(0" },
+ { "BIG5-E0:GR", "\033$)0" },
+ { "BIG5-E1:GL", "\033$(1" },
+ { "BIG5-E1:GR", "\033$)1" },
+
+};
+
+/* We represent UTF-8 as an XlcGLGR charset, not in extended segments. */
+#define UTF8_IN_EXTSEQ 0
+
+/* ======================= Parsing ESC Sequences ======================= */
+
+#define XctC0 0x0000
+#define XctHT 0x0009
+#define XctNL 0x000a
+#define XctESC 0x001b
+#define XctGL 0x0020
+#define XctC1 0x0080
+#define XctCSI 0x009b
+#define XctGR 0x00a0
+#define XctSTX 0x0002
+
+#define XctCntrlFunc 0x0023
+#define XctMB 0x0024
+#define XctOtherCoding 0x0025
+#define XctGL94 0x0028
+#define XctGR94 0x0029
+#define XctGR96 0x002d
+#define XctNonStandard 0x002f
+#define XctIgnoreExt 0x0030
+#define XctNotIgnoreExt 0x0031
+#define XctLeftToRight 0x0031
+#define XctRightToLeft 0x0032
+#define XctDirection 0x005d
+#define XctDirectionEnd 0x005d
+
+#define XctGL94MB 0x2428
+#define XctGR94MB 0x2429
+#define XctExtSeg 0x252f
+#define XctReturn 0x2540
+
+/*
+ * Parses the header of a Compound Text segment, i.e. the charset designator.
+ * The string starts at *text and has *length bytes.
+ * Return value is one of:
+ * 0 (no valid charset designator),
+ * XctGL94, XctGR94, XctGR96, XctGL94MB, XctGR94MB,
+ * XctLeftToRight, XctRightToLeft, XctDirectionEnd,
+ * XctExtSeg, XctOtherCoding, XctReturn, XctIgnoreExt, XctNotIgnoreExt.
+ * If the return value is not 0, *text is incremented and *length decremented,
+ * to point past the charset designator. If the return value is one of
+ * XctGL94, XctGR94, XctGR96, XctGL94MB, XctGR94MB,
+ * XctExtSeg, XctOtherCoding, XctIgnoreExt, XctNotIgnoreExt,
+ * *final_byte is set to the "final byte" of the charset designator.
+ */
+static unsigned int
+_XlcParseCT(
+ const char **text,
+ int *length,
+ unsigned char *final_byte)
+{
+ unsigned int ret = 0;
+ unsigned char ch;
+ const unsigned char *str = (const unsigned char *) *text;
+
+ *final_byte = 0;
+
+ if (*length < 1)
+ return 0;
+ switch (ch = *str++) {
+ case XctESC:
+ if (*length < 2)
+ return 0;
+ switch (ch = *str++) {
+ case XctOtherCoding: /* % */
+ if (*length < 3)
+ return 0;
+ ch = *str++;
+ if (ch == XctNonStandard) { /* / */
+ if (*length < 4)
+ return 0;
+ ret = XctExtSeg;
+ ch = *str++;
+ } else if (ch == '@') {
+ ret = XctReturn;
+ } else {
+ ret = XctOtherCoding;
+ }
+ *final_byte = ch;
+ break;
+
+ case XctCntrlFunc: /* # */
+ if (*length < 4)
+ return 0;
+ *final_byte = *str++;
+ switch (*str++) {
+ case XctIgnoreExt: /* 0 */
+ ret = XctIgnoreExt;
+ break;
+ case XctNotIgnoreExt: /* 1 */
+ ret = XctNotIgnoreExt;
+ break;
+ default:
+ ret = 0;
+ break;
+ }
+ break;
+
+ case XctMB: /* $ */
+ if (*length < 4)
+ return 0;
+ ch = *str++;
+ switch (ch) {
+ case XctGL94: /* ( */
+ ret = XctGL94MB;
+ break;
+ case XctGR94: /* ) */
+ ret = XctGR94MB;
+ break;
+ default:
+ ret = 0;
+ break;
+ }
+ *final_byte = *str++;
+ break;
+
+ case XctGL94: /* ( */
+ if (*length < 3)
+ return 0;
+ ret = XctGL94;
+ *final_byte = *str++;
+ break;
+ case XctGR94: /* ) */
+ if (*length < 3)
+ return 0;
+ ret = XctGR94;
+ *final_byte = *str++;
+ break;
+ case XctGR96: /* - */
+ if (*length < 3)
+ return 0;
+ ret = XctGR96;
+ *final_byte = *str++;
+ break;
+ }
+ break;
+ case XctCSI:
+ /* direction */
+ if (*length < 2)
+ return 0;
+ switch (*str++) {
+ case XctLeftToRight:
+ if (*length < 3)
+ return 0;
+ if (*str++ == XctDirection)
+ ret = XctLeftToRight;
+ break;
+ case XctRightToLeft:
+ if (*length < 3)
+ return 0;
+ if (*str++ == XctDirection)
+ ret = XctRightToLeft;
+ break;
+ case XctDirectionEnd:
+ ret = XctDirectionEnd;
+ break;
+ }
+ break;
+ }
+
+ if (ret) {
+ *length -= (const char *) str - *text;
+ *text = (const char *) str;
+ }
+ return ret;
+}
+
+/*
+ * Fills into a freshly created XlcCharSet the fields that can be inferred
+ * from the ESC sequence. These are side, char_size, set_size.
+ * Returns True if the charset can be used with Compound Text.
+ *
+ * Used by _XlcCreateDefaultCharSet.
+ */
+Bool
+_XlcParseCharSet(
+ XlcCharSet charset)
+{
+ unsigned int type;
+ unsigned char final_byte;
+ const char *ptr = charset->ct_sequence;
+ int length;
+ int char_size;
+
+ if (*ptr == '\0')
+ return False;
+
+ length = strlen(ptr);
+
+ type = _XlcParseCT(&ptr, &length, &final_byte);
+
+ /* Check for validity and determine char_size.
+ char_size = 0 means varying number of bytes per character. */
+ switch (type) {
+ case XctGL94:
+ case XctGR94:
+ case XctGR96:
+ char_size = 1;
+ break;
+ case XctGL94MB:
+ case XctGR94MB:
+ char_size = (final_byte < 0x60 ? 2 : final_byte < 0x70 ? 3 : 4);
+ break;
+ case XctExtSeg:
+ char_size = final_byte - '0';
+ if (!(char_size >= 0 && char_size <= 4))
+ return False;
+ break;
+ case XctOtherCoding:
+ char_size = 0;
+ break;
+ default:
+ return False;
+ }
+
+ charset->char_size = char_size;
+
+ /* Fill in other values. */
+ switch (type) {
+ case XctGL94:
+ case XctGL94MB:
+ charset->side = XlcGL;
+ charset->set_size = 94;
+ break;
+ case XctGR94:
+ case XctGR94MB:
+ charset->side = XlcGR;
+ charset->set_size = 94;
+ break;
+ case XctGR96:
+ charset->side = XlcGR;
+ charset->set_size = 96;
+ break;
+ case XctExtSeg:
+ case XctOtherCoding:
+ charset->side = XlcGLGR;
+ charset->set_size = 0;
+ break;
+ }
+ return True;
+}
+
+
+/* =============== Management of the List of Character Sets =============== */
+
+/*
+ * Representation of a character set that can be used for Compound Text,
+ * at run time.
+ * Note: This information is not contained in the XlcCharSet, because
+ * multiple ESC sequences may be used for the same XlcCharSet.
+ */
+typedef struct _CTInfoRec {
+ XlcCharSet charset;
+ const char *ct_sequence; /* Compound Text ESC sequence */
+ unsigned int type;
+ unsigned char final_byte;
+ /* If type == XctExtSeg: */
+ const char *ext_segment; /* extended segment name, then '\002' */
+ int ext_segment_len; /* length of above, including final '\002' */
+
+ struct _CTInfoRec *next;
+} CTInfoRec, *CTInfo;
+
+/*
+ * List of character sets that can be used for Compound Text,
+ * Includes all that are listed in default_ct_data, but more can be added
+ * at runtime through _XlcAddCT.
+ */
+static CTInfo ct_list = NULL;
+static CTInfo ct_list_end = NULL;
+
+/*
+ * Returns a Compound Text info record for an ESC sequence.
+ * The first part of the ESC sequence has already been parsed into 'type'
+ * and 'final_byte'. The remainder starts at 'text', at least 'text_len'
+ * bytes (only used if type == XctExtSeg).
+ */
+static CTInfo
+_XlcGetCTInfo(
+ unsigned int type,
+ unsigned char final_byte,
+ const char *text,
+ int text_len)
+{
+ CTInfo ct_info;
+
+ for (ct_info = ct_list; ct_info; ct_info = ct_info->next)
+ if (ct_info->type == type
+ && ct_info->final_byte == final_byte
+ && (type != XctExtSeg
+ || (text_len >= ct_info->ext_segment_len
+ && memcmp(text, ct_info->ext_segment,
+ ct_info->ext_segment_len) == 0)))
+ return ct_info;
+
+ return (CTInfo) NULL;
+}
+
+/* Returns the Compound Text info for a given XlcCharSet.
+ Returns NULL if none is found. */
+static CTInfo
+_XlcGetCTInfoFromCharSet(
+ XlcCharSet charset)
+{
+ CTInfo ct_info;
+
+ for (ct_info = ct_list; ct_info; ct_info = ct_info->next)
+ if (ct_info->charset == charset)
+ return ct_info;
+
+ return (CTInfo) NULL;
+}
+
+/* Creates a new XlcCharSet, given its name (including side suffix) and
+ Compound Text ESC sequence (normally at most 4 bytes), and makes it
+ eligible for Compound Text processing. */
+XlcCharSet
+_XlcAddCT(
+ const char *name,
+ const char *ct_sequence)
+{
+ CTInfo ct_info, existing_info;
+ XlcCharSet charset;
+ const char *ct_ptr;
+ int length;
+ unsigned int type;
+ unsigned char final_byte;
+
+ charset = _XlcGetCharSet(name);
+ if (charset != NULL) {
+ /* Even if the charset already exists, it is OK to register a second
+ Compound Text sequence for it. */
+ } else {
+ /* Attempt to create the charset. */
+ charset = _XlcCreateDefaultCharSet(name, ct_sequence);
+ if (charset == NULL)
+ return (XlcCharSet) NULL;
+ _XlcAddCharSet(charset);
+ }
+
+ /* Allocate a CTinfo record. */
+ length = strlen(ct_sequence);
+ ct_info = (CTInfo) Xmalloc(sizeof(CTInfoRec) + length+1);
+ if (ct_info == NULL)
+ return charset;
+
+ ct_info->charset = charset;
+ ct_info->ct_sequence = strcpy((char *) (ct_info + 1), ct_sequence);
+
+ /* Parse the Compound Text sequence. */
+ ct_ptr = ct_sequence;
+ type = _XlcParseCT(&ct_ptr, &length, &final_byte);
+
+ ct_info->type = type;
+ ct_info->final_byte = final_byte;
+
+ switch (type) {
+ case XctGL94:
+ case XctGR94:
+ case XctGR96:
+ case XctGL94MB:
+ case XctGR94MB:
+ case XctOtherCoding:
+ ct_info->ext_segment = NULL;
+ ct_info->ext_segment_len = 0;
+ break;
+ case XctExtSeg: {
+ /* By convention, the extended segment name is the encoding_name
+ in lowercase. */
+ const char *q = charset->encoding_name;
+ int n = strlen(q);
+ char *p;
+
+ /* Ensure ct_info->ext_segment_len <= 0x3fff - 6. */
+ if (n > 0x3fff - 6 - 1) {
+ Xfree(ct_info);
+ return charset;
+ }
+ p = (char *) Xmalloc(n+1);
+ if (p == NULL) {
+ Xfree(ct_info);
+ return charset;
+ }
+ ct_info->ext_segment = p;
+ ct_info->ext_segment_len = n+1;
+ for ( ; n > 0; p++, q++, n--)
+ *p = (*q >= 'A' && *q <= 'Z' ? *q - 'A' + 'a' : *q);
+ *p = XctSTX;
+ break;
+ }
+ default:
+ Xfree(ct_info);
+ return (XlcCharSet) NULL;
+ }
+
+ /* Insert it into the list, if not already present. */
+ existing_info =
+ _XlcGetCTInfo(type, ct_info->final_byte,
+ ct_info->ext_segment, ct_info->ext_segment_len);
+ if (existing_info == NULL) {
+ /* Insert it at the end. If there are duplicates CTinfo entries
+ for the same XlcCharSet, we want the first (standard) one to
+ override the second (user defined) one. */
+ ct_info->next = NULL;
+ if (ct_list_end)
+ ct_list_end->next = ct_info;
+ else
+ ct_list = ct_info;
+ ct_list_end = ct_info;
+ } else {
+ if (existing_info->charset != charset
+ /* We have a conflict, with one exception: JISX0208.1983-0 and
+ JISX0208.1990-0 are the same for all practical purposes. */
+ && !(strncmp(existing_info->charset->name, "JISX0208", 8) == 0
+ && strncmp(charset->name, "JISX0208", 8) == 0)) {
+ fprintf(stderr,
+ "Xlib: charsets %s and %s have the same CT sequence\n",
+ charset->name, existing_info->charset->name);
+ if (strcmp(charset->ct_sequence, ct_sequence) == 0)
+ charset->ct_sequence = "";
+ }
+ Xfree(ct_info);
+ }
+
+ return charset;
+}
+
+
+/* ========== Converters String <--> CharSet <--> Compound Text ========== */
+
+/*
+ * Structure representing the parse state of a Compound Text string.
+ */
+typedef struct _StateRec {
+ XlcCharSet charset; /* The charset of the current segment */
+ XlcCharSet GL_charset; /* The charset responsible for 0x00..0x7F */
+ XlcCharSet GR_charset; /* The charset responsible for 0x80..0xFF */
+ XlcCharSet Other_charset; /* != NULL if currently in an other segment */
+ int ext_seg_left; /* > 0 if currently in an extended segment */
+} StateRec, *State;
+
+
+/* Subroutine for parsing an ESC sequence. */
+
+typedef enum {
+ resOK, /* Charset saved in 'state', sequence skipped */
+ resNotInList, /* Charset not found, sequence skipped */
+ resNotCTSeq /* EscSeq not recognized, pointers not changed */
+} CheckResult;
+
+static CheckResult
+_XlcCheckCTSequence(
+ State state,
+ const char **ctext,
+ int *ctext_len)
+{
+ XlcCharSet charset;
+ CTInfo ct_info;
+ const char *tmp_ctext = *ctext;
+ int tmp_ctext_len = *ctext_len;
+ unsigned int type;
+ unsigned char final_byte;
+ int ext_seg_left = 0;
+
+ /* Check for validity. */
+ type = _XlcParseCT(&tmp_ctext, &tmp_ctext_len, &final_byte);
+
+ switch (type) {
+ case XctGL94:
+ case XctGR94:
+ case XctGR96:
+ case XctGL94MB:
+ case XctGR94MB:
+ case XctOtherCoding:
+ *ctext = tmp_ctext;
+ *ctext_len = tmp_ctext_len;
+ break;
+ case XctReturn:
+ *ctext = tmp_ctext;
+ *ctext_len = tmp_ctext_len;
+ state->Other_charset = NULL;
+ return resOK;
+ case XctExtSeg:
+ if (tmp_ctext_len > 2
+ && (tmp_ctext[0] & 0x80) && (tmp_ctext[0] & 0x80)) {
+ unsigned int msb = tmp_ctext[0] & 0x7f;
+ unsigned int lsb = tmp_ctext[1] & 0x7f;
+ ext_seg_left = (msb << 7) + lsb;
+ if (ext_seg_left <= tmp_ctext_len - 2) {
+ *ctext = tmp_ctext + 2;
+ *ctext_len = tmp_ctext_len - 2;
+ break;
+ }
+ }
+ return resNotCTSeq;
+ default:
+ return resNotCTSeq;
+ }
+
+ ct_info = _XlcGetCTInfo(type, final_byte, *ctext, ext_seg_left);
+
+ if (ct_info) {
+ charset = ct_info->charset;
+ state->ext_seg_left = ext_seg_left;
+ if (type == XctExtSeg) {
+ state->charset = charset;
+ /* Skip past the extended segment name and the separator. */
+ *ctext += ct_info->ext_segment_len;
+ *ctext_len -= ct_info->ext_segment_len;
+ state->ext_seg_left -= ct_info->ext_segment_len;
+ } else if (type == XctOtherCoding) {
+ state->Other_charset = charset;
+ } else {
+ if (charset->side == XlcGL) {
+ state->GL_charset = charset;
+ } else if (charset->side == XlcGR) {
+ state->GR_charset = charset;
+ } else {
+ state->GL_charset = charset;
+ state->GR_charset = charset;
+ }
+ }
+ return resOK;
+ } else {
+ state->ext_seg_left = 0;
+ if (type == XctExtSeg) {
+ /* Skip the entire extended segment. */
+ *ctext += ext_seg_left;
+ *ctext_len -= ext_seg_left;
+ }
+ return resNotInList;
+ }
+}
+
+static void
+init_state(
+ XlcConv conv)
+{
+ State state = (State) conv->state;
+ static XlcCharSet default_GL_charset = NULL;
+ static XlcCharSet default_GR_charset = NULL;
+
+ if (default_GL_charset == NULL) {
+ default_GL_charset = _XlcGetCharSet("ISO8859-1:GL");
+ default_GR_charset = _XlcGetCharSet("ISO8859-1:GR");
+ }
+
+ /* The initial state is ISO-8859-1 on both sides. */
+ state->GL_charset = state->charset = default_GL_charset;
+ state->GR_charset = default_GR_charset;
+
+ state->Other_charset = NULL;
+
+ state->ext_seg_left = 0;
+}
+
+/* from XlcNCompoundText to XlcNCharSet */
+
+static int
+cttocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ State state = (State) conv->state;
+ XlcCharSet charset = NULL;
+ const char *ctptr;
+ char *bufptr;
+ int ctext_len, buf_len;
+ int unconv_num = 0;
+
+ ctptr = (const char *) *from;
+ bufptr = (char *) *to;
+ ctext_len = *from_left;
+ buf_len = *to_left;
+
+ while (ctext_len > 0 && buf_len > 0) {
+ if (state->ext_seg_left == 0) {
+ /* Not in the middle of an extended segment; look at next byte. */
+ unsigned char ch = *ctptr;
+ XlcCharSet ch_charset;
+
+ if (ch == XctESC) {
+ CheckResult ret =
+ _XlcCheckCTSequence(state, &ctptr, &ctext_len);
+ if (ret == resOK)
+ /* state has been modified. */
+ continue;
+ if (ret == resNotInList) {
+ /* XXX Just continue with previous charset. */
+ unconv_num++;
+ continue;
+ }
+ } else if (ch == XctCSI) {
+ /* XXX Simply ignore the XctLeftToRight, XctRightToLeft,
+ XctDirectionEnd sequences for the moment. */
+ unsigned char dummy;
+ if (_XlcParseCT(&ctptr, &ctext_len, &dummy)) {
+ unconv_num++;
+ continue;
+ }
+ }
+
+ /* Find the charset which is responsible for this byte. */
+ ch_charset = (state->Other_charset != NULL ? state->Other_charset :
+ (ch & 0x80 ? state->GR_charset : state->GL_charset));
+
+ /* Set the charset of this run, or continue the current run,
+ or stop the current run. */
+ if (charset) {
+ if (charset != ch_charset)
+ break;
+ } else {
+ state->charset = charset = ch_charset;
+ }
+
+ /* We don't want to split a character into multiple pieces. */
+ if (buf_len < 6) {
+ if (charset->char_size > 0) {
+ if (buf_len < charset->char_size)
+ break;
+ } else {
+ /* char_size == 0 is tricky. The code here is good only
+ for valid UTF-8 input. */
+ if (charset->ct_sequence[0] == XctESC
+ && charset->ct_sequence[1] == XctOtherCoding
+ && charset->ct_sequence[2] == 'G') {
+ int char_size = (ch < 0xc0 ? 1 :
+ ch < 0xe0 ? 2 :
+ ch < 0xf0 ? 3 :
+ ch < 0xf8 ? 4 :
+ ch < 0xfc ? 5 :
+ 6);
+ if (buf_len < char_size)
+ break;
+ }
+ }
+ }
+
+ *bufptr++ = *ctptr++;
+ ctext_len--;
+ buf_len--;
+ } else {
+ /* Copy as much as possible from the current extended segment
+ to the buffer. */
+ int char_size;
+
+ /* Set the charset of this run, or continue the current run,
+ or stop the current run. */
+ if (charset) {
+ if (charset != state->charset)
+ break;
+ } else {
+ charset = state->charset;
+ }
+
+ char_size = charset->char_size;
+
+ if (state->ext_seg_left <= buf_len || char_size > 0) {
+ int n = (state->ext_seg_left <= buf_len
+ ? state->ext_seg_left
+ : (buf_len / char_size) * char_size);
+ memcpy(bufptr, ctptr, n);
+ ctptr += n; ctext_len -= n;
+ bufptr += n; buf_len -= n;
+ state->ext_seg_left -= n;
+ } else {
+#if UTF8_IN_EXTSEQ
+ /* char_size == 0 is tricky. The code here is good only
+ for valid UTF-8 input. */
+ if (strcmp(charset->name, "ISO10646-1") == 0) {
+ unsigned char ch = *ctptr;
+ int char_size = (ch < 0xc0 ? 1 :
+ ch < 0xe0 ? 2 :
+ ch < 0xf0 ? 3 :
+ ch < 0xf8 ? 4 :
+ ch < 0xfc ? 5 :
+ 6);
+ int i;
+ if (buf_len < char_size)
+ break;
+ /* A small loop is faster than calling memcpy. */
+ for (i = char_size; i > 0; i--)
+ *bufptr++ = *ctptr++;
+ ctext_len -= char_size;
+ buf_len -= char_size;
+ state->ext_seg_left -= char_size;
+ } else
+#endif
+ {
+ /* Here ctext_len >= state->ext_seg_left > buf_len.
+ We may be splitting a character into multiple pieces.
+ Oh well. */
+ int n = buf_len;
+ memcpy(bufptr, ctptr, n);
+ ctptr += n; ctext_len -= n;
+ bufptr += n; buf_len -= n;
+ state->ext_seg_left -= n;
+ }
+ }
+ }
+ }
+
+ /* 'charset' is the charset for the current run. In some cases,
+ 'state->charset' contains the charset for the next run. Therefore,
+ return 'charset'.
+ 'charset' may still be NULL only if no output was produced. */
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = charset;
+
+ *from_left -= ctptr - *((const char **) from);
+ *from = (XPointer) ctptr;
+
+ *to_left -= bufptr - *((char **) to);
+ *to = (XPointer) bufptr;
+
+ return unconv_num;
+}
+
+/* from XlcNCharSet to XlcNCompoundText */
+
+static int
+cstoct(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ State state = (State) conv->state;
+ XlcSide side;
+ unsigned char min_ch = 0, max_ch = 0;
+ int length, unconv_num;
+ CTInfo ct_info;
+ XlcCharSet charset;
+ const char *csptr;
+ char *ctptr;
+ int csstr_len, ct_len;
+ char *ext_segment_start;
+ int char_size;
+
+ /* One argument is required, of type XlcCharSet. */
+ if (num_args < 1)
+ return -1;
+
+ csptr = *((const char **) from);
+ ctptr = *((char **) to);
+ csstr_len = *from_left;
+ ct_len = *to_left;
+
+ charset = (XlcCharSet) args[0];
+
+ ct_info = _XlcGetCTInfoFromCharSet(charset);
+ if (ct_info == NULL)
+ return -1;
+
+ side = charset->side;
+ length = strlen(ct_info->ct_sequence);
+
+ ext_segment_start = NULL;
+
+ if (ct_info->type == XctOtherCoding) {
+ /* Output the Escape sequence for switching to the charset, and
+ reserve room now for the XctReturn sequence at the end. */
+ if (ct_len < length + 3)
+ return -1;
+
+ memcpy(ctptr, ct_info->ct_sequence, length);
+ ctptr += length;
+ ct_len -= length + 3;
+ } else
+ /* Test whether the charset is already active. */
+ if (((side == XlcGR || side == XlcGLGR)
+ && charset != state->GR_charset)
+ || ((side == XlcGL || side == XlcGLGR)
+ && charset != state->GL_charset)) {
+
+ /* Output the Escape sequence for switching to the charset. */
+ if (ct_info->type == XctExtSeg) {
+ if (ct_len < length + 2 + ct_info->ext_segment_len)
+ return -1;
+
+ memcpy(ctptr, ct_info->ct_sequence, length);
+ ctptr += length;
+ ct_len -= length;
+
+ ctptr += 2;
+ ct_len -= 2;
+ ext_segment_start = ctptr;
+
+ /* The size of an extended segment must fit in 14 bits. */
+ if (ct_len > 0x3fff)
+ ct_len = 0x3fff;
+
+ memcpy(ctptr, ct_info->ext_segment, ct_info->ext_segment_len);
+ ctptr += ct_info->ext_segment_len;
+ ct_len -= ct_info->ext_segment_len;
+ } else {
+ if (ct_len < length)
+ return -1;
+
+ memcpy(ctptr, ct_info->ct_sequence, length);
+ ctptr += length;
+ ct_len -= length;
+ }
+ }
+
+ /* If the charset has side GL or GR, prepare remapping the characters
+ to the correct side. */
+ if (charset->set_size) {
+ min_ch = 0x20;
+ max_ch = 0x7f;
+ if (charset->set_size == 94) {
+ max_ch--;
+ if (charset->char_size > 1 || side == XlcGR)
+ min_ch++;
+ }
+ }
+
+ /* Actually copy the contents. */
+ unconv_num = 0;
+ char_size = charset->char_size;
+ if (char_size == 1) {
+ while (csstr_len > 0 && ct_len > 0) {
+ if (charset->set_size) {
+ /* The CompoundText specification says that the only
+ control characters allowed are 0x09, 0x0a, 0x1b, 0x9b.
+ Therefore here we eliminate other control characters. */
+ unsigned char ch = *((unsigned char *) csptr) & 0x7f;
+ if (!((ch >= min_ch && ch <= max_ch)
+ || (side == XlcGL
+ && (ch == 0x00 || ch == 0x09 || ch == 0x0a))
+ || ((side == XlcGL || side == XlcGR)
+ && (ch == 0x1b)))) {
+ csptr++;
+ csstr_len--;
+ unconv_num++;
+ continue;
+ }
+ }
+
+ if (side == XlcGL)
+ *ctptr++ = *csptr++ & 0x7f;
+ else if (side == XlcGR)
+ *ctptr++ = *csptr++ | 0x80;
+ else
+ *ctptr++ = *csptr++;
+ csstr_len--;
+ ct_len--;
+ }
+ } else if (char_size > 1) {
+ while (csstr_len >= char_size && ct_len >= char_size) {
+ if (side == XlcGL) {
+ int i;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++ & 0x7f;
+ } else if (side == XlcGR) {
+ int i;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++ | 0x80;
+ } else {
+ int i;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++;
+ }
+ csstr_len -= char_size;
+ ct_len -= char_size;
+ }
+ } else {
+ /* char_size = 0. The code here is good only for valid UTF-8 input. */
+ if ((charset->ct_sequence[0] == XctESC
+ && charset->ct_sequence[1] == XctOtherCoding
+ && charset->ct_sequence[2] == 'G')
+#if UTF8_IN_EXTSEQ
+ || strcmp(charset->name, "ISO10646-1") == 0
+#endif
+ ) {
+ while (csstr_len > 0 && ct_len > 0) {
+ unsigned char ch = * (unsigned char *) csptr;
+ int char_size = (ch < 0xc0 ? 1 :
+ ch < 0xe0 ? 2 :
+ ch < 0xf0 ? 3 :
+ ch < 0xf8 ? 4 :
+ ch < 0xfc ? 5 :
+ 6);
+ int i;
+ if (!(csstr_len >= char_size && ct_len >= char_size))
+ break;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++;
+ csstr_len -= char_size;
+ ct_len -= char_size;
+ }
+ } else {
+ while (csstr_len > 0 && ct_len > 0) {
+ *ctptr++ = *csptr++;
+ csstr_len--;
+ ct_len--;
+ }
+ }
+ }
+
+ if (ct_info->type == XctOtherCoding) {
+ /* Terminate with an XctReturn sequence. */
+ ctptr[0] = XctESC;
+ ctptr[1] = XctOtherCoding;
+ ctptr[2] = '@';
+ ctptr += 3;
+ } else if (ext_segment_start != NULL) {
+ /* Backpatch the extended segment's length. */
+ int ext_segment_length = ctptr - ext_segment_start;
+ *(ext_segment_start - 2) = (ext_segment_length >> 7) | 0x80;
+ *(ext_segment_start - 1) = (ext_segment_length & 0x7f) | 0x80;
+ } else {
+ if (side == XlcGR || side == XlcGLGR)
+ state->GR_charset = charset;
+ if (side == XlcGL || side == XlcGLGR)
+ state->GL_charset = charset;
+ }
+
+ *from_left -= csptr - *((const char **) from);
+ *from = (XPointer) csptr;
+
+ *to_left -= ctptr - *((char **) to);
+ *to = (XPointer) ctptr;
+
+ return 0;
+}
+
+/* from XlcNString to XlcNCharSet */
+
+static int
+strtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ State state = (State) conv->state;
+ const char *src;
+ char *dst;
+ unsigned char side;
+ int length;
+
+ src = (const char *) *from;
+ dst = (char *) *to;
+
+ length = min(*from_left, *to_left);
+ side = *((unsigned char *) src) & 0x80;
+
+ while (side == (*((unsigned char *) src) & 0x80) && length-- > 0)
+ *dst++ = *src++;
+
+ *from_left -= src - (const char *) *from;
+ *from = (XPointer) src;
+ *to_left -= dst - (char *) *to;
+ *to = (XPointer) dst;
+
+ if (num_args > 0)
+ *((XlcCharSet *)args[0]) = (side ? state->GR_charset : state->GL_charset);
+
+ return 0;
+}
+
+/* from XlcNCharSet to XlcNString */
+
+static int
+cstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ State state = (State) conv->state;
+ const char *csptr;
+ char *string_ptr;
+ int csstr_len, str_len;
+ unsigned char ch;
+ int unconv_num = 0;
+
+ /* This converter can only convert from ISO8859-1:GL and ISO8859-1:GR. */
+ if (num_args < 1
+ || !((XlcCharSet) args[0] == state->GL_charset
+ || (XlcCharSet) args[0] == state->GR_charset))
+ return -1;
+
+ csptr = *((const char **) from);
+ string_ptr = *((char **) to);
+ csstr_len = *from_left;
+ str_len = *to_left;
+
+ while (csstr_len > 0 && str_len > 0) {
+ ch = *((unsigned char *) csptr++);
+ csstr_len--;
+ /* Citing ICCCM: "STRING as a type specifies the ISO Latin-1 character
+ set plus the control characters TAB and NEWLINE." */
+ if ((ch < 0x20 && ch != 0x00 && ch != 0x09 && ch != 0x0a)
+ || (ch >= 0x7f && ch < 0xa0)) {
+ unconv_num++;
+ continue;
+ }
+ *((unsigned char *) string_ptr++) = ch;
+ str_len--;
+ }
+
+ *from_left -= csptr - *((const char **) from);
+ *from = (XPointer) csptr;
+
+ *to_left -= string_ptr - *((char **) to);
+ *to = (XPointer) string_ptr;
+
+ return unconv_num;
+}
+
+
+static XlcConv
+create_conv(
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + sizeof(StateRec));
+ if (conv == NULL)
+ return (XlcConv) NULL;
+
+ conv->state = (XPointer) &conv[1];
+
+ conv->methods = methods;
+
+ init_state(conv);
+
+ return conv;
+}
+
+static void
+close_converter(
+ XlcConv conv)
+{
+ /* conv->state is allocated together with conv, free both at once. */
+ Xfree((char *) conv);
+}
+
+
+static XlcConvMethodsRec cttocs_methods = {
+ close_converter,
+ cttocs,
+ init_state
+};
+
+static XlcConv
+open_cttocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(&cttocs_methods);
+}
+
+
+static XlcConvMethodsRec cstoct_methods = {
+ close_converter,
+ cstoct,
+ init_state
+};
+
+static XlcConv
+open_cstoct(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(&cstoct_methods);
+}
+
+
+static XlcConvMethodsRec strtocs_methods = {
+ close_converter,
+ strtocs,
+ init_state
+};
+
+static XlcConv
+open_strtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(&strtocs_methods);
+}
+
+
+static XlcConvMethodsRec cstostr_methods = {
+ close_converter,
+ cstostr,
+ init_state
+};
+
+static XlcConv
+open_cstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(&cstostr_methods);
+}
+
+
+/* =========================== Initialization =========================== */
+
+Bool
+_XlcInitCTInfo(void)
+{
+ if (ct_list == NULL) {
+ const CTDataRec *ct_data;
+ int num;
+ XlcCharSet charset;
+
+ /* Initialize ct_list. */
+
+ num = sizeof(default_ct_data) / sizeof(CTDataRec);
+ for (ct_data = default_ct_data; num > 0; ct_data++, num--) {
+ charset = _XlcAddCT(ct_data->name, ct_data->ct_sequence);
+ if (charset == NULL)
+ continue;
+ if (strncmp(charset->ct_sequence, "\x1b\x25\x2f", 3) != 0)
+ charset->source = CSsrcStd;
+ else
+ charset->source = CSsrcXLC;
+ }
+
+ /* Register CompoundText and CharSet converters. */
+
+ _XlcSetConverter((XLCd) NULL, XlcNCompoundText,
+ (XLCd) NULL, XlcNCharSet,
+ open_cttocs);
+ _XlcSetConverter((XLCd) NULL, XlcNString,
+ (XLCd) NULL, XlcNCharSet,
+ open_strtocs);
+
+ _XlcSetConverter((XLCd) NULL, XlcNCharSet,
+ (XLCd) NULL, XlcNCompoundText,
+ open_cstoct);
+ _XlcSetConverter((XLCd) NULL, XlcNCharSet,
+ (XLCd) NULL, XlcNString,
+ open_cstostr);
+ }
+
+ return True;
+}
diff --git a/libX11/src/xlibi18n/lcConv.c b/libX11/src/xlibi18n/lcConv.c
index 9797e7ed3..1b997f5f1 100644
--- a/libX11/src/xlibi18n/lcConv.c
+++ b/libX11/src/xlibi18n/lcConv.c
@@ -1,339 +1,339 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include <stdio.h>
-
-typedef struct _XlcConverterListRec {
- XLCd from_lcd;
- const char *from;
- XrmQuark from_type;
- XLCd to_lcd;
- const char *to;
- XrmQuark to_type;
- XlcOpenConverterProc converter;
- struct _XlcConverterListRec *next;
-} XlcConverterListRec, *XlcConverterList;
-
-static XlcConverterList conv_list = NULL;
-
-static void
-close_converter(
- XlcConv conv)
-{
- (*conv->methods->close)(conv);
-}
-
-static XlcConv
-get_converter(
- XLCd from_lcd,
- XrmQuark from_type,
- XLCd to_lcd,
- XrmQuark to_type)
-{
- XlcConverterList list, prev = NULL;
-
- for (list = conv_list; list; list = list->next) {
- if (list->from_lcd == from_lcd && list->to_lcd == to_lcd
- && list->from_type == from_type && list->to_type == to_type) {
-
- if (prev && prev != conv_list) { /* XXX */
- prev->next = list->next;
- list->next = conv_list;
- conv_list = list;
- }
-
- return (*list->converter)(from_lcd, list->from, to_lcd, list->to);
- }
-
- prev = list;
- }
-
- return (XlcConv) NULL;
-}
-
-Bool
-_XlcSetConverter(
- XLCd from_lcd,
- const char *from,
- XLCd to_lcd,
- const char *to,
- XlcOpenConverterProc converter)
-{
- XlcConverterList list;
- XrmQuark from_type, to_type;
-
- from_type = XrmStringToQuark(from);
- to_type = XrmStringToQuark(to);
-
- for (list = conv_list; list; list = list->next) {
- if (list->from_lcd == from_lcd && list->to_lcd == to_lcd
- && list->from_type == from_type && list->to_type == to_type) {
-
- list->converter = converter;
- return True;
- }
- }
-
- list = (XlcConverterList) Xmalloc(sizeof(XlcConverterListRec));
- if (list == NULL)
- return False;
-
- list->from_lcd = from_lcd;
- list->from = from;
- list->from_type = from_type;
- list->to_lcd = to_lcd;
- list->to = to;
- list->to_type = to_type;
- list->converter = converter;
- list->next = conv_list;
- conv_list = list;
-
- return True;
-}
-
-typedef struct _ConvRec {
- XlcConv from_conv;
- XlcConv to_conv;
-} ConvRec, *Conv;
-
-static int
-indirect_convert(
- XlcConv lc_conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- Conv conv = (Conv) lc_conv->state;
- XlcConv from_conv = conv->from_conv;
- XlcConv to_conv = conv->to_conv;
- XlcCharSet charset;
- char buf[BUFSIZ], *cs;
- XPointer tmp_args[1];
- int cs_left, ret, length, unconv_num = 0;
-
- if (from == NULL || *from == NULL) {
- if (from_conv->methods->reset)
- (*from_conv->methods->reset)(from_conv);
-
- if (to_conv->methods->reset)
- (*to_conv->methods->reset)(to_conv);
-
- return 0;
- }
-
- while (*from_left > 0) {
- cs = buf;
- cs_left = BUFSIZ;
- tmp_args[0] = (XPointer) &charset;
-
- ret = (*from_conv->methods->convert)(from_conv, from, from_left, &cs,
- &cs_left, tmp_args, 1);
- if (ret < 0)
- break;
-
- unconv_num += ret;
-
- length = cs - buf;
- if (length > 0) {
- cs_left = length;
- cs = buf;
-
- tmp_args[0] = (XPointer) charset;
-
- ret = (*to_conv->methods->convert)(to_conv, &cs, &cs_left, to, to_left,
- tmp_args, 1);
- if (ret < 0) {
- unconv_num += length / (charset->char_size > 0 ? charset->char_size : 1);
- continue;
- }
-
- unconv_num += ret;
-
- if (*to_left < 1)
- break;
- }
- }
-
- return unconv_num;
-}
-
-static void
-close_indirect_converter(
- XlcConv lc_conv)
-{
- Conv conv = (Conv) lc_conv->state;
-
- if (conv) {
- if (conv->from_conv)
- close_converter(conv->from_conv);
- if (conv->to_conv)
- close_converter(conv->to_conv);
-
- Xfree((char *) conv);
- }
-
- Xfree((char *) lc_conv);
-}
-
-static void
-reset_indirect_converter(
- XlcConv lc_conv)
-{
- Conv conv = (Conv) lc_conv->state;
-
- if (conv) {
- if (conv->from_conv && conv->from_conv->methods->reset)
- (*conv->from_conv->methods->reset)(conv->from_conv);
- if (conv->to_conv && conv->to_conv->methods->reset)
- (*conv->to_conv->methods->reset)(conv->to_conv);
- }
-}
-
-static XlcConvMethodsRec conv_methods = {
- close_indirect_converter,
- indirect_convert,
- reset_indirect_converter
-} ;
-
-static XlcConv
-open_indirect_converter(
- XLCd from_lcd,
- const char *from,
- XLCd to_lcd,
- const char *to)
-{
- XlcConv lc_conv, from_conv, to_conv;
- Conv conv;
- XrmQuark from_type, to_type;
- static XrmQuark QChar, QCharSet, QCTCharSet = (XrmQuark) 0;
-
- if (QCTCharSet == (XrmQuark) 0) {
- QCTCharSet = XrmStringToQuark(XlcNCTCharSet);
- QCharSet = XrmStringToQuark(XlcNCharSet);
- QChar = XrmStringToQuark(XlcNChar);
- }
-
- from_type = XrmStringToQuark(from);
- to_type = XrmStringToQuark(to);
-
- if (from_type == QCharSet || from_type == QChar || to_type == QCharSet ||
- to_type == QChar)
- return (XlcConv) NULL;
-
- lc_conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
- if (lc_conv == NULL)
- return (XlcConv) NULL;
-
- lc_conv->methods = &conv_methods;
-
- lc_conv->state = (XPointer) Xcalloc(1, sizeof(ConvRec));
- if (lc_conv->state == NULL)
- goto err;
-
- conv = (Conv) lc_conv->state;
-
- from_conv = get_converter(from_lcd, from_type, from_lcd, QCTCharSet);
- if (from_conv == NULL)
- from_conv = get_converter(from_lcd, from_type, from_lcd, QCharSet);
- if (from_conv == NULL)
- from_conv = get_converter((XLCd)NULL, from_type, (XLCd)NULL, QCharSet);
- if (from_conv == NULL)
- from_conv = get_converter(from_lcd, from_type, from_lcd, QChar);
- if (from_conv == NULL)
- goto err;
- conv->from_conv = from_conv;
-
- to_conv = get_converter(to_lcd, QCTCharSet, to_lcd, to_type);
- if (to_conv == NULL)
- to_conv = get_converter(to_lcd, QCharSet, to_lcd, to_type);
- if (to_conv == NULL)
- to_conv = get_converter((XLCd) NULL, QCharSet, (XLCd) NULL, to_type);
- if (to_conv == NULL)
- goto err;
- conv->to_conv = to_conv;
-
- return lc_conv;
-
-err:
- close_indirect_converter(lc_conv);
-
- return (XlcConv) NULL;
-}
-
-XlcConv
-_XlcOpenConverter(
- XLCd from_lcd,
- const char *from,
- XLCd to_lcd,
- const char *to)
-{
- XlcConv conv;
- XrmQuark from_type, to_type;
-
- from_type = XrmStringToQuark(from);
- to_type = XrmStringToQuark(to);
-
- if ((conv = get_converter(from_lcd, from_type, to_lcd, to_type)))
- return conv;
-
- return open_indirect_converter(from_lcd, from, to_lcd, to);
-}
-
-void
-_XlcCloseConverter(
- XlcConv conv)
-{
- close_converter(conv);
-}
-
-int
-_XlcConvert(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- return (*conv->methods->convert)(conv, from, from_left, to, to_left, args,
- num_args);
-}
-
-void
-_XlcResetConverter(
- XlcConv conv)
-{
- if (conv->methods->reset)
- (*conv->methods->reset)(conv);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include <stdio.h>
+
+typedef struct _XlcConverterListRec {
+ XLCd from_lcd;
+ const char *from;
+ XrmQuark from_type;
+ XLCd to_lcd;
+ const char *to;
+ XrmQuark to_type;
+ XlcOpenConverterProc converter;
+ struct _XlcConverterListRec *next;
+} XlcConverterListRec, *XlcConverterList;
+
+static XlcConverterList conv_list = NULL;
+
+static void
+close_converter(
+ XlcConv conv)
+{
+ (*conv->methods->close)(conv);
+}
+
+static XlcConv
+get_converter(
+ XLCd from_lcd,
+ XrmQuark from_type,
+ XLCd to_lcd,
+ XrmQuark to_type)
+{
+ XlcConverterList list, prev = NULL;
+
+ for (list = conv_list; list; list = list->next) {
+ if (list->from_lcd == from_lcd && list->to_lcd == to_lcd
+ && list->from_type == from_type && list->to_type == to_type) {
+
+ if (prev && prev != conv_list) { /* XXX */
+ prev->next = list->next;
+ list->next = conv_list;
+ conv_list = list;
+ }
+
+ return (*list->converter)(from_lcd, list->from, to_lcd, list->to);
+ }
+
+ prev = list;
+ }
+
+ return (XlcConv) NULL;
+}
+
+Bool
+_XlcSetConverter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to,
+ XlcOpenConverterProc converter)
+{
+ XlcConverterList list;
+ XrmQuark from_type, to_type;
+
+ from_type = XrmStringToQuark(from);
+ to_type = XrmStringToQuark(to);
+
+ for (list = conv_list; list; list = list->next) {
+ if (list->from_lcd == from_lcd && list->to_lcd == to_lcd
+ && list->from_type == from_type && list->to_type == to_type) {
+
+ list->converter = converter;
+ return True;
+ }
+ }
+
+ list = (XlcConverterList) Xmalloc(sizeof(XlcConverterListRec));
+ if (list == NULL)
+ return False;
+
+ list->from_lcd = from_lcd;
+ list->from = from;
+ list->from_type = from_type;
+ list->to_lcd = to_lcd;
+ list->to = to;
+ list->to_type = to_type;
+ list->converter = converter;
+ list->next = conv_list;
+ conv_list = list;
+
+ return True;
+}
+
+typedef struct _ConvRec {
+ XlcConv from_conv;
+ XlcConv to_conv;
+} ConvRec, *Conv;
+
+static int
+indirect_convert(
+ XlcConv lc_conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ Conv conv = (Conv) lc_conv->state;
+ XlcConv from_conv = conv->from_conv;
+ XlcConv to_conv = conv->to_conv;
+ XlcCharSet charset;
+ char buf[BUFSIZ], *cs;
+ XPointer tmp_args[1];
+ int cs_left, ret, length, unconv_num = 0;
+
+ if (from == NULL || *from == NULL) {
+ if (from_conv->methods->reset)
+ (*from_conv->methods->reset)(from_conv);
+
+ if (to_conv->methods->reset)
+ (*to_conv->methods->reset)(to_conv);
+
+ return 0;
+ }
+
+ while (*from_left > 0) {
+ cs = buf;
+ cs_left = BUFSIZ;
+ tmp_args[0] = (XPointer) &charset;
+
+ ret = (*from_conv->methods->convert)(from_conv, from, from_left, &cs,
+ &cs_left, tmp_args, 1);
+ if (ret < 0)
+ break;
+
+ unconv_num += ret;
+
+ length = cs - buf;
+ if (length > 0) {
+ cs_left = length;
+ cs = buf;
+
+ tmp_args[0] = (XPointer) charset;
+
+ ret = (*to_conv->methods->convert)(to_conv, &cs, &cs_left, to, to_left,
+ tmp_args, 1);
+ if (ret < 0) {
+ unconv_num += length / (charset->char_size > 0 ? charset->char_size : 1);
+ continue;
+ }
+
+ unconv_num += ret;
+
+ if (*to_left < 1)
+ break;
+ }
+ }
+
+ return unconv_num;
+}
+
+static void
+close_indirect_converter(
+ XlcConv lc_conv)
+{
+ Conv conv = (Conv) lc_conv->state;
+
+ if (conv) {
+ if (conv->from_conv)
+ close_converter(conv->from_conv);
+ if (conv->to_conv)
+ close_converter(conv->to_conv);
+
+ Xfree((char *) conv);
+ }
+
+ Xfree((char *) lc_conv);
+}
+
+static void
+reset_indirect_converter(
+ XlcConv lc_conv)
+{
+ Conv conv = (Conv) lc_conv->state;
+
+ if (conv) {
+ if (conv->from_conv && conv->from_conv->methods->reset)
+ (*conv->from_conv->methods->reset)(conv->from_conv);
+ if (conv->to_conv && conv->to_conv->methods->reset)
+ (*conv->to_conv->methods->reset)(conv->to_conv);
+ }
+}
+
+static XlcConvMethodsRec conv_methods = {
+ close_indirect_converter,
+ indirect_convert,
+ reset_indirect_converter
+} ;
+
+static XlcConv
+open_indirect_converter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to)
+{
+ XlcConv lc_conv, from_conv, to_conv;
+ Conv conv;
+ XrmQuark from_type, to_type;
+ static XrmQuark QChar, QCharSet, QCTCharSet = (XrmQuark) 0;
+
+ if (QCTCharSet == (XrmQuark) 0) {
+ QCTCharSet = XrmStringToQuark(XlcNCTCharSet);
+ QCharSet = XrmStringToQuark(XlcNCharSet);
+ QChar = XrmStringToQuark(XlcNChar);
+ }
+
+ from_type = XrmStringToQuark(from);
+ to_type = XrmStringToQuark(to);
+
+ if (from_type == QCharSet || from_type == QChar || to_type == QCharSet ||
+ to_type == QChar)
+ return (XlcConv) NULL;
+
+ lc_conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
+ if (lc_conv == NULL)
+ return (XlcConv) NULL;
+
+ lc_conv->methods = &conv_methods;
+
+ lc_conv->state = (XPointer) Xcalloc(1, sizeof(ConvRec));
+ if (lc_conv->state == NULL)
+ goto err;
+
+ conv = (Conv) lc_conv->state;
+
+ from_conv = get_converter(from_lcd, from_type, from_lcd, QCTCharSet);
+ if (from_conv == NULL)
+ from_conv = get_converter(from_lcd, from_type, from_lcd, QCharSet);
+ if (from_conv == NULL)
+ from_conv = get_converter((XLCd)NULL, from_type, (XLCd)NULL, QCharSet);
+ if (from_conv == NULL)
+ from_conv = get_converter(from_lcd, from_type, from_lcd, QChar);
+ if (from_conv == NULL)
+ goto err;
+ conv->from_conv = from_conv;
+
+ to_conv = get_converter(to_lcd, QCTCharSet, to_lcd, to_type);
+ if (to_conv == NULL)
+ to_conv = get_converter(to_lcd, QCharSet, to_lcd, to_type);
+ if (to_conv == NULL)
+ to_conv = get_converter((XLCd) NULL, QCharSet, (XLCd) NULL, to_type);
+ if (to_conv == NULL)
+ goto err;
+ conv->to_conv = to_conv;
+
+ return lc_conv;
+
+err:
+ close_indirect_converter(lc_conv);
+
+ return (XlcConv) NULL;
+}
+
+XlcConv
+_XlcOpenConverter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to)
+{
+ XlcConv conv;
+ XrmQuark from_type, to_type;
+
+ from_type = XrmStringToQuark(from);
+ to_type = XrmStringToQuark(to);
+
+ if ((conv = get_converter(from_lcd, from_type, to_lcd, to_type)))
+ return conv;
+
+ return open_indirect_converter(from_lcd, from, to_lcd, to);
+}
+
+void
+_XlcCloseConverter(
+ XlcConv conv)
+{
+ close_converter(conv);
+}
+
+int
+_XlcConvert(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ return (*conv->methods->convert)(conv, from, from_left, to, to_left, args,
+ num_args);
+}
+
+void
+_XlcResetConverter(
+ XlcConv conv)
+{
+ if (conv->methods->reset)
+ (*conv->methods->reset)(conv);
+}
diff --git a/libX11/src/xlibi18n/lcDynamic.c b/libX11/src/xlibi18n/lcDynamic.c
index 8d022d885..09665853e 100644
--- a/libX11/src/xlibi18n/lcDynamic.c
+++ b/libX11/src/xlibi18n/lcDynamic.c
@@ -1,78 +1,78 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-*/
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-
-/*
- * A dynamically loaded locale.
- * Supports: All locale names.
- * How: Loads $(XLOCALEDIR)/xi18n.so and forwards the request to that library.
- * Platforms: Only those defining USE_DYNAMIC_LOADER (none known).
- */
-
-#ifdef USE_DYNAMIC_LOADER
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <string.h>
-#include <dlfcn.h>
-
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-#ifndef XLOCALEDIR
-#define XLOCALEDIR "locale"
-#endif
-
-#define LCLIBNAME "xi18n.so"
-
-XLCd
-_XlcDynamicLoader(
- const char *name)
-{
- char libpath[1024];
- XLCdMethods _XlcGenericMethods;
- XLCd lcd;
- void *nlshandler;
-
- sprintf(libpath,"%s/%s/%s",
- XLOCALEDIR,name,LCLIBNAME);
- nlshandler = dlopen(libpath,LAZY);
- _XlcGenericMethods = (XLCdMethods)dlsym(nlshandler,"genericMethods");
- lcd = _XlcCreateLC(name,_XlcGenericMethods);
-
- return lcd;
-}
-#else
-typedef int dummy;
-#endif /* USE_DYNAMIC_LOADER */
+/*
+Copyright 1996, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+*/
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+
+/*
+ * A dynamically loaded locale.
+ * Supports: All locale names.
+ * How: Loads $(XLOCALEDIR)/xi18n.so and forwards the request to that library.
+ * Platforms: Only those defining USE_DYNAMIC_LOADER (none known).
+ */
+
+#ifdef USE_DYNAMIC_LOADER
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <string.h>
+#include <dlfcn.h>
+
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+#ifndef XLOCALEDIR
+#define XLOCALEDIR "locale"
+#endif
+
+#define LCLIBNAME "xi18n.so"
+
+XLCd
+_XlcDynamicLoader(
+ const char *name)
+{
+ char libpath[1024];
+ XLCdMethods _XlcGenericMethods;
+ XLCd lcd;
+ void *nlshandler;
+
+ sprintf(libpath,"%s/%s/%s",
+ XLOCALEDIR,name,LCLIBNAME);
+ nlshandler = dlopen(libpath,LAZY);
+ _XlcGenericMethods = (XLCdMethods)dlsym(nlshandler,"genericMethods");
+ lcd = _XlcCreateLC(name,_XlcGenericMethods);
+
+ return lcd;
+}
+#else
+typedef int dummy;
+#endif /* USE_DYNAMIC_LOADER */
diff --git a/libX11/src/xlibi18n/lcPrTxt.c b/libX11/src/xlibi18n/lcPrTxt.c
index 1b7627cf8..ae8f258c9 100644
--- a/libX11/src/xlibi18n/lcPrTxt.c
+++ b/libX11/src/xlibi18n/lcPrTxt.c
@@ -1,290 +1,290 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-
-static XPointer *
-alloc_list(
- Bool is_wide_char,
- int count,
- int nitems)
-{
- if (is_wide_char) {
- wchar_t **wstr_list;
-
- wstr_list = (wchar_t **) Xmalloc(count * sizeof(wchar_t *));
- if (wstr_list == NULL)
- return (XPointer *) NULL;
-
- *wstr_list = (wchar_t *) Xmalloc(nitems * sizeof(wchar_t));
- if (*wstr_list == NULL) {
- Xfree(wstr_list);
- return (XPointer *) NULL;
- }
-
- return (XPointer *) wstr_list;
- } else {
- char **str_list;
-
- str_list = (char **) Xmalloc(count * sizeof(char *));
- if (str_list == NULL)
- return (XPointer *) NULL;
-
- *str_list = (char *) Xmalloc(nitems);
- if (*str_list == NULL) {
- Xfree(str_list);
- return (XPointer *) NULL;
- }
-
- return (XPointer *) str_list;
- }
-}
-
-static void
-copy_list(
- Bool is_wide_char,
- XPointer text,
- XPointer *list,
- int count)
-{
- int length;
-
- if (is_wide_char) {
- wchar_t *wc_text, *wstr, **wstr_list;
-
- wc_text = (wchar_t *) text;
- wstr_list = (wchar_t **) list;
-
- for (wstr = *wstr_list; count > 0; count--, wstr_list++) {
- _Xwcscpy(wstr, wc_text);
- *wstr_list = wstr;
- length = _Xwcslen(wstr) + 1;
- wstr += length;
- wc_text += length;
- }
- } else {
- char *mb_text, *str, **str_list;
-
- mb_text = (char *) text;
- str_list = (char **) list;
-
- for (str = *str_list; count > 0; count--, str_list++) {
- strcpy(str, mb_text);
- *str_list = str;
- length = strlen(str) + 1;
- str += length;
- mb_text += length;
- }
- }
-}
-
-static int
-_XTextPropertyToTextList(
- XLCd lcd,
- Display *dpy,
- const XTextProperty *text_prop,
- const char *to_type,
- XPointer **list_ret,
- int *count_ret)
-{
- XlcConv conv = NULL;
- const char *from_type;
- XPointer from, to, buf;
- char *str_ptr, *last_ptr;
- Atom encoding;
- int from_left, to_left, buf_len, ret, len;
- int unconv_num, nitems = text_prop->nitems;
- Bool is_wide_char = False, do_strcpy = False;
-
- if (strcmp(XlcNWideChar, to_type) == 0)
- is_wide_char = True;
-
- if (nitems <= 0) {
- *list_ret = NULL;
- *count_ret = 0;
- return Success;
- }
-
- if (text_prop->format != 8)
- return XConverterNotFound;
-
- encoding = text_prop->encoding;
- if (encoding == XA_STRING)
- from_type = XlcNString;
- else if (encoding == XInternAtom(dpy, "UTF8_STRING", False))
- from_type = XlcNUtf8String;
- else if (encoding == XInternAtom(dpy, "COMPOUND_TEXT", False))
- from_type = XlcNCompoundText;
- else if (encoding == XInternAtom(dpy, XLC_PUBLIC(lcd, encoding_name), False))
- from_type = XlcNMultiByte;
- else
- return XConverterNotFound;
-
- if (is_wide_char) {
- buf_len = (text_prop->nitems + 1) * sizeof(wchar_t);;
- } else {
- if (strcmp(to_type, XlcNUtf8String) == 0)
- buf_len = text_prop->nitems * 6 + 1;
- else
- buf_len = text_prop->nitems * XLC_PUBLIC(lcd, mb_cur_max) + 1;
- }
- buf = (XPointer) Xmalloc(buf_len);
- if (buf == NULL)
- return XNoMemory;
- to = buf;
- to_left = buf_len;
-
- /* can be XlcNMultiByte to XlcNMultiByte,
- or XlcNUtf8String to XlcNUtf8String */
- if (!strcmp(from_type, to_type)) {
- do_strcpy = True;
- } else {
- conv = _XlcOpenConverter(lcd, from_type, lcd, to_type);
- if (conv == NULL) {
- Xfree(buf);
- return XConverterNotFound;
- }
- }
-
- last_ptr = str_ptr = (char *) text_prop->value;
- unconv_num = *count_ret = 0;
-
- while (1) {
- if (nitems == 0 || *str_ptr == 0) {
- from = (XPointer) last_ptr;
- from_left = str_ptr - last_ptr;
- last_ptr = str_ptr;
-
- if (do_strcpy) {
- len = min(from_left, to_left);
- strncpy(to, from, len);
- from += len;
- to += len;
- from_left -= len;
- to_left -= len;
- ret = 0;
- } else {
- ret = _XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0);
- }
-
- if (ret < 0)
- continue;
-
- unconv_num += ret;
- (*count_ret)++;
-
- if (nitems == 0)
- break;
- last_ptr = ++str_ptr;
- if (is_wide_char) {
- *((wchar_t *)to) = (wchar_t) 0;
- to += sizeof(wchar_t);
- to_left -= sizeof(wchar_t);
- } else {
- *((char *)to) = '\0';
- to++;
- to_left--;
- }
- if (! do_strcpy)
- _XlcResetConverter(conv);
- } else
- str_ptr++;
-
- nitems--;
- }
-
- if (! do_strcpy)
- _XlcCloseConverter(conv);
-
- if (is_wide_char) {
- *((wchar_t *) to) = (wchar_t) 0;
- to_left -= sizeof(wchar_t);
- } else {
- *((char *) to) = '\0';
- to_left--;
- }
-
- *list_ret = alloc_list(is_wide_char, *count_ret, buf_len - to_left);
- if (*list_ret)
- copy_list(is_wide_char, buf, *list_ret, *count_ret);
-
- Xfree(buf);
-
- return unconv_num;
-}
-
-int
-_XmbTextPropertyToTextList(
- XLCd lcd,
- Display *dpy,
- const XTextProperty *text_prop,
- char ***list_ret,
- int *count_ret)
-{
- return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNMultiByte,
- (XPointer **) list_ret, count_ret);
-}
-
-int
-_XwcTextPropertyToTextList(
- XLCd lcd,
- Display *dpy,
- const XTextProperty *text_prop,
- wchar_t ***list_ret,
- int *count_ret)
-{
- return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNWideChar,
- (XPointer **) list_ret, count_ret);
-}
-
-int
-_Xutf8TextPropertyToTextList(
- XLCd lcd,
- Display *dpy,
- const XTextProperty *text_prop,
- char ***list_ret,
- int *count_ret)
-{
- return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNUtf8String,
- (XPointer **) list_ret, count_ret);
-}
-
-void
-_XwcFreeStringList(
- XLCd lcd,
- wchar_t **list)
-{
- if (list) {
- if (*list)
- Xfree(*list);
- Xfree(list);
- }
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+
+static XPointer *
+alloc_list(
+ Bool is_wide_char,
+ int count,
+ int nitems)
+{
+ if (is_wide_char) {
+ wchar_t **wstr_list;
+
+ wstr_list = (wchar_t **) Xmalloc(count * sizeof(wchar_t *));
+ if (wstr_list == NULL)
+ return (XPointer *) NULL;
+
+ *wstr_list = (wchar_t *) Xmalloc(nitems * sizeof(wchar_t));
+ if (*wstr_list == NULL) {
+ Xfree(wstr_list);
+ return (XPointer *) NULL;
+ }
+
+ return (XPointer *) wstr_list;
+ } else {
+ char **str_list;
+
+ str_list = (char **) Xmalloc(count * sizeof(char *));
+ if (str_list == NULL)
+ return (XPointer *) NULL;
+
+ *str_list = (char *) Xmalloc(nitems);
+ if (*str_list == NULL) {
+ Xfree(str_list);
+ return (XPointer *) NULL;
+ }
+
+ return (XPointer *) str_list;
+ }
+}
+
+static void
+copy_list(
+ Bool is_wide_char,
+ XPointer text,
+ XPointer *list,
+ int count)
+{
+ int length;
+
+ if (is_wide_char) {
+ wchar_t *wc_text, *wstr, **wstr_list;
+
+ wc_text = (wchar_t *) text;
+ wstr_list = (wchar_t **) list;
+
+ for (wstr = *wstr_list; count > 0; count--, wstr_list++) {
+ _Xwcscpy(wstr, wc_text);
+ *wstr_list = wstr;
+ length = _Xwcslen(wstr) + 1;
+ wstr += length;
+ wc_text += length;
+ }
+ } else {
+ char *mb_text, *str, **str_list;
+
+ mb_text = (char *) text;
+ str_list = (char **) list;
+
+ for (str = *str_list; count > 0; count--, str_list++) {
+ strcpy(str, mb_text);
+ *str_list = str;
+ length = strlen(str) + 1;
+ str += length;
+ mb_text += length;
+ }
+ }
+}
+
+static int
+_XTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ const char *to_type,
+ XPointer **list_ret,
+ int *count_ret)
+{
+ XlcConv conv = NULL;
+ const char *from_type;
+ XPointer from, to, buf;
+ char *str_ptr, *last_ptr;
+ Atom encoding;
+ int from_left, to_left, buf_len, ret, len;
+ int unconv_num, nitems = text_prop->nitems;
+ Bool is_wide_char = False, do_strcpy = False;
+
+ if (strcmp(XlcNWideChar, to_type) == 0)
+ is_wide_char = True;
+
+ if (nitems <= 0) {
+ *list_ret = NULL;
+ *count_ret = 0;
+ return Success;
+ }
+
+ if (text_prop->format != 8)
+ return XConverterNotFound;
+
+ encoding = text_prop->encoding;
+ if (encoding == XA_STRING)
+ from_type = XlcNString;
+ else if (encoding == XInternAtom(dpy, "UTF8_STRING", False))
+ from_type = XlcNUtf8String;
+ else if (encoding == XInternAtom(dpy, "COMPOUND_TEXT", False))
+ from_type = XlcNCompoundText;
+ else if (encoding == XInternAtom(dpy, XLC_PUBLIC(lcd, encoding_name), False))
+ from_type = XlcNMultiByte;
+ else
+ return XConverterNotFound;
+
+ if (is_wide_char) {
+ buf_len = (text_prop->nitems + 1) * sizeof(wchar_t);;
+ } else {
+ if (strcmp(to_type, XlcNUtf8String) == 0)
+ buf_len = text_prop->nitems * 6 + 1;
+ else
+ buf_len = text_prop->nitems * XLC_PUBLIC(lcd, mb_cur_max) + 1;
+ }
+ buf = (XPointer) Xmalloc(buf_len);
+ if (buf == NULL)
+ return XNoMemory;
+ to = buf;
+ to_left = buf_len;
+
+ /* can be XlcNMultiByte to XlcNMultiByte,
+ or XlcNUtf8String to XlcNUtf8String */
+ if (!strcmp(from_type, to_type)) {
+ do_strcpy = True;
+ } else {
+ conv = _XlcOpenConverter(lcd, from_type, lcd, to_type);
+ if (conv == NULL) {
+ Xfree(buf);
+ return XConverterNotFound;
+ }
+ }
+
+ last_ptr = str_ptr = (char *) text_prop->value;
+ unconv_num = *count_ret = 0;
+
+ while (1) {
+ if (nitems == 0 || *str_ptr == 0) {
+ from = (XPointer) last_ptr;
+ from_left = str_ptr - last_ptr;
+ last_ptr = str_ptr;
+
+ if (do_strcpy) {
+ len = min(from_left, to_left);
+ strncpy(to, from, len);
+ from += len;
+ to += len;
+ from_left -= len;
+ to_left -= len;
+ ret = 0;
+ } else {
+ ret = _XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0);
+ }
+
+ if (ret < 0)
+ continue;
+
+ unconv_num += ret;
+ (*count_ret)++;
+
+ if (nitems == 0)
+ break;
+ last_ptr = ++str_ptr;
+ if (is_wide_char) {
+ *((wchar_t *)to) = (wchar_t) 0;
+ to += sizeof(wchar_t);
+ to_left -= sizeof(wchar_t);
+ } else {
+ *((char *)to) = '\0';
+ to++;
+ to_left--;
+ }
+ if (! do_strcpy)
+ _XlcResetConverter(conv);
+ } else
+ str_ptr++;
+
+ nitems--;
+ }
+
+ if (! do_strcpy)
+ _XlcCloseConverter(conv);
+
+ if (is_wide_char) {
+ *((wchar_t *) to) = (wchar_t) 0;
+ to_left -= sizeof(wchar_t);
+ } else {
+ *((char *) to) = '\0';
+ to_left--;
+ }
+
+ *list_ret = alloc_list(is_wide_char, *count_ret, buf_len - to_left);
+ if (*list_ret)
+ copy_list(is_wide_char, buf, *list_ret, *count_ret);
+
+ Xfree(buf);
+
+ return unconv_num;
+}
+
+int
+_XmbTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNMultiByte,
+ (XPointer **) list_ret, count_ret);
+}
+
+int
+_XwcTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ wchar_t ***list_ret,
+ int *count_ret)
+{
+ return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNWideChar,
+ (XPointer **) list_ret, count_ret);
+}
+
+int
+_Xutf8TextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNUtf8String,
+ (XPointer **) list_ret, count_ret);
+}
+
+void
+_XwcFreeStringList(
+ XLCd lcd,
+ wchar_t **list)
+{
+ if (list) {
+ if (*list)
+ Xfree(*list);
+ Xfree(list);
+ }
+}
diff --git a/libX11/src/xlibi18n/lcPubWrap.c b/libX11/src/xlibi18n/lcPubWrap.c
index 2a5ac08d8..bf4fa4b7a 100644
--- a/libX11/src/xlibi18n/lcPubWrap.c
+++ b/libX11/src/xlibi18n/lcPubWrap.c
@@ -1,99 +1,99 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-
-char *
-_XGetLCValues(XLCd lcd, ...)
-{
- va_list var;
- XlcArgList args;
- char *ret;
- int num_args;
- XLCdPublicMethodsPart *methods = XLC_PUBLIC_METHODS(lcd);
-
- va_start(var, lcd);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, lcd);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (char *) NULL;
-
- ret = (*methods->get_values)(lcd, args, num_args);
-
- Xfree(args);
-
- return ret;
-}
-
-void
-_XlcDestroyLC(
- XLCd lcd)
-{
- XLCdPublicMethods methods = (XLCdPublicMethods) lcd->methods;
-
- (*methods->pub.destroy)(lcd);
-}
-
-XLCd
-_XlcCreateLC(
- const char *name,
- XLCdMethods methods)
-{
- XLCdPublicMethods pub_methods = (XLCdPublicMethods) methods;
- XLCd lcd;
-
- lcd = (*pub_methods->pub.create)(name, methods);
- if (lcd == NULL)
- return (XLCd) NULL;
-
- if (lcd->core->name == NULL) {
- lcd->core->name = (char*) Xmalloc(strlen(name) + 1);
- if (lcd->core->name == NULL)
- goto err;
- strcpy(lcd->core->name, name);
- }
-
- if (lcd->methods == NULL)
- lcd->methods = methods;
-
- if ((*pub_methods->pub.initialize)(lcd) == False)
- goto err;
-
- return lcd;
-
-err:
- _XlcDestroyLC(lcd);
-
- return (XLCd) NULL;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+
+char *
+_XGetLCValues(XLCd lcd, ...)
+{
+ va_list var;
+ XlcArgList args;
+ char *ret;
+ int num_args;
+ XLCdPublicMethodsPart *methods = XLC_PUBLIC_METHODS(lcd);
+
+ va_start(var, lcd);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, lcd);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (char *) NULL;
+
+ ret = (*methods->get_values)(lcd, args, num_args);
+
+ Xfree(args);
+
+ return ret;
+}
+
+void
+_XlcDestroyLC(
+ XLCd lcd)
+{
+ XLCdPublicMethods methods = (XLCdPublicMethods) lcd->methods;
+
+ (*methods->pub.destroy)(lcd);
+}
+
+XLCd
+_XlcCreateLC(
+ const char *name,
+ XLCdMethods methods)
+{
+ XLCdPublicMethods pub_methods = (XLCdPublicMethods) methods;
+ XLCd lcd;
+
+ lcd = (*pub_methods->pub.create)(name, methods);
+ if (lcd == NULL)
+ return (XLCd) NULL;
+
+ if (lcd->core->name == NULL) {
+ lcd->core->name = (char*) Xmalloc(strlen(name) + 1);
+ if (lcd->core->name == NULL)
+ goto err;
+ strcpy(lcd->core->name, name);
+ }
+
+ if (lcd->methods == NULL)
+ lcd->methods = methods;
+
+ if ((*pub_methods->pub.initialize)(lcd) == False)
+ goto err;
+
+ return lcd;
+
+err:
+ _XlcDestroyLC(lcd);
+
+ return (XLCd) NULL;
+}
diff --git a/libX11/src/xlibi18n/lcRM.c b/libX11/src/xlibi18n/lcRM.c
index 9f72504ee..b83d0cb62 100644
--- a/libX11/src/xlibi18n/lcRM.c
+++ b/libX11/src/xlibi18n/lcRM.c
@@ -1,224 +1,224 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- * Bug fixes: Bruno Haible XFree86 Inc.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include <stdio.h>
-
-/*
- * Default implementation of methods for Xrm parsing.
- */
-
-/* ======================= Unibyte implementation ======================= */
-
-/* Only for efficiency, to speed up things. */
-
-/* This implementation must keep the locale, for lcname. */
-typedef struct _UbStateRec {
- XLCd lcd;
-} UbStateRec, *UbState;
-
-/* Sets the state to the initial state.
- Initiates a sequence of calls to mbchar. */
-static void
-ub_mbinit(
- XPointer state)
-{
-}
-
-/* Transforms one multibyte character, and return a 'char' in the same
- parsing class. Returns the number of consumed bytes in *lenp. */
-static char
-ub_mbchar(
- XPointer state,
- const char *str,
- int *lenp)
-{
- *lenp = 1;
- return *str;
-}
-
-/* Terminates a sequence of calls to mbchar. */
-static void
-ub_mbfinish(
- XPointer state)
-{
-}
-
-/* Returns the name of the state's locale, as a static string. */
-static const char *
-ub_lcname(
- XPointer state)
-{
- return ((UbState) state)->lcd->core->name;
-}
-
-/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
-static void
-ub_destroy(
- XPointer state)
-{
- _XCloseLC(((UbState) state)->lcd);
- Xfree((char *) state);
-}
-
-static const XrmMethodsRec ub_methods = {
- ub_mbinit,
- ub_mbchar,
- ub_mbfinish,
- ub_lcname,
- ub_destroy
-};
-
-/* ======================= Multibyte implementation ======================= */
-
-/* This implementation uses an XlcConv from XlcNMultiByte to XlcNWideChar. */
-typedef struct _MbStateRec {
- XLCd lcd;
- XlcConv conv;
-} MbStateRec, *MbState;
-
-/* Sets the state to the initial state.
- Initiates a sequence of calls to mbchar. */
-static void
-mb_mbinit(
- XPointer state)
-{
- _XlcResetConverter(((MbState) state)->conv);
-}
-
-/* Transforms one multibyte character, and return a 'char' in the same
- parsing class. Returns the number of consumed bytes in *lenp. */
-static char
-mb_mbchar(
- XPointer state,
- const char *str,
- int *lenp)
-{
- XlcConv conv = ((MbState) state)->conv;
- const char *from;
- wchar_t *to, wc;
- int cur_max, i, from_left, to_left, ret;
-
- cur_max = XLC_PUBLIC(((MbState) state)->lcd, mb_cur_max);
-
- from = str;
- /* Determine from_left. Avoid overrun error which could occur if
- from_left > strlen(str). */
- from_left = cur_max;
- for (i = 0; i < cur_max; i++)
- if (str[i] == '\0') {
- from_left = i;
- break;
- }
- *lenp = from_left;
-
- to = &wc;
- to_left = 1;
-
- ret = _XlcConvert(conv, (XPointer *) &from, &from_left,
- (XPointer *) &to, &to_left, NULL, 0);
- *lenp -= from_left;
-
- if (ret < 0 || to_left > 0) {
- /* Invalid or incomplete multibyte character seen. */
- *lenp = 1;
- return 0x7f;
- }
- /* Return a 'char' equivalent to wc. */
- return (wc >= 0 && wc <= 0x7f ? wc : 0x7f);
-}
-
-/* Terminates a sequence of calls to mbchar. */
-static void
-mb_mbfinish(
- XPointer state)
-{
-}
-
-/* Returns the name of the state's locale, as a static string. */
-static const char *
-mb_lcname(
- XPointer state)
-{
- return ((MbState) state)->lcd->core->name;
-}
-
-/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
-static void
-mb_destroy(
- XPointer state)
-{
- _XlcCloseConverter(((MbState) state)->conv);
- _XCloseLC(((MbState) state)->lcd);
- Xfree((char *) state);
-}
-
-static const XrmMethodsRec mb_methods = {
- mb_mbinit,
- mb_mbchar,
- mb_mbfinish,
- mb_lcname,
- mb_destroy
-};
-
-/* ======================= Exported function ======================= */
-
-XrmMethods
-_XrmDefaultInitParseInfo(
- XLCd lcd,
- XPointer *rm_state)
-{
- if (XLC_PUBLIC(lcd, mb_cur_max) == 1) {
- /* Unibyte case. */
- UbState state = (UbState) Xmalloc(sizeof(UbStateRec));
- if (state == NULL)
- return (XrmMethods) NULL;
-
- state->lcd = lcd;
-
- *rm_state = (XPointer) state;
- return &ub_methods;
- } else {
- /* Multibyte case. */
- MbState state = (MbState) Xmalloc(sizeof(MbStateRec));
- if (state == NULL)
- return (XrmMethods) NULL;
-
- state->lcd = lcd;
- state->conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
- if (state->conv == NULL) {
- Xfree((char *) state);
- return (XrmMethods) NULL;
- }
-
- *rm_state = (XPointer) state;
- return &mb_methods;
- }
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ * Bug fixes: Bruno Haible XFree86 Inc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include <stdio.h>
+
+/*
+ * Default implementation of methods for Xrm parsing.
+ */
+
+/* ======================= Unibyte implementation ======================= */
+
+/* Only for efficiency, to speed up things. */
+
+/* This implementation must keep the locale, for lcname. */
+typedef struct _UbStateRec {
+ XLCd lcd;
+} UbStateRec, *UbState;
+
+/* Sets the state to the initial state.
+ Initiates a sequence of calls to mbchar. */
+static void
+ub_mbinit(
+ XPointer state)
+{
+}
+
+/* Transforms one multibyte character, and return a 'char' in the same
+ parsing class. Returns the number of consumed bytes in *lenp. */
+static char
+ub_mbchar(
+ XPointer state,
+ const char *str,
+ int *lenp)
+{
+ *lenp = 1;
+ return *str;
+}
+
+/* Terminates a sequence of calls to mbchar. */
+static void
+ub_mbfinish(
+ XPointer state)
+{
+}
+
+/* Returns the name of the state's locale, as a static string. */
+static const char *
+ub_lcname(
+ XPointer state)
+{
+ return ((UbState) state)->lcd->core->name;
+}
+
+/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
+static void
+ub_destroy(
+ XPointer state)
+{
+ _XCloseLC(((UbState) state)->lcd);
+ Xfree((char *) state);
+}
+
+static const XrmMethodsRec ub_methods = {
+ ub_mbinit,
+ ub_mbchar,
+ ub_mbfinish,
+ ub_lcname,
+ ub_destroy
+};
+
+/* ======================= Multibyte implementation ======================= */
+
+/* This implementation uses an XlcConv from XlcNMultiByte to XlcNWideChar. */
+typedef struct _MbStateRec {
+ XLCd lcd;
+ XlcConv conv;
+} MbStateRec, *MbState;
+
+/* Sets the state to the initial state.
+ Initiates a sequence of calls to mbchar. */
+static void
+mb_mbinit(
+ XPointer state)
+{
+ _XlcResetConverter(((MbState) state)->conv);
+}
+
+/* Transforms one multibyte character, and return a 'char' in the same
+ parsing class. Returns the number of consumed bytes in *lenp. */
+static char
+mb_mbchar(
+ XPointer state,
+ const char *str,
+ int *lenp)
+{
+ XlcConv conv = ((MbState) state)->conv;
+ const char *from;
+ wchar_t *to, wc;
+ int cur_max, i, from_left, to_left, ret;
+
+ cur_max = XLC_PUBLIC(((MbState) state)->lcd, mb_cur_max);
+
+ from = str;
+ /* Determine from_left. Avoid overrun error which could occur if
+ from_left > strlen(str). */
+ from_left = cur_max;
+ for (i = 0; i < cur_max; i++)
+ if (str[i] == '\0') {
+ from_left = i;
+ break;
+ }
+ *lenp = from_left;
+
+ to = &wc;
+ to_left = 1;
+
+ ret = _XlcConvert(conv, (XPointer *) &from, &from_left,
+ (XPointer *) &to, &to_left, NULL, 0);
+ *lenp -= from_left;
+
+ if (ret < 0 || to_left > 0) {
+ /* Invalid or incomplete multibyte character seen. */
+ *lenp = 1;
+ return 0x7f;
+ }
+ /* Return a 'char' equivalent to wc. */
+ return (wc >= 0 && wc <= 0x7f ? wc : 0x7f);
+}
+
+/* Terminates a sequence of calls to mbchar. */
+static void
+mb_mbfinish(
+ XPointer state)
+{
+}
+
+/* Returns the name of the state's locale, as a static string. */
+static const char *
+mb_lcname(
+ XPointer state)
+{
+ return ((MbState) state)->lcd->core->name;
+}
+
+/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
+static void
+mb_destroy(
+ XPointer state)
+{
+ _XlcCloseConverter(((MbState) state)->conv);
+ _XCloseLC(((MbState) state)->lcd);
+ Xfree((char *) state);
+}
+
+static const XrmMethodsRec mb_methods = {
+ mb_mbinit,
+ mb_mbchar,
+ mb_mbfinish,
+ mb_lcname,
+ mb_destroy
+};
+
+/* ======================= Exported function ======================= */
+
+XrmMethods
+_XrmDefaultInitParseInfo(
+ XLCd lcd,
+ XPointer *rm_state)
+{
+ if (XLC_PUBLIC(lcd, mb_cur_max) == 1) {
+ /* Unibyte case. */
+ UbState state = (UbState) Xmalloc(sizeof(UbStateRec));
+ if (state == NULL)
+ return (XrmMethods) NULL;
+
+ state->lcd = lcd;
+
+ *rm_state = (XPointer) state;
+ return &ub_methods;
+ } else {
+ /* Multibyte case. */
+ MbState state = (MbState) Xmalloc(sizeof(MbStateRec));
+ if (state == NULL)
+ return (XrmMethods) NULL;
+
+ state->lcd = lcd;
+ state->conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
+ if (state->conv == NULL) {
+ Xfree((char *) state);
+ return (XrmMethods) NULL;
+ }
+
+ *rm_state = (XPointer) state;
+ return &mb_methods;
+ }
+}
diff --git a/libX11/src/xlibi18n/lcStd.c b/libX11/src/xlibi18n/lcStd.c
index 87f6b60b3..08ed57a1a 100644
--- a/libX11/src/xlibi18n/lcStd.c
+++ b/libX11/src/xlibi18n/lcStd.c
@@ -1,368 +1,368 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-
-int
-_Xlcmbtowc(
- XLCd lcd,
- wchar_t *wstr,
- char *str,
- int len)
-{
- static XLCd last_lcd = NULL;
- static XlcConv conv = NULL;
- XPointer from, to;
- int from_left, to_left;
- wchar_t tmp_wc;
-
- if (lcd == NULL) {
- lcd = _XlcCurrentLC();
- if (lcd == NULL)
- return -1;
- }
- if (str == NULL)
- return XLC_PUBLIC(lcd, is_state_depend);
-
- if (conv && lcd != last_lcd) {
- _XlcCloseConverter(conv);
- conv = NULL;
- }
-
- last_lcd = lcd;
-
- if (conv == NULL) {
- conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
- if (conv == NULL)
- return -1;
- }
-
- from = (XPointer) str;
- from_left = len;
- to = (XPointer) (wstr ? wstr : &tmp_wc);
- to_left = 1;
-
- if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
- return -1;
-
- return (len - from_left);
-}
-
-int
-_Xlcwctomb(
- XLCd lcd,
- char *str,
- wchar_t wc)
-{
- static XLCd last_lcd = NULL;
- static XlcConv conv = NULL;
- XPointer from, to;
- int from_left, to_left, length;
-
- if (lcd == NULL) {
- lcd = _XlcCurrentLC();
- if (lcd == NULL)
- return -1;
- }
- if (str == NULL)
- return XLC_PUBLIC(lcd, is_state_depend);
-
- if (conv && lcd != last_lcd) {
- _XlcCloseConverter(conv);
- conv = NULL;
- }
-
- last_lcd = lcd;
-
- if (conv == NULL) {
- conv = _XlcOpenConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte);
- if (conv == NULL)
- return -1;
- }
-
- from = (XPointer) &wc;
- from_left = 1;
- to = (XPointer) str;
- length = to_left = XLC_PUBLIC(lcd, mb_cur_max);
-
- if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
- return -1;
-
- return (length - to_left);
-}
-
-int
-_Xlcmbstowcs(
- XLCd lcd,
- wchar_t *wstr,
- char *str,
- int len)
-{
- XlcConv conv;
- XPointer from, to;
- int from_left, to_left, ret;
-
- if (lcd == NULL) {
- lcd = _XlcCurrentLC();
- if (lcd == NULL)
- return -1;
- }
-
- conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
- if (conv == NULL)
- return -1;
-
- from = (XPointer) str;
- from_left = strlen(str);
- to = (XPointer) wstr;
- to_left = len;
-
- if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
- ret = -1;
- else {
- ret = len - to_left;
- if (wstr && to_left > 0)
- wstr[ret] = (wchar_t) 0;
- }
-
- _XlcCloseConverter(conv);
-
- return ret;
-}
-
-int
-_Xlcwcstombs(
- XLCd lcd,
- char *str,
- wchar_t *wstr,
- int len)
-{
- XlcConv conv;
- XPointer from, to;
- int from_left, to_left, ret;
-
- if (lcd == NULL) {
- lcd = _XlcCurrentLC();
- if (lcd == NULL)
- return -1;
- }
-
- conv = _XlcOpenConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte);
- if (conv == NULL)
- return -1;
-
- from = (XPointer) wstr;
- from_left = _Xwcslen(wstr);
- to = (XPointer) str;
- to_left = len;
-
- if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
- ret = -1;
- else {
- ret = len - to_left;
- if (str && to_left > 0)
- str[ret] = '\0';
- }
-
- _XlcCloseConverter(conv);
-
- return ret;
-}
-
-
-int
-_Xmbtowc(
- wchar_t *wstr,
-#ifdef ISC
- char const *str,
- size_t len
-#else
- char *str,
- int len
-#endif
- )
-{
- return _Xlcmbtowc((XLCd) NULL, wstr, str, len);
-}
-
-int
-_Xmblen(
-#ifdef ISC
- char const *str,
- size_t len
-#else
- char *str,
- int len
-#endif
- )
-{
- return _Xmbtowc((wchar_t *) NULL, str, len);
-}
-
-int
-_Xwctomb(
- char *str,
- wchar_t wc)
-{
- return _Xlcwctomb((XLCd) NULL, str, wc);
-}
-
-int
-_Xmbstowcs(
- wchar_t *wstr,
- char *str,
- int len)
-{
- return _Xlcmbstowcs((XLCd) NULL, wstr, str, len);
-}
-
-int
-_Xwcstombs(
- char *str,
- wchar_t *wstr,
- int len)
-{
- return _Xlcwcstombs((XLCd) NULL, str, wstr, len);
-}
-
-wchar_t *
-_Xwcscpy(
- register wchar_t *wstr1, register wchar_t *wstr2)
-{
- wchar_t *wstr_tmp = wstr1;
-
- while ((*wstr1++ = *wstr2++))
- ;
-
- return wstr_tmp;
-}
-
-wchar_t *
-_Xwcsncpy(
- register wchar_t *wstr1, register wchar_t *wstr2,
- register int len)
-{
- wchar_t *wstr_tmp = wstr1;
-
- while (len-- > 0)
- if (!(*wstr1++ = *wstr2++))
- break;
-
- while (len-- > 0)
- *wstr1++ = (wchar_t) 0;
-
- return wstr_tmp;
-}
-
-int
-_Xwcslen(
- register wchar_t *wstr)
-{
- register wchar_t *wstr_ptr = wstr;
-
- while (*wstr_ptr)
- wstr_ptr++;
-
- return wstr_ptr - wstr;
-}
-
-int
-_Xwcscmp(
- register wchar_t *wstr1, register wchar_t *wstr2)
-{
- for ( ; *wstr1 && *wstr2; wstr1++, wstr2++)
- if (*wstr1 != *wstr2)
- break;
-
- return *wstr1 - *wstr2;
-}
-
-int
-_Xwcsncmp(
- register wchar_t *wstr1, register wchar_t *wstr2,
- register int len)
-{
- for ( ; *wstr1 && *wstr2 && len > 0; wstr1++, wstr2++, len--)
- if (*wstr1 != *wstr2)
- break;
-
- if (len <= 0)
- return 0;
-
- return *wstr1 - *wstr2;
-}
-
-
-int
-_Xlcmbstoutf8(
- XLCd lcd,
- char *ustr,
- const char *str,
- int len)
-{
- XlcConv conv;
- XPointer from, to;
- int from_left, to_left, ret;
-
- if (lcd == NULL) {
- lcd = _XlcCurrentLC();
- if (lcd == NULL)
- return -1;
- }
-
- conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNUtf8String);
- if (conv == NULL)
- return -1;
-
- from = (XPointer) str;
- from_left = strlen(str);
- to = (XPointer) ustr;
- to_left = len;
-
- if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
- ret = -1;
- else {
- ret = len - to_left;
- if (ustr && to_left > 0)
- ustr[ret] = '\0';
- }
-
- _XlcCloseConverter(conv);
-
- return ret;
-}
-
-int
-_Xmbstoutf8(
- char *ustr,
- const char *str,
- int len)
-{
- return _Xlcmbstoutf8((XLCd) NULL, ustr, str, len);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+
+int
+_Xlcmbtowc(
+ XLCd lcd,
+ wchar_t *wstr,
+ char *str,
+ int len)
+{
+ static XLCd last_lcd = NULL;
+ static XlcConv conv = NULL;
+ XPointer from, to;
+ int from_left, to_left;
+ wchar_t tmp_wc;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+ if (str == NULL)
+ return XLC_PUBLIC(lcd, is_state_depend);
+
+ if (conv && lcd != last_lcd) {
+ _XlcCloseConverter(conv);
+ conv = NULL;
+ }
+
+ last_lcd = lcd;
+
+ if (conv == NULL) {
+ conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
+ if (conv == NULL)
+ return -1;
+ }
+
+ from = (XPointer) str;
+ from_left = len;
+ to = (XPointer) (wstr ? wstr : &tmp_wc);
+ to_left = 1;
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ return -1;
+
+ return (len - from_left);
+}
+
+int
+_Xlcwctomb(
+ XLCd lcd,
+ char *str,
+ wchar_t wc)
+{
+ static XLCd last_lcd = NULL;
+ static XlcConv conv = NULL;
+ XPointer from, to;
+ int from_left, to_left, length;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+ if (str == NULL)
+ return XLC_PUBLIC(lcd, is_state_depend);
+
+ if (conv && lcd != last_lcd) {
+ _XlcCloseConverter(conv);
+ conv = NULL;
+ }
+
+ last_lcd = lcd;
+
+ if (conv == NULL) {
+ conv = _XlcOpenConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte);
+ if (conv == NULL)
+ return -1;
+ }
+
+ from = (XPointer) &wc;
+ from_left = 1;
+ to = (XPointer) str;
+ length = to_left = XLC_PUBLIC(lcd, mb_cur_max);
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ return -1;
+
+ return (length - to_left);
+}
+
+int
+_Xlcmbstowcs(
+ XLCd lcd,
+ wchar_t *wstr,
+ char *str,
+ int len)
+{
+ XlcConv conv;
+ XPointer from, to;
+ int from_left, to_left, ret;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+
+ conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
+ if (conv == NULL)
+ return -1;
+
+ from = (XPointer) str;
+ from_left = strlen(str);
+ to = (XPointer) wstr;
+ to_left = len;
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ ret = -1;
+ else {
+ ret = len - to_left;
+ if (wstr && to_left > 0)
+ wstr[ret] = (wchar_t) 0;
+ }
+
+ _XlcCloseConverter(conv);
+
+ return ret;
+}
+
+int
+_Xlcwcstombs(
+ XLCd lcd,
+ char *str,
+ wchar_t *wstr,
+ int len)
+{
+ XlcConv conv;
+ XPointer from, to;
+ int from_left, to_left, ret;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+
+ conv = _XlcOpenConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte);
+ if (conv == NULL)
+ return -1;
+
+ from = (XPointer) wstr;
+ from_left = _Xwcslen(wstr);
+ to = (XPointer) str;
+ to_left = len;
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ ret = -1;
+ else {
+ ret = len - to_left;
+ if (str && to_left > 0)
+ str[ret] = '\0';
+ }
+
+ _XlcCloseConverter(conv);
+
+ return ret;
+}
+
+
+int
+_Xmbtowc(
+ wchar_t *wstr,
+#ifdef ISC
+ char const *str,
+ size_t len
+#else
+ char *str,
+ int len
+#endif
+ )
+{
+ return _Xlcmbtowc((XLCd) NULL, wstr, str, len);
+}
+
+int
+_Xmblen(
+#ifdef ISC
+ char const *str,
+ size_t len
+#else
+ char *str,
+ int len
+#endif
+ )
+{
+ return _Xmbtowc((wchar_t *) NULL, str, len);
+}
+
+int
+_Xwctomb(
+ char *str,
+ wchar_t wc)
+{
+ return _Xlcwctomb((XLCd) NULL, str, wc);
+}
+
+int
+_Xmbstowcs(
+ wchar_t *wstr,
+ char *str,
+ int len)
+{
+ return _Xlcmbstowcs((XLCd) NULL, wstr, str, len);
+}
+
+int
+_Xwcstombs(
+ char *str,
+ wchar_t *wstr,
+ int len)
+{
+ return _Xlcwcstombs((XLCd) NULL, str, wstr, len);
+}
+
+wchar_t *
+_Xwcscpy(
+ register wchar_t *wstr1, register wchar_t *wstr2)
+{
+ wchar_t *wstr_tmp = wstr1;
+
+ while ((*wstr1++ = *wstr2++))
+ ;
+
+ return wstr_tmp;
+}
+
+wchar_t *
+_Xwcsncpy(
+ register wchar_t *wstr1, register wchar_t *wstr2,
+ register int len)
+{
+ wchar_t *wstr_tmp = wstr1;
+
+ while (len-- > 0)
+ if (!(*wstr1++ = *wstr2++))
+ break;
+
+ while (len-- > 0)
+ *wstr1++ = (wchar_t) 0;
+
+ return wstr_tmp;
+}
+
+int
+_Xwcslen(
+ register wchar_t *wstr)
+{
+ register wchar_t *wstr_ptr = wstr;
+
+ while (*wstr_ptr)
+ wstr_ptr++;
+
+ return wstr_ptr - wstr;
+}
+
+int
+_Xwcscmp(
+ register wchar_t *wstr1, register wchar_t *wstr2)
+{
+ for ( ; *wstr1 && *wstr2; wstr1++, wstr2++)
+ if (*wstr1 != *wstr2)
+ break;
+
+ return *wstr1 - *wstr2;
+}
+
+int
+_Xwcsncmp(
+ register wchar_t *wstr1, register wchar_t *wstr2,
+ register int len)
+{
+ for ( ; *wstr1 && *wstr2 && len > 0; wstr1++, wstr2++, len--)
+ if (*wstr1 != *wstr2)
+ break;
+
+ if (len <= 0)
+ return 0;
+
+ return *wstr1 - *wstr2;
+}
+
+
+int
+_Xlcmbstoutf8(
+ XLCd lcd,
+ char *ustr,
+ const char *str,
+ int len)
+{
+ XlcConv conv;
+ XPointer from, to;
+ int from_left, to_left, ret;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+
+ conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNUtf8String);
+ if (conv == NULL)
+ return -1;
+
+ from = (XPointer) str;
+ from_left = strlen(str);
+ to = (XPointer) ustr;
+ to_left = len;
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ ret = -1;
+ else {
+ ret = len - to_left;
+ if (ustr && to_left > 0)
+ ustr[ret] = '\0';
+ }
+
+ _XlcCloseConverter(conv);
+
+ return ret;
+}
+
+int
+_Xmbstoutf8(
+ char *ustr,
+ const char *str,
+ int len)
+{
+ return _Xlcmbstoutf8((XLCd) NULL, ustr, str, len);
+}
diff --git a/libX11/src/xlibi18n/lcTxtPr.c b/libX11/src/xlibi18n/lcTxtPr.c
index 4dfafe018..59ca262d1 100644
--- a/libX11/src/xlibi18n/lcTxtPr.c
+++ b/libX11/src/xlibi18n/lcTxtPr.c
@@ -1,254 +1,254 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <stdio.h>
-
-static int
-get_buf_size(
- Bool is_wide_char,
- XPointer list,
- int count)
-{
- int length = 0;
- char **mb_list;
- wchar_t **wc_list;
-
- if (list == NULL)
- return 0;
-
- if (is_wide_char) {
- wc_list = (wchar_t **) list;
- for ( ; count-- > 0; wc_list++) {
- if (*wc_list)
- length += _Xwcslen(*wc_list) + 1;
- }
- length *= 5; /* XXX */
- } else {
- mb_list = (char **) list;
- for ( ; count-- > 0; mb_list++) {
- if (*mb_list)
- length += strlen(*mb_list) + 1;
- }
- length *= 3; /* XXX */
- }
- length = (length / BUFSIZ + 1) * BUFSIZ; /* XXX */
-
- return length;
-}
-
-static int
-_XTextListToTextProperty(
- XLCd lcd,
- Display *dpy,
- const char *from_type,
- XPointer list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- Atom encoding;
- XlcConv conv;
- const char *to_type;
- char **mb_list = NULL;
- wchar_t **wc_list = NULL;
- XPointer from;
- char *to, *buf, *value;
- int from_left, to_left, buf_len, nitems, unconv_num = 0, ret, i;
- Bool is_wide_char = False;
-
- if (strcmp(XlcNWideChar, from_type) == 0)
- is_wide_char = True;
-
- buf_len = get_buf_size(is_wide_char, list, count);
- if ((buf = (char *) Xmalloc(buf_len)) == NULL)
- return XNoMemory;
-
- switch (style) {
- case XStringStyle:
- case XStdICCTextStyle:
- encoding = XA_STRING;
- to_type = XlcNString;
- break;
- case XUTF8StringStyle:
- encoding = XInternAtom(dpy, "UTF8_STRING", False);
- to_type = XlcNUtf8String;
- break;
- case XCompoundTextStyle:
- encoding = XInternAtom(dpy, "COMPOUND_TEXT", False);
- to_type = XlcNCompoundText;
- break;
- case XTextStyle:
- encoding = XInternAtom(dpy, XLC_PUBLIC(lcd, encoding_name), False);
- to_type = XlcNMultiByte;
- if (is_wide_char == False) {
- nitems = 0;
- mb_list = (char **) list;
- to = buf;
- for (i = 0; i < count && buf_len > 0; i++) {
- if (*mb_list)
- strcpy(to, *mb_list);
- else
- *to = '\0';
- from_left = (*mb_list ? strlen(*mb_list) : 0) + 1;
- nitems += from_left;
- to += from_left;
- mb_list++;
- }
- unconv_num = 0;
- goto done;
- }
- break;
- default:
- Xfree(buf);
- return XConverterNotFound;
- }
-
- if (count < 1) {
- nitems = 0;
- goto done;
- }
-
-retry:
- conv = _XlcOpenConverter(lcd, from_type, lcd, to_type);
- if (conv == NULL) {
- Xfree(buf);
- return XConverterNotFound;
- }
-
- if (is_wide_char)
- wc_list = (wchar_t **) list;
- else
- mb_list = (char **) list;
-
- to = buf;
- to_left = buf_len;
-
- unconv_num = 0;
-
- for (i = 1; to_left > 0; i++) {
- if (is_wide_char) {
- from = (XPointer) *wc_list;
- from_left = _Xwcslen(*wc_list);
- wc_list++;
- } else {
- from = (XPointer) *mb_list;
- from_left = (*mb_list ? strlen(*mb_list) : 0);
- mb_list++;
- }
-
- ret = _XlcConvert(conv, &from, &from_left, (XPointer *) &to, &to_left,
- NULL, 0);
-
- if (ret < 0)
- continue;
-
- if (ret > 0 && style == XStdICCTextStyle && encoding == XA_STRING) {
- _XlcCloseConverter(conv);
- encoding = XInternAtom(dpy, "COMPOUND_TEXT", False);
- to_type = XlcNCompoundText;
- goto retry;
- }
-
- unconv_num += ret;
- *to++ = '\0';
- to_left--;
-
- if (i >= count)
- break;
-
- _XlcResetConverter(conv);
- }
-
- _XlcCloseConverter(conv);
-
- nitems = to - buf;
-done:
- if (nitems <= 0)
- nitems = 1;
- value = (char *) Xmalloc(nitems);
- if (value == NULL) {
- Xfree(buf);
- return XNoMemory;
- }
- if (nitems == 1)
- *value = 0;
- else
- memcpy(value, buf, nitems);
- nitems--;
- Xfree(buf);
-
- text_prop->value = (unsigned char *) value;
- text_prop->encoding = encoding;
- text_prop->format = 8;
- text_prop->nitems = nitems;
-
- return unconv_num;
-}
-
-int
-_XmbTextListToTextProperty(
- XLCd lcd,
- Display *dpy,
- char **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- return _XTextListToTextProperty(lcd, dpy, XlcNMultiByte, (XPointer) list,
- count, style, text_prop);
-}
-
-int
-_XwcTextListToTextProperty(
- XLCd lcd,
- Display *dpy,
- wchar_t **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- return _XTextListToTextProperty(lcd, dpy, XlcNWideChar, (XPointer) list,
- count, style, text_prop);
-}
-
-int
-_Xutf8TextListToTextProperty(
- XLCd lcd,
- Display *dpy,
- char **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- return _XTextListToTextProperty(lcd, dpy, XlcNUtf8String, (XPointer) list,
- count, style, text_prop);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <stdio.h>
+
+static int
+get_buf_size(
+ Bool is_wide_char,
+ XPointer list,
+ int count)
+{
+ int length = 0;
+ char **mb_list;
+ wchar_t **wc_list;
+
+ if (list == NULL)
+ return 0;
+
+ if (is_wide_char) {
+ wc_list = (wchar_t **) list;
+ for ( ; count-- > 0; wc_list++) {
+ if (*wc_list)
+ length += _Xwcslen(*wc_list) + 1;
+ }
+ length *= 5; /* XXX */
+ } else {
+ mb_list = (char **) list;
+ for ( ; count-- > 0; mb_list++) {
+ if (*mb_list)
+ length += strlen(*mb_list) + 1;
+ }
+ length *= 3; /* XXX */
+ }
+ length = (length / BUFSIZ + 1) * BUFSIZ; /* XXX */
+
+ return length;
+}
+
+static int
+_XTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ const char *from_type,
+ XPointer list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ Atom encoding;
+ XlcConv conv;
+ const char *to_type;
+ char **mb_list = NULL;
+ wchar_t **wc_list = NULL;
+ XPointer from;
+ char *to, *buf, *value;
+ int from_left, to_left, buf_len, nitems, unconv_num = 0, ret, i;
+ Bool is_wide_char = False;
+
+ if (strcmp(XlcNWideChar, from_type) == 0)
+ is_wide_char = True;
+
+ buf_len = get_buf_size(is_wide_char, list, count);
+ if ((buf = (char *) Xmalloc(buf_len)) == NULL)
+ return XNoMemory;
+
+ switch (style) {
+ case XStringStyle:
+ case XStdICCTextStyle:
+ encoding = XA_STRING;
+ to_type = XlcNString;
+ break;
+ case XUTF8StringStyle:
+ encoding = XInternAtom(dpy, "UTF8_STRING", False);
+ to_type = XlcNUtf8String;
+ break;
+ case XCompoundTextStyle:
+ encoding = XInternAtom(dpy, "COMPOUND_TEXT", False);
+ to_type = XlcNCompoundText;
+ break;
+ case XTextStyle:
+ encoding = XInternAtom(dpy, XLC_PUBLIC(lcd, encoding_name), False);
+ to_type = XlcNMultiByte;
+ if (is_wide_char == False) {
+ nitems = 0;
+ mb_list = (char **) list;
+ to = buf;
+ for (i = 0; i < count && buf_len > 0; i++) {
+ if (*mb_list)
+ strcpy(to, *mb_list);
+ else
+ *to = '\0';
+ from_left = (*mb_list ? strlen(*mb_list) : 0) + 1;
+ nitems += from_left;
+ to += from_left;
+ mb_list++;
+ }
+ unconv_num = 0;
+ goto done;
+ }
+ break;
+ default:
+ Xfree(buf);
+ return XConverterNotFound;
+ }
+
+ if (count < 1) {
+ nitems = 0;
+ goto done;
+ }
+
+retry:
+ conv = _XlcOpenConverter(lcd, from_type, lcd, to_type);
+ if (conv == NULL) {
+ Xfree(buf);
+ return XConverterNotFound;
+ }
+
+ if (is_wide_char)
+ wc_list = (wchar_t **) list;
+ else
+ mb_list = (char **) list;
+
+ to = buf;
+ to_left = buf_len;
+
+ unconv_num = 0;
+
+ for (i = 1; to_left > 0; i++) {
+ if (is_wide_char) {
+ from = (XPointer) *wc_list;
+ from_left = _Xwcslen(*wc_list);
+ wc_list++;
+ } else {
+ from = (XPointer) *mb_list;
+ from_left = (*mb_list ? strlen(*mb_list) : 0);
+ mb_list++;
+ }
+
+ ret = _XlcConvert(conv, &from, &from_left, (XPointer *) &to, &to_left,
+ NULL, 0);
+
+ if (ret < 0)
+ continue;
+
+ if (ret > 0 && style == XStdICCTextStyle && encoding == XA_STRING) {
+ _XlcCloseConverter(conv);
+ encoding = XInternAtom(dpy, "COMPOUND_TEXT", False);
+ to_type = XlcNCompoundText;
+ goto retry;
+ }
+
+ unconv_num += ret;
+ *to++ = '\0';
+ to_left--;
+
+ if (i >= count)
+ break;
+
+ _XlcResetConverter(conv);
+ }
+
+ _XlcCloseConverter(conv);
+
+ nitems = to - buf;
+done:
+ if (nitems <= 0)
+ nitems = 1;
+ value = (char *) Xmalloc(nitems);
+ if (value == NULL) {
+ Xfree(buf);
+ return XNoMemory;
+ }
+ if (nitems == 1)
+ *value = 0;
+ else
+ memcpy(value, buf, nitems);
+ nitems--;
+ Xfree(buf);
+
+ text_prop->value = (unsigned char *) value;
+ text_prop->encoding = encoding;
+ text_prop->format = 8;
+ text_prop->nitems = nitems;
+
+ return unconv_num;
+}
+
+int
+_XmbTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ return _XTextListToTextProperty(lcd, dpy, XlcNMultiByte, (XPointer) list,
+ count, style, text_prop);
+}
+
+int
+_XwcTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ wchar_t **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ return _XTextListToTextProperty(lcd, dpy, XlcNWideChar, (XPointer) list,
+ count, style, text_prop);
+}
+
+int
+_Xutf8TextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ return _XTextListToTextProperty(lcd, dpy, XlcNUtf8String, (XPointer) list,
+ count, style, text_prop);
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/8bit_tab_to_h.c b/libX11/src/xlibi18n/lcUniConv/8bit_tab_to_h.c
index 1caa28a21..22ac969b2 100644
--- a/libX11/src/xlibi18n/lcUniConv/8bit_tab_to_h.c
+++ b/libX11/src/xlibi18n/lcUniConv/8bit_tab_to_h.c
@@ -1,535 +1,535 @@
-
-/*
- * Generates an 8-bit character set table from a .TXT table as found on
- * ftp.unicode.org or from a table containing the 256 Unicode values as
- * hexadecimal integers.
- * Examples:
- *
- * ./8bit_tab_to_h ISO-8859-1 iso8859_1 < tab8859_1
- * ./8bit_tab_to_h ISO-8859-2 iso8859_2 < tab8859_2
- * ./8bit_tab_to_h ISO-8859-3 iso8859_3 < tab8859_3
- * ./8bit_tab_to_h ISO-8859-4 iso8859_4 < tab8859_4
- * ./8bit_tab_to_h ISO-8859-5 iso8859_5 < tab8859_5
- * ./8bit_tab_to_h ISO-8859-6 iso8859_6 < tab8859_6
- * ./8bit_tab_to_h ISO-8859-7 iso8859_7 < tab8859_7
- * ./8bit_tab_to_h ISO-8859-8 iso8859_8 < tab8859_8
- * ./8bit_tab_to_h ISO-8859-9 iso8859_9 < tab8859_9
- * ./8bit_tab_to_h ISO-8859-10 iso8859_10 < tab8859_10
- * ./8bit_tab_to_h ISO-8859-14 iso8859_14 < tab8859_14
- * ./8bit_tab_to_h ISO-8859-15 iso8859_15 < tab8859_15
- * ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < jis0201
- * ./8bit_tab_to_h TIS620-0 tis620 < tabtis620
- * ./8bit_tab_to_h KOI8-R koi8_r < tabkoi8_r
- * ./8bit_tab_to_h KOI8-U koi8_u < tabkoi8_u
- * ./8bit_tab_to_h ARMSCII-8 armscii_8 < tabarmscii_8
- * ./8bit_tab_to_h CP1133 cp1133 < tabibm_cp1133
- * ./8bit_tab_to_h MULELAO-1 mulelao < tabmulelao_1
- * ./8bit_tab_to_h VISCII1.1-1 viscii1 < tabviscii
- * ./8bit_tab_to_h TCVN-5712 tcvn < tabtcvn
- * ./8bit_tab_to_h GEORGIAN-ACADEMY georgian_ac < tabgeorgian_academy
- * ./8bit_tab_to_h GEORGIAN-PS georgian_ps < tabgeorgian_ps
- *
- * ./8bit_tab_to_h ISO-8859-1 iso8859_1 < 8859-1.TXT
- * ./8bit_tab_to_h ISO-8859-2 iso8859_2 < 8859-2.TXT
- * ./8bit_tab_to_h ISO-8859-3 iso8859_3 < 8859-3.TXT
- * ./8bit_tab_to_h ISO-8859-4 iso8859_4 < 8859-4.TXT
- * ./8bit_tab_to_h ISO-8859-5 iso8859_5 < 8859-5.TXT
- * ./8bit_tab_to_h ISO-8859-6 iso8859_6 < 8859-6.TXT
- * ./8bit_tab_to_h ISO-8859-7 iso8859_7 < 8859-7.TXT
- * ./8bit_tab_to_h ISO-8859-8 iso8859_8 < 8859-8.TXT
- * ./8bit_tab_to_h ISO-8859-9 iso8859_9 < 8859-9.TXT
- * ./8bit_tab_to_h ISO-8859-10 iso8859_10 < 8859-10.TXT
- * ./8bit_tab_to_h ISO-8859-14 iso8859_14 < 8859-14.TXT
- * ./8bit_tab_to_h ISO-8859-15 iso8859_15 < 8859-15.TXT
- * ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < JIS0201.TXT
- * ./8bit_tab_to_h KOI8-R koi8_r < KOI8-R.TXT
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <string.h>
-
-int main (int argc, char *argv[])
-{
- const char* charsetname;
- const char* c_charsetname;
- const char* filename;
- const char* directory;
- int charset2uni[0x100];
-
- if (argc != 3 && argc != 4 && argc != 5)
- exit(1);
- charsetname = argv[1];
- c_charsetname = argv[2];
- if (argc > 3) {
- filename = argv[3];
- } else {
- char* s = (char*) malloc(strlen(c_charsetname)+strlen(".h")+1);
- strcpy(s,c_charsetname); strcat(s,".h");
- filename = s;
- }
- directory = (argc > 4 ? argv[4] : "");
-
- fprintf(stderr, "Creating %s%s\n", directory, filename);
-
- {
- int i, c;
- c = getc(stdin);
- ungetc(c,stdin);
- if (c == '#') {
- /* Read a unicode.org style .TXT file. */
- for (i = 0; i < 0x100; i++)
- charset2uni[i] = 0xfffd;
- for (;;) {
- c = getc(stdin);
- if (c == EOF)
- break;
- if (c == '\n' || c == ' ' || c == '\t')
- continue;
- if (c == '#') {
- do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
- continue;
- }
- ungetc(c,stdin);
- if (scanf("0x%x", &i) != 1 || !(i >= 0 && i < 0x100))
- exit(1);
- do { c = getc(stdin); } while (c == ' ' || c == '\t');
- if (c != EOF)
- ungetc(c,stdin);
- if (c == '\n' || c == '#')
- continue;
- if (scanf("0x%x", &charset2uni[i]) != 1)
- exit(1);
- }
- } else {
- /* Read a table of hexadecimal Unicode values. */
- for (i = 0; i < 0x100; i++) {
- if (scanf("%x", &charset2uni[i]) != 1)
- exit(1);
- if (charset2uni[i] < 0 || charset2uni[i] == 0xffff)
- charset2uni[i] = 0xfffd;
- }
- if (scanf("%x", &i) != EOF)
- exit(1);
- }
- }
-
- /* Write the output file. */
- {
- FILE* f;
-
- {
- char* fname = malloc(strlen(directory)+strlen(filename)+1);
- strcpy(fname,directory); strcat(fname,filename);
- f = fopen(fname,"w");
- if (f == NULL)
- exit(1);
- }
-
- fprintf(f, "\n");
- fprintf(f, "/*\n");
- fprintf(f, " * %s\n", charsetname);
- fprintf(f, " */\n");
- fprintf(f, "\n");
-
- {
- int i, i1, i2, i3;
- int line[16];
- int tableno;
- struct { int minline; int maxline; } tables[16];
- bool some_invalid;
- bool final_ret_reached;
-
- for (i1 = 0; i1 < 16; i1++) {
- bool all_invalid = true;
- bool all_identity = true;
- for (i2 = 0; i2 < 16; i2++) {
- i = 16*i1+i2;
- if (charset2uni[i] != 0xfffd)
- all_invalid = false;
- if (charset2uni[i] != i)
- all_identity = false;
- }
- if (all_invalid)
- line[i1] = -2;
- else if (all_identity)
- line[i1] = -1;
- else
- line[i1] = 0;
- }
- tableno = 0;
- for (i1 = 0; i1 < 16; i1++) {
- if (line[i1] >= 0) {
- if (i1 > 0 && tableno > 0 && line[i1-1] == tableno-1) {
- line[i1] = tableno-1;
- tables[tableno-1].maxline = i1;
- } else {
- tableno++;
- line[i1] = tableno-1;
- tables[tableno-1].minline = tables[tableno-1].maxline = i1;
- }
- }
- }
- some_invalid = false;
- for (i = 0; i < 0x100; i++)
- if (charset2uni[i] == 0xfffd)
- some_invalid = true;
- if (tableno > 0) {
- int t;
- for (t = 0; t < tableno; t++) {
- fprintf(f, "static const unsigned short %s_2uni", c_charsetname);
- if (tableno > 1)
- fprintf(f, "_%d", t+1);
- fprintf(f, "[%d] = {\n", 16*(tables[t].maxline-tables[t].minline+1));
- for (i1 = tables[t].minline; i1 <= tables[t].maxline; i1++) {
- fprintf(f, " /* 0x%02x */\n", 16*i1);
- for (i2 = 0; i2 < 2; i2++) {
- fprintf(f, " ");
- for (i3 = 0; i3 < 8; i3++) {
- i = 16*i1+8*i2+i3;
- fprintf(f, " 0x%04x,", charset2uni[i]);
- }
- fprintf(f, "\n");
- }
- }
- fprintf(f, "};\n");
- }
- fprintf(f, "\n");
- }
- final_ret_reached = false;
- fprintf(f, "static int\n%s_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)\n", c_charsetname);
- fprintf(f, "{\n");
- fprintf(f, " unsigned char c = *s;\n");
- if (some_invalid) {
- for (i1 = 0; i1 < 16;) {
- int t = line[i1];
- const char* indent;
- for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
- indent = (i1 == 0 && i2 == 16 ? " " : " ");
- if (i1 == 0) {
- if (i2 == 16) {
- } else {
- fprintf(f, " if (c < 0x%02x) {\n", 16*i2);
- }
- } else {
- if (i2 == 16) {
- fprintf(f, " else {\n");
- } else {
- fprintf(f, " else if (c < 0x%02x) {\n", 16*i2);
- }
- }
- if (t == -2) {
- final_ret_reached = true;
- } else if (t == -1) {
- fprintf(f, "%s*pwc = (ucs4_t) c;\n", indent);
- fprintf(f, "%sreturn 1;\n", indent);
- } else {
- fprintf(f, "%s", indent);
- some_invalid = false;
- for (i = 16*i1; i < 16*i2; i++)
- if (charset2uni[i] == 0xfffd)
- some_invalid = true;
- if (some_invalid)
- fprintf(f, "unsigned short wc = ");
- else
- fprintf(f, "*pwc = (ucs4_t) ");
- fprintf(f, "%s_2uni", c_charsetname);
- if (tableno > 1)
- fprintf(f, "_%d", t+1);
- fprintf(f, "[c");
- if (tables[t].minline > 0)
- fprintf(f, "-0x%02x", 16*tables[t].minline);
- fprintf(f, "];\n");
- if (some_invalid) {
- fprintf(f, "%sif (wc != 0xfffd) {\n", indent);
- fprintf(f, "%s *pwc = (ucs4_t) wc;\n", indent);
- fprintf(f, "%s return 1;\n", indent);
- fprintf(f, "%s}\n", indent);
- final_ret_reached = true;
- } else {
- fprintf(f, "%sreturn 1;\n", indent);
- }
- }
- if (!(i1 == 0 && i2 == 16))
- fprintf(f, " }\n");
- i1 = i2;
- }
- if (final_ret_reached)
- fprintf(f, " return RET_ILSEQ;\n");
- } else {
- for (i1 = 0; i1 < 16;) {
- int t = line[i1];
- for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
- if (i1 == 0) {
- if (i2 == 16) {
- fprintf(f, " ");
- } else {
- fprintf(f, " if (c < 0x%02x)\n ", 16*i2);
- }
- } else {
- if (i2 == 16) {
- fprintf(f, " else\n ");
- } else {
- fprintf(f, " else if (c < 0x%02x)\n ", 16*i2);
- }
- }
- if (t == -1)
- fprintf(f, "*pwc = (ucs4_t) c;\n");
- else {
- fprintf(f, "*pwc = (ucs4_t) %s_2uni", c_charsetname);
- if (tableno > 1)
- fprintf(f, "_%d", t+1);
- fprintf(f, "[c");
- if (tables[t].minline > 0)
- fprintf(f, "-0x%02x", 16*tables[t].minline);
- fprintf(f, "];\n");
- }
- i1 = i2;
- }
- fprintf(f, " return 1;\n");
- }
- fprintf(f, "}\n");
-
- }
-
- fprintf(f, "\n");
-
- {
- int uni2charset[0x10000];
- bool pages[0x100];
- int line[0x2000];
- int tableno;
- struct { int minline; int maxline; int usecount; const char* suffix; } tables[0x2000];
- bool need_c;
- bool fix_0000;
- int i, j, p, j1, j2, t;
-
- for (j = 0; j < 0x10000; j++)
- uni2charset[j] = 0;
- for (p = 0; p < 0x100; p++)
- pages[p] = false;
- for (i = 0; i < 0x100; i++) {
- j = charset2uni[i];
- if (j != 0xfffd) {
- uni2charset[j] = i;
- pages[j>>8] = true;
- }
- }
- for (j1 = 0; j1 < 0x2000; j1++) {
- bool all_invalid = true;
- bool all_identity = true;
- for (j2 = 0; j2 < 8; j2++) {
- j = 8*j1+j2;
- if (uni2charset[j] != 0)
- all_invalid = false;
- if (uni2charset[j] != j)
- all_identity = false;
- }
- if (all_invalid)
- line[j1] = -2;
- else if (all_identity)
- line[j1] = -1;
- else
- line[j1] = 0;
- }
- tableno = 0;
- for (j1 = 0; j1 < 0x2000; j1++) {
- if (line[j1] >= 0) {
- if (tableno > 0
- && ((j1 > 0 && line[j1-1] == tableno-1)
- || ((tables[tableno-1].maxline >> 5) == (j1 >> 5)
- && j1 - tables[tableno-1].maxline <= 8))) {
- line[j1] = tableno-1;
- tables[tableno-1].maxline = j1;
- } else {
- tableno++;
- line[j1] = tableno-1;
- tables[tableno-1].minline = tables[tableno-1].maxline = j1;
- }
- }
- }
- for (t = 0; t < tableno; t++) {
- tables[t].usecount = 0;
- j1 = 8*tables[t].minline;
- j2 = 8*(tables[t].maxline+1);
- for (j = j1; j < j2; j++)
- if (uni2charset[j] != 0)
- tables[t].usecount++;
- }
- for (t = 0, p = -1, i = 0; t < tableno; t++) {
- if (tables[t].usecount > 1) {
- char* s;
- if (p == tables[t].minline >> 5) {
- s = (char*) malloc(5+1);
- sprintf(s, "%02x_%d", p, ++i);
- } else {
- p = tables[t].minline >> 5;
- s = (char*) malloc(2+1);
- sprintf(s, "%02x", p);
- }
- tables[t].suffix = s;
- } else
- tables[t].suffix = NULL;
- }
- {
- p = -1;
- for (t = 0; t < tableno; t++)
- if (tables[t].usecount > 1) {
- p = 0;
- fprintf(f, "static const unsigned char %s_page%s[%d] = {\n", c_charsetname, tables[t].suffix, 8*(tables[t].maxline-tables[t].minline+1));
- for (j1 = tables[t].minline; j1 <= tables[t].maxline; j1++) {
- if ((j1 % 0x20) == 0 && j1 > tables[t].minline)
- fprintf(f, " /* 0x%04x */\n", 8*j1);
- fprintf(f, " ");
- for (j2 = 0; j2 < 8; j2++) {
- j = 8*j1+j2;
- fprintf(f, " 0x%02x,", uni2charset[j]);
- }
- fprintf(f, " /* 0x%02x-0x%02x */\n", 8*(j1 % 0x20), 8*(j1 % 0x20)+7);
- }
- fprintf(f, "};\n");
- }
- if (p >= 0)
- fprintf(f, "\n");
- }
- need_c = false;
- for (j1 = 0; j1 < 0x2000;) {
- t = line[j1];
- for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
- if (t >= 0)
- j2 = tables[t].maxline+1;
- if (!(t == -2 || (t == -1 && j1 == 0)))
- need_c = true;
- j1 = j2;
- }
- fix_0000 = false;
- fprintf(f, "static int\n%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", c_charsetname);
- fprintf(f, "{\n");
- if (need_c)
- fprintf(f, " unsigned char c = 0;\n");
- for (j1 = 0; j1 < 0x2000;) {
- t = line[j1];
- for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
- if (t >= 0) {
- if (j1 != tables[t].minline) abort();
- if (j2 > tables[t].maxline+1) abort();
- j2 = tables[t].maxline+1;
- }
- if (t == -2) {
- } else {
- if (j1 == 0)
- fprintf(f, " ");
- else
- fprintf(f, " else ");
- if (t >= 0 && tables[t].usecount == 0) abort();
- if (t >= 0 && tables[t].usecount == 1) {
- if (j2 != j1+1) abort();
- for (j = 8*j1; j < 8*j2; j++)
- if (uni2charset[j] != 0) {
- fprintf(f, "if (wc == 0x%04x)\n c = 0x%02x;\n", j, uni2charset[j]);
- break;
- }
- } else {
- if (j1 == 0) {
- fprintf(f, "if (wc < 0x%04x)", 8*j2);
- } else {
- fprintf(f, "if (wc >= 0x%04x && wc < 0x%04x)", 8*j1, 8*j2);
- }
- if (t == -1) {
- if (j1 == 0)
- /* If wc == 0, the function must return 1, not -1. */
- fprintf(f, " {\n *r = wc;\n return 1;\n }\n");
- else
- fprintf(f, "\n c = wc;\n");
- } else {
- fprintf(f, "\n c = %s_page%s[wc", c_charsetname, tables[t].suffix);
- if (tables[t].minline > 0)
- fprintf(f, "-0x%04x", 8*j1);
- fprintf(f, "];\n");
- if (j1 == 0 && uni2charset[0] == 0)
- /* If wc == 0, the function must return 1, not -1. */
- fix_0000 = true;
- }
- }
- }
- j1 = j2;
- }
- if (need_c) {
- if (fix_0000)
- fprintf(f, " if (c != 0 || wc == 0) {\n");
- else
- fprintf(f, " if (c != 0) {\n");
- fprintf(f, " *r = c;\n");
- fprintf(f, " return 1;\n");
- fprintf(f, " }\n");
- }
- fprintf(f, " return RET_ILSEQ;\n");
- fprintf(f, "}\n");
-
- }
-
- if (ferror(f) || fclose(f))
- exit(1);
- }
-
-#if 0
-
- int i1, i2, i3, i1_min, i1_max, j1, j2;
-
- i1_min = 16;
- i1_max = -1;
- for (i1 = 0; i1 < 16; i1++)
- for (i2 = 0; i2 < 16; i2++)
- if (charset2uni[16*i1+i2] != 0xfffd) {
- if (i1_min > i1) i1_min = i1;
- if (i1_max < i1) i1_max = i1;
- }
- printf("static const unsigned short %s_2uni[%d] = {\n",
- name, 16*(i1_max-i1_min+1));
- for (i1 = i1_min; i1 <= i1_max; i1++) {
- printf(" /""* 0x%02x *""/\n", 16*i1);
- for (i2 = 0; i2 < 2; i2++) {
- printf(" ");
- for (i3 = 0; i3 < 8; i3++) {
- if (i3 > 0) printf(" ");
- printf("0x%04x,", charset2uni[16*i1+8*i2+i3]);
- }
- printf("\n");
- }
- }
- printf("};\n");
- printf("\n");
-
- for (p = 0; p < 0x100; p++)
- pages[p] = 0;
- for (i = 0; i < 0x100; i++)
- if (charset2uni[i] != 0xfffd)
- pages[charset2uni[i]>>8] = 1;
- for (p = 0; p < 0x100; p++)
- if (pages[p]) {
- int j1_min = 32;
- int j1_max = -1;
- for (j1 = 0; j1 < 32; j1++)
- for (j2 = 0; j2 < 8; j2++)
- if (uni2charset[256*p+8*j1+j2] != 0) {
- if (j1_min > j1) j1_min = j1;
- if (j1_max < j1) j1_max = j1;
- }
- printf("static const unsigned char %s_page%02x[%d] = {\n",
- name, p, 8*(j1_max-j1_min+1));
- for (j1 = j1_min; j1 <= j1_max; j1++) {
- printf(" ");
- for (j2 = 0; j2 < 8; j2++)
- printf("0x%02x, ", uni2charset[256*p+8*j1+j2]);
- printf("/""* 0x%02x-0x%02x *""/\n", 8*j1, 8*j1+7);
- }
- printf("};\n");
- }
- printf("\n");
-
-}
-#endif
-
- exit(0);
-}
+
+/*
+ * Generates an 8-bit character set table from a .TXT table as found on
+ * ftp.unicode.org or from a table containing the 256 Unicode values as
+ * hexadecimal integers.
+ * Examples:
+ *
+ * ./8bit_tab_to_h ISO-8859-1 iso8859_1 < tab8859_1
+ * ./8bit_tab_to_h ISO-8859-2 iso8859_2 < tab8859_2
+ * ./8bit_tab_to_h ISO-8859-3 iso8859_3 < tab8859_3
+ * ./8bit_tab_to_h ISO-8859-4 iso8859_4 < tab8859_4
+ * ./8bit_tab_to_h ISO-8859-5 iso8859_5 < tab8859_5
+ * ./8bit_tab_to_h ISO-8859-6 iso8859_6 < tab8859_6
+ * ./8bit_tab_to_h ISO-8859-7 iso8859_7 < tab8859_7
+ * ./8bit_tab_to_h ISO-8859-8 iso8859_8 < tab8859_8
+ * ./8bit_tab_to_h ISO-8859-9 iso8859_9 < tab8859_9
+ * ./8bit_tab_to_h ISO-8859-10 iso8859_10 < tab8859_10
+ * ./8bit_tab_to_h ISO-8859-14 iso8859_14 < tab8859_14
+ * ./8bit_tab_to_h ISO-8859-15 iso8859_15 < tab8859_15
+ * ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < jis0201
+ * ./8bit_tab_to_h TIS620-0 tis620 < tabtis620
+ * ./8bit_tab_to_h KOI8-R koi8_r < tabkoi8_r
+ * ./8bit_tab_to_h KOI8-U koi8_u < tabkoi8_u
+ * ./8bit_tab_to_h ARMSCII-8 armscii_8 < tabarmscii_8
+ * ./8bit_tab_to_h CP1133 cp1133 < tabibm_cp1133
+ * ./8bit_tab_to_h MULELAO-1 mulelao < tabmulelao_1
+ * ./8bit_tab_to_h VISCII1.1-1 viscii1 < tabviscii
+ * ./8bit_tab_to_h TCVN-5712 tcvn < tabtcvn
+ * ./8bit_tab_to_h GEORGIAN-ACADEMY georgian_ac < tabgeorgian_academy
+ * ./8bit_tab_to_h GEORGIAN-PS georgian_ps < tabgeorgian_ps
+ *
+ * ./8bit_tab_to_h ISO-8859-1 iso8859_1 < 8859-1.TXT
+ * ./8bit_tab_to_h ISO-8859-2 iso8859_2 < 8859-2.TXT
+ * ./8bit_tab_to_h ISO-8859-3 iso8859_3 < 8859-3.TXT
+ * ./8bit_tab_to_h ISO-8859-4 iso8859_4 < 8859-4.TXT
+ * ./8bit_tab_to_h ISO-8859-5 iso8859_5 < 8859-5.TXT
+ * ./8bit_tab_to_h ISO-8859-6 iso8859_6 < 8859-6.TXT
+ * ./8bit_tab_to_h ISO-8859-7 iso8859_7 < 8859-7.TXT
+ * ./8bit_tab_to_h ISO-8859-8 iso8859_8 < 8859-8.TXT
+ * ./8bit_tab_to_h ISO-8859-9 iso8859_9 < 8859-9.TXT
+ * ./8bit_tab_to_h ISO-8859-10 iso8859_10 < 8859-10.TXT
+ * ./8bit_tab_to_h ISO-8859-14 iso8859_14 < 8859-14.TXT
+ * ./8bit_tab_to_h ISO-8859-15 iso8859_15 < 8859-15.TXT
+ * ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < JIS0201.TXT
+ * ./8bit_tab_to_h KOI8-R koi8_r < KOI8-R.TXT
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+
+int main (int argc, char *argv[])
+{
+ const char* charsetname;
+ const char* c_charsetname;
+ const char* filename;
+ const char* directory;
+ int charset2uni[0x100];
+
+ if (argc != 3 && argc != 4 && argc != 5)
+ exit(1);
+ charsetname = argv[1];
+ c_charsetname = argv[2];
+ if (argc > 3) {
+ filename = argv[3];
+ } else {
+ char* s = (char*) malloc(strlen(c_charsetname)+strlen(".h")+1);
+ strcpy(s,c_charsetname); strcat(s,".h");
+ filename = s;
+ }
+ directory = (argc > 4 ? argv[4] : "");
+
+ fprintf(stderr, "Creating %s%s\n", directory, filename);
+
+ {
+ int i, c;
+ c = getc(stdin);
+ ungetc(c,stdin);
+ if (c == '#') {
+ /* Read a unicode.org style .TXT file. */
+ for (i = 0; i < 0x100; i++)
+ charset2uni[i] = 0xfffd;
+ for (;;) {
+ c = getc(stdin);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#') {
+ do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
+ continue;
+ }
+ ungetc(c,stdin);
+ if (scanf("0x%x", &i) != 1 || !(i >= 0 && i < 0x100))
+ exit(1);
+ do { c = getc(stdin); } while (c == ' ' || c == '\t');
+ if (c != EOF)
+ ungetc(c,stdin);
+ if (c == '\n' || c == '#')
+ continue;
+ if (scanf("0x%x", &charset2uni[i]) != 1)
+ exit(1);
+ }
+ } else {
+ /* Read a table of hexadecimal Unicode values. */
+ for (i = 0; i < 0x100; i++) {
+ if (scanf("%x", &charset2uni[i]) != 1)
+ exit(1);
+ if (charset2uni[i] < 0 || charset2uni[i] == 0xffff)
+ charset2uni[i] = 0xfffd;
+ }
+ if (scanf("%x", &i) != EOF)
+ exit(1);
+ }
+ }
+
+ /* Write the output file. */
+ {
+ FILE* f;
+
+ {
+ char* fname = malloc(strlen(directory)+strlen(filename)+1);
+ strcpy(fname,directory); strcat(fname,filename);
+ f = fopen(fname,"w");
+ if (f == NULL)
+ exit(1);
+ }
+
+ fprintf(f, "\n");
+ fprintf(f, "/*\n");
+ fprintf(f, " * %s\n", charsetname);
+ fprintf(f, " */\n");
+ fprintf(f, "\n");
+
+ {
+ int i, i1, i2, i3;
+ int line[16];
+ int tableno;
+ struct { int minline; int maxline; } tables[16];
+ bool some_invalid;
+ bool final_ret_reached;
+
+ for (i1 = 0; i1 < 16; i1++) {
+ bool all_invalid = true;
+ bool all_identity = true;
+ for (i2 = 0; i2 < 16; i2++) {
+ i = 16*i1+i2;
+ if (charset2uni[i] != 0xfffd)
+ all_invalid = false;
+ if (charset2uni[i] != i)
+ all_identity = false;
+ }
+ if (all_invalid)
+ line[i1] = -2;
+ else if (all_identity)
+ line[i1] = -1;
+ else
+ line[i1] = 0;
+ }
+ tableno = 0;
+ for (i1 = 0; i1 < 16; i1++) {
+ if (line[i1] >= 0) {
+ if (i1 > 0 && tableno > 0 && line[i1-1] == tableno-1) {
+ line[i1] = tableno-1;
+ tables[tableno-1].maxline = i1;
+ } else {
+ tableno++;
+ line[i1] = tableno-1;
+ tables[tableno-1].minline = tables[tableno-1].maxline = i1;
+ }
+ }
+ }
+ some_invalid = false;
+ for (i = 0; i < 0x100; i++)
+ if (charset2uni[i] == 0xfffd)
+ some_invalid = true;
+ if (tableno > 0) {
+ int t;
+ for (t = 0; t < tableno; t++) {
+ fprintf(f, "static const unsigned short %s_2uni", c_charsetname);
+ if (tableno > 1)
+ fprintf(f, "_%d", t+1);
+ fprintf(f, "[%d] = {\n", 16*(tables[t].maxline-tables[t].minline+1));
+ for (i1 = tables[t].minline; i1 <= tables[t].maxline; i1++) {
+ fprintf(f, " /* 0x%02x */\n", 16*i1);
+ for (i2 = 0; i2 < 2; i2++) {
+ fprintf(f, " ");
+ for (i3 = 0; i3 < 8; i3++) {
+ i = 16*i1+8*i2+i3;
+ fprintf(f, " 0x%04x,", charset2uni[i]);
+ }
+ fprintf(f, "\n");
+ }
+ }
+ fprintf(f, "};\n");
+ }
+ fprintf(f, "\n");
+ }
+ final_ret_reached = false;
+ fprintf(f, "static int\n%s_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)\n", c_charsetname);
+ fprintf(f, "{\n");
+ fprintf(f, " unsigned char c = *s;\n");
+ if (some_invalid) {
+ for (i1 = 0; i1 < 16;) {
+ int t = line[i1];
+ const char* indent;
+ for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
+ indent = (i1 == 0 && i2 == 16 ? " " : " ");
+ if (i1 == 0) {
+ if (i2 == 16) {
+ } else {
+ fprintf(f, " if (c < 0x%02x) {\n", 16*i2);
+ }
+ } else {
+ if (i2 == 16) {
+ fprintf(f, " else {\n");
+ } else {
+ fprintf(f, " else if (c < 0x%02x) {\n", 16*i2);
+ }
+ }
+ if (t == -2) {
+ final_ret_reached = true;
+ } else if (t == -1) {
+ fprintf(f, "%s*pwc = (ucs4_t) c;\n", indent);
+ fprintf(f, "%sreturn 1;\n", indent);
+ } else {
+ fprintf(f, "%s", indent);
+ some_invalid = false;
+ for (i = 16*i1; i < 16*i2; i++)
+ if (charset2uni[i] == 0xfffd)
+ some_invalid = true;
+ if (some_invalid)
+ fprintf(f, "unsigned short wc = ");
+ else
+ fprintf(f, "*pwc = (ucs4_t) ");
+ fprintf(f, "%s_2uni", c_charsetname);
+ if (tableno > 1)
+ fprintf(f, "_%d", t+1);
+ fprintf(f, "[c");
+ if (tables[t].minline > 0)
+ fprintf(f, "-0x%02x", 16*tables[t].minline);
+ fprintf(f, "];\n");
+ if (some_invalid) {
+ fprintf(f, "%sif (wc != 0xfffd) {\n", indent);
+ fprintf(f, "%s *pwc = (ucs4_t) wc;\n", indent);
+ fprintf(f, "%s return 1;\n", indent);
+ fprintf(f, "%s}\n", indent);
+ final_ret_reached = true;
+ } else {
+ fprintf(f, "%sreturn 1;\n", indent);
+ }
+ }
+ if (!(i1 == 0 && i2 == 16))
+ fprintf(f, " }\n");
+ i1 = i2;
+ }
+ if (final_ret_reached)
+ fprintf(f, " return RET_ILSEQ;\n");
+ } else {
+ for (i1 = 0; i1 < 16;) {
+ int t = line[i1];
+ for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
+ if (i1 == 0) {
+ if (i2 == 16) {
+ fprintf(f, " ");
+ } else {
+ fprintf(f, " if (c < 0x%02x)\n ", 16*i2);
+ }
+ } else {
+ if (i2 == 16) {
+ fprintf(f, " else\n ");
+ } else {
+ fprintf(f, " else if (c < 0x%02x)\n ", 16*i2);
+ }
+ }
+ if (t == -1)
+ fprintf(f, "*pwc = (ucs4_t) c;\n");
+ else {
+ fprintf(f, "*pwc = (ucs4_t) %s_2uni", c_charsetname);
+ if (tableno > 1)
+ fprintf(f, "_%d", t+1);
+ fprintf(f, "[c");
+ if (tables[t].minline > 0)
+ fprintf(f, "-0x%02x", 16*tables[t].minline);
+ fprintf(f, "];\n");
+ }
+ i1 = i2;
+ }
+ fprintf(f, " return 1;\n");
+ }
+ fprintf(f, "}\n");
+
+ }
+
+ fprintf(f, "\n");
+
+ {
+ int uni2charset[0x10000];
+ bool pages[0x100];
+ int line[0x2000];
+ int tableno;
+ struct { int minline; int maxline; int usecount; const char* suffix; } tables[0x2000];
+ bool need_c;
+ bool fix_0000;
+ int i, j, p, j1, j2, t;
+
+ for (j = 0; j < 0x10000; j++)
+ uni2charset[j] = 0;
+ for (p = 0; p < 0x100; p++)
+ pages[p] = false;
+ for (i = 0; i < 0x100; i++) {
+ j = charset2uni[i];
+ if (j != 0xfffd) {
+ uni2charset[j] = i;
+ pages[j>>8] = true;
+ }
+ }
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ bool all_invalid = true;
+ bool all_identity = true;
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ if (uni2charset[j] != 0)
+ all_invalid = false;
+ if (uni2charset[j] != j)
+ all_identity = false;
+ }
+ if (all_invalid)
+ line[j1] = -2;
+ else if (all_identity)
+ line[j1] = -1;
+ else
+ line[j1] = 0;
+ }
+ tableno = 0;
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ if (line[j1] >= 0) {
+ if (tableno > 0
+ && ((j1 > 0 && line[j1-1] == tableno-1)
+ || ((tables[tableno-1].maxline >> 5) == (j1 >> 5)
+ && j1 - tables[tableno-1].maxline <= 8))) {
+ line[j1] = tableno-1;
+ tables[tableno-1].maxline = j1;
+ } else {
+ tableno++;
+ line[j1] = tableno-1;
+ tables[tableno-1].minline = tables[tableno-1].maxline = j1;
+ }
+ }
+ }
+ for (t = 0; t < tableno; t++) {
+ tables[t].usecount = 0;
+ j1 = 8*tables[t].minline;
+ j2 = 8*(tables[t].maxline+1);
+ for (j = j1; j < j2; j++)
+ if (uni2charset[j] != 0)
+ tables[t].usecount++;
+ }
+ for (t = 0, p = -1, i = 0; t < tableno; t++) {
+ if (tables[t].usecount > 1) {
+ char* s;
+ if (p == tables[t].minline >> 5) {
+ s = (char*) malloc(5+1);
+ sprintf(s, "%02x_%d", p, ++i);
+ } else {
+ p = tables[t].minline >> 5;
+ s = (char*) malloc(2+1);
+ sprintf(s, "%02x", p);
+ }
+ tables[t].suffix = s;
+ } else
+ tables[t].suffix = NULL;
+ }
+ {
+ p = -1;
+ for (t = 0; t < tableno; t++)
+ if (tables[t].usecount > 1) {
+ p = 0;
+ fprintf(f, "static const unsigned char %s_page%s[%d] = {\n", c_charsetname, tables[t].suffix, 8*(tables[t].maxline-tables[t].minline+1));
+ for (j1 = tables[t].minline; j1 <= tables[t].maxline; j1++) {
+ if ((j1 % 0x20) == 0 && j1 > tables[t].minline)
+ fprintf(f, " /* 0x%04x */\n", 8*j1);
+ fprintf(f, " ");
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ fprintf(f, " 0x%02x,", uni2charset[j]);
+ }
+ fprintf(f, " /* 0x%02x-0x%02x */\n", 8*(j1 % 0x20), 8*(j1 % 0x20)+7);
+ }
+ fprintf(f, "};\n");
+ }
+ if (p >= 0)
+ fprintf(f, "\n");
+ }
+ need_c = false;
+ for (j1 = 0; j1 < 0x2000;) {
+ t = line[j1];
+ for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
+ if (t >= 0)
+ j2 = tables[t].maxline+1;
+ if (!(t == -2 || (t == -1 && j1 == 0)))
+ need_c = true;
+ j1 = j2;
+ }
+ fix_0000 = false;
+ fprintf(f, "static int\n%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", c_charsetname);
+ fprintf(f, "{\n");
+ if (need_c)
+ fprintf(f, " unsigned char c = 0;\n");
+ for (j1 = 0; j1 < 0x2000;) {
+ t = line[j1];
+ for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
+ if (t >= 0) {
+ if (j1 != tables[t].minline) abort();
+ if (j2 > tables[t].maxline+1) abort();
+ j2 = tables[t].maxline+1;
+ }
+ if (t == -2) {
+ } else {
+ if (j1 == 0)
+ fprintf(f, " ");
+ else
+ fprintf(f, " else ");
+ if (t >= 0 && tables[t].usecount == 0) abort();
+ if (t >= 0 && tables[t].usecount == 1) {
+ if (j2 != j1+1) abort();
+ for (j = 8*j1; j < 8*j2; j++)
+ if (uni2charset[j] != 0) {
+ fprintf(f, "if (wc == 0x%04x)\n c = 0x%02x;\n", j, uni2charset[j]);
+ break;
+ }
+ } else {
+ if (j1 == 0) {
+ fprintf(f, "if (wc < 0x%04x)", 8*j2);
+ } else {
+ fprintf(f, "if (wc >= 0x%04x && wc < 0x%04x)", 8*j1, 8*j2);
+ }
+ if (t == -1) {
+ if (j1 == 0)
+ /* If wc == 0, the function must return 1, not -1. */
+ fprintf(f, " {\n *r = wc;\n return 1;\n }\n");
+ else
+ fprintf(f, "\n c = wc;\n");
+ } else {
+ fprintf(f, "\n c = %s_page%s[wc", c_charsetname, tables[t].suffix);
+ if (tables[t].minline > 0)
+ fprintf(f, "-0x%04x", 8*j1);
+ fprintf(f, "];\n");
+ if (j1 == 0 && uni2charset[0] == 0)
+ /* If wc == 0, the function must return 1, not -1. */
+ fix_0000 = true;
+ }
+ }
+ }
+ j1 = j2;
+ }
+ if (need_c) {
+ if (fix_0000)
+ fprintf(f, " if (c != 0 || wc == 0) {\n");
+ else
+ fprintf(f, " if (c != 0) {\n");
+ fprintf(f, " *r = c;\n");
+ fprintf(f, " return 1;\n");
+ fprintf(f, " }\n");
+ }
+ fprintf(f, " return RET_ILSEQ;\n");
+ fprintf(f, "}\n");
+
+ }
+
+ if (ferror(f) || fclose(f))
+ exit(1);
+ }
+
+#if 0
+
+ int i1, i2, i3, i1_min, i1_max, j1, j2;
+
+ i1_min = 16;
+ i1_max = -1;
+ for (i1 = 0; i1 < 16; i1++)
+ for (i2 = 0; i2 < 16; i2++)
+ if (charset2uni[16*i1+i2] != 0xfffd) {
+ if (i1_min > i1) i1_min = i1;
+ if (i1_max < i1) i1_max = i1;
+ }
+ printf("static const unsigned short %s_2uni[%d] = {\n",
+ name, 16*(i1_max-i1_min+1));
+ for (i1 = i1_min; i1 <= i1_max; i1++) {
+ printf(" /""* 0x%02x *""/\n", 16*i1);
+ for (i2 = 0; i2 < 2; i2++) {
+ printf(" ");
+ for (i3 = 0; i3 < 8; i3++) {
+ if (i3 > 0) printf(" ");
+ printf("0x%04x,", charset2uni[16*i1+8*i2+i3]);
+ }
+ printf("\n");
+ }
+ }
+ printf("};\n");
+ printf("\n");
+
+ for (p = 0; p < 0x100; p++)
+ pages[p] = 0;
+ for (i = 0; i < 0x100; i++)
+ if (charset2uni[i] != 0xfffd)
+ pages[charset2uni[i]>>8] = 1;
+ for (p = 0; p < 0x100; p++)
+ if (pages[p]) {
+ int j1_min = 32;
+ int j1_max = -1;
+ for (j1 = 0; j1 < 32; j1++)
+ for (j2 = 0; j2 < 8; j2++)
+ if (uni2charset[256*p+8*j1+j2] != 0) {
+ if (j1_min > j1) j1_min = j1;
+ if (j1_max < j1) j1_max = j1;
+ }
+ printf("static const unsigned char %s_page%02x[%d] = {\n",
+ name, p, 8*(j1_max-j1_min+1));
+ for (j1 = j1_min; j1 <= j1_max; j1++) {
+ printf(" ");
+ for (j2 = 0; j2 < 8; j2++)
+ printf("0x%02x, ", uni2charset[256*p+8*j1+j2]);
+ printf("/""* 0x%02x-0x%02x *""/\n", 8*j1, 8*j1+7);
+ }
+ printf("};\n");
+ }
+ printf("\n");
+
+}
+#endif
+
+ exit(0);
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/COPYRIGHT b/libX11/src/xlibi18n/lcUniConv/COPYRIGHT
index ccc162664..b3d6f83f1 100644
--- a/libX11/src/xlibi18n/lcUniConv/COPYRIGHT
+++ b/libX11/src/xlibi18n/lcUniConv/COPYRIGHT
@@ -1,39 +1,39 @@
-This notice applies to the files in this directory. They are taken from
-the libiconv-1.1 package, which is covered by the LGPL license. The files
-in this directory have been placed under the following copyright, with
-permission from the Free Software Foundation.
-
-
-Copyright (c) 1999-2000 Free Software Foundation, Inc.
-
-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
-FREE SOFTWARE FOUNDATION 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 Free Software Foundation
-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
-Free Software Foundation.
-
-
-Notes:
-
-1. This copyright applies only to the files in this directory, and not to
-the remaining files in libiconv.
-
-2. The Free Software Foundation does not encourage the use of the above
-license for newly written software.
-
+This notice applies to the files in this directory. They are taken from
+the libiconv-1.1 package, which is covered by the LGPL license. The files
+in this directory have been placed under the following copyright, with
+permission from the Free Software Foundation.
+
+
+Copyright (c) 1999-2000 Free Software Foundation, Inc.
+
+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
+FREE SOFTWARE FOUNDATION 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 Free Software Foundation
+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
+Free Software Foundation.
+
+
+Notes:
+
+1. This copyright applies only to the files in this directory, and not to
+the remaining files in libiconv.
+
+2. The Free Software Foundation does not encourage the use of the above
+license for newly written software.
+
diff --git a/libX11/src/xlibi18n/lcUniConv/README b/libX11/src/xlibi18n/lcUniConv/README
index 53f39f2f4..5a5668291 100644
--- a/libX11/src/xlibi18n/lcUniConv/README
+++ b/libX11/src/xlibi18n/lcUniConv/README
@@ -1,11 +1,11 @@
-
-The files in this directory are taken from the libiconv-1.1 package.
-
-The *.h files were generated from tables (mostly from ftp.unicode.org) using
-the programs '8bit_tab_to_h.c' and 'cjk_tab_to_h.c'. On some of them, further
-optimizations were applied by hand.
-
-If you find a bug in these files, instead of modifying them in XFree86
-and let it diverge from libiconv, please notify the libiconv maintainer
-(currently <bruno@clisp.org>) so he can fix both in synch.
-
+
+The files in this directory are taken from the libiconv-1.1 package.
+
+The *.h files were generated from tables (mostly from ftp.unicode.org) using
+the programs '8bit_tab_to_h.c' and 'cjk_tab_to_h.c'. On some of them, further
+optimizations were applied by hand.
+
+If you find a bug in these files, instead of modifying them in XFree86
+and let it diverge from libiconv, please notify the libiconv maintainer
+(currently <bruno@clisp.org>) so he can fix both in synch.
+
diff --git a/libX11/src/xlibi18n/lcUniConv/armscii_8.h b/libX11/src/xlibi18n/lcUniConv/armscii_8.h
index 567bfeac2..96fd80946 100644
--- a/libX11/src/xlibi18n/lcUniConv/armscii_8.h
+++ b/libX11/src/xlibi18n/lcUniConv/armscii_8.h
@@ -1,97 +1,97 @@
-
-/*
- * ARMSCII-8
- */
-
-static const unsigned short armscii_8_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0xfffd, 0x0587, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab,
- 0x2014, 0x002e, 0x055d, 0x002c, 0x002d, 0x058a, 0x2026, 0x055c,
- /* 0xb0 */
- 0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563,
- 0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567,
- /* 0xc0 */
- 0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b,
- 0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f,
- /* 0xd0 */
- 0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573,
- 0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577,
- /* 0xe0 */
- 0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b,
- 0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f,
- /* 0xf0 */
- 0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583,
- 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x055a, 0xfffd,
-};
-
-static int
-armscii_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = armscii_8_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char armscii_8_page00[8] = {
- 0xa5, 0xa4, 0x2a, 0x2b, 0xab, 0xac, 0xa9, 0x2f, /* 0x28-0x2f */
-};
-static const unsigned char armscii_8_page00_1[32] = {
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
-};
-static const unsigned char armscii_8_page05[96] = {
- 0x00, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, /* 0x30-0x37 */
- 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, /* 0x38-0x3f */
- 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, /* 0x40-0x47 */
- 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, /* 0x48-0x4f */
- 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0xfe, 0xb0, 0xaf, 0xaa, 0xb1, 0x00, /* 0x58-0x5f */
- 0x00, 0xb3, 0xb5, 0xb7, 0xb9, 0xbb, 0xbd, 0xbf, /* 0x60-0x67 */
- 0xc1, 0xc3, 0xc5, 0xc7, 0xc9, 0xcb, 0xcd, 0xcf, /* 0x68-0x6f */
- 0xd1, 0xd3, 0xd5, 0xd7, 0xd9, 0xdb, 0xdd, 0xdf, /* 0x70-0x77 */
- 0xe1, 0xe3, 0xe5, 0xe7, 0xe9, 0xeb, 0xed, 0xef, /* 0x78-0x7f */
- 0xf1, 0xf3, 0xf5, 0xf7, 0xf9, 0xfb, 0xfd, 0xa2, /* 0x80-0x87 */
- 0x00, 0xa3, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
-};
-static const unsigned char armscii_8_page20[24] = {
- 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x00, /* 0x20-0x27 */
-};
-
-static int
-armscii_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0028) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x0028 && wc < 0x0030)
- c = armscii_8_page00[wc-0x0028];
- else if (wc >= 0x0030 && wc < 0x00a0)
- c = wc;
- else if (wc >= 0x00a0 && wc < 0x00c0)
- c = armscii_8_page00_1[wc-0x00a0];
- else if (wc >= 0x0530 && wc < 0x0590)
- c = armscii_8_page05[wc-0x0530];
- else if (wc >= 0x2010 && wc < 0x2028)
- c = armscii_8_page20[wc-0x2010];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ARMSCII-8
+ */
+
+static const unsigned short armscii_8_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0xfffd, 0x0587, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab,
+ 0x2014, 0x002e, 0x055d, 0x002c, 0x002d, 0x058a, 0x2026, 0x055c,
+ /* 0xb0 */
+ 0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563,
+ 0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567,
+ /* 0xc0 */
+ 0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b,
+ 0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f,
+ /* 0xd0 */
+ 0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573,
+ 0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577,
+ /* 0xe0 */
+ 0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b,
+ 0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f,
+ /* 0xf0 */
+ 0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583,
+ 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x055a, 0xfffd,
+};
+
+static int
+armscii_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = armscii_8_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char armscii_8_page00[8] = {
+ 0xa5, 0xa4, 0x2a, 0x2b, 0xab, 0xac, 0xa9, 0x2f, /* 0x28-0x2f */
+};
+static const unsigned char armscii_8_page00_1[32] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char armscii_8_page05[96] = {
+ 0x00, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, /* 0x30-0x37 */
+ 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, /* 0x38-0x3f */
+ 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, /* 0x40-0x47 */
+ 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, /* 0x48-0x4f */
+ 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0xfe, 0xb0, 0xaf, 0xaa, 0xb1, 0x00, /* 0x58-0x5f */
+ 0x00, 0xb3, 0xb5, 0xb7, 0xb9, 0xbb, 0xbd, 0xbf, /* 0x60-0x67 */
+ 0xc1, 0xc3, 0xc5, 0xc7, 0xc9, 0xcb, 0xcd, 0xcf, /* 0x68-0x6f */
+ 0xd1, 0xd3, 0xd5, 0xd7, 0xd9, 0xdb, 0xdd, 0xdf, /* 0x70-0x77 */
+ 0xe1, 0xe3, 0xe5, 0xe7, 0xe9, 0xeb, 0xed, 0xef, /* 0x78-0x7f */
+ 0xf1, 0xf3, 0xf5, 0xf7, 0xf9, 0xfb, 0xfd, 0xa2, /* 0x80-0x87 */
+ 0x00, 0xa3, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+};
+static const unsigned char armscii_8_page20[24] = {
+ 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x00, /* 0x20-0x27 */
+};
+
+static int
+armscii_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0028) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0028 && wc < 0x0030)
+ c = armscii_8_page00[wc-0x0028];
+ else if (wc >= 0x0030 && wc < 0x00a0)
+ c = wc;
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = armscii_8_page00_1[wc-0x00a0];
+ else if (wc >= 0x0530 && wc < 0x0590)
+ c = armscii_8_page05[wc-0x0530];
+ else if (wc >= 0x2010 && wc < 0x2028)
+ c = armscii_8_page20[wc-0x2010];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/ascii.h b/libX11/src/xlibi18n/lcUniConv/ascii.h
index e32cf417e..9f98f3dcb 100644
--- a/libX11/src/xlibi18n/lcUniConv/ascii.h
+++ b/libX11/src/xlibi18n/lcUniConv/ascii.h
@@ -1,25 +1,25 @@
-
-/*
- * ASCII
- */
-
-static int
-ascii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- return RET_ILSEQ;
-}
-
-static int
-ascii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ASCII
+ */
+
+static int
+ascii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
+
+static int
+ascii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/big5.h b/libX11/src/xlibi18n/lcUniConv/big5.h
index db439088b..ce81ff307 100644
--- a/libX11/src/xlibi18n/lcUniConv/big5.h
+++ b/libX11/src/xlibi18n/lcUniConv/big5.h
@@ -1,4141 +1,4141 @@
-
-/*
- * BIG5
- */
-
-static const unsigned short big5_2uni_pagea1[6121] = {
- /* 0xa1 */
- 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2022, 0xff1b, 0xff1a,
- 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xff64, 0xfe52,
- 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
- 0x2014, 0xfe33, 0xfffd, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
- 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
- 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
- 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
- 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b,
- 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
- 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7,
- 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605,
- 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105,
- 0x203e, 0xfffd, 0xff3f, 0xfffd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e,
- 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7,
- 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267,
- 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65,
- 0xfe66, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf,
- 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
- 0x2641, 0x2609, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
- 0x2199, 0x2198, 0x2225, 0x2223, 0xfffd,
- /* 0xa2 */
- 0xfffd, 0xff0f, 0xff3c, 0xff04, 0x00a5, 0x3012, 0x00a2, 0x00a3,
- 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
- 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
- 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
- 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
- 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
- 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
- 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e,
- 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3,
- 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12,
- 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160,
- 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
- 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
- 0x3028, 0x3029, 0xfffd, 0x5344, 0xfffd, 0xff21, 0xff22, 0xff23,
- 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b,
- 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33,
- 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41,
- 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49,
- 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51,
- 0xff52, 0xff53, 0xff54, 0xff55, 0xff56,
- /* 0xa3 */
- 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
- 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
- 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
- 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
- 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
- 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
- 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
- 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
- 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
- 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa4 */
- 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
- 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
- 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
- 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
- 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
- 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
- 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
- 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11,
- 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88,
- 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3,
- 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141,
- 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207,
- 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347,
- 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929,
- 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f,
- 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236,
- 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5,
- 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4,
- 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247,
- 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19,
- /* 0xa5 */
- 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
- 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
- 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
- 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
- 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
- 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
- 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
- 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e,
- 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7,
- 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17,
- 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6,
- 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11,
- 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389,
- 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531,
- 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db,
- 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f,
- 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff,
- 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f,
- 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b,
- 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
- /* 0xa6 */
- 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
- 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
- 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
- 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
- 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
- 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
- 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
- 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f,
- 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263,
- 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2,
- 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64,
- 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50,
- 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d,
- 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001,
- 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c,
- 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e,
- 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621,
- 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34,
- 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38,
- 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63,
- /* 0xa7 */
- 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
- 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
- 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
- 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
- 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
- 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
- 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
- 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747,
- 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d,
- 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4,
- 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c,
- 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90,
- 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a,
- 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8,
- 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212,
- 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d,
- 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298,
- 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538,
- 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c,
- 0x6756, 0x675e, 0x6749, 0x6746, 0x6760,
- /* 0xa8 */
- 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
- 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
- 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
- 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
- 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
- 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
- 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
- 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b,
- 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d,
- 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2,
- 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6,
- 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a,
- 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab,
- 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b,
- 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b,
- 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155,
- 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238,
- 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb,
- 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379,
- 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475,
- /* 0xa9 */
- 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
- 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
- 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
- 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
- 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
- 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
- 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
- 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46,
- 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18,
- 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97,
- 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80,
- 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff,
- 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021,
- 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e,
- 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9,
- 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8,
- 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da,
- 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e,
- 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602,
- 0x660e, 0x6600, 0x660f, 0x6615, 0x660a,
- /* 0xaa */
- 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
- 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
- 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
- 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
- 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
- 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
- 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
- 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095,
- 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248,
- 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9,
- 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a,
- 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940,
- 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54,
- 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1,
- 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d,
- 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1,
- 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7,
- 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1,
- 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580,
- 0x961c, 0x9640, 0x963f, 0x963b, 0x9644,
- /* 0xab */
- 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
- 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
- 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
- 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
- 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
- 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
- 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
- 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4,
- 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf,
- 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae,
- 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8,
- 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6,
- 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5,
- 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7,
- 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08,
- 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c,
- 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d,
- 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a,
- 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301,
- 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7,
- /* 0xac */
- 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
- 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
- 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
- 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
- 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
- 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
- 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
- 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x6d3b,
- 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38,
- 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3,
- 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272,
- 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb,
- 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c,
- 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678,
- 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701,
- 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc,
- 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947,
- 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff,
- 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04,
- 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004,
- /* 0xad */
- 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
- 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
- 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
- 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
- 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
- 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
- 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
- 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed,
- 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b,
- 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762,
- 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df,
- 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef,
- 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f,
- 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1,
- 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a,
- 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd,
- 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d,
- 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501,
- 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9,
- 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea,
- /* 0xae */
- 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
- 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
- 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
- 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
- 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
- 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
- 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
- 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063,
- 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f,
- 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3,
- 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346,
- 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328,
- 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642,
- 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8,
- 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853,
- 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851,
- 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845,
- 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27,
- 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87,
- 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93,
- /* 0xaf */
- 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
- 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
- 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
- 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
- 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
- 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
- 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
- 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x7825,
- 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f,
- 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7,
- 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06,
- 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22,
- 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b,
- 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015,
- 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105,
- 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a,
- 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b,
- 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338,
- 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336,
- 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
- /* 0xb0 */
- 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
- 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
- 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
- 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
- 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
- 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
- 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
- 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b,
- 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8,
- 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c,
- 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e,
- 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d,
- 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8,
- 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3,
- 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543,
- 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538,
- 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708,
- 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4,
- 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36,
- 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40,
- /* 0xb1 */
- 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
- 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
- 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
- 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
- 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
- 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
- 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
- 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5,
- 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df,
- 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7,
- 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa,
- 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384,
- 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b,
- 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557,
- 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac,
- 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668,
- 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2,
- 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0,
- 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8,
- 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba,
- /* 0xb2 */
- 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
- 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
- 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
- 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
- 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
- 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
- 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
- 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7,
- 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4,
- 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db,
- 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843,
- 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20,
- 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92,
- 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c,
- 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31,
- 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a,
- 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124,
- 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398,
- 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393,
- 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c,
- /* 0xb3 */
- 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
- 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
- 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
- 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
- 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
- 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
- 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
- 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8,
- 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7,
- 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670,
- 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0,
- 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5,
- 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096,
- 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269,
- 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7,
- 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594,
- 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2,
- 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599,
- 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821,
- 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960,
- /* 0xb4 */
- 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
- 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
- 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
- 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
- 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
- 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
- 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
- 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2,
- 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4,
- 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562,
- 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676,
- 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f,
- 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df,
- 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb,
- 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb,
- 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e,
- 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67,
- 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24,
- 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a,
- 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb,
- /* 0xb5 */
- 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
- 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
- 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
- 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
- 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
- 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
- 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
- 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97,
- 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52,
- 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e,
- 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66,
- 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052,
- 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146,
- 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403,
- 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1,
- 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2,
- 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df,
- 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0,
- 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b,
- 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41,
- /* 0xb6 */
- 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
- 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
- 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
- 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
- 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
- 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
- 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
- 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593,
- 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686,
- 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7,
- 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea,
- 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd,
- 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be,
- 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d,
- 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8,
- 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4,
- 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712,
- 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b,
- 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1,
- 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc,
- /* 0xb7 */
- 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
- 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
- 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
- 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
- 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
- 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
- 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
- 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a,
- 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968,
- 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b,
- 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf,
- 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5,
- 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4,
- 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164,
- 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, 0x715e,
- 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f,
- 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f,
- 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601,
- 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df,
- 0x775b, 0x776b, 0x7766, 0x775e, 0x7763,
- /* 0xb8 */
- 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
- 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
- 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
- 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
- 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
- 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
- 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
- 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179,
- 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431,
- 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435,
- 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f,
- 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702,
- 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc,
- 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3,
- 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c,
- 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c,
- 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca,
- 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1,
- 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, 0x8de4, 0x8de6,
- 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a,
- /* 0xb9 */
- 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
- 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
- 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
- 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
- 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
- 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
- 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
- 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd,
- 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e,
- 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da,
- 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3,
- 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617,
- 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616,
- 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e,
- 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925,
- 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7,
- 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5,
- 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84,
- 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6,
- 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147,
- /* 0xba */
- 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
- 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
- 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
- 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
- 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
- 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
- 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
- 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff,
- 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b,
- 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7,
- 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292,
- 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d,
- 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1,
- 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7,
- 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31,
- 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75,
- 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9,
- 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0,
- 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5,
- 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac,
- /* 0xbb */
- 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
- 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
- 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
- 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
- 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
- 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
- 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
- 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa,
- 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d,
- 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc,
- 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c,
- 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118,
- 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285,
- 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291,
- 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c,
- 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817,
- 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1,
- 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3,
- 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9,
- 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc,
- /* 0xbc */
- 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
- 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
- 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
- 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
- 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
- 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
- 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
- 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c,
- 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac,
- 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479,
- 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493, 0x6495,
- 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499,
- 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4,
- 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd,
- 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11,
- 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84,
- 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e,
- 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f,
- 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b,
- 0x734e, 0x7357, 0x7469, 0x748b, 0x7483,
- /* 0xbd */
- 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
- 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
- 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
- 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
- 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
- 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
- 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
- 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9,
- 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517,
- 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523,
- 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774,
- 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c,
- 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915,
- 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8,
- 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6,
- 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6,
- 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1,
- 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f,
- 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f,
- 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e,
- /* 0xbe */
- 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
- 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
- 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
- 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
- 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
- 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
- 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
- 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03,
- 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114,
- 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3,
- 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668,
- 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be,
- 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e,
- 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be,
- 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc,
- 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4,
- 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8,
- 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44,
- 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59,
- 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1,
- /* 0xbf */
- 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
- 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
- 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
- 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
- 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
- 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
- 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
- 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11,
- 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79,
- 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8,
- 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, 0x8548, 0x8568,
- 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f,
- 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b,
- 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00,
- 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed,
- 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44,
- 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38,
- 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c,
- 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f,
- 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a,
- /* 0xc0 */
- 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
- 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
- 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
- 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
- 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
- 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
- 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
- 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f,
- 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a,
- 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c,
- 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234,
- 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1,
- 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94,
- 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90,
- 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf,
- 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1,
- 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6,
- 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370,
- 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c,
- 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac,
- /* 0xc1 */
- 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
- 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
- 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
- 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
- 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
- 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
- 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
- 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584,
- 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8,
- 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab,
- 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938,
- 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20,
- 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd,
- 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a,
- 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084,
- 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d,
- 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e,
- 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc,
- 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0,
- 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01,
- /* 0xc2 */
- 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
- 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
- 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
- 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
- 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
- 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
- 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
- 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652,
- 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62,
- 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23,
- 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52,
- 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf,
- 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba,
- 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2,
- 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59,
- 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d,
- 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a,
- 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a,
- 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9,
- 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6,
- /* 0xc3 */
- 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
- 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
- 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
- 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
- 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
- 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
- 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
- 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a,
- 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7,
- 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d,
- 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7f85,
- 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea,
- 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9,
- 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58,
- 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a,
- 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54,
- 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1,
- 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd,
- 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a,
- 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e,
- /* 0xc4 */
- 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
- 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
- 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
- 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
- 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
- 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
- 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
- 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82,
- 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa,
- 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba,
- 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f,
- 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418,
- 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8,
- 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5,
- 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1,
- 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d,
- 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c,
- 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f,
- 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821,
- 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74,
- /* 0xc5 */
- 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
- 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
- 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
- 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
- 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
- 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
- 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
- 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3,
- 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc,
- 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444,
- 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955,
- 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b,
- 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6,
- 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca,
- 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638,
- 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464,
- 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4,
- 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1,
- 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88,
- 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92,
- /* 0xc6 */
- 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
- 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
- 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
- 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
- 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
- 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
- 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
- 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x30fe,
- 0x309d, 0x309e, 0x3005, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045,
- 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d,
- 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055,
- 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d,
- 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065,
- 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d,
- 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075,
- 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d,
- 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085,
- 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d,
- 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2,
- 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
- /* 0xc7 */
- 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
- 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
- 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
- 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
- 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
- 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
- 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
- 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
- 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
- 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0414,
- 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b,
- 0x041c, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429,
- 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431,
- 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438,
- 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440,
- 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
- 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x2460,
- 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
- 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
- 0x247b, 0x247c, 0x247d,
-};
-static const unsigned short big5_2uni_pagec9[7652] = {
- /* 0xc9 */
- 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
- 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
- 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
- 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
- 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
- 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
- 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
- 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36,
- 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a,
- 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00,
- 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04,
- 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, 0x52a6, 0x5322,
- 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a,
- 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977,
- 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e,
- 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4,
- 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259,
- 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738,
- 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52,
- 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b,
- /* 0xca */
- 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
- 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
- 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
- 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
- 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
- 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
- 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
- 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d,
- 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5,
- 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940,
- 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f,
- 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f,
- 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95,
- 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d,
- 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed,
- 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef,
- 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e,
- 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281,
- 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, 0x65f0, 0x65f4,
- 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747,
- /* 0xcb */
- 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
- 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
- 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
- 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
- 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
- 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
- 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
- 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a,
- 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5,
- 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33,
- 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74,
- 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79,
- 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82,
- 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232,
- 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392,
- 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b,
- 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f,
- 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9,
- 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780,
- 0x5775, 0x577b, 0x5773, 0x5774, 0x5762,
- /* 0xcc */
- 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
- 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
- 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
- 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
- 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
- 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
- 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
- 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034,
- 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d,
- 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214,
- 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca,
- 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d,
- 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb,
- 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6,
- 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798,
- 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791,
- 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25,
- 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee,
- 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2,
- 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2,
- /* 0xcd */
- 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
- 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
- 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
- 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
- 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
- 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
- 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
- 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7,
- 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd,
- 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220,
- 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7,
- 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9,
- 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d,
- 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5,
- 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d,
- 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9,
- 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb,
- 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249,
- 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398,
- 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf,
- /* 0xce */
- 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
- 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
- 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
- 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
- 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
- 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
- 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
- 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde,
- 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf,
- 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22,
- 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3,
- 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054,
- 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c,
- 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e,
- 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303,
- 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313,
- 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa,
- 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622,
- 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f,
- 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba,
- /* 0xcf */
- 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
- 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
- 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
- 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
- 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
- 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
- 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
- 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01,
- 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c,
- 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1,
- 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a,
- 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb,
- 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8,
- 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7,
- 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e,
- 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703,
- 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8,
- 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809,
- 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5,
- 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80,
- /* 0xd0 */
- 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
- 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
- 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
- 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
- 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
- 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
- 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
- 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4,
- 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673,
- 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07,
- 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf,
- 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3,
- 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005,
- 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033,
- 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027,
- 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca,
- 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e,
- 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2,
- 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504,
- 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1,
- /* 0xd1 */
- 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
- 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
- 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
- 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
- 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
- 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
- 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
- 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x6041,
- 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095,
- 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2,
- 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4,
- 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358,
- 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338,
- 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4,
- 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f,
- 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816,
- 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844,
- 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d,
- 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34,
- 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4,
- /* 0xd2 */
- 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
- 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
- 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
- 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
- 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
- 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
- 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
- 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277,
- 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb,
- 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3,
- 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7,
- 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, 0x7521, 0x755b,
- 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6,
- 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712,
- 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823,
- 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821,
- 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c,
- 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed,
- 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b,
- 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10,
- /* 0xd3 */
- 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
- 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
- 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
- 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
- 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
- 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
- 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
- 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342,
- 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324,
- 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353,
- 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2,
- 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686,
- 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695,
- 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d,
- 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883,
- 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4,
- 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3,
- 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6,
- 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8,
- 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150,
- /* 0xd4 */
- 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
- 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
- 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
- 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
- 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
- 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
- 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
- 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c,
- 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540,
- 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc,
- 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3,
- 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1,
- 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9,
- 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67,
- 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c,
- 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b,
- 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69,
- 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1,
- 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c,
- 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f,
- /* 0xd5 */
- 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
- 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
- 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
- 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
- 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
- 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
- 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
- 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378,
- 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665,
- 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887,
- 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f,
- 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877,
- 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e,
- 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b,
- 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38,
- 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab,
- 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6,
- 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5,
- 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0,
- 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9,
- /* 0xd6 */
- 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
- 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
- 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
- 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
- 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
- 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
- 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
- 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb,
- 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f,
- 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b,
- 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826,
- 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b,
- 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94,
- 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24,
- 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f,
- 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3,
- 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29,
- 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63,
- 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0,
- 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f,
- /* 0xd7 */
- 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
- 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
- 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
- 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
- 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
- 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
- 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
- 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2,
- 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8,
- 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852,
- 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1,
- 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac,
- 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30,
- 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d,
- 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf,
- 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1,
- 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea,
- 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9,
- 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1,
- 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea,
- /* 0xd8 */
- 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
- 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
- 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
- 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
- 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
- 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
- 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
- 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819,
- 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c,
- 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d,
- 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2,
- 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae,
- 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b,
- 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd,
- 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37,
- 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e,
- 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42,
- 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45,
- 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9,
- 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114,
- /* 0xd9 */
- 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
- 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
- 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
- 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
- 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
- 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
- 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
- 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c,
- 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701,
- 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1,
- 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910,
- 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911,
- 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8,
- 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6,
- 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7,
- 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95,
- 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47,
- 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b,
- 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40,
- 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e,
- /* 0xda */
- 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
- 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
- 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
- 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
- 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
- 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
- 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
- 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x741a,
- 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420,
- 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1,
- 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da,
- 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b,
- 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d,
- 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862,
- 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c,
- 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, 0x7b44, 0x7b48,
- 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8,
- 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a,
- 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51,
- 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65,
- /* 0xdb */
- 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
- 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
- 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
- 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
- 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
- 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
- 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
- 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5,
- 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, 0x83ec, 0x83ee,
- 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8,
- 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb,
- 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856,
- 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6,
- 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998,
- 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59,
- 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51,
- 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe,
- 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3,
- 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8,
- 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa,
- /* 0xdc */
- 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
- 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
- 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
- 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
- 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
- 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
- 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
- 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689,
- 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c,
- 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83,
- 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca,
- 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb,
- 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c,
- 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0,
- 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5,
- 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714,
- 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855,
- 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871,
- 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5,
- 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6,
- /* 0xdd */
- 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
- 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
- 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
- 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
- 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
- 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
- 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
- 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433,
- 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
- 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a,
- 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e,
- 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695,
- 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966,
- 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a,
- 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935,
- 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969,
- 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c,
- 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952,
- 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, 0x6b48,
- 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc,
- /* 0xde */
- 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
- 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
- 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
- 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
- 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
- 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
- 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
- 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144,
- 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e,
- 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444,
- 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450,
- 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe,
- 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603,
- 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6,
- 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f,
- 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759,
- 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895,
- 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896,
- 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19,
- 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13,
- /* 0xdf */
- 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
- 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
- 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
- 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
- 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
- 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
- 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
- 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144,
- 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1,
- 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451,
- 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459,
- 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434,
- 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b,
- 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c,
- 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433,
- 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450,
- 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d,
- 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6,
- 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0,
- 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4,
- /* 0xe0 */
- 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
- 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
- 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
- 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
- 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
- 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
- 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
- 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044,
- 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114,
- 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a,
- 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246,
- 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261,
- 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253,
- 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692,
- 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5,
- 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac,
- 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab,
- 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4,
- 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3,
- 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0,
- /* 0xe1 */
- 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
- 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
- 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
- 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
- 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
- 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
- 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
- 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3,
- 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77,
- 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f,
- 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc,
- 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6,
- 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153,
- 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165,
- 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b,
- 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d,
- 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b,
- 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459,
- 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705,
- 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9,
- /* 0xe2 */
- 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
- 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
- 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
- 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
- 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
- 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
- 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
- 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36,
- 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35,
- 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39,
- 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21,
- 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b,
- 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293,
- 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475,
- 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590,
- 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8,
- 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e,
- 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab,
- 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a,
- 0x798b, 0x7996, 0x7995, 0x7994, 0x7993,
- /* 0xe3 */
- 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
- 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
- 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
- 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
- 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
- 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
- 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
- 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024,
- 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c,
- 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce,
- 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd,
- 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2,
- 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6,
- 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db,
- 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740,
- 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741,
- 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712,
- 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724,
- 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa,
- 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb,
- /* 0xe4 */
- 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
- 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
- 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
- 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
- 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
- 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
- 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
- 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6,
- 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e,
- 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286,
- 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, 0x928b,
- 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e,
- 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce,
- 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d,
- 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7,
- 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f,
- 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8,
- 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a,
- 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635,
- 0x5641, 0x564a, 0x5649, 0x5646, 0x5658,
- /* 0xe5 */
- 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
- 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
- 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
- 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
- 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
- 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
- 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
- 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b,
- 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d,
- 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485,
- 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f,
- 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2,
- 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af,
- 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4,
- 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, 0x69fe, 0x6a27,
- 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6,
- 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25,
- 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5,
- 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41,
- 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92,
- /* 0xe6 */
- 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
- 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
- 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
- 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
- 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
- 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
- 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
- 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362,
- 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488,
- 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619,
- 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d,
- 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb,
- 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4,
- 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76,
- 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac,
- 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc,
- 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03,
- 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76,
- 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, 0x7fec, 0x7fe6,
- 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f,
- /* 0xe7 */
- 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
- 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
- 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
- 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
- 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
- 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
- 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
- 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756,
- 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b,
- 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750,
- 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c,
- 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a,
- 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906,
- 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed,
- 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4,
- 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3,
- 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf,
- 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1,
- 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b,
- 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27,
- /* 0xe8 */
- 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
- 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
- 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
- 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
- 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
- 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
- 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
- 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5,
- 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0,
- 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a,
- 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829,
- 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911,
- 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3,
- 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc,
- 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43,
- 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68,
- 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07,
- 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3,
- 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de,
- 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e,
- /* 0xe9 */
- 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
- 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
- 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
- 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
- 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
- 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
- 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
- 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf,
- 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd,
- 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c,
- 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd,
- 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67,
- 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51,
- 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50,
- 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56,
- 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7,
- 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad,
- 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4,
- 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba,
- 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8,
- /* 0xea */
- 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
- 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
- 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
- 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
- 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
- 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
- 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
- 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797,
- 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1,
- 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47,
- 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7,
- 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea,
- 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7,
- 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20,
- 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f,
- 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c,
- 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6,
- 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2,
- 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545,
- 0x856b, 0x854d, 0x8553, 0x8561, 0x8558,
- /* 0xeb */
- 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
- 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
- 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
- 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
- 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
- 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
- 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
- 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2,
- 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0,
- 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91,
- 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c,
- 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45,
- 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36,
- 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079,
- 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190,
- 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306,
- 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301,
- 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9325,
- 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329,
- 0x9339, 0x9335, 0x932a, 0x9314, 0x930c,
- /* 0xec */
- 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
- 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
- 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
- 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
- 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
- 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
- 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
- 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d,
- 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d,
- 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87,
- 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126,
- 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c,
- 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681,
- 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23,
- 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2,
- 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, 0x61b5, 0x61bc,
- 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9,
- 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da,
- 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b,
- 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e,
- /* 0xed */
- 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
- 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
- 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
- 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
- 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
- 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
- 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
- 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4,
- 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc,
- 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c,
- 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1,
- 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4,
- 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd,
- 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c,
- 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47,
- 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45,
- 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4,
- 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a,
- 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b,
- 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e,
- /* 0xee */
- 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
- 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
- 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
- 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
- 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
- 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
- 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
- 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18,
- 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15,
- 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f,
- 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f,
- 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40,
- 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f,
- 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356,
- 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351,
- 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355,
- 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363,
- 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3,
- 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718,
- 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c,
- /* 0xef */
- 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
- 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
- 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
- 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
- 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
- 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
- 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
- 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45,
- 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d,
- 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff,
- 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e,
- 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c,
- 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed,
- 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff,
- 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db,
- 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6,
- 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9,
- 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e,
- 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201,
- 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376,
- /* 0xf0 */
- 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
- 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
- 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
- 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
- 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
- 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
- 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
- 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0,
- 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3,
- 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8,
- 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be,
- 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5,
- 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8,
- 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd,
- 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949,
- 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f,
- 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e,
- 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98,
- 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60,
- 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67,
- /* 0xf1 */
- 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
- 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
- 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
- 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
- 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
- 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
- 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
- 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2,
- 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851,
- 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09,
- 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0,
- 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c,
- 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8,
- 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f,
- 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52,
- 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01,
- 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c,
- 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad,
- 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912,
- 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70,
- /* 0xf2 */
- 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
- 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
- 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
- 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
- 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
- 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
- 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
- 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921,
- 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c,
- 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78,
- 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b,
- 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7,
- 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9,
- 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8,
- 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de,
- 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c,
- 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962,
- 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959,
- 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40,
- 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55,
- /* 0xf3 */
- 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
- 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
- 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
- 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
- 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
- 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
- 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
- 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3,
- 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d,
- 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943,
- 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b,
- 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2,
- 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0,
- 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec,
- 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81,
- 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b,
- 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85,
- 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68,
- 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d,
- 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2,
- /* 0xf4 */
- 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
- 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
- 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
- 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
- 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
- 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
- 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
- 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2,
- 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47,
- 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff,
- 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, 0x8622, 0x85ff,
- 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605,
- 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816,
- 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68,
- 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84,
- 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143,
- 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb,
- 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419,
- 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412,
- 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff,
- /* 0xf5 */
- 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
- 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
- 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
- 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
- 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
- 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
- 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
- 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0,
- 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8,
- 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99,
- 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e,
- 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139,
- 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb,
- 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8,
- 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046,
- 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d,
- 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88,
- 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, 0x8618,
- 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e,
- 0x8621, 0x8620, 0x8629, 0x861e, 0x8625,
- /* 0xf6 */
- 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
- 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
- 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
- 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
- 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
- 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
- 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
- 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f,
- 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b,
- 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21,
- 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe,
- 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac,
- 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a,
- 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31,
- 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb,
- 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520,
- 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056,
- 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5,
- 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71,
- 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a,
- /* 0xf7 */
- 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
- 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
- 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
- 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
- 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
- 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
- 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
- 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49,
- 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55,
- 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c,
- 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde,
- 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9,
- 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35,
- 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299,
- 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201,
- 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12,
- 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383,
- 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640,
- 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e,
- 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe,
- /* 0xf8 */
- 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
- 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
- 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
- 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
- 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
- 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
- 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
- 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71,
- 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d,
- 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223,
- 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97,
- 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94,
- 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2,
- 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7,
- 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62,
- 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05,
- 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e,
- 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, 0x6b18,
- 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9,
- 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a,
- /* 0xf9 */
- 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
- 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
- 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
- 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
- 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
- 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
- 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
- 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4,
- 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e,
- 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961,
- 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48,
- 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481,
- 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, 0x8b9f, 0x9483,
- 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a,
- 0x9ea4, 0x9f7e, 0x9f49, 0x9f98,
-};
-
-static int
-big5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = s[0];
- if ((c1 >= 0xa1 && c1 <= 0xc7) || (c1 >= 0xc9 && c1 <= 0xf9)) {
- if (n >= 2) {
- unsigned char c2 = s[1];
- if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
- unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
- unsigned short wc = 0xfffd;
- if (i < 6280) {
- if (i < 6121)
- wc = big5_2uni_pagea1[i];
- } else {
- if (i < 13932)
- wc = big5_2uni_pagec9[i-6280];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short big5_2charset[13703] = {
- 0xa246, 0xa247, 0xa244, 0xa1b1, 0xa258, 0xa1d3, 0xa150, 0xa1d1,
- 0xa1d2, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa3bb, 0xa344, 0xa345,
- 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, 0xa34d,
- 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352, 0xa353, 0xa354, 0xa355,
- 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d,
- 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362, 0xa363, 0xa364, 0xa365,
- 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d,
- 0xa36e, 0xa36f, 0xa370, 0xa371, 0xa372, 0xa373, 0xc7b3, 0xc7b1,
- 0xc7b2, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba,
- 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2,
- 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca,
- 0xc7cb, 0xc7cc, 0xc7cd, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3,
- 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db,
- 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3,
- 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7ce, 0xa156, 0xa158,
- 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa145, 0xa14c, 0xa14b, 0xa1ac,
- 0xa1ab, 0xa1b0, 0xa1c2, 0xa24a, 0xa1c1, 0xa24b, 0xa2b9, 0xa2ba,
- 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, 0xa2c1, 0xa2c2,
- 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1f8, 0xa1f9, 0xa1fb, 0xa1fa,
- 0xa1d4, 0xa1db, 0xa1e8, 0xa1e7, 0xa1fd, 0xa1fc, 0xa1e4, 0xa1e5,
- 0xa1ec, 0xa1ed, 0xa1ef, 0xa1ee, 0xa1e3, 0xa1dc, 0xa1da, 0xa1dd,
- 0xa1d8, 0xa1d9, 0xa1e6, 0xa1e9, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec,
- 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4,
- 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc,
- 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa275, 0xa274,
- 0xa273, 0xa272, 0xa271, 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa27e,
- 0xa2a1, 0xa2a3, 0xa2a2, 0xa2ac, 0xa2ad, 0xa2ae, 0xa262, 0xa263,
- 0xa264, 0xa265, 0xa266, 0xa267, 0xa268, 0xa269, 0xa270, 0xa26f,
- 0xa26e, 0xa26d, 0xa26c, 0xa26b, 0xa26a, 0xa276, 0xa279, 0xa1bd,
- 0xa1bc, 0xa1b6, 0xa1b5, 0xa1bf, 0xa1be, 0xa1bb, 0xa1ba, 0xa1b3,
- 0xa1b7, 0xa1b4, 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0xa1b9, 0xa1b8,
- 0xa1f3, 0xa1f0, 0xa1f2, 0xa1f1, 0xa140, 0xa142, 0xa143, 0xa1b2,
- 0xc6a4, 0xa171, 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179,
- 0xa17a, 0xa169, 0xa16a, 0xa245, 0xa165, 0xa166, 0xa1a9, 0xa1aa,
- 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca,
- 0xa2cb, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab,
- 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3,
- 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb,
- 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3,
- 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb,
- 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3,
- 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db,
- 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3,
- 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb,
- 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3,
- 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6a2, 0xc6a3, 0xc6f8, 0xc6f9,
- 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 0xc740, 0xc741, 0xc742,
- 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a,
- 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752,
- 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a,
- 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762,
- 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a,
- 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772,
- 0xc773, 0xc774, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a,
- 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4,
- 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac,
- 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc6a1, 0xa374, 0xa375, 0xa376,
- 0xa377, 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e,
- 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8,
- 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0,
- 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8,
- 0xa3b9, 0xa3ba, 0xa1c0, 0xa255, 0xa256, 0xa250, 0xa251, 0xa252,
- 0xa254, 0xa257, 0xa253, 0xa1eb, 0xa1ea, 0xa24f, 0xa440, 0xa442,
- 0xa443, 0xc945, 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3,
- 0xc94f, 0xc94d, 0xa4a2, 0xa4a1, 0xa542, 0xa541, 0xa540, 0xa543,
- 0xa4fe, 0xa5e0, 0xa5e1, 0xa8c3, 0xa458, 0xa4a4, 0xc950, 0xa4a5,
- 0xc963, 0xa6ea, 0xcbb1, 0xa459, 0xa4a6, 0xa544, 0xc964, 0xc940,
- 0xa444, 0xa45b, 0xc947, 0xa45c, 0xa4a7, 0xa545, 0xa547, 0xa546,
- 0xa5e2, 0xa5e3, 0xa8c4, 0xadbc, 0xa441, 0xc941, 0xa445, 0xa45e,
- 0xa45d, 0xa5e4, 0xa8c5, 0xb0ae, 0xd44b, 0xb6c3, 0xdcb1, 0xdcb2,
- 0xa446, 0xa4a9, 0xa8c6, 0xa447, 0xc948, 0xa45f, 0xa4aa, 0xa4ac,
- 0xc951, 0xa4ad, 0xa4ab, 0xa5e5, 0xa8c7, 0xa8c8, 0xab45, 0xa460,
- 0xa4ae, 0xa5e6, 0xa5e8, 0xa5e7, 0xa6eb, 0xa8c9, 0xa8ca, 0xab46,
- 0xab47, 0xadbd, 0xdcb3, 0xf6d6, 0xa448, 0xa4b0, 0xa4af, 0xc952,
- 0xa4b1, 0xa4b7, 0xa4b2, 0xa4b3, 0xc954, 0xc953, 0xa4b5, 0xa4b6,
- 0xa4b4, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa549, 0xa550, 0xc96a,
- 0xc966, 0xc969, 0xa551, 0xa561, 0xc968, 0xa54e, 0xa54f, 0xa548,
- 0xc965, 0xc967, 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae,
- 0xa5f3, 0xc9b2, 0xa5f4, 0xa5f7, 0xa5e9, 0xc9b1, 0xa5f8, 0xc9b5,
- 0xc9b9, 0xc9b6, 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9, 0xa5ee, 0xc9ab,
- 0xa5f1, 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af, 0xa5ed, 0xc9ac,
- 0xa5eb, 0xc9b4, 0xc9b7, 0xc9ad, 0xca66, 0xa742, 0xa6f4, 0xca67,
- 0xa6f1, 0xa744, 0xa6f9, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7, 0xca60,
- 0xca68, 0xca64, 0xa6fa, 0xa6fd, 0xa6ee, 0xa747, 0xca5d, 0xcbbd,
- 0xa6ec, 0xa743, 0xa6ed, 0xa6f5, 0xa6f6, 0xca62, 0xca5e, 0xa6fb,
- 0xa6f3, 0xca5a, 0xa6ef, 0xca65, 0xa745, 0xa748, 0xa6f2, 0xa740,
- 0xa746, 0xa6f0, 0xca63, 0xa741, 0xca69, 0xca5c, 0xa6fe, 0xca5f,
- 0xca61, 0xa8d8, 0xcbbf, 0xcbcb, 0xa8d0, 0xcbcc, 0xa8cb, 0xa8d5,
- 0xa8ce, 0xcbb9, 0xa8d6, 0xcbb8, 0xcbbc, 0xcbc3, 0xcbc1, 0xa8de,
- 0xa8d9, 0xcbb3, 0xcbb5, 0xa8db, 0xa8cf, 0xcbb6, 0xcbc2, 0xcbc9,
- 0xa8d4, 0xcbbb, 0xcbb4, 0xa8d3, 0xcbb7, 0xa8d7, 0xcbba, 0xa8d2,
- 0xa8cd, 0xa8dc, 0xcbc4, 0xa8dd, 0xcbc8, 0xcbc6, 0xcbca, 0xa8da,
- 0xcbbe, 0xcbb2, 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0xab56,
- 0xab4a, 0xcde0, 0xcde8, 0xab49, 0xab51, 0xab5d, 0xcdee, 0xcdec,
- 0xcde7, 0xab4b, 0xcded, 0xcde3, 0xab59, 0xab50, 0xab58, 0xcdde,
- 0xcdea, 0xcde1, 0xab54, 0xcde2, 0xcddd, 0xab5b, 0xab4e, 0xab57,
- 0xab4d, 0xcddf, 0xcde4, 0xcdeb, 0xab55, 0xab52, 0xcde6, 0xab5a,
- 0xcde9, 0xcde5, 0xab4f, 0xab5c, 0xab53, 0xab4c, 0xab48, 0xcdef,
- 0xadd7, 0xadc1, 0xadd1, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4, 0xd0d5,
- 0xadc4, 0xadcd, 0xadda, 0xadce, 0xd0c9, 0xadc7, 0xd0ca, 0xaddc,
- 0xadd3, 0xadbe, 0xadbf, 0xd0dd, 0xb0bf, 0xadcc, 0xadcb, 0xd0cb,
- 0xadcf, 0xd45b, 0xadc6, 0xd0d6, 0xadd5, 0xadd4, 0xadca, 0xd0ce,
- 0xd0d7, 0xd0c8, 0xadc9, 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0xadc3,
- 0xadc2, 0xd0d9, 0xadd0, 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8,
- 0xd0db, 0xd0cd, 0xd0dc, 0xd0d1, 0xd0da, 0xd0d2, 0xadc8, 0xd463,
- 0xd457, 0xb0b3, 0xd45c, 0xd462, 0xb0b2, 0xd455, 0xb0b6, 0xd459,
- 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, 0xd467, 0xd451, 0xb0ba,
- 0xd466, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f, 0xd45d, 0xd450,
- 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0xd85b, 0xd45e, 0xd44d,
- 0xd45f, 0xb0c1, 0xd464, 0xb0c0, 0xd44c, 0xd454, 0xd465, 0xb0bc,
- 0xb0bb, 0xb0b8, 0xb0bd, 0xb0af, 0xb0b0, 0xb3c8, 0xd85e, 0xd857,
- 0xb3c5, 0xd85f, 0xd855, 0xd858, 0xb3c4, 0xd859, 0xb3c7, 0xd85d,
- 0xd853, 0xd852, 0xb3c9, 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c,
- 0xd85a, 0xd854, 0xb3c3, 0xd856, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd,
- 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb,
- 0xdcc4, 0xdcbf, 0xb6cc, 0xdcb4, 0xb6c9, 0xdcb5, 0xdcbe, 0xdcbc,
- 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, 0xdcbb, 0xdcc2, 0xdcb9, 0xdcc1,
- 0xb9b6, 0xb9b3, 0xb9b4, 0xe0f9, 0xe0f1, 0xb9b2, 0xb9af, 0xe0f2,
- 0xb9b1, 0xe0f5, 0xe0f7, 0xe0fe, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0,
- 0xb9ac, 0xe0f3, 0xb9b7, 0xe0f6, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc,
- 0xe0fb, 0xb9b5, 0xe0f4, 0xbbf8, 0xe4ec, 0xe4e9, 0xbbf9, 0xbbf7,
- 0xe4f0, 0xe4ed, 0xe4e6, 0xbbf6, 0xbbfa, 0xe4e7, 0xbbf5, 0xbbfd,
- 0xe4ea, 0xe4eb, 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef, 0xbeaa,
- 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab, 0xe8f6, 0xbea8, 0xe8f7,
- 0xe8f4, 0xc076, 0xecbd, 0xc077, 0xecbb, 0xecbc, 0xecba, 0xecb9,
- 0xecbe, 0xc075, 0xefb8, 0xefb9, 0xe4e8, 0xefb7, 0xc078, 0xc35f,
- 0xf1eb, 0xf1ec, 0xc4d7, 0xc4d8, 0xf5c1, 0xf5c0, 0xc56c, 0xc56b,
- 0xf7d0, 0xa449, 0xa461, 0xa4b9, 0xa4b8, 0xa553, 0xa552, 0xa5fc,
- 0xa5fb, 0xa5fd, 0xa5fa, 0xa74a, 0xa749, 0xa74b, 0xa8e0, 0xa8df,
- 0xa8e1, 0xab5e, 0xa259, 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b,
- 0xd860, 0xa25d, 0xb9b8, 0xa25e, 0xa44a, 0xa4ba, 0xa5fe, 0xa8e2,
- 0xa44b, 0xa4bd, 0xa4bb, 0xa4bc, 0xa640, 0xa74c, 0xa8e4, 0xa8e3,
- 0xa8e5, 0xaddd, 0xbeac, 0xc94e, 0xa554, 0xa555, 0xa641, 0xca6a,
- 0xab60, 0xab5f, 0xd0e0, 0xd0df, 0xb0c3, 0xa4be, 0xc955, 0xcbcd,
- 0xab61, 0xade0, 0xadde, 0xaddf, 0xbead, 0xa556, 0xa642, 0xc9bc,
- 0xa74d, 0xa74e, 0xca6b, 0xcbce, 0xa8e6, 0xcbcf, 0xd0e2, 0xd0e3,
- 0xade3, 0xd0e4, 0xd0e1, 0xade4, 0xade2, 0xade1, 0xd0e5, 0xd468,
- 0xd861, 0xdcc5, 0xe140, 0xbbfe, 0xbeae, 0xe8f9, 0xa44c, 0xa45a,
- 0xb0c4, 0xb3cd, 0xb9b9, 0xc942, 0xa4bf, 0xa559, 0xa557, 0xa558,
- 0xa8e7, 0xa44d, 0xa44e, 0xa462, 0xa4c0, 0xa4c1, 0xa4c2, 0xc9be,
- 0xa55a, 0xc96b, 0xa646, 0xc9bf, 0xa644, 0xa645, 0xc9bd, 0xa647,
- 0xa643, 0xca6c, 0xaaec, 0xca6d, 0xca6e, 0xa750, 0xa74f, 0xa753,
- 0xa751, 0xa752, 0xa8ed, 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0xcbd0,
- 0xa8ee, 0xa8ea, 0xa8e9, 0xa8eb, 0xa8e8, 0xa8ef, 0xab63, 0xcdf0,
- 0xcbd3, 0xab68, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62,
- 0xd0e8, 0xade7, 0xd0eb, 0xade5, 0xd0e7, 0xade8, 0xade6, 0xade9,
- 0xd0e9, 0xd0ea, 0xd0e6, 0xd0ec, 0xb3d1, 0xb0c5, 0xd469, 0xd46b,
- 0xd46a, 0xd46c, 0xb0c6, 0xb3ce, 0xb3cf, 0xb3d0, 0xb6d0, 0xdcc7,
- 0xdcc6, 0xdcc8, 0xdcc9, 0xb6d1, 0xb6cf, 0xe141, 0xe142, 0xb9bb,
- 0xb9ba, 0xe35a, 0xbc40, 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3,
- 0xbc43, 0xbeaf, 0xbeb0, 0xf1ed, 0xf5c3, 0xf5c2, 0xf7d1, 0xa44f,
- 0xa55c, 0xa55b, 0xa648, 0xc9c0, 0xa755, 0xa756, 0xa754, 0xa757,
- 0xca6f, 0xca70, 0xa8f1, 0xcbd5, 0xa8f0, 0xcdf2, 0xab6c, 0xcdf3,
- 0xab6b, 0xab69, 0xab6a, 0xd0ed, 0xb0c7, 0xd46e, 0xb0ca, 0xd46d,
- 0xb1e5, 0xb0c9, 0xb0c8, 0xb3d4, 0xb3d3, 0xb3d2, 0xb6d2, 0xb6d5,
- 0xb6d6, 0xb6d4, 0xb6d3, 0xe143, 0xe144, 0xe4f5, 0xbc45, 0xe4f4,
- 0xbeb1, 0xecbf, 0xc079, 0xf1ee, 0xc455, 0xa463, 0xa4c3, 0xc956,
- 0xa4c4, 0xa4c5, 0xa55d, 0xa55e, 0xa649, 0xca71, 0xcbd6, 0xcbd7,
- 0xab6d, 0xd0ee, 0xb0cc, 0xb0cb, 0xd863, 0xd862, 0xa450, 0xa4c6,
- 0xa55f, 0xb0cd, 0xc943, 0xc96c, 0xa560, 0xc9c2, 0xa64b, 0xa64a,
- 0xc9c1, 0xa758, 0xadea, 0xd46f, 0xb6d7, 0xe145, 0xb9bc, 0xe8fa,
- 0xf3fd, 0xa4c7, 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, 0xb0cf, 0xa451,
- 0xa464, 0xa2cd, 0xa4ca, 0xa4c9, 0xa4c8, 0xa563, 0xa562, 0xc96d,
- 0xc9c3, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0xab6e, 0xb3d5, 0xa452,
- 0xa4cb, 0xa565, 0xa564, 0xca72, 0xa8f6, 0xc957, 0xa567, 0xa566,
- 0xa64c, 0xa64d, 0xca73, 0xa759, 0xa75a, 0xa8f7, 0xa8f8, 0xa8f9,
- 0xab6f, 0xcdf5, 0xadeb, 0xc944, 0xa4cc, 0xc9c4, 0xca74, 0xca75,
- 0xcbd9, 0xcbda, 0xcdf7, 0xcdf6, 0xcdf9, 0xcdf8, 0xab70, 0xd470,
- 0xaded, 0xd0ef, 0xadec, 0xd864, 0xb3d6, 0xd865, 0xe146, 0xb9bd,
- 0xbc46, 0xf1ef, 0xc958, 0xa568, 0xb0d1, 0xa453, 0xa465, 0xa4ce,
- 0xa4cd, 0xa4cf, 0xa8fb, 0xa8fa, 0xa8fc, 0xab71, 0xadee, 0xe8fb,
- 0xc24f, 0xa466, 0xa56a, 0xa579, 0xa574, 0xa56f, 0xa56e, 0xa575,
- 0xa573, 0xa56c, 0xa57a, 0xa56d, 0xa569, 0xa578, 0xa577, 0xa576,
- 0xa56b, 0xa572, 0xa571, 0xa57b, 0xa570, 0xa653, 0xa659, 0xa655,
- 0xa65b, 0xc9c5, 0xa658, 0xa64e, 0xa651, 0xa654, 0xa650, 0xa657,
- 0xa65a, 0xa64f, 0xa652, 0xa656, 0xa65c, 0xca7e, 0xca7b, 0xa767,
- 0xca7c, 0xa75b, 0xa75d, 0xa775, 0xa770, 0xcaa5, 0xca7d, 0xa75f,
- 0xa761, 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d,
- 0xca76, 0xa773, 0xa764, 0xa76e, 0xa76f, 0xca77, 0xa76c, 0xa76a,
- 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0xa772, 0xcaa3, 0xa766, 0xa763,
- 0xca7a, 0xa762, 0xcaa6, 0xa765, 0xa769, 0xa760, 0xcaa2, 0xca79,
- 0xcbeb, 0xcbea, 0xa94f, 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee,
- 0xa950, 0xcbe1, 0xcbe5, 0xcbe9, 0xce49, 0xa94b, 0xce4d, 0xa8fd,
- 0xcbe6, 0xa8fe, 0xa94c, 0xa945, 0xa941, 0xcbe2, 0xa944, 0xa949,
- 0xa952, 0xcbe3, 0xcbdc, 0xa943, 0xcbdd, 0xcbdf, 0xa946, 0xa948,
- 0xcbdb, 0xcbe0, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xa94a, 0xcbde,
- 0xa947, 0xa942, 0xa940, 0xcbec, 0xa94e, 0xce48, 0xcdfb, 0xce4b,
- 0xcdfd, 0xab78, 0xaba8, 0xab74, 0xaba7, 0xab7d, 0xaba4, 0xab72,
- 0xcdfc, 0xce43, 0xaba3, 0xce4f, 0xaba5, 0xab79, 0xce45, 0xce42,
- 0xab77, 0xcdfa, 0xaba6, 0xce4a, 0xab7c, 0xce4c, 0xaba9, 0xab73,
- 0xab7e, 0xab7b, 0xce40, 0xaba1, 0xce46, 0xce47, 0xab7a, 0xaba2,
- 0xab76, 0xab75, 0xcdfe, 0xce44, 0xce4e, 0xd144, 0xadfb, 0xd0f1,
- 0xd0f6, 0xadf4, 0xae40, 0xd0f4, 0xadef, 0xadf9, 0xadfe, 0xd0fb,
- 0xadfa, 0xadfd, 0xd0fe, 0xadf5, 0xd0f5, 0xd142, 0xd143, 0xadf7,
- 0xd141, 0xadf3, 0xae43, 0xd0f8, 0xadf1, 0xd146, 0xd0f9, 0xd0fd,
- 0xadf6, 0xae42, 0xd0fa, 0xadfc, 0xd140, 0xd147, 0xd4a1, 0xd145,
- 0xae44, 0xadf0, 0xd0fc, 0xd0f3, 0xadf8, 0xd0f2, 0xd0f7, 0xd0f0,
- 0xae41, 0xd477, 0xb0e4, 0xd4a7, 0xb0e2, 0xb0df, 0xd47c, 0xb0db,
- 0xd4a2, 0xb0e6, 0xd476, 0xd47b, 0xd47a, 0xadf2, 0xb0e1, 0xd4a5,
- 0xd4a8, 0xd473, 0xb3e8, 0xd4a9, 0xb0e7, 0xb0d9, 0xb0d6, 0xd47e,
- 0xb0d3, 0xd4a6, 0xb0da, 0xd4aa, 0xd474, 0xd4a4, 0xb0dd, 0xd475,
- 0xd478, 0xd47d, 0xb0de, 0xb0dc, 0xb0e8, 0xb0e3, 0xb0d7, 0xb1d2,
- 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0xb0d4, 0xd471,
- 0xd472, 0xd86a, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, 0xb3d8,
- 0xd871, 0xb3de, 0xb3e4, 0xb5bd, 0xb3e2, 0xd86e, 0xb3ef, 0xb3db,
- 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, 0xd866, 0xd873, 0xd86d,
- 0xb3e1, 0xd879, 0xb3dd, 0xb3f1, 0xb3ea, 0xb3df, 0xb3dc, 0xb3e7,
- 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9, 0xd867,
- 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0xb3ed, 0xb3e9, 0xb3e5,
- 0xd870, 0xb3eb, 0xdcd5, 0xdcd1, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5,
- 0xb6e6, 0xb6de, 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde,
- 0xb6dc, 0xdcd8, 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9,
- 0xdcdb, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0, 0xb6d8, 0xb6e4,
- 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db, 0xa25f, 0xb6d9, 0xdcd4,
- 0xb6e2, 0xdcdd, 0xb9cd, 0xb9c8, 0xe155, 0xe151, 0xe14b, 0xb9c2,
- 0xb9be, 0xe154, 0xb9bf, 0xe14e, 0xe150, 0xe153, 0xb9c4, 0xb9cb,
- 0xb9c5, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, 0xb9cc, 0xe14a, 0xe14f,
- 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, 0xb9c0, 0xe14d, 0xe152, 0xb9ca,
- 0xe147, 0xbc4d, 0xe547, 0xe544, 0xbc47, 0xbc53, 0xbc54, 0xbc4a,
- 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xe546, 0xbc49, 0xe548, 0xbc48,
- 0xe543, 0xe545, 0xbc4b, 0xe541, 0xe4fa, 0xe4f7, 0xd86b, 0xe4fd,
- 0xe4f6, 0xe4fc, 0xe4fb, 0xe4f8, 0xbc4f, 0xbc4e, 0xbc50, 0xe4fe,
- 0xbeb2, 0xe540, 0xe945, 0xe8fd, 0xbebe, 0xe942, 0xbeb6, 0xbeba,
- 0xe941, 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3, 0xbebd, 0xe943, 0xe8fe,
- 0xbebc, 0xe8fc, 0xbebb, 0xe944, 0xe940, 0xbc51, 0xbebf, 0xe946,
- 0xbeb7, 0xbeb4, 0xecc6, 0xecc8, 0xc07b, 0xecc9, 0xecc7, 0xecc5,
- 0xecc4, 0xc07d, 0xecc3, 0xc07e, 0xecc1, 0xecc2, 0xc07a, 0xc0a1,
- 0xc07c, 0xecc0, 0xc250, 0xefbc, 0xefba, 0xefbf, 0xefbd, 0xefbb,
- 0xefbe, 0xc360, 0xf1f2, 0xf1f3, 0xc456, 0xf1f4, 0xf1f0, 0xf1f5,
- 0xf1f1, 0xc251, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457,
- 0xc45a, 0xf5c5, 0xf5c6, 0xc4da, 0xc4d9, 0xc4db, 0xf5c4, 0xf6d8,
- 0xf6d7, 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8, 0xf8a6, 0xc5f1,
- 0xf8a5, 0xf8ee, 0xc949, 0xa57d, 0xa57c, 0xa65f, 0xa65e, 0xc9c7,
- 0xa65d, 0xc9c6, 0xa779, 0xcaa9, 0xcaa8, 0xa777, 0xa77a, 0xcaa7,
- 0xa778, 0xcbf0, 0xcbf1, 0xa954, 0xabaa, 0xd148, 0xd149, 0xae45,
- 0xae46, 0xd4ac, 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c, 0xb3f2,
- 0xb6e9, 0xb6ea, 0xdce1, 0xb9cf, 0xb9ce, 0xe549, 0xe948, 0xe947,
- 0xf96b, 0xa467, 0xc959, 0xc96e, 0xc96f, 0xa662, 0xa666, 0xc9c9,
- 0xa664, 0xa663, 0xc9c8, 0xa665, 0xa661, 0xa660, 0xc9ca, 0xa7a6,
- 0xa7a3, 0xa77d, 0xcaaa, 0xcaab, 0xa7a1, 0xcaad, 0xa77b, 0xcaae,
- 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, 0xa7a4, 0xa77c, 0xcaaf, 0xa959,
- 0xcbfe, 0xa95b, 0xa95a, 0xcc40, 0xa958, 0xa957, 0xcbf5, 0xcbf4,
- 0xcbf2, 0xcbf7, 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8,
- 0xa956, 0xcbfb, 0xa95c, 0xcc41, 0xcbf9, 0xabab, 0xa955, 0xabac,
- 0xce54, 0xce5a, 0xabb2, 0xce58, 0xce5e, 0xce55, 0xce59, 0xce5b,
- 0xce5d, 0xce57, 0xce56, 0xce51, 0xce52, 0xabad, 0xabaf, 0xabae,
- 0xce53, 0xce5c, 0xabb1, 0xce50, 0xd153, 0xd152, 0xd157, 0xd14e,
- 0xd151, 0xd150, 0xd154, 0xd158, 0xae47, 0xae4a, 0xd14f, 0xd155,
- 0xae49, 0xd14a, 0xabb0, 0xd4ba, 0xd156, 0xd14d, 0xae48, 0xd14c,
- 0xd4b1, 0xb0ec, 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1, 0xd4bf,
- 0xd4c5, 0xd4c9, 0xd4c0, 0xd4b4, 0xd4bc, 0xd4ca, 0xd4c8, 0xd4be,
- 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5, 0xd4b7, 0xb0f6, 0xb0f2,
- 0xd4ad, 0xd4c3, 0xd4b5, 0xd4b3, 0xd4c6, 0xb0f3, 0xd4cc, 0xb0ed,
- 0xb0ef, 0xd4bb, 0xd4b6, 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb,
- 0xd4c2, 0xd4c4, 0xd4ae, 0xd8a1, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2,
- 0xb3fb, 0xb3f9, 0xd8a4, 0xb3f6, 0xd8a8, 0xd8a3, 0xd8a5, 0xd87d,
- 0xb3f4, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, 0xb3f7, 0xb3f8, 0xd14b,
- 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, 0xd8b0, 0xd8af, 0xd8b3,
- 0xdcef, 0xd8ac, 0xd8a7, 0xdce7, 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6,
- 0xdcea, 0xdce5, 0xb6ec, 0xb6f6, 0xdce2, 0xb6f0, 0xdce9, 0xb6ee,
- 0xb6ed, 0xdcec, 0xb6ef, 0xdcee, 0xdceb, 0xb6eb, 0xb6f5, 0xdcf0,
- 0xdce4, 0xdced, 0xdce3, 0xb6f1, 0xb6f3, 0xdce8, 0xdcf1, 0xe15d,
- 0xb9d0, 0xe163, 0xb9d5, 0xe15f, 0xe166, 0xe157, 0xb9d7, 0xb9d1,
- 0xe15c, 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0xb9d6, 0xe15a, 0xe160,
- 0xe165, 0xe156, 0xb9d4, 0xe15e, 0xe162, 0xe168, 0xe158, 0xe161,
- 0xb9d3, 0xe167, 0xe159, 0xbc59, 0xe54b, 0xbc57, 0xbc56, 0xe54d,
- 0xe552, 0xe54e, 0xe551, 0xbc5c, 0xbea5, 0xbc5b, 0xe54a, 0xe550,
- 0xbc5a, 0xe54f, 0xe54c, 0xbc58, 0xe94d, 0xe94f, 0xe94a, 0xbec1,
- 0xe94c, 0xbec0, 0xe94e, 0xbec3, 0xe950, 0xbec2, 0xe949, 0xe94b,
- 0xc0a5, 0xeccc, 0xc0a4, 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca,
- 0xc253, 0xc252, 0xf1f6, 0xf1f8, 0xf1f7, 0xc361, 0xc362, 0xc363,
- 0xf442, 0xc45b, 0xf7d3, 0xf7d2, 0xc5f2, 0xa468, 0xa4d0, 0xa7a7,
- 0xce5f, 0xb3fc, 0xb3fd, 0xdcf2, 0xb9d8, 0xe169, 0xe553, 0xc95a,
- 0xcab0, 0xcc42, 0xce60, 0xd159, 0xae4c, 0xf1f9, 0xc4dc, 0xa469,
- 0xa57e, 0xc970, 0xa667, 0xa668, 0xa95d, 0xb0f7, 0xb9da, 0xb9db,
- 0xb9d9, 0xa46a, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b, 0xa4d4, 0xa5a1,
- 0xc971, 0xa5a2, 0xa669, 0xa66a, 0xc9cb, 0xa7a8, 0xcab1, 0xa961,
- 0xcc43, 0xa95f, 0xa960, 0xa95e, 0xd15a, 0xabb6, 0xabb5, 0xabb7,
- 0xabb4, 0xce61, 0xa962, 0xabb3, 0xae4d, 0xae4e, 0xae4f, 0xd4cd,
- 0xb3fe, 0xd8b4, 0xb0f8, 0xb6f8, 0xb9dd, 0xb9dc, 0xe16a, 0xbc5d,
- 0xbec4, 0xefc0, 0xf6da, 0xf7d4, 0xa46b, 0xa5a3, 0xa5a4, 0xc9d1,
- 0xa66c, 0xa66f, 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, 0xc9cc,
- 0xa671, 0xa670, 0xa66d, 0xa66b, 0xc9ce, 0xa7b3, 0xa7b0, 0xcab6,
- 0xcab9, 0xcab8, 0xa7aa, 0xa7b2, 0xa7af, 0xcab5, 0xcab3, 0xa7ae,
- 0xa7a9, 0xa7ac, 0xcab4, 0xcabb, 0xcab7, 0xa7ad, 0xa7b1, 0xa7b4,
- 0xcab2, 0xcaba, 0xa7ab, 0xa967, 0xa96f, 0xcc4f, 0xcc48, 0xa970,
- 0xcc53, 0xcc44, 0xcc4b, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50,
- 0xa963, 0xcc51, 0xcc4a, 0xcc4d, 0xa972, 0xa969, 0xcc54, 0xcc52,
- 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, 0xa96a, 0xa968,
- 0xa971, 0xa96d, 0xa965, 0xcc4e, 0xabb9, 0xabc0, 0xce6f, 0xabb8,
- 0xce67, 0xce63, 0xce73, 0xce62, 0xabbb, 0xce6c, 0xabbe, 0xabc1,
- 0xabbc, 0xce70, 0xabbf, 0xae56, 0xce76, 0xce64, 0xce66, 0xce6d,
- 0xce71, 0xce75, 0xce72, 0xce6b, 0xce6e, 0xce68, 0xabc3, 0xce6a,
- 0xce69, 0xce74, 0xabba, 0xce65, 0xabc2, 0xabbd, 0xae5c, 0xd162,
- 0xae5b, 0xd160, 0xae50, 0xae55, 0xd15f, 0xd15c, 0xd161, 0xae51,
- 0xd15b, 0xae54, 0xae52, 0xd163, 0xae53, 0xae57, 0xae58, 0xae5a,
- 0xae59, 0xd15d, 0xd15e, 0xd164, 0xd4d4, 0xb0f9, 0xd8c2, 0xd4d3,
- 0xd4e6, 0xb140, 0xd4e4, 0xb0fe, 0xb0fa, 0xd4ed, 0xd4dd, 0xd4e0,
- 0xb143, 0xd4ea, 0xd4e2, 0xb0fb, 0xb144, 0xd4e7, 0xd4e5, 0xd4d6,
- 0xd4eb, 0xd4df, 0xd4da, 0xd4d0, 0xd4ec, 0xd4dc, 0xd4cf, 0xb142,
- 0xd4e1, 0xd4ee, 0xd4de, 0xd4d2, 0xd4d7, 0xd4ce, 0xb141, 0xd4db,
- 0xd4d8, 0xb0fc, 0xd4d1, 0xd4e9, 0xb0fd, 0xd4d9, 0xd4d5, 0xd4e8,
- 0xb440, 0xd8bb, 0xd8b8, 0xd8c9, 0xd8bd, 0xd8ca, 0xb442, 0xd8c6,
- 0xd8c3, 0xd8c4, 0xd8c7, 0xd8cb, 0xd4e3, 0xd8cd, 0xdd47, 0xb443,
- 0xd8ce, 0xd8b6, 0xd8c0, 0xd8c5, 0xb441, 0xb444, 0xd8cc, 0xd8cf,
- 0xd8ba, 0xd8b7, 0xd8b9, 0xd8be, 0xd8bc, 0xb445, 0xd8c8, 0xd8bf,
- 0xd8c1, 0xd8b5, 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9,
- 0xdd44, 0xdd40, 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd,
- 0xb6fc, 0xdcfb, 0xdd41, 0xb6f9, 0xb741, 0xdcf4, 0xdcfe, 0xdcf3,
- 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0xe16e, 0xb9e2,
- 0xb9e1, 0xb9e3, 0xe17a, 0xe170, 0xe176, 0xe16b, 0xe179, 0xe178,
- 0xe17c, 0xe175, 0xb9de, 0xe174, 0xb9e4, 0xe16d, 0xb9df, 0xe17b,
- 0xb9e0, 0xe16f, 0xe172, 0xe177, 0xe171, 0xe16c, 0xe173, 0xe555,
- 0xbc61, 0xe558, 0xe557, 0xe55a, 0xe55c, 0xbc5f, 0xe556, 0xe554,
- 0xe55d, 0xe55b, 0xe559, 0xe55f, 0xe55e, 0xbc63, 0xbc5e, 0xbc60,
- 0xbc62, 0xe560, 0xe957, 0xe956, 0xe955, 0xe958, 0xe951, 0xe952,
- 0xe95a, 0xe953, 0xbec5, 0xe95c, 0xe95b, 0xe954, 0xecd1, 0xc0a8,
- 0xeccf, 0xecd4, 0xecd3, 0xe959, 0xc0a7, 0xecd2, 0xecce, 0xecd6,
- 0xecd5, 0xc0a6, 0xecd0, 0xbec6, 0xc254, 0xefc1, 0xf1fa, 0xf1fb,
- 0xf1fc, 0xc45c, 0xc45d, 0xf443, 0xf5c8, 0xf5c7, 0xf6db, 0xf6dc,
- 0xf7d5, 0xf8a7, 0xa46c, 0xa46d, 0xa46e, 0xa4d5, 0xa5a5, 0xc9d3,
- 0xa672, 0xa673, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5, 0xa973, 0xcc55,
- 0xa975, 0xa974, 0xcc56, 0xabc4, 0xae5d, 0xd165, 0xd4f0, 0xb145,
- 0xb447, 0xd4ef, 0xb446, 0xb9e5, 0xe17d, 0xbec7, 0xc0a9, 0xecd7,
- 0xc45e, 0xc570, 0xc972, 0xa5a6, 0xc973, 0xa676, 0xa674, 0xa675,
- 0xa677, 0xa7ba, 0xa7b9, 0xcabc, 0xa7bb, 0xcabd, 0xcc57, 0xcc58,
- 0xa976, 0xa978, 0xa97a, 0xa977, 0xa97b, 0xa979, 0xabc8, 0xabc5,
- 0xabc7, 0xabc9, 0xabc6, 0xd166, 0xce77, 0xd168, 0xd167, 0xae63,
- 0xae5f, 0xae60, 0xae62, 0xae64, 0xae61, 0xae66, 0xae65, 0xb14a,
- 0xd4f2, 0xd4f1, 0xb149, 0xb148, 0xb147, 0xb14b, 0xb146, 0xd8d5,
- 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0xb44b, 0xd8d4, 0xb448, 0xb44a,
- 0xd8d3, 0xdd48, 0xdd49, 0xdd4a, 0xb9e6, 0xb9ee, 0xe17e, 0xb9e8,
- 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea, 0xb9e7, 0xb9eb, 0xbc66,
- 0xd8d0, 0xbc67, 0xbc65, 0xbc64, 0xe95d, 0xbec8, 0xecd8, 0xecd9,
- 0xc364, 0xc45f, 0xa46f, 0xa678, 0xabca, 0xd169, 0xae67, 0xb14e,
- 0xb14d, 0xb14c, 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470,
- 0xc95c, 0xa4d6, 0xc974, 0xc9d4, 0xa679, 0xa97c, 0xdd4b, 0xa471,
- 0xa4d7, 0xc9d5, 0xcabe, 0xcabf, 0xa7bc, 0xd8d8, 0xb44e, 0xdd4c,
- 0xc0aa, 0xa472, 0xa4a8, 0xa4d8, 0xc975, 0xa5a7, 0xa7c0, 0xa7bf,
- 0xa7bd, 0xa7be, 0xcc59, 0xa97e, 0xa9a1, 0xcc5a, 0xa97d, 0xabce,
- 0xce78, 0xabcd, 0xabcb, 0xabcc, 0xae6a, 0xae68, 0xd16b, 0xae69,
- 0xd16a, 0xae5e, 0xd4f3, 0xb150, 0xb151, 0xb14f, 0xb9f0, 0xe1a2,
- 0xbc68, 0xbc69, 0xe561, 0xc0ab, 0xefc2, 0xefc3, 0xc4dd, 0xf8a8,
- 0xc94b, 0xa4d9, 0xa473, 0xc977, 0xc976, 0xa67a, 0xc9d7, 0xc9d8,
- 0xc9d6, 0xc9d9, 0xcac7, 0xcac2, 0xcac4, 0xcac6, 0xcac3, 0xa7c4,
- 0xcac0, 0xcac1, 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3, 0xcac9,
- 0xcc68, 0xcc62, 0xcc5d, 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69,
- 0xcc6c, 0xcc67, 0xcc60, 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64,
- 0xcc5b, 0xcc5f, 0xcc6b, 0xa9a7, 0xa9a8, 0xcc5e, 0xcc6a, 0xa9a2,
- 0xa9a4, 0xceab, 0xcea4, 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b,
- 0xceac, 0xcea9, 0xce79, 0xabd0, 0xcea7, 0xcea8, 0xcea6, 0xce7c,
- 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0xcea1, 0xcead, 0xae6f, 0xae6e,
- 0xd16c, 0xae6b, 0xd16e, 0xae70, 0xd16f, 0xae73, 0xae71, 0xd170,
- 0xceae, 0xd172, 0xae6d, 0xae6c, 0xd16d, 0xd171, 0xae72, 0xb153,
- 0xb152, 0xd4f5, 0xd4f9, 0xd4fb, 0xb154, 0xd4fe, 0xb158, 0xd541,
- 0xb15a, 0xb156, 0xb15e, 0xb15b, 0xd4f7, 0xb155, 0xd4f6, 0xd4f4,
- 0xd543, 0xd4f8, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d,
- 0xd4fa, 0xb159, 0xd544, 0xd540, 0xd8e7, 0xd8ee, 0xd8e3, 0xb451,
- 0xd8df, 0xd8ef, 0xd8d9, 0xd8ec, 0xd8ea, 0xd8e4, 0xd8ed, 0xd8e6,
- 0xd8de, 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da, 0xd8f1, 0xb452, 0xd8eb,
- 0xdd4f, 0xd8dd, 0xb44f, 0xd8e1, 0xb450, 0xd8e0, 0xd8e5, 0xd8e2,
- 0xd8e8, 0xdd53, 0xdd56, 0xdd4e, 0xdd50, 0xdd55, 0xdd54, 0xb743,
- 0xd8db, 0xdd52, 0xb744, 0xdd4d, 0xdd51, 0xe1a9, 0xe1b0, 0xe1a7,
- 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, 0xe1a4, 0xe1a8, 0xe1a3, 0xb9f1,
- 0xe1a6, 0xb9f2, 0xe1ac, 0xe1ab, 0xe1aa, 0xe1af, 0xe565, 0xe567,
- 0xbc6b, 0xe568, 0xe563, 0xe562, 0xe56c, 0xe56a, 0xbc6a, 0xe56d,
- 0xe564, 0xe569, 0xe56b, 0xe566, 0xe961, 0xe966, 0xe960, 0xe965,
- 0xe95e, 0xe968, 0xe964, 0xe969, 0xe963, 0xe95f, 0xe967, 0xe96a,
- 0xe962, 0xecda, 0xc0af, 0xc0ad, 0xc0ac, 0xc0ae, 0xefc4, 0xf172,
- 0xf1fd, 0xf444, 0xf445, 0xc460, 0xf5c9, 0xc4de, 0xf5ca, 0xf6de,
- 0xc572, 0xc571, 0xf6dd, 0xc5c9, 0xf7d6, 0xa474, 0xa67b, 0xc9da,
- 0xcaca, 0xa8b5, 0xb15f, 0xa475, 0xa5aa, 0xa5a9, 0xa5a8, 0xa7c5,
- 0xae74, 0xdd57, 0xa476, 0xa477, 0xa478, 0xa4da, 0xabd1, 0xceaf,
- 0xb453, 0xa479, 0xc95d, 0xa5ab, 0xa5ac, 0xc978, 0xa67c, 0xcacb,
- 0xa7c6, 0xcacc, 0xa9ae, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d, 0xa9a9,
- 0xcc6f, 0xa9aa, 0xa9ad, 0xabd2, 0xabd4, 0xceb3, 0xceb0, 0xceb1,
- 0xceb2, 0xceb4, 0xabd3, 0xd174, 0xd173, 0xae76, 0xae75, 0xb162,
- 0xd546, 0xb161, 0xb163, 0xb160, 0xb455, 0xd545, 0xb456, 0xd8f3,
- 0xb457, 0xd8f2, 0xb454, 0xdd5a, 0xdd5c, 0xb745, 0xdd5b, 0xdd59,
- 0xdd58, 0xe1b4, 0xb9f7, 0xb9f5, 0xb9f6, 0xe1b2, 0xe1b3, 0xb9f3,
- 0xe571, 0xe56f, 0xbc6d, 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0xe96d,
- 0xe96b, 0xe96c, 0xe56e, 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6,
- 0xe96e, 0xf1fe, 0xa47a, 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0xa9af,
- 0xb746, 0xa4db, 0xa5ae, 0xabd5, 0xb458, 0xc979, 0xc97a, 0xc9dc,
- 0xa7c8, 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1, 0xa7c7,
- 0xa9b3, 0xa9b4, 0xa9b1, 0xa9b0, 0xceb8, 0xa9b2, 0xabd6, 0xceb7,
- 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79, 0xd175, 0xd177, 0xae77,
- 0xd178, 0xae78, 0xd176, 0xceb5, 0xd547, 0xd54a, 0xd54b, 0xd548,
- 0xb167, 0xb166, 0xb164, 0xb165, 0xd549, 0xb168, 0xb45a, 0xb45b,
- 0xb45c, 0xdd5d, 0xdd5f, 0xdd61, 0xb748, 0xb747, 0xb459, 0xdd60,
- 0xdd5e, 0xe1b8, 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9,
- 0xe1b7, 0xe1b5, 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574,
- 0xbc71, 0xbc74, 0xe575, 0xbc6f, 0xbc73, 0xe973, 0xe971, 0xe970,
- 0xe972, 0xe96f, 0xc366, 0xf446, 0xf447, 0xf5cb, 0xf6df, 0xc655,
- 0xa9b5, 0xa7ca, 0xabd8, 0xa47b, 0xa4dc, 0xa5af, 0xc9dd, 0xa7cb,
- 0xcad2, 0xcebb, 0xabd9, 0xb9fa, 0xa47c, 0xa6a1, 0xb749, 0xa47d,
- 0xa4dd, 0xa4de, 0xa5b1, 0xa5b0, 0xc9de, 0xa6a2, 0xcad3, 0xa7cc,
- 0xcc71, 0xcc72, 0xcc73, 0xa9b6, 0xa9b7, 0xcc70, 0xa9b8, 0xabda,
- 0xcebc, 0xd17a, 0xae7a, 0xd179, 0xb169, 0xd54c, 0xb16a, 0xd54d,
- 0xb45d, 0xdd62, 0xe1bf, 0xe1be, 0xb9fb, 0xbc75, 0xe576, 0xbeca,
- 0xe974, 0xc0b1, 0xc573, 0xf7d8, 0xcc74, 0xcebd, 0xb16b, 0xd8f4,
- 0xb74a, 0xc255, 0xa7ce, 0xa7cd, 0xabdb, 0xd17b, 0xb16d, 0xb343,
- 0xb16e, 0xb16c, 0xb45e, 0xe1c0, 0xb9fc, 0xbc76, 0xc94c, 0xc9df,
- 0xcad5, 0xa7cf, 0xcad4, 0xa7d0, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb,
- 0xa9b9, 0xa9ba, 0xcc75, 0xabdd, 0xcebe, 0xabe0, 0xabdc, 0xabe2,
- 0xabde, 0xabdf, 0xabe1, 0xae7d, 0xae7c, 0xae7b, 0xd54f, 0xb16f,
- 0xb172, 0xb170, 0xd54e, 0xb175, 0xb171, 0xd550, 0xb174, 0xb173,
- 0xd8f6, 0xd8f5, 0xb461, 0xb45f, 0xb460, 0xd8f7, 0xb74b, 0xdd64,
- 0xb74c, 0xdd63, 0xe577, 0xbc78, 0xe1c1, 0xbc77, 0xb9fd, 0xecde,
- 0xe975, 0xc0b2, 0xecdd, 0xf240, 0xf448, 0xf449, 0xa4df, 0xa5b2,
- 0xc97b, 0xa7d2, 0xa7d4, 0xc9e2, 0xcad8, 0xcad7, 0xcad6, 0xc9e1,
- 0xc9e0, 0xa6a4, 0xa7d3, 0xa7d1, 0xa6a3, 0xa9bd, 0xcc78, 0xa9be,
- 0xcadd, 0xcadf, 0xcade, 0xcc79, 0xcada, 0xa7d8, 0xa7d6, 0xcad9,
- 0xcadb, 0xcae1, 0xa7d5, 0xcadc, 0xcae5, 0xa9c0, 0xcae2, 0xa7d7,
- 0xcae0, 0xcae3, 0xa9bf, 0xa9c1, 0xcae4, 0xccaf, 0xcca2, 0xcc7e,
- 0xccae, 0xcca9, 0xabe7, 0xa9c2, 0xccaa, 0xccad, 0xabe3, 0xccac,
- 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, 0xcc7c, 0xcca5, 0xa9cd, 0xccb0,
- 0xabe4, 0xcca6, 0xabe5, 0xa9c9, 0xcca8, 0xcecd, 0xabe6, 0xcc7b,
- 0xa9ca, 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7, 0xcc7a, 0xccab,
- 0xa9c4, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5, 0xcebf, 0xcec0, 0xceca,
- 0xd1a1, 0xcecb, 0xabee, 0xcece, 0xcec4, 0xabed, 0xcec6, 0xcec7,
- 0xcec9, 0xabe9, 0xaea3, 0xcec5, 0xcec1, 0xaea4, 0xcecf, 0xae7e,
- 0xd17d, 0xcec8, 0xd17c, 0xcec3, 0xcecc, 0xabec, 0xaea1, 0xabf2,
- 0xaea2, 0xced0, 0xd17e, 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef,
- 0xaea5, 0xced1, 0xaea7, 0xabea, 0xcec2, 0xb176, 0xd1a4, 0xd1a6,
- 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, 0xd1a3, 0xb178, 0xd551,
- 0xaead, 0xaeab, 0xd1ae, 0xd552, 0xd1a5, 0xaeac, 0xd1a9, 0xaeaf,
- 0xd1ab, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xaea9, 0xb179, 0xd1a2,
- 0xb177, 0xb17a, 0xd555, 0xd55e, 0xb464, 0xb17c, 0xb1a3, 0xb465,
- 0xd560, 0xb1aa, 0xd8f9, 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554,
- 0xd562, 0xd565, 0xd949, 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac,
- 0xd55d, 0xd8f8, 0xd561, 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559,
- 0xb462, 0xd557, 0xd558, 0xb1a7, 0xb1a6, 0xd55b, 0xb1ab, 0xd55f,
- 0xb1a4, 0xd55c, 0xb1a9, 0xb466, 0xb463, 0xd8fb, 0xd55a, 0xb17d,
- 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d, 0xd944, 0xb471, 0xdd65,
- 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947, 0xd948, 0xd94e, 0xb473,
- 0xb754, 0xd94a, 0xd94f, 0xd943, 0xb75e, 0xb755, 0xb472, 0xd941,
- 0xd950, 0xb75d, 0xb470, 0xb74e, 0xd94d, 0xb474, 0xd945, 0xd8fe,
- 0xb46a, 0xd942, 0xd94b, 0xb74d, 0xb752, 0xb467, 0xd94c, 0xb750,
- 0xb468, 0xb75c, 0xe1c3, 0xdd70, 0xdd68, 0xe1c2, 0xdd6c, 0xdd6e,
- 0xdd6b, 0xb75b, 0xdd6a, 0xb75f, 0xe1d2, 0xb75a, 0xba40, 0xdd71,
- 0xe1c4, 0xb758, 0xdd69, 0xdd6d, 0xb9fe, 0xb74f, 0xdd66, 0xdd67,
- 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f, 0xe1c8, 0xe1c9, 0xe1ce,
- 0xbc7d, 0xe1d5, 0xba47, 0xba46, 0xe1d0, 0xbc7c, 0xe1c5, 0xba45,
- 0xe1d4, 0xba43, 0xba44, 0xe1d1, 0xe5aa, 0xbc7a, 0xb46e, 0xe1d3,
- 0xbca3, 0xe1cb, 0xbc7b, 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7, 0xe1cd,
- 0xba48, 0xbc79, 0xba42, 0xe57a, 0xe1cf, 0xbca1, 0xbca4, 0xe1cc,
- 0xbc7e, 0xe579, 0xe57e, 0xbece, 0xe578, 0xe9a3, 0xe5a9, 0xbca8,
- 0xbca6, 0xbecc, 0xe5a6, 0xe5a2, 0xbcac, 0xe978, 0xbcaa, 0xe5a1,
- 0xe976, 0xe5a5, 0xe5a8, 0xe57d, 0xbcab, 0xbca5, 0xe977, 0xbecd,
- 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, 0xe57c, 0xe57b,
- 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0xe9a2, 0xe97e, 0xece1,
- 0xbed1, 0xe9a1, 0xe97c, 0xc0b4, 0xecdf, 0xe979, 0xe97b, 0xc0b5,
- 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d, 0xbecf, 0xefcf, 0xefc7,
- 0xece7, 0xefc8, 0xece3, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2,
- 0xece6, 0xefd0, 0xefcc, 0xefce, 0xefc9, 0xefca, 0xefcd, 0xefcb,
- 0xc367, 0xc36a, 0xc369, 0xc368, 0xc461, 0xf44a, 0xc462, 0xf241,
- 0xc4df, 0xf5cc, 0xc4e0, 0xc574, 0xc5ca, 0xf7d9, 0xf7da, 0xf7db,
- 0xf9ba, 0xa4e0, 0xc97c, 0xa5b3, 0xa6a6, 0xa6a7, 0xa6a5, 0xa6a8,
- 0xa7da, 0xa7d9, 0xccb1, 0xa9cf, 0xa9ce, 0xd1af, 0xb1ad, 0xb1ae,
- 0xb475, 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0xe1d7,
- 0xe1d6, 0xba49, 0xe1d8, 0xe5ac, 0xbcae, 0xbed4, 0xc0b8, 0xc257,
- 0xc0b9, 0xa4e1, 0xcae6, 0xccb2, 0xa9d1, 0xa9d0, 0xa9d2, 0xabf3,
- 0xced2, 0xced3, 0xd1b0, 0xaeb0, 0xb1af, 0xb476, 0xd951, 0xa4e2,
- 0xa47e, 0xa4e3, 0xc97d, 0xa5b7, 0xa5b6, 0xa5b4, 0xa5b5, 0xa6ab,
- 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3, 0xc9e4, 0xc9ea, 0xc9e6, 0xc9e8,
- 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7, 0xa7e1, 0xa7ea, 0xa7e8, 0xcaf0,
- 0xcaed, 0xcaf5, 0xa7e6, 0xcaf6, 0xa7df, 0xcaf3, 0xa7e5, 0xcaef,
- 0xcaee, 0xa7e3, 0xcaf4, 0xa7e4, 0xa9d3, 0xa7de, 0xcaf1, 0xcae7,
- 0xa7db, 0xa7ee, 0xcaec, 0xcaf2, 0xa7e0, 0xa7e2, 0xcae8, 0xcae9,
- 0xcaea, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc,
- 0xa7e9, 0xa9e1, 0xccbe, 0xccb7, 0xa9dc, 0xa9ef, 0xccb3, 0xccba,
- 0xccbc, 0xccbf, 0xa9ea, 0xccbb, 0xccb4, 0xa9e8, 0xccb8, 0xccc0,
- 0xa9d9, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6, 0xa9d7, 0xa9d8, 0xa9d6,
- 0xa9ee, 0xa9e6, 0xa9e0, 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7,
- 0xa9f0, 0xced4, 0xa9e4, 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xa9ec,
- 0xa9ed, 0xa9eb, 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0xceda, 0xac41,
- 0xabf8, 0xabfa, 0xac40, 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43,
- 0xced7, 0xcedf, 0xabfe, 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7,
- 0xabfb, 0xac42, 0xaeb3, 0xcee0, 0xabf9, 0xac45, 0xced9, 0xabfc,
- 0xaeb2, 0xabf6, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, 0xd1b2,
- 0xac44, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0xaec1, 0xd1be, 0xaebf,
- 0xaec0, 0xd1b4, 0xd1c4, 0xaeb6, 0xd566, 0xd1c6, 0xd1c0, 0xd1b7,
- 0xd1c9, 0xd1ba, 0xaebc, 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0xd1cb,
- 0xd1bf, 0xaeb8, 0xd1b8, 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, 0xd1cc,
- 0xaebb, 0xd1bc, 0xd1bb, 0xaec3, 0xaec2, 0xaeb4, 0xaeba, 0xaebd,
- 0xd1c8, 0xd1c2, 0xaeb7, 0xd1b3, 0xd1ca, 0xd1c1, 0xd1c3, 0xd1c7,
- 0xd567, 0xb1b7, 0xb1cb, 0xb1ca, 0xb1bf, 0xd579, 0xd575, 0xd572,
- 0xd5a6, 0xb1ba, 0xb1b2, 0xd577, 0xb4a8, 0xb1b6, 0xd5a1, 0xb1cc,
- 0xb1c9, 0xd57b, 0xd56a, 0xb1c8, 0xd5a3, 0xd569, 0xb1bd, 0xb1c1,
- 0xd5a2, 0xd573, 0xb1c2, 0xb1bc, 0xd568, 0xb478, 0xd5a5, 0xd571,
- 0xb1c7, 0xd574, 0xd5a4, 0xb1c6, 0xd952, 0xb1b3, 0xd56f, 0xb1b8,
- 0xb1c3, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e, 0xb1b0, 0xb1c4,
- 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0xb1b1, 0xb1c0, 0xb1bb, 0xb1b9,
- 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, 0xd954, 0xd953, 0xd56b,
- 0xd964, 0xb47a, 0xd96a, 0xd959, 0xd967, 0xdd77, 0xb47d, 0xd96b,
- 0xd96e, 0xb47c, 0xd95c, 0xd96d, 0xd96c, 0xb47e, 0xd955, 0xb479,
- 0xb4a3, 0xb4a1, 0xd969, 0xd95f, 0xb4a5, 0xd970, 0xd968, 0xd971,
- 0xb4ad, 0xb4ab, 0xd966, 0xd965, 0xd963, 0xd95d, 0xb4a4, 0xb4a2,
- 0xd1b9, 0xd956, 0xddb7, 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0xb4a6,
- 0xb4a7, 0xd958, 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961,
- 0xd95e, 0xb4ae, 0xb770, 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c,
- 0xddbb, 0xb769, 0xdd7a, 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e,
- 0xb76f, 0xdda5, 0xddb2, 0xddb8, 0xb76a, 0xb764, 0xdda3, 0xdd7d,
- 0xddba, 0xdda8, 0xdda9, 0xdd7e, 0xddb4, 0xddab, 0xddb5, 0xddad,
- 0xb765, 0xe1d9, 0xb768, 0xb766, 0xddb9, 0xddb0, 0xddac, 0xdda1,
- 0xba53, 0xddaf, 0xb76d, 0xdda7, 0xdda6, 0xb767, 0xb763, 0xe1ee,
- 0xddb3, 0xddae, 0xdda2, 0xe1e9, 0xe1da, 0xe1e5, 0xe1ec, 0xba51,
- 0xb4ac, 0xe1ea, 0xba4c, 0xba4b, 0xe1f1, 0xe1db, 0xe1e8, 0xe1dc,
- 0xe1e7, 0xba4f, 0xe1eb, 0xd962, 0xe1f2, 0xe1e3, 0xba52, 0xe5ba,
- 0xbcaf, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0, 0xe5ae, 0xe1df,
- 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3, 0xba4e, 0xbcb1, 0xba50,
- 0xba55, 0xe1e1, 0xe1ed, 0xe1e6, 0xe5b1, 0xba4a, 0xbcb4, 0xe9aa,
- 0xe5b6, 0xe5b5, 0xe5b7, 0xe5b4, 0xbcb5, 0xbcbb, 0xbcb8, 0xbcb9,
- 0xe5af, 0xe5b2, 0xe5bc, 0xbcc1, 0xbcbf, 0xe5b3, 0xd95a, 0xbcb2,
- 0xe5b9, 0xe5b0, 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0xbcba,
- 0xbcbe, 0xbcc0, 0xbcbd, 0xbcbc, 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3,
- 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, 0xbed6, 0xbedd, 0xe9ab,
- 0xbedb, 0xbed5, 0xbedc, 0xe9a8, 0xc0bb, 0xbed7, 0xbede, 0xc0ba,
- 0xe9a7, 0xe9a6, 0xbee0, 0xbee1, 0xe9a5, 0xe9a4, 0xc0bc, 0xe9ae,
- 0xbeda, 0xe9ac, 0xc0bd, 0xc0c2, 0xecea, 0xecec, 0xc0bf, 0xeced,
- 0xece9, 0xeceb, 0xc0c0, 0xc0c3, 0xece8, 0xc0be, 0xc0c1, 0xc259,
- 0xe9ad, 0xc258, 0xc25e, 0xefd4, 0xc25c, 0xc25d, 0xefd7, 0xefd3,
- 0xc25a, 0xefd1, 0xc36b, 0xefd5, 0xefd6, 0xefd2, 0xc25b, 0xf242,
- 0xf245, 0xf246, 0xf244, 0xf247, 0xc36c, 0xf243, 0xf44e, 0xc464,
- 0xf44d, 0xf44c, 0xf44b, 0xc463, 0xc465, 0xf5cd, 0xc4e2, 0xc4e1,
- 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb, 0xc575, 0xf7dd, 0xf6e2, 0xf7dc,
- 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9, 0xf8ef, 0xa4e4, 0xd972, 0xe9af,
- 0xa6ac, 0xcaf7, 0xa7f1, 0xa7ef, 0xa7f0, 0xccc1, 0xa9f1, 0xac46,
- 0xcee7, 0xcee8, 0xac47, 0xd1ce, 0xaec4, 0xaec5, 0xd1cd, 0xb1d3,
- 0xb1cf, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, 0xb1d4, 0xb1d0,
- 0xd976, 0xb1cd, 0xb4af, 0xb4b1, 0xb4b2, 0xd975, 0xd978, 0xb4b0,
- 0xd973, 0xd977, 0xd974, 0xb771, 0xddbc, 0xba56, 0xe1f4, 0xbee3,
- 0xbcc4, 0xe5bd, 0xbcc5, 0xbcc6, 0xe5bf, 0xe5be, 0xe5c0, 0xe9b1,
- 0xe9b0, 0xecef, 0xecee, 0xc0c4, 0xc0c5, 0xf248, 0xa4e5, 0xd979,
- 0xb4b4, 0xb4b3, 0xddbd, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, 0xaec6,
- 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, 0xe1f5, 0xba57, 0xe9b2,
- 0xa4e7, 0xa5b8, 0xa9f2, 0xccc2, 0xcee9, 0xac48, 0xb1d9, 0xd97c,
- 0xb4b5, 0xb773, 0xe5c1, 0xe5c2, 0xecf0, 0xc25f, 0xf8f0, 0xa4e8,
- 0xccc3, 0xa9f3, 0xac49, 0xceea, 0xaec7, 0xd1d2, 0xd1d0, 0xd1d1,
- 0xaec8, 0xd1cf, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd, 0xb1da, 0xd97d,
- 0xd97e, 0xddbe, 0xba59, 0xba58, 0xecf1, 0xefd9, 0xf24a, 0xf249,
- 0xf44f, 0xc95e, 0xac4a, 0xa4e9, 0xa5b9, 0xa6ae, 0xa6ad, 0xa6af,
- 0xa6b0, 0xc9ee, 0xc9ed, 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9,
- 0xcafc, 0xa9f4, 0xccc9, 0xccc5, 0xccce, 0xa9fb, 0xa9f9, 0xccca,
- 0xccc6, 0xcccd, 0xa9f8, 0xaa40, 0xccc8, 0xccc4, 0xa9fe, 0xcccb,
- 0xa9f7, 0xcccc, 0xa9fa, 0xa9fc, 0xccd0, 0xcccf, 0xccc7, 0xa9f6,
- 0xa9f5, 0xa9fd, 0xceef, 0xcef5, 0xac50, 0xac4d, 0xceec, 0xcef1,
- 0xac53, 0xac4b, 0xcef0, 0xac4e, 0xac51, 0xcef3, 0xac4c, 0xcef8,
- 0xac4f, 0xac52, 0xceed, 0xcef2, 0xcef6, 0xceee, 0xceeb, 0xcef7,
- 0xcef4, 0xaed0, 0xaec9, 0xaecc, 0xaecf, 0xd1d5, 0xaeca, 0xd1d3,
- 0xaece, 0xaecb, 0xd1d6, 0xaecd, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad,
- 0xb1de, 0xb1e3, 0xd1d4, 0xd5aa, 0xd5ae, 0xb1e0, 0xd5a9, 0xb1e2,
- 0xb1e1, 0xd9a7, 0xd9a2, 0xb4b6, 0xb4ba, 0xb4b7, 0xd9a5, 0xd9a8,
- 0xb4b8, 0xb4b9, 0xb4be, 0xddc7, 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1,
- 0xb4bd, 0xd9a4, 0xb779, 0xddbf, 0xb776, 0xb777, 0xb775, 0xddc4,
- 0xddc3, 0xddc0, 0xb77b, 0xddc2, 0xb4bb, 0xddc6, 0xddc1, 0xb778,
- 0xb774, 0xb77a, 0xddc5, 0xba5c, 0xe1f8, 0xe1f7, 0xe1f6, 0xba5a,
- 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0xbcc7, 0xe5c9, 0xe5c4, 0xbcca,
- 0xe5c6, 0xbcc9, 0xe5c3, 0xe5c7, 0xbee9, 0xbee6, 0xe9bb, 0xe9ba,
- 0xe9b9, 0xe9b4, 0xe9b5, 0xbee7, 0xbee4, 0xbee8, 0xe9b3, 0xbee5,
- 0xe9b6, 0xe9b7, 0xe9bc, 0xe9b8, 0xecf2, 0xc0c7, 0xefdc, 0xc0c6,
- 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0xc36d, 0xf451, 0xf452,
- 0xc466, 0xf450, 0xc4e4, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0xa4ea,
- 0xa6b1, 0xa6b2, 0xa7f3, 0xccd1, 0xac54, 0xaed1, 0xb1e4, 0xb0d2,
- 0xb4bf, 0xb4c0, 0xb3cc, 0xd9a9, 0xb77c, 0xe1fa, 0xe1f9, 0xa4eb,
- 0xa6b3, 0xccd2, 0xaa42, 0xaa41, 0xcef9, 0xcefa, 0xd1d7, 0xd1d8,
- 0xaed2, 0xaed3, 0xaed4, 0xd5af, 0xb1e6, 0xb4c2, 0xb4c1, 0xddc8,
- 0xdf7a, 0xe1fb, 0xe9bd, 0xc261, 0xc467, 0xa4ec, 0xa5bc, 0xa5bd,
- 0xa5bb, 0xa5be, 0xa5ba, 0xa6b6, 0xc9f6, 0xa6b5, 0xa6b7, 0xc9f1,
- 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4, 0xcafd,
- 0xa7fd, 0xcafe, 0xcb43, 0xa7fc, 0xcb47, 0xcb42, 0xcb45, 0xa7f5,
- 0xa7f6, 0xa7f7, 0xa7f8, 0xa840, 0xcb41, 0xa7fa, 0xa841, 0xcb40,
- 0xcb46, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, 0xa7fe, 0xaa57, 0xccd4,
- 0xaa43, 0xaa4d, 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53,
- 0xccd7, 0xaa49, 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4,
- 0xaa51, 0xaa4f, 0xcce5, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a,
- 0xaa50, 0xaa44, 0xccde, 0xccdd, 0xccd5, 0xaa52, 0xcce1, 0xccd6,
- 0xaa55, 0xcce8, 0xaa45, 0xaa4c, 0xccd9, 0xcce2, 0xaa54, 0xaa47,
- 0xaa4b, 0xcce0, 0xcf5b, 0xac5c, 0xac69, 0xcf56, 0xcf4c, 0xac62,
- 0xcf4a, 0xac5b, 0xcf45, 0xac65, 0xcf52, 0xcefe, 0xcf41, 0xcf44,
- 0xcefb, 0xcf51, 0xcf61, 0xac60, 0xcf46, 0xcf58, 0xcefd, 0xcf5f,
- 0xcf60, 0xcf63, 0xcf5a, 0xcf4b, 0xcf53, 0xac66, 0xac59, 0xac61,
- 0xac6d, 0xac56, 0xac58, 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40,
- 0xac6c, 0xac67, 0xcf49, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c,
- 0xcf54, 0xac5e, 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f,
- 0xcf55, 0xac57, 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d,
- 0xcf42, 0xcf5e, 0xcf57, 0xac55, 0xd1ec, 0xaeea, 0xd1ed, 0xd1e1,
- 0xaedf, 0xaeeb, 0xd1da, 0xd1e3, 0xd1eb, 0xd1d9, 0xd1f4, 0xaed5,
- 0xd1f3, 0xd1ee, 0xd1ef, 0xaedd, 0xaee8, 0xd1e5, 0xd1e6, 0xd1f0,
- 0xd1e7, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4, 0xaed6, 0xaeda,
- 0xd1f2, 0xd1de, 0xaee6, 0xaee2, 0xaee5, 0xaeec, 0xaedb, 0xaee7,
- 0xd1e9, 0xaee9, 0xaed8, 0xaed7, 0xd1db, 0xd1df, 0xaee0, 0xd1f1,
- 0xd1e8, 0xd1e0, 0xaee4, 0xaee1, 0xaed9, 0xaedc, 0xd5c4, 0xd5b4,
- 0xd5b5, 0xd5b9, 0xd5c8, 0xd5c5, 0xd5be, 0xd5bd, 0xb1ed, 0xd5c1,
- 0xd5d0, 0xd5b0, 0xd5d1, 0xd5c3, 0xd5d5, 0xd5c9, 0xb1ec, 0xd5c7,
- 0xb1e7, 0xb1fc, 0xb1f2, 0xb1f6, 0xb1f5, 0xd5b1, 0xd5ce, 0xd5d4,
- 0xd5cc, 0xd5d3, 0xd5c0, 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7,
- 0xd5cb, 0xb1f0, 0xd5ca, 0xd5b3, 0xb1f8, 0xb1fa, 0xd5cd, 0xb1fb,
- 0xb1e9, 0xd5ba, 0xd5cf, 0xb1ef, 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7,
- 0xd5bb, 0xb1f4, 0xd5b6, 0xb1e8, 0xb1f1, 0xb1ee, 0xd5bf, 0xaede,
- 0xd9c0, 0xb1eb, 0xb1f3, 0xd9c3, 0xd9d9, 0xd9ce, 0xb4d6, 0xb4d1,
- 0xd9bd, 0xb4d2, 0xd9cd, 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5,
- 0xb4c4, 0xd9b3, 0xb4c7, 0xb4c6, 0xb4d7, 0xd9ad, 0xd9cf, 0xd9d0,
- 0xb4c9, 0xb4c5, 0xd9bb, 0xb4d0, 0xd9b6, 0xd9d1, 0xb4cc, 0xd9c9,
- 0xd9d6, 0xd9b0, 0xd9b5, 0xd9af, 0xb4cb, 0xd9c2, 0xddde, 0xd9b1,
- 0xb4cf, 0xd9ba, 0xd9d2, 0xb4ca, 0xd9b7, 0xd9b4, 0xd9c5, 0xb4cd,
- 0xb4c3, 0xb4d9, 0xd9c8, 0xd9c7, 0xd9ac, 0xb4c8, 0xd9d4, 0xd9bc,
- 0xd9be, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5, 0xd9b2, 0xd9b9,
- 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0xd9cc, 0xd9d8, 0xd9ae,
- 0xddf2, 0xb7a6, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xddec, 0xddcb,
- 0xddd2, 0xddea, 0xddf4, 0xdddc, 0xddcf, 0xdde2, 0xdde7, 0xddd3,
- 0xdde4, 0xddd0, 0xddd7, 0xddd8, 0xb7a8, 0xddeb, 0xdde9, 0xddcc,
- 0xddee, 0xddef, 0xddf1, 0xb7ac, 0xb7a4, 0xd5b8, 0xddd4, 0xdde6,
- 0xddd5, 0xb7a1, 0xb7b1, 0xdded, 0xb7af, 0xb7ab, 0xddca, 0xb7a3,
- 0xddcd, 0xb7b0, 0xdddd, 0xddc9, 0xb7a9, 0xdde1, 0xddd1, 0xb7aa,
- 0xddda, 0xb77e, 0xb4d8, 0xdde3, 0xd9bf, 0xddce, 0xdde8, 0xb7a5,
- 0xdde5, 0xb7a2, 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0xb7a7, 0xdec6,
- 0xb7ae, 0xe24a, 0xe248, 0xe25e, 0xe246, 0xe258, 0xb77d, 0xba5f,
- 0xe242, 0xe25d, 0xe247, 0xe255, 0xba64, 0xba5d, 0xe25b, 0xe240,
- 0xe25a, 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, 0xba5e, 0xe24b,
- 0xe259, 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, 0xe243, 0xe1fc,
- 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, 0xe253, 0xba66, 0xe245,
- 0xe250, 0xe24c, 0xe24e, 0xba60, 0xe25f, 0xba6e, 0xe24f, 0xe262,
- 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256, 0xba69,
- 0xba62, 0xe252, 0xe25c, 0xe5d5, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de,
- 0xbccd, 0xe5e5, 0xe5d4, 0xbcd8, 0xe5db, 0xe5d0, 0xe5da, 0xbcd5,
- 0xe5ee, 0xe5eb, 0xe5dd, 0xe5ce, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8,
- 0xe5d3, 0xe5ca, 0xbcce, 0xbcd6, 0xe5e7, 0xbcd7, 0xe5cb, 0xe5ed,
- 0xe5e0, 0xe5e6, 0xbcd4, 0xe5e3, 0xe5ea, 0xbcd9, 0xbcd3, 0xe5dc,
- 0xe5cf, 0xe5ef, 0xe5cc, 0xe5e8, 0xbcd0, 0xe5d6, 0xe5d7, 0xbccf,
- 0xbccc, 0xe5d2, 0xbcd2, 0xbccb, 0xe5e9, 0xe5ec, 0xe5d9, 0xe9ca,
- 0xe9c2, 0xe9be, 0xbef6, 0xbeeb, 0xbef0, 0xbeec, 0xe9cc, 0xe9d7,
- 0xbeea, 0xe9c4, 0xe9cd, 0xe5df, 0xe9ce, 0xbef1, 0xe9dd, 0xbef5,
- 0xbef8, 0xe9c0, 0xbef4, 0xe9db, 0xe9dc, 0xe9d2, 0xe9d1, 0xe9c9,
- 0xe9d3, 0xe9da, 0xe9d9, 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0xe9c5,
- 0xe9d8, 0xbef7, 0xe9d6, 0xbef3, 0xbef2, 0xe9d0, 0xe9bf, 0xe9c1,
- 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0xe9c6, 0xe9d4, 0xe9c7, 0xc0cf,
- 0xed45, 0xc0c8, 0xecf5, 0xed41, 0xc0ca, 0xed48, 0xecfc, 0xecf7,
- 0xed49, 0xecf3, 0xecfe, 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9,
- 0xed40, 0xecf4, 0xc0d0, 0xed47, 0xecf9, 0xc0cc, 0xecfb, 0xecf8,
- 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46, 0xed42,
- 0xc263, 0xefe7, 0xc268, 0xc269, 0xc262, 0xefe6, 0xefe3, 0xefe4,
- 0xc266, 0xefde, 0xefe2, 0xc265, 0xefdf, 0xc267, 0xc264, 0xefdd,
- 0xefe1, 0xefe5, 0xf251, 0xf24e, 0xf257, 0xf256, 0xf254, 0xf24f,
- 0xc372, 0xf250, 0xc371, 0xc0cd, 0xf253, 0xc370, 0xf258, 0xf252,
- 0xf24d, 0xefe0, 0xc36f, 0xf24c, 0xf456, 0xf455, 0xf255, 0xc468,
- 0xf459, 0xf45a, 0xf454, 0xf458, 0xf453, 0xf5d1, 0xf457, 0xc4e7,
- 0xc4e5, 0xf5cf, 0xf5d2, 0xf5ce, 0xf5d0, 0xc4e6, 0xf6e5, 0xf6e6,
- 0xc576, 0xf6e4, 0xf7e2, 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0xc656,
- 0xf8f3, 0xf8f1, 0xf8f2, 0xf8f4, 0xf9bb, 0xa4ed, 0xa6b8, 0xaa59,
- 0xcce9, 0xcf64, 0xd1f5, 0xd1f7, 0xd1f6, 0xd1f8, 0xb1fd, 0xd5d7,
- 0xd1f9, 0xd5d6, 0xd5d8, 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd,
- 0xb4dc, 0xb4da, 0xd9dc, 0xddfa, 0xddf8, 0xddf7, 0xddf6, 0xddf5,
- 0xb7b2, 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb,
- 0xbcda, 0xe5f0, 0xe9df, 0xe9de, 0xe9e0, 0xbef9, 0xed4b, 0xc0d3,
- 0xefe8, 0xc26a, 0xf259, 0xc577, 0xa4ee, 0xa5bf, 0xa6b9, 0xa842,
- 0xaa5a, 0xaa5b, 0xac6e, 0xd1fa, 0xb7b3, 0xe6d1, 0xbefa, 0xc26b,
- 0xa4ef, 0xa6ba, 0xcceb, 0xaa5c, 0xccea, 0xcf65, 0xac6f, 0xcf66,
- 0xac70, 0xd1fc, 0xaeee, 0xaeed, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db,
- 0xd5da, 0xd9de, 0xd9e1, 0xb4de, 0xd9df, 0xb4dd, 0xd9e0, 0xddfb,
- 0xe266, 0xe267, 0xe268, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4,
- 0xe9e1, 0xe9e2, 0xe9e3, 0xed4c, 0xc0d4, 0xc26c, 0xf25a, 0xc4e8,
- 0xc95f, 0xac71, 0xcf67, 0xaeef, 0xb1fe, 0xb4df, 0xd9e2, 0xb7b5,
- 0xb7b4, 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, 0xe9e4, 0xefe9,
- 0xf7e3, 0xa4f0, 0xc960, 0xa5c0, 0xa843, 0xcb48, 0xac72, 0xb7b6,
- 0xa4f1, 0xcf68, 0xac73, 0xcf69, 0xc0d5, 0xa4f2, 0xccec, 0xcf6a,
- 0xd242, 0xd241, 0xd1fe, 0xd1fd, 0xd243, 0xd240, 0xb240, 0xb241,
- 0xb4e0, 0xd9e3, 0xd9e4, 0xd9e5, 0xde41, 0xde42, 0xde40, 0xddfd,
- 0xddfe, 0xb7b7, 0xe26b, 0xe5f7, 0xe5f6, 0xe5f5, 0xe5f8, 0xe9e7,
- 0xe9e6, 0xbefb, 0xe9e8, 0xc0d6, 0xed4d, 0xefea, 0xf25b, 0xf6e7,
- 0xa4f3, 0xa5c2, 0xa5c1, 0xaa5d, 0xc961, 0xc97e, 0xa6bb, 0xc9f7,
- 0xcb49, 0xcb4a, 0xaa5e, 0xcced, 0xac74, 0xcf6b, 0xcf6c, 0xaef0,
- 0xaef4, 0xd244, 0xaef3, 0xaef1, 0xaef2, 0xd5df, 0xb242, 0xb4e3,
- 0xb4e1, 0xb4e2, 0xd9e6, 0xba72, 0xa4f4, 0xc9a1, 0xa5c3, 0xc9a4,
- 0xa5c6, 0xc9a3, 0xa5c5, 0xa5c4, 0xa844, 0xc9a2, 0xc9f8, 0xc9fc,
- 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb, 0xa6c1, 0xc9f9, 0xc9fd,
- 0xa6c2, 0xa6bd, 0xa6be, 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf,
- 0xa6c0, 0xa6c3, 0xcb5b, 0xcb59, 0xcb4c, 0xa851, 0xcb53, 0xa84c,
- 0xcb4d, 0xcb55, 0xcb52, 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858,
- 0xa85a, 0xcb4b, 0xa84d, 0xcb5c, 0xa854, 0xa857, 0xcd45, 0xa847,
- 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, 0xa848, 0xa849,
- 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, 0xa84e, 0xa853,
- 0xccee, 0xa85c, 0xcb57, 0xa852, 0xa85d, 0xa846, 0xcb54, 0xa84b,
- 0xcb58, 0xcd44, 0xaa6a, 0xaa7a, 0xccf5, 0xaa71, 0xcd4b, 0xaa62,
- 0xaa65, 0xcd42, 0xccf3, 0xccf7, 0xaa6d, 0xaa6f, 0xccfa, 0xaa76,
- 0xaa68, 0xaa66, 0xaa67, 0xaa75, 0xcd47, 0xaa70, 0xccf9, 0xccfb,
- 0xaa6e, 0xaa73, 0xccfc, 0xcd4a, 0xac75, 0xaa79, 0xaa63, 0xcd49,
- 0xcd4d, 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d,
- 0xaa72, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0xaa7e,
- 0xaa77, 0xaa69, 0xaa5f, 0xaa64, 0xccf6, 0xaa60, 0xcd4e, 0xccf0,
- 0xccef, 0xccfd, 0xccf1, 0xaa7b, 0xaef5, 0xaa74, 0xccfe, 0xaa61,
- 0xaca6, 0xcd4c, 0xcf7c, 0xcfa1, 0xcfa4, 0xcf77, 0xcfa7, 0xcfaa,
- 0xcfac, 0xcf74, 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, 0xcfad,
- 0xcf7b, 0xcf73, 0xd264, 0xac7e, 0xcfa2, 0xcf78, 0xcf7a, 0xaca5,
- 0xcf7d, 0xac7d, 0xcf70, 0xcfa8, 0xcfab, 0xac7a, 0xaca8, 0xcf6d,
- 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, 0xcd48,
- 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, 0xaca9,
- 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, 0xcfa6,
- 0xac79, 0xcf7e, 0xd24c, 0xaefd, 0xaf43, 0xd255, 0xd25b, 0xd257,
- 0xd24a, 0xd24d, 0xd246, 0xd247, 0xaf4a, 0xaefa, 0xd256, 0xd25f,
- 0xaf45, 0xaef6, 0xaf40, 0xd24e, 0xaf42, 0xd24f, 0xd259, 0xaf44,
- 0xd268, 0xd248, 0xaefc, 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a,
- 0xd267, 0xd261, 0xd253, 0xd262, 0xd25c, 0xd265, 0xd263, 0xaf49,
- 0xd254, 0xaef9, 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251,
- 0xb243, 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xd258,
- 0xd25d, 0xb265, 0xd5e1, 0xd5e5, 0xb252, 0xb250, 0xb247, 0xd5e3,
- 0xd5e2, 0xb25b, 0xd5e8, 0xb255, 0xd5fa, 0xd647, 0xb244, 0xd5f7,
- 0xd5f0, 0xb267, 0xd5e0, 0xd5fc, 0xb264, 0xb258, 0xb263, 0xb24e,
- 0xd5ec, 0xd5fe, 0xd5f6, 0xb24f, 0xb249, 0xd645, 0xd5fd, 0xd640,
- 0xb251, 0xb259, 0xd642, 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, 0xb25e,
- 0xb246, 0xb25c, 0xd5f4, 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, 0xd5ed,
- 0xb248, 0xd5e7, 0xd646, 0xb24a, 0xd5f1, 0xb268, 0xb262, 0xd5e6,
- 0xb25f, 0xb25d, 0xb266, 0xd5f8, 0xb261, 0xd252, 0xd5f9, 0xb260,
- 0xd641, 0xb245, 0xd5f5, 0xb257, 0xd5e9, 0xb256, 0xb254, 0xb24c,
- 0xb24b, 0xd9e7, 0xd643, 0xd5eb, 0xd9fc, 0xb24d, 0xb541, 0xb25a,
- 0xb4ee, 0xd9f6, 0xb4fc, 0xd9ea, 0xb4eb, 0xb4e7, 0xda49, 0xb4ed,
- 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d, 0xda44, 0xd9f1, 0xb4fa, 0xb4f4,
- 0xd9fd, 0xb4e4, 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55,
- 0xda56, 0xb4e5, 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd,
- 0xd9f2, 0xd9f9, 0xd9f3, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9,
- 0xd9eb, 0xb4ea, 0xd9f8, 0xb4f8, 0xb542, 0xd9fa, 0xda53, 0xda4b,
- 0xb4e6, 0xda51, 0xb4f2, 0xb4f0, 0xda57, 0xb4ef, 0xda41, 0xd9f4,
- 0xd9fe, 0xb547, 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f, 0xda4c,
- 0xda54, 0xb4e9, 0xda40, 0xb546, 0xda47, 0xb4f3, 0xb4f6, 0xda46,
- 0xb545, 0xd9f5, 0xd5e4, 0xda50, 0xda4e, 0xda52, 0xd9ec, 0xb540,
- 0xde61, 0xde60, 0xde46, 0xb7bd, 0xde5f, 0xde49, 0xde4a, 0xb7c7,
- 0xde68, 0xb7c2, 0xde5e, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48,
- 0xde4b, 0xde63, 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc,
- 0xb7cb, 0xb7c5, 0xde69, 0xb7b9, 0xde55, 0xde4c, 0xde59, 0xde65,
- 0xb7cd, 0xb7bb, 0xde54, 0xde4d, 0xb7c4, 0xb7c3, 0xde50, 0xde5a,
- 0xde64, 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0, 0xde4e,
- 0xb7bf, 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56, 0xe26c,
- 0xde58, 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0, 0xde44,
- 0xde5d, 0xde5c, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, 0xe26e,
- 0xbaaf, 0xba77, 0xe26d, 0xe2b0, 0xbab1, 0xe271, 0xe2a3, 0xe273,
- 0xe2b3, 0xe2af, 0xba75, 0xbaa1, 0xe653, 0xbaae, 0xba7d, 0xe26f,
- 0xe2ae, 0xbaa3, 0xe2ab, 0xe2b8, 0xe275, 0xe27e, 0xe2b6, 0xe2ac,
- 0xba7c, 0xe27c, 0xba76, 0xba74, 0xbaa8, 0xe27a, 0xe277, 0xe278,
- 0xe2b2, 0xe2b7, 0xe2b5, 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0xe270,
- 0xe5fa, 0xe279, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274,
- 0xbaaa, 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0xe2a9, 0xe2a1, 0xe272,
- 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xba79, 0xbcdf, 0xe2a6,
- 0xe5f9, 0xe2ad, 0xe276, 0xe644, 0xe64e, 0xbce2, 0xe64d, 0xe659,
- 0xbce4, 0xe64b, 0xe64f, 0xbcef, 0xe646, 0xbce7, 0xe652, 0xe9f0,
- 0xbcf3, 0xbcf2, 0xe654, 0xe643, 0xe65e, 0xbced, 0xbce3, 0xe657,
- 0xe65b, 0xe660, 0xe655, 0xe649, 0xbce6, 0xbce9, 0xbcf1, 0xbcec,
- 0xe64c, 0xe2a2, 0xe648, 0xe65f, 0xbce8, 0xbceb, 0xe661, 0xbce0,
- 0xe656, 0xe5fb, 0xe65c, 0xc0df, 0xe64a, 0xbce1, 0xe645, 0xbce5,
- 0xe5fc, 0xbaab, 0xe641, 0xe65a, 0xe642, 0xe640, 0xbcea, 0xe658,
- 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, 0xe9f3, 0xbf49,
- 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48, 0xbf43, 0xe9f5,
- 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8, 0xea44, 0xea46,
- 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0xbf47, 0xe9fe, 0xbf46, 0xe9f9,
- 0xe9ed, 0xe9f2, 0xe9fd, 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1,
- 0xe5fd, 0xe9ec, 0xe9ef, 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43,
- 0xe9ee, 0xe9fc, 0xed51, 0xc0e3, 0xc0d7, 0xc0db, 0xed53, 0xed59,
- 0xed57, 0xc0d9, 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0xed56,
- 0xed55, 0xed5b, 0xc0e2, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de,
- 0xc0e5, 0xc0d8, 0xed58, 0xed50, 0xeff7, 0xc271, 0xeff4, 0xeff6,
- 0xc26f, 0xeff2, 0xeff3, 0xefee, 0xe9f6, 0xefef, 0xc270, 0xefeb,
- 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed, 0xeff1, 0xc273, 0xc272,
- 0xeff0, 0xc378, 0xf25f, 0xf265, 0xc379, 0xf25c, 0xc376, 0xc373,
- 0xf267, 0xc377, 0xc374, 0xf25e, 0xf261, 0xf262, 0xf263, 0xf266,
- 0xeff5, 0xf25d, 0xc375, 0xf264, 0xf268, 0xf260, 0xf45d, 0xc46a,
- 0xf460, 0xc46b, 0xf468, 0xf45f, 0xf45c, 0xf45e, 0xf462, 0xf465,
- 0xf464, 0xf467, 0xf45b, 0xc469, 0xf463, 0xf466, 0xf469, 0xf461,
- 0xf5d3, 0xf5d4, 0xf5d8, 0xf5d9, 0xf5d6, 0xf5d7, 0xf5d5, 0xc4e9,
- 0xc578, 0xf6eb, 0xf6e8, 0xf6e9, 0xf6ea, 0xc579, 0xf7e5, 0xf7e4,
- 0xf8af, 0xc5f4, 0xf8ad, 0xf8b0, 0xf8ae, 0xf8f5, 0xc657, 0xc665,
- 0xf9a3, 0xf96c, 0xf9a2, 0xf9d0, 0xf9d1, 0xa4f5, 0xa6c7, 0xca41,
- 0xcb5e, 0xa85f, 0xa862, 0xcb5f, 0xa860, 0xa861, 0xcd58, 0xcd5a,
- 0xcd55, 0xcd52, 0xcd54, 0xaaa4, 0xaaa2, 0xcd56, 0xaaa3, 0xcd53,
- 0xcd50, 0xaaa1, 0xcd57, 0xcd51, 0xaaa5, 0xcd59, 0xcfaf, 0xcfb3,
- 0xacb7, 0xcfb6, 0xacaf, 0xacb2, 0xacb4, 0xacb6, 0xacb3, 0xcfb2,
- 0xcfb1, 0xacb1, 0xcfb4, 0xcfb5, 0xcfae, 0xacb5, 0xacb0, 0xcfb0,
- 0xd277, 0xd278, 0xd279, 0xaf50, 0xaf4c, 0xd26e, 0xd276, 0xd27b,
- 0xaf51, 0xd26c, 0xd272, 0xd26b, 0xd275, 0xd271, 0xaf4d, 0xaf4f,
- 0xd27a, 0xd26a, 0xd26d, 0xd273, 0xd274, 0xd27c, 0xd270, 0xaf4e,
- 0xb26d, 0xd64e, 0xd650, 0xd64c, 0xd658, 0xd64a, 0xd657, 0xb269,
- 0xd648, 0xda5b, 0xd652, 0xb26c, 0xd653, 0xd656, 0xd65a, 0xd64f,
- 0xd654, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649, 0xd65b, 0xd651,
- 0xd655, 0xd64b, 0xb548, 0xb549, 0xda65, 0xb54f, 0xda59, 0xda62,
- 0xda58, 0xb54c, 0xda60, 0xda5e, 0xda5f, 0xb54a, 0xda63, 0xda5c,
- 0xda5a, 0xb54b, 0xda5d, 0xda61, 0xb54d, 0xda64, 0xde70, 0xde77,
- 0xde79, 0xdea1, 0xb7da, 0xde6b, 0xb7d2, 0xde7a, 0xb7d7, 0xdea2,
- 0xb7ce, 0xde7d, 0xde6d, 0xde7e, 0xde6c, 0xb7dc, 0xde78, 0xb7cf,
- 0xdea3, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, 0xde6f, 0xde76, 0xde72,
- 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, 0xb7db, 0xb7d0, 0xde75,
- 0xb7d5, 0xb54e, 0xde7b, 0xde73, 0xde74, 0xe2c1, 0xbab4, 0xe2bd,
- 0xe2c3, 0xe2bf, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, 0xe2bc, 0xbab5,
- 0xe2c0, 0xe2bb, 0xbab7, 0xbab2, 0xe2c4, 0xbab3, 0xe667, 0xe664,
- 0xe670, 0xe66a, 0xe66c, 0xbcf4, 0xe666, 0xe66e, 0xe66d, 0xe66b,
- 0xe671, 0xbcf7, 0xe668, 0xe66f, 0xbcf5, 0xe663, 0xe665, 0xbcf6,
- 0xe662, 0xe672, 0xe669, 0xea4a, 0xbf51, 0xea55, 0xea53, 0xbf4b,
- 0xea49, 0xea4c, 0xea4d, 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56,
- 0xea51, 0xbf4f, 0xbf4c, 0xea50, 0xea4e, 0xbf52, 0xea52, 0xbf4d,
- 0xbf4e, 0xea4f, 0xbf50, 0xea4b, 0xea54, 0xbf53, 0xea57, 0xea58,
- 0xbf54, 0xc0e7, 0xc0ee, 0xed5c, 0xed62, 0xed60, 0xc0ea, 0xc0e9,
- 0xc0e6, 0xed5e, 0xc0ec, 0xc0eb, 0xc0e8, 0xed61, 0xed5d, 0xed5f,
- 0xc0ed, 0xc277, 0xeffb, 0xc274, 0xc275, 0xeffd, 0xc276, 0xeffa,
- 0xeff9, 0xf26c, 0xeffc, 0xf26d, 0xc37a, 0xf26b, 0xf26a, 0xf269,
- 0xc37b, 0xc46c, 0xf46a, 0xf46b, 0xf5dc, 0xf5db, 0xc4ea, 0xf5da,
- 0xf6ec, 0xf6ed, 0xf7e6, 0xf8b1, 0xf8f6, 0xf9bc, 0xc679, 0xf9c6,
- 0xa4f6, 0xaaa6, 0xaaa7, 0xacb8, 0xc0ef, 0xa4f7, 0xaaa8, 0xaf52,
- 0xb7dd, 0xa4f8, 0xb26e, 0xbab8, 0xc962, 0xcfb7, 0xd27d, 0xe2c5,
- 0xc0f0, 0xa4f9, 0xaaa9, 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0xdea4,
- 0xb7de, 0xe2c6, 0xbcf8, 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0xa6c9,
- 0xca42, 0xa6c8, 0xa865, 0xa864, 0xa863, 0xcb60, 0xaaaa, 0xaaab,
- 0xcd5b, 0xcfba, 0xcfbd, 0xacba, 0xcfbb, 0xacb9, 0xcfbc, 0xacbb,
- 0xd2a2, 0xd2a1, 0xd27e, 0xaf53, 0xd65d, 0xd65e, 0xb26f, 0xd65c,
- 0xd65f, 0xb552, 0xb270, 0xb551, 0xda6b, 0xda6a, 0xda68, 0xda69,
- 0xda6c, 0xdea6, 0xdea5, 0xdea9, 0xdea8, 0xdea7, 0xbab9, 0xe2c9,
- 0xe2c8, 0xbaba, 0xe2c7, 0xe673, 0xe674, 0xbcf9, 0xea59, 0xea5a,
- 0xf272, 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, 0xf46c,
- 0xf6ee, 0xf8f7, 0xa4fc, 0xc9a5, 0xa5c7, 0xc9a6, 0xca43, 0xca44,
- 0xcb66, 0xcb62, 0xcb61, 0xaaac, 0xcb65, 0xa867, 0xcb63, 0xa866,
- 0xcb67, 0xcb64, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0xaaad, 0xaab0,
- 0xcd65, 0xcd61, 0xcd62, 0xcd5c, 0xaaaf, 0xcd5e, 0xaaae, 0xcd63,
- 0xcd60, 0xcfc2, 0xacbd, 0xacbe, 0xcfc5, 0xcfbf, 0xcfc4, 0xcfc0,
- 0xacbc, 0xcfc3, 0xcfc1, 0xd2a8, 0xd2a5, 0xd2a7, 0xaf58, 0xaf57,
- 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56, 0xd2a6, 0xd667, 0xd2a3,
- 0xd2aa, 0xd662, 0xd666, 0xd665, 0xda6e, 0xda79, 0xd668, 0xd663,
- 0xda6d, 0xb274, 0xb273, 0xd661, 0xd664, 0xb275, 0xb272, 0xb271,
- 0xd660, 0xd669, 0xda70, 0xda77, 0xb554, 0xda76, 0xda73, 0xb556,
- 0xda75, 0xda6f, 0xda71, 0xda74, 0xda72, 0xb555, 0xda78, 0xb553,
- 0xb7df, 0xdead, 0xdeac, 0xdeaa, 0xb7e2, 0xb7e1, 0xdeae, 0xdeab,
- 0xe2ca, 0xbabb, 0xb7e0, 0xdeb0, 0xdeaf, 0xe2cd, 0xe2cb, 0xbcfa,
- 0xbabc, 0xe2cc, 0xe676, 0xbcfb, 0xe675, 0xe67e, 0xe67d, 0xe67b,
- 0xe67a, 0xe677, 0xe678, 0xe679, 0xe67c, 0xe6a1, 0xea5f, 0xea5c,
- 0xea5d, 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0xed64, 0xed65,
- 0xc0f1, 0xc0f2, 0xed63, 0xc279, 0xeffe, 0xc278, 0xc37e, 0xc3a1,
- 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, 0xc57a, 0xf7e8, 0xf7e7,
- 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, 0xd66a, 0xa5c9, 0xc9a7,
- 0xa4fd, 0xca45, 0xcb6c, 0xcb6a, 0xcb6b, 0xcb68, 0xa868, 0xcb69,
- 0xcd6d, 0xaab3, 0xcd6b, 0xcd67, 0xcd6a, 0xcd66, 0xaab5, 0xcd69,
- 0xaab2, 0xaab1, 0xaab4, 0xcd6c, 0xcd68, 0xacc2, 0xacc5, 0xcfce,
- 0xcfcd, 0xcfcc, 0xacbf, 0xcfd5, 0xcfcb, 0xacc1, 0xd2af, 0xcfd2,
- 0xcfd0, 0xacc4, 0xcfc8, 0xcfd3, 0xcfca, 0xcfd4, 0xcfd1, 0xcfc9,
- 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xd2b4, 0xd2ab, 0xd2b6, 0xd2ae,
- 0xd2b9, 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f,
- 0xaf5d, 0xd2b1, 0xd2ad, 0xd2b0, 0xd2bb, 0xd2b2, 0xaf5e, 0xcfcf,
- 0xaf5a, 0xaf5c, 0xd678, 0xd66d, 0xd66b, 0xd66c, 0xd673, 0xd674,
- 0xd670, 0xb27b, 0xd675, 0xd672, 0xd66f, 0xb279, 0xd66e, 0xb277,
- 0xb27a, 0xd671, 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676, 0xb27c,
- 0xda7e, 0xdaa1, 0xb560, 0xdaa7, 0xdaa9, 0xdaa2, 0xb55a, 0xdaa6,
- 0xdaa5, 0xb55b, 0xb561, 0xb562, 0xdaa8, 0xb558, 0xda7d, 0xda7b,
- 0xdaa3, 0xda7a, 0xb55f, 0xda7c, 0xdaa4, 0xdaaa, 0xb559, 0xb55e,
- 0xb55c, 0xb55d, 0xb557, 0xb7e9, 0xdeb7, 0xb7e8, 0xdebb, 0xdeb1,
- 0xdebc, 0xdeb2, 0xdeb3, 0xdebd, 0xdeba, 0xdeb8, 0xdeb9, 0xdeb5,
- 0xdeb4, 0xdebe, 0xb7e5, 0xdeb6, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec,
- 0xb7e7, 0xb7e6, 0xe2ce, 0xbabe, 0xbabd, 0xe2d3, 0xbcfc, 0xbabf,
- 0xbac1, 0xe2d4, 0xb7e3, 0xbac0, 0xe2d0, 0xe2d2, 0xe2cf, 0xe2d1,
- 0xe6ab, 0xe6aa, 0xe6a7, 0xbd40, 0xea62, 0xbd41, 0xe6a6, 0xbcfe,
- 0xe6a8, 0xe6a5, 0xe6a2, 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0xed69,
- 0xea66, 0xea65, 0xea67, 0xed66, 0xbf5a, 0xea63, 0xbf58, 0xbf5c,
- 0xbf5b, 0xea64, 0xea68, 0xbf59, 0xed6d, 0xc0f5, 0xc27a, 0xc0f6,
- 0xc0f3, 0xed6a, 0xed68, 0xed6b, 0xed6e, 0xc0f4, 0xed6c, 0xed67,
- 0xf042, 0xf045, 0xf275, 0xf040, 0xf46f, 0xf046, 0xc3a2, 0xf044,
- 0xc27b, 0xf041, 0xf043, 0xf047, 0xf276, 0xf274, 0xc3a3, 0xf273,
- 0xc46e, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, 0xf6f0, 0xf6f2, 0xc5d0,
- 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, 0xb27d, 0xdebf, 0xbf5d,
- 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xcd6f, 0xa260, 0xcfd7, 0xcfd8,
- 0xd2be, 0xd2bf, 0xb27e, 0xb2a1, 0xdaab, 0xdec2, 0xdec1, 0xdec0,
- 0xe2d5, 0xe2d6, 0xe2d7, 0xbac2, 0xe6ad, 0xe6ac, 0xea69, 0xbf5e,
- 0xbf5f, 0xed72, 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048, 0xc27c,
- 0xf277, 0xf5de, 0xa5cc, 0xacc6, 0xb2a2, 0xdec3, 0xa5cd, 0xd2c0,
- 0xb2a3, 0xb563, 0xb564, 0xa5ce, 0xa5cf, 0xca46, 0xa86a, 0xa869,
- 0xacc7, 0xcfd9, 0xdaac, 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa86b,
- 0xa86c, 0xcb6e, 0xcb6d, 0xaab6, 0xcd72, 0xcd70, 0xcd71, 0xcfda,
- 0xcfdb, 0xaccb, 0xacc9, 0xacca, 0xacc8, 0xaf60, 0xaf64, 0xaf63,
- 0xd2c1, 0xaf62, 0xaf61, 0xd2c2, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4,
- 0xb2a5, 0xb566, 0xb565, 0xdaae, 0xdaad, 0xb2a7, 0xb7ed, 0xdec5,
- 0xb7ee, 0xdec4, 0xe2d8, 0xe6ae, 0xbd42, 0xea6a, 0xed73, 0xc3a6,
- 0xc3a5, 0xc57c, 0xa5d4, 0xcd73, 0xb2a8, 0xe2d9, 0xbac3, 0xcb6f,
- 0xcb70, 0xcd74, 0xaab8, 0xaab9, 0xaab7, 0xaccf, 0xacd0, 0xaccd,
- 0xacce, 0xcfdc, 0xcfdd, 0xaccc, 0xd2c3, 0xaf68, 0xaf69, 0xb2ab,
- 0xd2c9, 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b, 0xaf6a, 0xaf65,
- 0xd2c8, 0xd2c7, 0xd2c4, 0xaf6d, 0xd2c6, 0xaf66, 0xaf67, 0xb2ac,
- 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c, 0xd67e, 0xd6a4, 0xd6a3, 0xd67d,
- 0xb2a9, 0xb2aa, 0xdab6, 0xb56b, 0xb56a, 0xdab0, 0xb568, 0xdab3,
- 0xb56c, 0xdab4, 0xb56d, 0xdab1, 0xb567, 0xb569, 0xdab5, 0xdab2,
- 0xdaaf, 0xded2, 0xdec7, 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6,
- 0xded3, 0xded1, 0xdeca, 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc,
- 0xded4, 0xdecb, 0xb7f5, 0xb7ef, 0xb7f1, 0xdec9, 0xe2db, 0xbac7,
- 0xe2df, 0xbac6, 0xe2dc, 0xbac5, 0xdec8, 0xdecf, 0xe2de, 0xbac8,
- 0xe2e0, 0xe2dd, 0xe2da, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2,
- 0xe6b0, 0xbd45, 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af,
- 0xbd47, 0xbac4, 0xe6b6, 0xbd44, 0xea6c, 0xea6b, 0xea73, 0xea6d,
- 0xea72, 0xea6f, 0xbf60, 0xea71, 0xbf61, 0xbf62, 0xea70, 0xea6e,
- 0xc0f8, 0xed74, 0xc0f7, 0xed77, 0xed75, 0xed76, 0xc0f9, 0xf04d,
- 0xc2a1, 0xf04e, 0xc27d, 0xf04f, 0xc27e, 0xf04c, 0xf050, 0xf04a,
- 0xc3a7, 0xf278, 0xc3a8, 0xc46f, 0xf04b, 0xc470, 0xc4ee, 0xf5df,
- 0xc57e, 0xf6f4, 0xc57d, 0xf7ea, 0xc5f5, 0xc5f6, 0xf9cc, 0xacd1,
- 0xcfde, 0xb56e, 0xb56f, 0xa5d5, 0xa6ca, 0xca47, 0xcb71, 0xa86d,
- 0xaaba, 0xacd2, 0xacd3, 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0xb2ae,
- 0xd6a5, 0xdab8, 0xb571, 0xdab7, 0xb570, 0xded5, 0xbd4a, 0xe6bb,
- 0xe6b8, 0xe6b9, 0xe6ba, 0xed78, 0xf051, 0xf471, 0xf470, 0xf6f5,
- 0xa5d6, 0xcd75, 0xaf70, 0xb572, 0xded6, 0xe2e1, 0xbd4b, 0xea74,
- 0xf052, 0xf472, 0xa5d7, 0xaabb, 0xacd7, 0xcfdf, 0xacd8, 0xacd6,
- 0xacd5, 0xd2cc, 0xaf71, 0xaf72, 0xaf73, 0xb2b0, 0xd6a7, 0xb2af,
- 0xdab9, 0xb2b1, 0xb573, 0xded7, 0xb7f8, 0xb7f9, 0xbac9, 0xbaca,
- 0xbd4c, 0xbf64, 0xea75, 0xbf63, 0xed79, 0xc0fa, 0xf053, 0xf473,
- 0xa5d8, 0xa86e, 0xcd78, 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79,
- 0xcfe5, 0xacdb, 0xacda, 0xcfe7, 0xcfe6, 0xacdf, 0xacde, 0xacd9,
- 0xcfe1, 0xcfe2, 0xcfe3, 0xace0, 0xcfe0, 0xacdc, 0xcfe4, 0xacdd,
- 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2ce,
- 0xd2cd, 0xaf75, 0xaf76, 0xd2d7, 0xd2d2, 0xd6b0, 0xd2d8, 0xaf77,
- 0xaf74, 0xd6aa, 0xd6a9, 0xd6ab, 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2,
- 0xb2b5, 0xb2b2, 0xb2b6, 0xd6a8, 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af,
- 0xb2b3, 0xdabc, 0xdabe, 0xdaba, 0xdabb, 0xdabf, 0xdac1, 0xdac2,
- 0xdabd, 0xdac0, 0xb574, 0xdedb, 0xdee0, 0xded8, 0xdedc, 0xdee1,
- 0xdedd, 0xb7fa, 0xb843, 0xb7fd, 0xded9, 0xdeda, 0xbace, 0xb846,
- 0xb7fe, 0xb844, 0xb7fc, 0xdedf, 0xb845, 0xdede, 0xb841, 0xb7fb,
- 0xb842, 0xdee2, 0xe2e6, 0xe2e8, 0xb840, 0xe2e3, 0xbacc, 0xe2e9,
- 0xbacd, 0xe2e7, 0xe2e2, 0xe2e5, 0xe2ea, 0xbacb, 0xe2e4, 0xbd4e,
- 0xe6bf, 0xe6be, 0xbd51, 0xbd4f, 0xe6bc, 0xbd4d, 0xe6bd, 0xbd50,
- 0xea7d, 0xeaa1, 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66,
- 0xbf67, 0xbf65, 0xea78, 0xea7b, 0xea7c, 0xbf68, 0xc140, 0xeda3,
- 0xc0fc, 0xed7b, 0xc0fe, 0xc141, 0xc0fd, 0xeda2, 0xed7c, 0xc0fb,
- 0xeda1, 0xed7a, 0xed7e, 0xed7d, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2,
- 0xc2a3, 0xf054, 0xf27b, 0xc3a9, 0xf279, 0xf27a, 0xf474, 0xf477,
- 0xf475, 0xf476, 0xf5e0, 0xc4ef, 0xf7eb, 0xf8b4, 0xc5f7, 0xf8f8,
- 0xf8f9, 0xc666, 0xa5d9, 0xace1, 0xdac3, 0xdee3, 0xa5da, 0xa86f,
- 0xaabe, 0xcfe8, 0xcfe9, 0xaf78, 0xdac4, 0xb575, 0xb847, 0xc142,
- 0xeda4, 0xf27c, 0xf478, 0xa5db, 0xcda1, 0xcd7a, 0xcd7c, 0xcd7e,
- 0xcd7d, 0xcd7b, 0xaabf, 0xace2, 0xcff2, 0xcfed, 0xcfea, 0xcff1,
- 0xace4, 0xace5, 0xcff0, 0xcfef, 0xcfee, 0xcfeb, 0xcfec, 0xcff3,
- 0xace3, 0xaf7c, 0xafa4, 0xafa3, 0xd2e1, 0xd2db, 0xd2d9, 0xafa1,
- 0xd6b9, 0xaf7a, 0xd2de, 0xd2e2, 0xd2e4, 0xd2e0, 0xd2da, 0xafa2,
- 0xd2df, 0xd2dd, 0xaf79, 0xd2e5, 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc,
- 0xaf7e, 0xaf7b, 0xb2b9, 0xd6ba, 0xd6b3, 0xd6b5, 0xd6b7, 0xd6b8,
- 0xd6b6, 0xb2ba, 0xd6bb, 0xd6b4, 0xdac8, 0xb576, 0xdad0, 0xdac5,
- 0xdad1, 0xdac6, 0xdac7, 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577,
- 0xdac9, 0xdacc, 0xb578, 0xdacd, 0xdaca, 0xdeee, 0xdef2, 0xb84e,
- 0xe2f0, 0xb851, 0xdef0, 0xdeed, 0xdee8, 0xdeea, 0xdeeb, 0xdee4,
- 0xb84d, 0xb84c, 0xb848, 0xdee7, 0xb84f, 0xb850, 0xdee6, 0xdee9,
- 0xdef1, 0xb84a, 0xb84b, 0xdeef, 0xdee5, 0xe2f2, 0xbad0, 0xe2f4,
- 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3, 0xbad1, 0xe2ef, 0xbad3,
- 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0xb849, 0xe2eb, 0xbad2, 0xe2ed,
- 0xbd54, 0xe6c1, 0xbd58, 0xbd56, 0xbacf, 0xe6c8, 0xe6c9, 0xbd53,
- 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5, 0xe6c2,
- 0xbd59, 0xe6c4, 0xe6c6, 0xbd57, 0xbf6a, 0xeaa8, 0xeaa2, 0xeaa6,
- 0xeaac, 0xeaad, 0xeaa9, 0xeaaa, 0xeaa7, 0xeaa4, 0xbf6c, 0xbf69,
- 0xeaa3, 0xeaa5, 0xbf6b, 0xeaab, 0xc146, 0xedaa, 0xeda5, 0xc145,
- 0xc143, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6, 0xedad, 0xf056,
- 0xc147, 0xeda7, 0xedae, 0xedab, 0xf05a, 0xf057, 0xc2a6, 0xf05b,
- 0xf05d, 0xf05c, 0xf058, 0xf059, 0xf2a3, 0xc3aa, 0xf27e, 0xf2a2,
- 0xf27d, 0xf2a4, 0xf2a1, 0xf47a, 0xf47d, 0xf479, 0xc471, 0xf47b,
- 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473, 0xf5e1, 0xf5e3, 0xf5e2,
- 0xf6f6, 0xf8b5, 0xf8fa, 0xa5dc, 0xcb72, 0xaac0, 0xcda3, 0xaac1,
- 0xaac2, 0xcda2, 0xcff8, 0xcff7, 0xace6, 0xace9, 0xace8, 0xace7,
- 0xcff4, 0xcff6, 0xcff5, 0xd2e8, 0xafa7, 0xd2ec, 0xd2eb, 0xd2ea,
- 0xd2e6, 0xafa6, 0xafaa, 0xafad, 0xafae, 0xd2e7, 0xd2e9, 0xafac,
- 0xafab, 0xafa9, 0xafa8, 0xd6c2, 0xd6c0, 0xd6bc, 0xb2bb, 0xd6bd,
- 0xb2bc, 0xd6be, 0xd6bf, 0xd6c1, 0xb2bd, 0xdad5, 0xdad4, 0xdad3,
- 0xdad2, 0xdef6, 0xb852, 0xdef3, 0xdef5, 0xb853, 0xb854, 0xdef4,
- 0xe341, 0xe2f9, 0xe2fa, 0xbad7, 0xbad5, 0xbad6, 0xe343, 0xe342,
- 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb, 0xe340, 0xe2f8, 0xe6cb, 0xe6d0,
- 0xe6ce, 0xe6cd, 0xe6cc, 0xe6cf, 0xeaae, 0xbf6d, 0xc148, 0xedb0,
- 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0xf2a5, 0xc3ab, 0xf4a1,
- 0xc5a1, 0xf6f7, 0xf8b7, 0xf8b6, 0xc9a8, 0xacea, 0xaceb, 0xd6c3,
- 0xb856, 0xa5dd, 0xa872, 0xa871, 0xa870, 0xcda4, 0xaac4, 0xaac3,
- 0xacee, 0xcffa, 0xcffd, 0xcffb, 0xacec, 0xaced, 0xcff9, 0xcffc,
- 0xafb5, 0xd2f3, 0xd2f5, 0xd2f4, 0xafb2, 0xd2ef, 0xafb0, 0xafaf,
- 0xafb3, 0xafb1, 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0,
- 0xd6c6, 0xd6c7, 0xd6c5, 0xd6c4, 0xb2be, 0xb57d, 0xdad6, 0xdad8,
- 0xdada, 0xb57c, 0xb57a, 0xdad7, 0xb57b, 0xdad9, 0xb579, 0xdf41,
- 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0xdefb, 0xdef8, 0xdef9,
- 0xb858, 0xdf40, 0xb857, 0xb85c, 0xb85b, 0xb859, 0xdefd, 0xe349,
- 0xe348, 0xe344, 0xbad8, 0xe347, 0xe346, 0xbad9, 0xbd5e, 0xe6d2,
- 0xbd5f, 0xbd5b, 0xbd5d, 0xbd5a, 0xbd5c, 0xeaaf, 0xbf70, 0xeab1,
- 0xeab0, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0xedb5, 0xedb3,
- 0xc14a, 0xedb4, 0xedb6, 0xedb2, 0xedb1, 0xf060, 0xc2aa, 0xc2a8,
- 0xc2a9, 0xf2a6, 0xf2a7, 0xc3ad, 0xc3ac, 0xf4a3, 0xf4a4, 0xf4a2,
- 0xf6f8, 0xf6f9, 0xa5de, 0xca48, 0xa873, 0xcda5, 0xaac6, 0xaac5,
- 0xcda6, 0xd040, 0xacef, 0xcffe, 0xacf0, 0xafb6, 0xd2f8, 0xd2f6,
- 0xd2fc, 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9, 0xd2fa, 0xd6c8, 0xd6ca,
- 0xb2bf, 0xd6c9, 0xb2c0, 0xb5a2, 0xb5a1, 0xb57e, 0xdadb, 0xdf44,
- 0xb85d, 0xb85e, 0xdf43, 0xdf42, 0xe34a, 0xbadb, 0xbada, 0xe34b,
- 0xe34c, 0xbd61, 0xbd60, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4,
- 0xeab2, 0xeab6, 0xeab3, 0xbf73, 0xedb7, 0xc14b, 0xedb8, 0xedb9,
- 0xc2ab, 0xc2ac, 0xc475, 0xc5d1, 0xa5df, 0xd041, 0xd2fd, 0xafb8,
- 0xb3ba, 0xb3b9, 0xb5a4, 0xdadd, 0xb5a3, 0xdadc, 0xdf45, 0xbadc,
- 0xe34d, 0xbadd, 0xc476, 0xf4a5, 0xa6cb, 0xaac7, 0xcda7, 0xacf2,
- 0xacf1, 0xd042, 0xd043, 0xd340, 0xd342, 0xafb9, 0xd344, 0xd347,
- 0xd345, 0xd346, 0xd343, 0xd2fe, 0xafba, 0xd348, 0xd341, 0xd6d3,
- 0xb2c6, 0xd6dc, 0xb2c3, 0xd6d5, 0xb2c7, 0xb2c1, 0xd6d0, 0xd6dd,
- 0xd6d1, 0xd6ce, 0xb2c5, 0xb2c2, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8,
- 0xb2c8, 0xd6d9, 0xd6cf, 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb,
- 0xd6db, 0xdadf, 0xdae4, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, 0xdae1,
- 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, 0xb5a8,
- 0xb5ae, 0xb5a9, 0xb5aa, 0xb5a6, 0xdae5, 0xb861, 0xdf50, 0xdf53,
- 0xdf47, 0xdf4c, 0xdf46, 0xb863, 0xdf4a, 0xdf48, 0xb862, 0xdf4f,
- 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49, 0xbae1, 0xdf52, 0xb85f, 0xdf51,
- 0xe35d, 0xbae8, 0xe358, 0xbae7, 0xe34e, 0xe350, 0xbae0, 0xe355,
- 0xe354, 0xe357, 0xbae5, 0xe352, 0xe351, 0xbae4, 0xbadf, 0xe353,
- 0xbae2, 0xe359, 0xe35b, 0xe356, 0xe34f, 0xbae3, 0xbd69, 0xbade,
- 0xe35c, 0xe6d9, 0xbd62, 0xe6db, 0xbd63, 0xbd65, 0xe6de, 0xe6d6,
- 0xbae6, 0xe6dc, 0xe6d8, 0xb860, 0xbd68, 0xbd64, 0xbd66, 0xbd67,
- 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0xe6da, 0xeac0, 0xeabb, 0xeac5,
- 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba, 0xeab7, 0xeac6, 0xc151,
- 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc, 0xbf7b, 0xeab9, 0xeabe,
- 0xbf7a, 0xeac1, 0xeac4, 0xedcb, 0xedcc, 0xedbc, 0xedc3, 0xedc1,
- 0xc14f, 0xedc8, 0xeabf, 0xedbf, 0xedc9, 0xc14e, 0xedbe, 0xedbd,
- 0xedc7, 0xedc4, 0xedc6, 0xedba, 0xedca, 0xc14c, 0xedc5, 0xedce,
- 0xedc2, 0xc150, 0xc14d, 0xedc0, 0xedbb, 0xedcd, 0xbf75, 0xf063,
- 0xf061, 0xf067, 0xc2b0, 0xf065, 0xf064, 0xc2b2, 0xf06a, 0xc2b1,
- 0xf06b, 0xf068, 0xc2ae, 0xf069, 0xf062, 0xc2af, 0xc2ad, 0xf2ab,
- 0xf066, 0xf06c, 0xf2a8, 0xc3b2, 0xc3b0, 0xf2aa, 0xf2ac, 0xf2a9,
- 0xc3b1, 0xc3ae, 0xc3af, 0xc3b3, 0xc478, 0xf4aa, 0xf4a9, 0xf4a7,
- 0xf4a6, 0xf4a8, 0xc477, 0xc479, 0xc4f0, 0xf5e5, 0xf5e4, 0xf6fa,
- 0xf6fc, 0xf6fe, 0xf6fd, 0xf6fb, 0xc5a3, 0xc5a2, 0xc5d3, 0xc5d2,
- 0xc5d4, 0xf7ed, 0xf7ec, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0xc659,
- 0xf96d, 0xc67e, 0xa6cc, 0xcda8, 0xd045, 0xd046, 0xd044, 0xacf3,
- 0xd047, 0xd048, 0xd049, 0xd349, 0xd34f, 0xd34d, 0xafbb, 0xd34b,
- 0xd34c, 0xd34e, 0xd34a, 0xb2c9, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca,
- 0xd6df, 0xdae8, 0xb5af, 0xdaea, 0xdae7, 0xd6e1, 0xb5b0, 0xdae9,
- 0xdf56, 0xb864, 0xdf54, 0xb865, 0xdf55, 0xb866, 0xbae9, 0xe361,
- 0xe35e, 0xe360, 0xbaea, 0xbaeb, 0xe35f, 0xe6df, 0xe6e0, 0xbd6b,
- 0xe6e2, 0xe6e1, 0xa261, 0xeaca, 0xeacb, 0xeac7, 0xeac8, 0xbf7c,
- 0xbf7d, 0xeac9, 0xc157, 0xc153, 0xc158, 0xc154, 0xc156, 0xc152,
- 0xc155, 0xc2b3, 0xedcf, 0xf2ae, 0xf2ad, 0xf4ab, 0xc47a, 0xc47b,
- 0xf741, 0xf5e6, 0xf740, 0xf8fd, 0xf9a4, 0xa6cd, 0xa874, 0xcda9,
- 0xaac8, 0xacf6, 0xd04c, 0xacf4, 0xd04a, 0xacf9, 0xacf5, 0xacfa,
- 0xacf8, 0xd04b, 0xacf7, 0xafbf, 0xafbe, 0xd35a, 0xafc7, 0xd353,
- 0xd359, 0xafc3, 0xd352, 0xd358, 0xd356, 0xafc2, 0xafc4, 0xd355,
- 0xafbd, 0xd354, 0xafc8, 0xafc5, 0xafc9, 0xafc6, 0xd351, 0xd350,
- 0xd357, 0xafc0, 0xafbc, 0xafc1, 0xd6f0, 0xd6e9, 0xb5b5, 0xd6e8,
- 0xb2cf, 0xb2d6, 0xb2d3, 0xb2d9, 0xb2d8, 0xb2d4, 0xd6e2, 0xd6e5,
- 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef, 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed,
- 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd, 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb,
- 0xd6ee, 0xdafb, 0xdaf2, 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7,
- 0xb5b4, 0xdaef, 0xdaeb, 0xb86c, 0xdaf4, 0xb5b1, 0xdafa, 0xb5b8,
- 0xb5ba, 0xdaed, 0xb5b9, 0xdaf0, 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5,
- 0xdaf3, 0xb5b6, 0xdaec, 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0xb868,
- 0xdf5d, 0xdf5f, 0xdf61, 0xdf65, 0xdf5b, 0xdf59, 0xb86a, 0xdf60,
- 0xdf64, 0xdf5c, 0xdf58, 0xdf57, 0xdf62, 0xdf5a, 0xdf5e, 0xb86b,
- 0xb869, 0xdf66, 0xb867, 0xdf63, 0xe372, 0xbaee, 0xe36a, 0xbd78,
- 0xe374, 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0xe375, 0xe362, 0xe377,
- 0xe366, 0xbafe, 0xbafb, 0xe376, 0xe370, 0xbaed, 0xbaf5, 0xbaf4,
- 0xbaf3, 0xbaf9, 0xe363, 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373,
- 0xbaef, 0xbaf0, 0xbaf8, 0xe368, 0xe367, 0xe364, 0xe36c, 0xe369,
- 0xe36d, 0xbafd, 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0xe36b, 0xbafc,
- 0xe6e7, 0xbd70, 0xbd79, 0xbd75, 0xe6e4, 0xbd72, 0xbd76, 0xe6f0,
- 0xbd6c, 0xe6e8, 0xbd74, 0xe6eb, 0xe6e6, 0xbd73, 0xbd77, 0xe6e5,
- 0xbd71, 0xe6ef, 0xbd6e, 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d,
- 0xe6ec, 0xe6e3, 0xbd7b, 0xe6ea, 0xbd6f, 0xe6e9, 0xbfa2, 0xbfa7,
- 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9, 0xbfa8, 0xbfa1,
- 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace, 0xead6, 0xbfa3,
- 0xead4, 0xbfa6, 0xbfa5, 0xead0, 0xead1, 0xeacd, 0xead7, 0xbfa4,
- 0xeade, 0xeadd, 0xedda, 0xedd6, 0xc15f, 0xedd0, 0xc159, 0xc169,
- 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164, 0xc167, 0xedde, 0xc15c,
- 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1, 0xc160, 0xc15a, 0xc168,
- 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf, 0xc162, 0xc15b, 0xedd9,
- 0xc166, 0xedd7, 0xeddb, 0xf06e, 0xf074, 0xc2b9, 0xf077, 0xc2b4,
- 0xc2b5, 0xf06f, 0xf076, 0xf071, 0xc2ba, 0xc2b7, 0xf06d, 0xc2b6,
- 0xf073, 0xf075, 0xc2b8, 0xf072, 0xf070, 0xf2b8, 0xc3b7, 0xc3b8,
- 0xc3b4, 0xc3b5, 0xf2b4, 0xf2b2, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0,
- 0xf2af, 0xf2b3, 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d,
- 0xf4ad, 0xf4af, 0xf4ae, 0xc4a1, 0xf5eb, 0xf5e8, 0xf5e9, 0xf5e7,
- 0xf5ea, 0xc4f2, 0xf5ec, 0xc4f1, 0xf742, 0xc5d5, 0xc5d7, 0xf7ee,
- 0xc5d6, 0xf8b9, 0xf940, 0xf942, 0xf8fe, 0xf941, 0xc66c, 0xa6ce,
- 0xacfb, 0xd26f, 0xafca, 0xb2da, 0xdafc, 0xdafd, 0xeadf, 0xc16a,
- 0xede1, 0xc2bb, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0xf743, 0xc5f8,
- 0xca49, 0xaac9, 0xa875, 0xd04d, 0xd360, 0xd35b, 0xd35f, 0xd35d,
- 0xafcb, 0xd35e, 0xd35c, 0xd6f1, 0xdafe, 0xdb40, 0xdf69, 0xdf6a,
- 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67, 0xb86d, 0xbb40, 0xb870,
- 0xe37a, 0xbd7c, 0xe6f1, 0xbd7d, 0xbfa9, 0xeae2, 0xeae0, 0xeae1,
- 0xede4, 0xede3, 0xede2, 0xf2bb, 0xc3b9, 0xf2bc, 0xf744, 0xc5f9,
- 0xf8ba, 0xa6cf, 0xaacb, 0xaaca, 0xd04f, 0xacfc, 0xd04e, 0xd362,
- 0xafcc, 0xd6f2, 0xd361, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db,
- 0xdb42, 0xdb43, 0xdb41, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e, 0xb872,
- 0xb871, 0xe6f2, 0xe6f4, 0xbd7e, 0xe6f3, 0xeae3, 0xbfaa, 0xf079,
- 0xf078, 0xc3bb, 0xf2bd, 0xc3bd, 0xc3bc, 0xf4b0, 0xf5ee, 0xc4f3,
- 0xa6d0, 0xd050, 0xacfd, 0xd365, 0xafce, 0xd364, 0xd363, 0xafcd,
- 0xd6fb, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd, 0xd6f8, 0xb2de, 0xd6fc,
- 0xd6f9, 0xd6fa, 0xb2df, 0xb5be, 0xb5bf, 0xdb44, 0xdf6f, 0xdf70,
- 0xe37e, 0xbb43, 0xbb41, 0xbb42, 0xe37b, 0xe37c, 0xe37d, 0xe6f9,
- 0xe6fa, 0xbda1, 0xe6f7, 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4,
- 0xbfab, 0xbfac, 0xede6, 0xc16b, 0xede5, 0xefa8, 0xf07a, 0xf07b,
- 0xc2bc, 0xc2bd, 0xc16c, 0xf2be, 0xf2bf, 0xf4b1, 0xc4a3, 0xa6d1,
- 0xa6d2, 0xacfe, 0xaacc, 0xafcf, 0xd051, 0xb5c0, 0xa6d3, 0xad41,
- 0xd052, 0xd053, 0xad40, 0xad42, 0xa6d4, 0xd054, 0xafd1, 0xd366,
- 0xafd3, 0xafd0, 0xafd2, 0xd741, 0xb2e0, 0xd740, 0xd6fe, 0xdf71,
- 0xe3a1, 0xbda2, 0xbfae, 0xeae6, 0xeae5, 0xede7, 0xf5ef, 0xa6d5,
- 0xcb73, 0xcdaa, 0xad43, 0xd055, 0xd368, 0xafd4, 0xd367, 0xafd5,
- 0xd743, 0xb2e2, 0xd742, 0xd744, 0xb2e1, 0xdb46, 0xdb47, 0xdb45,
- 0xb5c1, 0xb874, 0xb875, 0xbb45, 0xe3a3, 0xe3a2, 0xbb44, 0xe6fb,
- 0xe6fc, 0xeae7, 0xc170, 0xc16f, 0xc16d, 0xc16e, 0xc171, 0xf07c,
- 0xc2bf, 0xc2be, 0xf2c0, 0xf4b2, 0xc5a5, 0xc5a4, 0xa6d6, 0xd1fb,
- 0xb877, 0xb5c2, 0xb876, 0xbb46, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9,
- 0xcdab, 0xcb76, 0xcb77, 0xa877, 0xcb74, 0xa876, 0xa879, 0xcb75,
- 0xa87b, 0xa87a, 0xcb78, 0xa878, 0xaad1, 0xaacf, 0xcdad, 0xaace,
- 0xaad3, 0xaad5, 0xaad2, 0xcdb0, 0xcdac, 0xaad6, 0xaad0, 0xa87c,
- 0xaad4, 0xcdaf, 0xcdae, 0xaacd, 0xd05b, 0xad47, 0xad48, 0xd05d,
- 0xd057, 0xd05a, 0xd063, 0xd061, 0xad49, 0xd067, 0xad4c, 0xd064,
- 0xd05c, 0xd059, 0xdb49, 0xd062, 0xad44, 0xd065, 0xd056, 0xd05f,
- 0xad46, 0xad4b, 0xd060, 0xad4f, 0xad4d, 0xd058, 0xad4a, 0xd05e,
- 0xad4e, 0xad45, 0xd066, 0xafda, 0xafe3, 0xafd8, 0xafd6, 0xd36a,
- 0xafde, 0xafdb, 0xd36c, 0xafdd, 0xd36b, 0xd369, 0xd36e, 0xafe2,
- 0xafe0, 0xdb48, 0xd36f, 0xd36d, 0xafd7, 0xafd9, 0xafdc, 0xafdf,
- 0xafe1, 0xd74e, 0xb2e4, 0xd745, 0xd747, 0xd748, 0xd750, 0xd74c,
- 0xd74a, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746, 0xd74f, 0xb2e7,
- 0xb2e6, 0xd74b, 0xd749, 0xb2e3, 0xb2e8, 0xb5c8, 0xdb51, 0xdb4f,
- 0xb5ca, 0xdb4a, 0xdfa1, 0xb5c9, 0xdb4e, 0xdb4b, 0xb5c5, 0xb5cb,
- 0xdb50, 0xb5c7, 0xdb4d, 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4,
- 0xb5c3, 0xdf77, 0xdf75, 0xdf7b, 0xdf73, 0xdfa2, 0xdf78, 0xdf72,
- 0xb87b, 0xb8a3, 0xdf7d, 0xdf76, 0xb87e, 0xb87c, 0xdf7e, 0xb879,
- 0xb878, 0xdf79, 0xb87d, 0xb5cd, 0xdf7c, 0xdf74, 0xb87a, 0xb8a1,
- 0xb8a2, 0xbb4c, 0xbb48, 0xbb4d, 0xe3a6, 0xe3a5, 0xe3a7, 0xbb4a,
- 0xe3a4, 0xbb4b, 0xe3aa, 0xe3a9, 0xe3a8, 0xbb49, 0xe741, 0xe744,
- 0xbda8, 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe,
- 0xbda6, 0xe742, 0xe6fd, 0xeae9, 0xeaf3, 0xbfb1, 0xbfb0, 0xeaed,
- 0xeaef, 0xeaea, 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0, 0xeaec,
- 0xeaf2, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178, 0xc17a, 0xc177,
- 0xc176, 0xc175, 0xc173, 0xede9, 0xedec, 0xc172, 0xeded, 0xc179,
- 0xedeb, 0xedea, 0xc2c0, 0xc2c1, 0xf0a1, 0xf07d, 0xf07e, 0xf2c2,
- 0xf2c1, 0xc3be, 0xf4b4, 0xc4a4, 0xf4b3, 0xf5f0, 0xf745, 0xc5a6,
- 0xf943, 0xf944, 0xc5d8, 0xa6da, 0xaad7, 0xdb52, 0xbb4e, 0xc17b,
- 0xedef, 0xa6db, 0xafe5, 0xafe4, 0xdb53, 0xeaf4, 0xa6dc, 0xad50,
- 0xdb54, 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0xaad8, 0xd068,
- 0xafe6, 0xd370, 0xb2ea, 0xdb57, 0xb8a4, 0xbb50, 0xbfb3, 0xc17c,
- 0xc2c2, 0xf4b5, 0xa6de, 0xaad9, 0xafe7, 0xd752, 0xb5ce, 0xbb51,
- 0xe3ab, 0xe745, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0, 0xcdb1,
- 0xd069, 0xad51, 0xd372, 0xafea, 0xafe8, 0xafe9, 0xafeb, 0xd371,
- 0xd757, 0xd754, 0xd756, 0xb2eb, 0xb2ed, 0xb2ec, 0xd753, 0xb2ee,
- 0xd755, 0xdb58, 0xdb59, 0xdb5a, 0xdfa6, 0xdfa7, 0xdfa5, 0xdfa8,
- 0xb8a5, 0xdfa4, 0xbb53, 0xe74a, 0xe746, 0xe749, 0xe74b, 0xe748,
- 0xe747, 0xeaf5, 0xeaf6, 0xeaf7, 0xbfb4, 0xbfb5, 0xedf1, 0xedf0,
- 0xedf2, 0xf0a3, 0xf0a2, 0xf2c4, 0xf2c5, 0xf2c3, 0xc4a5, 0xf4b6,
- 0xf4b7, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, 0xc17d, 0xa6e2,
- 0xd758, 0xdb5b, 0xc641, 0xca4a, 0xca4b, 0xca4d, 0xa6e3, 0xca4e,
- 0xca4c, 0xcba2, 0xcba3, 0xcb7b, 0xcba1, 0xa8a1, 0xa8a2, 0xcb7c,
- 0xcb7a, 0xcb79, 0xcb7d, 0xa87e, 0xcb7e, 0xd06a, 0xcdb6, 0xaadc,
- 0xcdb5, 0xcdb7, 0xaadb, 0xcdbc, 0xaadf, 0xcdb2, 0xcdc0, 0xcdc6,
- 0xaae6, 0xcdc3, 0xaae3, 0xcdb9, 0xcdbf, 0xcdc1, 0xcdb4, 0xaae2,
- 0xaadd, 0xcdba, 0xaae4, 0xaae7, 0xaae1, 0xaada, 0xcdbe, 0xcdb8,
- 0xcdc5, 0xaae9, 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade,
- 0xaae8, 0xcdb3, 0xcdc2, 0xcdc4, 0xad62, 0xad5c, 0xad64, 0xad61,
- 0xd071, 0xd074, 0xad5d, 0xd06b, 0xad56, 0xad60, 0xad63, 0xad65,
- 0xd0a2, 0xd077, 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, 0xd06f,
- 0xd07e, 0xd073, 0xd076, 0xd0a5, 0xad66, 0xd07d, 0xad5e, 0xd078,
- 0xd0a4, 0xd075, 0xd079, 0xd07c, 0xd06d, 0xd0a3, 0xd07b, 0xd06c,
- 0xd070, 0xad5f, 0xad5a, 0xad53, 0xad58, 0xad54, 0xad67, 0xd06e,
- 0xd3a5, 0xad5b, 0xd07a, 0xce41, 0xd3a8, 0xaffa, 0xd376, 0xd3a3,
- 0xd37d, 0xd3b2, 0xd3aa, 0xd37e, 0xd3a9, 0xd378, 0xd37c, 0xd3b5,
- 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0xd3ac, 0xaffc,
- 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, 0xaff1, 0xaff8,
- 0xd072, 0xdb5c, 0xd3a6, 0xd37a, 0xaffb, 0xd37b, 0xd3a1, 0xaffe,
- 0xd375, 0xd3af, 0xd3ae, 0xd3b6, 0xaff3, 0xaff0, 0xd3b4, 0xd3b0,
- 0xd3a7, 0xd3a2, 0xaff6, 0xaff2, 0xd377, 0xafee, 0xd3b1, 0xafef,
- 0xd379, 0xd75e, 0xd760, 0xd765, 0xd779, 0xb2fc, 0xb2f2, 0xd75d,
- 0xb2fd, 0xb2fe, 0xd768, 0xd76f, 0xd775, 0xd762, 0xd769, 0xb340,
- 0xd777, 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef,
- 0xd761, 0xd759, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773,
- 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0xd76b, 0xb2f0, 0xb2fb, 0xb2f3,
- 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, 0xd75b, 0xd767, 0xd76d,
- 0xb2f6, 0xd778, 0xd771, 0xd774, 0xb2f5, 0xdb6c, 0xdb60, 0xb5d7,
- 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5, 0xdb68, 0xdba3, 0xdb69, 0xdb77,
- 0xb5e2, 0xdb73, 0xb5df, 0xdb74, 0xdb5d, 0xdba4, 0xb5e8, 0xdba1,
- 0xdb75, 0xdbac, 0xdb70, 0xdfc8, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a,
- 0xb5e9, 0xb5d4, 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0xdb63,
- 0xdb61, 0xb5d0, 0xdba5, 0xdb6a, 0xdba8, 0xdba9, 0xb5d8, 0xb5dd,
- 0xb5d9, 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0xb5d2, 0xdb5e,
- 0xdba2, 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71, 0xdb6d, 0xb5d1,
- 0xb5e5, 0xdb7c, 0xb5e7, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3,
- 0xb5e4, 0xdb79, 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0xdbae, 0xdb5f,
- 0xdfc7, 0xdfdd, 0xb855, 0xdfcc, 0xdfca, 0xdfb5, 0xb8a9, 0xdfc5,
- 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, 0xb5e3, 0xdfcf, 0xdfc0,
- 0xdfd6, 0xb8b0, 0xb8a8, 0xdfaa, 0xdfb2, 0xdfcb, 0xdfc3, 0xdfdc,
- 0xdfc6, 0xb8b6, 0xdfd7, 0xb8ad, 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0,
- 0xdfe1, 0xdfb1, 0xdfd2, 0xdfdf, 0xdfab, 0xb5db, 0xdfb9, 0xdfb8,
- 0xb8af, 0xdfbc, 0xdfbe, 0xdfcd, 0xdfde, 0xb8b2, 0xb8b3, 0xdfb0,
- 0xb8ab, 0xdfb4, 0xdfda, 0xb8b4, 0xb8ac, 0xb8ae, 0xb8b5, 0xdfe0,
- 0xdfd3, 0xdfce, 0xdfbb, 0xdfba, 0xb8aa, 0xdfac, 0xb8a7, 0xdfc4,
- 0xdfad, 0xdfc2, 0xdfb7, 0xdfdb, 0xb8a6, 0xdfb3, 0xdfaf, 0xdfd5,
- 0xdfae, 0xbb60, 0xe3d3, 0xe3c2, 0xe3ac, 0xe3ca, 0xbb58, 0xe3bb,
- 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, 0xe3cd, 0xe3ae, 0xe3c1,
- 0xe3ad, 0xe3bf, 0xe3c8, 0xe3c6, 0xe3ba, 0xe3b5, 0xe3b3, 0xe3b4,
- 0xe3c7, 0xe3d2, 0xe3bc, 0xbb5a, 0xe3b7, 0xe3cb, 0xbb5d, 0xe3b6,
- 0xe3b0, 0xe3c0, 0xbb61, 0xbb55, 0xbb5e, 0xe3b8, 0xe3b2, 0xbb57,
- 0xdfd4, 0xbb56, 0xe3c3, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9,
- 0xe3b1, 0xe3cc, 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0xe3c9,
- 0xe3ce, 0xe3d1, 0xe773, 0xe774, 0xe767, 0xe766, 0xe762, 0xbdb4,
- 0xbdac, 0xe776, 0xe775, 0xdfa9, 0xe75f, 0xe763, 0xe75d, 0xe770,
- 0xe761, 0xe777, 0xe75a, 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6,
- 0xe74f, 0xe76d, 0xbdb7, 0xdfbd, 0xe75b, 0xe752, 0xe755, 0xe77b,
- 0xe75c, 0xe753, 0xe751, 0xe74e, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3,
- 0xe760, 0xe768, 0xbda9, 0xe778, 0xe77c, 0xbdab, 0xe757, 0xe76b,
- 0xe76f, 0xe754, 0xe779, 0xbdb2, 0xbdb1, 0xe74c, 0xbdb5, 0xe772,
- 0xe756, 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c,
- 0xe77d, 0xe77a, 0xe771, 0xe74d, 0xbdaa, 0xeb49, 0xeb40, 0xeb43,
- 0xbfbb, 0xeb45, 0xeaf9, 0xeb41, 0xeb47, 0xbfb8, 0xbfbc, 0xbfb6,
- 0xeafb, 0xeb4c, 0xeb46, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46,
- 0xeafe, 0xbfb7, 0xeb4a, 0xeb54, 0xbfbf, 0xeb51, 0xeafd, 0xeb44,
- 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, 0xbfb9, 0xbfba, 0xbfbe,
- 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0xeb4b, 0xeb4e, 0xee53, 0xee40,
- 0xee45, 0xee52, 0xee44, 0xedfb, 0xee41, 0xc1a2, 0xedf4, 0xee4d,
- 0xee4f, 0xedf3, 0xc1a1, 0xee51, 0xee49, 0xc1a8, 0xee50, 0xee42,
- 0xc1aa, 0xedf9, 0xeb52, 0xee4a, 0xee47, 0xedf5, 0xee55, 0xc1a4,
- 0xc1a5, 0xedf7, 0xee48, 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3,
- 0xee4c, 0xedfe, 0xee56, 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc,
- 0xc2cb, 0xedf6, 0xc1a9, 0xc2c4, 0xc17e, 0xc1a6, 0xc2c8, 0xf0b3,
- 0xf0a9, 0xf0a4, 0xf0aa, 0xf0b4, 0xf0b8, 0xf0b7, 0xc2ca, 0xc2c9,
- 0xf0ab, 0xf0b9, 0xf0ae, 0xf0a6, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2,
- 0xf0a5, 0xf0ac, 0xf0b1, 0xc2c7, 0xf0af, 0xc2c5, 0xf0b0, 0xc2c3,
- 0xc2c6, 0xf2d5, 0xf0b5, 0xc3c2, 0xf2cd, 0xf2d1, 0xf2c9, 0xf2cc,
- 0xf2d4, 0xc3c0, 0xf2d9, 0xf2d2, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3,
- 0xc3c4, 0xf2d7, 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8,
- 0xf2d8, 0xf2d6, 0xf2c7, 0xf2cf, 0xf4be, 0xc3c5, 0xf2d0, 0xc4a7,
- 0xc4a9, 0xc4a6, 0xf4c3, 0xf4bb, 0xf4b9, 0xf4bd, 0xf4ba, 0xf4bf,
- 0xf4c1, 0xc4aa, 0xc4ac, 0xf4c0, 0xc4ad, 0xc4ab, 0xf4c2, 0xc4a8,
- 0xc4f4, 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0xf5fd, 0xf5f4,
- 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8,
- 0xf5fc, 0xf5f2, 0xf74a, 0xc4f5, 0xf5f9, 0xf7f4, 0xf74b, 0xf749,
- 0xf747, 0xf748, 0xf74c, 0xc5d9, 0xf7f2, 0xf7f0, 0xf7f5, 0xf7f3,
- 0xf7f6, 0xc5da, 0xf7f1, 0xf8bc, 0xf945, 0xf946, 0xf947, 0xf9c7,
- 0xf9bd, 0xca4f, 0xaaea, 0xad68, 0xd3b8, 0xd3b7, 0xb040, 0xb342,
- 0xd77c, 0xd77b, 0xb5ea, 0xb8b8, 0xb8b7, 0xb8b9, 0xe3d4, 0xe77e,
- 0xeb58, 0xeb5a, 0xeb59, 0xc1ab, 0xee57, 0xf0ba, 0xf9a5, 0xa6e4,
- 0xcdc9, 0xcdca, 0xcdc8, 0xcdc7, 0xaaeb, 0xd0a9, 0xd0a7, 0xd0a6,
- 0xad69, 0xad6b, 0xad6a, 0xd0a8, 0xd3c4, 0xd3c1, 0xd3bf, 0xb041,
- 0xd3c2, 0xb046, 0xd3bc, 0xd3cb, 0xd3cd, 0xd3bd, 0xb043, 0xd3ce,
- 0xd3c9, 0xd3bb, 0xd3c0, 0xd3ca, 0xd3c6, 0xd3c3, 0xb048, 0xd3cc,
- 0xd3be, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0xd3c8, 0xd3ba,
- 0xb045, 0xb042, 0xb34c, 0xd7a5, 0xb34b, 0xd7a8, 0xd7ab, 0xb348,
- 0xb346, 0xd77e, 0xd7a9, 0xd7a7, 0xd7a4, 0xd7ac, 0xd7ad, 0xd7af,
- 0xd7b0, 0xd77d, 0xb345, 0xd7a2, 0xd7a1, 0xd7ae, 0xb347, 0xd7a3,
- 0xb349, 0xb344, 0xd7a6, 0xb34d, 0xb34a, 0xd7aa, 0xb5f1, 0xdbbf,
- 0xdbb4, 0xb5ee, 0xdfe7, 0xdbbd, 0xdbb1, 0xb5ec, 0xdbb6, 0xb5ef,
- 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, 0xdbb2, 0xdbb5, 0xb5f0, 0xdbb3,
- 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb, 0xb5ed, 0xdfe8, 0xdfee,
- 0xdfe4, 0xdfea, 0xb8ba, 0xdfe6, 0xb8c0, 0xb8bf, 0xb8be, 0xdfed,
- 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0, 0xb8c3, 0xb8bd, 0xb8bc, 0xdfec,
- 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef, 0xdfeb, 0xe3f4, 0xe3e9, 0xb8bb,
- 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de, 0xbb65, 0xe3db, 0xe3e4, 0xe3dc,
- 0xbb67, 0xe3d6, 0xe3f1, 0xbb68, 0xe3ee, 0xe3ef, 0xe3d7, 0xbb6d,
- 0xe3e6, 0xe3e0, 0xe3e7, 0xe3da, 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5,
- 0xbb69, 0xe3ec, 0xbb6c, 0xe3f0, 0xe3ea, 0xbb66, 0xe3e8, 0xe3e2,
- 0xbb64, 0xe3d9, 0xe3e1, 0xe3ed, 0xe3df, 0xe3e3, 0xbdc1, 0xdfe9,
- 0xe7b2, 0xe7bb, 0xe7b1, 0xe7ad, 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b,
- 0xe7a1, 0xbdc0, 0xe7a7, 0xbdbf, 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4,
- 0xe7ae, 0xe7b3, 0xbdbb, 0xe7ab, 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba,
- 0xbdbc, 0xe7bf, 0xbdbe, 0xe7c0, 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af,
- 0xe7b8, 0xe7b5, 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, 0xbdbd,
- 0xeb64, 0xe7b7, 0xe7bc, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67,
- 0xeb65, 0xeb60, 0xeb6f, 0xbfc4, 0xeb5c, 0xeb68, 0xeb69, 0xeb5f,
- 0xeb5e, 0xeb6c, 0xeb62, 0xeb5d, 0xeb63, 0xeb6e, 0xeb5b, 0xeb6d,
- 0xeb6a, 0xbfc2, 0xbfc1, 0xbfc3, 0xeb66, 0xf0cb, 0xee59, 0xc1b1,
- 0xee5d, 0xee5a, 0xee61, 0xee67, 0xee5c, 0xee70, 0xc1ae, 0xee6a,
- 0xee5f, 0xee6b, 0xee66, 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60,
- 0xee6e, 0xee58, 0xee6c, 0xc1ac, 0xee64, 0xee63, 0xee68, 0xee5b,
- 0xc1b0, 0xc1b4, 0xee62, 0xee69, 0xc1b5, 0xee65, 0xc1ad, 0xc1af,
- 0xf0c7, 0xf0c5, 0xf0cc, 0xf0c9, 0xf0cd, 0xf0be, 0xf0c6, 0xf0d1,
- 0xee6f, 0xf0c2, 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4, 0xf0c1,
- 0xf0bc, 0xf0bb, 0xf0d0, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8, 0xc2cc,
- 0xc2ce, 0xf0c3, 0xf0cf, 0xf2de, 0xf2df, 0xc3c9, 0xf2dc, 0xc3c6,
- 0xf2e4, 0xc3ca, 0xf2e6, 0xf2db, 0xf0ce, 0xf2e8, 0xf2dd, 0xc3c7,
- 0xf2e3, 0xf2e5, 0xf2e0, 0xf2e7, 0xf2e2, 0xf2e1, 0xc3c8, 0xf4c5,
- 0xf4c6, 0xf4c8, 0xc4ae, 0xc4af, 0xf4c9, 0xf4c7, 0xf4c4, 0xf642,
- 0xf645, 0xf641, 0xc4fa, 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644,
- 0xf751, 0xf74f, 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0xf7f9,
- 0xf7d7, 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0xf8bf, 0xc5fa, 0xf8be,
- 0xf8bd, 0xc5fb, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, 0xa6e5,
- 0xd0aa, 0xd3cf, 0xd3d0, 0xdbc0, 0xf647, 0xf8c0, 0xa6e6, 0xad6c,
- 0xd0ab, 0xd7b1, 0xb34e, 0xdbc2, 0xdbc1, 0xb5f3, 0xb8c5, 0xe7c1,
- 0xbdc3, 0xbdc4, 0xbfc5, 0xc5fc, 0xa6e7, 0xd0ac, 0xaaed, 0xd0ae,
- 0xd0ad, 0xad6d, 0xd3d1, 0xd3d8, 0xb049, 0xd3d6, 0xd3d4, 0xd3db,
- 0xd3d2, 0xd3d3, 0xb04a, 0xb04e, 0xd3dc, 0xb04d, 0xd3da, 0xd3d7,
- 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xb350, 0xd7b2, 0xb355, 0xd7c2,
- 0xb354, 0xd7c4, 0xd7b8, 0xb352, 0xd7c3, 0xd7b3, 0xb353, 0xd7bf,
- 0xd7bb, 0xd7bd, 0xd7b7, 0xd7be, 0xb34f, 0xd7ba, 0xd7b9, 0xd7b5,
- 0xd7c0, 0xd7bc, 0xd7b4, 0xd7b6, 0xb351, 0xd7c1, 0xb5f6, 0xdbcd,
- 0xdbc9, 0xdbcb, 0xdbc6, 0xdbc5, 0xdbc3, 0xdbca, 0xdbcc, 0xdbc8,
- 0xdbc7, 0xb5f4, 0xb5f5, 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3,
- 0xdff4, 0xdff9, 0xb8cf, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, 0xb8ca,
- 0xb8c8, 0xdff7, 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, 0xb8cc,
- 0xe3f6, 0xbb74, 0xe442, 0xe441, 0xe3fb, 0xbb76, 0xe440, 0xe3f7,
- 0xe3f8, 0xbb6e, 0xbb70, 0xe3fd, 0xe3f5, 0xbb72, 0xbb71, 0xe3f9,
- 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0xdbce, 0xbb6f, 0xe7c2, 0xe7c9,
- 0xbdc6, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0xe7cc, 0xbdc5, 0xe7cb,
- 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6, 0xe7c7, 0xe7c8,
- 0xbb75, 0xeb70, 0xeb7c, 0xbfca, 0xeb77, 0xeb79, 0xbfc8, 0xeb71,
- 0xeb75, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b, 0xeb73, 0xeb74, 0xeb7a,
- 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0xee71, 0xc1b7, 0xee77, 0xc1b9,
- 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0xee75, 0xee78, 0xc1b8, 0xf0d6,
- 0xf0d9, 0xf0d3, 0xf0d5, 0xf0d4, 0xf0d7, 0xf0d8, 0xee76, 0xf0d2,
- 0xc3cd, 0xf2ec, 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0,
- 0xc3ce, 0xc3cc, 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0xf4cb,
- 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, 0xf752,
- 0xc5a7, 0xf7fd, 0xf7fc, 0xf7fb, 0xf948, 0xf949, 0xf94b, 0xf94a,
- 0xca50, 0xa6e8, 0xad6e, 0xd7c5, 0xb5f7, 0xdffa, 0xc2d0, 0xf2f2,
- 0xa8a3, 0xb357, 0xb356, 0xdbd0, 0xb5f8, 0xdbd2, 0xdbd1, 0xdffb,
- 0xb8d0, 0xe443, 0xe446, 0xe445, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf,
- 0xbfcc, 0xbfcb, 0xc1bb, 0xee79, 0xee7b, 0xee7a, 0xc2d1, 0xf2f4,
- 0xf2f3, 0xf4cc, 0xc4b1, 0xc4fd, 0xf754, 0xf753, 0xc65b, 0xa8a4,
- 0xd0af, 0xad6f, 0xd7c8, 0xd7c6, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043,
- 0xdbd3, 0xdffc, 0xe041, 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd,
- 0xe044, 0xe449, 0xe447, 0xe448, 0xe7d3, 0xe7d1, 0xe7d2, 0xeb7d,
- 0xee7c, 0xee7d, 0xc2d2, 0xf2f5, 0xf4cd, 0xc4b2, 0xf64c, 0xf755,
- 0xc5a9, 0xf7fe, 0xf94c, 0xa8a5, 0xad71, 0xad72, 0xd0b0, 0xd0b1,
- 0xad70, 0xb054, 0xb052, 0xb051, 0xb058, 0xb050, 0xb059, 0xd3dd,
- 0xb056, 0xb053, 0xb057, 0xb055, 0xb04f, 0xb35f, 0xb359, 0xd7cc,
- 0xb35e, 0xb360, 0xb35a, 0xb35b, 0xd7ca, 0xb358, 0xd7cb, 0xb35d,
- 0xd7c9, 0xb35c, 0xb644, 0xb646, 0xdbd8, 0xb645, 0xb5f9, 0xb5fd,
- 0xb8e4, 0xe049, 0xdbda, 0xb5fe, 0xdbdd, 0xdbde, 0xb643, 0xdbe0,
- 0xdbe2, 0xdbe3, 0xdbd7, 0xdbd6, 0xdbe4, 0xb642, 0xdbe1, 0xdbdf,
- 0xb640, 0xb5fb, 0xb647, 0xdbdb, 0xdbdc, 0xdbd9, 0xb641, 0xb5fc,
- 0xb5fa, 0xe048, 0xb8df, 0xb8da, 0xb8d5, 0xb8e5, 0xb8d6, 0xb8d2,
- 0xb8e1, 0xb8de, 0xb8e0, 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050,
- 0xe04d, 0xe045, 0xe04a, 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0xe047,
- 0xe04f, 0xe04b, 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, 0xe44c,
- 0xbb78, 0xbb7b, 0xe44e, 0xbba5, 0xe44d, 0xbb7d, 0xbdcf, 0xe44f,
- 0xbba4, 0xe44b, 0xbba6, 0xbb79, 0xb8db, 0xbb7c, 0xbb7a, 0xbb7e,
- 0xbba2, 0xbb77, 0xbba7, 0xbba3, 0xbba1, 0xe44a, 0xbdd6, 0xbdd2,
- 0xbdd9, 0xe7d6, 0xbdda, 0xe7e2, 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd,
- 0xbdd5, 0xe7de, 0xbdd4, 0xe7e1, 0xbdce, 0xe7df, 0xe7d5, 0xbdcd,
- 0xebaa, 0xbdd3, 0xbdd0, 0xbdd8, 0xe7d4, 0xe7d8, 0xbdcc, 0xe7d7,
- 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc, 0xe7e0, 0xe7e4, 0xbddb, 0xbfd2,
- 0xeba5, 0xebab, 0xeba8, 0xeb7e, 0xebac, 0xeba1, 0xeba7, 0xbfcd,
- 0xbfd3, 0xebad, 0xbfcf, 0xbfd9, 0xbfd4, 0xebaf, 0xeba9, 0xbfd0,
- 0xeba2, 0xbfda, 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, 0xbdd1, 0xbfce,
- 0xebb0, 0xbfdc, 0xbfd5, 0xebae, 0xbfd1, 0xbfd6, 0xbfd7, 0xc1c3,
- 0xeea4, 0xeead, 0xeeaa, 0xeeac, 0xc1c0, 0xeea5, 0xeeab, 0xc1bc,
- 0xeea7, 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2,
- 0xc1bd, 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e,
- 0xc1c1, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, 0xc2d3,
- 0xf0da, 0xc2d6, 0xc2d5, 0xf0e9, 0xf0e1, 0xf0de, 0xf0e4, 0xf0dd,
- 0xf0df, 0xf0e8, 0xf0e6, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2, 0xf0ec,
- 0xf0e3, 0xf2f9, 0xc3cf, 0xf341, 0xf64f, 0xc3d6, 0xf0e0, 0xf2f7,
- 0xc3d2, 0xf2f8, 0xf2fd, 0xc3d4, 0xc3d5, 0xf2f6, 0xf340, 0xf342,
- 0xf2fa, 0xf2fc, 0xf2fe, 0xf2fb, 0xf343, 0xc3d1, 0xc3d7, 0xc3d3,
- 0xc3d0, 0xf4d0, 0xc4b7, 0xf4ce, 0xf4d2, 0xf4d3, 0xc4b5, 0xf4d4,
- 0xf4d1, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0xc4b6, 0xc4b3, 0xc4fe,
- 0xc540, 0xf64e, 0xf64d, 0xf650, 0xf651, 0xc541, 0xf756, 0xf75b,
- 0xc5aa, 0xf758, 0xf757, 0xf75a, 0xf759, 0xf843, 0xc5dc, 0xf842,
- 0xf840, 0xf841, 0xc5fe, 0xc5fd, 0xf8c1, 0xf8c2, 0xc640, 0xf94d,
- 0xf94e, 0xc667, 0xc66d, 0xf9a9, 0xf9c8, 0xa8a6, 0xd7cd, 0xd7ce,
- 0xe052, 0xe450, 0xe7e5, 0xc1c6, 0xc1c5, 0xf0ee, 0xf344, 0xf844,
- 0xa8a7, 0xd3de, 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6,
- 0xbddd, 0xeeb1, 0xc2d7, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, 0xb362,
- 0xd7cf, 0xd7d0, 0xdbe5, 0xb648, 0xb8e6, 0xe056, 0xe055, 0xe057,
- 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0xeeb5, 0xeeb2,
- 0xeeb4, 0xeeb3, 0xc1c7, 0xf0ef, 0xf346, 0xf345, 0xcba4, 0xb05c,
- 0xb05b, 0xd3e0, 0xd7d1, 0xdbe7, 0xdbe6, 0xb649, 0xe059, 0xe05a,
- 0xe058, 0xb8e8, 0xb8e7, 0xbbaa, 0xbba9, 0xe7e7, 0xebb3, 0xebb1,
- 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0xf0f2, 0xf0f1, 0xf0f0, 0xf347,
- 0xf9aa, 0xa8a9, 0xad73, 0xad74, 0xb05d, 0xb05e, 0xd3e2, 0xd3e1,
- 0xd7d2, 0xb368, 0xb366, 0xb363, 0xb367, 0xb365, 0xb364, 0xb64a,
- 0xdbea, 0xb8ed, 0xb64c, 0xb651, 0xdbec, 0xb653, 0xb652, 0xb655,
- 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d, 0xdbe9, 0xb654, 0xb650,
- 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0, 0xb8ea, 0xb8eb, 0xb8e9,
- 0xe05b, 0xe454, 0xbbac, 0xbbad, 0xbbab, 0xe453, 0xe455, 0xe7ea,
- 0xe7ec, 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, 0xbddf, 0xbde9, 0xbde5,
- 0xbde6, 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, 0xe7eb, 0xbde8, 0xbde3,
- 0xbde4, 0xebb5, 0xebb7, 0xebb6, 0xebb8, 0xbfe0, 0xebb4, 0xc1cb,
- 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9, 0xf0f3, 0xf0f6, 0xf0f5,
- 0xf0f4, 0xc2d8, 0xf348, 0xf349, 0xc3d8, 0xf34a, 0xc3d9, 0xc4ba,
- 0xc4b9, 0xf652, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, 0xf845,
- 0xc642, 0xa8aa, 0xb36a, 0xb369, 0xe05c, 0xe05d, 0xbbae, 0xebb9,
- 0xbdea, 0xebba, 0xeeb9, 0xa8ab, 0xd0b2, 0xad76, 0xad75, 0xd3e3,
- 0xb05f, 0xd3e4, 0xd7d5, 0xd7d4, 0xd7d3, 0xdbee, 0xb658, 0xdbed,
- 0xb657, 0xdbef, 0xb656, 0xe05f, 0xe062, 0xe060, 0xe061, 0xe065,
- 0xe05e, 0xe066, 0xe063, 0xe064, 0xbbb0, 0xe456, 0xbbaf, 0xe7f2,
- 0xe7f0, 0xbdeb, 0xe7ef, 0xe7f1, 0xbdec, 0xebbb, 0xebbc, 0xc1cd,
- 0xf34c, 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, 0xf96f, 0xa8ac,
- 0xad77, 0xd3e5, 0xd3e7, 0xd3e6, 0xd7d8, 0xb36c, 0xd7d6, 0xb36b,
- 0xd7d9, 0xd7da, 0xd7d7, 0xdbfb, 0xb660, 0xdbf3, 0xdbf9, 0xb65b,
- 0xb65e, 0xdbf2, 0xb659, 0xdbf6, 0xe06c, 0xb65d, 0xdbf1, 0xdbf7,
- 0xdbf4, 0xdbfa, 0xdbf0, 0xdbf8, 0xb65c, 0xb65f, 0xdbf5, 0xb65a,
- 0xb8f2, 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8, 0xb8f9, 0xe070,
- 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0xe06b, 0xb8f4, 0xe067,
- 0xe06a, 0xe071, 0xb8f5, 0xe073, 0xb8f6, 0xbbb1, 0xe45b, 0xe461,
- 0xe459, 0xe462, 0xe458, 0xe45d, 0xe463, 0xe460, 0xe45f, 0xe45e,
- 0xe457, 0xe45c, 0xe45a, 0xbdf1, 0xbdee, 0xe7fb, 0xe841, 0xe843,
- 0xe840, 0xe7f8, 0xe7fa, 0xe845, 0xe842, 0xe7fc, 0xe846, 0xe7f9,
- 0xe844, 0xbdef, 0xbdf5, 0xbdf3, 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4,
- 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe, 0xbdf2, 0xbded, 0xe7f7, 0xebc6,
- 0xbfe2, 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0xebbf, 0xbfe5, 0xebc3,
- 0xebc4, 0xebbe, 0xebc7, 0xebc0, 0xebc5, 0xbfe4, 0xbfe1, 0xebc1,
- 0xeebf, 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb, 0xeeba,
- 0xeebd, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa, 0xc2d9, 0xf141,
- 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, 0xf0f9, 0xf142, 0xf0f8,
- 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, 0xf144, 0xf352, 0xc3de,
- 0xf34f, 0xf353, 0xc3db, 0xf351, 0xc3e0, 0xc3dd, 0xf350, 0xc3df,
- 0xf354, 0xc3da, 0xc4bc, 0xc4be, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc,
- 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0xf761,
- 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, 0xf846,
- 0xf75f, 0xf8c6, 0xf8c3, 0xf8c4, 0xf8c5, 0xc65c, 0xf951, 0xf950,
- 0xf94f, 0xf970, 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060, 0xb8fa,
- 0xbdf6, 0xebc8, 0xc2df, 0xf355, 0xf9ac, 0xa8ae, 0xaaee, 0xad79,
- 0xad78, 0xb063, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0xd7df, 0xd7db,
- 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, 0xd7e0, 0xd7e1, 0xdc43,
- 0xdc41, 0xdc45, 0xdc46, 0xdc4c, 0xdc48, 0xdc4a, 0xdc42, 0xdbfc,
- 0xdc49, 0xdc4b, 0xdc44, 0xdc47, 0xdbfd, 0xb662, 0xdc40, 0xdbfe,
- 0xb661, 0xb663, 0xb8fd, 0xe075, 0xe077, 0xe076, 0xe07b, 0xb8fb,
- 0xe078, 0xe074, 0xe079, 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0xe467,
- 0xe466, 0xe464, 0xe465, 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d,
- 0xe84e, 0xe849, 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9,
- 0xe84b, 0xe84c, 0xe848, 0xbe40, 0xbdfb, 0xbdfa, 0xbdfc, 0xe847,
- 0xebca, 0xbfe8, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce,
- 0xbfe9, 0xebcd, 0xbfe7, 0xc1d3, 0xc1d6, 0xeec1, 0xc1d4, 0xeec0,
- 0xc1d2, 0xc1d5, 0xf146, 0xf147, 0xf148, 0xc2e0, 0xf149, 0xc2e1,
- 0xc3e2, 0xf358, 0xf359, 0xf357, 0xf356, 0xf35a, 0xc3e1, 0xf4dd,
- 0xf4db, 0xf4dc, 0xf4de, 0xf4da, 0xf4df, 0xf658, 0xf659, 0xf657,
- 0xc546, 0xf764, 0xc5af, 0xf765, 0xf848, 0xf847, 0xa8af, 0xb664,
- 0xb940, 0xbbb6, 0xbfec, 0xbfeb, 0xc3e3, 0xc47c, 0xc547, 0xa8b0,
- 0xb064, 0xb941, 0xf35b, 0xcba6, 0xa8b1, 0xa8b4, 0xa8b3, 0xa8b2,
- 0xcba5, 0xcdcd, 0xcdcf, 0xaaef, 0xaaf1, 0xcdcc, 0xcdce, 0xaaf0,
- 0xcdd1, 0xcdd0, 0xcdd2, 0xd0b6, 0xd0b4, 0xad7c, 0xd0b3, 0xada3,
- 0xad7e, 0xad7b, 0xada4, 0xad7d, 0xada2, 0xada1, 0xd0b5, 0xad7a,
- 0xb06a, 0xd3eb, 0xd3f1, 0xb067, 0xb06e, 0xb069, 0xd3ee, 0xd3f0,
- 0xb06c, 0xd3ea, 0xd3ed, 0xb068, 0xb065, 0xd3ec, 0xb06b, 0xd3ef,
- 0xb06d, 0xb066, 0xd7e3, 0xd7e6, 0xb370, 0xb37a, 0xb376, 0xd7e4,
- 0xb37e, 0xb377, 0xb37c, 0xb372, 0xb36f, 0xb371, 0xb37d, 0xd7e5,
- 0xb375, 0xb378, 0xb374, 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2,
- 0xdc4d, 0xb665, 0xdc4f, 0xb667, 0xb669, 0xdc4e, 0xb666, 0xb66a,
- 0xb668, 0xb947, 0xe0a3, 0xb94f, 0xe07e, 0xb950, 0xb945, 0xe0a1,
- 0xb94a, 0xe0a2, 0xb943, 0xb942, 0xb94d, 0xb94c, 0xb94b, 0xb949,
- 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0xbbb8, 0xbbbb, 0xbbbf,
- 0xbbb9, 0xbbbe, 0xbbbc, 0xbbb7, 0xbbbd, 0xbbba, 0xe852, 0xbe43,
- 0xbe41, 0xe853, 0xbe44, 0xbe42, 0xe851, 0xe850, 0xbff0, 0xe84f,
- 0xbfee, 0xbfed, 0xebd0, 0xbe45, 0xbfef, 0xebd1, 0xbff2, 0xebd2,
- 0xbff1, 0xc1d8, 0xeec3, 0xc1d7, 0xc1dc, 0xc1da, 0xc1db, 0xc2e3,
- 0xc1d9, 0xeec2, 0xebd3, 0xc2e2, 0xc2e4, 0xc3e4, 0xc3e5, 0xf4e0,
- 0xc5de, 0xc5dd, 0xa8b6, 0xca55, 0xb06f, 0xca52, 0xca53, 0xca51,
- 0xca54, 0xcbaa, 0xcba7, 0xcbac, 0xcba8, 0xa8b7, 0xa8ba, 0xcba9,
- 0xa8b9, 0xcbab, 0xa8b8, 0xcdd5, 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6,
- 0xcdd4, 0xaaf2, 0xaaf5, 0xaaf3, 0xd0b8, 0xd0bc, 0xd0b9, 0xada7,
- 0xada8, 0xd0bb, 0xd0bd, 0xd0bf, 0xada5, 0xd0be, 0xada6, 0xd7ee,
- 0xd0ba, 0xd3f2, 0xd3fb, 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc,
- 0xb071, 0xd3f7, 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8,
- 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0xd7e8, 0xd7ea,
- 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0xdc56, 0xebd4, 0xdc57,
- 0xdc54, 0xb3a3, 0xb66e, 0xdc53, 0xdc59, 0xdc58, 0xb66b, 0xdc5c,
- 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, 0xdc55, 0xb66d, 0xe0aa, 0xe0a5,
- 0xe0ab, 0xe0a6, 0xe0a4, 0xe0a7, 0xb951, 0xe0a9, 0xe0a8, 0xb952,
- 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c,
- 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0xe859, 0xbe48, 0xf14a,
- 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, 0xbe46,
- 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0xeec4, 0xc1dd,
- 0xf14b, 0xf14c, 0xf14d, 0xf35d, 0xf35c, 0xf4e2, 0xf4e1, 0xf65b,
- 0xf65c, 0xf65a, 0xf766, 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075,
- 0xb074, 0xd440, 0xd441, 0xd3fe, 0xb073, 0xd7f5, 0xd7f6, 0xd7f2,
- 0xb3a4, 0xd7f3, 0xd7f4, 0xdc5f, 0xdc61, 0xdc5d, 0xdc60, 0xb66f,
- 0xdc5e, 0xb670, 0xdd73, 0xb955, 0xb954, 0xb953, 0xe0ac, 0xe0ad,
- 0xe473, 0xe475, 0xbbc6, 0xbbc3, 0xbbc5, 0xbbc4, 0xe474, 0xe472,
- 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a,
- 0xbe4b, 0xe85d, 0xbe4c, 0xebdb, 0xebdc, 0xebd9, 0xebda, 0xbff4,
- 0xebd8, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb, 0xc1df, 0xeec9,
- 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0xf14f, 0xf150, 0xf14e, 0xf152,
- 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151, 0xf35e, 0xc3e6, 0xf4e5,
- 0xf4e6, 0xc4bf, 0xf4e4, 0xf4e3, 0xf65d, 0xc548, 0xf849, 0xf8c8,
- 0xf8c7, 0xc643, 0xc65d, 0xf8c9, 0xf971, 0xc66f, 0xa8bc, 0xaaf6,
- 0xb956, 0xc4c0, 0xa8bd, 0xadab, 0xb3a5, 0xb671, 0xc2e7, 0xaaf7,
- 0xd0c1, 0xd0c0, 0xd442, 0xb078, 0xb076, 0xb07a, 0xd444, 0xb079,
- 0xb077, 0xd443, 0xb3a8, 0xd7fc, 0xb3a7, 0xb3a9, 0xd842, 0xb3ab,
- 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0xd7f9, 0xd7fa, 0xd7f8,
- 0xb3a6, 0xd841, 0xd7fb, 0xd7fd, 0xdc6d, 0xdc6c, 0xdc6a, 0xdc62,
- 0xdc71, 0xdc65, 0xdc6f, 0xdc76, 0xdc6e, 0xb679, 0xb675, 0xdc63,
- 0xdc69, 0xb677, 0xdc68, 0xb678, 0xb67a, 0xdc6b, 0xb672, 0xb673,
- 0xdc77, 0xdc75, 0xdc74, 0xdc66, 0xdc72, 0xb676, 0xb674, 0xdc73,
- 0xdc64, 0xdc67, 0xdc70, 0xe4ba, 0xe0b7, 0xe0b0, 0xe0c3, 0xe0cc,
- 0xe0b3, 0xb961, 0xe0c0, 0xb957, 0xb959, 0xb965, 0xe0b1, 0xb95a,
- 0xb95c, 0xb966, 0xb95b, 0xb964, 0xe0b9, 0xe0ae, 0xb962, 0xe0b8,
- 0xb95e, 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, 0xe0c6, 0xb960, 0xe0af,
- 0xe0c9, 0xe0c4, 0xe0cb, 0xb958, 0xb967, 0xb95d, 0xe0b5, 0xe0bd,
- 0xe0c1, 0xe0c5, 0xb95f, 0xe0b4, 0xe0b2, 0xe0be, 0xe0bb, 0xe0ba,
- 0xe0bf, 0xe0c2, 0xe0c7, 0xe478, 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc,
- 0xbbd0, 0xe4ad, 0xe4b5, 0xe4a6, 0xbbc8, 0xe4aa, 0xe0b6, 0xbbc9,
- 0xe4b1, 0xe4b6, 0xe4ae, 0xe4b0, 0xe4b9, 0xe4b2, 0xe47e, 0xe4a9,
- 0xbbd1, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb, 0xe4a5, 0xbbca, 0xe4b3,
- 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0xe47b, 0xe4af, 0xe4ac, 0xe4a7,
- 0xe477, 0xe476, 0xe4a1, 0xe4b4, 0xbbcf, 0xe4b7, 0xe47d, 0xe4a3,
- 0xbe52, 0xbe5a, 0xbe55, 0xe8a4, 0xe8a1, 0xe867, 0xbe50, 0xbe4f,
- 0xbe56, 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e, 0xe8a3,
- 0xbe58, 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877, 0xe875,
- 0xe868, 0xe862, 0xe87d, 0xbe57, 0xe87e, 0xe878, 0xe86d, 0xe86b,
- 0xe866, 0xe86e, 0xe87b, 0xe86a, 0xe87a, 0xe8a2, 0xbe53, 0xe876,
- 0xe87c, 0xe872, 0xe86c, 0xbe51, 0xe4a8, 0xe870, 0xbe59, 0xe869,
- 0xebf4, 0xbff7, 0xebf3, 0xebf0, 0xec44, 0xbffb, 0xec41, 0xebf8,
- 0xec43, 0xebe9, 0xebf6, 0xbffd, 0xebe1, 0xebdf, 0xec42, 0xec40,
- 0xebfe, 0xebed, 0xebec, 0xebe2, 0xc040, 0xebe8, 0xebf2, 0xebfd,
- 0xc043, 0xec45, 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0xebef, 0xebde,
- 0xebe0, 0xbff5, 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041,
- 0xebdd, 0xc1e3, 0xebf9, 0xebfc, 0xbffc, 0xebeb, 0xc044, 0xbff9,
- 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0xebe4, 0xebfa, 0xebe5, 0xebea,
- 0xeed2, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3,
- 0xeed8, 0xeed9, 0xeee2, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, 0xeed4,
- 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0xeee8, 0xeeda, 0xeee7, 0xeee9,
- 0xeed0, 0xc1e6, 0xeeea, 0xeede, 0xc1ea, 0xeedb, 0xc1ec, 0xeee4,
- 0xc1e4, 0xeed6, 0xeee5, 0xeedf, 0xebe3, 0xeee6, 0xeed3, 0xc1e9,
- 0xeeeb, 0xc1e2, 0xeece, 0xf160, 0xf159, 0xc2e9, 0xf154, 0xf163,
- 0xf15b, 0xeedc, 0xf165, 0xf155, 0xc2e8, 0xf15f, 0xc2ea, 0xc2f2,
- 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0xf158, 0xf15d, 0xf162, 0xeecd,
- 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e, 0xf15a, 0xf168, 0xf36a,
- 0xf15c, 0xc2ee, 0xc2ed, 0xeecf, 0xc2ef, 0xf164, 0xf166, 0xc2ec,
- 0xf169, 0xf153, 0xf156, 0xf373, 0xf363, 0xc3eb, 0xf371, 0xf361,
- 0xc3ec, 0xf36c, 0xf368, 0xc3f1, 0xf372, 0xf362, 0xf365, 0xc3e9,
- 0xf374, 0xf36d, 0xf370, 0xc3ef, 0xc3f4, 0xc3f2, 0xf369, 0xf364,
- 0xc3ed, 0xc3ee, 0xf360, 0xc3ea, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3,
- 0xf36b, 0xf375, 0xc3f5, 0xf367, 0xf36e, 0xf4f3, 0xf542, 0xf4f5,
- 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed, 0xf4fe,
- 0xf4f4, 0xc4c2, 0xf544, 0xf4f6, 0xf4fb, 0xf4fd, 0xf4e7, 0xf541,
- 0xf4f2, 0xf4f7, 0xf4eb, 0xf4ef, 0xf543, 0xf4f9, 0xf4e8, 0xf4ec,
- 0xf4ee, 0xf4f8, 0xc4c1, 0xf4f1, 0xf4ea, 0xf4f0, 0xf661, 0xf666,
- 0xc54f, 0xf668, 0xc549, 0xf664, 0xf66a, 0xc54e, 0xc54a, 0xc54b,
- 0xf660, 0xf667, 0xc54d, 0xf665, 0xc54c, 0xf65f, 0xf663, 0xf662,
- 0xf65e, 0xf669, 0xc5b1, 0xf76d, 0xf770, 0xf76c, 0xf76e, 0xf76f,
- 0xf769, 0xf76a, 0xf767, 0xf76b, 0xf768, 0xc5b2, 0xc5b3, 0xf84b,
- 0xf84d, 0xf84c, 0xf84e, 0xc5e0, 0xf84a, 0xc5df, 0xc5e1, 0xf8cb,
- 0xf8cc, 0xc644, 0xf8ca, 0xf953, 0xf952, 0xf954, 0xc65f, 0xf955,
- 0xc65e, 0xf956, 0xf972, 0xf975, 0xf974, 0xc668, 0xf973, 0xc672,
- 0xc670, 0xc671, 0xc677, 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0xaaf8,
- 0xd844, 0xdc78, 0xe8a5, 0xf376, 0xaaf9, 0xadac, 0xb07b, 0xd845,
- 0xd846, 0xb3ac, 0xb67d, 0xdc7a, 0xdc79, 0xb6a3, 0xb67c, 0xdc7b,
- 0xb67e, 0xb6a2, 0xb6a1, 0xb67b, 0xb968, 0xe0d0, 0xe0ce, 0xe0cf,
- 0xe0cd, 0xbbd2, 0xbbd5, 0xbbd7, 0xbbd6, 0xbbd3, 0xbbd4, 0xe8a7,
- 0xe8a6, 0xbe5b, 0xe8a8, 0xe8a9, 0xbe5c, 0xec4d, 0xec4b, 0xeef3,
- 0xec49, 0xec4a, 0xc046, 0xec46, 0xec4e, 0xec48, 0xec4c, 0xeeef,
- 0xeef1, 0xeef2, 0xc1f3, 0xeeee, 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0,
- 0xc1f1, 0xec47, 0xc2f5, 0xf16e, 0xf16c, 0xf16d, 0xc2f3, 0xc2f6,
- 0xc2f4, 0xf377, 0xf378, 0xc3f6, 0xf545, 0xf547, 0xf546, 0xc4c4,
- 0xc550, 0xf66d, 0xf66c, 0xf66b, 0xaafa, 0xc9aa, 0xca58, 0xa6e9,
- 0xca56, 0xca59, 0xca57, 0xcbae, 0xa8c1, 0xa8c2, 0xcbb0, 0xa8bf,
- 0xcbaf, 0xcbad, 0xa8c0, 0xa8be, 0xcdd8, 0xcddb, 0xaafd, 0xcdda,
- 0xcdd9, 0xaafc, 0xaafb, 0xab40, 0xcddc, 0xaafe, 0xd0c6, 0xadae,
- 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, 0xadad, 0xd0c4, 0xd0c5, 0xd0c2,
- 0xb0a4, 0xb0a1, 0xd445, 0xb0a2, 0xb0a5, 0xd446, 0xb07e, 0xb07c,
- 0xb07d, 0xb0a3, 0xb3ad, 0xd849, 0xb3b5, 0xd848, 0xd84b, 0xb3b1,
- 0xd84a, 0xb6ab, 0xb3af, 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, 0xb3b0,
- 0xd847, 0xb6a7, 0xdc7d, 0xdca3, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9,
- 0xdc7c, 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0xb6aa, 0xb6a5, 0xe0d3,
- 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0xe0d4, 0xb969, 0xbbd8, 0xbbda,
- 0xbbd9, 0xe4bb, 0xe4bc, 0xe8ab, 0xe8aa, 0xc047, 0xc048, 0xec4f,
- 0xc049, 0xeef6, 0xeef4, 0xeef5, 0xc1f4, 0xf16f, 0xc3f7, 0xc1f5,
- 0xab41, 0xb0a6, 0xd447, 0xd84c, 0xb3b6, 0xb6ad, 0xdca4, 0xdca6,
- 0xb6af, 0xb6ae, 0xb6b0, 0xb6b1, 0xdca5, 0xb96e, 0xb96f, 0xb96d,
- 0xbbdb, 0xb96c, 0xe0d5, 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6,
- 0xf170, 0xf174, 0xc2f9, 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb,
- 0xf173, 0xf379, 0xc2f7, 0xc3f8, 0xf8cd, 0xab42, 0xb3b8, 0xb3b7,
- 0xb6b2, 0xdca8, 0xdca7, 0xb6b3, 0xe0d9, 0xb973, 0xb970, 0xe0d8,
- 0xb972, 0xe0d6, 0xb971, 0xe0d7, 0xe4bd, 0xbbdd, 0xe8af, 0xbe5d,
- 0xe8ad, 0xbe5e, 0xbe5f, 0xe8ae, 0xbe60, 0xec51, 0xc04e, 0xc04b,
- 0xc050, 0xec53, 0xc04c, 0xec52, 0xc04f, 0xc04d, 0xeef9, 0xeefb,
- 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, 0xeef7, 0xf177, 0xf176, 0xc2fc,
- 0xf178, 0xf37e, 0xc3fa, 0xf37d, 0xf37a, 0xc3f9, 0xf37b, 0xf37c,
- 0xf548, 0xf549, 0xc4c5, 0xc553, 0xf66e, 0xc551, 0xc552, 0xf66f,
- 0xc5b4, 0xc5b5, 0xf771, 0xc645, 0xf8cf, 0xc647, 0xf8ce, 0xf8d0,
- 0xc646, 0xf957, 0xf9ad, 0xab43, 0xb974, 0xe4be, 0xe8b0, 0xc051,
- 0xc052, 0xab44, 0xbe61, 0xc3fb, 0xadb1, 0xc053, 0xc5e2, 0xadb2,
- 0xd84d, 0xdca9, 0xdcab, 0xdcaa, 0xe0dd, 0xe0da, 0xb975, 0xb976,
- 0xe0db, 0xe0dc, 0xe4c0, 0xe4c5, 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8,
- 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2, 0xe4c6, 0xbbdf, 0xe8b3, 0xe8b1,
- 0xbe63, 0xbe62, 0xe8b2, 0xbe64, 0xec56, 0xec55, 0xc054, 0xec54,
- 0xeefc, 0xeefe, 0xef41, 0xef40, 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd,
- 0xf17d, 0xf1a2, 0xc2fe, 0xf17b, 0xf17e, 0xf17c, 0xf179, 0xc340,
- 0xf17a, 0xf3a1, 0xf3a3, 0xf3a2, 0xf54a, 0xf54b, 0xf670, 0xc5b7,
- 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, 0xc669, 0xadb3, 0xb6b4,
- 0xe4ca, 0xe4c9, 0xe8b5, 0xe8b4, 0xc1fa, 0xef43, 0xef42, 0xf1a5,
- 0xf1a3, 0xf1a6, 0xf1a4, 0xc3fc, 0xf3a4, 0xf3a5, 0xf3a6, 0xf671,
- 0xf772, 0xf8d2, 0xadb4, 0xec57, 0xef44, 0xadb5, 0xbbe0, 0xec58,
- 0xc341, 0xf1a7, 0xc3fd, 0xf54c, 0xf54d, 0xc554, 0xf851, 0xadb6,
- 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, 0xb6b7, 0xb97a,
- 0xb97c, 0xe0df, 0xe0e0, 0xe0de, 0xb977, 0xb978, 0xb97b, 0xb979,
- 0xe4cb, 0xbbe1, 0xbbe2, 0xe8bc, 0xbe67, 0xe8b7, 0xe8b6, 0xe8bb,
- 0xbe65, 0xc05b, 0xe8b8, 0xe8bd, 0xe8ba, 0xe8b9, 0xbe66, 0xc059,
- 0xec5a, 0xc055, 0xec5b, 0xec59, 0xc058, 0xc056, 0xc05a, 0xc057,
- 0xef45, 0xef4a, 0xef46, 0xef49, 0xc1fb, 0xedd4, 0xef48, 0xef47,
- 0xc344, 0xc342, 0xc345, 0xc343, 0xf1a8, 0xf1a9, 0xf1aa, 0xc346,
- 0xf3aa, 0xc440, 0xf3a8, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe, 0xf551,
- 0xf54e, 0xf54f, 0xf550, 0xf672, 0xc556, 0xc555, 0xf774, 0xf773,
- 0xc5b8, 0xc5e3, 0xc649, 0xc660, 0xf958, 0xf9ae, 0xf9af, 0xadb7,
- 0xdcad, 0xe0e1, 0xe4cc, 0xe4cd, 0xbbe3, 0xbbe4, 0xe8be, 0xbe68,
- 0xc1fc, 0xf1ab, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab,
- 0xf675, 0xf552, 0xf553, 0xc4c6, 0xf674, 0xf673, 0xf775, 0xf9b0,
- 0xadb8, 0xadb9, 0xb0a7, 0xd448, 0xd84f, 0xb6b8, 0xb6bb, 0xb6b9,
- 0xdcae, 0xb6bd, 0xb6ba, 0xb6bc, 0xb97e, 0xe0e2, 0xe0e3, 0xe8c0,
- 0xb97d, 0xb9a1, 0xb9a2, 0xe4cf, 0xe4ce, 0xbbe5, 0xbbe6, 0xe4d0,
- 0xe8bf, 0xbbe8, 0xbe69, 0xbbe7, 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a,
- 0xe8c2, 0xe8c5, 0xe8c3, 0xe8c4, 0xbe6c, 0xc061, 0xc05f, 0xc05e,
- 0xec5d, 0xc060, 0xec5c, 0xef4b, 0xec5e, 0xc05d, 0xec5f, 0xef4e,
- 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, 0xef54, 0xef53, 0xef50,
- 0xef4f, 0xc1fd, 0xf1ae, 0xf1ad, 0xc34a, 0xc348, 0xc349, 0xf1ac,
- 0xf3b1, 0xc443, 0xf3b0, 0xf3af, 0xc444, 0xf558, 0xf557, 0xf555,
- 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557,
- 0xf676, 0xf556, 0xf777, 0xc5e4, 0xc661, 0xf959, 0xf9b1, 0xadba,
- 0xd850, 0xef55, 0xadbb, 0xe4d2, 0xe4d1, 0xec60, 0xef57, 0xef56,
- 0xc34c, 0xf3b2, 0xf3b3, 0xc4c9, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be,
- 0xe0e4, 0xe0e6, 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0xe4d4,
- 0xe4d6, 0xe4d5, 0xe4d8, 0xbbe9, 0xe4d7, 0xe4d3, 0xe4d9, 0xe8cc,
- 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, 0xbe6e, 0xbe71, 0xbe73,
- 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, 0xe8ce, 0xbe74, 0xbe70,
- 0xe8c6, 0xbe6d, 0xbe6f, 0xc063, 0xec66, 0xec64, 0xec63, 0xec69,
- 0xec68, 0xec67, 0xec62, 0xc062, 0xec61, 0xec65, 0xc064, 0xef5a,
- 0xef5e, 0xef5b, 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60,
- 0xef61, 0xc240, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8,
- 0xf1b7, 0xf1b1, 0xf1b5, 0xf1b0, 0xf1b2, 0xc34d, 0xf1af, 0xf1b4,
- 0xf3c0, 0xf3b5, 0xc445, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf, 0xf3b7,
- 0xf3be, 0xf3bb, 0xf3ba, 0xf3bd, 0xf3b8, 0xf3b6, 0xf3bc, 0xf560,
- 0xf55e, 0xc4ca, 0xf55d, 0xf563, 0xf561, 0xc4cb, 0xf55c, 0xf55a,
- 0xf55b, 0xc4cd, 0xf55f, 0xc4cc, 0xf562, 0xf678, 0xf67e, 0xf679,
- 0xc55b, 0xf6a1, 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558,
- 0xf67a, 0xf77d, 0xf7a1, 0xf77e, 0xf77b, 0xc5bb, 0xf778, 0xf77c,
- 0xf7a3, 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, 0xf853,
- 0xc5e5, 0xc5e6, 0xf8d3, 0xc64a, 0xf976, 0xc66a, 0xf9b3, 0xc66b,
- 0xf9b4, 0xf9b5, 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd, 0xb0a9, 0xe0e9,
- 0xe0e8, 0xbbea, 0xbbeb, 0xe4da, 0xe8d2, 0xec6c, 0xbe75, 0xc065,
- 0xec6a, 0xec6d, 0xc066, 0xef64, 0xec6b, 0xf1b9, 0xc34e, 0xf3c1,
- 0xf566, 0xf564, 0xf565, 0xf6a2, 0xc55c, 0xf7a4, 0xc5ea, 0xc5bc,
- 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xb0aa, 0xf1ba, 0xd449, 0xb9a6,
- 0xe4db, 0xbbec, 0xe4dc, 0xe8d4, 0xe8d3, 0xc068, 0xbe76, 0xbe77,
- 0xe8d7, 0xe8d6, 0xe8d5, 0xec6e, 0xec71, 0xec70, 0xec6f, 0xc067,
- 0xef68, 0xef66, 0xef65, 0xef67, 0xc34f, 0xf1bc, 0xf1bd, 0xc350,
- 0xf1bb, 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0xf567, 0xf569,
- 0xf568, 0xf6a3, 0xf6a6, 0xf6a4, 0xf6a5, 0xf7a5, 0xc5bd, 0xf854,
- 0xf855, 0xf856, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0xbe78, 0xc069,
- 0xf1be, 0xf7a6, 0xf9c4, 0xd44a, 0xc67b, 0xb0ac, 0xec72, 0xf1bf,
- 0xf3c6, 0xf6a7, 0xf7a7, 0xb0ad, 0xe4dd, 0xe4de, 0xbbed, 0xbbee,
- 0xe8d9, 0xbe7a, 0xbe79, 0xe8d8, 0xef69, 0xf1c0, 0xf1c2, 0xf1c1,
- 0xc353, 0xc352, 0xc351, 0xc55e, 0xf6a8, 0xc55d, 0xf7a9, 0xf7a8,
- 0xc64c, 0xf8d5, 0xb3bd, 0xe0ea, 0xe4e1, 0xe4df, 0xe4e0, 0xe8e2,
- 0xe8dd, 0xe8da, 0xe8e1, 0xe8e3, 0xbe7c, 0xe8e0, 0xe8dc, 0xe8db,
- 0xe8df, 0xe8de, 0xbe7b, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77,
- 0xec73, 0xec79, 0xec74, 0xef72, 0xec75, 0xeca2, 0xec7c, 0xc06a,
- 0xec7b, 0xec7a, 0xec7e, 0xef6a, 0xef6d, 0xef6c, 0xef74, 0xef6f,
- 0xef73, 0xef71, 0xef70, 0xef6e, 0xef6b, 0xc243, 0xc242, 0xc244,
- 0xc241, 0xef75, 0xf1c8, 0xf1cb, 0xf1c9, 0xf1cd, 0xf1ce, 0xf1c6,
- 0xc358, 0xf1c7, 0xf1c5, 0xf1cc, 0xf1c4, 0xf1c3, 0xc357, 0xc355,
- 0xc354, 0xf1ca, 0xf3cf, 0xf3d5, 0xc44a, 0xf3d0, 0xf3d3, 0xf3d7,
- 0xc44b, 0xf3d2, 0xf3ca, 0xf3c9, 0xf3d6, 0xf3cd, 0xf3cb, 0xf3d4,
- 0xf3cc, 0xc449, 0xc448, 0xf3c7, 0xf3c8, 0xf3d1, 0xf3ce, 0xf56c,
- 0xf56f, 0xc356, 0xf56d, 0xf573, 0xf571, 0xf56b, 0xf576, 0xf56a,
- 0xc4cf, 0xf572, 0xf56e, 0xc4ce, 0xf575, 0xf574, 0xf6ab, 0xf6aa,
- 0xf6b1, 0xf6ad, 0xf6b0, 0xc560, 0xf6ae, 0xf6af, 0xf6a9, 0xf6ac,
- 0xc55f, 0xc5bf, 0xf7b4, 0xf7af, 0xf7b3, 0xf7b6, 0xf7b2, 0xf7ae,
- 0xc5c1, 0xf7b1, 0xf7b5, 0xc5c0, 0xf7ac, 0xf570, 0xf7b0, 0xf7ad,
- 0xf7aa, 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860,
- 0xf859, 0xf857, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, 0xf858, 0xf85e,
- 0xf8da, 0xc64d, 0xf8db, 0xf8d9, 0xf8d6, 0xf8d8, 0xf8d7, 0xf95a,
- 0xf95c, 0xf95b, 0xf979, 0xf978, 0xf977, 0xf97a, 0xc673, 0xc674,
- 0xf9ca, 0xf9ce, 0xb3be, 0xdcaf, 0xe0ed, 0xb9a7, 0xe0eb, 0xe0ec,
- 0xe4e2, 0xe4e3, 0xbbf1, 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, 0xe8eb,
- 0xe8e5, 0xe8ec, 0xe8e4, 0xe8e6, 0xe8e7, 0xe8ea, 0xbea1, 0xe8ef,
- 0xe8ee, 0xbe7d, 0xe8e9, 0xe8ed, 0xbe7e, 0xecac, 0xc06f, 0xeca7,
- 0xc06b, 0xeca4, 0xecaa, 0xecad, 0xc070, 0xeca9, 0xeca6, 0xecae,
- 0xeca5, 0xecab, 0xc06c, 0xeca3, 0xc06d, 0xc06e, 0xeca8, 0xefa9,
- 0xef7a, 0xef7b, 0xef7e, 0xef7c, 0xef76, 0xef79, 0xefa5, 0xef7d,
- 0xc245, 0xefa7, 0xefa4, 0xc246, 0xefa6, 0xef77, 0xefa2, 0xefa3,
- 0xefa1, 0xf1d2, 0xf1d4, 0xf1d7, 0xf1d1, 0xc359, 0xf1d9, 0xf1d0,
- 0xf1da, 0xf1d6, 0xf1d8, 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf,
- 0xc35a, 0xf1db, 0xc35b, 0xc44d, 0xef78, 0xf3f1, 0xf3e8, 0xc44f,
- 0xf3e4, 0xc450, 0xf3ed, 0xf3e7, 0xf3dd, 0xc44e, 0xf3ea, 0xf3e5,
- 0xf3e6, 0xf3d8, 0xf3df, 0xf3ee, 0xf3eb, 0xf3e3, 0xf3ef, 0xf3de,
- 0xf3d9, 0xf3ec, 0xf3db, 0xf3e9, 0xf3e0, 0xf3f0, 0xf3dc, 0xc44c,
- 0xf3da, 0xf3e1, 0xf3e2, 0xf57d, 0xf57b, 0xf5a2, 0xf5ae, 0xf5a5,
- 0xf57c, 0xf578, 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577,
- 0xf5a1, 0xf5a6, 0xf5a8, 0xf5ab, 0xf579, 0xf5af, 0xf5b0, 0xf5a9,
- 0xf5ad, 0xf5a4, 0xf6c1, 0xf6c4, 0xc561, 0xf6c3, 0xf6c8, 0xf6c6,
- 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, 0xc564, 0xf6bf, 0xf6c0, 0xf6bc,
- 0xf6b4, 0xf6b9, 0xf5ac, 0xf6b5, 0xc563, 0xf6bb, 0xf6ba, 0xf6b6,
- 0xf6c2, 0xf6b7, 0xf7bb, 0xf6c5, 0xf6c7, 0xf6be, 0xf6b8, 0xf7bc,
- 0xf7be, 0xf7b8, 0xc5c2, 0xf7c5, 0xf7c3, 0xc5c3, 0xf7c2, 0xf7c1,
- 0xf7ba, 0xf7b7, 0xf7bd, 0xf7c6, 0xf7b9, 0xf7bf, 0xf869, 0xf86e,
- 0xf864, 0xf867, 0xc5ee, 0xf86b, 0xf872, 0xf7c0, 0xf865, 0xf86f,
- 0xf873, 0xf86a, 0xf863, 0xf86d, 0xf86c, 0xf871, 0xf870, 0xf7c4,
- 0xf868, 0xf862, 0xf866, 0xc64e, 0xc64f, 0xf861, 0xf8e6, 0xf8dd,
- 0xf8e5, 0xf8e2, 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0,
- 0xf8de, 0xf8e4, 0xf95d, 0xf95e, 0xf960, 0xf95f, 0xf962, 0xf961,
- 0xf97c, 0xf97b, 0xf9b7, 0xf9b8, 0xf9c5, 0xc678, 0xc67c, 0xf9cf,
- 0xc67d, 0xb3bf, 0xc4d0, 0xf6c9, 0xc650, 0xc651, 0xb3c0, 0xe0ee,
- 0xb9a8, 0xe8f0, 0xecb0, 0xecb1, 0xecaf, 0xefab, 0xefaa, 0xc247,
- 0xf1df, 0xefac, 0xf1de, 0xf3f3, 0xc451, 0xc453, 0xf3f2, 0xc452,
- 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca, 0xc565, 0xc5ef, 0xf8e8, 0xf963,
- 0xf9d2, 0xb3c1, 0xe4e5, 0xbea2, 0xecb3, 0xecb2, 0xefad, 0xc454,
- 0xc4d1, 0xf7c7, 0xf9cb, 0xb3c2, 0xbbf2, 0xbea3, 0xf3f4, 0xf874,
- 0xb6c0, 0xefae, 0xc664, 0xb6c1, 0xbea4, 0xc248, 0xf875, 0xb6c2,
- 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0xc071, 0xefaf, 0xc24c, 0xc24a,
- 0xc24b, 0xc249, 0xf1e0, 0xc35c, 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6,
- 0xc4d2, 0xf6cb, 0xf6cd, 0xf6cc, 0xc566, 0xf7c8, 0xf876, 0xf877,
- 0xc5f0, 0xf964, 0xf97d, 0xc675, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5,
- 0xe0ef, 0xefb1, 0xf1e2, 0xf1e1, 0xf878, 0xc652, 0xf965, 0xf97e,
- 0xb9a9, 0xe8f2, 0xe8f3, 0xecb7, 0xb9aa, 0xc35d, 0xf1e3, 0xf6cf,
- 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0xf8e9, 0xb9ab, 0xefb4, 0xefb3,
- 0xefb2, 0xf1e4, 0xf1e8, 0xf1e7, 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6,
- 0xf5b9, 0xc4d3, 0xf5b8, 0xf6d1, 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9,
- 0xf87c, 0xf87b, 0xf87a, 0xbbf3, 0xecb8, 0xc24d, 0xf3f7, 0xf3f8,
- 0xf7cc, 0xf87d, 0xf8ea, 0xf966, 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e,
- 0xf1e9, 0xf3f9, 0xf6d2, 0xf87e, 0xbea6, 0xefb5, 0xf1ea, 0xf3fa,
- 0xf3fb, 0xf3fc, 0xf5be, 0xf5ba, 0xc568, 0xf5bd, 0xf5bc, 0xc4d4,
- 0xf5bb, 0xc4d6, 0xc4d5, 0xf6d4, 0xf6d3, 0xc569, 0xc56a, 0xc5c6,
- 0xf7cd, 0xc5c5, 0xf8a3, 0xf8a4, 0xf8a2, 0xf8a1, 0xc654, 0xf8eb,
- 0xf8ec, 0xf8ed, 0xc653, 0xf967, 0xf96a, 0xf969, 0xf968, 0xf9d3,
- 0xc073, 0xc365, 0xf5bf, 0xf6d5, 0xc5c7, 0xf7ce, 0xf9d5, 0xc074,
- 0xefb6, 0xf7cf, 0xf9a1, 0xc94a, 0xddfc, 0xa14a, 0xa157, 0xa159,
- 0xa15b, 0xa15f, 0xa160, 0xa163, 0xa164, 0xa167, 0xa168, 0xa16b,
- 0xa16c, 0xa16f, 0xa170, 0xa173, 0xa174, 0xa177, 0xa178, 0xa17b,
- 0xa17c, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb, 0xa1c8, 0xa1c9, 0xa15c,
- 0xa14d, 0xa14f, 0xa151, 0xa152, 0xa153, 0xa154, 0xa17d, 0xa17e,
- 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1cc, 0xa1cd, 0xa1ce, 0xa1de,
- 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2, 0xa24c, 0xa24d, 0xa24e, 0xa149,
- 0xa1ad, 0xa243, 0xa248, 0xa1ae, 0xa15d, 0xa15e, 0xa1af, 0xa1cf,
- 0xa141, 0xa1d0, 0xa144, 0xa241, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2,
- 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146,
- 0xa1d5, 0xa1d7, 0xa1d6, 0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1,
- 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9,
- 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1,
- 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa242,
- 0xa1c4, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef,
- 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7,
- 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa340,
- 0xa341, 0xa342, 0xa343, 0xa161, 0xa155, 0xa162, 0xa14e,
-};
-
-static const Summary16 big5_uni2indx_page00[16] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x00ac }, { 4, 0x0083 },
- { 7, 0x0000 }, { 7, 0x0080 }, { 8, 0x0000 }, { 8, 0x0080 },
-};
-static const Summary16 big5_uni2indx_page02[38] = {
- /* 0x0200 */
- { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
- { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
- { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
- { 9, 0x0e80 }, { 13, 0x0200 }, { 14, 0x0000 }, { 14, 0x0000 },
- /* 0x0300 */
- { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
- { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
- { 14, 0x0000 }, { 14, 0xfffe }, { 29, 0x03fb }, { 38, 0xfffe },
- { 53, 0x03fb }, { 62, 0x0000 }, { 62, 0x0000 }, { 62, 0x0000 },
- /* 0x0400 */
- { 62, 0x0002 }, { 63, 0x1ff0 }, { 72, 0xfff8 }, { 85, 0xffff },
- { 101, 0xffff }, { 117, 0x0002 },
-};
-static const Summary16 big5_uni2indx_page20[44] = {
- /* 0x2000 */
- { 118, 0x0000 }, { 118, 0x3318 }, { 124, 0x0064 }, { 127, 0x4824 },
- { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
- { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
- { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
- /* 0x2100 */
- { 131, 0x0228 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 },
- { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x03ff }, { 144, 0x0000 },
- { 144, 0x0000 }, { 144, 0x03cf }, { 152, 0x0000 }, { 152, 0x0000 },
- { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 },
- /* 0x2200 */
- { 152, 0x0000 }, { 152, 0xc400 }, { 155, 0x4e29 }, { 162, 0x1030 },
- { 165, 0x0000 }, { 165, 0x0004 }, { 166, 0x00c3 }, { 170, 0x0000 },
- { 170, 0x0000 }, { 170, 0x0000 }, { 170, 0x0020 }, { 171, 0x8000 },
-};
-static const Summary16 big5_uni2indx_page24[37] = {
- /* 0x2400 */
- { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 },
- { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x03ff }, { 182, 0x3ff0 },
- { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
- { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
- /* 0x2500 */
- { 192, 0x1005 }, { 195, 0x1111 }, { 199, 0x1010 }, { 201, 0x1010 },
- { 203, 0x0000 }, { 203, 0x4001 }, { 205, 0xe402 }, { 210, 0x000f },
- { 214, 0xfffe }, { 229, 0x0030 }, { 231, 0x0003 }, { 233, 0x300c },
- { 237, 0xc8c0 }, { 242, 0x0000 }, { 242, 0x003c }, { 246, 0x0000 },
- /* 0x2600 */
- { 246, 0x0260 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 },
- { 249, 0x0007 },
-};
-static const Summary16 big5_uni2indx_page30[62] = {
- /* 0x3000 */
- { 252, 0xff2f }, { 265, 0x6037 }, { 272, 0x03fe }, { 281, 0x0000 },
- { 281, 0xfffe }, { 296, 0xffff }, { 312, 0xffff }, { 328, 0xffff },
- { 344, 0xffff }, { 360, 0x600f }, { 366, 0xfffe }, { 381, 0xffff },
- { 397, 0xffff }, { 413, 0xffff }, { 429, 0xffff }, { 445, 0x407f },
- /* 0x3100 */
- { 453, 0xffe0 }, { 464, 0xffff }, { 480, 0x03ff }, { 490, 0x0000 },
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
- /* 0x3200 */
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0008 }, { 491, 0x0000 },
- { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
- /* 0x3300 */
- { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
- { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
- { 491, 0xc000 }, { 493, 0x7000 }, { 496, 0x0002 }, { 497, 0x0000 },
- { 497, 0x4010 }, { 499, 0x0026 },
-};
-static const Summary16 big5_uni2indx_page4e[1307] = {
- /* 0x4e00 */
- { 502, 0xff8b }, { 514, 0xc373 }, { 523, 0x6840 }, { 527, 0x1b0f },
- { 535, 0xe9ac }, { 544, 0xf34c }, { 553, 0x0200 }, { 554, 0xc008 },
- { 557, 0x795c }, { 566, 0xca3e }, { 575, 0x7976 }, { 585, 0x0648 },
- { 589, 0x2fdf }, { 601, 0xf7f0 }, { 612, 0x033a }, { 618, 0xa8ff },
- /* 0x4f00 */
- { 629, 0xef37 }, { 641, 0x233f }, { 650, 0xb004 }, { 654, 0xfd59 },
- { 665, 0xf3ca }, { 675, 0xffff }, { 691, 0xde9f }, { 703, 0xfff9 },
- { 717, 0xabff }, { 730, 0x7df7 }, { 743, 0xc000 }, { 745, 0x8eec },
- { 754, 0xeebf }, { 767, 0xffdb }, { 781, 0xd003 }, { 786, 0x45fa },
- /* 0x5000 */
- { 795, 0xfae1 }, { 805, 0xdffe }, { 819, 0xbfef }, { 833, 0x10ab },
- { 839, 0xffeb }, { 853, 0xfcaa }, { 863, 0xef3f }, { 876, 0x24fd },
- { 885, 0x78ad }, { 894, 0x7f76 }, { 906, 0xf00c }, { 912, 0xedff },
- { 926, 0xcff6 }, { 938, 0x2cfa }, { 947, 0xf7f9 }, { 960, 0xeb6b },
- /* 0x5100 */
- { 971, 0x1ffd }, { 983, 0x95bf }, { 994, 0x6677 }, { 1004, 0xbfbf },
- { 1018, 0x3bfb }, { 1030, 0xfeb4 }, { 1041, 0x7bae }, { 1052, 0x11e2 },
- { 1058, 0xa681 }, { 1064, 0x41be }, { 1072, 0x1435 }, { 1078, 0x72c3 },
- { 1086, 0x7d70 }, { 1095, 0x7191 }, { 1102, 0x0003 }, { 1104, 0x276b },
- /* 0x5200 */
- { 1113, 0x57cb }, { 1123, 0x70cf }, { 1132, 0x4732 }, { 1139, 0x0def },
- { 1149, 0x7eda }, { 1160, 0xfc74 }, { 1170, 0xfe06 }, { 1179, 0xbdb4 },
- { 1189, 0x3f9f }, { 1201, 0x8bca }, { 1209, 0x7e49 }, { 1218, 0x5800 },
- { 1221, 0x228f }, { 1228, 0xebec }, { 1239, 0x8a5c }, { 1246, 0xddbb },
- /* 0x5300 */
- { 1258, 0xef60 }, { 1267, 0xb6e7 }, { 1278, 0xa40f }, { 1285, 0xf293 },
- { 1294, 0x37bb }, { 1305, 0x549e }, { 1313, 0xd04b }, { 1320, 0x9baf },
- { 1331, 0xc414 }, { 1336, 0xf7d4 }, { 1347, 0x30b0 }, { 1352, 0x0a14 },
- { 1356, 0x2f08 }, { 1362, 0x88d0 }, { 1367, 0xff7e }, { 1381, 0x192f },
- /* 0x5400 */
- { 1389, 0xffda }, { 1402, 0xfb07 }, { 1412, 0x7ff1 }, { 1424, 0x7beb },
- { 1436, 0xc5ef }, { 1447, 0x0010 }, { 1448, 0x99ff }, { 1460, 0xfdff },
- { 1475, 0x79d7 }, { 1486, 0x0567 }, { 1493, 0xffe7 }, { 1507, 0xfdcb },
- { 1519, 0xc3ff }, { 1531, 0x4040 }, { 1533, 0x6ff7 }, { 1546, 0xbd8e },
- /* 0x5500 */
- { 1556, 0xdffa }, { 1569, 0x0497 }, { 1575, 0xf4c0 }, { 1582, 0x5bff },
- { 1595, 0xed7b }, { 1607, 0xd0e7 }, { 1616, 0x047e }, { 1623, 0xf8e0 },
- { 1631, 0xff9f }, { 1645, 0xb73e }, { 1656, 0x7dfe }, { 1669, 0x882e },
- { 1675, 0xfffd }, { 1690, 0xbe7f }, { 1703, 0x83fe }, { 1713, 0xf6c4 },
- /* 0x5600 */
- { 1722, 0xf357 }, { 1733, 0xb8fd }, { 1744, 0xd680 }, { 1750, 0xef7d },
- { 1763, 0x5767 }, { 1773, 0x4788 }, { 1779, 0xff7d }, { 1793, 0xc3df },
- { 1804, 0xf0ff }, { 1816, 0x37a9 }, { 1825, 0x7de0 }, { 1834, 0x70fc },
- { 1843, 0x3f6f }, { 1855, 0xec9a }, { 1864, 0x4cb3 }, { 1872, 0x8681 },
- /* 0x5700 */
- { 1877, 0x3f9e }, { 1888, 0xdd5c }, { 1898, 0xf70d }, { 1908, 0x4819 },
- { 1913, 0xfea3 }, { 1924, 0x0007 }, { 1927, 0xaf56 }, { 1937, 0x38ff },
- { 1948, 0x980d }, { 1954, 0xefb8 }, { 1965, 0x403d }, { 1971, 0xb760 },
- { 1979, 0xd8ce }, { 1988, 0x9035 }, { 1994, 0x72bf }, { 2005, 0x3fff },
- /* 0x5800 */
- { 2019, 0x7ff7 }, { 2033, 0x7a11 }, { 2040, 0xf7bb }, { 2053, 0xabff },
- { 2066, 0xff00 }, { 2074, 0x6fbe }, { 2086, 0xa93c }, { 2094, 0xfe72 },
- { 2105, 0xcfef }, { 2118, 0xf11b }, { 2127, 0xdb6b }, { 2138, 0xf40a },
- { 2145, 0xc3e6 }, { 2154, 0xef7e }, { 2167, 0x9b9c }, { 2176, 0xf610 },
- /* 0x5900 */
- { 2183, 0xf048 }, { 2189, 0x16f4 }, { 2197, 0xfeb5 }, { 2209, 0x5182 },
- { 2214, 0xc7b1 }, { 2223, 0x15bb }, { 2232, 0x6e87 }, { 2241, 0xfbdf },
- { 2255, 0xe43f }, { 2265, 0x63cd }, { 2274, 0xc1ff }, { 2285, 0x7e7e },
- { 2297, 0xfdeb }, { 2310, 0x7d5f }, { 2322, 0x777b }, { 2334, 0xfcfe },
- /* 0x5a00 */
- { 2347, 0x960b }, { 2354, 0xdbea }, { 2365, 0x6229 }, { 2371, 0x53e8 },
- { 2379, 0x37df }, { 2391, 0xfdef }, { 2405, 0x36f5 }, { 2415, 0xbd81 },
- { 2423, 0xdc18 }, { 2430, 0xfcbd }, { 2442, 0xd2e4 }, { 2450, 0xffff },
- { 2466, 0x3fd7 }, { 2478, 0xffe0 }, { 2489, 0x7f6f }, { 2502, 0xabf8 },
- /* 0x5b00 */
- { 2512, 0x9bae }, { 2522, 0x6ed9 }, { 2532, 0xf5fb }, { 2545, 0xf115 },
- { 2553, 0x79a9 }, { 2562, 0xbdfb }, { 2575, 0x5a3c }, { 2583, 0xadaf },
- { 2594, 0xdbba }, { 2605, 0x1fac }, { 2614, 0x71fc }, { 2624, 0x8379 },
- { 2632, 0x7cf7 }, { 2644, 0xc35f }, { 2654, 0xdfff }, { 2669, 0x0567 },
- /* 0x5c00 */
- { 2676, 0xff9a }, { 2688, 0x8467 }, { 2695, 0x1534 }, { 2701, 0xdf8b },
- { 2712, 0xf9f3 }, { 2724, 0x3373 }, { 2733, 0xf7bd }, { 2746, 0x5e1a },
- { 2754, 0xbf40 }, { 2762, 0xa03f }, { 2770, 0xffff }, { 2786, 0x01eb },
- { 2793, 0xdfc0 }, { 2802, 0xcfdd }, { 2814, 0x7500 }, { 2819, 0xabd3 },
- /* 0x5d00 */
- { 2829, 0xf8c3 }, { 2838, 0xeed6 }, { 2849, 0x43fd }, { 2859, 0xb7ff },
- { 2873, 0x5eaf }, { 2884, 0x4227 }, { 2890, 0x9bac }, { 2899, 0xf686 },
- { 2908, 0x27d7 }, { 2918, 0xf6bc }, { 2929, 0xf787 }, { 2940, 0x35b7 },
- { 2950, 0xaacd }, { 2959, 0xe176 }, { 2968, 0x49e7 }, { 2977, 0xe29f },
- /* 0x5e00 */
- { 2987, 0x545c }, { 2994, 0xaff2 }, { 3005, 0x2b3f }, { 3015, 0x61d8 },
- { 3022, 0xfc3b }, { 3033, 0xbbb8 }, { 3043, 0xffcf }, { 3057, 0x7b7d },
- { 3069, 0xbf95 }, { 3080, 0x1ce0 }, { 3086, 0x7dfd }, { 3099, 0x43ff },
- { 3110, 0x5ff6 }, { 3122, 0xfffe }, { 3137, 0xd3ef }, { 3149, 0xc4ce },
- /* 0x5f00 */
- { 3157, 0x8db6 }, { 3166, 0xadbc }, { 3176, 0x63dc }, { 3185, 0x11eb },
- { 3193, 0xdf59 }, { 3204, 0x23d0 }, { 3210, 0xbeb4 }, { 3220, 0xf3db },
- { 3232, 0x1fe7 }, { 3243, 0xdbc7 }, { 3254, 0xff63 }, { 3266, 0xfae4 },
- { 3276, 0xb22b }, { 3284, 0x63f7 }, { 3295, 0xed3b }, { 3306, 0xadba },
- /* 0x6000 */
- { 3316, 0xfe01 }, { 3324, 0x7eff }, { 3338, 0xfff7 }, { 3353, 0x02bc },
- { 3359, 0x32ff }, { 3370, 0xef39 }, { 3381, 0xfffc }, { 3395, 0x8005 },
- { 3398, 0x77fb }, { 3411, 0xbcf5 }, { 3422, 0x010d }, { 3426, 0xfff7 },
- { 3441, 0xfffb }, { 3456, 0xbf3a }, { 3467, 0x0057 }, { 3472, 0xdfff },
- /* 0x6100 */
- { 3487, 0xef7b }, { 3500, 0xbd7d }, { 3512, 0xdb88 }, { 3520, 0xc8d4 },
- { 3527, 0xfff3 }, { 3541, 0xed7c }, { 3552, 0x5dee }, { 3563, 0x56ff },
- { 3575, 0x7e0d }, { 3584, 0xac5f }, { 3594, 0xff96 }, { 3606, 0xd57f },
- { 3618, 0x3fee }, { 3630, 0xc140 }, { 3634, 0x6ff9 }, { 3646, 0xffe7 },
- /* 0x6200 */
- { 3660, 0x779b }, { 3671, 0x8e77 }, { 3681, 0x6ebf }, { 3693, 0xe45d },
- { 3702, 0x6fcf }, { 3714, 0x5f1f }, { 3725, 0xe07f }, { 3735, 0xfedf },
- { 3749, 0xd7db }, { 3761, 0x01fe }, { 3769, 0xff00 }, { 3777, 0xfb7b },
- { 3790, 0xffd4 }, { 3802, 0x1fdf }, { 3814, 0xf800 }, { 3819, 0xffff },
- /* 0x6300 */
- { 3835, 0xfb8f }, { 3847, 0x007b }, { 3853, 0xbf00 }, { 3860, 0x7f5c },
- { 3871, 0xffff }, { 3887, 0x07f3 }, { 3896, 0xeba0 }, { 3904, 0x3de7 },
- { 3915, 0xf7bf }, { 3929, 0xfbd7 }, { 3942, 0xffbf }, { 3957, 0x6003 },
- { 3961, 0xfffd }, { 3976, 0xbfed }, { 3989, 0xefbb }, { 4002, 0x027f },
- /* 0x6400 */
- { 4010, 0xfe40 }, { 4018, 0xddfd }, { 4031, 0xfdff }, { 4046, 0xe2f9 },
- { 4056, 0x680b }, { 4062, 0xfb1f }, { 4074, 0xfbe3 }, { 4086, 0xaffd },
- { 4099, 0x9fa4 }, { 4108, 0xf7ed }, { 4121, 0x7a7d }, { 4132, 0xf80f },
- { 4141, 0xeebe }, { 4153, 0x0fd5 }, { 4162, 0xbb5d }, { 4173, 0xfd9f },
- /* 0x6500 */
- { 4186, 0xf2db }, { 4197, 0x3bf9 }, { 4208, 0xfe7f }, { 4222, 0xebcc },
- { 4232, 0x876a }, { 4240, 0x73fa }, { 4251, 0x95fc }, { 4261, 0x9ffc },
- { 4273, 0x109f }, { 4280, 0xfaf7 }, { 4293, 0xddb7 }, { 4305, 0xbbcd },
- { 4316, 0xf87e }, { 4327, 0xeccd }, { 4337, 0xf366 }, { 4347, 0x3c3f },
- /* 0x6600 */
- { 4357, 0xfffd }, { 4372, 0xb03f }, { 4381, 0xe9f7 }, { 4393, 0x067e },
- { 4401, 0x96ae }, { 4410, 0xfe06 }, { 4419, 0xd576 }, { 4429, 0x5fd7 },
- { 4441, 0x3fd1 }, { 4451, 0xa3f3 }, { 4461, 0xcf07 }, { 4470, 0x6fb7 },
- { 4482, 0x9fd1 }, { 4492, 0x7f44 }, { 4501, 0x7b59 }, { 4511, 0xd3dd },
- /* 0x6700 */
- { 4522, 0xaf3b }, { 4533, 0xa9bd }, { 4543, 0x7dcf }, { 4555, 0xff3a },
- { 4567, 0xfbe0 }, { 4577, 0xf6eb }, { 4589, 0xb401 }, { 4594, 0xffff },
- { 4610, 0x7afa }, { 4621, 0xb7bf }, { 4634, 0xc000 }, { 4636, 0x0ffd },
- { 4647, 0xff7f }, { 4662, 0xff1f }, { 4675, 0xfefc }, { 4688, 0x95ff },
- /* 0x6800 */
- { 4700, 0x0000 }, { 4700, 0xb5dc }, { 4710, 0xef63 }, { 4721, 0x3f3e },
- { 4732, 0xfb7f }, { 4746, 0x001b }, { 4750, 0xe800 }, { 4754, 0xfbf6 },
- { 4767, 0x9eef }, { 4779, 0xb8df }, { 4790, 0xff9f }, { 4804, 0x003f },
- { 4810, 0x7bd0 }, { 4819, 0xf5ff }, { 4833, 0xdfdb }, { 4846, 0x3fff },
- /* 0x6900 */
- { 4860, 0xfdf0 }, { 4871, 0x00bf }, { 4878, 0x8420 }, { 4881, 0xbbbd },
- { 4893, 0xdf37 }, { 4905, 0xffde }, { 4919, 0xff6d }, { 4932, 0x0ff3 },
- { 4942, 0x604c }, { 4947, 0x5efb }, { 4959, 0xfffb }, { 4974, 0xfafb },
- { 4987, 0xfe5e }, { 4999, 0x0219 }, { 5003, 0x79f4 }, { 5013, 0xf9de },
- /* 0x6a00 */
- { 5025, 0xa7f7 }, { 5037, 0xebfa }, { 5049, 0x01eb }, { 5056, 0xff34 },
- { 5067, 0xebd3 }, { 5078, 0xef73 }, { 5090, 0xafd7 }, { 5102, 0xc040 },
- { 5105, 0x72bb }, { 5115, 0xdcff }, { 5128, 0xf17f }, { 5140, 0x2fd8 },
- { 5149, 0xb8ec }, { 5158, 0xfe0b }, { 5168, 0xdda3 }, { 5178, 0x1f0b },
- /* 0x6b00 */
- { 5186, 0x8f1d }, { 5195, 0x47cf }, { 5205, 0xb12b }, { 5213, 0xffde },
- { 5227, 0x7fee }, { 5240, 0xda73 }, { 5250, 0x24ff }, { 5260, 0xcbc4 },
- { 5268, 0xf75d }, { 5280, 0xcbf2 }, { 5290, 0xecfd }, { 5302, 0xb4ed },
- { 5312, 0xbff9 }, { 5325, 0x4ddd }, { 5335, 0x99dd }, { 5345, 0xfb8d },
- /* 0x6c00 */
- { 5356, 0xbb7f }, { 5369, 0xaf7b }, { 5381, 0xddfb }, { 5394, 0xc959 },
- { 5402, 0xfc4f }, { 5413, 0xfab5 }, { 5424, 0xafe3 }, { 5435, 0x6d5f },
- { 5446, 0xffff }, { 5462, 0x3f7d }, { 5474, 0x7800 }, { 5478, 0xffdb },
- { 5492, 0xb6ff }, { 5505, 0x7eff }, { 5519, 0xfbaf }, { 5532, 0x022f },
- /* 0x6d00 */
- { 5538, 0xff9b }, { 5551, 0xefc7 }, { 5563, 0xffa5 }, { 5575, 0xffff },
- { 5591, 0x0007 }, { 5594, 0xc700 }, { 5599, 0xf7ff }, { 5614, 0xfff1 },
- { 5627, 0x7ffd }, { 5641, 0x01bf }, { 5649, 0xdc00 }, { 5654, 0xfdbc },
- { 5666, 0xbff5 }, { 5679, 0xffff }, { 5695, 0xff7f }, { 5710, 0x3eff },
- /* 0x6e00 */
- { 5723, 0x0029 }, { 5726, 0xbe00 }, { 5732, 0xf9ff }, { 5746, 0xff7f },
- { 5761, 0x6efb }, { 5773, 0xfd7e }, { 5786, 0xcbff }, { 5799, 0x039e },
- { 5806, 0xe300 }, { 5811, 0xfbdd }, { 5824, 0xccff }, { 5836, 0xf6df },
- { 5849, 0xffff }, { 5865, 0x117f }, { 5874, 0xf800 }, { 5879, 0xfbf6 },
- /* 0x6f00 */
- { 5892, 0xe7ef }, { 5905, 0xd73c }, { 5915, 0xfeef }, { 5929, 0xdfef },
- { 5943, 0xc00b }, { 5948, 0xedbf }, { 5961, 0xfedf }, { 5975, 0xfdcd },
- { 5987, 0x7bf5 }, { 5999, 0x40fd }, { 6007, 0xffff }, { 6023, 0xb75f },
- { 6035, 0xffdf }, { 6050, 0xf930 }, { 6058, 0xfbdf }, { 6072, 0xdc97 },
- /* 0x7000 */
- { 6082, 0xfef3 }, { 6095, 0xbff2 }, { 6107, 0x8fdf }, { 6119, 0xdfbf },
- { 6133, 0x177f }, { 6144, 0xede6 }, { 6155, 0x0f7f }, { 6166, 0x3553 },
- { 6174, 0x447c }, { 6181, 0x877e }, { 6191, 0xfa12 }, { 6199, 0x45bb },
- { 6208, 0xede0 }, { 6217, 0x779e }, { 6228, 0x8017 }, { 6233, 0xbfd9 },
- /* 0x7100 */
- { 6245, 0x7e55 }, { 6255, 0xde89 }, { 6264, 0xc16f }, { 6273, 0x0447 },
- { 6278, 0x7ade }, { 6289, 0xf75d }, { 6301, 0x57ff }, { 6314, 0x2905 },
- { 6319, 0x86f7 }, { 6329, 0xfe95 }, { 6340, 0x97b3 }, { 6350, 0xf32f },
- { 6361, 0xcfff }, { 6375, 0x9f75 }, { 6386, 0x71f7 }, { 6397, 0xfb17 },
- /* 0x7200 */
- { 6408, 0x34ee }, { 6417, 0xee19 }, { 6426, 0x37cc }, { 6435, 0xef61 },
- { 6445, 0x9fd6 }, { 6456, 0xef4c }, { 6466, 0xd68f }, { 6476, 0xfbdd },
- { 6489, 0x7b73 }, { 6500, 0x6def }, { 6512, 0xd7fe }, { 6525, 0xa431 },
- { 6531, 0x5e7f }, { 6543, 0x97d7 }, { 6554, 0x0f5b }, { 6563, 0xffd8 },
- /* 0x7300 */
- { 6575, 0x9d83 }, { 6583, 0x7bce }, { 6594, 0x22ec }, { 6601, 0xdcff },
- { 6614, 0x763d }, { 6624, 0xef87 }, { 6635, 0xdfe7 }, { 6648, 0xfded },
- { 6661, 0x4fff }, { 6674, 0xa0fc }, { 6682, 0x3b77 }, { 6693, 0xdbfc },
- { 6705, 0x3ded }, { 6716, 0x7fdc }, { 6728, 0x6fa9 }, { 6738, 0xf570 },
- /* 0x7400 */
- { 6747, 0x3ffb }, { 6760, 0x2c40 }, { 6764, 0xff7f }, { 6779, 0x847f },
- { 6788, 0xec57 }, { 6798, 0xdeb7 }, { 6810, 0xe69c }, { 6819, 0xf22f },
- { 6829, 0x0feb }, { 6839, 0xd5b5 }, { 6849, 0xafeb }, { 6861, 0xede7 },
- { 6873, 0x8c2f }, { 6881, 0xfff0 }, { 6893, 0x537f }, { 6904, 0xe8f0 },
- /* 0x7500 */
- { 6912, 0xb99d }, { 6922, 0xb5ff }, { 6935, 0xff66 }, { 6947, 0xe78f },
- { 6958, 0xd981 }, { 6965, 0xbe10 }, { 6972, 0x9c7c }, { 6981, 0xe3c1 },
- { 6989, 0x9cd1 }, { 6997, 0x2733 }, { 7005, 0x0cbc }, { 7012, 0xff6d },
- { 7025, 0xfcb7 }, { 7037, 0xefb7 }, { 7050, 0xa0df }, { 7059, 0xffff },
- /* 0x7600 */
- { 7075, 0xbf0b }, { 7085, 0xfe7b }, { 7098, 0xa3ff }, { 7110, 0x353f },
- { 7120, 0x13cc }, { 7127, 0x97cd }, { 7137, 0x7637 }, { 7147, 0xfb27 },
- { 7158, 0xcfd6 }, { 7169, 0x7e6c }, { 7179, 0xec50 }, { 7186, 0xed31 },
- { 7195, 0x677c }, { 7205, 0xfc1c }, { 7214, 0xf6fa }, { 7226, 0x5fbf },
- /* 0x7700 */
- { 7239, 0x0fba }, { 7248, 0xae2f }, { 7258, 0xa3ad }, { 7267, 0x7ffe },
- { 7281, 0xfcf0 }, { 7291, 0xde74 }, { 7301, 0xffef }, { 7316, 0xf200 },
- { 7321, 0xfbbf }, { 7335, 0xfea2 }, { 7345, 0x3daf }, { 7356, 0xbcff },
- { 7369, 0xf694 }, { 7378, 0x5fb9 }, { 7389, 0xf3ad }, { 7400, 0x3f8f },
- /* 0x7800 */
- { 7411, 0xf26c }, { 7420, 0xa01f }, { 7427, 0xffef }, { 7442, 0x01bf },
- { 7450, 0x7728 }, { 7458, 0x7005 }, { 7463, 0xff35 }, { 7475, 0xda03 },
- { 7482, 0xd2f9 }, { 7492, 0xc7fa }, { 7503, 0x3fbf }, { 7516, 0x5c1d },
- { 7524, 0xff3a }, { 7536, 0xec33 }, { 7545, 0xb7af }, { 7557, 0xfe9c },
- /* 0x7900 */
- { 7568, 0x5236 }, { 7575, 0x7a9f }, { 7586, 0xbffa }, { 7599, 0xe722 },
- { 7607, 0x9ff7 }, { 7620, 0xfcff }, { 7634, 0x2fbb }, { 7645, 0xb61d },
- { 7654, 0xed06 }, { 7662, 0x1dfd }, { 7673, 0x7dd7 }, { 7685, 0xefdf },
- { 7699, 0xeb23 }, { 7708, 0xf166 }, { 7717, 0x7ed9 }, { 7728, 0x0dc0 },
- /* 0x7a00 */
- { 7733, 0x3d3d }, { 7743, 0xdfbf }, { 7757, 0xc945 }, { 7764, 0xba83 },
- { 7772, 0x7dd1 }, { 7782, 0x9dd0 }, { 7790, 0x7b87 }, { 7800, 0xcf73 },
- { 7811, 0x9ff3 }, { 7823, 0xc3f5 }, { 7833, 0xdf0d }, { 7843, 0xc5fe },
- { 7854, 0x0cb3 }, { 7861, 0x8302 }, { 7865, 0xe879 }, { 7874, 0xaec0 },
- /* 0x7b00 */
- { 7881, 0xc773 }, { 7891, 0x6f0f }, { 7901, 0xfd7d }, { 7914, 0x093f },
- { 7922, 0xfff1 }, { 7935, 0x0157 }, { 7941, 0x62fb }, { 7951, 0x01ff },
- { 7960, 0xfdb4 }, { 7971, 0x3bf3 }, { 7982, 0xb013 }, { 7988, 0x43b2 },
- { 7995, 0x5ed3 }, { 8005, 0xff30 }, { 8015, 0x0fff }, { 8027, 0xeb9f },
- /* 0x7c00 */
- { 8039, 0xfeef }, { 8053, 0xf203 }, { 8060, 0x3fef }, { 8073, 0xfb89 },
- { 8083, 0x37a9 }, { 8092, 0x9e99 }, { 8101, 0xdef9 }, { 8113, 0xa72c },
- { 8121, 0x3733 }, { 8130, 0xc1f6 }, { 8139, 0x812e }, { 8145, 0xfe3e },
- { 8157, 0x5d20 }, { 8163, 0xf2f7 }, { 8175, 0xd585 }, { 8183, 0x69d7 },
- /* 0x7d00 */
- { 8193, 0xffff }, { 8209, 0xffff }, { 8225, 0xdb07 }, { 8234, 0xff6f },
- { 8248, 0xc4ff }, { 8259, 0xd97f }, { 8271, 0xefce }, { 8283, 0xbe0f },
- { 8293, 0xf17b }, { 8304, 0xf05e }, { 8313, 0xf6cf }, { 8325, 0xffb7 },
- { 8339, 0x5ef7 }, { 8351, 0xef84 }, { 8360, 0xd7cb }, { 8371, 0x0edf },
- /* 0x7e00 */
- { 8381, 0xff08 }, { 8390, 0xfcff }, { 8404, 0xee3f }, { 8416, 0xffff },
- { 8432, 0x13ff }, { 8443, 0xd7ff }, { 8457, 0xaf0f }, { 8467, 0x7ffd },
- { 8481, 0xbdc7 }, { 8492, 0x1ffa }, { 8503, 0x0000 }, { 8503, 0x0000 },
- { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 },
- /* 0x7f00 */
- { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0xe740 },
- { 8510, 0xbd38 }, { 8519, 0xf933 }, { 8529, 0x7feb }, { 8542, 0xfeed },
- { 8555, 0x7fe8 }, { 8566, 0x7c76 }, { 8576, 0xb3f7 }, { 8588, 0xffef },
- { 8603, 0xfeaf }, { 8616, 0xd8b7 }, { 8626, 0xff6f }, { 8640, 0xfbbf },
- /* 0x8000 */
- { 8654, 0xf8fb }, { 8666, 0xdbf7 }, { 8679, 0x1752 }, { 8686, 0xe2f9 },
- { 8696, 0x85c8 }, { 8702, 0x7547 }, { 8711, 0x9090 }, { 8715, 0xe3ef },
- { 8727, 0x9ef4 }, { 8737, 0x3f6d }, { 8748, 0xee2e }, { 8758, 0x0536 },
- { 8764, 0xf7bc }, { 8776, 0x7ff3 }, { 8789, 0xa07b }, { 8797, 0x7f3f },
- /* 0x8100 */
- { 8810, 0x0567 }, { 8817, 0xeb60 }, { 8825, 0xbabe }, { 8836, 0x6601 },
- { 8841, 0xfcd8 }, { 8851, 0x583f }, { 8860, 0xcaf7 }, { 8871, 0x87df },
- { 8882, 0xbfcd }, { 8894, 0xffa0 }, { 8904, 0x5bcd }, { 8914, 0xfebf },
- { 8928, 0xb6fd }, { 8940, 0xefa7 }, { 8952, 0x77ef }, { 8965, 0xdf9c },
- /* 0x8200 */
- { 8976, 0x3fb7 }, { 8988, 0xf877 }, { 8999, 0x9d27 }, { 9008, 0xb7fc },
- { 9020, 0xcab5 }, { 9029, 0xdfef }, { 9043, 0xfb5a }, { 9054, 0xf1b6 },
- { 9064, 0xec39 }, { 9073, 0xef1f }, { 9085, 0xfbbf }, { 9099, 0x7ffb },
- { 9113, 0x000d }, { 9116, 0xdafe }, { 9128, 0xbdfb }, { 9141, 0x4e7f },
- /* 0x8300 */
- { 9152, 0x33ff }, { 9164, 0x5ac0 }, { 9170, 0xbff5 }, { 9183, 0x9ffe },
- { 9196, 0xffbf }, { 9211, 0x005f }, { 9217, 0x0000 }, { 9217, 0xfdf8 },
- { 9229, 0xffca }, { 9241, 0x6ffd }, { 9254, 0xcffd }, { 9267, 0xa001 },
- { 9270, 0xdfff }, { 9285, 0xfbf2 }, { 9297, 0xdfbf }, { 9311, 0xff7f },
- /* 0x8400 */
- { 9326, 0xfeda }, { 9338, 0x080f }, { 9343, 0xba08 }, { 9349, 0xbfff },
- { 9364, 0x7afd }, { 9376, 0xeed7 }, { 9388, 0xfbeb }, { 9401, 0x67f9 },
- { 9412, 0xe044 }, { 9417, 0xff93 }, { 9429, 0xdf97 }, { 9441, 0x9f57 },
- { 9452, 0xfef7 }, { 9466, 0x08df }, { 9474, 0xdf80 }, { 9482, 0xfedf },
- /* 0x8500 */
- { 9496, 0xffc5 }, { 9508, 0xf7fe }, { 9522, 0xfffb }, { 9537, 0x6803 },
- { 9542, 0x67fb }, { 9554, 0x6bfa }, { 9565, 0x7fff }, { 9580, 0x5fe2 },
- { 9590, 0xffff }, { 9606, 0xff73 }, { 9619, 0x87df }, { 9630, 0xe7fb },
- { 9643, 0xebfd }, { 9656, 0xf7a7 }, { 9668, 0xbf7e }, { 9681, 0xefc7 },
- /* 0x8600 */
- { 9693, 0x1ef3 }, { 9703, 0xdf82 }, { 9712, 0x76ff }, { 9725, 0xdf7e },
- { 9738, 0x79c9 }, { 9747, 0xda7d }, { 9758, 0xefbe }, { 9771, 0x1e9b },
- { 9780, 0x7ce0 }, { 9788, 0x77fb }, { 9801, 0x87be }, { 9811, 0xfffb },
- { 9826, 0x1bff }, { 9838, 0xffdb }, { 9852, 0x3f5c }, { 9862, 0x4fe0 },
- /* 0x8700 */
- { 9870, 0x7fff }, { 9885, 0x5f0e }, { 9894, 0x77ff }, { 9908, 0xddbf },
- { 9921, 0xf04f }, { 9930, 0xffff }, { 9946, 0xffff }, { 9962, 0x0ff8 },
- { 9971, 0xa3be }, { 9981, 0xfddf }, { 9995, 0xfc1c }, { 10004, 0xfffd },
- { 10019, 0x1f7d }, { 10030, 0xfb9e }, { 10042, 0xbdff }, { 10056, 0xdedc },
- /* 0x8800 */
- { 10067, 0x3f6f }, { 10079, 0xbafb }, { 10091, 0xdf7f }, { 10105, 0xfbef },
- { 10119, 0x7d1b }, { 10129, 0x2eec }, { 10138, 0xaf8e }, { 10148, 0xf2f7 },
- { 10160, 0x7b0f }, { 10170, 0xcfee }, { 10182, 0x1d96 }, { 10190, 0x77c6 },
- { 10200, 0x7e07 }, { 10209, 0xfff5 }, { 10223, 0xd982 }, { 10230, 0x7fdf },
- /* 0x8900 */
- { 10244, 0x5ee6 }, { 10254, 0xc7ff }, { 10267, 0xfeee }, { 10280, 0x79ef },
- { 10292, 0x9a56 }, { 10300, 0xffcf }, { 10314, 0xfe5f }, { 10327, 0xde5e },
- { 10338, 0x896e }, { 10346, 0xf9e8 }, { 10356, 0xf45e }, { 10366, 0xe6c4 },
- { 10374, 0x0001 }, { 10375, 0xbe7c }, { 10386, 0x3b7f }, { 10398, 0xdddf },
- /* 0x8a00 */
- { 10411, 0xd59d }, { 10421, 0xe9ef }, { 10433, 0x34ac }, { 10440, 0xde53 },
- { 10450, 0xf573 }, { 10461, 0x4bf7 }, { 10472, 0x7b4f }, { 10483, 0x9eff },
- { 10496, 0xb8fe }, { 10507, 0x476e }, { 10516, 0x0dfb }, { 10526, 0xff45 },
- { 10537, 0xabfd }, { 10549, 0xfbfe }, { 10563, 0xe9d7 }, { 10574, 0xddff },
- /* 0x8b00 */
- { 10588, 0xedf7 }, { 10601, 0x7fff }, { 10616, 0xddfd }, { 10629, 0x7eeb },
- { 10641, 0xcfe7 }, { 10653, 0xb7ff }, { 10667, 0xbde9 }, { 10678, 0xef91 },
- { 10688, 0x5d75 }, { 10698, 0xd77c }, { 10709, 0x0000 }, { 10709, 0x0000 },
- { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 },
- /* 0x8c00 */
- { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0xfa80 },
- { 10716, 0xffee }, { 10730, 0xb4f1 }, { 10739, 0xbf76 }, { 10751, 0x2fef },
- { 10763, 0xb677 }, { 10774, 0x77bf }, { 10787, 0x9fbf }, { 10800, 0xfffd },
- { 10815, 0x95bf }, { 10826, 0xf6ae }, { 10837, 0x75ff }, { 10850, 0x7f3b },
- /* 0x8d00 */
- { 10862, 0xa7f5 }, { 10873, 0x0af9 }, { 10881, 0x0000 }, { 10881, 0x0000 },
- { 10881, 0x0000 }, { 10881, 0x0000 }, { 10881, 0xfbd0 }, { 10891, 0x2bdd },
- { 10901, 0xf633 }, { 10911, 0x9a7f }, { 10922, 0xfdab }, { 10934, 0xd6fc },
- { 10945, 0xf9e6 }, { 10956, 0xbfeb }, { 10969, 0xdfdf }, { 10983, 0xf41f },
- /* 0x8e00 */
- { 10993, 0xa6fd }, { 11004, 0xffff }, { 11020, 0x4aff }, { 11031, 0xf37b },
- { 11043, 0x7fb7 }, { 11056, 0xfef9 }, { 11069, 0xb6ff }, { 11082, 0x1d5c },
- { 11090, 0x7ff6 }, { 11103, 0xe5ff }, { 11116, 0x1f7b }, { 11127, 0x2404 },
- { 11130, 0xbe05 }, { 11138, 0xf99e }, { 11149, 0xdbe3 }, { 11160, 0xdff2 },
- /* 0x8f00 */
- { 11172, 0x6fef }, { 11185, 0xfdff }, { 11200, 0xd679 }, { 11210, 0xcbfc },
- { 11221, 0xebfd }, { 11234, 0xefff }, { 11249, 0x001f }, { 11254, 0x0000 },
- { 11254, 0x0000 }, { 11254, 0x9800 }, { 11257, 0xe148 }, { 11263, 0x8017 },
- { 11268, 0x6a74 }, { 11276, 0x00fe }, { 11283, 0x6d7f }, { 11295, 0xfdf1 },
- /* 0x9000 */
- { 11307, 0xb87f }, { 11318, 0xfef3 }, { 11331, 0xe01f }, { 11339, 0xf176 },
- { 11349, 0xee96 }, { 11359, 0x7b3f }, { 11371, 0xeb8d }, { 11381, 0xfffd },
- { 11396, 0xadff }, { 11409, 0xcbb3 }, { 11419, 0x84ef }, { 11428, 0xe17f },
- { 11439, 0x4daa }, { 11447, 0xbff0 }, { 11458, 0xbf3f }, { 11471, 0xfe3f },
- /* 0x9100 */
- { 11484, 0xebff }, { 11498, 0xffd7 }, { 11512, 0xffdf }, { 11527, 0xcf7f },
- { 11540, 0xfffb }, { 11555, 0x85ed }, { 11564, 0xd73f }, { 11576, 0x07bc },
- { 11584, 0xaeff }, { 11597, 0xfe0f }, { 11608, 0xfdaf }, { 11621, 0x76bf },
- { 11633, 0xfaef }, { 11646, 0x37bb }, { 11657, 0x7fdc }, { 11669, 0xa3ba },
- /* 0x9200 */
- { 11678, 0xb6ff }, { 11691, 0x56f7 }, { 11702, 0x60f8 }, { 11709, 0xe7df },
- { 11722, 0xff61 }, { 11733, 0x4cdf }, { 11743, 0xb0fb }, { 11753, 0xff45 },
- { 11764, 0x7ded }, { 11776, 0x3ffa }, { 11788, 0x1fff }, { 11801, 0x18fc },
- { 11809, 0xffff }, { 11825, 0xe3af }, { 11836, 0xc7d3 }, { 11846, 0xdf83 },
- /* 0x9300 */
- { 11856, 0xfb57 }, { 11868, 0xef7d }, { 11881, 0xefff }, { 11896, 0x1378 },
- { 11903, 0xfec0 }, { 11912, 0x5ff7 }, { 11925, 0x34bb }, { 11934, 0x5ee3 },
- { 11944, 0xf70d }, { 11954, 0xeff6 }, { 11967, 0xd7fe }, { 11980, 0x00bf },
- { 11987, 0xf59d }, { 11998, 0xf7f7 }, { 12012, 0x51de }, { 12021, 0xffe0 },
- /* 0x9400 */
- { 12032, 0xfec9 }, { 12043, 0x037f }, { 12052, 0x5f01 }, { 12059, 0xbfef },
- { 12073, 0x9ff1 }, { 12084, 0x60a7 }, { 12091, 0xef1d }, { 12102, 0xf1ff },
- { 12115, 0x000f }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
- { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
- /* 0x9500 */
- { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
- { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x3c80 },
- { 12124, 0xfb4d }, { 12135, 0xd91f }, { 12145, 0x7b3a }, { 12155, 0xfee3 },
- { 12167, 0x3fe9 }, { 12178, 0xdc7f }, { 12190, 0x003f }, { 12196, 0x0000 },
- /* 0x9600 */
- { 12196, 0x0000 }, { 12196, 0x5000 }, { 12198, 0xf51f }, { 12209, 0xbe07 },
- { 12218, 0xfc1d }, { 12228, 0xf91b }, { 12238, 0xbc1e }, { 12247, 0x71ff },
- { 12259, 0x6ff9 }, { 12271, 0x5bbe }, { 12282, 0x5796 }, { 12291, 0x9b1b },
- { 12300, 0x7fff }, { 12315, 0xfffc }, { 12329, 0x872e }, { 12337, 0xafe7 },
- /* 0x9700 */
- { 12349, 0xebf5 }, { 12361, 0xf34f }, { 12372, 0xdffd }, { 12386, 0xe725 },
- { 12395, 0x0bdc }, { 12403, 0x5d44 }, { 12410, 0x5747 }, { 12419, 0xfddd },
- { 12432, 0xed3f }, { 12444, 0x7790 }, { 12452, 0x7d7f }, { 12465, 0x8ac8 },
- { 12471, 0xfafa }, { 12483, 0xf3f9 }, { 12495, 0x202a }, { 12499, 0xef4b },
- /* 0x9800 */
- { 12510, 0xf5ff }, { 12524, 0x79cf }, { 12535, 0xabd3 }, { 12545, 0x0ba5 },
- { 12552, 0xf77a }, { 12564, 0xfb8f }, { 12576, 0x8ebd }, { 12586, 0x001f },
- { 12591, 0x0000 }, { 12591, 0x0000 }, { 12591, 0xf300 }, { 12597, 0xfd4e },
- { 12608, 0x1a57 }, { 12616, 0x8800 }, { 12618, 0xaeac }, { 12627, 0x7654 },
- /* 0x9900 */
- { 12635, 0x17ad }, { 12644, 0xcdff }, { 12657, 0xffb2 }, { 12669, 0xf42f },
- { 12679, 0x5baa }, { 12688, 0xdbff }, { 12702, 0x0002 }, { 12703, 0x0000 },
- { 12703, 0x0000 }, { 12703, 0x73c0 }, { 12710, 0xf9ea }, { 12721, 0x2e3f },
- { 12731, 0xfa8e }, { 12741, 0xbbff }, { 12755, 0x76bc }, { 12765, 0xffd3 },
- /* 0x9a00 */
- { 12778, 0xeefe }, { 12791, 0x7e72 }, { 12801, 0x7ebd }, { 12813, 0xe7f7 },
- { 12826, 0xf77f }, { 12840, 0xcefd }, { 12852, 0x0ff5 }, { 12862, 0x0000 },
- { 12862, 0x0000 }, { 12862, 0x0000 }, { 12862, 0xa900 }, { 12866, 0xdb9b },
- { 12877, 0xa4c7 }, { 12885, 0x917f }, { 12895, 0xf8ca }, { 12904, 0x7ece },
- /* 0x9b00 */
- { 12915, 0x7d7a }, { 12926, 0xc7e7 }, { 12937, 0xcbbd }, { 12948, 0xdcae },
- { 12958, 0xfd7e }, { 12971, 0x8f76 }, { 12981, 0x91d3 }, { 12989, 0x7cf3 },
- { 13000, 0x01e5 }, { 13006, 0x4c2f }, { 13014, 0xed77 }, { 13026, 0xa360 },
- { 13032, 0x07db }, { 13041, 0x5ef8 }, { 13051, 0x1df7 }, { 13062, 0x2181 },
- /* 0x9c00 */
- { 13066, 0x6be0 }, { 13074, 0x309c }, { 13080, 0x3b3a }, { 13089, 0xfade },
- { 13101, 0x7f53 }, { 13112, 0xc3f5 }, { 13122, 0x61cd }, { 13130, 0x07ba },
- { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 },
- { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x26e0 }, { 13144, 0xbefe },
- /* 0x9d00 */
- { 13157, 0x03f9 }, { 13165, 0xebb5 }, { 13176, 0xe36d }, { 13186, 0xe9cb },
- { 13196, 0x9c2f }, { 13205, 0xbfde }, { 13218, 0x9f83 }, { 13227, 0xabbf },
- { 13239, 0x1ff7 }, { 13251, 0xffd5 }, { 13264, 0xb7df }, { 13277, 0xdffe },
- { 13291, 0xfdae }, { 13303, 0xffef }, { 13318, 0xfb7e }, { 13331, 0xeffd },
- /* 0x9e00 */
- { 13345, 0xaaff }, { 13357, 0x6ebf }, { 13369, 0x0000 }, { 13369, 0x0000 },
- { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0xb620 },
- { 13375, 0x7fcd }, { 13387, 0xbe9e }, { 13398, 0x62b3 }, { 13406, 0x58f1 },
- { 13414, 0xf10d }, { 13422, 0xfd7b }, { 13435, 0xe9f1 }, { 13445, 0xbefd },
- /* 0x9f00 */
- { 13458, 0xc6c3 }, { 13466, 0x5f6d }, { 13477, 0xff3d }, { 13490, 0x69ff },
- { 13502, 0xffcf }, { 13516, 0xfbf4 }, { 13528, 0xdcfb }, { 13540, 0x4ff7 },
- { 13552, 0x2000 }, { 13553, 0x1137 }, { 13560, 0x0015 },
-};
-static const Summary16 big5_uni2indx_pagefa[1] = {
- /* 0xfa00 */
- { 13563, 0x3000 },
-};
-static const Summary16 big5_uni2indx_pagefe[23] = {
- /* 0xfe00 */
- { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0xfffb },
- { 13580, 0xfe1f }, { 13592, 0xfef5 }, { 13605, 0x0e7f }, { 13615, 0x0000 },
- { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
- { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
- /* 0xff00 */
- { 13615, 0xff7a }, { 13628, 0xffff }, { 13644, 0xffff }, { 13660, 0x97ff },
- { 13673, 0xfffe }, { 13688, 0x3fff }, { 13702, 0x0010 },
-};
-
-static int
-big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc < 0x0100)
- summary = &big5_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x0200 && wc < 0x0460)
- summary = &big5_uni2indx_page02[(wc>>4)-0x020];
- else if (wc >= 0x2000 && wc < 0x22c0)
- summary = &big5_uni2indx_page20[(wc>>4)-0x200];
- else if (wc >= 0x2400 && wc < 0x2650)
- summary = &big5_uni2indx_page24[(wc>>4)-0x240];
- else if (wc >= 0x3000 && wc < 0x33e0)
- summary = &big5_uni2indx_page30[(wc>>4)-0x300];
- else if (wc >= 0x4e00 && wc < 0x9fb0)
- summary = &big5_uni2indx_page4e[(wc>>4)-0x4e0];
- else if (wc >= 0xfa00 && wc < 0xfa10)
- summary = &big5_uni2indx_pagefa[(wc>>4)-0xfa0];
- else if (wc >= 0xfe00 && wc < 0xff70)
- summary = &big5_uni2indx_pagefe[(wc>>4)-0xfe0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = big5_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * BIG5
+ */
+
+static const unsigned short big5_2uni_pagea1[6121] = {
+ /* 0xa1 */
+ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2022, 0xff1b, 0xff1a,
+ 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xff64, 0xfe52,
+ 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
+ 0x2014, 0xfe33, 0xfffd, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
+ 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
+ 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
+ 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
+ 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b,
+ 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
+ 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7,
+ 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605,
+ 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105,
+ 0x203e, 0xfffd, 0xff3f, 0xfffd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e,
+ 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7,
+ 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267,
+ 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65,
+ 0xfe66, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf,
+ 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
+ 0x2641, 0x2609, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
+ 0x2199, 0x2198, 0x2225, 0x2223, 0xfffd,
+ /* 0xa2 */
+ 0xfffd, 0xff0f, 0xff3c, 0xff04, 0x00a5, 0x3012, 0x00a2, 0x00a3,
+ 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
+ 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
+ 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
+ 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
+ 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
+ 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
+ 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e,
+ 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3,
+ 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12,
+ 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
+ 0x3028, 0x3029, 0xfffd, 0x5344, 0xfffd, 0xff21, 0xff22, 0xff23,
+ 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b,
+ 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33,
+ 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41,
+ 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49,
+ 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51,
+ 0xff52, 0xff53, 0xff54, 0xff55, 0xff56,
+ /* 0xa3 */
+ 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
+ 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
+ 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
+ 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
+ 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+ 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
+ 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
+ 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
+ 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa4 */
+ 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
+ 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
+ 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
+ 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
+ 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
+ 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
+ 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
+ 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11,
+ 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88,
+ 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3,
+ 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141,
+ 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207,
+ 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347,
+ 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929,
+ 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f,
+ 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236,
+ 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5,
+ 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4,
+ 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247,
+ 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19,
+ /* 0xa5 */
+ 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
+ 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
+ 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
+ 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
+ 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
+ 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
+ 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
+ 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e,
+ 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7,
+ 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17,
+ 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6,
+ 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11,
+ 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389,
+ 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531,
+ 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db,
+ 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f,
+ 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff,
+ 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f,
+ 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b,
+ 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
+ /* 0xa6 */
+ 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
+ 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
+ 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
+ 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
+ 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
+ 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
+ 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
+ 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f,
+ 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263,
+ 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2,
+ 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64,
+ 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50,
+ 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d,
+ 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001,
+ 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c,
+ 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e,
+ 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621,
+ 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34,
+ 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38,
+ 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63,
+ /* 0xa7 */
+ 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
+ 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
+ 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
+ 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
+ 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
+ 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
+ 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
+ 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747,
+ 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d,
+ 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4,
+ 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c,
+ 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90,
+ 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a,
+ 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8,
+ 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212,
+ 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d,
+ 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298,
+ 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538,
+ 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c,
+ 0x6756, 0x675e, 0x6749, 0x6746, 0x6760,
+ /* 0xa8 */
+ 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
+ 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
+ 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
+ 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
+ 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
+ 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
+ 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
+ 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b,
+ 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d,
+ 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2,
+ 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6,
+ 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a,
+ 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab,
+ 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b,
+ 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b,
+ 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155,
+ 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238,
+ 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb,
+ 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379,
+ 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475,
+ /* 0xa9 */
+ 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
+ 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
+ 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
+ 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
+ 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
+ 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
+ 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
+ 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46,
+ 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18,
+ 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97,
+ 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80,
+ 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff,
+ 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021,
+ 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e,
+ 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9,
+ 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8,
+ 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da,
+ 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e,
+ 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602,
+ 0x660e, 0x6600, 0x660f, 0x6615, 0x660a,
+ /* 0xaa */
+ 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
+ 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
+ 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
+ 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
+ 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
+ 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
+ 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
+ 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095,
+ 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248,
+ 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9,
+ 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a,
+ 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940,
+ 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54,
+ 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1,
+ 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d,
+ 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1,
+ 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7,
+ 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1,
+ 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580,
+ 0x961c, 0x9640, 0x963f, 0x963b, 0x9644,
+ /* 0xab */
+ 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
+ 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
+ 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
+ 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
+ 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
+ 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
+ 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
+ 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4,
+ 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf,
+ 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae,
+ 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8,
+ 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6,
+ 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5,
+ 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7,
+ 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08,
+ 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c,
+ 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d,
+ 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a,
+ 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301,
+ 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7,
+ /* 0xac */
+ 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
+ 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
+ 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
+ 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
+ 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
+ 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
+ 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
+ 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x6d3b,
+ 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38,
+ 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3,
+ 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272,
+ 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb,
+ 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c,
+ 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678,
+ 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701,
+ 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc,
+ 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947,
+ 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff,
+ 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04,
+ 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004,
+ /* 0xad */
+ 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
+ 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
+ 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
+ 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
+ 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
+ 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
+ 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
+ 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed,
+ 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b,
+ 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762,
+ 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df,
+ 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef,
+ 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f,
+ 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1,
+ 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a,
+ 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd,
+ 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d,
+ 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501,
+ 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9,
+ 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea,
+ /* 0xae */
+ 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
+ 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
+ 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
+ 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
+ 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
+ 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
+ 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
+ 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063,
+ 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f,
+ 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3,
+ 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346,
+ 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328,
+ 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642,
+ 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8,
+ 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853,
+ 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851,
+ 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845,
+ 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27,
+ 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87,
+ 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93,
+ /* 0xaf */
+ 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
+ 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
+ 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
+ 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
+ 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
+ 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
+ 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
+ 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x7825,
+ 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f,
+ 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7,
+ 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06,
+ 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22,
+ 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b,
+ 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015,
+ 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105,
+ 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a,
+ 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b,
+ 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338,
+ 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336,
+ 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
+ /* 0xb0 */
+ 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
+ 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
+ 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
+ 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
+ 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
+ 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
+ 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
+ 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b,
+ 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8,
+ 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c,
+ 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e,
+ 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d,
+ 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8,
+ 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3,
+ 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543,
+ 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538,
+ 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708,
+ 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4,
+ 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36,
+ 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40,
+ /* 0xb1 */
+ 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
+ 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
+ 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
+ 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
+ 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
+ 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
+ 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
+ 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5,
+ 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df,
+ 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7,
+ 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa,
+ 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384,
+ 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b,
+ 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557,
+ 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac,
+ 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668,
+ 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2,
+ 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0,
+ 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8,
+ 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba,
+ /* 0xb2 */
+ 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
+ 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
+ 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
+ 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
+ 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
+ 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
+ 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
+ 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7,
+ 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4,
+ 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db,
+ 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843,
+ 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20,
+ 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92,
+ 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c,
+ 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31,
+ 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a,
+ 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124,
+ 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398,
+ 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393,
+ 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c,
+ /* 0xb3 */
+ 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
+ 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
+ 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
+ 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
+ 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
+ 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
+ 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
+ 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8,
+ 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7,
+ 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670,
+ 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0,
+ 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5,
+ 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096,
+ 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269,
+ 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7,
+ 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594,
+ 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2,
+ 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599,
+ 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821,
+ 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960,
+ /* 0xb4 */
+ 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
+ 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
+ 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
+ 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
+ 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
+ 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
+ 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
+ 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2,
+ 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4,
+ 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562,
+ 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676,
+ 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f,
+ 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df,
+ 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb,
+ 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb,
+ 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e,
+ 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67,
+ 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24,
+ 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a,
+ 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb,
+ /* 0xb5 */
+ 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
+ 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
+ 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
+ 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
+ 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
+ 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
+ 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
+ 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97,
+ 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52,
+ 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e,
+ 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66,
+ 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052,
+ 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146,
+ 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403,
+ 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1,
+ 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2,
+ 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df,
+ 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0,
+ 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b,
+ 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41,
+ /* 0xb6 */
+ 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
+ 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
+ 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
+ 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
+ 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
+ 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
+ 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
+ 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593,
+ 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686,
+ 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7,
+ 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea,
+ 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd,
+ 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be,
+ 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d,
+ 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8,
+ 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4,
+ 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712,
+ 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b,
+ 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1,
+ 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc,
+ /* 0xb7 */
+ 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
+ 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
+ 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
+ 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
+ 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
+ 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
+ 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
+ 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a,
+ 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968,
+ 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b,
+ 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf,
+ 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5,
+ 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4,
+ 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164,
+ 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, 0x715e,
+ 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f,
+ 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f,
+ 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601,
+ 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df,
+ 0x775b, 0x776b, 0x7766, 0x775e, 0x7763,
+ /* 0xb8 */
+ 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
+ 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
+ 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
+ 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
+ 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
+ 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
+ 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
+ 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179,
+ 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431,
+ 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435,
+ 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f,
+ 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702,
+ 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc,
+ 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3,
+ 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c,
+ 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c,
+ 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca,
+ 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1,
+ 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, 0x8de4, 0x8de6,
+ 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a,
+ /* 0xb9 */
+ 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
+ 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
+ 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
+ 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
+ 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
+ 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
+ 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
+ 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd,
+ 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e,
+ 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da,
+ 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3,
+ 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617,
+ 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616,
+ 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e,
+ 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925,
+ 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7,
+ 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5,
+ 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84,
+ 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6,
+ 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147,
+ /* 0xba */
+ 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
+ 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
+ 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
+ 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
+ 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
+ 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
+ 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
+ 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff,
+ 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b,
+ 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7,
+ 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292,
+ 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d,
+ 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1,
+ 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7,
+ 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31,
+ 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75,
+ 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9,
+ 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0,
+ 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5,
+ 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac,
+ /* 0xbb */
+ 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
+ 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
+ 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
+ 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
+ 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
+ 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
+ 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
+ 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa,
+ 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d,
+ 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc,
+ 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c,
+ 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118,
+ 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285,
+ 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291,
+ 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c,
+ 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817,
+ 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1,
+ 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3,
+ 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9,
+ 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc,
+ /* 0xbc */
+ 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
+ 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
+ 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
+ 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
+ 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
+ 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
+ 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
+ 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c,
+ 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac,
+ 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479,
+ 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493, 0x6495,
+ 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499,
+ 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4,
+ 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd,
+ 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11,
+ 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84,
+ 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e,
+ 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f,
+ 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b,
+ 0x734e, 0x7357, 0x7469, 0x748b, 0x7483,
+ /* 0xbd */
+ 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
+ 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
+ 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
+ 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
+ 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
+ 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
+ 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
+ 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9,
+ 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517,
+ 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523,
+ 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774,
+ 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c,
+ 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915,
+ 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8,
+ 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6,
+ 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6,
+ 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1,
+ 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f,
+ 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f,
+ 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e,
+ /* 0xbe */
+ 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
+ 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
+ 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
+ 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
+ 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
+ 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
+ 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
+ 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03,
+ 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114,
+ 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3,
+ 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668,
+ 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be,
+ 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e,
+ 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be,
+ 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc,
+ 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4,
+ 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8,
+ 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44,
+ 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59,
+ 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1,
+ /* 0xbf */
+ 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
+ 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
+ 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
+ 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
+ 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
+ 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
+ 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
+ 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11,
+ 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79,
+ 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8,
+ 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, 0x8548, 0x8568,
+ 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f,
+ 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b,
+ 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00,
+ 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed,
+ 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44,
+ 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38,
+ 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c,
+ 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f,
+ 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a,
+ /* 0xc0 */
+ 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
+ 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
+ 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
+ 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
+ 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
+ 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
+ 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
+ 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f,
+ 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a,
+ 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c,
+ 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234,
+ 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1,
+ 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94,
+ 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90,
+ 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf,
+ 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1,
+ 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6,
+ 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370,
+ 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c,
+ 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac,
+ /* 0xc1 */
+ 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
+ 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
+ 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
+ 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
+ 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
+ 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
+ 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
+ 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584,
+ 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8,
+ 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab,
+ 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938,
+ 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20,
+ 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd,
+ 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a,
+ 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084,
+ 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d,
+ 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e,
+ 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc,
+ 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0,
+ 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01,
+ /* 0xc2 */
+ 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
+ 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
+ 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
+ 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
+ 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
+ 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
+ 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
+ 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652,
+ 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62,
+ 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23,
+ 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52,
+ 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf,
+ 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba,
+ 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2,
+ 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59,
+ 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d,
+ 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a,
+ 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a,
+ 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9,
+ 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6,
+ /* 0xc3 */
+ 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
+ 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
+ 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
+ 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
+ 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
+ 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
+ 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
+ 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a,
+ 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7,
+ 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d,
+ 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7f85,
+ 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea,
+ 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9,
+ 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58,
+ 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a,
+ 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54,
+ 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1,
+ 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd,
+ 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a,
+ 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e,
+ /* 0xc4 */
+ 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
+ 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
+ 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
+ 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
+ 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
+ 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
+ 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
+ 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82,
+ 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa,
+ 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba,
+ 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f,
+ 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418,
+ 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8,
+ 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5,
+ 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1,
+ 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d,
+ 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c,
+ 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f,
+ 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821,
+ 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74,
+ /* 0xc5 */
+ 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
+ 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
+ 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
+ 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
+ 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
+ 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
+ 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
+ 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3,
+ 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc,
+ 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444,
+ 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955,
+ 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b,
+ 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6,
+ 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca,
+ 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638,
+ 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464,
+ 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4,
+ 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1,
+ 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88,
+ 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92,
+ /* 0xc6 */
+ 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
+ 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
+ 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
+ 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
+ 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
+ 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
+ 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
+ 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x30fe,
+ 0x309d, 0x309e, 0x3005, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045,
+ 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d,
+ 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055,
+ 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d,
+ 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065,
+ 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d,
+ 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075,
+ 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d,
+ 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085,
+ 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d,
+ 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2,
+ 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
+ /* 0xc7 */
+ 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
+ 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
+ 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
+ 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
+ 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
+ 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
+ 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
+ 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
+ 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
+ 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0414,
+ 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b,
+ 0x041c, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429,
+ 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431,
+ 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438,
+ 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440,
+ 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
+ 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x2460,
+ 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
+ 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
+ 0x247b, 0x247c, 0x247d,
+};
+static const unsigned short big5_2uni_pagec9[7652] = {
+ /* 0xc9 */
+ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
+ 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
+ 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
+ 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
+ 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
+ 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
+ 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
+ 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36,
+ 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a,
+ 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00,
+ 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04,
+ 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, 0x52a6, 0x5322,
+ 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a,
+ 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977,
+ 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e,
+ 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4,
+ 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259,
+ 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738,
+ 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52,
+ 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b,
+ /* 0xca */
+ 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
+ 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
+ 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
+ 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
+ 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
+ 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
+ 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
+ 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d,
+ 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5,
+ 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940,
+ 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f,
+ 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f,
+ 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95,
+ 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d,
+ 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed,
+ 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef,
+ 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e,
+ 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281,
+ 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, 0x65f0, 0x65f4,
+ 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747,
+ /* 0xcb */
+ 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
+ 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
+ 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
+ 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
+ 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
+ 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
+ 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
+ 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a,
+ 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5,
+ 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33,
+ 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74,
+ 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79,
+ 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82,
+ 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232,
+ 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392,
+ 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b,
+ 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f,
+ 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9,
+ 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780,
+ 0x5775, 0x577b, 0x5773, 0x5774, 0x5762,
+ /* 0xcc */
+ 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
+ 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
+ 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
+ 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
+ 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
+ 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
+ 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
+ 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034,
+ 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d,
+ 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214,
+ 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca,
+ 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d,
+ 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb,
+ 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6,
+ 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798,
+ 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791,
+ 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25,
+ 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee,
+ 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2,
+ 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2,
+ /* 0xcd */
+ 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
+ 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
+ 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
+ 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
+ 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
+ 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
+ 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
+ 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7,
+ 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd,
+ 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220,
+ 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7,
+ 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9,
+ 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d,
+ 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5,
+ 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d,
+ 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9,
+ 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb,
+ 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249,
+ 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398,
+ 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf,
+ /* 0xce */
+ 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
+ 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
+ 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
+ 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
+ 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
+ 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
+ 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
+ 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde,
+ 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf,
+ 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22,
+ 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3,
+ 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054,
+ 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c,
+ 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e,
+ 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303,
+ 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313,
+ 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa,
+ 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622,
+ 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f,
+ 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba,
+ /* 0xcf */
+ 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
+ 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
+ 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
+ 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
+ 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
+ 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
+ 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
+ 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01,
+ 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c,
+ 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1,
+ 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a,
+ 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb,
+ 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8,
+ 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7,
+ 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e,
+ 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703,
+ 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8,
+ 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809,
+ 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5,
+ 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80,
+ /* 0xd0 */
+ 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
+ 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
+ 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
+ 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
+ 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
+ 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
+ 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
+ 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4,
+ 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673,
+ 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07,
+ 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf,
+ 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3,
+ 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005,
+ 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033,
+ 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027,
+ 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca,
+ 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e,
+ 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2,
+ 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504,
+ 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1,
+ /* 0xd1 */
+ 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
+ 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
+ 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
+ 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
+ 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
+ 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
+ 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
+ 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x6041,
+ 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095,
+ 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2,
+ 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4,
+ 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358,
+ 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338,
+ 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4,
+ 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f,
+ 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816,
+ 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844,
+ 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d,
+ 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34,
+ 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4,
+ /* 0xd2 */
+ 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
+ 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
+ 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
+ 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
+ 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
+ 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
+ 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
+ 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277,
+ 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb,
+ 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3,
+ 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7,
+ 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, 0x7521, 0x755b,
+ 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6,
+ 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712,
+ 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823,
+ 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821,
+ 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c,
+ 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed,
+ 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b,
+ 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10,
+ /* 0xd3 */
+ 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
+ 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
+ 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
+ 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
+ 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
+ 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
+ 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
+ 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342,
+ 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324,
+ 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353,
+ 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2,
+ 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686,
+ 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695,
+ 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d,
+ 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883,
+ 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4,
+ 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3,
+ 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6,
+ 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8,
+ 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150,
+ /* 0xd4 */
+ 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
+ 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
+ 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
+ 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
+ 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
+ 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
+ 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
+ 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c,
+ 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540,
+ 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc,
+ 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3,
+ 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1,
+ 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9,
+ 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67,
+ 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c,
+ 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b,
+ 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69,
+ 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1,
+ 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c,
+ 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f,
+ /* 0xd5 */
+ 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
+ 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
+ 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
+ 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
+ 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
+ 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
+ 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
+ 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378,
+ 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665,
+ 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887,
+ 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f,
+ 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877,
+ 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e,
+ 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b,
+ 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38,
+ 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab,
+ 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6,
+ 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5,
+ 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0,
+ 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9,
+ /* 0xd6 */
+ 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
+ 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
+ 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
+ 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
+ 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
+ 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
+ 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
+ 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb,
+ 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f,
+ 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b,
+ 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826,
+ 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b,
+ 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94,
+ 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24,
+ 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f,
+ 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3,
+ 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29,
+ 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63,
+ 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0,
+ 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f,
+ /* 0xd7 */
+ 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
+ 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
+ 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
+ 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
+ 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
+ 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
+ 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
+ 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2,
+ 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8,
+ 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852,
+ 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1,
+ 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac,
+ 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30,
+ 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d,
+ 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf,
+ 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1,
+ 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea,
+ 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9,
+ 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1,
+ 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea,
+ /* 0xd8 */
+ 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
+ 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
+ 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
+ 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
+ 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
+ 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
+ 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
+ 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819,
+ 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c,
+ 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d,
+ 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2,
+ 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae,
+ 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b,
+ 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd,
+ 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37,
+ 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e,
+ 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42,
+ 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45,
+ 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9,
+ 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114,
+ /* 0xd9 */
+ 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
+ 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
+ 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
+ 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
+ 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
+ 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
+ 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
+ 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c,
+ 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701,
+ 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1,
+ 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910,
+ 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911,
+ 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8,
+ 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6,
+ 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7,
+ 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95,
+ 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47,
+ 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b,
+ 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40,
+ 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e,
+ /* 0xda */
+ 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
+ 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
+ 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
+ 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
+ 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
+ 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
+ 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
+ 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x741a,
+ 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420,
+ 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1,
+ 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da,
+ 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b,
+ 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d,
+ 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862,
+ 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c,
+ 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, 0x7b44, 0x7b48,
+ 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8,
+ 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a,
+ 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51,
+ 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65,
+ /* 0xdb */
+ 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
+ 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
+ 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
+ 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
+ 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
+ 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
+ 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
+ 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5,
+ 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, 0x83ec, 0x83ee,
+ 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8,
+ 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb,
+ 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856,
+ 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6,
+ 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998,
+ 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59,
+ 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51,
+ 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe,
+ 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3,
+ 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8,
+ 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa,
+ /* 0xdc */
+ 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
+ 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
+ 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
+ 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
+ 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
+ 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
+ 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
+ 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689,
+ 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c,
+ 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83,
+ 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca,
+ 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb,
+ 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c,
+ 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0,
+ 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5,
+ 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714,
+ 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855,
+ 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871,
+ 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5,
+ 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6,
+ /* 0xdd */
+ 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
+ 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
+ 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
+ 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
+ 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
+ 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
+ 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
+ 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433,
+ 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
+ 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a,
+ 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e,
+ 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695,
+ 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966,
+ 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a,
+ 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935,
+ 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969,
+ 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c,
+ 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952,
+ 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, 0x6b48,
+ 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc,
+ /* 0xde */
+ 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
+ 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
+ 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
+ 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
+ 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
+ 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
+ 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
+ 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144,
+ 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e,
+ 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444,
+ 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450,
+ 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe,
+ 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603,
+ 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6,
+ 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f,
+ 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759,
+ 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895,
+ 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896,
+ 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19,
+ 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13,
+ /* 0xdf */
+ 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
+ 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
+ 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
+ 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
+ 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
+ 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
+ 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
+ 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144,
+ 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1,
+ 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451,
+ 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459,
+ 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434,
+ 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b,
+ 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c,
+ 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433,
+ 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450,
+ 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d,
+ 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6,
+ 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0,
+ 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4,
+ /* 0xe0 */
+ 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
+ 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
+ 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
+ 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
+ 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
+ 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
+ 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
+ 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044,
+ 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114,
+ 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a,
+ 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246,
+ 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261,
+ 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253,
+ 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692,
+ 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5,
+ 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac,
+ 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab,
+ 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4,
+ 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3,
+ 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0,
+ /* 0xe1 */
+ 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
+ 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
+ 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
+ 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
+ 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
+ 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
+ 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
+ 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3,
+ 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77,
+ 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f,
+ 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc,
+ 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6,
+ 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153,
+ 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165,
+ 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b,
+ 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d,
+ 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b,
+ 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459,
+ 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705,
+ 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9,
+ /* 0xe2 */
+ 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
+ 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
+ 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
+ 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
+ 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
+ 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
+ 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
+ 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36,
+ 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35,
+ 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39,
+ 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21,
+ 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b,
+ 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293,
+ 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475,
+ 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590,
+ 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8,
+ 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e,
+ 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab,
+ 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a,
+ 0x798b, 0x7996, 0x7995, 0x7994, 0x7993,
+ /* 0xe3 */
+ 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
+ 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
+ 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
+ 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
+ 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
+ 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
+ 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
+ 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024,
+ 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c,
+ 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce,
+ 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd,
+ 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2,
+ 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6,
+ 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db,
+ 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740,
+ 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741,
+ 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712,
+ 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724,
+ 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa,
+ 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb,
+ /* 0xe4 */
+ 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
+ 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
+ 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
+ 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
+ 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
+ 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
+ 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
+ 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6,
+ 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e,
+ 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286,
+ 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, 0x928b,
+ 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e,
+ 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce,
+ 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d,
+ 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7,
+ 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f,
+ 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8,
+ 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a,
+ 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635,
+ 0x5641, 0x564a, 0x5649, 0x5646, 0x5658,
+ /* 0xe5 */
+ 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
+ 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
+ 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
+ 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
+ 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
+ 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
+ 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
+ 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b,
+ 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d,
+ 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485,
+ 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f,
+ 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2,
+ 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af,
+ 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4,
+ 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, 0x69fe, 0x6a27,
+ 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6,
+ 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25,
+ 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5,
+ 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41,
+ 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92,
+ /* 0xe6 */
+ 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
+ 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
+ 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
+ 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
+ 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
+ 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
+ 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
+ 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362,
+ 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488,
+ 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619,
+ 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d,
+ 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb,
+ 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4,
+ 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76,
+ 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac,
+ 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc,
+ 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03,
+ 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76,
+ 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, 0x7fec, 0x7fe6,
+ 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f,
+ /* 0xe7 */
+ 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
+ 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
+ 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
+ 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
+ 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
+ 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
+ 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
+ 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756,
+ 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b,
+ 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750,
+ 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c,
+ 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a,
+ 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906,
+ 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed,
+ 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4,
+ 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3,
+ 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf,
+ 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1,
+ 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b,
+ 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27,
+ /* 0xe8 */
+ 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
+ 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
+ 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
+ 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
+ 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
+ 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
+ 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
+ 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5,
+ 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0,
+ 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a,
+ 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829,
+ 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911,
+ 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3,
+ 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc,
+ 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43,
+ 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68,
+ 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07,
+ 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3,
+ 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de,
+ 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e,
+ /* 0xe9 */
+ 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
+ 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
+ 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
+ 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
+ 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
+ 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
+ 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
+ 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf,
+ 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd,
+ 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c,
+ 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd,
+ 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67,
+ 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51,
+ 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50,
+ 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56,
+ 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7,
+ 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad,
+ 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4,
+ 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba,
+ 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8,
+ /* 0xea */
+ 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
+ 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
+ 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
+ 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
+ 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
+ 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
+ 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
+ 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797,
+ 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1,
+ 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47,
+ 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7,
+ 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea,
+ 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7,
+ 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20,
+ 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f,
+ 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c,
+ 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6,
+ 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2,
+ 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545,
+ 0x856b, 0x854d, 0x8553, 0x8561, 0x8558,
+ /* 0xeb */
+ 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
+ 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
+ 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
+ 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
+ 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
+ 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
+ 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
+ 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2,
+ 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0,
+ 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91,
+ 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c,
+ 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45,
+ 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36,
+ 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079,
+ 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190,
+ 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306,
+ 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301,
+ 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9325,
+ 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329,
+ 0x9339, 0x9335, 0x932a, 0x9314, 0x930c,
+ /* 0xec */
+ 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
+ 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
+ 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
+ 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
+ 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
+ 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
+ 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
+ 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d,
+ 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d,
+ 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87,
+ 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126,
+ 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c,
+ 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681,
+ 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23,
+ 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2,
+ 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, 0x61b5, 0x61bc,
+ 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9,
+ 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da,
+ 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b,
+ 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e,
+ /* 0xed */
+ 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
+ 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
+ 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
+ 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
+ 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
+ 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
+ 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
+ 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4,
+ 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc,
+ 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c,
+ 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1,
+ 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4,
+ 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd,
+ 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c,
+ 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47,
+ 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45,
+ 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4,
+ 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a,
+ 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b,
+ 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e,
+ /* 0xee */
+ 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
+ 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
+ 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
+ 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
+ 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
+ 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
+ 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
+ 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18,
+ 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15,
+ 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f,
+ 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f,
+ 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40,
+ 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f,
+ 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356,
+ 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351,
+ 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355,
+ 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363,
+ 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3,
+ 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718,
+ 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c,
+ /* 0xef */
+ 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
+ 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
+ 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
+ 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
+ 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
+ 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
+ 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
+ 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45,
+ 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d,
+ 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff,
+ 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e,
+ 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c,
+ 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed,
+ 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff,
+ 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db,
+ 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6,
+ 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9,
+ 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e,
+ 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201,
+ 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376,
+ /* 0xf0 */
+ 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
+ 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
+ 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
+ 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
+ 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
+ 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
+ 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
+ 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0,
+ 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3,
+ 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8,
+ 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be,
+ 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5,
+ 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8,
+ 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd,
+ 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949,
+ 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f,
+ 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e,
+ 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98,
+ 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60,
+ 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67,
+ /* 0xf1 */
+ 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
+ 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
+ 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
+ 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
+ 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
+ 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
+ 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
+ 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2,
+ 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851,
+ 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09,
+ 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0,
+ 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c,
+ 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8,
+ 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f,
+ 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52,
+ 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01,
+ 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c,
+ 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad,
+ 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912,
+ 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70,
+ /* 0xf2 */
+ 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
+ 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
+ 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
+ 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
+ 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
+ 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
+ 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
+ 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921,
+ 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c,
+ 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78,
+ 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b,
+ 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7,
+ 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9,
+ 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8,
+ 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de,
+ 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c,
+ 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962,
+ 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959,
+ 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40,
+ 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55,
+ /* 0xf3 */
+ 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
+ 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
+ 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
+ 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
+ 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
+ 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
+ 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
+ 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3,
+ 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d,
+ 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943,
+ 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b,
+ 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2,
+ 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0,
+ 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec,
+ 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81,
+ 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b,
+ 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85,
+ 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68,
+ 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d,
+ 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2,
+ /* 0xf4 */
+ 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
+ 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
+ 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
+ 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
+ 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
+ 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
+ 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
+ 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2,
+ 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47,
+ 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff,
+ 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, 0x8622, 0x85ff,
+ 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605,
+ 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816,
+ 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68,
+ 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84,
+ 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143,
+ 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb,
+ 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419,
+ 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412,
+ 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff,
+ /* 0xf5 */
+ 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
+ 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
+ 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
+ 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
+ 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
+ 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
+ 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
+ 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0,
+ 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8,
+ 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99,
+ 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e,
+ 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139,
+ 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb,
+ 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8,
+ 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046,
+ 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d,
+ 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88,
+ 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, 0x8618,
+ 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e,
+ 0x8621, 0x8620, 0x8629, 0x861e, 0x8625,
+ /* 0xf6 */
+ 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
+ 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
+ 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
+ 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
+ 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
+ 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
+ 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
+ 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f,
+ 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b,
+ 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21,
+ 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe,
+ 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac,
+ 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a,
+ 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31,
+ 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb,
+ 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520,
+ 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056,
+ 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5,
+ 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71,
+ 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a,
+ /* 0xf7 */
+ 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
+ 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
+ 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
+ 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
+ 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
+ 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
+ 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
+ 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49,
+ 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55,
+ 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c,
+ 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde,
+ 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9,
+ 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35,
+ 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299,
+ 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201,
+ 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12,
+ 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383,
+ 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640,
+ 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e,
+ 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe,
+ /* 0xf8 */
+ 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
+ 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
+ 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
+ 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
+ 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
+ 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
+ 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
+ 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71,
+ 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d,
+ 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223,
+ 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97,
+ 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94,
+ 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2,
+ 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7,
+ 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62,
+ 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05,
+ 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e,
+ 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, 0x6b18,
+ 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9,
+ 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a,
+ /* 0xf9 */
+ 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
+ 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
+ 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
+ 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
+ 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
+ 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
+ 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
+ 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4,
+ 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e,
+ 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961,
+ 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48,
+ 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481,
+ 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, 0x8b9f, 0x9483,
+ 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a,
+ 0x9ea4, 0x9f7e, 0x9f49, 0x9f98,
+};
+
+static int
+big5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if ((c1 >= 0xa1 && c1 <= 0xc7) || (c1 >= 0xc9 && c1 <= 0xf9)) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
+ unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
+ unsigned short wc = 0xfffd;
+ if (i < 6280) {
+ if (i < 6121)
+ wc = big5_2uni_pagea1[i];
+ } else {
+ if (i < 13932)
+ wc = big5_2uni_pagec9[i-6280];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short big5_2charset[13703] = {
+ 0xa246, 0xa247, 0xa244, 0xa1b1, 0xa258, 0xa1d3, 0xa150, 0xa1d1,
+ 0xa1d2, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa3bb, 0xa344, 0xa345,
+ 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, 0xa34d,
+ 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352, 0xa353, 0xa354, 0xa355,
+ 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d,
+ 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362, 0xa363, 0xa364, 0xa365,
+ 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d,
+ 0xa36e, 0xa36f, 0xa370, 0xa371, 0xa372, 0xa373, 0xc7b3, 0xc7b1,
+ 0xc7b2, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba,
+ 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2,
+ 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca,
+ 0xc7cb, 0xc7cc, 0xc7cd, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3,
+ 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db,
+ 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3,
+ 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7ce, 0xa156, 0xa158,
+ 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa145, 0xa14c, 0xa14b, 0xa1ac,
+ 0xa1ab, 0xa1b0, 0xa1c2, 0xa24a, 0xa1c1, 0xa24b, 0xa2b9, 0xa2ba,
+ 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, 0xa2c1, 0xa2c2,
+ 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1f8, 0xa1f9, 0xa1fb, 0xa1fa,
+ 0xa1d4, 0xa1db, 0xa1e8, 0xa1e7, 0xa1fd, 0xa1fc, 0xa1e4, 0xa1e5,
+ 0xa1ec, 0xa1ed, 0xa1ef, 0xa1ee, 0xa1e3, 0xa1dc, 0xa1da, 0xa1dd,
+ 0xa1d8, 0xa1d9, 0xa1e6, 0xa1e9, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec,
+ 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4,
+ 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc,
+ 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa275, 0xa274,
+ 0xa273, 0xa272, 0xa271, 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa27e,
+ 0xa2a1, 0xa2a3, 0xa2a2, 0xa2ac, 0xa2ad, 0xa2ae, 0xa262, 0xa263,
+ 0xa264, 0xa265, 0xa266, 0xa267, 0xa268, 0xa269, 0xa270, 0xa26f,
+ 0xa26e, 0xa26d, 0xa26c, 0xa26b, 0xa26a, 0xa276, 0xa279, 0xa1bd,
+ 0xa1bc, 0xa1b6, 0xa1b5, 0xa1bf, 0xa1be, 0xa1bb, 0xa1ba, 0xa1b3,
+ 0xa1b7, 0xa1b4, 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0xa1b9, 0xa1b8,
+ 0xa1f3, 0xa1f0, 0xa1f2, 0xa1f1, 0xa140, 0xa142, 0xa143, 0xa1b2,
+ 0xc6a4, 0xa171, 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179,
+ 0xa17a, 0xa169, 0xa16a, 0xa245, 0xa165, 0xa166, 0xa1a9, 0xa1aa,
+ 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca,
+ 0xa2cb, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab,
+ 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3,
+ 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb,
+ 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3,
+ 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb,
+ 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3,
+ 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db,
+ 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3,
+ 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb,
+ 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3,
+ 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6a2, 0xc6a3, 0xc6f8, 0xc6f9,
+ 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 0xc740, 0xc741, 0xc742,
+ 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a,
+ 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752,
+ 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a,
+ 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762,
+ 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a,
+ 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772,
+ 0xc773, 0xc774, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a,
+ 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4,
+ 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac,
+ 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc6a1, 0xa374, 0xa375, 0xa376,
+ 0xa377, 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e,
+ 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8,
+ 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0,
+ 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8,
+ 0xa3b9, 0xa3ba, 0xa1c0, 0xa255, 0xa256, 0xa250, 0xa251, 0xa252,
+ 0xa254, 0xa257, 0xa253, 0xa1eb, 0xa1ea, 0xa24f, 0xa440, 0xa442,
+ 0xa443, 0xc945, 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3,
+ 0xc94f, 0xc94d, 0xa4a2, 0xa4a1, 0xa542, 0xa541, 0xa540, 0xa543,
+ 0xa4fe, 0xa5e0, 0xa5e1, 0xa8c3, 0xa458, 0xa4a4, 0xc950, 0xa4a5,
+ 0xc963, 0xa6ea, 0xcbb1, 0xa459, 0xa4a6, 0xa544, 0xc964, 0xc940,
+ 0xa444, 0xa45b, 0xc947, 0xa45c, 0xa4a7, 0xa545, 0xa547, 0xa546,
+ 0xa5e2, 0xa5e3, 0xa8c4, 0xadbc, 0xa441, 0xc941, 0xa445, 0xa45e,
+ 0xa45d, 0xa5e4, 0xa8c5, 0xb0ae, 0xd44b, 0xb6c3, 0xdcb1, 0xdcb2,
+ 0xa446, 0xa4a9, 0xa8c6, 0xa447, 0xc948, 0xa45f, 0xa4aa, 0xa4ac,
+ 0xc951, 0xa4ad, 0xa4ab, 0xa5e5, 0xa8c7, 0xa8c8, 0xab45, 0xa460,
+ 0xa4ae, 0xa5e6, 0xa5e8, 0xa5e7, 0xa6eb, 0xa8c9, 0xa8ca, 0xab46,
+ 0xab47, 0xadbd, 0xdcb3, 0xf6d6, 0xa448, 0xa4b0, 0xa4af, 0xc952,
+ 0xa4b1, 0xa4b7, 0xa4b2, 0xa4b3, 0xc954, 0xc953, 0xa4b5, 0xa4b6,
+ 0xa4b4, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa549, 0xa550, 0xc96a,
+ 0xc966, 0xc969, 0xa551, 0xa561, 0xc968, 0xa54e, 0xa54f, 0xa548,
+ 0xc965, 0xc967, 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae,
+ 0xa5f3, 0xc9b2, 0xa5f4, 0xa5f7, 0xa5e9, 0xc9b1, 0xa5f8, 0xc9b5,
+ 0xc9b9, 0xc9b6, 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9, 0xa5ee, 0xc9ab,
+ 0xa5f1, 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af, 0xa5ed, 0xc9ac,
+ 0xa5eb, 0xc9b4, 0xc9b7, 0xc9ad, 0xca66, 0xa742, 0xa6f4, 0xca67,
+ 0xa6f1, 0xa744, 0xa6f9, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7, 0xca60,
+ 0xca68, 0xca64, 0xa6fa, 0xa6fd, 0xa6ee, 0xa747, 0xca5d, 0xcbbd,
+ 0xa6ec, 0xa743, 0xa6ed, 0xa6f5, 0xa6f6, 0xca62, 0xca5e, 0xa6fb,
+ 0xa6f3, 0xca5a, 0xa6ef, 0xca65, 0xa745, 0xa748, 0xa6f2, 0xa740,
+ 0xa746, 0xa6f0, 0xca63, 0xa741, 0xca69, 0xca5c, 0xa6fe, 0xca5f,
+ 0xca61, 0xa8d8, 0xcbbf, 0xcbcb, 0xa8d0, 0xcbcc, 0xa8cb, 0xa8d5,
+ 0xa8ce, 0xcbb9, 0xa8d6, 0xcbb8, 0xcbbc, 0xcbc3, 0xcbc1, 0xa8de,
+ 0xa8d9, 0xcbb3, 0xcbb5, 0xa8db, 0xa8cf, 0xcbb6, 0xcbc2, 0xcbc9,
+ 0xa8d4, 0xcbbb, 0xcbb4, 0xa8d3, 0xcbb7, 0xa8d7, 0xcbba, 0xa8d2,
+ 0xa8cd, 0xa8dc, 0xcbc4, 0xa8dd, 0xcbc8, 0xcbc6, 0xcbca, 0xa8da,
+ 0xcbbe, 0xcbb2, 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0xab56,
+ 0xab4a, 0xcde0, 0xcde8, 0xab49, 0xab51, 0xab5d, 0xcdee, 0xcdec,
+ 0xcde7, 0xab4b, 0xcded, 0xcde3, 0xab59, 0xab50, 0xab58, 0xcdde,
+ 0xcdea, 0xcde1, 0xab54, 0xcde2, 0xcddd, 0xab5b, 0xab4e, 0xab57,
+ 0xab4d, 0xcddf, 0xcde4, 0xcdeb, 0xab55, 0xab52, 0xcde6, 0xab5a,
+ 0xcde9, 0xcde5, 0xab4f, 0xab5c, 0xab53, 0xab4c, 0xab48, 0xcdef,
+ 0xadd7, 0xadc1, 0xadd1, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4, 0xd0d5,
+ 0xadc4, 0xadcd, 0xadda, 0xadce, 0xd0c9, 0xadc7, 0xd0ca, 0xaddc,
+ 0xadd3, 0xadbe, 0xadbf, 0xd0dd, 0xb0bf, 0xadcc, 0xadcb, 0xd0cb,
+ 0xadcf, 0xd45b, 0xadc6, 0xd0d6, 0xadd5, 0xadd4, 0xadca, 0xd0ce,
+ 0xd0d7, 0xd0c8, 0xadc9, 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0xadc3,
+ 0xadc2, 0xd0d9, 0xadd0, 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8,
+ 0xd0db, 0xd0cd, 0xd0dc, 0xd0d1, 0xd0da, 0xd0d2, 0xadc8, 0xd463,
+ 0xd457, 0xb0b3, 0xd45c, 0xd462, 0xb0b2, 0xd455, 0xb0b6, 0xd459,
+ 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, 0xd467, 0xd451, 0xb0ba,
+ 0xd466, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f, 0xd45d, 0xd450,
+ 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0xd85b, 0xd45e, 0xd44d,
+ 0xd45f, 0xb0c1, 0xd464, 0xb0c0, 0xd44c, 0xd454, 0xd465, 0xb0bc,
+ 0xb0bb, 0xb0b8, 0xb0bd, 0xb0af, 0xb0b0, 0xb3c8, 0xd85e, 0xd857,
+ 0xb3c5, 0xd85f, 0xd855, 0xd858, 0xb3c4, 0xd859, 0xb3c7, 0xd85d,
+ 0xd853, 0xd852, 0xb3c9, 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c,
+ 0xd85a, 0xd854, 0xb3c3, 0xd856, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd,
+ 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb,
+ 0xdcc4, 0xdcbf, 0xb6cc, 0xdcb4, 0xb6c9, 0xdcb5, 0xdcbe, 0xdcbc,
+ 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, 0xdcbb, 0xdcc2, 0xdcb9, 0xdcc1,
+ 0xb9b6, 0xb9b3, 0xb9b4, 0xe0f9, 0xe0f1, 0xb9b2, 0xb9af, 0xe0f2,
+ 0xb9b1, 0xe0f5, 0xe0f7, 0xe0fe, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0,
+ 0xb9ac, 0xe0f3, 0xb9b7, 0xe0f6, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc,
+ 0xe0fb, 0xb9b5, 0xe0f4, 0xbbf8, 0xe4ec, 0xe4e9, 0xbbf9, 0xbbf7,
+ 0xe4f0, 0xe4ed, 0xe4e6, 0xbbf6, 0xbbfa, 0xe4e7, 0xbbf5, 0xbbfd,
+ 0xe4ea, 0xe4eb, 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef, 0xbeaa,
+ 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab, 0xe8f6, 0xbea8, 0xe8f7,
+ 0xe8f4, 0xc076, 0xecbd, 0xc077, 0xecbb, 0xecbc, 0xecba, 0xecb9,
+ 0xecbe, 0xc075, 0xefb8, 0xefb9, 0xe4e8, 0xefb7, 0xc078, 0xc35f,
+ 0xf1eb, 0xf1ec, 0xc4d7, 0xc4d8, 0xf5c1, 0xf5c0, 0xc56c, 0xc56b,
+ 0xf7d0, 0xa449, 0xa461, 0xa4b9, 0xa4b8, 0xa553, 0xa552, 0xa5fc,
+ 0xa5fb, 0xa5fd, 0xa5fa, 0xa74a, 0xa749, 0xa74b, 0xa8e0, 0xa8df,
+ 0xa8e1, 0xab5e, 0xa259, 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b,
+ 0xd860, 0xa25d, 0xb9b8, 0xa25e, 0xa44a, 0xa4ba, 0xa5fe, 0xa8e2,
+ 0xa44b, 0xa4bd, 0xa4bb, 0xa4bc, 0xa640, 0xa74c, 0xa8e4, 0xa8e3,
+ 0xa8e5, 0xaddd, 0xbeac, 0xc94e, 0xa554, 0xa555, 0xa641, 0xca6a,
+ 0xab60, 0xab5f, 0xd0e0, 0xd0df, 0xb0c3, 0xa4be, 0xc955, 0xcbcd,
+ 0xab61, 0xade0, 0xadde, 0xaddf, 0xbead, 0xa556, 0xa642, 0xc9bc,
+ 0xa74d, 0xa74e, 0xca6b, 0xcbce, 0xa8e6, 0xcbcf, 0xd0e2, 0xd0e3,
+ 0xade3, 0xd0e4, 0xd0e1, 0xade4, 0xade2, 0xade1, 0xd0e5, 0xd468,
+ 0xd861, 0xdcc5, 0xe140, 0xbbfe, 0xbeae, 0xe8f9, 0xa44c, 0xa45a,
+ 0xb0c4, 0xb3cd, 0xb9b9, 0xc942, 0xa4bf, 0xa559, 0xa557, 0xa558,
+ 0xa8e7, 0xa44d, 0xa44e, 0xa462, 0xa4c0, 0xa4c1, 0xa4c2, 0xc9be,
+ 0xa55a, 0xc96b, 0xa646, 0xc9bf, 0xa644, 0xa645, 0xc9bd, 0xa647,
+ 0xa643, 0xca6c, 0xaaec, 0xca6d, 0xca6e, 0xa750, 0xa74f, 0xa753,
+ 0xa751, 0xa752, 0xa8ed, 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0xcbd0,
+ 0xa8ee, 0xa8ea, 0xa8e9, 0xa8eb, 0xa8e8, 0xa8ef, 0xab63, 0xcdf0,
+ 0xcbd3, 0xab68, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62,
+ 0xd0e8, 0xade7, 0xd0eb, 0xade5, 0xd0e7, 0xade8, 0xade6, 0xade9,
+ 0xd0e9, 0xd0ea, 0xd0e6, 0xd0ec, 0xb3d1, 0xb0c5, 0xd469, 0xd46b,
+ 0xd46a, 0xd46c, 0xb0c6, 0xb3ce, 0xb3cf, 0xb3d0, 0xb6d0, 0xdcc7,
+ 0xdcc6, 0xdcc8, 0xdcc9, 0xb6d1, 0xb6cf, 0xe141, 0xe142, 0xb9bb,
+ 0xb9ba, 0xe35a, 0xbc40, 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3,
+ 0xbc43, 0xbeaf, 0xbeb0, 0xf1ed, 0xf5c3, 0xf5c2, 0xf7d1, 0xa44f,
+ 0xa55c, 0xa55b, 0xa648, 0xc9c0, 0xa755, 0xa756, 0xa754, 0xa757,
+ 0xca6f, 0xca70, 0xa8f1, 0xcbd5, 0xa8f0, 0xcdf2, 0xab6c, 0xcdf3,
+ 0xab6b, 0xab69, 0xab6a, 0xd0ed, 0xb0c7, 0xd46e, 0xb0ca, 0xd46d,
+ 0xb1e5, 0xb0c9, 0xb0c8, 0xb3d4, 0xb3d3, 0xb3d2, 0xb6d2, 0xb6d5,
+ 0xb6d6, 0xb6d4, 0xb6d3, 0xe143, 0xe144, 0xe4f5, 0xbc45, 0xe4f4,
+ 0xbeb1, 0xecbf, 0xc079, 0xf1ee, 0xc455, 0xa463, 0xa4c3, 0xc956,
+ 0xa4c4, 0xa4c5, 0xa55d, 0xa55e, 0xa649, 0xca71, 0xcbd6, 0xcbd7,
+ 0xab6d, 0xd0ee, 0xb0cc, 0xb0cb, 0xd863, 0xd862, 0xa450, 0xa4c6,
+ 0xa55f, 0xb0cd, 0xc943, 0xc96c, 0xa560, 0xc9c2, 0xa64b, 0xa64a,
+ 0xc9c1, 0xa758, 0xadea, 0xd46f, 0xb6d7, 0xe145, 0xb9bc, 0xe8fa,
+ 0xf3fd, 0xa4c7, 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, 0xb0cf, 0xa451,
+ 0xa464, 0xa2cd, 0xa4ca, 0xa4c9, 0xa4c8, 0xa563, 0xa562, 0xc96d,
+ 0xc9c3, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0xab6e, 0xb3d5, 0xa452,
+ 0xa4cb, 0xa565, 0xa564, 0xca72, 0xa8f6, 0xc957, 0xa567, 0xa566,
+ 0xa64c, 0xa64d, 0xca73, 0xa759, 0xa75a, 0xa8f7, 0xa8f8, 0xa8f9,
+ 0xab6f, 0xcdf5, 0xadeb, 0xc944, 0xa4cc, 0xc9c4, 0xca74, 0xca75,
+ 0xcbd9, 0xcbda, 0xcdf7, 0xcdf6, 0xcdf9, 0xcdf8, 0xab70, 0xd470,
+ 0xaded, 0xd0ef, 0xadec, 0xd864, 0xb3d6, 0xd865, 0xe146, 0xb9bd,
+ 0xbc46, 0xf1ef, 0xc958, 0xa568, 0xb0d1, 0xa453, 0xa465, 0xa4ce,
+ 0xa4cd, 0xa4cf, 0xa8fb, 0xa8fa, 0xa8fc, 0xab71, 0xadee, 0xe8fb,
+ 0xc24f, 0xa466, 0xa56a, 0xa579, 0xa574, 0xa56f, 0xa56e, 0xa575,
+ 0xa573, 0xa56c, 0xa57a, 0xa56d, 0xa569, 0xa578, 0xa577, 0xa576,
+ 0xa56b, 0xa572, 0xa571, 0xa57b, 0xa570, 0xa653, 0xa659, 0xa655,
+ 0xa65b, 0xc9c5, 0xa658, 0xa64e, 0xa651, 0xa654, 0xa650, 0xa657,
+ 0xa65a, 0xa64f, 0xa652, 0xa656, 0xa65c, 0xca7e, 0xca7b, 0xa767,
+ 0xca7c, 0xa75b, 0xa75d, 0xa775, 0xa770, 0xcaa5, 0xca7d, 0xa75f,
+ 0xa761, 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d,
+ 0xca76, 0xa773, 0xa764, 0xa76e, 0xa76f, 0xca77, 0xa76c, 0xa76a,
+ 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0xa772, 0xcaa3, 0xa766, 0xa763,
+ 0xca7a, 0xa762, 0xcaa6, 0xa765, 0xa769, 0xa760, 0xcaa2, 0xca79,
+ 0xcbeb, 0xcbea, 0xa94f, 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee,
+ 0xa950, 0xcbe1, 0xcbe5, 0xcbe9, 0xce49, 0xa94b, 0xce4d, 0xa8fd,
+ 0xcbe6, 0xa8fe, 0xa94c, 0xa945, 0xa941, 0xcbe2, 0xa944, 0xa949,
+ 0xa952, 0xcbe3, 0xcbdc, 0xa943, 0xcbdd, 0xcbdf, 0xa946, 0xa948,
+ 0xcbdb, 0xcbe0, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xa94a, 0xcbde,
+ 0xa947, 0xa942, 0xa940, 0xcbec, 0xa94e, 0xce48, 0xcdfb, 0xce4b,
+ 0xcdfd, 0xab78, 0xaba8, 0xab74, 0xaba7, 0xab7d, 0xaba4, 0xab72,
+ 0xcdfc, 0xce43, 0xaba3, 0xce4f, 0xaba5, 0xab79, 0xce45, 0xce42,
+ 0xab77, 0xcdfa, 0xaba6, 0xce4a, 0xab7c, 0xce4c, 0xaba9, 0xab73,
+ 0xab7e, 0xab7b, 0xce40, 0xaba1, 0xce46, 0xce47, 0xab7a, 0xaba2,
+ 0xab76, 0xab75, 0xcdfe, 0xce44, 0xce4e, 0xd144, 0xadfb, 0xd0f1,
+ 0xd0f6, 0xadf4, 0xae40, 0xd0f4, 0xadef, 0xadf9, 0xadfe, 0xd0fb,
+ 0xadfa, 0xadfd, 0xd0fe, 0xadf5, 0xd0f5, 0xd142, 0xd143, 0xadf7,
+ 0xd141, 0xadf3, 0xae43, 0xd0f8, 0xadf1, 0xd146, 0xd0f9, 0xd0fd,
+ 0xadf6, 0xae42, 0xd0fa, 0xadfc, 0xd140, 0xd147, 0xd4a1, 0xd145,
+ 0xae44, 0xadf0, 0xd0fc, 0xd0f3, 0xadf8, 0xd0f2, 0xd0f7, 0xd0f0,
+ 0xae41, 0xd477, 0xb0e4, 0xd4a7, 0xb0e2, 0xb0df, 0xd47c, 0xb0db,
+ 0xd4a2, 0xb0e6, 0xd476, 0xd47b, 0xd47a, 0xadf2, 0xb0e1, 0xd4a5,
+ 0xd4a8, 0xd473, 0xb3e8, 0xd4a9, 0xb0e7, 0xb0d9, 0xb0d6, 0xd47e,
+ 0xb0d3, 0xd4a6, 0xb0da, 0xd4aa, 0xd474, 0xd4a4, 0xb0dd, 0xd475,
+ 0xd478, 0xd47d, 0xb0de, 0xb0dc, 0xb0e8, 0xb0e3, 0xb0d7, 0xb1d2,
+ 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0xb0d4, 0xd471,
+ 0xd472, 0xd86a, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, 0xb3d8,
+ 0xd871, 0xb3de, 0xb3e4, 0xb5bd, 0xb3e2, 0xd86e, 0xb3ef, 0xb3db,
+ 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, 0xd866, 0xd873, 0xd86d,
+ 0xb3e1, 0xd879, 0xb3dd, 0xb3f1, 0xb3ea, 0xb3df, 0xb3dc, 0xb3e7,
+ 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9, 0xd867,
+ 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0xb3ed, 0xb3e9, 0xb3e5,
+ 0xd870, 0xb3eb, 0xdcd5, 0xdcd1, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5,
+ 0xb6e6, 0xb6de, 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde,
+ 0xb6dc, 0xdcd8, 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9,
+ 0xdcdb, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0, 0xb6d8, 0xb6e4,
+ 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db, 0xa25f, 0xb6d9, 0xdcd4,
+ 0xb6e2, 0xdcdd, 0xb9cd, 0xb9c8, 0xe155, 0xe151, 0xe14b, 0xb9c2,
+ 0xb9be, 0xe154, 0xb9bf, 0xe14e, 0xe150, 0xe153, 0xb9c4, 0xb9cb,
+ 0xb9c5, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, 0xb9cc, 0xe14a, 0xe14f,
+ 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, 0xb9c0, 0xe14d, 0xe152, 0xb9ca,
+ 0xe147, 0xbc4d, 0xe547, 0xe544, 0xbc47, 0xbc53, 0xbc54, 0xbc4a,
+ 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xe546, 0xbc49, 0xe548, 0xbc48,
+ 0xe543, 0xe545, 0xbc4b, 0xe541, 0xe4fa, 0xe4f7, 0xd86b, 0xe4fd,
+ 0xe4f6, 0xe4fc, 0xe4fb, 0xe4f8, 0xbc4f, 0xbc4e, 0xbc50, 0xe4fe,
+ 0xbeb2, 0xe540, 0xe945, 0xe8fd, 0xbebe, 0xe942, 0xbeb6, 0xbeba,
+ 0xe941, 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3, 0xbebd, 0xe943, 0xe8fe,
+ 0xbebc, 0xe8fc, 0xbebb, 0xe944, 0xe940, 0xbc51, 0xbebf, 0xe946,
+ 0xbeb7, 0xbeb4, 0xecc6, 0xecc8, 0xc07b, 0xecc9, 0xecc7, 0xecc5,
+ 0xecc4, 0xc07d, 0xecc3, 0xc07e, 0xecc1, 0xecc2, 0xc07a, 0xc0a1,
+ 0xc07c, 0xecc0, 0xc250, 0xefbc, 0xefba, 0xefbf, 0xefbd, 0xefbb,
+ 0xefbe, 0xc360, 0xf1f2, 0xf1f3, 0xc456, 0xf1f4, 0xf1f0, 0xf1f5,
+ 0xf1f1, 0xc251, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457,
+ 0xc45a, 0xf5c5, 0xf5c6, 0xc4da, 0xc4d9, 0xc4db, 0xf5c4, 0xf6d8,
+ 0xf6d7, 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8, 0xf8a6, 0xc5f1,
+ 0xf8a5, 0xf8ee, 0xc949, 0xa57d, 0xa57c, 0xa65f, 0xa65e, 0xc9c7,
+ 0xa65d, 0xc9c6, 0xa779, 0xcaa9, 0xcaa8, 0xa777, 0xa77a, 0xcaa7,
+ 0xa778, 0xcbf0, 0xcbf1, 0xa954, 0xabaa, 0xd148, 0xd149, 0xae45,
+ 0xae46, 0xd4ac, 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c, 0xb3f2,
+ 0xb6e9, 0xb6ea, 0xdce1, 0xb9cf, 0xb9ce, 0xe549, 0xe948, 0xe947,
+ 0xf96b, 0xa467, 0xc959, 0xc96e, 0xc96f, 0xa662, 0xa666, 0xc9c9,
+ 0xa664, 0xa663, 0xc9c8, 0xa665, 0xa661, 0xa660, 0xc9ca, 0xa7a6,
+ 0xa7a3, 0xa77d, 0xcaaa, 0xcaab, 0xa7a1, 0xcaad, 0xa77b, 0xcaae,
+ 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, 0xa7a4, 0xa77c, 0xcaaf, 0xa959,
+ 0xcbfe, 0xa95b, 0xa95a, 0xcc40, 0xa958, 0xa957, 0xcbf5, 0xcbf4,
+ 0xcbf2, 0xcbf7, 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8,
+ 0xa956, 0xcbfb, 0xa95c, 0xcc41, 0xcbf9, 0xabab, 0xa955, 0xabac,
+ 0xce54, 0xce5a, 0xabb2, 0xce58, 0xce5e, 0xce55, 0xce59, 0xce5b,
+ 0xce5d, 0xce57, 0xce56, 0xce51, 0xce52, 0xabad, 0xabaf, 0xabae,
+ 0xce53, 0xce5c, 0xabb1, 0xce50, 0xd153, 0xd152, 0xd157, 0xd14e,
+ 0xd151, 0xd150, 0xd154, 0xd158, 0xae47, 0xae4a, 0xd14f, 0xd155,
+ 0xae49, 0xd14a, 0xabb0, 0xd4ba, 0xd156, 0xd14d, 0xae48, 0xd14c,
+ 0xd4b1, 0xb0ec, 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1, 0xd4bf,
+ 0xd4c5, 0xd4c9, 0xd4c0, 0xd4b4, 0xd4bc, 0xd4ca, 0xd4c8, 0xd4be,
+ 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5, 0xd4b7, 0xb0f6, 0xb0f2,
+ 0xd4ad, 0xd4c3, 0xd4b5, 0xd4b3, 0xd4c6, 0xb0f3, 0xd4cc, 0xb0ed,
+ 0xb0ef, 0xd4bb, 0xd4b6, 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb,
+ 0xd4c2, 0xd4c4, 0xd4ae, 0xd8a1, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2,
+ 0xb3fb, 0xb3f9, 0xd8a4, 0xb3f6, 0xd8a8, 0xd8a3, 0xd8a5, 0xd87d,
+ 0xb3f4, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, 0xb3f7, 0xb3f8, 0xd14b,
+ 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, 0xd8b0, 0xd8af, 0xd8b3,
+ 0xdcef, 0xd8ac, 0xd8a7, 0xdce7, 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6,
+ 0xdcea, 0xdce5, 0xb6ec, 0xb6f6, 0xdce2, 0xb6f0, 0xdce9, 0xb6ee,
+ 0xb6ed, 0xdcec, 0xb6ef, 0xdcee, 0xdceb, 0xb6eb, 0xb6f5, 0xdcf0,
+ 0xdce4, 0xdced, 0xdce3, 0xb6f1, 0xb6f3, 0xdce8, 0xdcf1, 0xe15d,
+ 0xb9d0, 0xe163, 0xb9d5, 0xe15f, 0xe166, 0xe157, 0xb9d7, 0xb9d1,
+ 0xe15c, 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0xb9d6, 0xe15a, 0xe160,
+ 0xe165, 0xe156, 0xb9d4, 0xe15e, 0xe162, 0xe168, 0xe158, 0xe161,
+ 0xb9d3, 0xe167, 0xe159, 0xbc59, 0xe54b, 0xbc57, 0xbc56, 0xe54d,
+ 0xe552, 0xe54e, 0xe551, 0xbc5c, 0xbea5, 0xbc5b, 0xe54a, 0xe550,
+ 0xbc5a, 0xe54f, 0xe54c, 0xbc58, 0xe94d, 0xe94f, 0xe94a, 0xbec1,
+ 0xe94c, 0xbec0, 0xe94e, 0xbec3, 0xe950, 0xbec2, 0xe949, 0xe94b,
+ 0xc0a5, 0xeccc, 0xc0a4, 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca,
+ 0xc253, 0xc252, 0xf1f6, 0xf1f8, 0xf1f7, 0xc361, 0xc362, 0xc363,
+ 0xf442, 0xc45b, 0xf7d3, 0xf7d2, 0xc5f2, 0xa468, 0xa4d0, 0xa7a7,
+ 0xce5f, 0xb3fc, 0xb3fd, 0xdcf2, 0xb9d8, 0xe169, 0xe553, 0xc95a,
+ 0xcab0, 0xcc42, 0xce60, 0xd159, 0xae4c, 0xf1f9, 0xc4dc, 0xa469,
+ 0xa57e, 0xc970, 0xa667, 0xa668, 0xa95d, 0xb0f7, 0xb9da, 0xb9db,
+ 0xb9d9, 0xa46a, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b, 0xa4d4, 0xa5a1,
+ 0xc971, 0xa5a2, 0xa669, 0xa66a, 0xc9cb, 0xa7a8, 0xcab1, 0xa961,
+ 0xcc43, 0xa95f, 0xa960, 0xa95e, 0xd15a, 0xabb6, 0xabb5, 0xabb7,
+ 0xabb4, 0xce61, 0xa962, 0xabb3, 0xae4d, 0xae4e, 0xae4f, 0xd4cd,
+ 0xb3fe, 0xd8b4, 0xb0f8, 0xb6f8, 0xb9dd, 0xb9dc, 0xe16a, 0xbc5d,
+ 0xbec4, 0xefc0, 0xf6da, 0xf7d4, 0xa46b, 0xa5a3, 0xa5a4, 0xc9d1,
+ 0xa66c, 0xa66f, 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, 0xc9cc,
+ 0xa671, 0xa670, 0xa66d, 0xa66b, 0xc9ce, 0xa7b3, 0xa7b0, 0xcab6,
+ 0xcab9, 0xcab8, 0xa7aa, 0xa7b2, 0xa7af, 0xcab5, 0xcab3, 0xa7ae,
+ 0xa7a9, 0xa7ac, 0xcab4, 0xcabb, 0xcab7, 0xa7ad, 0xa7b1, 0xa7b4,
+ 0xcab2, 0xcaba, 0xa7ab, 0xa967, 0xa96f, 0xcc4f, 0xcc48, 0xa970,
+ 0xcc53, 0xcc44, 0xcc4b, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50,
+ 0xa963, 0xcc51, 0xcc4a, 0xcc4d, 0xa972, 0xa969, 0xcc54, 0xcc52,
+ 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, 0xa96a, 0xa968,
+ 0xa971, 0xa96d, 0xa965, 0xcc4e, 0xabb9, 0xabc0, 0xce6f, 0xabb8,
+ 0xce67, 0xce63, 0xce73, 0xce62, 0xabbb, 0xce6c, 0xabbe, 0xabc1,
+ 0xabbc, 0xce70, 0xabbf, 0xae56, 0xce76, 0xce64, 0xce66, 0xce6d,
+ 0xce71, 0xce75, 0xce72, 0xce6b, 0xce6e, 0xce68, 0xabc3, 0xce6a,
+ 0xce69, 0xce74, 0xabba, 0xce65, 0xabc2, 0xabbd, 0xae5c, 0xd162,
+ 0xae5b, 0xd160, 0xae50, 0xae55, 0xd15f, 0xd15c, 0xd161, 0xae51,
+ 0xd15b, 0xae54, 0xae52, 0xd163, 0xae53, 0xae57, 0xae58, 0xae5a,
+ 0xae59, 0xd15d, 0xd15e, 0xd164, 0xd4d4, 0xb0f9, 0xd8c2, 0xd4d3,
+ 0xd4e6, 0xb140, 0xd4e4, 0xb0fe, 0xb0fa, 0xd4ed, 0xd4dd, 0xd4e0,
+ 0xb143, 0xd4ea, 0xd4e2, 0xb0fb, 0xb144, 0xd4e7, 0xd4e5, 0xd4d6,
+ 0xd4eb, 0xd4df, 0xd4da, 0xd4d0, 0xd4ec, 0xd4dc, 0xd4cf, 0xb142,
+ 0xd4e1, 0xd4ee, 0xd4de, 0xd4d2, 0xd4d7, 0xd4ce, 0xb141, 0xd4db,
+ 0xd4d8, 0xb0fc, 0xd4d1, 0xd4e9, 0xb0fd, 0xd4d9, 0xd4d5, 0xd4e8,
+ 0xb440, 0xd8bb, 0xd8b8, 0xd8c9, 0xd8bd, 0xd8ca, 0xb442, 0xd8c6,
+ 0xd8c3, 0xd8c4, 0xd8c7, 0xd8cb, 0xd4e3, 0xd8cd, 0xdd47, 0xb443,
+ 0xd8ce, 0xd8b6, 0xd8c0, 0xd8c5, 0xb441, 0xb444, 0xd8cc, 0xd8cf,
+ 0xd8ba, 0xd8b7, 0xd8b9, 0xd8be, 0xd8bc, 0xb445, 0xd8c8, 0xd8bf,
+ 0xd8c1, 0xd8b5, 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9,
+ 0xdd44, 0xdd40, 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd,
+ 0xb6fc, 0xdcfb, 0xdd41, 0xb6f9, 0xb741, 0xdcf4, 0xdcfe, 0xdcf3,
+ 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0xe16e, 0xb9e2,
+ 0xb9e1, 0xb9e3, 0xe17a, 0xe170, 0xe176, 0xe16b, 0xe179, 0xe178,
+ 0xe17c, 0xe175, 0xb9de, 0xe174, 0xb9e4, 0xe16d, 0xb9df, 0xe17b,
+ 0xb9e0, 0xe16f, 0xe172, 0xe177, 0xe171, 0xe16c, 0xe173, 0xe555,
+ 0xbc61, 0xe558, 0xe557, 0xe55a, 0xe55c, 0xbc5f, 0xe556, 0xe554,
+ 0xe55d, 0xe55b, 0xe559, 0xe55f, 0xe55e, 0xbc63, 0xbc5e, 0xbc60,
+ 0xbc62, 0xe560, 0xe957, 0xe956, 0xe955, 0xe958, 0xe951, 0xe952,
+ 0xe95a, 0xe953, 0xbec5, 0xe95c, 0xe95b, 0xe954, 0xecd1, 0xc0a8,
+ 0xeccf, 0xecd4, 0xecd3, 0xe959, 0xc0a7, 0xecd2, 0xecce, 0xecd6,
+ 0xecd5, 0xc0a6, 0xecd0, 0xbec6, 0xc254, 0xefc1, 0xf1fa, 0xf1fb,
+ 0xf1fc, 0xc45c, 0xc45d, 0xf443, 0xf5c8, 0xf5c7, 0xf6db, 0xf6dc,
+ 0xf7d5, 0xf8a7, 0xa46c, 0xa46d, 0xa46e, 0xa4d5, 0xa5a5, 0xc9d3,
+ 0xa672, 0xa673, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5, 0xa973, 0xcc55,
+ 0xa975, 0xa974, 0xcc56, 0xabc4, 0xae5d, 0xd165, 0xd4f0, 0xb145,
+ 0xb447, 0xd4ef, 0xb446, 0xb9e5, 0xe17d, 0xbec7, 0xc0a9, 0xecd7,
+ 0xc45e, 0xc570, 0xc972, 0xa5a6, 0xc973, 0xa676, 0xa674, 0xa675,
+ 0xa677, 0xa7ba, 0xa7b9, 0xcabc, 0xa7bb, 0xcabd, 0xcc57, 0xcc58,
+ 0xa976, 0xa978, 0xa97a, 0xa977, 0xa97b, 0xa979, 0xabc8, 0xabc5,
+ 0xabc7, 0xabc9, 0xabc6, 0xd166, 0xce77, 0xd168, 0xd167, 0xae63,
+ 0xae5f, 0xae60, 0xae62, 0xae64, 0xae61, 0xae66, 0xae65, 0xb14a,
+ 0xd4f2, 0xd4f1, 0xb149, 0xb148, 0xb147, 0xb14b, 0xb146, 0xd8d5,
+ 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0xb44b, 0xd8d4, 0xb448, 0xb44a,
+ 0xd8d3, 0xdd48, 0xdd49, 0xdd4a, 0xb9e6, 0xb9ee, 0xe17e, 0xb9e8,
+ 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea, 0xb9e7, 0xb9eb, 0xbc66,
+ 0xd8d0, 0xbc67, 0xbc65, 0xbc64, 0xe95d, 0xbec8, 0xecd8, 0xecd9,
+ 0xc364, 0xc45f, 0xa46f, 0xa678, 0xabca, 0xd169, 0xae67, 0xb14e,
+ 0xb14d, 0xb14c, 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470,
+ 0xc95c, 0xa4d6, 0xc974, 0xc9d4, 0xa679, 0xa97c, 0xdd4b, 0xa471,
+ 0xa4d7, 0xc9d5, 0xcabe, 0xcabf, 0xa7bc, 0xd8d8, 0xb44e, 0xdd4c,
+ 0xc0aa, 0xa472, 0xa4a8, 0xa4d8, 0xc975, 0xa5a7, 0xa7c0, 0xa7bf,
+ 0xa7bd, 0xa7be, 0xcc59, 0xa97e, 0xa9a1, 0xcc5a, 0xa97d, 0xabce,
+ 0xce78, 0xabcd, 0xabcb, 0xabcc, 0xae6a, 0xae68, 0xd16b, 0xae69,
+ 0xd16a, 0xae5e, 0xd4f3, 0xb150, 0xb151, 0xb14f, 0xb9f0, 0xe1a2,
+ 0xbc68, 0xbc69, 0xe561, 0xc0ab, 0xefc2, 0xefc3, 0xc4dd, 0xf8a8,
+ 0xc94b, 0xa4d9, 0xa473, 0xc977, 0xc976, 0xa67a, 0xc9d7, 0xc9d8,
+ 0xc9d6, 0xc9d9, 0xcac7, 0xcac2, 0xcac4, 0xcac6, 0xcac3, 0xa7c4,
+ 0xcac0, 0xcac1, 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3, 0xcac9,
+ 0xcc68, 0xcc62, 0xcc5d, 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69,
+ 0xcc6c, 0xcc67, 0xcc60, 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64,
+ 0xcc5b, 0xcc5f, 0xcc6b, 0xa9a7, 0xa9a8, 0xcc5e, 0xcc6a, 0xa9a2,
+ 0xa9a4, 0xceab, 0xcea4, 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b,
+ 0xceac, 0xcea9, 0xce79, 0xabd0, 0xcea7, 0xcea8, 0xcea6, 0xce7c,
+ 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0xcea1, 0xcead, 0xae6f, 0xae6e,
+ 0xd16c, 0xae6b, 0xd16e, 0xae70, 0xd16f, 0xae73, 0xae71, 0xd170,
+ 0xceae, 0xd172, 0xae6d, 0xae6c, 0xd16d, 0xd171, 0xae72, 0xb153,
+ 0xb152, 0xd4f5, 0xd4f9, 0xd4fb, 0xb154, 0xd4fe, 0xb158, 0xd541,
+ 0xb15a, 0xb156, 0xb15e, 0xb15b, 0xd4f7, 0xb155, 0xd4f6, 0xd4f4,
+ 0xd543, 0xd4f8, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d,
+ 0xd4fa, 0xb159, 0xd544, 0xd540, 0xd8e7, 0xd8ee, 0xd8e3, 0xb451,
+ 0xd8df, 0xd8ef, 0xd8d9, 0xd8ec, 0xd8ea, 0xd8e4, 0xd8ed, 0xd8e6,
+ 0xd8de, 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da, 0xd8f1, 0xb452, 0xd8eb,
+ 0xdd4f, 0xd8dd, 0xb44f, 0xd8e1, 0xb450, 0xd8e0, 0xd8e5, 0xd8e2,
+ 0xd8e8, 0xdd53, 0xdd56, 0xdd4e, 0xdd50, 0xdd55, 0xdd54, 0xb743,
+ 0xd8db, 0xdd52, 0xb744, 0xdd4d, 0xdd51, 0xe1a9, 0xe1b0, 0xe1a7,
+ 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, 0xe1a4, 0xe1a8, 0xe1a3, 0xb9f1,
+ 0xe1a6, 0xb9f2, 0xe1ac, 0xe1ab, 0xe1aa, 0xe1af, 0xe565, 0xe567,
+ 0xbc6b, 0xe568, 0xe563, 0xe562, 0xe56c, 0xe56a, 0xbc6a, 0xe56d,
+ 0xe564, 0xe569, 0xe56b, 0xe566, 0xe961, 0xe966, 0xe960, 0xe965,
+ 0xe95e, 0xe968, 0xe964, 0xe969, 0xe963, 0xe95f, 0xe967, 0xe96a,
+ 0xe962, 0xecda, 0xc0af, 0xc0ad, 0xc0ac, 0xc0ae, 0xefc4, 0xf172,
+ 0xf1fd, 0xf444, 0xf445, 0xc460, 0xf5c9, 0xc4de, 0xf5ca, 0xf6de,
+ 0xc572, 0xc571, 0xf6dd, 0xc5c9, 0xf7d6, 0xa474, 0xa67b, 0xc9da,
+ 0xcaca, 0xa8b5, 0xb15f, 0xa475, 0xa5aa, 0xa5a9, 0xa5a8, 0xa7c5,
+ 0xae74, 0xdd57, 0xa476, 0xa477, 0xa478, 0xa4da, 0xabd1, 0xceaf,
+ 0xb453, 0xa479, 0xc95d, 0xa5ab, 0xa5ac, 0xc978, 0xa67c, 0xcacb,
+ 0xa7c6, 0xcacc, 0xa9ae, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d, 0xa9a9,
+ 0xcc6f, 0xa9aa, 0xa9ad, 0xabd2, 0xabd4, 0xceb3, 0xceb0, 0xceb1,
+ 0xceb2, 0xceb4, 0xabd3, 0xd174, 0xd173, 0xae76, 0xae75, 0xb162,
+ 0xd546, 0xb161, 0xb163, 0xb160, 0xb455, 0xd545, 0xb456, 0xd8f3,
+ 0xb457, 0xd8f2, 0xb454, 0xdd5a, 0xdd5c, 0xb745, 0xdd5b, 0xdd59,
+ 0xdd58, 0xe1b4, 0xb9f7, 0xb9f5, 0xb9f6, 0xe1b2, 0xe1b3, 0xb9f3,
+ 0xe571, 0xe56f, 0xbc6d, 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0xe96d,
+ 0xe96b, 0xe96c, 0xe56e, 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6,
+ 0xe96e, 0xf1fe, 0xa47a, 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0xa9af,
+ 0xb746, 0xa4db, 0xa5ae, 0xabd5, 0xb458, 0xc979, 0xc97a, 0xc9dc,
+ 0xa7c8, 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1, 0xa7c7,
+ 0xa9b3, 0xa9b4, 0xa9b1, 0xa9b0, 0xceb8, 0xa9b2, 0xabd6, 0xceb7,
+ 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79, 0xd175, 0xd177, 0xae77,
+ 0xd178, 0xae78, 0xd176, 0xceb5, 0xd547, 0xd54a, 0xd54b, 0xd548,
+ 0xb167, 0xb166, 0xb164, 0xb165, 0xd549, 0xb168, 0xb45a, 0xb45b,
+ 0xb45c, 0xdd5d, 0xdd5f, 0xdd61, 0xb748, 0xb747, 0xb459, 0xdd60,
+ 0xdd5e, 0xe1b8, 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9,
+ 0xe1b7, 0xe1b5, 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574,
+ 0xbc71, 0xbc74, 0xe575, 0xbc6f, 0xbc73, 0xe973, 0xe971, 0xe970,
+ 0xe972, 0xe96f, 0xc366, 0xf446, 0xf447, 0xf5cb, 0xf6df, 0xc655,
+ 0xa9b5, 0xa7ca, 0xabd8, 0xa47b, 0xa4dc, 0xa5af, 0xc9dd, 0xa7cb,
+ 0xcad2, 0xcebb, 0xabd9, 0xb9fa, 0xa47c, 0xa6a1, 0xb749, 0xa47d,
+ 0xa4dd, 0xa4de, 0xa5b1, 0xa5b0, 0xc9de, 0xa6a2, 0xcad3, 0xa7cc,
+ 0xcc71, 0xcc72, 0xcc73, 0xa9b6, 0xa9b7, 0xcc70, 0xa9b8, 0xabda,
+ 0xcebc, 0xd17a, 0xae7a, 0xd179, 0xb169, 0xd54c, 0xb16a, 0xd54d,
+ 0xb45d, 0xdd62, 0xe1bf, 0xe1be, 0xb9fb, 0xbc75, 0xe576, 0xbeca,
+ 0xe974, 0xc0b1, 0xc573, 0xf7d8, 0xcc74, 0xcebd, 0xb16b, 0xd8f4,
+ 0xb74a, 0xc255, 0xa7ce, 0xa7cd, 0xabdb, 0xd17b, 0xb16d, 0xb343,
+ 0xb16e, 0xb16c, 0xb45e, 0xe1c0, 0xb9fc, 0xbc76, 0xc94c, 0xc9df,
+ 0xcad5, 0xa7cf, 0xcad4, 0xa7d0, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb,
+ 0xa9b9, 0xa9ba, 0xcc75, 0xabdd, 0xcebe, 0xabe0, 0xabdc, 0xabe2,
+ 0xabde, 0xabdf, 0xabe1, 0xae7d, 0xae7c, 0xae7b, 0xd54f, 0xb16f,
+ 0xb172, 0xb170, 0xd54e, 0xb175, 0xb171, 0xd550, 0xb174, 0xb173,
+ 0xd8f6, 0xd8f5, 0xb461, 0xb45f, 0xb460, 0xd8f7, 0xb74b, 0xdd64,
+ 0xb74c, 0xdd63, 0xe577, 0xbc78, 0xe1c1, 0xbc77, 0xb9fd, 0xecde,
+ 0xe975, 0xc0b2, 0xecdd, 0xf240, 0xf448, 0xf449, 0xa4df, 0xa5b2,
+ 0xc97b, 0xa7d2, 0xa7d4, 0xc9e2, 0xcad8, 0xcad7, 0xcad6, 0xc9e1,
+ 0xc9e0, 0xa6a4, 0xa7d3, 0xa7d1, 0xa6a3, 0xa9bd, 0xcc78, 0xa9be,
+ 0xcadd, 0xcadf, 0xcade, 0xcc79, 0xcada, 0xa7d8, 0xa7d6, 0xcad9,
+ 0xcadb, 0xcae1, 0xa7d5, 0xcadc, 0xcae5, 0xa9c0, 0xcae2, 0xa7d7,
+ 0xcae0, 0xcae3, 0xa9bf, 0xa9c1, 0xcae4, 0xccaf, 0xcca2, 0xcc7e,
+ 0xccae, 0xcca9, 0xabe7, 0xa9c2, 0xccaa, 0xccad, 0xabe3, 0xccac,
+ 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, 0xcc7c, 0xcca5, 0xa9cd, 0xccb0,
+ 0xabe4, 0xcca6, 0xabe5, 0xa9c9, 0xcca8, 0xcecd, 0xabe6, 0xcc7b,
+ 0xa9ca, 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7, 0xcc7a, 0xccab,
+ 0xa9c4, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5, 0xcebf, 0xcec0, 0xceca,
+ 0xd1a1, 0xcecb, 0xabee, 0xcece, 0xcec4, 0xabed, 0xcec6, 0xcec7,
+ 0xcec9, 0xabe9, 0xaea3, 0xcec5, 0xcec1, 0xaea4, 0xcecf, 0xae7e,
+ 0xd17d, 0xcec8, 0xd17c, 0xcec3, 0xcecc, 0xabec, 0xaea1, 0xabf2,
+ 0xaea2, 0xced0, 0xd17e, 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef,
+ 0xaea5, 0xced1, 0xaea7, 0xabea, 0xcec2, 0xb176, 0xd1a4, 0xd1a6,
+ 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, 0xd1a3, 0xb178, 0xd551,
+ 0xaead, 0xaeab, 0xd1ae, 0xd552, 0xd1a5, 0xaeac, 0xd1a9, 0xaeaf,
+ 0xd1ab, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xaea9, 0xb179, 0xd1a2,
+ 0xb177, 0xb17a, 0xd555, 0xd55e, 0xb464, 0xb17c, 0xb1a3, 0xb465,
+ 0xd560, 0xb1aa, 0xd8f9, 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554,
+ 0xd562, 0xd565, 0xd949, 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac,
+ 0xd55d, 0xd8f8, 0xd561, 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559,
+ 0xb462, 0xd557, 0xd558, 0xb1a7, 0xb1a6, 0xd55b, 0xb1ab, 0xd55f,
+ 0xb1a4, 0xd55c, 0xb1a9, 0xb466, 0xb463, 0xd8fb, 0xd55a, 0xb17d,
+ 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d, 0xd944, 0xb471, 0xdd65,
+ 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947, 0xd948, 0xd94e, 0xb473,
+ 0xb754, 0xd94a, 0xd94f, 0xd943, 0xb75e, 0xb755, 0xb472, 0xd941,
+ 0xd950, 0xb75d, 0xb470, 0xb74e, 0xd94d, 0xb474, 0xd945, 0xd8fe,
+ 0xb46a, 0xd942, 0xd94b, 0xb74d, 0xb752, 0xb467, 0xd94c, 0xb750,
+ 0xb468, 0xb75c, 0xe1c3, 0xdd70, 0xdd68, 0xe1c2, 0xdd6c, 0xdd6e,
+ 0xdd6b, 0xb75b, 0xdd6a, 0xb75f, 0xe1d2, 0xb75a, 0xba40, 0xdd71,
+ 0xe1c4, 0xb758, 0xdd69, 0xdd6d, 0xb9fe, 0xb74f, 0xdd66, 0xdd67,
+ 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f, 0xe1c8, 0xe1c9, 0xe1ce,
+ 0xbc7d, 0xe1d5, 0xba47, 0xba46, 0xe1d0, 0xbc7c, 0xe1c5, 0xba45,
+ 0xe1d4, 0xba43, 0xba44, 0xe1d1, 0xe5aa, 0xbc7a, 0xb46e, 0xe1d3,
+ 0xbca3, 0xe1cb, 0xbc7b, 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7, 0xe1cd,
+ 0xba48, 0xbc79, 0xba42, 0xe57a, 0xe1cf, 0xbca1, 0xbca4, 0xe1cc,
+ 0xbc7e, 0xe579, 0xe57e, 0xbece, 0xe578, 0xe9a3, 0xe5a9, 0xbca8,
+ 0xbca6, 0xbecc, 0xe5a6, 0xe5a2, 0xbcac, 0xe978, 0xbcaa, 0xe5a1,
+ 0xe976, 0xe5a5, 0xe5a8, 0xe57d, 0xbcab, 0xbca5, 0xe977, 0xbecd,
+ 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, 0xe57c, 0xe57b,
+ 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0xe9a2, 0xe97e, 0xece1,
+ 0xbed1, 0xe9a1, 0xe97c, 0xc0b4, 0xecdf, 0xe979, 0xe97b, 0xc0b5,
+ 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d, 0xbecf, 0xefcf, 0xefc7,
+ 0xece7, 0xefc8, 0xece3, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2,
+ 0xece6, 0xefd0, 0xefcc, 0xefce, 0xefc9, 0xefca, 0xefcd, 0xefcb,
+ 0xc367, 0xc36a, 0xc369, 0xc368, 0xc461, 0xf44a, 0xc462, 0xf241,
+ 0xc4df, 0xf5cc, 0xc4e0, 0xc574, 0xc5ca, 0xf7d9, 0xf7da, 0xf7db,
+ 0xf9ba, 0xa4e0, 0xc97c, 0xa5b3, 0xa6a6, 0xa6a7, 0xa6a5, 0xa6a8,
+ 0xa7da, 0xa7d9, 0xccb1, 0xa9cf, 0xa9ce, 0xd1af, 0xb1ad, 0xb1ae,
+ 0xb475, 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0xe1d7,
+ 0xe1d6, 0xba49, 0xe1d8, 0xe5ac, 0xbcae, 0xbed4, 0xc0b8, 0xc257,
+ 0xc0b9, 0xa4e1, 0xcae6, 0xccb2, 0xa9d1, 0xa9d0, 0xa9d2, 0xabf3,
+ 0xced2, 0xced3, 0xd1b0, 0xaeb0, 0xb1af, 0xb476, 0xd951, 0xa4e2,
+ 0xa47e, 0xa4e3, 0xc97d, 0xa5b7, 0xa5b6, 0xa5b4, 0xa5b5, 0xa6ab,
+ 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3, 0xc9e4, 0xc9ea, 0xc9e6, 0xc9e8,
+ 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7, 0xa7e1, 0xa7ea, 0xa7e8, 0xcaf0,
+ 0xcaed, 0xcaf5, 0xa7e6, 0xcaf6, 0xa7df, 0xcaf3, 0xa7e5, 0xcaef,
+ 0xcaee, 0xa7e3, 0xcaf4, 0xa7e4, 0xa9d3, 0xa7de, 0xcaf1, 0xcae7,
+ 0xa7db, 0xa7ee, 0xcaec, 0xcaf2, 0xa7e0, 0xa7e2, 0xcae8, 0xcae9,
+ 0xcaea, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc,
+ 0xa7e9, 0xa9e1, 0xccbe, 0xccb7, 0xa9dc, 0xa9ef, 0xccb3, 0xccba,
+ 0xccbc, 0xccbf, 0xa9ea, 0xccbb, 0xccb4, 0xa9e8, 0xccb8, 0xccc0,
+ 0xa9d9, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6, 0xa9d7, 0xa9d8, 0xa9d6,
+ 0xa9ee, 0xa9e6, 0xa9e0, 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7,
+ 0xa9f0, 0xced4, 0xa9e4, 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xa9ec,
+ 0xa9ed, 0xa9eb, 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0xceda, 0xac41,
+ 0xabf8, 0xabfa, 0xac40, 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43,
+ 0xced7, 0xcedf, 0xabfe, 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7,
+ 0xabfb, 0xac42, 0xaeb3, 0xcee0, 0xabf9, 0xac45, 0xced9, 0xabfc,
+ 0xaeb2, 0xabf6, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, 0xd1b2,
+ 0xac44, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0xaec1, 0xd1be, 0xaebf,
+ 0xaec0, 0xd1b4, 0xd1c4, 0xaeb6, 0xd566, 0xd1c6, 0xd1c0, 0xd1b7,
+ 0xd1c9, 0xd1ba, 0xaebc, 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0xd1cb,
+ 0xd1bf, 0xaeb8, 0xd1b8, 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, 0xd1cc,
+ 0xaebb, 0xd1bc, 0xd1bb, 0xaec3, 0xaec2, 0xaeb4, 0xaeba, 0xaebd,
+ 0xd1c8, 0xd1c2, 0xaeb7, 0xd1b3, 0xd1ca, 0xd1c1, 0xd1c3, 0xd1c7,
+ 0xd567, 0xb1b7, 0xb1cb, 0xb1ca, 0xb1bf, 0xd579, 0xd575, 0xd572,
+ 0xd5a6, 0xb1ba, 0xb1b2, 0xd577, 0xb4a8, 0xb1b6, 0xd5a1, 0xb1cc,
+ 0xb1c9, 0xd57b, 0xd56a, 0xb1c8, 0xd5a3, 0xd569, 0xb1bd, 0xb1c1,
+ 0xd5a2, 0xd573, 0xb1c2, 0xb1bc, 0xd568, 0xb478, 0xd5a5, 0xd571,
+ 0xb1c7, 0xd574, 0xd5a4, 0xb1c6, 0xd952, 0xb1b3, 0xd56f, 0xb1b8,
+ 0xb1c3, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e, 0xb1b0, 0xb1c4,
+ 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0xb1b1, 0xb1c0, 0xb1bb, 0xb1b9,
+ 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, 0xd954, 0xd953, 0xd56b,
+ 0xd964, 0xb47a, 0xd96a, 0xd959, 0xd967, 0xdd77, 0xb47d, 0xd96b,
+ 0xd96e, 0xb47c, 0xd95c, 0xd96d, 0xd96c, 0xb47e, 0xd955, 0xb479,
+ 0xb4a3, 0xb4a1, 0xd969, 0xd95f, 0xb4a5, 0xd970, 0xd968, 0xd971,
+ 0xb4ad, 0xb4ab, 0xd966, 0xd965, 0xd963, 0xd95d, 0xb4a4, 0xb4a2,
+ 0xd1b9, 0xd956, 0xddb7, 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0xb4a6,
+ 0xb4a7, 0xd958, 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961,
+ 0xd95e, 0xb4ae, 0xb770, 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c,
+ 0xddbb, 0xb769, 0xdd7a, 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e,
+ 0xb76f, 0xdda5, 0xddb2, 0xddb8, 0xb76a, 0xb764, 0xdda3, 0xdd7d,
+ 0xddba, 0xdda8, 0xdda9, 0xdd7e, 0xddb4, 0xddab, 0xddb5, 0xddad,
+ 0xb765, 0xe1d9, 0xb768, 0xb766, 0xddb9, 0xddb0, 0xddac, 0xdda1,
+ 0xba53, 0xddaf, 0xb76d, 0xdda7, 0xdda6, 0xb767, 0xb763, 0xe1ee,
+ 0xddb3, 0xddae, 0xdda2, 0xe1e9, 0xe1da, 0xe1e5, 0xe1ec, 0xba51,
+ 0xb4ac, 0xe1ea, 0xba4c, 0xba4b, 0xe1f1, 0xe1db, 0xe1e8, 0xe1dc,
+ 0xe1e7, 0xba4f, 0xe1eb, 0xd962, 0xe1f2, 0xe1e3, 0xba52, 0xe5ba,
+ 0xbcaf, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0, 0xe5ae, 0xe1df,
+ 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3, 0xba4e, 0xbcb1, 0xba50,
+ 0xba55, 0xe1e1, 0xe1ed, 0xe1e6, 0xe5b1, 0xba4a, 0xbcb4, 0xe9aa,
+ 0xe5b6, 0xe5b5, 0xe5b7, 0xe5b4, 0xbcb5, 0xbcbb, 0xbcb8, 0xbcb9,
+ 0xe5af, 0xe5b2, 0xe5bc, 0xbcc1, 0xbcbf, 0xe5b3, 0xd95a, 0xbcb2,
+ 0xe5b9, 0xe5b0, 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0xbcba,
+ 0xbcbe, 0xbcc0, 0xbcbd, 0xbcbc, 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3,
+ 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, 0xbed6, 0xbedd, 0xe9ab,
+ 0xbedb, 0xbed5, 0xbedc, 0xe9a8, 0xc0bb, 0xbed7, 0xbede, 0xc0ba,
+ 0xe9a7, 0xe9a6, 0xbee0, 0xbee1, 0xe9a5, 0xe9a4, 0xc0bc, 0xe9ae,
+ 0xbeda, 0xe9ac, 0xc0bd, 0xc0c2, 0xecea, 0xecec, 0xc0bf, 0xeced,
+ 0xece9, 0xeceb, 0xc0c0, 0xc0c3, 0xece8, 0xc0be, 0xc0c1, 0xc259,
+ 0xe9ad, 0xc258, 0xc25e, 0xefd4, 0xc25c, 0xc25d, 0xefd7, 0xefd3,
+ 0xc25a, 0xefd1, 0xc36b, 0xefd5, 0xefd6, 0xefd2, 0xc25b, 0xf242,
+ 0xf245, 0xf246, 0xf244, 0xf247, 0xc36c, 0xf243, 0xf44e, 0xc464,
+ 0xf44d, 0xf44c, 0xf44b, 0xc463, 0xc465, 0xf5cd, 0xc4e2, 0xc4e1,
+ 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb, 0xc575, 0xf7dd, 0xf6e2, 0xf7dc,
+ 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9, 0xf8ef, 0xa4e4, 0xd972, 0xe9af,
+ 0xa6ac, 0xcaf7, 0xa7f1, 0xa7ef, 0xa7f0, 0xccc1, 0xa9f1, 0xac46,
+ 0xcee7, 0xcee8, 0xac47, 0xd1ce, 0xaec4, 0xaec5, 0xd1cd, 0xb1d3,
+ 0xb1cf, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, 0xb1d4, 0xb1d0,
+ 0xd976, 0xb1cd, 0xb4af, 0xb4b1, 0xb4b2, 0xd975, 0xd978, 0xb4b0,
+ 0xd973, 0xd977, 0xd974, 0xb771, 0xddbc, 0xba56, 0xe1f4, 0xbee3,
+ 0xbcc4, 0xe5bd, 0xbcc5, 0xbcc6, 0xe5bf, 0xe5be, 0xe5c0, 0xe9b1,
+ 0xe9b0, 0xecef, 0xecee, 0xc0c4, 0xc0c5, 0xf248, 0xa4e5, 0xd979,
+ 0xb4b4, 0xb4b3, 0xddbd, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, 0xaec6,
+ 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, 0xe1f5, 0xba57, 0xe9b2,
+ 0xa4e7, 0xa5b8, 0xa9f2, 0xccc2, 0xcee9, 0xac48, 0xb1d9, 0xd97c,
+ 0xb4b5, 0xb773, 0xe5c1, 0xe5c2, 0xecf0, 0xc25f, 0xf8f0, 0xa4e8,
+ 0xccc3, 0xa9f3, 0xac49, 0xceea, 0xaec7, 0xd1d2, 0xd1d0, 0xd1d1,
+ 0xaec8, 0xd1cf, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd, 0xb1da, 0xd97d,
+ 0xd97e, 0xddbe, 0xba59, 0xba58, 0xecf1, 0xefd9, 0xf24a, 0xf249,
+ 0xf44f, 0xc95e, 0xac4a, 0xa4e9, 0xa5b9, 0xa6ae, 0xa6ad, 0xa6af,
+ 0xa6b0, 0xc9ee, 0xc9ed, 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9,
+ 0xcafc, 0xa9f4, 0xccc9, 0xccc5, 0xccce, 0xa9fb, 0xa9f9, 0xccca,
+ 0xccc6, 0xcccd, 0xa9f8, 0xaa40, 0xccc8, 0xccc4, 0xa9fe, 0xcccb,
+ 0xa9f7, 0xcccc, 0xa9fa, 0xa9fc, 0xccd0, 0xcccf, 0xccc7, 0xa9f6,
+ 0xa9f5, 0xa9fd, 0xceef, 0xcef5, 0xac50, 0xac4d, 0xceec, 0xcef1,
+ 0xac53, 0xac4b, 0xcef0, 0xac4e, 0xac51, 0xcef3, 0xac4c, 0xcef8,
+ 0xac4f, 0xac52, 0xceed, 0xcef2, 0xcef6, 0xceee, 0xceeb, 0xcef7,
+ 0xcef4, 0xaed0, 0xaec9, 0xaecc, 0xaecf, 0xd1d5, 0xaeca, 0xd1d3,
+ 0xaece, 0xaecb, 0xd1d6, 0xaecd, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad,
+ 0xb1de, 0xb1e3, 0xd1d4, 0xd5aa, 0xd5ae, 0xb1e0, 0xd5a9, 0xb1e2,
+ 0xb1e1, 0xd9a7, 0xd9a2, 0xb4b6, 0xb4ba, 0xb4b7, 0xd9a5, 0xd9a8,
+ 0xb4b8, 0xb4b9, 0xb4be, 0xddc7, 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1,
+ 0xb4bd, 0xd9a4, 0xb779, 0xddbf, 0xb776, 0xb777, 0xb775, 0xddc4,
+ 0xddc3, 0xddc0, 0xb77b, 0xddc2, 0xb4bb, 0xddc6, 0xddc1, 0xb778,
+ 0xb774, 0xb77a, 0xddc5, 0xba5c, 0xe1f8, 0xe1f7, 0xe1f6, 0xba5a,
+ 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0xbcc7, 0xe5c9, 0xe5c4, 0xbcca,
+ 0xe5c6, 0xbcc9, 0xe5c3, 0xe5c7, 0xbee9, 0xbee6, 0xe9bb, 0xe9ba,
+ 0xe9b9, 0xe9b4, 0xe9b5, 0xbee7, 0xbee4, 0xbee8, 0xe9b3, 0xbee5,
+ 0xe9b6, 0xe9b7, 0xe9bc, 0xe9b8, 0xecf2, 0xc0c7, 0xefdc, 0xc0c6,
+ 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0xc36d, 0xf451, 0xf452,
+ 0xc466, 0xf450, 0xc4e4, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0xa4ea,
+ 0xa6b1, 0xa6b2, 0xa7f3, 0xccd1, 0xac54, 0xaed1, 0xb1e4, 0xb0d2,
+ 0xb4bf, 0xb4c0, 0xb3cc, 0xd9a9, 0xb77c, 0xe1fa, 0xe1f9, 0xa4eb,
+ 0xa6b3, 0xccd2, 0xaa42, 0xaa41, 0xcef9, 0xcefa, 0xd1d7, 0xd1d8,
+ 0xaed2, 0xaed3, 0xaed4, 0xd5af, 0xb1e6, 0xb4c2, 0xb4c1, 0xddc8,
+ 0xdf7a, 0xe1fb, 0xe9bd, 0xc261, 0xc467, 0xa4ec, 0xa5bc, 0xa5bd,
+ 0xa5bb, 0xa5be, 0xa5ba, 0xa6b6, 0xc9f6, 0xa6b5, 0xa6b7, 0xc9f1,
+ 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4, 0xcafd,
+ 0xa7fd, 0xcafe, 0xcb43, 0xa7fc, 0xcb47, 0xcb42, 0xcb45, 0xa7f5,
+ 0xa7f6, 0xa7f7, 0xa7f8, 0xa840, 0xcb41, 0xa7fa, 0xa841, 0xcb40,
+ 0xcb46, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, 0xa7fe, 0xaa57, 0xccd4,
+ 0xaa43, 0xaa4d, 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53,
+ 0xccd7, 0xaa49, 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4,
+ 0xaa51, 0xaa4f, 0xcce5, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a,
+ 0xaa50, 0xaa44, 0xccde, 0xccdd, 0xccd5, 0xaa52, 0xcce1, 0xccd6,
+ 0xaa55, 0xcce8, 0xaa45, 0xaa4c, 0xccd9, 0xcce2, 0xaa54, 0xaa47,
+ 0xaa4b, 0xcce0, 0xcf5b, 0xac5c, 0xac69, 0xcf56, 0xcf4c, 0xac62,
+ 0xcf4a, 0xac5b, 0xcf45, 0xac65, 0xcf52, 0xcefe, 0xcf41, 0xcf44,
+ 0xcefb, 0xcf51, 0xcf61, 0xac60, 0xcf46, 0xcf58, 0xcefd, 0xcf5f,
+ 0xcf60, 0xcf63, 0xcf5a, 0xcf4b, 0xcf53, 0xac66, 0xac59, 0xac61,
+ 0xac6d, 0xac56, 0xac58, 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40,
+ 0xac6c, 0xac67, 0xcf49, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c,
+ 0xcf54, 0xac5e, 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f,
+ 0xcf55, 0xac57, 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d,
+ 0xcf42, 0xcf5e, 0xcf57, 0xac55, 0xd1ec, 0xaeea, 0xd1ed, 0xd1e1,
+ 0xaedf, 0xaeeb, 0xd1da, 0xd1e3, 0xd1eb, 0xd1d9, 0xd1f4, 0xaed5,
+ 0xd1f3, 0xd1ee, 0xd1ef, 0xaedd, 0xaee8, 0xd1e5, 0xd1e6, 0xd1f0,
+ 0xd1e7, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4, 0xaed6, 0xaeda,
+ 0xd1f2, 0xd1de, 0xaee6, 0xaee2, 0xaee5, 0xaeec, 0xaedb, 0xaee7,
+ 0xd1e9, 0xaee9, 0xaed8, 0xaed7, 0xd1db, 0xd1df, 0xaee0, 0xd1f1,
+ 0xd1e8, 0xd1e0, 0xaee4, 0xaee1, 0xaed9, 0xaedc, 0xd5c4, 0xd5b4,
+ 0xd5b5, 0xd5b9, 0xd5c8, 0xd5c5, 0xd5be, 0xd5bd, 0xb1ed, 0xd5c1,
+ 0xd5d0, 0xd5b0, 0xd5d1, 0xd5c3, 0xd5d5, 0xd5c9, 0xb1ec, 0xd5c7,
+ 0xb1e7, 0xb1fc, 0xb1f2, 0xb1f6, 0xb1f5, 0xd5b1, 0xd5ce, 0xd5d4,
+ 0xd5cc, 0xd5d3, 0xd5c0, 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7,
+ 0xd5cb, 0xb1f0, 0xd5ca, 0xd5b3, 0xb1f8, 0xb1fa, 0xd5cd, 0xb1fb,
+ 0xb1e9, 0xd5ba, 0xd5cf, 0xb1ef, 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7,
+ 0xd5bb, 0xb1f4, 0xd5b6, 0xb1e8, 0xb1f1, 0xb1ee, 0xd5bf, 0xaede,
+ 0xd9c0, 0xb1eb, 0xb1f3, 0xd9c3, 0xd9d9, 0xd9ce, 0xb4d6, 0xb4d1,
+ 0xd9bd, 0xb4d2, 0xd9cd, 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5,
+ 0xb4c4, 0xd9b3, 0xb4c7, 0xb4c6, 0xb4d7, 0xd9ad, 0xd9cf, 0xd9d0,
+ 0xb4c9, 0xb4c5, 0xd9bb, 0xb4d0, 0xd9b6, 0xd9d1, 0xb4cc, 0xd9c9,
+ 0xd9d6, 0xd9b0, 0xd9b5, 0xd9af, 0xb4cb, 0xd9c2, 0xddde, 0xd9b1,
+ 0xb4cf, 0xd9ba, 0xd9d2, 0xb4ca, 0xd9b7, 0xd9b4, 0xd9c5, 0xb4cd,
+ 0xb4c3, 0xb4d9, 0xd9c8, 0xd9c7, 0xd9ac, 0xb4c8, 0xd9d4, 0xd9bc,
+ 0xd9be, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5, 0xd9b2, 0xd9b9,
+ 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0xd9cc, 0xd9d8, 0xd9ae,
+ 0xddf2, 0xb7a6, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xddec, 0xddcb,
+ 0xddd2, 0xddea, 0xddf4, 0xdddc, 0xddcf, 0xdde2, 0xdde7, 0xddd3,
+ 0xdde4, 0xddd0, 0xddd7, 0xddd8, 0xb7a8, 0xddeb, 0xdde9, 0xddcc,
+ 0xddee, 0xddef, 0xddf1, 0xb7ac, 0xb7a4, 0xd5b8, 0xddd4, 0xdde6,
+ 0xddd5, 0xb7a1, 0xb7b1, 0xdded, 0xb7af, 0xb7ab, 0xddca, 0xb7a3,
+ 0xddcd, 0xb7b0, 0xdddd, 0xddc9, 0xb7a9, 0xdde1, 0xddd1, 0xb7aa,
+ 0xddda, 0xb77e, 0xb4d8, 0xdde3, 0xd9bf, 0xddce, 0xdde8, 0xb7a5,
+ 0xdde5, 0xb7a2, 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0xb7a7, 0xdec6,
+ 0xb7ae, 0xe24a, 0xe248, 0xe25e, 0xe246, 0xe258, 0xb77d, 0xba5f,
+ 0xe242, 0xe25d, 0xe247, 0xe255, 0xba64, 0xba5d, 0xe25b, 0xe240,
+ 0xe25a, 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, 0xba5e, 0xe24b,
+ 0xe259, 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, 0xe243, 0xe1fc,
+ 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, 0xe253, 0xba66, 0xe245,
+ 0xe250, 0xe24c, 0xe24e, 0xba60, 0xe25f, 0xba6e, 0xe24f, 0xe262,
+ 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256, 0xba69,
+ 0xba62, 0xe252, 0xe25c, 0xe5d5, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de,
+ 0xbccd, 0xe5e5, 0xe5d4, 0xbcd8, 0xe5db, 0xe5d0, 0xe5da, 0xbcd5,
+ 0xe5ee, 0xe5eb, 0xe5dd, 0xe5ce, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8,
+ 0xe5d3, 0xe5ca, 0xbcce, 0xbcd6, 0xe5e7, 0xbcd7, 0xe5cb, 0xe5ed,
+ 0xe5e0, 0xe5e6, 0xbcd4, 0xe5e3, 0xe5ea, 0xbcd9, 0xbcd3, 0xe5dc,
+ 0xe5cf, 0xe5ef, 0xe5cc, 0xe5e8, 0xbcd0, 0xe5d6, 0xe5d7, 0xbccf,
+ 0xbccc, 0xe5d2, 0xbcd2, 0xbccb, 0xe5e9, 0xe5ec, 0xe5d9, 0xe9ca,
+ 0xe9c2, 0xe9be, 0xbef6, 0xbeeb, 0xbef0, 0xbeec, 0xe9cc, 0xe9d7,
+ 0xbeea, 0xe9c4, 0xe9cd, 0xe5df, 0xe9ce, 0xbef1, 0xe9dd, 0xbef5,
+ 0xbef8, 0xe9c0, 0xbef4, 0xe9db, 0xe9dc, 0xe9d2, 0xe9d1, 0xe9c9,
+ 0xe9d3, 0xe9da, 0xe9d9, 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0xe9c5,
+ 0xe9d8, 0xbef7, 0xe9d6, 0xbef3, 0xbef2, 0xe9d0, 0xe9bf, 0xe9c1,
+ 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0xe9c6, 0xe9d4, 0xe9c7, 0xc0cf,
+ 0xed45, 0xc0c8, 0xecf5, 0xed41, 0xc0ca, 0xed48, 0xecfc, 0xecf7,
+ 0xed49, 0xecf3, 0xecfe, 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9,
+ 0xed40, 0xecf4, 0xc0d0, 0xed47, 0xecf9, 0xc0cc, 0xecfb, 0xecf8,
+ 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46, 0xed42,
+ 0xc263, 0xefe7, 0xc268, 0xc269, 0xc262, 0xefe6, 0xefe3, 0xefe4,
+ 0xc266, 0xefde, 0xefe2, 0xc265, 0xefdf, 0xc267, 0xc264, 0xefdd,
+ 0xefe1, 0xefe5, 0xf251, 0xf24e, 0xf257, 0xf256, 0xf254, 0xf24f,
+ 0xc372, 0xf250, 0xc371, 0xc0cd, 0xf253, 0xc370, 0xf258, 0xf252,
+ 0xf24d, 0xefe0, 0xc36f, 0xf24c, 0xf456, 0xf455, 0xf255, 0xc468,
+ 0xf459, 0xf45a, 0xf454, 0xf458, 0xf453, 0xf5d1, 0xf457, 0xc4e7,
+ 0xc4e5, 0xf5cf, 0xf5d2, 0xf5ce, 0xf5d0, 0xc4e6, 0xf6e5, 0xf6e6,
+ 0xc576, 0xf6e4, 0xf7e2, 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0xc656,
+ 0xf8f3, 0xf8f1, 0xf8f2, 0xf8f4, 0xf9bb, 0xa4ed, 0xa6b8, 0xaa59,
+ 0xcce9, 0xcf64, 0xd1f5, 0xd1f7, 0xd1f6, 0xd1f8, 0xb1fd, 0xd5d7,
+ 0xd1f9, 0xd5d6, 0xd5d8, 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd,
+ 0xb4dc, 0xb4da, 0xd9dc, 0xddfa, 0xddf8, 0xddf7, 0xddf6, 0xddf5,
+ 0xb7b2, 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb,
+ 0xbcda, 0xe5f0, 0xe9df, 0xe9de, 0xe9e0, 0xbef9, 0xed4b, 0xc0d3,
+ 0xefe8, 0xc26a, 0xf259, 0xc577, 0xa4ee, 0xa5bf, 0xa6b9, 0xa842,
+ 0xaa5a, 0xaa5b, 0xac6e, 0xd1fa, 0xb7b3, 0xe6d1, 0xbefa, 0xc26b,
+ 0xa4ef, 0xa6ba, 0xcceb, 0xaa5c, 0xccea, 0xcf65, 0xac6f, 0xcf66,
+ 0xac70, 0xd1fc, 0xaeee, 0xaeed, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db,
+ 0xd5da, 0xd9de, 0xd9e1, 0xb4de, 0xd9df, 0xb4dd, 0xd9e0, 0xddfb,
+ 0xe266, 0xe267, 0xe268, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4,
+ 0xe9e1, 0xe9e2, 0xe9e3, 0xed4c, 0xc0d4, 0xc26c, 0xf25a, 0xc4e8,
+ 0xc95f, 0xac71, 0xcf67, 0xaeef, 0xb1fe, 0xb4df, 0xd9e2, 0xb7b5,
+ 0xb7b4, 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, 0xe9e4, 0xefe9,
+ 0xf7e3, 0xa4f0, 0xc960, 0xa5c0, 0xa843, 0xcb48, 0xac72, 0xb7b6,
+ 0xa4f1, 0xcf68, 0xac73, 0xcf69, 0xc0d5, 0xa4f2, 0xccec, 0xcf6a,
+ 0xd242, 0xd241, 0xd1fe, 0xd1fd, 0xd243, 0xd240, 0xb240, 0xb241,
+ 0xb4e0, 0xd9e3, 0xd9e4, 0xd9e5, 0xde41, 0xde42, 0xde40, 0xddfd,
+ 0xddfe, 0xb7b7, 0xe26b, 0xe5f7, 0xe5f6, 0xe5f5, 0xe5f8, 0xe9e7,
+ 0xe9e6, 0xbefb, 0xe9e8, 0xc0d6, 0xed4d, 0xefea, 0xf25b, 0xf6e7,
+ 0xa4f3, 0xa5c2, 0xa5c1, 0xaa5d, 0xc961, 0xc97e, 0xa6bb, 0xc9f7,
+ 0xcb49, 0xcb4a, 0xaa5e, 0xcced, 0xac74, 0xcf6b, 0xcf6c, 0xaef0,
+ 0xaef4, 0xd244, 0xaef3, 0xaef1, 0xaef2, 0xd5df, 0xb242, 0xb4e3,
+ 0xb4e1, 0xb4e2, 0xd9e6, 0xba72, 0xa4f4, 0xc9a1, 0xa5c3, 0xc9a4,
+ 0xa5c6, 0xc9a3, 0xa5c5, 0xa5c4, 0xa844, 0xc9a2, 0xc9f8, 0xc9fc,
+ 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb, 0xa6c1, 0xc9f9, 0xc9fd,
+ 0xa6c2, 0xa6bd, 0xa6be, 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf,
+ 0xa6c0, 0xa6c3, 0xcb5b, 0xcb59, 0xcb4c, 0xa851, 0xcb53, 0xa84c,
+ 0xcb4d, 0xcb55, 0xcb52, 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858,
+ 0xa85a, 0xcb4b, 0xa84d, 0xcb5c, 0xa854, 0xa857, 0xcd45, 0xa847,
+ 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, 0xa848, 0xa849,
+ 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, 0xa84e, 0xa853,
+ 0xccee, 0xa85c, 0xcb57, 0xa852, 0xa85d, 0xa846, 0xcb54, 0xa84b,
+ 0xcb58, 0xcd44, 0xaa6a, 0xaa7a, 0xccf5, 0xaa71, 0xcd4b, 0xaa62,
+ 0xaa65, 0xcd42, 0xccf3, 0xccf7, 0xaa6d, 0xaa6f, 0xccfa, 0xaa76,
+ 0xaa68, 0xaa66, 0xaa67, 0xaa75, 0xcd47, 0xaa70, 0xccf9, 0xccfb,
+ 0xaa6e, 0xaa73, 0xccfc, 0xcd4a, 0xac75, 0xaa79, 0xaa63, 0xcd49,
+ 0xcd4d, 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d,
+ 0xaa72, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0xaa7e,
+ 0xaa77, 0xaa69, 0xaa5f, 0xaa64, 0xccf6, 0xaa60, 0xcd4e, 0xccf0,
+ 0xccef, 0xccfd, 0xccf1, 0xaa7b, 0xaef5, 0xaa74, 0xccfe, 0xaa61,
+ 0xaca6, 0xcd4c, 0xcf7c, 0xcfa1, 0xcfa4, 0xcf77, 0xcfa7, 0xcfaa,
+ 0xcfac, 0xcf74, 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, 0xcfad,
+ 0xcf7b, 0xcf73, 0xd264, 0xac7e, 0xcfa2, 0xcf78, 0xcf7a, 0xaca5,
+ 0xcf7d, 0xac7d, 0xcf70, 0xcfa8, 0xcfab, 0xac7a, 0xaca8, 0xcf6d,
+ 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, 0xcd48,
+ 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, 0xaca9,
+ 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, 0xcfa6,
+ 0xac79, 0xcf7e, 0xd24c, 0xaefd, 0xaf43, 0xd255, 0xd25b, 0xd257,
+ 0xd24a, 0xd24d, 0xd246, 0xd247, 0xaf4a, 0xaefa, 0xd256, 0xd25f,
+ 0xaf45, 0xaef6, 0xaf40, 0xd24e, 0xaf42, 0xd24f, 0xd259, 0xaf44,
+ 0xd268, 0xd248, 0xaefc, 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a,
+ 0xd267, 0xd261, 0xd253, 0xd262, 0xd25c, 0xd265, 0xd263, 0xaf49,
+ 0xd254, 0xaef9, 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251,
+ 0xb243, 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xd258,
+ 0xd25d, 0xb265, 0xd5e1, 0xd5e5, 0xb252, 0xb250, 0xb247, 0xd5e3,
+ 0xd5e2, 0xb25b, 0xd5e8, 0xb255, 0xd5fa, 0xd647, 0xb244, 0xd5f7,
+ 0xd5f0, 0xb267, 0xd5e0, 0xd5fc, 0xb264, 0xb258, 0xb263, 0xb24e,
+ 0xd5ec, 0xd5fe, 0xd5f6, 0xb24f, 0xb249, 0xd645, 0xd5fd, 0xd640,
+ 0xb251, 0xb259, 0xd642, 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, 0xb25e,
+ 0xb246, 0xb25c, 0xd5f4, 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, 0xd5ed,
+ 0xb248, 0xd5e7, 0xd646, 0xb24a, 0xd5f1, 0xb268, 0xb262, 0xd5e6,
+ 0xb25f, 0xb25d, 0xb266, 0xd5f8, 0xb261, 0xd252, 0xd5f9, 0xb260,
+ 0xd641, 0xb245, 0xd5f5, 0xb257, 0xd5e9, 0xb256, 0xb254, 0xb24c,
+ 0xb24b, 0xd9e7, 0xd643, 0xd5eb, 0xd9fc, 0xb24d, 0xb541, 0xb25a,
+ 0xb4ee, 0xd9f6, 0xb4fc, 0xd9ea, 0xb4eb, 0xb4e7, 0xda49, 0xb4ed,
+ 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d, 0xda44, 0xd9f1, 0xb4fa, 0xb4f4,
+ 0xd9fd, 0xb4e4, 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55,
+ 0xda56, 0xb4e5, 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd,
+ 0xd9f2, 0xd9f9, 0xd9f3, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9,
+ 0xd9eb, 0xb4ea, 0xd9f8, 0xb4f8, 0xb542, 0xd9fa, 0xda53, 0xda4b,
+ 0xb4e6, 0xda51, 0xb4f2, 0xb4f0, 0xda57, 0xb4ef, 0xda41, 0xd9f4,
+ 0xd9fe, 0xb547, 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f, 0xda4c,
+ 0xda54, 0xb4e9, 0xda40, 0xb546, 0xda47, 0xb4f3, 0xb4f6, 0xda46,
+ 0xb545, 0xd9f5, 0xd5e4, 0xda50, 0xda4e, 0xda52, 0xd9ec, 0xb540,
+ 0xde61, 0xde60, 0xde46, 0xb7bd, 0xde5f, 0xde49, 0xde4a, 0xb7c7,
+ 0xde68, 0xb7c2, 0xde5e, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48,
+ 0xde4b, 0xde63, 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc,
+ 0xb7cb, 0xb7c5, 0xde69, 0xb7b9, 0xde55, 0xde4c, 0xde59, 0xde65,
+ 0xb7cd, 0xb7bb, 0xde54, 0xde4d, 0xb7c4, 0xb7c3, 0xde50, 0xde5a,
+ 0xde64, 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0, 0xde4e,
+ 0xb7bf, 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56, 0xe26c,
+ 0xde58, 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0, 0xde44,
+ 0xde5d, 0xde5c, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, 0xe26e,
+ 0xbaaf, 0xba77, 0xe26d, 0xe2b0, 0xbab1, 0xe271, 0xe2a3, 0xe273,
+ 0xe2b3, 0xe2af, 0xba75, 0xbaa1, 0xe653, 0xbaae, 0xba7d, 0xe26f,
+ 0xe2ae, 0xbaa3, 0xe2ab, 0xe2b8, 0xe275, 0xe27e, 0xe2b6, 0xe2ac,
+ 0xba7c, 0xe27c, 0xba76, 0xba74, 0xbaa8, 0xe27a, 0xe277, 0xe278,
+ 0xe2b2, 0xe2b7, 0xe2b5, 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0xe270,
+ 0xe5fa, 0xe279, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274,
+ 0xbaaa, 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0xe2a9, 0xe2a1, 0xe272,
+ 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xba79, 0xbcdf, 0xe2a6,
+ 0xe5f9, 0xe2ad, 0xe276, 0xe644, 0xe64e, 0xbce2, 0xe64d, 0xe659,
+ 0xbce4, 0xe64b, 0xe64f, 0xbcef, 0xe646, 0xbce7, 0xe652, 0xe9f0,
+ 0xbcf3, 0xbcf2, 0xe654, 0xe643, 0xe65e, 0xbced, 0xbce3, 0xe657,
+ 0xe65b, 0xe660, 0xe655, 0xe649, 0xbce6, 0xbce9, 0xbcf1, 0xbcec,
+ 0xe64c, 0xe2a2, 0xe648, 0xe65f, 0xbce8, 0xbceb, 0xe661, 0xbce0,
+ 0xe656, 0xe5fb, 0xe65c, 0xc0df, 0xe64a, 0xbce1, 0xe645, 0xbce5,
+ 0xe5fc, 0xbaab, 0xe641, 0xe65a, 0xe642, 0xe640, 0xbcea, 0xe658,
+ 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, 0xe9f3, 0xbf49,
+ 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48, 0xbf43, 0xe9f5,
+ 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8, 0xea44, 0xea46,
+ 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0xbf47, 0xe9fe, 0xbf46, 0xe9f9,
+ 0xe9ed, 0xe9f2, 0xe9fd, 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1,
+ 0xe5fd, 0xe9ec, 0xe9ef, 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43,
+ 0xe9ee, 0xe9fc, 0xed51, 0xc0e3, 0xc0d7, 0xc0db, 0xed53, 0xed59,
+ 0xed57, 0xc0d9, 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0xed56,
+ 0xed55, 0xed5b, 0xc0e2, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de,
+ 0xc0e5, 0xc0d8, 0xed58, 0xed50, 0xeff7, 0xc271, 0xeff4, 0xeff6,
+ 0xc26f, 0xeff2, 0xeff3, 0xefee, 0xe9f6, 0xefef, 0xc270, 0xefeb,
+ 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed, 0xeff1, 0xc273, 0xc272,
+ 0xeff0, 0xc378, 0xf25f, 0xf265, 0xc379, 0xf25c, 0xc376, 0xc373,
+ 0xf267, 0xc377, 0xc374, 0xf25e, 0xf261, 0xf262, 0xf263, 0xf266,
+ 0xeff5, 0xf25d, 0xc375, 0xf264, 0xf268, 0xf260, 0xf45d, 0xc46a,
+ 0xf460, 0xc46b, 0xf468, 0xf45f, 0xf45c, 0xf45e, 0xf462, 0xf465,
+ 0xf464, 0xf467, 0xf45b, 0xc469, 0xf463, 0xf466, 0xf469, 0xf461,
+ 0xf5d3, 0xf5d4, 0xf5d8, 0xf5d9, 0xf5d6, 0xf5d7, 0xf5d5, 0xc4e9,
+ 0xc578, 0xf6eb, 0xf6e8, 0xf6e9, 0xf6ea, 0xc579, 0xf7e5, 0xf7e4,
+ 0xf8af, 0xc5f4, 0xf8ad, 0xf8b0, 0xf8ae, 0xf8f5, 0xc657, 0xc665,
+ 0xf9a3, 0xf96c, 0xf9a2, 0xf9d0, 0xf9d1, 0xa4f5, 0xa6c7, 0xca41,
+ 0xcb5e, 0xa85f, 0xa862, 0xcb5f, 0xa860, 0xa861, 0xcd58, 0xcd5a,
+ 0xcd55, 0xcd52, 0xcd54, 0xaaa4, 0xaaa2, 0xcd56, 0xaaa3, 0xcd53,
+ 0xcd50, 0xaaa1, 0xcd57, 0xcd51, 0xaaa5, 0xcd59, 0xcfaf, 0xcfb3,
+ 0xacb7, 0xcfb6, 0xacaf, 0xacb2, 0xacb4, 0xacb6, 0xacb3, 0xcfb2,
+ 0xcfb1, 0xacb1, 0xcfb4, 0xcfb5, 0xcfae, 0xacb5, 0xacb0, 0xcfb0,
+ 0xd277, 0xd278, 0xd279, 0xaf50, 0xaf4c, 0xd26e, 0xd276, 0xd27b,
+ 0xaf51, 0xd26c, 0xd272, 0xd26b, 0xd275, 0xd271, 0xaf4d, 0xaf4f,
+ 0xd27a, 0xd26a, 0xd26d, 0xd273, 0xd274, 0xd27c, 0xd270, 0xaf4e,
+ 0xb26d, 0xd64e, 0xd650, 0xd64c, 0xd658, 0xd64a, 0xd657, 0xb269,
+ 0xd648, 0xda5b, 0xd652, 0xb26c, 0xd653, 0xd656, 0xd65a, 0xd64f,
+ 0xd654, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649, 0xd65b, 0xd651,
+ 0xd655, 0xd64b, 0xb548, 0xb549, 0xda65, 0xb54f, 0xda59, 0xda62,
+ 0xda58, 0xb54c, 0xda60, 0xda5e, 0xda5f, 0xb54a, 0xda63, 0xda5c,
+ 0xda5a, 0xb54b, 0xda5d, 0xda61, 0xb54d, 0xda64, 0xde70, 0xde77,
+ 0xde79, 0xdea1, 0xb7da, 0xde6b, 0xb7d2, 0xde7a, 0xb7d7, 0xdea2,
+ 0xb7ce, 0xde7d, 0xde6d, 0xde7e, 0xde6c, 0xb7dc, 0xde78, 0xb7cf,
+ 0xdea3, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, 0xde6f, 0xde76, 0xde72,
+ 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, 0xb7db, 0xb7d0, 0xde75,
+ 0xb7d5, 0xb54e, 0xde7b, 0xde73, 0xde74, 0xe2c1, 0xbab4, 0xe2bd,
+ 0xe2c3, 0xe2bf, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, 0xe2bc, 0xbab5,
+ 0xe2c0, 0xe2bb, 0xbab7, 0xbab2, 0xe2c4, 0xbab3, 0xe667, 0xe664,
+ 0xe670, 0xe66a, 0xe66c, 0xbcf4, 0xe666, 0xe66e, 0xe66d, 0xe66b,
+ 0xe671, 0xbcf7, 0xe668, 0xe66f, 0xbcf5, 0xe663, 0xe665, 0xbcf6,
+ 0xe662, 0xe672, 0xe669, 0xea4a, 0xbf51, 0xea55, 0xea53, 0xbf4b,
+ 0xea49, 0xea4c, 0xea4d, 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56,
+ 0xea51, 0xbf4f, 0xbf4c, 0xea50, 0xea4e, 0xbf52, 0xea52, 0xbf4d,
+ 0xbf4e, 0xea4f, 0xbf50, 0xea4b, 0xea54, 0xbf53, 0xea57, 0xea58,
+ 0xbf54, 0xc0e7, 0xc0ee, 0xed5c, 0xed62, 0xed60, 0xc0ea, 0xc0e9,
+ 0xc0e6, 0xed5e, 0xc0ec, 0xc0eb, 0xc0e8, 0xed61, 0xed5d, 0xed5f,
+ 0xc0ed, 0xc277, 0xeffb, 0xc274, 0xc275, 0xeffd, 0xc276, 0xeffa,
+ 0xeff9, 0xf26c, 0xeffc, 0xf26d, 0xc37a, 0xf26b, 0xf26a, 0xf269,
+ 0xc37b, 0xc46c, 0xf46a, 0xf46b, 0xf5dc, 0xf5db, 0xc4ea, 0xf5da,
+ 0xf6ec, 0xf6ed, 0xf7e6, 0xf8b1, 0xf8f6, 0xf9bc, 0xc679, 0xf9c6,
+ 0xa4f6, 0xaaa6, 0xaaa7, 0xacb8, 0xc0ef, 0xa4f7, 0xaaa8, 0xaf52,
+ 0xb7dd, 0xa4f8, 0xb26e, 0xbab8, 0xc962, 0xcfb7, 0xd27d, 0xe2c5,
+ 0xc0f0, 0xa4f9, 0xaaa9, 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0xdea4,
+ 0xb7de, 0xe2c6, 0xbcf8, 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0xa6c9,
+ 0xca42, 0xa6c8, 0xa865, 0xa864, 0xa863, 0xcb60, 0xaaaa, 0xaaab,
+ 0xcd5b, 0xcfba, 0xcfbd, 0xacba, 0xcfbb, 0xacb9, 0xcfbc, 0xacbb,
+ 0xd2a2, 0xd2a1, 0xd27e, 0xaf53, 0xd65d, 0xd65e, 0xb26f, 0xd65c,
+ 0xd65f, 0xb552, 0xb270, 0xb551, 0xda6b, 0xda6a, 0xda68, 0xda69,
+ 0xda6c, 0xdea6, 0xdea5, 0xdea9, 0xdea8, 0xdea7, 0xbab9, 0xe2c9,
+ 0xe2c8, 0xbaba, 0xe2c7, 0xe673, 0xe674, 0xbcf9, 0xea59, 0xea5a,
+ 0xf272, 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, 0xf46c,
+ 0xf6ee, 0xf8f7, 0xa4fc, 0xc9a5, 0xa5c7, 0xc9a6, 0xca43, 0xca44,
+ 0xcb66, 0xcb62, 0xcb61, 0xaaac, 0xcb65, 0xa867, 0xcb63, 0xa866,
+ 0xcb67, 0xcb64, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0xaaad, 0xaab0,
+ 0xcd65, 0xcd61, 0xcd62, 0xcd5c, 0xaaaf, 0xcd5e, 0xaaae, 0xcd63,
+ 0xcd60, 0xcfc2, 0xacbd, 0xacbe, 0xcfc5, 0xcfbf, 0xcfc4, 0xcfc0,
+ 0xacbc, 0xcfc3, 0xcfc1, 0xd2a8, 0xd2a5, 0xd2a7, 0xaf58, 0xaf57,
+ 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56, 0xd2a6, 0xd667, 0xd2a3,
+ 0xd2aa, 0xd662, 0xd666, 0xd665, 0xda6e, 0xda79, 0xd668, 0xd663,
+ 0xda6d, 0xb274, 0xb273, 0xd661, 0xd664, 0xb275, 0xb272, 0xb271,
+ 0xd660, 0xd669, 0xda70, 0xda77, 0xb554, 0xda76, 0xda73, 0xb556,
+ 0xda75, 0xda6f, 0xda71, 0xda74, 0xda72, 0xb555, 0xda78, 0xb553,
+ 0xb7df, 0xdead, 0xdeac, 0xdeaa, 0xb7e2, 0xb7e1, 0xdeae, 0xdeab,
+ 0xe2ca, 0xbabb, 0xb7e0, 0xdeb0, 0xdeaf, 0xe2cd, 0xe2cb, 0xbcfa,
+ 0xbabc, 0xe2cc, 0xe676, 0xbcfb, 0xe675, 0xe67e, 0xe67d, 0xe67b,
+ 0xe67a, 0xe677, 0xe678, 0xe679, 0xe67c, 0xe6a1, 0xea5f, 0xea5c,
+ 0xea5d, 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0xed64, 0xed65,
+ 0xc0f1, 0xc0f2, 0xed63, 0xc279, 0xeffe, 0xc278, 0xc37e, 0xc3a1,
+ 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, 0xc57a, 0xf7e8, 0xf7e7,
+ 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, 0xd66a, 0xa5c9, 0xc9a7,
+ 0xa4fd, 0xca45, 0xcb6c, 0xcb6a, 0xcb6b, 0xcb68, 0xa868, 0xcb69,
+ 0xcd6d, 0xaab3, 0xcd6b, 0xcd67, 0xcd6a, 0xcd66, 0xaab5, 0xcd69,
+ 0xaab2, 0xaab1, 0xaab4, 0xcd6c, 0xcd68, 0xacc2, 0xacc5, 0xcfce,
+ 0xcfcd, 0xcfcc, 0xacbf, 0xcfd5, 0xcfcb, 0xacc1, 0xd2af, 0xcfd2,
+ 0xcfd0, 0xacc4, 0xcfc8, 0xcfd3, 0xcfca, 0xcfd4, 0xcfd1, 0xcfc9,
+ 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xd2b4, 0xd2ab, 0xd2b6, 0xd2ae,
+ 0xd2b9, 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f,
+ 0xaf5d, 0xd2b1, 0xd2ad, 0xd2b0, 0xd2bb, 0xd2b2, 0xaf5e, 0xcfcf,
+ 0xaf5a, 0xaf5c, 0xd678, 0xd66d, 0xd66b, 0xd66c, 0xd673, 0xd674,
+ 0xd670, 0xb27b, 0xd675, 0xd672, 0xd66f, 0xb279, 0xd66e, 0xb277,
+ 0xb27a, 0xd671, 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676, 0xb27c,
+ 0xda7e, 0xdaa1, 0xb560, 0xdaa7, 0xdaa9, 0xdaa2, 0xb55a, 0xdaa6,
+ 0xdaa5, 0xb55b, 0xb561, 0xb562, 0xdaa8, 0xb558, 0xda7d, 0xda7b,
+ 0xdaa3, 0xda7a, 0xb55f, 0xda7c, 0xdaa4, 0xdaaa, 0xb559, 0xb55e,
+ 0xb55c, 0xb55d, 0xb557, 0xb7e9, 0xdeb7, 0xb7e8, 0xdebb, 0xdeb1,
+ 0xdebc, 0xdeb2, 0xdeb3, 0xdebd, 0xdeba, 0xdeb8, 0xdeb9, 0xdeb5,
+ 0xdeb4, 0xdebe, 0xb7e5, 0xdeb6, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec,
+ 0xb7e7, 0xb7e6, 0xe2ce, 0xbabe, 0xbabd, 0xe2d3, 0xbcfc, 0xbabf,
+ 0xbac1, 0xe2d4, 0xb7e3, 0xbac0, 0xe2d0, 0xe2d2, 0xe2cf, 0xe2d1,
+ 0xe6ab, 0xe6aa, 0xe6a7, 0xbd40, 0xea62, 0xbd41, 0xe6a6, 0xbcfe,
+ 0xe6a8, 0xe6a5, 0xe6a2, 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0xed69,
+ 0xea66, 0xea65, 0xea67, 0xed66, 0xbf5a, 0xea63, 0xbf58, 0xbf5c,
+ 0xbf5b, 0xea64, 0xea68, 0xbf59, 0xed6d, 0xc0f5, 0xc27a, 0xc0f6,
+ 0xc0f3, 0xed6a, 0xed68, 0xed6b, 0xed6e, 0xc0f4, 0xed6c, 0xed67,
+ 0xf042, 0xf045, 0xf275, 0xf040, 0xf46f, 0xf046, 0xc3a2, 0xf044,
+ 0xc27b, 0xf041, 0xf043, 0xf047, 0xf276, 0xf274, 0xc3a3, 0xf273,
+ 0xc46e, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, 0xf6f0, 0xf6f2, 0xc5d0,
+ 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, 0xb27d, 0xdebf, 0xbf5d,
+ 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xcd6f, 0xa260, 0xcfd7, 0xcfd8,
+ 0xd2be, 0xd2bf, 0xb27e, 0xb2a1, 0xdaab, 0xdec2, 0xdec1, 0xdec0,
+ 0xe2d5, 0xe2d6, 0xe2d7, 0xbac2, 0xe6ad, 0xe6ac, 0xea69, 0xbf5e,
+ 0xbf5f, 0xed72, 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048, 0xc27c,
+ 0xf277, 0xf5de, 0xa5cc, 0xacc6, 0xb2a2, 0xdec3, 0xa5cd, 0xd2c0,
+ 0xb2a3, 0xb563, 0xb564, 0xa5ce, 0xa5cf, 0xca46, 0xa86a, 0xa869,
+ 0xacc7, 0xcfd9, 0xdaac, 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa86b,
+ 0xa86c, 0xcb6e, 0xcb6d, 0xaab6, 0xcd72, 0xcd70, 0xcd71, 0xcfda,
+ 0xcfdb, 0xaccb, 0xacc9, 0xacca, 0xacc8, 0xaf60, 0xaf64, 0xaf63,
+ 0xd2c1, 0xaf62, 0xaf61, 0xd2c2, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4,
+ 0xb2a5, 0xb566, 0xb565, 0xdaae, 0xdaad, 0xb2a7, 0xb7ed, 0xdec5,
+ 0xb7ee, 0xdec4, 0xe2d8, 0xe6ae, 0xbd42, 0xea6a, 0xed73, 0xc3a6,
+ 0xc3a5, 0xc57c, 0xa5d4, 0xcd73, 0xb2a8, 0xe2d9, 0xbac3, 0xcb6f,
+ 0xcb70, 0xcd74, 0xaab8, 0xaab9, 0xaab7, 0xaccf, 0xacd0, 0xaccd,
+ 0xacce, 0xcfdc, 0xcfdd, 0xaccc, 0xd2c3, 0xaf68, 0xaf69, 0xb2ab,
+ 0xd2c9, 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b, 0xaf6a, 0xaf65,
+ 0xd2c8, 0xd2c7, 0xd2c4, 0xaf6d, 0xd2c6, 0xaf66, 0xaf67, 0xb2ac,
+ 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c, 0xd67e, 0xd6a4, 0xd6a3, 0xd67d,
+ 0xb2a9, 0xb2aa, 0xdab6, 0xb56b, 0xb56a, 0xdab0, 0xb568, 0xdab3,
+ 0xb56c, 0xdab4, 0xb56d, 0xdab1, 0xb567, 0xb569, 0xdab5, 0xdab2,
+ 0xdaaf, 0xded2, 0xdec7, 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6,
+ 0xded3, 0xded1, 0xdeca, 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc,
+ 0xded4, 0xdecb, 0xb7f5, 0xb7ef, 0xb7f1, 0xdec9, 0xe2db, 0xbac7,
+ 0xe2df, 0xbac6, 0xe2dc, 0xbac5, 0xdec8, 0xdecf, 0xe2de, 0xbac8,
+ 0xe2e0, 0xe2dd, 0xe2da, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2,
+ 0xe6b0, 0xbd45, 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af,
+ 0xbd47, 0xbac4, 0xe6b6, 0xbd44, 0xea6c, 0xea6b, 0xea73, 0xea6d,
+ 0xea72, 0xea6f, 0xbf60, 0xea71, 0xbf61, 0xbf62, 0xea70, 0xea6e,
+ 0xc0f8, 0xed74, 0xc0f7, 0xed77, 0xed75, 0xed76, 0xc0f9, 0xf04d,
+ 0xc2a1, 0xf04e, 0xc27d, 0xf04f, 0xc27e, 0xf04c, 0xf050, 0xf04a,
+ 0xc3a7, 0xf278, 0xc3a8, 0xc46f, 0xf04b, 0xc470, 0xc4ee, 0xf5df,
+ 0xc57e, 0xf6f4, 0xc57d, 0xf7ea, 0xc5f5, 0xc5f6, 0xf9cc, 0xacd1,
+ 0xcfde, 0xb56e, 0xb56f, 0xa5d5, 0xa6ca, 0xca47, 0xcb71, 0xa86d,
+ 0xaaba, 0xacd2, 0xacd3, 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0xb2ae,
+ 0xd6a5, 0xdab8, 0xb571, 0xdab7, 0xb570, 0xded5, 0xbd4a, 0xe6bb,
+ 0xe6b8, 0xe6b9, 0xe6ba, 0xed78, 0xf051, 0xf471, 0xf470, 0xf6f5,
+ 0xa5d6, 0xcd75, 0xaf70, 0xb572, 0xded6, 0xe2e1, 0xbd4b, 0xea74,
+ 0xf052, 0xf472, 0xa5d7, 0xaabb, 0xacd7, 0xcfdf, 0xacd8, 0xacd6,
+ 0xacd5, 0xd2cc, 0xaf71, 0xaf72, 0xaf73, 0xb2b0, 0xd6a7, 0xb2af,
+ 0xdab9, 0xb2b1, 0xb573, 0xded7, 0xb7f8, 0xb7f9, 0xbac9, 0xbaca,
+ 0xbd4c, 0xbf64, 0xea75, 0xbf63, 0xed79, 0xc0fa, 0xf053, 0xf473,
+ 0xa5d8, 0xa86e, 0xcd78, 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79,
+ 0xcfe5, 0xacdb, 0xacda, 0xcfe7, 0xcfe6, 0xacdf, 0xacde, 0xacd9,
+ 0xcfe1, 0xcfe2, 0xcfe3, 0xace0, 0xcfe0, 0xacdc, 0xcfe4, 0xacdd,
+ 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2ce,
+ 0xd2cd, 0xaf75, 0xaf76, 0xd2d7, 0xd2d2, 0xd6b0, 0xd2d8, 0xaf77,
+ 0xaf74, 0xd6aa, 0xd6a9, 0xd6ab, 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2,
+ 0xb2b5, 0xb2b2, 0xb2b6, 0xd6a8, 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af,
+ 0xb2b3, 0xdabc, 0xdabe, 0xdaba, 0xdabb, 0xdabf, 0xdac1, 0xdac2,
+ 0xdabd, 0xdac0, 0xb574, 0xdedb, 0xdee0, 0xded8, 0xdedc, 0xdee1,
+ 0xdedd, 0xb7fa, 0xb843, 0xb7fd, 0xded9, 0xdeda, 0xbace, 0xb846,
+ 0xb7fe, 0xb844, 0xb7fc, 0xdedf, 0xb845, 0xdede, 0xb841, 0xb7fb,
+ 0xb842, 0xdee2, 0xe2e6, 0xe2e8, 0xb840, 0xe2e3, 0xbacc, 0xe2e9,
+ 0xbacd, 0xe2e7, 0xe2e2, 0xe2e5, 0xe2ea, 0xbacb, 0xe2e4, 0xbd4e,
+ 0xe6bf, 0xe6be, 0xbd51, 0xbd4f, 0xe6bc, 0xbd4d, 0xe6bd, 0xbd50,
+ 0xea7d, 0xeaa1, 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66,
+ 0xbf67, 0xbf65, 0xea78, 0xea7b, 0xea7c, 0xbf68, 0xc140, 0xeda3,
+ 0xc0fc, 0xed7b, 0xc0fe, 0xc141, 0xc0fd, 0xeda2, 0xed7c, 0xc0fb,
+ 0xeda1, 0xed7a, 0xed7e, 0xed7d, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2,
+ 0xc2a3, 0xf054, 0xf27b, 0xc3a9, 0xf279, 0xf27a, 0xf474, 0xf477,
+ 0xf475, 0xf476, 0xf5e0, 0xc4ef, 0xf7eb, 0xf8b4, 0xc5f7, 0xf8f8,
+ 0xf8f9, 0xc666, 0xa5d9, 0xace1, 0xdac3, 0xdee3, 0xa5da, 0xa86f,
+ 0xaabe, 0xcfe8, 0xcfe9, 0xaf78, 0xdac4, 0xb575, 0xb847, 0xc142,
+ 0xeda4, 0xf27c, 0xf478, 0xa5db, 0xcda1, 0xcd7a, 0xcd7c, 0xcd7e,
+ 0xcd7d, 0xcd7b, 0xaabf, 0xace2, 0xcff2, 0xcfed, 0xcfea, 0xcff1,
+ 0xace4, 0xace5, 0xcff0, 0xcfef, 0xcfee, 0xcfeb, 0xcfec, 0xcff3,
+ 0xace3, 0xaf7c, 0xafa4, 0xafa3, 0xd2e1, 0xd2db, 0xd2d9, 0xafa1,
+ 0xd6b9, 0xaf7a, 0xd2de, 0xd2e2, 0xd2e4, 0xd2e0, 0xd2da, 0xafa2,
+ 0xd2df, 0xd2dd, 0xaf79, 0xd2e5, 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc,
+ 0xaf7e, 0xaf7b, 0xb2b9, 0xd6ba, 0xd6b3, 0xd6b5, 0xd6b7, 0xd6b8,
+ 0xd6b6, 0xb2ba, 0xd6bb, 0xd6b4, 0xdac8, 0xb576, 0xdad0, 0xdac5,
+ 0xdad1, 0xdac6, 0xdac7, 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577,
+ 0xdac9, 0xdacc, 0xb578, 0xdacd, 0xdaca, 0xdeee, 0xdef2, 0xb84e,
+ 0xe2f0, 0xb851, 0xdef0, 0xdeed, 0xdee8, 0xdeea, 0xdeeb, 0xdee4,
+ 0xb84d, 0xb84c, 0xb848, 0xdee7, 0xb84f, 0xb850, 0xdee6, 0xdee9,
+ 0xdef1, 0xb84a, 0xb84b, 0xdeef, 0xdee5, 0xe2f2, 0xbad0, 0xe2f4,
+ 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3, 0xbad1, 0xe2ef, 0xbad3,
+ 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0xb849, 0xe2eb, 0xbad2, 0xe2ed,
+ 0xbd54, 0xe6c1, 0xbd58, 0xbd56, 0xbacf, 0xe6c8, 0xe6c9, 0xbd53,
+ 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5, 0xe6c2,
+ 0xbd59, 0xe6c4, 0xe6c6, 0xbd57, 0xbf6a, 0xeaa8, 0xeaa2, 0xeaa6,
+ 0xeaac, 0xeaad, 0xeaa9, 0xeaaa, 0xeaa7, 0xeaa4, 0xbf6c, 0xbf69,
+ 0xeaa3, 0xeaa5, 0xbf6b, 0xeaab, 0xc146, 0xedaa, 0xeda5, 0xc145,
+ 0xc143, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6, 0xedad, 0xf056,
+ 0xc147, 0xeda7, 0xedae, 0xedab, 0xf05a, 0xf057, 0xc2a6, 0xf05b,
+ 0xf05d, 0xf05c, 0xf058, 0xf059, 0xf2a3, 0xc3aa, 0xf27e, 0xf2a2,
+ 0xf27d, 0xf2a4, 0xf2a1, 0xf47a, 0xf47d, 0xf479, 0xc471, 0xf47b,
+ 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473, 0xf5e1, 0xf5e3, 0xf5e2,
+ 0xf6f6, 0xf8b5, 0xf8fa, 0xa5dc, 0xcb72, 0xaac0, 0xcda3, 0xaac1,
+ 0xaac2, 0xcda2, 0xcff8, 0xcff7, 0xace6, 0xace9, 0xace8, 0xace7,
+ 0xcff4, 0xcff6, 0xcff5, 0xd2e8, 0xafa7, 0xd2ec, 0xd2eb, 0xd2ea,
+ 0xd2e6, 0xafa6, 0xafaa, 0xafad, 0xafae, 0xd2e7, 0xd2e9, 0xafac,
+ 0xafab, 0xafa9, 0xafa8, 0xd6c2, 0xd6c0, 0xd6bc, 0xb2bb, 0xd6bd,
+ 0xb2bc, 0xd6be, 0xd6bf, 0xd6c1, 0xb2bd, 0xdad5, 0xdad4, 0xdad3,
+ 0xdad2, 0xdef6, 0xb852, 0xdef3, 0xdef5, 0xb853, 0xb854, 0xdef4,
+ 0xe341, 0xe2f9, 0xe2fa, 0xbad7, 0xbad5, 0xbad6, 0xe343, 0xe342,
+ 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb, 0xe340, 0xe2f8, 0xe6cb, 0xe6d0,
+ 0xe6ce, 0xe6cd, 0xe6cc, 0xe6cf, 0xeaae, 0xbf6d, 0xc148, 0xedb0,
+ 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0xf2a5, 0xc3ab, 0xf4a1,
+ 0xc5a1, 0xf6f7, 0xf8b7, 0xf8b6, 0xc9a8, 0xacea, 0xaceb, 0xd6c3,
+ 0xb856, 0xa5dd, 0xa872, 0xa871, 0xa870, 0xcda4, 0xaac4, 0xaac3,
+ 0xacee, 0xcffa, 0xcffd, 0xcffb, 0xacec, 0xaced, 0xcff9, 0xcffc,
+ 0xafb5, 0xd2f3, 0xd2f5, 0xd2f4, 0xafb2, 0xd2ef, 0xafb0, 0xafaf,
+ 0xafb3, 0xafb1, 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0,
+ 0xd6c6, 0xd6c7, 0xd6c5, 0xd6c4, 0xb2be, 0xb57d, 0xdad6, 0xdad8,
+ 0xdada, 0xb57c, 0xb57a, 0xdad7, 0xb57b, 0xdad9, 0xb579, 0xdf41,
+ 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0xdefb, 0xdef8, 0xdef9,
+ 0xb858, 0xdf40, 0xb857, 0xb85c, 0xb85b, 0xb859, 0xdefd, 0xe349,
+ 0xe348, 0xe344, 0xbad8, 0xe347, 0xe346, 0xbad9, 0xbd5e, 0xe6d2,
+ 0xbd5f, 0xbd5b, 0xbd5d, 0xbd5a, 0xbd5c, 0xeaaf, 0xbf70, 0xeab1,
+ 0xeab0, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0xedb5, 0xedb3,
+ 0xc14a, 0xedb4, 0xedb6, 0xedb2, 0xedb1, 0xf060, 0xc2aa, 0xc2a8,
+ 0xc2a9, 0xf2a6, 0xf2a7, 0xc3ad, 0xc3ac, 0xf4a3, 0xf4a4, 0xf4a2,
+ 0xf6f8, 0xf6f9, 0xa5de, 0xca48, 0xa873, 0xcda5, 0xaac6, 0xaac5,
+ 0xcda6, 0xd040, 0xacef, 0xcffe, 0xacf0, 0xafb6, 0xd2f8, 0xd2f6,
+ 0xd2fc, 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9, 0xd2fa, 0xd6c8, 0xd6ca,
+ 0xb2bf, 0xd6c9, 0xb2c0, 0xb5a2, 0xb5a1, 0xb57e, 0xdadb, 0xdf44,
+ 0xb85d, 0xb85e, 0xdf43, 0xdf42, 0xe34a, 0xbadb, 0xbada, 0xe34b,
+ 0xe34c, 0xbd61, 0xbd60, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4,
+ 0xeab2, 0xeab6, 0xeab3, 0xbf73, 0xedb7, 0xc14b, 0xedb8, 0xedb9,
+ 0xc2ab, 0xc2ac, 0xc475, 0xc5d1, 0xa5df, 0xd041, 0xd2fd, 0xafb8,
+ 0xb3ba, 0xb3b9, 0xb5a4, 0xdadd, 0xb5a3, 0xdadc, 0xdf45, 0xbadc,
+ 0xe34d, 0xbadd, 0xc476, 0xf4a5, 0xa6cb, 0xaac7, 0xcda7, 0xacf2,
+ 0xacf1, 0xd042, 0xd043, 0xd340, 0xd342, 0xafb9, 0xd344, 0xd347,
+ 0xd345, 0xd346, 0xd343, 0xd2fe, 0xafba, 0xd348, 0xd341, 0xd6d3,
+ 0xb2c6, 0xd6dc, 0xb2c3, 0xd6d5, 0xb2c7, 0xb2c1, 0xd6d0, 0xd6dd,
+ 0xd6d1, 0xd6ce, 0xb2c5, 0xb2c2, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8,
+ 0xb2c8, 0xd6d9, 0xd6cf, 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb,
+ 0xd6db, 0xdadf, 0xdae4, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, 0xdae1,
+ 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, 0xb5a8,
+ 0xb5ae, 0xb5a9, 0xb5aa, 0xb5a6, 0xdae5, 0xb861, 0xdf50, 0xdf53,
+ 0xdf47, 0xdf4c, 0xdf46, 0xb863, 0xdf4a, 0xdf48, 0xb862, 0xdf4f,
+ 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49, 0xbae1, 0xdf52, 0xb85f, 0xdf51,
+ 0xe35d, 0xbae8, 0xe358, 0xbae7, 0xe34e, 0xe350, 0xbae0, 0xe355,
+ 0xe354, 0xe357, 0xbae5, 0xe352, 0xe351, 0xbae4, 0xbadf, 0xe353,
+ 0xbae2, 0xe359, 0xe35b, 0xe356, 0xe34f, 0xbae3, 0xbd69, 0xbade,
+ 0xe35c, 0xe6d9, 0xbd62, 0xe6db, 0xbd63, 0xbd65, 0xe6de, 0xe6d6,
+ 0xbae6, 0xe6dc, 0xe6d8, 0xb860, 0xbd68, 0xbd64, 0xbd66, 0xbd67,
+ 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0xe6da, 0xeac0, 0xeabb, 0xeac5,
+ 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba, 0xeab7, 0xeac6, 0xc151,
+ 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc, 0xbf7b, 0xeab9, 0xeabe,
+ 0xbf7a, 0xeac1, 0xeac4, 0xedcb, 0xedcc, 0xedbc, 0xedc3, 0xedc1,
+ 0xc14f, 0xedc8, 0xeabf, 0xedbf, 0xedc9, 0xc14e, 0xedbe, 0xedbd,
+ 0xedc7, 0xedc4, 0xedc6, 0xedba, 0xedca, 0xc14c, 0xedc5, 0xedce,
+ 0xedc2, 0xc150, 0xc14d, 0xedc0, 0xedbb, 0xedcd, 0xbf75, 0xf063,
+ 0xf061, 0xf067, 0xc2b0, 0xf065, 0xf064, 0xc2b2, 0xf06a, 0xc2b1,
+ 0xf06b, 0xf068, 0xc2ae, 0xf069, 0xf062, 0xc2af, 0xc2ad, 0xf2ab,
+ 0xf066, 0xf06c, 0xf2a8, 0xc3b2, 0xc3b0, 0xf2aa, 0xf2ac, 0xf2a9,
+ 0xc3b1, 0xc3ae, 0xc3af, 0xc3b3, 0xc478, 0xf4aa, 0xf4a9, 0xf4a7,
+ 0xf4a6, 0xf4a8, 0xc477, 0xc479, 0xc4f0, 0xf5e5, 0xf5e4, 0xf6fa,
+ 0xf6fc, 0xf6fe, 0xf6fd, 0xf6fb, 0xc5a3, 0xc5a2, 0xc5d3, 0xc5d2,
+ 0xc5d4, 0xf7ed, 0xf7ec, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0xc659,
+ 0xf96d, 0xc67e, 0xa6cc, 0xcda8, 0xd045, 0xd046, 0xd044, 0xacf3,
+ 0xd047, 0xd048, 0xd049, 0xd349, 0xd34f, 0xd34d, 0xafbb, 0xd34b,
+ 0xd34c, 0xd34e, 0xd34a, 0xb2c9, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca,
+ 0xd6df, 0xdae8, 0xb5af, 0xdaea, 0xdae7, 0xd6e1, 0xb5b0, 0xdae9,
+ 0xdf56, 0xb864, 0xdf54, 0xb865, 0xdf55, 0xb866, 0xbae9, 0xe361,
+ 0xe35e, 0xe360, 0xbaea, 0xbaeb, 0xe35f, 0xe6df, 0xe6e0, 0xbd6b,
+ 0xe6e2, 0xe6e1, 0xa261, 0xeaca, 0xeacb, 0xeac7, 0xeac8, 0xbf7c,
+ 0xbf7d, 0xeac9, 0xc157, 0xc153, 0xc158, 0xc154, 0xc156, 0xc152,
+ 0xc155, 0xc2b3, 0xedcf, 0xf2ae, 0xf2ad, 0xf4ab, 0xc47a, 0xc47b,
+ 0xf741, 0xf5e6, 0xf740, 0xf8fd, 0xf9a4, 0xa6cd, 0xa874, 0xcda9,
+ 0xaac8, 0xacf6, 0xd04c, 0xacf4, 0xd04a, 0xacf9, 0xacf5, 0xacfa,
+ 0xacf8, 0xd04b, 0xacf7, 0xafbf, 0xafbe, 0xd35a, 0xafc7, 0xd353,
+ 0xd359, 0xafc3, 0xd352, 0xd358, 0xd356, 0xafc2, 0xafc4, 0xd355,
+ 0xafbd, 0xd354, 0xafc8, 0xafc5, 0xafc9, 0xafc6, 0xd351, 0xd350,
+ 0xd357, 0xafc0, 0xafbc, 0xafc1, 0xd6f0, 0xd6e9, 0xb5b5, 0xd6e8,
+ 0xb2cf, 0xb2d6, 0xb2d3, 0xb2d9, 0xb2d8, 0xb2d4, 0xd6e2, 0xd6e5,
+ 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef, 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed,
+ 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd, 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb,
+ 0xd6ee, 0xdafb, 0xdaf2, 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7,
+ 0xb5b4, 0xdaef, 0xdaeb, 0xb86c, 0xdaf4, 0xb5b1, 0xdafa, 0xb5b8,
+ 0xb5ba, 0xdaed, 0xb5b9, 0xdaf0, 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5,
+ 0xdaf3, 0xb5b6, 0xdaec, 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0xb868,
+ 0xdf5d, 0xdf5f, 0xdf61, 0xdf65, 0xdf5b, 0xdf59, 0xb86a, 0xdf60,
+ 0xdf64, 0xdf5c, 0xdf58, 0xdf57, 0xdf62, 0xdf5a, 0xdf5e, 0xb86b,
+ 0xb869, 0xdf66, 0xb867, 0xdf63, 0xe372, 0xbaee, 0xe36a, 0xbd78,
+ 0xe374, 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0xe375, 0xe362, 0xe377,
+ 0xe366, 0xbafe, 0xbafb, 0xe376, 0xe370, 0xbaed, 0xbaf5, 0xbaf4,
+ 0xbaf3, 0xbaf9, 0xe363, 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373,
+ 0xbaef, 0xbaf0, 0xbaf8, 0xe368, 0xe367, 0xe364, 0xe36c, 0xe369,
+ 0xe36d, 0xbafd, 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0xe36b, 0xbafc,
+ 0xe6e7, 0xbd70, 0xbd79, 0xbd75, 0xe6e4, 0xbd72, 0xbd76, 0xe6f0,
+ 0xbd6c, 0xe6e8, 0xbd74, 0xe6eb, 0xe6e6, 0xbd73, 0xbd77, 0xe6e5,
+ 0xbd71, 0xe6ef, 0xbd6e, 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d,
+ 0xe6ec, 0xe6e3, 0xbd7b, 0xe6ea, 0xbd6f, 0xe6e9, 0xbfa2, 0xbfa7,
+ 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9, 0xbfa8, 0xbfa1,
+ 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace, 0xead6, 0xbfa3,
+ 0xead4, 0xbfa6, 0xbfa5, 0xead0, 0xead1, 0xeacd, 0xead7, 0xbfa4,
+ 0xeade, 0xeadd, 0xedda, 0xedd6, 0xc15f, 0xedd0, 0xc159, 0xc169,
+ 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164, 0xc167, 0xedde, 0xc15c,
+ 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1, 0xc160, 0xc15a, 0xc168,
+ 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf, 0xc162, 0xc15b, 0xedd9,
+ 0xc166, 0xedd7, 0xeddb, 0xf06e, 0xf074, 0xc2b9, 0xf077, 0xc2b4,
+ 0xc2b5, 0xf06f, 0xf076, 0xf071, 0xc2ba, 0xc2b7, 0xf06d, 0xc2b6,
+ 0xf073, 0xf075, 0xc2b8, 0xf072, 0xf070, 0xf2b8, 0xc3b7, 0xc3b8,
+ 0xc3b4, 0xc3b5, 0xf2b4, 0xf2b2, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0,
+ 0xf2af, 0xf2b3, 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d,
+ 0xf4ad, 0xf4af, 0xf4ae, 0xc4a1, 0xf5eb, 0xf5e8, 0xf5e9, 0xf5e7,
+ 0xf5ea, 0xc4f2, 0xf5ec, 0xc4f1, 0xf742, 0xc5d5, 0xc5d7, 0xf7ee,
+ 0xc5d6, 0xf8b9, 0xf940, 0xf942, 0xf8fe, 0xf941, 0xc66c, 0xa6ce,
+ 0xacfb, 0xd26f, 0xafca, 0xb2da, 0xdafc, 0xdafd, 0xeadf, 0xc16a,
+ 0xede1, 0xc2bb, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0xf743, 0xc5f8,
+ 0xca49, 0xaac9, 0xa875, 0xd04d, 0xd360, 0xd35b, 0xd35f, 0xd35d,
+ 0xafcb, 0xd35e, 0xd35c, 0xd6f1, 0xdafe, 0xdb40, 0xdf69, 0xdf6a,
+ 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67, 0xb86d, 0xbb40, 0xb870,
+ 0xe37a, 0xbd7c, 0xe6f1, 0xbd7d, 0xbfa9, 0xeae2, 0xeae0, 0xeae1,
+ 0xede4, 0xede3, 0xede2, 0xf2bb, 0xc3b9, 0xf2bc, 0xf744, 0xc5f9,
+ 0xf8ba, 0xa6cf, 0xaacb, 0xaaca, 0xd04f, 0xacfc, 0xd04e, 0xd362,
+ 0xafcc, 0xd6f2, 0xd361, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db,
+ 0xdb42, 0xdb43, 0xdb41, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e, 0xb872,
+ 0xb871, 0xe6f2, 0xe6f4, 0xbd7e, 0xe6f3, 0xeae3, 0xbfaa, 0xf079,
+ 0xf078, 0xc3bb, 0xf2bd, 0xc3bd, 0xc3bc, 0xf4b0, 0xf5ee, 0xc4f3,
+ 0xa6d0, 0xd050, 0xacfd, 0xd365, 0xafce, 0xd364, 0xd363, 0xafcd,
+ 0xd6fb, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd, 0xd6f8, 0xb2de, 0xd6fc,
+ 0xd6f9, 0xd6fa, 0xb2df, 0xb5be, 0xb5bf, 0xdb44, 0xdf6f, 0xdf70,
+ 0xe37e, 0xbb43, 0xbb41, 0xbb42, 0xe37b, 0xe37c, 0xe37d, 0xe6f9,
+ 0xe6fa, 0xbda1, 0xe6f7, 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4,
+ 0xbfab, 0xbfac, 0xede6, 0xc16b, 0xede5, 0xefa8, 0xf07a, 0xf07b,
+ 0xc2bc, 0xc2bd, 0xc16c, 0xf2be, 0xf2bf, 0xf4b1, 0xc4a3, 0xa6d1,
+ 0xa6d2, 0xacfe, 0xaacc, 0xafcf, 0xd051, 0xb5c0, 0xa6d3, 0xad41,
+ 0xd052, 0xd053, 0xad40, 0xad42, 0xa6d4, 0xd054, 0xafd1, 0xd366,
+ 0xafd3, 0xafd0, 0xafd2, 0xd741, 0xb2e0, 0xd740, 0xd6fe, 0xdf71,
+ 0xe3a1, 0xbda2, 0xbfae, 0xeae6, 0xeae5, 0xede7, 0xf5ef, 0xa6d5,
+ 0xcb73, 0xcdaa, 0xad43, 0xd055, 0xd368, 0xafd4, 0xd367, 0xafd5,
+ 0xd743, 0xb2e2, 0xd742, 0xd744, 0xb2e1, 0xdb46, 0xdb47, 0xdb45,
+ 0xb5c1, 0xb874, 0xb875, 0xbb45, 0xe3a3, 0xe3a2, 0xbb44, 0xe6fb,
+ 0xe6fc, 0xeae7, 0xc170, 0xc16f, 0xc16d, 0xc16e, 0xc171, 0xf07c,
+ 0xc2bf, 0xc2be, 0xf2c0, 0xf4b2, 0xc5a5, 0xc5a4, 0xa6d6, 0xd1fb,
+ 0xb877, 0xb5c2, 0xb876, 0xbb46, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9,
+ 0xcdab, 0xcb76, 0xcb77, 0xa877, 0xcb74, 0xa876, 0xa879, 0xcb75,
+ 0xa87b, 0xa87a, 0xcb78, 0xa878, 0xaad1, 0xaacf, 0xcdad, 0xaace,
+ 0xaad3, 0xaad5, 0xaad2, 0xcdb0, 0xcdac, 0xaad6, 0xaad0, 0xa87c,
+ 0xaad4, 0xcdaf, 0xcdae, 0xaacd, 0xd05b, 0xad47, 0xad48, 0xd05d,
+ 0xd057, 0xd05a, 0xd063, 0xd061, 0xad49, 0xd067, 0xad4c, 0xd064,
+ 0xd05c, 0xd059, 0xdb49, 0xd062, 0xad44, 0xd065, 0xd056, 0xd05f,
+ 0xad46, 0xad4b, 0xd060, 0xad4f, 0xad4d, 0xd058, 0xad4a, 0xd05e,
+ 0xad4e, 0xad45, 0xd066, 0xafda, 0xafe3, 0xafd8, 0xafd6, 0xd36a,
+ 0xafde, 0xafdb, 0xd36c, 0xafdd, 0xd36b, 0xd369, 0xd36e, 0xafe2,
+ 0xafe0, 0xdb48, 0xd36f, 0xd36d, 0xafd7, 0xafd9, 0xafdc, 0xafdf,
+ 0xafe1, 0xd74e, 0xb2e4, 0xd745, 0xd747, 0xd748, 0xd750, 0xd74c,
+ 0xd74a, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746, 0xd74f, 0xb2e7,
+ 0xb2e6, 0xd74b, 0xd749, 0xb2e3, 0xb2e8, 0xb5c8, 0xdb51, 0xdb4f,
+ 0xb5ca, 0xdb4a, 0xdfa1, 0xb5c9, 0xdb4e, 0xdb4b, 0xb5c5, 0xb5cb,
+ 0xdb50, 0xb5c7, 0xdb4d, 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4,
+ 0xb5c3, 0xdf77, 0xdf75, 0xdf7b, 0xdf73, 0xdfa2, 0xdf78, 0xdf72,
+ 0xb87b, 0xb8a3, 0xdf7d, 0xdf76, 0xb87e, 0xb87c, 0xdf7e, 0xb879,
+ 0xb878, 0xdf79, 0xb87d, 0xb5cd, 0xdf7c, 0xdf74, 0xb87a, 0xb8a1,
+ 0xb8a2, 0xbb4c, 0xbb48, 0xbb4d, 0xe3a6, 0xe3a5, 0xe3a7, 0xbb4a,
+ 0xe3a4, 0xbb4b, 0xe3aa, 0xe3a9, 0xe3a8, 0xbb49, 0xe741, 0xe744,
+ 0xbda8, 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe,
+ 0xbda6, 0xe742, 0xe6fd, 0xeae9, 0xeaf3, 0xbfb1, 0xbfb0, 0xeaed,
+ 0xeaef, 0xeaea, 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0, 0xeaec,
+ 0xeaf2, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178, 0xc17a, 0xc177,
+ 0xc176, 0xc175, 0xc173, 0xede9, 0xedec, 0xc172, 0xeded, 0xc179,
+ 0xedeb, 0xedea, 0xc2c0, 0xc2c1, 0xf0a1, 0xf07d, 0xf07e, 0xf2c2,
+ 0xf2c1, 0xc3be, 0xf4b4, 0xc4a4, 0xf4b3, 0xf5f0, 0xf745, 0xc5a6,
+ 0xf943, 0xf944, 0xc5d8, 0xa6da, 0xaad7, 0xdb52, 0xbb4e, 0xc17b,
+ 0xedef, 0xa6db, 0xafe5, 0xafe4, 0xdb53, 0xeaf4, 0xa6dc, 0xad50,
+ 0xdb54, 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0xaad8, 0xd068,
+ 0xafe6, 0xd370, 0xb2ea, 0xdb57, 0xb8a4, 0xbb50, 0xbfb3, 0xc17c,
+ 0xc2c2, 0xf4b5, 0xa6de, 0xaad9, 0xafe7, 0xd752, 0xb5ce, 0xbb51,
+ 0xe3ab, 0xe745, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0, 0xcdb1,
+ 0xd069, 0xad51, 0xd372, 0xafea, 0xafe8, 0xafe9, 0xafeb, 0xd371,
+ 0xd757, 0xd754, 0xd756, 0xb2eb, 0xb2ed, 0xb2ec, 0xd753, 0xb2ee,
+ 0xd755, 0xdb58, 0xdb59, 0xdb5a, 0xdfa6, 0xdfa7, 0xdfa5, 0xdfa8,
+ 0xb8a5, 0xdfa4, 0xbb53, 0xe74a, 0xe746, 0xe749, 0xe74b, 0xe748,
+ 0xe747, 0xeaf5, 0xeaf6, 0xeaf7, 0xbfb4, 0xbfb5, 0xedf1, 0xedf0,
+ 0xedf2, 0xf0a3, 0xf0a2, 0xf2c4, 0xf2c5, 0xf2c3, 0xc4a5, 0xf4b6,
+ 0xf4b7, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, 0xc17d, 0xa6e2,
+ 0xd758, 0xdb5b, 0xc641, 0xca4a, 0xca4b, 0xca4d, 0xa6e3, 0xca4e,
+ 0xca4c, 0xcba2, 0xcba3, 0xcb7b, 0xcba1, 0xa8a1, 0xa8a2, 0xcb7c,
+ 0xcb7a, 0xcb79, 0xcb7d, 0xa87e, 0xcb7e, 0xd06a, 0xcdb6, 0xaadc,
+ 0xcdb5, 0xcdb7, 0xaadb, 0xcdbc, 0xaadf, 0xcdb2, 0xcdc0, 0xcdc6,
+ 0xaae6, 0xcdc3, 0xaae3, 0xcdb9, 0xcdbf, 0xcdc1, 0xcdb4, 0xaae2,
+ 0xaadd, 0xcdba, 0xaae4, 0xaae7, 0xaae1, 0xaada, 0xcdbe, 0xcdb8,
+ 0xcdc5, 0xaae9, 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade,
+ 0xaae8, 0xcdb3, 0xcdc2, 0xcdc4, 0xad62, 0xad5c, 0xad64, 0xad61,
+ 0xd071, 0xd074, 0xad5d, 0xd06b, 0xad56, 0xad60, 0xad63, 0xad65,
+ 0xd0a2, 0xd077, 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, 0xd06f,
+ 0xd07e, 0xd073, 0xd076, 0xd0a5, 0xad66, 0xd07d, 0xad5e, 0xd078,
+ 0xd0a4, 0xd075, 0xd079, 0xd07c, 0xd06d, 0xd0a3, 0xd07b, 0xd06c,
+ 0xd070, 0xad5f, 0xad5a, 0xad53, 0xad58, 0xad54, 0xad67, 0xd06e,
+ 0xd3a5, 0xad5b, 0xd07a, 0xce41, 0xd3a8, 0xaffa, 0xd376, 0xd3a3,
+ 0xd37d, 0xd3b2, 0xd3aa, 0xd37e, 0xd3a9, 0xd378, 0xd37c, 0xd3b5,
+ 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0xd3ac, 0xaffc,
+ 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, 0xaff1, 0xaff8,
+ 0xd072, 0xdb5c, 0xd3a6, 0xd37a, 0xaffb, 0xd37b, 0xd3a1, 0xaffe,
+ 0xd375, 0xd3af, 0xd3ae, 0xd3b6, 0xaff3, 0xaff0, 0xd3b4, 0xd3b0,
+ 0xd3a7, 0xd3a2, 0xaff6, 0xaff2, 0xd377, 0xafee, 0xd3b1, 0xafef,
+ 0xd379, 0xd75e, 0xd760, 0xd765, 0xd779, 0xb2fc, 0xb2f2, 0xd75d,
+ 0xb2fd, 0xb2fe, 0xd768, 0xd76f, 0xd775, 0xd762, 0xd769, 0xb340,
+ 0xd777, 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef,
+ 0xd761, 0xd759, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773,
+ 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0xd76b, 0xb2f0, 0xb2fb, 0xb2f3,
+ 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, 0xd75b, 0xd767, 0xd76d,
+ 0xb2f6, 0xd778, 0xd771, 0xd774, 0xb2f5, 0xdb6c, 0xdb60, 0xb5d7,
+ 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5, 0xdb68, 0xdba3, 0xdb69, 0xdb77,
+ 0xb5e2, 0xdb73, 0xb5df, 0xdb74, 0xdb5d, 0xdba4, 0xb5e8, 0xdba1,
+ 0xdb75, 0xdbac, 0xdb70, 0xdfc8, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a,
+ 0xb5e9, 0xb5d4, 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0xdb63,
+ 0xdb61, 0xb5d0, 0xdba5, 0xdb6a, 0xdba8, 0xdba9, 0xb5d8, 0xb5dd,
+ 0xb5d9, 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0xb5d2, 0xdb5e,
+ 0xdba2, 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71, 0xdb6d, 0xb5d1,
+ 0xb5e5, 0xdb7c, 0xb5e7, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3,
+ 0xb5e4, 0xdb79, 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0xdbae, 0xdb5f,
+ 0xdfc7, 0xdfdd, 0xb855, 0xdfcc, 0xdfca, 0xdfb5, 0xb8a9, 0xdfc5,
+ 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, 0xb5e3, 0xdfcf, 0xdfc0,
+ 0xdfd6, 0xb8b0, 0xb8a8, 0xdfaa, 0xdfb2, 0xdfcb, 0xdfc3, 0xdfdc,
+ 0xdfc6, 0xb8b6, 0xdfd7, 0xb8ad, 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0,
+ 0xdfe1, 0xdfb1, 0xdfd2, 0xdfdf, 0xdfab, 0xb5db, 0xdfb9, 0xdfb8,
+ 0xb8af, 0xdfbc, 0xdfbe, 0xdfcd, 0xdfde, 0xb8b2, 0xb8b3, 0xdfb0,
+ 0xb8ab, 0xdfb4, 0xdfda, 0xb8b4, 0xb8ac, 0xb8ae, 0xb8b5, 0xdfe0,
+ 0xdfd3, 0xdfce, 0xdfbb, 0xdfba, 0xb8aa, 0xdfac, 0xb8a7, 0xdfc4,
+ 0xdfad, 0xdfc2, 0xdfb7, 0xdfdb, 0xb8a6, 0xdfb3, 0xdfaf, 0xdfd5,
+ 0xdfae, 0xbb60, 0xe3d3, 0xe3c2, 0xe3ac, 0xe3ca, 0xbb58, 0xe3bb,
+ 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, 0xe3cd, 0xe3ae, 0xe3c1,
+ 0xe3ad, 0xe3bf, 0xe3c8, 0xe3c6, 0xe3ba, 0xe3b5, 0xe3b3, 0xe3b4,
+ 0xe3c7, 0xe3d2, 0xe3bc, 0xbb5a, 0xe3b7, 0xe3cb, 0xbb5d, 0xe3b6,
+ 0xe3b0, 0xe3c0, 0xbb61, 0xbb55, 0xbb5e, 0xe3b8, 0xe3b2, 0xbb57,
+ 0xdfd4, 0xbb56, 0xe3c3, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9,
+ 0xe3b1, 0xe3cc, 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0xe3c9,
+ 0xe3ce, 0xe3d1, 0xe773, 0xe774, 0xe767, 0xe766, 0xe762, 0xbdb4,
+ 0xbdac, 0xe776, 0xe775, 0xdfa9, 0xe75f, 0xe763, 0xe75d, 0xe770,
+ 0xe761, 0xe777, 0xe75a, 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6,
+ 0xe74f, 0xe76d, 0xbdb7, 0xdfbd, 0xe75b, 0xe752, 0xe755, 0xe77b,
+ 0xe75c, 0xe753, 0xe751, 0xe74e, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3,
+ 0xe760, 0xe768, 0xbda9, 0xe778, 0xe77c, 0xbdab, 0xe757, 0xe76b,
+ 0xe76f, 0xe754, 0xe779, 0xbdb2, 0xbdb1, 0xe74c, 0xbdb5, 0xe772,
+ 0xe756, 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c,
+ 0xe77d, 0xe77a, 0xe771, 0xe74d, 0xbdaa, 0xeb49, 0xeb40, 0xeb43,
+ 0xbfbb, 0xeb45, 0xeaf9, 0xeb41, 0xeb47, 0xbfb8, 0xbfbc, 0xbfb6,
+ 0xeafb, 0xeb4c, 0xeb46, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46,
+ 0xeafe, 0xbfb7, 0xeb4a, 0xeb54, 0xbfbf, 0xeb51, 0xeafd, 0xeb44,
+ 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, 0xbfb9, 0xbfba, 0xbfbe,
+ 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0xeb4b, 0xeb4e, 0xee53, 0xee40,
+ 0xee45, 0xee52, 0xee44, 0xedfb, 0xee41, 0xc1a2, 0xedf4, 0xee4d,
+ 0xee4f, 0xedf3, 0xc1a1, 0xee51, 0xee49, 0xc1a8, 0xee50, 0xee42,
+ 0xc1aa, 0xedf9, 0xeb52, 0xee4a, 0xee47, 0xedf5, 0xee55, 0xc1a4,
+ 0xc1a5, 0xedf7, 0xee48, 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3,
+ 0xee4c, 0xedfe, 0xee56, 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc,
+ 0xc2cb, 0xedf6, 0xc1a9, 0xc2c4, 0xc17e, 0xc1a6, 0xc2c8, 0xf0b3,
+ 0xf0a9, 0xf0a4, 0xf0aa, 0xf0b4, 0xf0b8, 0xf0b7, 0xc2ca, 0xc2c9,
+ 0xf0ab, 0xf0b9, 0xf0ae, 0xf0a6, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2,
+ 0xf0a5, 0xf0ac, 0xf0b1, 0xc2c7, 0xf0af, 0xc2c5, 0xf0b0, 0xc2c3,
+ 0xc2c6, 0xf2d5, 0xf0b5, 0xc3c2, 0xf2cd, 0xf2d1, 0xf2c9, 0xf2cc,
+ 0xf2d4, 0xc3c0, 0xf2d9, 0xf2d2, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3,
+ 0xc3c4, 0xf2d7, 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8,
+ 0xf2d8, 0xf2d6, 0xf2c7, 0xf2cf, 0xf4be, 0xc3c5, 0xf2d0, 0xc4a7,
+ 0xc4a9, 0xc4a6, 0xf4c3, 0xf4bb, 0xf4b9, 0xf4bd, 0xf4ba, 0xf4bf,
+ 0xf4c1, 0xc4aa, 0xc4ac, 0xf4c0, 0xc4ad, 0xc4ab, 0xf4c2, 0xc4a8,
+ 0xc4f4, 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0xf5fd, 0xf5f4,
+ 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8,
+ 0xf5fc, 0xf5f2, 0xf74a, 0xc4f5, 0xf5f9, 0xf7f4, 0xf74b, 0xf749,
+ 0xf747, 0xf748, 0xf74c, 0xc5d9, 0xf7f2, 0xf7f0, 0xf7f5, 0xf7f3,
+ 0xf7f6, 0xc5da, 0xf7f1, 0xf8bc, 0xf945, 0xf946, 0xf947, 0xf9c7,
+ 0xf9bd, 0xca4f, 0xaaea, 0xad68, 0xd3b8, 0xd3b7, 0xb040, 0xb342,
+ 0xd77c, 0xd77b, 0xb5ea, 0xb8b8, 0xb8b7, 0xb8b9, 0xe3d4, 0xe77e,
+ 0xeb58, 0xeb5a, 0xeb59, 0xc1ab, 0xee57, 0xf0ba, 0xf9a5, 0xa6e4,
+ 0xcdc9, 0xcdca, 0xcdc8, 0xcdc7, 0xaaeb, 0xd0a9, 0xd0a7, 0xd0a6,
+ 0xad69, 0xad6b, 0xad6a, 0xd0a8, 0xd3c4, 0xd3c1, 0xd3bf, 0xb041,
+ 0xd3c2, 0xb046, 0xd3bc, 0xd3cb, 0xd3cd, 0xd3bd, 0xb043, 0xd3ce,
+ 0xd3c9, 0xd3bb, 0xd3c0, 0xd3ca, 0xd3c6, 0xd3c3, 0xb048, 0xd3cc,
+ 0xd3be, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0xd3c8, 0xd3ba,
+ 0xb045, 0xb042, 0xb34c, 0xd7a5, 0xb34b, 0xd7a8, 0xd7ab, 0xb348,
+ 0xb346, 0xd77e, 0xd7a9, 0xd7a7, 0xd7a4, 0xd7ac, 0xd7ad, 0xd7af,
+ 0xd7b0, 0xd77d, 0xb345, 0xd7a2, 0xd7a1, 0xd7ae, 0xb347, 0xd7a3,
+ 0xb349, 0xb344, 0xd7a6, 0xb34d, 0xb34a, 0xd7aa, 0xb5f1, 0xdbbf,
+ 0xdbb4, 0xb5ee, 0xdfe7, 0xdbbd, 0xdbb1, 0xb5ec, 0xdbb6, 0xb5ef,
+ 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, 0xdbb2, 0xdbb5, 0xb5f0, 0xdbb3,
+ 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb, 0xb5ed, 0xdfe8, 0xdfee,
+ 0xdfe4, 0xdfea, 0xb8ba, 0xdfe6, 0xb8c0, 0xb8bf, 0xb8be, 0xdfed,
+ 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0, 0xb8c3, 0xb8bd, 0xb8bc, 0xdfec,
+ 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef, 0xdfeb, 0xe3f4, 0xe3e9, 0xb8bb,
+ 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de, 0xbb65, 0xe3db, 0xe3e4, 0xe3dc,
+ 0xbb67, 0xe3d6, 0xe3f1, 0xbb68, 0xe3ee, 0xe3ef, 0xe3d7, 0xbb6d,
+ 0xe3e6, 0xe3e0, 0xe3e7, 0xe3da, 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5,
+ 0xbb69, 0xe3ec, 0xbb6c, 0xe3f0, 0xe3ea, 0xbb66, 0xe3e8, 0xe3e2,
+ 0xbb64, 0xe3d9, 0xe3e1, 0xe3ed, 0xe3df, 0xe3e3, 0xbdc1, 0xdfe9,
+ 0xe7b2, 0xe7bb, 0xe7b1, 0xe7ad, 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b,
+ 0xe7a1, 0xbdc0, 0xe7a7, 0xbdbf, 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4,
+ 0xe7ae, 0xe7b3, 0xbdbb, 0xe7ab, 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba,
+ 0xbdbc, 0xe7bf, 0xbdbe, 0xe7c0, 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af,
+ 0xe7b8, 0xe7b5, 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, 0xbdbd,
+ 0xeb64, 0xe7b7, 0xe7bc, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67,
+ 0xeb65, 0xeb60, 0xeb6f, 0xbfc4, 0xeb5c, 0xeb68, 0xeb69, 0xeb5f,
+ 0xeb5e, 0xeb6c, 0xeb62, 0xeb5d, 0xeb63, 0xeb6e, 0xeb5b, 0xeb6d,
+ 0xeb6a, 0xbfc2, 0xbfc1, 0xbfc3, 0xeb66, 0xf0cb, 0xee59, 0xc1b1,
+ 0xee5d, 0xee5a, 0xee61, 0xee67, 0xee5c, 0xee70, 0xc1ae, 0xee6a,
+ 0xee5f, 0xee6b, 0xee66, 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60,
+ 0xee6e, 0xee58, 0xee6c, 0xc1ac, 0xee64, 0xee63, 0xee68, 0xee5b,
+ 0xc1b0, 0xc1b4, 0xee62, 0xee69, 0xc1b5, 0xee65, 0xc1ad, 0xc1af,
+ 0xf0c7, 0xf0c5, 0xf0cc, 0xf0c9, 0xf0cd, 0xf0be, 0xf0c6, 0xf0d1,
+ 0xee6f, 0xf0c2, 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4, 0xf0c1,
+ 0xf0bc, 0xf0bb, 0xf0d0, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8, 0xc2cc,
+ 0xc2ce, 0xf0c3, 0xf0cf, 0xf2de, 0xf2df, 0xc3c9, 0xf2dc, 0xc3c6,
+ 0xf2e4, 0xc3ca, 0xf2e6, 0xf2db, 0xf0ce, 0xf2e8, 0xf2dd, 0xc3c7,
+ 0xf2e3, 0xf2e5, 0xf2e0, 0xf2e7, 0xf2e2, 0xf2e1, 0xc3c8, 0xf4c5,
+ 0xf4c6, 0xf4c8, 0xc4ae, 0xc4af, 0xf4c9, 0xf4c7, 0xf4c4, 0xf642,
+ 0xf645, 0xf641, 0xc4fa, 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644,
+ 0xf751, 0xf74f, 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0xf7f9,
+ 0xf7d7, 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0xf8bf, 0xc5fa, 0xf8be,
+ 0xf8bd, 0xc5fb, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, 0xa6e5,
+ 0xd0aa, 0xd3cf, 0xd3d0, 0xdbc0, 0xf647, 0xf8c0, 0xa6e6, 0xad6c,
+ 0xd0ab, 0xd7b1, 0xb34e, 0xdbc2, 0xdbc1, 0xb5f3, 0xb8c5, 0xe7c1,
+ 0xbdc3, 0xbdc4, 0xbfc5, 0xc5fc, 0xa6e7, 0xd0ac, 0xaaed, 0xd0ae,
+ 0xd0ad, 0xad6d, 0xd3d1, 0xd3d8, 0xb049, 0xd3d6, 0xd3d4, 0xd3db,
+ 0xd3d2, 0xd3d3, 0xb04a, 0xb04e, 0xd3dc, 0xb04d, 0xd3da, 0xd3d7,
+ 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xb350, 0xd7b2, 0xb355, 0xd7c2,
+ 0xb354, 0xd7c4, 0xd7b8, 0xb352, 0xd7c3, 0xd7b3, 0xb353, 0xd7bf,
+ 0xd7bb, 0xd7bd, 0xd7b7, 0xd7be, 0xb34f, 0xd7ba, 0xd7b9, 0xd7b5,
+ 0xd7c0, 0xd7bc, 0xd7b4, 0xd7b6, 0xb351, 0xd7c1, 0xb5f6, 0xdbcd,
+ 0xdbc9, 0xdbcb, 0xdbc6, 0xdbc5, 0xdbc3, 0xdbca, 0xdbcc, 0xdbc8,
+ 0xdbc7, 0xb5f4, 0xb5f5, 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3,
+ 0xdff4, 0xdff9, 0xb8cf, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, 0xb8ca,
+ 0xb8c8, 0xdff7, 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, 0xb8cc,
+ 0xe3f6, 0xbb74, 0xe442, 0xe441, 0xe3fb, 0xbb76, 0xe440, 0xe3f7,
+ 0xe3f8, 0xbb6e, 0xbb70, 0xe3fd, 0xe3f5, 0xbb72, 0xbb71, 0xe3f9,
+ 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0xdbce, 0xbb6f, 0xe7c2, 0xe7c9,
+ 0xbdc6, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0xe7cc, 0xbdc5, 0xe7cb,
+ 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6, 0xe7c7, 0xe7c8,
+ 0xbb75, 0xeb70, 0xeb7c, 0xbfca, 0xeb77, 0xeb79, 0xbfc8, 0xeb71,
+ 0xeb75, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b, 0xeb73, 0xeb74, 0xeb7a,
+ 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0xee71, 0xc1b7, 0xee77, 0xc1b9,
+ 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0xee75, 0xee78, 0xc1b8, 0xf0d6,
+ 0xf0d9, 0xf0d3, 0xf0d5, 0xf0d4, 0xf0d7, 0xf0d8, 0xee76, 0xf0d2,
+ 0xc3cd, 0xf2ec, 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0,
+ 0xc3ce, 0xc3cc, 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0xf4cb,
+ 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, 0xf752,
+ 0xc5a7, 0xf7fd, 0xf7fc, 0xf7fb, 0xf948, 0xf949, 0xf94b, 0xf94a,
+ 0xca50, 0xa6e8, 0xad6e, 0xd7c5, 0xb5f7, 0xdffa, 0xc2d0, 0xf2f2,
+ 0xa8a3, 0xb357, 0xb356, 0xdbd0, 0xb5f8, 0xdbd2, 0xdbd1, 0xdffb,
+ 0xb8d0, 0xe443, 0xe446, 0xe445, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf,
+ 0xbfcc, 0xbfcb, 0xc1bb, 0xee79, 0xee7b, 0xee7a, 0xc2d1, 0xf2f4,
+ 0xf2f3, 0xf4cc, 0xc4b1, 0xc4fd, 0xf754, 0xf753, 0xc65b, 0xa8a4,
+ 0xd0af, 0xad6f, 0xd7c8, 0xd7c6, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043,
+ 0xdbd3, 0xdffc, 0xe041, 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd,
+ 0xe044, 0xe449, 0xe447, 0xe448, 0xe7d3, 0xe7d1, 0xe7d2, 0xeb7d,
+ 0xee7c, 0xee7d, 0xc2d2, 0xf2f5, 0xf4cd, 0xc4b2, 0xf64c, 0xf755,
+ 0xc5a9, 0xf7fe, 0xf94c, 0xa8a5, 0xad71, 0xad72, 0xd0b0, 0xd0b1,
+ 0xad70, 0xb054, 0xb052, 0xb051, 0xb058, 0xb050, 0xb059, 0xd3dd,
+ 0xb056, 0xb053, 0xb057, 0xb055, 0xb04f, 0xb35f, 0xb359, 0xd7cc,
+ 0xb35e, 0xb360, 0xb35a, 0xb35b, 0xd7ca, 0xb358, 0xd7cb, 0xb35d,
+ 0xd7c9, 0xb35c, 0xb644, 0xb646, 0xdbd8, 0xb645, 0xb5f9, 0xb5fd,
+ 0xb8e4, 0xe049, 0xdbda, 0xb5fe, 0xdbdd, 0xdbde, 0xb643, 0xdbe0,
+ 0xdbe2, 0xdbe3, 0xdbd7, 0xdbd6, 0xdbe4, 0xb642, 0xdbe1, 0xdbdf,
+ 0xb640, 0xb5fb, 0xb647, 0xdbdb, 0xdbdc, 0xdbd9, 0xb641, 0xb5fc,
+ 0xb5fa, 0xe048, 0xb8df, 0xb8da, 0xb8d5, 0xb8e5, 0xb8d6, 0xb8d2,
+ 0xb8e1, 0xb8de, 0xb8e0, 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050,
+ 0xe04d, 0xe045, 0xe04a, 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0xe047,
+ 0xe04f, 0xe04b, 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, 0xe44c,
+ 0xbb78, 0xbb7b, 0xe44e, 0xbba5, 0xe44d, 0xbb7d, 0xbdcf, 0xe44f,
+ 0xbba4, 0xe44b, 0xbba6, 0xbb79, 0xb8db, 0xbb7c, 0xbb7a, 0xbb7e,
+ 0xbba2, 0xbb77, 0xbba7, 0xbba3, 0xbba1, 0xe44a, 0xbdd6, 0xbdd2,
+ 0xbdd9, 0xe7d6, 0xbdda, 0xe7e2, 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd,
+ 0xbdd5, 0xe7de, 0xbdd4, 0xe7e1, 0xbdce, 0xe7df, 0xe7d5, 0xbdcd,
+ 0xebaa, 0xbdd3, 0xbdd0, 0xbdd8, 0xe7d4, 0xe7d8, 0xbdcc, 0xe7d7,
+ 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc, 0xe7e0, 0xe7e4, 0xbddb, 0xbfd2,
+ 0xeba5, 0xebab, 0xeba8, 0xeb7e, 0xebac, 0xeba1, 0xeba7, 0xbfcd,
+ 0xbfd3, 0xebad, 0xbfcf, 0xbfd9, 0xbfd4, 0xebaf, 0xeba9, 0xbfd0,
+ 0xeba2, 0xbfda, 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, 0xbdd1, 0xbfce,
+ 0xebb0, 0xbfdc, 0xbfd5, 0xebae, 0xbfd1, 0xbfd6, 0xbfd7, 0xc1c3,
+ 0xeea4, 0xeead, 0xeeaa, 0xeeac, 0xc1c0, 0xeea5, 0xeeab, 0xc1bc,
+ 0xeea7, 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2,
+ 0xc1bd, 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e,
+ 0xc1c1, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, 0xc2d3,
+ 0xf0da, 0xc2d6, 0xc2d5, 0xf0e9, 0xf0e1, 0xf0de, 0xf0e4, 0xf0dd,
+ 0xf0df, 0xf0e8, 0xf0e6, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2, 0xf0ec,
+ 0xf0e3, 0xf2f9, 0xc3cf, 0xf341, 0xf64f, 0xc3d6, 0xf0e0, 0xf2f7,
+ 0xc3d2, 0xf2f8, 0xf2fd, 0xc3d4, 0xc3d5, 0xf2f6, 0xf340, 0xf342,
+ 0xf2fa, 0xf2fc, 0xf2fe, 0xf2fb, 0xf343, 0xc3d1, 0xc3d7, 0xc3d3,
+ 0xc3d0, 0xf4d0, 0xc4b7, 0xf4ce, 0xf4d2, 0xf4d3, 0xc4b5, 0xf4d4,
+ 0xf4d1, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0xc4b6, 0xc4b3, 0xc4fe,
+ 0xc540, 0xf64e, 0xf64d, 0xf650, 0xf651, 0xc541, 0xf756, 0xf75b,
+ 0xc5aa, 0xf758, 0xf757, 0xf75a, 0xf759, 0xf843, 0xc5dc, 0xf842,
+ 0xf840, 0xf841, 0xc5fe, 0xc5fd, 0xf8c1, 0xf8c2, 0xc640, 0xf94d,
+ 0xf94e, 0xc667, 0xc66d, 0xf9a9, 0xf9c8, 0xa8a6, 0xd7cd, 0xd7ce,
+ 0xe052, 0xe450, 0xe7e5, 0xc1c6, 0xc1c5, 0xf0ee, 0xf344, 0xf844,
+ 0xa8a7, 0xd3de, 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6,
+ 0xbddd, 0xeeb1, 0xc2d7, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, 0xb362,
+ 0xd7cf, 0xd7d0, 0xdbe5, 0xb648, 0xb8e6, 0xe056, 0xe055, 0xe057,
+ 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0xeeb5, 0xeeb2,
+ 0xeeb4, 0xeeb3, 0xc1c7, 0xf0ef, 0xf346, 0xf345, 0xcba4, 0xb05c,
+ 0xb05b, 0xd3e0, 0xd7d1, 0xdbe7, 0xdbe6, 0xb649, 0xe059, 0xe05a,
+ 0xe058, 0xb8e8, 0xb8e7, 0xbbaa, 0xbba9, 0xe7e7, 0xebb3, 0xebb1,
+ 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0xf0f2, 0xf0f1, 0xf0f0, 0xf347,
+ 0xf9aa, 0xa8a9, 0xad73, 0xad74, 0xb05d, 0xb05e, 0xd3e2, 0xd3e1,
+ 0xd7d2, 0xb368, 0xb366, 0xb363, 0xb367, 0xb365, 0xb364, 0xb64a,
+ 0xdbea, 0xb8ed, 0xb64c, 0xb651, 0xdbec, 0xb653, 0xb652, 0xb655,
+ 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d, 0xdbe9, 0xb654, 0xb650,
+ 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0, 0xb8ea, 0xb8eb, 0xb8e9,
+ 0xe05b, 0xe454, 0xbbac, 0xbbad, 0xbbab, 0xe453, 0xe455, 0xe7ea,
+ 0xe7ec, 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, 0xbddf, 0xbde9, 0xbde5,
+ 0xbde6, 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, 0xe7eb, 0xbde8, 0xbde3,
+ 0xbde4, 0xebb5, 0xebb7, 0xebb6, 0xebb8, 0xbfe0, 0xebb4, 0xc1cb,
+ 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9, 0xf0f3, 0xf0f6, 0xf0f5,
+ 0xf0f4, 0xc2d8, 0xf348, 0xf349, 0xc3d8, 0xf34a, 0xc3d9, 0xc4ba,
+ 0xc4b9, 0xf652, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, 0xf845,
+ 0xc642, 0xa8aa, 0xb36a, 0xb369, 0xe05c, 0xe05d, 0xbbae, 0xebb9,
+ 0xbdea, 0xebba, 0xeeb9, 0xa8ab, 0xd0b2, 0xad76, 0xad75, 0xd3e3,
+ 0xb05f, 0xd3e4, 0xd7d5, 0xd7d4, 0xd7d3, 0xdbee, 0xb658, 0xdbed,
+ 0xb657, 0xdbef, 0xb656, 0xe05f, 0xe062, 0xe060, 0xe061, 0xe065,
+ 0xe05e, 0xe066, 0xe063, 0xe064, 0xbbb0, 0xe456, 0xbbaf, 0xe7f2,
+ 0xe7f0, 0xbdeb, 0xe7ef, 0xe7f1, 0xbdec, 0xebbb, 0xebbc, 0xc1cd,
+ 0xf34c, 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, 0xf96f, 0xa8ac,
+ 0xad77, 0xd3e5, 0xd3e7, 0xd3e6, 0xd7d8, 0xb36c, 0xd7d6, 0xb36b,
+ 0xd7d9, 0xd7da, 0xd7d7, 0xdbfb, 0xb660, 0xdbf3, 0xdbf9, 0xb65b,
+ 0xb65e, 0xdbf2, 0xb659, 0xdbf6, 0xe06c, 0xb65d, 0xdbf1, 0xdbf7,
+ 0xdbf4, 0xdbfa, 0xdbf0, 0xdbf8, 0xb65c, 0xb65f, 0xdbf5, 0xb65a,
+ 0xb8f2, 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8, 0xb8f9, 0xe070,
+ 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0xe06b, 0xb8f4, 0xe067,
+ 0xe06a, 0xe071, 0xb8f5, 0xe073, 0xb8f6, 0xbbb1, 0xe45b, 0xe461,
+ 0xe459, 0xe462, 0xe458, 0xe45d, 0xe463, 0xe460, 0xe45f, 0xe45e,
+ 0xe457, 0xe45c, 0xe45a, 0xbdf1, 0xbdee, 0xe7fb, 0xe841, 0xe843,
+ 0xe840, 0xe7f8, 0xe7fa, 0xe845, 0xe842, 0xe7fc, 0xe846, 0xe7f9,
+ 0xe844, 0xbdef, 0xbdf5, 0xbdf3, 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4,
+ 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe, 0xbdf2, 0xbded, 0xe7f7, 0xebc6,
+ 0xbfe2, 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0xebbf, 0xbfe5, 0xebc3,
+ 0xebc4, 0xebbe, 0xebc7, 0xebc0, 0xebc5, 0xbfe4, 0xbfe1, 0xebc1,
+ 0xeebf, 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb, 0xeeba,
+ 0xeebd, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa, 0xc2d9, 0xf141,
+ 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, 0xf0f9, 0xf142, 0xf0f8,
+ 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, 0xf144, 0xf352, 0xc3de,
+ 0xf34f, 0xf353, 0xc3db, 0xf351, 0xc3e0, 0xc3dd, 0xf350, 0xc3df,
+ 0xf354, 0xc3da, 0xc4bc, 0xc4be, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc,
+ 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0xf761,
+ 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, 0xf846,
+ 0xf75f, 0xf8c6, 0xf8c3, 0xf8c4, 0xf8c5, 0xc65c, 0xf951, 0xf950,
+ 0xf94f, 0xf970, 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060, 0xb8fa,
+ 0xbdf6, 0xebc8, 0xc2df, 0xf355, 0xf9ac, 0xa8ae, 0xaaee, 0xad79,
+ 0xad78, 0xb063, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0xd7df, 0xd7db,
+ 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, 0xd7e0, 0xd7e1, 0xdc43,
+ 0xdc41, 0xdc45, 0xdc46, 0xdc4c, 0xdc48, 0xdc4a, 0xdc42, 0xdbfc,
+ 0xdc49, 0xdc4b, 0xdc44, 0xdc47, 0xdbfd, 0xb662, 0xdc40, 0xdbfe,
+ 0xb661, 0xb663, 0xb8fd, 0xe075, 0xe077, 0xe076, 0xe07b, 0xb8fb,
+ 0xe078, 0xe074, 0xe079, 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0xe467,
+ 0xe466, 0xe464, 0xe465, 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d,
+ 0xe84e, 0xe849, 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9,
+ 0xe84b, 0xe84c, 0xe848, 0xbe40, 0xbdfb, 0xbdfa, 0xbdfc, 0xe847,
+ 0xebca, 0xbfe8, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce,
+ 0xbfe9, 0xebcd, 0xbfe7, 0xc1d3, 0xc1d6, 0xeec1, 0xc1d4, 0xeec0,
+ 0xc1d2, 0xc1d5, 0xf146, 0xf147, 0xf148, 0xc2e0, 0xf149, 0xc2e1,
+ 0xc3e2, 0xf358, 0xf359, 0xf357, 0xf356, 0xf35a, 0xc3e1, 0xf4dd,
+ 0xf4db, 0xf4dc, 0xf4de, 0xf4da, 0xf4df, 0xf658, 0xf659, 0xf657,
+ 0xc546, 0xf764, 0xc5af, 0xf765, 0xf848, 0xf847, 0xa8af, 0xb664,
+ 0xb940, 0xbbb6, 0xbfec, 0xbfeb, 0xc3e3, 0xc47c, 0xc547, 0xa8b0,
+ 0xb064, 0xb941, 0xf35b, 0xcba6, 0xa8b1, 0xa8b4, 0xa8b3, 0xa8b2,
+ 0xcba5, 0xcdcd, 0xcdcf, 0xaaef, 0xaaf1, 0xcdcc, 0xcdce, 0xaaf0,
+ 0xcdd1, 0xcdd0, 0xcdd2, 0xd0b6, 0xd0b4, 0xad7c, 0xd0b3, 0xada3,
+ 0xad7e, 0xad7b, 0xada4, 0xad7d, 0xada2, 0xada1, 0xd0b5, 0xad7a,
+ 0xb06a, 0xd3eb, 0xd3f1, 0xb067, 0xb06e, 0xb069, 0xd3ee, 0xd3f0,
+ 0xb06c, 0xd3ea, 0xd3ed, 0xb068, 0xb065, 0xd3ec, 0xb06b, 0xd3ef,
+ 0xb06d, 0xb066, 0xd7e3, 0xd7e6, 0xb370, 0xb37a, 0xb376, 0xd7e4,
+ 0xb37e, 0xb377, 0xb37c, 0xb372, 0xb36f, 0xb371, 0xb37d, 0xd7e5,
+ 0xb375, 0xb378, 0xb374, 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2,
+ 0xdc4d, 0xb665, 0xdc4f, 0xb667, 0xb669, 0xdc4e, 0xb666, 0xb66a,
+ 0xb668, 0xb947, 0xe0a3, 0xb94f, 0xe07e, 0xb950, 0xb945, 0xe0a1,
+ 0xb94a, 0xe0a2, 0xb943, 0xb942, 0xb94d, 0xb94c, 0xb94b, 0xb949,
+ 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0xbbb8, 0xbbbb, 0xbbbf,
+ 0xbbb9, 0xbbbe, 0xbbbc, 0xbbb7, 0xbbbd, 0xbbba, 0xe852, 0xbe43,
+ 0xbe41, 0xe853, 0xbe44, 0xbe42, 0xe851, 0xe850, 0xbff0, 0xe84f,
+ 0xbfee, 0xbfed, 0xebd0, 0xbe45, 0xbfef, 0xebd1, 0xbff2, 0xebd2,
+ 0xbff1, 0xc1d8, 0xeec3, 0xc1d7, 0xc1dc, 0xc1da, 0xc1db, 0xc2e3,
+ 0xc1d9, 0xeec2, 0xebd3, 0xc2e2, 0xc2e4, 0xc3e4, 0xc3e5, 0xf4e0,
+ 0xc5de, 0xc5dd, 0xa8b6, 0xca55, 0xb06f, 0xca52, 0xca53, 0xca51,
+ 0xca54, 0xcbaa, 0xcba7, 0xcbac, 0xcba8, 0xa8b7, 0xa8ba, 0xcba9,
+ 0xa8b9, 0xcbab, 0xa8b8, 0xcdd5, 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6,
+ 0xcdd4, 0xaaf2, 0xaaf5, 0xaaf3, 0xd0b8, 0xd0bc, 0xd0b9, 0xada7,
+ 0xada8, 0xd0bb, 0xd0bd, 0xd0bf, 0xada5, 0xd0be, 0xada6, 0xd7ee,
+ 0xd0ba, 0xd3f2, 0xd3fb, 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc,
+ 0xb071, 0xd3f7, 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8,
+ 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0xd7e8, 0xd7ea,
+ 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0xdc56, 0xebd4, 0xdc57,
+ 0xdc54, 0xb3a3, 0xb66e, 0xdc53, 0xdc59, 0xdc58, 0xb66b, 0xdc5c,
+ 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, 0xdc55, 0xb66d, 0xe0aa, 0xe0a5,
+ 0xe0ab, 0xe0a6, 0xe0a4, 0xe0a7, 0xb951, 0xe0a9, 0xe0a8, 0xb952,
+ 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c,
+ 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0xe859, 0xbe48, 0xf14a,
+ 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, 0xbe46,
+ 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0xeec4, 0xc1dd,
+ 0xf14b, 0xf14c, 0xf14d, 0xf35d, 0xf35c, 0xf4e2, 0xf4e1, 0xf65b,
+ 0xf65c, 0xf65a, 0xf766, 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075,
+ 0xb074, 0xd440, 0xd441, 0xd3fe, 0xb073, 0xd7f5, 0xd7f6, 0xd7f2,
+ 0xb3a4, 0xd7f3, 0xd7f4, 0xdc5f, 0xdc61, 0xdc5d, 0xdc60, 0xb66f,
+ 0xdc5e, 0xb670, 0xdd73, 0xb955, 0xb954, 0xb953, 0xe0ac, 0xe0ad,
+ 0xe473, 0xe475, 0xbbc6, 0xbbc3, 0xbbc5, 0xbbc4, 0xe474, 0xe472,
+ 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a,
+ 0xbe4b, 0xe85d, 0xbe4c, 0xebdb, 0xebdc, 0xebd9, 0xebda, 0xbff4,
+ 0xebd8, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb, 0xc1df, 0xeec9,
+ 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0xf14f, 0xf150, 0xf14e, 0xf152,
+ 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151, 0xf35e, 0xc3e6, 0xf4e5,
+ 0xf4e6, 0xc4bf, 0xf4e4, 0xf4e3, 0xf65d, 0xc548, 0xf849, 0xf8c8,
+ 0xf8c7, 0xc643, 0xc65d, 0xf8c9, 0xf971, 0xc66f, 0xa8bc, 0xaaf6,
+ 0xb956, 0xc4c0, 0xa8bd, 0xadab, 0xb3a5, 0xb671, 0xc2e7, 0xaaf7,
+ 0xd0c1, 0xd0c0, 0xd442, 0xb078, 0xb076, 0xb07a, 0xd444, 0xb079,
+ 0xb077, 0xd443, 0xb3a8, 0xd7fc, 0xb3a7, 0xb3a9, 0xd842, 0xb3ab,
+ 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0xd7f9, 0xd7fa, 0xd7f8,
+ 0xb3a6, 0xd841, 0xd7fb, 0xd7fd, 0xdc6d, 0xdc6c, 0xdc6a, 0xdc62,
+ 0xdc71, 0xdc65, 0xdc6f, 0xdc76, 0xdc6e, 0xb679, 0xb675, 0xdc63,
+ 0xdc69, 0xb677, 0xdc68, 0xb678, 0xb67a, 0xdc6b, 0xb672, 0xb673,
+ 0xdc77, 0xdc75, 0xdc74, 0xdc66, 0xdc72, 0xb676, 0xb674, 0xdc73,
+ 0xdc64, 0xdc67, 0xdc70, 0xe4ba, 0xe0b7, 0xe0b0, 0xe0c3, 0xe0cc,
+ 0xe0b3, 0xb961, 0xe0c0, 0xb957, 0xb959, 0xb965, 0xe0b1, 0xb95a,
+ 0xb95c, 0xb966, 0xb95b, 0xb964, 0xe0b9, 0xe0ae, 0xb962, 0xe0b8,
+ 0xb95e, 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, 0xe0c6, 0xb960, 0xe0af,
+ 0xe0c9, 0xe0c4, 0xe0cb, 0xb958, 0xb967, 0xb95d, 0xe0b5, 0xe0bd,
+ 0xe0c1, 0xe0c5, 0xb95f, 0xe0b4, 0xe0b2, 0xe0be, 0xe0bb, 0xe0ba,
+ 0xe0bf, 0xe0c2, 0xe0c7, 0xe478, 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc,
+ 0xbbd0, 0xe4ad, 0xe4b5, 0xe4a6, 0xbbc8, 0xe4aa, 0xe0b6, 0xbbc9,
+ 0xe4b1, 0xe4b6, 0xe4ae, 0xe4b0, 0xe4b9, 0xe4b2, 0xe47e, 0xe4a9,
+ 0xbbd1, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb, 0xe4a5, 0xbbca, 0xe4b3,
+ 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0xe47b, 0xe4af, 0xe4ac, 0xe4a7,
+ 0xe477, 0xe476, 0xe4a1, 0xe4b4, 0xbbcf, 0xe4b7, 0xe47d, 0xe4a3,
+ 0xbe52, 0xbe5a, 0xbe55, 0xe8a4, 0xe8a1, 0xe867, 0xbe50, 0xbe4f,
+ 0xbe56, 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e, 0xe8a3,
+ 0xbe58, 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877, 0xe875,
+ 0xe868, 0xe862, 0xe87d, 0xbe57, 0xe87e, 0xe878, 0xe86d, 0xe86b,
+ 0xe866, 0xe86e, 0xe87b, 0xe86a, 0xe87a, 0xe8a2, 0xbe53, 0xe876,
+ 0xe87c, 0xe872, 0xe86c, 0xbe51, 0xe4a8, 0xe870, 0xbe59, 0xe869,
+ 0xebf4, 0xbff7, 0xebf3, 0xebf0, 0xec44, 0xbffb, 0xec41, 0xebf8,
+ 0xec43, 0xebe9, 0xebf6, 0xbffd, 0xebe1, 0xebdf, 0xec42, 0xec40,
+ 0xebfe, 0xebed, 0xebec, 0xebe2, 0xc040, 0xebe8, 0xebf2, 0xebfd,
+ 0xc043, 0xec45, 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0xebef, 0xebde,
+ 0xebe0, 0xbff5, 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041,
+ 0xebdd, 0xc1e3, 0xebf9, 0xebfc, 0xbffc, 0xebeb, 0xc044, 0xbff9,
+ 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0xebe4, 0xebfa, 0xebe5, 0xebea,
+ 0xeed2, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3,
+ 0xeed8, 0xeed9, 0xeee2, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, 0xeed4,
+ 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0xeee8, 0xeeda, 0xeee7, 0xeee9,
+ 0xeed0, 0xc1e6, 0xeeea, 0xeede, 0xc1ea, 0xeedb, 0xc1ec, 0xeee4,
+ 0xc1e4, 0xeed6, 0xeee5, 0xeedf, 0xebe3, 0xeee6, 0xeed3, 0xc1e9,
+ 0xeeeb, 0xc1e2, 0xeece, 0xf160, 0xf159, 0xc2e9, 0xf154, 0xf163,
+ 0xf15b, 0xeedc, 0xf165, 0xf155, 0xc2e8, 0xf15f, 0xc2ea, 0xc2f2,
+ 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0xf158, 0xf15d, 0xf162, 0xeecd,
+ 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e, 0xf15a, 0xf168, 0xf36a,
+ 0xf15c, 0xc2ee, 0xc2ed, 0xeecf, 0xc2ef, 0xf164, 0xf166, 0xc2ec,
+ 0xf169, 0xf153, 0xf156, 0xf373, 0xf363, 0xc3eb, 0xf371, 0xf361,
+ 0xc3ec, 0xf36c, 0xf368, 0xc3f1, 0xf372, 0xf362, 0xf365, 0xc3e9,
+ 0xf374, 0xf36d, 0xf370, 0xc3ef, 0xc3f4, 0xc3f2, 0xf369, 0xf364,
+ 0xc3ed, 0xc3ee, 0xf360, 0xc3ea, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3,
+ 0xf36b, 0xf375, 0xc3f5, 0xf367, 0xf36e, 0xf4f3, 0xf542, 0xf4f5,
+ 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed, 0xf4fe,
+ 0xf4f4, 0xc4c2, 0xf544, 0xf4f6, 0xf4fb, 0xf4fd, 0xf4e7, 0xf541,
+ 0xf4f2, 0xf4f7, 0xf4eb, 0xf4ef, 0xf543, 0xf4f9, 0xf4e8, 0xf4ec,
+ 0xf4ee, 0xf4f8, 0xc4c1, 0xf4f1, 0xf4ea, 0xf4f0, 0xf661, 0xf666,
+ 0xc54f, 0xf668, 0xc549, 0xf664, 0xf66a, 0xc54e, 0xc54a, 0xc54b,
+ 0xf660, 0xf667, 0xc54d, 0xf665, 0xc54c, 0xf65f, 0xf663, 0xf662,
+ 0xf65e, 0xf669, 0xc5b1, 0xf76d, 0xf770, 0xf76c, 0xf76e, 0xf76f,
+ 0xf769, 0xf76a, 0xf767, 0xf76b, 0xf768, 0xc5b2, 0xc5b3, 0xf84b,
+ 0xf84d, 0xf84c, 0xf84e, 0xc5e0, 0xf84a, 0xc5df, 0xc5e1, 0xf8cb,
+ 0xf8cc, 0xc644, 0xf8ca, 0xf953, 0xf952, 0xf954, 0xc65f, 0xf955,
+ 0xc65e, 0xf956, 0xf972, 0xf975, 0xf974, 0xc668, 0xf973, 0xc672,
+ 0xc670, 0xc671, 0xc677, 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0xaaf8,
+ 0xd844, 0xdc78, 0xe8a5, 0xf376, 0xaaf9, 0xadac, 0xb07b, 0xd845,
+ 0xd846, 0xb3ac, 0xb67d, 0xdc7a, 0xdc79, 0xb6a3, 0xb67c, 0xdc7b,
+ 0xb67e, 0xb6a2, 0xb6a1, 0xb67b, 0xb968, 0xe0d0, 0xe0ce, 0xe0cf,
+ 0xe0cd, 0xbbd2, 0xbbd5, 0xbbd7, 0xbbd6, 0xbbd3, 0xbbd4, 0xe8a7,
+ 0xe8a6, 0xbe5b, 0xe8a8, 0xe8a9, 0xbe5c, 0xec4d, 0xec4b, 0xeef3,
+ 0xec49, 0xec4a, 0xc046, 0xec46, 0xec4e, 0xec48, 0xec4c, 0xeeef,
+ 0xeef1, 0xeef2, 0xc1f3, 0xeeee, 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0,
+ 0xc1f1, 0xec47, 0xc2f5, 0xf16e, 0xf16c, 0xf16d, 0xc2f3, 0xc2f6,
+ 0xc2f4, 0xf377, 0xf378, 0xc3f6, 0xf545, 0xf547, 0xf546, 0xc4c4,
+ 0xc550, 0xf66d, 0xf66c, 0xf66b, 0xaafa, 0xc9aa, 0xca58, 0xa6e9,
+ 0xca56, 0xca59, 0xca57, 0xcbae, 0xa8c1, 0xa8c2, 0xcbb0, 0xa8bf,
+ 0xcbaf, 0xcbad, 0xa8c0, 0xa8be, 0xcdd8, 0xcddb, 0xaafd, 0xcdda,
+ 0xcdd9, 0xaafc, 0xaafb, 0xab40, 0xcddc, 0xaafe, 0xd0c6, 0xadae,
+ 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, 0xadad, 0xd0c4, 0xd0c5, 0xd0c2,
+ 0xb0a4, 0xb0a1, 0xd445, 0xb0a2, 0xb0a5, 0xd446, 0xb07e, 0xb07c,
+ 0xb07d, 0xb0a3, 0xb3ad, 0xd849, 0xb3b5, 0xd848, 0xd84b, 0xb3b1,
+ 0xd84a, 0xb6ab, 0xb3af, 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, 0xb3b0,
+ 0xd847, 0xb6a7, 0xdc7d, 0xdca3, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9,
+ 0xdc7c, 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0xb6aa, 0xb6a5, 0xe0d3,
+ 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0xe0d4, 0xb969, 0xbbd8, 0xbbda,
+ 0xbbd9, 0xe4bb, 0xe4bc, 0xe8ab, 0xe8aa, 0xc047, 0xc048, 0xec4f,
+ 0xc049, 0xeef6, 0xeef4, 0xeef5, 0xc1f4, 0xf16f, 0xc3f7, 0xc1f5,
+ 0xab41, 0xb0a6, 0xd447, 0xd84c, 0xb3b6, 0xb6ad, 0xdca4, 0xdca6,
+ 0xb6af, 0xb6ae, 0xb6b0, 0xb6b1, 0xdca5, 0xb96e, 0xb96f, 0xb96d,
+ 0xbbdb, 0xb96c, 0xe0d5, 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6,
+ 0xf170, 0xf174, 0xc2f9, 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb,
+ 0xf173, 0xf379, 0xc2f7, 0xc3f8, 0xf8cd, 0xab42, 0xb3b8, 0xb3b7,
+ 0xb6b2, 0xdca8, 0xdca7, 0xb6b3, 0xe0d9, 0xb973, 0xb970, 0xe0d8,
+ 0xb972, 0xe0d6, 0xb971, 0xe0d7, 0xe4bd, 0xbbdd, 0xe8af, 0xbe5d,
+ 0xe8ad, 0xbe5e, 0xbe5f, 0xe8ae, 0xbe60, 0xec51, 0xc04e, 0xc04b,
+ 0xc050, 0xec53, 0xc04c, 0xec52, 0xc04f, 0xc04d, 0xeef9, 0xeefb,
+ 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, 0xeef7, 0xf177, 0xf176, 0xc2fc,
+ 0xf178, 0xf37e, 0xc3fa, 0xf37d, 0xf37a, 0xc3f9, 0xf37b, 0xf37c,
+ 0xf548, 0xf549, 0xc4c5, 0xc553, 0xf66e, 0xc551, 0xc552, 0xf66f,
+ 0xc5b4, 0xc5b5, 0xf771, 0xc645, 0xf8cf, 0xc647, 0xf8ce, 0xf8d0,
+ 0xc646, 0xf957, 0xf9ad, 0xab43, 0xb974, 0xe4be, 0xe8b0, 0xc051,
+ 0xc052, 0xab44, 0xbe61, 0xc3fb, 0xadb1, 0xc053, 0xc5e2, 0xadb2,
+ 0xd84d, 0xdca9, 0xdcab, 0xdcaa, 0xe0dd, 0xe0da, 0xb975, 0xb976,
+ 0xe0db, 0xe0dc, 0xe4c0, 0xe4c5, 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8,
+ 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2, 0xe4c6, 0xbbdf, 0xe8b3, 0xe8b1,
+ 0xbe63, 0xbe62, 0xe8b2, 0xbe64, 0xec56, 0xec55, 0xc054, 0xec54,
+ 0xeefc, 0xeefe, 0xef41, 0xef40, 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd,
+ 0xf17d, 0xf1a2, 0xc2fe, 0xf17b, 0xf17e, 0xf17c, 0xf179, 0xc340,
+ 0xf17a, 0xf3a1, 0xf3a3, 0xf3a2, 0xf54a, 0xf54b, 0xf670, 0xc5b7,
+ 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, 0xc669, 0xadb3, 0xb6b4,
+ 0xe4ca, 0xe4c9, 0xe8b5, 0xe8b4, 0xc1fa, 0xef43, 0xef42, 0xf1a5,
+ 0xf1a3, 0xf1a6, 0xf1a4, 0xc3fc, 0xf3a4, 0xf3a5, 0xf3a6, 0xf671,
+ 0xf772, 0xf8d2, 0xadb4, 0xec57, 0xef44, 0xadb5, 0xbbe0, 0xec58,
+ 0xc341, 0xf1a7, 0xc3fd, 0xf54c, 0xf54d, 0xc554, 0xf851, 0xadb6,
+ 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, 0xb6b7, 0xb97a,
+ 0xb97c, 0xe0df, 0xe0e0, 0xe0de, 0xb977, 0xb978, 0xb97b, 0xb979,
+ 0xe4cb, 0xbbe1, 0xbbe2, 0xe8bc, 0xbe67, 0xe8b7, 0xe8b6, 0xe8bb,
+ 0xbe65, 0xc05b, 0xe8b8, 0xe8bd, 0xe8ba, 0xe8b9, 0xbe66, 0xc059,
+ 0xec5a, 0xc055, 0xec5b, 0xec59, 0xc058, 0xc056, 0xc05a, 0xc057,
+ 0xef45, 0xef4a, 0xef46, 0xef49, 0xc1fb, 0xedd4, 0xef48, 0xef47,
+ 0xc344, 0xc342, 0xc345, 0xc343, 0xf1a8, 0xf1a9, 0xf1aa, 0xc346,
+ 0xf3aa, 0xc440, 0xf3a8, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe, 0xf551,
+ 0xf54e, 0xf54f, 0xf550, 0xf672, 0xc556, 0xc555, 0xf774, 0xf773,
+ 0xc5b8, 0xc5e3, 0xc649, 0xc660, 0xf958, 0xf9ae, 0xf9af, 0xadb7,
+ 0xdcad, 0xe0e1, 0xe4cc, 0xe4cd, 0xbbe3, 0xbbe4, 0xe8be, 0xbe68,
+ 0xc1fc, 0xf1ab, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab,
+ 0xf675, 0xf552, 0xf553, 0xc4c6, 0xf674, 0xf673, 0xf775, 0xf9b0,
+ 0xadb8, 0xadb9, 0xb0a7, 0xd448, 0xd84f, 0xb6b8, 0xb6bb, 0xb6b9,
+ 0xdcae, 0xb6bd, 0xb6ba, 0xb6bc, 0xb97e, 0xe0e2, 0xe0e3, 0xe8c0,
+ 0xb97d, 0xb9a1, 0xb9a2, 0xe4cf, 0xe4ce, 0xbbe5, 0xbbe6, 0xe4d0,
+ 0xe8bf, 0xbbe8, 0xbe69, 0xbbe7, 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a,
+ 0xe8c2, 0xe8c5, 0xe8c3, 0xe8c4, 0xbe6c, 0xc061, 0xc05f, 0xc05e,
+ 0xec5d, 0xc060, 0xec5c, 0xef4b, 0xec5e, 0xc05d, 0xec5f, 0xef4e,
+ 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, 0xef54, 0xef53, 0xef50,
+ 0xef4f, 0xc1fd, 0xf1ae, 0xf1ad, 0xc34a, 0xc348, 0xc349, 0xf1ac,
+ 0xf3b1, 0xc443, 0xf3b0, 0xf3af, 0xc444, 0xf558, 0xf557, 0xf555,
+ 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557,
+ 0xf676, 0xf556, 0xf777, 0xc5e4, 0xc661, 0xf959, 0xf9b1, 0xadba,
+ 0xd850, 0xef55, 0xadbb, 0xe4d2, 0xe4d1, 0xec60, 0xef57, 0xef56,
+ 0xc34c, 0xf3b2, 0xf3b3, 0xc4c9, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be,
+ 0xe0e4, 0xe0e6, 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0xe4d4,
+ 0xe4d6, 0xe4d5, 0xe4d8, 0xbbe9, 0xe4d7, 0xe4d3, 0xe4d9, 0xe8cc,
+ 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, 0xbe6e, 0xbe71, 0xbe73,
+ 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, 0xe8ce, 0xbe74, 0xbe70,
+ 0xe8c6, 0xbe6d, 0xbe6f, 0xc063, 0xec66, 0xec64, 0xec63, 0xec69,
+ 0xec68, 0xec67, 0xec62, 0xc062, 0xec61, 0xec65, 0xc064, 0xef5a,
+ 0xef5e, 0xef5b, 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60,
+ 0xef61, 0xc240, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8,
+ 0xf1b7, 0xf1b1, 0xf1b5, 0xf1b0, 0xf1b2, 0xc34d, 0xf1af, 0xf1b4,
+ 0xf3c0, 0xf3b5, 0xc445, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf, 0xf3b7,
+ 0xf3be, 0xf3bb, 0xf3ba, 0xf3bd, 0xf3b8, 0xf3b6, 0xf3bc, 0xf560,
+ 0xf55e, 0xc4ca, 0xf55d, 0xf563, 0xf561, 0xc4cb, 0xf55c, 0xf55a,
+ 0xf55b, 0xc4cd, 0xf55f, 0xc4cc, 0xf562, 0xf678, 0xf67e, 0xf679,
+ 0xc55b, 0xf6a1, 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558,
+ 0xf67a, 0xf77d, 0xf7a1, 0xf77e, 0xf77b, 0xc5bb, 0xf778, 0xf77c,
+ 0xf7a3, 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, 0xf853,
+ 0xc5e5, 0xc5e6, 0xf8d3, 0xc64a, 0xf976, 0xc66a, 0xf9b3, 0xc66b,
+ 0xf9b4, 0xf9b5, 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd, 0xb0a9, 0xe0e9,
+ 0xe0e8, 0xbbea, 0xbbeb, 0xe4da, 0xe8d2, 0xec6c, 0xbe75, 0xc065,
+ 0xec6a, 0xec6d, 0xc066, 0xef64, 0xec6b, 0xf1b9, 0xc34e, 0xf3c1,
+ 0xf566, 0xf564, 0xf565, 0xf6a2, 0xc55c, 0xf7a4, 0xc5ea, 0xc5bc,
+ 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xb0aa, 0xf1ba, 0xd449, 0xb9a6,
+ 0xe4db, 0xbbec, 0xe4dc, 0xe8d4, 0xe8d3, 0xc068, 0xbe76, 0xbe77,
+ 0xe8d7, 0xe8d6, 0xe8d5, 0xec6e, 0xec71, 0xec70, 0xec6f, 0xc067,
+ 0xef68, 0xef66, 0xef65, 0xef67, 0xc34f, 0xf1bc, 0xf1bd, 0xc350,
+ 0xf1bb, 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0xf567, 0xf569,
+ 0xf568, 0xf6a3, 0xf6a6, 0xf6a4, 0xf6a5, 0xf7a5, 0xc5bd, 0xf854,
+ 0xf855, 0xf856, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0xbe78, 0xc069,
+ 0xf1be, 0xf7a6, 0xf9c4, 0xd44a, 0xc67b, 0xb0ac, 0xec72, 0xf1bf,
+ 0xf3c6, 0xf6a7, 0xf7a7, 0xb0ad, 0xe4dd, 0xe4de, 0xbbed, 0xbbee,
+ 0xe8d9, 0xbe7a, 0xbe79, 0xe8d8, 0xef69, 0xf1c0, 0xf1c2, 0xf1c1,
+ 0xc353, 0xc352, 0xc351, 0xc55e, 0xf6a8, 0xc55d, 0xf7a9, 0xf7a8,
+ 0xc64c, 0xf8d5, 0xb3bd, 0xe0ea, 0xe4e1, 0xe4df, 0xe4e0, 0xe8e2,
+ 0xe8dd, 0xe8da, 0xe8e1, 0xe8e3, 0xbe7c, 0xe8e0, 0xe8dc, 0xe8db,
+ 0xe8df, 0xe8de, 0xbe7b, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77,
+ 0xec73, 0xec79, 0xec74, 0xef72, 0xec75, 0xeca2, 0xec7c, 0xc06a,
+ 0xec7b, 0xec7a, 0xec7e, 0xef6a, 0xef6d, 0xef6c, 0xef74, 0xef6f,
+ 0xef73, 0xef71, 0xef70, 0xef6e, 0xef6b, 0xc243, 0xc242, 0xc244,
+ 0xc241, 0xef75, 0xf1c8, 0xf1cb, 0xf1c9, 0xf1cd, 0xf1ce, 0xf1c6,
+ 0xc358, 0xf1c7, 0xf1c5, 0xf1cc, 0xf1c4, 0xf1c3, 0xc357, 0xc355,
+ 0xc354, 0xf1ca, 0xf3cf, 0xf3d5, 0xc44a, 0xf3d0, 0xf3d3, 0xf3d7,
+ 0xc44b, 0xf3d2, 0xf3ca, 0xf3c9, 0xf3d6, 0xf3cd, 0xf3cb, 0xf3d4,
+ 0xf3cc, 0xc449, 0xc448, 0xf3c7, 0xf3c8, 0xf3d1, 0xf3ce, 0xf56c,
+ 0xf56f, 0xc356, 0xf56d, 0xf573, 0xf571, 0xf56b, 0xf576, 0xf56a,
+ 0xc4cf, 0xf572, 0xf56e, 0xc4ce, 0xf575, 0xf574, 0xf6ab, 0xf6aa,
+ 0xf6b1, 0xf6ad, 0xf6b0, 0xc560, 0xf6ae, 0xf6af, 0xf6a9, 0xf6ac,
+ 0xc55f, 0xc5bf, 0xf7b4, 0xf7af, 0xf7b3, 0xf7b6, 0xf7b2, 0xf7ae,
+ 0xc5c1, 0xf7b1, 0xf7b5, 0xc5c0, 0xf7ac, 0xf570, 0xf7b0, 0xf7ad,
+ 0xf7aa, 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860,
+ 0xf859, 0xf857, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, 0xf858, 0xf85e,
+ 0xf8da, 0xc64d, 0xf8db, 0xf8d9, 0xf8d6, 0xf8d8, 0xf8d7, 0xf95a,
+ 0xf95c, 0xf95b, 0xf979, 0xf978, 0xf977, 0xf97a, 0xc673, 0xc674,
+ 0xf9ca, 0xf9ce, 0xb3be, 0xdcaf, 0xe0ed, 0xb9a7, 0xe0eb, 0xe0ec,
+ 0xe4e2, 0xe4e3, 0xbbf1, 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, 0xe8eb,
+ 0xe8e5, 0xe8ec, 0xe8e4, 0xe8e6, 0xe8e7, 0xe8ea, 0xbea1, 0xe8ef,
+ 0xe8ee, 0xbe7d, 0xe8e9, 0xe8ed, 0xbe7e, 0xecac, 0xc06f, 0xeca7,
+ 0xc06b, 0xeca4, 0xecaa, 0xecad, 0xc070, 0xeca9, 0xeca6, 0xecae,
+ 0xeca5, 0xecab, 0xc06c, 0xeca3, 0xc06d, 0xc06e, 0xeca8, 0xefa9,
+ 0xef7a, 0xef7b, 0xef7e, 0xef7c, 0xef76, 0xef79, 0xefa5, 0xef7d,
+ 0xc245, 0xefa7, 0xefa4, 0xc246, 0xefa6, 0xef77, 0xefa2, 0xefa3,
+ 0xefa1, 0xf1d2, 0xf1d4, 0xf1d7, 0xf1d1, 0xc359, 0xf1d9, 0xf1d0,
+ 0xf1da, 0xf1d6, 0xf1d8, 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf,
+ 0xc35a, 0xf1db, 0xc35b, 0xc44d, 0xef78, 0xf3f1, 0xf3e8, 0xc44f,
+ 0xf3e4, 0xc450, 0xf3ed, 0xf3e7, 0xf3dd, 0xc44e, 0xf3ea, 0xf3e5,
+ 0xf3e6, 0xf3d8, 0xf3df, 0xf3ee, 0xf3eb, 0xf3e3, 0xf3ef, 0xf3de,
+ 0xf3d9, 0xf3ec, 0xf3db, 0xf3e9, 0xf3e0, 0xf3f0, 0xf3dc, 0xc44c,
+ 0xf3da, 0xf3e1, 0xf3e2, 0xf57d, 0xf57b, 0xf5a2, 0xf5ae, 0xf5a5,
+ 0xf57c, 0xf578, 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577,
+ 0xf5a1, 0xf5a6, 0xf5a8, 0xf5ab, 0xf579, 0xf5af, 0xf5b0, 0xf5a9,
+ 0xf5ad, 0xf5a4, 0xf6c1, 0xf6c4, 0xc561, 0xf6c3, 0xf6c8, 0xf6c6,
+ 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, 0xc564, 0xf6bf, 0xf6c0, 0xf6bc,
+ 0xf6b4, 0xf6b9, 0xf5ac, 0xf6b5, 0xc563, 0xf6bb, 0xf6ba, 0xf6b6,
+ 0xf6c2, 0xf6b7, 0xf7bb, 0xf6c5, 0xf6c7, 0xf6be, 0xf6b8, 0xf7bc,
+ 0xf7be, 0xf7b8, 0xc5c2, 0xf7c5, 0xf7c3, 0xc5c3, 0xf7c2, 0xf7c1,
+ 0xf7ba, 0xf7b7, 0xf7bd, 0xf7c6, 0xf7b9, 0xf7bf, 0xf869, 0xf86e,
+ 0xf864, 0xf867, 0xc5ee, 0xf86b, 0xf872, 0xf7c0, 0xf865, 0xf86f,
+ 0xf873, 0xf86a, 0xf863, 0xf86d, 0xf86c, 0xf871, 0xf870, 0xf7c4,
+ 0xf868, 0xf862, 0xf866, 0xc64e, 0xc64f, 0xf861, 0xf8e6, 0xf8dd,
+ 0xf8e5, 0xf8e2, 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0,
+ 0xf8de, 0xf8e4, 0xf95d, 0xf95e, 0xf960, 0xf95f, 0xf962, 0xf961,
+ 0xf97c, 0xf97b, 0xf9b7, 0xf9b8, 0xf9c5, 0xc678, 0xc67c, 0xf9cf,
+ 0xc67d, 0xb3bf, 0xc4d0, 0xf6c9, 0xc650, 0xc651, 0xb3c0, 0xe0ee,
+ 0xb9a8, 0xe8f0, 0xecb0, 0xecb1, 0xecaf, 0xefab, 0xefaa, 0xc247,
+ 0xf1df, 0xefac, 0xf1de, 0xf3f3, 0xc451, 0xc453, 0xf3f2, 0xc452,
+ 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca, 0xc565, 0xc5ef, 0xf8e8, 0xf963,
+ 0xf9d2, 0xb3c1, 0xe4e5, 0xbea2, 0xecb3, 0xecb2, 0xefad, 0xc454,
+ 0xc4d1, 0xf7c7, 0xf9cb, 0xb3c2, 0xbbf2, 0xbea3, 0xf3f4, 0xf874,
+ 0xb6c0, 0xefae, 0xc664, 0xb6c1, 0xbea4, 0xc248, 0xf875, 0xb6c2,
+ 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0xc071, 0xefaf, 0xc24c, 0xc24a,
+ 0xc24b, 0xc249, 0xf1e0, 0xc35c, 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6,
+ 0xc4d2, 0xf6cb, 0xf6cd, 0xf6cc, 0xc566, 0xf7c8, 0xf876, 0xf877,
+ 0xc5f0, 0xf964, 0xf97d, 0xc675, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5,
+ 0xe0ef, 0xefb1, 0xf1e2, 0xf1e1, 0xf878, 0xc652, 0xf965, 0xf97e,
+ 0xb9a9, 0xe8f2, 0xe8f3, 0xecb7, 0xb9aa, 0xc35d, 0xf1e3, 0xf6cf,
+ 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0xf8e9, 0xb9ab, 0xefb4, 0xefb3,
+ 0xefb2, 0xf1e4, 0xf1e8, 0xf1e7, 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6,
+ 0xf5b9, 0xc4d3, 0xf5b8, 0xf6d1, 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9,
+ 0xf87c, 0xf87b, 0xf87a, 0xbbf3, 0xecb8, 0xc24d, 0xf3f7, 0xf3f8,
+ 0xf7cc, 0xf87d, 0xf8ea, 0xf966, 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e,
+ 0xf1e9, 0xf3f9, 0xf6d2, 0xf87e, 0xbea6, 0xefb5, 0xf1ea, 0xf3fa,
+ 0xf3fb, 0xf3fc, 0xf5be, 0xf5ba, 0xc568, 0xf5bd, 0xf5bc, 0xc4d4,
+ 0xf5bb, 0xc4d6, 0xc4d5, 0xf6d4, 0xf6d3, 0xc569, 0xc56a, 0xc5c6,
+ 0xf7cd, 0xc5c5, 0xf8a3, 0xf8a4, 0xf8a2, 0xf8a1, 0xc654, 0xf8eb,
+ 0xf8ec, 0xf8ed, 0xc653, 0xf967, 0xf96a, 0xf969, 0xf968, 0xf9d3,
+ 0xc073, 0xc365, 0xf5bf, 0xf6d5, 0xc5c7, 0xf7ce, 0xf9d5, 0xc074,
+ 0xefb6, 0xf7cf, 0xf9a1, 0xc94a, 0xddfc, 0xa14a, 0xa157, 0xa159,
+ 0xa15b, 0xa15f, 0xa160, 0xa163, 0xa164, 0xa167, 0xa168, 0xa16b,
+ 0xa16c, 0xa16f, 0xa170, 0xa173, 0xa174, 0xa177, 0xa178, 0xa17b,
+ 0xa17c, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb, 0xa1c8, 0xa1c9, 0xa15c,
+ 0xa14d, 0xa14f, 0xa151, 0xa152, 0xa153, 0xa154, 0xa17d, 0xa17e,
+ 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1cc, 0xa1cd, 0xa1ce, 0xa1de,
+ 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2, 0xa24c, 0xa24d, 0xa24e, 0xa149,
+ 0xa1ad, 0xa243, 0xa248, 0xa1ae, 0xa15d, 0xa15e, 0xa1af, 0xa1cf,
+ 0xa141, 0xa1d0, 0xa144, 0xa241, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2,
+ 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146,
+ 0xa1d5, 0xa1d7, 0xa1d6, 0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1,
+ 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9,
+ 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1,
+ 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa242,
+ 0xa1c4, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef,
+ 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7,
+ 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa340,
+ 0xa341, 0xa342, 0xa343, 0xa161, 0xa155, 0xa162, 0xa14e,
+};
+
+static const Summary16 big5_uni2indx_page00[16] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x00ac }, { 4, 0x0083 },
+ { 7, 0x0000 }, { 7, 0x0080 }, { 8, 0x0000 }, { 8, 0x0080 },
+};
+static const Summary16 big5_uni2indx_page02[38] = {
+ /* 0x0200 */
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0e80 }, { 13, 0x0200 }, { 14, 0x0000 }, { 14, 0x0000 },
+ /* 0x0300 */
+ { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
+ { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
+ { 14, 0x0000 }, { 14, 0xfffe }, { 29, 0x03fb }, { 38, 0xfffe },
+ { 53, 0x03fb }, { 62, 0x0000 }, { 62, 0x0000 }, { 62, 0x0000 },
+ /* 0x0400 */
+ { 62, 0x0002 }, { 63, 0x1ff0 }, { 72, 0xfff8 }, { 85, 0xffff },
+ { 101, 0xffff }, { 117, 0x0002 },
+};
+static const Summary16 big5_uni2indx_page20[44] = {
+ /* 0x2000 */
+ { 118, 0x0000 }, { 118, 0x3318 }, { 124, 0x0064 }, { 127, 0x4824 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ /* 0x2100 */
+ { 131, 0x0228 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 },
+ { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x03ff }, { 144, 0x0000 },
+ { 144, 0x0000 }, { 144, 0x03cf }, { 152, 0x0000 }, { 152, 0x0000 },
+ { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 },
+ /* 0x2200 */
+ { 152, 0x0000 }, { 152, 0xc400 }, { 155, 0x4e29 }, { 162, 0x1030 },
+ { 165, 0x0000 }, { 165, 0x0004 }, { 166, 0x00c3 }, { 170, 0x0000 },
+ { 170, 0x0000 }, { 170, 0x0000 }, { 170, 0x0020 }, { 171, 0x8000 },
+};
+static const Summary16 big5_uni2indx_page24[37] = {
+ /* 0x2400 */
+ { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 },
+ { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x03ff }, { 182, 0x3ff0 },
+ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
+ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
+ /* 0x2500 */
+ { 192, 0x1005 }, { 195, 0x1111 }, { 199, 0x1010 }, { 201, 0x1010 },
+ { 203, 0x0000 }, { 203, 0x4001 }, { 205, 0xe402 }, { 210, 0x000f },
+ { 214, 0xfffe }, { 229, 0x0030 }, { 231, 0x0003 }, { 233, 0x300c },
+ { 237, 0xc8c0 }, { 242, 0x0000 }, { 242, 0x003c }, { 246, 0x0000 },
+ /* 0x2600 */
+ { 246, 0x0260 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 },
+ { 249, 0x0007 },
+};
+static const Summary16 big5_uni2indx_page30[62] = {
+ /* 0x3000 */
+ { 252, 0xff2f }, { 265, 0x6037 }, { 272, 0x03fe }, { 281, 0x0000 },
+ { 281, 0xfffe }, { 296, 0xffff }, { 312, 0xffff }, { 328, 0xffff },
+ { 344, 0xffff }, { 360, 0x600f }, { 366, 0xfffe }, { 381, 0xffff },
+ { 397, 0xffff }, { 413, 0xffff }, { 429, 0xffff }, { 445, 0x407f },
+ /* 0x3100 */
+ { 453, 0xffe0 }, { 464, 0xffff }, { 480, 0x03ff }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ /* 0x3200 */
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0008 }, { 491, 0x0000 },
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ /* 0x3300 */
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ { 491, 0xc000 }, { 493, 0x7000 }, { 496, 0x0002 }, { 497, 0x0000 },
+ { 497, 0x4010 }, { 499, 0x0026 },
+};
+static const Summary16 big5_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 502, 0xff8b }, { 514, 0xc373 }, { 523, 0x6840 }, { 527, 0x1b0f },
+ { 535, 0xe9ac }, { 544, 0xf34c }, { 553, 0x0200 }, { 554, 0xc008 },
+ { 557, 0x795c }, { 566, 0xca3e }, { 575, 0x7976 }, { 585, 0x0648 },
+ { 589, 0x2fdf }, { 601, 0xf7f0 }, { 612, 0x033a }, { 618, 0xa8ff },
+ /* 0x4f00 */
+ { 629, 0xef37 }, { 641, 0x233f }, { 650, 0xb004 }, { 654, 0xfd59 },
+ { 665, 0xf3ca }, { 675, 0xffff }, { 691, 0xde9f }, { 703, 0xfff9 },
+ { 717, 0xabff }, { 730, 0x7df7 }, { 743, 0xc000 }, { 745, 0x8eec },
+ { 754, 0xeebf }, { 767, 0xffdb }, { 781, 0xd003 }, { 786, 0x45fa },
+ /* 0x5000 */
+ { 795, 0xfae1 }, { 805, 0xdffe }, { 819, 0xbfef }, { 833, 0x10ab },
+ { 839, 0xffeb }, { 853, 0xfcaa }, { 863, 0xef3f }, { 876, 0x24fd },
+ { 885, 0x78ad }, { 894, 0x7f76 }, { 906, 0xf00c }, { 912, 0xedff },
+ { 926, 0xcff6 }, { 938, 0x2cfa }, { 947, 0xf7f9 }, { 960, 0xeb6b },
+ /* 0x5100 */
+ { 971, 0x1ffd }, { 983, 0x95bf }, { 994, 0x6677 }, { 1004, 0xbfbf },
+ { 1018, 0x3bfb }, { 1030, 0xfeb4 }, { 1041, 0x7bae }, { 1052, 0x11e2 },
+ { 1058, 0xa681 }, { 1064, 0x41be }, { 1072, 0x1435 }, { 1078, 0x72c3 },
+ { 1086, 0x7d70 }, { 1095, 0x7191 }, { 1102, 0x0003 }, { 1104, 0x276b },
+ /* 0x5200 */
+ { 1113, 0x57cb }, { 1123, 0x70cf }, { 1132, 0x4732 }, { 1139, 0x0def },
+ { 1149, 0x7eda }, { 1160, 0xfc74 }, { 1170, 0xfe06 }, { 1179, 0xbdb4 },
+ { 1189, 0x3f9f }, { 1201, 0x8bca }, { 1209, 0x7e49 }, { 1218, 0x5800 },
+ { 1221, 0x228f }, { 1228, 0xebec }, { 1239, 0x8a5c }, { 1246, 0xddbb },
+ /* 0x5300 */
+ { 1258, 0xef60 }, { 1267, 0xb6e7 }, { 1278, 0xa40f }, { 1285, 0xf293 },
+ { 1294, 0x37bb }, { 1305, 0x549e }, { 1313, 0xd04b }, { 1320, 0x9baf },
+ { 1331, 0xc414 }, { 1336, 0xf7d4 }, { 1347, 0x30b0 }, { 1352, 0x0a14 },
+ { 1356, 0x2f08 }, { 1362, 0x88d0 }, { 1367, 0xff7e }, { 1381, 0x192f },
+ /* 0x5400 */
+ { 1389, 0xffda }, { 1402, 0xfb07 }, { 1412, 0x7ff1 }, { 1424, 0x7beb },
+ { 1436, 0xc5ef }, { 1447, 0x0010 }, { 1448, 0x99ff }, { 1460, 0xfdff },
+ { 1475, 0x79d7 }, { 1486, 0x0567 }, { 1493, 0xffe7 }, { 1507, 0xfdcb },
+ { 1519, 0xc3ff }, { 1531, 0x4040 }, { 1533, 0x6ff7 }, { 1546, 0xbd8e },
+ /* 0x5500 */
+ { 1556, 0xdffa }, { 1569, 0x0497 }, { 1575, 0xf4c0 }, { 1582, 0x5bff },
+ { 1595, 0xed7b }, { 1607, 0xd0e7 }, { 1616, 0x047e }, { 1623, 0xf8e0 },
+ { 1631, 0xff9f }, { 1645, 0xb73e }, { 1656, 0x7dfe }, { 1669, 0x882e },
+ { 1675, 0xfffd }, { 1690, 0xbe7f }, { 1703, 0x83fe }, { 1713, 0xf6c4 },
+ /* 0x5600 */
+ { 1722, 0xf357 }, { 1733, 0xb8fd }, { 1744, 0xd680 }, { 1750, 0xef7d },
+ { 1763, 0x5767 }, { 1773, 0x4788 }, { 1779, 0xff7d }, { 1793, 0xc3df },
+ { 1804, 0xf0ff }, { 1816, 0x37a9 }, { 1825, 0x7de0 }, { 1834, 0x70fc },
+ { 1843, 0x3f6f }, { 1855, 0xec9a }, { 1864, 0x4cb3 }, { 1872, 0x8681 },
+ /* 0x5700 */
+ { 1877, 0x3f9e }, { 1888, 0xdd5c }, { 1898, 0xf70d }, { 1908, 0x4819 },
+ { 1913, 0xfea3 }, { 1924, 0x0007 }, { 1927, 0xaf56 }, { 1937, 0x38ff },
+ { 1948, 0x980d }, { 1954, 0xefb8 }, { 1965, 0x403d }, { 1971, 0xb760 },
+ { 1979, 0xd8ce }, { 1988, 0x9035 }, { 1994, 0x72bf }, { 2005, 0x3fff },
+ /* 0x5800 */
+ { 2019, 0x7ff7 }, { 2033, 0x7a11 }, { 2040, 0xf7bb }, { 2053, 0xabff },
+ { 2066, 0xff00 }, { 2074, 0x6fbe }, { 2086, 0xa93c }, { 2094, 0xfe72 },
+ { 2105, 0xcfef }, { 2118, 0xf11b }, { 2127, 0xdb6b }, { 2138, 0xf40a },
+ { 2145, 0xc3e6 }, { 2154, 0xef7e }, { 2167, 0x9b9c }, { 2176, 0xf610 },
+ /* 0x5900 */
+ { 2183, 0xf048 }, { 2189, 0x16f4 }, { 2197, 0xfeb5 }, { 2209, 0x5182 },
+ { 2214, 0xc7b1 }, { 2223, 0x15bb }, { 2232, 0x6e87 }, { 2241, 0xfbdf },
+ { 2255, 0xe43f }, { 2265, 0x63cd }, { 2274, 0xc1ff }, { 2285, 0x7e7e },
+ { 2297, 0xfdeb }, { 2310, 0x7d5f }, { 2322, 0x777b }, { 2334, 0xfcfe },
+ /* 0x5a00 */
+ { 2347, 0x960b }, { 2354, 0xdbea }, { 2365, 0x6229 }, { 2371, 0x53e8 },
+ { 2379, 0x37df }, { 2391, 0xfdef }, { 2405, 0x36f5 }, { 2415, 0xbd81 },
+ { 2423, 0xdc18 }, { 2430, 0xfcbd }, { 2442, 0xd2e4 }, { 2450, 0xffff },
+ { 2466, 0x3fd7 }, { 2478, 0xffe0 }, { 2489, 0x7f6f }, { 2502, 0xabf8 },
+ /* 0x5b00 */
+ { 2512, 0x9bae }, { 2522, 0x6ed9 }, { 2532, 0xf5fb }, { 2545, 0xf115 },
+ { 2553, 0x79a9 }, { 2562, 0xbdfb }, { 2575, 0x5a3c }, { 2583, 0xadaf },
+ { 2594, 0xdbba }, { 2605, 0x1fac }, { 2614, 0x71fc }, { 2624, 0x8379 },
+ { 2632, 0x7cf7 }, { 2644, 0xc35f }, { 2654, 0xdfff }, { 2669, 0x0567 },
+ /* 0x5c00 */
+ { 2676, 0xff9a }, { 2688, 0x8467 }, { 2695, 0x1534 }, { 2701, 0xdf8b },
+ { 2712, 0xf9f3 }, { 2724, 0x3373 }, { 2733, 0xf7bd }, { 2746, 0x5e1a },
+ { 2754, 0xbf40 }, { 2762, 0xa03f }, { 2770, 0xffff }, { 2786, 0x01eb },
+ { 2793, 0xdfc0 }, { 2802, 0xcfdd }, { 2814, 0x7500 }, { 2819, 0xabd3 },
+ /* 0x5d00 */
+ { 2829, 0xf8c3 }, { 2838, 0xeed6 }, { 2849, 0x43fd }, { 2859, 0xb7ff },
+ { 2873, 0x5eaf }, { 2884, 0x4227 }, { 2890, 0x9bac }, { 2899, 0xf686 },
+ { 2908, 0x27d7 }, { 2918, 0xf6bc }, { 2929, 0xf787 }, { 2940, 0x35b7 },
+ { 2950, 0xaacd }, { 2959, 0xe176 }, { 2968, 0x49e7 }, { 2977, 0xe29f },
+ /* 0x5e00 */
+ { 2987, 0x545c }, { 2994, 0xaff2 }, { 3005, 0x2b3f }, { 3015, 0x61d8 },
+ { 3022, 0xfc3b }, { 3033, 0xbbb8 }, { 3043, 0xffcf }, { 3057, 0x7b7d },
+ { 3069, 0xbf95 }, { 3080, 0x1ce0 }, { 3086, 0x7dfd }, { 3099, 0x43ff },
+ { 3110, 0x5ff6 }, { 3122, 0xfffe }, { 3137, 0xd3ef }, { 3149, 0xc4ce },
+ /* 0x5f00 */
+ { 3157, 0x8db6 }, { 3166, 0xadbc }, { 3176, 0x63dc }, { 3185, 0x11eb },
+ { 3193, 0xdf59 }, { 3204, 0x23d0 }, { 3210, 0xbeb4 }, { 3220, 0xf3db },
+ { 3232, 0x1fe7 }, { 3243, 0xdbc7 }, { 3254, 0xff63 }, { 3266, 0xfae4 },
+ { 3276, 0xb22b }, { 3284, 0x63f7 }, { 3295, 0xed3b }, { 3306, 0xadba },
+ /* 0x6000 */
+ { 3316, 0xfe01 }, { 3324, 0x7eff }, { 3338, 0xfff7 }, { 3353, 0x02bc },
+ { 3359, 0x32ff }, { 3370, 0xef39 }, { 3381, 0xfffc }, { 3395, 0x8005 },
+ { 3398, 0x77fb }, { 3411, 0xbcf5 }, { 3422, 0x010d }, { 3426, 0xfff7 },
+ { 3441, 0xfffb }, { 3456, 0xbf3a }, { 3467, 0x0057 }, { 3472, 0xdfff },
+ /* 0x6100 */
+ { 3487, 0xef7b }, { 3500, 0xbd7d }, { 3512, 0xdb88 }, { 3520, 0xc8d4 },
+ { 3527, 0xfff3 }, { 3541, 0xed7c }, { 3552, 0x5dee }, { 3563, 0x56ff },
+ { 3575, 0x7e0d }, { 3584, 0xac5f }, { 3594, 0xff96 }, { 3606, 0xd57f },
+ { 3618, 0x3fee }, { 3630, 0xc140 }, { 3634, 0x6ff9 }, { 3646, 0xffe7 },
+ /* 0x6200 */
+ { 3660, 0x779b }, { 3671, 0x8e77 }, { 3681, 0x6ebf }, { 3693, 0xe45d },
+ { 3702, 0x6fcf }, { 3714, 0x5f1f }, { 3725, 0xe07f }, { 3735, 0xfedf },
+ { 3749, 0xd7db }, { 3761, 0x01fe }, { 3769, 0xff00 }, { 3777, 0xfb7b },
+ { 3790, 0xffd4 }, { 3802, 0x1fdf }, { 3814, 0xf800 }, { 3819, 0xffff },
+ /* 0x6300 */
+ { 3835, 0xfb8f }, { 3847, 0x007b }, { 3853, 0xbf00 }, { 3860, 0x7f5c },
+ { 3871, 0xffff }, { 3887, 0x07f3 }, { 3896, 0xeba0 }, { 3904, 0x3de7 },
+ { 3915, 0xf7bf }, { 3929, 0xfbd7 }, { 3942, 0xffbf }, { 3957, 0x6003 },
+ { 3961, 0xfffd }, { 3976, 0xbfed }, { 3989, 0xefbb }, { 4002, 0x027f },
+ /* 0x6400 */
+ { 4010, 0xfe40 }, { 4018, 0xddfd }, { 4031, 0xfdff }, { 4046, 0xe2f9 },
+ { 4056, 0x680b }, { 4062, 0xfb1f }, { 4074, 0xfbe3 }, { 4086, 0xaffd },
+ { 4099, 0x9fa4 }, { 4108, 0xf7ed }, { 4121, 0x7a7d }, { 4132, 0xf80f },
+ { 4141, 0xeebe }, { 4153, 0x0fd5 }, { 4162, 0xbb5d }, { 4173, 0xfd9f },
+ /* 0x6500 */
+ { 4186, 0xf2db }, { 4197, 0x3bf9 }, { 4208, 0xfe7f }, { 4222, 0xebcc },
+ { 4232, 0x876a }, { 4240, 0x73fa }, { 4251, 0x95fc }, { 4261, 0x9ffc },
+ { 4273, 0x109f }, { 4280, 0xfaf7 }, { 4293, 0xddb7 }, { 4305, 0xbbcd },
+ { 4316, 0xf87e }, { 4327, 0xeccd }, { 4337, 0xf366 }, { 4347, 0x3c3f },
+ /* 0x6600 */
+ { 4357, 0xfffd }, { 4372, 0xb03f }, { 4381, 0xe9f7 }, { 4393, 0x067e },
+ { 4401, 0x96ae }, { 4410, 0xfe06 }, { 4419, 0xd576 }, { 4429, 0x5fd7 },
+ { 4441, 0x3fd1 }, { 4451, 0xa3f3 }, { 4461, 0xcf07 }, { 4470, 0x6fb7 },
+ { 4482, 0x9fd1 }, { 4492, 0x7f44 }, { 4501, 0x7b59 }, { 4511, 0xd3dd },
+ /* 0x6700 */
+ { 4522, 0xaf3b }, { 4533, 0xa9bd }, { 4543, 0x7dcf }, { 4555, 0xff3a },
+ { 4567, 0xfbe0 }, { 4577, 0xf6eb }, { 4589, 0xb401 }, { 4594, 0xffff },
+ { 4610, 0x7afa }, { 4621, 0xb7bf }, { 4634, 0xc000 }, { 4636, 0x0ffd },
+ { 4647, 0xff7f }, { 4662, 0xff1f }, { 4675, 0xfefc }, { 4688, 0x95ff },
+ /* 0x6800 */
+ { 4700, 0x0000 }, { 4700, 0xb5dc }, { 4710, 0xef63 }, { 4721, 0x3f3e },
+ { 4732, 0xfb7f }, { 4746, 0x001b }, { 4750, 0xe800 }, { 4754, 0xfbf6 },
+ { 4767, 0x9eef }, { 4779, 0xb8df }, { 4790, 0xff9f }, { 4804, 0x003f },
+ { 4810, 0x7bd0 }, { 4819, 0xf5ff }, { 4833, 0xdfdb }, { 4846, 0x3fff },
+ /* 0x6900 */
+ { 4860, 0xfdf0 }, { 4871, 0x00bf }, { 4878, 0x8420 }, { 4881, 0xbbbd },
+ { 4893, 0xdf37 }, { 4905, 0xffde }, { 4919, 0xff6d }, { 4932, 0x0ff3 },
+ { 4942, 0x604c }, { 4947, 0x5efb }, { 4959, 0xfffb }, { 4974, 0xfafb },
+ { 4987, 0xfe5e }, { 4999, 0x0219 }, { 5003, 0x79f4 }, { 5013, 0xf9de },
+ /* 0x6a00 */
+ { 5025, 0xa7f7 }, { 5037, 0xebfa }, { 5049, 0x01eb }, { 5056, 0xff34 },
+ { 5067, 0xebd3 }, { 5078, 0xef73 }, { 5090, 0xafd7 }, { 5102, 0xc040 },
+ { 5105, 0x72bb }, { 5115, 0xdcff }, { 5128, 0xf17f }, { 5140, 0x2fd8 },
+ { 5149, 0xb8ec }, { 5158, 0xfe0b }, { 5168, 0xdda3 }, { 5178, 0x1f0b },
+ /* 0x6b00 */
+ { 5186, 0x8f1d }, { 5195, 0x47cf }, { 5205, 0xb12b }, { 5213, 0xffde },
+ { 5227, 0x7fee }, { 5240, 0xda73 }, { 5250, 0x24ff }, { 5260, 0xcbc4 },
+ { 5268, 0xf75d }, { 5280, 0xcbf2 }, { 5290, 0xecfd }, { 5302, 0xb4ed },
+ { 5312, 0xbff9 }, { 5325, 0x4ddd }, { 5335, 0x99dd }, { 5345, 0xfb8d },
+ /* 0x6c00 */
+ { 5356, 0xbb7f }, { 5369, 0xaf7b }, { 5381, 0xddfb }, { 5394, 0xc959 },
+ { 5402, 0xfc4f }, { 5413, 0xfab5 }, { 5424, 0xafe3 }, { 5435, 0x6d5f },
+ { 5446, 0xffff }, { 5462, 0x3f7d }, { 5474, 0x7800 }, { 5478, 0xffdb },
+ { 5492, 0xb6ff }, { 5505, 0x7eff }, { 5519, 0xfbaf }, { 5532, 0x022f },
+ /* 0x6d00 */
+ { 5538, 0xff9b }, { 5551, 0xefc7 }, { 5563, 0xffa5 }, { 5575, 0xffff },
+ { 5591, 0x0007 }, { 5594, 0xc700 }, { 5599, 0xf7ff }, { 5614, 0xfff1 },
+ { 5627, 0x7ffd }, { 5641, 0x01bf }, { 5649, 0xdc00 }, { 5654, 0xfdbc },
+ { 5666, 0xbff5 }, { 5679, 0xffff }, { 5695, 0xff7f }, { 5710, 0x3eff },
+ /* 0x6e00 */
+ { 5723, 0x0029 }, { 5726, 0xbe00 }, { 5732, 0xf9ff }, { 5746, 0xff7f },
+ { 5761, 0x6efb }, { 5773, 0xfd7e }, { 5786, 0xcbff }, { 5799, 0x039e },
+ { 5806, 0xe300 }, { 5811, 0xfbdd }, { 5824, 0xccff }, { 5836, 0xf6df },
+ { 5849, 0xffff }, { 5865, 0x117f }, { 5874, 0xf800 }, { 5879, 0xfbf6 },
+ /* 0x6f00 */
+ { 5892, 0xe7ef }, { 5905, 0xd73c }, { 5915, 0xfeef }, { 5929, 0xdfef },
+ { 5943, 0xc00b }, { 5948, 0xedbf }, { 5961, 0xfedf }, { 5975, 0xfdcd },
+ { 5987, 0x7bf5 }, { 5999, 0x40fd }, { 6007, 0xffff }, { 6023, 0xb75f },
+ { 6035, 0xffdf }, { 6050, 0xf930 }, { 6058, 0xfbdf }, { 6072, 0xdc97 },
+ /* 0x7000 */
+ { 6082, 0xfef3 }, { 6095, 0xbff2 }, { 6107, 0x8fdf }, { 6119, 0xdfbf },
+ { 6133, 0x177f }, { 6144, 0xede6 }, { 6155, 0x0f7f }, { 6166, 0x3553 },
+ { 6174, 0x447c }, { 6181, 0x877e }, { 6191, 0xfa12 }, { 6199, 0x45bb },
+ { 6208, 0xede0 }, { 6217, 0x779e }, { 6228, 0x8017 }, { 6233, 0xbfd9 },
+ /* 0x7100 */
+ { 6245, 0x7e55 }, { 6255, 0xde89 }, { 6264, 0xc16f }, { 6273, 0x0447 },
+ { 6278, 0x7ade }, { 6289, 0xf75d }, { 6301, 0x57ff }, { 6314, 0x2905 },
+ { 6319, 0x86f7 }, { 6329, 0xfe95 }, { 6340, 0x97b3 }, { 6350, 0xf32f },
+ { 6361, 0xcfff }, { 6375, 0x9f75 }, { 6386, 0x71f7 }, { 6397, 0xfb17 },
+ /* 0x7200 */
+ { 6408, 0x34ee }, { 6417, 0xee19 }, { 6426, 0x37cc }, { 6435, 0xef61 },
+ { 6445, 0x9fd6 }, { 6456, 0xef4c }, { 6466, 0xd68f }, { 6476, 0xfbdd },
+ { 6489, 0x7b73 }, { 6500, 0x6def }, { 6512, 0xd7fe }, { 6525, 0xa431 },
+ { 6531, 0x5e7f }, { 6543, 0x97d7 }, { 6554, 0x0f5b }, { 6563, 0xffd8 },
+ /* 0x7300 */
+ { 6575, 0x9d83 }, { 6583, 0x7bce }, { 6594, 0x22ec }, { 6601, 0xdcff },
+ { 6614, 0x763d }, { 6624, 0xef87 }, { 6635, 0xdfe7 }, { 6648, 0xfded },
+ { 6661, 0x4fff }, { 6674, 0xa0fc }, { 6682, 0x3b77 }, { 6693, 0xdbfc },
+ { 6705, 0x3ded }, { 6716, 0x7fdc }, { 6728, 0x6fa9 }, { 6738, 0xf570 },
+ /* 0x7400 */
+ { 6747, 0x3ffb }, { 6760, 0x2c40 }, { 6764, 0xff7f }, { 6779, 0x847f },
+ { 6788, 0xec57 }, { 6798, 0xdeb7 }, { 6810, 0xe69c }, { 6819, 0xf22f },
+ { 6829, 0x0feb }, { 6839, 0xd5b5 }, { 6849, 0xafeb }, { 6861, 0xede7 },
+ { 6873, 0x8c2f }, { 6881, 0xfff0 }, { 6893, 0x537f }, { 6904, 0xe8f0 },
+ /* 0x7500 */
+ { 6912, 0xb99d }, { 6922, 0xb5ff }, { 6935, 0xff66 }, { 6947, 0xe78f },
+ { 6958, 0xd981 }, { 6965, 0xbe10 }, { 6972, 0x9c7c }, { 6981, 0xe3c1 },
+ { 6989, 0x9cd1 }, { 6997, 0x2733 }, { 7005, 0x0cbc }, { 7012, 0xff6d },
+ { 7025, 0xfcb7 }, { 7037, 0xefb7 }, { 7050, 0xa0df }, { 7059, 0xffff },
+ /* 0x7600 */
+ { 7075, 0xbf0b }, { 7085, 0xfe7b }, { 7098, 0xa3ff }, { 7110, 0x353f },
+ { 7120, 0x13cc }, { 7127, 0x97cd }, { 7137, 0x7637 }, { 7147, 0xfb27 },
+ { 7158, 0xcfd6 }, { 7169, 0x7e6c }, { 7179, 0xec50 }, { 7186, 0xed31 },
+ { 7195, 0x677c }, { 7205, 0xfc1c }, { 7214, 0xf6fa }, { 7226, 0x5fbf },
+ /* 0x7700 */
+ { 7239, 0x0fba }, { 7248, 0xae2f }, { 7258, 0xa3ad }, { 7267, 0x7ffe },
+ { 7281, 0xfcf0 }, { 7291, 0xde74 }, { 7301, 0xffef }, { 7316, 0xf200 },
+ { 7321, 0xfbbf }, { 7335, 0xfea2 }, { 7345, 0x3daf }, { 7356, 0xbcff },
+ { 7369, 0xf694 }, { 7378, 0x5fb9 }, { 7389, 0xf3ad }, { 7400, 0x3f8f },
+ /* 0x7800 */
+ { 7411, 0xf26c }, { 7420, 0xa01f }, { 7427, 0xffef }, { 7442, 0x01bf },
+ { 7450, 0x7728 }, { 7458, 0x7005 }, { 7463, 0xff35 }, { 7475, 0xda03 },
+ { 7482, 0xd2f9 }, { 7492, 0xc7fa }, { 7503, 0x3fbf }, { 7516, 0x5c1d },
+ { 7524, 0xff3a }, { 7536, 0xec33 }, { 7545, 0xb7af }, { 7557, 0xfe9c },
+ /* 0x7900 */
+ { 7568, 0x5236 }, { 7575, 0x7a9f }, { 7586, 0xbffa }, { 7599, 0xe722 },
+ { 7607, 0x9ff7 }, { 7620, 0xfcff }, { 7634, 0x2fbb }, { 7645, 0xb61d },
+ { 7654, 0xed06 }, { 7662, 0x1dfd }, { 7673, 0x7dd7 }, { 7685, 0xefdf },
+ { 7699, 0xeb23 }, { 7708, 0xf166 }, { 7717, 0x7ed9 }, { 7728, 0x0dc0 },
+ /* 0x7a00 */
+ { 7733, 0x3d3d }, { 7743, 0xdfbf }, { 7757, 0xc945 }, { 7764, 0xba83 },
+ { 7772, 0x7dd1 }, { 7782, 0x9dd0 }, { 7790, 0x7b87 }, { 7800, 0xcf73 },
+ { 7811, 0x9ff3 }, { 7823, 0xc3f5 }, { 7833, 0xdf0d }, { 7843, 0xc5fe },
+ { 7854, 0x0cb3 }, { 7861, 0x8302 }, { 7865, 0xe879 }, { 7874, 0xaec0 },
+ /* 0x7b00 */
+ { 7881, 0xc773 }, { 7891, 0x6f0f }, { 7901, 0xfd7d }, { 7914, 0x093f },
+ { 7922, 0xfff1 }, { 7935, 0x0157 }, { 7941, 0x62fb }, { 7951, 0x01ff },
+ { 7960, 0xfdb4 }, { 7971, 0x3bf3 }, { 7982, 0xb013 }, { 7988, 0x43b2 },
+ { 7995, 0x5ed3 }, { 8005, 0xff30 }, { 8015, 0x0fff }, { 8027, 0xeb9f },
+ /* 0x7c00 */
+ { 8039, 0xfeef }, { 8053, 0xf203 }, { 8060, 0x3fef }, { 8073, 0xfb89 },
+ { 8083, 0x37a9 }, { 8092, 0x9e99 }, { 8101, 0xdef9 }, { 8113, 0xa72c },
+ { 8121, 0x3733 }, { 8130, 0xc1f6 }, { 8139, 0x812e }, { 8145, 0xfe3e },
+ { 8157, 0x5d20 }, { 8163, 0xf2f7 }, { 8175, 0xd585 }, { 8183, 0x69d7 },
+ /* 0x7d00 */
+ { 8193, 0xffff }, { 8209, 0xffff }, { 8225, 0xdb07 }, { 8234, 0xff6f },
+ { 8248, 0xc4ff }, { 8259, 0xd97f }, { 8271, 0xefce }, { 8283, 0xbe0f },
+ { 8293, 0xf17b }, { 8304, 0xf05e }, { 8313, 0xf6cf }, { 8325, 0xffb7 },
+ { 8339, 0x5ef7 }, { 8351, 0xef84 }, { 8360, 0xd7cb }, { 8371, 0x0edf },
+ /* 0x7e00 */
+ { 8381, 0xff08 }, { 8390, 0xfcff }, { 8404, 0xee3f }, { 8416, 0xffff },
+ { 8432, 0x13ff }, { 8443, 0xd7ff }, { 8457, 0xaf0f }, { 8467, 0x7ffd },
+ { 8481, 0xbdc7 }, { 8492, 0x1ffa }, { 8503, 0x0000 }, { 8503, 0x0000 },
+ { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 },
+ /* 0x7f00 */
+ { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0xe740 },
+ { 8510, 0xbd38 }, { 8519, 0xf933 }, { 8529, 0x7feb }, { 8542, 0xfeed },
+ { 8555, 0x7fe8 }, { 8566, 0x7c76 }, { 8576, 0xb3f7 }, { 8588, 0xffef },
+ { 8603, 0xfeaf }, { 8616, 0xd8b7 }, { 8626, 0xff6f }, { 8640, 0xfbbf },
+ /* 0x8000 */
+ { 8654, 0xf8fb }, { 8666, 0xdbf7 }, { 8679, 0x1752 }, { 8686, 0xe2f9 },
+ { 8696, 0x85c8 }, { 8702, 0x7547 }, { 8711, 0x9090 }, { 8715, 0xe3ef },
+ { 8727, 0x9ef4 }, { 8737, 0x3f6d }, { 8748, 0xee2e }, { 8758, 0x0536 },
+ { 8764, 0xf7bc }, { 8776, 0x7ff3 }, { 8789, 0xa07b }, { 8797, 0x7f3f },
+ /* 0x8100 */
+ { 8810, 0x0567 }, { 8817, 0xeb60 }, { 8825, 0xbabe }, { 8836, 0x6601 },
+ { 8841, 0xfcd8 }, { 8851, 0x583f }, { 8860, 0xcaf7 }, { 8871, 0x87df },
+ { 8882, 0xbfcd }, { 8894, 0xffa0 }, { 8904, 0x5bcd }, { 8914, 0xfebf },
+ { 8928, 0xb6fd }, { 8940, 0xefa7 }, { 8952, 0x77ef }, { 8965, 0xdf9c },
+ /* 0x8200 */
+ { 8976, 0x3fb7 }, { 8988, 0xf877 }, { 8999, 0x9d27 }, { 9008, 0xb7fc },
+ { 9020, 0xcab5 }, { 9029, 0xdfef }, { 9043, 0xfb5a }, { 9054, 0xf1b6 },
+ { 9064, 0xec39 }, { 9073, 0xef1f }, { 9085, 0xfbbf }, { 9099, 0x7ffb },
+ { 9113, 0x000d }, { 9116, 0xdafe }, { 9128, 0xbdfb }, { 9141, 0x4e7f },
+ /* 0x8300 */
+ { 9152, 0x33ff }, { 9164, 0x5ac0 }, { 9170, 0xbff5 }, { 9183, 0x9ffe },
+ { 9196, 0xffbf }, { 9211, 0x005f }, { 9217, 0x0000 }, { 9217, 0xfdf8 },
+ { 9229, 0xffca }, { 9241, 0x6ffd }, { 9254, 0xcffd }, { 9267, 0xa001 },
+ { 9270, 0xdfff }, { 9285, 0xfbf2 }, { 9297, 0xdfbf }, { 9311, 0xff7f },
+ /* 0x8400 */
+ { 9326, 0xfeda }, { 9338, 0x080f }, { 9343, 0xba08 }, { 9349, 0xbfff },
+ { 9364, 0x7afd }, { 9376, 0xeed7 }, { 9388, 0xfbeb }, { 9401, 0x67f9 },
+ { 9412, 0xe044 }, { 9417, 0xff93 }, { 9429, 0xdf97 }, { 9441, 0x9f57 },
+ { 9452, 0xfef7 }, { 9466, 0x08df }, { 9474, 0xdf80 }, { 9482, 0xfedf },
+ /* 0x8500 */
+ { 9496, 0xffc5 }, { 9508, 0xf7fe }, { 9522, 0xfffb }, { 9537, 0x6803 },
+ { 9542, 0x67fb }, { 9554, 0x6bfa }, { 9565, 0x7fff }, { 9580, 0x5fe2 },
+ { 9590, 0xffff }, { 9606, 0xff73 }, { 9619, 0x87df }, { 9630, 0xe7fb },
+ { 9643, 0xebfd }, { 9656, 0xf7a7 }, { 9668, 0xbf7e }, { 9681, 0xefc7 },
+ /* 0x8600 */
+ { 9693, 0x1ef3 }, { 9703, 0xdf82 }, { 9712, 0x76ff }, { 9725, 0xdf7e },
+ { 9738, 0x79c9 }, { 9747, 0xda7d }, { 9758, 0xefbe }, { 9771, 0x1e9b },
+ { 9780, 0x7ce0 }, { 9788, 0x77fb }, { 9801, 0x87be }, { 9811, 0xfffb },
+ { 9826, 0x1bff }, { 9838, 0xffdb }, { 9852, 0x3f5c }, { 9862, 0x4fe0 },
+ /* 0x8700 */
+ { 9870, 0x7fff }, { 9885, 0x5f0e }, { 9894, 0x77ff }, { 9908, 0xddbf },
+ { 9921, 0xf04f }, { 9930, 0xffff }, { 9946, 0xffff }, { 9962, 0x0ff8 },
+ { 9971, 0xa3be }, { 9981, 0xfddf }, { 9995, 0xfc1c }, { 10004, 0xfffd },
+ { 10019, 0x1f7d }, { 10030, 0xfb9e }, { 10042, 0xbdff }, { 10056, 0xdedc },
+ /* 0x8800 */
+ { 10067, 0x3f6f }, { 10079, 0xbafb }, { 10091, 0xdf7f }, { 10105, 0xfbef },
+ { 10119, 0x7d1b }, { 10129, 0x2eec }, { 10138, 0xaf8e }, { 10148, 0xf2f7 },
+ { 10160, 0x7b0f }, { 10170, 0xcfee }, { 10182, 0x1d96 }, { 10190, 0x77c6 },
+ { 10200, 0x7e07 }, { 10209, 0xfff5 }, { 10223, 0xd982 }, { 10230, 0x7fdf },
+ /* 0x8900 */
+ { 10244, 0x5ee6 }, { 10254, 0xc7ff }, { 10267, 0xfeee }, { 10280, 0x79ef },
+ { 10292, 0x9a56 }, { 10300, 0xffcf }, { 10314, 0xfe5f }, { 10327, 0xde5e },
+ { 10338, 0x896e }, { 10346, 0xf9e8 }, { 10356, 0xf45e }, { 10366, 0xe6c4 },
+ { 10374, 0x0001 }, { 10375, 0xbe7c }, { 10386, 0x3b7f }, { 10398, 0xdddf },
+ /* 0x8a00 */
+ { 10411, 0xd59d }, { 10421, 0xe9ef }, { 10433, 0x34ac }, { 10440, 0xde53 },
+ { 10450, 0xf573 }, { 10461, 0x4bf7 }, { 10472, 0x7b4f }, { 10483, 0x9eff },
+ { 10496, 0xb8fe }, { 10507, 0x476e }, { 10516, 0x0dfb }, { 10526, 0xff45 },
+ { 10537, 0xabfd }, { 10549, 0xfbfe }, { 10563, 0xe9d7 }, { 10574, 0xddff },
+ /* 0x8b00 */
+ { 10588, 0xedf7 }, { 10601, 0x7fff }, { 10616, 0xddfd }, { 10629, 0x7eeb },
+ { 10641, 0xcfe7 }, { 10653, 0xb7ff }, { 10667, 0xbde9 }, { 10678, 0xef91 },
+ { 10688, 0x5d75 }, { 10698, 0xd77c }, { 10709, 0x0000 }, { 10709, 0x0000 },
+ { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 },
+ /* 0x8c00 */
+ { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0xfa80 },
+ { 10716, 0xffee }, { 10730, 0xb4f1 }, { 10739, 0xbf76 }, { 10751, 0x2fef },
+ { 10763, 0xb677 }, { 10774, 0x77bf }, { 10787, 0x9fbf }, { 10800, 0xfffd },
+ { 10815, 0x95bf }, { 10826, 0xf6ae }, { 10837, 0x75ff }, { 10850, 0x7f3b },
+ /* 0x8d00 */
+ { 10862, 0xa7f5 }, { 10873, 0x0af9 }, { 10881, 0x0000 }, { 10881, 0x0000 },
+ { 10881, 0x0000 }, { 10881, 0x0000 }, { 10881, 0xfbd0 }, { 10891, 0x2bdd },
+ { 10901, 0xf633 }, { 10911, 0x9a7f }, { 10922, 0xfdab }, { 10934, 0xd6fc },
+ { 10945, 0xf9e6 }, { 10956, 0xbfeb }, { 10969, 0xdfdf }, { 10983, 0xf41f },
+ /* 0x8e00 */
+ { 10993, 0xa6fd }, { 11004, 0xffff }, { 11020, 0x4aff }, { 11031, 0xf37b },
+ { 11043, 0x7fb7 }, { 11056, 0xfef9 }, { 11069, 0xb6ff }, { 11082, 0x1d5c },
+ { 11090, 0x7ff6 }, { 11103, 0xe5ff }, { 11116, 0x1f7b }, { 11127, 0x2404 },
+ { 11130, 0xbe05 }, { 11138, 0xf99e }, { 11149, 0xdbe3 }, { 11160, 0xdff2 },
+ /* 0x8f00 */
+ { 11172, 0x6fef }, { 11185, 0xfdff }, { 11200, 0xd679 }, { 11210, 0xcbfc },
+ { 11221, 0xebfd }, { 11234, 0xefff }, { 11249, 0x001f }, { 11254, 0x0000 },
+ { 11254, 0x0000 }, { 11254, 0x9800 }, { 11257, 0xe148 }, { 11263, 0x8017 },
+ { 11268, 0x6a74 }, { 11276, 0x00fe }, { 11283, 0x6d7f }, { 11295, 0xfdf1 },
+ /* 0x9000 */
+ { 11307, 0xb87f }, { 11318, 0xfef3 }, { 11331, 0xe01f }, { 11339, 0xf176 },
+ { 11349, 0xee96 }, { 11359, 0x7b3f }, { 11371, 0xeb8d }, { 11381, 0xfffd },
+ { 11396, 0xadff }, { 11409, 0xcbb3 }, { 11419, 0x84ef }, { 11428, 0xe17f },
+ { 11439, 0x4daa }, { 11447, 0xbff0 }, { 11458, 0xbf3f }, { 11471, 0xfe3f },
+ /* 0x9100 */
+ { 11484, 0xebff }, { 11498, 0xffd7 }, { 11512, 0xffdf }, { 11527, 0xcf7f },
+ { 11540, 0xfffb }, { 11555, 0x85ed }, { 11564, 0xd73f }, { 11576, 0x07bc },
+ { 11584, 0xaeff }, { 11597, 0xfe0f }, { 11608, 0xfdaf }, { 11621, 0x76bf },
+ { 11633, 0xfaef }, { 11646, 0x37bb }, { 11657, 0x7fdc }, { 11669, 0xa3ba },
+ /* 0x9200 */
+ { 11678, 0xb6ff }, { 11691, 0x56f7 }, { 11702, 0x60f8 }, { 11709, 0xe7df },
+ { 11722, 0xff61 }, { 11733, 0x4cdf }, { 11743, 0xb0fb }, { 11753, 0xff45 },
+ { 11764, 0x7ded }, { 11776, 0x3ffa }, { 11788, 0x1fff }, { 11801, 0x18fc },
+ { 11809, 0xffff }, { 11825, 0xe3af }, { 11836, 0xc7d3 }, { 11846, 0xdf83 },
+ /* 0x9300 */
+ { 11856, 0xfb57 }, { 11868, 0xef7d }, { 11881, 0xefff }, { 11896, 0x1378 },
+ { 11903, 0xfec0 }, { 11912, 0x5ff7 }, { 11925, 0x34bb }, { 11934, 0x5ee3 },
+ { 11944, 0xf70d }, { 11954, 0xeff6 }, { 11967, 0xd7fe }, { 11980, 0x00bf },
+ { 11987, 0xf59d }, { 11998, 0xf7f7 }, { 12012, 0x51de }, { 12021, 0xffe0 },
+ /* 0x9400 */
+ { 12032, 0xfec9 }, { 12043, 0x037f }, { 12052, 0x5f01 }, { 12059, 0xbfef },
+ { 12073, 0x9ff1 }, { 12084, 0x60a7 }, { 12091, 0xef1d }, { 12102, 0xf1ff },
+ { 12115, 0x000f }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ /* 0x9500 */
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x3c80 },
+ { 12124, 0xfb4d }, { 12135, 0xd91f }, { 12145, 0x7b3a }, { 12155, 0xfee3 },
+ { 12167, 0x3fe9 }, { 12178, 0xdc7f }, { 12190, 0x003f }, { 12196, 0x0000 },
+ /* 0x9600 */
+ { 12196, 0x0000 }, { 12196, 0x5000 }, { 12198, 0xf51f }, { 12209, 0xbe07 },
+ { 12218, 0xfc1d }, { 12228, 0xf91b }, { 12238, 0xbc1e }, { 12247, 0x71ff },
+ { 12259, 0x6ff9 }, { 12271, 0x5bbe }, { 12282, 0x5796 }, { 12291, 0x9b1b },
+ { 12300, 0x7fff }, { 12315, 0xfffc }, { 12329, 0x872e }, { 12337, 0xafe7 },
+ /* 0x9700 */
+ { 12349, 0xebf5 }, { 12361, 0xf34f }, { 12372, 0xdffd }, { 12386, 0xe725 },
+ { 12395, 0x0bdc }, { 12403, 0x5d44 }, { 12410, 0x5747 }, { 12419, 0xfddd },
+ { 12432, 0xed3f }, { 12444, 0x7790 }, { 12452, 0x7d7f }, { 12465, 0x8ac8 },
+ { 12471, 0xfafa }, { 12483, 0xf3f9 }, { 12495, 0x202a }, { 12499, 0xef4b },
+ /* 0x9800 */
+ { 12510, 0xf5ff }, { 12524, 0x79cf }, { 12535, 0xabd3 }, { 12545, 0x0ba5 },
+ { 12552, 0xf77a }, { 12564, 0xfb8f }, { 12576, 0x8ebd }, { 12586, 0x001f },
+ { 12591, 0x0000 }, { 12591, 0x0000 }, { 12591, 0xf300 }, { 12597, 0xfd4e },
+ { 12608, 0x1a57 }, { 12616, 0x8800 }, { 12618, 0xaeac }, { 12627, 0x7654 },
+ /* 0x9900 */
+ { 12635, 0x17ad }, { 12644, 0xcdff }, { 12657, 0xffb2 }, { 12669, 0xf42f },
+ { 12679, 0x5baa }, { 12688, 0xdbff }, { 12702, 0x0002 }, { 12703, 0x0000 },
+ { 12703, 0x0000 }, { 12703, 0x73c0 }, { 12710, 0xf9ea }, { 12721, 0x2e3f },
+ { 12731, 0xfa8e }, { 12741, 0xbbff }, { 12755, 0x76bc }, { 12765, 0xffd3 },
+ /* 0x9a00 */
+ { 12778, 0xeefe }, { 12791, 0x7e72 }, { 12801, 0x7ebd }, { 12813, 0xe7f7 },
+ { 12826, 0xf77f }, { 12840, 0xcefd }, { 12852, 0x0ff5 }, { 12862, 0x0000 },
+ { 12862, 0x0000 }, { 12862, 0x0000 }, { 12862, 0xa900 }, { 12866, 0xdb9b },
+ { 12877, 0xa4c7 }, { 12885, 0x917f }, { 12895, 0xf8ca }, { 12904, 0x7ece },
+ /* 0x9b00 */
+ { 12915, 0x7d7a }, { 12926, 0xc7e7 }, { 12937, 0xcbbd }, { 12948, 0xdcae },
+ { 12958, 0xfd7e }, { 12971, 0x8f76 }, { 12981, 0x91d3 }, { 12989, 0x7cf3 },
+ { 13000, 0x01e5 }, { 13006, 0x4c2f }, { 13014, 0xed77 }, { 13026, 0xa360 },
+ { 13032, 0x07db }, { 13041, 0x5ef8 }, { 13051, 0x1df7 }, { 13062, 0x2181 },
+ /* 0x9c00 */
+ { 13066, 0x6be0 }, { 13074, 0x309c }, { 13080, 0x3b3a }, { 13089, 0xfade },
+ { 13101, 0x7f53 }, { 13112, 0xc3f5 }, { 13122, 0x61cd }, { 13130, 0x07ba },
+ { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 },
+ { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x26e0 }, { 13144, 0xbefe },
+ /* 0x9d00 */
+ { 13157, 0x03f9 }, { 13165, 0xebb5 }, { 13176, 0xe36d }, { 13186, 0xe9cb },
+ { 13196, 0x9c2f }, { 13205, 0xbfde }, { 13218, 0x9f83 }, { 13227, 0xabbf },
+ { 13239, 0x1ff7 }, { 13251, 0xffd5 }, { 13264, 0xb7df }, { 13277, 0xdffe },
+ { 13291, 0xfdae }, { 13303, 0xffef }, { 13318, 0xfb7e }, { 13331, 0xeffd },
+ /* 0x9e00 */
+ { 13345, 0xaaff }, { 13357, 0x6ebf }, { 13369, 0x0000 }, { 13369, 0x0000 },
+ { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0xb620 },
+ { 13375, 0x7fcd }, { 13387, 0xbe9e }, { 13398, 0x62b3 }, { 13406, 0x58f1 },
+ { 13414, 0xf10d }, { 13422, 0xfd7b }, { 13435, 0xe9f1 }, { 13445, 0xbefd },
+ /* 0x9f00 */
+ { 13458, 0xc6c3 }, { 13466, 0x5f6d }, { 13477, 0xff3d }, { 13490, 0x69ff },
+ { 13502, 0xffcf }, { 13516, 0xfbf4 }, { 13528, 0xdcfb }, { 13540, 0x4ff7 },
+ { 13552, 0x2000 }, { 13553, 0x1137 }, { 13560, 0x0015 },
+};
+static const Summary16 big5_uni2indx_pagefa[1] = {
+ /* 0xfa00 */
+ { 13563, 0x3000 },
+};
+static const Summary16 big5_uni2indx_pagefe[23] = {
+ /* 0xfe00 */
+ { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0xfffb },
+ { 13580, 0xfe1f }, { 13592, 0xfef5 }, { 13605, 0x0e7f }, { 13615, 0x0000 },
+ { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
+ { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
+ /* 0xff00 */
+ { 13615, 0xff7a }, { 13628, 0xffff }, { 13644, 0xffff }, { 13660, 0x97ff },
+ { 13673, 0xfffe }, { 13688, 0x3fff }, { 13702, 0x0010 },
+};
+
+static int
+big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc < 0x0100)
+ summary = &big5_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x0200 && wc < 0x0460)
+ summary = &big5_uni2indx_page02[(wc>>4)-0x020];
+ else if (wc >= 0x2000 && wc < 0x22c0)
+ summary = &big5_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x2400 && wc < 0x2650)
+ summary = &big5_uni2indx_page24[(wc>>4)-0x240];
+ else if (wc >= 0x3000 && wc < 0x33e0)
+ summary = &big5_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &big5_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xfa00 && wc < 0xfa10)
+ summary = &big5_uni2indx_pagefa[(wc>>4)-0xfa0];
+ else if (wc >= 0xfe00 && wc < 0xff70)
+ summary = &big5_uni2indx_pagefe[(wc>>4)-0xfe0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = big5_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/big5_emacs.h b/libX11/src/xlibi18n/lcUniConv/big5_emacs.h
index 246aebeb4..67fb20097 100644
--- a/libX11/src/xlibi18n/lcUniConv/big5_emacs.h
+++ b/libX11/src/xlibi18n/lcUniConv/big5_emacs.h
@@ -1,163 +1,163 @@
-
-/*
- * BIG5-0 and BIG5-1
- */
-
-/*
- BIG5 with its 13494 characters doesn't fit in a single 94x94 or 96x96
- block. Therefore Emacs/Mule developers, in a typically Japanese way of
- thinking, have developed an alternative encoding of BIG5 in two 94x94
- planes, very similar to the SHIFT_JIS encoding for JISX0208.
-
- Conversion between BIG5 codes (s1,s2) and BIG5-0 codes (c1,c2):
- Example. (s1,s2) = 0xA140, (c1,c2) = 0x2121.
- 0xA1 <= s1 <= 0xC7, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
- 0x21 <= c1 <= 0x62, 0x21 <= c2 <= 0x7E.
- Invariant:
- 157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
- = 94*(c1-0x21)+(c2-0x21)
- Conversion (s1,s2) -> (c1,c2):
- t := 157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
- c1 := (t div 94) + 0x21
- c2 := (t mod 94) + 0x21
- Conversion (c1,c2) -> (s1,s2):
- t := 94*(c1-0x21)+(c2-0x21)
- t2 := t mod 157
- s1 := (t div 157) + 0xA1
- s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
-
- Conversion between BIG5 codes (s1,s2) and BIG5-1 codes (c1,c2):
- Example. (s1,s2) = 0xC940, (c1,c2) = 0x2121.
- 0xC9 <= s1 <= 0xF9, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
- 0x21 <= c1 <= 0x72, 0x21 <= c2 <= 0x7E.
- Invariant:
- 157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
- = 94*(c1-0x21)+(c2-0x21)
- Conversion (s1,s2) -> (c1,c2):
- t := 157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
- c1 := (t div 94) + 0x21
- c2 := (t mod 94) + 0x21
- Conversion (c1,c2) -> (s1,s2):
- t := 94*(c1-0x21)+(c2-0x21)
- t2 := t mod 157
- s1 := (t div 157) + 0xC9
- s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
- */
-
-static int
-big5_0_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = s[0];
- if (c1 >= 0x21 && c1 <= 0x62) {
- if (n >= 2) {
- unsigned char c2 = s[1];
- if (c2 >= 0x21 && c2 <= 0x7e) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- if (0) {
- /* Unoptimized. */
- unsigned char buf[2];
- buf[0] = (i / 157) + 0xa1;
- i = i % 157;
- buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
- return big5_mbtowc(conv,pwc,buf,2);
- } else {
- /* Inline the implementation of big5_mbtowc. */
- if (i < 6121) {
- unsigned short wc = big5_2uni_pagea1[i];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static int
-big5_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = s[0];
- if (c1 >= 0x21 && c1 <= 0x72) {
- if (n >= 2) {
- unsigned char c2 = s[1];
- if (c2 >= 0x21 && c2 <= 0x7e) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- if (0) {
- /* Unoptimized. */
- unsigned char buf[2];
- buf[0] = (i / 157) + 0xc9;
- i = i % 157;
- buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
- return big5_mbtowc(conv,pwc,buf,2);
- } else {
- /* Inline the implementation of big5_mbtowc. */
- if (i < 7652) {
- unsigned short wc = big5_2uni_pagec9[i];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static int
-big5_0_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- unsigned char buf[2];
- int ret = big5_wctomb(conv,buf,wc,2);
- if (ret != RET_ILSEQ) {
- unsigned char s1, s2;
- if (ret != 2) abort();
- s1 = buf[0];
- s2 = buf[1];
- if (!(s1 >= 0xa1)) abort();
- if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
- if (s1 < 0xc9) {
- unsigned int t = 157 * (s1 - 0xa1) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
- r[0] = (t / 94) + 0x21;
- r[1] = (t % 94) + 0x21;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
-
-static int
-big5_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- unsigned char buf[2];
- int ret = big5_wctomb(conv,buf,wc,2);
- if (ret != RET_ILSEQ) {
- unsigned char s1, s2;
- if (ret != 2) abort();
- s1 = buf[0];
- s2 = buf[1];
- if (!(s1 <= 0xf9)) abort();
- if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
- if (s1 >= 0xc9) {
- unsigned int t = 157 * (s1 - 0xc9) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
- r[0] = (t / 94) + 0x21;
- r[1] = (t % 94) + 0x21;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * BIG5-0 and BIG5-1
+ */
+
+/*
+ BIG5 with its 13494 characters doesn't fit in a single 94x94 or 96x96
+ block. Therefore Emacs/Mule developers, in a typically Japanese way of
+ thinking, have developed an alternative encoding of BIG5 in two 94x94
+ planes, very similar to the SHIFT_JIS encoding for JISX0208.
+
+ Conversion between BIG5 codes (s1,s2) and BIG5-0 codes (c1,c2):
+ Example. (s1,s2) = 0xA140, (c1,c2) = 0x2121.
+ 0xA1 <= s1 <= 0xC7, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
+ 0x21 <= c1 <= 0x62, 0x21 <= c2 <= 0x7E.
+ Invariant:
+ 157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ = 94*(c1-0x21)+(c2-0x21)
+ Conversion (s1,s2) -> (c1,c2):
+ t := 157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ c1 := (t div 94) + 0x21
+ c2 := (t mod 94) + 0x21
+ Conversion (c1,c2) -> (s1,s2):
+ t := 94*(c1-0x21)+(c2-0x21)
+ t2 := t mod 157
+ s1 := (t div 157) + 0xA1
+ s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
+
+ Conversion between BIG5 codes (s1,s2) and BIG5-1 codes (c1,c2):
+ Example. (s1,s2) = 0xC940, (c1,c2) = 0x2121.
+ 0xC9 <= s1 <= 0xF9, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
+ 0x21 <= c1 <= 0x72, 0x21 <= c2 <= 0x7E.
+ Invariant:
+ 157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ = 94*(c1-0x21)+(c2-0x21)
+ Conversion (s1,s2) -> (c1,c2):
+ t := 157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ c1 := (t div 94) + 0x21
+ c2 := (t mod 94) + 0x21
+ Conversion (c1,c2) -> (s1,s2):
+ t := 94*(c1-0x21)+(c2-0x21)
+ t2 := t mod 157
+ s1 := (t div 157) + 0xC9
+ s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
+ */
+
+static int
+big5_0_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if (c1 >= 0x21 && c1 <= 0x62) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if (c2 >= 0x21 && c2 <= 0x7e) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ if (0) {
+ /* Unoptimized. */
+ unsigned char buf[2];
+ buf[0] = (i / 157) + 0xa1;
+ i = i % 157;
+ buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
+ return big5_mbtowc(conv,pwc,buf,2);
+ } else {
+ /* Inline the implementation of big5_mbtowc. */
+ if (i < 6121) {
+ unsigned short wc = big5_2uni_pagea1[i];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static int
+big5_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if (c1 >= 0x21 && c1 <= 0x72) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if (c2 >= 0x21 && c2 <= 0x7e) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ if (0) {
+ /* Unoptimized. */
+ unsigned char buf[2];
+ buf[0] = (i / 157) + 0xc9;
+ i = i % 157;
+ buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
+ return big5_mbtowc(conv,pwc,buf,2);
+ } else {
+ /* Inline the implementation of big5_mbtowc. */
+ if (i < 7652) {
+ unsigned short wc = big5_2uni_pagec9[i];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static int
+big5_0_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ unsigned char buf[2];
+ int ret = big5_wctomb(conv,buf,wc,2);
+ if (ret != RET_ILSEQ) {
+ unsigned char s1, s2;
+ if (ret != 2) abort();
+ s1 = buf[0];
+ s2 = buf[1];
+ if (!(s1 >= 0xa1)) abort();
+ if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
+ if (s1 < 0xc9) {
+ unsigned int t = 157 * (s1 - 0xa1) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
+ r[0] = (t / 94) + 0x21;
+ r[1] = (t % 94) + 0x21;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
+
+static int
+big5_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ unsigned char buf[2];
+ int ret = big5_wctomb(conv,buf,wc,2);
+ if (ret != RET_ILSEQ) {
+ unsigned char s1, s2;
+ if (ret != 2) abort();
+ s1 = buf[0];
+ s2 = buf[1];
+ if (!(s1 <= 0xf9)) abort();
+ if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
+ if (s1 >= 0xc9) {
+ unsigned int t = 157 * (s1 - 0xc9) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
+ r[0] = (t / 94) + 0x21;
+ r[1] = (t % 94) + 0x21;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/big5hkscs.h b/libX11/src/xlibi18n/lcUniConv/big5hkscs.h
index 721d1228e..8924ba55c 100644
--- a/libX11/src/xlibi18n/lcUniConv/big5hkscs.h
+++ b/libX11/src/xlibi18n/lcUniConv/big5hkscs.h
@@ -1,6252 +1,6252 @@
-
-/*
- * BIG5-HKSCS
- */
-
-static const unsigned short big5hkscs_2uni_page81[19782] = {
- /* 0x81 */
- 0xeeb8, 0xeeb9, 0xeeba, 0xeebb, 0xeebc, 0xeebd, 0xeebe, 0xeebf,
- 0xeec0, 0xeec1, 0xeec2, 0xeec3, 0xeec4, 0xeec5, 0xeec6, 0xeec7,
- 0xeec8, 0xeec9, 0xeeca, 0xeecb, 0xeecc, 0xeecd, 0xeece, 0xeecf,
- 0xeed0, 0xeed1, 0xeed2, 0xeed3, 0xeed4, 0xeed5, 0xeed6, 0xeed7,
- 0xeed8, 0xeed9, 0xeeda, 0xeedb, 0xeedc, 0xeedd, 0xeede, 0xeedf,
- 0xeee0, 0xeee1, 0xeee2, 0xeee3, 0xeee4, 0xeee5, 0xeee6, 0xeee7,
- 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xeeed, 0xeeee, 0xeeef,
- 0xeef0, 0xeef1, 0xeef2, 0xeef3, 0xeef4, 0xeef5, 0xeef6, 0xeef7,
- 0xeef8, 0xeef9, 0xeefa, 0xeefb, 0xeefc, 0xeefd, 0xeefe, 0xeeff,
- 0xef00, 0xef01, 0xef02, 0xef03, 0xef04, 0xef05, 0xef06, 0xef07,
- 0xef08, 0xef09, 0xef0a, 0xef0b, 0xef0c, 0xef0d, 0xef0e, 0xef0f,
- 0xef10, 0xef11, 0xef12, 0xef13, 0xef14, 0xef15, 0xef16, 0xef17,
- 0xef18, 0xef19, 0xef1a, 0xef1b, 0xef1c, 0xef1d, 0xef1e, 0xef1f,
- 0xef20, 0xef21, 0xef22, 0xef23, 0xef24, 0xef25, 0xef26, 0xef27,
- 0xef28, 0xef29, 0xef2a, 0xef2b, 0xef2c, 0xef2d, 0xef2e, 0xef2f,
- 0xef30, 0xef31, 0xef32, 0xef33, 0xef34, 0xef35, 0xef36, 0xef37,
- 0xef38, 0xef39, 0xef3a, 0xef3b, 0xef3c, 0xef3d, 0xef3e, 0xef3f,
- 0xef40, 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xef46, 0xef47,
- 0xef48, 0xef49, 0xef4a, 0xef4b, 0xef4c, 0xef4d, 0xef4e, 0xef4f,
- 0xef50, 0xef51, 0xef52, 0xef53, 0xef54,
- /* 0x82 */
- 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b, 0xef5c,
- 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63, 0xef64,
- 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b, 0xef6c,
- 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xef72, 0xef73, 0xef74,
- 0xef75, 0xef76, 0xef77, 0xef78, 0xef79, 0xef7a, 0xef7b, 0xef7c,
- 0xef7d, 0xef7e, 0xef7f, 0xef80, 0xef81, 0xef82, 0xef83, 0xef84,
- 0xef85, 0xef86, 0xef87, 0xef88, 0xef89, 0xef8a, 0xef8b, 0xef8c,
- 0xef8d, 0xef8e, 0xef8f, 0xef90, 0xef91, 0xef92, 0xef93, 0xef94,
- 0xef95, 0xef96, 0xef97, 0xef98, 0xef99, 0xef9a, 0xef9b, 0xef9c,
- 0xef9d, 0xef9e, 0xef9f, 0xefa0, 0xefa1, 0xefa2, 0xefa3, 0xefa4,
- 0xefa5, 0xefa6, 0xefa7, 0xefa8, 0xefa9, 0xefaa, 0xefab, 0xefac,
- 0xefad, 0xefae, 0xefaf, 0xefb0, 0xefb1, 0xefb2, 0xefb3, 0xefb4,
- 0xefb5, 0xefb6, 0xefb7, 0xefb8, 0xefb9, 0xefba, 0xefbb, 0xefbc,
- 0xefbd, 0xefbe, 0xefbf, 0xefc0, 0xefc1, 0xefc2, 0xefc3, 0xefc4,
- 0xefc5, 0xefc6, 0xefc7, 0xefc8, 0xefc9, 0xefca, 0xefcb, 0xefcc,
- 0xefcd, 0xefce, 0xefcf, 0xefd0, 0xefd1, 0xefd2, 0xefd3, 0xefd4,
- 0xefd5, 0xefd6, 0xefd7, 0xefd8, 0xefd9, 0xefda, 0xefdb, 0xefdc,
- 0xefdd, 0xefde, 0xefdf, 0xefe0, 0xefe1, 0xefe2, 0xefe3, 0xefe4,
- 0xefe5, 0xefe6, 0xefe7, 0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec,
- 0xefed, 0xefee, 0xefef, 0xeff0, 0xeff1,
- /* 0x83 */
- 0xeff2, 0xeff3, 0xeff4, 0xeff5, 0xeff6, 0xeff7, 0xeff8, 0xeff9,
- 0xeffa, 0xeffb, 0xeffc, 0xeffd, 0xeffe, 0xefff, 0xf000, 0xf001,
- 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, 0xf008, 0xf009,
- 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, 0xf010, 0xf011,
- 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, 0xf018, 0xf019,
- 0xf01a, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f, 0xf020, 0xf021,
- 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027, 0xf028, 0xf029,
- 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f, 0xf030, 0xf031,
- 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, 0xf038, 0xf039,
- 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f, 0xf040, 0xf041,
- 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047, 0xf048, 0xf049,
- 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f, 0xf050, 0xf051,
- 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057, 0xf058, 0xf059,
- 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f, 0xf060, 0xf061,
- 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067, 0xf068, 0xf069,
- 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f, 0xf070, 0xf071,
- 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077, 0xf078, 0xf079,
- 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f, 0xf080, 0xf081,
- 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087, 0xf088, 0xf089,
- 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e,
- /* 0x84 */
- 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096,
- 0xf097, 0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e,
- 0xf09f, 0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6,
- 0xf0a7, 0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae,
- 0xf0af, 0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6,
- 0xf0b7, 0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be,
- 0xf0bf, 0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6,
- 0xf0c7, 0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce,
- 0xf0cf, 0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6,
- 0xf0d7, 0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de,
- 0xf0df, 0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5, 0xf0e6,
- 0xf0e7, 0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee,
- 0xf0ef, 0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6,
- 0xf0f7, 0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe,
- 0xf0ff, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106,
- 0xf107, 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e,
- 0xf10f, 0xf110, 0xf111, 0xf112, 0xf113, 0xf114, 0xf115, 0xf116,
- 0xf117, 0xf118, 0xf119, 0xf11a, 0xf11b, 0xf11c, 0xf11d, 0xf11e,
- 0xf11f, 0xf120, 0xf121, 0xf122, 0xf123, 0xf124, 0xf125, 0xf126,
- 0xf127, 0xf128, 0xf129, 0xf12a, 0xf12b,
- /* 0x85 */
- 0xf12c, 0xf12d, 0xf12e, 0xf12f, 0xf130, 0xf131, 0xf132, 0xf133,
- 0xf134, 0xf135, 0xf136, 0xf137, 0xf138, 0xf139, 0xf13a, 0xf13b,
- 0xf13c, 0xf13d, 0xf13e, 0xf13f, 0xf140, 0xf141, 0xf142, 0xf143,
- 0xf144, 0xf145, 0xf146, 0xf147, 0xf148, 0xf149, 0xf14a, 0xf14b,
- 0xf14c, 0xf14d, 0xf14e, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153,
- 0xf154, 0xf155, 0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b,
- 0xf15c, 0xf15d, 0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163,
- 0xf164, 0xf165, 0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0xf16b,
- 0xf16c, 0xf16d, 0xf16e, 0xf16f, 0xf170, 0xf171, 0xf172, 0xf173,
- 0xf174, 0xf175, 0xf176, 0xf177, 0xf178, 0xf179, 0xf17a, 0xf17b,
- 0xf17c, 0xf17d, 0xf17e, 0xf17f, 0xf180, 0xf181, 0xf182, 0xf183,
- 0xf184, 0xf185, 0xf186, 0xf187, 0xf188, 0xf189, 0xf18a, 0xf18b,
- 0xf18c, 0xf18d, 0xf18e, 0xf18f, 0xf190, 0xf191, 0xf192, 0xf193,
- 0xf194, 0xf195, 0xf196, 0xf197, 0xf198, 0xf199, 0xf19a, 0xf19b,
- 0xf19c, 0xf19d, 0xf19e, 0xf19f, 0xf1a0, 0xf1a1, 0xf1a2, 0xf1a3,
- 0xf1a4, 0xf1a5, 0xf1a6, 0xf1a7, 0xf1a8, 0xf1a9, 0xf1aa, 0xf1ab,
- 0xf1ac, 0xf1ad, 0xf1ae, 0xf1af, 0xf1b0, 0xf1b1, 0xf1b2, 0xf1b3,
- 0xf1b4, 0xf1b5, 0xf1b6, 0xf1b7, 0xf1b8, 0xf1b9, 0xf1ba, 0xf1bb,
- 0xf1bc, 0xf1bd, 0xf1be, 0xf1bf, 0xf1c0, 0xf1c1, 0xf1c2, 0xf1c3,
- 0xf1c4, 0xf1c5, 0xf1c6, 0xf1c7, 0xf1c8,
- /* 0x86 */
- 0xf1c9, 0xf1ca, 0xf1cb, 0xf1cc, 0xf1cd, 0xf1ce, 0xf1cf, 0xf1d0,
- 0xf1d1, 0xf1d2, 0xf1d3, 0xf1d4, 0xf1d5, 0xf1d6, 0xf1d7, 0xf1d8,
- 0xf1d9, 0xf1da, 0xf1db, 0xf1dc, 0xf1dd, 0xf1de, 0xf1df, 0xf1e0,
- 0xf1e1, 0xf1e2, 0xf1e3, 0xf1e4, 0xf1e5, 0xf1e6, 0xf1e7, 0xf1e8,
- 0xf1e9, 0xf1ea, 0xf1eb, 0xf1ec, 0xf1ed, 0xf1ee, 0xf1ef, 0xf1f0,
- 0xf1f1, 0xf1f2, 0xf1f3, 0xf1f4, 0xf1f5, 0xf1f6, 0xf1f7, 0xf1f8,
- 0xf1f9, 0xf1fa, 0xf1fb, 0xf1fc, 0xf1fd, 0xf1fe, 0xf1ff, 0xf200,
- 0xf201, 0xf202, 0xf203, 0xf204, 0xf205, 0xf206, 0xf207, 0xf208,
- 0xf209, 0xf20a, 0xf20b, 0xf20c, 0xf20d, 0xf20e, 0xf20f, 0xf210,
- 0xf211, 0xf212, 0xf213, 0xf214, 0xf215, 0xf216, 0xf217, 0xf218,
- 0xf219, 0xf21a, 0xf21b, 0xf21c, 0xf21d, 0xf21e, 0xf21f, 0xf220,
- 0xf221, 0xf222, 0xf223, 0xf224, 0xf225, 0xf226, 0xf227, 0xf228,
- 0xf229, 0xf22a, 0xf22b, 0xf22c, 0xf22d, 0xf22e, 0xf22f, 0xf230,
- 0xf231, 0xf232, 0xf233, 0xf234, 0xf235, 0xf236, 0xf237, 0xf238,
- 0xf239, 0xf23a, 0xf23b, 0xf23c, 0xf23d, 0xf23e, 0xf23f, 0xf240,
- 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, 0xf246, 0xf247, 0xf248,
- 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, 0xf24e, 0xf24f, 0xf250,
- 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, 0xf256, 0xf257, 0xf258,
- 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, 0xf25e, 0xf25f, 0xf260,
- 0xf261, 0xf262, 0xf263, 0xf264, 0xf265,
- /* 0x87 */
- 0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d,
- 0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275,
- 0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d,
- 0xf27e, 0xf27f, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285,
- 0xf286, 0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d,
- 0xf28e, 0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295,
- 0xf296, 0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d,
- 0xf29e, 0xf29f, 0xf2a0, 0xf2a1, 0xf2a2, 0xf2a3, 0xf2a4, 0xf2a5,
- 0xf2a6, 0xf2a7, 0xf2a8, 0xf2a9, 0xf2aa, 0xf2ab, 0xf2ac, 0xf2ad,
- 0xf2ae, 0xf2af, 0xf2b0, 0xf2b1, 0xf2b2, 0xf2b3, 0xf2b4, 0xf2b5,
- 0xf2b6, 0xf2b7, 0xf2b8, 0xf2b9, 0xf2ba, 0xf2bb, 0xf2bc, 0xf2bd,
- 0xf2be, 0xf2bf, 0xf2c0, 0xf2c1, 0xf2c2, 0xf2c3, 0xf2c4, 0xf2c5,
- 0xf2c6, 0xf2c7, 0xf2c8, 0xf2c9, 0xf2ca, 0xf2cb, 0xf2cc, 0xf2cd,
- 0xf2ce, 0xf2cf, 0xf2d0, 0xf2d1, 0xf2d2, 0xf2d3, 0xf2d4, 0xf2d5,
- 0xf2d6, 0xf2d7, 0xf2d8, 0xf2d9, 0xf2da, 0xf2db, 0xf2dc, 0xf2dd,
- 0xf2de, 0xf2df, 0xf2e0, 0xf2e1, 0xf2e2, 0xf2e3, 0xf2e4, 0xf2e5,
- 0xf2e6, 0xf2e7, 0xf2e8, 0xf2e9, 0xf2ea, 0xf2eb, 0xf2ec, 0xf2ed,
- 0xf2ee, 0xf2ef, 0xf2f0, 0xf2f1, 0xf2f2, 0xf2f3, 0xf2f4, 0xf2f5,
- 0xf2f6, 0xf2f7, 0xf2f8, 0xf2f9, 0xf2fa, 0xf2fb, 0xf2fc, 0xf2fd,
- 0xf2fe, 0xf2ff, 0xf300, 0xf301, 0xf302,
- /* 0x88 */
- 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, 0xf30a,
- 0xf30b, 0xf30c, 0xf30d, 0xf30e, 0xf30f, 0xf310, 0xf311, 0xf312,
- 0xf313, 0xf314, 0xf315, 0xf316, 0xf317, 0xf318, 0x0100, 0x00c1,
- 0x01cd, 0x00c0, 0x0112, 0x00c9, 0x011a, 0x00c8, 0x014c, 0x00d3,
- 0x01d1, 0x00d2, 0xf325, 0x1ebe, 0xf327, 0x1ec0, 0x00ca, 0x0101,
- 0x00e1, 0x01ce, 0x00e0, 0x0251, 0x0113, 0x00e9, 0x011b, 0x00e8,
- 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
- 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
- 0x00fc, 0xf344, 0x1ebf, 0xf346, 0x1ec1, 0x00ea, 0x0261, 0xf34a,
- 0xf34b, 0xf34c, 0xf34d, 0xf34e, 0xf34f, 0xf350, 0xf351, 0xf352,
- 0xf353, 0xf354, 0xf355, 0xf356, 0xf357, 0xf358, 0xf359, 0xf35a,
- 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360, 0xf361, 0xf362,
- 0xf363, 0xf364, 0xf365, 0xf366, 0xf367, 0xf368, 0xf369, 0xf36a,
- 0xf36b, 0xf36c, 0xf36d, 0xf36e, 0xf36f, 0xf370, 0xf371, 0xf372,
- 0xf373, 0xf374, 0xf375, 0xf376, 0xf377, 0xf378, 0xf379, 0xf37a,
- 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf37f, 0xf380, 0xf381, 0xf382,
- 0xf383, 0xf384, 0xf385, 0xf386, 0xf387, 0xf388, 0xf389, 0xf38a,
- 0xf38b, 0xf38c, 0xf38d, 0xf38e, 0xf38f, 0xf390, 0xf391, 0xf392,
- 0xf393, 0xf394, 0xf395, 0xf396, 0xf397, 0xf398, 0xf399, 0xf39a,
- 0xf39b, 0xf39c, 0xf39d, 0xf39e, 0xf39f,
- /* 0x89 */
- 0xf3a0, 0xf3a1, 0xf3a2, 0x650a, 0xf3a4, 0xf3a5, 0x4e3d, 0x6edd,
- 0x9d4e, 0x91df, 0xf3aa, 0xf3ab, 0xf3ac, 0x6491, 0x4f1a, 0x4f28,
- 0x4fa8, 0x5156, 0x5174, 0x519c, 0x51e4, 0x52a1, 0x52a8, 0x533b,
- 0x534e, 0x53d1, 0x53d8, 0x56e2, 0x58f0, 0x5904, 0x5907, 0x5932,
- 0x5934, 0x5b66, 0x5b9e, 0x5b9f, 0x5c9a, 0x5e86, 0x603b, 0x6589,
- 0x67fe, 0x6804, 0x6865, 0x6d4e, 0x70bc, 0x7535, 0x7ea4, 0x7eac,
- 0x7eba, 0x7ec7, 0x7ecf, 0x7edf, 0x7f06, 0x7f37, 0x827a, 0x82cf,
- 0x836f, 0x89c6, 0x8bbe, 0x8be2, 0x8f66, 0x8f67, 0x8f6e, 0x7411,
- 0x7cfc, 0x7dcd, 0x6946, 0x7ac9, 0x5227, 0xf3e5, 0xf3e6, 0xf3e7,
- 0xf3e8, 0x918c, 0x78b8, 0x915e, 0x80bc, 0xf3ed, 0x8d0b, 0x80f6,
- 0xf3f0, 0xf3f1, 0xf3f2, 0x809f, 0x9ec7, 0x4ccd, 0x9dc9, 0x9e0c,
- 0x4c3e, 0xf3f9, 0xf3fa, 0x9e0a, 0xf3fc, 0x35c1, 0xf3fe, 0x6e9a,
- 0x823e, 0x7519, 0xf402, 0x4911, 0x9a6c, 0x9a8f, 0x9f99, 0x7987,
- 0xf408, 0xf409, 0xf40a, 0xf40b, 0x4e24, 0x4e81, 0x4e80, 0x4e87,
- 0x4ebf, 0x4eeb, 0x4f37, 0x344c, 0x4fbd, 0x3e48, 0x5003, 0x5088,
- 0x347d, 0x3493, 0x34a5, 0x5186, 0x5905, 0x51db, 0x51fc, 0x5205,
- 0x4e89, 0x5279, 0x5290, 0x5327, 0x35c7, 0x53a9, 0x3551, 0x53b0,
- 0x3553, 0x53c2, 0x5423, 0x356d, 0x3572, 0x3681, 0x5493, 0x54a3,
- 0x54b4, 0x54b9, 0x54d0, 0x54ef, 0x5518, 0x5523, 0x5528, 0x3598,
- 0x553f, 0x35a5, 0x35bf, 0x55d7, 0x35c5,
- /* 0x8a */
- 0xf43d, 0x5525, 0xf43f, 0xf440, 0xf441, 0xf442, 0x5590, 0xf444,
- 0x39ec, 0xf446, 0x8e46, 0xf448, 0xf449, 0x4053, 0xf44b, 0x777a,
- 0xf44d, 0x3a34, 0x47d5, 0xf450, 0xf451, 0xf452, 0x64dd, 0xf454,
- 0xf455, 0xf456, 0xf457, 0x648d, 0x8e7e, 0xf45a, 0xf45b, 0xf45c,
- 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xf463, 0x47f4,
- 0xf465, 0xf466, 0x9ab2, 0x3a67, 0xf469, 0x3fed, 0x3506, 0xf46c,
- 0xf46d, 0xf46e, 0xf46f, 0x9d6e, 0x9815, 0xf472, 0x43d9, 0xf474,
- 0x64b4, 0x54e3, 0xf477, 0xf478, 0xf479, 0x39fb, 0xf47b, 0xf47c,
- 0xf47d, 0xf47e, 0x64ea, 0xf480, 0xf481, 0x8e68, 0xf483, 0xf484,
- 0xf485, 0xf486, 0x480b, 0xf488, 0x3ffa, 0x5873, 0xf48b, 0xf48c,
- 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0x5579, 0x40bb, 0x43ba,
- 0xf495, 0x4ab4, 0xf497, 0xf498, 0x81aa, 0x98f5, 0xf49b, 0x6379,
- 0x39fe, 0xf49e, 0x8dc0, 0x56a1, 0x647c, 0x3e43, 0xf4a3, 0xf4a4,
- 0xf4a5, 0xf4a6, 0xf4a7, 0xf4a8, 0xf4a9, 0xf4aa, 0x3992, 0x3a06,
- 0xf4ad, 0x3578, 0xf4af, 0xf4b0, 0x5652, 0xf4b2, 0xf4b3, 0xf4b4,
- 0x34bc, 0x6c3d, 0xf4b7, 0xf4b8, 0xf4b9, 0xf4ba, 0xf4bb, 0xf4bc,
- 0xf4bd, 0xf4be, 0xf4bf, 0xf4c0, 0xf4c1, 0x7f93, 0xf4c3, 0xf4c4,
- 0xf4c5, 0x35fb, 0xf4c7, 0xf4c8, 0xf4c9, 0xf4ca, 0x3f93, 0xf4cc,
- 0xf4cd, 0xf4ce, 0xf4cf, 0xf4d0, 0xf4d1, 0xf4d2, 0xf4d3, 0xf4d4,
- 0xf4d5, 0x3ff9, 0xf4d7, 0x6432, 0xf4d9,
- /* 0x8b */
- 0xf4da, 0xf4db, 0xf4dc, 0xf4dd, 0xf4de, 0xf4df, 0xf4e0, 0x3a18,
- 0xf4e2, 0xf4e3, 0xf4e4, 0xf4e5, 0xf4e6, 0xf4e7, 0xf4e8, 0xf4e9,
- 0x95aa, 0x54cc, 0x82c4, 0x55b9, 0xf4ee, 0xf4ef, 0x9c26, 0x9ab6,
- 0xf4f2, 0xf4f3, 0x7140, 0x816d, 0x80ec, 0x5c1c, 0xf4f8, 0x8134,
- 0x3797, 0x535f, 0xf4fc, 0x91b6, 0xf4fe, 0xf4ff, 0xf500, 0xf501,
- 0x35dd, 0xf503, 0x3609, 0xf505, 0x56af, 0xf507, 0xf508, 0xf509,
- 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510, 0xf511,
- 0x5a54, 0xf513, 0xf514, 0xf515, 0xf516, 0x579c, 0xf518, 0xf519,
- 0xf51a, 0xf51b, 0xf51c, 0xf51d, 0x3703, 0xf51f, 0xf520, 0xf521,
- 0xf522, 0xf523, 0xf524, 0xf525, 0xf526, 0x5899, 0x5268, 0x361a,
- 0xf52a, 0x7bb2, 0x5b68, 0x4800, 0x4b2c, 0x9f27, 0x49e7, 0x9c1f,
- 0x9b8d, 0xf533, 0xf534, 0x55fb, 0x35f2, 0x5689, 0x4e28, 0x5902,
- 0xf53a, 0xf53b, 0x9751, 0xf53d, 0x4e5b, 0x4ebb, 0x353e, 0x5c23,
- 0x5f51, 0x5fc4, 0x38fa, 0x624c, 0x6535, 0x6b7a, 0x6c35, 0x6c3a,
- 0x706c, 0x722b, 0x4e2c, 0x72ad, 0xf54e, 0x7f52, 0x793b, 0x7cf9,
- 0x7f53, 0xf553, 0x34c1, 0xf555, 0xf556, 0x8002, 0x8080, 0xf559,
- 0xf55a, 0x535d, 0x8864, 0x89c1, 0xf55e, 0x8ba0, 0x8d1d, 0x9485,
- 0x9578, 0x957f, 0x95e8, 0xf565, 0x97e6, 0x9875, 0x98ce, 0x98de,
- 0x9963, 0xf56b, 0x9c7c, 0x9e1f, 0x9ec4, 0x6b6f, 0xf907, 0x4e37,
- 0xf572, 0x961d, 0x6237, 0x94a2, 0xf576,
- /* 0x8c */
- 0x503b, 0x6dfe, 0xf579, 0xf57a, 0x3dc9, 0x888f, 0xf57d, 0x7077,
- 0x5cf5, 0x4b20, 0xf581, 0x3559, 0xf583, 0x6122, 0xf585, 0x8fa7,
- 0x91f6, 0x7191, 0x6719, 0x73ba, 0xf58b, 0xf58c, 0x3c8b, 0xf58e,
- 0x4b10, 0x78e4, 0x7402, 0x51ae, 0xf593, 0x4009, 0x6a63, 0xf596,
- 0x4223, 0x860f, 0xf599, 0x7a2a, 0xf59b, 0xf59c, 0x9755, 0x704d,
- 0x5324, 0xf5a0, 0x93f4, 0x76d9, 0xf5a3, 0xf5a4, 0x77dd, 0x4ea3,
- 0x4ff0, 0x50bc, 0x4e2f, 0x4f17, 0xf5ab, 0x5434, 0x7d8b, 0x5892,
- 0x58d0, 0xf5b0, 0x5e92, 0x5e99, 0x5fc2, 0xf5b4, 0x658b, 0xf5b6,
- 0x6919, 0x6a43, 0xf5b9, 0x6cff, 0xf5bb, 0x7200, 0xf5bd, 0x738c,
- 0x3edb, 0xf5c0, 0x5b15, 0x74b9, 0x8b83, 0xf5c4, 0xf5c5, 0x7a93,
- 0x7bec, 0x7cc3, 0x7e6c, 0x82f8, 0x8597, 0xf5cc, 0x8890, 0xf5ce,
- 0x8eb9, 0xf5d0, 0x8fcf, 0x855f, 0x99e0, 0x9221, 0xf5d5, 0xf5d6,
- 0xf5d7, 0x4071, 0x42a2, 0x5a1a, 0xf5db, 0xf5dc, 0xf5dd, 0x9868,
- 0x676b, 0x4276, 0x573d, 0xf5e2, 0x85d6, 0xf5e4, 0x82bf, 0xf5e6,
- 0x4c81, 0xf5e8, 0x5d7b, 0xf5ea, 0xf5eb, 0xf5ec, 0xf5ed, 0x5b96,
- 0xf5ef, 0xf5f0, 0x7e5b, 0xf5f2, 0xf5f3, 0xf5f4, 0xf5f5, 0xf5f6,
- 0xf5f7, 0xf5f8, 0xf5f9, 0xf5fa, 0xf5fb, 0xf5fc, 0xf5fd, 0xf5fe,
- 0xf5ff, 0xf600, 0xf601, 0xf602, 0xf603, 0xf604, 0xf605, 0xf606,
- 0xf607, 0xf608, 0xf609, 0xf60a, 0xf60b, 0xf60c, 0xf60d, 0xf60e,
- 0xf60f, 0xf610, 0xf611, 0xf612, 0xf613,
- /* 0x8d */
- 0xf614, 0xf615, 0xf616, 0xf617, 0xf618, 0xf619, 0xf61a, 0xf61b,
- 0xf61c, 0xf61d, 0xf61e, 0xf61f, 0xf620, 0xf621, 0xf622, 0xf623,
- 0xf624, 0xf625, 0xf626, 0xf627, 0xf628, 0xf629, 0xf62a, 0xf62b,
- 0xf62c, 0xf62d, 0xf62e, 0xf62f, 0xf630, 0xf631, 0xf632, 0xf633,
- 0x5d3e, 0x5d48, 0x5d56, 0x3dfc, 0x380f, 0x5da4, 0x5db9, 0x3820,
- 0x3838, 0x5e42, 0x5ebd, 0x5f25, 0x5f83, 0x3908, 0x3914, 0x393f,
- 0x394d, 0x60d7, 0x613d, 0x5ce5, 0x3989, 0x61b7, 0x61b9, 0x61cf,
- 0x39b8, 0x622c, 0x6290, 0x62e5, 0x6318, 0x39f8, 0x56b1, 0x3a03,
- 0x63e2, 0x63fb, 0x6407, 0x645a, 0x3a4b, 0x64c0, 0x5d15, 0x5621,
- 0x9f9f, 0x3a97, 0x6586, 0x3abd, 0x65ff, 0x6653, 0x3af2, 0x6692,
- 0x3b22, 0x6716, 0x3b42, 0x67a4, 0x6800, 0x3b58, 0x684a, 0x6884,
- 0x3b72, 0x3b71, 0x3b7b, 0x6909, 0x6943, 0x725c, 0x6964, 0x699f,
- 0x6985, 0x3bbc, 0x69d6, 0x3bdd, 0x6a65, 0x6a74, 0x6a71, 0x6a82,
- 0x3bec, 0x6a99, 0x3bf2, 0x6aab, 0x6ab5, 0x6ad4, 0x6af6, 0x6b81,
- 0x6bc1, 0x6bea, 0x6c75, 0x6caa, 0x3ccb, 0x6d02, 0x6d06, 0x6d26,
- 0x6d81, 0x3cef, 0x6da4, 0x6db1, 0x6e15, 0x6e18, 0x6e29, 0x6e86,
- 0xf694, 0x6ebb, 0x6ee2, 0x6eda, 0x9f7f, 0x6ee8, 0x6ee9, 0x6f24,
- 0x6f34, 0x3d46, 0xf69e, 0x6f81, 0x6fbe, 0x3d6a, 0x3d75, 0x71b7,
- 0x5c99, 0x3d8a, 0x702c, 0x3d91, 0x7050, 0x7054, 0x706f, 0x707f,
- 0x7089, 0xf6ad, 0x43c1, 0x35f1, 0xf6b0,
- /* 0x8e */
- 0xe311, 0x57be, 0xe313, 0x713e, 0xe315, 0x364e, 0x69a2, 0xe318,
- 0x5b74, 0x7a49, 0xe31b, 0xe31c, 0x7a65, 0x7a7d, 0xe31f, 0x7abb,
- 0x7ab0, 0x7ac2, 0x7ac3, 0x71d1, 0xe325, 0x41ca, 0x7ada, 0x7add,
- 0x7aea, 0x41ef, 0x54b2, 0xe32c, 0x7b0b, 0x7b55, 0x7b29, 0xe330,
- 0xe331, 0x7ba2, 0x7b6f, 0x839c, 0xe335, 0xe336, 0x7bd0, 0x8421,
- 0x7b92, 0x7bb8, 0xe33b, 0x3dad, 0xe33d, 0x8492, 0x7bfa, 0x7c06,
- 0x7c35, 0xe342, 0x7c44, 0x7c83, 0xe345, 0x7ca6, 0x667d, 0xe348,
- 0x7cc9, 0x7cc7, 0x7ce6, 0x7c74, 0x7cf3, 0x7cf5, 0x7cce, 0x7e67,
- 0x451d, 0xe352, 0x7d5d, 0xe354, 0x748d, 0x7d89, 0x7dab, 0x7135,
- 0x7db3, 0x7dd2, 0xe35b, 0xe35c, 0x7de4, 0x3d13, 0x7df5, 0xe360,
- 0x7de5, 0xe362, 0x7e1d, 0xe364, 0xe365, 0x7e6e, 0x7e92, 0x432b,
- 0x946c, 0x7e27, 0x7f40, 0x7f41, 0x7f47, 0x7936, 0xe36f, 0x99e1,
- 0x7f97, 0xe372, 0x7fa3, 0xe374, 0xe375, 0x455c, 0xe377, 0x4503,
- 0xe379, 0x7ffa, 0xe37b, 0x8005, 0x8008, 0x801d, 0x8028, 0x802f,
- 0xe381, 0xe382, 0x803b, 0x803c, 0x8061, 0xe386, 0x4989, 0xe388,
- 0xe389, 0xe38a, 0x6725, 0x80a7, 0xe38d, 0x8107, 0x811a, 0x58b0,
- 0xe391, 0x6c7f, 0xe393, 0xe394, 0x64e7, 0xe396, 0x8218, 0xe398,
- 0x6a53, 0xe39a, 0xe39b, 0x447a, 0x8229, 0xe39e, 0xe39f, 0xe3a0,
- 0x4ff9, 0xe3a2, 0x84e2, 0x8362, 0xe3a5, 0xe3a6, 0xe3a7, 0xe3a8,
- 0xe3a9, 0x82aa, 0x691b, 0xe3ac, 0x41db,
- /* 0x8f */
- 0x854b, 0x82d0, 0x831a, 0xe3b1, 0xe3b2, 0x36c1, 0xe3b4, 0xe3b5,
- 0x827b, 0x82e2, 0x8318, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd,
- 0x3dbf, 0x831d, 0x55ec, 0x8385, 0x450b, 0xe3c3, 0x83ac, 0x83c1,
- 0x83d3, 0x347e, 0xe3c8, 0x6a57, 0x855a, 0x3496, 0xe3cc, 0xe3cd,
- 0x8458, 0xe3cf, 0x8471, 0x3dd3, 0x44e4, 0x6aa7, 0x844a, 0xe3d5,
- 0x7958, 0x84a8, 0xe3d8, 0xe3d9, 0xe3da, 0x84de, 0x840f, 0x8391,
- 0x44a0, 0x8493, 0x84e4, 0xe3e1, 0x4240, 0xe3e3, 0x4543, 0x8534,
- 0x5af2, 0xe3e7, 0x4527, 0x8573, 0x4516, 0x67bf, 0x8616, 0xe3ed,
- 0xe3ee, 0x85c1, 0xe3f0, 0x8602, 0xe3f2, 0xe3f3, 0xe3f4, 0x456a,
- 0x8628, 0x3648, 0xe3f8, 0x53f7, 0xe3fa, 0x867e, 0x8771, 0xe3fd,
- 0x87ee, 0xe3ff, 0x87b1, 0x87da, 0x880f, 0x5661, 0x866c, 0x6856,
- 0x460f, 0x8845, 0x8846, 0xe409, 0xe40a, 0xe40b, 0x885e, 0x889c,
- 0x465b, 0x88b4, 0x88b5, 0x63c1, 0x88c5, 0x7777, 0xe414, 0x8987,
- 0x898a, 0x89a6, 0x89a9, 0x89a7, 0x89bc, 0xe41b, 0x89e7, 0xe41d,
- 0xe41e, 0x8a9c, 0x7793, 0x91fe, 0x8a90, 0xe423, 0x7ae9, 0xe425,
- 0xe426, 0x4713, 0xe428, 0x717c, 0x8b0c, 0x8b1f, 0xe42c, 0xe42d,
- 0x8b3f, 0x8b4c, 0x8b4d, 0x8aa9, 0xe432, 0x8b90, 0x8b9b, 0x8aaf,
- 0xe436, 0x4615, 0x884f, 0x8c9b, 0xe43a, 0xe43b, 0xe43c, 0x3725,
- 0xe43e, 0x8cd6, 0xe440, 0xe441, 0x8d12, 0x8d03, 0xe444, 0x8cdb,
- 0x705c, 0x8d11, 0xe448, 0x3ed0, 0x8d77,
- /* 0x90 */
- 0x8da9, 0xe44c, 0xe44d, 0xe44e, 0x3b7c, 0xe450, 0xe451, 0x7ae7,
- 0x8ead, 0x8eb6, 0x8ec3, 0x92d4, 0x8f19, 0x8f2d, 0xe459, 0xe45a,
- 0x8fa5, 0x9303, 0xe45d, 0xe45e, 0x8fb3, 0x492a, 0xe461, 0xe462,
- 0xe463, 0x5ef8, 0xe465, 0x8ff9, 0xe467, 0xe468, 0xe469, 0xe46a,
- 0x3980, 0xe46c, 0x9037, 0xe46e, 0xe46f, 0x9061, 0xe471, 0xe472,
- 0x90a8, 0xe474, 0x90c4, 0xe476, 0x90ae, 0x90fd, 0x9167, 0x3af0,
- 0x91a9, 0x91c4, 0x7cac, 0xe47e, 0xe47f, 0x920e, 0x6c9f, 0x9241,
- 0x9262, 0xe484, 0x92b9, 0xe486, 0xe487, 0xe488, 0xe489, 0xe48a,
- 0x932c, 0x936b, 0xe48d, 0xe48e, 0x708f, 0x5ac3, 0xe491, 0xe492,
- 0x4965, 0x9244, 0xe495, 0xe496, 0xe497, 0x9373, 0x945b, 0x8ebc,
- 0x9585, 0x95a6, 0x9426, 0x95a0, 0x6ff6, 0x42b9, 0xe4a1, 0xe4a2,
- 0xe4a3, 0xe4a4, 0x49df, 0x6c1c, 0x967b, 0x9696, 0x416c, 0x96a3,
- 0xe4ab, 0x61da, 0x96b6, 0x78f5, 0xe4af, 0x96bd, 0x53cc, 0x49a1,
- 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, 0xe4b8, 0xe4b9, 0xe4ba,
- 0x9731, 0x8642, 0x9736, 0x4a0f, 0x453d, 0x4585, 0xe4c1, 0x7075,
- 0x5b41, 0x971b, 0x975c, 0xe4c6, 0x9757, 0x5b4a, 0xe4c9, 0x975f,
- 0x9425, 0x50d0, 0xe4cd, 0xe4ce, 0x9789, 0x979f, 0x97b1, 0x97be,
- 0x97c0, 0x97d2, 0x97e0, 0xe4d6, 0x97ee, 0x741c, 0xe4d9, 0x97ff,
- 0x97f5, 0xe4dc, 0xe4dd, 0x4ad1, 0x9834, 0x9833, 0x984b, 0x9866,
- 0x3b0e, 0xe4e4, 0x3d51, 0xe4e6, 0xe4e7,
- /* 0x91 */
- 0xe4e8, 0x98ca, 0x98b7, 0x98c8, 0x98c7, 0x4aff, 0xe4ee, 0xe4ef,
- 0x55b0, 0x98e1, 0x98e6, 0x98ec, 0x9378, 0x9939, 0xe4f6, 0x4b72,
- 0xe4f8, 0xe4f9, 0x99f5, 0x9a0c, 0x9a3b, 0x9a10, 0x9a58, 0xe4ff,
- 0x36c4, 0xe501, 0xe502, 0x9ae0, 0x9ae2, 0xe505, 0x9af4, 0x4c0e,
- 0x9b14, 0x9b2d, 0xe50a, 0x5034, 0x9b34, 0xe50d, 0x38c3, 0xe50f,
- 0x9b50, 0x9b40, 0xe512, 0x5a45, 0xe514, 0x9b8e, 0xe516, 0x9c02,
- 0x9bff, 0x9c0c, 0xe51a, 0x9dd4, 0xe51c, 0xe51d, 0xe51e, 0xe51f,
- 0xe520, 0xe521, 0x9d7e, 0x9d83, 0xe524, 0x9e0e, 0x6888, 0x9dc4,
- 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0x9d39, 0xe52e, 0xe52f,
- 0x9e90, 0x9e95, 0x9e9e, 0x9ea2, 0x4d34, 0x9eaa, 0x9eaf, 0xe537,
- 0x9ec1, 0x3b60, 0x39e5, 0x3d1d, 0x4f32, 0x37be, 0xe53e, 0x9f02,
- 0x9f08, 0x4b96, 0x9424, 0xe543, 0x9f17, 0x9f16, 0x9f39, 0x569f,
- 0x568a, 0x9f45, 0x99b8, 0xe54b, 0x97f2, 0x847f, 0x9f62, 0x9f69,
- 0x7adc, 0x9f8e, 0x7216, 0x4bbe, 0xe554, 0xe555, 0x7177, 0xe557,
- 0xe558, 0xe559, 0x739e, 0xe55b, 0xe55c, 0x799f, 0xe55e, 0xe55f,
- 0x9369, 0x93f3, 0xe562, 0x92ec, 0x9381, 0x93cb, 0xe566, 0xe567,
- 0x7217, 0x3eeb, 0x7772, 0x7a43, 0x70d0, 0xe56d, 0xe56e, 0x717e,
- 0xe570, 0x70a3, 0xe572, 0xe573, 0x3ec7, 0xe575, 0xe576, 0xe577,
- 0x3722, 0xe579, 0xe57a, 0x36e1, 0xe57c, 0xe57d, 0xe57e, 0x3723,
- 0xe580, 0x575b, 0xe582, 0xe583, 0xe584,
- /* 0x92 */
- 0xe585, 0xe586, 0x8503, 0xe588, 0x8503, 0x8455, 0xe58b, 0xe58c,
- 0xe58d, 0xe58e, 0xe58f, 0xe590, 0x44f4, 0xe592, 0xe593, 0xe594,
- 0x67f9, 0x3733, 0x3c15, 0x3de7, 0x586c, 0xe59a, 0x6810, 0x4057,
- 0xe59d, 0xe59e, 0xe59f, 0xe5a0, 0xe5a1, 0x54cb, 0x569e, 0xe5a4,
- 0x5692, 0xe5a6, 0xe5a7, 0xe5a8, 0x93c6, 0xe5aa, 0x939c, 0x4ef8,
- 0x512b, 0x3819, 0xe5af, 0x4ebc, 0xe5b1, 0xe5b2, 0x4f4b, 0x4f8a,
- 0xe5b5, 0x5a68, 0xe5b7, 0xe5b8, 0x3999, 0xe5ba, 0xe5bb, 0x3435,
- 0x4f29, 0xe5be, 0xe5bf, 0xe5c0, 0x8ada, 0xe5c2, 0x4e98, 0x50cd,
- 0x510d, 0x4fa2, 0x4f03, 0xe5c8, 0xe5c9, 0x4f42, 0x502e, 0x506c,
- 0x5081, 0x4fcc, 0x4fe5, 0x5058, 0x50fc, 0x5159, 0x515b, 0x515d,
- 0x515e, 0x6e76, 0xe5d7, 0xe5d8, 0xe5d9, 0x6d72, 0xe5db, 0xe5dc,
- 0x51a8, 0x51c3, 0xe5df, 0x44dd, 0xe5e1, 0xe5e2, 0xe5e3, 0x8d7a,
- 0xe5e5, 0xe5e6, 0x5259, 0x52a4, 0xe5e9, 0x52e1, 0x936e, 0x467a,
- 0x718c, 0xe5ee, 0xe5ef, 0xe5f0, 0xe5f1, 0x69d1, 0xe5f3, 0x7479,
- 0x3ede, 0x7499, 0x7414, 0x7456, 0x7398, 0x4b8e, 0xe5fb, 0xe5fc,
- 0x53d0, 0x3584, 0x720f, 0xe600, 0x55b4, 0xe602, 0x54cd, 0xe604,
- 0x571d, 0x925d, 0x96f4, 0x9366, 0x57dd, 0x578d, 0x577f, 0x363e,
- 0x58cb, 0x5a99, 0xe60f, 0xe610, 0xe611, 0xe612, 0x5a2c, 0x59b8,
- 0x928f, 0x5a7e, 0x5acf, 0x5a12, 0xe619, 0xe61a, 0xe61b, 0xe61c,
- 0x36f5, 0x6d05, 0x7443, 0x5a21, 0xe621,
- /* 0x93 */
- 0x5a81, 0xe623, 0xe624, 0x93e0, 0x748c, 0xe627, 0x7105, 0x4972,
- 0x9408, 0xe62b, 0x93bd, 0x37a0, 0x5c1e, 0x5c9e, 0x5e5e, 0x5e48,
- 0xe632, 0xe633, 0xe634, 0x5ecd, 0x5b4f, 0xe637, 0xe638, 0x3701,
- 0xe63a, 0x36dd, 0xe63c, 0x36d3, 0x812a, 0xe63f, 0xe640, 0xe641,
- 0xe642, 0x5f0c, 0x5f0e, 0xe645, 0xe646, 0x5a6b, 0xe648, 0x5b44,
- 0x8614, 0xe64b, 0x8860, 0x607e, 0xe64e, 0xe64f, 0x5fdb, 0x3eb8,
- 0xe652, 0xe653, 0xe654, 0xe655, 0x61c0, 0xe657, 0xe658, 0xe659,
- 0x6199, 0x6198, 0x6075, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0x6471,
- 0xe662, 0xe663, 0x3a29, 0xe665, 0xe666, 0xe667, 0xe668, 0x6337,
- 0xe66a, 0x64b6, 0x6331, 0x63d1, 0xe66e, 0xe66f, 0x62a4, 0xe671,
- 0x643b, 0x656b, 0x6972, 0x3bf4, 0xe676, 0xe677, 0xe678, 0xe679,
- 0x550d, 0xe67b, 0xe67c, 0xe67d, 0x66ce, 0xe67f, 0xe680, 0x3ae0,
- 0x4190, 0xe683, 0xe684, 0xe685, 0xe686, 0xe687, 0xe688, 0x78ee,
- 0xe68a, 0xe68b, 0xe68c, 0x3464, 0xe68e, 0xe68f, 0xe690, 0x668e,
- 0xe692, 0x666b, 0x4b93, 0x6630, 0xe696, 0xe697, 0x6663, 0xe699,
- 0xe69a, 0x661e, 0xe69c, 0x38d1, 0xe69e, 0xe69f, 0x3b99, 0xe6a1,
- 0xe6a2, 0x74d0, 0x3b96, 0x678f, 0xe6a6, 0x68b6, 0x681e, 0x3bc4,
- 0x6abe, 0x3863, 0xe6ac, 0xe6ad, 0x6a33, 0x6a52, 0x6ac9, 0x6b05,
- 0xe6b2, 0x6511, 0x6898, 0x6a4c, 0x3bd7, 0x6a7a, 0x6b57, 0xe6b9,
- 0xe6ba, 0x93a0, 0x92f2, 0xe6bd, 0xe6be,
- /* 0x94 */
- 0x9289, 0xe6c0, 0xe6c1, 0x9467, 0x6da5, 0x6f0b, 0xe6c5, 0x6d67,
- 0xe6c7, 0x3d8f, 0x6e04, 0xe6ca, 0x5a3d, 0x6e0a, 0x5847, 0x6d24,
- 0x7842, 0x713b, 0xe6d1, 0xe6d2, 0x70f1, 0x7250, 0x7287, 0x7294,
- 0xe6d7, 0xe6d8, 0x5179, 0xe6da, 0xe6db, 0x747a, 0xe6dd, 0xe6de,
- 0xe6df, 0xe6e0, 0xe6e1, 0x3f06, 0x3eb1, 0xe6e4, 0xe6e5, 0xe6e6,
- 0x60a7, 0x3ef3, 0x74cc, 0x743c, 0x9387, 0x7437, 0x449f, 0xe6ee,
- 0x4551, 0x7583, 0x3f63, 0xe6f2, 0xe6f3, 0x3f58, 0x7555, 0x7673,
- 0xe6f7, 0x3b19, 0x7468, 0xe6fa, 0xe6fb, 0xe6fc, 0x3afb, 0x3dcd,
- 0xe6ff, 0x3eff, 0xe701, 0xe702, 0x91fa, 0x5732, 0x9342, 0xe706,
- 0xe707, 0x50df, 0xe709, 0xe70a, 0x7778, 0xe70c, 0x770e, 0x770f,
- 0x777b, 0xe710, 0xe711, 0x3a5e, 0xe713, 0x7438, 0x749b, 0x3ebf,
- 0xe717, 0xe718, 0x40c8, 0xe71a, 0xe71b, 0x9307, 0xe71d, 0x781e,
- 0x788d, 0x7888, 0x78d2, 0x73d0, 0x7959, 0xe724, 0xe725, 0x410e,
- 0x799b, 0x8496, 0x79a5, 0x6a2d, 0xe72b, 0x7a3a, 0x79f4, 0x416e,
- 0xe72f, 0x4132, 0x9235, 0x79f1, 0xe733, 0xe734, 0xe735, 0xe736,
- 0xe737, 0x3597, 0x556b, 0x3570, 0x36aa, 0xe73c, 0xe73d, 0x7ae2,
- 0x5a59, 0xe740, 0xe741, 0xe742, 0x5a0d, 0xe744, 0x78f0, 0x5a2a,
- 0xe747, 0x7afe, 0x41f9, 0x7c5d, 0x7c6d, 0x4211, 0xe74d, 0xe74e,
- 0xe74f, 0x7ccd, 0xe751, 0xe752, 0x7c8e, 0x7c7c, 0x7cae, 0x6ab2,
- 0x7ddc, 0x7e07, 0x7dd3, 0x7f4e, 0xe75b,
- /* 0x95 */
- 0xe75c, 0xe75d, 0x7d97, 0xe75f, 0x426a, 0xe761, 0xe762, 0x67d6,
- 0xe764, 0xe765, 0x57c4, 0xe767, 0xe768, 0xe769, 0x7fdd, 0x7b27,
- 0xe76c, 0xe76d, 0xe76e, 0x7b0c, 0xe770, 0x99e6, 0x8645, 0x9a63,
- 0x6a1c, 0xe775, 0x39e2, 0xe777, 0xe778, 0x9a1f, 0xe77a, 0x8480,
- 0xe77c, 0xe77d, 0x44ea, 0x8137, 0x4402, 0x80c6, 0x8109, 0x8142,
- 0xe784, 0x98c3, 0xe786, 0x8262, 0x8265, 0xe789, 0x8453, 0xe78b,
- 0x8610, 0xe78d, 0x5a86, 0x417f, 0xe790, 0x5b2b, 0xe792, 0x5ae4,
- 0xe794, 0x86a0, 0xe796, 0xe797, 0x882d, 0xe799, 0x5a02, 0x886e,
- 0x4f45, 0x8887, 0x88bf, 0x88e6, 0x8965, 0x894d, 0xe7a2, 0x8954,
- 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7, 0xe7a8, 0xe7a9, 0x3ead, 0x84a3,
- 0x46f5, 0x46cf, 0x37f2, 0x8a3d, 0x8a1c, 0xe7b1, 0x5f4d, 0x922b,
- 0xe7b4, 0x65d4, 0x7129, 0x70c4, 0xe7b8, 0x9d6d, 0x8c9f, 0x8ce9,
- 0xe7bc, 0x599a, 0x77c3, 0x59f0, 0x436e, 0x36d4, 0x8e2a, 0x8ea7,
- 0xe7c4, 0x8f30, 0x8f4a, 0x42f4, 0x6c58, 0x6fbb, 0xe7ca, 0x489b,
- 0x6f79, 0x6e8b, 0xe7ce, 0x9be9, 0x36b5, 0xe7d1, 0x90bb, 0x9097,
- 0x5571, 0x4906, 0x91bb, 0x9404, 0xe7d8, 0x4062, 0xe7da, 0x9427,
- 0xe7dc, 0xe7dd, 0x84e5, 0x8a2b, 0x9599, 0x95a7, 0x9597, 0x9596,
- 0xe7e4, 0x7445, 0x3ec2, 0xe7e7, 0xe7e8, 0xe7e9, 0x3ee7, 0xe7eb,
- 0x968f, 0xe7ed, 0xe7ee, 0xe7ef, 0x3ecc, 0xe7f1, 0xe7f2, 0xe7f3,
- 0x7412, 0x746b, 0x3efc, 0x9741, 0xe7f8,
- /* 0x96 */
- 0x6847, 0x4a1d, 0xe7fb, 0xe7fc, 0x975d, 0x9368, 0xe7ff, 0xe800,
- 0xe801, 0xe802, 0x92ba, 0x5b11, 0x8b69, 0x493c, 0x73f9, 0xe808,
- 0x979b, 0x9771, 0x9938, 0xe80c, 0x5dc1, 0xe80e, 0xe80f, 0x981f,
- 0xe811, 0x92f6, 0xe813, 0x91e5, 0x44c0, 0xe816, 0xe817, 0xe818,
- 0x98dc, 0xe81a, 0x3f00, 0x922a, 0x4925, 0x8414, 0x993b, 0x994d,
- 0xe821, 0x3dfd, 0x999b, 0x4b6f, 0x99aa, 0x9a5c, 0xe827, 0xe828,
- 0x6a8f, 0x9a21, 0x5afe, 0x9a2f, 0xe82d, 0x4b90, 0xe82f, 0x99bc,
- 0x4bbd, 0x4b97, 0x937d, 0x5872, 0xe835, 0x5822, 0xe837, 0xe838,
- 0x7844, 0xe83a, 0xe83b, 0x68c5, 0x3d7d, 0x9458, 0x3927, 0x6150,
- 0xe841, 0xe842, 0x6107, 0x9c4f, 0x9c53, 0x9c7b, 0x9c35, 0x9c10,
- 0x9b7f, 0x9bcf, 0xe84b, 0x9b9f, 0xe84d, 0xe84e, 0x9d21, 0x4cae,
- 0xe851, 0x9e18, 0x4cb0, 0x9d0c, 0xe855, 0xe856, 0xe857, 0xe858,
- 0x9da5, 0x84bd, 0xe85b, 0xe85c, 0xe85d, 0x85fc, 0x4533, 0xe860,
- 0xe861, 0xe862, 0x8420, 0x85ee, 0xe865, 0xe866, 0xe867, 0x79e2,
- 0xe869, 0xe86a, 0x492d, 0xe86c, 0x3d62, 0x93db, 0x92be, 0x9348,
- 0xe871, 0x78b9, 0x9277, 0x944d, 0x4fe4, 0x3440, 0x9064, 0xe878,
- 0x783d, 0x7854, 0x78b6, 0x784b, 0xe87d, 0xe87e, 0xe87f, 0x369a,
- 0x4f72, 0x6fda, 0x6fd9, 0x701e, 0x701e, 0x5414, 0xe887, 0x57bb,
- 0x58f3, 0x578a, 0x9d16, 0x57d7, 0x7134, 0x34af, 0xe88f, 0x71eb,
- 0xe891, 0xe892, 0x5b28, 0xe894, 0xe895,
- /* 0x97 */
- 0x610c, 0x5ace, 0x5a0b, 0x42bc, 0xe89a, 0x372c, 0x4b7b, 0xe89d,
- 0x93bb, 0x93b8, 0xe8a0, 0xe8a1, 0x8472, 0xe8a3, 0xe8a4, 0xe8a5,
- 0xe8a6, 0xe8a7, 0x5994, 0xe8a9, 0xe8aa, 0x7da8, 0xe8ac, 0xe8ad,
- 0xe8ae, 0xe8af, 0xe8b0, 0x92e5, 0x73e2, 0x3ee9, 0x74b4, 0xe8b5,
- 0xe8b6, 0x3ee1, 0xe8b8, 0x6ad8, 0x73f3, 0x73fb, 0x3ed6, 0xe8bd,
- 0xe8be, 0xe8bf, 0xe8c0, 0xe8c1, 0xe8c2, 0xe8c3, 0x7448, 0xe8c5,
- 0x70a5, 0xe8c7, 0x9284, 0x73e6, 0x935f, 0xe8cb, 0x9331, 0xe8cd,
- 0xe8ce, 0x9386, 0xe8d0, 0xe8d1, 0x4935, 0xe8d3, 0x716b, 0xe8d5,
- 0xe8d6, 0x56a4, 0xe8d8, 0xe8d9, 0xe8da, 0x5502, 0x79c4, 0xe8dd,
- 0x7dfe, 0xe8df, 0xe8e0, 0xe8e1, 0x452e, 0x9401, 0x370a, 0xe8e5,
- 0xe8e6, 0x59b0, 0xe8e8, 0xe8e9, 0xe8ea, 0x5aa1, 0x36e2, 0xe8ed,
- 0x36b0, 0x925f, 0x5a79, 0xe8f1, 0xe8f2, 0x9374, 0x3ccd, 0xe8f5,
- 0x4a96, 0x398a, 0x50f4, 0x3d69, 0x3d4c, 0xe8fb, 0x7175, 0x42fb,
- 0xe8fe, 0x6e0f, 0xe900, 0x44eb, 0x6d57, 0xe903, 0x7067, 0x6caf,
- 0x3cd6, 0xe907, 0xe908, 0x6e02, 0x6f0c, 0x3d6f, 0xe90c, 0x7551,
- 0x36bc, 0x34c8, 0x4680, 0x3eda, 0x4871, 0x59c4, 0x926e, 0x493e,
- 0x8f41, 0xe917, 0xe918, 0x5812, 0x57c8, 0x36d6, 0xe91c, 0x70fe,
- 0xe91e, 0xe91f, 0xe920, 0xe921, 0xe922, 0x68b9, 0x6967, 0xe925,
- 0xe926, 0xe927, 0xe928, 0xe929, 0xe92a, 0xe92b, 0xe92c, 0x6a1a,
- 0xe92e, 0xe92f, 0x843e, 0x44df, 0x44ce,
- /* 0x98 */
- 0xe933, 0xe934, 0xe935, 0xe936, 0x6f17, 0xe938, 0x833d, 0xe93a,
- 0x83ed, 0xe93c, 0xe93d, 0xe93e, 0x5989, 0x5a82, 0xe941, 0x5a61,
- 0x5a71, 0xe944, 0xe945, 0x372d, 0x59ef, 0xe948, 0x36c7, 0x718e,
- 0x9390, 0x669a, 0xe94d, 0x5a6e, 0x5a2b, 0xe950, 0x6a2b, 0xe952,
- 0xe953, 0xe954, 0xe955, 0x711d, 0xe957, 0xe958, 0x4fb0, 0xe95a,
- 0x5cc2, 0xe95c, 0xe95d, 0xe95e, 0x6a0c, 0xe960, 0xe961, 0x70a6,
- 0x7133, 0xe964, 0x3da5, 0x6cdf, 0xe967, 0xe968, 0x7e65, 0x59eb,
- 0x5d2f, 0x3df3, 0x5f5c, 0xe96e, 0xe96f, 0x7da4, 0x8426, 0x5485,
- 0xe973, 0xe974, 0xe975, 0x577e, 0xe977, 0xe978, 0x3fe5, 0xe97a,
- 0xe97b, 0x7003, 0xe97d, 0x5d70, 0x738f, 0x7cd3, 0xe981, 0xe982,
- 0x4fc8, 0x7fe7, 0x72cd, 0x7310, 0xe987, 0x7338, 0x7339, 0xe98a,
- 0x7341, 0x7348, 0x3ea9, 0xe98e, 0x906c, 0x71f5, 0xe991, 0x73e1,
- 0x81f6, 0x3eca, 0x770c, 0x3ed1, 0x6ca2, 0x56fd, 0x7419, 0x741e,
- 0x741f, 0x3ee2, 0x3ef0, 0x3ef4, 0x3efa, 0x74d3, 0x3f0e, 0x3f53,
- 0x7542, 0x756d, 0x7572, 0x758d, 0x3f7c, 0x75c8, 0x75dc, 0x3fc0,
- 0x764d, 0x3fd7, 0x7674, 0x3fdc, 0x767a, 0xe9b0, 0x7188, 0x5623,
- 0x8980, 0x5869, 0x401d, 0x7743, 0x4039, 0x6761, 0x4045, 0x35db,
- 0x7798, 0x406a, 0x406f, 0x5c5e, 0x77be, 0x77cb, 0x58f2, 0x7818,
- 0x70b9, 0x781c, 0x40a8, 0x7839, 0x7847, 0x7851, 0x7866, 0x8448,
- 0xe9cb, 0x7933, 0x6803, 0x7932, 0x4103,
- /* 0x99 */
- 0x4109, 0x7991, 0x7999, 0x8fbb, 0x7a06, 0x8fbc, 0x4167, 0x7a91,
- 0x41b2, 0x7abc, 0x8279, 0x41c4, 0x7acf, 0x7adb, 0x41cf, 0x4e21,
- 0x7b62, 0x7b6c, 0x7b7b, 0x7c12, 0x7c1b, 0x4260, 0x427a, 0x7c7b,
- 0x7c9c, 0x428c, 0x7cb8, 0x4294, 0x7ced, 0x8f93, 0x70c0, 0xe9ef,
- 0x7dcf, 0x7dd4, 0x7dd0, 0x7dfd, 0x7fae, 0x7fb4, 0x729f, 0x4397,
- 0x8020, 0x8025, 0x7b39, 0x802e, 0x8031, 0x8054, 0x3dcc, 0x57b4,
- 0x70a0, 0x80b7, 0x80e9, 0x43ed, 0x810c, 0x732a, 0x810e, 0x8112,
- 0x7560, 0x8114, 0x4401, 0x3b39, 0x8156, 0x8159, 0x815a, 0x4413,
- 0x583a, 0x817c, 0x8184, 0x4425, 0x8193, 0x442d, 0x81a5, 0x57ef,
- 0x81c1, 0x81e4, 0x8254, 0x448f, 0x82a6, 0x8276, 0x82ca, 0x82d8,
- 0x82ff, 0x44b0, 0x8357, 0x9669, 0x698a, 0x8405, 0x70f5, 0x8464,
- 0x60e3, 0x8488, 0x4504, 0x84be, 0x84e1, 0x84f8, 0x8510, 0x8538,
- 0x8552, 0x453b, 0x856f, 0x8570, 0x85e0, 0x4577, 0x8672, 0x8692,
- 0x86b2, 0x86ef, 0x9645, 0x878b, 0x4606, 0x4617, 0x88ae, 0x88ff,
- 0x8924, 0x8947, 0x8991, 0xea43, 0x8a29, 0x8a38, 0x8a94, 0x8ab4,
- 0x8c51, 0x8cd4, 0x8cf2, 0x8d1c, 0x4798, 0x585f, 0x8dc3, 0x47ed,
- 0x4eee, 0x8e3a, 0x55d8, 0x5754, 0x8e71, 0x55f5, 0x8eb0, 0x4837,
- 0x8ece, 0x8ee2, 0x8ee4, 0x8eed, 0x8ef2, 0x8fb7, 0x8fc1, 0x8fca,
- 0x8fcc, 0x9033, 0x99c4, 0x48ad, 0x98e0, 0x9213, 0x491e, 0x9228,
- 0x9258, 0x926b, 0x92b1, 0x92ae, 0x92bf,
- /* 0x9a */
- 0x92e3, 0x92eb, 0x92f3, 0x92f4, 0x92fd, 0x9343, 0x9384, 0x93ad,
- 0x4945, 0x4951, 0x9ebf, 0x9417, 0x5301, 0x941d, 0x942d, 0x943e,
- 0x496a, 0x9454, 0x9479, 0x952d, 0x95a2, 0x49a7, 0x95f4, 0x9633,
- 0x49e5, 0x67a0, 0x4a24, 0x9740, 0x4a35, 0x97b2, 0x97c2, 0x5654,
- 0x4ae4, 0x60e8, 0x98b9, 0x4b19, 0x98f1, 0x5844, 0x990e, 0x9919,
- 0x51b4, 0x991c, 0x9937, 0x9942, 0x995d, 0x9962, 0x4b70, 0x99c5,
- 0x4b9d, 0x9a3c, 0x9b0f, 0x7a83, 0x9b69, 0x9b81, 0x9bdd, 0x9bf1,
- 0x9bf4, 0x4c6d, 0x9c20, 0x376f, 0xeaa9, 0x9d49, 0x9c3a, 0x9efe,
- 0x5650, 0x9d93, 0x9dbd, 0x9dc0, 0x9dfc, 0x94f6, 0x8fb6, 0x9e7b,
- 0x9eac, 0x9eb1, 0x9ebd, 0x9ec6, 0x94dc, 0x9ee2, 0x9ef1, 0x9ef8,
- 0x7ac8, 0x9f44, 0xeabf, 0xeac0, 0xeac1, 0x691a, 0x94c3, 0x59ac,
- 0xeac5, 0x5840, 0x94c1, 0x37b9, 0xeac9, 0xeaca, 0xeacb, 0xeacc,
- 0x5757, 0x7173, 0xeacf, 0xead0, 0xead1, 0x546a, 0xead3, 0xead4,
- 0x549e, 0xead6, 0xead7, 0xead8, 0xead9, 0xeada, 0x60e7, 0xeadc,
- 0x567a, 0xeade, 0xeadf, 0xeae0, 0xeae1, 0xeae2, 0xeae3, 0x6955,
- 0x9c2f, 0x87a5, 0xeae7, 0xeae8, 0xeae9, 0xeaea, 0xeaeb, 0xeaec,
- 0x5c20, 0xeaee, 0x5e0b, 0xeaf0, 0xeaf1, 0xeaf2, 0x671e, 0xeaf4,
- 0xeaf5, 0xeaf6, 0x3647, 0xeaf8, 0xeaf9, 0xeafa, 0xeafb, 0x5364,
- 0x84ad, 0xeafe, 0xeaff, 0xeb00, 0x8b81, 0xeb02, 0xeb03, 0xeb04,
- 0xeb05, 0x4e78, 0x70bb, 0xeb08, 0xeb09,
- /* 0x9b */
- 0xeb0a, 0xeb0b, 0xeb0c, 0xeb0d, 0xeb0e, 0xeb0f, 0x62c3, 0xeb11,
- 0xeb12, 0x7198, 0x6855, 0xeb15, 0x69e9, 0x36c8, 0xeb18, 0xeb19,
- 0xeb1a, 0xeb1b, 0xeb1c, 0xeb1d, 0x82fd, 0xeb1f, 0xeb20, 0xeb21,
- 0x89a5, 0xeb23, 0x8fa0, 0xeb25, 0x97b8, 0xeb27, 0x9847, 0x9abd,
- 0xeb2a, 0xeb2b, 0xeb2c, 0xeb2d, 0xeb2e, 0xeb2f, 0xeb30, 0xeb31,
- 0xeb32, 0xeb33, 0xeb34, 0xeb35, 0xeb36, 0xeb37, 0xeb38, 0xeb39,
- 0x5fb1, 0x6648, 0x66bf, 0xeb3d, 0xeb3e, 0xeb3f, 0x7201, 0xeb41,
- 0x77d7, 0xeb43, 0xeb44, 0x7e87, 0xeb46, 0x58b5, 0x670e, 0x6918,
- 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, 0xeb50, 0x48d0,
- 0x4ab8, 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, 0xeb58, 0xeb59,
- 0xeb5a, 0xeb5b, 0x51d2, 0xeb5d, 0x599f, 0xeb5f, 0x3bbe, 0xeb61,
- 0xeb62, 0xeb63, 0x5788, 0xeb65, 0x399b, 0xeb67, 0xeb68, 0xeb69,
- 0x3762, 0xeb6b, 0x8b5e, 0xeb6d, 0x99d6, 0xeb6f, 0xeb70, 0xeb71,
- 0x7209, 0xeb73, 0xeb74, 0x5965, 0xeb76, 0xeb77, 0xeb78, 0x8eda,
- 0xeb7a, 0x528f, 0x573f, 0x7171, 0xeb7e, 0xeb7f, 0xeb80, 0xeb81,
- 0x55bc, 0xeb83, 0xeb84, 0xeb85, 0x91d4, 0x3473, 0xeb88, 0xeb89,
- 0xeb8a, 0x4718, 0xeb8c, 0xeb8d, 0xeb8e, 0xeb8f, 0xeb90, 0x5066,
- 0x34fb, 0xeb93, 0x60de, 0xeb95, 0x477c, 0xeb97, 0xeb98, 0xeb99,
- 0xeb9a, 0xeb9b, 0x57a1, 0x7151, 0x6fb6, 0xeb9f, 0xeba0, 0x9056,
- 0xeba2, 0xeba3, 0x8b62, 0xeba5, 0xeba6,
- /* 0x9c */
- 0x5d5b, 0xeba8, 0x8f36, 0xebaa, 0xebab, 0x8aea, 0xebad, 0xebae,
- 0xebaf, 0xebb0, 0x4bc0, 0xebb2, 0xebb3, 0xebb4, 0x9465, 0xebb6,
- 0x6195, 0x5a27, 0xebb9, 0x4fbb, 0x56b9, 0xebbc, 0xebbd, 0x4e6a,
- 0xebbf, 0x9656, 0x6d8f, 0xebc2, 0x3618, 0x8977, 0xebc5, 0xebc6,
- 0xebc7, 0xebc8, 0x71df, 0xebca, 0x7b42, 0xebcc, 0xebcd, 0xebce,
- 0x9104, 0xebd0, 0x7a45, 0x9df0, 0xebd3, 0x9a26, 0xebd5, 0x365f,
- 0xebd7, 0xebd8, 0x7983, 0xebda, 0xebdb, 0x5d2c, 0xebdd, 0x83cf,
- 0xebdf, 0x46d0, 0xebe1, 0x753b, 0x8865, 0xebe4, 0x58b6, 0x371c,
- 0xebe7, 0xebe8, 0xebe9, 0x3c54, 0xebeb, 0xebec, 0x9281, 0xebee,
- 0xebef, 0x9330, 0xebf1, 0xebf2, 0x6c39, 0x949f, 0xebf5, 0xebf6,
- 0x8827, 0x88f5, 0xebf9, 0xebfa, 0xebfb, 0x6eb8, 0xebfd, 0xebfe,
- 0x39a4, 0x36b9, 0x5c10, 0x79e3, 0x453f, 0x66b6, 0xec05, 0xec06,
- 0x8943, 0xec08, 0xec09, 0x56d6, 0x40df, 0xec0c, 0x39a1, 0xec0e,
- 0xec0f, 0xec10, 0x71ad, 0x8366, 0xec13, 0xec14, 0x5a67, 0x4cb7,
- 0xec17, 0xec18, 0xec19, 0xec1a, 0xec1b, 0xec1c, 0xec1d, 0x7b43,
- 0x797e, 0xec20, 0x6fb5, 0xec22, 0x6a03, 0xec24, 0x53a2, 0xec26,
- 0x93bf, 0x6836, 0x975d, 0xec2a, 0xec2b, 0xec2c, 0xec2d, 0xec2e,
- 0xec2f, 0x5d85, 0xec31, 0xec32, 0x5715, 0x9823, 0xec35, 0x5dab,
- 0xec37, 0x65be, 0x69d5, 0x53d2, 0xec3b, 0xec3c, 0x3c11, 0x6736,
- 0xec3f, 0xec40, 0xec41, 0xec42, 0xec43,
- /* 0x9d */
- 0xec44, 0xec45, 0xec46, 0xec47, 0xec48, 0xec49, 0x35ca, 0xec4b,
- 0xec4c, 0x48fa, 0x63e6, 0xec4f, 0x7808, 0x9255, 0xec52, 0x43f2,
- 0xec54, 0x43df, 0xec56, 0xec57, 0xec58, 0x59f8, 0xec5a, 0x8f0b,
- 0xec5c, 0xec5d, 0x7b51, 0xec5f, 0xec60, 0x3df7, 0xec62, 0xec63,
- 0x8fd0, 0x728f, 0x568b, 0xec67, 0xec68, 0xec69, 0xec6a, 0xec6b,
- 0xec6c, 0xec6d, 0xec6e, 0xec6f, 0xec70, 0xec71, 0xec72, 0xec73,
- 0x7e9f, 0xec75, 0xec76, 0x4ca4, 0x9547, 0xec79, 0x71a2, 0xec7b,
- 0x4d91, 0x9012, 0xec7e, 0x4d9c, 0xec80, 0x8fbe, 0x55c1, 0x8fba,
- 0xec84, 0x8fb9, 0xec86, 0x4509, 0x7e7f, 0x6f56, 0x6ab1, 0x4eea,
- 0x34e4, 0xec8d, 0xec8e, 0x373a, 0x8e80, 0xec91, 0xec92, 0xec93,
- 0xec94, 0xec95, 0xec96, 0x3deb, 0xec98, 0xec99, 0xec9a, 0xec9b,
- 0x4e9a, 0xec9d, 0xec9e, 0x56bf, 0xeca0, 0x8e0e, 0x5b6d, 0xeca3,
- 0xeca4, 0x63de, 0x62d0, 0xeca7, 0xeca8, 0x6530, 0x562d, 0xecab,
- 0x541a, 0xecad, 0x3dc6, 0xecaf, 0x4c7d, 0x5622, 0x561e, 0x7f49,
- 0xecb4, 0x5975, 0xecb6, 0x8770, 0x4e1c, 0xecb9, 0xecba, 0xecbb,
- 0x8117, 0x9d5e, 0x8d18, 0x763b, 0x9c45, 0x764e, 0x77b9, 0x9345,
- 0x5432, 0x8148, 0x82f7, 0x5625, 0x8132, 0x8418, 0x80bd, 0x55ea,
- 0x7962, 0x5643, 0x5416, 0xeccf, 0x35ce, 0x5605, 0x55f1, 0x66f1,
- 0xecd4, 0x362d, 0x7534, 0x55f0, 0x55ba, 0x5497, 0x5572, 0xecdb,
- 0xecdc, 0x5ed0, 0xecde, 0xecdf, 0xece0,
- /* 0x9e */
- 0xece1, 0x9eab, 0x7d5a, 0x55de, 0xece5, 0x629d, 0x976d, 0x5494,
- 0x8ccd, 0x71f6, 0x9176, 0x63fc, 0x63b9, 0x63fe, 0x5569, 0xecf0,
- 0x9c72, 0xecf2, 0x519a, 0x34df, 0xecf5, 0x51a7, 0x544d, 0x551e,
- 0x5513, 0x7666, 0x8e2d, 0xecfc, 0x75b1, 0x80b6, 0x8804, 0x8786,
- 0x88c7, 0x81b6, 0x841c, 0xed04, 0x44ec, 0x7304, 0xed07, 0x5b90,
- 0x830b, 0xed0a, 0x567b, 0xed0c, 0xed0d, 0xed0e, 0xed0f, 0xed10,
- 0xed11, 0x9170, 0xed13, 0x9208, 0xed15, 0xed16, 0xed17, 0xed18,
- 0x7266, 0xed1a, 0x474e, 0xed1c, 0xed1d, 0xed1e, 0x40fa, 0x9c5d,
- 0x651f, 0xed22, 0x48f3, 0xed24, 0xed25, 0xed26, 0xed27, 0x6062,
- 0xed29, 0xed2a, 0xed2b, 0xed2c, 0xed2d, 0x71a3, 0x7e8e, 0x9d50,
- 0x4e1a, 0x4e04, 0x3577, 0x5b0d, 0x6cb2, 0x5367, 0x36ac, 0x39dc,
- 0x537d, 0x36a5, 0xed3b, 0x589a, 0xed3d, 0x822d, 0x544b, 0x57aa,
- 0xed41, 0xed42, 0xed43, 0x3a52, 0xed45, 0x7374, 0xed47, 0x4d09,
- 0x9bed, 0xed4a, 0xed4b, 0x4c5b, 0xed4d, 0xed4e, 0xed4f, 0x845c,
- 0xed51, 0xed52, 0xed53, 0xed54, 0x632e, 0x7d25, 0xed57, 0xed58,
- 0x3a2a, 0x9008, 0x52cc, 0x3e74, 0x367a, 0x45e9, 0xed5f, 0x7640,
- 0x5af0, 0xed62, 0x787a, 0x47b6, 0x58a7, 0x40bf, 0x567c, 0x9b8b,
- 0x5d74, 0x7654, 0xed6b, 0x9e85, 0x4ce1, 0x75f9, 0x37fb, 0x6119,
- 0xed71, 0xed72, 0xed73, 0x565d, 0xed75, 0x57a7, 0xed77, 0xed78,
- 0x5234, 0xed7a, 0x35ad, 0x6c4a, 0x9d7c,
- /* 0x9f */
- 0x7c56, 0x9b39, 0x57de, 0xed81, 0x5c53, 0x64d3, 0xed84, 0xed85,
- 0xed86, 0x86ad, 0xed88, 0xed89, 0xed8a, 0xed8b, 0xed8c, 0x51fe,
- 0xed8e, 0x5d8e, 0x9703, 0xed91, 0x9e81, 0x904c, 0x7b1f, 0x9b02,
- 0x5cd1, 0x7ba3, 0x6268, 0x6335, 0x9aff, 0x7bcf, 0x9b2a, 0x7c7e,
- 0x9b2e, 0x7c42, 0x7c86, 0x9c15, 0x7bfc, 0x9b09, 0x9f17, 0x9c1b,
- 0xeda6, 0x9f5a, 0x5573, 0x5bc3, 0x4ffd, 0x9e98, 0x4ff2, 0x5260,
- 0x3e06, 0x52d1, 0x5767, 0x5056, 0x59b7, 0x5e12, 0x97c8, 0x9dab,
- 0x8f5c, 0x5469, 0x97b4, 0x9940, 0x97ba, 0x532c, 0x6130, 0x692c,
- 0x53da, 0x9c0a, 0x9d02, 0x4c3b, 0x9641, 0x6980, 0x50a6, 0x7546,
- 0xedc6, 0x99da, 0x5273, 0xedc9, 0x9159, 0x9681, 0x915c, 0xedcd,
- 0x9151, 0xedcf, 0x637f, 0xedd1, 0x6aca, 0x5611, 0x918e, 0x757a,
- 0x6285, 0xedd7, 0x734f, 0x7c70, 0xedda, 0xeddb, 0xeddc, 0xeddd,
- 0x76d6, 0x9b9d, 0x4e2a, 0xede1, 0x83be, 0x8842, 0xede4, 0x5c4a,
- 0x69c0, 0x50ed, 0x577a, 0x521f, 0x5df5, 0x4ece, 0x6c31, 0xeded,
- 0x4f39, 0x549c, 0x54da, 0x529a, 0x8d82, 0x35fe, 0x5f0c, 0x35f3,
- 0xedf6, 0x6b52, 0x917c, 0x9fa5, 0x9b97, 0x982e, 0x98b4, 0x9aba,
- 0x9ea8, 0x9e84, 0x717a, 0x7b14, 0xee02, 0x6bfa, 0x8818, 0x7f78,
- 0xee06, 0x5620, 0xee08, 0x8e77, 0x9f53, 0xee0b, 0x8dd4, 0x8e4f,
- 0x9e1c, 0x8e01, 0x6282, 0xee11, 0x8e28, 0x8e75, 0x7ad3, 0xee15,
- 0x7a3e, 0x78d8, 0x6cea, 0x8a67, 0x7607,
- /* 0xa0 */
- 0xee1b, 0x9f26, 0x6cce, 0x87d6, 0x75c3, 0xee20, 0x7853, 0xee22,
- 0x8d0c, 0x72e2, 0x7371, 0x8b2d, 0x7302, 0x74f1, 0x8ceb, 0xee2a,
- 0x862f, 0x5fba, 0x88a0, 0x44b7, 0xee2f, 0xee30, 0xee31, 0xee32,
- 0x8a7e, 0xee34, 0xee35, 0x60fd, 0x7667, 0x9ad7, 0x9d44, 0x936e,
- 0x9b8f, 0x87f5, 0xee3d, 0x880f, 0x8cf7, 0x732c, 0x9721, 0x9bb0,
- 0x35d6, 0x72b2, 0x4c07, 0x7c51, 0x994a, 0xee48, 0x6159, 0x4c04,
- 0x9e96, 0x617d, 0xee4d, 0x575f, 0x616f, 0x62a6, 0x6239, 0x62ce,
- 0x3a5c, 0x61e2, 0x53aa, 0xee56, 0x6364, 0x6802, 0x35d2, 0x5d57,
- 0xee5b, 0x8fda, 0xee5d, 0xee5e, 0x50d9, 0xee60, 0x7906, 0x5332,
- 0x9638, 0xee64, 0x4065, 0xee66, 0x77fe, 0xee68, 0x7cc2, 0xee6a,
- 0x7cda, 0x7a2d, 0x8066, 0x8063, 0x7d4d, 0x7505, 0x74f2, 0x8994,
- 0x821a, 0x670c, 0x8062, 0xee76, 0x805b, 0x74f0, 0x8103, 0x7724,
- 0x8989, 0xee7c, 0x7553, 0xee7e, 0x87a9, 0x87ce, 0x81c8, 0x878c,
- 0x8a49, 0x8cad, 0x8b43, 0x772b, 0x74f8, 0x84da, 0x3635, 0x69b2,
- 0x8da6, 0xee8c, 0x89a9, 0x7468, 0x6db9, 0x87c1, 0xee91, 0x74e7,
- 0x3ddb, 0x7176, 0x60a4, 0x619c, 0x3cd1, 0x7162, 0x6077, 0xee9a,
- 0x7f71, 0xee9c, 0x7250, 0x60e9, 0x4b7e, 0x5220, 0x3c18, 0xeea2,
- 0xeea3, 0xeea4, 0xeea5, 0xeea6, 0xeea7, 0xeea8, 0xeea9, 0xeeaa,
- 0x5cc1, 0xeeac, 0xeead, 0xeeae, 0xeeaf, 0xeeb0, 0xeeb1, 0x4562,
- 0x5b1f, 0xeeb4, 0x9f50, 0x9ea6, 0xeeb7,
- /* 0xa1 */
- 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2027, 0xff1b, 0xff1a,
- 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52,
- 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
- 0x2014, 0xfe33, 0x2574, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
- 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
- 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
- 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
- 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b,
- 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
- 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7,
- 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605,
- 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105,
- 0x00af, 0xffe3, 0xff3f, 0x02cd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e,
- 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7,
- 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267,
- 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65,
- 0xfe66, 0xff5e, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf,
- 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
- 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
- 0x2199, 0x2198, 0x2225, 0x2223, 0xff0f,
- /* 0xa2 */
- 0xff3c, 0x2215, 0xfe68, 0xff04, 0xffe5, 0x3012, 0xffe0, 0xffe1,
- 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
- 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
- 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
- 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
- 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
- 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
- 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e,
- 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3,
- 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12,
- 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160,
- 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
- 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
- 0x3028, 0x3029, 0x5341, 0x5344, 0x5345, 0xff21, 0xff22, 0xff23,
- 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b,
- 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33,
- 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41,
- 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49,
- 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51,
- 0xff52, 0xff53, 0xff54, 0xff55, 0xff56,
- /* 0xa3 */
- 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
- 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
- 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
- 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
- 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
- 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
- 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
- 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
- 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
- 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa4 */
- 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
- 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
- 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
- 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
- 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
- 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
- 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
- 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11,
- 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88,
- 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3,
- 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141,
- 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207,
- 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347,
- 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929,
- 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f,
- 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236,
- 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5,
- 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4,
- 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247,
- 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19,
- /* 0xa5 */
- 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
- 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
- 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
- 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
- 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
- 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
- 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
- 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e,
- 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7,
- 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17,
- 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6,
- 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11,
- 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389,
- 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531,
- 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db,
- 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f,
- 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff,
- 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f,
- 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b,
- 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
- /* 0xa6 */
- 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
- 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
- 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
- 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
- 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
- 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
- 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
- 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f,
- 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263,
- 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2,
- 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64,
- 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50,
- 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d,
- 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001,
- 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c,
- 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e,
- 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621,
- 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34,
- 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38,
- 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63,
- /* 0xa7 */
- 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
- 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
- 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
- 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
- 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
- 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
- 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
- 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747,
- 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d,
- 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4,
- 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c,
- 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90,
- 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a,
- 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8,
- 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212,
- 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d,
- 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298,
- 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538,
- 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c,
- 0x6756, 0x675e, 0x6749, 0x6746, 0x6760,
- /* 0xa8 */
- 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
- 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
- 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
- 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
- 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
- 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
- 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
- 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b,
- 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d,
- 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2,
- 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6,
- 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a,
- 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab,
- 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b,
- 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b,
- 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155,
- 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238,
- 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb,
- 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379,
- 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475,
- /* 0xa9 */
- 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
- 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
- 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
- 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
- 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
- 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
- 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
- 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46,
- 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18,
- 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97,
- 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80,
- 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff,
- 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021,
- 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e,
- 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9,
- 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8,
- 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da,
- 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e,
- 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602,
- 0x660e, 0x6600, 0x660f, 0x6615, 0x660a,
- /* 0xaa */
- 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
- 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
- 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
- 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
- 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
- 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
- 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
- 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095,
- 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248,
- 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9,
- 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a,
- 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940,
- 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54,
- 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1,
- 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d,
- 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1,
- 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7,
- 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1,
- 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580,
- 0x961c, 0x9640, 0x963f, 0x963b, 0x9644,
- /* 0xab */
- 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
- 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
- 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
- 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
- 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
- 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
- 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
- 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4,
- 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf,
- 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae,
- 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8,
- 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6,
- 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5,
- 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7,
- 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08,
- 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c,
- 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d,
- 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a,
- 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301,
- 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7,
- /* 0xac */
- 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
- 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
- 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
- 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
- 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
- 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
- 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
- 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x6d3b,
- 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38,
- 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3,
- 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272,
- 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb,
- 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c,
- 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678,
- 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701,
- 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc,
- 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947,
- 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff,
- 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04,
- 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004,
- /* 0xad */
- 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
- 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
- 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
- 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
- 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
- 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
- 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
- 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed,
- 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b,
- 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762,
- 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df,
- 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef,
- 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f,
- 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1,
- 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a,
- 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd,
- 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d,
- 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501,
- 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9,
- 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea,
- /* 0xae */
- 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
- 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
- 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
- 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
- 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
- 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
- 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
- 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063,
- 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f,
- 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3,
- 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346,
- 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328,
- 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642,
- 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8,
- 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853,
- 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851,
- 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845,
- 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27,
- 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87,
- 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93,
- /* 0xaf */
- 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
- 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
- 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
- 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
- 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
- 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
- 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
- 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x7825,
- 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f,
- 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7,
- 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06,
- 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22,
- 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b,
- 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015,
- 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105,
- 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a,
- 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b,
- 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338,
- 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336,
- 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
- /* 0xb0 */
- 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
- 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
- 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
- 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
- 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
- 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
- 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
- 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b,
- 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8,
- 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c,
- 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e,
- 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d,
- 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8,
- 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3,
- 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543,
- 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538,
- 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708,
- 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4,
- 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36,
- 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40,
- /* 0xb1 */
- 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
- 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
- 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
- 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
- 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
- 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
- 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
- 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5,
- 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df,
- 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7,
- 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa,
- 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384,
- 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b,
- 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557,
- 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac,
- 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668,
- 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2,
- 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0,
- 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8,
- 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba,
- /* 0xb2 */
- 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
- 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
- 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
- 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
- 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
- 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
- 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
- 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7,
- 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4,
- 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db,
- 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843,
- 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20,
- 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92,
- 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c,
- 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31,
- 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a,
- 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124,
- 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398,
- 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393,
- 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c,
- /* 0xb3 */
- 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
- 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
- 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
- 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
- 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
- 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
- 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
- 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8,
- 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7,
- 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670,
- 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0,
- 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5,
- 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096,
- 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269,
- 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7,
- 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594,
- 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2,
- 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599,
- 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821,
- 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960,
- /* 0xb4 */
- 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
- 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
- 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
- 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
- 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
- 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
- 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
- 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2,
- 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4,
- 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562,
- 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676,
- 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f,
- 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df,
- 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb,
- 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb,
- 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e,
- 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67,
- 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24,
- 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a,
- 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb,
- /* 0xb5 */
- 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
- 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
- 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
- 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
- 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
- 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
- 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
- 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97,
- 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52,
- 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e,
- 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66,
- 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052,
- 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146,
- 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403,
- 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1,
- 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2,
- 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df,
- 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0,
- 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b,
- 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41,
- /* 0xb6 */
- 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
- 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
- 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
- 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
- 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
- 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
- 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
- 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593,
- 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686,
- 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7,
- 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea,
- 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd,
- 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be,
- 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d,
- 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8,
- 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4,
- 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712,
- 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b,
- 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1,
- 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc,
- /* 0xb7 */
- 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
- 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
- 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
- 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
- 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
- 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
- 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
- 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a,
- 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968,
- 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b,
- 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf,
- 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5,
- 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4,
- 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164,
- 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, 0x715e,
- 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f,
- 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f,
- 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601,
- 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df,
- 0x775b, 0x776b, 0x7766, 0x775e, 0x7763,
- /* 0xb8 */
- 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
- 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
- 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
- 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
- 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
- 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
- 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
- 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179,
- 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431,
- 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435,
- 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f,
- 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702,
- 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc,
- 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3,
- 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c,
- 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c,
- 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca,
- 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1,
- 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, 0x8de4, 0x8de6,
- 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a,
- /* 0xb9 */
- 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
- 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
- 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
- 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
- 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
- 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
- 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
- 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd,
- 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e,
- 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da,
- 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3,
- 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617,
- 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616,
- 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e,
- 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925,
- 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7,
- 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5,
- 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84,
- 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6,
- 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147,
- /* 0xba */
- 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
- 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
- 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
- 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
- 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
- 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
- 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
- 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff,
- 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b,
- 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7,
- 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292,
- 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d,
- 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1,
- 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7,
- 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31,
- 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75,
- 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9,
- 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0,
- 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5,
- 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac,
- /* 0xbb */
- 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
- 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
- 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
- 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
- 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
- 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
- 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
- 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa,
- 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d,
- 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc,
- 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c,
- 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118,
- 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285,
- 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291,
- 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c,
- 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817,
- 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1,
- 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3,
- 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9,
- 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc,
- /* 0xbc */
- 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
- 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
- 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
- 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
- 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
- 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
- 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
- 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c,
- 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac,
- 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479,
- 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493, 0x6495,
- 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499,
- 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4,
- 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd,
- 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11,
- 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84,
- 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e,
- 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f,
- 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b,
- 0x734e, 0x7357, 0x7469, 0x748b, 0x7483,
- /* 0xbd */
- 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
- 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
- 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
- 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
- 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
- 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
- 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
- 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9,
- 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517,
- 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523,
- 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774,
- 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c,
- 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915,
- 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8,
- 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6,
- 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6,
- 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1,
- 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f,
- 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f,
- 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e,
- /* 0xbe */
- 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
- 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
- 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
- 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
- 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
- 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
- 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
- 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03,
- 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114,
- 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3,
- 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668,
- 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be,
- 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e,
- 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be,
- 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc,
- 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4,
- 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8,
- 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44,
- 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59,
- 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1,
- /* 0xbf */
- 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
- 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
- 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
- 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
- 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
- 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
- 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
- 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11,
- 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79,
- 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8,
- 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, 0x8548, 0x8568,
- 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f,
- 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b,
- 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00,
- 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed,
- 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44,
- 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38,
- 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c,
- 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f,
- 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a,
- /* 0xc0 */
- 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
- 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
- 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
- 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
- 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
- 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
- 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
- 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f,
- 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a,
- 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c,
- 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234,
- 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1,
- 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94,
- 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90,
- 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf,
- 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1,
- 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6,
- 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370,
- 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c,
- 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac,
- /* 0xc1 */
- 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
- 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
- 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
- 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
- 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
- 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
- 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
- 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584,
- 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8,
- 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab,
- 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938,
- 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20,
- 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd,
- 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a,
- 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084,
- 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d,
- 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e,
- 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc,
- 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0,
- 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01,
- /* 0xc2 */
- 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
- 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
- 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
- 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
- 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
- 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
- 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
- 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652,
- 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62,
- 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23,
- 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52,
- 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf,
- 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba,
- 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2,
- 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59,
- 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d,
- 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a,
- 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a,
- 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9,
- 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6,
- /* 0xc3 */
- 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
- 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
- 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
- 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
- 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
- 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
- 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
- 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a,
- 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7,
- 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d,
- 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7f85,
- 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea,
- 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9,
- 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58,
- 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a,
- 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54,
- 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1,
- 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd,
- 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a,
- 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e,
- /* 0xc4 */
- 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
- 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
- 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
- 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
- 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
- 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
- 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
- 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82,
- 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa,
- 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba,
- 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f,
- 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418,
- 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8,
- 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5,
- 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1,
- 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d,
- 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c,
- 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f,
- 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821,
- 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74,
- /* 0xc5 */
- 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
- 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
- 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
- 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
- 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
- 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
- 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
- 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3,
- 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc,
- 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444,
- 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955,
- 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b,
- 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6,
- 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca,
- 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638,
- 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464,
- 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4,
- 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1,
- 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88,
- 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92,
- /* 0xc6 */
- 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
- 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
- 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
- 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
- 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
- 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
- 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
- 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x2460,
- 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
- 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
- 0x247b, 0x247c, 0x247d, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174,
- 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4e36, 0x4e3f, 0x4e85,
- 0x4ea0, 0x5182, 0x5196, 0x51ab, 0x52f9, 0x5338, 0x5369, 0x53b6,
- 0x590a, 0x5b80, 0x5ddb, 0x2f33, 0x5e7f, 0xf6df, 0x5f50, 0x5f61,
- 0x6534, 0xf6e3, 0x7592, 0xf6e5, 0x8fb5, 0xf6e7, 0x00a8, 0x02c6,
- 0x30fd, 0x30fe, 0x309d, 0x309e, 0xf6ee, 0xf6ef, 0x3005, 0x3006,
- 0x3007, 0x30fc, 0xff3b, 0xff3d, 0x273d, 0x3041, 0x3042, 0x3043,
- 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b,
- 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053,
- 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
- /* 0xc7 */
- 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
- 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
- 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
- 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
- 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
- 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
- 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5,
- 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad,
- 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5,
- 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd,
- 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5,
- 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd,
- 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5,
- 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd,
- 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5,
- 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed,
- 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5,
- 0x30f6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
- 0x0416, 0x0417, 0x0418, 0x0419, 0x041a,
- /* 0xc8 */
- 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422,
- 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a,
- 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432,
- 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439,
- 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441,
- 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
- 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x21e7, 0x21b8,
- 0x21b9, 0xf7e5, 0xf7e6, 0x4e5a, 0xf7e8, 0x5202, 0xf7ea, 0xf7eb,
- 0x5188, 0xf7ed, 0xf7ee, 0xf7ef, 0xf7f0, 0xf7f1, 0xf7f2, 0xf7f3,
- 0xf7f4, 0xf7f5, 0xf7f6, 0xf7f7, 0xf7f8, 0xf7f9, 0xf7fa, 0xf7fb,
- 0xf7fc, 0xf7fd, 0xf7fe, 0xf7ff, 0xf800, 0xf801, 0xf802, 0xf803,
- 0xf804, 0xf805, 0xf806, 0xf807, 0xf808, 0xf809, 0xf80a, 0xf80b,
- 0xf80c, 0xf80d, 0xf80e, 0xf80f, 0xf810, 0xf811, 0xf812, 0xf813,
- 0xf814, 0xf815, 0xf816, 0xffe2, 0xffe4, 0xff07, 0xff02, 0x3231,
- 0x2116, 0x2121, 0x309b, 0x309c, 0x2e80, 0x2e84, 0x2e86, 0x2e87,
- 0x2e88, 0x2e8a, 0x2e8c, 0x2e8d, 0x2e95, 0x2e9c, 0x2e9d, 0x2ea5,
- 0x2ea7, 0x2eaa, 0x2eac, 0x2eae, 0x2eb6, 0x2ebc, 0x2ebe, 0x2ec6,
- 0x2eca, 0x2ecc, 0x2ecd, 0x2ecf, 0x2ed6, 0x2ed7, 0x2ede, 0x2ee3,
- 0xf83c, 0xf83d, 0xf83e, 0x0283, 0x0250, 0x025b, 0x0254, 0x0275,
- 0x0153, 0x00f8, 0x014b, 0x028a, 0x026a,
- /* 0xc9 */
- 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
- 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
- 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
- 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
- 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
- 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
- 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
- 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36,
- 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a,
- 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00,
- 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04,
- 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, 0x52a6, 0x5322,
- 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a,
- 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977,
- 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e,
- 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4,
- 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259,
- 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738,
- 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52,
- 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b,
- /* 0xca */
- 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
- 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
- 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
- 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
- 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
- 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
- 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
- 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d,
- 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5,
- 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940,
- 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f,
- 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f,
- 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95,
- 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d,
- 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed,
- 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef,
- 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e,
- 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281,
- 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, 0x65f0, 0x65f4,
- 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747,
- /* 0xcb */
- 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
- 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
- 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
- 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
- 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
- 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
- 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
- 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a,
- 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5,
- 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33,
- 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74,
- 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79,
- 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82,
- 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232,
- 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392,
- 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b,
- 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f,
- 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9,
- 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780,
- 0x5775, 0x577b, 0x5773, 0x5774, 0x5762,
- /* 0xcc */
- 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
- 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
- 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
- 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
- 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
- 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
- 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
- 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034,
- 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d,
- 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214,
- 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca,
- 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d,
- 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb,
- 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6,
- 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798,
- 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791,
- 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25,
- 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee,
- 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2,
- 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2,
- /* 0xcd */
- 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
- 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
- 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
- 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
- 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
- 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
- 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
- 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7,
- 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd,
- 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220,
- 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7,
- 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9,
- 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d,
- 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5,
- 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d,
- 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9,
- 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb,
- 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249,
- 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398,
- 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf,
- /* 0xce */
- 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
- 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
- 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
- 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
- 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
- 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
- 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
- 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde,
- 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf,
- 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22,
- 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3,
- 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054,
- 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c,
- 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e,
- 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303,
- 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313,
- 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa,
- 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622,
- 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f,
- 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba,
- /* 0xcf */
- 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
- 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
- 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
- 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
- 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
- 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
- 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
- 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01,
- 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c,
- 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1,
- 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a,
- 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb,
- 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8,
- 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7,
- 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e,
- 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703,
- 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8,
- 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809,
- 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5,
- 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80,
- /* 0xd0 */
- 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
- 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
- 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
- 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
- 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
- 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
- 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
- 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4,
- 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673,
- 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07,
- 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf,
- 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3,
- 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005,
- 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033,
- 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027,
- 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca,
- 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e,
- 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2,
- 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504,
- 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1,
- /* 0xd1 */
- 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
- 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
- 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
- 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
- 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
- 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
- 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
- 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x6041,
- 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095,
- 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2,
- 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4,
- 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358,
- 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338,
- 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4,
- 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f,
- 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816,
- 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844,
- 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d,
- 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34,
- 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4,
- /* 0xd2 */
- 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
- 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
- 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
- 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
- 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
- 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
- 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
- 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277,
- 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb,
- 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3,
- 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7,
- 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, 0x7521, 0x755b,
- 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6,
- 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712,
- 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823,
- 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821,
- 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c,
- 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed,
- 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b,
- 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10,
- /* 0xd3 */
- 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
- 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
- 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
- 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
- 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
- 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
- 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
- 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342,
- 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324,
- 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353,
- 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2,
- 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686,
- 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695,
- 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d,
- 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883,
- 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4,
- 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3,
- 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6,
- 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8,
- 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150,
- /* 0xd4 */
- 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
- 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
- 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
- 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
- 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
- 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
- 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
- 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c,
- 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540,
- 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc,
- 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3,
- 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1,
- 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9,
- 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67,
- 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c,
- 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b,
- 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69,
- 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1,
- 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c,
- 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f,
- /* 0xd5 */
- 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
- 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
- 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
- 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
- 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
- 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
- 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
- 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378,
- 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665,
- 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887,
- 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f,
- 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877,
- 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e,
- 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b,
- 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38,
- 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab,
- 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6,
- 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5,
- 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0,
- 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9,
- /* 0xd6 */
- 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
- 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
- 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
- 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
- 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
- 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
- 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
- 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb,
- 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f,
- 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b,
- 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826,
- 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b,
- 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94,
- 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24,
- 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f,
- 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3,
- 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29,
- 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63,
- 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0,
- 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f,
- /* 0xd7 */
- 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
- 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
- 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
- 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
- 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
- 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
- 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
- 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2,
- 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8,
- 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852,
- 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1,
- 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac,
- 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30,
- 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d,
- 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf,
- 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1,
- 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea,
- 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9,
- 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1,
- 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea,
- /* 0xd8 */
- 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
- 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
- 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
- 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
- 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
- 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
- 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
- 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819,
- 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c,
- 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d,
- 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2,
- 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae,
- 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b,
- 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd,
- 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37,
- 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e,
- 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42,
- 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45,
- 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9,
- 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114,
- /* 0xd9 */
- 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
- 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
- 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
- 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
- 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
- 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
- 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
- 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c,
- 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701,
- 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1,
- 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910,
- 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911,
- 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8,
- 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6,
- 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7,
- 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95,
- 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47,
- 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b,
- 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40,
- 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e,
- /* 0xda */
- 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
- 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
- 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
- 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
- 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
- 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
- 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
- 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x741a,
- 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420,
- 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1,
- 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da,
- 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b,
- 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d,
- 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862,
- 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c,
- 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, 0x7b44, 0x7b48,
- 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8,
- 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a,
- 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51,
- 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65,
- /* 0xdb */
- 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
- 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
- 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
- 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
- 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
- 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
- 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
- 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5,
- 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, 0x83ec, 0x83ee,
- 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8,
- 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb,
- 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856,
- 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6,
- 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998,
- 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59,
- 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51,
- 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe,
- 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3,
- 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8,
- 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa,
- /* 0xdc */
- 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
- 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
- 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
- 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
- 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
- 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
- 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
- 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689,
- 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c,
- 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83,
- 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca,
- 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb,
- 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c,
- 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0,
- 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5,
- 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714,
- 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855,
- 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871,
- 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5,
- 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6,
- /* 0xdd */
- 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
- 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
- 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
- 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
- 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
- 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
- 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
- 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433,
- 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
- 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a,
- 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e,
- 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695,
- 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966,
- 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a,
- 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935,
- 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969,
- 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c,
- 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952,
- 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, 0x6b48,
- 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc,
- /* 0xde */
- 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
- 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
- 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
- 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
- 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
- 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
- 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
- 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144,
- 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e,
- 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444,
- 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450,
- 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe,
- 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603,
- 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6,
- 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f,
- 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759,
- 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895,
- 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896,
- 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19,
- 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13,
- /* 0xdf */
- 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
- 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
- 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
- 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
- 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
- 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
- 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
- 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144,
- 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1,
- 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451,
- 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459,
- 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434,
- 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b,
- 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c,
- 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433,
- 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450,
- 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d,
- 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6,
- 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0,
- 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4,
- /* 0xe0 */
- 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
- 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
- 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
- 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
- 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
- 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
- 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
- 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044,
- 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114,
- 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a,
- 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246,
- 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261,
- 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253,
- 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692,
- 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5,
- 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac,
- 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab,
- 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4,
- 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3,
- 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0,
- /* 0xe1 */
- 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
- 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
- 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
- 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
- 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
- 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
- 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
- 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3,
- 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77,
- 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f,
- 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc,
- 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6,
- 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153,
- 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165,
- 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b,
- 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d,
- 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b,
- 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459,
- 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705,
- 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9,
- /* 0xe2 */
- 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
- 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
- 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
- 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
- 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
- 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
- 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
- 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36,
- 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35,
- 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39,
- 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21,
- 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b,
- 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293,
- 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475,
- 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590,
- 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8,
- 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e,
- 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab,
- 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a,
- 0x798b, 0x7996, 0x7995, 0x7994, 0x7993,
- /* 0xe3 */
- 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
- 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
- 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
- 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
- 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
- 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
- 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
- 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024,
- 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c,
- 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce,
- 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd,
- 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2,
- 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6,
- 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db,
- 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740,
- 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741,
- 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712,
- 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724,
- 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa,
- 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb,
- /* 0xe4 */
- 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
- 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
- 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
- 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
- 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
- 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
- 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
- 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6,
- 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e,
- 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286,
- 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, 0x928b,
- 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e,
- 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce,
- 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d,
- 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7,
- 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f,
- 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8,
- 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a,
- 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635,
- 0x5641, 0x564a, 0x5649, 0x5646, 0x5658,
- /* 0xe5 */
- 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
- 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
- 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
- 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
- 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
- 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
- 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
- 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b,
- 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d,
- 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485,
- 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f,
- 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2,
- 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af,
- 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4,
- 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, 0x69fe, 0x6a27,
- 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6,
- 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25,
- 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5,
- 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41,
- 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92,
- /* 0xe6 */
- 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
- 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
- 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
- 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
- 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
- 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
- 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
- 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362,
- 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488,
- 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619,
- 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d,
- 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb,
- 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4,
- 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76,
- 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac,
- 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc,
- 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03,
- 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76,
- 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, 0x7fec, 0x7fe6,
- 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f,
- /* 0xe7 */
- 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
- 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
- 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
- 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
- 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
- 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
- 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
- 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756,
- 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b,
- 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750,
- 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c,
- 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a,
- 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906,
- 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed,
- 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4,
- 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3,
- 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf,
- 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1,
- 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b,
- 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27,
- /* 0xe8 */
- 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
- 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
- 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
- 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
- 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
- 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
- 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
- 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5,
- 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0,
- 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a,
- 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829,
- 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911,
- 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3,
- 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc,
- 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43,
- 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68,
- 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07,
- 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3,
- 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de,
- 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e,
- /* 0xe9 */
- 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
- 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
- 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
- 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
- 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
- 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
- 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
- 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf,
- 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd,
- 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c,
- 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd,
- 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67,
- 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51,
- 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50,
- 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56,
- 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7,
- 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad,
- 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4,
- 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba,
- 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8,
- /* 0xea */
- 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
- 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
- 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
- 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
- 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
- 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
- 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
- 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797,
- 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1,
- 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47,
- 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7,
- 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea,
- 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7,
- 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20,
- 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f,
- 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c,
- 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6,
- 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2,
- 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545,
- 0x856b, 0x854d, 0x8553, 0x8561, 0x8558,
- /* 0xeb */
- 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
- 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
- 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
- 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
- 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
- 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
- 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
- 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2,
- 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0,
- 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91,
- 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c,
- 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45,
- 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36,
- 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079,
- 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190,
- 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306,
- 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301,
- 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9325,
- 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329,
- 0x9339, 0x9335, 0x932a, 0x9314, 0x930c,
- /* 0xec */
- 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
- 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
- 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
- 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
- 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
- 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
- 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
- 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d,
- 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d,
- 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87,
- 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126,
- 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c,
- 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681,
- 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23,
- 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2,
- 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, 0x61b5, 0x61bc,
- 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9,
- 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da,
- 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b,
- 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e,
- /* 0xed */
- 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
- 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
- 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
- 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
- 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
- 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
- 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
- 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4,
- 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc,
- 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c,
- 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1,
- 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4,
- 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd,
- 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c,
- 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47,
- 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45,
- 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4,
- 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a,
- 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b,
- 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e,
- /* 0xee */
- 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
- 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
- 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
- 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
- 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
- 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
- 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
- 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18,
- 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15,
- 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f,
- 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f,
- 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40,
- 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f,
- 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356,
- 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351,
- 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355,
- 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363,
- 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3,
- 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718,
- 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c,
- /* 0xef */
- 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
- 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
- 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
- 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
- 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
- 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
- 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
- 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45,
- 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d,
- 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff,
- 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e,
- 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c,
- 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed,
- 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff,
- 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db,
- 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6,
- 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9,
- 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e,
- 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201,
- 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376,
- /* 0xf0 */
- 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
- 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
- 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
- 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
- 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
- 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
- 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
- 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0,
- 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3,
- 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8,
- 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be,
- 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5,
- 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8,
- 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd,
- 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949,
- 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f,
- 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e,
- 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98,
- 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60,
- 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67,
- /* 0xf1 */
- 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
- 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
- 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
- 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
- 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
- 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
- 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
- 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2,
- 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851,
- 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09,
- 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0,
- 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c,
- 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8,
- 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f,
- 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52,
- 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01,
- 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c,
- 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad,
- 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912,
- 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70,
- /* 0xf2 */
- 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
- 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
- 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
- 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
- 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
- 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
- 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
- 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921,
- 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c,
- 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78,
- 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b,
- 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7,
- 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9,
- 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8,
- 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de,
- 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c,
- 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962,
- 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959,
- 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40,
- 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55,
- /* 0xf3 */
- 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
- 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
- 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
- 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
- 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
- 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
- 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
- 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3,
- 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d,
- 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943,
- 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b,
- 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2,
- 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0,
- 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec,
- 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81,
- 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b,
- 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85,
- 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68,
- 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d,
- 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2,
- /* 0xf4 */
- 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
- 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
- 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
- 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
- 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
- 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
- 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
- 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2,
- 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47,
- 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff,
- 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, 0x8622, 0x85ff,
- 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605,
- 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816,
- 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68,
- 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84,
- 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143,
- 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb,
- 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419,
- 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412,
- 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff,
- /* 0xf5 */
- 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
- 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
- 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
- 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
- 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
- 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
- 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
- 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0,
- 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8,
- 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99,
- 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e,
- 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139,
- 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb,
- 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8,
- 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046,
- 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d,
- 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88,
- 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, 0x8618,
- 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e,
- 0x8621, 0x8620, 0x8629, 0x861e, 0x8625,
- /* 0xf6 */
- 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
- 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
- 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
- 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
- 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
- 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
- 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
- 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f,
- 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b,
- 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21,
- 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe,
- 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac,
- 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a,
- 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31,
- 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb,
- 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520,
- 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056,
- 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5,
- 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71,
- 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a,
- /* 0xf7 */
- 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
- 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
- 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
- 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
- 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
- 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
- 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
- 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49,
- 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55,
- 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c,
- 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde,
- 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9,
- 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35,
- 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299,
- 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201,
- 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12,
- 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383,
- 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640,
- 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e,
- 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe,
- /* 0xf8 */
- 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
- 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
- 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
- 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
- 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
- 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
- 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
- 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71,
- 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d,
- 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223,
- 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97,
- 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94,
- 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2,
- 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7,
- 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62,
- 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05,
- 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e,
- 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, 0x6b18,
- 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9,
- 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a,
- /* 0xf9 */
- 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
- 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
- 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
- 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
- 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
- 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
- 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
- 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4,
- 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e,
- 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961,
- 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48,
- 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481,
- 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, 0x8b9f, 0x9483,
- 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a,
- 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, 0x7881, 0x92b9, 0x88cf, 0x58bb,
- 0x6052, 0x7ca7, 0x5afa, 0x2554, 0x2566, 0x2557, 0x2560, 0x256c,
- 0x2563, 0x255a, 0x2569, 0x255d, 0x2552, 0x2564, 0x2555, 0x255e,
- 0x256a, 0x2561, 0x2558, 0x2567, 0x255b, 0x2553, 0x2565, 0x2556,
- 0x255f, 0x256b, 0x2562, 0x2559, 0x2568, 0x255c, 0x2551, 0x2550,
- 0x256d, 0x256e, 0x2570, 0x256f, 0xffed,
- /* 0xfa */
- 0xe000, 0x92db, 0xe002, 0xe003, 0x854c, 0x42b5, 0x73ef, 0x51b5,
- 0x3649, 0xe009, 0xe00a, 0x9344, 0xe00c, 0x82ee, 0xe00e, 0x783c,
- 0x6744, 0x62df, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0x4fab,
- 0xe018, 0x5008, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0x5029,
- 0xe020, 0x5fa4, 0xe022, 0xe023, 0x6edb, 0xe025, 0x507d, 0x5101,
- 0x347a, 0x510e, 0x986c, 0x3743, 0x8416, 0xe02d, 0xe02e, 0x5160,
- 0xe030, 0x516a, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037,
- 0xe038, 0x5b82, 0x877d, 0xe03b, 0xe03c, 0x51b2, 0x51b8, 0x9d34,
- 0x51c9, 0x51cf, 0x51d1, 0x3cdc, 0x51d3, 0xe045, 0x51b3, 0x51e2,
- 0x5342, 0x51ed, 0x83cd, 0x693e, 0xe04c, 0x5f7b, 0x520b, 0x5226,
- 0x523c, 0x52b5, 0x5257, 0x5294, 0x52b9, 0x52c5, 0x7c15, 0x8542,
- 0x52e0, 0x860d, 0xe05a, 0x5305, 0xe05c, 0x5549, 0x6ed9, 0xe05f,
- 0xe060, 0xe061, 0x5333, 0x5344, 0xe064, 0x6ccb, 0xe066, 0x681b,
- 0x73d5, 0x604a, 0x3eaa, 0x38cc, 0xe06c, 0x71dd, 0x44a2, 0x536d,
- 0x5374, 0xe071, 0x537e, 0x537f, 0xe074, 0xe075, 0x77e6, 0x5393,
- 0xe078, 0x53a0, 0x53ab, 0x53ae, 0x73a7, 0xe07d, 0x3f59, 0x739c,
- 0x53c1, 0x53c5, 0x6c49, 0x4e49, 0x57fe, 0x53d9, 0x3aab, 0xe087,
- 0x53e0, 0xe089, 0xe08a, 0x53f6, 0xe08c, 0x5413, 0x7079, 0x552b,
- 0x6657, 0x6d5b, 0x546d, 0xe093, 0xe094, 0x555d, 0x548f, 0x54a4,
- 0x47a6, 0xe099, 0xe09a, 0x3db4, 0xe09c,
- /* 0xfb */
- 0xe09d, 0xe09e, 0x5547, 0x4ced, 0x542f, 0x7417, 0x5586, 0x55a9,
- 0x5605, 0xe0a6, 0xe0a7, 0x4552, 0xe0a9, 0x66b3, 0xe0ab, 0x5637,
- 0x66cd, 0xe0ae, 0x66a4, 0x66ad, 0x564d, 0x564f, 0x78f1, 0x56f1,
- 0x9787, 0x53fe, 0x5700, 0x56ef, 0x56ed, 0xe0ba, 0x3623, 0xe0bc,
- 0x5746, 0xe0be, 0x6c6e, 0x708b, 0x5742, 0x36b1, 0xe0c3, 0x57e6,
- 0xe0c5, 0x5803, 0xe0c7, 0xe0c8, 0x5826, 0xe0ca, 0x585c, 0x58aa,
- 0x3561, 0x58e0, 0x58dc, 0xe0d0, 0x58fb, 0x5bff, 0x5743, 0xe0d4,
- 0xe0d5, 0x93d3, 0x35a1, 0x591f, 0x68a6, 0x36c3, 0x6e59, 0xe0dc,
- 0x5a24, 0x5553, 0xe0df, 0x8505, 0x59c9, 0xe0e2, 0xe0e3, 0xe0e4,
- 0xe0e5, 0x59d9, 0xe0e7, 0xe0e8, 0xe0e9, 0x6d71, 0xe0eb, 0xe0ec,
- 0x59f9, 0xe0ee, 0x5aab, 0x5a63, 0x36e6, 0xe0f2, 0x5a77, 0x3708,
- 0x5a96, 0x7465, 0x5ad3, 0xe0f8, 0xe0f9, 0x3d85, 0xe0fb, 0x3732,
- 0xe0fd, 0x5e83, 0x52d0, 0x5b76, 0x6588, 0x5b7c, 0xe103, 0x4004,
- 0x485d, 0xe106, 0x5bd5, 0x6160, 0xe109, 0xe10a, 0xe10b, 0x5bf3,
- 0x5b9d, 0x4d10, 0x5c05, 0xe110, 0x5c13, 0x73ce, 0x5c14, 0xe114,
- 0xe115, 0x5c49, 0x48dd, 0x5c85, 0x5ce9, 0x5cef, 0x5d8b, 0xe11c,
- 0xe11d, 0x5d10, 0x5d18, 0x5d46, 0xe121, 0x5cba, 0x5dd7, 0x82fc,
- 0x382d, 0xe126, 0xe127, 0xe128, 0x8287, 0x3836, 0x3bc2, 0x5e2e,
- 0x6a8a, 0x5e75, 0x5e7a, 0xe130, 0xe131, 0x53a6, 0x4eb7, 0x5ed0,
- 0x53a8, 0xe136, 0x5e09, 0x5ef4, 0xe139,
- /* 0xfc */
- 0x5ef9, 0x5efb, 0x38a0, 0x5efc, 0x683e, 0x941b, 0x5f0d, 0xe141,
- 0xe142, 0x3ade, 0x48ae, 0xe145, 0x5f3a, 0xe147, 0xe148, 0x5f58,
- 0xe14a, 0x5f63, 0x97bd, 0xe14d, 0x5f72, 0x9340, 0xe150, 0x5fa7,
- 0x5db6, 0x3d5f, 0xe154, 0xe155, 0xe156, 0xe157, 0x91d6, 0xe159,
- 0xe15a, 0x6031, 0x6685, 0xe15d, 0x3963, 0x3dc7, 0x3639, 0x5790,
- 0xe162, 0x7971, 0x3e40, 0x609e, 0x60a4, 0x60b3, 0xe168, 0xe169,
- 0xe16a, 0x74a4, 0x50e1, 0x5aa0, 0x6164, 0x8424, 0x6142, 0xe171,
- 0xe172, 0x6181, 0x51f4, 0xe175, 0x6187, 0x5baa, 0xe178, 0xe179,
- 0x61d3, 0xe17b, 0xe17c, 0x61d0, 0x3932, 0xe17f, 0xe180, 0x6023,
- 0x615c, 0x651e, 0x638b, 0xe185, 0x62c5, 0xe187, 0x62d5, 0xe189,
- 0x636c, 0xe18b, 0x3a17, 0x6438, 0x63f8, 0xe18f, 0xe190, 0x6490,
- 0x6f8a, 0xe193, 0x9814, 0xe195, 0xe196, 0x64e1, 0x64e5, 0x947b,
- 0x3a66, 0x643a, 0x3a57, 0x654d, 0x6f16, 0xe19f, 0xe1a0, 0x6585,
- 0x656d, 0x655f, 0xe1a4, 0x65b5, 0xe1a6, 0x4b37, 0x65d1, 0x40d8,
- 0xe1aa, 0x65e0, 0x65e3, 0x5fdf, 0xe1ae, 0x6618, 0xe1b0, 0xe1b1,
- 0x6644, 0xe1b3, 0xe1b4, 0x664b, 0xe1b6, 0x6667, 0xe1b8, 0x6673,
- 0x6674, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf, 0x77c5, 0xe1c1,
- 0x99a4, 0x6702, 0xe1c4, 0xe1c5, 0x3b2b, 0x69fa, 0xe1c8, 0x675e,
- 0x6767, 0x6762, 0xe1cc, 0xe1cd, 0x67d7, 0x44e9, 0x6822, 0x6e50,
- 0x923c, 0x6801, 0xe1d4, 0xe1d5, 0x685d,
- /* 0xfd */
- 0xe1d7, 0x69e1, 0x6a0b, 0xe1da, 0x6973, 0x68c3, 0xe1dd, 0x6901,
- 0x6900, 0x3d32, 0x3a01, 0xe1e2, 0x3b80, 0x67ac, 0x6961, 0xe1e6,
- 0x42fc, 0x6936, 0x6998, 0x3ba1, 0xe1eb, 0x8363, 0x5090, 0x69f9,
- 0xe1ef, 0xe1f0, 0x6a45, 0xe1f2, 0x6a9d, 0x3bf3, 0x67b1, 0x6ac8,
- 0xe1f7, 0x3c0d, 0x6b1d, 0xe1fa, 0x60de, 0x6b35, 0x6b74, 0xe1fe,
- 0x6eb5, 0xe200, 0xe201, 0xe202, 0x3740, 0x5421, 0xe205, 0x6be1,
- 0xe207, 0x6bdc, 0x6c37, 0xe20a, 0xe20b, 0xe20c, 0x6c5a, 0x8226,
- 0x6c79, 0xe210, 0x44c5, 0xe212, 0xe213, 0xe214, 0xe215, 0xe216,
- 0x36e5, 0x3ceb, 0xe219, 0x9b83, 0xe21b, 0xe21c, 0x7f8f, 0x6837,
- 0xe21f, 0xe220, 0xe221, 0x6d96, 0x6d5c, 0x6e7c, 0x6f04, 0xe226,
- 0xe227, 0xe228, 0x8533, 0xe22a, 0x51c7, 0x6c9c, 0x6e1d, 0x842e,
- 0xe22f, 0x6e2f, 0xe231, 0x7453, 0xe233, 0x79cc, 0x6e4f, 0x5a91,
- 0xe237, 0x6ff8, 0x370d, 0x6f9d, 0xe23b, 0x6efa, 0xe23d, 0xe23e,
- 0x4555, 0x93f0, 0x6f44, 0x6f5c, 0x3d4e, 0x6f74, 0xe245, 0x3d3b,
- 0x6f9f, 0xe248, 0x6fd3, 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e,
- 0xe24f, 0x51df, 0xe251, 0xe252, 0xe253, 0xe254, 0x704b, 0x707e,
- 0x70a7, 0x7081, 0x70cc, 0x70d5, 0x70d6, 0x70df, 0x4104, 0x3de8,
- 0x71b4, 0x7196, 0xe261, 0x712b, 0x7145, 0x5a88, 0x714a, 0x716e,
- 0x5c9c, 0xe268, 0x714f, 0x9362, 0xe26b, 0x712c, 0xe26d, 0xe26e,
- 0xe26f, 0x71ba, 0xe271, 0x70bd, 0x720e,
- /* 0xfe */
- 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0xe27a, 0x722e,
- 0x7240, 0xe27d, 0x68bd, 0x7255, 0x7257, 0x3e55, 0xe282, 0x680d,
- 0x6f3d, 0x7282, 0x732a, 0x732b, 0xe288, 0xe289, 0x48ed, 0xe28b,
- 0x7328, 0x732e, 0x73cf, 0x73aa, 0xe290, 0xe291, 0x73c9, 0x7449,
- 0xe294, 0xe295, 0xe296, 0x6623, 0x36c5, 0xe299, 0xe29a, 0xe29b,
- 0x73f7, 0x7415, 0x6903, 0xe29f, 0x7439, 0xe2a1, 0x3ed7, 0x745c,
- 0xe2a4, 0x7460, 0xe2a6, 0x7447, 0x73e4, 0x7476, 0x83b9, 0x746c,
- 0x3730, 0x7474, 0x93f1, 0x6a2c, 0x7482, 0x4953, 0xe2b2, 0xe2b3,
- 0xe2b4, 0xe2b5, 0x5b46, 0xe2b7, 0xe2b8, 0x74c8, 0xe2ba, 0x750e,
- 0x74e9, 0x751e, 0xe2be, 0xe2bf, 0x5bd7, 0xe2c1, 0x9385, 0x754d,
- 0x754a, 0x7567, 0x756e, 0xe2c7, 0x3f04, 0xe2c9, 0x758e, 0x745d,
- 0x759e, 0x75b4, 0x7602, 0x762c, 0x7651, 0x764f, 0x766f, 0x7676,
- 0xe2d4, 0x7690, 0x81ef, 0x37f8, 0xe2d8, 0xe2d9, 0x76a1, 0x76a5,
- 0x76b7, 0x76cc, 0xe2de, 0x8462, 0xe2e0, 0xe2e1, 0xe2e2, 0x771e,
- 0x7726, 0x7740, 0x64af, 0xe2e7, 0x7758, 0xe2e9, 0x77af, 0xe2eb,
- 0xe2ec, 0xe2ed, 0x77f4, 0x7809, 0xe2f0, 0xe2f1, 0x68ca, 0x78af,
- 0x78c7, 0x78d3, 0x96a5, 0x792e, 0xe2f8, 0x78d7, 0x7934, 0x78b1,
- 0xe2fc, 0x8fb8, 0x8884, 0xe2ff, 0xe300, 0xe301, 0x7986, 0x8900,
- 0x6902, 0x7980, 0xe306, 0x799d, 0xe308, 0x793c, 0x79a9, 0x6e2a,
- 0xe30c, 0x3ea8, 0x79c6, 0xe30f, 0x79d4,
-};
-
-static int
-big5hkscs_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = s[0];
- if ((c1 >= 0x81 && c1 <= 0xfe)) {
- if (n >= 2) {
- unsigned char c2 = s[1];
- if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
- unsigned int i = 157 * (c1 - 0x81) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
- unsigned short wc = 0xfffd;
- {
- if (i < 19782)
- wc = big5hkscs_2uni_page81[i];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short big5hkscs_2charset[23202] = {
- 0xa246, 0xa247, 0xa244, 0xa1b1, 0xc6d8, 0xa1c2, 0xa258, 0xa1d3,
- 0xa1a6, 0xa367, 0xa150, 0xa14d, 0x8859, 0x8857, 0x885d, 0x885b,
- 0x8866, 0x8861, 0x885f, 0xa1d1, 0x886a, 0x8868, 0x886f, 0x886d,
- 0x88a7, 0x8873, 0x8871, 0x8877, 0x8875, 0xa1d2, 0xc8fb, 0x887b,
- 0x8879, 0x88a2, 0x8856, 0x8867, 0x885a, 0x886c, 0x885c, 0x886e,
- 0x8870, 0xc8fc, 0x885e, 0x8874, 0xc8fa, 0x8878, 0x8858, 0x8869,
- 0x8872, 0x8860, 0x8876, 0x887a, 0x887c, 0x887d, 0x887e, 0x88a1,
- 0xc8f6, 0x886b, 0xc8f8, 0xc8f7, 0x88a8, 0xc8fe, 0xc8f9, 0xc8f5,
- 0xc8fd, 0xc6d9, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa1c5, 0xa3bb,
- 0xa1c2, 0xa344, 0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a,
- 0xa34b, 0xa34c, 0xa34d, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352,
- 0xa353, 0xa354, 0xa355, 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a,
- 0xa35b, 0xa35c, 0xa35d, 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362,
- 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a,
- 0xa36b, 0xa36c, 0xa36d, 0xa36e, 0xa36f, 0xa370, 0xa371, 0xa372,
- 0xa373, 0xc7f9, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8,
- 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc840, 0xc841, 0xc842,
- 0xc843, 0xc844, 0xc845, 0xc846, 0xc847, 0xc848, 0xc849, 0xc84a,
- 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852,
- 0xc853, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a,
- 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863,
- 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, 0xc86a, 0xc86b,
- 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, 0xc871, 0xc872, 0xc873,
- 0xc874, 0xc875, 0xc85b, 0x8863, 0x88a4, 0x8865, 0x88a6, 0xa156,
- 0xa158, 0xa277, 0xa1fc, 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa145,
- 0xa3bb, 0xa14c, 0xa14b, 0xa145, 0xa1ac, 0xa1b2, 0xa1ab, 0xa1b0,
- 0xa1c3, 0xa24a, 0xa1c1, 0xa24b, 0xc8d2, 0xc8d3, 0xa2b9, 0xa2ba,
- 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, 0xa2c1, 0xa2c2,
- 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc,
- 0xc6bd, 0xc6be, 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1f8, 0xa1f9,
- 0xa1fb, 0xa1fa, 0xc877, 0xc878, 0xc876, 0xa241, 0xa242, 0xa258,
- 0xa1d4, 0xa1db, 0xa1e8, 0xa1e7, 0xa1fd, 0xa1fc, 0xa1e4, 0xa1e5,
- 0xa1ec, 0xa1ed, 0xa1ef, 0xa1ee, 0xa1dc, 0xa1da, 0xa1dd, 0xa1dd,
- 0xa1d8, 0xa1d9, 0xa1f2, 0xa1f3, 0xa1e6, 0xa1e9, 0xa15b, 0xc6a1,
- 0xc6a2, 0xc6a3, 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9,
- 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1,
- 0xc6b2, 0xc6b3, 0xc6b4, 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27c,
- 0xa27d, 0xa275, 0xa274, 0xa273, 0xa272, 0xa271, 0xf9f9, 0xf9f8,
- 0xf9e6, 0xf9ef, 0xf9dd, 0xf9e8, 0xf9f1, 0xf9df, 0xf9ec, 0xf9f5,
- 0xf9e3, 0xf9ee, 0xf9f7, 0xf9e5, 0xf9e9, 0xf9f2, 0xf9e0, 0xf9eb,
- 0xf9f4, 0xf9e2, 0xf9e7, 0xf9f0, 0xf9de, 0xf9ed, 0xf9f6, 0xf9e4,
- 0xf9ea, 0xf9f3, 0xf9e1, 0xf9fa, 0xf9fb, 0xf9fd, 0xf9fc, 0xa2ac,
- 0xa2ad, 0xa2ae, 0xa15a, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266,
- 0xa267, 0xa268, 0xa269, 0xa270, 0xa26f, 0xa26e, 0xa26d, 0xa26c,
- 0xa26b, 0xa26a, 0xf9fe, 0xa276, 0xa279, 0xa1bd, 0xa1bc, 0xa1b6,
- 0xa1b5, 0xa1bf, 0xa1be, 0xa1bb, 0xa1ba, 0xa1b3, 0xa1b7, 0xa1b4,
- 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0xa1b9, 0xa1b8, 0xa1f3, 0xa1f0,
- 0xa1f2, 0xa1f1, 0xc6e6, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9, 0xc8da,
- 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xc8e0, 0xc8e1, 0xc8e2,
- 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea,
- 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1, 0xc6cd,
- 0xa140, 0xa142, 0xa143, 0xa1b2, 0xc6e0, 0xc6e1, 0xc6e2, 0xa171,
- 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179, 0xa17a, 0xa169,
- 0xa16a, 0xa245, 0xa165, 0xa166, 0xa1e3, 0xa1a9, 0xa1aa, 0xa2c3,
- 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca, 0xa2cb,
- 0xa1ca, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed,
- 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5,
- 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd,
- 0xc6fe, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746,
- 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e,
- 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756,
- 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e,
- 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766,
- 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e,
- 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774, 0xc775, 0xc776,
- 0xc777, 0xc778, 0xc779, 0xc77a, 0xc8d4, 0xc8d5, 0xc6dc, 0xc6dd,
- 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4,
- 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac,
- 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4,
- 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc,
- 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4,
- 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc,
- 0xc7cd, 0xc7ce, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4,
- 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc,
- 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4,
- 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec,
- 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc6e3, 0xc6da,
- 0xc6db, 0xa374, 0xa375, 0xa376, 0xa377, 0xa378, 0xa379, 0xa37a,
- 0xa37b, 0xa37c, 0xa37d, 0xa37e, 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4,
- 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac,
- 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4,
- 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8, 0xa3b9, 0xa3ba, 0xa440, 0xa447,
- 0xa454, 0xa57c, 0xa457, 0xa4a4, 0xa455, 0xa5d2, 0xa441, 0xa4fe,
- 0xa442, 0xa4d1, 0xa661, 0xa448, 0xa440, 0xa447, 0xa454, 0xa57c,
- 0xa4ad, 0xa4bb, 0xa443, 0xa44b, 0xa445, 0xa451, 0xa4eb, 0xa4f5,
- 0xa4f4, 0xa4ec, 0xaaf7, 0xa467, 0xa4e9, 0xc8d1, 0xa6b3, 0xaac0,
- 0xa657, 0xaf53, 0xb05d, 0xafac, 0xb3d2, 0xa54e, 0xa949, 0xbec7,
- 0xbaca, 0xa5f8, 0xb8ea, 0xa8f3, 0xb2bd, 0xa5f0, 0xa6db, 0xa6dc,
- 0xa440, 0xa447, 0xa454, 0xa57c, 0xa4ad, 0xa4bb, 0xa443, 0xa44b,
- 0xa445, 0xa451, 0xa4eb, 0xa4f5, 0xa4f4, 0xa4ec, 0xaaf7, 0xa467,
- 0xa4e9, 0xaee8, 0xa6b3, 0xaac0, 0xa657, 0xaf53, 0xb05d, 0xafac,
- 0xb3d2, 0xafb5, 0xa86b, 0xa46b, 0xbe41, 0xc075, 0xa64c, 0xaa60,
- 0xb6b5, 0xa5f0, 0xbc67, 0xa1c0, 0xa457, 0xa4a4, 0xa455, 0xa5aa,
- 0xa56b, 0xc2e5, 0xa976, 0xbec7, 0xbaca, 0xa5f8, 0xb8ea, 0xa8f3,
- 0xa95d, 0xa255, 0xa256, 0xa250, 0xa251, 0xa252, 0xa254, 0xa257,
- 0xa253, 0xa1eb, 0xa1ea, 0xa24f, 0x9277, 0x96df, 0x89d5, 0x93cd,
- 0x9bdf, 0xfa68, 0x89da, 0x8f59, 0x89db, 0x8f5d, 0x89dc, 0x96f7,
- 0x8ada, 0x8bdc, 0x97db, 0x9e53, 0x9daa, 0x9bea, 0x8a6e, 0x8bc8,
- 0x89e8, 0x89ea, 0x8c4b, 0xfb70, 0x89ed, 0x94dd, 0x89ee, 0x9eb4,
- 0x8ad3, 0x92db, 0x94db, 0x89f9, 0xfb7a, 0x89fb, 0x9efc, 0x89fc,
- 0x89bf, 0x89fe, 0x89e6, 0x9d46, 0x9dee, 0xa07e, 0xa068, 0x98e9,
- 0x8b68, 0x8dfd, 0x8bbe, 0x9fd9, 0x8aeb, 0x9fd7, 0x8b6a, 0x9c5c,
- 0x8bb1, 0xfb5e, 0x9df3, 0xa0d0, 0xfc66, 0x92e9, 0x9aec, 0x8fab,
- 0xfa48, 0x8e45, 0x9c6f, 0x9ede, 0x89ef, 0x96e9, 0x9ebb, 0x94de,
- 0x9eb8, 0x97ba, 0xfb65, 0x95d6, 0x9cbb, 0x97da, 0x8f45, 0xfb7d,
- 0x9158, 0xfe64, 0x9856, 0x9b4d, 0x935b, 0x95c7, 0x97e7, 0x9359,
- 0x91f5, 0x97b8, 0xfda2, 0xfbb6, 0x92fa, 0x9357, 0x8ba6, 0xfbb9,
- 0x97b0, 0xfdc4, 0x9ca1, 0x91f2, 0x91f9, 0x8ff1, 0x9745, 0x9853,
- 0xfe78, 0xfbc1, 0x9251, 0x9dad, 0xfd6c, 0xfa6b, 0x9bc2, 0x9a7b,
- 0x8b60, 0x934b, 0x9abd, 0x91b7, 0x95b4, 0xfec5, 0x9ef0, 0x8d64,
- 0x9269, 0x8d67, 0xfbea, 0xfbef, 0x8d68, 0x93eb, 0xfc42, 0x9166,
- 0xfacd, 0x93dd, 0x8bcc, 0x8d6d, 0x8d6e, 0x96a8, 0xfca6, 0x8d6f,
- 0x8d70, 0xfc64, 0x9060, 0x8d74, 0x97c3, 0x8ad0, 0x9274, 0x9bbe,
- 0x9cc8, 0x9cba, 0x8d78, 0x9eb9, 0x955a, 0x91b4, 0x8a48, 0x8d7d,
- 0x8a7d, 0x8ac2, 0xfd4a, 0x8da1, 0x8ad1, 0xfcb4, 0x8b47, 0x93a4,
- 0x9eda, 0x8a51, 0x8da6, 0x9ec5, 0xfcc4, 0xa078, 0x94b5, 0xfcc2,
- 0x8a6b, 0x8dab, 0xfae8, 0x8dad, 0xfc49, 0x93c1, 0x906f, 0x8db0,
- 0x947e, 0x90fa, 0x9479, 0x8db2, 0xfcee, 0x997b, 0x8db4, 0x8db7,
- 0x91b3, 0x8dbb, 0x8dba, 0x8dbc, 0x9044, 0xfd4c, 0x93e4, 0x93e0,
- 0xfd53, 0x8dc3, 0x9bb8, 0xfbf0, 0x93e9, 0x93f6, 0x8dc5, 0x8dca,
- 0x8dcc, 0xfd5d, 0x93b5, 0xfd61, 0x9cf8, 0x9252, 0xa0e8, 0x9ca5,
- 0x8c56, 0x8dd6, 0x97c0, 0xa0de, 0x97d2, 0xfaa5, 0xfda3, 0x8ddb,
- 0x8eaf, 0x91b5, 0xfd49, 0xfdd1, 0x8deb, 0x97c6, 0xfdce, 0x90fc,
- 0xfc59, 0x96d6, 0x97c5, 0x8def, 0x97d7, 0x8df0, 0x96a6, 0xfbbf,
- 0x8df3, 0x9449, 0x8df5, 0x9872, 0x8e6b, 0xfafd, 0x8f50, 0x9dcc,
- 0xfc65, 0x8c44, 0x996e, 0x94a1, 0x8f63, 0xa0da, 0x9253, 0xfde9,
- 0x9db5, 0x9879, 0x9d5d, 0x8d63, 0x9669, 0x9f70, 0xfc6a, 0x8ac7,
- 0x89d7, 0xfe4d, 0x9edd, 0xfefb, 0x98bc, 0xfacc, 0x95b0, 0x9464,
- 0x936f, 0x94b9, 0x95ec, 0x91ee, 0x98c3, 0x95f6, 0x8ffd, 0x98c5,
- 0x9766, 0xfe6e, 0x97dd, 0x8caa, 0x92d2, 0x9761, 0x98cb, 0x95f0,
- 0x975d, 0x91e3, 0x98cc, 0x9469, 0x98cd, 0x98ce, 0x95fc, 0x94a3,
- 0x9662, 0xfeb6, 0x9463, 0x98d0, 0x98d1, 0x9475, 0xfae0, 0x9472,
- 0x98d6, 0x8af0, 0x98d9, 0x98db, 0x98dd, 0x98a8, 0x8a6d, 0x8afb,
- 0x8aae, 0xfbc9, 0x8c5d, 0x98e4, 0x98e6, 0x98e8, 0x8a4d, 0x9257,
- 0x95df, 0xa0ac, 0x98eb, 0x98ec, 0x8cc3, 0x98f4, 0x8ab8, 0x9ee7,
- 0x94bc, 0xfcd1, 0x9cc6, 0x9e7e, 0x98fe, 0xfde8, 0x9940, 0x94c9,
- 0x94d3, 0x9946, 0x90c0, 0x94d1, 0x9573, 0x93c2, 0x9948, 0x994b,
- 0x8e55, 0x994e, 0x8efe, 0x8e59, 0x94ec, 0x94ef, 0x8c60, 0x8f74,
- 0x9955, 0x9544, 0x8ccb, 0x9956, 0x9959, 0x995b, 0x8cc4, 0xfa45,
- 0x90b7, 0x9743, 0x95cd, 0x97c9, 0xfd50, 0x8eb9, 0x95c6, 0x9967,
- 0x8ab9, 0x8dfc, 0x8a76, 0x9d51, 0x9973, 0x9d4f, 0x997a, 0x9564,
- 0x99a1, 0x99a5, 0x99a7, 0x8eed, 0x99ad, 0x946e, 0x8f70, 0xfad0,
- 0x99b3, 0xa053, 0x965c, 0xfd7a, 0x97fe, 0x92bd, 0x97fd, 0x8f64,
- 0xfcf7, 0x9562, 0x97cd, 0x9e64, 0x924c, 0x8ec9, 0x99bc, 0x9da5,
- 0x8f54, 0x8f7c, 0x8ea2, 0x8f7a, 0x97ae, 0x96c8, 0x99c3, 0x90d6,
- 0x9cbe, 0x8f76, 0x9470, 0xfb4b, 0xfdca, 0x8ec7, 0xa0f9, 0x8fa9,
- 0x99c7, 0x90d7, 0x9edf, 0x99ce, 0x8fba, 0x8feb, 0x99cf, 0x8fc2,
- 0x92c9, 0x97dc, 0x95b3, 0x9c79, 0x95b2, 0x8fdb, 0x9be3, 0x9e7a,
- 0x9bee, 0x99de, 0xfafa, 0x9ee5, 0x8a52, 0x99e1, 0x8a67, 0x8bb5,
- 0x8aac, 0x99e9, 0xfbca, 0x97de, 0x95d1, 0x99f5, 0xfc4a, 0x9ba9,
- 0xfbdc, 0xfe56, 0x9ea4, 0x9d49, 0x95db, 0x89c5, 0x99f8, 0x9664,
- 0x9055, 0x96d4, 0x977c, 0x964d, 0x97e1, 0x9a48, 0x9a49, 0xfe7d,
- 0x90aa, 0x9a50, 0x9347, 0x8ed8, 0x90c9, 0x9a55, 0x90bc, 0x9a58,
- 0x8bb8, 0x90d5, 0x9641, 0x9a5a, 0x9a5c, 0x97c2, 0x8abb, 0x9baa,
- 0x90f5, 0x9a60, 0x9145, 0x8c58, 0x9a63, 0x8c49, 0x8bb6, 0xfccf,
- 0x966b, 0x9a6e, 0x914f, 0x9746, 0xa0e6, 0x92d7, 0x9675, 0x93d4,
- 0x91bb, 0x9679, 0x9a70, 0x9678, 0x91cd, 0x9c4a, 0xa06f, 0xa06a,
- 0x915f, 0x9fa5, 0x89ba, 0x9ecd, 0x9a79, 0x9dce, 0x8cd2, 0x9d73,
- 0x96b9, 0x96bc, 0x9cd1, 0x89b7, 0x9eee, 0xfb43, 0x9ec9, 0xfbd3,
- 0x91ae, 0x9d78, 0x9d7b, 0xa440, 0xa442, 0xa443, 0x9eb3, 0xc945,
- 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3, 0xc94f, 0xc94d,
- 0xa4a2, 0xa4a1, 0xa542, 0xa541, 0xa540, 0xa543, 0xa4fe, 0x9eb2,
- 0x9dd6, 0xa5e0, 0xa5e1, 0x994f, 0x89ce, 0xa8c3, 0x8bc0, 0x9fc4,
- 0xa458, 0x8bd4, 0xa4a4, 0xc950, 0x8c72, 0xa4a5, 0xc963, 0xa6ea,
- 0xcbb1, 0xc6bf, 0x8bf9, 0xa459, 0xa4a6, 0xa544, 0xc964, 0x8946,
- 0xc6c0, 0xc940, 0xa444, 0xa45b, 0xc947, 0xa45c, 0xfae5, 0xa4a7,
- 0xa545, 0xa547, 0xa546, 0xa5e2, 0xa5e3, 0xa8c4, 0xadbc, 0xa441,
- 0xc87b, 0x8bc6, 0xc941, 0xa445, 0xa45e, 0xa45d, 0xa5e4, 0x9c57,
- 0xa8c5, 0x9afb, 0xb0ae, 0xd44b, 0x89d0, 0x89cf, 0xb6c3, 0xdcb1,
- 0xdcb2, 0xc6c1, 0xa446, 0x89d1, 0xa4a9, 0x89e2, 0xa8c6, 0xa447,
- 0xc948, 0xa45f, 0xa4aa, 0xa4ac, 0xc951, 0xa4ad, 0xa4ab, 0x927e,
- 0xa5e5, 0x9dba, 0xa8c7, 0xa8c8, 0xab45, 0xc6c2, 0xa460, 0xa4ae,
- 0x8c6f, 0xa5e6, 0xa5e8, 0xa5e7, 0xa6eb, 0xa8c9, 0xa8ca, 0xab46,
- 0xab47, 0xadbd, 0xdcb3, 0xfbf8, 0xf6d6, 0xa448, 0x8bc7, 0x926b,
- 0x89d2, 0xa4b0, 0xa4af, 0xc952, 0xa4b1, 0xa4b7, 0xa4b2, 0xa4b3,
- 0xc954, 0xc953, 0xa4b5, 0xa4b6, 0xa4b4, 0x9fcf, 0xa54a, 0xa54b,
- 0xa54c, 0xa54d, 0xa549, 0xa550, 0xc96a, 0xc966, 0xc969, 0xa551,
- 0xa561, 0xc968, 0xa54e, 0xa54f, 0xa548, 0xc965, 0xc967, 0x9da9,
- 0x89d3, 0x99e2, 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae,
- 0xa5f3, 0xc9b2, 0x9267, 0xa5f4, 0xa5f7, 0xa5e9, 0xc9b1, 0xa5f8,
- 0xc9b5, 0x92a4, 0xc9b9, 0xc9b6, 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9,
- 0xa5ee, 0xc9ab, 0xa5f1, 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af,
- 0xa5ed, 0x8c73, 0xc9ac, 0xa5eb, 0x894e, 0xc9b4, 0xc9b7, 0x894f,
- 0x9278, 0xc9ad, 0xca66, 0xa742, 0xa6f4, 0x91b6, 0xca67, 0xa6f1,
- 0xa744, 0x89d4, 0xa6f9, 0x9fd2, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7,
- 0xca60, 0xca68, 0xca64, 0x92a7, 0xa6fa, 0x95a2, 0xa6fd, 0xa6ee,
- 0xa747, 0xca5d, 0x926e, 0xcbbd, 0xa6ec, 0xa743, 0xa6ed, 0xa6f5,
- 0xa6f6, 0xca62, 0xca5e, 0xa6fb, 0xa6f3, 0xca5a, 0xa6ef, 0xca65,
- 0xa745, 0xa748, 0xa6f2, 0xa740, 0xa746, 0xa6f0, 0xca63, 0xa741,
- 0xca69, 0xca5c, 0xa6fe, 0xca5f, 0xca61, 0xa8d8, 0xcbbf, 0xcbcb,
- 0xa8d0, 0xcbcc, 0xa8cb, 0xa8d5, 0x96ea, 0xa8ce, 0xcbb9, 0xa8d6,
- 0xcbb8, 0xcbbc, 0xcbc3, 0xcbc1, 0xa8de, 0xa8d9, 0xcbb3, 0xcbb5,
- 0xa8db, 0xa8cf, 0xcbb6, 0xcbc2, 0xcbc9, 0xa8d4, 0xcbbb, 0xcbb4,
- 0xa8d3, 0xcbb7, 0xa8d7, 0xcbba, 0x926f, 0xa8d2, 0xa8cd, 0xa8dc,
- 0xcbc4, 0xa8dd, 0xcbc8, 0xcbc6, 0xcbca, 0xa8da, 0xcbbe, 0xcbb2,
- 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0x92a3, 0x8950, 0xfa57,
- 0xab56, 0xab4a, 0x9866, 0xcde0, 0xcde8, 0xab49, 0xab51, 0xab5d,
- 0xcdee, 0xcdec, 0xcde7, 0x89d6, 0xab4b, 0xcded, 0xcde3, 0xab59,
- 0xab50, 0xab58, 0xcdde, 0xcdea, 0x98b2, 0xcde1, 0xab54, 0xcde2,
- 0x92ab, 0xcddd, 0xab5b, 0xab4e, 0xab57, 0xab4d, 0xcddf, 0xcde4,
- 0xcdeb, 0xab55, 0xab52, 0xcde6, 0xab5a, 0xcde9, 0xcde5, 0xab4f,
- 0xab5c, 0xab53, 0xab4c, 0xab48, 0x96de, 0x92ac, 0xcdef, 0xadd7,
- 0xadc1, 0x8c70, 0xadd1, 0x9f6e, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4,
- 0xd0d5, 0xadc4, 0x8ef2, 0xadcd, 0x9f6c, 0xadda, 0xadce, 0x89d8,
- 0xd0c9, 0xadc7, 0xd0ca, 0xfa59, 0xaddc, 0xadd3, 0xadbe, 0xadbf,
- 0xd0dd, 0xb0bf, 0xadcc, 0xadcb, 0xd0cb, 0xadcf, 0xd45b, 0xadc6,
- 0xd0d6, 0xadd5, 0xadd4, 0xadca, 0xd0ce, 0xd0d7, 0xd0c8, 0xadc9,
- 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0xadc3, 0xadc2, 0xd0d9, 0xadd0,
- 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8, 0x92a8, 0xd0db, 0xd0cd,
- 0xd0dc, 0xd0d1, 0x9163, 0xd0da, 0xd0d2, 0x8c40, 0xadc8, 0xd463,
- 0xd457, 0xb0b3, 0xd45c, 0xd462, 0xb0b2, 0xd455, 0xb0b6, 0xd459,
- 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, 0xd467, 0xd451, 0xb0ba,
- 0x9f73, 0xd466, 0x92ad, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f,
- 0xd45d, 0xd450, 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0x9be9,
- 0xd85b, 0xd45e, 0xd44d, 0xd45f, 0x92a9, 0xb0c1, 0xd464, 0xb0c0,
- 0xd44c, 0xd454, 0xd465, 0xb0bc, 0xb0bb, 0xb0b8, 0xb0bd, 0xb0af,
- 0xb0b0, 0xb3c8, 0x92aa, 0xd85e, 0xd857, 0xb3c5, 0xd85f, 0x89d9,
- 0xd855, 0xd858, 0xb3c4, 0xd859, 0xfd56, 0xb3c7, 0xd85d, 0xd853,
- 0xd852, 0xb3c9, 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c, 0xd85a,
- 0xd854, 0xb3c3, 0xd856, 0x9fa8, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd,
- 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb,
- 0xdcc4, 0xdcbf, 0xb6cc, 0x8c71, 0xdcb4, 0xb6c9, 0xdcb5, 0xdcbe,
- 0xdcbc, 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, 0xdcbb, 0xdcc2, 0xdcb9,
- 0xdcc1, 0x92a1, 0xb9b6, 0xb9b3, 0x90e3, 0xb9b4, 0xe0f9, 0xe0f1,
- 0xb9b2, 0xb9af, 0xe0f2, 0xa0a6, 0xb9b1, 0xe0f5, 0xe0f7, 0x94ab,
- 0xe0fe, 0xfc72, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0, 0xb9ac, 0xe0f3,
- 0xb9b7, 0xe0f6, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc, 0xe0fb, 0xb9b5,
- 0xe0f4, 0x97c4, 0xbbf8, 0xe4ec, 0xe4e9, 0xbbf9, 0xbbf7, 0x92ae,
- 0xe4f0, 0xe4ed, 0xe4e6, 0xbbf6, 0xfa67, 0xbbfa, 0xe4e7, 0xbbf5,
- 0xbbfd, 0xe4ea, 0xe4eb, 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef,
- 0x92a2, 0xfa69, 0xbeaa, 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab,
- 0xe8f6, 0xbea8, 0xe8f7, 0xe8f4, 0xc076, 0xecbd, 0xc077, 0xecbb,
- 0xecbc, 0xecba, 0xecb9, 0xecbe, 0xc075, 0x9268, 0xefb8, 0xefb9,
- 0xe4e8, 0xefb7, 0xc078, 0xc35f, 0xf1eb, 0xf1ec, 0xc4d7, 0xc4d8,
- 0xf5c1, 0xf5c0, 0xc56c, 0xc56b, 0xf7d0, 0xa449, 0xa461, 0xa4b9,
- 0xa4b8, 0xa553, 0xa552, 0xa5fc, 0xa5fb, 0xa5fd, 0xa5fa, 0xa74a,
- 0xa749, 0xa74b, 0xa8e0, 0xa8df, 0xa8e1, 0x8951, 0xab5e, 0xa259,
- 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b, 0xd860, 0xfa6f, 0xa25d,
- 0xb9b8, 0xa25e, 0xa44a, 0xa4ba, 0xa5fe, 0xa8e2, 0xfa71, 0xa44b,
- 0xa4bd, 0xa4bb, 0xa4bc, 0xa640, 0x8952, 0xa74c, 0xa8e4, 0xa8e3,
- 0xa8e5, 0x945a, 0xaddd, 0xbeac, 0xc6c3, 0x89dd, 0xc94e, 0xc8a2,
- 0xa554, 0xa555, 0xa641, 0xca6a, 0xab60, 0xab5f, 0xd0e0, 0xd0df,
- 0xb0c3, 0xc6c4, 0xa4be, 0xc955, 0x9e52, 0x8953, 0xcbcd, 0xab61,
- 0xade0, 0xadde, 0xaddf, 0x9e55, 0x92ba, 0xbead, 0xc6c5, 0xa556,
- 0x8c5b, 0xa642, 0xc9bc, 0xfa7d, 0xfaa8, 0x9a68, 0xfa47, 0xa74d,
- 0xa74e, 0xfa7e, 0xca6b, 0xcbce, 0xa8e6, 0xcbcf, 0x92bb, 0xd0e2,
- 0xd0e3, 0xade3, 0xfdb6, 0xd0e4, 0xfaa2, 0xd0e1, 0xade4, 0xade2,
- 0xade1, 0xd0e5, 0xfaa3, 0xd468, 0xfaa4, 0x9bb4, 0xfaa6, 0xd861,
- 0xdcc5, 0xe140, 0x89df, 0xbbfe, 0xbeae, 0xe8f9, 0xfddb, 0xa44c,
- 0xa45a, 0xfaa9, 0x8954, 0xfaab, 0xb0c4, 0xb3cd, 0xb9b9, 0xfc7a,
- 0xc942, 0xa4bf, 0xa559, 0xa557, 0xa558, 0x89e0, 0xa8e7, 0x9f4f,
- 0xa44d, 0xa44e, 0xc87d, 0xa462, 0x89e1, 0xa4c0, 0xa4c1, 0xa4c2,
- 0xc9be, 0xa55a, 0xfab0, 0xc96b, 0xa646, 0xc9bf, 0xa644, 0xa645,
- 0xc9bd, 0xa647, 0xa643, 0xca6c, 0xaaec, 0xca6d, 0x9fcd, 0xa0e7,
- 0xca6e, 0xa750, 0xa74f, 0xfab1, 0x89a6, 0xa753, 0xa751, 0xa752,
- 0xa8ed, 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0x9efa, 0xcbd0, 0xa8ee,
- 0xa8ea, 0xa8e9, 0xa8eb, 0xa8e8, 0xfab2, 0xa8ef, 0xab63, 0xcdf0,
- 0xcbd3, 0xab68, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62,
- 0xd0e8, 0xade7, 0xd0eb, 0xade5, 0xfab4, 0x92c4, 0xd0e7, 0xade8,
- 0xade6, 0xade9, 0xd0e9, 0xd0ea, 0x9f6f, 0xd0e6, 0xd0ec, 0x8bb0,
- 0xb3d1, 0xb0c5, 0xd469, 0xd46b, 0xd46a, 0xd46c, 0xb0c6, 0xb3ce,
- 0x9fac, 0xb3cf, 0xb3d0, 0xb6d0, 0xdcc7, 0x89e3, 0xdcc6, 0xdcc8,
- 0xdcc9, 0xb6d1, 0xb6cf, 0xe141, 0xe142, 0xb9bb, 0xb9ba, 0xe35a,
- 0xbc40, 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3, 0xbc43, 0x9bd3,
- 0x89e4, 0xbeaf, 0xbeb0, 0xfab5, 0xf1ed, 0xf5c3, 0xf5c2, 0xf7d1,
- 0x9fd5, 0xa44f, 0xa55c, 0xa55b, 0x8955, 0xa648, 0x92c5, 0xc9c0,
- 0x8956, 0xa755, 0xa756, 0xa754, 0xa757, 0xca6f, 0xca70, 0xfab3,
- 0xfab6, 0xa8f1, 0xcbd5, 0xa8f0, 0xcdf2, 0xab6c, 0xcdf3, 0xab6b,
- 0xfab7, 0xab69, 0xab6a, 0x9edc, 0xd0ed, 0xfbc4, 0x9f71, 0xb0c7,
- 0xd46e, 0xb0ca, 0xd46d, 0xb1e5, 0xb0c9, 0xb0c8, 0xb3d4, 0xb3d3,
- 0xb3d2, 0xb6d2, 0xfaba, 0x92c7, 0xb6d5, 0xb6d6, 0xb6d4, 0xb6d3,
- 0xe143, 0xe144, 0xe4f5, 0xbc45, 0xe4f4, 0xbeb1, 0xecbf, 0xc079,
- 0xf1ee, 0xc455, 0xc6c6, 0xa463, 0xa4c3, 0xc956, 0xa4c4, 0xa4c5,
- 0x9a4c, 0xa55d, 0xa55e, 0xa649, 0xca71, 0xcbd6, 0xcbd7, 0xab6d,
- 0xd0ee, 0xb0cc, 0xb0cb, 0xd863, 0xd862, 0xa450, 0xa4c6, 0xa55f,
- 0xb0cd, 0xc943, 0xc96c, 0xa560, 0xc9c2, 0xa64b, 0xa64a, 0xc9c1,
- 0xa758, 0x8c68, 0x89e5, 0xadea, 0x9f7d, 0xd46f, 0xb6d7, 0xe145,
- 0xb9bc, 0xa0a9, 0xfac4, 0xe8fa, 0xf3fd, 0xc6c7, 0xa4c7, 0x8957,
- 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, 0xb0cf, 0xa451, 0xfaaa, 0xa464,
- 0xa2cd, 0xa4ca, 0xa4c9, 0xa4c8, 0xa563, 0xa562, 0xc96d, 0xc9c3,
- 0x8958, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0xab6e, 0xb3d5, 0xa452,
- 0x8be3, 0xa4cb, 0x8b61, 0xa565, 0xa564, 0xca72, 0x9af1, 0xa8f6,
- 0x9eb7, 0xc6c8, 0xc957, 0xfad1, 0xa567, 0xa566, 0xa64c, 0xa64d,
- 0xca73, 0xa759, 0xfad2, 0xa75a, 0xa8f7, 0xa8f8, 0xa8f9, 0xab6f,
- 0xcdf5, 0x9eba, 0xfad4, 0xadeb, 0xc944, 0xa4cc, 0xc9c4, 0xca74,
- 0xca75, 0xcbd9, 0xfad9, 0xcbda, 0xcdf7, 0xcdf6, 0xcdf9, 0xcdf8,
- 0xab70, 0xd470, 0xaded, 0xd0ef, 0xadec, 0xfadb, 0x9ce0, 0xd864,
- 0xb3d6, 0xfbf7, 0xd865, 0xfbfa, 0x89e7, 0xa07a, 0xfadc, 0xe146,
- 0xb9bd, 0xfadd, 0x89e9, 0xbc46, 0xf1ef, 0xc6c9, 0xc958, 0xa568,
- 0xfae2, 0x89eb, 0xb0d1, 0xfae3, 0xa453, 0xa465, 0xa4ce, 0xa4cd,
- 0x90c8, 0xa4cf, 0x92da, 0x8959, 0x9cf5, 0xa8fb, 0xa8fa, 0xa8fc,
- 0x895a, 0xfae7, 0x9fa2, 0xab71, 0xadee, 0xfaea, 0xe8fb, 0xc24f,
- 0xa466, 0xa56a, 0xa579, 0xa574, 0xa56f, 0xa56e, 0xa575, 0xa573,
- 0xa56c, 0xa57a, 0xa56d, 0xa569, 0xa578, 0xa577, 0xa576, 0xa56b,
- 0xa572, 0xfaed, 0x8fad, 0xa571, 0xa57b, 0xa570, 0xfb59, 0xa653,
- 0xa659, 0xa655, 0xa65b, 0xc9c5, 0xa658, 0xa64e, 0xa651, 0xa654,
- 0xa650, 0xa657, 0xa65a, 0xa64f, 0xa652, 0xa656, 0xa65c, 0xfaef,
- 0x96ef, 0x9dec, 0xca7e, 0xca7b, 0x9dca, 0xa767, 0xca7c, 0xa75b,
- 0xa75d, 0xa775, 0xa770, 0xfd6d, 0x89ec, 0xcaa5, 0xca7d, 0xa75f,
- 0xa761, 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d,
- 0xfb44, 0xca76, 0xa773, 0x9de2, 0xa764, 0x8c75, 0xa76e, 0xa76f,
- 0xca77, 0xa76c, 0xa76a, 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0xa772,
- 0xcaa3, 0xa766, 0xa763, 0xca7a, 0xa762, 0xcaa6, 0xa765, 0xa769,
- 0x9ec0, 0x9e56, 0xa760, 0xcaa2, 0xca79, 0xcbeb, 0xcbea, 0xa94f,
- 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee, 0xa950, 0x9f79, 0x9ac7,
- 0xcbe1, 0xcbe5, 0xfaf4, 0xcbe9, 0xce49, 0xa94b, 0xce4d, 0xa8fd,
- 0xcbe6, 0xa8fe, 0xa94c, 0xa945, 0xa941, 0xcbe2, 0xa944, 0xa949,
- 0xa952, 0xcbe3, 0xcbdc, 0xa943, 0xcbdd, 0xcbdf, 0xa946, 0x98a1,
- 0xa948, 0xcbdb, 0xcbe0, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xfaf8,
- 0xa94a, 0xcbde, 0xa947, 0x89f0, 0x9e47, 0xa942, 0xa940, 0x9df7,
- 0xcbec, 0xa94e, 0x9fd3, 0x9aca, 0xce48, 0xcdfb, 0xce4b, 0x89f1,
- 0xfaf9, 0xcdfd, 0xab78, 0xaba8, 0xab74, 0xaba7, 0xab7d, 0xaba4,
- 0xab72, 0xcdfc, 0xce43, 0xaba3, 0xce4f, 0xaba5, 0x8e5a, 0xab79,
- 0x89f2, 0xce45, 0xce42, 0xab77, 0x89f3, 0xcdfa, 0xaba6, 0xce4a,
- 0xab7c, 0xce4c, 0xaba9, 0xab73, 0xab7e, 0xab7b, 0xce40, 0xaba1,
- 0xce46, 0xce47, 0xab7a, 0xaba2, 0xab76, 0x925d, 0x8b51, 0x92e0,
- 0xab75, 0xcdfe, 0x89f4, 0xce44, 0x9fd4, 0xce4e, 0xd144, 0xadfb,
- 0xd0f1, 0x8a79, 0xd0f6, 0xadf4, 0xae40, 0xd0f4, 0xadef, 0xadf9,
- 0xadfe, 0xd0fb, 0xadfa, 0xadfd, 0x89f5, 0xd0fe, 0xadf5, 0xd0f5,
- 0xd142, 0xd143, 0xadf7, 0xd141, 0xadf3, 0xae43, 0xd0f8, 0xadf1,
- 0x97a7, 0xd146, 0xd0f9, 0xd0fd, 0xadf6, 0xae42, 0xd0fa, 0xadfc,
- 0xd140, 0xd147, 0xd4a1, 0x93ba, 0xd145, 0xae44, 0xadf0, 0xd0fc,
- 0xd0f3, 0x9e58, 0xadf8, 0xd0f2, 0x89f6, 0xd0f7, 0x9e57, 0x89f7,
- 0x8a41, 0xd0f0, 0xae41, 0x89f8, 0xd477, 0xfaf1, 0xb0e4, 0xd4a7,
- 0xb0e2, 0xb0df, 0xd47c, 0xb0db, 0xd4a2, 0xb0e6, 0xd476, 0xd47b,
- 0xd47a, 0xadf2, 0xb0e1, 0xd4a5, 0xd4a8, 0xd473, 0xb3e8, 0x89fa,
- 0xd4a9, 0xb0e7, 0xb0d9, 0xb0d6, 0xd47e, 0xb0d3, 0xfb42, 0xd4a6,
- 0xfabf, 0xb0da, 0xd4aa, 0xd474, 0xd4a4, 0xb0dd, 0xd475, 0xd478,
- 0xd47d, 0xfba3, 0xb0de, 0xb0dc, 0xb0e8, 0xb0e3, 0xfaf7, 0xb0d7,
- 0xb1d2, 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0x9e4e,
- 0xb0d4, 0x94dc, 0x95da, 0x9df8, 0x9f6a, 0xd471, 0xd472, 0xd86a,
- 0x8ab7, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, 0xb3d8, 0xd871,
- 0xb3de, 0xb3e4, 0xb5bd, 0xfb46, 0xb3e2, 0xd86e, 0xb3ef, 0xb3db,
- 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, 0x8a46, 0xd866, 0xd873,
- 0xd86d, 0xb3e1, 0xd879, 0xb3dd, 0xb3f1, 0xb3ea, 0xb3df, 0xb3dc,
- 0xb3e7, 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9,
- 0xd867, 0xfb47, 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0x9148,
- 0xb3ed, 0xb3e9, 0xb3e5, 0x92de, 0xd870, 0x8b53, 0x9df6, 0xb3eb,
- 0x9bda, 0xdcd5, 0xdcd1, 0x9d7e, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5,
- 0xb6e6, 0xb6de, 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde,
- 0xb6dc, 0xdcd8, 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9,
- 0xdcdb, 0x89fd, 0x99e4, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0,
- 0x9e43, 0xb6d8, 0xb6e4, 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db,
- 0xa25f, 0xb6d9, 0xdcd4, 0x9de9, 0x8f52, 0xb6e2, 0x9df5, 0x9df0,
- 0xdcdd, 0x99e7, 0xb9cd, 0xb9c8, 0xe155, 0xe151, 0x8bbd, 0xe14b,
- 0xb9c2, 0xb9be, 0xe154, 0xb9bf, 0xe14e, 0xe150, 0xe153, 0x9def,
- 0xb9c4, 0xb9cb, 0xb9c5, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, 0xb9cc,
- 0x9fb7, 0xe14a, 0xe14f, 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, 0xb9c0,
- 0xe14d, 0xe152, 0x9dd0, 0xb9ca, 0x9feb, 0x8da9, 0x9dcf, 0x98e1,
- 0x9de5, 0xe147, 0xbc4d, 0xe547, 0xe544, 0x9dc8, 0xbc47, 0xbc53,
- 0xbc54, 0xbc4a, 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xfb4f, 0xe546,
- 0xbc49, 0xe548, 0xbc48, 0xe543, 0xe545, 0xbc4b, 0xe541, 0xe4fa,
- 0xe4f7, 0x9deb, 0xd86b, 0xe4fd, 0xe4f6, 0xe4fc, 0xe4fb, 0xe4f8,
- 0xfb54, 0xbc4f, 0xfb55, 0x9aa2, 0x8ad6, 0xbc4e, 0x9a5f, 0xbc50,
- 0xe4fe, 0xbeb2, 0xe540, 0x9ef5, 0xe945, 0xe8fd, 0x8fb7, 0xbebe,
- 0xe942, 0xbeb6, 0xbeba, 0xe941, 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3,
- 0xbebd, 0xe943, 0xe8fe, 0xbebc, 0xe8fc, 0xbebb, 0xe944, 0xe940,
- 0xbc51, 0xbebf, 0xe946, 0xbeb7, 0xbeb4, 0x9ad2, 0x9e6a, 0x9ee8,
- 0xecc6, 0xecc8, 0xc07b, 0xecc9, 0xecc7, 0xecc5, 0xecc4, 0xc07d,
- 0xecc3, 0xc07e, 0x8bbf, 0x91c2, 0x9d62, 0xecc1, 0xecc2, 0xc07a,
- 0xc0a1, 0xc07c, 0x9260, 0xecc0, 0xc250, 0xefbc, 0xefba, 0xefbf,
- 0xefbd, 0xefbb, 0xefbe, 0x925e, 0x91c1, 0x8ac5, 0x97a3, 0xc360,
- 0xf1f2, 0xf1f3, 0xc456, 0xf1f4, 0xf1f0, 0xf1f5, 0xf1f1, 0xc251,
- 0x8b6c, 0x8d7e, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457,
- 0x9c54, 0xc45a, 0xf5c5, 0xf5c6, 0x9dbd, 0xc4da, 0xc4d9, 0xc4db,
- 0xf5c4, 0xf6d8, 0xf6d7, 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8,
- 0xf8a6, 0xc5f1, 0xf8a5, 0xf8ee, 0x9cc5, 0xc949, 0xa57d, 0xa57c,
- 0xa65f, 0xa65e, 0xc9c7, 0xa65d, 0xc9c6, 0x895b, 0xa779, 0xcaa9,
- 0xcaa8, 0xa777, 0xa77a, 0xfb5c, 0xcaa7, 0xfb5b, 0xa778, 0xfb57,
- 0xcbf0, 0xcbf1, 0xa954, 0x98c7, 0xabaa, 0xfb5a, 0xd148, 0xd149,
- 0xae45, 0xae46, 0xd4ac, 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c,
- 0xb3f2, 0xb6e9, 0xb6ea, 0xdce1, 0x9cee, 0xb9cf, 0xb9ce, 0xe549,
- 0xe948, 0xe947, 0x92e2, 0xf96b, 0xa467, 0xc959, 0xc96e, 0xc96f,
- 0xa662, 0xa666, 0xc9c9, 0xa664, 0xa663, 0xc9c8, 0xa665, 0xa661,
- 0x94a7, 0xa660, 0xc9ca, 0xa7a6, 0x8ccc, 0xa7a3, 0x9bd4, 0xa77d,
- 0xcaaa, 0xfb64, 0xfb76, 0xcaab, 0xfb60, 0xa7a1, 0xcaad, 0xa77b,
- 0xcaae, 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, 0xa7a4, 0xa77c, 0xcaaf,
- 0x99e5, 0x9ac2, 0x91fb, 0xa073, 0xa959, 0xcbfe, 0xa95b, 0xa95a,
- 0x9f72, 0xcc40, 0xa958, 0xa957, 0xcbf5, 0xcbf4, 0xcbf2, 0xcbf7,
- 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8, 0xa956, 0x9fcc,
- 0xcbfb, 0xa95c, 0xcc41, 0x98a5, 0x92e8, 0xcbf9, 0xabab, 0xa955,
- 0x9bbc, 0x96f3, 0xabac, 0xce54, 0x92e7, 0xce5a, 0xfc67, 0xabb2,
- 0xce58, 0xce5e, 0xce55, 0xce59, 0xce5b, 0xce5d, 0xce57, 0x8b7d,
- 0xce56, 0xce51, 0xce52, 0xabad, 0x9bf4, 0xabaf, 0xabae, 0xce53,
- 0xce5c, 0x9ef7, 0x9ec1, 0xabb1, 0x996f, 0xce50, 0xd153, 0xd152,
- 0xd157, 0xd14e, 0x96f1, 0xd151, 0xd150, 0x8e41, 0xd154, 0xd158,
- 0xae47, 0xae4a, 0x954a, 0xd14f, 0xd155, 0x97e6, 0xae49, 0xd14a,
- 0xabb0, 0xd4ba, 0xd156, 0xd14d, 0xae48, 0xd14c, 0x96f5, 0xd4b1,
- 0x92e6, 0x9f42, 0xb0ec, 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1,
- 0xd4bf, 0xfb67, 0xd4c5, 0xd4c9, 0xd4c0, 0xd4b4, 0xd4bc, 0x99a9,
- 0xd4ca, 0xd4c8, 0xd4be, 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5,
- 0xd4b7, 0xb0f6, 0xb0f2, 0xd4ad, 0xd4c3, 0xd4b5, 0xfae6, 0xd4b3,
- 0xd4c6, 0xb0f3, 0xfb69, 0xd4cc, 0xb0ed, 0xb0ef, 0xd4bb, 0xd4b6,
- 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb, 0xd4c2, 0xd4c4, 0x97e5,
- 0xd4ae, 0xd8a1, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2, 0xb3fb, 0xb3f9,
- 0x967d, 0xd8a4, 0xb3f6, 0xd8a8, 0xfb6c, 0xd8a3, 0xd8a5, 0xd87d,
- 0xb3f4, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, 0xb3f7, 0xb3f8, 0xd14b,
- 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, 0xd8b0, 0xd8af, 0x99a2,
- 0xd8b3, 0xdcef, 0xd8ac, 0x9abb, 0x9a65, 0x944e, 0xd8a7, 0xdce7,
- 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6, 0xdcea, 0xdce5, 0xb6ec, 0xb6f6,
- 0xdce2, 0xb6f0, 0xdce9, 0xb6ee, 0xb6ed, 0xdcec, 0xb6ef, 0xdcee,
- 0xfb6e, 0xdceb, 0xb6eb, 0x99df, 0xb6f5, 0xdcf0, 0xdce4, 0xdced,
- 0xdce3, 0x98e3, 0xb6f1, 0x9254, 0xb6f3, 0xdce8, 0xdcf1, 0x967b,
- 0x8aaf, 0xe15d, 0xb9d0, 0xe163, 0xb9d5, 0xe15f, 0xe166, 0xe157,
- 0xb9d7, 0xb9d1, 0xe15c, 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0xb9d6,
- 0xe15a, 0xe160, 0xe165, 0xe156, 0xb9d4, 0xe15e, 0xe162, 0xe168,
- 0xe158, 0xe161, 0x8c77, 0xb9d3, 0xe167, 0xe159, 0x8baf, 0x9ebd,
- 0xbc59, 0xe54b, 0xbc57, 0xbc56, 0xe54d, 0xe552, 0xe54e, 0xe551,
- 0xbc5c, 0x9ee6, 0xbea5, 0xbc5b, 0xfb6f, 0xe54a, 0xe550, 0xbc5a,
- 0xe54f, 0x8ee1, 0xe54c, 0xbc58, 0x9b7d, 0x9c7e, 0xe94d, 0xf9d9,
- 0xe94f, 0xe94a, 0xbec1, 0xe94c, 0xbec0, 0xe94e, 0xbec3, 0xe950,
- 0xbec2, 0xe949, 0xe94b, 0x92ea, 0xc0a5, 0xeccc, 0x8c78, 0xc0a4,
- 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca, 0xc253, 0xc252, 0xf1f6,
- 0xf1f8, 0xfb72, 0xf1f7, 0xc361, 0xc362, 0xfb71, 0xc363, 0xf442,
- 0xc45b, 0xf7d3, 0xf7d2, 0xc5f2, 0xa468, 0xa4d0, 0xa7a7, 0x895c,
- 0x98f0, 0x96f2, 0xce5f, 0xb3fc, 0xb3fd, 0xfb74, 0xdcf2, 0xb9d8,
- 0xe169, 0xe553, 0x8bc1, 0xc95a, 0x895d, 0x89de, 0xcab0, 0x895e,
- 0xc6ca, 0xcc42, 0xce60, 0xd159, 0xae4c, 0xfe42, 0xf1f9, 0xc4dc,
- 0xa469, 0xa57e, 0xc970, 0xa667, 0xa668, 0xa95d, 0xfb7b, 0xb0f7,
- 0xb9da, 0xb9db, 0xb9d9, 0xa46a, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b,
- 0xa4d4, 0xa5a1, 0xc971, 0xa5a2, 0x895f, 0x8960, 0xa669, 0xa66a,
- 0xc9cb, 0xa7a8, 0xcab1, 0xa961, 0xcc43, 0xa95f, 0xa960, 0xa95e,
- 0xd15a, 0xabb6, 0xabb5, 0xabb7, 0xabb4, 0xce61, 0xa962, 0xabb3,
- 0xae4d, 0xae4e, 0xae4f, 0xd4cd, 0xb3fe, 0xd8b4, 0xb0f8, 0x9bcd,
- 0xb6f8, 0xb9dd, 0xb9dc, 0xe16a, 0xbc5d, 0xbec4, 0xefc0, 0xf6da,
- 0xf7d4, 0xa46b, 0xa5a3, 0x9dd3, 0xa5a4, 0xc9d1, 0xa66c, 0xa66f,
- 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, 0xc9cc, 0xa671, 0xa670,
- 0xa66d, 0xa66b, 0xc9ce, 0x984c, 0xa7b3, 0xa7b0, 0xcab6, 0xcab9,
- 0xcab8, 0xa7aa, 0xa7b2, 0x9752, 0xa7af, 0xcab5, 0xcab3, 0xa7ae,
- 0x95c3, 0xa7a9, 0xa7ac, 0x9bb6, 0xcab4, 0xcabb, 0xcab7, 0xa7ad,
- 0xa7b1, 0xa7b4, 0xcab2, 0xcaba, 0xa7ab, 0x9ab9, 0xa967, 0xa96f,
- 0x97b3, 0xcc4f, 0xcc48, 0xa970, 0xcc53, 0xcc44, 0xcc4b, 0x9f74,
- 0x92f1, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50, 0xa963, 0xcc51,
- 0xcc4a, 0xcc4d, 0x97df, 0xa972, 0xa969, 0xcc54, 0xcc52, 0xfba6,
- 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, 0xa96a, 0xa968,
- 0xa971, 0xa96d, 0xa965, 0xcc4e, 0xabb9, 0xfbab, 0xabc0, 0xce6f,
- 0xabb8, 0xce67, 0xce63, 0xce73, 0xce62, 0xabbb, 0xce6c, 0xabbe,
- 0xabc1, 0xabbc, 0xce70, 0xabbf, 0x9877, 0xae56, 0xce76, 0xce64,
- 0x9854, 0x95c5, 0xce66, 0xce6d, 0xce71, 0xce75, 0xce72, 0xce6b,
- 0xce6e, 0x9d55, 0xfbb2, 0xce68, 0xabc3, 0xce6a, 0xce69, 0xce74,
- 0xabba, 0xce65, 0xabc2, 0x957e, 0xabbd, 0xae5c, 0xd162, 0x9742,
- 0xae5b, 0x94e6, 0xd160, 0xae50, 0x92f5, 0xae55, 0xd15f, 0xd15c,
- 0xd161, 0xae51, 0xd15b, 0x8cc5, 0xae54, 0xae52, 0xd163, 0xae53,
- 0xae57, 0x92fd, 0xae58, 0xfba2, 0xae5a, 0x9c51, 0xae59, 0x94e9,
- 0x985c, 0x92f0, 0xd15d, 0xd15e, 0xd164, 0xd4d4, 0xb0f9, 0xd8c2,
- 0xd4d3, 0xd4e6, 0xb140, 0x944c, 0xd4e4, 0xb0fe, 0xb0fa, 0xd4ed,
- 0xd4dd, 0xd4e0, 0x916b, 0xb143, 0xd4ea, 0xd4e2, 0xb0fb, 0xb144,
- 0xd4e7, 0xd4e5, 0xd4d6, 0xd4eb, 0xd4df, 0xd4da, 0x8b78, 0xd4d0,
- 0xd4ec, 0xd4dc, 0xd4cf, 0x94e2, 0xb142, 0xd4e1, 0xd4ee, 0xd4de,
- 0xd4d2, 0xd4d7, 0xd4ce, 0x984f, 0xb141, 0xfbb5, 0xd4db, 0xd4d8,
- 0xb0fc, 0xd4d1, 0x9271, 0xd4e9, 0xb0fd, 0x9365, 0xd4d9, 0xd4d5,
- 0x985b, 0xd4e8, 0x9850, 0xb440, 0xd8bb, 0x97bc, 0xd8b8, 0xd8c9,
- 0xd8bd, 0xd8ca, 0x92f3, 0xb442, 0x9340, 0x984d, 0xd8c6, 0xd8c3,
- 0x9572, 0xfdef, 0xd8c4, 0xd8c7, 0xd8cb, 0xd4e3, 0xd8cd, 0xdd47,
- 0xfdc1, 0xb443, 0xd8ce, 0xd8b6, 0xd8c0, 0xfbba, 0xd8c5, 0x92eb,
- 0xb441, 0xb444, 0xd8cc, 0xd8cf, 0xd8ba, 0xd8b7, 0xfc73, 0x97b7,
- 0xd8b9, 0xd8be, 0xd8bc, 0xb445, 0xd8c8, 0xfbb4, 0xd8bf, 0xd8c1,
- 0xd8b5, 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9, 0xdd44,
- 0xdd40, 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd, 0xb6fc,
- 0xdcfb, 0xdd41, 0xb6f9, 0xb741, 0x90a7, 0xdcf4, 0xdcfe, 0xdcf3,
- 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0x9741, 0x92f4,
- 0xfbbc, 0xe16e, 0xb9e2, 0xb9e1, 0xb9e3, 0xe17a, 0xe170, 0xe176,
- 0xe16b, 0xe179, 0xe178, 0xe17c, 0xe175, 0xb9de, 0xe174, 0xb9e4,
- 0x9577, 0xe16d, 0xb9df, 0xe17b, 0xb9e0, 0xe16f, 0xe172, 0xe177,
- 0xe171, 0xe16c, 0x9ee2, 0x8f78, 0xe173, 0xe555, 0xbc61, 0xe558,
- 0xe557, 0xe55a, 0xe55c, 0xf9dc, 0xbc5f, 0xe556, 0x9672, 0xe554,
- 0xe55d, 0xe55b, 0xe559, 0xe55f, 0xe55e, 0xbc63, 0xbc5e, 0xbc60,
- 0xbc62, 0x9eb5, 0xe560, 0xe957, 0x964b, 0xe956, 0xe955, 0x8cac,
- 0xe958, 0xe951, 0xe952, 0xe95a, 0xe953, 0xbec5, 0xe95c, 0xa0fa,
- 0xe95b, 0xe954, 0xecd1, 0xc0a8, 0xeccf, 0xecd4, 0xecd3, 0xe959,
- 0xc0a7, 0x9575, 0xecd2, 0xecce, 0xecd6, 0xecd5, 0xc0a6, 0xecd0,
- 0xbec6, 0xc254, 0xefc1, 0xf1fa, 0xf1fb, 0xf1fc, 0xc45c, 0x90da,
- 0xc45d, 0x9367, 0xf443, 0xfea4, 0xf5c8, 0xf5c7, 0x90df, 0xf6db,
- 0xf6dc, 0xf7d5, 0xf8a7, 0x9354, 0xa46c, 0xa46d, 0xa46e, 0xa4d5,
- 0xa5a5, 0xc9d3, 0xa672, 0xa673, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5,
- 0xa973, 0xcc55, 0xa975, 0xa974, 0xcc56, 0x8961, 0x8bb4, 0xabc4,
- 0xae5d, 0xd165, 0x9dc0, 0xd4f0, 0xb145, 0xb447, 0xd4ef, 0xb446,
- 0x8e48, 0xb9e5, 0xfbc5, 0xe17d, 0xbec7, 0xc0a9, 0xecd7, 0xfbc7,
- 0xc45e, 0xc570, 0xc6cb, 0xc972, 0xfa79, 0xa5a6, 0xc973, 0xa676,
- 0xa674, 0xa675, 0xa677, 0xa7ba, 0xa7b9, 0xcabc, 0xa7bb, 0x9e67,
- 0xcabd, 0xcc57, 0xcc58, 0x8cd9, 0xa976, 0xa978, 0xa97a, 0xa977,
- 0xa97b, 0xa979, 0xfbd2, 0x8962, 0x8963, 0xabc8, 0xabc5, 0xabc7,
- 0xabc9, 0xabc6, 0xd166, 0xce77, 0xfc7d, 0xd168, 0xd167, 0xae63,
- 0xae5f, 0xae60, 0xae62, 0xae64, 0xae61, 0xae66, 0xae65, 0xb14a,
- 0xd4f2, 0xd4f1, 0xb149, 0x9f6b, 0xb148, 0xb147, 0xb14b, 0xb146,
- 0xd8d5, 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0xb44b, 0xd8d4, 0xb448,
- 0xb44a, 0xd8d3, 0xfbcc, 0xdd48, 0xfeae, 0xdd49, 0xdd4a, 0xb9e6,
- 0xb9ee, 0xe17e, 0xb9e8, 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea,
- 0xb9e7, 0xb9eb, 0xbc66, 0xd8d0, 0xbc67, 0xbc65, 0xbc64, 0xe95d,
- 0xbec8, 0xecd8, 0xecd9, 0xfbd1, 0xc364, 0xc45f, 0xa46f, 0xa678,
- 0xfb75, 0xabca, 0xd169, 0xae67, 0xfbd4, 0xb14e, 0xb14d, 0xb14c,
- 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470, 0xc95c, 0xa4d6,
- 0xc974, 0xfbd6, 0xfbd8, 0xc9d4, 0xa679, 0xa97c, 0x8b5d, 0x934c,
- 0xdd4b, 0x9ae2, 0xa471, 0x8bc9, 0xa4d7, 0xc9d5, 0xcabe, 0xcabf,
- 0xa7bc, 0xd8d8, 0xb44e, 0xdd4c, 0xc0aa, 0xa472, 0xa4a8, 0xa4d8,
- 0xc975, 0xa5a7, 0xa7c0, 0xa7bf, 0xa7bd, 0xa7be, 0xcc59, 0xa97e,
- 0xa9a1, 0xcc5a, 0xa97d, 0xfbdb, 0x9fc9, 0xabce, 0xce78, 0xabcd,
- 0xabcb, 0xabcc, 0xae6a, 0xae68, 0x9f44, 0xd16b, 0xae69, 0xd16a,
- 0xae5e, 0xd4f3, 0xb150, 0xb151, 0x98ed, 0xb14f, 0xb9f0, 0xe1a2,
- 0xbc68, 0xbc69, 0xe561, 0xc0ab, 0xefc2, 0xefc3, 0xc4dd, 0xf8a8,
- 0xc94b, 0xa4d9, 0xa473, 0xc977, 0xc976, 0xa67a, 0xc9d7, 0xc9d8,
- 0xc9d6, 0xc9d9, 0xfbdd, 0xcac7, 0xcac2, 0xcac4, 0xcac6, 0xcac3,
- 0xa7c4, 0xcac0, 0xcac1, 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3,
- 0xcac9, 0x8df2, 0x8964, 0xfdf2, 0xcc68, 0x934d, 0xcc62, 0xcc5d,
- 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69, 0xcc6c, 0xcc67, 0xcc60,
- 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64, 0xcc5b, 0xcc5f, 0xcc6b,
- 0xa9a7, 0xa9a8, 0xcc5e, 0xcc6a, 0xa9a2, 0xa9a4, 0xfbe7, 0xa0f2,
- 0x9868, 0xceab, 0xcea4, 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b,
- 0xceac, 0xcea9, 0xce79, 0x9f58, 0xabd0, 0xcea7, 0xcea8, 0xcea6,
- 0xce7c, 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0xcea1, 0xcead, 0x8d73,
- 0xae6f, 0xfbde, 0xae6e, 0xd16c, 0xae6b, 0xd16e, 0xfbdf, 0xae70,
- 0xd16f, 0xae73, 0x8c48, 0xae71, 0xd170, 0xceae, 0xd172, 0xae6d,
- 0xae6c, 0xd16d, 0xd171, 0xae72, 0xb153, 0xb152, 0xd4f5, 0xd4f9,
- 0xd4fb, 0xb154, 0xd4fe, 0xfbe3, 0xb158, 0xd541, 0xb15a, 0x8da8,
- 0xb156, 0xb15e, 0xfbe4, 0xb15b, 0xd4f7, 0xb155, 0xd4f6, 0xd4f4,
- 0xd543, 0xd4f8, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d,
- 0xd4fa, 0xb159, 0x9c75, 0xd544, 0x9878, 0xd540, 0xd8e7, 0xd8ee,
- 0xd8e3, 0xb451, 0xd8df, 0xd8ef, 0xd8d9, 0xd8ec, 0xd8ea, 0xd8e4,
- 0xd8ed, 0xd8e6, 0x8d60, 0xd8de, 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da,
- 0xd8f1, 0xfbe5, 0xb452, 0x8d61, 0xd8eb, 0xdd4f, 0xd8dd, 0xb44f,
- 0xd8e1, 0xb450, 0xd8e0, 0xd8e5, 0xd8e2, 0x8d62, 0xa0a1, 0xd8e8,
- 0x9c40, 0xdd53, 0xdd56, 0xdd4e, 0xdd50, 0xdd55, 0xdd54, 0xb743,
- 0xd8db, 0xdd52, 0xb744, 0x98ad, 0xdd4d, 0xdd51, 0x9eea, 0xe1a9,
- 0xe1b0, 0xe1a7, 0x8cd4, 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, 0xe1a4,
- 0xe1a8, 0xe1a3, 0xb9f1, 0x9ceb, 0xe1a6, 0xb9f2, 0xe1ac, 0xe1ab,
- 0xe1aa, 0xfbe0, 0xe1af, 0x9f51, 0xe565, 0xe567, 0xbc6b, 0xe568,
- 0xe563, 0xe562, 0xe56c, 0xe56a, 0xbc6a, 0xe56d, 0xe564, 0xe569,
- 0xe56b, 0xe566, 0x8d65, 0xe961, 0xe966, 0xe960, 0xe965, 0x9cf1,
- 0xe95e, 0xe968, 0xe964, 0xe969, 0xe963, 0xe95f, 0xe967, 0xe96a,
- 0xe962, 0xfc58, 0xecda, 0xc0af, 0x8d66, 0xc0ad, 0xc0ac, 0xc0ae,
- 0xefc4, 0x9654, 0xf172, 0xf1fd, 0xf444, 0xf445, 0xc460, 0xf5c9,
- 0xc4de, 0xf5ca, 0xf6de, 0xc572, 0xc571, 0xf6dd, 0xc5c9, 0xfbe8,
- 0xf7d6, 0xc6cc, 0xa474, 0xa67b, 0xc9da, 0xcaca, 0xa8b5, 0xb15f,
- 0xa475, 0xa5aa, 0xa5a9, 0xa5a8, 0xa7c5, 0xae74, 0xdd57, 0xa476,
- 0xa477, 0xa478, 0xa4da, 0x9fce, 0xabd1, 0xceaf, 0xb453, 0xa479,
- 0xc95d, 0xa5ab, 0xa5ac, 0xc978, 0xa67c, 0xfbfc, 0xcacb, 0x9ae4,
- 0xa7c6, 0xcacc, 0xa9ae, 0x9f75, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d,
- 0xa9a9, 0xcc6f, 0xa9aa, 0xa9ad, 0xabd2, 0xabd4, 0xceb3, 0xceb0,
- 0xceb1, 0xceb2, 0xceb4, 0xabd3, 0xd174, 0xd173, 0xae76, 0xae75,
- 0xfbf1, 0xb162, 0xd546, 0xb161, 0xb163, 0xb160, 0xb455, 0xd545,
- 0xb456, 0xd8f3, 0x8d69, 0xb457, 0xd8f2, 0xb454, 0x934f, 0xdd5a,
- 0xdd5c, 0xb745, 0xdd5b, 0xdd59, 0xdd58, 0xe1b4, 0xb9f7, 0xb9f5,
- 0xb9f6, 0xe1b2, 0xe1b3, 0xb9f3, 0xe571, 0xe56f, 0x934e, 0xbc6d,
- 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0xe96d, 0xe96b, 0xe96c, 0xe56e,
- 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6, 0xe96e, 0xf1fe, 0xa47a,
- 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0xa9af, 0xb746, 0xfbf4, 0xa4db,
- 0xa5ae, 0xabd5, 0xb458, 0xc6ce, 0xc979, 0xc97a, 0xfbc3, 0xc9dc,
- 0x8965, 0xa7c8, 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1,
- 0xa7c7, 0x8c7a, 0xa9b3, 0xa9b4, 0xa9b1, 0x8c7b, 0xa9b0, 0xceb8,
- 0xa9b2, 0xabd6, 0xceb7, 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79,
- 0xd175, 0xd177, 0xae77, 0xd178, 0xae78, 0xd176, 0xceb5, 0xd547,
- 0xd54a, 0xd54b, 0xd548, 0xb167, 0xb166, 0xb164, 0xb165, 0xd549,
- 0x8d6a, 0xb168, 0xb45a, 0xb45b, 0xb45c, 0xdd5d, 0xdd5f, 0xdd61,
- 0xb748, 0xb747, 0xb459, 0xdd60, 0xdd5e, 0x9353, 0xe1b8, 0x9dfb,
- 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9, 0xe1b7, 0xe1b5,
- 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574, 0xbc71, 0xbc74,
- 0xe575, 0xbc6f, 0xbc73, 0xe973, 0xe971, 0xe970, 0xe972, 0xe96f,
- 0xc366, 0xf446, 0xf447, 0xf5cb, 0xf6df, 0xc655, 0xfbfd, 0xa9b5,
- 0xa7ca, 0x9059, 0xfc40, 0xabd8, 0xfc41, 0xfc43, 0xa47b, 0xa4dc,
- 0xa5af, 0xc9dd, 0xa7cb, 0xcad2, 0xcebb, 0xabd9, 0xb9fa, 0xa47c,
- 0x9361, 0xfc46, 0x9362, 0xa6a1, 0xb749, 0xa47d, 0xa4dd, 0xa4de,
- 0xa5b1, 0xa5b0, 0xc9de, 0xa6a2, 0xcad3, 0xa7cc, 0xcc71, 0xcc72,
- 0xcc73, 0x8d6b, 0xa9b6, 0xa9b7, 0xcc70, 0xa9b8, 0xabda, 0xcebc,
- 0xd17a, 0xae7a, 0xd179, 0xb169, 0xd54c, 0xb16a, 0xd54d, 0xfc4c,
- 0xb45d, 0xdd62, 0xe1bf, 0xe1be, 0xb9fb, 0xbc75, 0xe576, 0xbeca,
- 0xe974, 0xc0b1, 0x95b8, 0xc573, 0xf7d8, 0xc6d0, 0x8bca, 0xcc74,
- 0xcebd, 0xb16b, 0xd8f4, 0xb74a, 0x987a, 0xc255, 0xc6d1, 0xa7ce,
- 0xfc51, 0xa7cd, 0xabdb, 0xd17b, 0xb16d, 0xb343, 0xb16e, 0xb16c,
- 0xb45e, 0xe1c0, 0xb9fc, 0xbc76, 0xfc54, 0xc94c, 0xc9df, 0xcad5,
- 0xa7cf, 0xcad4, 0xa7d0, 0xfaaf, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb,
- 0xa9b9, 0xa9ba, 0xcc75, 0x8d6c, 0xabdd, 0xcebe, 0xabe0, 0xabdc,
- 0xabe2, 0xabde, 0xabdf, 0xabe1, 0xae7d, 0xae7c, 0xae7b, 0xd54f,
- 0xb16f, 0xb172, 0xb170, 0xd54e, 0xb175, 0xb171, 0xd550, 0xb174,
- 0xb173, 0xfa61, 0xd8f6, 0xd8f5, 0xfc57, 0xb461, 0xb45f, 0xb460,
- 0xd8f7, 0xb74b, 0xdd64, 0xb74c, 0xdd63, 0x9b70, 0xe577, 0xbc78,
- 0xe1c1, 0xbc77, 0xb9fd, 0xa051, 0xecde, 0xe975, 0xc0b2, 0xecdd,
- 0xf240, 0xf448, 0xf449, 0x8c7c, 0xa4df, 0x8bcb, 0xa5b2, 0xc97b,
- 0xa7d2, 0xa7d4, 0xc9e2, 0xcad8, 0xcad7, 0xcad6, 0xc9e1, 0xc9e0,
- 0xa6a4, 0xa7d3, 0xa7d1, 0xa6a3, 0x936e, 0xa9bd, 0xcc78, 0xfcd5,
- 0xa9be, 0xcadd, 0xcadf, 0xcade, 0xcc79, 0xcada, 0xa7d8, 0xa7d6,
- 0xcad9, 0xcadb, 0xcae1, 0xa7d5, 0xcadc, 0xcae5, 0xa9c0, 0xcae2,
- 0xa7d7, 0xcae0, 0xcae3, 0xa9bf, 0xa9c1, 0xcae4, 0xccaf, 0xcca2,
- 0xcc7e, 0xccae, 0xcca9, 0xabe7, 0xa9c2, 0xccaa, 0xccad, 0xabe3,
- 0xccac, 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, 0xcc7c, 0xcca5, 0xa9cd,
- 0xccb0, 0xabe4, 0xcca6, 0xabe5, 0xa9c9, 0xcca8, 0xfca9, 0xcecd,
- 0xabe6, 0xcc7b, 0xa9ca, 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7,
- 0xcc7a, 0xccab, 0xa9c4, 0xfc61, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5,
- 0xcebf, 0xcec0, 0x8966, 0xceca, 0xd1a1, 0xcecb, 0xabee, 0xcece,
- 0xcec4, 0xabed, 0xcec6, 0xcec7, 0xfacb, 0xcec9, 0xabe9, 0xaea3,
- 0xf9da, 0xcec5, 0xcec1, 0xaea4, 0xcecf, 0xae7e, 0xd17d, 0xcec8,
- 0xd17c, 0xcec3, 0xcecc, 0xabec, 0xaea1, 0xabf2, 0xaea2, 0xced0,
- 0xd17e, 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef, 0xaea5, 0xced1,
- 0xaea7, 0xabea, 0xcec2, 0x937a, 0xa0e0, 0x936b, 0xb176, 0xd1a4,
- 0xd1a6, 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, 0xd1a3, 0xb178,
- 0xd551, 0xaead, 0xaeab, 0xd1ae, 0xd552, 0xd1a5, 0xaeac, 0xd1a9,
- 0xaeaf, 0xd1ab, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xfc6b, 0xaea9,
- 0xb179, 0xd1a2, 0xb177, 0xa0dc, 0x9468, 0xb17a, 0xd555, 0xd55e,
- 0xb464, 0xfc6d, 0xb17c, 0xb1a3, 0xb465, 0xd560, 0xb1aa, 0xd8f9,
- 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554, 0xd562, 0xd565, 0xd949,
- 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac, 0xd55d, 0xd8f8, 0xd561,
- 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559, 0xb462, 0xd557, 0xd558,
- 0xb1a7, 0x8d71, 0xb1a6, 0xd55b, 0xb1ab, 0xd55f, 0xb1a4, 0xd55c,
- 0xfd64, 0xb1a9, 0xb466, 0xb463, 0xd8fb, 0x99ba, 0xd55a, 0xb17d,
- 0x9ad0, 0x9a61, 0xa0e5, 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d,
- 0xd944, 0xb471, 0xdd65, 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947,
- 0xa05b, 0xd948, 0xd94e, 0xb473, 0xb754, 0xd94a, 0xd94f, 0xd943,
- 0xb75e, 0x96ac, 0xb755, 0xb472, 0xd941, 0xd950, 0x9740, 0xb75d,
- 0xb470, 0xb74e, 0xd94d, 0xb474, 0xd945, 0xd8fe, 0xb46a, 0xd942,
- 0xd94b, 0x9ef1, 0xb74d, 0xb752, 0xb467, 0xd94c, 0xb750, 0x8c4d,
- 0xb468, 0xb75c, 0xe1c3, 0xdd70, 0xdd68, 0xe1c2, 0xdd6c, 0xdd6e,
- 0x9f7e, 0xdd6b, 0xb75b, 0xdd6a, 0xb75f, 0xe1d2, 0x8d72, 0xb75a,
- 0xba40, 0xdd71, 0xe1c4, 0xfc76, 0xb758, 0xdd69, 0xdd6d, 0xb9fe,
- 0xb74f, 0xdd66, 0xdd67, 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f,
- 0x96a9, 0xe1c8, 0xe1c9, 0xe1ce, 0xbc7d, 0xe1d5, 0xba47, 0xa06e,
- 0xba46, 0xe1d0, 0xfcaa, 0xbc7c, 0xe1c5, 0xba45, 0xfbcd, 0xe1d4,
- 0xba43, 0xba44, 0xfc74, 0xe1d1, 0xe5aa, 0xbc7a, 0xb46e, 0xe1d3,
- 0xbca3, 0xe1cb, 0xbc7b, 0xa074, 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7,
- 0xe1cd, 0xba48, 0xbc79, 0xba42, 0xe57a, 0xe1cf, 0xbca1, 0xa071,
- 0xbca4, 0xe1cc, 0xfc79, 0xbc7e, 0xe579, 0xfc7c, 0xe57e, 0xbece,
- 0xe578, 0xe9a3, 0xe5a9, 0xbca8, 0xbca6, 0xbecc, 0xe5a6, 0xe5a2,
- 0xbcac, 0x9c50, 0xe978, 0x9379, 0x9378, 0xbcaa, 0xe5a1, 0xa0dd,
- 0xe976, 0xe5a5, 0xe5a8, 0xe57d, 0xbcab, 0xbca5, 0xe977, 0xbecd,
- 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, 0xe57c, 0xe57b,
- 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0x8d75, 0xe9a2, 0x8d76,
- 0xe97e, 0xece1, 0xbed1, 0xe9a1, 0x9374, 0xe97c, 0xc0b4, 0xecdf,
- 0xe979, 0xe97b, 0xc0b5, 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d,
- 0xbecf, 0x8d77, 0xfca5, 0xfca2, 0xefcf, 0xefc7, 0x90c3, 0xece7,
- 0xefc8, 0xece3, 0xa079, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2,
- 0xece6, 0xefd0, 0xefcc, 0xefce, 0xefc9, 0xefca, 0xefcd, 0xefcb,
- 0xc367, 0xc36a, 0xc369, 0xc368, 0xc461, 0xf44a, 0xc462, 0xf241,
- 0xc4df, 0xf5cc, 0xc4e0, 0xc574, 0xc5ca, 0xf7d9, 0xf7da, 0xf7db,
- 0xf9ba, 0xa4e0, 0xc97c, 0xa5b3, 0xa6a6, 0xa6a7, 0xa6a5, 0xa6a8,
- 0xa7da, 0xa7d9, 0xccb1, 0xa9cf, 0xa9ce, 0xd1af, 0xb1ad, 0xb1ae,
- 0xb475, 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0xe1d7,
- 0xe1d6, 0xba49, 0xe1d8, 0x8d79, 0xe5ac, 0xbcae, 0xbed4, 0xc0b8,
- 0xc257, 0xc0b9, 0xa4e1, 0x8bfc, 0xa076, 0xcae6, 0xccb2, 0xa9d1,
- 0xa9d0, 0xa9d2, 0xabf3, 0xced2, 0xced3, 0xd1b0, 0xaeb0, 0xb1af,
- 0xb476, 0xd951, 0xa4e2, 0x8bcd, 0xa47e, 0xa4e3, 0xc97d, 0xa5b7,
- 0xa5b6, 0xa5b4, 0xa5b5, 0xa6ab, 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3,
- 0xc9e4, 0xc9ea, 0xc9e6, 0xc9e8, 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7,
- 0x9f5a, 0xa7e1, 0xa7ea, 0xa7e8, 0xcaf0, 0xcaed, 0xcaf5, 0xa7e6,
- 0xcaf6, 0xa7df, 0xcaf3, 0xa7e5, 0xcaef, 0xcaee, 0xa7e3, 0xcaf4,
- 0xa7e4, 0xa9d3, 0xa7de, 0xcaf1, 0x9ff4, 0xcae7, 0xa7db, 0x9fba,
- 0xa7ee, 0xcaec, 0xcaf2, 0xa7e0, 0xa7e2, 0xcae8, 0xcae9, 0xcaea,
- 0x8d7a, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc,
- 0xa7e9, 0x9e45, 0x93b0, 0xa075, 0xa9e1, 0xccbe, 0xccb7, 0xa9dc,
- 0xa9ef, 0xccb3, 0xccba, 0xccbc, 0xccbf, 0xa9ea, 0xccbb, 0xccb4,
- 0xa9e8, 0xccb8, 0xccc0, 0xa9d9, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6,
- 0xa9d7, 0xa9d8, 0x9b46, 0xa9d6, 0xfcae, 0xa9ee, 0xa9e6, 0xa9e0,
- 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7, 0xa9f0, 0xced4, 0xa9e4,
- 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xfcb0, 0xa9ec, 0xa9ed, 0xa9eb,
- 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0xfa51, 0x8d7b, 0xceda, 0xac41,
- 0xabf8, 0xabfa, 0xac40, 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43,
- 0xced7, 0xcedf, 0xabfe, 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7,
- 0xabfb, 0xac42, 0xaeb3, 0xcee0, 0xabf9, 0xac45, 0xced9, 0xabfc,
- 0xaeb2, 0xabf6, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, 0xd1b2,
- 0xac44, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0x8d7c, 0xaec1, 0xd1be,
- 0xaebf, 0xaec0, 0xd1b4, 0xd1c4, 0x9ed6, 0xaeb6, 0x93ac, 0xd566,
- 0xd1c6, 0xd1c0, 0x9f5b, 0xd1b7, 0x93a9, 0xd1c9, 0xd1ba, 0xaebc,
- 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0xd1cb, 0xd1bf, 0xaeb8, 0xd1b8,
- 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, 0xd1cc, 0xaebb, 0xd1bc, 0xd1bb,
- 0xaec3, 0xaec2, 0xaeb4, 0xaeba, 0xaebd, 0xd1c8, 0xd1c2, 0xaeb7,
- 0xd1b3, 0xd1ca, 0xd1c1, 0xd1c3, 0xd1c7, 0xa07c, 0xd567, 0xb1b7,
- 0xb1cb, 0xb1ca, 0xb1bf, 0xfcb2, 0xd579, 0xd575, 0xd572, 0xd5a6,
- 0xb1ba, 0xb1b2, 0xd577, 0xb4a8, 0xb1b6, 0xd5a1, 0x8ac1, 0xb1cc,
- 0xb1c9, 0xd57b, 0xd56a, 0x9fb4, 0xb1c8, 0xd5a3, 0xd569, 0xb1bd,
- 0xb1c1, 0xd5a2, 0xd573, 0xb1c2, 0xb1bc, 0xd568, 0xfcac, 0xb478,
- 0xd5a5, 0xd571, 0xb1c7, 0xd574, 0xd5a4, 0xb1c6, 0xd952, 0xb1b3,
- 0xd56f, 0xb1b8, 0xb1c3, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e,
- 0xb1b0, 0xb1c4, 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0xb1b1, 0xb1c0,
- 0xb1bb, 0xb1b9, 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, 0xd954,
- 0xd953, 0x9e4c, 0xd56b, 0xd964, 0xb47a, 0x8fc5, 0xd96a, 0xd959,
- 0xd967, 0xdd77, 0xb47d, 0xd96b, 0xd96e, 0xb47c, 0xd95c, 0xd96d,
- 0xd96c, 0xb47e, 0xd955, 0xb479, 0xb4a3, 0x93ad, 0xb4a1, 0xd969,
- 0xd95f, 0xb4a5, 0xd970, 0xd968, 0xd971, 0xb4ad, 0xb4ab, 0xd966,
- 0xd965, 0x9dc3, 0xd963, 0xd95d, 0xb4a4, 0x8da2, 0xb4a2, 0xd1b9,
- 0xd956, 0x9d4a, 0xddb7, 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0xb4a6,
- 0xb4a7, 0xd958, 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961,
- 0xd95e, 0xfcb6, 0xb4ae, 0x8da3, 0x9e4b, 0x9e4d, 0xb770, 0x8da4,
- 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c, 0xddbb, 0xb769, 0xdd7a,
- 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e, 0xb76f, 0xdda5, 0xddb2,
- 0xddb8, 0xb76a, 0xb764, 0xdda3, 0xdd7d, 0xddba, 0xdda8, 0xdda9,
- 0xdd7e, 0xddb4, 0xddab, 0xddb5, 0xddad, 0xb765, 0xe1d9, 0xb768,
- 0xb766, 0xddb9, 0xddb0, 0xddac, 0x8afd, 0xdda1, 0xba53, 0xddaf,
- 0xb76d, 0xdda7, 0xfcb5, 0xdda6, 0xfcc3, 0x93b2, 0xb767, 0xb763,
- 0xe1ee, 0xddb3, 0xddae, 0xdda2, 0xe1e9, 0xe1da, 0xe1e5, 0xe1ec,
- 0xba51, 0xb4ac, 0xe1ea, 0xba4c, 0xba4b, 0xe1f1, 0x8da5, 0xe1db,
- 0xe1e8, 0xe1dc, 0xe1e7, 0xba4f, 0xe1eb, 0xd962, 0xe1f2, 0xe1e3,
- 0xba52, 0xe5ba, 0xbcaf, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0,
- 0xe5ae, 0x93a1, 0xe1df, 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3,
- 0xba4e, 0xbcb1, 0xba50, 0xba55, 0x8ac6, 0xe1e1, 0xe1ed, 0xe1e6,
- 0xe5b1, 0xba4a, 0xbcb4, 0xe9aa, 0xe5b6, 0xe5b5, 0xe5b7, 0x8a5b,
- 0xe5b4, 0xbcb5, 0x894d, 0xbcbb, 0xbcb8, 0xbcb9, 0xe5af, 0xe5b2,
- 0xe5bc, 0xbcc1, 0xbcbf, 0xe5b3, 0xd95a, 0xbcb2, 0xe5b9, 0xe5b0,
- 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0xbcba, 0xbcbe, 0xbcc0,
- 0xbcbd, 0xbcbc, 0xfed4, 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3, 0x8a78,
- 0x93ab, 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, 0x8da7, 0xbed6,
- 0xbedd, 0xe9ab, 0xbedb, 0xbed5, 0xbedc, 0xe9a8, 0xc0bb, 0xbed7,
- 0xbede, 0xc0ba, 0xe9a7, 0xe9a6, 0xbee0, 0x9f45, 0xbee1, 0xe9a5,
- 0xe9a4, 0xc0bc, 0xe9ae, 0xbeda, 0xe9ac, 0x8a56, 0xc0bd, 0xfcbf,
- 0xc0c2, 0xecea, 0xecec, 0xfcc0, 0xc0bf, 0x8ee6, 0xeced, 0xece9,
- 0x8aa4, 0xeceb, 0xc0c0, 0xc0c3, 0xece8, 0xc0be, 0xc0c1, 0xc259,
- 0xe9ad, 0xc258, 0xc25e, 0xefd4, 0xc25c, 0xc25d, 0xefd7, 0xefd3,
- 0xc25a, 0xefd1, 0xc36b, 0xefd5, 0xefd6, 0xefd2, 0xc25b, 0xf242,
- 0xf245, 0x8943, 0xf246, 0xf244, 0xf247, 0xc36c, 0xf243, 0x93f3,
- 0xf44e, 0xc464, 0xf44d, 0xf44c, 0xf44b, 0xc463, 0xc465, 0xf5cd,
- 0xc4e2, 0xc4e1, 0xfcab, 0x9ea2, 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb,
- 0xc575, 0xf7dd, 0xf6e2, 0xf7dc, 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9,
- 0xf8ef, 0xa4e4, 0x9dc7, 0xd972, 0xe9af, 0xc6d2, 0x8bce, 0xa6ac,
- 0xcaf7, 0xa7f1, 0xa7ef, 0xa7f0, 0xccc1, 0xa9f1, 0xac46, 0xcee7,
- 0xcee8, 0xac47, 0xd1ce, 0xaec4, 0xaec5, 0xd1cd, 0xfcc5, 0xb1d3,
- 0xb1cf, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, 0xb1d4, 0xb1d0,
- 0xd976, 0xb1cd, 0xb4af, 0xfccb, 0xb4b1, 0xb4b2, 0xd975, 0xd978,
- 0xb4b0, 0xd973, 0xd977, 0xd974, 0x93b3, 0xb771, 0xfcca, 0xddbc,
- 0xba56, 0xe1f4, 0xbee3, 0xbcc4, 0xe5bd, 0xbcc5, 0xbcc6, 0xe5bf,
- 0xe5be, 0xe5c0, 0xe9b1, 0xe9b0, 0xecef, 0xecee, 0xc0c4, 0xc0c5,
- 0xf248, 0xfcc9, 0x8dac, 0xa4e5, 0xfbc6, 0x8967, 0x8c7e, 0xd979,
- 0xb4b4, 0xb4b3, 0xddbd, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, 0xaec6,
- 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, 0xe1f5, 0xba57, 0xe9b2,
- 0xa4e7, 0xa5b8, 0xa9f2, 0xccc2, 0xcee9, 0xac48, 0xb1d9, 0xd97c,
- 0xb4b5, 0xb773, 0xe5c1, 0xe5c2, 0xfccd, 0xecf0, 0xc25f, 0xf8f0,
- 0xa4e8, 0xccc3, 0xa9f3, 0xac49, 0x9cf3, 0xceea, 0xaec7, 0xd1d2,
- 0xd1d0, 0xd1d1, 0xaec8, 0xd1cf, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd,
- 0xb1da, 0xd97d, 0xfcd0, 0xd97e, 0xddbe, 0x95bb, 0xba59, 0xba58,
- 0xecf1, 0xefd9, 0xf24a, 0xf249, 0xf44f, 0xfcd3, 0xc95e, 0xac4a,
- 0xfcd4, 0xa4e9, 0xa5b9, 0xa6ae, 0xa6ad, 0xa6af, 0xa6b0, 0xc9ee,
- 0xc9ed, 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9, 0xcafc, 0xa9f4,
- 0xccc9, 0xccc5, 0xccce, 0x8dae, 0xa9fb, 0xa9f9, 0xccca, 0xccc6,
- 0xcccd, 0xa9f8, 0xaa40, 0xccc8, 0xccc4, 0xa9fe, 0xcccb, 0xa9f7,
- 0xcccc, 0xa9fa, 0xa9fc, 0xccd0, 0xcccf, 0xccc7, 0xa9f6, 0xa9f5,
- 0xa9fd, 0xfcd7, 0xceef, 0xcef5, 0x93db, 0xac50, 0xac4d, 0xceec,
- 0xcef1, 0xfe63, 0xac53, 0xac4b, 0xcef0, 0xac4e, 0xac51, 0xcef3,
- 0xac4c, 0xcef8, 0xac4f, 0x93d5, 0xac52, 0xceed, 0xcef2, 0xcef6,
- 0xceee, 0xceeb, 0xcef7, 0xcef4, 0xaed0, 0xaec9, 0xaecc, 0xfcda,
- 0xaecf, 0xd1d5, 0x9b71, 0xaeca, 0xd1d3, 0xfcdd, 0xaece, 0xaecb,
- 0xd1d6, 0xaecd, 0x8daf, 0xfaf2, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad,
- 0xb1de, 0xb1e3, 0xd1d4, 0xd5aa, 0xd5ae, 0x93d8, 0xb1e0, 0xd5a9,
- 0xb1e2, 0xfcdf, 0xb1e1, 0xd9a7, 0x93d3, 0xd9a2, 0xb4b6, 0xb4ba,
- 0xb4b7, 0xd9a5, 0xd9a8, 0xfce1, 0xb4b8, 0xb4b9, 0xb4be, 0xddc7,
- 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1, 0x8e76, 0xb4bd, 0xd9a4, 0xb779,
- 0xfc62, 0xddbf, 0xb776, 0xb777, 0xb775, 0xddc4, 0xddc3, 0xddc0,
- 0xb77b, 0x93d1, 0xddc2, 0xb4bb, 0x8db1, 0xddc6, 0xddc1, 0xb778,
- 0xb774, 0xb77a, 0xddc5, 0x9859, 0xba5c, 0xe1f8, 0xe1f7, 0xe1f6,
- 0xba5a, 0xfb52, 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0xfb53, 0xbcc7,
- 0xe5c9, 0xe5c4, 0xbcca, 0xe5c6, 0xfb4d, 0xbcc9, 0xe5c3, 0x9cbf,
- 0xe5c7, 0xbee9, 0xbee6, 0xe9bb, 0xe9ba, 0xe9b9, 0xe9b4, 0x9b72,
- 0xe9b5, 0xbee7, 0xbee4, 0xbee8, 0xe9b3, 0xbee5, 0xe9b6, 0xe9b7,
- 0xe9bc, 0xfb50, 0x93be, 0xe9b8, 0xecf2, 0xc0c7, 0xefdc, 0xc0c6,
- 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0xc36d, 0xf451, 0xf452,
- 0xc466, 0xf450, 0xc4e4, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0xa4ea,
- 0x9df1, 0xa6b1, 0xa6b2, 0xa7f3, 0xccd1, 0xac54, 0xaed1, 0xb1e4,
- 0xb0d2, 0xb4bf, 0xb4c0, 0xb3cc, 0xd9a9, 0xfceb, 0xb77c, 0xe1fa,
- 0xe1f9, 0xa4eb, 0xa6b3, 0xccd2, 0xaa42, 0xa0bb, 0xaa41, 0x9b7e,
- 0xcef9, 0xcefa, 0xd1d7, 0xd1d8, 0xaed2, 0xaed3, 0x8db3, 0xaed4,
- 0xd5af, 0x8c52, 0xb1e6, 0xb4c2, 0x9ae8, 0xb4c1, 0xddc8, 0xdf7a,
- 0xe1fb, 0xe9bd, 0x8edc, 0xc261, 0xc467, 0xa4ec, 0xa5bc, 0xa5bd,
- 0xa5bb, 0xa5be, 0xa5ba, 0xa6b6, 0xc9f6, 0xa6b5, 0xa6b7, 0x9cf9,
- 0xc9f1, 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4,
- 0xfa50, 0xcafd, 0xa7fd, 0xcafe, 0xcb43, 0xa7fc, 0xcb47, 0xcb42,
- 0xcb45, 0xa7f5, 0xa7f6, 0xa7f7, 0xa7f8, 0xa840, 0xcb41, 0xa7fa,
- 0xa841, 0xcb40, 0xcb46, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, 0xa7fe,
- 0x98e7, 0xfcf3, 0xfcf2, 0xaa57, 0x8cca, 0xccd4, 0xaa43, 0xaa4d,
- 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53, 0xccd7, 0xaa49,
- 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4, 0xaa51, 0xaa4f,
- 0xcce5, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a, 0xaa50, 0xaa44,
- 0xccde, 0xccdd, 0xccd5, 0x93e5, 0xaa52, 0xcce1, 0xccd6, 0xaa55,
- 0xcce8, 0xaa45, 0xaa4c, 0xccd9, 0xcce2, 0xaa54, 0xaa47, 0xaa4b,
- 0xcce0, 0x9a59, 0x8db5, 0xfd4d, 0xcf5b, 0xac5c, 0xac69, 0xfd5e,
- 0xcf56, 0xcf4c, 0xac62, 0xcf4a, 0xac5b, 0xcf45, 0xac65, 0xcf52,
- 0xcefe, 0xcf41, 0x8f7d, 0xcf44, 0xcefb, 0xcf51, 0xcf61, 0xac60,
- 0xcf46, 0xcf58, 0xcefd, 0xcf5f, 0xcf60, 0xcf63, 0xcf5a, 0xcf4b,
- 0xcf53, 0xac66, 0xac59, 0xac61, 0xac6d, 0xac56, 0xac58, 0x9547,
- 0xfcf6, 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40, 0xac6c, 0xac67,
- 0xcf49, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c, 0xcf54, 0xac5e,
- 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f, 0xcf55, 0xac57,
- 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d, 0xcf42, 0x9250,
- 0xcf5e, 0xcf57, 0x8968, 0xac55, 0x8db6, 0xfcfb, 0xa07d, 0x98fc,
- 0x8969, 0xfe4f, 0x9256, 0xd1ec, 0xaeea, 0xd1ed, 0xd1e1, 0xaedf,
- 0xaeeb, 0xd1da, 0xfac9, 0xd1e3, 0xd1eb, 0x93e8, 0xd1d9, 0xd1f4,
- 0xaed5, 0xfcf8, 0xd1f3, 0xd1ee, 0xd1ef, 0xaedd, 0xaee8, 0xd1e5,
- 0xd1e6, 0xd1f0, 0xd1e7, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4,
- 0x9ce3, 0xfda9, 0xaed6, 0xaeda, 0xd1f2, 0xd1de, 0xaee6, 0xaee2,
- 0xfc44, 0xaee5, 0xaeec, 0xaedb, 0xaee7, 0xd1e9, 0xaee9, 0xaed8,
- 0x9640, 0xaed7, 0xd1db, 0x8db8, 0xd1df, 0xaee0, 0xd1f1, 0xd1e8,
- 0xd1e0, 0xaee4, 0xaee1, 0xaed9, 0xaedc, 0x9b4a, 0x8fb9, 0xfcfe,
- 0x896a, 0xd5c4, 0xd5b4, 0xd5b5, 0xd5b9, 0xd5c8, 0xd5c5, 0xd5be,
- 0xd5bd, 0xb1ed, 0xd5c1, 0xd5d0, 0xd5b0, 0xd5d1, 0xd5c3, 0xd5d5,
- 0xd5c9, 0xb1ec, 0xd5c7, 0xb1e7, 0xb1fc, 0xb1f2, 0x8db9, 0xb1f6,
- 0xb1f5, 0xd5b1, 0x917e, 0xd5ce, 0xd5d4, 0xd5cc, 0xd5d3, 0xd5c0,
- 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7, 0xd5cb, 0xb1f0, 0x93f4,
- 0xd5ca, 0xd5b3, 0xb1f8, 0xb1fa, 0xd5cd, 0xb1fb, 0xb1e9, 0xd5ba,
- 0xd5cf, 0xfb7c, 0xb1ef, 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7, 0xd5bb,
- 0xb1f4, 0xd5b6, 0xb1e8, 0xb1f1, 0xb1ee, 0xd5bf, 0xaede, 0xd9c0,
- 0xb1eb, 0x93e7, 0x97ef, 0xfe4a, 0xfd45, 0xb1f3, 0x96a5, 0xd9c3,
- 0xd9d9, 0xd9ce, 0xb4d6, 0xfee0, 0xb4d1, 0xd9bd, 0xb4d2, 0xd9cd,
- 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5, 0xb4c4, 0xd9b3, 0xb4c7,
- 0xb4c6, 0xb4d7, 0xd9ad, 0xd9cf, 0xd9d0, 0xb4c9, 0xb4c5, 0xd9bb,
- 0xb4d0, 0xd9b6, 0xd9d1, 0xb4cc, 0xd9c9, 0xd9d6, 0xd9b0, 0xd9b5,
- 0xd9af, 0xb4cb, 0xd9c2, 0xddde, 0xd9b1, 0xb4cf, 0xd9ba, 0xd9d2,
- 0xb4ca, 0xd9b7, 0xd9b4, 0xd9c5, 0xb4cd, 0xb4c3, 0xb4d9, 0xd9c8,
- 0xd9c7, 0xfd48, 0xfd47, 0xfef2, 0xfe6a, 0xd9ac, 0xb4c8, 0xd9d4,
- 0xd9bc, 0xd9be, 0x8dbd, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5,
- 0xd9b2, 0xd9b9, 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0xd9cc,
- 0x9ba1, 0x8ca2, 0x9ab7, 0x8efc, 0xd9d8, 0xd9ae, 0x9fa1, 0xddf2,
- 0xb7a6, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xfd51, 0xddec, 0xddcb,
- 0xddd2, 0xddea, 0xddf4, 0xdddc, 0xfaad, 0xddcf, 0xdde2, 0xdde7,
- 0xddd3, 0x8dbe, 0xdde4, 0xddd0, 0x89a4, 0xddd7, 0xddd8, 0xb7a8,
- 0xddeb, 0xdde9, 0xddcc, 0xddee, 0xddef, 0xddf1, 0xb7ac, 0xb7a4,
- 0x9ad9, 0xd5b8, 0xddd4, 0xdde6, 0xddd5, 0xb7a1, 0xb7b1, 0xdded,
- 0xb7af, 0xb7ab, 0xddca, 0xb7a3, 0xfd4e, 0xddcd, 0xb7b0, 0x8dc0,
- 0xdddd, 0xddc9, 0x97f0, 0xb7a9, 0xdde1, 0xddd1, 0xb7aa, 0xddda,
- 0xb77e, 0xb4d8, 0xdde3, 0xd9bf, 0xddce, 0x93b4, 0xfd44, 0xdde8,
- 0xb7a5, 0xdde5, 0xb7a2, 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0x9fa7,
- 0xb7a7, 0xdec6, 0x8dc2, 0xb7ae, 0x99b6, 0xe24a, 0xe248, 0xe25e,
- 0xe246, 0xe258, 0xb77d, 0xba5f, 0xe242, 0xe25d, 0xfd52, 0xe247,
- 0xe255, 0xba64, 0xba5d, 0xe25b, 0x8dc1, 0xe240, 0xe25a, 0x8e46,
- 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, 0xba5e, 0xe24b, 0xe259,
- 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, 0xe243, 0xe1fc, 0xa0d1,
- 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, 0xe253, 0xba66, 0xe245,
- 0xe250, 0xe24c, 0xe24e, 0x9fca, 0xba60, 0xe25f, 0xba6e, 0xe24f,
- 0xe262, 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256,
- 0xba69, 0x92cf, 0xba62, 0xe252, 0x9cf4, 0x8dc4, 0xe25c, 0xfd41,
- 0xe5d5, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de, 0xbccd, 0x9b4c, 0xe5e5,
- 0xe5d4, 0xbcd8, 0xe5db, 0xe5d0, 0xe5da, 0xbcd5, 0xe5ee, 0xe5eb,
- 0xe5dd, 0xe5ce, 0xfd57, 0xfcef, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8,
- 0xe5d3, 0xe5ca, 0xbcce, 0xbcd6, 0x9cde, 0xe5e7, 0xbcd7, 0xe5cb,
- 0xe5ed, 0xe5e0, 0xe5e6, 0xbcd4, 0xfd42, 0x986c, 0xe5e3, 0xe5ea,
- 0xbcd9, 0xbcd3, 0xe5dc, 0xe5cf, 0xe5ef, 0xe5cc, 0xe5e8, 0xbcd0,
- 0x97f9, 0xe5d6, 0x9558, 0xe5d7, 0xbccf, 0xbccc, 0xe5d2, 0xbcd2,
- 0xbccb, 0xe5e9, 0xe5ec, 0xe5d9, 0xe9ca, 0x985e, 0xfe7b, 0x94cd,
- 0xe9c2, 0x93ee, 0xe9be, 0xbef6, 0xbeeb, 0xbef0, 0xbeec, 0xe9cc,
- 0xe9d7, 0xbeea, 0xe9c4, 0xe9cd, 0xe5df, 0xe9ce, 0x8ca3, 0xbef1,
- 0xfd5a, 0xe9dd, 0xbef5, 0xbef8, 0xe9c0, 0xbef4, 0x93f5, 0xe9db,
- 0xe9dc, 0xe9d2, 0xe9d1, 0xe9c9, 0x93ef, 0x8eea, 0xe9d3, 0xe9da,
- 0xe9d9, 0x8f5b, 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0xe9c5, 0xe9d8,
- 0xbef7, 0xe9d6, 0xbef3, 0xbef2, 0x8c5e, 0xe9d0, 0x8dc6, 0xe9bf,
- 0xe9c1, 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0xe9c6, 0xe9d4, 0x8dc8,
- 0x8dc7, 0xe9c7, 0x93f7, 0xc0cf, 0xed45, 0xc0c8, 0xecf5, 0x8dc9,
- 0xed41, 0xc0ca, 0xed48, 0xecfc, 0xecf7, 0xfbf2, 0xed49, 0xecf3,
- 0xecfe, 0x9670, 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9, 0xed40,
- 0xecf4, 0xc0d0, 0x8dcb, 0xed47, 0xecf9, 0xc0cc, 0xfd5c, 0xecfb,
- 0xecf8, 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46,
- 0x8f65, 0xed42, 0x8dcd, 0xc263, 0xefe7, 0xc268, 0xc269, 0x9da8,
- 0x94f9, 0xc262, 0xefe6, 0x8dce, 0xefe3, 0xefe4, 0xc266, 0xefde,
- 0xefe2, 0xc265, 0xefdf, 0x93ea, 0xc267, 0xc264, 0xefdd, 0xefe1,
- 0xefe5, 0xfd5f, 0x93f0, 0x9fb6, 0xf251, 0xf24e, 0xf257, 0xf256,
- 0xf254, 0xf24f, 0xc372, 0x8dcf, 0x9763, 0xf250, 0xc371, 0xc0cd,
- 0xf253, 0xc370, 0xf258, 0xf252, 0xf24d, 0xefe0, 0xc36f, 0xf24c,
- 0xf456, 0xf455, 0xf255, 0xc468, 0xf459, 0xf45a, 0xf454, 0xf458,
- 0xf453, 0x8dd0, 0xf5d1, 0xf457, 0xc4e7, 0xc4e5, 0xf5cf, 0xf5d2,
- 0xf5ce, 0xf5d0, 0xc4e6, 0x93f1, 0xf6e5, 0xf6e6, 0xc576, 0xf6e4,
- 0xf7e2, 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0xc656, 0xf8f3, 0xf8f1,
- 0xf8f2, 0xf8f4, 0xfd62, 0xf9bb, 0xa4ed, 0xa6b8, 0xaa59, 0xcce9,
- 0xcf64, 0xd1f5, 0xd1f7, 0xd1f6, 0xd1f8, 0xb1fd, 0xd5d7, 0xd1f9,
- 0xfd65, 0xd5d6, 0xd5d8, 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd,
- 0xb4dc, 0xb4da, 0xd9dc, 0xddfa, 0xddf8, 0xddf7, 0xddf6, 0xddf5,
- 0xb7b2, 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb,
- 0xbcda, 0xe5f0, 0x9fdb, 0xe9df, 0xe9de, 0xe9e0, 0x93f8, 0xbef9,
- 0xed4b, 0xc0d3, 0xefe8, 0xc26a, 0xf259, 0xc577, 0xa4ee, 0xa5bf,
- 0xa6b9, 0xa842, 0xaa5a, 0xaa5b, 0xac6e, 0xd1fa, 0x8bf7, 0xb7b3,
- 0xfd66, 0xe6d1, 0xbefa, 0xc26b, 0xa4ef, 0x8bcf, 0xa6ba, 0xcceb,
- 0xaa5c, 0xccea, 0x8dd1, 0xcf65, 0xac6f, 0xcf66, 0xac70, 0xd1fc,
- 0xaeee, 0xaeed, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db, 0xd5da, 0xd9de,
- 0xd9e1, 0xb4de, 0xd9df, 0xb4dd, 0xd9e0, 0xddfb, 0xe266, 0xe267,
- 0xe268, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4, 0xe9e1, 0xe9e2,
- 0xe9e3, 0xed4c, 0xc0d4, 0xc26c, 0xf25a, 0xc4e8, 0xc95f, 0xac71,
- 0xcf67, 0xaeef, 0xb1fe, 0xb4df, 0xd9e2, 0xb7b5, 0xb7b4, 0x8dd2,
- 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, 0xe9e4, 0xefe9, 0xf7e3,
- 0xa4f0, 0xc960, 0xa5c0, 0xa843, 0xcb48, 0xac72, 0xb7b6, 0xa4f1,
- 0xcf68, 0xac73, 0xcf69, 0xc0d5, 0xa4f2, 0xfd71, 0xccec, 0xcf6a,
- 0xfd6f, 0xd242, 0xd241, 0xd1fe, 0xd1fd, 0xd243, 0xd240, 0x8dd3,
- 0xb240, 0xb241, 0xb4e0, 0xd9e3, 0xd9e4, 0xd9e5, 0xde41, 0xde42,
- 0xde40, 0x9fe7, 0xddfd, 0xddfe, 0xb7b7, 0xe26b, 0xe5f7, 0xe5f6,
- 0xe5f5, 0xe5f8, 0xe9e7, 0xe9e6, 0xbefb, 0xe9e8, 0xc0d6, 0xed4d,
- 0xefea, 0xf25b, 0xf6e7, 0xa4f3, 0xa5c2, 0xa5c1, 0xaa5d, 0xc961,
- 0xc97e, 0xa6bb, 0xc9f7, 0xcb49, 0xcb4a, 0xaa5e, 0x90bd, 0xcced,
- 0xac74, 0xcf6b, 0xcf6c, 0xaef0, 0xaef4, 0xd244, 0xaef3, 0xaef1,
- 0xaef2, 0xd5df, 0xb242, 0xb4e3, 0xb4e1, 0xb4e2, 0xd9e6, 0x9fd0,
- 0xba72, 0xa4f4, 0x8bd0, 0xc9a1, 0xfd72, 0xa5c3, 0x9cae, 0x8bd1,
- 0xc9a4, 0x8adb, 0xa5c6, 0xc9a3, 0xa5c5, 0xa5c4, 0xa844, 0xc9a2,
- 0xc9f8, 0xfae4, 0xc9fc, 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb,
- 0xa6c1, 0xc9f9, 0xc9fd, 0xa6c2, 0xa6bd, 0x95ce, 0xa6be, 0xfd76,
- 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf, 0xa6c0, 0xa6c3, 0xcb5b,
- 0xcb59, 0xcb4c, 0xa851, 0xcb53, 0xa84c, 0xcb4d, 0xcb55, 0xfb62,
- 0xcb52, 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858, 0x8dd4, 0xa85a,
- 0xcb4b, 0xfd78, 0xa84d, 0xcb5c, 0xa854, 0xa857, 0x8ee3, 0xcd45,
- 0xa847, 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, 0xa848,
- 0xa849, 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, 0xa84e,
- 0xa853, 0xccee, 0xa85c, 0xcb57, 0xa852, 0xa85d, 0xa846, 0xcb54,
- 0xa84b, 0xcb58, 0xcd44, 0x9076, 0x98c6, 0x8dd5, 0xaa6a, 0xaa7a,
- 0xccf5, 0xaa71, 0x97d1, 0xcd4b, 0xaa62, 0x9eb6, 0xaa65, 0xcd42,
- 0xccf3, 0xccf7, 0xaa6d, 0xaa6f, 0xccfa, 0xaa76, 0xaa68, 0xaa66,
- 0xaa67, 0xaa75, 0xcd47, 0xaa70, 0xccf9, 0xccfb, 0xaa6e, 0xaa73,
- 0xccfc, 0xcd4a, 0xac75, 0xaa79, 0xfac7, 0xaa63, 0xcd49, 0xa042,
- 0xcd4d, 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d,
- 0xaa72, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0x9873,
- 0xaa7e, 0xaa77, 0xaa69, 0xaa5f, 0xaa64, 0xccf6, 0xaa60, 0xcd4e,
- 0x9ffc, 0xccf0, 0xccef, 0xccfd, 0xccf1, 0xaa7b, 0xaef5, 0xaa74,
- 0xccfe, 0xaa61, 0xaca6, 0xcd4c, 0x8ca5, 0xcf7c, 0xcfa1, 0x8dd7,
- 0xcfa4, 0xcf77, 0x92fb, 0x8dd8, 0xcfa7, 0xcfaa, 0xcfac, 0xcf74,
- 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, 0xcfad, 0xcf7b, 0xcf73,
- 0xd264, 0xac7e, 0xcfa2, 0xcf78, 0xcf7a, 0xaca5, 0xcf7d, 0xac7d,
- 0xcf70, 0xcfa8, 0xcfab, 0x944f, 0xac7a, 0x8dd9, 0xaca8, 0xcf6d,
- 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, 0xcd48,
- 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, 0xaca9,
- 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, 0xcfa6,
- 0xac79, 0xcf7e, 0x896b, 0x97ce, 0xd24c, 0xaefd, 0xaf43, 0xfaf3,
- 0xfdae, 0xd255, 0xd25b, 0xd257, 0xd24a, 0xd24d, 0xd246, 0xd247,
- 0xaf4a, 0xaefa, 0xd256, 0xd25f, 0xaf45, 0xaef6, 0xaf40, 0xd24e,
- 0xaf42, 0xd24f, 0xd259, 0xfbaf, 0x92b7, 0xaf44, 0xd268, 0xd248,
- 0xaefc, 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a, 0xd267, 0xd261,
- 0xd253, 0xd262, 0x8dda, 0xd25c, 0xd265, 0xd263, 0xaf49, 0xd254,
- 0xaef9, 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251, 0xb243,
- 0x9c5a, 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xfdad,
- 0xd258, 0xd25d, 0x8ddc, 0x9444, 0xb265, 0xd5e1, 0xd5e5, 0xb252,
- 0xb250, 0x8ddd, 0xb247, 0xd5e3, 0xd5e2, 0xb25b, 0xd5e8, 0xb255,
- 0xa0d6, 0xd5fa, 0xd647, 0xb244, 0xd5f7, 0xd5f0, 0xb267, 0xd5e0,
- 0xd5fc, 0xb264, 0xb258, 0xb263, 0xb24e, 0xd5ec, 0xd5fe, 0xd5f6,
- 0xb24f, 0xb249, 0xd645, 0xd5fd, 0xd640, 0xb251, 0xb259, 0xd642,
- 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, 0xb25e, 0xb246, 0xb25c, 0xd5f4,
- 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, 0xd5ed, 0xb248, 0xd5e7, 0xd646,
- 0xb24a, 0xd5f1, 0xb268, 0xb262, 0xd5e6, 0xb25f, 0xb25d, 0xb266,
- 0xd5f8, 0xb261, 0xd252, 0xd5f9, 0xb260, 0xd641, 0xb245, 0xd5f5,
- 0xb257, 0xd5e9, 0xb256, 0xb254, 0xb24c, 0xb24b, 0xd9e7, 0xd643,
- 0x8c41, 0xd5eb, 0x97d5, 0xd9fc, 0x944a, 0xb24d, 0x944d, 0x97cb,
- 0x8dde, 0x8ddf, 0xb541, 0xb25a, 0xb4ee, 0xd9f6, 0xb4fc, 0xd9ea,
- 0xb4eb, 0xb4e7, 0xda49, 0xb4ed, 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d,
- 0xda44, 0x8de0, 0xfef9, 0xd9f1, 0xb4fa, 0xb4f4, 0xd9fd, 0xb4e4,
- 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55, 0xda56, 0xb4e5,
- 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd, 0xd9f2, 0xd9f9,
- 0xd9f3, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9, 0xd9eb, 0xb4ea,
- 0xd9f8, 0xb4f8, 0xb542, 0xfdc0, 0xfcf9, 0xd9fa, 0xda53, 0xda4b,
- 0xb4e6, 0xda51, 0xb4f2, 0xb4f0, 0xfb7e, 0xda57, 0xb4ef, 0xda41,
- 0xd9f4, 0xd9fe, 0xb547, 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f,
- 0xda4c, 0xda54, 0xb4e9, 0xda40, 0xb546, 0xda47, 0xb4f3, 0xb4f6,
- 0xda46, 0xb545, 0xd9f5, 0xd5e4, 0x92b3, 0xda50, 0xda4e, 0xda52,
- 0xfdaf, 0x8de1, 0xd9ec, 0xb540, 0x95d3, 0xde61, 0xde60, 0xde46,
- 0xb7bd, 0xde5f, 0xde49, 0xde4a, 0xb7c7, 0xde68, 0xb7c2, 0xde5e,
- 0x89c1, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48, 0xde4b, 0xde63,
- 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc, 0xb7cb, 0xb7c5,
- 0xde69, 0xb7b9, 0xde55, 0xde4c, 0xde59, 0xde65, 0xb7cd, 0xfd68,
- 0xb7bb, 0xde54, 0x9cb7, 0xde4d, 0xb7c4, 0x8de3, 0xb7c3, 0xde50,
- 0xde5a, 0xde64, 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0,
- 0xde4e, 0xb7bf, 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56,
- 0xe26c, 0xde58, 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0,
- 0xde44, 0xde5d, 0xfac0, 0x8de5, 0xfa64, 0xde5c, 0x8947, 0x8de4,
- 0x8de7, 0x8de8, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, 0xe26e,
- 0xbaaf, 0xba77, 0xe26d, 0xe2b0, 0xbab1, 0xe271, 0xe2a3, 0xfdc7,
- 0xe273, 0xe2b3, 0xe2af, 0xba75, 0xbaa1, 0xe653, 0xbaae, 0xba7d,
- 0xe26f, 0xfdb0, 0xe2ae, 0xbaa3, 0xe2ab, 0xe2b8, 0xe275, 0xe27e,
- 0x9445, 0x97d6, 0xe2b6, 0xe2ac, 0xba7c, 0xe27c, 0xba76, 0xba74,
- 0xbaa8, 0xfcc6, 0x9844, 0xe27a, 0xe277, 0xe278, 0xe2b2, 0xe2b7,
- 0xe2b5, 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0x8de9, 0xe270, 0xe5fa,
- 0xe279, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274, 0xbaaa,
- 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0x8dea, 0xe2a9, 0xe2a1, 0xe272,
- 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xfe50, 0xba79, 0xbcdf,
- 0xe2a6, 0xe5f9, 0xe2ad, 0xfdcc, 0xe276, 0xe644, 0xe64e, 0xbce2,
- 0xe64d, 0xe659, 0xbce4, 0xe64b, 0x9da7, 0xe64f, 0xbcef, 0xe646,
- 0xbce7, 0xfdcd, 0xe652, 0xe9f0, 0xbcf3, 0xbcf2, 0xe654, 0xe643,
- 0xe65e, 0xbced, 0xbce3, 0xe657, 0xe65b, 0xe660, 0xe655, 0xe649,
- 0xbce6, 0xbce9, 0xbcf1, 0xbcec, 0xe64c, 0xe2a2, 0xfdcf, 0xe648,
- 0xe65f, 0xbce8, 0x95d2, 0xbceb, 0xe661, 0xbce0, 0xe656, 0xe5fb,
- 0xe65c, 0xc0df, 0x8ded, 0xe64a, 0xbce1, 0xe645, 0xbce5, 0xe5fc,
- 0xbaab, 0xe641, 0xfcba, 0xe65a, 0xe642, 0xe640, 0xbcea, 0xe658,
- 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, 0xfdc5, 0xe9f3,
- 0xfdd2, 0xbf49, 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48,
- 0xbf43, 0xe9f5, 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8,
- 0xea44, 0xea46, 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0x9cdc, 0xbf47,
- 0xe9fe, 0xbf46, 0xe9f9, 0x95cf, 0xe9ed, 0xe9f2, 0x8dee, 0xe9fd,
- 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1, 0xe5fd, 0xe9ec, 0xe9ef,
- 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43, 0xe9ee, 0xe9fc, 0xfdd4,
- 0xed51, 0xc0e3, 0xc0d7, 0x96ec, 0x96eb, 0xc0db, 0xed53, 0xed59,
- 0xed57, 0xc0d9, 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0xed56,
- 0xed55, 0xed5b, 0xc0e2, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de,
- 0xc0e5, 0xc0d8, 0xed58, 0xed50, 0x90b6, 0xeff7, 0xfdc3, 0xc271,
- 0xeff4, 0xeff6, 0xc26f, 0xeff2, 0xeff3, 0xefee, 0x98ab, 0xe9f6,
- 0xefef, 0xc270, 0xefeb, 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed,
- 0xeff1, 0xc273, 0xc272, 0xeff0, 0xc378, 0xf25f, 0xf265, 0xc379,
- 0xf25c, 0xc376, 0xc373, 0xf267, 0xc377, 0x96ee, 0xc374, 0xf25e,
- 0xf261, 0xf262, 0xf263, 0xf266, 0xeff5, 0xf25d, 0xc375, 0xf264,
- 0xf268, 0xf260, 0x8df4, 0xf45d, 0xc46a, 0xf460, 0xc46b, 0xf468,
- 0xf45f, 0xf45c, 0xf45e, 0xf462, 0xf465, 0xf464, 0xf467, 0xf45b,
- 0xc469, 0xf463, 0xf466, 0xf469, 0xf461, 0xf5d3, 0xf5d4, 0xf5d8,
- 0xf5d9, 0xf5d6, 0xf5d7, 0xf5d5, 0xfde0, 0xc4e9, 0x8c67, 0x8df6,
- 0xc578, 0xf6eb, 0x8df7, 0xf6e8, 0xf6e9, 0xf6ea, 0xc579, 0xf7e5,
- 0xf7e4, 0x8ffa, 0xf8af, 0xc5f4, 0xf8ad, 0xf8b0, 0xf8ae, 0xf8f5,
- 0xc657, 0xc665, 0xf9a3, 0xf96c, 0x97d0, 0xf9a2, 0xf9d0, 0xf9d1,
- 0xa4f5, 0x8bd2, 0x8df8, 0xa6c7, 0xca41, 0xcb5e, 0x90d9, 0xa85f,
- 0x8c47, 0xa862, 0xfaf0, 0xcb5f, 0xa860, 0xa861, 0xfde1, 0x8df9,
- 0xfde3, 0xcd58, 0xcd5a, 0xcd55, 0xcd52, 0xcd54, 0x8dfa, 0xaaa4,
- 0xfb63, 0xaaa2, 0x90a6, 0xcd56, 0xaaa3, 0xcd53, 0xcd50, 0xaaa1,
- 0xcd57, 0xcd51, 0xaaa5, 0xcd59, 0xcfaf, 0x9970, 0xcfb3, 0x91eb,
- 0xacb7, 0x9770, 0x986f, 0xfde2, 0xcfb6, 0xacaf, 0xacb2, 0xacb4,
- 0xacb6, 0xacb3, 0xcfb2, 0xcfb1, 0xacb1, 0xcfb4, 0xcfb5, 0xcfae,
- 0xacb5, 0x98f2, 0xacb0, 0x9afc, 0x896c, 0xfdfd, 0xcfb0, 0x995e,
- 0x95bd, 0xd277, 0xd278, 0xd279, 0xaf50, 0xaf4c, 0xd26e, 0xfde4,
- 0xd276, 0xd27b, 0xaf51, 0x91e6, 0xd26c, 0xd272, 0xd26b, 0xd275,
- 0xfde5, 0xfde6, 0xd271, 0xaf4d, 0xaf4f, 0xd27a, 0xd26a, 0xd26d,
- 0xd273, 0xfde7, 0xd274, 0xd27c, 0xd270, 0xaf4e, 0xb26d, 0xd64e,
- 0x9454, 0xd650, 0xd64c, 0x99b8, 0xd658, 0xd64a, 0xd657, 0xb269,
- 0xd648, 0xda5b, 0xd652, 0xb26c, 0x97e9, 0xd653, 0xd656, 0xd65a,
- 0xd64f, 0x9346, 0xd654, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649,
- 0xd65b, 0xd651, 0xd655, 0xd64b, 0xb548, 0xb549, 0xda65, 0xb54f,
- 0x9863, 0xda59, 0xda62, 0xda58, 0xb54c, 0xda60, 0xda5e, 0xda5f,
- 0xb54a, 0xda63, 0x95bc, 0xfded, 0xfdf7, 0xda5c, 0xda5a, 0xb54b,
- 0xda5d, 0xda61, 0x9870, 0x96f6, 0x8ea9, 0xb54d, 0xda64, 0x9451,
- 0x8e43, 0x8b5a, 0xde70, 0xde77, 0xde79, 0xdea1, 0xfdee, 0xb7da,
- 0xde6b, 0xb7d2, 0xfdf0, 0xde7a, 0xb7d7, 0xdea2, 0xb7ce, 0xfdf4,
- 0xde7d, 0x9bf5, 0xde6d, 0xde7e, 0xde6c, 0xb7dc, 0xde78, 0xb7cf,
- 0xdea3, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, 0xde6f, 0xde76, 0xde72,
- 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, 0xb7db, 0xb7d0, 0xde75,
- 0x977e, 0xb7d5, 0xb54e, 0xde7b, 0x9bd5, 0xde73, 0x9ac3, 0x97c8,
- 0xa0db, 0x91d0, 0xde74, 0x9fe4, 0xe2c1, 0x8fdd, 0xbab4, 0x91e9,
- 0xe2bd, 0xe2c3, 0xe2bf, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, 0x98e0,
- 0xe2bc, 0xbab5, 0x92ca, 0x9857, 0xe2c0, 0xe2bb, 0x8c51, 0xbab7,
- 0xbab2, 0xfdeb, 0xe2c4, 0x9b49, 0xbab3, 0xe667, 0xe664, 0xe670,
- 0xe66a, 0xe66c, 0xbcf4, 0xe666, 0xe66e, 0x9d76, 0x9eaf, 0xe66d,
- 0xe66b, 0xe671, 0xbcf7, 0xe668, 0xe66f, 0xbcf5, 0x9ccc, 0xe663,
- 0xe665, 0xbcf6, 0xe662, 0xe672, 0xfdea, 0xe669, 0x8df1, 0xea4a,
- 0xbf51, 0xfdfb, 0xea55, 0xea53, 0xbf4b, 0xea49, 0xea4c, 0xea4d,
- 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56, 0xea51, 0xbf4f, 0xbf4c,
- 0xea50, 0xea4e, 0xbf52, 0xea52, 0xbf4d, 0x8e53, 0xbf4e, 0xea4f,
- 0xbf50, 0xea4b, 0xea54, 0xbf53, 0xea57, 0xea58, 0xbf54, 0xfacf,
- 0xc0e7, 0xc0ee, 0xed5c, 0xed62, 0xed60, 0xc0ea, 0xc0e9, 0xc0e6,
- 0xed5e, 0x96f9, 0xc0ec, 0xc0eb, 0xc0e8, 0xed61, 0xed5d, 0xed5f,
- 0xc0ed, 0x98bf, 0x9e49, 0xc277, 0xeffb, 0xc274, 0xc275, 0xeffd,
- 0xc276, 0xeffa, 0x8ca7, 0xeff9, 0xf26c, 0xeffc, 0xf26d, 0xc37a,
- 0xf26b, 0x9bca, 0xf26a, 0xf269, 0xc37b, 0xfdfe, 0x92dc, 0xc46c,
- 0xf46a, 0xf46b, 0xfe41, 0x91cc, 0x91e2, 0xf5dc, 0xf5db, 0xc4ea,
- 0xf5da, 0xf6ec, 0xf6ed, 0xf7e6, 0xf8b1, 0xfe44, 0xf8f6, 0xf9bc,
- 0xc679, 0xf9c6, 0xa4f6, 0x8bd3, 0xaaa6, 0xaaa7, 0xfe47, 0xacb8,
- 0xc0ef, 0xa4f7, 0xaaa8, 0xaf52, 0xb7dd, 0xa4f8, 0xb26e, 0xbab8,
- 0xc962, 0xfe48, 0xcfb7, 0xd27d, 0xe2c5, 0xc0f0, 0xa4f9, 0xaaa9,
- 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0xdea4, 0x9455, 0xb7de, 0xe2c6,
- 0xfe4b, 0xbcf8, 0xfe4c, 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0x8dbf,
- 0xa6c9, 0xca42, 0xa6c8, 0xa865, 0xa864, 0xa863, 0xcb60, 0x9e78,
- 0xaaaa, 0xaaab, 0xcd5b, 0xcfba, 0xcfbd, 0xacba, 0xcfbb, 0xacb9,
- 0xcfbc, 0xacbb, 0xd2a2, 0xd2a1, 0xd27e, 0xaf53, 0xd65d, 0xd65e,
- 0xb26f, 0xd65c, 0xd65f, 0xb552, 0xb270, 0xfe51, 0xb551, 0xda6b,
- 0xda6a, 0x9456, 0xda68, 0xda69, 0xda6c, 0xdea6, 0xdea5, 0xdea9,
- 0x9d61, 0xdea8, 0xdea7, 0xbab9, 0xe2c9, 0x9457, 0xe2c8, 0xbaba,
- 0xe2c7, 0xe673, 0xe674, 0xbcf9, 0xea59, 0xea5a, 0x9966, 0xf272,
- 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, 0xf46c, 0xf6ee,
- 0xf8f7, 0xa4fc, 0x8bd5, 0xc9a5, 0xa5c7, 0xc9a6, 0xa069, 0xca43,
- 0xca44, 0xcb66, 0xcb62, 0xcb61, 0xaaac, 0xcb65, 0xa867, 0xcb63,
- 0xa866, 0xcb67, 0xcb64, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0x98b4,
- 0xaaad, 0xaab0, 0xcd65, 0xcd61, 0xcd62, 0xcd5c, 0xaaaf, 0xcd5e,
- 0xaaae, 0xcd63, 0xcd60, 0xcfc2, 0xacbd, 0xacbe, 0xa049, 0xcfc5,
- 0xcfbf, 0xcfc4, 0xcfc0, 0xacbc, 0xcfc3, 0xcfc1, 0xd2a8, 0xd2a5,
- 0xd2a7, 0xaf58, 0xaf57, 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56,
- 0xd2a6, 0xd667, 0xd2a3, 0xd2aa, 0xa04c, 0x9e65, 0xd662, 0xd666,
- 0xd665, 0xda6e, 0xda79, 0xd668, 0x98b5, 0xd663, 0xda6d, 0xb274,
- 0xb273, 0xd661, 0xd664, 0xb275, 0xb272, 0xb271, 0xd660, 0xd669,
- 0xda70, 0xda77, 0xb554, 0xda76, 0xda73, 0xfe58, 0xb556, 0x9975,
- 0xfe53, 0xa065, 0xda75, 0xfe59, 0xda6f, 0xda71, 0xda74, 0xda72,
- 0xb555, 0xda78, 0xb553, 0xb7df, 0x98b7, 0x98b8, 0xdead, 0xdeac,
- 0xdeaa, 0xb7e2, 0xb7e1, 0xdeae, 0x98ba, 0xdeab, 0xe2ca, 0xbabb,
- 0xb7e0, 0x98bb, 0xdeb0, 0xdeaf, 0xe2cd, 0xe2cb, 0xbcfa, 0x9fbc,
- 0xbabc, 0xe2cc, 0xe676, 0xbcfb, 0xe675, 0xe67e, 0xe67d, 0xe67b,
- 0xe67a, 0xe677, 0xe678, 0xe679, 0xe67c, 0xe6a1, 0xea5f, 0xea5c,
- 0xea5d, 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0xed64, 0xed65,
- 0xc0f1, 0xa04a, 0xc0f2, 0xed63, 0x9ec7, 0xc279, 0xeffe, 0xc278,
- 0xc37e, 0xc3a1, 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, 0xc57a,
- 0xf7e8, 0xf7e7, 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, 0xd66a,
- 0xa5c9, 0xc9a7, 0xa4fd, 0x8ca9, 0xca45, 0x98ae, 0xcb6c, 0xcb6a,
- 0xcb6b, 0xcb68, 0xa868, 0xcb69, 0x92d6, 0xfae1, 0xcd6d, 0x91d4,
- 0xaab3, 0xcd6b, 0xcd67, 0xcd6a, 0xcd66, 0xaab5, 0xcd69, 0xfade,
- 0xaab2, 0xaab1, 0xfe5b, 0xaab4, 0xcd6c, 0xcd68, 0xacc2, 0xacc5,
- 0xcfce, 0xcfcd, 0xcfcc, 0xacbf, 0xcfd5, 0xcfcb, 0x8c53, 0xacc1,
- 0xd2af, 0xcfd2, 0xcfd0, 0xacc4, 0xcfc8, 0xcfd3, 0xcfca, 0xcfd4,
- 0xcfd1, 0xcfc9, 0xfe5e, 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xfbd7,
- 0xfe5a, 0x94c5, 0xd2b4, 0xd2ab, 0xd2b6, 0xfaca, 0xd2ae, 0xd2b9,
- 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f, 0xaf5d,
- 0x98c1, 0x975c, 0xd2b1, 0xfe74, 0xd2ad, 0x9773, 0xd2b0, 0xd2bb,
- 0xd2b2, 0xaf5e, 0xcfcf, 0xaf5a, 0xaf5c, 0xfa46, 0x9764, 0xd678,
- 0xd66d, 0xd66b, 0xfe68, 0xd66c, 0x964e, 0xd673, 0x9765, 0xd674,
- 0xd670, 0xb27b, 0xd675, 0xd672, 0xd66f, 0x8c5a, 0xb279, 0xd66e,
- 0xb277, 0xb27a, 0xd671, 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676,
- 0xb27c, 0x89a1, 0x95fa, 0x92d4, 0xfe69, 0xda7e, 0xfb45, 0x98c8,
- 0xdaa1, 0xb560, 0x90ef, 0xdaa7, 0x98c9, 0x98ca, 0xdaa9, 0xdaa2,
- 0xb55a, 0xdaa6, 0xdaa5, 0xb55b, 0xb561, 0xb562, 0xdaa8, 0xb558,
- 0xda7d, 0xda7b, 0xdaa3, 0xda7a, 0xb55f, 0xda7c, 0xdaa4, 0xdaaa,
- 0xb559, 0xb55e, 0xb55c, 0xb55d, 0x946d, 0x94b7, 0xfe6c, 0xb557,
- 0x946b, 0xb7e9, 0xdeb7, 0xb7e8, 0xdebb, 0x92fc, 0xdeb1, 0x95eb,
- 0xdebc, 0xfe73, 0x976e, 0xfe5f, 0xdeb2, 0xdeb3, 0xdebd, 0xdeba,
- 0xdeb8, 0xdeb9, 0xdeb5, 0xdeb4, 0xfdbd, 0xdebe, 0xb7e5, 0x92d5,
- 0xdeb6, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec, 0xfeb9, 0xb7e7, 0xb7e6,
- 0xfe71, 0xe2ce, 0xbabe, 0xbabd, 0xfbbb, 0xe2d3, 0x947a, 0xbcfc,
- 0xbabf, 0x95fb, 0xfe77, 0xbac1, 0xe2d4, 0xb7e3, 0xbac0, 0xe2d0,
- 0xe2d2, 0xe2cf, 0xfe79, 0xe2d1, 0xfe75, 0xe6ab, 0x945d, 0xe6aa,
- 0xe6a7, 0xbd40, 0xea62, 0xbd41, 0xe6a6, 0xfe7c, 0xbcfe, 0xe6a8,
- 0xe6a5, 0xe6a2, 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0x9344, 0x8ea6,
- 0xed69, 0xea66, 0xea65, 0xea67, 0xed66, 0xbf5a, 0x92d3, 0xea63,
- 0x94b8, 0xbf58, 0xbf5c, 0xbf5b, 0xea64, 0xea68, 0xbf59, 0xfc71,
- 0xed6d, 0xc0f5, 0xc27a, 0xc0f6, 0xc0f3, 0xed6a, 0xed68, 0xed6b,
- 0xed6e, 0xc0f4, 0xed6c, 0xed67, 0x975e, 0xf042, 0xf045, 0xf275,
- 0xf040, 0x8cad, 0xf46f, 0xf046, 0xc3a2, 0xf044, 0xc27b, 0xf041,
- 0xf043, 0xf047, 0xf276, 0xf274, 0xfea7, 0xc3a3, 0xf273, 0x946a,
- 0xc46e, 0x93e3, 0x98cf, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, 0xf6f0,
- 0xf6f2, 0xc5d0, 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, 0xb27d,
- 0xdebf, 0xbf5d, 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xa0d9, 0xcd6f,
- 0xa260, 0xcfd7, 0xcfd8, 0xa0bf, 0xa04d, 0xa0b8, 0xd2be, 0xd2bf,
- 0xb27e, 0xb2a1, 0xa0ce, 0xdaab, 0xdec2, 0xdec1, 0xdec0, 0xe2d5,
- 0xe2d6, 0xe2d7, 0xbac2, 0xa0b7, 0xe6ad, 0xe6ac, 0xea69, 0xbf5e,
- 0xbf5f, 0xfea9, 0xed72, 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048,
- 0xc27c, 0xf277, 0xf5de, 0xa5cc, 0x89c3, 0xacc6, 0xb2a2, 0xdec3,
- 0xfeab, 0xa5cd, 0xd2c0, 0xb2a3, 0xb563, 0xb564, 0xa5ce, 0xa5cf,
- 0xca46, 0xa86a, 0xa869, 0xacc7, 0xcfd9, 0xdaac, 0xa5d0, 0xa5d1,
- 0xa5d2, 0xa5d3, 0x9df4, 0x896d, 0xa86b, 0xa86c, 0xcb6e, 0xcb6d,
- 0x9c7b, 0xaab6, 0xcd72, 0xcd70, 0xcd71, 0x98d2, 0x9fa9, 0xcfda,
- 0xcfdb, 0xfeb2, 0xaccb, 0xacc9, 0xfeb1, 0xacca, 0xacc8, 0x97d9,
- 0xa0c4, 0xaf60, 0x9476, 0xaf64, 0xaf63, 0xd2c1, 0xaf62, 0xaf61,
- 0xd2c2, 0x9978, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4, 0xb2a5, 0xfeb3,
- 0xb566, 0xb565, 0xdaae, 0x98d3, 0xfeb4, 0xdaad, 0xb2a7, 0x98d4,
- 0xb7ed, 0xdec5, 0xb7ee, 0xdec4, 0x9fb9, 0xe2d8, 0xe6ae, 0xbd42,
- 0xea6a, 0x9471, 0xed73, 0xc3a6, 0xc3a5, 0xc57c, 0xa5d4, 0xcd73,
- 0x98d5, 0xfeb8, 0xb2a8, 0xe2d9, 0xbac3, 0xc6d4, 0xcb6f, 0xcb70,
- 0xcd74, 0xaab8, 0xaab9, 0xaab7, 0xfeba, 0xaccf, 0xacd0, 0xaccd,
- 0xacce, 0xcfdc, 0xcfdd, 0xaccc, 0xd2c3, 0x9e5c, 0xaf68, 0xaf69,
- 0xfebb, 0xb2ab, 0xd2c9, 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b,
- 0xaf6a, 0xaf65, 0xd2c8, 0xd2c7, 0xd2c4, 0xaf6d, 0xa044, 0xd2c6,
- 0xaf66, 0xaf67, 0x98d7, 0xb2ac, 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c,
- 0xd67e, 0xd6a4, 0xd6a3, 0xd67d, 0xb2a9, 0xb2aa, 0xdab6, 0xb56b,
- 0xb56a, 0xdab0, 0xb568, 0x98d8, 0xdab3, 0xb56c, 0xdab4, 0xb56d,
- 0xdab1, 0xb567, 0xb569, 0xdab5, 0xdab2, 0xdaaf, 0xded2, 0xdec7,
- 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6, 0xded3, 0xded1, 0xdeca,
- 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc, 0xded4, 0xdecb, 0xb7f5,
- 0xb7ef, 0xb7f1, 0xfebc, 0xdec9, 0x9ffe, 0xe2db, 0xbac7, 0xe2df,
- 0xbac6, 0xe2dc, 0xbac5, 0xdec8, 0xdecf, 0xe2de, 0xbac8, 0xe2e0,
- 0xe2dd, 0xe2da, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2, 0xe6b0,
- 0xbd45, 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af, 0xbd47,
- 0xbac4, 0xe6b6, 0xbd44, 0xfebd, 0xea6c, 0xea6b, 0xea73, 0xea6d,
- 0xea72, 0xea6f, 0xbf60, 0xea71, 0xbf61, 0xbf62, 0x9ddd, 0xea70,
- 0xea6e, 0x9ee1, 0xc0f8, 0xed74, 0xc0f7, 0xed77, 0xed75, 0xed76,
- 0xc0f9, 0x98da, 0x9ddf, 0xfebf, 0xf04d, 0xfebe, 0xc2a1, 0xf04e,
- 0x9eeb, 0xc27d, 0xf04f, 0xc27e, 0xf04c, 0xf050, 0xf04a, 0xc3a7,
- 0xf278, 0xc3a8, 0xc46f, 0xf04b, 0xc470, 0x9e59, 0xa05c, 0xc4ee,
- 0xf5df, 0xc57e, 0xf6f4, 0xc57d, 0xfec0, 0xf7ea, 0xc5f5, 0xc5f6,
- 0x9477, 0x98dc, 0xf9cc, 0xfec1, 0xacd1, 0xcfde, 0x98de, 0xb56e,
- 0xb56f, 0xa5d5, 0xa6ca, 0xca47, 0xcb71, 0xa86d, 0xaaba, 0xacd2,
- 0xacd3, 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0xb2ae, 0xd6a5, 0xfec3,
- 0xdab8, 0xb571, 0xdab7, 0xb570, 0xded5, 0xbd4a, 0xe6bb, 0xe6b8,
- 0xe6b9, 0xe6ba, 0xfec8, 0xed78, 0xfec9, 0xf051, 0xf471, 0xf470,
- 0xf6f5, 0xa5d6, 0xcd75, 0xaf70, 0xb572, 0xded6, 0xfeca, 0xe2e1,
- 0xbd4b, 0xea74, 0xf052, 0xf472, 0xa5d7, 0xaabb, 0xacd7, 0xcfdf,
- 0xacd8, 0xacd6, 0xacd5, 0xd2cc, 0xaf71, 0xfecb, 0xaf72, 0xaf73,
- 0xb2b0, 0xd6a7, 0xb2af, 0x9fc2, 0x8c6b, 0xdab9, 0xb2b1, 0xb573,
- 0xded7, 0xb7f8, 0xb7f9, 0xbac9, 0xbaca, 0xbd4c, 0xbf64, 0xea75,
- 0xbf63, 0xed79, 0xc0fa, 0xf053, 0xf473, 0xa5d8, 0xa86e, 0xcd78,
- 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79, 0xcfe5, 0xacdb, 0xacda,
- 0xcfe7, 0xcfe6, 0xacdf, 0xacde, 0xacd9, 0xcfe1, 0xcfe2, 0xcfe3,
- 0xace0, 0xcfe0, 0xacdc, 0xcfe4, 0xacdd, 0x98c4, 0x94b0, 0x94b1,
- 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2ce,
- 0xd2cd, 0xfed1, 0xaf75, 0xaf76, 0xd2d7, 0xd2d2, 0xa0c1, 0xd6b0,
- 0xfed2, 0xd2d8, 0xaf77, 0xaf74, 0xa0cd, 0xd6aa, 0xd6a9, 0xd6ab,
- 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2, 0xb2b5, 0xb2b2, 0xb2b6, 0xd6a8,
- 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af, 0xb2b3, 0xfed3, 0x98e5, 0xdabc,
- 0xdabe, 0xdaba, 0xdabb, 0xdabf, 0xdac1, 0xdac2, 0xdabd, 0xdac0,
- 0xb574, 0xdedb, 0xdee0, 0xded8, 0xdedc, 0xfed6, 0xdee1, 0xdedd,
- 0xb7fa, 0xb843, 0xb7fd, 0xded9, 0xdeda, 0xbace, 0xb846, 0xb7fe,
- 0xb844, 0xb7fc, 0xdedf, 0xb845, 0xdede, 0xb841, 0xb7fb, 0xb842,
- 0xdee2, 0xe2e6, 0xe2e8, 0x91e4, 0x8fc7, 0x94ae, 0xb840, 0x8a4f,
- 0x94b2, 0xe2e3, 0xbacc, 0xe2e9, 0xbacd, 0xe2e7, 0xe2e2, 0xe2e5,
- 0xe2ea, 0xbacb, 0xe2e4, 0xbd4e, 0xe6bf, 0xe6be, 0xbd51, 0xbd4f,
- 0xe6bc, 0xbd4d, 0xe6bd, 0xbd50, 0x8fd4, 0xea7d, 0xeaa1, 0x98ea,
- 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66, 0xbf67, 0xbf65,
- 0xea78, 0xea7b, 0xea7c, 0xbf68, 0xc140, 0xeda3, 0xc0fc, 0xed7b,
- 0xc0fe, 0xc141, 0xfed8, 0xc0fd, 0xeda2, 0xed7c, 0xc0fb, 0xeda1,
- 0xed7a, 0xed7e, 0xed7d, 0x9de0, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2,
- 0x98ee, 0xc2a3, 0xf054, 0x95c4, 0xf27b, 0xfce8, 0xc3a9, 0xf279,
- 0xf27a, 0x98ef, 0xf474, 0xf477, 0xf475, 0xf476, 0xf5e0, 0xc4ef,
- 0xf7eb, 0xf8b4, 0xc5f7, 0xf8f8, 0xf8f9, 0xc666, 0xa5d9, 0xace1,
- 0x8c6e, 0xdac3, 0xdee3, 0xa5da, 0xa86f, 0xaabe, 0xfad8, 0xcfe8,
- 0xcfe9, 0xaf78, 0xdac4, 0xb575, 0xb847, 0xc142, 0xeda4, 0xf27c,
- 0xf478, 0xa5db, 0xfedc, 0xcda1, 0xcd7a, 0xcd7c, 0xcd7e, 0xcd7d,
- 0xcd7b, 0xaabf, 0xa0ae, 0xace2, 0xcff2, 0xcfed, 0xcfea, 0x9d4c,
- 0xcff1, 0xace4, 0xace5, 0xcff0, 0xcfef, 0xcfee, 0xcfeb, 0xcfec,
- 0xcff3, 0xace3, 0x98f1, 0x98f3, 0xaf7c, 0x94c1, 0xafa4, 0xafa3,
- 0xd2e1, 0xd2db, 0xd2d9, 0xafa1, 0xd6b9, 0xaf7a, 0xd2de, 0xd2e2,
- 0xd2e4, 0xd2e0, 0xd2da, 0xafa2, 0xd2df, 0xd2dd, 0xaf79, 0xd2e5,
- 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc, 0xaf7e, 0xaf7b, 0x98f5, 0xfa4f,
- 0x96e2, 0x9450, 0xb2b9, 0x96a2, 0xd6ba, 0x98f6, 0xd6b3, 0xd6b5,
- 0xd6b7, 0x96e5, 0xd6b8, 0xd6b6, 0xb2ba, 0xd6bb, 0x98f7, 0xd6b4,
- 0xa046, 0x96e3, 0xdac8, 0xb576, 0xdad0, 0xdac5, 0xdad1, 0xdac6,
- 0xdac7, 0x98f8, 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577, 0xdac9,
- 0xdacc, 0xb578, 0xdacd, 0xdaca, 0xdeee, 0x9ee4, 0xdef2, 0xb84e,
- 0xe2f0, 0xb851, 0xdef0, 0xf9d6, 0xdeed, 0xdee8, 0xdeea, 0xdeeb,
- 0xdee4, 0x94c3, 0xb84d, 0xb84c, 0x94c2, 0xb848, 0xdee7, 0xb84f,
- 0xb850, 0xdee6, 0xdee9, 0xdef1, 0xb84a, 0xb84b, 0xdeef, 0xdee5,
- 0xe2f2, 0xbad0, 0xe2f4, 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3,
- 0xbad1, 0xe2ef, 0xbad3, 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0xfee1,
- 0xb849, 0xfee9, 0xe2eb, 0xbad2, 0xe2ed, 0x96e4, 0x89ac, 0x96db,
- 0xbd54, 0xe6c1, 0xbd58, 0xbd56, 0xbacf, 0xe6c8, 0xe6c9, 0xbd53,
- 0xfee2, 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5,
- 0xe6c2, 0xbd59, 0xe6c4, 0x94c4, 0xfee3, 0xe6c6, 0xbd57, 0xfee7,
- 0x9ffb, 0xbf6a, 0xeaa8, 0xeaa2, 0xeaa6, 0xeaac, 0xeaad, 0xeaa9,
- 0xeaaa, 0xeaa7, 0x8c59, 0xeaa4, 0xbf6c, 0xbf69, 0xeaa3, 0xeaa5,
- 0xbf6b, 0xeaab, 0x93c9, 0xc146, 0x94e8, 0xfb56, 0xedaa, 0xeda5,
- 0xc145, 0x90c5, 0xc143, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6,
- 0xedad, 0xf056, 0xc147, 0xeda7, 0xedae, 0xedab, 0xa0a8, 0xf05a,
- 0xf057, 0xc2a6, 0xf05b, 0xf05d, 0xf05c, 0xf058, 0xf059, 0xf2a3,
- 0xc3aa, 0xf27e, 0xf2a2, 0xf27d, 0xf2a4, 0xf2a1, 0xf47a, 0xf47d,
- 0xf479, 0xc471, 0xf47b, 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473,
- 0xf5e1, 0xfee5, 0xf5e3, 0xf5e2, 0x98fd, 0x98fb, 0xfee8, 0xf6f6,
- 0x8ebf, 0xf8b5, 0xf8fa, 0xa5dc, 0x8bd8, 0xfef7, 0xcb72, 0xaac0,
- 0xcda3, 0xaac1, 0xaac2, 0xcda2, 0xcff8, 0xcff7, 0xace6, 0xace9,
- 0xace8, 0xace7, 0xcff4, 0xcff6, 0xcff5, 0xd2e8, 0xafa7, 0xd2ec,
- 0xd2eb, 0xd2ea, 0xd2e6, 0xafa6, 0xafaa, 0xafad, 0x8f68, 0x94c6,
- 0xafae, 0xd2e7, 0xd2e9, 0xafac, 0xafab, 0xafa9, 0xafa8, 0xd6c2,
- 0x9dea, 0xd6c0, 0xd6bc, 0xb2bb, 0xd6bd, 0xb2bc, 0xd6be, 0xd6bf,
- 0xd6c1, 0xb2bd, 0xdad5, 0xfc69, 0xdad4, 0xdad3, 0xdad2, 0xdef6,
- 0xb852, 0xdef3, 0xdef5, 0x9cda, 0xb853, 0xfef3, 0xb854, 0xdef4,
- 0x9c72, 0xfef0, 0x89c9, 0xe341, 0xe2f9, 0xe2fa, 0xbad7, 0xbad5,
- 0xbad6, 0xe343, 0x9941, 0xe342, 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb,
- 0xe340, 0xe2f8, 0x9942, 0xe6cb, 0xe6d0, 0xe6ce, 0xfef5, 0x91d7,
- 0xe6cd, 0xe6cc, 0xe6cf, 0xeaae, 0x94cc, 0xbf6d, 0xc148, 0xedb0,
- 0xfef8, 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0xf2a5, 0xc3ab,
- 0xf4a1, 0xc5a1, 0xf6f7, 0xf8b7, 0xf8b6, 0xc9a8, 0xacea, 0xaceb,
- 0xd6c3, 0xb856, 0xa5dd, 0xa872, 0xa871, 0xa870, 0x97a8, 0xcda4,
- 0xfefc, 0xaac4, 0xaac3, 0xacee, 0xfdbf, 0xcffa, 0xcffd, 0xcffb,
- 0xacec, 0xaced, 0xfefe, 0xcff9, 0xcffc, 0xafb5, 0xd2f3, 0xd2f5,
- 0xd2f4, 0xafb2, 0xd2ef, 0x96d1, 0xafb0, 0xafaf, 0xafb3, 0xafb1,
- 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0, 0x94d5, 0x94d0,
- 0xd6c6, 0xd6c7, 0xd6c5, 0xd6c4, 0xb2be, 0xb57d, 0xdad6, 0xdad8,
- 0xdada, 0xb57c, 0x9944, 0xb57a, 0xdad7, 0xb57b, 0xdad9, 0xb579,
- 0xdf41, 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0xdefb, 0xdef8,
- 0xdef9, 0xb858, 0xdf40, 0xb857, 0xb85c, 0xb85b, 0xb859, 0xdefd,
- 0xe349, 0xe348, 0x8c63, 0xe344, 0xa0b3, 0xbad8, 0xe347, 0xe346,
- 0xbad9, 0xbd5e, 0xe6d2, 0x94cf, 0xbd5f, 0xbd5b, 0xbd5d, 0x9ffa,
- 0xbd5a, 0xbd5c, 0x91e5, 0xeaaf, 0x9c6a, 0xbf70, 0xeab1, 0xeab0,
- 0x8e49, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0xedb5, 0xedb3,
- 0xc14a, 0xedb4, 0xedb6, 0xedb2, 0xedb1, 0xf060, 0xc2aa, 0xc2a8,
- 0xc2a9, 0x8e4c, 0xf2a6, 0xf2a7, 0xc3ad, 0xc3ac, 0xf4a3, 0xf4a4,
- 0xf4a2, 0xf6f8, 0xf6f9, 0xa5de, 0xca48, 0xa873, 0xcda5, 0xaac6,
- 0xaac5, 0xcda6, 0x8e4d, 0xd040, 0xacef, 0xcffe, 0xacf0, 0x9a73,
- 0xafb6, 0xd2f8, 0xd2f6, 0xd2fc, 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9,
- 0xd2fa, 0xd6c8, 0xd6ca, 0x9947, 0xb2bf, 0x8cb1, 0xd6c9, 0xb2c0,
- 0xb5a2, 0xb5a1, 0xb57e, 0xdadb, 0xdf44, 0xb85d, 0xb85e, 0xdf43,
- 0xdf42, 0xe34a, 0xbadb, 0xbada, 0xe34b, 0xe34c, 0xbd61, 0xbd60,
- 0x8e50, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4, 0xeab2, 0xeab6,
- 0xeab3, 0xbf73, 0x8e4f, 0x9949, 0xedb7, 0xc14b, 0xedb8, 0xedb9,
- 0x8e51, 0x8e52, 0xc2ab, 0xc2ac, 0xc475, 0x9ab2, 0x89a5, 0xc5d1,
- 0xa5df, 0x994c, 0xd041, 0x9ff8, 0xd2fd, 0xafb8, 0x8e56, 0x994d,
- 0x91ca, 0x8e57, 0xb3ba, 0xb3b9, 0x94e1, 0xb5a4, 0xdadd, 0xb5a3,
- 0xdadc, 0x9047, 0x8fd8, 0x8e58, 0xdf45, 0xbadc, 0xe34d, 0xbadd,
- 0xc476, 0xf4a5, 0xa6cb, 0xaac7, 0xcda7, 0xacf2, 0x94eb, 0xacf1,
- 0xd042, 0xd043, 0xd340, 0xd342, 0xafb9, 0xd344, 0xd347, 0xd345,
- 0x8e5c, 0x9553, 0xd346, 0xd343, 0xd2fe, 0xafba, 0xd348, 0xd341,
- 0x9fe5, 0xd6d3, 0xb2c6, 0xd6dc, 0xb2c3, 0xd6d5, 0xb2c7, 0x9f56,
- 0xb2c1, 0xd6d0, 0xd6dd, 0xd6d1, 0xd6ce, 0xb2c5, 0x954f, 0xb2c2,
- 0x8e5e, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8, 0xb2c8, 0xd6d9, 0xd6cf,
- 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb, 0xd6db, 0x996a, 0xdadf,
- 0xdae4, 0x9c64, 0x9cd9, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, 0xdae1,
- 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, 0xb5a8,
- 0xb5ae, 0xb5a9, 0xb5aa, 0x8e5d, 0xb5a6, 0xdae5, 0xb861, 0xdf50,
- 0x9950, 0xdf53, 0xdf47, 0xdf4c, 0xdf46, 0xb863, 0xdf4a, 0x9951,
- 0xdf48, 0xb862, 0x8e62, 0xdf4f, 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49,
- 0xbae1, 0xdf52, 0xb85f, 0xdf51, 0x9952, 0xe35d, 0xbae8, 0xe358,
- 0xbae7, 0xe34e, 0xe350, 0xbae0, 0xe355, 0xe354, 0xe357, 0xbae5,
- 0xe352, 0xe351, 0x8e68, 0xbae4, 0xbadf, 0xe353, 0xbae2, 0xe359,
- 0xe35b, 0xe356, 0xe34f, 0xbae3, 0xbd69, 0xbade, 0x8e61, 0x9f59,
- 0xe35c, 0xe6d9, 0xbd62, 0xe6db, 0xbd63, 0x8bb3, 0xbd65, 0xe6de,
- 0xe6d6, 0xbae6, 0xe6dc, 0xe6d8, 0xb860, 0xbd68, 0xbd64, 0xbd66,
- 0xbd67, 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0xe6da, 0x9f5d, 0x8e66,
- 0xeac0, 0xeabb, 0xeac5, 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba,
- 0xeab7, 0xeac6, 0xc151, 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc,
- 0xbf7b, 0xeab9, 0xeabe, 0xbf7a, 0xeac1, 0xeac4, 0x8cb2, 0xedcb,
- 0xedcc, 0xedbc, 0xedc3, 0xedc1, 0xc14f, 0xedc8, 0xeabf, 0x8e6e,
- 0xedbf, 0x9f64, 0xedc9, 0xc14e, 0xedbe, 0xedbd, 0xedc7, 0xedc4,
- 0xedc6, 0xedba, 0xedca, 0xc14c, 0xedc5, 0xedce, 0xedc2, 0xc150,
- 0xc14d, 0xedc0, 0xedbb, 0xedcd, 0xbf75, 0x9953, 0xfab8, 0xf063,
- 0x9954, 0xf061, 0xf067, 0xc2b0, 0xf065, 0xf064, 0xc2b2, 0xf06a,
- 0xc2b1, 0xf06b, 0xf068, 0xc2ae, 0xf069, 0xf062, 0xc2af, 0xc2ad,
- 0xf2ab, 0xf066, 0xf06c, 0xf2a8, 0x8e70, 0xc3b2, 0xc3b0, 0xf2aa,
- 0xf2ac, 0xf2a9, 0xc3b1, 0xc3ae, 0xc3af, 0xc3b3, 0x9f61, 0xc478,
- 0x8e72, 0xf4aa, 0xf4a9, 0xf4a7, 0xf4a6, 0xf4a8, 0xc477, 0xc479,
- 0xc4f0, 0xa06b, 0xf5e5, 0xf5e4, 0x9f40, 0xf6fa, 0xf6fc, 0xf6fe,
- 0xf6fd, 0xf6fb, 0x94ed, 0xc5a3, 0xc5a2, 0xc5d3, 0xc5d2, 0xc5d4,
- 0xf7ed, 0xf7ec, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0x94ee, 0xc659,
- 0xf96d, 0x9fbd, 0xc67e, 0xa6cc, 0x8e7b, 0xcda8, 0xd045, 0xd046,
- 0xd044, 0x9957, 0x94f7, 0xacf3, 0x9f5f, 0xd047, 0xd048, 0xd049,
- 0x8e73, 0xd349, 0xd34f, 0x9f62, 0xd34d, 0xafbb, 0xd34b, 0xd34c,
- 0xd34e, 0x94f6, 0xd34a, 0xb2c9, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca,
- 0xd6df, 0x9958, 0xdae8, 0xb5af, 0xdaea, 0xdae7, 0xd6e1, 0xb5b0,
- 0x8e75, 0xf9db, 0xdae9, 0x9072, 0x94f8, 0xdf56, 0xb864, 0xdf54,
- 0xb865, 0xdf55, 0xb866, 0x995a, 0xbae9, 0xe361, 0xe35e, 0xe360,
- 0xbaea, 0xbaeb, 0xe35f, 0xa0b0, 0x8cb3, 0xe6df, 0x8e79, 0xe6e0,
- 0x8e78, 0xbd6b, 0xe6e2, 0xe6e1, 0x94f3, 0xa261, 0xeaca, 0xeacb,
- 0xeac7, 0x98af, 0xeac8, 0xbf7c, 0xbf7d, 0xeac9, 0xc157, 0xa0b2,
- 0xc153, 0xc158, 0xc154, 0xc156, 0xc152, 0xc155, 0x8e7a, 0xc2b3,
- 0xedcf, 0xf2ae, 0xf2ad, 0x995c, 0xf4ab, 0xc47a, 0xc47b, 0xf741,
- 0xf5e6, 0x8e7c, 0xf740, 0x8e7d, 0xf8fd, 0xf9a4, 0xa6cd, 0x8bd9,
- 0xa874, 0x89a2, 0xcda9, 0xaac8, 0xacf6, 0xd04c, 0xacf4, 0xd04a,
- 0xacf9, 0xacf5, 0xacfa, 0xacf8, 0xd04b, 0xacf7, 0xafbf, 0xafbe,
- 0xd35a, 0xafc7, 0xd353, 0xd359, 0xafc3, 0xd352, 0xd358, 0xd356,
- 0xafc2, 0xafc4, 0xd355, 0xafbd, 0xd354, 0xafc8, 0xafc5, 0xafc9,
- 0xafc6, 0xd351, 0xd350, 0xd357, 0xafc0, 0xafbc, 0xafc1, 0x9ed7,
- 0xd6f0, 0xd6e9, 0xb5b5, 0xd6e8, 0xb2cf, 0xb2d6, 0xb2d3, 0xb2d9,
- 0xb2d8, 0xb2d4, 0xd6e2, 0xd6e5, 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef,
- 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed, 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd,
- 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb, 0xd6ee, 0xa0b6, 0xdafb, 0xdaf2,
- 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7, 0xb5b4, 0xdaef, 0xdaeb,
- 0x9e42, 0xb86c, 0xdaf4, 0x8ea4, 0xb5b1, 0xdafa, 0xb5b8, 0xb5ba,
- 0xdaed, 0xb5b9, 0xdaf0, 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5, 0xdaf3,
- 0xb5b6, 0xdaec, 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0xb868, 0xdf5d,
- 0xdf5f, 0xdf61, 0xdf65, 0xdf5b, 0xdf59, 0xb86a, 0xdf60, 0xdf64,
- 0xdf5c, 0xdf58, 0xdf57, 0x8ea7, 0x8c76, 0xdf62, 0xdf5a, 0xdf5e,
- 0xb86b, 0xb869, 0xdf66, 0xb867, 0xdf63, 0xe372, 0x9542, 0xbaee,
- 0xe36a, 0xbd78, 0xe374, 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0x987d,
- 0xe375, 0xe362, 0x9755, 0xe377, 0xe366, 0x8ea8, 0xbafe, 0xbafb,
- 0xe376, 0xe370, 0xbaed, 0xbaf5, 0xbaf4, 0x8eaa, 0xbaf3, 0xbaf9,
- 0xe363, 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373, 0xbaef, 0xbaf0,
- 0xbaf8, 0xe368, 0xe367, 0xe364, 0xe36c, 0xe369, 0xe36d, 0xbafd,
- 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0x89a3, 0xe36b, 0x9960, 0x9962,
- 0xbafc, 0x94fc, 0x9961, 0xe6e7, 0xbd70, 0xbd79, 0xbd75, 0xe6e4,
- 0x94fa, 0xbd72, 0xbd76, 0xe6f0, 0xbd6c, 0xe6e8, 0xbd74, 0x8eae,
- 0x8eb2, 0xe6eb, 0xe6e6, 0xbd73, 0xbd77, 0xe6e5, 0xbd71, 0xe6ef,
- 0xbd6e, 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d, 0x8eb0, 0xe6ec,
- 0xe6e3, 0xbd7b, 0xe6ea, 0xbd6f, 0x9963, 0x97aa, 0xe6e9, 0x94fb,
- 0xbfa2, 0xbfa7, 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9,
- 0xbfa8, 0xbfa1, 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace,
- 0xead6, 0xbfa3, 0xead4, 0xbfa6, 0xbfa5, 0xead0, 0xead1, 0xeacd,
- 0xead7, 0xbfa4, 0xeade, 0xeadd, 0x8ebb, 0xedda, 0xedd6, 0xc15f,
- 0xedd0, 0xc159, 0xc169, 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164,
- 0xc167, 0xedde, 0xc15c, 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1,
- 0xc160, 0xc15a, 0xc168, 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf,
- 0xc162, 0xc15b, 0xedd9, 0xc166, 0xedd7, 0xeddb, 0xf06e, 0xf074,
- 0xc2b9, 0xf077, 0xc2b4, 0xc2b5, 0xf06f, 0xf076, 0xf071, 0xc2ba,
- 0xc2b7, 0x8cdc, 0xf06d, 0xc2b6, 0xf073, 0xf075, 0xc2b8, 0xf072,
- 0xf070, 0x9876, 0x8ea1, 0xf2b8, 0xc3b7, 0xc3b8, 0xc3b4, 0x8cb4,
- 0xc3b5, 0x8eb7, 0xf2b4, 0xf2b2, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0,
- 0xf2af, 0xf2b3, 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d,
- 0xf4ad, 0x9da6, 0xf4af, 0xf4ae, 0xc4a1, 0xf5eb, 0xf5e8, 0xf5e9,
- 0xf5e7, 0xf5ea, 0xc4f2, 0xf5ec, 0x9eb0, 0xc4f1, 0xf742, 0x8eb8,
- 0xc5d5, 0xc5d7, 0xf7ee, 0xc5d6, 0xf8b9, 0xf940, 0xf942, 0xf8fe,
- 0xf941, 0xc66c, 0x9d70, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972,
- 0x8973, 0x8974, 0xa6ce, 0x8975, 0xacfb, 0xd26f, 0xafca, 0xb2da,
- 0xdafc, 0xdafd, 0x8ebc, 0x8ebd, 0xeadf, 0xc16a, 0xede1, 0x8ebe,
- 0xc2bb, 0x9dd1, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0x94fd, 0xf743,
- 0xc5f8, 0xca49, 0x8bd7, 0x8bda, 0xaac9, 0xa875, 0xd04d, 0xd360,
- 0xd35b, 0xd35f, 0xd35d, 0xafcb, 0xd35e, 0xd35c, 0xd6f1, 0xdafe,
- 0xdb40, 0xdf69, 0xdf6a, 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67,
- 0xb86d, 0xbb40, 0xa0e2, 0xb870, 0xe37a, 0xbd7c, 0xe6f1, 0xbd7d,
- 0x9fe9, 0xbfa9, 0xeae2, 0xeae0, 0xeae1, 0xede4, 0xede3, 0xede2,
- 0xf2bb, 0xc3b9, 0xf2bc, 0xf744, 0xc5f9, 0xf8ba, 0xa6cf, 0xaacb,
- 0xaaca, 0xd04f, 0xacfc, 0xfda8, 0xd04e, 0xd362, 0x8ae7, 0xafcc,
- 0xd6f2, 0xd361, 0x8ec2, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db,
- 0xdb42, 0xdb43, 0xdb41, 0x8ec4, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e,
- 0xb872, 0xb871, 0xe6f2, 0xe6f4, 0x9964, 0xbd7e, 0xe6f3, 0xeae3,
- 0xbfaa, 0xf079, 0x9965, 0xf078, 0xc3bb, 0xf2bd, 0xc3bd, 0xc3bc,
- 0xf4b0, 0xf5ee, 0xc4f3, 0xa6d0, 0xd050, 0xacfd, 0xd365, 0xafce,
- 0xd364, 0xd363, 0xafcd, 0xd6fb, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd,
- 0xd6f8, 0xb2de, 0xd6fc, 0xd6f9, 0xd6fa, 0xb2df, 0xb5be, 0xb5bf,
- 0xdb44, 0xdf6f, 0xdf70, 0x954e, 0xe37e, 0xbb43, 0xbb41, 0xbb42,
- 0xe37b, 0xe37c, 0xe37d, 0xe6f9, 0x98b3, 0xe6fa, 0xbda1, 0xe6f7,
- 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4, 0xbfab, 0xbfac, 0xede6,
- 0xc16b, 0xede5, 0xefa8, 0xf07a, 0xf07b, 0xc2bc, 0x8ecb, 0xc2bd,
- 0xc16c, 0xf2be, 0xf2bf, 0xf4b1, 0xc4a3, 0xa6d1, 0x8bdf, 0xa6d2,
- 0xacfe, 0xaacc, 0xafcf, 0xd051, 0x8ece, 0xb5c0, 0xa6d3, 0xad41,
- 0xd052, 0xd053, 0xad40, 0xad42, 0xa6d4, 0xd054, 0xafd1, 0xd366,
- 0xafd3, 0xafd0, 0xafd2, 0xd741, 0xb2e0, 0x8ecf, 0xd740, 0xd6fe,
- 0x9968, 0xdf71, 0xe3a1, 0x9969, 0xbda2, 0xbfae, 0xeae6, 0xeae5,
- 0xede7, 0x996b, 0x8ed1, 0xf5ef, 0x996c, 0xa6d5, 0xcb73, 0xcdaa,
- 0xad43, 0xd055, 0xd368, 0x8ed4, 0x8ed5, 0xafd4, 0xd367, 0xafd5,
- 0xd743, 0xb2e2, 0xd742, 0xd744, 0xb2e1, 0xdb46, 0xdb47, 0xdb45,
- 0xb5c1, 0x996d, 0xb874, 0xb875, 0xbb45, 0xa0be, 0xe3a3, 0xe3a2,
- 0xbb44, 0x8ed6, 0xa0bc, 0xa0b5, 0xe6fb, 0xa0b4, 0xe6fc, 0xeae7,
- 0xc170, 0xc16f, 0xc16d, 0xc16e, 0xc171, 0xf07c, 0xc2bf, 0xc2be,
- 0xf2c0, 0xf4b2, 0xc5a5, 0xc5a4, 0xa6d6, 0x8be0, 0xd1fb, 0xb877,
- 0xb5c2, 0xb876, 0xbb46, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9, 0xcdab,
- 0xcb76, 0xcb77, 0xa877, 0xcb74, 0xa876, 0xa879, 0xcb75, 0xa87b,
- 0xa87a, 0xcb78, 0xa878, 0x89b5, 0xaad1, 0xaacf, 0xcdad, 0xaace,
- 0x8edd, 0xaad3, 0xaad5, 0xaad2, 0xcdb0, 0xcdac, 0xaad6, 0xaad0,
- 0xa87c, 0xaad4, 0xcdaf, 0x9e5d, 0x9971, 0xcdae, 0xaacd, 0x89ae,
- 0x9de8, 0xd05b, 0xad47, 0xad48, 0xd05d, 0x9565, 0xd057, 0xd05a,
- 0xd063, 0xd061, 0xad49, 0xd067, 0xad4c, 0xd064, 0xd05c, 0xd059,
- 0xdb49, 0xd062, 0xad44, 0xd065, 0xd056, 0xd05f, 0xad46, 0xad4b,
- 0xd060, 0xad4f, 0xad4d, 0xd058, 0xad4a, 0xd05e, 0xad4e, 0xad45,
- 0xd066, 0x9972, 0x8b5c, 0xafda, 0xafe3, 0xafd8, 0xafd6, 0xd36a,
- 0xafde, 0xafdb, 0xd36c, 0x89b1, 0xafdd, 0xd36b, 0xd369, 0xd36e,
- 0xafe2, 0xafe0, 0xdb48, 0xd36f, 0xd36d, 0xafd7, 0xa0c0, 0xafd9,
- 0xafdc, 0x8edf, 0xafdf, 0x9566, 0xafe1, 0x9974, 0x9976, 0x9977,
- 0x9979, 0xd74e, 0xb2e4, 0x9dda, 0xd745, 0xd747, 0x8ee0, 0xd748,
- 0xd750, 0xd74c, 0xd74a, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746,
- 0xd74f, 0xb2e7, 0x935c, 0xb2e6, 0xd74b, 0xd749, 0xb2e3, 0xb2e8,
- 0x9de6, 0x8b5f, 0x9563, 0xb5c8, 0xdb51, 0xdb4f, 0xb5ca, 0x9567,
- 0xdb4a, 0xdfa1, 0xb5c9, 0xdb4e, 0x9de3, 0xdb4b, 0xb5c5, 0xb5cb,
- 0xdb50, 0xb5c7, 0xdb4d, 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4,
- 0xb5c3, 0x997c, 0x997d, 0x997e, 0xdf77, 0xdf75, 0xdf7b, 0xdf73,
- 0xdfa2, 0xdf78, 0xdf72, 0xb87b, 0xb8a3, 0xdf7d, 0xdf76, 0xb87e,
- 0x8b5b, 0xb87c, 0xdf7e, 0xb879, 0xb878, 0xdf79, 0xb87d, 0xb5cd,
- 0xdf7c, 0xdf74, 0xb87a, 0xb8a1, 0xb8a2, 0x99a3, 0xbb4c, 0xbb48,
- 0xbb4d, 0xe3a6, 0x99a4, 0xe3a5, 0xe3a7, 0xbb4a, 0xe3a4, 0xbb4b,
- 0xe3aa, 0xe3a9, 0xe3a8, 0xbb49, 0x99a6, 0xe741, 0xe744, 0xbda8,
- 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe, 0xbda6,
- 0xe742, 0xe6fd, 0x99a8, 0xeae9, 0xeaf3, 0xbfb1, 0xbfb0, 0x8abe,
- 0xeaed, 0xeaef, 0xeaea, 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0,
- 0xeaec, 0x9e61, 0xeaf2, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178,
- 0xc17a, 0xc177, 0xc176, 0x99aa, 0xc175, 0xc173, 0xede9, 0xedec,
- 0xc172, 0xeded, 0xa0c8, 0xc179, 0xedeb, 0xedea, 0xc2c0, 0xc2c1,
- 0xf0a1, 0xf07d, 0xf07e, 0xf2c2, 0xf2c1, 0xc3be, 0xf4b4, 0xc4a4,
- 0xf4b3, 0xf5f0, 0xf745, 0xc5a6, 0xf943, 0xf944, 0xc5d8, 0xa6da,
- 0x99ab, 0xaad7, 0xdb52, 0xbb4e, 0xc17b, 0xedef, 0xa6db, 0xafe5,
- 0xafe4, 0xdb53, 0xfec4, 0xeaf4, 0xa6dc, 0xad50, 0x98c2, 0xdb54,
- 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0xaad8, 0xd068, 0xafe6,
- 0xd370, 0xb2ea, 0xdb57, 0xb8a4, 0xbb50, 0xbfb3, 0xc17c, 0xc2c2,
- 0xf4b5, 0xa6de, 0xaad9, 0xafe7, 0xd752, 0xb5ce, 0xbb51, 0xe3ab,
- 0xe745, 0x8ee8, 0xa0ba, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0,
- 0xcdb1, 0xd069, 0xad51, 0xd372, 0xfd77, 0xafea, 0x8eee, 0xafe8,
- 0xafe9, 0xafeb, 0x9ebf, 0xd371, 0xd757, 0xd754, 0xd756, 0xb2eb,
- 0xb2ed, 0xb2ec, 0xd753, 0xb2ee, 0xd755, 0xdb58, 0xdb59, 0x89c2,
- 0xdb5a, 0xdfa6, 0xdfa7, 0xdfa5, 0xdfa8, 0xb8a5, 0xdfa4, 0xbb53,
- 0xe74a, 0xe746, 0xe749, 0xe74b, 0xe748, 0xe747, 0x99ac, 0xeaf5,
- 0xeaf6, 0xeaf7, 0xbfb4, 0xbfb5, 0xedf1, 0xedf0, 0xedf2, 0xf0a3,
- 0xf0a2, 0xf2c4, 0x956b, 0xf2c5, 0xf2c3, 0x956c, 0xc4a5, 0xf4b6,
- 0xf4b7, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, 0xc17d, 0xa6e2,
- 0xd758, 0xdb5b, 0x99af, 0xc641, 0xca4a, 0x994a, 0x8976, 0x8f48,
- 0xca4b, 0xca4d, 0xa6e3, 0xca4e, 0xca4c, 0xcba2, 0xcba3, 0xcb7b,
- 0xfbee, 0xcba1, 0xa8a1, 0xa8a2, 0xcb7c, 0xcb7a, 0xcb79, 0xcb7d,
- 0xa87e, 0xcb7e, 0xd06a, 0xcdb6, 0xaadc, 0xcdb5, 0xcdb7, 0xaadb,
- 0xcdbc, 0xaadf, 0xcdb2, 0xcdc0, 0xcdc6, 0xaae6, 0xcdc3, 0xaae3,
- 0x99ae, 0xcdb9, 0xcdbf, 0xcdc1, 0x8efb, 0xcdb4, 0xaae2, 0xaadd,
- 0xcdba, 0xaae4, 0xaae7, 0xaae1, 0xaada, 0xcdbe, 0xcdb8, 0xcdc5,
- 0xaae9, 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade, 0xaae8,
- 0x8cd0, 0xcdb3, 0xcdc2, 0xcdc4, 0x8b52, 0x99b0, 0x8977, 0x8f41,
- 0xad62, 0xad5c, 0xad64, 0xad61, 0xd071, 0xd074, 0xad5d, 0x99b1,
- 0xd06b, 0xad56, 0xad60, 0xad63, 0xad65, 0xd0a2, 0xd077, 0x8f49,
- 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, 0xd06f, 0xd07e, 0xd073,
- 0xd076, 0xd0a5, 0xfa4d, 0xad66, 0xd07d, 0xad5e, 0xd078, 0xd0a4,
- 0xd075, 0xd079, 0xd07c, 0x9de4, 0x8cb5, 0xd06d, 0xd0a3, 0xd07b,
- 0xfbe9, 0x9b54, 0xd06c, 0x99b2, 0xd070, 0xad5f, 0xad5a, 0xad53,
- 0xad58, 0xad54, 0xad67, 0xd06e, 0xd3a5, 0xad5b, 0x9e68, 0xd07a,
- 0xce41, 0xd3a8, 0xaffa, 0x8f4a, 0xd376, 0x8f42, 0xd3a3, 0xd37d,
- 0x8f51, 0xd3b2, 0xd3aa, 0xd37e, 0xd3a9, 0xd378, 0xd37c, 0xd3b5,
- 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0xd3ac, 0xaffc,
- 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, 0xaff1, 0xaff8,
- 0xd072, 0xdb5c, 0xd3a6, 0x9846, 0xd37a, 0xaffb, 0xd37b, 0xd3a1,
- 0xaffe, 0xd375, 0xd3af, 0xd3ae, 0xd3b6, 0xaff3, 0xaff0, 0xd3b4,
- 0xd3b0, 0xd3a7, 0xd3a2, 0xaff6, 0xaff2, 0xd377, 0xafee, 0xd3b1,
- 0xafef, 0xd379, 0x99b4, 0x8ef5, 0xfd55, 0x9ccd, 0x8978, 0xd75e,
- 0xd760, 0xd765, 0xd779, 0xb2fc, 0xb2f2, 0xd75d, 0xb2fd, 0xb2fe,
- 0xd768, 0xd76f, 0xd775, 0xd762, 0xd769, 0x8f53, 0xb340, 0xd777,
- 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef, 0xd761,
- 0xd759, 0x8f6f, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773,
- 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0x8e63, 0xd76b, 0xb2f0, 0xb2fb,
- 0xb2f3, 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, 0xd75b, 0xd767,
- 0xd76d, 0xb2f6, 0x8f56, 0xd778, 0xd771, 0xd774, 0xfe76, 0xb2f5,
- 0x9fc6, 0xdb6c, 0xdb60, 0xb5d7, 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5,
- 0xdb68, 0xdba3, 0xdb69, 0xdb77, 0xb5e2, 0xdb73, 0xb5df, 0xfaac,
- 0xdb74, 0xdb5d, 0xdba4, 0x8f58, 0xb5e8, 0xdba1, 0xdb75, 0xdbac,
- 0xdb70, 0xdfc8, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a, 0xb5e9, 0xb5d4,
- 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0xdb63, 0xdb61, 0xb5d0,
- 0xdba5, 0xdb6a, 0xdba8, 0x9848, 0xdba9, 0xb5d8, 0xb5dd, 0xb5d9,
- 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0xb5d2, 0xdb5e, 0xdba2,
- 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71, 0xdb6d, 0xb5d1, 0xb5e5,
- 0x99b7, 0xdb7c, 0xb5e7, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3,
- 0xb5e4, 0xdb79, 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0x9665, 0xfa6c,
- 0x9de7, 0xdbae, 0x9e62, 0x96cc, 0x8e67, 0xdb5f, 0xfc75, 0x987e,
- 0xdfc7, 0xdfdd, 0xb855, 0xdfcc, 0xfdb9, 0xdfca, 0xdfb5, 0xb8a9,
- 0xdfc5, 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, 0xb5e3, 0xdfcf,
- 0xdfc0, 0xdfd6, 0xb8b0, 0xb8a8, 0x97fc, 0xdfaa, 0xdfb2, 0xdfcb,
- 0xdfc3, 0xdfdc, 0xdfc6, 0xb8b6, 0xdfd7, 0x98f9, 0xb8ad, 0x8f66,
- 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0, 0xdfe1, 0xdfb1, 0xdfd2, 0x956e,
- 0xdfdf, 0x9245, 0xdfab, 0xb5db, 0x8f60, 0xdfb9, 0xdfb8, 0xb8af,
- 0x9ed1, 0xdfbc, 0xdfbe, 0xdfcd, 0xdfde, 0xb8b2, 0xfecd, 0xb8b3,
- 0x99b9, 0xdfb0, 0xb8ab, 0xdfb4, 0xdfda, 0xb8b4, 0xb8ac, 0xb8ae,
- 0xb8b5, 0xdfe0, 0xdfd3, 0xdfce, 0x8f62, 0x974c, 0xdfbb, 0xdfba,
- 0xb8aa, 0xdfac, 0xb8a7, 0xdfc4, 0xdfad, 0xdfc2, 0xdfb7, 0xdfdb,
- 0x91c7, 0x955f, 0xb8a6, 0xdfb3, 0x99bb, 0xdfaf, 0xdfd5, 0xdfae,
- 0xbb60, 0xe3d3, 0x8e6d, 0x8f71, 0xe3c2, 0x94cb, 0xe3ac, 0xe3ca,
- 0xbb58, 0xe3bb, 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, 0xe3cd,
- 0xe3ae, 0xe3c1, 0x95b1, 0xe3ad, 0xe3bf, 0xe3c8, 0xe3c6, 0xe3ba,
- 0xe3b5, 0xe3b3, 0x9af2, 0xe3b4, 0xe3c7, 0xe3d2, 0xe3bc, 0xbb5a,
- 0xe3b7, 0xe3cb, 0xbb5d, 0xe3b6, 0xe3b0, 0xe3c0, 0xbb61, 0x96c3,
- 0x99bd, 0xbb55, 0xbb5e, 0xe3b8, 0xe3b2, 0xbb57, 0xdfd4, 0xbb56,
- 0xe3c3, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9, 0xe3b1, 0xe3cc,
- 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0xe3c9, 0xe3ce, 0xa0cf,
- 0xe3d1, 0x8f6d, 0x99be, 0x8ef4, 0x8f72, 0x95e4, 0xe773, 0xe774,
- 0xe767, 0xe766, 0xe762, 0xbdb4, 0xbdac, 0xe776, 0xe775, 0xdfa9,
- 0xe75f, 0xe763, 0xe75d, 0xe770, 0xe761, 0x99bf, 0xe777, 0xe75a,
- 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6, 0xe74f, 0xe76d, 0x9242,
- 0xfba5, 0xbdb7, 0xdfbd, 0xe75b, 0xe752, 0xe755, 0xe77b, 0xe75c,
- 0xe753, 0xe751, 0xe74e, 0x99c0, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3,
- 0xe760, 0xe768, 0xbda9, 0xe778, 0xe77c, 0xbdab, 0xe757, 0xe76b,
- 0xe76f, 0xe754, 0xe779, 0xbdb2, 0xbdb1, 0xe74c, 0xbdb5, 0xe772,
- 0xe756, 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c,
- 0xe77d, 0xe77a, 0xe771, 0xfdb4, 0x8f77, 0x99c1, 0xe74d, 0xbdaa,
- 0xeb49, 0xeb40, 0xeb43, 0xfab9, 0xbfbb, 0xeb45, 0xeaf9, 0xeb41,
- 0xeb47, 0xbfb8, 0xbfbc, 0xbfb6, 0x8f40, 0xfa44, 0xeafb, 0xeb4c,
- 0xeb46, 0x99c2, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46, 0xeafe,
- 0xbfb7, 0x8f5c, 0xeb4a, 0xeb54, 0xbfbf, 0x8cbd, 0xeb51, 0xeafd,
- 0xeb44, 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, 0xbfb9, 0xbfba,
- 0xbfbe, 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0x99c4, 0x99c5, 0xeb4b,
- 0x8f7b, 0xeb4e, 0xee53, 0xee40, 0xee45, 0xee52, 0xee44, 0xedfb,
- 0xee41, 0xc1a2, 0xedf4, 0xee4d, 0xee4f, 0xedf3, 0xc1a1, 0xee51,
- 0xee49, 0xc1a8, 0xee50, 0xee42, 0xc1aa, 0xedf9, 0xeb52, 0xee4a,
- 0xee47, 0xedf5, 0xee55, 0xc1a4, 0xc1a5, 0xedf7, 0xee48, 0x8cb6,
- 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3, 0xee4c, 0xedfe, 0xee56,
- 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc, 0xc2cb, 0xedf6, 0xc1a9,
- 0xc2c4, 0xc17e, 0xc1a6, 0xc2c8, 0xf0b3, 0xf0a9, 0xf0a4, 0xf0aa,
- 0xf0b4, 0xf0b8, 0xf0b7, 0xc2ca, 0xc2c9, 0xf0ab, 0xf0b9, 0xf0ae,
- 0xf0a6, 0x8fa3, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2, 0xf0a5, 0xf0ac,
- 0xf0b1, 0xc2c7, 0xf0af, 0xc2c5, 0xf0b0, 0xc2c3, 0xc2c6, 0xf2d5,
- 0xf0b5, 0xc3c2, 0x8cce, 0xf2cd, 0xf2d1, 0xf2c9, 0xf2cc, 0xf2d4,
- 0xc3c0, 0xf2d9, 0xf2d2, 0x99c6, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3,
- 0xc3c4, 0xf2d7, 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8,
- 0x96cd, 0xf2d8, 0xf2d6, 0xf2c7, 0xf2cf, 0xf4be, 0xc3c5, 0xf2d0,
- 0xc4a7, 0xc4a9, 0xc4a6, 0x96c7, 0xf4c3, 0xf4bb, 0xf4b9, 0xf4bd,
- 0xf4ba, 0x8fa5, 0xf4bf, 0xf4c1, 0xc4aa, 0xc4ac, 0xf4c0, 0xc4ad,
- 0xc4ab, 0xf4c2, 0xfabb, 0x8c61, 0x9570, 0xc4a8, 0x9368, 0x8f7e,
- 0xc4f4, 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0xf5fd, 0xf5f4,
- 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8,
- 0x8faa, 0xf5fc, 0xf5f2, 0xf74a, 0xc4f5, 0xf5f9, 0xa050, 0xf7f4,
- 0xf74b, 0xf749, 0xf747, 0xf748, 0xf74c, 0xc5d9, 0xf7f2, 0xf7f0,
- 0xf7f5, 0xf7f3, 0xf7f6, 0xc5da, 0xf7f1, 0x90d3, 0xf8bc, 0x9556,
- 0xf945, 0xf946, 0xf947, 0xf9c7, 0xf9bd, 0xca4f, 0xaaea, 0xad68,
- 0xd3b8, 0xd3b7, 0xb040, 0xb342, 0xd77c, 0xd77b, 0xb5ea, 0xb8b8,
- 0xb8b7, 0xb8b9, 0xe3d4, 0xe77e, 0xeb58, 0xeb5a, 0xeb59, 0xc1ab,
- 0xee57, 0xf0ba, 0xf9a5, 0xa6e4, 0x8fb8, 0xcdc9, 0xcdca, 0xcdc8,
- 0xcdc7, 0xaaeb, 0x99c8, 0xd0a9, 0xd0a7, 0xd0a6, 0xad69, 0xad6b,
- 0xad6a, 0xd0a8, 0x8faf, 0xd3c4, 0xd3c1, 0xd3bf, 0xb041, 0xd3c2,
- 0xb046, 0xd3bc, 0xd3cb, 0xd3cd, 0xd3bd, 0x99c9, 0xb043, 0xd3ce,
- 0xd3c9, 0xd3bb, 0xd3c0, 0xd3ca, 0xd3c6, 0xd3c3, 0xb048, 0xd3cc,
- 0xd3be, 0x9579, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0xd3c8,
- 0xd3ba, 0xb045, 0xb042, 0x9f49, 0xb34c, 0xd7a5, 0xb34b, 0x99ca,
- 0xd7a8, 0xd7ab, 0xb348, 0xb346, 0xd77e, 0xd7a9, 0xd7a7, 0xd7a4,
- 0xd7ac, 0xd7ad, 0xd7af, 0xd7b0, 0xd77d, 0xb345, 0xd7a2, 0xd7a1,
- 0xd7ae, 0xb347, 0xd7a3, 0xb349, 0xb344, 0xd7a6, 0xb34d, 0xb34a,
- 0xd7aa, 0xb5f1, 0xdbbf, 0xdbb4, 0xb5ee, 0xdfe7, 0xdbbd, 0xdbb1,
- 0xb5ec, 0xdbb6, 0xb5ef, 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, 0xdbb2,
- 0xdbb5, 0xb5f0, 0xdbb3, 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb,
- 0xb5ed, 0x99cb, 0xdfe8, 0xdfee, 0xdfe4, 0xdfea, 0xb8ba, 0xdfe6,
- 0xb8c0, 0xb8bf, 0xb8be, 0xdfed, 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0,
- 0xb8c3, 0xb8bd, 0xb8bc, 0xdfec, 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef,
- 0xdfeb, 0xe3f4, 0xe3e9, 0xb8bb, 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de,
- 0xbb65, 0xe3db, 0xe3e4, 0xe3dc, 0xbb67, 0xe3d6, 0xe3f1, 0xbb68,
- 0xe3ee, 0xe3ef, 0xe3d7, 0xbb6d, 0xe3e6, 0xe3e0, 0xe3e7, 0xe3da,
- 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5, 0xbb69, 0xe3ec, 0xbb6c, 0xe3f0,
- 0xe3ea, 0xbb66, 0xe3e8, 0xe3e2, 0xbb64, 0xe3d9, 0xe3e1, 0xe3ed,
- 0xe3df, 0xe3e3, 0xbdc1, 0xdfe9, 0xe7b2, 0xe7bb, 0xe7b1, 0xe7ad,
- 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b, 0xe7a1, 0xbdc0, 0xe7a7, 0xbdbf,
- 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4, 0xe7ae, 0xe7b3, 0xbdbb, 0xe7ab,
- 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba, 0xbdbc, 0xe7bf, 0xbdbe, 0xe7c0,
- 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af, 0xe7b8, 0xe7b5, 0x9dd5, 0x8fb0,
- 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, 0xbdbd, 0xeb64, 0xe7b7,
- 0xe7bc, 0xfa7a, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67, 0x9e5f,
- 0xeb65, 0xeb60, 0xeb6f, 0x99cd, 0xa0c9, 0xbfc4, 0xeb5c, 0xeb68,
- 0xeb69, 0xeb5f, 0xeb5e, 0xeb6c, 0xeb62, 0xeb5d, 0xeb63, 0xeb6e,
- 0xeb5b, 0xeb6d, 0xeb6a, 0xbfc2, 0xbfc1, 0xbfc3, 0xeb66, 0xf0cb,
- 0x9adb, 0xa0c6, 0xee59, 0xc1b1, 0xee5d, 0xee5a, 0xee61, 0xee67,
- 0xee5c, 0x8fb4, 0xee70, 0xc1ae, 0xee6a, 0xee5f, 0xee6b, 0xee66,
- 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60, 0xee6e, 0xee58, 0xee6c,
- 0xc1ac, 0xa0d7, 0xee64, 0xee63, 0xee68, 0xee5b, 0xc1b0, 0xc1b4,
- 0xee62, 0xee69, 0xc1b5, 0xee65, 0xa0c7, 0xc1ad, 0xc1af, 0xf0c7,
- 0xf0c5, 0xa043, 0xf0cc, 0xf0c9, 0xf0cd, 0x8fb5, 0xf0be, 0xf0c6,
- 0xf0d1, 0xee6f, 0xf0c2, 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4,
- 0xf0c1, 0xf0bc, 0xf0bb, 0xf0d0, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8,
- 0x8fb2, 0xc2cc, 0xc2ce, 0xf0c3, 0xf0cf, 0xa061, 0xf2de, 0xf2df,
- 0xc3c9, 0xf2dc, 0xc3c6, 0xf2e4, 0xc3ca, 0xf2e6, 0xf2db, 0xf0ce,
- 0xf2e8, 0xf2dd, 0x9e5e, 0xc3c7, 0xf2e3, 0xf2e5, 0xf2e0, 0xf2e7,
- 0xf2e2, 0xf2e1, 0xc3c8, 0x8fb6, 0xf4c5, 0xf4c6, 0xf4c8, 0xc4ae,
- 0xc4af, 0xf4c9, 0xf4c7, 0x9fe8, 0xf4c4, 0xf642, 0xf645, 0xf641,
- 0xc4fa, 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644, 0xf751, 0xf74f,
- 0x9cb2, 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0x957c, 0xf7f9,
- 0xf7d7, 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0xf8bf, 0xc5fa, 0xf8be,
- 0xf8bd, 0xc5fb, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, 0xa6e5,
- 0xd0aa, 0x9fc7, 0xd3cf, 0xd3d0, 0x8fbb, 0x8fbc, 0xdbc0, 0xf647,
- 0xf8c0, 0xa6e6, 0xad6c, 0xd0ab, 0x8fec, 0xd7b1, 0xb34e, 0xdbc2,
- 0xdbc1, 0xb5f3, 0xb8c5, 0xe7c1, 0xbdc3, 0xbdc4, 0x8fc0, 0x936a,
- 0xbfc5, 0xc5fc, 0xa6e7, 0x8be4, 0x9c7c, 0xd0ac, 0xaaed, 0xd0ae,
- 0xd0ad, 0xad6d, 0xd3d1, 0x95a1, 0xd3d8, 0xb049, 0xd3d6, 0xd3d4,
- 0xd3db, 0xd3d2, 0xd3d3, 0xb04a, 0xb04e, 0xd3dc, 0xb04d, 0xd3da,
- 0xd3d7, 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xfeec, 0x95a3, 0xb350,
- 0xd7b2, 0xb355, 0xd7c2, 0xb354, 0xd7c4, 0x8c45, 0x8cb8, 0xd7b8,
- 0xb352, 0xd7c3, 0xd7b3, 0xb353, 0xd7bf, 0xd7bb, 0xd7bd, 0xd7b7,
- 0xd7be, 0x8fc1, 0xb34f, 0xd7ba, 0xa052, 0xd7b9, 0xd7b5, 0xd7c0,
- 0xd7bc, 0xd7b4, 0xd7b6, 0xb351, 0xd7c1, 0x99d0, 0xb5f6, 0xdbcd,
- 0x8fc3, 0x8fc4, 0xdbc9, 0xdbcb, 0xdbc6, 0xdbc5, 0xdbc3, 0xdbca,
- 0xdbcc, 0xdbc8, 0x95a4, 0xdbc7, 0xb5f4, 0xb5f5, 0x8fc6, 0x9e60,
- 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3, 0xdff4, 0xf9d8, 0xdff9,
- 0xb8cf, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, 0xb8ca, 0xb8c8, 0xdff7,
- 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, 0xb8cc, 0x95a5, 0xe3f6,
- 0xbb74, 0xe442, 0xe441, 0xe3fb, 0xbb76, 0xe440, 0xe3f7, 0xe3f8,
- 0xbb6e, 0xbb70, 0x9cb3, 0xe3fd, 0xe3f5, 0xbb72, 0xbb71, 0xe3f9,
- 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0x99d1, 0xfef1, 0xdbce, 0xbb6f,
- 0xe7c2, 0xe7c9, 0xbdc6, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0xe7cc,
- 0xbdc5, 0xe7cb, 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6,
- 0xe7c7, 0xe7c8, 0xbb75, 0xeb70, 0xeb7c, 0xbfca, 0xeb77, 0xeb79,
- 0x99d2, 0xbfc8, 0xeb71, 0xeb75, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b,
- 0xeb73, 0xeb74, 0xeb7a, 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0xee71,
- 0xc1b7, 0xee77, 0xc1b9, 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0xee75,
- 0xee78, 0x9cc2, 0xc1b8, 0xf0d6, 0x99d3, 0xf0d9, 0xf0d3, 0xf0d5,
- 0x95a7, 0xf0d4, 0xf0d7, 0xf0d8, 0xee76, 0xf0d2, 0x95a9, 0xc3cd,
- 0xf2ec, 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0, 0xc3ce,
- 0xc3cc, 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0x95a6, 0xf4cb,
- 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, 0xf752,
- 0xc5a7, 0xf7fd, 0xf7fc, 0xf7fb, 0x9c5d, 0xf948, 0xf949, 0xf94b,
- 0xf94a, 0xca50, 0xa6e8, 0x98e2, 0xad6e, 0xd7c5, 0xb5f7, 0xdffa,
- 0xc2d0, 0x8fc9, 0xf2f2, 0xa0c2, 0x8fca, 0xa8a3, 0xb357, 0x99d4,
- 0xb356, 0xa0b9, 0xdbd0, 0xb5f8, 0xdbd2, 0xdbd1, 0xdffb, 0xb8d0,
- 0xe443, 0xe446, 0xe445, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf, 0x9b58,
- 0xbfcc, 0x8fcd, 0xa0d4, 0xbfcb, 0xc1bb, 0xee79, 0xee7b, 0xee7a,
- 0xc2d1, 0xf2f4, 0xf2f3, 0xf4cc, 0xc4b1, 0x8fce, 0xc4fd, 0xf754,
- 0xf753, 0xc65b, 0x8be5, 0x8979, 0xa8a4, 0xd0af, 0xad6f, 0xd7c8,
- 0xd7c6, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043, 0xdbd3, 0xdffc, 0xe041,
- 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd, 0xe044, 0x8fd0, 0xe449,
- 0xe447, 0xe448, 0xe7d3, 0xe7d1, 0xe7d2, 0xeb7d, 0xee7c, 0xee7d,
- 0xc2d2, 0xf2f5, 0xf4cd, 0xc4b2, 0xf64c, 0xf755, 0xc5a9, 0xf7fe,
- 0xf94c, 0xa8a5, 0xad71, 0xad72, 0xd0b0, 0xd0b1, 0xad70, 0xb054,
- 0xb052, 0xb051, 0xb058, 0xb050, 0xb059, 0xd3dd, 0xb056, 0xb053,
- 0xb057, 0xb055, 0xb04f, 0xb35f, 0x95b6, 0xb359, 0xd7cc, 0xb35e,
- 0xb360, 0xb35a, 0xb35b, 0xd7ca, 0x99d6, 0xb358, 0x95e5, 0xd7cb,
- 0xb35d, 0xd7c9, 0xb35c, 0xb644, 0xb646, 0x99d7, 0xdbd8, 0xb645,
- 0xb5f9, 0xb5fd, 0x95b5, 0xb8e4, 0xe049, 0xdbda, 0xb5fe, 0xdbdd,
- 0xdbde, 0xb643, 0xdbe0, 0xa0ca, 0xdbe2, 0xdbe3, 0xdbd7, 0xdbd6,
- 0xdbe4, 0xb642, 0xdbe1, 0xdbdf, 0xb640, 0xb5fb, 0xb647, 0xdbdb,
- 0xdbdc, 0xdbd9, 0xb641, 0xb5fc, 0xb5fa, 0xe048, 0xb8df, 0xb8da,
- 0xb8d5, 0x9ffd, 0xb8e5, 0xb8d6, 0xb8d2, 0xb8e1, 0xb8de, 0xb8e0,
- 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050, 0xe04d, 0xe045, 0xe04a,
- 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0xa058, 0xe047, 0xe04f, 0xe04b,
- 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, 0xe44c, 0xbb78, 0xbb7b,
- 0xe44e, 0x8fd6, 0xbba5, 0xe44d, 0xbb7d, 0x99d8, 0xbdcf, 0xe44f,
- 0xbba4, 0xe44b, 0xbba6, 0x8fd3, 0xbb79, 0xb8db, 0xbb7c, 0xbb7a,
- 0xbb7e, 0xbba2, 0xbb77, 0xbba7, 0xbba3, 0x8fe5, 0xbba1, 0xe44a,
- 0x8fe9, 0xbdd6, 0xbdd2, 0x99d9, 0xbdd9, 0xe7d6, 0xbdda, 0xe7e2,
- 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd, 0xbdd5, 0xe7de, 0xbdd4, 0xe7e1,
- 0xbdce, 0xe7df, 0xe7d5, 0xbdcd, 0xebaa, 0xbdd3, 0xbdd0, 0xbdd8,
- 0xe7d4, 0xe7d8, 0xbdcc, 0xe7d7, 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc,
- 0xe7e0, 0xe7e4, 0x927c, 0xbddb, 0xbfd2, 0xeba5, 0xebab, 0xeba8,
- 0xeb7e, 0xebac, 0xeba1, 0xeba7, 0xbfcd, 0xbfd3, 0xebad, 0x9c45,
- 0xbfcf, 0xbfd9, 0xbfd4, 0xebaf, 0xeba9, 0xbfd0, 0xeba2, 0xbfda,
- 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, 0xbdd1, 0xbfce, 0xebb0, 0xbfdc,
- 0xbfd5, 0xebae, 0xbfd1, 0xbfd6, 0xbfd7, 0xc1c3, 0xeea4, 0xeead,
- 0xeeaa, 0xeeac, 0xc1c0, 0xeea5, 0x8fde, 0xeeab, 0xc1bc, 0xeea7,
- 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2, 0xc1bd,
- 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e, 0x8fdf,
- 0xc1c1, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, 0xc2d3,
- 0xf0da, 0xc2d6, 0xc2d5, 0xa04b, 0xf0e9, 0xf0e1, 0xf0de, 0xf0e4,
- 0xf0dd, 0xf0df, 0xf0e8, 0xf0e6, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2,
- 0xf0ec, 0xf0e3, 0x8fe2, 0xf2f9, 0xc3cf, 0xf341, 0xa0cc, 0xf64f,
- 0xc3d6, 0xf0e0, 0xf2f7, 0xc3d2, 0xf2f8, 0xf2fd, 0x8fe3, 0x8fe4,
- 0xc3d4, 0xc3d5, 0xf2f6, 0xf340, 0xf342, 0xf2fa, 0xf2fc, 0xf2fe,
- 0xf2fb, 0xf343, 0xc3d1, 0xc3d7, 0xc3d3, 0xc3d0, 0xf4d0, 0x9bc4,
- 0xc4b7, 0xf4ce, 0x9bfc, 0xf4d2, 0xf4d3, 0xc4b5, 0xf4d4, 0xf4d1,
- 0x964c, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0xc4b6, 0xc4b3, 0xc4fe,
- 0xc540, 0xf64e, 0xf64d, 0xf650, 0xf651, 0xc541, 0xf756, 0xf75b,
- 0xc5aa, 0x9af6, 0xf758, 0x8cae, 0xf757, 0xf75a, 0xf759, 0xf843,
- 0xc5dc, 0xf842, 0xf840, 0xf841, 0x8fe7, 0xc5fe, 0xc5fd, 0xf8c1,
- 0xf8c2, 0xc640, 0xf94d, 0xf94e, 0xc667, 0x8fe8, 0xc66d, 0xf9a9,
- 0xf9c8, 0x8be7, 0x897a, 0x897b, 0xa8a6, 0xd7cd, 0xd7ce, 0xe052,
- 0xe450, 0xe7e5, 0xc1c6, 0xc1c5, 0xf0ee, 0xf344, 0xf844, 0xa8a7,
- 0xd3de, 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6, 0xbddd,
- 0xeeb1, 0xc2d7, 0x99da, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, 0xb362,
- 0xd7cf, 0xd7d0, 0xdbe5, 0xb648, 0xb8e6, 0xe056, 0xe055, 0xe057,
- 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0xeeb5, 0xeeb2,
- 0xeeb4, 0xeeb3, 0xc1c7, 0xf0ef, 0xf346, 0xf345, 0xcba4, 0xb05c,
- 0xb05b, 0xd3e0, 0xd7d1, 0xdbe7, 0xdbe6, 0xb649, 0xe059, 0xe05a,
- 0xe058, 0xb8e8, 0xb8e7, 0xbbaa, 0xbba9, 0xe7e7, 0xebb3, 0xebb1,
- 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0xf0f2, 0xf0f1, 0xf0f0, 0xf347,
- 0x8fed, 0xf9aa, 0xa8a9, 0xad73, 0x95c0, 0xad74, 0xb05d, 0xb05e,
- 0xd3e2, 0xd3e1, 0xd7d2, 0xb368, 0xb366, 0xb363, 0xb367, 0xb365,
- 0xb364, 0xa0cb, 0xb64a, 0xdbea, 0xb8ed, 0xb64c, 0xb651, 0xdbec,
- 0xb653, 0xb652, 0xb655, 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d,
- 0xdbe9, 0xb654, 0xb650, 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0,
- 0xb8ea, 0xb8eb, 0xb8e9, 0xe05b, 0x9e48, 0xe454, 0xbbac, 0xbbad,
- 0xbbab, 0x99db, 0xe453, 0x8ff3, 0xe455, 0xe7ea, 0xe7ec, 0x8ff9,
- 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, 0xbddf, 0xbde9, 0xbde5, 0xbde6,
- 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, 0xe7eb, 0x95c1, 0xbde8, 0xa04e,
- 0xbde3, 0xbde4, 0xebb5, 0xebb7, 0xebb6, 0x99dc, 0xebb8, 0xbfe0,
- 0xebb4, 0xa064, 0xc1cb, 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9,
- 0xf0f3, 0xf0f6, 0xf0f5, 0x8ff7, 0xf0f4, 0xc2d8, 0xf348, 0xf349,
- 0xc3d8, 0xf34a, 0xc3d9, 0x89b0, 0xa048, 0xc4ba, 0xc4b9, 0xf652,
- 0x8ffb, 0x8ff6, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, 0x9ddc,
- 0xf845, 0xc642, 0x99dd, 0x8be8, 0xa8aa, 0xb36a, 0xb369, 0xe05c,
- 0xe05d, 0xbbae, 0xebb9, 0xbdea, 0xebba, 0xeeb9, 0xa8ab, 0xd0b2,
- 0xad76, 0xad75, 0xd3e3, 0xb05f, 0xd3e4, 0xd7d5, 0x92c1, 0xd7d4,
- 0xd7d3, 0xdbee, 0xb658, 0x9fd6, 0xdbed, 0xb657, 0xdbef, 0xb656,
- 0xe05f, 0xe062, 0xe060, 0xe061, 0xe065, 0xe05e, 0xe066, 0xe063,
- 0xe064, 0xbbb0, 0xe456, 0xbbaf, 0xe7f2, 0xe7f0, 0xbdeb, 0xe7ef,
- 0xe7f1, 0xbdec, 0xebbb, 0xa0d2, 0xebbc, 0xc1cd, 0x9040, 0xf34c,
- 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, 0xf96f, 0xa8ac, 0xad77,
- 0xd3e5, 0xd3e7, 0xd3e6, 0xd7d8, 0xb36c, 0xd7d6, 0xb36b, 0xd7d9,
- 0x8ac4, 0xd7da, 0xd7d7, 0x99e0, 0xdbfb, 0xb660, 0xdbf3, 0xdbf9,
- 0xb65b, 0xb65e, 0xdbf2, 0xb659, 0xdbf6, 0xe06c, 0xb65d, 0xdbf1,
- 0x9ff0, 0xdbf7, 0xdbf4, 0xdbfa, 0xdbf0, 0xdbf8, 0xb65c, 0xb65f,
- 0xdbf5, 0xb65a, 0xb8f2, 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8,
- 0xb8f9, 0xe070, 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0xe06b,
- 0xb8f4, 0xe067, 0xe06a, 0xe071, 0xb8f5, 0xe073, 0xb8f6, 0xbbb1,
- 0xe45b, 0xe461, 0xe459, 0xe462, 0x9ff3, 0xe458, 0xe45d, 0xe463,
- 0xe460, 0xe45f, 0xe45e, 0xe457, 0xe45c, 0xe45a, 0x9dbf, 0xbdf1,
- 0xbdee, 0xe7fb, 0xe841, 0xe843, 0xe840, 0xe7f8, 0xe7fa, 0xe845,
- 0xe842, 0xe7fc, 0xe846, 0xe7f9, 0xe844, 0xbdef, 0xbdf5, 0xbdf3,
- 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4, 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe,
- 0x9ff6, 0xbdf2, 0x95c8, 0xbded, 0x9e5a, 0xe7f7, 0xebc6, 0xbfe2,
- 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0xebbf, 0xbfe5, 0x99e3, 0xebc3,
- 0xebc4, 0xebbe, 0xebc7, 0xebc0, 0xebc5, 0xbfe4, 0xbfe1, 0xebc1,
- 0x8a4a, 0xeebf, 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb,
- 0xeeba, 0x9ff1, 0xeebd, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa,
- 0xc2d9, 0xf141, 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, 0xf0f9,
- 0xf142, 0xf0f8, 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, 0x8aa7,
- 0xf144, 0xf352, 0xc3de, 0xf34f, 0xf353, 0x99e6, 0xc3db, 0xf351,
- 0xc3e0, 0x9ff7, 0xc3dd, 0x9fed, 0xf350, 0xc3df, 0xf354, 0xc3da,
- 0x8a5c, 0x9dae, 0xc4bc, 0xc4be, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc,
- 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0xf761,
- 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, 0xf846,
- 0xf75f, 0xf8c6, 0xf8c3, 0xf8c4, 0xf8c5, 0xc65c, 0xf951, 0xf950,
- 0xf94f, 0xf970, 0x95c9, 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060,
- 0x9048, 0x99e8, 0xb8fa, 0x9049, 0x8cba, 0xbdf6, 0x90b1, 0xebc8,
- 0xc2df, 0xf355, 0x904a, 0xf9ac, 0xa8ae, 0xaaee, 0xad79, 0xad78,
- 0x99ea, 0xb063, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0xd7df, 0xd7db,
- 0x9bd1, 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, 0xd7e0, 0xd7e1,
- 0x99eb, 0x99ec, 0xdc43, 0xdc41, 0xdc45, 0xdc46, 0xdc4c, 0xdc48,
- 0xdc4a, 0x99ed, 0xdc42, 0xdbfc, 0xdc49, 0x99ee, 0xdc4b, 0xdc44,
- 0xdc47, 0xdbfd, 0xb662, 0xdc40, 0xdbfe, 0xb661, 0xb663, 0xb8fd,
- 0xe075, 0xe077, 0xe076, 0xe07b, 0xb8fb, 0xe078, 0xe074, 0xe079,
- 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0xe467, 0xe466, 0xe464, 0xe465,
- 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d, 0xe84e, 0xe849, 0x904c,
- 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9, 0xe84b, 0xe84c,
- 0xe848, 0xbe40, 0xbdfb, 0xbdfa, 0xbdfc, 0xe847, 0x904d, 0xebca,
- 0xbfe8, 0x95cb, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce,
- 0xbfe9, 0xebcd, 0xbfe7, 0xc1d3, 0xc1d6, 0xeec1, 0x97e2, 0xc1d4,
- 0xeec0, 0xc1d2, 0xc1d5, 0xf146, 0xf147, 0xf148, 0xc2e0, 0x95cc,
- 0xf149, 0xc2e1, 0xc3e2, 0xf358, 0xf359, 0xf357, 0xf356, 0xf35a,
- 0xc3e1, 0xf4dd, 0xf4db, 0xf4dc, 0xf4de, 0xf4da, 0xf4df, 0xf658,
- 0x9f78, 0xf659, 0xf657, 0xc546, 0xf764, 0xc5af, 0xf765, 0xf848,
- 0xf847, 0x897c, 0x897d, 0x897e, 0x995d, 0xa8af, 0xb664, 0xb940,
- 0x9b5a, 0xbbb6, 0x9050, 0xbfec, 0x8c4f, 0xbfeb, 0xc3e3, 0xc47c,
- 0xc547, 0xa8b0, 0xb064, 0xb941, 0x9054, 0xf35b, 0xc6d6, 0x9aa8,
- 0x99ef, 0xfeeb, 0x9da3, 0x9da1, 0x9943, 0x9945, 0x9d7d, 0xcba6,
- 0x99f0, 0xa8b1, 0xa8b4, 0xa8b3, 0xa8b2, 0xcba5, 0x99f1, 0xcdcd,
- 0x99f2, 0xcdcf, 0xaaef, 0x8cbc, 0x9d60, 0xaaf1, 0xcdcc, 0xcdce,
- 0xaaf0, 0xcdd1, 0xcdd0, 0xcdd2, 0xa0a3, 0xd0b6, 0xd0b4, 0xad7c,
- 0xd0b3, 0xada3, 0xad7e, 0xad7b, 0xada4, 0xad7d, 0xada2, 0xada1,
- 0xd0b5, 0xad7a, 0xb06a, 0xd3eb, 0xd3f1, 0xb067, 0xb06e, 0x905b,
- 0xb069, 0xd3ee, 0xd3f0, 0xb06c, 0xd3ea, 0xd3ed, 0xb068, 0xb065,
- 0xd3ec, 0xb06b, 0xd3ef, 0xb06d, 0xb066, 0x9edb, 0xd7e3, 0xd7e6,
- 0xb370, 0xb37a, 0xb376, 0xd7e4, 0x9d79, 0xb37e, 0xb377, 0xb37c,
- 0xb372, 0xb36f, 0xb371, 0xb37d, 0xd7e5, 0xb375, 0xb378, 0xb374,
- 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2, 0xdc4d, 0xb665, 0xdc4f,
- 0xb667, 0xb669, 0x99f3, 0xdc4e, 0xb666, 0xb66a, 0x9062, 0xb668,
- 0xb947, 0xe0a3, 0xb94f, 0xe07e, 0xb950, 0xb945, 0xe0a1, 0xb94a,
- 0xe0a2, 0xb943, 0xb942, 0x9f55, 0xb94d, 0xb94c, 0xb94b, 0xb949,
- 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0x9bf9, 0xbbb8, 0xbbbb,
- 0xbbbf, 0xbbb9, 0xbbbe, 0xbbbc, 0xbbb7, 0x9065, 0xbbbd, 0xbbba,
- 0x96e0, 0xe852, 0xbe43, 0xbe41, 0xe853, 0x98be, 0xbe44, 0xbe42,
- 0xe851, 0xe850, 0xbff0, 0xe84f, 0xbfee, 0xbfed, 0xebd0, 0xbe45,
- 0xbfef, 0xebd1, 0xbff2, 0xebd2, 0xbff1, 0xc1d8, 0xeec3, 0xc1d7,
- 0xc1dc, 0xc1da, 0xc1db, 0xc2e3, 0xc1d9, 0xeec2, 0xebd3, 0xc2e2,
- 0xc2e4, 0xc3e4, 0xc3e5, 0xf4e0, 0xc5de, 0xc5dd, 0xa8b6, 0xca55,
- 0xb06f, 0xca52, 0xca53, 0xca51, 0xca54, 0xcbaa, 0xcba7, 0xcbac,
- 0xcba8, 0xa8b7, 0xa8ba, 0xcba9, 0xa8b9, 0xcbab, 0x9068, 0xa8b8,
- 0x906c, 0xcdd5, 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6, 0xcdd4, 0xaaf2,
- 0xaaf5, 0xaaf3, 0x95d8, 0xd0b8, 0xd0bc, 0xd0b9, 0xada7, 0xada8,
- 0x906a, 0xd0bb, 0xd0bd, 0xd0bf, 0xada5, 0xd0be, 0xada6, 0xd7ee,
- 0xd0ba, 0xd3f2, 0xd3fb, 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc,
- 0xb071, 0xd3f7, 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8,
- 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0xd7e8, 0xd7ea,
- 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0xdc56, 0xebd4, 0xdc57,
- 0xdc54, 0xb3a3, 0xb66e, 0xdc53, 0xdc59, 0xdc58, 0xb66b, 0xdc5c,
- 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, 0xdc55, 0xb66d, 0xe0aa, 0xe0a5,
- 0xe0ab, 0xe0a6, 0xe0a4, 0xe0a7, 0xb951, 0xe0a9, 0xe0a8, 0xb952,
- 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c,
- 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0xe859, 0xbe48, 0xf14a,
- 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, 0xbe46,
- 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0xeec4, 0xc1dd,
- 0xf14b, 0xf14c, 0xf14d, 0xf35d, 0xf35c, 0xf4e2, 0xf4e1, 0xf65b,
- 0xf65c, 0xf65a, 0xf766, 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075,
- 0xb074, 0xd440, 0xd441, 0xd3fe, 0x9fb2, 0xb073, 0xd7f5, 0xd7f6,
- 0xd7f2, 0xb3a4, 0xd7f3, 0x9fae, 0xd7f4, 0x9fb0, 0x89ad, 0xdc5f,
- 0xdc61, 0xdc5d, 0xdc60, 0xb66f, 0xdc5e, 0xb670, 0x906e, 0xdd73,
- 0xb955, 0xb954, 0xb953, 0xe0ac, 0xe0ad, 0x9e71, 0xe473, 0xe475,
- 0xbbc6, 0xbbc3, 0x9e4a, 0xbbc5, 0xbbc4, 0xe474, 0xe472, 0x9fdc,
- 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a,
- 0xbe4b, 0xe85d, 0xbe4c, 0x89ab, 0xebdb, 0x9fb8, 0xebdc, 0xebd9,
- 0xebda, 0xbff4, 0xebd8, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb,
- 0xc1df, 0xeec9, 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0xf14f, 0xf150,
- 0xf14e, 0x9070, 0xf152, 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151,
- 0xf35e, 0xc3e6, 0xf4e5, 0xf4e6, 0xc4bf, 0xf4e4, 0x8b63, 0xf4e3,
- 0xf65d, 0xc548, 0x95dc, 0xf849, 0xf8c8, 0xf8c7, 0xc643, 0xc65d,
- 0xf8c9, 0xf971, 0x9071, 0xc66f, 0xa8bc, 0xaaf6, 0xb956, 0xc4c0,
- 0xa8bd, 0xadab, 0xb3a5, 0xb671, 0xc2e7, 0xaaf7, 0xd0c1, 0xd0c0,
- 0xd442, 0xfc5e, 0xb078, 0xb076, 0xb07a, 0xd444, 0xb079, 0xb077,
- 0x8949, 0xd443, 0xb3a8, 0xd7fc, 0x965b, 0xb3a7, 0xb3a9, 0xd842,
- 0xb3ab, 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0xd7f9, 0xd7fa,
- 0xd7f8, 0xb3a6, 0x8c50, 0xd841, 0xd7fb, 0xd7fd, 0x94a6, 0xdc6d,
- 0x8fd5, 0xdc6c, 0xdc6a, 0xdc62, 0xdc71, 0xdc65, 0xdc6f, 0xdc76,
- 0xdc6e, 0xb679, 0x9e73, 0xb675, 0xdc63, 0xdc69, 0xb677, 0x9075,
- 0xdc68, 0xb678, 0xb67a, 0xdc6b, 0x99f7, 0xb672, 0xb673, 0xdc77,
- 0xdc75, 0xdc74, 0xdc66, 0xdc72, 0xb676, 0x8cbf, 0xb674, 0xdc73,
- 0xdc64, 0xdc67, 0xdc70, 0x99f9, 0x9663, 0x95b9, 0xe4ba, 0xe0b7,
- 0xe0b0, 0xe0c3, 0xe0cc, 0xe0b3, 0xb961, 0x94d4, 0xe0c0, 0xb957,
- 0xb959, 0xb965, 0xe0b1, 0xfcfa, 0xb95a, 0xb95c, 0xb966, 0xb95b,
- 0x9077, 0x90ab, 0xb964, 0xe0b9, 0xe0ae, 0xb962, 0xe0b8, 0xb95e,
- 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, 0xe0c6, 0xb960, 0xe0af, 0xe0c9,
- 0xe0c4, 0x9d4d, 0xe0cb, 0xb958, 0x99fa, 0xb967, 0xb95d, 0x92e3,
- 0xe0b5, 0x97bb, 0xe0bd, 0xe0c1, 0x9078, 0xe0c5, 0xb95f, 0xe0b4,
- 0xe0b2, 0xe0be, 0x99fb, 0xe0bb, 0xe0ba, 0x97e0, 0xe0bf, 0xe0c2,
- 0xe0c7, 0xe478, 0x96dc, 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc, 0xbbd0,
- 0xe4ad, 0xe4b5, 0xe4a6, 0xbbc8, 0x9ca8, 0xe4aa, 0xe0b6, 0x9772,
- 0xbbc9, 0xe4b1, 0xe4b6, 0xe4ae, 0x9440, 0xe4b0, 0xe4b9, 0xe4b2,
- 0xe47e, 0xe4a9, 0x92f2, 0xbbd1, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb,
- 0xe4a5, 0xbbca, 0xe4b3, 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0xe47b,
- 0xe4af, 0xe4ac, 0xe4a7, 0xe477, 0xe476, 0xe4a1, 0xe4b4, 0xbbcf,
- 0xe4b7, 0xe47d, 0xe4a3, 0xbe52, 0x99fd, 0x99fc, 0xbe5a, 0xbe55,
- 0xe8a4, 0xe8a1, 0xe867, 0xbe50, 0xf9d7, 0x964a, 0xbe4f, 0xbe56,
- 0x96d8, 0x99fe, 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e,
- 0xe8a3, 0xbe58, 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877,
- 0xe875, 0xe868, 0xe862, 0xe87d, 0xbe57, 0xe87e, 0x904b, 0xe878,
- 0xe86d, 0xe86b, 0xe866, 0xfa41, 0xe86e, 0xe87b, 0xe86a, 0xe87a,
- 0xe8a2, 0x9a40, 0xbe53, 0x975b, 0xe876, 0xe87c, 0xe872, 0xe86c,
- 0xbe51, 0x9a41, 0x91dd, 0xe4a8, 0xe870, 0xbe59, 0xe869, 0x93fc,
- 0x9a42, 0x9a43, 0x9659, 0xebf4, 0xbff7, 0xebf3, 0xebf0, 0xec44,
- 0xbffb, 0x9a44, 0xec41, 0xebf8, 0xec43, 0xebe9, 0xebf6, 0x9051,
- 0xbffd, 0xebe1, 0x94bf, 0xebdf, 0xec42, 0xec40, 0xebfe, 0xebed,
- 0xebec, 0xebe2, 0xc040, 0xebe8, 0xebf2, 0xebfd, 0xc043, 0xec45,
- 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0xebef, 0xebde, 0xebe0, 0xbff5,
- 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041, 0xebdd, 0xc1e3,
- 0xebf9, 0xebfc, 0xbffc, 0x90a2, 0xebeb, 0xc044, 0xbff9, 0x9cab,
- 0x9776, 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0xebe4, 0xebfa, 0xebe5,
- 0xfc55, 0xfe45, 0x94a8, 0x9a45, 0xfa4b, 0x9de1, 0xebea, 0xeed2,
- 0x96d9, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3,
- 0xeed8, 0xeed9, 0xeee2, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, 0xeed4,
- 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0xeee8, 0x9774, 0xeeda, 0xeee7,
- 0xfdf5, 0xeee9, 0xeed0, 0xc1e6, 0x92e5, 0xeeea, 0x9645, 0x91da,
- 0xeede, 0x90a3, 0xc1ea, 0xeedb, 0xa05f, 0xc1ec, 0xeee4, 0x90af,
- 0x97bf, 0xc1e4, 0xeed6, 0xeee5, 0x914c, 0xeedf, 0xebe3, 0xeee6,
- 0xeed3, 0x967a, 0xc1e9, 0xeeeb, 0x91de, 0xc1e2, 0xeece, 0x9a46,
- 0xfeb0, 0x9779, 0x946c, 0xf160, 0xf159, 0xc2e9, 0xf154, 0xf163,
- 0xf15b, 0xeedc, 0x9858, 0xf165, 0xf155, 0xc2e8, 0xf15f, 0xc2ea,
- 0xc2f2, 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0x9266, 0xf158, 0xf15d,
- 0xf162, 0x93fb, 0xeecd, 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e,
- 0xf15a, 0xf168, 0xf36a, 0xf15c, 0xc2ee, 0x9a47, 0xc2ed, 0xeecf,
- 0xc2ef, 0xf164, 0xf166, 0xc2ec, 0xf169, 0xf153, 0xf156, 0x9749,
- 0x9748, 0x934a, 0x9ce2, 0xf373, 0xf363, 0xc3eb, 0xf371, 0x9264,
- 0xf361, 0xc3ec, 0xf36c, 0x91df, 0xf368, 0xc3f1, 0xf372, 0xf362,
- 0xf365, 0xc3e9, 0xf374, 0xfb79, 0xf36d, 0xf370, 0xc3ef, 0xc3f4,
- 0xc3f2, 0xf369, 0xf364, 0x96d7, 0xc3ed, 0xc3ee, 0xf360, 0xc3ea,
- 0x9343, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3, 0xf36b, 0xf375, 0xc3f5,
- 0xf367, 0xf36e, 0xfdcb, 0xfe7a, 0x91db, 0x8c6a, 0xf4f3, 0xf542,
- 0xf4f5, 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed,
- 0xf4fe, 0xf4f4, 0x97af, 0xc4c2, 0x95dd, 0xf544, 0xf4f6, 0x9348,
- 0xf4fb, 0xf4fd, 0xf4e7, 0xf541, 0xf4f2, 0xf4f7, 0xf4eb, 0xf4ef,
- 0xf543, 0xf4f9, 0xf4e8, 0xf4ec, 0xf4ee, 0xf4f8, 0x9a4b, 0xc4c1,
- 0xf4f1, 0xfc45, 0x9a4d, 0xf4ea, 0x91bc, 0x90e2, 0x90b4, 0x95e1,
- 0xf4f0, 0xf661, 0xf666, 0xc54f, 0xf668, 0x9a4e, 0xc549, 0xf664,
- 0xf66a, 0xc54e, 0xc54a, 0xc54b, 0xf660, 0xf667, 0xc54d, 0xf665,
- 0xc54c, 0xf65f, 0xf663, 0xf662, 0x9a4f, 0xf65e, 0xf669, 0xfe40,
- 0xfe43, 0xc5b1, 0xf76d, 0xf770, 0xf76c, 0xf76e, 0xf76f, 0xf769,
- 0xf76a, 0xf767, 0x96dd, 0xf76b, 0xf768, 0xc5b2, 0xc5b3, 0x9a51,
- 0xf84b, 0xf84d, 0x96a7, 0x90b0, 0xf84c, 0xf84e, 0xc5e0, 0xf84a,
- 0xc5df, 0xc5e1, 0x9c4e, 0x9443, 0xf8cb, 0xf8cc, 0xc644, 0xf8ca,
- 0x8eba, 0xf953, 0xf952, 0xf954, 0xc65f, 0xf955, 0xc65e, 0xf956,
- 0xf972, 0xf975, 0xf974, 0xc668, 0xf973, 0x9a52, 0xfcc1, 0xc672,
- 0xc670, 0xc671, 0xc677, 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0x8be9,
- 0x9caf, 0x8bfd, 0x9abc, 0x9ab8, 0x9aae, 0x9aa7, 0x9a53, 0x9d74,
- 0xaaf8, 0x8bea, 0xd844, 0xdc78, 0xe8a5, 0xf376, 0x8beb, 0xaaf9,
- 0xadac, 0xb07b, 0x90b2, 0xd845, 0xd846, 0xb3ac, 0xb67d, 0xdc7a,
- 0xdc79, 0xb6a3, 0xb67c, 0xdc7b, 0xb67e, 0xb6a2, 0xb6a1, 0xb67b,
- 0x95e9, 0x95e8, 0xb968, 0x95e6, 0xe0d0, 0xe0ce, 0xe0cf, 0xe0cd,
- 0x90b5, 0xbbd2, 0x9a54, 0xbbd5, 0xbbd7, 0xbbd6, 0x90b3, 0x95e7,
- 0xbbd3, 0xbbd4, 0x8b50, 0xe8a7, 0xe8a6, 0xbe5b, 0xe8a8, 0xe8a9,
- 0xbe5c, 0xec4d, 0xec4b, 0xeef3, 0xec49, 0xec4a, 0xc046, 0xec46,
- 0xec4e, 0xec48, 0xec4c, 0xeeef, 0xeef1, 0xeef2, 0xc1f3, 0xeeee,
- 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0, 0xc1f1, 0xec47, 0xc2f5, 0xf16e,
- 0xf16c, 0xf16d, 0xc2f3, 0xc2f6, 0xc2f4, 0xf377, 0xf378, 0xc3f6,
- 0xf545, 0xf547, 0xf546, 0xc4c4, 0xc550, 0xf66d, 0xf66c, 0xf66b,
- 0x8bec, 0x9a56, 0xaafa, 0x8bfb, 0xc9aa, 0xca58, 0xa6e9, 0xca56,
- 0xca59, 0xca57, 0xcbae, 0xa8c1, 0xa8c2, 0xcbb0, 0xa8bf, 0xcbaf,
- 0xcbad, 0xa8c0, 0xa8be, 0x9a57, 0xa0aa, 0xcdd8, 0xcddb, 0xaafd,
- 0xcdda, 0xcdd9, 0xaafc, 0xaafb, 0x9fa6, 0xab40, 0xcddc, 0xaafe,
- 0x99cc, 0xd0c6, 0xadae, 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, 0xadad,
- 0xd0c4, 0xd0c5, 0xd0c2, 0x9c59, 0xb0a4, 0xb0a1, 0xd445, 0xb0a2,
- 0xb0a5, 0xd446, 0xb07e, 0xb07c, 0xb07d, 0xb0a3, 0x99b5, 0xb3ad,
- 0xd849, 0xb3b5, 0xd848, 0xd84b, 0xb3b1, 0xd84a, 0xb6ab, 0xb3af,
- 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, 0xb3b0, 0x90be, 0xd847, 0xb6a7,
- 0xdc7d, 0xdca3, 0x9faf, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9, 0xdc7c,
- 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0xb6aa, 0xb6a5, 0x95f2, 0xe0d3,
- 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0x90bf, 0xe0d4, 0xb969, 0xbbd8,
- 0xbbda, 0xbbd9, 0xe4bb, 0xe4bc, 0xe8ab, 0x90c1, 0xe8aa, 0xfee4,
- 0xc047, 0xc048, 0xec4f, 0xc049, 0xeef6, 0xeef4, 0xeef5, 0xc1f4,
- 0xf16f, 0xc3f7, 0x90c4, 0xc1f5, 0xab41, 0xb0a6, 0xd447, 0x90c7,
- 0xd84c, 0xb3b6, 0xb6ad, 0xdca4, 0xdca6, 0xb6af, 0xb6ae, 0xb6b0,
- 0xb6b1, 0xdca5, 0xb96e, 0xb96f, 0xb96d, 0xbbdb, 0xb96c, 0xe0d5,
- 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6, 0xf170, 0xf174, 0xc2f9,
- 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb, 0xf173, 0xf379, 0xc2f7,
- 0xc3f8, 0xf8cd, 0xab42, 0xb3b8, 0xb3b7, 0xb6b2, 0xdca8, 0xdca7,
- 0xb6b3, 0x92e4, 0xe0d9, 0xb973, 0xb970, 0xe0d8, 0xb972, 0xe0d6,
- 0xb971, 0xe0d7, 0xe4bd, 0xbbdd, 0xe8af, 0x9f52, 0xbe5d, 0xe8ad,
- 0xbe5e, 0xbe5f, 0xe8ae, 0xbe60, 0xec51, 0xc04e, 0xc04b, 0xc050,
- 0xec53, 0xc04c, 0xec52, 0xc04f, 0xc04d, 0xeef9, 0xeefb, 0x90db,
- 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, 0xeef7, 0xa066, 0xf177, 0xf176,
- 0xc2fc, 0xf178, 0xf37e, 0xc3fa, 0xf37d, 0xf37a, 0xc3f9, 0xf37b,
- 0xf37c, 0xf548, 0xf549, 0xc4c5, 0x90d2, 0xc553, 0xf66e, 0x90d4,
- 0xc551, 0xc552, 0xf66f, 0xc5b4, 0xc5b5, 0xf771, 0x9a5b, 0x95fd,
- 0xc645, 0xf8cf, 0xc647, 0xf8ce, 0xf8d0, 0xc646, 0xf957, 0xf9ad,
- 0x8bc4, 0xab43, 0x8c66, 0xb974, 0x90de, 0xe4be, 0xe8b0, 0xc051,
- 0xc052, 0x9ce4, 0xab44, 0x90e1, 0xbe61, 0xc3fb, 0xadb1, 0xc053,
- 0xc5e2, 0xadb2, 0xd84d, 0xdca9, 0x9e46, 0xdcab, 0xdcaa, 0x9651,
- 0xe0dd, 0xe0da, 0xb975, 0xb976, 0xe0db, 0xe0dc, 0xe4c0, 0xe4c5,
- 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8, 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2,
- 0xe4c6, 0xbbdf, 0xfb58, 0xe8b3, 0x90e6, 0xe8b1, 0xbe63, 0xbe62,
- 0xe8b2, 0xbe64, 0xec56, 0xec55, 0xc054, 0xec54, 0xeefc, 0x9650,
- 0xeefe, 0xef41, 0xef40, 0x90e7, 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd,
- 0xf17d, 0xf1a2, 0xc2fe, 0xf17b, 0xf17e, 0xf17c, 0xf179, 0xc340,
- 0xf17a, 0x90e8, 0x9a5d, 0xf3a1, 0x9f7a, 0xf3a3, 0xf3a2, 0x9b5c,
- 0xf54a, 0x9f7c, 0xf54b, 0xfc52, 0x90e9, 0xf670, 0x90ea, 0xc5b7,
- 0x9a5e, 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, 0x9f76, 0xc669,
- 0xadb3, 0xb6b4, 0xe4ca, 0xe4c9, 0xe8b5, 0xe8b4, 0x90eb, 0xc1fa,
- 0xef43, 0xef42, 0xf1a5, 0xf1a3, 0xf1a6, 0xf1a4, 0xc3fc, 0xf3a4,
- 0xf3a5, 0xf3a6, 0x90ec, 0xf671, 0xf772, 0xf8d2, 0x8bee, 0xadb4,
- 0x90ee, 0xec57, 0xef44, 0x91c6, 0xadb5, 0x90f2, 0xbbe0, 0xec58,
- 0xc341, 0xf1a7, 0xc3fd, 0xf54c, 0xf54d, 0xc554, 0xf851, 0xadb6,
- 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, 0xb6b7, 0xb97a,
- 0xb97c, 0xe0df, 0xe0e0, 0xe0de, 0xb977, 0xb978, 0xb97b, 0xb979,
- 0xfcbc, 0x8a74, 0xe4cb, 0xbbe1, 0xbbe2, 0xe8bc, 0xbe67, 0xe8b7,
- 0xe8b6, 0x9657, 0xe8bb, 0xbe65, 0x9cef, 0xc05b, 0xe8b8, 0xe8bd,
- 0xe8ba, 0xe8b9, 0xbe66, 0xc059, 0x9fdf, 0xec5a, 0xc055, 0xec5b,
- 0x90f7, 0x90f6, 0xec59, 0xc058, 0xc056, 0xc05a, 0xc057, 0xef45,
- 0xef4a, 0xef46, 0xef49, 0xc1fb, 0x9b5e, 0xedd4, 0xef48, 0xef47,
- 0x90f8, 0xc344, 0xc342, 0xc345, 0xc343, 0xf1a8, 0xf1a9, 0xf1aa,
- 0xc346, 0xf3aa, 0xc440, 0xf3a8, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe,
- 0xf551, 0xf54e, 0xf54f, 0xf550, 0xf672, 0xc556, 0x90f9, 0xc555,
- 0x8cc9, 0xf774, 0xf773, 0xc5b8, 0xfa6a, 0xc5e3, 0xc649, 0xc660,
- 0xf958, 0xf9ae, 0xf9af, 0x8bef, 0xadb7, 0xdcad, 0xe0e1, 0xe4cc,
- 0xe4cd, 0xbbe3, 0xbbe4, 0xe8be, 0xbe68, 0x9fe0, 0xc1fc, 0x9142,
- 0xf1ab, 0x9a62, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab,
- 0xf675, 0xf552, 0xf553, 0x9569, 0xc4c6, 0xf674, 0x9144, 0x9143,
- 0xf673, 0x9141, 0xf775, 0xf9b0, 0x8bf0, 0xadb8, 0x9660, 0x8bf1,
- 0xadb9, 0x99f6, 0x9149, 0xb0a7, 0xd448, 0xd84f, 0x914a, 0xb6b8,
- 0xb6bb, 0xb6b9, 0xdcae, 0x914b, 0xb6bd, 0xb6ba, 0x9a64, 0xb6bc,
- 0xb97e, 0x8abf, 0xe0e2, 0xe0e3, 0xe8c0, 0xb97d, 0xb9a1, 0xb9a2,
- 0xe4cf, 0xe4ce, 0xbbe5, 0xbbe6, 0xe4d0, 0xe8bf, 0xbbe8, 0xbe69,
- 0xbbe7, 0x9a66, 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a, 0xe8c2, 0xe8c5,
- 0xe8c3, 0xe8c4, 0xbe6c, 0x9a67, 0xc061, 0xc05f, 0x9a69, 0xc05e,
- 0xec5d, 0xc060, 0xec5c, 0xef4b, 0xec5e, 0xc05d, 0xec5f, 0xef4e,
- 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, 0xef54, 0xef53, 0xef50,
- 0xef4f, 0xc1fd, 0x9a6a, 0x9652, 0x914d, 0xf1ae, 0x9666, 0xf1ad,
- 0xc34a, 0xc348, 0xc349, 0x9f7b, 0xf1ac, 0x9a6b, 0xf3b1, 0xc443,
- 0xf3b0, 0xf3af, 0xc444, 0xa06c, 0xf558, 0xf557, 0x9667, 0xf555,
- 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557,
- 0xf676, 0xf556, 0xf777, 0xc5e4, 0x9a6c, 0xc661, 0xf959, 0xf9b1,
- 0x9a6d, 0x8bf2, 0xadba, 0xd850, 0xef55, 0xadbb, 0x966a, 0xe4d2,
- 0xe4d1, 0xec60, 0xef57, 0xef56, 0xfcea, 0xc34c, 0xf3b2, 0xf3b3,
- 0xc4c9, 0x966c, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be, 0xe0e4, 0xe0e6,
- 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0x91c4, 0xe4d4, 0xe4d6,
- 0xe4d5, 0x9677, 0xe4d8, 0xbbe9, 0xe4d7, 0xe4d3, 0x99f4, 0x9a6f,
- 0xe4d9, 0xe8cc, 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, 0xbe6e,
- 0xbe71, 0xbe73, 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, 0xe8ce,
- 0xbe74, 0x9fab, 0xbe70, 0xe8c6, 0xbe6d, 0xbe6f, 0x8cbe, 0x8ec1,
- 0xc063, 0xec66, 0xec64, 0xec63, 0x9555, 0xec69, 0xec68, 0xec67,
- 0xec62, 0xc062, 0xec61, 0xec65, 0xc064, 0xef5a, 0x9152, 0xef5e,
- 0xef5b, 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60, 0xef61,
- 0xc240, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8, 0xf1b7,
- 0xf1b1, 0xf1b5, 0xf1b0, 0x9153, 0xf1b2, 0xc34d, 0xf1af, 0x9155,
- 0xf1b4, 0xf3c0, 0xf3b5, 0xc445, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf,
- 0xf3b7, 0xf3be, 0x955d, 0xf3bb, 0x9671, 0xf3ba, 0xf3bd, 0xf3b8,
- 0xf3b6, 0x9c6d, 0xf3bc, 0xf560, 0xf55e, 0xc4ca, 0xf55d, 0xf563,
- 0xf561, 0x9673, 0xc4cb, 0xf55c, 0xf55a, 0xf55b, 0xc4cd, 0xf55f,
- 0xc4cc, 0xf562, 0xf678, 0xf67e, 0x9154, 0x9a71, 0xf679, 0xc55b,
- 0xf6a1, 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558, 0xf67a,
- 0xf77d, 0xf7a1, 0xf77e, 0xf77b, 0xc5bb, 0xf778, 0xf77c, 0xf7a3,
- 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, 0x9156, 0xf853,
- 0xc5e5, 0xc5e6, 0x966d, 0xf8d3, 0xc64a, 0xf976, 0xc66a, 0x9557,
- 0xf9b3, 0xc66b, 0xf9b4, 0xf9b5, 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd,
- 0x89c6, 0x89c7, 0xb0a9, 0xe0e9, 0xe0e8, 0xbbea, 0xbbeb, 0xe4da,
- 0x8a6a, 0xe8d2, 0xec6c, 0x8b57, 0xbe75, 0xc065, 0xec6a, 0x9fe1,
- 0xec6d, 0xc066, 0x9b5f, 0xef64, 0xec6b, 0xf1b9, 0xc34e, 0xf3c1,
- 0xf566, 0xf564, 0xf565, 0xf6a2, 0xc55c, 0xf7a4, 0xc5ea, 0xc5bc,
- 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xa05d, 0xb0aa, 0xf1ba, 0xd449,
- 0x915b, 0xb9a6, 0x915c, 0xe4db, 0xbbec, 0xe4dc, 0xe8d4, 0xe8d3,
- 0xc068, 0xbe76, 0xbe77, 0xe8d7, 0xe8d6, 0xe8d5, 0x915e, 0xec6e,
- 0xec71, 0xec70, 0xec6f, 0xc067, 0xef68, 0xef66, 0xef65, 0x9f5c,
- 0xef67, 0x9f57, 0xc34f, 0xf1bc, 0xf1bd, 0xc350, 0xf1bb, 0x9f65,
- 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0x9a72, 0xf567, 0xf569,
- 0xf568, 0x9160, 0xf6a3, 0xf6a6, 0xf6a4, 0xf6a5, 0xf7a5, 0xc5bd,
- 0xf854, 0xf855, 0xf856, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0xbe78,
- 0xc069, 0xf1be, 0x9f5e, 0xf7a6, 0x9161, 0xf9c4, 0xd44a, 0xc67b,
- 0xb0ac, 0xec72, 0x9164, 0xf1bf, 0xf3c6, 0x9f41, 0xf6a7, 0xf7a7,
- 0xb0ad, 0xe4dd, 0xe4de, 0x9169, 0xbbed, 0xbbee, 0xe8d9, 0xbe7a,
- 0xbe79, 0xe8d8, 0xef69, 0xf1c0, 0xf1c2, 0xf1c1, 0xc353, 0xc352,
- 0xc351, 0x9168, 0xc55e, 0xf6a8, 0xc55d, 0xf7a9, 0xf7a8, 0xc64c,
- 0xf8d5, 0xb3bd, 0xe0ea, 0xe4e1, 0xe4df, 0xe4e0, 0xe8e2, 0xe8dd,
- 0xe8da, 0xe8e1, 0x9a74, 0xe8e3, 0xbe7c, 0xe8e0, 0xe8dc, 0xe8db,
- 0xe8df, 0xe8de, 0xbe7b, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77,
- 0x96b2, 0xec73, 0x9a75, 0xec79, 0xfda5, 0xec74, 0xef72, 0xec75,
- 0xeca2, 0x9ee9, 0x8bba, 0x916d, 0xa060, 0xec7c, 0xc06a, 0xec7b,
- 0xec7a, 0xec7e, 0x9fde, 0xef6a, 0xef6d, 0x9fc3, 0xef6c, 0x96b5,
- 0xef74, 0xef6f, 0xef73, 0xef71, 0xef70, 0xef6e, 0xef6b, 0xc243,
- 0xc242, 0xc244, 0xc241, 0xef75, 0xa067, 0xf1c8, 0xf1cb, 0xf1c9,
- 0xf1cd, 0xf1ce, 0xf1c6, 0xc358, 0xf1c7, 0xf1c5, 0xf1cc, 0xf1c4,
- 0xf1c3, 0xc357, 0xc355, 0xc354, 0x96b3, 0xf1ca, 0xf3cf, 0xf3d5,
- 0xc44a, 0xf3d0, 0xf3d3, 0xf3d7, 0xc44b, 0xf3d2, 0x9a76, 0xf3ca,
- 0xf3c9, 0xf3d6, 0xf3cd, 0xf3cb, 0xf3d4, 0xf3cc, 0xc449, 0xc448,
- 0x95d5, 0xf3c7, 0xf3c8, 0xf3d1, 0x9eca, 0xf3ce, 0x9a77, 0x9a78,
- 0xf56c, 0xf56f, 0xc356, 0x9170, 0x916f, 0xf56d, 0xf573, 0xf571,
- 0xf56b, 0xf576, 0x9fa3, 0xf56a, 0x9171, 0xc4cf, 0xf572, 0x96b1,
- 0xf56e, 0xc4ce, 0xf575, 0x9f63, 0xf574, 0x9f67, 0xf6ab, 0xf6aa,
- 0x8bb9, 0x9a7a, 0xf6b1, 0xf6ad, 0xf6b0, 0xc560, 0x8b56, 0xf6ae,
- 0xf6af, 0xf6a9, 0xf6ac, 0xc55f, 0x9ada, 0xc5bf, 0xf7b4, 0xf7af,
- 0xf7b3, 0x96b0, 0xf7b6, 0xf7b2, 0xf7ae, 0x9a7e, 0xc5c1, 0xf7b1,
- 0xf7b5, 0xc5c0, 0xf7ac, 0xf570, 0xf7b0, 0xf7ad, 0x9dde, 0xf7aa,
- 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860, 0x96ad,
- 0xf859, 0xf857, 0x96ae, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, 0xf858,
- 0xf85e, 0x9ea1, 0xf8da, 0xc64d, 0xf8db, 0xf8d9, 0xf8d6, 0xf8d8,
- 0xf8d7, 0xf95a, 0xf95c, 0xf95b, 0xf979, 0x9e50, 0xf978, 0xf977,
- 0xf97a, 0xc673, 0xc674, 0xf9ca, 0xf9ce, 0x96af, 0x8bf4, 0xb3be,
- 0xdcaf, 0xe0ed, 0xb9a7, 0xe0eb, 0xe0ec, 0xe4e2, 0xe4e3, 0xbbf1,
- 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, 0xe8eb, 0xe8e5, 0xe8ec, 0xe8e4,
- 0xe8e6, 0xe8e7, 0xe8ea, 0x9fa4, 0xbea1, 0xe8ef, 0xe8ee, 0xbe7d,
- 0xe8e9, 0xe8ed, 0xbe7e, 0x96bd, 0xecac, 0xc06f, 0xeca7, 0xc06b,
- 0x96f4, 0xeca4, 0xecaa, 0xecad, 0xc070, 0xeca9, 0xeca6, 0xecae,
- 0xeca5, 0x96b8, 0xecab, 0xc06c, 0xeca3, 0xc06d, 0xc06e, 0xeca8,
- 0xefa9, 0xef7a, 0xef7b, 0xef7e, 0xef7c, 0xef76, 0xfaa1, 0xef79,
- 0xefa5, 0xef7d, 0x91a7, 0xc245, 0xefa7, 0xefa4, 0xc246, 0xefa6,
- 0xef77, 0xefa2, 0xefa3, 0xa05e, 0xefa1, 0x9a7d, 0xf1d2, 0xf1d4,
- 0xf1d7, 0x8948, 0xf1d1, 0x9eb1, 0xc359, 0xf1d9, 0xf1d0, 0xf1da,
- 0xf1d6, 0xf1d8, 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf, 0xc35a,
- 0x9ddb, 0xf1db, 0xc35b, 0xc44d, 0xef78, 0xf3f1, 0xf3e8, 0xc44f,
- 0xf3e4, 0xc450, 0x95bf, 0x8a73, 0xf3ed, 0xf3e7, 0xf3dd, 0xc44e,
- 0xf3ea, 0xf3e5, 0xf3e6, 0xf3d8, 0xf3df, 0xf3ee, 0xf3eb, 0x9efe,
- 0xf3e3, 0x917a, 0xf3ef, 0xf3de, 0xf3d9, 0xf3ec, 0x917b, 0xf3db,
- 0xf3e9, 0xf3e0, 0xf3f0, 0xf3dc, 0xc44c, 0xf3da, 0xf3e1, 0xf3e2,
- 0xf57d, 0xf57b, 0x9aa3, 0xf5a2, 0xf5ae, 0xf5a5, 0xf57c, 0xf578,
- 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577, 0xf5a1, 0xf5a6,
- 0xf5a8, 0xf5ab, 0xf579, 0x96c2, 0xf5af, 0xf5b0, 0xf5a9, 0xf5ad,
- 0xf5a4, 0x9f77, 0xf6c1, 0xf6c4, 0xc561, 0xf6c3, 0xf6c8, 0xf6c6,
- 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, 0xc564, 0xf6bf, 0xf6c0, 0xf6bc,
- 0xf6b4, 0x9aa4, 0xf6b9, 0xf5ac, 0x9aa5, 0xf6b5, 0xc563, 0xf6bb,
- 0x91a1, 0xf6ba, 0xf6b6, 0xf6c2, 0x89b8, 0xf6b7, 0xf7bb, 0xf6c5,
- 0xf6c7, 0xf6be, 0xf6b8, 0xf7bc, 0xf7be, 0xf7b8, 0xc5c2, 0x9173,
- 0xf7c5, 0xf7c3, 0xc5c3, 0xf7c2, 0xf7c1, 0xf7ba, 0xf7b7, 0xf7bd,
- 0xf7c6, 0xf7b9, 0xf7bf, 0xf869, 0xf86e, 0xf864, 0xf867, 0xc5ee,
- 0xf86b, 0xf872, 0xf7c0, 0xf865, 0xf86f, 0xf873, 0xf86a, 0xf863,
- 0xf86d, 0xf86c, 0xf871, 0xf870, 0xf7c4, 0xf868, 0xf862, 0xf866,
- 0xc64e, 0xc64f, 0xf861, 0x9aa6, 0xf8e6, 0xf8dd, 0xf8e5, 0xf8e2,
- 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0, 0xf8de, 0xf8e4,
- 0x89bd, 0xf95d, 0x89b9, 0xf95e, 0x917d, 0xf960, 0xf95f, 0xf962,
- 0xf961, 0xf97c, 0xf97b, 0xf9b7, 0xf9b8, 0x96bb, 0xf9c5, 0xc678,
- 0xc67c, 0x9ff2, 0xf9cf, 0xc67d, 0x8bf5, 0xb3bf, 0xc4d0, 0xf6c9,
- 0x9aa9, 0xc650, 0xc651, 0xb3c0, 0xe0ee, 0x9f54, 0xb9a8, 0xe8f0,
- 0x9fe3, 0x9eed, 0xecb0, 0xecb1, 0xecaf, 0xefab, 0xefaa, 0xc247,
- 0xf1df, 0xefac, 0xf1de, 0x91aa, 0xf3f3, 0xc451, 0xc453, 0xf3f2,
- 0x91ab, 0xa070, 0xc452, 0x9f6d, 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca,
- 0xc565, 0x91ac, 0xc5ef, 0xf8e8, 0xf963, 0x91ad, 0xf9d2, 0xb3c1,
- 0xa0fd, 0xe4e5, 0x9fe2, 0xbea2, 0x91af, 0x9e41, 0x9aaa, 0xecb3,
- 0xecb2, 0x91b0, 0xefad, 0x9aab, 0xc454, 0xc4d1, 0xf7c7, 0xf9cb,
- 0xb3c2, 0xbbf2, 0x9aac, 0xbea3, 0x9a4a, 0xf3f4, 0x91b2, 0xf874,
- 0xb6c0, 0x8bf6, 0x9aad, 0x89b6, 0xefae, 0xc664, 0xb6c1, 0xbea4,
- 0xc248, 0xf875, 0xb6c2, 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0xc071,
- 0xefaf, 0xc24c, 0xc24a, 0xc24b, 0xc249, 0xf1e0, 0xc35c, 0x9aaf,
- 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6, 0xc4d2, 0xf6cb, 0xf6cd, 0xf6cc,
- 0xc566, 0xf7c8, 0x9ab0, 0xf876, 0xf877, 0xc5f0, 0xf964, 0xf97d,
- 0xc675, 0x9ab1, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5, 0xe0ef, 0x9aa1,
- 0xefb1, 0xf1e2, 0xf1e1, 0x91b9, 0xf878, 0xc652, 0x91ba, 0xf965,
- 0xf97e, 0xb9a9, 0xe8f2, 0xe8f3, 0xecb7, 0xb9aa, 0xc35d, 0xf1e3,
- 0x91be, 0xf6cf, 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0xf8e9, 0xb9ab,
- 0xefb4, 0xefb3, 0xefb2, 0xf1e4, 0xa041, 0x8bb7, 0xf1e8, 0xf1e7,
- 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6, 0xf5b9, 0xc4d3, 0xf5b8, 0xf6d1,
- 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9, 0xf87c, 0xf87b, 0xf87a, 0x91c0,
- 0xbbf3, 0xecb8, 0xc24d, 0xf3f7, 0xf3f8, 0xf7cc, 0xf87d, 0x9ab3,
- 0x91c3, 0xf8ea, 0xf966, 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e, 0xf1e9,
- 0xf3f9, 0xf6d2, 0xf87e, 0xa0fc, 0xbea6, 0x9fee, 0xefb5, 0xf1ea,
- 0xf3fa, 0xf3fb, 0xf3fc, 0xf5be, 0x9f69, 0xf5ba, 0xc568, 0xf5bd,
- 0xf5bc, 0xc4d4, 0xf5bb, 0xc4d6, 0x91c8, 0xc4d5, 0xf6d4, 0xf6d3,
- 0xc569, 0xc56a, 0x91c9, 0xc5c6, 0xf7cd, 0xc5c5, 0xf8a3, 0xf8a4,
- 0xf8a2, 0xf8a1, 0xc654, 0xf8eb, 0xf8ec, 0xf8ed, 0xc653, 0xf967,
- 0xf96a, 0xf969, 0xf968, 0xf9d3, 0x8de6, 0xc073, 0x91cb, 0xc365,
- 0xf5bf, 0xf6d5, 0xc5c7, 0xf7ce, 0xf9d5, 0x89c8, 0xc074, 0x8daa,
- 0xefb6, 0xf7cf, 0xf9a1, 0x9fdd, 0xfa40, 0xfa41, 0xfa42, 0xfa43,
- 0xfa44, 0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49, 0xfa4a, 0xfa4b,
- 0xfa4c, 0xfa4d, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa52, 0xfa53,
- 0xfa54, 0xfa55, 0xfa56, 0xfa57, 0xfa58, 0xfa59, 0xfa5a, 0xfa5b,
- 0xfa5c, 0xfa5d, 0xfa5e, 0xadc5, 0xfa60, 0xfa61, 0xfa62, 0xfa63,
- 0xfa64, 0xfa65, 0xb0b0, 0xfa67, 0xfa68, 0xfa69, 0xfa6a, 0xfa6b,
- 0xfa6c, 0xfa6d, 0xfa6e, 0xfa6f, 0xfa70, 0xfa71, 0xfa72, 0xfa73,
- 0xfa74, 0xfa75, 0xfa76, 0xfa77, 0xfa78, 0xfa79, 0xfa7a, 0xfa7b,
- 0xfa7c, 0xfa7d, 0xfa7e, 0xfaa1, 0xfaa2, 0xfaa3, 0xfaa4, 0xfaa5,
- 0xfaa6, 0xfaa7, 0xfaa8, 0xfaa9, 0xfaaa, 0xfaab, 0xfaac, 0xfaad,
- 0xfaae, 0xfaaf, 0xfab0, 0xfab1, 0xfab2, 0xfab3, 0xfab4, 0xfab5,
- 0xfab6, 0xfab7, 0xfab8, 0xfab9, 0xfaba, 0xfabb, 0xfabc, 0xa55d,
- 0xfabe, 0xfabf, 0xfac0, 0xfac1, 0xfac2, 0xfac3, 0xfac4, 0xa2cd,
- 0xfac6, 0xfac7, 0xfac8, 0xfac9, 0xfaca, 0xfacb, 0xfacc, 0xfacd,
- 0xface, 0xfacf, 0xfad0, 0xfad1, 0xfad2, 0xfad3, 0xfad4, 0xadeb,
- 0xfad6, 0xfad7, 0xfad8, 0xfad9, 0xfada, 0xfadb, 0xfadc, 0xfadd,
- 0xfade, 0xfadf, 0xfae0, 0xfae1, 0xfae2, 0xfae3, 0xfae4, 0xfae5,
- 0xfae6, 0xfae7, 0xfae8, 0xfae9, 0xfaea, 0xfaeb, 0xfaec, 0xfaed,
- 0xfaee, 0xfaef, 0xfaf0, 0xfaf1, 0xfaf2, 0xfaf3, 0xfaf4, 0xfaf5,
- 0xfaf6, 0xfaf7, 0xfaf8, 0xfaf9, 0xfafa, 0xfafb, 0xfafc, 0xfafd,
- 0xfafe, 0xfb40, 0xfb41, 0xfb42, 0xfb43, 0xfb44, 0xfb45, 0xfb46,
- 0xfb47, 0x9def, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e,
- 0xfb4f, 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56,
- 0xfb57, 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d, 0xfb5e,
- 0xfb5f, 0xfb60, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66,
- 0xfb67, 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e,
- 0xfb6f, 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76,
- 0xfb77, 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xfb7e,
- 0xfba1, 0xfba2, 0xfba3, 0xfba4, 0xfba5, 0xfba6, 0xfba7, 0xfba8,
- 0xfba9, 0xfbaa, 0xfbab, 0xfbac, 0xfbad, 0xfbae, 0xfbaf, 0xfbb0,
- 0xfbb1, 0xfbb2, 0xfbb3, 0xfbb4, 0xfbb5, 0xfbb6, 0xfbb7, 0xb440,
- 0xfbb9, 0xfbba, 0xfbbb, 0xfbbc, 0xfbbd, 0xfbbe, 0xfbbf, 0xfbc0,
- 0xfbc1, 0xfbc2, 0xfbc3, 0xfbc4, 0xfbc5, 0xfbc6, 0xfbc7, 0xfbc8,
- 0xfbc9, 0xfbca, 0xfbcb, 0xfbcc, 0xfbcd, 0xfbce, 0xfbcf, 0xfbd0,
- 0xfbd1, 0xfbd2, 0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6, 0xfbd7, 0xfbd8,
- 0xfbd9, 0xfbda, 0xfbdb, 0xfbdc, 0xfbdd, 0xfbde, 0xfbdf, 0xfbe0,
- 0xfbe1, 0xfbe2, 0xfbe3, 0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7, 0xfbe8,
- 0xfbe9, 0xfbea, 0xfbeb, 0xfbec, 0xfbed, 0xfbee, 0xfbef, 0xfbf0,
- 0xfbf1, 0xfbf2, 0xc9db, 0xfbf4, 0xfbf5, 0xfbf6, 0xfbf7, 0xfbf8,
- 0x9dfb, 0xfbfa, 0xfbfb, 0xfbfc, 0xfbfd, 0xfbfe, 0xfc40, 0xfc41,
- 0xfc42, 0xfc43, 0xfc44, 0xfc45, 0xfc46, 0xfc47, 0xfc48, 0xfc49,
- 0xfc4a, 0xfc4b, 0xfc4c, 0xfc4d, 0xfc4e, 0xd8f4, 0xfc50, 0xfc51,
- 0xfc52, 0xfc53, 0xfc54, 0xfc55, 0xfc56, 0xfc57, 0xfc58, 0xfc59,
- 0xfc5a, 0xfc5b, 0xfc5c, 0xfc5d, 0xfc5e, 0xfc5f, 0xfc60, 0xfc61,
- 0xfc62, 0xfc63, 0xfc64, 0xfc65, 0xfc66, 0xfc67, 0xfc68, 0xfc69,
- 0xfc6a, 0xfc6b, 0xa0dc, 0xfc6d, 0xfc6e, 0xfc6f, 0xfc70, 0xfc71,
- 0xfc72, 0xfc73, 0xfc74, 0xfc75, 0xfc76, 0xfc77, 0xfc78, 0xfc79,
- 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfca1, 0xfca2, 0xfca3,
- 0xfca4, 0xfca5, 0xfca6, 0xfca7, 0xfca8, 0xfca9, 0xfcaa, 0xfcab,
- 0xfcac, 0xfcad, 0xfcae, 0xfcaf, 0xfcb0, 0xfcb1, 0xfcb2, 0xfcb3,
- 0xfcb4, 0xfcb5, 0xfcb6, 0xfcb7, 0xfcb8, 0xbcb5, 0xfcba, 0xfcbb,
- 0xfcbc, 0xfcbd, 0xfcbe, 0xfcbf, 0xfcc0, 0xfcc1, 0xfcc2, 0xfcc3,
- 0xfcc4, 0xfcc5, 0xfcc6, 0xfcc7, 0xfcc8, 0xfcc9, 0xfcca, 0xfccb,
- 0xfccc, 0xfccd, 0xfcce, 0xfccf, 0xfcd0, 0xfcd1, 0xfcd2, 0xfcd3,
- 0xfcd4, 0xfcd5, 0xfcd6, 0xfcd7, 0xfcd8, 0xfcd9, 0xfcda, 0xfcdb,
- 0xfcdc, 0xfcdd, 0xfcde, 0xfcdf, 0xfce0, 0xfce1, 0xb4b8, 0xfce3,
- 0xfce4, 0xfce5, 0xfce6, 0xfce7, 0xfce8, 0xfce9, 0xfcea, 0xfceb,
- 0xfcec, 0xfced, 0xfcee, 0xfcef, 0xfcf0, 0xa7fb, 0xfcf2, 0xfcf3,
- 0xfcf4, 0xfcf5, 0xfcf6, 0xfcf7, 0xfcf8, 0xfcf9, 0xfcfa, 0xfcfb,
- 0xfcfc, 0xfcfd, 0xfcfe, 0xfd40, 0xfd41, 0xfd42, 0xfd43, 0xfd44,
- 0xfd45, 0xfd46, 0xfd47, 0xfd48, 0xfd49, 0xfd4a, 0xfd4b, 0xfd4c,
- 0xfd4d, 0xfd4e, 0xfd4f, 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54,
- 0xfd55, 0xfd56, 0xfd57, 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c,
- 0xfd5d, 0xfd5e, 0xfd5f, 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64,
- 0xfd65, 0xfd66, 0xfd67, 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c,
- 0xfd6d, 0xfd6e, 0xfd6f, 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74,
- 0xfd75, 0xfd76, 0xfd77, 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c,
- 0xfd7d, 0xfd7e, 0xfda1, 0xfda2, 0xfda3, 0xfda4, 0xfda5, 0xfda6,
- 0xfda7, 0xfda8, 0xfda9, 0xfdaa, 0xfdab, 0xfdac, 0xfdad, 0xfdae,
- 0xfdaf, 0xfdb0, 0xfdb1, 0xfdb2, 0xfdb3, 0xfdb4, 0xfdb5, 0xfdb6,
- 0xcb58, 0xb4fc, 0xfdb9, 0xfdba, 0xb4e4, 0xfdbc, 0xfdbd, 0xfdbe,
- 0xfdbf, 0xfdc0, 0xfdc1, 0xfdc2, 0xfdc3, 0xfdc4, 0xfdc5, 0xfdc6,
- 0xfdc7, 0xfdc8, 0xfdc9, 0xfdca, 0xfdcb, 0xfdcc, 0xfdcd, 0xfdce,
- 0xfdcf, 0xfdd0, 0xfdd1, 0xfdd2, 0xfdd3, 0xfdd4, 0xfdd5, 0xfdd6,
- 0xfdd7, 0xfdd8, 0xfdd9, 0xfdda, 0xfddb, 0xfddc, 0xfddd, 0xfdde,
- 0xfddf, 0xfde0, 0xfde1, 0xfde2, 0xfde3, 0xfde4, 0xfde5, 0xfde6,
- 0xfde7, 0xfde8, 0xfde9, 0xfdea, 0xfdeb, 0xfdec, 0xfded, 0xfdee,
- 0xfdef, 0xfdf0, 0xb54e, 0xfdf2, 0xfdf3, 0xfdf4, 0xfdf5, 0xfdf6,
- 0xfdf7, 0xfdf8, 0xfdf9, 0xfdfa, 0xfdfb, 0xfdfc, 0xfdfd, 0xfdfe,
- 0xfe40, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xfe45, 0xfe46, 0xfe47,
- 0xfe48, 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f,
- 0xfe50, 0xfe51, 0x9975, 0xfe53, 0xfe54, 0xfe55, 0xfe56, 0xfe57,
- 0xfe58, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f,
- 0xfe60, 0xfe61, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xfe67,
- 0xfe68, 0xfe69, 0xfe6a, 0xfe6b, 0xfe6c, 0xfe6d, 0xfe6e, 0xb7ec,
- 0xfe70, 0xfe71, 0xfe72, 0xfe73, 0xfe74, 0xfe75, 0xfe76, 0xfe77,
- 0xfe78, 0xfe79, 0xfe7a, 0xfe7b, 0xfe7c, 0xfe7d, 0xfe7e, 0xfea1,
- 0xfea2, 0xfea3, 0xfea4, 0xfea5, 0xfea6, 0xfea7, 0xfea8, 0xfea9,
- 0xa260, 0xfeab, 0xfeac, 0xfead, 0xfeae, 0xfeaf, 0xfeb0, 0xfeb1,
- 0xfeb2, 0xfeb3, 0xfeb4, 0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8, 0xfeb9,
- 0xfeba, 0xfebb, 0xfebc, 0xfebd, 0xfebe, 0xfebf, 0xfec0, 0xfec1,
- 0xfec2, 0xfec3, 0xfec4, 0xfec5, 0xfec6, 0xfec7, 0xfec8, 0xfec9,
- 0xfeca, 0xfecb, 0xfecc, 0xfecd, 0xfece, 0xfecf, 0xfed0, 0xfed1,
- 0xfed2, 0xfed3, 0xfed4, 0xfed5, 0xfed6, 0xfed7, 0xfed8, 0xfed9,
- 0xfeda, 0xfedb, 0xfedc, 0xcff1, 0xfede, 0xfedf, 0xfee0, 0xfee1,
- 0xfee2, 0xfee3, 0xfee4, 0xfee5, 0xfee6, 0xfee7, 0xfee8, 0xfee9,
- 0xfeea, 0xfeeb, 0xfeec, 0xfeed, 0xfeee, 0xfeef, 0xfef0, 0xfef1,
- 0xfef2, 0xfef3, 0xfef4, 0xfef5, 0xfef6, 0xfef7, 0xfef8, 0xfef9,
- 0xfefa, 0xfefb, 0xfefc, 0xfefd, 0xfefe, 0x8e40, 0x8e41, 0x8e42,
- 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, 0x8e48, 0x8e49, 0x8e4a,
- 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50, 0x8e51, 0x8e52,
- 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e59, 0x8e5a,
- 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62,
- 0x8e63, 0x8e64, 0x8e65, 0x8e66, 0x8e67, 0x8e68, 0xbae6, 0x8e6a,
- 0x8e6b, 0x8e6c, 0x8e6d, 0x8e6e, 0xedca, 0x8e70, 0x8e71, 0x8e72,
- 0x8e73, 0x8e74, 0x8e75, 0x8e76, 0x8e77, 0x8e78, 0x8e79, 0x8e7a,
- 0x8e7b, 0x8e7c, 0x8e7d, 0xa261, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4,
- 0x8ea5, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0xbafc, 0x8eac,
- 0x8ead, 0x8eae, 0x8eaf, 0x8eb0, 0x8eb1, 0x8eb2, 0x8eb3, 0xbfa6,
- 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc,
- 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4,
- 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc,
- 0xaacc, 0x8ece, 0x8ecf, 0xbfae, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4,
- 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc,
- 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4,
- 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec,
- 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4,
- 0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc,
- 0x8efd, 0x8efe, 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8f45,
- 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d,
- 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55,
- 0x8f56, 0xb5d7, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d,
- 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0x8f65,
- 0x8f66, 0x8f67, 0x8f68, 0xe3c8, 0x8f6a, 0x8f6b, 0x8f6c, 0x8f6d,
- 0xdb79, 0x8f6f, 0x8f70, 0x8f71, 0x8f72, 0x8f73, 0x8f74, 0x8f75,
- 0x8f76, 0x8f77, 0x8f78, 0x8f79, 0x8f7a, 0x8f7b, 0x8f7c, 0x8f7d,
- 0x8f7e, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7,
- 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac, 0x8fad, 0x8fae, 0x8faf,
- 0x8fb0, 0x8fb1, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb6, 0x8fb7,
- 0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd, 0x8fbe, 0x8fbf,
- 0x8fc0, 0x8fc1, 0x8fc2, 0x8fc3, 0x8fc4, 0x8fc5, 0x8fc6, 0x8fc7,
- 0x8fc8, 0x8fc9, 0x8fca, 0xbfcc, 0xa0d4, 0x8fcd, 0x8fce, 0x8fcf,
- 0x8fd0, 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0x8fd6, 0x8fd7,
- 0x8fd8, 0x8fd9, 0x8fda, 0x8fdb, 0x8fdc, 0x8fdd, 0x8fde, 0x8fdf,
- 0x8fe0, 0x8fe1, 0x8fe2, 0x8fe3, 0x8fe4, 0x8fe5, 0x8fe6, 0x8fe7,
- 0x8fe8, 0x8fe9, 0x8fea, 0x8feb, 0x8fec, 0x8fed, 0x8fee, 0x8fef,
- 0x8ff0, 0x8ff1, 0x8ff2, 0x8ff3, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ff7,
- 0x8ff8, 0x8ff9, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffd, 0xb05f, 0x9040,
- 0x9041, 0x9042, 0x9043, 0x9044, 0x9045, 0x9046, 0x9047, 0x9048,
- 0x9049, 0x904a, 0x904b, 0x904c, 0x904d, 0x904e, 0x904f, 0x9050,
- 0x9051, 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0x9057, 0x9058,
- 0x9059, 0x905a, 0x905b, 0x905c, 0x905d, 0x905e, 0x905f, 0x9060,
- 0x9061, 0x9062, 0x9063, 0x9064, 0x9065, 0x9066, 0x9067, 0x9068,
- 0x9069, 0x906a, 0x906b, 0x906c, 0xb3a3, 0x906e, 0x906f, 0x9070,
- 0x9071, 0x9072, 0x9073, 0x9074, 0x9075, 0x9076, 0x9077, 0x9078,
- 0x9079, 0xf9d7, 0x907b, 0x907c, 0x907d, 0x907e, 0x90a1, 0x90a2,
- 0x90a3, 0x90a4, 0x90a5, 0x90a6, 0x90a7, 0x90a8, 0x90a9, 0x90aa,
- 0x90ab, 0x90ac, 0x90ad, 0x90ae, 0x90af, 0x90b0, 0x90b1, 0x90b2,
- 0x90b3, 0x90b4, 0x90b5, 0x90b6, 0x90b7, 0x90b8, 0x90b9, 0x90ba,
- 0x90bb, 0x90bc, 0x90bd, 0x90be, 0x90bf, 0x90c0, 0x90c1, 0x90c2,
- 0x90c3, 0x90c4, 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, 0x90ca,
- 0x90cb, 0x90cc, 0x90cd, 0x90ce, 0x90cf, 0x90d0, 0x90d1, 0x90d2,
- 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0x90d7, 0x90d8, 0x90d9, 0x90da,
- 0x90db, 0xc052, 0x90dd, 0x90de, 0x90df, 0x90e0, 0x90e1, 0x90e2,
- 0x90e3, 0x90e4, 0x90e5, 0x90e6, 0x90e7, 0x90e8, 0x90e9, 0x90ea,
- 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0, 0xc554, 0x90f2,
- 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0x90f8, 0x90f9, 0x90fa,
- 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x9140, 0x9141, 0x9142, 0x9143,
- 0x9144, 0x9145, 0x9146, 0x9147, 0x9148, 0x9149, 0x914a, 0x914b,
- 0x914c, 0x914d, 0x914e, 0x914f, 0x9150, 0x9151, 0x9152, 0x9153,
- 0x9154, 0x9155, 0x9156, 0x9157, 0x9158, 0x9159, 0x915a, 0x915b,
- 0x915c, 0x915d, 0x915e, 0x915f, 0x9160, 0x9161, 0x9162, 0x9163,
- 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916a, 0x916b,
- 0x916c, 0x916d, 0x916e, 0x916f, 0x9170, 0x9171, 0x9172, 0x9173,
- 0x9174, 0x9175, 0x9176, 0x9177, 0x9178, 0x9179, 0x917a, 0x917b,
- 0x917c, 0x917d, 0x917e, 0x91a1, 0x91a2, 0x91a3, 0x91a4, 0x91a5,
- 0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91aa, 0x91ab, 0x91ac, 0x91ad,
- 0x91ae, 0x91af, 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b4, 0x91b5,
- 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91ba, 0x91bb, 0x91bc, 0x91bd,
- 0x91be, 0xf1e3, 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4, 0x91c5,
- 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc, 0x91cd,
- 0x91ce, 0x91cf, 0x91d0, 0x91d1, 0x91d2, 0x91d3, 0x91d4, 0x91d5,
- 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd,
- 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5,
- 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed,
- 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5,
- 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd,
- 0x91fe, 0x9240, 0x9241, 0x9242, 0x9243, 0x9242, 0x9245, 0x9246,
- 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d, 0x924e,
- 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256,
- 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, 0x925e,
- 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266,
- 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e,
- 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9274, 0x9275, 0x9276,
- 0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e,
- 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, 0x92a8,
- 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92ae, 0xa259, 0xa25a,
- 0xa25c, 0xa25b, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8,
- 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0,
- 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0xa05f,
- 0x92c9, 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0,
- 0xe6ab, 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8,
- 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0,
- 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8,
- 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0,
- 0x92f1, 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8,
- 0x92f9, 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x9340, 0x9341,
- 0x9342, 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349,
- 0x934a, 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351,
- 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359,
- 0x935a, 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361,
- 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369,
- 0x936a, 0x936b, 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371,
- 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379,
- 0x937a, 0x937b, 0x937c, 0x937d, 0x937e, 0x93a1, 0x93a2, 0x93a3,
- 0x93a4, 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab,
- 0x93ac, 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3,
- 0x93b4, 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb,
- 0x93bc, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3,
- 0x93c4, 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93ca, 0x93cb,
- 0x93cc, 0x93cd, 0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3,
- 0x93d4, 0x93d5, 0x93d6, 0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db,
- 0x93dc, 0x93dd, 0x93de, 0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3,
- 0x93e4, 0x93e5, 0x93e6, 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb,
- 0x93ec, 0x93ed, 0x93ee, 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3,
- 0x93f4, 0x93f5, 0x93f6, 0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb,
- 0x93fc, 0x93fd, 0x93fe, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444,
- 0x9445, 0x9446, 0xd256, 0x9448, 0x9449, 0x944a, 0x944b, 0x944c,
- 0x944d, 0x944e, 0x944f, 0x9450, 0x9451, 0x9452, 0x9453, 0x9454,
- 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945a, 0x945b, 0x945c,
- 0x945d, 0x945e, 0x945f, 0x9460, 0x9461, 0x9462, 0x9463, 0x9464,
- 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946a, 0x946b, 0x946c,
- 0x946d, 0x946e, 0x946f, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474,
- 0x9475, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c,
- 0x947d, 0x947e, 0x94a1, 0x94a2, 0x94a3, 0x94a4, 0x94a5, 0x94a6,
- 0x94a7, 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac, 0x94ad, 0x94ae,
- 0x94af, 0x94b0, 0x94b1, 0x94b2, 0x94b3, 0x94b4, 0x94b5, 0x94b6,
- 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd, 0x94be,
- 0x94bf, 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6,
- 0x94c7, 0x94c8, 0x94c9, 0xe6d0, 0x94cb, 0x94cc, 0x94cd, 0x94ce,
- 0x94cf, 0x94d0, 0x94d1, 0x94d2, 0x94d3, 0x94d4, 0x94d5, 0x94d6,
- 0x94d7, 0x94d8, 0x94d9, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de,
- 0x94df, 0x94e0, 0x94e1, 0x94e2, 0x94e3, 0x94e4, 0x94e5, 0x94e6,
- 0x94e7, 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec, 0x94ed, 0x94ee,
- 0x94ef, 0x94f0, 0x94f1, 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6,
- 0x94f7, 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc, 0x94fd, 0x94fe,
- 0x9540, 0x9541, 0x9542, 0x9543, 0x9544, 0x9545, 0x9546, 0x9547,
- 0x9548, 0x9549, 0x954a, 0x954b, 0x954c, 0x954d, 0x954e, 0x954f,
- 0x9550, 0x9551, 0x9552, 0x9553, 0x9554, 0x9555, 0x9556, 0x9557,
- 0x9558, 0x9559, 0x955a, 0x955b, 0x955c, 0x955d, 0x955e, 0x955f,
- 0x9560, 0x9561, 0x9562, 0x9563, 0x9564, 0x9565, 0x9566, 0x9567,
- 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, 0x956d, 0x956e, 0x956f,
- 0x9570, 0x9571, 0x9572, 0x9573, 0x9574, 0x9575, 0x9576, 0x9577,
- 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, 0x957e, 0x95a1,
- 0x95a2, 0x95a3, 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9,
- 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1,
- 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9,
- 0x95ba, 0x95bb, 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1,
- 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9,
- 0x95ca, 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1,
- 0x95d2, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0xca52,
- 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1,
- 0x95e2, 0x95e3, 0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95e8, 0x95e9,
- 0x95ea, 0x95eb, 0x95ec, 0x95ed, 0x95ee, 0x95ef, 0x95f0, 0x95f1,
- 0x95f2, 0x95f3, 0x95f4, 0x95f5, 0x95f6, 0x95f7, 0x95f8, 0x95f9,
- 0x95fa, 0x95fb, 0x95fc, 0x95fd, 0x95fe, 0x9640, 0x9641, 0x9642,
- 0x9643, 0x9ce4, 0x9645, 0x9646, 0x9647, 0x9648, 0x9649, 0x964a,
- 0x964b, 0x964c, 0x964d, 0x964e, 0x964f, 0x9650, 0x9651, 0x9652,
- 0x9653, 0x9654, 0x9655, 0x9656, 0x9657, 0x9658, 0x9659, 0x965a,
- 0x965b, 0x965c, 0x965d, 0x965e, 0x965f, 0x9660, 0x9661, 0x9662,
- 0x9663, 0x9664, 0x9665, 0x9666, 0x9667, 0x9668, 0x9669, 0x966a,
- 0x966b, 0x966c, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9672,
- 0x9673, 0x9674, 0x9675, 0x9676, 0x9677, 0x9678, 0x9679, 0x967a,
- 0x967b, 0x967c, 0x967d, 0x967e, 0x96a1, 0x96a2, 0x96a3, 0x96a4,
- 0x96a5, 0x96a6, 0x96a7, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac,
- 0x96ad, 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4,
- 0x96b5, 0x96b6, 0x96b7, 0x96b8, 0x96b9, 0x96ba, 0x96bb, 0x96bc,
- 0x96bd, 0x96be, 0x96bf, 0x96c0, 0x96c1, 0x96c2, 0x96c3, 0x96c4,
- 0x96c5, 0x96c6, 0x96c7, 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc,
- 0x96cd, 0x96ce, 0x96cf, 0x96d0, 0x96d1, 0x96d2, 0x96d3, 0x96d4,
- 0x96d5, 0x96d6, 0x96d7, 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc,
- 0x96dd, 0x96de, 0x96df, 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4,
- 0x96e5, 0x96e6, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, 0x96ec,
- 0x96ee, 0x96ee, 0x96ef, 0x96f0, 0x96f1, 0x96f2, 0x96f3, 0x96f4,
- 0x96f5, 0x96f6, 0x96f7, 0x96f8, 0x96f9, 0x96fa, 0x96fb, 0xe959,
- 0x96fd, 0x96fe, 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745,
- 0x9746, 0x9747, 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d,
- 0x974e, 0x974f, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755,
- 0x9756, 0x9757, 0x9758, 0x9759, 0x975a, 0x975b, 0x975c, 0x975d,
- 0x975e, 0x975f, 0x9760, 0x9761, 0x9762, 0x9763, 0x9764, 0x9765,
- 0x9766, 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d,
- 0x976e, 0x976f, 0x9770, 0x9771, 0x9772, 0x9773, 0x9774, 0x9775,
- 0x9776, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977c, 0x977d,
- 0x977e, 0x97a1, 0x97a2, 0x97a3, 0x97a4, 0x97a5, 0x97a6, 0x97a7,
- 0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac, 0x97ad, 0x97ae, 0x97af,
- 0x97b0, 0x97b1, 0x97b2, 0x97b3, 0x97b4, 0x97b5, 0x97b6, 0x97b7,
- 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, 0x97be, 0x97bf,
- 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, 0x97c6, 0x97c7,
- 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0x97cd, 0x97ce, 0x97cf,
- 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7,
- 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc, 0x97dd, 0x97de, 0x97df,
- 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4, 0x97e5, 0x97e6, 0x97e7,
- 0x97e8, 0x97e9, 0x97ea, 0x97eb, 0x97ec, 0x97ed, 0x97ee, 0x97ef,
- 0x97f0, 0x97f1, 0x97f2, 0x97f3, 0x97f4, 0x97f5, 0x97f6, 0x97f7,
- 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe, 0x9840,
- 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, 0x9848,
- 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850,
- 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, 0x9858,
- 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e, 0x985f, 0x9860,
- 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868,
- 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0x9870,
- 0x9871, 0x9872, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877, 0x9878,
- 0x9879, 0x987a, 0x987b, 0x987c, 0x987d, 0x987e, 0x98a1, 0x98a2,
- 0x98a3, 0x98a4, 0x98a5, 0x98a6, 0x98a7, 0x98a8, 0x98a9, 0x98aa,
- 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2,
- 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba,
- 0x98bb, 0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2,
- 0x98c3, 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca,
- 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0x98d1, 0x98d2,
- 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7, 0x98d8, 0x98d9, 0x98da,
- 0x98db, 0x98dc, 0x98dd, 0x98de, 0x98df, 0x98e0, 0x98e1, 0x98e2,
- 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0x98e8, 0x98e9, 0x98ea,
- 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, 0x98f0, 0x98f1, 0x98f2,
- 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, 0x98f8, 0x98f9, 0x98fa,
- 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x9940, 0x9941, 0x9942, 0x9943,
- 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a, 0x994b,
- 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9952, 0x9953,
- 0x9954, 0x9955, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b,
- 0x995c, 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9963,
- 0x9964, 0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
- 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, 0x9971, 0x9972, 0x9973,
- 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, 0x9979, 0x997a, 0x997b,
- 0x997c, 0x997d, 0x997e, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5,
- 0x99a6, 0x99a7, 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad,
- 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5,
- 0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd,
- 0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5,
- 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd,
- 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5,
- 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd,
- 0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5,
- 0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed,
- 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5,
- 0x99f6, 0x99f7, 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd,
- 0x99fe, 0x9a40, 0x9a41, 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46,
- 0x9a47, 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e,
- 0x9a4f, 0x9a50, 0x9a51, 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56,
- 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e,
- 0x9a5f, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66,
- 0x9a67, 0x9a68, 0x9a69, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e,
- 0x9a6f, 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76,
- 0x9a77, 0x9a78, 0x9a79, 0x9a7a, 0x9a7b, 0x9a7c, 0x9a7d, 0x9a7e,
- 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0x9aa7, 0x9aa8,
- 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, 0x9ab0,
- 0x9ab1, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8,
- 0x9ab9, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf, 0x9ac0,
- 0x9ac1, 0x9ac2, 0x9ac3, 0x9ac4, 0x9ac5, 0x9ac6, 0x9ac7, 0x9ac8,
- 0x9ac9, 0x9aca, 0x9acb, 0x9acc, 0x9acd, 0x9ace, 0x9acf, 0x9ad0,
- 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad8,
- 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add, 0x9ade, 0x9adf, 0x9ae0,
- 0x9ae1, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae6, 0x9ae7, 0x9ae8,
- 0x9ae9, 0x9aea, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0x9aef, 0x9af0,
- 0x9af1, 0x9af2, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8,
- 0x9af9, 0x9afa, 0x9afb, 0x9afc, 0x9afd, 0x9afe, 0x9b40, 0x9b41,
- 0x9b42, 0x9b43, 0x9b44, 0x9b45, 0x9b46, 0x9b47, 0x9b48, 0x9b49,
- 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4d, 0x9b4e, 0x9b4f, 0x9b50, 0x9b51,
- 0x9b52, 0x9b53, 0x9b54, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59,
- 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61,
- 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69,
- 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71,
- 0x9b72, 0x9b73, 0x9b74, 0x9b75, 0xeff9, 0x9b77, 0xc5f7, 0x9b79,
- 0x9b7a, 0xf5e8, 0x9b7c, 0x9b7d, 0x9b7e, 0x9ba1, 0x9ba2, 0x9ba3,
- 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab,
- 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3,
- 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb,
- 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3,
- 0x9bc4, 0x9bc5, 0xe8cd, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb,
- 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3,
- 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb,
- 0x9bdc, 0x9bdd, 0xd0c0, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3,
- 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb,
- 0xfd64, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3,
- 0x9bf4, 0x9bf5, 0xbf47, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb,
- 0x9bfc, 0x9bfd, 0x9bfe, 0x9c40, 0x9c41, 0xebc9, 0x9c43, 0x9c44,
- 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b, 0x9c4c,
- 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0xcde7, 0x9c54,
- 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b, 0x9c5c,
- 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0xc0e7, 0x9c63, 0x9c64,
- 0x9c65, 0x9c66, 0x9c67, 0xdc52, 0x9c69, 0x9c6a, 0xf86d, 0x9c6c,
- 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73, 0x9c74,
- 0x9c75, 0x9c76, 0xdb5d, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7c,
- 0x9c7d, 0x9c7e, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, 0x9ca6,
- 0x9ca7, 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac, 0x9cad, 0x9cae,
- 0x9caf, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6,
- 0x9cb7, 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0xc95c, 0xafb0, 0x9cbe,
- 0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc6,
- 0x9cc7, 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce,
- 0x9ccf, 0xd4d1, 0x9cd1, 0x9cd2, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6,
- 0x9cd7, 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9cde,
- 0x9cdf, 0x9ce0, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6,
- 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, 0x9ced, 0x9cee,
- 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2, 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6,
- 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe,
- 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47,
- 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f,
- 0x9d50, 0x9d51, 0x9d52, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0xe07c,
- 0x9d58, 0x9d59, 0xb5ae, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f,
- 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67,
- 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f,
- 0x9d70, 0x9d71, 0x9d72, 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77,
- 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9da1,
- 0x9da2, 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9,
- 0x9daa, 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1,
- 0x9db2, 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9,
- 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1,
- 0x9dc2, 0x9dc3, 0xa9e4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9,
- 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1,
- 0x9dd2, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9,
- 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1,
- 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9,
- 0x9dea, 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1,
- 0x9df2, 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9,
- 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9e40, 0x9e41, 0x9e42,
- 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4a,
- 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, 0x9e50, 0x9e51, 0x9e52,
- 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, 0x9e58, 0x9e59, 0x9e5a,
- 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f, 0x9e60, 0x9e61, 0x9e62,
- 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a,
- 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, 0x9e6f, 0x9e70, 0x9e71, 0x9e72,
- 0x9e73, 0x9e74, 0x9e75, 0x9e76, 0x9e77, 0x9e78, 0x9e79, 0x9e7a,
- 0x9e7b, 0x9e7c, 0x9e7d, 0x9e7e, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4,
- 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, 0xabec, 0x9eaa, 0x9eab, 0x9eac,
- 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4,
- 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb8, 0x9eb9, 0x9eba, 0x9ebb, 0x9ebc,
- 0x9ebd, 0x9ebe, 0x9ebf, 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec4,
- 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0x9ec9, 0x9eca, 0x9ecb, 0x9ecc,
- 0x9ecd, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed1, 0x9ed2, 0x9ed3, 0x9ed4,
- 0x9ed5, 0x9ed6, 0x9ed7, 0x9ed8, 0x9ed9, 0x9eda, 0x9edb, 0x9edc,
- 0x9edd, 0x9ede, 0x9edf, 0x9ee0, 0x9ee1, 0x9ee2, 0x9ee3, 0x9ee4,
- 0x9ee5, 0x9ee6, 0x9ee7, 0x9ee8, 0x9ee9, 0x9eea, 0x9eeb, 0x9eec,
- 0x9eed, 0x9eee, 0xdecd, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4,
- 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc,
- 0xc9fc, 0x9efe, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f44, 0x9f45,
- 0x9f46, 0x9f47, 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d,
- 0x9f4e, 0x9f4f, 0x9f50, 0x9f51, 0x9f52, 0x9f53, 0x9f54, 0x9f55,
- 0x9f56, 0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d,
- 0x9f5e, 0x9f5f, 0xf9c4, 0x9f61, 0x9f62, 0x9f63, 0x9f64, 0x9f65,
- 0x91be, 0x9f67, 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d,
- 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0x9f74, 0x9f75,
- 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d,
- 0x9f7e, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7,
- 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0x9fae, 0x9faf,
- 0x9fb0, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, 0x9fb5, 0x9fb6, 0x9fb7,
- 0x9fb8, 0x9fb9, 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0x9fbe, 0x9fbf,
- 0x9fc0, 0x9fc1, 0x9fc2, 0x9fc3, 0x9fc4, 0x9fc5, 0x9fc6, 0x9fc7,
- 0x9fc8, 0x9fc9, 0x9fca, 0xb9b0, 0x9fcc, 0x9fcd, 0x9fce, 0x9fcf,
- 0x9fd0, 0x9fd1, 0x9fd2, 0x9fd3, 0x9fd4, 0x9fd5, 0x9fd6, 0x9fd7,
- 0x9361, 0x9fd9, 0x9fda, 0x9fdb, 0x9fdc, 0x9fdd, 0x9fde, 0x9fdf,
- 0x9fe0, 0x9fe1, 0x9fe2, 0x9fe3, 0x9fe4, 0x9fe5, 0x9fe6, 0x9fe7,
- 0x9fe8, 0x9fe9, 0x9fea, 0x9feb, 0x9fec, 0x9fed, 0x9fee, 0x9fef,
- 0x9ff0, 0x9ff1, 0x9ff2, 0x9ff3, 0x9ff4, 0x9ff5, 0x9ff6, 0x9ff7,
- 0x9ff8, 0x9ff9, 0x9ffa, 0x9ffb, 0x9ffc, 0x9ffd, 0x9ffe, 0xa040,
- 0xa041, 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, 0xa048,
- 0xa049, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xa04e, 0xa04f, 0xa050,
- 0xa051, 0xa052, 0xa053, 0xa054, 0xa055, 0xa056, 0xa057, 0xa058,
- 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, 0xa05e, 0xa05f, 0xa060,
- 0xa061, 0xa062, 0x8fb6, 0xa064, 0xa065, 0xa066, 0xa067, 0xa068,
- 0xa069, 0xa06a, 0xa06b, 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070,
- 0xa071, 0xa072, 0xa073, 0xa074, 0xa075, 0xa076, 0xa9f0, 0xa078,
- 0xa079, 0xa07a, 0xa07b, 0xa07c, 0xa07d, 0xa07e, 0xa0a1, 0xa0a2,
- 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a6, 0xa0a7, 0xa0a8, 0xa0a9, 0xa0aa,
- 0xa0ab, 0xa0ac, 0xa0ad, 0xa0ae, 0xa0af, 0xa0b0, 0xa0b1, 0xa0b2,
- 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7, 0xa0b8, 0xa0b9, 0xa0ba,
- 0xa0bb, 0xa0bc, 0xa0bd, 0xa0be, 0xa0bf, 0xa0c0, 0xa0c1, 0xa0c2,
- 0xa0c3, 0xa0c4, 0xa0c5, 0xa0c6, 0xa0c7, 0xa0c8, 0xa0c9, 0xa0ca,
- 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, 0xa0d0, 0xa0d1, 0xa0d2,
- 0xa0d3, 0xa0d4, 0x947a, 0xa0d6, 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da,
- 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, 0xde72, 0xa0e0, 0xa0e1, 0xa0e2,
- 0xa0e3, 0x9455, 0xa0e5, 0xa0e6, 0xa0e7, 0xa0e8, 0xa0e9, 0xa0ea,
- 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef, 0xa0f0, 0xa0f1, 0xa0f2,
- 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7, 0xa0f8, 0xa0f9, 0xa0fa,
- 0xa0fb, 0xa0fc, 0xa0fd, 0xa0fe, 0x8140, 0x8141, 0x8142, 0x8143,
- 0x8144, 0x8145, 0x8146, 0x8147, 0x8148, 0x8149, 0x814a, 0x814b,
- 0x814c, 0x814d, 0x814e, 0x814f, 0x8150, 0x8151, 0x8152, 0x8153,
- 0x8154, 0x8155, 0x8156, 0x8157, 0x8158, 0x8159, 0x815a, 0x815b,
- 0x815c, 0x815d, 0x815e, 0x815f, 0x8160, 0x8161, 0x8162, 0x8163,
- 0x8164, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816a, 0x816b,
- 0x816c, 0x816d, 0x816e, 0x816f, 0x8170, 0x8171, 0x8172, 0x8173,
- 0x8174, 0x8175, 0x8176, 0x8177, 0x8178, 0x8179, 0x817a, 0x817b,
- 0x817c, 0x817d, 0x817e, 0x81a1, 0x81a2, 0x81a3, 0x81a4, 0x81a5,
- 0x81a6, 0x81a7, 0x81a8, 0x81a9, 0x81aa, 0x81ab, 0x81ac, 0x81ad,
- 0x81ae, 0x81af, 0x81b0, 0x81b1, 0x81b2, 0x81b3, 0x81b4, 0x81b5,
- 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0x81ba, 0x81bb, 0x81bc, 0x81bd,
- 0x81be, 0x81bf, 0x81c0, 0x81c1, 0x81c2, 0x81c3, 0x81c4, 0x81c5,
- 0x81c6, 0x81c7, 0x81c8, 0x81c9, 0x81ca, 0x81cb, 0x81cc, 0x81cd,
- 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5,
- 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db, 0x81dc, 0x81dd,
- 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e3, 0x81e4, 0x81e5,
- 0x81e6, 0x81e7, 0x81e8, 0x81e9, 0x81ea, 0x81eb, 0x81ec, 0x81ed,
- 0x81ee, 0x81ef, 0x81f0, 0x81f1, 0x81f2, 0x81f3, 0x81f4, 0x81f5,
- 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa, 0x81fb, 0x81fc, 0x81fd,
- 0x81fe, 0x8240, 0x8241, 0x8242, 0x8243, 0x8244, 0x8245, 0x8246,
- 0x8247, 0x8248, 0x8249, 0x824a, 0x824b, 0x824c, 0x824d, 0x824e,
- 0x824f, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256,
- 0x8257, 0x8258, 0x8259, 0x825a, 0x825b, 0x825c, 0x825d, 0x825e,
- 0x825f, 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266,
- 0x8267, 0x8268, 0x8269, 0x826a, 0x826b, 0x826c, 0x826d, 0x826e,
- 0x826f, 0x8270, 0x8271, 0x8272, 0x8273, 0x8274, 0x8275, 0x8276,
- 0x8277, 0x8278, 0x8279, 0x827a, 0x827b, 0x827c, 0x827d, 0x827e,
- 0x82a1, 0x82a2, 0x82a3, 0x82a4, 0x82a5, 0x82a6, 0x82a7, 0x82a8,
- 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0x82ae, 0x82af, 0x82b0,
- 0x82b1, 0x82b2, 0x82b3, 0x82b4, 0x82b5, 0x82b6, 0x82b7, 0x82b8,
- 0x82b9, 0x82ba, 0x82bb, 0x82bc, 0x82bd, 0x82be, 0x82bf, 0x82c0,
- 0x82c1, 0x82c2, 0x82c3, 0x82c4, 0x82c5, 0x82c6, 0x82c7, 0x82c8,
- 0x82c9, 0x82ca, 0x82cb, 0x82cc, 0x82cd, 0x82ce, 0x82cf, 0x82d0,
- 0x82d1, 0x82d2, 0x82d3, 0x82d4, 0x82d5, 0x82d6, 0x82d7, 0x82d8,
- 0x82d9, 0x82da, 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, 0x82e0,
- 0x82e1, 0x82e2, 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, 0x82e8,
- 0x82e9, 0x82ea, 0x82eb, 0x82ec, 0x82ed, 0x82ee, 0x82ef, 0x82f0,
- 0x82f1, 0x82f2, 0x82f3, 0x82f4, 0x82f5, 0x82f6, 0x82f7, 0x82f8,
- 0x82f9, 0x82fa, 0x82fb, 0x82fc, 0x82fd, 0x82fe, 0x8340, 0x8341,
- 0x8342, 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349,
- 0x834a, 0x834b, 0x834c, 0x834d, 0x834e, 0x834f, 0x8350, 0x8351,
- 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0x8358, 0x8359,
- 0x835a, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f, 0x8360, 0x8361,
- 0x8362, 0x8363, 0x8364, 0x8365, 0x8366, 0x8367, 0x8368, 0x8369,
- 0x836a, 0x836b, 0x836c, 0x836d, 0x836e, 0x836f, 0x8370, 0x8371,
- 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8377, 0x8378, 0x8379,
- 0x837a, 0x837b, 0x837c, 0x837d, 0x837e, 0x83a1, 0x83a2, 0x83a3,
- 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83a8, 0x83a9, 0x83aa, 0x83ab,
- 0x83ac, 0x83ad, 0x83ae, 0x83af, 0x83b0, 0x83b1, 0x83b2, 0x83b3,
- 0x83b4, 0x83b5, 0x83b6, 0x83b7, 0x83b8, 0x83b9, 0x83ba, 0x83bb,
- 0x83bc, 0x83bd, 0x83be, 0x83bf, 0x83c0, 0x83c1, 0x83c2, 0x83c3,
- 0x83c4, 0x83c5, 0x83c6, 0x83c7, 0x83c8, 0x83c9, 0x83ca, 0x83cb,
- 0x83cc, 0x83cd, 0x83ce, 0x83cf, 0x83d0, 0x83d1, 0x83d2, 0x83d3,
- 0x83d4, 0x83d5, 0x83d6, 0x83d7, 0x83d8, 0x83d9, 0x83da, 0x83db,
- 0x83dc, 0x83dd, 0x83de, 0x83df, 0x83e0, 0x83e1, 0x83e2, 0x83e3,
- 0x83e4, 0x83e5, 0x83e6, 0x83e7, 0x83e8, 0x83e9, 0x83ea, 0x83eb,
- 0x83ec, 0x83ed, 0x83ee, 0x83ef, 0x83f0, 0x83f1, 0x83f2, 0x83f3,
- 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83f8, 0x83f9, 0x83fa, 0x83fb,
- 0x83fc, 0x83fd, 0x83fe, 0x8440, 0x8441, 0x8442, 0x8443, 0x8444,
- 0x8445, 0x8446, 0x8447, 0x8448, 0x8449, 0x844a, 0x844b, 0x844c,
- 0x844d, 0x844e, 0x844f, 0x8450, 0x8451, 0x8452, 0x8453, 0x8454,
- 0x8455, 0x8456, 0x8457, 0x8458, 0x8459, 0x845a, 0x845b, 0x845c,
- 0x845d, 0x845e, 0x845f, 0x8460, 0x8461, 0x8462, 0x8463, 0x8464,
- 0x8465, 0x8466, 0x8467, 0x8468, 0x8469, 0x846a, 0x846b, 0x846c,
- 0x846d, 0x846e, 0x846f, 0x8470, 0x8471, 0x8472, 0x8473, 0x8474,
- 0x8475, 0x8476, 0x8477, 0x8478, 0x8479, 0x847a, 0x847b, 0x847c,
- 0x847d, 0x847e, 0x84a1, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6,
- 0x84a7, 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae,
- 0x84af, 0x84b0, 0x84b1, 0x84b2, 0x84b3, 0x84b4, 0x84b5, 0x84b6,
- 0x84b7, 0x84b8, 0x84b9, 0x84ba, 0x84bb, 0x84bc, 0x84bd, 0x84be,
- 0x84bf, 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0x84c4, 0x84c5, 0x84c6,
- 0x84c7, 0x84c8, 0x84c9, 0x84ca, 0x84cb, 0x84cc, 0x84cd, 0x84ce,
- 0x84cf, 0x84d0, 0x84d1, 0x84d2, 0x84d3, 0x84d4, 0x84d5, 0x84d6,
- 0x84d7, 0x84d8, 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84dd, 0x84de,
- 0x84df, 0x84e0, 0x84e1, 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6,
- 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee,
- 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6,
- 0x84f7, 0x84f8, 0x84f9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0x84fe,
- 0x8540, 0x8541, 0x8542, 0x8543, 0x8544, 0x8545, 0x8546, 0x8547,
- 0x8548, 0x8549, 0x854a, 0x854b, 0x854c, 0x854d, 0x854e, 0x854f,
- 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8556, 0x8557,
- 0x8558, 0x8559, 0x855a, 0x855b, 0x855c, 0x855d, 0x855e, 0x855f,
- 0x8560, 0x8561, 0x8562, 0x8563, 0x8564, 0x8565, 0x8566, 0x8567,
- 0x8568, 0x8569, 0x856a, 0x856b, 0x856c, 0x856d, 0x856e, 0x856f,
- 0x8570, 0x8571, 0x8572, 0x8573, 0x8574, 0x8575, 0x8576, 0x8577,
- 0x8578, 0x8579, 0x857a, 0x857b, 0x857c, 0x857d, 0x857e, 0x85a1,
- 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, 0x85a7, 0x85a8, 0x85a9,
- 0x85aa, 0x85ab, 0x85ac, 0x85ad, 0x85ae, 0x85af, 0x85b0, 0x85b1,
- 0x85b2, 0x85b3, 0x85b4, 0x85b5, 0x85b6, 0x85b7, 0x85b8, 0x85b9,
- 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c0, 0x85c1,
- 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8, 0x85c9,
- 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85cf, 0x85d0, 0x85d1,
- 0x85d2, 0x85d3, 0x85d4, 0x85d5, 0x85d6, 0x85d7, 0x85d8, 0x85d9,
- 0x85da, 0x85db, 0x85dc, 0x85dd, 0x85de, 0x85df, 0x85e0, 0x85e1,
- 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7, 0x85e8, 0x85e9,
- 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, 0x85f0, 0x85f1,
- 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8, 0x85f9,
- 0x85fa, 0x85fb, 0x85fc, 0x85fd, 0x85fe, 0x8640, 0x8641, 0x8642,
- 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, 0x864a,
- 0x864b, 0x864c, 0x864d, 0x864e, 0x864f, 0x8650, 0x8651, 0x8652,
- 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0x8658, 0x8659, 0x865a,
- 0x865b, 0x865c, 0x865d, 0x865e, 0x865f, 0x8660, 0x8661, 0x8662,
- 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a,
- 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, 0x8670, 0x8671, 0x8672,
- 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, 0x8678, 0x8679, 0x867a,
- 0x867b, 0x867c, 0x867d, 0x867e, 0x86a1, 0x86a2, 0x86a3, 0x86a4,
- 0x86a5, 0x86a6, 0x86a7, 0x86a8, 0x86a9, 0x86aa, 0x86ab, 0x86ac,
- 0x86ad, 0x86ae, 0x86af, 0x86b0, 0x86b1, 0x86b2, 0x86b3, 0x86b4,
- 0x86b5, 0x86b6, 0x86b7, 0x86b8, 0x86b9, 0x86ba, 0x86bb, 0x86bc,
- 0x86bd, 0x86be, 0x86bf, 0x86c0, 0x86c1, 0x86c2, 0x86c3, 0x86c4,
- 0x86c5, 0x86c6, 0x86c7, 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc,
- 0x86cd, 0x86ce, 0x86cf, 0x86d0, 0x86d1, 0x86d2, 0x86d3, 0x86d4,
- 0x86d5, 0x86d6, 0x86d7, 0x86d8, 0x86d9, 0x86da, 0x86db, 0x86dc,
- 0x86dd, 0x86de, 0x86df, 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e4,
- 0x86e5, 0x86e6, 0x86e7, 0x86e8, 0x86e9, 0x86ea, 0x86eb, 0x86ec,
- 0x86ed, 0x86ee, 0x86ef, 0x86f0, 0x86f1, 0x86f2, 0x86f3, 0x86f4,
- 0x86f5, 0x86f6, 0x86f7, 0x86f8, 0x86f9, 0x86fa, 0x86fb, 0x86fc,
- 0x86fd, 0x86fe, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745,
- 0x8746, 0x8747, 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, 0x874d,
- 0x874e, 0x874f, 0x8750, 0x8751, 0x8752, 0x8753, 0x8754, 0x8755,
- 0x8756, 0x8757, 0x8758, 0x8759, 0x875a, 0x875b, 0x875c, 0x875d,
- 0x875e, 0x875f, 0x8760, 0x8761, 0x8762, 0x8763, 0x8764, 0x8765,
- 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, 0x876d,
- 0x876e, 0x876f, 0x8770, 0x8771, 0x8772, 0x8773, 0x8774, 0x8775,
- 0x8776, 0x8777, 0x8778, 0x8779, 0x877a, 0x877b, 0x877c, 0x877d,
- 0x877e, 0x87a1, 0x87a2, 0x87a3, 0x87a4, 0x87a5, 0x87a6, 0x87a7,
- 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, 0x87ae, 0x87af,
- 0x87b0, 0x87b1, 0x87b2, 0x87b3, 0x87b4, 0x87b5, 0x87b6, 0x87b7,
- 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0x87bc, 0x87bd, 0x87be, 0x87bf,
- 0x87c0, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0x87c7,
- 0x87c8, 0x87c9, 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf,
- 0x87d0, 0x87d1, 0x87d2, 0x87d3, 0x87d4, 0x87d5, 0x87d6, 0x87d7,
- 0x87d8, 0x87d9, 0x87da, 0x87db, 0x87dc, 0x87dd, 0x87de, 0x87df,
- 0x87e0, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e5, 0x87e6, 0x87e7,
- 0x87e8, 0x87e9, 0x87ea, 0x87eb, 0x87ec, 0x87ed, 0x87ee, 0x87ef,
- 0x87f0, 0x87f1, 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7,
- 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87fe, 0x8840,
- 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, 0x8846, 0x8847, 0x8848,
- 0x8849, 0x884a, 0x884b, 0x884c, 0x884d, 0x884e, 0x884f, 0x8850,
- 0x8851, 0x8852, 0x8853, 0x8854, 0x8855, 0x8856, 0x8857, 0x8858,
- 0x8859, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e, 0x885f, 0x8860,
- 0x8861, 0x8862, 0x8863, 0x8864, 0x8865, 0x8866, 0x8867, 0x8868,
- 0x8869, 0x886a, 0x886b, 0x886c, 0x886d, 0x886e, 0x886f, 0x8870,
- 0x8871, 0x8872, 0x8873, 0x8874, 0x8875, 0x8876, 0x8877, 0x8878,
- 0x8879, 0x887a, 0x887b, 0x887c, 0x887d, 0x887e, 0x88a1, 0x88a2,
- 0x88a3, 0x88a4, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa,
- 0x88ab, 0x88ac, 0x88ad, 0x88ae, 0x88af, 0x88b0, 0x88b1, 0x88b2,
- 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7, 0x88b8, 0x88b9, 0x88ba,
- 0x88bb, 0x88bc, 0x88bd, 0x88be, 0x88bf, 0x88c0, 0x88c1, 0x88c2,
- 0x88c3, 0x88c4, 0x88c5, 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0x88ca,
- 0x88cb, 0x88cc, 0x88cd, 0x88ce, 0x88cf, 0x88d0, 0x88d1, 0x88d2,
- 0x88d3, 0x88d4, 0x88d5, 0x88d6, 0x88d7, 0x88d8, 0x88d9, 0x88da,
- 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88df, 0x88e0, 0x88e1, 0x88e2,
- 0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7, 0x88e8, 0x88e9, 0x88ea,
- 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f2,
- 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0x88f7, 0x88f8, 0x88f9, 0x88fa,
- 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x8940, 0x8941, 0x8942, 0x8943,
- 0x8944, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894a, 0x894b,
- 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951, 0x8952, 0x8953,
- 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0x895a, 0x895b,
- 0x895c, 0x895d, 0x895e, 0x895f, 0x8960, 0x8961, 0x8962, 0x8963,
- 0x8964, 0x8965, 0x8966, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b,
- 0x896c, 0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973,
- 0x8974, 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897b,
- 0x897c, 0x897d, 0x897e, 0x89a1, 0x89a2, 0x89a3, 0x89a4, 0x89a5,
- 0x89a6, 0x89a7, 0x89a8, 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad,
- 0x89ae, 0x89af, 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5,
- 0x89b6, 0x89b7, 0x89b8, 0x89b9, 0x89ba, 0x89bb, 0x89bc, 0x89bd,
- 0x89be, 0x89bf, 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5,
- 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0x89ca, 0x89cb, 0x89cc, 0x89cd,
- 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x89d2, 0x89d3, 0x89d4, 0x89d5,
- 0x89d6, 0x89d7, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd,
- 0x89de, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5,
- 0x89e6, 0x89e7, 0x89e8, 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0x89ed,
- 0x89ee, 0x89ef, 0x89f0, 0x89f1, 0x89f2, 0x89f3, 0x89f4, 0x89f5,
- 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0x89fb, 0x89fc, 0x89fd,
- 0x89fe, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46,
- 0x8a47, 0x8a48, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e,
- 0x8a4f, 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56,
- 0x8a57, 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e,
- 0x8a5f, 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66,
- 0x8a67, 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e,
- 0x8a6f, 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76,
- 0x8a77, 0x8a78, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e,
- 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8,
- 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0,
- 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8,
- 0x8ab9, 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0,
- 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8,
- 0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0,
- 0x8ad1, 0x8ad2, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8,
- 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0,
- 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8,
- 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0,
- 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8,
- 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8afe, 0x8b40, 0x8b41,
- 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b47, 0x8b48, 0x8b49,
- 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0x8b50, 0x8b51,
- 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0x8b56, 0x8b57, 0x8b58, 0x8b59,
- 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, 0x8b5e, 0x8b5f, 0x8b60, 0x8b61,
- 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b66, 0x8b67, 0x8b68, 0x8b69,
- 0x8b6a, 0x8b6b, 0x8b6c, 0x8b6d, 0x8b6e, 0x8b6f, 0x8b70, 0x8b71,
- 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79,
- 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8ba1, 0x8ba2, 0x8ba3,
- 0x8ba4, 0x8ba5, 0x8ba6, 0x8ba7, 0x8ba8, 0x8ba9, 0x8baa, 0x8bab,
- 0x8bac, 0x8bad, 0x8bae, 0x8baf, 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3,
- 0x8bb4, 0x8bb5, 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb,
- 0x8bbc, 0x8bbd, 0x8bbe, 0x8bbf, 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3,
- 0x8bc4, 0x8bc5, 0x8bc6, 0x8bc7, 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb,
- 0x8bcc, 0x8bcd, 0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0x8bd2, 0x8bd3,
- 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, 0x8bd8, 0x8bd9, 0x8bda, 0x8bdb,
- 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, 0x8be0, 0x8be1, 0x8be2, 0x8be3,
- 0x8be4, 0x8be5, 0x8be6, 0x8be7, 0x8be8, 0x8be9, 0x8bea, 0x8beb,
- 0x8bec, 0x8bed, 0x8bee, 0x8bef, 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3,
- 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7, 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb,
- 0x8bfc, 0x8bfd, 0x8bfe, 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44,
- 0x8c45, 0x8c46, 0x8c47, 0x8c48, 0x8c49, 0x8c4a, 0x8c4b, 0x8c4c,
- 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54,
- 0x8c55, 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5a, 0x8c5b, 0x8c5c,
- 0x8c5d, 0x8c5e, 0x8c5f, 0x8c60, 0x8c61, 0x8c62, 0x8c63, 0x8c64,
- 0x8c65, 0x8c66, 0x8c67, 0x8c68, 0x8c69, 0x8c6a, 0x8c6b, 0x8c6c,
- 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72, 0x8c73, 0x8c74,
- 0x8c75, 0x8c76, 0x8c77, 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0x8c7c,
- 0x8c7d, 0x8c7e, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5, 0x8ca6,
- 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad, 0x8cae,
- 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5, 0x8cb6,
- 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, 0x8cbe,
- 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6,
- 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce,
- 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6,
- 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8cde,
- 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6,
- 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced, 0x8cee,
- 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5, 0x8cf6,
- 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, 0x8cfe,
- 0x8d40, 0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45, 0x8d46, 0x8d47,
- 0x8d48, 0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f,
- 0x8d50, 0x8d51, 0x8d52, 0x8d53, 0x8d54, 0x8d55, 0x8d56, 0x8d57,
- 0x8d58, 0x8d59, 0x8d5a, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f,
- 0x8d60, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, 0x8d67,
- 0x8d68, 0x8d69, 0x8d6a, 0x8d6b, 0x8d6c, 0x8d6d, 0x8d6e, 0x8d6f,
- 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, 0x8d77,
- 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8da1,
- 0x8da2, 0x8da3, 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9,
- 0x8daa, 0x8dab, 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1,
- 0x8db2, 0x8db3, 0x8db4, 0x8db5, 0x8db6, 0x8db7, 0x8db8, 0x8db9,
- 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, 0x8dc0, 0x8dc1,
- 0x8dc2, 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8, 0x8dc9,
- 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, 0x8dce, 0x8dcf, 0x8dd0, 0x8dd1,
- 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0x8dd6, 0x8dd7, 0x8dd8, 0x8dd9,
- 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, 0x8de0, 0x8de1,
- 0x8de2, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7, 0x8de8, 0x8de9,
- 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def, 0x8df0, 0x8df1,
- 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7, 0x8df8, 0x8df9,
- 0x8dfa, 0x8dfb, 0x8dfc, 0x8dfd, 0x8dfe, 0xc6a1, 0xc6a2, 0xc6a3,
- 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab,
- 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3,
- 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb,
- 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3,
- 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb,
- 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3,
- 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db,
- 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3,
- 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb,
- 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3,
- 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb,
- 0xc6fc, 0xc6fd, 0xc6fe, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744,
- 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c,
- 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754,
- 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c,
- 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764,
- 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c,
- 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774,
- 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c,
- 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6,
- 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ad, 0xc7ae,
- 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6,
- 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be,
- 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6,
- 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce,
- 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6,
- 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd, 0xc7de,
- 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4, 0xc7e5, 0xc7e6,
- 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee,
- 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6,
- 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe,
- 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, 0xc847,
- 0xc848, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f,
- 0xc850, 0xc851, 0xc852, 0xc853, 0xc854, 0xc855, 0xc856, 0xc857,
- 0xc858, 0xc859, 0xc85a, 0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f,
- 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867,
- 0xc868, 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f,
- 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877,
- 0xc878, 0xc879, 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e, 0xc8a1,
- 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a8, 0xc8a9,
- 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, 0xc8b1,
- 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8, 0xc8b9,
- 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1,
- 0xc8c2, 0xc8c3, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9,
- 0xc8ca, 0xc8cb, 0xc8cc, 0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1,
- 0xc8d2, 0xc8d3, 0xc8d4, 0xc8d5, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9,
- 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xc8e0, 0xc8e1,
- 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9,
- 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1,
- 0xc8f2, 0xc8f3, 0xc8f4, 0xc8f5, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9,
- 0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc8fe, 0xb05a, 0xa7f3, 0xa8ae,
- 0xb8eb, 0xb7c6, 0xa6ea, 0xa579, 0x8bf8, 0xc074, 0xabb4, 0xaaf7,
- 0xb3e2, 0xa960, 0xc369, 0xc4ee, 0xc3b9, 0xc5da, 0xc1b3, 0xbb72,
- 0xc5de, 0xbcd6, 0xaca5, 0xaf4f, 0xaf5f, 0xb8a8, 0xb954, 0xc064,
- 0xb6c3, 0xa75a, 0xc4e6, 0xc4ea, 0xc4f5, 0xc67d, 0xb450, 0xc0dd,
- 0xc2c5, 0xc4b0, 0xa9d4, 0xc3be, 0xc4fa, 0xb459, 0xaed4, 0xaef6,
- 0xaf54, 0xa8d3, 0xa74e, 0xb3d2, 0xbedb, 0xc372, 0xc46c, 0xbf63,
- 0xa6d1, 0xc4aa, 0xb8b8, 0xb8f4, 0xc553, 0xbe7c, 0xc64f, 0xb84c,
- 0xb853, 0xbaf1, 0xdb77, 0xbffd, 0xb3c0, 0xbdd7, 0xc362, 0xa7cb,
- 0xc5a2, 0xc5a4, 0xa863, 0xbd55, 0xb8ef, 0xb970, 0xc253, 0xb9f0,
- 0xbcd3, 0xb25c, 0xba7c, 0xb2d6, 0xc15c, 0xadae, 0xb0c7, 0xa6d8,
- 0xbbfe, 0xade2, 0xb857, 0xbaf0, 0xb5d9, 0xb3ae, 0xc5aa, 0xced4,
- 0xbcd6, 0xbfd5, 0xa4a6, 0xb9e7, 0xabe3, 0xb276, 0xb2a7, 0xa55f,
- 0xeda8, 0xab4b, 0xb45f, 0xa4a3, 0xaa63, 0xbcc6, 0xafc1, 0xb0d1,
- 0xb6eb, 0xacd9, 0xb8ad, 0xbba1, 0xb1fe, 0xa8b0, 0xa848, 0xac42,
- 0xad59, 0xb1b0, 0xb2a4, 0xab47, 0xa8e2, 0xb1e7, 0xc2b3, 0xa87d,
- 0xbdcc, 0xb671, 0xc079, 0xa766, 0xa46b, 0xc366, 0xaec8, 0xc26f,
- 0xc472, 0xbe5b, 0xc67a, 0xc452, 0xbea4, 0xa44f, 0xbee4, 0xbefa,
- 0xf765, 0xa67e, 0xbca6, 0xc5ca, 0xbcbf, 0xbaa7, 0xb7d2, 0xe6a3,
- 0xbd6d, 0xc170, 0xbdfb, 0xbdac, 0xb373, 0xc1e5, 0xa643, 0xa648,
- 0xab7c, 0xaf50, 0xb5f5, 0xbba1, 0xb747, 0xa9c0, 0xb1c9, 0xc0d4,
- 0xc3ae, 0xc279, 0xa54f, 0xcbf1, 0xb9e7, 0xc0ad, 0xccb0, 0xacc2,
- 0xbcfc, 0xb2dc, 0xb2e2, 0xb961, 0xb973, 0xc646, 0xbbe2, 0xa8d2,
- 0xc2a7, 0xc4bf, 0xc1f5, 0xb463, 0xa446, 0xb9b1, 0xbc64, 0xa7bf,
- 0xaec6, 0xbcd6, 0xbf52, 0xc0f8, 0xe764, 0xbff1, 0xc073, 0xb777,
- 0xa8bf, 0xbc42, 0xccd8, 0xac68, 0xac79, 0xb7c8, 0xaf5b, 0xaf64,
- 0xb2b8, 0xafc3, 0xc3fe, 0xa4bb, 0xbcae, 0xb3b0, 0xaddb, 0xb15b,
- 0xb25f, 0xbdfc, 0xabdf, 0xb758, 0xaedf, 0xb276, 0xb6a9, 0xa751,
- 0xa64f, 0xbc69, 0xa9f6, 0xa7f5, 0xb1f9, 0xaa64, 0xb27a, 0xb567,
- 0xbfa9, 0xb8cc, 0xa8bd, 0xc2f7, 0xb0ce, 0xb7c4, 0xa75b, 0xbf4d,
- 0xbf5a, 0xc4a9, 0xc5ec, 0xc5ef, 0xaa4c, 0xb24f, 0xc17b, 0xa5df,
- 0xb2c1, 0xb2c9, 0xaaac, 0xaaa5, 0xc3d1, 0xa4b0, 0xaff9, 0xa8eb,
- 0xa4c1, 0xabd7, 0xa9dd, 0xbf7d, 0xa676, 0xac7d, 0xbcc9, 0xbfe7,
- 0xa6e6, 0xadb0, 0xa8a3, 0xb9f8, 0xc94a, 0xddfc, 0xb6ef, 0xb4b8,
- 0xe8f9, 0xbdde, 0xaf71, 0xafab, 0xb2bb, 0xbad6, 0xb974, 0xbaeb,
- 0xa6d0, 0xbdd1, 0xb668, 0xb3a3, 0xb6ba, 0xb97d, 0xc05d, 0xc562,
- 0xa14a, 0xa157, 0xa159, 0xa15b, 0xa15f, 0xa160, 0xa163, 0xa164,
- 0xa167, 0xa168, 0xa16b, 0xa16c, 0xa16f, 0xa170, 0xa173, 0xa174,
- 0xa177, 0xa178, 0xa17b, 0xa17c, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb,
- 0xa1c8, 0xa1c9, 0xa15c, 0xa14d, 0xa14e, 0xa14f, 0xa151, 0xa152,
- 0xa153, 0xa154, 0xa17d, 0xa17e, 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4,
- 0xa1cc, 0xa1cd, 0xa1ce, 0xa1de, 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2,
- 0xa242, 0xa24c, 0xa24d, 0xa24e, 0xa149, 0xc8d0, 0xa1ad, 0xa243,
- 0xa248, 0xa1ae, 0xc8cf, 0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141,
- 0xa1d0, 0xa144, 0xa1fe, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3,
- 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5,
- 0xa1d7, 0xa1d6, 0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2,
- 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da,
- 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2,
- 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xc6e4, 0xa240,
- 0xc6e5, 0xa173, 0xa1c4, 0xa1a5, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec,
- 0xa2ed, 0xa2ee, 0xa2ef, 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4,
- 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc,
- 0xa2fd, 0xa2fe, 0xa340, 0xa341, 0xa342, 0xa343, 0xa161, 0xa155,
- 0xa162, 0xa1e3, 0xa14e, 0xa246, 0xa247, 0xc8cd, 0xa1c3, 0xc8ce,
- 0xa244, 0xf9fe,
-};
-
-static const Summary16 big5hkscs_uni2indx_page00[16] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x81ac }, { 6, 0x01b3 },
- { 12, 0x0703 }, { 17, 0x008c }, { 20, 0x3703 }, { 27, 0x178c },
-};
-static const Summary16 big5hkscs_uni2indx_page02[29] = {
- /* 0x0200 */
- { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
- { 56, 0x0000 }, { 56, 0x0813 }, { 60, 0x0402 }, { 62, 0x0020 },
- { 63, 0x0408 }, { 65, 0x0000 }, { 65, 0x0000 }, { 65, 0x0000 },
- { 65, 0x2ec0 }, { 71, 0x0200 }, { 72, 0x0000 }, { 72, 0x0000 },
- /* 0x0300 */
- { 72, 0x0020 }, { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 },
- { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 },
- { 73, 0x0000 }, { 73, 0xfffe }, { 88, 0x03fb }, { 97, 0xfffe },
- { 112, 0x03fb },
-};
-static const Summary16 big5hkscs_uni2indx_page20[44] = {
- /* 0x2000 */
- { 191, 0x0000 }, { 191, 0x3378 }, { 199, 0x00f4 }, { 204, 0x482c },
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- /* 0x2100 */
- { 209, 0x0228 }, { 212, 0x0040 }, { 213, 0x0002 }, { 214, 0x0000 },
- { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x03ff }, { 224, 0x03ff },
- { 234, 0x0000 }, { 234, 0x03cf }, { 242, 0x0000 }, { 242, 0x0300 },
- { 244, 0x0000 }, { 244, 0x0000 }, { 244, 0x0080 }, { 245, 0x0000 },
- /* 0x2200 */
- { 245, 0x0000 }, { 245, 0xc560 }, { 251, 0x4e29 }, { 258, 0x0030 },
- { 260, 0x0000 }, { 260, 0x0004 }, { 261, 0x00cb }, { 266, 0x0000 },
- { 266, 0x0000 }, { 266, 0x0220 }, { 268, 0x0020 }, { 269, 0x8000 },
-};
-static const Summary16 big5hkscs_uni2indx_page25[21] = {
- /* 0x2500 */
- { 291, 0x1005 }, { 294, 0x1111 }, { 298, 0x1010 }, { 300, 0x1010 },
- { 302, 0x0000 }, { 302, 0xffff }, { 318, 0xffff }, { 334, 0x001f },
- { 339, 0xfffe }, { 354, 0x0038 }, { 357, 0x0003 }, { 359, 0x300c },
- { 363, 0xc8c0 }, { 368, 0x0000 }, { 368, 0x003c }, { 372, 0x0000 },
- /* 0x2600 */
- { 372, 0x0260 }, { 375, 0x0000 }, { 375, 0x0000 }, { 375, 0x0000 },
- { 375, 0x0007 },
-};
-static const Summary16 big5hkscs_uni2indx_page30[62] = {
- /* 0x3000 */
- { 408, 0xffef }, { 423, 0x7037 }, { 431, 0x03fe }, { 440, 0x0001 },
- { 441, 0xfffe }, { 456, 0xffff }, { 472, 0xffff }, { 488, 0xffff },
- { 504, 0xffff }, { 520, 0x780f }, { 528, 0xfffe }, { 543, 0xffff },
- { 559, 0xffff }, { 575, 0xffff }, { 591, 0xffff }, { 607, 0x707f },
- /* 0x3100 */
- { 617, 0xffe0 }, { 628, 0xffff }, { 644, 0x03ff }, { 654, 0x0000 },
- { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 },
- { 654, 0x0000 }, { 654, 0xfffc }, { 668, 0x0000 }, { 668, 0x0000 },
- { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0x0000 },
- /* 0x3200 */
- { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0xffff }, { 684, 0xffff },
- { 700, 0x000f }, { 704, 0x0000 }, { 704, 0x0000 }, { 704, 0x0000 },
- { 704, 0xffff }, { 720, 0xffff }, { 736, 0xffff }, { 752, 0x0001 },
- { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
- /* 0x3300 */
- { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
- { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
- { 753, 0xc000 }, { 755, 0x7000 }, { 758, 0x0002 }, { 759, 0x0000 },
- { 759, 0x4010 }, { 761, 0x0026 },
-};
-static const Summary16 big5hkscs_uni2indx_page4e[1307] = {
- /* 0x4e00 */
- { 1275, 0xff9b }, { 1288, 0xd773 }, { 1299, 0xfd52 }, { 1309, 0xbbcf },
- { 1321, 0xebac }, { 1331, 0xff4c }, { 1342, 0x0600 }, { 1344, 0xc108 },
- { 1348, 0x7bff }, { 1362, 0xcf3e }, { 1373, 0x797f }, { 1385, 0x9ec8 },
- { 1393, 0x6fdf }, { 1406, 0xf7f0 }, { 1417, 0x4f3a }, { 1426, 0xa9ff },
- /* 0x4f00 */
- { 1438, 0xef3f }, { 1451, 0x27bf }, { 1462, 0xb304 }, { 1468, 0xffdd },
- { 1482, 0xfbee }, { 1495, 0xffff }, { 1511, 0xde9f }, { 1523, 0xfffd },
- { 1538, 0xafff }, { 1552, 0x7df7 }, { 1565, 0xc904 }, { 1570, 0xaeed },
- { 1581, 0xffbf }, { 1596, 0xffdb }, { 1610, 0xd033 }, { 1617, 0x67ff },
- /* 0x5000 */
- { 1630, 0xfbe9 }, { 1642, 0xdffe }, { 1656, 0xffef }, { 1671, 0x18bb },
- { 1679, 0xffeb }, { 1693, 0xfdea }, { 1705, 0xff7f }, { 1720, 0x24fd },
- { 1729, 0x79af }, { 1740, 0x7f77 }, { 1753, 0xf04c }, { 1760, 0xfdff },
- { 1775, 0xeff6 }, { 1788, 0xaefb }, { 1800, 0xf7fb }, { 1814, 0xfb7b },
- /* 0x5100 */
- { 1827, 0x7fff }, { 1842, 0x95bf }, { 1853, 0x6e77 }, { 1864, 0xbfbf },
- { 1878, 0x3bfb }, { 1890, 0xfef4 }, { 1902, 0x7faf }, { 1915, 0x13f2 },
- { 1923, 0xa7c5 }, { 1932, 0x55fe }, { 1943, 0x5db5 }, { 1953, 0x73ff },
- { 1966, 0xfff8 }, { 1979, 0xf99f }, { 1991, 0x2017 }, { 1996, 0x777b },
- /* 0x5200 */
- { 2008, 0x5fef }, { 2021, 0xf0cf }, { 2031, 0x47f3 }, { 2041, 0x1dff },
- { 2053, 0x7eda }, { 2064, 0xfef4 }, { 2076, 0xff07 }, { 2087, 0xbfbc },
- { 2099, 0xbf9f }, { 2112, 0x8fdb }, { 2123, 0x7f5b }, { 2135, 0x5a20 },
- { 2140, 0x32af }, { 2149, 0xebef }, { 2162, 0x8a5f }, { 2171, 0xdfbb },
- /* 0x5300 */
- { 2184, 0xef62 }, { 2194, 0xb6e7 }, { 2205, 0xb49f }, { 2215, 0xfb9f },
- { 2228, 0x77bf }, { 2241, 0xf49e }, { 2251, 0xf2db }, { 2262, 0xfbbf },
- { 2276, 0xc414 }, { 2281, 0xf7dc }, { 2293, 0x7ff5 }, { 2306, 0x0a55 },
- { 2312, 0x3f2e }, { 2322, 0x8fd7 }, { 2333, 0xff7f }, { 2348, 0x59ef },
- /* 0x5400 */
- { 2359, 0xffda }, { 2372, 0xff5f }, { 2386, 0xfffb }, { 2401, 0x7bff },
- { 2415, 0xedef }, { 2428, 0x0010 }, { 2429, 0xbfff }, { 2444, 0xfdff },
- { 2459, 0xf9f7 }, { 2472, 0x55ff }, { 2484, 0xffff }, { 2500, 0xffdf },
- { 2515, 0xfbff }, { 2530, 0x4441 }, { 2534, 0xefff }, { 2549, 0xbd8e },
- /* 0x5500 */
- { 2559, 0xfffe }, { 2574, 0x459f }, { 2583, 0xfde8 }, { 2594, 0xdbff },
- { 2608, 0xeffb }, { 2622, 0xf0ef }, { 2633, 0x0e7e }, { 2642, 0xfaee },
- { 2654, 0xffdf }, { 2669, 0xb73f }, { 2681, 0x7ffe }, { 2695, 0x9e3f },
- { 2706, 0xffff }, { 2722, 0xffff }, { 2738, 0x97fe }, { 2750, 0xfee7 },
- /* 0x5600 */
- { 2763, 0xf377 }, { 2775, 0xf8ff }, { 2788, 0xf6af }, { 2800, 0xeffd },
- { 2814, 0xf76f }, { 2827, 0x679d }, { 2837, 0xff7f }, { 2852, 0xdfdf },
- { 2866, 0xfeff }, { 2881, 0xf7ad }, { 2893, 0xfdf2 }, { 2905, 0xf2fe },
- { 2917, 0x3f6f }, { 2929, 0xecda }, { 2939, 0xecb7 }, { 2950, 0xa683 },
- /* 0x5700 */
- { 2957, 0x3f9f }, { 2969, 0xfd7c }, { 2981, 0xf70d }, { 2991, 0xe81d },
- { 2999, 0xfeef }, { 3013, 0x8897 }, { 3020, 0xafd6 }, { 3031, 0xfcff },
- { 3045, 0xbd0d }, { 3054, 0xffb9 }, { 3067, 0x44bf }, { 3076, 0xff70 },
- { 3087, 0xd9de }, { 3098, 0xf0b5 }, { 3107, 0xf2ff }, { 3120, 0x7fff },
- /* 0x5800 */
- { 3135, 0x7fff }, { 3150, 0x7a15 }, { 3158, 0xf7ff }, { 3173, 0xafff },
- { 3187, 0xff91 }, { 3198, 0xffbe }, { 3212, 0xbb3c }, { 3222, 0xfe7e },
- { 3235, 0xcfef }, { 3248, 0xf71f }, { 3260, 0xdfeb }, { 3273, 0xfc6b },
- { 3284, 0xcbe6 }, { 3294, 0xff7f }, { 3309, 0x9b9d }, { 3319, 0xfe1d },
- /* 0x5900 */
- { 3330, 0xf4fc }, { 3341, 0x96f6 }, { 3351, 0xfeb5 }, { 3363, 0x5196 },
- { 3370, 0xc7b1 }, { 3379, 0x15bb }, { 3388, 0x6ea7 }, { 3398, 0xfbff },
- { 3413, 0xe63f }, { 3424, 0xe7dd }, { 3436, 0xd1ff }, { 3448, 0x7fff },
- { 3463, 0xfffb }, { 3478, 0x7f5f }, { 3491, 0xff7b }, { 3505, 0xffff },
- /* 0x5a00 */
- { 3521, 0xbe0f }, { 3531, 0xdfee }, { 3544, 0x7ebb }, { 3556, 0x73e8 },
- { 3565, 0x37ff }, { 3578, 0xffff }, { 3594, 0x7fff }, { 3609, 0xff83 },
- { 3620, 0xdd5e }, { 3631, 0xfeff }, { 3646, 0xdae7 }, { 3657, 0xffff },
- { 3673, 0xffdf }, { 3688, 0xffe8 }, { 3700, 0x7f7f }, { 3714, 0xeffd },
- /* 0x5b00 */
- { 3728, 0xbbae }, { 3739, 0xeefb }, { 3752, 0xfdfb }, { 3766, 0xf115 },
- { 3774, 0xfdfb }, { 3788, 0xbdfb }, { 3801, 0x7b7c }, { 3812, 0xbdff },
- { 3826, 0xdbbf }, { 3839, 0xffed }, { 3853, 0x75fc }, { 3864, 0x8379 },
- { 3872, 0x7cff }, { 3885, 0xc3ff }, { 3897, 0xdfff }, { 3912, 0x856f },
- /* 0x5c00 */
- { 3921, 0xffba }, { 3934, 0xd47f }, { 3945, 0x153d }, { 3953, 0xdf8b },
- { 3964, 0xfff3 }, { 3978, 0x737b }, { 3989, 0xf7bd }, { 4002, 0x5e1a },
- { 4010, 0xbf60 }, { 4019, 0xf63f }, { 4031, 0xffff }, { 4047, 0x05eb },
- { 4055, 0xdfc6 }, { 4066, 0xcfdf }, { 4079, 0xf720 }, { 4087, 0xabf3 },
- /* 0x5d00 */
- { 4098, 0xf8c3 }, { 4107, 0xeff7 }, { 4121, 0xd3fd }, { 4133, 0xf7ff },
- { 4148, 0x5fef }, { 4161, 0x4ae7 }, { 4170, 0x9bac }, { 4179, 0xfe97 },
- { 4191, 0x6ff7 }, { 4204, 0xf6bc }, { 4215, 0xff97 }, { 4228, 0x37f7 },
- { 4240, 0xaacf }, { 4250, 0xe9f6 }, { 4261, 0x49e7 }, { 4270, 0xe2bf },
- /* 0x5e00 */
- { 4281, 0x5e5c }, { 4290, 0xaff6 }, { 4302, 0x6b3f }, { 4313, 0x61d8 },
- { 4320, 0xfd3f }, { 4333, 0xfbb8 }, { 4344, 0xffcf }, { 4358, 0xff7d },
- { 4372, 0xbfdd }, { 4385, 0x1ee4 }, { 4393, 0x7dfd }, { 4406, 0x63ff },
- { 4418, 0x7ff6 }, { 4431, 0xffff }, { 4447, 0xd3ef }, { 4459, 0xdfde },
- /* 0x5f00 */
- { 4472, 0xfdb6 }, { 4484, 0xadbc }, { 4494, 0x63fc }, { 4504, 0x15eb },
- { 4513, 0xff59 }, { 4525, 0x33d3 }, { 4534, 0xbebe }, { 4546, 0xfbdf },
- { 4560, 0x1fef }, { 4572, 0xdbc7 }, { 4583, 0xfff3 }, { 4597, 0xfee6 },
- { 4609, 0xb23f }, { 4619, 0xebf7 }, { 4632, 0xed3b }, { 4643, 0xadba },
- /* 0x6000 */
- { 4653, 0xfe01 }, { 4661, 0x7eff }, { 4675, 0xffff }, { 4691, 0x0abe },
- { 4699, 0x36ff }, { 4711, 0xef3d }, { 4723, 0xfffc }, { 4737, 0xc0a5 },
- { 4743, 0x77fb }, { 4756, 0xfcf5 }, { 4768, 0x019d }, { 4774, 0xffff },
- { 4790, 0xfffb }, { 4805, 0xffba }, { 4818, 0x03df }, { 4827, 0xffff },
- /* 0x6100 */
- { 4843, 0xfffb }, { 4858, 0xbf7d }, { 4871, 0xdb8c }, { 4880, 0xe8d5 },
- { 4889, 0xfff7 }, { 4904, 0xff7d }, { 4918, 0xddff }, { 4932, 0x76ff },
- { 4945, 0x7e8f }, { 4956, 0xbf7f }, { 4970, 0xff96 }, { 4982, 0xd7ff },
- { 4996, 0xbfef }, { 5010, 0xc549 }, { 5017, 0x6ffd }, { 5030, 0xffe7 },
- /* 0x6200 */
- { 5044, 0x779b }, { 5055, 0x8e77 }, { 5065, 0x7ebf }, { 5078, 0xe6dd },
- { 5089, 0x7fcf }, { 5102, 0x5f1f }, { 5113, 0xe17f }, { 5124, 0xfedf },
- { 5138, 0xd7ff }, { 5152, 0x21ff }, { 5162, 0xff50 }, { 5172, 0xfb7b },
- { 5185, 0xfffc }, { 5199, 0x9fff }, { 5213, 0xf820 }, { 5219, 0xffff },
- /* 0x6300 */
- { 5235, 0xfb8f }, { 5247, 0x017b }, { 5254, 0xff00 }, { 5262, 0x7ffe },
- { 5276, 0xffff }, { 5292, 0x07f3 }, { 5301, 0xfbb0 }, { 5311, 0xbfe7 },
- { 5324, 0xffbf }, { 5339, 0xfbd7 }, { 5352, 0xffbf }, { 5367, 0x6203 },
- { 5372, 0xffff }, { 5388, 0xffef }, { 5403, 0xefff }, { 5418, 0x5b7f },
- /* 0x6400 */
- { 5430, 0xfec0 }, { 5439, 0xddfd }, { 5452, 0xfdff }, { 5467, 0xeffd },
- { 5481, 0x680b }, { 5487, 0xff1f }, { 5500, 0xfbe3 }, { 5512, 0xbfff },
- { 5527, 0xbfa4 }, { 5537, 0xf7ef }, { 5551, 0xfa7d }, { 5563, 0xf85f },
- { 5574, 0xeebf }, { 5587, 0x2fdd }, { 5598, 0xbfff }, { 5613, 0xfd9f },
- /* 0x6500 */
- { 5626, 0xf6db }, { 5638, 0xfbfb }, { 5652, 0xfe7f }, { 5666, 0xebfd },
- { 5679, 0xa76a }, { 5688, 0xf3fa }, { 5700, 0xbdfc }, { 5712, 0x9ffc },
- { 5724, 0x1bff }, { 5736, 0xfaf7 }, { 5749, 0xddb7 }, { 5761, 0xfbed },
- { 5774, 0xf87e }, { 5785, 0xecdf }, { 5797, 0xf36f }, { 5809, 0xbc3f },
- /* 0x6600 */
- { 5820, 0xfffd }, { 5835, 0xf13f }, { 5846, 0xe9ff }, { 5859, 0x067f },
- { 5868, 0x9fbe }, { 5880, 0xfe8e }, { 5891, 0xddfe }, { 5904, 0x7fdf },
- { 5918, 0x7ff1 }, { 5930, 0xa7f7 }, { 5942, 0xef17 }, { 5953, 0xefff },
- { 5968, 0xffd1 }, { 5980, 0x7f44 }, { 5989, 0x7b59 }, { 5999, 0xd3df },
- /* 0x6700 */
- { 6011, 0xff3f }, { 6025, 0xebfd }, { 6038, 0x7def }, { 6051, 0xff7a },
- { 6064, 0xfbf0 }, { 6075, 0xf6eb }, { 6087, 0xbc87 }, { 6096, 0xffff },
- { 6112, 0xfafa }, { 6124, 0xb7bf }, { 6137, 0xd011 }, { 6142, 0x8fff },
- { 6155, 0xff7f }, { 6170, 0xffdf }, { 6185, 0xfefc }, { 6198, 0xd7ff },
- /* 0x6800 */
- { 6212, 0x201f }, { 6218, 0xfddd }, { 6231, 0xef67 }, { 6243, 0x7ffe },
- { 6257, 0xffff }, { 6273, 0x207b }, { 6280, 0xe820 }, { 6285, 0xfbf6 },
- { 6298, 0x9fff }, { 6312, 0xb9df }, { 6324, 0xffdf }, { 6339, 0x227f },
- { 6348, 0x7ff8 }, { 6360, 0xf5ff }, { 6374, 0xdfdb }, { 6387, 0x3fff },
- /* 0x6900 */
- { 6401, 0xffff }, { 6417, 0x0fbf }, { 6428, 0x9420 }, { 6432, 0xfbfd },
- { 6446, 0xdf7f }, { 6460, 0xfffe }, { 6475, 0xffff }, { 6491, 0x0fff },
- { 6503, 0x646d }, { 6511, 0xdffb }, { 6525, 0xffff }, { 6541, 0xfaff },
- { 6555, 0xfe5f }, { 6568, 0x027b }, { 6575, 0x7bf6 }, { 6587, 0xffde },
- /* 0x6a00 */
- { 6601, 0xbfff }, { 6616, 0xfffa }, { 6630, 0x39eb }, { 6640, 0xff3c },
- { 6652, 0xfbfb }, { 6666, 0xefff }, { 6681, 0xafff }, { 6695, 0xc452 },
- { 6701, 0xf6bf }, { 6714, 0xfeff }, { 6729, 0xf9ff }, { 6743, 0x6ffe },
- { 6756, 0xbfec }, { 6768, 0xff1b }, { 6780, 0xdda3 }, { 6790, 0x1f4b },
- /* 0x6b00 */
- { 6799, 0x8f3d }, { 6809, 0x67cf }, { 6820, 0xb12b }, { 6828, 0xfffe },
- { 6843, 0x7fee }, { 6856, 0xdaf7 }, { 6868, 0xa4ff }, { 6879, 0xcfd4 },
- { 6889, 0xf75f }, { 6902, 0xcbf2 }, { 6912, 0xecfd }, { 6924, 0xb4ed },
- { 6934, 0xbffb }, { 6948, 0x5ddd }, { 6959, 0x9ddf }, { 6971, 0xff8d },
- /* 0x6c00 */
- { 6983, 0xbb7f }, { 6996, 0xbf7b }, { 7009, 0xddfb }, { 7022, 0xeffb },
- { 7036, 0xfe4f }, { 7048, 0xffb5 }, { 7061, 0xefe3 }, { 7073, 0xef7f },
- { 7087, 0xffff }, { 7103, 0xbf7d }, { 7116, 0xfc04 }, { 7123, 0xffdf },
- { 7138, 0xfeff }, { 7153, 0xfeff }, { 7168, 0xffaf }, { 7182, 0x822f },
- /* 0x6d00 */
- { 7189, 0xffff }, { 7205, 0xefc7 }, { 7217, 0xfff5 }, { 7231, 0xffff },
- { 7247, 0x4007 }, { 7251, 0xdf80 }, { 7259, 0xf7ff }, { 7274, 0xfff7 },
- { 7289, 0xffff }, { 7305, 0x01ff }, { 7314, 0xdc30 }, { 7321, 0xffbe },
- { 7335, 0xbff5 }, { 7348, 0xffff }, { 7364, 0xff7f }, { 7379, 0x7eff },
- /* 0x6e00 */
- { 7393, 0x843d }, { 7400, 0xbf20 }, { 7408, 0xffff }, { 7424, 0xff7f },
- { 7439, 0xeefb }, { 7452, 0xff7f }, { 7467, 0xcbff }, { 7480, 0x13de },
- { 7489, 0xeb40 }, { 7496, 0xffdd }, { 7510, 0xccff }, { 7522, 0xffff },
- { 7538, 0xffff }, { 7554, 0x3f7f }, { 7567, 0xfb04 }, { 7575, 0xfff6 },
- /* 0x6f00 */
- { 7589, 0xffff }, { 7605, 0xd7fc }, { 7617, 0xfeff }, { 7632, 0xffff },
- { 7648, 0xc01b }, { 7654, 0xfdff }, { 7669, 0xfedf }, { 7683, 0xffdd },
- { 7697, 0x7ff7 }, { 7711, 0xe0fd }, { 7721, 0xffff }, { 7737, 0xff7f },
- { 7752, 0xffdf }, { 7767, 0xff38 }, { 7778, 0xfbdf }, { 7792, 0xddd7 },
- /* 0x7000 */
- { 7804, 0xfefb }, { 7818, 0xfff2 }, { 7831, 0x9fdf }, { 7844, 0xdfbf },
- { 7858, 0x3f7f }, { 7871, 0xfdf7 }, { 7885, 0x9fff }, { 7899, 0xf7f3 },
- { 7912, 0xce7e }, { 7923, 0x877e }, { 7933, 0xfafb }, { 7946, 0x7fbb },
- { 7959, 0xfdf1 }, { 7971, 0xf7ff }, { 7986, 0x8017 }, { 7991, 0xfffb },
- /* 0x7100 */
- { 8006, 0x7e75 }, { 8017, 0xfe89 }, { 8027, 0xdb6f }, { 8039, 0x4c7f },
- { 8049, 0xfeff }, { 8064, 0xf75f }, { 8077, 0x5fff }, { 8091, 0x7def },
- { 8104, 0xd7f7 }, { 8117, 0xffd7 }, { 8131, 0xb7bf }, { 8144, 0xf7bf },
- { 8158, 0xcfff }, { 8172, 0xbf77 }, { 8185, 0x79f7 }, { 8197, 0xfb77 },
- /* 0x7200 */
- { 8210, 0xf6ef }, { 8223, 0xeef9 }, { 8235, 0x7fdc }, { 8247, 0xef61 },
- { 8257, 0x9fd7 }, { 8269, 0xffed }, { 8283, 0xd6cf }, { 8294, 0xfbdd },
- { 8307, 0xfbf7 }, { 8321, 0xedff }, { 8335, 0xf7fe }, { 8349, 0xa435 },
- { 8356, 0x7e7f }, { 8369, 0x97d7 }, { 8380, 0x0f5f }, { 8390, 0xffd8 },
- /* 0x7300 */
- { 8402, 0x9d97 }, { 8412, 0x7bcf }, { 8424, 0x7fec }, { 8436, 0xdfff },
- { 8451, 0xf73f }, { 8464, 0xef87 }, { 8475, 0xdfe7 }, { 8488, 0xfdff },
- { 8503, 0xdfff }, { 8518, 0xf1fc }, { 8529, 0x3ff7 }, { 8542, 0xdffc },
- { 8555, 0xffed }, { 8569, 0x7ffd }, { 8583, 0xefff }, { 8598, 0xfff8 },
- /* 0x7400 */
- { 8611, 0x3fff }, { 8625, 0xfef6 }, { 8638, 0xff7f }, { 8653, 0x97ff },
- { 8666, 0xefff }, { 8681, 0xfeff }, { 8696, 0xffbd }, { 8710, 0xf67f },
- { 8723, 0x3fef }, { 8736, 0xdfb5 }, { 8748, 0xaffb }, { 8761, 0xeff7 },
- { 8775, 0x9d2f }, { 8785, 0xfff9 }, { 8799, 0x53ff }, { 8811, 0xe9f7 },
- /* 0x7500 */
- { 8823, 0xf9bd }, { 8835, 0xf7ff }, { 8850, 0xff66 }, { 8862, 0xefbf },
- { 8876, 0xfdc5 }, { 8887, 0xbe3a }, { 8897, 0xfcfd }, { 8910, 0xe7c5 },
- { 8920, 0xfcd9 }, { 8931, 0x6737 }, { 8941, 0x0cbc }, { 8948, 0xff7f },
- { 8963, 0xfdbf }, { 8977, 0xffb7 }, { 8991, 0xa0df }, { 9000, 0xffff },
- /* 0x7600 */
- { 9016, 0xbf8f }, { 9028, 0xfe7b }, { 9041, 0xb3ff }, { 9054, 0x3d3f },
- { 9065, 0xf3cd }, { 9076, 0x97df }, { 9088, 0xf6f7 }, { 9101, 0xff7f },
- { 9116, 0xcfd6 }, { 9127, 0x7e6d }, { 9138, 0xec72 }, { 9147, 0xedb1 },
- { 9157, 0x777c }, { 9168, 0xfe5c }, { 9179, 0xf6fa }, { 9191, 0x5fbf },
- /* 0x7700 */
- { 9204, 0xdfba }, { 9216, 0xee2f }, { 9227, 0xabfd }, { 9239, 0x7ffe },
- { 9253, 0xfcf9 }, { 9265, 0xdf74 }, { 9276, 0xffef }, { 9291, 0xff84 },
- { 9301, 0xfbbf }, { 9315, 0xffaa }, { 9327, 0xbdaf }, { 9339, 0xfeff },
- { 9354, 0xfebc }, { 9366, 0x7fb9 }, { 9378, 0xf3ed }, { 9390, 0x7f9f },
- /* 0x7800 */
- { 9403, 0xf36c }, { 9413, 0xf11f }, { 9423, 0xffef }, { 9438, 0x33bf },
- { 9449, 0x7fbc }, { 9461, 0x701f }, { 9469, 0xff75 }, { 9482, 0xde03 },
- { 9490, 0xf3fb }, { 9503, 0xc7fa }, { 9514, 0xbfbf }, { 9528, 0x5f5f },
- { 9540, 0xffba }, { 9553, 0xedbf }, { 9566, 0xf7bf }, { 9580, 0xfebf },
- /* 0x7900 */
- { 9594, 0x5276 }, { 9602, 0x7a9f }, { 9613, 0xfffa }, { 9627, 0xff7e },
- { 9641, 0x9ff7 }, { 9654, 0xffff }, { 9670, 0x2fbf }, { 9682, 0xf61f },
- { 9693, 0xedcf }, { 9705, 0xbfff }, { 9720, 0x7ff7 }, { 9734, 0xefdf },
- { 9748, 0xfb73 }, { 9760, 0xf176 }, { 9770, 0x7edd }, { 9782, 0x0dd2 },
- /* 0x7a00 */
- { 9789, 0x3d7d }, { 9800, 0xdfbf }, { 9814, 0xed45 }, { 9823, 0xfe83 },
- { 9833, 0x7ff9 }, { 9846, 0x9dd0 }, { 9854, 0x7ba7 }, { 9865, 0xef73 },
- { 9877, 0x9ffb }, { 9890, 0xc3ff }, { 9902, 0xdf0d }, { 9912, 0xddff },
- { 9926, 0x8fbf }, { 9938, 0xbf0a }, { 9947, 0xeefd }, { 9960, 0xeec0 },
- /* 0x7b00 */
- { 9968, 0xdf73 }, { 9980, 0xef1f }, { 9992, 0xfffd }, { 10007, 0x0b3f },
- { 10016, 0xfffd }, { 10031, 0x0177 }, { 10038, 0xf2ff }, { 10051, 0x09ff },
- { 10061, 0xfdb4 }, { 10072, 0x3bf7 }, { 10084, 0xb01f }, { 10092, 0x43b6 },
- { 10100, 0xded3 }, { 10111, 0xff31 }, { 10122, 0x1fff }, { 10135, 0xff9f },
- /* 0x7c00 */
- { 10149, 0xfeef }, { 10163, 0xfa27 }, { 10173, 0x3fef }, { 10186, 0xfba9 },
- { 10197, 0x37bd }, { 10208, 0xbedb }, { 10220, 0xfef9 }, { 10233, 0xff3d },
- { 10246, 0x777b }, { 10258, 0xd1f6 }, { 10268, 0xd1ee }, { 10278, 0xff3e },
- { 10291, 0x7fac }, { 10302, 0xf6ff }, { 10316, 0xf5c5 }, { 10326, 0x7bff },
- /* 0x7d00 */
- { 10340, 0xffff }, { 10356, 0xffff }, { 10372, 0xdb27 }, { 10382, 0xff6f },
- { 10396, 0xe4ff }, { 10408, 0xfd7f }, { 10422, 0xefce }, { 10434, 0xbe0f },
- { 10444, 0xfb7b }, { 10457, 0xf0de }, { 10467, 0xffdf }, { 10482, 0xffbf },
- { 10497, 0xfef7 }, { 10511, 0xff9d }, { 10524, 0xd7fb }, { 10537, 0x6eff },
- /* 0x7e00 */
- { 10550, 0xff88 }, { 10560, 0xfcff }, { 10574, 0xeebf }, { 10587, 0xffff },
- { 10603, 0x13ff }, { 10614, 0xdfff }, { 10629, 0xffaf }, { 10643, 0xfffd },
- { 10658, 0xfdc7 }, { 10670, 0x9ffe }, { 10683, 0x1010 }, { 10685, 0x0400 },
- { 10686, 0x8080 }, { 10688, 0x8000 }, { 10689, 0x0000 }, { 10689, 0x0000 },
- /* 0x7f00 */
- { 10689, 0x0040 }, { 10690, 0x0000 }, { 10690, 0x0000 }, { 10690, 0xe7c0 },
- { 10698, 0xffbb }, { 10712, 0xf93f }, { 10724, 0x7feb }, { 10737, 0xffef },
- { 10752, 0xffe8 }, { 10764, 0x7cfe }, { 10776, 0xf3ff }, { 10790, 0xffff },
- { 10806, 0xfeaf }, { 10819, 0xf8b7 }, { 10830, 0xffef }, { 10845, 0xffbf },
- /* 0x8000 */
- { 10860, 0xf9ff }, { 10874, 0xfbf7 }, { 10888, 0xd773 }, { 10899, 0xfafb },
- { 10912, 0x85c8 }, { 10918, 0x7d57 }, { 10929, 0x90de }, { 10937, 0xe3ef },
- { 10949, 0x9ef5 }, { 10960, 0xbf6d }, { 10972, 0xeeae }, { 10983, 0x35f6 },
- { 10993, 0xf7fc }, { 11006, 0x7ff3 }, { 11019, 0xb27b }, { 11029, 0x7f7f },
- /* 0x8100 */
- { 11043, 0x57ef }, { 11055, 0xeff4 }, { 11067, 0xbebe }, { 11079, 0x6695 },
- { 11087, 0xfddc }, { 11099, 0x5e7f }, { 11111, 0xeaf7 }, { 11123, 0x97df },
- { 11135, 0xbfdd }, { 11148, 0xffa8 }, { 11159, 0x5fed }, { 11171, 0xfeff },
- { 11186, 0xb7ff }, { 11200, 0xefa7 }, { 11212, 0xf7ff }, { 11227, 0xdfdc },
- /* 0x8200 */
- { 11239, 0x3fb7 }, { 11251, 0xfd77 }, { 11264, 0xbf67 }, { 11276, 0xf7fc },
- { 11289, 0xcab5 }, { 11298, 0xdfff }, { 11313, 0xfb7e }, { 11326, 0xfff6 },
- { 11340, 0xecb9 }, { 11350, 0xef1f }, { 11362, 0xffff }, { 11378, 0xfffb },
- { 11393, 0x841d }, { 11399, 0xdbff }, { 11413, 0xfdff }, { 11428, 0xffff },
- /* 0x8300 */
- { 11444, 0x3bff }, { 11457, 0x7fc0 }, { 11466, 0xbff5 }, { 11479, 0xbffe },
- { 11493, 0xffbf }, { 11508, 0x00df }, { 11515, 0x804c }, { 11519, 0xfdf8 },
- { 11531, 0xffea }, { 11544, 0x7fff }, { 11559, 0xdffd }, { 11573, 0xe201 },
- { 11578, 0xffff }, { 11594, 0xfbfa }, { 11607, 0xffbf }, { 11622, 0xff7f },
- /* 0x8400 */
- { 11637, 0xfefa }, { 11650, 0x195f }, { 11659, 0xfa5b }, { 11670, 0xffff },
- { 11686, 0x7ffd }, { 11700, 0xffff }, { 11716, 0xfbff }, { 11731, 0xe7ff },
- { 11745, 0xe145 }, { 11752, 0xffdf }, { 11767, 0xff9f }, { 11781, 0xff57 },
- { 11794, 0xfef7 }, { 11808, 0x4cdf }, { 11818, 0xdfb6 }, { 11830, 0xffdf },
- /* 0x8500 */
- { 11845, 0xffed }, { 11859, 0xf7ff }, { 11874, 0xfffb }, { 11889, 0x691b },
- { 11897, 0x7fff }, { 11912, 0xeffe }, { 11926, 0xffff }, { 11942, 0x5feb },
- { 11954, 0xffff }, { 11970, 0xfff3 }, { 11984, 0x87df }, { 11995, 0xe7fb },
- { 12008, 0xebff }, { 12022, 0xf7e7 }, { 12035, 0xff7f }, { 12050, 0xffc7 },
- /* 0x8600 */
- { 12063, 0xbef7 }, { 12076, 0xdfd3 }, { 12088, 0xf7ff }, { 12103, 0xdf7e },
- { 12116, 0x79ed }, { 12127, 0xda7d }, { 12138, 0xffbe }, { 12152, 0x5e9f },
- { 12163, 0x7ce0 }, { 12171, 0x77ff }, { 12185, 0xa7bf }, { 12197, 0xffff },
- { 12213, 0x1bff }, { 12225, 0xffdb }, { 12239, 0xbf5c }, { 12250, 0x4fe0 },
- /* 0x8700 */
- { 12258, 0x7fff }, { 12273, 0x5f0e }, { 12282, 0x77ff }, { 12296, 0xddbf },
- { 12309, 0xf04f }, { 12318, 0xffff }, { 12334, 0xffff }, { 12350, 0x2ffb },
- { 12362, 0xbbfe }, { 12375, 0xfddf }, { 12389, 0xfe3c }, { 12400, 0xffff },
- { 12416, 0x5f7f }, { 12429, 0xffde }, { 12443, 0xfdff }, { 12458, 0xdefc },
- /* 0x8800 */
- { 12470, 0xbf7f }, { 12484, 0xbbfb }, { 12497, 0xffff }, { 12513, 0xfbef },
- { 12527, 0xfd7f }, { 12541, 0x6eec }, { 12551, 0xefbf }, { 12565, 0xf2f7 },
- { 12577, 0xfb9f }, { 12590, 0xdfef }, { 12604, 0x5d97 }, { 12614, 0xf7f6 },
- { 12627, 0xfea7 }, { 12639, 0xfff5 }, { 12653, 0xd9c2 }, { 12661, 0xffff },
- /* 0x8900 */
- { 12677, 0x5ee7 }, { 12688, 0xc7ff }, { 12701, 0xfefe }, { 12715, 0x79ef },
- { 12727, 0xbade }, { 12738, 0xffdf }, { 12753, 0xfe7f }, { 12767, 0xdede },
- { 12779, 0x8fef }, { 12791, 0xf9fa }, { 12803, 0xf6fe }, { 12816, 0xf6c4 },
- { 12825, 0x0043 }, { 12828, 0xbe7c }, { 12839, 0x3bff }, { 12852, 0xdddf },
- /* 0x8a00 */
- { 12865, 0xd59d }, { 12875, 0xf9ef }, { 12888, 0x3eac }, { 12897, 0xff53 },
- { 12909, 0xf773 }, { 12921, 0x4bf7 }, { 12932, 0x7bcf }, { 12944, 0xdeff },
- { 12958, 0xb8fe }, { 12969, 0x577f }, { 12981, 0x8ffb }, { 12993, 0xff55 },
- { 13005, 0xabfd }, { 13017, 0xfffe }, { 13032, 0xedd7 }, { 13044, 0xddff },
- /* 0x8b00 */
- { 13058, 0xfdf7 }, { 13072, 0xffff }, { 13088, 0xfdfd }, { 13102, 0xfeeb },
- { 13115, 0xffef }, { 13130, 0xf7ff }, { 13145, 0xbfed }, { 13158, 0xef91 },
- { 13168, 0x5d7f }, { 13180, 0xdf7d }, { 13193, 0x0001 }, { 13194, 0x4000 },
- { 13195, 0x0000 }, { 13195, 0x0000 }, { 13195, 0x0004 }, { 13196, 0x0000 },
- /* 0x8c00 */
- { 13196, 0x0000 }, { 13196, 0x0000 }, { 13196, 0x0000 }, { 13196, 0xfa80 },
- { 13203, 0xffee }, { 13217, 0xb4f3 }, { 13227, 0xbf76 }, { 13239, 0x2fef },
- { 13251, 0xb677 }, { 13262, 0xffbf }, { 13277, 0xbfbf }, { 13291, 0xfffd },
- { 13306, 0xb5bf }, { 13318, 0xfefe }, { 13332, 0x7fff }, { 13347, 0x7fbf },
- /* 0x8d00 */
- { 13361, 0xbffd }, { 13375, 0x3bff }, { 13388, 0x0000 }, { 13388, 0x0000 },
- { 13388, 0x0000 }, { 13388, 0x0000 }, { 13388, 0xfbd0 }, { 13398, 0x2fdd },
- { 13409, 0xf637 }, { 13420, 0x9a7f }, { 13431, 0xffeb }, { 13445, 0xd6fc },
- { 13456, 0xf9ef }, { 13469, 0xbffb }, { 13483, 0xdfdf }, { 13497, 0xf41f },
- /* 0x8e00 */
- { 13507, 0xe6ff }, { 13520, 0xffff }, { 13536, 0x6fff }, { 13550, 0xf77b },
- { 13563, 0xfff7 }, { 13578, 0xfef9 }, { 13591, 0xb7ff }, { 13605, 0x5dfe },
- { 13617, 0x7ff7 }, { 13631, 0xe5ff }, { 13644, 0x3ffb }, { 13657, 0x3645 },
- { 13664, 0xfe0d }, { 13674, 0xfd9e }, { 13686, 0xfbf7 }, { 13700, 0xdff6 },
- /* 0x8f00 */
- { 13713, 0x6fef }, { 13726, 0xffff }, { 13742, 0xf679 }, { 13753, 0xcbfd },
- { 13765, 0xefff }, { 13780, 0xffff }, { 13796, 0x40df }, { 13804, 0x0000 },
- { 13804, 0x0000 }, { 13804, 0x9808 }, { 13808, 0xe1e9 }, { 13817, 0xdfff },
- { 13832, 0xfe76 }, { 13844, 0x04ff }, { 13853, 0x6d7f }, { 13865, 0xfff1 },
- /* 0x9000 */
- { 13878, 0xb97f }, { 13890, 0xfef7 }, { 13904, 0xe01f }, { 13912, 0xf1fe },
- { 13924, 0xfe96 }, { 13935, 0x7b7f }, { 13948, 0xfb9f }, { 13961, 0xfffd },
- { 13976, 0xadff }, { 13989, 0xcbb3 }, { 13999, 0xc5ef }, { 14010, 0xe97f },
- { 14022, 0x4dba }, { 14031, 0xbff0 }, { 14042, 0xbf3f }, { 14055, 0xfe3f },
- /* 0x9100 */
- { 14068, 0xebff }, { 14082, 0xffd7 }, { 14096, 0xffdf }, { 14111, 0xcf7f },
- { 14124, 0xfffb }, { 14139, 0xd7ef }, { 14152, 0xd7bf }, { 14165, 0x17fd },
- { 14176, 0xfeff }, { 14191, 0xfe0f }, { 14202, 0xffaf }, { 14216, 0x7eff },
- { 14230, 0xfaff }, { 14244, 0xb7fb }, { 14257, 0x7ffc }, { 14270, 0xe7fa },
- /* 0x9200 */
- { 14282, 0xf7ff }, { 14297, 0x56ff }, { 14309, 0x6dfa }, { 14320, 0xf7ff },
- { 14335, 0xff73 }, { 14348, 0xedff }, { 14362, 0xf8ff }, { 14375, 0xffc5 },
- { 14387, 0xffff }, { 14403, 0x3ffa }, { 14415, 0x5fff }, { 14429, 0xdefe },
- { 14442, 0xffff }, { 14458, 0xebbf }, { 14471, 0xdffb }, { 14485, 0xffdf },
- /* 0x9300 */
- { 14500, 0xfbdf }, { 14514, 0xef7d }, { 14527, 0xffff }, { 14543, 0x137b },
- { 14552, 0xffff }, { 14568, 0xdff7 }, { 14582, 0x7fff }, { 14597, 0x7ffb },
- { 14611, 0xf7ff }, { 14626, 0xfff7 }, { 14641, 0xf7ff }, { 14656, 0xa9bf },
- { 14667, 0xfddd }, { 14680, 0xffff }, { 14696, 0x51df }, { 14706, 0xfffb },
- /* 0x9400 */
- { 14721, 0xffdb }, { 14735, 0x2bff }, { 14747, 0x7ff1 }, { 14759, 0xffef },
- { 14774, 0xbffd }, { 14788, 0x69b7 }, { 14798, 0xffbd }, { 14812, 0xfbff },
- { 14827, 0x002f }, { 14832, 0x8000 }, { 14833, 0x0004 }, { 14834, 0x0000 },
- { 14834, 0x000a }, { 14836, 0x1000 }, { 14837, 0x0000 }, { 14837, 0x0040 },
- /* 0x9500 */
- { 14838, 0x0000 }, { 14838, 0x0000 }, { 14838, 0x2000 }, { 14839, 0x0000 },
- { 14839, 0x0080 }, { 14840, 0x0000 }, { 14840, 0x0000 }, { 14840, 0xbd80 },
- { 14847, 0xfb6d }, { 14859, 0xdbdf }, { 14872, 0x7fff }, { 14887, 0xfee3 },
- { 14899, 0x3fe9 }, { 14910, 0xdc7f }, { 14922, 0x013f }, { 14929, 0x0010 },
- /* 0x9600 */
- { 14930, 0x0000 }, { 14930, 0x7000 }, { 14933, 0xf51f }, { 14944, 0xbf0f },
- { 14955, 0xfc3f }, { 14967, 0xf95b }, { 14978, 0xbe1e }, { 14988, 0x79ff },
- { 15001, 0xeffb }, { 15015, 0x5bfe }, { 15027, 0x57be }, { 15038, 0xbb5b },
- { 15049, 0x7fff }, { 15064, 0xfffc }, { 15078, 0x872e }, { 15086, 0xaff7 },
- /* 0x9700 */
- { 15099, 0xebfd }, { 15112, 0xfb4f }, { 15124, 0xdfff }, { 15139, 0xe767 },
- { 15150, 0x0bdf }, { 15160, 0xfde6 }, { 15172, 0x7747 }, { 15182, 0xfddf },
- { 15196, 0xefbf }, { 15210, 0xff90 }, { 15220, 0x7d7f }, { 15233, 0xefde },
- { 15246, 0xfbff }, { 15261, 0xf3fd }, { 15274, 0x606b }, { 15281, 0xef6f },
- /* 0x9800 */
- { 15294, 0xf5ff }, { 15308, 0xf9ff }, { 15322, 0xebdb }, { 15334, 0x0bbd },
- { 15343, 0xfffa }, { 15357, 0xfb8f }, { 15369, 0x9ffd }, { 15382, 0x003f },
- { 15388, 0x0000 }, { 15388, 0x0000 }, { 15388, 0xf300 }, { 15394, 0xffde },
- { 15408, 0x5fdf }, { 15421, 0xd800 }, { 15425, 0xbeef }, { 15438, 0x7676 },
- /* 0x9900 */
- { 15448, 0x57ad }, { 15458, 0xdfff }, { 15473, 0xffb2 }, { 15485, 0xffaf },
- { 15499, 0x7faf }, { 15512, 0xfbff }, { 15527, 0x000e }, { 15530, 0x0000 },
- { 15530, 0x0000 }, { 15530, 0x7bc0 }, { 15538, 0xfdfa }, { 15551, 0x3f3f },
- { 15563, 0xfabe }, { 15575, 0xbfff }, { 15590, 0x76ff }, { 15603, 0xfff3 },
- /* 0x9a00 */
- { 15617, 0xfefe }, { 15631, 0xfe73 }, { 15643, 0xfeff }, { 15658, 0xfff7 },
- { 15673, 0xf77f }, { 15687, 0xdffd }, { 15701, 0x1ffd }, { 15713, 0x0000 },
- { 15713, 0x8000 }, { 15714, 0x0000 }, { 15714, 0xa900 }, { 15718, 0xffdf },
- { 15733, 0xa4c7 }, { 15741, 0x91ff }, { 15752, 0xf8cf }, { 15763, 0xfede },
- /* 0x9b00 */
- { 15776, 0xff7e }, { 15790, 0xc7f7 }, { 15802, 0xefbd }, { 15815, 0xdebe },
- { 15827, 0xfd7f }, { 15841, 0x8f77 }, { 15852, 0x93d3 }, { 15861, 0xfcf3 },
- { 15873, 0xe9ef }, { 15885, 0xecaf }, { 15896, 0xed77 }, { 15908, 0xa361 },
- { 15915, 0x87db }, { 15925, 0x7ef8 }, { 15936, 0x3ff7 }, { 15949, 0xa193 },
- /* 0x9c00 */
- { 15956, 0x7fe4 }, { 15967, 0xb8bd }, { 15977, 0xbb7b }, { 15989, 0xfefe },
- { 16003, 0xff73 }, { 16016, 0xe3fd }, { 16028, 0x61cd }, { 16036, 0x1fbe },
- { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x0000 },
- { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x26e0 }, { 16053, 0xbefe },
- /* 0x9d00 */
- { 16066, 0x13fd }, { 16076, 0xebf5 }, { 16088, 0xe36f }, { 16099, 0xebdb },
- { 16111, 0xde3f }, { 16123, 0xffdf }, { 16138, 0xff83 }, { 16149, 0xfbbf },
- { 16163, 0x1fff }, { 16176, 0xffdd }, { 16190, 0xbfff }, { 16205, 0xfffe },
- { 16220, 0xffbf }, { 16235, 0xffff }, { 16251, 0xfb7e }, { 16264, 0xfffd },
- /* 0x9e00 */
- { 16279, 0xfeff }, { 16294, 0xffbf }, { 16309, 0x0000 }, { 16309, 0x0000 },
- { 16309, 0x0000 }, { 16309, 0x0000 }, { 16309, 0x0000 }, { 16309, 0xbe20 },
- { 16316, 0x7fff }, { 16331, 0xffff }, { 16347, 0xfff7 }, { 16362, 0xf8f3 },
- { 16373, 0xf1df }, { 16385, 0xfd7b }, { 16398, 0xe9f5 }, { 16409, 0xffff },
- /* 0x9f00 */
- { 16425, 0xc7c7 }, { 16435, 0x5fed }, { 16447, 0xfffd }, { 16462, 0x6bff },
- { 16475, 0xffff }, { 16491, 0xfffd }, { 16506, 0xdeff }, { 16520, 0xcff7 },
- { 16533, 0x6000 }, { 16535, 0x9337 }, { 16544, 0x0035 },
-};
-static const Summary16 big5hkscs_uni2indx_pagee0[419] = {
- /* 0xe000 */
- { 16548, 0xffff }, { 16564, 0xffff }, { 16580, 0xffff }, { 16596, 0xffff },
- { 16612, 0xffff }, { 16628, 0xffff }, { 16644, 0xffff }, { 16660, 0xffff },
- { 16676, 0xffff }, { 16692, 0xffff }, { 16708, 0xffff }, { 16724, 0xffff },
- { 16740, 0xffff }, { 16756, 0xffff }, { 16772, 0xffff }, { 16788, 0xffff },
- /* 0xe100 */
- { 16804, 0xffff }, { 16820, 0xffff }, { 16836, 0xffff }, { 16852, 0xffff },
- { 16868, 0xffff }, { 16884, 0xffff }, { 16900, 0xffff }, { 16916, 0xffff },
- { 16932, 0xffff }, { 16948, 0xffff }, { 16964, 0xffff }, { 16980, 0xffff },
- { 16996, 0xffff }, { 17012, 0xffff }, { 17028, 0xffff }, { 17044, 0xffff },
- /* 0xe200 */
- { 17060, 0xffff }, { 17076, 0xffff }, { 17092, 0xffff }, { 17108, 0xffff },
- { 17124, 0xffff }, { 17140, 0xffff }, { 17156, 0xffff }, { 17172, 0xffff },
- { 17188, 0xffff }, { 17204, 0xffff }, { 17220, 0xffff }, { 17236, 0xffff },
- { 17252, 0xffff }, { 17268, 0xffff }, { 17284, 0xffff }, { 17300, 0xffff },
- /* 0xe300 */
- { 17316, 0xffff }, { 17332, 0xffff }, { 17348, 0xffff }, { 17364, 0xffff },
- { 17380, 0xffff }, { 17396, 0xffff }, { 17412, 0xffff }, { 17428, 0xffff },
- { 17444, 0xffff }, { 17460, 0xffff }, { 17476, 0xffff }, { 17492, 0xffff },
- { 17508, 0xffff }, { 17524, 0xffff }, { 17540, 0xffff }, { 17556, 0xffff },
- /* 0xe400 */
- { 17572, 0xffff }, { 17588, 0xffff }, { 17604, 0xffff }, { 17620, 0xffff },
- { 17636, 0xffff }, { 17652, 0xffff }, { 17668, 0xffff }, { 17684, 0xffff },
- { 17700, 0xffff }, { 17716, 0xffff }, { 17732, 0xffff }, { 17748, 0xffff },
- { 17764, 0xffff }, { 17780, 0xffff }, { 17796, 0xffff }, { 17812, 0xffff },
- /* 0xe500 */
- { 17828, 0xffff }, { 17844, 0xffff }, { 17860, 0xffff }, { 17876, 0xffff },
- { 17892, 0xffff }, { 17908, 0xffff }, { 17924, 0xffff }, { 17940, 0xffff },
- { 17956, 0xffff }, { 17972, 0xffff }, { 17988, 0xffff }, { 18004, 0xffff },
- { 18020, 0xffff }, { 18036, 0xffff }, { 18052, 0xffff }, { 18068, 0xffff },
- /* 0xe600 */
- { 18084, 0xffff }, { 18100, 0xffff }, { 18116, 0xffff }, { 18132, 0xffff },
- { 18148, 0xffff }, { 18164, 0xffff }, { 18180, 0xffff }, { 18196, 0xffff },
- { 18212, 0xffff }, { 18228, 0xffff }, { 18244, 0xffff }, { 18260, 0xffff },
- { 18276, 0xffff }, { 18292, 0xffff }, { 18308, 0xffff }, { 18324, 0xffff },
- /* 0xe700 */
- { 18340, 0xffff }, { 18356, 0xffff }, { 18372, 0xffff }, { 18388, 0xffff },
- { 18404, 0xffff }, { 18420, 0xffff }, { 18436, 0xffff }, { 18452, 0xffff },
- { 18468, 0xffff }, { 18484, 0xffff }, { 18500, 0xffff }, { 18516, 0xffff },
- { 18532, 0xffff }, { 18548, 0xffff }, { 18564, 0xffff }, { 18580, 0xffff },
- /* 0xe800 */
- { 18596, 0xffff }, { 18612, 0xffff }, { 18628, 0xffff }, { 18644, 0xffff },
- { 18660, 0xffff }, { 18676, 0xffff }, { 18692, 0xffff }, { 18708, 0xffff },
- { 18724, 0xffff }, { 18740, 0xffff }, { 18756, 0xffff }, { 18772, 0xffff },
- { 18788, 0xffff }, { 18804, 0xffff }, { 18820, 0xffff }, { 18836, 0xffff },
- /* 0xe900 */
- { 18852, 0xffff }, { 18868, 0xffff }, { 18884, 0xffff }, { 18900, 0xffff },
- { 18916, 0xffff }, { 18932, 0xffff }, { 18948, 0xffff }, { 18964, 0xffff },
- { 18980, 0xffff }, { 18996, 0xffff }, { 19012, 0xffff }, { 19028, 0xffff },
- { 19044, 0xffff }, { 19060, 0xffff }, { 19076, 0xffff }, { 19092, 0xffff },
- /* 0xea00 */
- { 19108, 0xffff }, { 19124, 0xffff }, { 19140, 0xffff }, { 19156, 0xffff },
- { 19172, 0xffff }, { 19188, 0xffff }, { 19204, 0xffff }, { 19220, 0xffff },
- { 19236, 0xffff }, { 19252, 0xffff }, { 19268, 0xffff }, { 19284, 0xffff },
- { 19300, 0xffff }, { 19316, 0xffff }, { 19332, 0xffff }, { 19348, 0xffff },
- /* 0xeb00 */
- { 19364, 0xffff }, { 19380, 0xffff }, { 19396, 0xffff }, { 19412, 0xffff },
- { 19428, 0xffff }, { 19444, 0xffff }, { 19460, 0xffff }, { 19476, 0xffff },
- { 19492, 0xffff }, { 19508, 0xffff }, { 19524, 0xffff }, { 19540, 0xffff },
- { 19556, 0xffff }, { 19572, 0xffff }, { 19588, 0xffff }, { 19604, 0xffff },
- /* 0xec00 */
- { 19620, 0xffff }, { 19636, 0xffff }, { 19652, 0xffff }, { 19668, 0xffff },
- { 19684, 0xffff }, { 19700, 0xffff }, { 19716, 0xffff }, { 19732, 0xffff },
- { 19748, 0xffff }, { 19764, 0xffff }, { 19780, 0xffff }, { 19796, 0xffff },
- { 19812, 0xffff }, { 19828, 0xffff }, { 19844, 0xffff }, { 19860, 0xffff },
- /* 0xed00 */
- { 19876, 0xffff }, { 19892, 0xffff }, { 19908, 0xffff }, { 19924, 0xffff },
- { 19940, 0xffff }, { 19956, 0xffff }, { 19972, 0xffff }, { 19988, 0xffff },
- { 20004, 0xffff }, { 20020, 0xffff }, { 20036, 0xffff }, { 20052, 0xffff },
- { 20068, 0xffff }, { 20084, 0xffff }, { 20100, 0xffff }, { 20116, 0xffff },
- /* 0xee00 */
- { 20132, 0xffff }, { 20148, 0xffff }, { 20164, 0xffff }, { 20180, 0xffff },
- { 20196, 0xffff }, { 20212, 0xffff }, { 20228, 0xffff }, { 20244, 0xffff },
- { 20260, 0xffff }, { 20276, 0xffff }, { 20292, 0xffff }, { 20308, 0xffff },
- { 20324, 0xffff }, { 20340, 0xffff }, { 20356, 0xffff }, { 20372, 0xffff },
- /* 0xef00 */
- { 20388, 0xffff }, { 20404, 0xffff }, { 20420, 0xffff }, { 20436, 0xffff },
- { 20452, 0xffff }, { 20468, 0xffff }, { 20484, 0xffff }, { 20500, 0xffff },
- { 20516, 0xffff }, { 20532, 0xffff }, { 20548, 0xffff }, { 20564, 0xffff },
- { 20580, 0xffff }, { 20596, 0xffff }, { 20612, 0xffff }, { 20628, 0xffff },
- /* 0xf000 */
- { 20644, 0xffff }, { 20660, 0xffff }, { 20676, 0xffff }, { 20692, 0xffff },
- { 20708, 0xffff }, { 20724, 0xffff }, { 20740, 0xffff }, { 20756, 0xffff },
- { 20772, 0xffff }, { 20788, 0xffff }, { 20804, 0xffff }, { 20820, 0xffff },
- { 20836, 0xffff }, { 20852, 0xffff }, { 20868, 0xffff }, { 20884, 0xffff },
- /* 0xf100 */
- { 20900, 0xffff }, { 20916, 0xffff }, { 20932, 0xffff }, { 20948, 0xffff },
- { 20964, 0xffff }, { 20980, 0xffff }, { 20996, 0xffff }, { 21012, 0xffff },
- { 21028, 0xffff }, { 21044, 0xffff }, { 21060, 0xffff }, { 21076, 0xffff },
- { 21092, 0xffff }, { 21108, 0xffff }, { 21124, 0xffff }, { 21140, 0xffff },
- /* 0xf200 */
- { 21156, 0xffff }, { 21172, 0xffff }, { 21188, 0xffff }, { 21204, 0xffff },
- { 21220, 0xffff }, { 21236, 0xffff }, { 21252, 0xffff }, { 21268, 0xffff },
- { 21284, 0xffff }, { 21300, 0xffff }, { 21316, 0xffff }, { 21332, 0xffff },
- { 21348, 0xffff }, { 21364, 0xffff }, { 21380, 0xffff }, { 21396, 0xffff },
- /* 0xf300 */
- { 21412, 0xffff }, { 21428, 0xffff }, { 21444, 0xffff }, { 21460, 0xffff },
- { 21476, 0xffff }, { 21492, 0xffff }, { 21508, 0xffff }, { 21524, 0xffff },
- { 21540, 0xffff }, { 21556, 0xffff }, { 21572, 0xffff }, { 21588, 0xffff },
- { 21604, 0xffff }, { 21620, 0xffff }, { 21636, 0xffff }, { 21652, 0xffff },
- /* 0xf400 */
- { 21668, 0xffff }, { 21684, 0xffff }, { 21700, 0xffff }, { 21716, 0xffff },
- { 21732, 0xffff }, { 21748, 0xffff }, { 21764, 0xffff }, { 21780, 0xffff },
- { 21796, 0xffff }, { 21812, 0xffff }, { 21828, 0xffff }, { 21844, 0xffff },
- { 21860, 0xffff }, { 21876, 0xffff }, { 21892, 0xffff }, { 21908, 0xffff },
- /* 0xf500 */
- { 21924, 0xffff }, { 21940, 0xffff }, { 21956, 0xffff }, { 21972, 0xffff },
- { 21988, 0xffff }, { 22004, 0xffff }, { 22020, 0xffff }, { 22036, 0xffff },
- { 22052, 0xffff }, { 22068, 0xffff }, { 22084, 0xffff }, { 22100, 0xffff },
- { 22116, 0xffff }, { 22132, 0xffff }, { 22148, 0xffff }, { 22164, 0xffff },
- /* 0xf600 */
- { 22180, 0xffff }, { 22196, 0xffff }, { 22212, 0xffff }, { 22228, 0xffff },
- { 22244, 0xffff }, { 22260, 0xffff }, { 22276, 0xffff }, { 22292, 0xffff },
- { 22308, 0xffff }, { 22324, 0xffff }, { 22340, 0xffff }, { 22356, 0xffff },
- { 22372, 0xffff }, { 22388, 0xffff }, { 22404, 0xffff }, { 22420, 0xffff },
- /* 0xf700 */
- { 22436, 0xffff }, { 22452, 0xffff }, { 22468, 0xffff }, { 22484, 0xffff },
- { 22500, 0xffff }, { 22516, 0xffff }, { 22532, 0xffff }, { 22548, 0xffff },
- { 22564, 0xffff }, { 22580, 0xffff }, { 22596, 0xffff }, { 22612, 0xffff },
- { 22628, 0xffff }, { 22644, 0xffff }, { 22660, 0xffff }, { 22676, 0xffff },
- /* 0xf800 */
- { 22692, 0xffff }, { 22708, 0xffff }, { 22724, 0xffff }, { 22740, 0xffff },
- { 22756, 0x01ff }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
- { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
- { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
- /* 0xf900 */
- { 22765, 0xffff }, { 22781, 0xffff }, { 22797, 0xefff }, { 22812, 0xffff },
- { 22828, 0xffff }, { 22844, 0xffff }, { 22860, 0xffff }, { 22876, 0xfdff },
- { 22891, 0xffff }, { 22907, 0xffdf }, { 22922, 0xffff }, { 22938, 0xffff },
- { 22954, 0xffff }, { 22970, 0xffff }, { 22986, 0xff7f }, { 23001, 0xfffd },
- /* 0xfa00 */
- { 23016, 0x3fff }, { 23030, 0x7ee5 }, { 23041, 0x3c64 },
-};
-static const Summary16 big5hkscs_uni2indx_pagefe[31] = {
- /* 0xfe00 */
- { 23048, 0x0000 }, { 23048, 0x0000 }, { 23048, 0x0000 }, { 23048, 0xfffb },
- { 23063, 0xfe1f }, { 23075, 0xfef7 }, { 23089, 0x0f7f }, { 23100, 0x0000 },
- { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 },
- { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 },
- /* 0xff00 */
- { 23100, 0xfffe }, { 23115, 0xffff }, { 23131, 0xffff }, { 23147, 0xffff },
- { 23163, 0xffff }, { 23179, 0x7fff }, { 23194, 0x0010 }, { 23195, 0x0000 },
- { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x0000 },
- { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x203f },
-};
-
-static int
-big5hkscs_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc >= 0x0000 && wc < 0x0100)
- summary = &big5hkscs_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x0200 && wc < 0x03d0)
- summary = &big5hkscs_uni2indx_page02[(wc>>4)-0x020];
- else if (wc >= 0x2000 && wc < 0x22c0)
- summary = &big5hkscs_uni2indx_page20[(wc>>4)-0x200];
- else if (wc >= 0x2500 && wc < 0x2650)
- summary = &big5hkscs_uni2indx_page25[(wc>>4)-0x250];
- else if (wc >= 0x3000 && wc < 0x33e0)
- summary = &big5hkscs_uni2indx_page30[(wc>>4)-0x300];
- else if (wc >= 0x4e00 && wc < 0x9fb0)
- summary = &big5hkscs_uni2indx_page4e[(wc>>4)-0x4e0];
- else if (wc >= 0xe000 && wc < 0xfa30)
- summary = &big5hkscs_uni2indx_pagee0[(wc>>4)-0xe00];
- else if (wc >= 0xfe00 && wc < 0xfff0)
- summary = &big5hkscs_uni2indx_pagefe[(wc>>4)-0xfe0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = big5hkscs_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
-
+
+/*
+ * BIG5-HKSCS
+ */
+
+static const unsigned short big5hkscs_2uni_page81[19782] = {
+ /* 0x81 */
+ 0xeeb8, 0xeeb9, 0xeeba, 0xeebb, 0xeebc, 0xeebd, 0xeebe, 0xeebf,
+ 0xeec0, 0xeec1, 0xeec2, 0xeec3, 0xeec4, 0xeec5, 0xeec6, 0xeec7,
+ 0xeec8, 0xeec9, 0xeeca, 0xeecb, 0xeecc, 0xeecd, 0xeece, 0xeecf,
+ 0xeed0, 0xeed1, 0xeed2, 0xeed3, 0xeed4, 0xeed5, 0xeed6, 0xeed7,
+ 0xeed8, 0xeed9, 0xeeda, 0xeedb, 0xeedc, 0xeedd, 0xeede, 0xeedf,
+ 0xeee0, 0xeee1, 0xeee2, 0xeee3, 0xeee4, 0xeee5, 0xeee6, 0xeee7,
+ 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xeeed, 0xeeee, 0xeeef,
+ 0xeef0, 0xeef1, 0xeef2, 0xeef3, 0xeef4, 0xeef5, 0xeef6, 0xeef7,
+ 0xeef8, 0xeef9, 0xeefa, 0xeefb, 0xeefc, 0xeefd, 0xeefe, 0xeeff,
+ 0xef00, 0xef01, 0xef02, 0xef03, 0xef04, 0xef05, 0xef06, 0xef07,
+ 0xef08, 0xef09, 0xef0a, 0xef0b, 0xef0c, 0xef0d, 0xef0e, 0xef0f,
+ 0xef10, 0xef11, 0xef12, 0xef13, 0xef14, 0xef15, 0xef16, 0xef17,
+ 0xef18, 0xef19, 0xef1a, 0xef1b, 0xef1c, 0xef1d, 0xef1e, 0xef1f,
+ 0xef20, 0xef21, 0xef22, 0xef23, 0xef24, 0xef25, 0xef26, 0xef27,
+ 0xef28, 0xef29, 0xef2a, 0xef2b, 0xef2c, 0xef2d, 0xef2e, 0xef2f,
+ 0xef30, 0xef31, 0xef32, 0xef33, 0xef34, 0xef35, 0xef36, 0xef37,
+ 0xef38, 0xef39, 0xef3a, 0xef3b, 0xef3c, 0xef3d, 0xef3e, 0xef3f,
+ 0xef40, 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xef46, 0xef47,
+ 0xef48, 0xef49, 0xef4a, 0xef4b, 0xef4c, 0xef4d, 0xef4e, 0xef4f,
+ 0xef50, 0xef51, 0xef52, 0xef53, 0xef54,
+ /* 0x82 */
+ 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b, 0xef5c,
+ 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63, 0xef64,
+ 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b, 0xef6c,
+ 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xef72, 0xef73, 0xef74,
+ 0xef75, 0xef76, 0xef77, 0xef78, 0xef79, 0xef7a, 0xef7b, 0xef7c,
+ 0xef7d, 0xef7e, 0xef7f, 0xef80, 0xef81, 0xef82, 0xef83, 0xef84,
+ 0xef85, 0xef86, 0xef87, 0xef88, 0xef89, 0xef8a, 0xef8b, 0xef8c,
+ 0xef8d, 0xef8e, 0xef8f, 0xef90, 0xef91, 0xef92, 0xef93, 0xef94,
+ 0xef95, 0xef96, 0xef97, 0xef98, 0xef99, 0xef9a, 0xef9b, 0xef9c,
+ 0xef9d, 0xef9e, 0xef9f, 0xefa0, 0xefa1, 0xefa2, 0xefa3, 0xefa4,
+ 0xefa5, 0xefa6, 0xefa7, 0xefa8, 0xefa9, 0xefaa, 0xefab, 0xefac,
+ 0xefad, 0xefae, 0xefaf, 0xefb0, 0xefb1, 0xefb2, 0xefb3, 0xefb4,
+ 0xefb5, 0xefb6, 0xefb7, 0xefb8, 0xefb9, 0xefba, 0xefbb, 0xefbc,
+ 0xefbd, 0xefbe, 0xefbf, 0xefc0, 0xefc1, 0xefc2, 0xefc3, 0xefc4,
+ 0xefc5, 0xefc6, 0xefc7, 0xefc8, 0xefc9, 0xefca, 0xefcb, 0xefcc,
+ 0xefcd, 0xefce, 0xefcf, 0xefd0, 0xefd1, 0xefd2, 0xefd3, 0xefd4,
+ 0xefd5, 0xefd6, 0xefd7, 0xefd8, 0xefd9, 0xefda, 0xefdb, 0xefdc,
+ 0xefdd, 0xefde, 0xefdf, 0xefe0, 0xefe1, 0xefe2, 0xefe3, 0xefe4,
+ 0xefe5, 0xefe6, 0xefe7, 0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec,
+ 0xefed, 0xefee, 0xefef, 0xeff0, 0xeff1,
+ /* 0x83 */
+ 0xeff2, 0xeff3, 0xeff4, 0xeff5, 0xeff6, 0xeff7, 0xeff8, 0xeff9,
+ 0xeffa, 0xeffb, 0xeffc, 0xeffd, 0xeffe, 0xefff, 0xf000, 0xf001,
+ 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, 0xf008, 0xf009,
+ 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, 0xf010, 0xf011,
+ 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, 0xf018, 0xf019,
+ 0xf01a, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f, 0xf020, 0xf021,
+ 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027, 0xf028, 0xf029,
+ 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f, 0xf030, 0xf031,
+ 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, 0xf038, 0xf039,
+ 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f, 0xf040, 0xf041,
+ 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047, 0xf048, 0xf049,
+ 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f, 0xf050, 0xf051,
+ 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057, 0xf058, 0xf059,
+ 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f, 0xf060, 0xf061,
+ 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067, 0xf068, 0xf069,
+ 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f, 0xf070, 0xf071,
+ 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077, 0xf078, 0xf079,
+ 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f, 0xf080, 0xf081,
+ 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087, 0xf088, 0xf089,
+ 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e,
+ /* 0x84 */
+ 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096,
+ 0xf097, 0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e,
+ 0xf09f, 0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6,
+ 0xf0a7, 0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae,
+ 0xf0af, 0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6,
+ 0xf0b7, 0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be,
+ 0xf0bf, 0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6,
+ 0xf0c7, 0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce,
+ 0xf0cf, 0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6,
+ 0xf0d7, 0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de,
+ 0xf0df, 0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5, 0xf0e6,
+ 0xf0e7, 0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee,
+ 0xf0ef, 0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6,
+ 0xf0f7, 0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe,
+ 0xf0ff, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106,
+ 0xf107, 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e,
+ 0xf10f, 0xf110, 0xf111, 0xf112, 0xf113, 0xf114, 0xf115, 0xf116,
+ 0xf117, 0xf118, 0xf119, 0xf11a, 0xf11b, 0xf11c, 0xf11d, 0xf11e,
+ 0xf11f, 0xf120, 0xf121, 0xf122, 0xf123, 0xf124, 0xf125, 0xf126,
+ 0xf127, 0xf128, 0xf129, 0xf12a, 0xf12b,
+ /* 0x85 */
+ 0xf12c, 0xf12d, 0xf12e, 0xf12f, 0xf130, 0xf131, 0xf132, 0xf133,
+ 0xf134, 0xf135, 0xf136, 0xf137, 0xf138, 0xf139, 0xf13a, 0xf13b,
+ 0xf13c, 0xf13d, 0xf13e, 0xf13f, 0xf140, 0xf141, 0xf142, 0xf143,
+ 0xf144, 0xf145, 0xf146, 0xf147, 0xf148, 0xf149, 0xf14a, 0xf14b,
+ 0xf14c, 0xf14d, 0xf14e, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153,
+ 0xf154, 0xf155, 0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b,
+ 0xf15c, 0xf15d, 0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163,
+ 0xf164, 0xf165, 0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0xf16b,
+ 0xf16c, 0xf16d, 0xf16e, 0xf16f, 0xf170, 0xf171, 0xf172, 0xf173,
+ 0xf174, 0xf175, 0xf176, 0xf177, 0xf178, 0xf179, 0xf17a, 0xf17b,
+ 0xf17c, 0xf17d, 0xf17e, 0xf17f, 0xf180, 0xf181, 0xf182, 0xf183,
+ 0xf184, 0xf185, 0xf186, 0xf187, 0xf188, 0xf189, 0xf18a, 0xf18b,
+ 0xf18c, 0xf18d, 0xf18e, 0xf18f, 0xf190, 0xf191, 0xf192, 0xf193,
+ 0xf194, 0xf195, 0xf196, 0xf197, 0xf198, 0xf199, 0xf19a, 0xf19b,
+ 0xf19c, 0xf19d, 0xf19e, 0xf19f, 0xf1a0, 0xf1a1, 0xf1a2, 0xf1a3,
+ 0xf1a4, 0xf1a5, 0xf1a6, 0xf1a7, 0xf1a8, 0xf1a9, 0xf1aa, 0xf1ab,
+ 0xf1ac, 0xf1ad, 0xf1ae, 0xf1af, 0xf1b0, 0xf1b1, 0xf1b2, 0xf1b3,
+ 0xf1b4, 0xf1b5, 0xf1b6, 0xf1b7, 0xf1b8, 0xf1b9, 0xf1ba, 0xf1bb,
+ 0xf1bc, 0xf1bd, 0xf1be, 0xf1bf, 0xf1c0, 0xf1c1, 0xf1c2, 0xf1c3,
+ 0xf1c4, 0xf1c5, 0xf1c6, 0xf1c7, 0xf1c8,
+ /* 0x86 */
+ 0xf1c9, 0xf1ca, 0xf1cb, 0xf1cc, 0xf1cd, 0xf1ce, 0xf1cf, 0xf1d0,
+ 0xf1d1, 0xf1d2, 0xf1d3, 0xf1d4, 0xf1d5, 0xf1d6, 0xf1d7, 0xf1d8,
+ 0xf1d9, 0xf1da, 0xf1db, 0xf1dc, 0xf1dd, 0xf1de, 0xf1df, 0xf1e0,
+ 0xf1e1, 0xf1e2, 0xf1e3, 0xf1e4, 0xf1e5, 0xf1e6, 0xf1e7, 0xf1e8,
+ 0xf1e9, 0xf1ea, 0xf1eb, 0xf1ec, 0xf1ed, 0xf1ee, 0xf1ef, 0xf1f0,
+ 0xf1f1, 0xf1f2, 0xf1f3, 0xf1f4, 0xf1f5, 0xf1f6, 0xf1f7, 0xf1f8,
+ 0xf1f9, 0xf1fa, 0xf1fb, 0xf1fc, 0xf1fd, 0xf1fe, 0xf1ff, 0xf200,
+ 0xf201, 0xf202, 0xf203, 0xf204, 0xf205, 0xf206, 0xf207, 0xf208,
+ 0xf209, 0xf20a, 0xf20b, 0xf20c, 0xf20d, 0xf20e, 0xf20f, 0xf210,
+ 0xf211, 0xf212, 0xf213, 0xf214, 0xf215, 0xf216, 0xf217, 0xf218,
+ 0xf219, 0xf21a, 0xf21b, 0xf21c, 0xf21d, 0xf21e, 0xf21f, 0xf220,
+ 0xf221, 0xf222, 0xf223, 0xf224, 0xf225, 0xf226, 0xf227, 0xf228,
+ 0xf229, 0xf22a, 0xf22b, 0xf22c, 0xf22d, 0xf22e, 0xf22f, 0xf230,
+ 0xf231, 0xf232, 0xf233, 0xf234, 0xf235, 0xf236, 0xf237, 0xf238,
+ 0xf239, 0xf23a, 0xf23b, 0xf23c, 0xf23d, 0xf23e, 0xf23f, 0xf240,
+ 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, 0xf246, 0xf247, 0xf248,
+ 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, 0xf24e, 0xf24f, 0xf250,
+ 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, 0xf256, 0xf257, 0xf258,
+ 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, 0xf25e, 0xf25f, 0xf260,
+ 0xf261, 0xf262, 0xf263, 0xf264, 0xf265,
+ /* 0x87 */
+ 0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d,
+ 0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275,
+ 0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d,
+ 0xf27e, 0xf27f, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285,
+ 0xf286, 0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d,
+ 0xf28e, 0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295,
+ 0xf296, 0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d,
+ 0xf29e, 0xf29f, 0xf2a0, 0xf2a1, 0xf2a2, 0xf2a3, 0xf2a4, 0xf2a5,
+ 0xf2a6, 0xf2a7, 0xf2a8, 0xf2a9, 0xf2aa, 0xf2ab, 0xf2ac, 0xf2ad,
+ 0xf2ae, 0xf2af, 0xf2b0, 0xf2b1, 0xf2b2, 0xf2b3, 0xf2b4, 0xf2b5,
+ 0xf2b6, 0xf2b7, 0xf2b8, 0xf2b9, 0xf2ba, 0xf2bb, 0xf2bc, 0xf2bd,
+ 0xf2be, 0xf2bf, 0xf2c0, 0xf2c1, 0xf2c2, 0xf2c3, 0xf2c4, 0xf2c5,
+ 0xf2c6, 0xf2c7, 0xf2c8, 0xf2c9, 0xf2ca, 0xf2cb, 0xf2cc, 0xf2cd,
+ 0xf2ce, 0xf2cf, 0xf2d0, 0xf2d1, 0xf2d2, 0xf2d3, 0xf2d4, 0xf2d5,
+ 0xf2d6, 0xf2d7, 0xf2d8, 0xf2d9, 0xf2da, 0xf2db, 0xf2dc, 0xf2dd,
+ 0xf2de, 0xf2df, 0xf2e0, 0xf2e1, 0xf2e2, 0xf2e3, 0xf2e4, 0xf2e5,
+ 0xf2e6, 0xf2e7, 0xf2e8, 0xf2e9, 0xf2ea, 0xf2eb, 0xf2ec, 0xf2ed,
+ 0xf2ee, 0xf2ef, 0xf2f0, 0xf2f1, 0xf2f2, 0xf2f3, 0xf2f4, 0xf2f5,
+ 0xf2f6, 0xf2f7, 0xf2f8, 0xf2f9, 0xf2fa, 0xf2fb, 0xf2fc, 0xf2fd,
+ 0xf2fe, 0xf2ff, 0xf300, 0xf301, 0xf302,
+ /* 0x88 */
+ 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, 0xf30a,
+ 0xf30b, 0xf30c, 0xf30d, 0xf30e, 0xf30f, 0xf310, 0xf311, 0xf312,
+ 0xf313, 0xf314, 0xf315, 0xf316, 0xf317, 0xf318, 0x0100, 0x00c1,
+ 0x01cd, 0x00c0, 0x0112, 0x00c9, 0x011a, 0x00c8, 0x014c, 0x00d3,
+ 0x01d1, 0x00d2, 0xf325, 0x1ebe, 0xf327, 0x1ec0, 0x00ca, 0x0101,
+ 0x00e1, 0x01ce, 0x00e0, 0x0251, 0x0113, 0x00e9, 0x011b, 0x00e8,
+ 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
+ 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
+ 0x00fc, 0xf344, 0x1ebf, 0xf346, 0x1ec1, 0x00ea, 0x0261, 0xf34a,
+ 0xf34b, 0xf34c, 0xf34d, 0xf34e, 0xf34f, 0xf350, 0xf351, 0xf352,
+ 0xf353, 0xf354, 0xf355, 0xf356, 0xf357, 0xf358, 0xf359, 0xf35a,
+ 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360, 0xf361, 0xf362,
+ 0xf363, 0xf364, 0xf365, 0xf366, 0xf367, 0xf368, 0xf369, 0xf36a,
+ 0xf36b, 0xf36c, 0xf36d, 0xf36e, 0xf36f, 0xf370, 0xf371, 0xf372,
+ 0xf373, 0xf374, 0xf375, 0xf376, 0xf377, 0xf378, 0xf379, 0xf37a,
+ 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf37f, 0xf380, 0xf381, 0xf382,
+ 0xf383, 0xf384, 0xf385, 0xf386, 0xf387, 0xf388, 0xf389, 0xf38a,
+ 0xf38b, 0xf38c, 0xf38d, 0xf38e, 0xf38f, 0xf390, 0xf391, 0xf392,
+ 0xf393, 0xf394, 0xf395, 0xf396, 0xf397, 0xf398, 0xf399, 0xf39a,
+ 0xf39b, 0xf39c, 0xf39d, 0xf39e, 0xf39f,
+ /* 0x89 */
+ 0xf3a0, 0xf3a1, 0xf3a2, 0x650a, 0xf3a4, 0xf3a5, 0x4e3d, 0x6edd,
+ 0x9d4e, 0x91df, 0xf3aa, 0xf3ab, 0xf3ac, 0x6491, 0x4f1a, 0x4f28,
+ 0x4fa8, 0x5156, 0x5174, 0x519c, 0x51e4, 0x52a1, 0x52a8, 0x533b,
+ 0x534e, 0x53d1, 0x53d8, 0x56e2, 0x58f0, 0x5904, 0x5907, 0x5932,
+ 0x5934, 0x5b66, 0x5b9e, 0x5b9f, 0x5c9a, 0x5e86, 0x603b, 0x6589,
+ 0x67fe, 0x6804, 0x6865, 0x6d4e, 0x70bc, 0x7535, 0x7ea4, 0x7eac,
+ 0x7eba, 0x7ec7, 0x7ecf, 0x7edf, 0x7f06, 0x7f37, 0x827a, 0x82cf,
+ 0x836f, 0x89c6, 0x8bbe, 0x8be2, 0x8f66, 0x8f67, 0x8f6e, 0x7411,
+ 0x7cfc, 0x7dcd, 0x6946, 0x7ac9, 0x5227, 0xf3e5, 0xf3e6, 0xf3e7,
+ 0xf3e8, 0x918c, 0x78b8, 0x915e, 0x80bc, 0xf3ed, 0x8d0b, 0x80f6,
+ 0xf3f0, 0xf3f1, 0xf3f2, 0x809f, 0x9ec7, 0x4ccd, 0x9dc9, 0x9e0c,
+ 0x4c3e, 0xf3f9, 0xf3fa, 0x9e0a, 0xf3fc, 0x35c1, 0xf3fe, 0x6e9a,
+ 0x823e, 0x7519, 0xf402, 0x4911, 0x9a6c, 0x9a8f, 0x9f99, 0x7987,
+ 0xf408, 0xf409, 0xf40a, 0xf40b, 0x4e24, 0x4e81, 0x4e80, 0x4e87,
+ 0x4ebf, 0x4eeb, 0x4f37, 0x344c, 0x4fbd, 0x3e48, 0x5003, 0x5088,
+ 0x347d, 0x3493, 0x34a5, 0x5186, 0x5905, 0x51db, 0x51fc, 0x5205,
+ 0x4e89, 0x5279, 0x5290, 0x5327, 0x35c7, 0x53a9, 0x3551, 0x53b0,
+ 0x3553, 0x53c2, 0x5423, 0x356d, 0x3572, 0x3681, 0x5493, 0x54a3,
+ 0x54b4, 0x54b9, 0x54d0, 0x54ef, 0x5518, 0x5523, 0x5528, 0x3598,
+ 0x553f, 0x35a5, 0x35bf, 0x55d7, 0x35c5,
+ /* 0x8a */
+ 0xf43d, 0x5525, 0xf43f, 0xf440, 0xf441, 0xf442, 0x5590, 0xf444,
+ 0x39ec, 0xf446, 0x8e46, 0xf448, 0xf449, 0x4053, 0xf44b, 0x777a,
+ 0xf44d, 0x3a34, 0x47d5, 0xf450, 0xf451, 0xf452, 0x64dd, 0xf454,
+ 0xf455, 0xf456, 0xf457, 0x648d, 0x8e7e, 0xf45a, 0xf45b, 0xf45c,
+ 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xf463, 0x47f4,
+ 0xf465, 0xf466, 0x9ab2, 0x3a67, 0xf469, 0x3fed, 0x3506, 0xf46c,
+ 0xf46d, 0xf46e, 0xf46f, 0x9d6e, 0x9815, 0xf472, 0x43d9, 0xf474,
+ 0x64b4, 0x54e3, 0xf477, 0xf478, 0xf479, 0x39fb, 0xf47b, 0xf47c,
+ 0xf47d, 0xf47e, 0x64ea, 0xf480, 0xf481, 0x8e68, 0xf483, 0xf484,
+ 0xf485, 0xf486, 0x480b, 0xf488, 0x3ffa, 0x5873, 0xf48b, 0xf48c,
+ 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0x5579, 0x40bb, 0x43ba,
+ 0xf495, 0x4ab4, 0xf497, 0xf498, 0x81aa, 0x98f5, 0xf49b, 0x6379,
+ 0x39fe, 0xf49e, 0x8dc0, 0x56a1, 0x647c, 0x3e43, 0xf4a3, 0xf4a4,
+ 0xf4a5, 0xf4a6, 0xf4a7, 0xf4a8, 0xf4a9, 0xf4aa, 0x3992, 0x3a06,
+ 0xf4ad, 0x3578, 0xf4af, 0xf4b0, 0x5652, 0xf4b2, 0xf4b3, 0xf4b4,
+ 0x34bc, 0x6c3d, 0xf4b7, 0xf4b8, 0xf4b9, 0xf4ba, 0xf4bb, 0xf4bc,
+ 0xf4bd, 0xf4be, 0xf4bf, 0xf4c0, 0xf4c1, 0x7f93, 0xf4c3, 0xf4c4,
+ 0xf4c5, 0x35fb, 0xf4c7, 0xf4c8, 0xf4c9, 0xf4ca, 0x3f93, 0xf4cc,
+ 0xf4cd, 0xf4ce, 0xf4cf, 0xf4d0, 0xf4d1, 0xf4d2, 0xf4d3, 0xf4d4,
+ 0xf4d5, 0x3ff9, 0xf4d7, 0x6432, 0xf4d9,
+ /* 0x8b */
+ 0xf4da, 0xf4db, 0xf4dc, 0xf4dd, 0xf4de, 0xf4df, 0xf4e0, 0x3a18,
+ 0xf4e2, 0xf4e3, 0xf4e4, 0xf4e5, 0xf4e6, 0xf4e7, 0xf4e8, 0xf4e9,
+ 0x95aa, 0x54cc, 0x82c4, 0x55b9, 0xf4ee, 0xf4ef, 0x9c26, 0x9ab6,
+ 0xf4f2, 0xf4f3, 0x7140, 0x816d, 0x80ec, 0x5c1c, 0xf4f8, 0x8134,
+ 0x3797, 0x535f, 0xf4fc, 0x91b6, 0xf4fe, 0xf4ff, 0xf500, 0xf501,
+ 0x35dd, 0xf503, 0x3609, 0xf505, 0x56af, 0xf507, 0xf508, 0xf509,
+ 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510, 0xf511,
+ 0x5a54, 0xf513, 0xf514, 0xf515, 0xf516, 0x579c, 0xf518, 0xf519,
+ 0xf51a, 0xf51b, 0xf51c, 0xf51d, 0x3703, 0xf51f, 0xf520, 0xf521,
+ 0xf522, 0xf523, 0xf524, 0xf525, 0xf526, 0x5899, 0x5268, 0x361a,
+ 0xf52a, 0x7bb2, 0x5b68, 0x4800, 0x4b2c, 0x9f27, 0x49e7, 0x9c1f,
+ 0x9b8d, 0xf533, 0xf534, 0x55fb, 0x35f2, 0x5689, 0x4e28, 0x5902,
+ 0xf53a, 0xf53b, 0x9751, 0xf53d, 0x4e5b, 0x4ebb, 0x353e, 0x5c23,
+ 0x5f51, 0x5fc4, 0x38fa, 0x624c, 0x6535, 0x6b7a, 0x6c35, 0x6c3a,
+ 0x706c, 0x722b, 0x4e2c, 0x72ad, 0xf54e, 0x7f52, 0x793b, 0x7cf9,
+ 0x7f53, 0xf553, 0x34c1, 0xf555, 0xf556, 0x8002, 0x8080, 0xf559,
+ 0xf55a, 0x535d, 0x8864, 0x89c1, 0xf55e, 0x8ba0, 0x8d1d, 0x9485,
+ 0x9578, 0x957f, 0x95e8, 0xf565, 0x97e6, 0x9875, 0x98ce, 0x98de,
+ 0x9963, 0xf56b, 0x9c7c, 0x9e1f, 0x9ec4, 0x6b6f, 0xf907, 0x4e37,
+ 0xf572, 0x961d, 0x6237, 0x94a2, 0xf576,
+ /* 0x8c */
+ 0x503b, 0x6dfe, 0xf579, 0xf57a, 0x3dc9, 0x888f, 0xf57d, 0x7077,
+ 0x5cf5, 0x4b20, 0xf581, 0x3559, 0xf583, 0x6122, 0xf585, 0x8fa7,
+ 0x91f6, 0x7191, 0x6719, 0x73ba, 0xf58b, 0xf58c, 0x3c8b, 0xf58e,
+ 0x4b10, 0x78e4, 0x7402, 0x51ae, 0xf593, 0x4009, 0x6a63, 0xf596,
+ 0x4223, 0x860f, 0xf599, 0x7a2a, 0xf59b, 0xf59c, 0x9755, 0x704d,
+ 0x5324, 0xf5a0, 0x93f4, 0x76d9, 0xf5a3, 0xf5a4, 0x77dd, 0x4ea3,
+ 0x4ff0, 0x50bc, 0x4e2f, 0x4f17, 0xf5ab, 0x5434, 0x7d8b, 0x5892,
+ 0x58d0, 0xf5b0, 0x5e92, 0x5e99, 0x5fc2, 0xf5b4, 0x658b, 0xf5b6,
+ 0x6919, 0x6a43, 0xf5b9, 0x6cff, 0xf5bb, 0x7200, 0xf5bd, 0x738c,
+ 0x3edb, 0xf5c0, 0x5b15, 0x74b9, 0x8b83, 0xf5c4, 0xf5c5, 0x7a93,
+ 0x7bec, 0x7cc3, 0x7e6c, 0x82f8, 0x8597, 0xf5cc, 0x8890, 0xf5ce,
+ 0x8eb9, 0xf5d0, 0x8fcf, 0x855f, 0x99e0, 0x9221, 0xf5d5, 0xf5d6,
+ 0xf5d7, 0x4071, 0x42a2, 0x5a1a, 0xf5db, 0xf5dc, 0xf5dd, 0x9868,
+ 0x676b, 0x4276, 0x573d, 0xf5e2, 0x85d6, 0xf5e4, 0x82bf, 0xf5e6,
+ 0x4c81, 0xf5e8, 0x5d7b, 0xf5ea, 0xf5eb, 0xf5ec, 0xf5ed, 0x5b96,
+ 0xf5ef, 0xf5f0, 0x7e5b, 0xf5f2, 0xf5f3, 0xf5f4, 0xf5f5, 0xf5f6,
+ 0xf5f7, 0xf5f8, 0xf5f9, 0xf5fa, 0xf5fb, 0xf5fc, 0xf5fd, 0xf5fe,
+ 0xf5ff, 0xf600, 0xf601, 0xf602, 0xf603, 0xf604, 0xf605, 0xf606,
+ 0xf607, 0xf608, 0xf609, 0xf60a, 0xf60b, 0xf60c, 0xf60d, 0xf60e,
+ 0xf60f, 0xf610, 0xf611, 0xf612, 0xf613,
+ /* 0x8d */
+ 0xf614, 0xf615, 0xf616, 0xf617, 0xf618, 0xf619, 0xf61a, 0xf61b,
+ 0xf61c, 0xf61d, 0xf61e, 0xf61f, 0xf620, 0xf621, 0xf622, 0xf623,
+ 0xf624, 0xf625, 0xf626, 0xf627, 0xf628, 0xf629, 0xf62a, 0xf62b,
+ 0xf62c, 0xf62d, 0xf62e, 0xf62f, 0xf630, 0xf631, 0xf632, 0xf633,
+ 0x5d3e, 0x5d48, 0x5d56, 0x3dfc, 0x380f, 0x5da4, 0x5db9, 0x3820,
+ 0x3838, 0x5e42, 0x5ebd, 0x5f25, 0x5f83, 0x3908, 0x3914, 0x393f,
+ 0x394d, 0x60d7, 0x613d, 0x5ce5, 0x3989, 0x61b7, 0x61b9, 0x61cf,
+ 0x39b8, 0x622c, 0x6290, 0x62e5, 0x6318, 0x39f8, 0x56b1, 0x3a03,
+ 0x63e2, 0x63fb, 0x6407, 0x645a, 0x3a4b, 0x64c0, 0x5d15, 0x5621,
+ 0x9f9f, 0x3a97, 0x6586, 0x3abd, 0x65ff, 0x6653, 0x3af2, 0x6692,
+ 0x3b22, 0x6716, 0x3b42, 0x67a4, 0x6800, 0x3b58, 0x684a, 0x6884,
+ 0x3b72, 0x3b71, 0x3b7b, 0x6909, 0x6943, 0x725c, 0x6964, 0x699f,
+ 0x6985, 0x3bbc, 0x69d6, 0x3bdd, 0x6a65, 0x6a74, 0x6a71, 0x6a82,
+ 0x3bec, 0x6a99, 0x3bf2, 0x6aab, 0x6ab5, 0x6ad4, 0x6af6, 0x6b81,
+ 0x6bc1, 0x6bea, 0x6c75, 0x6caa, 0x3ccb, 0x6d02, 0x6d06, 0x6d26,
+ 0x6d81, 0x3cef, 0x6da4, 0x6db1, 0x6e15, 0x6e18, 0x6e29, 0x6e86,
+ 0xf694, 0x6ebb, 0x6ee2, 0x6eda, 0x9f7f, 0x6ee8, 0x6ee9, 0x6f24,
+ 0x6f34, 0x3d46, 0xf69e, 0x6f81, 0x6fbe, 0x3d6a, 0x3d75, 0x71b7,
+ 0x5c99, 0x3d8a, 0x702c, 0x3d91, 0x7050, 0x7054, 0x706f, 0x707f,
+ 0x7089, 0xf6ad, 0x43c1, 0x35f1, 0xf6b0,
+ /* 0x8e */
+ 0xe311, 0x57be, 0xe313, 0x713e, 0xe315, 0x364e, 0x69a2, 0xe318,
+ 0x5b74, 0x7a49, 0xe31b, 0xe31c, 0x7a65, 0x7a7d, 0xe31f, 0x7abb,
+ 0x7ab0, 0x7ac2, 0x7ac3, 0x71d1, 0xe325, 0x41ca, 0x7ada, 0x7add,
+ 0x7aea, 0x41ef, 0x54b2, 0xe32c, 0x7b0b, 0x7b55, 0x7b29, 0xe330,
+ 0xe331, 0x7ba2, 0x7b6f, 0x839c, 0xe335, 0xe336, 0x7bd0, 0x8421,
+ 0x7b92, 0x7bb8, 0xe33b, 0x3dad, 0xe33d, 0x8492, 0x7bfa, 0x7c06,
+ 0x7c35, 0xe342, 0x7c44, 0x7c83, 0xe345, 0x7ca6, 0x667d, 0xe348,
+ 0x7cc9, 0x7cc7, 0x7ce6, 0x7c74, 0x7cf3, 0x7cf5, 0x7cce, 0x7e67,
+ 0x451d, 0xe352, 0x7d5d, 0xe354, 0x748d, 0x7d89, 0x7dab, 0x7135,
+ 0x7db3, 0x7dd2, 0xe35b, 0xe35c, 0x7de4, 0x3d13, 0x7df5, 0xe360,
+ 0x7de5, 0xe362, 0x7e1d, 0xe364, 0xe365, 0x7e6e, 0x7e92, 0x432b,
+ 0x946c, 0x7e27, 0x7f40, 0x7f41, 0x7f47, 0x7936, 0xe36f, 0x99e1,
+ 0x7f97, 0xe372, 0x7fa3, 0xe374, 0xe375, 0x455c, 0xe377, 0x4503,
+ 0xe379, 0x7ffa, 0xe37b, 0x8005, 0x8008, 0x801d, 0x8028, 0x802f,
+ 0xe381, 0xe382, 0x803b, 0x803c, 0x8061, 0xe386, 0x4989, 0xe388,
+ 0xe389, 0xe38a, 0x6725, 0x80a7, 0xe38d, 0x8107, 0x811a, 0x58b0,
+ 0xe391, 0x6c7f, 0xe393, 0xe394, 0x64e7, 0xe396, 0x8218, 0xe398,
+ 0x6a53, 0xe39a, 0xe39b, 0x447a, 0x8229, 0xe39e, 0xe39f, 0xe3a0,
+ 0x4ff9, 0xe3a2, 0x84e2, 0x8362, 0xe3a5, 0xe3a6, 0xe3a7, 0xe3a8,
+ 0xe3a9, 0x82aa, 0x691b, 0xe3ac, 0x41db,
+ /* 0x8f */
+ 0x854b, 0x82d0, 0x831a, 0xe3b1, 0xe3b2, 0x36c1, 0xe3b4, 0xe3b5,
+ 0x827b, 0x82e2, 0x8318, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd,
+ 0x3dbf, 0x831d, 0x55ec, 0x8385, 0x450b, 0xe3c3, 0x83ac, 0x83c1,
+ 0x83d3, 0x347e, 0xe3c8, 0x6a57, 0x855a, 0x3496, 0xe3cc, 0xe3cd,
+ 0x8458, 0xe3cf, 0x8471, 0x3dd3, 0x44e4, 0x6aa7, 0x844a, 0xe3d5,
+ 0x7958, 0x84a8, 0xe3d8, 0xe3d9, 0xe3da, 0x84de, 0x840f, 0x8391,
+ 0x44a0, 0x8493, 0x84e4, 0xe3e1, 0x4240, 0xe3e3, 0x4543, 0x8534,
+ 0x5af2, 0xe3e7, 0x4527, 0x8573, 0x4516, 0x67bf, 0x8616, 0xe3ed,
+ 0xe3ee, 0x85c1, 0xe3f0, 0x8602, 0xe3f2, 0xe3f3, 0xe3f4, 0x456a,
+ 0x8628, 0x3648, 0xe3f8, 0x53f7, 0xe3fa, 0x867e, 0x8771, 0xe3fd,
+ 0x87ee, 0xe3ff, 0x87b1, 0x87da, 0x880f, 0x5661, 0x866c, 0x6856,
+ 0x460f, 0x8845, 0x8846, 0xe409, 0xe40a, 0xe40b, 0x885e, 0x889c,
+ 0x465b, 0x88b4, 0x88b5, 0x63c1, 0x88c5, 0x7777, 0xe414, 0x8987,
+ 0x898a, 0x89a6, 0x89a9, 0x89a7, 0x89bc, 0xe41b, 0x89e7, 0xe41d,
+ 0xe41e, 0x8a9c, 0x7793, 0x91fe, 0x8a90, 0xe423, 0x7ae9, 0xe425,
+ 0xe426, 0x4713, 0xe428, 0x717c, 0x8b0c, 0x8b1f, 0xe42c, 0xe42d,
+ 0x8b3f, 0x8b4c, 0x8b4d, 0x8aa9, 0xe432, 0x8b90, 0x8b9b, 0x8aaf,
+ 0xe436, 0x4615, 0x884f, 0x8c9b, 0xe43a, 0xe43b, 0xe43c, 0x3725,
+ 0xe43e, 0x8cd6, 0xe440, 0xe441, 0x8d12, 0x8d03, 0xe444, 0x8cdb,
+ 0x705c, 0x8d11, 0xe448, 0x3ed0, 0x8d77,
+ /* 0x90 */
+ 0x8da9, 0xe44c, 0xe44d, 0xe44e, 0x3b7c, 0xe450, 0xe451, 0x7ae7,
+ 0x8ead, 0x8eb6, 0x8ec3, 0x92d4, 0x8f19, 0x8f2d, 0xe459, 0xe45a,
+ 0x8fa5, 0x9303, 0xe45d, 0xe45e, 0x8fb3, 0x492a, 0xe461, 0xe462,
+ 0xe463, 0x5ef8, 0xe465, 0x8ff9, 0xe467, 0xe468, 0xe469, 0xe46a,
+ 0x3980, 0xe46c, 0x9037, 0xe46e, 0xe46f, 0x9061, 0xe471, 0xe472,
+ 0x90a8, 0xe474, 0x90c4, 0xe476, 0x90ae, 0x90fd, 0x9167, 0x3af0,
+ 0x91a9, 0x91c4, 0x7cac, 0xe47e, 0xe47f, 0x920e, 0x6c9f, 0x9241,
+ 0x9262, 0xe484, 0x92b9, 0xe486, 0xe487, 0xe488, 0xe489, 0xe48a,
+ 0x932c, 0x936b, 0xe48d, 0xe48e, 0x708f, 0x5ac3, 0xe491, 0xe492,
+ 0x4965, 0x9244, 0xe495, 0xe496, 0xe497, 0x9373, 0x945b, 0x8ebc,
+ 0x9585, 0x95a6, 0x9426, 0x95a0, 0x6ff6, 0x42b9, 0xe4a1, 0xe4a2,
+ 0xe4a3, 0xe4a4, 0x49df, 0x6c1c, 0x967b, 0x9696, 0x416c, 0x96a3,
+ 0xe4ab, 0x61da, 0x96b6, 0x78f5, 0xe4af, 0x96bd, 0x53cc, 0x49a1,
+ 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, 0xe4b8, 0xe4b9, 0xe4ba,
+ 0x9731, 0x8642, 0x9736, 0x4a0f, 0x453d, 0x4585, 0xe4c1, 0x7075,
+ 0x5b41, 0x971b, 0x975c, 0xe4c6, 0x9757, 0x5b4a, 0xe4c9, 0x975f,
+ 0x9425, 0x50d0, 0xe4cd, 0xe4ce, 0x9789, 0x979f, 0x97b1, 0x97be,
+ 0x97c0, 0x97d2, 0x97e0, 0xe4d6, 0x97ee, 0x741c, 0xe4d9, 0x97ff,
+ 0x97f5, 0xe4dc, 0xe4dd, 0x4ad1, 0x9834, 0x9833, 0x984b, 0x9866,
+ 0x3b0e, 0xe4e4, 0x3d51, 0xe4e6, 0xe4e7,
+ /* 0x91 */
+ 0xe4e8, 0x98ca, 0x98b7, 0x98c8, 0x98c7, 0x4aff, 0xe4ee, 0xe4ef,
+ 0x55b0, 0x98e1, 0x98e6, 0x98ec, 0x9378, 0x9939, 0xe4f6, 0x4b72,
+ 0xe4f8, 0xe4f9, 0x99f5, 0x9a0c, 0x9a3b, 0x9a10, 0x9a58, 0xe4ff,
+ 0x36c4, 0xe501, 0xe502, 0x9ae0, 0x9ae2, 0xe505, 0x9af4, 0x4c0e,
+ 0x9b14, 0x9b2d, 0xe50a, 0x5034, 0x9b34, 0xe50d, 0x38c3, 0xe50f,
+ 0x9b50, 0x9b40, 0xe512, 0x5a45, 0xe514, 0x9b8e, 0xe516, 0x9c02,
+ 0x9bff, 0x9c0c, 0xe51a, 0x9dd4, 0xe51c, 0xe51d, 0xe51e, 0xe51f,
+ 0xe520, 0xe521, 0x9d7e, 0x9d83, 0xe524, 0x9e0e, 0x6888, 0x9dc4,
+ 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0x9d39, 0xe52e, 0xe52f,
+ 0x9e90, 0x9e95, 0x9e9e, 0x9ea2, 0x4d34, 0x9eaa, 0x9eaf, 0xe537,
+ 0x9ec1, 0x3b60, 0x39e5, 0x3d1d, 0x4f32, 0x37be, 0xe53e, 0x9f02,
+ 0x9f08, 0x4b96, 0x9424, 0xe543, 0x9f17, 0x9f16, 0x9f39, 0x569f,
+ 0x568a, 0x9f45, 0x99b8, 0xe54b, 0x97f2, 0x847f, 0x9f62, 0x9f69,
+ 0x7adc, 0x9f8e, 0x7216, 0x4bbe, 0xe554, 0xe555, 0x7177, 0xe557,
+ 0xe558, 0xe559, 0x739e, 0xe55b, 0xe55c, 0x799f, 0xe55e, 0xe55f,
+ 0x9369, 0x93f3, 0xe562, 0x92ec, 0x9381, 0x93cb, 0xe566, 0xe567,
+ 0x7217, 0x3eeb, 0x7772, 0x7a43, 0x70d0, 0xe56d, 0xe56e, 0x717e,
+ 0xe570, 0x70a3, 0xe572, 0xe573, 0x3ec7, 0xe575, 0xe576, 0xe577,
+ 0x3722, 0xe579, 0xe57a, 0x36e1, 0xe57c, 0xe57d, 0xe57e, 0x3723,
+ 0xe580, 0x575b, 0xe582, 0xe583, 0xe584,
+ /* 0x92 */
+ 0xe585, 0xe586, 0x8503, 0xe588, 0x8503, 0x8455, 0xe58b, 0xe58c,
+ 0xe58d, 0xe58e, 0xe58f, 0xe590, 0x44f4, 0xe592, 0xe593, 0xe594,
+ 0x67f9, 0x3733, 0x3c15, 0x3de7, 0x586c, 0xe59a, 0x6810, 0x4057,
+ 0xe59d, 0xe59e, 0xe59f, 0xe5a0, 0xe5a1, 0x54cb, 0x569e, 0xe5a4,
+ 0x5692, 0xe5a6, 0xe5a7, 0xe5a8, 0x93c6, 0xe5aa, 0x939c, 0x4ef8,
+ 0x512b, 0x3819, 0xe5af, 0x4ebc, 0xe5b1, 0xe5b2, 0x4f4b, 0x4f8a,
+ 0xe5b5, 0x5a68, 0xe5b7, 0xe5b8, 0x3999, 0xe5ba, 0xe5bb, 0x3435,
+ 0x4f29, 0xe5be, 0xe5bf, 0xe5c0, 0x8ada, 0xe5c2, 0x4e98, 0x50cd,
+ 0x510d, 0x4fa2, 0x4f03, 0xe5c8, 0xe5c9, 0x4f42, 0x502e, 0x506c,
+ 0x5081, 0x4fcc, 0x4fe5, 0x5058, 0x50fc, 0x5159, 0x515b, 0x515d,
+ 0x515e, 0x6e76, 0xe5d7, 0xe5d8, 0xe5d9, 0x6d72, 0xe5db, 0xe5dc,
+ 0x51a8, 0x51c3, 0xe5df, 0x44dd, 0xe5e1, 0xe5e2, 0xe5e3, 0x8d7a,
+ 0xe5e5, 0xe5e6, 0x5259, 0x52a4, 0xe5e9, 0x52e1, 0x936e, 0x467a,
+ 0x718c, 0xe5ee, 0xe5ef, 0xe5f0, 0xe5f1, 0x69d1, 0xe5f3, 0x7479,
+ 0x3ede, 0x7499, 0x7414, 0x7456, 0x7398, 0x4b8e, 0xe5fb, 0xe5fc,
+ 0x53d0, 0x3584, 0x720f, 0xe600, 0x55b4, 0xe602, 0x54cd, 0xe604,
+ 0x571d, 0x925d, 0x96f4, 0x9366, 0x57dd, 0x578d, 0x577f, 0x363e,
+ 0x58cb, 0x5a99, 0xe60f, 0xe610, 0xe611, 0xe612, 0x5a2c, 0x59b8,
+ 0x928f, 0x5a7e, 0x5acf, 0x5a12, 0xe619, 0xe61a, 0xe61b, 0xe61c,
+ 0x36f5, 0x6d05, 0x7443, 0x5a21, 0xe621,
+ /* 0x93 */
+ 0x5a81, 0xe623, 0xe624, 0x93e0, 0x748c, 0xe627, 0x7105, 0x4972,
+ 0x9408, 0xe62b, 0x93bd, 0x37a0, 0x5c1e, 0x5c9e, 0x5e5e, 0x5e48,
+ 0xe632, 0xe633, 0xe634, 0x5ecd, 0x5b4f, 0xe637, 0xe638, 0x3701,
+ 0xe63a, 0x36dd, 0xe63c, 0x36d3, 0x812a, 0xe63f, 0xe640, 0xe641,
+ 0xe642, 0x5f0c, 0x5f0e, 0xe645, 0xe646, 0x5a6b, 0xe648, 0x5b44,
+ 0x8614, 0xe64b, 0x8860, 0x607e, 0xe64e, 0xe64f, 0x5fdb, 0x3eb8,
+ 0xe652, 0xe653, 0xe654, 0xe655, 0x61c0, 0xe657, 0xe658, 0xe659,
+ 0x6199, 0x6198, 0x6075, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0x6471,
+ 0xe662, 0xe663, 0x3a29, 0xe665, 0xe666, 0xe667, 0xe668, 0x6337,
+ 0xe66a, 0x64b6, 0x6331, 0x63d1, 0xe66e, 0xe66f, 0x62a4, 0xe671,
+ 0x643b, 0x656b, 0x6972, 0x3bf4, 0xe676, 0xe677, 0xe678, 0xe679,
+ 0x550d, 0xe67b, 0xe67c, 0xe67d, 0x66ce, 0xe67f, 0xe680, 0x3ae0,
+ 0x4190, 0xe683, 0xe684, 0xe685, 0xe686, 0xe687, 0xe688, 0x78ee,
+ 0xe68a, 0xe68b, 0xe68c, 0x3464, 0xe68e, 0xe68f, 0xe690, 0x668e,
+ 0xe692, 0x666b, 0x4b93, 0x6630, 0xe696, 0xe697, 0x6663, 0xe699,
+ 0xe69a, 0x661e, 0xe69c, 0x38d1, 0xe69e, 0xe69f, 0x3b99, 0xe6a1,
+ 0xe6a2, 0x74d0, 0x3b96, 0x678f, 0xe6a6, 0x68b6, 0x681e, 0x3bc4,
+ 0x6abe, 0x3863, 0xe6ac, 0xe6ad, 0x6a33, 0x6a52, 0x6ac9, 0x6b05,
+ 0xe6b2, 0x6511, 0x6898, 0x6a4c, 0x3bd7, 0x6a7a, 0x6b57, 0xe6b9,
+ 0xe6ba, 0x93a0, 0x92f2, 0xe6bd, 0xe6be,
+ /* 0x94 */
+ 0x9289, 0xe6c0, 0xe6c1, 0x9467, 0x6da5, 0x6f0b, 0xe6c5, 0x6d67,
+ 0xe6c7, 0x3d8f, 0x6e04, 0xe6ca, 0x5a3d, 0x6e0a, 0x5847, 0x6d24,
+ 0x7842, 0x713b, 0xe6d1, 0xe6d2, 0x70f1, 0x7250, 0x7287, 0x7294,
+ 0xe6d7, 0xe6d8, 0x5179, 0xe6da, 0xe6db, 0x747a, 0xe6dd, 0xe6de,
+ 0xe6df, 0xe6e0, 0xe6e1, 0x3f06, 0x3eb1, 0xe6e4, 0xe6e5, 0xe6e6,
+ 0x60a7, 0x3ef3, 0x74cc, 0x743c, 0x9387, 0x7437, 0x449f, 0xe6ee,
+ 0x4551, 0x7583, 0x3f63, 0xe6f2, 0xe6f3, 0x3f58, 0x7555, 0x7673,
+ 0xe6f7, 0x3b19, 0x7468, 0xe6fa, 0xe6fb, 0xe6fc, 0x3afb, 0x3dcd,
+ 0xe6ff, 0x3eff, 0xe701, 0xe702, 0x91fa, 0x5732, 0x9342, 0xe706,
+ 0xe707, 0x50df, 0xe709, 0xe70a, 0x7778, 0xe70c, 0x770e, 0x770f,
+ 0x777b, 0xe710, 0xe711, 0x3a5e, 0xe713, 0x7438, 0x749b, 0x3ebf,
+ 0xe717, 0xe718, 0x40c8, 0xe71a, 0xe71b, 0x9307, 0xe71d, 0x781e,
+ 0x788d, 0x7888, 0x78d2, 0x73d0, 0x7959, 0xe724, 0xe725, 0x410e,
+ 0x799b, 0x8496, 0x79a5, 0x6a2d, 0xe72b, 0x7a3a, 0x79f4, 0x416e,
+ 0xe72f, 0x4132, 0x9235, 0x79f1, 0xe733, 0xe734, 0xe735, 0xe736,
+ 0xe737, 0x3597, 0x556b, 0x3570, 0x36aa, 0xe73c, 0xe73d, 0x7ae2,
+ 0x5a59, 0xe740, 0xe741, 0xe742, 0x5a0d, 0xe744, 0x78f0, 0x5a2a,
+ 0xe747, 0x7afe, 0x41f9, 0x7c5d, 0x7c6d, 0x4211, 0xe74d, 0xe74e,
+ 0xe74f, 0x7ccd, 0xe751, 0xe752, 0x7c8e, 0x7c7c, 0x7cae, 0x6ab2,
+ 0x7ddc, 0x7e07, 0x7dd3, 0x7f4e, 0xe75b,
+ /* 0x95 */
+ 0xe75c, 0xe75d, 0x7d97, 0xe75f, 0x426a, 0xe761, 0xe762, 0x67d6,
+ 0xe764, 0xe765, 0x57c4, 0xe767, 0xe768, 0xe769, 0x7fdd, 0x7b27,
+ 0xe76c, 0xe76d, 0xe76e, 0x7b0c, 0xe770, 0x99e6, 0x8645, 0x9a63,
+ 0x6a1c, 0xe775, 0x39e2, 0xe777, 0xe778, 0x9a1f, 0xe77a, 0x8480,
+ 0xe77c, 0xe77d, 0x44ea, 0x8137, 0x4402, 0x80c6, 0x8109, 0x8142,
+ 0xe784, 0x98c3, 0xe786, 0x8262, 0x8265, 0xe789, 0x8453, 0xe78b,
+ 0x8610, 0xe78d, 0x5a86, 0x417f, 0xe790, 0x5b2b, 0xe792, 0x5ae4,
+ 0xe794, 0x86a0, 0xe796, 0xe797, 0x882d, 0xe799, 0x5a02, 0x886e,
+ 0x4f45, 0x8887, 0x88bf, 0x88e6, 0x8965, 0x894d, 0xe7a2, 0x8954,
+ 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7, 0xe7a8, 0xe7a9, 0x3ead, 0x84a3,
+ 0x46f5, 0x46cf, 0x37f2, 0x8a3d, 0x8a1c, 0xe7b1, 0x5f4d, 0x922b,
+ 0xe7b4, 0x65d4, 0x7129, 0x70c4, 0xe7b8, 0x9d6d, 0x8c9f, 0x8ce9,
+ 0xe7bc, 0x599a, 0x77c3, 0x59f0, 0x436e, 0x36d4, 0x8e2a, 0x8ea7,
+ 0xe7c4, 0x8f30, 0x8f4a, 0x42f4, 0x6c58, 0x6fbb, 0xe7ca, 0x489b,
+ 0x6f79, 0x6e8b, 0xe7ce, 0x9be9, 0x36b5, 0xe7d1, 0x90bb, 0x9097,
+ 0x5571, 0x4906, 0x91bb, 0x9404, 0xe7d8, 0x4062, 0xe7da, 0x9427,
+ 0xe7dc, 0xe7dd, 0x84e5, 0x8a2b, 0x9599, 0x95a7, 0x9597, 0x9596,
+ 0xe7e4, 0x7445, 0x3ec2, 0xe7e7, 0xe7e8, 0xe7e9, 0x3ee7, 0xe7eb,
+ 0x968f, 0xe7ed, 0xe7ee, 0xe7ef, 0x3ecc, 0xe7f1, 0xe7f2, 0xe7f3,
+ 0x7412, 0x746b, 0x3efc, 0x9741, 0xe7f8,
+ /* 0x96 */
+ 0x6847, 0x4a1d, 0xe7fb, 0xe7fc, 0x975d, 0x9368, 0xe7ff, 0xe800,
+ 0xe801, 0xe802, 0x92ba, 0x5b11, 0x8b69, 0x493c, 0x73f9, 0xe808,
+ 0x979b, 0x9771, 0x9938, 0xe80c, 0x5dc1, 0xe80e, 0xe80f, 0x981f,
+ 0xe811, 0x92f6, 0xe813, 0x91e5, 0x44c0, 0xe816, 0xe817, 0xe818,
+ 0x98dc, 0xe81a, 0x3f00, 0x922a, 0x4925, 0x8414, 0x993b, 0x994d,
+ 0xe821, 0x3dfd, 0x999b, 0x4b6f, 0x99aa, 0x9a5c, 0xe827, 0xe828,
+ 0x6a8f, 0x9a21, 0x5afe, 0x9a2f, 0xe82d, 0x4b90, 0xe82f, 0x99bc,
+ 0x4bbd, 0x4b97, 0x937d, 0x5872, 0xe835, 0x5822, 0xe837, 0xe838,
+ 0x7844, 0xe83a, 0xe83b, 0x68c5, 0x3d7d, 0x9458, 0x3927, 0x6150,
+ 0xe841, 0xe842, 0x6107, 0x9c4f, 0x9c53, 0x9c7b, 0x9c35, 0x9c10,
+ 0x9b7f, 0x9bcf, 0xe84b, 0x9b9f, 0xe84d, 0xe84e, 0x9d21, 0x4cae,
+ 0xe851, 0x9e18, 0x4cb0, 0x9d0c, 0xe855, 0xe856, 0xe857, 0xe858,
+ 0x9da5, 0x84bd, 0xe85b, 0xe85c, 0xe85d, 0x85fc, 0x4533, 0xe860,
+ 0xe861, 0xe862, 0x8420, 0x85ee, 0xe865, 0xe866, 0xe867, 0x79e2,
+ 0xe869, 0xe86a, 0x492d, 0xe86c, 0x3d62, 0x93db, 0x92be, 0x9348,
+ 0xe871, 0x78b9, 0x9277, 0x944d, 0x4fe4, 0x3440, 0x9064, 0xe878,
+ 0x783d, 0x7854, 0x78b6, 0x784b, 0xe87d, 0xe87e, 0xe87f, 0x369a,
+ 0x4f72, 0x6fda, 0x6fd9, 0x701e, 0x701e, 0x5414, 0xe887, 0x57bb,
+ 0x58f3, 0x578a, 0x9d16, 0x57d7, 0x7134, 0x34af, 0xe88f, 0x71eb,
+ 0xe891, 0xe892, 0x5b28, 0xe894, 0xe895,
+ /* 0x97 */
+ 0x610c, 0x5ace, 0x5a0b, 0x42bc, 0xe89a, 0x372c, 0x4b7b, 0xe89d,
+ 0x93bb, 0x93b8, 0xe8a0, 0xe8a1, 0x8472, 0xe8a3, 0xe8a4, 0xe8a5,
+ 0xe8a6, 0xe8a7, 0x5994, 0xe8a9, 0xe8aa, 0x7da8, 0xe8ac, 0xe8ad,
+ 0xe8ae, 0xe8af, 0xe8b0, 0x92e5, 0x73e2, 0x3ee9, 0x74b4, 0xe8b5,
+ 0xe8b6, 0x3ee1, 0xe8b8, 0x6ad8, 0x73f3, 0x73fb, 0x3ed6, 0xe8bd,
+ 0xe8be, 0xe8bf, 0xe8c0, 0xe8c1, 0xe8c2, 0xe8c3, 0x7448, 0xe8c5,
+ 0x70a5, 0xe8c7, 0x9284, 0x73e6, 0x935f, 0xe8cb, 0x9331, 0xe8cd,
+ 0xe8ce, 0x9386, 0xe8d0, 0xe8d1, 0x4935, 0xe8d3, 0x716b, 0xe8d5,
+ 0xe8d6, 0x56a4, 0xe8d8, 0xe8d9, 0xe8da, 0x5502, 0x79c4, 0xe8dd,
+ 0x7dfe, 0xe8df, 0xe8e0, 0xe8e1, 0x452e, 0x9401, 0x370a, 0xe8e5,
+ 0xe8e6, 0x59b0, 0xe8e8, 0xe8e9, 0xe8ea, 0x5aa1, 0x36e2, 0xe8ed,
+ 0x36b0, 0x925f, 0x5a79, 0xe8f1, 0xe8f2, 0x9374, 0x3ccd, 0xe8f5,
+ 0x4a96, 0x398a, 0x50f4, 0x3d69, 0x3d4c, 0xe8fb, 0x7175, 0x42fb,
+ 0xe8fe, 0x6e0f, 0xe900, 0x44eb, 0x6d57, 0xe903, 0x7067, 0x6caf,
+ 0x3cd6, 0xe907, 0xe908, 0x6e02, 0x6f0c, 0x3d6f, 0xe90c, 0x7551,
+ 0x36bc, 0x34c8, 0x4680, 0x3eda, 0x4871, 0x59c4, 0x926e, 0x493e,
+ 0x8f41, 0xe917, 0xe918, 0x5812, 0x57c8, 0x36d6, 0xe91c, 0x70fe,
+ 0xe91e, 0xe91f, 0xe920, 0xe921, 0xe922, 0x68b9, 0x6967, 0xe925,
+ 0xe926, 0xe927, 0xe928, 0xe929, 0xe92a, 0xe92b, 0xe92c, 0x6a1a,
+ 0xe92e, 0xe92f, 0x843e, 0x44df, 0x44ce,
+ /* 0x98 */
+ 0xe933, 0xe934, 0xe935, 0xe936, 0x6f17, 0xe938, 0x833d, 0xe93a,
+ 0x83ed, 0xe93c, 0xe93d, 0xe93e, 0x5989, 0x5a82, 0xe941, 0x5a61,
+ 0x5a71, 0xe944, 0xe945, 0x372d, 0x59ef, 0xe948, 0x36c7, 0x718e,
+ 0x9390, 0x669a, 0xe94d, 0x5a6e, 0x5a2b, 0xe950, 0x6a2b, 0xe952,
+ 0xe953, 0xe954, 0xe955, 0x711d, 0xe957, 0xe958, 0x4fb0, 0xe95a,
+ 0x5cc2, 0xe95c, 0xe95d, 0xe95e, 0x6a0c, 0xe960, 0xe961, 0x70a6,
+ 0x7133, 0xe964, 0x3da5, 0x6cdf, 0xe967, 0xe968, 0x7e65, 0x59eb,
+ 0x5d2f, 0x3df3, 0x5f5c, 0xe96e, 0xe96f, 0x7da4, 0x8426, 0x5485,
+ 0xe973, 0xe974, 0xe975, 0x577e, 0xe977, 0xe978, 0x3fe5, 0xe97a,
+ 0xe97b, 0x7003, 0xe97d, 0x5d70, 0x738f, 0x7cd3, 0xe981, 0xe982,
+ 0x4fc8, 0x7fe7, 0x72cd, 0x7310, 0xe987, 0x7338, 0x7339, 0xe98a,
+ 0x7341, 0x7348, 0x3ea9, 0xe98e, 0x906c, 0x71f5, 0xe991, 0x73e1,
+ 0x81f6, 0x3eca, 0x770c, 0x3ed1, 0x6ca2, 0x56fd, 0x7419, 0x741e,
+ 0x741f, 0x3ee2, 0x3ef0, 0x3ef4, 0x3efa, 0x74d3, 0x3f0e, 0x3f53,
+ 0x7542, 0x756d, 0x7572, 0x758d, 0x3f7c, 0x75c8, 0x75dc, 0x3fc0,
+ 0x764d, 0x3fd7, 0x7674, 0x3fdc, 0x767a, 0xe9b0, 0x7188, 0x5623,
+ 0x8980, 0x5869, 0x401d, 0x7743, 0x4039, 0x6761, 0x4045, 0x35db,
+ 0x7798, 0x406a, 0x406f, 0x5c5e, 0x77be, 0x77cb, 0x58f2, 0x7818,
+ 0x70b9, 0x781c, 0x40a8, 0x7839, 0x7847, 0x7851, 0x7866, 0x8448,
+ 0xe9cb, 0x7933, 0x6803, 0x7932, 0x4103,
+ /* 0x99 */
+ 0x4109, 0x7991, 0x7999, 0x8fbb, 0x7a06, 0x8fbc, 0x4167, 0x7a91,
+ 0x41b2, 0x7abc, 0x8279, 0x41c4, 0x7acf, 0x7adb, 0x41cf, 0x4e21,
+ 0x7b62, 0x7b6c, 0x7b7b, 0x7c12, 0x7c1b, 0x4260, 0x427a, 0x7c7b,
+ 0x7c9c, 0x428c, 0x7cb8, 0x4294, 0x7ced, 0x8f93, 0x70c0, 0xe9ef,
+ 0x7dcf, 0x7dd4, 0x7dd0, 0x7dfd, 0x7fae, 0x7fb4, 0x729f, 0x4397,
+ 0x8020, 0x8025, 0x7b39, 0x802e, 0x8031, 0x8054, 0x3dcc, 0x57b4,
+ 0x70a0, 0x80b7, 0x80e9, 0x43ed, 0x810c, 0x732a, 0x810e, 0x8112,
+ 0x7560, 0x8114, 0x4401, 0x3b39, 0x8156, 0x8159, 0x815a, 0x4413,
+ 0x583a, 0x817c, 0x8184, 0x4425, 0x8193, 0x442d, 0x81a5, 0x57ef,
+ 0x81c1, 0x81e4, 0x8254, 0x448f, 0x82a6, 0x8276, 0x82ca, 0x82d8,
+ 0x82ff, 0x44b0, 0x8357, 0x9669, 0x698a, 0x8405, 0x70f5, 0x8464,
+ 0x60e3, 0x8488, 0x4504, 0x84be, 0x84e1, 0x84f8, 0x8510, 0x8538,
+ 0x8552, 0x453b, 0x856f, 0x8570, 0x85e0, 0x4577, 0x8672, 0x8692,
+ 0x86b2, 0x86ef, 0x9645, 0x878b, 0x4606, 0x4617, 0x88ae, 0x88ff,
+ 0x8924, 0x8947, 0x8991, 0xea43, 0x8a29, 0x8a38, 0x8a94, 0x8ab4,
+ 0x8c51, 0x8cd4, 0x8cf2, 0x8d1c, 0x4798, 0x585f, 0x8dc3, 0x47ed,
+ 0x4eee, 0x8e3a, 0x55d8, 0x5754, 0x8e71, 0x55f5, 0x8eb0, 0x4837,
+ 0x8ece, 0x8ee2, 0x8ee4, 0x8eed, 0x8ef2, 0x8fb7, 0x8fc1, 0x8fca,
+ 0x8fcc, 0x9033, 0x99c4, 0x48ad, 0x98e0, 0x9213, 0x491e, 0x9228,
+ 0x9258, 0x926b, 0x92b1, 0x92ae, 0x92bf,
+ /* 0x9a */
+ 0x92e3, 0x92eb, 0x92f3, 0x92f4, 0x92fd, 0x9343, 0x9384, 0x93ad,
+ 0x4945, 0x4951, 0x9ebf, 0x9417, 0x5301, 0x941d, 0x942d, 0x943e,
+ 0x496a, 0x9454, 0x9479, 0x952d, 0x95a2, 0x49a7, 0x95f4, 0x9633,
+ 0x49e5, 0x67a0, 0x4a24, 0x9740, 0x4a35, 0x97b2, 0x97c2, 0x5654,
+ 0x4ae4, 0x60e8, 0x98b9, 0x4b19, 0x98f1, 0x5844, 0x990e, 0x9919,
+ 0x51b4, 0x991c, 0x9937, 0x9942, 0x995d, 0x9962, 0x4b70, 0x99c5,
+ 0x4b9d, 0x9a3c, 0x9b0f, 0x7a83, 0x9b69, 0x9b81, 0x9bdd, 0x9bf1,
+ 0x9bf4, 0x4c6d, 0x9c20, 0x376f, 0xeaa9, 0x9d49, 0x9c3a, 0x9efe,
+ 0x5650, 0x9d93, 0x9dbd, 0x9dc0, 0x9dfc, 0x94f6, 0x8fb6, 0x9e7b,
+ 0x9eac, 0x9eb1, 0x9ebd, 0x9ec6, 0x94dc, 0x9ee2, 0x9ef1, 0x9ef8,
+ 0x7ac8, 0x9f44, 0xeabf, 0xeac0, 0xeac1, 0x691a, 0x94c3, 0x59ac,
+ 0xeac5, 0x5840, 0x94c1, 0x37b9, 0xeac9, 0xeaca, 0xeacb, 0xeacc,
+ 0x5757, 0x7173, 0xeacf, 0xead0, 0xead1, 0x546a, 0xead3, 0xead4,
+ 0x549e, 0xead6, 0xead7, 0xead8, 0xead9, 0xeada, 0x60e7, 0xeadc,
+ 0x567a, 0xeade, 0xeadf, 0xeae0, 0xeae1, 0xeae2, 0xeae3, 0x6955,
+ 0x9c2f, 0x87a5, 0xeae7, 0xeae8, 0xeae9, 0xeaea, 0xeaeb, 0xeaec,
+ 0x5c20, 0xeaee, 0x5e0b, 0xeaf0, 0xeaf1, 0xeaf2, 0x671e, 0xeaf4,
+ 0xeaf5, 0xeaf6, 0x3647, 0xeaf8, 0xeaf9, 0xeafa, 0xeafb, 0x5364,
+ 0x84ad, 0xeafe, 0xeaff, 0xeb00, 0x8b81, 0xeb02, 0xeb03, 0xeb04,
+ 0xeb05, 0x4e78, 0x70bb, 0xeb08, 0xeb09,
+ /* 0x9b */
+ 0xeb0a, 0xeb0b, 0xeb0c, 0xeb0d, 0xeb0e, 0xeb0f, 0x62c3, 0xeb11,
+ 0xeb12, 0x7198, 0x6855, 0xeb15, 0x69e9, 0x36c8, 0xeb18, 0xeb19,
+ 0xeb1a, 0xeb1b, 0xeb1c, 0xeb1d, 0x82fd, 0xeb1f, 0xeb20, 0xeb21,
+ 0x89a5, 0xeb23, 0x8fa0, 0xeb25, 0x97b8, 0xeb27, 0x9847, 0x9abd,
+ 0xeb2a, 0xeb2b, 0xeb2c, 0xeb2d, 0xeb2e, 0xeb2f, 0xeb30, 0xeb31,
+ 0xeb32, 0xeb33, 0xeb34, 0xeb35, 0xeb36, 0xeb37, 0xeb38, 0xeb39,
+ 0x5fb1, 0x6648, 0x66bf, 0xeb3d, 0xeb3e, 0xeb3f, 0x7201, 0xeb41,
+ 0x77d7, 0xeb43, 0xeb44, 0x7e87, 0xeb46, 0x58b5, 0x670e, 0x6918,
+ 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, 0xeb50, 0x48d0,
+ 0x4ab8, 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, 0xeb58, 0xeb59,
+ 0xeb5a, 0xeb5b, 0x51d2, 0xeb5d, 0x599f, 0xeb5f, 0x3bbe, 0xeb61,
+ 0xeb62, 0xeb63, 0x5788, 0xeb65, 0x399b, 0xeb67, 0xeb68, 0xeb69,
+ 0x3762, 0xeb6b, 0x8b5e, 0xeb6d, 0x99d6, 0xeb6f, 0xeb70, 0xeb71,
+ 0x7209, 0xeb73, 0xeb74, 0x5965, 0xeb76, 0xeb77, 0xeb78, 0x8eda,
+ 0xeb7a, 0x528f, 0x573f, 0x7171, 0xeb7e, 0xeb7f, 0xeb80, 0xeb81,
+ 0x55bc, 0xeb83, 0xeb84, 0xeb85, 0x91d4, 0x3473, 0xeb88, 0xeb89,
+ 0xeb8a, 0x4718, 0xeb8c, 0xeb8d, 0xeb8e, 0xeb8f, 0xeb90, 0x5066,
+ 0x34fb, 0xeb93, 0x60de, 0xeb95, 0x477c, 0xeb97, 0xeb98, 0xeb99,
+ 0xeb9a, 0xeb9b, 0x57a1, 0x7151, 0x6fb6, 0xeb9f, 0xeba0, 0x9056,
+ 0xeba2, 0xeba3, 0x8b62, 0xeba5, 0xeba6,
+ /* 0x9c */
+ 0x5d5b, 0xeba8, 0x8f36, 0xebaa, 0xebab, 0x8aea, 0xebad, 0xebae,
+ 0xebaf, 0xebb0, 0x4bc0, 0xebb2, 0xebb3, 0xebb4, 0x9465, 0xebb6,
+ 0x6195, 0x5a27, 0xebb9, 0x4fbb, 0x56b9, 0xebbc, 0xebbd, 0x4e6a,
+ 0xebbf, 0x9656, 0x6d8f, 0xebc2, 0x3618, 0x8977, 0xebc5, 0xebc6,
+ 0xebc7, 0xebc8, 0x71df, 0xebca, 0x7b42, 0xebcc, 0xebcd, 0xebce,
+ 0x9104, 0xebd0, 0x7a45, 0x9df0, 0xebd3, 0x9a26, 0xebd5, 0x365f,
+ 0xebd7, 0xebd8, 0x7983, 0xebda, 0xebdb, 0x5d2c, 0xebdd, 0x83cf,
+ 0xebdf, 0x46d0, 0xebe1, 0x753b, 0x8865, 0xebe4, 0x58b6, 0x371c,
+ 0xebe7, 0xebe8, 0xebe9, 0x3c54, 0xebeb, 0xebec, 0x9281, 0xebee,
+ 0xebef, 0x9330, 0xebf1, 0xebf2, 0x6c39, 0x949f, 0xebf5, 0xebf6,
+ 0x8827, 0x88f5, 0xebf9, 0xebfa, 0xebfb, 0x6eb8, 0xebfd, 0xebfe,
+ 0x39a4, 0x36b9, 0x5c10, 0x79e3, 0x453f, 0x66b6, 0xec05, 0xec06,
+ 0x8943, 0xec08, 0xec09, 0x56d6, 0x40df, 0xec0c, 0x39a1, 0xec0e,
+ 0xec0f, 0xec10, 0x71ad, 0x8366, 0xec13, 0xec14, 0x5a67, 0x4cb7,
+ 0xec17, 0xec18, 0xec19, 0xec1a, 0xec1b, 0xec1c, 0xec1d, 0x7b43,
+ 0x797e, 0xec20, 0x6fb5, 0xec22, 0x6a03, 0xec24, 0x53a2, 0xec26,
+ 0x93bf, 0x6836, 0x975d, 0xec2a, 0xec2b, 0xec2c, 0xec2d, 0xec2e,
+ 0xec2f, 0x5d85, 0xec31, 0xec32, 0x5715, 0x9823, 0xec35, 0x5dab,
+ 0xec37, 0x65be, 0x69d5, 0x53d2, 0xec3b, 0xec3c, 0x3c11, 0x6736,
+ 0xec3f, 0xec40, 0xec41, 0xec42, 0xec43,
+ /* 0x9d */
+ 0xec44, 0xec45, 0xec46, 0xec47, 0xec48, 0xec49, 0x35ca, 0xec4b,
+ 0xec4c, 0x48fa, 0x63e6, 0xec4f, 0x7808, 0x9255, 0xec52, 0x43f2,
+ 0xec54, 0x43df, 0xec56, 0xec57, 0xec58, 0x59f8, 0xec5a, 0x8f0b,
+ 0xec5c, 0xec5d, 0x7b51, 0xec5f, 0xec60, 0x3df7, 0xec62, 0xec63,
+ 0x8fd0, 0x728f, 0x568b, 0xec67, 0xec68, 0xec69, 0xec6a, 0xec6b,
+ 0xec6c, 0xec6d, 0xec6e, 0xec6f, 0xec70, 0xec71, 0xec72, 0xec73,
+ 0x7e9f, 0xec75, 0xec76, 0x4ca4, 0x9547, 0xec79, 0x71a2, 0xec7b,
+ 0x4d91, 0x9012, 0xec7e, 0x4d9c, 0xec80, 0x8fbe, 0x55c1, 0x8fba,
+ 0xec84, 0x8fb9, 0xec86, 0x4509, 0x7e7f, 0x6f56, 0x6ab1, 0x4eea,
+ 0x34e4, 0xec8d, 0xec8e, 0x373a, 0x8e80, 0xec91, 0xec92, 0xec93,
+ 0xec94, 0xec95, 0xec96, 0x3deb, 0xec98, 0xec99, 0xec9a, 0xec9b,
+ 0x4e9a, 0xec9d, 0xec9e, 0x56bf, 0xeca0, 0x8e0e, 0x5b6d, 0xeca3,
+ 0xeca4, 0x63de, 0x62d0, 0xeca7, 0xeca8, 0x6530, 0x562d, 0xecab,
+ 0x541a, 0xecad, 0x3dc6, 0xecaf, 0x4c7d, 0x5622, 0x561e, 0x7f49,
+ 0xecb4, 0x5975, 0xecb6, 0x8770, 0x4e1c, 0xecb9, 0xecba, 0xecbb,
+ 0x8117, 0x9d5e, 0x8d18, 0x763b, 0x9c45, 0x764e, 0x77b9, 0x9345,
+ 0x5432, 0x8148, 0x82f7, 0x5625, 0x8132, 0x8418, 0x80bd, 0x55ea,
+ 0x7962, 0x5643, 0x5416, 0xeccf, 0x35ce, 0x5605, 0x55f1, 0x66f1,
+ 0xecd4, 0x362d, 0x7534, 0x55f0, 0x55ba, 0x5497, 0x5572, 0xecdb,
+ 0xecdc, 0x5ed0, 0xecde, 0xecdf, 0xece0,
+ /* 0x9e */
+ 0xece1, 0x9eab, 0x7d5a, 0x55de, 0xece5, 0x629d, 0x976d, 0x5494,
+ 0x8ccd, 0x71f6, 0x9176, 0x63fc, 0x63b9, 0x63fe, 0x5569, 0xecf0,
+ 0x9c72, 0xecf2, 0x519a, 0x34df, 0xecf5, 0x51a7, 0x544d, 0x551e,
+ 0x5513, 0x7666, 0x8e2d, 0xecfc, 0x75b1, 0x80b6, 0x8804, 0x8786,
+ 0x88c7, 0x81b6, 0x841c, 0xed04, 0x44ec, 0x7304, 0xed07, 0x5b90,
+ 0x830b, 0xed0a, 0x567b, 0xed0c, 0xed0d, 0xed0e, 0xed0f, 0xed10,
+ 0xed11, 0x9170, 0xed13, 0x9208, 0xed15, 0xed16, 0xed17, 0xed18,
+ 0x7266, 0xed1a, 0x474e, 0xed1c, 0xed1d, 0xed1e, 0x40fa, 0x9c5d,
+ 0x651f, 0xed22, 0x48f3, 0xed24, 0xed25, 0xed26, 0xed27, 0x6062,
+ 0xed29, 0xed2a, 0xed2b, 0xed2c, 0xed2d, 0x71a3, 0x7e8e, 0x9d50,
+ 0x4e1a, 0x4e04, 0x3577, 0x5b0d, 0x6cb2, 0x5367, 0x36ac, 0x39dc,
+ 0x537d, 0x36a5, 0xed3b, 0x589a, 0xed3d, 0x822d, 0x544b, 0x57aa,
+ 0xed41, 0xed42, 0xed43, 0x3a52, 0xed45, 0x7374, 0xed47, 0x4d09,
+ 0x9bed, 0xed4a, 0xed4b, 0x4c5b, 0xed4d, 0xed4e, 0xed4f, 0x845c,
+ 0xed51, 0xed52, 0xed53, 0xed54, 0x632e, 0x7d25, 0xed57, 0xed58,
+ 0x3a2a, 0x9008, 0x52cc, 0x3e74, 0x367a, 0x45e9, 0xed5f, 0x7640,
+ 0x5af0, 0xed62, 0x787a, 0x47b6, 0x58a7, 0x40bf, 0x567c, 0x9b8b,
+ 0x5d74, 0x7654, 0xed6b, 0x9e85, 0x4ce1, 0x75f9, 0x37fb, 0x6119,
+ 0xed71, 0xed72, 0xed73, 0x565d, 0xed75, 0x57a7, 0xed77, 0xed78,
+ 0x5234, 0xed7a, 0x35ad, 0x6c4a, 0x9d7c,
+ /* 0x9f */
+ 0x7c56, 0x9b39, 0x57de, 0xed81, 0x5c53, 0x64d3, 0xed84, 0xed85,
+ 0xed86, 0x86ad, 0xed88, 0xed89, 0xed8a, 0xed8b, 0xed8c, 0x51fe,
+ 0xed8e, 0x5d8e, 0x9703, 0xed91, 0x9e81, 0x904c, 0x7b1f, 0x9b02,
+ 0x5cd1, 0x7ba3, 0x6268, 0x6335, 0x9aff, 0x7bcf, 0x9b2a, 0x7c7e,
+ 0x9b2e, 0x7c42, 0x7c86, 0x9c15, 0x7bfc, 0x9b09, 0x9f17, 0x9c1b,
+ 0xeda6, 0x9f5a, 0x5573, 0x5bc3, 0x4ffd, 0x9e98, 0x4ff2, 0x5260,
+ 0x3e06, 0x52d1, 0x5767, 0x5056, 0x59b7, 0x5e12, 0x97c8, 0x9dab,
+ 0x8f5c, 0x5469, 0x97b4, 0x9940, 0x97ba, 0x532c, 0x6130, 0x692c,
+ 0x53da, 0x9c0a, 0x9d02, 0x4c3b, 0x9641, 0x6980, 0x50a6, 0x7546,
+ 0xedc6, 0x99da, 0x5273, 0xedc9, 0x9159, 0x9681, 0x915c, 0xedcd,
+ 0x9151, 0xedcf, 0x637f, 0xedd1, 0x6aca, 0x5611, 0x918e, 0x757a,
+ 0x6285, 0xedd7, 0x734f, 0x7c70, 0xedda, 0xeddb, 0xeddc, 0xeddd,
+ 0x76d6, 0x9b9d, 0x4e2a, 0xede1, 0x83be, 0x8842, 0xede4, 0x5c4a,
+ 0x69c0, 0x50ed, 0x577a, 0x521f, 0x5df5, 0x4ece, 0x6c31, 0xeded,
+ 0x4f39, 0x549c, 0x54da, 0x529a, 0x8d82, 0x35fe, 0x5f0c, 0x35f3,
+ 0xedf6, 0x6b52, 0x917c, 0x9fa5, 0x9b97, 0x982e, 0x98b4, 0x9aba,
+ 0x9ea8, 0x9e84, 0x717a, 0x7b14, 0xee02, 0x6bfa, 0x8818, 0x7f78,
+ 0xee06, 0x5620, 0xee08, 0x8e77, 0x9f53, 0xee0b, 0x8dd4, 0x8e4f,
+ 0x9e1c, 0x8e01, 0x6282, 0xee11, 0x8e28, 0x8e75, 0x7ad3, 0xee15,
+ 0x7a3e, 0x78d8, 0x6cea, 0x8a67, 0x7607,
+ /* 0xa0 */
+ 0xee1b, 0x9f26, 0x6cce, 0x87d6, 0x75c3, 0xee20, 0x7853, 0xee22,
+ 0x8d0c, 0x72e2, 0x7371, 0x8b2d, 0x7302, 0x74f1, 0x8ceb, 0xee2a,
+ 0x862f, 0x5fba, 0x88a0, 0x44b7, 0xee2f, 0xee30, 0xee31, 0xee32,
+ 0x8a7e, 0xee34, 0xee35, 0x60fd, 0x7667, 0x9ad7, 0x9d44, 0x936e,
+ 0x9b8f, 0x87f5, 0xee3d, 0x880f, 0x8cf7, 0x732c, 0x9721, 0x9bb0,
+ 0x35d6, 0x72b2, 0x4c07, 0x7c51, 0x994a, 0xee48, 0x6159, 0x4c04,
+ 0x9e96, 0x617d, 0xee4d, 0x575f, 0x616f, 0x62a6, 0x6239, 0x62ce,
+ 0x3a5c, 0x61e2, 0x53aa, 0xee56, 0x6364, 0x6802, 0x35d2, 0x5d57,
+ 0xee5b, 0x8fda, 0xee5d, 0xee5e, 0x50d9, 0xee60, 0x7906, 0x5332,
+ 0x9638, 0xee64, 0x4065, 0xee66, 0x77fe, 0xee68, 0x7cc2, 0xee6a,
+ 0x7cda, 0x7a2d, 0x8066, 0x8063, 0x7d4d, 0x7505, 0x74f2, 0x8994,
+ 0x821a, 0x670c, 0x8062, 0xee76, 0x805b, 0x74f0, 0x8103, 0x7724,
+ 0x8989, 0xee7c, 0x7553, 0xee7e, 0x87a9, 0x87ce, 0x81c8, 0x878c,
+ 0x8a49, 0x8cad, 0x8b43, 0x772b, 0x74f8, 0x84da, 0x3635, 0x69b2,
+ 0x8da6, 0xee8c, 0x89a9, 0x7468, 0x6db9, 0x87c1, 0xee91, 0x74e7,
+ 0x3ddb, 0x7176, 0x60a4, 0x619c, 0x3cd1, 0x7162, 0x6077, 0xee9a,
+ 0x7f71, 0xee9c, 0x7250, 0x60e9, 0x4b7e, 0x5220, 0x3c18, 0xeea2,
+ 0xeea3, 0xeea4, 0xeea5, 0xeea6, 0xeea7, 0xeea8, 0xeea9, 0xeeaa,
+ 0x5cc1, 0xeeac, 0xeead, 0xeeae, 0xeeaf, 0xeeb0, 0xeeb1, 0x4562,
+ 0x5b1f, 0xeeb4, 0x9f50, 0x9ea6, 0xeeb7,
+ /* 0xa1 */
+ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2027, 0xff1b, 0xff1a,
+ 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52,
+ 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
+ 0x2014, 0xfe33, 0x2574, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
+ 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
+ 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
+ 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
+ 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b,
+ 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
+ 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7,
+ 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605,
+ 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105,
+ 0x00af, 0xffe3, 0xff3f, 0x02cd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e,
+ 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7,
+ 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267,
+ 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65,
+ 0xfe66, 0xff5e, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf,
+ 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
+ 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
+ 0x2199, 0x2198, 0x2225, 0x2223, 0xff0f,
+ /* 0xa2 */
+ 0xff3c, 0x2215, 0xfe68, 0xff04, 0xffe5, 0x3012, 0xffe0, 0xffe1,
+ 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
+ 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
+ 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
+ 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
+ 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
+ 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
+ 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e,
+ 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3,
+ 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12,
+ 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
+ 0x3028, 0x3029, 0x5341, 0x5344, 0x5345, 0xff21, 0xff22, 0xff23,
+ 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b,
+ 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33,
+ 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41,
+ 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49,
+ 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51,
+ 0xff52, 0xff53, 0xff54, 0xff55, 0xff56,
+ /* 0xa3 */
+ 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
+ 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
+ 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
+ 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
+ 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+ 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
+ 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
+ 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
+ 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa4 */
+ 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
+ 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
+ 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
+ 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
+ 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
+ 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
+ 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
+ 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11,
+ 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88,
+ 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3,
+ 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141,
+ 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207,
+ 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347,
+ 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929,
+ 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f,
+ 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236,
+ 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5,
+ 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4,
+ 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247,
+ 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19,
+ /* 0xa5 */
+ 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
+ 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
+ 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
+ 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
+ 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
+ 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
+ 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
+ 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e,
+ 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7,
+ 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17,
+ 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6,
+ 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11,
+ 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389,
+ 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531,
+ 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db,
+ 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f,
+ 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff,
+ 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f,
+ 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b,
+ 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
+ /* 0xa6 */
+ 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
+ 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
+ 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
+ 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
+ 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
+ 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
+ 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
+ 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f,
+ 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263,
+ 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2,
+ 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64,
+ 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50,
+ 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d,
+ 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001,
+ 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c,
+ 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e,
+ 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621,
+ 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34,
+ 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38,
+ 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63,
+ /* 0xa7 */
+ 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
+ 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
+ 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
+ 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
+ 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
+ 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
+ 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
+ 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747,
+ 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d,
+ 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4,
+ 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c,
+ 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90,
+ 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a,
+ 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8,
+ 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212,
+ 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d,
+ 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298,
+ 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538,
+ 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c,
+ 0x6756, 0x675e, 0x6749, 0x6746, 0x6760,
+ /* 0xa8 */
+ 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
+ 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
+ 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
+ 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
+ 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
+ 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
+ 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
+ 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b,
+ 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d,
+ 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2,
+ 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6,
+ 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a,
+ 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab,
+ 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b,
+ 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b,
+ 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155,
+ 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238,
+ 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb,
+ 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379,
+ 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475,
+ /* 0xa9 */
+ 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
+ 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
+ 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
+ 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
+ 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
+ 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
+ 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
+ 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46,
+ 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18,
+ 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97,
+ 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80,
+ 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff,
+ 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021,
+ 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e,
+ 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9,
+ 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8,
+ 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da,
+ 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e,
+ 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602,
+ 0x660e, 0x6600, 0x660f, 0x6615, 0x660a,
+ /* 0xaa */
+ 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
+ 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
+ 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
+ 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
+ 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
+ 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
+ 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
+ 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095,
+ 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248,
+ 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9,
+ 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a,
+ 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940,
+ 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54,
+ 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1,
+ 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d,
+ 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1,
+ 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7,
+ 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1,
+ 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580,
+ 0x961c, 0x9640, 0x963f, 0x963b, 0x9644,
+ /* 0xab */
+ 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
+ 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
+ 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
+ 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
+ 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
+ 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
+ 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
+ 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4,
+ 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf,
+ 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae,
+ 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8,
+ 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6,
+ 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5,
+ 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7,
+ 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08,
+ 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c,
+ 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d,
+ 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a,
+ 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301,
+ 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7,
+ /* 0xac */
+ 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
+ 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
+ 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
+ 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
+ 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
+ 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
+ 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
+ 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x6d3b,
+ 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38,
+ 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3,
+ 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272,
+ 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb,
+ 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c,
+ 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678,
+ 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701,
+ 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc,
+ 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947,
+ 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff,
+ 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04,
+ 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004,
+ /* 0xad */
+ 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
+ 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
+ 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
+ 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
+ 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
+ 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
+ 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
+ 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed,
+ 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b,
+ 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762,
+ 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df,
+ 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef,
+ 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f,
+ 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1,
+ 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a,
+ 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd,
+ 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d,
+ 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501,
+ 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9,
+ 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea,
+ /* 0xae */
+ 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
+ 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
+ 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
+ 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
+ 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
+ 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
+ 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
+ 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063,
+ 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f,
+ 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3,
+ 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346,
+ 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328,
+ 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642,
+ 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8,
+ 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853,
+ 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851,
+ 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845,
+ 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27,
+ 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87,
+ 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93,
+ /* 0xaf */
+ 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
+ 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
+ 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
+ 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
+ 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
+ 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
+ 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
+ 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x7825,
+ 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f,
+ 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7,
+ 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06,
+ 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22,
+ 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b,
+ 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015,
+ 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105,
+ 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a,
+ 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b,
+ 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338,
+ 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336,
+ 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
+ /* 0xb0 */
+ 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
+ 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
+ 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
+ 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
+ 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
+ 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
+ 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
+ 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b,
+ 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8,
+ 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c,
+ 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e,
+ 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d,
+ 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8,
+ 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3,
+ 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543,
+ 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538,
+ 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708,
+ 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4,
+ 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36,
+ 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40,
+ /* 0xb1 */
+ 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
+ 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
+ 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
+ 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
+ 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
+ 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
+ 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
+ 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5,
+ 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df,
+ 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7,
+ 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa,
+ 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384,
+ 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b,
+ 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557,
+ 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac,
+ 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668,
+ 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2,
+ 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0,
+ 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8,
+ 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba,
+ /* 0xb2 */
+ 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
+ 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
+ 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
+ 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
+ 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
+ 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
+ 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
+ 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7,
+ 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4,
+ 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db,
+ 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843,
+ 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20,
+ 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92,
+ 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c,
+ 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31,
+ 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a,
+ 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124,
+ 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398,
+ 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393,
+ 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c,
+ /* 0xb3 */
+ 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
+ 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
+ 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
+ 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
+ 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
+ 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
+ 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
+ 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8,
+ 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7,
+ 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670,
+ 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0,
+ 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5,
+ 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096,
+ 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269,
+ 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7,
+ 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594,
+ 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2,
+ 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599,
+ 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821,
+ 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960,
+ /* 0xb4 */
+ 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
+ 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
+ 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
+ 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
+ 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
+ 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
+ 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
+ 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2,
+ 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4,
+ 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562,
+ 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676,
+ 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f,
+ 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df,
+ 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb,
+ 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb,
+ 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e,
+ 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67,
+ 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24,
+ 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a,
+ 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb,
+ /* 0xb5 */
+ 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
+ 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
+ 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
+ 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
+ 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
+ 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
+ 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
+ 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97,
+ 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52,
+ 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e,
+ 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66,
+ 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052,
+ 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146,
+ 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403,
+ 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1,
+ 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2,
+ 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df,
+ 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0,
+ 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b,
+ 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41,
+ /* 0xb6 */
+ 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
+ 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
+ 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
+ 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
+ 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
+ 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
+ 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
+ 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593,
+ 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686,
+ 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7,
+ 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea,
+ 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd,
+ 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be,
+ 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d,
+ 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8,
+ 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4,
+ 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712,
+ 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b,
+ 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1,
+ 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc,
+ /* 0xb7 */
+ 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
+ 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
+ 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
+ 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
+ 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
+ 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
+ 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
+ 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a,
+ 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968,
+ 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b,
+ 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf,
+ 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5,
+ 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4,
+ 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164,
+ 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, 0x715e,
+ 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f,
+ 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f,
+ 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601,
+ 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df,
+ 0x775b, 0x776b, 0x7766, 0x775e, 0x7763,
+ /* 0xb8 */
+ 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
+ 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
+ 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
+ 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
+ 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
+ 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
+ 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
+ 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179,
+ 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431,
+ 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435,
+ 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f,
+ 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702,
+ 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc,
+ 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3,
+ 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c,
+ 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c,
+ 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca,
+ 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1,
+ 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, 0x8de4, 0x8de6,
+ 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a,
+ /* 0xb9 */
+ 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
+ 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
+ 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
+ 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
+ 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
+ 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
+ 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
+ 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd,
+ 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e,
+ 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da,
+ 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3,
+ 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617,
+ 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616,
+ 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e,
+ 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925,
+ 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7,
+ 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5,
+ 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84,
+ 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6,
+ 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147,
+ /* 0xba */
+ 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
+ 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
+ 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
+ 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
+ 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
+ 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
+ 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
+ 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff,
+ 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b,
+ 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7,
+ 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292,
+ 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d,
+ 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1,
+ 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7,
+ 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31,
+ 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75,
+ 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9,
+ 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0,
+ 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5,
+ 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac,
+ /* 0xbb */
+ 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
+ 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
+ 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
+ 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
+ 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
+ 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
+ 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
+ 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa,
+ 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d,
+ 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc,
+ 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c,
+ 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118,
+ 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285,
+ 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291,
+ 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c,
+ 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817,
+ 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1,
+ 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3,
+ 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9,
+ 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc,
+ /* 0xbc */
+ 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
+ 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
+ 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
+ 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
+ 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
+ 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
+ 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
+ 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c,
+ 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac,
+ 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479,
+ 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493, 0x6495,
+ 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499,
+ 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4,
+ 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd,
+ 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11,
+ 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84,
+ 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e,
+ 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f,
+ 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b,
+ 0x734e, 0x7357, 0x7469, 0x748b, 0x7483,
+ /* 0xbd */
+ 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
+ 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
+ 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
+ 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
+ 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
+ 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
+ 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
+ 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9,
+ 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517,
+ 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523,
+ 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774,
+ 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c,
+ 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915,
+ 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8,
+ 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6,
+ 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6,
+ 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1,
+ 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f,
+ 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f,
+ 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e,
+ /* 0xbe */
+ 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
+ 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
+ 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
+ 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
+ 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
+ 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
+ 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
+ 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03,
+ 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114,
+ 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3,
+ 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668,
+ 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be,
+ 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e,
+ 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be,
+ 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc,
+ 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4,
+ 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8,
+ 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44,
+ 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59,
+ 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1,
+ /* 0xbf */
+ 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
+ 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
+ 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
+ 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
+ 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
+ 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
+ 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
+ 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11,
+ 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79,
+ 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8,
+ 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, 0x8548, 0x8568,
+ 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f,
+ 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b,
+ 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00,
+ 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed,
+ 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44,
+ 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38,
+ 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c,
+ 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f,
+ 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a,
+ /* 0xc0 */
+ 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
+ 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
+ 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
+ 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
+ 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
+ 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
+ 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
+ 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f,
+ 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a,
+ 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c,
+ 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234,
+ 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1,
+ 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94,
+ 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90,
+ 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf,
+ 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1,
+ 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6,
+ 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370,
+ 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c,
+ 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac,
+ /* 0xc1 */
+ 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
+ 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
+ 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
+ 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
+ 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
+ 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
+ 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
+ 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584,
+ 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8,
+ 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab,
+ 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938,
+ 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20,
+ 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd,
+ 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a,
+ 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084,
+ 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d,
+ 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e,
+ 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc,
+ 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0,
+ 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01,
+ /* 0xc2 */
+ 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
+ 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
+ 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
+ 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
+ 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
+ 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
+ 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
+ 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652,
+ 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62,
+ 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23,
+ 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52,
+ 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf,
+ 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba,
+ 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2,
+ 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59,
+ 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d,
+ 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a,
+ 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a,
+ 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9,
+ 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6,
+ /* 0xc3 */
+ 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
+ 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
+ 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
+ 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
+ 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
+ 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
+ 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
+ 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a,
+ 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7,
+ 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d,
+ 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7f85,
+ 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea,
+ 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9,
+ 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58,
+ 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a,
+ 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54,
+ 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1,
+ 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd,
+ 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a,
+ 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e,
+ /* 0xc4 */
+ 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
+ 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
+ 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
+ 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
+ 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
+ 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
+ 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
+ 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82,
+ 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa,
+ 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba,
+ 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f,
+ 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418,
+ 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8,
+ 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5,
+ 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1,
+ 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d,
+ 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c,
+ 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f,
+ 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821,
+ 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74,
+ /* 0xc5 */
+ 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
+ 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
+ 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
+ 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
+ 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
+ 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
+ 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
+ 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3,
+ 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc,
+ 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444,
+ 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955,
+ 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b,
+ 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6,
+ 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca,
+ 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638,
+ 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464,
+ 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4,
+ 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1,
+ 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88,
+ 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92,
+ /* 0xc6 */
+ 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
+ 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
+ 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
+ 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
+ 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
+ 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
+ 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
+ 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x2460,
+ 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
+ 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
+ 0x247b, 0x247c, 0x247d, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174,
+ 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4e36, 0x4e3f, 0x4e85,
+ 0x4ea0, 0x5182, 0x5196, 0x51ab, 0x52f9, 0x5338, 0x5369, 0x53b6,
+ 0x590a, 0x5b80, 0x5ddb, 0x2f33, 0x5e7f, 0xf6df, 0x5f50, 0x5f61,
+ 0x6534, 0xf6e3, 0x7592, 0xf6e5, 0x8fb5, 0xf6e7, 0x00a8, 0x02c6,
+ 0x30fd, 0x30fe, 0x309d, 0x309e, 0xf6ee, 0xf6ef, 0x3005, 0x3006,
+ 0x3007, 0x30fc, 0xff3b, 0xff3d, 0x273d, 0x3041, 0x3042, 0x3043,
+ 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b,
+ 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053,
+ 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+ /* 0xc7 */
+ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5,
+ 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad,
+ 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5,
+ 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd,
+ 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5,
+ 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd,
+ 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5,
+ 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd,
+ 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5,
+ 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed,
+ 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5,
+ 0x30f6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
+ 0x0416, 0x0417, 0x0418, 0x0419, 0x041a,
+ /* 0xc8 */
+ 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422,
+ 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a,
+ 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432,
+ 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439,
+ 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441,
+ 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
+ 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x21e7, 0x21b8,
+ 0x21b9, 0xf7e5, 0xf7e6, 0x4e5a, 0xf7e8, 0x5202, 0xf7ea, 0xf7eb,
+ 0x5188, 0xf7ed, 0xf7ee, 0xf7ef, 0xf7f0, 0xf7f1, 0xf7f2, 0xf7f3,
+ 0xf7f4, 0xf7f5, 0xf7f6, 0xf7f7, 0xf7f8, 0xf7f9, 0xf7fa, 0xf7fb,
+ 0xf7fc, 0xf7fd, 0xf7fe, 0xf7ff, 0xf800, 0xf801, 0xf802, 0xf803,
+ 0xf804, 0xf805, 0xf806, 0xf807, 0xf808, 0xf809, 0xf80a, 0xf80b,
+ 0xf80c, 0xf80d, 0xf80e, 0xf80f, 0xf810, 0xf811, 0xf812, 0xf813,
+ 0xf814, 0xf815, 0xf816, 0xffe2, 0xffe4, 0xff07, 0xff02, 0x3231,
+ 0x2116, 0x2121, 0x309b, 0x309c, 0x2e80, 0x2e84, 0x2e86, 0x2e87,
+ 0x2e88, 0x2e8a, 0x2e8c, 0x2e8d, 0x2e95, 0x2e9c, 0x2e9d, 0x2ea5,
+ 0x2ea7, 0x2eaa, 0x2eac, 0x2eae, 0x2eb6, 0x2ebc, 0x2ebe, 0x2ec6,
+ 0x2eca, 0x2ecc, 0x2ecd, 0x2ecf, 0x2ed6, 0x2ed7, 0x2ede, 0x2ee3,
+ 0xf83c, 0xf83d, 0xf83e, 0x0283, 0x0250, 0x025b, 0x0254, 0x0275,
+ 0x0153, 0x00f8, 0x014b, 0x028a, 0x026a,
+ /* 0xc9 */
+ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
+ 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
+ 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
+ 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
+ 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
+ 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
+ 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
+ 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36,
+ 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a,
+ 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00,
+ 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04,
+ 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, 0x52a6, 0x5322,
+ 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a,
+ 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977,
+ 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e,
+ 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4,
+ 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259,
+ 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738,
+ 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52,
+ 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b,
+ /* 0xca */
+ 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
+ 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
+ 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
+ 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
+ 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
+ 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
+ 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
+ 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d,
+ 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5,
+ 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940,
+ 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f,
+ 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f,
+ 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95,
+ 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d,
+ 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed,
+ 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef,
+ 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e,
+ 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281,
+ 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, 0x65f0, 0x65f4,
+ 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747,
+ /* 0xcb */
+ 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
+ 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
+ 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
+ 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
+ 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
+ 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
+ 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
+ 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a,
+ 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5,
+ 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33,
+ 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74,
+ 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79,
+ 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82,
+ 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232,
+ 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392,
+ 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b,
+ 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f,
+ 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9,
+ 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780,
+ 0x5775, 0x577b, 0x5773, 0x5774, 0x5762,
+ /* 0xcc */
+ 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
+ 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
+ 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
+ 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
+ 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
+ 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
+ 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
+ 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034,
+ 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d,
+ 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214,
+ 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca,
+ 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d,
+ 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb,
+ 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6,
+ 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798,
+ 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791,
+ 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25,
+ 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee,
+ 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2,
+ 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2,
+ /* 0xcd */
+ 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
+ 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
+ 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
+ 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
+ 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
+ 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
+ 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
+ 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7,
+ 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd,
+ 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220,
+ 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7,
+ 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9,
+ 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d,
+ 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5,
+ 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d,
+ 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9,
+ 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb,
+ 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249,
+ 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398,
+ 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf,
+ /* 0xce */
+ 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
+ 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
+ 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
+ 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
+ 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
+ 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
+ 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
+ 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde,
+ 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf,
+ 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22,
+ 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3,
+ 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054,
+ 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c,
+ 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e,
+ 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303,
+ 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313,
+ 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa,
+ 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622,
+ 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f,
+ 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba,
+ /* 0xcf */
+ 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
+ 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
+ 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
+ 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
+ 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
+ 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
+ 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
+ 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01,
+ 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c,
+ 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1,
+ 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a,
+ 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb,
+ 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8,
+ 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7,
+ 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e,
+ 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703,
+ 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8,
+ 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809,
+ 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5,
+ 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80,
+ /* 0xd0 */
+ 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
+ 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
+ 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
+ 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
+ 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
+ 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
+ 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
+ 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4,
+ 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673,
+ 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07,
+ 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf,
+ 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3,
+ 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005,
+ 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033,
+ 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027,
+ 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca,
+ 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e,
+ 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2,
+ 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504,
+ 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1,
+ /* 0xd1 */
+ 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
+ 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
+ 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
+ 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
+ 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
+ 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
+ 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
+ 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x6041,
+ 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095,
+ 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2,
+ 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4,
+ 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358,
+ 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338,
+ 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4,
+ 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f,
+ 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816,
+ 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844,
+ 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d,
+ 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34,
+ 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4,
+ /* 0xd2 */
+ 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
+ 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
+ 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
+ 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
+ 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
+ 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
+ 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
+ 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277,
+ 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb,
+ 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3,
+ 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7,
+ 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, 0x7521, 0x755b,
+ 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6,
+ 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712,
+ 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823,
+ 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821,
+ 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c,
+ 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed,
+ 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b,
+ 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10,
+ /* 0xd3 */
+ 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
+ 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
+ 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
+ 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
+ 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
+ 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
+ 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
+ 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342,
+ 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324,
+ 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353,
+ 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2,
+ 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686,
+ 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695,
+ 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d,
+ 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883,
+ 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4,
+ 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3,
+ 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6,
+ 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8,
+ 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150,
+ /* 0xd4 */
+ 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
+ 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
+ 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
+ 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
+ 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
+ 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
+ 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
+ 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c,
+ 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540,
+ 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc,
+ 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3,
+ 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1,
+ 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9,
+ 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67,
+ 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c,
+ 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b,
+ 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69,
+ 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1,
+ 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c,
+ 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f,
+ /* 0xd5 */
+ 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
+ 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
+ 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
+ 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
+ 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
+ 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
+ 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
+ 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378,
+ 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665,
+ 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887,
+ 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f,
+ 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877,
+ 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e,
+ 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b,
+ 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38,
+ 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab,
+ 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6,
+ 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5,
+ 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0,
+ 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9,
+ /* 0xd6 */
+ 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
+ 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
+ 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
+ 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
+ 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
+ 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
+ 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
+ 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb,
+ 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f,
+ 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b,
+ 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826,
+ 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b,
+ 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94,
+ 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24,
+ 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f,
+ 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3,
+ 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29,
+ 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63,
+ 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0,
+ 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f,
+ /* 0xd7 */
+ 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
+ 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
+ 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
+ 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
+ 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
+ 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
+ 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
+ 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2,
+ 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8,
+ 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852,
+ 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1,
+ 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac,
+ 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30,
+ 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d,
+ 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf,
+ 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1,
+ 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea,
+ 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9,
+ 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1,
+ 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea,
+ /* 0xd8 */
+ 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
+ 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
+ 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
+ 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
+ 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
+ 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
+ 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
+ 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819,
+ 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c,
+ 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d,
+ 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2,
+ 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae,
+ 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b,
+ 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd,
+ 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37,
+ 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e,
+ 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42,
+ 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45,
+ 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9,
+ 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114,
+ /* 0xd9 */
+ 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
+ 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
+ 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
+ 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
+ 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
+ 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
+ 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
+ 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c,
+ 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701,
+ 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1,
+ 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910,
+ 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911,
+ 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8,
+ 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6,
+ 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7,
+ 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95,
+ 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47,
+ 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b,
+ 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40,
+ 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e,
+ /* 0xda */
+ 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
+ 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
+ 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
+ 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
+ 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
+ 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
+ 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
+ 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x741a,
+ 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420,
+ 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1,
+ 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da,
+ 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b,
+ 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d,
+ 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862,
+ 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c,
+ 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, 0x7b44, 0x7b48,
+ 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8,
+ 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a,
+ 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51,
+ 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65,
+ /* 0xdb */
+ 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
+ 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
+ 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
+ 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
+ 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
+ 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
+ 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
+ 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5,
+ 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, 0x83ec, 0x83ee,
+ 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8,
+ 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb,
+ 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856,
+ 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6,
+ 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998,
+ 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59,
+ 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51,
+ 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe,
+ 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3,
+ 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8,
+ 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa,
+ /* 0xdc */
+ 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
+ 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
+ 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
+ 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
+ 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
+ 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
+ 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
+ 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689,
+ 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c,
+ 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83,
+ 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca,
+ 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb,
+ 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c,
+ 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0,
+ 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5,
+ 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714,
+ 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855,
+ 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871,
+ 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5,
+ 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6,
+ /* 0xdd */
+ 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
+ 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
+ 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
+ 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
+ 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
+ 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
+ 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
+ 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433,
+ 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
+ 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a,
+ 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e,
+ 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695,
+ 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966,
+ 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a,
+ 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935,
+ 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969,
+ 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c,
+ 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952,
+ 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, 0x6b48,
+ 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc,
+ /* 0xde */
+ 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
+ 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
+ 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
+ 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
+ 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
+ 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
+ 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
+ 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144,
+ 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e,
+ 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444,
+ 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450,
+ 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe,
+ 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603,
+ 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6,
+ 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f,
+ 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759,
+ 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895,
+ 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896,
+ 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19,
+ 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13,
+ /* 0xdf */
+ 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
+ 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
+ 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
+ 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
+ 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
+ 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
+ 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
+ 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144,
+ 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1,
+ 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451,
+ 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459,
+ 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434,
+ 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b,
+ 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c,
+ 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433,
+ 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450,
+ 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d,
+ 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6,
+ 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0,
+ 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4,
+ /* 0xe0 */
+ 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
+ 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
+ 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
+ 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
+ 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
+ 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
+ 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
+ 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044,
+ 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114,
+ 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a,
+ 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246,
+ 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261,
+ 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253,
+ 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692,
+ 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5,
+ 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac,
+ 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab,
+ 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4,
+ 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3,
+ 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0,
+ /* 0xe1 */
+ 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
+ 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
+ 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
+ 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
+ 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
+ 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
+ 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
+ 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3,
+ 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77,
+ 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f,
+ 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc,
+ 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6,
+ 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153,
+ 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165,
+ 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b,
+ 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d,
+ 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b,
+ 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459,
+ 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705,
+ 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9,
+ /* 0xe2 */
+ 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
+ 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
+ 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
+ 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
+ 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
+ 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
+ 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
+ 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36,
+ 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35,
+ 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39,
+ 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21,
+ 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b,
+ 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293,
+ 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475,
+ 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590,
+ 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8,
+ 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e,
+ 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab,
+ 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a,
+ 0x798b, 0x7996, 0x7995, 0x7994, 0x7993,
+ /* 0xe3 */
+ 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
+ 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
+ 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
+ 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
+ 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
+ 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
+ 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
+ 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024,
+ 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c,
+ 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce,
+ 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd,
+ 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2,
+ 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6,
+ 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db,
+ 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740,
+ 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741,
+ 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712,
+ 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724,
+ 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa,
+ 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb,
+ /* 0xe4 */
+ 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
+ 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
+ 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
+ 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
+ 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
+ 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
+ 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
+ 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6,
+ 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e,
+ 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286,
+ 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, 0x928b,
+ 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e,
+ 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce,
+ 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d,
+ 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7,
+ 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f,
+ 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8,
+ 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a,
+ 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635,
+ 0x5641, 0x564a, 0x5649, 0x5646, 0x5658,
+ /* 0xe5 */
+ 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
+ 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
+ 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
+ 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
+ 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
+ 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
+ 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
+ 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b,
+ 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d,
+ 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485,
+ 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f,
+ 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2,
+ 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af,
+ 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4,
+ 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, 0x69fe, 0x6a27,
+ 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6,
+ 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25,
+ 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5,
+ 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41,
+ 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92,
+ /* 0xe6 */
+ 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
+ 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
+ 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
+ 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
+ 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
+ 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
+ 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
+ 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362,
+ 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488,
+ 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619,
+ 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d,
+ 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb,
+ 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4,
+ 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76,
+ 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac,
+ 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc,
+ 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03,
+ 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76,
+ 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, 0x7fec, 0x7fe6,
+ 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f,
+ /* 0xe7 */
+ 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
+ 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
+ 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
+ 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
+ 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
+ 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
+ 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
+ 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756,
+ 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b,
+ 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750,
+ 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c,
+ 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a,
+ 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906,
+ 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed,
+ 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4,
+ 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3,
+ 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf,
+ 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1,
+ 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b,
+ 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27,
+ /* 0xe8 */
+ 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
+ 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
+ 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
+ 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
+ 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
+ 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
+ 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
+ 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5,
+ 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0,
+ 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a,
+ 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829,
+ 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911,
+ 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3,
+ 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc,
+ 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43,
+ 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68,
+ 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07,
+ 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3,
+ 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de,
+ 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e,
+ /* 0xe9 */
+ 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
+ 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
+ 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
+ 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
+ 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
+ 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
+ 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
+ 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf,
+ 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd,
+ 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c,
+ 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd,
+ 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67,
+ 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51,
+ 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50,
+ 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56,
+ 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7,
+ 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad,
+ 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4,
+ 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba,
+ 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8,
+ /* 0xea */
+ 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
+ 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
+ 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
+ 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
+ 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
+ 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
+ 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
+ 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797,
+ 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1,
+ 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47,
+ 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7,
+ 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea,
+ 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7,
+ 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20,
+ 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f,
+ 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c,
+ 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6,
+ 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2,
+ 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545,
+ 0x856b, 0x854d, 0x8553, 0x8561, 0x8558,
+ /* 0xeb */
+ 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
+ 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
+ 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
+ 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
+ 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
+ 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
+ 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
+ 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2,
+ 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0,
+ 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91,
+ 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c,
+ 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45,
+ 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36,
+ 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079,
+ 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190,
+ 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306,
+ 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301,
+ 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9325,
+ 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329,
+ 0x9339, 0x9335, 0x932a, 0x9314, 0x930c,
+ /* 0xec */
+ 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
+ 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
+ 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
+ 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
+ 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
+ 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
+ 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
+ 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d,
+ 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d,
+ 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87,
+ 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126,
+ 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c,
+ 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681,
+ 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23,
+ 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2,
+ 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, 0x61b5, 0x61bc,
+ 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9,
+ 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da,
+ 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b,
+ 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e,
+ /* 0xed */
+ 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
+ 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
+ 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
+ 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
+ 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
+ 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
+ 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
+ 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4,
+ 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc,
+ 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c,
+ 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1,
+ 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4,
+ 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd,
+ 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c,
+ 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47,
+ 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45,
+ 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4,
+ 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a,
+ 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b,
+ 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e,
+ /* 0xee */
+ 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
+ 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
+ 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
+ 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
+ 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
+ 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
+ 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
+ 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18,
+ 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15,
+ 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f,
+ 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f,
+ 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40,
+ 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f,
+ 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356,
+ 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351,
+ 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355,
+ 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363,
+ 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3,
+ 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718,
+ 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c,
+ /* 0xef */
+ 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
+ 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
+ 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
+ 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
+ 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
+ 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
+ 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
+ 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45,
+ 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d,
+ 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff,
+ 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e,
+ 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c,
+ 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed,
+ 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff,
+ 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db,
+ 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6,
+ 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9,
+ 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e,
+ 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201,
+ 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376,
+ /* 0xf0 */
+ 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
+ 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
+ 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
+ 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
+ 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
+ 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
+ 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
+ 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0,
+ 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3,
+ 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8,
+ 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be,
+ 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5,
+ 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8,
+ 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd,
+ 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949,
+ 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f,
+ 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e,
+ 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98,
+ 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60,
+ 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67,
+ /* 0xf1 */
+ 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
+ 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
+ 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
+ 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
+ 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
+ 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
+ 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
+ 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2,
+ 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851,
+ 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09,
+ 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0,
+ 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c,
+ 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8,
+ 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f,
+ 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52,
+ 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01,
+ 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c,
+ 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad,
+ 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912,
+ 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70,
+ /* 0xf2 */
+ 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
+ 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
+ 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
+ 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
+ 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
+ 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
+ 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
+ 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921,
+ 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c,
+ 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78,
+ 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b,
+ 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7,
+ 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9,
+ 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8,
+ 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de,
+ 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c,
+ 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962,
+ 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959,
+ 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40,
+ 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55,
+ /* 0xf3 */
+ 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
+ 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
+ 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
+ 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
+ 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
+ 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
+ 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
+ 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3,
+ 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d,
+ 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943,
+ 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b,
+ 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2,
+ 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0,
+ 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec,
+ 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81,
+ 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b,
+ 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85,
+ 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68,
+ 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d,
+ 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2,
+ /* 0xf4 */
+ 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
+ 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
+ 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
+ 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
+ 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
+ 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
+ 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
+ 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2,
+ 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47,
+ 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff,
+ 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, 0x8622, 0x85ff,
+ 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605,
+ 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816,
+ 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68,
+ 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84,
+ 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143,
+ 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb,
+ 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419,
+ 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412,
+ 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff,
+ /* 0xf5 */
+ 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
+ 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
+ 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
+ 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
+ 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
+ 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
+ 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
+ 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0,
+ 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8,
+ 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99,
+ 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e,
+ 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139,
+ 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb,
+ 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8,
+ 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046,
+ 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d,
+ 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88,
+ 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, 0x8618,
+ 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e,
+ 0x8621, 0x8620, 0x8629, 0x861e, 0x8625,
+ /* 0xf6 */
+ 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
+ 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
+ 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
+ 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
+ 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
+ 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
+ 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
+ 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f,
+ 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b,
+ 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21,
+ 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe,
+ 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac,
+ 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a,
+ 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31,
+ 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb,
+ 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520,
+ 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056,
+ 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5,
+ 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71,
+ 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a,
+ /* 0xf7 */
+ 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
+ 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
+ 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
+ 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
+ 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
+ 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
+ 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
+ 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49,
+ 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55,
+ 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c,
+ 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde,
+ 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9,
+ 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35,
+ 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299,
+ 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201,
+ 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12,
+ 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383,
+ 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640,
+ 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e,
+ 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe,
+ /* 0xf8 */
+ 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
+ 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
+ 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
+ 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
+ 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
+ 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
+ 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
+ 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71,
+ 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d,
+ 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223,
+ 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97,
+ 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94,
+ 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2,
+ 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7,
+ 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62,
+ 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05,
+ 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e,
+ 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, 0x6b18,
+ 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9,
+ 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a,
+ /* 0xf9 */
+ 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
+ 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
+ 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
+ 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
+ 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
+ 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
+ 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
+ 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4,
+ 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e,
+ 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961,
+ 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48,
+ 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481,
+ 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, 0x8b9f, 0x9483,
+ 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a,
+ 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, 0x7881, 0x92b9, 0x88cf, 0x58bb,
+ 0x6052, 0x7ca7, 0x5afa, 0x2554, 0x2566, 0x2557, 0x2560, 0x256c,
+ 0x2563, 0x255a, 0x2569, 0x255d, 0x2552, 0x2564, 0x2555, 0x255e,
+ 0x256a, 0x2561, 0x2558, 0x2567, 0x255b, 0x2553, 0x2565, 0x2556,
+ 0x255f, 0x256b, 0x2562, 0x2559, 0x2568, 0x255c, 0x2551, 0x2550,
+ 0x256d, 0x256e, 0x2570, 0x256f, 0xffed,
+ /* 0xfa */
+ 0xe000, 0x92db, 0xe002, 0xe003, 0x854c, 0x42b5, 0x73ef, 0x51b5,
+ 0x3649, 0xe009, 0xe00a, 0x9344, 0xe00c, 0x82ee, 0xe00e, 0x783c,
+ 0x6744, 0x62df, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0x4fab,
+ 0xe018, 0x5008, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0x5029,
+ 0xe020, 0x5fa4, 0xe022, 0xe023, 0x6edb, 0xe025, 0x507d, 0x5101,
+ 0x347a, 0x510e, 0x986c, 0x3743, 0x8416, 0xe02d, 0xe02e, 0x5160,
+ 0xe030, 0x516a, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037,
+ 0xe038, 0x5b82, 0x877d, 0xe03b, 0xe03c, 0x51b2, 0x51b8, 0x9d34,
+ 0x51c9, 0x51cf, 0x51d1, 0x3cdc, 0x51d3, 0xe045, 0x51b3, 0x51e2,
+ 0x5342, 0x51ed, 0x83cd, 0x693e, 0xe04c, 0x5f7b, 0x520b, 0x5226,
+ 0x523c, 0x52b5, 0x5257, 0x5294, 0x52b9, 0x52c5, 0x7c15, 0x8542,
+ 0x52e0, 0x860d, 0xe05a, 0x5305, 0xe05c, 0x5549, 0x6ed9, 0xe05f,
+ 0xe060, 0xe061, 0x5333, 0x5344, 0xe064, 0x6ccb, 0xe066, 0x681b,
+ 0x73d5, 0x604a, 0x3eaa, 0x38cc, 0xe06c, 0x71dd, 0x44a2, 0x536d,
+ 0x5374, 0xe071, 0x537e, 0x537f, 0xe074, 0xe075, 0x77e6, 0x5393,
+ 0xe078, 0x53a0, 0x53ab, 0x53ae, 0x73a7, 0xe07d, 0x3f59, 0x739c,
+ 0x53c1, 0x53c5, 0x6c49, 0x4e49, 0x57fe, 0x53d9, 0x3aab, 0xe087,
+ 0x53e0, 0xe089, 0xe08a, 0x53f6, 0xe08c, 0x5413, 0x7079, 0x552b,
+ 0x6657, 0x6d5b, 0x546d, 0xe093, 0xe094, 0x555d, 0x548f, 0x54a4,
+ 0x47a6, 0xe099, 0xe09a, 0x3db4, 0xe09c,
+ /* 0xfb */
+ 0xe09d, 0xe09e, 0x5547, 0x4ced, 0x542f, 0x7417, 0x5586, 0x55a9,
+ 0x5605, 0xe0a6, 0xe0a7, 0x4552, 0xe0a9, 0x66b3, 0xe0ab, 0x5637,
+ 0x66cd, 0xe0ae, 0x66a4, 0x66ad, 0x564d, 0x564f, 0x78f1, 0x56f1,
+ 0x9787, 0x53fe, 0x5700, 0x56ef, 0x56ed, 0xe0ba, 0x3623, 0xe0bc,
+ 0x5746, 0xe0be, 0x6c6e, 0x708b, 0x5742, 0x36b1, 0xe0c3, 0x57e6,
+ 0xe0c5, 0x5803, 0xe0c7, 0xe0c8, 0x5826, 0xe0ca, 0x585c, 0x58aa,
+ 0x3561, 0x58e0, 0x58dc, 0xe0d0, 0x58fb, 0x5bff, 0x5743, 0xe0d4,
+ 0xe0d5, 0x93d3, 0x35a1, 0x591f, 0x68a6, 0x36c3, 0x6e59, 0xe0dc,
+ 0x5a24, 0x5553, 0xe0df, 0x8505, 0x59c9, 0xe0e2, 0xe0e3, 0xe0e4,
+ 0xe0e5, 0x59d9, 0xe0e7, 0xe0e8, 0xe0e9, 0x6d71, 0xe0eb, 0xe0ec,
+ 0x59f9, 0xe0ee, 0x5aab, 0x5a63, 0x36e6, 0xe0f2, 0x5a77, 0x3708,
+ 0x5a96, 0x7465, 0x5ad3, 0xe0f8, 0xe0f9, 0x3d85, 0xe0fb, 0x3732,
+ 0xe0fd, 0x5e83, 0x52d0, 0x5b76, 0x6588, 0x5b7c, 0xe103, 0x4004,
+ 0x485d, 0xe106, 0x5bd5, 0x6160, 0xe109, 0xe10a, 0xe10b, 0x5bf3,
+ 0x5b9d, 0x4d10, 0x5c05, 0xe110, 0x5c13, 0x73ce, 0x5c14, 0xe114,
+ 0xe115, 0x5c49, 0x48dd, 0x5c85, 0x5ce9, 0x5cef, 0x5d8b, 0xe11c,
+ 0xe11d, 0x5d10, 0x5d18, 0x5d46, 0xe121, 0x5cba, 0x5dd7, 0x82fc,
+ 0x382d, 0xe126, 0xe127, 0xe128, 0x8287, 0x3836, 0x3bc2, 0x5e2e,
+ 0x6a8a, 0x5e75, 0x5e7a, 0xe130, 0xe131, 0x53a6, 0x4eb7, 0x5ed0,
+ 0x53a8, 0xe136, 0x5e09, 0x5ef4, 0xe139,
+ /* 0xfc */
+ 0x5ef9, 0x5efb, 0x38a0, 0x5efc, 0x683e, 0x941b, 0x5f0d, 0xe141,
+ 0xe142, 0x3ade, 0x48ae, 0xe145, 0x5f3a, 0xe147, 0xe148, 0x5f58,
+ 0xe14a, 0x5f63, 0x97bd, 0xe14d, 0x5f72, 0x9340, 0xe150, 0x5fa7,
+ 0x5db6, 0x3d5f, 0xe154, 0xe155, 0xe156, 0xe157, 0x91d6, 0xe159,
+ 0xe15a, 0x6031, 0x6685, 0xe15d, 0x3963, 0x3dc7, 0x3639, 0x5790,
+ 0xe162, 0x7971, 0x3e40, 0x609e, 0x60a4, 0x60b3, 0xe168, 0xe169,
+ 0xe16a, 0x74a4, 0x50e1, 0x5aa0, 0x6164, 0x8424, 0x6142, 0xe171,
+ 0xe172, 0x6181, 0x51f4, 0xe175, 0x6187, 0x5baa, 0xe178, 0xe179,
+ 0x61d3, 0xe17b, 0xe17c, 0x61d0, 0x3932, 0xe17f, 0xe180, 0x6023,
+ 0x615c, 0x651e, 0x638b, 0xe185, 0x62c5, 0xe187, 0x62d5, 0xe189,
+ 0x636c, 0xe18b, 0x3a17, 0x6438, 0x63f8, 0xe18f, 0xe190, 0x6490,
+ 0x6f8a, 0xe193, 0x9814, 0xe195, 0xe196, 0x64e1, 0x64e5, 0x947b,
+ 0x3a66, 0x643a, 0x3a57, 0x654d, 0x6f16, 0xe19f, 0xe1a0, 0x6585,
+ 0x656d, 0x655f, 0xe1a4, 0x65b5, 0xe1a6, 0x4b37, 0x65d1, 0x40d8,
+ 0xe1aa, 0x65e0, 0x65e3, 0x5fdf, 0xe1ae, 0x6618, 0xe1b0, 0xe1b1,
+ 0x6644, 0xe1b3, 0xe1b4, 0x664b, 0xe1b6, 0x6667, 0xe1b8, 0x6673,
+ 0x6674, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf, 0x77c5, 0xe1c1,
+ 0x99a4, 0x6702, 0xe1c4, 0xe1c5, 0x3b2b, 0x69fa, 0xe1c8, 0x675e,
+ 0x6767, 0x6762, 0xe1cc, 0xe1cd, 0x67d7, 0x44e9, 0x6822, 0x6e50,
+ 0x923c, 0x6801, 0xe1d4, 0xe1d5, 0x685d,
+ /* 0xfd */
+ 0xe1d7, 0x69e1, 0x6a0b, 0xe1da, 0x6973, 0x68c3, 0xe1dd, 0x6901,
+ 0x6900, 0x3d32, 0x3a01, 0xe1e2, 0x3b80, 0x67ac, 0x6961, 0xe1e6,
+ 0x42fc, 0x6936, 0x6998, 0x3ba1, 0xe1eb, 0x8363, 0x5090, 0x69f9,
+ 0xe1ef, 0xe1f0, 0x6a45, 0xe1f2, 0x6a9d, 0x3bf3, 0x67b1, 0x6ac8,
+ 0xe1f7, 0x3c0d, 0x6b1d, 0xe1fa, 0x60de, 0x6b35, 0x6b74, 0xe1fe,
+ 0x6eb5, 0xe200, 0xe201, 0xe202, 0x3740, 0x5421, 0xe205, 0x6be1,
+ 0xe207, 0x6bdc, 0x6c37, 0xe20a, 0xe20b, 0xe20c, 0x6c5a, 0x8226,
+ 0x6c79, 0xe210, 0x44c5, 0xe212, 0xe213, 0xe214, 0xe215, 0xe216,
+ 0x36e5, 0x3ceb, 0xe219, 0x9b83, 0xe21b, 0xe21c, 0x7f8f, 0x6837,
+ 0xe21f, 0xe220, 0xe221, 0x6d96, 0x6d5c, 0x6e7c, 0x6f04, 0xe226,
+ 0xe227, 0xe228, 0x8533, 0xe22a, 0x51c7, 0x6c9c, 0x6e1d, 0x842e,
+ 0xe22f, 0x6e2f, 0xe231, 0x7453, 0xe233, 0x79cc, 0x6e4f, 0x5a91,
+ 0xe237, 0x6ff8, 0x370d, 0x6f9d, 0xe23b, 0x6efa, 0xe23d, 0xe23e,
+ 0x4555, 0x93f0, 0x6f44, 0x6f5c, 0x3d4e, 0x6f74, 0xe245, 0x3d3b,
+ 0x6f9f, 0xe248, 0x6fd3, 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e,
+ 0xe24f, 0x51df, 0xe251, 0xe252, 0xe253, 0xe254, 0x704b, 0x707e,
+ 0x70a7, 0x7081, 0x70cc, 0x70d5, 0x70d6, 0x70df, 0x4104, 0x3de8,
+ 0x71b4, 0x7196, 0xe261, 0x712b, 0x7145, 0x5a88, 0x714a, 0x716e,
+ 0x5c9c, 0xe268, 0x714f, 0x9362, 0xe26b, 0x712c, 0xe26d, 0xe26e,
+ 0xe26f, 0x71ba, 0xe271, 0x70bd, 0x720e,
+ /* 0xfe */
+ 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0xe27a, 0x722e,
+ 0x7240, 0xe27d, 0x68bd, 0x7255, 0x7257, 0x3e55, 0xe282, 0x680d,
+ 0x6f3d, 0x7282, 0x732a, 0x732b, 0xe288, 0xe289, 0x48ed, 0xe28b,
+ 0x7328, 0x732e, 0x73cf, 0x73aa, 0xe290, 0xe291, 0x73c9, 0x7449,
+ 0xe294, 0xe295, 0xe296, 0x6623, 0x36c5, 0xe299, 0xe29a, 0xe29b,
+ 0x73f7, 0x7415, 0x6903, 0xe29f, 0x7439, 0xe2a1, 0x3ed7, 0x745c,
+ 0xe2a4, 0x7460, 0xe2a6, 0x7447, 0x73e4, 0x7476, 0x83b9, 0x746c,
+ 0x3730, 0x7474, 0x93f1, 0x6a2c, 0x7482, 0x4953, 0xe2b2, 0xe2b3,
+ 0xe2b4, 0xe2b5, 0x5b46, 0xe2b7, 0xe2b8, 0x74c8, 0xe2ba, 0x750e,
+ 0x74e9, 0x751e, 0xe2be, 0xe2bf, 0x5bd7, 0xe2c1, 0x9385, 0x754d,
+ 0x754a, 0x7567, 0x756e, 0xe2c7, 0x3f04, 0xe2c9, 0x758e, 0x745d,
+ 0x759e, 0x75b4, 0x7602, 0x762c, 0x7651, 0x764f, 0x766f, 0x7676,
+ 0xe2d4, 0x7690, 0x81ef, 0x37f8, 0xe2d8, 0xe2d9, 0x76a1, 0x76a5,
+ 0x76b7, 0x76cc, 0xe2de, 0x8462, 0xe2e0, 0xe2e1, 0xe2e2, 0x771e,
+ 0x7726, 0x7740, 0x64af, 0xe2e7, 0x7758, 0xe2e9, 0x77af, 0xe2eb,
+ 0xe2ec, 0xe2ed, 0x77f4, 0x7809, 0xe2f0, 0xe2f1, 0x68ca, 0x78af,
+ 0x78c7, 0x78d3, 0x96a5, 0x792e, 0xe2f8, 0x78d7, 0x7934, 0x78b1,
+ 0xe2fc, 0x8fb8, 0x8884, 0xe2ff, 0xe300, 0xe301, 0x7986, 0x8900,
+ 0x6902, 0x7980, 0xe306, 0x799d, 0xe308, 0x793c, 0x79a9, 0x6e2a,
+ 0xe30c, 0x3ea8, 0x79c6, 0xe30f, 0x79d4,
+};
+
+static int
+big5hkscs_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if ((c1 >= 0x81 && c1 <= 0xfe)) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
+ unsigned int i = 157 * (c1 - 0x81) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
+ unsigned short wc = 0xfffd;
+ {
+ if (i < 19782)
+ wc = big5hkscs_2uni_page81[i];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short big5hkscs_2charset[23202] = {
+ 0xa246, 0xa247, 0xa244, 0xa1b1, 0xc6d8, 0xa1c2, 0xa258, 0xa1d3,
+ 0xa1a6, 0xa367, 0xa150, 0xa14d, 0x8859, 0x8857, 0x885d, 0x885b,
+ 0x8866, 0x8861, 0x885f, 0xa1d1, 0x886a, 0x8868, 0x886f, 0x886d,
+ 0x88a7, 0x8873, 0x8871, 0x8877, 0x8875, 0xa1d2, 0xc8fb, 0x887b,
+ 0x8879, 0x88a2, 0x8856, 0x8867, 0x885a, 0x886c, 0x885c, 0x886e,
+ 0x8870, 0xc8fc, 0x885e, 0x8874, 0xc8fa, 0x8878, 0x8858, 0x8869,
+ 0x8872, 0x8860, 0x8876, 0x887a, 0x887c, 0x887d, 0x887e, 0x88a1,
+ 0xc8f6, 0x886b, 0xc8f8, 0xc8f7, 0x88a8, 0xc8fe, 0xc8f9, 0xc8f5,
+ 0xc8fd, 0xc6d9, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa1c5, 0xa3bb,
+ 0xa1c2, 0xa344, 0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a,
+ 0xa34b, 0xa34c, 0xa34d, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352,
+ 0xa353, 0xa354, 0xa355, 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a,
+ 0xa35b, 0xa35c, 0xa35d, 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362,
+ 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a,
+ 0xa36b, 0xa36c, 0xa36d, 0xa36e, 0xa36f, 0xa370, 0xa371, 0xa372,
+ 0xa373, 0xc7f9, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8,
+ 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc840, 0xc841, 0xc842,
+ 0xc843, 0xc844, 0xc845, 0xc846, 0xc847, 0xc848, 0xc849, 0xc84a,
+ 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852,
+ 0xc853, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a,
+ 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863,
+ 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, 0xc86a, 0xc86b,
+ 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, 0xc871, 0xc872, 0xc873,
+ 0xc874, 0xc875, 0xc85b, 0x8863, 0x88a4, 0x8865, 0x88a6, 0xa156,
+ 0xa158, 0xa277, 0xa1fc, 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa145,
+ 0xa3bb, 0xa14c, 0xa14b, 0xa145, 0xa1ac, 0xa1b2, 0xa1ab, 0xa1b0,
+ 0xa1c3, 0xa24a, 0xa1c1, 0xa24b, 0xc8d2, 0xc8d3, 0xa2b9, 0xa2ba,
+ 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, 0xa2c1, 0xa2c2,
+ 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc,
+ 0xc6bd, 0xc6be, 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1f8, 0xa1f9,
+ 0xa1fb, 0xa1fa, 0xc877, 0xc878, 0xc876, 0xa241, 0xa242, 0xa258,
+ 0xa1d4, 0xa1db, 0xa1e8, 0xa1e7, 0xa1fd, 0xa1fc, 0xa1e4, 0xa1e5,
+ 0xa1ec, 0xa1ed, 0xa1ef, 0xa1ee, 0xa1dc, 0xa1da, 0xa1dd, 0xa1dd,
+ 0xa1d8, 0xa1d9, 0xa1f2, 0xa1f3, 0xa1e6, 0xa1e9, 0xa15b, 0xc6a1,
+ 0xc6a2, 0xc6a3, 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9,
+ 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1,
+ 0xc6b2, 0xc6b3, 0xc6b4, 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27c,
+ 0xa27d, 0xa275, 0xa274, 0xa273, 0xa272, 0xa271, 0xf9f9, 0xf9f8,
+ 0xf9e6, 0xf9ef, 0xf9dd, 0xf9e8, 0xf9f1, 0xf9df, 0xf9ec, 0xf9f5,
+ 0xf9e3, 0xf9ee, 0xf9f7, 0xf9e5, 0xf9e9, 0xf9f2, 0xf9e0, 0xf9eb,
+ 0xf9f4, 0xf9e2, 0xf9e7, 0xf9f0, 0xf9de, 0xf9ed, 0xf9f6, 0xf9e4,
+ 0xf9ea, 0xf9f3, 0xf9e1, 0xf9fa, 0xf9fb, 0xf9fd, 0xf9fc, 0xa2ac,
+ 0xa2ad, 0xa2ae, 0xa15a, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266,
+ 0xa267, 0xa268, 0xa269, 0xa270, 0xa26f, 0xa26e, 0xa26d, 0xa26c,
+ 0xa26b, 0xa26a, 0xf9fe, 0xa276, 0xa279, 0xa1bd, 0xa1bc, 0xa1b6,
+ 0xa1b5, 0xa1bf, 0xa1be, 0xa1bb, 0xa1ba, 0xa1b3, 0xa1b7, 0xa1b4,
+ 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0xa1b9, 0xa1b8, 0xa1f3, 0xa1f0,
+ 0xa1f2, 0xa1f1, 0xc6e6, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9, 0xc8da,
+ 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xc8e0, 0xc8e1, 0xc8e2,
+ 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea,
+ 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1, 0xc6cd,
+ 0xa140, 0xa142, 0xa143, 0xa1b2, 0xc6e0, 0xc6e1, 0xc6e2, 0xa171,
+ 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179, 0xa17a, 0xa169,
+ 0xa16a, 0xa245, 0xa165, 0xa166, 0xa1e3, 0xa1a9, 0xa1aa, 0xa2c3,
+ 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca, 0xa2cb,
+ 0xa1ca, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed,
+ 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5,
+ 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd,
+ 0xc6fe, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746,
+ 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e,
+ 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756,
+ 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e,
+ 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766,
+ 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e,
+ 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774, 0xc775, 0xc776,
+ 0xc777, 0xc778, 0xc779, 0xc77a, 0xc8d4, 0xc8d5, 0xc6dc, 0xc6dd,
+ 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4,
+ 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac,
+ 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4,
+ 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc,
+ 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4,
+ 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc,
+ 0xc7cd, 0xc7ce, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4,
+ 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc,
+ 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4,
+ 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec,
+ 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc6e3, 0xc6da,
+ 0xc6db, 0xa374, 0xa375, 0xa376, 0xa377, 0xa378, 0xa379, 0xa37a,
+ 0xa37b, 0xa37c, 0xa37d, 0xa37e, 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4,
+ 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac,
+ 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4,
+ 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8, 0xa3b9, 0xa3ba, 0xa440, 0xa447,
+ 0xa454, 0xa57c, 0xa457, 0xa4a4, 0xa455, 0xa5d2, 0xa441, 0xa4fe,
+ 0xa442, 0xa4d1, 0xa661, 0xa448, 0xa440, 0xa447, 0xa454, 0xa57c,
+ 0xa4ad, 0xa4bb, 0xa443, 0xa44b, 0xa445, 0xa451, 0xa4eb, 0xa4f5,
+ 0xa4f4, 0xa4ec, 0xaaf7, 0xa467, 0xa4e9, 0xc8d1, 0xa6b3, 0xaac0,
+ 0xa657, 0xaf53, 0xb05d, 0xafac, 0xb3d2, 0xa54e, 0xa949, 0xbec7,
+ 0xbaca, 0xa5f8, 0xb8ea, 0xa8f3, 0xb2bd, 0xa5f0, 0xa6db, 0xa6dc,
+ 0xa440, 0xa447, 0xa454, 0xa57c, 0xa4ad, 0xa4bb, 0xa443, 0xa44b,
+ 0xa445, 0xa451, 0xa4eb, 0xa4f5, 0xa4f4, 0xa4ec, 0xaaf7, 0xa467,
+ 0xa4e9, 0xaee8, 0xa6b3, 0xaac0, 0xa657, 0xaf53, 0xb05d, 0xafac,
+ 0xb3d2, 0xafb5, 0xa86b, 0xa46b, 0xbe41, 0xc075, 0xa64c, 0xaa60,
+ 0xb6b5, 0xa5f0, 0xbc67, 0xa1c0, 0xa457, 0xa4a4, 0xa455, 0xa5aa,
+ 0xa56b, 0xc2e5, 0xa976, 0xbec7, 0xbaca, 0xa5f8, 0xb8ea, 0xa8f3,
+ 0xa95d, 0xa255, 0xa256, 0xa250, 0xa251, 0xa252, 0xa254, 0xa257,
+ 0xa253, 0xa1eb, 0xa1ea, 0xa24f, 0x9277, 0x96df, 0x89d5, 0x93cd,
+ 0x9bdf, 0xfa68, 0x89da, 0x8f59, 0x89db, 0x8f5d, 0x89dc, 0x96f7,
+ 0x8ada, 0x8bdc, 0x97db, 0x9e53, 0x9daa, 0x9bea, 0x8a6e, 0x8bc8,
+ 0x89e8, 0x89ea, 0x8c4b, 0xfb70, 0x89ed, 0x94dd, 0x89ee, 0x9eb4,
+ 0x8ad3, 0x92db, 0x94db, 0x89f9, 0xfb7a, 0x89fb, 0x9efc, 0x89fc,
+ 0x89bf, 0x89fe, 0x89e6, 0x9d46, 0x9dee, 0xa07e, 0xa068, 0x98e9,
+ 0x8b68, 0x8dfd, 0x8bbe, 0x9fd9, 0x8aeb, 0x9fd7, 0x8b6a, 0x9c5c,
+ 0x8bb1, 0xfb5e, 0x9df3, 0xa0d0, 0xfc66, 0x92e9, 0x9aec, 0x8fab,
+ 0xfa48, 0x8e45, 0x9c6f, 0x9ede, 0x89ef, 0x96e9, 0x9ebb, 0x94de,
+ 0x9eb8, 0x97ba, 0xfb65, 0x95d6, 0x9cbb, 0x97da, 0x8f45, 0xfb7d,
+ 0x9158, 0xfe64, 0x9856, 0x9b4d, 0x935b, 0x95c7, 0x97e7, 0x9359,
+ 0x91f5, 0x97b8, 0xfda2, 0xfbb6, 0x92fa, 0x9357, 0x8ba6, 0xfbb9,
+ 0x97b0, 0xfdc4, 0x9ca1, 0x91f2, 0x91f9, 0x8ff1, 0x9745, 0x9853,
+ 0xfe78, 0xfbc1, 0x9251, 0x9dad, 0xfd6c, 0xfa6b, 0x9bc2, 0x9a7b,
+ 0x8b60, 0x934b, 0x9abd, 0x91b7, 0x95b4, 0xfec5, 0x9ef0, 0x8d64,
+ 0x9269, 0x8d67, 0xfbea, 0xfbef, 0x8d68, 0x93eb, 0xfc42, 0x9166,
+ 0xfacd, 0x93dd, 0x8bcc, 0x8d6d, 0x8d6e, 0x96a8, 0xfca6, 0x8d6f,
+ 0x8d70, 0xfc64, 0x9060, 0x8d74, 0x97c3, 0x8ad0, 0x9274, 0x9bbe,
+ 0x9cc8, 0x9cba, 0x8d78, 0x9eb9, 0x955a, 0x91b4, 0x8a48, 0x8d7d,
+ 0x8a7d, 0x8ac2, 0xfd4a, 0x8da1, 0x8ad1, 0xfcb4, 0x8b47, 0x93a4,
+ 0x9eda, 0x8a51, 0x8da6, 0x9ec5, 0xfcc4, 0xa078, 0x94b5, 0xfcc2,
+ 0x8a6b, 0x8dab, 0xfae8, 0x8dad, 0xfc49, 0x93c1, 0x906f, 0x8db0,
+ 0x947e, 0x90fa, 0x9479, 0x8db2, 0xfcee, 0x997b, 0x8db4, 0x8db7,
+ 0x91b3, 0x8dbb, 0x8dba, 0x8dbc, 0x9044, 0xfd4c, 0x93e4, 0x93e0,
+ 0xfd53, 0x8dc3, 0x9bb8, 0xfbf0, 0x93e9, 0x93f6, 0x8dc5, 0x8dca,
+ 0x8dcc, 0xfd5d, 0x93b5, 0xfd61, 0x9cf8, 0x9252, 0xa0e8, 0x9ca5,
+ 0x8c56, 0x8dd6, 0x97c0, 0xa0de, 0x97d2, 0xfaa5, 0xfda3, 0x8ddb,
+ 0x8eaf, 0x91b5, 0xfd49, 0xfdd1, 0x8deb, 0x97c6, 0xfdce, 0x90fc,
+ 0xfc59, 0x96d6, 0x97c5, 0x8def, 0x97d7, 0x8df0, 0x96a6, 0xfbbf,
+ 0x8df3, 0x9449, 0x8df5, 0x9872, 0x8e6b, 0xfafd, 0x8f50, 0x9dcc,
+ 0xfc65, 0x8c44, 0x996e, 0x94a1, 0x8f63, 0xa0da, 0x9253, 0xfde9,
+ 0x9db5, 0x9879, 0x9d5d, 0x8d63, 0x9669, 0x9f70, 0xfc6a, 0x8ac7,
+ 0x89d7, 0xfe4d, 0x9edd, 0xfefb, 0x98bc, 0xfacc, 0x95b0, 0x9464,
+ 0x936f, 0x94b9, 0x95ec, 0x91ee, 0x98c3, 0x95f6, 0x8ffd, 0x98c5,
+ 0x9766, 0xfe6e, 0x97dd, 0x8caa, 0x92d2, 0x9761, 0x98cb, 0x95f0,
+ 0x975d, 0x91e3, 0x98cc, 0x9469, 0x98cd, 0x98ce, 0x95fc, 0x94a3,
+ 0x9662, 0xfeb6, 0x9463, 0x98d0, 0x98d1, 0x9475, 0xfae0, 0x9472,
+ 0x98d6, 0x8af0, 0x98d9, 0x98db, 0x98dd, 0x98a8, 0x8a6d, 0x8afb,
+ 0x8aae, 0xfbc9, 0x8c5d, 0x98e4, 0x98e6, 0x98e8, 0x8a4d, 0x9257,
+ 0x95df, 0xa0ac, 0x98eb, 0x98ec, 0x8cc3, 0x98f4, 0x8ab8, 0x9ee7,
+ 0x94bc, 0xfcd1, 0x9cc6, 0x9e7e, 0x98fe, 0xfde8, 0x9940, 0x94c9,
+ 0x94d3, 0x9946, 0x90c0, 0x94d1, 0x9573, 0x93c2, 0x9948, 0x994b,
+ 0x8e55, 0x994e, 0x8efe, 0x8e59, 0x94ec, 0x94ef, 0x8c60, 0x8f74,
+ 0x9955, 0x9544, 0x8ccb, 0x9956, 0x9959, 0x995b, 0x8cc4, 0xfa45,
+ 0x90b7, 0x9743, 0x95cd, 0x97c9, 0xfd50, 0x8eb9, 0x95c6, 0x9967,
+ 0x8ab9, 0x8dfc, 0x8a76, 0x9d51, 0x9973, 0x9d4f, 0x997a, 0x9564,
+ 0x99a1, 0x99a5, 0x99a7, 0x8eed, 0x99ad, 0x946e, 0x8f70, 0xfad0,
+ 0x99b3, 0xa053, 0x965c, 0xfd7a, 0x97fe, 0x92bd, 0x97fd, 0x8f64,
+ 0xfcf7, 0x9562, 0x97cd, 0x9e64, 0x924c, 0x8ec9, 0x99bc, 0x9da5,
+ 0x8f54, 0x8f7c, 0x8ea2, 0x8f7a, 0x97ae, 0x96c8, 0x99c3, 0x90d6,
+ 0x9cbe, 0x8f76, 0x9470, 0xfb4b, 0xfdca, 0x8ec7, 0xa0f9, 0x8fa9,
+ 0x99c7, 0x90d7, 0x9edf, 0x99ce, 0x8fba, 0x8feb, 0x99cf, 0x8fc2,
+ 0x92c9, 0x97dc, 0x95b3, 0x9c79, 0x95b2, 0x8fdb, 0x9be3, 0x9e7a,
+ 0x9bee, 0x99de, 0xfafa, 0x9ee5, 0x8a52, 0x99e1, 0x8a67, 0x8bb5,
+ 0x8aac, 0x99e9, 0xfbca, 0x97de, 0x95d1, 0x99f5, 0xfc4a, 0x9ba9,
+ 0xfbdc, 0xfe56, 0x9ea4, 0x9d49, 0x95db, 0x89c5, 0x99f8, 0x9664,
+ 0x9055, 0x96d4, 0x977c, 0x964d, 0x97e1, 0x9a48, 0x9a49, 0xfe7d,
+ 0x90aa, 0x9a50, 0x9347, 0x8ed8, 0x90c9, 0x9a55, 0x90bc, 0x9a58,
+ 0x8bb8, 0x90d5, 0x9641, 0x9a5a, 0x9a5c, 0x97c2, 0x8abb, 0x9baa,
+ 0x90f5, 0x9a60, 0x9145, 0x8c58, 0x9a63, 0x8c49, 0x8bb6, 0xfccf,
+ 0x966b, 0x9a6e, 0x914f, 0x9746, 0xa0e6, 0x92d7, 0x9675, 0x93d4,
+ 0x91bb, 0x9679, 0x9a70, 0x9678, 0x91cd, 0x9c4a, 0xa06f, 0xa06a,
+ 0x915f, 0x9fa5, 0x89ba, 0x9ecd, 0x9a79, 0x9dce, 0x8cd2, 0x9d73,
+ 0x96b9, 0x96bc, 0x9cd1, 0x89b7, 0x9eee, 0xfb43, 0x9ec9, 0xfbd3,
+ 0x91ae, 0x9d78, 0x9d7b, 0xa440, 0xa442, 0xa443, 0x9eb3, 0xc945,
+ 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3, 0xc94f, 0xc94d,
+ 0xa4a2, 0xa4a1, 0xa542, 0xa541, 0xa540, 0xa543, 0xa4fe, 0x9eb2,
+ 0x9dd6, 0xa5e0, 0xa5e1, 0x994f, 0x89ce, 0xa8c3, 0x8bc0, 0x9fc4,
+ 0xa458, 0x8bd4, 0xa4a4, 0xc950, 0x8c72, 0xa4a5, 0xc963, 0xa6ea,
+ 0xcbb1, 0xc6bf, 0x8bf9, 0xa459, 0xa4a6, 0xa544, 0xc964, 0x8946,
+ 0xc6c0, 0xc940, 0xa444, 0xa45b, 0xc947, 0xa45c, 0xfae5, 0xa4a7,
+ 0xa545, 0xa547, 0xa546, 0xa5e2, 0xa5e3, 0xa8c4, 0xadbc, 0xa441,
+ 0xc87b, 0x8bc6, 0xc941, 0xa445, 0xa45e, 0xa45d, 0xa5e4, 0x9c57,
+ 0xa8c5, 0x9afb, 0xb0ae, 0xd44b, 0x89d0, 0x89cf, 0xb6c3, 0xdcb1,
+ 0xdcb2, 0xc6c1, 0xa446, 0x89d1, 0xa4a9, 0x89e2, 0xa8c6, 0xa447,
+ 0xc948, 0xa45f, 0xa4aa, 0xa4ac, 0xc951, 0xa4ad, 0xa4ab, 0x927e,
+ 0xa5e5, 0x9dba, 0xa8c7, 0xa8c8, 0xab45, 0xc6c2, 0xa460, 0xa4ae,
+ 0x8c6f, 0xa5e6, 0xa5e8, 0xa5e7, 0xa6eb, 0xa8c9, 0xa8ca, 0xab46,
+ 0xab47, 0xadbd, 0xdcb3, 0xfbf8, 0xf6d6, 0xa448, 0x8bc7, 0x926b,
+ 0x89d2, 0xa4b0, 0xa4af, 0xc952, 0xa4b1, 0xa4b7, 0xa4b2, 0xa4b3,
+ 0xc954, 0xc953, 0xa4b5, 0xa4b6, 0xa4b4, 0x9fcf, 0xa54a, 0xa54b,
+ 0xa54c, 0xa54d, 0xa549, 0xa550, 0xc96a, 0xc966, 0xc969, 0xa551,
+ 0xa561, 0xc968, 0xa54e, 0xa54f, 0xa548, 0xc965, 0xc967, 0x9da9,
+ 0x89d3, 0x99e2, 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae,
+ 0xa5f3, 0xc9b2, 0x9267, 0xa5f4, 0xa5f7, 0xa5e9, 0xc9b1, 0xa5f8,
+ 0xc9b5, 0x92a4, 0xc9b9, 0xc9b6, 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9,
+ 0xa5ee, 0xc9ab, 0xa5f1, 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af,
+ 0xa5ed, 0x8c73, 0xc9ac, 0xa5eb, 0x894e, 0xc9b4, 0xc9b7, 0x894f,
+ 0x9278, 0xc9ad, 0xca66, 0xa742, 0xa6f4, 0x91b6, 0xca67, 0xa6f1,
+ 0xa744, 0x89d4, 0xa6f9, 0x9fd2, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7,
+ 0xca60, 0xca68, 0xca64, 0x92a7, 0xa6fa, 0x95a2, 0xa6fd, 0xa6ee,
+ 0xa747, 0xca5d, 0x926e, 0xcbbd, 0xa6ec, 0xa743, 0xa6ed, 0xa6f5,
+ 0xa6f6, 0xca62, 0xca5e, 0xa6fb, 0xa6f3, 0xca5a, 0xa6ef, 0xca65,
+ 0xa745, 0xa748, 0xa6f2, 0xa740, 0xa746, 0xa6f0, 0xca63, 0xa741,
+ 0xca69, 0xca5c, 0xa6fe, 0xca5f, 0xca61, 0xa8d8, 0xcbbf, 0xcbcb,
+ 0xa8d0, 0xcbcc, 0xa8cb, 0xa8d5, 0x96ea, 0xa8ce, 0xcbb9, 0xa8d6,
+ 0xcbb8, 0xcbbc, 0xcbc3, 0xcbc1, 0xa8de, 0xa8d9, 0xcbb3, 0xcbb5,
+ 0xa8db, 0xa8cf, 0xcbb6, 0xcbc2, 0xcbc9, 0xa8d4, 0xcbbb, 0xcbb4,
+ 0xa8d3, 0xcbb7, 0xa8d7, 0xcbba, 0x926f, 0xa8d2, 0xa8cd, 0xa8dc,
+ 0xcbc4, 0xa8dd, 0xcbc8, 0xcbc6, 0xcbca, 0xa8da, 0xcbbe, 0xcbb2,
+ 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0x92a3, 0x8950, 0xfa57,
+ 0xab56, 0xab4a, 0x9866, 0xcde0, 0xcde8, 0xab49, 0xab51, 0xab5d,
+ 0xcdee, 0xcdec, 0xcde7, 0x89d6, 0xab4b, 0xcded, 0xcde3, 0xab59,
+ 0xab50, 0xab58, 0xcdde, 0xcdea, 0x98b2, 0xcde1, 0xab54, 0xcde2,
+ 0x92ab, 0xcddd, 0xab5b, 0xab4e, 0xab57, 0xab4d, 0xcddf, 0xcde4,
+ 0xcdeb, 0xab55, 0xab52, 0xcde6, 0xab5a, 0xcde9, 0xcde5, 0xab4f,
+ 0xab5c, 0xab53, 0xab4c, 0xab48, 0x96de, 0x92ac, 0xcdef, 0xadd7,
+ 0xadc1, 0x8c70, 0xadd1, 0x9f6e, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4,
+ 0xd0d5, 0xadc4, 0x8ef2, 0xadcd, 0x9f6c, 0xadda, 0xadce, 0x89d8,
+ 0xd0c9, 0xadc7, 0xd0ca, 0xfa59, 0xaddc, 0xadd3, 0xadbe, 0xadbf,
+ 0xd0dd, 0xb0bf, 0xadcc, 0xadcb, 0xd0cb, 0xadcf, 0xd45b, 0xadc6,
+ 0xd0d6, 0xadd5, 0xadd4, 0xadca, 0xd0ce, 0xd0d7, 0xd0c8, 0xadc9,
+ 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0xadc3, 0xadc2, 0xd0d9, 0xadd0,
+ 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8, 0x92a8, 0xd0db, 0xd0cd,
+ 0xd0dc, 0xd0d1, 0x9163, 0xd0da, 0xd0d2, 0x8c40, 0xadc8, 0xd463,
+ 0xd457, 0xb0b3, 0xd45c, 0xd462, 0xb0b2, 0xd455, 0xb0b6, 0xd459,
+ 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, 0xd467, 0xd451, 0xb0ba,
+ 0x9f73, 0xd466, 0x92ad, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f,
+ 0xd45d, 0xd450, 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0x9be9,
+ 0xd85b, 0xd45e, 0xd44d, 0xd45f, 0x92a9, 0xb0c1, 0xd464, 0xb0c0,
+ 0xd44c, 0xd454, 0xd465, 0xb0bc, 0xb0bb, 0xb0b8, 0xb0bd, 0xb0af,
+ 0xb0b0, 0xb3c8, 0x92aa, 0xd85e, 0xd857, 0xb3c5, 0xd85f, 0x89d9,
+ 0xd855, 0xd858, 0xb3c4, 0xd859, 0xfd56, 0xb3c7, 0xd85d, 0xd853,
+ 0xd852, 0xb3c9, 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c, 0xd85a,
+ 0xd854, 0xb3c3, 0xd856, 0x9fa8, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd,
+ 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb,
+ 0xdcc4, 0xdcbf, 0xb6cc, 0x8c71, 0xdcb4, 0xb6c9, 0xdcb5, 0xdcbe,
+ 0xdcbc, 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, 0xdcbb, 0xdcc2, 0xdcb9,
+ 0xdcc1, 0x92a1, 0xb9b6, 0xb9b3, 0x90e3, 0xb9b4, 0xe0f9, 0xe0f1,
+ 0xb9b2, 0xb9af, 0xe0f2, 0xa0a6, 0xb9b1, 0xe0f5, 0xe0f7, 0x94ab,
+ 0xe0fe, 0xfc72, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0, 0xb9ac, 0xe0f3,
+ 0xb9b7, 0xe0f6, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc, 0xe0fb, 0xb9b5,
+ 0xe0f4, 0x97c4, 0xbbf8, 0xe4ec, 0xe4e9, 0xbbf9, 0xbbf7, 0x92ae,
+ 0xe4f0, 0xe4ed, 0xe4e6, 0xbbf6, 0xfa67, 0xbbfa, 0xe4e7, 0xbbf5,
+ 0xbbfd, 0xe4ea, 0xe4eb, 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef,
+ 0x92a2, 0xfa69, 0xbeaa, 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab,
+ 0xe8f6, 0xbea8, 0xe8f7, 0xe8f4, 0xc076, 0xecbd, 0xc077, 0xecbb,
+ 0xecbc, 0xecba, 0xecb9, 0xecbe, 0xc075, 0x9268, 0xefb8, 0xefb9,
+ 0xe4e8, 0xefb7, 0xc078, 0xc35f, 0xf1eb, 0xf1ec, 0xc4d7, 0xc4d8,
+ 0xf5c1, 0xf5c0, 0xc56c, 0xc56b, 0xf7d0, 0xa449, 0xa461, 0xa4b9,
+ 0xa4b8, 0xa553, 0xa552, 0xa5fc, 0xa5fb, 0xa5fd, 0xa5fa, 0xa74a,
+ 0xa749, 0xa74b, 0xa8e0, 0xa8df, 0xa8e1, 0x8951, 0xab5e, 0xa259,
+ 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b, 0xd860, 0xfa6f, 0xa25d,
+ 0xb9b8, 0xa25e, 0xa44a, 0xa4ba, 0xa5fe, 0xa8e2, 0xfa71, 0xa44b,
+ 0xa4bd, 0xa4bb, 0xa4bc, 0xa640, 0x8952, 0xa74c, 0xa8e4, 0xa8e3,
+ 0xa8e5, 0x945a, 0xaddd, 0xbeac, 0xc6c3, 0x89dd, 0xc94e, 0xc8a2,
+ 0xa554, 0xa555, 0xa641, 0xca6a, 0xab60, 0xab5f, 0xd0e0, 0xd0df,
+ 0xb0c3, 0xc6c4, 0xa4be, 0xc955, 0x9e52, 0x8953, 0xcbcd, 0xab61,
+ 0xade0, 0xadde, 0xaddf, 0x9e55, 0x92ba, 0xbead, 0xc6c5, 0xa556,
+ 0x8c5b, 0xa642, 0xc9bc, 0xfa7d, 0xfaa8, 0x9a68, 0xfa47, 0xa74d,
+ 0xa74e, 0xfa7e, 0xca6b, 0xcbce, 0xa8e6, 0xcbcf, 0x92bb, 0xd0e2,
+ 0xd0e3, 0xade3, 0xfdb6, 0xd0e4, 0xfaa2, 0xd0e1, 0xade4, 0xade2,
+ 0xade1, 0xd0e5, 0xfaa3, 0xd468, 0xfaa4, 0x9bb4, 0xfaa6, 0xd861,
+ 0xdcc5, 0xe140, 0x89df, 0xbbfe, 0xbeae, 0xe8f9, 0xfddb, 0xa44c,
+ 0xa45a, 0xfaa9, 0x8954, 0xfaab, 0xb0c4, 0xb3cd, 0xb9b9, 0xfc7a,
+ 0xc942, 0xa4bf, 0xa559, 0xa557, 0xa558, 0x89e0, 0xa8e7, 0x9f4f,
+ 0xa44d, 0xa44e, 0xc87d, 0xa462, 0x89e1, 0xa4c0, 0xa4c1, 0xa4c2,
+ 0xc9be, 0xa55a, 0xfab0, 0xc96b, 0xa646, 0xc9bf, 0xa644, 0xa645,
+ 0xc9bd, 0xa647, 0xa643, 0xca6c, 0xaaec, 0xca6d, 0x9fcd, 0xa0e7,
+ 0xca6e, 0xa750, 0xa74f, 0xfab1, 0x89a6, 0xa753, 0xa751, 0xa752,
+ 0xa8ed, 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0x9efa, 0xcbd0, 0xa8ee,
+ 0xa8ea, 0xa8e9, 0xa8eb, 0xa8e8, 0xfab2, 0xa8ef, 0xab63, 0xcdf0,
+ 0xcbd3, 0xab68, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62,
+ 0xd0e8, 0xade7, 0xd0eb, 0xade5, 0xfab4, 0x92c4, 0xd0e7, 0xade8,
+ 0xade6, 0xade9, 0xd0e9, 0xd0ea, 0x9f6f, 0xd0e6, 0xd0ec, 0x8bb0,
+ 0xb3d1, 0xb0c5, 0xd469, 0xd46b, 0xd46a, 0xd46c, 0xb0c6, 0xb3ce,
+ 0x9fac, 0xb3cf, 0xb3d0, 0xb6d0, 0xdcc7, 0x89e3, 0xdcc6, 0xdcc8,
+ 0xdcc9, 0xb6d1, 0xb6cf, 0xe141, 0xe142, 0xb9bb, 0xb9ba, 0xe35a,
+ 0xbc40, 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3, 0xbc43, 0x9bd3,
+ 0x89e4, 0xbeaf, 0xbeb0, 0xfab5, 0xf1ed, 0xf5c3, 0xf5c2, 0xf7d1,
+ 0x9fd5, 0xa44f, 0xa55c, 0xa55b, 0x8955, 0xa648, 0x92c5, 0xc9c0,
+ 0x8956, 0xa755, 0xa756, 0xa754, 0xa757, 0xca6f, 0xca70, 0xfab3,
+ 0xfab6, 0xa8f1, 0xcbd5, 0xa8f0, 0xcdf2, 0xab6c, 0xcdf3, 0xab6b,
+ 0xfab7, 0xab69, 0xab6a, 0x9edc, 0xd0ed, 0xfbc4, 0x9f71, 0xb0c7,
+ 0xd46e, 0xb0ca, 0xd46d, 0xb1e5, 0xb0c9, 0xb0c8, 0xb3d4, 0xb3d3,
+ 0xb3d2, 0xb6d2, 0xfaba, 0x92c7, 0xb6d5, 0xb6d6, 0xb6d4, 0xb6d3,
+ 0xe143, 0xe144, 0xe4f5, 0xbc45, 0xe4f4, 0xbeb1, 0xecbf, 0xc079,
+ 0xf1ee, 0xc455, 0xc6c6, 0xa463, 0xa4c3, 0xc956, 0xa4c4, 0xa4c5,
+ 0x9a4c, 0xa55d, 0xa55e, 0xa649, 0xca71, 0xcbd6, 0xcbd7, 0xab6d,
+ 0xd0ee, 0xb0cc, 0xb0cb, 0xd863, 0xd862, 0xa450, 0xa4c6, 0xa55f,
+ 0xb0cd, 0xc943, 0xc96c, 0xa560, 0xc9c2, 0xa64b, 0xa64a, 0xc9c1,
+ 0xa758, 0x8c68, 0x89e5, 0xadea, 0x9f7d, 0xd46f, 0xb6d7, 0xe145,
+ 0xb9bc, 0xa0a9, 0xfac4, 0xe8fa, 0xf3fd, 0xc6c7, 0xa4c7, 0x8957,
+ 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, 0xb0cf, 0xa451, 0xfaaa, 0xa464,
+ 0xa2cd, 0xa4ca, 0xa4c9, 0xa4c8, 0xa563, 0xa562, 0xc96d, 0xc9c3,
+ 0x8958, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0xab6e, 0xb3d5, 0xa452,
+ 0x8be3, 0xa4cb, 0x8b61, 0xa565, 0xa564, 0xca72, 0x9af1, 0xa8f6,
+ 0x9eb7, 0xc6c8, 0xc957, 0xfad1, 0xa567, 0xa566, 0xa64c, 0xa64d,
+ 0xca73, 0xa759, 0xfad2, 0xa75a, 0xa8f7, 0xa8f8, 0xa8f9, 0xab6f,
+ 0xcdf5, 0x9eba, 0xfad4, 0xadeb, 0xc944, 0xa4cc, 0xc9c4, 0xca74,
+ 0xca75, 0xcbd9, 0xfad9, 0xcbda, 0xcdf7, 0xcdf6, 0xcdf9, 0xcdf8,
+ 0xab70, 0xd470, 0xaded, 0xd0ef, 0xadec, 0xfadb, 0x9ce0, 0xd864,
+ 0xb3d6, 0xfbf7, 0xd865, 0xfbfa, 0x89e7, 0xa07a, 0xfadc, 0xe146,
+ 0xb9bd, 0xfadd, 0x89e9, 0xbc46, 0xf1ef, 0xc6c9, 0xc958, 0xa568,
+ 0xfae2, 0x89eb, 0xb0d1, 0xfae3, 0xa453, 0xa465, 0xa4ce, 0xa4cd,
+ 0x90c8, 0xa4cf, 0x92da, 0x8959, 0x9cf5, 0xa8fb, 0xa8fa, 0xa8fc,
+ 0x895a, 0xfae7, 0x9fa2, 0xab71, 0xadee, 0xfaea, 0xe8fb, 0xc24f,
+ 0xa466, 0xa56a, 0xa579, 0xa574, 0xa56f, 0xa56e, 0xa575, 0xa573,
+ 0xa56c, 0xa57a, 0xa56d, 0xa569, 0xa578, 0xa577, 0xa576, 0xa56b,
+ 0xa572, 0xfaed, 0x8fad, 0xa571, 0xa57b, 0xa570, 0xfb59, 0xa653,
+ 0xa659, 0xa655, 0xa65b, 0xc9c5, 0xa658, 0xa64e, 0xa651, 0xa654,
+ 0xa650, 0xa657, 0xa65a, 0xa64f, 0xa652, 0xa656, 0xa65c, 0xfaef,
+ 0x96ef, 0x9dec, 0xca7e, 0xca7b, 0x9dca, 0xa767, 0xca7c, 0xa75b,
+ 0xa75d, 0xa775, 0xa770, 0xfd6d, 0x89ec, 0xcaa5, 0xca7d, 0xa75f,
+ 0xa761, 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d,
+ 0xfb44, 0xca76, 0xa773, 0x9de2, 0xa764, 0x8c75, 0xa76e, 0xa76f,
+ 0xca77, 0xa76c, 0xa76a, 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0xa772,
+ 0xcaa3, 0xa766, 0xa763, 0xca7a, 0xa762, 0xcaa6, 0xa765, 0xa769,
+ 0x9ec0, 0x9e56, 0xa760, 0xcaa2, 0xca79, 0xcbeb, 0xcbea, 0xa94f,
+ 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee, 0xa950, 0x9f79, 0x9ac7,
+ 0xcbe1, 0xcbe5, 0xfaf4, 0xcbe9, 0xce49, 0xa94b, 0xce4d, 0xa8fd,
+ 0xcbe6, 0xa8fe, 0xa94c, 0xa945, 0xa941, 0xcbe2, 0xa944, 0xa949,
+ 0xa952, 0xcbe3, 0xcbdc, 0xa943, 0xcbdd, 0xcbdf, 0xa946, 0x98a1,
+ 0xa948, 0xcbdb, 0xcbe0, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xfaf8,
+ 0xa94a, 0xcbde, 0xa947, 0x89f0, 0x9e47, 0xa942, 0xa940, 0x9df7,
+ 0xcbec, 0xa94e, 0x9fd3, 0x9aca, 0xce48, 0xcdfb, 0xce4b, 0x89f1,
+ 0xfaf9, 0xcdfd, 0xab78, 0xaba8, 0xab74, 0xaba7, 0xab7d, 0xaba4,
+ 0xab72, 0xcdfc, 0xce43, 0xaba3, 0xce4f, 0xaba5, 0x8e5a, 0xab79,
+ 0x89f2, 0xce45, 0xce42, 0xab77, 0x89f3, 0xcdfa, 0xaba6, 0xce4a,
+ 0xab7c, 0xce4c, 0xaba9, 0xab73, 0xab7e, 0xab7b, 0xce40, 0xaba1,
+ 0xce46, 0xce47, 0xab7a, 0xaba2, 0xab76, 0x925d, 0x8b51, 0x92e0,
+ 0xab75, 0xcdfe, 0x89f4, 0xce44, 0x9fd4, 0xce4e, 0xd144, 0xadfb,
+ 0xd0f1, 0x8a79, 0xd0f6, 0xadf4, 0xae40, 0xd0f4, 0xadef, 0xadf9,
+ 0xadfe, 0xd0fb, 0xadfa, 0xadfd, 0x89f5, 0xd0fe, 0xadf5, 0xd0f5,
+ 0xd142, 0xd143, 0xadf7, 0xd141, 0xadf3, 0xae43, 0xd0f8, 0xadf1,
+ 0x97a7, 0xd146, 0xd0f9, 0xd0fd, 0xadf6, 0xae42, 0xd0fa, 0xadfc,
+ 0xd140, 0xd147, 0xd4a1, 0x93ba, 0xd145, 0xae44, 0xadf0, 0xd0fc,
+ 0xd0f3, 0x9e58, 0xadf8, 0xd0f2, 0x89f6, 0xd0f7, 0x9e57, 0x89f7,
+ 0x8a41, 0xd0f0, 0xae41, 0x89f8, 0xd477, 0xfaf1, 0xb0e4, 0xd4a7,
+ 0xb0e2, 0xb0df, 0xd47c, 0xb0db, 0xd4a2, 0xb0e6, 0xd476, 0xd47b,
+ 0xd47a, 0xadf2, 0xb0e1, 0xd4a5, 0xd4a8, 0xd473, 0xb3e8, 0x89fa,
+ 0xd4a9, 0xb0e7, 0xb0d9, 0xb0d6, 0xd47e, 0xb0d3, 0xfb42, 0xd4a6,
+ 0xfabf, 0xb0da, 0xd4aa, 0xd474, 0xd4a4, 0xb0dd, 0xd475, 0xd478,
+ 0xd47d, 0xfba3, 0xb0de, 0xb0dc, 0xb0e8, 0xb0e3, 0xfaf7, 0xb0d7,
+ 0xb1d2, 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0x9e4e,
+ 0xb0d4, 0x94dc, 0x95da, 0x9df8, 0x9f6a, 0xd471, 0xd472, 0xd86a,
+ 0x8ab7, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, 0xb3d8, 0xd871,
+ 0xb3de, 0xb3e4, 0xb5bd, 0xfb46, 0xb3e2, 0xd86e, 0xb3ef, 0xb3db,
+ 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, 0x8a46, 0xd866, 0xd873,
+ 0xd86d, 0xb3e1, 0xd879, 0xb3dd, 0xb3f1, 0xb3ea, 0xb3df, 0xb3dc,
+ 0xb3e7, 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9,
+ 0xd867, 0xfb47, 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0x9148,
+ 0xb3ed, 0xb3e9, 0xb3e5, 0x92de, 0xd870, 0x8b53, 0x9df6, 0xb3eb,
+ 0x9bda, 0xdcd5, 0xdcd1, 0x9d7e, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5,
+ 0xb6e6, 0xb6de, 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde,
+ 0xb6dc, 0xdcd8, 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9,
+ 0xdcdb, 0x89fd, 0x99e4, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0,
+ 0x9e43, 0xb6d8, 0xb6e4, 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db,
+ 0xa25f, 0xb6d9, 0xdcd4, 0x9de9, 0x8f52, 0xb6e2, 0x9df5, 0x9df0,
+ 0xdcdd, 0x99e7, 0xb9cd, 0xb9c8, 0xe155, 0xe151, 0x8bbd, 0xe14b,
+ 0xb9c2, 0xb9be, 0xe154, 0xb9bf, 0xe14e, 0xe150, 0xe153, 0x9def,
+ 0xb9c4, 0xb9cb, 0xb9c5, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, 0xb9cc,
+ 0x9fb7, 0xe14a, 0xe14f, 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, 0xb9c0,
+ 0xe14d, 0xe152, 0x9dd0, 0xb9ca, 0x9feb, 0x8da9, 0x9dcf, 0x98e1,
+ 0x9de5, 0xe147, 0xbc4d, 0xe547, 0xe544, 0x9dc8, 0xbc47, 0xbc53,
+ 0xbc54, 0xbc4a, 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xfb4f, 0xe546,
+ 0xbc49, 0xe548, 0xbc48, 0xe543, 0xe545, 0xbc4b, 0xe541, 0xe4fa,
+ 0xe4f7, 0x9deb, 0xd86b, 0xe4fd, 0xe4f6, 0xe4fc, 0xe4fb, 0xe4f8,
+ 0xfb54, 0xbc4f, 0xfb55, 0x9aa2, 0x8ad6, 0xbc4e, 0x9a5f, 0xbc50,
+ 0xe4fe, 0xbeb2, 0xe540, 0x9ef5, 0xe945, 0xe8fd, 0x8fb7, 0xbebe,
+ 0xe942, 0xbeb6, 0xbeba, 0xe941, 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3,
+ 0xbebd, 0xe943, 0xe8fe, 0xbebc, 0xe8fc, 0xbebb, 0xe944, 0xe940,
+ 0xbc51, 0xbebf, 0xe946, 0xbeb7, 0xbeb4, 0x9ad2, 0x9e6a, 0x9ee8,
+ 0xecc6, 0xecc8, 0xc07b, 0xecc9, 0xecc7, 0xecc5, 0xecc4, 0xc07d,
+ 0xecc3, 0xc07e, 0x8bbf, 0x91c2, 0x9d62, 0xecc1, 0xecc2, 0xc07a,
+ 0xc0a1, 0xc07c, 0x9260, 0xecc0, 0xc250, 0xefbc, 0xefba, 0xefbf,
+ 0xefbd, 0xefbb, 0xefbe, 0x925e, 0x91c1, 0x8ac5, 0x97a3, 0xc360,
+ 0xf1f2, 0xf1f3, 0xc456, 0xf1f4, 0xf1f0, 0xf1f5, 0xf1f1, 0xc251,
+ 0x8b6c, 0x8d7e, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457,
+ 0x9c54, 0xc45a, 0xf5c5, 0xf5c6, 0x9dbd, 0xc4da, 0xc4d9, 0xc4db,
+ 0xf5c4, 0xf6d8, 0xf6d7, 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8,
+ 0xf8a6, 0xc5f1, 0xf8a5, 0xf8ee, 0x9cc5, 0xc949, 0xa57d, 0xa57c,
+ 0xa65f, 0xa65e, 0xc9c7, 0xa65d, 0xc9c6, 0x895b, 0xa779, 0xcaa9,
+ 0xcaa8, 0xa777, 0xa77a, 0xfb5c, 0xcaa7, 0xfb5b, 0xa778, 0xfb57,
+ 0xcbf0, 0xcbf1, 0xa954, 0x98c7, 0xabaa, 0xfb5a, 0xd148, 0xd149,
+ 0xae45, 0xae46, 0xd4ac, 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c,
+ 0xb3f2, 0xb6e9, 0xb6ea, 0xdce1, 0x9cee, 0xb9cf, 0xb9ce, 0xe549,
+ 0xe948, 0xe947, 0x92e2, 0xf96b, 0xa467, 0xc959, 0xc96e, 0xc96f,
+ 0xa662, 0xa666, 0xc9c9, 0xa664, 0xa663, 0xc9c8, 0xa665, 0xa661,
+ 0x94a7, 0xa660, 0xc9ca, 0xa7a6, 0x8ccc, 0xa7a3, 0x9bd4, 0xa77d,
+ 0xcaaa, 0xfb64, 0xfb76, 0xcaab, 0xfb60, 0xa7a1, 0xcaad, 0xa77b,
+ 0xcaae, 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, 0xa7a4, 0xa77c, 0xcaaf,
+ 0x99e5, 0x9ac2, 0x91fb, 0xa073, 0xa959, 0xcbfe, 0xa95b, 0xa95a,
+ 0x9f72, 0xcc40, 0xa958, 0xa957, 0xcbf5, 0xcbf4, 0xcbf2, 0xcbf7,
+ 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8, 0xa956, 0x9fcc,
+ 0xcbfb, 0xa95c, 0xcc41, 0x98a5, 0x92e8, 0xcbf9, 0xabab, 0xa955,
+ 0x9bbc, 0x96f3, 0xabac, 0xce54, 0x92e7, 0xce5a, 0xfc67, 0xabb2,
+ 0xce58, 0xce5e, 0xce55, 0xce59, 0xce5b, 0xce5d, 0xce57, 0x8b7d,
+ 0xce56, 0xce51, 0xce52, 0xabad, 0x9bf4, 0xabaf, 0xabae, 0xce53,
+ 0xce5c, 0x9ef7, 0x9ec1, 0xabb1, 0x996f, 0xce50, 0xd153, 0xd152,
+ 0xd157, 0xd14e, 0x96f1, 0xd151, 0xd150, 0x8e41, 0xd154, 0xd158,
+ 0xae47, 0xae4a, 0x954a, 0xd14f, 0xd155, 0x97e6, 0xae49, 0xd14a,
+ 0xabb0, 0xd4ba, 0xd156, 0xd14d, 0xae48, 0xd14c, 0x96f5, 0xd4b1,
+ 0x92e6, 0x9f42, 0xb0ec, 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1,
+ 0xd4bf, 0xfb67, 0xd4c5, 0xd4c9, 0xd4c0, 0xd4b4, 0xd4bc, 0x99a9,
+ 0xd4ca, 0xd4c8, 0xd4be, 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5,
+ 0xd4b7, 0xb0f6, 0xb0f2, 0xd4ad, 0xd4c3, 0xd4b5, 0xfae6, 0xd4b3,
+ 0xd4c6, 0xb0f3, 0xfb69, 0xd4cc, 0xb0ed, 0xb0ef, 0xd4bb, 0xd4b6,
+ 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb, 0xd4c2, 0xd4c4, 0x97e5,
+ 0xd4ae, 0xd8a1, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2, 0xb3fb, 0xb3f9,
+ 0x967d, 0xd8a4, 0xb3f6, 0xd8a8, 0xfb6c, 0xd8a3, 0xd8a5, 0xd87d,
+ 0xb3f4, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, 0xb3f7, 0xb3f8, 0xd14b,
+ 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, 0xd8b0, 0xd8af, 0x99a2,
+ 0xd8b3, 0xdcef, 0xd8ac, 0x9abb, 0x9a65, 0x944e, 0xd8a7, 0xdce7,
+ 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6, 0xdcea, 0xdce5, 0xb6ec, 0xb6f6,
+ 0xdce2, 0xb6f0, 0xdce9, 0xb6ee, 0xb6ed, 0xdcec, 0xb6ef, 0xdcee,
+ 0xfb6e, 0xdceb, 0xb6eb, 0x99df, 0xb6f5, 0xdcf0, 0xdce4, 0xdced,
+ 0xdce3, 0x98e3, 0xb6f1, 0x9254, 0xb6f3, 0xdce8, 0xdcf1, 0x967b,
+ 0x8aaf, 0xe15d, 0xb9d0, 0xe163, 0xb9d5, 0xe15f, 0xe166, 0xe157,
+ 0xb9d7, 0xb9d1, 0xe15c, 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0xb9d6,
+ 0xe15a, 0xe160, 0xe165, 0xe156, 0xb9d4, 0xe15e, 0xe162, 0xe168,
+ 0xe158, 0xe161, 0x8c77, 0xb9d3, 0xe167, 0xe159, 0x8baf, 0x9ebd,
+ 0xbc59, 0xe54b, 0xbc57, 0xbc56, 0xe54d, 0xe552, 0xe54e, 0xe551,
+ 0xbc5c, 0x9ee6, 0xbea5, 0xbc5b, 0xfb6f, 0xe54a, 0xe550, 0xbc5a,
+ 0xe54f, 0x8ee1, 0xe54c, 0xbc58, 0x9b7d, 0x9c7e, 0xe94d, 0xf9d9,
+ 0xe94f, 0xe94a, 0xbec1, 0xe94c, 0xbec0, 0xe94e, 0xbec3, 0xe950,
+ 0xbec2, 0xe949, 0xe94b, 0x92ea, 0xc0a5, 0xeccc, 0x8c78, 0xc0a4,
+ 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca, 0xc253, 0xc252, 0xf1f6,
+ 0xf1f8, 0xfb72, 0xf1f7, 0xc361, 0xc362, 0xfb71, 0xc363, 0xf442,
+ 0xc45b, 0xf7d3, 0xf7d2, 0xc5f2, 0xa468, 0xa4d0, 0xa7a7, 0x895c,
+ 0x98f0, 0x96f2, 0xce5f, 0xb3fc, 0xb3fd, 0xfb74, 0xdcf2, 0xb9d8,
+ 0xe169, 0xe553, 0x8bc1, 0xc95a, 0x895d, 0x89de, 0xcab0, 0x895e,
+ 0xc6ca, 0xcc42, 0xce60, 0xd159, 0xae4c, 0xfe42, 0xf1f9, 0xc4dc,
+ 0xa469, 0xa57e, 0xc970, 0xa667, 0xa668, 0xa95d, 0xfb7b, 0xb0f7,
+ 0xb9da, 0xb9db, 0xb9d9, 0xa46a, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b,
+ 0xa4d4, 0xa5a1, 0xc971, 0xa5a2, 0x895f, 0x8960, 0xa669, 0xa66a,
+ 0xc9cb, 0xa7a8, 0xcab1, 0xa961, 0xcc43, 0xa95f, 0xa960, 0xa95e,
+ 0xd15a, 0xabb6, 0xabb5, 0xabb7, 0xabb4, 0xce61, 0xa962, 0xabb3,
+ 0xae4d, 0xae4e, 0xae4f, 0xd4cd, 0xb3fe, 0xd8b4, 0xb0f8, 0x9bcd,
+ 0xb6f8, 0xb9dd, 0xb9dc, 0xe16a, 0xbc5d, 0xbec4, 0xefc0, 0xf6da,
+ 0xf7d4, 0xa46b, 0xa5a3, 0x9dd3, 0xa5a4, 0xc9d1, 0xa66c, 0xa66f,
+ 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, 0xc9cc, 0xa671, 0xa670,
+ 0xa66d, 0xa66b, 0xc9ce, 0x984c, 0xa7b3, 0xa7b0, 0xcab6, 0xcab9,
+ 0xcab8, 0xa7aa, 0xa7b2, 0x9752, 0xa7af, 0xcab5, 0xcab3, 0xa7ae,
+ 0x95c3, 0xa7a9, 0xa7ac, 0x9bb6, 0xcab4, 0xcabb, 0xcab7, 0xa7ad,
+ 0xa7b1, 0xa7b4, 0xcab2, 0xcaba, 0xa7ab, 0x9ab9, 0xa967, 0xa96f,
+ 0x97b3, 0xcc4f, 0xcc48, 0xa970, 0xcc53, 0xcc44, 0xcc4b, 0x9f74,
+ 0x92f1, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50, 0xa963, 0xcc51,
+ 0xcc4a, 0xcc4d, 0x97df, 0xa972, 0xa969, 0xcc54, 0xcc52, 0xfba6,
+ 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, 0xa96a, 0xa968,
+ 0xa971, 0xa96d, 0xa965, 0xcc4e, 0xabb9, 0xfbab, 0xabc0, 0xce6f,
+ 0xabb8, 0xce67, 0xce63, 0xce73, 0xce62, 0xabbb, 0xce6c, 0xabbe,
+ 0xabc1, 0xabbc, 0xce70, 0xabbf, 0x9877, 0xae56, 0xce76, 0xce64,
+ 0x9854, 0x95c5, 0xce66, 0xce6d, 0xce71, 0xce75, 0xce72, 0xce6b,
+ 0xce6e, 0x9d55, 0xfbb2, 0xce68, 0xabc3, 0xce6a, 0xce69, 0xce74,
+ 0xabba, 0xce65, 0xabc2, 0x957e, 0xabbd, 0xae5c, 0xd162, 0x9742,
+ 0xae5b, 0x94e6, 0xd160, 0xae50, 0x92f5, 0xae55, 0xd15f, 0xd15c,
+ 0xd161, 0xae51, 0xd15b, 0x8cc5, 0xae54, 0xae52, 0xd163, 0xae53,
+ 0xae57, 0x92fd, 0xae58, 0xfba2, 0xae5a, 0x9c51, 0xae59, 0x94e9,
+ 0x985c, 0x92f0, 0xd15d, 0xd15e, 0xd164, 0xd4d4, 0xb0f9, 0xd8c2,
+ 0xd4d3, 0xd4e6, 0xb140, 0x944c, 0xd4e4, 0xb0fe, 0xb0fa, 0xd4ed,
+ 0xd4dd, 0xd4e0, 0x916b, 0xb143, 0xd4ea, 0xd4e2, 0xb0fb, 0xb144,
+ 0xd4e7, 0xd4e5, 0xd4d6, 0xd4eb, 0xd4df, 0xd4da, 0x8b78, 0xd4d0,
+ 0xd4ec, 0xd4dc, 0xd4cf, 0x94e2, 0xb142, 0xd4e1, 0xd4ee, 0xd4de,
+ 0xd4d2, 0xd4d7, 0xd4ce, 0x984f, 0xb141, 0xfbb5, 0xd4db, 0xd4d8,
+ 0xb0fc, 0xd4d1, 0x9271, 0xd4e9, 0xb0fd, 0x9365, 0xd4d9, 0xd4d5,
+ 0x985b, 0xd4e8, 0x9850, 0xb440, 0xd8bb, 0x97bc, 0xd8b8, 0xd8c9,
+ 0xd8bd, 0xd8ca, 0x92f3, 0xb442, 0x9340, 0x984d, 0xd8c6, 0xd8c3,
+ 0x9572, 0xfdef, 0xd8c4, 0xd8c7, 0xd8cb, 0xd4e3, 0xd8cd, 0xdd47,
+ 0xfdc1, 0xb443, 0xd8ce, 0xd8b6, 0xd8c0, 0xfbba, 0xd8c5, 0x92eb,
+ 0xb441, 0xb444, 0xd8cc, 0xd8cf, 0xd8ba, 0xd8b7, 0xfc73, 0x97b7,
+ 0xd8b9, 0xd8be, 0xd8bc, 0xb445, 0xd8c8, 0xfbb4, 0xd8bf, 0xd8c1,
+ 0xd8b5, 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9, 0xdd44,
+ 0xdd40, 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd, 0xb6fc,
+ 0xdcfb, 0xdd41, 0xb6f9, 0xb741, 0x90a7, 0xdcf4, 0xdcfe, 0xdcf3,
+ 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0x9741, 0x92f4,
+ 0xfbbc, 0xe16e, 0xb9e2, 0xb9e1, 0xb9e3, 0xe17a, 0xe170, 0xe176,
+ 0xe16b, 0xe179, 0xe178, 0xe17c, 0xe175, 0xb9de, 0xe174, 0xb9e4,
+ 0x9577, 0xe16d, 0xb9df, 0xe17b, 0xb9e0, 0xe16f, 0xe172, 0xe177,
+ 0xe171, 0xe16c, 0x9ee2, 0x8f78, 0xe173, 0xe555, 0xbc61, 0xe558,
+ 0xe557, 0xe55a, 0xe55c, 0xf9dc, 0xbc5f, 0xe556, 0x9672, 0xe554,
+ 0xe55d, 0xe55b, 0xe559, 0xe55f, 0xe55e, 0xbc63, 0xbc5e, 0xbc60,
+ 0xbc62, 0x9eb5, 0xe560, 0xe957, 0x964b, 0xe956, 0xe955, 0x8cac,
+ 0xe958, 0xe951, 0xe952, 0xe95a, 0xe953, 0xbec5, 0xe95c, 0xa0fa,
+ 0xe95b, 0xe954, 0xecd1, 0xc0a8, 0xeccf, 0xecd4, 0xecd3, 0xe959,
+ 0xc0a7, 0x9575, 0xecd2, 0xecce, 0xecd6, 0xecd5, 0xc0a6, 0xecd0,
+ 0xbec6, 0xc254, 0xefc1, 0xf1fa, 0xf1fb, 0xf1fc, 0xc45c, 0x90da,
+ 0xc45d, 0x9367, 0xf443, 0xfea4, 0xf5c8, 0xf5c7, 0x90df, 0xf6db,
+ 0xf6dc, 0xf7d5, 0xf8a7, 0x9354, 0xa46c, 0xa46d, 0xa46e, 0xa4d5,
+ 0xa5a5, 0xc9d3, 0xa672, 0xa673, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5,
+ 0xa973, 0xcc55, 0xa975, 0xa974, 0xcc56, 0x8961, 0x8bb4, 0xabc4,
+ 0xae5d, 0xd165, 0x9dc0, 0xd4f0, 0xb145, 0xb447, 0xd4ef, 0xb446,
+ 0x8e48, 0xb9e5, 0xfbc5, 0xe17d, 0xbec7, 0xc0a9, 0xecd7, 0xfbc7,
+ 0xc45e, 0xc570, 0xc6cb, 0xc972, 0xfa79, 0xa5a6, 0xc973, 0xa676,
+ 0xa674, 0xa675, 0xa677, 0xa7ba, 0xa7b9, 0xcabc, 0xa7bb, 0x9e67,
+ 0xcabd, 0xcc57, 0xcc58, 0x8cd9, 0xa976, 0xa978, 0xa97a, 0xa977,
+ 0xa97b, 0xa979, 0xfbd2, 0x8962, 0x8963, 0xabc8, 0xabc5, 0xabc7,
+ 0xabc9, 0xabc6, 0xd166, 0xce77, 0xfc7d, 0xd168, 0xd167, 0xae63,
+ 0xae5f, 0xae60, 0xae62, 0xae64, 0xae61, 0xae66, 0xae65, 0xb14a,
+ 0xd4f2, 0xd4f1, 0xb149, 0x9f6b, 0xb148, 0xb147, 0xb14b, 0xb146,
+ 0xd8d5, 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0xb44b, 0xd8d4, 0xb448,
+ 0xb44a, 0xd8d3, 0xfbcc, 0xdd48, 0xfeae, 0xdd49, 0xdd4a, 0xb9e6,
+ 0xb9ee, 0xe17e, 0xb9e8, 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea,
+ 0xb9e7, 0xb9eb, 0xbc66, 0xd8d0, 0xbc67, 0xbc65, 0xbc64, 0xe95d,
+ 0xbec8, 0xecd8, 0xecd9, 0xfbd1, 0xc364, 0xc45f, 0xa46f, 0xa678,
+ 0xfb75, 0xabca, 0xd169, 0xae67, 0xfbd4, 0xb14e, 0xb14d, 0xb14c,
+ 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470, 0xc95c, 0xa4d6,
+ 0xc974, 0xfbd6, 0xfbd8, 0xc9d4, 0xa679, 0xa97c, 0x8b5d, 0x934c,
+ 0xdd4b, 0x9ae2, 0xa471, 0x8bc9, 0xa4d7, 0xc9d5, 0xcabe, 0xcabf,
+ 0xa7bc, 0xd8d8, 0xb44e, 0xdd4c, 0xc0aa, 0xa472, 0xa4a8, 0xa4d8,
+ 0xc975, 0xa5a7, 0xa7c0, 0xa7bf, 0xa7bd, 0xa7be, 0xcc59, 0xa97e,
+ 0xa9a1, 0xcc5a, 0xa97d, 0xfbdb, 0x9fc9, 0xabce, 0xce78, 0xabcd,
+ 0xabcb, 0xabcc, 0xae6a, 0xae68, 0x9f44, 0xd16b, 0xae69, 0xd16a,
+ 0xae5e, 0xd4f3, 0xb150, 0xb151, 0x98ed, 0xb14f, 0xb9f0, 0xe1a2,
+ 0xbc68, 0xbc69, 0xe561, 0xc0ab, 0xefc2, 0xefc3, 0xc4dd, 0xf8a8,
+ 0xc94b, 0xa4d9, 0xa473, 0xc977, 0xc976, 0xa67a, 0xc9d7, 0xc9d8,
+ 0xc9d6, 0xc9d9, 0xfbdd, 0xcac7, 0xcac2, 0xcac4, 0xcac6, 0xcac3,
+ 0xa7c4, 0xcac0, 0xcac1, 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3,
+ 0xcac9, 0x8df2, 0x8964, 0xfdf2, 0xcc68, 0x934d, 0xcc62, 0xcc5d,
+ 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69, 0xcc6c, 0xcc67, 0xcc60,
+ 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64, 0xcc5b, 0xcc5f, 0xcc6b,
+ 0xa9a7, 0xa9a8, 0xcc5e, 0xcc6a, 0xa9a2, 0xa9a4, 0xfbe7, 0xa0f2,
+ 0x9868, 0xceab, 0xcea4, 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b,
+ 0xceac, 0xcea9, 0xce79, 0x9f58, 0xabd0, 0xcea7, 0xcea8, 0xcea6,
+ 0xce7c, 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0xcea1, 0xcead, 0x8d73,
+ 0xae6f, 0xfbde, 0xae6e, 0xd16c, 0xae6b, 0xd16e, 0xfbdf, 0xae70,
+ 0xd16f, 0xae73, 0x8c48, 0xae71, 0xd170, 0xceae, 0xd172, 0xae6d,
+ 0xae6c, 0xd16d, 0xd171, 0xae72, 0xb153, 0xb152, 0xd4f5, 0xd4f9,
+ 0xd4fb, 0xb154, 0xd4fe, 0xfbe3, 0xb158, 0xd541, 0xb15a, 0x8da8,
+ 0xb156, 0xb15e, 0xfbe4, 0xb15b, 0xd4f7, 0xb155, 0xd4f6, 0xd4f4,
+ 0xd543, 0xd4f8, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d,
+ 0xd4fa, 0xb159, 0x9c75, 0xd544, 0x9878, 0xd540, 0xd8e7, 0xd8ee,
+ 0xd8e3, 0xb451, 0xd8df, 0xd8ef, 0xd8d9, 0xd8ec, 0xd8ea, 0xd8e4,
+ 0xd8ed, 0xd8e6, 0x8d60, 0xd8de, 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da,
+ 0xd8f1, 0xfbe5, 0xb452, 0x8d61, 0xd8eb, 0xdd4f, 0xd8dd, 0xb44f,
+ 0xd8e1, 0xb450, 0xd8e0, 0xd8e5, 0xd8e2, 0x8d62, 0xa0a1, 0xd8e8,
+ 0x9c40, 0xdd53, 0xdd56, 0xdd4e, 0xdd50, 0xdd55, 0xdd54, 0xb743,
+ 0xd8db, 0xdd52, 0xb744, 0x98ad, 0xdd4d, 0xdd51, 0x9eea, 0xe1a9,
+ 0xe1b0, 0xe1a7, 0x8cd4, 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, 0xe1a4,
+ 0xe1a8, 0xe1a3, 0xb9f1, 0x9ceb, 0xe1a6, 0xb9f2, 0xe1ac, 0xe1ab,
+ 0xe1aa, 0xfbe0, 0xe1af, 0x9f51, 0xe565, 0xe567, 0xbc6b, 0xe568,
+ 0xe563, 0xe562, 0xe56c, 0xe56a, 0xbc6a, 0xe56d, 0xe564, 0xe569,
+ 0xe56b, 0xe566, 0x8d65, 0xe961, 0xe966, 0xe960, 0xe965, 0x9cf1,
+ 0xe95e, 0xe968, 0xe964, 0xe969, 0xe963, 0xe95f, 0xe967, 0xe96a,
+ 0xe962, 0xfc58, 0xecda, 0xc0af, 0x8d66, 0xc0ad, 0xc0ac, 0xc0ae,
+ 0xefc4, 0x9654, 0xf172, 0xf1fd, 0xf444, 0xf445, 0xc460, 0xf5c9,
+ 0xc4de, 0xf5ca, 0xf6de, 0xc572, 0xc571, 0xf6dd, 0xc5c9, 0xfbe8,
+ 0xf7d6, 0xc6cc, 0xa474, 0xa67b, 0xc9da, 0xcaca, 0xa8b5, 0xb15f,
+ 0xa475, 0xa5aa, 0xa5a9, 0xa5a8, 0xa7c5, 0xae74, 0xdd57, 0xa476,
+ 0xa477, 0xa478, 0xa4da, 0x9fce, 0xabd1, 0xceaf, 0xb453, 0xa479,
+ 0xc95d, 0xa5ab, 0xa5ac, 0xc978, 0xa67c, 0xfbfc, 0xcacb, 0x9ae4,
+ 0xa7c6, 0xcacc, 0xa9ae, 0x9f75, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d,
+ 0xa9a9, 0xcc6f, 0xa9aa, 0xa9ad, 0xabd2, 0xabd4, 0xceb3, 0xceb0,
+ 0xceb1, 0xceb2, 0xceb4, 0xabd3, 0xd174, 0xd173, 0xae76, 0xae75,
+ 0xfbf1, 0xb162, 0xd546, 0xb161, 0xb163, 0xb160, 0xb455, 0xd545,
+ 0xb456, 0xd8f3, 0x8d69, 0xb457, 0xd8f2, 0xb454, 0x934f, 0xdd5a,
+ 0xdd5c, 0xb745, 0xdd5b, 0xdd59, 0xdd58, 0xe1b4, 0xb9f7, 0xb9f5,
+ 0xb9f6, 0xe1b2, 0xe1b3, 0xb9f3, 0xe571, 0xe56f, 0x934e, 0xbc6d,
+ 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0xe96d, 0xe96b, 0xe96c, 0xe56e,
+ 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6, 0xe96e, 0xf1fe, 0xa47a,
+ 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0xa9af, 0xb746, 0xfbf4, 0xa4db,
+ 0xa5ae, 0xabd5, 0xb458, 0xc6ce, 0xc979, 0xc97a, 0xfbc3, 0xc9dc,
+ 0x8965, 0xa7c8, 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1,
+ 0xa7c7, 0x8c7a, 0xa9b3, 0xa9b4, 0xa9b1, 0x8c7b, 0xa9b0, 0xceb8,
+ 0xa9b2, 0xabd6, 0xceb7, 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79,
+ 0xd175, 0xd177, 0xae77, 0xd178, 0xae78, 0xd176, 0xceb5, 0xd547,
+ 0xd54a, 0xd54b, 0xd548, 0xb167, 0xb166, 0xb164, 0xb165, 0xd549,
+ 0x8d6a, 0xb168, 0xb45a, 0xb45b, 0xb45c, 0xdd5d, 0xdd5f, 0xdd61,
+ 0xb748, 0xb747, 0xb459, 0xdd60, 0xdd5e, 0x9353, 0xe1b8, 0x9dfb,
+ 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9, 0xe1b7, 0xe1b5,
+ 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574, 0xbc71, 0xbc74,
+ 0xe575, 0xbc6f, 0xbc73, 0xe973, 0xe971, 0xe970, 0xe972, 0xe96f,
+ 0xc366, 0xf446, 0xf447, 0xf5cb, 0xf6df, 0xc655, 0xfbfd, 0xa9b5,
+ 0xa7ca, 0x9059, 0xfc40, 0xabd8, 0xfc41, 0xfc43, 0xa47b, 0xa4dc,
+ 0xa5af, 0xc9dd, 0xa7cb, 0xcad2, 0xcebb, 0xabd9, 0xb9fa, 0xa47c,
+ 0x9361, 0xfc46, 0x9362, 0xa6a1, 0xb749, 0xa47d, 0xa4dd, 0xa4de,
+ 0xa5b1, 0xa5b0, 0xc9de, 0xa6a2, 0xcad3, 0xa7cc, 0xcc71, 0xcc72,
+ 0xcc73, 0x8d6b, 0xa9b6, 0xa9b7, 0xcc70, 0xa9b8, 0xabda, 0xcebc,
+ 0xd17a, 0xae7a, 0xd179, 0xb169, 0xd54c, 0xb16a, 0xd54d, 0xfc4c,
+ 0xb45d, 0xdd62, 0xe1bf, 0xe1be, 0xb9fb, 0xbc75, 0xe576, 0xbeca,
+ 0xe974, 0xc0b1, 0x95b8, 0xc573, 0xf7d8, 0xc6d0, 0x8bca, 0xcc74,
+ 0xcebd, 0xb16b, 0xd8f4, 0xb74a, 0x987a, 0xc255, 0xc6d1, 0xa7ce,
+ 0xfc51, 0xa7cd, 0xabdb, 0xd17b, 0xb16d, 0xb343, 0xb16e, 0xb16c,
+ 0xb45e, 0xe1c0, 0xb9fc, 0xbc76, 0xfc54, 0xc94c, 0xc9df, 0xcad5,
+ 0xa7cf, 0xcad4, 0xa7d0, 0xfaaf, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb,
+ 0xa9b9, 0xa9ba, 0xcc75, 0x8d6c, 0xabdd, 0xcebe, 0xabe0, 0xabdc,
+ 0xabe2, 0xabde, 0xabdf, 0xabe1, 0xae7d, 0xae7c, 0xae7b, 0xd54f,
+ 0xb16f, 0xb172, 0xb170, 0xd54e, 0xb175, 0xb171, 0xd550, 0xb174,
+ 0xb173, 0xfa61, 0xd8f6, 0xd8f5, 0xfc57, 0xb461, 0xb45f, 0xb460,
+ 0xd8f7, 0xb74b, 0xdd64, 0xb74c, 0xdd63, 0x9b70, 0xe577, 0xbc78,
+ 0xe1c1, 0xbc77, 0xb9fd, 0xa051, 0xecde, 0xe975, 0xc0b2, 0xecdd,
+ 0xf240, 0xf448, 0xf449, 0x8c7c, 0xa4df, 0x8bcb, 0xa5b2, 0xc97b,
+ 0xa7d2, 0xa7d4, 0xc9e2, 0xcad8, 0xcad7, 0xcad6, 0xc9e1, 0xc9e0,
+ 0xa6a4, 0xa7d3, 0xa7d1, 0xa6a3, 0x936e, 0xa9bd, 0xcc78, 0xfcd5,
+ 0xa9be, 0xcadd, 0xcadf, 0xcade, 0xcc79, 0xcada, 0xa7d8, 0xa7d6,
+ 0xcad9, 0xcadb, 0xcae1, 0xa7d5, 0xcadc, 0xcae5, 0xa9c0, 0xcae2,
+ 0xa7d7, 0xcae0, 0xcae3, 0xa9bf, 0xa9c1, 0xcae4, 0xccaf, 0xcca2,
+ 0xcc7e, 0xccae, 0xcca9, 0xabe7, 0xa9c2, 0xccaa, 0xccad, 0xabe3,
+ 0xccac, 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, 0xcc7c, 0xcca5, 0xa9cd,
+ 0xccb0, 0xabe4, 0xcca6, 0xabe5, 0xa9c9, 0xcca8, 0xfca9, 0xcecd,
+ 0xabe6, 0xcc7b, 0xa9ca, 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7,
+ 0xcc7a, 0xccab, 0xa9c4, 0xfc61, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5,
+ 0xcebf, 0xcec0, 0x8966, 0xceca, 0xd1a1, 0xcecb, 0xabee, 0xcece,
+ 0xcec4, 0xabed, 0xcec6, 0xcec7, 0xfacb, 0xcec9, 0xabe9, 0xaea3,
+ 0xf9da, 0xcec5, 0xcec1, 0xaea4, 0xcecf, 0xae7e, 0xd17d, 0xcec8,
+ 0xd17c, 0xcec3, 0xcecc, 0xabec, 0xaea1, 0xabf2, 0xaea2, 0xced0,
+ 0xd17e, 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef, 0xaea5, 0xced1,
+ 0xaea7, 0xabea, 0xcec2, 0x937a, 0xa0e0, 0x936b, 0xb176, 0xd1a4,
+ 0xd1a6, 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, 0xd1a3, 0xb178,
+ 0xd551, 0xaead, 0xaeab, 0xd1ae, 0xd552, 0xd1a5, 0xaeac, 0xd1a9,
+ 0xaeaf, 0xd1ab, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xfc6b, 0xaea9,
+ 0xb179, 0xd1a2, 0xb177, 0xa0dc, 0x9468, 0xb17a, 0xd555, 0xd55e,
+ 0xb464, 0xfc6d, 0xb17c, 0xb1a3, 0xb465, 0xd560, 0xb1aa, 0xd8f9,
+ 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554, 0xd562, 0xd565, 0xd949,
+ 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac, 0xd55d, 0xd8f8, 0xd561,
+ 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559, 0xb462, 0xd557, 0xd558,
+ 0xb1a7, 0x8d71, 0xb1a6, 0xd55b, 0xb1ab, 0xd55f, 0xb1a4, 0xd55c,
+ 0xfd64, 0xb1a9, 0xb466, 0xb463, 0xd8fb, 0x99ba, 0xd55a, 0xb17d,
+ 0x9ad0, 0x9a61, 0xa0e5, 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d,
+ 0xd944, 0xb471, 0xdd65, 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947,
+ 0xa05b, 0xd948, 0xd94e, 0xb473, 0xb754, 0xd94a, 0xd94f, 0xd943,
+ 0xb75e, 0x96ac, 0xb755, 0xb472, 0xd941, 0xd950, 0x9740, 0xb75d,
+ 0xb470, 0xb74e, 0xd94d, 0xb474, 0xd945, 0xd8fe, 0xb46a, 0xd942,
+ 0xd94b, 0x9ef1, 0xb74d, 0xb752, 0xb467, 0xd94c, 0xb750, 0x8c4d,
+ 0xb468, 0xb75c, 0xe1c3, 0xdd70, 0xdd68, 0xe1c2, 0xdd6c, 0xdd6e,
+ 0x9f7e, 0xdd6b, 0xb75b, 0xdd6a, 0xb75f, 0xe1d2, 0x8d72, 0xb75a,
+ 0xba40, 0xdd71, 0xe1c4, 0xfc76, 0xb758, 0xdd69, 0xdd6d, 0xb9fe,
+ 0xb74f, 0xdd66, 0xdd67, 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f,
+ 0x96a9, 0xe1c8, 0xe1c9, 0xe1ce, 0xbc7d, 0xe1d5, 0xba47, 0xa06e,
+ 0xba46, 0xe1d0, 0xfcaa, 0xbc7c, 0xe1c5, 0xba45, 0xfbcd, 0xe1d4,
+ 0xba43, 0xba44, 0xfc74, 0xe1d1, 0xe5aa, 0xbc7a, 0xb46e, 0xe1d3,
+ 0xbca3, 0xe1cb, 0xbc7b, 0xa074, 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7,
+ 0xe1cd, 0xba48, 0xbc79, 0xba42, 0xe57a, 0xe1cf, 0xbca1, 0xa071,
+ 0xbca4, 0xe1cc, 0xfc79, 0xbc7e, 0xe579, 0xfc7c, 0xe57e, 0xbece,
+ 0xe578, 0xe9a3, 0xe5a9, 0xbca8, 0xbca6, 0xbecc, 0xe5a6, 0xe5a2,
+ 0xbcac, 0x9c50, 0xe978, 0x9379, 0x9378, 0xbcaa, 0xe5a1, 0xa0dd,
+ 0xe976, 0xe5a5, 0xe5a8, 0xe57d, 0xbcab, 0xbca5, 0xe977, 0xbecd,
+ 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, 0xe57c, 0xe57b,
+ 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0x8d75, 0xe9a2, 0x8d76,
+ 0xe97e, 0xece1, 0xbed1, 0xe9a1, 0x9374, 0xe97c, 0xc0b4, 0xecdf,
+ 0xe979, 0xe97b, 0xc0b5, 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d,
+ 0xbecf, 0x8d77, 0xfca5, 0xfca2, 0xefcf, 0xefc7, 0x90c3, 0xece7,
+ 0xefc8, 0xece3, 0xa079, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2,
+ 0xece6, 0xefd0, 0xefcc, 0xefce, 0xefc9, 0xefca, 0xefcd, 0xefcb,
+ 0xc367, 0xc36a, 0xc369, 0xc368, 0xc461, 0xf44a, 0xc462, 0xf241,
+ 0xc4df, 0xf5cc, 0xc4e0, 0xc574, 0xc5ca, 0xf7d9, 0xf7da, 0xf7db,
+ 0xf9ba, 0xa4e0, 0xc97c, 0xa5b3, 0xa6a6, 0xa6a7, 0xa6a5, 0xa6a8,
+ 0xa7da, 0xa7d9, 0xccb1, 0xa9cf, 0xa9ce, 0xd1af, 0xb1ad, 0xb1ae,
+ 0xb475, 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0xe1d7,
+ 0xe1d6, 0xba49, 0xe1d8, 0x8d79, 0xe5ac, 0xbcae, 0xbed4, 0xc0b8,
+ 0xc257, 0xc0b9, 0xa4e1, 0x8bfc, 0xa076, 0xcae6, 0xccb2, 0xa9d1,
+ 0xa9d0, 0xa9d2, 0xabf3, 0xced2, 0xced3, 0xd1b0, 0xaeb0, 0xb1af,
+ 0xb476, 0xd951, 0xa4e2, 0x8bcd, 0xa47e, 0xa4e3, 0xc97d, 0xa5b7,
+ 0xa5b6, 0xa5b4, 0xa5b5, 0xa6ab, 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3,
+ 0xc9e4, 0xc9ea, 0xc9e6, 0xc9e8, 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7,
+ 0x9f5a, 0xa7e1, 0xa7ea, 0xa7e8, 0xcaf0, 0xcaed, 0xcaf5, 0xa7e6,
+ 0xcaf6, 0xa7df, 0xcaf3, 0xa7e5, 0xcaef, 0xcaee, 0xa7e3, 0xcaf4,
+ 0xa7e4, 0xa9d3, 0xa7de, 0xcaf1, 0x9ff4, 0xcae7, 0xa7db, 0x9fba,
+ 0xa7ee, 0xcaec, 0xcaf2, 0xa7e0, 0xa7e2, 0xcae8, 0xcae9, 0xcaea,
+ 0x8d7a, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc,
+ 0xa7e9, 0x9e45, 0x93b0, 0xa075, 0xa9e1, 0xccbe, 0xccb7, 0xa9dc,
+ 0xa9ef, 0xccb3, 0xccba, 0xccbc, 0xccbf, 0xa9ea, 0xccbb, 0xccb4,
+ 0xa9e8, 0xccb8, 0xccc0, 0xa9d9, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6,
+ 0xa9d7, 0xa9d8, 0x9b46, 0xa9d6, 0xfcae, 0xa9ee, 0xa9e6, 0xa9e0,
+ 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7, 0xa9f0, 0xced4, 0xa9e4,
+ 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xfcb0, 0xa9ec, 0xa9ed, 0xa9eb,
+ 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0xfa51, 0x8d7b, 0xceda, 0xac41,
+ 0xabf8, 0xabfa, 0xac40, 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43,
+ 0xced7, 0xcedf, 0xabfe, 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7,
+ 0xabfb, 0xac42, 0xaeb3, 0xcee0, 0xabf9, 0xac45, 0xced9, 0xabfc,
+ 0xaeb2, 0xabf6, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, 0xd1b2,
+ 0xac44, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0x8d7c, 0xaec1, 0xd1be,
+ 0xaebf, 0xaec0, 0xd1b4, 0xd1c4, 0x9ed6, 0xaeb6, 0x93ac, 0xd566,
+ 0xd1c6, 0xd1c0, 0x9f5b, 0xd1b7, 0x93a9, 0xd1c9, 0xd1ba, 0xaebc,
+ 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0xd1cb, 0xd1bf, 0xaeb8, 0xd1b8,
+ 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, 0xd1cc, 0xaebb, 0xd1bc, 0xd1bb,
+ 0xaec3, 0xaec2, 0xaeb4, 0xaeba, 0xaebd, 0xd1c8, 0xd1c2, 0xaeb7,
+ 0xd1b3, 0xd1ca, 0xd1c1, 0xd1c3, 0xd1c7, 0xa07c, 0xd567, 0xb1b7,
+ 0xb1cb, 0xb1ca, 0xb1bf, 0xfcb2, 0xd579, 0xd575, 0xd572, 0xd5a6,
+ 0xb1ba, 0xb1b2, 0xd577, 0xb4a8, 0xb1b6, 0xd5a1, 0x8ac1, 0xb1cc,
+ 0xb1c9, 0xd57b, 0xd56a, 0x9fb4, 0xb1c8, 0xd5a3, 0xd569, 0xb1bd,
+ 0xb1c1, 0xd5a2, 0xd573, 0xb1c2, 0xb1bc, 0xd568, 0xfcac, 0xb478,
+ 0xd5a5, 0xd571, 0xb1c7, 0xd574, 0xd5a4, 0xb1c6, 0xd952, 0xb1b3,
+ 0xd56f, 0xb1b8, 0xb1c3, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e,
+ 0xb1b0, 0xb1c4, 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0xb1b1, 0xb1c0,
+ 0xb1bb, 0xb1b9, 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, 0xd954,
+ 0xd953, 0x9e4c, 0xd56b, 0xd964, 0xb47a, 0x8fc5, 0xd96a, 0xd959,
+ 0xd967, 0xdd77, 0xb47d, 0xd96b, 0xd96e, 0xb47c, 0xd95c, 0xd96d,
+ 0xd96c, 0xb47e, 0xd955, 0xb479, 0xb4a3, 0x93ad, 0xb4a1, 0xd969,
+ 0xd95f, 0xb4a5, 0xd970, 0xd968, 0xd971, 0xb4ad, 0xb4ab, 0xd966,
+ 0xd965, 0x9dc3, 0xd963, 0xd95d, 0xb4a4, 0x8da2, 0xb4a2, 0xd1b9,
+ 0xd956, 0x9d4a, 0xddb7, 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0xb4a6,
+ 0xb4a7, 0xd958, 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961,
+ 0xd95e, 0xfcb6, 0xb4ae, 0x8da3, 0x9e4b, 0x9e4d, 0xb770, 0x8da4,
+ 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c, 0xddbb, 0xb769, 0xdd7a,
+ 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e, 0xb76f, 0xdda5, 0xddb2,
+ 0xddb8, 0xb76a, 0xb764, 0xdda3, 0xdd7d, 0xddba, 0xdda8, 0xdda9,
+ 0xdd7e, 0xddb4, 0xddab, 0xddb5, 0xddad, 0xb765, 0xe1d9, 0xb768,
+ 0xb766, 0xddb9, 0xddb0, 0xddac, 0x8afd, 0xdda1, 0xba53, 0xddaf,
+ 0xb76d, 0xdda7, 0xfcb5, 0xdda6, 0xfcc3, 0x93b2, 0xb767, 0xb763,
+ 0xe1ee, 0xddb3, 0xddae, 0xdda2, 0xe1e9, 0xe1da, 0xe1e5, 0xe1ec,
+ 0xba51, 0xb4ac, 0xe1ea, 0xba4c, 0xba4b, 0xe1f1, 0x8da5, 0xe1db,
+ 0xe1e8, 0xe1dc, 0xe1e7, 0xba4f, 0xe1eb, 0xd962, 0xe1f2, 0xe1e3,
+ 0xba52, 0xe5ba, 0xbcaf, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0,
+ 0xe5ae, 0x93a1, 0xe1df, 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3,
+ 0xba4e, 0xbcb1, 0xba50, 0xba55, 0x8ac6, 0xe1e1, 0xe1ed, 0xe1e6,
+ 0xe5b1, 0xba4a, 0xbcb4, 0xe9aa, 0xe5b6, 0xe5b5, 0xe5b7, 0x8a5b,
+ 0xe5b4, 0xbcb5, 0x894d, 0xbcbb, 0xbcb8, 0xbcb9, 0xe5af, 0xe5b2,
+ 0xe5bc, 0xbcc1, 0xbcbf, 0xe5b3, 0xd95a, 0xbcb2, 0xe5b9, 0xe5b0,
+ 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0xbcba, 0xbcbe, 0xbcc0,
+ 0xbcbd, 0xbcbc, 0xfed4, 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3, 0x8a78,
+ 0x93ab, 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, 0x8da7, 0xbed6,
+ 0xbedd, 0xe9ab, 0xbedb, 0xbed5, 0xbedc, 0xe9a8, 0xc0bb, 0xbed7,
+ 0xbede, 0xc0ba, 0xe9a7, 0xe9a6, 0xbee0, 0x9f45, 0xbee1, 0xe9a5,
+ 0xe9a4, 0xc0bc, 0xe9ae, 0xbeda, 0xe9ac, 0x8a56, 0xc0bd, 0xfcbf,
+ 0xc0c2, 0xecea, 0xecec, 0xfcc0, 0xc0bf, 0x8ee6, 0xeced, 0xece9,
+ 0x8aa4, 0xeceb, 0xc0c0, 0xc0c3, 0xece8, 0xc0be, 0xc0c1, 0xc259,
+ 0xe9ad, 0xc258, 0xc25e, 0xefd4, 0xc25c, 0xc25d, 0xefd7, 0xefd3,
+ 0xc25a, 0xefd1, 0xc36b, 0xefd5, 0xefd6, 0xefd2, 0xc25b, 0xf242,
+ 0xf245, 0x8943, 0xf246, 0xf244, 0xf247, 0xc36c, 0xf243, 0x93f3,
+ 0xf44e, 0xc464, 0xf44d, 0xf44c, 0xf44b, 0xc463, 0xc465, 0xf5cd,
+ 0xc4e2, 0xc4e1, 0xfcab, 0x9ea2, 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb,
+ 0xc575, 0xf7dd, 0xf6e2, 0xf7dc, 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9,
+ 0xf8ef, 0xa4e4, 0x9dc7, 0xd972, 0xe9af, 0xc6d2, 0x8bce, 0xa6ac,
+ 0xcaf7, 0xa7f1, 0xa7ef, 0xa7f0, 0xccc1, 0xa9f1, 0xac46, 0xcee7,
+ 0xcee8, 0xac47, 0xd1ce, 0xaec4, 0xaec5, 0xd1cd, 0xfcc5, 0xb1d3,
+ 0xb1cf, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, 0xb1d4, 0xb1d0,
+ 0xd976, 0xb1cd, 0xb4af, 0xfccb, 0xb4b1, 0xb4b2, 0xd975, 0xd978,
+ 0xb4b0, 0xd973, 0xd977, 0xd974, 0x93b3, 0xb771, 0xfcca, 0xddbc,
+ 0xba56, 0xe1f4, 0xbee3, 0xbcc4, 0xe5bd, 0xbcc5, 0xbcc6, 0xe5bf,
+ 0xe5be, 0xe5c0, 0xe9b1, 0xe9b0, 0xecef, 0xecee, 0xc0c4, 0xc0c5,
+ 0xf248, 0xfcc9, 0x8dac, 0xa4e5, 0xfbc6, 0x8967, 0x8c7e, 0xd979,
+ 0xb4b4, 0xb4b3, 0xddbd, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, 0xaec6,
+ 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, 0xe1f5, 0xba57, 0xe9b2,
+ 0xa4e7, 0xa5b8, 0xa9f2, 0xccc2, 0xcee9, 0xac48, 0xb1d9, 0xd97c,
+ 0xb4b5, 0xb773, 0xe5c1, 0xe5c2, 0xfccd, 0xecf0, 0xc25f, 0xf8f0,
+ 0xa4e8, 0xccc3, 0xa9f3, 0xac49, 0x9cf3, 0xceea, 0xaec7, 0xd1d2,
+ 0xd1d0, 0xd1d1, 0xaec8, 0xd1cf, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd,
+ 0xb1da, 0xd97d, 0xfcd0, 0xd97e, 0xddbe, 0x95bb, 0xba59, 0xba58,
+ 0xecf1, 0xefd9, 0xf24a, 0xf249, 0xf44f, 0xfcd3, 0xc95e, 0xac4a,
+ 0xfcd4, 0xa4e9, 0xa5b9, 0xa6ae, 0xa6ad, 0xa6af, 0xa6b0, 0xc9ee,
+ 0xc9ed, 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9, 0xcafc, 0xa9f4,
+ 0xccc9, 0xccc5, 0xccce, 0x8dae, 0xa9fb, 0xa9f9, 0xccca, 0xccc6,
+ 0xcccd, 0xa9f8, 0xaa40, 0xccc8, 0xccc4, 0xa9fe, 0xcccb, 0xa9f7,
+ 0xcccc, 0xa9fa, 0xa9fc, 0xccd0, 0xcccf, 0xccc7, 0xa9f6, 0xa9f5,
+ 0xa9fd, 0xfcd7, 0xceef, 0xcef5, 0x93db, 0xac50, 0xac4d, 0xceec,
+ 0xcef1, 0xfe63, 0xac53, 0xac4b, 0xcef0, 0xac4e, 0xac51, 0xcef3,
+ 0xac4c, 0xcef8, 0xac4f, 0x93d5, 0xac52, 0xceed, 0xcef2, 0xcef6,
+ 0xceee, 0xceeb, 0xcef7, 0xcef4, 0xaed0, 0xaec9, 0xaecc, 0xfcda,
+ 0xaecf, 0xd1d5, 0x9b71, 0xaeca, 0xd1d3, 0xfcdd, 0xaece, 0xaecb,
+ 0xd1d6, 0xaecd, 0x8daf, 0xfaf2, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad,
+ 0xb1de, 0xb1e3, 0xd1d4, 0xd5aa, 0xd5ae, 0x93d8, 0xb1e0, 0xd5a9,
+ 0xb1e2, 0xfcdf, 0xb1e1, 0xd9a7, 0x93d3, 0xd9a2, 0xb4b6, 0xb4ba,
+ 0xb4b7, 0xd9a5, 0xd9a8, 0xfce1, 0xb4b8, 0xb4b9, 0xb4be, 0xddc7,
+ 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1, 0x8e76, 0xb4bd, 0xd9a4, 0xb779,
+ 0xfc62, 0xddbf, 0xb776, 0xb777, 0xb775, 0xddc4, 0xddc3, 0xddc0,
+ 0xb77b, 0x93d1, 0xddc2, 0xb4bb, 0x8db1, 0xddc6, 0xddc1, 0xb778,
+ 0xb774, 0xb77a, 0xddc5, 0x9859, 0xba5c, 0xe1f8, 0xe1f7, 0xe1f6,
+ 0xba5a, 0xfb52, 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0xfb53, 0xbcc7,
+ 0xe5c9, 0xe5c4, 0xbcca, 0xe5c6, 0xfb4d, 0xbcc9, 0xe5c3, 0x9cbf,
+ 0xe5c7, 0xbee9, 0xbee6, 0xe9bb, 0xe9ba, 0xe9b9, 0xe9b4, 0x9b72,
+ 0xe9b5, 0xbee7, 0xbee4, 0xbee8, 0xe9b3, 0xbee5, 0xe9b6, 0xe9b7,
+ 0xe9bc, 0xfb50, 0x93be, 0xe9b8, 0xecf2, 0xc0c7, 0xefdc, 0xc0c6,
+ 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0xc36d, 0xf451, 0xf452,
+ 0xc466, 0xf450, 0xc4e4, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0xa4ea,
+ 0x9df1, 0xa6b1, 0xa6b2, 0xa7f3, 0xccd1, 0xac54, 0xaed1, 0xb1e4,
+ 0xb0d2, 0xb4bf, 0xb4c0, 0xb3cc, 0xd9a9, 0xfceb, 0xb77c, 0xe1fa,
+ 0xe1f9, 0xa4eb, 0xa6b3, 0xccd2, 0xaa42, 0xa0bb, 0xaa41, 0x9b7e,
+ 0xcef9, 0xcefa, 0xd1d7, 0xd1d8, 0xaed2, 0xaed3, 0x8db3, 0xaed4,
+ 0xd5af, 0x8c52, 0xb1e6, 0xb4c2, 0x9ae8, 0xb4c1, 0xddc8, 0xdf7a,
+ 0xe1fb, 0xe9bd, 0x8edc, 0xc261, 0xc467, 0xa4ec, 0xa5bc, 0xa5bd,
+ 0xa5bb, 0xa5be, 0xa5ba, 0xa6b6, 0xc9f6, 0xa6b5, 0xa6b7, 0x9cf9,
+ 0xc9f1, 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4,
+ 0xfa50, 0xcafd, 0xa7fd, 0xcafe, 0xcb43, 0xa7fc, 0xcb47, 0xcb42,
+ 0xcb45, 0xa7f5, 0xa7f6, 0xa7f7, 0xa7f8, 0xa840, 0xcb41, 0xa7fa,
+ 0xa841, 0xcb40, 0xcb46, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, 0xa7fe,
+ 0x98e7, 0xfcf3, 0xfcf2, 0xaa57, 0x8cca, 0xccd4, 0xaa43, 0xaa4d,
+ 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53, 0xccd7, 0xaa49,
+ 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4, 0xaa51, 0xaa4f,
+ 0xcce5, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a, 0xaa50, 0xaa44,
+ 0xccde, 0xccdd, 0xccd5, 0x93e5, 0xaa52, 0xcce1, 0xccd6, 0xaa55,
+ 0xcce8, 0xaa45, 0xaa4c, 0xccd9, 0xcce2, 0xaa54, 0xaa47, 0xaa4b,
+ 0xcce0, 0x9a59, 0x8db5, 0xfd4d, 0xcf5b, 0xac5c, 0xac69, 0xfd5e,
+ 0xcf56, 0xcf4c, 0xac62, 0xcf4a, 0xac5b, 0xcf45, 0xac65, 0xcf52,
+ 0xcefe, 0xcf41, 0x8f7d, 0xcf44, 0xcefb, 0xcf51, 0xcf61, 0xac60,
+ 0xcf46, 0xcf58, 0xcefd, 0xcf5f, 0xcf60, 0xcf63, 0xcf5a, 0xcf4b,
+ 0xcf53, 0xac66, 0xac59, 0xac61, 0xac6d, 0xac56, 0xac58, 0x9547,
+ 0xfcf6, 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40, 0xac6c, 0xac67,
+ 0xcf49, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c, 0xcf54, 0xac5e,
+ 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f, 0xcf55, 0xac57,
+ 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d, 0xcf42, 0x9250,
+ 0xcf5e, 0xcf57, 0x8968, 0xac55, 0x8db6, 0xfcfb, 0xa07d, 0x98fc,
+ 0x8969, 0xfe4f, 0x9256, 0xd1ec, 0xaeea, 0xd1ed, 0xd1e1, 0xaedf,
+ 0xaeeb, 0xd1da, 0xfac9, 0xd1e3, 0xd1eb, 0x93e8, 0xd1d9, 0xd1f4,
+ 0xaed5, 0xfcf8, 0xd1f3, 0xd1ee, 0xd1ef, 0xaedd, 0xaee8, 0xd1e5,
+ 0xd1e6, 0xd1f0, 0xd1e7, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4,
+ 0x9ce3, 0xfda9, 0xaed6, 0xaeda, 0xd1f2, 0xd1de, 0xaee6, 0xaee2,
+ 0xfc44, 0xaee5, 0xaeec, 0xaedb, 0xaee7, 0xd1e9, 0xaee9, 0xaed8,
+ 0x9640, 0xaed7, 0xd1db, 0x8db8, 0xd1df, 0xaee0, 0xd1f1, 0xd1e8,
+ 0xd1e0, 0xaee4, 0xaee1, 0xaed9, 0xaedc, 0x9b4a, 0x8fb9, 0xfcfe,
+ 0x896a, 0xd5c4, 0xd5b4, 0xd5b5, 0xd5b9, 0xd5c8, 0xd5c5, 0xd5be,
+ 0xd5bd, 0xb1ed, 0xd5c1, 0xd5d0, 0xd5b0, 0xd5d1, 0xd5c3, 0xd5d5,
+ 0xd5c9, 0xb1ec, 0xd5c7, 0xb1e7, 0xb1fc, 0xb1f2, 0x8db9, 0xb1f6,
+ 0xb1f5, 0xd5b1, 0x917e, 0xd5ce, 0xd5d4, 0xd5cc, 0xd5d3, 0xd5c0,
+ 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7, 0xd5cb, 0xb1f0, 0x93f4,
+ 0xd5ca, 0xd5b3, 0xb1f8, 0xb1fa, 0xd5cd, 0xb1fb, 0xb1e9, 0xd5ba,
+ 0xd5cf, 0xfb7c, 0xb1ef, 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7, 0xd5bb,
+ 0xb1f4, 0xd5b6, 0xb1e8, 0xb1f1, 0xb1ee, 0xd5bf, 0xaede, 0xd9c0,
+ 0xb1eb, 0x93e7, 0x97ef, 0xfe4a, 0xfd45, 0xb1f3, 0x96a5, 0xd9c3,
+ 0xd9d9, 0xd9ce, 0xb4d6, 0xfee0, 0xb4d1, 0xd9bd, 0xb4d2, 0xd9cd,
+ 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5, 0xb4c4, 0xd9b3, 0xb4c7,
+ 0xb4c6, 0xb4d7, 0xd9ad, 0xd9cf, 0xd9d0, 0xb4c9, 0xb4c5, 0xd9bb,
+ 0xb4d0, 0xd9b6, 0xd9d1, 0xb4cc, 0xd9c9, 0xd9d6, 0xd9b0, 0xd9b5,
+ 0xd9af, 0xb4cb, 0xd9c2, 0xddde, 0xd9b1, 0xb4cf, 0xd9ba, 0xd9d2,
+ 0xb4ca, 0xd9b7, 0xd9b4, 0xd9c5, 0xb4cd, 0xb4c3, 0xb4d9, 0xd9c8,
+ 0xd9c7, 0xfd48, 0xfd47, 0xfef2, 0xfe6a, 0xd9ac, 0xb4c8, 0xd9d4,
+ 0xd9bc, 0xd9be, 0x8dbd, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5,
+ 0xd9b2, 0xd9b9, 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0xd9cc,
+ 0x9ba1, 0x8ca2, 0x9ab7, 0x8efc, 0xd9d8, 0xd9ae, 0x9fa1, 0xddf2,
+ 0xb7a6, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xfd51, 0xddec, 0xddcb,
+ 0xddd2, 0xddea, 0xddf4, 0xdddc, 0xfaad, 0xddcf, 0xdde2, 0xdde7,
+ 0xddd3, 0x8dbe, 0xdde4, 0xddd0, 0x89a4, 0xddd7, 0xddd8, 0xb7a8,
+ 0xddeb, 0xdde9, 0xddcc, 0xddee, 0xddef, 0xddf1, 0xb7ac, 0xb7a4,
+ 0x9ad9, 0xd5b8, 0xddd4, 0xdde6, 0xddd5, 0xb7a1, 0xb7b1, 0xdded,
+ 0xb7af, 0xb7ab, 0xddca, 0xb7a3, 0xfd4e, 0xddcd, 0xb7b0, 0x8dc0,
+ 0xdddd, 0xddc9, 0x97f0, 0xb7a9, 0xdde1, 0xddd1, 0xb7aa, 0xddda,
+ 0xb77e, 0xb4d8, 0xdde3, 0xd9bf, 0xddce, 0x93b4, 0xfd44, 0xdde8,
+ 0xb7a5, 0xdde5, 0xb7a2, 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0x9fa7,
+ 0xb7a7, 0xdec6, 0x8dc2, 0xb7ae, 0x99b6, 0xe24a, 0xe248, 0xe25e,
+ 0xe246, 0xe258, 0xb77d, 0xba5f, 0xe242, 0xe25d, 0xfd52, 0xe247,
+ 0xe255, 0xba64, 0xba5d, 0xe25b, 0x8dc1, 0xe240, 0xe25a, 0x8e46,
+ 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, 0xba5e, 0xe24b, 0xe259,
+ 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, 0xe243, 0xe1fc, 0xa0d1,
+ 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, 0xe253, 0xba66, 0xe245,
+ 0xe250, 0xe24c, 0xe24e, 0x9fca, 0xba60, 0xe25f, 0xba6e, 0xe24f,
+ 0xe262, 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256,
+ 0xba69, 0x92cf, 0xba62, 0xe252, 0x9cf4, 0x8dc4, 0xe25c, 0xfd41,
+ 0xe5d5, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de, 0xbccd, 0x9b4c, 0xe5e5,
+ 0xe5d4, 0xbcd8, 0xe5db, 0xe5d0, 0xe5da, 0xbcd5, 0xe5ee, 0xe5eb,
+ 0xe5dd, 0xe5ce, 0xfd57, 0xfcef, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8,
+ 0xe5d3, 0xe5ca, 0xbcce, 0xbcd6, 0x9cde, 0xe5e7, 0xbcd7, 0xe5cb,
+ 0xe5ed, 0xe5e0, 0xe5e6, 0xbcd4, 0xfd42, 0x986c, 0xe5e3, 0xe5ea,
+ 0xbcd9, 0xbcd3, 0xe5dc, 0xe5cf, 0xe5ef, 0xe5cc, 0xe5e8, 0xbcd0,
+ 0x97f9, 0xe5d6, 0x9558, 0xe5d7, 0xbccf, 0xbccc, 0xe5d2, 0xbcd2,
+ 0xbccb, 0xe5e9, 0xe5ec, 0xe5d9, 0xe9ca, 0x985e, 0xfe7b, 0x94cd,
+ 0xe9c2, 0x93ee, 0xe9be, 0xbef6, 0xbeeb, 0xbef0, 0xbeec, 0xe9cc,
+ 0xe9d7, 0xbeea, 0xe9c4, 0xe9cd, 0xe5df, 0xe9ce, 0x8ca3, 0xbef1,
+ 0xfd5a, 0xe9dd, 0xbef5, 0xbef8, 0xe9c0, 0xbef4, 0x93f5, 0xe9db,
+ 0xe9dc, 0xe9d2, 0xe9d1, 0xe9c9, 0x93ef, 0x8eea, 0xe9d3, 0xe9da,
+ 0xe9d9, 0x8f5b, 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0xe9c5, 0xe9d8,
+ 0xbef7, 0xe9d6, 0xbef3, 0xbef2, 0x8c5e, 0xe9d0, 0x8dc6, 0xe9bf,
+ 0xe9c1, 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0xe9c6, 0xe9d4, 0x8dc8,
+ 0x8dc7, 0xe9c7, 0x93f7, 0xc0cf, 0xed45, 0xc0c8, 0xecf5, 0x8dc9,
+ 0xed41, 0xc0ca, 0xed48, 0xecfc, 0xecf7, 0xfbf2, 0xed49, 0xecf3,
+ 0xecfe, 0x9670, 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9, 0xed40,
+ 0xecf4, 0xc0d0, 0x8dcb, 0xed47, 0xecf9, 0xc0cc, 0xfd5c, 0xecfb,
+ 0xecf8, 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46,
+ 0x8f65, 0xed42, 0x8dcd, 0xc263, 0xefe7, 0xc268, 0xc269, 0x9da8,
+ 0x94f9, 0xc262, 0xefe6, 0x8dce, 0xefe3, 0xefe4, 0xc266, 0xefde,
+ 0xefe2, 0xc265, 0xefdf, 0x93ea, 0xc267, 0xc264, 0xefdd, 0xefe1,
+ 0xefe5, 0xfd5f, 0x93f0, 0x9fb6, 0xf251, 0xf24e, 0xf257, 0xf256,
+ 0xf254, 0xf24f, 0xc372, 0x8dcf, 0x9763, 0xf250, 0xc371, 0xc0cd,
+ 0xf253, 0xc370, 0xf258, 0xf252, 0xf24d, 0xefe0, 0xc36f, 0xf24c,
+ 0xf456, 0xf455, 0xf255, 0xc468, 0xf459, 0xf45a, 0xf454, 0xf458,
+ 0xf453, 0x8dd0, 0xf5d1, 0xf457, 0xc4e7, 0xc4e5, 0xf5cf, 0xf5d2,
+ 0xf5ce, 0xf5d0, 0xc4e6, 0x93f1, 0xf6e5, 0xf6e6, 0xc576, 0xf6e4,
+ 0xf7e2, 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0xc656, 0xf8f3, 0xf8f1,
+ 0xf8f2, 0xf8f4, 0xfd62, 0xf9bb, 0xa4ed, 0xa6b8, 0xaa59, 0xcce9,
+ 0xcf64, 0xd1f5, 0xd1f7, 0xd1f6, 0xd1f8, 0xb1fd, 0xd5d7, 0xd1f9,
+ 0xfd65, 0xd5d6, 0xd5d8, 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd,
+ 0xb4dc, 0xb4da, 0xd9dc, 0xddfa, 0xddf8, 0xddf7, 0xddf6, 0xddf5,
+ 0xb7b2, 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb,
+ 0xbcda, 0xe5f0, 0x9fdb, 0xe9df, 0xe9de, 0xe9e0, 0x93f8, 0xbef9,
+ 0xed4b, 0xc0d3, 0xefe8, 0xc26a, 0xf259, 0xc577, 0xa4ee, 0xa5bf,
+ 0xa6b9, 0xa842, 0xaa5a, 0xaa5b, 0xac6e, 0xd1fa, 0x8bf7, 0xb7b3,
+ 0xfd66, 0xe6d1, 0xbefa, 0xc26b, 0xa4ef, 0x8bcf, 0xa6ba, 0xcceb,
+ 0xaa5c, 0xccea, 0x8dd1, 0xcf65, 0xac6f, 0xcf66, 0xac70, 0xd1fc,
+ 0xaeee, 0xaeed, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db, 0xd5da, 0xd9de,
+ 0xd9e1, 0xb4de, 0xd9df, 0xb4dd, 0xd9e0, 0xddfb, 0xe266, 0xe267,
+ 0xe268, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4, 0xe9e1, 0xe9e2,
+ 0xe9e3, 0xed4c, 0xc0d4, 0xc26c, 0xf25a, 0xc4e8, 0xc95f, 0xac71,
+ 0xcf67, 0xaeef, 0xb1fe, 0xb4df, 0xd9e2, 0xb7b5, 0xb7b4, 0x8dd2,
+ 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, 0xe9e4, 0xefe9, 0xf7e3,
+ 0xa4f0, 0xc960, 0xa5c0, 0xa843, 0xcb48, 0xac72, 0xb7b6, 0xa4f1,
+ 0xcf68, 0xac73, 0xcf69, 0xc0d5, 0xa4f2, 0xfd71, 0xccec, 0xcf6a,
+ 0xfd6f, 0xd242, 0xd241, 0xd1fe, 0xd1fd, 0xd243, 0xd240, 0x8dd3,
+ 0xb240, 0xb241, 0xb4e0, 0xd9e3, 0xd9e4, 0xd9e5, 0xde41, 0xde42,
+ 0xde40, 0x9fe7, 0xddfd, 0xddfe, 0xb7b7, 0xe26b, 0xe5f7, 0xe5f6,
+ 0xe5f5, 0xe5f8, 0xe9e7, 0xe9e6, 0xbefb, 0xe9e8, 0xc0d6, 0xed4d,
+ 0xefea, 0xf25b, 0xf6e7, 0xa4f3, 0xa5c2, 0xa5c1, 0xaa5d, 0xc961,
+ 0xc97e, 0xa6bb, 0xc9f7, 0xcb49, 0xcb4a, 0xaa5e, 0x90bd, 0xcced,
+ 0xac74, 0xcf6b, 0xcf6c, 0xaef0, 0xaef4, 0xd244, 0xaef3, 0xaef1,
+ 0xaef2, 0xd5df, 0xb242, 0xb4e3, 0xb4e1, 0xb4e2, 0xd9e6, 0x9fd0,
+ 0xba72, 0xa4f4, 0x8bd0, 0xc9a1, 0xfd72, 0xa5c3, 0x9cae, 0x8bd1,
+ 0xc9a4, 0x8adb, 0xa5c6, 0xc9a3, 0xa5c5, 0xa5c4, 0xa844, 0xc9a2,
+ 0xc9f8, 0xfae4, 0xc9fc, 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb,
+ 0xa6c1, 0xc9f9, 0xc9fd, 0xa6c2, 0xa6bd, 0x95ce, 0xa6be, 0xfd76,
+ 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf, 0xa6c0, 0xa6c3, 0xcb5b,
+ 0xcb59, 0xcb4c, 0xa851, 0xcb53, 0xa84c, 0xcb4d, 0xcb55, 0xfb62,
+ 0xcb52, 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858, 0x8dd4, 0xa85a,
+ 0xcb4b, 0xfd78, 0xa84d, 0xcb5c, 0xa854, 0xa857, 0x8ee3, 0xcd45,
+ 0xa847, 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, 0xa848,
+ 0xa849, 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, 0xa84e,
+ 0xa853, 0xccee, 0xa85c, 0xcb57, 0xa852, 0xa85d, 0xa846, 0xcb54,
+ 0xa84b, 0xcb58, 0xcd44, 0x9076, 0x98c6, 0x8dd5, 0xaa6a, 0xaa7a,
+ 0xccf5, 0xaa71, 0x97d1, 0xcd4b, 0xaa62, 0x9eb6, 0xaa65, 0xcd42,
+ 0xccf3, 0xccf7, 0xaa6d, 0xaa6f, 0xccfa, 0xaa76, 0xaa68, 0xaa66,
+ 0xaa67, 0xaa75, 0xcd47, 0xaa70, 0xccf9, 0xccfb, 0xaa6e, 0xaa73,
+ 0xccfc, 0xcd4a, 0xac75, 0xaa79, 0xfac7, 0xaa63, 0xcd49, 0xa042,
+ 0xcd4d, 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d,
+ 0xaa72, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0x9873,
+ 0xaa7e, 0xaa77, 0xaa69, 0xaa5f, 0xaa64, 0xccf6, 0xaa60, 0xcd4e,
+ 0x9ffc, 0xccf0, 0xccef, 0xccfd, 0xccf1, 0xaa7b, 0xaef5, 0xaa74,
+ 0xccfe, 0xaa61, 0xaca6, 0xcd4c, 0x8ca5, 0xcf7c, 0xcfa1, 0x8dd7,
+ 0xcfa4, 0xcf77, 0x92fb, 0x8dd8, 0xcfa7, 0xcfaa, 0xcfac, 0xcf74,
+ 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, 0xcfad, 0xcf7b, 0xcf73,
+ 0xd264, 0xac7e, 0xcfa2, 0xcf78, 0xcf7a, 0xaca5, 0xcf7d, 0xac7d,
+ 0xcf70, 0xcfa8, 0xcfab, 0x944f, 0xac7a, 0x8dd9, 0xaca8, 0xcf6d,
+ 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, 0xcd48,
+ 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, 0xaca9,
+ 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, 0xcfa6,
+ 0xac79, 0xcf7e, 0x896b, 0x97ce, 0xd24c, 0xaefd, 0xaf43, 0xfaf3,
+ 0xfdae, 0xd255, 0xd25b, 0xd257, 0xd24a, 0xd24d, 0xd246, 0xd247,
+ 0xaf4a, 0xaefa, 0xd256, 0xd25f, 0xaf45, 0xaef6, 0xaf40, 0xd24e,
+ 0xaf42, 0xd24f, 0xd259, 0xfbaf, 0x92b7, 0xaf44, 0xd268, 0xd248,
+ 0xaefc, 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a, 0xd267, 0xd261,
+ 0xd253, 0xd262, 0x8dda, 0xd25c, 0xd265, 0xd263, 0xaf49, 0xd254,
+ 0xaef9, 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251, 0xb243,
+ 0x9c5a, 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xfdad,
+ 0xd258, 0xd25d, 0x8ddc, 0x9444, 0xb265, 0xd5e1, 0xd5e5, 0xb252,
+ 0xb250, 0x8ddd, 0xb247, 0xd5e3, 0xd5e2, 0xb25b, 0xd5e8, 0xb255,
+ 0xa0d6, 0xd5fa, 0xd647, 0xb244, 0xd5f7, 0xd5f0, 0xb267, 0xd5e0,
+ 0xd5fc, 0xb264, 0xb258, 0xb263, 0xb24e, 0xd5ec, 0xd5fe, 0xd5f6,
+ 0xb24f, 0xb249, 0xd645, 0xd5fd, 0xd640, 0xb251, 0xb259, 0xd642,
+ 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, 0xb25e, 0xb246, 0xb25c, 0xd5f4,
+ 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, 0xd5ed, 0xb248, 0xd5e7, 0xd646,
+ 0xb24a, 0xd5f1, 0xb268, 0xb262, 0xd5e6, 0xb25f, 0xb25d, 0xb266,
+ 0xd5f8, 0xb261, 0xd252, 0xd5f9, 0xb260, 0xd641, 0xb245, 0xd5f5,
+ 0xb257, 0xd5e9, 0xb256, 0xb254, 0xb24c, 0xb24b, 0xd9e7, 0xd643,
+ 0x8c41, 0xd5eb, 0x97d5, 0xd9fc, 0x944a, 0xb24d, 0x944d, 0x97cb,
+ 0x8dde, 0x8ddf, 0xb541, 0xb25a, 0xb4ee, 0xd9f6, 0xb4fc, 0xd9ea,
+ 0xb4eb, 0xb4e7, 0xda49, 0xb4ed, 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d,
+ 0xda44, 0x8de0, 0xfef9, 0xd9f1, 0xb4fa, 0xb4f4, 0xd9fd, 0xb4e4,
+ 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55, 0xda56, 0xb4e5,
+ 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd, 0xd9f2, 0xd9f9,
+ 0xd9f3, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9, 0xd9eb, 0xb4ea,
+ 0xd9f8, 0xb4f8, 0xb542, 0xfdc0, 0xfcf9, 0xd9fa, 0xda53, 0xda4b,
+ 0xb4e6, 0xda51, 0xb4f2, 0xb4f0, 0xfb7e, 0xda57, 0xb4ef, 0xda41,
+ 0xd9f4, 0xd9fe, 0xb547, 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f,
+ 0xda4c, 0xda54, 0xb4e9, 0xda40, 0xb546, 0xda47, 0xb4f3, 0xb4f6,
+ 0xda46, 0xb545, 0xd9f5, 0xd5e4, 0x92b3, 0xda50, 0xda4e, 0xda52,
+ 0xfdaf, 0x8de1, 0xd9ec, 0xb540, 0x95d3, 0xde61, 0xde60, 0xde46,
+ 0xb7bd, 0xde5f, 0xde49, 0xde4a, 0xb7c7, 0xde68, 0xb7c2, 0xde5e,
+ 0x89c1, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48, 0xde4b, 0xde63,
+ 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc, 0xb7cb, 0xb7c5,
+ 0xde69, 0xb7b9, 0xde55, 0xde4c, 0xde59, 0xde65, 0xb7cd, 0xfd68,
+ 0xb7bb, 0xde54, 0x9cb7, 0xde4d, 0xb7c4, 0x8de3, 0xb7c3, 0xde50,
+ 0xde5a, 0xde64, 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0,
+ 0xde4e, 0xb7bf, 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56,
+ 0xe26c, 0xde58, 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0,
+ 0xde44, 0xde5d, 0xfac0, 0x8de5, 0xfa64, 0xde5c, 0x8947, 0x8de4,
+ 0x8de7, 0x8de8, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, 0xe26e,
+ 0xbaaf, 0xba77, 0xe26d, 0xe2b0, 0xbab1, 0xe271, 0xe2a3, 0xfdc7,
+ 0xe273, 0xe2b3, 0xe2af, 0xba75, 0xbaa1, 0xe653, 0xbaae, 0xba7d,
+ 0xe26f, 0xfdb0, 0xe2ae, 0xbaa3, 0xe2ab, 0xe2b8, 0xe275, 0xe27e,
+ 0x9445, 0x97d6, 0xe2b6, 0xe2ac, 0xba7c, 0xe27c, 0xba76, 0xba74,
+ 0xbaa8, 0xfcc6, 0x9844, 0xe27a, 0xe277, 0xe278, 0xe2b2, 0xe2b7,
+ 0xe2b5, 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0x8de9, 0xe270, 0xe5fa,
+ 0xe279, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274, 0xbaaa,
+ 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0x8dea, 0xe2a9, 0xe2a1, 0xe272,
+ 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xfe50, 0xba79, 0xbcdf,
+ 0xe2a6, 0xe5f9, 0xe2ad, 0xfdcc, 0xe276, 0xe644, 0xe64e, 0xbce2,
+ 0xe64d, 0xe659, 0xbce4, 0xe64b, 0x9da7, 0xe64f, 0xbcef, 0xe646,
+ 0xbce7, 0xfdcd, 0xe652, 0xe9f0, 0xbcf3, 0xbcf2, 0xe654, 0xe643,
+ 0xe65e, 0xbced, 0xbce3, 0xe657, 0xe65b, 0xe660, 0xe655, 0xe649,
+ 0xbce6, 0xbce9, 0xbcf1, 0xbcec, 0xe64c, 0xe2a2, 0xfdcf, 0xe648,
+ 0xe65f, 0xbce8, 0x95d2, 0xbceb, 0xe661, 0xbce0, 0xe656, 0xe5fb,
+ 0xe65c, 0xc0df, 0x8ded, 0xe64a, 0xbce1, 0xe645, 0xbce5, 0xe5fc,
+ 0xbaab, 0xe641, 0xfcba, 0xe65a, 0xe642, 0xe640, 0xbcea, 0xe658,
+ 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, 0xfdc5, 0xe9f3,
+ 0xfdd2, 0xbf49, 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48,
+ 0xbf43, 0xe9f5, 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8,
+ 0xea44, 0xea46, 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0x9cdc, 0xbf47,
+ 0xe9fe, 0xbf46, 0xe9f9, 0x95cf, 0xe9ed, 0xe9f2, 0x8dee, 0xe9fd,
+ 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1, 0xe5fd, 0xe9ec, 0xe9ef,
+ 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43, 0xe9ee, 0xe9fc, 0xfdd4,
+ 0xed51, 0xc0e3, 0xc0d7, 0x96ec, 0x96eb, 0xc0db, 0xed53, 0xed59,
+ 0xed57, 0xc0d9, 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0xed56,
+ 0xed55, 0xed5b, 0xc0e2, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de,
+ 0xc0e5, 0xc0d8, 0xed58, 0xed50, 0x90b6, 0xeff7, 0xfdc3, 0xc271,
+ 0xeff4, 0xeff6, 0xc26f, 0xeff2, 0xeff3, 0xefee, 0x98ab, 0xe9f6,
+ 0xefef, 0xc270, 0xefeb, 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed,
+ 0xeff1, 0xc273, 0xc272, 0xeff0, 0xc378, 0xf25f, 0xf265, 0xc379,
+ 0xf25c, 0xc376, 0xc373, 0xf267, 0xc377, 0x96ee, 0xc374, 0xf25e,
+ 0xf261, 0xf262, 0xf263, 0xf266, 0xeff5, 0xf25d, 0xc375, 0xf264,
+ 0xf268, 0xf260, 0x8df4, 0xf45d, 0xc46a, 0xf460, 0xc46b, 0xf468,
+ 0xf45f, 0xf45c, 0xf45e, 0xf462, 0xf465, 0xf464, 0xf467, 0xf45b,
+ 0xc469, 0xf463, 0xf466, 0xf469, 0xf461, 0xf5d3, 0xf5d4, 0xf5d8,
+ 0xf5d9, 0xf5d6, 0xf5d7, 0xf5d5, 0xfde0, 0xc4e9, 0x8c67, 0x8df6,
+ 0xc578, 0xf6eb, 0x8df7, 0xf6e8, 0xf6e9, 0xf6ea, 0xc579, 0xf7e5,
+ 0xf7e4, 0x8ffa, 0xf8af, 0xc5f4, 0xf8ad, 0xf8b0, 0xf8ae, 0xf8f5,
+ 0xc657, 0xc665, 0xf9a3, 0xf96c, 0x97d0, 0xf9a2, 0xf9d0, 0xf9d1,
+ 0xa4f5, 0x8bd2, 0x8df8, 0xa6c7, 0xca41, 0xcb5e, 0x90d9, 0xa85f,
+ 0x8c47, 0xa862, 0xfaf0, 0xcb5f, 0xa860, 0xa861, 0xfde1, 0x8df9,
+ 0xfde3, 0xcd58, 0xcd5a, 0xcd55, 0xcd52, 0xcd54, 0x8dfa, 0xaaa4,
+ 0xfb63, 0xaaa2, 0x90a6, 0xcd56, 0xaaa3, 0xcd53, 0xcd50, 0xaaa1,
+ 0xcd57, 0xcd51, 0xaaa5, 0xcd59, 0xcfaf, 0x9970, 0xcfb3, 0x91eb,
+ 0xacb7, 0x9770, 0x986f, 0xfde2, 0xcfb6, 0xacaf, 0xacb2, 0xacb4,
+ 0xacb6, 0xacb3, 0xcfb2, 0xcfb1, 0xacb1, 0xcfb4, 0xcfb5, 0xcfae,
+ 0xacb5, 0x98f2, 0xacb0, 0x9afc, 0x896c, 0xfdfd, 0xcfb0, 0x995e,
+ 0x95bd, 0xd277, 0xd278, 0xd279, 0xaf50, 0xaf4c, 0xd26e, 0xfde4,
+ 0xd276, 0xd27b, 0xaf51, 0x91e6, 0xd26c, 0xd272, 0xd26b, 0xd275,
+ 0xfde5, 0xfde6, 0xd271, 0xaf4d, 0xaf4f, 0xd27a, 0xd26a, 0xd26d,
+ 0xd273, 0xfde7, 0xd274, 0xd27c, 0xd270, 0xaf4e, 0xb26d, 0xd64e,
+ 0x9454, 0xd650, 0xd64c, 0x99b8, 0xd658, 0xd64a, 0xd657, 0xb269,
+ 0xd648, 0xda5b, 0xd652, 0xb26c, 0x97e9, 0xd653, 0xd656, 0xd65a,
+ 0xd64f, 0x9346, 0xd654, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649,
+ 0xd65b, 0xd651, 0xd655, 0xd64b, 0xb548, 0xb549, 0xda65, 0xb54f,
+ 0x9863, 0xda59, 0xda62, 0xda58, 0xb54c, 0xda60, 0xda5e, 0xda5f,
+ 0xb54a, 0xda63, 0x95bc, 0xfded, 0xfdf7, 0xda5c, 0xda5a, 0xb54b,
+ 0xda5d, 0xda61, 0x9870, 0x96f6, 0x8ea9, 0xb54d, 0xda64, 0x9451,
+ 0x8e43, 0x8b5a, 0xde70, 0xde77, 0xde79, 0xdea1, 0xfdee, 0xb7da,
+ 0xde6b, 0xb7d2, 0xfdf0, 0xde7a, 0xb7d7, 0xdea2, 0xb7ce, 0xfdf4,
+ 0xde7d, 0x9bf5, 0xde6d, 0xde7e, 0xde6c, 0xb7dc, 0xde78, 0xb7cf,
+ 0xdea3, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, 0xde6f, 0xde76, 0xde72,
+ 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, 0xb7db, 0xb7d0, 0xde75,
+ 0x977e, 0xb7d5, 0xb54e, 0xde7b, 0x9bd5, 0xde73, 0x9ac3, 0x97c8,
+ 0xa0db, 0x91d0, 0xde74, 0x9fe4, 0xe2c1, 0x8fdd, 0xbab4, 0x91e9,
+ 0xe2bd, 0xe2c3, 0xe2bf, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, 0x98e0,
+ 0xe2bc, 0xbab5, 0x92ca, 0x9857, 0xe2c0, 0xe2bb, 0x8c51, 0xbab7,
+ 0xbab2, 0xfdeb, 0xe2c4, 0x9b49, 0xbab3, 0xe667, 0xe664, 0xe670,
+ 0xe66a, 0xe66c, 0xbcf4, 0xe666, 0xe66e, 0x9d76, 0x9eaf, 0xe66d,
+ 0xe66b, 0xe671, 0xbcf7, 0xe668, 0xe66f, 0xbcf5, 0x9ccc, 0xe663,
+ 0xe665, 0xbcf6, 0xe662, 0xe672, 0xfdea, 0xe669, 0x8df1, 0xea4a,
+ 0xbf51, 0xfdfb, 0xea55, 0xea53, 0xbf4b, 0xea49, 0xea4c, 0xea4d,
+ 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56, 0xea51, 0xbf4f, 0xbf4c,
+ 0xea50, 0xea4e, 0xbf52, 0xea52, 0xbf4d, 0x8e53, 0xbf4e, 0xea4f,
+ 0xbf50, 0xea4b, 0xea54, 0xbf53, 0xea57, 0xea58, 0xbf54, 0xfacf,
+ 0xc0e7, 0xc0ee, 0xed5c, 0xed62, 0xed60, 0xc0ea, 0xc0e9, 0xc0e6,
+ 0xed5e, 0x96f9, 0xc0ec, 0xc0eb, 0xc0e8, 0xed61, 0xed5d, 0xed5f,
+ 0xc0ed, 0x98bf, 0x9e49, 0xc277, 0xeffb, 0xc274, 0xc275, 0xeffd,
+ 0xc276, 0xeffa, 0x8ca7, 0xeff9, 0xf26c, 0xeffc, 0xf26d, 0xc37a,
+ 0xf26b, 0x9bca, 0xf26a, 0xf269, 0xc37b, 0xfdfe, 0x92dc, 0xc46c,
+ 0xf46a, 0xf46b, 0xfe41, 0x91cc, 0x91e2, 0xf5dc, 0xf5db, 0xc4ea,
+ 0xf5da, 0xf6ec, 0xf6ed, 0xf7e6, 0xf8b1, 0xfe44, 0xf8f6, 0xf9bc,
+ 0xc679, 0xf9c6, 0xa4f6, 0x8bd3, 0xaaa6, 0xaaa7, 0xfe47, 0xacb8,
+ 0xc0ef, 0xa4f7, 0xaaa8, 0xaf52, 0xb7dd, 0xa4f8, 0xb26e, 0xbab8,
+ 0xc962, 0xfe48, 0xcfb7, 0xd27d, 0xe2c5, 0xc0f0, 0xa4f9, 0xaaa9,
+ 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0xdea4, 0x9455, 0xb7de, 0xe2c6,
+ 0xfe4b, 0xbcf8, 0xfe4c, 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0x8dbf,
+ 0xa6c9, 0xca42, 0xa6c8, 0xa865, 0xa864, 0xa863, 0xcb60, 0x9e78,
+ 0xaaaa, 0xaaab, 0xcd5b, 0xcfba, 0xcfbd, 0xacba, 0xcfbb, 0xacb9,
+ 0xcfbc, 0xacbb, 0xd2a2, 0xd2a1, 0xd27e, 0xaf53, 0xd65d, 0xd65e,
+ 0xb26f, 0xd65c, 0xd65f, 0xb552, 0xb270, 0xfe51, 0xb551, 0xda6b,
+ 0xda6a, 0x9456, 0xda68, 0xda69, 0xda6c, 0xdea6, 0xdea5, 0xdea9,
+ 0x9d61, 0xdea8, 0xdea7, 0xbab9, 0xe2c9, 0x9457, 0xe2c8, 0xbaba,
+ 0xe2c7, 0xe673, 0xe674, 0xbcf9, 0xea59, 0xea5a, 0x9966, 0xf272,
+ 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, 0xf46c, 0xf6ee,
+ 0xf8f7, 0xa4fc, 0x8bd5, 0xc9a5, 0xa5c7, 0xc9a6, 0xa069, 0xca43,
+ 0xca44, 0xcb66, 0xcb62, 0xcb61, 0xaaac, 0xcb65, 0xa867, 0xcb63,
+ 0xa866, 0xcb67, 0xcb64, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0x98b4,
+ 0xaaad, 0xaab0, 0xcd65, 0xcd61, 0xcd62, 0xcd5c, 0xaaaf, 0xcd5e,
+ 0xaaae, 0xcd63, 0xcd60, 0xcfc2, 0xacbd, 0xacbe, 0xa049, 0xcfc5,
+ 0xcfbf, 0xcfc4, 0xcfc0, 0xacbc, 0xcfc3, 0xcfc1, 0xd2a8, 0xd2a5,
+ 0xd2a7, 0xaf58, 0xaf57, 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56,
+ 0xd2a6, 0xd667, 0xd2a3, 0xd2aa, 0xa04c, 0x9e65, 0xd662, 0xd666,
+ 0xd665, 0xda6e, 0xda79, 0xd668, 0x98b5, 0xd663, 0xda6d, 0xb274,
+ 0xb273, 0xd661, 0xd664, 0xb275, 0xb272, 0xb271, 0xd660, 0xd669,
+ 0xda70, 0xda77, 0xb554, 0xda76, 0xda73, 0xfe58, 0xb556, 0x9975,
+ 0xfe53, 0xa065, 0xda75, 0xfe59, 0xda6f, 0xda71, 0xda74, 0xda72,
+ 0xb555, 0xda78, 0xb553, 0xb7df, 0x98b7, 0x98b8, 0xdead, 0xdeac,
+ 0xdeaa, 0xb7e2, 0xb7e1, 0xdeae, 0x98ba, 0xdeab, 0xe2ca, 0xbabb,
+ 0xb7e0, 0x98bb, 0xdeb0, 0xdeaf, 0xe2cd, 0xe2cb, 0xbcfa, 0x9fbc,
+ 0xbabc, 0xe2cc, 0xe676, 0xbcfb, 0xe675, 0xe67e, 0xe67d, 0xe67b,
+ 0xe67a, 0xe677, 0xe678, 0xe679, 0xe67c, 0xe6a1, 0xea5f, 0xea5c,
+ 0xea5d, 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0xed64, 0xed65,
+ 0xc0f1, 0xa04a, 0xc0f2, 0xed63, 0x9ec7, 0xc279, 0xeffe, 0xc278,
+ 0xc37e, 0xc3a1, 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, 0xc57a,
+ 0xf7e8, 0xf7e7, 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, 0xd66a,
+ 0xa5c9, 0xc9a7, 0xa4fd, 0x8ca9, 0xca45, 0x98ae, 0xcb6c, 0xcb6a,
+ 0xcb6b, 0xcb68, 0xa868, 0xcb69, 0x92d6, 0xfae1, 0xcd6d, 0x91d4,
+ 0xaab3, 0xcd6b, 0xcd67, 0xcd6a, 0xcd66, 0xaab5, 0xcd69, 0xfade,
+ 0xaab2, 0xaab1, 0xfe5b, 0xaab4, 0xcd6c, 0xcd68, 0xacc2, 0xacc5,
+ 0xcfce, 0xcfcd, 0xcfcc, 0xacbf, 0xcfd5, 0xcfcb, 0x8c53, 0xacc1,
+ 0xd2af, 0xcfd2, 0xcfd0, 0xacc4, 0xcfc8, 0xcfd3, 0xcfca, 0xcfd4,
+ 0xcfd1, 0xcfc9, 0xfe5e, 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xfbd7,
+ 0xfe5a, 0x94c5, 0xd2b4, 0xd2ab, 0xd2b6, 0xfaca, 0xd2ae, 0xd2b9,
+ 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f, 0xaf5d,
+ 0x98c1, 0x975c, 0xd2b1, 0xfe74, 0xd2ad, 0x9773, 0xd2b0, 0xd2bb,
+ 0xd2b2, 0xaf5e, 0xcfcf, 0xaf5a, 0xaf5c, 0xfa46, 0x9764, 0xd678,
+ 0xd66d, 0xd66b, 0xfe68, 0xd66c, 0x964e, 0xd673, 0x9765, 0xd674,
+ 0xd670, 0xb27b, 0xd675, 0xd672, 0xd66f, 0x8c5a, 0xb279, 0xd66e,
+ 0xb277, 0xb27a, 0xd671, 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676,
+ 0xb27c, 0x89a1, 0x95fa, 0x92d4, 0xfe69, 0xda7e, 0xfb45, 0x98c8,
+ 0xdaa1, 0xb560, 0x90ef, 0xdaa7, 0x98c9, 0x98ca, 0xdaa9, 0xdaa2,
+ 0xb55a, 0xdaa6, 0xdaa5, 0xb55b, 0xb561, 0xb562, 0xdaa8, 0xb558,
+ 0xda7d, 0xda7b, 0xdaa3, 0xda7a, 0xb55f, 0xda7c, 0xdaa4, 0xdaaa,
+ 0xb559, 0xb55e, 0xb55c, 0xb55d, 0x946d, 0x94b7, 0xfe6c, 0xb557,
+ 0x946b, 0xb7e9, 0xdeb7, 0xb7e8, 0xdebb, 0x92fc, 0xdeb1, 0x95eb,
+ 0xdebc, 0xfe73, 0x976e, 0xfe5f, 0xdeb2, 0xdeb3, 0xdebd, 0xdeba,
+ 0xdeb8, 0xdeb9, 0xdeb5, 0xdeb4, 0xfdbd, 0xdebe, 0xb7e5, 0x92d5,
+ 0xdeb6, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec, 0xfeb9, 0xb7e7, 0xb7e6,
+ 0xfe71, 0xe2ce, 0xbabe, 0xbabd, 0xfbbb, 0xe2d3, 0x947a, 0xbcfc,
+ 0xbabf, 0x95fb, 0xfe77, 0xbac1, 0xe2d4, 0xb7e3, 0xbac0, 0xe2d0,
+ 0xe2d2, 0xe2cf, 0xfe79, 0xe2d1, 0xfe75, 0xe6ab, 0x945d, 0xe6aa,
+ 0xe6a7, 0xbd40, 0xea62, 0xbd41, 0xe6a6, 0xfe7c, 0xbcfe, 0xe6a8,
+ 0xe6a5, 0xe6a2, 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0x9344, 0x8ea6,
+ 0xed69, 0xea66, 0xea65, 0xea67, 0xed66, 0xbf5a, 0x92d3, 0xea63,
+ 0x94b8, 0xbf58, 0xbf5c, 0xbf5b, 0xea64, 0xea68, 0xbf59, 0xfc71,
+ 0xed6d, 0xc0f5, 0xc27a, 0xc0f6, 0xc0f3, 0xed6a, 0xed68, 0xed6b,
+ 0xed6e, 0xc0f4, 0xed6c, 0xed67, 0x975e, 0xf042, 0xf045, 0xf275,
+ 0xf040, 0x8cad, 0xf46f, 0xf046, 0xc3a2, 0xf044, 0xc27b, 0xf041,
+ 0xf043, 0xf047, 0xf276, 0xf274, 0xfea7, 0xc3a3, 0xf273, 0x946a,
+ 0xc46e, 0x93e3, 0x98cf, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, 0xf6f0,
+ 0xf6f2, 0xc5d0, 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, 0xb27d,
+ 0xdebf, 0xbf5d, 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xa0d9, 0xcd6f,
+ 0xa260, 0xcfd7, 0xcfd8, 0xa0bf, 0xa04d, 0xa0b8, 0xd2be, 0xd2bf,
+ 0xb27e, 0xb2a1, 0xa0ce, 0xdaab, 0xdec2, 0xdec1, 0xdec0, 0xe2d5,
+ 0xe2d6, 0xe2d7, 0xbac2, 0xa0b7, 0xe6ad, 0xe6ac, 0xea69, 0xbf5e,
+ 0xbf5f, 0xfea9, 0xed72, 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048,
+ 0xc27c, 0xf277, 0xf5de, 0xa5cc, 0x89c3, 0xacc6, 0xb2a2, 0xdec3,
+ 0xfeab, 0xa5cd, 0xd2c0, 0xb2a3, 0xb563, 0xb564, 0xa5ce, 0xa5cf,
+ 0xca46, 0xa86a, 0xa869, 0xacc7, 0xcfd9, 0xdaac, 0xa5d0, 0xa5d1,
+ 0xa5d2, 0xa5d3, 0x9df4, 0x896d, 0xa86b, 0xa86c, 0xcb6e, 0xcb6d,
+ 0x9c7b, 0xaab6, 0xcd72, 0xcd70, 0xcd71, 0x98d2, 0x9fa9, 0xcfda,
+ 0xcfdb, 0xfeb2, 0xaccb, 0xacc9, 0xfeb1, 0xacca, 0xacc8, 0x97d9,
+ 0xa0c4, 0xaf60, 0x9476, 0xaf64, 0xaf63, 0xd2c1, 0xaf62, 0xaf61,
+ 0xd2c2, 0x9978, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4, 0xb2a5, 0xfeb3,
+ 0xb566, 0xb565, 0xdaae, 0x98d3, 0xfeb4, 0xdaad, 0xb2a7, 0x98d4,
+ 0xb7ed, 0xdec5, 0xb7ee, 0xdec4, 0x9fb9, 0xe2d8, 0xe6ae, 0xbd42,
+ 0xea6a, 0x9471, 0xed73, 0xc3a6, 0xc3a5, 0xc57c, 0xa5d4, 0xcd73,
+ 0x98d5, 0xfeb8, 0xb2a8, 0xe2d9, 0xbac3, 0xc6d4, 0xcb6f, 0xcb70,
+ 0xcd74, 0xaab8, 0xaab9, 0xaab7, 0xfeba, 0xaccf, 0xacd0, 0xaccd,
+ 0xacce, 0xcfdc, 0xcfdd, 0xaccc, 0xd2c3, 0x9e5c, 0xaf68, 0xaf69,
+ 0xfebb, 0xb2ab, 0xd2c9, 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b,
+ 0xaf6a, 0xaf65, 0xd2c8, 0xd2c7, 0xd2c4, 0xaf6d, 0xa044, 0xd2c6,
+ 0xaf66, 0xaf67, 0x98d7, 0xb2ac, 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c,
+ 0xd67e, 0xd6a4, 0xd6a3, 0xd67d, 0xb2a9, 0xb2aa, 0xdab6, 0xb56b,
+ 0xb56a, 0xdab0, 0xb568, 0x98d8, 0xdab3, 0xb56c, 0xdab4, 0xb56d,
+ 0xdab1, 0xb567, 0xb569, 0xdab5, 0xdab2, 0xdaaf, 0xded2, 0xdec7,
+ 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6, 0xded3, 0xded1, 0xdeca,
+ 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc, 0xded4, 0xdecb, 0xb7f5,
+ 0xb7ef, 0xb7f1, 0xfebc, 0xdec9, 0x9ffe, 0xe2db, 0xbac7, 0xe2df,
+ 0xbac6, 0xe2dc, 0xbac5, 0xdec8, 0xdecf, 0xe2de, 0xbac8, 0xe2e0,
+ 0xe2dd, 0xe2da, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2, 0xe6b0,
+ 0xbd45, 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af, 0xbd47,
+ 0xbac4, 0xe6b6, 0xbd44, 0xfebd, 0xea6c, 0xea6b, 0xea73, 0xea6d,
+ 0xea72, 0xea6f, 0xbf60, 0xea71, 0xbf61, 0xbf62, 0x9ddd, 0xea70,
+ 0xea6e, 0x9ee1, 0xc0f8, 0xed74, 0xc0f7, 0xed77, 0xed75, 0xed76,
+ 0xc0f9, 0x98da, 0x9ddf, 0xfebf, 0xf04d, 0xfebe, 0xc2a1, 0xf04e,
+ 0x9eeb, 0xc27d, 0xf04f, 0xc27e, 0xf04c, 0xf050, 0xf04a, 0xc3a7,
+ 0xf278, 0xc3a8, 0xc46f, 0xf04b, 0xc470, 0x9e59, 0xa05c, 0xc4ee,
+ 0xf5df, 0xc57e, 0xf6f4, 0xc57d, 0xfec0, 0xf7ea, 0xc5f5, 0xc5f6,
+ 0x9477, 0x98dc, 0xf9cc, 0xfec1, 0xacd1, 0xcfde, 0x98de, 0xb56e,
+ 0xb56f, 0xa5d5, 0xa6ca, 0xca47, 0xcb71, 0xa86d, 0xaaba, 0xacd2,
+ 0xacd3, 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0xb2ae, 0xd6a5, 0xfec3,
+ 0xdab8, 0xb571, 0xdab7, 0xb570, 0xded5, 0xbd4a, 0xe6bb, 0xe6b8,
+ 0xe6b9, 0xe6ba, 0xfec8, 0xed78, 0xfec9, 0xf051, 0xf471, 0xf470,
+ 0xf6f5, 0xa5d6, 0xcd75, 0xaf70, 0xb572, 0xded6, 0xfeca, 0xe2e1,
+ 0xbd4b, 0xea74, 0xf052, 0xf472, 0xa5d7, 0xaabb, 0xacd7, 0xcfdf,
+ 0xacd8, 0xacd6, 0xacd5, 0xd2cc, 0xaf71, 0xfecb, 0xaf72, 0xaf73,
+ 0xb2b0, 0xd6a7, 0xb2af, 0x9fc2, 0x8c6b, 0xdab9, 0xb2b1, 0xb573,
+ 0xded7, 0xb7f8, 0xb7f9, 0xbac9, 0xbaca, 0xbd4c, 0xbf64, 0xea75,
+ 0xbf63, 0xed79, 0xc0fa, 0xf053, 0xf473, 0xa5d8, 0xa86e, 0xcd78,
+ 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79, 0xcfe5, 0xacdb, 0xacda,
+ 0xcfe7, 0xcfe6, 0xacdf, 0xacde, 0xacd9, 0xcfe1, 0xcfe2, 0xcfe3,
+ 0xace0, 0xcfe0, 0xacdc, 0xcfe4, 0xacdd, 0x98c4, 0x94b0, 0x94b1,
+ 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2ce,
+ 0xd2cd, 0xfed1, 0xaf75, 0xaf76, 0xd2d7, 0xd2d2, 0xa0c1, 0xd6b0,
+ 0xfed2, 0xd2d8, 0xaf77, 0xaf74, 0xa0cd, 0xd6aa, 0xd6a9, 0xd6ab,
+ 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2, 0xb2b5, 0xb2b2, 0xb2b6, 0xd6a8,
+ 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af, 0xb2b3, 0xfed3, 0x98e5, 0xdabc,
+ 0xdabe, 0xdaba, 0xdabb, 0xdabf, 0xdac1, 0xdac2, 0xdabd, 0xdac0,
+ 0xb574, 0xdedb, 0xdee0, 0xded8, 0xdedc, 0xfed6, 0xdee1, 0xdedd,
+ 0xb7fa, 0xb843, 0xb7fd, 0xded9, 0xdeda, 0xbace, 0xb846, 0xb7fe,
+ 0xb844, 0xb7fc, 0xdedf, 0xb845, 0xdede, 0xb841, 0xb7fb, 0xb842,
+ 0xdee2, 0xe2e6, 0xe2e8, 0x91e4, 0x8fc7, 0x94ae, 0xb840, 0x8a4f,
+ 0x94b2, 0xe2e3, 0xbacc, 0xe2e9, 0xbacd, 0xe2e7, 0xe2e2, 0xe2e5,
+ 0xe2ea, 0xbacb, 0xe2e4, 0xbd4e, 0xe6bf, 0xe6be, 0xbd51, 0xbd4f,
+ 0xe6bc, 0xbd4d, 0xe6bd, 0xbd50, 0x8fd4, 0xea7d, 0xeaa1, 0x98ea,
+ 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66, 0xbf67, 0xbf65,
+ 0xea78, 0xea7b, 0xea7c, 0xbf68, 0xc140, 0xeda3, 0xc0fc, 0xed7b,
+ 0xc0fe, 0xc141, 0xfed8, 0xc0fd, 0xeda2, 0xed7c, 0xc0fb, 0xeda1,
+ 0xed7a, 0xed7e, 0xed7d, 0x9de0, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2,
+ 0x98ee, 0xc2a3, 0xf054, 0x95c4, 0xf27b, 0xfce8, 0xc3a9, 0xf279,
+ 0xf27a, 0x98ef, 0xf474, 0xf477, 0xf475, 0xf476, 0xf5e0, 0xc4ef,
+ 0xf7eb, 0xf8b4, 0xc5f7, 0xf8f8, 0xf8f9, 0xc666, 0xa5d9, 0xace1,
+ 0x8c6e, 0xdac3, 0xdee3, 0xa5da, 0xa86f, 0xaabe, 0xfad8, 0xcfe8,
+ 0xcfe9, 0xaf78, 0xdac4, 0xb575, 0xb847, 0xc142, 0xeda4, 0xf27c,
+ 0xf478, 0xa5db, 0xfedc, 0xcda1, 0xcd7a, 0xcd7c, 0xcd7e, 0xcd7d,
+ 0xcd7b, 0xaabf, 0xa0ae, 0xace2, 0xcff2, 0xcfed, 0xcfea, 0x9d4c,
+ 0xcff1, 0xace4, 0xace5, 0xcff0, 0xcfef, 0xcfee, 0xcfeb, 0xcfec,
+ 0xcff3, 0xace3, 0x98f1, 0x98f3, 0xaf7c, 0x94c1, 0xafa4, 0xafa3,
+ 0xd2e1, 0xd2db, 0xd2d9, 0xafa1, 0xd6b9, 0xaf7a, 0xd2de, 0xd2e2,
+ 0xd2e4, 0xd2e0, 0xd2da, 0xafa2, 0xd2df, 0xd2dd, 0xaf79, 0xd2e5,
+ 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc, 0xaf7e, 0xaf7b, 0x98f5, 0xfa4f,
+ 0x96e2, 0x9450, 0xb2b9, 0x96a2, 0xd6ba, 0x98f6, 0xd6b3, 0xd6b5,
+ 0xd6b7, 0x96e5, 0xd6b8, 0xd6b6, 0xb2ba, 0xd6bb, 0x98f7, 0xd6b4,
+ 0xa046, 0x96e3, 0xdac8, 0xb576, 0xdad0, 0xdac5, 0xdad1, 0xdac6,
+ 0xdac7, 0x98f8, 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577, 0xdac9,
+ 0xdacc, 0xb578, 0xdacd, 0xdaca, 0xdeee, 0x9ee4, 0xdef2, 0xb84e,
+ 0xe2f0, 0xb851, 0xdef0, 0xf9d6, 0xdeed, 0xdee8, 0xdeea, 0xdeeb,
+ 0xdee4, 0x94c3, 0xb84d, 0xb84c, 0x94c2, 0xb848, 0xdee7, 0xb84f,
+ 0xb850, 0xdee6, 0xdee9, 0xdef1, 0xb84a, 0xb84b, 0xdeef, 0xdee5,
+ 0xe2f2, 0xbad0, 0xe2f4, 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3,
+ 0xbad1, 0xe2ef, 0xbad3, 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0xfee1,
+ 0xb849, 0xfee9, 0xe2eb, 0xbad2, 0xe2ed, 0x96e4, 0x89ac, 0x96db,
+ 0xbd54, 0xe6c1, 0xbd58, 0xbd56, 0xbacf, 0xe6c8, 0xe6c9, 0xbd53,
+ 0xfee2, 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5,
+ 0xe6c2, 0xbd59, 0xe6c4, 0x94c4, 0xfee3, 0xe6c6, 0xbd57, 0xfee7,
+ 0x9ffb, 0xbf6a, 0xeaa8, 0xeaa2, 0xeaa6, 0xeaac, 0xeaad, 0xeaa9,
+ 0xeaaa, 0xeaa7, 0x8c59, 0xeaa4, 0xbf6c, 0xbf69, 0xeaa3, 0xeaa5,
+ 0xbf6b, 0xeaab, 0x93c9, 0xc146, 0x94e8, 0xfb56, 0xedaa, 0xeda5,
+ 0xc145, 0x90c5, 0xc143, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6,
+ 0xedad, 0xf056, 0xc147, 0xeda7, 0xedae, 0xedab, 0xa0a8, 0xf05a,
+ 0xf057, 0xc2a6, 0xf05b, 0xf05d, 0xf05c, 0xf058, 0xf059, 0xf2a3,
+ 0xc3aa, 0xf27e, 0xf2a2, 0xf27d, 0xf2a4, 0xf2a1, 0xf47a, 0xf47d,
+ 0xf479, 0xc471, 0xf47b, 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473,
+ 0xf5e1, 0xfee5, 0xf5e3, 0xf5e2, 0x98fd, 0x98fb, 0xfee8, 0xf6f6,
+ 0x8ebf, 0xf8b5, 0xf8fa, 0xa5dc, 0x8bd8, 0xfef7, 0xcb72, 0xaac0,
+ 0xcda3, 0xaac1, 0xaac2, 0xcda2, 0xcff8, 0xcff7, 0xace6, 0xace9,
+ 0xace8, 0xace7, 0xcff4, 0xcff6, 0xcff5, 0xd2e8, 0xafa7, 0xd2ec,
+ 0xd2eb, 0xd2ea, 0xd2e6, 0xafa6, 0xafaa, 0xafad, 0x8f68, 0x94c6,
+ 0xafae, 0xd2e7, 0xd2e9, 0xafac, 0xafab, 0xafa9, 0xafa8, 0xd6c2,
+ 0x9dea, 0xd6c0, 0xd6bc, 0xb2bb, 0xd6bd, 0xb2bc, 0xd6be, 0xd6bf,
+ 0xd6c1, 0xb2bd, 0xdad5, 0xfc69, 0xdad4, 0xdad3, 0xdad2, 0xdef6,
+ 0xb852, 0xdef3, 0xdef5, 0x9cda, 0xb853, 0xfef3, 0xb854, 0xdef4,
+ 0x9c72, 0xfef0, 0x89c9, 0xe341, 0xe2f9, 0xe2fa, 0xbad7, 0xbad5,
+ 0xbad6, 0xe343, 0x9941, 0xe342, 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb,
+ 0xe340, 0xe2f8, 0x9942, 0xe6cb, 0xe6d0, 0xe6ce, 0xfef5, 0x91d7,
+ 0xe6cd, 0xe6cc, 0xe6cf, 0xeaae, 0x94cc, 0xbf6d, 0xc148, 0xedb0,
+ 0xfef8, 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0xf2a5, 0xc3ab,
+ 0xf4a1, 0xc5a1, 0xf6f7, 0xf8b7, 0xf8b6, 0xc9a8, 0xacea, 0xaceb,
+ 0xd6c3, 0xb856, 0xa5dd, 0xa872, 0xa871, 0xa870, 0x97a8, 0xcda4,
+ 0xfefc, 0xaac4, 0xaac3, 0xacee, 0xfdbf, 0xcffa, 0xcffd, 0xcffb,
+ 0xacec, 0xaced, 0xfefe, 0xcff9, 0xcffc, 0xafb5, 0xd2f3, 0xd2f5,
+ 0xd2f4, 0xafb2, 0xd2ef, 0x96d1, 0xafb0, 0xafaf, 0xafb3, 0xafb1,
+ 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0, 0x94d5, 0x94d0,
+ 0xd6c6, 0xd6c7, 0xd6c5, 0xd6c4, 0xb2be, 0xb57d, 0xdad6, 0xdad8,
+ 0xdada, 0xb57c, 0x9944, 0xb57a, 0xdad7, 0xb57b, 0xdad9, 0xb579,
+ 0xdf41, 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0xdefb, 0xdef8,
+ 0xdef9, 0xb858, 0xdf40, 0xb857, 0xb85c, 0xb85b, 0xb859, 0xdefd,
+ 0xe349, 0xe348, 0x8c63, 0xe344, 0xa0b3, 0xbad8, 0xe347, 0xe346,
+ 0xbad9, 0xbd5e, 0xe6d2, 0x94cf, 0xbd5f, 0xbd5b, 0xbd5d, 0x9ffa,
+ 0xbd5a, 0xbd5c, 0x91e5, 0xeaaf, 0x9c6a, 0xbf70, 0xeab1, 0xeab0,
+ 0x8e49, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0xedb5, 0xedb3,
+ 0xc14a, 0xedb4, 0xedb6, 0xedb2, 0xedb1, 0xf060, 0xc2aa, 0xc2a8,
+ 0xc2a9, 0x8e4c, 0xf2a6, 0xf2a7, 0xc3ad, 0xc3ac, 0xf4a3, 0xf4a4,
+ 0xf4a2, 0xf6f8, 0xf6f9, 0xa5de, 0xca48, 0xa873, 0xcda5, 0xaac6,
+ 0xaac5, 0xcda6, 0x8e4d, 0xd040, 0xacef, 0xcffe, 0xacf0, 0x9a73,
+ 0xafb6, 0xd2f8, 0xd2f6, 0xd2fc, 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9,
+ 0xd2fa, 0xd6c8, 0xd6ca, 0x9947, 0xb2bf, 0x8cb1, 0xd6c9, 0xb2c0,
+ 0xb5a2, 0xb5a1, 0xb57e, 0xdadb, 0xdf44, 0xb85d, 0xb85e, 0xdf43,
+ 0xdf42, 0xe34a, 0xbadb, 0xbada, 0xe34b, 0xe34c, 0xbd61, 0xbd60,
+ 0x8e50, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4, 0xeab2, 0xeab6,
+ 0xeab3, 0xbf73, 0x8e4f, 0x9949, 0xedb7, 0xc14b, 0xedb8, 0xedb9,
+ 0x8e51, 0x8e52, 0xc2ab, 0xc2ac, 0xc475, 0x9ab2, 0x89a5, 0xc5d1,
+ 0xa5df, 0x994c, 0xd041, 0x9ff8, 0xd2fd, 0xafb8, 0x8e56, 0x994d,
+ 0x91ca, 0x8e57, 0xb3ba, 0xb3b9, 0x94e1, 0xb5a4, 0xdadd, 0xb5a3,
+ 0xdadc, 0x9047, 0x8fd8, 0x8e58, 0xdf45, 0xbadc, 0xe34d, 0xbadd,
+ 0xc476, 0xf4a5, 0xa6cb, 0xaac7, 0xcda7, 0xacf2, 0x94eb, 0xacf1,
+ 0xd042, 0xd043, 0xd340, 0xd342, 0xafb9, 0xd344, 0xd347, 0xd345,
+ 0x8e5c, 0x9553, 0xd346, 0xd343, 0xd2fe, 0xafba, 0xd348, 0xd341,
+ 0x9fe5, 0xd6d3, 0xb2c6, 0xd6dc, 0xb2c3, 0xd6d5, 0xb2c7, 0x9f56,
+ 0xb2c1, 0xd6d0, 0xd6dd, 0xd6d1, 0xd6ce, 0xb2c5, 0x954f, 0xb2c2,
+ 0x8e5e, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8, 0xb2c8, 0xd6d9, 0xd6cf,
+ 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb, 0xd6db, 0x996a, 0xdadf,
+ 0xdae4, 0x9c64, 0x9cd9, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, 0xdae1,
+ 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, 0xb5a8,
+ 0xb5ae, 0xb5a9, 0xb5aa, 0x8e5d, 0xb5a6, 0xdae5, 0xb861, 0xdf50,
+ 0x9950, 0xdf53, 0xdf47, 0xdf4c, 0xdf46, 0xb863, 0xdf4a, 0x9951,
+ 0xdf48, 0xb862, 0x8e62, 0xdf4f, 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49,
+ 0xbae1, 0xdf52, 0xb85f, 0xdf51, 0x9952, 0xe35d, 0xbae8, 0xe358,
+ 0xbae7, 0xe34e, 0xe350, 0xbae0, 0xe355, 0xe354, 0xe357, 0xbae5,
+ 0xe352, 0xe351, 0x8e68, 0xbae4, 0xbadf, 0xe353, 0xbae2, 0xe359,
+ 0xe35b, 0xe356, 0xe34f, 0xbae3, 0xbd69, 0xbade, 0x8e61, 0x9f59,
+ 0xe35c, 0xe6d9, 0xbd62, 0xe6db, 0xbd63, 0x8bb3, 0xbd65, 0xe6de,
+ 0xe6d6, 0xbae6, 0xe6dc, 0xe6d8, 0xb860, 0xbd68, 0xbd64, 0xbd66,
+ 0xbd67, 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0xe6da, 0x9f5d, 0x8e66,
+ 0xeac0, 0xeabb, 0xeac5, 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba,
+ 0xeab7, 0xeac6, 0xc151, 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc,
+ 0xbf7b, 0xeab9, 0xeabe, 0xbf7a, 0xeac1, 0xeac4, 0x8cb2, 0xedcb,
+ 0xedcc, 0xedbc, 0xedc3, 0xedc1, 0xc14f, 0xedc8, 0xeabf, 0x8e6e,
+ 0xedbf, 0x9f64, 0xedc9, 0xc14e, 0xedbe, 0xedbd, 0xedc7, 0xedc4,
+ 0xedc6, 0xedba, 0xedca, 0xc14c, 0xedc5, 0xedce, 0xedc2, 0xc150,
+ 0xc14d, 0xedc0, 0xedbb, 0xedcd, 0xbf75, 0x9953, 0xfab8, 0xf063,
+ 0x9954, 0xf061, 0xf067, 0xc2b0, 0xf065, 0xf064, 0xc2b2, 0xf06a,
+ 0xc2b1, 0xf06b, 0xf068, 0xc2ae, 0xf069, 0xf062, 0xc2af, 0xc2ad,
+ 0xf2ab, 0xf066, 0xf06c, 0xf2a8, 0x8e70, 0xc3b2, 0xc3b0, 0xf2aa,
+ 0xf2ac, 0xf2a9, 0xc3b1, 0xc3ae, 0xc3af, 0xc3b3, 0x9f61, 0xc478,
+ 0x8e72, 0xf4aa, 0xf4a9, 0xf4a7, 0xf4a6, 0xf4a8, 0xc477, 0xc479,
+ 0xc4f0, 0xa06b, 0xf5e5, 0xf5e4, 0x9f40, 0xf6fa, 0xf6fc, 0xf6fe,
+ 0xf6fd, 0xf6fb, 0x94ed, 0xc5a3, 0xc5a2, 0xc5d3, 0xc5d2, 0xc5d4,
+ 0xf7ed, 0xf7ec, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0x94ee, 0xc659,
+ 0xf96d, 0x9fbd, 0xc67e, 0xa6cc, 0x8e7b, 0xcda8, 0xd045, 0xd046,
+ 0xd044, 0x9957, 0x94f7, 0xacf3, 0x9f5f, 0xd047, 0xd048, 0xd049,
+ 0x8e73, 0xd349, 0xd34f, 0x9f62, 0xd34d, 0xafbb, 0xd34b, 0xd34c,
+ 0xd34e, 0x94f6, 0xd34a, 0xb2c9, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca,
+ 0xd6df, 0x9958, 0xdae8, 0xb5af, 0xdaea, 0xdae7, 0xd6e1, 0xb5b0,
+ 0x8e75, 0xf9db, 0xdae9, 0x9072, 0x94f8, 0xdf56, 0xb864, 0xdf54,
+ 0xb865, 0xdf55, 0xb866, 0x995a, 0xbae9, 0xe361, 0xe35e, 0xe360,
+ 0xbaea, 0xbaeb, 0xe35f, 0xa0b0, 0x8cb3, 0xe6df, 0x8e79, 0xe6e0,
+ 0x8e78, 0xbd6b, 0xe6e2, 0xe6e1, 0x94f3, 0xa261, 0xeaca, 0xeacb,
+ 0xeac7, 0x98af, 0xeac8, 0xbf7c, 0xbf7d, 0xeac9, 0xc157, 0xa0b2,
+ 0xc153, 0xc158, 0xc154, 0xc156, 0xc152, 0xc155, 0x8e7a, 0xc2b3,
+ 0xedcf, 0xf2ae, 0xf2ad, 0x995c, 0xf4ab, 0xc47a, 0xc47b, 0xf741,
+ 0xf5e6, 0x8e7c, 0xf740, 0x8e7d, 0xf8fd, 0xf9a4, 0xa6cd, 0x8bd9,
+ 0xa874, 0x89a2, 0xcda9, 0xaac8, 0xacf6, 0xd04c, 0xacf4, 0xd04a,
+ 0xacf9, 0xacf5, 0xacfa, 0xacf8, 0xd04b, 0xacf7, 0xafbf, 0xafbe,
+ 0xd35a, 0xafc7, 0xd353, 0xd359, 0xafc3, 0xd352, 0xd358, 0xd356,
+ 0xafc2, 0xafc4, 0xd355, 0xafbd, 0xd354, 0xafc8, 0xafc5, 0xafc9,
+ 0xafc6, 0xd351, 0xd350, 0xd357, 0xafc0, 0xafbc, 0xafc1, 0x9ed7,
+ 0xd6f0, 0xd6e9, 0xb5b5, 0xd6e8, 0xb2cf, 0xb2d6, 0xb2d3, 0xb2d9,
+ 0xb2d8, 0xb2d4, 0xd6e2, 0xd6e5, 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef,
+ 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed, 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd,
+ 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb, 0xd6ee, 0xa0b6, 0xdafb, 0xdaf2,
+ 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7, 0xb5b4, 0xdaef, 0xdaeb,
+ 0x9e42, 0xb86c, 0xdaf4, 0x8ea4, 0xb5b1, 0xdafa, 0xb5b8, 0xb5ba,
+ 0xdaed, 0xb5b9, 0xdaf0, 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5, 0xdaf3,
+ 0xb5b6, 0xdaec, 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0xb868, 0xdf5d,
+ 0xdf5f, 0xdf61, 0xdf65, 0xdf5b, 0xdf59, 0xb86a, 0xdf60, 0xdf64,
+ 0xdf5c, 0xdf58, 0xdf57, 0x8ea7, 0x8c76, 0xdf62, 0xdf5a, 0xdf5e,
+ 0xb86b, 0xb869, 0xdf66, 0xb867, 0xdf63, 0xe372, 0x9542, 0xbaee,
+ 0xe36a, 0xbd78, 0xe374, 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0x987d,
+ 0xe375, 0xe362, 0x9755, 0xe377, 0xe366, 0x8ea8, 0xbafe, 0xbafb,
+ 0xe376, 0xe370, 0xbaed, 0xbaf5, 0xbaf4, 0x8eaa, 0xbaf3, 0xbaf9,
+ 0xe363, 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373, 0xbaef, 0xbaf0,
+ 0xbaf8, 0xe368, 0xe367, 0xe364, 0xe36c, 0xe369, 0xe36d, 0xbafd,
+ 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0x89a3, 0xe36b, 0x9960, 0x9962,
+ 0xbafc, 0x94fc, 0x9961, 0xe6e7, 0xbd70, 0xbd79, 0xbd75, 0xe6e4,
+ 0x94fa, 0xbd72, 0xbd76, 0xe6f0, 0xbd6c, 0xe6e8, 0xbd74, 0x8eae,
+ 0x8eb2, 0xe6eb, 0xe6e6, 0xbd73, 0xbd77, 0xe6e5, 0xbd71, 0xe6ef,
+ 0xbd6e, 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d, 0x8eb0, 0xe6ec,
+ 0xe6e3, 0xbd7b, 0xe6ea, 0xbd6f, 0x9963, 0x97aa, 0xe6e9, 0x94fb,
+ 0xbfa2, 0xbfa7, 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9,
+ 0xbfa8, 0xbfa1, 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace,
+ 0xead6, 0xbfa3, 0xead4, 0xbfa6, 0xbfa5, 0xead0, 0xead1, 0xeacd,
+ 0xead7, 0xbfa4, 0xeade, 0xeadd, 0x8ebb, 0xedda, 0xedd6, 0xc15f,
+ 0xedd0, 0xc159, 0xc169, 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164,
+ 0xc167, 0xedde, 0xc15c, 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1,
+ 0xc160, 0xc15a, 0xc168, 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf,
+ 0xc162, 0xc15b, 0xedd9, 0xc166, 0xedd7, 0xeddb, 0xf06e, 0xf074,
+ 0xc2b9, 0xf077, 0xc2b4, 0xc2b5, 0xf06f, 0xf076, 0xf071, 0xc2ba,
+ 0xc2b7, 0x8cdc, 0xf06d, 0xc2b6, 0xf073, 0xf075, 0xc2b8, 0xf072,
+ 0xf070, 0x9876, 0x8ea1, 0xf2b8, 0xc3b7, 0xc3b8, 0xc3b4, 0x8cb4,
+ 0xc3b5, 0x8eb7, 0xf2b4, 0xf2b2, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0,
+ 0xf2af, 0xf2b3, 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d,
+ 0xf4ad, 0x9da6, 0xf4af, 0xf4ae, 0xc4a1, 0xf5eb, 0xf5e8, 0xf5e9,
+ 0xf5e7, 0xf5ea, 0xc4f2, 0xf5ec, 0x9eb0, 0xc4f1, 0xf742, 0x8eb8,
+ 0xc5d5, 0xc5d7, 0xf7ee, 0xc5d6, 0xf8b9, 0xf940, 0xf942, 0xf8fe,
+ 0xf941, 0xc66c, 0x9d70, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972,
+ 0x8973, 0x8974, 0xa6ce, 0x8975, 0xacfb, 0xd26f, 0xafca, 0xb2da,
+ 0xdafc, 0xdafd, 0x8ebc, 0x8ebd, 0xeadf, 0xc16a, 0xede1, 0x8ebe,
+ 0xc2bb, 0x9dd1, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0x94fd, 0xf743,
+ 0xc5f8, 0xca49, 0x8bd7, 0x8bda, 0xaac9, 0xa875, 0xd04d, 0xd360,
+ 0xd35b, 0xd35f, 0xd35d, 0xafcb, 0xd35e, 0xd35c, 0xd6f1, 0xdafe,
+ 0xdb40, 0xdf69, 0xdf6a, 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67,
+ 0xb86d, 0xbb40, 0xa0e2, 0xb870, 0xe37a, 0xbd7c, 0xe6f1, 0xbd7d,
+ 0x9fe9, 0xbfa9, 0xeae2, 0xeae0, 0xeae1, 0xede4, 0xede3, 0xede2,
+ 0xf2bb, 0xc3b9, 0xf2bc, 0xf744, 0xc5f9, 0xf8ba, 0xa6cf, 0xaacb,
+ 0xaaca, 0xd04f, 0xacfc, 0xfda8, 0xd04e, 0xd362, 0x8ae7, 0xafcc,
+ 0xd6f2, 0xd361, 0x8ec2, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db,
+ 0xdb42, 0xdb43, 0xdb41, 0x8ec4, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e,
+ 0xb872, 0xb871, 0xe6f2, 0xe6f4, 0x9964, 0xbd7e, 0xe6f3, 0xeae3,
+ 0xbfaa, 0xf079, 0x9965, 0xf078, 0xc3bb, 0xf2bd, 0xc3bd, 0xc3bc,
+ 0xf4b0, 0xf5ee, 0xc4f3, 0xa6d0, 0xd050, 0xacfd, 0xd365, 0xafce,
+ 0xd364, 0xd363, 0xafcd, 0xd6fb, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd,
+ 0xd6f8, 0xb2de, 0xd6fc, 0xd6f9, 0xd6fa, 0xb2df, 0xb5be, 0xb5bf,
+ 0xdb44, 0xdf6f, 0xdf70, 0x954e, 0xe37e, 0xbb43, 0xbb41, 0xbb42,
+ 0xe37b, 0xe37c, 0xe37d, 0xe6f9, 0x98b3, 0xe6fa, 0xbda1, 0xe6f7,
+ 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4, 0xbfab, 0xbfac, 0xede6,
+ 0xc16b, 0xede5, 0xefa8, 0xf07a, 0xf07b, 0xc2bc, 0x8ecb, 0xc2bd,
+ 0xc16c, 0xf2be, 0xf2bf, 0xf4b1, 0xc4a3, 0xa6d1, 0x8bdf, 0xa6d2,
+ 0xacfe, 0xaacc, 0xafcf, 0xd051, 0x8ece, 0xb5c0, 0xa6d3, 0xad41,
+ 0xd052, 0xd053, 0xad40, 0xad42, 0xa6d4, 0xd054, 0xafd1, 0xd366,
+ 0xafd3, 0xafd0, 0xafd2, 0xd741, 0xb2e0, 0x8ecf, 0xd740, 0xd6fe,
+ 0x9968, 0xdf71, 0xe3a1, 0x9969, 0xbda2, 0xbfae, 0xeae6, 0xeae5,
+ 0xede7, 0x996b, 0x8ed1, 0xf5ef, 0x996c, 0xa6d5, 0xcb73, 0xcdaa,
+ 0xad43, 0xd055, 0xd368, 0x8ed4, 0x8ed5, 0xafd4, 0xd367, 0xafd5,
+ 0xd743, 0xb2e2, 0xd742, 0xd744, 0xb2e1, 0xdb46, 0xdb47, 0xdb45,
+ 0xb5c1, 0x996d, 0xb874, 0xb875, 0xbb45, 0xa0be, 0xe3a3, 0xe3a2,
+ 0xbb44, 0x8ed6, 0xa0bc, 0xa0b5, 0xe6fb, 0xa0b4, 0xe6fc, 0xeae7,
+ 0xc170, 0xc16f, 0xc16d, 0xc16e, 0xc171, 0xf07c, 0xc2bf, 0xc2be,
+ 0xf2c0, 0xf4b2, 0xc5a5, 0xc5a4, 0xa6d6, 0x8be0, 0xd1fb, 0xb877,
+ 0xb5c2, 0xb876, 0xbb46, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9, 0xcdab,
+ 0xcb76, 0xcb77, 0xa877, 0xcb74, 0xa876, 0xa879, 0xcb75, 0xa87b,
+ 0xa87a, 0xcb78, 0xa878, 0x89b5, 0xaad1, 0xaacf, 0xcdad, 0xaace,
+ 0x8edd, 0xaad3, 0xaad5, 0xaad2, 0xcdb0, 0xcdac, 0xaad6, 0xaad0,
+ 0xa87c, 0xaad4, 0xcdaf, 0x9e5d, 0x9971, 0xcdae, 0xaacd, 0x89ae,
+ 0x9de8, 0xd05b, 0xad47, 0xad48, 0xd05d, 0x9565, 0xd057, 0xd05a,
+ 0xd063, 0xd061, 0xad49, 0xd067, 0xad4c, 0xd064, 0xd05c, 0xd059,
+ 0xdb49, 0xd062, 0xad44, 0xd065, 0xd056, 0xd05f, 0xad46, 0xad4b,
+ 0xd060, 0xad4f, 0xad4d, 0xd058, 0xad4a, 0xd05e, 0xad4e, 0xad45,
+ 0xd066, 0x9972, 0x8b5c, 0xafda, 0xafe3, 0xafd8, 0xafd6, 0xd36a,
+ 0xafde, 0xafdb, 0xd36c, 0x89b1, 0xafdd, 0xd36b, 0xd369, 0xd36e,
+ 0xafe2, 0xafe0, 0xdb48, 0xd36f, 0xd36d, 0xafd7, 0xa0c0, 0xafd9,
+ 0xafdc, 0x8edf, 0xafdf, 0x9566, 0xafe1, 0x9974, 0x9976, 0x9977,
+ 0x9979, 0xd74e, 0xb2e4, 0x9dda, 0xd745, 0xd747, 0x8ee0, 0xd748,
+ 0xd750, 0xd74c, 0xd74a, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746,
+ 0xd74f, 0xb2e7, 0x935c, 0xb2e6, 0xd74b, 0xd749, 0xb2e3, 0xb2e8,
+ 0x9de6, 0x8b5f, 0x9563, 0xb5c8, 0xdb51, 0xdb4f, 0xb5ca, 0x9567,
+ 0xdb4a, 0xdfa1, 0xb5c9, 0xdb4e, 0x9de3, 0xdb4b, 0xb5c5, 0xb5cb,
+ 0xdb50, 0xb5c7, 0xdb4d, 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4,
+ 0xb5c3, 0x997c, 0x997d, 0x997e, 0xdf77, 0xdf75, 0xdf7b, 0xdf73,
+ 0xdfa2, 0xdf78, 0xdf72, 0xb87b, 0xb8a3, 0xdf7d, 0xdf76, 0xb87e,
+ 0x8b5b, 0xb87c, 0xdf7e, 0xb879, 0xb878, 0xdf79, 0xb87d, 0xb5cd,
+ 0xdf7c, 0xdf74, 0xb87a, 0xb8a1, 0xb8a2, 0x99a3, 0xbb4c, 0xbb48,
+ 0xbb4d, 0xe3a6, 0x99a4, 0xe3a5, 0xe3a7, 0xbb4a, 0xe3a4, 0xbb4b,
+ 0xe3aa, 0xe3a9, 0xe3a8, 0xbb49, 0x99a6, 0xe741, 0xe744, 0xbda8,
+ 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe, 0xbda6,
+ 0xe742, 0xe6fd, 0x99a8, 0xeae9, 0xeaf3, 0xbfb1, 0xbfb0, 0x8abe,
+ 0xeaed, 0xeaef, 0xeaea, 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0,
+ 0xeaec, 0x9e61, 0xeaf2, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178,
+ 0xc17a, 0xc177, 0xc176, 0x99aa, 0xc175, 0xc173, 0xede9, 0xedec,
+ 0xc172, 0xeded, 0xa0c8, 0xc179, 0xedeb, 0xedea, 0xc2c0, 0xc2c1,
+ 0xf0a1, 0xf07d, 0xf07e, 0xf2c2, 0xf2c1, 0xc3be, 0xf4b4, 0xc4a4,
+ 0xf4b3, 0xf5f0, 0xf745, 0xc5a6, 0xf943, 0xf944, 0xc5d8, 0xa6da,
+ 0x99ab, 0xaad7, 0xdb52, 0xbb4e, 0xc17b, 0xedef, 0xa6db, 0xafe5,
+ 0xafe4, 0xdb53, 0xfec4, 0xeaf4, 0xa6dc, 0xad50, 0x98c2, 0xdb54,
+ 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0xaad8, 0xd068, 0xafe6,
+ 0xd370, 0xb2ea, 0xdb57, 0xb8a4, 0xbb50, 0xbfb3, 0xc17c, 0xc2c2,
+ 0xf4b5, 0xa6de, 0xaad9, 0xafe7, 0xd752, 0xb5ce, 0xbb51, 0xe3ab,
+ 0xe745, 0x8ee8, 0xa0ba, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0,
+ 0xcdb1, 0xd069, 0xad51, 0xd372, 0xfd77, 0xafea, 0x8eee, 0xafe8,
+ 0xafe9, 0xafeb, 0x9ebf, 0xd371, 0xd757, 0xd754, 0xd756, 0xb2eb,
+ 0xb2ed, 0xb2ec, 0xd753, 0xb2ee, 0xd755, 0xdb58, 0xdb59, 0x89c2,
+ 0xdb5a, 0xdfa6, 0xdfa7, 0xdfa5, 0xdfa8, 0xb8a5, 0xdfa4, 0xbb53,
+ 0xe74a, 0xe746, 0xe749, 0xe74b, 0xe748, 0xe747, 0x99ac, 0xeaf5,
+ 0xeaf6, 0xeaf7, 0xbfb4, 0xbfb5, 0xedf1, 0xedf0, 0xedf2, 0xf0a3,
+ 0xf0a2, 0xf2c4, 0x956b, 0xf2c5, 0xf2c3, 0x956c, 0xc4a5, 0xf4b6,
+ 0xf4b7, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, 0xc17d, 0xa6e2,
+ 0xd758, 0xdb5b, 0x99af, 0xc641, 0xca4a, 0x994a, 0x8976, 0x8f48,
+ 0xca4b, 0xca4d, 0xa6e3, 0xca4e, 0xca4c, 0xcba2, 0xcba3, 0xcb7b,
+ 0xfbee, 0xcba1, 0xa8a1, 0xa8a2, 0xcb7c, 0xcb7a, 0xcb79, 0xcb7d,
+ 0xa87e, 0xcb7e, 0xd06a, 0xcdb6, 0xaadc, 0xcdb5, 0xcdb7, 0xaadb,
+ 0xcdbc, 0xaadf, 0xcdb2, 0xcdc0, 0xcdc6, 0xaae6, 0xcdc3, 0xaae3,
+ 0x99ae, 0xcdb9, 0xcdbf, 0xcdc1, 0x8efb, 0xcdb4, 0xaae2, 0xaadd,
+ 0xcdba, 0xaae4, 0xaae7, 0xaae1, 0xaada, 0xcdbe, 0xcdb8, 0xcdc5,
+ 0xaae9, 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade, 0xaae8,
+ 0x8cd0, 0xcdb3, 0xcdc2, 0xcdc4, 0x8b52, 0x99b0, 0x8977, 0x8f41,
+ 0xad62, 0xad5c, 0xad64, 0xad61, 0xd071, 0xd074, 0xad5d, 0x99b1,
+ 0xd06b, 0xad56, 0xad60, 0xad63, 0xad65, 0xd0a2, 0xd077, 0x8f49,
+ 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, 0xd06f, 0xd07e, 0xd073,
+ 0xd076, 0xd0a5, 0xfa4d, 0xad66, 0xd07d, 0xad5e, 0xd078, 0xd0a4,
+ 0xd075, 0xd079, 0xd07c, 0x9de4, 0x8cb5, 0xd06d, 0xd0a3, 0xd07b,
+ 0xfbe9, 0x9b54, 0xd06c, 0x99b2, 0xd070, 0xad5f, 0xad5a, 0xad53,
+ 0xad58, 0xad54, 0xad67, 0xd06e, 0xd3a5, 0xad5b, 0x9e68, 0xd07a,
+ 0xce41, 0xd3a8, 0xaffa, 0x8f4a, 0xd376, 0x8f42, 0xd3a3, 0xd37d,
+ 0x8f51, 0xd3b2, 0xd3aa, 0xd37e, 0xd3a9, 0xd378, 0xd37c, 0xd3b5,
+ 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0xd3ac, 0xaffc,
+ 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, 0xaff1, 0xaff8,
+ 0xd072, 0xdb5c, 0xd3a6, 0x9846, 0xd37a, 0xaffb, 0xd37b, 0xd3a1,
+ 0xaffe, 0xd375, 0xd3af, 0xd3ae, 0xd3b6, 0xaff3, 0xaff0, 0xd3b4,
+ 0xd3b0, 0xd3a7, 0xd3a2, 0xaff6, 0xaff2, 0xd377, 0xafee, 0xd3b1,
+ 0xafef, 0xd379, 0x99b4, 0x8ef5, 0xfd55, 0x9ccd, 0x8978, 0xd75e,
+ 0xd760, 0xd765, 0xd779, 0xb2fc, 0xb2f2, 0xd75d, 0xb2fd, 0xb2fe,
+ 0xd768, 0xd76f, 0xd775, 0xd762, 0xd769, 0x8f53, 0xb340, 0xd777,
+ 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef, 0xd761,
+ 0xd759, 0x8f6f, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773,
+ 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0x8e63, 0xd76b, 0xb2f0, 0xb2fb,
+ 0xb2f3, 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, 0xd75b, 0xd767,
+ 0xd76d, 0xb2f6, 0x8f56, 0xd778, 0xd771, 0xd774, 0xfe76, 0xb2f5,
+ 0x9fc6, 0xdb6c, 0xdb60, 0xb5d7, 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5,
+ 0xdb68, 0xdba3, 0xdb69, 0xdb77, 0xb5e2, 0xdb73, 0xb5df, 0xfaac,
+ 0xdb74, 0xdb5d, 0xdba4, 0x8f58, 0xb5e8, 0xdba1, 0xdb75, 0xdbac,
+ 0xdb70, 0xdfc8, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a, 0xb5e9, 0xb5d4,
+ 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0xdb63, 0xdb61, 0xb5d0,
+ 0xdba5, 0xdb6a, 0xdba8, 0x9848, 0xdba9, 0xb5d8, 0xb5dd, 0xb5d9,
+ 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0xb5d2, 0xdb5e, 0xdba2,
+ 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71, 0xdb6d, 0xb5d1, 0xb5e5,
+ 0x99b7, 0xdb7c, 0xb5e7, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3,
+ 0xb5e4, 0xdb79, 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0x9665, 0xfa6c,
+ 0x9de7, 0xdbae, 0x9e62, 0x96cc, 0x8e67, 0xdb5f, 0xfc75, 0x987e,
+ 0xdfc7, 0xdfdd, 0xb855, 0xdfcc, 0xfdb9, 0xdfca, 0xdfb5, 0xb8a9,
+ 0xdfc5, 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, 0xb5e3, 0xdfcf,
+ 0xdfc0, 0xdfd6, 0xb8b0, 0xb8a8, 0x97fc, 0xdfaa, 0xdfb2, 0xdfcb,
+ 0xdfc3, 0xdfdc, 0xdfc6, 0xb8b6, 0xdfd7, 0x98f9, 0xb8ad, 0x8f66,
+ 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0, 0xdfe1, 0xdfb1, 0xdfd2, 0x956e,
+ 0xdfdf, 0x9245, 0xdfab, 0xb5db, 0x8f60, 0xdfb9, 0xdfb8, 0xb8af,
+ 0x9ed1, 0xdfbc, 0xdfbe, 0xdfcd, 0xdfde, 0xb8b2, 0xfecd, 0xb8b3,
+ 0x99b9, 0xdfb0, 0xb8ab, 0xdfb4, 0xdfda, 0xb8b4, 0xb8ac, 0xb8ae,
+ 0xb8b5, 0xdfe0, 0xdfd3, 0xdfce, 0x8f62, 0x974c, 0xdfbb, 0xdfba,
+ 0xb8aa, 0xdfac, 0xb8a7, 0xdfc4, 0xdfad, 0xdfc2, 0xdfb7, 0xdfdb,
+ 0x91c7, 0x955f, 0xb8a6, 0xdfb3, 0x99bb, 0xdfaf, 0xdfd5, 0xdfae,
+ 0xbb60, 0xe3d3, 0x8e6d, 0x8f71, 0xe3c2, 0x94cb, 0xe3ac, 0xe3ca,
+ 0xbb58, 0xe3bb, 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, 0xe3cd,
+ 0xe3ae, 0xe3c1, 0x95b1, 0xe3ad, 0xe3bf, 0xe3c8, 0xe3c6, 0xe3ba,
+ 0xe3b5, 0xe3b3, 0x9af2, 0xe3b4, 0xe3c7, 0xe3d2, 0xe3bc, 0xbb5a,
+ 0xe3b7, 0xe3cb, 0xbb5d, 0xe3b6, 0xe3b0, 0xe3c0, 0xbb61, 0x96c3,
+ 0x99bd, 0xbb55, 0xbb5e, 0xe3b8, 0xe3b2, 0xbb57, 0xdfd4, 0xbb56,
+ 0xe3c3, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9, 0xe3b1, 0xe3cc,
+ 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0xe3c9, 0xe3ce, 0xa0cf,
+ 0xe3d1, 0x8f6d, 0x99be, 0x8ef4, 0x8f72, 0x95e4, 0xe773, 0xe774,
+ 0xe767, 0xe766, 0xe762, 0xbdb4, 0xbdac, 0xe776, 0xe775, 0xdfa9,
+ 0xe75f, 0xe763, 0xe75d, 0xe770, 0xe761, 0x99bf, 0xe777, 0xe75a,
+ 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6, 0xe74f, 0xe76d, 0x9242,
+ 0xfba5, 0xbdb7, 0xdfbd, 0xe75b, 0xe752, 0xe755, 0xe77b, 0xe75c,
+ 0xe753, 0xe751, 0xe74e, 0x99c0, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3,
+ 0xe760, 0xe768, 0xbda9, 0xe778, 0xe77c, 0xbdab, 0xe757, 0xe76b,
+ 0xe76f, 0xe754, 0xe779, 0xbdb2, 0xbdb1, 0xe74c, 0xbdb5, 0xe772,
+ 0xe756, 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c,
+ 0xe77d, 0xe77a, 0xe771, 0xfdb4, 0x8f77, 0x99c1, 0xe74d, 0xbdaa,
+ 0xeb49, 0xeb40, 0xeb43, 0xfab9, 0xbfbb, 0xeb45, 0xeaf9, 0xeb41,
+ 0xeb47, 0xbfb8, 0xbfbc, 0xbfb6, 0x8f40, 0xfa44, 0xeafb, 0xeb4c,
+ 0xeb46, 0x99c2, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46, 0xeafe,
+ 0xbfb7, 0x8f5c, 0xeb4a, 0xeb54, 0xbfbf, 0x8cbd, 0xeb51, 0xeafd,
+ 0xeb44, 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, 0xbfb9, 0xbfba,
+ 0xbfbe, 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0x99c4, 0x99c5, 0xeb4b,
+ 0x8f7b, 0xeb4e, 0xee53, 0xee40, 0xee45, 0xee52, 0xee44, 0xedfb,
+ 0xee41, 0xc1a2, 0xedf4, 0xee4d, 0xee4f, 0xedf3, 0xc1a1, 0xee51,
+ 0xee49, 0xc1a8, 0xee50, 0xee42, 0xc1aa, 0xedf9, 0xeb52, 0xee4a,
+ 0xee47, 0xedf5, 0xee55, 0xc1a4, 0xc1a5, 0xedf7, 0xee48, 0x8cb6,
+ 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3, 0xee4c, 0xedfe, 0xee56,
+ 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc, 0xc2cb, 0xedf6, 0xc1a9,
+ 0xc2c4, 0xc17e, 0xc1a6, 0xc2c8, 0xf0b3, 0xf0a9, 0xf0a4, 0xf0aa,
+ 0xf0b4, 0xf0b8, 0xf0b7, 0xc2ca, 0xc2c9, 0xf0ab, 0xf0b9, 0xf0ae,
+ 0xf0a6, 0x8fa3, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2, 0xf0a5, 0xf0ac,
+ 0xf0b1, 0xc2c7, 0xf0af, 0xc2c5, 0xf0b0, 0xc2c3, 0xc2c6, 0xf2d5,
+ 0xf0b5, 0xc3c2, 0x8cce, 0xf2cd, 0xf2d1, 0xf2c9, 0xf2cc, 0xf2d4,
+ 0xc3c0, 0xf2d9, 0xf2d2, 0x99c6, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3,
+ 0xc3c4, 0xf2d7, 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8,
+ 0x96cd, 0xf2d8, 0xf2d6, 0xf2c7, 0xf2cf, 0xf4be, 0xc3c5, 0xf2d0,
+ 0xc4a7, 0xc4a9, 0xc4a6, 0x96c7, 0xf4c3, 0xf4bb, 0xf4b9, 0xf4bd,
+ 0xf4ba, 0x8fa5, 0xf4bf, 0xf4c1, 0xc4aa, 0xc4ac, 0xf4c0, 0xc4ad,
+ 0xc4ab, 0xf4c2, 0xfabb, 0x8c61, 0x9570, 0xc4a8, 0x9368, 0x8f7e,
+ 0xc4f4, 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0xf5fd, 0xf5f4,
+ 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8,
+ 0x8faa, 0xf5fc, 0xf5f2, 0xf74a, 0xc4f5, 0xf5f9, 0xa050, 0xf7f4,
+ 0xf74b, 0xf749, 0xf747, 0xf748, 0xf74c, 0xc5d9, 0xf7f2, 0xf7f0,
+ 0xf7f5, 0xf7f3, 0xf7f6, 0xc5da, 0xf7f1, 0x90d3, 0xf8bc, 0x9556,
+ 0xf945, 0xf946, 0xf947, 0xf9c7, 0xf9bd, 0xca4f, 0xaaea, 0xad68,
+ 0xd3b8, 0xd3b7, 0xb040, 0xb342, 0xd77c, 0xd77b, 0xb5ea, 0xb8b8,
+ 0xb8b7, 0xb8b9, 0xe3d4, 0xe77e, 0xeb58, 0xeb5a, 0xeb59, 0xc1ab,
+ 0xee57, 0xf0ba, 0xf9a5, 0xa6e4, 0x8fb8, 0xcdc9, 0xcdca, 0xcdc8,
+ 0xcdc7, 0xaaeb, 0x99c8, 0xd0a9, 0xd0a7, 0xd0a6, 0xad69, 0xad6b,
+ 0xad6a, 0xd0a8, 0x8faf, 0xd3c4, 0xd3c1, 0xd3bf, 0xb041, 0xd3c2,
+ 0xb046, 0xd3bc, 0xd3cb, 0xd3cd, 0xd3bd, 0x99c9, 0xb043, 0xd3ce,
+ 0xd3c9, 0xd3bb, 0xd3c0, 0xd3ca, 0xd3c6, 0xd3c3, 0xb048, 0xd3cc,
+ 0xd3be, 0x9579, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0xd3c8,
+ 0xd3ba, 0xb045, 0xb042, 0x9f49, 0xb34c, 0xd7a5, 0xb34b, 0x99ca,
+ 0xd7a8, 0xd7ab, 0xb348, 0xb346, 0xd77e, 0xd7a9, 0xd7a7, 0xd7a4,
+ 0xd7ac, 0xd7ad, 0xd7af, 0xd7b0, 0xd77d, 0xb345, 0xd7a2, 0xd7a1,
+ 0xd7ae, 0xb347, 0xd7a3, 0xb349, 0xb344, 0xd7a6, 0xb34d, 0xb34a,
+ 0xd7aa, 0xb5f1, 0xdbbf, 0xdbb4, 0xb5ee, 0xdfe7, 0xdbbd, 0xdbb1,
+ 0xb5ec, 0xdbb6, 0xb5ef, 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, 0xdbb2,
+ 0xdbb5, 0xb5f0, 0xdbb3, 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb,
+ 0xb5ed, 0x99cb, 0xdfe8, 0xdfee, 0xdfe4, 0xdfea, 0xb8ba, 0xdfe6,
+ 0xb8c0, 0xb8bf, 0xb8be, 0xdfed, 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0,
+ 0xb8c3, 0xb8bd, 0xb8bc, 0xdfec, 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef,
+ 0xdfeb, 0xe3f4, 0xe3e9, 0xb8bb, 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de,
+ 0xbb65, 0xe3db, 0xe3e4, 0xe3dc, 0xbb67, 0xe3d6, 0xe3f1, 0xbb68,
+ 0xe3ee, 0xe3ef, 0xe3d7, 0xbb6d, 0xe3e6, 0xe3e0, 0xe3e7, 0xe3da,
+ 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5, 0xbb69, 0xe3ec, 0xbb6c, 0xe3f0,
+ 0xe3ea, 0xbb66, 0xe3e8, 0xe3e2, 0xbb64, 0xe3d9, 0xe3e1, 0xe3ed,
+ 0xe3df, 0xe3e3, 0xbdc1, 0xdfe9, 0xe7b2, 0xe7bb, 0xe7b1, 0xe7ad,
+ 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b, 0xe7a1, 0xbdc0, 0xe7a7, 0xbdbf,
+ 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4, 0xe7ae, 0xe7b3, 0xbdbb, 0xe7ab,
+ 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba, 0xbdbc, 0xe7bf, 0xbdbe, 0xe7c0,
+ 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af, 0xe7b8, 0xe7b5, 0x9dd5, 0x8fb0,
+ 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, 0xbdbd, 0xeb64, 0xe7b7,
+ 0xe7bc, 0xfa7a, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67, 0x9e5f,
+ 0xeb65, 0xeb60, 0xeb6f, 0x99cd, 0xa0c9, 0xbfc4, 0xeb5c, 0xeb68,
+ 0xeb69, 0xeb5f, 0xeb5e, 0xeb6c, 0xeb62, 0xeb5d, 0xeb63, 0xeb6e,
+ 0xeb5b, 0xeb6d, 0xeb6a, 0xbfc2, 0xbfc1, 0xbfc3, 0xeb66, 0xf0cb,
+ 0x9adb, 0xa0c6, 0xee59, 0xc1b1, 0xee5d, 0xee5a, 0xee61, 0xee67,
+ 0xee5c, 0x8fb4, 0xee70, 0xc1ae, 0xee6a, 0xee5f, 0xee6b, 0xee66,
+ 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60, 0xee6e, 0xee58, 0xee6c,
+ 0xc1ac, 0xa0d7, 0xee64, 0xee63, 0xee68, 0xee5b, 0xc1b0, 0xc1b4,
+ 0xee62, 0xee69, 0xc1b5, 0xee65, 0xa0c7, 0xc1ad, 0xc1af, 0xf0c7,
+ 0xf0c5, 0xa043, 0xf0cc, 0xf0c9, 0xf0cd, 0x8fb5, 0xf0be, 0xf0c6,
+ 0xf0d1, 0xee6f, 0xf0c2, 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4,
+ 0xf0c1, 0xf0bc, 0xf0bb, 0xf0d0, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8,
+ 0x8fb2, 0xc2cc, 0xc2ce, 0xf0c3, 0xf0cf, 0xa061, 0xf2de, 0xf2df,
+ 0xc3c9, 0xf2dc, 0xc3c6, 0xf2e4, 0xc3ca, 0xf2e6, 0xf2db, 0xf0ce,
+ 0xf2e8, 0xf2dd, 0x9e5e, 0xc3c7, 0xf2e3, 0xf2e5, 0xf2e0, 0xf2e7,
+ 0xf2e2, 0xf2e1, 0xc3c8, 0x8fb6, 0xf4c5, 0xf4c6, 0xf4c8, 0xc4ae,
+ 0xc4af, 0xf4c9, 0xf4c7, 0x9fe8, 0xf4c4, 0xf642, 0xf645, 0xf641,
+ 0xc4fa, 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644, 0xf751, 0xf74f,
+ 0x9cb2, 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0x957c, 0xf7f9,
+ 0xf7d7, 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0xf8bf, 0xc5fa, 0xf8be,
+ 0xf8bd, 0xc5fb, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, 0xa6e5,
+ 0xd0aa, 0x9fc7, 0xd3cf, 0xd3d0, 0x8fbb, 0x8fbc, 0xdbc0, 0xf647,
+ 0xf8c0, 0xa6e6, 0xad6c, 0xd0ab, 0x8fec, 0xd7b1, 0xb34e, 0xdbc2,
+ 0xdbc1, 0xb5f3, 0xb8c5, 0xe7c1, 0xbdc3, 0xbdc4, 0x8fc0, 0x936a,
+ 0xbfc5, 0xc5fc, 0xa6e7, 0x8be4, 0x9c7c, 0xd0ac, 0xaaed, 0xd0ae,
+ 0xd0ad, 0xad6d, 0xd3d1, 0x95a1, 0xd3d8, 0xb049, 0xd3d6, 0xd3d4,
+ 0xd3db, 0xd3d2, 0xd3d3, 0xb04a, 0xb04e, 0xd3dc, 0xb04d, 0xd3da,
+ 0xd3d7, 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xfeec, 0x95a3, 0xb350,
+ 0xd7b2, 0xb355, 0xd7c2, 0xb354, 0xd7c4, 0x8c45, 0x8cb8, 0xd7b8,
+ 0xb352, 0xd7c3, 0xd7b3, 0xb353, 0xd7bf, 0xd7bb, 0xd7bd, 0xd7b7,
+ 0xd7be, 0x8fc1, 0xb34f, 0xd7ba, 0xa052, 0xd7b9, 0xd7b5, 0xd7c0,
+ 0xd7bc, 0xd7b4, 0xd7b6, 0xb351, 0xd7c1, 0x99d0, 0xb5f6, 0xdbcd,
+ 0x8fc3, 0x8fc4, 0xdbc9, 0xdbcb, 0xdbc6, 0xdbc5, 0xdbc3, 0xdbca,
+ 0xdbcc, 0xdbc8, 0x95a4, 0xdbc7, 0xb5f4, 0xb5f5, 0x8fc6, 0x9e60,
+ 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3, 0xdff4, 0xf9d8, 0xdff9,
+ 0xb8cf, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, 0xb8ca, 0xb8c8, 0xdff7,
+ 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, 0xb8cc, 0x95a5, 0xe3f6,
+ 0xbb74, 0xe442, 0xe441, 0xe3fb, 0xbb76, 0xe440, 0xe3f7, 0xe3f8,
+ 0xbb6e, 0xbb70, 0x9cb3, 0xe3fd, 0xe3f5, 0xbb72, 0xbb71, 0xe3f9,
+ 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0x99d1, 0xfef1, 0xdbce, 0xbb6f,
+ 0xe7c2, 0xe7c9, 0xbdc6, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0xe7cc,
+ 0xbdc5, 0xe7cb, 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6,
+ 0xe7c7, 0xe7c8, 0xbb75, 0xeb70, 0xeb7c, 0xbfca, 0xeb77, 0xeb79,
+ 0x99d2, 0xbfc8, 0xeb71, 0xeb75, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b,
+ 0xeb73, 0xeb74, 0xeb7a, 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0xee71,
+ 0xc1b7, 0xee77, 0xc1b9, 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0xee75,
+ 0xee78, 0x9cc2, 0xc1b8, 0xf0d6, 0x99d3, 0xf0d9, 0xf0d3, 0xf0d5,
+ 0x95a7, 0xf0d4, 0xf0d7, 0xf0d8, 0xee76, 0xf0d2, 0x95a9, 0xc3cd,
+ 0xf2ec, 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0, 0xc3ce,
+ 0xc3cc, 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0x95a6, 0xf4cb,
+ 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, 0xf752,
+ 0xc5a7, 0xf7fd, 0xf7fc, 0xf7fb, 0x9c5d, 0xf948, 0xf949, 0xf94b,
+ 0xf94a, 0xca50, 0xa6e8, 0x98e2, 0xad6e, 0xd7c5, 0xb5f7, 0xdffa,
+ 0xc2d0, 0x8fc9, 0xf2f2, 0xa0c2, 0x8fca, 0xa8a3, 0xb357, 0x99d4,
+ 0xb356, 0xa0b9, 0xdbd0, 0xb5f8, 0xdbd2, 0xdbd1, 0xdffb, 0xb8d0,
+ 0xe443, 0xe446, 0xe445, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf, 0x9b58,
+ 0xbfcc, 0x8fcd, 0xa0d4, 0xbfcb, 0xc1bb, 0xee79, 0xee7b, 0xee7a,
+ 0xc2d1, 0xf2f4, 0xf2f3, 0xf4cc, 0xc4b1, 0x8fce, 0xc4fd, 0xf754,
+ 0xf753, 0xc65b, 0x8be5, 0x8979, 0xa8a4, 0xd0af, 0xad6f, 0xd7c8,
+ 0xd7c6, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043, 0xdbd3, 0xdffc, 0xe041,
+ 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd, 0xe044, 0x8fd0, 0xe449,
+ 0xe447, 0xe448, 0xe7d3, 0xe7d1, 0xe7d2, 0xeb7d, 0xee7c, 0xee7d,
+ 0xc2d2, 0xf2f5, 0xf4cd, 0xc4b2, 0xf64c, 0xf755, 0xc5a9, 0xf7fe,
+ 0xf94c, 0xa8a5, 0xad71, 0xad72, 0xd0b0, 0xd0b1, 0xad70, 0xb054,
+ 0xb052, 0xb051, 0xb058, 0xb050, 0xb059, 0xd3dd, 0xb056, 0xb053,
+ 0xb057, 0xb055, 0xb04f, 0xb35f, 0x95b6, 0xb359, 0xd7cc, 0xb35e,
+ 0xb360, 0xb35a, 0xb35b, 0xd7ca, 0x99d6, 0xb358, 0x95e5, 0xd7cb,
+ 0xb35d, 0xd7c9, 0xb35c, 0xb644, 0xb646, 0x99d7, 0xdbd8, 0xb645,
+ 0xb5f9, 0xb5fd, 0x95b5, 0xb8e4, 0xe049, 0xdbda, 0xb5fe, 0xdbdd,
+ 0xdbde, 0xb643, 0xdbe0, 0xa0ca, 0xdbe2, 0xdbe3, 0xdbd7, 0xdbd6,
+ 0xdbe4, 0xb642, 0xdbe1, 0xdbdf, 0xb640, 0xb5fb, 0xb647, 0xdbdb,
+ 0xdbdc, 0xdbd9, 0xb641, 0xb5fc, 0xb5fa, 0xe048, 0xb8df, 0xb8da,
+ 0xb8d5, 0x9ffd, 0xb8e5, 0xb8d6, 0xb8d2, 0xb8e1, 0xb8de, 0xb8e0,
+ 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050, 0xe04d, 0xe045, 0xe04a,
+ 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0xa058, 0xe047, 0xe04f, 0xe04b,
+ 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, 0xe44c, 0xbb78, 0xbb7b,
+ 0xe44e, 0x8fd6, 0xbba5, 0xe44d, 0xbb7d, 0x99d8, 0xbdcf, 0xe44f,
+ 0xbba4, 0xe44b, 0xbba6, 0x8fd3, 0xbb79, 0xb8db, 0xbb7c, 0xbb7a,
+ 0xbb7e, 0xbba2, 0xbb77, 0xbba7, 0xbba3, 0x8fe5, 0xbba1, 0xe44a,
+ 0x8fe9, 0xbdd6, 0xbdd2, 0x99d9, 0xbdd9, 0xe7d6, 0xbdda, 0xe7e2,
+ 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd, 0xbdd5, 0xe7de, 0xbdd4, 0xe7e1,
+ 0xbdce, 0xe7df, 0xe7d5, 0xbdcd, 0xebaa, 0xbdd3, 0xbdd0, 0xbdd8,
+ 0xe7d4, 0xe7d8, 0xbdcc, 0xe7d7, 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc,
+ 0xe7e0, 0xe7e4, 0x927c, 0xbddb, 0xbfd2, 0xeba5, 0xebab, 0xeba8,
+ 0xeb7e, 0xebac, 0xeba1, 0xeba7, 0xbfcd, 0xbfd3, 0xebad, 0x9c45,
+ 0xbfcf, 0xbfd9, 0xbfd4, 0xebaf, 0xeba9, 0xbfd0, 0xeba2, 0xbfda,
+ 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, 0xbdd1, 0xbfce, 0xebb0, 0xbfdc,
+ 0xbfd5, 0xebae, 0xbfd1, 0xbfd6, 0xbfd7, 0xc1c3, 0xeea4, 0xeead,
+ 0xeeaa, 0xeeac, 0xc1c0, 0xeea5, 0x8fde, 0xeeab, 0xc1bc, 0xeea7,
+ 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2, 0xc1bd,
+ 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e, 0x8fdf,
+ 0xc1c1, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, 0xc2d3,
+ 0xf0da, 0xc2d6, 0xc2d5, 0xa04b, 0xf0e9, 0xf0e1, 0xf0de, 0xf0e4,
+ 0xf0dd, 0xf0df, 0xf0e8, 0xf0e6, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2,
+ 0xf0ec, 0xf0e3, 0x8fe2, 0xf2f9, 0xc3cf, 0xf341, 0xa0cc, 0xf64f,
+ 0xc3d6, 0xf0e0, 0xf2f7, 0xc3d2, 0xf2f8, 0xf2fd, 0x8fe3, 0x8fe4,
+ 0xc3d4, 0xc3d5, 0xf2f6, 0xf340, 0xf342, 0xf2fa, 0xf2fc, 0xf2fe,
+ 0xf2fb, 0xf343, 0xc3d1, 0xc3d7, 0xc3d3, 0xc3d0, 0xf4d0, 0x9bc4,
+ 0xc4b7, 0xf4ce, 0x9bfc, 0xf4d2, 0xf4d3, 0xc4b5, 0xf4d4, 0xf4d1,
+ 0x964c, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0xc4b6, 0xc4b3, 0xc4fe,
+ 0xc540, 0xf64e, 0xf64d, 0xf650, 0xf651, 0xc541, 0xf756, 0xf75b,
+ 0xc5aa, 0x9af6, 0xf758, 0x8cae, 0xf757, 0xf75a, 0xf759, 0xf843,
+ 0xc5dc, 0xf842, 0xf840, 0xf841, 0x8fe7, 0xc5fe, 0xc5fd, 0xf8c1,
+ 0xf8c2, 0xc640, 0xf94d, 0xf94e, 0xc667, 0x8fe8, 0xc66d, 0xf9a9,
+ 0xf9c8, 0x8be7, 0x897a, 0x897b, 0xa8a6, 0xd7cd, 0xd7ce, 0xe052,
+ 0xe450, 0xe7e5, 0xc1c6, 0xc1c5, 0xf0ee, 0xf344, 0xf844, 0xa8a7,
+ 0xd3de, 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6, 0xbddd,
+ 0xeeb1, 0xc2d7, 0x99da, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, 0xb362,
+ 0xd7cf, 0xd7d0, 0xdbe5, 0xb648, 0xb8e6, 0xe056, 0xe055, 0xe057,
+ 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0xeeb5, 0xeeb2,
+ 0xeeb4, 0xeeb3, 0xc1c7, 0xf0ef, 0xf346, 0xf345, 0xcba4, 0xb05c,
+ 0xb05b, 0xd3e0, 0xd7d1, 0xdbe7, 0xdbe6, 0xb649, 0xe059, 0xe05a,
+ 0xe058, 0xb8e8, 0xb8e7, 0xbbaa, 0xbba9, 0xe7e7, 0xebb3, 0xebb1,
+ 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0xf0f2, 0xf0f1, 0xf0f0, 0xf347,
+ 0x8fed, 0xf9aa, 0xa8a9, 0xad73, 0x95c0, 0xad74, 0xb05d, 0xb05e,
+ 0xd3e2, 0xd3e1, 0xd7d2, 0xb368, 0xb366, 0xb363, 0xb367, 0xb365,
+ 0xb364, 0xa0cb, 0xb64a, 0xdbea, 0xb8ed, 0xb64c, 0xb651, 0xdbec,
+ 0xb653, 0xb652, 0xb655, 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d,
+ 0xdbe9, 0xb654, 0xb650, 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0,
+ 0xb8ea, 0xb8eb, 0xb8e9, 0xe05b, 0x9e48, 0xe454, 0xbbac, 0xbbad,
+ 0xbbab, 0x99db, 0xe453, 0x8ff3, 0xe455, 0xe7ea, 0xe7ec, 0x8ff9,
+ 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, 0xbddf, 0xbde9, 0xbde5, 0xbde6,
+ 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, 0xe7eb, 0x95c1, 0xbde8, 0xa04e,
+ 0xbde3, 0xbde4, 0xebb5, 0xebb7, 0xebb6, 0x99dc, 0xebb8, 0xbfe0,
+ 0xebb4, 0xa064, 0xc1cb, 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9,
+ 0xf0f3, 0xf0f6, 0xf0f5, 0x8ff7, 0xf0f4, 0xc2d8, 0xf348, 0xf349,
+ 0xc3d8, 0xf34a, 0xc3d9, 0x89b0, 0xa048, 0xc4ba, 0xc4b9, 0xf652,
+ 0x8ffb, 0x8ff6, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, 0x9ddc,
+ 0xf845, 0xc642, 0x99dd, 0x8be8, 0xa8aa, 0xb36a, 0xb369, 0xe05c,
+ 0xe05d, 0xbbae, 0xebb9, 0xbdea, 0xebba, 0xeeb9, 0xa8ab, 0xd0b2,
+ 0xad76, 0xad75, 0xd3e3, 0xb05f, 0xd3e4, 0xd7d5, 0x92c1, 0xd7d4,
+ 0xd7d3, 0xdbee, 0xb658, 0x9fd6, 0xdbed, 0xb657, 0xdbef, 0xb656,
+ 0xe05f, 0xe062, 0xe060, 0xe061, 0xe065, 0xe05e, 0xe066, 0xe063,
+ 0xe064, 0xbbb0, 0xe456, 0xbbaf, 0xe7f2, 0xe7f0, 0xbdeb, 0xe7ef,
+ 0xe7f1, 0xbdec, 0xebbb, 0xa0d2, 0xebbc, 0xc1cd, 0x9040, 0xf34c,
+ 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, 0xf96f, 0xa8ac, 0xad77,
+ 0xd3e5, 0xd3e7, 0xd3e6, 0xd7d8, 0xb36c, 0xd7d6, 0xb36b, 0xd7d9,
+ 0x8ac4, 0xd7da, 0xd7d7, 0x99e0, 0xdbfb, 0xb660, 0xdbf3, 0xdbf9,
+ 0xb65b, 0xb65e, 0xdbf2, 0xb659, 0xdbf6, 0xe06c, 0xb65d, 0xdbf1,
+ 0x9ff0, 0xdbf7, 0xdbf4, 0xdbfa, 0xdbf0, 0xdbf8, 0xb65c, 0xb65f,
+ 0xdbf5, 0xb65a, 0xb8f2, 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8,
+ 0xb8f9, 0xe070, 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0xe06b,
+ 0xb8f4, 0xe067, 0xe06a, 0xe071, 0xb8f5, 0xe073, 0xb8f6, 0xbbb1,
+ 0xe45b, 0xe461, 0xe459, 0xe462, 0x9ff3, 0xe458, 0xe45d, 0xe463,
+ 0xe460, 0xe45f, 0xe45e, 0xe457, 0xe45c, 0xe45a, 0x9dbf, 0xbdf1,
+ 0xbdee, 0xe7fb, 0xe841, 0xe843, 0xe840, 0xe7f8, 0xe7fa, 0xe845,
+ 0xe842, 0xe7fc, 0xe846, 0xe7f9, 0xe844, 0xbdef, 0xbdf5, 0xbdf3,
+ 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4, 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe,
+ 0x9ff6, 0xbdf2, 0x95c8, 0xbded, 0x9e5a, 0xe7f7, 0xebc6, 0xbfe2,
+ 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0xebbf, 0xbfe5, 0x99e3, 0xebc3,
+ 0xebc4, 0xebbe, 0xebc7, 0xebc0, 0xebc5, 0xbfe4, 0xbfe1, 0xebc1,
+ 0x8a4a, 0xeebf, 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb,
+ 0xeeba, 0x9ff1, 0xeebd, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa,
+ 0xc2d9, 0xf141, 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, 0xf0f9,
+ 0xf142, 0xf0f8, 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, 0x8aa7,
+ 0xf144, 0xf352, 0xc3de, 0xf34f, 0xf353, 0x99e6, 0xc3db, 0xf351,
+ 0xc3e0, 0x9ff7, 0xc3dd, 0x9fed, 0xf350, 0xc3df, 0xf354, 0xc3da,
+ 0x8a5c, 0x9dae, 0xc4bc, 0xc4be, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc,
+ 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0xf761,
+ 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, 0xf846,
+ 0xf75f, 0xf8c6, 0xf8c3, 0xf8c4, 0xf8c5, 0xc65c, 0xf951, 0xf950,
+ 0xf94f, 0xf970, 0x95c9, 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060,
+ 0x9048, 0x99e8, 0xb8fa, 0x9049, 0x8cba, 0xbdf6, 0x90b1, 0xebc8,
+ 0xc2df, 0xf355, 0x904a, 0xf9ac, 0xa8ae, 0xaaee, 0xad79, 0xad78,
+ 0x99ea, 0xb063, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0xd7df, 0xd7db,
+ 0x9bd1, 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, 0xd7e0, 0xd7e1,
+ 0x99eb, 0x99ec, 0xdc43, 0xdc41, 0xdc45, 0xdc46, 0xdc4c, 0xdc48,
+ 0xdc4a, 0x99ed, 0xdc42, 0xdbfc, 0xdc49, 0x99ee, 0xdc4b, 0xdc44,
+ 0xdc47, 0xdbfd, 0xb662, 0xdc40, 0xdbfe, 0xb661, 0xb663, 0xb8fd,
+ 0xe075, 0xe077, 0xe076, 0xe07b, 0xb8fb, 0xe078, 0xe074, 0xe079,
+ 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0xe467, 0xe466, 0xe464, 0xe465,
+ 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d, 0xe84e, 0xe849, 0x904c,
+ 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9, 0xe84b, 0xe84c,
+ 0xe848, 0xbe40, 0xbdfb, 0xbdfa, 0xbdfc, 0xe847, 0x904d, 0xebca,
+ 0xbfe8, 0x95cb, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce,
+ 0xbfe9, 0xebcd, 0xbfe7, 0xc1d3, 0xc1d6, 0xeec1, 0x97e2, 0xc1d4,
+ 0xeec0, 0xc1d2, 0xc1d5, 0xf146, 0xf147, 0xf148, 0xc2e0, 0x95cc,
+ 0xf149, 0xc2e1, 0xc3e2, 0xf358, 0xf359, 0xf357, 0xf356, 0xf35a,
+ 0xc3e1, 0xf4dd, 0xf4db, 0xf4dc, 0xf4de, 0xf4da, 0xf4df, 0xf658,
+ 0x9f78, 0xf659, 0xf657, 0xc546, 0xf764, 0xc5af, 0xf765, 0xf848,
+ 0xf847, 0x897c, 0x897d, 0x897e, 0x995d, 0xa8af, 0xb664, 0xb940,
+ 0x9b5a, 0xbbb6, 0x9050, 0xbfec, 0x8c4f, 0xbfeb, 0xc3e3, 0xc47c,
+ 0xc547, 0xa8b0, 0xb064, 0xb941, 0x9054, 0xf35b, 0xc6d6, 0x9aa8,
+ 0x99ef, 0xfeeb, 0x9da3, 0x9da1, 0x9943, 0x9945, 0x9d7d, 0xcba6,
+ 0x99f0, 0xa8b1, 0xa8b4, 0xa8b3, 0xa8b2, 0xcba5, 0x99f1, 0xcdcd,
+ 0x99f2, 0xcdcf, 0xaaef, 0x8cbc, 0x9d60, 0xaaf1, 0xcdcc, 0xcdce,
+ 0xaaf0, 0xcdd1, 0xcdd0, 0xcdd2, 0xa0a3, 0xd0b6, 0xd0b4, 0xad7c,
+ 0xd0b3, 0xada3, 0xad7e, 0xad7b, 0xada4, 0xad7d, 0xada2, 0xada1,
+ 0xd0b5, 0xad7a, 0xb06a, 0xd3eb, 0xd3f1, 0xb067, 0xb06e, 0x905b,
+ 0xb069, 0xd3ee, 0xd3f0, 0xb06c, 0xd3ea, 0xd3ed, 0xb068, 0xb065,
+ 0xd3ec, 0xb06b, 0xd3ef, 0xb06d, 0xb066, 0x9edb, 0xd7e3, 0xd7e6,
+ 0xb370, 0xb37a, 0xb376, 0xd7e4, 0x9d79, 0xb37e, 0xb377, 0xb37c,
+ 0xb372, 0xb36f, 0xb371, 0xb37d, 0xd7e5, 0xb375, 0xb378, 0xb374,
+ 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2, 0xdc4d, 0xb665, 0xdc4f,
+ 0xb667, 0xb669, 0x99f3, 0xdc4e, 0xb666, 0xb66a, 0x9062, 0xb668,
+ 0xb947, 0xe0a3, 0xb94f, 0xe07e, 0xb950, 0xb945, 0xe0a1, 0xb94a,
+ 0xe0a2, 0xb943, 0xb942, 0x9f55, 0xb94d, 0xb94c, 0xb94b, 0xb949,
+ 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0x9bf9, 0xbbb8, 0xbbbb,
+ 0xbbbf, 0xbbb9, 0xbbbe, 0xbbbc, 0xbbb7, 0x9065, 0xbbbd, 0xbbba,
+ 0x96e0, 0xe852, 0xbe43, 0xbe41, 0xe853, 0x98be, 0xbe44, 0xbe42,
+ 0xe851, 0xe850, 0xbff0, 0xe84f, 0xbfee, 0xbfed, 0xebd0, 0xbe45,
+ 0xbfef, 0xebd1, 0xbff2, 0xebd2, 0xbff1, 0xc1d8, 0xeec3, 0xc1d7,
+ 0xc1dc, 0xc1da, 0xc1db, 0xc2e3, 0xc1d9, 0xeec2, 0xebd3, 0xc2e2,
+ 0xc2e4, 0xc3e4, 0xc3e5, 0xf4e0, 0xc5de, 0xc5dd, 0xa8b6, 0xca55,
+ 0xb06f, 0xca52, 0xca53, 0xca51, 0xca54, 0xcbaa, 0xcba7, 0xcbac,
+ 0xcba8, 0xa8b7, 0xa8ba, 0xcba9, 0xa8b9, 0xcbab, 0x9068, 0xa8b8,
+ 0x906c, 0xcdd5, 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6, 0xcdd4, 0xaaf2,
+ 0xaaf5, 0xaaf3, 0x95d8, 0xd0b8, 0xd0bc, 0xd0b9, 0xada7, 0xada8,
+ 0x906a, 0xd0bb, 0xd0bd, 0xd0bf, 0xada5, 0xd0be, 0xada6, 0xd7ee,
+ 0xd0ba, 0xd3f2, 0xd3fb, 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc,
+ 0xb071, 0xd3f7, 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8,
+ 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0xd7e8, 0xd7ea,
+ 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0xdc56, 0xebd4, 0xdc57,
+ 0xdc54, 0xb3a3, 0xb66e, 0xdc53, 0xdc59, 0xdc58, 0xb66b, 0xdc5c,
+ 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, 0xdc55, 0xb66d, 0xe0aa, 0xe0a5,
+ 0xe0ab, 0xe0a6, 0xe0a4, 0xe0a7, 0xb951, 0xe0a9, 0xe0a8, 0xb952,
+ 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c,
+ 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0xe859, 0xbe48, 0xf14a,
+ 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, 0xbe46,
+ 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0xeec4, 0xc1dd,
+ 0xf14b, 0xf14c, 0xf14d, 0xf35d, 0xf35c, 0xf4e2, 0xf4e1, 0xf65b,
+ 0xf65c, 0xf65a, 0xf766, 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075,
+ 0xb074, 0xd440, 0xd441, 0xd3fe, 0x9fb2, 0xb073, 0xd7f5, 0xd7f6,
+ 0xd7f2, 0xb3a4, 0xd7f3, 0x9fae, 0xd7f4, 0x9fb0, 0x89ad, 0xdc5f,
+ 0xdc61, 0xdc5d, 0xdc60, 0xb66f, 0xdc5e, 0xb670, 0x906e, 0xdd73,
+ 0xb955, 0xb954, 0xb953, 0xe0ac, 0xe0ad, 0x9e71, 0xe473, 0xe475,
+ 0xbbc6, 0xbbc3, 0x9e4a, 0xbbc5, 0xbbc4, 0xe474, 0xe472, 0x9fdc,
+ 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a,
+ 0xbe4b, 0xe85d, 0xbe4c, 0x89ab, 0xebdb, 0x9fb8, 0xebdc, 0xebd9,
+ 0xebda, 0xbff4, 0xebd8, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb,
+ 0xc1df, 0xeec9, 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0xf14f, 0xf150,
+ 0xf14e, 0x9070, 0xf152, 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151,
+ 0xf35e, 0xc3e6, 0xf4e5, 0xf4e6, 0xc4bf, 0xf4e4, 0x8b63, 0xf4e3,
+ 0xf65d, 0xc548, 0x95dc, 0xf849, 0xf8c8, 0xf8c7, 0xc643, 0xc65d,
+ 0xf8c9, 0xf971, 0x9071, 0xc66f, 0xa8bc, 0xaaf6, 0xb956, 0xc4c0,
+ 0xa8bd, 0xadab, 0xb3a5, 0xb671, 0xc2e7, 0xaaf7, 0xd0c1, 0xd0c0,
+ 0xd442, 0xfc5e, 0xb078, 0xb076, 0xb07a, 0xd444, 0xb079, 0xb077,
+ 0x8949, 0xd443, 0xb3a8, 0xd7fc, 0x965b, 0xb3a7, 0xb3a9, 0xd842,
+ 0xb3ab, 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0xd7f9, 0xd7fa,
+ 0xd7f8, 0xb3a6, 0x8c50, 0xd841, 0xd7fb, 0xd7fd, 0x94a6, 0xdc6d,
+ 0x8fd5, 0xdc6c, 0xdc6a, 0xdc62, 0xdc71, 0xdc65, 0xdc6f, 0xdc76,
+ 0xdc6e, 0xb679, 0x9e73, 0xb675, 0xdc63, 0xdc69, 0xb677, 0x9075,
+ 0xdc68, 0xb678, 0xb67a, 0xdc6b, 0x99f7, 0xb672, 0xb673, 0xdc77,
+ 0xdc75, 0xdc74, 0xdc66, 0xdc72, 0xb676, 0x8cbf, 0xb674, 0xdc73,
+ 0xdc64, 0xdc67, 0xdc70, 0x99f9, 0x9663, 0x95b9, 0xe4ba, 0xe0b7,
+ 0xe0b0, 0xe0c3, 0xe0cc, 0xe0b3, 0xb961, 0x94d4, 0xe0c0, 0xb957,
+ 0xb959, 0xb965, 0xe0b1, 0xfcfa, 0xb95a, 0xb95c, 0xb966, 0xb95b,
+ 0x9077, 0x90ab, 0xb964, 0xe0b9, 0xe0ae, 0xb962, 0xe0b8, 0xb95e,
+ 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, 0xe0c6, 0xb960, 0xe0af, 0xe0c9,
+ 0xe0c4, 0x9d4d, 0xe0cb, 0xb958, 0x99fa, 0xb967, 0xb95d, 0x92e3,
+ 0xe0b5, 0x97bb, 0xe0bd, 0xe0c1, 0x9078, 0xe0c5, 0xb95f, 0xe0b4,
+ 0xe0b2, 0xe0be, 0x99fb, 0xe0bb, 0xe0ba, 0x97e0, 0xe0bf, 0xe0c2,
+ 0xe0c7, 0xe478, 0x96dc, 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc, 0xbbd0,
+ 0xe4ad, 0xe4b5, 0xe4a6, 0xbbc8, 0x9ca8, 0xe4aa, 0xe0b6, 0x9772,
+ 0xbbc9, 0xe4b1, 0xe4b6, 0xe4ae, 0x9440, 0xe4b0, 0xe4b9, 0xe4b2,
+ 0xe47e, 0xe4a9, 0x92f2, 0xbbd1, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb,
+ 0xe4a5, 0xbbca, 0xe4b3, 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0xe47b,
+ 0xe4af, 0xe4ac, 0xe4a7, 0xe477, 0xe476, 0xe4a1, 0xe4b4, 0xbbcf,
+ 0xe4b7, 0xe47d, 0xe4a3, 0xbe52, 0x99fd, 0x99fc, 0xbe5a, 0xbe55,
+ 0xe8a4, 0xe8a1, 0xe867, 0xbe50, 0xf9d7, 0x964a, 0xbe4f, 0xbe56,
+ 0x96d8, 0x99fe, 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e,
+ 0xe8a3, 0xbe58, 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877,
+ 0xe875, 0xe868, 0xe862, 0xe87d, 0xbe57, 0xe87e, 0x904b, 0xe878,
+ 0xe86d, 0xe86b, 0xe866, 0xfa41, 0xe86e, 0xe87b, 0xe86a, 0xe87a,
+ 0xe8a2, 0x9a40, 0xbe53, 0x975b, 0xe876, 0xe87c, 0xe872, 0xe86c,
+ 0xbe51, 0x9a41, 0x91dd, 0xe4a8, 0xe870, 0xbe59, 0xe869, 0x93fc,
+ 0x9a42, 0x9a43, 0x9659, 0xebf4, 0xbff7, 0xebf3, 0xebf0, 0xec44,
+ 0xbffb, 0x9a44, 0xec41, 0xebf8, 0xec43, 0xebe9, 0xebf6, 0x9051,
+ 0xbffd, 0xebe1, 0x94bf, 0xebdf, 0xec42, 0xec40, 0xebfe, 0xebed,
+ 0xebec, 0xebe2, 0xc040, 0xebe8, 0xebf2, 0xebfd, 0xc043, 0xec45,
+ 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0xebef, 0xebde, 0xebe0, 0xbff5,
+ 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041, 0xebdd, 0xc1e3,
+ 0xebf9, 0xebfc, 0xbffc, 0x90a2, 0xebeb, 0xc044, 0xbff9, 0x9cab,
+ 0x9776, 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0xebe4, 0xebfa, 0xebe5,
+ 0xfc55, 0xfe45, 0x94a8, 0x9a45, 0xfa4b, 0x9de1, 0xebea, 0xeed2,
+ 0x96d9, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3,
+ 0xeed8, 0xeed9, 0xeee2, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, 0xeed4,
+ 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0xeee8, 0x9774, 0xeeda, 0xeee7,
+ 0xfdf5, 0xeee9, 0xeed0, 0xc1e6, 0x92e5, 0xeeea, 0x9645, 0x91da,
+ 0xeede, 0x90a3, 0xc1ea, 0xeedb, 0xa05f, 0xc1ec, 0xeee4, 0x90af,
+ 0x97bf, 0xc1e4, 0xeed6, 0xeee5, 0x914c, 0xeedf, 0xebe3, 0xeee6,
+ 0xeed3, 0x967a, 0xc1e9, 0xeeeb, 0x91de, 0xc1e2, 0xeece, 0x9a46,
+ 0xfeb0, 0x9779, 0x946c, 0xf160, 0xf159, 0xc2e9, 0xf154, 0xf163,
+ 0xf15b, 0xeedc, 0x9858, 0xf165, 0xf155, 0xc2e8, 0xf15f, 0xc2ea,
+ 0xc2f2, 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0x9266, 0xf158, 0xf15d,
+ 0xf162, 0x93fb, 0xeecd, 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e,
+ 0xf15a, 0xf168, 0xf36a, 0xf15c, 0xc2ee, 0x9a47, 0xc2ed, 0xeecf,
+ 0xc2ef, 0xf164, 0xf166, 0xc2ec, 0xf169, 0xf153, 0xf156, 0x9749,
+ 0x9748, 0x934a, 0x9ce2, 0xf373, 0xf363, 0xc3eb, 0xf371, 0x9264,
+ 0xf361, 0xc3ec, 0xf36c, 0x91df, 0xf368, 0xc3f1, 0xf372, 0xf362,
+ 0xf365, 0xc3e9, 0xf374, 0xfb79, 0xf36d, 0xf370, 0xc3ef, 0xc3f4,
+ 0xc3f2, 0xf369, 0xf364, 0x96d7, 0xc3ed, 0xc3ee, 0xf360, 0xc3ea,
+ 0x9343, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3, 0xf36b, 0xf375, 0xc3f5,
+ 0xf367, 0xf36e, 0xfdcb, 0xfe7a, 0x91db, 0x8c6a, 0xf4f3, 0xf542,
+ 0xf4f5, 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed,
+ 0xf4fe, 0xf4f4, 0x97af, 0xc4c2, 0x95dd, 0xf544, 0xf4f6, 0x9348,
+ 0xf4fb, 0xf4fd, 0xf4e7, 0xf541, 0xf4f2, 0xf4f7, 0xf4eb, 0xf4ef,
+ 0xf543, 0xf4f9, 0xf4e8, 0xf4ec, 0xf4ee, 0xf4f8, 0x9a4b, 0xc4c1,
+ 0xf4f1, 0xfc45, 0x9a4d, 0xf4ea, 0x91bc, 0x90e2, 0x90b4, 0x95e1,
+ 0xf4f0, 0xf661, 0xf666, 0xc54f, 0xf668, 0x9a4e, 0xc549, 0xf664,
+ 0xf66a, 0xc54e, 0xc54a, 0xc54b, 0xf660, 0xf667, 0xc54d, 0xf665,
+ 0xc54c, 0xf65f, 0xf663, 0xf662, 0x9a4f, 0xf65e, 0xf669, 0xfe40,
+ 0xfe43, 0xc5b1, 0xf76d, 0xf770, 0xf76c, 0xf76e, 0xf76f, 0xf769,
+ 0xf76a, 0xf767, 0x96dd, 0xf76b, 0xf768, 0xc5b2, 0xc5b3, 0x9a51,
+ 0xf84b, 0xf84d, 0x96a7, 0x90b0, 0xf84c, 0xf84e, 0xc5e0, 0xf84a,
+ 0xc5df, 0xc5e1, 0x9c4e, 0x9443, 0xf8cb, 0xf8cc, 0xc644, 0xf8ca,
+ 0x8eba, 0xf953, 0xf952, 0xf954, 0xc65f, 0xf955, 0xc65e, 0xf956,
+ 0xf972, 0xf975, 0xf974, 0xc668, 0xf973, 0x9a52, 0xfcc1, 0xc672,
+ 0xc670, 0xc671, 0xc677, 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0x8be9,
+ 0x9caf, 0x8bfd, 0x9abc, 0x9ab8, 0x9aae, 0x9aa7, 0x9a53, 0x9d74,
+ 0xaaf8, 0x8bea, 0xd844, 0xdc78, 0xe8a5, 0xf376, 0x8beb, 0xaaf9,
+ 0xadac, 0xb07b, 0x90b2, 0xd845, 0xd846, 0xb3ac, 0xb67d, 0xdc7a,
+ 0xdc79, 0xb6a3, 0xb67c, 0xdc7b, 0xb67e, 0xb6a2, 0xb6a1, 0xb67b,
+ 0x95e9, 0x95e8, 0xb968, 0x95e6, 0xe0d0, 0xe0ce, 0xe0cf, 0xe0cd,
+ 0x90b5, 0xbbd2, 0x9a54, 0xbbd5, 0xbbd7, 0xbbd6, 0x90b3, 0x95e7,
+ 0xbbd3, 0xbbd4, 0x8b50, 0xe8a7, 0xe8a6, 0xbe5b, 0xe8a8, 0xe8a9,
+ 0xbe5c, 0xec4d, 0xec4b, 0xeef3, 0xec49, 0xec4a, 0xc046, 0xec46,
+ 0xec4e, 0xec48, 0xec4c, 0xeeef, 0xeef1, 0xeef2, 0xc1f3, 0xeeee,
+ 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0, 0xc1f1, 0xec47, 0xc2f5, 0xf16e,
+ 0xf16c, 0xf16d, 0xc2f3, 0xc2f6, 0xc2f4, 0xf377, 0xf378, 0xc3f6,
+ 0xf545, 0xf547, 0xf546, 0xc4c4, 0xc550, 0xf66d, 0xf66c, 0xf66b,
+ 0x8bec, 0x9a56, 0xaafa, 0x8bfb, 0xc9aa, 0xca58, 0xa6e9, 0xca56,
+ 0xca59, 0xca57, 0xcbae, 0xa8c1, 0xa8c2, 0xcbb0, 0xa8bf, 0xcbaf,
+ 0xcbad, 0xa8c0, 0xa8be, 0x9a57, 0xa0aa, 0xcdd8, 0xcddb, 0xaafd,
+ 0xcdda, 0xcdd9, 0xaafc, 0xaafb, 0x9fa6, 0xab40, 0xcddc, 0xaafe,
+ 0x99cc, 0xd0c6, 0xadae, 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, 0xadad,
+ 0xd0c4, 0xd0c5, 0xd0c2, 0x9c59, 0xb0a4, 0xb0a1, 0xd445, 0xb0a2,
+ 0xb0a5, 0xd446, 0xb07e, 0xb07c, 0xb07d, 0xb0a3, 0x99b5, 0xb3ad,
+ 0xd849, 0xb3b5, 0xd848, 0xd84b, 0xb3b1, 0xd84a, 0xb6ab, 0xb3af,
+ 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, 0xb3b0, 0x90be, 0xd847, 0xb6a7,
+ 0xdc7d, 0xdca3, 0x9faf, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9, 0xdc7c,
+ 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0xb6aa, 0xb6a5, 0x95f2, 0xe0d3,
+ 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0x90bf, 0xe0d4, 0xb969, 0xbbd8,
+ 0xbbda, 0xbbd9, 0xe4bb, 0xe4bc, 0xe8ab, 0x90c1, 0xe8aa, 0xfee4,
+ 0xc047, 0xc048, 0xec4f, 0xc049, 0xeef6, 0xeef4, 0xeef5, 0xc1f4,
+ 0xf16f, 0xc3f7, 0x90c4, 0xc1f5, 0xab41, 0xb0a6, 0xd447, 0x90c7,
+ 0xd84c, 0xb3b6, 0xb6ad, 0xdca4, 0xdca6, 0xb6af, 0xb6ae, 0xb6b0,
+ 0xb6b1, 0xdca5, 0xb96e, 0xb96f, 0xb96d, 0xbbdb, 0xb96c, 0xe0d5,
+ 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6, 0xf170, 0xf174, 0xc2f9,
+ 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb, 0xf173, 0xf379, 0xc2f7,
+ 0xc3f8, 0xf8cd, 0xab42, 0xb3b8, 0xb3b7, 0xb6b2, 0xdca8, 0xdca7,
+ 0xb6b3, 0x92e4, 0xe0d9, 0xb973, 0xb970, 0xe0d8, 0xb972, 0xe0d6,
+ 0xb971, 0xe0d7, 0xe4bd, 0xbbdd, 0xe8af, 0x9f52, 0xbe5d, 0xe8ad,
+ 0xbe5e, 0xbe5f, 0xe8ae, 0xbe60, 0xec51, 0xc04e, 0xc04b, 0xc050,
+ 0xec53, 0xc04c, 0xec52, 0xc04f, 0xc04d, 0xeef9, 0xeefb, 0x90db,
+ 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, 0xeef7, 0xa066, 0xf177, 0xf176,
+ 0xc2fc, 0xf178, 0xf37e, 0xc3fa, 0xf37d, 0xf37a, 0xc3f9, 0xf37b,
+ 0xf37c, 0xf548, 0xf549, 0xc4c5, 0x90d2, 0xc553, 0xf66e, 0x90d4,
+ 0xc551, 0xc552, 0xf66f, 0xc5b4, 0xc5b5, 0xf771, 0x9a5b, 0x95fd,
+ 0xc645, 0xf8cf, 0xc647, 0xf8ce, 0xf8d0, 0xc646, 0xf957, 0xf9ad,
+ 0x8bc4, 0xab43, 0x8c66, 0xb974, 0x90de, 0xe4be, 0xe8b0, 0xc051,
+ 0xc052, 0x9ce4, 0xab44, 0x90e1, 0xbe61, 0xc3fb, 0xadb1, 0xc053,
+ 0xc5e2, 0xadb2, 0xd84d, 0xdca9, 0x9e46, 0xdcab, 0xdcaa, 0x9651,
+ 0xe0dd, 0xe0da, 0xb975, 0xb976, 0xe0db, 0xe0dc, 0xe4c0, 0xe4c5,
+ 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8, 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2,
+ 0xe4c6, 0xbbdf, 0xfb58, 0xe8b3, 0x90e6, 0xe8b1, 0xbe63, 0xbe62,
+ 0xe8b2, 0xbe64, 0xec56, 0xec55, 0xc054, 0xec54, 0xeefc, 0x9650,
+ 0xeefe, 0xef41, 0xef40, 0x90e7, 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd,
+ 0xf17d, 0xf1a2, 0xc2fe, 0xf17b, 0xf17e, 0xf17c, 0xf179, 0xc340,
+ 0xf17a, 0x90e8, 0x9a5d, 0xf3a1, 0x9f7a, 0xf3a3, 0xf3a2, 0x9b5c,
+ 0xf54a, 0x9f7c, 0xf54b, 0xfc52, 0x90e9, 0xf670, 0x90ea, 0xc5b7,
+ 0x9a5e, 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, 0x9f76, 0xc669,
+ 0xadb3, 0xb6b4, 0xe4ca, 0xe4c9, 0xe8b5, 0xe8b4, 0x90eb, 0xc1fa,
+ 0xef43, 0xef42, 0xf1a5, 0xf1a3, 0xf1a6, 0xf1a4, 0xc3fc, 0xf3a4,
+ 0xf3a5, 0xf3a6, 0x90ec, 0xf671, 0xf772, 0xf8d2, 0x8bee, 0xadb4,
+ 0x90ee, 0xec57, 0xef44, 0x91c6, 0xadb5, 0x90f2, 0xbbe0, 0xec58,
+ 0xc341, 0xf1a7, 0xc3fd, 0xf54c, 0xf54d, 0xc554, 0xf851, 0xadb6,
+ 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, 0xb6b7, 0xb97a,
+ 0xb97c, 0xe0df, 0xe0e0, 0xe0de, 0xb977, 0xb978, 0xb97b, 0xb979,
+ 0xfcbc, 0x8a74, 0xe4cb, 0xbbe1, 0xbbe2, 0xe8bc, 0xbe67, 0xe8b7,
+ 0xe8b6, 0x9657, 0xe8bb, 0xbe65, 0x9cef, 0xc05b, 0xe8b8, 0xe8bd,
+ 0xe8ba, 0xe8b9, 0xbe66, 0xc059, 0x9fdf, 0xec5a, 0xc055, 0xec5b,
+ 0x90f7, 0x90f6, 0xec59, 0xc058, 0xc056, 0xc05a, 0xc057, 0xef45,
+ 0xef4a, 0xef46, 0xef49, 0xc1fb, 0x9b5e, 0xedd4, 0xef48, 0xef47,
+ 0x90f8, 0xc344, 0xc342, 0xc345, 0xc343, 0xf1a8, 0xf1a9, 0xf1aa,
+ 0xc346, 0xf3aa, 0xc440, 0xf3a8, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe,
+ 0xf551, 0xf54e, 0xf54f, 0xf550, 0xf672, 0xc556, 0x90f9, 0xc555,
+ 0x8cc9, 0xf774, 0xf773, 0xc5b8, 0xfa6a, 0xc5e3, 0xc649, 0xc660,
+ 0xf958, 0xf9ae, 0xf9af, 0x8bef, 0xadb7, 0xdcad, 0xe0e1, 0xe4cc,
+ 0xe4cd, 0xbbe3, 0xbbe4, 0xe8be, 0xbe68, 0x9fe0, 0xc1fc, 0x9142,
+ 0xf1ab, 0x9a62, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab,
+ 0xf675, 0xf552, 0xf553, 0x9569, 0xc4c6, 0xf674, 0x9144, 0x9143,
+ 0xf673, 0x9141, 0xf775, 0xf9b0, 0x8bf0, 0xadb8, 0x9660, 0x8bf1,
+ 0xadb9, 0x99f6, 0x9149, 0xb0a7, 0xd448, 0xd84f, 0x914a, 0xb6b8,
+ 0xb6bb, 0xb6b9, 0xdcae, 0x914b, 0xb6bd, 0xb6ba, 0x9a64, 0xb6bc,
+ 0xb97e, 0x8abf, 0xe0e2, 0xe0e3, 0xe8c0, 0xb97d, 0xb9a1, 0xb9a2,
+ 0xe4cf, 0xe4ce, 0xbbe5, 0xbbe6, 0xe4d0, 0xe8bf, 0xbbe8, 0xbe69,
+ 0xbbe7, 0x9a66, 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a, 0xe8c2, 0xe8c5,
+ 0xe8c3, 0xe8c4, 0xbe6c, 0x9a67, 0xc061, 0xc05f, 0x9a69, 0xc05e,
+ 0xec5d, 0xc060, 0xec5c, 0xef4b, 0xec5e, 0xc05d, 0xec5f, 0xef4e,
+ 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, 0xef54, 0xef53, 0xef50,
+ 0xef4f, 0xc1fd, 0x9a6a, 0x9652, 0x914d, 0xf1ae, 0x9666, 0xf1ad,
+ 0xc34a, 0xc348, 0xc349, 0x9f7b, 0xf1ac, 0x9a6b, 0xf3b1, 0xc443,
+ 0xf3b0, 0xf3af, 0xc444, 0xa06c, 0xf558, 0xf557, 0x9667, 0xf555,
+ 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557,
+ 0xf676, 0xf556, 0xf777, 0xc5e4, 0x9a6c, 0xc661, 0xf959, 0xf9b1,
+ 0x9a6d, 0x8bf2, 0xadba, 0xd850, 0xef55, 0xadbb, 0x966a, 0xe4d2,
+ 0xe4d1, 0xec60, 0xef57, 0xef56, 0xfcea, 0xc34c, 0xf3b2, 0xf3b3,
+ 0xc4c9, 0x966c, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be, 0xe0e4, 0xe0e6,
+ 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0x91c4, 0xe4d4, 0xe4d6,
+ 0xe4d5, 0x9677, 0xe4d8, 0xbbe9, 0xe4d7, 0xe4d3, 0x99f4, 0x9a6f,
+ 0xe4d9, 0xe8cc, 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, 0xbe6e,
+ 0xbe71, 0xbe73, 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, 0xe8ce,
+ 0xbe74, 0x9fab, 0xbe70, 0xe8c6, 0xbe6d, 0xbe6f, 0x8cbe, 0x8ec1,
+ 0xc063, 0xec66, 0xec64, 0xec63, 0x9555, 0xec69, 0xec68, 0xec67,
+ 0xec62, 0xc062, 0xec61, 0xec65, 0xc064, 0xef5a, 0x9152, 0xef5e,
+ 0xef5b, 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60, 0xef61,
+ 0xc240, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8, 0xf1b7,
+ 0xf1b1, 0xf1b5, 0xf1b0, 0x9153, 0xf1b2, 0xc34d, 0xf1af, 0x9155,
+ 0xf1b4, 0xf3c0, 0xf3b5, 0xc445, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf,
+ 0xf3b7, 0xf3be, 0x955d, 0xf3bb, 0x9671, 0xf3ba, 0xf3bd, 0xf3b8,
+ 0xf3b6, 0x9c6d, 0xf3bc, 0xf560, 0xf55e, 0xc4ca, 0xf55d, 0xf563,
+ 0xf561, 0x9673, 0xc4cb, 0xf55c, 0xf55a, 0xf55b, 0xc4cd, 0xf55f,
+ 0xc4cc, 0xf562, 0xf678, 0xf67e, 0x9154, 0x9a71, 0xf679, 0xc55b,
+ 0xf6a1, 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558, 0xf67a,
+ 0xf77d, 0xf7a1, 0xf77e, 0xf77b, 0xc5bb, 0xf778, 0xf77c, 0xf7a3,
+ 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, 0x9156, 0xf853,
+ 0xc5e5, 0xc5e6, 0x966d, 0xf8d3, 0xc64a, 0xf976, 0xc66a, 0x9557,
+ 0xf9b3, 0xc66b, 0xf9b4, 0xf9b5, 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd,
+ 0x89c6, 0x89c7, 0xb0a9, 0xe0e9, 0xe0e8, 0xbbea, 0xbbeb, 0xe4da,
+ 0x8a6a, 0xe8d2, 0xec6c, 0x8b57, 0xbe75, 0xc065, 0xec6a, 0x9fe1,
+ 0xec6d, 0xc066, 0x9b5f, 0xef64, 0xec6b, 0xf1b9, 0xc34e, 0xf3c1,
+ 0xf566, 0xf564, 0xf565, 0xf6a2, 0xc55c, 0xf7a4, 0xc5ea, 0xc5bc,
+ 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xa05d, 0xb0aa, 0xf1ba, 0xd449,
+ 0x915b, 0xb9a6, 0x915c, 0xe4db, 0xbbec, 0xe4dc, 0xe8d4, 0xe8d3,
+ 0xc068, 0xbe76, 0xbe77, 0xe8d7, 0xe8d6, 0xe8d5, 0x915e, 0xec6e,
+ 0xec71, 0xec70, 0xec6f, 0xc067, 0xef68, 0xef66, 0xef65, 0x9f5c,
+ 0xef67, 0x9f57, 0xc34f, 0xf1bc, 0xf1bd, 0xc350, 0xf1bb, 0x9f65,
+ 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0x9a72, 0xf567, 0xf569,
+ 0xf568, 0x9160, 0xf6a3, 0xf6a6, 0xf6a4, 0xf6a5, 0xf7a5, 0xc5bd,
+ 0xf854, 0xf855, 0xf856, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0xbe78,
+ 0xc069, 0xf1be, 0x9f5e, 0xf7a6, 0x9161, 0xf9c4, 0xd44a, 0xc67b,
+ 0xb0ac, 0xec72, 0x9164, 0xf1bf, 0xf3c6, 0x9f41, 0xf6a7, 0xf7a7,
+ 0xb0ad, 0xe4dd, 0xe4de, 0x9169, 0xbbed, 0xbbee, 0xe8d9, 0xbe7a,
+ 0xbe79, 0xe8d8, 0xef69, 0xf1c0, 0xf1c2, 0xf1c1, 0xc353, 0xc352,
+ 0xc351, 0x9168, 0xc55e, 0xf6a8, 0xc55d, 0xf7a9, 0xf7a8, 0xc64c,
+ 0xf8d5, 0xb3bd, 0xe0ea, 0xe4e1, 0xe4df, 0xe4e0, 0xe8e2, 0xe8dd,
+ 0xe8da, 0xe8e1, 0x9a74, 0xe8e3, 0xbe7c, 0xe8e0, 0xe8dc, 0xe8db,
+ 0xe8df, 0xe8de, 0xbe7b, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77,
+ 0x96b2, 0xec73, 0x9a75, 0xec79, 0xfda5, 0xec74, 0xef72, 0xec75,
+ 0xeca2, 0x9ee9, 0x8bba, 0x916d, 0xa060, 0xec7c, 0xc06a, 0xec7b,
+ 0xec7a, 0xec7e, 0x9fde, 0xef6a, 0xef6d, 0x9fc3, 0xef6c, 0x96b5,
+ 0xef74, 0xef6f, 0xef73, 0xef71, 0xef70, 0xef6e, 0xef6b, 0xc243,
+ 0xc242, 0xc244, 0xc241, 0xef75, 0xa067, 0xf1c8, 0xf1cb, 0xf1c9,
+ 0xf1cd, 0xf1ce, 0xf1c6, 0xc358, 0xf1c7, 0xf1c5, 0xf1cc, 0xf1c4,
+ 0xf1c3, 0xc357, 0xc355, 0xc354, 0x96b3, 0xf1ca, 0xf3cf, 0xf3d5,
+ 0xc44a, 0xf3d0, 0xf3d3, 0xf3d7, 0xc44b, 0xf3d2, 0x9a76, 0xf3ca,
+ 0xf3c9, 0xf3d6, 0xf3cd, 0xf3cb, 0xf3d4, 0xf3cc, 0xc449, 0xc448,
+ 0x95d5, 0xf3c7, 0xf3c8, 0xf3d1, 0x9eca, 0xf3ce, 0x9a77, 0x9a78,
+ 0xf56c, 0xf56f, 0xc356, 0x9170, 0x916f, 0xf56d, 0xf573, 0xf571,
+ 0xf56b, 0xf576, 0x9fa3, 0xf56a, 0x9171, 0xc4cf, 0xf572, 0x96b1,
+ 0xf56e, 0xc4ce, 0xf575, 0x9f63, 0xf574, 0x9f67, 0xf6ab, 0xf6aa,
+ 0x8bb9, 0x9a7a, 0xf6b1, 0xf6ad, 0xf6b0, 0xc560, 0x8b56, 0xf6ae,
+ 0xf6af, 0xf6a9, 0xf6ac, 0xc55f, 0x9ada, 0xc5bf, 0xf7b4, 0xf7af,
+ 0xf7b3, 0x96b0, 0xf7b6, 0xf7b2, 0xf7ae, 0x9a7e, 0xc5c1, 0xf7b1,
+ 0xf7b5, 0xc5c0, 0xf7ac, 0xf570, 0xf7b0, 0xf7ad, 0x9dde, 0xf7aa,
+ 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860, 0x96ad,
+ 0xf859, 0xf857, 0x96ae, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, 0xf858,
+ 0xf85e, 0x9ea1, 0xf8da, 0xc64d, 0xf8db, 0xf8d9, 0xf8d6, 0xf8d8,
+ 0xf8d7, 0xf95a, 0xf95c, 0xf95b, 0xf979, 0x9e50, 0xf978, 0xf977,
+ 0xf97a, 0xc673, 0xc674, 0xf9ca, 0xf9ce, 0x96af, 0x8bf4, 0xb3be,
+ 0xdcaf, 0xe0ed, 0xb9a7, 0xe0eb, 0xe0ec, 0xe4e2, 0xe4e3, 0xbbf1,
+ 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, 0xe8eb, 0xe8e5, 0xe8ec, 0xe8e4,
+ 0xe8e6, 0xe8e7, 0xe8ea, 0x9fa4, 0xbea1, 0xe8ef, 0xe8ee, 0xbe7d,
+ 0xe8e9, 0xe8ed, 0xbe7e, 0x96bd, 0xecac, 0xc06f, 0xeca7, 0xc06b,
+ 0x96f4, 0xeca4, 0xecaa, 0xecad, 0xc070, 0xeca9, 0xeca6, 0xecae,
+ 0xeca5, 0x96b8, 0xecab, 0xc06c, 0xeca3, 0xc06d, 0xc06e, 0xeca8,
+ 0xefa9, 0xef7a, 0xef7b, 0xef7e, 0xef7c, 0xef76, 0xfaa1, 0xef79,
+ 0xefa5, 0xef7d, 0x91a7, 0xc245, 0xefa7, 0xefa4, 0xc246, 0xefa6,
+ 0xef77, 0xefa2, 0xefa3, 0xa05e, 0xefa1, 0x9a7d, 0xf1d2, 0xf1d4,
+ 0xf1d7, 0x8948, 0xf1d1, 0x9eb1, 0xc359, 0xf1d9, 0xf1d0, 0xf1da,
+ 0xf1d6, 0xf1d8, 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf, 0xc35a,
+ 0x9ddb, 0xf1db, 0xc35b, 0xc44d, 0xef78, 0xf3f1, 0xf3e8, 0xc44f,
+ 0xf3e4, 0xc450, 0x95bf, 0x8a73, 0xf3ed, 0xf3e7, 0xf3dd, 0xc44e,
+ 0xf3ea, 0xf3e5, 0xf3e6, 0xf3d8, 0xf3df, 0xf3ee, 0xf3eb, 0x9efe,
+ 0xf3e3, 0x917a, 0xf3ef, 0xf3de, 0xf3d9, 0xf3ec, 0x917b, 0xf3db,
+ 0xf3e9, 0xf3e0, 0xf3f0, 0xf3dc, 0xc44c, 0xf3da, 0xf3e1, 0xf3e2,
+ 0xf57d, 0xf57b, 0x9aa3, 0xf5a2, 0xf5ae, 0xf5a5, 0xf57c, 0xf578,
+ 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577, 0xf5a1, 0xf5a6,
+ 0xf5a8, 0xf5ab, 0xf579, 0x96c2, 0xf5af, 0xf5b0, 0xf5a9, 0xf5ad,
+ 0xf5a4, 0x9f77, 0xf6c1, 0xf6c4, 0xc561, 0xf6c3, 0xf6c8, 0xf6c6,
+ 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, 0xc564, 0xf6bf, 0xf6c0, 0xf6bc,
+ 0xf6b4, 0x9aa4, 0xf6b9, 0xf5ac, 0x9aa5, 0xf6b5, 0xc563, 0xf6bb,
+ 0x91a1, 0xf6ba, 0xf6b6, 0xf6c2, 0x89b8, 0xf6b7, 0xf7bb, 0xf6c5,
+ 0xf6c7, 0xf6be, 0xf6b8, 0xf7bc, 0xf7be, 0xf7b8, 0xc5c2, 0x9173,
+ 0xf7c5, 0xf7c3, 0xc5c3, 0xf7c2, 0xf7c1, 0xf7ba, 0xf7b7, 0xf7bd,
+ 0xf7c6, 0xf7b9, 0xf7bf, 0xf869, 0xf86e, 0xf864, 0xf867, 0xc5ee,
+ 0xf86b, 0xf872, 0xf7c0, 0xf865, 0xf86f, 0xf873, 0xf86a, 0xf863,
+ 0xf86d, 0xf86c, 0xf871, 0xf870, 0xf7c4, 0xf868, 0xf862, 0xf866,
+ 0xc64e, 0xc64f, 0xf861, 0x9aa6, 0xf8e6, 0xf8dd, 0xf8e5, 0xf8e2,
+ 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0, 0xf8de, 0xf8e4,
+ 0x89bd, 0xf95d, 0x89b9, 0xf95e, 0x917d, 0xf960, 0xf95f, 0xf962,
+ 0xf961, 0xf97c, 0xf97b, 0xf9b7, 0xf9b8, 0x96bb, 0xf9c5, 0xc678,
+ 0xc67c, 0x9ff2, 0xf9cf, 0xc67d, 0x8bf5, 0xb3bf, 0xc4d0, 0xf6c9,
+ 0x9aa9, 0xc650, 0xc651, 0xb3c0, 0xe0ee, 0x9f54, 0xb9a8, 0xe8f0,
+ 0x9fe3, 0x9eed, 0xecb0, 0xecb1, 0xecaf, 0xefab, 0xefaa, 0xc247,
+ 0xf1df, 0xefac, 0xf1de, 0x91aa, 0xf3f3, 0xc451, 0xc453, 0xf3f2,
+ 0x91ab, 0xa070, 0xc452, 0x9f6d, 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca,
+ 0xc565, 0x91ac, 0xc5ef, 0xf8e8, 0xf963, 0x91ad, 0xf9d2, 0xb3c1,
+ 0xa0fd, 0xe4e5, 0x9fe2, 0xbea2, 0x91af, 0x9e41, 0x9aaa, 0xecb3,
+ 0xecb2, 0x91b0, 0xefad, 0x9aab, 0xc454, 0xc4d1, 0xf7c7, 0xf9cb,
+ 0xb3c2, 0xbbf2, 0x9aac, 0xbea3, 0x9a4a, 0xf3f4, 0x91b2, 0xf874,
+ 0xb6c0, 0x8bf6, 0x9aad, 0x89b6, 0xefae, 0xc664, 0xb6c1, 0xbea4,
+ 0xc248, 0xf875, 0xb6c2, 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0xc071,
+ 0xefaf, 0xc24c, 0xc24a, 0xc24b, 0xc249, 0xf1e0, 0xc35c, 0x9aaf,
+ 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6, 0xc4d2, 0xf6cb, 0xf6cd, 0xf6cc,
+ 0xc566, 0xf7c8, 0x9ab0, 0xf876, 0xf877, 0xc5f0, 0xf964, 0xf97d,
+ 0xc675, 0x9ab1, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5, 0xe0ef, 0x9aa1,
+ 0xefb1, 0xf1e2, 0xf1e1, 0x91b9, 0xf878, 0xc652, 0x91ba, 0xf965,
+ 0xf97e, 0xb9a9, 0xe8f2, 0xe8f3, 0xecb7, 0xb9aa, 0xc35d, 0xf1e3,
+ 0x91be, 0xf6cf, 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0xf8e9, 0xb9ab,
+ 0xefb4, 0xefb3, 0xefb2, 0xf1e4, 0xa041, 0x8bb7, 0xf1e8, 0xf1e7,
+ 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6, 0xf5b9, 0xc4d3, 0xf5b8, 0xf6d1,
+ 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9, 0xf87c, 0xf87b, 0xf87a, 0x91c0,
+ 0xbbf3, 0xecb8, 0xc24d, 0xf3f7, 0xf3f8, 0xf7cc, 0xf87d, 0x9ab3,
+ 0x91c3, 0xf8ea, 0xf966, 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e, 0xf1e9,
+ 0xf3f9, 0xf6d2, 0xf87e, 0xa0fc, 0xbea6, 0x9fee, 0xefb5, 0xf1ea,
+ 0xf3fa, 0xf3fb, 0xf3fc, 0xf5be, 0x9f69, 0xf5ba, 0xc568, 0xf5bd,
+ 0xf5bc, 0xc4d4, 0xf5bb, 0xc4d6, 0x91c8, 0xc4d5, 0xf6d4, 0xf6d3,
+ 0xc569, 0xc56a, 0x91c9, 0xc5c6, 0xf7cd, 0xc5c5, 0xf8a3, 0xf8a4,
+ 0xf8a2, 0xf8a1, 0xc654, 0xf8eb, 0xf8ec, 0xf8ed, 0xc653, 0xf967,
+ 0xf96a, 0xf969, 0xf968, 0xf9d3, 0x8de6, 0xc073, 0x91cb, 0xc365,
+ 0xf5bf, 0xf6d5, 0xc5c7, 0xf7ce, 0xf9d5, 0x89c8, 0xc074, 0x8daa,
+ 0xefb6, 0xf7cf, 0xf9a1, 0x9fdd, 0xfa40, 0xfa41, 0xfa42, 0xfa43,
+ 0xfa44, 0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49, 0xfa4a, 0xfa4b,
+ 0xfa4c, 0xfa4d, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa52, 0xfa53,
+ 0xfa54, 0xfa55, 0xfa56, 0xfa57, 0xfa58, 0xfa59, 0xfa5a, 0xfa5b,
+ 0xfa5c, 0xfa5d, 0xfa5e, 0xadc5, 0xfa60, 0xfa61, 0xfa62, 0xfa63,
+ 0xfa64, 0xfa65, 0xb0b0, 0xfa67, 0xfa68, 0xfa69, 0xfa6a, 0xfa6b,
+ 0xfa6c, 0xfa6d, 0xfa6e, 0xfa6f, 0xfa70, 0xfa71, 0xfa72, 0xfa73,
+ 0xfa74, 0xfa75, 0xfa76, 0xfa77, 0xfa78, 0xfa79, 0xfa7a, 0xfa7b,
+ 0xfa7c, 0xfa7d, 0xfa7e, 0xfaa1, 0xfaa2, 0xfaa3, 0xfaa4, 0xfaa5,
+ 0xfaa6, 0xfaa7, 0xfaa8, 0xfaa9, 0xfaaa, 0xfaab, 0xfaac, 0xfaad,
+ 0xfaae, 0xfaaf, 0xfab0, 0xfab1, 0xfab2, 0xfab3, 0xfab4, 0xfab5,
+ 0xfab6, 0xfab7, 0xfab8, 0xfab9, 0xfaba, 0xfabb, 0xfabc, 0xa55d,
+ 0xfabe, 0xfabf, 0xfac0, 0xfac1, 0xfac2, 0xfac3, 0xfac4, 0xa2cd,
+ 0xfac6, 0xfac7, 0xfac8, 0xfac9, 0xfaca, 0xfacb, 0xfacc, 0xfacd,
+ 0xface, 0xfacf, 0xfad0, 0xfad1, 0xfad2, 0xfad3, 0xfad4, 0xadeb,
+ 0xfad6, 0xfad7, 0xfad8, 0xfad9, 0xfada, 0xfadb, 0xfadc, 0xfadd,
+ 0xfade, 0xfadf, 0xfae0, 0xfae1, 0xfae2, 0xfae3, 0xfae4, 0xfae5,
+ 0xfae6, 0xfae7, 0xfae8, 0xfae9, 0xfaea, 0xfaeb, 0xfaec, 0xfaed,
+ 0xfaee, 0xfaef, 0xfaf0, 0xfaf1, 0xfaf2, 0xfaf3, 0xfaf4, 0xfaf5,
+ 0xfaf6, 0xfaf7, 0xfaf8, 0xfaf9, 0xfafa, 0xfafb, 0xfafc, 0xfafd,
+ 0xfafe, 0xfb40, 0xfb41, 0xfb42, 0xfb43, 0xfb44, 0xfb45, 0xfb46,
+ 0xfb47, 0x9def, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e,
+ 0xfb4f, 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56,
+ 0xfb57, 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d, 0xfb5e,
+ 0xfb5f, 0xfb60, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66,
+ 0xfb67, 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e,
+ 0xfb6f, 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76,
+ 0xfb77, 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xfb7e,
+ 0xfba1, 0xfba2, 0xfba3, 0xfba4, 0xfba5, 0xfba6, 0xfba7, 0xfba8,
+ 0xfba9, 0xfbaa, 0xfbab, 0xfbac, 0xfbad, 0xfbae, 0xfbaf, 0xfbb0,
+ 0xfbb1, 0xfbb2, 0xfbb3, 0xfbb4, 0xfbb5, 0xfbb6, 0xfbb7, 0xb440,
+ 0xfbb9, 0xfbba, 0xfbbb, 0xfbbc, 0xfbbd, 0xfbbe, 0xfbbf, 0xfbc0,
+ 0xfbc1, 0xfbc2, 0xfbc3, 0xfbc4, 0xfbc5, 0xfbc6, 0xfbc7, 0xfbc8,
+ 0xfbc9, 0xfbca, 0xfbcb, 0xfbcc, 0xfbcd, 0xfbce, 0xfbcf, 0xfbd0,
+ 0xfbd1, 0xfbd2, 0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6, 0xfbd7, 0xfbd8,
+ 0xfbd9, 0xfbda, 0xfbdb, 0xfbdc, 0xfbdd, 0xfbde, 0xfbdf, 0xfbe0,
+ 0xfbe1, 0xfbe2, 0xfbe3, 0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7, 0xfbe8,
+ 0xfbe9, 0xfbea, 0xfbeb, 0xfbec, 0xfbed, 0xfbee, 0xfbef, 0xfbf0,
+ 0xfbf1, 0xfbf2, 0xc9db, 0xfbf4, 0xfbf5, 0xfbf6, 0xfbf7, 0xfbf8,
+ 0x9dfb, 0xfbfa, 0xfbfb, 0xfbfc, 0xfbfd, 0xfbfe, 0xfc40, 0xfc41,
+ 0xfc42, 0xfc43, 0xfc44, 0xfc45, 0xfc46, 0xfc47, 0xfc48, 0xfc49,
+ 0xfc4a, 0xfc4b, 0xfc4c, 0xfc4d, 0xfc4e, 0xd8f4, 0xfc50, 0xfc51,
+ 0xfc52, 0xfc53, 0xfc54, 0xfc55, 0xfc56, 0xfc57, 0xfc58, 0xfc59,
+ 0xfc5a, 0xfc5b, 0xfc5c, 0xfc5d, 0xfc5e, 0xfc5f, 0xfc60, 0xfc61,
+ 0xfc62, 0xfc63, 0xfc64, 0xfc65, 0xfc66, 0xfc67, 0xfc68, 0xfc69,
+ 0xfc6a, 0xfc6b, 0xa0dc, 0xfc6d, 0xfc6e, 0xfc6f, 0xfc70, 0xfc71,
+ 0xfc72, 0xfc73, 0xfc74, 0xfc75, 0xfc76, 0xfc77, 0xfc78, 0xfc79,
+ 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfca1, 0xfca2, 0xfca3,
+ 0xfca4, 0xfca5, 0xfca6, 0xfca7, 0xfca8, 0xfca9, 0xfcaa, 0xfcab,
+ 0xfcac, 0xfcad, 0xfcae, 0xfcaf, 0xfcb0, 0xfcb1, 0xfcb2, 0xfcb3,
+ 0xfcb4, 0xfcb5, 0xfcb6, 0xfcb7, 0xfcb8, 0xbcb5, 0xfcba, 0xfcbb,
+ 0xfcbc, 0xfcbd, 0xfcbe, 0xfcbf, 0xfcc0, 0xfcc1, 0xfcc2, 0xfcc3,
+ 0xfcc4, 0xfcc5, 0xfcc6, 0xfcc7, 0xfcc8, 0xfcc9, 0xfcca, 0xfccb,
+ 0xfccc, 0xfccd, 0xfcce, 0xfccf, 0xfcd0, 0xfcd1, 0xfcd2, 0xfcd3,
+ 0xfcd4, 0xfcd5, 0xfcd6, 0xfcd7, 0xfcd8, 0xfcd9, 0xfcda, 0xfcdb,
+ 0xfcdc, 0xfcdd, 0xfcde, 0xfcdf, 0xfce0, 0xfce1, 0xb4b8, 0xfce3,
+ 0xfce4, 0xfce5, 0xfce6, 0xfce7, 0xfce8, 0xfce9, 0xfcea, 0xfceb,
+ 0xfcec, 0xfced, 0xfcee, 0xfcef, 0xfcf0, 0xa7fb, 0xfcf2, 0xfcf3,
+ 0xfcf4, 0xfcf5, 0xfcf6, 0xfcf7, 0xfcf8, 0xfcf9, 0xfcfa, 0xfcfb,
+ 0xfcfc, 0xfcfd, 0xfcfe, 0xfd40, 0xfd41, 0xfd42, 0xfd43, 0xfd44,
+ 0xfd45, 0xfd46, 0xfd47, 0xfd48, 0xfd49, 0xfd4a, 0xfd4b, 0xfd4c,
+ 0xfd4d, 0xfd4e, 0xfd4f, 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54,
+ 0xfd55, 0xfd56, 0xfd57, 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c,
+ 0xfd5d, 0xfd5e, 0xfd5f, 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64,
+ 0xfd65, 0xfd66, 0xfd67, 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c,
+ 0xfd6d, 0xfd6e, 0xfd6f, 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74,
+ 0xfd75, 0xfd76, 0xfd77, 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c,
+ 0xfd7d, 0xfd7e, 0xfda1, 0xfda2, 0xfda3, 0xfda4, 0xfda5, 0xfda6,
+ 0xfda7, 0xfda8, 0xfda9, 0xfdaa, 0xfdab, 0xfdac, 0xfdad, 0xfdae,
+ 0xfdaf, 0xfdb0, 0xfdb1, 0xfdb2, 0xfdb3, 0xfdb4, 0xfdb5, 0xfdb6,
+ 0xcb58, 0xb4fc, 0xfdb9, 0xfdba, 0xb4e4, 0xfdbc, 0xfdbd, 0xfdbe,
+ 0xfdbf, 0xfdc0, 0xfdc1, 0xfdc2, 0xfdc3, 0xfdc4, 0xfdc5, 0xfdc6,
+ 0xfdc7, 0xfdc8, 0xfdc9, 0xfdca, 0xfdcb, 0xfdcc, 0xfdcd, 0xfdce,
+ 0xfdcf, 0xfdd0, 0xfdd1, 0xfdd2, 0xfdd3, 0xfdd4, 0xfdd5, 0xfdd6,
+ 0xfdd7, 0xfdd8, 0xfdd9, 0xfdda, 0xfddb, 0xfddc, 0xfddd, 0xfdde,
+ 0xfddf, 0xfde0, 0xfde1, 0xfde2, 0xfde3, 0xfde4, 0xfde5, 0xfde6,
+ 0xfde7, 0xfde8, 0xfde9, 0xfdea, 0xfdeb, 0xfdec, 0xfded, 0xfdee,
+ 0xfdef, 0xfdf0, 0xb54e, 0xfdf2, 0xfdf3, 0xfdf4, 0xfdf5, 0xfdf6,
+ 0xfdf7, 0xfdf8, 0xfdf9, 0xfdfa, 0xfdfb, 0xfdfc, 0xfdfd, 0xfdfe,
+ 0xfe40, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xfe45, 0xfe46, 0xfe47,
+ 0xfe48, 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f,
+ 0xfe50, 0xfe51, 0x9975, 0xfe53, 0xfe54, 0xfe55, 0xfe56, 0xfe57,
+ 0xfe58, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f,
+ 0xfe60, 0xfe61, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xfe67,
+ 0xfe68, 0xfe69, 0xfe6a, 0xfe6b, 0xfe6c, 0xfe6d, 0xfe6e, 0xb7ec,
+ 0xfe70, 0xfe71, 0xfe72, 0xfe73, 0xfe74, 0xfe75, 0xfe76, 0xfe77,
+ 0xfe78, 0xfe79, 0xfe7a, 0xfe7b, 0xfe7c, 0xfe7d, 0xfe7e, 0xfea1,
+ 0xfea2, 0xfea3, 0xfea4, 0xfea5, 0xfea6, 0xfea7, 0xfea8, 0xfea9,
+ 0xa260, 0xfeab, 0xfeac, 0xfead, 0xfeae, 0xfeaf, 0xfeb0, 0xfeb1,
+ 0xfeb2, 0xfeb3, 0xfeb4, 0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8, 0xfeb9,
+ 0xfeba, 0xfebb, 0xfebc, 0xfebd, 0xfebe, 0xfebf, 0xfec0, 0xfec1,
+ 0xfec2, 0xfec3, 0xfec4, 0xfec5, 0xfec6, 0xfec7, 0xfec8, 0xfec9,
+ 0xfeca, 0xfecb, 0xfecc, 0xfecd, 0xfece, 0xfecf, 0xfed0, 0xfed1,
+ 0xfed2, 0xfed3, 0xfed4, 0xfed5, 0xfed6, 0xfed7, 0xfed8, 0xfed9,
+ 0xfeda, 0xfedb, 0xfedc, 0xcff1, 0xfede, 0xfedf, 0xfee0, 0xfee1,
+ 0xfee2, 0xfee3, 0xfee4, 0xfee5, 0xfee6, 0xfee7, 0xfee8, 0xfee9,
+ 0xfeea, 0xfeeb, 0xfeec, 0xfeed, 0xfeee, 0xfeef, 0xfef0, 0xfef1,
+ 0xfef2, 0xfef3, 0xfef4, 0xfef5, 0xfef6, 0xfef7, 0xfef8, 0xfef9,
+ 0xfefa, 0xfefb, 0xfefc, 0xfefd, 0xfefe, 0x8e40, 0x8e41, 0x8e42,
+ 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, 0x8e48, 0x8e49, 0x8e4a,
+ 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50, 0x8e51, 0x8e52,
+ 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e59, 0x8e5a,
+ 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62,
+ 0x8e63, 0x8e64, 0x8e65, 0x8e66, 0x8e67, 0x8e68, 0xbae6, 0x8e6a,
+ 0x8e6b, 0x8e6c, 0x8e6d, 0x8e6e, 0xedca, 0x8e70, 0x8e71, 0x8e72,
+ 0x8e73, 0x8e74, 0x8e75, 0x8e76, 0x8e77, 0x8e78, 0x8e79, 0x8e7a,
+ 0x8e7b, 0x8e7c, 0x8e7d, 0xa261, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4,
+ 0x8ea5, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0xbafc, 0x8eac,
+ 0x8ead, 0x8eae, 0x8eaf, 0x8eb0, 0x8eb1, 0x8eb2, 0x8eb3, 0xbfa6,
+ 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc,
+ 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4,
+ 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc,
+ 0xaacc, 0x8ece, 0x8ecf, 0xbfae, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4,
+ 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc,
+ 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4,
+ 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec,
+ 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4,
+ 0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc,
+ 0x8efd, 0x8efe, 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8f45,
+ 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d,
+ 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55,
+ 0x8f56, 0xb5d7, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d,
+ 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0x8f65,
+ 0x8f66, 0x8f67, 0x8f68, 0xe3c8, 0x8f6a, 0x8f6b, 0x8f6c, 0x8f6d,
+ 0xdb79, 0x8f6f, 0x8f70, 0x8f71, 0x8f72, 0x8f73, 0x8f74, 0x8f75,
+ 0x8f76, 0x8f77, 0x8f78, 0x8f79, 0x8f7a, 0x8f7b, 0x8f7c, 0x8f7d,
+ 0x8f7e, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7,
+ 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac, 0x8fad, 0x8fae, 0x8faf,
+ 0x8fb0, 0x8fb1, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb6, 0x8fb7,
+ 0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd, 0x8fbe, 0x8fbf,
+ 0x8fc0, 0x8fc1, 0x8fc2, 0x8fc3, 0x8fc4, 0x8fc5, 0x8fc6, 0x8fc7,
+ 0x8fc8, 0x8fc9, 0x8fca, 0xbfcc, 0xa0d4, 0x8fcd, 0x8fce, 0x8fcf,
+ 0x8fd0, 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0x8fd6, 0x8fd7,
+ 0x8fd8, 0x8fd9, 0x8fda, 0x8fdb, 0x8fdc, 0x8fdd, 0x8fde, 0x8fdf,
+ 0x8fe0, 0x8fe1, 0x8fe2, 0x8fe3, 0x8fe4, 0x8fe5, 0x8fe6, 0x8fe7,
+ 0x8fe8, 0x8fe9, 0x8fea, 0x8feb, 0x8fec, 0x8fed, 0x8fee, 0x8fef,
+ 0x8ff0, 0x8ff1, 0x8ff2, 0x8ff3, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ff7,
+ 0x8ff8, 0x8ff9, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffd, 0xb05f, 0x9040,
+ 0x9041, 0x9042, 0x9043, 0x9044, 0x9045, 0x9046, 0x9047, 0x9048,
+ 0x9049, 0x904a, 0x904b, 0x904c, 0x904d, 0x904e, 0x904f, 0x9050,
+ 0x9051, 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0x9057, 0x9058,
+ 0x9059, 0x905a, 0x905b, 0x905c, 0x905d, 0x905e, 0x905f, 0x9060,
+ 0x9061, 0x9062, 0x9063, 0x9064, 0x9065, 0x9066, 0x9067, 0x9068,
+ 0x9069, 0x906a, 0x906b, 0x906c, 0xb3a3, 0x906e, 0x906f, 0x9070,
+ 0x9071, 0x9072, 0x9073, 0x9074, 0x9075, 0x9076, 0x9077, 0x9078,
+ 0x9079, 0xf9d7, 0x907b, 0x907c, 0x907d, 0x907e, 0x90a1, 0x90a2,
+ 0x90a3, 0x90a4, 0x90a5, 0x90a6, 0x90a7, 0x90a8, 0x90a9, 0x90aa,
+ 0x90ab, 0x90ac, 0x90ad, 0x90ae, 0x90af, 0x90b0, 0x90b1, 0x90b2,
+ 0x90b3, 0x90b4, 0x90b5, 0x90b6, 0x90b7, 0x90b8, 0x90b9, 0x90ba,
+ 0x90bb, 0x90bc, 0x90bd, 0x90be, 0x90bf, 0x90c0, 0x90c1, 0x90c2,
+ 0x90c3, 0x90c4, 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, 0x90ca,
+ 0x90cb, 0x90cc, 0x90cd, 0x90ce, 0x90cf, 0x90d0, 0x90d1, 0x90d2,
+ 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0x90d7, 0x90d8, 0x90d9, 0x90da,
+ 0x90db, 0xc052, 0x90dd, 0x90de, 0x90df, 0x90e0, 0x90e1, 0x90e2,
+ 0x90e3, 0x90e4, 0x90e5, 0x90e6, 0x90e7, 0x90e8, 0x90e9, 0x90ea,
+ 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0, 0xc554, 0x90f2,
+ 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0x90f8, 0x90f9, 0x90fa,
+ 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x9140, 0x9141, 0x9142, 0x9143,
+ 0x9144, 0x9145, 0x9146, 0x9147, 0x9148, 0x9149, 0x914a, 0x914b,
+ 0x914c, 0x914d, 0x914e, 0x914f, 0x9150, 0x9151, 0x9152, 0x9153,
+ 0x9154, 0x9155, 0x9156, 0x9157, 0x9158, 0x9159, 0x915a, 0x915b,
+ 0x915c, 0x915d, 0x915e, 0x915f, 0x9160, 0x9161, 0x9162, 0x9163,
+ 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916a, 0x916b,
+ 0x916c, 0x916d, 0x916e, 0x916f, 0x9170, 0x9171, 0x9172, 0x9173,
+ 0x9174, 0x9175, 0x9176, 0x9177, 0x9178, 0x9179, 0x917a, 0x917b,
+ 0x917c, 0x917d, 0x917e, 0x91a1, 0x91a2, 0x91a3, 0x91a4, 0x91a5,
+ 0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91aa, 0x91ab, 0x91ac, 0x91ad,
+ 0x91ae, 0x91af, 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b4, 0x91b5,
+ 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91ba, 0x91bb, 0x91bc, 0x91bd,
+ 0x91be, 0xf1e3, 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4, 0x91c5,
+ 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc, 0x91cd,
+ 0x91ce, 0x91cf, 0x91d0, 0x91d1, 0x91d2, 0x91d3, 0x91d4, 0x91d5,
+ 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd,
+ 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5,
+ 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed,
+ 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5,
+ 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd,
+ 0x91fe, 0x9240, 0x9241, 0x9242, 0x9243, 0x9242, 0x9245, 0x9246,
+ 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d, 0x924e,
+ 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256,
+ 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, 0x925e,
+ 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266,
+ 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e,
+ 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9274, 0x9275, 0x9276,
+ 0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e,
+ 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, 0x92a8,
+ 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92ae, 0xa259, 0xa25a,
+ 0xa25c, 0xa25b, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8,
+ 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0,
+ 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0xa05f,
+ 0x92c9, 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0,
+ 0xe6ab, 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8,
+ 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0,
+ 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8,
+ 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0,
+ 0x92f1, 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8,
+ 0x92f9, 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x9340, 0x9341,
+ 0x9342, 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349,
+ 0x934a, 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351,
+ 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359,
+ 0x935a, 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361,
+ 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369,
+ 0x936a, 0x936b, 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371,
+ 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379,
+ 0x937a, 0x937b, 0x937c, 0x937d, 0x937e, 0x93a1, 0x93a2, 0x93a3,
+ 0x93a4, 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab,
+ 0x93ac, 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3,
+ 0x93b4, 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb,
+ 0x93bc, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3,
+ 0x93c4, 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93ca, 0x93cb,
+ 0x93cc, 0x93cd, 0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3,
+ 0x93d4, 0x93d5, 0x93d6, 0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db,
+ 0x93dc, 0x93dd, 0x93de, 0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3,
+ 0x93e4, 0x93e5, 0x93e6, 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb,
+ 0x93ec, 0x93ed, 0x93ee, 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3,
+ 0x93f4, 0x93f5, 0x93f6, 0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb,
+ 0x93fc, 0x93fd, 0x93fe, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444,
+ 0x9445, 0x9446, 0xd256, 0x9448, 0x9449, 0x944a, 0x944b, 0x944c,
+ 0x944d, 0x944e, 0x944f, 0x9450, 0x9451, 0x9452, 0x9453, 0x9454,
+ 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945a, 0x945b, 0x945c,
+ 0x945d, 0x945e, 0x945f, 0x9460, 0x9461, 0x9462, 0x9463, 0x9464,
+ 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946a, 0x946b, 0x946c,
+ 0x946d, 0x946e, 0x946f, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474,
+ 0x9475, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c,
+ 0x947d, 0x947e, 0x94a1, 0x94a2, 0x94a3, 0x94a4, 0x94a5, 0x94a6,
+ 0x94a7, 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac, 0x94ad, 0x94ae,
+ 0x94af, 0x94b0, 0x94b1, 0x94b2, 0x94b3, 0x94b4, 0x94b5, 0x94b6,
+ 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd, 0x94be,
+ 0x94bf, 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6,
+ 0x94c7, 0x94c8, 0x94c9, 0xe6d0, 0x94cb, 0x94cc, 0x94cd, 0x94ce,
+ 0x94cf, 0x94d0, 0x94d1, 0x94d2, 0x94d3, 0x94d4, 0x94d5, 0x94d6,
+ 0x94d7, 0x94d8, 0x94d9, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de,
+ 0x94df, 0x94e0, 0x94e1, 0x94e2, 0x94e3, 0x94e4, 0x94e5, 0x94e6,
+ 0x94e7, 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec, 0x94ed, 0x94ee,
+ 0x94ef, 0x94f0, 0x94f1, 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6,
+ 0x94f7, 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc, 0x94fd, 0x94fe,
+ 0x9540, 0x9541, 0x9542, 0x9543, 0x9544, 0x9545, 0x9546, 0x9547,
+ 0x9548, 0x9549, 0x954a, 0x954b, 0x954c, 0x954d, 0x954e, 0x954f,
+ 0x9550, 0x9551, 0x9552, 0x9553, 0x9554, 0x9555, 0x9556, 0x9557,
+ 0x9558, 0x9559, 0x955a, 0x955b, 0x955c, 0x955d, 0x955e, 0x955f,
+ 0x9560, 0x9561, 0x9562, 0x9563, 0x9564, 0x9565, 0x9566, 0x9567,
+ 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, 0x956d, 0x956e, 0x956f,
+ 0x9570, 0x9571, 0x9572, 0x9573, 0x9574, 0x9575, 0x9576, 0x9577,
+ 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, 0x957e, 0x95a1,
+ 0x95a2, 0x95a3, 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9,
+ 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1,
+ 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9,
+ 0x95ba, 0x95bb, 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1,
+ 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9,
+ 0x95ca, 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1,
+ 0x95d2, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0xca52,
+ 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1,
+ 0x95e2, 0x95e3, 0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95e8, 0x95e9,
+ 0x95ea, 0x95eb, 0x95ec, 0x95ed, 0x95ee, 0x95ef, 0x95f0, 0x95f1,
+ 0x95f2, 0x95f3, 0x95f4, 0x95f5, 0x95f6, 0x95f7, 0x95f8, 0x95f9,
+ 0x95fa, 0x95fb, 0x95fc, 0x95fd, 0x95fe, 0x9640, 0x9641, 0x9642,
+ 0x9643, 0x9ce4, 0x9645, 0x9646, 0x9647, 0x9648, 0x9649, 0x964a,
+ 0x964b, 0x964c, 0x964d, 0x964e, 0x964f, 0x9650, 0x9651, 0x9652,
+ 0x9653, 0x9654, 0x9655, 0x9656, 0x9657, 0x9658, 0x9659, 0x965a,
+ 0x965b, 0x965c, 0x965d, 0x965e, 0x965f, 0x9660, 0x9661, 0x9662,
+ 0x9663, 0x9664, 0x9665, 0x9666, 0x9667, 0x9668, 0x9669, 0x966a,
+ 0x966b, 0x966c, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9672,
+ 0x9673, 0x9674, 0x9675, 0x9676, 0x9677, 0x9678, 0x9679, 0x967a,
+ 0x967b, 0x967c, 0x967d, 0x967e, 0x96a1, 0x96a2, 0x96a3, 0x96a4,
+ 0x96a5, 0x96a6, 0x96a7, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac,
+ 0x96ad, 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4,
+ 0x96b5, 0x96b6, 0x96b7, 0x96b8, 0x96b9, 0x96ba, 0x96bb, 0x96bc,
+ 0x96bd, 0x96be, 0x96bf, 0x96c0, 0x96c1, 0x96c2, 0x96c3, 0x96c4,
+ 0x96c5, 0x96c6, 0x96c7, 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc,
+ 0x96cd, 0x96ce, 0x96cf, 0x96d0, 0x96d1, 0x96d2, 0x96d3, 0x96d4,
+ 0x96d5, 0x96d6, 0x96d7, 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc,
+ 0x96dd, 0x96de, 0x96df, 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4,
+ 0x96e5, 0x96e6, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, 0x96ec,
+ 0x96ee, 0x96ee, 0x96ef, 0x96f0, 0x96f1, 0x96f2, 0x96f3, 0x96f4,
+ 0x96f5, 0x96f6, 0x96f7, 0x96f8, 0x96f9, 0x96fa, 0x96fb, 0xe959,
+ 0x96fd, 0x96fe, 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745,
+ 0x9746, 0x9747, 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d,
+ 0x974e, 0x974f, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755,
+ 0x9756, 0x9757, 0x9758, 0x9759, 0x975a, 0x975b, 0x975c, 0x975d,
+ 0x975e, 0x975f, 0x9760, 0x9761, 0x9762, 0x9763, 0x9764, 0x9765,
+ 0x9766, 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d,
+ 0x976e, 0x976f, 0x9770, 0x9771, 0x9772, 0x9773, 0x9774, 0x9775,
+ 0x9776, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977c, 0x977d,
+ 0x977e, 0x97a1, 0x97a2, 0x97a3, 0x97a4, 0x97a5, 0x97a6, 0x97a7,
+ 0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac, 0x97ad, 0x97ae, 0x97af,
+ 0x97b0, 0x97b1, 0x97b2, 0x97b3, 0x97b4, 0x97b5, 0x97b6, 0x97b7,
+ 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, 0x97be, 0x97bf,
+ 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, 0x97c6, 0x97c7,
+ 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0x97cd, 0x97ce, 0x97cf,
+ 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7,
+ 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc, 0x97dd, 0x97de, 0x97df,
+ 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4, 0x97e5, 0x97e6, 0x97e7,
+ 0x97e8, 0x97e9, 0x97ea, 0x97eb, 0x97ec, 0x97ed, 0x97ee, 0x97ef,
+ 0x97f0, 0x97f1, 0x97f2, 0x97f3, 0x97f4, 0x97f5, 0x97f6, 0x97f7,
+ 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe, 0x9840,
+ 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, 0x9848,
+ 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850,
+ 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, 0x9858,
+ 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e, 0x985f, 0x9860,
+ 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868,
+ 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0x9870,
+ 0x9871, 0x9872, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877, 0x9878,
+ 0x9879, 0x987a, 0x987b, 0x987c, 0x987d, 0x987e, 0x98a1, 0x98a2,
+ 0x98a3, 0x98a4, 0x98a5, 0x98a6, 0x98a7, 0x98a8, 0x98a9, 0x98aa,
+ 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2,
+ 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba,
+ 0x98bb, 0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2,
+ 0x98c3, 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca,
+ 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0x98d1, 0x98d2,
+ 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7, 0x98d8, 0x98d9, 0x98da,
+ 0x98db, 0x98dc, 0x98dd, 0x98de, 0x98df, 0x98e0, 0x98e1, 0x98e2,
+ 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0x98e8, 0x98e9, 0x98ea,
+ 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, 0x98f0, 0x98f1, 0x98f2,
+ 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, 0x98f8, 0x98f9, 0x98fa,
+ 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x9940, 0x9941, 0x9942, 0x9943,
+ 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a, 0x994b,
+ 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9952, 0x9953,
+ 0x9954, 0x9955, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b,
+ 0x995c, 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9963,
+ 0x9964, 0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
+ 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, 0x9971, 0x9972, 0x9973,
+ 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, 0x9979, 0x997a, 0x997b,
+ 0x997c, 0x997d, 0x997e, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5,
+ 0x99a6, 0x99a7, 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad,
+ 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5,
+ 0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd,
+ 0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5,
+ 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd,
+ 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5,
+ 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd,
+ 0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5,
+ 0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed,
+ 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5,
+ 0x99f6, 0x99f7, 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd,
+ 0x99fe, 0x9a40, 0x9a41, 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46,
+ 0x9a47, 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e,
+ 0x9a4f, 0x9a50, 0x9a51, 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56,
+ 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e,
+ 0x9a5f, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66,
+ 0x9a67, 0x9a68, 0x9a69, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e,
+ 0x9a6f, 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76,
+ 0x9a77, 0x9a78, 0x9a79, 0x9a7a, 0x9a7b, 0x9a7c, 0x9a7d, 0x9a7e,
+ 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0x9aa7, 0x9aa8,
+ 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, 0x9ab0,
+ 0x9ab1, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8,
+ 0x9ab9, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf, 0x9ac0,
+ 0x9ac1, 0x9ac2, 0x9ac3, 0x9ac4, 0x9ac5, 0x9ac6, 0x9ac7, 0x9ac8,
+ 0x9ac9, 0x9aca, 0x9acb, 0x9acc, 0x9acd, 0x9ace, 0x9acf, 0x9ad0,
+ 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad8,
+ 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add, 0x9ade, 0x9adf, 0x9ae0,
+ 0x9ae1, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae6, 0x9ae7, 0x9ae8,
+ 0x9ae9, 0x9aea, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0x9aef, 0x9af0,
+ 0x9af1, 0x9af2, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8,
+ 0x9af9, 0x9afa, 0x9afb, 0x9afc, 0x9afd, 0x9afe, 0x9b40, 0x9b41,
+ 0x9b42, 0x9b43, 0x9b44, 0x9b45, 0x9b46, 0x9b47, 0x9b48, 0x9b49,
+ 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4d, 0x9b4e, 0x9b4f, 0x9b50, 0x9b51,
+ 0x9b52, 0x9b53, 0x9b54, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59,
+ 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61,
+ 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69,
+ 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71,
+ 0x9b72, 0x9b73, 0x9b74, 0x9b75, 0xeff9, 0x9b77, 0xc5f7, 0x9b79,
+ 0x9b7a, 0xf5e8, 0x9b7c, 0x9b7d, 0x9b7e, 0x9ba1, 0x9ba2, 0x9ba3,
+ 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab,
+ 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3,
+ 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb,
+ 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3,
+ 0x9bc4, 0x9bc5, 0xe8cd, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb,
+ 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3,
+ 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb,
+ 0x9bdc, 0x9bdd, 0xd0c0, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3,
+ 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb,
+ 0xfd64, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3,
+ 0x9bf4, 0x9bf5, 0xbf47, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb,
+ 0x9bfc, 0x9bfd, 0x9bfe, 0x9c40, 0x9c41, 0xebc9, 0x9c43, 0x9c44,
+ 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b, 0x9c4c,
+ 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0xcde7, 0x9c54,
+ 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b, 0x9c5c,
+ 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0xc0e7, 0x9c63, 0x9c64,
+ 0x9c65, 0x9c66, 0x9c67, 0xdc52, 0x9c69, 0x9c6a, 0xf86d, 0x9c6c,
+ 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73, 0x9c74,
+ 0x9c75, 0x9c76, 0xdb5d, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7c,
+ 0x9c7d, 0x9c7e, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, 0x9ca6,
+ 0x9ca7, 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac, 0x9cad, 0x9cae,
+ 0x9caf, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6,
+ 0x9cb7, 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0xc95c, 0xafb0, 0x9cbe,
+ 0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc6,
+ 0x9cc7, 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce,
+ 0x9ccf, 0xd4d1, 0x9cd1, 0x9cd2, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6,
+ 0x9cd7, 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9cde,
+ 0x9cdf, 0x9ce0, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6,
+ 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, 0x9ced, 0x9cee,
+ 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2, 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6,
+ 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe,
+ 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47,
+ 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f,
+ 0x9d50, 0x9d51, 0x9d52, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0xe07c,
+ 0x9d58, 0x9d59, 0xb5ae, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f,
+ 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67,
+ 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f,
+ 0x9d70, 0x9d71, 0x9d72, 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77,
+ 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9da1,
+ 0x9da2, 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9,
+ 0x9daa, 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1,
+ 0x9db2, 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9,
+ 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1,
+ 0x9dc2, 0x9dc3, 0xa9e4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9,
+ 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1,
+ 0x9dd2, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9,
+ 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1,
+ 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9,
+ 0x9dea, 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1,
+ 0x9df2, 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9,
+ 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9e40, 0x9e41, 0x9e42,
+ 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4a,
+ 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, 0x9e50, 0x9e51, 0x9e52,
+ 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, 0x9e58, 0x9e59, 0x9e5a,
+ 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f, 0x9e60, 0x9e61, 0x9e62,
+ 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a,
+ 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, 0x9e6f, 0x9e70, 0x9e71, 0x9e72,
+ 0x9e73, 0x9e74, 0x9e75, 0x9e76, 0x9e77, 0x9e78, 0x9e79, 0x9e7a,
+ 0x9e7b, 0x9e7c, 0x9e7d, 0x9e7e, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4,
+ 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, 0xabec, 0x9eaa, 0x9eab, 0x9eac,
+ 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4,
+ 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb8, 0x9eb9, 0x9eba, 0x9ebb, 0x9ebc,
+ 0x9ebd, 0x9ebe, 0x9ebf, 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec4,
+ 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0x9ec9, 0x9eca, 0x9ecb, 0x9ecc,
+ 0x9ecd, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed1, 0x9ed2, 0x9ed3, 0x9ed4,
+ 0x9ed5, 0x9ed6, 0x9ed7, 0x9ed8, 0x9ed9, 0x9eda, 0x9edb, 0x9edc,
+ 0x9edd, 0x9ede, 0x9edf, 0x9ee0, 0x9ee1, 0x9ee2, 0x9ee3, 0x9ee4,
+ 0x9ee5, 0x9ee6, 0x9ee7, 0x9ee8, 0x9ee9, 0x9eea, 0x9eeb, 0x9eec,
+ 0x9eed, 0x9eee, 0xdecd, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4,
+ 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc,
+ 0xc9fc, 0x9efe, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f44, 0x9f45,
+ 0x9f46, 0x9f47, 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d,
+ 0x9f4e, 0x9f4f, 0x9f50, 0x9f51, 0x9f52, 0x9f53, 0x9f54, 0x9f55,
+ 0x9f56, 0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d,
+ 0x9f5e, 0x9f5f, 0xf9c4, 0x9f61, 0x9f62, 0x9f63, 0x9f64, 0x9f65,
+ 0x91be, 0x9f67, 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d,
+ 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0x9f74, 0x9f75,
+ 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d,
+ 0x9f7e, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7,
+ 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0x9fae, 0x9faf,
+ 0x9fb0, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, 0x9fb5, 0x9fb6, 0x9fb7,
+ 0x9fb8, 0x9fb9, 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0x9fbe, 0x9fbf,
+ 0x9fc0, 0x9fc1, 0x9fc2, 0x9fc3, 0x9fc4, 0x9fc5, 0x9fc6, 0x9fc7,
+ 0x9fc8, 0x9fc9, 0x9fca, 0xb9b0, 0x9fcc, 0x9fcd, 0x9fce, 0x9fcf,
+ 0x9fd0, 0x9fd1, 0x9fd2, 0x9fd3, 0x9fd4, 0x9fd5, 0x9fd6, 0x9fd7,
+ 0x9361, 0x9fd9, 0x9fda, 0x9fdb, 0x9fdc, 0x9fdd, 0x9fde, 0x9fdf,
+ 0x9fe0, 0x9fe1, 0x9fe2, 0x9fe3, 0x9fe4, 0x9fe5, 0x9fe6, 0x9fe7,
+ 0x9fe8, 0x9fe9, 0x9fea, 0x9feb, 0x9fec, 0x9fed, 0x9fee, 0x9fef,
+ 0x9ff0, 0x9ff1, 0x9ff2, 0x9ff3, 0x9ff4, 0x9ff5, 0x9ff6, 0x9ff7,
+ 0x9ff8, 0x9ff9, 0x9ffa, 0x9ffb, 0x9ffc, 0x9ffd, 0x9ffe, 0xa040,
+ 0xa041, 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, 0xa048,
+ 0xa049, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xa04e, 0xa04f, 0xa050,
+ 0xa051, 0xa052, 0xa053, 0xa054, 0xa055, 0xa056, 0xa057, 0xa058,
+ 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, 0xa05e, 0xa05f, 0xa060,
+ 0xa061, 0xa062, 0x8fb6, 0xa064, 0xa065, 0xa066, 0xa067, 0xa068,
+ 0xa069, 0xa06a, 0xa06b, 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070,
+ 0xa071, 0xa072, 0xa073, 0xa074, 0xa075, 0xa076, 0xa9f0, 0xa078,
+ 0xa079, 0xa07a, 0xa07b, 0xa07c, 0xa07d, 0xa07e, 0xa0a1, 0xa0a2,
+ 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a6, 0xa0a7, 0xa0a8, 0xa0a9, 0xa0aa,
+ 0xa0ab, 0xa0ac, 0xa0ad, 0xa0ae, 0xa0af, 0xa0b0, 0xa0b1, 0xa0b2,
+ 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7, 0xa0b8, 0xa0b9, 0xa0ba,
+ 0xa0bb, 0xa0bc, 0xa0bd, 0xa0be, 0xa0bf, 0xa0c0, 0xa0c1, 0xa0c2,
+ 0xa0c3, 0xa0c4, 0xa0c5, 0xa0c6, 0xa0c7, 0xa0c8, 0xa0c9, 0xa0ca,
+ 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, 0xa0d0, 0xa0d1, 0xa0d2,
+ 0xa0d3, 0xa0d4, 0x947a, 0xa0d6, 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da,
+ 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, 0xde72, 0xa0e0, 0xa0e1, 0xa0e2,
+ 0xa0e3, 0x9455, 0xa0e5, 0xa0e6, 0xa0e7, 0xa0e8, 0xa0e9, 0xa0ea,
+ 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef, 0xa0f0, 0xa0f1, 0xa0f2,
+ 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7, 0xa0f8, 0xa0f9, 0xa0fa,
+ 0xa0fb, 0xa0fc, 0xa0fd, 0xa0fe, 0x8140, 0x8141, 0x8142, 0x8143,
+ 0x8144, 0x8145, 0x8146, 0x8147, 0x8148, 0x8149, 0x814a, 0x814b,
+ 0x814c, 0x814d, 0x814e, 0x814f, 0x8150, 0x8151, 0x8152, 0x8153,
+ 0x8154, 0x8155, 0x8156, 0x8157, 0x8158, 0x8159, 0x815a, 0x815b,
+ 0x815c, 0x815d, 0x815e, 0x815f, 0x8160, 0x8161, 0x8162, 0x8163,
+ 0x8164, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816a, 0x816b,
+ 0x816c, 0x816d, 0x816e, 0x816f, 0x8170, 0x8171, 0x8172, 0x8173,
+ 0x8174, 0x8175, 0x8176, 0x8177, 0x8178, 0x8179, 0x817a, 0x817b,
+ 0x817c, 0x817d, 0x817e, 0x81a1, 0x81a2, 0x81a3, 0x81a4, 0x81a5,
+ 0x81a6, 0x81a7, 0x81a8, 0x81a9, 0x81aa, 0x81ab, 0x81ac, 0x81ad,
+ 0x81ae, 0x81af, 0x81b0, 0x81b1, 0x81b2, 0x81b3, 0x81b4, 0x81b5,
+ 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0x81ba, 0x81bb, 0x81bc, 0x81bd,
+ 0x81be, 0x81bf, 0x81c0, 0x81c1, 0x81c2, 0x81c3, 0x81c4, 0x81c5,
+ 0x81c6, 0x81c7, 0x81c8, 0x81c9, 0x81ca, 0x81cb, 0x81cc, 0x81cd,
+ 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5,
+ 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db, 0x81dc, 0x81dd,
+ 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e3, 0x81e4, 0x81e5,
+ 0x81e6, 0x81e7, 0x81e8, 0x81e9, 0x81ea, 0x81eb, 0x81ec, 0x81ed,
+ 0x81ee, 0x81ef, 0x81f0, 0x81f1, 0x81f2, 0x81f3, 0x81f4, 0x81f5,
+ 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa, 0x81fb, 0x81fc, 0x81fd,
+ 0x81fe, 0x8240, 0x8241, 0x8242, 0x8243, 0x8244, 0x8245, 0x8246,
+ 0x8247, 0x8248, 0x8249, 0x824a, 0x824b, 0x824c, 0x824d, 0x824e,
+ 0x824f, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256,
+ 0x8257, 0x8258, 0x8259, 0x825a, 0x825b, 0x825c, 0x825d, 0x825e,
+ 0x825f, 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266,
+ 0x8267, 0x8268, 0x8269, 0x826a, 0x826b, 0x826c, 0x826d, 0x826e,
+ 0x826f, 0x8270, 0x8271, 0x8272, 0x8273, 0x8274, 0x8275, 0x8276,
+ 0x8277, 0x8278, 0x8279, 0x827a, 0x827b, 0x827c, 0x827d, 0x827e,
+ 0x82a1, 0x82a2, 0x82a3, 0x82a4, 0x82a5, 0x82a6, 0x82a7, 0x82a8,
+ 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0x82ae, 0x82af, 0x82b0,
+ 0x82b1, 0x82b2, 0x82b3, 0x82b4, 0x82b5, 0x82b6, 0x82b7, 0x82b8,
+ 0x82b9, 0x82ba, 0x82bb, 0x82bc, 0x82bd, 0x82be, 0x82bf, 0x82c0,
+ 0x82c1, 0x82c2, 0x82c3, 0x82c4, 0x82c5, 0x82c6, 0x82c7, 0x82c8,
+ 0x82c9, 0x82ca, 0x82cb, 0x82cc, 0x82cd, 0x82ce, 0x82cf, 0x82d0,
+ 0x82d1, 0x82d2, 0x82d3, 0x82d4, 0x82d5, 0x82d6, 0x82d7, 0x82d8,
+ 0x82d9, 0x82da, 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, 0x82e0,
+ 0x82e1, 0x82e2, 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, 0x82e8,
+ 0x82e9, 0x82ea, 0x82eb, 0x82ec, 0x82ed, 0x82ee, 0x82ef, 0x82f0,
+ 0x82f1, 0x82f2, 0x82f3, 0x82f4, 0x82f5, 0x82f6, 0x82f7, 0x82f8,
+ 0x82f9, 0x82fa, 0x82fb, 0x82fc, 0x82fd, 0x82fe, 0x8340, 0x8341,
+ 0x8342, 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349,
+ 0x834a, 0x834b, 0x834c, 0x834d, 0x834e, 0x834f, 0x8350, 0x8351,
+ 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0x8358, 0x8359,
+ 0x835a, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f, 0x8360, 0x8361,
+ 0x8362, 0x8363, 0x8364, 0x8365, 0x8366, 0x8367, 0x8368, 0x8369,
+ 0x836a, 0x836b, 0x836c, 0x836d, 0x836e, 0x836f, 0x8370, 0x8371,
+ 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8377, 0x8378, 0x8379,
+ 0x837a, 0x837b, 0x837c, 0x837d, 0x837e, 0x83a1, 0x83a2, 0x83a3,
+ 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83a8, 0x83a9, 0x83aa, 0x83ab,
+ 0x83ac, 0x83ad, 0x83ae, 0x83af, 0x83b0, 0x83b1, 0x83b2, 0x83b3,
+ 0x83b4, 0x83b5, 0x83b6, 0x83b7, 0x83b8, 0x83b9, 0x83ba, 0x83bb,
+ 0x83bc, 0x83bd, 0x83be, 0x83bf, 0x83c0, 0x83c1, 0x83c2, 0x83c3,
+ 0x83c4, 0x83c5, 0x83c6, 0x83c7, 0x83c8, 0x83c9, 0x83ca, 0x83cb,
+ 0x83cc, 0x83cd, 0x83ce, 0x83cf, 0x83d0, 0x83d1, 0x83d2, 0x83d3,
+ 0x83d4, 0x83d5, 0x83d6, 0x83d7, 0x83d8, 0x83d9, 0x83da, 0x83db,
+ 0x83dc, 0x83dd, 0x83de, 0x83df, 0x83e0, 0x83e1, 0x83e2, 0x83e3,
+ 0x83e4, 0x83e5, 0x83e6, 0x83e7, 0x83e8, 0x83e9, 0x83ea, 0x83eb,
+ 0x83ec, 0x83ed, 0x83ee, 0x83ef, 0x83f0, 0x83f1, 0x83f2, 0x83f3,
+ 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83f8, 0x83f9, 0x83fa, 0x83fb,
+ 0x83fc, 0x83fd, 0x83fe, 0x8440, 0x8441, 0x8442, 0x8443, 0x8444,
+ 0x8445, 0x8446, 0x8447, 0x8448, 0x8449, 0x844a, 0x844b, 0x844c,
+ 0x844d, 0x844e, 0x844f, 0x8450, 0x8451, 0x8452, 0x8453, 0x8454,
+ 0x8455, 0x8456, 0x8457, 0x8458, 0x8459, 0x845a, 0x845b, 0x845c,
+ 0x845d, 0x845e, 0x845f, 0x8460, 0x8461, 0x8462, 0x8463, 0x8464,
+ 0x8465, 0x8466, 0x8467, 0x8468, 0x8469, 0x846a, 0x846b, 0x846c,
+ 0x846d, 0x846e, 0x846f, 0x8470, 0x8471, 0x8472, 0x8473, 0x8474,
+ 0x8475, 0x8476, 0x8477, 0x8478, 0x8479, 0x847a, 0x847b, 0x847c,
+ 0x847d, 0x847e, 0x84a1, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6,
+ 0x84a7, 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae,
+ 0x84af, 0x84b0, 0x84b1, 0x84b2, 0x84b3, 0x84b4, 0x84b5, 0x84b6,
+ 0x84b7, 0x84b8, 0x84b9, 0x84ba, 0x84bb, 0x84bc, 0x84bd, 0x84be,
+ 0x84bf, 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0x84c4, 0x84c5, 0x84c6,
+ 0x84c7, 0x84c8, 0x84c9, 0x84ca, 0x84cb, 0x84cc, 0x84cd, 0x84ce,
+ 0x84cf, 0x84d0, 0x84d1, 0x84d2, 0x84d3, 0x84d4, 0x84d5, 0x84d6,
+ 0x84d7, 0x84d8, 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84dd, 0x84de,
+ 0x84df, 0x84e0, 0x84e1, 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6,
+ 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee,
+ 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6,
+ 0x84f7, 0x84f8, 0x84f9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0x84fe,
+ 0x8540, 0x8541, 0x8542, 0x8543, 0x8544, 0x8545, 0x8546, 0x8547,
+ 0x8548, 0x8549, 0x854a, 0x854b, 0x854c, 0x854d, 0x854e, 0x854f,
+ 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8556, 0x8557,
+ 0x8558, 0x8559, 0x855a, 0x855b, 0x855c, 0x855d, 0x855e, 0x855f,
+ 0x8560, 0x8561, 0x8562, 0x8563, 0x8564, 0x8565, 0x8566, 0x8567,
+ 0x8568, 0x8569, 0x856a, 0x856b, 0x856c, 0x856d, 0x856e, 0x856f,
+ 0x8570, 0x8571, 0x8572, 0x8573, 0x8574, 0x8575, 0x8576, 0x8577,
+ 0x8578, 0x8579, 0x857a, 0x857b, 0x857c, 0x857d, 0x857e, 0x85a1,
+ 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, 0x85a7, 0x85a8, 0x85a9,
+ 0x85aa, 0x85ab, 0x85ac, 0x85ad, 0x85ae, 0x85af, 0x85b0, 0x85b1,
+ 0x85b2, 0x85b3, 0x85b4, 0x85b5, 0x85b6, 0x85b7, 0x85b8, 0x85b9,
+ 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c0, 0x85c1,
+ 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8, 0x85c9,
+ 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85cf, 0x85d0, 0x85d1,
+ 0x85d2, 0x85d3, 0x85d4, 0x85d5, 0x85d6, 0x85d7, 0x85d8, 0x85d9,
+ 0x85da, 0x85db, 0x85dc, 0x85dd, 0x85de, 0x85df, 0x85e0, 0x85e1,
+ 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7, 0x85e8, 0x85e9,
+ 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, 0x85f0, 0x85f1,
+ 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8, 0x85f9,
+ 0x85fa, 0x85fb, 0x85fc, 0x85fd, 0x85fe, 0x8640, 0x8641, 0x8642,
+ 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, 0x864a,
+ 0x864b, 0x864c, 0x864d, 0x864e, 0x864f, 0x8650, 0x8651, 0x8652,
+ 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0x8658, 0x8659, 0x865a,
+ 0x865b, 0x865c, 0x865d, 0x865e, 0x865f, 0x8660, 0x8661, 0x8662,
+ 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a,
+ 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, 0x8670, 0x8671, 0x8672,
+ 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, 0x8678, 0x8679, 0x867a,
+ 0x867b, 0x867c, 0x867d, 0x867e, 0x86a1, 0x86a2, 0x86a3, 0x86a4,
+ 0x86a5, 0x86a6, 0x86a7, 0x86a8, 0x86a9, 0x86aa, 0x86ab, 0x86ac,
+ 0x86ad, 0x86ae, 0x86af, 0x86b0, 0x86b1, 0x86b2, 0x86b3, 0x86b4,
+ 0x86b5, 0x86b6, 0x86b7, 0x86b8, 0x86b9, 0x86ba, 0x86bb, 0x86bc,
+ 0x86bd, 0x86be, 0x86bf, 0x86c0, 0x86c1, 0x86c2, 0x86c3, 0x86c4,
+ 0x86c5, 0x86c6, 0x86c7, 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc,
+ 0x86cd, 0x86ce, 0x86cf, 0x86d0, 0x86d1, 0x86d2, 0x86d3, 0x86d4,
+ 0x86d5, 0x86d6, 0x86d7, 0x86d8, 0x86d9, 0x86da, 0x86db, 0x86dc,
+ 0x86dd, 0x86de, 0x86df, 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e4,
+ 0x86e5, 0x86e6, 0x86e7, 0x86e8, 0x86e9, 0x86ea, 0x86eb, 0x86ec,
+ 0x86ed, 0x86ee, 0x86ef, 0x86f0, 0x86f1, 0x86f2, 0x86f3, 0x86f4,
+ 0x86f5, 0x86f6, 0x86f7, 0x86f8, 0x86f9, 0x86fa, 0x86fb, 0x86fc,
+ 0x86fd, 0x86fe, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745,
+ 0x8746, 0x8747, 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, 0x874d,
+ 0x874e, 0x874f, 0x8750, 0x8751, 0x8752, 0x8753, 0x8754, 0x8755,
+ 0x8756, 0x8757, 0x8758, 0x8759, 0x875a, 0x875b, 0x875c, 0x875d,
+ 0x875e, 0x875f, 0x8760, 0x8761, 0x8762, 0x8763, 0x8764, 0x8765,
+ 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, 0x876d,
+ 0x876e, 0x876f, 0x8770, 0x8771, 0x8772, 0x8773, 0x8774, 0x8775,
+ 0x8776, 0x8777, 0x8778, 0x8779, 0x877a, 0x877b, 0x877c, 0x877d,
+ 0x877e, 0x87a1, 0x87a2, 0x87a3, 0x87a4, 0x87a5, 0x87a6, 0x87a7,
+ 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, 0x87ae, 0x87af,
+ 0x87b0, 0x87b1, 0x87b2, 0x87b3, 0x87b4, 0x87b5, 0x87b6, 0x87b7,
+ 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0x87bc, 0x87bd, 0x87be, 0x87bf,
+ 0x87c0, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0x87c7,
+ 0x87c8, 0x87c9, 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf,
+ 0x87d0, 0x87d1, 0x87d2, 0x87d3, 0x87d4, 0x87d5, 0x87d6, 0x87d7,
+ 0x87d8, 0x87d9, 0x87da, 0x87db, 0x87dc, 0x87dd, 0x87de, 0x87df,
+ 0x87e0, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e5, 0x87e6, 0x87e7,
+ 0x87e8, 0x87e9, 0x87ea, 0x87eb, 0x87ec, 0x87ed, 0x87ee, 0x87ef,
+ 0x87f0, 0x87f1, 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7,
+ 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87fe, 0x8840,
+ 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, 0x8846, 0x8847, 0x8848,
+ 0x8849, 0x884a, 0x884b, 0x884c, 0x884d, 0x884e, 0x884f, 0x8850,
+ 0x8851, 0x8852, 0x8853, 0x8854, 0x8855, 0x8856, 0x8857, 0x8858,
+ 0x8859, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e, 0x885f, 0x8860,
+ 0x8861, 0x8862, 0x8863, 0x8864, 0x8865, 0x8866, 0x8867, 0x8868,
+ 0x8869, 0x886a, 0x886b, 0x886c, 0x886d, 0x886e, 0x886f, 0x8870,
+ 0x8871, 0x8872, 0x8873, 0x8874, 0x8875, 0x8876, 0x8877, 0x8878,
+ 0x8879, 0x887a, 0x887b, 0x887c, 0x887d, 0x887e, 0x88a1, 0x88a2,
+ 0x88a3, 0x88a4, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa,
+ 0x88ab, 0x88ac, 0x88ad, 0x88ae, 0x88af, 0x88b0, 0x88b1, 0x88b2,
+ 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7, 0x88b8, 0x88b9, 0x88ba,
+ 0x88bb, 0x88bc, 0x88bd, 0x88be, 0x88bf, 0x88c0, 0x88c1, 0x88c2,
+ 0x88c3, 0x88c4, 0x88c5, 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0x88ca,
+ 0x88cb, 0x88cc, 0x88cd, 0x88ce, 0x88cf, 0x88d0, 0x88d1, 0x88d2,
+ 0x88d3, 0x88d4, 0x88d5, 0x88d6, 0x88d7, 0x88d8, 0x88d9, 0x88da,
+ 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88df, 0x88e0, 0x88e1, 0x88e2,
+ 0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7, 0x88e8, 0x88e9, 0x88ea,
+ 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f2,
+ 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0x88f7, 0x88f8, 0x88f9, 0x88fa,
+ 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x8940, 0x8941, 0x8942, 0x8943,
+ 0x8944, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894a, 0x894b,
+ 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951, 0x8952, 0x8953,
+ 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0x895a, 0x895b,
+ 0x895c, 0x895d, 0x895e, 0x895f, 0x8960, 0x8961, 0x8962, 0x8963,
+ 0x8964, 0x8965, 0x8966, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b,
+ 0x896c, 0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973,
+ 0x8974, 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897b,
+ 0x897c, 0x897d, 0x897e, 0x89a1, 0x89a2, 0x89a3, 0x89a4, 0x89a5,
+ 0x89a6, 0x89a7, 0x89a8, 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad,
+ 0x89ae, 0x89af, 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5,
+ 0x89b6, 0x89b7, 0x89b8, 0x89b9, 0x89ba, 0x89bb, 0x89bc, 0x89bd,
+ 0x89be, 0x89bf, 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5,
+ 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0x89ca, 0x89cb, 0x89cc, 0x89cd,
+ 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x89d2, 0x89d3, 0x89d4, 0x89d5,
+ 0x89d6, 0x89d7, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd,
+ 0x89de, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5,
+ 0x89e6, 0x89e7, 0x89e8, 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0x89ed,
+ 0x89ee, 0x89ef, 0x89f0, 0x89f1, 0x89f2, 0x89f3, 0x89f4, 0x89f5,
+ 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0x89fb, 0x89fc, 0x89fd,
+ 0x89fe, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46,
+ 0x8a47, 0x8a48, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e,
+ 0x8a4f, 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56,
+ 0x8a57, 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e,
+ 0x8a5f, 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66,
+ 0x8a67, 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e,
+ 0x8a6f, 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76,
+ 0x8a77, 0x8a78, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e,
+ 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8,
+ 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0,
+ 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8,
+ 0x8ab9, 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0,
+ 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8,
+ 0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0,
+ 0x8ad1, 0x8ad2, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8,
+ 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0,
+ 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8,
+ 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0,
+ 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8,
+ 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8afe, 0x8b40, 0x8b41,
+ 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b47, 0x8b48, 0x8b49,
+ 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0x8b50, 0x8b51,
+ 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0x8b56, 0x8b57, 0x8b58, 0x8b59,
+ 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, 0x8b5e, 0x8b5f, 0x8b60, 0x8b61,
+ 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b66, 0x8b67, 0x8b68, 0x8b69,
+ 0x8b6a, 0x8b6b, 0x8b6c, 0x8b6d, 0x8b6e, 0x8b6f, 0x8b70, 0x8b71,
+ 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79,
+ 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8ba1, 0x8ba2, 0x8ba3,
+ 0x8ba4, 0x8ba5, 0x8ba6, 0x8ba7, 0x8ba8, 0x8ba9, 0x8baa, 0x8bab,
+ 0x8bac, 0x8bad, 0x8bae, 0x8baf, 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3,
+ 0x8bb4, 0x8bb5, 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb,
+ 0x8bbc, 0x8bbd, 0x8bbe, 0x8bbf, 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3,
+ 0x8bc4, 0x8bc5, 0x8bc6, 0x8bc7, 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb,
+ 0x8bcc, 0x8bcd, 0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0x8bd2, 0x8bd3,
+ 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, 0x8bd8, 0x8bd9, 0x8bda, 0x8bdb,
+ 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, 0x8be0, 0x8be1, 0x8be2, 0x8be3,
+ 0x8be4, 0x8be5, 0x8be6, 0x8be7, 0x8be8, 0x8be9, 0x8bea, 0x8beb,
+ 0x8bec, 0x8bed, 0x8bee, 0x8bef, 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3,
+ 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7, 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb,
+ 0x8bfc, 0x8bfd, 0x8bfe, 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44,
+ 0x8c45, 0x8c46, 0x8c47, 0x8c48, 0x8c49, 0x8c4a, 0x8c4b, 0x8c4c,
+ 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54,
+ 0x8c55, 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5a, 0x8c5b, 0x8c5c,
+ 0x8c5d, 0x8c5e, 0x8c5f, 0x8c60, 0x8c61, 0x8c62, 0x8c63, 0x8c64,
+ 0x8c65, 0x8c66, 0x8c67, 0x8c68, 0x8c69, 0x8c6a, 0x8c6b, 0x8c6c,
+ 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72, 0x8c73, 0x8c74,
+ 0x8c75, 0x8c76, 0x8c77, 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0x8c7c,
+ 0x8c7d, 0x8c7e, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5, 0x8ca6,
+ 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad, 0x8cae,
+ 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5, 0x8cb6,
+ 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, 0x8cbe,
+ 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6,
+ 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce,
+ 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6,
+ 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8cde,
+ 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6,
+ 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced, 0x8cee,
+ 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5, 0x8cf6,
+ 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, 0x8cfe,
+ 0x8d40, 0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45, 0x8d46, 0x8d47,
+ 0x8d48, 0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f,
+ 0x8d50, 0x8d51, 0x8d52, 0x8d53, 0x8d54, 0x8d55, 0x8d56, 0x8d57,
+ 0x8d58, 0x8d59, 0x8d5a, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f,
+ 0x8d60, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, 0x8d67,
+ 0x8d68, 0x8d69, 0x8d6a, 0x8d6b, 0x8d6c, 0x8d6d, 0x8d6e, 0x8d6f,
+ 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, 0x8d77,
+ 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8da1,
+ 0x8da2, 0x8da3, 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9,
+ 0x8daa, 0x8dab, 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1,
+ 0x8db2, 0x8db3, 0x8db4, 0x8db5, 0x8db6, 0x8db7, 0x8db8, 0x8db9,
+ 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, 0x8dc0, 0x8dc1,
+ 0x8dc2, 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8, 0x8dc9,
+ 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, 0x8dce, 0x8dcf, 0x8dd0, 0x8dd1,
+ 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0x8dd6, 0x8dd7, 0x8dd8, 0x8dd9,
+ 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, 0x8de0, 0x8de1,
+ 0x8de2, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7, 0x8de8, 0x8de9,
+ 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def, 0x8df0, 0x8df1,
+ 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7, 0x8df8, 0x8df9,
+ 0x8dfa, 0x8dfb, 0x8dfc, 0x8dfd, 0x8dfe, 0xc6a1, 0xc6a2, 0xc6a3,
+ 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab,
+ 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3,
+ 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb,
+ 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3,
+ 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb,
+ 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3,
+ 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db,
+ 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3,
+ 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb,
+ 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3,
+ 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb,
+ 0xc6fc, 0xc6fd, 0xc6fe, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744,
+ 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c,
+ 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754,
+ 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c,
+ 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764,
+ 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c,
+ 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774,
+ 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c,
+ 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6,
+ 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ad, 0xc7ae,
+ 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6,
+ 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be,
+ 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6,
+ 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce,
+ 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6,
+ 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd, 0xc7de,
+ 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4, 0xc7e5, 0xc7e6,
+ 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee,
+ 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6,
+ 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe,
+ 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, 0xc847,
+ 0xc848, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f,
+ 0xc850, 0xc851, 0xc852, 0xc853, 0xc854, 0xc855, 0xc856, 0xc857,
+ 0xc858, 0xc859, 0xc85a, 0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f,
+ 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867,
+ 0xc868, 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f,
+ 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877,
+ 0xc878, 0xc879, 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e, 0xc8a1,
+ 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a8, 0xc8a9,
+ 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, 0xc8b1,
+ 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8, 0xc8b9,
+ 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1,
+ 0xc8c2, 0xc8c3, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9,
+ 0xc8ca, 0xc8cb, 0xc8cc, 0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1,
+ 0xc8d2, 0xc8d3, 0xc8d4, 0xc8d5, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9,
+ 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xc8e0, 0xc8e1,
+ 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9,
+ 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1,
+ 0xc8f2, 0xc8f3, 0xc8f4, 0xc8f5, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9,
+ 0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc8fe, 0xb05a, 0xa7f3, 0xa8ae,
+ 0xb8eb, 0xb7c6, 0xa6ea, 0xa579, 0x8bf8, 0xc074, 0xabb4, 0xaaf7,
+ 0xb3e2, 0xa960, 0xc369, 0xc4ee, 0xc3b9, 0xc5da, 0xc1b3, 0xbb72,
+ 0xc5de, 0xbcd6, 0xaca5, 0xaf4f, 0xaf5f, 0xb8a8, 0xb954, 0xc064,
+ 0xb6c3, 0xa75a, 0xc4e6, 0xc4ea, 0xc4f5, 0xc67d, 0xb450, 0xc0dd,
+ 0xc2c5, 0xc4b0, 0xa9d4, 0xc3be, 0xc4fa, 0xb459, 0xaed4, 0xaef6,
+ 0xaf54, 0xa8d3, 0xa74e, 0xb3d2, 0xbedb, 0xc372, 0xc46c, 0xbf63,
+ 0xa6d1, 0xc4aa, 0xb8b8, 0xb8f4, 0xc553, 0xbe7c, 0xc64f, 0xb84c,
+ 0xb853, 0xbaf1, 0xdb77, 0xbffd, 0xb3c0, 0xbdd7, 0xc362, 0xa7cb,
+ 0xc5a2, 0xc5a4, 0xa863, 0xbd55, 0xb8ef, 0xb970, 0xc253, 0xb9f0,
+ 0xbcd3, 0xb25c, 0xba7c, 0xb2d6, 0xc15c, 0xadae, 0xb0c7, 0xa6d8,
+ 0xbbfe, 0xade2, 0xb857, 0xbaf0, 0xb5d9, 0xb3ae, 0xc5aa, 0xced4,
+ 0xbcd6, 0xbfd5, 0xa4a6, 0xb9e7, 0xabe3, 0xb276, 0xb2a7, 0xa55f,
+ 0xeda8, 0xab4b, 0xb45f, 0xa4a3, 0xaa63, 0xbcc6, 0xafc1, 0xb0d1,
+ 0xb6eb, 0xacd9, 0xb8ad, 0xbba1, 0xb1fe, 0xa8b0, 0xa848, 0xac42,
+ 0xad59, 0xb1b0, 0xb2a4, 0xab47, 0xa8e2, 0xb1e7, 0xc2b3, 0xa87d,
+ 0xbdcc, 0xb671, 0xc079, 0xa766, 0xa46b, 0xc366, 0xaec8, 0xc26f,
+ 0xc472, 0xbe5b, 0xc67a, 0xc452, 0xbea4, 0xa44f, 0xbee4, 0xbefa,
+ 0xf765, 0xa67e, 0xbca6, 0xc5ca, 0xbcbf, 0xbaa7, 0xb7d2, 0xe6a3,
+ 0xbd6d, 0xc170, 0xbdfb, 0xbdac, 0xb373, 0xc1e5, 0xa643, 0xa648,
+ 0xab7c, 0xaf50, 0xb5f5, 0xbba1, 0xb747, 0xa9c0, 0xb1c9, 0xc0d4,
+ 0xc3ae, 0xc279, 0xa54f, 0xcbf1, 0xb9e7, 0xc0ad, 0xccb0, 0xacc2,
+ 0xbcfc, 0xb2dc, 0xb2e2, 0xb961, 0xb973, 0xc646, 0xbbe2, 0xa8d2,
+ 0xc2a7, 0xc4bf, 0xc1f5, 0xb463, 0xa446, 0xb9b1, 0xbc64, 0xa7bf,
+ 0xaec6, 0xbcd6, 0xbf52, 0xc0f8, 0xe764, 0xbff1, 0xc073, 0xb777,
+ 0xa8bf, 0xbc42, 0xccd8, 0xac68, 0xac79, 0xb7c8, 0xaf5b, 0xaf64,
+ 0xb2b8, 0xafc3, 0xc3fe, 0xa4bb, 0xbcae, 0xb3b0, 0xaddb, 0xb15b,
+ 0xb25f, 0xbdfc, 0xabdf, 0xb758, 0xaedf, 0xb276, 0xb6a9, 0xa751,
+ 0xa64f, 0xbc69, 0xa9f6, 0xa7f5, 0xb1f9, 0xaa64, 0xb27a, 0xb567,
+ 0xbfa9, 0xb8cc, 0xa8bd, 0xc2f7, 0xb0ce, 0xb7c4, 0xa75b, 0xbf4d,
+ 0xbf5a, 0xc4a9, 0xc5ec, 0xc5ef, 0xaa4c, 0xb24f, 0xc17b, 0xa5df,
+ 0xb2c1, 0xb2c9, 0xaaac, 0xaaa5, 0xc3d1, 0xa4b0, 0xaff9, 0xa8eb,
+ 0xa4c1, 0xabd7, 0xa9dd, 0xbf7d, 0xa676, 0xac7d, 0xbcc9, 0xbfe7,
+ 0xa6e6, 0xadb0, 0xa8a3, 0xb9f8, 0xc94a, 0xddfc, 0xb6ef, 0xb4b8,
+ 0xe8f9, 0xbdde, 0xaf71, 0xafab, 0xb2bb, 0xbad6, 0xb974, 0xbaeb,
+ 0xa6d0, 0xbdd1, 0xb668, 0xb3a3, 0xb6ba, 0xb97d, 0xc05d, 0xc562,
+ 0xa14a, 0xa157, 0xa159, 0xa15b, 0xa15f, 0xa160, 0xa163, 0xa164,
+ 0xa167, 0xa168, 0xa16b, 0xa16c, 0xa16f, 0xa170, 0xa173, 0xa174,
+ 0xa177, 0xa178, 0xa17b, 0xa17c, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb,
+ 0xa1c8, 0xa1c9, 0xa15c, 0xa14d, 0xa14e, 0xa14f, 0xa151, 0xa152,
+ 0xa153, 0xa154, 0xa17d, 0xa17e, 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4,
+ 0xa1cc, 0xa1cd, 0xa1ce, 0xa1de, 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2,
+ 0xa242, 0xa24c, 0xa24d, 0xa24e, 0xa149, 0xc8d0, 0xa1ad, 0xa243,
+ 0xa248, 0xa1ae, 0xc8cf, 0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141,
+ 0xa1d0, 0xa144, 0xa1fe, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3,
+ 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5,
+ 0xa1d7, 0xa1d6, 0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2,
+ 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da,
+ 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2,
+ 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xc6e4, 0xa240,
+ 0xc6e5, 0xa173, 0xa1c4, 0xa1a5, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec,
+ 0xa2ed, 0xa2ee, 0xa2ef, 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4,
+ 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc,
+ 0xa2fd, 0xa2fe, 0xa340, 0xa341, 0xa342, 0xa343, 0xa161, 0xa155,
+ 0xa162, 0xa1e3, 0xa14e, 0xa246, 0xa247, 0xc8cd, 0xa1c3, 0xc8ce,
+ 0xa244, 0xf9fe,
+};
+
+static const Summary16 big5hkscs_uni2indx_page00[16] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x81ac }, { 6, 0x01b3 },
+ { 12, 0x0703 }, { 17, 0x008c }, { 20, 0x3703 }, { 27, 0x178c },
+};
+static const Summary16 big5hkscs_uni2indx_page02[29] = {
+ /* 0x0200 */
+ { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
+ { 56, 0x0000 }, { 56, 0x0813 }, { 60, 0x0402 }, { 62, 0x0020 },
+ { 63, 0x0408 }, { 65, 0x0000 }, { 65, 0x0000 }, { 65, 0x0000 },
+ { 65, 0x2ec0 }, { 71, 0x0200 }, { 72, 0x0000 }, { 72, 0x0000 },
+ /* 0x0300 */
+ { 72, 0x0020 }, { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 },
+ { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 },
+ { 73, 0x0000 }, { 73, 0xfffe }, { 88, 0x03fb }, { 97, 0xfffe },
+ { 112, 0x03fb },
+};
+static const Summary16 big5hkscs_uni2indx_page20[44] = {
+ /* 0x2000 */
+ { 191, 0x0000 }, { 191, 0x3378 }, { 199, 0x00f4 }, { 204, 0x482c },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ /* 0x2100 */
+ { 209, 0x0228 }, { 212, 0x0040 }, { 213, 0x0002 }, { 214, 0x0000 },
+ { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x03ff }, { 224, 0x03ff },
+ { 234, 0x0000 }, { 234, 0x03cf }, { 242, 0x0000 }, { 242, 0x0300 },
+ { 244, 0x0000 }, { 244, 0x0000 }, { 244, 0x0080 }, { 245, 0x0000 },
+ /* 0x2200 */
+ { 245, 0x0000 }, { 245, 0xc560 }, { 251, 0x4e29 }, { 258, 0x0030 },
+ { 260, 0x0000 }, { 260, 0x0004 }, { 261, 0x00cb }, { 266, 0x0000 },
+ { 266, 0x0000 }, { 266, 0x0220 }, { 268, 0x0020 }, { 269, 0x8000 },
+};
+static const Summary16 big5hkscs_uni2indx_page25[21] = {
+ /* 0x2500 */
+ { 291, 0x1005 }, { 294, 0x1111 }, { 298, 0x1010 }, { 300, 0x1010 },
+ { 302, 0x0000 }, { 302, 0xffff }, { 318, 0xffff }, { 334, 0x001f },
+ { 339, 0xfffe }, { 354, 0x0038 }, { 357, 0x0003 }, { 359, 0x300c },
+ { 363, 0xc8c0 }, { 368, 0x0000 }, { 368, 0x003c }, { 372, 0x0000 },
+ /* 0x2600 */
+ { 372, 0x0260 }, { 375, 0x0000 }, { 375, 0x0000 }, { 375, 0x0000 },
+ { 375, 0x0007 },
+};
+static const Summary16 big5hkscs_uni2indx_page30[62] = {
+ /* 0x3000 */
+ { 408, 0xffef }, { 423, 0x7037 }, { 431, 0x03fe }, { 440, 0x0001 },
+ { 441, 0xfffe }, { 456, 0xffff }, { 472, 0xffff }, { 488, 0xffff },
+ { 504, 0xffff }, { 520, 0x780f }, { 528, 0xfffe }, { 543, 0xffff },
+ { 559, 0xffff }, { 575, 0xffff }, { 591, 0xffff }, { 607, 0x707f },
+ /* 0x3100 */
+ { 617, 0xffe0 }, { 628, 0xffff }, { 644, 0x03ff }, { 654, 0x0000 },
+ { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 },
+ { 654, 0x0000 }, { 654, 0xfffc }, { 668, 0x0000 }, { 668, 0x0000 },
+ { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0x0000 },
+ /* 0x3200 */
+ { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0xffff }, { 684, 0xffff },
+ { 700, 0x000f }, { 704, 0x0000 }, { 704, 0x0000 }, { 704, 0x0000 },
+ { 704, 0xffff }, { 720, 0xffff }, { 736, 0xffff }, { 752, 0x0001 },
+ { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
+ /* 0x3300 */
+ { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
+ { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
+ { 753, 0xc000 }, { 755, 0x7000 }, { 758, 0x0002 }, { 759, 0x0000 },
+ { 759, 0x4010 }, { 761, 0x0026 },
+};
+static const Summary16 big5hkscs_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 1275, 0xff9b }, { 1288, 0xd773 }, { 1299, 0xfd52 }, { 1309, 0xbbcf },
+ { 1321, 0xebac }, { 1331, 0xff4c }, { 1342, 0x0600 }, { 1344, 0xc108 },
+ { 1348, 0x7bff }, { 1362, 0xcf3e }, { 1373, 0x797f }, { 1385, 0x9ec8 },
+ { 1393, 0x6fdf }, { 1406, 0xf7f0 }, { 1417, 0x4f3a }, { 1426, 0xa9ff },
+ /* 0x4f00 */
+ { 1438, 0xef3f }, { 1451, 0x27bf }, { 1462, 0xb304 }, { 1468, 0xffdd },
+ { 1482, 0xfbee }, { 1495, 0xffff }, { 1511, 0xde9f }, { 1523, 0xfffd },
+ { 1538, 0xafff }, { 1552, 0x7df7 }, { 1565, 0xc904 }, { 1570, 0xaeed },
+ { 1581, 0xffbf }, { 1596, 0xffdb }, { 1610, 0xd033 }, { 1617, 0x67ff },
+ /* 0x5000 */
+ { 1630, 0xfbe9 }, { 1642, 0xdffe }, { 1656, 0xffef }, { 1671, 0x18bb },
+ { 1679, 0xffeb }, { 1693, 0xfdea }, { 1705, 0xff7f }, { 1720, 0x24fd },
+ { 1729, 0x79af }, { 1740, 0x7f77 }, { 1753, 0xf04c }, { 1760, 0xfdff },
+ { 1775, 0xeff6 }, { 1788, 0xaefb }, { 1800, 0xf7fb }, { 1814, 0xfb7b },
+ /* 0x5100 */
+ { 1827, 0x7fff }, { 1842, 0x95bf }, { 1853, 0x6e77 }, { 1864, 0xbfbf },
+ { 1878, 0x3bfb }, { 1890, 0xfef4 }, { 1902, 0x7faf }, { 1915, 0x13f2 },
+ { 1923, 0xa7c5 }, { 1932, 0x55fe }, { 1943, 0x5db5 }, { 1953, 0x73ff },
+ { 1966, 0xfff8 }, { 1979, 0xf99f }, { 1991, 0x2017 }, { 1996, 0x777b },
+ /* 0x5200 */
+ { 2008, 0x5fef }, { 2021, 0xf0cf }, { 2031, 0x47f3 }, { 2041, 0x1dff },
+ { 2053, 0x7eda }, { 2064, 0xfef4 }, { 2076, 0xff07 }, { 2087, 0xbfbc },
+ { 2099, 0xbf9f }, { 2112, 0x8fdb }, { 2123, 0x7f5b }, { 2135, 0x5a20 },
+ { 2140, 0x32af }, { 2149, 0xebef }, { 2162, 0x8a5f }, { 2171, 0xdfbb },
+ /* 0x5300 */
+ { 2184, 0xef62 }, { 2194, 0xb6e7 }, { 2205, 0xb49f }, { 2215, 0xfb9f },
+ { 2228, 0x77bf }, { 2241, 0xf49e }, { 2251, 0xf2db }, { 2262, 0xfbbf },
+ { 2276, 0xc414 }, { 2281, 0xf7dc }, { 2293, 0x7ff5 }, { 2306, 0x0a55 },
+ { 2312, 0x3f2e }, { 2322, 0x8fd7 }, { 2333, 0xff7f }, { 2348, 0x59ef },
+ /* 0x5400 */
+ { 2359, 0xffda }, { 2372, 0xff5f }, { 2386, 0xfffb }, { 2401, 0x7bff },
+ { 2415, 0xedef }, { 2428, 0x0010 }, { 2429, 0xbfff }, { 2444, 0xfdff },
+ { 2459, 0xf9f7 }, { 2472, 0x55ff }, { 2484, 0xffff }, { 2500, 0xffdf },
+ { 2515, 0xfbff }, { 2530, 0x4441 }, { 2534, 0xefff }, { 2549, 0xbd8e },
+ /* 0x5500 */
+ { 2559, 0xfffe }, { 2574, 0x459f }, { 2583, 0xfde8 }, { 2594, 0xdbff },
+ { 2608, 0xeffb }, { 2622, 0xf0ef }, { 2633, 0x0e7e }, { 2642, 0xfaee },
+ { 2654, 0xffdf }, { 2669, 0xb73f }, { 2681, 0x7ffe }, { 2695, 0x9e3f },
+ { 2706, 0xffff }, { 2722, 0xffff }, { 2738, 0x97fe }, { 2750, 0xfee7 },
+ /* 0x5600 */
+ { 2763, 0xf377 }, { 2775, 0xf8ff }, { 2788, 0xf6af }, { 2800, 0xeffd },
+ { 2814, 0xf76f }, { 2827, 0x679d }, { 2837, 0xff7f }, { 2852, 0xdfdf },
+ { 2866, 0xfeff }, { 2881, 0xf7ad }, { 2893, 0xfdf2 }, { 2905, 0xf2fe },
+ { 2917, 0x3f6f }, { 2929, 0xecda }, { 2939, 0xecb7 }, { 2950, 0xa683 },
+ /* 0x5700 */
+ { 2957, 0x3f9f }, { 2969, 0xfd7c }, { 2981, 0xf70d }, { 2991, 0xe81d },
+ { 2999, 0xfeef }, { 3013, 0x8897 }, { 3020, 0xafd6 }, { 3031, 0xfcff },
+ { 3045, 0xbd0d }, { 3054, 0xffb9 }, { 3067, 0x44bf }, { 3076, 0xff70 },
+ { 3087, 0xd9de }, { 3098, 0xf0b5 }, { 3107, 0xf2ff }, { 3120, 0x7fff },
+ /* 0x5800 */
+ { 3135, 0x7fff }, { 3150, 0x7a15 }, { 3158, 0xf7ff }, { 3173, 0xafff },
+ { 3187, 0xff91 }, { 3198, 0xffbe }, { 3212, 0xbb3c }, { 3222, 0xfe7e },
+ { 3235, 0xcfef }, { 3248, 0xf71f }, { 3260, 0xdfeb }, { 3273, 0xfc6b },
+ { 3284, 0xcbe6 }, { 3294, 0xff7f }, { 3309, 0x9b9d }, { 3319, 0xfe1d },
+ /* 0x5900 */
+ { 3330, 0xf4fc }, { 3341, 0x96f6 }, { 3351, 0xfeb5 }, { 3363, 0x5196 },
+ { 3370, 0xc7b1 }, { 3379, 0x15bb }, { 3388, 0x6ea7 }, { 3398, 0xfbff },
+ { 3413, 0xe63f }, { 3424, 0xe7dd }, { 3436, 0xd1ff }, { 3448, 0x7fff },
+ { 3463, 0xfffb }, { 3478, 0x7f5f }, { 3491, 0xff7b }, { 3505, 0xffff },
+ /* 0x5a00 */
+ { 3521, 0xbe0f }, { 3531, 0xdfee }, { 3544, 0x7ebb }, { 3556, 0x73e8 },
+ { 3565, 0x37ff }, { 3578, 0xffff }, { 3594, 0x7fff }, { 3609, 0xff83 },
+ { 3620, 0xdd5e }, { 3631, 0xfeff }, { 3646, 0xdae7 }, { 3657, 0xffff },
+ { 3673, 0xffdf }, { 3688, 0xffe8 }, { 3700, 0x7f7f }, { 3714, 0xeffd },
+ /* 0x5b00 */
+ { 3728, 0xbbae }, { 3739, 0xeefb }, { 3752, 0xfdfb }, { 3766, 0xf115 },
+ { 3774, 0xfdfb }, { 3788, 0xbdfb }, { 3801, 0x7b7c }, { 3812, 0xbdff },
+ { 3826, 0xdbbf }, { 3839, 0xffed }, { 3853, 0x75fc }, { 3864, 0x8379 },
+ { 3872, 0x7cff }, { 3885, 0xc3ff }, { 3897, 0xdfff }, { 3912, 0x856f },
+ /* 0x5c00 */
+ { 3921, 0xffba }, { 3934, 0xd47f }, { 3945, 0x153d }, { 3953, 0xdf8b },
+ { 3964, 0xfff3 }, { 3978, 0x737b }, { 3989, 0xf7bd }, { 4002, 0x5e1a },
+ { 4010, 0xbf60 }, { 4019, 0xf63f }, { 4031, 0xffff }, { 4047, 0x05eb },
+ { 4055, 0xdfc6 }, { 4066, 0xcfdf }, { 4079, 0xf720 }, { 4087, 0xabf3 },
+ /* 0x5d00 */
+ { 4098, 0xf8c3 }, { 4107, 0xeff7 }, { 4121, 0xd3fd }, { 4133, 0xf7ff },
+ { 4148, 0x5fef }, { 4161, 0x4ae7 }, { 4170, 0x9bac }, { 4179, 0xfe97 },
+ { 4191, 0x6ff7 }, { 4204, 0xf6bc }, { 4215, 0xff97 }, { 4228, 0x37f7 },
+ { 4240, 0xaacf }, { 4250, 0xe9f6 }, { 4261, 0x49e7 }, { 4270, 0xe2bf },
+ /* 0x5e00 */
+ { 4281, 0x5e5c }, { 4290, 0xaff6 }, { 4302, 0x6b3f }, { 4313, 0x61d8 },
+ { 4320, 0xfd3f }, { 4333, 0xfbb8 }, { 4344, 0xffcf }, { 4358, 0xff7d },
+ { 4372, 0xbfdd }, { 4385, 0x1ee4 }, { 4393, 0x7dfd }, { 4406, 0x63ff },
+ { 4418, 0x7ff6 }, { 4431, 0xffff }, { 4447, 0xd3ef }, { 4459, 0xdfde },
+ /* 0x5f00 */
+ { 4472, 0xfdb6 }, { 4484, 0xadbc }, { 4494, 0x63fc }, { 4504, 0x15eb },
+ { 4513, 0xff59 }, { 4525, 0x33d3 }, { 4534, 0xbebe }, { 4546, 0xfbdf },
+ { 4560, 0x1fef }, { 4572, 0xdbc7 }, { 4583, 0xfff3 }, { 4597, 0xfee6 },
+ { 4609, 0xb23f }, { 4619, 0xebf7 }, { 4632, 0xed3b }, { 4643, 0xadba },
+ /* 0x6000 */
+ { 4653, 0xfe01 }, { 4661, 0x7eff }, { 4675, 0xffff }, { 4691, 0x0abe },
+ { 4699, 0x36ff }, { 4711, 0xef3d }, { 4723, 0xfffc }, { 4737, 0xc0a5 },
+ { 4743, 0x77fb }, { 4756, 0xfcf5 }, { 4768, 0x019d }, { 4774, 0xffff },
+ { 4790, 0xfffb }, { 4805, 0xffba }, { 4818, 0x03df }, { 4827, 0xffff },
+ /* 0x6100 */
+ { 4843, 0xfffb }, { 4858, 0xbf7d }, { 4871, 0xdb8c }, { 4880, 0xe8d5 },
+ { 4889, 0xfff7 }, { 4904, 0xff7d }, { 4918, 0xddff }, { 4932, 0x76ff },
+ { 4945, 0x7e8f }, { 4956, 0xbf7f }, { 4970, 0xff96 }, { 4982, 0xd7ff },
+ { 4996, 0xbfef }, { 5010, 0xc549 }, { 5017, 0x6ffd }, { 5030, 0xffe7 },
+ /* 0x6200 */
+ { 5044, 0x779b }, { 5055, 0x8e77 }, { 5065, 0x7ebf }, { 5078, 0xe6dd },
+ { 5089, 0x7fcf }, { 5102, 0x5f1f }, { 5113, 0xe17f }, { 5124, 0xfedf },
+ { 5138, 0xd7ff }, { 5152, 0x21ff }, { 5162, 0xff50 }, { 5172, 0xfb7b },
+ { 5185, 0xfffc }, { 5199, 0x9fff }, { 5213, 0xf820 }, { 5219, 0xffff },
+ /* 0x6300 */
+ { 5235, 0xfb8f }, { 5247, 0x017b }, { 5254, 0xff00 }, { 5262, 0x7ffe },
+ { 5276, 0xffff }, { 5292, 0x07f3 }, { 5301, 0xfbb0 }, { 5311, 0xbfe7 },
+ { 5324, 0xffbf }, { 5339, 0xfbd7 }, { 5352, 0xffbf }, { 5367, 0x6203 },
+ { 5372, 0xffff }, { 5388, 0xffef }, { 5403, 0xefff }, { 5418, 0x5b7f },
+ /* 0x6400 */
+ { 5430, 0xfec0 }, { 5439, 0xddfd }, { 5452, 0xfdff }, { 5467, 0xeffd },
+ { 5481, 0x680b }, { 5487, 0xff1f }, { 5500, 0xfbe3 }, { 5512, 0xbfff },
+ { 5527, 0xbfa4 }, { 5537, 0xf7ef }, { 5551, 0xfa7d }, { 5563, 0xf85f },
+ { 5574, 0xeebf }, { 5587, 0x2fdd }, { 5598, 0xbfff }, { 5613, 0xfd9f },
+ /* 0x6500 */
+ { 5626, 0xf6db }, { 5638, 0xfbfb }, { 5652, 0xfe7f }, { 5666, 0xebfd },
+ { 5679, 0xa76a }, { 5688, 0xf3fa }, { 5700, 0xbdfc }, { 5712, 0x9ffc },
+ { 5724, 0x1bff }, { 5736, 0xfaf7 }, { 5749, 0xddb7 }, { 5761, 0xfbed },
+ { 5774, 0xf87e }, { 5785, 0xecdf }, { 5797, 0xf36f }, { 5809, 0xbc3f },
+ /* 0x6600 */
+ { 5820, 0xfffd }, { 5835, 0xf13f }, { 5846, 0xe9ff }, { 5859, 0x067f },
+ { 5868, 0x9fbe }, { 5880, 0xfe8e }, { 5891, 0xddfe }, { 5904, 0x7fdf },
+ { 5918, 0x7ff1 }, { 5930, 0xa7f7 }, { 5942, 0xef17 }, { 5953, 0xefff },
+ { 5968, 0xffd1 }, { 5980, 0x7f44 }, { 5989, 0x7b59 }, { 5999, 0xd3df },
+ /* 0x6700 */
+ { 6011, 0xff3f }, { 6025, 0xebfd }, { 6038, 0x7def }, { 6051, 0xff7a },
+ { 6064, 0xfbf0 }, { 6075, 0xf6eb }, { 6087, 0xbc87 }, { 6096, 0xffff },
+ { 6112, 0xfafa }, { 6124, 0xb7bf }, { 6137, 0xd011 }, { 6142, 0x8fff },
+ { 6155, 0xff7f }, { 6170, 0xffdf }, { 6185, 0xfefc }, { 6198, 0xd7ff },
+ /* 0x6800 */
+ { 6212, 0x201f }, { 6218, 0xfddd }, { 6231, 0xef67 }, { 6243, 0x7ffe },
+ { 6257, 0xffff }, { 6273, 0x207b }, { 6280, 0xe820 }, { 6285, 0xfbf6 },
+ { 6298, 0x9fff }, { 6312, 0xb9df }, { 6324, 0xffdf }, { 6339, 0x227f },
+ { 6348, 0x7ff8 }, { 6360, 0xf5ff }, { 6374, 0xdfdb }, { 6387, 0x3fff },
+ /* 0x6900 */
+ { 6401, 0xffff }, { 6417, 0x0fbf }, { 6428, 0x9420 }, { 6432, 0xfbfd },
+ { 6446, 0xdf7f }, { 6460, 0xfffe }, { 6475, 0xffff }, { 6491, 0x0fff },
+ { 6503, 0x646d }, { 6511, 0xdffb }, { 6525, 0xffff }, { 6541, 0xfaff },
+ { 6555, 0xfe5f }, { 6568, 0x027b }, { 6575, 0x7bf6 }, { 6587, 0xffde },
+ /* 0x6a00 */
+ { 6601, 0xbfff }, { 6616, 0xfffa }, { 6630, 0x39eb }, { 6640, 0xff3c },
+ { 6652, 0xfbfb }, { 6666, 0xefff }, { 6681, 0xafff }, { 6695, 0xc452 },
+ { 6701, 0xf6bf }, { 6714, 0xfeff }, { 6729, 0xf9ff }, { 6743, 0x6ffe },
+ { 6756, 0xbfec }, { 6768, 0xff1b }, { 6780, 0xdda3 }, { 6790, 0x1f4b },
+ /* 0x6b00 */
+ { 6799, 0x8f3d }, { 6809, 0x67cf }, { 6820, 0xb12b }, { 6828, 0xfffe },
+ { 6843, 0x7fee }, { 6856, 0xdaf7 }, { 6868, 0xa4ff }, { 6879, 0xcfd4 },
+ { 6889, 0xf75f }, { 6902, 0xcbf2 }, { 6912, 0xecfd }, { 6924, 0xb4ed },
+ { 6934, 0xbffb }, { 6948, 0x5ddd }, { 6959, 0x9ddf }, { 6971, 0xff8d },
+ /* 0x6c00 */
+ { 6983, 0xbb7f }, { 6996, 0xbf7b }, { 7009, 0xddfb }, { 7022, 0xeffb },
+ { 7036, 0xfe4f }, { 7048, 0xffb5 }, { 7061, 0xefe3 }, { 7073, 0xef7f },
+ { 7087, 0xffff }, { 7103, 0xbf7d }, { 7116, 0xfc04 }, { 7123, 0xffdf },
+ { 7138, 0xfeff }, { 7153, 0xfeff }, { 7168, 0xffaf }, { 7182, 0x822f },
+ /* 0x6d00 */
+ { 7189, 0xffff }, { 7205, 0xefc7 }, { 7217, 0xfff5 }, { 7231, 0xffff },
+ { 7247, 0x4007 }, { 7251, 0xdf80 }, { 7259, 0xf7ff }, { 7274, 0xfff7 },
+ { 7289, 0xffff }, { 7305, 0x01ff }, { 7314, 0xdc30 }, { 7321, 0xffbe },
+ { 7335, 0xbff5 }, { 7348, 0xffff }, { 7364, 0xff7f }, { 7379, 0x7eff },
+ /* 0x6e00 */
+ { 7393, 0x843d }, { 7400, 0xbf20 }, { 7408, 0xffff }, { 7424, 0xff7f },
+ { 7439, 0xeefb }, { 7452, 0xff7f }, { 7467, 0xcbff }, { 7480, 0x13de },
+ { 7489, 0xeb40 }, { 7496, 0xffdd }, { 7510, 0xccff }, { 7522, 0xffff },
+ { 7538, 0xffff }, { 7554, 0x3f7f }, { 7567, 0xfb04 }, { 7575, 0xfff6 },
+ /* 0x6f00 */
+ { 7589, 0xffff }, { 7605, 0xd7fc }, { 7617, 0xfeff }, { 7632, 0xffff },
+ { 7648, 0xc01b }, { 7654, 0xfdff }, { 7669, 0xfedf }, { 7683, 0xffdd },
+ { 7697, 0x7ff7 }, { 7711, 0xe0fd }, { 7721, 0xffff }, { 7737, 0xff7f },
+ { 7752, 0xffdf }, { 7767, 0xff38 }, { 7778, 0xfbdf }, { 7792, 0xddd7 },
+ /* 0x7000 */
+ { 7804, 0xfefb }, { 7818, 0xfff2 }, { 7831, 0x9fdf }, { 7844, 0xdfbf },
+ { 7858, 0x3f7f }, { 7871, 0xfdf7 }, { 7885, 0x9fff }, { 7899, 0xf7f3 },
+ { 7912, 0xce7e }, { 7923, 0x877e }, { 7933, 0xfafb }, { 7946, 0x7fbb },
+ { 7959, 0xfdf1 }, { 7971, 0xf7ff }, { 7986, 0x8017 }, { 7991, 0xfffb },
+ /* 0x7100 */
+ { 8006, 0x7e75 }, { 8017, 0xfe89 }, { 8027, 0xdb6f }, { 8039, 0x4c7f },
+ { 8049, 0xfeff }, { 8064, 0xf75f }, { 8077, 0x5fff }, { 8091, 0x7def },
+ { 8104, 0xd7f7 }, { 8117, 0xffd7 }, { 8131, 0xb7bf }, { 8144, 0xf7bf },
+ { 8158, 0xcfff }, { 8172, 0xbf77 }, { 8185, 0x79f7 }, { 8197, 0xfb77 },
+ /* 0x7200 */
+ { 8210, 0xf6ef }, { 8223, 0xeef9 }, { 8235, 0x7fdc }, { 8247, 0xef61 },
+ { 8257, 0x9fd7 }, { 8269, 0xffed }, { 8283, 0xd6cf }, { 8294, 0xfbdd },
+ { 8307, 0xfbf7 }, { 8321, 0xedff }, { 8335, 0xf7fe }, { 8349, 0xa435 },
+ { 8356, 0x7e7f }, { 8369, 0x97d7 }, { 8380, 0x0f5f }, { 8390, 0xffd8 },
+ /* 0x7300 */
+ { 8402, 0x9d97 }, { 8412, 0x7bcf }, { 8424, 0x7fec }, { 8436, 0xdfff },
+ { 8451, 0xf73f }, { 8464, 0xef87 }, { 8475, 0xdfe7 }, { 8488, 0xfdff },
+ { 8503, 0xdfff }, { 8518, 0xf1fc }, { 8529, 0x3ff7 }, { 8542, 0xdffc },
+ { 8555, 0xffed }, { 8569, 0x7ffd }, { 8583, 0xefff }, { 8598, 0xfff8 },
+ /* 0x7400 */
+ { 8611, 0x3fff }, { 8625, 0xfef6 }, { 8638, 0xff7f }, { 8653, 0x97ff },
+ { 8666, 0xefff }, { 8681, 0xfeff }, { 8696, 0xffbd }, { 8710, 0xf67f },
+ { 8723, 0x3fef }, { 8736, 0xdfb5 }, { 8748, 0xaffb }, { 8761, 0xeff7 },
+ { 8775, 0x9d2f }, { 8785, 0xfff9 }, { 8799, 0x53ff }, { 8811, 0xe9f7 },
+ /* 0x7500 */
+ { 8823, 0xf9bd }, { 8835, 0xf7ff }, { 8850, 0xff66 }, { 8862, 0xefbf },
+ { 8876, 0xfdc5 }, { 8887, 0xbe3a }, { 8897, 0xfcfd }, { 8910, 0xe7c5 },
+ { 8920, 0xfcd9 }, { 8931, 0x6737 }, { 8941, 0x0cbc }, { 8948, 0xff7f },
+ { 8963, 0xfdbf }, { 8977, 0xffb7 }, { 8991, 0xa0df }, { 9000, 0xffff },
+ /* 0x7600 */
+ { 9016, 0xbf8f }, { 9028, 0xfe7b }, { 9041, 0xb3ff }, { 9054, 0x3d3f },
+ { 9065, 0xf3cd }, { 9076, 0x97df }, { 9088, 0xf6f7 }, { 9101, 0xff7f },
+ { 9116, 0xcfd6 }, { 9127, 0x7e6d }, { 9138, 0xec72 }, { 9147, 0xedb1 },
+ { 9157, 0x777c }, { 9168, 0xfe5c }, { 9179, 0xf6fa }, { 9191, 0x5fbf },
+ /* 0x7700 */
+ { 9204, 0xdfba }, { 9216, 0xee2f }, { 9227, 0xabfd }, { 9239, 0x7ffe },
+ { 9253, 0xfcf9 }, { 9265, 0xdf74 }, { 9276, 0xffef }, { 9291, 0xff84 },
+ { 9301, 0xfbbf }, { 9315, 0xffaa }, { 9327, 0xbdaf }, { 9339, 0xfeff },
+ { 9354, 0xfebc }, { 9366, 0x7fb9 }, { 9378, 0xf3ed }, { 9390, 0x7f9f },
+ /* 0x7800 */
+ { 9403, 0xf36c }, { 9413, 0xf11f }, { 9423, 0xffef }, { 9438, 0x33bf },
+ { 9449, 0x7fbc }, { 9461, 0x701f }, { 9469, 0xff75 }, { 9482, 0xde03 },
+ { 9490, 0xf3fb }, { 9503, 0xc7fa }, { 9514, 0xbfbf }, { 9528, 0x5f5f },
+ { 9540, 0xffba }, { 9553, 0xedbf }, { 9566, 0xf7bf }, { 9580, 0xfebf },
+ /* 0x7900 */
+ { 9594, 0x5276 }, { 9602, 0x7a9f }, { 9613, 0xfffa }, { 9627, 0xff7e },
+ { 9641, 0x9ff7 }, { 9654, 0xffff }, { 9670, 0x2fbf }, { 9682, 0xf61f },
+ { 9693, 0xedcf }, { 9705, 0xbfff }, { 9720, 0x7ff7 }, { 9734, 0xefdf },
+ { 9748, 0xfb73 }, { 9760, 0xf176 }, { 9770, 0x7edd }, { 9782, 0x0dd2 },
+ /* 0x7a00 */
+ { 9789, 0x3d7d }, { 9800, 0xdfbf }, { 9814, 0xed45 }, { 9823, 0xfe83 },
+ { 9833, 0x7ff9 }, { 9846, 0x9dd0 }, { 9854, 0x7ba7 }, { 9865, 0xef73 },
+ { 9877, 0x9ffb }, { 9890, 0xc3ff }, { 9902, 0xdf0d }, { 9912, 0xddff },
+ { 9926, 0x8fbf }, { 9938, 0xbf0a }, { 9947, 0xeefd }, { 9960, 0xeec0 },
+ /* 0x7b00 */
+ { 9968, 0xdf73 }, { 9980, 0xef1f }, { 9992, 0xfffd }, { 10007, 0x0b3f },
+ { 10016, 0xfffd }, { 10031, 0x0177 }, { 10038, 0xf2ff }, { 10051, 0x09ff },
+ { 10061, 0xfdb4 }, { 10072, 0x3bf7 }, { 10084, 0xb01f }, { 10092, 0x43b6 },
+ { 10100, 0xded3 }, { 10111, 0xff31 }, { 10122, 0x1fff }, { 10135, 0xff9f },
+ /* 0x7c00 */
+ { 10149, 0xfeef }, { 10163, 0xfa27 }, { 10173, 0x3fef }, { 10186, 0xfba9 },
+ { 10197, 0x37bd }, { 10208, 0xbedb }, { 10220, 0xfef9 }, { 10233, 0xff3d },
+ { 10246, 0x777b }, { 10258, 0xd1f6 }, { 10268, 0xd1ee }, { 10278, 0xff3e },
+ { 10291, 0x7fac }, { 10302, 0xf6ff }, { 10316, 0xf5c5 }, { 10326, 0x7bff },
+ /* 0x7d00 */
+ { 10340, 0xffff }, { 10356, 0xffff }, { 10372, 0xdb27 }, { 10382, 0xff6f },
+ { 10396, 0xe4ff }, { 10408, 0xfd7f }, { 10422, 0xefce }, { 10434, 0xbe0f },
+ { 10444, 0xfb7b }, { 10457, 0xf0de }, { 10467, 0xffdf }, { 10482, 0xffbf },
+ { 10497, 0xfef7 }, { 10511, 0xff9d }, { 10524, 0xd7fb }, { 10537, 0x6eff },
+ /* 0x7e00 */
+ { 10550, 0xff88 }, { 10560, 0xfcff }, { 10574, 0xeebf }, { 10587, 0xffff },
+ { 10603, 0x13ff }, { 10614, 0xdfff }, { 10629, 0xffaf }, { 10643, 0xfffd },
+ { 10658, 0xfdc7 }, { 10670, 0x9ffe }, { 10683, 0x1010 }, { 10685, 0x0400 },
+ { 10686, 0x8080 }, { 10688, 0x8000 }, { 10689, 0x0000 }, { 10689, 0x0000 },
+ /* 0x7f00 */
+ { 10689, 0x0040 }, { 10690, 0x0000 }, { 10690, 0x0000 }, { 10690, 0xe7c0 },
+ { 10698, 0xffbb }, { 10712, 0xf93f }, { 10724, 0x7feb }, { 10737, 0xffef },
+ { 10752, 0xffe8 }, { 10764, 0x7cfe }, { 10776, 0xf3ff }, { 10790, 0xffff },
+ { 10806, 0xfeaf }, { 10819, 0xf8b7 }, { 10830, 0xffef }, { 10845, 0xffbf },
+ /* 0x8000 */
+ { 10860, 0xf9ff }, { 10874, 0xfbf7 }, { 10888, 0xd773 }, { 10899, 0xfafb },
+ { 10912, 0x85c8 }, { 10918, 0x7d57 }, { 10929, 0x90de }, { 10937, 0xe3ef },
+ { 10949, 0x9ef5 }, { 10960, 0xbf6d }, { 10972, 0xeeae }, { 10983, 0x35f6 },
+ { 10993, 0xf7fc }, { 11006, 0x7ff3 }, { 11019, 0xb27b }, { 11029, 0x7f7f },
+ /* 0x8100 */
+ { 11043, 0x57ef }, { 11055, 0xeff4 }, { 11067, 0xbebe }, { 11079, 0x6695 },
+ { 11087, 0xfddc }, { 11099, 0x5e7f }, { 11111, 0xeaf7 }, { 11123, 0x97df },
+ { 11135, 0xbfdd }, { 11148, 0xffa8 }, { 11159, 0x5fed }, { 11171, 0xfeff },
+ { 11186, 0xb7ff }, { 11200, 0xefa7 }, { 11212, 0xf7ff }, { 11227, 0xdfdc },
+ /* 0x8200 */
+ { 11239, 0x3fb7 }, { 11251, 0xfd77 }, { 11264, 0xbf67 }, { 11276, 0xf7fc },
+ { 11289, 0xcab5 }, { 11298, 0xdfff }, { 11313, 0xfb7e }, { 11326, 0xfff6 },
+ { 11340, 0xecb9 }, { 11350, 0xef1f }, { 11362, 0xffff }, { 11378, 0xfffb },
+ { 11393, 0x841d }, { 11399, 0xdbff }, { 11413, 0xfdff }, { 11428, 0xffff },
+ /* 0x8300 */
+ { 11444, 0x3bff }, { 11457, 0x7fc0 }, { 11466, 0xbff5 }, { 11479, 0xbffe },
+ { 11493, 0xffbf }, { 11508, 0x00df }, { 11515, 0x804c }, { 11519, 0xfdf8 },
+ { 11531, 0xffea }, { 11544, 0x7fff }, { 11559, 0xdffd }, { 11573, 0xe201 },
+ { 11578, 0xffff }, { 11594, 0xfbfa }, { 11607, 0xffbf }, { 11622, 0xff7f },
+ /* 0x8400 */
+ { 11637, 0xfefa }, { 11650, 0x195f }, { 11659, 0xfa5b }, { 11670, 0xffff },
+ { 11686, 0x7ffd }, { 11700, 0xffff }, { 11716, 0xfbff }, { 11731, 0xe7ff },
+ { 11745, 0xe145 }, { 11752, 0xffdf }, { 11767, 0xff9f }, { 11781, 0xff57 },
+ { 11794, 0xfef7 }, { 11808, 0x4cdf }, { 11818, 0xdfb6 }, { 11830, 0xffdf },
+ /* 0x8500 */
+ { 11845, 0xffed }, { 11859, 0xf7ff }, { 11874, 0xfffb }, { 11889, 0x691b },
+ { 11897, 0x7fff }, { 11912, 0xeffe }, { 11926, 0xffff }, { 11942, 0x5feb },
+ { 11954, 0xffff }, { 11970, 0xfff3 }, { 11984, 0x87df }, { 11995, 0xe7fb },
+ { 12008, 0xebff }, { 12022, 0xf7e7 }, { 12035, 0xff7f }, { 12050, 0xffc7 },
+ /* 0x8600 */
+ { 12063, 0xbef7 }, { 12076, 0xdfd3 }, { 12088, 0xf7ff }, { 12103, 0xdf7e },
+ { 12116, 0x79ed }, { 12127, 0xda7d }, { 12138, 0xffbe }, { 12152, 0x5e9f },
+ { 12163, 0x7ce0 }, { 12171, 0x77ff }, { 12185, 0xa7bf }, { 12197, 0xffff },
+ { 12213, 0x1bff }, { 12225, 0xffdb }, { 12239, 0xbf5c }, { 12250, 0x4fe0 },
+ /* 0x8700 */
+ { 12258, 0x7fff }, { 12273, 0x5f0e }, { 12282, 0x77ff }, { 12296, 0xddbf },
+ { 12309, 0xf04f }, { 12318, 0xffff }, { 12334, 0xffff }, { 12350, 0x2ffb },
+ { 12362, 0xbbfe }, { 12375, 0xfddf }, { 12389, 0xfe3c }, { 12400, 0xffff },
+ { 12416, 0x5f7f }, { 12429, 0xffde }, { 12443, 0xfdff }, { 12458, 0xdefc },
+ /* 0x8800 */
+ { 12470, 0xbf7f }, { 12484, 0xbbfb }, { 12497, 0xffff }, { 12513, 0xfbef },
+ { 12527, 0xfd7f }, { 12541, 0x6eec }, { 12551, 0xefbf }, { 12565, 0xf2f7 },
+ { 12577, 0xfb9f }, { 12590, 0xdfef }, { 12604, 0x5d97 }, { 12614, 0xf7f6 },
+ { 12627, 0xfea7 }, { 12639, 0xfff5 }, { 12653, 0xd9c2 }, { 12661, 0xffff },
+ /* 0x8900 */
+ { 12677, 0x5ee7 }, { 12688, 0xc7ff }, { 12701, 0xfefe }, { 12715, 0x79ef },
+ { 12727, 0xbade }, { 12738, 0xffdf }, { 12753, 0xfe7f }, { 12767, 0xdede },
+ { 12779, 0x8fef }, { 12791, 0xf9fa }, { 12803, 0xf6fe }, { 12816, 0xf6c4 },
+ { 12825, 0x0043 }, { 12828, 0xbe7c }, { 12839, 0x3bff }, { 12852, 0xdddf },
+ /* 0x8a00 */
+ { 12865, 0xd59d }, { 12875, 0xf9ef }, { 12888, 0x3eac }, { 12897, 0xff53 },
+ { 12909, 0xf773 }, { 12921, 0x4bf7 }, { 12932, 0x7bcf }, { 12944, 0xdeff },
+ { 12958, 0xb8fe }, { 12969, 0x577f }, { 12981, 0x8ffb }, { 12993, 0xff55 },
+ { 13005, 0xabfd }, { 13017, 0xfffe }, { 13032, 0xedd7 }, { 13044, 0xddff },
+ /* 0x8b00 */
+ { 13058, 0xfdf7 }, { 13072, 0xffff }, { 13088, 0xfdfd }, { 13102, 0xfeeb },
+ { 13115, 0xffef }, { 13130, 0xf7ff }, { 13145, 0xbfed }, { 13158, 0xef91 },
+ { 13168, 0x5d7f }, { 13180, 0xdf7d }, { 13193, 0x0001 }, { 13194, 0x4000 },
+ { 13195, 0x0000 }, { 13195, 0x0000 }, { 13195, 0x0004 }, { 13196, 0x0000 },
+ /* 0x8c00 */
+ { 13196, 0x0000 }, { 13196, 0x0000 }, { 13196, 0x0000 }, { 13196, 0xfa80 },
+ { 13203, 0xffee }, { 13217, 0xb4f3 }, { 13227, 0xbf76 }, { 13239, 0x2fef },
+ { 13251, 0xb677 }, { 13262, 0xffbf }, { 13277, 0xbfbf }, { 13291, 0xfffd },
+ { 13306, 0xb5bf }, { 13318, 0xfefe }, { 13332, 0x7fff }, { 13347, 0x7fbf },
+ /* 0x8d00 */
+ { 13361, 0xbffd }, { 13375, 0x3bff }, { 13388, 0x0000 }, { 13388, 0x0000 },
+ { 13388, 0x0000 }, { 13388, 0x0000 }, { 13388, 0xfbd0 }, { 13398, 0x2fdd },
+ { 13409, 0xf637 }, { 13420, 0x9a7f }, { 13431, 0xffeb }, { 13445, 0xd6fc },
+ { 13456, 0xf9ef }, { 13469, 0xbffb }, { 13483, 0xdfdf }, { 13497, 0xf41f },
+ /* 0x8e00 */
+ { 13507, 0xe6ff }, { 13520, 0xffff }, { 13536, 0x6fff }, { 13550, 0xf77b },
+ { 13563, 0xfff7 }, { 13578, 0xfef9 }, { 13591, 0xb7ff }, { 13605, 0x5dfe },
+ { 13617, 0x7ff7 }, { 13631, 0xe5ff }, { 13644, 0x3ffb }, { 13657, 0x3645 },
+ { 13664, 0xfe0d }, { 13674, 0xfd9e }, { 13686, 0xfbf7 }, { 13700, 0xdff6 },
+ /* 0x8f00 */
+ { 13713, 0x6fef }, { 13726, 0xffff }, { 13742, 0xf679 }, { 13753, 0xcbfd },
+ { 13765, 0xefff }, { 13780, 0xffff }, { 13796, 0x40df }, { 13804, 0x0000 },
+ { 13804, 0x0000 }, { 13804, 0x9808 }, { 13808, 0xe1e9 }, { 13817, 0xdfff },
+ { 13832, 0xfe76 }, { 13844, 0x04ff }, { 13853, 0x6d7f }, { 13865, 0xfff1 },
+ /* 0x9000 */
+ { 13878, 0xb97f }, { 13890, 0xfef7 }, { 13904, 0xe01f }, { 13912, 0xf1fe },
+ { 13924, 0xfe96 }, { 13935, 0x7b7f }, { 13948, 0xfb9f }, { 13961, 0xfffd },
+ { 13976, 0xadff }, { 13989, 0xcbb3 }, { 13999, 0xc5ef }, { 14010, 0xe97f },
+ { 14022, 0x4dba }, { 14031, 0xbff0 }, { 14042, 0xbf3f }, { 14055, 0xfe3f },
+ /* 0x9100 */
+ { 14068, 0xebff }, { 14082, 0xffd7 }, { 14096, 0xffdf }, { 14111, 0xcf7f },
+ { 14124, 0xfffb }, { 14139, 0xd7ef }, { 14152, 0xd7bf }, { 14165, 0x17fd },
+ { 14176, 0xfeff }, { 14191, 0xfe0f }, { 14202, 0xffaf }, { 14216, 0x7eff },
+ { 14230, 0xfaff }, { 14244, 0xb7fb }, { 14257, 0x7ffc }, { 14270, 0xe7fa },
+ /* 0x9200 */
+ { 14282, 0xf7ff }, { 14297, 0x56ff }, { 14309, 0x6dfa }, { 14320, 0xf7ff },
+ { 14335, 0xff73 }, { 14348, 0xedff }, { 14362, 0xf8ff }, { 14375, 0xffc5 },
+ { 14387, 0xffff }, { 14403, 0x3ffa }, { 14415, 0x5fff }, { 14429, 0xdefe },
+ { 14442, 0xffff }, { 14458, 0xebbf }, { 14471, 0xdffb }, { 14485, 0xffdf },
+ /* 0x9300 */
+ { 14500, 0xfbdf }, { 14514, 0xef7d }, { 14527, 0xffff }, { 14543, 0x137b },
+ { 14552, 0xffff }, { 14568, 0xdff7 }, { 14582, 0x7fff }, { 14597, 0x7ffb },
+ { 14611, 0xf7ff }, { 14626, 0xfff7 }, { 14641, 0xf7ff }, { 14656, 0xa9bf },
+ { 14667, 0xfddd }, { 14680, 0xffff }, { 14696, 0x51df }, { 14706, 0xfffb },
+ /* 0x9400 */
+ { 14721, 0xffdb }, { 14735, 0x2bff }, { 14747, 0x7ff1 }, { 14759, 0xffef },
+ { 14774, 0xbffd }, { 14788, 0x69b7 }, { 14798, 0xffbd }, { 14812, 0xfbff },
+ { 14827, 0x002f }, { 14832, 0x8000 }, { 14833, 0x0004 }, { 14834, 0x0000 },
+ { 14834, 0x000a }, { 14836, 0x1000 }, { 14837, 0x0000 }, { 14837, 0x0040 },
+ /* 0x9500 */
+ { 14838, 0x0000 }, { 14838, 0x0000 }, { 14838, 0x2000 }, { 14839, 0x0000 },
+ { 14839, 0x0080 }, { 14840, 0x0000 }, { 14840, 0x0000 }, { 14840, 0xbd80 },
+ { 14847, 0xfb6d }, { 14859, 0xdbdf }, { 14872, 0x7fff }, { 14887, 0xfee3 },
+ { 14899, 0x3fe9 }, { 14910, 0xdc7f }, { 14922, 0x013f }, { 14929, 0x0010 },
+ /* 0x9600 */
+ { 14930, 0x0000 }, { 14930, 0x7000 }, { 14933, 0xf51f }, { 14944, 0xbf0f },
+ { 14955, 0xfc3f }, { 14967, 0xf95b }, { 14978, 0xbe1e }, { 14988, 0x79ff },
+ { 15001, 0xeffb }, { 15015, 0x5bfe }, { 15027, 0x57be }, { 15038, 0xbb5b },
+ { 15049, 0x7fff }, { 15064, 0xfffc }, { 15078, 0x872e }, { 15086, 0xaff7 },
+ /* 0x9700 */
+ { 15099, 0xebfd }, { 15112, 0xfb4f }, { 15124, 0xdfff }, { 15139, 0xe767 },
+ { 15150, 0x0bdf }, { 15160, 0xfde6 }, { 15172, 0x7747 }, { 15182, 0xfddf },
+ { 15196, 0xefbf }, { 15210, 0xff90 }, { 15220, 0x7d7f }, { 15233, 0xefde },
+ { 15246, 0xfbff }, { 15261, 0xf3fd }, { 15274, 0x606b }, { 15281, 0xef6f },
+ /* 0x9800 */
+ { 15294, 0xf5ff }, { 15308, 0xf9ff }, { 15322, 0xebdb }, { 15334, 0x0bbd },
+ { 15343, 0xfffa }, { 15357, 0xfb8f }, { 15369, 0x9ffd }, { 15382, 0x003f },
+ { 15388, 0x0000 }, { 15388, 0x0000 }, { 15388, 0xf300 }, { 15394, 0xffde },
+ { 15408, 0x5fdf }, { 15421, 0xd800 }, { 15425, 0xbeef }, { 15438, 0x7676 },
+ /* 0x9900 */
+ { 15448, 0x57ad }, { 15458, 0xdfff }, { 15473, 0xffb2 }, { 15485, 0xffaf },
+ { 15499, 0x7faf }, { 15512, 0xfbff }, { 15527, 0x000e }, { 15530, 0x0000 },
+ { 15530, 0x0000 }, { 15530, 0x7bc0 }, { 15538, 0xfdfa }, { 15551, 0x3f3f },
+ { 15563, 0xfabe }, { 15575, 0xbfff }, { 15590, 0x76ff }, { 15603, 0xfff3 },
+ /* 0x9a00 */
+ { 15617, 0xfefe }, { 15631, 0xfe73 }, { 15643, 0xfeff }, { 15658, 0xfff7 },
+ { 15673, 0xf77f }, { 15687, 0xdffd }, { 15701, 0x1ffd }, { 15713, 0x0000 },
+ { 15713, 0x8000 }, { 15714, 0x0000 }, { 15714, 0xa900 }, { 15718, 0xffdf },
+ { 15733, 0xa4c7 }, { 15741, 0x91ff }, { 15752, 0xf8cf }, { 15763, 0xfede },
+ /* 0x9b00 */
+ { 15776, 0xff7e }, { 15790, 0xc7f7 }, { 15802, 0xefbd }, { 15815, 0xdebe },
+ { 15827, 0xfd7f }, { 15841, 0x8f77 }, { 15852, 0x93d3 }, { 15861, 0xfcf3 },
+ { 15873, 0xe9ef }, { 15885, 0xecaf }, { 15896, 0xed77 }, { 15908, 0xa361 },
+ { 15915, 0x87db }, { 15925, 0x7ef8 }, { 15936, 0x3ff7 }, { 15949, 0xa193 },
+ /* 0x9c00 */
+ { 15956, 0x7fe4 }, { 15967, 0xb8bd }, { 15977, 0xbb7b }, { 15989, 0xfefe },
+ { 16003, 0xff73 }, { 16016, 0xe3fd }, { 16028, 0x61cd }, { 16036, 0x1fbe },
+ { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x0000 },
+ { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x26e0 }, { 16053, 0xbefe },
+ /* 0x9d00 */
+ { 16066, 0x13fd }, { 16076, 0xebf5 }, { 16088, 0xe36f }, { 16099, 0xebdb },
+ { 16111, 0xde3f }, { 16123, 0xffdf }, { 16138, 0xff83 }, { 16149, 0xfbbf },
+ { 16163, 0x1fff }, { 16176, 0xffdd }, { 16190, 0xbfff }, { 16205, 0xfffe },
+ { 16220, 0xffbf }, { 16235, 0xffff }, { 16251, 0xfb7e }, { 16264, 0xfffd },
+ /* 0x9e00 */
+ { 16279, 0xfeff }, { 16294, 0xffbf }, { 16309, 0x0000 }, { 16309, 0x0000 },
+ { 16309, 0x0000 }, { 16309, 0x0000 }, { 16309, 0x0000 }, { 16309, 0xbe20 },
+ { 16316, 0x7fff }, { 16331, 0xffff }, { 16347, 0xfff7 }, { 16362, 0xf8f3 },
+ { 16373, 0xf1df }, { 16385, 0xfd7b }, { 16398, 0xe9f5 }, { 16409, 0xffff },
+ /* 0x9f00 */
+ { 16425, 0xc7c7 }, { 16435, 0x5fed }, { 16447, 0xfffd }, { 16462, 0x6bff },
+ { 16475, 0xffff }, { 16491, 0xfffd }, { 16506, 0xdeff }, { 16520, 0xcff7 },
+ { 16533, 0x6000 }, { 16535, 0x9337 }, { 16544, 0x0035 },
+};
+static const Summary16 big5hkscs_uni2indx_pagee0[419] = {
+ /* 0xe000 */
+ { 16548, 0xffff }, { 16564, 0xffff }, { 16580, 0xffff }, { 16596, 0xffff },
+ { 16612, 0xffff }, { 16628, 0xffff }, { 16644, 0xffff }, { 16660, 0xffff },
+ { 16676, 0xffff }, { 16692, 0xffff }, { 16708, 0xffff }, { 16724, 0xffff },
+ { 16740, 0xffff }, { 16756, 0xffff }, { 16772, 0xffff }, { 16788, 0xffff },
+ /* 0xe100 */
+ { 16804, 0xffff }, { 16820, 0xffff }, { 16836, 0xffff }, { 16852, 0xffff },
+ { 16868, 0xffff }, { 16884, 0xffff }, { 16900, 0xffff }, { 16916, 0xffff },
+ { 16932, 0xffff }, { 16948, 0xffff }, { 16964, 0xffff }, { 16980, 0xffff },
+ { 16996, 0xffff }, { 17012, 0xffff }, { 17028, 0xffff }, { 17044, 0xffff },
+ /* 0xe200 */
+ { 17060, 0xffff }, { 17076, 0xffff }, { 17092, 0xffff }, { 17108, 0xffff },
+ { 17124, 0xffff }, { 17140, 0xffff }, { 17156, 0xffff }, { 17172, 0xffff },
+ { 17188, 0xffff }, { 17204, 0xffff }, { 17220, 0xffff }, { 17236, 0xffff },
+ { 17252, 0xffff }, { 17268, 0xffff }, { 17284, 0xffff }, { 17300, 0xffff },
+ /* 0xe300 */
+ { 17316, 0xffff }, { 17332, 0xffff }, { 17348, 0xffff }, { 17364, 0xffff },
+ { 17380, 0xffff }, { 17396, 0xffff }, { 17412, 0xffff }, { 17428, 0xffff },
+ { 17444, 0xffff }, { 17460, 0xffff }, { 17476, 0xffff }, { 17492, 0xffff },
+ { 17508, 0xffff }, { 17524, 0xffff }, { 17540, 0xffff }, { 17556, 0xffff },
+ /* 0xe400 */
+ { 17572, 0xffff }, { 17588, 0xffff }, { 17604, 0xffff }, { 17620, 0xffff },
+ { 17636, 0xffff }, { 17652, 0xffff }, { 17668, 0xffff }, { 17684, 0xffff },
+ { 17700, 0xffff }, { 17716, 0xffff }, { 17732, 0xffff }, { 17748, 0xffff },
+ { 17764, 0xffff }, { 17780, 0xffff }, { 17796, 0xffff }, { 17812, 0xffff },
+ /* 0xe500 */
+ { 17828, 0xffff }, { 17844, 0xffff }, { 17860, 0xffff }, { 17876, 0xffff },
+ { 17892, 0xffff }, { 17908, 0xffff }, { 17924, 0xffff }, { 17940, 0xffff },
+ { 17956, 0xffff }, { 17972, 0xffff }, { 17988, 0xffff }, { 18004, 0xffff },
+ { 18020, 0xffff }, { 18036, 0xffff }, { 18052, 0xffff }, { 18068, 0xffff },
+ /* 0xe600 */
+ { 18084, 0xffff }, { 18100, 0xffff }, { 18116, 0xffff }, { 18132, 0xffff },
+ { 18148, 0xffff }, { 18164, 0xffff }, { 18180, 0xffff }, { 18196, 0xffff },
+ { 18212, 0xffff }, { 18228, 0xffff }, { 18244, 0xffff }, { 18260, 0xffff },
+ { 18276, 0xffff }, { 18292, 0xffff }, { 18308, 0xffff }, { 18324, 0xffff },
+ /* 0xe700 */
+ { 18340, 0xffff }, { 18356, 0xffff }, { 18372, 0xffff }, { 18388, 0xffff },
+ { 18404, 0xffff }, { 18420, 0xffff }, { 18436, 0xffff }, { 18452, 0xffff },
+ { 18468, 0xffff }, { 18484, 0xffff }, { 18500, 0xffff }, { 18516, 0xffff },
+ { 18532, 0xffff }, { 18548, 0xffff }, { 18564, 0xffff }, { 18580, 0xffff },
+ /* 0xe800 */
+ { 18596, 0xffff }, { 18612, 0xffff }, { 18628, 0xffff }, { 18644, 0xffff },
+ { 18660, 0xffff }, { 18676, 0xffff }, { 18692, 0xffff }, { 18708, 0xffff },
+ { 18724, 0xffff }, { 18740, 0xffff }, { 18756, 0xffff }, { 18772, 0xffff },
+ { 18788, 0xffff }, { 18804, 0xffff }, { 18820, 0xffff }, { 18836, 0xffff },
+ /* 0xe900 */
+ { 18852, 0xffff }, { 18868, 0xffff }, { 18884, 0xffff }, { 18900, 0xffff },
+ { 18916, 0xffff }, { 18932, 0xffff }, { 18948, 0xffff }, { 18964, 0xffff },
+ { 18980, 0xffff }, { 18996, 0xffff }, { 19012, 0xffff }, { 19028, 0xffff },
+ { 19044, 0xffff }, { 19060, 0xffff }, { 19076, 0xffff }, { 19092, 0xffff },
+ /* 0xea00 */
+ { 19108, 0xffff }, { 19124, 0xffff }, { 19140, 0xffff }, { 19156, 0xffff },
+ { 19172, 0xffff }, { 19188, 0xffff }, { 19204, 0xffff }, { 19220, 0xffff },
+ { 19236, 0xffff }, { 19252, 0xffff }, { 19268, 0xffff }, { 19284, 0xffff },
+ { 19300, 0xffff }, { 19316, 0xffff }, { 19332, 0xffff }, { 19348, 0xffff },
+ /* 0xeb00 */
+ { 19364, 0xffff }, { 19380, 0xffff }, { 19396, 0xffff }, { 19412, 0xffff },
+ { 19428, 0xffff }, { 19444, 0xffff }, { 19460, 0xffff }, { 19476, 0xffff },
+ { 19492, 0xffff }, { 19508, 0xffff }, { 19524, 0xffff }, { 19540, 0xffff },
+ { 19556, 0xffff }, { 19572, 0xffff }, { 19588, 0xffff }, { 19604, 0xffff },
+ /* 0xec00 */
+ { 19620, 0xffff }, { 19636, 0xffff }, { 19652, 0xffff }, { 19668, 0xffff },
+ { 19684, 0xffff }, { 19700, 0xffff }, { 19716, 0xffff }, { 19732, 0xffff },
+ { 19748, 0xffff }, { 19764, 0xffff }, { 19780, 0xffff }, { 19796, 0xffff },
+ { 19812, 0xffff }, { 19828, 0xffff }, { 19844, 0xffff }, { 19860, 0xffff },
+ /* 0xed00 */
+ { 19876, 0xffff }, { 19892, 0xffff }, { 19908, 0xffff }, { 19924, 0xffff },
+ { 19940, 0xffff }, { 19956, 0xffff }, { 19972, 0xffff }, { 19988, 0xffff },
+ { 20004, 0xffff }, { 20020, 0xffff }, { 20036, 0xffff }, { 20052, 0xffff },
+ { 20068, 0xffff }, { 20084, 0xffff }, { 20100, 0xffff }, { 20116, 0xffff },
+ /* 0xee00 */
+ { 20132, 0xffff }, { 20148, 0xffff }, { 20164, 0xffff }, { 20180, 0xffff },
+ { 20196, 0xffff }, { 20212, 0xffff }, { 20228, 0xffff }, { 20244, 0xffff },
+ { 20260, 0xffff }, { 20276, 0xffff }, { 20292, 0xffff }, { 20308, 0xffff },
+ { 20324, 0xffff }, { 20340, 0xffff }, { 20356, 0xffff }, { 20372, 0xffff },
+ /* 0xef00 */
+ { 20388, 0xffff }, { 20404, 0xffff }, { 20420, 0xffff }, { 20436, 0xffff },
+ { 20452, 0xffff }, { 20468, 0xffff }, { 20484, 0xffff }, { 20500, 0xffff },
+ { 20516, 0xffff }, { 20532, 0xffff }, { 20548, 0xffff }, { 20564, 0xffff },
+ { 20580, 0xffff }, { 20596, 0xffff }, { 20612, 0xffff }, { 20628, 0xffff },
+ /* 0xf000 */
+ { 20644, 0xffff }, { 20660, 0xffff }, { 20676, 0xffff }, { 20692, 0xffff },
+ { 20708, 0xffff }, { 20724, 0xffff }, { 20740, 0xffff }, { 20756, 0xffff },
+ { 20772, 0xffff }, { 20788, 0xffff }, { 20804, 0xffff }, { 20820, 0xffff },
+ { 20836, 0xffff }, { 20852, 0xffff }, { 20868, 0xffff }, { 20884, 0xffff },
+ /* 0xf100 */
+ { 20900, 0xffff }, { 20916, 0xffff }, { 20932, 0xffff }, { 20948, 0xffff },
+ { 20964, 0xffff }, { 20980, 0xffff }, { 20996, 0xffff }, { 21012, 0xffff },
+ { 21028, 0xffff }, { 21044, 0xffff }, { 21060, 0xffff }, { 21076, 0xffff },
+ { 21092, 0xffff }, { 21108, 0xffff }, { 21124, 0xffff }, { 21140, 0xffff },
+ /* 0xf200 */
+ { 21156, 0xffff }, { 21172, 0xffff }, { 21188, 0xffff }, { 21204, 0xffff },
+ { 21220, 0xffff }, { 21236, 0xffff }, { 21252, 0xffff }, { 21268, 0xffff },
+ { 21284, 0xffff }, { 21300, 0xffff }, { 21316, 0xffff }, { 21332, 0xffff },
+ { 21348, 0xffff }, { 21364, 0xffff }, { 21380, 0xffff }, { 21396, 0xffff },
+ /* 0xf300 */
+ { 21412, 0xffff }, { 21428, 0xffff }, { 21444, 0xffff }, { 21460, 0xffff },
+ { 21476, 0xffff }, { 21492, 0xffff }, { 21508, 0xffff }, { 21524, 0xffff },
+ { 21540, 0xffff }, { 21556, 0xffff }, { 21572, 0xffff }, { 21588, 0xffff },
+ { 21604, 0xffff }, { 21620, 0xffff }, { 21636, 0xffff }, { 21652, 0xffff },
+ /* 0xf400 */
+ { 21668, 0xffff }, { 21684, 0xffff }, { 21700, 0xffff }, { 21716, 0xffff },
+ { 21732, 0xffff }, { 21748, 0xffff }, { 21764, 0xffff }, { 21780, 0xffff },
+ { 21796, 0xffff }, { 21812, 0xffff }, { 21828, 0xffff }, { 21844, 0xffff },
+ { 21860, 0xffff }, { 21876, 0xffff }, { 21892, 0xffff }, { 21908, 0xffff },
+ /* 0xf500 */
+ { 21924, 0xffff }, { 21940, 0xffff }, { 21956, 0xffff }, { 21972, 0xffff },
+ { 21988, 0xffff }, { 22004, 0xffff }, { 22020, 0xffff }, { 22036, 0xffff },
+ { 22052, 0xffff }, { 22068, 0xffff }, { 22084, 0xffff }, { 22100, 0xffff },
+ { 22116, 0xffff }, { 22132, 0xffff }, { 22148, 0xffff }, { 22164, 0xffff },
+ /* 0xf600 */
+ { 22180, 0xffff }, { 22196, 0xffff }, { 22212, 0xffff }, { 22228, 0xffff },
+ { 22244, 0xffff }, { 22260, 0xffff }, { 22276, 0xffff }, { 22292, 0xffff },
+ { 22308, 0xffff }, { 22324, 0xffff }, { 22340, 0xffff }, { 22356, 0xffff },
+ { 22372, 0xffff }, { 22388, 0xffff }, { 22404, 0xffff }, { 22420, 0xffff },
+ /* 0xf700 */
+ { 22436, 0xffff }, { 22452, 0xffff }, { 22468, 0xffff }, { 22484, 0xffff },
+ { 22500, 0xffff }, { 22516, 0xffff }, { 22532, 0xffff }, { 22548, 0xffff },
+ { 22564, 0xffff }, { 22580, 0xffff }, { 22596, 0xffff }, { 22612, 0xffff },
+ { 22628, 0xffff }, { 22644, 0xffff }, { 22660, 0xffff }, { 22676, 0xffff },
+ /* 0xf800 */
+ { 22692, 0xffff }, { 22708, 0xffff }, { 22724, 0xffff }, { 22740, 0xffff },
+ { 22756, 0x01ff }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
+ { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
+ { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
+ /* 0xf900 */
+ { 22765, 0xffff }, { 22781, 0xffff }, { 22797, 0xefff }, { 22812, 0xffff },
+ { 22828, 0xffff }, { 22844, 0xffff }, { 22860, 0xffff }, { 22876, 0xfdff },
+ { 22891, 0xffff }, { 22907, 0xffdf }, { 22922, 0xffff }, { 22938, 0xffff },
+ { 22954, 0xffff }, { 22970, 0xffff }, { 22986, 0xff7f }, { 23001, 0xfffd },
+ /* 0xfa00 */
+ { 23016, 0x3fff }, { 23030, 0x7ee5 }, { 23041, 0x3c64 },
+};
+static const Summary16 big5hkscs_uni2indx_pagefe[31] = {
+ /* 0xfe00 */
+ { 23048, 0x0000 }, { 23048, 0x0000 }, { 23048, 0x0000 }, { 23048, 0xfffb },
+ { 23063, 0xfe1f }, { 23075, 0xfef7 }, { 23089, 0x0f7f }, { 23100, 0x0000 },
+ { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 },
+ { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 },
+ /* 0xff00 */
+ { 23100, 0xfffe }, { 23115, 0xffff }, { 23131, 0xffff }, { 23147, 0xffff },
+ { 23163, 0xffff }, { 23179, 0x7fff }, { 23194, 0x0010 }, { 23195, 0x0000 },
+ { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x0000 },
+ { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x203f },
+};
+
+static int
+big5hkscs_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc >= 0x0000 && wc < 0x0100)
+ summary = &big5hkscs_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x0200 && wc < 0x03d0)
+ summary = &big5hkscs_uni2indx_page02[(wc>>4)-0x020];
+ else if (wc >= 0x2000 && wc < 0x22c0)
+ summary = &big5hkscs_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x2500 && wc < 0x2650)
+ summary = &big5hkscs_uni2indx_page25[(wc>>4)-0x250];
+ else if (wc >= 0x3000 && wc < 0x33e0)
+ summary = &big5hkscs_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &big5hkscs_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xe000 && wc < 0xfa30)
+ summary = &big5hkscs_uni2indx_pagee0[(wc>>4)-0xe00];
+ else if (wc >= 0xfe00 && wc < 0xfff0)
+ summary = &big5hkscs_uni2indx_pagefe[(wc>>4)-0xfe0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = big5hkscs_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
+
diff --git a/libX11/src/xlibi18n/lcUniConv/cjk_tab_to_h.c b/libX11/src/xlibi18n/lcUniConv/cjk_tab_to_h.c
index 6934789cf..1b380766a 100644
--- a/libX11/src/xlibi18n/lcUniConv/cjk_tab_to_h.c
+++ b/libX11/src/xlibi18n/lcUniConv/cjk_tab_to_h.c
@@ -1,1071 +1,1071 @@
-
-/*
- * Generates a CJK character set table from a .TXT table as found on
- * ftp.unicode.org or in the X nls directory.
- * Examples:
- *
- * ./cjk_tab_to_h GB2312.1980-0 gb2312 > gb2312.h < gb2312
- * ./cjk_tab_to_h JISX0208.1983-0 jisx0208 > jisx0208.h < jis0208
- * ./cjk_tab_to_h KSC5601.1987-0 ksc5601 > ksc5601.h < ksc5601
- *
- * ./cjk_tab_to_h GB2312.1980-0 gb2312 > gb2312.h < GB2312.TXT
- * ./cjk_tab_to_h JISX0208.1983-0 jisx0208 > jisx0208.h < JIS0208.TXT
- * ./cjk_tab_to_h JISX0212.1990-0 jisx0212 > jisx0212.h < JIS0212.TXT
- * ./cjk_tab_to_h KSC5601.1987-0 ksc5601 > ksc5601.h < KSC5601.TXT
- * ./cjk_tab_to_h KSX1001.1992-0 ksc5601 > ksc5601.h < KSX1001.TXT
- *
- * ./cjk_tab_to_h BIG5 big5 > big5.h < BIG5.TXT
- *
- * ./cjk_tab_to_h JOHAB johab > johab.h < JOHAB.TXT
- *
- * ./cjk_tab_to_h BIG5HKSCS-0 big5hkscs >big5hkscs.h < BIG5HKSCS.TXT
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <string.h>
-
-typedef struct {
- int start;
- int end;
-} Block;
-
-typedef struct {
- int rows; /* number of possible values for the 1st byte */
- int cols; /* number of possible values for the 2nd byte */
- int (*row_byte) (int row); /* returns the 1st byte value for a given row */
- int (*col_byte) (int col); /* returns the 2nd byte value for a given col */
- int (*byte_row) (int byte); /* converts a 1st byte value to a row, else -1 */
- int (*byte_col) (int byte); /* converts a 2nd byte value to a col, else -1 */
- const char* check_row_expr; /* format string for 1st byte value checking */
- const char* check_col_expr; /* format string for 2nd byte value checking */
- const char* byte_row_expr; /* format string for 1st byte value to row */
- const char* byte_col_expr; /* format string for 2nd byte value to col */
- int** charset2uni; /* charset2uni[0..rows-1][0..cols-1] is valid */
- /* You'll understand the terms "row" and "col" when you buy Ken Lunde's book.
- Once a row is fixed, choosing a "col" is the same as choosing a "cell". */
- int* charsetpage; /* charsetpage[0..rows]: how large is a page for a row */
- int ncharsetblocks;
- Block* charsetblocks; /* blocks[0..nblocks-1] */
- int* uni2charset; /* uni2charset[0x0000..0xffff] */
-} Encoding;
-
-/*
- * Outputs the file title.
- */
-static void output_title (const char *charsetname)
-{
- printf("\n");
- printf("/*\n");
- printf(" * %s\n", charsetname);
- printf(" */\n");
- printf("\n");
-}
-
-/*
- * Reads the charset2uni table from standard input.
- */
-static void read_table (Encoding* enc)
-{
- int row, col, i, i1, i2, c, j;
-
- enc->charset2uni = (int**) malloc(enc->rows*sizeof(int*));
- for (row = 0; row < enc->rows; row++)
- enc->charset2uni[row] = (int*) malloc(enc->cols*sizeof(int));
-
- for (row = 0; row < enc->rows; row++)
- for (col = 0; col < enc->cols; col++)
- enc->charset2uni[row][col] = 0xfffd;
-
- c = getc(stdin);
- ungetc(c,stdin);
- if (c == '#') {
- /* Read a unicode.org style .TXT file. */
- for (;;) {
- c = getc(stdin);
- if (c == EOF)
- break;
- if (c == '\n' || c == ' ' || c == '\t')
- continue;
- if (c == '#') {
- do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
- continue;
- }
- ungetc(c,stdin);
- if (scanf("0x%x", &j) != 1)
- exit(1);
- i1 = j >> 8;
- i2 = j & 0xff;
- row = enc->byte_row(i1);
- col = enc->byte_col(i2);
- if (row < 0 || col < 0) {
- fprintf(stderr, "lost entry for %02x %02x\n", i1, i2);
- exit(1);
- }
- if (scanf(" 0x%x", &enc->charset2uni[row][col]) != 1)
- exit(1);
- }
- } else {
- /* Read a table of hexadecimal Unicode values. */
- for (i1 = 32; i1 < 132; i1++)
- for (i2 = 32; i2 < 132; i2++) {
- i = scanf("%x", &j);
- if (i == EOF)
- goto read_done;
- if (i != 1)
- exit(1);
- if (j < 0 || j == 0xffff)
- j = 0xfffd;
- if (j != 0xfffd) {
- if (enc->byte_row(i1) < 0 || enc->byte_col(i2) < 0) {
- fprintf(stderr, "lost entry at %02x %02x\n", i1, i2);
- exit (1);
- }
- enc->charset2uni[enc->byte_row(i1)][enc->byte_col(i2)] = j;
- }
- }
- read_done: ;
- }
-}
-
-/*
- * Computes the charsetpage[0..rows] array.
- */
-static void find_charset2uni_pages (Encoding* enc)
-{
- int row, col;
-
- enc->charsetpage = (int*) malloc((enc->rows+1)*sizeof(int));
-
- for (row = 0; row <= enc->rows; row++)
- enc->charsetpage[row] = 0;
-
- for (row = 0; row < enc->rows; row++) {
- int used = 0;
- for (col = 0; col < enc->cols; col++)
- if (enc->charset2uni[row][col] != 0xfffd)
- used = col+1;
- enc->charsetpage[row] = used;
- }
-}
-
-/*
- * Fills in nblocks and blocks.
- */
-static void find_charset2uni_blocks (Encoding* enc)
-{
- int n, row, lastrow;
-
- enc->charsetblocks = (Block*) malloc(enc->rows*sizeof(Block));
-
- n = 0;
- for (row = 0; row < enc->rows; row++)
- if (enc->charsetpage[row] > 0 && (row == 0 || enc->charsetpage[row-1] == 0)) {
- for (lastrow = row; enc->charsetpage[lastrow+1] > 0; lastrow++);
- enc->charsetblocks[n].start = row * enc->cols;
- enc->charsetblocks[n].end = lastrow * enc->cols + enc->charsetpage[lastrow];
- n++;
- }
- enc->ncharsetblocks = n;
-}
-
-/*
- * Outputs the charset to unicode table and function.
- */
-static void output_charset2uni (const char* name, Encoding* enc)
-{
- int row, col, lastrow, col_max, i, i1_min, i1_max;
-
- find_charset2uni_pages(enc);
-
- find_charset2uni_blocks(enc);
-
- for (row = 0; row < enc->rows; row++)
- if (enc->charsetpage[row] > 0) {
- if (row == 0 || enc->charsetpage[row-1] == 0) {
- /* Start a new block. */
- for (lastrow = row; enc->charsetpage[lastrow+1] > 0; lastrow++);
- printf("static const unsigned short %s_2uni_page%02x[%d] = {\n",
- name, enc->row_byte(row),
- (lastrow-row) * enc->cols + enc->charsetpage[lastrow]);
- }
- printf(" /""* 0x%02x *""/\n ", enc->row_byte(row));
- col_max = (enc->charsetpage[row+1] > 0 ? enc->cols : enc->charsetpage[row]);
- for (col = 0; col < col_max; col++) {
- printf(" 0x%04x,", enc->charset2uni[row][col]);
- if ((col % 8) == 7 && (col+1 < col_max)) printf("\n ");
- }
- printf("\n");
- if (enc->charsetpage[row+1] == 0) {
- /* End a block. */
- printf("};\n");
- }
- }
- printf("\n");
-
- printf("static int\n");
- printf("%s_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)\n", name);
- printf("{\n");
- printf(" unsigned char c1 = s[0];\n");
- printf(" if (");
- for (i = 0; i < enc->ncharsetblocks; i++) {
- i1_min = enc->row_byte(enc->charsetblocks[i].start / enc->cols);
- i1_max = enc->row_byte((enc->charsetblocks[i].end-1) / enc->cols);
- if (i > 0)
- printf(" || ");
- if (i1_min == i1_max)
- printf("(c1 == 0x%02x)", i1_min);
- else
- printf("(c1 >= 0x%02x && c1 <= 0x%02x)", i1_min, i1_max);
- }
- printf(") {\n");
- printf(" if (n >= 2) {\n");
- printf(" unsigned char c2 = s[1];\n");
- printf(" if (");
- printf(enc->check_col_expr, "c2");
- printf(") {\n");
- printf(" unsigned int i = %d * (", enc->cols);
- printf(enc->byte_row_expr, "c1");
- printf(") + (");
- printf(enc->byte_col_expr, "c2");
- printf(");\n");
- printf(" unsigned short wc = 0xfffd;\n");
- for (i = 0; i < enc->ncharsetblocks; i++) {
- printf(" ");
- if (i > 0)
- printf("} else ");
- if (i < enc->ncharsetblocks-1)
- printf("if (i < %d) ", enc->charsetblocks[i+1].start);
- printf("{\n");
- printf(" if (i < %d)\n", enc->charsetblocks[i].end);
- printf(" wc = %s_2uni_page%02x[i", name, enc->row_byte(enc->charsetblocks[i].start / enc->cols));
- if (enc->charsetblocks[i].start > 0)
- printf("-%d", enc->charsetblocks[i].start);
- printf("];\n");
- }
- printf(" }\n");
- printf(" if (wc != 0xfffd) {\n");
- printf(" *pwc = (ucs4_t) wc;\n");
- printf(" return 2;\n");
- printf(" }\n");
- printf(" }\n");
- printf(" return RET_ILSEQ;\n");
- printf(" }\n");
- printf(" return RET_TOOFEW(0);\n");
- printf(" }\n");
- printf(" return RET_ILSEQ;\n");
- printf("}\n");
- printf("\n");
-}
-
-/*
- * Computes the uni2charset[0x0000..0xffff] array.
- */
-static void invert (Encoding* enc)
-{
- int row, col, j;
-
- enc->uni2charset = (int*) malloc(0x10000*sizeof(int));
-
- for (j = 0; j < 0x10000; j++)
- enc->uni2charset[j] = 0;
-
- for (row = 0; row < enc->rows; row++)
- for (col = 0; col < enc->cols; col++) {
- j = enc->charset2uni[row][col];
- if (j != 0xfffd)
- enc->uni2charset[j] = 0x100 * enc->row_byte(row) + enc->col_byte(col);
- }
-}
-
-/*
- * Outputs the unicode to charset table and function, using a linear array.
- * (Suitable if the table is dense.)
- */
-static void output_uni2charset_dense (const char* name, Encoding* enc)
-{
- /* Like in 8bit_tab_to_h.c */
- bool pages[0x100];
- int line[0x2000];
- int tableno;
- struct { int minline; int maxline; int usecount; } tables[0x2000];
- bool first;
- int row, col, j, p, j1, j2, t;
-
- for (p = 0; p < 0x100; p++)
- pages[p] = false;
- for (row = 0; row < enc->rows; row++)
- for (col = 0; col < enc->cols; col++) {
- j = enc->charset2uni[row][col];
- if (j != 0xfffd)
- pages[j>>8] = true;
- }
- for (j1 = 0; j1 < 0x2000; j1++) {
- bool all_invalid = true;
- for (j2 = 0; j2 < 8; j2++) {
- j = 8*j1+j2;
- if (enc->uni2charset[j] != 0)
- all_invalid = false;
- }
- if (all_invalid)
- line[j1] = -1;
- else
- line[j1] = 0;
- }
- tableno = 0;
- for (j1 = 0; j1 < 0x2000; j1++) {
- if (line[j1] >= 0) {
- if (tableno > 0
- && ((j1 > 0 && line[j1-1] == tableno-1)
- || ((tables[tableno-1].maxline >> 5) == (j1 >> 5)
- && j1 - tables[tableno-1].maxline <= 8))) {
- line[j1] = tableno-1;
- tables[tableno-1].maxline = j1;
- } else {
- tableno++;
- line[j1] = tableno-1;
- tables[tableno-1].minline = tables[tableno-1].maxline = j1;
- }
- }
- }
- for (t = 0; t < tableno; t++) {
- tables[t].usecount = 0;
- j1 = 8*tables[t].minline;
- j2 = 8*(tables[t].maxline+1);
- for (j = j1; j < j2; j++)
- if (enc->uni2charset[j] != 0)
- tables[t].usecount++;
- }
- {
- p = -1;
- for (t = 0; t < tableno; t++)
- if (tables[t].usecount > 1) {
- p = tables[t].minline >> 5;
- printf("static const unsigned short %s_page%02x[%d] = {\n", name, p, 8*(tables[t].maxline-tables[t].minline+1));
- for (j1 = tables[t].minline; j1 <= tables[t].maxline; j1++) {
- if ((j1 % 0x20) == 0 && j1 > tables[t].minline)
- printf(" /* 0x%04x */\n", 8*j1);
- printf(" ");
- for (j2 = 0; j2 < 8; j2++) {
- j = 8*j1+j2;
- printf(" 0x%04x,", enc->uni2charset[j]);
- }
- printf(" /*0x%02x-0x%02x*/\n", 8*(j1 % 0x20), 8*(j1 % 0x20)+7);
- }
- printf("};\n");
- }
- if (p >= 0)
- printf("\n");
- }
- printf("static int\n%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", name);
- printf("{\n");
- printf(" if (n >= 2) {\n");
- printf(" unsigned short c = 0;\n");
- first = true;
- for (j1 = 0; j1 < 0x2000;) {
- t = line[j1];
- for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
- if (t >= 0) {
- if (j1 != tables[t].minline) abort();
- if (j2 > tables[t].maxline+1) abort();
- j2 = tables[t].maxline+1;
- if (first)
- printf(" ");
- else
- printf(" else ");
- first = false;
- if (tables[t].usecount == 0) abort();
- if (tables[t].usecount == 1) {
- if (j2 != j1+1) abort();
- for (j = 8*j1; j < 8*j2; j++)
- if (enc->uni2charset[j] != 0) {
- printf("if (wc == 0x%04x)\n c = 0x%02x;\n", j, enc->uni2charset[j]);
- break;
- }
- } else {
- if (j1 == 0) {
- printf("if (wc < 0x%04x)", 8*j2);
- } else {
- printf("if (wc >= 0x%04x && wc < 0x%04x)", 8*j1, 8*j2);
- }
- printf("\n c = %s_page%02x[wc", name, j1 >> 5);
- if (tables[t].minline > 0)
- printf("-0x%04x", 8*j1);
- printf("];\n");
- }
- }
- j1 = j2;
- }
- printf(" if (c != 0) {\n");
- printf(" r[0] = (c >> 8); r[1] = (c & 0xff);\n");
- printf(" return 2;\n");
- printf(" }\n");
- printf(" return RET_ILSEQ;\n");
- printf(" }\n");
- printf(" return RET_TOOSMALL;\n");
- printf("}\n");
-}
-
-/*
- * Outputs the unicode to charset table and function, using a packed array.
- * (Suitable if the table is sparse.)
- */
-static void output_uni2charset_sparse (const char* name, Encoding* enc)
-{
- bool pages[0x100];
- Block pageblocks[0x100]; int npageblocks;
- int indx2charset[0x10000];
- int summary_indx[0x1000];
- int summary_used[0x1000];
- int i, row, col, j, p, j1, j2, indx;
-
- /* Fill pages[0x100]. */
- for (p = 0; p < 0x100; p++)
- pages[p] = false;
- for (row = 0; row < enc->rows; row++)
- for (col = 0; col < enc->cols; col++) {
- j = enc->charset2uni[row][col];
- if (j != 0xfffd)
- pages[j>>8] = true;
- }
-
-#if 0
- for (p = 0; p < 0x100; p++)
- if (pages[p]) {
- printf("static const unsigned short %s_page%02x[256] = {\n", name, p);
- for (j1 = 0; j1 < 32; j1++) {
- printf(" ");
- for (j2 = 0; j2 < 8; j2++)
- printf("0x%04x, ", enc->uni2charset[256*p+8*j1+j2]);
- printf("/""*0x%02x-0x%02x*""/\n", 8*j1, 8*j1+7);
- }
- printf("};\n");
- }
- printf("\n");
-#endif
-
- /* Fill summary_indx[] and summary_used[]. */
- indx = 0;
- for (j1 = 0; j1 < 0x1000; j1++) {
- summary_indx[j1] = indx;
- summary_used[j1] = 0;
- for (j2 = 0; j2 < 16; j2++) {
- j = 16*j1+j2;
- if (enc->uni2charset[j] != 0) {
- indx2charset[indx++] = enc->uni2charset[j];
- summary_used[j1] |= (1 << j2);
- }
- }
- }
-
- /* Fill npageblocks and pageblocks[]. */
- npageblocks = 0;
- for (p = 0; p < 0x100; ) {
- if (pages[p] && (p == 0 || !pages[p-1])) {
- pageblocks[npageblocks].start = 16*p;
- do p++; while (p < 0x100 && pages[p]);
- j1 = 16*p;
- while (summary_used[j1-1] == 0) j1--;
- pageblocks[npageblocks].end = j1;
- npageblocks++;
- } else
- p++;
- }
-
- printf("static const unsigned short %s_2charset[%d] = {\n", name, indx);
- for (i = 0; i < indx; ) {
- if ((i % 8) == 0) printf(" ");
- printf(" 0x%04x,", indx2charset[i]);
- i++;
- if ((i % 8) == 0 || i == indx) printf("\n");
- }
- printf("};\n");
- printf("\n");
- for (i = 0; i < npageblocks; i++) {
- printf("static const Summary16 %s_uni2indx_page%02x[%d] = {\n", name,
- pageblocks[i].start/16, pageblocks[i].end-pageblocks[i].start);
- for (j1 = pageblocks[i].start; j1 < pageblocks[i].end; ) {
- if (((16*j1) % 0x100) == 0) printf(" /""* 0x%04x *""/\n", 16*j1);
- if ((j1 % 4) == 0) printf(" ");
- printf(" { %4d, 0x%04x },", summary_indx[j1], summary_used[j1]);
- j1++;
- if ((j1 % 4) == 0 || j1 == pageblocks[i].end) printf("\n");
- }
- printf("};\n");
- }
- printf("\n");
-
- printf("static int\n");
- printf("%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", name);
- printf("{\n");
- printf(" if (n >= 2) {\n");
- printf(" const Summary16 *summary = NULL;\n");
- for (i = 0; i < npageblocks; i++) {
- printf(" ");
- if (i > 0)
- printf("else ");
- printf("if (wc >= 0x%04x && wc < 0x%04x)\n",
- 16*pageblocks[i].start, 16*pageblocks[i].end);
- printf(" summary = &%s_uni2indx_page%02x[(wc>>4)", name,
- pageblocks[i].start/16);
- if (pageblocks[i].start > 0)
- printf("-0x%03x", pageblocks[i].start);
- printf("];\n");
- }
- printf(" if (summary) {\n");
- printf(" unsigned short used = summary->used;\n");
- printf(" unsigned int i = wc & 0x0f;\n");
- printf(" if (used & ((unsigned short) 1 << i)) {\n");
- printf(" unsigned short c;\n");
- printf(" /* Keep in `used' only the bits 0..i-1. */\n");
- printf(" used &= ((unsigned short) 1 << i) - 1;\n");
- printf(" /* Add `summary->indx' and the number of bits set in `used'. */\n");
- printf(" used = (used & 0x5555) + ((used & 0xaaaa) >> 1);\n");
- printf(" used = (used & 0x3333) + ((used & 0xcccc) >> 2);\n");
- printf(" used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);\n");
- printf(" used = (used & 0x00ff) + (used >> 8);\n");
- printf(" c = %s_2charset[summary->indx + used];\n", name);
- printf(" r[0] = (c >> 8); r[1] = (c & 0xff);\n");
- printf(" return 2;\n");
- printf(" }\n");
- printf(" }\n");
- printf(" return RET_ILSEQ;\n");
- printf(" }\n");
- printf(" return RET_TOOSMALL;\n");
- printf("}\n");
-}
-
-/* ISO-2022/EUC specifics */
-
-static int row_byte_normal (int row) { return 0x21+row; }
-static int col_byte_normal (int col) { return 0x21+col; }
-static int byte_row_normal (int byte) { return byte-0x21; }
-static int byte_col_normal (int byte) { return byte-0x21; }
-
-static void do_normal (const char* name)
-{
- Encoding enc;
-
- enc.rows = 94;
- enc.cols = 94;
- enc.row_byte = row_byte_normal;
- enc.col_byte = col_byte_normal;
- enc.byte_row = byte_row_normal;
- enc.byte_col = byte_col_normal;
- enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.byte_row_expr = "%1$s - 0x21";
- enc.byte_col_expr = "%1$s - 0x21";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* Note: On first sight, the jisx0212_2charset[] table seems to be in order,
- starting from the charset=0x3021/uni=0x4e02 pair. But it's only mostly in
- order. There are 75 out-of-order values, scattered all throughout the table.
- */
-
-static void do_normal_only_charset2uni (const char* name)
-{
- Encoding enc;
-
- enc.rows = 94;
- enc.cols = 94;
- enc.row_byte = row_byte_normal;
- enc.col_byte = col_byte_normal;
- enc.byte_row = byte_row_normal;
- enc.byte_col = byte_col_normal;
- enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.byte_row_expr = "%1$s - 0x21";
- enc.byte_col_expr = "%1$s - 0x21";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
-}
-
-/* CNS 11643 specifics - trick to put two tables into one */
-
-static int row_byte_cns11643 (int row) {
- return 0x100 * (row / 94) + (row % 94) + 0x21;
-}
-static int byte_row_cns11643 (int byte) {
- return (byte >= 0x100 && byte < 0x200 ? byte-0x121 :
- byte >= 0x200 && byte < 0x300 ? byte-0x221+94 :
- byte >= 0x300 && byte < 0x400 ? byte-0x321+2*94 :
- -1);
-}
-
-static void do_cns11643_only_uni2charset (const char* name)
-{
- Encoding enc;
- int j, x;
-
- enc.rows = 3*94;
- enc.cols = 94;
- enc.row_byte = row_byte_cns11643;
- enc.col_byte = col_byte_normal;
- enc.byte_row = byte_row_cns11643;
- enc.byte_col = byte_col_normal;
- enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.byte_row_expr = "%1$s - 0x21";
- enc.byte_col_expr = "%1$s - 0x21";
-
- read_table(&enc);
- invert(&enc);
- /* Move the 2 plane bits into the unused bits 15 and 7. */
- for (j = 0; j < 0x10000; j++) {
- x = enc.uni2charset[j];
- if (x != 0) {
- if (x & 0x8080) abort();
- switch (x >> 16) {
- case 0: /* plane 1 */ x = (x & 0xffff) | 0x0000; break;
- case 1: /* plane 2 */ x = (x & 0xffff) | 0x0080; break;
- case 2: /* plane 3 */ x = (x & 0xffff) | 0x8000; break;
- default: abort();
- }
- enc.uni2charset[j] = x;
- }
- }
- output_uni2charset_sparse(name,&enc);
-}
-
-/* GBK specifics */
-
-static int row_byte_gbk1 (int row) {
- return 0x81+row;
-}
-static int col_byte_gbk1 (int col) {
- return (col >= 0x3f ? 0x41 : 0x40) + col;
-}
-static int byte_row_gbk1 (int byte) {
- if (byte >= 0x81 && byte < 0xff)
- return byte-0x81;
- else
- return -1;
-}
-static int byte_col_gbk1 (int byte) {
- if (byte >= 0x40 && byte < 0x7f)
- return byte-0x40;
- else if (byte >= 0x80 && byte < 0xff)
- return byte-0x41;
- else
- return -1;
-}
-
-static void do_gbk1 (const char* name)
-{
- Encoding enc;
-
- enc.rows = 126;
- enc.cols = 190;
- enc.row_byte = row_byte_gbk1;
- enc.col_byte = col_byte_gbk1;
- enc.byte_row = byte_row_gbk1;
- enc.byte_col = byte_col_gbk1;
- enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0x81";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_dense(name,&enc);
-}
-
-static void do_gbk1_only_charset2uni (const char* name)
-{
- Encoding enc;
-
- enc.rows = 126;
- enc.cols = 190;
- enc.row_byte = row_byte_gbk1;
- enc.col_byte = col_byte_gbk1;
- enc.byte_row = byte_row_gbk1;
- enc.byte_col = byte_col_gbk1;
- enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0x81";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
-}
-
-static int row_byte_gbk2 (int row) {
- return 0x81+row;
-}
-static int col_byte_gbk2 (int col) {
- return (col >= 0x3f ? 0x41 : 0x40) + col;
-}
-static int byte_row_gbk2 (int byte) {
- if (byte >= 0x81 && byte < 0xff)
- return byte-0x81;
- else
- return -1;
-}
-static int byte_col_gbk2 (int byte) {
- if (byte >= 0x40 && byte < 0x7f)
- return byte-0x40;
- else if (byte >= 0x80 && byte < 0xa1)
- return byte-0x41;
- else
- return -1;
-}
-
-static void do_gbk2_only_charset2uni (const char* name)
-{
- Encoding enc;
-
- enc.rows = 126;
- enc.cols = 96;
- enc.row_byte = row_byte_gbk2;
- enc.col_byte = col_byte_gbk2;
- enc.byte_row = byte_row_gbk2;
- enc.byte_col = byte_col_gbk2;
- enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xa1)";
- enc.byte_row_expr = "%1$s - 0x81";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
-}
-
-static void do_gbk1_only_uni2charset (const char* name)
-{
- Encoding enc;
-
- enc.rows = 126;
- enc.cols = 190;
- enc.row_byte = row_byte_gbk1;
- enc.col_byte = col_byte_gbk1;
- enc.byte_row = byte_row_gbk1;
- enc.byte_col = byte_col_gbk1;
- enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0x81";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
-
- read_table(&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* KSC 5601 specifics */
-
-/*
- * Reads the charset2uni table from standard input.
- */
-static void read_table_ksc5601 (Encoding* enc)
-{
- int row, col, i, i1, i2, c, j;
-
- enc->charset2uni = (int**) malloc(enc->rows*sizeof(int*));
- for (row = 0; row < enc->rows; row++)
- enc->charset2uni[row] = (int*) malloc(enc->cols*sizeof(int));
-
- for (row = 0; row < enc->rows; row++)
- for (col = 0; col < enc->cols; col++)
- enc->charset2uni[row][col] = 0xfffd;
-
- c = getc(stdin);
- ungetc(c,stdin);
- if (c == '#') {
- /* Read a unicode.org style .TXT file. */
- for (;;) {
- c = getc(stdin);
- if (c == EOF)
- break;
- if (c == '\n' || c == ' ' || c == '\t')
- continue;
- if (c == '#') {
- do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
- continue;
- }
- ungetc(c,stdin);
- if (scanf("0x%x", &j) != 1)
- exit(1);
- i1 = j >> 8;
- i2 = j & 0xff;
- if (scanf(" 0x%x", &j) != 1)
- exit(1);
- /* Take only the range covered by KS C 5601.1987-0 = KS C 5601.1989-0
- = KS X 1001.1992, ignore the rest. */
- if (!(i1 >= 128+33 && i1 < 128+127 && i2 >= 128+33 && i2 < 128+127))
- continue; /* KSC5601 specific */
- i1 &= 0x7f; /* KSC5601 specific */
- i2 &= 0x7f; /* KSC5601 specific */
- row = enc->byte_row(i1);
- col = enc->byte_col(i2);
- if (row < 0 || col < 0) {
- fprintf(stderr, "lost entry for %02x %02x\n", i1, i2);
- exit(1);
- }
- enc->charset2uni[row][col] = j;
- }
- } else {
- /* Read a table of hexadecimal Unicode values. */
- for (i1 = 33; i1 < 127; i1++)
- for (i2 = 33; i2 < 127; i2++) {
- i = scanf("%x", &j);
- if (i == EOF)
- goto read_done;
- if (i != 1)
- exit(1);
- if (j < 0 || j == 0xffff)
- j = 0xfffd;
- if (j != 0xfffd) {
- if (enc->byte_row(i1) < 0 || enc->byte_col(i2) < 0) {
- fprintf(stderr, "lost entry at %02x %02x\n", i1, i2);
- exit (1);
- }
- enc->charset2uni[enc->byte_row(i1)][enc->byte_col(i2)] = j;
- }
- }
- read_done: ;
- }
-}
-
-static void do_ksc5601 (const char* name)
-{
- Encoding enc;
-
- enc.rows = 94;
- enc.cols = 94;
- enc.row_byte = row_byte_normal;
- enc.col_byte = col_byte_normal;
- enc.byte_row = byte_row_normal;
- enc.byte_col = byte_col_normal;
- enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.byte_row_expr = "%1$s - 0x21";
- enc.byte_col_expr = "%1$s - 0x21";
-
- read_table_ksc5601(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* Big5 specifics */
-
-static int row_byte_big5 (int row) {
- return 0xa1+row;
-}
-static int col_byte_big5 (int col) {
- return (col >= 0x3f ? 0x62 : 0x40) + col;
-}
-static int byte_row_big5 (int byte) {
- if (byte >= 0xa1 && byte < 0xff)
- return byte-0xa1;
- else
- return -1;
-}
-static int byte_col_big5 (int byte) {
- if (byte >= 0x40 && byte < 0x7f)
- return byte-0x40;
- else if (byte >= 0xa1 && byte < 0xff)
- return byte-0x62;
- else
- return -1;
-}
-
-static void do_big5 (const char* name)
-{
- Encoding enc;
-
- enc.rows = 94;
- enc.cols = 157;
- enc.row_byte = row_byte_big5;
- enc.col_byte = col_byte_big5;
- enc.byte_row = byte_row_big5;
- enc.byte_col = byte_col_big5;
- enc.check_row_expr = "%1$s >= 0xa1 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0xa1 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0xa1";
- enc.byte_col_expr = "%1$s - (%1$s >= 0xa1 ? 0x62 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* Big5-HKSCS specifics */
-
-static int row_byte_big5hkscs (int row) {
- return 0x81+row;
-}
-static int col_byte_big5hkscs (int col) {
- return (col >= 0x3f ? 0x62 : 0x40) + col;
-}
-static int byte_row_big5hkscs (int byte) {
- if (byte >= 0x81 && byte < 0xff)
- return byte-0x81;
- else
- return -1;
-}
-static int byte_col_big5hkscs (int byte) {
- if (byte >= 0x40 && byte < 0x7f)
- return byte-0x40;
- else if (byte >= 0xa1 && byte < 0xff)
- return byte-0x62;
- else
- return -1;
-}
-
-static void do_big5hkscs (const char* name)
-{
- Encoding enc;
-
- enc.rows = 126;
- enc.cols = 157;
- enc.row_byte = row_byte_big5hkscs;
- enc.col_byte = col_byte_big5hkscs;
- enc.byte_row = byte_row_big5hkscs;
- enc.byte_col = byte_col_big5hkscs;
- enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0xa1 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0x81";
- enc.byte_col_expr = "%1$s - (%1$s >= 0xa1 ? 0x62 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* Johab Hangul specifics */
-
-static int row_byte_johab_hangul (int row) {
- return 0x84+row;
-}
-static int col_byte_johab_hangul (int col) {
- return (col >= 0x3e ? 0x43 : 0x41) + col;
-}
-static int byte_row_johab_hangul (int byte) {
- if (byte >= 0x84 && byte < 0xd4)
- return byte-0x84;
- else
- return -1;
-}
-static int byte_col_johab_hangul (int byte) {
- if (byte >= 0x41 && byte < 0x7f)
- return byte-0x41;
- else if (byte >= 0x81 && byte < 0xff)
- return byte-0x43;
- else
- return -1;
-}
-
-static void do_johab_hangul (const char* name)
-{
- Encoding enc;
-
- enc.rows = 80;
- enc.cols = 188;
- enc.row_byte = row_byte_johab_hangul;
- enc.col_byte = col_byte_johab_hangul;
- enc.byte_row = byte_row_johab_hangul;
- enc.byte_col = byte_col_johab_hangul;
- enc.check_row_expr = "%1$s >= 0x84 && %1$s < 0xd4";
- enc.check_col_expr = "(%1$s >= 0x41 && %1$s < 0x7f) || (%1$s >= 0x81 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0x84";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x81 ? 0x43 : 0x41)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_dense(name,&enc);
-}
-
-/* SJIS specifics */
-
-static int row_byte_sjis (int row) {
- return (row >= 0x1f ? 0xc1 : 0x81) + row;
-}
-static int col_byte_sjis (int col) {
- return (col >= 0x3f ? 0x41 : 0x40) + col;
-}
-static int byte_row_sjis (int byte) {
- if (byte >= 0x81 && byte < 0xa0)
- return byte-0x81;
- else if (byte >= 0xe0)
- return byte-0xc1;
- else
- return -1;
-}
-static int byte_col_sjis (int byte) {
- if (byte >= 0x40 && byte < 0x7f)
- return byte-0x40;
- else if (byte >= 0x80 && byte < 0xfd)
- return byte-0x41;
- else
- return -1;
-}
-
-static void do_sjis (const char* name)
-{
- Encoding enc;
-
- enc.rows = 94;
- enc.cols = 188;
- enc.row_byte = row_byte_sjis;
- enc.col_byte = col_byte_sjis;
- enc.byte_row = byte_row_sjis;
- enc.byte_col = byte_col_sjis;
- enc.check_row_expr = "(%1$s >= 0x81 && %1$s < 0xa0) || (%1$s >= 0xe0)";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xfd)";
- enc.byte_row_expr = "%1$s - (%1$s >= 0xe0 ? 0xc1 : 0x81)";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* Main program */
-
-int main (int argc, char *argv[])
-{
- const char* charsetname;
- const char* name;
-
- if (argc != 3)
- exit(1);
- charsetname = argv[1];
- name = argv[2];
-
- output_title(charsetname);
-
- if (!strcmp(name,"gb2312") || !strcmp(name,"gb12345ext")
- || !strcmp(name,"jisx0208") || !strcmp(name,"jisx0212"))
- do_normal(name);
- else if (!strcmp(name,"cns11643_1") || !strcmp(name,"cns11643_2")
- || !strcmp(name,"cns11643_3"))
- do_normal_only_charset2uni(name);
- else if (!strcmp(name,"cns11643_inv"))
- do_cns11643_only_uni2charset(name);
- else if (!strcmp(name,"gbkext1"))
- do_gbk1_only_charset2uni(name);
- else if (!strcmp(name,"gbkext2"))
- do_gbk2_only_charset2uni(name);
- else if (!strcmp(name,"gbkext_inv"))
- do_gbk1_only_uni2charset(name);
- else if (!strcmp(name,"cp936ext"))
- do_gbk1(name);
- else if (!strcmp(name,"ksc5601"))
- do_ksc5601(name);
- else if (!strcmp(name,"big5") || !strcmp(name,"cp950ext"))
- do_big5(name);
- else if (!strcmp(name,"big5hkscs"))
- do_big5hkscs(name);
- else if (!strcmp(name,"johab_hangul"))
- do_johab_hangul(name);
- else if (!strcmp(name,"cp932ext"))
- do_sjis(name);
- else
- exit(1);
-
- return 0;
-}
+
+/*
+ * Generates a CJK character set table from a .TXT table as found on
+ * ftp.unicode.org or in the X nls directory.
+ * Examples:
+ *
+ * ./cjk_tab_to_h GB2312.1980-0 gb2312 > gb2312.h < gb2312
+ * ./cjk_tab_to_h JISX0208.1983-0 jisx0208 > jisx0208.h < jis0208
+ * ./cjk_tab_to_h KSC5601.1987-0 ksc5601 > ksc5601.h < ksc5601
+ *
+ * ./cjk_tab_to_h GB2312.1980-0 gb2312 > gb2312.h < GB2312.TXT
+ * ./cjk_tab_to_h JISX0208.1983-0 jisx0208 > jisx0208.h < JIS0208.TXT
+ * ./cjk_tab_to_h JISX0212.1990-0 jisx0212 > jisx0212.h < JIS0212.TXT
+ * ./cjk_tab_to_h KSC5601.1987-0 ksc5601 > ksc5601.h < KSC5601.TXT
+ * ./cjk_tab_to_h KSX1001.1992-0 ksc5601 > ksc5601.h < KSX1001.TXT
+ *
+ * ./cjk_tab_to_h BIG5 big5 > big5.h < BIG5.TXT
+ *
+ * ./cjk_tab_to_h JOHAB johab > johab.h < JOHAB.TXT
+ *
+ * ./cjk_tab_to_h BIG5HKSCS-0 big5hkscs >big5hkscs.h < BIG5HKSCS.TXT
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+
+typedef struct {
+ int start;
+ int end;
+} Block;
+
+typedef struct {
+ int rows; /* number of possible values for the 1st byte */
+ int cols; /* number of possible values for the 2nd byte */
+ int (*row_byte) (int row); /* returns the 1st byte value for a given row */
+ int (*col_byte) (int col); /* returns the 2nd byte value for a given col */
+ int (*byte_row) (int byte); /* converts a 1st byte value to a row, else -1 */
+ int (*byte_col) (int byte); /* converts a 2nd byte value to a col, else -1 */
+ const char* check_row_expr; /* format string for 1st byte value checking */
+ const char* check_col_expr; /* format string for 2nd byte value checking */
+ const char* byte_row_expr; /* format string for 1st byte value to row */
+ const char* byte_col_expr; /* format string for 2nd byte value to col */
+ int** charset2uni; /* charset2uni[0..rows-1][0..cols-1] is valid */
+ /* You'll understand the terms "row" and "col" when you buy Ken Lunde's book.
+ Once a row is fixed, choosing a "col" is the same as choosing a "cell". */
+ int* charsetpage; /* charsetpage[0..rows]: how large is a page for a row */
+ int ncharsetblocks;
+ Block* charsetblocks; /* blocks[0..nblocks-1] */
+ int* uni2charset; /* uni2charset[0x0000..0xffff] */
+} Encoding;
+
+/*
+ * Outputs the file title.
+ */
+static void output_title (const char *charsetname)
+{
+ printf("\n");
+ printf("/*\n");
+ printf(" * %s\n", charsetname);
+ printf(" */\n");
+ printf("\n");
+}
+
+/*
+ * Reads the charset2uni table from standard input.
+ */
+static void read_table (Encoding* enc)
+{
+ int row, col, i, i1, i2, c, j;
+
+ enc->charset2uni = (int**) malloc(enc->rows*sizeof(int*));
+ for (row = 0; row < enc->rows; row++)
+ enc->charset2uni[row] = (int*) malloc(enc->cols*sizeof(int));
+
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++)
+ enc->charset2uni[row][col] = 0xfffd;
+
+ c = getc(stdin);
+ ungetc(c,stdin);
+ if (c == '#') {
+ /* Read a unicode.org style .TXT file. */
+ for (;;) {
+ c = getc(stdin);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#') {
+ do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
+ continue;
+ }
+ ungetc(c,stdin);
+ if (scanf("0x%x", &j) != 1)
+ exit(1);
+ i1 = j >> 8;
+ i2 = j & 0xff;
+ row = enc->byte_row(i1);
+ col = enc->byte_col(i2);
+ if (row < 0 || col < 0) {
+ fprintf(stderr, "lost entry for %02x %02x\n", i1, i2);
+ exit(1);
+ }
+ if (scanf(" 0x%x", &enc->charset2uni[row][col]) != 1)
+ exit(1);
+ }
+ } else {
+ /* Read a table of hexadecimal Unicode values. */
+ for (i1 = 32; i1 < 132; i1++)
+ for (i2 = 32; i2 < 132; i2++) {
+ i = scanf("%x", &j);
+ if (i == EOF)
+ goto read_done;
+ if (i != 1)
+ exit(1);
+ if (j < 0 || j == 0xffff)
+ j = 0xfffd;
+ if (j != 0xfffd) {
+ if (enc->byte_row(i1) < 0 || enc->byte_col(i2) < 0) {
+ fprintf(stderr, "lost entry at %02x %02x\n", i1, i2);
+ exit (1);
+ }
+ enc->charset2uni[enc->byte_row(i1)][enc->byte_col(i2)] = j;
+ }
+ }
+ read_done: ;
+ }
+}
+
+/*
+ * Computes the charsetpage[0..rows] array.
+ */
+static void find_charset2uni_pages (Encoding* enc)
+{
+ int row, col;
+
+ enc->charsetpage = (int*) malloc((enc->rows+1)*sizeof(int));
+
+ for (row = 0; row <= enc->rows; row++)
+ enc->charsetpage[row] = 0;
+
+ for (row = 0; row < enc->rows; row++) {
+ int used = 0;
+ for (col = 0; col < enc->cols; col++)
+ if (enc->charset2uni[row][col] != 0xfffd)
+ used = col+1;
+ enc->charsetpage[row] = used;
+ }
+}
+
+/*
+ * Fills in nblocks and blocks.
+ */
+static void find_charset2uni_blocks (Encoding* enc)
+{
+ int n, row, lastrow;
+
+ enc->charsetblocks = (Block*) malloc(enc->rows*sizeof(Block));
+
+ n = 0;
+ for (row = 0; row < enc->rows; row++)
+ if (enc->charsetpage[row] > 0 && (row == 0 || enc->charsetpage[row-1] == 0)) {
+ for (lastrow = row; enc->charsetpage[lastrow+1] > 0; lastrow++);
+ enc->charsetblocks[n].start = row * enc->cols;
+ enc->charsetblocks[n].end = lastrow * enc->cols + enc->charsetpage[lastrow];
+ n++;
+ }
+ enc->ncharsetblocks = n;
+}
+
+/*
+ * Outputs the charset to unicode table and function.
+ */
+static void output_charset2uni (const char* name, Encoding* enc)
+{
+ int row, col, lastrow, col_max, i, i1_min, i1_max;
+
+ find_charset2uni_pages(enc);
+
+ find_charset2uni_blocks(enc);
+
+ for (row = 0; row < enc->rows; row++)
+ if (enc->charsetpage[row] > 0) {
+ if (row == 0 || enc->charsetpage[row-1] == 0) {
+ /* Start a new block. */
+ for (lastrow = row; enc->charsetpage[lastrow+1] > 0; lastrow++);
+ printf("static const unsigned short %s_2uni_page%02x[%d] = {\n",
+ name, enc->row_byte(row),
+ (lastrow-row) * enc->cols + enc->charsetpage[lastrow]);
+ }
+ printf(" /""* 0x%02x *""/\n ", enc->row_byte(row));
+ col_max = (enc->charsetpage[row+1] > 0 ? enc->cols : enc->charsetpage[row]);
+ for (col = 0; col < col_max; col++) {
+ printf(" 0x%04x,", enc->charset2uni[row][col]);
+ if ((col % 8) == 7 && (col+1 < col_max)) printf("\n ");
+ }
+ printf("\n");
+ if (enc->charsetpage[row+1] == 0) {
+ /* End a block. */
+ printf("};\n");
+ }
+ }
+ printf("\n");
+
+ printf("static int\n");
+ printf("%s_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)\n", name);
+ printf("{\n");
+ printf(" unsigned char c1 = s[0];\n");
+ printf(" if (");
+ for (i = 0; i < enc->ncharsetblocks; i++) {
+ i1_min = enc->row_byte(enc->charsetblocks[i].start / enc->cols);
+ i1_max = enc->row_byte((enc->charsetblocks[i].end-1) / enc->cols);
+ if (i > 0)
+ printf(" || ");
+ if (i1_min == i1_max)
+ printf("(c1 == 0x%02x)", i1_min);
+ else
+ printf("(c1 >= 0x%02x && c1 <= 0x%02x)", i1_min, i1_max);
+ }
+ printf(") {\n");
+ printf(" if (n >= 2) {\n");
+ printf(" unsigned char c2 = s[1];\n");
+ printf(" if (");
+ printf(enc->check_col_expr, "c2");
+ printf(") {\n");
+ printf(" unsigned int i = %d * (", enc->cols);
+ printf(enc->byte_row_expr, "c1");
+ printf(") + (");
+ printf(enc->byte_col_expr, "c2");
+ printf(");\n");
+ printf(" unsigned short wc = 0xfffd;\n");
+ for (i = 0; i < enc->ncharsetblocks; i++) {
+ printf(" ");
+ if (i > 0)
+ printf("} else ");
+ if (i < enc->ncharsetblocks-1)
+ printf("if (i < %d) ", enc->charsetblocks[i+1].start);
+ printf("{\n");
+ printf(" if (i < %d)\n", enc->charsetblocks[i].end);
+ printf(" wc = %s_2uni_page%02x[i", name, enc->row_byte(enc->charsetblocks[i].start / enc->cols));
+ if (enc->charsetblocks[i].start > 0)
+ printf("-%d", enc->charsetblocks[i].start);
+ printf("];\n");
+ }
+ printf(" }\n");
+ printf(" if (wc != 0xfffd) {\n");
+ printf(" *pwc = (ucs4_t) wc;\n");
+ printf(" return 2;\n");
+ printf(" }\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf(" }\n");
+ printf(" return RET_TOOFEW(0);\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf("}\n");
+ printf("\n");
+}
+
+/*
+ * Computes the uni2charset[0x0000..0xffff] array.
+ */
+static void invert (Encoding* enc)
+{
+ int row, col, j;
+
+ enc->uni2charset = (int*) malloc(0x10000*sizeof(int));
+
+ for (j = 0; j < 0x10000; j++)
+ enc->uni2charset[j] = 0;
+
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++) {
+ j = enc->charset2uni[row][col];
+ if (j != 0xfffd)
+ enc->uni2charset[j] = 0x100 * enc->row_byte(row) + enc->col_byte(col);
+ }
+}
+
+/*
+ * Outputs the unicode to charset table and function, using a linear array.
+ * (Suitable if the table is dense.)
+ */
+static void output_uni2charset_dense (const char* name, Encoding* enc)
+{
+ /* Like in 8bit_tab_to_h.c */
+ bool pages[0x100];
+ int line[0x2000];
+ int tableno;
+ struct { int minline; int maxline; int usecount; } tables[0x2000];
+ bool first;
+ int row, col, j, p, j1, j2, t;
+
+ for (p = 0; p < 0x100; p++)
+ pages[p] = false;
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++) {
+ j = enc->charset2uni[row][col];
+ if (j != 0xfffd)
+ pages[j>>8] = true;
+ }
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ bool all_invalid = true;
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ if (enc->uni2charset[j] != 0)
+ all_invalid = false;
+ }
+ if (all_invalid)
+ line[j1] = -1;
+ else
+ line[j1] = 0;
+ }
+ tableno = 0;
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ if (line[j1] >= 0) {
+ if (tableno > 0
+ && ((j1 > 0 && line[j1-1] == tableno-1)
+ || ((tables[tableno-1].maxline >> 5) == (j1 >> 5)
+ && j1 - tables[tableno-1].maxline <= 8))) {
+ line[j1] = tableno-1;
+ tables[tableno-1].maxline = j1;
+ } else {
+ tableno++;
+ line[j1] = tableno-1;
+ tables[tableno-1].minline = tables[tableno-1].maxline = j1;
+ }
+ }
+ }
+ for (t = 0; t < tableno; t++) {
+ tables[t].usecount = 0;
+ j1 = 8*tables[t].minline;
+ j2 = 8*(tables[t].maxline+1);
+ for (j = j1; j < j2; j++)
+ if (enc->uni2charset[j] != 0)
+ tables[t].usecount++;
+ }
+ {
+ p = -1;
+ for (t = 0; t < tableno; t++)
+ if (tables[t].usecount > 1) {
+ p = tables[t].minline >> 5;
+ printf("static const unsigned short %s_page%02x[%d] = {\n", name, p, 8*(tables[t].maxline-tables[t].minline+1));
+ for (j1 = tables[t].minline; j1 <= tables[t].maxline; j1++) {
+ if ((j1 % 0x20) == 0 && j1 > tables[t].minline)
+ printf(" /* 0x%04x */\n", 8*j1);
+ printf(" ");
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ printf(" 0x%04x,", enc->uni2charset[j]);
+ }
+ printf(" /*0x%02x-0x%02x*/\n", 8*(j1 % 0x20), 8*(j1 % 0x20)+7);
+ }
+ printf("};\n");
+ }
+ if (p >= 0)
+ printf("\n");
+ }
+ printf("static int\n%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", name);
+ printf("{\n");
+ printf(" if (n >= 2) {\n");
+ printf(" unsigned short c = 0;\n");
+ first = true;
+ for (j1 = 0; j1 < 0x2000;) {
+ t = line[j1];
+ for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
+ if (t >= 0) {
+ if (j1 != tables[t].minline) abort();
+ if (j2 > tables[t].maxline+1) abort();
+ j2 = tables[t].maxline+1;
+ if (first)
+ printf(" ");
+ else
+ printf(" else ");
+ first = false;
+ if (tables[t].usecount == 0) abort();
+ if (tables[t].usecount == 1) {
+ if (j2 != j1+1) abort();
+ for (j = 8*j1; j < 8*j2; j++)
+ if (enc->uni2charset[j] != 0) {
+ printf("if (wc == 0x%04x)\n c = 0x%02x;\n", j, enc->uni2charset[j]);
+ break;
+ }
+ } else {
+ if (j1 == 0) {
+ printf("if (wc < 0x%04x)", 8*j2);
+ } else {
+ printf("if (wc >= 0x%04x && wc < 0x%04x)", 8*j1, 8*j2);
+ }
+ printf("\n c = %s_page%02x[wc", name, j1 >> 5);
+ if (tables[t].minline > 0)
+ printf("-0x%04x", 8*j1);
+ printf("];\n");
+ }
+ }
+ j1 = j2;
+ }
+ printf(" if (c != 0) {\n");
+ printf(" r[0] = (c >> 8); r[1] = (c & 0xff);\n");
+ printf(" return 2;\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf(" }\n");
+ printf(" return RET_TOOSMALL;\n");
+ printf("}\n");
+}
+
+/*
+ * Outputs the unicode to charset table and function, using a packed array.
+ * (Suitable if the table is sparse.)
+ */
+static void output_uni2charset_sparse (const char* name, Encoding* enc)
+{
+ bool pages[0x100];
+ Block pageblocks[0x100]; int npageblocks;
+ int indx2charset[0x10000];
+ int summary_indx[0x1000];
+ int summary_used[0x1000];
+ int i, row, col, j, p, j1, j2, indx;
+
+ /* Fill pages[0x100]. */
+ for (p = 0; p < 0x100; p++)
+ pages[p] = false;
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++) {
+ j = enc->charset2uni[row][col];
+ if (j != 0xfffd)
+ pages[j>>8] = true;
+ }
+
+#if 0
+ for (p = 0; p < 0x100; p++)
+ if (pages[p]) {
+ printf("static const unsigned short %s_page%02x[256] = {\n", name, p);
+ for (j1 = 0; j1 < 32; j1++) {
+ printf(" ");
+ for (j2 = 0; j2 < 8; j2++)
+ printf("0x%04x, ", enc->uni2charset[256*p+8*j1+j2]);
+ printf("/""*0x%02x-0x%02x*""/\n", 8*j1, 8*j1+7);
+ }
+ printf("};\n");
+ }
+ printf("\n");
+#endif
+
+ /* Fill summary_indx[] and summary_used[]. */
+ indx = 0;
+ for (j1 = 0; j1 < 0x1000; j1++) {
+ summary_indx[j1] = indx;
+ summary_used[j1] = 0;
+ for (j2 = 0; j2 < 16; j2++) {
+ j = 16*j1+j2;
+ if (enc->uni2charset[j] != 0) {
+ indx2charset[indx++] = enc->uni2charset[j];
+ summary_used[j1] |= (1 << j2);
+ }
+ }
+ }
+
+ /* Fill npageblocks and pageblocks[]. */
+ npageblocks = 0;
+ for (p = 0; p < 0x100; ) {
+ if (pages[p] && (p == 0 || !pages[p-1])) {
+ pageblocks[npageblocks].start = 16*p;
+ do p++; while (p < 0x100 && pages[p]);
+ j1 = 16*p;
+ while (summary_used[j1-1] == 0) j1--;
+ pageblocks[npageblocks].end = j1;
+ npageblocks++;
+ } else
+ p++;
+ }
+
+ printf("static const unsigned short %s_2charset[%d] = {\n", name, indx);
+ for (i = 0; i < indx; ) {
+ if ((i % 8) == 0) printf(" ");
+ printf(" 0x%04x,", indx2charset[i]);
+ i++;
+ if ((i % 8) == 0 || i == indx) printf("\n");
+ }
+ printf("};\n");
+ printf("\n");
+ for (i = 0; i < npageblocks; i++) {
+ printf("static const Summary16 %s_uni2indx_page%02x[%d] = {\n", name,
+ pageblocks[i].start/16, pageblocks[i].end-pageblocks[i].start);
+ for (j1 = pageblocks[i].start; j1 < pageblocks[i].end; ) {
+ if (((16*j1) % 0x100) == 0) printf(" /""* 0x%04x *""/\n", 16*j1);
+ if ((j1 % 4) == 0) printf(" ");
+ printf(" { %4d, 0x%04x },", summary_indx[j1], summary_used[j1]);
+ j1++;
+ if ((j1 % 4) == 0 || j1 == pageblocks[i].end) printf("\n");
+ }
+ printf("};\n");
+ }
+ printf("\n");
+
+ printf("static int\n");
+ printf("%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", name);
+ printf("{\n");
+ printf(" if (n >= 2) {\n");
+ printf(" const Summary16 *summary = NULL;\n");
+ for (i = 0; i < npageblocks; i++) {
+ printf(" ");
+ if (i > 0)
+ printf("else ");
+ printf("if (wc >= 0x%04x && wc < 0x%04x)\n",
+ 16*pageblocks[i].start, 16*pageblocks[i].end);
+ printf(" summary = &%s_uni2indx_page%02x[(wc>>4)", name,
+ pageblocks[i].start/16);
+ if (pageblocks[i].start > 0)
+ printf("-0x%03x", pageblocks[i].start);
+ printf("];\n");
+ }
+ printf(" if (summary) {\n");
+ printf(" unsigned short used = summary->used;\n");
+ printf(" unsigned int i = wc & 0x0f;\n");
+ printf(" if (used & ((unsigned short) 1 << i)) {\n");
+ printf(" unsigned short c;\n");
+ printf(" /* Keep in `used' only the bits 0..i-1. */\n");
+ printf(" used &= ((unsigned short) 1 << i) - 1;\n");
+ printf(" /* Add `summary->indx' and the number of bits set in `used'. */\n");
+ printf(" used = (used & 0x5555) + ((used & 0xaaaa) >> 1);\n");
+ printf(" used = (used & 0x3333) + ((used & 0xcccc) >> 2);\n");
+ printf(" used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);\n");
+ printf(" used = (used & 0x00ff) + (used >> 8);\n");
+ printf(" c = %s_2charset[summary->indx + used];\n", name);
+ printf(" r[0] = (c >> 8); r[1] = (c & 0xff);\n");
+ printf(" return 2;\n");
+ printf(" }\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf(" }\n");
+ printf(" return RET_TOOSMALL;\n");
+ printf("}\n");
+}
+
+/* ISO-2022/EUC specifics */
+
+static int row_byte_normal (int row) { return 0x21+row; }
+static int col_byte_normal (int col) { return 0x21+col; }
+static int byte_row_normal (int byte) { return byte-0x21; }
+static int byte_col_normal (int byte) { return byte-0x21; }
+
+static void do_normal (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_normal;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_normal;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Note: On first sight, the jisx0212_2charset[] table seems to be in order,
+ starting from the charset=0x3021/uni=0x4e02 pair. But it's only mostly in
+ order. There are 75 out-of-order values, scattered all throughout the table.
+ */
+
+static void do_normal_only_charset2uni (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_normal;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_normal;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+}
+
+/* CNS 11643 specifics - trick to put two tables into one */
+
+static int row_byte_cns11643 (int row) {
+ return 0x100 * (row / 94) + (row % 94) + 0x21;
+}
+static int byte_row_cns11643 (int byte) {
+ return (byte >= 0x100 && byte < 0x200 ? byte-0x121 :
+ byte >= 0x200 && byte < 0x300 ? byte-0x221+94 :
+ byte >= 0x300 && byte < 0x400 ? byte-0x321+2*94 :
+ -1);
+}
+
+static void do_cns11643_only_uni2charset (const char* name)
+{
+ Encoding enc;
+ int j, x;
+
+ enc.rows = 3*94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_cns11643;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_cns11643;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table(&enc);
+ invert(&enc);
+ /* Move the 2 plane bits into the unused bits 15 and 7. */
+ for (j = 0; j < 0x10000; j++) {
+ x = enc.uni2charset[j];
+ if (x != 0) {
+ if (x & 0x8080) abort();
+ switch (x >> 16) {
+ case 0: /* plane 1 */ x = (x & 0xffff) | 0x0000; break;
+ case 1: /* plane 2 */ x = (x & 0xffff) | 0x0080; break;
+ case 2: /* plane 3 */ x = (x & 0xffff) | 0x8000; break;
+ default: abort();
+ }
+ enc.uni2charset[j] = x;
+ }
+ }
+ output_uni2charset_sparse(name,&enc);
+}
+
+/* GBK specifics */
+
+static int row_byte_gbk1 (int row) {
+ return 0x81+row;
+}
+static int col_byte_gbk1 (int col) {
+ return (col >= 0x3f ? 0x41 : 0x40) + col;
+}
+static int byte_row_gbk1 (int byte) {
+ if (byte >= 0x81 && byte < 0xff)
+ return byte-0x81;
+ else
+ return -1;
+}
+static int byte_col_gbk1 (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0x80 && byte < 0xff)
+ return byte-0x41;
+ else
+ return -1;
+}
+
+static void do_gbk1 (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 190;
+ enc.row_byte = row_byte_gbk1;
+ enc.col_byte = col_byte_gbk1;
+ enc.byte_row = byte_row_gbk1;
+ enc.byte_col = byte_col_gbk1;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_dense(name,&enc);
+}
+
+static void do_gbk1_only_charset2uni (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 190;
+ enc.row_byte = row_byte_gbk1;
+ enc.col_byte = col_byte_gbk1;
+ enc.byte_row = byte_row_gbk1;
+ enc.byte_col = byte_col_gbk1;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+}
+
+static int row_byte_gbk2 (int row) {
+ return 0x81+row;
+}
+static int col_byte_gbk2 (int col) {
+ return (col >= 0x3f ? 0x41 : 0x40) + col;
+}
+static int byte_row_gbk2 (int byte) {
+ if (byte >= 0x81 && byte < 0xff)
+ return byte-0x81;
+ else
+ return -1;
+}
+static int byte_col_gbk2 (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0x80 && byte < 0xa1)
+ return byte-0x41;
+ else
+ return -1;
+}
+
+static void do_gbk2_only_charset2uni (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 96;
+ enc.row_byte = row_byte_gbk2;
+ enc.col_byte = col_byte_gbk2;
+ enc.byte_row = byte_row_gbk2;
+ enc.byte_col = byte_col_gbk2;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xa1)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+}
+
+static void do_gbk1_only_uni2charset (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 190;
+ enc.row_byte = row_byte_gbk1;
+ enc.col_byte = col_byte_gbk1;
+ enc.byte_row = byte_row_gbk1;
+ enc.byte_col = byte_col_gbk1;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* KSC 5601 specifics */
+
+/*
+ * Reads the charset2uni table from standard input.
+ */
+static void read_table_ksc5601 (Encoding* enc)
+{
+ int row, col, i, i1, i2, c, j;
+
+ enc->charset2uni = (int**) malloc(enc->rows*sizeof(int*));
+ for (row = 0; row < enc->rows; row++)
+ enc->charset2uni[row] = (int*) malloc(enc->cols*sizeof(int));
+
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++)
+ enc->charset2uni[row][col] = 0xfffd;
+
+ c = getc(stdin);
+ ungetc(c,stdin);
+ if (c == '#') {
+ /* Read a unicode.org style .TXT file. */
+ for (;;) {
+ c = getc(stdin);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#') {
+ do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
+ continue;
+ }
+ ungetc(c,stdin);
+ if (scanf("0x%x", &j) != 1)
+ exit(1);
+ i1 = j >> 8;
+ i2 = j & 0xff;
+ if (scanf(" 0x%x", &j) != 1)
+ exit(1);
+ /* Take only the range covered by KS C 5601.1987-0 = KS C 5601.1989-0
+ = KS X 1001.1992, ignore the rest. */
+ if (!(i1 >= 128+33 && i1 < 128+127 && i2 >= 128+33 && i2 < 128+127))
+ continue; /* KSC5601 specific */
+ i1 &= 0x7f; /* KSC5601 specific */
+ i2 &= 0x7f; /* KSC5601 specific */
+ row = enc->byte_row(i1);
+ col = enc->byte_col(i2);
+ if (row < 0 || col < 0) {
+ fprintf(stderr, "lost entry for %02x %02x\n", i1, i2);
+ exit(1);
+ }
+ enc->charset2uni[row][col] = j;
+ }
+ } else {
+ /* Read a table of hexadecimal Unicode values. */
+ for (i1 = 33; i1 < 127; i1++)
+ for (i2 = 33; i2 < 127; i2++) {
+ i = scanf("%x", &j);
+ if (i == EOF)
+ goto read_done;
+ if (i != 1)
+ exit(1);
+ if (j < 0 || j == 0xffff)
+ j = 0xfffd;
+ if (j != 0xfffd) {
+ if (enc->byte_row(i1) < 0 || enc->byte_col(i2) < 0) {
+ fprintf(stderr, "lost entry at %02x %02x\n", i1, i2);
+ exit (1);
+ }
+ enc->charset2uni[enc->byte_row(i1)][enc->byte_col(i2)] = j;
+ }
+ }
+ read_done: ;
+ }
+}
+
+static void do_ksc5601 (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_normal;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_normal;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table_ksc5601(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Big5 specifics */
+
+static int row_byte_big5 (int row) {
+ return 0xa1+row;
+}
+static int col_byte_big5 (int col) {
+ return (col >= 0x3f ? 0x62 : 0x40) + col;
+}
+static int byte_row_big5 (int byte) {
+ if (byte >= 0xa1 && byte < 0xff)
+ return byte-0xa1;
+ else
+ return -1;
+}
+static int byte_col_big5 (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0xa1 && byte < 0xff)
+ return byte-0x62;
+ else
+ return -1;
+}
+
+static void do_big5 (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 157;
+ enc.row_byte = row_byte_big5;
+ enc.col_byte = col_byte_big5;
+ enc.byte_row = byte_row_big5;
+ enc.byte_col = byte_col_big5;
+ enc.check_row_expr = "%1$s >= 0xa1 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0xa1 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0xa1";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0xa1 ? 0x62 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Big5-HKSCS specifics */
+
+static int row_byte_big5hkscs (int row) {
+ return 0x81+row;
+}
+static int col_byte_big5hkscs (int col) {
+ return (col >= 0x3f ? 0x62 : 0x40) + col;
+}
+static int byte_row_big5hkscs (int byte) {
+ if (byte >= 0x81 && byte < 0xff)
+ return byte-0x81;
+ else
+ return -1;
+}
+static int byte_col_big5hkscs (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0xa1 && byte < 0xff)
+ return byte-0x62;
+ else
+ return -1;
+}
+
+static void do_big5hkscs (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 157;
+ enc.row_byte = row_byte_big5hkscs;
+ enc.col_byte = col_byte_big5hkscs;
+ enc.byte_row = byte_row_big5hkscs;
+ enc.byte_col = byte_col_big5hkscs;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0xa1 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0xa1 ? 0x62 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Johab Hangul specifics */
+
+static int row_byte_johab_hangul (int row) {
+ return 0x84+row;
+}
+static int col_byte_johab_hangul (int col) {
+ return (col >= 0x3e ? 0x43 : 0x41) + col;
+}
+static int byte_row_johab_hangul (int byte) {
+ if (byte >= 0x84 && byte < 0xd4)
+ return byte-0x84;
+ else
+ return -1;
+}
+static int byte_col_johab_hangul (int byte) {
+ if (byte >= 0x41 && byte < 0x7f)
+ return byte-0x41;
+ else if (byte >= 0x81 && byte < 0xff)
+ return byte-0x43;
+ else
+ return -1;
+}
+
+static void do_johab_hangul (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 80;
+ enc.cols = 188;
+ enc.row_byte = row_byte_johab_hangul;
+ enc.col_byte = col_byte_johab_hangul;
+ enc.byte_row = byte_row_johab_hangul;
+ enc.byte_col = byte_col_johab_hangul;
+ enc.check_row_expr = "%1$s >= 0x84 && %1$s < 0xd4";
+ enc.check_col_expr = "(%1$s >= 0x41 && %1$s < 0x7f) || (%1$s >= 0x81 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x84";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x81 ? 0x43 : 0x41)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_dense(name,&enc);
+}
+
+/* SJIS specifics */
+
+static int row_byte_sjis (int row) {
+ return (row >= 0x1f ? 0xc1 : 0x81) + row;
+}
+static int col_byte_sjis (int col) {
+ return (col >= 0x3f ? 0x41 : 0x40) + col;
+}
+static int byte_row_sjis (int byte) {
+ if (byte >= 0x81 && byte < 0xa0)
+ return byte-0x81;
+ else if (byte >= 0xe0)
+ return byte-0xc1;
+ else
+ return -1;
+}
+static int byte_col_sjis (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0x80 && byte < 0xfd)
+ return byte-0x41;
+ else
+ return -1;
+}
+
+static void do_sjis (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 188;
+ enc.row_byte = row_byte_sjis;
+ enc.col_byte = col_byte_sjis;
+ enc.byte_row = byte_row_sjis;
+ enc.byte_col = byte_col_sjis;
+ enc.check_row_expr = "(%1$s >= 0x81 && %1$s < 0xa0) || (%1$s >= 0xe0)";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xfd)";
+ enc.byte_row_expr = "%1$s - (%1$s >= 0xe0 ? 0xc1 : 0x81)";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Main program */
+
+int main (int argc, char *argv[])
+{
+ const char* charsetname;
+ const char* name;
+
+ if (argc != 3)
+ exit(1);
+ charsetname = argv[1];
+ name = argv[2];
+
+ output_title(charsetname);
+
+ if (!strcmp(name,"gb2312") || !strcmp(name,"gb12345ext")
+ || !strcmp(name,"jisx0208") || !strcmp(name,"jisx0212"))
+ do_normal(name);
+ else if (!strcmp(name,"cns11643_1") || !strcmp(name,"cns11643_2")
+ || !strcmp(name,"cns11643_3"))
+ do_normal_only_charset2uni(name);
+ else if (!strcmp(name,"cns11643_inv"))
+ do_cns11643_only_uni2charset(name);
+ else if (!strcmp(name,"gbkext1"))
+ do_gbk1_only_charset2uni(name);
+ else if (!strcmp(name,"gbkext2"))
+ do_gbk2_only_charset2uni(name);
+ else if (!strcmp(name,"gbkext_inv"))
+ do_gbk1_only_uni2charset(name);
+ else if (!strcmp(name,"cp936ext"))
+ do_gbk1(name);
+ else if (!strcmp(name,"ksc5601"))
+ do_ksc5601(name);
+ else if (!strcmp(name,"big5") || !strcmp(name,"cp950ext"))
+ do_big5(name);
+ else if (!strcmp(name,"big5hkscs"))
+ do_big5hkscs(name);
+ else if (!strcmp(name,"johab_hangul"))
+ do_johab_hangul(name);
+ else if (!strcmp(name,"cp932ext"))
+ do_sjis(name);
+ else
+ exit(1);
+
+ return 0;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/cp1133.h b/libX11/src/xlibi18n/lcUniConv/cp1133.h
index cf79b7aa1..01e77392e 100644
--- a/libX11/src/xlibi18n/lcUniConv/cp1133.h
+++ b/libX11/src/xlibi18n/lcUniConv/cp1133.h
@@ -1,91 +1,91 @@
-
-/*
- * IBM-CP1133
- */
-
-static const unsigned short cp1133_2uni_1[64] = {
- /* 0xa0 */
- 0x00a0, 0x0e81, 0x0e82, 0x0e84, 0x0e87, 0x0e88, 0x0eaa, 0x0e8a,
- 0x0e8d, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0x0e99, 0x0e9a, 0x0e9b,
- /* 0xb0 */
- 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, 0x0ea1, 0x0ea2, 0x0ea3, 0x0ea5,
- 0x0ea7, 0x0eab, 0x0ead, 0x0eae, 0xfffd, 0xfffd, 0xfffd, 0x0eaf,
- /* 0xc0 */
- 0x0eb0, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, 0x0eb8,
- 0x0eb9, 0x0ebc, 0x0eb1, 0x0ebb, 0x0ebd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xd0 */
- 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0ec8, 0x0ec9, 0x0eca,
- 0x0ecb, 0x0ecc, 0x0ecd, 0x0ec6, 0xfffd, 0x0edc, 0x0edd, 0x20ad,
-};
-static const unsigned short cp1133_2uni_2[16] = {
- /* 0xf0 */
- 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
- 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x00a2, 0x00ac, 0x00a6, 0xfffd,
-};
-
-static int
-cp1133_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else if (c < 0xe0) {
- unsigned short wc = cp1133_2uni_1[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- else if (c < 0xf0) {
- }
- else {
- unsigned short wc = cp1133_2uni_2[c-0xf0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char cp1133_page00[16] = {
- 0xa0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
-};
-static const unsigned char cp1133_page0e[96] = {
- 0x00, 0xa1, 0xa2, 0x00, 0xa3, 0x00, 0x00, 0xa4, /* 0x80-0x87 */
- 0xa5, 0x00, 0xa7, 0x00, 0x00, 0xa8, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x00, 0x00, 0xa9, 0xaa, 0xab, 0xac, /* 0x90-0x97 */
- 0x00, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, /* 0x98-0x9f */
- 0x00, 0xb4, 0xb5, 0xb6, 0x00, 0xb7, 0x00, 0xb8, /* 0xa0-0xa7 */
- 0x00, 0x00, 0xa6, 0xb9, 0x00, 0xba, 0xbb, 0xbf, /* 0xa8-0xaf */
- 0xc0, 0xca, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, /* 0xb0-0xb7 */
- 0xc7, 0xc8, 0x00, 0xcb, 0xc9, 0xcc, 0x00, 0x00, /* 0xb8-0xbf */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xdb, 0x00, /* 0xc0-0xc7 */
- 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0x00, 0x00, /* 0xc8-0xcf */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
- 0xf8, 0xf9, 0x00, 0x00, 0xdd, 0xde, 0x00, 0x00, /* 0xd8-0xdf */
-};
-
-static int
-cp1133_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00b0)
- c = cp1133_page00[wc-0x00a0];
- else if (wc >= 0x0e80 && wc < 0x0ee0)
- c = cp1133_page0e[wc-0x0e80];
- else if (wc == 0x20ad)
- c = 0xdf;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * IBM-CP1133
+ */
+
+static const unsigned short cp1133_2uni_1[64] = {
+ /* 0xa0 */
+ 0x00a0, 0x0e81, 0x0e82, 0x0e84, 0x0e87, 0x0e88, 0x0eaa, 0x0e8a,
+ 0x0e8d, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0x0e99, 0x0e9a, 0x0e9b,
+ /* 0xb0 */
+ 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, 0x0ea1, 0x0ea2, 0x0ea3, 0x0ea5,
+ 0x0ea7, 0x0eab, 0x0ead, 0x0eae, 0xfffd, 0xfffd, 0xfffd, 0x0eaf,
+ /* 0xc0 */
+ 0x0eb0, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, 0x0eb8,
+ 0x0eb9, 0x0ebc, 0x0eb1, 0x0ebb, 0x0ebd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xd0 */
+ 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0ec8, 0x0ec9, 0x0eca,
+ 0x0ecb, 0x0ecc, 0x0ecd, 0x0ec6, 0xfffd, 0x0edc, 0x0edd, 0x20ad,
+};
+static const unsigned short cp1133_2uni_2[16] = {
+ /* 0xf0 */
+ 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
+ 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x00a2, 0x00ac, 0x00a6, 0xfffd,
+};
+
+static int
+cp1133_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else if (c < 0xe0) {
+ unsigned short wc = cp1133_2uni_1[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ else if (c < 0xf0) {
+ }
+ else {
+ unsigned short wc = cp1133_2uni_2[c-0xf0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char cp1133_page00[16] = {
+ 0xa0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char cp1133_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0x00, 0xa3, 0x00, 0x00, 0xa4, /* 0x80-0x87 */
+ 0xa5, 0x00, 0xa7, 0x00, 0x00, 0xa8, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0xa9, 0xaa, 0xab, 0xac, /* 0x90-0x97 */
+ 0x00, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, /* 0x98-0x9f */
+ 0x00, 0xb4, 0xb5, 0xb6, 0x00, 0xb7, 0x00, 0xb8, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0xa6, 0xb9, 0x00, 0xba, 0xbb, 0xbf, /* 0xa8-0xaf */
+ 0xc0, 0xca, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, /* 0xb0-0xb7 */
+ 0xc7, 0xc8, 0x00, 0xcb, 0xc9, 0xcc, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xdb, 0x00, /* 0xc0-0xc7 */
+ 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0x00, 0x00, /* 0xc8-0xcf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
+ 0xf8, 0xf9, 0x00, 0x00, 0xdd, 0xde, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+cp1133_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00b0)
+ c = cp1133_page00[wc-0x00a0];
+ else if (wc >= 0x0e80 && wc < 0x0ee0)
+ c = cp1133_page0e[wc-0x0e80];
+ else if (wc == 0x20ad)
+ c = 0xdf;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/cp1251.h b/libX11/src/xlibi18n/lcUniConv/cp1251.h
index 8c0847a0c..dbb8ccb16 100644
--- a/libX11/src/xlibi18n/lcUniConv/cp1251.h
+++ b/libX11/src/xlibi18n/lcUniConv/cp1251.h
@@ -1,112 +1,112 @@
-
-/*
- * CP1251
- */
-
-static const unsigned short cp1251_2uni[128] = {
- /* 0x80 */
- 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,
- /* 0x90 */
- 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0xfffd, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,
- /* 0xa0 */
- 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
- 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
- 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
- /* 0xc0 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
- 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
- /* 0xd0 */
- 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
- 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
- /* 0xe0 */
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
- 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
- /* 0xf0 */
- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
- 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
-};
-
-static int
-cp1251_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = cp1251_2uni[c-0x80];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char cp1251_page00[32] = {
- 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
-};
-static const unsigned char cp1251_page04[152] = {
- 0x00, 0xa8, 0x80, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
- 0xa3, 0x8a, 0x8c, 0x8e, 0x8d, 0x00, 0xa1, 0x8f, /* 0x08-0x0f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
- 0x00, 0xb8, 0x90, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
- 0xbc, 0x9a, 0x9c, 0x9e, 0x9d, 0x00, 0xa2, 0x9f, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
-};
-static const unsigned char cp1251_page20[48] = {
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-
-static int
-cp1251_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00c0)
- c = cp1251_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x0498)
- c = cp1251_page04[wc-0x0400];
- else if (wc >= 0x2010 && wc < 0x2040)
- c = cp1251_page20[wc-0x2010];
- else if (wc == 0x20ac)
- c = 0x88;
- else if (wc == 0x2116)
- c = 0xb9;
- else if (wc == 0x2122)
- c = 0x99;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * CP1251
+ */
+
+static const unsigned short cp1251_2uni[128] = {
+ /* 0x80 */
+ 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,
+ /* 0x90 */
+ 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0xfffd, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,
+ /* 0xa0 */
+ 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
+ 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
+ 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
+ /* 0xc0 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ /* 0xd0 */
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ /* 0xe0 */
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ /* 0xf0 */
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+};
+
+static int
+cp1251_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = cp1251_2uni[c-0x80];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char cp1251_page00[32] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char cp1251_page04[152] = {
+ 0x00, 0xa8, 0x80, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
+ 0xa3, 0x8a, 0x8c, 0x8e, 0x8d, 0x00, 0xa1, 0x8f, /* 0x08-0x0f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
+ 0x00, 0xb8, 0x90, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
+ 0xbc, 0x9a, 0x9c, 0x9e, 0x9d, 0x00, 0xa2, 0x9f, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char cp1251_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+cp1251_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = cp1251_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0498)
+ c = cp1251_page04[wc-0x0400];
+ else if (wc >= 0x2010 && wc < 0x2040)
+ c = cp1251_page20[wc-0x2010];
+ else if (wc == 0x20ac)
+ c = 0x88;
+ else if (wc == 0x2116)
+ c = 0xb9;
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/cp1255.h b/libX11/src/xlibi18n/lcUniConv/cp1255.h
index 61b2b59d7..41867a1b6 100644
--- a/libX11/src/xlibi18n/lcUniConv/cp1255.h
+++ b/libX11/src/xlibi18n/lcUniConv/cp1255.h
@@ -1,120 +1,120 @@
-
-/*
- * CP1255
- */
-
-static const unsigned short cp1255_2uni[128] = {
- /* 0x80 */
- 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x02c6, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x90 */
- 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x02dc, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa0 */
- 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7,
- 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
- 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
- /* 0xc0 */
- 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7,
- 0x05b8, 0x05b9, 0xfffd, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf,
- /* 0xd0 */
- 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3,
- 0x05f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xe0 */
- 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
- 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
- /* 0xf0 */
- 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
- 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
-};
-
-static int
-cp1255_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = cp1255_2uni[c-0x80];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char cp1255_page00[88] = {
- 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
-};
-static const unsigned char cp1255_page02[32] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
-};
-static const unsigned char cp1255_page05[72] = {
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xb0-0xb7 */
- 0xc8, 0xc9, 0x00, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xb8-0xbf */
- 0xd0, 0xd1, 0xd2, 0xd3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
- 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
-};
-static const unsigned char cp1255_page20[56] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-
-static int
-cp1255_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00f8)
- c = cp1255_page00[wc-0x00a0];
- else if (wc == 0x0192)
- c = 0x83;
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = cp1255_page02[wc-0x02c0];
- else if (wc >= 0x05b0 && wc < 0x05f8)
- c = cp1255_page05[wc-0x05b0];
- else if (wc >= 0x2008 && wc < 0x2040)
- c = cp1255_page20[wc-0x2008];
- else if (wc == 0x20aa)
- c = 0xa4;
- else if (wc == 0x20ac)
- c = 0x80;
- else if (wc == 0x2122)
- c = 0x99;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * CP1255
+ */
+
+static const unsigned short cp1255_2uni[128] = {
+ /* 0x80 */
+ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x90 */
+ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa0 */
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ /* 0xc0 */
+ 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7,
+ 0x05b8, 0x05b9, 0xfffd, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf,
+ /* 0xd0 */
+ 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3,
+ 0x05f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xe0 */
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+ /* 0xf0 */
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
+};
+
+static int
+cp1255_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = cp1255_2uni[c-0x80];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char cp1255_page00[88] = {
+ 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
+};
+static const unsigned char cp1255_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+static const unsigned char cp1255_page05[72] = {
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xb0-0xb7 */
+ 0xc8, 0xc9, 0x00, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xb8-0xbf */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
+ 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
+};
+static const unsigned char cp1255_page20[56] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+cp1255_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = cp1255_page00[wc-0x00a0];
+ else if (wc == 0x0192)
+ c = 0x83;
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = cp1255_page02[wc-0x02c0];
+ else if (wc >= 0x05b0 && wc < 0x05f8)
+ c = cp1255_page05[wc-0x05b0];
+ else if (wc >= 0x2008 && wc < 0x2040)
+ c = cp1255_page20[wc-0x2008];
+ else if (wc == 0x20aa)
+ c = 0xa4;
+ else if (wc == 0x20ac)
+ c = 0x80;
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/cp1256.h b/libX11/src/xlibi18n/lcUniConv/cp1256.h
index 72284f4c1..3fb7369f7 100644
--- a/libX11/src/xlibi18n/lcUniConv/cp1256.h
+++ b/libX11/src/xlibi18n/lcUniConv/cp1256.h
@@ -1,134 +1,134 @@
-
-/*
- * CP1256
- */
-
-static const unsigned short cp1256_2uni[128] = {
- /* 0x80 */
- 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
- /* 0x90 */
- 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba,
- /* 0xa0 */
- 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
- 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
- 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f,
- /* 0xc0 */
- 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
- 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
- /* 0xd0 */
- 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7,
- 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643,
- /* 0xe0 */
- 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7,
- 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2,
-};
-
-static int
-cp1256_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) cp1256_2uni[c-0x80];
- return 1;
-}
-
-static const unsigned char cp1256_page00[96] = {
- 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0xe0, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x00, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0xf7, /* 0xf0-0xf7 */
- 0x00, 0xf9, 0x00, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
-};
-static const unsigned char cp1256_page01[72] = {
- 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
-};
-static const unsigned char cp1256_page06[208] = {
- 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
- 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, /* 0x30-0x37 */
- 0xd9, 0xda, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0xdc, 0xdd, 0xde, 0xdf, 0xe1, 0xe3, 0xe4, 0xe5, /* 0x40-0x47 */
- 0xe6, 0xec, 0xed, 0xf0, 0xf1, 0xf2, 0xf3, 0xf5, /* 0x48-0x4f */
- 0xf6, 0xf8, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, /* 0x80-0x87 */
- 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, /* 0xa8-0xaf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xaa, 0x00, /* 0xb8-0xbf */
- 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
-};
-static const unsigned char cp1256_page20[56] = {
- 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0xfd, 0xfe, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-
-static int
-cp1256_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0100)
- c = cp1256_page00[wc-0x00a0];
- else if (wc >= 0x0150 && wc < 0x0198)
- c = cp1256_page01[wc-0x0150];
- else if (wc == 0x02c6)
- c = 0x88;
- else if (wc >= 0x0608 && wc < 0x06d8)
- c = cp1256_page06[wc-0x0608];
- else if (wc >= 0x2008 && wc < 0x2040)
- c = cp1256_page20[wc-0x2008];
- else if (wc == 0x20ac)
- c = 0x80;
- else if (wc == 0x2122)
- c = 0x99;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * CP1256
+ */
+
+static const unsigned short cp1256_2uni[128] = {
+ /* 0x80 */
+ 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
+ /* 0x90 */
+ 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba,
+ /* 0xa0 */
+ 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f,
+ /* 0xc0 */
+ 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ /* 0xd0 */
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7,
+ 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643,
+ /* 0xe0 */
+ 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7,
+ 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2,
+};
+
+static int
+cp1256_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) cp1256_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char cp1256_page00[96] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0xe0, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x00, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0xf7, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0x00, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+static const unsigned char cp1256_page01[72] = {
+ 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char cp1256_page06[208] = {
+ 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, /* 0x30-0x37 */
+ 0xd9, 0xda, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0xdc, 0xdd, 0xde, 0xdf, 0xe1, 0xe3, 0xe4, 0xe5, /* 0x40-0x47 */
+ 0xe6, 0xec, 0xed, 0xf0, 0xf1, 0xf2, 0xf3, 0xf5, /* 0x48-0x4f */
+ 0xf6, 0xf8, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, /* 0x80-0x87 */
+ 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xaa, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+};
+static const unsigned char cp1256_page20[56] = {
+ 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0xfd, 0xfe, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+cp1256_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = cp1256_page00[wc-0x00a0];
+ else if (wc >= 0x0150 && wc < 0x0198)
+ c = cp1256_page01[wc-0x0150];
+ else if (wc == 0x02c6)
+ c = 0x88;
+ else if (wc >= 0x0608 && wc < 0x06d8)
+ c = cp1256_page06[wc-0x0608];
+ else if (wc >= 0x2008 && wc < 0x2040)
+ c = cp1256_page20[wc-0x2008];
+ else if (wc == 0x20ac)
+ c = 0x80;
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/gb2312.h b/libX11/src/xlibi18n/lcUniConv/gb2312.h
index 2eec308d2..eb0258bbb 100644
--- a/libX11/src/xlibi18n/lcUniConv/gb2312.h
+++ b/libX11/src/xlibi18n/lcUniConv/gb2312.h
@@ -1,2552 +1,2552 @@
-
-/*
- * GB2312.1980-0
- */
-
-static const unsigned short gb2312_2uni_page21[831] = {
- /* 0x21 */
- 0x3000, 0x3001, 0x3002, 0x30fb, 0x02c9, 0x02c7, 0x00a8, 0x3003,
- 0x3005, 0x2015, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c,
- 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
- 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1,
- 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a,
- 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312,
- 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d,
- 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234,
- 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4,
- 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb,
- 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2,
- 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,
- /* 0x22 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f,
- 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
- 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477,
- 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f,
- 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
- 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
- 0x2468, 0x2469, 0xfffd, 0xfffd, 0x3220, 0x3221, 0x3222, 0x3223,
- 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xfffd, 0xfffd,
- 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
- 0x2168, 0x2169, 0x216a, 0x216b, 0xfffd, 0xfffd,
- /* 0x23 */
- 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08,
- 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
- 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
- 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
- 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
- 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
- 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
- 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40,
- 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
- 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
- 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
- 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
- /* 0x24 */
- 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
- 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
- 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
- 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
- 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
- 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
- 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
- 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
- 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
- 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x25 */
- 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
- 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
- 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
- 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
- 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
- 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
- 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
- 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
- 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
- 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
- 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x26 */
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
- 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
- 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
- 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
- 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x27 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
- 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
- 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
- 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
- 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
- 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
- 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x28 */
- 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b, 0x00e8,
- 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
- 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
- 0x00fc, 0x00ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3105, 0x3106, 0x3107, 0x3108,
- 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
- 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
- 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x29 */
- 0xfffd, 0xfffd, 0xfffd, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504,
- 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c,
- 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514,
- 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c,
- 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524,
- 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c,
- 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
- 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c,
- 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
- 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b,
-};
-static const unsigned short gb2312_2uni_page30[6768] = {
- /* 0x30 */
- 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691,
- 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d,
- 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848,
- 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884,
- 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed,
- 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776,
- 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf,
- 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed,
- 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc,
- 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886,
- 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d,
- 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265,
- /* 0x31 */
- 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5,
- 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351,
- 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907,
- 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29,
- 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4,
- 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9,
- 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5,
- 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16,
- 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab,
- 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b,
- 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175,
- 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3,
- /* 0x32 */
- 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2,
- 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236,
- 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa,
- 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016,
- 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29,
- 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b,
- 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf,
- 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7,
- 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336,
- 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6,
- 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20,
- 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316,
- /* 0x33 */
- 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e,
- 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632,
- 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3,
- 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1,
- 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59,
- 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f,
- 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60,
- 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64,
- 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0,
- 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7,
- 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8,
- 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a,
- /* 0x34 */
- 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd,
- 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97,
- 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524,
- 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822,
- 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148,
- 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471,
- 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07,
- 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106,
- 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb,
- 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54,
- 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26,
- 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e,
- /* 0x35 */
- 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6,
- 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb,
- 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48,
- 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053,
- 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49,
- 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c,
- 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730,
- 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382,
- 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43,
- 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc,
- 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc,
- 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0,
- /* 0x36 */
- 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a,
- 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b,
- 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661,
- 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec,
- 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6,
- 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e,
- 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566,
- 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a,
- 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0,
- 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25,
- 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c,
- 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c,
- /* 0x37 */
- 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5,
- 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492,
- 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af,
- 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632,
- 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561,
- 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8,
- 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f,
- 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa,
- 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af,
- 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b,
- 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90,
- 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d,
- /* 0x38 */
- 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85,
- 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74,
- 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236,
- 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490,
- 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89,
- 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f,
- 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b,
- 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f,
- 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c,
- 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b,
- 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9,
- 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9,
- /* 0x39 */
- 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a,
- 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1,
- 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2,
- 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30,
- 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37,
- 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250,
- 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173,
- 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c,
- 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845,
- 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842,
- 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505,
- 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8,
- /* 0x3a */
- 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163,
- 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a,
- 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a,
- 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a,
- 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d,
- 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2,
- 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a,
- 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8,
- 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f,
- 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c,
- 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6,
- 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56,
- /* 0x3b */
- 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1,
- 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd,
- 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853,
- 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115,
- 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757,
- 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d,
- 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de,
- 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd,
- 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f,
- 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b,
- 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e,
- 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95,
- /* 0x3c */
- 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9,
- 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca,
- 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0,
- 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d,
- 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2,
- 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939,
- 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be,
- 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1,
- 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270,
- 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3,
- 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274,
- 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6,
- /* 0x3d */
- 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa,
- 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868,
- 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901,
- 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc,
- 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a,
- 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb,
- 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a,
- 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01,
- 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f,
- 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1,
- 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb,
- 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78,
- /* 0x3e */
- 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8,
- 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f,
- 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756,
- 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0,
- 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551,
- 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8,
- 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9,
- 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd,
- 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350,
- 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b,
- 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd,
- 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb,
- /* 0x3f */
- 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361,
- 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a,
- 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b,
- 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760, 0x5777,
- 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3, 0x54b3,
- 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af, 0x5543,
- 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54, 0x63a7,
- 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f, 0x82e6,
- 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8, 0x80ef,
- 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321, 0x7b50,
- 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f, 0x76d4,
- 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080,
- /* 0x40 */
- 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0, 0x62ec,
- 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721, 0x814a,
- 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a, 0x680f,
- 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd, 0x89c8,
- 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc, 0x5eca,
- 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001, 0x4f6c,
- 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7, 0x956d,
- 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b, 0x7c7b,
- 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281, 0x9ece,
- 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc, 0x9ca4,
- 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389, 0x52b1,
- 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0,
- /* 0x41 */
- 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9,
- 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f,
- 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae,
- 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e,
- 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5,
- 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217,
- 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716,
- 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce,
- 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc,
- 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409,
- 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3,
- 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf,
- /* 0x42 */
- 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3,
- 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3,
- 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42,
- 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415,
- 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f,
- 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6,
- 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1,
- 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523,
- 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988,
- 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417,
- 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992,
- 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b,
- /* 0x43 */
- 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd, 0x732b,
- 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302, 0x5192,
- 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885, 0x9176,
- 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf, 0x7f8e,
- 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec, 0x840c,
- 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f, 0x772f,
- 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73, 0x79d8,
- 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720, 0x7ef5,
- 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7, 0x63cf,
- 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511, 0x706d,
- 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e, 0x879f,
- 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478,
- /* 0x44 */
- 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54, 0x62b9,
- 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde, 0x964c,
- 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6, 0x6bcd,
- 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee, 0x7766,
- 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3, 0x5a1c,
- 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537,
- 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6, 0x5462,
- 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a, 0x6ce5,
- 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba, 0x852b,
- 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18, 0x917f,
- 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a, 0x954d,
- 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81,
- /* 0x45 */
- 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53,
- 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650,
- 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25,
- 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c,
- 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43,
- 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224,
- 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486,
- 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9,
- 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6,
- 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c,
- 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812,
- 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7,
- /* 0x46 */
- 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41,
- 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2,
- 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058,
- 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4,
- 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb,
- 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9,
- 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd,
- 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4,
- 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566,
- 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77,
- 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14,
- 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390,
- /* 0x47 */
- 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343, 0x8fc1,
- 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3, 0x524d,
- 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20, 0x6b49,
- 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a, 0x62a2,
- 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54, 0x4fa8,
- 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d, 0x5207,
- 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2, 0x79e6,
- 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81, 0x9752,
- 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674, 0x6c30,
- 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb, 0x4e18,
- 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b, 0x533a,
- 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20,
- /* 0x48 */
- 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7, 0x6743,
- 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238, 0x529d,
- 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e, 0x96c0,
- 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4, 0x58e4,
- 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9, 0x70ed,
- 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4, 0x5203,
- 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338, 0x84c9,
- 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197, 0x63c9,
- 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982, 0x8fb1,
- 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a, 0x745e,
- 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12, 0x8428,
- 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1,
- /* 0x49 */
- 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b,
- 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802,
- 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b,
- 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b,
- 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247,
- 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a,
- 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6,
- 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c,
- 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe,
- 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5,
- 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17,
- 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3,
- /* 0x4a */
- 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee,
- 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe,
- 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2,
- 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16,
- 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc,
- 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02,
- 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88,
- 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2,
- 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f,
- 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72,
- 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f,
- 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31,
- /* 0x4b */
- 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05, 0x6813,
- 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761, 0x7a0e,
- 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714, 0x70c1,
- 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d, 0x6b7b,
- 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972, 0x5df3,
- 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc, 0x8bf5,
- 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7, 0x7d20,
- 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9, 0x8083,
- 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5, 0x9ad3,
- 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59, 0x635f,
- 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22, 0x9501,
- 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854,
- /* 0x4c */
- 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac, 0x53f0,
- 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a, 0x8d2a,
- 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d, 0x8c08,
- 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad, 0x6c64,
- 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6, 0x5018,
- 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4, 0x7ee6,
- 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957, 0x7279,
- 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22, 0x9511,
- 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f, 0x60d5,
- 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530, 0x751c,
- 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a, 0x8df3,
- 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3,
- /* 0x4d */
- 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a,
- 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876,
- 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f,
- 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60,
- 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f,
- 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258,
- 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3,
- 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c,
- 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38,
- 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b,
- 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51,
- 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01,
- /* 0x4e */
- 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f,
- 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f,
- 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3,
- 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b,
- 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33,
- 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1,
- 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c,
- 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7,
- 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e,
- 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff,
- 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852,
- 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a,
- /* 0x4f */
- 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc, 0x7184,
- 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d, 0x4e60,
- 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f, 0x7ec6,
- 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1, 0x4fa0,
- 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528, 0x5148,
- 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237, 0x95f2,
- 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e, 0x53bf,
- 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf, 0x76f8,
- 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61, 0x7fd4,
- 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7, 0x6a61,
- 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a, 0x54ee,
- 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653,
- /* 0x50 */
- 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548, 0x6954,
- 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a, 0x90aa,
- 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9, 0x61c8,
- 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x6b23,
- 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f, 0x8165,
- 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2, 0x884c,
- 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6, 0x80f8,
- 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e, 0x673d,
- 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c, 0x9700,
- 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157, 0x53d9,
- 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea, 0x7eed,
- 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384,
- /* 0x51 */
- 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74,
- 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb,
- 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5,
- 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259,
- 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6,
- 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814,
- 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf,
- 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5,
- 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a,
- 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f,
- 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b,
- 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476,
- /* 0x52 */
- 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200,
- 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce,
- 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b,
- 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d,
- 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0,
- 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a,
- 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091,
- 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6,
- 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3,
- 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335,
- 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6,
- 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690,
- /* 0x53 */
- 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28, 0x83b9,
- 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8, 0x5f71,
- 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3, 0x75c8,
- 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c, 0x6c38,
- 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7, 0x5c24,
- 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149, 0x6709,
- 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2,
- 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206, 0x4f59,
- 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685, 0x4e88,
- 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed, 0x7fbd,
- 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb, 0x5cea,
- 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89,
- /* 0x54 */
- 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33, 0x6e0a,
- 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95, 0x56ed,
- 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1, 0x613f,
- 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5, 0x5cb3,
- 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7, 0x5300,
- 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5, 0x5b55,
- 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0, 0x8f7d,
- 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43, 0x810f,
- 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9, 0x6fa1,
- 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5, 0x8d23,
- 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e, 0x66fe,
- 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67,
- /* 0x55 */
- 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8,
- 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb,
- 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d,
- 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd,
- 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756,
- 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db,
- 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087,
- 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517,
- 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827,
- 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707,
- 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0,
- 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f,
- /* 0x56 */
- 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431,
- 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c,
- 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307,
- 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7,
- 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9,
- 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d,
- 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd,
- 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5,
- 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4,
- 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010,
- 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457,
- 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51,
- /* 0x57 */
- 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd, 0x4e13,
- 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84, 0x88c5,
- 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd, 0x8d58,
- 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353, 0x684c,
- 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a, 0x5179,
- 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4,
- 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03, 0x68d5,
- 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70, 0x594f,
- 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5, 0x963b,
- 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a, 0x5c0a,
- 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c, 0x5750,
- 0x5ea7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x58 */
- 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15, 0x4e98,
- 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f, 0x5315,
- 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4, 0x9997,
- 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c, 0x4e69,
- 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d, 0x539d,
- 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5, 0x5326,
- 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208, 0x520e,
- 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261, 0x525c,
- 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7f54,
- 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb, 0x4ede,
- 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27, 0x4f09,
- 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d,
- /* 0x59 */
- 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89,
- 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94,
- 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1,
- 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e,
- 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043,
- 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9,
- 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107,
- 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46,
- 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9,
- 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156,
- 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34,
- 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc,
- /* 0x5a */
- 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa,
- 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce,
- 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf,
- 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6,
- 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c,
- 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b,
- 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a,
- 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369,
- 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c,
- 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674,
- 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099,
- 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba,
- /* 0x5b */
- 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4, 0x90c7,
- 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb, 0x90ef,
- 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f, 0x9139,
- 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad, 0x52be,
- 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd, 0x5ef4,
- 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def, 0x574c,
- 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729, 0x572c,
- 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b, 0x5742,
- 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768, 0x576d,
- 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf, 0x57a7,
- 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9, 0x57d2,
- 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd,
- /* 0x5c */
- 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819, 0x5844,
- 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880, 0x99a8,
- 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a, 0x82a8,
- 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8, 0x82be,
- 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae, 0x82cb,
- 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f, 0x82c4,
- 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f, 0x8307,
- 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3, 0x8311,
- 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c, 0x8351,
- 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331, 0x839b,
- 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340, 0x8317,
- 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365,
- /* 0x5d */
- 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0,
- 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385,
- 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e,
- 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807,
- 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411,
- 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea,
- 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a,
- 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c,
- 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1,
- 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba,
- 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c,
- 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a,
- /* 0x5e */
- 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564,
- 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8,
- 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7,
- 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629,
- 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955,
- 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c,
- 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322,
- 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a,
- 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc,
- 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452,
- 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c,
- 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496,
- /* 0x5f */
- 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0, 0x64d7,
- 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2, 0x7519,
- 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb, 0x5412,
- 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443,
- 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477,
- 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466, 0x549d,
- 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6, 0x54d3,
- 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc, 0x54d9,
- 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf, 0x54de,
- 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522, 0x5523,
- 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5, 0x5549,
- 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c,
- /* 0x60 */
- 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555c,
- 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581, 0x559f,
- 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be, 0x5594,
- 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb, 0x55ec,
- 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2, 0x55f3,
- 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e, 0x5608,
- 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627, 0x562d,
- 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659, 0x565c,
- 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b, 0x567c,
- 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1, 0x56f5,
- 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c, 0x5e0f,
- 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c,
- /* 0x61 */
- 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a,
- 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a,
- 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3,
- 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02,
- 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b,
- 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d,
- 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d,
- 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89,
- 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc,
- 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3,
- 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2,
- 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa,
- /* 0x62 */
- 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315,
- 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d,
- 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7,
- 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
- 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a,
- 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91,
- 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3,
- 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4,
- 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4,
- 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035,
- 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f,
- 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042,
- /* 0x63 */
- 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083, 0x6092,
- 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8, 0x60c6,
- 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4, 0x6100,
- 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7, 0x61b7,
- 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1, 0x95f3,
- 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606, 0x9608,
- 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615, 0x9616,
- 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35, 0x6c54,
- 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c, 0x6c68,
- 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad,
- 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa,
- 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe,
- /* 0x64 */
- 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04, 0x6d19,
- 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f, 0x6d52,
- 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e, 0x6d93,
- 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7, 0x6dc5,
- 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd, 0x6dd9,
- 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e, 0x6e6b,
- 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25, 0x6e44,
- 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5, 0x6ea7,
- 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f, 0x6ec2,
- 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9, 0x6f2f,
- 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89, 0x6f8d,
- 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1,
- /* 0x65 */
- 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde,
- 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f,
- 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f,
- 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07,
- 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6,
- 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d,
- 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051,
- 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074,
- 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56,
- 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66,
- 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e,
- 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3,
- /* 0x66 */
- 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af,
- 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8,
- 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13,
- 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec,
- 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2,
- 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8,
- 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15,
- 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75,
- 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85,
- 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b,
- 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7,
- 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9,
- /* 0x67 */
- 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb,
- 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8,
- 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa,
- 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08, 0x7f0b,
- 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c, 0x7f1b,
- 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
- 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31, 0x7f32,
- 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095, 0x738e,
- 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1, 0x73b7,
- 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c, 0x740a,
- 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a, 0x745b,
- 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c,
- /* 0x68 */
- 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459, 0x7477,
- 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487, 0x748b,
- 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba, 0x97ea,
- 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769, 0x67a5,
- 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8, 0x679e,
- 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8, 0x680a,
- 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3, 0x67dd,
- 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd, 0x6832,
- 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864, 0x6883,
- 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e, 0x684a,
- 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893, 0x686b,
- 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9,
- /* 0x69 */
- 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971,
- 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998,
- 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966,
- 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4,
- 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff,
- 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e,
- 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28,
- 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337,
- 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d,
- 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72,
- 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c,
- 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b,
- /* 0x6a */
- 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217,
- 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7,
- 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee,
- 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600,
- 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006,
- 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677,
- 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6,
- 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45,
- 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7,
- 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e,
- 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b,
- 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0,
- /* 0x6b */
- 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9,
- 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19, 0x6c1a,
- 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555, 0x656b,
- 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f, 0x809c,
- 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad, 0x80b4,
- 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2, 0x80c4,
- 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1, 0x80f4,
- 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112, 0x8c5a,
- 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c, 0x8153,
- 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c, 0x817d,
- 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191, 0x6ed5,
- 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb,
- /* 0x6c */
- 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46, 0x6b59,
- 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3, 0x5f40,
- 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6, 0x65c4,
- 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c, 0x7096,
- 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8, 0x70ca,
- 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c, 0x7168,
- 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3, 0x71b5,
- 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d, 0x7228,
- 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243, 0x6248,
- 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c, 0x7953,
- 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a, 0x7985,
- 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0,
- /* 0x6d */
- 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab,
- 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206,
- 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800,
- 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d,
- 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823,
- 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
- 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1,
- 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec,
- 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b,
- 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707,
- 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738,
- 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768,
- /* 0x6e */
- 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791,
- 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e,
- 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61,
- 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e,
- 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a,
- 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a,
- 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac,
- 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9,
- 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca,
- 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5,
- 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0,
- 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea,
- /* 0x6f */
- 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5, 0x94f7,
- 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506, 0x9507,
- 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513, 0x9514,
- 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f, 0x9522,
- 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534, 0x9536,
- 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535, 0x9544,
- 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552, 0x9553,
- 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e, 0x955f,
- 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568,
- 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572, 0x9573,
- 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3, 0x79eb,
- 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14,
- /* 0x70 */
- 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688, 0x768e,
- 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20, 0x9e22,
- 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31, 0x9e36,
- 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42, 0x9e44,
- 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e51,
- 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63, 0x9e66,
- 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71, 0x9e6d,
- 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac, 0x75a3,
- 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3, 0x75c2,
- 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb, 0x75e7,
- 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605, 0x760c,
- 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619,
- /* 0x71 */
- 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f,
- 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c,
- 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80,
- 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad,
- 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2,
- 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5,
- 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919,
- 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966,
- 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014,
- 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
- 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052,
- 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,
- /* 0x72 */
- 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e,
- 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c,
- 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b,
- 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6,
- 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9,
- 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0,
- 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707,
- 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e,
- 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729,
- 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760,
- 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764,
- 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2,
- /* 0x73 */
- 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab, 0x87e5,
- 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1, 0x87c0,
- 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813, 0x87fe,
- 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42, 0x7f44,
- 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04, 0x7b15,
- 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19, 0x7b2e,
- 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e, 0x7b58,
- 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b,
- 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac,
- 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4,
- 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6, 0x7bea,
- 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b,
- /* 0x74 */
- 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe, 0x8201,
- 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223, 0x822d,
- 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234, 0x823e,
- 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268, 0x887e,
- 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f, 0x7fa7,
- 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d, 0x7c9c,
- 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7, 0x7ccc,
- 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8, 0x7fbf,
- 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee, 0x7ff3,
- 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8, 0x9eb4,
- 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d, 0x8c47,
- 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164,
- /* 0x75 */
- 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172,
- 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2,
- 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba,
- 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5,
- 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde,
- 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3,
- 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f,
- 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35,
- 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a,
- 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94,
- 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98,
- 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc,
- /* 0x76 */
- 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3,
- 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d,
- 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88,
- 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc,
- 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8,
- 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82,
- 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90,
- 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f,
- 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8,
- 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3,
- 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd,
- 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb,
- /* 0x77 */
- 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5,
- 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2, 0x977c,
- 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3, 0x97b2,
- 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba, 0x9abc,
- 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1, 0x9b45,
- 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8, 0x990d,
- 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb,
- 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f, 0x9b23,
- 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b, 0x9e92,
- 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0, 0x9edf,
- 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22, 0x9f2c,
- 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44,
-};
-
-static int
-gb2312_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = (s[0] & 0x7F);
- if ((c1 >= 0x21 && c1 <= 0x29) || (c1 >= 0x30 && c1 <= 0x77)) {
- if (n >= 2) {
- unsigned char c2 = (s[1] & 0x7F);
- if (c2 >= 0x21 && c2 < 0x7f) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- unsigned short wc = 0xfffd;
- if (i < 1410) {
- if (i < 831)
- wc = gb2312_2uni_page21[i];
- } else {
- if (i < 8178)
- wc = gb2312_2uni_page30[i-1410];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short gb2312_2charset[7445] = {
- 0x2168, 0x216c, 0x2127, 0x2163, 0x2140, 0x2141, 0x2824, 0x2822,
- 0x2828, 0x2826, 0x283a, 0x282c, 0x282a, 0x2830, 0x282e, 0x2142,
- 0x2834, 0x2832, 0x2839, 0x2821, 0x2825, 0x2827, 0x2829, 0x282d,
- 0x2831, 0x2823, 0x282b, 0x282f, 0x2833, 0x2835, 0x2836, 0x2837,
- 0x2838, 0x2126, 0x2125, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625,
- 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d,
- 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635,
- 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645,
- 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d,
- 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655,
- 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723, 0x2724,
- 0x2725, 0x2726, 0x2728, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d,
- 0x272e, 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735,
- 0x2736, 0x2737, 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d,
- 0x273e, 0x273f, 0x2740, 0x2741, 0x2751, 0x2752, 0x2753, 0x2754,
- 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d,
- 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765,
- 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d,
- 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x212a, 0x212c, 0x212e,
- 0x212f, 0x2130, 0x2131, 0x212d, 0x216b, 0x2164, 0x2165, 0x2179,
- 0x2166, 0x216d, 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0x2276,
- 0x2277, 0x2278, 0x2279, 0x227a, 0x227b, 0x227c, 0x217b, 0x217c,
- 0x217a, 0x217d, 0x214a, 0x2147, 0x2146, 0x214c, 0x2158, 0x215e,
- 0x214f, 0x214e, 0x2144, 0x2145, 0x2149, 0x2148, 0x2152, 0x2153,
- 0x2160, 0x215f, 0x2143, 0x214b, 0x2157, 0x2156, 0x2155, 0x2159,
- 0x2154, 0x215c, 0x215d, 0x215a, 0x215b, 0x2151, 0x214d, 0x2150,
- 0x2259, 0x225a, 0x225b, 0x225c, 0x225d, 0x225e, 0x225f, 0x2260,
- 0x2261, 0x2262, 0x2245, 0x2246, 0x2247, 0x2248, 0x2249, 0x224a,
- 0x224b, 0x224c, 0x224d, 0x224e, 0x224f, 0x2250, 0x2251, 0x2252,
- 0x2253, 0x2254, 0x2255, 0x2256, 0x2257, 0x2258, 0x2231, 0x2232,
- 0x2233, 0x2234, 0x2235, 0x2236, 0x2237, 0x2238, 0x2239, 0x223a,
- 0x223b, 0x223c, 0x223d, 0x223e, 0x223f, 0x2240, 0x2241, 0x2242,
- 0x2243, 0x2244, 0x2924, 0x2925, 0x2926, 0x2927, 0x2928, 0x2929,
- 0x292a, 0x292b, 0x292c, 0x292d, 0x292e, 0x292f, 0x2930, 0x2931,
- 0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937, 0x2938, 0x2939,
- 0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f, 0x2940, 0x2941,
- 0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949,
- 0x294a, 0x294b, 0x294c, 0x294d, 0x294e, 0x294f, 0x2950, 0x2951,
- 0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957, 0x2958, 0x2959,
- 0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f, 0x2960, 0x2961,
- 0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x2967, 0x2968, 0x2969,
- 0x296a, 0x296b, 0x296c, 0x296d, 0x296e, 0x296f, 0x2176, 0x2175,
- 0x2178, 0x2177, 0x2174, 0x2173, 0x2170, 0x2172, 0x2171, 0x216f,
- 0x216e, 0x2162, 0x2161, 0x2121, 0x2122, 0x2123, 0x2128, 0x2129,
- 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b,
- 0x213e, 0x213f, 0x217e, 0x2132, 0x2133, 0x213c, 0x213d, 0x2421,
- 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429,
- 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431,
- 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439,
- 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441,
- 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449,
- 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451,
- 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
- 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461,
- 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
- 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471,
- 0x2472, 0x2473, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526,
- 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e,
- 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536,
- 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e,
- 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546,
- 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e,
- 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556,
- 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
- 0x255f, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566,
- 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e,
- 0x256f, 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576,
- 0x2124, 0x2845, 0x2846, 0x2847, 0x2848, 0x2849, 0x284a, 0x284b,
- 0x284c, 0x284d, 0x284e, 0x284f, 0x2850, 0x2851, 0x2852, 0x2853,
- 0x2854, 0x2855, 0x2856, 0x2857, 0x2858, 0x2859, 0x285a, 0x285b,
- 0x285c, 0x285d, 0x285e, 0x285f, 0x2860, 0x2861, 0x2862, 0x2863,
- 0x2864, 0x2865, 0x2866, 0x2867, 0x2868, 0x2869, 0x2265, 0x2266,
- 0x2267, 0x2268, 0x2269, 0x226a, 0x226b, 0x226c, 0x226d, 0x226e,
- 0x523b, 0x3621, 0x465f, 0x4d72, 0x5549, 0x487d, 0x494f, 0x4f42,
- 0x5822, 0x323b, 0x536b, 0x5824, 0x3373, 0x5728, 0x4752, 0x5827,
- 0x4a40, 0x4770, 0x317b, 0x5235, 0x3454, 0x362b, 0x4b3f, 0x5829,
- 0x362a, 0x413d, 0x514f, 0x4925, 0x582d, 0x3876, 0x513e, 0x635c,
- 0x5650, 0x3761, 0x342e, 0x4159, 0x583c, 0x4d68, 0x3524, 0x4e2a,
- 0x5677, 0x4076, 0x3e59, 0x582f, 0x444b, 0x3e43, 0x5831, 0x4334,
- 0x5265, 0x562e, 0x4e5a, 0x5527, 0x3a75, 0x3726, 0x4056, 0x4639,
- 0x4552, 0x4747, 0x3954, 0x334b, 0x5252, 0x583f, 0x3e45, 0x4672,
- 0x5232, 0x4f30, 0x4f67, 0x4a69, 0x5840, 0x4272, 0x4252, 0x4869,
- 0x472c, 0x414b, 0x5368, 0x5579, 0x4a42, 0x367e, 0x5821, 0x535a,
- 0x3f77, 0x5446, 0x3b25, 0x5841, 0x4e65, 0x3e2e, 0x5828, 0x5147,
- 0x5029, 0x583d, 0x596f, 0x4d76, 0x3f3a, 0x3d3b, 0x3a25, 0x5260,
- 0x327a, 0x3a60, 0x4436, 0x4f6d, 0x3e29, 0x4d24, 0x4141, 0x4757,
- 0x5971, 0x5974, 0x484b, 0x5869, 0x525a, 0x4a32, 0x484a, 0x586c,
- 0x586a, 0x5846, 0x3d76, 0x464d, 0x3370, 0x586b, 0x3d71, 0x3d69,
- 0x4854, 0x3453, 0x4258, 0x3256, 0x5750, 0x4a4b, 0x4b7b, 0x554c,
- 0x3836, 0x4f49, 0x595a, 0x5870, 0x472a, 0x586e, 0x347a, 0x416e,
- 0x5254, 0x586d, 0x5247, 0x586f, 0x4347, 0x5176, 0x5659, 0x5872,
- 0x5875, 0x3c7e, 0x3c5b, 0x484e, 0x375d, 0x3742, 0x4673, 0x5878,
- 0x5241, 0x4e69, 0x3c3f, 0x377c, 0x3725, 0x505d, 0x565a, 0x5345,
- 0x3b6f, 0x3b61, 0x5871, 0x4921, 0x4e30, 0x342b, 0x5873, 0x494b,
- 0x5876, 0x4257, 0x5877, 0x4e31, 0x5879, 0x322e, 0x3940, 0x5923,
- 0x3069, 0x4166, 0x496c, 0x4b45, 0x4b46, 0x5924, 0x3568, 0x352b,
- 0x4e3b, 0x354d, 0x5721, 0x5774, 0x5353, 0x4c65, 0x3a4e, 0x5922,
- 0x595c, 0x5360, 0x587d, 0x3770, 0x5777, 0x587e, 0x587a, 0x5921,
- 0x4463, 0x5336, 0x5874, 0x595d, 0x587b, 0x4565, 0x4050, 0x5170,
- 0x305b, 0x3c51, 0x5926, 0x5925, 0x592c, 0x592e, 0x592b, 0x4a39,
- 0x5929, 0x5636, 0x335e, 0x5928, 0x407d, 0x4a4c, 0x592a, 0x5927,
- 0x5930, 0x3631, 0x3929, 0x5240, 0x4f40, 0x4242, 0x3d44, 0x556c,
- 0x3260, 0x4748, 0x3f6b, 0x592d, 0x592f, 0x4e6a, 0x3a6e, 0x4756,
- 0x3163, 0x3459, 0x366d, 0x5934, 0x3f21, 0x595e, 0x474e, 0x407e,
- 0x5938, 0x4b57, 0x377d, 0x5935, 0x5937, 0x3123, 0x5361, 0x5939,
- 0x5045, 0x5936, 0x5931, 0x5932, 0x4129, 0x5933, 0x3c73, 0x505e,
- 0x3829, 0x3e63, 0x593d, 0x593a, 0x3033, 0x5942, 0x5944, 0x3136,
- 0x593f, 0x3539, 0x3e73, 0x4c48, 0x3a72, 0x5250, 0x5943, 0x3d68,
- 0x332b, 0x5945, 0x3e6b, 0x5946, 0x593b, 0x445f, 0x593e, 0x5941,
- 0x5940, 0x552e, 0x5635, 0x4763, 0x5948, 0x3c59, 0x594a, 0x593c,
- 0x594b, 0x462b, 0x5949, 0x5776, 0x4d23, 0x3d21, 0x594c, 0x453c,
- 0x4d35, 0x594d, 0x5947, 0x3325, 0x3f7e, 0x3835, 0x407c, 0x3078,
- 0x3476, 0x594e, 0x594f, 0x3422, 0x5950, 0x345f, 0x3041, 0x5951,
- 0x4935, 0x4f71, 0x5952, 0x4145, 0x5956, 0x492e, 0x5955, 0x5954,
- 0x5957, 0x4b5b, 0x3d29, 0x4627, 0x5953, 0x5958, 0x5959, 0x4865,
- 0x405c, 0x3679, 0x5823, 0x544a, 0x542a, 0x5056, 0x3364, 0x5557,
- 0x4f48, 0x3962, 0x3f4b, 0x4362, 0x3652, 0x4d43, 0x596e, 0x5970,
- 0x3533, 0x3635, 0x3e24, 0x486b, 0x482b, 0x304b, 0x392b, 0x4179,
- 0x5962, 0x403c, 0x3932, 0x3958, 0x504b, 0x3178, 0x4664, 0x3e5f,
- 0x3564, 0x5748, 0x5178, 0x3c66, 0x4a5e, 0x3c3d, 0x5966, 0x5867,
- 0x445a, 0x3854, 0x483d, 0x3261, 0x5459, 0x4330, 0x4361, 0x5a22,
- 0x485f, 0x5034, 0x3e7c, 0x4529, 0x395a, 0x5a23, 0x5429, 0x5a24,
- 0x597b, 0x362c, 0x376b, 0x3179, 0x597c, 0x3365, 0x3e76, 0x3f76,
- 0x5231, 0x4064, 0x3633, 0x597e, 0x597d, 0x3e3b, 0x4660, 0x573c,
- 0x5a21, 0x4139, 0x3572, 0x4168, 0x3c75, 0x3455, 0x415d, 0x447d,
- 0x3c38, 0x3732, 0x376f, 0x596c, 0x463e, 0x3f2d, 0x3b4b, 0x354a,
- 0x5b49, 0x5057, 0x4d39, 0x303c, 0x3376, 0x3b77, 0x5b4a, 0x3a2f,
- 0x5464, 0x3536, 0x3573, 0x5856, 0x4850, 0x3756, 0x4750, 0x5857,
- 0x3f2f, 0x5b3b, 0x5858, 0x504c, 0x3b2e, 0x6b3e, 0x4150, 0x4175,
- 0x5472, 0x3855, 0x3434, 0x3375, 0x493e, 0x4550, 0x4559, 0x407b,
- 0x3170, 0x5859, 0x394e, 0x353d, 0x585a, 0x5646, 0x4b22, 0x482f,
- 0x4932, 0x344c, 0x3f4c, 0x3974, 0x585b, 0x585c, 0x3667, 0x3c41,
- 0x4c6a, 0x4f77, 0x585d, 0x4730, 0x3950, 0x3d23, 0x4c5e, 0x464a,
- 0x5860, 0x585e, 0x585f, 0x307e, 0x3e67, 0x4a23, 0x3c74, 0x3831,
- 0x386e, 0x5862, 0x3d4b, 0x5864, 0x5863, 0x457c, 0x5865, 0x5866,
- 0x4126, 0x4830, 0x306c, 0x3926, 0x3c53, 0x4e71, 0x5b3d, 0x4153,
- 0x362f, 0x567a, 0x452c, 0x3d59, 0x5b3e, 0x5b3f, 0x4078, 0x3e22,
- 0x404d, 0x5b40, 0x4a46, 0x322a, 0x5342, 0x4363, 0x512b, 0x5b42,
- 0x4055, 0x5b43, 0x3f31, 0x443c, 0x475a, 0x5b44, 0x5968, 0x4957,
- 0x3934, 0x4e70, 0x5448, 0x307c, 0x3452, 0x5059, 0x5969, 0x5e4b,
- 0x596b, 0x5830, 0x3b2f, 0x3131, 0x3357, 0x584e, 0x5451, 0x3d33,
- 0x3f6f, 0x4f3b, 0x5850, 0x374b, 0x5851, 0x4625, 0x4778, 0x523d,
- 0x5852, 0x4464, 0x4a2e, 0x4727, 0x5826, 0x497d, 0x4e67, 0x3b5c,
- 0x306b, 0x3b2a, 0x502d, 0x3130, 0x5764, 0x573f, 0x3525, 0x4274,
- 0x444f, 0x3229, 0x3237, 0x3165, 0x5f32, 0x553c, 0x3f28, 0x422c,
- 0x5855, 0x4231, 0x5854, 0x4e54, 0x5a60, 0x4e40, 0x5834, 0x432e,
- 0x5321, 0x4e23, 0x3c34, 0x4834, 0x4251, 0x3e6d, 0x5036, 0x5a61,
- 0x4764, 0x3327, 0x3672, 0x4c7c, 0x407a, 0x4077, 0x5139, 0x5161,
- 0x5847, 0x325e, 0x4065, 0x3a71, 0x5848, 0x542d, 0x4f61, 0x5849,
- 0x584a, 0x4f43, 0x3378, 0x3e47, 0x584b, 0x5b4c, 0x4825, 0x4f58,
- 0x487e, 0x324e, 0x5356, 0x3266, 0x3c30, 0x5351, 0x4b2b, 0x3734,
- 0x3722, 0x4a65, 0x4821, 0x4a5c, 0x3164, 0x5070, 0x4551, 0x5b45,
- 0x357e, 0x3f5a, 0x3945, 0x3e64, 0x416d, 0x5f36, 0x5f35, 0x563b,
- 0x3d50, 0x5559, 0x3048, 0x3623, 0x3f49, 0x4c28, 0x5f33, 0x4a37,
- 0x5352, 0x584f, 0x5236, 0x3a45, 0x4b3e, 0x4c3e, 0x5f37, 0x3570,
- 0x5f34, 0x5375, 0x3354, 0x3877, 0x5f3a, 0x3a4f, 0x3c2a, 0x3575,
- 0x4d2c, 0x437b, 0x3a73, 0x4074, 0x4d42, 0x4f72, 0x5f38, 0x4f45,
- 0x4240, 0x5f39, 0x4270, 0x3e7d, 0x415f, 0x4d4c, 0x5277, 0x374d,
- 0x5f41, 0x5f44, 0x3771, 0x3049, 0x3656, 0x3754, 0x3a2c, 0x4c7d,
- 0x3f54, 0x4b31, 0x4674, 0x5628, 0x5f45, 0x4e62, 0x3333, 0x4e7c,
- 0x3435, 0x4e47, 0x3a70, 0x4e61, 0x513d, 0x5f40, 0x3474, 0x334a,
- 0x3866, 0x5f3b, 0x4445, 0x5f3c, 0x5f3d, 0x5f3e, 0x453b, 0x5f3f,
- 0x5f42, 0x5431, 0x5f43, 0x473a, 0x4e58, 0x4458, 0x5f4a, 0x5f4f,
- 0x565c, 0x5f49, 0x5f5a, 0x4e36, 0x3a47, 0x5f4e, 0x5f48, 0x455e,
- 0x496b, 0x3a74, 0x437c, 0x3e57, 0x5f46, 0x5f4d, 0x4558, 0x5526,
- 0x3a4d, 0x3e4c, 0x533d, 0x3840, 0x5664, 0x5f47, 0x393e, 0x3f27,
- 0x417c, 0x5f4b, 0x5f4c, 0x5f50, 0x5f5b, 0x5f65, 0x5f57, 0x5f56,
- 0x5749, 0x5f63, 0x5f64, 0x656b, 0x5227, 0x5f52, 0x3f29, 0x545b,
- 0x3f48, 0x5f54, 0x4f4c, 0x5f5d, 0x514a, 0x5f5e, 0x3027, 0x4637,
- 0x5f53, 0x3a65, 0x365f, 0x4d5b, 0x397e, 0x5455, 0x5f5f, 0x4f6c,
- 0x3025, 0x5f67, 0x5f51, 0x5146, 0x5f55, 0x5f58, 0x5f59, 0x5f5c,
- 0x3b29, 0x5f60, 0x5f61, 0x5f62, 0x5f66, 0x5f68, 0x5334, 0x3867,
- 0x4536, 0x5f6a, 0x495a, 0x4128, 0x4444, 0x3f5e, 0x4f78, 0x555c,
- 0x5f6e, 0x3238, 0x3a5f, 0x5f6c, 0x5b41, 0x5164, 0x4b74, 0x343d,
- 0x3026, 0x5f71, 0x4c46, 0x5f72, 0x5f6d, 0x5f69, 0x5f6b, 0x5f6f,
- 0x5f70, 0x3b3d, 0x5f73, 0x5f74, 0x3b23, 0x4a5b, 0x4e28, 0x6027,
- 0x332a, 0x6026, 0x6021, 0x5f7e, 0x4d59, 0x5f7c, 0x5f7a, 0x3f50,
- 0x5744, 0x494c, 0x5f78, 0x3021, 0x5f7d, 0x5f7b, 0x6022, 0x6028,
- 0x3748, 0x4621, 0x4936, 0x4032, 0x5f75, 0x453e, 0x5844, 0x5f79,
- 0x4476, 0x6023, 0x6024, 0x6025, 0x5025, 0x6034, 0x4c64, 0x6031,
- 0x3f26, 0x602f, 0x4e39, 0x602b, 0x4946, 0x402e, 0x602e, 0x3a6d,
- 0x3a30, 0x6029, 0x5f76, 0x6033, 0x6038, 0x342d, 0x6039, 0x4f32,
- 0x3a48, 0x6030, 0x507a, 0x602c, 0x547b, 0x5f77, 0x4567, 0x602d,
- 0x5377, 0x6036, 0x6037, 0x6044, 0x5061, 0x603c, 0x6049, 0x604a,
- 0x603e, 0x602a, 0x4924, 0x6041, 0x6032, 0x4a48, 0x6043, 0x6035,
- 0x4e4b, 0x4b43, 0x604d, 0x6046, 0x6042, 0x604b, 0x603a, 0x603f,
- 0x6040, 0x6045, 0x6047, 0x6048, 0x604c, 0x603b, 0x4b54, 0x6055,
- 0x6056, 0x6052, 0x6050, 0x3c4e, 0x6051, 0x3842, 0x5845, 0x506a,
- 0x426f, 0x604f, 0x603d, 0x6054, 0x6053, 0x6057, 0x605c, 0x6058,
- 0x5676, 0x3330, 0x576c, 0x4b3b, 0x605a, 0x4e7b, 0x3a59, 0x6061,
- 0x605d, 0x522d, 0x6062, 0x605b, 0x6059, 0x605f, 0x6060, 0x605e,
- 0x6064, 0x4677, 0x582c, 0x546b, 0x6066, 0x4a49, 0x6065, 0x3841,
- 0x6067, 0x6068, 0x6069, 0x6063, 0x3a3f, 0x4c67, 0x606a, 0x4f79,
- 0x606b, 0x4842, 0x3d40, 0x4452, 0x606c, 0x606d, 0x4774, 0x4b44,
- 0x606e, 0x3b58, 0x5836, 0x5272, 0x606f, 0x4d45, 0x365a, 0x6071,
- 0x5430, 0x4027, 0x3451, 0x4e27, 0x6070, 0x6072, 0x394c, 0x397a,
- 0x4d3c, 0x6073, 0x4654, 0x6074, 0x5432, 0x4826, 0x6076, 0x6075,
- 0x6077, 0x4d41, 0x4a25, 0x545a, 0x5b57, 0x5b59, 0x5b58, 0x3967,
- 0x5b5c, 0x5b5d, 0x3558, 0x5b5a, 0x5b5b, 0x3321, 0x5b5f, 0x3b78,
- 0x5637, 0x5b60, 0x3e79, 0x373b, 0x5b50, 0x4c2e, 0x3f32, 0x3b35,
- 0x5778, 0x3f53, 0x3f69, 0x3c61, 0x4c33, 0x5b5e, 0x3053, 0x4e6b,
- 0x3758, 0x5739, 0x4642, 0x4024, 0x4c39, 0x5b67, 0x5b61, 0x463a,
- 0x5b63, 0x5b68, 0x4577, 0x5b6a, 0x5b69, 0x3f40, 0x5b66, 0x5b65,
- 0x3439, 0x402c, 0x4222, 0x5b62, 0x5b64, 0x504d, 0x5b6d, 0x405d,
- 0x5b72, 0x3662, 0x5b73, 0x5b52, 0x3938, 0x542b, 0x5b6c, 0x3f51,
- 0x5b70, 0x5b51, 0x3566, 0x5b6b, 0x3f65, 0x5b6e, 0x5b71, 0x5b79,
- 0x3921, 0x3023, 0x4271, 0x3347, 0x5b6f, 0x5b78, 0x4652, 0x5b74,
- 0x5b75, 0x5b77, 0x5b76, 0x5b7e, 0x5372, 0x323a, 0x5b7d, 0x5c24,
- 0x5b7b, 0x5b7a, 0x5b7c, 0x4560, 0x3b79, 0x5c23, 0x5c25, 0x4c43,
- 0x3651, 0x5d40, 0x5c21, 0x5c22, 0x4735, 0x3669, 0x5c27, 0x5c26,
- 0x5c29, 0x3124, 0x354c, 0x3f30, 0x515f, 0x3642, 0x5c28, 0x4b7a,
- 0x6b73, 0x4b5c, 0x4b7e, 0x4c41, 0x487b, 0x5c2a, 0x4c6e, 0x5c2b,
- 0x5b53, 0x5c2f, 0x5c2c, 0x3e33, 0x4a7b, 0x5c2d, 0x494a, 0x4439,
- 0x473d, 0x5c2e, 0x5476, 0x5066, 0x442b, 0x3655, 0x5b54, 0x315a,
- 0x5b55, 0x5b56, 0x3a3e, 0x4840, 0x4a3f, 0x4849, 0x5733, 0x4979,
- 0x3f47, 0x3a78, 0x523c, 0x623a, 0x3426, 0x3138, 0x3834, 0x4f44,
- 0x5967, 0x4f26, 0x4d62, 0x596d, 0x3660, 0x5239, 0x393b, 0x6239,
- 0x6237, 0x3473, 0x4c6c, 0x4c2b, 0x3772, 0x5832, 0x516b, 0x3a3b,
- 0x4a27, 0x4d37, 0x5244, 0x3f64, 0x3c50, 0x3661, 0x5e45, 0x5e46,
- 0x5b3c, 0x5159, 0x4666, 0x444e, 0x376e, 0x375c, 0x3f7c, 0x5760,
- 0x4675, 0x313c, 0x5e48, 0x3d31, 0x4c57, 0x5e4a, 0x5e49, 0x356c,
- 0x495d, 0x3042, 0x452e, 0x452b, 0x444c, 0x3c69, 0x4b7d, 0x3a43,
- 0x6579, 0x4867, 0x657a, 0x4d7d, 0x5731, 0x383e, 0x4268, 0x4851,
- 0x657b, 0x364a, 0x3c4b, 0x517d, 0x6621, 0x436e, 0x6624, 0x657e,
- 0x6625, 0x4d57, 0x3741, 0x657c, 0x657d, 0x6623, 0x445d, 0x6628,
- 0x6627, 0x4343, 0x465e, 0x662a, 0x4437, 0x6622, 0x4a3c, 0x3d63,
- 0x3943, 0x6626, 0x5055, 0x4e2f, 0x6629, 0x6630, 0x5226, 0x3d2a,
- 0x662d, 0x662f, 0x4051, 0x524c, 0x3c27, 0x6631, 0x5276, 0x574b,
- 0x4d7e, 0x4d5e, 0x4226, 0x662b, 0x662c, 0x3d3f, 0x662e, 0x6633,
- 0x6632, 0x6636, 0x6638, 0x446f, 0x4448, 0x3e6a, 0x496f, 0x6637,
- 0x3670, 0x4364, 0x5369, 0x6634, 0x6635, 0x4822, 0x663d, 0x6639,
- 0x4645, 0x4d71, 0x663b, 0x663c, 0x3b69, 0x663e, 0x663a, 0x4037,
- 0x5324, 0x663f, 0x4974, 0x6643, 0x6644, 0x5076, 0x433d, 0x4344,
- 0x6642, 0x6641, 0x6647, 0x4f31, 0x6b74, 0x664a, 0x6645, 0x3c5e,
- 0x4929, 0x3c35, 0x4f53, 0x6648, 0x6649, 0x664e, 0x6650, 0x6651,
- 0x664b, 0x3555, 0x664c, 0x664f, 0x445b, 0x6646, 0x664d, 0x6652,
- 0x6654, 0x6653, 0x6655, 0x5978, 0x6656, 0x6657, 0x5753, 0x665d,
- 0x665e, 0x3f57, 0x5450, 0x5756, 0x3466, 0x4b6f, 0x665a, 0x5843,
- 0x574e, 0x5022, 0x434f, 0x665f, 0x3c3e, 0x3942, 0x665b, 0x5127,
- 0x3a22, 0x424f, 0x582b, 0x4a6b, 0x656e, 0x665c, 0x3775, 0x4866,
- 0x4475, 0x6532, 0x447e, 0x4b7c, 0x6533, 0x552c, 0x536e, 0x4a58,
- 0x3032, 0x4b4e, 0x4d6a, 0x3a6a, 0x6535, 0x6534, 0x575a, 0x3959,
- 0x5666, 0x3628, 0x4d70, 0x524b, 0x3126, 0x4a35, 0x3368, 0x4973,
- 0x3f4d, 0x507b, 0x4a52, 0x6536, 0x3b42, 0x4f5c, 0x392c, 0x5457,
- 0x3a26, 0x5167, 0x4f7c, 0x3c52, 0x6537, 0x485d, 0x3f6d, 0x3176,
- 0x4b5e, 0x3c45, 0x3c44, 0x527a, 0x435c, 0x3f5c, 0x383b, 0x4342,
- 0x3a2e, 0x5422, 0x475e, 0x442f, 0x326c, 0x3951, 0x653b, 0x4148,
- 0x552f, 0x653c, 0x653e, 0x3467, 0x3654, 0x4b42, 0x5130, 0x353c,
- 0x4a59, 0x3762, 0x4964, 0x3d2b, 0x4e3e, 0x5770, 0x5021, 0x4959,
- 0x367b, 0x6658, 0x3c62, 0x333e, 0x4950, 0x6659, 0x3322, 0x5e4c,
- 0x5348, 0x5e4d, 0x5222, 0x5e4e, 0x3e4d, 0x5e4f, 0x4a2c, 0x527c,
- 0x335f, 0x656a, 0x4461, 0x3e21, 0x4e32, 0x4472, 0x3e56, 0x4628,
- 0x3263, 0x3e53, 0x477c, 0x4c6b, 0x3d6c, 0x4e5d, 0x4a3a, 0x4641,
- 0x656c, 0x503c, 0x5539, 0x656d, 0x4a74, 0x4d40, 0x4245, 0x656f,
- 0x4244, 0x6570, 0x6578, 0x4d4d, 0x493d, 0x5259, 0x6128, 0x536c,
- 0x4b6a, 0x4671, 0x612c, 0x6127, 0x6129, 0x612a, 0x612f, 0x326d,
- 0x612b, 0x385a, 0x612d, 0x612e, 0x6130, 0x353a, 0x6131, 0x6133,
- 0x6138, 0x5152, 0x6136, 0x6135, 0x416b, 0x6137, 0x5440, 0x6132,
- 0x613a, 0x3036, 0x6134, 0x3f79, 0x6139, 0x613b, 0x613e, 0x613c,
- 0x5645, 0x4f3f, 0x613d, 0x613f, 0x424d, 0x366b, 0x5378, 0x474d,
- 0x3765, 0x3e7e, 0x6140, 0x6141, 0x6147, 0x3367, 0x4669, 0x345e,
- 0x5142, 0x6148, 0x6146, 0x6145, 0x6143, 0x6142, 0x3140, 0x5538,
- 0x6144, 0x614b, 0x614c, 0x614a, 0x6f7a, 0x6153, 0x6152, 0x4736,
- 0x6149, 0x614e, 0x6150, 0x6154, 0x6151, 0x614d, 0x614f, 0x6155,
- 0x6156, 0x6157, 0x6158, 0x615a, 0x615b, 0x4e21, 0x675d, 0x3428,
- 0x565d, 0x5132, 0x3332, 0x3924, 0x5773, 0x4749, 0x3e5e, 0x392e,
- 0x4e57, 0x326e, 0x5b4f, 0x3c3a, 0x5251, 0x4b48, 0x304d, 0x4f6f,
- 0x5963, 0x3d6d, 0x3152, 0x4a50, 0x323c, 0x4b27, 0x372b, 0x4a26,
- 0x4f23, 0x6078, 0x554a, 0x607b, 0x607a, 0x4541, 0x4c7b, 0x4131,
- 0x6079, 0x5663, 0x322f, 0x5644, 0x355b, 0x3478, 0x5621, 0x4f2f,
- 0x306f, 0x607c, 0x6121, 0x3323, 0x607d, 0x607e, 0x4331, 0x435d,
- 0x6122, 0x3779, 0x3b4f, 0x6123, 0x443b, 0x6124, 0x6125, 0x6126,
- 0x3431, 0x3849, 0x463d, 0x446a, 0x3222, 0x5052, 0x675b, 0x3b43,
- 0x5357, 0x5344, 0x3963, 0x624f, 0x572f, 0x476c, 0x3153, 0x3432,
- 0x6251, 0x5072, 0x422e, 0x6250, 0x3f62, 0x5326, 0x3557, 0x6252,
- 0x356a, 0x436d, 0x387d, 0x382e, 0x4553, 0x374f, 0x6254, 0x6253,
- 0x3648, 0x5779, 0x4d25, 0x6258, 0x6256, 0x4a7c, 0x3f35, 0x5339,
- 0x6255, 0x6257, 0x412e, 0x4048, 0x625b, 0x625a, 0x402a, 0x414e,
- 0x625c, 0x625d, 0x625e, 0x5b48, 0x5153, 0x4d22, 0x3d28, 0x5e43,
- 0x5825, 0x3f2a, 0x5b4d, 0x526c, 0x467a, 0x452a, 0x5e44, 0x3157,
- 0x5f2e, 0x4a3d, 0x5f31, 0x392d, 0x527d, 0x3825, 0x3a6b, 0x335a,
- 0x355c, 0x5545, 0x4356, 0x4f52, 0x3b21, 0x6573, 0x6572, 0x6574,
- 0x4d64, 0x4875, 0x352f, 0x473f, 0x6576, 0x6c30, 0x6566, 0x3969,
- 0x3531, 0x423c, 0x6568, 0x6567, 0x6569, 0x524d, 0x616a, 0x504e,
- 0x4d2e, 0x5165, 0x324a, 0x316b, 0x3172, 0x456d, 0x5543, 0x5330,
- 0x615c, 0x615d, 0x525b, 0x3339, 0x314b, 0x4d79, 0x5577, 0x615e,
- 0x3e36, 0x347d, 0x615f, 0x3a5c, 0x6160, 0x3b32, 0x4249, 0x6161,
- 0x506c, 0x4d3d, 0x6162, 0x3543, 0x4547, 0x6163, 0x6164, 0x5379,
- 0x6165, 0x512d, 0x6166, 0x4e22, 0x6167, 0x3542, 0x6168, 0x3b55,
- 0x5044, 0x6260, 0x3158, 0x5264, 0x6261, 0x3c49, 0x484c, 0x6263,
- 0x6c7e, 0x6c7d, 0x5f2f, 0x6262, 0x563e, 0x4d7c, 0x4326, 0x6343,
- 0x5652, 0x6267, 0x6268, 0x5347, 0x626c, 0x3f6c, 0x626d, 0x6265,
- 0x3340, 0x446e, 0x626e, 0x5043, 0x3a76, 0x6269, 0x375e, 0x3b33,
- 0x4c2c, 0x4b4b, 0x6264, 0x6266, 0x626a, 0x626b, 0x6277, 0x6274,
- 0x5475, 0x6273, 0x452d, 0x557a, 0x4542, 0x3240, 0x626f, 0x6272,
- 0x412f, 0x4b3c, 0x3521, 0x6279, 0x3c31, 0x6271, 0x5054, 0x5439,
- 0x6275, 0x3956, 0x6276, 0x4753, 0x6270, 0x575c, 0x6d21, 0x6278,
- 0x6d25, 0x627e, 0x4a51, 0x4135, 0x3b50, 0x3f56, 0x3a63, 0x4b21,
- 0x6d26, 0x6d23, 0x6d22, 0x3b56, 0x6d27, 0x5074, 0x6d24, 0x3a5e,
- 0x3677, 0x6321, 0x3632, 0x4c71, 0x3927, 0x4f22, 0x4721, 0x3f52,
- 0x3671, 0x627a, 0x627b, 0x627d, 0x627c, 0x4455, 0x6322, 0x5341,
- 0x6327, 0x4744, 0x4f24, 0x6329, 0x3a37, 0x6328, 0x3b5a, 0x6323,
- 0x6324, 0x632a, 0x6326, 0x4e72, 0x5346, 0x3b3c, 0x5443, 0x447a,
- 0x6d28, 0x507c, 0x6325, 0x4375, 0x632d, 0x312f, 0x6332, 0x3c42,
- 0x632c, 0x353f, 0x4769, 0x6330, 0x3e2a, 0x4d6f, 0x3b73, 0x4c68,
- 0x632f, 0x6331, 0x4f27, 0x632e, 0x4e29, 0x3b5d, 0x356b, 0x3e65,
- 0x3252, 0x334d, 0x3139, 0x632b, 0x3251, 0x352c, 0x395f, 0x3668,
- 0x4f6b, 0x6337, 0x3b4c, 0x4847, 0x504a, 0x6338, 0x336e, 0x6d29,
- 0x537a, 0x5364, 0x6d2a, 0x6339, 0x5262, 0x6335, 0x535e, 0x3850,
- 0x6333, 0x6336, 0x375f, 0x6334, 0x4022, 0x633a, 0x5438, 0x3448,
- 0x633b, 0x3b45, 0x4977, 0x4965, 0x443d, 0x6d2b, 0x427d, 0x3b5b,
- 0x3f2e, 0x4e3f, 0x633c, 0x3f36, 0x316f, 0x5477, 0x633e, 0x6d2d,
- 0x633f, 0x3a29, 0x6d2c, 0x633d, 0x6340, 0x3a36, 0x362e, 0x5038,
- 0x3043, 0x6d2e, 0x6d2f, 0x4041, 0x6341, 0x4533, 0x6342, 0x5c32,
- 0x6d30, 0x386a, 0x4e6c, 0x6a27, 0x5067, 0x4a79, 0x4856, 0x4f37,
- 0x3349, 0x4e52, 0x3d64, 0x635e, 0x3b72, 0x6a28, 0x553d, 0x465d,
- 0x6a29, 0x6a2a, 0x6a2c, 0x6a2b, 0x6a2e, 0x6a2d, 0x3d58, 0x6a2f,
- 0x423e, 0x3441, 0x3477, 0x3b27, 0x6c66, 0x6c65, 0x373f, 0x4b79,
- 0x3162, 0x6c67, 0x4948, 0x6c68, 0x6c69, 0x4a56, 0x5e50, 0x3245,
- 0x547a, 0x464b, 0x3047, 0x3472, 0x4853, 0x4d50, 0x3f38, 0x3f5b,
- 0x4724, 0x5634, 0x4029, 0x5e51, 0x4928, 0x516f, 0x4524, 0x3067,
- 0x3336, 0x4845, 0x3062, 0x3776, 0x457a, 0x3673, 0x5552, 0x3350,
- 0x3c3c, 0x332d, 0x3e71, 0x3051, 0x5256, 0x4a63, 0x5725, 0x4d36,
- 0x3636, 0x3f39, 0x555b, 0x3827, 0x4557, 0x5e52, 0x3f59, 0x4255,
- 0x4740, 0x3b24, 0x3128, 0x456a, 0x457b, 0x4c27, 0x3127, 0x3556,
- 0x4428, 0x5e53, 0x513a, 0x3369, 0x4372, 0x3777, 0x5674, 0x3523,
- 0x3270, 0x4434, 0x4469, 0x402d, 0x5e54, 0x3068, 0x4544, 0x4160,
- 0x3955, 0x3e5c, 0x4d58, 0x304e, 0x4d4f, 0x5e56, 0x3e50, 0x573e,
- 0x5e55, 0x5550, 0x305d, 0x4462, 0x4223, 0x3c70, 0x5335, 0x4039,
- 0x4521, 0x3226, 0x5471, 0x4028, 0x4a43, 0x5e57, 0x557c, 0x3930,
- 0x482d, 0x4b29, 0x5e59, 0x3f3d, 0x4634, 0x5727, 0x4a30, 0x4443,
- 0x3356, 0x3952, 0x5638, 0x6a7c, 0x3034, 0x3f66, 0x4c74, 0x4d5a,
- 0x563f, 0x424e, 0x4e4e, 0x4c22, 0x502e, 0x4453, 0x3532, 0x5e58,
- 0x5575, 0x3c37, 0x3b53, 0x3024, 0x4532, 0x346c, 0x5571, 0x6a7d,
- 0x5e5a, 0x4d26, 0x4d6c, 0x4e66, 0x5e5c, 0x4d31, 0x4026, 0x573d,
- 0x5e5b, 0x3046, 0x3a34, 0x4953, 0x4473, 0x3e68, 0x3236, 0x404c,
- 0x4b70, 0x3c71, 0x3b3b, 0x3537, 0x4575, 0x5e66, 0x5e63, 0x3e5d,
- 0x5e5f, 0x3437, 0x3d5d, 0x5e60, 0x446d, 0x4f46, 0x3560, 0x365e,
- 0x4a5a, 0x3574, 0x5e65, 0x5546, 0x5e61, 0x4c4d, 0x467e, 0x4545,
- 0x5234, 0x3e72, 0x4253, 0x4c3d, 0x3338, 0x3d53, 0x3f58, 0x4d46,
- 0x515a, 0x346b, 0x5e64, 0x5e5d, 0x5e67, 0x6a7e, 0x4230, 0x5e62,
- 0x5640, 0x3527, 0x3274, 0x5e68, 0x5e72, 0x5e6d, 0x5e71, 0x4860,
- 0x5761, 0x5e6f, 0x4368, 0x4c61, 0x3265, 0x523e, 0x5e6e, 0x5e6b,
- 0x4e55, 0x3427, 0x3f2b, 0x3e3e, 0x3d52, 0x5e69, 0x542e, 0x5e5e,
- 0x5e6a, 0x403f, 0x5e6c, 0x3273, 0x3869, 0x4227, 0x3d41, 0x5e75,
- 0x5e78, 0x322b, 0x3424, 0x346a, 0x4926, 0x5e76, 0x4b51, 0x3863,
- 0x5e77, 0x5e7a, 0x5e79, 0x4c42, 0x3061, 0x346e, 0x653a, 0x502f,
- 0x326b, 0x6b21, 0x5e74, 0x4963, 0x5e73, 0x305a, 0x5221, 0x3177,
- 0x4c2f, 0x5e70, 0x4b24, 0x552a, 0x5e7b, 0x345d, 0x4426, 0x5e7d,
- 0x437e, 0x4421, 0x5f21, 0x414c, 0x5e7c, 0x3e6f, 0x4632, 0x3345,
- 0x4876, 0x4b3a, 0x5e7e, 0x5f24, 0x5732, 0x3337, 0x4143, 0x474b,
- 0x3225, 0x3469, 0x572b, 0x446c, 0x5f22, 0x5f23, 0x5f25, 0x3a33,
- 0x5f26, 0x405e, 0x4943, 0x3259, 0x4766, 0x5f27, 0x475c, 0x5f28,
- 0x6b22, 0x4b53, 0x5f2a, 0x5f29, 0x3241, 0x454a, 0x5f2b, 0x545c,
- 0x4841, 0x5f2c, 0x3e70, 0x5f2d, 0x5627, 0x6a37, 0x6b36, 0x4a55,
- 0x587c, 0x3844, 0x3925, 0x3745, 0x557e, 0x394a, 0x5027, 0x744d,
- 0x3550, 0x4374, 0x3e48, 0x6b37, 0x303d, 0x3d4c, 0x4132, 0x3156,
- 0x3328, 0x3852, 0x4922, 0x3658, 0x6b38, 0x3e34, 0x4a7d, 0x4743,
- 0x557b, 0x3773, 0x4e44, 0x552b, 0x3173, 0x6c33, 0x305f, 0x6c35,
- 0x3637, 0x414f, 0x757a, 0x5031, 0x5565, 0x4e53, 0x3d6f, 0x3362,
- 0x382b, 0x5536, 0x6d3d, 0x364f, 0x4b39, 0x5042, 0x373d, 0x6c36,
- 0x4a29, 0x4554, 0x6c39, 0x6c38, 0x4243, 0x6c37, 0x507d, 0x6c3a,
- 0x6c3b, 0x5765, 0x6c3c, 0x6c3d, 0x466c, 0x4e5e, 0x3c48, 0x4855,
- 0x3529, 0x3e49, 0x563c, 0x5467, 0x512e, 0x5071, 0x6a38, 0x6a39,
- 0x6a3a, 0x3a35, 0x4a31, 0x3f75, 0x4d7a, 0x6a40, 0x303a, 0x6a3e,
- 0x4025, 0x6a3b, 0x327d, 0x4377, 0x3b68, 0x5257, 0x4e74, 0x6a3f,
- 0x6a3c, 0x6a43, 0x5047, 0x5333, 0x343a, 0x4341, 0x5772, 0x5551,
- 0x4a47, 0x6a45, 0x6a44, 0x6a47, 0x6a46, 0x5667, 0x4f54, 0x6a4b,
- 0x3b4e, 0x3d7a, 0x494e, 0x6a4c, 0x4939, 0x4f7e, 0x6a4a, 0x544e,
- 0x6a4d, 0x6a4f, 0x4d6d, 0x6a49, 0x6a4e, 0x4e6e, 0x3b5e, 0x333f,
- 0x4655, 0x3e30, 0x4e7a, 0x4767, 0x3e27, 0x6a50, 0x5647, 0x4140,
- 0x545d, 0x6a51, 0x4f3e, 0x6a52, 0x4a6e, 0x452f, 0x3035, 0x6a54,
- 0x6a53, 0x745f, 0x443a, 0x3129, 0x655f, 0x6a55, 0x4a6f, 0x6a56,
- 0x6a57, 0x4658, 0x6a58, 0x6a59, 0x543b, 0x477a, 0x5237, 0x387c,
- 0x6a42, 0x325c, 0x427c, 0x5478, 0x4c66, 0x576e, 0x5442, 0x5350,
- 0x6b43, 0x4573, 0x377e, 0x6b54, 0x4b37, 0x6b5e, 0x404a, 0x4d7b,
- 0x332f, 0x465a, 0x6b7c, 0x443e, 0x4e34, 0x4429, 0x313e, 0x547d,
- 0x4a75, 0x566c, 0x4653, 0x3664, 0x3b7a, 0x5060, 0x4931, 0x5453,
- 0x4828, 0x384b, 0x683e, 0x493c, 0x683b, 0x406e, 0x5053, 0x3244,
- 0x3465, 0x683c, 0x5548, 0x3645, 0x683d, 0x4a78, 0x385c, 0x4c75,
- 0x4034, 0x516e, 0x683f, 0x6842, 0x3a3c, 0x312d, 0x3d5c, 0x6a3d,
- 0x6843, 0x6846, 0x684b, 0x684c, 0x4b49, 0x3065, 0x3c2b, 0x3939,
- 0x6841, 0x4d77, 0x684a, 0x4e76, 0x556d, 0x4156, 0x6844, 0x4336,
- 0x397b, 0x5626, 0x6848, 0x4a60, 0x5466, 0x6840, 0x6845, 0x6847,
- 0x4739, 0x3763, 0x6849, 0x3f5d, 0x6852, 0x6857, 0x6855, 0x3c5c,
- 0x3c4f, 0x685b, 0x685e, 0x685a, 0x317a, 0x3058, 0x4433, 0x384c,
- 0x4662, 0x483e, 0x4861, 0x684f, 0x6854, 0x6856, 0x3971, 0x6858,
- 0x5775, 0x447b, 0x685c, 0x3269, 0x6851, 0x3c6d, 0x3f42, 0x684d,
- 0x5679, 0x4178, 0x3271, 0x685f, 0x4a41, 0x6859, 0x5524, 0x316a,
- 0x553b, 0x684e, 0x6850, 0x3630, 0x6853, 0x685d, 0x4038, 0x4a77,
- 0x4b28, 0x465c, 0x4075, 0x6869, 0x5023, 0x6872, 0x566a, 0x6860,
- 0x6861, 0x5179, 0x3a4b, 0x3879, 0x3871, 0x5454, 0x686f, 0x686e,
- 0x686c, 0x3970, 0x4c52, 0x6866, 0x4e26, 0x3f72, 0x3038, 0x6871,
- 0x6870, 0x5740, 0x6864, 0x4d29, 0x4923, 0x3b38, 0x3d5b, 0x686a,
- 0x6862, 0x6863, 0x6865, 0x3535, 0x6867, 0x4745, 0x686b, 0x686d,
- 0x3d30, 0x572e, 0x6878, 0x6875, 0x4d30, 0x6876, 0x413a, 0x6868,
- 0x4337, 0x3070, 0x6874, 0x6877, 0x3923, 0x4952, 0x434e, 0x4e60,
- 0x4066, 0x4b73, 0x4c5d, 0x5035, 0x4a61, 0x6873, 0x3c6c, 0x6879,
- 0x435e, 0x4665, 0x3977, 0x3074, 0x5758, 0x3c2c, 0x456f, 0x4c44,
- 0x6926, 0x492d, 0x6922, 0x4062, 0x3f43, 0x687e, 0x3957, 0x687b,
- 0x6924, 0x524e, 0x6923, 0x5632, 0x5735, 0x6927, 0x3d37, 0x687c,
- 0x687d, 0x6921, 0x4d56, 0x522c, 0x6932, 0x6929, 0x342a, 0x343b,
- 0x692b, 0x5028, 0x6925, 0x337e, 0x692c, 0x4063, 0x692a, 0x6939,
- 0x6938, 0x692e, 0x687a, 0x6928, 0x3f2c, 0x6931, 0x693a, 0x4225,
- 0x692f, 0x3845, 0x692d, 0x535c, 0x6934, 0x6935, 0x6937, 0x6947,
- 0x4046, 0x6945, 0x6930, 0x693b, 0x3071, 0x693c, 0x5525, 0x693e,
- 0x693f, 0x6941, 0x4171, 0x4836, 0x693d, 0x6942, 0x6943, 0x6933,
- 0x6936, 0x3b31, 0x6940, 0x3c77, 0x6944, 0x6946, 0x694a, 0x694e,
- 0x325b, 0x6948, 0x372e, 0x694b, 0x694c, 0x5541, 0x4423, 0x6958,
- 0x3a61, 0x6949, 0x5323, 0x6954, 0x6957, 0x6950, 0x694f, 0x4741,
- 0x6952, 0x6959, 0x3348, 0x6953, 0x4f70, 0x694d, 0x3377, 0x6956,
- 0x695a, 0x4c34, 0x4f2d, 0x6955, 0x695c, 0x695b, 0x695e, 0x6951,
- 0x695d, 0x695f, 0x434a, 0x4737, 0x344e, 0x3b36, 0x5040, 0x6c23,
- 0x4537, 0x537b, 0x6c24, 0x6c25, 0x465b, 0x3f6e, 0x6c26, 0x6c27,
- 0x502a, 0x4738, 0x3868, 0x6c28, 0x5639, 0x557d, 0x344b, 0x323d,
- 0x4e64, 0x4667, 0x4d61, 0x3475, 0x4b40, 0x3c5f, 0x6962, 0x6963,
- 0x516a, 0x6965, 0x3479, 0x6964, 0x5133, 0x4a62, 0x3250, 0x6968,
- 0x6966, 0x6967, 0x5633, 0x6969, 0x696a, 0x696b, 0x696c, 0x6c2f,
- 0x4539, 0x364e, 0x5273, 0x356e, 0x3b59, 0x6c31, 0x5263, 0x4e63,
- 0x4438, 0x433f, 0x363e, 0x5839, 0x3148, 0x314f, 0x3151, 0x457e,
- 0x3150, 0x432b, 0x5531, 0x6b24, 0x3a41, 0x4c3a, 0x6b25, 0x6b27,
- 0x6b28, 0x6b26, 0x6b29, 0x6b2b, 0x6b2a, 0x6b2c, 0x4a4f, 0x5835,
- 0x4371, 0x4325, 0x4678, 0x6b2d, 0x444a, 0x6b2e, 0x6b2f, 0x6b30,
- 0x3755, 0x377a, 0x6b31, 0x4762, 0x6b33, 0x3a24, 0x5175, 0x3031,
- 0x6b32, 0x6b34, 0x352a, 0x4248, 0x4768, 0x6b35, 0x4b2e, 0x635f,
- 0x5340, 0x595b, 0x4d21, 0x562d, 0x4773, 0x5960, 0x3b63, 0x3a3a,
- 0x6362, 0x4f2b, 0x6360, 0x4947, 0x3a39, 0x5134, 0x6361, 0x486a,
- 0x392f, 0x3d2d, 0x3358, 0x4e5b, 0x4c40, 0x6368, 0x6369, 0x4d74,
- 0x4c2d, 0x3c33, 0x636a, 0x636b, 0x505a, 0x467b, 0x375a, 0x475f,
- 0x524a, 0x4e56, 0x6364, 0x636c, 0x4972, 0x3341, 0x6367, 0x4663,
- 0x6365, 0x6d33, 0x6366, 0x4933, 0x4566, 0x3935, 0x433b, 0x6363,
- 0x453d, 0x4124, 0x4259, 0x3257, 0x636d, 0x3b26, 0x442d, 0x6370,
- 0x3e5a, 0x637b, 0x6375, 0x3a53, 0x3750, 0x534d, 0x564e, 0x5553,
- 0x3941, 0x5534, 0x5158, 0x5039, 0x4776, 0x482a, 0x3234, 0x435a,
- 0x636e, 0x637c, 0x636f, 0x3728, 0x6377, 0x6374, 0x373a, 0x4522,
- 0x6376, 0x455d, 0x3228, 0x467c, 0x4460, 0x5722, 0x4061, 0x6379,
- 0x637a, 0x637d, 0x4c29, 0x6373, 0x533e, 0x3143, 0x6d34, 0x6371,
- 0x6372, 0x6378, 0x503a, 0x4643, 0x5473, 0x637e, 0x3d60, 0x6427,
- 0x6426, 0x5173, 0x6423, 0x6429, 0x4877, 0x4f34, 0x6428, 0x642e,
- 0x4265, 0x3634, 0x3d72, 0x6422, 0x3a69, 0x642a, 0x642c, 0x367d,
- 0x565e, 0x6432, 0x642d, 0x6421, 0x3b6e, 0x4d5d, 0x4722, 0x4549,
- 0x4177, 0x6424, 0x4733, 0x3d2c, 0x3d3d, 0x6425, 0x5747, 0x3262,
- 0x642b, 0x3c43, 0x642f, 0x3b6b, 0x6430, 0x4528, 0x6431, 0x5563,
- 0x3f23, 0x643a, 0x6437, 0x643b, 0x643d, 0x4656, 0x3a46, 0x404b,
- 0x3821, 0x6434, 0x5421, 0x3a23, 0x3d7e, 0x643c, 0x4d3f, 0x4479,
- 0x4f7b, 0x4966, 0x533f, 0x4f51, 0x6433, 0x6438, 0x6439, 0x4c69,
- 0x4c4e, 0x4054, 0x6435, 0x4130, 0x6436, 0x4e50, 0x3b41, 0x3553,
- 0x4873, 0x3d27, 0x5547, 0x492c, 0x3822, 0x644a, 0x644c, 0x5144,
- 0x523a, 0x3a2d, 0x3a54, 0x6443, 0x356d, 0x574d, 0x6440, 0x4f7d,
- 0x643f, 0x415c, 0x4c4a, 0x4a67, 0x4457, 0x4c54, 0x6448, 0x6447,
- 0x6441, 0x6444, 0x352d, 0x5359, 0x6446, 0x5279, 0x3463, 0x3b34,
- 0x496e, 0x343e, 0x3b6c, 0x514d, 0x4c6d, 0x6d35, 0x4765, 0x5428,
- 0x644b, 0x5755, 0x6442, 0x3d25, 0x6445, 0x5366, 0x6449, 0x4978,
- 0x643e, 0x5365, 0x477e, 0x3649, 0x547c, 0x3233, 0x6457, 0x4e42,
- 0x644d, 0x4e3c, 0x385b, 0x6456, 0x3f4a, 0x534e, 0x436c, 0x4548,
- 0x6458, 0x4d44, 0x644f, 0x6454, 0x6455, 0x3a7e, 0x4f66, 0x553f,
- 0x6452, 0x6450, 0x644e, 0x4d65, 0x4a2a, 0x4023, 0x3d26, 0x6453,
- 0x3848, 0x6467, 0x5434, 0x645b, 0x416f, 0x6469, 0x5267, 0x645f,
- 0x6460, 0x4f2a, 0x4b5d, 0x645a, 0x6451, 0x6465, 0x485c, 0x6463,
- 0x4467, 0x6462, 0x6461, 0x337c, 0x6468, 0x3561, 0x574c, 0x6466,
- 0x3b2c, 0x5752, 0x4c4f, 0x6b78, 0x6464, 0x3976, 0x564d, 0x6459,
- 0x645c, 0x427a, 0x645e, 0x424b, 0x4044, 0x4250, 0x3175, 0x4c32,
- 0x354e, 0x646f, 0x462f, 0x4661, 0x6475, 0x4229, 0x406c, 0x515d,
- 0x646e, 0x442e, 0x646d, 0x6476, 0x6474, 0x427e, 0x645d, 0x6470,
- 0x4a7e, 0x5544, 0x6471, 0x517a, 0x646b, 0x646c, 0x6472, 0x4e2b,
- 0x454b, 0x4731, 0x423a, 0x646a, 0x414a, 0x4c36, 0x3331, 0x647b,
- 0x6473, 0x647a, 0x647d, 0x647c, 0x334e, 0x333a, 0x6477, 0x6479,
- 0x6478, 0x456c, 0x403d, 0x5468, 0x6522, 0x3044, 0x6524, 0x6523,
- 0x3c24, 0x6525, 0x6521, 0x647e, 0x3174, 0x6528, 0x6529, 0x6526,
- 0x6527, 0x652a, 0x4659, 0x652b, 0x652d, 0x652c, 0x652f, 0x652e,
- 0x3960, 0x6530, 0x6531, 0x3b70, 0x6c61, 0x4370, 0x3546, 0x3b52,
- 0x4169, 0x546e, 0x3e44, 0x5746, 0x5456, 0x3253, 0x6c3e, 0x6a41,
- 0x422f, 0x3436, 0x5157, 0x3334, 0x4832, 0x3f3b, 0x6c40, 0x564b,
- 0x6c3f, 0x6c41, 0x6c45, 0x3e66, 0x4c3f, 0x455a, 0x3e3c, 0x6c46,
- 0x317e, 0x6c44, 0x5528, 0x3563, 0x6c42, 0x4136, 0x3363, 0x6c43,
- 0x4b38, 0x4043, 0x4c7e, 0x4152, 0x6c48, 0x3a66, 0x4053, 0x5672,
- 0x514c, 0x3f3e, 0x3733, 0x4955, 0x6c47, 0x3b62, 0x4c4c, 0x3d7d,
- 0x4848, 0x4f29, 0x4d69, 0x456b, 0x3769, 0x5149, 0x3a38, 0x6c49,
- 0x6c4a, 0x3b40, 0x6c4b, 0x6c62, 0x313a, 0x3759, 0x3d39, 0x6c4c,
- 0x5166, 0x6c4d, 0x483b, 0x6c51, 0x6c53, 0x3b4d, 0x3c65, 0x6c4f,
- 0x4937, 0x433a, 0x6c63, 0x5555, 0x6c50, 0x5673, 0x6c52, 0x6c4e,
- 0x6c54, 0x6c55, 0x493f, 0x4f28, 0x505c, 0x512c, 0x485b, 0x6c56,
- 0x4e75, 0x4a6c, 0x6c5a, 0x6c59, 0x303e, 0x6c57, 0x6c58, 0x6c64,
- 0x483c, 0x4147, 0x6c5c, 0x5160, 0x6c5b, 0x546f, 0x6c5d, 0x5b46,
- 0x6c5e, 0x312c, 0x6c5f, 0x6c60, 0x5726, 0x4540, 0x6b3c, 0x302e,
- 0x3e74, 0x3838, 0x522f, 0x3056, 0x3579, 0x5833, 0x4b2c, 0x635d,
- 0x462c, 0x3066, 0x4546, 0x6b39, 0x6b3a, 0x6b3b, 0x5140, 0x4523,
- 0x6a72, 0x4432, 0x4435, 0x404e, 0x6a73, 0x4441, 0x4e6f, 0x6a70,
- 0x6a74, 0x497c, 0x4723, 0x4c58, 0x4e7e, 0x6a75, 0x6a76, 0x4f2c,
- 0x4067, 0x6a77, 0x363f, 0x6a78, 0x6a79, 0x6a7a, 0x6a7b, 0x6a71,
- 0x482e, 0x616b, 0x3738, 0x616c, 0x616d, 0x5734, 0x616e, 0x616f,
- 0x534c, 0x6171, 0x3f71, 0x6170, 0x3552, 0x3137, 0x6173, 0x6172,
- 0x3a7c, 0x6174, 0x3937, 0x3e51, 0x447c, 0x3a5d, 0x3d46, 0x6175,
- 0x6177, 0x3640, 0x4f41, 0x4a28, 0x6176, 0x5578, 0x537c, 0x6178,
- 0x617c, 0x6179, 0x617a, 0x406a, 0x617e, 0x6221, 0x4047, 0x617b,
- 0x617d, 0x6225, 0x4154, 0x6223, 0x6228, 0x327e, 0x6222, 0x434d,
- 0x3242, 0x6227, 0x6226, 0x6224, 0x6229, 0x622b, 0x5049, 0x566d,
- 0x4328, 0x622c, 0x4f57, 0x622e, 0x3a6f, 0x6960, 0x622d, 0x622a,
- 0x3b2b, 0x5433, 0x6230, 0x622f, 0x6961, 0x6231, 0x6232, 0x6233,
- 0x4c21, 0x6234, 0x6235, 0x507e, 0x424a, 0x5371, 0x4d75, 0x6760,
- 0x6761, 0x3e41, 0x426a, 0x6764, 0x6763, 0x4d66, 0x4335, 0x6762,
- 0x3b37, 0x4f56, 0x4161, 0x6769, 0x6768, 0x6774, 0x3223, 0x676a,
- 0x6766, 0x676c, 0x676b, 0x493a, 0x5564, 0x6765, 0x3729, 0x6767,
- 0x676e, 0x6773, 0x5669, 0x676d, 0x6772, 0x6771, 0x3060, 0x6775,
- 0x4772, 0x4045, 0x406d, 0x4170, 0x6770, 0x6776, 0x4b76, 0x6822,
- 0x6821, 0x5741, 0x677a, 0x6779, 0x677b, 0x6777, 0x677e, 0x677d,
- 0x677c, 0x4155, 0x4759, 0x457d, 0x4543, 0x476d, 0x6823, 0x6826,
- 0x6825, 0x6827, 0x3a77, 0x6778, 0x6824, 0x4870, 0x492a, 0x6829,
- 0x3965, 0x517e, 0x6828, 0x682a, 0x682d, 0x682e, 0x4127, 0x682f,
- 0x6830, 0x682c, 0x6834, 0x682b, 0x6831, 0x6835, 0x6832, 0x6833,
- 0x6837, 0x6836, 0x394f, 0x702c, 0x702d, 0x4630, 0x306a, 0x483f,
- 0x4d5f, 0x4e4d, 0x6a31, 0x6a32, 0x463f, 0x3449, 0x6a33, 0x5567,
- 0x5d79, 0x6a34, 0x6a35, 0x6a36, 0x384a, 0x5f30, 0x4975, 0x4c70,
- 0x497a, 0x497b, 0x5343, 0x4b26, 0x3826, 0x702e, 0x3142, 0x6538,
- 0x4c6f, 0x5349, 0x3c57, 0x496a, 0x3567, 0x4450, 0x3569, 0x6e2e,
- 0x3b2d, 0x675e, 0x6e2f, 0x3329, 0x6e32, 0x6e31, 0x3d67, 0x6e30,
- 0x4e37, 0x454f, 0x4174, 0x5b4e, 0x6e33, 0x5073, 0x4254, 0x4668,
- 0x372c, 0x6e34, 0x336b, 0x3b7b, 0x6e35, 0x675c, 0x6e36, 0x3d2e,
- 0x7162, 0x4a68, 0x5249, 0x705a, 0x705b, 0x705c, 0x4146, 0x386d,
- 0x3e4e, 0x705e, 0x4531, 0x705d, 0x5171, 0x7060, 0x304c, 0x3d6a,
- 0x525f, 0x705f, 0x342f, 0x3768, 0x7066, 0x7065, 0x4623, 0x7061,
- 0x7062, 0x3443, 0x7063, 0x556e, 0x4c5b, 0x3e52, 0x3c32, 0x7068,
- 0x7067, 0x7064, 0x3221, 0x5622, 0x5338, 0x3e37, 0x482c, 0x706a,
- 0x5177, 0x564c, 0x3a5b, 0x7069, 0x363b, 0x4d34, 0x4626, 0x4121,
- 0x706b, 0x706e, 0x706d, 0x7070, 0x706c, 0x3b3e, 0x706f, 0x4c35,
- 0x7072, 0x3355, 0x3154, 0x7073, 0x7074, 0x7076, 0x3461, 0x7071,
- 0x7077, 0x707a, 0x7078, 0x7075, 0x707d, 0x7079, 0x707c, 0x707e,
- 0x7121, 0x4e41, 0x7124, 0x7123, 0x4176, 0x707b, 0x4a5d, 0x3471,
- 0x3171, 0x4c31, 0x7126, 0x7127, 0x712c, 0x554e, 0x7129, 0x4833,
- 0x7122, 0x712b, 0x7128, 0x7125, 0x712a, 0x3029, 0x712d, 0x712f,
- 0x7131, 0x7130, 0x712e, 0x5122, 0x7132, 0x7133, 0x396f, 0x3547,
- 0x3057, 0x3059, 0x546d, 0x3544, 0x3d54, 0x3b4a, 0x7027, 0x385e,
- 0x7028, 0x3028, 0x7029, 0x4d6e, 0x702a, 0x702b, 0x4624, 0x5665,
- 0x7164, 0x7165, 0x4373, 0x535b, 0x5651, 0x4568, 0x532f, 0x5266,
- 0x6e41, 0x303b, 0x5535, 0x514e, 0x3c60, 0x3a50, 0x3f78, 0x3847,
- 0x3541, 0x454c, 0x4a22, 0x434b, 0x6e42, 0x443f, 0x3622, 0x6d6c,
- 0x4324, 0x5631, 0x4f60, 0x6d6f, 0x454e, 0x365c, 0x4a21, 0x6d6d,
- 0x6d70, 0x6d71, 0x433c, 0x3f34, 0x6d6e, 0x6d74, 0x6d72, 0x5566,
- 0x435f, 0x6d73, 0x6d76, 0x5523, 0x5123, 0x6d75, 0x4350, 0x6d77,
- 0x3f74, 0x3e6c, 0x6d78, 0x4c77, 0x515b, 0x5745, 0x5576, 0x6d7c,
- 0x6d7b, 0x6d79, 0x6d7a, 0x6d7d, 0x3e26, 0x4b2f, 0x6e21, 0x363d,
- 0x6e22, 0x4440, 0x6d7e, 0x3d5e, 0x3247, 0x3643, 0x6e25, 0x583a,
- 0x6e23, 0x6e26, 0x4369, 0x3372, 0x6e27, 0x6e24, 0x4f39, 0x6e28,
- 0x4277, 0x6e29, 0x6e2a, 0x5e2b, 0x4633, 0x4746, 0x5675, 0x3549,
- 0x4b32, 0x6e2b, 0x4d2b, 0x6e2c, 0x5530, 0x6e2d, 0x7644, 0x5b47,
- 0x3423, 0x432c, 0x7166, 0x4a38, 0x5253, 0x562a, 0x6f72, 0x3e58,
- 0x3d43, 0x6f73, 0x364c, 0x302b, 0x4a2f, 0x6d36, 0x6d37, 0x4e79,
- 0x372f, 0x3f73, 0x6d38, 0x426b, 0x4930, 0x6d39, 0x4676, 0x3f33,
- 0x6d3c, 0x4578, 0x5150, 0x5729, 0x6d3a, 0x6d3b, 0x5162, 0x6d3f,
- 0x6d40, 0x6d44, 0x6d48, 0x6d46, 0x6d4e, 0x5568, 0x6d49, 0x6d47,
- 0x6d3e, 0x4569, 0x4646, 0x4969, 0x5452, 0x6d41, 0x6d42, 0x6d43,
- 0x6d45, 0x4079, 0x3421, 0x3968, 0x6d50, 0x6d51, 0x6d4a, 0x6d4f,
- 0x4e78, 0x4b36, 0x6d4c, 0x6d4d, 0x4f75, 0x6d52, 0x4172, 0x5332,
- 0x6d4b, 0x4837, 0x3c6f, 0x4570, 0x6d56, 0x356f, 0x4235, 0x302d,
- 0x4b69, 0x312e, 0x6d54, 0x4d6b, 0x3562, 0x6d55, 0x6d53, 0x6d57,
- 0x357a, 0x6d58, 0x6d59, 0x6d5c, 0x314c, 0x4576, 0x3c6e, 0x6d5a,
- 0x4c3c, 0x326a, 0x6d5b, 0x446b, 0x3445, 0x3075, 0x6d5f, 0x405a,
- 0x3468, 0x454d, 0x6d5d, 0x3f44, 0x6d5e, 0x4425, 0x6d60, 0x6d61,
- 0x6d63, 0x4157, 0x3b47, 0x3d38, 0x6d62, 0x6d64, 0x6d66, 0x6d65,
- 0x6d67, 0x4a3e, 0x6c6a, 0x4071, 0x4967, 0x6c6b, 0x466e, 0x6c6c,
- 0x466d, 0x6c6d, 0x6c70, 0x5766, 0x6c73, 0x6c71, 0x6c6e, 0x6c6f,
- 0x5723, 0x4971, 0x4b6e, 0x6c74, 0x6c72, 0x4f69, 0x6c76, 0x4631,
- 0x3c40, 0x6c75, 0x353b, 0x3b76, 0x6c77, 0x5977, 0x3d7b, 0x423b,
- 0x6c78, 0x6c79, 0x3823, 0x6c7a, 0x6c7b, 0x6c7c, 0x536d, 0x582e,
- 0x406b, 0x475d, 0x3a4c, 0x5063, 0x4b3d, 0x4d3a, 0x3851, 0x317c,
- 0x476f, 0x5656, 0x3f46, 0x436b, 0x6f75, 0x4358, 0x5762, 0x6f77,
- 0x3353, 0x4758, 0x516d, 0x5648, 0x6f78, 0x6f76, 0x3b7d, 0x3346,
- 0x3d55, 0x5246, 0x3b60, 0x4f21, 0x6f7c, 0x6f7b, 0x6f79, 0x334c,
- 0x4954, 0x4b30, 0x6f7e, 0x305e, 0x5649, 0x6f7d, 0x336d, 0x7655,
- 0x4e48, 0x7022, 0x7021, 0x353e, 0x3c5a, 0x3b7c, 0x3865, 0x4442,
- 0x7023, 0x4b6b, 0x7026, 0x5128, 0x3e3f, 0x476e, 0x7136, 0x7137,
- 0x3f55, 0x3429, 0x7138, 0x4d3b, 0x4754, 0x552d, 0x7139, 0x713a,
- 0x474f, 0x5224, 0x564f, 0x713b, 0x3d51, 0x3430, 0x3e3d, 0x345c,
- 0x4e51, 0x3f5f, 0x713d, 0x3f7a, 0x713c, 0x713f, 0x713e, 0x7140,
- 0x7141, 0x417e, 0x4122, 0x4a7a, 0x553e, 0x3e3a, 0x3e39, 0x5542,
- 0x3f22, 0x4d2f, 0x7135, 0x3d5f, 0x364b, 0x5671, 0x7343, 0x7344,
- 0x384d, 0x7346, 0x7347, 0x304a, 0x7345, 0x7349, 0x4b71, 0x734b,
- 0x5026, 0x314a, 0x7348, 0x734f, 0x3551, 0x7357, 0x7352, 0x7354,
- 0x7353, 0x377b, 0x313f, 0x734e, 0x734a, 0x355a, 0x7350, 0x7351,
- 0x7355, 0x734d, 0x3c63, 0x417d, 0x7356, 0x735a, 0x734c, 0x3548,
- 0x3d6e, 0x735c, 0x3724, 0x3f70, 0x567e, 0x4d32, 0x3470, 0x325f,
- 0x7358, 0x7359, 0x4938, 0x735d, 0x735e, 0x7361, 0x735f, 0x7363,
- 0x7362, 0x735b, 0x3f6a, 0x336f, 0x7360, 0x4729, 0x3c72, 0x736b,
- 0x393f, 0x7364, 0x322d, 0x3b7e, 0x4b63, 0x736d, 0x7369, 0x395c,
- 0x736e, 0x7365, 0x7366, 0x736a, 0x4261, 0x736c, 0x736f, 0x7368,
- 0x3c7d, 0x4f64, 0x7370, 0x7367, 0x7372, 0x572d, 0x462a, 0x7373,
- 0x7371, 0x4228, 0x385d, 0x7375, 0x7374, 0x345b, 0x7376, 0x7377,
- 0x7378, 0x403a, 0x4069, 0x4571, 0x737b, 0x737a, 0x3458, 0x737e,
- 0x7379, 0x737c, 0x737d, 0x7421, 0x7423, 0x3b49, 0x7422, 0x7424,
- 0x323e, 0x7426, 0x7425, 0x3c2e, 0x4357, 0x5961, 0x4060, 0x744c,
- 0x5751, 0x375b, 0x744e, 0x4123, 0x4649, 0x3456, 0x5533, 0x7450,
- 0x744f, 0x7451, 0x4b5a, 0x7452, 0x5441, 0x5660, 0x3760, 0x4138,
- 0x413b, 0x7453, 0x3e2c, 0x3462, 0x7454, 0x7455, 0x3e2b, 0x7456,
- 0x745b, 0x7457, 0x745a, 0x3a7d, 0x7458, 0x7459, 0x3862, 0x4c47,
- 0x745c, 0x325a, 0x4353, 0x5463, 0x3f37, 0x745d, 0x4534, 0x7469,
- 0x4f35, 0x4e49, 0x4b58, 0x4b77, 0x3d74, 0x574f, 0x405b, 0x5075,
- 0x746a, 0x746b, 0x746c, 0x7763, 0x3731, 0x746d, 0x576b, 0x746e,
- 0x6679, 0x3e40, 0x667a, 0x3a6c, 0x667b, 0x4f4b, 0x667c, 0x543c,
- 0x3c36, 0x667d, 0x667e, 0x3c4d, 0x4852, 0x4e33, 0x6721, 0x343f,
- 0x6722, 0x4934, 0x3859, 0x4449, 0x575d, 0x425a, 0x3757, 0x563d,
- 0x4e46, 0x3744, 0x4526, 0x6723, 0x4f5f, 0x6724, 0x6725, 0x6726,
- 0x4137, 0x5769, 0x4970, 0x4f38, 0x562f, 0x5655, 0x6727, 0x306d,
- 0x6728, 0x6729, 0x495c, 0x526f, 0x3e2d, 0x672a, 0x3073, 0x485e,
- 0x3d61, 0x672b, 0x4846, 0x672c, 0x3b66, 0x3878, 0x5124, 0x672d,
- 0x4267, 0x3e78, 0x3d4a, 0x4d33, 0x672e, 0x672f, 0x3e6e, 0x5065,
- 0x4b67, 0x4c50, 0x3c4c, 0x6730, 0x3c28, 0x5077, 0x6731, 0x5078,
- 0x6732, 0x6733, 0x3442, 0x6734, 0x6735, 0x497e, 0x4e2c, 0x4360,
- 0x6737, 0x3141, 0x3371, 0x6738, 0x6739, 0x575b, 0x5540, 0x673a,
- 0x424c, 0x573a, 0x673b, 0x673c, 0x673d, 0x3c6a, 0x4365, 0x4042,
- 0x673e, 0x673f, 0x3c29, 0x6740, 0x6741, 0x6736, 0x3650, 0x6742,
- 0x6743, 0x6744, 0x3b3a, 0x355e, 0x4246, 0x3160, 0x6745, 0x5435,
- 0x6746, 0x383f, 0x6748, 0x6747, 0x376c, 0x6749, 0x3278, 0x674a,
- 0x674b, 0x674c, 0x674d, 0x674e, 0x674f, 0x6750, 0x5327, 0x4b75,
- 0x6751, 0x6752, 0x6753, 0x6754, 0x4949, 0x6755, 0x6756, 0x6757,
- 0x6758, 0x6759, 0x3d49, 0x675a, 0x733e, 0x3857, 0x4831, 0x733f,
- 0x7340, 0x7341, 0x395e, 0x4d78, 0x5868, 0x3a31, 0x425e, 0x6e37,
- 0x3723, 0x6e39, 0x6e38, 0x3055, 0x6e3b, 0x5556, 0x576f, 0x5643,
- 0x6e3d, 0x4a70, 0x6e3c, 0x6e3e, 0x6e40, 0x6e3f, 0x5172, 0x473c,
- 0x4340, 0x3861, 0x4167, 0x7446, 0x505f, 0x7447, 0x4f5b, 0x483a,
- 0x7448, 0x7449, 0x744a, 0x744b, 0x597a, 0x387e, 0x6571, 0x5370,
- 0x7460, 0x4e4c, 0x3361, 0x7134, 0x526e, 0x7461, 0x4f68, 0x7462,
- 0x474c, 0x3554, 0x3464, 0x7464, 0x7463, 0x7465, 0x7466, 0x7467,
- 0x3a32, 0x303f, 0x7468, 0x372d, 0x526d, 0x522b, 0x404f, 0x3f3c,
- 0x6b23, 0x555f, 0x6a48, 0x7173, 0x3678, 0x4b23, 0x444d, 0x7167,
- 0x7168, 0x387b, 0x7169, 0x3a44, 0x5445, 0x3052, 0x716a, 0x716b,
- 0x716c, 0x716d, 0x716e, 0x716f, 0x7171, 0x7170, 0x4555, 0x7172,
- 0x367a, 0x7174, 0x522e, 0x5e47, 0x4b4a, 0x335c, 0x3522, 0x3922,
- 0x4474, 0x7175, 0x7176, 0x4144, 0x417b, 0x5630, 0x7177, 0x7178,
- 0x412a, 0x4638, 0x3e5b, 0x7179, 0x344f, 0x717a, 0x6d32, 0x6d31,
- 0x4b60, 0x525e, 0x4b41, 0x5558, 0x4862, 0x405f, 0x3c21, 0x6b41,
- 0x5024, 0x5662, 0x3647, 0x3858, 0x6b40, 0x384e, 0x6b3f, 0x3326,
- 0x3949, 0x562b, 0x3774, 0x374a, 0x3c67, 0x373e, 0x6b46, 0x6b47,
- 0x3039, 0x3f4f, 0x6b45, 0x537d, 0x6b48, 0x6b49, 0x374e, 0x6b42,
- 0x6b44, 0x4976, 0x5657, 0x554d, 0x5032, 0x6b4f, 0x4e38, 0x6b50,
- 0x3528, 0x3133, 0x6b52, 0x4c25, 0x4556, 0x6b53, 0x6b51, 0x455f,
- 0x6b4e, 0x4a24, 0x6b55, 0x307b, 0x3a7a, 0x5837, 0x7163, 0x6b4a,
- 0x6b4b, 0x6b4c, 0x6b4d, 0x6b56, 0x6640, 0x6b59, 0x3f68, 0x5248,
- 0x6b57, 0x6b5c, 0x386c, 0x6b58, 0x3d3a, 0x5058, 0x3037, 0x6b5d,
- 0x445c, 0x562c, 0x3460, 0x4276, 0x3c39, 0x6b5a, 0x6b5b, 0x5460,
- 0x466a, 0x4454, 0x6b5f, 0x4527, 0x5975, 0x3231, 0x6b64, 0x3d45,
- 0x6b62, 0x6b63, 0x382c, 0x4d51, 0x6b65, 0x6b61, 0x4133, 0x4622,
- 0x4c73, 0x6b66, 0x4030, 0x5238, 0x6b67, 0x382f, 0x382d, 0x6b68,
- 0x473b, 0x4d73, 0x6b6a, 0x6b6b, 0x6b6d, 0x5048, 0x6b72, 0x6b6e,
- 0x6b71, 0x4879, 0x517c, 0x6b6c, 0x6b69, 0x3839, 0x4f59, 0x4465,
- 0x6b6f, 0x6b70, 0x4c5a, 0x4d48, 0x3072, 0x6b76, 0x6b75, 0x3232,
- 0x3860, 0x6b77, 0x316c, 0x4c45, 0x4424, 0x4f25, 0x6b79, 0x6c22,
- 0x4572, 0x6b7a, 0x4945, 0x625f, 0x6b7e, 0x4d4e, 0x6c21, 0x315b,
- 0x5337, 0x525c, 0x6b7d, 0x6b7b, 0x333c, 0x6a30, 0x5754, 0x742b,
- 0x3374, 0x5641, 0x5642, 0x5569, 0x3e4a, 0x7427, 0x5228, 0x7428,
- 0x7429, 0x742a, 0x3e4b, 0x535f, 0x4960, 0x4961, 0x7342, 0x4a66,
- 0x4c72, 0x6236, 0x4b34, 0x4e68, 0x565b, 0x742d, 0x742e, 0x742f,
- 0x7432, 0x3a3d, 0x7433, 0x3063, 0x7430, 0x7431, 0x3d22, 0x3255,
- 0x7436, 0x7437, 0x3666, 0x3230, 0x4f4f, 0x7434, 0x342c, 0x7435,
- 0x7438, 0x7439, 0x4d27, 0x743a, 0x743b, 0x743c, 0x4b52, 0x743d,
- 0x743e, 0x743f, 0x745e, 0x413c, 0x3c68, 0x492b, 0x515e, 0x6575,
- 0x5c33, 0x5255, 0x5c34, 0x302c, 0x5c35, 0x3d5a, 0x5c39, 0x5842,
- 0x5c37, 0x5373, 0x4956, 0x5c3a, 0x5c36, 0x5c3b, 0x4322, 0x5c3c,
- 0x5c45, 0x5c3d, 0x4e5f, 0x5625, 0x5c4f, 0x5c4d, 0x5c52, 0x3d66,
- 0x422b, 0x5c38, 0x5c4b, 0x5c4e, 0x5c3e, 0x3752, 0x3045, 0x5c47,
- 0x503e, 0x5c41, 0x3b28, 0x373c, 0x5c4c, 0x5c46, 0x5c3f, 0x475b,
- 0x513f, 0x5c40, 0x5c4a, 0x5c50, 0x4e2d, 0x5c42, 0x5c43, 0x5c48,
- 0x5c49, 0x3254, 0x5c51, 0x4b55, 0x5437, 0x5c5b, 0x5c5f, 0x4c26,
- 0x5c66, 0x4367, 0x5c5c, 0x3f41, 0x5c59, 0x307a, 0x3936, 0x5c65,
- 0x5c53, 0x5c44, 0x5c56, 0x4874, 0x3f60, 0x493b, 0x313d, 0x5322,
- 0x5c5a, 0x5c55, 0x463b, 0x5c5e, 0x5742, 0x432f, 0x3736, 0x4751,
- 0x4329, 0x5c62, 0x5c58, 0x5c6b, 0x5c54, 0x5c5d, 0x3e25, 0x5c57,
- 0x5c60, 0x5c63, 0x5c64, 0x5c78, 0x5c61, 0x5d22, 0x5c67, 0x3c6b,
- 0x3444, 0x4323, 0x3267, 0x5c7a, 0x5c72, 0x5c6f, 0x5c7c, 0x5c6e,
- 0x5270, 0x3268, 0x4857, 0x4863, 0x5c7b, 0x5c6d, 0x5c77, 0x5c75,
- 0x3e23, 0x5c74, 0x325d, 0x5c73, 0x3c76, 0x5c68, 0x3b44, 0x4073,
- 0x3c54, 0x5c69, 0x5c6a, 0x5c71, 0x5c76, 0x5c79, 0x3534, 0x4859,
- 0x3b67, 0x5c7e, 0x5c7d, 0x532b, 0x5d21, 0x5d23, 0x5d25, 0x5271,
- 0x5d24, 0x5d26, 0x5d27, 0x5229, 0x3a49, 0x5d29, 0x5d36, 0x5d31,
- 0x5d34, 0x5d30, 0x464e, 0x4072, 0x492f, 0x5c6c, 0x5d2e, 0x5d37,
- 0x5c70, 0x5d2f, 0x5d38, 0x5d2c, 0x5d39, 0x5d33, 0x5d2d, 0x442a,
- 0x5d28, 0x4033, 0x412b, 0x5d2a, 0x5d2b, 0x5d32, 0x3b71, 0x5d35,
- 0x5328, 0x5d3a, 0x5d3b, 0x4327, 0x5d52, 0x5d3c, 0x5d51, 0x393d,
- 0x3e55, 0x3e7a, 0x3a4a, 0x5d4a, 0x5d45, 0x5d3f, 0x324b, 0x5d43,
- 0x5d4b, 0x3224, 0x5d55, 0x5d3e, 0x4650, 0x5d50, 0x5d54, 0x4162,
- 0x3746, 0x5d4e, 0x5d4f, 0x5d44, 0x5d3d, 0x5d4d, 0x4c51, 0x5d49,
- 0x5d42, 0x4348, 0x463c, 0x4e2e, 0x5d4c, 0x5d48, 0x5d41, 0x5d46,
- 0x425c, 0x5329, 0x532a, 0x5d53, 0x4f74, 0x4878, 0x5d66, 0x5d47,
- 0x5d60, 0x4264, 0x5d61, 0x5d57, 0x5678, 0x5d59, 0x5d58, 0x3870,
- 0x5d56, 0x464f, 0x362d, 0x5d62, 0x3a79, 0x5461, 0x5d67, 0x3450,
- 0x5d5a, 0x3f7b, 0x5d63, 0x5d5f, 0x5d5d, 0x3559, 0x5d5b, 0x5d5c,
- 0x5d5e, 0x3d2f, 0x5d64, 0x5d65, 0x5d75, 0x4349, 0x4b62, 0x5d72,
- 0x5861, 0x4651, 0x5d74, 0x5574, 0x5d73, 0x5d70, 0x5d6c, 0x5d6f,
- 0x5d68, 0x506e, 0x4858, 0x5d6e, 0x5d69, 0x5d6a, 0x4b72, 0x5d6d,
- 0x314d, 0x4036, 0x3c3b, 0x5d71, 0x5d77, 0x5d76, 0x5d6b, 0x456e,
- 0x5d7b, 0x5e24, 0x5e23, 0x5d78, 0x436f, 0x427b, 0x5561, 0x4e35,
- 0x5d7d, 0x324c, 0x4468, 0x4a5f, 0x473e, 0x5d7a, 0x5d7c, 0x5d7e,
- 0x5e22, 0x302a, 0x314e, 0x5e2c, 0x5e26, 0x3d36, 0x486f, 0x5e21,
- 0x5e25, 0x5e29, 0x5e28, 0x5e27, 0x5e2d, 0x544c, 0x5e33, 0x5e2a,
- 0x5e2e, 0x4059, 0x3121, 0x5e36, 0x5e31, 0x5e32, 0x5126, 0x5e35,
- 0x5e2f, 0x5e30, 0x503d, 0x5e34, 0x4a6d, 0x5e39, 0x5e38, 0x5e37,
- 0x5e3b, 0x3d65, 0x3258, 0x436a, 0x5e3a, 0x453a, 0x5e3c, 0x4c59,
- 0x372a, 0x5465, 0x5e3d, 0x5e3f, 0x4422, 0x5e41, 0x5e3e, 0x5e40,
- 0x553a, 0x5e42, 0x722e, 0x3b22, 0x4232, 0x4530, 0x4247, 0x722f,
- 0x5069, 0x535d, 0x6b3d, 0x3366, 0x7230, 0x7231, 0x4a2d, 0x3a67,
- 0x7233, 0x7235, 0x7234, 0x4b64, 0x4f3a, 0x7232, 0x4a34, 0x524f,
- 0x426c, 0x4e43, 0x7238, 0x3076, 0x7237, 0x723e, 0x324f, 0x5141,
- 0x723a, 0x723c, 0x5469, 0x723b, 0x7236, 0x723f, 0x723d, 0x7239,
- 0x7247, 0x7244, 0x7246, 0x724a, 0x7242, 0x7240, 0x7245, 0x567b,
- 0x7241, 0x4779, 0x495f, 0x7248, 0x3946, 0x3530, 0x7243, 0x7249,
- 0x7250, 0x7256, 0x3b57, 0x7255, 0x4d5c, 0x566b, 0x7252, 0x7254,
- 0x3872, 0x724b, 0x724e, 0x4279, 0x555d, 0x724c, 0x724d, 0x724f,
- 0x7253, 0x7259, 0x533c, 0x366a, 0x4a71, 0x3764, 0x7257, 0x7258,
- 0x725a, 0x725d, 0x725b, 0x725c, 0x5151, 0x7251, 0x4d49, 0x4e4f,
- 0x5629, 0x7263, 0x435b, 0x7260, 0x402f, 0x726c, 0x725e, 0x7261,
- 0x7268, 0x7262, 0x7267, 0x7266, 0x7269, 0x725f, 0x7264, 0x726a,
- 0x532c, 0x7265, 0x3275, 0x7272, 0x502b, 0x7275, 0x3b48, 0x7279,
- 0x7270, 0x7276, 0x7278, 0x727a, 0x7273, 0x7271, 0x3a7b, 0x357b,
- 0x726f, 0x7277, 0x726d, 0x726e, 0x726b, 0x7326, 0x7323, 0x7322,
- 0x7274, 0x485a, 0x727b, 0x7325, 0x4378, 0x727d, 0x7327, 0x7329,
- 0x7324, 0x727c, 0x732b, 0x732a, 0x425d, 0x732e, 0x7330, 0x7321,
- 0x7331, 0x732c, 0x732f, 0x727e, 0x732d, 0x7332, 0x7334, 0x7328,
- 0x7333, 0x7335, 0x5037, 0x7338, 0x5979, 0x7339, 0x7337, 0x4864,
- 0x7336, 0x733a, 0x733b, 0x3440, 0x6e43, 0x733c, 0x733d, 0x512a,
- 0x742c, 0x5046, 0x5050, 0x515c, 0x4f4e, 0x3d56, 0x5143, 0x3a62,
- 0x6169, 0x5242, 0x7142, 0x3239, 0x316d, 0x7143, 0x4940, 0x3344,
- 0x5972, 0x4b25, 0x7144, 0x5654, 0x7145, 0x7440, 0x7146, 0x542c,
- 0x7147, 0x3040, 0x7441, 0x7442, 0x347c, 0x455b, 0x4c3b, 0x5064,
- 0x4d60, 0x7148, 0x5973, 0x313b, 0x4f2e, 0x3824, 0x714a, 0x714b,
- 0x3243, 0x4151, 0x5730, 0x7149, 0x714c, 0x714e, 0x5976, 0x5261,
- 0x5423, 0x7443, 0x4839, 0x7444, 0x714d, 0x714f, 0x3f63, 0x7150,
- 0x7154, 0x7156, 0x7151, 0x4951, 0x4561, 0x4263, 0x397c, 0x7153,
- 0x7155, 0x3953, 0x715b, 0x3a56, 0x307d, 0x7159, 0x7158, 0x7152,
- 0x715a, 0x7157, 0x486c, 0x4d4a, 0x715d, 0x653d, 0x715c, 0x715e,
- 0x715f, 0x4f65, 0x7445, 0x3d73, 0x7160, 0x7161, 0x4e77, 0x522a,
- 0x717b, 0x3832, 0x3c7b, 0x395b, 0x3966, 0x4359, 0x4a53, 0x6a68,
- 0x4040, 0x3e75, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e,
- 0x6a6f, 0x3d47, 0x757b, 0x757d, 0x757e, 0x757c, 0x3d62, 0x7621,
- 0x3425, 0x7622, 0x7623, 0x6c32, 0x5154, 0x596a, 0x7624, 0x6e3a,
- 0x5532, 0x537e, 0x4c5c, 0x4a44, 0x6540, 0x7625, 0x3e2f, 0x4629,
- 0x5a25, 0x3c46, 0x3629, 0x383c, 0x484f, 0x3c25, 0x5a26, 0x5a27,
- 0x4c56, 0x4843, 0x5a28, 0x467d, 0x5135, 0x5269, 0x5136, 0x3c47,
- 0x3d32, 0x3b64, 0x5a29, 0x5a2a, 0x5148, 0x5a2b, 0x506d, 0x366f,
- 0x425b, 0x4b4f, 0x376d, 0x4968, 0x3743, 0x3e77, 0x5624, 0x5a2c,
- 0x5a2d, 0x4640, 0x5767, 0x4a36, 0x5529, 0x4b5f, 0x556f, 0x5a2e,
- 0x565f, 0x344a, 0x5a30, 0x5a2f, 0x526b, 0x5a31, 0x5a32, 0x5a33,
- 0x4a54, 0x5a34, 0x4a2b, 0x5a35, 0x5a36, 0x334f, 0x566f, 0x5a37,
- 0x3b30, 0x352e, 0x5a38, 0x5a39, 0x396e, 0x512f, 0x5268, 0x5a3a,
- 0x3843, 0x4f6a, 0x326f, 0x5a3b, 0x5a3c, 0x3d6b, 0x4e5c, 0x536f,
- 0x5a3d, 0x4e73, 0x5a3e, 0x5355, 0x3b65, 0x5a3f, 0x4b35, 0x4b50,
- 0x5a40, 0x476b, 0x566e, 0x5a41, 0x4535, 0x3641, 0x5a42, 0x374c,
- 0x3f4e, 0x5a43, 0x5a44, 0x4b2d, 0x5a45, 0x3577, 0x5a46, 0x4142,
- 0x573b, 0x5a47, 0x4c38, 0x526a, 0x4431, 0x5a48, 0x357d, 0x3b51,
- 0x5a49, 0x5033, 0x5a4a, 0x5a4b, 0x4e3d, 0x5a4c, 0x5a4d, 0x5a4e,
- 0x3277, 0x5a51, 0x5a4f, 0x5168, 0x5a50, 0x4355, 0x5a52, 0x5a53,
- 0x5a54, 0x5a55, 0x503b, 0x5225, 0x3079, 0x5a56, 0x472b, 0x5a57,
- 0x3d77, 0x4321, 0x5a58, 0x5a59, 0x437d, 0x4c37, 0x5a5a, 0x5a5b,
- 0x403e, 0x4657, 0x5a5c, 0x5a5d, 0x4734, 0x5a5e, 0x5a5f, 0x3948,
- 0x3b6d, 0x3639, 0x7478, 0x7479, 0x4d63, 0x7539, 0x6b60, 0x4f73,
- 0x3b3f, 0x3a40, 0x5425, 0x6159, 0x7574, 0x312a, 0x3272, 0x7575,
- 0x7577, 0x3a51, 0x7576, 0x4332, 0x7579, 0x7578, 0x3134, 0x556a,
- 0x383a, 0x3931, 0x3246, 0x5470, 0x4f4d, 0x305c, 0x554b, 0x3b75,
- 0x564a, 0x3737, 0x4c30, 0x4636, 0x3161, 0x393a, 0x567c, 0x3961,
- 0x3721, 0x3c7a, 0x6a5a, 0x6a5b, 0x4c79, 0x3973, 0x6a5c, 0x347b,
- 0x4333, 0x3751, 0x3a58, 0x6a5d, 0x5474, 0x6a5e, 0x3c56, 0x3b5f,
- 0x6a5f, 0x415e, 0x4238, 0x545f, 0x574a, 0x6a60, 0x6a61, 0x6a64,
- 0x6a62, 0x6a63, 0x495e, 0x3833, 0x3644, 0x6a65, 0x4a6a, 0x494d,
- 0x344d, 0x6259, 0x4562, 0x6a66, 0x4035, 0x5738, 0x6a67, 0x572c,
- 0x487c, 0x5853, 0x584d, 0x545e, 0x5479, 0x4944, 0x532e, 0x3853,
- 0x3360, 0x4962, 0x7476, 0x3a55, 0x7477, 0x575f, 0x7471, 0x3830,
- 0x5554, 0x384f, 0x4670, 0x3343, 0x7472, 0x332c, 0x543d, 0x4777,
- 0x7474, 0x7473, 0x4c4b, 0x4824, 0x7475, 0x5763, 0x453f, 0x7540,
- 0x753b, 0x7543, 0x7542, 0x563a, 0x7541, 0x543e, 0x7544, 0x754c,
- 0x304f, 0x3578, 0x7549, 0x754a, 0x455c, 0x7545, 0x7546, 0x7547,
- 0x754b, 0x3e60, 0x7548, 0x387a, 0x7550, 0x7553, 0x3f67, 0x3972,
- 0x753c, 0x754d, 0x4237, 0x4c78, 0x3c79, 0x754e, 0x754f, 0x7551,
- 0x3665, 0x7552, 0x7555, 0x753d, 0x7554, 0x533b, 0x336c, 0x4c24,
- 0x7556, 0x7557, 0x3e61, 0x7558, 0x4c5f, 0x755b, 0x3248, 0x5759,
- 0x7559, 0x755a, 0x755c, 0x7562, 0x7560, 0x755f, 0x755d, 0x7561,
- 0x755e, 0x7564, 0x7565, 0x4c63, 0x653f, 0x3538, 0x7563, 0x7568,
- 0x4c23, 0x7566, 0x7567, 0x753e, 0x3144, 0x753f, 0x3545, 0x3264,
- 0x756c, 0x7569, 0x3657, 0x756d, 0x756a, 0x756b, 0x345a, 0x546a,
- 0x756e, 0x3379, 0x756f, 0x7571, 0x7570, 0x7572, 0x7573, 0x496d,
- 0x392a, 0x477b, 0x3663, 0x4c49, 0x6a26, 0x3335, 0x547e, 0x396c,
- 0x5079, 0x696d, 0x572a, 0x696e, 0x4256, 0x486d, 0x3a64, 0x696f,
- 0x6970, 0x6971, 0x5661, 0x6972, 0x6973, 0x6975, 0x6974, 0x6976,
- 0x6977, 0x4761, 0x6978, 0x5458, 0x6979, 0x3d4e, 0x697a, 0x697b,
- 0x3d4f, 0x697c, 0x3828, 0x413e, 0x697d, 0x3132, 0x3b54, 0x3975,
- 0x697e, 0x6a21, 0x6a22, 0x6a23, 0x3778, 0x3c2d, 0x4a64, 0x604e,
- 0x542f, 0x4f3d, 0x5537, 0x6a24, 0x555e, 0x6a25, 0x5041, 0x393c,
- 0x3447, 0x3159, 0x4031, 0x3166, 0x3167, 0x3168, 0x333d, 0x4868,
- 0x6541, 0x315f, 0x4149, 0x346f, 0x4728, 0x5358, 0x4679, 0x5138,
- 0x397d, 0x4275, 0x532d, 0x544b, 0x3d7c, 0x6542, 0x3735, 0x6543,
- 0x3b39, 0x5562, 0x3d78, 0x5436, 0x4e25, 0x412c, 0x3359, 0x4c76,
- 0x6546, 0x6544, 0x6548, 0x654a, 0x6547, 0x354f, 0x4648, 0x357c,
- 0x6545, 0x4a76, 0x6549, 0x4354, 0x3145, 0x3c23, 0x5737, 0x4d4b,
- 0x4b4d, 0x4a4a, 0x4c53, 0x654c, 0x654b, 0x4466, 0x5121, 0x5137,
- 0x654d, 0x6550, 0x4d38, 0x5670, 0x654f, 0x355d, 0x4d3e, 0x6551,
- 0x363a, 0x4d28, 0x3964, 0x4a45, 0x3351, 0x4b59, 0x546c, 0x6552,
- 0x376a, 0x654e, 0x6555, 0x347e, 0x6556, 0x6553, 0x6554, 0x525d,
- 0x425f, 0x3146, 0x5362, 0x365d, 0x4b6c, 0x6557, 0x5376, 0x3169,
- 0x3674, 0x655a, 0x6558, 0x6559, 0x3540, 0x5245, 0x655c, 0x655e,
- 0x655d, 0x4732, 0x5223, 0x655b, 0x5462, 0x555a, 0x6560, 0x5771,
- 0x6561, 0x315c, 0x517b, 0x6562, 0x6564, 0x6563, 0x6565, 0x5258,
- 0x354b, 0x675f, 0x5a75, 0x5a78, 0x5a76, 0x5a77, 0x5a7a, 0x504f,
- 0x4447, 0x306e, 0x5030, 0x5a79, 0x534a, 0x3a2a, 0x5b22, 0x4771,
- 0x5a7c, 0x5a7b, 0x495b, 0x5a7d, 0x5b21, 0x575e, 0x5a7e, 0x415a,
- 0x5b25, 0x5374, 0x5b27, 0x5b24, 0x5b28, 0x3d3c, 0x4049, 0x5b23,
- 0x5b26, 0x5623, 0x5b29, 0x5b2d, 0x5b2e, 0x5b2c, 0x3a42, 0x3f24,
- 0x5b2b, 0x5b2a, 0x5447, 0x323f, 0x5b2f, 0x3979, 0x5b30, 0x333b,
- 0x3526, 0x363c, 0x5b31, 0x3675, 0x5b32, 0x3149, 0x5b34, 0x5b33,
- 0x5b35, 0x5b37, 0x5b36, 0x5b38, 0x5b39, 0x5b3a, 0x534f, 0x747a,
- 0x4775, 0x5743, 0x4564, 0x747c, 0x747d, 0x747b, 0x3e46, 0x506f,
- 0x3753, 0x544d, 0x4c2a, 0x7522, 0x7521, 0x3a28, 0x747e, 0x4b56,
- 0x7524, 0x4052, 0x336a, 0x4d2a, 0x7525, 0x7523, 0x3d34, 0x7528,
- 0x7529, 0x3d4d, 0x4338, 0x3f61, 0x4b61, 0x752a, 0x7526, 0x7527,
- 0x4470, 0x752c, 0x343c, 0x576d, 0x3457, 0x752b, 0x752e, 0x752d,
- 0x752f, 0x5051, 0x4351, 0x4829, 0x7530, 0x7531, 0x7532, 0x7533,
- 0x7534, 0x7535, 0x7537, 0x7536, 0x7538, 0x3249, 0x5354, 0x4a4d,
- 0x406f, 0x5658, 0x5230, 0x413f, 0x3d70, 0x382a, 0x3c78, 0x7646,
- 0x7647, 0x7648, 0x7649, 0x764a, 0x764c, 0x764b, 0x7769, 0x764d,
- 0x764e, 0x6e44, 0x6e45, 0x6e46, 0x556b, 0x3624, 0x6e48, 0x6e47,
- 0x6e49, 0x6e4a, 0x4725, 0x6e4b, 0x6e4c, 0x3730, 0x3576, 0x6e4d,
- 0x6e4f, 0x6e4e, 0x3846, 0x6e50, 0x6e51, 0x6e52, 0x365b, 0x332e,
- 0x5653, 0x4446, 0x3135, 0x3856, 0x6e53, 0x6e54, 0x543f, 0x4755,
- 0x3e7b, 0x4e59, 0x3933, 0x6e56, 0x6e55, 0x6e58, 0x6e57, 0x4525,
- 0x6e59, 0x6e5a, 0x472e, 0x6e5b, 0x472f, 0x6e5c, 0x3227, 0x6e5d,
- 0x6e5e, 0x6e5f, 0x6e60, 0x6e61, 0x576a, 0x6e62, 0x6e63, 0x3c58,
- 0x6e64, 0x534b, 0x4c7a, 0x322c, 0x4165, 0x6e65, 0x4726, 0x432d,
- 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a, 0x6e6b, 0x6e6c, 0x6e6d,
- 0x6e6e, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e74, 0x6e73, 0x6e75,
- 0x4d2d, 0x4241, 0x6e76, 0x6e77, 0x6e78, 0x5521, 0x6e79, 0x4f33,
- 0x6e7a, 0x6e7b, 0x6e7c, 0x6e7d, 0x6f21, 0x6e7e, 0x6f22, 0x3875,
- 0x437a, 0x6f23, 0x6f24, 0x3d42, 0x523f, 0x3279, 0x6f25, 0x6f26,
- 0x6f27, 0x5278, 0x6f28, 0x567d, 0x6f29, 0x464c, 0x6f2a, 0x6f2b,
- 0x4134, 0x6f2c, 0x4f7a, 0x4b78, 0x6f2e, 0x6f2d, 0x337a, 0x3978,
- 0x6f2f, 0x6f30, 0x5062, 0x6f31, 0x6f32, 0x3766, 0x503f, 0x6f33,
- 0x6f34, 0x6f35, 0x4871, 0x4c60, 0x6f36, 0x6f37, 0x6f38, 0x6f39,
- 0x6f3a, 0x5560, 0x6f3b, 0x346d, 0x432a, 0x6f3c, 0x6f3d, 0x6f3e,
- 0x6f3f, 0x4e7d, 0x6f40, 0x4260, 0x3438, 0x5736, 0x3d75, 0x4f47,
- 0x6f43, 0x6f41, 0x6f42, 0x6f44, 0x3627, 0x3c7c, 0x3e62, 0x434c,
- 0x6f45, 0x6f46, 0x6f47, 0x6f4f, 0x6f48, 0x6f49, 0x6f4a, 0x4742,
- 0x6f71, 0x364d, 0x6f4b, 0x6f4c, 0x6f4d, 0x3646, 0x433e, 0x6f4e,
- 0x6f50, 0x6f51, 0x6f52, 0x5572, 0x6f53, 0x4477, 0x6f54, 0x4478,
- 0x6f55, 0x6f56, 0x3864, 0x3077, 0x6f57, 0x6f58, 0x6f59, 0x6f5a,
- 0x6f5b, 0x6f5c, 0x6f5d, 0x6f5e, 0x3e35, 0x6f61, 0x6f5f, 0x6f60,
- 0x6f62, 0x6f63, 0x414d, 0x6f64, 0x6f65, 0x6f66, 0x6f67, 0x6f68,
- 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x4058, 0x6f6d, 0x412d, 0x6f6e,
- 0x6f6f, 0x6f70, 0x4f62, 0x3324, 0x4345, 0x6345, 0x4941, 0x6346,
- 0x3155, 0x4e4a, 0x3433, 0x4872, 0x6347, 0x4f50, 0x6348, 0x3c64,
- 0x6349, 0x634a, 0x4346, 0x5522, 0x4456, 0x396b, 0x4e45, 0x634b,
- 0x4376, 0x634c, 0x3727, 0x3873, 0x3a52, 0x634d, 0x634e, 0x5444,
- 0x634f, 0x6350, 0x514b, 0x6351, 0x6352, 0x6353, 0x6354, 0x5156,
- 0x6355, 0x327b, 0x403b, 0x6356, 0x402b, 0x6357, 0x6358, 0x6359,
- 0x635a, 0x635b, 0x3837, 0x5a62, 0x3653, 0x5a64, 0x5a63, 0x5a66,
- 0x486e, 0x5a65, 0x3740, 0x5174, 0x5275, 0x5573, 0x3d57, 0x5768,
- 0x5a68, 0x5a67, 0x3022, 0x4d53, 0x5a69, 0x383d, 0x3c4a, 0x423d,
- 0x4224, 0x3342, 0x5a6a, 0x422a, 0x4430, 0x3d35, 0x4f5e, 0x5a6b,
- 0x4942, 0x315d, 0x5a6c, 0x3638, 0x543a, 0x337d, 0x5a6d, 0x5449,
- 0x4f55, 0x4563, 0x5a6e, 0x5a6f, 0x5a70, 0x416a, 0x4c55, 0x4f5d,
- 0x5367, 0x4221, 0x5a71, 0x4b65, 0x5a72, 0x4b66, 0x527e, 0x3874,
- 0x5a73, 0x302f, 0x4f36, 0x554f, 0x4b6d, 0x5a74, 0x6344, 0x4125,
- 0x763f, 0x7640, 0x7641, 0x4451, 0x4838, 0x5163, 0x505b, 0x5145,
- 0x3c2f, 0x394d, 0x6f74, 0x3446, 0x533a, 0x7642, 0x337b, 0x7643,
- 0x3571, 0x7645, 0x536a, 0x7627, 0x5129, 0x7629, 0x7628, 0x4163,
- 0x4057, 0x3122, 0x4e6d, 0x5068, 0x762b, 0x4f76, 0x762a, 0x5570,
- 0x762c, 0x4339, 0x3b74, 0x762e, 0x762d, 0x445e, 0x4158, 0x4b2a,
- 0x4f3c, 0x762f, 0x7630, 0x7631, 0x4236, 0x3054, 0x4579, 0x7632,
- 0x4760, 0x7626, 0x3e38, 0x3e32, 0x3565, 0x3747, 0x3f3f, 0x4352,
- 0x4366, 0x584c, 0x386f, 0x3d79, 0x5125, 0x3050, 0x7730, 0x7731,
- 0x502c, 0x3030, 0x7732, 0x7733, 0x7734, 0x474a, 0x3e4f, 0x7737,
- 0x7736, 0x315e, 0x7735, 0x7738, 0x7739, 0x4e24, 0x484d, 0x3a2b,
- 0x6838, 0x6839, 0x683a, 0x3e42, 0x5274, 0x544f, 0x4958, 0x5233,
- 0x3625, 0x476a, 0x717c, 0x4f6e, 0x4b33, 0x506b, 0x676f, 0x4d67,
- 0x394b, 0x3659, 0x717d, 0x3064, 0x4b4c, 0x717e, 0x5424, 0x422d,
- 0x416c, 0x4644, 0x3e31, 0x7221, 0x3c55, 0x7222, 0x7223, 0x7224,
- 0x5243, 0x4635, 0x4d47, 0x7225, 0x5331, 0x3f45, 0x4c62, 0x7226,
- 0x7227, 0x5155, 0x366e, 0x7228, 0x7229, 0x355f, 0x722a, 0x722b,
- 0x327c, 0x722c, 0x722d, 0x4827, 0x3767, 0x6c29, 0x6c2a, 0x6c2b,
- 0x6c2c, 0x462e, 0x6c2d, 0x6c2e, 0x3749, 0x4a33, 0x6238, 0x774f,
- 0x7750, 0x324d, 0x7751, 0x7753, 0x7752, 0x623b, 0x3c22, 0x623c,
- 0x623d, 0x623e, 0x623f, 0x6240, 0x6241, 0x3739, 0x527b, 0x3d24,
- 0x4a4e, 0x3125, 0x4b47, 0x6242, 0x367c, 0x4844, 0x6243, 0x3d48,
- 0x317d, 0x6244, 0x3676, 0x6245, 0x4459, 0x6246, 0x4f5a, 0x395d,
- 0x6247, 0x4021, 0x6248, 0x3276, 0x6249, 0x4173, 0x624a, 0x624b,
- 0x4278, 0x624c, 0x624d, 0x624e, 0x4a57, 0x5838, 0x5965, 0x4f63,
- 0x7025, 0x5c30, 0x426d, 0x5426, 0x4d54, 0x5131, 0x335b, 0x477d,
- 0x3235, 0x423f, 0x6660, 0x4a3b, 0x6661, 0x6662, 0x3e54, 0x6663,
- 0x5724, 0x4d55, 0x6665, 0x3c5d, 0x6664, 0x6666, 0x6667, 0x426e,
- 0x3d3e, 0x6668, 0x4266, 0x3a27, 0x6669, 0x666a, 0x3352, 0x5169,
- 0x3f25, 0x666b, 0x466f, 0x666c, 0x666d, 0x666e, 0x462d, 0x666f,
- 0x4927, 0x6670, 0x6671, 0x6672, 0x6539, 0x6673, 0x6674, 0x4262,
- 0x6675, 0x6676, 0x5668, 0x6677, 0x6678, 0x3947, 0x773b, 0x773a,
- 0x773e, 0x773c, 0x3a21, 0x773f, 0x7740, 0x7742, 0x7741, 0x7744,
- 0x7743, 0x7745, 0x7746, 0x7747, 0x4b68, 0x385f, 0x7754, 0x7755,
- 0x7756, 0x7758, 0x775a, 0x7757, 0x775b, 0x7759, 0x5757, 0x775c,
- 0x775d, 0x775e, 0x775f, 0x7760, 0x5b4b, 0x582a, 0x6577, 0x396d,
- 0x3f7d, 0x3b6a, 0x7749, 0x4647, 0x7748, 0x774a, 0x774c, 0x774b,
- 0x774d, 0x4e3a, 0x774e, 0x4427, 0x5363, 0x764f, 0x4233, 0x7650,
- 0x7651, 0x7652, 0x7653, 0x7654, 0x7656, 0x312b, 0x7657, 0x7658,
- 0x7659, 0x765a, 0x765b, 0x765c, 0x765d, 0x765e, 0x4f4a, 0x765f,
- 0x7660, 0x7661, 0x7662, 0x7663, 0x7664, 0x4070, 0x7665, 0x7666,
- 0x7667, 0x7668, 0x7669, 0x766a, 0x766b, 0x766c, 0x766d, 0x766e,
- 0x766f, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x3e28, 0x7675,
- 0x7676, 0x7677, 0x7678, 0x487a, 0x7679, 0x767a, 0x767b, 0x767c,
- 0x767d, 0x767e, 0x7721, 0x7722, 0x7723, 0x7724, 0x7725, 0x7726,
- 0x7727, 0x7728, 0x316e, 0x7729, 0x772a, 0x772b, 0x772c, 0x772d,
- 0x415b, 0x772e, 0x772f, 0x4471, 0x702f, 0x3c26, 0x7030, 0x4379,
- 0x4538, 0x513b, 0x7031, 0x7032, 0x7033, 0x7034, 0x7035, 0x513c,
- 0x516c, 0x7037, 0x7036, 0x5427, 0x4d52, 0x7038, 0x703a, 0x7039,
- 0x703b, 0x703c, 0x386b, 0x703d, 0x3a68, 0x703e, 0x703f, 0x3e69,
- 0x7040, 0x366c, 0x7041, 0x7042, 0x7043, 0x7044, 0x4835, 0x7045,
- 0x7046, 0x7047, 0x4574, 0x7048, 0x7049, 0x704a, 0x773d, 0x704b,
- 0x704c, 0x704d, 0x704e, 0x704f, 0x3a57, 0x7050, 0x7051, 0x7052,
- 0x7053, 0x7054, 0x7055, 0x7056, 0x7058, 0x5325, 0x7057, 0x7059,
- 0x753a, 0x4239, 0x7764, 0x7765, 0x7766, 0x7767, 0x7768, 0x4234,
- 0x776a, 0x776b, 0x4273, 0x7470, 0x746f, 0x4269, 0x7761, 0x7762,
- 0x3b46, 0x5964, 0x4a72, 0x4068, 0x7024, 0x3a5a, 0x472d, 0x442c,
- 0x776c, 0x776d, 0x776e, 0x7770, 0x776f, 0x7771, 0x7774, 0x7773,
- 0x7772, 0x7775, 0x7776, 0x6d69, 0x6d6a, 0x6d6b, 0x763c, 0x763d,
- 0x763e, 0x3626, 0x583e, 0x3944, 0x583b, 0x5c31, 0x4a73, 0x7777,
- 0x7778, 0x7779, 0x777b, 0x777a, 0x3147, 0x777c, 0x777d, 0x777e,
- 0x466b, 0x6c34, 0x335d, 0x7633, 0x7634, 0x4164, 0x7635, 0x7636,
- 0x7637, 0x7638, 0x7639, 0x763a, 0x4823, 0x763b, 0x417a, 0x3928,
- 0x6d68, 0x396a, 0x595f, 0x2321, 0x2322, 0x2323, 0x2167, 0x2325,
- 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d,
- 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335,
- 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d,
- 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345,
- 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d,
- 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355,
- 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x235c, 0x235d,
- 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365,
- 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d,
- 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375,
- 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d,
- 0x212b, 0x2169, 0x216a, 0x237e, 0x2324,
-};
-
-static const Summary16 gb2312_uni2indx_page00[70] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0190 }, { 3, 0x0003 },
- { 5, 0x0000 }, { 5, 0x0080 }, { 6, 0x3703 }, { 13, 0x168c },
- /* 0x0100 */
- { 19, 0x0002 }, { 20, 0x0808 }, { 22, 0x0800 }, { 23, 0x0000 },
- { 23, 0x2000 }, { 24, 0x0000 }, { 24, 0x0800 }, { 25, 0x0000 },
- { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 },
- { 25, 0x4000 }, { 26, 0x1555 }, { 33, 0x0000 }, { 33, 0x0000 },
- /* 0x0200 */
- { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
- { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
- { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
- { 33, 0x0280 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
- /* 0x0300 */
- { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
- { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
- { 35, 0x0000 }, { 35, 0xfffe }, { 50, 0x03fb }, { 59, 0xfffe },
- { 74, 0x03fb }, { 83, 0x0000 }, { 83, 0x0000 }, { 83, 0x0000 },
- /* 0x0400 */
- { 83, 0x0002 }, { 84, 0xffff }, { 100, 0xffff }, { 116, 0xffff },
- { 132, 0xffff }, { 148, 0x0002 },
-};
-static const Summary16 gb2312_uni2indx_page20[101] = {
- /* 0x2000 */
- { 149, 0x0000 }, { 149, 0x3360 }, { 155, 0x0040 }, { 156, 0x080d },
- { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
- { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
- { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
- /* 0x2100 */
- { 160, 0x0008 }, { 161, 0x0040 }, { 162, 0x0000 }, { 162, 0x0000 },
- { 162, 0x0000 }, { 162, 0x0000 }, { 162, 0x0fff }, { 174, 0x0000 },
- { 174, 0x0000 }, { 174, 0x000f }, { 178, 0x0000 }, { 178, 0x0000 },
- { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 },
- /* 0x2200 */
- { 178, 0x8100 }, { 180, 0x6402 }, { 184, 0x4fa1 }, { 192, 0x20f0 },
- { 197, 0x1100 }, { 199, 0x0000 }, { 199, 0xc033 }, { 205, 0x0000 },
- { 205, 0x0000 }, { 205, 0x0200 }, { 206, 0x0020 }, { 207, 0x0000 },
- { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 },
- /* 0x2300 */
- { 207, 0x0000 }, { 207, 0x0004 }, { 208, 0x0000 }, { 208, 0x0000 },
- { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
- { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
- { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
- /* 0x2400 */
- { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
- { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x03ff }, { 218, 0xfff0 },
- { 230, 0xffff }, { 246, 0x0fff }, { 258, 0x0000 }, { 258, 0x0000 },
- { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 },
- /* 0x2500 */
- { 258, 0xffff }, { 274, 0xffff }, { 290, 0xffff }, { 306, 0xffff },
- { 322, 0x0fff }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0000 },
- { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0003 }, { 336, 0x000c },
- { 338, 0xc8c0 }, { 343, 0x0000 }, { 343, 0x0000 }, { 343, 0x0000 },
- /* 0x2600 */
- { 343, 0x0060 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 },
- { 345, 0x0005 },
-};
-static const Summary16 gb2312_uni2indx_page30[35] = {
- /* 0x3000 */
- { 347, 0xff2f }, { 360, 0x00fb }, { 367, 0x0000 }, { 367, 0x0000 },
- { 367, 0xfffe }, { 382, 0xffff }, { 398, 0xffff }, { 414, 0xffff },
- { 430, 0xffff }, { 446, 0x000f }, { 450, 0xfffe }, { 465, 0xffff },
- { 481, 0xffff }, { 497, 0xffff }, { 513, 0xffff }, { 529, 0x087f },
- /* 0x3100 */
- { 537, 0xffe0 }, { 548, 0xffff }, { 564, 0x03ff }, { 574, 0x0000 },
- { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
- { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
- { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
- /* 0x3200 */
- { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x03ff },
-};
-static const Summary16 gb2312_uni2indx_page4e[1263] = {
- /* 0x4e00 */
- { 584, 0x7f8b }, { 595, 0x7f7b }, { 608, 0x3db4 }, { 617, 0xef55 },
- { 628, 0xfba8 }, { 638, 0xf35d }, { 649, 0x0243 }, { 653, 0x400b },
- { 657, 0xfb40 }, { 665, 0x8d3e }, { 674, 0x7bf7 }, { 687, 0x8c2c },
- { 693, 0x6eff }, { 706, 0xe3fa }, { 717, 0x1d3a }, { 725, 0xa8ed },
- /* 0x4f00 */
- { 734, 0xe602 }, { 740, 0xcf83 }, { 749, 0x8cf5 }, { 758, 0x3555 },
- { 766, 0xe048 }, { 771, 0xffab }, { 784, 0x92b9 }, { 792, 0xd859 },
- { 800, 0xab18 }, { 807, 0x2892 }, { 812, 0xd7e9 }, { 823, 0x8020 },
- { 825, 0xc438 }, { 831, 0xf583 }, { 840, 0xe74a }, { 849, 0x450a },
- /* 0x5000 */
- { 854, 0xb000 }, { 857, 0x9714 }, { 864, 0x7762 }, { 873, 0x5400 },
- { 876, 0xd188 }, { 882, 0x1420 }, { 885, 0x1020 }, { 887, 0xc8c0 },
- { 892, 0x2121 }, { 896, 0x0000 }, { 896, 0x13a8 }, { 902, 0x0c04 },
- { 905, 0x8000 }, { 906, 0x0440 }, { 908, 0x70c0 }, { 913, 0x0828 },
- /* 0x5100 */
- { 916, 0x08c0 }, { 919, 0x0004 }, { 920, 0x0002 }, { 921, 0x8000 },
- { 922, 0x2b7b }, { 932, 0x1472 }, { 938, 0x7924 }, { 945, 0x3bfb },
- { 957, 0x3327 }, { 965, 0x1ae4 }, { 972, 0x9835 }, { 979, 0x38ef },
- { 989, 0x9ad1 }, { 997, 0x2802 }, { 1000, 0xa813 }, { 1006, 0xbf69 },
- /* 0x5200 */
- { 1017, 0x65cf }, { 1027, 0x2fc6 }, { 1036, 0x6b11 }, { 1043, 0xafc9 },
- { 1053, 0x340f }, { 1060, 0x5053 }, { 1066, 0x86a2 }, { 1072, 0xa004 },
- { 1075, 0x0106 }, { 1078, 0xe809 }, { 1084, 0x3f0f }, { 1094, 0xc00e },
- { 1099, 0x0a88 }, { 1103, 0x8145 }, { 1108, 0x0010 }, { 1109, 0xc601 },
- /* 0x5300 */
- { 1114, 0xa161 }, { 1120, 0x26e1 }, { 1127, 0x444b }, { 1133, 0xce00 },
- { 1138, 0xc7aa }, { 1147, 0xd4ee }, { 1157, 0xcadf }, { 1168, 0x85bb },
- { 1177, 0x3a74 }, { 1185, 0xa520 }, { 1190, 0x436c }, { 1197, 0x8840 },
- { 1200, 0x3f06 }, { 1208, 0x8bd2 }, { 1216, 0xff79 }, { 1229, 0x3bef },
- /* 0x5400 */
- { 1241, 0xf75a }, { 1252, 0xe8ef }, { 1263, 0xfbcb }, { 1275, 0x5b36 },
- { 1284, 0x0d49 }, { 1290, 0x1bfd }, { 1301, 0x0154 }, { 1305, 0x39ee },
- { 1315, 0xd855 }, { 1323, 0x2e75 }, { 1332, 0xbfd8 }, { 1343, 0xa91a },
- { 1350, 0xf3d7 }, { 1362, 0xf6bf }, { 1375, 0x67e0 }, { 1383, 0xb40c },
- /* 0x5500 */
- { 1389, 0x82c2 }, { 1394, 0x0813 }, { 1398, 0xd49d }, { 1407, 0xd08b },
- { 1414, 0x065a }, { 1420, 0x1061 }, { 1424, 0x74f2 }, { 1433, 0x59e0 },
- { 1440, 0x8f9f }, { 1451, 0xb312 }, { 1458, 0x0080 }, { 1459, 0x6aaa },
- { 1467, 0x3230 }, { 1472, 0xb05e }, { 1480, 0x9d7a }, { 1490, 0x60ac },
- /* 0x5600 */
- { 1496, 0xd303 }, { 1503, 0xc900 }, { 1507, 0x3098 }, { 1512, 0x8a56 },
- { 1519, 0x7000 }, { 1522, 0x1390 }, { 1527, 0x1f14 }, { 1534, 0x1842 },
- { 1538, 0xc060 }, { 1542, 0x0008 }, { 1543, 0x8008 }, { 1545, 0x1080 },
- { 1547, 0x0400 }, { 1548, 0xec90 }, { 1555, 0x2817 }, { 1561, 0xe633 },
- /* 0x5700 */
- { 1570, 0x0758 }, { 1576, 0x9000 }, { 1578, 0xf708 }, { 1586, 0x4e09 },
- { 1592, 0xf485 }, { 1600, 0xfc83 }, { 1609, 0xaf53 }, { 1619, 0x18c8 },
- { 1624, 0x187c }, { 1631, 0x080c }, { 1634, 0x6adf }, { 1645, 0x0114 },
- { 1648, 0xc80c }, { 1653, 0xa734 }, { 1661, 0xa011 }, { 1665, 0x2710 },
- /* 0x5800 */
- { 1670, 0x28c5 }, { 1676, 0x4222 }, { 1680, 0x0413 }, { 1684, 0x0021 },
- { 1686, 0x3010 }, { 1689, 0x4112 }, { 1693, 0x1820 }, { 1696, 0x4000 },
- { 1697, 0x022b }, { 1702, 0xc60c }, { 1708, 0x0300 }, { 1710, 0x1000 },
- { 1711, 0x0022 }, { 1713, 0x0022 }, { 1715, 0x5810 }, { 1719, 0x0249 },
- /* 0x5900 */
- { 1723, 0xa094 }, { 1728, 0x9670 }, { 1735, 0xeeb0 }, { 1744, 0x1792 },
- { 1751, 0xcb96 }, { 1760, 0x05f2 }, { 1767, 0x0025 }, { 1770, 0x2358 },
- { 1776, 0x25de }, { 1785, 0x42cc }, { 1791, 0xcf38 }, { 1800, 0x4a04 },
- { 1804, 0x0c40 }, { 1807, 0x359f }, { 1817, 0x1128 }, { 1821, 0x8a00 },
- /* 0x5a00 */
- { 1824, 0x13fa }, { 1833, 0x910a }, { 1838, 0x0229 }, { 1842, 0x1056 },
- { 1847, 0x0641 }, { 1851, 0x0420 }, { 1853, 0x0484 }, { 1856, 0x84f0 },
- { 1862, 0x0000 }, { 1862, 0x0c04 }, { 1865, 0x0400 }, { 1866, 0x412c },
- { 1871, 0x1206 }, { 1875, 0x1154 }, { 1880, 0x0a4b }, { 1886, 0x0002 },
- /* 0x5b00 */
- { 1887, 0x0200 }, { 1888, 0x00c0 }, { 1890, 0x0000 }, { 1890, 0x0094 },
- { 1893, 0x0001 }, { 1894, 0xbfbb }, { 1907, 0x167c }, { 1915, 0x242b },
- { 1921, 0x9bbb }, { 1932, 0x7fa8 }, { 1942, 0x0c7f }, { 1951, 0xe379 },
- { 1961, 0x10f4 }, { 1967, 0xe00d }, { 1973, 0x4132 }, { 1978, 0x9f01 },
- /* 0x5c00 */
- { 1985, 0x8652 }, { 1991, 0x3572 }, { 1999, 0x10b4 }, { 2004, 0xff12 },
- { 2014, 0xcf27 }, { 2024, 0x4223 }, { 2029, 0xc06b }, { 2036, 0x8602 },
- { 2040, 0x3106 }, { 2045, 0x1fd3 }, { 2055, 0x3a0c }, { 2061, 0xa1aa },
- { 2068, 0x0812 }, { 2071, 0x0204 }, { 2073, 0x2572 }, { 2080, 0x0801 },
- /* 0x5d00 */
- { 2082, 0x40cc }, { 2087, 0x4850 }, { 2091, 0x62d0 }, { 2097, 0x6010 },
- { 2100, 0x1c80 }, { 2104, 0x2900 }, { 2107, 0x9a00 }, { 2111, 0x0010 },
- { 2112, 0x0004 }, { 2113, 0x2200 }, { 2115, 0x0000 }, { 2115, 0x0080 },
- { 2116, 0x2020 }, { 2118, 0x6800 }, { 2121, 0xcbe6 }, { 2131, 0x609e },
- /* 0x5e00 */
- { 2138, 0x916e }, { 2146, 0x3f73 }, { 2157, 0x60c0 }, { 2161, 0x3982 },
- { 2167, 0x1034 }, { 2171, 0x4830 }, { 2175, 0x0006 }, { 2177, 0xbd5c },
- { 2187, 0x8cd1 }, { 2194, 0xd6fb }, { 2206, 0x20e1 }, { 2211, 0x43e8 },
- { 2218, 0x0600 }, { 2220, 0x084e }, { 2225, 0x0500 }, { 2227, 0xc4d0 },
- /* 0x5f00 */
- { 2233, 0x8d1f }, { 2242, 0x89aa }, { 2249, 0xa6e1 }, { 2257, 0x1602 },
- { 2261, 0x0001 }, { 2262, 0x21ed }, { 2270, 0x3656 }, { 2278, 0x1a8b },
- { 2285, 0x1fb7 }, { 2296, 0x13a5 }, { 2303, 0x6502 }, { 2308, 0x30a0 },
- { 2312, 0xb278 }, { 2320, 0x23c7 }, { 2328, 0x6c93 }, { 2336, 0xe922 },
- /* 0x6000 */
- { 2343, 0xe47f }, { 2354, 0x3a74 }, { 2362, 0x8fe3 }, { 2372, 0x9820 },
- { 2376, 0x280e }, { 2381, 0x2625 }, { 2387, 0xbf9c }, { 2398, 0xbf49 },
- { 2408, 0x3218 }, { 2413, 0xac54 }, { 2420, 0xb949 }, { 2428, 0x1916 },
- { 2434, 0x0c60 }, { 2438, 0xb522 }, { 2445, 0xfbc1 }, { 2455, 0x0659 },
- /* 0x6100 */
- { 2461, 0xe343 }, { 2469, 0x8420 }, { 2472, 0x08d9 }, { 2478, 0x8000 },
- { 2479, 0x5500 }, { 2483, 0x2022 }, { 2486, 0x0184 }, { 2489, 0x00a1 },
- { 2492, 0x4800 }, { 2494, 0x2010 }, { 2496, 0x1380 }, { 2500, 0x4080 },
- { 2502, 0x0d04 }, { 2506, 0x0016 }, { 2509, 0x0040 }, { 2510, 0x8020 },
- /* 0x6200 */
- { 2512, 0xfd40 }, { 2520, 0x8de7 }, { 2530, 0x5436 }, { 2537, 0xe098 },
- { 2543, 0x7b8b }, { 2553, 0x091e }, { 2559, 0xfec8 }, { 2569, 0xd249 },
- { 2576, 0x0611 }, { 2580, 0x8dee }, { 2590, 0x1937 }, { 2598, 0xba22 },
- { 2605, 0x77f4 }, { 2616, 0x9fdd }, { 2628, 0xf3ec }, { 2639, 0xf0da },
- /* 0x6300 */
- { 2648, 0x4386 }, { 2654, 0xec42 }, { 2661, 0x8d3f }, { 2671, 0x2604 },
- { 2675, 0xfa6c }, { 2685, 0xc021 }, { 2689, 0x628e }, { 2696, 0x0cc2 },
- { 2701, 0xd785 }, { 2710, 0x0145 }, { 2714, 0x77ad }, { 2725, 0x5599 },
- { 2733, 0xe250 }, { 2739, 0x4045 }, { 2743, 0x260b }, { 2749, 0xa154 },
- /* 0x6400 */
- { 2755, 0x9827 }, { 2762, 0x5819 }, { 2768, 0x3443 }, { 2774, 0xa410 },
- { 2778, 0x05f2 }, { 2785, 0x4114 }, { 2789, 0x2280 }, { 2792, 0x0700 },
- { 2795, 0x00b4 }, { 2799, 0x4266 }, { 2805, 0x7210 }, { 2810, 0x15a1 },
- { 2816, 0x6025 }, { 2821, 0x4185 }, { 2826, 0x0054 }, { 2829, 0x0000 },
- /* 0x6500 */
- { 2829, 0x0201 }, { 2831, 0x0104 }, { 2833, 0xc820 }, { 2837, 0xcb70 },
- { 2845, 0x9320 }, { 2850, 0x6a62 }, { 2857, 0x184c }, { 2862, 0x0095 },
- { 2866, 0x1880 }, { 2869, 0x9a8b }, { 2877, 0xaab2 }, { 2885, 0x3201 },
- { 2889, 0xd87a }, { 2898, 0x00c4 }, { 2901, 0xf3e5 }, { 2912, 0x04c3 },
- /* 0x6600 */
- { 2917, 0xd44d }, { 2925, 0xa238 }, { 2931, 0xa1a1 }, { 2937, 0x5072 },
- { 2943, 0x980a }, { 2948, 0x84fc }, { 2956, 0xc152 }, { 2962, 0x44d1 },
- { 2968, 0x1094 }, { 2972, 0x20c2 }, { 2976, 0x4180 }, { 2979, 0x4210 },
- { 2982, 0x0000 }, { 2982, 0x3a00 }, { 2986, 0x0240 }, { 2988, 0xd29d },
- /* 0x6700 */
- { 2997, 0x2f01 }, { 3003, 0xa8b1 }, { 3010, 0xbd40 }, { 3017, 0x2432 },
- { 3022, 0xd34d }, { 3031, 0xd04b }, { 3038, 0xa723 }, { 3046, 0xd0ad },
- { 3054, 0x0a92 }, { 3059, 0x75a1 }, { 3067, 0xadac }, { 3076, 0x01e9 },
- { 3082, 0x801a }, { 3086, 0x771f }, { 3097, 0x9225 }, { 3103, 0xa01b },
- /* 0x6800 */
- { 3109, 0xdfa1 }, { 3119, 0x20ca }, { 3124, 0x0602 }, { 3127, 0x738c },
- { 3135, 0x577f }, { 3147, 0x003b }, { 3152, 0x0bff }, { 3163, 0x00d0 },
- { 3166, 0x806a }, { 3171, 0x0088 }, { 3173, 0xa1c4 }, { 3179, 0x0029 },
- { 3182, 0x2a05 }, { 3187, 0x0524 }, { 3191, 0x4009 }, { 3194, 0x1623 },
- /* 0x6900 */
- { 3200, 0x6822 }, { 3205, 0x8005 }, { 3208, 0x2011 }, { 3211, 0xa211 },
- { 3216, 0x0004 }, { 3217, 0x6490 }, { 3222, 0x4849 }, { 3227, 0x1382 },
- { 3232, 0x23d5 }, { 3240, 0x1930 }, { 3245, 0x2980 }, { 3249, 0x0892 },
- { 3253, 0x5402 }, { 3257, 0x8811 }, { 3261, 0x2001 }, { 3263, 0xa004 },
- /* 0x6a00 */
- { 3266, 0x0400 }, { 3267, 0x8180 }, { 3270, 0x8502 }, { 3274, 0x6022 },
- { 3278, 0x0090 }, { 3280, 0x0b01 }, { 3284, 0x0022 }, { 3286, 0x1202 },
- { 3289, 0x4011 }, { 3292, 0x0083 }, { 3295, 0x1a01 }, { 3299, 0x0000 },
- { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 },
- /* 0x6b00 */
- { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x009f }, { 3305, 0x4684 },
- { 3310, 0x12c8 }, { 3315, 0x0200 }, { 3316, 0x04fc }, { 3323, 0x1a00 },
- { 3326, 0x2ede }, { 3336, 0x0c4c }, { 3341, 0x0402 }, { 3343, 0x80b8 },
- { 3348, 0xa826 }, { 3354, 0x0afc }, { 3362, 0x8c02 }, { 3366, 0x2228 },
- /* 0x6c00 */
- { 3370, 0xa0e0 }, { 3375, 0x8f7b }, { 3386, 0xc7d6 }, { 3396, 0x2135 },
- { 3402, 0x06c7 }, { 3409, 0xf8b1 }, { 3418, 0x0713 }, { 3424, 0x6255 },
- { 3431, 0x936e }, { 3440, 0x8a19 }, { 3446, 0x6efa }, { 3457, 0xfb0e },
- { 3467, 0x1630 }, { 3472, 0x48f9 }, { 3480, 0xcd2f }, { 3490, 0x7deb },
- /* 0x6d00 */
- { 3502, 0x5892 }, { 3508, 0x4e84 }, { 3514, 0x4ca0 }, { 3519, 0x7a2e },
- { 3528, 0xedea }, { 3539, 0x561e }, { 3547, 0xc649 }, { 3554, 0x1190 },
- { 3558, 0x5324 }, { 3564, 0xe83a }, { 3572, 0xcfdb }, { 3584, 0x8124 },
- { 3588, 0x18f1 }, { 3595, 0x6342 }, { 3601, 0x5853 }, { 3608, 0x1a8a },
- /* 0x6e00 */
- { 3614, 0x7420 }, { 3619, 0x24d3 }, { 3626, 0xaa3b }, { 3635, 0x0514 },
- { 3639, 0x6018 }, { 3643, 0x8958 }, { 3649, 0x4800 }, { 3651, 0xc000 },
- { 3653, 0x8268 }, { 3658, 0x9101 }, { 3662, 0x84a4 }, { 3667, 0x2cd6 },
- { 3675, 0x8886 }, { 3680, 0xc4ba }, { 3688, 0x0377 }, { 3696, 0x0210 },
- /* 0x6f00 */
- { 3698, 0x8244 }, { 3702, 0x0038 }, { 3705, 0xae11 }, { 3712, 0x404a },
- { 3716, 0x28c0 }, { 3720, 0x5100 }, { 3723, 0x6044 }, { 3727, 0x1514 },
- { 3732, 0x7310 }, { 3738, 0x1000 }, { 3739, 0x0082 }, { 3741, 0x0248 },
- { 3744, 0x0205 }, { 3747, 0x4006 }, { 3750, 0xc003 }, { 3754, 0x0000 },
- /* 0x7000 */
- { 3754, 0x0000 }, { 3754, 0x0c02 }, { 3757, 0x0008 }, { 3758, 0x0220 },
- { 3760, 0x9000 }, { 3762, 0x4000 }, { 3763, 0xb800 }, { 3767, 0xd161 },
- { 3774, 0x4621 }, { 3779, 0x3274 }, { 3786, 0xf800 }, { 3791, 0x3b8a },
- { 3799, 0x050f }, { 3805, 0x8b00 }, { 3809, 0xbbd0 }, { 3818, 0x2280 },
- /* 0x7100 */
- { 3821, 0x0600 }, { 3823, 0x0769 }, { 3830, 0x8040 }, { 3832, 0x0043 },
- { 3835, 0x5420 }, { 3839, 0x5000 }, { 3841, 0x41d0 }, { 3846, 0x250c },
- { 3851, 0x8410 }, { 3854, 0x8310 }, { 3858, 0x1101 }, { 3861, 0x0228 },
- { 3864, 0x4008 }, { 3866, 0x0030 }, { 3868, 0x40a1 }, { 3872, 0x0200 },
- /* 0x7200 */
- { 3873, 0x0040 }, { 3874, 0x2000 }, { 3875, 0x1500 }, { 3878, 0xabe3 },
- { 3888, 0x3180 }, { 3892, 0xaa44 }, { 3898, 0xc2c6 }, { 3905, 0xc624 },
- { 3911, 0xac13 }, { 3918, 0x8004 }, { 3920, 0xb000 }, { 3923, 0x03d1 },
- { 3929, 0x611e }, { 3936, 0x4285 }, { 3941, 0xf303 }, { 3949, 0x1d9f },
- /* 0x7300 */
- { 3959, 0x440a }, { 3963, 0x78e8 }, { 3971, 0x5e26 }, { 3979, 0xc392 },
- { 3986, 0x2000 }, { 3987, 0x0085 }, { 3990, 0xb001 }, { 3994, 0x4000 },
- { 3995, 0x4a90 }, { 4000, 0x8842 }, { 4004, 0xca04 }, { 4009, 0x0c8d },
- { 4015, 0xa705 }, { 4022, 0x4203 }, { 4026, 0x22a1 }, { 4031, 0x0004 },
- /* 0x7400 */
- { 4032, 0x8668 }, { 4038, 0x0c01 }, { 4041, 0x5564 }, { 4048, 0x1079 },
- { 4054, 0x0002 }, { 4055, 0xdea0 }, { 4063, 0x2000 }, { 4064, 0x40c1 },
- { 4068, 0x488b }, { 4074, 0x5001 }, { 4077, 0x0380 }, { 4080, 0x0400 },
- { 4081, 0x0000 }, { 4081, 0x5004 }, { 4084, 0xc05d }, { 4091, 0x80d0 },
- /* 0x7500 */
- { 4095, 0xa010 }, { 4098, 0x970a }, { 4105, 0xbb20 }, { 4112, 0x4daf },
- { 4122, 0xd921 }, { 4129, 0x1e10 }, { 4134, 0x0460 }, { 4137, 0x8314 },
- { 4142, 0x8848 }, { 4146, 0xa6d6 }, { 4155, 0xd83b }, { 4164, 0x733f },
- { 4175, 0x27bc }, { 4184, 0x4974 }, { 4191, 0x0ddc }, { 4199, 0x9213 },
- /* 0x7600 */
- { 4205, 0x142b }, { 4211, 0x8ba1 }, { 4218, 0x2e75 }, { 4227, 0xd139 },
- { 4235, 0x3009 }, { 4239, 0x5050 }, { 4243, 0x8808 }, { 4246, 0x6900 },
- { 4250, 0x49d4 }, { 4257, 0x024a }, { 4261, 0x4010 }, { 4263, 0x8016 },
- { 4267, 0xe564 }, { 4275, 0x89d7 }, { 4284, 0xc020 }, { 4287, 0x5316 },
- /* 0x7700 */
- { 4294, 0x2b92 }, { 4301, 0x8600 }, { 4304, 0xa345 }, { 4311, 0x15e0 },
- { 4317, 0x008b }, { 4321, 0x0c03 }, { 4325, 0x196e }, { 4333, 0xe200 },
- { 4337, 0x7031 }, { 4343, 0x8006 }, { 4346, 0x16a5 }, { 4353, 0xa829 },
- { 4359, 0x2000 }, { 4360, 0x1880 }, { 4363, 0x7aac }, { 4372, 0xe148 },
- /* 0x7800 */
- { 4378, 0x3207 }, { 4384, 0xb5d6 }, { 4394, 0x32e8 }, { 4401, 0x5f91 },
- { 4410, 0x50a1 }, { 4415, 0x20e5 }, { 4421, 0x7c00 }, { 4426, 0x1080 },
- { 4428, 0x7280 }, { 4433, 0x9d8a }, { 4441, 0x00aa }, { 4445, 0x421f },
- { 4452, 0x0e22 }, { 4457, 0x0231 }, { 4461, 0x1100 }, { 4463, 0x0494 },
- /* 0x7900 */
- { 4467, 0x0022 }, { 4469, 0x4008 }, { 4471, 0x0010 }, { 4472, 0x5c10 },
- { 4477, 0x0343 }, { 4482, 0xfcc8 }, { 4491, 0xa1a5 }, { 4498, 0x0580 },
- { 4501, 0x8433 }, { 4507, 0x0400 }, { 4508, 0x0080 }, { 4509, 0x6e08 },
- { 4515, 0x2a4b }, { 4522, 0x8126 }, { 4527, 0xaad8 }, { 4535, 0x2901 },
- /* 0x7a00 */
- { 4539, 0x684d }, { 4546, 0x4490 }, { 4550, 0x0009 }, { 4552, 0xba88 },
- { 4559, 0x0040 }, { 4560, 0x0082 }, { 4562, 0x0000 }, { 4562, 0x87d1 },
- { 4570, 0x215b }, { 4577, 0xb1e6 }, { 4586, 0x3161 }, { 4592, 0x8008 },
- { 4594, 0x0800 }, { 4595, 0xc240 }, { 4599, 0xa069 }, { 4605, 0xa600 },
- /* 0x7b00 */
- { 4609, 0x8d58 }, { 4616, 0x4a32 }, { 4622, 0x5d71 }, { 4631, 0x550a },
- { 4637, 0x9aa0 }, { 4643, 0x2d57 }, { 4652, 0x4005 }, { 4655, 0x4aa6 },
- { 4662, 0x2021 }, { 4665, 0x30b1 }, { 4671, 0x3fc6 }, { 4681, 0x0112 },
- { 4684, 0x10c2 }, { 4688, 0x260a }, { 4693, 0x4462 }, { 4698, 0x5082 },
- /* 0x7c00 */
- { 4702, 0x9880 }, { 4706, 0x8040 }, { 4708, 0x04c0 }, { 4711, 0x8100 },
- { 4713, 0x2003 }, { 4716, 0x0000 }, { 4716, 0x0000 }, { 4716, 0x3818 },
- { 4721, 0x0200 }, { 4722, 0xf1a6 }, { 4731, 0x4434 }, { 4736, 0x720e },
- { 4743, 0x35a2 }, { 4750, 0x92e0 }, { 4756, 0x8101 }, { 4759, 0x0900 },
- /* 0x7d00 */
- { 4761, 0x0400 }, { 4762, 0x0000 }, { 4762, 0x8885 }, { 4767, 0x0000 },
- { 4767, 0x0000 }, { 4767, 0x0000 }, { 4767, 0x4000 }, { 4768, 0x0080 },
- { 4769, 0x0000 }, { 4769, 0x0000 }, { 4769, 0x4040 }, { 4771, 0x0000 },
- { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 },
- /* 0x7e00 */
- { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0800 },
- { 4772, 0x0082 }, { 4774, 0x0000 }, { 4774, 0x0000 }, { 4774, 0x0000 },
- { 4774, 0x0004 }, { 4775, 0x8800 }, { 4777, 0xbfff }, { 4792, 0xe7ef },
- { 4805, 0xffff }, { 4821, 0xffbf }, { 4836, 0xefef }, { 4850, 0xfdff },
- /* 0x7f00 */
- { 4865, 0xfbff }, { 4880, 0xbffe }, { 4894, 0xffff }, { 4910, 0x057f },
- { 4919, 0x0034 }, { 4922, 0x85b3 }, { 4930, 0x4706 }, { 4936, 0x4216 },
- { 4941, 0x5402 }, { 4945, 0xe410 }, { 4950, 0x8092 }, { 4954, 0xb305 },
- { 4961, 0x5422 }, { 4966, 0x8130 }, { 4970, 0x4263 }, { 4976, 0x180b },
- /* 0x8000 */
- { 4981, 0x387b }, { 4990, 0x13f5 }, { 4999, 0x07e5 }, { 5007, 0xa9ea },
- { 5016, 0x3c4c }, { 5023, 0x0514 }, { 5027, 0x0600 }, { 5029, 0x8002 },
- { 5031, 0x1ad9 }, { 5039, 0xbd48 }, { 5047, 0xee37 }, { 5058, 0xf496 },
- { 5067, 0x705f }, { 5076, 0x7ec0 }, { 5084, 0xbfb2 }, { 5095, 0x355f },
- /* 0x8100 */
- { 5105, 0xe644 }, { 5112, 0x455f }, { 5121, 0x9000 }, { 5123, 0x4146 },
- { 5128, 0x1d40 }, { 5133, 0x063b }, { 5140, 0x62a1 }, { 5146, 0xfe13 },
- { 5156, 0x8505 }, { 5161, 0x3902 }, { 5166, 0x0548 }, { 5170, 0x0c08 },
- { 5173, 0x144f }, { 5180, 0x0000 }, { 5180, 0x3488 }, { 5185, 0x5818 },
- /* 0x8200 */
- { 5190, 0x3077 }, { 5198, 0xd815 }, { 5205, 0xbd0e }, { 5214, 0x4bfb },
- { 5225, 0x8a90 }, { 5230, 0x8500 }, { 5233, 0xc100 }, { 5236, 0xe61d },
- { 5245, 0xed14 }, { 5253, 0xb386 }, { 5261, 0xff72 }, { 5273, 0x639b },
- { 5282, 0xfd92 }, { 5292, 0xd9be }, { 5303, 0x887b }, { 5311, 0x0a92 },
- /* 0x8300 */
- { 5316, 0xd3fe }, { 5328, 0x1cb2 }, { 5335, 0xb980 }, { 5341, 0x177a },
- { 5350, 0x82c9 }, { 5356, 0xdc17 }, { 5365, 0xfffb }, { 5380, 0x3980 },
- { 5385, 0x4260 }, { 5389, 0x590c }, { 5395, 0x0f01 }, { 5400, 0x37df },
- { 5412, 0x94a3 }, { 5419, 0xb150 }, { 5425, 0x0623 }, { 5430, 0x2307 },
- /* 0x8400 */
- { 5436, 0xf85a }, { 5445, 0x3102 }, { 5449, 0x01f0 }, { 5454, 0x3102 },
- { 5458, 0x0040 }, { 5459, 0x1e82 }, { 5465, 0x3a0a }, { 5471, 0x056a },
- { 5477, 0x5b84 }, { 5484, 0x1280 }, { 5487, 0x8002 }, { 5489, 0xa714 },
- { 5496, 0x2612 }, { 5501, 0xa04b }, { 5507, 0x1069 }, { 5512, 0x9001 },
- /* 0x8500 */
- { 5515, 0x1000 }, { 5516, 0x848a }, { 5521, 0x1802 }, { 5524, 0x3f80 },
- { 5531, 0x0708 }, { 5535, 0x4240 }, { 5538, 0x0110 }, { 5540, 0x4e14 },
- { 5546, 0x80b0 }, { 5550, 0x1800 }, { 5552, 0xc510 }, { 5557, 0x0281 },
- { 5560, 0x8202 }, { 5563, 0x1029 }, { 5567, 0x0210 }, { 5569, 0x8800 },
- /* 0x8600 */
- { 5571, 0x0020 }, { 5572, 0x0042 }, { 5574, 0x0280 }, { 5576, 0x1100 },
- { 5578, 0xe000 }, { 5581, 0x4413 }, { 5586, 0x5804 }, { 5590, 0xfe02 },
- { 5598, 0x3c07 }, { 5605, 0x3028 }, { 5609, 0x9798 }, { 5617, 0x0473 },
- { 5623, 0xced1 }, { 5632, 0xcb13 }, { 5640, 0x6210 }, { 5644, 0x431f },
- /* 0x8700 */
- { 5652, 0x278d }, { 5660, 0x55ac }, { 5668, 0x422e }, { 5674, 0xc892 },
- { 5680, 0x5380 }, { 5685, 0x0288 }, { 5688, 0x4039 }, { 5693, 0x7851 },
- { 5700, 0x292c }, { 5706, 0x8088 }, { 5709, 0xb900 }, { 5714, 0x2428 },
- { 5718, 0x0c41 }, { 5722, 0x080e }, { 5726, 0x4421 }, { 5730, 0x4200 },
- /* 0x8800 */
- { 5732, 0x0408 }, { 5734, 0x0868 }, { 5738, 0x0006 }, { 5740, 0x1204 },
- { 5743, 0x3031 }, { 5748, 0x0290 }, { 5751, 0x5b3e }, { 5761, 0xe085 },
- { 5767, 0x2936 }, { 5774, 0x1044 }, { 5777, 0x2814 }, { 5781, 0x1082 },
- { 5784, 0x4266 }, { 5790, 0x8334 }, { 5796, 0x013c }, { 5801, 0x531b },
- /* 0x8900 */
- { 5809, 0x0404 }, { 5811, 0x0e0d }, { 5817, 0x0c22 }, { 5821, 0x0051 },
- { 5824, 0x0012 }, { 5826, 0xc000 }, { 5828, 0x0040 }, { 5829, 0x8800 },
- { 5831, 0x004a }, { 5834, 0x0000 }, { 5834, 0x0000 }, { 5834, 0x0000 },
- { 5834, 0xdff6 }, { 5847, 0x5447 }, { 5854, 0x8868 }, { 5859, 0x0008 },
- /* 0x8a00 */
- { 5860, 0x0081 }, { 5862, 0x0000 }, { 5862, 0x0000 }, { 5862, 0x4000 },
- { 5863, 0x0100 }, { 5864, 0x0000 }, { 5864, 0x0000 }, { 5864, 0x0200 },
- { 5865, 0x0600 }, { 5867, 0x0008 }, { 5868, 0x0000 }, { 5868, 0x0000 },
- { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 },
- /* 0x8b00 */
- { 5868, 0x0080 }, { 5869, 0x0000 }, { 5869, 0x0040 }, { 5870, 0x0000 },
- { 5870, 0x0000 }, { 5870, 0x0000 }, { 5870, 0x1040 }, { 5872, 0x0000 },
- { 5872, 0x0000 }, { 5872, 0x0000 }, { 5872, 0xefff }, { 5887, 0xf7fd },
- { 5901, 0xff7f }, { 5916, 0xfffe }, { 5931, 0xfbff }, { 5946, 0xffff },
- /* 0x8c00 */
- { 5962, 0xfdff }, { 5977, 0xbfff }, { 5992, 0xffff }, { 6008, 0x00ff },
- { 6016, 0x12c2 }, { 6021, 0x0420 }, { 6023, 0x0c06 }, { 6027, 0x0708 },
- { 6031, 0x1624 }, { 6036, 0x0110 }, { 6038, 0x0000 }, { 6038, 0x0000 },
- { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 },
- /* 0x8d00 */
- { 6038, 0x0000 }, { 6038, 0xe000 }, { 6041, 0xfffe }, { 6056, 0xffff },
- { 6072, 0xffff }, { 6088, 0x7f79 }, { 6100, 0x28df }, { 6109, 0x00f9 },
- { 6115, 0x0c32 }, { 6120, 0x8012 }, { 6123, 0x0008 }, { 6124, 0xd53a },
- { 6133, 0xd858 }, { 6140, 0xecc2 }, { 6148, 0x9d18 }, { 6155, 0x2fa8 },
- /* 0x8e00 */
- { 6163, 0x9620 }, { 6168, 0xe010 }, { 6172, 0xd60c }, { 6179, 0x2622 },
- { 6184, 0x0f97 }, { 6193, 0x0206 }, { 6196, 0xb240 }, { 6201, 0x9055 },
- { 6207, 0x80a2 }, { 6211, 0x5011 }, { 6215, 0x9800 }, { 6218, 0x0404 },
- { 6220, 0x4000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 },
- /* 0x8f00 */
- { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 },
- { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0xfbc0 }, { 6230, 0xffff },
- { 6246, 0xeffe }, { 6260, 0xdffb }, { 6274, 0x0b08 }, { 6278, 0x6243 },
- { 6284, 0x41b6 }, { 6291, 0xfb3b }, { 6303, 0x6f74 }, { 6313, 0x2389 },
- /* 0x9000 */
- { 6319, 0xae7f }, { 6331, 0xecd7 }, { 6342, 0xe047 }, { 6349, 0x5960 },
- { 6355, 0xa096 }, { 6361, 0x098f }, { 6368, 0x612c }, { 6374, 0xa030 },
- { 6378, 0x090d }, { 6383, 0x2aaa }, { 6390, 0xd44e }, { 6398, 0x4f7b },
- { 6409, 0xc4b2 }, { 6416, 0x388b }, { 6423, 0xa9c6 }, { 6431, 0x6110 },
- /* 0x9100 */
- { 6435, 0x0014 }, { 6437, 0x4200 }, { 6439, 0x800c }, { 6442, 0x0202 },
- { 6444, 0xfe48 }, { 6453, 0x6485 }, { 6459, 0xd63e }, { 6469, 0xe3f7 },
- { 6481, 0x3aa0 }, { 6487, 0x0c07 }, { 6492, 0xe40c }, { 6498, 0x0430 },
- { 6501, 0xf680 }, { 6508, 0x1002 }, { 6510, 0x0000 }, { 6510, 0x0000 },
- /* 0x9200 */
- { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 },
- { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0010 },
- { 6511, 0x4000 }, { 6512, 0x0000 }, { 6512, 0x4000 }, { 6513, 0x0000 },
- { 6513, 0x0100 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 },
- /* 0x9300 */
- { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x4000 },
- { 6515, 0x0000 }, { 6515, 0x0000 }, { 6515, 0x0400 }, { 6516, 0x0000 },
- { 6516, 0x8000 }, { 6517, 0x0000 }, { 6517, 0x0000 }, { 6517, 0x0000 },
- { 6517, 0x0400 }, { 6518, 0x0040 }, { 6519, 0x0000 }, { 6519, 0x0000 },
- /* 0x9400 */
- { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x4000 },
- { 6520, 0x0000 }, { 6520, 0x0000 }, { 6520, 0x0800 }, { 6521, 0x0000 },
- { 6521, 0xffe0 }, { 6532, 0xfebd }, { 6545, 0xffff }, { 6561, 0xffff },
- { 6577, 0x7f7f }, { 6591, 0xfbe7 }, { 6604, 0xffbf }, { 6619, 0xf7ff },
- /* 0x9500 */
- { 6634, 0xffff }, { 6650, 0xefff }, { 6665, 0xff7e }, { 6679, 0xdff7 },
- { 6693, 0xf6f7 }, { 6706, 0xfbdf }, { 6720, 0xbffe }, { 6734, 0x804f },
- { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 },
- { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0xef00 }, { 6747, 0x7fff },
- /* 0x9600 */
- { 6762, 0xff7f }, { 6777, 0xb6f7 }, { 6789, 0x4406 }, { 6793, 0xb87e },
- { 6803, 0x3bf5 }, { 6814, 0x8831 }, { 6819, 0x1796 }, { 6827, 0x00f4 },
- { 6832, 0xa960 }, { 6838, 0x1391 }, { 6844, 0x0080 }, { 6845, 0x7249 },
- { 6852, 0xf2f3 }, { 6863, 0x0024 }, { 6865, 0x8701 }, { 6870, 0x42c8 },
- /* 0x9700 */
- { 6875, 0xe3d3 }, { 6885, 0x5048 }, { 6889, 0x2400 }, { 6891, 0x4305 },
- { 6896, 0x0000 }, { 6896, 0x4a4c }, { 6902, 0x0227 }, { 6907, 0x1058 },
- { 6911, 0x2820 }, { 6914, 0x0116 }, { 6918, 0xa809 }, { 6923, 0x0014 },
- { 6925, 0x0000 }, { 6925, 0x0000 }, { 6925, 0x3ec0 }, { 6932, 0x0068 },
- /* 0x9800 */
- { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 },
- { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0xffe0 },
- { 6946, 0xb7ff }, { 6960, 0xfddb }, { 6973, 0x00f7 }, { 6980, 0x0000 },
- { 6980, 0x4000 }, { 6981, 0xc72e }, { 6990, 0x0180 }, { 6992, 0x0000 },
- /* 0x9900 */
- { 6992, 0x2000 }, { 6993, 0x0001 }, { 6994, 0x4000 }, { 6995, 0x0000 },
- { 6995, 0x0000 }, { 6995, 0x0030 }, { 6997, 0xffa8 }, { 7008, 0xb4f7 },
- { 7019, 0xadf3 }, { 7030, 0x03ff }, { 7040, 0x0120 }, { 7042, 0x0000 },
- { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 },
- /* 0x9a00 */
- { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 },
- { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0xf000 }, { 7046, 0xfffb },
- { 7061, 0x9df7 }, { 7073, 0xfdcf }, { 7086, 0x01bf }, { 7094, 0x15c3 },
- { 7101, 0x1827 }, { 7107, 0x810a }, { 7111, 0xa842 }, { 7116, 0x0a00 },
- /* 0x9b00 */
- { 7118, 0x8108 }, { 7121, 0x8008 }, { 7123, 0x8008 }, { 7125, 0x1804 },
- { 7128, 0xa3be }, { 7138, 0x0012 }, { 7140, 0x0000 }, { 7140, 0x0000 },
- { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
- { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
- /* 0x9c00 */
- { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
- { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x9000 },
- { 7142, 0x69e6 }, { 7151, 0xdc37 }, { 7161, 0x6bff }, { 7174, 0x3dff },
- { 7187, 0xfcf8 }, { 7198, 0xf3f9 }, { 7210, 0x0004 },
-};
-static const Summary16 gb2312_uni2indx_page9e[27] = {
- /* 0x9e00 */
- { 7211, 0x0000 }, { 7211, 0x8000 }, { 7212, 0xbf6f }, { 7225, 0xe7ee },
- { 7237, 0xdffe }, { 7251, 0x5da2 }, { 7259, 0x3fd8 }, { 7269, 0xc00b },
- { 7274, 0x0984 }, { 7278, 0xa00c }, { 7282, 0x0040 }, { 7283, 0x6910 },
- { 7288, 0xe210 }, { 7293, 0xb912 }, { 7300, 0x86a5 }, { 7307, 0x5a00 },
- /* 0x9f00 */
- { 7311, 0x6800 }, { 7314, 0x0289 }, { 7318, 0x9005 }, { 7322, 0x6a80 },
- { 7327, 0x0010 }, { 7328, 0x0003 }, { 7330, 0x0000 }, { 7330, 0x8000 },
- { 7331, 0x1ff9 }, { 7342, 0x8e00 }, { 7346, 0x0001 },
-};
-static const Summary16 gb2312_uni2indx_pageff[15] = {
- /* 0xff00 */
- { 7347, 0xfffe }, { 7362, 0xffff }, { 7378, 0xffff }, { 7394, 0xffff },
- { 7410, 0xffff }, { 7426, 0x7fff }, { 7441, 0x0000 }, { 7441, 0x0000 },
- { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 },
- { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x002b },
-};
-
-static int
-gb2312_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc < 0x0460)
- summary = &gb2312_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x2000 && wc < 0x2650)
- summary = &gb2312_uni2indx_page20[(wc>>4)-0x200];
- else if (wc >= 0x3000 && wc < 0x3230)
- summary = &gb2312_uni2indx_page30[(wc>>4)-0x300];
- else if (wc >= 0x4e00 && wc < 0x9cf0)
- summary = &gb2312_uni2indx_page4e[(wc>>4)-0x4e0];
- else if (wc >= 0x9e00 && wc < 0x9fb0)
- summary = &gb2312_uni2indx_page9e[(wc>>4)-0x9e0];
- else if (wc >= 0xff00 && wc < 0xfff0)
- summary = &gb2312_uni2indx_pageff[(wc>>4)-0xff0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = gb2312_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * GB2312.1980-0
+ */
+
+static const unsigned short gb2312_2uni_page21[831] = {
+ /* 0x21 */
+ 0x3000, 0x3001, 0x3002, 0x30fb, 0x02c9, 0x02c7, 0x00a8, 0x3003,
+ 0x3005, 0x2015, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1,
+ 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a,
+ 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312,
+ 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d,
+ 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234,
+ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4,
+ 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb,
+ 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2,
+ 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,
+ /* 0x22 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f,
+ 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
+ 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477,
+ 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f,
+ 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+ 0x2468, 0x2469, 0xfffd, 0xfffd, 0x3220, 0x3221, 0x3222, 0x3223,
+ 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xfffd, 0xfffd,
+ 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
+ 0x2168, 0x2169, 0x216a, 0x216b, 0xfffd, 0xfffd,
+ /* 0x23 */
+ 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08,
+ 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
+ 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
+ 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
+ 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
+ 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40,
+ 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
+ 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
+ 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
+ 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
+ /* 0x24 */
+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
+ 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
+ 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x25 */
+ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
+ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
+ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
+ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
+ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
+ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
+ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
+ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
+ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
+ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
+ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x26 */
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+ 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
+ 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x28 */
+ 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b, 0x00e8,
+ 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
+ 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
+ 0x00fc, 0x00ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
+ 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
+ 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x29 */
+ 0xfffd, 0xfffd, 0xfffd, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504,
+ 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c,
+ 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514,
+ 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c,
+ 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524,
+ 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c,
+ 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
+ 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c,
+ 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
+ 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b,
+};
+static const unsigned short gb2312_2uni_page30[6768] = {
+ /* 0x30 */
+ 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691,
+ 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d,
+ 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848,
+ 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884,
+ 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed,
+ 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776,
+ 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf,
+ 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed,
+ 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc,
+ 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886,
+ 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d,
+ 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265,
+ /* 0x31 */
+ 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5,
+ 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351,
+ 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907,
+ 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29,
+ 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4,
+ 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9,
+ 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5,
+ 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16,
+ 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab,
+ 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b,
+ 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175,
+ 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3,
+ /* 0x32 */
+ 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2,
+ 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236,
+ 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa,
+ 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016,
+ 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29,
+ 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b,
+ 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf,
+ 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7,
+ 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336,
+ 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6,
+ 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20,
+ 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316,
+ /* 0x33 */
+ 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e,
+ 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632,
+ 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3,
+ 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1,
+ 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59,
+ 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f,
+ 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60,
+ 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64,
+ 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0,
+ 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7,
+ 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8,
+ 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a,
+ /* 0x34 */
+ 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd,
+ 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97,
+ 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524,
+ 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822,
+ 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148,
+ 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471,
+ 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07,
+ 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106,
+ 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb,
+ 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54,
+ 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26,
+ 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e,
+ /* 0x35 */
+ 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6,
+ 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb,
+ 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48,
+ 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053,
+ 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49,
+ 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c,
+ 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730,
+ 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382,
+ 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43,
+ 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc,
+ 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc,
+ 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0,
+ /* 0x36 */
+ 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a,
+ 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b,
+ 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661,
+ 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec,
+ 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6,
+ 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e,
+ 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566,
+ 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a,
+ 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0,
+ 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25,
+ 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c,
+ 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c,
+ /* 0x37 */
+ 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5,
+ 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492,
+ 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af,
+ 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632,
+ 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561,
+ 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8,
+ 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f,
+ 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa,
+ 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af,
+ 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b,
+ 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90,
+ 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d,
+ /* 0x38 */
+ 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85,
+ 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74,
+ 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236,
+ 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490,
+ 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89,
+ 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f,
+ 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b,
+ 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f,
+ 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c,
+ 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b,
+ 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9,
+ 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9,
+ /* 0x39 */
+ 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a,
+ 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1,
+ 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2,
+ 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30,
+ 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37,
+ 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250,
+ 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173,
+ 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c,
+ 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845,
+ 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842,
+ 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505,
+ 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8,
+ /* 0x3a */
+ 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163,
+ 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a,
+ 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a,
+ 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a,
+ 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d,
+ 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2,
+ 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a,
+ 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8,
+ 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f,
+ 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c,
+ 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6,
+ 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56,
+ /* 0x3b */
+ 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1,
+ 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd,
+ 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853,
+ 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115,
+ 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757,
+ 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d,
+ 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de,
+ 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd,
+ 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f,
+ 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b,
+ 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e,
+ 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95,
+ /* 0x3c */
+ 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9,
+ 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca,
+ 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0,
+ 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d,
+ 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2,
+ 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939,
+ 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be,
+ 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1,
+ 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270,
+ 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3,
+ 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274,
+ 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6,
+ /* 0x3d */
+ 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa,
+ 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868,
+ 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901,
+ 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc,
+ 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a,
+ 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb,
+ 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a,
+ 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01,
+ 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f,
+ 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1,
+ 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb,
+ 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78,
+ /* 0x3e */
+ 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8,
+ 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f,
+ 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756,
+ 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0,
+ 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551,
+ 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8,
+ 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9,
+ 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd,
+ 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350,
+ 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b,
+ 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd,
+ 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb,
+ /* 0x3f */
+ 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361,
+ 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a,
+ 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b,
+ 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760, 0x5777,
+ 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3, 0x54b3,
+ 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af, 0x5543,
+ 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54, 0x63a7,
+ 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f, 0x82e6,
+ 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8, 0x80ef,
+ 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321, 0x7b50,
+ 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f, 0x76d4,
+ 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080,
+ /* 0x40 */
+ 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0, 0x62ec,
+ 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721, 0x814a,
+ 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a, 0x680f,
+ 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd, 0x89c8,
+ 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc, 0x5eca,
+ 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001, 0x4f6c,
+ 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7, 0x956d,
+ 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b, 0x7c7b,
+ 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281, 0x9ece,
+ 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc, 0x9ca4,
+ 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389, 0x52b1,
+ 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0,
+ /* 0x41 */
+ 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9,
+ 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f,
+ 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae,
+ 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e,
+ 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5,
+ 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217,
+ 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716,
+ 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce,
+ 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc,
+ 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409,
+ 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3,
+ 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf,
+ /* 0x42 */
+ 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3,
+ 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3,
+ 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42,
+ 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415,
+ 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f,
+ 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6,
+ 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1,
+ 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523,
+ 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988,
+ 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417,
+ 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992,
+ 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b,
+ /* 0x43 */
+ 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd, 0x732b,
+ 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302, 0x5192,
+ 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885, 0x9176,
+ 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf, 0x7f8e,
+ 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec, 0x840c,
+ 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f, 0x772f,
+ 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73, 0x79d8,
+ 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720, 0x7ef5,
+ 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7, 0x63cf,
+ 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511, 0x706d,
+ 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e, 0x879f,
+ 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478,
+ /* 0x44 */
+ 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54, 0x62b9,
+ 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde, 0x964c,
+ 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6, 0x6bcd,
+ 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee, 0x7766,
+ 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3, 0x5a1c,
+ 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537,
+ 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6, 0x5462,
+ 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a, 0x6ce5,
+ 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba, 0x852b,
+ 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18, 0x917f,
+ 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a, 0x954d,
+ 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81,
+ /* 0x45 */
+ 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53,
+ 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650,
+ 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25,
+ 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c,
+ 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43,
+ 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224,
+ 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486,
+ 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9,
+ 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6,
+ 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c,
+ 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812,
+ 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7,
+ /* 0x46 */
+ 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41,
+ 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2,
+ 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058,
+ 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4,
+ 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb,
+ 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9,
+ 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd,
+ 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4,
+ 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566,
+ 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77,
+ 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14,
+ 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390,
+ /* 0x47 */
+ 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343, 0x8fc1,
+ 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3, 0x524d,
+ 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20, 0x6b49,
+ 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a, 0x62a2,
+ 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54, 0x4fa8,
+ 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d, 0x5207,
+ 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2, 0x79e6,
+ 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81, 0x9752,
+ 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674, 0x6c30,
+ 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb, 0x4e18,
+ 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b, 0x533a,
+ 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20,
+ /* 0x48 */
+ 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7, 0x6743,
+ 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238, 0x529d,
+ 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e, 0x96c0,
+ 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4, 0x58e4,
+ 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9, 0x70ed,
+ 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4, 0x5203,
+ 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338, 0x84c9,
+ 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197, 0x63c9,
+ 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982, 0x8fb1,
+ 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a, 0x745e,
+ 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12, 0x8428,
+ 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1,
+ /* 0x49 */
+ 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b,
+ 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802,
+ 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b,
+ 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b,
+ 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247,
+ 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a,
+ 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6,
+ 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c,
+ 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe,
+ 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5,
+ 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17,
+ 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3,
+ /* 0x4a */
+ 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee,
+ 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe,
+ 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2,
+ 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16,
+ 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc,
+ 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02,
+ 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88,
+ 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2,
+ 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f,
+ 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72,
+ 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f,
+ 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31,
+ /* 0x4b */
+ 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05, 0x6813,
+ 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761, 0x7a0e,
+ 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714, 0x70c1,
+ 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d, 0x6b7b,
+ 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972, 0x5df3,
+ 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc, 0x8bf5,
+ 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7, 0x7d20,
+ 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9, 0x8083,
+ 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5, 0x9ad3,
+ 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59, 0x635f,
+ 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22, 0x9501,
+ 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854,
+ /* 0x4c */
+ 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac, 0x53f0,
+ 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a, 0x8d2a,
+ 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d, 0x8c08,
+ 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad, 0x6c64,
+ 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6, 0x5018,
+ 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4, 0x7ee6,
+ 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957, 0x7279,
+ 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22, 0x9511,
+ 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f, 0x60d5,
+ 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530, 0x751c,
+ 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a, 0x8df3,
+ 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3,
+ /* 0x4d */
+ 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a,
+ 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876,
+ 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f,
+ 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60,
+ 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f,
+ 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258,
+ 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3,
+ 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c,
+ 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38,
+ 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b,
+ 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51,
+ 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01,
+ /* 0x4e */
+ 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f,
+ 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f,
+ 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3,
+ 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b,
+ 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33,
+ 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1,
+ 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c,
+ 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7,
+ 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e,
+ 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff,
+ 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852,
+ 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a,
+ /* 0x4f */
+ 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc, 0x7184,
+ 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d, 0x4e60,
+ 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f, 0x7ec6,
+ 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1, 0x4fa0,
+ 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528, 0x5148,
+ 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237, 0x95f2,
+ 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e, 0x53bf,
+ 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf, 0x76f8,
+ 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61, 0x7fd4,
+ 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7, 0x6a61,
+ 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a, 0x54ee,
+ 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653,
+ /* 0x50 */
+ 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548, 0x6954,
+ 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a, 0x90aa,
+ 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9, 0x61c8,
+ 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x6b23,
+ 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f, 0x8165,
+ 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2, 0x884c,
+ 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6, 0x80f8,
+ 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e, 0x673d,
+ 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c, 0x9700,
+ 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157, 0x53d9,
+ 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea, 0x7eed,
+ 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384,
+ /* 0x51 */
+ 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74,
+ 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb,
+ 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5,
+ 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259,
+ 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6,
+ 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814,
+ 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf,
+ 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5,
+ 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a,
+ 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f,
+ 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b,
+ 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476,
+ /* 0x52 */
+ 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200,
+ 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce,
+ 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b,
+ 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d,
+ 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0,
+ 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a,
+ 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091,
+ 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6,
+ 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3,
+ 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335,
+ 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6,
+ 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690,
+ /* 0x53 */
+ 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28, 0x83b9,
+ 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8, 0x5f71,
+ 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3, 0x75c8,
+ 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c, 0x6c38,
+ 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7, 0x5c24,
+ 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149, 0x6709,
+ 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2,
+ 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206, 0x4f59,
+ 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685, 0x4e88,
+ 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed, 0x7fbd,
+ 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb, 0x5cea,
+ 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89,
+ /* 0x54 */
+ 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33, 0x6e0a,
+ 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95, 0x56ed,
+ 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1, 0x613f,
+ 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5, 0x5cb3,
+ 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7, 0x5300,
+ 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5, 0x5b55,
+ 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0, 0x8f7d,
+ 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43, 0x810f,
+ 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9, 0x6fa1,
+ 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5, 0x8d23,
+ 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e, 0x66fe,
+ 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67,
+ /* 0x55 */
+ 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8,
+ 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb,
+ 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d,
+ 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd,
+ 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756,
+ 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db,
+ 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087,
+ 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517,
+ 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827,
+ 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707,
+ 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0,
+ 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f,
+ /* 0x56 */
+ 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431,
+ 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c,
+ 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307,
+ 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7,
+ 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9,
+ 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d,
+ 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd,
+ 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5,
+ 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4,
+ 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010,
+ 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457,
+ 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51,
+ /* 0x57 */
+ 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd, 0x4e13,
+ 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84, 0x88c5,
+ 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd, 0x8d58,
+ 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353, 0x684c,
+ 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a, 0x5179,
+ 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4,
+ 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03, 0x68d5,
+ 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70, 0x594f,
+ 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5, 0x963b,
+ 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a, 0x5c0a,
+ 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c, 0x5750,
+ 0x5ea7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x58 */
+ 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15, 0x4e98,
+ 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f, 0x5315,
+ 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4, 0x9997,
+ 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c, 0x4e69,
+ 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d, 0x539d,
+ 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5, 0x5326,
+ 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208, 0x520e,
+ 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261, 0x525c,
+ 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7f54,
+ 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb, 0x4ede,
+ 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27, 0x4f09,
+ 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d,
+ /* 0x59 */
+ 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89,
+ 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94,
+ 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1,
+ 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e,
+ 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043,
+ 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9,
+ 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107,
+ 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46,
+ 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9,
+ 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156,
+ 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34,
+ 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc,
+ /* 0x5a */
+ 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa,
+ 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce,
+ 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf,
+ 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6,
+ 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c,
+ 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b,
+ 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a,
+ 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369,
+ 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c,
+ 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674,
+ 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099,
+ 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba,
+ /* 0x5b */
+ 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4, 0x90c7,
+ 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb, 0x90ef,
+ 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f, 0x9139,
+ 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad, 0x52be,
+ 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd, 0x5ef4,
+ 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def, 0x574c,
+ 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729, 0x572c,
+ 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b, 0x5742,
+ 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768, 0x576d,
+ 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf, 0x57a7,
+ 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9, 0x57d2,
+ 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd,
+ /* 0x5c */
+ 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819, 0x5844,
+ 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880, 0x99a8,
+ 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a, 0x82a8,
+ 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8, 0x82be,
+ 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae, 0x82cb,
+ 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f, 0x82c4,
+ 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f, 0x8307,
+ 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3, 0x8311,
+ 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c, 0x8351,
+ 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331, 0x839b,
+ 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340, 0x8317,
+ 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365,
+ /* 0x5d */
+ 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0,
+ 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385,
+ 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e,
+ 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807,
+ 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411,
+ 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea,
+ 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a,
+ 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c,
+ 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1,
+ 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba,
+ 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c,
+ 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a,
+ /* 0x5e */
+ 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564,
+ 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8,
+ 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7,
+ 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629,
+ 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955,
+ 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c,
+ 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322,
+ 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a,
+ 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc,
+ 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452,
+ 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c,
+ 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496,
+ /* 0x5f */
+ 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0, 0x64d7,
+ 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2, 0x7519,
+ 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb, 0x5412,
+ 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443,
+ 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477,
+ 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466, 0x549d,
+ 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6, 0x54d3,
+ 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc, 0x54d9,
+ 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf, 0x54de,
+ 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522, 0x5523,
+ 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5, 0x5549,
+ 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c,
+ /* 0x60 */
+ 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555c,
+ 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581, 0x559f,
+ 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be, 0x5594,
+ 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb, 0x55ec,
+ 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2, 0x55f3,
+ 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e, 0x5608,
+ 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627, 0x562d,
+ 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659, 0x565c,
+ 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b, 0x567c,
+ 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1, 0x56f5,
+ 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c, 0x5e0f,
+ 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c,
+ /* 0x61 */
+ 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a,
+ 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a,
+ 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3,
+ 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02,
+ 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b,
+ 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d,
+ 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d,
+ 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89,
+ 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc,
+ 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3,
+ 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2,
+ 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa,
+ /* 0x62 */
+ 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315,
+ 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d,
+ 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7,
+ 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
+ 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a,
+ 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91,
+ 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3,
+ 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4,
+ 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4,
+ 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035,
+ 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f,
+ 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042,
+ /* 0x63 */
+ 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083, 0x6092,
+ 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8, 0x60c6,
+ 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4, 0x6100,
+ 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7, 0x61b7,
+ 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1, 0x95f3,
+ 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606, 0x9608,
+ 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615, 0x9616,
+ 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35, 0x6c54,
+ 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c, 0x6c68,
+ 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad,
+ 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa,
+ 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe,
+ /* 0x64 */
+ 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04, 0x6d19,
+ 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f, 0x6d52,
+ 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e, 0x6d93,
+ 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7, 0x6dc5,
+ 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd, 0x6dd9,
+ 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e, 0x6e6b,
+ 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25, 0x6e44,
+ 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5, 0x6ea7,
+ 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f, 0x6ec2,
+ 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9, 0x6f2f,
+ 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89, 0x6f8d,
+ 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1,
+ /* 0x65 */
+ 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde,
+ 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f,
+ 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f,
+ 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07,
+ 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6,
+ 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d,
+ 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051,
+ 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074,
+ 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56,
+ 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66,
+ 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e,
+ 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3,
+ /* 0x66 */
+ 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af,
+ 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8,
+ 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13,
+ 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec,
+ 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2,
+ 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8,
+ 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15,
+ 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75,
+ 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85,
+ 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b,
+ 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7,
+ 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9,
+ /* 0x67 */
+ 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb,
+ 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8,
+ 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa,
+ 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08, 0x7f0b,
+ 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c, 0x7f1b,
+ 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
+ 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31, 0x7f32,
+ 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095, 0x738e,
+ 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1, 0x73b7,
+ 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c, 0x740a,
+ 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a, 0x745b,
+ 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c,
+ /* 0x68 */
+ 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459, 0x7477,
+ 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487, 0x748b,
+ 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba, 0x97ea,
+ 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769, 0x67a5,
+ 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8, 0x679e,
+ 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8, 0x680a,
+ 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3, 0x67dd,
+ 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd, 0x6832,
+ 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864, 0x6883,
+ 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e, 0x684a,
+ 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893, 0x686b,
+ 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9,
+ /* 0x69 */
+ 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971,
+ 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998,
+ 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966,
+ 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4,
+ 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff,
+ 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e,
+ 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28,
+ 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337,
+ 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d,
+ 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72,
+ 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c,
+ 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b,
+ /* 0x6a */
+ 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217,
+ 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7,
+ 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee,
+ 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600,
+ 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006,
+ 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677,
+ 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6,
+ 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45,
+ 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7,
+ 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e,
+ 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b,
+ 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0,
+ /* 0x6b */
+ 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9,
+ 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19, 0x6c1a,
+ 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555, 0x656b,
+ 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f, 0x809c,
+ 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad, 0x80b4,
+ 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2, 0x80c4,
+ 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1, 0x80f4,
+ 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112, 0x8c5a,
+ 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c, 0x8153,
+ 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c, 0x817d,
+ 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191, 0x6ed5,
+ 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb,
+ /* 0x6c */
+ 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46, 0x6b59,
+ 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3, 0x5f40,
+ 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6, 0x65c4,
+ 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c, 0x7096,
+ 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8, 0x70ca,
+ 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c, 0x7168,
+ 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3, 0x71b5,
+ 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d, 0x7228,
+ 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243, 0x6248,
+ 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c, 0x7953,
+ 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a, 0x7985,
+ 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0,
+ /* 0x6d */
+ 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab,
+ 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206,
+ 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800,
+ 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d,
+ 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823,
+ 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
+ 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1,
+ 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec,
+ 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b,
+ 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707,
+ 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738,
+ 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768,
+ /* 0x6e */
+ 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791,
+ 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e,
+ 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61,
+ 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e,
+ 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a,
+ 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a,
+ 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac,
+ 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9,
+ 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca,
+ 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5,
+ 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0,
+ 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea,
+ /* 0x6f */
+ 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5, 0x94f7,
+ 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506, 0x9507,
+ 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513, 0x9514,
+ 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f, 0x9522,
+ 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534, 0x9536,
+ 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535, 0x9544,
+ 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552, 0x9553,
+ 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e, 0x955f,
+ 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568,
+ 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572, 0x9573,
+ 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3, 0x79eb,
+ 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14,
+ /* 0x70 */
+ 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688, 0x768e,
+ 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20, 0x9e22,
+ 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31, 0x9e36,
+ 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42, 0x9e44,
+ 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e51,
+ 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63, 0x9e66,
+ 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71, 0x9e6d,
+ 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac, 0x75a3,
+ 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3, 0x75c2,
+ 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb, 0x75e7,
+ 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605, 0x760c,
+ 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619,
+ /* 0x71 */
+ 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f,
+ 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c,
+ 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80,
+ 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad,
+ 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2,
+ 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5,
+ 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919,
+ 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966,
+ 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014,
+ 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
+ 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052,
+ 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,
+ /* 0x72 */
+ 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e,
+ 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c,
+ 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b,
+ 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6,
+ 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9,
+ 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0,
+ 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707,
+ 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e,
+ 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729,
+ 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760,
+ 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764,
+ 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2,
+ /* 0x73 */
+ 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab, 0x87e5,
+ 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1, 0x87c0,
+ 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813, 0x87fe,
+ 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42, 0x7f44,
+ 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04, 0x7b15,
+ 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19, 0x7b2e,
+ 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e, 0x7b58,
+ 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b,
+ 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac,
+ 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4,
+ 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6, 0x7bea,
+ 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b,
+ /* 0x74 */
+ 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe, 0x8201,
+ 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223, 0x822d,
+ 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234, 0x823e,
+ 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268, 0x887e,
+ 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f, 0x7fa7,
+ 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d, 0x7c9c,
+ 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7, 0x7ccc,
+ 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8, 0x7fbf,
+ 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee, 0x7ff3,
+ 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8, 0x9eb4,
+ 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d, 0x8c47,
+ 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164,
+ /* 0x75 */
+ 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172,
+ 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2,
+ 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba,
+ 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5,
+ 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde,
+ 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3,
+ 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f,
+ 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35,
+ 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a,
+ 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94,
+ 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98,
+ 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc,
+ /* 0x76 */
+ 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3,
+ 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d,
+ 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88,
+ 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc,
+ 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8,
+ 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82,
+ 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90,
+ 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f,
+ 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8,
+ 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3,
+ 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd,
+ 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb,
+ /* 0x77 */
+ 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5,
+ 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2, 0x977c,
+ 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3, 0x97b2,
+ 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba, 0x9abc,
+ 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1, 0x9b45,
+ 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8, 0x990d,
+ 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb,
+ 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f, 0x9b23,
+ 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b, 0x9e92,
+ 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0, 0x9edf,
+ 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22, 0x9f2c,
+ 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44,
+};
+
+static int
+gb2312_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 >= 0x21 && c1 <= 0x29) || (c1 >= 0x30 && c1 <= 0x77)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 1410) {
+ if (i < 831)
+ wc = gb2312_2uni_page21[i];
+ } else {
+ if (i < 8178)
+ wc = gb2312_2uni_page30[i-1410];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short gb2312_2charset[7445] = {
+ 0x2168, 0x216c, 0x2127, 0x2163, 0x2140, 0x2141, 0x2824, 0x2822,
+ 0x2828, 0x2826, 0x283a, 0x282c, 0x282a, 0x2830, 0x282e, 0x2142,
+ 0x2834, 0x2832, 0x2839, 0x2821, 0x2825, 0x2827, 0x2829, 0x282d,
+ 0x2831, 0x2823, 0x282b, 0x282f, 0x2833, 0x2835, 0x2836, 0x2837,
+ 0x2838, 0x2126, 0x2125, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625,
+ 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d,
+ 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635,
+ 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645,
+ 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d,
+ 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655,
+ 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723, 0x2724,
+ 0x2725, 0x2726, 0x2728, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d,
+ 0x272e, 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735,
+ 0x2736, 0x2737, 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d,
+ 0x273e, 0x273f, 0x2740, 0x2741, 0x2751, 0x2752, 0x2753, 0x2754,
+ 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d,
+ 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765,
+ 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d,
+ 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x212a, 0x212c, 0x212e,
+ 0x212f, 0x2130, 0x2131, 0x212d, 0x216b, 0x2164, 0x2165, 0x2179,
+ 0x2166, 0x216d, 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0x2276,
+ 0x2277, 0x2278, 0x2279, 0x227a, 0x227b, 0x227c, 0x217b, 0x217c,
+ 0x217a, 0x217d, 0x214a, 0x2147, 0x2146, 0x214c, 0x2158, 0x215e,
+ 0x214f, 0x214e, 0x2144, 0x2145, 0x2149, 0x2148, 0x2152, 0x2153,
+ 0x2160, 0x215f, 0x2143, 0x214b, 0x2157, 0x2156, 0x2155, 0x2159,
+ 0x2154, 0x215c, 0x215d, 0x215a, 0x215b, 0x2151, 0x214d, 0x2150,
+ 0x2259, 0x225a, 0x225b, 0x225c, 0x225d, 0x225e, 0x225f, 0x2260,
+ 0x2261, 0x2262, 0x2245, 0x2246, 0x2247, 0x2248, 0x2249, 0x224a,
+ 0x224b, 0x224c, 0x224d, 0x224e, 0x224f, 0x2250, 0x2251, 0x2252,
+ 0x2253, 0x2254, 0x2255, 0x2256, 0x2257, 0x2258, 0x2231, 0x2232,
+ 0x2233, 0x2234, 0x2235, 0x2236, 0x2237, 0x2238, 0x2239, 0x223a,
+ 0x223b, 0x223c, 0x223d, 0x223e, 0x223f, 0x2240, 0x2241, 0x2242,
+ 0x2243, 0x2244, 0x2924, 0x2925, 0x2926, 0x2927, 0x2928, 0x2929,
+ 0x292a, 0x292b, 0x292c, 0x292d, 0x292e, 0x292f, 0x2930, 0x2931,
+ 0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937, 0x2938, 0x2939,
+ 0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f, 0x2940, 0x2941,
+ 0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949,
+ 0x294a, 0x294b, 0x294c, 0x294d, 0x294e, 0x294f, 0x2950, 0x2951,
+ 0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957, 0x2958, 0x2959,
+ 0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f, 0x2960, 0x2961,
+ 0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x2967, 0x2968, 0x2969,
+ 0x296a, 0x296b, 0x296c, 0x296d, 0x296e, 0x296f, 0x2176, 0x2175,
+ 0x2178, 0x2177, 0x2174, 0x2173, 0x2170, 0x2172, 0x2171, 0x216f,
+ 0x216e, 0x2162, 0x2161, 0x2121, 0x2122, 0x2123, 0x2128, 0x2129,
+ 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b,
+ 0x213e, 0x213f, 0x217e, 0x2132, 0x2133, 0x213c, 0x213d, 0x2421,
+ 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429,
+ 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431,
+ 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439,
+ 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441,
+ 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449,
+ 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451,
+ 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
+ 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461,
+ 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+ 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471,
+ 0x2472, 0x2473, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526,
+ 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e,
+ 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536,
+ 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e,
+ 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546,
+ 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e,
+ 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
+ 0x255f, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566,
+ 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e,
+ 0x256f, 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576,
+ 0x2124, 0x2845, 0x2846, 0x2847, 0x2848, 0x2849, 0x284a, 0x284b,
+ 0x284c, 0x284d, 0x284e, 0x284f, 0x2850, 0x2851, 0x2852, 0x2853,
+ 0x2854, 0x2855, 0x2856, 0x2857, 0x2858, 0x2859, 0x285a, 0x285b,
+ 0x285c, 0x285d, 0x285e, 0x285f, 0x2860, 0x2861, 0x2862, 0x2863,
+ 0x2864, 0x2865, 0x2866, 0x2867, 0x2868, 0x2869, 0x2265, 0x2266,
+ 0x2267, 0x2268, 0x2269, 0x226a, 0x226b, 0x226c, 0x226d, 0x226e,
+ 0x523b, 0x3621, 0x465f, 0x4d72, 0x5549, 0x487d, 0x494f, 0x4f42,
+ 0x5822, 0x323b, 0x536b, 0x5824, 0x3373, 0x5728, 0x4752, 0x5827,
+ 0x4a40, 0x4770, 0x317b, 0x5235, 0x3454, 0x362b, 0x4b3f, 0x5829,
+ 0x362a, 0x413d, 0x514f, 0x4925, 0x582d, 0x3876, 0x513e, 0x635c,
+ 0x5650, 0x3761, 0x342e, 0x4159, 0x583c, 0x4d68, 0x3524, 0x4e2a,
+ 0x5677, 0x4076, 0x3e59, 0x582f, 0x444b, 0x3e43, 0x5831, 0x4334,
+ 0x5265, 0x562e, 0x4e5a, 0x5527, 0x3a75, 0x3726, 0x4056, 0x4639,
+ 0x4552, 0x4747, 0x3954, 0x334b, 0x5252, 0x583f, 0x3e45, 0x4672,
+ 0x5232, 0x4f30, 0x4f67, 0x4a69, 0x5840, 0x4272, 0x4252, 0x4869,
+ 0x472c, 0x414b, 0x5368, 0x5579, 0x4a42, 0x367e, 0x5821, 0x535a,
+ 0x3f77, 0x5446, 0x3b25, 0x5841, 0x4e65, 0x3e2e, 0x5828, 0x5147,
+ 0x5029, 0x583d, 0x596f, 0x4d76, 0x3f3a, 0x3d3b, 0x3a25, 0x5260,
+ 0x327a, 0x3a60, 0x4436, 0x4f6d, 0x3e29, 0x4d24, 0x4141, 0x4757,
+ 0x5971, 0x5974, 0x484b, 0x5869, 0x525a, 0x4a32, 0x484a, 0x586c,
+ 0x586a, 0x5846, 0x3d76, 0x464d, 0x3370, 0x586b, 0x3d71, 0x3d69,
+ 0x4854, 0x3453, 0x4258, 0x3256, 0x5750, 0x4a4b, 0x4b7b, 0x554c,
+ 0x3836, 0x4f49, 0x595a, 0x5870, 0x472a, 0x586e, 0x347a, 0x416e,
+ 0x5254, 0x586d, 0x5247, 0x586f, 0x4347, 0x5176, 0x5659, 0x5872,
+ 0x5875, 0x3c7e, 0x3c5b, 0x484e, 0x375d, 0x3742, 0x4673, 0x5878,
+ 0x5241, 0x4e69, 0x3c3f, 0x377c, 0x3725, 0x505d, 0x565a, 0x5345,
+ 0x3b6f, 0x3b61, 0x5871, 0x4921, 0x4e30, 0x342b, 0x5873, 0x494b,
+ 0x5876, 0x4257, 0x5877, 0x4e31, 0x5879, 0x322e, 0x3940, 0x5923,
+ 0x3069, 0x4166, 0x496c, 0x4b45, 0x4b46, 0x5924, 0x3568, 0x352b,
+ 0x4e3b, 0x354d, 0x5721, 0x5774, 0x5353, 0x4c65, 0x3a4e, 0x5922,
+ 0x595c, 0x5360, 0x587d, 0x3770, 0x5777, 0x587e, 0x587a, 0x5921,
+ 0x4463, 0x5336, 0x5874, 0x595d, 0x587b, 0x4565, 0x4050, 0x5170,
+ 0x305b, 0x3c51, 0x5926, 0x5925, 0x592c, 0x592e, 0x592b, 0x4a39,
+ 0x5929, 0x5636, 0x335e, 0x5928, 0x407d, 0x4a4c, 0x592a, 0x5927,
+ 0x5930, 0x3631, 0x3929, 0x5240, 0x4f40, 0x4242, 0x3d44, 0x556c,
+ 0x3260, 0x4748, 0x3f6b, 0x592d, 0x592f, 0x4e6a, 0x3a6e, 0x4756,
+ 0x3163, 0x3459, 0x366d, 0x5934, 0x3f21, 0x595e, 0x474e, 0x407e,
+ 0x5938, 0x4b57, 0x377d, 0x5935, 0x5937, 0x3123, 0x5361, 0x5939,
+ 0x5045, 0x5936, 0x5931, 0x5932, 0x4129, 0x5933, 0x3c73, 0x505e,
+ 0x3829, 0x3e63, 0x593d, 0x593a, 0x3033, 0x5942, 0x5944, 0x3136,
+ 0x593f, 0x3539, 0x3e73, 0x4c48, 0x3a72, 0x5250, 0x5943, 0x3d68,
+ 0x332b, 0x5945, 0x3e6b, 0x5946, 0x593b, 0x445f, 0x593e, 0x5941,
+ 0x5940, 0x552e, 0x5635, 0x4763, 0x5948, 0x3c59, 0x594a, 0x593c,
+ 0x594b, 0x462b, 0x5949, 0x5776, 0x4d23, 0x3d21, 0x594c, 0x453c,
+ 0x4d35, 0x594d, 0x5947, 0x3325, 0x3f7e, 0x3835, 0x407c, 0x3078,
+ 0x3476, 0x594e, 0x594f, 0x3422, 0x5950, 0x345f, 0x3041, 0x5951,
+ 0x4935, 0x4f71, 0x5952, 0x4145, 0x5956, 0x492e, 0x5955, 0x5954,
+ 0x5957, 0x4b5b, 0x3d29, 0x4627, 0x5953, 0x5958, 0x5959, 0x4865,
+ 0x405c, 0x3679, 0x5823, 0x544a, 0x542a, 0x5056, 0x3364, 0x5557,
+ 0x4f48, 0x3962, 0x3f4b, 0x4362, 0x3652, 0x4d43, 0x596e, 0x5970,
+ 0x3533, 0x3635, 0x3e24, 0x486b, 0x482b, 0x304b, 0x392b, 0x4179,
+ 0x5962, 0x403c, 0x3932, 0x3958, 0x504b, 0x3178, 0x4664, 0x3e5f,
+ 0x3564, 0x5748, 0x5178, 0x3c66, 0x4a5e, 0x3c3d, 0x5966, 0x5867,
+ 0x445a, 0x3854, 0x483d, 0x3261, 0x5459, 0x4330, 0x4361, 0x5a22,
+ 0x485f, 0x5034, 0x3e7c, 0x4529, 0x395a, 0x5a23, 0x5429, 0x5a24,
+ 0x597b, 0x362c, 0x376b, 0x3179, 0x597c, 0x3365, 0x3e76, 0x3f76,
+ 0x5231, 0x4064, 0x3633, 0x597e, 0x597d, 0x3e3b, 0x4660, 0x573c,
+ 0x5a21, 0x4139, 0x3572, 0x4168, 0x3c75, 0x3455, 0x415d, 0x447d,
+ 0x3c38, 0x3732, 0x376f, 0x596c, 0x463e, 0x3f2d, 0x3b4b, 0x354a,
+ 0x5b49, 0x5057, 0x4d39, 0x303c, 0x3376, 0x3b77, 0x5b4a, 0x3a2f,
+ 0x5464, 0x3536, 0x3573, 0x5856, 0x4850, 0x3756, 0x4750, 0x5857,
+ 0x3f2f, 0x5b3b, 0x5858, 0x504c, 0x3b2e, 0x6b3e, 0x4150, 0x4175,
+ 0x5472, 0x3855, 0x3434, 0x3375, 0x493e, 0x4550, 0x4559, 0x407b,
+ 0x3170, 0x5859, 0x394e, 0x353d, 0x585a, 0x5646, 0x4b22, 0x482f,
+ 0x4932, 0x344c, 0x3f4c, 0x3974, 0x585b, 0x585c, 0x3667, 0x3c41,
+ 0x4c6a, 0x4f77, 0x585d, 0x4730, 0x3950, 0x3d23, 0x4c5e, 0x464a,
+ 0x5860, 0x585e, 0x585f, 0x307e, 0x3e67, 0x4a23, 0x3c74, 0x3831,
+ 0x386e, 0x5862, 0x3d4b, 0x5864, 0x5863, 0x457c, 0x5865, 0x5866,
+ 0x4126, 0x4830, 0x306c, 0x3926, 0x3c53, 0x4e71, 0x5b3d, 0x4153,
+ 0x362f, 0x567a, 0x452c, 0x3d59, 0x5b3e, 0x5b3f, 0x4078, 0x3e22,
+ 0x404d, 0x5b40, 0x4a46, 0x322a, 0x5342, 0x4363, 0x512b, 0x5b42,
+ 0x4055, 0x5b43, 0x3f31, 0x443c, 0x475a, 0x5b44, 0x5968, 0x4957,
+ 0x3934, 0x4e70, 0x5448, 0x307c, 0x3452, 0x5059, 0x5969, 0x5e4b,
+ 0x596b, 0x5830, 0x3b2f, 0x3131, 0x3357, 0x584e, 0x5451, 0x3d33,
+ 0x3f6f, 0x4f3b, 0x5850, 0x374b, 0x5851, 0x4625, 0x4778, 0x523d,
+ 0x5852, 0x4464, 0x4a2e, 0x4727, 0x5826, 0x497d, 0x4e67, 0x3b5c,
+ 0x306b, 0x3b2a, 0x502d, 0x3130, 0x5764, 0x573f, 0x3525, 0x4274,
+ 0x444f, 0x3229, 0x3237, 0x3165, 0x5f32, 0x553c, 0x3f28, 0x422c,
+ 0x5855, 0x4231, 0x5854, 0x4e54, 0x5a60, 0x4e40, 0x5834, 0x432e,
+ 0x5321, 0x4e23, 0x3c34, 0x4834, 0x4251, 0x3e6d, 0x5036, 0x5a61,
+ 0x4764, 0x3327, 0x3672, 0x4c7c, 0x407a, 0x4077, 0x5139, 0x5161,
+ 0x5847, 0x325e, 0x4065, 0x3a71, 0x5848, 0x542d, 0x4f61, 0x5849,
+ 0x584a, 0x4f43, 0x3378, 0x3e47, 0x584b, 0x5b4c, 0x4825, 0x4f58,
+ 0x487e, 0x324e, 0x5356, 0x3266, 0x3c30, 0x5351, 0x4b2b, 0x3734,
+ 0x3722, 0x4a65, 0x4821, 0x4a5c, 0x3164, 0x5070, 0x4551, 0x5b45,
+ 0x357e, 0x3f5a, 0x3945, 0x3e64, 0x416d, 0x5f36, 0x5f35, 0x563b,
+ 0x3d50, 0x5559, 0x3048, 0x3623, 0x3f49, 0x4c28, 0x5f33, 0x4a37,
+ 0x5352, 0x584f, 0x5236, 0x3a45, 0x4b3e, 0x4c3e, 0x5f37, 0x3570,
+ 0x5f34, 0x5375, 0x3354, 0x3877, 0x5f3a, 0x3a4f, 0x3c2a, 0x3575,
+ 0x4d2c, 0x437b, 0x3a73, 0x4074, 0x4d42, 0x4f72, 0x5f38, 0x4f45,
+ 0x4240, 0x5f39, 0x4270, 0x3e7d, 0x415f, 0x4d4c, 0x5277, 0x374d,
+ 0x5f41, 0x5f44, 0x3771, 0x3049, 0x3656, 0x3754, 0x3a2c, 0x4c7d,
+ 0x3f54, 0x4b31, 0x4674, 0x5628, 0x5f45, 0x4e62, 0x3333, 0x4e7c,
+ 0x3435, 0x4e47, 0x3a70, 0x4e61, 0x513d, 0x5f40, 0x3474, 0x334a,
+ 0x3866, 0x5f3b, 0x4445, 0x5f3c, 0x5f3d, 0x5f3e, 0x453b, 0x5f3f,
+ 0x5f42, 0x5431, 0x5f43, 0x473a, 0x4e58, 0x4458, 0x5f4a, 0x5f4f,
+ 0x565c, 0x5f49, 0x5f5a, 0x4e36, 0x3a47, 0x5f4e, 0x5f48, 0x455e,
+ 0x496b, 0x3a74, 0x437c, 0x3e57, 0x5f46, 0x5f4d, 0x4558, 0x5526,
+ 0x3a4d, 0x3e4c, 0x533d, 0x3840, 0x5664, 0x5f47, 0x393e, 0x3f27,
+ 0x417c, 0x5f4b, 0x5f4c, 0x5f50, 0x5f5b, 0x5f65, 0x5f57, 0x5f56,
+ 0x5749, 0x5f63, 0x5f64, 0x656b, 0x5227, 0x5f52, 0x3f29, 0x545b,
+ 0x3f48, 0x5f54, 0x4f4c, 0x5f5d, 0x514a, 0x5f5e, 0x3027, 0x4637,
+ 0x5f53, 0x3a65, 0x365f, 0x4d5b, 0x397e, 0x5455, 0x5f5f, 0x4f6c,
+ 0x3025, 0x5f67, 0x5f51, 0x5146, 0x5f55, 0x5f58, 0x5f59, 0x5f5c,
+ 0x3b29, 0x5f60, 0x5f61, 0x5f62, 0x5f66, 0x5f68, 0x5334, 0x3867,
+ 0x4536, 0x5f6a, 0x495a, 0x4128, 0x4444, 0x3f5e, 0x4f78, 0x555c,
+ 0x5f6e, 0x3238, 0x3a5f, 0x5f6c, 0x5b41, 0x5164, 0x4b74, 0x343d,
+ 0x3026, 0x5f71, 0x4c46, 0x5f72, 0x5f6d, 0x5f69, 0x5f6b, 0x5f6f,
+ 0x5f70, 0x3b3d, 0x5f73, 0x5f74, 0x3b23, 0x4a5b, 0x4e28, 0x6027,
+ 0x332a, 0x6026, 0x6021, 0x5f7e, 0x4d59, 0x5f7c, 0x5f7a, 0x3f50,
+ 0x5744, 0x494c, 0x5f78, 0x3021, 0x5f7d, 0x5f7b, 0x6022, 0x6028,
+ 0x3748, 0x4621, 0x4936, 0x4032, 0x5f75, 0x453e, 0x5844, 0x5f79,
+ 0x4476, 0x6023, 0x6024, 0x6025, 0x5025, 0x6034, 0x4c64, 0x6031,
+ 0x3f26, 0x602f, 0x4e39, 0x602b, 0x4946, 0x402e, 0x602e, 0x3a6d,
+ 0x3a30, 0x6029, 0x5f76, 0x6033, 0x6038, 0x342d, 0x6039, 0x4f32,
+ 0x3a48, 0x6030, 0x507a, 0x602c, 0x547b, 0x5f77, 0x4567, 0x602d,
+ 0x5377, 0x6036, 0x6037, 0x6044, 0x5061, 0x603c, 0x6049, 0x604a,
+ 0x603e, 0x602a, 0x4924, 0x6041, 0x6032, 0x4a48, 0x6043, 0x6035,
+ 0x4e4b, 0x4b43, 0x604d, 0x6046, 0x6042, 0x604b, 0x603a, 0x603f,
+ 0x6040, 0x6045, 0x6047, 0x6048, 0x604c, 0x603b, 0x4b54, 0x6055,
+ 0x6056, 0x6052, 0x6050, 0x3c4e, 0x6051, 0x3842, 0x5845, 0x506a,
+ 0x426f, 0x604f, 0x603d, 0x6054, 0x6053, 0x6057, 0x605c, 0x6058,
+ 0x5676, 0x3330, 0x576c, 0x4b3b, 0x605a, 0x4e7b, 0x3a59, 0x6061,
+ 0x605d, 0x522d, 0x6062, 0x605b, 0x6059, 0x605f, 0x6060, 0x605e,
+ 0x6064, 0x4677, 0x582c, 0x546b, 0x6066, 0x4a49, 0x6065, 0x3841,
+ 0x6067, 0x6068, 0x6069, 0x6063, 0x3a3f, 0x4c67, 0x606a, 0x4f79,
+ 0x606b, 0x4842, 0x3d40, 0x4452, 0x606c, 0x606d, 0x4774, 0x4b44,
+ 0x606e, 0x3b58, 0x5836, 0x5272, 0x606f, 0x4d45, 0x365a, 0x6071,
+ 0x5430, 0x4027, 0x3451, 0x4e27, 0x6070, 0x6072, 0x394c, 0x397a,
+ 0x4d3c, 0x6073, 0x4654, 0x6074, 0x5432, 0x4826, 0x6076, 0x6075,
+ 0x6077, 0x4d41, 0x4a25, 0x545a, 0x5b57, 0x5b59, 0x5b58, 0x3967,
+ 0x5b5c, 0x5b5d, 0x3558, 0x5b5a, 0x5b5b, 0x3321, 0x5b5f, 0x3b78,
+ 0x5637, 0x5b60, 0x3e79, 0x373b, 0x5b50, 0x4c2e, 0x3f32, 0x3b35,
+ 0x5778, 0x3f53, 0x3f69, 0x3c61, 0x4c33, 0x5b5e, 0x3053, 0x4e6b,
+ 0x3758, 0x5739, 0x4642, 0x4024, 0x4c39, 0x5b67, 0x5b61, 0x463a,
+ 0x5b63, 0x5b68, 0x4577, 0x5b6a, 0x5b69, 0x3f40, 0x5b66, 0x5b65,
+ 0x3439, 0x402c, 0x4222, 0x5b62, 0x5b64, 0x504d, 0x5b6d, 0x405d,
+ 0x5b72, 0x3662, 0x5b73, 0x5b52, 0x3938, 0x542b, 0x5b6c, 0x3f51,
+ 0x5b70, 0x5b51, 0x3566, 0x5b6b, 0x3f65, 0x5b6e, 0x5b71, 0x5b79,
+ 0x3921, 0x3023, 0x4271, 0x3347, 0x5b6f, 0x5b78, 0x4652, 0x5b74,
+ 0x5b75, 0x5b77, 0x5b76, 0x5b7e, 0x5372, 0x323a, 0x5b7d, 0x5c24,
+ 0x5b7b, 0x5b7a, 0x5b7c, 0x4560, 0x3b79, 0x5c23, 0x5c25, 0x4c43,
+ 0x3651, 0x5d40, 0x5c21, 0x5c22, 0x4735, 0x3669, 0x5c27, 0x5c26,
+ 0x5c29, 0x3124, 0x354c, 0x3f30, 0x515f, 0x3642, 0x5c28, 0x4b7a,
+ 0x6b73, 0x4b5c, 0x4b7e, 0x4c41, 0x487b, 0x5c2a, 0x4c6e, 0x5c2b,
+ 0x5b53, 0x5c2f, 0x5c2c, 0x3e33, 0x4a7b, 0x5c2d, 0x494a, 0x4439,
+ 0x473d, 0x5c2e, 0x5476, 0x5066, 0x442b, 0x3655, 0x5b54, 0x315a,
+ 0x5b55, 0x5b56, 0x3a3e, 0x4840, 0x4a3f, 0x4849, 0x5733, 0x4979,
+ 0x3f47, 0x3a78, 0x523c, 0x623a, 0x3426, 0x3138, 0x3834, 0x4f44,
+ 0x5967, 0x4f26, 0x4d62, 0x596d, 0x3660, 0x5239, 0x393b, 0x6239,
+ 0x6237, 0x3473, 0x4c6c, 0x4c2b, 0x3772, 0x5832, 0x516b, 0x3a3b,
+ 0x4a27, 0x4d37, 0x5244, 0x3f64, 0x3c50, 0x3661, 0x5e45, 0x5e46,
+ 0x5b3c, 0x5159, 0x4666, 0x444e, 0x376e, 0x375c, 0x3f7c, 0x5760,
+ 0x4675, 0x313c, 0x5e48, 0x3d31, 0x4c57, 0x5e4a, 0x5e49, 0x356c,
+ 0x495d, 0x3042, 0x452e, 0x452b, 0x444c, 0x3c69, 0x4b7d, 0x3a43,
+ 0x6579, 0x4867, 0x657a, 0x4d7d, 0x5731, 0x383e, 0x4268, 0x4851,
+ 0x657b, 0x364a, 0x3c4b, 0x517d, 0x6621, 0x436e, 0x6624, 0x657e,
+ 0x6625, 0x4d57, 0x3741, 0x657c, 0x657d, 0x6623, 0x445d, 0x6628,
+ 0x6627, 0x4343, 0x465e, 0x662a, 0x4437, 0x6622, 0x4a3c, 0x3d63,
+ 0x3943, 0x6626, 0x5055, 0x4e2f, 0x6629, 0x6630, 0x5226, 0x3d2a,
+ 0x662d, 0x662f, 0x4051, 0x524c, 0x3c27, 0x6631, 0x5276, 0x574b,
+ 0x4d7e, 0x4d5e, 0x4226, 0x662b, 0x662c, 0x3d3f, 0x662e, 0x6633,
+ 0x6632, 0x6636, 0x6638, 0x446f, 0x4448, 0x3e6a, 0x496f, 0x6637,
+ 0x3670, 0x4364, 0x5369, 0x6634, 0x6635, 0x4822, 0x663d, 0x6639,
+ 0x4645, 0x4d71, 0x663b, 0x663c, 0x3b69, 0x663e, 0x663a, 0x4037,
+ 0x5324, 0x663f, 0x4974, 0x6643, 0x6644, 0x5076, 0x433d, 0x4344,
+ 0x6642, 0x6641, 0x6647, 0x4f31, 0x6b74, 0x664a, 0x6645, 0x3c5e,
+ 0x4929, 0x3c35, 0x4f53, 0x6648, 0x6649, 0x664e, 0x6650, 0x6651,
+ 0x664b, 0x3555, 0x664c, 0x664f, 0x445b, 0x6646, 0x664d, 0x6652,
+ 0x6654, 0x6653, 0x6655, 0x5978, 0x6656, 0x6657, 0x5753, 0x665d,
+ 0x665e, 0x3f57, 0x5450, 0x5756, 0x3466, 0x4b6f, 0x665a, 0x5843,
+ 0x574e, 0x5022, 0x434f, 0x665f, 0x3c3e, 0x3942, 0x665b, 0x5127,
+ 0x3a22, 0x424f, 0x582b, 0x4a6b, 0x656e, 0x665c, 0x3775, 0x4866,
+ 0x4475, 0x6532, 0x447e, 0x4b7c, 0x6533, 0x552c, 0x536e, 0x4a58,
+ 0x3032, 0x4b4e, 0x4d6a, 0x3a6a, 0x6535, 0x6534, 0x575a, 0x3959,
+ 0x5666, 0x3628, 0x4d70, 0x524b, 0x3126, 0x4a35, 0x3368, 0x4973,
+ 0x3f4d, 0x507b, 0x4a52, 0x6536, 0x3b42, 0x4f5c, 0x392c, 0x5457,
+ 0x3a26, 0x5167, 0x4f7c, 0x3c52, 0x6537, 0x485d, 0x3f6d, 0x3176,
+ 0x4b5e, 0x3c45, 0x3c44, 0x527a, 0x435c, 0x3f5c, 0x383b, 0x4342,
+ 0x3a2e, 0x5422, 0x475e, 0x442f, 0x326c, 0x3951, 0x653b, 0x4148,
+ 0x552f, 0x653c, 0x653e, 0x3467, 0x3654, 0x4b42, 0x5130, 0x353c,
+ 0x4a59, 0x3762, 0x4964, 0x3d2b, 0x4e3e, 0x5770, 0x5021, 0x4959,
+ 0x367b, 0x6658, 0x3c62, 0x333e, 0x4950, 0x6659, 0x3322, 0x5e4c,
+ 0x5348, 0x5e4d, 0x5222, 0x5e4e, 0x3e4d, 0x5e4f, 0x4a2c, 0x527c,
+ 0x335f, 0x656a, 0x4461, 0x3e21, 0x4e32, 0x4472, 0x3e56, 0x4628,
+ 0x3263, 0x3e53, 0x477c, 0x4c6b, 0x3d6c, 0x4e5d, 0x4a3a, 0x4641,
+ 0x656c, 0x503c, 0x5539, 0x656d, 0x4a74, 0x4d40, 0x4245, 0x656f,
+ 0x4244, 0x6570, 0x6578, 0x4d4d, 0x493d, 0x5259, 0x6128, 0x536c,
+ 0x4b6a, 0x4671, 0x612c, 0x6127, 0x6129, 0x612a, 0x612f, 0x326d,
+ 0x612b, 0x385a, 0x612d, 0x612e, 0x6130, 0x353a, 0x6131, 0x6133,
+ 0x6138, 0x5152, 0x6136, 0x6135, 0x416b, 0x6137, 0x5440, 0x6132,
+ 0x613a, 0x3036, 0x6134, 0x3f79, 0x6139, 0x613b, 0x613e, 0x613c,
+ 0x5645, 0x4f3f, 0x613d, 0x613f, 0x424d, 0x366b, 0x5378, 0x474d,
+ 0x3765, 0x3e7e, 0x6140, 0x6141, 0x6147, 0x3367, 0x4669, 0x345e,
+ 0x5142, 0x6148, 0x6146, 0x6145, 0x6143, 0x6142, 0x3140, 0x5538,
+ 0x6144, 0x614b, 0x614c, 0x614a, 0x6f7a, 0x6153, 0x6152, 0x4736,
+ 0x6149, 0x614e, 0x6150, 0x6154, 0x6151, 0x614d, 0x614f, 0x6155,
+ 0x6156, 0x6157, 0x6158, 0x615a, 0x615b, 0x4e21, 0x675d, 0x3428,
+ 0x565d, 0x5132, 0x3332, 0x3924, 0x5773, 0x4749, 0x3e5e, 0x392e,
+ 0x4e57, 0x326e, 0x5b4f, 0x3c3a, 0x5251, 0x4b48, 0x304d, 0x4f6f,
+ 0x5963, 0x3d6d, 0x3152, 0x4a50, 0x323c, 0x4b27, 0x372b, 0x4a26,
+ 0x4f23, 0x6078, 0x554a, 0x607b, 0x607a, 0x4541, 0x4c7b, 0x4131,
+ 0x6079, 0x5663, 0x322f, 0x5644, 0x355b, 0x3478, 0x5621, 0x4f2f,
+ 0x306f, 0x607c, 0x6121, 0x3323, 0x607d, 0x607e, 0x4331, 0x435d,
+ 0x6122, 0x3779, 0x3b4f, 0x6123, 0x443b, 0x6124, 0x6125, 0x6126,
+ 0x3431, 0x3849, 0x463d, 0x446a, 0x3222, 0x5052, 0x675b, 0x3b43,
+ 0x5357, 0x5344, 0x3963, 0x624f, 0x572f, 0x476c, 0x3153, 0x3432,
+ 0x6251, 0x5072, 0x422e, 0x6250, 0x3f62, 0x5326, 0x3557, 0x6252,
+ 0x356a, 0x436d, 0x387d, 0x382e, 0x4553, 0x374f, 0x6254, 0x6253,
+ 0x3648, 0x5779, 0x4d25, 0x6258, 0x6256, 0x4a7c, 0x3f35, 0x5339,
+ 0x6255, 0x6257, 0x412e, 0x4048, 0x625b, 0x625a, 0x402a, 0x414e,
+ 0x625c, 0x625d, 0x625e, 0x5b48, 0x5153, 0x4d22, 0x3d28, 0x5e43,
+ 0x5825, 0x3f2a, 0x5b4d, 0x526c, 0x467a, 0x452a, 0x5e44, 0x3157,
+ 0x5f2e, 0x4a3d, 0x5f31, 0x392d, 0x527d, 0x3825, 0x3a6b, 0x335a,
+ 0x355c, 0x5545, 0x4356, 0x4f52, 0x3b21, 0x6573, 0x6572, 0x6574,
+ 0x4d64, 0x4875, 0x352f, 0x473f, 0x6576, 0x6c30, 0x6566, 0x3969,
+ 0x3531, 0x423c, 0x6568, 0x6567, 0x6569, 0x524d, 0x616a, 0x504e,
+ 0x4d2e, 0x5165, 0x324a, 0x316b, 0x3172, 0x456d, 0x5543, 0x5330,
+ 0x615c, 0x615d, 0x525b, 0x3339, 0x314b, 0x4d79, 0x5577, 0x615e,
+ 0x3e36, 0x347d, 0x615f, 0x3a5c, 0x6160, 0x3b32, 0x4249, 0x6161,
+ 0x506c, 0x4d3d, 0x6162, 0x3543, 0x4547, 0x6163, 0x6164, 0x5379,
+ 0x6165, 0x512d, 0x6166, 0x4e22, 0x6167, 0x3542, 0x6168, 0x3b55,
+ 0x5044, 0x6260, 0x3158, 0x5264, 0x6261, 0x3c49, 0x484c, 0x6263,
+ 0x6c7e, 0x6c7d, 0x5f2f, 0x6262, 0x563e, 0x4d7c, 0x4326, 0x6343,
+ 0x5652, 0x6267, 0x6268, 0x5347, 0x626c, 0x3f6c, 0x626d, 0x6265,
+ 0x3340, 0x446e, 0x626e, 0x5043, 0x3a76, 0x6269, 0x375e, 0x3b33,
+ 0x4c2c, 0x4b4b, 0x6264, 0x6266, 0x626a, 0x626b, 0x6277, 0x6274,
+ 0x5475, 0x6273, 0x452d, 0x557a, 0x4542, 0x3240, 0x626f, 0x6272,
+ 0x412f, 0x4b3c, 0x3521, 0x6279, 0x3c31, 0x6271, 0x5054, 0x5439,
+ 0x6275, 0x3956, 0x6276, 0x4753, 0x6270, 0x575c, 0x6d21, 0x6278,
+ 0x6d25, 0x627e, 0x4a51, 0x4135, 0x3b50, 0x3f56, 0x3a63, 0x4b21,
+ 0x6d26, 0x6d23, 0x6d22, 0x3b56, 0x6d27, 0x5074, 0x6d24, 0x3a5e,
+ 0x3677, 0x6321, 0x3632, 0x4c71, 0x3927, 0x4f22, 0x4721, 0x3f52,
+ 0x3671, 0x627a, 0x627b, 0x627d, 0x627c, 0x4455, 0x6322, 0x5341,
+ 0x6327, 0x4744, 0x4f24, 0x6329, 0x3a37, 0x6328, 0x3b5a, 0x6323,
+ 0x6324, 0x632a, 0x6326, 0x4e72, 0x5346, 0x3b3c, 0x5443, 0x447a,
+ 0x6d28, 0x507c, 0x6325, 0x4375, 0x632d, 0x312f, 0x6332, 0x3c42,
+ 0x632c, 0x353f, 0x4769, 0x6330, 0x3e2a, 0x4d6f, 0x3b73, 0x4c68,
+ 0x632f, 0x6331, 0x4f27, 0x632e, 0x4e29, 0x3b5d, 0x356b, 0x3e65,
+ 0x3252, 0x334d, 0x3139, 0x632b, 0x3251, 0x352c, 0x395f, 0x3668,
+ 0x4f6b, 0x6337, 0x3b4c, 0x4847, 0x504a, 0x6338, 0x336e, 0x6d29,
+ 0x537a, 0x5364, 0x6d2a, 0x6339, 0x5262, 0x6335, 0x535e, 0x3850,
+ 0x6333, 0x6336, 0x375f, 0x6334, 0x4022, 0x633a, 0x5438, 0x3448,
+ 0x633b, 0x3b45, 0x4977, 0x4965, 0x443d, 0x6d2b, 0x427d, 0x3b5b,
+ 0x3f2e, 0x4e3f, 0x633c, 0x3f36, 0x316f, 0x5477, 0x633e, 0x6d2d,
+ 0x633f, 0x3a29, 0x6d2c, 0x633d, 0x6340, 0x3a36, 0x362e, 0x5038,
+ 0x3043, 0x6d2e, 0x6d2f, 0x4041, 0x6341, 0x4533, 0x6342, 0x5c32,
+ 0x6d30, 0x386a, 0x4e6c, 0x6a27, 0x5067, 0x4a79, 0x4856, 0x4f37,
+ 0x3349, 0x4e52, 0x3d64, 0x635e, 0x3b72, 0x6a28, 0x553d, 0x465d,
+ 0x6a29, 0x6a2a, 0x6a2c, 0x6a2b, 0x6a2e, 0x6a2d, 0x3d58, 0x6a2f,
+ 0x423e, 0x3441, 0x3477, 0x3b27, 0x6c66, 0x6c65, 0x373f, 0x4b79,
+ 0x3162, 0x6c67, 0x4948, 0x6c68, 0x6c69, 0x4a56, 0x5e50, 0x3245,
+ 0x547a, 0x464b, 0x3047, 0x3472, 0x4853, 0x4d50, 0x3f38, 0x3f5b,
+ 0x4724, 0x5634, 0x4029, 0x5e51, 0x4928, 0x516f, 0x4524, 0x3067,
+ 0x3336, 0x4845, 0x3062, 0x3776, 0x457a, 0x3673, 0x5552, 0x3350,
+ 0x3c3c, 0x332d, 0x3e71, 0x3051, 0x5256, 0x4a63, 0x5725, 0x4d36,
+ 0x3636, 0x3f39, 0x555b, 0x3827, 0x4557, 0x5e52, 0x3f59, 0x4255,
+ 0x4740, 0x3b24, 0x3128, 0x456a, 0x457b, 0x4c27, 0x3127, 0x3556,
+ 0x4428, 0x5e53, 0x513a, 0x3369, 0x4372, 0x3777, 0x5674, 0x3523,
+ 0x3270, 0x4434, 0x4469, 0x402d, 0x5e54, 0x3068, 0x4544, 0x4160,
+ 0x3955, 0x3e5c, 0x4d58, 0x304e, 0x4d4f, 0x5e56, 0x3e50, 0x573e,
+ 0x5e55, 0x5550, 0x305d, 0x4462, 0x4223, 0x3c70, 0x5335, 0x4039,
+ 0x4521, 0x3226, 0x5471, 0x4028, 0x4a43, 0x5e57, 0x557c, 0x3930,
+ 0x482d, 0x4b29, 0x5e59, 0x3f3d, 0x4634, 0x5727, 0x4a30, 0x4443,
+ 0x3356, 0x3952, 0x5638, 0x6a7c, 0x3034, 0x3f66, 0x4c74, 0x4d5a,
+ 0x563f, 0x424e, 0x4e4e, 0x4c22, 0x502e, 0x4453, 0x3532, 0x5e58,
+ 0x5575, 0x3c37, 0x3b53, 0x3024, 0x4532, 0x346c, 0x5571, 0x6a7d,
+ 0x5e5a, 0x4d26, 0x4d6c, 0x4e66, 0x5e5c, 0x4d31, 0x4026, 0x573d,
+ 0x5e5b, 0x3046, 0x3a34, 0x4953, 0x4473, 0x3e68, 0x3236, 0x404c,
+ 0x4b70, 0x3c71, 0x3b3b, 0x3537, 0x4575, 0x5e66, 0x5e63, 0x3e5d,
+ 0x5e5f, 0x3437, 0x3d5d, 0x5e60, 0x446d, 0x4f46, 0x3560, 0x365e,
+ 0x4a5a, 0x3574, 0x5e65, 0x5546, 0x5e61, 0x4c4d, 0x467e, 0x4545,
+ 0x5234, 0x3e72, 0x4253, 0x4c3d, 0x3338, 0x3d53, 0x3f58, 0x4d46,
+ 0x515a, 0x346b, 0x5e64, 0x5e5d, 0x5e67, 0x6a7e, 0x4230, 0x5e62,
+ 0x5640, 0x3527, 0x3274, 0x5e68, 0x5e72, 0x5e6d, 0x5e71, 0x4860,
+ 0x5761, 0x5e6f, 0x4368, 0x4c61, 0x3265, 0x523e, 0x5e6e, 0x5e6b,
+ 0x4e55, 0x3427, 0x3f2b, 0x3e3e, 0x3d52, 0x5e69, 0x542e, 0x5e5e,
+ 0x5e6a, 0x403f, 0x5e6c, 0x3273, 0x3869, 0x4227, 0x3d41, 0x5e75,
+ 0x5e78, 0x322b, 0x3424, 0x346a, 0x4926, 0x5e76, 0x4b51, 0x3863,
+ 0x5e77, 0x5e7a, 0x5e79, 0x4c42, 0x3061, 0x346e, 0x653a, 0x502f,
+ 0x326b, 0x6b21, 0x5e74, 0x4963, 0x5e73, 0x305a, 0x5221, 0x3177,
+ 0x4c2f, 0x5e70, 0x4b24, 0x552a, 0x5e7b, 0x345d, 0x4426, 0x5e7d,
+ 0x437e, 0x4421, 0x5f21, 0x414c, 0x5e7c, 0x3e6f, 0x4632, 0x3345,
+ 0x4876, 0x4b3a, 0x5e7e, 0x5f24, 0x5732, 0x3337, 0x4143, 0x474b,
+ 0x3225, 0x3469, 0x572b, 0x446c, 0x5f22, 0x5f23, 0x5f25, 0x3a33,
+ 0x5f26, 0x405e, 0x4943, 0x3259, 0x4766, 0x5f27, 0x475c, 0x5f28,
+ 0x6b22, 0x4b53, 0x5f2a, 0x5f29, 0x3241, 0x454a, 0x5f2b, 0x545c,
+ 0x4841, 0x5f2c, 0x3e70, 0x5f2d, 0x5627, 0x6a37, 0x6b36, 0x4a55,
+ 0x587c, 0x3844, 0x3925, 0x3745, 0x557e, 0x394a, 0x5027, 0x744d,
+ 0x3550, 0x4374, 0x3e48, 0x6b37, 0x303d, 0x3d4c, 0x4132, 0x3156,
+ 0x3328, 0x3852, 0x4922, 0x3658, 0x6b38, 0x3e34, 0x4a7d, 0x4743,
+ 0x557b, 0x3773, 0x4e44, 0x552b, 0x3173, 0x6c33, 0x305f, 0x6c35,
+ 0x3637, 0x414f, 0x757a, 0x5031, 0x5565, 0x4e53, 0x3d6f, 0x3362,
+ 0x382b, 0x5536, 0x6d3d, 0x364f, 0x4b39, 0x5042, 0x373d, 0x6c36,
+ 0x4a29, 0x4554, 0x6c39, 0x6c38, 0x4243, 0x6c37, 0x507d, 0x6c3a,
+ 0x6c3b, 0x5765, 0x6c3c, 0x6c3d, 0x466c, 0x4e5e, 0x3c48, 0x4855,
+ 0x3529, 0x3e49, 0x563c, 0x5467, 0x512e, 0x5071, 0x6a38, 0x6a39,
+ 0x6a3a, 0x3a35, 0x4a31, 0x3f75, 0x4d7a, 0x6a40, 0x303a, 0x6a3e,
+ 0x4025, 0x6a3b, 0x327d, 0x4377, 0x3b68, 0x5257, 0x4e74, 0x6a3f,
+ 0x6a3c, 0x6a43, 0x5047, 0x5333, 0x343a, 0x4341, 0x5772, 0x5551,
+ 0x4a47, 0x6a45, 0x6a44, 0x6a47, 0x6a46, 0x5667, 0x4f54, 0x6a4b,
+ 0x3b4e, 0x3d7a, 0x494e, 0x6a4c, 0x4939, 0x4f7e, 0x6a4a, 0x544e,
+ 0x6a4d, 0x6a4f, 0x4d6d, 0x6a49, 0x6a4e, 0x4e6e, 0x3b5e, 0x333f,
+ 0x4655, 0x3e30, 0x4e7a, 0x4767, 0x3e27, 0x6a50, 0x5647, 0x4140,
+ 0x545d, 0x6a51, 0x4f3e, 0x6a52, 0x4a6e, 0x452f, 0x3035, 0x6a54,
+ 0x6a53, 0x745f, 0x443a, 0x3129, 0x655f, 0x6a55, 0x4a6f, 0x6a56,
+ 0x6a57, 0x4658, 0x6a58, 0x6a59, 0x543b, 0x477a, 0x5237, 0x387c,
+ 0x6a42, 0x325c, 0x427c, 0x5478, 0x4c66, 0x576e, 0x5442, 0x5350,
+ 0x6b43, 0x4573, 0x377e, 0x6b54, 0x4b37, 0x6b5e, 0x404a, 0x4d7b,
+ 0x332f, 0x465a, 0x6b7c, 0x443e, 0x4e34, 0x4429, 0x313e, 0x547d,
+ 0x4a75, 0x566c, 0x4653, 0x3664, 0x3b7a, 0x5060, 0x4931, 0x5453,
+ 0x4828, 0x384b, 0x683e, 0x493c, 0x683b, 0x406e, 0x5053, 0x3244,
+ 0x3465, 0x683c, 0x5548, 0x3645, 0x683d, 0x4a78, 0x385c, 0x4c75,
+ 0x4034, 0x516e, 0x683f, 0x6842, 0x3a3c, 0x312d, 0x3d5c, 0x6a3d,
+ 0x6843, 0x6846, 0x684b, 0x684c, 0x4b49, 0x3065, 0x3c2b, 0x3939,
+ 0x6841, 0x4d77, 0x684a, 0x4e76, 0x556d, 0x4156, 0x6844, 0x4336,
+ 0x397b, 0x5626, 0x6848, 0x4a60, 0x5466, 0x6840, 0x6845, 0x6847,
+ 0x4739, 0x3763, 0x6849, 0x3f5d, 0x6852, 0x6857, 0x6855, 0x3c5c,
+ 0x3c4f, 0x685b, 0x685e, 0x685a, 0x317a, 0x3058, 0x4433, 0x384c,
+ 0x4662, 0x483e, 0x4861, 0x684f, 0x6854, 0x6856, 0x3971, 0x6858,
+ 0x5775, 0x447b, 0x685c, 0x3269, 0x6851, 0x3c6d, 0x3f42, 0x684d,
+ 0x5679, 0x4178, 0x3271, 0x685f, 0x4a41, 0x6859, 0x5524, 0x316a,
+ 0x553b, 0x684e, 0x6850, 0x3630, 0x6853, 0x685d, 0x4038, 0x4a77,
+ 0x4b28, 0x465c, 0x4075, 0x6869, 0x5023, 0x6872, 0x566a, 0x6860,
+ 0x6861, 0x5179, 0x3a4b, 0x3879, 0x3871, 0x5454, 0x686f, 0x686e,
+ 0x686c, 0x3970, 0x4c52, 0x6866, 0x4e26, 0x3f72, 0x3038, 0x6871,
+ 0x6870, 0x5740, 0x6864, 0x4d29, 0x4923, 0x3b38, 0x3d5b, 0x686a,
+ 0x6862, 0x6863, 0x6865, 0x3535, 0x6867, 0x4745, 0x686b, 0x686d,
+ 0x3d30, 0x572e, 0x6878, 0x6875, 0x4d30, 0x6876, 0x413a, 0x6868,
+ 0x4337, 0x3070, 0x6874, 0x6877, 0x3923, 0x4952, 0x434e, 0x4e60,
+ 0x4066, 0x4b73, 0x4c5d, 0x5035, 0x4a61, 0x6873, 0x3c6c, 0x6879,
+ 0x435e, 0x4665, 0x3977, 0x3074, 0x5758, 0x3c2c, 0x456f, 0x4c44,
+ 0x6926, 0x492d, 0x6922, 0x4062, 0x3f43, 0x687e, 0x3957, 0x687b,
+ 0x6924, 0x524e, 0x6923, 0x5632, 0x5735, 0x6927, 0x3d37, 0x687c,
+ 0x687d, 0x6921, 0x4d56, 0x522c, 0x6932, 0x6929, 0x342a, 0x343b,
+ 0x692b, 0x5028, 0x6925, 0x337e, 0x692c, 0x4063, 0x692a, 0x6939,
+ 0x6938, 0x692e, 0x687a, 0x6928, 0x3f2c, 0x6931, 0x693a, 0x4225,
+ 0x692f, 0x3845, 0x692d, 0x535c, 0x6934, 0x6935, 0x6937, 0x6947,
+ 0x4046, 0x6945, 0x6930, 0x693b, 0x3071, 0x693c, 0x5525, 0x693e,
+ 0x693f, 0x6941, 0x4171, 0x4836, 0x693d, 0x6942, 0x6943, 0x6933,
+ 0x6936, 0x3b31, 0x6940, 0x3c77, 0x6944, 0x6946, 0x694a, 0x694e,
+ 0x325b, 0x6948, 0x372e, 0x694b, 0x694c, 0x5541, 0x4423, 0x6958,
+ 0x3a61, 0x6949, 0x5323, 0x6954, 0x6957, 0x6950, 0x694f, 0x4741,
+ 0x6952, 0x6959, 0x3348, 0x6953, 0x4f70, 0x694d, 0x3377, 0x6956,
+ 0x695a, 0x4c34, 0x4f2d, 0x6955, 0x695c, 0x695b, 0x695e, 0x6951,
+ 0x695d, 0x695f, 0x434a, 0x4737, 0x344e, 0x3b36, 0x5040, 0x6c23,
+ 0x4537, 0x537b, 0x6c24, 0x6c25, 0x465b, 0x3f6e, 0x6c26, 0x6c27,
+ 0x502a, 0x4738, 0x3868, 0x6c28, 0x5639, 0x557d, 0x344b, 0x323d,
+ 0x4e64, 0x4667, 0x4d61, 0x3475, 0x4b40, 0x3c5f, 0x6962, 0x6963,
+ 0x516a, 0x6965, 0x3479, 0x6964, 0x5133, 0x4a62, 0x3250, 0x6968,
+ 0x6966, 0x6967, 0x5633, 0x6969, 0x696a, 0x696b, 0x696c, 0x6c2f,
+ 0x4539, 0x364e, 0x5273, 0x356e, 0x3b59, 0x6c31, 0x5263, 0x4e63,
+ 0x4438, 0x433f, 0x363e, 0x5839, 0x3148, 0x314f, 0x3151, 0x457e,
+ 0x3150, 0x432b, 0x5531, 0x6b24, 0x3a41, 0x4c3a, 0x6b25, 0x6b27,
+ 0x6b28, 0x6b26, 0x6b29, 0x6b2b, 0x6b2a, 0x6b2c, 0x4a4f, 0x5835,
+ 0x4371, 0x4325, 0x4678, 0x6b2d, 0x444a, 0x6b2e, 0x6b2f, 0x6b30,
+ 0x3755, 0x377a, 0x6b31, 0x4762, 0x6b33, 0x3a24, 0x5175, 0x3031,
+ 0x6b32, 0x6b34, 0x352a, 0x4248, 0x4768, 0x6b35, 0x4b2e, 0x635f,
+ 0x5340, 0x595b, 0x4d21, 0x562d, 0x4773, 0x5960, 0x3b63, 0x3a3a,
+ 0x6362, 0x4f2b, 0x6360, 0x4947, 0x3a39, 0x5134, 0x6361, 0x486a,
+ 0x392f, 0x3d2d, 0x3358, 0x4e5b, 0x4c40, 0x6368, 0x6369, 0x4d74,
+ 0x4c2d, 0x3c33, 0x636a, 0x636b, 0x505a, 0x467b, 0x375a, 0x475f,
+ 0x524a, 0x4e56, 0x6364, 0x636c, 0x4972, 0x3341, 0x6367, 0x4663,
+ 0x6365, 0x6d33, 0x6366, 0x4933, 0x4566, 0x3935, 0x433b, 0x6363,
+ 0x453d, 0x4124, 0x4259, 0x3257, 0x636d, 0x3b26, 0x442d, 0x6370,
+ 0x3e5a, 0x637b, 0x6375, 0x3a53, 0x3750, 0x534d, 0x564e, 0x5553,
+ 0x3941, 0x5534, 0x5158, 0x5039, 0x4776, 0x482a, 0x3234, 0x435a,
+ 0x636e, 0x637c, 0x636f, 0x3728, 0x6377, 0x6374, 0x373a, 0x4522,
+ 0x6376, 0x455d, 0x3228, 0x467c, 0x4460, 0x5722, 0x4061, 0x6379,
+ 0x637a, 0x637d, 0x4c29, 0x6373, 0x533e, 0x3143, 0x6d34, 0x6371,
+ 0x6372, 0x6378, 0x503a, 0x4643, 0x5473, 0x637e, 0x3d60, 0x6427,
+ 0x6426, 0x5173, 0x6423, 0x6429, 0x4877, 0x4f34, 0x6428, 0x642e,
+ 0x4265, 0x3634, 0x3d72, 0x6422, 0x3a69, 0x642a, 0x642c, 0x367d,
+ 0x565e, 0x6432, 0x642d, 0x6421, 0x3b6e, 0x4d5d, 0x4722, 0x4549,
+ 0x4177, 0x6424, 0x4733, 0x3d2c, 0x3d3d, 0x6425, 0x5747, 0x3262,
+ 0x642b, 0x3c43, 0x642f, 0x3b6b, 0x6430, 0x4528, 0x6431, 0x5563,
+ 0x3f23, 0x643a, 0x6437, 0x643b, 0x643d, 0x4656, 0x3a46, 0x404b,
+ 0x3821, 0x6434, 0x5421, 0x3a23, 0x3d7e, 0x643c, 0x4d3f, 0x4479,
+ 0x4f7b, 0x4966, 0x533f, 0x4f51, 0x6433, 0x6438, 0x6439, 0x4c69,
+ 0x4c4e, 0x4054, 0x6435, 0x4130, 0x6436, 0x4e50, 0x3b41, 0x3553,
+ 0x4873, 0x3d27, 0x5547, 0x492c, 0x3822, 0x644a, 0x644c, 0x5144,
+ 0x523a, 0x3a2d, 0x3a54, 0x6443, 0x356d, 0x574d, 0x6440, 0x4f7d,
+ 0x643f, 0x415c, 0x4c4a, 0x4a67, 0x4457, 0x4c54, 0x6448, 0x6447,
+ 0x6441, 0x6444, 0x352d, 0x5359, 0x6446, 0x5279, 0x3463, 0x3b34,
+ 0x496e, 0x343e, 0x3b6c, 0x514d, 0x4c6d, 0x6d35, 0x4765, 0x5428,
+ 0x644b, 0x5755, 0x6442, 0x3d25, 0x6445, 0x5366, 0x6449, 0x4978,
+ 0x643e, 0x5365, 0x477e, 0x3649, 0x547c, 0x3233, 0x6457, 0x4e42,
+ 0x644d, 0x4e3c, 0x385b, 0x6456, 0x3f4a, 0x534e, 0x436c, 0x4548,
+ 0x6458, 0x4d44, 0x644f, 0x6454, 0x6455, 0x3a7e, 0x4f66, 0x553f,
+ 0x6452, 0x6450, 0x644e, 0x4d65, 0x4a2a, 0x4023, 0x3d26, 0x6453,
+ 0x3848, 0x6467, 0x5434, 0x645b, 0x416f, 0x6469, 0x5267, 0x645f,
+ 0x6460, 0x4f2a, 0x4b5d, 0x645a, 0x6451, 0x6465, 0x485c, 0x6463,
+ 0x4467, 0x6462, 0x6461, 0x337c, 0x6468, 0x3561, 0x574c, 0x6466,
+ 0x3b2c, 0x5752, 0x4c4f, 0x6b78, 0x6464, 0x3976, 0x564d, 0x6459,
+ 0x645c, 0x427a, 0x645e, 0x424b, 0x4044, 0x4250, 0x3175, 0x4c32,
+ 0x354e, 0x646f, 0x462f, 0x4661, 0x6475, 0x4229, 0x406c, 0x515d,
+ 0x646e, 0x442e, 0x646d, 0x6476, 0x6474, 0x427e, 0x645d, 0x6470,
+ 0x4a7e, 0x5544, 0x6471, 0x517a, 0x646b, 0x646c, 0x6472, 0x4e2b,
+ 0x454b, 0x4731, 0x423a, 0x646a, 0x414a, 0x4c36, 0x3331, 0x647b,
+ 0x6473, 0x647a, 0x647d, 0x647c, 0x334e, 0x333a, 0x6477, 0x6479,
+ 0x6478, 0x456c, 0x403d, 0x5468, 0x6522, 0x3044, 0x6524, 0x6523,
+ 0x3c24, 0x6525, 0x6521, 0x647e, 0x3174, 0x6528, 0x6529, 0x6526,
+ 0x6527, 0x652a, 0x4659, 0x652b, 0x652d, 0x652c, 0x652f, 0x652e,
+ 0x3960, 0x6530, 0x6531, 0x3b70, 0x6c61, 0x4370, 0x3546, 0x3b52,
+ 0x4169, 0x546e, 0x3e44, 0x5746, 0x5456, 0x3253, 0x6c3e, 0x6a41,
+ 0x422f, 0x3436, 0x5157, 0x3334, 0x4832, 0x3f3b, 0x6c40, 0x564b,
+ 0x6c3f, 0x6c41, 0x6c45, 0x3e66, 0x4c3f, 0x455a, 0x3e3c, 0x6c46,
+ 0x317e, 0x6c44, 0x5528, 0x3563, 0x6c42, 0x4136, 0x3363, 0x6c43,
+ 0x4b38, 0x4043, 0x4c7e, 0x4152, 0x6c48, 0x3a66, 0x4053, 0x5672,
+ 0x514c, 0x3f3e, 0x3733, 0x4955, 0x6c47, 0x3b62, 0x4c4c, 0x3d7d,
+ 0x4848, 0x4f29, 0x4d69, 0x456b, 0x3769, 0x5149, 0x3a38, 0x6c49,
+ 0x6c4a, 0x3b40, 0x6c4b, 0x6c62, 0x313a, 0x3759, 0x3d39, 0x6c4c,
+ 0x5166, 0x6c4d, 0x483b, 0x6c51, 0x6c53, 0x3b4d, 0x3c65, 0x6c4f,
+ 0x4937, 0x433a, 0x6c63, 0x5555, 0x6c50, 0x5673, 0x6c52, 0x6c4e,
+ 0x6c54, 0x6c55, 0x493f, 0x4f28, 0x505c, 0x512c, 0x485b, 0x6c56,
+ 0x4e75, 0x4a6c, 0x6c5a, 0x6c59, 0x303e, 0x6c57, 0x6c58, 0x6c64,
+ 0x483c, 0x4147, 0x6c5c, 0x5160, 0x6c5b, 0x546f, 0x6c5d, 0x5b46,
+ 0x6c5e, 0x312c, 0x6c5f, 0x6c60, 0x5726, 0x4540, 0x6b3c, 0x302e,
+ 0x3e74, 0x3838, 0x522f, 0x3056, 0x3579, 0x5833, 0x4b2c, 0x635d,
+ 0x462c, 0x3066, 0x4546, 0x6b39, 0x6b3a, 0x6b3b, 0x5140, 0x4523,
+ 0x6a72, 0x4432, 0x4435, 0x404e, 0x6a73, 0x4441, 0x4e6f, 0x6a70,
+ 0x6a74, 0x497c, 0x4723, 0x4c58, 0x4e7e, 0x6a75, 0x6a76, 0x4f2c,
+ 0x4067, 0x6a77, 0x363f, 0x6a78, 0x6a79, 0x6a7a, 0x6a7b, 0x6a71,
+ 0x482e, 0x616b, 0x3738, 0x616c, 0x616d, 0x5734, 0x616e, 0x616f,
+ 0x534c, 0x6171, 0x3f71, 0x6170, 0x3552, 0x3137, 0x6173, 0x6172,
+ 0x3a7c, 0x6174, 0x3937, 0x3e51, 0x447c, 0x3a5d, 0x3d46, 0x6175,
+ 0x6177, 0x3640, 0x4f41, 0x4a28, 0x6176, 0x5578, 0x537c, 0x6178,
+ 0x617c, 0x6179, 0x617a, 0x406a, 0x617e, 0x6221, 0x4047, 0x617b,
+ 0x617d, 0x6225, 0x4154, 0x6223, 0x6228, 0x327e, 0x6222, 0x434d,
+ 0x3242, 0x6227, 0x6226, 0x6224, 0x6229, 0x622b, 0x5049, 0x566d,
+ 0x4328, 0x622c, 0x4f57, 0x622e, 0x3a6f, 0x6960, 0x622d, 0x622a,
+ 0x3b2b, 0x5433, 0x6230, 0x622f, 0x6961, 0x6231, 0x6232, 0x6233,
+ 0x4c21, 0x6234, 0x6235, 0x507e, 0x424a, 0x5371, 0x4d75, 0x6760,
+ 0x6761, 0x3e41, 0x426a, 0x6764, 0x6763, 0x4d66, 0x4335, 0x6762,
+ 0x3b37, 0x4f56, 0x4161, 0x6769, 0x6768, 0x6774, 0x3223, 0x676a,
+ 0x6766, 0x676c, 0x676b, 0x493a, 0x5564, 0x6765, 0x3729, 0x6767,
+ 0x676e, 0x6773, 0x5669, 0x676d, 0x6772, 0x6771, 0x3060, 0x6775,
+ 0x4772, 0x4045, 0x406d, 0x4170, 0x6770, 0x6776, 0x4b76, 0x6822,
+ 0x6821, 0x5741, 0x677a, 0x6779, 0x677b, 0x6777, 0x677e, 0x677d,
+ 0x677c, 0x4155, 0x4759, 0x457d, 0x4543, 0x476d, 0x6823, 0x6826,
+ 0x6825, 0x6827, 0x3a77, 0x6778, 0x6824, 0x4870, 0x492a, 0x6829,
+ 0x3965, 0x517e, 0x6828, 0x682a, 0x682d, 0x682e, 0x4127, 0x682f,
+ 0x6830, 0x682c, 0x6834, 0x682b, 0x6831, 0x6835, 0x6832, 0x6833,
+ 0x6837, 0x6836, 0x394f, 0x702c, 0x702d, 0x4630, 0x306a, 0x483f,
+ 0x4d5f, 0x4e4d, 0x6a31, 0x6a32, 0x463f, 0x3449, 0x6a33, 0x5567,
+ 0x5d79, 0x6a34, 0x6a35, 0x6a36, 0x384a, 0x5f30, 0x4975, 0x4c70,
+ 0x497a, 0x497b, 0x5343, 0x4b26, 0x3826, 0x702e, 0x3142, 0x6538,
+ 0x4c6f, 0x5349, 0x3c57, 0x496a, 0x3567, 0x4450, 0x3569, 0x6e2e,
+ 0x3b2d, 0x675e, 0x6e2f, 0x3329, 0x6e32, 0x6e31, 0x3d67, 0x6e30,
+ 0x4e37, 0x454f, 0x4174, 0x5b4e, 0x6e33, 0x5073, 0x4254, 0x4668,
+ 0x372c, 0x6e34, 0x336b, 0x3b7b, 0x6e35, 0x675c, 0x6e36, 0x3d2e,
+ 0x7162, 0x4a68, 0x5249, 0x705a, 0x705b, 0x705c, 0x4146, 0x386d,
+ 0x3e4e, 0x705e, 0x4531, 0x705d, 0x5171, 0x7060, 0x304c, 0x3d6a,
+ 0x525f, 0x705f, 0x342f, 0x3768, 0x7066, 0x7065, 0x4623, 0x7061,
+ 0x7062, 0x3443, 0x7063, 0x556e, 0x4c5b, 0x3e52, 0x3c32, 0x7068,
+ 0x7067, 0x7064, 0x3221, 0x5622, 0x5338, 0x3e37, 0x482c, 0x706a,
+ 0x5177, 0x564c, 0x3a5b, 0x7069, 0x363b, 0x4d34, 0x4626, 0x4121,
+ 0x706b, 0x706e, 0x706d, 0x7070, 0x706c, 0x3b3e, 0x706f, 0x4c35,
+ 0x7072, 0x3355, 0x3154, 0x7073, 0x7074, 0x7076, 0x3461, 0x7071,
+ 0x7077, 0x707a, 0x7078, 0x7075, 0x707d, 0x7079, 0x707c, 0x707e,
+ 0x7121, 0x4e41, 0x7124, 0x7123, 0x4176, 0x707b, 0x4a5d, 0x3471,
+ 0x3171, 0x4c31, 0x7126, 0x7127, 0x712c, 0x554e, 0x7129, 0x4833,
+ 0x7122, 0x712b, 0x7128, 0x7125, 0x712a, 0x3029, 0x712d, 0x712f,
+ 0x7131, 0x7130, 0x712e, 0x5122, 0x7132, 0x7133, 0x396f, 0x3547,
+ 0x3057, 0x3059, 0x546d, 0x3544, 0x3d54, 0x3b4a, 0x7027, 0x385e,
+ 0x7028, 0x3028, 0x7029, 0x4d6e, 0x702a, 0x702b, 0x4624, 0x5665,
+ 0x7164, 0x7165, 0x4373, 0x535b, 0x5651, 0x4568, 0x532f, 0x5266,
+ 0x6e41, 0x303b, 0x5535, 0x514e, 0x3c60, 0x3a50, 0x3f78, 0x3847,
+ 0x3541, 0x454c, 0x4a22, 0x434b, 0x6e42, 0x443f, 0x3622, 0x6d6c,
+ 0x4324, 0x5631, 0x4f60, 0x6d6f, 0x454e, 0x365c, 0x4a21, 0x6d6d,
+ 0x6d70, 0x6d71, 0x433c, 0x3f34, 0x6d6e, 0x6d74, 0x6d72, 0x5566,
+ 0x435f, 0x6d73, 0x6d76, 0x5523, 0x5123, 0x6d75, 0x4350, 0x6d77,
+ 0x3f74, 0x3e6c, 0x6d78, 0x4c77, 0x515b, 0x5745, 0x5576, 0x6d7c,
+ 0x6d7b, 0x6d79, 0x6d7a, 0x6d7d, 0x3e26, 0x4b2f, 0x6e21, 0x363d,
+ 0x6e22, 0x4440, 0x6d7e, 0x3d5e, 0x3247, 0x3643, 0x6e25, 0x583a,
+ 0x6e23, 0x6e26, 0x4369, 0x3372, 0x6e27, 0x6e24, 0x4f39, 0x6e28,
+ 0x4277, 0x6e29, 0x6e2a, 0x5e2b, 0x4633, 0x4746, 0x5675, 0x3549,
+ 0x4b32, 0x6e2b, 0x4d2b, 0x6e2c, 0x5530, 0x6e2d, 0x7644, 0x5b47,
+ 0x3423, 0x432c, 0x7166, 0x4a38, 0x5253, 0x562a, 0x6f72, 0x3e58,
+ 0x3d43, 0x6f73, 0x364c, 0x302b, 0x4a2f, 0x6d36, 0x6d37, 0x4e79,
+ 0x372f, 0x3f73, 0x6d38, 0x426b, 0x4930, 0x6d39, 0x4676, 0x3f33,
+ 0x6d3c, 0x4578, 0x5150, 0x5729, 0x6d3a, 0x6d3b, 0x5162, 0x6d3f,
+ 0x6d40, 0x6d44, 0x6d48, 0x6d46, 0x6d4e, 0x5568, 0x6d49, 0x6d47,
+ 0x6d3e, 0x4569, 0x4646, 0x4969, 0x5452, 0x6d41, 0x6d42, 0x6d43,
+ 0x6d45, 0x4079, 0x3421, 0x3968, 0x6d50, 0x6d51, 0x6d4a, 0x6d4f,
+ 0x4e78, 0x4b36, 0x6d4c, 0x6d4d, 0x4f75, 0x6d52, 0x4172, 0x5332,
+ 0x6d4b, 0x4837, 0x3c6f, 0x4570, 0x6d56, 0x356f, 0x4235, 0x302d,
+ 0x4b69, 0x312e, 0x6d54, 0x4d6b, 0x3562, 0x6d55, 0x6d53, 0x6d57,
+ 0x357a, 0x6d58, 0x6d59, 0x6d5c, 0x314c, 0x4576, 0x3c6e, 0x6d5a,
+ 0x4c3c, 0x326a, 0x6d5b, 0x446b, 0x3445, 0x3075, 0x6d5f, 0x405a,
+ 0x3468, 0x454d, 0x6d5d, 0x3f44, 0x6d5e, 0x4425, 0x6d60, 0x6d61,
+ 0x6d63, 0x4157, 0x3b47, 0x3d38, 0x6d62, 0x6d64, 0x6d66, 0x6d65,
+ 0x6d67, 0x4a3e, 0x6c6a, 0x4071, 0x4967, 0x6c6b, 0x466e, 0x6c6c,
+ 0x466d, 0x6c6d, 0x6c70, 0x5766, 0x6c73, 0x6c71, 0x6c6e, 0x6c6f,
+ 0x5723, 0x4971, 0x4b6e, 0x6c74, 0x6c72, 0x4f69, 0x6c76, 0x4631,
+ 0x3c40, 0x6c75, 0x353b, 0x3b76, 0x6c77, 0x5977, 0x3d7b, 0x423b,
+ 0x6c78, 0x6c79, 0x3823, 0x6c7a, 0x6c7b, 0x6c7c, 0x536d, 0x582e,
+ 0x406b, 0x475d, 0x3a4c, 0x5063, 0x4b3d, 0x4d3a, 0x3851, 0x317c,
+ 0x476f, 0x5656, 0x3f46, 0x436b, 0x6f75, 0x4358, 0x5762, 0x6f77,
+ 0x3353, 0x4758, 0x516d, 0x5648, 0x6f78, 0x6f76, 0x3b7d, 0x3346,
+ 0x3d55, 0x5246, 0x3b60, 0x4f21, 0x6f7c, 0x6f7b, 0x6f79, 0x334c,
+ 0x4954, 0x4b30, 0x6f7e, 0x305e, 0x5649, 0x6f7d, 0x336d, 0x7655,
+ 0x4e48, 0x7022, 0x7021, 0x353e, 0x3c5a, 0x3b7c, 0x3865, 0x4442,
+ 0x7023, 0x4b6b, 0x7026, 0x5128, 0x3e3f, 0x476e, 0x7136, 0x7137,
+ 0x3f55, 0x3429, 0x7138, 0x4d3b, 0x4754, 0x552d, 0x7139, 0x713a,
+ 0x474f, 0x5224, 0x564f, 0x713b, 0x3d51, 0x3430, 0x3e3d, 0x345c,
+ 0x4e51, 0x3f5f, 0x713d, 0x3f7a, 0x713c, 0x713f, 0x713e, 0x7140,
+ 0x7141, 0x417e, 0x4122, 0x4a7a, 0x553e, 0x3e3a, 0x3e39, 0x5542,
+ 0x3f22, 0x4d2f, 0x7135, 0x3d5f, 0x364b, 0x5671, 0x7343, 0x7344,
+ 0x384d, 0x7346, 0x7347, 0x304a, 0x7345, 0x7349, 0x4b71, 0x734b,
+ 0x5026, 0x314a, 0x7348, 0x734f, 0x3551, 0x7357, 0x7352, 0x7354,
+ 0x7353, 0x377b, 0x313f, 0x734e, 0x734a, 0x355a, 0x7350, 0x7351,
+ 0x7355, 0x734d, 0x3c63, 0x417d, 0x7356, 0x735a, 0x734c, 0x3548,
+ 0x3d6e, 0x735c, 0x3724, 0x3f70, 0x567e, 0x4d32, 0x3470, 0x325f,
+ 0x7358, 0x7359, 0x4938, 0x735d, 0x735e, 0x7361, 0x735f, 0x7363,
+ 0x7362, 0x735b, 0x3f6a, 0x336f, 0x7360, 0x4729, 0x3c72, 0x736b,
+ 0x393f, 0x7364, 0x322d, 0x3b7e, 0x4b63, 0x736d, 0x7369, 0x395c,
+ 0x736e, 0x7365, 0x7366, 0x736a, 0x4261, 0x736c, 0x736f, 0x7368,
+ 0x3c7d, 0x4f64, 0x7370, 0x7367, 0x7372, 0x572d, 0x462a, 0x7373,
+ 0x7371, 0x4228, 0x385d, 0x7375, 0x7374, 0x345b, 0x7376, 0x7377,
+ 0x7378, 0x403a, 0x4069, 0x4571, 0x737b, 0x737a, 0x3458, 0x737e,
+ 0x7379, 0x737c, 0x737d, 0x7421, 0x7423, 0x3b49, 0x7422, 0x7424,
+ 0x323e, 0x7426, 0x7425, 0x3c2e, 0x4357, 0x5961, 0x4060, 0x744c,
+ 0x5751, 0x375b, 0x744e, 0x4123, 0x4649, 0x3456, 0x5533, 0x7450,
+ 0x744f, 0x7451, 0x4b5a, 0x7452, 0x5441, 0x5660, 0x3760, 0x4138,
+ 0x413b, 0x7453, 0x3e2c, 0x3462, 0x7454, 0x7455, 0x3e2b, 0x7456,
+ 0x745b, 0x7457, 0x745a, 0x3a7d, 0x7458, 0x7459, 0x3862, 0x4c47,
+ 0x745c, 0x325a, 0x4353, 0x5463, 0x3f37, 0x745d, 0x4534, 0x7469,
+ 0x4f35, 0x4e49, 0x4b58, 0x4b77, 0x3d74, 0x574f, 0x405b, 0x5075,
+ 0x746a, 0x746b, 0x746c, 0x7763, 0x3731, 0x746d, 0x576b, 0x746e,
+ 0x6679, 0x3e40, 0x667a, 0x3a6c, 0x667b, 0x4f4b, 0x667c, 0x543c,
+ 0x3c36, 0x667d, 0x667e, 0x3c4d, 0x4852, 0x4e33, 0x6721, 0x343f,
+ 0x6722, 0x4934, 0x3859, 0x4449, 0x575d, 0x425a, 0x3757, 0x563d,
+ 0x4e46, 0x3744, 0x4526, 0x6723, 0x4f5f, 0x6724, 0x6725, 0x6726,
+ 0x4137, 0x5769, 0x4970, 0x4f38, 0x562f, 0x5655, 0x6727, 0x306d,
+ 0x6728, 0x6729, 0x495c, 0x526f, 0x3e2d, 0x672a, 0x3073, 0x485e,
+ 0x3d61, 0x672b, 0x4846, 0x672c, 0x3b66, 0x3878, 0x5124, 0x672d,
+ 0x4267, 0x3e78, 0x3d4a, 0x4d33, 0x672e, 0x672f, 0x3e6e, 0x5065,
+ 0x4b67, 0x4c50, 0x3c4c, 0x6730, 0x3c28, 0x5077, 0x6731, 0x5078,
+ 0x6732, 0x6733, 0x3442, 0x6734, 0x6735, 0x497e, 0x4e2c, 0x4360,
+ 0x6737, 0x3141, 0x3371, 0x6738, 0x6739, 0x575b, 0x5540, 0x673a,
+ 0x424c, 0x573a, 0x673b, 0x673c, 0x673d, 0x3c6a, 0x4365, 0x4042,
+ 0x673e, 0x673f, 0x3c29, 0x6740, 0x6741, 0x6736, 0x3650, 0x6742,
+ 0x6743, 0x6744, 0x3b3a, 0x355e, 0x4246, 0x3160, 0x6745, 0x5435,
+ 0x6746, 0x383f, 0x6748, 0x6747, 0x376c, 0x6749, 0x3278, 0x674a,
+ 0x674b, 0x674c, 0x674d, 0x674e, 0x674f, 0x6750, 0x5327, 0x4b75,
+ 0x6751, 0x6752, 0x6753, 0x6754, 0x4949, 0x6755, 0x6756, 0x6757,
+ 0x6758, 0x6759, 0x3d49, 0x675a, 0x733e, 0x3857, 0x4831, 0x733f,
+ 0x7340, 0x7341, 0x395e, 0x4d78, 0x5868, 0x3a31, 0x425e, 0x6e37,
+ 0x3723, 0x6e39, 0x6e38, 0x3055, 0x6e3b, 0x5556, 0x576f, 0x5643,
+ 0x6e3d, 0x4a70, 0x6e3c, 0x6e3e, 0x6e40, 0x6e3f, 0x5172, 0x473c,
+ 0x4340, 0x3861, 0x4167, 0x7446, 0x505f, 0x7447, 0x4f5b, 0x483a,
+ 0x7448, 0x7449, 0x744a, 0x744b, 0x597a, 0x387e, 0x6571, 0x5370,
+ 0x7460, 0x4e4c, 0x3361, 0x7134, 0x526e, 0x7461, 0x4f68, 0x7462,
+ 0x474c, 0x3554, 0x3464, 0x7464, 0x7463, 0x7465, 0x7466, 0x7467,
+ 0x3a32, 0x303f, 0x7468, 0x372d, 0x526d, 0x522b, 0x404f, 0x3f3c,
+ 0x6b23, 0x555f, 0x6a48, 0x7173, 0x3678, 0x4b23, 0x444d, 0x7167,
+ 0x7168, 0x387b, 0x7169, 0x3a44, 0x5445, 0x3052, 0x716a, 0x716b,
+ 0x716c, 0x716d, 0x716e, 0x716f, 0x7171, 0x7170, 0x4555, 0x7172,
+ 0x367a, 0x7174, 0x522e, 0x5e47, 0x4b4a, 0x335c, 0x3522, 0x3922,
+ 0x4474, 0x7175, 0x7176, 0x4144, 0x417b, 0x5630, 0x7177, 0x7178,
+ 0x412a, 0x4638, 0x3e5b, 0x7179, 0x344f, 0x717a, 0x6d32, 0x6d31,
+ 0x4b60, 0x525e, 0x4b41, 0x5558, 0x4862, 0x405f, 0x3c21, 0x6b41,
+ 0x5024, 0x5662, 0x3647, 0x3858, 0x6b40, 0x384e, 0x6b3f, 0x3326,
+ 0x3949, 0x562b, 0x3774, 0x374a, 0x3c67, 0x373e, 0x6b46, 0x6b47,
+ 0x3039, 0x3f4f, 0x6b45, 0x537d, 0x6b48, 0x6b49, 0x374e, 0x6b42,
+ 0x6b44, 0x4976, 0x5657, 0x554d, 0x5032, 0x6b4f, 0x4e38, 0x6b50,
+ 0x3528, 0x3133, 0x6b52, 0x4c25, 0x4556, 0x6b53, 0x6b51, 0x455f,
+ 0x6b4e, 0x4a24, 0x6b55, 0x307b, 0x3a7a, 0x5837, 0x7163, 0x6b4a,
+ 0x6b4b, 0x6b4c, 0x6b4d, 0x6b56, 0x6640, 0x6b59, 0x3f68, 0x5248,
+ 0x6b57, 0x6b5c, 0x386c, 0x6b58, 0x3d3a, 0x5058, 0x3037, 0x6b5d,
+ 0x445c, 0x562c, 0x3460, 0x4276, 0x3c39, 0x6b5a, 0x6b5b, 0x5460,
+ 0x466a, 0x4454, 0x6b5f, 0x4527, 0x5975, 0x3231, 0x6b64, 0x3d45,
+ 0x6b62, 0x6b63, 0x382c, 0x4d51, 0x6b65, 0x6b61, 0x4133, 0x4622,
+ 0x4c73, 0x6b66, 0x4030, 0x5238, 0x6b67, 0x382f, 0x382d, 0x6b68,
+ 0x473b, 0x4d73, 0x6b6a, 0x6b6b, 0x6b6d, 0x5048, 0x6b72, 0x6b6e,
+ 0x6b71, 0x4879, 0x517c, 0x6b6c, 0x6b69, 0x3839, 0x4f59, 0x4465,
+ 0x6b6f, 0x6b70, 0x4c5a, 0x4d48, 0x3072, 0x6b76, 0x6b75, 0x3232,
+ 0x3860, 0x6b77, 0x316c, 0x4c45, 0x4424, 0x4f25, 0x6b79, 0x6c22,
+ 0x4572, 0x6b7a, 0x4945, 0x625f, 0x6b7e, 0x4d4e, 0x6c21, 0x315b,
+ 0x5337, 0x525c, 0x6b7d, 0x6b7b, 0x333c, 0x6a30, 0x5754, 0x742b,
+ 0x3374, 0x5641, 0x5642, 0x5569, 0x3e4a, 0x7427, 0x5228, 0x7428,
+ 0x7429, 0x742a, 0x3e4b, 0x535f, 0x4960, 0x4961, 0x7342, 0x4a66,
+ 0x4c72, 0x6236, 0x4b34, 0x4e68, 0x565b, 0x742d, 0x742e, 0x742f,
+ 0x7432, 0x3a3d, 0x7433, 0x3063, 0x7430, 0x7431, 0x3d22, 0x3255,
+ 0x7436, 0x7437, 0x3666, 0x3230, 0x4f4f, 0x7434, 0x342c, 0x7435,
+ 0x7438, 0x7439, 0x4d27, 0x743a, 0x743b, 0x743c, 0x4b52, 0x743d,
+ 0x743e, 0x743f, 0x745e, 0x413c, 0x3c68, 0x492b, 0x515e, 0x6575,
+ 0x5c33, 0x5255, 0x5c34, 0x302c, 0x5c35, 0x3d5a, 0x5c39, 0x5842,
+ 0x5c37, 0x5373, 0x4956, 0x5c3a, 0x5c36, 0x5c3b, 0x4322, 0x5c3c,
+ 0x5c45, 0x5c3d, 0x4e5f, 0x5625, 0x5c4f, 0x5c4d, 0x5c52, 0x3d66,
+ 0x422b, 0x5c38, 0x5c4b, 0x5c4e, 0x5c3e, 0x3752, 0x3045, 0x5c47,
+ 0x503e, 0x5c41, 0x3b28, 0x373c, 0x5c4c, 0x5c46, 0x5c3f, 0x475b,
+ 0x513f, 0x5c40, 0x5c4a, 0x5c50, 0x4e2d, 0x5c42, 0x5c43, 0x5c48,
+ 0x5c49, 0x3254, 0x5c51, 0x4b55, 0x5437, 0x5c5b, 0x5c5f, 0x4c26,
+ 0x5c66, 0x4367, 0x5c5c, 0x3f41, 0x5c59, 0x307a, 0x3936, 0x5c65,
+ 0x5c53, 0x5c44, 0x5c56, 0x4874, 0x3f60, 0x493b, 0x313d, 0x5322,
+ 0x5c5a, 0x5c55, 0x463b, 0x5c5e, 0x5742, 0x432f, 0x3736, 0x4751,
+ 0x4329, 0x5c62, 0x5c58, 0x5c6b, 0x5c54, 0x5c5d, 0x3e25, 0x5c57,
+ 0x5c60, 0x5c63, 0x5c64, 0x5c78, 0x5c61, 0x5d22, 0x5c67, 0x3c6b,
+ 0x3444, 0x4323, 0x3267, 0x5c7a, 0x5c72, 0x5c6f, 0x5c7c, 0x5c6e,
+ 0x5270, 0x3268, 0x4857, 0x4863, 0x5c7b, 0x5c6d, 0x5c77, 0x5c75,
+ 0x3e23, 0x5c74, 0x325d, 0x5c73, 0x3c76, 0x5c68, 0x3b44, 0x4073,
+ 0x3c54, 0x5c69, 0x5c6a, 0x5c71, 0x5c76, 0x5c79, 0x3534, 0x4859,
+ 0x3b67, 0x5c7e, 0x5c7d, 0x532b, 0x5d21, 0x5d23, 0x5d25, 0x5271,
+ 0x5d24, 0x5d26, 0x5d27, 0x5229, 0x3a49, 0x5d29, 0x5d36, 0x5d31,
+ 0x5d34, 0x5d30, 0x464e, 0x4072, 0x492f, 0x5c6c, 0x5d2e, 0x5d37,
+ 0x5c70, 0x5d2f, 0x5d38, 0x5d2c, 0x5d39, 0x5d33, 0x5d2d, 0x442a,
+ 0x5d28, 0x4033, 0x412b, 0x5d2a, 0x5d2b, 0x5d32, 0x3b71, 0x5d35,
+ 0x5328, 0x5d3a, 0x5d3b, 0x4327, 0x5d52, 0x5d3c, 0x5d51, 0x393d,
+ 0x3e55, 0x3e7a, 0x3a4a, 0x5d4a, 0x5d45, 0x5d3f, 0x324b, 0x5d43,
+ 0x5d4b, 0x3224, 0x5d55, 0x5d3e, 0x4650, 0x5d50, 0x5d54, 0x4162,
+ 0x3746, 0x5d4e, 0x5d4f, 0x5d44, 0x5d3d, 0x5d4d, 0x4c51, 0x5d49,
+ 0x5d42, 0x4348, 0x463c, 0x4e2e, 0x5d4c, 0x5d48, 0x5d41, 0x5d46,
+ 0x425c, 0x5329, 0x532a, 0x5d53, 0x4f74, 0x4878, 0x5d66, 0x5d47,
+ 0x5d60, 0x4264, 0x5d61, 0x5d57, 0x5678, 0x5d59, 0x5d58, 0x3870,
+ 0x5d56, 0x464f, 0x362d, 0x5d62, 0x3a79, 0x5461, 0x5d67, 0x3450,
+ 0x5d5a, 0x3f7b, 0x5d63, 0x5d5f, 0x5d5d, 0x3559, 0x5d5b, 0x5d5c,
+ 0x5d5e, 0x3d2f, 0x5d64, 0x5d65, 0x5d75, 0x4349, 0x4b62, 0x5d72,
+ 0x5861, 0x4651, 0x5d74, 0x5574, 0x5d73, 0x5d70, 0x5d6c, 0x5d6f,
+ 0x5d68, 0x506e, 0x4858, 0x5d6e, 0x5d69, 0x5d6a, 0x4b72, 0x5d6d,
+ 0x314d, 0x4036, 0x3c3b, 0x5d71, 0x5d77, 0x5d76, 0x5d6b, 0x456e,
+ 0x5d7b, 0x5e24, 0x5e23, 0x5d78, 0x436f, 0x427b, 0x5561, 0x4e35,
+ 0x5d7d, 0x324c, 0x4468, 0x4a5f, 0x473e, 0x5d7a, 0x5d7c, 0x5d7e,
+ 0x5e22, 0x302a, 0x314e, 0x5e2c, 0x5e26, 0x3d36, 0x486f, 0x5e21,
+ 0x5e25, 0x5e29, 0x5e28, 0x5e27, 0x5e2d, 0x544c, 0x5e33, 0x5e2a,
+ 0x5e2e, 0x4059, 0x3121, 0x5e36, 0x5e31, 0x5e32, 0x5126, 0x5e35,
+ 0x5e2f, 0x5e30, 0x503d, 0x5e34, 0x4a6d, 0x5e39, 0x5e38, 0x5e37,
+ 0x5e3b, 0x3d65, 0x3258, 0x436a, 0x5e3a, 0x453a, 0x5e3c, 0x4c59,
+ 0x372a, 0x5465, 0x5e3d, 0x5e3f, 0x4422, 0x5e41, 0x5e3e, 0x5e40,
+ 0x553a, 0x5e42, 0x722e, 0x3b22, 0x4232, 0x4530, 0x4247, 0x722f,
+ 0x5069, 0x535d, 0x6b3d, 0x3366, 0x7230, 0x7231, 0x4a2d, 0x3a67,
+ 0x7233, 0x7235, 0x7234, 0x4b64, 0x4f3a, 0x7232, 0x4a34, 0x524f,
+ 0x426c, 0x4e43, 0x7238, 0x3076, 0x7237, 0x723e, 0x324f, 0x5141,
+ 0x723a, 0x723c, 0x5469, 0x723b, 0x7236, 0x723f, 0x723d, 0x7239,
+ 0x7247, 0x7244, 0x7246, 0x724a, 0x7242, 0x7240, 0x7245, 0x567b,
+ 0x7241, 0x4779, 0x495f, 0x7248, 0x3946, 0x3530, 0x7243, 0x7249,
+ 0x7250, 0x7256, 0x3b57, 0x7255, 0x4d5c, 0x566b, 0x7252, 0x7254,
+ 0x3872, 0x724b, 0x724e, 0x4279, 0x555d, 0x724c, 0x724d, 0x724f,
+ 0x7253, 0x7259, 0x533c, 0x366a, 0x4a71, 0x3764, 0x7257, 0x7258,
+ 0x725a, 0x725d, 0x725b, 0x725c, 0x5151, 0x7251, 0x4d49, 0x4e4f,
+ 0x5629, 0x7263, 0x435b, 0x7260, 0x402f, 0x726c, 0x725e, 0x7261,
+ 0x7268, 0x7262, 0x7267, 0x7266, 0x7269, 0x725f, 0x7264, 0x726a,
+ 0x532c, 0x7265, 0x3275, 0x7272, 0x502b, 0x7275, 0x3b48, 0x7279,
+ 0x7270, 0x7276, 0x7278, 0x727a, 0x7273, 0x7271, 0x3a7b, 0x357b,
+ 0x726f, 0x7277, 0x726d, 0x726e, 0x726b, 0x7326, 0x7323, 0x7322,
+ 0x7274, 0x485a, 0x727b, 0x7325, 0x4378, 0x727d, 0x7327, 0x7329,
+ 0x7324, 0x727c, 0x732b, 0x732a, 0x425d, 0x732e, 0x7330, 0x7321,
+ 0x7331, 0x732c, 0x732f, 0x727e, 0x732d, 0x7332, 0x7334, 0x7328,
+ 0x7333, 0x7335, 0x5037, 0x7338, 0x5979, 0x7339, 0x7337, 0x4864,
+ 0x7336, 0x733a, 0x733b, 0x3440, 0x6e43, 0x733c, 0x733d, 0x512a,
+ 0x742c, 0x5046, 0x5050, 0x515c, 0x4f4e, 0x3d56, 0x5143, 0x3a62,
+ 0x6169, 0x5242, 0x7142, 0x3239, 0x316d, 0x7143, 0x4940, 0x3344,
+ 0x5972, 0x4b25, 0x7144, 0x5654, 0x7145, 0x7440, 0x7146, 0x542c,
+ 0x7147, 0x3040, 0x7441, 0x7442, 0x347c, 0x455b, 0x4c3b, 0x5064,
+ 0x4d60, 0x7148, 0x5973, 0x313b, 0x4f2e, 0x3824, 0x714a, 0x714b,
+ 0x3243, 0x4151, 0x5730, 0x7149, 0x714c, 0x714e, 0x5976, 0x5261,
+ 0x5423, 0x7443, 0x4839, 0x7444, 0x714d, 0x714f, 0x3f63, 0x7150,
+ 0x7154, 0x7156, 0x7151, 0x4951, 0x4561, 0x4263, 0x397c, 0x7153,
+ 0x7155, 0x3953, 0x715b, 0x3a56, 0x307d, 0x7159, 0x7158, 0x7152,
+ 0x715a, 0x7157, 0x486c, 0x4d4a, 0x715d, 0x653d, 0x715c, 0x715e,
+ 0x715f, 0x4f65, 0x7445, 0x3d73, 0x7160, 0x7161, 0x4e77, 0x522a,
+ 0x717b, 0x3832, 0x3c7b, 0x395b, 0x3966, 0x4359, 0x4a53, 0x6a68,
+ 0x4040, 0x3e75, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e,
+ 0x6a6f, 0x3d47, 0x757b, 0x757d, 0x757e, 0x757c, 0x3d62, 0x7621,
+ 0x3425, 0x7622, 0x7623, 0x6c32, 0x5154, 0x596a, 0x7624, 0x6e3a,
+ 0x5532, 0x537e, 0x4c5c, 0x4a44, 0x6540, 0x7625, 0x3e2f, 0x4629,
+ 0x5a25, 0x3c46, 0x3629, 0x383c, 0x484f, 0x3c25, 0x5a26, 0x5a27,
+ 0x4c56, 0x4843, 0x5a28, 0x467d, 0x5135, 0x5269, 0x5136, 0x3c47,
+ 0x3d32, 0x3b64, 0x5a29, 0x5a2a, 0x5148, 0x5a2b, 0x506d, 0x366f,
+ 0x425b, 0x4b4f, 0x376d, 0x4968, 0x3743, 0x3e77, 0x5624, 0x5a2c,
+ 0x5a2d, 0x4640, 0x5767, 0x4a36, 0x5529, 0x4b5f, 0x556f, 0x5a2e,
+ 0x565f, 0x344a, 0x5a30, 0x5a2f, 0x526b, 0x5a31, 0x5a32, 0x5a33,
+ 0x4a54, 0x5a34, 0x4a2b, 0x5a35, 0x5a36, 0x334f, 0x566f, 0x5a37,
+ 0x3b30, 0x352e, 0x5a38, 0x5a39, 0x396e, 0x512f, 0x5268, 0x5a3a,
+ 0x3843, 0x4f6a, 0x326f, 0x5a3b, 0x5a3c, 0x3d6b, 0x4e5c, 0x536f,
+ 0x5a3d, 0x4e73, 0x5a3e, 0x5355, 0x3b65, 0x5a3f, 0x4b35, 0x4b50,
+ 0x5a40, 0x476b, 0x566e, 0x5a41, 0x4535, 0x3641, 0x5a42, 0x374c,
+ 0x3f4e, 0x5a43, 0x5a44, 0x4b2d, 0x5a45, 0x3577, 0x5a46, 0x4142,
+ 0x573b, 0x5a47, 0x4c38, 0x526a, 0x4431, 0x5a48, 0x357d, 0x3b51,
+ 0x5a49, 0x5033, 0x5a4a, 0x5a4b, 0x4e3d, 0x5a4c, 0x5a4d, 0x5a4e,
+ 0x3277, 0x5a51, 0x5a4f, 0x5168, 0x5a50, 0x4355, 0x5a52, 0x5a53,
+ 0x5a54, 0x5a55, 0x503b, 0x5225, 0x3079, 0x5a56, 0x472b, 0x5a57,
+ 0x3d77, 0x4321, 0x5a58, 0x5a59, 0x437d, 0x4c37, 0x5a5a, 0x5a5b,
+ 0x403e, 0x4657, 0x5a5c, 0x5a5d, 0x4734, 0x5a5e, 0x5a5f, 0x3948,
+ 0x3b6d, 0x3639, 0x7478, 0x7479, 0x4d63, 0x7539, 0x6b60, 0x4f73,
+ 0x3b3f, 0x3a40, 0x5425, 0x6159, 0x7574, 0x312a, 0x3272, 0x7575,
+ 0x7577, 0x3a51, 0x7576, 0x4332, 0x7579, 0x7578, 0x3134, 0x556a,
+ 0x383a, 0x3931, 0x3246, 0x5470, 0x4f4d, 0x305c, 0x554b, 0x3b75,
+ 0x564a, 0x3737, 0x4c30, 0x4636, 0x3161, 0x393a, 0x567c, 0x3961,
+ 0x3721, 0x3c7a, 0x6a5a, 0x6a5b, 0x4c79, 0x3973, 0x6a5c, 0x347b,
+ 0x4333, 0x3751, 0x3a58, 0x6a5d, 0x5474, 0x6a5e, 0x3c56, 0x3b5f,
+ 0x6a5f, 0x415e, 0x4238, 0x545f, 0x574a, 0x6a60, 0x6a61, 0x6a64,
+ 0x6a62, 0x6a63, 0x495e, 0x3833, 0x3644, 0x6a65, 0x4a6a, 0x494d,
+ 0x344d, 0x6259, 0x4562, 0x6a66, 0x4035, 0x5738, 0x6a67, 0x572c,
+ 0x487c, 0x5853, 0x584d, 0x545e, 0x5479, 0x4944, 0x532e, 0x3853,
+ 0x3360, 0x4962, 0x7476, 0x3a55, 0x7477, 0x575f, 0x7471, 0x3830,
+ 0x5554, 0x384f, 0x4670, 0x3343, 0x7472, 0x332c, 0x543d, 0x4777,
+ 0x7474, 0x7473, 0x4c4b, 0x4824, 0x7475, 0x5763, 0x453f, 0x7540,
+ 0x753b, 0x7543, 0x7542, 0x563a, 0x7541, 0x543e, 0x7544, 0x754c,
+ 0x304f, 0x3578, 0x7549, 0x754a, 0x455c, 0x7545, 0x7546, 0x7547,
+ 0x754b, 0x3e60, 0x7548, 0x387a, 0x7550, 0x7553, 0x3f67, 0x3972,
+ 0x753c, 0x754d, 0x4237, 0x4c78, 0x3c79, 0x754e, 0x754f, 0x7551,
+ 0x3665, 0x7552, 0x7555, 0x753d, 0x7554, 0x533b, 0x336c, 0x4c24,
+ 0x7556, 0x7557, 0x3e61, 0x7558, 0x4c5f, 0x755b, 0x3248, 0x5759,
+ 0x7559, 0x755a, 0x755c, 0x7562, 0x7560, 0x755f, 0x755d, 0x7561,
+ 0x755e, 0x7564, 0x7565, 0x4c63, 0x653f, 0x3538, 0x7563, 0x7568,
+ 0x4c23, 0x7566, 0x7567, 0x753e, 0x3144, 0x753f, 0x3545, 0x3264,
+ 0x756c, 0x7569, 0x3657, 0x756d, 0x756a, 0x756b, 0x345a, 0x546a,
+ 0x756e, 0x3379, 0x756f, 0x7571, 0x7570, 0x7572, 0x7573, 0x496d,
+ 0x392a, 0x477b, 0x3663, 0x4c49, 0x6a26, 0x3335, 0x547e, 0x396c,
+ 0x5079, 0x696d, 0x572a, 0x696e, 0x4256, 0x486d, 0x3a64, 0x696f,
+ 0x6970, 0x6971, 0x5661, 0x6972, 0x6973, 0x6975, 0x6974, 0x6976,
+ 0x6977, 0x4761, 0x6978, 0x5458, 0x6979, 0x3d4e, 0x697a, 0x697b,
+ 0x3d4f, 0x697c, 0x3828, 0x413e, 0x697d, 0x3132, 0x3b54, 0x3975,
+ 0x697e, 0x6a21, 0x6a22, 0x6a23, 0x3778, 0x3c2d, 0x4a64, 0x604e,
+ 0x542f, 0x4f3d, 0x5537, 0x6a24, 0x555e, 0x6a25, 0x5041, 0x393c,
+ 0x3447, 0x3159, 0x4031, 0x3166, 0x3167, 0x3168, 0x333d, 0x4868,
+ 0x6541, 0x315f, 0x4149, 0x346f, 0x4728, 0x5358, 0x4679, 0x5138,
+ 0x397d, 0x4275, 0x532d, 0x544b, 0x3d7c, 0x6542, 0x3735, 0x6543,
+ 0x3b39, 0x5562, 0x3d78, 0x5436, 0x4e25, 0x412c, 0x3359, 0x4c76,
+ 0x6546, 0x6544, 0x6548, 0x654a, 0x6547, 0x354f, 0x4648, 0x357c,
+ 0x6545, 0x4a76, 0x6549, 0x4354, 0x3145, 0x3c23, 0x5737, 0x4d4b,
+ 0x4b4d, 0x4a4a, 0x4c53, 0x654c, 0x654b, 0x4466, 0x5121, 0x5137,
+ 0x654d, 0x6550, 0x4d38, 0x5670, 0x654f, 0x355d, 0x4d3e, 0x6551,
+ 0x363a, 0x4d28, 0x3964, 0x4a45, 0x3351, 0x4b59, 0x546c, 0x6552,
+ 0x376a, 0x654e, 0x6555, 0x347e, 0x6556, 0x6553, 0x6554, 0x525d,
+ 0x425f, 0x3146, 0x5362, 0x365d, 0x4b6c, 0x6557, 0x5376, 0x3169,
+ 0x3674, 0x655a, 0x6558, 0x6559, 0x3540, 0x5245, 0x655c, 0x655e,
+ 0x655d, 0x4732, 0x5223, 0x655b, 0x5462, 0x555a, 0x6560, 0x5771,
+ 0x6561, 0x315c, 0x517b, 0x6562, 0x6564, 0x6563, 0x6565, 0x5258,
+ 0x354b, 0x675f, 0x5a75, 0x5a78, 0x5a76, 0x5a77, 0x5a7a, 0x504f,
+ 0x4447, 0x306e, 0x5030, 0x5a79, 0x534a, 0x3a2a, 0x5b22, 0x4771,
+ 0x5a7c, 0x5a7b, 0x495b, 0x5a7d, 0x5b21, 0x575e, 0x5a7e, 0x415a,
+ 0x5b25, 0x5374, 0x5b27, 0x5b24, 0x5b28, 0x3d3c, 0x4049, 0x5b23,
+ 0x5b26, 0x5623, 0x5b29, 0x5b2d, 0x5b2e, 0x5b2c, 0x3a42, 0x3f24,
+ 0x5b2b, 0x5b2a, 0x5447, 0x323f, 0x5b2f, 0x3979, 0x5b30, 0x333b,
+ 0x3526, 0x363c, 0x5b31, 0x3675, 0x5b32, 0x3149, 0x5b34, 0x5b33,
+ 0x5b35, 0x5b37, 0x5b36, 0x5b38, 0x5b39, 0x5b3a, 0x534f, 0x747a,
+ 0x4775, 0x5743, 0x4564, 0x747c, 0x747d, 0x747b, 0x3e46, 0x506f,
+ 0x3753, 0x544d, 0x4c2a, 0x7522, 0x7521, 0x3a28, 0x747e, 0x4b56,
+ 0x7524, 0x4052, 0x336a, 0x4d2a, 0x7525, 0x7523, 0x3d34, 0x7528,
+ 0x7529, 0x3d4d, 0x4338, 0x3f61, 0x4b61, 0x752a, 0x7526, 0x7527,
+ 0x4470, 0x752c, 0x343c, 0x576d, 0x3457, 0x752b, 0x752e, 0x752d,
+ 0x752f, 0x5051, 0x4351, 0x4829, 0x7530, 0x7531, 0x7532, 0x7533,
+ 0x7534, 0x7535, 0x7537, 0x7536, 0x7538, 0x3249, 0x5354, 0x4a4d,
+ 0x406f, 0x5658, 0x5230, 0x413f, 0x3d70, 0x382a, 0x3c78, 0x7646,
+ 0x7647, 0x7648, 0x7649, 0x764a, 0x764c, 0x764b, 0x7769, 0x764d,
+ 0x764e, 0x6e44, 0x6e45, 0x6e46, 0x556b, 0x3624, 0x6e48, 0x6e47,
+ 0x6e49, 0x6e4a, 0x4725, 0x6e4b, 0x6e4c, 0x3730, 0x3576, 0x6e4d,
+ 0x6e4f, 0x6e4e, 0x3846, 0x6e50, 0x6e51, 0x6e52, 0x365b, 0x332e,
+ 0x5653, 0x4446, 0x3135, 0x3856, 0x6e53, 0x6e54, 0x543f, 0x4755,
+ 0x3e7b, 0x4e59, 0x3933, 0x6e56, 0x6e55, 0x6e58, 0x6e57, 0x4525,
+ 0x6e59, 0x6e5a, 0x472e, 0x6e5b, 0x472f, 0x6e5c, 0x3227, 0x6e5d,
+ 0x6e5e, 0x6e5f, 0x6e60, 0x6e61, 0x576a, 0x6e62, 0x6e63, 0x3c58,
+ 0x6e64, 0x534b, 0x4c7a, 0x322c, 0x4165, 0x6e65, 0x4726, 0x432d,
+ 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a, 0x6e6b, 0x6e6c, 0x6e6d,
+ 0x6e6e, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e74, 0x6e73, 0x6e75,
+ 0x4d2d, 0x4241, 0x6e76, 0x6e77, 0x6e78, 0x5521, 0x6e79, 0x4f33,
+ 0x6e7a, 0x6e7b, 0x6e7c, 0x6e7d, 0x6f21, 0x6e7e, 0x6f22, 0x3875,
+ 0x437a, 0x6f23, 0x6f24, 0x3d42, 0x523f, 0x3279, 0x6f25, 0x6f26,
+ 0x6f27, 0x5278, 0x6f28, 0x567d, 0x6f29, 0x464c, 0x6f2a, 0x6f2b,
+ 0x4134, 0x6f2c, 0x4f7a, 0x4b78, 0x6f2e, 0x6f2d, 0x337a, 0x3978,
+ 0x6f2f, 0x6f30, 0x5062, 0x6f31, 0x6f32, 0x3766, 0x503f, 0x6f33,
+ 0x6f34, 0x6f35, 0x4871, 0x4c60, 0x6f36, 0x6f37, 0x6f38, 0x6f39,
+ 0x6f3a, 0x5560, 0x6f3b, 0x346d, 0x432a, 0x6f3c, 0x6f3d, 0x6f3e,
+ 0x6f3f, 0x4e7d, 0x6f40, 0x4260, 0x3438, 0x5736, 0x3d75, 0x4f47,
+ 0x6f43, 0x6f41, 0x6f42, 0x6f44, 0x3627, 0x3c7c, 0x3e62, 0x434c,
+ 0x6f45, 0x6f46, 0x6f47, 0x6f4f, 0x6f48, 0x6f49, 0x6f4a, 0x4742,
+ 0x6f71, 0x364d, 0x6f4b, 0x6f4c, 0x6f4d, 0x3646, 0x433e, 0x6f4e,
+ 0x6f50, 0x6f51, 0x6f52, 0x5572, 0x6f53, 0x4477, 0x6f54, 0x4478,
+ 0x6f55, 0x6f56, 0x3864, 0x3077, 0x6f57, 0x6f58, 0x6f59, 0x6f5a,
+ 0x6f5b, 0x6f5c, 0x6f5d, 0x6f5e, 0x3e35, 0x6f61, 0x6f5f, 0x6f60,
+ 0x6f62, 0x6f63, 0x414d, 0x6f64, 0x6f65, 0x6f66, 0x6f67, 0x6f68,
+ 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x4058, 0x6f6d, 0x412d, 0x6f6e,
+ 0x6f6f, 0x6f70, 0x4f62, 0x3324, 0x4345, 0x6345, 0x4941, 0x6346,
+ 0x3155, 0x4e4a, 0x3433, 0x4872, 0x6347, 0x4f50, 0x6348, 0x3c64,
+ 0x6349, 0x634a, 0x4346, 0x5522, 0x4456, 0x396b, 0x4e45, 0x634b,
+ 0x4376, 0x634c, 0x3727, 0x3873, 0x3a52, 0x634d, 0x634e, 0x5444,
+ 0x634f, 0x6350, 0x514b, 0x6351, 0x6352, 0x6353, 0x6354, 0x5156,
+ 0x6355, 0x327b, 0x403b, 0x6356, 0x402b, 0x6357, 0x6358, 0x6359,
+ 0x635a, 0x635b, 0x3837, 0x5a62, 0x3653, 0x5a64, 0x5a63, 0x5a66,
+ 0x486e, 0x5a65, 0x3740, 0x5174, 0x5275, 0x5573, 0x3d57, 0x5768,
+ 0x5a68, 0x5a67, 0x3022, 0x4d53, 0x5a69, 0x383d, 0x3c4a, 0x423d,
+ 0x4224, 0x3342, 0x5a6a, 0x422a, 0x4430, 0x3d35, 0x4f5e, 0x5a6b,
+ 0x4942, 0x315d, 0x5a6c, 0x3638, 0x543a, 0x337d, 0x5a6d, 0x5449,
+ 0x4f55, 0x4563, 0x5a6e, 0x5a6f, 0x5a70, 0x416a, 0x4c55, 0x4f5d,
+ 0x5367, 0x4221, 0x5a71, 0x4b65, 0x5a72, 0x4b66, 0x527e, 0x3874,
+ 0x5a73, 0x302f, 0x4f36, 0x554f, 0x4b6d, 0x5a74, 0x6344, 0x4125,
+ 0x763f, 0x7640, 0x7641, 0x4451, 0x4838, 0x5163, 0x505b, 0x5145,
+ 0x3c2f, 0x394d, 0x6f74, 0x3446, 0x533a, 0x7642, 0x337b, 0x7643,
+ 0x3571, 0x7645, 0x536a, 0x7627, 0x5129, 0x7629, 0x7628, 0x4163,
+ 0x4057, 0x3122, 0x4e6d, 0x5068, 0x762b, 0x4f76, 0x762a, 0x5570,
+ 0x762c, 0x4339, 0x3b74, 0x762e, 0x762d, 0x445e, 0x4158, 0x4b2a,
+ 0x4f3c, 0x762f, 0x7630, 0x7631, 0x4236, 0x3054, 0x4579, 0x7632,
+ 0x4760, 0x7626, 0x3e38, 0x3e32, 0x3565, 0x3747, 0x3f3f, 0x4352,
+ 0x4366, 0x584c, 0x386f, 0x3d79, 0x5125, 0x3050, 0x7730, 0x7731,
+ 0x502c, 0x3030, 0x7732, 0x7733, 0x7734, 0x474a, 0x3e4f, 0x7737,
+ 0x7736, 0x315e, 0x7735, 0x7738, 0x7739, 0x4e24, 0x484d, 0x3a2b,
+ 0x6838, 0x6839, 0x683a, 0x3e42, 0x5274, 0x544f, 0x4958, 0x5233,
+ 0x3625, 0x476a, 0x717c, 0x4f6e, 0x4b33, 0x506b, 0x676f, 0x4d67,
+ 0x394b, 0x3659, 0x717d, 0x3064, 0x4b4c, 0x717e, 0x5424, 0x422d,
+ 0x416c, 0x4644, 0x3e31, 0x7221, 0x3c55, 0x7222, 0x7223, 0x7224,
+ 0x5243, 0x4635, 0x4d47, 0x7225, 0x5331, 0x3f45, 0x4c62, 0x7226,
+ 0x7227, 0x5155, 0x366e, 0x7228, 0x7229, 0x355f, 0x722a, 0x722b,
+ 0x327c, 0x722c, 0x722d, 0x4827, 0x3767, 0x6c29, 0x6c2a, 0x6c2b,
+ 0x6c2c, 0x462e, 0x6c2d, 0x6c2e, 0x3749, 0x4a33, 0x6238, 0x774f,
+ 0x7750, 0x324d, 0x7751, 0x7753, 0x7752, 0x623b, 0x3c22, 0x623c,
+ 0x623d, 0x623e, 0x623f, 0x6240, 0x6241, 0x3739, 0x527b, 0x3d24,
+ 0x4a4e, 0x3125, 0x4b47, 0x6242, 0x367c, 0x4844, 0x6243, 0x3d48,
+ 0x317d, 0x6244, 0x3676, 0x6245, 0x4459, 0x6246, 0x4f5a, 0x395d,
+ 0x6247, 0x4021, 0x6248, 0x3276, 0x6249, 0x4173, 0x624a, 0x624b,
+ 0x4278, 0x624c, 0x624d, 0x624e, 0x4a57, 0x5838, 0x5965, 0x4f63,
+ 0x7025, 0x5c30, 0x426d, 0x5426, 0x4d54, 0x5131, 0x335b, 0x477d,
+ 0x3235, 0x423f, 0x6660, 0x4a3b, 0x6661, 0x6662, 0x3e54, 0x6663,
+ 0x5724, 0x4d55, 0x6665, 0x3c5d, 0x6664, 0x6666, 0x6667, 0x426e,
+ 0x3d3e, 0x6668, 0x4266, 0x3a27, 0x6669, 0x666a, 0x3352, 0x5169,
+ 0x3f25, 0x666b, 0x466f, 0x666c, 0x666d, 0x666e, 0x462d, 0x666f,
+ 0x4927, 0x6670, 0x6671, 0x6672, 0x6539, 0x6673, 0x6674, 0x4262,
+ 0x6675, 0x6676, 0x5668, 0x6677, 0x6678, 0x3947, 0x773b, 0x773a,
+ 0x773e, 0x773c, 0x3a21, 0x773f, 0x7740, 0x7742, 0x7741, 0x7744,
+ 0x7743, 0x7745, 0x7746, 0x7747, 0x4b68, 0x385f, 0x7754, 0x7755,
+ 0x7756, 0x7758, 0x775a, 0x7757, 0x775b, 0x7759, 0x5757, 0x775c,
+ 0x775d, 0x775e, 0x775f, 0x7760, 0x5b4b, 0x582a, 0x6577, 0x396d,
+ 0x3f7d, 0x3b6a, 0x7749, 0x4647, 0x7748, 0x774a, 0x774c, 0x774b,
+ 0x774d, 0x4e3a, 0x774e, 0x4427, 0x5363, 0x764f, 0x4233, 0x7650,
+ 0x7651, 0x7652, 0x7653, 0x7654, 0x7656, 0x312b, 0x7657, 0x7658,
+ 0x7659, 0x765a, 0x765b, 0x765c, 0x765d, 0x765e, 0x4f4a, 0x765f,
+ 0x7660, 0x7661, 0x7662, 0x7663, 0x7664, 0x4070, 0x7665, 0x7666,
+ 0x7667, 0x7668, 0x7669, 0x766a, 0x766b, 0x766c, 0x766d, 0x766e,
+ 0x766f, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x3e28, 0x7675,
+ 0x7676, 0x7677, 0x7678, 0x487a, 0x7679, 0x767a, 0x767b, 0x767c,
+ 0x767d, 0x767e, 0x7721, 0x7722, 0x7723, 0x7724, 0x7725, 0x7726,
+ 0x7727, 0x7728, 0x316e, 0x7729, 0x772a, 0x772b, 0x772c, 0x772d,
+ 0x415b, 0x772e, 0x772f, 0x4471, 0x702f, 0x3c26, 0x7030, 0x4379,
+ 0x4538, 0x513b, 0x7031, 0x7032, 0x7033, 0x7034, 0x7035, 0x513c,
+ 0x516c, 0x7037, 0x7036, 0x5427, 0x4d52, 0x7038, 0x703a, 0x7039,
+ 0x703b, 0x703c, 0x386b, 0x703d, 0x3a68, 0x703e, 0x703f, 0x3e69,
+ 0x7040, 0x366c, 0x7041, 0x7042, 0x7043, 0x7044, 0x4835, 0x7045,
+ 0x7046, 0x7047, 0x4574, 0x7048, 0x7049, 0x704a, 0x773d, 0x704b,
+ 0x704c, 0x704d, 0x704e, 0x704f, 0x3a57, 0x7050, 0x7051, 0x7052,
+ 0x7053, 0x7054, 0x7055, 0x7056, 0x7058, 0x5325, 0x7057, 0x7059,
+ 0x753a, 0x4239, 0x7764, 0x7765, 0x7766, 0x7767, 0x7768, 0x4234,
+ 0x776a, 0x776b, 0x4273, 0x7470, 0x746f, 0x4269, 0x7761, 0x7762,
+ 0x3b46, 0x5964, 0x4a72, 0x4068, 0x7024, 0x3a5a, 0x472d, 0x442c,
+ 0x776c, 0x776d, 0x776e, 0x7770, 0x776f, 0x7771, 0x7774, 0x7773,
+ 0x7772, 0x7775, 0x7776, 0x6d69, 0x6d6a, 0x6d6b, 0x763c, 0x763d,
+ 0x763e, 0x3626, 0x583e, 0x3944, 0x583b, 0x5c31, 0x4a73, 0x7777,
+ 0x7778, 0x7779, 0x777b, 0x777a, 0x3147, 0x777c, 0x777d, 0x777e,
+ 0x466b, 0x6c34, 0x335d, 0x7633, 0x7634, 0x4164, 0x7635, 0x7636,
+ 0x7637, 0x7638, 0x7639, 0x763a, 0x4823, 0x763b, 0x417a, 0x3928,
+ 0x6d68, 0x396a, 0x595f, 0x2321, 0x2322, 0x2323, 0x2167, 0x2325,
+ 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d,
+ 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335,
+ 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d,
+ 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345,
+ 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d,
+ 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355,
+ 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x235c, 0x235d,
+ 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365,
+ 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d,
+ 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375,
+ 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d,
+ 0x212b, 0x2169, 0x216a, 0x237e, 0x2324,
+};
+
+static const Summary16 gb2312_uni2indx_page00[70] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0190 }, { 3, 0x0003 },
+ { 5, 0x0000 }, { 5, 0x0080 }, { 6, 0x3703 }, { 13, 0x168c },
+ /* 0x0100 */
+ { 19, 0x0002 }, { 20, 0x0808 }, { 22, 0x0800 }, { 23, 0x0000 },
+ { 23, 0x2000 }, { 24, 0x0000 }, { 24, 0x0800 }, { 25, 0x0000 },
+ { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 },
+ { 25, 0x4000 }, { 26, 0x1555 }, { 33, 0x0000 }, { 33, 0x0000 },
+ /* 0x0200 */
+ { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
+ { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
+ { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
+ { 33, 0x0280 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
+ /* 0x0300 */
+ { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
+ { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
+ { 35, 0x0000 }, { 35, 0xfffe }, { 50, 0x03fb }, { 59, 0xfffe },
+ { 74, 0x03fb }, { 83, 0x0000 }, { 83, 0x0000 }, { 83, 0x0000 },
+ /* 0x0400 */
+ { 83, 0x0002 }, { 84, 0xffff }, { 100, 0xffff }, { 116, 0xffff },
+ { 132, 0xffff }, { 148, 0x0002 },
+};
+static const Summary16 gb2312_uni2indx_page20[101] = {
+ /* 0x2000 */
+ { 149, 0x0000 }, { 149, 0x3360 }, { 155, 0x0040 }, { 156, 0x080d },
+ { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
+ { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
+ { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
+ /* 0x2100 */
+ { 160, 0x0008 }, { 161, 0x0040 }, { 162, 0x0000 }, { 162, 0x0000 },
+ { 162, 0x0000 }, { 162, 0x0000 }, { 162, 0x0fff }, { 174, 0x0000 },
+ { 174, 0x0000 }, { 174, 0x000f }, { 178, 0x0000 }, { 178, 0x0000 },
+ { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 },
+ /* 0x2200 */
+ { 178, 0x8100 }, { 180, 0x6402 }, { 184, 0x4fa1 }, { 192, 0x20f0 },
+ { 197, 0x1100 }, { 199, 0x0000 }, { 199, 0xc033 }, { 205, 0x0000 },
+ { 205, 0x0000 }, { 205, 0x0200 }, { 206, 0x0020 }, { 207, 0x0000 },
+ { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 },
+ /* 0x2300 */
+ { 207, 0x0000 }, { 207, 0x0004 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ /* 0x2400 */
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x03ff }, { 218, 0xfff0 },
+ { 230, 0xffff }, { 246, 0x0fff }, { 258, 0x0000 }, { 258, 0x0000 },
+ { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 },
+ /* 0x2500 */
+ { 258, 0xffff }, { 274, 0xffff }, { 290, 0xffff }, { 306, 0xffff },
+ { 322, 0x0fff }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0000 },
+ { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0003 }, { 336, 0x000c },
+ { 338, 0xc8c0 }, { 343, 0x0000 }, { 343, 0x0000 }, { 343, 0x0000 },
+ /* 0x2600 */
+ { 343, 0x0060 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 },
+ { 345, 0x0005 },
+};
+static const Summary16 gb2312_uni2indx_page30[35] = {
+ /* 0x3000 */
+ { 347, 0xff2f }, { 360, 0x00fb }, { 367, 0x0000 }, { 367, 0x0000 },
+ { 367, 0xfffe }, { 382, 0xffff }, { 398, 0xffff }, { 414, 0xffff },
+ { 430, 0xffff }, { 446, 0x000f }, { 450, 0xfffe }, { 465, 0xffff },
+ { 481, 0xffff }, { 497, 0xffff }, { 513, 0xffff }, { 529, 0x087f },
+ /* 0x3100 */
+ { 537, 0xffe0 }, { 548, 0xffff }, { 564, 0x03ff }, { 574, 0x0000 },
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
+ /* 0x3200 */
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x03ff },
+};
+static const Summary16 gb2312_uni2indx_page4e[1263] = {
+ /* 0x4e00 */
+ { 584, 0x7f8b }, { 595, 0x7f7b }, { 608, 0x3db4 }, { 617, 0xef55 },
+ { 628, 0xfba8 }, { 638, 0xf35d }, { 649, 0x0243 }, { 653, 0x400b },
+ { 657, 0xfb40 }, { 665, 0x8d3e }, { 674, 0x7bf7 }, { 687, 0x8c2c },
+ { 693, 0x6eff }, { 706, 0xe3fa }, { 717, 0x1d3a }, { 725, 0xa8ed },
+ /* 0x4f00 */
+ { 734, 0xe602 }, { 740, 0xcf83 }, { 749, 0x8cf5 }, { 758, 0x3555 },
+ { 766, 0xe048 }, { 771, 0xffab }, { 784, 0x92b9 }, { 792, 0xd859 },
+ { 800, 0xab18 }, { 807, 0x2892 }, { 812, 0xd7e9 }, { 823, 0x8020 },
+ { 825, 0xc438 }, { 831, 0xf583 }, { 840, 0xe74a }, { 849, 0x450a },
+ /* 0x5000 */
+ { 854, 0xb000 }, { 857, 0x9714 }, { 864, 0x7762 }, { 873, 0x5400 },
+ { 876, 0xd188 }, { 882, 0x1420 }, { 885, 0x1020 }, { 887, 0xc8c0 },
+ { 892, 0x2121 }, { 896, 0x0000 }, { 896, 0x13a8 }, { 902, 0x0c04 },
+ { 905, 0x8000 }, { 906, 0x0440 }, { 908, 0x70c0 }, { 913, 0x0828 },
+ /* 0x5100 */
+ { 916, 0x08c0 }, { 919, 0x0004 }, { 920, 0x0002 }, { 921, 0x8000 },
+ { 922, 0x2b7b }, { 932, 0x1472 }, { 938, 0x7924 }, { 945, 0x3bfb },
+ { 957, 0x3327 }, { 965, 0x1ae4 }, { 972, 0x9835 }, { 979, 0x38ef },
+ { 989, 0x9ad1 }, { 997, 0x2802 }, { 1000, 0xa813 }, { 1006, 0xbf69 },
+ /* 0x5200 */
+ { 1017, 0x65cf }, { 1027, 0x2fc6 }, { 1036, 0x6b11 }, { 1043, 0xafc9 },
+ { 1053, 0x340f }, { 1060, 0x5053 }, { 1066, 0x86a2 }, { 1072, 0xa004 },
+ { 1075, 0x0106 }, { 1078, 0xe809 }, { 1084, 0x3f0f }, { 1094, 0xc00e },
+ { 1099, 0x0a88 }, { 1103, 0x8145 }, { 1108, 0x0010 }, { 1109, 0xc601 },
+ /* 0x5300 */
+ { 1114, 0xa161 }, { 1120, 0x26e1 }, { 1127, 0x444b }, { 1133, 0xce00 },
+ { 1138, 0xc7aa }, { 1147, 0xd4ee }, { 1157, 0xcadf }, { 1168, 0x85bb },
+ { 1177, 0x3a74 }, { 1185, 0xa520 }, { 1190, 0x436c }, { 1197, 0x8840 },
+ { 1200, 0x3f06 }, { 1208, 0x8bd2 }, { 1216, 0xff79 }, { 1229, 0x3bef },
+ /* 0x5400 */
+ { 1241, 0xf75a }, { 1252, 0xe8ef }, { 1263, 0xfbcb }, { 1275, 0x5b36 },
+ { 1284, 0x0d49 }, { 1290, 0x1bfd }, { 1301, 0x0154 }, { 1305, 0x39ee },
+ { 1315, 0xd855 }, { 1323, 0x2e75 }, { 1332, 0xbfd8 }, { 1343, 0xa91a },
+ { 1350, 0xf3d7 }, { 1362, 0xf6bf }, { 1375, 0x67e0 }, { 1383, 0xb40c },
+ /* 0x5500 */
+ { 1389, 0x82c2 }, { 1394, 0x0813 }, { 1398, 0xd49d }, { 1407, 0xd08b },
+ { 1414, 0x065a }, { 1420, 0x1061 }, { 1424, 0x74f2 }, { 1433, 0x59e0 },
+ { 1440, 0x8f9f }, { 1451, 0xb312 }, { 1458, 0x0080 }, { 1459, 0x6aaa },
+ { 1467, 0x3230 }, { 1472, 0xb05e }, { 1480, 0x9d7a }, { 1490, 0x60ac },
+ /* 0x5600 */
+ { 1496, 0xd303 }, { 1503, 0xc900 }, { 1507, 0x3098 }, { 1512, 0x8a56 },
+ { 1519, 0x7000 }, { 1522, 0x1390 }, { 1527, 0x1f14 }, { 1534, 0x1842 },
+ { 1538, 0xc060 }, { 1542, 0x0008 }, { 1543, 0x8008 }, { 1545, 0x1080 },
+ { 1547, 0x0400 }, { 1548, 0xec90 }, { 1555, 0x2817 }, { 1561, 0xe633 },
+ /* 0x5700 */
+ { 1570, 0x0758 }, { 1576, 0x9000 }, { 1578, 0xf708 }, { 1586, 0x4e09 },
+ { 1592, 0xf485 }, { 1600, 0xfc83 }, { 1609, 0xaf53 }, { 1619, 0x18c8 },
+ { 1624, 0x187c }, { 1631, 0x080c }, { 1634, 0x6adf }, { 1645, 0x0114 },
+ { 1648, 0xc80c }, { 1653, 0xa734 }, { 1661, 0xa011 }, { 1665, 0x2710 },
+ /* 0x5800 */
+ { 1670, 0x28c5 }, { 1676, 0x4222 }, { 1680, 0x0413 }, { 1684, 0x0021 },
+ { 1686, 0x3010 }, { 1689, 0x4112 }, { 1693, 0x1820 }, { 1696, 0x4000 },
+ { 1697, 0x022b }, { 1702, 0xc60c }, { 1708, 0x0300 }, { 1710, 0x1000 },
+ { 1711, 0x0022 }, { 1713, 0x0022 }, { 1715, 0x5810 }, { 1719, 0x0249 },
+ /* 0x5900 */
+ { 1723, 0xa094 }, { 1728, 0x9670 }, { 1735, 0xeeb0 }, { 1744, 0x1792 },
+ { 1751, 0xcb96 }, { 1760, 0x05f2 }, { 1767, 0x0025 }, { 1770, 0x2358 },
+ { 1776, 0x25de }, { 1785, 0x42cc }, { 1791, 0xcf38 }, { 1800, 0x4a04 },
+ { 1804, 0x0c40 }, { 1807, 0x359f }, { 1817, 0x1128 }, { 1821, 0x8a00 },
+ /* 0x5a00 */
+ { 1824, 0x13fa }, { 1833, 0x910a }, { 1838, 0x0229 }, { 1842, 0x1056 },
+ { 1847, 0x0641 }, { 1851, 0x0420 }, { 1853, 0x0484 }, { 1856, 0x84f0 },
+ { 1862, 0x0000 }, { 1862, 0x0c04 }, { 1865, 0x0400 }, { 1866, 0x412c },
+ { 1871, 0x1206 }, { 1875, 0x1154 }, { 1880, 0x0a4b }, { 1886, 0x0002 },
+ /* 0x5b00 */
+ { 1887, 0x0200 }, { 1888, 0x00c0 }, { 1890, 0x0000 }, { 1890, 0x0094 },
+ { 1893, 0x0001 }, { 1894, 0xbfbb }, { 1907, 0x167c }, { 1915, 0x242b },
+ { 1921, 0x9bbb }, { 1932, 0x7fa8 }, { 1942, 0x0c7f }, { 1951, 0xe379 },
+ { 1961, 0x10f4 }, { 1967, 0xe00d }, { 1973, 0x4132 }, { 1978, 0x9f01 },
+ /* 0x5c00 */
+ { 1985, 0x8652 }, { 1991, 0x3572 }, { 1999, 0x10b4 }, { 2004, 0xff12 },
+ { 2014, 0xcf27 }, { 2024, 0x4223 }, { 2029, 0xc06b }, { 2036, 0x8602 },
+ { 2040, 0x3106 }, { 2045, 0x1fd3 }, { 2055, 0x3a0c }, { 2061, 0xa1aa },
+ { 2068, 0x0812 }, { 2071, 0x0204 }, { 2073, 0x2572 }, { 2080, 0x0801 },
+ /* 0x5d00 */
+ { 2082, 0x40cc }, { 2087, 0x4850 }, { 2091, 0x62d0 }, { 2097, 0x6010 },
+ { 2100, 0x1c80 }, { 2104, 0x2900 }, { 2107, 0x9a00 }, { 2111, 0x0010 },
+ { 2112, 0x0004 }, { 2113, 0x2200 }, { 2115, 0x0000 }, { 2115, 0x0080 },
+ { 2116, 0x2020 }, { 2118, 0x6800 }, { 2121, 0xcbe6 }, { 2131, 0x609e },
+ /* 0x5e00 */
+ { 2138, 0x916e }, { 2146, 0x3f73 }, { 2157, 0x60c0 }, { 2161, 0x3982 },
+ { 2167, 0x1034 }, { 2171, 0x4830 }, { 2175, 0x0006 }, { 2177, 0xbd5c },
+ { 2187, 0x8cd1 }, { 2194, 0xd6fb }, { 2206, 0x20e1 }, { 2211, 0x43e8 },
+ { 2218, 0x0600 }, { 2220, 0x084e }, { 2225, 0x0500 }, { 2227, 0xc4d0 },
+ /* 0x5f00 */
+ { 2233, 0x8d1f }, { 2242, 0x89aa }, { 2249, 0xa6e1 }, { 2257, 0x1602 },
+ { 2261, 0x0001 }, { 2262, 0x21ed }, { 2270, 0x3656 }, { 2278, 0x1a8b },
+ { 2285, 0x1fb7 }, { 2296, 0x13a5 }, { 2303, 0x6502 }, { 2308, 0x30a0 },
+ { 2312, 0xb278 }, { 2320, 0x23c7 }, { 2328, 0x6c93 }, { 2336, 0xe922 },
+ /* 0x6000 */
+ { 2343, 0xe47f }, { 2354, 0x3a74 }, { 2362, 0x8fe3 }, { 2372, 0x9820 },
+ { 2376, 0x280e }, { 2381, 0x2625 }, { 2387, 0xbf9c }, { 2398, 0xbf49 },
+ { 2408, 0x3218 }, { 2413, 0xac54 }, { 2420, 0xb949 }, { 2428, 0x1916 },
+ { 2434, 0x0c60 }, { 2438, 0xb522 }, { 2445, 0xfbc1 }, { 2455, 0x0659 },
+ /* 0x6100 */
+ { 2461, 0xe343 }, { 2469, 0x8420 }, { 2472, 0x08d9 }, { 2478, 0x8000 },
+ { 2479, 0x5500 }, { 2483, 0x2022 }, { 2486, 0x0184 }, { 2489, 0x00a1 },
+ { 2492, 0x4800 }, { 2494, 0x2010 }, { 2496, 0x1380 }, { 2500, 0x4080 },
+ { 2502, 0x0d04 }, { 2506, 0x0016 }, { 2509, 0x0040 }, { 2510, 0x8020 },
+ /* 0x6200 */
+ { 2512, 0xfd40 }, { 2520, 0x8de7 }, { 2530, 0x5436 }, { 2537, 0xe098 },
+ { 2543, 0x7b8b }, { 2553, 0x091e }, { 2559, 0xfec8 }, { 2569, 0xd249 },
+ { 2576, 0x0611 }, { 2580, 0x8dee }, { 2590, 0x1937 }, { 2598, 0xba22 },
+ { 2605, 0x77f4 }, { 2616, 0x9fdd }, { 2628, 0xf3ec }, { 2639, 0xf0da },
+ /* 0x6300 */
+ { 2648, 0x4386 }, { 2654, 0xec42 }, { 2661, 0x8d3f }, { 2671, 0x2604 },
+ { 2675, 0xfa6c }, { 2685, 0xc021 }, { 2689, 0x628e }, { 2696, 0x0cc2 },
+ { 2701, 0xd785 }, { 2710, 0x0145 }, { 2714, 0x77ad }, { 2725, 0x5599 },
+ { 2733, 0xe250 }, { 2739, 0x4045 }, { 2743, 0x260b }, { 2749, 0xa154 },
+ /* 0x6400 */
+ { 2755, 0x9827 }, { 2762, 0x5819 }, { 2768, 0x3443 }, { 2774, 0xa410 },
+ { 2778, 0x05f2 }, { 2785, 0x4114 }, { 2789, 0x2280 }, { 2792, 0x0700 },
+ { 2795, 0x00b4 }, { 2799, 0x4266 }, { 2805, 0x7210 }, { 2810, 0x15a1 },
+ { 2816, 0x6025 }, { 2821, 0x4185 }, { 2826, 0x0054 }, { 2829, 0x0000 },
+ /* 0x6500 */
+ { 2829, 0x0201 }, { 2831, 0x0104 }, { 2833, 0xc820 }, { 2837, 0xcb70 },
+ { 2845, 0x9320 }, { 2850, 0x6a62 }, { 2857, 0x184c }, { 2862, 0x0095 },
+ { 2866, 0x1880 }, { 2869, 0x9a8b }, { 2877, 0xaab2 }, { 2885, 0x3201 },
+ { 2889, 0xd87a }, { 2898, 0x00c4 }, { 2901, 0xf3e5 }, { 2912, 0x04c3 },
+ /* 0x6600 */
+ { 2917, 0xd44d }, { 2925, 0xa238 }, { 2931, 0xa1a1 }, { 2937, 0x5072 },
+ { 2943, 0x980a }, { 2948, 0x84fc }, { 2956, 0xc152 }, { 2962, 0x44d1 },
+ { 2968, 0x1094 }, { 2972, 0x20c2 }, { 2976, 0x4180 }, { 2979, 0x4210 },
+ { 2982, 0x0000 }, { 2982, 0x3a00 }, { 2986, 0x0240 }, { 2988, 0xd29d },
+ /* 0x6700 */
+ { 2997, 0x2f01 }, { 3003, 0xa8b1 }, { 3010, 0xbd40 }, { 3017, 0x2432 },
+ { 3022, 0xd34d }, { 3031, 0xd04b }, { 3038, 0xa723 }, { 3046, 0xd0ad },
+ { 3054, 0x0a92 }, { 3059, 0x75a1 }, { 3067, 0xadac }, { 3076, 0x01e9 },
+ { 3082, 0x801a }, { 3086, 0x771f }, { 3097, 0x9225 }, { 3103, 0xa01b },
+ /* 0x6800 */
+ { 3109, 0xdfa1 }, { 3119, 0x20ca }, { 3124, 0x0602 }, { 3127, 0x738c },
+ { 3135, 0x577f }, { 3147, 0x003b }, { 3152, 0x0bff }, { 3163, 0x00d0 },
+ { 3166, 0x806a }, { 3171, 0x0088 }, { 3173, 0xa1c4 }, { 3179, 0x0029 },
+ { 3182, 0x2a05 }, { 3187, 0x0524 }, { 3191, 0x4009 }, { 3194, 0x1623 },
+ /* 0x6900 */
+ { 3200, 0x6822 }, { 3205, 0x8005 }, { 3208, 0x2011 }, { 3211, 0xa211 },
+ { 3216, 0x0004 }, { 3217, 0x6490 }, { 3222, 0x4849 }, { 3227, 0x1382 },
+ { 3232, 0x23d5 }, { 3240, 0x1930 }, { 3245, 0x2980 }, { 3249, 0x0892 },
+ { 3253, 0x5402 }, { 3257, 0x8811 }, { 3261, 0x2001 }, { 3263, 0xa004 },
+ /* 0x6a00 */
+ { 3266, 0x0400 }, { 3267, 0x8180 }, { 3270, 0x8502 }, { 3274, 0x6022 },
+ { 3278, 0x0090 }, { 3280, 0x0b01 }, { 3284, 0x0022 }, { 3286, 0x1202 },
+ { 3289, 0x4011 }, { 3292, 0x0083 }, { 3295, 0x1a01 }, { 3299, 0x0000 },
+ { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 },
+ /* 0x6b00 */
+ { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x009f }, { 3305, 0x4684 },
+ { 3310, 0x12c8 }, { 3315, 0x0200 }, { 3316, 0x04fc }, { 3323, 0x1a00 },
+ { 3326, 0x2ede }, { 3336, 0x0c4c }, { 3341, 0x0402 }, { 3343, 0x80b8 },
+ { 3348, 0xa826 }, { 3354, 0x0afc }, { 3362, 0x8c02 }, { 3366, 0x2228 },
+ /* 0x6c00 */
+ { 3370, 0xa0e0 }, { 3375, 0x8f7b }, { 3386, 0xc7d6 }, { 3396, 0x2135 },
+ { 3402, 0x06c7 }, { 3409, 0xf8b1 }, { 3418, 0x0713 }, { 3424, 0x6255 },
+ { 3431, 0x936e }, { 3440, 0x8a19 }, { 3446, 0x6efa }, { 3457, 0xfb0e },
+ { 3467, 0x1630 }, { 3472, 0x48f9 }, { 3480, 0xcd2f }, { 3490, 0x7deb },
+ /* 0x6d00 */
+ { 3502, 0x5892 }, { 3508, 0x4e84 }, { 3514, 0x4ca0 }, { 3519, 0x7a2e },
+ { 3528, 0xedea }, { 3539, 0x561e }, { 3547, 0xc649 }, { 3554, 0x1190 },
+ { 3558, 0x5324 }, { 3564, 0xe83a }, { 3572, 0xcfdb }, { 3584, 0x8124 },
+ { 3588, 0x18f1 }, { 3595, 0x6342 }, { 3601, 0x5853 }, { 3608, 0x1a8a },
+ /* 0x6e00 */
+ { 3614, 0x7420 }, { 3619, 0x24d3 }, { 3626, 0xaa3b }, { 3635, 0x0514 },
+ { 3639, 0x6018 }, { 3643, 0x8958 }, { 3649, 0x4800 }, { 3651, 0xc000 },
+ { 3653, 0x8268 }, { 3658, 0x9101 }, { 3662, 0x84a4 }, { 3667, 0x2cd6 },
+ { 3675, 0x8886 }, { 3680, 0xc4ba }, { 3688, 0x0377 }, { 3696, 0x0210 },
+ /* 0x6f00 */
+ { 3698, 0x8244 }, { 3702, 0x0038 }, { 3705, 0xae11 }, { 3712, 0x404a },
+ { 3716, 0x28c0 }, { 3720, 0x5100 }, { 3723, 0x6044 }, { 3727, 0x1514 },
+ { 3732, 0x7310 }, { 3738, 0x1000 }, { 3739, 0x0082 }, { 3741, 0x0248 },
+ { 3744, 0x0205 }, { 3747, 0x4006 }, { 3750, 0xc003 }, { 3754, 0x0000 },
+ /* 0x7000 */
+ { 3754, 0x0000 }, { 3754, 0x0c02 }, { 3757, 0x0008 }, { 3758, 0x0220 },
+ { 3760, 0x9000 }, { 3762, 0x4000 }, { 3763, 0xb800 }, { 3767, 0xd161 },
+ { 3774, 0x4621 }, { 3779, 0x3274 }, { 3786, 0xf800 }, { 3791, 0x3b8a },
+ { 3799, 0x050f }, { 3805, 0x8b00 }, { 3809, 0xbbd0 }, { 3818, 0x2280 },
+ /* 0x7100 */
+ { 3821, 0x0600 }, { 3823, 0x0769 }, { 3830, 0x8040 }, { 3832, 0x0043 },
+ { 3835, 0x5420 }, { 3839, 0x5000 }, { 3841, 0x41d0 }, { 3846, 0x250c },
+ { 3851, 0x8410 }, { 3854, 0x8310 }, { 3858, 0x1101 }, { 3861, 0x0228 },
+ { 3864, 0x4008 }, { 3866, 0x0030 }, { 3868, 0x40a1 }, { 3872, 0x0200 },
+ /* 0x7200 */
+ { 3873, 0x0040 }, { 3874, 0x2000 }, { 3875, 0x1500 }, { 3878, 0xabe3 },
+ { 3888, 0x3180 }, { 3892, 0xaa44 }, { 3898, 0xc2c6 }, { 3905, 0xc624 },
+ { 3911, 0xac13 }, { 3918, 0x8004 }, { 3920, 0xb000 }, { 3923, 0x03d1 },
+ { 3929, 0x611e }, { 3936, 0x4285 }, { 3941, 0xf303 }, { 3949, 0x1d9f },
+ /* 0x7300 */
+ { 3959, 0x440a }, { 3963, 0x78e8 }, { 3971, 0x5e26 }, { 3979, 0xc392 },
+ { 3986, 0x2000 }, { 3987, 0x0085 }, { 3990, 0xb001 }, { 3994, 0x4000 },
+ { 3995, 0x4a90 }, { 4000, 0x8842 }, { 4004, 0xca04 }, { 4009, 0x0c8d },
+ { 4015, 0xa705 }, { 4022, 0x4203 }, { 4026, 0x22a1 }, { 4031, 0x0004 },
+ /* 0x7400 */
+ { 4032, 0x8668 }, { 4038, 0x0c01 }, { 4041, 0x5564 }, { 4048, 0x1079 },
+ { 4054, 0x0002 }, { 4055, 0xdea0 }, { 4063, 0x2000 }, { 4064, 0x40c1 },
+ { 4068, 0x488b }, { 4074, 0x5001 }, { 4077, 0x0380 }, { 4080, 0x0400 },
+ { 4081, 0x0000 }, { 4081, 0x5004 }, { 4084, 0xc05d }, { 4091, 0x80d0 },
+ /* 0x7500 */
+ { 4095, 0xa010 }, { 4098, 0x970a }, { 4105, 0xbb20 }, { 4112, 0x4daf },
+ { 4122, 0xd921 }, { 4129, 0x1e10 }, { 4134, 0x0460 }, { 4137, 0x8314 },
+ { 4142, 0x8848 }, { 4146, 0xa6d6 }, { 4155, 0xd83b }, { 4164, 0x733f },
+ { 4175, 0x27bc }, { 4184, 0x4974 }, { 4191, 0x0ddc }, { 4199, 0x9213 },
+ /* 0x7600 */
+ { 4205, 0x142b }, { 4211, 0x8ba1 }, { 4218, 0x2e75 }, { 4227, 0xd139 },
+ { 4235, 0x3009 }, { 4239, 0x5050 }, { 4243, 0x8808 }, { 4246, 0x6900 },
+ { 4250, 0x49d4 }, { 4257, 0x024a }, { 4261, 0x4010 }, { 4263, 0x8016 },
+ { 4267, 0xe564 }, { 4275, 0x89d7 }, { 4284, 0xc020 }, { 4287, 0x5316 },
+ /* 0x7700 */
+ { 4294, 0x2b92 }, { 4301, 0x8600 }, { 4304, 0xa345 }, { 4311, 0x15e0 },
+ { 4317, 0x008b }, { 4321, 0x0c03 }, { 4325, 0x196e }, { 4333, 0xe200 },
+ { 4337, 0x7031 }, { 4343, 0x8006 }, { 4346, 0x16a5 }, { 4353, 0xa829 },
+ { 4359, 0x2000 }, { 4360, 0x1880 }, { 4363, 0x7aac }, { 4372, 0xe148 },
+ /* 0x7800 */
+ { 4378, 0x3207 }, { 4384, 0xb5d6 }, { 4394, 0x32e8 }, { 4401, 0x5f91 },
+ { 4410, 0x50a1 }, { 4415, 0x20e5 }, { 4421, 0x7c00 }, { 4426, 0x1080 },
+ { 4428, 0x7280 }, { 4433, 0x9d8a }, { 4441, 0x00aa }, { 4445, 0x421f },
+ { 4452, 0x0e22 }, { 4457, 0x0231 }, { 4461, 0x1100 }, { 4463, 0x0494 },
+ /* 0x7900 */
+ { 4467, 0x0022 }, { 4469, 0x4008 }, { 4471, 0x0010 }, { 4472, 0x5c10 },
+ { 4477, 0x0343 }, { 4482, 0xfcc8 }, { 4491, 0xa1a5 }, { 4498, 0x0580 },
+ { 4501, 0x8433 }, { 4507, 0x0400 }, { 4508, 0x0080 }, { 4509, 0x6e08 },
+ { 4515, 0x2a4b }, { 4522, 0x8126 }, { 4527, 0xaad8 }, { 4535, 0x2901 },
+ /* 0x7a00 */
+ { 4539, 0x684d }, { 4546, 0x4490 }, { 4550, 0x0009 }, { 4552, 0xba88 },
+ { 4559, 0x0040 }, { 4560, 0x0082 }, { 4562, 0x0000 }, { 4562, 0x87d1 },
+ { 4570, 0x215b }, { 4577, 0xb1e6 }, { 4586, 0x3161 }, { 4592, 0x8008 },
+ { 4594, 0x0800 }, { 4595, 0xc240 }, { 4599, 0xa069 }, { 4605, 0xa600 },
+ /* 0x7b00 */
+ { 4609, 0x8d58 }, { 4616, 0x4a32 }, { 4622, 0x5d71 }, { 4631, 0x550a },
+ { 4637, 0x9aa0 }, { 4643, 0x2d57 }, { 4652, 0x4005 }, { 4655, 0x4aa6 },
+ { 4662, 0x2021 }, { 4665, 0x30b1 }, { 4671, 0x3fc6 }, { 4681, 0x0112 },
+ { 4684, 0x10c2 }, { 4688, 0x260a }, { 4693, 0x4462 }, { 4698, 0x5082 },
+ /* 0x7c00 */
+ { 4702, 0x9880 }, { 4706, 0x8040 }, { 4708, 0x04c0 }, { 4711, 0x8100 },
+ { 4713, 0x2003 }, { 4716, 0x0000 }, { 4716, 0x0000 }, { 4716, 0x3818 },
+ { 4721, 0x0200 }, { 4722, 0xf1a6 }, { 4731, 0x4434 }, { 4736, 0x720e },
+ { 4743, 0x35a2 }, { 4750, 0x92e0 }, { 4756, 0x8101 }, { 4759, 0x0900 },
+ /* 0x7d00 */
+ { 4761, 0x0400 }, { 4762, 0x0000 }, { 4762, 0x8885 }, { 4767, 0x0000 },
+ { 4767, 0x0000 }, { 4767, 0x0000 }, { 4767, 0x4000 }, { 4768, 0x0080 },
+ { 4769, 0x0000 }, { 4769, 0x0000 }, { 4769, 0x4040 }, { 4771, 0x0000 },
+ { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 },
+ /* 0x7e00 */
+ { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0800 },
+ { 4772, 0x0082 }, { 4774, 0x0000 }, { 4774, 0x0000 }, { 4774, 0x0000 },
+ { 4774, 0x0004 }, { 4775, 0x8800 }, { 4777, 0xbfff }, { 4792, 0xe7ef },
+ { 4805, 0xffff }, { 4821, 0xffbf }, { 4836, 0xefef }, { 4850, 0xfdff },
+ /* 0x7f00 */
+ { 4865, 0xfbff }, { 4880, 0xbffe }, { 4894, 0xffff }, { 4910, 0x057f },
+ { 4919, 0x0034 }, { 4922, 0x85b3 }, { 4930, 0x4706 }, { 4936, 0x4216 },
+ { 4941, 0x5402 }, { 4945, 0xe410 }, { 4950, 0x8092 }, { 4954, 0xb305 },
+ { 4961, 0x5422 }, { 4966, 0x8130 }, { 4970, 0x4263 }, { 4976, 0x180b },
+ /* 0x8000 */
+ { 4981, 0x387b }, { 4990, 0x13f5 }, { 4999, 0x07e5 }, { 5007, 0xa9ea },
+ { 5016, 0x3c4c }, { 5023, 0x0514 }, { 5027, 0x0600 }, { 5029, 0x8002 },
+ { 5031, 0x1ad9 }, { 5039, 0xbd48 }, { 5047, 0xee37 }, { 5058, 0xf496 },
+ { 5067, 0x705f }, { 5076, 0x7ec0 }, { 5084, 0xbfb2 }, { 5095, 0x355f },
+ /* 0x8100 */
+ { 5105, 0xe644 }, { 5112, 0x455f }, { 5121, 0x9000 }, { 5123, 0x4146 },
+ { 5128, 0x1d40 }, { 5133, 0x063b }, { 5140, 0x62a1 }, { 5146, 0xfe13 },
+ { 5156, 0x8505 }, { 5161, 0x3902 }, { 5166, 0x0548 }, { 5170, 0x0c08 },
+ { 5173, 0x144f }, { 5180, 0x0000 }, { 5180, 0x3488 }, { 5185, 0x5818 },
+ /* 0x8200 */
+ { 5190, 0x3077 }, { 5198, 0xd815 }, { 5205, 0xbd0e }, { 5214, 0x4bfb },
+ { 5225, 0x8a90 }, { 5230, 0x8500 }, { 5233, 0xc100 }, { 5236, 0xe61d },
+ { 5245, 0xed14 }, { 5253, 0xb386 }, { 5261, 0xff72 }, { 5273, 0x639b },
+ { 5282, 0xfd92 }, { 5292, 0xd9be }, { 5303, 0x887b }, { 5311, 0x0a92 },
+ /* 0x8300 */
+ { 5316, 0xd3fe }, { 5328, 0x1cb2 }, { 5335, 0xb980 }, { 5341, 0x177a },
+ { 5350, 0x82c9 }, { 5356, 0xdc17 }, { 5365, 0xfffb }, { 5380, 0x3980 },
+ { 5385, 0x4260 }, { 5389, 0x590c }, { 5395, 0x0f01 }, { 5400, 0x37df },
+ { 5412, 0x94a3 }, { 5419, 0xb150 }, { 5425, 0x0623 }, { 5430, 0x2307 },
+ /* 0x8400 */
+ { 5436, 0xf85a }, { 5445, 0x3102 }, { 5449, 0x01f0 }, { 5454, 0x3102 },
+ { 5458, 0x0040 }, { 5459, 0x1e82 }, { 5465, 0x3a0a }, { 5471, 0x056a },
+ { 5477, 0x5b84 }, { 5484, 0x1280 }, { 5487, 0x8002 }, { 5489, 0xa714 },
+ { 5496, 0x2612 }, { 5501, 0xa04b }, { 5507, 0x1069 }, { 5512, 0x9001 },
+ /* 0x8500 */
+ { 5515, 0x1000 }, { 5516, 0x848a }, { 5521, 0x1802 }, { 5524, 0x3f80 },
+ { 5531, 0x0708 }, { 5535, 0x4240 }, { 5538, 0x0110 }, { 5540, 0x4e14 },
+ { 5546, 0x80b0 }, { 5550, 0x1800 }, { 5552, 0xc510 }, { 5557, 0x0281 },
+ { 5560, 0x8202 }, { 5563, 0x1029 }, { 5567, 0x0210 }, { 5569, 0x8800 },
+ /* 0x8600 */
+ { 5571, 0x0020 }, { 5572, 0x0042 }, { 5574, 0x0280 }, { 5576, 0x1100 },
+ { 5578, 0xe000 }, { 5581, 0x4413 }, { 5586, 0x5804 }, { 5590, 0xfe02 },
+ { 5598, 0x3c07 }, { 5605, 0x3028 }, { 5609, 0x9798 }, { 5617, 0x0473 },
+ { 5623, 0xced1 }, { 5632, 0xcb13 }, { 5640, 0x6210 }, { 5644, 0x431f },
+ /* 0x8700 */
+ { 5652, 0x278d }, { 5660, 0x55ac }, { 5668, 0x422e }, { 5674, 0xc892 },
+ { 5680, 0x5380 }, { 5685, 0x0288 }, { 5688, 0x4039 }, { 5693, 0x7851 },
+ { 5700, 0x292c }, { 5706, 0x8088 }, { 5709, 0xb900 }, { 5714, 0x2428 },
+ { 5718, 0x0c41 }, { 5722, 0x080e }, { 5726, 0x4421 }, { 5730, 0x4200 },
+ /* 0x8800 */
+ { 5732, 0x0408 }, { 5734, 0x0868 }, { 5738, 0x0006 }, { 5740, 0x1204 },
+ { 5743, 0x3031 }, { 5748, 0x0290 }, { 5751, 0x5b3e }, { 5761, 0xe085 },
+ { 5767, 0x2936 }, { 5774, 0x1044 }, { 5777, 0x2814 }, { 5781, 0x1082 },
+ { 5784, 0x4266 }, { 5790, 0x8334 }, { 5796, 0x013c }, { 5801, 0x531b },
+ /* 0x8900 */
+ { 5809, 0x0404 }, { 5811, 0x0e0d }, { 5817, 0x0c22 }, { 5821, 0x0051 },
+ { 5824, 0x0012 }, { 5826, 0xc000 }, { 5828, 0x0040 }, { 5829, 0x8800 },
+ { 5831, 0x004a }, { 5834, 0x0000 }, { 5834, 0x0000 }, { 5834, 0x0000 },
+ { 5834, 0xdff6 }, { 5847, 0x5447 }, { 5854, 0x8868 }, { 5859, 0x0008 },
+ /* 0x8a00 */
+ { 5860, 0x0081 }, { 5862, 0x0000 }, { 5862, 0x0000 }, { 5862, 0x4000 },
+ { 5863, 0x0100 }, { 5864, 0x0000 }, { 5864, 0x0000 }, { 5864, 0x0200 },
+ { 5865, 0x0600 }, { 5867, 0x0008 }, { 5868, 0x0000 }, { 5868, 0x0000 },
+ { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 },
+ /* 0x8b00 */
+ { 5868, 0x0080 }, { 5869, 0x0000 }, { 5869, 0x0040 }, { 5870, 0x0000 },
+ { 5870, 0x0000 }, { 5870, 0x0000 }, { 5870, 0x1040 }, { 5872, 0x0000 },
+ { 5872, 0x0000 }, { 5872, 0x0000 }, { 5872, 0xefff }, { 5887, 0xf7fd },
+ { 5901, 0xff7f }, { 5916, 0xfffe }, { 5931, 0xfbff }, { 5946, 0xffff },
+ /* 0x8c00 */
+ { 5962, 0xfdff }, { 5977, 0xbfff }, { 5992, 0xffff }, { 6008, 0x00ff },
+ { 6016, 0x12c2 }, { 6021, 0x0420 }, { 6023, 0x0c06 }, { 6027, 0x0708 },
+ { 6031, 0x1624 }, { 6036, 0x0110 }, { 6038, 0x0000 }, { 6038, 0x0000 },
+ { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 },
+ /* 0x8d00 */
+ { 6038, 0x0000 }, { 6038, 0xe000 }, { 6041, 0xfffe }, { 6056, 0xffff },
+ { 6072, 0xffff }, { 6088, 0x7f79 }, { 6100, 0x28df }, { 6109, 0x00f9 },
+ { 6115, 0x0c32 }, { 6120, 0x8012 }, { 6123, 0x0008 }, { 6124, 0xd53a },
+ { 6133, 0xd858 }, { 6140, 0xecc2 }, { 6148, 0x9d18 }, { 6155, 0x2fa8 },
+ /* 0x8e00 */
+ { 6163, 0x9620 }, { 6168, 0xe010 }, { 6172, 0xd60c }, { 6179, 0x2622 },
+ { 6184, 0x0f97 }, { 6193, 0x0206 }, { 6196, 0xb240 }, { 6201, 0x9055 },
+ { 6207, 0x80a2 }, { 6211, 0x5011 }, { 6215, 0x9800 }, { 6218, 0x0404 },
+ { 6220, 0x4000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 },
+ /* 0x8f00 */
+ { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 },
+ { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0xfbc0 }, { 6230, 0xffff },
+ { 6246, 0xeffe }, { 6260, 0xdffb }, { 6274, 0x0b08 }, { 6278, 0x6243 },
+ { 6284, 0x41b6 }, { 6291, 0xfb3b }, { 6303, 0x6f74 }, { 6313, 0x2389 },
+ /* 0x9000 */
+ { 6319, 0xae7f }, { 6331, 0xecd7 }, { 6342, 0xe047 }, { 6349, 0x5960 },
+ { 6355, 0xa096 }, { 6361, 0x098f }, { 6368, 0x612c }, { 6374, 0xa030 },
+ { 6378, 0x090d }, { 6383, 0x2aaa }, { 6390, 0xd44e }, { 6398, 0x4f7b },
+ { 6409, 0xc4b2 }, { 6416, 0x388b }, { 6423, 0xa9c6 }, { 6431, 0x6110 },
+ /* 0x9100 */
+ { 6435, 0x0014 }, { 6437, 0x4200 }, { 6439, 0x800c }, { 6442, 0x0202 },
+ { 6444, 0xfe48 }, { 6453, 0x6485 }, { 6459, 0xd63e }, { 6469, 0xe3f7 },
+ { 6481, 0x3aa0 }, { 6487, 0x0c07 }, { 6492, 0xe40c }, { 6498, 0x0430 },
+ { 6501, 0xf680 }, { 6508, 0x1002 }, { 6510, 0x0000 }, { 6510, 0x0000 },
+ /* 0x9200 */
+ { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 },
+ { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0010 },
+ { 6511, 0x4000 }, { 6512, 0x0000 }, { 6512, 0x4000 }, { 6513, 0x0000 },
+ { 6513, 0x0100 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 },
+ /* 0x9300 */
+ { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x4000 },
+ { 6515, 0x0000 }, { 6515, 0x0000 }, { 6515, 0x0400 }, { 6516, 0x0000 },
+ { 6516, 0x8000 }, { 6517, 0x0000 }, { 6517, 0x0000 }, { 6517, 0x0000 },
+ { 6517, 0x0400 }, { 6518, 0x0040 }, { 6519, 0x0000 }, { 6519, 0x0000 },
+ /* 0x9400 */
+ { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x4000 },
+ { 6520, 0x0000 }, { 6520, 0x0000 }, { 6520, 0x0800 }, { 6521, 0x0000 },
+ { 6521, 0xffe0 }, { 6532, 0xfebd }, { 6545, 0xffff }, { 6561, 0xffff },
+ { 6577, 0x7f7f }, { 6591, 0xfbe7 }, { 6604, 0xffbf }, { 6619, 0xf7ff },
+ /* 0x9500 */
+ { 6634, 0xffff }, { 6650, 0xefff }, { 6665, 0xff7e }, { 6679, 0xdff7 },
+ { 6693, 0xf6f7 }, { 6706, 0xfbdf }, { 6720, 0xbffe }, { 6734, 0x804f },
+ { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 },
+ { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0xef00 }, { 6747, 0x7fff },
+ /* 0x9600 */
+ { 6762, 0xff7f }, { 6777, 0xb6f7 }, { 6789, 0x4406 }, { 6793, 0xb87e },
+ { 6803, 0x3bf5 }, { 6814, 0x8831 }, { 6819, 0x1796 }, { 6827, 0x00f4 },
+ { 6832, 0xa960 }, { 6838, 0x1391 }, { 6844, 0x0080 }, { 6845, 0x7249 },
+ { 6852, 0xf2f3 }, { 6863, 0x0024 }, { 6865, 0x8701 }, { 6870, 0x42c8 },
+ /* 0x9700 */
+ { 6875, 0xe3d3 }, { 6885, 0x5048 }, { 6889, 0x2400 }, { 6891, 0x4305 },
+ { 6896, 0x0000 }, { 6896, 0x4a4c }, { 6902, 0x0227 }, { 6907, 0x1058 },
+ { 6911, 0x2820 }, { 6914, 0x0116 }, { 6918, 0xa809 }, { 6923, 0x0014 },
+ { 6925, 0x0000 }, { 6925, 0x0000 }, { 6925, 0x3ec0 }, { 6932, 0x0068 },
+ /* 0x9800 */
+ { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 },
+ { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0xffe0 },
+ { 6946, 0xb7ff }, { 6960, 0xfddb }, { 6973, 0x00f7 }, { 6980, 0x0000 },
+ { 6980, 0x4000 }, { 6981, 0xc72e }, { 6990, 0x0180 }, { 6992, 0x0000 },
+ /* 0x9900 */
+ { 6992, 0x2000 }, { 6993, 0x0001 }, { 6994, 0x4000 }, { 6995, 0x0000 },
+ { 6995, 0x0000 }, { 6995, 0x0030 }, { 6997, 0xffa8 }, { 7008, 0xb4f7 },
+ { 7019, 0xadf3 }, { 7030, 0x03ff }, { 7040, 0x0120 }, { 7042, 0x0000 },
+ { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 },
+ /* 0x9a00 */
+ { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 },
+ { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0xf000 }, { 7046, 0xfffb },
+ { 7061, 0x9df7 }, { 7073, 0xfdcf }, { 7086, 0x01bf }, { 7094, 0x15c3 },
+ { 7101, 0x1827 }, { 7107, 0x810a }, { 7111, 0xa842 }, { 7116, 0x0a00 },
+ /* 0x9b00 */
+ { 7118, 0x8108 }, { 7121, 0x8008 }, { 7123, 0x8008 }, { 7125, 0x1804 },
+ { 7128, 0xa3be }, { 7138, 0x0012 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ /* 0x9c00 */
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x9000 },
+ { 7142, 0x69e6 }, { 7151, 0xdc37 }, { 7161, 0x6bff }, { 7174, 0x3dff },
+ { 7187, 0xfcf8 }, { 7198, 0xf3f9 }, { 7210, 0x0004 },
+};
+static const Summary16 gb2312_uni2indx_page9e[27] = {
+ /* 0x9e00 */
+ { 7211, 0x0000 }, { 7211, 0x8000 }, { 7212, 0xbf6f }, { 7225, 0xe7ee },
+ { 7237, 0xdffe }, { 7251, 0x5da2 }, { 7259, 0x3fd8 }, { 7269, 0xc00b },
+ { 7274, 0x0984 }, { 7278, 0xa00c }, { 7282, 0x0040 }, { 7283, 0x6910 },
+ { 7288, 0xe210 }, { 7293, 0xb912 }, { 7300, 0x86a5 }, { 7307, 0x5a00 },
+ /* 0x9f00 */
+ { 7311, 0x6800 }, { 7314, 0x0289 }, { 7318, 0x9005 }, { 7322, 0x6a80 },
+ { 7327, 0x0010 }, { 7328, 0x0003 }, { 7330, 0x0000 }, { 7330, 0x8000 },
+ { 7331, 0x1ff9 }, { 7342, 0x8e00 }, { 7346, 0x0001 },
+};
+static const Summary16 gb2312_uni2indx_pageff[15] = {
+ /* 0xff00 */
+ { 7347, 0xfffe }, { 7362, 0xffff }, { 7378, 0xffff }, { 7394, 0xffff },
+ { 7410, 0xffff }, { 7426, 0x7fff }, { 7441, 0x0000 }, { 7441, 0x0000 },
+ { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 },
+ { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x002b },
+};
+
+static int
+gb2312_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc < 0x0460)
+ summary = &gb2312_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x2000 && wc < 0x2650)
+ summary = &gb2312_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x3000 && wc < 0x3230)
+ summary = &gb2312_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9cf0)
+ summary = &gb2312_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0x9e00 && wc < 0x9fb0)
+ summary = &gb2312_uni2indx_page9e[(wc>>4)-0x9e0];
+ else if (wc >= 0xff00 && wc < 0xfff0)
+ summary = &gb2312_uni2indx_pageff[(wc>>4)-0xff0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = gb2312_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/gbk.h b/libX11/src/xlibi18n/lcUniConv/gbk.h
index 09c2e63ee..7d7e0536b 100644
--- a/libX11/src/xlibi18n/lcUniConv/gbk.h
+++ b/libX11/src/xlibi18n/lcUniConv/gbk.h
@@ -1,6200 +1,6200 @@
-
-/*
- * GBK-0
- */
-
-static const unsigned short gbk_2uni_page81[23766] = {
- /* 0x81 */
- 0x4e02, 0x4e04, 0x4e05, 0x4e06, 0x4e0f, 0x4e12, 0x4e17, 0x4e1f,
- 0x4e20, 0x4e21, 0x4e23, 0x4e26, 0x4e29, 0x4e2e, 0x4e2f, 0x4e31,
- 0x4e33, 0x4e35, 0x4e37, 0x4e3c, 0x4e40, 0x4e41, 0x4e42, 0x4e44,
- 0x4e46, 0x4e4a, 0x4e51, 0x4e55, 0x4e57, 0x4e5a, 0x4e5b, 0x4e62,
- 0x4e63, 0x4e64, 0x4e65, 0x4e67, 0x4e68, 0x4e6a, 0x4e6b, 0x4e6c,
- 0x4e6d, 0x4e6e, 0x4e6f, 0x4e72, 0x4e74, 0x4e75, 0x4e76, 0x4e77,
- 0x4e78, 0x4e79, 0x4e7a, 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7f, 0x4e80,
- 0x4e81, 0x4e82, 0x4e83, 0x4e84, 0x4e85, 0x4e87, 0x4e8a, 0x4e90,
- 0x4e96, 0x4e97, 0x4e99, 0x4e9c, 0x4e9d, 0x4e9e, 0x4ea3, 0x4eaa,
- 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb4, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9,
- 0x4ebc, 0x4ebd, 0x4ebe, 0x4ec8, 0x4ecc, 0x4ecf, 0x4ed0, 0x4ed2,
- 0x4eda, 0x4edb, 0x4edc, 0x4ee0, 0x4ee2, 0x4ee6, 0x4ee7, 0x4ee9,
- 0x4eed, 0x4eee, 0x4eef, 0x4ef1, 0x4ef4, 0x4ef8, 0x4ef9, 0x4efa,
- 0x4efc, 0x4efe, 0x4f00, 0x4f02, 0x4f03, 0x4f04, 0x4f05, 0x4f06,
- 0x4f07, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12, 0x4f13, 0x4f14, 0x4f15,
- 0x4f16, 0x4f1c, 0x4f1d, 0x4f21, 0x4f23, 0x4f28, 0x4f29, 0x4f2c,
- 0x4f2d, 0x4f2e, 0x4f31, 0x4f33, 0x4f35, 0x4f37, 0x4f39, 0x4f3b,
- 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f44, 0x4f45, 0x4f47,
- 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56,
- 0x4f61, 0x4f62, 0x4f66, 0x4f68, 0x4f6a, 0x4f6b, 0x4f6d, 0x4f6e,
- 0x4f71, 0x4f72, 0x4f75, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7d,
- 0x4f80, 0x4f81, 0x4f82, 0x4f85, 0x4f86, 0x4f87, 0x4f8a, 0x4f8c,
- 0x4f8e, 0x4f90, 0x4f92, 0x4f93, 0x4f95, 0x4f96, 0x4f98, 0x4f99,
- 0x4f9a, 0x4f9c, 0x4f9e, 0x4f9f, 0x4fa1, 0x4fa2,
- /* 0x82 */
- 0x4fa4, 0x4fab, 0x4fad, 0x4fb0, 0x4fb1, 0x4fb2, 0x4fb3, 0x4fb4,
- 0x4fb6, 0x4fb7, 0x4fb8, 0x4fb9, 0x4fba, 0x4fbb, 0x4fbc, 0x4fbd,
- 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc2, 0x4fc6, 0x4fc7, 0x4fc8, 0x4fc9,
- 0x4fcb, 0x4fcc, 0x4fcd, 0x4fd2, 0x4fd3, 0x4fd4, 0x4fd5, 0x4fd6,
- 0x4fd9, 0x4fdb, 0x4fe0, 0x4fe2, 0x4fe4, 0x4fe5, 0x4fe7, 0x4feb,
- 0x4fec, 0x4ff0, 0x4ff2, 0x4ff4, 0x4ff5, 0x4ff6, 0x4ff7, 0x4ff9,
- 0x4ffb, 0x4ffc, 0x4ffd, 0x4fff, 0x5000, 0x5001, 0x5002, 0x5003,
- 0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500a, 0x500b,
- 0x500e, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017, 0x501b,
- 0x501d, 0x501e, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502b,
- 0x502f, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036,
- 0x5037, 0x5038, 0x5039, 0x503b, 0x503d, 0x503f, 0x5040, 0x5041,
- 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504a, 0x504b, 0x504d,
- 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 0x5058,
- 0x5059, 0x505b, 0x505d, 0x505e, 0x505f, 0x5060, 0x5061, 0x5062,
- 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506a, 0x506b,
- 0x506d, 0x506e, 0x506f, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074,
- 0x5075, 0x5078, 0x5079, 0x507a, 0x507c, 0x507d, 0x5081, 0x5082,
- 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508a, 0x508b, 0x508c,
- 0x508e, 0x508f, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095,
- 0x5096, 0x5097, 0x5098, 0x5099, 0x509a, 0x509b, 0x509c, 0x509d,
- 0x509e, 0x509f, 0x50a0, 0x50a1, 0x50a2, 0x50a4, 0x50a6, 0x50aa,
- 0x50ab, 0x50ad, 0x50ae, 0x50af, 0x50b0, 0x50b1, 0x50b3, 0x50b4,
- 0x50b5, 0x50b6, 0x50b7, 0x50b8, 0x50b9, 0x50bc,
- /* 0x83 */
- 0x50bd, 0x50be, 0x50bf, 0x50c0, 0x50c1, 0x50c2, 0x50c3, 0x50c4,
- 0x50c5, 0x50c6, 0x50c7, 0x50c8, 0x50c9, 0x50ca, 0x50cb, 0x50cc,
- 0x50cd, 0x50ce, 0x50d0, 0x50d1, 0x50d2, 0x50d3, 0x50d4, 0x50d5,
- 0x50d7, 0x50d8, 0x50d9, 0x50db, 0x50dc, 0x50dd, 0x50de, 0x50df,
- 0x50e0, 0x50e1, 0x50e2, 0x50e3, 0x50e4, 0x50e5, 0x50e8, 0x50e9,
- 0x50ea, 0x50eb, 0x50ef, 0x50f0, 0x50f1, 0x50f2, 0x50f4, 0x50f6,
- 0x50f7, 0x50f8, 0x50f9, 0x50fa, 0x50fc, 0x50fd, 0x50fe, 0x50ff,
- 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108, 0x5109,
- 0x510a, 0x510c, 0x510d, 0x510e, 0x510f, 0x5110, 0x5111, 0x5113,
- 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511a, 0x511b,
- 0x511c, 0x511d, 0x511e, 0x511f, 0x5120, 0x5122, 0x5123, 0x5124,
- 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512a, 0x512b, 0x512c,
- 0x512d, 0x512e, 0x512f, 0x5130, 0x5131, 0x5132, 0x5133, 0x5134,
- 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513a, 0x513b, 0x513c,
- 0x513d, 0x513e, 0x5142, 0x5147, 0x514a, 0x514c, 0x514e, 0x514f,
- 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515b, 0x515d,
- 0x515e, 0x515f, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167,
- 0x5169, 0x516a, 0x516f, 0x5172, 0x517a, 0x517e, 0x517f, 0x5183,
- 0x5184, 0x5186, 0x5187, 0x518a, 0x518b, 0x518e, 0x518f, 0x5190,
- 0x5191, 0x5193, 0x5194, 0x5198, 0x519a, 0x519d, 0x519e, 0x519f,
- 0x51a1, 0x51a3, 0x51a6, 0x51a7, 0x51a8, 0x51a9, 0x51aa, 0x51ad,
- 0x51ae, 0x51b4, 0x51b8, 0x51b9, 0x51ba, 0x51be, 0x51bf, 0x51c1,
- 0x51c2, 0x51c3, 0x51c5, 0x51c8, 0x51ca, 0x51cd, 0x51ce, 0x51d0,
- 0x51d2, 0x51d3, 0x51d4, 0x51d5, 0x51d6, 0x51d7,
- /* 0x84 */
- 0x51d8, 0x51d9, 0x51da, 0x51dc, 0x51de, 0x51df, 0x51e2, 0x51e3,
- 0x51e5, 0x51e6, 0x51e7, 0x51e8, 0x51e9, 0x51ea, 0x51ec, 0x51ee,
- 0x51f1, 0x51f2, 0x51f4, 0x51f7, 0x51fe, 0x5204, 0x5205, 0x5209,
- 0x520b, 0x520c, 0x520f, 0x5210, 0x5213, 0x5214, 0x5215, 0x521c,
- 0x521e, 0x521f, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227,
- 0x522a, 0x522c, 0x522f, 0x5231, 0x5232, 0x5234, 0x5235, 0x523c,
- 0x523e, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524b,
- 0x524e, 0x524f, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258, 0x5259,
- 0x525a, 0x525b, 0x525d, 0x525f, 0x5260, 0x5262, 0x5263, 0x5264,
- 0x5266, 0x5268, 0x526b, 0x526c, 0x526d, 0x526e, 0x5270, 0x5271,
- 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279, 0x527a,
- 0x527b, 0x527c, 0x527e, 0x5280, 0x5283, 0x5284, 0x5285, 0x5286,
- 0x5287, 0x5289, 0x528a, 0x528b, 0x528c, 0x528d, 0x528e, 0x528f,
- 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298, 0x5299,
- 0x529a, 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52ae, 0x52af,
- 0x52b0, 0x52b4, 0x52b5, 0x52b6, 0x52b7, 0x52b8, 0x52b9, 0x52ba,
- 0x52bb, 0x52bc, 0x52bd, 0x52c0, 0x52c1, 0x52c2, 0x52c4, 0x52c5,
- 0x52c6, 0x52c8, 0x52ca, 0x52cc, 0x52cd, 0x52ce, 0x52cf, 0x52d1,
- 0x52d3, 0x52d4, 0x52d5, 0x52d7, 0x52d9, 0x52da, 0x52db, 0x52dc,
- 0x52dd, 0x52de, 0x52e0, 0x52e1, 0x52e2, 0x52e3, 0x52e5, 0x52e6,
- 0x52e7, 0x52e8, 0x52e9, 0x52ea, 0x52eb, 0x52ec, 0x52ed, 0x52ee,
- 0x52ef, 0x52f1, 0x52f2, 0x52f3, 0x52f4, 0x52f5, 0x52f6, 0x52f7,
- 0x52f8, 0x52fb, 0x52fc, 0x52fd, 0x5301, 0x5302, 0x5303, 0x5304,
- 0x5307, 0x5309, 0x530a, 0x530b, 0x530c, 0x530e,
- /* 0x85 */
- 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531b, 0x531c, 0x531e,
- 0x531f, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b,
- 0x532c, 0x532d, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
- 0x5335, 0x5336, 0x5337, 0x5338, 0x533c, 0x533d, 0x5340, 0x5342,
- 0x5344, 0x5346, 0x534b, 0x534c, 0x534d, 0x5350, 0x5354, 0x5358,
- 0x5359, 0x535b, 0x535d, 0x5365, 0x5368, 0x536a, 0x536c, 0x536d,
- 0x5372, 0x5376, 0x5379, 0x537b, 0x537c, 0x537d, 0x537e, 0x5380,
- 0x5381, 0x5383, 0x5387, 0x5388, 0x538a, 0x538e, 0x538f, 0x5390,
- 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399, 0x539b,
- 0x539c, 0x539e, 0x53a0, 0x53a1, 0x53a4, 0x53a7, 0x53aa, 0x53ab,
- 0x53ac, 0x53ad, 0x53af, 0x53b0, 0x53b1, 0x53b2, 0x53b3, 0x53b4,
- 0x53b5, 0x53b7, 0x53b8, 0x53b9, 0x53ba, 0x53bc, 0x53bd, 0x53be,
- 0x53c0, 0x53c3, 0x53c4, 0x53c5, 0x53c6, 0x53c7, 0x53ce, 0x53cf,
- 0x53d0, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dc, 0x53dd, 0x53de,
- 0x53e1, 0x53e2, 0x53e7, 0x53f4, 0x53fa, 0x53fe, 0x53ff, 0x5400,
- 0x5402, 0x5405, 0x5407, 0x540b, 0x5414, 0x5418, 0x5419, 0x541a,
- 0x541c, 0x5422, 0x5424, 0x5425, 0x542a, 0x5430, 0x5433, 0x5436,
- 0x5437, 0x543a, 0x543d, 0x543f, 0x5441, 0x5442, 0x5444, 0x5445,
- 0x5447, 0x5449, 0x544c, 0x544d, 0x544e, 0x544f, 0x5451, 0x545a,
- 0x545d, 0x545e, 0x545f, 0x5460, 0x5461, 0x5463, 0x5465, 0x5467,
- 0x5469, 0x546a, 0x546b, 0x546c, 0x546d, 0x546e, 0x546f, 0x5470,
- 0x5474, 0x5479, 0x547a, 0x547e, 0x547f, 0x5481, 0x5483, 0x5485,
- 0x5487, 0x5488, 0x5489, 0x548a, 0x548d, 0x5491, 0x5493, 0x5497,
- 0x5498, 0x549c, 0x549e, 0x549f, 0x54a0, 0x54a1,
- /* 0x86 */
- 0x54a2, 0x54a5, 0x54ae, 0x54b0, 0x54b2, 0x54b5, 0x54b6, 0x54b7,
- 0x54b9, 0x54ba, 0x54bc, 0x54be, 0x54c3, 0x54c5, 0x54ca, 0x54cb,
- 0x54d6, 0x54d8, 0x54db, 0x54e0, 0x54e1, 0x54e2, 0x54e3, 0x54e4,
- 0x54eb, 0x54ec, 0x54ef, 0x54f0, 0x54f1, 0x54f4, 0x54f5, 0x54f6,
- 0x54f7, 0x54f8, 0x54f9, 0x54fb, 0x54fe, 0x5500, 0x5502, 0x5503,
- 0x5504, 0x5505, 0x5508, 0x550a, 0x550b, 0x550c, 0x550d, 0x550e,
- 0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551a,
- 0x551c, 0x551d, 0x551e, 0x551f, 0x5521, 0x5525, 0x5526, 0x5528,
- 0x5529, 0x552b, 0x552d, 0x5532, 0x5534, 0x5535, 0x5536, 0x5538,
- 0x5539, 0x553a, 0x553b, 0x553d, 0x5540, 0x5542, 0x5545, 0x5547,
- 0x5548, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5551, 0x5552,
- 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555a, 0x555b, 0x555d,
- 0x555e, 0x555f, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569, 0x556b,
- 0x556f, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579, 0x557a,
- 0x557d, 0x557f, 0x5585, 0x5586, 0x558c, 0x558d, 0x558e, 0x5590,
- 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559a, 0x559b, 0x559e,
- 0x55a0, 0x55a1, 0x55a2, 0x55a3, 0x55a4, 0x55a5, 0x55a6, 0x55a8,
- 0x55a9, 0x55aa, 0x55ab, 0x55ac, 0x55ad, 0x55ae, 0x55af, 0x55b0,
- 0x55b2, 0x55b4, 0x55b6, 0x55b8, 0x55ba, 0x55bc, 0x55bf, 0x55c0,
- 0x55c1, 0x55c2, 0x55c3, 0x55c6, 0x55c7, 0x55c8, 0x55ca, 0x55cb,
- 0x55ce, 0x55cf, 0x55d0, 0x55d5, 0x55d7, 0x55d8, 0x55d9, 0x55da,
- 0x55db, 0x55de, 0x55e0, 0x55e2, 0x55e7, 0x55e9, 0x55ed, 0x55ee,
- 0x55f0, 0x55f1, 0x55f4, 0x55f6, 0x55f8, 0x55f9, 0x55fa, 0x55fb,
- 0x55fc, 0x55ff, 0x5602, 0x5603, 0x5604, 0x5605,
- /* 0x87 */
- 0x5606, 0x5607, 0x560a, 0x560b, 0x560d, 0x5610, 0x5611, 0x5612,
- 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561a, 0x561c,
- 0x561d, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629,
- 0x562a, 0x562b, 0x562e, 0x562f, 0x5630, 0x5633, 0x5635, 0x5637,
- 0x5638, 0x563a, 0x563c, 0x563d, 0x563e, 0x5640, 0x5641, 0x5642,
- 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564a,
- 0x564b, 0x564f, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656,
- 0x565a, 0x565b, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0x5663,
- 0x5665, 0x5666, 0x5667, 0x566d, 0x566e, 0x566f, 0x5670, 0x5672,
- 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567a, 0x567d,
- 0x567e, 0x567f, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5687,
- 0x5688, 0x5689, 0x568a, 0x568b, 0x568c, 0x568d, 0x5690, 0x5691,
- 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699, 0x569a,
- 0x569b, 0x569c, 0x569d, 0x569e, 0x569f, 0x56a0, 0x56a1, 0x56a2,
- 0x56a4, 0x56a5, 0x56a6, 0x56a7, 0x56a8, 0x56a9, 0x56aa, 0x56ab,
- 0x56ac, 0x56ad, 0x56ae, 0x56b0, 0x56b1, 0x56b2, 0x56b3, 0x56b4,
- 0x56b5, 0x56b6, 0x56b8, 0x56b9, 0x56ba, 0x56bb, 0x56bd, 0x56be,
- 0x56bf, 0x56c0, 0x56c1, 0x56c2, 0x56c3, 0x56c4, 0x56c5, 0x56c6,
- 0x56c7, 0x56c8, 0x56c9, 0x56cb, 0x56cc, 0x56cd, 0x56ce, 0x56cf,
- 0x56d0, 0x56d1, 0x56d2, 0x56d3, 0x56d5, 0x56d6, 0x56d8, 0x56d9,
- 0x56dc, 0x56e3, 0x56e5, 0x56e6, 0x56e7, 0x56e8, 0x56e9, 0x56ea,
- 0x56ec, 0x56ee, 0x56ef, 0x56f2, 0x56f3, 0x56f6, 0x56f7, 0x56f8,
- 0x56fb, 0x56fc, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707, 0x570b,
- 0x570c, 0x570d, 0x570e, 0x570f, 0x5710, 0x5711,
- /* 0x88 */
- 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719,
- 0x571a, 0x571b, 0x571d, 0x571e, 0x5720, 0x5721, 0x5722, 0x5724,
- 0x5725, 0x5726, 0x5727, 0x572b, 0x5731, 0x5732, 0x5734, 0x5735,
- 0x5736, 0x5737, 0x5738, 0x573c, 0x573d, 0x573f, 0x5741, 0x5743,
- 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574b, 0x5752, 0x5753,
- 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765,
- 0x5767, 0x576c, 0x576e, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775,
- 0x5778, 0x5779, 0x577a, 0x577d, 0x577e, 0x577f, 0x5780, 0x5781,
- 0x5787, 0x5788, 0x5789, 0x578a, 0x578d, 0x578e, 0x578f, 0x5790,
- 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, 0x579a,
- 0x579c, 0x579d, 0x579e, 0x579f, 0x57a5, 0x57a8, 0x57aa, 0x57ac,
- 0x57af, 0x57b0, 0x57b1, 0x57b3, 0x57b5, 0x57b6, 0x57b7, 0x57b9,
- 0x57ba, 0x57bb, 0x57bc, 0x57bd, 0x57be, 0x57bf, 0x57c0, 0x57c1,
- 0x57c4, 0x57c5, 0x57c6, 0x57c7, 0x57c8, 0x57c9, 0x57ca, 0x57cc,
- 0x57cd, 0x57d0, 0x57d1, 0x57d3, 0x57d6, 0x57d7, 0x57db, 0x57dc,
- 0x57de, 0x57e1, 0x57e2, 0x57e3, 0x57e5, 0x57e6, 0x57e7, 0x57e8,
- 0x57e9, 0x57ea, 0x57eb, 0x57ec, 0x57ee, 0x57f0, 0x57f1, 0x57f2,
- 0x57f3, 0x57f5, 0x57f6, 0x57f7, 0x57fb, 0x57fc, 0x57fe, 0x57ff,
- 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580a, 0x580c,
- 0x580e, 0x580f, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816, 0x5817,
- 0x5818, 0x581a, 0x581b, 0x581c, 0x581d, 0x581f, 0x5822, 0x5823,
- 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582b, 0x582c, 0x582d,
- 0x582e, 0x582f, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836, 0x5837,
- 0x5838, 0x5839, 0x583a, 0x583b, 0x583c, 0x583d,
- /* 0x89 */
- 0x583e, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846,
- 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584e, 0x584f, 0x5850,
- 0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585a, 0x585b,
- 0x585c, 0x585d, 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864,
- 0x5866, 0x5867, 0x5868, 0x5869, 0x586a, 0x586d, 0x586e, 0x586f,
- 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877,
- 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587f, 0x5882,
- 0x5884, 0x5886, 0x5887, 0x5888, 0x588a, 0x588b, 0x588c, 0x588d,
- 0x588e, 0x588f, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897,
- 0x5898, 0x589b, 0x589c, 0x589d, 0x58a0, 0x58a1, 0x58a2, 0x58a3,
- 0x58a4, 0x58a5, 0x58a6, 0x58a7, 0x58aa, 0x58ab, 0x58ac, 0x58ad,
- 0x58ae, 0x58af, 0x58b0, 0x58b1, 0x58b2, 0x58b3, 0x58b4, 0x58b5,
- 0x58b6, 0x58b7, 0x58b8, 0x58b9, 0x58ba, 0x58bb, 0x58bd, 0x58be,
- 0x58bf, 0x58c0, 0x58c2, 0x58c3, 0x58c4, 0x58c6, 0x58c7, 0x58c8,
- 0x58c9, 0x58ca, 0x58cb, 0x58cc, 0x58cd, 0x58ce, 0x58cf, 0x58d0,
- 0x58d2, 0x58d3, 0x58d4, 0x58d6, 0x58d7, 0x58d8, 0x58d9, 0x58da,
- 0x58db, 0x58dc, 0x58dd, 0x58de, 0x58df, 0x58e0, 0x58e1, 0x58e2,
- 0x58e3, 0x58e5, 0x58e6, 0x58e7, 0x58e8, 0x58e9, 0x58ea, 0x58ed,
- 0x58ef, 0x58f1, 0x58f2, 0x58f4, 0x58f5, 0x58f7, 0x58f8, 0x58fa,
- 0x58fb, 0x58fc, 0x58fd, 0x58fe, 0x58ff, 0x5900, 0x5901, 0x5903,
- 0x5905, 0x5906, 0x5908, 0x5909, 0x590a, 0x590b, 0x590c, 0x590e,
- 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591b, 0x591d,
- 0x591e, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928, 0x592c,
- 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593b,
- /* 0x8a */
- 0x593d, 0x593e, 0x593f, 0x5940, 0x5943, 0x5945, 0x5946, 0x594a,
- 0x594c, 0x594d, 0x5950, 0x5952, 0x5953, 0x5959, 0x595b, 0x595c,
- 0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967,
- 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f,
- 0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597a, 0x597b, 0x597c,
- 0x597e, 0x597f, 0x5980, 0x5985, 0x5989, 0x598b, 0x598c, 0x598e,
- 0x598f, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599a, 0x599b,
- 0x599c, 0x599d, 0x599f, 0x59a0, 0x59a1, 0x59a2, 0x59a6, 0x59a7,
- 0x59ac, 0x59ad, 0x59b0, 0x59b1, 0x59b3, 0x59b4, 0x59b5, 0x59b6,
- 0x59b7, 0x59b8, 0x59ba, 0x59bc, 0x59bd, 0x59bf, 0x59c0, 0x59c1,
- 0x59c2, 0x59c3, 0x59c4, 0x59c5, 0x59c7, 0x59c8, 0x59c9, 0x59cc,
- 0x59cd, 0x59ce, 0x59cf, 0x59d5, 0x59d6, 0x59d9, 0x59db, 0x59de,
- 0x59df, 0x59e0, 0x59e1, 0x59e2, 0x59e4, 0x59e6, 0x59e7, 0x59e9,
- 0x59ea, 0x59eb, 0x59ed, 0x59ee, 0x59ef, 0x59f0, 0x59f1, 0x59f2,
- 0x59f3, 0x59f4, 0x59f5, 0x59f6, 0x59f7, 0x59f8, 0x59fa, 0x59fc,
- 0x59fd, 0x59fe, 0x5a00, 0x5a02, 0x5a0a, 0x5a0b, 0x5a0d, 0x5a0e,
- 0x5a0f, 0x5a10, 0x5a12, 0x5a14, 0x5a15, 0x5a16, 0x5a17, 0x5a19,
- 0x5a1a, 0x5a1b, 0x5a1d, 0x5a1e, 0x5a21, 0x5a22, 0x5a24, 0x5a26,
- 0x5a27, 0x5a28, 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f,
- 0x5a30, 0x5a33, 0x5a35, 0x5a37, 0x5a38, 0x5a39, 0x5a3a, 0x5a3b,
- 0x5a3d, 0x5a3e, 0x5a3f, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x5a45,
- 0x5a47, 0x5a48, 0x5a4b, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, 0x5a50,
- 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a56, 0x5a57, 0x5a58, 0x5a59,
- 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60,
- /* 0x8b */
- 0x5a61, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a68, 0x5a69, 0x5a6b,
- 0x5a6c, 0x5a6d, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71, 0x5a72, 0x5a73,
- 0x5a78, 0x5a79, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5a80, 0x5a81,
- 0x5a82, 0x5a83, 0x5a84, 0x5a85, 0x5a86, 0x5a87, 0x5a88, 0x5a89,
- 0x5a8a, 0x5a8b, 0x5a8c, 0x5a8d, 0x5a8e, 0x5a8f, 0x5a90, 0x5a91,
- 0x5a93, 0x5a94, 0x5a95, 0x5a96, 0x5a97, 0x5a98, 0x5a99, 0x5a9c,
- 0x5a9d, 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa1, 0x5aa2, 0x5aa3, 0x5aa4,
- 0x5aa5, 0x5aa6, 0x5aa7, 0x5aa8, 0x5aa9, 0x5aab, 0x5aac, 0x5aad,
- 0x5aae, 0x5aaf, 0x5ab0, 0x5ab1, 0x5ab4, 0x5ab6, 0x5ab7, 0x5ab9,
- 0x5aba, 0x5abb, 0x5abc, 0x5abd, 0x5abf, 0x5ac0, 0x5ac3, 0x5ac4,
- 0x5ac5, 0x5ac6, 0x5ac7, 0x5ac8, 0x5aca, 0x5acb, 0x5acd, 0x5ace,
- 0x5acf, 0x5ad0, 0x5ad1, 0x5ad3, 0x5ad5, 0x5ad7, 0x5ad9, 0x5ada,
- 0x5adb, 0x5add, 0x5ade, 0x5adf, 0x5ae2, 0x5ae4, 0x5ae5, 0x5ae7,
- 0x5ae8, 0x5aea, 0x5aec, 0x5aed, 0x5aee, 0x5aef, 0x5af0, 0x5af2,
- 0x5af3, 0x5af4, 0x5af5, 0x5af6, 0x5af7, 0x5af8, 0x5af9, 0x5afa,
- 0x5afb, 0x5afc, 0x5afd, 0x5afe, 0x5aff, 0x5b00, 0x5b01, 0x5b02,
- 0x5b03, 0x5b04, 0x5b05, 0x5b06, 0x5b07, 0x5b08, 0x5b0a, 0x5b0b,
- 0x5b0c, 0x5b0d, 0x5b0e, 0x5b0f, 0x5b10, 0x5b11, 0x5b12, 0x5b13,
- 0x5b14, 0x5b15, 0x5b18, 0x5b19, 0x5b1a, 0x5b1b, 0x5b1c, 0x5b1d,
- 0x5b1e, 0x5b1f, 0x5b20, 0x5b21, 0x5b22, 0x5b23, 0x5b24, 0x5b25,
- 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b, 0x5b2c, 0x5b2d,
- 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b33, 0x5b35, 0x5b36, 0x5b38,
- 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, 0x5b41,
- 0x5b42, 0x5b43, 0x5b44, 0x5b45, 0x5b46, 0x5b47,
- /* 0x8c */
- 0x5b48, 0x5b49, 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f,
- 0x5b52, 0x5b56, 0x5b5e, 0x5b60, 0x5b61, 0x5b67, 0x5b68, 0x5b6b,
- 0x5b6d, 0x5b6e, 0x5b6f, 0x5b72, 0x5b74, 0x5b76, 0x5b77, 0x5b78,
- 0x5b79, 0x5b7b, 0x5b7c, 0x5b7e, 0x5b7f, 0x5b82, 0x5b86, 0x5b8a,
- 0x5b8d, 0x5b8e, 0x5b90, 0x5b91, 0x5b92, 0x5b94, 0x5b96, 0x5b9f,
- 0x5ba7, 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5bae, 0x5baf, 0x5bb1,
- 0x5bb2, 0x5bb7, 0x5bba, 0x5bbb, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bc3,
- 0x5bc8, 0x5bc9, 0x5bca, 0x5bcb, 0x5bcd, 0x5bce, 0x5bcf, 0x5bd1,
- 0x5bd4, 0x5bd5, 0x5bd6, 0x5bd7, 0x5bd8, 0x5bd9, 0x5bda, 0x5bdb,
- 0x5bdc, 0x5be0, 0x5be2, 0x5be3, 0x5be6, 0x5be7, 0x5be9, 0x5bea,
- 0x5beb, 0x5bec, 0x5bed, 0x5bef, 0x5bf1, 0x5bf2, 0x5bf3, 0x5bf4,
- 0x5bf5, 0x5bf6, 0x5bf7, 0x5bfd, 0x5bfe, 0x5c00, 0x5c02, 0x5c03,
- 0x5c05, 0x5c07, 0x5c08, 0x5c0b, 0x5c0c, 0x5c0d, 0x5c0e, 0x5c10,
- 0x5c12, 0x5c13, 0x5c17, 0x5c19, 0x5c1b, 0x5c1e, 0x5c1f, 0x5c20,
- 0x5c21, 0x5c23, 0x5c26, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2d,
- 0x5c2e, 0x5c2f, 0x5c30, 0x5c32, 0x5c33, 0x5c35, 0x5c36, 0x5c37,
- 0x5c43, 0x5c44, 0x5c46, 0x5c47, 0x5c4c, 0x5c4d, 0x5c52, 0x5c53,
- 0x5c54, 0x5c56, 0x5c57, 0x5c58, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d,
- 0x5c5f, 0x5c62, 0x5c64, 0x5c67, 0x5c68, 0x5c69, 0x5c6a, 0x5c6b,
- 0x5c6c, 0x5c6d, 0x5c70, 0x5c72, 0x5c73, 0x5c74, 0x5c75, 0x5c76,
- 0x5c77, 0x5c78, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c7e, 0x5c80, 0x5c83,
- 0x5c84, 0x5c85, 0x5c86, 0x5c87, 0x5c89, 0x5c8a, 0x5c8b, 0x5c8e,
- 0x5c8f, 0x5c92, 0x5c93, 0x5c95, 0x5c9d, 0x5c9e, 0x5c9f, 0x5ca0,
- 0x5ca1, 0x5ca4, 0x5ca5, 0x5ca6, 0x5ca7, 0x5ca8,
- /* 0x8d */
- 0x5caa, 0x5cae, 0x5caf, 0x5cb0, 0x5cb2, 0x5cb4, 0x5cb6, 0x5cb9,
- 0x5cba, 0x5cbb, 0x5cbc, 0x5cbe, 0x5cc0, 0x5cc2, 0x5cc3, 0x5cc5,
- 0x5cc6, 0x5cc7, 0x5cc8, 0x5cc9, 0x5cca, 0x5ccc, 0x5ccd, 0x5cce,
- 0x5ccf, 0x5cd0, 0x5cd1, 0x5cd3, 0x5cd4, 0x5cd5, 0x5cd6, 0x5cd7,
- 0x5cd8, 0x5cda, 0x5cdb, 0x5cdc, 0x5cdd, 0x5cde, 0x5cdf, 0x5ce0,
- 0x5ce2, 0x5ce3, 0x5ce7, 0x5ce9, 0x5ceb, 0x5cec, 0x5cee, 0x5cef,
- 0x5cf1, 0x5cf2, 0x5cf3, 0x5cf4, 0x5cf5, 0x5cf6, 0x5cf7, 0x5cf8,
- 0x5cf9, 0x5cfa, 0x5cfc, 0x5cfd, 0x5cfe, 0x5cff, 0x5d00, 0x5d01,
- 0x5d04, 0x5d05, 0x5d08, 0x5d09, 0x5d0a, 0x5d0b, 0x5d0c, 0x5d0d,
- 0x5d0f, 0x5d10, 0x5d11, 0x5d12, 0x5d13, 0x5d15, 0x5d17, 0x5d18,
- 0x5d19, 0x5d1a, 0x5d1c, 0x5d1d, 0x5d1f, 0x5d20, 0x5d21, 0x5d22,
- 0x5d23, 0x5d25, 0x5d28, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2f, 0x5d30,
- 0x5d31, 0x5d32, 0x5d33, 0x5d35, 0x5d36, 0x5d37, 0x5d38, 0x5d39,
- 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3f, 0x5d40, 0x5d41, 0x5d42, 0x5d43,
- 0x5d44, 0x5d45, 0x5d46, 0x5d48, 0x5d49, 0x5d4d, 0x5d4e, 0x5d4f,
- 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57,
- 0x5d59, 0x5d5a, 0x5d5c, 0x5d5e, 0x5d5f, 0x5d60, 0x5d61, 0x5d62,
- 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67, 0x5d68, 0x5d6a, 0x5d6d,
- 0x5d6e, 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d75, 0x5d76, 0x5d77,
- 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5d7f,
- 0x5d80, 0x5d81, 0x5d83, 0x5d84, 0x5d85, 0x5d86, 0x5d87, 0x5d88,
- 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c, 0x5d8d, 0x5d8e, 0x5d8f, 0x5d90,
- 0x5d91, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d96, 0x5d97, 0x5d98,
- 0x5d9a, 0x5d9b, 0x5d9c, 0x5d9e, 0x5d9f, 0x5da0,
- /* 0x8e */
- 0x5da1, 0x5da2, 0x5da3, 0x5da4, 0x5da5, 0x5da6, 0x5da7, 0x5da8,
- 0x5da9, 0x5daa, 0x5dab, 0x5dac, 0x5dad, 0x5dae, 0x5daf, 0x5db0,
- 0x5db1, 0x5db2, 0x5db3, 0x5db4, 0x5db5, 0x5db6, 0x5db8, 0x5db9,
- 0x5dba, 0x5dbb, 0x5dbc, 0x5dbd, 0x5dbe, 0x5dbf, 0x5dc0, 0x5dc1,
- 0x5dc2, 0x5dc3, 0x5dc4, 0x5dc6, 0x5dc7, 0x5dc8, 0x5dc9, 0x5dca,
- 0x5dcb, 0x5dcc, 0x5dce, 0x5dcf, 0x5dd0, 0x5dd1, 0x5dd2, 0x5dd3,
- 0x5dd4, 0x5dd5, 0x5dd6, 0x5dd7, 0x5dd8, 0x5dd9, 0x5dda, 0x5ddc,
- 0x5ddf, 0x5de0, 0x5de3, 0x5de4, 0x5dea, 0x5dec, 0x5ded, 0x5df0,
- 0x5df5, 0x5df6, 0x5df8, 0x5df9, 0x5dfa, 0x5dfb, 0x5dfc, 0x5dff,
- 0x5e00, 0x5e04, 0x5e07, 0x5e09, 0x5e0a, 0x5e0b, 0x5e0d, 0x5e0e,
- 0x5e12, 0x5e13, 0x5e17, 0x5e1e, 0x5e1f, 0x5e20, 0x5e21, 0x5e22,
- 0x5e23, 0x5e24, 0x5e25, 0x5e28, 0x5e29, 0x5e2a, 0x5e2b, 0x5e2c,
- 0x5e2f, 0x5e30, 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e39,
- 0x5e3a, 0x5e3e, 0x5e3f, 0x5e40, 0x5e41, 0x5e43, 0x5e46, 0x5e47,
- 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4d, 0x5e4e, 0x5e4f, 0x5e50,
- 0x5e51, 0x5e52, 0x5e53, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a,
- 0x5e5c, 0x5e5d, 0x5e5f, 0x5e60, 0x5e63, 0x5e64, 0x5e65, 0x5e66,
- 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e,
- 0x5e6f, 0x5e70, 0x5e71, 0x5e75, 0x5e77, 0x5e79, 0x5e7e, 0x5e81,
- 0x5e82, 0x5e83, 0x5e85, 0x5e88, 0x5e89, 0x5e8c, 0x5e8d, 0x5e8e,
- 0x5e92, 0x5e98, 0x5e9b, 0x5e9d, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4,
- 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac, 0x5eae, 0x5eaf, 0x5eb0,
- 0x5eb1, 0x5eb2, 0x5eb4, 0x5eba, 0x5ebb, 0x5ebc, 0x5ebd, 0x5ebf,
- 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4, 0x5ec5,
- /* 0x8f */
- 0x5ec6, 0x5ec7, 0x5ec8, 0x5ecb, 0x5ecc, 0x5ecd, 0x5ece, 0x5ecf,
- 0x5ed0, 0x5ed4, 0x5ed5, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edc,
- 0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4,
- 0x5ee5, 0x5ee6, 0x5ee7, 0x5ee9, 0x5eeb, 0x5eec, 0x5eed, 0x5eee,
- 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef5, 0x5ef8, 0x5ef9,
- 0x5efb, 0x5efc, 0x5efd, 0x5f05, 0x5f06, 0x5f07, 0x5f09, 0x5f0c,
- 0x5f0d, 0x5f0e, 0x5f10, 0x5f12, 0x5f14, 0x5f16, 0x5f19, 0x5f1a,
- 0x5f1c, 0x5f1d, 0x5f1e, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f28,
- 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f32, 0x5f33, 0x5f34, 0x5f35,
- 0x5f36, 0x5f37, 0x5f38, 0x5f3b, 0x5f3d, 0x5f3e, 0x5f3f, 0x5f41,
- 0x5f42, 0x5f43, 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49,
- 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f51, 0x5f54,
- 0x5f59, 0x5f5a, 0x5f5b, 0x5f5c, 0x5f5e, 0x5f5f, 0x5f60, 0x5f63,
- 0x5f65, 0x5f67, 0x5f68, 0x5f6b, 0x5f6e, 0x5f6f, 0x5f72, 0x5f74,
- 0x5f75, 0x5f76, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e, 0x5f7f, 0x5f83,
- 0x5f86, 0x5f8d, 0x5f8e, 0x5f8f, 0x5f91, 0x5f93, 0x5f94, 0x5f96,
- 0x5f9a, 0x5f9b, 0x5f9d, 0x5f9e, 0x5f9f, 0x5fa0, 0x5fa2, 0x5fa3,
- 0x5fa4, 0x5fa5, 0x5fa6, 0x5fa7, 0x5fa9, 0x5fab, 0x5fac, 0x5faf,
- 0x5fb0, 0x5fb1, 0x5fb2, 0x5fb3, 0x5fb4, 0x5fb6, 0x5fb8, 0x5fb9,
- 0x5fba, 0x5fbb, 0x5fbe, 0x5fbf, 0x5fc0, 0x5fc1, 0x5fc2, 0x5fc7,
- 0x5fc8, 0x5fca, 0x5fcb, 0x5fce, 0x5fd3, 0x5fd4, 0x5fd5, 0x5fda,
- 0x5fdb, 0x5fdc, 0x5fde, 0x5fdf, 0x5fe2, 0x5fe3, 0x5fe5, 0x5fe6,
- 0x5fe8, 0x5fe9, 0x5fec, 0x5fef, 0x5ff0, 0x5ff2, 0x5ff3, 0x5ff4,
- 0x5ff6, 0x5ff7, 0x5ff9, 0x5ffa, 0x5ffc, 0x6007,
- /* 0x90 */
- 0x6008, 0x6009, 0x600b, 0x600c, 0x6010, 0x6011, 0x6013, 0x6017,
- 0x6018, 0x601a, 0x601e, 0x601f, 0x6022, 0x6023, 0x6024, 0x602c,
- 0x602d, 0x602e, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036,
- 0x6037, 0x6038, 0x6039, 0x603a, 0x603d, 0x603e, 0x6040, 0x6044,
- 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604c, 0x604e,
- 0x604f, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605b,
- 0x605c, 0x605e, 0x605f, 0x6060, 0x6061, 0x6065, 0x6066, 0x606e,
- 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607e, 0x6080, 0x6081,
- 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608a, 0x608b, 0x608e,
- 0x608f, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098, 0x6099,
- 0x609c, 0x609e, 0x60a1, 0x60a2, 0x60a4, 0x60a5, 0x60a7, 0x60a9,
- 0x60aa, 0x60ae, 0x60b0, 0x60b3, 0x60b5, 0x60b6, 0x60b7, 0x60b9,
- 0x60ba, 0x60bd, 0x60be, 0x60bf, 0x60c0, 0x60c1, 0x60c2, 0x60c3,
- 0x60c4, 0x60c7, 0x60c8, 0x60c9, 0x60cc, 0x60cd, 0x60ce, 0x60cf,
- 0x60d0, 0x60d2, 0x60d3, 0x60d4, 0x60d6, 0x60d7, 0x60d9, 0x60db,
- 0x60de, 0x60e1, 0x60e2, 0x60e3, 0x60e4, 0x60e5, 0x60ea, 0x60f1,
- 0x60f2, 0x60f5, 0x60f7, 0x60f8, 0x60fb, 0x60fc, 0x60fd, 0x60fe,
- 0x60ff, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610a, 0x610b,
- 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 0x6117,
- 0x6118, 0x6119, 0x611b, 0x611c, 0x611d, 0x611e, 0x6121, 0x6122,
- 0x6125, 0x6128, 0x6129, 0x612a, 0x612c, 0x612d, 0x612e, 0x612f,
- 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137,
- 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x6140,
- 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146,
- /* 0x91 */
- 0x6147, 0x6149, 0x614b, 0x614d, 0x614f, 0x6150, 0x6152, 0x6153,
- 0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615a, 0x615b, 0x615c,
- 0x615e, 0x615f, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166,
- 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f, 0x6171,
- 0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617a, 0x617b,
- 0x617c, 0x617d, 0x617e, 0x617f, 0x6180, 0x6181, 0x6182, 0x6183,
- 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618a, 0x618c,
- 0x618d, 0x618f, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0x6196,
- 0x6197, 0x6198, 0x6199, 0x619a, 0x619b, 0x619c, 0x619e, 0x619f,
- 0x61a0, 0x61a1, 0x61a2, 0x61a3, 0x61a4, 0x61a5, 0x61a6, 0x61aa,
- 0x61ab, 0x61ad, 0x61ae, 0x61af, 0x61b0, 0x61b1, 0x61b2, 0x61b3,
- 0x61b4, 0x61b5, 0x61b6, 0x61b8, 0x61b9, 0x61ba, 0x61bb, 0x61bc,
- 0x61bd, 0x61bf, 0x61c0, 0x61c1, 0x61c3, 0x61c4, 0x61c5, 0x61c6,
- 0x61c7, 0x61c9, 0x61cc, 0x61cd, 0x61ce, 0x61cf, 0x61d0, 0x61d3,
- 0x61d5, 0x61d6, 0x61d7, 0x61d8, 0x61d9, 0x61da, 0x61db, 0x61dc,
- 0x61dd, 0x61de, 0x61df, 0x61e0, 0x61e1, 0x61e2, 0x61e3, 0x61e4,
- 0x61e5, 0x61e7, 0x61e8, 0x61e9, 0x61ea, 0x61eb, 0x61ec, 0x61ed,
- 0x61ee, 0x61ef, 0x61f0, 0x61f1, 0x61f2, 0x61f3, 0x61f4, 0x61f6,
- 0x61f7, 0x61f8, 0x61f9, 0x61fa, 0x61fb, 0x61fc, 0x61fd, 0x61fe,
- 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207, 0x6209,
- 0x6213, 0x6214, 0x6219, 0x621c, 0x621d, 0x621e, 0x6220, 0x6223,
- 0x6226, 0x6227, 0x6228, 0x6229, 0x622b, 0x622d, 0x622f, 0x6230,
- 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623a, 0x623b,
- 0x623c, 0x6242, 0x6244, 0x6245, 0x6246, 0x624a,
- /* 0x92 */
- 0x624f, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625a, 0x625c,
- 0x625d, 0x625e, 0x625f, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265,
- 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627a,
- 0x627b, 0x627d, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287,
- 0x6288, 0x628b, 0x628c, 0x628d, 0x628e, 0x628f, 0x6290, 0x6294,
- 0x6299, 0x629c, 0x629d, 0x629e, 0x62a3, 0x62a6, 0x62a7, 0x62a9,
- 0x62aa, 0x62ad, 0x62ae, 0x62af, 0x62b0, 0x62b2, 0x62b3, 0x62b4,
- 0x62b6, 0x62b7, 0x62b8, 0x62ba, 0x62be, 0x62c0, 0x62c1, 0x62c3,
- 0x62cb, 0x62cf, 0x62d1, 0x62d5, 0x62dd, 0x62de, 0x62e0, 0x62e1,
- 0x62e4, 0x62ea, 0x62eb, 0x62f0, 0x62f2, 0x62f5, 0x62f8, 0x62f9,
- 0x62fa, 0x62fb, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 0x630a,
- 0x630b, 0x630c, 0x630d, 0x630f, 0x6310, 0x6312, 0x6313, 0x6314,
- 0x6315, 0x6317, 0x6318, 0x6319, 0x631c, 0x6326, 0x6327, 0x6329,
- 0x632c, 0x632d, 0x632e, 0x6330, 0x6331, 0x6333, 0x6334, 0x6335,
- 0x6336, 0x6337, 0x6338, 0x633b, 0x633c, 0x633e, 0x633f, 0x6340,
- 0x6341, 0x6344, 0x6347, 0x6348, 0x634a, 0x6351, 0x6352, 0x6353,
- 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b, 0x635c,
- 0x635d, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636a, 0x636b,
- 0x636c, 0x636f, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 0x6378,
- 0x6379, 0x637c, 0x637d, 0x637e, 0x637f, 0x6381, 0x6383, 0x6384,
- 0x6385, 0x6386, 0x638b, 0x638d, 0x6391, 0x6393, 0x6394, 0x6395,
- 0x6397, 0x6399, 0x639a, 0x639b, 0x639c, 0x639d, 0x639e, 0x639f,
- 0x63a1, 0x63a4, 0x63a6, 0x63ab, 0x63af, 0x63b1, 0x63b2, 0x63b5,
- 0x63b6, 0x63b9, 0x63bb, 0x63bd, 0x63bf, 0x63c0,
- /* 0x93 */
- 0x63c1, 0x63c2, 0x63c3, 0x63c5, 0x63c7, 0x63c8, 0x63ca, 0x63cb,
- 0x63cc, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63d7, 0x63d8, 0x63d9,
- 0x63da, 0x63db, 0x63dc, 0x63dd, 0x63df, 0x63e2, 0x63e4, 0x63e5,
- 0x63e6, 0x63e7, 0x63e8, 0x63eb, 0x63ec, 0x63ee, 0x63ef, 0x63f0,
- 0x63f1, 0x63f3, 0x63f5, 0x63f7, 0x63f9, 0x63fa, 0x63fb, 0x63fc,
- 0x63fe, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640a,
- 0x640d, 0x640e, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418,
- 0x6419, 0x641a, 0x641d, 0x641f, 0x6422, 0x6423, 0x6424, 0x6425,
- 0x6427, 0x6428, 0x6429, 0x642b, 0x642e, 0x642f, 0x6430, 0x6431,
- 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, 0x643b,
- 0x643c, 0x643e, 0x6440, 0x6442, 0x6443, 0x6449, 0x644b, 0x644c,
- 0x644d, 0x644e, 0x644f, 0x6450, 0x6451, 0x6453, 0x6455, 0x6456,
- 0x6457, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d, 0x645f, 0x6460,
- 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468, 0x646a,
- 0x646b, 0x646c, 0x646e, 0x646f, 0x6470, 0x6471, 0x6472, 0x6473,
- 0x6474, 0x6475, 0x6476, 0x6477, 0x647b, 0x647c, 0x647d, 0x647e,
- 0x647f, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489, 0x648a,
- 0x648b, 0x648c, 0x648d, 0x648e, 0x648f, 0x6490, 0x6493, 0x6494,
- 0x6497, 0x6498, 0x649a, 0x649b, 0x649c, 0x649d, 0x649f, 0x64a0,
- 0x64a1, 0x64a2, 0x64a3, 0x64a5, 0x64a6, 0x64a7, 0x64a8, 0x64aa,
- 0x64ab, 0x64af, 0x64b1, 0x64b2, 0x64b3, 0x64b4, 0x64b6, 0x64b9,
- 0x64bb, 0x64bd, 0x64be, 0x64bf, 0x64c1, 0x64c3, 0x64c4, 0x64c6,
- 0x64c7, 0x64c8, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64cf, 0x64d1,
- 0x64d3, 0x64d4, 0x64d5, 0x64d6, 0x64d9, 0x64da,
- /* 0x94 */
- 0x64db, 0x64dc, 0x64dd, 0x64df, 0x64e0, 0x64e1, 0x64e3, 0x64e5,
- 0x64e7, 0x64e8, 0x64e9, 0x64ea, 0x64eb, 0x64ec, 0x64ed, 0x64ee,
- 0x64ef, 0x64f0, 0x64f1, 0x64f2, 0x64f3, 0x64f4, 0x64f5, 0x64f6,
- 0x64f7, 0x64f8, 0x64f9, 0x64fa, 0x64fb, 0x64fc, 0x64fd, 0x64fe,
- 0x64ff, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507,
- 0x6508, 0x650a, 0x650b, 0x650c, 0x650d, 0x650e, 0x650f, 0x6510,
- 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651a,
- 0x651b, 0x651c, 0x651d, 0x651e, 0x651f, 0x6520, 0x6521, 0x6522,
- 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652a, 0x652c,
- 0x652d, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653a, 0x653c,
- 0x653d, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, 0x6547,
- 0x654a, 0x654b, 0x654d, 0x654e, 0x6550, 0x6552, 0x6553, 0x6554,
- 0x6557, 0x6558, 0x655a, 0x655c, 0x655f, 0x6560, 0x6561, 0x6564,
- 0x6565, 0x6567, 0x6568, 0x6569, 0x656a, 0x656d, 0x656e, 0x656f,
- 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657a, 0x657b,
- 0x657c, 0x657d, 0x657e, 0x657f, 0x6580, 0x6581, 0x6582, 0x6583,
- 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658a, 0x658d, 0x658e,
- 0x658f, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659a, 0x659d,
- 0x659e, 0x65a0, 0x65a2, 0x65a3, 0x65a6, 0x65a8, 0x65aa, 0x65ac,
- 0x65ae, 0x65b1, 0x65b2, 0x65b3, 0x65b4, 0x65b5, 0x65b6, 0x65b7,
- 0x65b8, 0x65ba, 0x65bb, 0x65be, 0x65bf, 0x65c0, 0x65c2, 0x65c7,
- 0x65c8, 0x65c9, 0x65ca, 0x65cd, 0x65d0, 0x65d1, 0x65d3, 0x65d4,
- 0x65d5, 0x65d8, 0x65d9, 0x65da, 0x65db, 0x65dc, 0x65dd, 0x65de,
- 0x65df, 0x65e1, 0x65e3, 0x65e4, 0x65ea, 0x65eb,
- /* 0x95 */
- 0x65f2, 0x65f3, 0x65f4, 0x65f5, 0x65f8, 0x65f9, 0x65fb, 0x65fc,
- 0x65fd, 0x65fe, 0x65ff, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608,
- 0x6609, 0x660b, 0x660d, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617,
- 0x6618, 0x661a, 0x661b, 0x661c, 0x661e, 0x6621, 0x6622, 0x6623,
- 0x6624, 0x6626, 0x6629, 0x662a, 0x662b, 0x662c, 0x662e, 0x6630,
- 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663a, 0x663b, 0x663d,
- 0x663f, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648,
- 0x6649, 0x664a, 0x664d, 0x664e, 0x6650, 0x6651, 0x6658, 0x6659,
- 0x665b, 0x665c, 0x665d, 0x665e, 0x6660, 0x6662, 0x6663, 0x6665,
- 0x6667, 0x6669, 0x666a, 0x666b, 0x666c, 0x666d, 0x6671, 0x6672,
- 0x6673, 0x6675, 0x6678, 0x6679, 0x667b, 0x667c, 0x667d, 0x667f,
- 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689, 0x668a,
- 0x668b, 0x668d, 0x668e, 0x668f, 0x6690, 0x6692, 0x6693, 0x6694,
- 0x6695, 0x6698, 0x6699, 0x669a, 0x669b, 0x669c, 0x669e, 0x669f,
- 0x66a0, 0x66a1, 0x66a2, 0x66a3, 0x66a4, 0x66a5, 0x66a6, 0x66a9,
- 0x66aa, 0x66ab, 0x66ac, 0x66ad, 0x66af, 0x66b0, 0x66b1, 0x66b2,
- 0x66b3, 0x66b5, 0x66b6, 0x66b7, 0x66b8, 0x66ba, 0x66bb, 0x66bc,
- 0x66bd, 0x66bf, 0x66c0, 0x66c1, 0x66c2, 0x66c3, 0x66c4, 0x66c5,
- 0x66c6, 0x66c7, 0x66c8, 0x66c9, 0x66ca, 0x66cb, 0x66cc, 0x66cd,
- 0x66ce, 0x66cf, 0x66d0, 0x66d1, 0x66d2, 0x66d3, 0x66d4, 0x66d5,
- 0x66d6, 0x66d7, 0x66d8, 0x66da, 0x66de, 0x66df, 0x66e0, 0x66e1,
- 0x66e2, 0x66e3, 0x66e4, 0x66e5, 0x66e7, 0x66e8, 0x66ea, 0x66eb,
- 0x66ec, 0x66ed, 0x66ee, 0x66ef, 0x66f1, 0x66f5, 0x66f6, 0x66f8,
- 0x66fa, 0x66fb, 0x66fd, 0x6701, 0x6702, 0x6703,
- /* 0x96 */
- 0x6704, 0x6705, 0x6706, 0x6707, 0x670c, 0x670e, 0x670f, 0x6711,
- 0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671a, 0x671c, 0x671e,
- 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729,
- 0x672e, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739,
- 0x673b, 0x673c, 0x673e, 0x673f, 0x6741, 0x6744, 0x6745, 0x6747,
- 0x674a, 0x674b, 0x674d, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758,
- 0x6759, 0x675a, 0x675b, 0x675d, 0x6762, 0x6763, 0x6764, 0x6766,
- 0x6767, 0x676b, 0x676c, 0x676e, 0x6771, 0x6774, 0x6776, 0x6778,
- 0x6779, 0x677a, 0x677b, 0x677d, 0x6780, 0x6782, 0x6783, 0x6785,
- 0x6786, 0x6788, 0x678a, 0x678c, 0x678d, 0x678e, 0x678f, 0x6791,
- 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679b, 0x679f, 0x67a0,
- 0x67a1, 0x67a4, 0x67a6, 0x67a9, 0x67ac, 0x67ae, 0x67b1, 0x67b2,
- 0x67b4, 0x67b9, 0x67ba, 0x67bb, 0x67bc, 0x67bd, 0x67be, 0x67bf,
- 0x67c0, 0x67c2, 0x67c5, 0x67c6, 0x67c7, 0x67c8, 0x67c9, 0x67ca,
- 0x67cb, 0x67cc, 0x67cd, 0x67ce, 0x67d5, 0x67d6, 0x67d7, 0x67db,
- 0x67df, 0x67e1, 0x67e3, 0x67e4, 0x67e6, 0x67e7, 0x67e8, 0x67ea,
- 0x67eb, 0x67ed, 0x67ee, 0x67f2, 0x67f5, 0x67f6, 0x67f7, 0x67f8,
- 0x67f9, 0x67fa, 0x67fb, 0x67fc, 0x67fe, 0x6801, 0x6802, 0x6803,
- 0x6804, 0x6806, 0x680d, 0x6810, 0x6812, 0x6814, 0x6815, 0x6818,
- 0x6819, 0x681a, 0x681b, 0x681c, 0x681e, 0x681f, 0x6820, 0x6822,
- 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682b, 0x682c,
- 0x682d, 0x682e, 0x682f, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836,
- 0x683a, 0x683b, 0x683f, 0x6847, 0x684b, 0x684d, 0x684f, 0x6852,
- 0x6856, 0x6857, 0x6858, 0x6859, 0x685a, 0x685b,
- /* 0x97 */
- 0x685c, 0x685d, 0x685e, 0x685f, 0x686a, 0x686c, 0x686d, 0x686e,
- 0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879,
- 0x687a, 0x687b, 0x687c, 0x687d, 0x687e, 0x687f, 0x6880, 0x6882,
- 0x6884, 0x6887, 0x6888, 0x6889, 0x688a, 0x688b, 0x688c, 0x688d,
- 0x688e, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898,
- 0x6899, 0x689a, 0x689b, 0x689c, 0x689d, 0x689e, 0x689f, 0x68a0,
- 0x68a1, 0x68a3, 0x68a4, 0x68a5, 0x68a9, 0x68aa, 0x68ab, 0x68ac,
- 0x68ae, 0x68b1, 0x68b2, 0x68b4, 0x68b6, 0x68b7, 0x68b8, 0x68b9,
- 0x68ba, 0x68bb, 0x68bc, 0x68bd, 0x68be, 0x68bf, 0x68c1, 0x68c3,
- 0x68c4, 0x68c5, 0x68c6, 0x68c7, 0x68c8, 0x68ca, 0x68cc, 0x68ce,
- 0x68cf, 0x68d0, 0x68d1, 0x68d3, 0x68d4, 0x68d6, 0x68d7, 0x68d9,
- 0x68db, 0x68dc, 0x68dd, 0x68de, 0x68df, 0x68e1, 0x68e2, 0x68e4,
- 0x68e5, 0x68e6, 0x68e7, 0x68e8, 0x68e9, 0x68ea, 0x68eb, 0x68ec,
- 0x68ed, 0x68ef, 0x68f2, 0x68f3, 0x68f4, 0x68f6, 0x68f7, 0x68f8,
- 0x68fb, 0x68fd, 0x68fe, 0x68ff, 0x6900, 0x6902, 0x6903, 0x6904,
- 0x6906, 0x6907, 0x6908, 0x6909, 0x690a, 0x690c, 0x690f, 0x6911,
- 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, 0x691a,
- 0x691b, 0x691c, 0x691d, 0x691e, 0x6921, 0x6922, 0x6923, 0x6925,
- 0x6926, 0x6927, 0x6928, 0x6929, 0x692a, 0x692b, 0x692c, 0x692e,
- 0x692f, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937, 0x6938,
- 0x693a, 0x693b, 0x693c, 0x693e, 0x6940, 0x6941, 0x6943, 0x6944,
- 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694a, 0x694b, 0x694c,
- 0x694d, 0x694e, 0x694f, 0x6950, 0x6951, 0x6952, 0x6953, 0x6955,
- 0x6956, 0x6958, 0x6959, 0x695b, 0x695c, 0x695f,
- /* 0x98 */
- 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696a,
- 0x696c, 0x696d, 0x696f, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975,
- 0x6976, 0x697a, 0x697b, 0x697d, 0x697e, 0x697f, 0x6981, 0x6983,
- 0x6985, 0x698a, 0x698b, 0x698c, 0x698e, 0x698f, 0x6990, 0x6991,
- 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699a, 0x699d, 0x699e,
- 0x699f, 0x69a0, 0x69a1, 0x69a2, 0x69a3, 0x69a4, 0x69a5, 0x69a6,
- 0x69a9, 0x69aa, 0x69ac, 0x69ae, 0x69af, 0x69b0, 0x69b2, 0x69b3,
- 0x69b5, 0x69b6, 0x69b8, 0x69b9, 0x69ba, 0x69bc, 0x69bd, 0x69be,
- 0x69bf, 0x69c0, 0x69c2, 0x69c3, 0x69c4, 0x69c5, 0x69c6, 0x69c7,
- 0x69c8, 0x69c9, 0x69cb, 0x69cd, 0x69cf, 0x69d1, 0x69d2, 0x69d3,
- 0x69d5, 0x69d6, 0x69d7, 0x69d8, 0x69d9, 0x69da, 0x69dc, 0x69dd,
- 0x69de, 0x69e1, 0x69e2, 0x69e3, 0x69e4, 0x69e5, 0x69e6, 0x69e7,
- 0x69e8, 0x69e9, 0x69ea, 0x69eb, 0x69ec, 0x69ee, 0x69ef, 0x69f0,
- 0x69f1, 0x69f3, 0x69f4, 0x69f5, 0x69f6, 0x69f7, 0x69f8, 0x69f9,
- 0x69fa, 0x69fb, 0x69fc, 0x69fe, 0x6a00, 0x6a01, 0x6a02, 0x6a03,
- 0x6a04, 0x6a05, 0x6a06, 0x6a07, 0x6a08, 0x6a09, 0x6a0b, 0x6a0c,
- 0x6a0d, 0x6a0e, 0x6a0f, 0x6a10, 0x6a11, 0x6a12, 0x6a13, 0x6a14,
- 0x6a15, 0x6a16, 0x6a19, 0x6a1a, 0x6a1b, 0x6a1c, 0x6a1d, 0x6a1e,
- 0x6a20, 0x6a22, 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, 0x6a29,
- 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a30, 0x6a32, 0x6a33, 0x6a34,
- 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a, 0x6a3b, 0x6a3c, 0x6a3f,
- 0x6a40, 0x6a41, 0x6a42, 0x6a43, 0x6a45, 0x6a46, 0x6a48, 0x6a49,
- 0x6a4a, 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a51, 0x6a52,
- 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a5a,
- /* 0x99 */
- 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a62, 0x6a63, 0x6a64,
- 0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d,
- 0x6a6e, 0x6a6f, 0x6a70, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a76,
- 0x6a77, 0x6a78, 0x6a7a, 0x6a7b, 0x6a7d, 0x6a7e, 0x6a7f, 0x6a81,
- 0x6a82, 0x6a83, 0x6a85, 0x6a86, 0x6a87, 0x6a88, 0x6a89, 0x6a8a,
- 0x6a8b, 0x6a8c, 0x6a8d, 0x6a8f, 0x6a92, 0x6a93, 0x6a94, 0x6a95,
- 0x6a96, 0x6a98, 0x6a99, 0x6a9a, 0x6a9b, 0x6a9c, 0x6a9d, 0x6a9e,
- 0x6a9f, 0x6aa1, 0x6aa2, 0x6aa3, 0x6aa4, 0x6aa5, 0x6aa6, 0x6aa7,
- 0x6aa8, 0x6aaa, 0x6aad, 0x6aae, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab2,
- 0x6ab3, 0x6ab4, 0x6ab5, 0x6ab6, 0x6ab7, 0x6ab8, 0x6ab9, 0x6aba,
- 0x6abb, 0x6abc, 0x6abd, 0x6abe, 0x6abf, 0x6ac0, 0x6ac1, 0x6ac2,
- 0x6ac3, 0x6ac4, 0x6ac5, 0x6ac6, 0x6ac7, 0x6ac8, 0x6ac9, 0x6aca,
- 0x6acb, 0x6acc, 0x6acd, 0x6ace, 0x6acf, 0x6ad0, 0x6ad1, 0x6ad2,
- 0x6ad3, 0x6ad4, 0x6ad5, 0x6ad6, 0x6ad7, 0x6ad8, 0x6ad9, 0x6ada,
- 0x6adb, 0x6adc, 0x6add, 0x6ade, 0x6adf, 0x6ae0, 0x6ae1, 0x6ae2,
- 0x6ae3, 0x6ae4, 0x6ae5, 0x6ae6, 0x6ae7, 0x6ae8, 0x6ae9, 0x6aea,
- 0x6aeb, 0x6aec, 0x6aed, 0x6aee, 0x6aef, 0x6af0, 0x6af1, 0x6af2,
- 0x6af3, 0x6af4, 0x6af5, 0x6af6, 0x6af7, 0x6af8, 0x6af9, 0x6afa,
- 0x6afb, 0x6afc, 0x6afd, 0x6afe, 0x6aff, 0x6b00, 0x6b01, 0x6b02,
- 0x6b03, 0x6b04, 0x6b05, 0x6b06, 0x6b07, 0x6b08, 0x6b09, 0x6b0a,
- 0x6b0b, 0x6b0c, 0x6b0d, 0x6b0e, 0x6b0f, 0x6b10, 0x6b11, 0x6b12,
- 0x6b13, 0x6b14, 0x6b15, 0x6b16, 0x6b17, 0x6b18, 0x6b19, 0x6b1a,
- 0x6b1b, 0x6b1c, 0x6b1d, 0x6b1e, 0x6b1f, 0x6b25, 0x6b26, 0x6b28,
- 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c, 0x6b2d, 0x6b2e,
- /* 0x9a */
- 0x6b2f, 0x6b30, 0x6b31, 0x6b33, 0x6b34, 0x6b35, 0x6b36, 0x6b38,
- 0x6b3b, 0x6b3c, 0x6b3d, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b44,
- 0x6b45, 0x6b48, 0x6b4a, 0x6b4b, 0x6b4d, 0x6b4e, 0x6b4f, 0x6b50,
- 0x6b51, 0x6b52, 0x6b53, 0x6b54, 0x6b55, 0x6b56, 0x6b57, 0x6b58,
- 0x6b5a, 0x6b5b, 0x6b5c, 0x6b5d, 0x6b5e, 0x6b5f, 0x6b60, 0x6b61,
- 0x6b68, 0x6b69, 0x6b6b, 0x6b6c, 0x6b6d, 0x6b6e, 0x6b6f, 0x6b70,
- 0x6b71, 0x6b72, 0x6b73, 0x6b74, 0x6b75, 0x6b76, 0x6b77, 0x6b78,
- 0x6b7a, 0x6b7d, 0x6b7e, 0x6b7f, 0x6b80, 0x6b85, 0x6b88, 0x6b8c,
- 0x6b8e, 0x6b8f, 0x6b90, 0x6b91, 0x6b94, 0x6b95, 0x6b97, 0x6b98,
- 0x6b99, 0x6b9c, 0x6b9d, 0x6b9e, 0x6b9f, 0x6ba0, 0x6ba2, 0x6ba3,
- 0x6ba4, 0x6ba5, 0x6ba6, 0x6ba7, 0x6ba8, 0x6ba9, 0x6bab, 0x6bac,
- 0x6bad, 0x6bae, 0x6baf, 0x6bb0, 0x6bb1, 0x6bb2, 0x6bb6, 0x6bb8,
- 0x6bb9, 0x6bba, 0x6bbb, 0x6bbc, 0x6bbd, 0x6bbe, 0x6bc0, 0x6bc3,
- 0x6bc4, 0x6bc6, 0x6bc7, 0x6bc8, 0x6bc9, 0x6bca, 0x6bcc, 0x6bce,
- 0x6bd0, 0x6bd1, 0x6bd8, 0x6bda, 0x6bdc, 0x6bdd, 0x6bde, 0x6bdf,
- 0x6be0, 0x6be2, 0x6be3, 0x6be4, 0x6be5, 0x6be6, 0x6be7, 0x6be8,
- 0x6be9, 0x6bec, 0x6bed, 0x6bee, 0x6bf0, 0x6bf1, 0x6bf2, 0x6bf4,
- 0x6bf6, 0x6bf7, 0x6bf8, 0x6bfa, 0x6bfb, 0x6bfc, 0x6bfe, 0x6bff,
- 0x6c00, 0x6c01, 0x6c02, 0x6c03, 0x6c04, 0x6c08, 0x6c09, 0x6c0a,
- 0x6c0b, 0x6c0c, 0x6c0e, 0x6c12, 0x6c17, 0x6c1c, 0x6c1d, 0x6c1e,
- 0x6c20, 0x6c23, 0x6c25, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c31, 0x6c33,
- 0x6c36, 0x6c37, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3e, 0x6c3f,
- 0x6c43, 0x6c44, 0x6c45, 0x6c48, 0x6c4b, 0x6c4c, 0x6c4d, 0x6c4e,
- 0x6c4f, 0x6c51, 0x6c52, 0x6c53, 0x6c56, 0x6c58,
- /* 0x9b */
- 0x6c59, 0x6c5a, 0x6c62, 0x6c63, 0x6c65, 0x6c66, 0x6c67, 0x6c6b,
- 0x6c6c, 0x6c6d, 0x6c6e, 0x6c6f, 0x6c71, 0x6c73, 0x6c75, 0x6c77,
- 0x6c78, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7f, 0x6c80, 0x6c84, 0x6c87,
- 0x6c8a, 0x6c8b, 0x6c8d, 0x6c8e, 0x6c91, 0x6c92, 0x6c95, 0x6c96,
- 0x6c97, 0x6c98, 0x6c9a, 0x6c9c, 0x6c9d, 0x6c9e, 0x6ca0, 0x6ca2,
- 0x6ca8, 0x6cac, 0x6caf, 0x6cb0, 0x6cb4, 0x6cb5, 0x6cb6, 0x6cb7,
- 0x6cba, 0x6cc0, 0x6cc1, 0x6cc2, 0x6cc3, 0x6cc6, 0x6cc7, 0x6cc8,
- 0x6ccb, 0x6ccd, 0x6cce, 0x6ccf, 0x6cd1, 0x6cd2, 0x6cd8, 0x6cd9,
- 0x6cda, 0x6cdc, 0x6cdd, 0x6cdf, 0x6ce4, 0x6ce6, 0x6ce7, 0x6ce9,
- 0x6cec, 0x6ced, 0x6cf2, 0x6cf4, 0x6cf9, 0x6cff, 0x6d00, 0x6d02,
- 0x6d03, 0x6d05, 0x6d06, 0x6d08, 0x6d09, 0x6d0a, 0x6d0d, 0x6d0f,
- 0x6d10, 0x6d11, 0x6d13, 0x6d14, 0x6d15, 0x6d16, 0x6d18, 0x6d1c,
- 0x6d1d, 0x6d1f, 0x6d20, 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d26,
- 0x6d28, 0x6d29, 0x6d2c, 0x6d2d, 0x6d2f, 0x6d30, 0x6d34, 0x6d36,
- 0x6d37, 0x6d38, 0x6d3a, 0x6d3f, 0x6d40, 0x6d42, 0x6d44, 0x6d49,
- 0x6d4c, 0x6d50, 0x6d55, 0x6d56, 0x6d57, 0x6d58, 0x6d5b, 0x6d5d,
- 0x6d5f, 0x6d61, 0x6d62, 0x6d64, 0x6d65, 0x6d67, 0x6d68, 0x6d6b,
- 0x6d6c, 0x6d6d, 0x6d70, 0x6d71, 0x6d72, 0x6d73, 0x6d75, 0x6d76,
- 0x6d79, 0x6d7a, 0x6d7b, 0x6d7d, 0x6d7e, 0x6d7f, 0x6d80, 0x6d81,
- 0x6d83, 0x6d84, 0x6d86, 0x6d87, 0x6d8a, 0x6d8b, 0x6d8d, 0x6d8f,
- 0x6d90, 0x6d92, 0x6d96, 0x6d97, 0x6d98, 0x6d99, 0x6d9a, 0x6d9c,
- 0x6da2, 0x6da5, 0x6dac, 0x6dad, 0x6db0, 0x6db1, 0x6db3, 0x6db4,
- 0x6db6, 0x6db7, 0x6db9, 0x6dba, 0x6dbb, 0x6dbc, 0x6dbd, 0x6dbe,
- 0x6dc1, 0x6dc2, 0x6dc3, 0x6dc8, 0x6dc9, 0x6dca,
- /* 0x9c */
- 0x6dcd, 0x6dce, 0x6dcf, 0x6dd0, 0x6dd2, 0x6dd3, 0x6dd4, 0x6dd5,
- 0x6dd7, 0x6dda, 0x6ddb, 0x6ddc, 0x6ddf, 0x6de2, 0x6de3, 0x6de5,
- 0x6de7, 0x6de8, 0x6de9, 0x6dea, 0x6ded, 0x6def, 0x6df0, 0x6df2,
- 0x6df4, 0x6df5, 0x6df6, 0x6df8, 0x6dfa, 0x6dfd, 0x6dfe, 0x6dff,
- 0x6e00, 0x6e01, 0x6e02, 0x6e03, 0x6e04, 0x6e06, 0x6e07, 0x6e08,
- 0x6e09, 0x6e0b, 0x6e0f, 0x6e12, 0x6e13, 0x6e15, 0x6e18, 0x6e19,
- 0x6e1b, 0x6e1c, 0x6e1e, 0x6e1f, 0x6e22, 0x6e26, 0x6e27, 0x6e28,
- 0x6e2a, 0x6e2c, 0x6e2e, 0x6e30, 0x6e31, 0x6e33, 0x6e35, 0x6e36,
- 0x6e37, 0x6e39, 0x6e3b, 0x6e3c, 0x6e3d, 0x6e3e, 0x6e3f, 0x6e40,
- 0x6e41, 0x6e42, 0x6e45, 0x6e46, 0x6e47, 0x6e48, 0x6e49, 0x6e4a,
- 0x6e4b, 0x6e4c, 0x6e4f, 0x6e50, 0x6e51, 0x6e52, 0x6e55, 0x6e57,
- 0x6e59, 0x6e5a, 0x6e5c, 0x6e5d, 0x6e5e, 0x6e60, 0x6e61, 0x6e62,
- 0x6e63, 0x6e64, 0x6e65, 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a,
- 0x6e6c, 0x6e6d, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e73, 0x6e74,
- 0x6e75, 0x6e76, 0x6e77, 0x6e78, 0x6e79, 0x6e7a, 0x6e7b, 0x6e7c,
- 0x6e7d, 0x6e80, 0x6e81, 0x6e82, 0x6e84, 0x6e87, 0x6e88, 0x6e8a,
- 0x6e8b, 0x6e8c, 0x6e8d, 0x6e8e, 0x6e91, 0x6e92, 0x6e93, 0x6e94,
- 0x6e95, 0x6e96, 0x6e97, 0x6e99, 0x6e9a, 0x6e9b, 0x6e9d, 0x6e9e,
- 0x6ea0, 0x6ea1, 0x6ea3, 0x6ea4, 0x6ea6, 0x6ea8, 0x6ea9, 0x6eab,
- 0x6eac, 0x6ead, 0x6eae, 0x6eb0, 0x6eb3, 0x6eb5, 0x6eb8, 0x6eb9,
- 0x6ebc, 0x6ebe, 0x6ebf, 0x6ec0, 0x6ec3, 0x6ec4, 0x6ec5, 0x6ec6,
- 0x6ec8, 0x6ec9, 0x6eca, 0x6ecc, 0x6ecd, 0x6ece, 0x6ed0, 0x6ed2,
- 0x6ed6, 0x6ed8, 0x6ed9, 0x6edb, 0x6edc, 0x6edd, 0x6ee3, 0x6ee7,
- 0x6eea, 0x6eeb, 0x6eec, 0x6eed, 0x6eee, 0x6eef,
- /* 0x9d */
- 0x6ef0, 0x6ef1, 0x6ef2, 0x6ef3, 0x6ef5, 0x6ef6, 0x6ef7, 0x6ef8,
- 0x6efa, 0x6efb, 0x6efc, 0x6efd, 0x6efe, 0x6eff, 0x6f00, 0x6f01,
- 0x6f03, 0x6f04, 0x6f05, 0x6f07, 0x6f08, 0x6f0a, 0x6f0b, 0x6f0c,
- 0x6f0d, 0x6f0e, 0x6f10, 0x6f11, 0x6f12, 0x6f16, 0x6f17, 0x6f18,
- 0x6f19, 0x6f1a, 0x6f1b, 0x6f1c, 0x6f1d, 0x6f1e, 0x6f1f, 0x6f21,
- 0x6f22, 0x6f23, 0x6f25, 0x6f26, 0x6f27, 0x6f28, 0x6f2c, 0x6f2e,
- 0x6f30, 0x6f32, 0x6f34, 0x6f35, 0x6f37, 0x6f38, 0x6f39, 0x6f3a,
- 0x6f3b, 0x6f3c, 0x6f3d, 0x6f3f, 0x6f40, 0x6f41, 0x6f42, 0x6f43,
- 0x6f44, 0x6f45, 0x6f48, 0x6f49, 0x6f4a, 0x6f4c, 0x6f4e, 0x6f4f,
- 0x6f50, 0x6f51, 0x6f52, 0x6f53, 0x6f54, 0x6f55, 0x6f56, 0x6f57,
- 0x6f59, 0x6f5a, 0x6f5b, 0x6f5d, 0x6f5f, 0x6f60, 0x6f61, 0x6f63,
- 0x6f64, 0x6f65, 0x6f67, 0x6f68, 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c,
- 0x6f6f, 0x6f70, 0x6f71, 0x6f73, 0x6f75, 0x6f76, 0x6f77, 0x6f79,
- 0x6f7b, 0x6f7d, 0x6f7e, 0x6f7f, 0x6f80, 0x6f81, 0x6f82, 0x6f83,
- 0x6f85, 0x6f86, 0x6f87, 0x6f8a, 0x6f8b, 0x6f8f, 0x6f90, 0x6f91,
- 0x6f92, 0x6f93, 0x6f94, 0x6f95, 0x6f96, 0x6f97, 0x6f98, 0x6f99,
- 0x6f9a, 0x6f9b, 0x6f9d, 0x6f9e, 0x6f9f, 0x6fa0, 0x6fa2, 0x6fa3,
- 0x6fa4, 0x6fa5, 0x6fa6, 0x6fa8, 0x6fa9, 0x6faa, 0x6fab, 0x6fac,
- 0x6fad, 0x6fae, 0x6faf, 0x6fb0, 0x6fb1, 0x6fb2, 0x6fb4, 0x6fb5,
- 0x6fb7, 0x6fb8, 0x6fba, 0x6fbb, 0x6fbc, 0x6fbd, 0x6fbe, 0x6fbf,
- 0x6fc1, 0x6fc3, 0x6fc4, 0x6fc5, 0x6fc6, 0x6fc7, 0x6fc8, 0x6fca,
- 0x6fcb, 0x6fcc, 0x6fcd, 0x6fce, 0x6fcf, 0x6fd0, 0x6fd3, 0x6fd4,
- 0x6fd5, 0x6fd6, 0x6fd7, 0x6fd8, 0x6fd9, 0x6fda, 0x6fdb, 0x6fdc,
- 0x6fdd, 0x6fdf, 0x6fe2, 0x6fe3, 0x6fe4, 0x6fe5,
- /* 0x9e */
- 0x6fe6, 0x6fe7, 0x6fe8, 0x6fe9, 0x6fea, 0x6feb, 0x6fec, 0x6fed,
- 0x6ff0, 0x6ff1, 0x6ff2, 0x6ff3, 0x6ff4, 0x6ff5, 0x6ff6, 0x6ff7,
- 0x6ff8, 0x6ff9, 0x6ffa, 0x6ffb, 0x6ffc, 0x6ffd, 0x6ffe, 0x6fff,
- 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007,
- 0x7008, 0x7009, 0x700a, 0x700b, 0x700c, 0x700d, 0x700e, 0x700f,
- 0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018,
- 0x7019, 0x701c, 0x701d, 0x701e, 0x701f, 0x7020, 0x7021, 0x7022,
- 0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702a, 0x702b,
- 0x702c, 0x702d, 0x702e, 0x702f, 0x7030, 0x7031, 0x7032, 0x7033,
- 0x7034, 0x7036, 0x7037, 0x7038, 0x703a, 0x703b, 0x703c, 0x703d,
- 0x703e, 0x703f, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045,
- 0x7046, 0x7047, 0x7048, 0x7049, 0x704a, 0x704b, 0x704d, 0x704e,
- 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057,
- 0x7058, 0x7059, 0x705a, 0x705b, 0x705c, 0x705d, 0x705f, 0x7060,
- 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, 0x7068,
- 0x7069, 0x706a, 0x706e, 0x7071, 0x7072, 0x7073, 0x7074, 0x7077,
- 0x7079, 0x707a, 0x707b, 0x707d, 0x7081, 0x7082, 0x7083, 0x7084,
- 0x7086, 0x7087, 0x7088, 0x708b, 0x708c, 0x708d, 0x708f, 0x7090,
- 0x7091, 0x7093, 0x7097, 0x7098, 0x709a, 0x709b, 0x709e, 0x709f,
- 0x70a0, 0x70a1, 0x70a2, 0x70a3, 0x70a4, 0x70a5, 0x70a6, 0x70a7,
- 0x70a8, 0x70a9, 0x70aa, 0x70b0, 0x70b2, 0x70b4, 0x70b5, 0x70b6,
- 0x70ba, 0x70be, 0x70bf, 0x70c4, 0x70c5, 0x70c6, 0x70c7, 0x70c9,
- 0x70cb, 0x70cc, 0x70cd, 0x70ce, 0x70cf, 0x70d0, 0x70d1, 0x70d2,
- 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d7, 0x70da,
- /* 0x9f */
- 0x70dc, 0x70dd, 0x70de, 0x70e0, 0x70e1, 0x70e2, 0x70e3, 0x70e5,
- 0x70ea, 0x70ee, 0x70f0, 0x70f1, 0x70f2, 0x70f3, 0x70f4, 0x70f5,
- 0x70f6, 0x70f8, 0x70fa, 0x70fb, 0x70fc, 0x70fe, 0x70ff, 0x7100,
- 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108,
- 0x710b, 0x710c, 0x710d, 0x710e, 0x710f, 0x7111, 0x7112, 0x7114,
- 0x7117, 0x711b, 0x711c, 0x711d, 0x711e, 0x711f, 0x7120, 0x7121,
- 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712a,
- 0x712b, 0x712c, 0x712d, 0x712e, 0x7132, 0x7133, 0x7134, 0x7135,
- 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713c, 0x713d, 0x713e,
- 0x713f, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, 0x7147,
- 0x7148, 0x7149, 0x714b, 0x714d, 0x714f, 0x7150, 0x7151, 0x7152,
- 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159, 0x715a,
- 0x715b, 0x715d, 0x715f, 0x7160, 0x7161, 0x7162, 0x7163, 0x7165,
- 0x7169, 0x716a, 0x716b, 0x716c, 0x716d, 0x716f, 0x7170, 0x7171,
- 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717b, 0x717c, 0x717e,
- 0x717f, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, 0x7187,
- 0x7188, 0x7189, 0x718b, 0x718c, 0x718d, 0x718e, 0x7190, 0x7191,
- 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719a, 0x719b, 0x719c,
- 0x719d, 0x719e, 0x71a1, 0x71a2, 0x71a3, 0x71a4, 0x71a5, 0x71a6,
- 0x71a7, 0x71a9, 0x71aa, 0x71ab, 0x71ad, 0x71ae, 0x71af, 0x71b0,
- 0x71b1, 0x71b2, 0x71b4, 0x71b6, 0x71b7, 0x71b8, 0x71ba, 0x71bb,
- 0x71bc, 0x71bd, 0x71be, 0x71bf, 0x71c0, 0x71c1, 0x71c2, 0x71c4,
- 0x71c5, 0x71c6, 0x71c7, 0x71c8, 0x71c9, 0x71ca, 0x71cb, 0x71cc,
- 0x71cd, 0x71cf, 0x71d0, 0x71d1, 0x71d2, 0x71d3,
- /* 0xa0 */
- 0x71d6, 0x71d7, 0x71d8, 0x71d9, 0x71da, 0x71db, 0x71dc, 0x71dd,
- 0x71de, 0x71df, 0x71e1, 0x71e2, 0x71e3, 0x71e4, 0x71e6, 0x71e8,
- 0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ed, 0x71ef, 0x71f0, 0x71f1,
- 0x71f2, 0x71f3, 0x71f4, 0x71f5, 0x71f6, 0x71f7, 0x71f8, 0x71fa,
- 0x71fb, 0x71fc, 0x71fd, 0x71fe, 0x71ff, 0x7200, 0x7201, 0x7202,
- 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720a, 0x720b,
- 0x720c, 0x720d, 0x720e, 0x720f, 0x7210, 0x7211, 0x7212, 0x7213,
- 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721a, 0x721b,
- 0x721c, 0x721e, 0x721f, 0x7220, 0x7221, 0x7222, 0x7223, 0x7224,
- 0x7225, 0x7226, 0x7227, 0x7229, 0x722b, 0x722d, 0x722e, 0x722f,
- 0x7232, 0x7233, 0x7234, 0x723a, 0x723c, 0x723e, 0x7240, 0x7241,
- 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724a, 0x724b,
- 0x724e, 0x724f, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257,
- 0x7258, 0x725a, 0x725c, 0x725e, 0x7260, 0x7263, 0x7264, 0x7265,
- 0x7268, 0x726a, 0x726b, 0x726c, 0x726d, 0x7270, 0x7271, 0x7273,
- 0x7274, 0x7276, 0x7277, 0x7278, 0x727b, 0x727c, 0x727d, 0x7282,
- 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728c, 0x728e,
- 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297, 0x7298,
- 0x7299, 0x729a, 0x729b, 0x729c, 0x729d, 0x729e, 0x72a0, 0x72a1,
- 0x72a2, 0x72a3, 0x72a4, 0x72a5, 0x72a6, 0x72a7, 0x72a8, 0x72a9,
- 0x72aa, 0x72ab, 0x72ae, 0x72b1, 0x72b2, 0x72b3, 0x72b5, 0x72ba,
- 0x72bb, 0x72bc, 0x72bd, 0x72be, 0x72bf, 0x72c0, 0x72c5, 0x72c6,
- 0x72c7, 0x72c9, 0x72ca, 0x72cb, 0x72cc, 0x72cf, 0x72d1, 0x72d3,
- 0x72d4, 0x72d5, 0x72d6, 0x72d8, 0x72da, 0x72db,
- /* 0xa1 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x3000, 0x3001, 0x3002, 0x00b7, 0x02c9, 0x02c7, 0x00a8, 0x3003,
- 0x3005, 0x2014, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c,
- 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
- 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1,
- 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a,
- 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312,
- 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d,
- 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234,
- 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4,
- 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb,
- 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2,
- 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,
- /* 0xa2 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
- 0x2178, 0x2179, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f,
- 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
- 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477,
- 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f,
- 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
- 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
- 0x2468, 0x2469, 0xfffd, 0xfffd, 0x3220, 0x3221, 0x3222, 0x3223,
- 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xfffd, 0xfffd,
- 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
- 0x2168, 0x2169, 0x216a, 0x216b, 0xfffd, 0xfffd,
- /* 0xa3 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08,
- 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
- 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
- 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
- 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
- 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
- 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
- 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40,
- 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
- 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
- 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
- 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
- /* 0xa4 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
- 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
- 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
- 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
- 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
- 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
- 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
- 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
- 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
- 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa5 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
- 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
- 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
- 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
- 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
- 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
- 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
- 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
- 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
- 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
- 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa6 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
- 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
- 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
- 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
- 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfe35,
- 0xfe36, 0xfe39, 0xfe3a, 0xfe3f, 0xfe40, 0xfe3d, 0xfe3e, 0xfe41,
- 0xfe42, 0xfe43, 0xfe44, 0xfffd, 0xfffd, 0xfe3b, 0xfe3c, 0xfe37,
- 0xfe38, 0xfe31, 0xfffd, 0xfe33, 0xfe34, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa7 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
- 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
- 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
- 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
- 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
- 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
- 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa8 */
- 0x02ca, 0x02cb, 0x02d9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105,
- 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221f, 0x2223,
- 0x2252, 0x2266, 0x2267, 0x22bf, 0x2550, 0x2551, 0x2552, 0x2553,
- 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b,
- 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563,
- 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b,
- 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572, 0x2573,
- 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588,
- 0x2589, 0x258a, 0x258b, 0x258c, 0x258d, 0x258e, 0x258f, 0x2593,
- 0x2594, 0x2595, 0x25bc, 0x25bd, 0x25e2, 0x25e3, 0x25e4, 0x25e5,
- 0x2609, 0x2295, 0x3012, 0x301d, 0x301e, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b, 0x00e8,
- 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
- 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
- 0x00fc, 0x00ea, 0x0251, 0xfffd, 0x0144, 0x0148, 0xfffd, 0x0261,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3105, 0x3106, 0x3107, 0x3108,
- 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
- 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
- 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa9 */
- 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028,
- 0x3029, 0x32a3, 0x338e, 0x338f, 0x339c, 0x339d, 0x339e, 0x33a1,
- 0x33c4, 0x33ce, 0x33d1, 0x33d2, 0x33d5, 0xfe30, 0xffe2, 0xffe4,
- 0xfffd, 0x2121, 0x3231, 0xfffd, 0x2010, 0xfffd, 0xfffd, 0xfffd,
- 0x30fc, 0x309b, 0x309c, 0x30fd, 0x30fe, 0x3006, 0x309d, 0x309e,
- 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f, 0xfe50,
- 0xfe51, 0xfe52, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xfe59, 0xfe5a,
- 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f, 0xfe60, 0xfe61, 0xfe62,
- 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xfe68, 0xfe69, 0xfe6a, 0xfe6b,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3007, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504,
- 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c,
- 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514,
- 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c,
- 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524,
- 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c,
- 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
- 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c,
- 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
- 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xaa */
- 0x72dc, 0x72dd, 0x72df, 0x72e2, 0x72e3, 0x72e4, 0x72e5, 0x72e6,
- 0x72e7, 0x72ea, 0x72eb, 0x72f5, 0x72f6, 0x72f9, 0x72fd, 0x72fe,
- 0x72ff, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308,
- 0x7309, 0x730b, 0x730c, 0x730d, 0x730f, 0x7310, 0x7311, 0x7312,
- 0x7314, 0x7318, 0x7319, 0x731a, 0x731f, 0x7320, 0x7323, 0x7324,
- 0x7326, 0x7327, 0x7328, 0x732d, 0x732f, 0x7330, 0x7332, 0x7333,
- 0x7335, 0x7336, 0x733a, 0x733b, 0x733c, 0x733d, 0x7340, 0x7341,
- 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348, 0x7349,
- 0x734a, 0x734b, 0x734c, 0x734e, 0x734f, 0x7351, 0x7353, 0x7354,
- 0x7355, 0x7356, 0x7358, 0x7359, 0x735a, 0x735b, 0x735c, 0x735d,
- 0x735e, 0x735f, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366,
- 0x7367, 0x7368, 0x7369, 0x736a, 0x736b, 0x736e, 0x7370, 0x7371,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xab */
- 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379,
- 0x737a, 0x737b, 0x737c, 0x737d, 0x737f, 0x7380, 0x7381, 0x7382,
- 0x7383, 0x7385, 0x7386, 0x7388, 0x738a, 0x738c, 0x738d, 0x738f,
- 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399,
- 0x739a, 0x739c, 0x739d, 0x739e, 0x73a0, 0x73a1, 0x73a3, 0x73a4,
- 0x73a5, 0x73a6, 0x73a7, 0x73a8, 0x73aa, 0x73ac, 0x73ad, 0x73b1,
- 0x73b4, 0x73b5, 0x73b6, 0x73b8, 0x73b9, 0x73bc, 0x73bd, 0x73be,
- 0x73bf, 0x73c1, 0x73c3, 0x73c4, 0x73c5, 0x73c6, 0x73c7, 0x73cb,
- 0x73cc, 0x73ce, 0x73d2, 0x73d3, 0x73d4, 0x73d5, 0x73d6, 0x73d7,
- 0x73d8, 0x73da, 0x73db, 0x73dc, 0x73dd, 0x73df, 0x73e1, 0x73e2,
- 0x73e3, 0x73e4, 0x73e6, 0x73e8, 0x73ea, 0x73eb, 0x73ec, 0x73ee,
- 0x73ef, 0x73f0, 0x73f1, 0x73f3, 0x73f4, 0x73f5, 0x73f6, 0x73f7,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xac */
- 0x73f8, 0x73f9, 0x73fa, 0x73fb, 0x73fc, 0x73fd, 0x73fe, 0x73ff,
- 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740b, 0x740c,
- 0x740d, 0x740e, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416,
- 0x7417, 0x7418, 0x7419, 0x741c, 0x741d, 0x741e, 0x741f, 0x7420,
- 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742b, 0x742d, 0x742f,
- 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743a, 0x743b, 0x743d,
- 0x743e, 0x743f, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446,
- 0x7447, 0x7448, 0x7449, 0x744a, 0x744b, 0x744c, 0x744d, 0x744e,
- 0x744f, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456, 0x7458,
- 0x745d, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, 0x7466,
- 0x7467, 0x7468, 0x7469, 0x746a, 0x746b, 0x746c, 0x746e, 0x746f,
- 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, 0x747a,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xad */
- 0x747b, 0x747c, 0x747d, 0x747f, 0x7482, 0x7484, 0x7485, 0x7486,
- 0x7488, 0x7489, 0x748a, 0x748c, 0x748d, 0x748f, 0x7491, 0x7492,
- 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749a,
- 0x749b, 0x749d, 0x749f, 0x74a0, 0x74a1, 0x74a2, 0x74a3, 0x74a4,
- 0x74a5, 0x74a6, 0x74aa, 0x74ab, 0x74ac, 0x74ad, 0x74ae, 0x74af,
- 0x74b0, 0x74b1, 0x74b2, 0x74b3, 0x74b4, 0x74b5, 0x74b6, 0x74b7,
- 0x74b8, 0x74b9, 0x74bb, 0x74bc, 0x74bd, 0x74be, 0x74bf, 0x74c0,
- 0x74c1, 0x74c2, 0x74c3, 0x74c4, 0x74c5, 0x74c6, 0x74c7, 0x74c8,
- 0x74c9, 0x74ca, 0x74cb, 0x74cc, 0x74cd, 0x74ce, 0x74cf, 0x74d0,
- 0x74d1, 0x74d3, 0x74d4, 0x74d5, 0x74d6, 0x74d7, 0x74d8, 0x74d9,
- 0x74da, 0x74db, 0x74dd, 0x74df, 0x74e1, 0x74e5, 0x74e7, 0x74e8,
- 0x74e9, 0x74ea, 0x74eb, 0x74ec, 0x74ed, 0x74f0, 0x74f1, 0x74f2,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xae */
- 0x74f3, 0x74f5, 0x74f8, 0x74f9, 0x74fa, 0x74fb, 0x74fc, 0x74fd,
- 0x74fe, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507,
- 0x7508, 0x7509, 0x750a, 0x750b, 0x750c, 0x750e, 0x7510, 0x7512,
- 0x7514, 0x7515, 0x7516, 0x7517, 0x751b, 0x751d, 0x751e, 0x7520,
- 0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752a, 0x752e,
- 0x7534, 0x7536, 0x7539, 0x753c, 0x753d, 0x753f, 0x7541, 0x7542,
- 0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754a, 0x754d, 0x7550,
- 0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558, 0x755d,
- 0x755e, 0x755f, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7567,
- 0x7568, 0x7569, 0x756b, 0x756c, 0x756d, 0x756e, 0x756f, 0x7570,
- 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757a, 0x757b, 0x757c,
- 0x757d, 0x757e, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 0x7587,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xaf */
- 0x7588, 0x7589, 0x758a, 0x758c, 0x758d, 0x758e, 0x7590, 0x7593,
- 0x7595, 0x7598, 0x759b, 0x759c, 0x759e, 0x75a2, 0x75a6, 0x75a7,
- 0x75a8, 0x75a9, 0x75aa, 0x75ad, 0x75b6, 0x75b7, 0x75ba, 0x75bb,
- 0x75bf, 0x75c0, 0x75c1, 0x75c6, 0x75cb, 0x75cc, 0x75ce, 0x75cf,
- 0x75d0, 0x75d1, 0x75d3, 0x75d7, 0x75d9, 0x75da, 0x75dc, 0x75dd,
- 0x75df, 0x75e0, 0x75e1, 0x75e5, 0x75e9, 0x75ec, 0x75ed, 0x75ee,
- 0x75ef, 0x75f2, 0x75f3, 0x75f5, 0x75f6, 0x75f7, 0x75f8, 0x75fa,
- 0x75fb, 0x75fd, 0x75fe, 0x7602, 0x7604, 0x7606, 0x7607, 0x7608,
- 0x7609, 0x760b, 0x760d, 0x760e, 0x760f, 0x7611, 0x7612, 0x7613,
- 0x7614, 0x7616, 0x761a, 0x761c, 0x761d, 0x761e, 0x7621, 0x7623,
- 0x7627, 0x7628, 0x762c, 0x762e, 0x762f, 0x7631, 0x7632, 0x7636,
- 0x7637, 0x7639, 0x763a, 0x763b, 0x763d, 0x7641, 0x7642, 0x7644,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xb0 */
- 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764a, 0x764b, 0x764e,
- 0x764f, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658,
- 0x7659, 0x765a, 0x765b, 0x765d, 0x765f, 0x7660, 0x7661, 0x7662,
- 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766a, 0x766c,
- 0x766d, 0x766e, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675,
- 0x7676, 0x7677, 0x7679, 0x767a, 0x767c, 0x767f, 0x7680, 0x7681,
- 0x7683, 0x7685, 0x7689, 0x768a, 0x768c, 0x768d, 0x768f, 0x7690,
- 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769a, 0x769b, 0x769c,
- 0x769d, 0x769e, 0x769f, 0x76a0, 0x76a1, 0x76a2, 0x76a3, 0x76a5,
- 0x76a6, 0x76a7, 0x76a8, 0x76a9, 0x76aa, 0x76ab, 0x76ac, 0x76ad,
- 0x76af, 0x76b0, 0x76b3, 0x76b5, 0x76b6, 0x76b7, 0x76b8, 0x76b9,
- 0x76ba, 0x76bb, 0x76bc, 0x76bd, 0x76be, 0x76c0, 0x76c1, 0x76c3,
- 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691,
- 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d,
- 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848,
- 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884,
- 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed,
- 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776,
- 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf,
- 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed,
- 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc,
- 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886,
- 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d,
- 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265,
- /* 0xb1 */
- 0x76c4, 0x76c7, 0x76c9, 0x76cb, 0x76cc, 0x76d3, 0x76d5, 0x76d9,
- 0x76da, 0x76dc, 0x76dd, 0x76de, 0x76e0, 0x76e1, 0x76e2, 0x76e3,
- 0x76e4, 0x76e6, 0x76e7, 0x76e8, 0x76e9, 0x76ea, 0x76eb, 0x76ec,
- 0x76ed, 0x76f0, 0x76f3, 0x76f5, 0x76f6, 0x76f7, 0x76fa, 0x76fb,
- 0x76fd, 0x76ff, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770a,
- 0x770c, 0x770e, 0x770f, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714,
- 0x7715, 0x7716, 0x7717, 0x7718, 0x771b, 0x771c, 0x771d, 0x771e,
- 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772a, 0x772b, 0x772c,
- 0x772e, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773b,
- 0x773d, 0x773e, 0x773f, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748,
- 0x7749, 0x774a, 0x774b, 0x774c, 0x774d, 0x774e, 0x774f, 0x7752,
- 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759, 0x775c,
- 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5,
- 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351,
- 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907,
- 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29,
- 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4,
- 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9,
- 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5,
- 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16,
- 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab,
- 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b,
- 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175,
- 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3,
- /* 0xb2 */
- 0x775d, 0x775e, 0x775f, 0x7760, 0x7764, 0x7767, 0x7769, 0x776a,
- 0x776d, 0x776e, 0x776f, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774,
- 0x7775, 0x7776, 0x7777, 0x7778, 0x777a, 0x777b, 0x777c, 0x7781,
- 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778a, 0x778b,
- 0x778f, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798,
- 0x7799, 0x779a, 0x779b, 0x779c, 0x779d, 0x779e, 0x77a1, 0x77a3,
- 0x77a4, 0x77a6, 0x77a8, 0x77ab, 0x77ad, 0x77ae, 0x77af, 0x77b1,
- 0x77b2, 0x77b4, 0x77b6, 0x77b7, 0x77b8, 0x77b9, 0x77ba, 0x77bc,
- 0x77be, 0x77c0, 0x77c1, 0x77c2, 0x77c3, 0x77c4, 0x77c5, 0x77c6,
- 0x77c7, 0x77c8, 0x77c9, 0x77ca, 0x77cb, 0x77cc, 0x77ce, 0x77cf,
- 0x77d0, 0x77d1, 0x77d2, 0x77d3, 0x77d4, 0x77d5, 0x77d6, 0x77d8,
- 0x77d9, 0x77da, 0x77dd, 0x77de, 0x77df, 0x77e0, 0x77e1, 0x77e4,
- 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2,
- 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236,
- 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa,
- 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016,
- 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29,
- 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b,
- 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf,
- 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7,
- 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336,
- 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6,
- 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20,
- 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316,
- /* 0xb3 */
- 0x77e6, 0x77e8, 0x77ea, 0x77ef, 0x77f0, 0x77f1, 0x77f2, 0x77f4,
- 0x77f5, 0x77f7, 0x77f9, 0x77fa, 0x77fb, 0x77fc, 0x7803, 0x7804,
- 0x7805, 0x7806, 0x7807, 0x7808, 0x780a, 0x780b, 0x780e, 0x780f,
- 0x7810, 0x7813, 0x7815, 0x7819, 0x781b, 0x781e, 0x7820, 0x7821,
- 0x7822, 0x7824, 0x7828, 0x782a, 0x782b, 0x782e, 0x782f, 0x7831,
- 0x7832, 0x7833, 0x7835, 0x7836, 0x783d, 0x783f, 0x7841, 0x7842,
- 0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784a, 0x784b, 0x784d,
- 0x784f, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785a, 0x785b,
- 0x785c, 0x785e, 0x785f, 0x7860, 0x7861, 0x7862, 0x7863, 0x7864,
- 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786f, 0x7870, 0x7871,
- 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, 0x787a,
- 0x787b, 0x787d, 0x787e, 0x787f, 0x7880, 0x7881, 0x7882, 0x7883,
- 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e,
- 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632,
- 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3,
- 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1,
- 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59,
- 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f,
- 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60,
- 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64,
- 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0,
- 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7,
- 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8,
- 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a,
- /* 0xb4 */
- 0x7884, 0x7885, 0x7886, 0x7888, 0x788a, 0x788b, 0x788f, 0x7890,
- 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789d, 0x789e, 0x78a0,
- 0x78a2, 0x78a4, 0x78a6, 0x78a8, 0x78a9, 0x78aa, 0x78ab, 0x78ac,
- 0x78ad, 0x78ae, 0x78af, 0x78b5, 0x78b6, 0x78b7, 0x78b8, 0x78ba,
- 0x78bb, 0x78bc, 0x78bd, 0x78bf, 0x78c0, 0x78c2, 0x78c3, 0x78c4,
- 0x78c6, 0x78c7, 0x78c8, 0x78cc, 0x78cd, 0x78ce, 0x78cf, 0x78d1,
- 0x78d2, 0x78d3, 0x78d6, 0x78d7, 0x78d8, 0x78da, 0x78db, 0x78dc,
- 0x78dd, 0x78de, 0x78df, 0x78e0, 0x78e1, 0x78e2, 0x78e3, 0x78e4,
- 0x78e5, 0x78e6, 0x78e7, 0x78e9, 0x78ea, 0x78eb, 0x78ed, 0x78ee,
- 0x78ef, 0x78f0, 0x78f1, 0x78f3, 0x78f5, 0x78f6, 0x78f8, 0x78f9,
- 0x78fb, 0x78fc, 0x78fd, 0x78fe, 0x78ff, 0x7900, 0x7902, 0x7903,
- 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790a, 0x790b, 0x790c,
- 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd,
- 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97,
- 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524,
- 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822,
- 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148,
- 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471,
- 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07,
- 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106,
- 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb,
- 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54,
- 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26,
- 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e,
- /* 0xb5 */
- 0x790d, 0x790e, 0x790f, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915,
- 0x7916, 0x7917, 0x7918, 0x7919, 0x791a, 0x791b, 0x791c, 0x791d,
- 0x791f, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927,
- 0x7928, 0x7929, 0x792a, 0x792b, 0x792c, 0x792d, 0x792e, 0x792f,
- 0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938,
- 0x7939, 0x793d, 0x793f, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947,
- 0x794a, 0x794b, 0x794c, 0x794d, 0x794e, 0x794f, 0x7950, 0x7951,
- 0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963, 0x7964,
- 0x7966, 0x7969, 0x796a, 0x796b, 0x796c, 0x796e, 0x7970, 0x7971,
- 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797b, 0x797c,
- 0x797d, 0x797e, 0x797f, 0x7982, 0x7983, 0x7986, 0x7987, 0x7988,
- 0x7989, 0x798b, 0x798c, 0x798d, 0x798e, 0x7990, 0x7991, 0x7992,
- 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6,
- 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb,
- 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48,
- 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053,
- 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49,
- 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c,
- 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730,
- 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382,
- 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43,
- 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc,
- 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc,
- 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0,
- /* 0xb6 */
- 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799b,
- 0x799c, 0x799d, 0x799e, 0x799f, 0x79a0, 0x79a1, 0x79a2, 0x79a3,
- 0x79a4, 0x79a5, 0x79a6, 0x79a8, 0x79a9, 0x79aa, 0x79ab, 0x79ac,
- 0x79ad, 0x79ae, 0x79af, 0x79b0, 0x79b1, 0x79b2, 0x79b4, 0x79b5,
- 0x79b6, 0x79b7, 0x79b8, 0x79bc, 0x79bf, 0x79c2, 0x79c4, 0x79c5,
- 0x79c7, 0x79c8, 0x79ca, 0x79cc, 0x79ce, 0x79cf, 0x79d0, 0x79d3,
- 0x79d4, 0x79d6, 0x79d7, 0x79d9, 0x79da, 0x79db, 0x79dc, 0x79dd,
- 0x79de, 0x79e0, 0x79e1, 0x79e2, 0x79e5, 0x79e8, 0x79ea, 0x79ec,
- 0x79ee, 0x79f1, 0x79f2, 0x79f3, 0x79f4, 0x79f5, 0x79f6, 0x79f7,
- 0x79f9, 0x79fa, 0x79fc, 0x79fe, 0x79ff, 0x7a01, 0x7a04, 0x7a05,
- 0x7a07, 0x7a08, 0x7a09, 0x7a0a, 0x7a0c, 0x7a0f, 0x7a10, 0x7a11,
- 0x7a12, 0x7a13, 0x7a15, 0x7a16, 0x7a18, 0x7a19, 0x7a1b, 0x7a1c,
- 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a,
- 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b,
- 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661,
- 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec,
- 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6,
- 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e,
- 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566,
- 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a,
- 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0,
- 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25,
- 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c,
- 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c,
- /* 0xb7 */
- 0x7a1d, 0x7a1f, 0x7a21, 0x7a22, 0x7a24, 0x7a25, 0x7a26, 0x7a27,
- 0x7a28, 0x7a29, 0x7a2a, 0x7a2b, 0x7a2c, 0x7a2d, 0x7a2e, 0x7a2f,
- 0x7a30, 0x7a31, 0x7a32, 0x7a34, 0x7a35, 0x7a36, 0x7a38, 0x7a3a,
- 0x7a3e, 0x7a40, 0x7a41, 0x7a42, 0x7a43, 0x7a44, 0x7a45, 0x7a47,
- 0x7a48, 0x7a49, 0x7a4a, 0x7a4b, 0x7a4c, 0x7a4d, 0x7a4e, 0x7a4f,
- 0x7a50, 0x7a52, 0x7a53, 0x7a54, 0x7a55, 0x7a56, 0x7a58, 0x7a59,
- 0x7a5a, 0x7a5b, 0x7a5c, 0x7a5d, 0x7a5e, 0x7a5f, 0x7a60, 0x7a61,
- 0x7a62, 0x7a63, 0x7a64, 0x7a65, 0x7a66, 0x7a67, 0x7a68, 0x7a69,
- 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x7a6e, 0x7a6f, 0x7a71, 0x7a72,
- 0x7a73, 0x7a75, 0x7a7b, 0x7a7c, 0x7a7d, 0x7a7e, 0x7a82, 0x7a85,
- 0x7a87, 0x7a89, 0x7a8a, 0x7a8b, 0x7a8c, 0x7a8e, 0x7a8f, 0x7a90,
- 0x7a93, 0x7a94, 0x7a99, 0x7a9a, 0x7a9b, 0x7a9e, 0x7aa1, 0x7aa2,
- 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5,
- 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492,
- 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af,
- 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632,
- 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561,
- 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8,
- 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f,
- 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa,
- 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af,
- 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b,
- 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90,
- 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d,
- /* 0xb8 */
- 0x7aa3, 0x7aa4, 0x7aa7, 0x7aa9, 0x7aaa, 0x7aab, 0x7aae, 0x7aaf,
- 0x7ab0, 0x7ab1, 0x7ab2, 0x7ab4, 0x7ab5, 0x7ab6, 0x7ab7, 0x7ab8,
- 0x7ab9, 0x7aba, 0x7abb, 0x7abc, 0x7abd, 0x7abe, 0x7ac0, 0x7ac1,
- 0x7ac2, 0x7ac3, 0x7ac4, 0x7ac5, 0x7ac6, 0x7ac7, 0x7ac8, 0x7ac9,
- 0x7aca, 0x7acc, 0x7acd, 0x7ace, 0x7acf, 0x7ad0, 0x7ad1, 0x7ad2,
- 0x7ad3, 0x7ad4, 0x7ad5, 0x7ad7, 0x7ad8, 0x7ada, 0x7adb, 0x7adc,
- 0x7add, 0x7ae1, 0x7ae2, 0x7ae4, 0x7ae7, 0x7ae8, 0x7ae9, 0x7aea,
- 0x7aeb, 0x7aec, 0x7aee, 0x7af0, 0x7af1, 0x7af2, 0x7af3, 0x7af4,
- 0x7af5, 0x7af6, 0x7af7, 0x7af8, 0x7afb, 0x7afc, 0x7afe, 0x7b00,
- 0x7b01, 0x7b02, 0x7b05, 0x7b07, 0x7b09, 0x7b0c, 0x7b0d, 0x7b0e,
- 0x7b10, 0x7b12, 0x7b13, 0x7b16, 0x7b17, 0x7b18, 0x7b1a, 0x7b1c,
- 0x7b1d, 0x7b1f, 0x7b21, 0x7b22, 0x7b23, 0x7b27, 0x7b29, 0x7b2d,
- 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85,
- 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74,
- 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236,
- 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490,
- 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89,
- 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f,
- 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b,
- 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f,
- 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c,
- 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b,
- 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9,
- 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9,
- /* 0xb9 */
- 0x7b2f, 0x7b30, 0x7b32, 0x7b34, 0x7b35, 0x7b36, 0x7b37, 0x7b39,
- 0x7b3b, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44,
- 0x7b46, 0x7b48, 0x7b4a, 0x7b4d, 0x7b4e, 0x7b53, 0x7b55, 0x7b57,
- 0x7b59, 0x7b5c, 0x7b5e, 0x7b5f, 0x7b61, 0x7b63, 0x7b64, 0x7b65,
- 0x7b66, 0x7b67, 0x7b68, 0x7b69, 0x7b6a, 0x7b6b, 0x7b6c, 0x7b6d,
- 0x7b6f, 0x7b70, 0x7b73, 0x7b74, 0x7b76, 0x7b78, 0x7b7a, 0x7b7c,
- 0x7b7d, 0x7b7f, 0x7b81, 0x7b82, 0x7b83, 0x7b84, 0x7b86, 0x7b87,
- 0x7b88, 0x7b89, 0x7b8a, 0x7b8b, 0x7b8c, 0x7b8e, 0x7b8f, 0x7b91,
- 0x7b92, 0x7b93, 0x7b96, 0x7b98, 0x7b99, 0x7b9a, 0x7b9b, 0x7b9e,
- 0x7b9f, 0x7ba0, 0x7ba3, 0x7ba4, 0x7ba5, 0x7bae, 0x7baf, 0x7bb0,
- 0x7bb2, 0x7bb3, 0x7bb5, 0x7bb6, 0x7bb7, 0x7bb9, 0x7bba, 0x7bbb,
- 0x7bbc, 0x7bbd, 0x7bbe, 0x7bbf, 0x7bc0, 0x7bc2, 0x7bc3, 0x7bc4,
- 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a,
- 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1,
- 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2,
- 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30,
- 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37,
- 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250,
- 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173,
- 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c,
- 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845,
- 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842,
- 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505,
- 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8,
- /* 0xba */
- 0x7bc5, 0x7bc8, 0x7bc9, 0x7bca, 0x7bcb, 0x7bcd, 0x7bce, 0x7bcf,
- 0x7bd0, 0x7bd2, 0x7bd4, 0x7bd5, 0x7bd6, 0x7bd7, 0x7bd8, 0x7bdb,
- 0x7bdc, 0x7bde, 0x7bdf, 0x7be0, 0x7be2, 0x7be3, 0x7be4, 0x7be7,
- 0x7be8, 0x7be9, 0x7beb, 0x7bec, 0x7bed, 0x7bef, 0x7bf0, 0x7bf2,
- 0x7bf3, 0x7bf4, 0x7bf5, 0x7bf6, 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfb,
- 0x7bfd, 0x7bff, 0x7c00, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c05,
- 0x7c06, 0x7c08, 0x7c09, 0x7c0a, 0x7c0d, 0x7c0e, 0x7c10, 0x7c11,
- 0x7c12, 0x7c13, 0x7c14, 0x7c15, 0x7c17, 0x7c18, 0x7c19, 0x7c1a,
- 0x7c1b, 0x7c1c, 0x7c1d, 0x7c1e, 0x7c20, 0x7c21, 0x7c22, 0x7c23,
- 0x7c24, 0x7c25, 0x7c28, 0x7c29, 0x7c2b, 0x7c2c, 0x7c2d, 0x7c2e,
- 0x7c2f, 0x7c30, 0x7c31, 0x7c32, 0x7c33, 0x7c34, 0x7c35, 0x7c36,
- 0x7c37, 0x7c39, 0x7c3a, 0x7c3b, 0x7c3c, 0x7c3d, 0x7c3e, 0x7c42,
- 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163,
- 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a,
- 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a,
- 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a,
- 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d,
- 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2,
- 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a,
- 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8,
- 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f,
- 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c,
- 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6,
- 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56,
- /* 0xbb */
- 0x7c43, 0x7c44, 0x7c45, 0x7c46, 0x7c47, 0x7c48, 0x7c49, 0x7c4a,
- 0x7c4b, 0x7c4c, 0x7c4e, 0x7c4f, 0x7c50, 0x7c51, 0x7c52, 0x7c53,
- 0x7c54, 0x7c55, 0x7c56, 0x7c57, 0x7c58, 0x7c59, 0x7c5a, 0x7c5b,
- 0x7c5c, 0x7c5d, 0x7c5e, 0x7c5f, 0x7c60, 0x7c61, 0x7c62, 0x7c63,
- 0x7c64, 0x7c65, 0x7c66, 0x7c67, 0x7c68, 0x7c69, 0x7c6a, 0x7c6b,
- 0x7c6c, 0x7c6d, 0x7c6e, 0x7c6f, 0x7c70, 0x7c71, 0x7c72, 0x7c75,
- 0x7c76, 0x7c77, 0x7c78, 0x7c79, 0x7c7a, 0x7c7e, 0x7c7f, 0x7c80,
- 0x7c81, 0x7c82, 0x7c83, 0x7c84, 0x7c85, 0x7c86, 0x7c87, 0x7c88,
- 0x7c8a, 0x7c8b, 0x7c8c, 0x7c8d, 0x7c8e, 0x7c8f, 0x7c90, 0x7c93,
- 0x7c94, 0x7c96, 0x7c99, 0x7c9a, 0x7c9b, 0x7ca0, 0x7ca1, 0x7ca3,
- 0x7ca6, 0x7ca7, 0x7ca8, 0x7ca9, 0x7cab, 0x7cac, 0x7cad, 0x7caf,
- 0x7cb0, 0x7cb4, 0x7cb5, 0x7cb6, 0x7cb7, 0x7cb8, 0x7cba, 0x7cbb,
- 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1,
- 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd,
- 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853,
- 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115,
- 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757,
- 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d,
- 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de,
- 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd,
- 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f,
- 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b,
- 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e,
- 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95,
- /* 0xbc */
- 0x7cbf, 0x7cc0, 0x7cc2, 0x7cc3, 0x7cc4, 0x7cc6, 0x7cc9, 0x7ccb,
- 0x7cce, 0x7ccf, 0x7cd0, 0x7cd1, 0x7cd2, 0x7cd3, 0x7cd4, 0x7cd8,
- 0x7cda, 0x7cdb, 0x7cdd, 0x7cde, 0x7ce1, 0x7ce2, 0x7ce3, 0x7ce4,
- 0x7ce5, 0x7ce6, 0x7ce7, 0x7ce9, 0x7cea, 0x7ceb, 0x7cec, 0x7ced,
- 0x7cee, 0x7cf0, 0x7cf1, 0x7cf2, 0x7cf3, 0x7cf4, 0x7cf5, 0x7cf6,
- 0x7cf7, 0x7cf9, 0x7cfa, 0x7cfc, 0x7cfd, 0x7cfe, 0x7cff, 0x7d00,
- 0x7d01, 0x7d02, 0x7d03, 0x7d04, 0x7d05, 0x7d06, 0x7d07, 0x7d08,
- 0x7d09, 0x7d0b, 0x7d0c, 0x7d0d, 0x7d0e, 0x7d0f, 0x7d10, 0x7d11,
- 0x7d12, 0x7d13, 0x7d14, 0x7d15, 0x7d16, 0x7d17, 0x7d18, 0x7d19,
- 0x7d1a, 0x7d1b, 0x7d1c, 0x7d1d, 0x7d1e, 0x7d1f, 0x7d21, 0x7d23,
- 0x7d24, 0x7d25, 0x7d26, 0x7d28, 0x7d29, 0x7d2a, 0x7d2c, 0x7d2d,
- 0x7d2e, 0x7d30, 0x7d31, 0x7d32, 0x7d33, 0x7d34, 0x7d35, 0x7d36,
- 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9,
- 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca,
- 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0,
- 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d,
- 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2,
- 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939,
- 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be,
- 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1,
- 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270,
- 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3,
- 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274,
- 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6,
- /* 0xbd */
- 0x7d37, 0x7d38, 0x7d39, 0x7d3a, 0x7d3b, 0x7d3c, 0x7d3d, 0x7d3e,
- 0x7d3f, 0x7d40, 0x7d41, 0x7d42, 0x7d43, 0x7d44, 0x7d45, 0x7d46,
- 0x7d47, 0x7d48, 0x7d49, 0x7d4a, 0x7d4b, 0x7d4c, 0x7d4d, 0x7d4e,
- 0x7d4f, 0x7d50, 0x7d51, 0x7d52, 0x7d53, 0x7d54, 0x7d55, 0x7d56,
- 0x7d57, 0x7d58, 0x7d59, 0x7d5a, 0x7d5b, 0x7d5c, 0x7d5d, 0x7d5e,
- 0x7d5f, 0x7d60, 0x7d61, 0x7d62, 0x7d63, 0x7d64, 0x7d65, 0x7d66,
- 0x7d67, 0x7d68, 0x7d69, 0x7d6a, 0x7d6b, 0x7d6c, 0x7d6d, 0x7d6f,
- 0x7d70, 0x7d71, 0x7d72, 0x7d73, 0x7d74, 0x7d75, 0x7d76, 0x7d78,
- 0x7d79, 0x7d7a, 0x7d7b, 0x7d7c, 0x7d7d, 0x7d7e, 0x7d7f, 0x7d80,
- 0x7d81, 0x7d82, 0x7d83, 0x7d84, 0x7d85, 0x7d86, 0x7d87, 0x7d88,
- 0x7d89, 0x7d8a, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d8e, 0x7d8f, 0x7d90,
- 0x7d91, 0x7d92, 0x7d93, 0x7d94, 0x7d95, 0x7d96, 0x7d97, 0x7d98,
- 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa,
- 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868,
- 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901,
- 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc,
- 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a,
- 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb,
- 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a,
- 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01,
- 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f,
- 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1,
- 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb,
- 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78,
- /* 0xbe */
- 0x7d99, 0x7d9a, 0x7d9b, 0x7d9c, 0x7d9d, 0x7d9e, 0x7d9f, 0x7da0,
- 0x7da1, 0x7da2, 0x7da3, 0x7da4, 0x7da5, 0x7da7, 0x7da8, 0x7da9,
- 0x7daa, 0x7dab, 0x7dac, 0x7dad, 0x7daf, 0x7db0, 0x7db1, 0x7db2,
- 0x7db3, 0x7db4, 0x7db5, 0x7db6, 0x7db7, 0x7db8, 0x7db9, 0x7dba,
- 0x7dbb, 0x7dbc, 0x7dbd, 0x7dbe, 0x7dbf, 0x7dc0, 0x7dc1, 0x7dc2,
- 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dc7, 0x7dc8, 0x7dc9, 0x7dca,
- 0x7dcb, 0x7dcc, 0x7dcd, 0x7dce, 0x7dcf, 0x7dd0, 0x7dd1, 0x7dd2,
- 0x7dd3, 0x7dd4, 0x7dd5, 0x7dd6, 0x7dd7, 0x7dd8, 0x7dd9, 0x7dda,
- 0x7ddb, 0x7ddc, 0x7ddd, 0x7dde, 0x7ddf, 0x7de0, 0x7de1, 0x7de2,
- 0x7de3, 0x7de4, 0x7de5, 0x7de6, 0x7de7, 0x7de8, 0x7de9, 0x7dea,
- 0x7deb, 0x7dec, 0x7ded, 0x7dee, 0x7def, 0x7df0, 0x7df1, 0x7df2,
- 0x7df3, 0x7df4, 0x7df5, 0x7df6, 0x7df7, 0x7df8, 0x7df9, 0x7dfa,
- 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8,
- 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f,
- 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756,
- 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0,
- 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551,
- 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8,
- 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9,
- 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd,
- 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350,
- 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b,
- 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd,
- 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb,
- /* 0xbf */
- 0x7dfb, 0x7dfc, 0x7dfd, 0x7dfe, 0x7dff, 0x7e00, 0x7e01, 0x7e02,
- 0x7e03, 0x7e04, 0x7e05, 0x7e06, 0x7e07, 0x7e08, 0x7e09, 0x7e0a,
- 0x7e0b, 0x7e0c, 0x7e0d, 0x7e0e, 0x7e0f, 0x7e10, 0x7e11, 0x7e12,
- 0x7e13, 0x7e14, 0x7e15, 0x7e16, 0x7e17, 0x7e18, 0x7e19, 0x7e1a,
- 0x7e1b, 0x7e1c, 0x7e1d, 0x7e1e, 0x7e1f, 0x7e20, 0x7e21, 0x7e22,
- 0x7e23, 0x7e24, 0x7e25, 0x7e26, 0x7e27, 0x7e28, 0x7e29, 0x7e2a,
- 0x7e2b, 0x7e2c, 0x7e2d, 0x7e2e, 0x7e2f, 0x7e30, 0x7e31, 0x7e32,
- 0x7e33, 0x7e34, 0x7e35, 0x7e36, 0x7e37, 0x7e38, 0x7e39, 0x7e3a,
- 0x7e3c, 0x7e3d, 0x7e3e, 0x7e3f, 0x7e40, 0x7e42, 0x7e43, 0x7e44,
- 0x7e45, 0x7e46, 0x7e48, 0x7e49, 0x7e4a, 0x7e4b, 0x7e4c, 0x7e4d,
- 0x7e4e, 0x7e4f, 0x7e50, 0x7e51, 0x7e52, 0x7e53, 0x7e54, 0x7e55,
- 0x7e56, 0x7e57, 0x7e58, 0x7e59, 0x7e5a, 0x7e5b, 0x7e5c, 0x7e5d,
- 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361,
- 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a,
- 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b,
- 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760, 0x5777,
- 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3, 0x54b3,
- 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af, 0x5543,
- 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54, 0x63a7,
- 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f, 0x82e6,
- 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8, 0x80ef,
- 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321, 0x7b50,
- 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f, 0x76d4,
- 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080,
- /* 0xc0 */
- 0x7e5e, 0x7e5f, 0x7e60, 0x7e61, 0x7e62, 0x7e63, 0x7e64, 0x7e65,
- 0x7e66, 0x7e67, 0x7e68, 0x7e69, 0x7e6a, 0x7e6b, 0x7e6c, 0x7e6d,
- 0x7e6e, 0x7e6f, 0x7e70, 0x7e71, 0x7e72, 0x7e73, 0x7e74, 0x7e75,
- 0x7e76, 0x7e77, 0x7e78, 0x7e79, 0x7e7a, 0x7e7b, 0x7e7c, 0x7e7d,
- 0x7e7e, 0x7e7f, 0x7e80, 0x7e81, 0x7e83, 0x7e84, 0x7e85, 0x7e86,
- 0x7e87, 0x7e88, 0x7e89, 0x7e8a, 0x7e8b, 0x7e8c, 0x7e8d, 0x7e8e,
- 0x7e8f, 0x7e90, 0x7e91, 0x7e92, 0x7e93, 0x7e94, 0x7e95, 0x7e96,
- 0x7e97, 0x7e98, 0x7e99, 0x7e9a, 0x7e9c, 0x7e9d, 0x7e9e, 0x7eae,
- 0x7eb4, 0x7ebb, 0x7ebc, 0x7ed6, 0x7ee4, 0x7eec, 0x7ef9, 0x7f0a,
- 0x7f10, 0x7f1e, 0x7f37, 0x7f39, 0x7f3b, 0x7f3c, 0x7f3d, 0x7f3e,
- 0x7f3f, 0x7f40, 0x7f41, 0x7f43, 0x7f46, 0x7f47, 0x7f48, 0x7f49,
- 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f, 0x7f52, 0x7f53,
- 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0, 0x62ec,
- 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721, 0x814a,
- 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a, 0x680f,
- 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd, 0x89c8,
- 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc, 0x5eca,
- 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001, 0x4f6c,
- 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7, 0x956d,
- 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b, 0x7c7b,
- 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281, 0x9ece,
- 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc, 0x9ca4,
- 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389, 0x52b1,
- 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0,
- /* 0xc1 */
- 0x7f56, 0x7f59, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f60, 0x7f63,
- 0x7f64, 0x7f65, 0x7f66, 0x7f67, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6f,
- 0x7f70, 0x7f73, 0x7f75, 0x7f76, 0x7f77, 0x7f78, 0x7f7a, 0x7f7b,
- 0x7f7c, 0x7f7d, 0x7f7f, 0x7f80, 0x7f82, 0x7f83, 0x7f84, 0x7f85,
- 0x7f86, 0x7f87, 0x7f88, 0x7f89, 0x7f8b, 0x7f8d, 0x7f8f, 0x7f90,
- 0x7f91, 0x7f92, 0x7f93, 0x7f95, 0x7f96, 0x7f97, 0x7f98, 0x7f99,
- 0x7f9b, 0x7f9c, 0x7fa0, 0x7fa2, 0x7fa3, 0x7fa5, 0x7fa6, 0x7fa8,
- 0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7fb1, 0x7fb3,
- 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7, 0x7fba, 0x7fbb, 0x7fbe, 0x7fc0,
- 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc6, 0x7fc7, 0x7fc8, 0x7fc9, 0x7fcb,
- 0x7fcd, 0x7fcf, 0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd6, 0x7fd7,
- 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fe2, 0x7fe3,
- 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9,
- 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f,
- 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae,
- 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e,
- 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5,
- 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217,
- 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716,
- 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce,
- 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc,
- 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409,
- 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3,
- 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf,
- /* 0xc2 */
- 0x7fe4, 0x7fe7, 0x7fe8, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fef,
- 0x7ff2, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7, 0x7ff8, 0x7ff9, 0x7ffa,
- 0x7ffd, 0x7ffe, 0x7fff, 0x8002, 0x8007, 0x8008, 0x8009, 0x800a,
- 0x800e, 0x800f, 0x8011, 0x8013, 0x801a, 0x801b, 0x801d, 0x801e,
- 0x801f, 0x8021, 0x8023, 0x8024, 0x802b, 0x802c, 0x802d, 0x802e,
- 0x802f, 0x8030, 0x8032, 0x8034, 0x8039, 0x803a, 0x803c, 0x803e,
- 0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804e,
- 0x804f, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0x8059,
- 0x805b, 0x805c, 0x805d, 0x805e, 0x805f, 0x8060, 0x8061, 0x8062,
- 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806b, 0x806c,
- 0x806d, 0x806e, 0x806f, 0x8070, 0x8072, 0x8073, 0x8074, 0x8075,
- 0x8076, 0x8077, 0x8078, 0x8079, 0x807a, 0x807b, 0x807c, 0x807d,
- 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3,
- 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3,
- 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42,
- 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415,
- 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f,
- 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6,
- 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1,
- 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523,
- 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988,
- 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417,
- 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992,
- 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b,
- /* 0xc3 */
- 0x807e, 0x8081, 0x8082, 0x8085, 0x8088, 0x808a, 0x808d, 0x808e,
- 0x808f, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099,
- 0x809e, 0x80a3, 0x80a6, 0x80a7, 0x80a8, 0x80ac, 0x80b0, 0x80b3,
- 0x80b5, 0x80b6, 0x80b8, 0x80b9, 0x80bb, 0x80c5, 0x80c7, 0x80c8,
- 0x80c9, 0x80ca, 0x80cb, 0x80cf, 0x80d0, 0x80d1, 0x80d2, 0x80d3,
- 0x80d4, 0x80d5, 0x80d8, 0x80df, 0x80e0, 0x80e2, 0x80e3, 0x80e6,
- 0x80ee, 0x80f5, 0x80f7, 0x80f9, 0x80fb, 0x80fe, 0x80ff, 0x8100,
- 0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810b, 0x810c,
- 0x8115, 0x8117, 0x8119, 0x811b, 0x811c, 0x811d, 0x811f, 0x8120,
- 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, 0x8128,
- 0x8129, 0x812a, 0x812b, 0x812d, 0x812e, 0x8130, 0x8133, 0x8134,
- 0x8135, 0x8137, 0x8139, 0x813a, 0x813b, 0x813c, 0x813d, 0x813f,
- 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd, 0x732b,
- 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302, 0x5192,
- 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885, 0x9176,
- 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf, 0x7f8e,
- 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec, 0x840c,
- 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f, 0x772f,
- 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73, 0x79d8,
- 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720, 0x7ef5,
- 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7, 0x63cf,
- 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511, 0x706d,
- 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e, 0x879f,
- 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478,
- /* 0xc4 */
- 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149,
- 0x814d, 0x814e, 0x814f, 0x8152, 0x8156, 0x8157, 0x8158, 0x815b,
- 0x815c, 0x815d, 0x815e, 0x815f, 0x8161, 0x8162, 0x8163, 0x8164,
- 0x8166, 0x8168, 0x816a, 0x816b, 0x816c, 0x816f, 0x8172, 0x8173,
- 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185,
- 0x8186, 0x8187, 0x8189, 0x818b, 0x818c, 0x818d, 0x818e, 0x8190,
- 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819a,
- 0x819e, 0x819f, 0x81a0, 0x81a1, 0x81a2, 0x81a4, 0x81a5, 0x81a7,
- 0x81a9, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1,
- 0x81b2, 0x81b4, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0x81bc,
- 0x81bd, 0x81be, 0x81bf, 0x81c4, 0x81c5, 0x81c7, 0x81c8, 0x81c9,
- 0x81cb, 0x81cd, 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2, 0x81d3,
- 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54, 0x62b9,
- 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde, 0x964c,
- 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6, 0x6bcd,
- 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee, 0x7766,
- 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3, 0x5a1c,
- 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537,
- 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6, 0x5462,
- 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a, 0x6ce5,
- 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba, 0x852b,
- 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18, 0x917f,
- 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a, 0x954d,
- 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81,
- /* 0xc5 */
- 0x81d4, 0x81d5, 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db,
- 0x81dc, 0x81dd, 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e4,
- 0x81e5, 0x81e6, 0x81e8, 0x81e9, 0x81eb, 0x81ee, 0x81ef, 0x81f0,
- 0x81f1, 0x81f2, 0x81f5, 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa,
- 0x81fd, 0x81ff, 0x8203, 0x8207, 0x8208, 0x8209, 0x820a, 0x820b,
- 0x820e, 0x820f, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218,
- 0x8219, 0x821a, 0x821d, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227,
- 0x8229, 0x822e, 0x8232, 0x823a, 0x823c, 0x823d, 0x823f, 0x8240,
- 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824a, 0x824c,
- 0x824d, 0x824e, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255,
- 0x8256, 0x8257, 0x8259, 0x825b, 0x825c, 0x825d, 0x825e, 0x8260,
- 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8269,
- 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53,
- 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650,
- 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25,
- 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c,
- 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43,
- 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224,
- 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486,
- 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9,
- 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6,
- 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c,
- 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812,
- 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7,
- /* 0xc6 */
- 0x826a, 0x826b, 0x826c, 0x826d, 0x8271, 0x8275, 0x8276, 0x8277,
- 0x8278, 0x827b, 0x827c, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286,
- 0x8287, 0x8289, 0x828c, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296,
- 0x829a, 0x829b, 0x829e, 0x82a0, 0x82a2, 0x82a3, 0x82a7, 0x82b2,
- 0x82b5, 0x82b6, 0x82ba, 0x82bb, 0x82bc, 0x82bf, 0x82c0, 0x82c2,
- 0x82c3, 0x82c5, 0x82c6, 0x82c9, 0x82d0, 0x82d6, 0x82d9, 0x82da,
- 0x82dd, 0x82e2, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82ec, 0x82ed,
- 0x82ee, 0x82f0, 0x82f2, 0x82f3, 0x82f5, 0x82f6, 0x82f8, 0x82fa,
- 0x82fc, 0x82fd, 0x82fe, 0x82ff, 0x8300, 0x830a, 0x830b, 0x830d,
- 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831d, 0x831e,
- 0x831f, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326,
- 0x8329, 0x832a, 0x832e, 0x8330, 0x8332, 0x8337, 0x833b, 0x833d,
- 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41,
- 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2,
- 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058,
- 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4,
- 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb,
- 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9,
- 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd,
- 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4,
- 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566,
- 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77,
- 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14,
- 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390,
- /* 0xc7 */
- 0x833e, 0x833f, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834a,
- 0x834b, 0x834c, 0x834d, 0x834e, 0x8353, 0x8355, 0x8356, 0x8357,
- 0x8358, 0x8359, 0x835d, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373,
- 0x8374, 0x8375, 0x8376, 0x8379, 0x837a, 0x837e, 0x837f, 0x8380,
- 0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838a, 0x838b,
- 0x838c, 0x838d, 0x838f, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396,
- 0x8397, 0x8399, 0x839a, 0x839d, 0x839f, 0x83a1, 0x83a2, 0x83a3,
- 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83ac, 0x83ad, 0x83ae, 0x83af,
- 0x83b5, 0x83bb, 0x83be, 0x83bf, 0x83c2, 0x83c3, 0x83c4, 0x83c6,
- 0x83c8, 0x83c9, 0x83cb, 0x83cd, 0x83ce, 0x83d0, 0x83d1, 0x83d2,
- 0x83d3, 0x83d5, 0x83d7, 0x83d9, 0x83da, 0x83db, 0x83de, 0x83e2,
- 0x83e3, 0x83e4, 0x83e6, 0x83e7, 0x83e8, 0x83eb, 0x83ec, 0x83ed,
- 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343, 0x8fc1,
- 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3, 0x524d,
- 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20, 0x6b49,
- 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a, 0x62a2,
- 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54, 0x4fa8,
- 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d, 0x5207,
- 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2, 0x79e6,
- 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81, 0x9752,
- 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674, 0x6c30,
- 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb, 0x4e18,
- 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b, 0x533a,
- 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20,
- /* 0xc8 */
- 0x83ee, 0x83ef, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83fa,
- 0x83fb, 0x83fc, 0x83fe, 0x83ff, 0x8400, 0x8402, 0x8405, 0x8407,
- 0x8408, 0x8409, 0x840a, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415,
- 0x8416, 0x8417, 0x8419, 0x841a, 0x841b, 0x841e, 0x841f, 0x8420,
- 0x8421, 0x8422, 0x8423, 0x8429, 0x842a, 0x842b, 0x842c, 0x842d,
- 0x842e, 0x842f, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436,
- 0x8437, 0x8439, 0x843a, 0x843b, 0x843e, 0x843f, 0x8440, 0x8441,
- 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449, 0x844a,
- 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, 0x8450, 0x8452, 0x8453,
- 0x8454, 0x8455, 0x8456, 0x8458, 0x845d, 0x845e, 0x845f, 0x8460,
- 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846a, 0x846e,
- 0x846f, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847b, 0x847c,
- 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7, 0x6743,
- 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238, 0x529d,
- 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e, 0x96c0,
- 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4, 0x58e4,
- 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9, 0x70ed,
- 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4, 0x5203,
- 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338, 0x84c9,
- 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197, 0x63c9,
- 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982, 0x8fb1,
- 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a, 0x745e,
- 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12, 0x8428,
- 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1,
- /* 0xc9 */
- 0x847d, 0x847e, 0x847f, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485,
- 0x8486, 0x848a, 0x848d, 0x848f, 0x8490, 0x8491, 0x8492, 0x8493,
- 0x8494, 0x8495, 0x8496, 0x8498, 0x849a, 0x849b, 0x849d, 0x849e,
- 0x849f, 0x84a0, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7,
- 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84b0,
- 0x84b1, 0x84b3, 0x84b5, 0x84b6, 0x84b7, 0x84bb, 0x84bc, 0x84be,
- 0x84c0, 0x84c2, 0x84c3, 0x84c5, 0x84c6, 0x84c7, 0x84c8, 0x84cb,
- 0x84cc, 0x84ce, 0x84cf, 0x84d2, 0x84d4, 0x84d5, 0x84d7, 0x84d8,
- 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84de, 0x84e1, 0x84e2, 0x84e4,
- 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ed, 0x84ee, 0x84ef,
- 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7, 0x84f8,
- 0x84f9, 0x84fa, 0x84fb, 0x84fd, 0x84fe, 0x8500, 0x8501, 0x8502,
- 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b,
- 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802,
- 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b,
- 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b,
- 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247,
- 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a,
- 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6,
- 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c,
- 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe,
- 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5,
- 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17,
- 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3,
- /* 0xca */
- 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850a,
- 0x850b, 0x850d, 0x850e, 0x850f, 0x8510, 0x8512, 0x8514, 0x8515,
- 0x8516, 0x8518, 0x8519, 0x851b, 0x851c, 0x851d, 0x851e, 0x8520,
- 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529,
- 0x852a, 0x852d, 0x852e, 0x852f, 0x8530, 0x8531, 0x8532, 0x8533,
- 0x8534, 0x8535, 0x8536, 0x853e, 0x853f, 0x8540, 0x8541, 0x8542,
- 0x8544, 0x8545, 0x8546, 0x8547, 0x854b, 0x854c, 0x854d, 0x854e,
- 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8557,
- 0x8558, 0x855a, 0x855b, 0x855c, 0x855d, 0x855f, 0x8560, 0x8561,
- 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856a, 0x856b,
- 0x856c, 0x856d, 0x856e, 0x856f, 0x8570, 0x8571, 0x8573, 0x8575,
- 0x8576, 0x8577, 0x8578, 0x857c, 0x857d, 0x857f, 0x8580, 0x8581,
- 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee,
- 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe,
- 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2,
- 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16,
- 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc,
- 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02,
- 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88,
- 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2,
- 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f,
- 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72,
- 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f,
- 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31,
- /* 0xcb */
- 0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858a, 0x858b, 0x858c,
- 0x858d, 0x858e, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595,
- 0x8596, 0x8597, 0x8598, 0x8599, 0x859a, 0x859d, 0x859e, 0x859f,
- 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a5, 0x85a6, 0x85a7, 0x85a9,
- 0x85ab, 0x85ac, 0x85ad, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5,
- 0x85b6, 0x85b8, 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf,
- 0x85c0, 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8,
- 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85d1, 0x85d2, 0x85d4,
- 0x85d6, 0x85d7, 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dd, 0x85de,
- 0x85df, 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e5, 0x85e6, 0x85e7,
- 0x85e8, 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, 0x85f0,
- 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8,
- 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05, 0x6813,
- 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761, 0x7a0e,
- 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714, 0x70c1,
- 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d, 0x6b7b,
- 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972, 0x5df3,
- 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc, 0x8bf5,
- 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7, 0x7d20,
- 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9, 0x8083,
- 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5, 0x9ad3,
- 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59, 0x635f,
- 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22, 0x9501,
- 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854,
- /* 0xcc */
- 0x85f9, 0x85fa, 0x85fc, 0x85fd, 0x85fe, 0x8600, 0x8601, 0x8602,
- 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860a, 0x860b,
- 0x860c, 0x860d, 0x860e, 0x860f, 0x8610, 0x8612, 0x8613, 0x8614,
- 0x8615, 0x8617, 0x8618, 0x8619, 0x861a, 0x861b, 0x861c, 0x861d,
- 0x861e, 0x861f, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625,
- 0x8626, 0x8628, 0x862a, 0x862b, 0x862c, 0x862d, 0x862e, 0x862f,
- 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637,
- 0x8639, 0x863a, 0x863b, 0x863d, 0x863e, 0x863f, 0x8640, 0x8641,
- 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649,
- 0x864a, 0x864b, 0x864c, 0x8652, 0x8653, 0x8655, 0x8656, 0x8657,
- 0x8658, 0x8659, 0x865b, 0x865c, 0x865d, 0x865f, 0x8660, 0x8661,
- 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a,
- 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac, 0x53f0,
- 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a, 0x8d2a,
- 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d, 0x8c08,
- 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad, 0x6c64,
- 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6, 0x5018,
- 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4, 0x7ee6,
- 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957, 0x7279,
- 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22, 0x9511,
- 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f, 0x60d5,
- 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530, 0x751c,
- 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a, 0x8df3,
- 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3,
- /* 0xcd */
- 0x866d, 0x866f, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676,
- 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688,
- 0x8689, 0x868e, 0x868f, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696,
- 0x8697, 0x8698, 0x8699, 0x869a, 0x869b, 0x869e, 0x869f, 0x86a0,
- 0x86a1, 0x86a2, 0x86a5, 0x86a6, 0x86ab, 0x86ad, 0x86ae, 0x86b2,
- 0x86b3, 0x86b7, 0x86b8, 0x86b9, 0x86bb, 0x86bc, 0x86bd, 0x86be,
- 0x86bf, 0x86c1, 0x86c2, 0x86c3, 0x86c5, 0x86c8, 0x86cc, 0x86cd,
- 0x86d2, 0x86d3, 0x86d5, 0x86d6, 0x86d7, 0x86da, 0x86dc, 0x86dd,
- 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e5, 0x86e6, 0x86e7, 0x86e8,
- 0x86ea, 0x86eb, 0x86ec, 0x86ef, 0x86f5, 0x86f6, 0x86f7, 0x86fa,
- 0x86fb, 0x86fc, 0x86fd, 0x86ff, 0x8701, 0x8704, 0x8705, 0x8706,
- 0x870b, 0x870c, 0x870e, 0x870f, 0x8710, 0x8711, 0x8714, 0x8716,
- 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a,
- 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876,
- 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f,
- 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60,
- 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f,
- 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258,
- 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3,
- 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c,
- 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38,
- 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b,
- 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51,
- 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01,
- /* 0xce */
- 0x8719, 0x871b, 0x871d, 0x871f, 0x8720, 0x8724, 0x8726, 0x8727,
- 0x8728, 0x872a, 0x872b, 0x872c, 0x872d, 0x872f, 0x8730, 0x8732,
- 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873a, 0x873c, 0x873d,
- 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874a,
- 0x874b, 0x874d, 0x874f, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755,
- 0x8756, 0x8758, 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f,
- 0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b,
- 0x876c, 0x876d, 0x876f, 0x8771, 0x8772, 0x8773, 0x8775, 0x8777,
- 0x8778, 0x8779, 0x877a, 0x877f, 0x8780, 0x8781, 0x8784, 0x8786,
- 0x8787, 0x8789, 0x878a, 0x878c, 0x878e, 0x878f, 0x8790, 0x8791,
- 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879a, 0x879b,
- 0x879c, 0x879d, 0x879e, 0x87a0, 0x87a1, 0x87a2, 0x87a3, 0x87a4,
- 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f,
- 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f,
- 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3,
- 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b,
- 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33,
- 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1,
- 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c,
- 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7,
- 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e,
- 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff,
- 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852,
- 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a,
- /* 0xcf */
- 0x87a5, 0x87a6, 0x87a7, 0x87a9, 0x87aa, 0x87ae, 0x87b0, 0x87b1,
- 0x87b2, 0x87b4, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87bb, 0x87bc,
- 0x87be, 0x87bf, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c7,
- 0x87c8, 0x87c9, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d4,
- 0x87d5, 0x87d6, 0x87d7, 0x87d8, 0x87d9, 0x87da, 0x87dc, 0x87dd,
- 0x87de, 0x87df, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e6, 0x87e7,
- 0x87e8, 0x87e9, 0x87eb, 0x87ec, 0x87ed, 0x87ef, 0x87f0, 0x87f1,
- 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7, 0x87f8, 0x87fa,
- 0x87fb, 0x87fc, 0x87fd, 0x87ff, 0x8800, 0x8801, 0x8802, 0x8804,
- 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880b, 0x880c, 0x880d,
- 0x880e, 0x880f, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817, 0x8818,
- 0x8819, 0x881a, 0x881c, 0x881d, 0x881e, 0x881f, 0x8820, 0x8823,
- 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc, 0x7184,
- 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d, 0x4e60,
- 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f, 0x7ec6,
- 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1, 0x4fa0,
- 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528, 0x5148,
- 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237, 0x95f2,
- 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e, 0x53bf,
- 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf, 0x76f8,
- 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61, 0x7fd4,
- 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7, 0x6a61,
- 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a, 0x54ee,
- 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653,
- /* 0xd0 */
- 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882a, 0x882b,
- 0x882c, 0x882d, 0x882e, 0x882f, 0x8830, 0x8831, 0x8833, 0x8834,
- 0x8835, 0x8836, 0x8837, 0x8838, 0x883a, 0x883b, 0x883d, 0x883e,
- 0x883f, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849,
- 0x884a, 0x884b, 0x884e, 0x884f, 0x8850, 0x8851, 0x8852, 0x8853,
- 0x8855, 0x8856, 0x8858, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e,
- 0x885f, 0x8860, 0x8866, 0x8867, 0x886a, 0x886d, 0x886f, 0x8871,
- 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887a, 0x887b,
- 0x887c, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888a, 0x888c,
- 0x888e, 0x888f, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895, 0x8897,
- 0x8898, 0x8899, 0x889a, 0x889b, 0x889d, 0x889e, 0x889f, 0x88a0,
- 0x88a1, 0x88a3, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa,
- 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548, 0x6954,
- 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a, 0x90aa,
- 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9, 0x61c8,
- 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x6b23,
- 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f, 0x8165,
- 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2, 0x884c,
- 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6, 0x80f8,
- 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e, 0x673d,
- 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c, 0x9700,
- 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157, 0x53d9,
- 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea, 0x7eed,
- 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384,
- /* 0xd1 */
- 0x88ac, 0x88ae, 0x88af, 0x88b0, 0x88b2, 0x88b3, 0x88b4, 0x88b5,
- 0x88b6, 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bd, 0x88be, 0x88bf,
- 0x88c0, 0x88c3, 0x88c4, 0x88c7, 0x88c8, 0x88ca, 0x88cb, 0x88cc,
- 0x88cd, 0x88cf, 0x88d0, 0x88d1, 0x88d3, 0x88d6, 0x88d7, 0x88da,
- 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88e0, 0x88e1, 0x88e6, 0x88e7,
- 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f2,
- 0x88f5, 0x88f6, 0x88f7, 0x88fa, 0x88fb, 0x88fd, 0x88ff, 0x8900,
- 0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908, 0x8909,
- 0x890b, 0x890c, 0x890d, 0x890e, 0x890f, 0x8911, 0x8914, 0x8915,
- 0x8916, 0x8917, 0x8918, 0x891c, 0x891d, 0x891e, 0x891f, 0x8920,
- 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929, 0x892c,
- 0x892d, 0x892e, 0x892f, 0x8931, 0x8932, 0x8933, 0x8935, 0x8937,
- 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74,
- 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb,
- 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5,
- 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259,
- 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6,
- 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814,
- 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf,
- 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5,
- 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a,
- 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f,
- 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b,
- 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476,
- /* 0xd2 */
- 0x8938, 0x8939, 0x893a, 0x893b, 0x893c, 0x893d, 0x893e, 0x893f,
- 0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949,
- 0x894a, 0x894b, 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951,
- 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959,
- 0x895a, 0x895b, 0x895c, 0x895d, 0x8960, 0x8961, 0x8962, 0x8963,
- 0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b, 0x896c,
- 0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974,
- 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897c, 0x897d,
- 0x897e, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989,
- 0x898a, 0x898b, 0x898c, 0x898d, 0x898e, 0x898f, 0x8990, 0x8991,
- 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999,
- 0x899a, 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1,
- 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200,
- 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce,
- 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b,
- 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d,
- 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0,
- 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a,
- 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091,
- 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6,
- 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3,
- 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335,
- 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6,
- 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690,
- /* 0xd3 */
- 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, 0x89a8, 0x89a9,
- 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0, 0x89b1,
- 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9,
- 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89be, 0x89bf, 0x89c0, 0x89c3,
- 0x89cd, 0x89d3, 0x89d4, 0x89d5, 0x89d7, 0x89d8, 0x89d9, 0x89db,
- 0x89dd, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e4, 0x89e7, 0x89e8,
- 0x89e9, 0x89ea, 0x89ec, 0x89ed, 0x89ee, 0x89f0, 0x89f1, 0x89f2,
- 0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0x89fb,
- 0x89fc, 0x89fd, 0x89fe, 0x89ff, 0x8a01, 0x8a02, 0x8a03, 0x8a04,
- 0x8a05, 0x8a06, 0x8a08, 0x8a09, 0x8a0a, 0x8a0b, 0x8a0c, 0x8a0d,
- 0x8a0e, 0x8a0f, 0x8a10, 0x8a11, 0x8a12, 0x8a13, 0x8a14, 0x8a15,
- 0x8a16, 0x8a17, 0x8a18, 0x8a19, 0x8a1a, 0x8a1b, 0x8a1c, 0x8a1d,
- 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28, 0x83b9,
- 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8, 0x5f71,
- 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3, 0x75c8,
- 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c, 0x6c38,
- 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7, 0x5c24,
- 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149, 0x6709,
- 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2,
- 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206, 0x4f59,
- 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685, 0x4e88,
- 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed, 0x7fbd,
- 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb, 0x5cea,
- 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89,
- /* 0xd4 */
- 0x8a1e, 0x8a1f, 0x8a20, 0x8a21, 0x8a22, 0x8a23, 0x8a24, 0x8a25,
- 0x8a26, 0x8a27, 0x8a28, 0x8a29, 0x8a2a, 0x8a2b, 0x8a2c, 0x8a2d,
- 0x8a2e, 0x8a2f, 0x8a30, 0x8a31, 0x8a32, 0x8a33, 0x8a34, 0x8a35,
- 0x8a36, 0x8a37, 0x8a38, 0x8a39, 0x8a3a, 0x8a3b, 0x8a3c, 0x8a3d,
- 0x8a3f, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46,
- 0x8a47, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e, 0x8a4f,
- 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57,
- 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f,
- 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67,
- 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f,
- 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77,
- 0x8a78, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e, 0x8a7f, 0x8a80,
- 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33, 0x6e0a,
- 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95, 0x56ed,
- 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1, 0x613f,
- 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5, 0x5cb3,
- 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7, 0x5300,
- 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5, 0x5b55,
- 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0, 0x8f7d,
- 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43, 0x810f,
- 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9, 0x6fa1,
- 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5, 0x8d23,
- 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e, 0x66fe,
- 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67,
- /* 0xd5 */
- 0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85, 0x8a86, 0x8a87, 0x8a88,
- 0x8a8b, 0x8a8c, 0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a92,
- 0x8a94, 0x8a95, 0x8a96, 0x8a97, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b,
- 0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f, 0x8aa0, 0x8aa1, 0x8aa2, 0x8aa3,
- 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab,
- 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3,
- 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8, 0x8ab9, 0x8aba, 0x8abb,
- 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0, 0x8ac1, 0x8ac2, 0x8ac3,
- 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9, 0x8aca, 0x8acb,
- 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad2, 0x8ad3,
- 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, 0x8ad9, 0x8ada, 0x8adb,
- 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3,
- 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8,
- 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb,
- 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d,
- 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd,
- 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756,
- 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db,
- 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087,
- 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517,
- 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827,
- 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707,
- 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0,
- 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f,
- /* 0xd6 */
- 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb,
- 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0, 0x8af1, 0x8af2, 0x8af3,
- 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9, 0x8afa, 0x8afb,
- 0x8afc, 0x8afd, 0x8afe, 0x8aff, 0x8b00, 0x8b01, 0x8b02, 0x8b03,
- 0x8b04, 0x8b05, 0x8b06, 0x8b08, 0x8b09, 0x8b0a, 0x8b0b, 0x8b0c,
- 0x8b0d, 0x8b0e, 0x8b0f, 0x8b10, 0x8b11, 0x8b12, 0x8b13, 0x8b14,
- 0x8b15, 0x8b16, 0x8b17, 0x8b18, 0x8b19, 0x8b1a, 0x8b1b, 0x8b1c,
- 0x8b1d, 0x8b1e, 0x8b1f, 0x8b20, 0x8b21, 0x8b22, 0x8b23, 0x8b24,
- 0x8b25, 0x8b27, 0x8b28, 0x8b29, 0x8b2a, 0x8b2b, 0x8b2c, 0x8b2d,
- 0x8b2e, 0x8b2f, 0x8b30, 0x8b31, 0x8b32, 0x8b33, 0x8b34, 0x8b35,
- 0x8b36, 0x8b37, 0x8b38, 0x8b39, 0x8b3a, 0x8b3b, 0x8b3c, 0x8b3d,
- 0x8b3e, 0x8b3f, 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45,
- 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431,
- 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c,
- 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307,
- 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7,
- 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9,
- 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d,
- 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd,
- 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5,
- 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4,
- 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010,
- 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457,
- 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51,
- /* 0xd7 */
- 0x8b46, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d,
- 0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b52, 0x8b53, 0x8b54, 0x8b55,
- 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d,
- 0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65,
- 0x8b67, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6d, 0x8b6e, 0x8b6f,
- 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77,
- 0x8b78, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8b7f,
- 0x8b80, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85, 0x8b86, 0x8b87,
- 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d, 0x8b8e, 0x8b8f,
- 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95, 0x8b96, 0x8b97,
- 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, 0x8b9e, 0x8b9f,
- 0x8bac, 0x8bb1, 0x8bbb, 0x8bc7, 0x8bd0, 0x8bea, 0x8c09, 0x8c1e,
- 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd, 0x4e13,
- 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84, 0x88c5,
- 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd, 0x8d58,
- 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353, 0x684c,
- 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a, 0x5179,
- 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4,
- 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03, 0x68d5,
- 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70, 0x594f,
- 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5, 0x963b,
- 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a, 0x5c0a,
- 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c, 0x5750,
- 0x5ea7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xd8 */
- 0x8c38, 0x8c39, 0x8c3a, 0x8c3b, 0x8c3c, 0x8c3d, 0x8c3e, 0x8c3f,
- 0x8c40, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c48, 0x8c4a, 0x8c4b,
- 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54,
- 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5b, 0x8c5c, 0x8c5d, 0x8c5e,
- 0x8c5f, 0x8c60, 0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67, 0x8c68,
- 0x8c69, 0x8c6c, 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72,
- 0x8c74, 0x8c75, 0x8c76, 0x8c77, 0x8c7b, 0x8c7c, 0x8c7d, 0x8c7e,
- 0x8c7f, 0x8c80, 0x8c81, 0x8c83, 0x8c84, 0x8c86, 0x8c87, 0x8c88,
- 0x8c8b, 0x8c8d, 0x8c8e, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93,
- 0x8c95, 0x8c96, 0x8c97, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d,
- 0x8c9e, 0x8c9f, 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5,
- 0x8ca6, 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad,
- 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15, 0x4e98,
- 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f, 0x5315,
- 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4, 0x9997,
- 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c, 0x4e69,
- 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d, 0x539d,
- 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5, 0x5326,
- 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208, 0x520e,
- 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261, 0x525c,
- 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7f54,
- 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb, 0x4ede,
- 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27, 0x4f09,
- 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d,
- /* 0xd9 */
- 0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5,
- 0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd,
- 0x8cbe, 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5,
- 0x8cc6, 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd,
- 0x8cce, 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5,
- 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd,
- 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5,
- 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced,
- 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5,
- 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd,
- 0x8cfe, 0x8cff, 0x8d00, 0x8d01, 0x8d02, 0x8d03, 0x8d04, 0x8d05,
- 0x8d06, 0x8d07, 0x8d08, 0x8d09, 0x8d0a, 0x8d0b, 0x8d0c, 0x8d0d,
- 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89,
- 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94,
- 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1,
- 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e,
- 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043,
- 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9,
- 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107,
- 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46,
- 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9,
- 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156,
- 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34,
- 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc,
- /* 0xda */
- 0x8d0e, 0x8d0f, 0x8d10, 0x8d11, 0x8d12, 0x8d13, 0x8d14, 0x8d15,
- 0x8d16, 0x8d17, 0x8d18, 0x8d19, 0x8d1a, 0x8d1b, 0x8d1c, 0x8d20,
- 0x8d51, 0x8d52, 0x8d57, 0x8d5f, 0x8d65, 0x8d68, 0x8d69, 0x8d6a,
- 0x8d6c, 0x8d6e, 0x8d6f, 0x8d71, 0x8d72, 0x8d78, 0x8d79, 0x8d7a,
- 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8d7f, 0x8d80, 0x8d82, 0x8d83,
- 0x8d86, 0x8d87, 0x8d88, 0x8d89, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f,
- 0x8d90, 0x8d92, 0x8d93, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99,
- 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8da0, 0x8da1, 0x8da2,
- 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab,
- 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db2, 0x8db6, 0x8db7,
- 0x8db9, 0x8dbb, 0x8dbd, 0x8dc0, 0x8dc1, 0x8dc2, 0x8dc5, 0x8dc7,
- 0x8dc8, 0x8dc9, 0x8dca, 0x8dcd, 0x8dd0, 0x8dd2, 0x8dd3, 0x8dd4,
- 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa,
- 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce,
- 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf,
- 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6,
- 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c,
- 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b,
- 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a,
- 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369,
- 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c,
- 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674,
- 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099,
- 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba,
- /* 0xdb */
- 0x8dd5, 0x8dd8, 0x8dd9, 0x8ddc, 0x8de0, 0x8de1, 0x8de2, 0x8de5,
- 0x8de6, 0x8de7, 0x8de9, 0x8ded, 0x8dee, 0x8df0, 0x8df1, 0x8df2,
- 0x8df4, 0x8df6, 0x8dfc, 0x8dfe, 0x8dff, 0x8e00, 0x8e01, 0x8e02,
- 0x8e03, 0x8e04, 0x8e06, 0x8e07, 0x8e08, 0x8e0b, 0x8e0d, 0x8e0e,
- 0x8e10, 0x8e11, 0x8e12, 0x8e13, 0x8e15, 0x8e16, 0x8e17, 0x8e18,
- 0x8e19, 0x8e1a, 0x8e1b, 0x8e1c, 0x8e20, 0x8e21, 0x8e24, 0x8e25,
- 0x8e26, 0x8e27, 0x8e28, 0x8e2b, 0x8e2d, 0x8e30, 0x8e32, 0x8e33,
- 0x8e34, 0x8e36, 0x8e37, 0x8e38, 0x8e3b, 0x8e3c, 0x8e3e, 0x8e3f,
- 0x8e43, 0x8e45, 0x8e46, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50,
- 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e5a, 0x8e5b,
- 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0x8e63,
- 0x8e64, 0x8e65, 0x8e67, 0x8e68, 0x8e6a, 0x8e6b, 0x8e6e, 0x8e71,
- 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4, 0x90c7,
- 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb, 0x90ef,
- 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f, 0x9139,
- 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad, 0x52be,
- 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd, 0x5ef4,
- 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def, 0x574c,
- 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729, 0x572c,
- 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b, 0x5742,
- 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768, 0x576d,
- 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf, 0x57a7,
- 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9, 0x57d2,
- 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd,
- /* 0xdc */
- 0x8e73, 0x8e75, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7d,
- 0x8e7e, 0x8e80, 0x8e82, 0x8e83, 0x8e84, 0x8e86, 0x8e88, 0x8e89,
- 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e91, 0x8e92, 0x8e93,
- 0x8e95, 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0x8e9d,
- 0x8e9f, 0x8ea0, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6,
- 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8ead, 0x8eae, 0x8eb0, 0x8eb1,
- 0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8ebb,
- 0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3,
- 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb,
- 0x8ecc, 0x8ecd, 0x8ecf, 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4,
- 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc,
- 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4,
- 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819, 0x5844,
- 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880, 0x99a8,
- 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a, 0x82a8,
- 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8, 0x82be,
- 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae, 0x82cb,
- 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f, 0x82c4,
- 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f, 0x8307,
- 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3, 0x8311,
- 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c, 0x8351,
- 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331, 0x839b,
- 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340, 0x8317,
- 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365,
- /* 0xdd */
- 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec,
- 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4,
- 0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc,
- 0x8efd, 0x8efe, 0x8eff, 0x8f00, 0x8f01, 0x8f02, 0x8f03, 0x8f04,
- 0x8f05, 0x8f06, 0x8f07, 0x8f08, 0x8f09, 0x8f0a, 0x8f0b, 0x8f0c,
- 0x8f0d, 0x8f0e, 0x8f0f, 0x8f10, 0x8f11, 0x8f12, 0x8f13, 0x8f14,
- 0x8f15, 0x8f16, 0x8f17, 0x8f18, 0x8f19, 0x8f1a, 0x8f1b, 0x8f1c,
- 0x8f1d, 0x8f1e, 0x8f1f, 0x8f20, 0x8f21, 0x8f22, 0x8f23, 0x8f24,
- 0x8f25, 0x8f26, 0x8f27, 0x8f28, 0x8f29, 0x8f2a, 0x8f2b, 0x8f2c,
- 0x8f2d, 0x8f2e, 0x8f2f, 0x8f30, 0x8f31, 0x8f32, 0x8f33, 0x8f34,
- 0x8f35, 0x8f36, 0x8f37, 0x8f38, 0x8f39, 0x8f3a, 0x8f3b, 0x8f3c,
- 0x8f3d, 0x8f3e, 0x8f3f, 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44,
- 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0,
- 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385,
- 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e,
- 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807,
- 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411,
- 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea,
- 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a,
- 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c,
- 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1,
- 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba,
- 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c,
- 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a,
- /* 0xde */
- 0x8f45, 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c,
- 0x8f4d, 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54,
- 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c,
- 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64,
- 0x8f65, 0x8f6a, 0x8f80, 0x8f8c, 0x8f92, 0x8f9d, 0x8fa0, 0x8fa1,
- 0x8fa2, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7, 0x8faa, 0x8fac, 0x8fad,
- 0x8fae, 0x8faf, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb7, 0x8fb8,
- 0x8fba, 0x8fbb, 0x8fbc, 0x8fbf, 0x8fc0, 0x8fc3, 0x8fc6, 0x8fc9,
- 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fcf, 0x8fd2, 0x8fd6, 0x8fd7,
- 0x8fda, 0x8fe0, 0x8fe1, 0x8fe3, 0x8fe7, 0x8fec, 0x8fef, 0x8ff1,
- 0x8ff2, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffe,
- 0x8fff, 0x9007, 0x9008, 0x900c, 0x900e, 0x9013, 0x9015, 0x9018,
- 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564,
- 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8,
- 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7,
- 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629,
- 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955,
- 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c,
- 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322,
- 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a,
- 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc,
- 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452,
- 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c,
- 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496,
- /* 0xdf */
- 0x9019, 0x901c, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029,
- 0x902a, 0x902b, 0x902c, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034,
- 0x9037, 0x9039, 0x903a, 0x903d, 0x903f, 0x9040, 0x9043, 0x9045,
- 0x9046, 0x9048, 0x9049, 0x904a, 0x904b, 0x904c, 0x904e, 0x9054,
- 0x9055, 0x9056, 0x9059, 0x905a, 0x905c, 0x905d, 0x905e, 0x905f,
- 0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906a, 0x906b,
- 0x906c, 0x906f, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077,
- 0x9078, 0x9079, 0x907a, 0x907b, 0x907c, 0x907e, 0x9081, 0x9084,
- 0x9085, 0x9086, 0x9087, 0x9089, 0x908a, 0x908c, 0x908d, 0x908e,
- 0x908f, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909a, 0x909c,
- 0x909e, 0x909f, 0x90a0, 0x90a4, 0x90a5, 0x90a7, 0x90a8, 0x90a9,
- 0x90ab, 0x90ad, 0x90b2, 0x90b7, 0x90bc, 0x90bd, 0x90bf, 0x90c0,
- 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0, 0x64d7,
- 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2, 0x7519,
- 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb, 0x5412,
- 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443,
- 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477,
- 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466, 0x549d,
- 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6, 0x54d3,
- 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc, 0x54d9,
- 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf, 0x54de,
- 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522, 0x5523,
- 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5, 0x5549,
- 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c,
- /* 0xe0 */
- 0x90c2, 0x90c3, 0x90c6, 0x90c8, 0x90c9, 0x90cb, 0x90cc, 0x90cd,
- 0x90d2, 0x90d4, 0x90d5, 0x90d6, 0x90d8, 0x90d9, 0x90da, 0x90de,
- 0x90df, 0x90e0, 0x90e3, 0x90e4, 0x90e5, 0x90e9, 0x90ea, 0x90ec,
- 0x90ee, 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f5, 0x90f6, 0x90f7,
- 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90ff, 0x9100, 0x9101, 0x9103,
- 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910a, 0x910b, 0x910c,
- 0x910d, 0x910e, 0x910f, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114,
- 0x9115, 0x9116, 0x9117, 0x9118, 0x911a, 0x911b, 0x911c, 0x911d,
- 0x911f, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127, 0x9128,
- 0x9129, 0x912a, 0x912b, 0x912c, 0x912d, 0x912e, 0x9130, 0x9132,
- 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913a, 0x913b,
- 0x913c, 0x913d, 0x913e, 0x913f, 0x9140, 0x9141, 0x9142, 0x9144,
- 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555c,
- 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581, 0x559f,
- 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be, 0x5594,
- 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb, 0x55ec,
- 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2, 0x55f3,
- 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e, 0x5608,
- 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627, 0x562d,
- 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659, 0x565c,
- 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b, 0x567c,
- 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1, 0x56f5,
- 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c, 0x5e0f,
- 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c,
- /* 0xe1 */
- 0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156,
- 0x9158, 0x9159, 0x915b, 0x915c, 0x915f, 0x9160, 0x9166, 0x9167,
- 0x9168, 0x916b, 0x916d, 0x9173, 0x917a, 0x917b, 0x917c, 0x9180,
- 0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918a, 0x918e,
- 0x918f, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199,
- 0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0x91a4, 0x91a5,
- 0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91ab, 0x91ac, 0x91b0, 0x91b1,
- 0x91b2, 0x91b3, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91bb, 0x91bc,
- 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4,
- 0x91c5, 0x91c6, 0x91c8, 0x91cb, 0x91d0, 0x91d2, 0x91d3, 0x91d4,
- 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dd,
- 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5,
- 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a,
- 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a,
- 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3,
- 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02,
- 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b,
- 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d,
- 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d,
- 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89,
- 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc,
- 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3,
- 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2,
- 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa,
- /* 0xe2 */
- 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed,
- 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5,
- 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd,
- 0x91fe, 0x91ff, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205,
- 0x9206, 0x9207, 0x9208, 0x9209, 0x920a, 0x920b, 0x920c, 0x920d,
- 0x920e, 0x920f, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215,
- 0x9216, 0x9217, 0x9218, 0x9219, 0x921a, 0x921b, 0x921c, 0x921d,
- 0x921e, 0x921f, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x9225,
- 0x9226, 0x9227, 0x9228, 0x9229, 0x922a, 0x922b, 0x922c, 0x922d,
- 0x922e, 0x922f, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235,
- 0x9236, 0x9237, 0x9238, 0x9239, 0x923a, 0x923b, 0x923c, 0x923d,
- 0x923e, 0x923f, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245,
- 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315,
- 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d,
- 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7,
- 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
- 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a,
- 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91,
- 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3,
- 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4,
- 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4,
- 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035,
- 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f,
- 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042,
- /* 0xe3 */
- 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d,
- 0x924e, 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255,
- 0x9256, 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d,
- 0x925e, 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265,
- 0x9266, 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d,
- 0x926e, 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276,
- 0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e,
- 0x927f, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x9286,
- 0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d, 0x928f,
- 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 0x9297,
- 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, 0x929e, 0x929f,
- 0x92a0, 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7,
- 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083, 0x6092,
- 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8, 0x60c6,
- 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4, 0x6100,
- 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7, 0x61b7,
- 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1, 0x95f3,
- 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606, 0x9608,
- 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615, 0x9616,
- 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35, 0x6c54,
- 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c, 0x6c68,
- 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad,
- 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa,
- 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe,
- /* 0xe4 */
- 0x92a8, 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92af, 0x92b0,
- 0x92b1, 0x92b2, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8,
- 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0,
- 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c9,
- 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1,
- 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8, 0x92d9,
- 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0, 0x92e1,
- 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8, 0x92e9,
- 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, 0x92f1,
- 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8, 0x92f9,
- 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x92ff, 0x9300, 0x9301,
- 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308, 0x9309,
- 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04, 0x6d19,
- 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f, 0x6d52,
- 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e, 0x6d93,
- 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7, 0x6dc5,
- 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd, 0x6dd9,
- 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e, 0x6e6b,
- 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25, 0x6e44,
- 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5, 0x6ea7,
- 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f, 0x6ec2,
- 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9, 0x6f2f,
- 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89, 0x6f8d,
- 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1,
- /* 0xe5 */
- 0x930a, 0x930b, 0x930c, 0x930d, 0x930e, 0x930f, 0x9310, 0x9311,
- 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319,
- 0x931a, 0x931b, 0x931c, 0x931d, 0x931e, 0x931f, 0x9320, 0x9321,
- 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329,
- 0x932a, 0x932b, 0x932c, 0x932d, 0x932e, 0x932f, 0x9330, 0x9331,
- 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339,
- 0x933a, 0x933b, 0x933c, 0x933d, 0x933f, 0x9340, 0x9341, 0x9342,
- 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934a,
- 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351, 0x9352,
- 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, 0x935a,
- 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361, 0x9362,
- 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x936b,
- 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde,
- 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f,
- 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f,
- 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07,
- 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6,
- 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d,
- 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051,
- 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074,
- 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56,
- 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66,
- 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e,
- 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3,
- /* 0xe6 */
- 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371, 0x9372, 0x9373,
- 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937a, 0x937b,
- 0x937c, 0x937d, 0x937e, 0x937f, 0x9380, 0x9381, 0x9382, 0x9383,
- 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b,
- 0x938c, 0x938d, 0x938e, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394,
- 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c,
- 0x939d, 0x939e, 0x939f, 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4,
- 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac,
- 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3, 0x93b4,
- 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc,
- 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3, 0x93c4,
- 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93cb, 0x93cc, 0x93cd,
- 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af,
- 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8,
- 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13,
- 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec,
- 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2,
- 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8,
- 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15,
- 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75,
- 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85,
- 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b,
- 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7,
- 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9,
- /* 0xe7 */
- 0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3, 0x93d4, 0x93d5,
- 0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db, 0x93dc, 0x93dd, 0x93de,
- 0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3, 0x93e4, 0x93e5, 0x93e6,
- 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed, 0x93ee,
- 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6,
- 0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0x93fd, 0x93fe,
- 0x93ff, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406,
- 0x9407, 0x9408, 0x9409, 0x940a, 0x940b, 0x940c, 0x940d, 0x940e,
- 0x940f, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, 0x9416,
- 0x9417, 0x9418, 0x9419, 0x941a, 0x941b, 0x941c, 0x941d, 0x941e,
- 0x941f, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9426,
- 0x9427, 0x9428, 0x9429, 0x942a, 0x942b, 0x942c, 0x942d, 0x942e,
- 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb,
- 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8,
- 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa,
- 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08, 0x7f0b,
- 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c, 0x7f1b,
- 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
- 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31, 0x7f32,
- 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095, 0x738e,
- 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1, 0x73b7,
- 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c, 0x740a,
- 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a, 0x745b,
- 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c,
- /* 0xe8 */
- 0x942f, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436,
- 0x9437, 0x9438, 0x9439, 0x943a, 0x943b, 0x943c, 0x943d, 0x943f,
- 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447,
- 0x9448, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f,
- 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457,
- 0x9458, 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f,
- 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467,
- 0x9468, 0x9469, 0x946a, 0x946c, 0x946d, 0x946e, 0x946f, 0x9470,
- 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, 0x9478,
- 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, 0x947e, 0x947f, 0x9480,
- 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498, 0x94c7,
- 0x94cf, 0x94d3, 0x94d4, 0x94da, 0x94e6, 0x94fb, 0x951c, 0x9520,
- 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459, 0x7477,
- 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487, 0x748b,
- 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba, 0x97ea,
- 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769, 0x67a5,
- 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8, 0x679e,
- 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8, 0x680a,
- 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3, 0x67dd,
- 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd, 0x6832,
- 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864, 0x6883,
- 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e, 0x684a,
- 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893, 0x686b,
- 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9,
- /* 0xe9 */
- 0x9527, 0x9533, 0x953d, 0x9543, 0x9548, 0x954b, 0x9555, 0x955a,
- 0x9560, 0x956e, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957a,
- 0x957b, 0x957c, 0x957d, 0x957e, 0x9580, 0x9581, 0x9582, 0x9583,
- 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958a, 0x958b,
- 0x958c, 0x958d, 0x958e, 0x958f, 0x9590, 0x9591, 0x9592, 0x9593,
- 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959a, 0x959b,
- 0x959c, 0x959d, 0x959e, 0x959f, 0x95a0, 0x95a1, 0x95a2, 0x95a3,
- 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0x95aa, 0x95ab,
- 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1, 0x95b2, 0x95b3,
- 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9, 0x95ba, 0x95bb,
- 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1, 0x95c2, 0x95c3,
- 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0x95ca, 0x95cb,
- 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971,
- 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998,
- 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966,
- 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4,
- 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff,
- 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e,
- 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28,
- 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337,
- 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d,
- 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72,
- 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c,
- 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b,
- /* 0xea */
- 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, 0x95d3,
- 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, 0x95db,
- 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, 0x95e3,
- 0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95ec, 0x95ff, 0x9607, 0x9613,
- 0x9618, 0x961b, 0x961e, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626,
- 0x9627, 0x9628, 0x9629, 0x962b, 0x962c, 0x962d, 0x962f, 0x9630,
- 0x9637, 0x9638, 0x9639, 0x963a, 0x963e, 0x9641, 0x9643, 0x964a,
- 0x964e, 0x964f, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0x9658,
- 0x9659, 0x965a, 0x965c, 0x965d, 0x965e, 0x9660, 0x9663, 0x9665,
- 0x9666, 0x966b, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9673,
- 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, 0x967e, 0x967f,
- 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968a,
- 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217,
- 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7,
- 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee,
- 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600,
- 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006,
- 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677,
- 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6,
- 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45,
- 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7,
- 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e,
- 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b,
- 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0,
- /* 0xeb */
- 0x968c, 0x968e, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969a,
- 0x969b, 0x969d, 0x969e, 0x969f, 0x96a0, 0x96a1, 0x96a2, 0x96a3,
- 0x96a4, 0x96a5, 0x96a6, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac,
- 0x96ad, 0x96ae, 0x96af, 0x96b1, 0x96b2, 0x96b4, 0x96b5, 0x96b7,
- 0x96b8, 0x96ba, 0x96bb, 0x96bf, 0x96c2, 0x96c3, 0x96c8, 0x96ca,
- 0x96cb, 0x96d0, 0x96d1, 0x96d3, 0x96d4, 0x96d6, 0x96d7, 0x96d8,
- 0x96d9, 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96de, 0x96df, 0x96e1,
- 0x96e2, 0x96e3, 0x96e4, 0x96e5, 0x96e6, 0x96e7, 0x96eb, 0x96ec,
- 0x96ed, 0x96ee, 0x96f0, 0x96f1, 0x96f2, 0x96f4, 0x96f5, 0x96f8,
- 0x96fa, 0x96fb, 0x96fc, 0x96fd, 0x96ff, 0x9702, 0x9703, 0x9705,
- 0x970a, 0x970b, 0x970c, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715,
- 0x9717, 0x9718, 0x9719, 0x971a, 0x971b, 0x971d, 0x971f, 0x9720,
- 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9,
- 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19, 0x6c1a,
- 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555, 0x656b,
- 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f, 0x809c,
- 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad, 0x80b4,
- 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2, 0x80c4,
- 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1, 0x80f4,
- 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112, 0x8c5a,
- 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c, 0x8153,
- 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c, 0x817d,
- 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191, 0x6ed5,
- 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb,
- /* 0xec */
- 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728,
- 0x9729, 0x972b, 0x972c, 0x972e, 0x972f, 0x9731, 0x9733, 0x9734,
- 0x9735, 0x9736, 0x9737, 0x973a, 0x973b, 0x973c, 0x973d, 0x973f,
- 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747,
- 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f,
- 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975a, 0x975c,
- 0x975d, 0x975f, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976a,
- 0x976b, 0x976c, 0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0x9772,
- 0x9775, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977d, 0x977e,
- 0x977f, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, 0x9787,
- 0x9788, 0x9789, 0x978a, 0x978c, 0x978e, 0x978f, 0x9790, 0x9793,
- 0x9795, 0x9796, 0x9797, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d,
- 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46, 0x6b59,
- 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3, 0x5f40,
- 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6, 0x65c4,
- 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c, 0x7096,
- 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8, 0x70ca,
- 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c, 0x7168,
- 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3, 0x71b5,
- 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d, 0x7228,
- 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243, 0x6248,
- 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c, 0x7953,
- 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a, 0x7985,
- 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0,
- /* 0xed */
- 0x979e, 0x979f, 0x97a1, 0x97a2, 0x97a4, 0x97a5, 0x97a6, 0x97a7,
- 0x97a8, 0x97a9, 0x97aa, 0x97ac, 0x97ae, 0x97b0, 0x97b1, 0x97b3,
- 0x97b5, 0x97b6, 0x97b7, 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc,
- 0x97bd, 0x97be, 0x97bf, 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4,
- 0x97c5, 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc,
- 0x97cd, 0x97ce, 0x97cf, 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4,
- 0x97d5, 0x97d6, 0x97d7, 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc,
- 0x97dd, 0x97de, 0x97df, 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4,
- 0x97e5, 0x97e8, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f4,
- 0x97f7, 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe,
- 0x97ff, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806,
- 0x9807, 0x9808, 0x9809, 0x980a, 0x980b, 0x980c, 0x980d, 0x980e,
- 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab,
- 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206,
- 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800,
- 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d,
- 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823,
- 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
- 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1,
- 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec,
- 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b,
- 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707,
- 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738,
- 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768,
- /* 0xee */
- 0x980f, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816,
- 0x9817, 0x9818, 0x9819, 0x981a, 0x981b, 0x981c, 0x981d, 0x981e,
- 0x981f, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826,
- 0x9827, 0x9828, 0x9829, 0x982a, 0x982b, 0x982c, 0x982d, 0x982e,
- 0x982f, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836,
- 0x9837, 0x9838, 0x9839, 0x983a, 0x983b, 0x983c, 0x983d, 0x983e,
- 0x983f, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846,
- 0x9847, 0x9848, 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e,
- 0x984f, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856,
- 0x9857, 0x9858, 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e,
- 0x985f, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866,
- 0x9867, 0x9868, 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e,
- 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791,
- 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e,
- 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61,
- 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e,
- 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a,
- 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a,
- 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac,
- 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9,
- 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca,
- 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5,
- 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0,
- 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea,
- /* 0xef */
- 0x986f, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988b, 0x988e,
- 0x9892, 0x9895, 0x9899, 0x98a3, 0x98a8, 0x98a9, 0x98aa, 0x98ab,
- 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3,
- 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb,
- 0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3,
- 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0x98cb,
- 0x98cc, 0x98cd, 0x98cf, 0x98d0, 0x98d4, 0x98d6, 0x98d7, 0x98db,
- 0x98dc, 0x98dd, 0x98e0, 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5,
- 0x98e6, 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef,
- 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7,
- 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x98ff,
- 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, 0x9907,
- 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5, 0x94f7,
- 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506, 0x9507,
- 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513, 0x9514,
- 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f, 0x9522,
- 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534, 0x9536,
- 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535, 0x9544,
- 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552, 0x9553,
- 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e, 0x955f,
- 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568,
- 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572, 0x9573,
- 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3, 0x79eb,
- 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14,
- /* 0xf0 */
- 0x9908, 0x9909, 0x990a, 0x990b, 0x990c, 0x990e, 0x990f, 0x9911,
- 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919,
- 0x991a, 0x991b, 0x991c, 0x991d, 0x991e, 0x991f, 0x9920, 0x9921,
- 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929,
- 0x992a, 0x992b, 0x992c, 0x992d, 0x992f, 0x9930, 0x9931, 0x9932,
- 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993a,
- 0x993b, 0x993c, 0x993d, 0x993e, 0x993f, 0x9940, 0x9941, 0x9942,
- 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a,
- 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9952,
- 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b, 0x995c,
- 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9964, 0x9966,
- 0x9973, 0x9978, 0x9979, 0x997b, 0x997e, 0x9982, 0x9983, 0x9989,
- 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688, 0x768e,
- 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20, 0x9e22,
- 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31, 0x9e36,
- 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42, 0x9e44,
- 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e51,
- 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63, 0x9e66,
- 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71, 0x9e6d,
- 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac, 0x75a3,
- 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3, 0x75c2,
- 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb, 0x75e7,
- 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605, 0x760c,
- 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619,
- /* 0xf1 */
- 0x998c, 0x998e, 0x999a, 0x999b, 0x999c, 0x999d, 0x999e, 0x999f,
- 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a6, 0x99a7, 0x99a9,
- 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, 0x99b0, 0x99b1,
- 0x99b2, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, 0x99b8, 0x99b9,
- 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99be, 0x99bf, 0x99c0, 0x99c1,
- 0x99c2, 0x99c3, 0x99c4, 0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9,
- 0x99ca, 0x99cb, 0x99cc, 0x99cd, 0x99ce, 0x99cf, 0x99d0, 0x99d1,
- 0x99d2, 0x99d3, 0x99d4, 0x99d5, 0x99d6, 0x99d7, 0x99d8, 0x99d9,
- 0x99da, 0x99db, 0x99dc, 0x99dd, 0x99de, 0x99df, 0x99e0, 0x99e1,
- 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, 0x99e8, 0x99e9,
- 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, 0x99f0, 0x99f1,
- 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, 0x99f8, 0x99f9,
- 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f,
- 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c,
- 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80,
- 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad,
- 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2,
- 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5,
- 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919,
- 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966,
- 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014,
- 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
- 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052,
- 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,
- /* 0xf2 */
- 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x99ff, 0x9a00, 0x9a01,
- 0x9a02, 0x9a03, 0x9a04, 0x9a05, 0x9a06, 0x9a07, 0x9a08, 0x9a09,
- 0x9a0a, 0x9a0b, 0x9a0c, 0x9a0d, 0x9a0e, 0x9a0f, 0x9a10, 0x9a11,
- 0x9a12, 0x9a13, 0x9a14, 0x9a15, 0x9a16, 0x9a17, 0x9a18, 0x9a19,
- 0x9a1a, 0x9a1b, 0x9a1c, 0x9a1d, 0x9a1e, 0x9a1f, 0x9a20, 0x9a21,
- 0x9a22, 0x9a23, 0x9a24, 0x9a25, 0x9a26, 0x9a27, 0x9a28, 0x9a29,
- 0x9a2a, 0x9a2b, 0x9a2c, 0x9a2d, 0x9a2e, 0x9a2f, 0x9a30, 0x9a31,
- 0x9a32, 0x9a33, 0x9a34, 0x9a35, 0x9a36, 0x9a37, 0x9a38, 0x9a39,
- 0x9a3a, 0x9a3b, 0x9a3c, 0x9a3d, 0x9a3e, 0x9a3f, 0x9a40, 0x9a41,
- 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0x9a47, 0x9a48, 0x9a49,
- 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51,
- 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56, 0x9a57, 0x9a58, 0x9a59,
- 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e,
- 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c,
- 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b,
- 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6,
- 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9,
- 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0,
- 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707,
- 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e,
- 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729,
- 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760,
- 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764,
- 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2,
- /* 0xf3 */
- 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, 0x9a5f, 0x9a60, 0x9a61,
- 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68, 0x9a69,
- 0x9a6a, 0x9a6b, 0x9a72, 0x9a83, 0x9a89, 0x9a8d, 0x9a8e, 0x9a94,
- 0x9a95, 0x9a99, 0x9aa6, 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad,
- 0x9aae, 0x9aaf, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab9, 0x9abb,
- 0x9abd, 0x9abe, 0x9abf, 0x9ac3, 0x9ac4, 0x9ac6, 0x9ac7, 0x9ac8,
- 0x9ac9, 0x9aca, 0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad2, 0x9ad4,
- 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add,
- 0x9ade, 0x9ae0, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae7, 0x9ae8,
- 0x9ae9, 0x9aea, 0x9aec, 0x9aee, 0x9af0, 0x9af1, 0x9af2, 0x9af3,
- 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9afa, 0x9afc, 0x9afd,
- 0x9afe, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b04, 0x9b05, 0x9b06,
- 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab, 0x87e5,
- 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1, 0x87c0,
- 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813, 0x87fe,
- 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42, 0x7f44,
- 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04, 0x7b15,
- 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19, 0x7b2e,
- 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e, 0x7b58,
- 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b,
- 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac,
- 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4,
- 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6, 0x7bea,
- 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b,
- /* 0xf4 */
- 0x9b07, 0x9b09, 0x9b0a, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b10,
- 0x9b11, 0x9b12, 0x9b14, 0x9b15, 0x9b16, 0x9b17, 0x9b18, 0x9b19,
- 0x9b1a, 0x9b1b, 0x9b1c, 0x9b1d, 0x9b1e, 0x9b20, 0x9b21, 0x9b22,
- 0x9b24, 0x9b25, 0x9b26, 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2b,
- 0x9b2c, 0x9b2d, 0x9b2e, 0x9b30, 0x9b31, 0x9b33, 0x9b34, 0x9b35,
- 0x9b36, 0x9b37, 0x9b38, 0x9b39, 0x9b3a, 0x9b3d, 0x9b3e, 0x9b3f,
- 0x9b40, 0x9b46, 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4e, 0x9b50, 0x9b52,
- 0x9b53, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59, 0x9b5a, 0x9b5b,
- 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61, 0x9b62, 0x9b63,
- 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69, 0x9b6a, 0x9b6b,
- 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71, 0x9b72, 0x9b73,
- 0x9b74, 0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79, 0x9b7a, 0x9b7b,
- 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe, 0x8201,
- 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223, 0x822d,
- 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234, 0x823e,
- 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268, 0x887e,
- 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f, 0x7fa7,
- 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d, 0x7c9c,
- 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7, 0x7ccc,
- 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8, 0x7fbf,
- 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee, 0x7ff3,
- 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8, 0x9eb4,
- 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d, 0x8c47,
- 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164,
- /* 0xf5 */
- 0x9b7c, 0x9b7d, 0x9b7e, 0x9b7f, 0x9b80, 0x9b81, 0x9b82, 0x9b83,
- 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a, 0x9b8b,
- 0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b92, 0x9b93,
- 0x9b94, 0x9b95, 0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a, 0x9b9b,
- 0x9b9c, 0x9b9d, 0x9b9e, 0x9b9f, 0x9ba0, 0x9ba1, 0x9ba2, 0x9ba3,
- 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab,
- 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3,
- 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb,
- 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3,
- 0x9bc4, 0x9bc5, 0x9bc6, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb,
- 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3,
- 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb,
- 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172,
- 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2,
- 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba,
- 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5,
- 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde,
- 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3,
- 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f,
- 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35,
- 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a,
- 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94,
- 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98,
- 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc,
- /* 0xf6 */
- 0x9bdc, 0x9bdd, 0x9bde, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3,
- 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb,
- 0x9bec, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3,
- 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb,
- 0x9bfc, 0x9bfd, 0x9bfe, 0x9bff, 0x9c00, 0x9c01, 0x9c02, 0x9c03,
- 0x9c04, 0x9c05, 0x9c06, 0x9c07, 0x9c08, 0x9c09, 0x9c0a, 0x9c0b,
- 0x9c0c, 0x9c0d, 0x9c0e, 0x9c0f, 0x9c10, 0x9c11, 0x9c12, 0x9c13,
- 0x9c14, 0x9c15, 0x9c16, 0x9c17, 0x9c18, 0x9c19, 0x9c1a, 0x9c1b,
- 0x9c1c, 0x9c1d, 0x9c1e, 0x9c1f, 0x9c20, 0x9c21, 0x9c22, 0x9c23,
- 0x9c24, 0x9c25, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c2b,
- 0x9c2c, 0x9c2d, 0x9c2e, 0x9c2f, 0x9c30, 0x9c31, 0x9c32, 0x9c33,
- 0x9c34, 0x9c35, 0x9c36, 0x9c37, 0x9c38, 0x9c39, 0x9c3a, 0x9c3b,
- 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3,
- 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d,
- 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88,
- 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc,
- 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8,
- 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82,
- 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90,
- 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f,
- 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8,
- 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3,
- 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd,
- 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb,
- /* 0xf7 */
- 0x9c3c, 0x9c3d, 0x9c3e, 0x9c3f, 0x9c40, 0x9c41, 0x9c42, 0x9c43,
- 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b,
- 0x9c4c, 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0x9c53,
- 0x9c54, 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b,
- 0x9c5c, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0x9c62, 0x9c63,
- 0x9c64, 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69, 0x9c6a, 0x9c6b,
- 0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73,
- 0x9c74, 0x9c75, 0x9c76, 0x9c77, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b,
- 0x9c7d, 0x9c7e, 0x9c80, 0x9c83, 0x9c84, 0x9c89, 0x9c8a, 0x9c8c,
- 0x9c8f, 0x9c93, 0x9c96, 0x9c97, 0x9c98, 0x9c99, 0x9c9d, 0x9caa,
- 0x9cac, 0x9caf, 0x9cb9, 0x9cbe, 0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2,
- 0x9cc8, 0x9cc9, 0x9cd1, 0x9cd2, 0x9cda, 0x9cdb, 0x9ce0, 0x9ce1,
- 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5,
- 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2, 0x977c,
- 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3, 0x97b2,
- 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba, 0x9abc,
- 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1, 0x9b45,
- 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8, 0x990d,
- 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb,
- 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f, 0x9b23,
- 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b, 0x9e92,
- 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0, 0x9edf,
- 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22, 0x9f2c,
- 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44,
- /* 0xf8 */
- 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea,
- 0x9ceb, 0x9cec, 0x9ced, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2,
- 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa,
- 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9cff, 0x9d00, 0x9d01, 0x9d02,
- 0x9d03, 0x9d04, 0x9d05, 0x9d06, 0x9d07, 0x9d08, 0x9d09, 0x9d0a,
- 0x9d0b, 0x9d0c, 0x9d0d, 0x9d0e, 0x9d0f, 0x9d10, 0x9d11, 0x9d12,
- 0x9d13, 0x9d14, 0x9d15, 0x9d16, 0x9d17, 0x9d18, 0x9d19, 0x9d1a,
- 0x9d1b, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d1f, 0x9d20, 0x9d21, 0x9d22,
- 0x9d23, 0x9d24, 0x9d25, 0x9d26, 0x9d27, 0x9d28, 0x9d29, 0x9d2a,
- 0x9d2b, 0x9d2c, 0x9d2d, 0x9d2e, 0x9d2f, 0x9d30, 0x9d31, 0x9d32,
- 0x9d33, 0x9d34, 0x9d35, 0x9d36, 0x9d37, 0x9d38, 0x9d39, 0x9d3a,
- 0x9d3b, 0x9d3c, 0x9d3d, 0x9d3e, 0x9d3f, 0x9d40, 0x9d41, 0x9d42,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xf9 */
- 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, 0x9d48, 0x9d49, 0x9d4a,
- 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, 0x9d50, 0x9d51, 0x9d52,
- 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0x9d5a,
- 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f, 0x9d60, 0x9d61, 0x9d62,
- 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a,
- 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d72,
- 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a,
- 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9d7f, 0x9d80, 0x9d81, 0x9d82,
- 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88, 0x9d89, 0x9d8a,
- 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, 0x9d91, 0x9d92,
- 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9d99, 0x9d9a,
- 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0x9da1, 0x9da2,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xfa */
- 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9, 0x9daa,
- 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1, 0x9db2,
- 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba,
- 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2,
- 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca,
- 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2,
- 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9, 0x9dda,
- 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1, 0x9de2,
- 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9, 0x9dea,
- 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1, 0x9df2,
- 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0x9dfa,
- 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9dff, 0x9e00, 0x9e01, 0x9e02,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xfb */
- 0x9e03, 0x9e04, 0x9e05, 0x9e06, 0x9e07, 0x9e08, 0x9e09, 0x9e0a,
- 0x9e0b, 0x9e0c, 0x9e0d, 0x9e0e, 0x9e0f, 0x9e10, 0x9e11, 0x9e12,
- 0x9e13, 0x9e14, 0x9e15, 0x9e16, 0x9e17, 0x9e18, 0x9e19, 0x9e1a,
- 0x9e1b, 0x9e1c, 0x9e1d, 0x9e1e, 0x9e24, 0x9e27, 0x9e2e, 0x9e30,
- 0x9e34, 0x9e3b, 0x9e3c, 0x9e40, 0x9e4d, 0x9e50, 0x9e52, 0x9e53,
- 0x9e54, 0x9e56, 0x9e59, 0x9e5d, 0x9e5f, 0x9e60, 0x9e61, 0x9e62,
- 0x9e65, 0x9e6e, 0x9e6f, 0x9e72, 0x9e74, 0x9e75, 0x9e76, 0x9e77,
- 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, 0x9e80, 0x9e81,
- 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e89, 0x9e8a, 0x9e8c, 0x9e8d,
- 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e94, 0x9e95, 0x9e96, 0x9e97,
- 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9e, 0x9ea0, 0x9ea1,
- 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea7, 0x9ea8, 0x9ea9, 0x9eaa,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xfc */
- 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2,
- 0x9eb3, 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb9, 0x9eba, 0x9ebc, 0x9ebf,
- 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8,
- 0x9eca, 0x9ecb, 0x9ecc, 0x9ed0, 0x9ed2, 0x9ed3, 0x9ed5, 0x9ed6,
- 0x9ed7, 0x9ed9, 0x9eda, 0x9ede, 0x9ee1, 0x9ee3, 0x9ee4, 0x9ee6,
- 0x9ee8, 0x9eeb, 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2,
- 0x9ef3, 0x9ef4, 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9efa, 0x9efd,
- 0x9eff, 0x9f00, 0x9f01, 0x9f02, 0x9f03, 0x9f04, 0x9f05, 0x9f06,
- 0x9f07, 0x9f08, 0x9f09, 0x9f0a, 0x9f0c, 0x9f0f, 0x9f11, 0x9f12,
- 0x9f14, 0x9f15, 0x9f16, 0x9f18, 0x9f1a, 0x9f1b, 0x9f1c, 0x9f1d,
- 0x9f1e, 0x9f1f, 0x9f21, 0x9f23, 0x9f24, 0x9f25, 0x9f26, 0x9f27,
- 0x9f28, 0x9f29, 0x9f2a, 0x9f2b, 0x9f2d, 0x9f2e, 0x9f30, 0x9f31,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xfd */
- 0x9f32, 0x9f33, 0x9f34, 0x9f35, 0x9f36, 0x9f38, 0x9f3a, 0x9f3c,
- 0x9f3f, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f45, 0x9f46, 0x9f47,
- 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f,
- 0x9f52, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f59,
- 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, 0x9f5f, 0x9f60, 0x9f61,
- 0x9f62, 0x9f63, 0x9f64, 0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69,
- 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71,
- 0x9f72, 0x9f73, 0x9f74, 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x9f79,
- 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f81, 0x9f82, 0x9f8d,
- 0x9f8e, 0x9f8f, 0x9f90, 0x9f91, 0x9f92, 0x9f93, 0x9f94, 0x9f95,
- 0x9f96, 0x9f97, 0x9f98, 0x9f9c, 0x9f9d, 0x9f9e, 0x9fa1, 0x9fa2,
- 0x9fa3, 0x9fa4, 0x9fa5, 0xf92c, 0xf979, 0xf995, 0xf9e7, 0xf9f1,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xfe */
- 0xfa0c, 0xfa0d, 0xfa0e, 0xfa0f, 0xfa11, 0xfa13, 0xfa14, 0xfa18,
- 0xfa1f, 0xfa20, 0xfa21, 0xfa23, 0xfa24, 0xfa27, 0xfa28, 0xfa29,
-};
-
-static int
-gbk_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = s[0];
- if ((c1 >= 0x81 && c1 <= 0xfe)) {
- if (n >= 2) {
- unsigned char c2 = s[1];
- if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) {
- unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40));
- unsigned short wc = 0xfffd;
- {
- if (i < 23766)
- wc = gbk_2uni_page81[i];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short gbk_page00[208] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e8, 0x0000, 0x0000, 0xa1ec, /*0xa0-0xa7*/
- 0xa1a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
- 0xa1e3, 0xa1c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1a4, /*0xb0-0xb7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb8-0xbf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc0-0xc7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1c1, /*0xd0-0xd7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
- 0xa8a4, 0xa8a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xe0-0xe7*/
- 0xa8a8, 0xa8a6, 0xa8ba, 0x0000, 0xa8ac, 0xa8aa, 0x0000, 0x0000, /*0xe8-0xef*/
- 0x0000, 0x0000, 0xa8b0, 0xa8ae, 0x0000, 0x0000, 0x0000, 0xa1c2, /*0xf0-0xf7*/
- 0x0000, 0xa8b4, 0xa8b2, 0x0000, 0xa8b9, 0x0000, 0x0000, 0x0000, /*0xf8-0xff*/
- /* 0x0100 */
- 0x0000, 0xa8a1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x00-0x07*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
- 0x0000, 0x0000, 0x0000, 0xa8a5, 0x0000, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
- 0x0000, 0x0000, 0x0000, 0xa8a7, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
- 0x0000, 0x0000, 0x0000, 0xa8a9, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa8bd, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
- 0xa8be, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8ad, 0x0000, 0x0000, /*0x48-0x4f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/
- 0x0000, 0x0000, 0x0000, 0xa8b1, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
-};
-static const unsigned short gbk_page01[24] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8a3, 0x0000, /*0xc8-0xcf*/
- 0xa8ab, 0x0000, 0xa8af, 0x0000, 0xa8b3, 0x0000, 0xa8b5, 0x0000, /*0xd0-0xd7*/
- 0xa8b6, 0x0000, 0xa8b7, 0x0000, 0xa8b8, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
-};
-static const unsigned short gbk_page02a[24] = {
- 0x0000, 0xa8bb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
- 0x0000, 0xa8c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/
-};
-static const unsigned short gbk_page02b[32] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1a6, /*0xc0-0xc7*/
- 0x0000, 0xa1a5, 0xa840, 0xa841, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd0-0xd7*/
- 0x0000, 0xa842, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
-};
-static const unsigned short gbk_page03[64] = {
- 0x0000, 0xa6a1, 0xa6a2, 0xa6a3, 0xa6a4, 0xa6a5, 0xa6a6, 0xa6a7, /*0x90-0x97*/
- 0xa6a8, 0xa6a9, 0xa6aa, 0xa6ab, 0xa6ac, 0xa6ad, 0xa6ae, 0xa6af, /*0x98-0x9f*/
- 0xa6b0, 0xa6b1, 0x0000, 0xa6b2, 0xa6b3, 0xa6b4, 0xa6b5, 0xa6b6, /*0xa0-0xa7*/
- 0xa6b7, 0xa6b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
- 0x0000, 0xa6c1, 0xa6c2, 0xa6c3, 0xa6c4, 0xa6c5, 0xa6c6, 0xa6c7, /*0xb0-0xb7*/
- 0xa6c8, 0xa6c9, 0xa6ca, 0xa6cb, 0xa6cc, 0xa6cd, 0xa6ce, 0xa6cf, /*0xb8-0xbf*/
- 0xa6d0, 0xa6d1, 0x0000, 0xa6d2, 0xa6d3, 0xa6d4, 0xa6d5, 0xa6d6, /*0xc0-0xc7*/
- 0xa6d7, 0xa6d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
-};
-static const unsigned short gbk_page04[88] = {
- 0x0000, 0xa7a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x00-0x07*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
- 0xa7a1, 0xa7a2, 0xa7a3, 0xa7a4, 0xa7a5, 0xa7a6, 0xa7a8, 0xa7a9, /*0x10-0x17*/
- 0xa7aa, 0xa7ab, 0xa7ac, 0xa7ad, 0xa7ae, 0xa7af, 0xa7b0, 0xa7b1, /*0x18-0x1f*/
- 0xa7b2, 0xa7b3, 0xa7b4, 0xa7b5, 0xa7b6, 0xa7b7, 0xa7b8, 0xa7b9, /*0x20-0x27*/
- 0xa7ba, 0xa7bb, 0xa7bc, 0xa7bd, 0xa7be, 0xa7bf, 0xa7c0, 0xa7c1, /*0x28-0x2f*/
- 0xa7d1, 0xa7d2, 0xa7d3, 0xa7d4, 0xa7d5, 0xa7d6, 0xa7d8, 0xa7d9, /*0x30-0x37*/
- 0xa7da, 0xa7db, 0xa7dc, 0xa7dd, 0xa7de, 0xa7df, 0xa7e0, 0xa7e1, /*0x38-0x3f*/
- 0xa7e2, 0xa7e3, 0xa7e4, 0xa7e5, 0xa7e6, 0xa7e7, 0xa7e8, 0xa7e9, /*0x40-0x47*/
- 0xa7ea, 0xa7eb, 0xa7ec, 0xa7ed, 0xa7ee, 0xa7ef, 0xa7f0, 0xa7f1, /*0x48-0x4f*/
- 0x0000, 0xa7d7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
-};
-static const unsigned short gbk_page20[48] = {
- 0xa95c, 0x0000, 0x0000, 0xa843, 0xa1aa, 0xa844, 0xa1ac, 0x0000, /*0x10-0x17*/
- 0xa1ae, 0xa1af, 0x0000, 0x0000, 0xa1b0, 0xa1b1, 0x0000, 0x0000, /*0x18-0x1f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa845, 0xa1ad, 0x0000, /*0x20-0x27*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0xa1eb, 0x0000, 0xa1e4, 0xa1e5, 0x0000, 0xa846, 0x0000, 0x0000, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0xa1f9, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
-};
-static const unsigned short gbk_page21[160] = {
- 0x0000, 0x0000, 0x0000, 0xa1e6, 0x0000, 0xa847, 0x0000, 0x0000, /*0x00-0x07*/
- 0x0000, 0xa848, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1ed, 0x0000, /*0x10-0x17*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
- 0x0000, 0xa959, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
- 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, /*0x60-0x67*/
- 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
- 0xa2a1, 0xa2a2, 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a6, 0xa2a7, 0xa2a8, /*0x70-0x77*/
- 0xa2a9, 0xa2aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
- 0xa1fb, 0xa1fc, 0xa1fa, 0xa1fd, 0x0000, 0x0000, 0xa849, 0xa84a, /*0x90-0x97*/
- 0xa84b, 0xa84c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
-};
-static const unsigned short gbk_page22[184] = {
- 0xa1ca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1c7, /*0x08-0x0f*/
- 0x0000, 0xa1c6, 0x0000, 0x0000, 0x0000, 0xa84d, 0x0000, 0x0000, /*0x10-0x17*/
- 0x0000, 0x0000, 0xa1cc, 0x0000, 0x0000, 0xa1d8, 0xa1de, 0xa84e, /*0x18-0x1f*/
- 0xa1cf, 0x0000, 0x0000, 0xa84f, 0x0000, 0xa1ce, 0x0000, 0xa1c4, /*0x20-0x27*/
- 0xa1c5, 0xa1c9, 0xa1c8, 0xa1d2, 0x0000, 0x0000, 0xa1d3, 0x0000, /*0x28-0x2f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e0, 0xa1df, 0xa1c3, 0xa1cb, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1d7, 0x0000, 0x0000, /*0x38-0x3f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
- 0xa1d6, 0x0000, 0x0000, 0x0000, 0xa1d5, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
- 0x0000, 0x0000, 0xa850, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
- 0xa1d9, 0xa1d4, 0x0000, 0x0000, 0xa1dc, 0xa1dd, 0xa851, 0xa852, /*0x60-0x67*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1da, 0xa1db, /*0x68-0x6f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x70-0x77*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa892, 0x0000, 0x0000, /*0x90-0x97*/
- 0x0000, 0xa1d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1cd, 0x0000, 0x0000, /*0xa0-0xa7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa853, /*0xb8-0xbf*/
-};
-static const unsigned short gbk_page24[64] = {
- 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, /*0x60-0x67*/
- 0xa2e1, 0xa2e2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, /*0x70-0x77*/
- 0xa2c9, 0xa2ca, 0xa2cb, 0xa2cc, 0xa2cd, 0xa2ce, 0xa2cf, 0xa2d0, /*0x78-0x7f*/
- 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, /*0x80-0x87*/
- 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, /*0x88-0x8f*/
- 0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, /*0x90-0x97*/
- 0xa2c1, 0xa2c2, 0xa2c3, 0xa2c4, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
-};
-static const unsigned short gbk_page25[232] = {
- 0xa9a4, 0xa9a5, 0xa9a6, 0xa9a7, 0xa9a8, 0xa9a9, 0xa9aa, 0xa9ab, /*0x00-0x07*/
- 0xa9ac, 0xa9ad, 0xa9ae, 0xa9af, 0xa9b0, 0xa9b1, 0xa9b2, 0xa9b3, /*0x08-0x0f*/
- 0xa9b4, 0xa9b5, 0xa9b6, 0xa9b7, 0xa9b8, 0xa9b9, 0xa9ba, 0xa9bb, /*0x10-0x17*/
- 0xa9bc, 0xa9bd, 0xa9be, 0xa9bf, 0xa9c0, 0xa9c1, 0xa9c2, 0xa9c3, /*0x18-0x1f*/
- 0xa9c4, 0xa9c5, 0xa9c6, 0xa9c7, 0xa9c8, 0xa9c9, 0xa9ca, 0xa9cb, /*0x20-0x27*/
- 0xa9cc, 0xa9cd, 0xa9ce, 0xa9cf, 0xa9d0, 0xa9d1, 0xa9d2, 0xa9d3, /*0x28-0x2f*/
- 0xa9d4, 0xa9d5, 0xa9d6, 0xa9d7, 0xa9d8, 0xa9d9, 0xa9da, 0xa9db, /*0x30-0x37*/
- 0xa9dc, 0xa9dd, 0xa9de, 0xa9df, 0xa9e0, 0xa9e1, 0xa9e2, 0xa9e3, /*0x38-0x3f*/
- 0xa9e4, 0xa9e5, 0xa9e6, 0xa9e7, 0xa9e8, 0xa9e9, 0xa9ea, 0xa9eb, /*0x40-0x47*/
- 0xa9ec, 0xa9ed, 0xa9ee, 0xa9ef, 0x0000, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
- 0xa854, 0xa855, 0xa856, 0xa857, 0xa858, 0xa859, 0xa85a, 0xa85b, /*0x50-0x57*/
- 0xa85c, 0xa85d, 0xa85e, 0xa85f, 0xa860, 0xa861, 0xa862, 0xa863, /*0x58-0x5f*/
- 0xa864, 0xa865, 0xa866, 0xa867, 0xa868, 0xa869, 0xa86a, 0xa86b, /*0x60-0x67*/
- 0xa86c, 0xa86d, 0xa86e, 0xa86f, 0xa870, 0xa871, 0xa872, 0xa873, /*0x68-0x6f*/
- 0xa874, 0xa875, 0xa876, 0xa877, 0x0000, 0x0000, 0x0000, 0x0000, /*0x70-0x77*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
- 0x0000, 0xa878, 0xa879, 0xa87a, 0xa87b, 0xa87c, 0xa87d, 0xa87e, /*0x80-0x87*/
- 0xa880, 0xa881, 0xa882, 0xa883, 0xa884, 0xa885, 0xa886, 0xa887, /*0x88-0x8f*/
- 0x0000, 0x0000, 0x0000, 0xa888, 0xa889, 0xa88a, 0x0000, 0x0000, /*0x90-0x97*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
- 0xa1f6, 0xa1f5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa0-0xa7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
- 0x0000, 0x0000, 0xa1f8, 0xa1f7, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa88b, 0xa88c, 0x0000, 0x0000, /*0xb8-0xbf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1f4, 0xa1f3, /*0xc0-0xc7*/
- 0x0000, 0x0000, 0x0000, 0xa1f0, 0x0000, 0x0000, 0xa1f2, 0xa1f1, /*0xc8-0xcf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd0-0xd7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
- 0x0000, 0x0000, 0xa88d, 0xa88e, 0xa88f, 0xa890, 0x0000, 0x0000, /*0xe0-0xe7*/
-};
-static const unsigned short gbk_page26[72] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1ef, 0xa1ee, 0x0000, /*0x00-0x07*/
- 0x0000, 0xa891, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
- 0xa1e2, 0x0000, 0xa1e1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
-};
-static const unsigned short gbk_page30[304] = {
- 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a8, 0x0000, 0xa1a9, 0xa965, 0xa996, /*0x00-0x07*/
- 0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7, 0xa1b8, 0xa1b9, 0xa1ba, 0xa1bb, /*0x08-0x0f*/
- 0xa1be, 0xa1bf, 0xa893, 0xa1fe, 0xa1b2, 0xa1b3, 0xa1bc, 0xa1bd, /*0x10-0x17*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa894, 0xa895, 0x0000, /*0x18-0x1f*/
- 0x0000, 0xa940, 0xa941, 0xa942, 0xa943, 0xa944, 0xa945, 0xa946, /*0x20-0x27*/
- 0xa947, 0xa948, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
- 0x0000, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, 0xa4a5, 0xa4a6, 0xa4a7, /*0x40-0x47*/
- 0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4ae, 0xa4af, /*0x48-0x4f*/
- 0xa4b0, 0xa4b1, 0xa4b2, 0xa4b3, 0xa4b4, 0xa4b5, 0xa4b6, 0xa4b7, /*0x50-0x57*/
- 0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, 0xa4be, 0xa4bf, /*0x58-0x5f*/
- 0xa4c0, 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0xa4c7, /*0x60-0x67*/
- 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4cc, 0xa4cd, 0xa4ce, 0xa4cf, /*0x68-0x6f*/
- 0xa4d0, 0xa4d1, 0xa4d2, 0xa4d3, 0xa4d4, 0xa4d5, 0xa4d6, 0xa4d7, /*0x70-0x77*/
- 0xa4d8, 0xa4d9, 0xa4da, 0xa4db, 0xa4dc, 0xa4dd, 0xa4de, 0xa4df, /*0x78-0x7f*/
- 0xa4e0, 0xa4e1, 0xa4e2, 0xa4e3, 0xa4e4, 0xa4e5, 0xa4e6, 0xa4e7, /*0x80-0x87*/
- 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ed, 0xa4ee, 0xa4ef, /*0x88-0x8f*/
- 0xa4f0, 0xa4f1, 0xa4f2, 0xa4f3, 0x0000, 0x0000, 0x0000, 0x0000, /*0x90-0x97*/
- 0x0000, 0x0000, 0x0000, 0xa961, 0xa962, 0xa966, 0xa967, 0x0000, /*0x98-0x9f*/
- 0x0000, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a5, 0xa5a6, 0xa5a7, /*0xa0-0xa7*/
- 0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac, 0xa5ad, 0xa5ae, 0xa5af, /*0xa8-0xaf*/
- 0xa5b0, 0xa5b1, 0xa5b2, 0xa5b3, 0xa5b4, 0xa5b5, 0xa5b6, 0xa5b7, /*0xb0-0xb7*/
- 0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd, 0xa5be, 0xa5bf, /*0xb8-0xbf*/
- 0xa5c0, 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7, /*0xc0-0xc7*/
- 0xa5c8, 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf, /*0xc8-0xcf*/
- 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7, /*0xd0-0xd7*/
- 0xa5d8, 0xa5d9, 0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5de, 0xa5df, /*0xd8-0xdf*/
- 0xa5e0, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, 0xa5e5, 0xa5e6, 0xa5e7, /*0xe0-0xe7*/
- 0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ee, 0xa5ef, /*0xe8-0xef*/
- 0xa5f0, 0xa5f1, 0xa5f2, 0xa5f3, 0xa5f4, 0xa5f5, 0xa5f6, 0x0000, /*0xf0-0xf7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa960, 0xa963, 0xa964, 0x0000, /*0xf8-0xff*/
- /* 0x3100 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8c5, 0xa8c6, 0xa8c7, /*0x00-0x07*/
- 0xa8c8, 0xa8c9, 0xa8ca, 0xa8cb, 0xa8cc, 0xa8cd, 0xa8ce, 0xa8cf, /*0x08-0x0f*/
- 0xa8d0, 0xa8d1, 0xa8d2, 0xa8d3, 0xa8d4, 0xa8d5, 0xa8d6, 0xa8d7, /*0x10-0x17*/
- 0xa8d8, 0xa8d9, 0xa8da, 0xa8db, 0xa8dc, 0xa8dd, 0xa8de, 0xa8df, /*0x18-0x1f*/
- 0xa8e0, 0xa8e1, 0xa8e2, 0xa8e3, 0xa8e4, 0xa8e5, 0xa8e6, 0xa8e7, /*0x20-0x27*/
- 0xa8e8, 0xa8e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
-};
-static const unsigned short gbk_page32[24] = {
- 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, /*0x20-0x27*/
- 0xa2ed, 0xa2ee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0x0000, 0xa95a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
-};
-static const unsigned short gbk_page33[80] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa94a, 0xa94b, /*0x88-0x8f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x90-0x97*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa94c, 0xa94d, 0xa94e, 0x0000, /*0x98-0x9f*/
- 0x0000, 0xa94f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa0-0xa7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb8-0xbf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa950, 0x0000, 0x0000, 0x0000, /*0xc0-0xc7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa951, 0x0000, /*0xc8-0xcf*/
- 0x0000, 0xa952, 0xa953, 0x0000, 0x0000, 0xa954, 0x0000, 0x0000, /*0xd0-0xd7*/
-};
-static const unsigned short gbk_page4e[20904] = {
- 0xd2bb, 0xb6a1, 0x8140, 0xc6df, 0x8141, 0x8142, 0x8143, 0xcdf2, /*0x00-0x07*/
- 0xd5c9, 0xc8fd, 0xc9cf, 0xcfc2, 0xd8a2, 0xb2bb, 0xd3eb, 0x8144, /*0x08-0x0f*/
- 0xd8a4, 0xb3f3, 0x8145, 0xd7a8, 0xc7d2, 0xd8a7, 0xcac0, 0x8146, /*0x10-0x17*/
- 0xc7f0, 0xb1fb, 0xd2b5, 0xb4d4, 0xb6ab, 0xcbbf, 0xd8a9, 0x8147, /*0x18-0x1f*/
- 0x8148, 0x8149, 0xb6aa, 0x814a, 0xc1bd, 0xd1cf, 0x814b, 0xc9a5, /*0x20-0x27*/
- 0xd8ad, 0x814c, 0xb8f6, 0xd1be, 0xe3dc, 0xd6d0, 0x814d, 0x814e, /*0x28-0x2f*/
- 0xb7e1, 0x814f, 0xb4ae, 0x8150, 0xc1d9, 0x8151, 0xd8bc, 0x8152, /*0x30-0x37*/
- 0xcde8, 0xb5a4, 0xceaa, 0xd6f7, 0x8153, 0xc0f6, 0xbed9, 0xd8af, /*0x38-0x3f*/
- 0x8154, 0x8155, 0x8156, 0xc4cb, 0x8157, 0xbec3, 0x8158, 0xd8b1, /*0x40-0x47*/
- 0xc3b4, 0xd2e5, 0x8159, 0xd6ae, 0xceda, 0xd5a7, 0xbaf5, 0xb7a6, /*0x48-0x4f*/
- 0xc0d6, 0x815a, 0xc6b9, 0xc5d2, 0xc7c7, 0x815b, 0xb9d4, 0x815c, /*0x50-0x57*/
- 0xb3cb, 0xd2d2, 0x815d, 0x815e, 0xd8bf, 0xbec5, 0xc6f2, 0xd2b2, /*0x58-0x5f*/
- 0xcfb0, 0xcfe7, 0x815f, 0x8160, 0x8161, 0x8162, 0xcae9, 0x8163, /*0x60-0x67*/
- 0x8164, 0xd8c0, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816a, /*0x68-0x6f*/
- 0xc2f2, 0xc2d2, 0x816b, 0xc8e9, 0x816c, 0x816d, 0x816e, 0x816f, /*0x70-0x77*/
- 0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0xc7ac, 0x8176, /*0x78-0x7f*/
- 0x8177, 0x8178, 0x8179, 0x817a, 0x817b, 0x817c, 0xc1cb, 0x817d, /*0x80-0x87*/
- 0xd3e8, 0xd5f9, 0x817e, 0xcac2, 0xb6fe, 0xd8a1, 0xd3da, 0xbff7, /*0x88-0x8f*/
- 0x8180, 0xd4c6, 0xbba5, 0xd8c1, 0xcee5, 0xbeae, 0x8181, 0x8182, /*0x90-0x97*/
- 0xd8a8, 0x8183, 0xd1c7, 0xd0a9, 0x8184, 0x8185, 0x8186, 0xd8bd, /*0x98-0x9f*/
- 0xd9ef, 0xcdf6, 0xbfba, 0x8187, 0xbdbb, 0xbaa5, 0xd2e0, 0xb2fa, /*0xa0-0xa7*/
- 0xbae0, 0xc4b6, 0x8188, 0xcfed, 0xbea9, 0xcda4, 0xc1c1, 0x8189, /*0xa8-0xaf*/
- 0x818a, 0x818b, 0xc7d7, 0xd9f1, 0x818c, 0xd9f4, 0x818d, 0x818e, /*0xb0-0xb7*/
- 0x818f, 0x8190, 0xc8cb, 0xd8e9, 0x8191, 0x8192, 0x8193, 0xd2da, /*0xb8-0xbf*/
- 0xcab2, 0xc8ca, 0xd8ec, 0xd8ea, 0xd8c6, 0xbdf6, 0xc6cd, 0xb3f0, /*0xc0-0xc7*/
- 0x8194, 0xd8eb, 0xbdf1, 0xbde9, 0x8195, 0xc8d4, 0xb4d3, 0x8196, /*0xc8-0xcf*/
- 0x8197, 0xc2d8, 0x8198, 0xb2d6, 0xd7d0, 0xcacb, 0xcbfb, 0xd5cc, /*0xd0-0xd7*/
- 0xb8b6, 0xcfc9, 0x8199, 0x819a, 0x819b, 0xd9da, 0xd8f0, 0xc7aa, /*0xd8-0xdf*/
- 0x819c, 0xd8ee, 0x819d, 0xb4fa, 0xc1ee, 0xd2d4, 0x819e, 0x819f, /*0xe0-0xe7*/
- 0xd8ed, 0x81a0, 0xd2c7, 0xd8ef, 0xc3c7, 0x81a1, 0x81a2, 0x81a3, /*0xe8-0xef*/
- 0xd1f6, 0x81a4, 0xd6d9, 0xd8f2, 0x81a5, 0xd8f5, 0xbcfe, 0xbcdb, /*0xf0-0xf7*/
- 0x81a6, 0x81a7, 0x81a8, 0xc8ce, 0x81a9, 0xb7dd, 0x81aa, 0xb7c2, /*0xf8-0xff*/
- /* 0x4f00 */
- 0x81ab, 0xc6f3, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1, /*0x00-0x07*/
- 0x81b2, 0xd8f8, 0xd2c1, 0x81b3, 0x81b4, 0xcee9, 0xbcbf, 0xb7fc, /*0x08-0x0f*/
- 0xb7a5, 0xd0dd, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0xd6da, /*0x10-0x17*/
- 0xd3c5, 0xbbef, 0xbbe1, 0xd8f1, 0x81ba, 0x81bb, 0xc9a1, 0xceb0, /*0x18-0x1f*/
- 0xb4ab, 0x81bc, 0xd8f3, 0x81bd, 0xc9cb, 0xd8f6, 0xc2d7, 0xd8f7, /*0x20-0x27*/
- 0x81be, 0x81bf, 0xceb1, 0xd8f9, 0x81c0, 0x81c1, 0x81c2, 0xb2ae, /*0x28-0x2f*/
- 0xb9c0, 0x81c3, 0xd9a3, 0x81c4, 0xb0e9, 0x81c5, 0xc1e6, 0x81c6, /*0x30-0x37*/
- 0xc9ec, 0x81c7, 0xcbc5, 0x81c8, 0xcbc6, 0xd9a4, 0x81c9, 0x81ca, /*0x38-0x3f*/
- 0x81cb, 0x81cc, 0x81cd, 0xb5e8, 0x81ce, 0x81cf, 0xb5ab, 0x81d0, /*0x40-0x47*/
- 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5, 0xcebb, 0xb5cd, 0xd7a1, /*0x48-0x4f*/
- 0xd7f4, 0xd3d3, 0x81d6, 0xcce5, 0x81d7, 0xbace, 0x81d8, 0xd9a2, /*0x50-0x57*/
- 0xd9dc, 0xd3e0, 0xd8fd, 0xb7f0, 0xd7f7, 0xd8fe, 0xd8fa, 0xd9a1, /*0x58-0x5f*/
- 0xc4e3, 0x81d9, 0x81da, 0xd3b6, 0xd8f4, 0xd9dd, 0x81db, 0xd8fb, /*0x60-0x67*/
- 0x81dc, 0xc5e5, 0x81dd, 0x81de, 0xc0d0, 0x81df, 0x81e0, 0xd1f0, /*0x68-0x6f*/
- 0xb0db, 0x81e1, 0x81e2, 0xbcd1, 0xd9a6, 0x81e3, 0xd9a5, 0x81e4, /*0x70-0x77*/
- 0x81e5, 0x81e6, 0x81e7, 0xd9ac, 0xd9ae, 0x81e8, 0xd9ab, 0xcab9, /*0x78-0x7f*/
- 0x81e9, 0x81ea, 0x81eb, 0xd9a9, 0xd6b6, 0x81ec, 0x81ed, 0x81ee, /*0x80-0x87*/
- 0xb3de, 0xd9a8, 0x81ef, 0xc0fd, 0x81f0, 0xcacc, 0x81f1, 0xd9aa, /*0x88-0x8f*/
- 0x81f2, 0xd9a7, 0x81f3, 0x81f4, 0xd9b0, 0x81f5, 0x81f6, 0xb6b1, /*0x90-0x97*/
- 0x81f7, 0x81f8, 0x81f9, 0xb9a9, 0x81fa, 0xd2c0, 0x81fb, 0x81fc, /*0x98-0x9f*/
- 0xcfc0, 0x81fd, 0x81fe, 0xc2c2, 0x8240, 0xbdc4, 0xd5ec, 0xb2e0, /*0xa0-0xa7*/
- 0xc7c8, 0xbfeb, 0xd9ad, 0x8241, 0xd9af, 0x8242, 0xceea, 0xbaee, /*0xa8-0xaf*/
- 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, 0xc7d6, 0x8248, 0x8249, /*0xb0-0xb7*/
- 0x824a, 0x824b, 0x824c, 0x824d, 0x824e, 0x824f, 0x8250, 0xb1e3, /*0xb8-0xbf*/
- 0x8251, 0x8252, 0x8253, 0xb4d9, 0xb6ed, 0xd9b4, 0x8254, 0x8255, /*0xc0-0xc7*/
- 0x8256, 0x8257, 0xbfa1, 0x8258, 0x8259, 0x825a, 0xd9de, 0xc7ce, /*0xc8-0xcf*/
- 0xc0fe, 0xd9b8, 0x825b, 0x825c, 0x825d, 0x825e, 0x825f, 0xcbd7, /*0xd0-0xd7*/
- 0xb7fd, 0x8260, 0xd9b5, 0x8261, 0xd9b7, 0xb1a3, 0xd3e1, 0xd9b9, /*0xd8-0xdf*/
- 0x8262, 0xd0c5, 0x8263, 0xd9b6, 0x8264, 0x8265, 0xd9b1, 0x8266, /*0xe0-0xe7*/
- 0xd9b2, 0xc1a9, 0xd9b3, 0x8267, 0x8268, 0xbcf3, 0xd0de, 0xb8a9, /*0xe8-0xef*/
- 0x8269, 0xbee3, 0x826a, 0xd9bd, 0x826b, 0x826c, 0x826d, 0x826e, /*0xf0-0xf7*/
- 0xd9ba, 0x826f, 0xb0b3, 0x8270, 0x8271, 0x8272, 0xd9c2, 0x8273, /*0xf8-0xff*/
- /* 0x5000 */
- 0x8274, 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x827a, 0x827b, /*0x00-0x07*/
- 0x827c, 0x827d, 0x827e, 0x8280, 0xd9c4, 0xb1b6, 0x8281, 0xd9bf, /*0x08-0x0f*/
- 0x8282, 0x8283, 0xb5b9, 0x8284, 0xbef3, 0x8285, 0x8286, 0x8287, /*0x10-0x17*/
- 0xccc8, 0xbaf2, 0xd2d0, 0x8288, 0xd9c3, 0x8289, 0x828a, 0xbde8, /*0x18-0x1f*/
- 0x828b, 0xb3ab, 0x828c, 0x828d, 0x828e, 0xd9c5, 0xbeeb, 0x828f, /*0x20-0x27*/
- 0xd9c6, 0xd9bb, 0xc4df, 0x8290, 0xd9be, 0xd9c1, 0xd9c0, 0x8291, /*0x28-0x2f*/
- 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, 0x8298, 0x8299, /*0x30-0x37*/
- 0x829a, 0x829b, 0xd5ae, 0x829c, 0xd6b5, 0x829d, 0xc7e3, 0x829e, /*0x38-0x3f*/
- 0x829f, 0x82a0, 0x82a1, 0xd9c8, 0x82a2, 0x82a3, 0x82a4, 0xbcd9, /*0x40-0x47*/
- 0xd9ca, 0x82a5, 0x82a6, 0x82a7, 0xd9bc, 0x82a8, 0xd9cb, 0xc6ab, /*0x48-0x4f*/
- 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0xd9c9, 0x82ae, 0x82af, /*0x50-0x57*/
- 0x82b0, 0x82b1, 0xd7f6, 0x82b2, 0xcda3, 0x82b3, 0x82b4, 0x82b5, /*0x58-0x5f*/
- 0x82b6, 0x82b7, 0x82b8, 0x82b9, 0x82ba, 0xbda1, 0x82bb, 0x82bc, /*0x60-0x67*/
- 0x82bd, 0x82be, 0x82bf, 0x82c0, 0xd9cc, 0x82c1, 0x82c2, 0x82c3, /*0x68-0x6f*/
- 0x82c4, 0x82c5, 0x82c6, 0x82c7, 0x82c8, 0x82c9, 0xc5bc, 0xcdb5, /*0x70-0x77*/
- 0x82ca, 0x82cb, 0x82cc, 0xd9cd, 0x82cd, 0x82ce, 0xd9c7, 0xb3a5, /*0x78-0x7f*/
- 0xbffe, 0x82cf, 0x82d0, 0x82d1, 0x82d2, 0xb8b5, 0x82d3, 0x82d4, /*0x80-0x87*/
- 0xc0fc, 0x82d5, 0x82d6, 0x82d7, 0x82d8, 0xb0f8, 0x82d9, 0x82da, /*0x88-0x8f*/
- 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, 0x82e0, 0x82e1, 0x82e2, /*0x90-0x97*/
- 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, 0x82e8, 0x82e9, 0x82ea, /*0x98-0x9f*/
- 0x82eb, 0x82ec, 0x82ed, 0xb4f6, 0x82ee, 0xd9ce, 0x82ef, 0xd9cf, /*0xa0-0xa7*/
- 0xb4a2, 0xd9d0, 0x82f0, 0x82f1, 0xb4df, 0x82f2, 0x82f3, 0x82f4, /*0xa8-0xaf*/
- 0x82f5, 0x82f6, 0xb0c1, 0x82f7, 0x82f8, 0x82f9, 0x82fa, 0x82fb, /*0xb0-0xb7*/
- 0x82fc, 0x82fd, 0xd9d1, 0xc9b5, 0x82fe, 0x8340, 0x8341, 0x8342, /*0xb8-0xbf*/
- 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349, 0x834a, /*0xc0-0xc7*/
- 0x834b, 0x834c, 0x834d, 0x834e, 0x834f, 0x8350, 0x8351, 0xcff1, /*0xc8-0xcf*/
- 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0xd9d2, 0x8358, /*0xd0-0xd7*/
- 0x8359, 0x835a, 0xc1c5, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f, /*0xd8-0xdf*/
- 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0xd9d6, 0xc9ae, /*0xe0-0xe7*/
- 0x8366, 0x8367, 0x8368, 0x8369, 0xd9d5, 0xd9d4, 0xd9d7, 0x836a, /*0xe8-0xef*/
- 0x836b, 0x836c, 0x836d, 0xcbdb, 0x836e, 0xbda9, 0x836f, 0x8370, /*0xf0-0xf7*/
- 0x8371, 0x8372, 0x8373, 0xc6a7, 0x8374, 0x8375, 0x8376, 0x8377, /*0xf8-0xff*/
- /* 0x5100 */
- 0x8378, 0x8379, 0x837a, 0x837b, 0x837c, 0x837d, 0xd9d3, 0xd9d8, /*0x00-0x07*/
- 0x837e, 0x8380, 0x8381, 0xd9d9, 0x8382, 0x8383, 0x8384, 0x8385, /*0x08-0x0f*/
- 0x8386, 0x8387, 0xc8e5, 0x8388, 0x8389, 0x838a, 0x838b, 0x838c, /*0x10-0x17*/
- 0x838d, 0x838e, 0x838f, 0x8390, 0x8391, 0x8392, 0x8393, 0x8394, /*0x18-0x1f*/
- 0x8395, 0xc0dc, 0x8396, 0x8397, 0x8398, 0x8399, 0x839a, 0x839b, /*0x20-0x27*/
- 0x839c, 0x839d, 0x839e, 0x839f, 0x83a0, 0x83a1, 0x83a2, 0x83a3, /*0x28-0x2f*/
- 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83a8, 0x83a9, 0x83aa, 0x83ab, /*0x30-0x37*/
- 0x83ac, 0x83ad, 0x83ae, 0x83af, 0x83b0, 0x83b1, 0x83b2, 0xb6f9, /*0x38-0x3f*/
- 0xd8a3, 0xd4ca, 0x83b3, 0xd4aa, 0xd0d6, 0xb3e4, 0xd5d7, 0x83b4, /*0x40-0x47*/
- 0xcfc8, 0xb9e2, 0x83b5, 0xbfcb, 0x83b6, 0xc3e2, 0x83b7, 0x83b8, /*0x48-0x4f*/
- 0x83b9, 0xb6d2, 0x83ba, 0x83bb, 0xcdc3, 0xd9ee, 0xd9f0, 0x83bc, /*0x50-0x57*/
- 0x83bd, 0x83be, 0xb5b3, 0x83bf, 0xb6b5, 0x83c0, 0x83c1, 0x83c2, /*0x58-0x5f*/
- 0x83c3, 0x83c4, 0xbea4, 0x83c5, 0x83c6, 0xc8eb, 0x83c7, 0x83c8, /*0x60-0x67*/
- 0xc8ab, 0x83c9, 0x83ca, 0xb0cb, 0xb9ab, 0xc1f9, 0xd9e2, 0x83cb, /*0x68-0x6f*/
- 0xc0bc, 0xb9b2, 0x83cc, 0xb9d8, 0xd0cb, 0xb1f8, 0xc6e4, 0xbedf, /*0x70-0x77*/
- 0xb5e4, 0xd7c8, 0x83cd, 0xd1f8, 0xbce6, 0xcade, 0x83ce, 0x83cf, /*0x78-0x7f*/
- 0xbcbd, 0xd9e6, 0xd8e7, 0x83d0, 0x83d1, 0xc4da, 0x83d2, 0x83d3, /*0x80-0x87*/
- 0xb8d4, 0xc8bd, 0x83d4, 0x83d5, 0xb2e1, 0xd4d9, 0x83d6, 0x83d7, /*0x88-0x8f*/
- 0x83d8, 0x83d9, 0xc3b0, 0x83da, 0x83db, 0xc3e1, 0xdaa2, 0xc8df, /*0x90-0x97*/
- 0x83dc, 0xd0b4, 0x83dd, 0xbefc, 0xc5a9, 0x83de, 0x83df, 0x83e0, /*0x98-0x9f*/
- 0xb9da, 0x83e1, 0xdaa3, 0x83e2, 0xd4a9, 0xdaa4, 0x83e3, 0x83e4, /*0xa0-0xa7*/
- 0x83e5, 0x83e6, 0x83e7, 0xd9fb, 0xb6ac, 0x83e8, 0x83e9, 0xb7eb, /*0xa8-0xaf*/
- 0xb1f9, 0xd9fc, 0xb3e5, 0xbef6, 0x83ea, 0xbff6, 0xd2b1, 0xc0e4, /*0xb0-0xb7*/
- 0x83eb, 0x83ec, 0x83ed, 0xb6b3, 0xd9fe, 0xd9fd, 0x83ee, 0x83ef, /*0xb8-0xbf*/
- 0xbebb, 0x83f0, 0x83f1, 0x83f2, 0xc6e0, 0x83f3, 0xd7bc, 0xdaa1, /*0xc0-0xc7*/
- 0x83f4, 0xc1b9, 0x83f5, 0xb5f2, 0xc1e8, 0x83f6, 0x83f7, 0xbcf5, /*0xc8-0xcf*/
- 0x83f8, 0xb4d5, 0x83f9, 0x83fa, 0x83fb, 0x83fc, 0x83fd, 0x83fe, /*0xd0-0xd7*/
- 0x8440, 0x8441, 0x8442, 0xc1dd, 0x8443, 0xc4fd, 0x8444, 0x8445, /*0xd8-0xdf*/
- 0xbcb8, 0xb7b2, 0x8446, 0x8447, 0xb7ef, 0x8448, 0x8449, 0x844a, /*0xe0-0xe7*/
- 0x844b, 0x844c, 0x844d, 0xd9ec, 0x844e, 0xc6be, 0x844f, 0xbfad, /*0xe8-0xef*/
- 0xbbcb, 0x8450, 0x8451, 0xb5ca, 0x8452, 0xdbc9, 0xd0d7, 0x8453, /*0xf0-0xf7*/
- 0xcdb9, 0xb0bc, 0xb3f6, 0xbbf7, 0xdbca, 0xbaaf, 0x8454, 0xd4e4, /*0xf8-0xff*/
- /* 0x5200 */
- 0xb5b6, 0xb5f3, 0xd8d6, 0xc8d0, 0x8455, 0x8456, 0xb7d6, 0xc7d0, /*0x00-0x07*/
- 0xd8d7, 0x8457, 0xbfaf, 0x8458, 0x8459, 0xdbbb, 0xd8d8, 0x845a, /*0x08-0x0f*/
- 0x845b, 0xd0cc, 0xbbae, 0x845c, 0x845d, 0x845e, 0xebbe, 0xc1d0, /*0x10-0x17*/
- 0xc1f5, 0xd4f2, 0xb8d5, 0xb4b4, 0x845f, 0xb3f5, 0x8460, 0x8461, /*0x18-0x1f*/
- 0xc9be, 0x8462, 0x8463, 0x8464, 0xc5d0, 0x8465, 0x8466, 0x8467, /*0x20-0x27*/
- 0xc5d9, 0xc0fb, 0x8468, 0xb1f0, 0x8469, 0xd8d9, 0xb9ce, 0x846a, /*0x28-0x2f*/
- 0xb5bd, 0x846b, 0x846c, 0xd8da, 0x846d, 0x846e, 0xd6c6, 0xcba2, /*0x30-0x37*/
- 0xc8af, 0xc9b2, 0xb4cc, 0xbfcc, 0x846f, 0xb9f4, 0x8470, 0xd8db, /*0x38-0x3f*/
- 0xd8dc, 0xb6e7, 0xbcc1, 0xccea, 0x8471, 0x8472, 0x8473, 0x8474, /*0x40-0x47*/
- 0x8475, 0x8476, 0xcff7, 0x8477, 0xd8dd, 0xc7b0, 0x8478, 0x8479, /*0x48-0x4f*/
- 0xb9d0, 0xbda3, 0x847a, 0x847b, 0xccde, 0x847c, 0xc6ca, 0x847d, /*0x50-0x57*/
- 0x847e, 0x8480, 0x8481, 0x8482, 0xd8e0, 0x8483, 0xd8de, 0x8484, /*0x58-0x5f*/
- 0x8485, 0xd8df, 0x8486, 0x8487, 0x8488, 0xb0fe, 0x8489, 0xbee7, /*0x60-0x67*/
- 0x848a, 0xcaa3, 0xbcf4, 0x848b, 0x848c, 0x848d, 0x848e, 0xb8b1, /*0x68-0x6f*/
- 0x848f, 0x8490, 0xb8ee, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495, /*0x70-0x77*/
- 0x8496, 0x8497, 0x8498, 0x8499, 0x849a, 0xd8e2, 0x849b, 0xbdcb, /*0x78-0x7f*/
- 0x849c, 0xd8e4, 0xd8e3, 0x849d, 0x849e, 0x849f, 0x84a0, 0x84a1, /*0x80-0x87*/
- 0xc5fc, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7, 0x84a8, /*0x88-0x8f*/
- 0xd8e5, 0x84a9, 0x84aa, 0xd8e6, 0x84ab, 0x84ac, 0x84ad, 0x84ae, /*0x90-0x97*/
- 0x84af, 0x84b0, 0x84b1, 0xc1a6, 0x84b2, 0xc8b0, 0xb0ec, 0xb9a6, /*0x98-0x9f*/
- 0xbcd3, 0xcef1, 0xdbbd, 0xc1d3, 0x84b3, 0x84b4, 0x84b5, 0x84b6, /*0xa0-0xa7*/
- 0xb6af, 0xd6fa, 0xc5ac, 0xbdd9, 0xdbbe, 0xdbbf, 0x84b7, 0x84b8, /*0xa8-0xaf*/
- 0x84b9, 0xc0f8, 0xbea2, 0xc0cd, 0x84ba, 0x84bb, 0x84bc, 0x84bd, /*0xb0-0xb7*/
- 0x84be, 0x84bf, 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0xdbc0, 0xcac6, /*0xb8-0xbf*/
- 0x84c4, 0x84c5, 0x84c6, 0xb2aa, 0x84c7, 0x84c8, 0x84c9, 0xd3c2, /*0xc0-0xc7*/
- 0x84ca, 0xc3e3, 0x84cb, 0xd1ab, 0x84cc, 0x84cd, 0x84ce, 0x84cf, /*0xc8-0xcf*/
- 0xdbc2, 0x84d0, 0xc0d5, 0x84d1, 0x84d2, 0x84d3, 0xdbc3, 0x84d4, /*0xd0-0xd7*/
- 0xbfb1, 0x84d5, 0x84d6, 0x84d7, 0x84d8, 0x84d9, 0x84da, 0xc4bc, /*0xd8-0xdf*/
- 0x84db, 0x84dc, 0x84dd, 0x84de, 0xc7da, 0x84df, 0x84e0, 0x84e1, /*0xe0-0xe7*/
- 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6, 0x84e7, 0x84e8, 0x84e9, /*0xe8-0xef*/
- 0xdbc4, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee, 0x84ef, 0x84f0, /*0xf0-0xf7*/
- 0x84f1, 0xd9e8, 0xc9d7, 0x84f2, 0x84f3, 0x84f4, 0xb9b4, 0xcef0, /*0xf8-0xff*/
- /* 0x5300 */
- 0xd4c8, 0x84f5, 0x84f6, 0x84f7, 0x84f8, 0xb0fc, 0xb4d2, 0x84f9, /*0x00-0x07*/
- 0xd0d9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0xd9e9, 0x84fe, 0xdecb, /*0x08-0x0f*/
- 0xd9eb, 0x8540, 0x8541, 0x8542, 0x8543, 0xd8b0, 0xbbaf, 0xb1b1, /*0x10-0x17*/
- 0x8544, 0xb3d7, 0xd8ce, 0x8545, 0x8546, 0xd4d1, 0x8547, 0x8548, /*0x18-0x1f*/
- 0xbdb3, 0xbfef, 0x8549, 0xcfbb, 0x854a, 0x854b, 0xd8d0, 0x854c, /*0x20-0x27*/
- 0x854d, 0x854e, 0xb7cb, 0x854f, 0x8550, 0x8551, 0xd8d1, 0x8552, /*0x28-0x2f*/
- 0x8553, 0x8554, 0x8555, 0x8556, 0x8557, 0x8558, 0x8559, 0x855a, /*0x30-0x37*/
- 0x855b, 0xc6a5, 0xc7f8, 0xd2bd, 0x855c, 0x855d, 0xd8d2, 0xc4e4, /*0x38-0x3f*/
- 0x855e, 0xcaae, 0x855f, 0xc7a7, 0x8560, 0xd8a6, 0x8561, 0xc9fd, /*0x40-0x47*/
- 0xcee7, 0xbbdc, 0xb0eb, 0x8562, 0x8563, 0x8564, 0xbbaa, 0xd0ad, /*0x48-0x4f*/
- 0x8565, 0xb1b0, 0xd7e4, 0xd7bf, 0x8566, 0xb5a5, 0xc2f4, 0xc4cf, /*0x50-0x57*/
- 0x8567, 0x8568, 0xb2a9, 0x8569, 0xb2b7, 0x856a, 0xb1e5, 0xdfb2, /*0x58-0x5f*/
- 0xd5bc, 0xbfa8, 0xc2ac, 0xd8d5, 0xc2b1, 0x856b, 0xd8d4, 0xced4, /*0x60-0x67*/
- 0x856c, 0xdae0, 0x856d, 0xcec0, 0x856e, 0x856f, 0xd8b4, 0xc3ae, /*0x68-0x6f*/
- 0xd3a1, 0xcea3, 0x8570, 0xbcb4, 0xc8b4, 0xc2d1, 0x8571, 0xbeed, /*0x70-0x77*/
- 0xd0b6, 0x8572, 0xdae1, 0x8573, 0x8574, 0x8575, 0x8576, 0xc7e4, /*0x78-0x7f*/
- 0x8577, 0x8578, 0xb3a7, 0x8579, 0xb6f2, 0xccfc, 0xc0fa, 0x857a, /*0x80-0x87*/
- 0x857b, 0xc0f7, 0x857c, 0xd1b9, 0xd1e1, 0xd8c7, 0x857d, 0x857e, /*0x88-0x8f*/
- 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0xb2de, 0x8585, 0x8586, /*0x90-0x97*/
- 0xc0e5, 0x8587, 0xbaf1, 0x8588, 0x8589, 0xd8c8, 0x858a, 0xd4ad, /*0x98-0x9f*/
- 0x858b, 0x858c, 0xcfe1, 0xd8c9, 0x858d, 0xd8ca, 0xcfc3, 0x858e, /*0xa0-0xa7*/
- 0xb3f8, 0xbec7, 0x858f, 0x8590, 0x8591, 0x8592, 0xd8cb, 0x8593, /*0xa8-0xaf*/
- 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, 0xdbcc, 0x859a, /*0xb0-0xb7*/
- 0x859b, 0x859c, 0x859d, 0xc8a5, 0x859e, 0x859f, 0x85a0, 0xcfd8, /*0xb8-0xbf*/
- 0x85a1, 0xc8fe, 0xb2ce, 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, /*0xc0-0xc7*/
- 0xd3d6, 0xb2e6, 0xbcb0, 0xd3d1, 0xcbab, 0xb7b4, 0x85a7, 0x85a8, /*0xc8-0xcf*/
- 0x85a9, 0xb7a2, 0x85aa, 0x85ab, 0xcae5, 0x85ac, 0xc8a1, 0xcadc, /*0xd0-0xd7*/
- 0xb1e4, 0xd0f0, 0x85ad, 0xc5d1, 0x85ae, 0x85af, 0x85b0, 0xdbc5, /*0xd8-0xdf*/
- 0xb5fe, 0x85b1, 0x85b2, 0xbfda, 0xb9c5, 0xbee4, 0xc1ed, 0x85b3, /*0xe0-0xe7*/
- 0xdfb6, 0xdfb5, 0xd6bb, 0xbdd0, 0xd5d9, 0xb0c8, 0xb6a3, 0xbfc9, /*0xe8-0xef*/
- 0xcca8, 0xdfb3, 0xcab7, 0xd3d2, 0x85b4, 0xd8cf, 0xd2b6, 0xbac5, /*0xf0-0xf7*/
- 0xcbbe, 0xccbe, 0x85b5, 0xdfb7, 0xb5f0, 0xdfb4, 0x85b6, 0x85b7, /*0xf8-0xff*/
- /* 0x5400 */
- 0x85b8, 0xd3f5, 0x85b9, 0xb3d4, 0xb8f7, 0x85ba, 0xdfba, 0x85bb, /*0x00-0x07*/
- 0xbacf, 0xbcaa, 0xb5f5, 0x85bc, 0xcdac, 0xc3fb, 0xbaf3, 0xc0f4, /*0x08-0x0f*/
- 0xcdc2, 0xcff2, 0xdfb8, 0xcfc5, 0x85bd, 0xc2c0, 0xdfb9, 0xc2f0, /*0x10-0x17*/
- 0x85be, 0x85bf, 0x85c0, 0xbefd, 0x85c1, 0xc1df, 0xcdcc, 0xd2f7, /*0x18-0x1f*/
- 0xb7cd, 0xdfc1, 0x85c2, 0xdfc4, 0x85c3, 0x85c4, 0xb7f1, 0xb0c9, /*0x20-0x27*/
- 0xb6d6, 0xb7d4, 0x85c5, 0xbaac, 0xccfd, 0xbfd4, 0xcbb1, 0xc6f4, /*0x28-0x2f*/
- 0x85c6, 0xd6a8, 0xdfc5, 0x85c7, 0xcee2, 0xb3b3, 0x85c8, 0x85c9, /*0x30-0x37*/
- 0xcefc, 0xb4b5, 0x85ca, 0xcec7, 0xbaf0, 0x85cb, 0xcee1, 0x85cc, /*0x38-0x3f*/
- 0xd1bd, 0x85cd, 0x85ce, 0xdfc0, 0x85cf, 0x85d0, 0xb4f4, 0x85d1, /*0x40-0x47*/
- 0xb3ca, 0x85d2, 0xb8e6, 0xdfbb, 0x85d3, 0x85d4, 0x85d5, 0x85d6, /*0x48-0x4f*/
- 0xc4c5, 0x85d7, 0xdfbc, 0xdfbd, 0xdfbe, 0xc5bb, 0xdfbf, 0xdfc2, /*0x50-0x57*/
- 0xd4b1, 0xdfc3, 0x85d8, 0xc7ba, 0xced8, 0x85d9, 0x85da, 0x85db, /*0x58-0x5f*/
- 0x85dc, 0x85dd, 0xc4d8, 0x85de, 0xdfca, 0x85df, 0xdfcf, 0x85e0, /*0x60-0x67*/
- 0xd6dc, 0x85e1, 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7, /*0x68-0x6f*/
- 0x85e8, 0xdfc9, 0xdfda, 0xceb6, 0x85e9, 0xbac7, 0xdfce, 0xdfc8, /*0x70-0x77*/
- 0xc5de, 0x85ea, 0x85eb, 0xc9eb, 0xbaf4, 0xc3fc, 0x85ec, 0x85ed, /*0x78-0x7f*/
- 0xbed7, 0x85ee, 0xdfc6, 0x85ef, 0xdfcd, 0x85f0, 0xc5d8, 0x85f1, /*0x80-0x87*/
- 0x85f2, 0x85f3, 0x85f4, 0xd5a6, 0xbacd, 0x85f5, 0xbecc, 0xd3bd, /*0x88-0x8f*/
- 0xb8c0, 0x85f6, 0xd6e4, 0x85f7, 0xdfc7, 0xb9be, 0xbfa7, 0x85f8, /*0x90-0x97*/
- 0x85f9, 0xc1fc, 0xdfcb, 0xdfcc, 0x85fa, 0xdfd0, 0x85fb, 0x85fc, /*0x98-0x9f*/
- 0x85fd, 0x85fe, 0x8640, 0xdfdb, 0xdfe5, 0x8641, 0xdfd7, 0xdfd6, /*0xa0-0xa7*/
- 0xd7c9, 0xdfe3, 0xdfe4, 0xe5eb, 0xd2a7, 0xdfd2, 0x8642, 0xbfa9, /*0xa8-0xaf*/
- 0x8643, 0xd4db, 0x8644, 0xbfc8, 0xdfd4, 0x8645, 0x8646, 0x8647, /*0xb0-0xb7*/
- 0xcfcc, 0x8648, 0x8649, 0xdfdd, 0x864a, 0xd1ca, 0x864b, 0xdfde, /*0xb8-0xbf*/
- 0xb0a7, 0xc6b7, 0xdfd3, 0x864c, 0xbae5, 0x864d, 0xb6df, 0xcddb, /*0xc0-0xc7*/
- 0xb9fe, 0xd4d5, 0x864e, 0x864f, 0xdfdf, 0xcfec, 0xb0a5, 0xdfe7, /*0xc8-0xcf*/
- 0xdfd1, 0xd1c6, 0xdfd5, 0xdfd8, 0xdfd9, 0xdfdc, 0x8650, 0xbba9, /*0xd0-0xd7*/
- 0x8651, 0xdfe0, 0xdfe1, 0x8652, 0xdfe2, 0xdfe6, 0xdfe8, 0xd3b4, /*0xd8-0xdf*/
- 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0xb8e7, 0xc5b6, 0xdfea, /*0xe0-0xe7*/
- 0xc9da, 0xc1a8, 0xc4c4, 0x8658, 0x8659, 0xbfde, 0xcff8, 0x865a, /*0xe8-0xef*/
- 0x865b, 0x865c, 0xd5dc, 0xdfee, 0x865d, 0x865e, 0x865f, 0x8660, /*0xf0-0xf7*/
- 0x8661, 0x8662, 0xb2b8, 0x8663, 0xbadf, 0xdfec, 0x8664, 0xdbc1, /*0xf8-0xff*/
- /* 0x5500 */
- 0x8665, 0xd1e4, 0x8666, 0x8667, 0x8668, 0x8669, 0xcbf4, 0xb4bd, /*0x00-0x07*/
- 0x866a, 0xb0a6, 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, 0xdff1, /*0x08-0x0f*/
- 0xccc6, 0xdff2, 0x8670, 0x8671, 0xdfed, 0x8672, 0x8673, 0x8674, /*0x10-0x17*/
- 0x8675, 0x8676, 0x8677, 0xdfe9, 0x8678, 0x8679, 0x867a, 0x867b, /*0x18-0x1f*/
- 0xdfeb, 0x867c, 0xdfef, 0xdff0, 0xbbbd, 0x867d, 0x867e, 0xdff3, /*0x20-0x27*/
- 0x8680, 0x8681, 0xdff4, 0x8682, 0xbba3, 0x8683, 0xcadb, 0xcea8, /*0x28-0x2f*/
- 0xe0a7, 0xb3aa, 0x8684, 0xe0a6, 0x8685, 0x8686, 0x8687, 0xe0a1, /*0x30-0x37*/
- 0x8688, 0x8689, 0x868a, 0x868b, 0xdffe, 0x868c, 0xcdd9, 0xdffc, /*0x38-0x3f*/
- 0x868d, 0xdffa, 0x868e, 0xbfd0, 0xd7c4, 0x868f, 0xc9cc, 0x8690, /*0x40-0x47*/
- 0x8691, 0xdff8, 0xb0a1, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696, /*0x48-0x4f*/
- 0xdffd, 0x8697, 0x8698, 0x8699, 0x869a, 0xdffb, 0xe0a2, 0x869b, /*0x50-0x57*/
- 0x869c, 0x869d, 0x869e, 0x869f, 0xe0a8, 0x86a0, 0x86a1, 0x86a2, /*0x58-0x5f*/
- 0x86a3, 0xb7c8, 0x86a4, 0x86a5, 0xc6a1, 0xc9b6, 0xc0b2, 0xdff5, /*0x60-0x67*/
- 0x86a6, 0x86a7, 0xc5be, 0x86a8, 0xd8c4, 0xdff9, 0xc4f6, 0x86a9, /*0x68-0x6f*/
- 0x86aa, 0x86ab, 0x86ac, 0x86ad, 0x86ae, 0xe0a3, 0xe0a4, 0xe0a5, /*0x70-0x77*/
- 0xd0a5, 0x86af, 0x86b0, 0xe0b4, 0xcce4, 0x86b1, 0xe0b1, 0x86b2, /*0x78-0x7f*/
- 0xbfa6, 0xe0af, 0xceb9, 0xe0ab, 0xc9c6, 0x86b3, 0x86b4, 0xc0ae, /*0x80-0x87*/
- 0xe0ae, 0xbaed, 0xbab0, 0xe0a9, 0x86b5, 0x86b6, 0x86b7, 0xdff6, /*0x88-0x8f*/
- 0x86b8, 0xe0b3, 0x86b9, 0x86ba, 0xe0b8, 0x86bb, 0x86bc, 0x86bd, /*0x90-0x97*/
- 0xb4ad, 0xe0b9, 0x86be, 0x86bf, 0xcfb2, 0xbac8, 0x86c0, 0xe0b0, /*0x98-0x9f*/
- 0x86c1, 0x86c2, 0x86c3, 0x86c4, 0x86c5, 0x86c6, 0x86c7, 0xd0fa, /*0xa0-0xa7*/
- 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc, 0x86cd, 0x86ce, 0x86cf, /*0xa8-0xaf*/
- 0x86d0, 0xe0ac, 0x86d1, 0xd4fb, 0x86d2, 0xdff7, 0x86d3, 0xc5e7, /*0xb0-0xb7*/
- 0x86d4, 0xe0ad, 0x86d5, 0xd3f7, 0x86d6, 0xe0b6, 0xe0b7, 0x86d7, /*0xb8-0xbf*/
- 0x86d8, 0x86d9, 0x86da, 0x86db, 0xe0c4, 0xd0e1, 0x86dc, 0x86dd, /*0xc0-0xc7*/
- 0x86de, 0xe0bc, 0x86df, 0x86e0, 0xe0c9, 0xe0ca, 0x86e1, 0x86e2, /*0xc8-0xcf*/
- 0x86e3, 0xe0be, 0xe0aa, 0xc9a4, 0xe0c1, 0x86e4, 0xe0b2, 0x86e5, /*0xd0-0xd7*/
- 0x86e6, 0x86e7, 0x86e8, 0x86e9, 0xcac8, 0xe0c3, 0x86ea, 0xe0b5, /*0xd8-0xdf*/
- 0x86eb, 0xcecb, 0x86ec, 0xcbc3, 0xe0cd, 0xe0c6, 0xe0c2, 0x86ed, /*0xe0-0xe7*/
- 0xe0cb, 0x86ee, 0xe0ba, 0xe0bf, 0xe0c0, 0x86ef, 0x86f0, 0xe0c5, /*0xe8-0xef*/
- 0x86f1, 0x86f2, 0xe0c7, 0xe0c8, 0x86f3, 0xe0cc, 0x86f4, 0xe0bb, /*0xf0-0xf7*/
- 0x86f5, 0x86f6, 0x86f7, 0x86f8, 0x86f9, 0xcbd4, 0xe0d5, 0x86fa, /*0xf8-0xff*/
- /* 0x5600 */
- 0xe0d6, 0xe0d2, 0x86fb, 0x86fc, 0x86fd, 0x86fe, 0x8740, 0x8741, /*0x00-0x07*/
- 0xe0d0, 0xbcce, 0x8742, 0x8743, 0xe0d1, 0x8744, 0xb8c2, 0xd8c5, /*0x08-0x0f*/
- 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, /*0x10-0x17*/
- 0xd0ea, 0x874d, 0x874e, 0xc2ef, 0x874f, 0x8750, 0xe0cf, 0xe0bd, /*0x18-0x1f*/
- 0x8751, 0x8752, 0x8753, 0xe0d4, 0xe0d3, 0x8754, 0x8755, 0xe0d7, /*0x20-0x27*/
- 0x8756, 0x8757, 0x8758, 0x8759, 0xe0dc, 0xe0d8, 0x875a, 0x875b, /*0x28-0x2f*/
- 0x875c, 0xd6f6, 0xb3b0, 0x875d, 0xd7ec, 0x875e, 0xcbbb, 0x875f, /*0x30-0x37*/
- 0x8760, 0xe0da, 0x8761, 0xcefb, 0x8762, 0x8763, 0x8764, 0xbad9, /*0x38-0x3f*/
- 0x8765, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, /*0x40-0x47*/
- 0x876d, 0x876e, 0x876f, 0x8770, 0xe0e1, 0xe0dd, 0xd2ad, 0x8771, /*0x48-0x4f*/
- 0x8772, 0x8773, 0x8774, 0x8775, 0xe0e2, 0x8776, 0x8777, 0xe0db, /*0x50-0x57*/
- 0xe0d9, 0xe0df, 0x8778, 0x8779, 0xe0e0, 0x877a, 0x877b, 0x877c, /*0x58-0x5f*/
- 0x877d, 0x877e, 0xe0de, 0x8780, 0xe0e4, 0x8781, 0x8782, 0x8783, /*0x60-0x67*/
- 0xc6f7, 0xd8ac, 0xd4eb, 0xe0e6, 0xcac9, 0x8784, 0x8785, 0x8786, /*0x68-0x6f*/
- 0x8787, 0xe0e5, 0x8788, 0x8789, 0x878a, 0x878b, 0xb8c1, 0x878c, /*0x70-0x77*/
- 0x878d, 0x878e, 0x878f, 0xe0e7, 0xe0e8, 0x8790, 0x8791, 0x8792, /*0x78-0x7f*/
- 0x8793, 0x8794, 0x8795, 0x8796, 0x8797, 0xe0e9, 0xe0e3, 0x8798, /*0x80-0x87*/
- 0x8799, 0x879a, 0x879b, 0x879c, 0x879d, 0x879e, 0xbabf, 0xcce7, /*0x88-0x8f*/
- 0x879f, 0x87a0, 0x87a1, 0xe0ea, 0x87a2, 0x87a3, 0x87a4, 0x87a5, /*0x90-0x97*/
- 0x87a6, 0x87a7, 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, /*0x98-0x9f*/
- 0x87ae, 0x87af, 0x87b0, 0xcff9, 0x87b1, 0x87b2, 0x87b3, 0x87b4, /*0xa0-0xa7*/
- 0x87b5, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0xe0eb, /*0xa8-0xaf*/
- 0x87bc, 0x87bd, 0x87be, 0x87bf, 0x87c0, 0x87c1, 0x87c2, 0xc8c2, /*0xb0-0xb7*/
- 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0xbdc0, 0x87c7, 0x87c8, 0x87c9, /*0xb8-0xbf*/
- 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d1, /*0xc0-0xc7*/
- 0x87d2, 0x87d3, 0xc4d2, 0x87d4, 0x87d5, 0x87d6, 0x87d7, 0x87d8, /*0xc8-0xcf*/
- 0x87d9, 0x87da, 0x87db, 0x87dc, 0xe0ec, 0x87dd, 0x87de, 0xe0ed, /*0xd0-0xd7*/
- 0x87df, 0x87e0, 0xc7f4, 0xcbc4, 0x87e1, 0xe0ee, 0xbbd8, 0xd8b6, /*0xd8-0xdf*/
- 0xd2f2, 0xe0ef, 0xcdc5, 0x87e2, 0xb6da, 0x87e3, 0x87e4, 0x87e5, /*0xe0-0xe7*/
- 0x87e6, 0x87e7, 0x87e8, 0xe0f1, 0x87e9, 0xd4b0, 0x87ea, 0x87eb, /*0xe8-0xef*/
- 0xc0a7, 0xb4d1, 0x87ec, 0x87ed, 0xcea7, 0xe0f0, 0x87ee, 0x87ef, /*0xf0-0xf7*/
- 0x87f0, 0xe0f2, 0xb9cc, 0x87f1, 0x87f2, 0xb9fa, 0xcdbc, 0xe0f3, /*0xf8-0xff*/
- /* 0x5700 */
- 0x87f3, 0x87f4, 0x87f5, 0xc6d4, 0xe0f4, 0x87f6, 0xd4b2, 0x87f7, /*0x00-0x07*/
- 0xc8a6, 0xe0f6, 0xe0f5, 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, /*0x08-0x0f*/
- 0x87fd, 0x87fe, 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, /*0x10-0x17*/
- 0x8846, 0x8847, 0x8848, 0x8849, 0xe0f7, 0x884a, 0x884b, 0xcdc1, /*0x18-0x1f*/
- 0x884c, 0x884d, 0x884e, 0xcaa5, 0x884f, 0x8850, 0x8851, 0x8852, /*0x20-0x27*/
- 0xd4da, 0xdbd7, 0xdbd9, 0x8853, 0xdbd8, 0xb9e7, 0xdbdc, 0xdbdd, /*0x28-0x2f*/
- 0xb5d8, 0x8854, 0x8855, 0xdbda, 0x8856, 0x8857, 0x8858, 0x8859, /*0x30-0x37*/
- 0x885a, 0xdbdb, 0xb3a1, 0xdbdf, 0x885b, 0x885c, 0xbbf8, 0x885d, /*0x38-0x3f*/
- 0xd6b7, 0x885e, 0xdbe0, 0x885f, 0x8860, 0x8861, 0x8862, 0xbef9, /*0x40-0x47*/
- 0x8863, 0x8864, 0xb7bb, 0x8865, 0xdbd0, 0xccae, 0xbfb2, 0xbbb5, /*0x48-0x4f*/
- 0xd7f8, 0xbfd3, 0x8866, 0x8867, 0x8868, 0x8869, 0x886a, 0xbfe9, /*0x50-0x57*/
- 0x886b, 0x886c, 0xbce1, 0xccb3, 0xdbde, 0xb0d3, 0xceeb, 0xb7d8, /*0x58-0x5f*/
- 0xd7b9, 0xc6c2, 0x886d, 0x886e, 0xc0a4, 0x886f, 0xccb9, 0x8870, /*0x60-0x67*/
- 0xdbe7, 0xdbe1, 0xc6ba, 0xdbe3, 0x8871, 0xdbe8, 0x8872, 0xc5f7, /*0x68-0x6f*/
- 0x8873, 0x8874, 0x8875, 0xdbea, 0x8876, 0x8877, 0xdbe9, 0xbfc0, /*0x70-0x77*/
- 0x8878, 0x8879, 0x887a, 0xdbe6, 0xdbe5, 0x887b, 0x887c, 0x887d, /*0x78-0x7f*/
- 0x887e, 0x8880, 0xb4b9, 0xc0ac, 0xc2a2, 0xdbe2, 0xdbe4, 0x8881, /*0x80-0x87*/
- 0x8882, 0x8883, 0x8884, 0xd0cd, 0xdbed, 0x8885, 0x8886, 0x8887, /*0x88-0x8f*/
- 0x8888, 0x8889, 0xc0dd, 0xdbf2, 0x888a, 0x888b, 0x888c, 0x888d, /*0x90-0x97*/
- 0x888e, 0x888f, 0x8890, 0xb6e2, 0x8891, 0x8892, 0x8893, 0x8894, /*0x98-0x9f*/
- 0xdbf3, 0xdbd2, 0xb9b8, 0xd4ab, 0xdbec, 0x8895, 0xbfd1, 0xdbf0, /*0xa0-0xa7*/
- 0x8896, 0xdbd1, 0x8897, 0xb5e6, 0x8898, 0xdbeb, 0xbfe5, 0x8899, /*0xa8-0xaf*/
- 0x889a, 0x889b, 0xdbee, 0x889c, 0xdbf1, 0x889d, 0x889e, 0x889f, /*0xb0-0xb7*/
- 0xdbf9, 0x88a0, 0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6, /*0xb8-0xbf*/
- 0x88a7, 0x88a8, 0xb9a1, 0xb0a3, 0x88a9, 0x88aa, 0x88ab, 0x88ac, /*0xc0-0xc7*/
- 0x88ad, 0x88ae, 0x88af, 0xc2f1, 0x88b0, 0x88b1, 0xb3c7, 0xdbef, /*0xc8-0xcf*/
- 0x88b2, 0x88b3, 0xdbf8, 0x88b4, 0xc6d2, 0xdbf4, 0x88b5, 0x88b6, /*0xd0-0xd7*/
- 0xdbf5, 0xdbf7, 0xdbf6, 0x88b7, 0x88b8, 0xdbfe, 0x88b9, 0xd3f2, /*0xd8-0xdf*/
- 0xb2ba, 0x88ba, 0x88bb, 0x88bc, 0xdbfd, 0x88bd, 0x88be, 0x88bf, /*0xe0-0xe7*/
- 0x88c0, 0x88c1, 0x88c2, 0x88c3, 0x88c4, 0xdca4, 0x88c5, 0xdbfb, /*0xe8-0xef*/
- 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0xdbfa, 0x88ca, 0x88cb, 0x88cc, /*0xf0-0xf7*/
- 0xdbfc, 0xc5e0, 0xbbf9, 0x88cd, 0x88ce, 0xdca3, 0x88cf, 0x88d0, /*0xf8-0xff*/
- /* 0x5800 */
- 0xdca5, 0x88d1, 0xccc3, 0x88d2, 0x88d3, 0x88d4, 0xb6d1, 0xddc0, /*0x00-0x07*/
- 0x88d5, 0x88d6, 0x88d7, 0xdca1, 0x88d8, 0xdca2, 0x88d9, 0x88da, /*0x08-0x0f*/
- 0x88db, 0xc7b5, 0x88dc, 0x88dd, 0x88de, 0xb6e9, 0x88df, 0x88e0, /*0x10-0x17*/
- 0x88e1, 0xdca7, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0xdca6, 0x88e6, /*0x18-0x1f*/
- 0xdca9, 0xb1a4, 0x88e7, 0x88e8, 0xb5cc, 0x88e9, 0x88ea, 0x88eb, /*0x20-0x27*/
- 0x88ec, 0x88ed, 0xbfb0, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f2, /*0x28-0x2f*/
- 0xd1df, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0xb6c2, 0x88f7, 0x88f8, /*0x30-0x37*/
- 0x88f9, 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x8940, 0x8941, /*0x38-0x3f*/
- 0x8942, 0x8943, 0x8944, 0x8945, 0xdca8, 0x8946, 0x8947, 0x8948, /*0x40-0x47*/
- 0x8949, 0x894a, 0x894b, 0x894c, 0xcbfa, 0xebf3, 0x894d, 0x894e, /*0x48-0x4f*/
- 0x894f, 0xcbdc, 0x8950, 0x8951, 0xcbfe, 0x8952, 0x8953, 0x8954, /*0x50-0x57*/
- 0xccc1, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0xc8fb, 0x895a, /*0x58-0x5f*/
- 0x895b, 0x895c, 0x895d, 0x895e, 0x895f, 0xdcaa, 0x8960, 0x8961, /*0x60-0x67*/
- 0x8962, 0x8963, 0x8964, 0xccee, 0xdcab, 0x8965, 0x8966, 0x8967, /*0x68-0x6f*/
- 0x8968, 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, /*0x70-0x77*/
- 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0xdbd3, 0x8976, /*0x78-0x7f*/
- 0xdcaf, 0xdcac, 0x8977, 0xbeb3, 0x8978, 0xcafb, 0x8979, 0x897a, /*0x80-0x87*/
- 0x897b, 0xdcad, 0x897c, 0x897d, 0x897e, 0x8980, 0x8981, 0x8982, /*0x88-0x8f*/
- 0x8983, 0x8984, 0xc9ca, 0xc4b9, 0x8985, 0x8986, 0x8987, 0x8988, /*0x90-0x97*/
- 0x8989, 0xc7bd, 0xdcae, 0x898a, 0x898b, 0x898c, 0xd4f6, 0xd0e6, /*0x98-0x9f*/
- 0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8992, 0x8993, 0x8994, /*0xa0-0xa7*/
- 0xc4ab, 0xb6d5, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899a, /*0xa8-0xaf*/
- 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1, 0x89a2, /*0xb0-0xb7*/
- 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0xdbd4, 0x89a7, 0x89a8, 0x89a9, /*0xb8-0xbf*/
- 0x89aa, 0xb1da, 0x89ab, 0x89ac, 0x89ad, 0xdbd5, 0x89ae, 0x89af, /*0xc0-0xc7*/
- 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, /*0xc8-0xcf*/
- 0x89b8, 0xdbd6, 0x89b9, 0x89ba, 0x89bb, 0xbabe, 0x89bc, 0x89bd, /*0xd0-0xd7*/
- 0x89be, 0x89bf, 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5, /*0xd8-0xdf*/
- 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0xc8c0, 0x89ca, 0x89cb, 0x89cc, /*0xe0-0xe7*/
- 0x89cd, 0x89ce, 0x89cf, 0xcabf, 0xc8c9, 0x89d0, 0xd7b3, 0x89d1, /*0xe8-0xef*/
- 0xc9f9, 0x89d2, 0x89d3, 0xbfc7, 0x89d4, 0x89d5, 0xbaf8, 0x89d6, /*0xf0-0xf7*/
- 0x89d7, 0xd2bc, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd, /*0xf8-0xff*/
- /* 0x5900 */
- 0x89de, 0x89df, 0xe2ba, 0x89e0, 0xb4a6, 0x89e1, 0x89e2, 0xb1b8, /*0x00-0x07*/
- 0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7, 0xb8b4, 0x89e8, 0xcfc4, /*0x08-0x0f*/
- 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0xd9e7, 0xcfa6, 0xcde2, 0x89ed, /*0x10-0x17*/
- 0x89ee, 0xd9ed, 0xb6e0, 0x89ef, 0xd2b9, 0x89f0, 0x89f1, 0xb9bb, /*0x18-0x1f*/
- 0x89f2, 0x89f3, 0x89f4, 0x89f5, 0xe2b9, 0xe2b7, 0x89f6, 0xb4f3, /*0x20-0x27*/
- 0x89f7, 0xccec, 0xccab, 0xb7f2, 0x89f8, 0xd8b2, 0xd1eb, 0xbabb, /*0x28-0x2f*/
- 0x89f9, 0xcaa7, 0x89fa, 0x89fb, 0xcdb7, 0x89fc, 0x89fd, 0xd2c4, /*0x30-0x37*/
- 0xbfe4, 0xbcd0, 0xb6e1, 0x89fe, 0xdec5, 0x8a40, 0x8a41, 0x8a42, /*0x38-0x3f*/
- 0x8a43, 0xdec6, 0xdbbc, 0x8a44, 0xd1d9, 0x8a45, 0x8a46, 0xc6e6, /*0x40-0x47*/
- 0xc4ce, 0xb7ee, 0x8a47, 0xb7dc, 0x8a48, 0x8a49, 0xbffc, 0xd7e0, /*0x48-0x4f*/
- 0x8a4a, 0xc6f5, 0x8a4b, 0x8a4c, 0xb1bc, 0xdec8, 0xbdb1, 0xccd7, /*0x50-0x57*/
- 0xdeca, 0x8a4d, 0xdec9, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a52, /*0x58-0x5f*/
- 0xb5ec, 0x8a53, 0xc9dd, 0x8a54, 0x8a55, 0xb0c2, 0x8a56, 0x8a57, /*0x60-0x67*/
- 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f, /*0x68-0x6f*/
- 0x8a60, 0x8a61, 0x8a62, 0xc5ae, 0xc5ab, 0x8a63, 0xc4cc, 0x8a64, /*0x70-0x77*/
- 0xbce9, 0xcbfd, 0x8a65, 0x8a66, 0x8a67, 0xbac3, 0x8a68, 0x8a69, /*0x78-0x7f*/
- 0x8a6a, 0xe5f9, 0xc8e7, 0xe5fa, 0xcdfd, 0x8a6b, 0xd7b1, 0xb8be, /*0x80-0x87*/
- 0xc2e8, 0x8a6c, 0xc8d1, 0x8a6d, 0x8a6e, 0xe5fb, 0x8a6f, 0x8a70, /*0x88-0x8f*/
- 0x8a71, 0x8a72, 0xb6ca, 0xbccb, 0x8a73, 0x8a74, 0xd1fd, 0xe6a1, /*0x90-0x97*/
- 0x8a75, 0xc3ee, 0x8a76, 0x8a77, 0x8a78, 0x8a79, 0xe6a4, 0x8a7a, /*0x98-0x9f*/
- 0x8a7b, 0x8a7c, 0x8a7d, 0xe5fe, 0xe6a5, 0xcdd7, 0x8a7e, 0x8a80, /*0xa0-0xa7*/
- 0xb7c1, 0xe5fc, 0xe5fd, 0xe6a3, 0x8a81, 0x8a82, 0xc4dd, 0xe6a8, /*0xa8-0xaf*/
- 0x8a83, 0x8a84, 0xe6a7, 0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a89, /*0xb0-0xb7*/
- 0x8a8a, 0xc3c3, 0x8a8b, 0xc6de, 0x8a8c, 0x8a8d, 0xe6aa, 0x8a8e, /*0xb8-0xbf*/
- 0x8a8f, 0x8a90, 0x8a91, 0x8a92, 0x8a93, 0x8a94, 0xc4b7, 0x8a95, /*0xc0-0xc7*/
- 0x8a96, 0x8a97, 0xe6a2, 0xcabc, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, /*0xc8-0xcf*/
- 0xbde3, 0xb9c3, 0xe6a6, 0xd0d5, 0xceaf, 0x8a9c, 0x8a9d, 0xe6a9, /*0xd0-0xd7*/
- 0xe6b0, 0x8a9e, 0xd2a6, 0x8a9f, 0xbdaa, 0xe6ad, 0x8aa0, 0x8aa1, /*0xd8-0xdf*/
- 0x8aa2, 0x8aa3, 0x8aa4, 0xe6af, 0x8aa5, 0xc0d1, 0x8aa6, 0x8aa7, /*0xe0-0xe7*/
- 0xd2cc, 0x8aa8, 0x8aa9, 0x8aaa, 0xbca7, 0x8aab, 0x8aac, 0x8aad, /*0xe8-0xef*/
- 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, /*0xf0-0xf7*/
- 0x8ab6, 0xe6b1, 0x8ab7, 0xd2f6, 0x8ab8, 0x8ab9, 0x8aba, 0xd7cb, /*0xf8-0xff*/
- /* 0x5a00 */
- 0x8abb, 0xcdfe, 0x8abc, 0xcdde, 0xc2a6, 0xe6ab, 0xe6ac, 0xbdbf, /*0x00-0x07*/
- 0xe6ae, 0xe6b3, 0x8abd, 0x8abe, 0xe6b2, 0x8abf, 0x8ac0, 0x8ac1, /*0x08-0x0f*/
- 0x8ac2, 0xe6b6, 0x8ac3, 0xe6b8, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, /*0x10-0x17*/
- 0xc4ef, 0x8ac8, 0x8ac9, 0x8aca, 0xc4c8, 0x8acb, 0x8acc, 0xbeea, /*0x18-0x1f*/
- 0xc9ef, 0x8acd, 0x8ace, 0xe6b7, 0x8acf, 0xb6f0, 0x8ad0, 0x8ad1, /*0x20-0x27*/
- 0x8ad2, 0xc3e4, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, /*0x28-0x2f*/
- 0x8ad9, 0xd3e9, 0xe6b4, 0x8ada, 0xe6b5, 0x8adb, 0xc8a2, 0x8adc, /*0x30-0x37*/
- 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0xe6bd, 0x8ae1, 0x8ae2, 0x8ae3, /*0x38-0x3f*/
- 0xe6b9, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0xc6c5, 0x8ae9, /*0x40-0x47*/
- 0x8aea, 0xcdf1, 0xe6bb, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, /*0x48-0x4f*/
- 0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0xe6bc, 0x8af5, 0x8af6, /*0x50-0x57*/
- 0x8af7, 0x8af8, 0xbbe9, 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, /*0x58-0x5f*/
- 0x8afe, 0x8b40, 0xe6be, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0xe6ba, /*0x60-0x67*/
- 0x8b45, 0x8b46, 0xc0b7, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, /*0x68-0x6f*/
- 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0xd3a4, 0xe6bf, 0xc9f4, 0xe6c3, /*0x70-0x77*/
- 0x8b50, 0x8b51, 0xe6c4, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0xd0f6, /*0x78-0x7f*/
- 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, /*0x80-0x87*/
- 0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, /*0x88-0x8f*/
- 0x8b66, 0x8b67, 0xc3bd, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6c, /*0x90-0x97*/
- 0x8b6d, 0x8b6e, 0xc3c4, 0xe6c2, 0x8b6f, 0x8b70, 0x8b71, 0x8b72, /*0x98-0x9f*/
- 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79, 0x8b7a, /*0xa0-0xa7*/
- 0x8b7b, 0x8b7c, 0xe6c1, 0x8b7d, 0x8b7e, 0x8b80, 0x8b81, 0x8b82, /*0xa8-0xaf*/
- 0x8b83, 0x8b84, 0xe6c7, 0xcfb1, 0x8b85, 0xebf4, 0x8b86, 0x8b87, /*0xb0-0xb7*/
- 0xe6ca, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0xe6c5, 0x8b8d, /*0xb8-0xbf*/
- 0x8b8e, 0xbcde, 0xc9a9, 0x8b8f, 0x8b90, 0x8b91, 0x8b92, 0x8b93, /*0xc0-0xc7*/
- 0x8b94, 0xbcb5, 0x8b95, 0x8b96, 0xcfd3, 0x8b97, 0x8b98, 0x8b99, /*0xc8-0xcf*/
- 0x8b9a, 0x8b9b, 0xe6c8, 0x8b9c, 0xe6c9, 0x8b9d, 0xe6ce, 0x8b9e, /*0xd0-0xd7*/
- 0xe6d0, 0x8b9f, 0x8ba0, 0x8ba1, 0xe6d1, 0x8ba2, 0x8ba3, 0x8ba4, /*0xd8-0xdf*/
- 0xe6cb, 0xb5d5, 0x8ba5, 0xe6cc, 0x8ba6, 0x8ba7, 0xe6cf, 0x8ba8, /*0xe0-0xe7*/
- 0x8ba9, 0xc4db, 0x8baa, 0xe6c6, 0x8bab, 0x8bac, 0x8bad, 0x8bae, /*0xe8-0xef*/
- 0x8baf, 0xe6cd, 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3, 0x8bb4, 0x8bb5, /*0xf0-0xf7*/
- 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb, 0x8bbc, 0x8bbd, /*0xf8-0xff*/
- /* 0x5b00 */
- 0x8bbe, 0x8bbf, 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3, 0x8bc4, 0x8bc5, /*0x00-0x07*/
- 0x8bc6, 0xe6d2, 0x8bc7, 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb, 0x8bcc, /*0x08-0x0f*/
- 0x8bcd, 0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0x8bd2, 0xe6d4, 0xe6d3, /*0x10-0x17*/
- 0x8bd3, 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, 0x8bd8, 0x8bd9, 0x8bda, /*0x18-0x1f*/
- 0x8bdb, 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, 0x8be0, 0x8be1, 0x8be2, /*0x20-0x27*/
- 0x8be3, 0x8be4, 0x8be5, 0x8be6, 0x8be7, 0x8be8, 0x8be9, 0x8bea, /*0x28-0x2f*/
- 0x8beb, 0x8bec, 0xe6d5, 0x8bed, 0xd9f8, 0x8bee, 0x8bef, 0xe6d6, /*0x30-0x37*/
- 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3, 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7, /*0x38-0x3f*/
- 0xe6d7, 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb, 0x8bfc, 0x8bfd, 0x8bfe, /*0x40-0x47*/
- 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c46, 0x8c47, /*0x48-0x4f*/
- 0xd7d3, 0xe6dd, 0x8c48, 0xe6de, 0xbfd7, 0xd4d0, 0x8c49, 0xd7d6, /*0x50-0x57*/
- 0xb4e6, 0xcbef, 0xe6da, 0xd8c3, 0xd7ce, 0xd0a2, 0x8c4a, 0xc3cf, /*0x58-0x5f*/
- 0x8c4b, 0x8c4c, 0xe6df, 0xbcbe, 0xb9c2, 0xe6db, 0xd1a7, 0x8c4d, /*0x60-0x67*/
- 0x8c4e, 0xbaa2, 0xc2cf, 0x8c4f, 0xd8ab, 0x8c50, 0x8c51, 0x8c52, /*0x68-0x6f*/
- 0xcaeb, 0xe5ee, 0x8c53, 0xe6dc, 0x8c54, 0xb7f5, 0x8c55, 0x8c56, /*0x70-0x77*/
- 0x8c57, 0x8c58, 0xc8e6, 0x8c59, 0x8c5a, 0xc4f5, 0x8c5b, 0x8c5c, /*0x78-0x7f*/
- 0xe5b2, 0xc4fe, 0x8c5d, 0xcbfc, 0xe5b3, 0xd5ac, 0x8c5e, 0xd3ee, /*0x80-0x87*/
- 0xcad8, 0xb0b2, 0x8c5f, 0xcbce, 0xcdea, 0x8c60, 0x8c61, 0xbaea, /*0x88-0x8f*/
- 0x8c62, 0x8c63, 0x8c64, 0xe5b5, 0x8c65, 0xe5b4, 0x8c66, 0xd7da, /*0x90-0x97*/
- 0xb9d9, 0xd6e6, 0xb6a8, 0xcdf0, 0xd2cb, 0xb1a6, 0xcab5, 0x8c67, /*0x98-0x9f*/
- 0xb3e8, 0xc9f3, 0xbfcd, 0xd0fb, 0xcad2, 0xe5b6, 0xbbc2, 0x8c68, /*0xa0-0xa7*/
- 0x8c69, 0x8c6a, 0xcfdc, 0xb9ac, 0x8c6b, 0x8c6c, 0x8c6d, 0x8c6e, /*0xa8-0xaf*/
- 0xd4d7, 0x8c6f, 0x8c70, 0xbaa6, 0xd1e7, 0xcffc, 0xbcd2, 0x8c71, /*0xb0-0xb7*/
- 0xe5b7, 0xc8dd, 0x8c72, 0x8c73, 0x8c74, 0xbfed, 0xb1f6, 0xcbde, /*0xb8-0xbf*/
- 0x8c75, 0x8c76, 0xbcc5, 0x8c77, 0xbcc4, 0xd2fa, 0xc3dc, 0xbfdc, /*0xc0-0xc7*/
- 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0xb8bb, 0x8c7c, 0x8c7d, 0x8c7e, /*0xc8-0xcf*/
- 0xc3c2, 0x8c80, 0xbaae, 0xd4a2, 0x8c81, 0x8c82, 0x8c83, 0x8c84, /*0xd0-0xd7*/
- 0x8c85, 0x8c86, 0x8c87, 0x8c88, 0x8c89, 0xc7de, 0xc4af, 0xb2ec, /*0xd8-0xdf*/
- 0x8c8a, 0xb9d1, 0x8c8b, 0x8c8c, 0xe5bb, 0xc1c8, 0x8c8d, 0x8c8e, /*0xe0-0xe7*/
- 0xd5af, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0xe5bc, 0x8c94, /*0xe8-0xef*/
- 0xe5be, 0x8c95, 0x8c96, 0x8c97, 0x8c98, 0x8c99, 0x8c9a, 0x8c9b, /*0xf0-0xf7*/
- 0xb4e7, 0xb6d4, 0xcbc2, 0xd1b0, 0xb5bc, 0x8c9c, 0x8c9d, 0xcad9, /*0xf8-0xff*/
- /* 0x5c00 */
- 0x8c9e, 0xb7e2, 0x8c9f, 0x8ca0, 0xc9e4, 0x8ca1, 0xbdab, 0x8ca2, /*0x00-0x07*/
- 0x8ca3, 0xcebe, 0xd7f0, 0x8ca4, 0x8ca5, 0x8ca6, 0x8ca7, 0xd0a1, /*0x08-0x0f*/
- 0x8ca8, 0xc9d9, 0x8ca9, 0x8caa, 0xb6fb, 0xe6d8, 0xbce2, 0x8cab, /*0x10-0x17*/
- 0xb3be, 0x8cac, 0xc9d0, 0x8cad, 0xe6d9, 0xb3a2, 0x8cae, 0x8caf, /*0x18-0x1f*/
- 0x8cb0, 0x8cb1, 0xdecc, 0x8cb2, 0xd3c8, 0xdecd, 0x8cb3, 0xd2a2, /*0x20-0x27*/
- 0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7, 0xdece, 0x8cb8, 0x8cb9, 0x8cba, /*0x28-0x2f*/
- 0x8cbb, 0xbecd, 0x8cbc, 0x8cbd, 0xdecf, 0x8cbe, 0x8cbf, 0x8cc0, /*0x30-0x37*/
- 0xcaac, 0xd2fc, 0xb3df, 0xe5ea, 0xc4e1, 0xbea1, 0xceb2, 0xc4f2, /*0x38-0x3f*/
- 0xbed6, 0xc6a8, 0xb2e3, 0x8cc1, 0x8cc2, 0xbed3, 0x8cc3, 0x8cc4, /*0x40-0x47*/
- 0xc7fc, 0xcceb, 0xbdec, 0xcedd, 0x8cc5, 0x8cc6, 0xcaba, 0xc6c1, /*0x48-0x4f*/
- 0xe5ec, 0xd0bc, 0x8cc7, 0x8cc8, 0x8cc9, 0xd5b9, 0x8cca, 0x8ccb, /*0x50-0x57*/
- 0x8ccc, 0xe5ed, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0, 0xcaf4, 0x8cd1, /*0x58-0x5f*/
- 0xcdc0, 0xc2c5, 0x8cd2, 0xe5ef, 0x8cd3, 0xc2c4, 0xe5f0, 0x8cd4, /*0x60-0x67*/
- 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0xe5f8, 0xcdcd, /*0x68-0x6f*/
- 0x8cdb, 0xc9bd, 0x8cdc, 0x8cdd, 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, /*0x70-0x77*/
- 0x8ce2, 0xd2d9, 0xe1a8, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0xd3ec, /*0x78-0x7f*/
- 0x8ce7, 0xcbea, 0xc6f1, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, /*0x80-0x87*/
- 0xe1ac, 0x8ced, 0x8cee, 0x8cef, 0xe1a7, 0xe1a9, 0x8cf0, 0x8cf1, /*0x88-0x8f*/
- 0xe1aa, 0xe1af, 0x8cf2, 0x8cf3, 0xb2ed, 0x8cf4, 0xe1ab, 0xb8da, /*0x90-0x97*/
- 0xe1ad, 0xe1ae, 0xe1b0, 0xb5ba, 0xe1b1, 0x8cf5, 0x8cf6, 0x8cf7, /*0x98-0x9f*/
- 0x8cf8, 0x8cf9, 0xe1b3, 0xe1b8, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, /*0xa0-0xa7*/
- 0x8cfe, 0xd1d2, 0x8d40, 0xe1b6, 0xe1b5, 0xc1eb, 0x8d41, 0x8d42, /*0xa8-0xaf*/
- 0x8d43, 0xe1b7, 0x8d44, 0xd4c0, 0x8d45, 0xe1b2, 0x8d46, 0xe1ba, /*0xb0-0xb7*/
- 0xb0b6, 0x8d47, 0x8d48, 0x8d49, 0x8d4a, 0xe1b4, 0x8d4b, 0xbff9, /*0xb8-0xbf*/
- 0x8d4c, 0xe1b9, 0x8d4d, 0x8d4e, 0xe1bb, 0x8d4f, 0x8d50, 0x8d51, /*0xc0-0xc7*/
- 0x8d52, 0x8d53, 0x8d54, 0xe1be, 0x8d55, 0x8d56, 0x8d57, 0x8d58, /*0xc8-0xcf*/
- 0x8d59, 0x8d5a, 0xe1bc, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f, /*0xd0-0xd7*/
- 0x8d60, 0xd6c5, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, /*0xd8-0xdf*/
- 0x8d67, 0xcfbf, 0x8d68, 0x8d69, 0xe1bd, 0xe1bf, 0xc2cd, 0x8d6a, /*0xe0-0xe7*/
- 0xb6eb, 0x8d6b, 0xd3f8, 0x8d6c, 0x8d6d, 0xc7cd, 0x8d6e, 0x8d6f, /*0xe8-0xef*/
- 0xb7e5, 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, /*0xf0-0xf7*/
- 0x8d77, 0x8d78, 0x8d79, 0xbefe, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, /*0xf8-0xff*/
- /* 0x5d00 */
- 0x8d7e, 0x8d80, 0xe1c0, 0xe1c1, 0x8d81, 0x8d82, 0xe1c7, 0xb3e7, /*0x00-0x07*/
- 0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, 0x8d88, 0xc6e9, 0x8d89, /*0x08-0x0f*/
- 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0xb4de, 0x8d8e, 0xd1c2, 0x8d8f, /*0x10-0x17*/
- 0x8d90, 0x8d91, 0x8d92, 0xe1c8, 0x8d93, 0x8d94, 0xe1c6, 0x8d95, /*0x18-0x1f*/
- 0x8d96, 0x8d97, 0x8d98, 0x8d99, 0xe1c5, 0x8d9a, 0xe1c3, 0xe1c2, /*0x20-0x27*/
- 0x8d9b, 0xb1c0, 0x8d9c, 0x8d9d, 0x8d9e, 0xd5b8, 0xe1c4, 0x8d9f, /*0x28-0x2f*/
- 0x8da0, 0x8da1, 0x8da2, 0x8da3, 0xe1cb, 0x8da4, 0x8da5, 0x8da6, /*0x30-0x37*/
- 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0xe1cc, 0xe1ca, 0x8dac, /*0x38-0x3f*/
- 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1, 0x8db2, 0x8db3, 0xeffa, /*0x40-0x47*/
- 0x8db4, 0x8db5, 0xe1d3, 0xe1d2, 0xc7b6, 0x8db6, 0x8db7, 0x8db8, /*0x48-0x4f*/
- 0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, 0x8dc0, /*0x50-0x57*/
- 0xe1c9, 0x8dc1, 0x8dc2, 0xe1ce, 0x8dc3, 0xe1d0, 0x8dc4, 0x8dc5, /*0x58-0x5f*/
- 0x8dc6, 0x8dc7, 0x8dc8, 0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, /*0x60-0x67*/
- 0x8dce, 0xe1d4, 0x8dcf, 0xe1d1, 0xe1cd, 0x8dd0, 0x8dd1, 0xe1cf, /*0x68-0x6f*/
- 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0xe1d5, 0x8dd6, 0x8dd7, 0x8dd8, /*0x70-0x77*/
- 0x8dd9, 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, 0x8de0, /*0x78-0x7f*/
- 0x8de1, 0x8de2, 0xe1d6, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7, /*0x80-0x87*/
- 0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def, /*0x88-0x8f*/
- 0x8df0, 0x8df1, 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7, /*0x90-0x97*/
- 0x8df8, 0xe1d7, 0x8df9, 0x8dfa, 0x8dfb, 0xe1d8, 0x8dfc, 0x8dfd, /*0x98-0x9f*/
- 0x8dfe, 0x8e40, 0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, /*0xa0-0xa7*/
- 0x8e47, 0x8e48, 0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, /*0xa8-0xaf*/
- 0x8e4f, 0x8e50, 0x8e51, 0x8e52, 0x8e53, 0x8e54, 0x8e55, 0xe1da, /*0xb0-0xb7*/
- 0x8e56, 0x8e57, 0x8e58, 0x8e59, 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, /*0xb8-0xbf*/
- 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0xe1db, 0x8e63, 0x8e64, /*0xc0-0xc7*/
- 0x8e65, 0x8e66, 0x8e67, 0x8e68, 0x8e69, 0xcea1, 0x8e6a, 0x8e6b, /*0xc8-0xcf*/
- 0x8e6c, 0x8e6d, 0x8e6e, 0x8e6f, 0x8e70, 0x8e71, 0x8e72, 0x8e73, /*0xd0-0xd7*/
- 0x8e74, 0x8e75, 0x8e76, 0xe7dd, 0x8e77, 0xb4a8, 0xd6dd, 0x8e78, /*0xd8-0xdf*/
- 0x8e79, 0xd1b2, 0xb3b2, 0x8e7a, 0x8e7b, 0xb9a4, 0xd7f3, 0xc7c9, /*0xe0-0xe7*/
- 0xbede, 0xb9ae, 0x8e7c, 0xced7, 0x8e7d, 0x8e7e, 0xb2ee, 0xdbcf, /*0xe8-0xef*/
- 0x8e80, 0xbcba, 0xd2d1, 0xcbc8, 0xb0cd, 0x8e81, 0x8e82, 0xcfef, /*0xf0-0xf7*/
- 0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, 0xd9e3, 0xbded, 0x8e88, /*0xf8-0xff*/
- /* 0x5e00 */
- 0x8e89, 0xb1d2, 0xcad0, 0xb2bc, 0x8e8a, 0xcba7, 0xb7ab, 0x8e8b, /*0x00-0x07*/
- 0xcaa6, 0x8e8c, 0x8e8d, 0x8e8e, 0xcfa3, 0x8e8f, 0x8e90, 0xe0f8, /*0x08-0x0f*/
- 0xd5ca, 0xe0fb, 0x8e91, 0x8e92, 0xe0fa, 0xc5c1, 0xccfb, 0x8e93, /*0x10-0x17*/
- 0xc1b1, 0xe0f9, 0xd6e3, 0xb2af, 0xd6c4, 0xb5db, 0x8e94, 0x8e95, /*0x18-0x1f*/
- 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0xb4f8, 0xd6a1, /*0x20-0x27*/
- 0x8e9c, 0x8e9d, 0x8e9e, 0x8e9f, 0x8ea0, 0xcfaf, 0xb0ef, 0x8ea1, /*0x28-0x2f*/
- 0x8ea2, 0xe0fc, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7, 0xe1a1, /*0x30-0x37*/
- 0xb3a3, 0x8ea8, 0x8ea9, 0xe0fd, 0xe0fe, 0xc3b1, 0x8eaa, 0x8eab, /*0x38-0x3f*/
- 0x8eac, 0x8ead, 0xc3dd, 0x8eae, 0xe1a2, 0xb7f9, 0x8eaf, 0x8eb0, /*0x40-0x47*/
- 0x8eb1, 0x8eb2, 0x8eb3, 0x8eb4, 0xbbcf, 0x8eb5, 0x8eb6, 0x8eb7, /*0x48-0x4f*/
- 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0xe1a3, 0xc4bb, 0x8ebc, 0x8ebd, /*0x50-0x57*/
- 0x8ebe, 0x8ebf, 0x8ec0, 0xe1a4, 0x8ec1, 0x8ec2, 0xe1a5, 0x8ec3, /*0x58-0x5f*/
- 0x8ec4, 0xe1a6, 0xb4b1, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, /*0x60-0x67*/
- 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf, 0x8ed0, 0x8ed1, /*0x68-0x6f*/
- 0x8ed2, 0x8ed3, 0xb8c9, 0xc6bd, 0xc4ea, 0x8ed4, 0xb2a2, 0x8ed5, /*0x70-0x77*/
- 0xd0d2, 0x8ed6, 0xe7db, 0xbbc3, 0xd3d7, 0xd3c4, 0x8ed7, 0xb9e3, /*0x78-0x7f*/
- 0xe2cf, 0x8ed8, 0x8ed9, 0x8eda, 0xd7af, 0x8edb, 0xc7ec, 0xb1d3, /*0x80-0x87*/
- 0x8edc, 0x8edd, 0xb4b2, 0xe2d1, 0x8ede, 0x8edf, 0x8ee0, 0xd0f2, /*0x88-0x8f*/
- 0xc2ae, 0xe2d0, 0x8ee1, 0xbfe2, 0xd3a6, 0xb5d7, 0xe2d2, 0xb5ea, /*0x90-0x97*/
- 0x8ee2, 0xc3ed, 0xb8fd, 0x8ee3, 0xb8ae, 0x8ee4, 0xc5d3, 0xb7cf, /*0x98-0x9f*/
- 0xe2d4, 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0xe2d3, 0xb6c8, 0xd7f9, /*0xa0-0xa7*/
- 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, 0x8eed, 0xcda5, 0x8eee, 0x8eef, /*0xa8-0xaf*/
- 0x8ef0, 0x8ef1, 0x8ef2, 0xe2d8, 0x8ef3, 0xe2d6, 0xcafc, 0xbfb5, /*0xb0-0xb7*/
- 0xd3b9, 0xe2d5, 0x8ef4, 0x8ef5, 0x8ef6, 0x8ef7, 0xe2d7, 0x8ef8, /*0xb8-0xbf*/
- 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8f40, 0x8f41, /*0xc0-0xc7*/
- 0x8f42, 0xc1ae, 0xc0c8, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47, /*0xc8-0xcf*/
- 0x8f48, 0xe2db, 0xe2da, 0xc0aa, 0x8f49, 0x8f4a, 0xc1ce, 0x8f4b, /*0xd0-0xd7*/
- 0x8f4c, 0x8f4d, 0x8f4e, 0xe2dc, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, /*0xd8-0xdf*/
- 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, /*0xe0-0xe7*/
- 0xe2dd, 0x8f5b, 0xe2de, 0x8f5c, 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, /*0xe8-0xef*/
- 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0xdbc8, 0x8f65, 0xd1d3, 0xcda2, /*0xf0-0xf7*/
- 0x8f66, 0x8f67, 0xbda8, 0x8f68, 0x8f69, 0x8f6a, 0xdec3, 0xd8a5, /*0xf8-0xff*/
- /* 0x5f00 */
- 0xbfaa, 0xdbcd, 0xd2ec, 0xc6fa, 0xc5aa, 0x8f6b, 0x8f6c, 0x8f6d, /*0x00-0x07*/
- 0xdec4, 0x8f6e, 0xb1d7, 0xdfae, 0x8f6f, 0x8f70, 0x8f71, 0xcabd, /*0x08-0x0f*/
- 0x8f72, 0xdfb1, 0x8f73, 0xb9ad, 0x8f74, 0xd2fd, 0x8f75, 0xb8a5, /*0x10-0x17*/
- 0xbaeb, 0x8f76, 0x8f77, 0xb3da, 0x8f78, 0x8f79, 0x8f7a, 0xb5dc, /*0x18-0x1f*/
- 0xd5c5, 0x8f7b, 0x8f7c, 0x8f7d, 0x8f7e, 0xc3d6, 0xcfd2, 0xbba1, /*0x20-0x27*/
- 0x8f80, 0xe5f3, 0xe5f2, 0x8f81, 0x8f82, 0xe5f4, 0x8f83, 0xcde4, /*0x28-0x2f*/
- 0x8f84, 0xc8f5, 0x8f85, 0x8f86, 0x8f87, 0x8f88, 0x8f89, 0x8f8a, /*0x30-0x37*/
- 0x8f8b, 0xb5af, 0xc7bf, 0x8f8c, 0xe5f6, 0x8f8d, 0x8f8e, 0x8f8f, /*0x38-0x3f*/
- 0xecb0, 0x8f90, 0x8f91, 0x8f92, 0x8f93, 0x8f94, 0x8f95, 0x8f96, /*0x40-0x47*/
- 0x8f97, 0x8f98, 0x8f99, 0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8f9e, /*0x48-0x4f*/
- 0xe5e6, 0x8f9f, 0xb9e9, 0xb5b1, 0x8fa0, 0xc2bc, 0xe5e8, 0xe5e7, /*0x50-0x57*/
- 0xe5e9, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0xd2cd, 0x8fa5, 0x8fa6, /*0x58-0x5f*/
- 0x8fa7, 0xe1ea, 0xd0ce, 0x8fa8, 0xcdae, 0x8fa9, 0xd1e5, 0x8faa, /*0x60-0x67*/
- 0x8fab, 0xb2ca, 0xb1eb, 0x8fac, 0xb1f2, 0xc5ed, 0x8fad, 0x8fae, /*0x68-0x6f*/
- 0xd5c3, 0xd3b0, 0x8faf, 0xe1dc, 0x8fb0, 0x8fb1, 0x8fb2, 0xe1dd, /*0x70-0x77*/
- 0x8fb3, 0xd2db, 0x8fb4, 0xb3b9, 0xb1cb, 0x8fb5, 0x8fb6, 0x8fb7, /*0x78-0x7f*/
- 0xcdf9, 0xd5f7, 0xe1de, 0x8fb8, 0xbeb6, 0xb4fd, 0x8fb9, 0xe1df, /*0x80-0x87*/
- 0xbadc, 0xe1e0, 0xbbb2, 0xc2c9, 0xe1e1, 0x8fba, 0x8fbb, 0x8fbc, /*0x88-0x8f*/
- 0xd0ec, 0x8fbd, 0xcdbd, 0x8fbe, 0x8fbf, 0xe1e2, 0x8fc0, 0xb5c3, /*0x90-0x97*/
- 0xc5c7, 0xe1e3, 0x8fc1, 0x8fc2, 0xe1e4, 0x8fc3, 0x8fc4, 0x8fc5, /*0x98-0x9f*/
- 0x8fc6, 0xd3f9, 0x8fc7, 0x8fc8, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, /*0xa0-0xa7*/
- 0xe1e5, 0x8fcd, 0xd1ad, 0x8fce, 0x8fcf, 0xe1e6, 0xcea2, 0x8fd0, /*0xa8-0xaf*/
- 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0xe1e7, 0x8fd6, 0xb5c2, /*0xb0-0xb7*/
- 0x8fd7, 0x8fd8, 0x8fd9, 0x8fda, 0xe1e8, 0xbbd5, 0x8fdb, 0x8fdc, /*0xb8-0xbf*/
- 0x8fdd, 0x8fde, 0x8fdf, 0xd0c4, 0xe2e0, 0xb1d8, 0xd2e4, 0x8fe0, /*0xc0-0xc7*/
- 0x8fe1, 0xe2e1, 0x8fe2, 0x8fe3, 0xbcc9, 0xc8cc, 0x8fe4, 0xe2e3, /*0xc8-0xcf*/
- 0xecfe, 0xecfd, 0xdfaf, 0x8fe5, 0x8fe6, 0x8fe7, 0xe2e2, 0xd6be, /*0xd0-0xd7*/
- 0xcdfc, 0xc3a6, 0x8fe8, 0x8fe9, 0x8fea, 0xe3c3, 0x8feb, 0x8fec, /*0xd8-0xdf*/
- 0xd6d2, 0xe2e7, 0x8fed, 0x8fee, 0xe2e8, 0x8fef, 0x8ff0, 0xd3c7, /*0xe0-0xe7*/
- 0x8ff1, 0x8ff2, 0xe2ec, 0xbfec, 0x8ff3, 0xe2ed, 0xe2e5, 0x8ff4, /*0xe8-0xef*/
- 0x8ff5, 0xb3c0, 0x8ff6, 0x8ff7, 0x8ff8, 0xc4ee, 0x8ff9, 0x8ffa, /*0xf0-0xf7*/
- 0xe2ee, 0x8ffb, 0x8ffc, 0xd0c3, 0x8ffd, 0xbaf6, 0xe2e9, 0xb7de, /*0xf8-0xff*/
- /* 0x6000 */
- 0xbbb3, 0xccac, 0xcbcb, 0xe2e4, 0xe2e6, 0xe2ea, 0xe2eb, 0x8ffe, /*0x00-0x07*/
- 0x9040, 0x9041, 0xe2f7, 0x9042, 0x9043, 0xe2f4, 0xd4f5, 0xe2f3, /*0x08-0x0f*/
- 0x9044, 0x9045, 0xc5ad, 0x9046, 0xd5fa, 0xc5c2, 0xb2c0, 0x9047, /*0x10-0x17*/
- 0x9048, 0xe2ef, 0x9049, 0xe2f2, 0xc1af, 0xcbbc, 0x904a, 0x904b, /*0x18-0x1f*/
- 0xb5a1, 0xe2f9, 0x904c, 0x904d, 0x904e, 0xbcb1, 0xe2f1, 0xd0d4, /*0x20-0x27*/
- 0xd4b9, 0xe2f5, 0xb9d6, 0xe2f6, 0x904f, 0x9050, 0x9051, 0xc7d3, /*0x28-0x2f*/
- 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0xe2f0, 0x9057, 0x9058, /*0x30-0x37*/
- 0x9059, 0x905a, 0x905b, 0xd7dc, 0xeda1, 0x905c, 0x905d, 0xe2f8, /*0x38-0x3f*/
- 0x905e, 0xeda5, 0xe2fe, 0xcad1, 0x905f, 0x9060, 0x9061, 0x9062, /*0x40-0x47*/
- 0x9063, 0x9064, 0x9065, 0xc1b5, 0x9066, 0xbbd0, 0x9067, 0x9068, /*0x48-0x4f*/
- 0xbfd6, 0x9069, 0xbae3, 0x906a, 0x906b, 0xcba1, 0x906c, 0x906d, /*0x50-0x57*/
- 0x906e, 0xeda6, 0xeda3, 0x906f, 0x9070, 0xeda2, 0x9071, 0x9072, /*0x58-0x5f*/
- 0x9073, 0x9074, 0xbbd6, 0xeda7, 0xd0f4, 0x9075, 0x9076, 0xeda4, /*0x60-0x67*/
- 0xbade, 0xb6f7, 0xe3a1, 0xb6b2, 0xccf1, 0xb9a7, 0x9077, 0xcfa2, /*0x68-0x6f*/
- 0xc7a1, 0x9078, 0x9079, 0xbfd2, 0x907a, 0x907b, 0xb6f1, 0x907c, /*0x70-0x77*/
- 0xe2fa, 0xe2fb, 0xe2fd, 0xe2fc, 0xc4d5, 0xe3a2, 0x907d, 0xd3c1, /*0x78-0x7f*/
- 0x907e, 0x9080, 0x9081, 0xe3a7, 0xc7c4, 0x9082, 0x9083, 0x9084, /*0x80-0x87*/
- 0x9085, 0xcfa4, 0x9086, 0x9087, 0xe3a9, 0xbab7, 0x9088, 0x9089, /*0x88-0x8f*/
- 0x908a, 0x908b, 0xe3a8, 0x908c, 0xbbda, 0x908d, 0xe3a3, 0x908e, /*0x90-0x97*/
- 0x908f, 0x9090, 0xe3a4, 0xe3aa, 0x9091, 0xe3a6, 0x9092, 0xcef2, /*0x98-0x9f*/
- 0xd3c6, 0x9093, 0x9094, 0xbbbc, 0x9095, 0x9096, 0xd4c3, 0x9097, /*0xa0-0xa7*/
- 0xc4fa, 0x9098, 0x9099, 0xeda8, 0xd0fc, 0xe3a5, 0x909a, 0xc3f5, /*0xa8-0xaf*/
- 0x909b, 0xe3ad, 0xb1af, 0x909c, 0xe3b2, 0x909d, 0x909e, 0x909f, /*0xb0-0xb7*/
- 0xbcc2, 0x90a0, 0x90a1, 0xe3ac, 0xb5bf, 0x90a2, 0x90a3, 0x90a4, /*0xb8-0xbf*/
- 0x90a5, 0x90a6, 0x90a7, 0x90a8, 0x90a9, 0xc7e9, 0xe3b0, 0x90aa, /*0xc0-0xc7*/
- 0x90ab, 0x90ac, 0xbeaa, 0xcdef, 0x90ad, 0x90ae, 0x90af, 0x90b0, /*0xc8-0xcf*/
- 0x90b1, 0xbbf3, 0x90b2, 0x90b3, 0x90b4, 0xcce8, 0x90b5, 0x90b6, /*0xd0-0xd7*/
- 0xe3af, 0x90b7, 0xe3b1, 0x90b8, 0xcfa7, 0xe3ae, 0x90b9, 0xcea9, /*0xd8-0xdf*/
- 0xbbdd, 0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90be, 0xb5eb, 0xbee5, /*0xe0-0xe7*/
- 0xb2d2, 0xb3cd, 0x90bf, 0xb1b9, 0xe3ab, 0xb2d1, 0xb5ac, 0xb9df, /*0xe8-0xef*/
- 0xb6e8, 0x90c0, 0x90c1, 0xcfeb, 0xe3b7, 0x90c2, 0xbbcc, 0x90c3, /*0xf0-0xf7*/
- 0x90c4, 0xc8c7, 0xd0ca, 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, /*0xf8-0xff*/
- /* 0x6100 */
- 0xe3b8, 0xb3ee, 0x90ca, 0x90cb, 0x90cc, 0x90cd, 0xeda9, 0x90ce, /*0x00-0x07*/
- 0xd3fa, 0xd3e4, 0x90cf, 0x90d0, 0x90d1, 0xedaa, 0xe3b9, 0xd2e2, /*0x08-0x0f*/
- 0x90d2, 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0xe3b5, 0x90d7, 0x90d8, /*0x10-0x17*/
- 0x90d9, 0x90da, 0xd3de, 0x90db, 0x90dc, 0x90dd, 0x90de, 0xb8d0, /*0x18-0x1f*/
- 0xe3b3, 0x90df, 0x90e0, 0xe3b6, 0xb7df, 0x90e1, 0xe3b4, 0xc0a2, /*0x20-0x27*/
- 0x90e2, 0x90e3, 0x90e4, 0xe3ba, 0x90e5, 0x90e6, 0x90e7, 0x90e8, /*0x28-0x2f*/
- 0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0, /*0x30-0x37*/
- 0x90f1, 0x90f2, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0xd4b8, /*0x38-0x3f*/
- 0x90f8, 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x9140, /*0x40-0x47*/
- 0xb4c8, 0x9141, 0xe3bb, 0x9142, 0xbbc5, 0x9143, 0xc9f7, 0x9144, /*0x48-0x4f*/
- 0x9145, 0xc9e5, 0x9146, 0x9147, 0x9148, 0xc4bd, 0x9149, 0x914a, /*0x50-0x57*/
- 0x914b, 0x914c, 0x914d, 0x914e, 0x914f, 0xedab, 0x9150, 0x9151, /*0x58-0x5f*/
- 0x9152, 0x9153, 0xc2fd, 0x9154, 0x9155, 0x9156, 0x9157, 0xbbdb, /*0x60-0x67*/
- 0xbfae, 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d, 0x915e, /*0x68-0x6f*/
- 0xcebf, 0x915f, 0x9160, 0x9161, 0x9162, 0xe3bc, 0x9163, 0xbfb6, /*0x70-0x77*/
- 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916a, 0x916b, /*0x78-0x7f*/
- 0x916c, 0x916d, 0x916e, 0x916f, 0x9170, 0x9171, 0x9172, 0x9173, /*0x80-0x87*/
- 0x9174, 0x9175, 0x9176, 0xb1ef, 0x9177, 0x9178, 0xd4f7, 0x9179, /*0x88-0x8f*/
- 0x917a, 0x917b, 0x917c, 0x917d, 0xe3be, 0x917e, 0x9180, 0x9181, /*0x90-0x97*/
- 0x9182, 0x9183, 0x9184, 0x9185, 0x9186, 0xedad, 0x9187, 0x9188, /*0x98-0x9f*/
- 0x9189, 0x918a, 0x918b, 0x918c, 0x918d, 0x918e, 0x918f, 0xe3bf, /*0xa0-0xa7*/
- 0xbaa9, 0xedac, 0x9190, 0x9191, 0xe3bd, 0x9192, 0x9193, 0x9194, /*0xa8-0xaf*/
- 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 0x919a, 0x919b, 0xe3c0, /*0xb0-0xb7*/
- 0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0xbab6, 0x91a2, /*0xb8-0xbf*/
- 0x91a3, 0x91a4, 0xb6ae, 0x91a5, 0x91a6, 0x91a7, 0x91a8, 0x91a9, /*0xc0-0xc7*/
- 0xd0b8, 0x91aa, 0xb0c3, 0xedae, 0x91ab, 0x91ac, 0x91ad, 0x91ae, /*0xc8-0xcf*/
- 0x91af, 0xedaf, 0xc0c1, 0x91b0, 0xe3c1, 0x91b1, 0x91b2, 0x91b3, /*0xd0-0xd7*/
- 0x91b4, 0x91b5, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91ba, 0x91bb, /*0xd8-0xdf*/
- 0x91bc, 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0xc5b3, 0x91c2, /*0xe0-0xe7*/
- 0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, /*0xe8-0xef*/
- 0x91cb, 0x91cc, 0x91cd, 0x91ce, 0x91cf, 0xe3c2, 0x91d0, 0x91d1, /*0xf0-0xf7*/
- 0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0xdcb2, /*0xf8-0xff*/
- /* 0x6200 */
- 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd, 0x91de, 0xedb0, 0x91df, /*0x00-0x07*/
- 0xb8ea, 0x91e0, 0xceec, 0xeaa7, 0xd0e7, 0xcaf9, 0xc8d6, 0xcfb7, /*0x08-0x0f*/
- 0xb3c9, 0xced2, 0xbde4, 0x91e1, 0x91e2, 0xe3de, 0xbbf2, 0xeaa8, /*0x10-0x17*/
- 0xd5bd, 0x91e3, 0xc6dd, 0xeaa9, 0x91e4, 0x91e5, 0x91e6, 0xeaaa, /*0x18-0x1f*/
- 0x91e7, 0xeaac, 0xeaab, 0x91e8, 0xeaae, 0xeaad, 0x91e9, 0x91ea, /*0x20-0x27*/
- 0x91eb, 0x91ec, 0xbdd8, 0x91ed, 0xeaaf, 0x91ee, 0xc2be, 0x91ef, /*0x28-0x2f*/
- 0x91f0, 0x91f1, 0x91f2, 0xb4c1, 0xb4f7, 0x91f3, 0x91f4, 0xbba7, /*0x30-0x37*/
- 0x91f5, 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0xece6, 0xece5, 0xb7bf, /*0x38-0x3f*/
- 0xcbf9, 0xb1e2, 0x91fa, 0xece7, 0x91fb, 0x91fc, 0x91fd, 0xc9c8, /*0x40-0x47*/
- 0xece8, 0xece9, 0x91fe, 0xcad6, 0xded0, 0xb2c5, 0xd4fa, 0x9240, /*0x48-0x4f*/
- 0x9241, 0xc6cb, 0xb0c7, 0xb4f2, 0xc8d3, 0x9242, 0x9243, 0x9244, /*0x50-0x57*/
- 0xcdd0, 0x9245, 0x9246, 0xbfb8, 0x9247, 0x9248, 0x9249, 0x924a, /*0x58-0x5f*/
- 0x924b, 0x924c, 0x924d, 0xbfdb, 0x924e, 0x924f, 0xc7a4, 0xd6b4, /*0x60-0x67*/
- 0x9250, 0xc0a9, 0xded1, 0xc9a8, 0xd1ef, 0xc5a4, 0xb0e7, 0xb3b6, /*0x68-0x6f*/
- 0xc8c5, 0x9251, 0x9252, 0xb0e2, 0x9253, 0x9254, 0xb7f6, 0x9255, /*0x70-0x77*/
- 0x9256, 0xc5fa, 0x9257, 0x9258, 0xb6f3, 0x9259, 0xd5d2, 0xb3d0, /*0x78-0x7f*/
- 0xbcbc, 0x925a, 0x925b, 0x925c, 0xb3ad, 0x925d, 0x925e, 0x925f, /*0x80-0x87*/
- 0x9260, 0xbef1, 0xb0d1, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, /*0x88-0x8f*/
- 0x9266, 0xd2d6, 0xcae3, 0xd7a5, 0x9267, 0xcdb6, 0xb6b6, 0xbfb9, /*0x90-0x97*/
- 0xd5db, 0x9268, 0xb8a7, 0xc5d7, 0x9269, 0x926a, 0x926b, 0xded2, /*0x98-0x9f*/
- 0xbfd9, 0xc2d5, 0xc7c0, 0x926c, 0xbba4, 0xb1a8, 0x926d, 0x926e, /*0xa0-0xa7*/
- 0xc5ea, 0x926f, 0x9270, 0xc5fb, 0xcca7, 0x9271, 0x9272, 0x9273, /*0xa8-0xaf*/
- 0x9274, 0xb1a7, 0x9275, 0x9276, 0x9277, 0xb5d6, 0x9278, 0x9279, /*0xb0-0xb7*/
- 0x927a, 0xc4a8, 0x927b, 0xded3, 0xd1ba, 0xb3e9, 0x927c, 0xc3f2, /*0xb8-0xbf*/
- 0x927d, 0x927e, 0xb7f7, 0x9280, 0xd6f4, 0xb5a3, 0xb2f0, 0xc4b4, /*0xc0-0xc7*/
- 0xc4e9, 0xc0ad, 0xded4, 0x9281, 0xb0e8, 0xc5c4, 0xc1e0, 0x9282, /*0xc8-0xcf*/
- 0xb9d5, 0x9283, 0xbedc, 0xcdd8, 0xb0ce, 0x9284, 0xcdcf, 0xded6, /*0xd0-0xd7*/
- 0xbed0, 0xd7be, 0xded5, 0xd5d0, 0xb0dd, 0x9285, 0x9286, 0xc4e2, /*0xd8-0xdf*/
- 0x9287, 0x9288, 0xc2a3, 0xbcf0, 0x9289, 0xd3b5, 0xc0b9, 0xc5a1, /*0xe0-0xe7*/
- 0xb2a6, 0xd4f1, 0x928a, 0x928b, 0xc0a8, 0xcac3, 0xded7, 0xd5fc, /*0xe8-0xef*/
- 0x928c, 0xb9b0, 0x928d, 0xc8ad, 0xcba9, 0x928e, 0xded9, 0xbfbd, /*0xf0-0xf7*/
- 0x928f, 0x9290, 0x9291, 0x9292, 0xc6b4, 0xd7a7, 0xcab0, 0xc4c3, /*0xf8-0xff*/
- /* 0x6300 */
- 0x9293, 0xb3d6, 0xb9d2, 0x9294, 0x9295, 0x9296, 0x9297, 0xd6b8, /*0x00-0x07*/
- 0xeafc, 0xb0b4, 0x9298, 0x9299, 0x929a, 0x929b, 0xbfe6, 0x929c, /*0x08-0x0f*/
- 0x929d, 0xccf4, 0x929e, 0x929f, 0x92a0, 0x92a1, 0xcdda, 0x92a2, /*0x10-0x17*/
- 0x92a3, 0x92a4, 0xd6bf, 0xc2ce, 0x92a5, 0xcece, 0xcca2, 0xd0ae, /*0x18-0x1f*/
- 0xc4d3, 0xb5b2, 0xded8, 0xd5f5, 0xbcb7, 0xbbd3, 0x92a6, 0x92a7, /*0x20-0x27*/
- 0xb0a4, 0x92a8, 0xc5b2, 0xb4ec, 0x92a9, 0x92aa, 0x92ab, 0xd5f1, /*0x28-0x2f*/
- 0x92ac, 0x92ad, 0xeafd, 0x92ae, 0x92af, 0x92b0, 0x92b1, 0x92b2, /*0x30-0x37*/
- 0x92b3, 0xdeda, 0xcda6, 0x92b4, 0x92b5, 0xcdec, 0x92b6, 0x92b7, /*0x38-0x3f*/
- 0x92b8, 0x92b9, 0xcee6, 0xdedc, 0x92ba, 0xcdb1, 0xc0a6, 0x92bb, /*0x40-0x47*/
- 0x92bc, 0xd7bd, 0x92bd, 0xdedb, 0xb0c6, 0xbab4, 0xc9d3, 0xc4f3, /*0x48-0x4f*/
- 0xbee8, 0x92be, 0x92bf, 0x92c0, 0x92c1, 0xb2b6, 0x92c2, 0x92c3, /*0x50-0x57*/
- 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c8, 0x92c9, 0xc0cc, 0xcbf0, /*0x58-0x5f*/
- 0x92ca, 0xbcf1, 0xbbbb, 0xb5b7, 0x92cb, 0x92cc, 0x92cd, 0xc5f5, /*0x60-0x67*/
- 0x92ce, 0xdee6, 0x92cf, 0x92d0, 0x92d1, 0xdee3, 0xbedd, 0x92d2, /*0x68-0x6f*/
- 0x92d3, 0xdedf, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0xb4b7, 0xbddd, /*0x70-0x77*/
- 0x92d8, 0x92d9, 0xdee0, 0xc4ed, 0x92da, 0x92db, 0x92dc, 0x92dd, /*0x78-0x7f*/
- 0xcfc6, 0x92de, 0xb5e0, 0x92df, 0x92e0, 0x92e1, 0x92e2, 0xb6de, /*0x80-0x87*/
- 0xcada, 0xb5f4, 0xdee5, 0x92e3, 0xd5c6, 0x92e4, 0xdee1, 0xcccd, /*0x88-0x8f*/
- 0xc6fe, 0x92e5, 0xc5c5, 0x92e6, 0x92e7, 0x92e8, 0xd2b4, 0x92e9, /*0x90-0x97*/
- 0xbef2, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, /*0x98-0x9f*/
- 0xc2d3, 0x92f1, 0xccbd, 0xb3b8, 0x92f2, 0xbdd3, 0x92f3, 0xbfd8, /*0xa0-0xa7*/
- 0xcdc6, 0xd1da, 0xb4eb, 0x92f4, 0xdee4, 0xdedd, 0xdee7, 0x92f5, /*0xa8-0xaf*/
- 0xeafe, 0x92f6, 0x92f7, 0xc2b0, 0xdee2, 0x92f8, 0x92f9, 0xd6c0, /*0xb0-0xb7*/
- 0xb5a7, 0x92fa, 0xb2f4, 0x92fb, 0xdee8, 0x92fc, 0xdef2, 0x92fd, /*0xb8-0xbf*/
- 0x92fe, 0x9340, 0x9341, 0x9342, 0xdeed, 0x9343, 0xdef1, 0x9344, /*0xc0-0xc7*/
- 0x9345, 0xc8e0, 0x9346, 0x9347, 0x9348, 0xd7e1, 0xdeef, 0xc3e8, /*0xc8-0xcf*/
- 0xcce1, 0x9349, 0xb2e5, 0x934a, 0x934b, 0x934c, 0xd2be, 0x934d, /*0xd0-0xd7*/
- 0x934e, 0x934f, 0x9350, 0x9351, 0x9352, 0x9353, 0xdeee, 0x9354, /*0xd8-0xdf*/
- 0xdeeb, 0xced5, 0x9355, 0xb4a7, 0x9356, 0x9357, 0x9358, 0x9359, /*0xe0-0xe7*/
- 0x935a, 0xbfab, 0xbebe, 0x935b, 0x935c, 0xbdd2, 0x935d, 0x935e, /*0xe8-0xef*/
- 0x935f, 0x9360, 0xdee9, 0x9361, 0xd4ae, 0x9362, 0xdede, 0x9363, /*0xf0-0xf7*/
- 0xdeea, 0x9364, 0x9365, 0x9366, 0x9367, 0xc0bf, 0x9368, 0xdeec, /*0xf8-0xff*/
- /* 0x6400 */
- 0xb2f3, 0xb8e9, 0xc2a7, 0x9369, 0x936a, 0xbdc1, 0x936b, 0x936c, /*0x00-0x07*/
- 0x936d, 0x936e, 0x936f, 0xdef5, 0xdef8, 0x9370, 0x9371, 0xb2ab, /*0x08-0x0f*/
- 0xb4a4, 0x9372, 0x9373, 0xb4ea, 0xc9a6, 0x9374, 0x9375, 0x9376, /*0x10-0x17*/
- 0x9377, 0x9378, 0x9379, 0xdef6, 0xcbd1, 0x937a, 0xb8e3, 0x937b, /*0x18-0x1f*/
- 0xdef7, 0xdefa, 0x937c, 0x937d, 0x937e, 0x9380, 0xdef9, 0x9381, /*0x20-0x27*/
- 0x9382, 0x9383, 0xccc2, 0x9384, 0xb0e1, 0xb4ee, 0x9385, 0x9386, /*0x28-0x2f*/
- 0x9387, 0x9388, 0x9389, 0x938a, 0xe5ba, 0x938b, 0x938c, 0x938d, /*0x30-0x37*/
- 0x938e, 0x938f, 0xd0af, 0x9390, 0x9391, 0xb2eb, 0x9392, 0xeba1, /*0x38-0x3f*/
- 0x9393, 0xdef4, 0x9394, 0x9395, 0xc9e3, 0xdef3, 0xb0da, 0xd2a1, /*0x40-0x47*/
- 0xb1f7, 0x9396, 0xccaf, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, /*0x48-0x4f*/
- 0x939c, 0x939d, 0xdef0, 0x939e, 0xcba4, 0x939f, 0x93a0, 0x93a1, /*0x50-0x57*/
- 0xd5aa, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0xdefb, 0x93a7, /*0x58-0x5f*/
- 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0xb4dd, /*0x60-0x67*/
- 0x93af, 0xc4a6, 0x93b0, 0x93b1, 0x93b2, 0xdefd, 0x93b3, 0x93b4, /*0x68-0x6f*/
- 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc, /*0x70-0x77*/
- 0xc3fe, 0xc4a1, 0xdfa1, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, /*0x78-0x7f*/
- 0x93c2, 0x93c3, 0xc1cc, 0x93c4, 0xdefc, 0xbeef, 0x93c5, 0xc6b2, /*0x80-0x87*/
- 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, /*0x88-0x8f*/
- 0x93ce, 0xb3c5, 0xc8f6, 0x93cf, 0x93d0, 0xcbba, 0xdefe, 0x93d1, /*0x90-0x97*/
- 0x93d2, 0xdfa4, 0x93d3, 0x93d4, 0x93d5, 0x93d6, 0xd7b2, 0x93d7, /*0x98-0x9f*/
- 0x93d8, 0x93d9, 0x93da, 0x93db, 0xb3b7, 0x93dc, 0x93dd, 0x93de, /*0xa0-0xa7*/
- 0x93df, 0xc1c3, 0x93e0, 0x93e1, 0xc7cb, 0xb2a5, 0xb4e9, 0x93e2, /*0xa8-0xaf*/
- 0xd7ab, 0x93e3, 0x93e4, 0x93e5, 0x93e6, 0xc4ec, 0x93e7, 0xdfa2, /*0xb0-0xb7*/
- 0xdfa3, 0x93e8, 0xdfa5, 0x93e9, 0xbab3, 0x93ea, 0x93eb, 0x93ec, /*0xb8-0xbf*/
- 0xdfa6, 0x93ed, 0xc0de, 0x93ee, 0x93ef, 0xc9c3, 0x93f0, 0x93f1, /*0xc0-0xc7*/
- 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6, 0xb2d9, 0xc7e6, 0x93f7, /*0xc8-0xcf*/
- 0xdfa7, 0x93f8, 0xc7dc, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0xdfa8, /*0xd0-0xd7*/
- 0xeba2, 0x93fd, 0x93fe, 0x9440, 0x9441, 0x9442, 0xcbd3, 0x9443, /*0xd8-0xdf*/
- 0x9444, 0x9445, 0xdfaa, 0x9446, 0xdfa9, 0x9447, 0xb2c1, 0x9448, /*0xe0-0xe7*/
- 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f, 0x9450, /*0xe8-0xef*/
- 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458, /*0xf0-0xf7*/
- 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f, 0x9460, /*0xf8-0xff*/
- /* 0x6500 */
- 0xc5ca, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, /*0x00-0x07*/
- 0x9468, 0xdfab, 0x9469, 0x946a, 0x946b, 0x946c, 0x946d, 0x946e, /*0x08-0x0f*/
- 0x946f, 0x9470, 0xd4dc, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, /*0x10-0x17*/
- 0xc8c1, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, /*0x18-0x1f*/
- 0x947d, 0x947e, 0x9480, 0x9481, 0x9482, 0xdfac, 0x9483, 0x9484, /*0x20-0x27*/
- 0x9485, 0x9486, 0x9487, 0xbef0, 0x9488, 0x9489, 0xdfad, 0xd6a7, /*0x28-0x2f*/
- 0x948a, 0x948b, 0x948c, 0x948d, 0xeab7, 0xebb6, 0xcad5, 0x948e, /*0x30-0x37*/
- 0xd8fc, 0xb8c4, 0x948f, 0xb9a5, 0x9490, 0x9491, 0xb7c5, 0xd5fe, /*0x38-0x3f*/
- 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0xb9ca, 0x9497, 0x9498, /*0x40-0x47*/
- 0xd0a7, 0xf4cd, 0x9499, 0x949a, 0xb5d0, 0x949b, 0x949c, 0xc3f4, /*0x48-0x4f*/
- 0x949d, 0xbec8, 0x949e, 0x949f, 0x94a0, 0xebb7, 0xb0bd, 0x94a1, /*0x50-0x57*/
- 0x94a2, 0xbdcc, 0x94a3, 0xc1b2, 0x94a4, 0xb1d6, 0xb3a8, 0x94a5, /*0x58-0x5f*/
- 0x94a6, 0x94a7, 0xb8d2, 0xc9a2, 0x94a8, 0x94a9, 0xb6d8, 0x94aa, /*0x60-0x67*/
- 0x94ab, 0x94ac, 0x94ad, 0xebb8, 0xbeb4, 0x94ae, 0x94af, 0x94b0, /*0x68-0x6f*/
- 0xcafd, 0x94b1, 0xc7c3, 0x94b2, 0xd5fb, 0x94b3, 0x94b4, 0xb7f3, /*0x70-0x77*/
- 0x94b5, 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, /*0x78-0x7f*/
- 0x94bd, 0x94be, 0x94bf, 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0xcec4, /*0x80-0x87*/
- 0x94c4, 0x94c5, 0x94c6, 0xd5ab, 0xb1f3, 0x94c7, 0x94c8, 0x94c9, /*0x88-0x8f*/
- 0xecb3, 0xb0df, 0x94ca, 0xecb5, 0x94cb, 0x94cc, 0x94cd, 0xb6b7, /*0x90-0x97*/
- 0x94ce, 0xc1cf, 0x94cf, 0xf5fa, 0xd0b1, 0x94d0, 0x94d1, 0xd5e5, /*0x98-0x9f*/
- 0x94d2, 0xced3, 0x94d3, 0x94d4, 0xbdef, 0xb3e2, 0x94d5, 0xb8ab, /*0xa0-0xa7*/
- 0x94d6, 0xd5b6, 0x94d7, 0xedbd, 0x94d8, 0xb6cf, 0x94d9, 0xcbb9, /*0xa8-0xaf*/
- 0xd0c2, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de, 0x94df, 0x94e0, /*0xb0-0xb7*/
- 0x94e1, 0xb7bd, 0x94e2, 0x94e3, 0xecb6, 0xcaa9, 0x94e4, 0x94e5, /*0xb8-0xbf*/
- 0x94e6, 0xc5d4, 0x94e7, 0xecb9, 0xecb8, 0xc2c3, 0xecb7, 0x94e8, /*0xc0-0xc7*/
- 0x94e9, 0x94ea, 0x94eb, 0xd0fd, 0xecba, 0x94ec, 0xecbb, 0xd7e5, /*0xc8-0xcf*/
- 0x94ed, 0x94ee, 0xecbc, 0x94ef, 0x94f0, 0x94f1, 0xecbd, 0xc6ec, /*0xd0-0xd7*/
- 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6, 0x94f7, 0x94f8, 0x94f9, /*0xd8-0xdf*/
- 0xcede, 0x94fa, 0xbcc8, 0x94fb, 0x94fc, 0xc8d5, 0xb5a9, 0xbec9, /*0xe0-0xe7*/
- 0xd6bc, 0xd4e7, 0x94fd, 0x94fe, 0xd1ae, 0xd0f1, 0xeab8, 0xeab9, /*0xe8-0xef*/
- 0xeaba, 0xbab5, 0x9540, 0x9541, 0x9542, 0x9543, 0xcab1, 0xbff5, /*0xf0-0xf7*/
- 0x9544, 0x9545, 0xcdfa, 0x9546, 0x9547, 0x9548, 0x9549, 0x954a, /*0xf8-0xff*/
- /* 0x6600 */
- 0xeac0, 0x954b, 0xb0ba, 0xeabe, 0x954c, 0x954d, 0xc0a5, 0x954e, /*0x00-0x07*/
- 0x954f, 0x9550, 0xeabb, 0x9551, 0xb2fd, 0x9552, 0xc3f7, 0xbbe8, /*0x08-0x0f*/
- 0x9553, 0x9554, 0x9555, 0xd2d7, 0xcef4, 0xeabf, 0x9556, 0x9557, /*0x10-0x17*/
- 0x9558, 0xeabc, 0x9559, 0x955a, 0x955b, 0xeac3, 0x955c, 0xd0c7, /*0x18-0x1f*/
- 0xd3b3, 0x955d, 0x955e, 0x955f, 0x9560, 0xb4ba, 0x9561, 0xc3c1, /*0x20-0x27*/
- 0xd7f2, 0x9562, 0x9563, 0x9564, 0x9565, 0xd5d1, 0x9566, 0xcac7, /*0x28-0x2f*/
- 0x9567, 0xeac5, 0x9568, 0x9569, 0xeac4, 0xeac7, 0xeac6, 0x956a, /*0x30-0x37*/
- 0x956b, 0x956c, 0x956d, 0x956e, 0xd6e7, 0x956f, 0xcfd4, 0x9570, /*0x38-0x3f*/
- 0x9571, 0xeacb, 0x9572, 0xbbce, 0x9573, 0x9574, 0x9575, 0x9576, /*0x40-0x47*/
- 0x9577, 0x9578, 0x9579, 0xbdfa, 0xc9ce, 0x957a, 0x957b, 0xeacc, /*0x48-0x4f*/
- 0x957c, 0x957d, 0xc9b9, 0xcffe, 0xeaca, 0xd4ce, 0xeacd, 0xeacf, /*0x50-0x57*/
- 0x957e, 0x9580, 0xcded, 0x9581, 0x9582, 0x9583, 0x9584, 0xeac9, /*0x58-0x5f*/
- 0x9585, 0xeace, 0x9586, 0x9587, 0xceee, 0x9588, 0xbbde, 0x9589, /*0x60-0x67*/
- 0xb3bf, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0xc6d5, 0xbeb0, /*0x68-0x6f*/
- 0xcefa, 0x958f, 0x9590, 0x9591, 0xc7e7, 0x9592, 0xbea7, 0xead0, /*0x70-0x77*/
- 0x9593, 0x9594, 0xd6c7, 0x9595, 0x9596, 0x9597, 0xc1c0, 0x9598, /*0x78-0x7f*/
- 0x9599, 0x959a, 0xd4dd, 0x959b, 0xead1, 0x959c, 0x959d, 0xcfbe, /*0x80-0x87*/
- 0x959e, 0x959f, 0x95a0, 0x95a1, 0xead2, 0x95a2, 0x95a3, 0x95a4, /*0x88-0x8f*/
- 0x95a5, 0xcaee, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0xc5af, 0xb0b5, /*0x90-0x97*/
- 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0xead4, 0x95af, 0x95b0, /*0x98-0x9f*/
- 0x95b1, 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0xead3, /*0xa0-0xa7*/
- 0xf4df, 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0xc4ba, 0x95bd, /*0xa8-0xaf*/
- 0x95be, 0x95bf, 0x95c0, 0x95c1, 0xb1a9, 0x95c2, 0x95c3, 0x95c4, /*0xb0-0xb7*/
- 0x95c5, 0xe5df, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0xead5, 0x95ca, /*0xb8-0xbf*/
- 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, /*0xc0-0xc7*/
- 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, /*0xc8-0xcf*/
- 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, /*0xd0-0xd7*/
- 0x95e3, 0xcaef, 0x95e4, 0xead6, 0xead7, 0xc6d8, 0x95e5, 0x95e6, /*0xd8-0xdf*/
- 0x95e7, 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, 0xead8, 0x95ed, /*0xe0-0xe7*/
- 0x95ee, 0xead9, 0x95ef, 0x95f0, 0x95f1, 0x95f2, 0x95f3, 0x95f4, /*0xe8-0xef*/
- 0xd4bb, 0x95f5, 0xc7fa, 0xd2b7, 0xb8fc, 0x95f6, 0x95f7, 0xeac2, /*0xf0-0xf7*/
- 0x95f8, 0xb2dc, 0x95f9, 0x95fa, 0xc2fc, 0x95fb, 0xd4f8, 0xcce6, /*0xf8-0xff*/
- /* 0x6700 */
- 0xd7ee, 0x95fc, 0x95fd, 0x95fe, 0x9640, 0x9641, 0x9642, 0x9643, /*0x00-0x07*/
- 0xd4c2, 0xd3d0, 0xebc3, 0xc5f3, 0x9644, 0xb7fe, 0x9645, 0x9646, /*0x08-0x0f*/
- 0xebd4, 0x9647, 0x9648, 0x9649, 0xcbb7, 0xebde, 0x964a, 0xc0ca, /*0x10-0x17*/
- 0x964b, 0x964c, 0x964d, 0xcdfb, 0x964e, 0xb3af, 0x964f, 0xc6da, /*0x18-0x1f*/
- 0x9650, 0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0xebfc, 0x9656, /*0x20-0x27*/
- 0xc4be, 0x9657, 0xceb4, 0xc4a9, 0xb1be, 0xd4fd, 0x9658, 0xcaf5, /*0x28-0x2f*/
- 0x9659, 0xd6ec, 0x965a, 0x965b, 0xc6d3, 0xb6e4, 0x965c, 0x965d, /*0x30-0x37*/
- 0x965e, 0x965f, 0xbbfa, 0x9660, 0x9661, 0xd0e0, 0x9662, 0x9663, /*0x38-0x3f*/
- 0xc9b1, 0x9664, 0xd4d3, 0xc8a8, 0x9665, 0x9666, 0xb8cb, 0x9667, /*0x40-0x47*/
- 0xe8be, 0xc9bc, 0x9668, 0x9669, 0xe8bb, 0x966a, 0xc0ee, 0xd0d3, /*0x48-0x4f*/
- 0xb2c4, 0xb4e5, 0x966b, 0xe8bc, 0x966c, 0x966d, 0xd5c8, 0x966e, /*0x50-0x57*/
- 0x966f, 0x9670, 0x9671, 0x9672, 0xb6c5, 0x9673, 0xe8bd, 0xcaf8, /*0x58-0x5f*/
- 0xb8dc, 0xccf5, 0x9674, 0x9675, 0x9676, 0xc0b4, 0x9677, 0x9678, /*0x60-0x67*/
- 0xd1ee, 0xe8bf, 0xe8c2, 0x9679, 0x967a, 0xbabc, 0x967b, 0xb1ad, /*0x68-0x6f*/
- 0xbddc, 0x967c, 0xeabd, 0xe8c3, 0x967d, 0xe8c6, 0x967e, 0xe8cb, /*0x70-0x77*/
- 0x9680, 0x9681, 0x9682, 0x9683, 0xe8cc, 0x9684, 0xcbc9, 0xb0e5, /*0x78-0x7f*/
- 0x9685, 0xbcab, 0x9686, 0x9687, 0xb9b9, 0x9688, 0x9689, 0xe8c1, /*0x80-0x87*/
- 0x968a, 0xcdf7, 0x968b, 0xe8ca, 0x968c, 0x968d, 0x968e, 0x968f, /*0x88-0x8f*/
- 0xcef6, 0x9690, 0x9691, 0x9692, 0x9693, 0xd5ed, 0x9694, 0xc1d6, /*0x90-0x97*/
- 0xe8c4, 0x9695, 0xc3b6, 0x9696, 0xb9fb, 0xd6a6, 0xe8c8, 0x9697, /*0x98-0x9f*/
- 0x9698, 0x9699, 0xcae0, 0xd4e6, 0x969a, 0xe8c0, 0x969b, 0xe8c5, /*0xa0-0xa7*/
- 0xe8c7, 0x969c, 0xc7b9, 0xb7e3, 0x969d, 0xe8c9, 0x969e, 0xbfdd, /*0xa8-0xaf*/
- 0xe8d2, 0x969f, 0x96a0, 0xe8d7, 0x96a1, 0xe8d5, 0xbcdc, 0xbccf, /*0xb0-0xb7*/
- 0xe8db, 0x96a2, 0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a7, 0x96a8, /*0xb8-0xbf*/
- 0x96a9, 0xe8de, 0x96aa, 0xe8da, 0xb1fa, 0x96ab, 0x96ac, 0x96ad, /*0xc0-0xc7*/
- 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4, 0xb0d8, /*0xc8-0xcf*/
- 0xc4b3, 0xb8cc, 0xc6e2, 0xc8be, 0xc8e1, 0x96b5, 0x96b6, 0x96b7, /*0xd0-0xd7*/
- 0xe8cf, 0xe8d4, 0xe8d6, 0x96b8, 0xb9f1, 0xe8d8, 0xd7f5, 0x96b9, /*0xd8-0xdf*/
- 0xc4fb, 0x96ba, 0xe8dc, 0x96bb, 0x96bc, 0xb2e9, 0x96bd, 0x96be, /*0xe0-0xe7*/
- 0x96bf, 0xe8d1, 0x96c0, 0x96c1, 0xbced, 0x96c2, 0x96c3, 0xbfc2, /*0xe8-0xef*/
- 0xe8cd, 0xd6f9, 0x96c4, 0xc1f8, 0xb2f1, 0x96c5, 0x96c6, 0x96c7, /*0xf0-0xf7*/
- 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0xe8df, 0x96cd, 0xcac1, /*0xf8-0xff*/
- /* 0x6800 */
- 0xe8d9, 0x96ce, 0x96cf, 0x96d0, 0x96d1, 0xd5a4, 0x96d2, 0xb1ea, /*0x00-0x07*/
- 0xd5bb, 0xe8ce, 0xe8d0, 0xb6b0, 0xe8d3, 0x96d3, 0xe8dd, 0xc0b8, /*0x08-0x0f*/
- 0x96d4, 0xcaf7, 0x96d5, 0xcba8, 0x96d6, 0x96d7, 0xc6dc, 0xc0f5, /*0x10-0x17*/
- 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc, 0xe8e9, 0x96dd, 0x96de, /*0x18-0x1f*/
- 0x96df, 0xd0a3, 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4, 0x96e5, /*0x20-0x27*/
- 0x96e6, 0xe8f2, 0xd6ea, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, /*0x28-0x2f*/
- 0x96ec, 0x96ed, 0xe8e0, 0xe8e1, 0x96ee, 0x96ef, 0x96f0, 0xd1f9, /*0x30-0x37*/
- 0xbacb, 0xb8f9, 0x96f1, 0x96f2, 0xb8f1, 0xd4d4, 0xe8ef, 0x96f3, /*0x38-0x3f*/
- 0xe8ee, 0xe8ec, 0xb9f0, 0xccd2, 0xe8e6, 0xcea6, 0xbff2, 0x96f4, /*0x40-0x47*/
- 0xb0b8, 0xe8f1, 0xe8f0, 0x96f5, 0xd7c0, 0x96f6, 0xe8e4, 0x96f7, /*0x48-0x4f*/
- 0xcda9, 0xc9a3, 0x96f8, 0xbbb8, 0xbddb, 0xe8ea, 0x96f9, 0x96fa, /*0x50-0x57*/
- 0x96fb, 0x96fc, 0x96fd, 0x96fe, 0x9740, 0x9741, 0x9742, 0x9743, /*0x58-0x5f*/
- 0xe8e2, 0xe8e3, 0xe8e5, 0xb5b5, 0xe8e7, 0xc7c5, 0xe8eb, 0xe8ed, /*0x60-0x67*/
- 0xbdb0, 0xd7ae, 0x9744, 0xe8f8, 0x9745, 0x9746, 0x9747, 0x9748, /*0x68-0x6f*/
- 0x9749, 0x974a, 0x974b, 0x974c, 0xe8f5, 0x974d, 0xcdb0, 0xe8f6, /*0x70-0x77*/
- 0x974e, 0x974f, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755, /*0x78-0x7f*/
- 0x9756, 0xc1ba, 0x9757, 0xe8e8, 0x9758, 0xc3b7, 0xb0f0, 0x9759, /*0x80-0x87*/
- 0x975a, 0x975b, 0x975c, 0x975d, 0x975e, 0x975f, 0x9760, 0xe8f4, /*0x88-0x8f*/
- 0x9761, 0x9762, 0x9763, 0xe8f7, 0x9764, 0x9765, 0x9766, 0xb9a3, /*0x90-0x97*/
- 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d, 0x976e, /*0x98-0x9f*/
- 0x976f, 0x9770, 0xc9d2, 0x9771, 0x9772, 0x9773, 0xc3ce, 0xcee0, /*0xa0-0xa7*/
- 0xc0e6, 0x9774, 0x9775, 0x9776, 0x9777, 0xcbf3, 0x9778, 0xccdd, /*0xa8-0xaf*/
- 0xd0b5, 0x9779, 0x977a, 0xcae1, 0x977b, 0xe8f3, 0x977c, 0x977d, /*0xb0-0xb7*/
- 0x977e, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, /*0xb8-0xbf*/
- 0xbcec, 0x9787, 0xe8f9, 0x9788, 0x9789, 0x978a, 0x978b, 0x978c, /*0xc0-0xc7*/
- 0x978d, 0xc3de, 0x978e, 0xc6e5, 0x978f, 0xb9f7, 0x9790, 0x9791, /*0xc8-0xcf*/
- 0x9792, 0x9793, 0xb0f4, 0x9794, 0x9795, 0xd7d8, 0x9796, 0x9797, /*0xd0-0xd7*/
- 0xbcac, 0x9798, 0xc5ef, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d, /*0xd8-0xdf*/
- 0xccc4, 0x979e, 0x979f, 0xe9a6, 0x97a0, 0x97a1, 0x97a2, 0x97a3, /*0xe0-0xe7*/
- 0x97a4, 0x97a5, 0x97a6, 0x97a7, 0x97a8, 0x97a9, 0xc9ad, 0x97aa, /*0xe8-0xef*/
- 0xe9a2, 0xc0e2, 0x97ab, 0x97ac, 0x97ad, 0xbfc3, 0x97ae, 0x97af, /*0xf0-0xf7*/
- 0x97b0, 0xe8fe, 0xb9d7, 0x97b1, 0xe8fb, 0x97b2, 0x97b3, 0x97b4, /*0xf8-0xff*/
- /* 0x6900 */
- 0x97b5, 0xe9a4, 0x97b6, 0x97b7, 0x97b8, 0xd2ce, 0x97b9, 0x97ba, /*0x00-0x07*/
- 0x97bb, 0x97bc, 0x97bd, 0xe9a3, 0x97be, 0xd6b2, 0xd7b5, 0x97bf, /*0x08-0x0f*/
- 0xe9a7, 0x97c0, 0xbdb7, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, /*0x10-0x17*/
- 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0xe8fc, /*0x18-0x1f*/
- 0xe8fd, 0x97cd, 0x97ce, 0x97cf, 0xe9a1, 0x97d0, 0x97d1, 0x97d2, /*0x20-0x27*/
- 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7, 0xcdd6, 0x97d8, 0x97d9, /*0x28-0x2f*/
- 0xd2ac, 0x97da, 0x97db, 0x97dc, 0xe9b2, 0x97dd, 0x97de, 0x97df, /*0x30-0x37*/
- 0x97e0, 0xe9a9, 0x97e1, 0x97e2, 0x97e3, 0xb4aa, 0x97e4, 0xb4bb, /*0x38-0x3f*/
- 0x97e5, 0x97e6, 0xe9ab, 0x97e7, 0x97e8, 0x97e9, 0x97ea, 0x97eb, /*0x40-0x47*/
- 0x97ec, 0x97ed, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f3, /*0x48-0x4f*/
- 0x97f4, 0x97f5, 0x97f6, 0x97f7, 0xd0a8, 0x97f8, 0x97f9, 0xe9a5, /*0x50-0x57*/
- 0x97fa, 0x97fb, 0xb3fe, 0x97fc, 0x97fd, 0xe9ac, 0xc0e3, 0x97fe, /*0x58-0x5f*/
- 0xe9aa, 0x9840, 0x9841, 0xe9b9, 0x9842, 0x9843, 0xe9b8, 0x9844, /*0x60-0x67*/
- 0x9845, 0x9846, 0x9847, 0xe9ae, 0x9848, 0x9849, 0xe8fa, 0x984a, /*0x68-0x6f*/
- 0x984b, 0xe9a8, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850, 0xbfac, /*0x70-0x77*/
- 0xe9b1, 0xe9ba, 0x9851, 0x9852, 0xc2a5, 0x9853, 0x9854, 0x9855, /*0x78-0x7f*/
- 0xe9af, 0x9856, 0xb8c5, 0x9857, 0xe9ad, 0x9858, 0xd3dc, 0xe9b4, /*0x80-0x87*/
- 0xe9b5, 0xe9b7, 0x9859, 0x985a, 0x985b, 0xe9c7, 0x985c, 0x985d, /*0x88-0x8f*/
- 0x985e, 0x985f, 0x9860, 0x9861, 0xc0c6, 0xe9c5, 0x9862, 0x9863, /*0x90-0x97*/
- 0xe9b0, 0x9864, 0x9865, 0xe9bb, 0xb0f1, 0x9866, 0x9867, 0x9868, /*0x98-0x9f*/
- 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0xe9bc, /*0xa0-0xa7*/
- 0xd5a5, 0x9870, 0x9871, 0xe9be, 0x9872, 0xe9bf, 0x9873, 0x9874, /*0xa8-0xaf*/
- 0x9875, 0xe9c1, 0x9876, 0x9877, 0xc1f1, 0x9878, 0x9879, 0xc8b6, /*0xb0-0xb7*/
- 0x987a, 0x987b, 0x987c, 0xe9bd, 0x987d, 0x987e, 0x9880, 0x9881, /*0xb8-0xbf*/
- 0x9882, 0xe9c2, 0x9883, 0x9884, 0x9885, 0x9886, 0x9887, 0x9888, /*0xc0-0xc7*/
- 0x9889, 0x988a, 0xe9c3, 0x988b, 0xe9b3, 0x988c, 0xe9b6, 0x988d, /*0xc8-0xcf*/
- 0xbbb1, 0x988e, 0x988f, 0x9890, 0xe9c0, 0x9891, 0x9892, 0x9893, /*0xd0-0xd7*/
- 0x9894, 0x9895, 0x9896, 0xbcf7, 0x9897, 0x9898, 0x9899, 0xe9c4, /*0xd8-0xdf*/
- 0xe9c6, 0x989a, 0x989b, 0x989c, 0x989d, 0x989e, 0x989f, 0x98a0, /*0xe0-0xe7*/
- 0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0xe9ca, 0x98a6, 0x98a7, /*0xe8-0xef*/
- 0x98a8, 0x98a9, 0xe9ce, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, /*0xf0-0xf7*/
- 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3, 0xb2db, 0x98b4, 0xe9c8, /*0xf8-0xff*/
- /* 0x6a00 */
- 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb, 0x98bc, /*0x00-0x07*/
- 0x98bd, 0x98be, 0xb7ae, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3, /*0x08-0x0f*/
- 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0xe9cb, /*0x10-0x17*/
- 0xe9cc, 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0xd5c1, /*0x18-0x1f*/
- 0x98d1, 0xc4a3, 0x98d2, 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7, /*0x20-0x27*/
- 0xe9d8, 0x98d8, 0xbae1, 0x98d9, 0x98da, 0x98db, 0x98dc, 0xe9c9, /*0x28-0x2f*/
- 0x98dd, 0xd3a3, 0x98de, 0x98df, 0x98e0, 0xe9d4, 0x98e1, 0x98e2, /*0x30-0x37*/
- 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0xe9d7, 0xe9d0, 0x98e8, /*0x38-0x3f*/
- 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0xe9cf, 0x98ed, 0x98ee, 0xc7c1, /*0x40-0x47*/
- 0x98ef, 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, /*0x48-0x4f*/
- 0xe9d2, 0x98f7, 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, /*0x50-0x57*/
- 0xe9d9, 0xb3c8, 0x98fe, 0xe9d3, 0x9940, 0x9941, 0x9942, 0x9943, /*0x58-0x5f*/
- 0x9944, 0xcff0, 0x9945, 0x9946, 0x9947, 0xe9cd, 0x9948, 0x9949, /*0x60-0x67*/
- 0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, /*0x68-0x6f*/
- 0x9952, 0xb3f7, 0x9953, 0x9954, 0x9955, 0x9956, 0x9957, 0x9958, /*0x70-0x77*/
- 0x9959, 0xe9d6, 0x995a, 0x995b, 0xe9da, 0x995c, 0x995d, 0x995e, /*0x78-0x7f*/
- 0xccb4, 0x995f, 0x9960, 0x9961, 0xcfad, 0x9962, 0x9963, 0x9964, /*0x80-0x87*/
- 0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996a, 0xe9d5, 0x996b, /*0x88-0x8f*/
- 0xe9dc, 0xe9db, 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, 0xe9de, /*0x90-0x97*/
- 0x9971, 0x9972, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, /*0x98-0x9f*/
- 0xe9d1, 0x9979, 0x997a, 0x997b, 0x997c, 0x997d, 0x997e, 0x9980, /*0xa0-0xa7*/
- 0x9981, 0xe9dd, 0x9982, 0xe9df, 0xc3ca, 0x9983, 0x9984, 0x9985, /*0xa8-0xaf*/
- 0x9986, 0x9987, 0x9988, 0x9989, 0x998a, 0x998b, 0x998c, 0x998d, /*0xb0-0xb7*/
- 0x998e, 0x998f, 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995, /*0xb8-0xbf*/
- 0x9996, 0x9997, 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d, /*0xc0-0xc7*/
- 0x999e, 0x999f, 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5, /*0xc8-0xcf*/
- 0x99a6, 0x99a7, 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, /*0xd0-0xd7*/
- 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5, /*0xd8-0xdf*/
- 0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd, /*0xe0-0xe7*/
- 0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5, /*0xe8-0xef*/
- 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd, /*0xf0-0xf7*/
- 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5, /*0xf8-0xff*/
- /* 0x6b00 */
- 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, /*0x00-0x07*/
- 0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, /*0x08-0x0f*/
- 0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, /*0x10-0x17*/
- 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5, /*0x18-0x1f*/
- 0xc7b7, 0xb4ce, 0xbbb6, 0xd0c0, 0xeca3, 0x99f6, 0x99f7, 0xc5b7, /*0x20-0x27*/
- 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x9a40, /*0x28-0x2f*/
- 0x9a41, 0x9a42, 0xd3fb, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0xeca4, /*0x30-0x37*/
- 0x9a47, 0xeca5, 0xc6db, 0x9a48, 0x9a49, 0x9a4a, 0xbfee, 0x9a4b, /*0x38-0x3f*/
- 0x9a4c, 0x9a4d, 0x9a4e, 0xeca6, 0x9a4f, 0x9a50, 0xeca7, 0xd0aa, /*0x40-0x47*/
- 0x9a51, 0xc7b8, 0x9a52, 0x9a53, 0xb8e8, 0x9a54, 0x9a55, 0x9a56, /*0x48-0x4f*/
- 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, /*0x50-0x57*/
- 0x9a5f, 0xeca8, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, /*0x58-0x5f*/
- 0x9a66, 0x9a67, 0xd6b9, 0xd5fd, 0xb4cb, 0xb2bd, 0xcee4, 0xc6e7, /*0x60-0x67*/
- 0x9a68, 0x9a69, 0xcde1, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e, /*0x68-0x6f*/
- 0x9a6f, 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76, /*0x70-0x77*/
- 0x9a77, 0xb4f5, 0x9a78, 0xcbc0, 0xbcdf, 0x9a79, 0x9a7a, 0x9a7b, /*0x78-0x7f*/
- 0x9a7c, 0xe9e2, 0xe9e3, 0xd1ea, 0xe9e5, 0x9a7d, 0xb4f9, 0xe9e4, /*0x80-0x87*/
- 0x9a7e, 0xd1b3, 0xcae2, 0xb2d0, 0x9a80, 0xe9e8, 0x9a81, 0x9a82, /*0x88-0x8f*/
- 0x9a83, 0x9a84, 0xe9e6, 0xe9e7, 0x9a85, 0x9a86, 0xd6b3, 0x9a87, /*0x90-0x97*/
- 0x9a88, 0x9a89, 0xe9e9, 0xe9ea, 0x9a8a, 0x9a8b, 0x9a8c, 0x9a8d, /*0x98-0x9f*/
- 0x9a8e, 0xe9eb, 0x9a8f, 0x9a90, 0x9a91, 0x9a92, 0x9a93, 0x9a94, /*0xa0-0xa7*/
- 0x9a95, 0x9a96, 0xe9ec, 0x9a97, 0x9a98, 0x9a99, 0x9a9a, 0x9a9b, /*0xa8-0xaf*/
- 0x9a9c, 0x9a9d, 0x9a9e, 0xecaf, 0xc5b9, 0xb6ce, 0x9a9f, 0xd2f3, /*0xb0-0xb7*/
- 0x9aa0, 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0xb5ee, /*0xb8-0xbf*/
- 0x9aa7, 0xbbd9, 0xecb1, 0x9aa8, 0x9aa9, 0xd2e3, 0x9aaa, 0x9aab, /*0xc0-0xc7*/
- 0x9aac, 0x9aad, 0x9aae, 0xcee3, 0x9aaf, 0xc4b8, 0x9ab0, 0xc3bf, /*0xc8-0xcf*/
- 0x9ab1, 0x9ab2, 0xb6be, 0xd8b9, 0xb1c8, 0xb1cf, 0xb1d1, 0xc5fe, /*0xd0-0xd7*/
- 0x9ab3, 0xb1d0, 0x9ab4, 0xc3ab, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8, /*0xd8-0xdf*/
- 0x9ab9, 0xd5b1, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf, /*0xe0-0xe7*/
- 0x9ac0, 0x9ac1, 0xeba4, 0xbac1, 0x9ac2, 0x9ac3, 0x9ac4, 0xccba, /*0xe8-0xef*/
- 0x9ac5, 0x9ac6, 0x9ac7, 0xeba5, 0x9ac8, 0xeba7, 0x9ac9, 0x9aca, /*0xf0-0xf7*/
- 0x9acb, 0xeba8, 0x9acc, 0x9acd, 0x9ace, 0xeba6, 0x9acf, 0x9ad0, /*0xf8-0xff*/
- /* 0x6c00 */
- 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0xeba9, 0xebab, 0xebaa, /*0x00-0x07*/
- 0x9ad6, 0x9ad7, 0x9ad8, 0x9ad9, 0x9ada, 0xebac, 0x9adb, 0xcacf, /*0x08-0x0f*/
- 0xd8b5, 0xc3f1, 0x9adc, 0xc3a5, 0xc6f8, 0xebad, 0xc4ca, 0x9add, /*0x10-0x17*/
- 0xebae, 0xebaf, 0xebb0, 0xb7d5, 0x9ade, 0x9adf, 0x9ae0, 0xb7fa, /*0x18-0x1f*/
- 0x9ae1, 0xebb1, 0xc7e2, 0x9ae2, 0xebb3, 0x9ae3, 0xbaa4, 0xd1f5, /*0x20-0x27*/
- 0xb0b1, 0xebb2, 0xebb4, 0x9ae4, 0x9ae5, 0x9ae6, 0xb5aa, 0xc2c8, /*0x28-0x2f*/
- 0xc7e8, 0x9ae7, 0xebb5, 0x9ae8, 0xcbae, 0xe3df, 0x9ae9, 0x9aea, /*0x30-0x37*/
- 0xd3c0, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0xd9db, 0x9aef, 0x9af0, /*0x38-0x3f*/
- 0xcda1, 0xd6ad, 0xc7f3, 0x9af1, 0x9af2, 0x9af3, 0xd9e0, 0xbbe3, /*0x40-0x47*/
- 0x9af4, 0xbaba, 0xe3e2, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9af9, /*0x48-0x4f*/
- 0xcfab, 0x9afa, 0x9afb, 0x9afc, 0xe3e0, 0xc9c7, 0x9afd, 0xbab9, /*0x50-0x57*/
- 0x9afe, 0x9b40, 0x9b41, 0xd1b4, 0xe3e1, 0xc8ea, 0xb9af, 0xbdad, /*0x58-0x5f*/
- 0xb3d8, 0xcedb, 0x9b42, 0x9b43, 0xccc0, 0x9b44, 0x9b45, 0x9b46, /*0x60-0x67*/
- 0xe3e8, 0xe3e9, 0xcdf4, 0x9b47, 0x9b48, 0x9b49, 0x9b4a, 0x9b4b, /*0x68-0x6f*/
- 0xccad, 0x9b4c, 0xbcb3, 0x9b4d, 0xe3ea, 0x9b4e, 0xe3eb, 0x9b4f, /*0x70-0x77*/
- 0x9b50, 0xd0da, 0x9b51, 0x9b52, 0x9b53, 0xc6fb, 0xb7da, 0x9b54, /*0x78-0x7f*/
- 0x9b55, 0xc7df, 0xd2ca, 0xced6, 0x9b56, 0xe3e4, 0xe3ec, 0x9b57, /*0x80-0x87*/
- 0xc9f2, 0xb3c1, 0x9b58, 0x9b59, 0xe3e7, 0x9b5a, 0x9b5b, 0xc6e3, /*0x88-0x8f*/
- 0xe3e5, 0x9b5c, 0x9b5d, 0xedb3, 0xe3e6, 0x9b5e, 0x9b5f, 0x9b60, /*0x90-0x97*/
- 0x9b61, 0xc9b3, 0x9b62, 0xc5e6, 0x9b63, 0x9b64, 0x9b65, 0xb9b5, /*0x98-0x9f*/
- 0x9b66, 0xc3bb, 0x9b67, 0xe3e3, 0xc5bd, 0xc1a4, 0xc2d9, 0xb2d7, /*0xa0-0xa7*/
- 0x9b68, 0xe3ed, 0xbba6, 0xc4ad, 0x9b69, 0xe3f0, 0xbeda, 0x9b6a, /*0xa8-0xaf*/
- 0x9b6b, 0xe3fb, 0xe3f5, 0xbad3, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, /*0xb0-0xb7*/
- 0xb7d0, 0xd3cd, 0x9b70, 0xd6ce, 0xd5d3, 0xb9c1, 0xd5b4, 0xd1d8, /*0xb8-0xbf*/
- 0x9b71, 0x9b72, 0x9b73, 0x9b74, 0xd0b9, 0xc7f6, 0x9b75, 0x9b76, /*0xc0-0xc7*/
- 0x9b77, 0xc8aa, 0xb2b4, 0x9b78, 0xc3da, 0x9b79, 0x9b7a, 0x9b7b, /*0xc8-0xcf*/
- 0xe3ee, 0x9b7c, 0x9b7d, 0xe3fc, 0xe3ef, 0xb7a8, 0xe3f7, 0xe3f4, /*0xd0-0xd7*/
- 0x9b7e, 0x9b80, 0x9b81, 0xb7ba, 0x9b82, 0x9b83, 0xc5a2, 0x9b84, /*0xd8-0xdf*/
- 0xe3f6, 0xc5dd, 0xb2a8, 0xc6fc, 0x9b85, 0xc4e0, 0x9b86, 0x9b87, /*0xe0-0xe7*/
- 0xd7a2, 0x9b88, 0xc0e1, 0xe3f9, 0x9b89, 0x9b8a, 0xe3fa, 0xe3fd, /*0xe8-0xef*/
- 0xcca9, 0xe3f3, 0x9b8b, 0xd3be, 0x9b8c, 0xb1c3, 0xedb4, 0xe3f1, /*0xf0-0xf7*/
- 0xe3f2, 0x9b8d, 0xe3f8, 0xd0ba, 0xc6c3, 0xd4f3, 0xe3fe, 0x9b8e, /*0xf8-0xff*/
- /* 0x6d00 */
- 0x9b8f, 0xbde0, 0x9b90, 0x9b91, 0xe4a7, 0x9b92, 0x9b93, 0xe4a6, /*0x00-0x07*/
- 0x9b94, 0x9b95, 0x9b96, 0xd1f3, 0xe4a3, 0x9b97, 0xe4a9, 0x9b98, /*0x08-0x0f*/
- 0x9b99, 0x9b9a, 0xc8f7, 0x9b9b, 0x9b9c, 0x9b9d, 0x9b9e, 0xcfb4, /*0x10-0x17*/
- 0x9b9f, 0xe4a8, 0xe4ae, 0xc2e5, 0x9ba0, 0x9ba1, 0xb6b4, 0x9ba2, /*0x18-0x1f*/
- 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0xbdf2, 0x9ba8, 0xe4a2, /*0x20-0x27*/
- 0x9ba9, 0x9baa, 0xbae9, 0xe4aa, 0x9bab, 0x9bac, 0xe4ac, 0x9bad, /*0x28-0x2f*/
- 0x9bae, 0xb6fd, 0xd6de, 0xe4b2, 0x9baf, 0xe4ad, 0x9bb0, 0x9bb1, /*0x30-0x37*/
- 0x9bb2, 0xe4a1, 0x9bb3, 0xbbee, 0xcddd, 0xc7a2, 0xc5c9, 0x9bb4, /*0x38-0x3f*/
- 0x9bb5, 0xc1f7, 0x9bb6, 0xe4a4, 0x9bb7, 0xc7b3, 0xbdac, 0xbdbd, /*0x40-0x47*/
- 0xe4a5, 0x9bb8, 0xd7c7, 0xb2e2, 0x9bb9, 0xe4ab, 0xbcc3, 0xe4af, /*0x48-0x4f*/
- 0x9bba, 0xbbeb, 0xe4b0, 0xc5a8, 0xe4b1, 0x9bbb, 0x9bbc, 0x9bbd, /*0x50-0x57*/
- 0x9bbe, 0xd5e3, 0xbfa3, 0x9bbf, 0xe4ba, 0x9bc0, 0xe4b7, 0x9bc1, /*0x58-0x5f*/
- 0xe4bb, 0x9bc2, 0x9bc3, 0xe4bd, 0x9bc4, 0x9bc5, 0xc6d6, 0x9bc6, /*0x60-0x67*/
- 0x9bc7, 0xbac6, 0xc0cb, 0x9bc8, 0x9bc9, 0x9bca, 0xb8a1, 0xe4b4, /*0x68-0x6f*/
- 0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0xd4a1, 0x9bcf, 0x9bd0, 0xbaa3, /*0x70-0x77*/
- 0xbdfe, 0x9bd1, 0x9bd2, 0x9bd3, 0xe4bc, 0x9bd4, 0x9bd5, 0x9bd6, /*0x78-0x7f*/
- 0x9bd7, 0x9bd8, 0xcdbf, 0x9bd9, 0x9bda, 0xc4f9, 0x9bdb, 0x9bdc, /*0x80-0x87*/
- 0xcffb, 0xc9e6, 0x9bdd, 0x9bde, 0xd3bf, 0x9bdf, 0xcfd1, 0x9be0, /*0x88-0x8f*/
- 0x9be1, 0xe4b3, 0x9be2, 0xe4b8, 0xe4b9, 0xcce9, 0x9be3, 0x9be4, /*0x90-0x97*/
- 0x9be5, 0x9be6, 0x9be7, 0xccce, 0x9be8, 0xc0d4, 0xe4b5, 0xc1b0, /*0x98-0x9f*/
- 0xe4b6, 0xced0, 0x9be9, 0xbbc1, 0xb5d3, 0x9bea, 0xc8f3, 0xbda7, /*0xa0-0xa7*/
- 0xd5c7, 0xc9ac, 0xb8a2, 0xe4ca, 0x9beb, 0x9bec, 0xe4cc, 0xd1c4, /*0xa8-0xaf*/
- 0x9bed, 0x9bee, 0xd2ba, 0x9bef, 0x9bf0, 0xbaad, 0x9bf1, 0x9bf2, /*0xb0-0xb7*/
- 0xbad4, 0x9bf3, 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0xe4c3, /*0xb8-0xbf*/
- 0xb5ed, 0x9bf9, 0x9bfa, 0x9bfb, 0xd7cd, 0xe4c0, 0xcffd, 0xe4bf, /*0xc0-0xc7*/
- 0x9bfc, 0x9bfd, 0x9bfe, 0xc1dc, 0xccca, 0x9c40, 0x9c41, 0x9c42, /*0xc8-0xcf*/
- 0x9c43, 0xcae7, 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0xc4d7, 0x9c48, /*0xd0-0xd7*/
- 0xccd4, 0xe4c8, 0x9c49, 0x9c4a, 0x9c4b, 0xe4c7, 0xe4c1, 0x9c4c, /*0xd8-0xdf*/
- 0xe4c4, 0xb5ad, 0x9c4d, 0x9c4e, 0xd3d9, 0x9c4f, 0xe4c6, 0x9c50, /*0xe0-0xe7*/
- 0x9c51, 0x9c52, 0x9c53, 0xd2f9, 0xb4e3, 0x9c54, 0xbbb4, 0x9c55, /*0xe8-0xef*/
- 0x9c56, 0xc9ee, 0x9c57, 0xb4be, 0x9c58, 0x9c59, 0x9c5a, 0xbbec, /*0xf0-0xf7*/
- 0x9c5b, 0xd1cd, 0x9c5c, 0xcced, 0xedb5, 0x9c5d, 0x9c5e, 0x9c5f, /*0xf8-0xff*/
- /* 0x6e00 */
- 0x9c60, 0x9c61, 0x9c62, 0x9c63, 0x9c64, 0xc7e5, 0x9c65, 0x9c66, /*0x00-0x07*/
- 0x9c67, 0x9c68, 0xd4a8, 0x9c69, 0xe4cb, 0xd7d5, 0xe4c2, 0x9c6a, /*0x08-0x0f*/
- 0xbda5, 0xe4c5, 0x9c6b, 0x9c6c, 0xd3e6, 0x9c6d, 0xe4c9, 0xc9f8, /*0x10-0x17*/
- 0x9c6e, 0x9c6f, 0xe4be, 0x9c70, 0x9c71, 0xd3e5, 0x9c72, 0x9c73, /*0x18-0x1f*/
- 0xc7fe, 0xb6c9, 0x9c74, 0xd4fc, 0xb2b3, 0xe4d7, 0x9c75, 0x9c76, /*0x20-0x27*/
- 0x9c77, 0xcec2, 0x9c78, 0xe4cd, 0x9c79, 0xcebc, 0x9c7a, 0xb8db, /*0x28-0x2f*/
- 0x9c7b, 0x9c7c, 0xe4d6, 0x9c7d, 0xbfca, 0x9c7e, 0x9c80, 0x9c81, /*0x30-0x37*/
- 0xd3ce, 0x9c82, 0xc3ec, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87, /*0x38-0x3f*/
- 0x9c88, 0x9c89, 0x9c8a, 0xc5c8, 0xe4d8, 0x9c8b, 0x9c8c, 0x9c8d, /*0x40-0x47*/
- 0x9c8e, 0x9c8f, 0x9c90, 0x9c91, 0x9c92, 0xcdc4, 0xe4cf, 0x9c93, /*0x48-0x4f*/
- 0x9c94, 0x9c95, 0x9c96, 0xe4d4, 0xe4d5, 0x9c97, 0xbafe, 0x9c98, /*0x50-0x57*/
- 0xcfe6, 0x9c99, 0x9c9a, 0xd5bf, 0x9c9b, 0x9c9c, 0x9c9d, 0xe4d2, /*0x58-0x5f*/
- 0x9c9e, 0x9c9f, 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, /*0x60-0x67*/
- 0x9ca6, 0x9ca7, 0x9ca8, 0xe4d0, 0x9ca9, 0x9caa, 0xe4ce, 0x9cab, /*0x68-0x6f*/
- 0x9cac, 0x9cad, 0x9cae, 0x9caf, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, /*0x70-0x77*/
- 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cb8, 0x9cb9, 0xcde5, 0xcaaa, /*0x78-0x7f*/
- 0x9cba, 0x9cbb, 0x9cbc, 0xc0a3, 0x9cbd, 0xbda6, 0xe4d3, 0x9cbe, /*0x80-0x87*/
- 0x9cbf, 0xb8c8, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0xe4e7, /*0x88-0x8f*/
- 0xd4b4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, /*0x90-0x97*/
- 0xe4db, 0x9ccc, 0x9ccd, 0x9cce, 0xc1ef, 0x9ccf, 0x9cd0, 0xe4e9, /*0x98-0x9f*/
- 0x9cd1, 0x9cd2, 0xd2e7, 0x9cd3, 0x9cd4, 0xe4df, 0x9cd5, 0xe4e0, /*0xa0-0xa7*/
- 0x9cd6, 0x9cd7, 0xcfaa, 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0xcbdd, /*0xa8-0xaf*/
- 0x9cdc, 0xe4da, 0xe4d1, 0x9cdd, 0xe4e5, 0x9cde, 0xc8dc, 0xe4e3, /*0xb0-0xb7*/
- 0x9cdf, 0x9ce0, 0xc4e7, 0xe4e2, 0x9ce1, 0xe4e1, 0x9ce2, 0x9ce3, /*0xb8-0xbf*/
- 0x9ce4, 0xb3fc, 0xe4e8, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0xb5e1, /*0xc0-0xc7*/
- 0x9ce9, 0x9cea, 0x9ceb, 0xd7cc, 0x9cec, 0x9ced, 0x9cee, 0xe4e6, /*0xc8-0xcf*/
- 0x9cef, 0xbbac, 0x9cf0, 0xd7d2, 0xcccf, 0xebf8, 0x9cf1, 0xe4e4, /*0xd0-0xd7*/
- 0x9cf2, 0x9cf3, 0xb9f6, 0x9cf4, 0x9cf5, 0x9cf6, 0xd6cd, 0xe4d9, /*0xd8-0xdf*/
- 0xe4dc, 0xc2fa, 0xe4de, 0x9cf7, 0xc2cb, 0xc0c4, 0xc2d0, 0x9cf8, /*0xe0-0xe7*/
- 0xb1f5, 0xccb2, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, /*0xe8-0xef*/
- 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0xb5ce, 0x9d44, 0x9d45, 0x9d46, /*0xf0-0xf7*/
- 0x9d47, 0xe4ef, 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, /*0xf8-0xff*/
- /* 0x6f00 */
- 0x9d4e, 0x9d4f, 0xc6af, 0x9d50, 0x9d51, 0x9d52, 0xc6e1, 0x9d53, /*0x00-0x07*/
- 0x9d54, 0xe4f5, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0xc2a9, /*0x08-0x0f*/
- 0x9d5a, 0x9d5b, 0x9d5c, 0xc0ec, 0xd1dd, 0xe4ee, 0x9d5d, 0x9d5e, /*0x10-0x17*/
- 0x9d5f, 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, /*0x18-0x1f*/
- 0xc4ae, 0x9d67, 0x9d68, 0x9d69, 0xe4ed, 0x9d6a, 0x9d6b, 0x9d6c, /*0x20-0x27*/
- 0x9d6d, 0xe4f6, 0xe4f4, 0xc2fe, 0x9d6e, 0xe4dd, 0x9d6f, 0xe4f0, /*0x28-0x2f*/
- 0x9d70, 0xcafe, 0x9d71, 0xd5c4, 0x9d72, 0x9d73, 0xe4f1, 0x9d74, /*0x30-0x37*/
- 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a, 0xd1fa, 0x9d7b, /*0x38-0x3f*/
- 0x9d7c, 0x9d7d, 0x9d7e, 0x9d80, 0x9d81, 0x9d82, 0xe4eb, 0xe4ec, /*0x40-0x47*/
- 0x9d83, 0x9d84, 0x9d85, 0xe4f2, 0x9d86, 0xceab, 0x9d87, 0x9d88, /*0x48-0x4f*/
- 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, /*0x50-0x57*/
- 0xc5cb, 0x9d91, 0x9d92, 0x9d93, 0xc7b1, 0x9d94, 0xc2ba, 0x9d95, /*0x58-0x5f*/
- 0x9d96, 0x9d97, 0xe4ea, 0x9d98, 0x9d99, 0x9d9a, 0xc1ca, 0x9d9b, /*0x60-0x67*/
- 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0xccb6, 0xb3b1, 0x9da1, /*0x68-0x6f*/
- 0x9da2, 0x9da3, 0xe4fb, 0x9da4, 0xe4f3, 0x9da5, 0x9da6, 0x9da7, /*0x70-0x77*/
- 0xe4fa, 0x9da8, 0xe4fd, 0x9da9, 0xe4fc, 0x9daa, 0x9dab, 0x9dac, /*0x78-0x7f*/
- 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0xb3ce, 0x9db1, 0x9db2, 0x9db3, /*0x80-0x87*/
- 0xb3ba, 0xe4f7, 0x9db4, 0x9db5, 0xe4f9, 0xe4f8, 0xc5ec, 0x9db6, /*0x88-0x8f*/
- 0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, /*0x90-0x97*/
- 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2, 0xc0bd, 0x9dc3, 0x9dc4, 0x9dc5, /*0x98-0x9f*/
- 0x9dc6, 0xd4e8, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca, 0x9dcb, 0xe5a2, /*0xa0-0xa7*/
- 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2, 0x9dd3, /*0xa8-0xaf*/
- 0x9dd4, 0x9dd5, 0x9dd6, 0xb0c4, 0x9dd7, 0x9dd8, 0xe5a4, 0x9dd9, /*0xb0-0xb7*/
- 0x9dda, 0xe5a3, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, /*0xb8-0xbf*/
- 0xbca4, 0x9de1, 0xe5a5, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, /*0xc0-0xc7*/
- 0x9de7, 0xe5a1, 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, 0x9ded, /*0xc8-0xcf*/
- 0x9dee, 0xe4fe, 0xb1f4, 0x9def, 0x9df0, 0x9df1, 0x9df2, 0x9df3, /*0xd0-0xd7*/
- 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0xe5a8, 0x9dfa, /*0xd8-0xdf*/
- 0xe5a9, 0xe5a6, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9e40, 0x9e41, /*0xe0-0xe7*/
- 0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0xe5a7, 0xe5aa, /*0xe8-0xef*/
- 0x9e48, 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, /*0xf0-0xf7*/
- 0x9e50, 0x9e51, 0x9e52, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, /*0xf8-0xff*/
- /* 0x7000 */
- 0x9e58, 0x9e59, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f, /*0x00-0x07*/
- 0x9e60, 0x9e61, 0x9e62, 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67, /*0x08-0x0f*/
- 0x9e68, 0xc6d9, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, /*0x10-0x17*/
- 0x9e6f, 0x9e70, 0xe5ab, 0xe5ad, 0x9e71, 0x9e72, 0x9e73, 0x9e74, /*0x18-0x1f*/
- 0x9e75, 0x9e76, 0x9e77, 0xe5ac, 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, /*0x20-0x27*/
- 0x9e7c, 0x9e7d, 0x9e7e, 0x9e80, 0x9e81, 0x9e82, 0x9e83, 0x9e84, /*0x28-0x2f*/
- 0x9e85, 0x9e86, 0x9e87, 0x9e88, 0x9e89, 0xe5af, 0x9e8a, 0x9e8b, /*0x30-0x37*/
- 0x9e8c, 0xe5ae, 0x9e8d, 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e92, /*0x38-0x3f*/
- 0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97, 0x9e98, 0x9e99, 0x9e9a, /*0x40-0x47*/
- 0x9e9b, 0x9e9c, 0x9e9d, 0x9e9e, 0xb9e0, 0x9e9f, 0x9ea0, 0xe5b0, /*0x48-0x4f*/
- 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, /*0x50-0x57*/
- 0x9ea9, 0x9eaa, 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0xe5b1, 0x9eaf, /*0x58-0x5f*/
- 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4, 0x9eb5, 0x9eb6, 0x9eb7, /*0x60-0x67*/
- 0x9eb8, 0x9eb9, 0x9eba, 0xbbf0, 0xece1, 0xc3f0, 0x9ebb, 0xb5c6, /*0x68-0x6f*/
- 0xbbd2, 0x9ebc, 0x9ebd, 0x9ebe, 0x9ebf, 0xc1e9, 0xd4ee, 0x9ec0, /*0x70-0x77*/
- 0xbec4, 0x9ec1, 0x9ec2, 0x9ec3, 0xd7c6, 0x9ec4, 0xd4d6, 0xb2d3, /*0x78-0x7f*/
- 0xecbe, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0xeac1, 0x9ec9, 0x9eca, /*0x80-0x87*/
- 0x9ecb, 0xc2af, 0xb4b6, 0x9ecc, 0x9ecd, 0x9ece, 0xd1d7, 0x9ecf, /*0x88-0x8f*/
- 0x9ed0, 0x9ed1, 0xb3b4, 0x9ed2, 0xc8b2, 0xbfbb, 0xecc0, 0x9ed3, /*0x90-0x97*/
- 0x9ed4, 0xd6cb, 0x9ed5, 0x9ed6, 0xecbf, 0xecc1, 0x9ed7, 0x9ed8, /*0x98-0x9f*/
- 0x9ed9, 0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ede, 0x9edf, 0x9ee0, /*0xa0-0xa7*/
- 0x9ee1, 0x9ee2, 0x9ee3, 0xecc5, 0xbee6, 0xccbf, 0xc5da, 0xbebc, /*0xa8-0xaf*/
- 0x9ee4, 0xecc6, 0x9ee5, 0xb1fe, 0x9ee6, 0x9ee7, 0x9ee8, 0xecc4, /*0xb0-0xb7*/
- 0xd5a8, 0xb5e3, 0x9ee9, 0xecc2, 0xc1b6, 0xb3e3, 0x9eea, 0x9eeb, /*0xb8-0xbf*/
- 0xecc3, 0xcbb8, 0xc0c3, 0xccfe, 0x9eec, 0x9eed, 0x9eee, 0x9eef, /*0xc0-0xc7*/
- 0xc1d2, 0x9ef0, 0xecc8, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4, 0x9ef5, /*0xc8-0xcf*/
- 0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd, /*0xd0-0xd7*/
- 0xbae6, 0xc0d3, 0x9efe, 0xd6f2, 0x9f40, 0x9f41, 0x9f42, 0xd1cc, /*0xd8-0xdf*/
- 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0xbfbe, 0x9f47, 0xb7b3, 0xc9d5, /*0xe0-0xe7*/
- 0xecc7, 0xbbe2, 0x9f48, 0xcccc, 0xbdfd, 0xc8c8, 0x9f49, 0xcfa9, /*0xe8-0xef*/
- 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f50, 0xcde9, /*0xf0-0xf7*/
- 0x9f51, 0xc5eb, 0x9f52, 0x9f53, 0x9f54, 0xb7e9, 0x9f55, 0x9f56, /*0xf8-0xff*/
- /* 0x7100 */
- 0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, /*0x00-0x07*/
- 0x9f5f, 0xd1c9, 0xbab8, 0x9f60, 0x9f61, 0x9f62, 0x9f63, 0x9f64, /*0x08-0x0f*/
- 0xecc9, 0x9f65, 0x9f66, 0xecca, 0x9f67, 0xbbc0, 0xeccb, 0x9f68, /*0x10-0x17*/
- 0xece2, 0xb1ba, 0xb7d9, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, /*0x18-0x1f*/
- 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0xbdb9, 0x9f74, /*0x20-0x27*/
- 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0xeccc, /*0x28-0x2f*/
- 0xd1e6, 0xeccd, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f80, 0xc8bb, 0x9f81, /*0x30-0x37*/
- 0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, 0x9f88, 0x9f89, /*0x38-0x3f*/
- 0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0xecd1, 0x9f8f, 0x9f90, /*0x40-0x47*/
- 0x9f91, 0x9f92, 0xecd3, 0x9f93, 0xbbcd, 0x9f94, 0xbce5, 0x9f95, /*0x48-0x4f*/
- 0x9f96, 0x9f97, 0x9f98, 0x9f99, 0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d, /*0x50-0x57*/
- 0x9f9e, 0x9f9f, 0x9fa0, 0x9fa1, 0xeccf, 0x9fa2, 0xc9b7, 0x9fa3, /*0x58-0x5f*/
- 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7, 0xc3ba, 0x9fa8, 0xece3, 0xd5d5, /*0x60-0x67*/
- 0xecd0, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0xd6f3, 0x9fae, /*0x68-0x6f*/
- 0x9faf, 0x9fb0, 0xecd2, 0xecce, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, /*0x70-0x77*/
- 0xecd4, 0x9fb5, 0xecd5, 0x9fb6, 0x9fb7, 0xc9bf, 0x9fb8, 0x9fb9, /*0x78-0x7f*/
- 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0xcfa8, 0x9fbe, 0x9fbf, 0x9fc0, /*0x80-0x87*/
- 0x9fc1, 0x9fc2, 0xd0dc, 0x9fc3, 0x9fc4, 0x9fc5, 0x9fc6, 0xd1ac, /*0x88-0x8f*/
- 0x9fc7, 0x9fc8, 0x9fc9, 0x9fca, 0xc8db, 0x9fcb, 0x9fcc, 0x9fcd, /*0x90-0x97*/
- 0xecd6, 0xcef5, 0x9fce, 0x9fcf, 0x9fd0, 0x9fd1, 0x9fd2, 0xcaec, /*0x98-0x9f*/
- 0xecda, 0x9fd3, 0x9fd4, 0x9fd5, 0x9fd6, 0x9fd7, 0x9fd8, 0x9fd9, /*0xa0-0xa7*/
- 0xecd9, 0x9fda, 0x9fdb, 0x9fdc, 0xb0be, 0x9fdd, 0x9fde, 0x9fdf, /*0xa8-0xaf*/
- 0x9fe0, 0x9fe1, 0x9fe2, 0xecd7, 0x9fe3, 0xecd8, 0x9fe4, 0x9fe5, /*0xb0-0xb7*/
- 0x9fe6, 0xece4, 0x9fe7, 0x9fe8, 0x9fe9, 0x9fea, 0x9feb, 0x9fec, /*0xb8-0xbf*/
- 0x9fed, 0x9fee, 0x9fef, 0xc8bc, 0x9ff0, 0x9ff1, 0x9ff2, 0x9ff3, /*0xc0-0xc7*/
- 0x9ff4, 0x9ff5, 0x9ff6, 0x9ff7, 0x9ff8, 0x9ff9, 0xc1c7, 0x9ffa, /*0xc8-0xcf*/
- 0x9ffb, 0x9ffc, 0x9ffd, 0x9ffe, 0xecdc, 0xd1e0, 0xa040, 0xa041, /*0xd0-0xd7*/
- 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, 0xa048, 0xa049, /*0xd8-0xdf*/
- 0xecdb, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xd4ef, 0xa04e, 0xecdd, /*0xe0-0xe7*/
- 0xa04f, 0xa050, 0xa051, 0xa052, 0xa053, 0xa054, 0xdbc6, 0xa055, /*0xe8-0xef*/
- 0xa056, 0xa057, 0xa058, 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, /*0xf0-0xf7*/
- 0xa05e, 0xecde, 0xa05f, 0xa060, 0xa061, 0xa062, 0xa063, 0xa064, /*0xf8-0xff*/
- /* 0x7200 */
- 0xa065, 0xa066, 0xa067, 0xa068, 0xa069, 0xa06a, 0xb1ac, 0xa06b, /*0x00-0x07*/
- 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070, 0xa071, 0xa072, 0xa073, /*0x08-0x0f*/
- 0xa074, 0xa075, 0xa076, 0xa077, 0xa078, 0xa079, 0xa07a, 0xa07b, /*0x10-0x17*/
- 0xa07c, 0xa07d, 0xa07e, 0xa080, 0xa081, 0xecdf, 0xa082, 0xa083, /*0x18-0x1f*/
- 0xa084, 0xa085, 0xa086, 0xa087, 0xa088, 0xa089, 0xa08a, 0xa08b, /*0x20-0x27*/
- 0xece0, 0xa08c, 0xd7a6, 0xa08d, 0xc5c0, 0xa08e, 0xa08f, 0xa090, /*0x28-0x2f*/
- 0xebbc, 0xb0ae, 0xa091, 0xa092, 0xa093, 0xbef4, 0xb8b8, 0xd2af, /*0x30-0x37*/
- 0xb0d6, 0xb5f9, 0xa094, 0xd8b3, 0xa095, 0xcbac, 0xa096, 0xe3dd, /*0x38-0x3f*/
- 0xa097, 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d, 0xc6ac, /*0x40-0x47*/
- 0xb0e6, 0xa09e, 0xa09f, 0xa0a0, 0xc5c6, 0xebb9, 0xa0a1, 0xa0a2, /*0x48-0x4f*/
- 0xa0a3, 0xa0a4, 0xebba, 0xa0a5, 0xa0a6, 0xa0a7, 0xebbb, 0xa0a8, /*0x50-0x57*/
- 0xa0a9, 0xd1c0, 0xa0aa, 0xc5a3, 0xa0ab, 0xeaf2, 0xa0ac, 0xc4b2, /*0x58-0x5f*/
- 0xa0ad, 0xc4b5, 0xc0ce, 0xa0ae, 0xa0af, 0xa0b0, 0xeaf3, 0xc4c1, /*0x60-0x67*/
- 0xa0b1, 0xceef, 0xa0b2, 0xa0b3, 0xa0b4, 0xa0b5, 0xeaf0, 0xeaf4, /*0x68-0x6f*/
- 0xa0b6, 0xa0b7, 0xc9fc, 0xa0b8, 0xa0b9, 0xc7a3, 0xa0ba, 0xa0bb, /*0x70-0x77*/
- 0xa0bc, 0xccd8, 0xcefe, 0xa0bd, 0xa0be, 0xa0bf, 0xeaf5, 0xeaf6, /*0x78-0x7f*/
- 0xcfac, 0xc0e7, 0xa0c0, 0xa0c1, 0xeaf7, 0xa0c2, 0xa0c3, 0xa0c4, /*0x80-0x87*/
- 0xa0c5, 0xa0c6, 0xb6bf, 0xeaf8, 0xa0c7, 0xeaf9, 0xa0c8, 0xeafa, /*0x88-0x8f*/
- 0xa0c9, 0xa0ca, 0xeafb, 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, /*0x90-0x97*/
- 0xa0d0, 0xa0d1, 0xa0d2, 0xa0d3, 0xa0d4, 0xa0d5, 0xa0d6, 0xeaf1, /*0x98-0x9f*/
- 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, /*0xa0-0xa7*/
- 0xa0df, 0xa0e0, 0xa0e1, 0xa0e2, 0xc8ae, 0xe1eb, 0xa0e3, 0xb7b8, /*0xa8-0xaf*/
- 0xe1ec, 0xa0e4, 0xa0e5, 0xa0e6, 0xe1ed, 0xa0e7, 0xd7b4, 0xe1ee, /*0xb0-0xb7*/
- 0xe1ef, 0xd3cc, 0xa0e8, 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, /*0xb8-0xbf*/
- 0xa0ee, 0xe1f1, 0xbff1, 0xe1f0, 0xb5d2, 0xa0ef, 0xa0f0, 0xa0f1, /*0xc0-0xc7*/
- 0xb1b7, 0xa0f2, 0xa0f3, 0xa0f4, 0xa0f5, 0xe1f3, 0xe1f2, 0xa0f6, /*0xc8-0xcf*/
- 0xbafc, 0xa0f7, 0xe1f4, 0xa0f8, 0xa0f9, 0xa0fa, 0xa0fb, 0xb9b7, /*0xd0-0xd7*/
- 0xa0fc, 0xbed1, 0xa0fd, 0xa0fe, 0xaa40, 0xaa41, 0xc4fc, 0xaa42, /*0xd8-0xdf*/
- 0xbadd, 0xbdc6, 0xaa43, 0xaa44, 0xaa45, 0xaa46, 0xaa47, 0xaa48, /*0xe0-0xe7*/
- 0xe1f5, 0xe1f7, 0xaa49, 0xaa4a, 0xb6c0, 0xcfc1, 0xcaa8, 0xe1f6, /*0xe8-0xef*/
- 0xd5f8, 0xd3fc, 0xe1f8, 0xe1fc, 0xe1f9, 0xaa4b, 0xaa4c, 0xe1fa, /*0xf0-0xf7*/
- 0xc0ea, 0xaa4d, 0xe1fe, 0xe2a1, 0xc0c7, 0xaa4e, 0xaa4f, 0xaa50, /*0xf8-0xff*/
- /* 0x7300 */
- 0xaa51, 0xe1fb, 0xaa52, 0xe1fd, 0xaa53, 0xaa54, 0xaa55, 0xaa56, /*0x00-0x07*/
- 0xaa57, 0xaa58, 0xe2a5, 0xaa59, 0xaa5a, 0xaa5b, 0xc1d4, 0xaa5c, /*0x08-0x0f*/
- 0xaa5d, 0xaa5e, 0xaa5f, 0xe2a3, 0xaa60, 0xe2a8, 0xb2fe, 0xe2a2, /*0x10-0x17*/
- 0xaa61, 0xaa62, 0xaa63, 0xc3cd, 0xb2c2, 0xe2a7, 0xe2a6, 0xaa64, /*0x18-0x1f*/
- 0xaa65, 0xe2a4, 0xe2a9, 0xaa66, 0xaa67, 0xe2ab, 0xaa68, 0xaa69, /*0x20-0x27*/
- 0xaa6a, 0xd0c9, 0xd6ed, 0xc3a8, 0xe2ac, 0xaa6b, 0xcfd7, 0xaa6c, /*0x28-0x2f*/
- 0xaa6d, 0xe2ae, 0xaa6e, 0xaa6f, 0xbaef, 0xaa70, 0xaa71, 0xe9e0, /*0x30-0x37*/
- 0xe2ad, 0xe2aa, 0xaa72, 0xaa73, 0xaa74, 0xaa75, 0xbbab, 0xd4b3, /*0x38-0x3f*/
- 0xaa76, 0xaa77, 0xaa78, 0xaa79, 0xaa7a, 0xaa7b, 0xaa7c, 0xaa7d, /*0x40-0x47*/
- 0xaa7e, 0xaa80, 0xaa81, 0xaa82, 0xaa83, 0xe2b0, 0xaa84, 0xaa85, /*0x48-0x4f*/
- 0xe2af, 0xaa86, 0xe9e1, 0xaa87, 0xaa88, 0xaa89, 0xaa8a, 0xe2b1, /*0x50-0x57*/
- 0xaa8b, 0xaa8c, 0xaa8d, 0xaa8e, 0xaa8f, 0xaa90, 0xaa91, 0xaa92, /*0x58-0x5f*/
- 0xe2b2, 0xaa93, 0xaa94, 0xaa95, 0xaa96, 0xaa97, 0xaa98, 0xaa99, /*0x60-0x67*/
- 0xaa9a, 0xaa9b, 0xaa9c, 0xaa9d, 0xe2b3, 0xcca1, 0xaa9e, 0xe2b4, /*0x68-0x6f*/
- 0xaa9f, 0xaaa0, 0xab40, 0xab41, 0xab42, 0xab43, 0xab44, 0xab45, /*0x70-0x77*/
- 0xab46, 0xab47, 0xab48, 0xab49, 0xab4a, 0xab4b, 0xe2b5, 0xab4c, /*0x78-0x7f*/
- 0xab4d, 0xab4e, 0xab4f, 0xab50, 0xd0fe, 0xab51, 0xab52, 0xc2ca, /*0x80-0x87*/
- 0xab53, 0xd3f1, 0xab54, 0xcdf5, 0xab55, 0xab56, 0xe7e0, 0xab57, /*0x88-0x8f*/
- 0xab58, 0xe7e1, 0xab59, 0xab5a, 0xab5b, 0xab5c, 0xbec1, 0xab5d, /*0x90-0x97*/
- 0xab5e, 0xab5f, 0xab60, 0xc2ea, 0xab61, 0xab62, 0xab63, 0xe7e4, /*0x98-0x9f*/
- 0xab64, 0xab65, 0xe7e3, 0xab66, 0xab67, 0xab68, 0xab69, 0xab6a, /*0xa0-0xa7*/
- 0xab6b, 0xcde6, 0xab6c, 0xc3b5, 0xab6d, 0xab6e, 0xe7e2, 0xbbb7, /*0xa8-0xaf*/
- 0xcfd6, 0xab6f, 0xc1e1, 0xe7e9, 0xab70, 0xab71, 0xab72, 0xe7e8, /*0xb0-0xb7*/
- 0xab73, 0xab74, 0xe7f4, 0xb2a3, 0xab75, 0xab76, 0xab77, 0xab78, /*0xb8-0xbf*/
- 0xe7ea, 0xab79, 0xe7e6, 0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab7e, /*0xc0-0xc7*/
- 0xe7ec, 0xe7eb, 0xc9ba, 0xab80, 0xab81, 0xd5e4, 0xab82, 0xe7e5, /*0xc8-0xcf*/
- 0xb7a9, 0xe7e7, 0xab83, 0xab84, 0xab85, 0xab86, 0xab87, 0xab88, /*0xd0-0xd7*/
- 0xab89, 0xe7ee, 0xab8a, 0xab8b, 0xab8c, 0xab8d, 0xe7f3, 0xab8e, /*0xd8-0xdf*/
- 0xd6e9, 0xab8f, 0xab90, 0xab91, 0xab92, 0xe7ed, 0xab93, 0xe7f2, /*0xe0-0xe7*/
- 0xab94, 0xe7f1, 0xab95, 0xab96, 0xab97, 0xb0e0, 0xab98, 0xab99, /*0xe8-0xef*/
- 0xab9a, 0xab9b, 0xe7f5, 0xab9c, 0xab9d, 0xab9e, 0xab9f, 0xaba0, /*0xf0-0xf7*/
- 0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, /*0xf8-0xff*/
- /* 0x7400 */
- 0xac48, 0xac49, 0xac4a, 0xc7f2, 0xac4b, 0xc0c5, 0xc0ed, 0xac4c, /*0x00-0x07*/
- 0xac4d, 0xc1f0, 0xe7f0, 0xac4e, 0xac4f, 0xac50, 0xac51, 0xe7f6, /*0x08-0x0f*/
- 0xcbf6, 0xac52, 0xac53, 0xac54, 0xac55, 0xac56, 0xac57, 0xac58, /*0x10-0x17*/
- 0xac59, 0xac5a, 0xe8a2, 0xe8a1, 0xac5b, 0xac5c, 0xac5d, 0xac5e, /*0x18-0x1f*/
- 0xac5f, 0xac60, 0xd7c1, 0xac61, 0xac62, 0xe7fa, 0xe7f9, 0xac63, /*0x20-0x27*/
- 0xe7fb, 0xac64, 0xe7f7, 0xac65, 0xe7fe, 0xac66, 0xe7fd, 0xac67, /*0x28-0x2f*/
- 0xe7fc, 0xac68, 0xac69, 0xc1d5, 0xc7d9, 0xc5fd, 0xc5c3, 0xac6a, /*0x30-0x37*/
- 0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xc7ed, 0xac6f, 0xac70, 0xac71, /*0x38-0x3f*/
- 0xac72, 0xe8a3, 0xac73, 0xac74, 0xac75, 0xac76, 0xac77, 0xac78, /*0x40-0x47*/
- 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac80, 0xac81, /*0x48-0x4f*/
- 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xe8a6, 0xac87, 0xe8a5, /*0x50-0x57*/
- 0xac88, 0xe8a7, 0xbaf7, 0xe7f8, 0xe8a4, 0xac89, 0xc8f0, 0xc9aa, /*0x58-0x5f*/
- 0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, 0xac91, /*0x60-0x67*/
- 0xac92, 0xac93, 0xac94, 0xac95, 0xac96, 0xe8a9, 0xac97, 0xac98, /*0x68-0x6f*/
- 0xb9e5, 0xac99, 0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xd1fe, 0xe8a8, /*0x70-0x77*/
- 0xac9e, 0xac9f, 0xaca0, 0xad40, 0xad41, 0xad42, 0xe8aa, 0xad43, /*0x78-0x7f*/
- 0xe8ad, 0xe8ae, 0xad44, 0xc1a7, 0xad45, 0xad46, 0xad47, 0xe8af, /*0x80-0x87*/
- 0xad48, 0xad49, 0xad4a, 0xe8b0, 0xad4b, 0xad4c, 0xe8ac, 0xad4d, /*0x88-0x8f*/
- 0xe8b4, 0xad4e, 0xad4f, 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, /*0x90-0x97*/
- 0xad55, 0xad56, 0xad57, 0xad58, 0xe8ab, 0xad59, 0xe8b1, 0xad5a, /*0x98-0x9f*/
- 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, 0xad60, 0xad61, 0xe8b5, /*0xa0-0xa7*/
- 0xe8b2, 0xe8b3, 0xad62, 0xad63, 0xad64, 0xad65, 0xad66, 0xad67, /*0xa8-0xaf*/
- 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, 0xad6d, 0xad6e, 0xad6f, /*0xb0-0xb7*/
- 0xad70, 0xad71, 0xe8b7, 0xad72, 0xad73, 0xad74, 0xad75, 0xad76, /*0xb8-0xbf*/
- 0xad77, 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d, 0xad7e, /*0xc0-0xc7*/
- 0xad80, 0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, /*0xc8-0xcf*/
- 0xad88, 0xad89, 0xe8b6, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, /*0xd0-0xd7*/
- 0xad8f, 0xad90, 0xad91, 0xad92, 0xb9cf, 0xad93, 0xf0ac, 0xad94, /*0xd8-0xdf*/
- 0xf0ad, 0xad95, 0xc6b0, 0xb0ea, 0xc8bf, 0xad96, 0xcddf, 0xad97, /*0xe0-0xe7*/
- 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xcecd, 0xeab1, /*0xe8-0xef*/
- 0xad9e, 0xad9f, 0xada0, 0xae40, 0xeab2, 0xae41, 0xc6bf, 0xb4c9, /*0xf0-0xf7*/
- 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, 0xae48, 0xeab3, /*0xf8-0xff*/
- /* 0x7500 */
- 0xae49, 0xae4a, 0xae4b, 0xae4c, 0xd5e7, 0xae4d, 0xae4e, 0xae4f, /*0x00-0x07*/
- 0xae50, 0xae51, 0xae52, 0xae53, 0xae54, 0xddf9, 0xae55, 0xeab4, /*0x08-0x0f*/
- 0xae56, 0xeab5, 0xae57, 0xeab6, 0xae58, 0xae59, 0xae5a, 0xae5b, /*0x10-0x17*/
- 0xb8ca, 0xdfb0, 0xc9f5, 0xae5c, 0xccf0, 0xae5d, 0xae5e, 0xc9fa, /*0x18-0x1f*/
- 0xae5f, 0xae60, 0xae61, 0xae62, 0xae63, 0xc9fb, 0xae64, 0xae65, /*0x20-0x27*/
- 0xd3c3, 0xcba6, 0xae66, 0xb8a6, 0xf0ae, 0xb1c2, 0xae67, 0xe5b8, /*0x28-0x2f*/
- 0xccef, 0xd3c9, 0xbcd7, 0xc9ea, 0xae68, 0xb5e7, 0xae69, 0xc4d0, /*0x30-0x37*/
- 0xb5e9, 0xae6a, 0xeeae, 0xbbad, 0xae6b, 0xae6c, 0xe7de, 0xae6d, /*0x38-0x3f*/
- 0xeeaf, 0xae6e, 0xae6f, 0xae70, 0xae71, 0xb3a9, 0xae72, 0xae73, /*0x40-0x47*/
- 0xeeb2, 0xae74, 0xae75, 0xeeb1, 0xbde7, 0xae76, 0xeeb0, 0xceb7, /*0x48-0x4f*/
- 0xae77, 0xae78, 0xae79, 0xae7a, 0xc5cf, 0xae7b, 0xae7c, 0xae7d, /*0x50-0x57*/
- 0xae7e, 0xc1f4, 0xdbce, 0xeeb3, 0xd0f3, 0xae80, 0xae81, 0xae82, /*0x58-0x5f*/
- 0xae83, 0xae84, 0xae85, 0xae86, 0xae87, 0xc2d4, 0xc6e8, 0xae88, /*0x60-0x67*/
- 0xae89, 0xae8a, 0xb7ac, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, /*0x68-0x6f*/
- 0xae90, 0xae91, 0xeeb4, 0xae92, 0xb3eb, 0xae93, 0xae94, 0xae95, /*0x70-0x77*/
- 0xbbfb, 0xeeb5, 0xae96, 0xae97, 0xae98, 0xae99, 0xae9a, 0xe7dc, /*0x78-0x7f*/
- 0xae9b, 0xae9c, 0xae9d, 0xeeb6, 0xae9e, 0xae9f, 0xbdae, 0xaea0, /*0x80-0x87*/
- 0xaf40, 0xaf41, 0xaf42, 0xf1e2, 0xaf43, 0xaf44, 0xaf45, 0xcae8, /*0x88-0x8f*/
- 0xaf46, 0xd2c9, 0xf0da, 0xaf47, 0xf0db, 0xaf48, 0xf0dc, 0xc1c6, /*0x90-0x97*/
- 0xaf49, 0xb8ed, 0xbece, 0xaf4a, 0xaf4b, 0xf0de, 0xaf4c, 0xc5b1, /*0x98-0x9f*/
- 0xf0dd, 0xd1f1, 0xaf4d, 0xf0e0, 0xb0cc, 0xbdea, 0xaf4e, 0xaf4f, /*0xa0-0xa7*/
- 0xaf50, 0xaf51, 0xaf52, 0xd2df, 0xf0df, 0xaf53, 0xb4af, 0xb7e8, /*0xa8-0xaf*/
- 0xf0e6, 0xf0e5, 0xc6a3, 0xf0e1, 0xf0e2, 0xb4c3, 0xaf54, 0xaf55, /*0xb0-0xb7*/
- 0xf0e3, 0xd5ee, 0xaf56, 0xaf57, 0xccdb, 0xbed2, 0xbcb2, 0xaf58, /*0xb8-0xbf*/
- 0xaf59, 0xaf5a, 0xf0e8, 0xf0e7, 0xf0e4, 0xb2a1, 0xaf5b, 0xd6a2, /*0xc0-0xc7*/
- 0xd3b8, 0xbeb7, 0xc8ac, 0xaf5c, 0xaf5d, 0xf0ea, 0xaf5e, 0xaf5f, /*0xc8-0xcf*/
- 0xaf60, 0xaf61, 0xd1f7, 0xaf62, 0xd6cc, 0xbadb, 0xf0e9, 0xaf63, /*0xd0-0xd7*/
- 0xb6bb, 0xaf64, 0xaf65, 0xcdb4, 0xaf66, 0xaf67, 0xc6a6, 0xaf68, /*0xd8-0xdf*/
- 0xaf69, 0xaf6a, 0xc1a1, 0xf0eb, 0xf0ee, 0xaf6b, 0xf0ed, 0xf0f0, /*0xe0-0xe7*/
- 0xf0ec, 0xaf6c, 0xbbbe, 0xf0ef, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, /*0xe8-0xef*/
- 0xccb5, 0xf0f2, 0xaf71, 0xaf72, 0xb3d5, 0xaf73, 0xaf74, 0xaf75, /*0xf0-0xf7*/
- 0xaf76, 0xb1d4, 0xaf77, 0xaf78, 0xf0f3, 0xaf79, 0xaf7a, 0xf0f4, /*0xf8-0xff*/
- /* 0x7600 */
- 0xf0f6, 0xb4e1, 0xaf7b, 0xf0f1, 0xaf7c, 0xf0f7, 0xaf7d, 0xaf7e, /*0x00-0x07*/
- 0xaf80, 0xaf81, 0xf0fa, 0xaf82, 0xf0f8, 0xaf83, 0xaf84, 0xaf85, /*0x08-0x0f*/
- 0xf0f5, 0xaf86, 0xaf87, 0xaf88, 0xaf89, 0xf0fd, 0xaf8a, 0xf0f9, /*0x10-0x17*/
- 0xf0fc, 0xf0fe, 0xaf8b, 0xf1a1, 0xaf8c, 0xaf8d, 0xaf8e, 0xcec1, /*0x18-0x1f*/
- 0xf1a4, 0xaf8f, 0xf1a3, 0xaf90, 0xc1f6, 0xf0fb, 0xcadd, 0xaf91, /*0x20-0x27*/
- 0xaf92, 0xb4f1, 0xb1f1, 0xccb1, 0xaf93, 0xf1a6, 0xaf94, 0xaf95, /*0x28-0x2f*/
- 0xf1a7, 0xaf96, 0xaf97, 0xf1ac, 0xd5ce, 0xf1a9, 0xaf98, 0xaf99, /*0x30-0x37*/
- 0xc8b3, 0xaf9a, 0xaf9b, 0xaf9c, 0xf1a2, 0xaf9d, 0xf1ab, 0xf1a8, /*0x38-0x3f*/
- 0xf1a5, 0xaf9e, 0xaf9f, 0xf1aa, 0xafa0, 0xb040, 0xb041, 0xb042, /*0x40-0x47*/
- 0xb043, 0xb044, 0xb045, 0xb046, 0xb0a9, 0xf1ad, 0xb047, 0xb048, /*0x48-0x4f*/
- 0xb049, 0xb04a, 0xb04b, 0xb04c, 0xf1af, 0xb04d, 0xf1b1, 0xb04e, /*0x50-0x57*/
- 0xb04f, 0xb050, 0xb051, 0xb052, 0xf1b0, 0xb053, 0xf1ae, 0xb054, /*0x58-0x5f*/
- 0xb055, 0xb056, 0xb057, 0xd1a2, 0xb058, 0xb059, 0xb05a, 0xb05b, /*0x60-0x67*/
- 0xb05c, 0xb05d, 0xb05e, 0xf1b2, 0xb05f, 0xb060, 0xb061, 0xf1b3, /*0x68-0x6f*/
- 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, 0xb069, /*0x70-0x77*/
- 0xb9ef, 0xb06a, 0xb06b, 0xb5c7, 0xb06c, 0xb0d7, 0xb0d9, 0xb06d, /*0x78-0x7f*/
- 0xb06e, 0xb06f, 0xd4ed, 0xb070, 0xb5c4, 0xb071, 0xbdd4, 0xbbca, /*0x80-0x87*/
- 0xf0a7, 0xb072, 0xb073, 0xb8de, 0xb074, 0xb075, 0xf0a8, 0xb076, /*0x88-0x8f*/
- 0xb077, 0xb0a8, 0xb078, 0xf0a9, 0xb079, 0xb07a, 0xcdee, 0xb07b, /*0x90-0x97*/
- 0xb07c, 0xf0aa, 0xb07d, 0xb07e, 0xb080, 0xb081, 0xb082, 0xb083, /*0x98-0x9f*/
- 0xb084, 0xb085, 0xb086, 0xb087, 0xf0ab, 0xb088, 0xb089, 0xb08a, /*0xa0-0xa7*/
- 0xb08b, 0xb08c, 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xc6a4, 0xb091, /*0xa8-0xaf*/
- 0xb092, 0xd6e5, 0xf1e4, 0xb093, 0xf1e5, 0xb094, 0xb095, 0xb096, /*0xb0-0xb7*/
- 0xb097, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xc3f3, /*0xb8-0xbf*/
- 0xb09e, 0xb09f, 0xd3db, 0xb0a0, 0xb140, 0xd6d1, 0xc5e8, 0xb141, /*0xc0-0xc7*/
- 0xd3af, 0xb142, 0xd2e6, 0xb143, 0xb144, 0xeec1, 0xb0bb, 0xd5b5, /*0xc8-0xcf*/
- 0xd1ce, 0xbce0, 0xbad0, 0xb145, 0xbff8, 0xb146, 0xb8c7, 0xb5c1, /*0xd0-0xd7*/
- 0xc5cc, 0xb147, 0xb148, 0xcaa2, 0xb149, 0xb14a, 0xb14b, 0xc3cb, /*0xd8-0xdf*/
- 0xb14c, 0xb14d, 0xb14e, 0xb14f, 0xb150, 0xeec2, 0xb151, 0xb152, /*0xe0-0xe7*/
- 0xb153, 0xb154, 0xb155, 0xb156, 0xb157, 0xb158, 0xc4bf, 0xb6a2, /*0xe8-0xef*/
- 0xb159, 0xedec, 0xc3a4, 0xb15a, 0xd6b1, 0xb15b, 0xb15c, 0xb15d, /*0xf0-0xf7*/
- 0xcfe0, 0xedef, 0xb15e, 0xb15f, 0xc5ce, 0xb160, 0xb6dc, 0xb161, /*0xf8-0xff*/
- /* 0x7700 */
- 0xb162, 0xcaa1, 0xb163, 0xb164, 0xeded, 0xb165, 0xb166, 0xedf0, /*0x00-0x07*/
- 0xedf1, 0xc3bc, 0xb167, 0xbfb4, 0xb168, 0xedee, 0xb169, 0xb16a, /*0x08-0x0f*/
- 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, 0xb170, 0xb171, 0xb172, /*0x10-0x17*/
- 0xb173, 0xedf4, 0xedf2, 0xb174, 0xb175, 0xb176, 0xb177, 0xd5e6, /*0x18-0x1f*/
- 0xc3df, 0xb178, 0xedf3, 0xb179, 0xb17a, 0xb17b, 0xedf6, 0xb17c, /*0x20-0x27*/
- 0xd5a3, 0xd1a3, 0xb17d, 0xb17e, 0xb180, 0xedf5, 0xb181, 0xc3d0, /*0x28-0x2f*/
- 0xb182, 0xb183, 0xb184, 0xb185, 0xb186, 0xedf7, 0xbff4, 0xbeec, /*0x30-0x37*/
- 0xedf8, 0xb187, 0xccf7, 0xb188, 0xd1db, 0xb189, 0xb18a, 0xb18b, /*0x38-0x3f*/
- 0xd7c5, 0xd5f6, 0xb18c, 0xedfc, 0xb18d, 0xb18e, 0xb18f, 0xedfb, /*0x40-0x47*/
- 0xb190, 0xb191, 0xb192, 0xb193, 0xb194, 0xb195, 0xb196, 0xb197, /*0x48-0x4f*/
- 0xedf9, 0xedfa, 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d, /*0x50-0x57*/
- 0xb19e, 0xb19f, 0xedfd, 0xbea6, 0xb1a0, 0xb240, 0xb241, 0xb242, /*0x58-0x5f*/
- 0xb243, 0xcbaf, 0xeea1, 0xb6bd, 0xb244, 0xeea2, 0xc4c0, 0xb245, /*0x60-0x67*/
- 0xedfe, 0xb246, 0xb247, 0xbdde, 0xb2c7, 0xb248, 0xb249, 0xb24a, /*0x68-0x6f*/
- 0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252, /*0x70-0x77*/
- 0xb253, 0xb6c3, 0xb254, 0xb255, 0xb256, 0xeea5, 0xd8ba, 0xeea3, /*0x78-0x7f*/
- 0xeea6, 0xb257, 0xb258, 0xb259, 0xc3e9, 0xb3f2, 0xb25a, 0xb25b, /*0x80-0x87*/
- 0xb25c, 0xb25d, 0xb25e, 0xb25f, 0xeea7, 0xeea4, 0xcfb9, 0xb260, /*0x88-0x8f*/
- 0xb261, 0xeea8, 0xc2f7, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, /*0x90-0x97*/
- 0xb267, 0xb268, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xeea9, /*0x98-0x9f*/
- 0xeeaa, 0xb26e, 0xdeab, 0xb26f, 0xb270, 0xc6b3, 0xb271, 0xc7c6, /*0xa0-0xa7*/
- 0xb272, 0xd6f5, 0xb5c9, 0xb273, 0xcbb2, 0xb274, 0xb275, 0xb276, /*0xa8-0xaf*/
- 0xeeab, 0xb277, 0xb278, 0xcdab, 0xb279, 0xeeac, 0xb27a, 0xb27b, /*0xb0-0xb7*/
- 0xb27c, 0xb27d, 0xb27e, 0xd5b0, 0xb280, 0xeead, 0xb281, 0xf6c4, /*0xb8-0xbf*/
- 0xb282, 0xb283, 0xb284, 0xb285, 0xb286, 0xb287, 0xb288, 0xb289, /*0xc0-0xc7*/
- 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xdbc7, 0xb28f, 0xb290, /*0xc8-0xcf*/
- 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296, 0xb297, 0xb4a3, /*0xd0-0xd7*/
- 0xb298, 0xb299, 0xb29a, 0xc3ac, 0xf1e6, 0xb29b, 0xb29c, 0xb29d, /*0xd8-0xdf*/
- 0xb29e, 0xb29f, 0xcab8, 0xd2d3, 0xb2a0, 0xd6aa, 0xb340, 0xeff2, /*0xe0-0xe7*/
- 0xb341, 0xbed8, 0xb342, 0xbdc3, 0xeff3, 0xb6cc, 0xb0ab, 0xb343, /*0xe8-0xef*/
- 0xb344, 0xb345, 0xb346, 0xcaaf, 0xb347, 0xb348, 0xedb6, 0xb349, /*0xf0-0xf7*/
- 0xedb7, 0xb34a, 0xb34b, 0xb34c, 0xb34d, 0xcef9, 0xb7af, 0xbff3, /*0xf8-0xff*/
- /* 0x7800 */
- 0xedb8, 0xc2eb, 0xc9b0, 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, /*0x00-0x07*/
- 0xb353, 0xedb9, 0xb354, 0xb355, 0xc6f6, 0xbfb3, 0xb356, 0xb357, /*0x08-0x0f*/
- 0xb358, 0xedbc, 0xc5f8, 0xb359, 0xd1d0, 0xb35a, 0xd7a9, 0xedba, /*0x10-0x17*/
- 0xedbb, 0xb35b, 0xd1e2, 0xb35c, 0xedbf, 0xedc0, 0xb35d, 0xedc4, /*0x18-0x1f*/
- 0xb35e, 0xb35f, 0xb360, 0xedc8, 0xb361, 0xedc6, 0xedce, 0xd5e8, /*0x20-0x27*/
- 0xb362, 0xedc9, 0xb363, 0xb364, 0xedc7, 0xedbe, 0xb365, 0xb366, /*0x28-0x2f*/
- 0xc5e9, 0xb367, 0xb368, 0xb369, 0xc6c6, 0xb36a, 0xb36b, 0xc9e9, /*0x30-0x37*/
- 0xd4d2, 0xedc1, 0xedc2, 0xedc3, 0xedc5, 0xb36c, 0xc0f9, 0xb36d, /*0x38-0x3f*/
- 0xb4a1, 0xb36e, 0xb36f, 0xb370, 0xb371, 0xb9e8, 0xb372, 0xedd0, /*0x40-0x47*/
- 0xb373, 0xb374, 0xb375, 0xb376, 0xedd1, 0xb377, 0xedca, 0xb378, /*0x48-0x4f*/
- 0xedcf, 0xb379, 0xcef8, 0xb37a, 0xb37b, 0xcbb6, 0xedcc, 0xedcd, /*0x50-0x57*/
- 0xb37c, 0xb37d, 0xb37e, 0xb380, 0xb381, 0xcff5, 0xb382, 0xb383, /*0x58-0x5f*/
- 0xb384, 0xb385, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, /*0x60-0x67*/
- 0xb38c, 0xb38d, 0xedd2, 0xc1f2, 0xd3b2, 0xedcb, 0xc8b7, 0xb38e, /*0x68-0x6f*/
- 0xb38f, 0xb390, 0xb391, 0xb392, 0xb393, 0xb394, 0xb395, 0xbcef, /*0x70-0x77*/
- 0xb396, 0xb397, 0xb398, 0xb399, 0xc5f0, 0xb39a, 0xb39b, 0xb39c, /*0x78-0x7f*/
- 0xb39d, 0xb39e, 0xb39f, 0xb3a0, 0xb440, 0xb441, 0xb442, 0xedd6, /*0x80-0x87*/
- 0xb443, 0xb5ef, 0xb444, 0xb445, 0xc2b5, 0xb0ad, 0xcbe9, 0xb446, /*0x88-0x8f*/
- 0xb447, 0xb1ae, 0xb448, 0xedd4, 0xb449, 0xb44a, 0xb44b, 0xcdeb, /*0x90-0x97*/
- 0xb5e2, 0xb44c, 0xedd5, 0xedd3, 0xedd7, 0xb44d, 0xb44e, 0xb5fa, /*0x98-0x9f*/
- 0xb44f, 0xedd8, 0xb450, 0xedd9, 0xb451, 0xeddc, 0xb452, 0xb1cc, /*0xa0-0xa7*/
- 0xb453, 0xb454, 0xb455, 0xb456, 0xb457, 0xb458, 0xb459, 0xb45a, /*0xa8-0xaf*/
- 0xc5f6, 0xbcee, 0xedda, 0xccbc, 0xb2ea, 0xb45b, 0xb45c, 0xb45d, /*0xb0-0xb7*/
- 0xb45e, 0xeddb, 0xb45f, 0xb460, 0xb461, 0xb462, 0xc4eb, 0xb463, /*0xb8-0xbf*/
- 0xb464, 0xb4c5, 0xb465, 0xb466, 0xb467, 0xb0f5, 0xb468, 0xb469, /*0xc0-0xc7*/
- 0xb46a, 0xeddf, 0xc0da, 0xb4e8, 0xb46b, 0xb46c, 0xb46d, 0xb46e, /*0xc8-0xcf*/
- 0xc5cd, 0xb46f, 0xb470, 0xb471, 0xeddd, 0xbfc4, 0xb472, 0xb473, /*0xd0-0xd7*/
- 0xb474, 0xedde, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, /*0xd8-0xdf*/
- 0xb47b, 0xb47c, 0xb47d, 0xb47e, 0xb480, 0xb481, 0xb482, 0xb483, /*0xe0-0xe7*/
- 0xc4a5, 0xb484, 0xb485, 0xb486, 0xede0, 0xb487, 0xb488, 0xb489, /*0xe8-0xef*/
- 0xb48a, 0xb48b, 0xede1, 0xb48c, 0xede3, 0xb48d, 0xb48e, 0xc1d7, /*0xf0-0xf7*/
- 0xb48f, 0xb490, 0xbbc7, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, /*0xf8-0xff*/
- /* 0x7900 */
- 0xb496, 0xbdb8, 0xb497, 0xb498, 0xb499, 0xede2, 0xb49a, 0xb49b, /*0x00-0x07*/
- 0xb49c, 0xb49d, 0xb49e, 0xb49f, 0xb4a0, 0xb540, 0xb541, 0xb542, /*0x08-0x0f*/
- 0xb543, 0xb544, 0xb545, 0xede4, 0xb546, 0xb547, 0xb548, 0xb549, /*0x10-0x17*/
- 0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xede6, 0xb550, /*0x18-0x1f*/
- 0xb551, 0xb552, 0xb553, 0xb554, 0xede5, 0xb555, 0xb556, 0xb557, /*0x20-0x27*/
- 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb55e, 0xb55f, /*0x28-0x2f*/
- 0xb560, 0xb561, 0xb562, 0xb563, 0xede7, 0xb564, 0xb565, 0xb566, /*0x30-0x37*/
- 0xb567, 0xb568, 0xcabe, 0xecea, 0xc0f1, 0xb569, 0xc9e7, 0xb56a, /*0x38-0x3f*/
- 0xeceb, 0xc6ee, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xecec, 0xb56f, /*0x40-0x47*/
- 0xc6ed, 0xeced, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, /*0x48-0x4f*/
- 0xb576, 0xb577, 0xb578, 0xecf0, 0xb579, 0xb57a, 0xd7e6, 0xecf3, /*0x50-0x57*/
- 0xb57b, 0xb57c, 0xecf1, 0xecee, 0xecef, 0xd7a3, 0xc9f1, 0xcbee, /*0x58-0x5f*/
- 0xecf4, 0xb57d, 0xecf2, 0xb57e, 0xb580, 0xcfe9, 0xb581, 0xecf6, /*0x60-0x67*/
- 0xc6b1, 0xb582, 0xb583, 0xb584, 0xb585, 0xbcc0, 0xb586, 0xecf5, /*0x68-0x6f*/
- 0xb587, 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb5bb, /*0x70-0x77*/
- 0xbbf6, 0xb58e, 0xecf7, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593, /*0x78-0x7f*/
- 0xd9f7, 0xbdfb, 0xb594, 0xb595, 0xc2bb, 0xecf8, 0xb596, 0xb597, /*0x80-0x87*/
- 0xb598, 0xb599, 0xecf9, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb8a3, /*0x88-0x8f*/
- 0xb59e, 0xb59f, 0xb5a0, 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, /*0x90-0x97*/
- 0xb645, 0xb646, 0xecfa, 0xb647, 0xb648, 0xb649, 0xb64a, 0xb64b, /*0x98-0x9f*/
- 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652, 0xecfb, /*0xa0-0xa7*/
- 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659, 0xb65a, /*0xa8-0xaf*/
- 0xb65b, 0xb65c, 0xb65d, 0xecfc, 0xb65e, 0xb65f, 0xb660, 0xb661, /*0xb0-0xb7*/
- 0xb662, 0xd3ed, 0xd8ae, 0xc0eb, 0xb663, 0xc7dd, 0xbacc, 0xb664, /*0xb8-0xbf*/
- 0xd0e3, 0xcbbd, 0xb665, 0xcdba, 0xb666, 0xb667, 0xb8d1, 0xb668, /*0xc0-0xc7*/
- 0xb669, 0xb1fc, 0xb66a, 0xc7ef, 0xb66b, 0xd6d6, 0xb66c, 0xb66d, /*0xc8-0xcf*/
- 0xb66e, 0xbfc6, 0xc3eb, 0xb66f, 0xb670, 0xeff5, 0xb671, 0xb672, /*0xd0-0xd7*/
- 0xc3d8, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, 0xb678, 0xd7e2, /*0xd8-0xdf*/
- 0xb679, 0xb67a, 0xb67b, 0xeff7, 0xb3d3, 0xb67c, 0xc7d8, 0xd1ed, /*0xe0-0xe7*/
- 0xb67d, 0xd6c8, 0xb67e, 0xeff8, 0xb680, 0xeff6, 0xb681, 0xbbfd, /*0xe8-0xef*/
- 0xb3c6, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688, /*0xf0-0xf7*/
- 0xbdd5, 0xb689, 0xb68a, 0xd2c6, 0xb68b, 0xbbe0, 0xb68c, 0xb68d, /*0xf8-0xff*/
- /* 0x7a00 */
- 0xcfa1, 0xb68e, 0xeffc, 0xeffb, 0xb68f, 0xb690, 0xeff9, 0xb691, /*0x00-0x07*/
- 0xb692, 0xb693, 0xb694, 0xb3cc, 0xb695, 0xc9d4, 0xcbb0, 0xb696, /*0x08-0x0f*/
- 0xb697, 0xb698, 0xb699, 0xb69a, 0xeffe, 0xb69b, 0xb69c, 0xb0de, /*0x10-0x17*/
- 0xb69d, 0xb69e, 0xd6c9, 0xb69f, 0xb6a0, 0xb740, 0xeffd, 0xb741, /*0x18-0x1f*/
- 0xb3ed, 0xb742, 0xb743, 0xf6d5, 0xb744, 0xb745, 0xb746, 0xb747, /*0x20-0x27*/
- 0xb748, 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, /*0x28-0x2f*/
- 0xb750, 0xb751, 0xb752, 0xcec8, 0xb753, 0xb754, 0xb755, 0xf0a2, /*0x30-0x37*/
- 0xb756, 0xf0a1, 0xb757, 0xb5be, 0xbcda, 0xbbfc, 0xb758, 0xb8e5, /*0x38-0x3f*/
- 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xc4c2, 0xb75f, /*0x40-0x47*/
- 0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766, 0xb767, /*0x48-0x4f*/
- 0xb768, 0xf0a3, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xcbeb, /*0x50-0x57*/
- 0xb76e, 0xb76f, 0xb770, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775, /*0x58-0x5f*/
- 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d, /*0x60-0x67*/
- 0xb77e, 0xb780, 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, /*0x68-0x6f*/
- 0xf0a6, 0xb787, 0xb788, 0xb789, 0xd1a8, 0xb78a, 0xbebf, 0xc7ee, /*0x70-0x77*/
- 0xf1b6, 0xf1b7, 0xbfd5, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb4a9, /*0x78-0x7f*/
- 0xf1b8, 0xcdbb, 0xb78f, 0xc7d4, 0xd5ad, 0xb790, 0xf1b9, 0xb791, /*0x80-0x87*/
- 0xf1ba, 0xb792, 0xb793, 0xb794, 0xb795, 0xc7cf, 0xb796, 0xb797, /*0x88-0x8f*/
- 0xb798, 0xd2a4, 0xd6cf, 0xb799, 0xb79a, 0xf1bb, 0xbdd1, 0xb4b0, /*0x90-0x97*/
- 0xbebd, 0xb79b, 0xb79c, 0xb79d, 0xb4dc, 0xced1, 0xb79e, 0xbfdf, /*0x98-0x9f*/
- 0xf1bd, 0xb79f, 0xb7a0, 0xb840, 0xb841, 0xbffa, 0xf1bc, 0xb842, /*0xa0-0xa7*/
- 0xf1bf, 0xb843, 0xb844, 0xb845, 0xf1be, 0xf1c0, 0xb846, 0xb847, /*0xa8-0xaf*/
- 0xb848, 0xb849, 0xb84a, 0xf1c1, 0xb84b, 0xb84c, 0xb84d, 0xb84e, /*0xb0-0xb7*/
- 0xb84f, 0xb850, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, 0xc1fe, /*0xb8-0xbf*/
- 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a, 0xb85b, 0xb85c, 0xb85d, /*0xc0-0xc7*/
- 0xb85e, 0xb85f, 0xb860, 0xc1a2, 0xb861, 0xb862, 0xb863, 0xb864, /*0xc8-0xcf*/
- 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, 0xcafa, 0xb86b, /*0xd0-0xd7*/
- 0xb86c, 0xd5be, 0xb86d, 0xb86e, 0xb86f, 0xb870, 0xbeba, 0xbeb9, /*0xd8-0xdf*/
- 0xd5c2, 0xb871, 0xb872, 0xbfa2, 0xb873, 0xcdaf, 0xf1b5, 0xb874, /*0xe0-0xe7*/
- 0xb875, 0xb876, 0xb877, 0xb878, 0xb879, 0xbddf, 0xb87a, 0xb6cb, /*0xe8-0xef*/
- 0xb87b, 0xb87c, 0xb87d, 0xb87e, 0xb880, 0xb881, 0xb882, 0xb883, /*0xf0-0xf7*/
- 0xb884, 0xd6f1, 0xf3c3, 0xb885, 0xb886, 0xf3c4, 0xb887, 0xb8cd, /*0xf8-0xff*/
- /* 0x7b00 */
- 0xb888, 0xb889, 0xb88a, 0xf3c6, 0xf3c7, 0xb88b, 0xb0ca, 0xb88c, /*0x00-0x07*/
- 0xf3c5, 0xb88d, 0xf3c9, 0xcbf1, 0xb88e, 0xb88f, 0xb890, 0xf3cb, /*0x08-0x0f*/
- 0xb891, 0xd0a6, 0xb892, 0xb893, 0xb1ca, 0xf3c8, 0xb894, 0xb895, /*0x10-0x17*/
- 0xb896, 0xf3cf, 0xb897, 0xb5d1, 0xb898, 0xb899, 0xf3d7, 0xb89a, /*0x18-0x1f*/
- 0xf3d2, 0xb89b, 0xb89c, 0xb89d, 0xf3d4, 0xf3d3, 0xb7fb, 0xb89e, /*0x20-0x27*/
- 0xb1bf, 0xb89f, 0xf3ce, 0xf3ca, 0xb5da, 0xb8a0, 0xf3d0, 0xb940, /*0x28-0x2f*/
- 0xb941, 0xf3d1, 0xb942, 0xf3d5, 0xb943, 0xb944, 0xb945, 0xb946, /*0x30-0x37*/
- 0xf3cd, 0xb947, 0xbce3, 0xb948, 0xc1fd, 0xb949, 0xf3d6, 0xb94a, /*0x38-0x3f*/
- 0xb94b, 0xb94c, 0xb94d, 0xb94e, 0xb94f, 0xf3da, 0xb950, 0xf3cc, /*0x40-0x47*/
- 0xb951, 0xb5c8, 0xb952, 0xbdee, 0xf3dc, 0xb953, 0xb954, 0xb7a4, /*0x48-0x4f*/
- 0xbff0, 0xd6fe, 0xcdb2, 0xb955, 0xb4f0, 0xb956, 0xb2df, 0xb957, /*0x50-0x57*/
- 0xf3d8, 0xb958, 0xf3d9, 0xc9b8, 0xb959, 0xf3dd, 0xb95a, 0xb95b, /*0x58-0x5f*/
- 0xf3de, 0xb95c, 0xf3e1, 0xb95d, 0xb95e, 0xb95f, 0xb960, 0xb961, /*0x60-0x67*/
- 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xf3df, 0xb968, /*0x68-0x6f*/
- 0xb969, 0xf3e3, 0xf3e2, 0xb96a, 0xb96b, 0xf3db, 0xb96c, 0xbfea, /*0x70-0x77*/
- 0xb96d, 0xb3ef, 0xb96e, 0xf3e0, 0xb96f, 0xb970, 0xc7a9, 0xb971, /*0x78-0x7f*/
- 0xbcf2, 0xb972, 0xb973, 0xb974, 0xb975, 0xf3eb, 0xb976, 0xb977, /*0x80-0x87*/
- 0xb978, 0xb979, 0xb97a, 0xb97b, 0xb97c, 0xb9bf, 0xb97d, 0xb97e, /*0x88-0x8f*/
- 0xf3e4, 0xb980, 0xb981, 0xb982, 0xb2ad, 0xbbfe, 0xb983, 0xcbe3, /*0x90-0x97*/
- 0xb984, 0xb985, 0xb986, 0xb987, 0xf3ed, 0xf3e9, 0xb988, 0xb989, /*0x98-0x9f*/
- 0xb98a, 0xb9dc, 0xf3ee, 0xb98b, 0xb98c, 0xb98d, 0xf3e5, 0xf3e6, /*0xa0-0xa7*/
- 0xf3ea, 0xc2e1, 0xf3ec, 0xf3ef, 0xf3e8, 0xbcfd, 0xb98e, 0xb98f, /*0xa8-0xaf*/
- 0xb990, 0xcfe4, 0xb991, 0xb992, 0xf3f0, 0xb993, 0xb994, 0xb995, /*0xb0-0xb7*/
- 0xf3e7, 0xb996, 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, /*0xb8-0xbf*/
- 0xb99d, 0xf3f2, 0xb99e, 0xb99f, 0xb9a0, 0xba40, 0xd7ad, 0xc6aa, /*0xc0-0xc7*/
- 0xba41, 0xba42, 0xba43, 0xba44, 0xf3f3, 0xba45, 0xba46, 0xba47, /*0xc8-0xcf*/
- 0xba48, 0xf3f1, 0xba49, 0xc2a8, 0xba4a, 0xba4b, 0xba4c, 0xba4d, /*0xd0-0xd7*/
- 0xba4e, 0xb8dd, 0xf3f5, 0xba4f, 0xba50, 0xf3f4, 0xba51, 0xba52, /*0xd8-0xdf*/
- 0xba53, 0xb4db, 0xba54, 0xba55, 0xba56, 0xf3f6, 0xf3f7, 0xba57, /*0xe0-0xe7*/
- 0xba58, 0xba59, 0xf3f8, 0xba5a, 0xba5b, 0xba5c, 0xc0ba, 0xba5d, /*0xe8-0xef*/
- 0xba5e, 0xc0e9, 0xba5f, 0xba60, 0xba61, 0xba62, 0xba63, 0xc5f1, /*0xf0-0xf7*/
- 0xba64, 0xba65, 0xba66, 0xba67, 0xf3fb, 0xba68, 0xf3fa, 0xba69, /*0xf8-0xff*/
- /* 0x7c00 */
- 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba70, 0xb4d8, /*0x00-0x07*/
- 0xba71, 0xba72, 0xba73, 0xf3fe, 0xf3f9, 0xba74, 0xba75, 0xf3fc, /*0x08-0x0f*/
- 0xba76, 0xba77, 0xba78, 0xba79, 0xba7a, 0xba7b, 0xf3fd, 0xba7c, /*0x10-0x17*/
- 0xba7d, 0xba7e, 0xba80, 0xba81, 0xba82, 0xba83, 0xba84, 0xf4a1, /*0x18-0x1f*/
- 0xba85, 0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xf4a3, 0xbbc9, /*0x20-0x27*/
- 0xba8b, 0xba8c, 0xf4a2, 0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91, /*0x28-0x2f*/
- 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, /*0x30-0x37*/
- 0xf4a4, 0xba9a, 0xba9b, 0xba9c, 0xba9d, 0xba9e, 0xba9f, 0xb2be, /*0x38-0x3f*/
- 0xf4a6, 0xf4a5, 0xbaa0, 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb44, /*0x40-0x47*/
- 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49, 0xbcae, 0xbb4a, 0xbb4b, /*0x48-0x4f*/
- 0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f, 0xbb50, 0xbb51, 0xbb52, 0xbb53, /*0x50-0x57*/
- 0xbb54, 0xbb55, 0xbb56, 0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, /*0x58-0x5f*/
- 0xbb5c, 0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xbb61, 0xbb62, 0xbb63, /*0x60-0x67*/
- 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, /*0x68-0x6f*/
- 0xbb6c, 0xbb6d, 0xbb6e, 0xc3d7, 0xd9e1, 0xbb6f, 0xbb70, 0xbb71, /*0x70-0x77*/
- 0xbb72, 0xbb73, 0xbb74, 0xc0e0, 0xf4cc, 0xd7d1, 0xbb75, 0xbb76, /*0x78-0x7f*/
- 0xbb77, 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb7e, /*0x80-0x87*/
- 0xbb80, 0xb7db, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, /*0x88-0x8f*/
- 0xbb87, 0xf4ce, 0xc1a3, 0xbb88, 0xbb89, 0xc6c9, 0xbb8a, 0xb4d6, /*0x90-0x97*/
- 0xd5b3, 0xbb8b, 0xbb8c, 0xbb8d, 0xf4d0, 0xf4cf, 0xf4d1, 0xcbda, /*0x98-0x9f*/
- 0xbb8e, 0xbb8f, 0xf4d2, 0xbb90, 0xd4c1, 0xd6e0, 0xbb91, 0xbb92, /*0xa0-0xa7*/
- 0xbb93, 0xbb94, 0xb7e0, 0xbb95, 0xbb96, 0xbb97, 0xc1b8, 0xbb98, /*0xa8-0xaf*/
- 0xbb99, 0xc1bb, 0xf4d3, 0xbeac, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, /*0xb0-0xb7*/
- 0xbb9e, 0xb4e2, 0xbb9f, 0xbba0, 0xf4d4, 0xf4d5, 0xbeab, 0xbc40, /*0xb8-0xbf*/
- 0xbc41, 0xf4d6, 0xbc42, 0xbc43, 0xbc44, 0xf4db, 0xbc45, 0xf4d7, /*0xc0-0xc7*/
- 0xf4da, 0xbc46, 0xbafd, 0xbc47, 0xf4d8, 0xf4d9, 0xbc48, 0xbc49, /*0xc8-0xcf*/
- 0xbc4a, 0xbc4b, 0xbc4c, 0xbc4d, 0xbc4e, 0xb8e2, 0xccc7, 0xf4dc, /*0xd0-0xd7*/
- 0xbc4f, 0xb2da, 0xbc50, 0xbc51, 0xc3d3, 0xbc52, 0xbc53, 0xd4e3, /*0xd8-0xdf*/
- 0xbfb7, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58, 0xbc59, 0xbc5a, /*0xe0-0xe7*/
- 0xf4dd, 0xbc5b, 0xbc5c, 0xbc5d, 0xbc5e, 0xbc5f, 0xbc60, 0xc5b4, /*0xe8-0xef*/
- 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0xbc68, /*0xf0-0xf7*/
- 0xf4e9, 0xbc69, 0xbc6a, 0xcfb5, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, /*0xf8-0xff*/
- /* 0x7d00 */
- 0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, /*0x00-0x07*/
- 0xbc77, 0xbc78, 0xcec9, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, /*0x08-0x0f*/
- 0xbc7e, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86, /*0x10-0x17*/
- 0xbc87, 0xbc88, 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, /*0x18-0x1f*/
- 0xcbd8, 0xbc8f, 0xcbf7, 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbdf4, /*0x20-0x27*/
- 0xbc94, 0xbc95, 0xbc96, 0xd7cf, 0xbc97, 0xbc98, 0xbc99, 0xc0db, /*0x28-0x2f*/
- 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0xbca0, 0xbd40, /*0x30-0x37*/
- 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd48, /*0x38-0x3f*/
- 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, 0xbd50, /*0x40-0x47*/
- 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd58, /*0x48-0x4f*/
- 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f, 0xbd60, /*0x50-0x57*/
- 0xbd61, 0xbd62, 0xbd63, 0xbd64, 0xbd65, 0xbd66, 0xbd67, 0xbd68, /*0x58-0x5f*/
- 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, /*0x60-0x67*/
- 0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xd0f5, 0xbd77, /*0x68-0x6f*/
- 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xf4ea, /*0x70-0x77*/
- 0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, /*0x78-0x7f*/
- 0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, /*0x80-0x87*/
- 0xbd90, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, /*0x88-0x8f*/
- 0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f, /*0x90-0x97*/
- 0xbda0, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, /*0x98-0x9f*/
- 0xbe47, 0xbe48, 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xf4eb, 0xbe4d, /*0xa0-0xa7*/
- 0xbe4e, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xf4ec, 0xbe54, /*0xa8-0xaf*/
- 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59, 0xbe5a, 0xbe5b, 0xbe5c, /*0xb0-0xb7*/
- 0xbe5d, 0xbe5e, 0xbe5f, 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, /*0xb8-0xbf*/
- 0xbe65, 0xbe66, 0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, /*0xc0-0xc7*/
- 0xbe6d, 0xbe6e, 0xbe6f, 0xbe70, 0xbe71, 0xbe72, 0xbe73, 0xbe74, /*0xc8-0xcf*/
- 0xbe75, 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c, /*0xd0-0xd7*/
- 0xbe7d, 0xbe7e, 0xbe80, 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, /*0xd8-0xdf*/
- 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d, /*0xe0-0xe7*/
- 0xbe8e, 0xbe8f, 0xbe90, 0xbe91, 0xbe92, 0xbe93, 0xbe94, 0xbe95, /*0xe8-0xef*/
- 0xbe96, 0xbe97, 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, /*0xf0-0xf7*/
- 0xbe9e, 0xbe9f, 0xbea0, 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44, /*0xf8-0xff*/
- /* 0x7e00 */
- 0xbf45, 0xbf46, 0xbf47, 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, /*0x00-0x07*/
- 0xbf4d, 0xbf4e, 0xbf4f, 0xbf50, 0xbf51, 0xbf52, 0xbf53, 0xbf54, /*0x08-0x0f*/
- 0xbf55, 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, /*0x10-0x17*/
- 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63, 0xbf64, /*0x18-0x1f*/
- 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, /*0x20-0x27*/
- 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72, 0xbf73, 0xbf74, /*0x28-0x2f*/
- 0xbf75, 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, /*0x30-0x37*/
- 0xbf7d, 0xbf7e, 0xbf80, 0xf7e3, 0xbf81, 0xbf82, 0xbf83, 0xbf84, /*0x38-0x3f*/
- 0xbf85, 0xb7b1, 0xbf86, 0xbf87, 0xbf88, 0xbf89, 0xbf8a, 0xf4ed, /*0x40-0x47*/
- 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90, 0xbf91, 0xbf92, /*0x48-0x4f*/
- 0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, /*0x50-0x57*/
- 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0, 0xc040, 0xc041, /*0x58-0x5f*/
- 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, /*0x60-0x67*/
- 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f, 0xc050, 0xc051, /*0x68-0x6f*/
- 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0xc058, 0xc059, /*0x70-0x77*/
- 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e, 0xc05f, 0xc060, 0xc061, /*0x78-0x7f*/
- 0xc062, 0xc063, 0xd7eb, 0xc064, 0xc065, 0xc066, 0xc067, 0xc068, /*0x80-0x87*/
- 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, /*0x88-0x8f*/
- 0xc071, 0xc072, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, /*0x90-0x97*/
- 0xc079, 0xc07a, 0xc07b, 0xf4ee, 0xc07c, 0xc07d, 0xc07e, 0xe6f9, /*0x98-0x9f*/
- 0xbec0, 0xe6fa, 0xbaec, 0xe6fb, 0xcfcb, 0xe6fc, 0xd4bc, 0xbcb6, /*0xa0-0xa7*/
- 0xe6fd, 0xe6fe, 0xbccd, 0xc8d2, 0xceb3, 0xe7a1, 0xc080, 0xb4bf, /*0xa8-0xaf*/
- 0xe7a2, 0xc9b4, 0xb8d9, 0xc4c9, 0xc081, 0xd7dd, 0xc2da, 0xb7d7, /*0xb0-0xb7*/
- 0xd6bd, 0xcec6, 0xb7c4, 0xc082, 0xc083, 0xc5a6, 0xe7a3, 0xcfdf, /*0xb8-0xbf*/
- 0xe7a4, 0xe7a5, 0xe7a6, 0xc1b7, 0xd7e9, 0xc9f0, 0xcfb8, 0xd6af, /*0xc0-0xc7*/
- 0xd6d5, 0xe7a7, 0xb0ed, 0xe7a8, 0xe7a9, 0xc9dc, 0xd2ef, 0xbead, /*0xc8-0xcf*/
- 0xe7aa, 0xb0f3, 0xc8de, 0xbde1, 0xe7ab, 0xc8c6, 0xc084, 0xe7ac, /*0xd0-0xd7*/
- 0xbbe6, 0xb8f8, 0xd1a4, 0xe7ad, 0xc2e7, 0xbef8, 0xbdca, 0xcdb3, /*0xd8-0xdf*/
- 0xe7ae, 0xe7af, 0xbeee, 0xd0e5, 0xc085, 0xcbe7, 0xccd0, 0xbccc, /*0xe0-0xe7*/
- 0xe7b0, 0xbca8, 0xd0f7, 0xe7b1, 0xc086, 0xd0f8, 0xe7b2, 0xe7b3, /*0xe8-0xef*/
- 0xb4c2, 0xe7b4, 0xe7b5, 0xc9fe, 0xceac, 0xc3e0, 0xe7b7, 0xb1c1, /*0xf0-0xf7*/
- 0xb3f1, 0xc087, 0xe7b8, 0xe7b9, 0xd7db, 0xd5c0, 0xe7ba, 0xc2cc, /*0xf8-0xff*/
- /* 0x7f00 */
- 0xd7ba, 0xe7bb, 0xe7bc, 0xe7bd, 0xbcea, 0xc3e5, 0xc0c2, 0xe7be, /*0x00-0x07*/
- 0xe7bf, 0xbca9, 0xc088, 0xe7c0, 0xe7c1, 0xe7b6, 0xb6d0, 0xe7c2, /*0x08-0x0f*/
- 0xc089, 0xe7c3, 0xe7c4, 0xbbba, 0xb5de, 0xc2c6, 0xb1e0, 0xe7c5, /*0x10-0x17*/
- 0xd4b5, 0xe7c6, 0xb8bf, 0xe7c8, 0xe7c7, 0xb7ec, 0xc08a, 0xe7c9, /*0x18-0x1f*/
- 0xb2f8, 0xe7ca, 0xe7cb, 0xe7cc, 0xe7cd, 0xe7ce, 0xe7cf, 0xe7d0, /*0x20-0x27*/
- 0xd3a7, 0xcbf5, 0xe7d1, 0xe7d2, 0xe7d3, 0xe7d4, 0xc9c9, 0xe7d5, /*0x28-0x2f*/
- 0xe7d6, 0xe7d7, 0xe7d8, 0xe7d9, 0xbdc9, 0xe7da, 0xf3be, 0xc08b, /*0x30-0x37*/
- 0xb8d7, 0xc08c, 0xc8b1, 0xc08d, 0xc08e, 0xc08f, 0xc090, 0xc091, /*0x38-0x3f*/
- 0xc092, 0xc093, 0xf3bf, 0xc094, 0xf3c0, 0xf3c1, 0xc095, 0xc096, /*0x40-0x47*/
- 0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, /*0x48-0x4f*/
- 0xb9de, 0xcdf8, 0xc09f, 0xc0a0, 0xd8e8, 0xbab1, 0xc140, 0xc2de, /*0x50-0x57*/
- 0xeeb7, 0xc141, 0xb7a3, 0xc142, 0xc143, 0xc144, 0xc145, 0xeeb9, /*0x58-0x5f*/
- 0xc146, 0xeeb8, 0xb0d5, 0xc147, 0xc148, 0xc149, 0xc14a, 0xc14b, /*0x60-0x67*/
- 0xeebb, 0xd5d6, 0xd7ef, 0xc14c, 0xc14d, 0xc14e, 0xd6c3, 0xc14f, /*0x68-0x6f*/
- 0xc150, 0xeebd, 0xcaf0, 0xc151, 0xeebc, 0xc152, 0xc153, 0xc154, /*0x70-0x77*/
- 0xc155, 0xeebe, 0xc156, 0xc157, 0xc158, 0xc159, 0xeec0, 0xc15a, /*0x78-0x7f*/
- 0xc15b, 0xeebf, 0xc15c, 0xc15d, 0xc15e, 0xc15f, 0xc160, 0xc161, /*0x80-0x87*/
- 0xc162, 0xc163, 0xd1f2, 0xc164, 0xc7bc, 0xc165, 0xc3c0, 0xc166, /*0x88-0x8f*/
- 0xc167, 0xc168, 0xc169, 0xc16a, 0xb8e1, 0xc16b, 0xc16c, 0xc16d, /*0x90-0x97*/
- 0xc16e, 0xc16f, 0xc1e7, 0xc170, 0xc171, 0xf4c6, 0xd0df, 0xf4c7, /*0x98-0x9f*/
- 0xc172, 0xcfdb, 0xc173, 0xc174, 0xc8ba, 0xc175, 0xc176, 0xf4c8, /*0xa0-0xa7*/
- 0xc177, 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xf4c9, /*0xa8-0xaf*/
- 0xf4ca, 0xc17e, 0xf4cb, 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, /*0xb0-0xb7*/
- 0xd9fa, 0xb8fe, 0xc185, 0xc186, 0xe5f1, 0xd3f0, 0xc187, 0xf4e0, /*0xb8-0xbf*/
- 0xc188, 0xcecc, 0xc189, 0xc18a, 0xc18b, 0xb3e1, 0xc18c, 0xc18d, /*0xc0-0xc7*/
- 0xc18e, 0xc18f, 0xf1b4, 0xc190, 0xd2ee, 0xc191, 0xf4e1, 0xc192, /*0xc8-0xcf*/
- 0xc193, 0xc194, 0xc195, 0xc196, 0xcfe8, 0xf4e2, 0xc197, 0xc198, /*0xd0-0xd7*/
- 0xc7cc, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, 0xc19e, 0xb5d4, /*0xd8-0xdf*/
- 0xb4e4, 0xf4e4, 0xc19f, 0xc1a0, 0xc240, 0xf4e3, 0xf4e5, 0xc241, /*0xe0-0xe7*/
- 0xc242, 0xf4e6, 0xc243, 0xc244, 0xc245, 0xc246, 0xf4e7, 0xc247, /*0xe8-0xef*/
- 0xbab2, 0xb0bf, 0xc248, 0xf4e8, 0xc249, 0xc24a, 0xc24b, 0xc24c, /*0xf0-0xf7*/
- 0xc24d, 0xc24e, 0xc24f, 0xb7ad, 0xd2ed, 0xc250, 0xc251, 0xc252, /*0xf8-0xff*/
- /* 0x8000 */
- 0xd2ab, 0xc0cf, 0xc253, 0xbfbc, 0xeba3, 0xd5df, 0xeac8, 0xc254, /*0x00-0x07*/
- 0xc255, 0xc256, 0xc257, 0xf1f3, 0xb6f8, 0xcba3, 0xc258, 0xc259, /*0x08-0x0f*/
- 0xc4cd, 0xc25a, 0xf1e7, 0xc25b, 0xf1e8, 0xb8fb, 0xf1e9, 0xbac4, /*0x10-0x17*/
- 0xd4c5, 0xb0d2, 0xc25c, 0xc25d, 0xf1ea, 0xc25e, 0xc25f, 0xc260, /*0x18-0x1f*/
- 0xf1eb, 0xc261, 0xf1ec, 0xc262, 0xc263, 0xf1ed, 0xf1ee, 0xf1ef, /*0x20-0x27*/
- 0xf1f1, 0xf1f0, 0xc5d5, 0xc264, 0xc265, 0xc266, 0xc267, 0xc268, /*0x28-0x2f*/
- 0xc269, 0xf1f2, 0xc26a, 0xb6fa, 0xc26b, 0xf1f4, 0xd2ae, 0xdec7, /*0x30-0x37*/
- 0xcbca, 0xc26c, 0xc26d, 0xb3dc, 0xc26e, 0xb5a2, 0xc26f, 0xb9a2, /*0x38-0x3f*/
- 0xc270, 0xc271, 0xc4f4, 0xf1f5, 0xc272, 0xc273, 0xf1f6, 0xc274, /*0x40-0x47*/
- 0xc275, 0xc276, 0xc1c4, 0xc1fb, 0xd6b0, 0xf1f7, 0xc277, 0xc278, /*0x48-0x4f*/
- 0xc279, 0xc27a, 0xf1f8, 0xc27b, 0xc1aa, 0xc27c, 0xc27d, 0xc27e, /*0x50-0x57*/
- 0xc6b8, 0xc280, 0xbedb, 0xc281, 0xc282, 0xc283, 0xc284, 0xc285, /*0x58-0x5f*/
- 0xc286, 0xc287, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, /*0x60-0x67*/
- 0xc28e, 0xf1f9, 0xb4cf, 0xc28f, 0xc290, 0xc291, 0xc292, 0xc293, /*0x68-0x6f*/
- 0xc294, 0xf1fa, 0xc295, 0xc296, 0xc297, 0xc298, 0xc299, 0xc29a, /*0x70-0x77*/
- 0xc29b, 0xc29c, 0xc29d, 0xc29e, 0xc29f, 0xc2a0, 0xc340, 0xedb2, /*0x78-0x7f*/
- 0xedb1, 0xc341, 0xc342, 0xcbe0, 0xd2de, 0xc343, 0xcbc1, 0xd5d8, /*0x80-0x87*/
- 0xc344, 0xc8e2, 0xc345, 0xc0df, 0xbca1, 0xc346, 0xc347, 0xc348, /*0x88-0x8f*/
- 0xc349, 0xc34a, 0xc34b, 0xebc1, 0xc34c, 0xc34d, 0xd0a4, 0xc34e, /*0x90-0x97*/
- 0xd6e2, 0xc34f, 0xb6c7, 0xb8d8, 0xebc0, 0xb8ce, 0xc350, 0xebbf, /*0x98-0x9f*/
- 0xb3a6, 0xb9c9, 0xd6ab, 0xc351, 0xb7f4, 0xb7ca, 0xc352, 0xc353, /*0xa0-0xa7*/
- 0xc354, 0xbce7, 0xb7be, 0xebc6, 0xc355, 0xebc7, 0xb0b9, 0xbfcf, /*0xa8-0xaf*/
- 0xc356, 0xebc5, 0xd3fd, 0xc357, 0xebc8, 0xc358, 0xc359, 0xebc9, /*0xb0-0xb7*/
- 0xc35a, 0xc35b, 0xb7ce, 0xc35c, 0xebc2, 0xebc4, 0xc9f6, 0xd6d7, /*0xb8-0xbf*/
- 0xd5cd, 0xd0b2, 0xebcf, 0xceb8, 0xebd0, 0xc35d, 0xb5a8, 0xc35e, /*0xc0-0xc7*/
- 0xc35f, 0xc360, 0xc361, 0xc362, 0xb1b3, 0xebd2, 0xcca5, 0xc363, /*0xc8-0xcf*/
- 0xc364, 0xc365, 0xc366, 0xc367, 0xc368, 0xc369, 0xc5d6, 0xebd3, /*0xd0-0xd7*/
- 0xc36a, 0xebd1, 0xc5df, 0xebce, 0xcaa4, 0xebd5, 0xb0fb, 0xc36b, /*0xd8-0xdf*/
- 0xc36c, 0xbafa, 0xc36d, 0xc36e, 0xd8b7, 0xf1e3, 0xc36f, 0xebca, /*0xe0-0xe7*/
- 0xebcb, 0xebcc, 0xebcd, 0xebd6, 0xe6c0, 0xebd9, 0xc370, 0xbfe8, /*0xe8-0xef*/
- 0xd2c8, 0xebd7, 0xebdc, 0xb8ec, 0xebd8, 0xc371, 0xbdba, 0xc372, /*0xf0-0xf7*/
- 0xd0d8, 0xc373, 0xb0b7, 0xc374, 0xebdd, 0xc4dc, 0xc375, 0xc376, /*0xf8-0xff*/
- /* 0x8100 */
- 0xc377, 0xc378, 0xd6ac, 0xc379, 0xc37a, 0xc37b, 0xb4e0, 0xc37c, /*0x00-0x07*/
- 0xc37d, 0xc2f6, 0xbcb9, 0xc37e, 0xc380, 0xebda, 0xebdb, 0xd4e0, /*0x08-0x0f*/
- 0xc6ea, 0xc4d4, 0xebdf, 0xc5a7, 0xd9f5, 0xc381, 0xb2b1, 0xc382, /*0x10-0x17*/
- 0xebe4, 0xc383, 0xbdc5, 0xc384, 0xc385, 0xc386, 0xebe2, 0xc387, /*0x18-0x1f*/
- 0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f, /*0x20-0x27*/
- 0xc390, 0xc391, 0xc392, 0xc393, 0xebe3, 0xc394, 0xc395, 0xb8ac, /*0x28-0x2f*/
- 0xc396, 0xcdd1, 0xebe5, 0xc397, 0xc398, 0xc399, 0xebe1, 0xc39a, /*0x30-0x37*/
- 0xc1b3, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xc6a2, 0xc3a0, /*0x38-0x3f*/
- 0xc440, 0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xccf3, 0xc446, /*0x40-0x47*/
- 0xebe6, 0xc447, 0xc0b0, 0xd2b8, 0xebe7, 0xc448, 0xc449, 0xc44a, /*0x48-0x4f*/
- 0xb8af, 0xb8ad, 0xc44b, 0xebe8, 0xc7bb, 0xcdf3, 0xc44c, 0xc44d, /*0x50-0x57*/
- 0xc44e, 0xebea, 0xebeb, 0xc44f, 0xc450, 0xc451, 0xc452, 0xc453, /*0x58-0x5f*/
- 0xebed, 0xc454, 0xc455, 0xc456, 0xc457, 0xd0c8, 0xc458, 0xebf2, /*0x60-0x67*/
- 0xc459, 0xebee, 0xc45a, 0xc45b, 0xc45c, 0xebf1, 0xc8f9, 0xc45d, /*0x68-0x6f*/
- 0xd1fc, 0xebec, 0xc45e, 0xc45f, 0xebe9, 0xc460, 0xc461, 0xc462, /*0x70-0x77*/
- 0xc463, 0xb8b9, 0xcfd9, 0xc4e5, 0xebef, 0xebf0, 0xccda, 0xcdc8, /*0x78-0x7f*/
- 0xb0f2, 0xc464, 0xebf6, 0xc465, 0xc466, 0xc467, 0xc468, 0xc469, /*0x80-0x87*/
- 0xebf5, 0xc46a, 0xb2b2, 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xb8e0, /*0x88-0x8f*/
- 0xc46f, 0xebf7, 0xc470, 0xc471, 0xc472, 0xc473, 0xc474, 0xc475, /*0x90-0x97*/
- 0xb1ec, 0xc476, 0xc477, 0xccc5, 0xc4a4, 0xcfa5, 0xc478, 0xc479, /*0x98-0x9f*/
- 0xc47a, 0xc47b, 0xc47c, 0xebf9, 0xc47d, 0xc47e, 0xeca2, 0xc480, /*0xa0-0xa7*/
- 0xc5f2, 0xc481, 0xebfa, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, /*0xa8-0xaf*/
- 0xc487, 0xc488, 0xc489, 0xc9c5, 0xc48a, 0xc48b, 0xc48c, 0xc48d, /*0xb0-0xb7*/
- 0xc48e, 0xc48f, 0xe2df, 0xebfe, 0xc490, 0xc491, 0xc492, 0xc493, /*0xb8-0xbf*/
- 0xcdce, 0xeca1, 0xb1db, 0xd3b7, 0xc494, 0xc495, 0xd2dc, 0xc496, /*0xc0-0xc7*/
- 0xc497, 0xc498, 0xebfd, 0xc499, 0xebfb, 0xc49a, 0xc49b, 0xc49c, /*0xc8-0xcf*/
- 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc540, 0xc541, 0xc542, 0xc543, /*0xd0-0xd7*/
- 0xc544, 0xc545, 0xc546, 0xc547, 0xc548, 0xc549, 0xc54a, 0xc54b, /*0xd8-0xdf*/
- 0xc54c, 0xc54d, 0xc54e, 0xb3bc, 0xc54f, 0xc550, 0xc551, 0xeab0, /*0xe0-0xe7*/
- 0xc552, 0xc553, 0xd7d4, 0xc554, 0xf4ab, 0xb3f4, 0xc555, 0xc556, /*0xe8-0xef*/
- 0xc557, 0xc558, 0xc559, 0xd6c1, 0xd6c2, 0xc55a, 0xc55b, 0xc55c, /*0xf0-0xf7*/
- 0xc55d, 0xc55e, 0xc55f, 0xd5e9, 0xbeca, 0xc560, 0xf4a7, 0xc561, /*0xf8-0xff*/
- /* 0x8200 */
- 0xd2a8, 0xf4a8, 0xf4a9, 0xc562, 0xf4aa, 0xbecb, 0xd3df, 0xc563, /*0x00-0x07*/
- 0xc564, 0xc565, 0xc566, 0xc567, 0xc9e0, 0xc9e1, 0xc568, 0xc569, /*0x08-0x0f*/
- 0xf3c2, 0xc56a, 0xcae6, 0xc56b, 0xccf2, 0xc56c, 0xc56d, 0xc56e, /*0x10-0x17*/
- 0xc56f, 0xc570, 0xc571, 0xe2b6, 0xcbb4, 0xc572, 0xcee8, 0xd6db, /*0x18-0x1f*/
- 0xc573, 0xf4ad, 0xf4ae, 0xf4af, 0xc574, 0xc575, 0xc576, 0xc577, /*0x20-0x27*/
- 0xf4b2, 0xc578, 0xbabd, 0xf4b3, 0xb0e3, 0xf4b0, 0xc579, 0xf4b1, /*0x28-0x2f*/
- 0xbda2, 0xb2d5, 0xc57a, 0xf4b6, 0xf4b7, 0xb6e6, 0xb2b0, 0xcfcf, /*0x30-0x37*/
- 0xf4b4, 0xb4ac, 0xc57b, 0xf4b5, 0xc57c, 0xc57d, 0xf4b8, 0xc57e, /*0x38-0x3f*/
- 0xc580, 0xc581, 0xc582, 0xc583, 0xf4b9, 0xc584, 0xc585, 0xcda7, /*0x40-0x47*/
- 0xc586, 0xf4ba, 0xc587, 0xf4bb, 0xc588, 0xc589, 0xc58a, 0xf4bc, /*0x48-0x4f*/
- 0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f, 0xc590, 0xc591, 0xc592, /*0x50-0x57*/
- 0xcbd2, 0xc593, 0xf4bd, 0xc594, 0xc595, 0xc596, 0xc597, 0xf4be, /*0x58-0x5f*/
- 0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e, 0xc59f, /*0x60-0x67*/
- 0xf4bf, 0xc5a0, 0xc640, 0xc641, 0xc642, 0xc643, 0xf4de, 0xc1bc, /*0x68-0x6f*/
- 0xbce8, 0xc644, 0xc9ab, 0xd1de, 0xe5f5, 0xc645, 0xc646, 0xc647, /*0x70-0x77*/
- 0xc648, 0xdcb3, 0xd2d5, 0xc649, 0xc64a, 0xdcb4, 0xb0ac, 0xdcb5, /*0x78-0x7f*/
- 0xc64b, 0xc64c, 0xbdda, 0xc64d, 0xdcb9, 0xc64e, 0xc64f, 0xc650, /*0x80-0x87*/
- 0xd8c2, 0xc651, 0xdcb7, 0xd3f3, 0xc652, 0xc9d6, 0xdcba, 0xdcb6, /*0x88-0x8f*/
- 0xc653, 0xdcbb, 0xc3a2, 0xc654, 0xc655, 0xc656, 0xc657, 0xdcbc, /*0x90-0x97*/
- 0xdcc5, 0xdcbd, 0xc658, 0xc659, 0xcedf, 0xd6a5, 0xc65a, 0xdccf, /*0x98-0x9f*/
- 0xc65b, 0xdccd, 0xc65c, 0xc65d, 0xdcd2, 0xbde6, 0xc2ab, 0xc65e, /*0xa0-0xa7*/
- 0xdcb8, 0xdccb, 0xdcce, 0xdcbe, 0xb7d2, 0xb0c5, 0xdcc7, 0xd0be, /*0xa8-0xaf*/
- 0xdcc1, 0xbba8, 0xc65f, 0xb7bc, 0xdccc, 0xc660, 0xc661, 0xdcc6, /*0xb0-0xb7*/
- 0xdcbf, 0xc7db, 0xc662, 0xc663, 0xc664, 0xd1bf, 0xdcc0, 0xc665, /*0xb8-0xbf*/
- 0xc666, 0xdcca, 0xc667, 0xc668, 0xdcd0, 0xc669, 0xc66a, 0xcead, /*0xc0-0xc7*/
- 0xdcc2, 0xc66b, 0xdcc3, 0xdcc8, 0xdcc9, 0xb2d4, 0xdcd1, 0xcbd5, /*0xc8-0xcf*/
- 0xc66c, 0xd4b7, 0xdcdb, 0xdcdf, 0xcca6, 0xdce6, 0xc66d, 0xc3e7, /*0xd0-0xd7*/
- 0xdcdc, 0xc66e, 0xc66f, 0xbfc1, 0xdcd9, 0xc670, 0xb0fa, 0xb9b6, /*0xd8-0xdf*/
- 0xdce5, 0xdcd3, 0xc671, 0xdcc4, 0xdcd6, 0xc8f4, 0xbfe0, 0xc672, /*0xe0-0xe7*/
- 0xc673, 0xc674, 0xc675, 0xc9bb, 0xc676, 0xc677, 0xc678, 0xb1bd, /*0xe8-0xef*/
- 0xc679, 0xd3a2, 0xc67a, 0xc67b, 0xdcda, 0xc67c, 0xc67d, 0xdcd5, /*0xf0-0xf7*/
- 0xc67e, 0xc6bb, 0xc680, 0xdcde, 0xc681, 0xc682, 0xc683, 0xc684, /*0xf8-0xff*/
- /* 0x8300 */
- 0xc685, 0xd7c2, 0xc3af, 0xb7b6, 0xc7d1, 0xc3a9, 0xdce2, 0xdcd8, /*0x00-0x07*/
- 0xdceb, 0xdcd4, 0xc686, 0xc687, 0xdcdd, 0xc688, 0xbea5, 0xdcd7, /*0x08-0x0f*/
- 0xc689, 0xdce0, 0xc68a, 0xc68b, 0xdce3, 0xdce4, 0xc68c, 0xdcf8, /*0x10-0x17*/
- 0xc68d, 0xc68e, 0xdce1, 0xdda2, 0xdce7, 0xc68f, 0xc690, 0xc691, /*0x18-0x1f*/
- 0xc692, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xbceb, /*0x20-0x27*/
- 0xb4c4, 0xc699, 0xc69a, 0xc3a3, 0xb2e7, 0xdcfa, 0xc69b, 0xdcf2, /*0x28-0x2f*/
- 0xc69c, 0xdcef, 0xc69d, 0xdcfc, 0xdcee, 0xd2f0, 0xb2e8, 0xc69e, /*0x30-0x37*/
- 0xc8d7, 0xc8e3, 0xdcfb, 0xc69f, 0xdced, 0xc6a0, 0xc740, 0xc741, /*0x38-0x3f*/
- 0xdcf7, 0xc742, 0xc743, 0xdcf5, 0xc744, 0xc745, 0xbea3, 0xdcf4, /*0x40-0x47*/
- 0xc746, 0xb2dd, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xdcf3, /*0x48-0x4f*/
- 0xbcf6, 0xdce8, 0xbbc4, 0xc74c, 0xc0f3, 0xc74d, 0xc74e, 0xc74f, /*0x50-0x57*/
- 0xc750, 0xc751, 0xbcd4, 0xdce9, 0xdcea, 0xc752, 0xdcf1, 0xdcf6, /*0x58-0x5f*/
- 0xdcf9, 0xb5b4, 0xc753, 0xc8d9, 0xbbe7, 0xdcfe, 0xdcfd, 0xd3ab, /*0x60-0x67*/
- 0xdda1, 0xdda3, 0xdda5, 0xd2f1, 0xdda4, 0xdda6, 0xdda7, 0xd2a9, /*0x68-0x6f*/
- 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xbac9, /*0x70-0x77*/
- 0xdda9, 0xc75b, 0xc75c, 0xddb6, 0xddb1, 0xddb4, 0xc75d, 0xc75e, /*0x78-0x7f*/
- 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xddb0, 0xc6ce, 0xc764, /*0x80-0x87*/
- 0xc765, 0xc0f2, 0xc766, 0xc767, 0xc768, 0xc769, 0xc9af, 0xc76a, /*0x88-0x8f*/
- 0xc76b, 0xc76c, 0xdcec, 0xddae, 0xc76d, 0xc76e, 0xc76f, 0xc770, /*0x90-0x97*/
- 0xddb7, 0xc771, 0xc772, 0xdcf0, 0xddaf, 0xc773, 0xddb8, 0xc774, /*0x98-0x9f*/
- 0xddac, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, /*0xa0-0xa7*/
- 0xddb9, 0xddb3, 0xddad, 0xc4aa, 0xc77c, 0xc77d, 0xc77e, 0xc780, /*0xa8-0xaf*/
- 0xdda8, 0xc0b3, 0xc1ab, 0xddaa, 0xddab, 0xc781, 0xddb2, 0xbbf1, /*0xb0-0xb7*/
- 0xddb5, 0xd3a8, 0xddba, 0xc782, 0xddbb, 0xc3a7, 0xc783, 0xc784, /*0xb8-0xbf*/
- 0xddd2, 0xddbc, 0xc785, 0xc786, 0xc787, 0xddd1, 0xc788, 0xb9bd, /*0xc0-0xc7*/
- 0xc789, 0xc78a, 0xbed5, 0xc78b, 0xbefa, 0xc78c, 0xc78d, 0xbaca, /*0xc8-0xcf*/
- 0xc78e, 0xc78f, 0xc790, 0xc791, 0xddca, 0xc792, 0xddc5, 0xc793, /*0xd0-0xd7*/
- 0xddbf, 0xc794, 0xc795, 0xc796, 0xb2cb, 0xddc3, 0xc797, 0xddcb, /*0xd8-0xdf*/
- 0xb2a4, 0xddd5, 0xc798, 0xc799, 0xc79a, 0xddbe, 0xc79b, 0xc79c, /*0xe0-0xe7*/
- 0xc79d, 0xc6d0, 0xddd0, 0xc79e, 0xc79f, 0xc7a0, 0xc840, 0xc841, /*0xe8-0xef*/
- 0xddd4, 0xc1e2, 0xb7c6, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, /*0xf0-0xf7*/
- 0xddce, 0xddcf, 0xc847, 0xc848, 0xc849, 0xddc4, 0xc84a, 0xc84b, /*0xf8-0xff*/
- /* 0x8400 */
- 0xc84c, 0xddbd, 0xc84d, 0xddcd, 0xccd1, 0xc84e, 0xddc9, 0xc84f, /*0x00-0x07*/
- 0xc850, 0xc851, 0xc852, 0xddc2, 0xc3c8, 0xc6bc, 0xceae, 0xddcc, /*0x08-0x0f*/
- 0xc853, 0xddc8, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, /*0x10-0x17*/
- 0xddc1, 0xc85a, 0xc85b, 0xc85c, 0xddc6, 0xc2dc, 0xc85d, 0xc85e, /*0x18-0x1f*/
- 0xc85f, 0xc860, 0xc861, 0xc862, 0xd3a9, 0xd3aa, 0xddd3, 0xcff4, /*0x20-0x27*/
- 0xc8f8, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, /*0x28-0x2f*/
- 0xc86a, 0xdde6, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, /*0x30-0x37*/
- 0xddc7, 0xc871, 0xc872, 0xc873, 0xdde0, 0xc2e4, 0xc874, 0xc875, /*0x38-0x3f*/
- 0xc876, 0xc877, 0xc878, 0xc879, 0xc87a, 0xc87b, 0xdde1, 0xc87c, /*0x40-0x47*/
- 0xc87d, 0xc87e, 0xc880, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885, /*0x48-0x4f*/
- 0xc886, 0xddd7, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0xd6f8, /*0x50-0x57*/
- 0xc88c, 0xddd9, 0xddd8, 0xb8f0, 0xddd6, 0xc88d, 0xc88e, 0xc88f, /*0x58-0x5f*/
- 0xc890, 0xc6cf, 0xc891, 0xb6ad, 0xc892, 0xc893, 0xc894, 0xc895, /*0x60-0x67*/
- 0xc896, 0xdde2, 0xc897, 0xbaf9, 0xd4e1, 0xdde7, 0xc898, 0xc899, /*0x68-0x6f*/
- 0xc89a, 0xb4d0, 0xc89b, 0xddda, 0xc89c, 0xbffb, 0xdde3, 0xc89d, /*0x70-0x77*/
- 0xdddf, 0xc89e, 0xdddd, 0xc89f, 0xc8a0, 0xc940, 0xc941, 0xc942, /*0x78-0x7f*/
- 0xc943, 0xc944, 0xb5d9, 0xc945, 0xc946, 0xc947, 0xc948, 0xdddb, /*0x80-0x87*/
- 0xdddc, 0xddde, 0xc949, 0xbdaf, 0xdde4, 0xc94a, 0xdde5, 0xc94b, /*0x88-0x8f*/
- 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0xc950, 0xc951, 0xc952, 0xddf5, /*0x90-0x97*/
- 0xc953, 0xc3c9, 0xc954, 0xc955, 0xcbe2, 0xc956, 0xc957, 0xc958, /*0x98-0x9f*/
- 0xc959, 0xddf2, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e, 0xc95f, /*0xa0-0xa7*/
- 0xc960, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xd8e1, /*0xa8-0xaf*/
- 0xc967, 0xc968, 0xc6d1, 0xc969, 0xddf4, 0xc96a, 0xc96b, 0xc96c, /*0xb0-0xb7*/
- 0xd5f4, 0xddf3, 0xddf0, 0xc96d, 0xc96e, 0xddec, 0xc96f, 0xddef, /*0xb8-0xbf*/
- 0xc970, 0xdde8, 0xc971, 0xc972, 0xd0ee, 0xc973, 0xc974, 0xc975, /*0xc0-0xc7*/
- 0xc976, 0xc8d8, 0xddee, 0xc977, 0xc978, 0xdde9, 0xc979, 0xc97a, /*0xc8-0xcf*/
- 0xddea, 0xcbf2, 0xc97b, 0xdded, 0xc97c, 0xc97d, 0xb1cd, 0xc97e, /*0xd0-0xd7*/
- 0xc980, 0xc981, 0xc982, 0xc983, 0xc984, 0xc0b6, 0xc985, 0xbcbb, /*0xd8-0xdf*/
- 0xddf1, 0xc986, 0xc987, 0xddf7, 0xc988, 0xddf6, 0xddeb, 0xc989, /*0xe0-0xe7*/
- 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc5ee, 0xc98e, 0xc98f, 0xc990, /*0xe8-0xef*/
- 0xddfb, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, 0xc997, /*0xf0-0xf7*/
- 0xc998, 0xc999, 0xc99a, 0xc99b, 0xdea4, 0xc99c, 0xc99d, 0xdea3, /*0xf8-0xff*/
- /* 0x8500 */
- 0xc99e, 0xc99f, 0xc9a0, 0xca40, 0xca41, 0xca42, 0xca43, 0xca44, /*0x00-0x07*/
- 0xca45, 0xca46, 0xca47, 0xca48, 0xddf8, 0xca49, 0xca4a, 0xca4b, /*0x08-0x0f*/
- 0xca4c, 0xc3ef, 0xca4d, 0xc2fb, 0xca4e, 0xca4f, 0xca50, 0xd5e1, /*0x10-0x17*/
- 0xca51, 0xca52, 0xceb5, 0xca53, 0xca54, 0xca55, 0xca56, 0xddfd, /*0x18-0x1f*/
- 0xca57, 0xb2cc, 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d, /*0x20-0x27*/
- 0xca5e, 0xca5f, 0xca60, 0xc4e8, 0xcadf, 0xca61, 0xca62, 0xca63, /*0x28-0x2f*/
- 0xca64, 0xca65, 0xca66, 0xca67, 0xca68, 0xca69, 0xca6a, 0xc7be, /*0x30-0x37*/
- 0xddfa, 0xddfc, 0xddfe, 0xdea2, 0xb0aa, 0xb1ce, 0xca6b, 0xca6c, /*0x38-0x3f*/
- 0xca6d, 0xca6e, 0xca6f, 0xdeac, 0xca70, 0xca71, 0xca72, 0xca73, /*0x40-0x47*/
- 0xdea6, 0xbdb6, 0xc8ef, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, /*0x48-0x4f*/
- 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca7e, 0xdea1, 0xca80, /*0x50-0x57*/
- 0xca81, 0xdea5, 0xca82, 0xca83, 0xca84, 0xca85, 0xdea9, 0xca86, /*0x58-0x5f*/
- 0xca87, 0xca88, 0xca89, 0xca8a, 0xdea8, 0xca8b, 0xca8c, 0xca8d, /*0x60-0x67*/
- 0xdea7, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, /*0x68-0x6f*/
- 0xca95, 0xca96, 0xdead, 0xca97, 0xd4cc, 0xca98, 0xca99, 0xca9a, /*0x70-0x77*/
- 0xca9b, 0xdeb3, 0xdeaa, 0xdeae, 0xca9c, 0xca9d, 0xc0d9, 0xca9e, /*0x78-0x7f*/
- 0xca9f, 0xcaa0, 0xcb40, 0xcb41, 0xb1a1, 0xdeb6, 0xcb42, 0xdeb1, /*0x80-0x87*/
- 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, 0xcb48, 0xcb49, 0xdeb2, /*0x88-0x8f*/
- 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e, 0xcb4f, 0xcb50, 0xcb51, /*0x90-0x97*/
- 0xcb52, 0xcb53, 0xcb54, 0xd1a6, 0xdeb5, 0xcb55, 0xcb56, 0xcb57, /*0x98-0x9f*/
- 0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xdeaf, 0xcb5c, 0xcb5d, 0xcb5e, /*0xa0-0xa7*/
- 0xdeb0, 0xcb5f, 0xd0bd, 0xcb60, 0xcb61, 0xcb62, 0xdeb4, 0xcaed, /*0xa8-0xaf*/
- 0xdeb9, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xdeb8, /*0xb0-0xb7*/
- 0xcb69, 0xdeb7, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, /*0xb8-0xbf*/
- 0xcb70, 0xdebb, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, /*0xc0-0xc7*/
- 0xcb77, 0xbde5, 0xcb78, 0xcb79, 0xcb7a, 0xcb7b, 0xcb7c, 0xb2d8, /*0xc8-0xcf*/
- 0xc3ea, 0xcb7d, 0xcb7e, 0xdeba, 0xcb80, 0xc5ba, 0xcb81, 0xcb82, /*0xd0-0xd7*/
- 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xdebc, 0xcb87, 0xcb88, 0xcb89, /*0xd8-0xdf*/
- 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xccd9, 0xcb8e, 0xcb8f, 0xcb90, /*0xe0-0xe7*/
- 0xcb91, 0xb7aa, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, /*0xe8-0xef*/
- 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f, /*0xf0-0xf7*/
- 0xcba0, 0xcc40, 0xcc41, 0xd4e5, 0xcc42, 0xcc43, 0xcc44, 0xdebd, /*0xf8-0xff*/
- /* 0x8600 */
- 0xcc45, 0xcc46, 0xcc47, 0xcc48, 0xcc49, 0xdebf, 0xcc4a, 0xcc4b, /*0x00-0x07*/
- 0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50, 0xcc51, 0xcc52, 0xcc53, /*0x08-0x0f*/
- 0xcc54, 0xc4a2, 0xcc55, 0xcc56, 0xcc57, 0xcc58, 0xdec1, 0xcc59, /*0x10-0x17*/
- 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0xcc60, 0xcc61, /*0x18-0x1f*/
- 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66, 0xcc67, 0xcc68, 0xdebe, /*0x20-0x27*/
- 0xcc69, 0xdec0, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, /*0x28-0x2f*/
- 0xcc70, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75, 0xcc76, 0xcc77, /*0x30-0x37*/
- 0xd5ba, 0xcc78, 0xcc79, 0xcc7a, 0xdec2, 0xcc7b, 0xcc7c, 0xcc7d, /*0x38-0x3f*/
- 0xcc7e, 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, /*0x40-0x47*/
- 0xcc87, 0xcc88, 0xcc89, 0xcc8a, 0xcc8b, 0xf2ae, 0xbba2, 0xc2b2, /*0x48-0x4f*/
- 0xc5b0, 0xc2c7, 0xcc8c, 0xcc8d, 0xf2af, 0xcc8e, 0xcc8f, 0xcc90, /*0x50-0x57*/
- 0xcc91, 0xcc92, 0xd0e9, 0xcc93, 0xcc94, 0xcc95, 0xd3dd, 0xcc96, /*0x58-0x5f*/
- 0xcc97, 0xcc98, 0xebbd, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, /*0x60-0x67*/
- 0xcc9e, 0xcc9f, 0xcca0, 0xb3e6, 0xf2b0, 0xcd40, 0xf2b1, 0xcd41, /*0x68-0x6f*/
- 0xcd42, 0xcaad, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, /*0x70-0x77*/
- 0xcd49, 0xbae7, 0xf2b3, 0xf2b5, 0xf2b4, 0xcbe4, 0xcfba, 0xf2b2, /*0x78-0x7f*/
- 0xcab4, 0xd2cf, 0xc2ec, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, /*0x80-0x87*/
- 0xcd4f, 0xcd50, 0xcec3, 0xf2b8, 0xb0f6, 0xf2b7, 0xcd51, 0xcd52, /*0x88-0x8f*/
- 0xcd53, 0xcd54, 0xcd55, 0xf2be, 0xcd56, 0xb2cf, 0xcd57, 0xcd58, /*0x90-0x97*/
- 0xcd59, 0xcd5a, 0xcd5b, 0xcd5c, 0xd1c1, 0xf2ba, 0xcd5d, 0xcd5e, /*0x98-0x9f*/
- 0xcd5f, 0xcd60, 0xcd61, 0xf2bc, 0xd4e9, 0xcd62, 0xcd63, 0xf2bb, /*0xa0-0xa7*/
- 0xf2b6, 0xf2bf, 0xf2bd, 0xcd64, 0xf2b9, 0xcd65, 0xcd66, 0xf2c7, /*0xa8-0xaf*/
- 0xf2c4, 0xf2c6, 0xcd67, 0xcd68, 0xf2ca, 0xf2c2, 0xf2c0, 0xcd69, /*0xb0-0xb7*/
- 0xcd6a, 0xcd6b, 0xf2c5, 0xcd6c, 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, /*0xb8-0xbf*/
- 0xd6fb, 0xcd71, 0xcd72, 0xcd73, 0xf2c1, 0xcd74, 0xc7f9, 0xc9df, /*0xc0-0xc7*/
- 0xcd75, 0xf2c8, 0xb9c6, 0xb5b0, 0xcd76, 0xcd77, 0xf2c3, 0xf2c9, /*0xc8-0xcf*/
- 0xf2d0, 0xf2d6, 0xcd78, 0xcd79, 0xbbd7, 0xcd7a, 0xcd7b, 0xcd7c, /*0xd0-0xd7*/
- 0xf2d5, 0xcddc, 0xcd7d, 0xd6eb, 0xcd7e, 0xcd80, 0xf2d2, 0xf2d4, /*0xd8-0xdf*/
- 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xb8f2, 0xcd85, 0xcd86, 0xcd87, /*0xe0-0xe7*/
- 0xcd88, 0xf2cb, 0xcd89, 0xcd8a, 0xcd8b, 0xf2ce, 0xc2f9, 0xcd8c, /*0xe8-0xef*/
- 0xd5dd, 0xf2cc, 0xf2cd, 0xf2cf, 0xf2d3, 0xcd8d, 0xcd8e, 0xcd8f, /*0xf0-0xf7*/
- 0xf2d9, 0xd3bc, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xb6ea, 0xcd94, /*0xf8-0xff*/
- /* 0x8700 */
- 0xcaf1, 0xcd95, 0xb7e4, 0xf2d7, 0xcd96, 0xcd97, 0xcd98, 0xf2d8, /*0x00-0x07*/
- 0xf2da, 0xf2dd, 0xf2db, 0xcd99, 0xcd9a, 0xf2dc, 0xcd9b, 0xcd9c, /*0x08-0x0f*/
- 0xcd9d, 0xcd9e, 0xd1d1, 0xf2d1, 0xcd9f, 0xcdc9, 0xcda0, 0xcecf, /*0x10-0x17*/
- 0xd6a9, 0xce40, 0xf2e3, 0xce41, 0xc3db, 0xce42, 0xf2e0, 0xce43, /*0x18-0x1f*/
- 0xce44, 0xc0af, 0xf2ec, 0xf2de, 0xce45, 0xf2e1, 0xce46, 0xce47, /*0x20-0x27*/
- 0xce48, 0xf2e8, 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xf2e2, 0xce4d, /*0x28-0x2f*/
- 0xce4e, 0xf2e7, 0xce4f, 0xce50, 0xf2e6, 0xce51, 0xce52, 0xf2e9, /*0x30-0x37*/
- 0xce53, 0xce54, 0xce55, 0xf2df, 0xce56, 0xce57, 0xf2e4, 0xf2ea, /*0x38-0x3f*/
- 0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e, 0xd3ac, /*0x40-0x47*/
- 0xf2e5, 0xb2f5, 0xce5f, 0xce60, 0xf2f2, 0xce61, 0xd0ab, 0xce62, /*0x48-0x4f*/
- 0xce63, 0xce64, 0xce65, 0xf2f5, 0xce66, 0xce67, 0xce68, 0xbbc8, /*0x50-0x57*/
- 0xce69, 0xf2f9, 0xce6a, 0xce6b, 0xce6c, 0xce6d, 0xce6e, 0xce6f, /*0x58-0x5f*/
- 0xf2f0, 0xce70, 0xce71, 0xf2f6, 0xf2f8, 0xf2fa, 0xce72, 0xce73, /*0x60-0x67*/
- 0xce74, 0xce75, 0xce76, 0xce77, 0xce78, 0xce79, 0xf2f3, 0xce7a, /*0x68-0x6f*/
- 0xf2f1, 0xce7b, 0xce7c, 0xce7d, 0xbafb, 0xce7e, 0xb5fb, 0xce80, /*0x70-0x77*/
- 0xce81, 0xce82, 0xce83, 0xf2ef, 0xf2f7, 0xf2ed, 0xf2ee, 0xce84, /*0x78-0x7f*/
- 0xce85, 0xce86, 0xf2eb, 0xf3a6, 0xce87, 0xf3a3, 0xce88, 0xce89, /*0x80-0x87*/
- 0xf3a2, 0xce8a, 0xce8b, 0xf2f4, 0xce8c, 0xc8da, 0xce8d, 0xce8e, /*0x88-0x8f*/
- 0xce8f, 0xce90, 0xce91, 0xf2fb, 0xce92, 0xce93, 0xce94, 0xf3a5, /*0x90-0x97*/
- 0xce95, 0xce96, 0xce97, 0xce98, 0xce99, 0xce9a, 0xce9b, 0xc3f8, /*0x98-0x9f*/
- 0xce9c, 0xce9d, 0xce9e, 0xce9f, 0xcea0, 0xcf40, 0xcf41, 0xcf42, /*0xa0-0xa7*/
- 0xf2fd, 0xcf43, 0xcf44, 0xf3a7, 0xf3a9, 0xf3a4, 0xcf45, 0xf2fc, /*0xa8-0xaf*/
- 0xcf46, 0xcf47, 0xcf48, 0xf3ab, 0xcf49, 0xf3aa, 0xcf4a, 0xcf4b, /*0xb0-0xb7*/
- 0xcf4c, 0xcf4d, 0xc2dd, 0xcf4e, 0xcf4f, 0xf3ae, 0xcf50, 0xcf51, /*0xb8-0xbf*/
- 0xf3b0, 0xcf52, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xf3a1, 0xcf57, /*0xc0-0xc7*/
- 0xcf58, 0xcf59, 0xf3b1, 0xf3ac, 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, /*0xc8-0xcf*/
- 0xcf5e, 0xf3af, 0xf2fe, 0xf3ad, 0xcf5f, 0xcf60, 0xcf61, 0xcf62, /*0xd0-0xd7*/
- 0xcf63, 0xcf64, 0xcf65, 0xf3b2, 0xcf66, 0xcf67, 0xcf68, 0xcf69, /*0xd8-0xdf*/
- 0xf3b4, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xf3a8, 0xcf6e, 0xcf6f, /*0xe0-0xe7*/
- 0xcf70, 0xcf71, 0xf3b3, 0xcf72, 0xcf73, 0xcf74, 0xf3b5, 0xcf75, /*0xe8-0xef*/
- 0xcf76, 0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, /*0xf0-0xf7*/
- 0xcf7e, 0xd0b7, 0xcf80, 0xcf81, 0xcf82, 0xcf83, 0xf3b8, 0xcf84, /*0xf8-0xff*/
- /* 0x8800 */
- 0xcf85, 0xcf86, 0xcf87, 0xd9f9, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, /*0x00-0x07*/
- 0xcf8c, 0xcf8d, 0xf3b9, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92, /*0x08-0x0f*/
- 0xcf93, 0xcf94, 0xcf95, 0xf3b7, 0xcf96, 0xc8e4, 0xf3b6, 0xcf97, /*0x10-0x17*/
- 0xcf98, 0xcf99, 0xcf9a, 0xf3ba, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, /*0x18-0x1f*/
- 0xcf9f, 0xf3bb, 0xb4c0, 0xcfa0, 0xd040, 0xd041, 0xd042, 0xd043, /*0x20-0x27*/
- 0xd044, 0xd045, 0xd046, 0xd047, 0xd048, 0xd049, 0xd04a, 0xd04b, /*0x28-0x2f*/
- 0xd04c, 0xd04d, 0xeec3, 0xd04e, 0xd04f, 0xd050, 0xd051, 0xd052, /*0x30-0x37*/
- 0xd053, 0xf3bc, 0xd054, 0xd055, 0xf3bd, 0xd056, 0xd057, 0xd058, /*0x38-0x3f*/
- 0xd1aa, 0xd059, 0xd05a, 0xd05b, 0xf4ac, 0xd0c6, 0xd05c, 0xd05d, /*0x40-0x47*/
- 0xd05e, 0xd05f, 0xd060, 0xd061, 0xd0d0, 0xd1dc, 0xd062, 0xd063, /*0x48-0x4f*/
- 0xd064, 0xd065, 0xd066, 0xd067, 0xcfce, 0xd068, 0xd069, 0xbdd6, /*0x50-0x57*/
- 0xd06a, 0xd1c3, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070, /*0x58-0x5f*/
- 0xd071, 0xbae2, 0xe1e9, 0xd2c2, 0xf1c2, 0xb2b9, 0xd072, 0xd073, /*0x60-0x67*/
- 0xb1ed, 0xf1c3, 0xd074, 0xc9c0, 0xb3c4, 0xd075, 0xd9f2, 0xd076, /*0x68-0x6f*/
- 0xcba5, 0xd077, 0xf1c4, 0xd078, 0xd079, 0xd07a, 0xd07b, 0xd6d4, /*0x70-0x77*/
- 0xd07c, 0xd07d, 0xd07e, 0xd080, 0xd081, 0xf1c5, 0xf4c0, 0xf1c6, /*0x78-0x7f*/
- 0xd082, 0xd4ac, 0xf1c7, 0xd083, 0xb0c0, 0xf4c1, 0xd084, 0xd085, /*0x80-0x87*/
- 0xf4c2, 0xd086, 0xd087, 0xb4fc, 0xd088, 0xc5db, 0xd089, 0xd08a, /*0x88-0x8f*/
- 0xd08b, 0xd08c, 0xccbb, 0xd08d, 0xd08e, 0xd08f, 0xd0e4, 0xd090, /*0x90-0x97*/
- 0xd091, 0xd092, 0xd093, 0xd094, 0xcde0, 0xd095, 0xd096, 0xd097, /*0x98-0x9f*/
- 0xd098, 0xd099, 0xf1c8, 0xd09a, 0xd9f3, 0xd09b, 0xd09c, 0xd09d, /*0xa0-0xa7*/
- 0xd09e, 0xd09f, 0xd0a0, 0xb1bb, 0xd140, 0xcfae, 0xd141, 0xd142, /*0xa8-0xaf*/
- 0xd143, 0xb8a4, 0xd144, 0xd145, 0xd146, 0xd147, 0xd148, 0xf1ca, /*0xb0-0xb7*/
- 0xd149, 0xd14a, 0xd14b, 0xd14c, 0xf1cb, 0xd14d, 0xd14e, 0xd14f, /*0xb8-0xbf*/
- 0xd150, 0xb2c3, 0xc1d1, 0xd151, 0xd152, 0xd7b0, 0xf1c9, 0xd153, /*0xc0-0xc7*/
- 0xd154, 0xf1cc, 0xd155, 0xd156, 0xd157, 0xd158, 0xf1ce, 0xd159, /*0xc8-0xcf*/
- 0xd15a, 0xd15b, 0xd9f6, 0xd15c, 0xd2e1, 0xd4a3, 0xd15d, 0xd15e, /*0xd0-0xd7*/
- 0xf4c3, 0xc8b9, 0xd15f, 0xd160, 0xd161, 0xd162, 0xd163, 0xf4c4, /*0xd8-0xdf*/
- 0xd164, 0xd165, 0xf1cd, 0xf1cf, 0xbfe3, 0xf1d0, 0xd166, 0xd167, /*0xe0-0xe7*/
- 0xf1d4, 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, /*0xe8-0xef*/
- 0xf1d6, 0xf1d1, 0xd16f, 0xc9d1, 0xc5e1, 0xd170, 0xd171, 0xd172, /*0xf0-0xf7*/
- 0xc2e3, 0xb9fc, 0xd173, 0xd174, 0xf1d3, 0xd175, 0xf1d5, 0xd176, /*0xf8-0xff*/
- /* 0x8900 */
- 0xd177, 0xd178, 0xb9d3, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d, /*0x00-0x07*/
- 0xd17e, 0xd180, 0xf1db, 0xd181, 0xd182, 0xd183, 0xd184, 0xd185, /*0x08-0x0f*/
- 0xbad6, 0xd186, 0xb0fd, 0xf1d9, 0xd187, 0xd188, 0xd189, 0xd18a, /*0x10-0x17*/
- 0xd18b, 0xf1d8, 0xf1d2, 0xf1da, 0xd18c, 0xd18d, 0xd18e, 0xd18f, /*0x18-0x1f*/
- 0xd190, 0xf1d7, 0xd191, 0xd192, 0xd193, 0xc8ec, 0xd194, 0xd195, /*0x20-0x27*/
- 0xd196, 0xd197, 0xcdca, 0xf1dd, 0xd198, 0xd199, 0xd19a, 0xd19b, /*0x28-0x2f*/
- 0xe5bd, 0xd19c, 0xd19d, 0xd19e, 0xf1dc, 0xd19f, 0xf1de, 0xd1a0, /*0x30-0x37*/
- 0xd240, 0xd241, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, /*0x38-0x3f*/
- 0xd248, 0xf1df, 0xd249, 0xd24a, 0xcfe5, 0xd24b, 0xd24c, 0xd24d, /*0x40-0x47*/
- 0xd24e, 0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, /*0x48-0x4f*/
- 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, /*0x50-0x57*/
- 0xd25e, 0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0xf4c5, 0xbdf3, /*0x58-0x5f*/
- 0xd264, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xf1e0, 0xd26a, /*0x60-0x67*/
- 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270, 0xd271, 0xd272, /*0x68-0x6f*/
- 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, 0xd27a, /*0x70-0x77*/
- 0xd27b, 0xd27c, 0xd27d, 0xf1e1, 0xd27e, 0xd280, 0xd281, 0xcef7, /*0x78-0x7f*/
- 0xd282, 0xd2aa, 0xd283, 0xf1fb, 0xd284, 0xd285, 0xb8b2, 0xd286, /*0x80-0x87*/
- 0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, /*0x88-0x8f*/
- 0xd28f, 0xd290, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295, 0xd296, /*0x90-0x97*/
- 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d, 0xd29e, /*0x98-0x9f*/
- 0xd29f, 0xd2a0, 0xd340, 0xd341, 0xd342, 0xd343, 0xd344, 0xd345, /*0xa0-0xa7*/
- 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, 0xd34d, /*0xa8-0xaf*/
- 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, /*0xb0-0xb7*/
- 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d, /*0xb8-0xbf*/
- 0xd35e, 0xbcfb, 0xb9db, 0xd35f, 0xb9e6, 0xc3d9, 0xcad3, 0xeae8, /*0xc0-0xc7*/
- 0xc0c0, 0xbef5, 0xeae9, 0xeaea, 0xeaeb, 0xd360, 0xeaec, 0xeaed, /*0xc8-0xcf*/
- 0xeaee, 0xeaef, 0xbdc7, 0xd361, 0xd362, 0xd363, 0xf5fb, 0xd364, /*0xd0-0xd7*/
- 0xd365, 0xd366, 0xf5fd, 0xd367, 0xf5fe, 0xd368, 0xf5fc, 0xd369, /*0xd8-0xdf*/
- 0xd36a, 0xd36b, 0xd36c, 0xbde2, 0xd36d, 0xf6a1, 0xb4a5, 0xd36e, /*0xe0-0xe7*/
- 0xd36f, 0xd370, 0xd371, 0xf6a2, 0xd372, 0xd373, 0xd374, 0xf6a3, /*0xe8-0xef*/
- 0xd375, 0xd376, 0xd377, 0xecb2, 0xd378, 0xd379, 0xd37a, 0xd37b, /*0xf0-0xf7*/
- 0xd37c, 0xd37d, 0xd37e, 0xd380, 0xd381, 0xd382, 0xd383, 0xd384, /*0xf8-0xff*/
- /* 0x8a00 */
- 0xd1d4, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd9ea, /*0x00-0x07*/
- 0xd38b, 0xd38c, 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391, 0xd392, /*0x08-0x0f*/
- 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0xd398, 0xd399, 0xd39a, /*0x10-0x17*/
- 0xd39b, 0xd39c, 0xd39d, 0xd39e, 0xd39f, 0xd3a0, 0xd440, 0xd441, /*0x18-0x1f*/
- 0xd442, 0xd443, 0xd444, 0xd445, 0xd446, 0xd447, 0xd448, 0xd449, /*0x20-0x27*/
- 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, 0xd450, 0xd451, /*0x28-0x2f*/
- 0xd452, 0xd453, 0xd454, 0xd455, 0xd456, 0xd457, 0xd458, 0xd459, /*0x30-0x37*/
- 0xd45a, 0xd45b, 0xd45c, 0xd45d, 0xd45e, 0xd45f, 0xf6a4, 0xd460, /*0x38-0x3f*/
- 0xd461, 0xd462, 0xd463, 0xd464, 0xd465, 0xd466, 0xd467, 0xd468, /*0x40-0x47*/
- 0xeeba, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46d, 0xd46e, 0xd46f, /*0x48-0x4f*/
- 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, /*0x50-0x57*/
- 0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e, 0xd480, /*0x58-0x5f*/
- 0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, 0xd488, /*0x60-0x67*/
- 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d, 0xd48e, 0xd48f, 0xd490, /*0x68-0x6f*/
- 0xd491, 0xd492, 0xd493, 0xd494, 0xd495, 0xd496, 0xd497, 0xd498, /*0x70-0x77*/
- 0xd499, 0xd5b2, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, /*0x78-0x7f*/
- 0xd4a0, 0xd540, 0xd541, 0xd542, 0xd543, 0xd544, 0xd545, 0xd546, /*0x80-0x87*/
- 0xd547, 0xd3fe, 0xccdc, 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54c, /*0x88-0x8f*/
- 0xd54d, 0xd54e, 0xd54f, 0xcac4, 0xd550, 0xd551, 0xd552, 0xd553, /*0x90-0x97*/
- 0xd554, 0xd555, 0xd556, 0xd557, 0xd558, 0xd559, 0xd55a, 0xd55b, /*0x98-0x9f*/
- 0xd55c, 0xd55d, 0xd55e, 0xd55f, 0xd560, 0xd561, 0xd562, 0xd563, /*0xa0-0xa7*/
- 0xd564, 0xd565, 0xd566, 0xd567, 0xd568, 0xd569, 0xd56a, 0xd56b, /*0xa8-0xaf*/
- 0xd56c, 0xd56d, 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, /*0xb0-0xb7*/
- 0xd574, 0xd575, 0xd576, 0xd577, 0xd578, 0xd579, 0xd57a, 0xd57b, /*0xb8-0xbf*/
- 0xd57c, 0xd57d, 0xd57e, 0xd580, 0xd581, 0xd582, 0xd583, 0xd584, /*0xc0-0xc7*/
- 0xd585, 0xd586, 0xd587, 0xd588, 0xd589, 0xd58a, 0xd58b, 0xd58c, /*0xc8-0xcf*/
- 0xd58d, 0xd58e, 0xd58f, 0xd590, 0xd591, 0xd592, 0xd593, 0xd594, /*0xd0-0xd7*/
- 0xd595, 0xd596, 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, /*0xd8-0xdf*/
- 0xd59d, 0xd59e, 0xd59f, 0xd5a0, 0xd640, 0xd641, 0xd642, 0xd643, /*0xe0-0xe7*/
- 0xd644, 0xd645, 0xd646, 0xd647, 0xd648, 0xd649, 0xd64a, 0xd64b, /*0xe8-0xef*/
- 0xd64c, 0xd64d, 0xd64e, 0xd64f, 0xd650, 0xd651, 0xd652, 0xd653, /*0xf0-0xf7*/
- 0xd654, 0xd655, 0xd656, 0xd657, 0xd658, 0xd659, 0xd65a, 0xd65b, /*0xf8-0xff*/
- /* 0x8b00 */
- 0xd65c, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, 0xe5c0, /*0x00-0x07*/
- 0xd663, 0xd664, 0xd665, 0xd666, 0xd667, 0xd668, 0xd669, 0xd66a, /*0x08-0x0f*/
- 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0xd670, 0xd671, 0xd672, /*0x10-0x17*/
- 0xd673, 0xd674, 0xd675, 0xd676, 0xd677, 0xd678, 0xd679, 0xd67a, /*0x18-0x1f*/
- 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd680, 0xd681, 0xf6a5, 0xd682, /*0x20-0x27*/
- 0xd683, 0xd684, 0xd685, 0xd686, 0xd687, 0xd688, 0xd689, 0xd68a, /*0x28-0x2f*/
- 0xd68b, 0xd68c, 0xd68d, 0xd68e, 0xd68f, 0xd690, 0xd691, 0xd692, /*0x30-0x37*/
- 0xd693, 0xd694, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, /*0x38-0x3f*/
- 0xd69b, 0xd69c, 0xd69d, 0xd69e, 0xd69f, 0xd6a0, 0xd740, 0xd741, /*0x40-0x47*/
- 0xd742, 0xd743, 0xd744, 0xd745, 0xd746, 0xd747, 0xd748, 0xd749, /*0x48-0x4f*/
- 0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, 0xd750, 0xd751, /*0x50-0x57*/
- 0xd752, 0xd753, 0xd754, 0xd755, 0xd756, 0xd757, 0xd758, 0xd759, /*0x58-0x5f*/
- 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, 0xbeaf, 0xd760, /*0x60-0x67*/
- 0xd761, 0xd762, 0xd763, 0xd764, 0xc6a9, 0xd765, 0xd766, 0xd767, /*0x68-0x6f*/
- 0xd768, 0xd769, 0xd76a, 0xd76b, 0xd76c, 0xd76d, 0xd76e, 0xd76f, /*0x70-0x77*/
- 0xd770, 0xd771, 0xd772, 0xd773, 0xd774, 0xd775, 0xd776, 0xd777, /*0x78-0x7f*/
- 0xd778, 0xd779, 0xd77a, 0xd77b, 0xd77c, 0xd77d, 0xd77e, 0xd780, /*0x80-0x87*/
- 0xd781, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0xd788, /*0x88-0x8f*/
- 0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e, 0xd78f, 0xd790, /*0x90-0x97*/
- 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, 0xd798, /*0x98-0x9f*/
- 0xdaa5, 0xbcc6, 0xb6a9, 0xb8bc, 0xc8cf, 0xbca5, 0xdaa6, 0xdaa7, /*0xa0-0xa7*/
- 0xccd6, 0xc8c3, 0xdaa8, 0xc6fd, 0xd799, 0xd1b5, 0xd2e9, 0xd1b6, /*0xa8-0xaf*/
- 0xbcc7, 0xd79a, 0xbdb2, 0xbbe4, 0xdaa9, 0xdaaa, 0xd1c8, 0xdaab, /*0xb0-0xb7*/
- 0xd0ed, 0xb6ef, 0xc2db, 0xd79b, 0xcbcf, 0xb7ed, 0xc9e8, 0xb7c3, /*0xb8-0xbf*/
- 0xbef7, 0xd6a4, 0xdaac, 0xdaad, 0xc6c0, 0xd7e7, 0xcab6, 0xd79c, /*0xc0-0xc7*/
- 0xd5a9, 0xcbdf, 0xd5ef, 0xdaae, 0xd6df, 0xb4ca, 0xdab0, 0xdaaf, /*0xc8-0xcf*/
- 0xd79d, 0xd2eb, 0xdab1, 0xdab2, 0xdab3, 0xcad4, 0xdab4, 0xcaab, /*0xd0-0xd7*/
- 0xdab5, 0xdab6, 0xb3cf, 0xd6ef, 0xdab7, 0xbbb0, 0xb5ae, 0xdab8, /*0xd8-0xdf*/
- 0xdab9, 0xb9ee, 0xd1af, 0xd2e8, 0xdaba, 0xb8c3, 0xcfea, 0xb2ef, /*0xe0-0xe7*/
- 0xdabb, 0xdabc, 0xd79e, 0xbdeb, 0xcedc, 0xd3ef, 0xdabd, 0xcef3, /*0xe8-0xef*/
- 0xdabe, 0xd3d5, 0xbbe5, 0xdabf, 0xcbb5, 0xcbd0, 0xdac0, 0xc7eb, /*0xf0-0xf7*/
- 0xd6ee, 0xdac1, 0xc5b5, 0xb6c1, 0xdac2, 0xb7cc, 0xbfce, 0xdac3, /*0xf8-0xff*/
- /* 0x8c00 */
- 0xdac4, 0xcbad, 0xdac5, 0xb5f7, 0xdac6, 0xc1c2, 0xd7bb, 0xdac7, /*0x00-0x07*/
- 0xccb8, 0xd79f, 0xd2ea, 0xc4b1, 0xdac8, 0xb5fd, 0xbbd1, 0xdac9, /*0x08-0x0f*/
- 0xd0b3, 0xdaca, 0xdacb, 0xcebd, 0xdacc, 0xdacd, 0xdace, 0xb2f7, /*0x10-0x17*/
- 0xdad1, 0xdacf, 0xd1e8, 0xdad0, 0xc3d5, 0xdad2, 0xd7a0, 0xdad3, /*0x18-0x1f*/
- 0xdad4, 0xdad5, 0xd0bb, 0xd2a5, 0xb0f9, 0xdad6, 0xc7ab, 0xdad7, /*0x20-0x27*/
- 0xbdf7, 0xc3a1, 0xdad8, 0xdad9, 0xc3fd, 0xccb7, 0xdada, 0xdadb, /*0x28-0x2f*/
- 0xc0be, 0xc6d7, 0xdadc, 0xdadd, 0xc7b4, 0xdade, 0xdadf, 0xb9c8, /*0x30-0x37*/
- 0xd840, 0xd841, 0xd842, 0xd843, 0xd844, 0xd845, 0xd846, 0xd847, /*0x38-0x3f*/
- 0xd848, 0xbbed, 0xd849, 0xd84a, 0xd84b, 0xd84c, 0xb6b9, 0xf4f8, /*0x40-0x47*/
- 0xd84d, 0xf4f9, 0xd84e, 0xd84f, 0xcde3, 0xd850, 0xd851, 0xd852, /*0x48-0x4f*/
- 0xd853, 0xd854, 0xd855, 0xd856, 0xd857, 0xf5b9, 0xd858, 0xd859, /*0x50-0x57*/
- 0xd85a, 0xd85b, 0xebe0, 0xd85c, 0xd85d, 0xd85e, 0xd85f, 0xd860, /*0x58-0x5f*/
- 0xd861, 0xcff3, 0xbbbf, 0xd862, 0xd863, 0xd864, 0xd865, 0xd866, /*0x60-0x67*/
- 0xd867, 0xd868, 0xbac0, 0xd4a5, 0xd869, 0xd86a, 0xd86b, 0xd86c, /*0x68-0x6f*/
- 0xd86d, 0xd86e, 0xd86f, 0xe1d9, 0xd870, 0xd871, 0xd872, 0xd873, /*0x70-0x77*/
- 0xf5f4, 0xb1aa, 0xb2f2, 0xd874, 0xd875, 0xd876, 0xd877, 0xd878, /*0x78-0x7f*/
- 0xd879, 0xd87a, 0xf5f5, 0xd87b, 0xd87c, 0xf5f7, 0xd87d, 0xd87e, /*0x80-0x87*/
- 0xd880, 0xbad1, 0xf5f6, 0xd881, 0xc3b2, 0xd882, 0xd883, 0xd884, /*0x88-0x8f*/
- 0xd885, 0xd886, 0xd887, 0xd888, 0xf5f9, 0xd889, 0xd88a, 0xd88b, /*0x90-0x97*/
- 0xf5f8, 0xd88c, 0xd88d, 0xd88e, 0xd88f, 0xd890, 0xd891, 0xd892, /*0x98-0x9f*/
- 0xd893, 0xd894, 0xd895, 0xd896, 0xd897, 0xd898, 0xd899, 0xd89a, /*0xa0-0xa7*/
- 0xd89b, 0xd89c, 0xd89d, 0xd89e, 0xd89f, 0xd8a0, 0xd940, 0xd941, /*0xa8-0xaf*/
- 0xd942, 0xd943, 0xd944, 0xd945, 0xd946, 0xd947, 0xd948, 0xd949, /*0xb0-0xb7*/
- 0xd94a, 0xd94b, 0xd94c, 0xd94d, 0xd94e, 0xd94f, 0xd950, 0xd951, /*0xb8-0xbf*/
- 0xd952, 0xd953, 0xd954, 0xd955, 0xd956, 0xd957, 0xd958, 0xd959, /*0xc0-0xc7*/
- 0xd95a, 0xd95b, 0xd95c, 0xd95d, 0xd95e, 0xd95f, 0xd960, 0xd961, /*0xc8-0xcf*/
- 0xd962, 0xd963, 0xd964, 0xd965, 0xd966, 0xd967, 0xd968, 0xd969, /*0xd0-0xd7*/
- 0xd96a, 0xd96b, 0xd96c, 0xd96d, 0xd96e, 0xd96f, 0xd970, 0xd971, /*0xd8-0xdf*/
- 0xd972, 0xd973, 0xd974, 0xd975, 0xd976, 0xd977, 0xd978, 0xd979, /*0xe0-0xe7*/
- 0xd97a, 0xd97b, 0xd97c, 0xd97d, 0xd97e, 0xd980, 0xd981, 0xd982, /*0xe8-0xef*/
- 0xd983, 0xd984, 0xd985, 0xd986, 0xd987, 0xd988, 0xd989, 0xd98a, /*0xf0-0xf7*/
- 0xd98b, 0xd98c, 0xd98d, 0xd98e, 0xd98f, 0xd990, 0xd991, 0xd992, /*0xf8-0xff*/
- /* 0x8d00 */
- 0xd993, 0xd994, 0xd995, 0xd996, 0xd997, 0xd998, 0xd999, 0xd99a, /*0x00-0x07*/
- 0xd99b, 0xd99c, 0xd99d, 0xd99e, 0xd99f, 0xd9a0, 0xda40, 0xda41, /*0x08-0x0f*/
- 0xda42, 0xda43, 0xda44, 0xda45, 0xda46, 0xda47, 0xda48, 0xda49, /*0x10-0x17*/
- 0xda4a, 0xda4b, 0xda4c, 0xda4d, 0xda4e, 0xb1b4, 0xd5ea, 0xb8ba, /*0x18-0x1f*/
- 0xda4f, 0xb9b1, 0xb2c6, 0xd4f0, 0xcfcd, 0xb0dc, 0xd5cb, 0xbbf5, /*0x20-0x27*/
- 0xd6ca, 0xb7b7, 0xccb0, 0xc6b6, 0xb1e1, 0xb9ba, 0xd6fc, 0xb9e1, /*0x28-0x2f*/
- 0xb7a1, 0xbcfa, 0xeada, 0xeadb, 0xccf9, 0xb9f3, 0xeadc, 0xb4fb, /*0x30-0x37*/
- 0xc3b3, 0xb7d1, 0xbad8, 0xeadd, 0xd4f4, 0xeade, 0xbcd6, 0xbbdf, /*0x38-0x3f*/
- 0xeadf, 0xc1de, 0xc2b8, 0xd4df, 0xd7ca, 0xeae0, 0xeae1, 0xeae4, /*0x40-0x47*/
- 0xeae2, 0xeae3, 0xc9de, 0xb8b3, 0xb6c4, 0xeae5, 0xcaea, 0xc9cd, /*0x48-0x4f*/
- 0xb4cd, 0xda50, 0xda51, 0xe2d9, 0xc5e2, 0xeae6, 0xc0b5, 0xda52, /*0x50-0x57*/
- 0xd7b8, 0xeae7, 0xd7ac, 0xc8fc, 0xd8d3, 0xd8cd, 0xd4de, 0xda53, /*0x58-0x5f*/
- 0xd4f9, 0xc9c4, 0xd3ae, 0xb8d3, 0xb3e0, 0xda54, 0xc9e2, 0xf4f6, /*0x60-0x67*/
- 0xda55, 0xda56, 0xda57, 0xbad5, 0xda58, 0xf4f7, 0xda59, 0xda5a, /*0x68-0x6f*/
- 0xd7df, 0xda5b, 0xda5c, 0xf4f1, 0xb8b0, 0xd5d4, 0xb8cf, 0xc6f0, /*0x70-0x77*/
- 0xda5d, 0xda5e, 0xda5f, 0xda60, 0xda61, 0xda62, 0xda63, 0xda64, /*0x78-0x7f*/
- 0xda65, 0xb3c3, 0xda66, 0xda67, 0xf4f2, 0xb3ac, 0xda68, 0xda69, /*0x80-0x87*/
- 0xda6a, 0xda6b, 0xd4bd, 0xc7f7, 0xda6c, 0xda6d, 0xda6e, 0xda6f, /*0x88-0x8f*/
- 0xda70, 0xf4f4, 0xda71, 0xda72, 0xf4f3, 0xda73, 0xda74, 0xda75, /*0x90-0x97*/
- 0xda76, 0xda77, 0xda78, 0xda79, 0xda7a, 0xda7b, 0xda7c, 0xcccb, /*0x98-0x9f*/
- 0xda7d, 0xda7e, 0xda80, 0xc8a4, 0xda81, 0xda82, 0xda83, 0xda84, /*0xa0-0xa7*/
- 0xda85, 0xda86, 0xda87, 0xda88, 0xda89, 0xda8a, 0xda8b, 0xda8c, /*0xa8-0xaf*/
- 0xda8d, 0xf4f5, 0xda8e, 0xd7e3, 0xc5bf, 0xf5c0, 0xda8f, 0xda90, /*0xb0-0xb7*/
- 0xf5bb, 0xda91, 0xf5c3, 0xda92, 0xf5c2, 0xda93, 0xd6ba, 0xf5c1, /*0xb8-0xbf*/
- 0xda94, 0xda95, 0xda96, 0xd4be, 0xf5c4, 0xda97, 0xf5cc, 0xda98, /*0xc0-0xc7*/
- 0xda99, 0xda9a, 0xda9b, 0xb0cf, 0xb5f8, 0xda9c, 0xf5c9, 0xf5ca, /*0xc8-0xcf*/
- 0xda9d, 0xc5dc, 0xda9e, 0xda9f, 0xdaa0, 0xdb40, 0xf5c5, 0xf5c6, /*0xd0-0xd7*/
- 0xdb41, 0xdb42, 0xf5c7, 0xf5cb, 0xdb43, 0xbee0, 0xf5c8, 0xb8fa, /*0xd8-0xdf*/
- 0xdb44, 0xdb45, 0xdb46, 0xf5d0, 0xf5d3, 0xdb47, 0xdb48, 0xdb49, /*0xe0-0xe7*/
- 0xbfe7, 0xdb4a, 0xb9f2, 0xf5bc, 0xf5cd, 0xdb4b, 0xdb4c, 0xc2b7, /*0xe8-0xef*/
- 0xdb4d, 0xdb4e, 0xdb4f, 0xccf8, 0xdb50, 0xbcf9, 0xdb51, 0xf5ce, /*0xf0-0xf7*/
- 0xf5cf, 0xf5d1, 0xb6e5, 0xf5d2, 0xdb52, 0xf5d5, 0xdb53, 0xdb54, /*0xf8-0xff*/
- /* 0x8e00 */
- 0xdb55, 0xdb56, 0xdb57, 0xdb58, 0xdb59, 0xf5bd, 0xdb5a, 0xdb5b, /*0x00-0x07*/
- 0xdb5c, 0xf5d4, 0xd3bb, 0xdb5d, 0xb3ec, 0xdb5e, 0xdb5f, 0xcca4, /*0x08-0x0f*/
- 0xdb60, 0xdb61, 0xdb62, 0xdb63, 0xf5d6, 0xdb64, 0xdb65, 0xdb66, /*0x10-0x17*/
- 0xdb67, 0xdb68, 0xdb69, 0xdb6a, 0xdb6b, 0xf5d7, 0xbee1, 0xf5d8, /*0x18-0x1f*/
- 0xdb6c, 0xdb6d, 0xccdf, 0xf5db, 0xdb6e, 0xdb6f, 0xdb70, 0xdb71, /*0x20-0x27*/
- 0xdb72, 0xb2c8, 0xd7d9, 0xdb73, 0xf5d9, 0xdb74, 0xf5da, 0xf5dc, /*0x28-0x2f*/
- 0xdb75, 0xf5e2, 0xdb76, 0xdb77, 0xdb78, 0xf5e0, 0xdb79, 0xdb7a, /*0x30-0x37*/
- 0xdb7b, 0xf5df, 0xf5dd, 0xdb7c, 0xdb7d, 0xf5e1, 0xdb7e, 0xdb80, /*0x38-0x3f*/
- 0xf5de, 0xf5e4, 0xf5e5, 0xdb81, 0xcce3, 0xdb82, 0xdb83, 0xe5bf, /*0x40-0x47*/
- 0xb5b8, 0xf5e3, 0xf5e8, 0xcca3, 0xdb84, 0xdb85, 0xdb86, 0xdb87, /*0x48-0x4f*/
- 0xdb88, 0xf5e6, 0xf5e7, 0xdb89, 0xdb8a, 0xdb8b, 0xdb8c, 0xdb8d, /*0x50-0x57*/
- 0xdb8e, 0xf5be, 0xdb8f, 0xdb90, 0xdb91, 0xdb92, 0xdb93, 0xdb94, /*0x58-0x5f*/
- 0xdb95, 0xdb96, 0xdb97, 0xdb98, 0xdb99, 0xdb9a, 0xb1c4, 0xdb9b, /*0x60-0x67*/
- 0xdb9c, 0xf5bf, 0xdb9d, 0xdb9e, 0xb5c5, 0xb2e4, 0xdb9f, 0xf5ec, /*0x68-0x6f*/
- 0xf5e9, 0xdba0, 0xb6d7, 0xdc40, 0xf5ed, 0xdc41, 0xf5ea, 0xdc42, /*0x70-0x77*/
- 0xdc43, 0xdc44, 0xdc45, 0xdc46, 0xf5eb, 0xdc47, 0xdc48, 0xb4da, /*0x78-0x7f*/
- 0xdc49, 0xd4ea, 0xdc4a, 0xdc4b, 0xdc4c, 0xf5ee, 0xdc4d, 0xb3f9, /*0x80-0x87*/
- 0xdc4e, 0xdc4f, 0xdc50, 0xdc51, 0xdc52, 0xdc53, 0xdc54, 0xf5ef, /*0x88-0x8f*/
- 0xf5f1, 0xdc55, 0xdc56, 0xdc57, 0xf5f0, 0xdc58, 0xdc59, 0xdc5a, /*0x90-0x97*/
- 0xdc5b, 0xdc5c, 0xdc5d, 0xdc5e, 0xf5f2, 0xdc5f, 0xf5f3, 0xdc60, /*0x98-0x9f*/
- 0xdc61, 0xdc62, 0xdc63, 0xdc64, 0xdc65, 0xdc66, 0xdc67, 0xdc68, /*0xa0-0xa7*/
- 0xdc69, 0xdc6a, 0xdc6b, 0xc9ed, 0xb9aa, 0xdc6c, 0xdc6d, 0xc7fb, /*0xa8-0xaf*/
- 0xdc6e, 0xdc6f, 0xb6e3, 0xdc70, 0xdc71, 0xdc72, 0xdc73, 0xdc74, /*0xb0-0xb7*/
- 0xdc75, 0xdc76, 0xccc9, 0xdc77, 0xdc78, 0xdc79, 0xdc7a, 0xdc7b, /*0xb8-0xbf*/
- 0xdc7c, 0xdc7d, 0xdc7e, 0xdc80, 0xdc81, 0xdc82, 0xdc83, 0xdc84, /*0xc0-0xc7*/
- 0xdc85, 0xdc86, 0xdc87, 0xdc88, 0xdc89, 0xdc8a, 0xeaa6, 0xdc8b, /*0xc8-0xcf*/
- 0xdc8c, 0xdc8d, 0xdc8e, 0xdc8f, 0xdc90, 0xdc91, 0xdc92, 0xdc93, /*0xd0-0xd7*/
- 0xdc94, 0xdc95, 0xdc96, 0xdc97, 0xdc98, 0xdc99, 0xdc9a, 0xdc9b, /*0xd8-0xdf*/
- 0xdc9c, 0xdc9d, 0xdc9e, 0xdc9f, 0xdca0, 0xdd40, 0xdd41, 0xdd42, /*0xe0-0xe7*/
- 0xdd43, 0xdd44, 0xdd45, 0xdd46, 0xdd47, 0xdd48, 0xdd49, 0xdd4a, /*0xe8-0xef*/
- 0xdd4b, 0xdd4c, 0xdd4d, 0xdd4e, 0xdd4f, 0xdd50, 0xdd51, 0xdd52, /*0xf0-0xf7*/
- 0xdd53, 0xdd54, 0xdd55, 0xdd56, 0xdd57, 0xdd58, 0xdd59, 0xdd5a, /*0xf8-0xff*/
- /* 0x8f00 */
- 0xdd5b, 0xdd5c, 0xdd5d, 0xdd5e, 0xdd5f, 0xdd60, 0xdd61, 0xdd62, /*0x00-0x07*/
- 0xdd63, 0xdd64, 0xdd65, 0xdd66, 0xdd67, 0xdd68, 0xdd69, 0xdd6a, /*0x08-0x0f*/
- 0xdd6b, 0xdd6c, 0xdd6d, 0xdd6e, 0xdd6f, 0xdd70, 0xdd71, 0xdd72, /*0x10-0x17*/
- 0xdd73, 0xdd74, 0xdd75, 0xdd76, 0xdd77, 0xdd78, 0xdd79, 0xdd7a, /*0x18-0x1f*/
- 0xdd7b, 0xdd7c, 0xdd7d, 0xdd7e, 0xdd80, 0xdd81, 0xdd82, 0xdd83, /*0x20-0x27*/
- 0xdd84, 0xdd85, 0xdd86, 0xdd87, 0xdd88, 0xdd89, 0xdd8a, 0xdd8b, /*0x28-0x2f*/
- 0xdd8c, 0xdd8d, 0xdd8e, 0xdd8f, 0xdd90, 0xdd91, 0xdd92, 0xdd93, /*0x30-0x37*/
- 0xdd94, 0xdd95, 0xdd96, 0xdd97, 0xdd98, 0xdd99, 0xdd9a, 0xdd9b, /*0x38-0x3f*/
- 0xdd9c, 0xdd9d, 0xdd9e, 0xdd9f, 0xdda0, 0xde40, 0xde41, 0xde42, /*0x40-0x47*/
- 0xde43, 0xde44, 0xde45, 0xde46, 0xde47, 0xde48, 0xde49, 0xde4a, /*0x48-0x4f*/
- 0xde4b, 0xde4c, 0xde4d, 0xde4e, 0xde4f, 0xde50, 0xde51, 0xde52, /*0x50-0x57*/
- 0xde53, 0xde54, 0xde55, 0xde56, 0xde57, 0xde58, 0xde59, 0xde5a, /*0x58-0x5f*/
- 0xde5b, 0xde5c, 0xde5d, 0xde5e, 0xde5f, 0xde60, 0xb3b5, 0xd4fe, /*0x60-0x67*/
- 0xb9ec, 0xd0f9, 0xde61, 0xe9ed, 0xd7aa, 0xe9ee, 0xc2d6, 0xc8ed, /*0x68-0x6f*/
- 0xbae4, 0xe9ef, 0xe9f0, 0xe9f1, 0xd6e1, 0xe9f2, 0xe9f3, 0xe9f5, /*0x70-0x77*/
- 0xe9f4, 0xe9f6, 0xe9f7, 0xc7e1, 0xe9f8, 0xd4d8, 0xe9f9, 0xbdce, /*0x78-0x7f*/
- 0xde62, 0xe9fa, 0xe9fb, 0xbdcf, 0xe9fc, 0xb8a8, 0xc1be, 0xe9fd, /*0x80-0x87*/
- 0xb1b2, 0xbbd4, 0xb9f5, 0xe9fe, 0xde63, 0xeaa1, 0xeaa2, 0xeaa3, /*0x88-0x8f*/
- 0xb7f8, 0xbcad, 0xde64, 0xcae4, 0xe0ce, 0xd4af, 0xcfbd, 0xd5b7, /*0x90-0x97*/
- 0xeaa4, 0xd5de, 0xeaa5, 0xd0c1, 0xb9bc, 0xde65, 0xb4c7, 0xb1d9, /*0x98-0x9f*/
- 0xde66, 0xde67, 0xde68, 0xc0b1, 0xde69, 0xde6a, 0xde6b, 0xde6c, /*0xa0-0xa7*/
- 0xb1e6, 0xb1e7, 0xde6d, 0xb1e8, 0xde6e, 0xde6f, 0xde70, 0xde71, /*0xa8-0xaf*/
- 0xb3bd, 0xc8e8, 0xde72, 0xde73, 0xde74, 0xde75, 0xe5c1, 0xde76, /*0xb0-0xb7*/
- 0xde77, 0xb1df, 0xde78, 0xde79, 0xde7a, 0xc1c9, 0xb4ef, 0xde7b, /*0xb8-0xbf*/
- 0xde7c, 0xc7a8, 0xd3d8, 0xde7d, 0xc6f9, 0xd1b8, 0xde7e, 0xb9fd, /*0xc0-0xc7*/
- 0xc2f5, 0xde80, 0xde81, 0xde82, 0xde83, 0xde84, 0xd3ad, 0xde85, /*0xc8-0xcf*/
- 0xd4cb, 0xbdfc, 0xde86, 0xe5c2, 0xb7b5, 0xe5c3, 0xde87, 0xde88, /*0xd0-0xd7*/
- 0xbbb9, 0xd5e2, 0xde89, 0xbdf8, 0xd4b6, 0xcea5, 0xc1ac, 0xb3d9, /*0xd8-0xdf*/
- 0xde8a, 0xde8b, 0xccf6, 0xde8c, 0xe5c6, 0xe5c4, 0xe5c8, 0xde8d, /*0xe0-0xe7*/
- 0xe5ca, 0xe5c7, 0xb5cf, 0xc6c8, 0xde8e, 0xb5fc, 0xe5c5, 0xde8f, /*0xe8-0xef*/
- 0xcaf6, 0xde90, 0xde91, 0xe5c9, 0xde92, 0xde93, 0xde94, 0xc3d4, /*0xf0-0xf7*/
- 0xb1c5, 0xbca3, 0xde95, 0xde96, 0xde97, 0xd7b7, 0xde98, 0xde99, /*0xf8-0xff*/
- /* 0x9000 */
- 0xcdcb, 0xcbcd, 0xcaca, 0xccd3, 0xe5cc, 0xe5cb, 0xc4e6, 0xde9a, /*0x00-0x07*/
- 0xde9b, 0xd1a1, 0xd1b7, 0xe5cd, 0xde9c, 0xe5d0, 0xde9d, 0xcdb8, /*0x08-0x0f*/
- 0xd6f0, 0xe5cf, 0xb5dd, 0xde9e, 0xcdbe, 0xde9f, 0xe5d1, 0xb6ba, /*0x10-0x17*/
- 0xdea0, 0xdf40, 0xcda8, 0xb9e4, 0xdf41, 0xcac5, 0xb3d1, 0xcbd9, /*0x18-0x1f*/
- 0xd4ec, 0xe5d2, 0xb7ea, 0xdf42, 0xdf43, 0xdf44, 0xe5ce, 0xdf45, /*0x20-0x27*/
- 0xdf46, 0xdf47, 0xdf48, 0xdf49, 0xdf4a, 0xe5d5, 0xb4fe, 0xe5d6, /*0x28-0x2f*/
- 0xdf4b, 0xdf4c, 0xdf4d, 0xdf4e, 0xdf4f, 0xe5d3, 0xe5d4, 0xdf50, /*0x30-0x37*/
- 0xd2dd, 0xdf51, 0xdf52, 0xc2df, 0xb1c6, 0xdf53, 0xd3e2, 0xdf54, /*0x38-0x3f*/
- 0xdf55, 0xb6dd, 0xcbec, 0xdf56, 0xe5d7, 0xdf57, 0xdf58, 0xd3f6, /*0x40-0x47*/
- 0xdf59, 0xdf5a, 0xdf5b, 0xdf5c, 0xdf5d, 0xb1e9, 0xdf5e, 0xb6f4, /*0x48-0x4f*/
- 0xe5da, 0xe5d8, 0xe5d9, 0xb5c0, 0xdf5f, 0xdf60, 0xdf61, 0xd2c5, /*0x50-0x57*/
- 0xe5dc, 0xdf62, 0xdf63, 0xe5de, 0xdf64, 0xdf65, 0xdf66, 0xdf67, /*0x58-0x5f*/
- 0xdf68, 0xdf69, 0xe5dd, 0xc7b2, 0xdf6a, 0xd2a3, 0xdf6b, 0xdf6c, /*0x60-0x67*/
- 0xe5db, 0xdf6d, 0xdf6e, 0xdf6f, 0xdf70, 0xd4e2, 0xd5da, 0xdf71, /*0x68-0x6f*/
- 0xdf72, 0xdf73, 0xdf74, 0xdf75, 0xe5e0, 0xd7f1, 0xdf76, 0xdf77, /*0x70-0x77*/
- 0xdf78, 0xdf79, 0xdf7a, 0xdf7b, 0xdf7c, 0xe5e1, 0xdf7d, 0xb1dc, /*0x78-0x7f*/
- 0xd1fb, 0xdf7e, 0xe5e2, 0xe5e4, 0xdf80, 0xdf81, 0xdf82, 0xdf83, /*0x80-0x87*/
- 0xe5e3, 0xdf84, 0xdf85, 0xe5e5, 0xdf86, 0xdf87, 0xdf88, 0xdf89, /*0x88-0x8f*/
- 0xdf8a, 0xd2d8, 0xdf8b, 0xb5cb, 0xdf8c, 0xe7df, 0xdf8d, 0xdaf5, /*0x90-0x97*/
- 0xdf8e, 0xdaf8, 0xdf8f, 0xdaf6, 0xdf90, 0xdaf7, 0xdf91, 0xdf92, /*0x98-0x9f*/
- 0xdf93, 0xdafa, 0xd0cf, 0xc4c7, 0xdf94, 0xdf95, 0xb0ee, 0xdf96, /*0xa0-0xa7*/
- 0xdf97, 0xdf98, 0xd0b0, 0xdf99, 0xdaf9, 0xdf9a, 0xd3ca, 0xbaaa, /*0xa8-0xaf*/
- 0xdba2, 0xc7f1, 0xdf9b, 0xdafc, 0xdafb, 0xc9db, 0xdafd, 0xdf9c, /*0xb0-0xb7*/
- 0xdba1, 0xd7de, 0xdafe, 0xc1da, 0xdf9d, 0xdf9e, 0xdba5, 0xdf9f, /*0xb8-0xbf*/
- 0xdfa0, 0xd3f4, 0xe040, 0xe041, 0xdba7, 0xdba4, 0xe042, 0xdba8, /*0xc0-0xc7*/
- 0xe043, 0xe044, 0xbdbc, 0xe045, 0xe046, 0xe047, 0xc0c9, 0xdba3, /*0xc8-0xcf*/
- 0xdba6, 0xd6a3, 0xe048, 0xdba9, 0xe049, 0xe04a, 0xe04b, 0xdbad, /*0xd0-0xd7*/
- 0xe04c, 0xe04d, 0xe04e, 0xdbae, 0xdbac, 0xbac2, 0xe04f, 0xe050, /*0xd8-0xdf*/
- 0xe051, 0xbfa4, 0xdbab, 0xe052, 0xe053, 0xe054, 0xdbaa, 0xd4c7, /*0xe0-0xe7*/
- 0xb2bf, 0xe055, 0xe056, 0xdbaf, 0xe057, 0xb9f9, 0xe058, 0xdbb0, /*0xe8-0xef*/
- 0xe059, 0xe05a, 0xe05b, 0xe05c, 0xb3bb, 0xe05d, 0xe05e, 0xe05f, /*0xf0-0xf7*/
- 0xb5a6, 0xe060, 0xe061, 0xe062, 0xe063, 0xb6bc, 0xdbb1, 0xe064, /*0xf8-0xff*/
- /* 0x9100 */
- 0xe065, 0xe066, 0xb6f5, 0xe067, 0xdbb2, 0xe068, 0xe069, 0xe06a, /*0x00-0x07*/
- 0xe06b, 0xe06c, 0xe06d, 0xe06e, 0xe06f, 0xe070, 0xe071, 0xe072, /*0x08-0x0f*/
- 0xe073, 0xe074, 0xe075, 0xe076, 0xe077, 0xe078, 0xe079, 0xe07a, /*0x10-0x17*/
- 0xe07b, 0xb1c9, 0xe07c, 0xe07d, 0xe07e, 0xe080, 0xdbb4, 0xe081, /*0x18-0x1f*/
- 0xe082, 0xe083, 0xdbb3, 0xdbb5, 0xe084, 0xe085, 0xe086, 0xe087, /*0x20-0x27*/
- 0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xdbb7, /*0x28-0x2f*/
- 0xe08f, 0xdbb6, 0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095, /*0x30-0x37*/
- 0xe096, 0xdbb8, 0xe097, 0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c, /*0x38-0x3f*/
- 0xe09d, 0xe09e, 0xe09f, 0xdbb9, 0xe0a0, 0xe140, 0xdbba, 0xe141, /*0x40-0x47*/
- 0xe142, 0xd3cf, 0xf4fa, 0xc7f5, 0xd7c3, 0xc5e4, 0xf4fc, 0xf4fd, /*0x48-0x4f*/
- 0xf4fb, 0xe143, 0xbec6, 0xe144, 0xe145, 0xe146, 0xe147, 0xd0ef, /*0x50-0x57*/
- 0xe148, 0xe149, 0xb7d3, 0xe14a, 0xe14b, 0xd4cd, 0xccaa, 0xe14c, /*0x58-0x5f*/
- 0xe14d, 0xf5a2, 0xf5a1, 0xbaa8, 0xf4fe, 0xcbd6, 0xe14e, 0xe14f, /*0x60-0x67*/
- 0xe150, 0xf5a4, 0xc0d2, 0xe151, 0xb3ea, 0xe152, 0xcdaa, 0xf5a5, /*0x68-0x6f*/
- 0xf5a3, 0xbdb4, 0xf5a8, 0xe153, 0xf5a9, 0xbdcd, 0xc3b8, 0xbfe1, /*0x70-0x77*/
- 0xcbe1, 0xf5aa, 0xe154, 0xe155, 0xe156, 0xf5a6, 0xf5a7, 0xc4f0, /*0x78-0x7f*/
- 0xe157, 0xe158, 0xe159, 0xe15a, 0xe15b, 0xf5ac, 0xe15c, 0xb4bc, /*0x80-0x87*/
- 0xe15d, 0xd7ed, 0xe15e, 0xb4d7, 0xf5ab, 0xf5ae, 0xe15f, 0xe160, /*0x88-0x8f*/
- 0xf5ad, 0xf5af, 0xd0d1, 0xe161, 0xe162, 0xe163, 0xe164, 0xe165, /*0x90-0x97*/
- 0xe166, 0xe167, 0xc3d1, 0xc8a9, 0xe168, 0xe169, 0xe16a, 0xe16b, /*0x98-0x9f*/
- 0xe16c, 0xe16d, 0xf5b0, 0xf5b1, 0xe16e, 0xe16f, 0xe170, 0xe171, /*0xa0-0xa7*/
- 0xe172, 0xe173, 0xf5b2, 0xe174, 0xe175, 0xf5b3, 0xf5b4, 0xf5b5, /*0xa8-0xaf*/
- 0xe176, 0xe177, 0xe178, 0xe179, 0xf5b7, 0xf5b6, 0xe17a, 0xe17b, /*0xb0-0xb7*/
- 0xe17c, 0xe17d, 0xf5b8, 0xe17e, 0xe180, 0xe181, 0xe182, 0xe183, /*0xb8-0xbf*/
- 0xe184, 0xe185, 0xe186, 0xe187, 0xe188, 0xe189, 0xe18a, 0xb2c9, /*0xc0-0xc7*/
- 0xe18b, 0xd3d4, 0xcacd, 0xe18c, 0xc0ef, 0xd6d8, 0xd2b0, 0xc1bf, /*0xc8-0xcf*/
- 0xe18d, 0xbdf0, 0xe18e, 0xe18f, 0xe190, 0xe191, 0xe192, 0xe193, /*0xd0-0xd7*/
- 0xe194, 0xe195, 0xe196, 0xe197, 0xb8aa, 0xe198, 0xe199, 0xe19a, /*0xd8-0xdf*/
- 0xe19b, 0xe19c, 0xe19d, 0xe19e, 0xe19f, 0xe1a0, 0xe240, 0xe241, /*0xe0-0xe7*/
- 0xe242, 0xe243, 0xe244, 0xe245, 0xe246, 0xe247, 0xe248, 0xe249, /*0xe8-0xef*/
- 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f, 0xe250, 0xe251, /*0xf0-0xf7*/
- 0xe252, 0xe253, 0xe254, 0xe255, 0xe256, 0xe257, 0xe258, 0xe259, /*0xf8-0xff*/
- /* 0x9200 */
- 0xe25a, 0xe25b, 0xe25c, 0xe25d, 0xe25e, 0xe25f, 0xe260, 0xe261, /*0x00-0x07*/
- 0xe262, 0xe263, 0xe264, 0xe265, 0xe266, 0xe267, 0xe268, 0xe269, /*0x08-0x0f*/
- 0xe26a, 0xe26b, 0xe26c, 0xe26d, 0xe26e, 0xe26f, 0xe270, 0xe271, /*0x10-0x17*/
- 0xe272, 0xe273, 0xe274, 0xe275, 0xe276, 0xe277, 0xe278, 0xe279, /*0x18-0x1f*/
- 0xe27a, 0xe27b, 0xe27c, 0xe27d, 0xe27e, 0xe280, 0xe281, 0xe282, /*0x20-0x27*/
- 0xe283, 0xe284, 0xe285, 0xe286, 0xe287, 0xe288, 0xe289, 0xe28a, /*0x28-0x2f*/
- 0xe28b, 0xe28c, 0xe28d, 0xe28e, 0xe28f, 0xe290, 0xe291, 0xe292, /*0x30-0x37*/
- 0xe293, 0xe294, 0xe295, 0xe296, 0xe297, 0xe298, 0xe299, 0xe29a, /*0x38-0x3f*/
- 0xe29b, 0xe29c, 0xe29d, 0xe29e, 0xe29f, 0xe2a0, 0xe340, 0xe341, /*0x40-0x47*/
- 0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, 0xe348, 0xe349, /*0x48-0x4f*/
- 0xe34a, 0xe34b, 0xe34c, 0xe34d, 0xe34e, 0xe34f, 0xe350, 0xe351, /*0x50-0x57*/
- 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, 0xe358, 0xe359, /*0x58-0x5f*/
- 0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f, 0xe360, 0xe361, /*0x60-0x67*/
- 0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367, 0xe368, 0xe369, /*0x68-0x6f*/
- 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xbcf8, 0xe36e, 0xe36f, 0xe370, /*0x70-0x77*/
- 0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377, 0xe378, /*0x78-0x7f*/
- 0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe380, 0xe381, /*0x80-0x87*/
- 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, 0xf6c6, 0xe388, /*0x88-0x8f*/
- 0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f, 0xe390, /*0x90-0x97*/
- 0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397, 0xe398, /*0x98-0x9f*/
- 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, 0xe3a0, /*0xa0-0xa7*/
- 0xe440, 0xe441, 0xe442, 0xe443, 0xe444, 0xe445, 0xf6c7, 0xe446, /*0xa8-0xaf*/
- 0xe447, 0xe448, 0xe449, 0xe44a, 0xe44b, 0xe44c, 0xe44d, 0xe44e, /*0xb0-0xb7*/
- 0xe44f, 0xe450, 0xe451, 0xe452, 0xe453, 0xe454, 0xe455, 0xe456, /*0xb8-0xbf*/
- 0xe457, 0xe458, 0xe459, 0xe45a, 0xe45b, 0xe45c, 0xe45d, 0xe45e, /*0xc0-0xc7*/
- 0xf6c8, 0xe45f, 0xe460, 0xe461, 0xe462, 0xe463, 0xe464, 0xe465, /*0xc8-0xcf*/
- 0xe466, 0xe467, 0xe468, 0xe469, 0xe46a, 0xe46b, 0xe46c, 0xe46d, /*0xd0-0xd7*/
- 0xe46e, 0xe46f, 0xe470, 0xe471, 0xe472, 0xe473, 0xe474, 0xe475, /*0xd8-0xdf*/
- 0xe476, 0xe477, 0xe478, 0xe479, 0xe47a, 0xe47b, 0xe47c, 0xe47d, /*0xe0-0xe7*/
- 0xe47e, 0xe480, 0xe481, 0xe482, 0xe483, 0xe484, 0xe485, 0xe486, /*0xe8-0xef*/
- 0xe487, 0xe488, 0xe489, 0xe48a, 0xe48b, 0xe48c, 0xe48d, 0xe48e, /*0xf0-0xf7*/
- 0xe48f, 0xe490, 0xe491, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496, /*0xf8-0xff*/
- /* 0x9300 */
- 0xe497, 0xe498, 0xe499, 0xe49a, 0xe49b, 0xe49c, 0xe49d, 0xe49e, /*0x00-0x07*/
- 0xe49f, 0xe4a0, 0xe540, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545, /*0x08-0x0f*/
- 0xe546, 0xe547, 0xe548, 0xe549, 0xe54a, 0xe54b, 0xe54c, 0xe54d, /*0x10-0x17*/
- 0xe54e, 0xe54f, 0xe550, 0xe551, 0xe552, 0xe553, 0xe554, 0xe555, /*0x18-0x1f*/
- 0xe556, 0xe557, 0xe558, 0xe559, 0xe55a, 0xe55b, 0xe55c, 0xe55d, /*0x20-0x27*/
- 0xe55e, 0xe55f, 0xe560, 0xe561, 0xe562, 0xe563, 0xe564, 0xe565, /*0x28-0x2f*/
- 0xe566, 0xe567, 0xe568, 0xe569, 0xe56a, 0xe56b, 0xe56c, 0xe56d, /*0x30-0x37*/
- 0xe56e, 0xe56f, 0xe570, 0xe571, 0xe572, 0xe573, 0xf6c9, 0xe574, /*0x38-0x3f*/
- 0xe575, 0xe576, 0xe577, 0xe578, 0xe579, 0xe57a, 0xe57b, 0xe57c, /*0x40-0x47*/
- 0xe57d, 0xe57e, 0xe580, 0xe581, 0xe582, 0xe583, 0xe584, 0xe585, /*0x48-0x4f*/
- 0xe586, 0xe587, 0xe588, 0xe589, 0xe58a, 0xe58b, 0xe58c, 0xe58d, /*0x50-0x57*/
- 0xe58e, 0xe58f, 0xe590, 0xe591, 0xe592, 0xe593, 0xe594, 0xe595, /*0x58-0x5f*/
- 0xe596, 0xe597, 0xe598, 0xe599, 0xe59a, 0xe59b, 0xe59c, 0xe59d, /*0x60-0x67*/
- 0xe59e, 0xe59f, 0xf6ca, 0xe5a0, 0xe640, 0xe641, 0xe642, 0xe643, /*0x68-0x6f*/
- 0xe644, 0xe645, 0xe646, 0xe647, 0xe648, 0xe649, 0xe64a, 0xe64b, /*0x70-0x77*/
- 0xe64c, 0xe64d, 0xe64e, 0xe64f, 0xe650, 0xe651, 0xe652, 0xe653, /*0x78-0x7f*/
- 0xe654, 0xe655, 0xe656, 0xe657, 0xe658, 0xe659, 0xe65a, 0xe65b, /*0x80-0x87*/
- 0xe65c, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0xe661, 0xe662, 0xf6cc, /*0x88-0x8f*/
- 0xe663, 0xe664, 0xe665, 0xe666, 0xe667, 0xe668, 0xe669, 0xe66a, /*0x90-0x97*/
- 0xe66b, 0xe66c, 0xe66d, 0xe66e, 0xe66f, 0xe670, 0xe671, 0xe672, /*0x98-0x9f*/
- 0xe673, 0xe674, 0xe675, 0xe676, 0xe677, 0xe678, 0xe679, 0xe67a, /*0xa0-0xa7*/
- 0xe67b, 0xe67c, 0xe67d, 0xe67e, 0xe680, 0xe681, 0xe682, 0xe683, /*0xa8-0xaf*/
- 0xe684, 0xe685, 0xe686, 0xe687, 0xe688, 0xe689, 0xe68a, 0xe68b, /*0xb0-0xb7*/
- 0xe68c, 0xe68d, 0xe68e, 0xe68f, 0xe690, 0xe691, 0xe692, 0xe693, /*0xb8-0xbf*/
- 0xe694, 0xe695, 0xe696, 0xe697, 0xe698, 0xe699, 0xe69a, 0xe69b, /*0xc0-0xc7*/
- 0xe69c, 0xe69d, 0xf6cb, 0xe69e, 0xe69f, 0xe6a0, 0xe740, 0xe741, /*0xc8-0xcf*/
- 0xe742, 0xe743, 0xe744, 0xe745, 0xe746, 0xe747, 0xf7e9, 0xe748, /*0xd0-0xd7*/
- 0xe749, 0xe74a, 0xe74b, 0xe74c, 0xe74d, 0xe74e, 0xe74f, 0xe750, /*0xd8-0xdf*/
- 0xe751, 0xe752, 0xe753, 0xe754, 0xe755, 0xe756, 0xe757, 0xe758, /*0xe0-0xe7*/
- 0xe759, 0xe75a, 0xe75b, 0xe75c, 0xe75d, 0xe75e, 0xe75f, 0xe760, /*0xe8-0xef*/
- 0xe761, 0xe762, 0xe763, 0xe764, 0xe765, 0xe766, 0xe767, 0xe768, /*0xf0-0xf7*/
- 0xe769, 0xe76a, 0xe76b, 0xe76c, 0xe76d, 0xe76e, 0xe76f, 0xe770, /*0xf8-0xff*/
- /* 0x9400 */
- 0xe771, 0xe772, 0xe773, 0xe774, 0xe775, 0xe776, 0xe777, 0xe778, /*0x00-0x07*/
- 0xe779, 0xe77a, 0xe77b, 0xe77c, 0xe77d, 0xe77e, 0xe780, 0xe781, /*0x08-0x0f*/
- 0xe782, 0xe783, 0xe784, 0xe785, 0xe786, 0xe787, 0xe788, 0xe789, /*0x10-0x17*/
- 0xe78a, 0xe78b, 0xe78c, 0xe78d, 0xe78e, 0xe78f, 0xe790, 0xe791, /*0x18-0x1f*/
- 0xe792, 0xe793, 0xe794, 0xe795, 0xe796, 0xe797, 0xe798, 0xe799, /*0x20-0x27*/
- 0xe79a, 0xe79b, 0xe79c, 0xe79d, 0xe79e, 0xe79f, 0xe7a0, 0xe840, /*0x28-0x2f*/
- 0xe841, 0xe842, 0xe843, 0xe844, 0xe845, 0xe846, 0xe847, 0xe848, /*0x30-0x37*/
- 0xe849, 0xe84a, 0xe84b, 0xe84c, 0xe84d, 0xe84e, 0xf6cd, 0xe84f, /*0x38-0x3f*/
- 0xe850, 0xe851, 0xe852, 0xe853, 0xe854, 0xe855, 0xe856, 0xe857, /*0x40-0x47*/
- 0xe858, 0xe859, 0xe85a, 0xe85b, 0xe85c, 0xe85d, 0xe85e, 0xe85f, /*0x48-0x4f*/
- 0xe860, 0xe861, 0xe862, 0xe863, 0xe864, 0xe865, 0xe866, 0xe867, /*0x50-0x57*/
- 0xe868, 0xe869, 0xe86a, 0xe86b, 0xe86c, 0xe86d, 0xe86e, 0xe86f, /*0x58-0x5f*/
- 0xe870, 0xe871, 0xe872, 0xe873, 0xe874, 0xe875, 0xe876, 0xe877, /*0x60-0x67*/
- 0xe878, 0xe879, 0xe87a, 0xf6ce, 0xe87b, 0xe87c, 0xe87d, 0xe87e, /*0x68-0x6f*/
- 0xe880, 0xe881, 0xe882, 0xe883, 0xe884, 0xe885, 0xe886, 0xe887, /*0x70-0x77*/
- 0xe888, 0xe889, 0xe88a, 0xe88b, 0xe88c, 0xe88d, 0xe88e, 0xe88f, /*0x78-0x7f*/
- 0xe890, 0xe891, 0xe892, 0xe893, 0xe894, 0xeec4, 0xeec5, 0xeec6, /*0x80-0x87*/
- 0xd5eb, 0xb6a4, 0xeec8, 0xeec7, 0xeec9, 0xeeca, 0xc7a5, 0xeecb, /*0x88-0x8f*/
- 0xeecc, 0xe895, 0xb7b0, 0xb5f6, 0xeecd, 0xeecf, 0xe896, 0xeece, /*0x90-0x97*/
- 0xe897, 0xb8c6, 0xeed0, 0xeed1, 0xeed2, 0xb6db, 0xb3ae, 0xd6d3, /*0x98-0x9f*/
- 0xc4c6, 0xb1b5, 0xb8d6, 0xeed3, 0xeed4, 0xd4bf, 0xc7d5, 0xbefb, /*0xa0-0xa7*/
- 0xced9, 0xb9b3, 0xeed6, 0xeed5, 0xeed8, 0xeed7, 0xc5a5, 0xeed9, /*0xa8-0xaf*/
- 0xeeda, 0xc7ae, 0xeedb, 0xc7af, 0xeedc, 0xb2a7, 0xeedd, 0xeede, /*0xb0-0xb7*/
- 0xeedf, 0xeee0, 0xeee1, 0xd7ea, 0xeee2, 0xeee3, 0xbcd8, 0xeee4, /*0xb8-0xbf*/
- 0xd3cb, 0xccfa, 0xb2ac, 0xc1e5, 0xeee5, 0xc7a6, 0xc3ad, 0xe898, /*0xc0-0xc7*/
- 0xeee6, 0xeee7, 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xe899, /*0xc8-0xcf*/
- 0xeeed, 0xeeee, 0xeeef, 0xe89a, 0xe89b, 0xeef0, 0xeef1, 0xeef2, /*0xd0-0xd7*/
- 0xeef4, 0xeef3, 0xe89c, 0xeef5, 0xcdad, 0xc2c1, 0xeef6, 0xeef7, /*0xd8-0xdf*/
- 0xeef8, 0xd5a1, 0xeef9, 0xcfb3, 0xeefa, 0xeefb, 0xe89d, 0xeefc, /*0xe0-0xe7*/
- 0xeefd, 0xefa1, 0xeefe, 0xefa2, 0xb8f5, 0xc3fa, 0xefa3, 0xefa4, /*0xe8-0xef*/
- 0xbdc2, 0xd2bf, 0xb2f9, 0xefa5, 0xefa6, 0xefa7, 0xd2f8, 0xefa8, /*0xf0-0xf7*/
- 0xd6fd, 0xefa9, 0xc6cc, 0xe89e, 0xefaa, 0xefab, 0xc1b4, 0xefac, /*0xf8-0xff*/
- /* 0x9500 */
- 0xcffa, 0xcbf8, 0xefae, 0xefad, 0xb3fa, 0xb9f8, 0xefaf, 0xefb0, /*0x00-0x07*/
- 0xd0e2, 0xefb1, 0xefb2, 0xb7e6, 0xd0bf, 0xefb3, 0xefb4, 0xefb5, /*0x08-0x0f*/
- 0xc8f1, 0xcce0, 0xefb6, 0xefb7, 0xefb8, 0xefb9, 0xefba, 0xd5e0, /*0x10-0x17*/
- 0xefbb, 0xb4ed, 0xc3aa, 0xefbc, 0xe89f, 0xefbd, 0xefbe, 0xefbf, /*0x18-0x1f*/
- 0xe8a0, 0xcefd, 0xefc0, 0xc2e0, 0xb4b8, 0xd7b6, 0xbdf5, 0xe940, /*0x20-0x27*/
- 0xcfc7, 0xefc3, 0xefc1, 0xefc2, 0xefc4, 0xb6a7, 0xbcfc, 0xbee2, /*0x28-0x2f*/
- 0xc3cc, 0xefc5, 0xefc6, 0xe941, 0xefc7, 0xefcf, 0xefc8, 0xefc9, /*0x30-0x37*/
- 0xefca, 0xc7c2, 0xeff1, 0xb6cd, 0xefcb, 0xe942, 0xefcc, 0xefcd, /*0x38-0x3f*/
- 0xb6c6, 0xc3be, 0xefce, 0xe943, 0xefd0, 0xefd1, 0xefd2, 0xd5f2, /*0x40-0x47*/
- 0xe944, 0xefd3, 0xc4f7, 0xe945, 0xefd4, 0xc4f8, 0xefd5, 0xefd6, /*0x48-0x4f*/
- 0xb8e4, 0xb0f7, 0xefd7, 0xefd8, 0xefd9, 0xe946, 0xefda, 0xefdb, /*0x50-0x57*/
- 0xefdc, 0xefdd, 0xe947, 0xefde, 0xbeb5, 0xefe1, 0xefdf, 0xefe0, /*0x58-0x5f*/
- 0xe948, 0xefe2, 0xefe3, 0xc1cd, 0xefe4, 0xefe5, 0xefe6, 0xefe7, /*0x60-0x67*/
- 0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec, 0xc0d8, 0xe949, 0xefed, /*0x68-0x6f*/
- 0xc1ad, 0xefee, 0xefef, 0xeff0, 0xe94a, 0xe94b, 0xcfe2, 0xe94c, /*0x70-0x77*/
- 0xe94d, 0xe94e, 0xe94f, 0xe950, 0xe951, 0xe952, 0xe953, 0xb3a4, /*0x78-0x7f*/
- 0xe954, 0xe955, 0xe956, 0xe957, 0xe958, 0xe959, 0xe95a, 0xe95b, /*0x80-0x87*/
- 0xe95c, 0xe95d, 0xe95e, 0xe95f, 0xe960, 0xe961, 0xe962, 0xe963, /*0x88-0x8f*/
- 0xe964, 0xe965, 0xe966, 0xe967, 0xe968, 0xe969, 0xe96a, 0xe96b, /*0x90-0x97*/
- 0xe96c, 0xe96d, 0xe96e, 0xe96f, 0xe970, 0xe971, 0xe972, 0xe973, /*0x98-0x9f*/
- 0xe974, 0xe975, 0xe976, 0xe977, 0xe978, 0xe979, 0xe97a, 0xe97b, /*0xa0-0xa7*/
- 0xe97c, 0xe97d, 0xe97e, 0xe980, 0xe981, 0xe982, 0xe983, 0xe984, /*0xa8-0xaf*/
- 0xe985, 0xe986, 0xe987, 0xe988, 0xe989, 0xe98a, 0xe98b, 0xe98c, /*0xb0-0xb7*/
- 0xe98d, 0xe98e, 0xe98f, 0xe990, 0xe991, 0xe992, 0xe993, 0xe994, /*0xb8-0xbf*/
- 0xe995, 0xe996, 0xe997, 0xe998, 0xe999, 0xe99a, 0xe99b, 0xe99c, /*0xc0-0xc7*/
- 0xe99d, 0xe99e, 0xe99f, 0xe9a0, 0xea40, 0xea41, 0xea42, 0xea43, /*0xc8-0xcf*/
- 0xea44, 0xea45, 0xea46, 0xea47, 0xea48, 0xea49, 0xea4a, 0xea4b, /*0xd0-0xd7*/
- 0xea4c, 0xea4d, 0xea4e, 0xea4f, 0xea50, 0xea51, 0xea52, 0xea53, /*0xd8-0xdf*/
- 0xea54, 0xea55, 0xea56, 0xea57, 0xea58, 0xea59, 0xea5a, 0xea5b, /*0xe0-0xe7*/
- 0xc3c5, 0xe3c5, 0xc9c1, 0xe3c6, 0xea5c, 0xb1d5, 0xceca, 0xb4b3, /*0xe8-0xef*/
- 0xc8f2, 0xe3c7, 0xcfd0, 0xe3c8, 0xbce4, 0xe3c9, 0xe3ca, 0xc3c6, /*0xf0-0xf7*/
- 0xd5a2, 0xc4d6, 0xb9eb, 0xcec5, 0xe3cb, 0xc3f6, 0xe3cc, 0xea5d, /*0xf8-0xff*/
- /* 0x9600 */
- 0xb7a7, 0xb8f3, 0xbad2, 0xe3cd, 0xe3ce, 0xd4c4, 0xe3cf, 0xea5e, /*0x00-0x07*/
- 0xe3d0, 0xd1cb, 0xe3d1, 0xe3d2, 0xe3d3, 0xe3d4, 0xd1d6, 0xe3d5, /*0x08-0x0f*/
- 0xb2fb, 0xc0bb, 0xe3d6, 0xea5f, 0xc0ab, 0xe3d7, 0xe3d8, 0xe3d9, /*0x10-0x17*/
- 0xea60, 0xe3da, 0xe3db, 0xea61, 0xb8b7, 0xdae2, 0xea62, 0xb6d3, /*0x18-0x1f*/
- 0xea63, 0xdae4, 0xdae3, 0xea64, 0xea65, 0xea66, 0xea67, 0xea68, /*0x20-0x27*/
- 0xea69, 0xea6a, 0xdae6, 0xea6b, 0xea6c, 0xea6d, 0xc8ee, 0xea6e, /*0x28-0x2f*/
- 0xea6f, 0xdae5, 0xb7c0, 0xd1f4, 0xd2f5, 0xd5f3, 0xbdd7, 0xea70, /*0x30-0x37*/
- 0xea71, 0xea72, 0xea73, 0xd7e8, 0xdae8, 0xdae7, 0xea74, 0xb0a2, /*0x38-0x3f*/
- 0xcdd3, 0xea75, 0xdae9, 0xea76, 0xb8bd, 0xbcca, 0xc2bd, 0xc2a4, /*0x40-0x47*/
- 0xb3c2, 0xdaea, 0xea77, 0xc2aa, 0xc4b0, 0xbdb5, 0xea78, 0xea79, /*0x48-0x4f*/
- 0xcfde, 0xea7a, 0xea7b, 0xea7c, 0xdaeb, 0xc9c2, 0xea7d, 0xea7e, /*0x50-0x57*/
- 0xea80, 0xea81, 0xea82, 0xb1dd, 0xea83, 0xea84, 0xea85, 0xdaec, /*0x58-0x5f*/
- 0xea86, 0xb6b8, 0xd4ba, 0xea87, 0xb3fd, 0xea88, 0xea89, 0xdaed, /*0x60-0x67*/
- 0xd4c9, 0xcfd5, 0xc5e3, 0xea8a, 0xdaee, 0xea8b, 0xea8c, 0xea8d, /*0x68-0x6f*/
- 0xea8e, 0xea8f, 0xdaef, 0xea90, 0xdaf0, 0xc1ea, 0xccd5, 0xcfdd, /*0x70-0x77*/
- 0xea91, 0xea92, 0xea93, 0xea94, 0xea95, 0xea96, 0xea97, 0xea98, /*0x78-0x7f*/
- 0xea99, 0xea9a, 0xea9b, 0xea9c, 0xea9d, 0xd3e7, 0xc2a1, 0xea9e, /*0x80-0x87*/
- 0xdaf1, 0xea9f, 0xeaa0, 0xcbe5, 0xeb40, 0xdaf2, 0xeb41, 0xcbe6, /*0x88-0x8f*/
- 0xd2fe, 0xeb42, 0xeb43, 0xeb44, 0xb8f4, 0xeb45, 0xeb46, 0xdaf3, /*0x90-0x97*/
- 0xb0af, 0xcfb6, 0xeb47, 0xeb48, 0xd5cf, 0xeb49, 0xeb4a, 0xeb4b, /*0x98-0x9f*/
- 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, 0xeb50, 0xeb51, 0xeb52, 0xcbed, /*0xa0-0xa7*/
- 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, 0xeb58, 0xeb59, 0xeb5a, /*0xa8-0xaf*/
- 0xdaf4, 0xeb5b, 0xeb5c, 0xe3c4, 0xeb5d, 0xeb5e, 0xc1a5, 0xeb5f, /*0xb0-0xb7*/
- 0xeb60, 0xf6bf, 0xeb61, 0xeb62, 0xf6c0, 0xf6c1, 0xc4d1, 0xeb63, /*0xb8-0xbf*/
- 0xc8b8, 0xd1e3, 0xeb64, 0xeb65, 0xd0db, 0xd1c5, 0xbcaf, 0xb9cd, /*0xc0-0xc7*/
- 0xeb66, 0xeff4, 0xeb67, 0xeb68, 0xb4c6, 0xd3ba, 0xf6c2, 0xb3fb, /*0xc8-0xcf*/
- 0xeb69, 0xeb6a, 0xf6c3, 0xeb6b, 0xeb6c, 0xb5f1, 0xeb6d, 0xeb6e, /*0xd0-0xd7*/
- 0xeb6f, 0xeb70, 0xeb71, 0xeb72, 0xeb73, 0xeb74, 0xeb75, 0xeb76, /*0xd8-0xdf*/
- 0xf6c5, 0xeb77, 0xeb78, 0xeb79, 0xeb7a, 0xeb7b, 0xeb7c, 0xeb7d, /*0xe0-0xe7*/
- 0xd3ea, 0xf6a7, 0xd1a9, 0xeb7e, 0xeb80, 0xeb81, 0xeb82, 0xf6a9, /*0xe8-0xef*/
- 0xeb83, 0xeb84, 0xeb85, 0xf6a8, 0xeb86, 0xeb87, 0xc1e3, 0xc0d7, /*0xf0-0xf7*/
- 0xeb88, 0xb1a2, 0xeb89, 0xeb8a, 0xeb8b, 0xeb8c, 0xceed, 0xeb8d, /*0xf8-0xff*/
- /* 0x9700 */
- 0xd0e8, 0xf6ab, 0xeb8e, 0xeb8f, 0xcff6, 0xeb90, 0xf6aa, 0xd5f0, /*0x00-0x07*/
- 0xf6ac, 0xc3b9, 0xeb91, 0xeb92, 0xeb93, 0xbbf4, 0xf6ae, 0xf6ad, /*0x08-0x0f*/
- 0xeb94, 0xeb95, 0xeb96, 0xc4de, 0xeb97, 0xeb98, 0xc1d8, 0xeb99, /*0x10-0x17*/
- 0xeb9a, 0xeb9b, 0xeb9c, 0xeb9d, 0xcbaa, 0xeb9e, 0xcfbc, 0xeb9f, /*0x18-0x1f*/
- 0xeba0, 0xec40, 0xec41, 0xec42, 0xec43, 0xec44, 0xec45, 0xec46, /*0x20-0x27*/
- 0xec47, 0xec48, 0xf6af, 0xec49, 0xec4a, 0xf6b0, 0xec4b, 0xec4c, /*0x28-0x2f*/
- 0xf6b1, 0xec4d, 0xc2b6, 0xec4e, 0xec4f, 0xec50, 0xec51, 0xec52, /*0x30-0x37*/
- 0xb0d4, 0xc5f9, 0xec53, 0xec54, 0xec55, 0xec56, 0xf6b2, 0xec57, /*0x38-0x3f*/
- 0xec58, 0xec59, 0xec5a, 0xec5b, 0xec5c, 0xec5d, 0xec5e, 0xec5f, /*0x40-0x47*/
- 0xec60, 0xec61, 0xec62, 0xec63, 0xec64, 0xec65, 0xec66, 0xec67, /*0x48-0x4f*/
- 0xec68, 0xec69, 0xc7e0, 0xf6a6, 0xec6a, 0xec6b, 0xbeb8, 0xec6c, /*0x50-0x57*/
- 0xec6d, 0xbeb2, 0xec6e, 0xb5e5, 0xec6f, 0xec70, 0xb7c7, 0xec71, /*0x58-0x5f*/
- 0xbfbf, 0xc3d2, 0xc3e6, 0xec72, 0xec73, 0xd8cc, 0xec74, 0xec75, /*0x60-0x67*/
- 0xec76, 0xb8ef, 0xec77, 0xec78, 0xec79, 0xec7a, 0xec7b, 0xec7c, /*0x68-0x6f*/
- 0xec7d, 0xec7e, 0xec80, 0xbdf9, 0xd1a5, 0xec81, 0xb0d0, 0xec82, /*0x70-0x77*/
- 0xec83, 0xec84, 0xec85, 0xec86, 0xf7b0, 0xec87, 0xec88, 0xec89, /*0x78-0x7f*/
- 0xec8a, 0xec8b, 0xec8c, 0xec8d, 0xec8e, 0xf7b1, 0xec8f, 0xec90, /*0x80-0x87*/
- 0xec91, 0xec92, 0xec93, 0xd0ac, 0xec94, 0xb0b0, 0xec95, 0xec96, /*0x88-0x8f*/
- 0xec97, 0xf7b2, 0xf7b3, 0xec98, 0xf7b4, 0xec99, 0xec9a, 0xec9b, /*0x90-0x97*/
- 0xc7ca, 0xec9c, 0xec9d, 0xec9e, 0xec9f, 0xeca0, 0xed40, 0xed41, /*0x98-0x9f*/
- 0xbecf, 0xed42, 0xed43, 0xf7b7, 0xed44, 0xed45, 0xed46, 0xed47, /*0xa0-0xa7*/
- 0xed48, 0xed49, 0xed4a, 0xf7b6, 0xed4b, 0xb1de, 0xed4c, 0xf7b5, /*0xa8-0xaf*/
- 0xed4d, 0xed4e, 0xf7b8, 0xed4f, 0xf7b9, 0xed50, 0xed51, 0xed52, /*0xb0-0xb7*/
- 0xed53, 0xed54, 0xed55, 0xed56, 0xed57, 0xed58, 0xed59, 0xed5a, /*0xb8-0xbf*/
- 0xed5b, 0xed5c, 0xed5d, 0xed5e, 0xed5f, 0xed60, 0xed61, 0xed62, /*0xc0-0xc7*/
- 0xed63, 0xed64, 0xed65, 0xed66, 0xed67, 0xed68, 0xed69, 0xed6a, /*0xc8-0xcf*/
- 0xed6b, 0xed6c, 0xed6d, 0xed6e, 0xed6f, 0xed70, 0xed71, 0xed72, /*0xd0-0xd7*/
- 0xed73, 0xed74, 0xed75, 0xed76, 0xed77, 0xed78, 0xed79, 0xed7a, /*0xd8-0xdf*/
- 0xed7b, 0xed7c, 0xed7d, 0xed7e, 0xed80, 0xed81, 0xcea4, 0xc8cd, /*0xe0-0xe7*/
- 0xed82, 0xbaab, 0xe8b8, 0xe8b9, 0xe8ba, 0xbec2, 0xed83, 0xed84, /*0xe8-0xef*/
- 0xed85, 0xed86, 0xed87, 0xd2f4, 0xed88, 0xd4cf, 0xc9d8, 0xed89, /*0xf0-0xf7*/
- 0xed8a, 0xed8b, 0xed8c, 0xed8d, 0xed8e, 0xed8f, 0xed90, 0xed91, /*0xf8-0xff*/
- /* 0x9800 */
- 0xed92, 0xed93, 0xed94, 0xed95, 0xed96, 0xed97, 0xed98, 0xed99, /*0x00-0x07*/
- 0xed9a, 0xed9b, 0xed9c, 0xed9d, 0xed9e, 0xed9f, 0xeda0, 0xee40, /*0x08-0x0f*/
- 0xee41, 0xee42, 0xee43, 0xee44, 0xee45, 0xee46, 0xee47, 0xee48, /*0x10-0x17*/
- 0xee49, 0xee4a, 0xee4b, 0xee4c, 0xee4d, 0xee4e, 0xee4f, 0xee50, /*0x18-0x1f*/
- 0xee51, 0xee52, 0xee53, 0xee54, 0xee55, 0xee56, 0xee57, 0xee58, /*0x20-0x27*/
- 0xee59, 0xee5a, 0xee5b, 0xee5c, 0xee5d, 0xee5e, 0xee5f, 0xee60, /*0x28-0x2f*/
- 0xee61, 0xee62, 0xee63, 0xee64, 0xee65, 0xee66, 0xee67, 0xee68, /*0x30-0x37*/
- 0xee69, 0xee6a, 0xee6b, 0xee6c, 0xee6d, 0xee6e, 0xee6f, 0xee70, /*0x38-0x3f*/
- 0xee71, 0xee72, 0xee73, 0xee74, 0xee75, 0xee76, 0xee77, 0xee78, /*0x40-0x47*/
- 0xee79, 0xee7a, 0xee7b, 0xee7c, 0xee7d, 0xee7e, 0xee80, 0xee81, /*0x48-0x4f*/
- 0xee82, 0xee83, 0xee84, 0xee85, 0xee86, 0xee87, 0xee88, 0xee89, /*0x50-0x57*/
- 0xee8a, 0xee8b, 0xee8c, 0xee8d, 0xee8e, 0xee8f, 0xee90, 0xee91, /*0x58-0x5f*/
- 0xee92, 0xee93, 0xee94, 0xee95, 0xee96, 0xee97, 0xee98, 0xee99, /*0x60-0x67*/
- 0xee9a, 0xee9b, 0xee9c, 0xee9d, 0xee9e, 0xee9f, 0xeea0, 0xef40, /*0x68-0x6f*/
- 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xd2b3, 0xb6a5, 0xc7ea, /*0x70-0x77*/
- 0xf1fc, 0xcfee, 0xcbb3, 0xd0eb, 0xe7ef, 0xcde7, 0xb9cb, 0xb6d9, /*0x78-0x7f*/
- 0xf1fd, 0xb0e4, 0xcbcc, 0xf1fe, 0xd4a4, 0xc2ad, 0xc1ec, 0xc6c4, /*0x80-0x87*/
- 0xbeb1, 0xf2a1, 0xbcd5, 0xef46, 0xf2a2, 0xf2a3, 0xef47, 0xf2a4, /*0x88-0x8f*/
- 0xd2c3, 0xc6b5, 0xef48, 0xcdc7, 0xf2a5, 0xef49, 0xd3b1, 0xbfc5, /*0x90-0x97*/
- 0xcce2, 0xef4a, 0xf2a6, 0xf2a7, 0xd1d5, 0xb6ee, 0xf2a8, 0xf2a9, /*0x98-0x9f*/
- 0xb5df, 0xf2aa, 0xf2ab, 0xef4b, 0xb2fc, 0xf2ac, 0xf2ad, 0xc8a7, /*0xa0-0xa7*/
- 0xef4c, 0xef4d, 0xef4e, 0xef4f, 0xef50, 0xef51, 0xef52, 0xef53, /*0xa8-0xaf*/
- 0xef54, 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b, /*0xb0-0xb7*/
- 0xef5c, 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63, /*0xb8-0xbf*/
- 0xef64, 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b, /*0xc0-0xc7*/
- 0xef6c, 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xb7e7, 0xef72, /*0xc8-0xcf*/
- 0xef73, 0xeca9, 0xecaa, 0xecab, 0xef74, 0xecac, 0xef75, 0xef76, /*0xd0-0xd7*/
- 0xc6ae, 0xecad, 0xecae, 0xef77, 0xef78, 0xef79, 0xb7c9, 0xcab3, /*0xd8-0xdf*/
- 0xef7a, 0xef7b, 0xef7c, 0xef7d, 0xef7e, 0xef80, 0xef81, 0xe2b8, /*0xe0-0xe7*/
- 0xf7cf, 0xef82, 0xef83, 0xef84, 0xef85, 0xef86, 0xef87, 0xef88, /*0xe8-0xef*/
- 0xef89, 0xef8a, 0xef8b, 0xef8c, 0xef8d, 0xef8e, 0xef8f, 0xef90, /*0xf0-0xf7*/
- 0xef91, 0xef92, 0xef93, 0xef94, 0xef95, 0xef96, 0xef97, 0xef98, /*0xf8-0xff*/
- /* 0x9900 */
- 0xef99, 0xef9a, 0xef9b, 0xef9c, 0xef9d, 0xef9e, 0xef9f, 0xefa0, /*0x00-0x07*/
- 0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf7d0, 0xf045, 0xf046, /*0x08-0x0f*/
- 0xb2cd, 0xf047, 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, /*0x10-0x17*/
- 0xf04e, 0xf04f, 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, /*0x18-0x1f*/
- 0xf056, 0xf057, 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, /*0x20-0x27*/
- 0xf05e, 0xf05f, 0xf060, 0xf061, 0xf062, 0xf063, 0xf7d1, 0xf064, /*0x28-0x2f*/
- 0xf065, 0xf066, 0xf067, 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, /*0x30-0x37*/
- 0xf06d, 0xf06e, 0xf06f, 0xf070, 0xf071, 0xf072, 0xf073, 0xf074, /*0x38-0x3f*/
- 0xf075, 0xf076, 0xf077, 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, /*0x40-0x47*/
- 0xf07d, 0xf07e, 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, /*0x48-0x4f*/
- 0xf086, 0xf087, 0xf088, 0xf089, 0xf7d3, 0xf7d2, 0xf08a, 0xf08b, /*0x50-0x57*/
- 0xf08c, 0xf08d, 0xf08e, 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093, /*0x58-0x5f*/
- 0xf094, 0xf095, 0xf096, 0xe2bb, 0xf097, 0xbca2, 0xf098, 0xe2bc, /*0x60-0x67*/
- 0xe2bd, 0xe2be, 0xe2bf, 0xe2c0, 0xe2c1, 0xb7b9, 0xd2fb, 0xbda4, /*0x68-0x6f*/
- 0xcace, 0xb1a5, 0xcbc7, 0xf099, 0xe2c2, 0xb6fc, 0xc8c4, 0xe2c3, /*0x70-0x77*/
- 0xf09a, 0xf09b, 0xbdc8, 0xf09c, 0xb1fd, 0xe2c4, 0xf09d, 0xb6f6, /*0x78-0x7f*/
- 0xe2c5, 0xc4d9, 0xf09e, 0xf09f, 0xe2c6, 0xcfda, 0xb9dd, 0xe2c7, /*0x80-0x87*/
- 0xc0a1, 0xf0a0, 0xe2c8, 0xb2f6, 0xf140, 0xe2c9, 0xf141, 0xc1f3, /*0x88-0x8f*/
- 0xe2ca, 0xe2cb, 0xc2f8, 0xe2cc, 0xe2cd, 0xe2ce, 0xcad7, 0xd8b8, /*0x90-0x97*/
- 0xd9e5, 0xcfe3, 0xf142, 0xf143, 0xf144, 0xf145, 0xf146, 0xf147, /*0x98-0x9f*/
- 0xf148, 0xf149, 0xf14a, 0xf14b, 0xf14c, 0xf0a5, 0xf14d, 0xf14e, /*0xa0-0xa7*/
- 0xdcb0, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153, 0xf154, 0xf155, /*0xa8-0xaf*/
- 0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b, 0xf15c, 0xf15d, /*0xb0-0xb7*/
- 0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163, 0xf164, 0xf165, /*0xb8-0xbf*/
- 0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0xf16b, 0xf16c, 0xf16d, /*0xc0-0xc7*/
- 0xf16e, 0xf16f, 0xf170, 0xf171, 0xf172, 0xf173, 0xf174, 0xf175, /*0xc8-0xcf*/
- 0xf176, 0xf177, 0xf178, 0xf179, 0xf17a, 0xf17b, 0xf17c, 0xf17d, /*0xd0-0xd7*/
- 0xf17e, 0xf180, 0xf181, 0xf182, 0xf183, 0xf184, 0xf185, 0xf186, /*0xd8-0xdf*/
- 0xf187, 0xf188, 0xf189, 0xf18a, 0xf18b, 0xf18c, 0xf18d, 0xf18e, /*0xe0-0xe7*/
- 0xf18f, 0xf190, 0xf191, 0xf192, 0xf193, 0xf194, 0xf195, 0xf196, /*0xe8-0xef*/
- 0xf197, 0xf198, 0xf199, 0xf19a, 0xf19b, 0xf19c, 0xf19d, 0xf19e, /*0xf0-0xf7*/
- 0xf19f, 0xf1a0, 0xf240, 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, /*0xf8-0xff*/
- /* 0x9a00 */
- 0xf246, 0xf247, 0xf248, 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, /*0x00-0x07*/
- 0xf24e, 0xf24f, 0xf250, 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, /*0x08-0x0f*/
- 0xf256, 0xf257, 0xf258, 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, /*0x10-0x17*/
- 0xf25e, 0xf25f, 0xf260, 0xf261, 0xf262, 0xf263, 0xf264, 0xf265, /*0x18-0x1f*/
- 0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d, /*0x20-0x27*/
- 0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275, /*0x28-0x2f*/
- 0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d, /*0x30-0x37*/
- 0xf27e, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285, 0xf286, /*0x38-0x3f*/
- 0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d, 0xf28e, /*0x40-0x47*/
- 0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295, 0xf296, /*0x48-0x4f*/
- 0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d, 0xf29e, /*0x50-0x57*/
- 0xf29f, 0xf2a0, 0xf340, 0xf341, 0xf342, 0xf343, 0xf344, 0xf345, /*0x58-0x5f*/
- 0xf346, 0xf347, 0xf348, 0xf349, 0xf34a, 0xf34b, 0xf34c, 0xf34d, /*0x60-0x67*/
- 0xf34e, 0xf34f, 0xf350, 0xf351, 0xc2ed, 0xd4a6, 0xcdd4, 0xd1b1, /*0x68-0x6f*/
- 0xb3db, 0xc7fd, 0xf352, 0xb2b5, 0xc2bf, 0xe6e0, 0xcabb, 0xe6e1, /*0x70-0x77*/
- 0xe6e2, 0xbed4, 0xe6e3, 0xd7a4, 0xcdd5, 0xe6e5, 0xbcdd, 0xe6e4, /*0x78-0x7f*/
- 0xe6e6, 0xe6e7, 0xc2ee, 0xf353, 0xbdbe, 0xe6e8, 0xc2e6, 0xbaa7, /*0x80-0x87*/
- 0xe6e9, 0xf354, 0xe6ea, 0xb3d2, 0xd1e9, 0xf355, 0xf356, 0xbfa5, /*0x88-0x8f*/
- 0xe6eb, 0xc6ef, 0xe6ec, 0xe6ed, 0xf357, 0xf358, 0xe6ee, 0xc6ad, /*0x90-0x97*/
- 0xe6ef, 0xf359, 0xc9a7, 0xe6f0, 0xe6f1, 0xe6f2, 0xe5b9, 0xe6f3, /*0x98-0x9f*/
- 0xe6f4, 0xc2e2, 0xe6f5, 0xe6f6, 0xd6e8, 0xe6f7, 0xf35a, 0xe6f8, /*0xa0-0xa7*/
- 0xb9c7, 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360, 0xf361, /*0xa8-0xaf*/
- 0xf7bb, 0xf7ba, 0xf362, 0xf363, 0xf364, 0xf365, 0xf7be, 0xf7bc, /*0xb0-0xb7*/
- 0xbaa1, 0xf366, 0xf7bf, 0xf367, 0xf7c0, 0xf368, 0xf369, 0xf36a, /*0xb8-0xbf*/
- 0xf7c2, 0xf7c1, 0xf7c4, 0xf36b, 0xf36c, 0xf7c3, 0xf36d, 0xf36e, /*0xc0-0xc7*/
- 0xf36f, 0xf370, 0xf371, 0xf7c5, 0xf7c6, 0xf372, 0xf373, 0xf374, /*0xc8-0xcf*/
- 0xf375, 0xf7c7, 0xf376, 0xcbe8, 0xf377, 0xf378, 0xf379, 0xf37a, /*0xd0-0xd7*/
- 0xb8df, 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf380, 0xf381, 0xf7d4, /*0xd8-0xdf*/
- 0xf382, 0xf7d5, 0xf383, 0xf384, 0xf385, 0xf386, 0xf7d6, 0xf387, /*0xe0-0xe7*/
- 0xf388, 0xf389, 0xf38a, 0xf7d8, 0xf38b, 0xf7da, 0xf38c, 0xf7d7, /*0xe8-0xef*/
- 0xf38d, 0xf38e, 0xf38f, 0xf390, 0xf391, 0xf392, 0xf393, 0xf394, /*0xf0-0xf7*/
- 0xf395, 0xf7db, 0xf396, 0xf7d9, 0xf397, 0xf398, 0xf399, 0xf39a, /*0xf8-0xff*/
- /* 0x9b00 */
- 0xf39b, 0xf39c, 0xf39d, 0xd7d7, 0xf39e, 0xf39f, 0xf3a0, 0xf440, /*0x00-0x07*/
- 0xf7dc, 0xf441, 0xf442, 0xf443, 0xf444, 0xf445, 0xf446, 0xf7dd, /*0x08-0x0f*/
- 0xf447, 0xf448, 0xf449, 0xf7de, 0xf44a, 0xf44b, 0xf44c, 0xf44d, /*0x10-0x17*/
- 0xf44e, 0xf44f, 0xf450, 0xf451, 0xf452, 0xf453, 0xf454, 0xf7df, /*0x18-0x1f*/
- 0xf455, 0xf456, 0xf457, 0xf7e0, 0xf458, 0xf459, 0xf45a, 0xf45b, /*0x20-0x27*/
- 0xf45c, 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xdbcb, /*0x28-0x2f*/
- 0xf463, 0xf464, 0xd8aa, 0xf465, 0xf466, 0xf467, 0xf468, 0xf469, /*0x30-0x37*/
- 0xf46a, 0xf46b, 0xf46c, 0xe5f7, 0xb9ed, 0xf46d, 0xf46e, 0xf46f, /*0x38-0x3f*/
- 0xf470, 0xbffd, 0xbbea, 0xf7c9, 0xc6c7, 0xf7c8, 0xf471, 0xf7ca, /*0x40-0x47*/
- 0xf7cc, 0xf7cb, 0xf472, 0xf473, 0xf474, 0xf7cd, 0xf475, 0xceba, /*0x48-0x4f*/
- 0xf476, 0xf7ce, 0xf477, 0xf478, 0xc4a7, 0xf479, 0xf47a, 0xf47b, /*0x50-0x57*/
- 0xf47c, 0xf47d, 0xf47e, 0xf480, 0xf481, 0xf482, 0xf483, 0xf484, /*0x58-0x5f*/
- 0xf485, 0xf486, 0xf487, 0xf488, 0xf489, 0xf48a, 0xf48b, 0xf48c, /*0x60-0x67*/
- 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0xf492, 0xf493, 0xf494, /*0x68-0x6f*/
- 0xf495, 0xf496, 0xf497, 0xf498, 0xf499, 0xf49a, 0xf49b, 0xf49c, /*0x70-0x77*/
- 0xf49d, 0xf49e, 0xf49f, 0xf4a0, 0xf540, 0xf541, 0xf542, 0xf543, /*0x78-0x7f*/
- 0xf544, 0xf545, 0xf546, 0xf547, 0xf548, 0xf549, 0xf54a, 0xf54b, /*0x80-0x87*/
- 0xf54c, 0xf54d, 0xf54e, 0xf54f, 0xf550, 0xf551, 0xf552, 0xf553, /*0x88-0x8f*/
- 0xf554, 0xf555, 0xf556, 0xf557, 0xf558, 0xf559, 0xf55a, 0xf55b, /*0x90-0x97*/
- 0xf55c, 0xf55d, 0xf55e, 0xf55f, 0xf560, 0xf561, 0xf562, 0xf563, /*0x98-0x9f*/
- 0xf564, 0xf565, 0xf566, 0xf567, 0xf568, 0xf569, 0xf56a, 0xf56b, /*0xa0-0xa7*/
- 0xf56c, 0xf56d, 0xf56e, 0xf56f, 0xf570, 0xf571, 0xf572, 0xf573, /*0xa8-0xaf*/
- 0xf574, 0xf575, 0xf576, 0xf577, 0xf578, 0xf579, 0xf57a, 0xf57b, /*0xb0-0xb7*/
- 0xf57c, 0xf57d, 0xf57e, 0xf580, 0xf581, 0xf582, 0xf583, 0xf584, /*0xb8-0xbf*/
- 0xf585, 0xf586, 0xf587, 0xf588, 0xf589, 0xf58a, 0xf58b, 0xf58c, /*0xc0-0xc7*/
- 0xf58d, 0xf58e, 0xf58f, 0xf590, 0xf591, 0xf592, 0xf593, 0xf594, /*0xc8-0xcf*/
- 0xf595, 0xf596, 0xf597, 0xf598, 0xf599, 0xf59a, 0xf59b, 0xf59c, /*0xd0-0xd7*/
- 0xf59d, 0xf59e, 0xf59f, 0xf5a0, 0xf640, 0xf641, 0xf642, 0xf643, /*0xd8-0xdf*/
- 0xf644, 0xf645, 0xf646, 0xf647, 0xf648, 0xf649, 0xf64a, 0xf64b, /*0xe0-0xe7*/
- 0xf64c, 0xf64d, 0xf64e, 0xf64f, 0xf650, 0xf651, 0xf652, 0xf653, /*0xe8-0xef*/
- 0xf654, 0xf655, 0xf656, 0xf657, 0xf658, 0xf659, 0xf65a, 0xf65b, /*0xf0-0xf7*/
- 0xf65c, 0xf65d, 0xf65e, 0xf65f, 0xf660, 0xf661, 0xf662, 0xf663, /*0xf8-0xff*/
- /* 0x9c00 */
- 0xf664, 0xf665, 0xf666, 0xf667, 0xf668, 0xf669, 0xf66a, 0xf66b, /*0x00-0x07*/
- 0xf66c, 0xf66d, 0xf66e, 0xf66f, 0xf670, 0xf671, 0xf672, 0xf673, /*0x08-0x0f*/
- 0xf674, 0xf675, 0xf676, 0xf677, 0xf678, 0xf679, 0xf67a, 0xf67b, /*0x10-0x17*/
- 0xf67c, 0xf67d, 0xf67e, 0xf680, 0xf681, 0xf682, 0xf683, 0xf684, /*0x18-0x1f*/
- 0xf685, 0xf686, 0xf687, 0xf688, 0xf689, 0xf68a, 0xf68b, 0xf68c, /*0x20-0x27*/
- 0xf68d, 0xf68e, 0xf68f, 0xf690, 0xf691, 0xf692, 0xf693, 0xf694, /*0x28-0x2f*/
- 0xf695, 0xf696, 0xf697, 0xf698, 0xf699, 0xf69a, 0xf69b, 0xf69c, /*0x30-0x37*/
- 0xf69d, 0xf69e, 0xf69f, 0xf6a0, 0xf740, 0xf741, 0xf742, 0xf743, /*0x38-0x3f*/
- 0xf744, 0xf745, 0xf746, 0xf747, 0xf748, 0xf749, 0xf74a, 0xf74b, /*0x40-0x47*/
- 0xf74c, 0xf74d, 0xf74e, 0xf74f, 0xf750, 0xf751, 0xf752, 0xf753, /*0x48-0x4f*/
- 0xf754, 0xf755, 0xf756, 0xf757, 0xf758, 0xf759, 0xf75a, 0xf75b, /*0x50-0x57*/
- 0xf75c, 0xf75d, 0xf75e, 0xf75f, 0xf760, 0xf761, 0xf762, 0xf763, /*0x58-0x5f*/
- 0xf764, 0xf765, 0xf766, 0xf767, 0xf768, 0xf769, 0xf76a, 0xf76b, /*0x60-0x67*/
- 0xf76c, 0xf76d, 0xf76e, 0xf76f, 0xf770, 0xf771, 0xf772, 0xf773, /*0x68-0x6f*/
- 0xf774, 0xf775, 0xf776, 0xf777, 0xf778, 0xf779, 0xf77a, 0xf77b, /*0x70-0x77*/
- 0xf77c, 0xf77d, 0xf77e, 0xf780, 0xd3e3, 0xf781, 0xf782, 0xf6cf, /*0x78-0x7f*/
- 0xf783, 0xc2b3, 0xf6d0, 0xf784, 0xf785, 0xf6d1, 0xf6d2, 0xf6d3, /*0x80-0x87*/
- 0xf6d4, 0xf786, 0xf787, 0xf6d6, 0xf788, 0xb1ab, 0xf6d7, 0xf789, /*0x88-0x8f*/
- 0xf6d8, 0xf6d9, 0xf6da, 0xf78a, 0xf6db, 0xf6dc, 0xf78b, 0xf78c, /*0x90-0x97*/
- 0xf78d, 0xf78e, 0xf6dd, 0xf6de, 0xcfca, 0xf78f, 0xf6df, 0xf6e0, /*0x98-0x9f*/
- 0xf6e1, 0xf6e2, 0xf6e3, 0xf6e4, 0xc0f0, 0xf6e5, 0xf6e6, 0xf6e7, /*0xa0-0xa7*/
- 0xf6e8, 0xf6e9, 0xf790, 0xf6ea, 0xf791, 0xf6eb, 0xf6ec, 0xf792, /*0xa8-0xaf*/
- 0xf6ed, 0xf6ee, 0xf6ef, 0xf6f0, 0xf6f1, 0xf6f2, 0xf6f3, 0xf6f4, /*0xb0-0xb7*/
- 0xbea8, 0xf793, 0xf6f5, 0xf6f6, 0xf6f7, 0xf6f8, 0xf794, 0xf795, /*0xb8-0xbf*/
- 0xf796, 0xf797, 0xf798, 0xc8fa, 0xf6f9, 0xf6fa, 0xf6fb, 0xf6fc, /*0xc0-0xc7*/
- 0xf799, 0xf79a, 0xf6fd, 0xf6fe, 0xf7a1, 0xf7a2, 0xf7a3, 0xf7a4, /*0xc8-0xcf*/
- 0xf7a5, 0xf79b, 0xf79c, 0xf7a6, 0xf7a7, 0xf7a8, 0xb1ee, 0xf7a9, /*0xd0-0xd7*/
- 0xf7aa, 0xf7ab, 0xf79d, 0xf79e, 0xf7ac, 0xf7ad, 0xc1db, 0xf7ae, /*0xd8-0xdf*/
- 0xf79f, 0xf7a0, 0xf7af, 0xf840, 0xf841, 0xf842, 0xf843, 0xf844, /*0xe0-0xe7*/
- 0xf845, 0xf846, 0xf847, 0xf848, 0xf849, 0xf84a, 0xf84b, 0xf84c, /*0xe8-0xef*/
- 0xf84d, 0xf84e, 0xf84f, 0xf850, 0xf851, 0xf852, 0xf853, 0xf854, /*0xf0-0xf7*/
- 0xf855, 0xf856, 0xf857, 0xf858, 0xf859, 0xf85a, 0xf85b, 0xf85c, /*0xf8-0xff*/
- /* 0x9d00 */
- 0xf85d, 0xf85e, 0xf85f, 0xf860, 0xf861, 0xf862, 0xf863, 0xf864, /*0x00-0x07*/
- 0xf865, 0xf866, 0xf867, 0xf868, 0xf869, 0xf86a, 0xf86b, 0xf86c, /*0x08-0x0f*/
- 0xf86d, 0xf86e, 0xf86f, 0xf870, 0xf871, 0xf872, 0xf873, 0xf874, /*0x10-0x17*/
- 0xf875, 0xf876, 0xf877, 0xf878, 0xf879, 0xf87a, 0xf87b, 0xf87c, /*0x18-0x1f*/
- 0xf87d, 0xf87e, 0xf880, 0xf881, 0xf882, 0xf883, 0xf884, 0xf885, /*0x20-0x27*/
- 0xf886, 0xf887, 0xf888, 0xf889, 0xf88a, 0xf88b, 0xf88c, 0xf88d, /*0x28-0x2f*/
- 0xf88e, 0xf88f, 0xf890, 0xf891, 0xf892, 0xf893, 0xf894, 0xf895, /*0x30-0x37*/
- 0xf896, 0xf897, 0xf898, 0xf899, 0xf89a, 0xf89b, 0xf89c, 0xf89d, /*0x38-0x3f*/
- 0xf89e, 0xf89f, 0xf8a0, 0xf940, 0xf941, 0xf942, 0xf943, 0xf944, /*0x40-0x47*/
- 0xf945, 0xf946, 0xf947, 0xf948, 0xf949, 0xf94a, 0xf94b, 0xf94c, /*0x48-0x4f*/
- 0xf94d, 0xf94e, 0xf94f, 0xf950, 0xf951, 0xf952, 0xf953, 0xf954, /*0x50-0x57*/
- 0xf955, 0xf956, 0xf957, 0xf958, 0xf959, 0xf95a, 0xf95b, 0xf95c, /*0x58-0x5f*/
- 0xf95d, 0xf95e, 0xf95f, 0xf960, 0xf961, 0xf962, 0xf963, 0xf964, /*0x60-0x67*/
- 0xf965, 0xf966, 0xf967, 0xf968, 0xf969, 0xf96a, 0xf96b, 0xf96c, /*0x68-0x6f*/
- 0xf96d, 0xf96e, 0xf96f, 0xf970, 0xf971, 0xf972, 0xf973, 0xf974, /*0x70-0x77*/
- 0xf975, 0xf976, 0xf977, 0xf978, 0xf979, 0xf97a, 0xf97b, 0xf97c, /*0x78-0x7f*/
- 0xf97d, 0xf97e, 0xf980, 0xf981, 0xf982, 0xf983, 0xf984, 0xf985, /*0x80-0x87*/
- 0xf986, 0xf987, 0xf988, 0xf989, 0xf98a, 0xf98b, 0xf98c, 0xf98d, /*0x88-0x8f*/
- 0xf98e, 0xf98f, 0xf990, 0xf991, 0xf992, 0xf993, 0xf994, 0xf995, /*0x90-0x97*/
- 0xf996, 0xf997, 0xf998, 0xf999, 0xf99a, 0xf99b, 0xf99c, 0xf99d, /*0x98-0x9f*/
- 0xf99e, 0xf99f, 0xf9a0, 0xfa40, 0xfa41, 0xfa42, 0xfa43, 0xfa44, /*0xa0-0xa7*/
- 0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49, 0xfa4a, 0xfa4b, 0xfa4c, /*0xa8-0xaf*/
- 0xfa4d, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa52, 0xfa53, 0xfa54, /*0xb0-0xb7*/
- 0xfa55, 0xfa56, 0xfa57, 0xfa58, 0xfa59, 0xfa5a, 0xfa5b, 0xfa5c, /*0xb8-0xbf*/
- 0xfa5d, 0xfa5e, 0xfa5f, 0xfa60, 0xfa61, 0xfa62, 0xfa63, 0xfa64, /*0xc0-0xc7*/
- 0xfa65, 0xfa66, 0xfa67, 0xfa68, 0xfa69, 0xfa6a, 0xfa6b, 0xfa6c, /*0xc8-0xcf*/
- 0xfa6d, 0xfa6e, 0xfa6f, 0xfa70, 0xfa71, 0xfa72, 0xfa73, 0xfa74, /*0xd0-0xd7*/
- 0xfa75, 0xfa76, 0xfa77, 0xfa78, 0xfa79, 0xfa7a, 0xfa7b, 0xfa7c, /*0xd8-0xdf*/
- 0xfa7d, 0xfa7e, 0xfa80, 0xfa81, 0xfa82, 0xfa83, 0xfa84, 0xfa85, /*0xe0-0xe7*/
- 0xfa86, 0xfa87, 0xfa88, 0xfa89, 0xfa8a, 0xfa8b, 0xfa8c, 0xfa8d, /*0xe8-0xef*/
- 0xfa8e, 0xfa8f, 0xfa90, 0xfa91, 0xfa92, 0xfa93, 0xfa94, 0xfa95, /*0xf0-0xf7*/
- 0xfa96, 0xfa97, 0xfa98, 0xfa99, 0xfa9a, 0xfa9b, 0xfa9c, 0xfa9d, /*0xf8-0xff*/
- /* 0x9e00 */
- 0xfa9e, 0xfa9f, 0xfaa0, 0xfb40, 0xfb41, 0xfb42, 0xfb43, 0xfb44, /*0x00-0x07*/
- 0xfb45, 0xfb46, 0xfb47, 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, /*0x08-0x0f*/
- 0xfb4d, 0xfb4e, 0xfb4f, 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, /*0x10-0x17*/
- 0xfb55, 0xfb56, 0xfb57, 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xc4f1, /*0x18-0x1f*/
- 0xf0af, 0xbca6, 0xf0b0, 0xc3f9, 0xfb5c, 0xc5b8, 0xd1bb, 0xfb5d, /*0x20-0x27*/
- 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xd1bc, 0xfb5e, 0xd1ec, /*0x28-0x2f*/
- 0xfb5f, 0xf0b7, 0xf0b6, 0xd4a7, 0xfb60, 0xcdd2, 0xf0b8, 0xf0ba, /*0x30-0x37*/
- 0xf0b9, 0xf0bb, 0xf0bc, 0xfb61, 0xfb62, 0xb8eb, 0xf0bd, 0xbae8, /*0x38-0x3f*/
- 0xfb63, 0xf0be, 0xf0bf, 0xbee9, 0xf0c0, 0xb6ec, 0xf0c1, 0xf0c2, /*0x40-0x47*/
- 0xf0c3, 0xf0c4, 0xc8b5, 0xf0c5, 0xf0c6, 0xfb64, 0xf0c7, 0xc5f4, /*0x48-0x4f*/
- 0xfb65, 0xf0c8, 0xfb66, 0xfb67, 0xfb68, 0xf0c9, 0xfb69, 0xf0ca, /*0x50-0x57*/
- 0xf7bd, 0xfb6a, 0xf0cb, 0xf0cc, 0xf0cd, 0xfb6b, 0xf0ce, 0xfb6c, /*0x58-0x5f*/
- 0xfb6d, 0xfb6e, 0xfb6f, 0xf0cf, 0xbad7, 0xfb70, 0xf0d0, 0xf0d1, /*0x60-0x67*/
- 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d8, 0xfb71, 0xfb72, /*0x68-0x6f*/
- 0xd3a5, 0xf0d7, 0xfb73, 0xf0d9, 0xfb74, 0xfb75, 0xfb76, 0xfb77, /*0x70-0x77*/
- 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xf5ba, 0xc2b9, /*0x78-0x7f*/
- 0xfb7e, 0xfb80, 0xf7e4, 0xfb81, 0xfb82, 0xfb83, 0xfb84, 0xf7e5, /*0x80-0x87*/
- 0xf7e6, 0xfb85, 0xfb86, 0xf7e7, 0xfb87, 0xfb88, 0xfb89, 0xfb8a, /*0x88-0x8f*/
- 0xfb8b, 0xfb8c, 0xf7e8, 0xc2b4, 0xfb8d, 0xfb8e, 0xfb8f, 0xfb90, /*0x90-0x97*/
- 0xfb91, 0xfb92, 0xfb93, 0xfb94, 0xfb95, 0xf7ea, 0xfb96, 0xf7eb, /*0x98-0x9f*/
- 0xfb97, 0xfb98, 0xfb99, 0xfb9a, 0xfb9b, 0xfb9c, 0xc2f3, 0xfb9d, /*0xa0-0xa7*/
- 0xfb9e, 0xfb9f, 0xfba0, 0xfc40, 0xfc41, 0xfc42, 0xfc43, 0xfc44, /*0xa8-0xaf*/
- 0xfc45, 0xfc46, 0xfc47, 0xfc48, 0xf4f0, 0xfc49, 0xfc4a, 0xfc4b, /*0xb0-0xb7*/
- 0xf4ef, 0xfc4c, 0xfc4d, 0xc2e9, 0xfc4e, 0xf7e1, 0xf7e2, 0xfc4f, /*0xb8-0xbf*/
- 0xfc50, 0xfc51, 0xfc52, 0xfc53, 0xbbc6, 0xfc54, 0xfc55, 0xfc56, /*0xc0-0xc7*/
- 0xfc57, 0xd9e4, 0xfc58, 0xfc59, 0xfc5a, 0xcaf2, 0xc0e8, 0xf0a4, /*0xc8-0xcf*/
- 0xfc5b, 0xbada, 0xfc5c, 0xfc5d, 0xc7ad, 0xfc5e, 0xfc5f, 0xfc60, /*0xd0-0xd7*/
- 0xc4ac, 0xfc61, 0xfc62, 0xf7ec, 0xf7ed, 0xf7ee, 0xfc63, 0xf7f0, /*0xd8-0xdf*/
- 0xf7ef, 0xfc64, 0xf7f1, 0xfc65, 0xfc66, 0xf7f4, 0xfc67, 0xf7f3, /*0xe0-0xe7*/
- 0xfc68, 0xf7f2, 0xf7f5, 0xfc69, 0xfc6a, 0xfc6b, 0xfc6c, 0xf7f6, /*0xe8-0xef*/
- 0xfc6d, 0xfc6e, 0xfc6f, 0xfc70, 0xfc71, 0xfc72, 0xfc73, 0xfc74, /*0xf0-0xf7*/
- 0xfc75, 0xede9, 0xfc76, 0xedea, 0xedeb, 0xfc77, 0xf6bc, 0xfc78, /*0xf8-0xff*/
- /* 0x9f00 */
- 0xfc79, 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfc80, 0xfc81, /*0x00-0x07*/
- 0xfc82, 0xfc83, 0xfc84, 0xf6bd, 0xfc85, 0xf6be, 0xb6a6, 0xfc86, /*0x08-0x0f*/
- 0xd8be, 0xfc87, 0xfc88, 0xb9c4, 0xfc89, 0xfc8a, 0xfc8b, 0xd8bb, /*0x10-0x17*/
- 0xfc8c, 0xdcb1, 0xfc8d, 0xfc8e, 0xfc8f, 0xfc90, 0xfc91, 0xfc92, /*0x18-0x1f*/
- 0xcaf3, 0xfc93, 0xf7f7, 0xfc94, 0xfc95, 0xfc96, 0xfc97, 0xfc98, /*0x20-0x27*/
- 0xfc99, 0xfc9a, 0xfc9b, 0xfc9c, 0xf7f8, 0xfc9d, 0xfc9e, 0xf7f9, /*0x28-0x2f*/
- 0xfc9f, 0xfca0, 0xfd40, 0xfd41, 0xfd42, 0xfd43, 0xfd44, 0xf7fb, /*0x30-0x37*/
- 0xfd45, 0xf7fa, 0xfd46, 0xb1c7, 0xfd47, 0xf7fc, 0xf7fd, 0xfd48, /*0x38-0x3f*/
- 0xfd49, 0xfd4a, 0xfd4b, 0xfd4c, 0xf7fe, 0xfd4d, 0xfd4e, 0xfd4f, /*0x40-0x47*/
- 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54, 0xfd55, 0xfd56, 0xfd57, /*0x48-0x4f*/
- 0xc6eb, 0xecb4, 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c, 0xfd5d, /*0x50-0x57*/
- 0xfd5e, 0xfd5f, 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64, 0xfd65, /*0x58-0x5f*/
- 0xfd66, 0xfd67, 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c, 0xfd6d, /*0x60-0x67*/
- 0xfd6e, 0xfd6f, 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74, 0xfd75, /*0x68-0x6f*/
- 0xfd76, 0xfd77, 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c, 0xfd7d, /*0x70-0x77*/
- 0xfd7e, 0xfd80, 0xfd81, 0xfd82, 0xfd83, 0xfd84, 0xfd85, 0xb3dd, /*0x78-0x7f*/
- 0xf6b3, 0xfd86, 0xfd87, 0xf6b4, 0xc1e4, 0xf6b5, 0xf6b6, 0xf6b7, /*0x80-0x87*/
- 0xf6b8, 0xf6b9, 0xf6ba, 0xc8a3, 0xf6bb, 0xfd88, 0xfd89, 0xfd8a, /*0x88-0x8f*/
- 0xfd8b, 0xfd8c, 0xfd8d, 0xfd8e, 0xfd8f, 0xfd90, 0xfd91, 0xfd92, /*0x90-0x97*/
- 0xfd93, 0xc1fa, 0xb9a8, 0xede8, 0xfd94, 0xfd95, 0xfd96, 0xb9ea, /*0x98-0x9f*/
- 0xd9df, 0xfd97, 0xfd98, 0xfd99, 0xfd9a, 0xfd9b, 0x0000, 0x0000, /*0xa0-0xa7*/
-};
-static const unsigned short gbk_pagef9a[32] = {
- 0x0000, 0xfd9d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd9e, 0x0000, 0x0000, /*0x90-0x97*/
-};
-static const unsigned short gbk_pagef9b[24] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd9f, /*0xe0-0xe7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xe8-0xef*/
- 0x0000, 0xfda0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xf0-0xf7*/
-};
-static const unsigned short gbk_pagefa[40] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0xfe40, 0xfe41, 0xfe42, 0xfe43, /*0x08-0x0f*/
- 0x0000, 0xfe44, 0x0000, 0xfe45, 0xfe46, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
- 0xfe47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe48, /*0x18-0x1f*/
- 0xfe49, 0xfe4a, 0x0000, 0xfe4b, 0xfe4c, 0x0000, 0x0000, 0xfe4d, /*0x20-0x27*/
- 0xfe4e, 0xfe4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
-};
-static const unsigned short gbk_pagefe[64] = {
- 0xa955, 0xa6f2, 0x0000, 0xa6f4, 0xa6f5, 0xa6e0, 0xa6e1, 0xa6f0, /*0x30-0x37*/
- 0xa6f1, 0xa6e2, 0xa6e3, 0xa6ee, 0xa6ef, 0xa6e6, 0xa6e7, 0xa6e4, /*0x38-0x3f*/
- 0xa6e5, 0xa6e8, 0xa6e9, 0xa6ea, 0xa6eb, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
- 0x0000, 0xa968, 0xa969, 0xa96a, 0xa96b, 0xa96c, 0xa96d, 0xa96e, /*0x48-0x4f*/
- 0xa96f, 0xa970, 0xa971, 0x0000, 0xa972, 0xa973, 0xa974, 0xa975, /*0x50-0x57*/
- 0x0000, 0xa976, 0xa977, 0xa978, 0xa979, 0xa97a, 0xa97b, 0xa97c, /*0x58-0x5f*/
- 0xa97d, 0xa97e, 0xa980, 0xa981, 0xa982, 0xa983, 0xa984, 0x0000, /*0x60-0x67*/
- 0xa985, 0xa986, 0xa987, 0xa988, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
-};
-static const unsigned short gbk_pageffa[96] = {
- 0x0000, 0xa3a1, 0xa3a2, 0xa3a3, 0xa1e7, 0xa3a5, 0xa3a6, 0xa3a7, /*0x00-0x07*/
- 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, /*0x08-0x0f*/
- 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, /*0x10-0x17*/
- 0xa3b8, 0xa3b9, 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa3be, 0xa3bf, /*0x18-0x1f*/
- 0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7, /*0x20-0x27*/
- 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf, /*0x28-0x2f*/
- 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7, /*0x30-0x37*/
- 0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa3dc, 0xa3dd, 0xa3de, 0xa3df, /*0x38-0x3f*/
- 0xa3e0, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7, /*0x40-0x47*/
- 0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef, /*0x48-0x4f*/
- 0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7, /*0x50-0x57*/
- 0xa3f8, 0xa3f9, 0xa3fa, 0xa3fb, 0xa3fc, 0xa3fd, 0xa1ab, 0x0000, /*0x58-0x5f*/
-};
-static const unsigned short gbk_pageffb[8] = {
- 0xa1e9, 0xa1ea, 0xa956, 0xa3fe, 0xa957, 0xa3a4, 0x0000, 0x0000, /*0xe0-0xe7*/
-};
-
-static int
-gbk_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- unsigned short c = 0;
- if (wc >= 0x00a0 && wc < 0x0170)
- c = gbk_page00[wc-0x00a0];
- else if (wc >= 0x01c8 && wc < 0x01e0)
- c = gbk_page01[wc-0x01c8];
- else if (wc >= 0x0250 && wc < 0x0268)
- c = gbk_page02a[wc-0x0250];
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = gbk_page02b[wc-0x02c0];
- else if (wc >= 0x0390 && wc < 0x03d0)
- c = gbk_page03[wc-0x0390];
- else if (wc >= 0x0400 && wc < 0x0458)
- c = gbk_page04[wc-0x0400];
- else if (wc >= 0x2010 && wc < 0x2040)
- c = gbk_page20[wc-0x2010];
- else if (wc >= 0x2100 && wc < 0x21a0)
- c = gbk_page21[wc-0x2100];
- else if (wc >= 0x2208 && wc < 0x22c0)
- c = gbk_page22[wc-0x2208];
- else if (wc == 0x2312)
- c = 0xa1d0;
- else if (wc >= 0x2460 && wc < 0x24a0)
- c = gbk_page24[wc-0x2460];
- else if (wc >= 0x2500 && wc < 0x25e8)
- c = gbk_page25[wc-0x2500];
- else if (wc >= 0x2600 && wc < 0x2648)
- c = gbk_page26[wc-0x2600];
- else if (wc >= 0x3000 && wc < 0x3130)
- c = gbk_page30[wc-0x3000];
- else if (wc >= 0x3220 && wc < 0x3238)
- c = gbk_page32[wc-0x3220];
- else if (wc == 0x32a3)
- c = 0xa949;
- else if (wc >= 0x3388 && wc < 0x33d8)
- c = gbk_page33[wc-0x3388];
- else if (wc >= 0x4e00 && wc < 0x9fa8)
- c = gbk_page4e[wc-0x4e00];
- else if (wc == 0xf92c)
- c = 0xfd9c;
- else if (wc >= 0xf978 && wc < 0xf998)
- c = gbk_pagef9a[wc-0xf978];
- else if (wc >= 0xf9e0 && wc < 0xf9f8)
- c = gbk_pagef9b[wc-0xf9e0];
- else if (wc >= 0xfa08 && wc < 0xfa30)
- c = gbk_pagefa[wc-0xfa08];
- else if (wc >= 0xfe30 && wc < 0xfe70)
- c = gbk_pagefe[wc-0xfe30];
- else if (wc >= 0xff00 && wc < 0xff60)
- c = gbk_pageffa[wc-0xff00];
- else if (wc >= 0xffe0 && wc < 0xffe8)
- c = gbk_pageffb[wc-0xffe0];
- if (c != 0) {
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * GBK-0
+ */
+
+static const unsigned short gbk_2uni_page81[23766] = {
+ /* 0x81 */
+ 0x4e02, 0x4e04, 0x4e05, 0x4e06, 0x4e0f, 0x4e12, 0x4e17, 0x4e1f,
+ 0x4e20, 0x4e21, 0x4e23, 0x4e26, 0x4e29, 0x4e2e, 0x4e2f, 0x4e31,
+ 0x4e33, 0x4e35, 0x4e37, 0x4e3c, 0x4e40, 0x4e41, 0x4e42, 0x4e44,
+ 0x4e46, 0x4e4a, 0x4e51, 0x4e55, 0x4e57, 0x4e5a, 0x4e5b, 0x4e62,
+ 0x4e63, 0x4e64, 0x4e65, 0x4e67, 0x4e68, 0x4e6a, 0x4e6b, 0x4e6c,
+ 0x4e6d, 0x4e6e, 0x4e6f, 0x4e72, 0x4e74, 0x4e75, 0x4e76, 0x4e77,
+ 0x4e78, 0x4e79, 0x4e7a, 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7f, 0x4e80,
+ 0x4e81, 0x4e82, 0x4e83, 0x4e84, 0x4e85, 0x4e87, 0x4e8a, 0x4e90,
+ 0x4e96, 0x4e97, 0x4e99, 0x4e9c, 0x4e9d, 0x4e9e, 0x4ea3, 0x4eaa,
+ 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb4, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9,
+ 0x4ebc, 0x4ebd, 0x4ebe, 0x4ec8, 0x4ecc, 0x4ecf, 0x4ed0, 0x4ed2,
+ 0x4eda, 0x4edb, 0x4edc, 0x4ee0, 0x4ee2, 0x4ee6, 0x4ee7, 0x4ee9,
+ 0x4eed, 0x4eee, 0x4eef, 0x4ef1, 0x4ef4, 0x4ef8, 0x4ef9, 0x4efa,
+ 0x4efc, 0x4efe, 0x4f00, 0x4f02, 0x4f03, 0x4f04, 0x4f05, 0x4f06,
+ 0x4f07, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12, 0x4f13, 0x4f14, 0x4f15,
+ 0x4f16, 0x4f1c, 0x4f1d, 0x4f21, 0x4f23, 0x4f28, 0x4f29, 0x4f2c,
+ 0x4f2d, 0x4f2e, 0x4f31, 0x4f33, 0x4f35, 0x4f37, 0x4f39, 0x4f3b,
+ 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f44, 0x4f45, 0x4f47,
+ 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56,
+ 0x4f61, 0x4f62, 0x4f66, 0x4f68, 0x4f6a, 0x4f6b, 0x4f6d, 0x4f6e,
+ 0x4f71, 0x4f72, 0x4f75, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7d,
+ 0x4f80, 0x4f81, 0x4f82, 0x4f85, 0x4f86, 0x4f87, 0x4f8a, 0x4f8c,
+ 0x4f8e, 0x4f90, 0x4f92, 0x4f93, 0x4f95, 0x4f96, 0x4f98, 0x4f99,
+ 0x4f9a, 0x4f9c, 0x4f9e, 0x4f9f, 0x4fa1, 0x4fa2,
+ /* 0x82 */
+ 0x4fa4, 0x4fab, 0x4fad, 0x4fb0, 0x4fb1, 0x4fb2, 0x4fb3, 0x4fb4,
+ 0x4fb6, 0x4fb7, 0x4fb8, 0x4fb9, 0x4fba, 0x4fbb, 0x4fbc, 0x4fbd,
+ 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc2, 0x4fc6, 0x4fc7, 0x4fc8, 0x4fc9,
+ 0x4fcb, 0x4fcc, 0x4fcd, 0x4fd2, 0x4fd3, 0x4fd4, 0x4fd5, 0x4fd6,
+ 0x4fd9, 0x4fdb, 0x4fe0, 0x4fe2, 0x4fe4, 0x4fe5, 0x4fe7, 0x4feb,
+ 0x4fec, 0x4ff0, 0x4ff2, 0x4ff4, 0x4ff5, 0x4ff6, 0x4ff7, 0x4ff9,
+ 0x4ffb, 0x4ffc, 0x4ffd, 0x4fff, 0x5000, 0x5001, 0x5002, 0x5003,
+ 0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500a, 0x500b,
+ 0x500e, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017, 0x501b,
+ 0x501d, 0x501e, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502b,
+ 0x502f, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036,
+ 0x5037, 0x5038, 0x5039, 0x503b, 0x503d, 0x503f, 0x5040, 0x5041,
+ 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504a, 0x504b, 0x504d,
+ 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 0x5058,
+ 0x5059, 0x505b, 0x505d, 0x505e, 0x505f, 0x5060, 0x5061, 0x5062,
+ 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506a, 0x506b,
+ 0x506d, 0x506e, 0x506f, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074,
+ 0x5075, 0x5078, 0x5079, 0x507a, 0x507c, 0x507d, 0x5081, 0x5082,
+ 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508a, 0x508b, 0x508c,
+ 0x508e, 0x508f, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095,
+ 0x5096, 0x5097, 0x5098, 0x5099, 0x509a, 0x509b, 0x509c, 0x509d,
+ 0x509e, 0x509f, 0x50a0, 0x50a1, 0x50a2, 0x50a4, 0x50a6, 0x50aa,
+ 0x50ab, 0x50ad, 0x50ae, 0x50af, 0x50b0, 0x50b1, 0x50b3, 0x50b4,
+ 0x50b5, 0x50b6, 0x50b7, 0x50b8, 0x50b9, 0x50bc,
+ /* 0x83 */
+ 0x50bd, 0x50be, 0x50bf, 0x50c0, 0x50c1, 0x50c2, 0x50c3, 0x50c4,
+ 0x50c5, 0x50c6, 0x50c7, 0x50c8, 0x50c9, 0x50ca, 0x50cb, 0x50cc,
+ 0x50cd, 0x50ce, 0x50d0, 0x50d1, 0x50d2, 0x50d3, 0x50d4, 0x50d5,
+ 0x50d7, 0x50d8, 0x50d9, 0x50db, 0x50dc, 0x50dd, 0x50de, 0x50df,
+ 0x50e0, 0x50e1, 0x50e2, 0x50e3, 0x50e4, 0x50e5, 0x50e8, 0x50e9,
+ 0x50ea, 0x50eb, 0x50ef, 0x50f0, 0x50f1, 0x50f2, 0x50f4, 0x50f6,
+ 0x50f7, 0x50f8, 0x50f9, 0x50fa, 0x50fc, 0x50fd, 0x50fe, 0x50ff,
+ 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108, 0x5109,
+ 0x510a, 0x510c, 0x510d, 0x510e, 0x510f, 0x5110, 0x5111, 0x5113,
+ 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511a, 0x511b,
+ 0x511c, 0x511d, 0x511e, 0x511f, 0x5120, 0x5122, 0x5123, 0x5124,
+ 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512a, 0x512b, 0x512c,
+ 0x512d, 0x512e, 0x512f, 0x5130, 0x5131, 0x5132, 0x5133, 0x5134,
+ 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513a, 0x513b, 0x513c,
+ 0x513d, 0x513e, 0x5142, 0x5147, 0x514a, 0x514c, 0x514e, 0x514f,
+ 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515b, 0x515d,
+ 0x515e, 0x515f, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167,
+ 0x5169, 0x516a, 0x516f, 0x5172, 0x517a, 0x517e, 0x517f, 0x5183,
+ 0x5184, 0x5186, 0x5187, 0x518a, 0x518b, 0x518e, 0x518f, 0x5190,
+ 0x5191, 0x5193, 0x5194, 0x5198, 0x519a, 0x519d, 0x519e, 0x519f,
+ 0x51a1, 0x51a3, 0x51a6, 0x51a7, 0x51a8, 0x51a9, 0x51aa, 0x51ad,
+ 0x51ae, 0x51b4, 0x51b8, 0x51b9, 0x51ba, 0x51be, 0x51bf, 0x51c1,
+ 0x51c2, 0x51c3, 0x51c5, 0x51c8, 0x51ca, 0x51cd, 0x51ce, 0x51d0,
+ 0x51d2, 0x51d3, 0x51d4, 0x51d5, 0x51d6, 0x51d7,
+ /* 0x84 */
+ 0x51d8, 0x51d9, 0x51da, 0x51dc, 0x51de, 0x51df, 0x51e2, 0x51e3,
+ 0x51e5, 0x51e6, 0x51e7, 0x51e8, 0x51e9, 0x51ea, 0x51ec, 0x51ee,
+ 0x51f1, 0x51f2, 0x51f4, 0x51f7, 0x51fe, 0x5204, 0x5205, 0x5209,
+ 0x520b, 0x520c, 0x520f, 0x5210, 0x5213, 0x5214, 0x5215, 0x521c,
+ 0x521e, 0x521f, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227,
+ 0x522a, 0x522c, 0x522f, 0x5231, 0x5232, 0x5234, 0x5235, 0x523c,
+ 0x523e, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524b,
+ 0x524e, 0x524f, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258, 0x5259,
+ 0x525a, 0x525b, 0x525d, 0x525f, 0x5260, 0x5262, 0x5263, 0x5264,
+ 0x5266, 0x5268, 0x526b, 0x526c, 0x526d, 0x526e, 0x5270, 0x5271,
+ 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279, 0x527a,
+ 0x527b, 0x527c, 0x527e, 0x5280, 0x5283, 0x5284, 0x5285, 0x5286,
+ 0x5287, 0x5289, 0x528a, 0x528b, 0x528c, 0x528d, 0x528e, 0x528f,
+ 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298, 0x5299,
+ 0x529a, 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52ae, 0x52af,
+ 0x52b0, 0x52b4, 0x52b5, 0x52b6, 0x52b7, 0x52b8, 0x52b9, 0x52ba,
+ 0x52bb, 0x52bc, 0x52bd, 0x52c0, 0x52c1, 0x52c2, 0x52c4, 0x52c5,
+ 0x52c6, 0x52c8, 0x52ca, 0x52cc, 0x52cd, 0x52ce, 0x52cf, 0x52d1,
+ 0x52d3, 0x52d4, 0x52d5, 0x52d7, 0x52d9, 0x52da, 0x52db, 0x52dc,
+ 0x52dd, 0x52de, 0x52e0, 0x52e1, 0x52e2, 0x52e3, 0x52e5, 0x52e6,
+ 0x52e7, 0x52e8, 0x52e9, 0x52ea, 0x52eb, 0x52ec, 0x52ed, 0x52ee,
+ 0x52ef, 0x52f1, 0x52f2, 0x52f3, 0x52f4, 0x52f5, 0x52f6, 0x52f7,
+ 0x52f8, 0x52fb, 0x52fc, 0x52fd, 0x5301, 0x5302, 0x5303, 0x5304,
+ 0x5307, 0x5309, 0x530a, 0x530b, 0x530c, 0x530e,
+ /* 0x85 */
+ 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531b, 0x531c, 0x531e,
+ 0x531f, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b,
+ 0x532c, 0x532d, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
+ 0x5335, 0x5336, 0x5337, 0x5338, 0x533c, 0x533d, 0x5340, 0x5342,
+ 0x5344, 0x5346, 0x534b, 0x534c, 0x534d, 0x5350, 0x5354, 0x5358,
+ 0x5359, 0x535b, 0x535d, 0x5365, 0x5368, 0x536a, 0x536c, 0x536d,
+ 0x5372, 0x5376, 0x5379, 0x537b, 0x537c, 0x537d, 0x537e, 0x5380,
+ 0x5381, 0x5383, 0x5387, 0x5388, 0x538a, 0x538e, 0x538f, 0x5390,
+ 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399, 0x539b,
+ 0x539c, 0x539e, 0x53a0, 0x53a1, 0x53a4, 0x53a7, 0x53aa, 0x53ab,
+ 0x53ac, 0x53ad, 0x53af, 0x53b0, 0x53b1, 0x53b2, 0x53b3, 0x53b4,
+ 0x53b5, 0x53b7, 0x53b8, 0x53b9, 0x53ba, 0x53bc, 0x53bd, 0x53be,
+ 0x53c0, 0x53c3, 0x53c4, 0x53c5, 0x53c6, 0x53c7, 0x53ce, 0x53cf,
+ 0x53d0, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dc, 0x53dd, 0x53de,
+ 0x53e1, 0x53e2, 0x53e7, 0x53f4, 0x53fa, 0x53fe, 0x53ff, 0x5400,
+ 0x5402, 0x5405, 0x5407, 0x540b, 0x5414, 0x5418, 0x5419, 0x541a,
+ 0x541c, 0x5422, 0x5424, 0x5425, 0x542a, 0x5430, 0x5433, 0x5436,
+ 0x5437, 0x543a, 0x543d, 0x543f, 0x5441, 0x5442, 0x5444, 0x5445,
+ 0x5447, 0x5449, 0x544c, 0x544d, 0x544e, 0x544f, 0x5451, 0x545a,
+ 0x545d, 0x545e, 0x545f, 0x5460, 0x5461, 0x5463, 0x5465, 0x5467,
+ 0x5469, 0x546a, 0x546b, 0x546c, 0x546d, 0x546e, 0x546f, 0x5470,
+ 0x5474, 0x5479, 0x547a, 0x547e, 0x547f, 0x5481, 0x5483, 0x5485,
+ 0x5487, 0x5488, 0x5489, 0x548a, 0x548d, 0x5491, 0x5493, 0x5497,
+ 0x5498, 0x549c, 0x549e, 0x549f, 0x54a0, 0x54a1,
+ /* 0x86 */
+ 0x54a2, 0x54a5, 0x54ae, 0x54b0, 0x54b2, 0x54b5, 0x54b6, 0x54b7,
+ 0x54b9, 0x54ba, 0x54bc, 0x54be, 0x54c3, 0x54c5, 0x54ca, 0x54cb,
+ 0x54d6, 0x54d8, 0x54db, 0x54e0, 0x54e1, 0x54e2, 0x54e3, 0x54e4,
+ 0x54eb, 0x54ec, 0x54ef, 0x54f0, 0x54f1, 0x54f4, 0x54f5, 0x54f6,
+ 0x54f7, 0x54f8, 0x54f9, 0x54fb, 0x54fe, 0x5500, 0x5502, 0x5503,
+ 0x5504, 0x5505, 0x5508, 0x550a, 0x550b, 0x550c, 0x550d, 0x550e,
+ 0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551a,
+ 0x551c, 0x551d, 0x551e, 0x551f, 0x5521, 0x5525, 0x5526, 0x5528,
+ 0x5529, 0x552b, 0x552d, 0x5532, 0x5534, 0x5535, 0x5536, 0x5538,
+ 0x5539, 0x553a, 0x553b, 0x553d, 0x5540, 0x5542, 0x5545, 0x5547,
+ 0x5548, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5551, 0x5552,
+ 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555a, 0x555b, 0x555d,
+ 0x555e, 0x555f, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569, 0x556b,
+ 0x556f, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579, 0x557a,
+ 0x557d, 0x557f, 0x5585, 0x5586, 0x558c, 0x558d, 0x558e, 0x5590,
+ 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559a, 0x559b, 0x559e,
+ 0x55a0, 0x55a1, 0x55a2, 0x55a3, 0x55a4, 0x55a5, 0x55a6, 0x55a8,
+ 0x55a9, 0x55aa, 0x55ab, 0x55ac, 0x55ad, 0x55ae, 0x55af, 0x55b0,
+ 0x55b2, 0x55b4, 0x55b6, 0x55b8, 0x55ba, 0x55bc, 0x55bf, 0x55c0,
+ 0x55c1, 0x55c2, 0x55c3, 0x55c6, 0x55c7, 0x55c8, 0x55ca, 0x55cb,
+ 0x55ce, 0x55cf, 0x55d0, 0x55d5, 0x55d7, 0x55d8, 0x55d9, 0x55da,
+ 0x55db, 0x55de, 0x55e0, 0x55e2, 0x55e7, 0x55e9, 0x55ed, 0x55ee,
+ 0x55f0, 0x55f1, 0x55f4, 0x55f6, 0x55f8, 0x55f9, 0x55fa, 0x55fb,
+ 0x55fc, 0x55ff, 0x5602, 0x5603, 0x5604, 0x5605,
+ /* 0x87 */
+ 0x5606, 0x5607, 0x560a, 0x560b, 0x560d, 0x5610, 0x5611, 0x5612,
+ 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561a, 0x561c,
+ 0x561d, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629,
+ 0x562a, 0x562b, 0x562e, 0x562f, 0x5630, 0x5633, 0x5635, 0x5637,
+ 0x5638, 0x563a, 0x563c, 0x563d, 0x563e, 0x5640, 0x5641, 0x5642,
+ 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564a,
+ 0x564b, 0x564f, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656,
+ 0x565a, 0x565b, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0x5663,
+ 0x5665, 0x5666, 0x5667, 0x566d, 0x566e, 0x566f, 0x5670, 0x5672,
+ 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567a, 0x567d,
+ 0x567e, 0x567f, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5687,
+ 0x5688, 0x5689, 0x568a, 0x568b, 0x568c, 0x568d, 0x5690, 0x5691,
+ 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699, 0x569a,
+ 0x569b, 0x569c, 0x569d, 0x569e, 0x569f, 0x56a0, 0x56a1, 0x56a2,
+ 0x56a4, 0x56a5, 0x56a6, 0x56a7, 0x56a8, 0x56a9, 0x56aa, 0x56ab,
+ 0x56ac, 0x56ad, 0x56ae, 0x56b0, 0x56b1, 0x56b2, 0x56b3, 0x56b4,
+ 0x56b5, 0x56b6, 0x56b8, 0x56b9, 0x56ba, 0x56bb, 0x56bd, 0x56be,
+ 0x56bf, 0x56c0, 0x56c1, 0x56c2, 0x56c3, 0x56c4, 0x56c5, 0x56c6,
+ 0x56c7, 0x56c8, 0x56c9, 0x56cb, 0x56cc, 0x56cd, 0x56ce, 0x56cf,
+ 0x56d0, 0x56d1, 0x56d2, 0x56d3, 0x56d5, 0x56d6, 0x56d8, 0x56d9,
+ 0x56dc, 0x56e3, 0x56e5, 0x56e6, 0x56e7, 0x56e8, 0x56e9, 0x56ea,
+ 0x56ec, 0x56ee, 0x56ef, 0x56f2, 0x56f3, 0x56f6, 0x56f7, 0x56f8,
+ 0x56fb, 0x56fc, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707, 0x570b,
+ 0x570c, 0x570d, 0x570e, 0x570f, 0x5710, 0x5711,
+ /* 0x88 */
+ 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719,
+ 0x571a, 0x571b, 0x571d, 0x571e, 0x5720, 0x5721, 0x5722, 0x5724,
+ 0x5725, 0x5726, 0x5727, 0x572b, 0x5731, 0x5732, 0x5734, 0x5735,
+ 0x5736, 0x5737, 0x5738, 0x573c, 0x573d, 0x573f, 0x5741, 0x5743,
+ 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574b, 0x5752, 0x5753,
+ 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765,
+ 0x5767, 0x576c, 0x576e, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775,
+ 0x5778, 0x5779, 0x577a, 0x577d, 0x577e, 0x577f, 0x5780, 0x5781,
+ 0x5787, 0x5788, 0x5789, 0x578a, 0x578d, 0x578e, 0x578f, 0x5790,
+ 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, 0x579a,
+ 0x579c, 0x579d, 0x579e, 0x579f, 0x57a5, 0x57a8, 0x57aa, 0x57ac,
+ 0x57af, 0x57b0, 0x57b1, 0x57b3, 0x57b5, 0x57b6, 0x57b7, 0x57b9,
+ 0x57ba, 0x57bb, 0x57bc, 0x57bd, 0x57be, 0x57bf, 0x57c0, 0x57c1,
+ 0x57c4, 0x57c5, 0x57c6, 0x57c7, 0x57c8, 0x57c9, 0x57ca, 0x57cc,
+ 0x57cd, 0x57d0, 0x57d1, 0x57d3, 0x57d6, 0x57d7, 0x57db, 0x57dc,
+ 0x57de, 0x57e1, 0x57e2, 0x57e3, 0x57e5, 0x57e6, 0x57e7, 0x57e8,
+ 0x57e9, 0x57ea, 0x57eb, 0x57ec, 0x57ee, 0x57f0, 0x57f1, 0x57f2,
+ 0x57f3, 0x57f5, 0x57f6, 0x57f7, 0x57fb, 0x57fc, 0x57fe, 0x57ff,
+ 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580a, 0x580c,
+ 0x580e, 0x580f, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816, 0x5817,
+ 0x5818, 0x581a, 0x581b, 0x581c, 0x581d, 0x581f, 0x5822, 0x5823,
+ 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582b, 0x582c, 0x582d,
+ 0x582e, 0x582f, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836, 0x5837,
+ 0x5838, 0x5839, 0x583a, 0x583b, 0x583c, 0x583d,
+ /* 0x89 */
+ 0x583e, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846,
+ 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584e, 0x584f, 0x5850,
+ 0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585a, 0x585b,
+ 0x585c, 0x585d, 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864,
+ 0x5866, 0x5867, 0x5868, 0x5869, 0x586a, 0x586d, 0x586e, 0x586f,
+ 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877,
+ 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587f, 0x5882,
+ 0x5884, 0x5886, 0x5887, 0x5888, 0x588a, 0x588b, 0x588c, 0x588d,
+ 0x588e, 0x588f, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897,
+ 0x5898, 0x589b, 0x589c, 0x589d, 0x58a0, 0x58a1, 0x58a2, 0x58a3,
+ 0x58a4, 0x58a5, 0x58a6, 0x58a7, 0x58aa, 0x58ab, 0x58ac, 0x58ad,
+ 0x58ae, 0x58af, 0x58b0, 0x58b1, 0x58b2, 0x58b3, 0x58b4, 0x58b5,
+ 0x58b6, 0x58b7, 0x58b8, 0x58b9, 0x58ba, 0x58bb, 0x58bd, 0x58be,
+ 0x58bf, 0x58c0, 0x58c2, 0x58c3, 0x58c4, 0x58c6, 0x58c7, 0x58c8,
+ 0x58c9, 0x58ca, 0x58cb, 0x58cc, 0x58cd, 0x58ce, 0x58cf, 0x58d0,
+ 0x58d2, 0x58d3, 0x58d4, 0x58d6, 0x58d7, 0x58d8, 0x58d9, 0x58da,
+ 0x58db, 0x58dc, 0x58dd, 0x58de, 0x58df, 0x58e0, 0x58e1, 0x58e2,
+ 0x58e3, 0x58e5, 0x58e6, 0x58e7, 0x58e8, 0x58e9, 0x58ea, 0x58ed,
+ 0x58ef, 0x58f1, 0x58f2, 0x58f4, 0x58f5, 0x58f7, 0x58f8, 0x58fa,
+ 0x58fb, 0x58fc, 0x58fd, 0x58fe, 0x58ff, 0x5900, 0x5901, 0x5903,
+ 0x5905, 0x5906, 0x5908, 0x5909, 0x590a, 0x590b, 0x590c, 0x590e,
+ 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591b, 0x591d,
+ 0x591e, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928, 0x592c,
+ 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593b,
+ /* 0x8a */
+ 0x593d, 0x593e, 0x593f, 0x5940, 0x5943, 0x5945, 0x5946, 0x594a,
+ 0x594c, 0x594d, 0x5950, 0x5952, 0x5953, 0x5959, 0x595b, 0x595c,
+ 0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967,
+ 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f,
+ 0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597a, 0x597b, 0x597c,
+ 0x597e, 0x597f, 0x5980, 0x5985, 0x5989, 0x598b, 0x598c, 0x598e,
+ 0x598f, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599a, 0x599b,
+ 0x599c, 0x599d, 0x599f, 0x59a0, 0x59a1, 0x59a2, 0x59a6, 0x59a7,
+ 0x59ac, 0x59ad, 0x59b0, 0x59b1, 0x59b3, 0x59b4, 0x59b5, 0x59b6,
+ 0x59b7, 0x59b8, 0x59ba, 0x59bc, 0x59bd, 0x59bf, 0x59c0, 0x59c1,
+ 0x59c2, 0x59c3, 0x59c4, 0x59c5, 0x59c7, 0x59c8, 0x59c9, 0x59cc,
+ 0x59cd, 0x59ce, 0x59cf, 0x59d5, 0x59d6, 0x59d9, 0x59db, 0x59de,
+ 0x59df, 0x59e0, 0x59e1, 0x59e2, 0x59e4, 0x59e6, 0x59e7, 0x59e9,
+ 0x59ea, 0x59eb, 0x59ed, 0x59ee, 0x59ef, 0x59f0, 0x59f1, 0x59f2,
+ 0x59f3, 0x59f4, 0x59f5, 0x59f6, 0x59f7, 0x59f8, 0x59fa, 0x59fc,
+ 0x59fd, 0x59fe, 0x5a00, 0x5a02, 0x5a0a, 0x5a0b, 0x5a0d, 0x5a0e,
+ 0x5a0f, 0x5a10, 0x5a12, 0x5a14, 0x5a15, 0x5a16, 0x5a17, 0x5a19,
+ 0x5a1a, 0x5a1b, 0x5a1d, 0x5a1e, 0x5a21, 0x5a22, 0x5a24, 0x5a26,
+ 0x5a27, 0x5a28, 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f,
+ 0x5a30, 0x5a33, 0x5a35, 0x5a37, 0x5a38, 0x5a39, 0x5a3a, 0x5a3b,
+ 0x5a3d, 0x5a3e, 0x5a3f, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x5a45,
+ 0x5a47, 0x5a48, 0x5a4b, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, 0x5a50,
+ 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a56, 0x5a57, 0x5a58, 0x5a59,
+ 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60,
+ /* 0x8b */
+ 0x5a61, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a68, 0x5a69, 0x5a6b,
+ 0x5a6c, 0x5a6d, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71, 0x5a72, 0x5a73,
+ 0x5a78, 0x5a79, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5a80, 0x5a81,
+ 0x5a82, 0x5a83, 0x5a84, 0x5a85, 0x5a86, 0x5a87, 0x5a88, 0x5a89,
+ 0x5a8a, 0x5a8b, 0x5a8c, 0x5a8d, 0x5a8e, 0x5a8f, 0x5a90, 0x5a91,
+ 0x5a93, 0x5a94, 0x5a95, 0x5a96, 0x5a97, 0x5a98, 0x5a99, 0x5a9c,
+ 0x5a9d, 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa1, 0x5aa2, 0x5aa3, 0x5aa4,
+ 0x5aa5, 0x5aa6, 0x5aa7, 0x5aa8, 0x5aa9, 0x5aab, 0x5aac, 0x5aad,
+ 0x5aae, 0x5aaf, 0x5ab0, 0x5ab1, 0x5ab4, 0x5ab6, 0x5ab7, 0x5ab9,
+ 0x5aba, 0x5abb, 0x5abc, 0x5abd, 0x5abf, 0x5ac0, 0x5ac3, 0x5ac4,
+ 0x5ac5, 0x5ac6, 0x5ac7, 0x5ac8, 0x5aca, 0x5acb, 0x5acd, 0x5ace,
+ 0x5acf, 0x5ad0, 0x5ad1, 0x5ad3, 0x5ad5, 0x5ad7, 0x5ad9, 0x5ada,
+ 0x5adb, 0x5add, 0x5ade, 0x5adf, 0x5ae2, 0x5ae4, 0x5ae5, 0x5ae7,
+ 0x5ae8, 0x5aea, 0x5aec, 0x5aed, 0x5aee, 0x5aef, 0x5af0, 0x5af2,
+ 0x5af3, 0x5af4, 0x5af5, 0x5af6, 0x5af7, 0x5af8, 0x5af9, 0x5afa,
+ 0x5afb, 0x5afc, 0x5afd, 0x5afe, 0x5aff, 0x5b00, 0x5b01, 0x5b02,
+ 0x5b03, 0x5b04, 0x5b05, 0x5b06, 0x5b07, 0x5b08, 0x5b0a, 0x5b0b,
+ 0x5b0c, 0x5b0d, 0x5b0e, 0x5b0f, 0x5b10, 0x5b11, 0x5b12, 0x5b13,
+ 0x5b14, 0x5b15, 0x5b18, 0x5b19, 0x5b1a, 0x5b1b, 0x5b1c, 0x5b1d,
+ 0x5b1e, 0x5b1f, 0x5b20, 0x5b21, 0x5b22, 0x5b23, 0x5b24, 0x5b25,
+ 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b, 0x5b2c, 0x5b2d,
+ 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b33, 0x5b35, 0x5b36, 0x5b38,
+ 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, 0x5b41,
+ 0x5b42, 0x5b43, 0x5b44, 0x5b45, 0x5b46, 0x5b47,
+ /* 0x8c */
+ 0x5b48, 0x5b49, 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f,
+ 0x5b52, 0x5b56, 0x5b5e, 0x5b60, 0x5b61, 0x5b67, 0x5b68, 0x5b6b,
+ 0x5b6d, 0x5b6e, 0x5b6f, 0x5b72, 0x5b74, 0x5b76, 0x5b77, 0x5b78,
+ 0x5b79, 0x5b7b, 0x5b7c, 0x5b7e, 0x5b7f, 0x5b82, 0x5b86, 0x5b8a,
+ 0x5b8d, 0x5b8e, 0x5b90, 0x5b91, 0x5b92, 0x5b94, 0x5b96, 0x5b9f,
+ 0x5ba7, 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5bae, 0x5baf, 0x5bb1,
+ 0x5bb2, 0x5bb7, 0x5bba, 0x5bbb, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bc3,
+ 0x5bc8, 0x5bc9, 0x5bca, 0x5bcb, 0x5bcd, 0x5bce, 0x5bcf, 0x5bd1,
+ 0x5bd4, 0x5bd5, 0x5bd6, 0x5bd7, 0x5bd8, 0x5bd9, 0x5bda, 0x5bdb,
+ 0x5bdc, 0x5be0, 0x5be2, 0x5be3, 0x5be6, 0x5be7, 0x5be9, 0x5bea,
+ 0x5beb, 0x5bec, 0x5bed, 0x5bef, 0x5bf1, 0x5bf2, 0x5bf3, 0x5bf4,
+ 0x5bf5, 0x5bf6, 0x5bf7, 0x5bfd, 0x5bfe, 0x5c00, 0x5c02, 0x5c03,
+ 0x5c05, 0x5c07, 0x5c08, 0x5c0b, 0x5c0c, 0x5c0d, 0x5c0e, 0x5c10,
+ 0x5c12, 0x5c13, 0x5c17, 0x5c19, 0x5c1b, 0x5c1e, 0x5c1f, 0x5c20,
+ 0x5c21, 0x5c23, 0x5c26, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2d,
+ 0x5c2e, 0x5c2f, 0x5c30, 0x5c32, 0x5c33, 0x5c35, 0x5c36, 0x5c37,
+ 0x5c43, 0x5c44, 0x5c46, 0x5c47, 0x5c4c, 0x5c4d, 0x5c52, 0x5c53,
+ 0x5c54, 0x5c56, 0x5c57, 0x5c58, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d,
+ 0x5c5f, 0x5c62, 0x5c64, 0x5c67, 0x5c68, 0x5c69, 0x5c6a, 0x5c6b,
+ 0x5c6c, 0x5c6d, 0x5c70, 0x5c72, 0x5c73, 0x5c74, 0x5c75, 0x5c76,
+ 0x5c77, 0x5c78, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c7e, 0x5c80, 0x5c83,
+ 0x5c84, 0x5c85, 0x5c86, 0x5c87, 0x5c89, 0x5c8a, 0x5c8b, 0x5c8e,
+ 0x5c8f, 0x5c92, 0x5c93, 0x5c95, 0x5c9d, 0x5c9e, 0x5c9f, 0x5ca0,
+ 0x5ca1, 0x5ca4, 0x5ca5, 0x5ca6, 0x5ca7, 0x5ca8,
+ /* 0x8d */
+ 0x5caa, 0x5cae, 0x5caf, 0x5cb0, 0x5cb2, 0x5cb4, 0x5cb6, 0x5cb9,
+ 0x5cba, 0x5cbb, 0x5cbc, 0x5cbe, 0x5cc0, 0x5cc2, 0x5cc3, 0x5cc5,
+ 0x5cc6, 0x5cc7, 0x5cc8, 0x5cc9, 0x5cca, 0x5ccc, 0x5ccd, 0x5cce,
+ 0x5ccf, 0x5cd0, 0x5cd1, 0x5cd3, 0x5cd4, 0x5cd5, 0x5cd6, 0x5cd7,
+ 0x5cd8, 0x5cda, 0x5cdb, 0x5cdc, 0x5cdd, 0x5cde, 0x5cdf, 0x5ce0,
+ 0x5ce2, 0x5ce3, 0x5ce7, 0x5ce9, 0x5ceb, 0x5cec, 0x5cee, 0x5cef,
+ 0x5cf1, 0x5cf2, 0x5cf3, 0x5cf4, 0x5cf5, 0x5cf6, 0x5cf7, 0x5cf8,
+ 0x5cf9, 0x5cfa, 0x5cfc, 0x5cfd, 0x5cfe, 0x5cff, 0x5d00, 0x5d01,
+ 0x5d04, 0x5d05, 0x5d08, 0x5d09, 0x5d0a, 0x5d0b, 0x5d0c, 0x5d0d,
+ 0x5d0f, 0x5d10, 0x5d11, 0x5d12, 0x5d13, 0x5d15, 0x5d17, 0x5d18,
+ 0x5d19, 0x5d1a, 0x5d1c, 0x5d1d, 0x5d1f, 0x5d20, 0x5d21, 0x5d22,
+ 0x5d23, 0x5d25, 0x5d28, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2f, 0x5d30,
+ 0x5d31, 0x5d32, 0x5d33, 0x5d35, 0x5d36, 0x5d37, 0x5d38, 0x5d39,
+ 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3f, 0x5d40, 0x5d41, 0x5d42, 0x5d43,
+ 0x5d44, 0x5d45, 0x5d46, 0x5d48, 0x5d49, 0x5d4d, 0x5d4e, 0x5d4f,
+ 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57,
+ 0x5d59, 0x5d5a, 0x5d5c, 0x5d5e, 0x5d5f, 0x5d60, 0x5d61, 0x5d62,
+ 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67, 0x5d68, 0x5d6a, 0x5d6d,
+ 0x5d6e, 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d75, 0x5d76, 0x5d77,
+ 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5d7f,
+ 0x5d80, 0x5d81, 0x5d83, 0x5d84, 0x5d85, 0x5d86, 0x5d87, 0x5d88,
+ 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c, 0x5d8d, 0x5d8e, 0x5d8f, 0x5d90,
+ 0x5d91, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d96, 0x5d97, 0x5d98,
+ 0x5d9a, 0x5d9b, 0x5d9c, 0x5d9e, 0x5d9f, 0x5da0,
+ /* 0x8e */
+ 0x5da1, 0x5da2, 0x5da3, 0x5da4, 0x5da5, 0x5da6, 0x5da7, 0x5da8,
+ 0x5da9, 0x5daa, 0x5dab, 0x5dac, 0x5dad, 0x5dae, 0x5daf, 0x5db0,
+ 0x5db1, 0x5db2, 0x5db3, 0x5db4, 0x5db5, 0x5db6, 0x5db8, 0x5db9,
+ 0x5dba, 0x5dbb, 0x5dbc, 0x5dbd, 0x5dbe, 0x5dbf, 0x5dc0, 0x5dc1,
+ 0x5dc2, 0x5dc3, 0x5dc4, 0x5dc6, 0x5dc7, 0x5dc8, 0x5dc9, 0x5dca,
+ 0x5dcb, 0x5dcc, 0x5dce, 0x5dcf, 0x5dd0, 0x5dd1, 0x5dd2, 0x5dd3,
+ 0x5dd4, 0x5dd5, 0x5dd6, 0x5dd7, 0x5dd8, 0x5dd9, 0x5dda, 0x5ddc,
+ 0x5ddf, 0x5de0, 0x5de3, 0x5de4, 0x5dea, 0x5dec, 0x5ded, 0x5df0,
+ 0x5df5, 0x5df6, 0x5df8, 0x5df9, 0x5dfa, 0x5dfb, 0x5dfc, 0x5dff,
+ 0x5e00, 0x5e04, 0x5e07, 0x5e09, 0x5e0a, 0x5e0b, 0x5e0d, 0x5e0e,
+ 0x5e12, 0x5e13, 0x5e17, 0x5e1e, 0x5e1f, 0x5e20, 0x5e21, 0x5e22,
+ 0x5e23, 0x5e24, 0x5e25, 0x5e28, 0x5e29, 0x5e2a, 0x5e2b, 0x5e2c,
+ 0x5e2f, 0x5e30, 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e39,
+ 0x5e3a, 0x5e3e, 0x5e3f, 0x5e40, 0x5e41, 0x5e43, 0x5e46, 0x5e47,
+ 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4d, 0x5e4e, 0x5e4f, 0x5e50,
+ 0x5e51, 0x5e52, 0x5e53, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a,
+ 0x5e5c, 0x5e5d, 0x5e5f, 0x5e60, 0x5e63, 0x5e64, 0x5e65, 0x5e66,
+ 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e,
+ 0x5e6f, 0x5e70, 0x5e71, 0x5e75, 0x5e77, 0x5e79, 0x5e7e, 0x5e81,
+ 0x5e82, 0x5e83, 0x5e85, 0x5e88, 0x5e89, 0x5e8c, 0x5e8d, 0x5e8e,
+ 0x5e92, 0x5e98, 0x5e9b, 0x5e9d, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4,
+ 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac, 0x5eae, 0x5eaf, 0x5eb0,
+ 0x5eb1, 0x5eb2, 0x5eb4, 0x5eba, 0x5ebb, 0x5ebc, 0x5ebd, 0x5ebf,
+ 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4, 0x5ec5,
+ /* 0x8f */
+ 0x5ec6, 0x5ec7, 0x5ec8, 0x5ecb, 0x5ecc, 0x5ecd, 0x5ece, 0x5ecf,
+ 0x5ed0, 0x5ed4, 0x5ed5, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edc,
+ 0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4,
+ 0x5ee5, 0x5ee6, 0x5ee7, 0x5ee9, 0x5eeb, 0x5eec, 0x5eed, 0x5eee,
+ 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef5, 0x5ef8, 0x5ef9,
+ 0x5efb, 0x5efc, 0x5efd, 0x5f05, 0x5f06, 0x5f07, 0x5f09, 0x5f0c,
+ 0x5f0d, 0x5f0e, 0x5f10, 0x5f12, 0x5f14, 0x5f16, 0x5f19, 0x5f1a,
+ 0x5f1c, 0x5f1d, 0x5f1e, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f28,
+ 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f32, 0x5f33, 0x5f34, 0x5f35,
+ 0x5f36, 0x5f37, 0x5f38, 0x5f3b, 0x5f3d, 0x5f3e, 0x5f3f, 0x5f41,
+ 0x5f42, 0x5f43, 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49,
+ 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f51, 0x5f54,
+ 0x5f59, 0x5f5a, 0x5f5b, 0x5f5c, 0x5f5e, 0x5f5f, 0x5f60, 0x5f63,
+ 0x5f65, 0x5f67, 0x5f68, 0x5f6b, 0x5f6e, 0x5f6f, 0x5f72, 0x5f74,
+ 0x5f75, 0x5f76, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e, 0x5f7f, 0x5f83,
+ 0x5f86, 0x5f8d, 0x5f8e, 0x5f8f, 0x5f91, 0x5f93, 0x5f94, 0x5f96,
+ 0x5f9a, 0x5f9b, 0x5f9d, 0x5f9e, 0x5f9f, 0x5fa0, 0x5fa2, 0x5fa3,
+ 0x5fa4, 0x5fa5, 0x5fa6, 0x5fa7, 0x5fa9, 0x5fab, 0x5fac, 0x5faf,
+ 0x5fb0, 0x5fb1, 0x5fb2, 0x5fb3, 0x5fb4, 0x5fb6, 0x5fb8, 0x5fb9,
+ 0x5fba, 0x5fbb, 0x5fbe, 0x5fbf, 0x5fc0, 0x5fc1, 0x5fc2, 0x5fc7,
+ 0x5fc8, 0x5fca, 0x5fcb, 0x5fce, 0x5fd3, 0x5fd4, 0x5fd5, 0x5fda,
+ 0x5fdb, 0x5fdc, 0x5fde, 0x5fdf, 0x5fe2, 0x5fe3, 0x5fe5, 0x5fe6,
+ 0x5fe8, 0x5fe9, 0x5fec, 0x5fef, 0x5ff0, 0x5ff2, 0x5ff3, 0x5ff4,
+ 0x5ff6, 0x5ff7, 0x5ff9, 0x5ffa, 0x5ffc, 0x6007,
+ /* 0x90 */
+ 0x6008, 0x6009, 0x600b, 0x600c, 0x6010, 0x6011, 0x6013, 0x6017,
+ 0x6018, 0x601a, 0x601e, 0x601f, 0x6022, 0x6023, 0x6024, 0x602c,
+ 0x602d, 0x602e, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036,
+ 0x6037, 0x6038, 0x6039, 0x603a, 0x603d, 0x603e, 0x6040, 0x6044,
+ 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604c, 0x604e,
+ 0x604f, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605b,
+ 0x605c, 0x605e, 0x605f, 0x6060, 0x6061, 0x6065, 0x6066, 0x606e,
+ 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607e, 0x6080, 0x6081,
+ 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608a, 0x608b, 0x608e,
+ 0x608f, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098, 0x6099,
+ 0x609c, 0x609e, 0x60a1, 0x60a2, 0x60a4, 0x60a5, 0x60a7, 0x60a9,
+ 0x60aa, 0x60ae, 0x60b0, 0x60b3, 0x60b5, 0x60b6, 0x60b7, 0x60b9,
+ 0x60ba, 0x60bd, 0x60be, 0x60bf, 0x60c0, 0x60c1, 0x60c2, 0x60c3,
+ 0x60c4, 0x60c7, 0x60c8, 0x60c9, 0x60cc, 0x60cd, 0x60ce, 0x60cf,
+ 0x60d0, 0x60d2, 0x60d3, 0x60d4, 0x60d6, 0x60d7, 0x60d9, 0x60db,
+ 0x60de, 0x60e1, 0x60e2, 0x60e3, 0x60e4, 0x60e5, 0x60ea, 0x60f1,
+ 0x60f2, 0x60f5, 0x60f7, 0x60f8, 0x60fb, 0x60fc, 0x60fd, 0x60fe,
+ 0x60ff, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610a, 0x610b,
+ 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 0x6117,
+ 0x6118, 0x6119, 0x611b, 0x611c, 0x611d, 0x611e, 0x6121, 0x6122,
+ 0x6125, 0x6128, 0x6129, 0x612a, 0x612c, 0x612d, 0x612e, 0x612f,
+ 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137,
+ 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x6140,
+ 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146,
+ /* 0x91 */
+ 0x6147, 0x6149, 0x614b, 0x614d, 0x614f, 0x6150, 0x6152, 0x6153,
+ 0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615a, 0x615b, 0x615c,
+ 0x615e, 0x615f, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166,
+ 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f, 0x6171,
+ 0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617a, 0x617b,
+ 0x617c, 0x617d, 0x617e, 0x617f, 0x6180, 0x6181, 0x6182, 0x6183,
+ 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618a, 0x618c,
+ 0x618d, 0x618f, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0x6196,
+ 0x6197, 0x6198, 0x6199, 0x619a, 0x619b, 0x619c, 0x619e, 0x619f,
+ 0x61a0, 0x61a1, 0x61a2, 0x61a3, 0x61a4, 0x61a5, 0x61a6, 0x61aa,
+ 0x61ab, 0x61ad, 0x61ae, 0x61af, 0x61b0, 0x61b1, 0x61b2, 0x61b3,
+ 0x61b4, 0x61b5, 0x61b6, 0x61b8, 0x61b9, 0x61ba, 0x61bb, 0x61bc,
+ 0x61bd, 0x61bf, 0x61c0, 0x61c1, 0x61c3, 0x61c4, 0x61c5, 0x61c6,
+ 0x61c7, 0x61c9, 0x61cc, 0x61cd, 0x61ce, 0x61cf, 0x61d0, 0x61d3,
+ 0x61d5, 0x61d6, 0x61d7, 0x61d8, 0x61d9, 0x61da, 0x61db, 0x61dc,
+ 0x61dd, 0x61de, 0x61df, 0x61e0, 0x61e1, 0x61e2, 0x61e3, 0x61e4,
+ 0x61e5, 0x61e7, 0x61e8, 0x61e9, 0x61ea, 0x61eb, 0x61ec, 0x61ed,
+ 0x61ee, 0x61ef, 0x61f0, 0x61f1, 0x61f2, 0x61f3, 0x61f4, 0x61f6,
+ 0x61f7, 0x61f8, 0x61f9, 0x61fa, 0x61fb, 0x61fc, 0x61fd, 0x61fe,
+ 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207, 0x6209,
+ 0x6213, 0x6214, 0x6219, 0x621c, 0x621d, 0x621e, 0x6220, 0x6223,
+ 0x6226, 0x6227, 0x6228, 0x6229, 0x622b, 0x622d, 0x622f, 0x6230,
+ 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623a, 0x623b,
+ 0x623c, 0x6242, 0x6244, 0x6245, 0x6246, 0x624a,
+ /* 0x92 */
+ 0x624f, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625a, 0x625c,
+ 0x625d, 0x625e, 0x625f, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265,
+ 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627a,
+ 0x627b, 0x627d, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287,
+ 0x6288, 0x628b, 0x628c, 0x628d, 0x628e, 0x628f, 0x6290, 0x6294,
+ 0x6299, 0x629c, 0x629d, 0x629e, 0x62a3, 0x62a6, 0x62a7, 0x62a9,
+ 0x62aa, 0x62ad, 0x62ae, 0x62af, 0x62b0, 0x62b2, 0x62b3, 0x62b4,
+ 0x62b6, 0x62b7, 0x62b8, 0x62ba, 0x62be, 0x62c0, 0x62c1, 0x62c3,
+ 0x62cb, 0x62cf, 0x62d1, 0x62d5, 0x62dd, 0x62de, 0x62e0, 0x62e1,
+ 0x62e4, 0x62ea, 0x62eb, 0x62f0, 0x62f2, 0x62f5, 0x62f8, 0x62f9,
+ 0x62fa, 0x62fb, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 0x630a,
+ 0x630b, 0x630c, 0x630d, 0x630f, 0x6310, 0x6312, 0x6313, 0x6314,
+ 0x6315, 0x6317, 0x6318, 0x6319, 0x631c, 0x6326, 0x6327, 0x6329,
+ 0x632c, 0x632d, 0x632e, 0x6330, 0x6331, 0x6333, 0x6334, 0x6335,
+ 0x6336, 0x6337, 0x6338, 0x633b, 0x633c, 0x633e, 0x633f, 0x6340,
+ 0x6341, 0x6344, 0x6347, 0x6348, 0x634a, 0x6351, 0x6352, 0x6353,
+ 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b, 0x635c,
+ 0x635d, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636a, 0x636b,
+ 0x636c, 0x636f, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 0x6378,
+ 0x6379, 0x637c, 0x637d, 0x637e, 0x637f, 0x6381, 0x6383, 0x6384,
+ 0x6385, 0x6386, 0x638b, 0x638d, 0x6391, 0x6393, 0x6394, 0x6395,
+ 0x6397, 0x6399, 0x639a, 0x639b, 0x639c, 0x639d, 0x639e, 0x639f,
+ 0x63a1, 0x63a4, 0x63a6, 0x63ab, 0x63af, 0x63b1, 0x63b2, 0x63b5,
+ 0x63b6, 0x63b9, 0x63bb, 0x63bd, 0x63bf, 0x63c0,
+ /* 0x93 */
+ 0x63c1, 0x63c2, 0x63c3, 0x63c5, 0x63c7, 0x63c8, 0x63ca, 0x63cb,
+ 0x63cc, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63d7, 0x63d8, 0x63d9,
+ 0x63da, 0x63db, 0x63dc, 0x63dd, 0x63df, 0x63e2, 0x63e4, 0x63e5,
+ 0x63e6, 0x63e7, 0x63e8, 0x63eb, 0x63ec, 0x63ee, 0x63ef, 0x63f0,
+ 0x63f1, 0x63f3, 0x63f5, 0x63f7, 0x63f9, 0x63fa, 0x63fb, 0x63fc,
+ 0x63fe, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640a,
+ 0x640d, 0x640e, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418,
+ 0x6419, 0x641a, 0x641d, 0x641f, 0x6422, 0x6423, 0x6424, 0x6425,
+ 0x6427, 0x6428, 0x6429, 0x642b, 0x642e, 0x642f, 0x6430, 0x6431,
+ 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, 0x643b,
+ 0x643c, 0x643e, 0x6440, 0x6442, 0x6443, 0x6449, 0x644b, 0x644c,
+ 0x644d, 0x644e, 0x644f, 0x6450, 0x6451, 0x6453, 0x6455, 0x6456,
+ 0x6457, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d, 0x645f, 0x6460,
+ 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468, 0x646a,
+ 0x646b, 0x646c, 0x646e, 0x646f, 0x6470, 0x6471, 0x6472, 0x6473,
+ 0x6474, 0x6475, 0x6476, 0x6477, 0x647b, 0x647c, 0x647d, 0x647e,
+ 0x647f, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489, 0x648a,
+ 0x648b, 0x648c, 0x648d, 0x648e, 0x648f, 0x6490, 0x6493, 0x6494,
+ 0x6497, 0x6498, 0x649a, 0x649b, 0x649c, 0x649d, 0x649f, 0x64a0,
+ 0x64a1, 0x64a2, 0x64a3, 0x64a5, 0x64a6, 0x64a7, 0x64a8, 0x64aa,
+ 0x64ab, 0x64af, 0x64b1, 0x64b2, 0x64b3, 0x64b4, 0x64b6, 0x64b9,
+ 0x64bb, 0x64bd, 0x64be, 0x64bf, 0x64c1, 0x64c3, 0x64c4, 0x64c6,
+ 0x64c7, 0x64c8, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64cf, 0x64d1,
+ 0x64d3, 0x64d4, 0x64d5, 0x64d6, 0x64d9, 0x64da,
+ /* 0x94 */
+ 0x64db, 0x64dc, 0x64dd, 0x64df, 0x64e0, 0x64e1, 0x64e3, 0x64e5,
+ 0x64e7, 0x64e8, 0x64e9, 0x64ea, 0x64eb, 0x64ec, 0x64ed, 0x64ee,
+ 0x64ef, 0x64f0, 0x64f1, 0x64f2, 0x64f3, 0x64f4, 0x64f5, 0x64f6,
+ 0x64f7, 0x64f8, 0x64f9, 0x64fa, 0x64fb, 0x64fc, 0x64fd, 0x64fe,
+ 0x64ff, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507,
+ 0x6508, 0x650a, 0x650b, 0x650c, 0x650d, 0x650e, 0x650f, 0x6510,
+ 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651a,
+ 0x651b, 0x651c, 0x651d, 0x651e, 0x651f, 0x6520, 0x6521, 0x6522,
+ 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652a, 0x652c,
+ 0x652d, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653a, 0x653c,
+ 0x653d, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, 0x6547,
+ 0x654a, 0x654b, 0x654d, 0x654e, 0x6550, 0x6552, 0x6553, 0x6554,
+ 0x6557, 0x6558, 0x655a, 0x655c, 0x655f, 0x6560, 0x6561, 0x6564,
+ 0x6565, 0x6567, 0x6568, 0x6569, 0x656a, 0x656d, 0x656e, 0x656f,
+ 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657a, 0x657b,
+ 0x657c, 0x657d, 0x657e, 0x657f, 0x6580, 0x6581, 0x6582, 0x6583,
+ 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658a, 0x658d, 0x658e,
+ 0x658f, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659a, 0x659d,
+ 0x659e, 0x65a0, 0x65a2, 0x65a3, 0x65a6, 0x65a8, 0x65aa, 0x65ac,
+ 0x65ae, 0x65b1, 0x65b2, 0x65b3, 0x65b4, 0x65b5, 0x65b6, 0x65b7,
+ 0x65b8, 0x65ba, 0x65bb, 0x65be, 0x65bf, 0x65c0, 0x65c2, 0x65c7,
+ 0x65c8, 0x65c9, 0x65ca, 0x65cd, 0x65d0, 0x65d1, 0x65d3, 0x65d4,
+ 0x65d5, 0x65d8, 0x65d9, 0x65da, 0x65db, 0x65dc, 0x65dd, 0x65de,
+ 0x65df, 0x65e1, 0x65e3, 0x65e4, 0x65ea, 0x65eb,
+ /* 0x95 */
+ 0x65f2, 0x65f3, 0x65f4, 0x65f5, 0x65f8, 0x65f9, 0x65fb, 0x65fc,
+ 0x65fd, 0x65fe, 0x65ff, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608,
+ 0x6609, 0x660b, 0x660d, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617,
+ 0x6618, 0x661a, 0x661b, 0x661c, 0x661e, 0x6621, 0x6622, 0x6623,
+ 0x6624, 0x6626, 0x6629, 0x662a, 0x662b, 0x662c, 0x662e, 0x6630,
+ 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663a, 0x663b, 0x663d,
+ 0x663f, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648,
+ 0x6649, 0x664a, 0x664d, 0x664e, 0x6650, 0x6651, 0x6658, 0x6659,
+ 0x665b, 0x665c, 0x665d, 0x665e, 0x6660, 0x6662, 0x6663, 0x6665,
+ 0x6667, 0x6669, 0x666a, 0x666b, 0x666c, 0x666d, 0x6671, 0x6672,
+ 0x6673, 0x6675, 0x6678, 0x6679, 0x667b, 0x667c, 0x667d, 0x667f,
+ 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689, 0x668a,
+ 0x668b, 0x668d, 0x668e, 0x668f, 0x6690, 0x6692, 0x6693, 0x6694,
+ 0x6695, 0x6698, 0x6699, 0x669a, 0x669b, 0x669c, 0x669e, 0x669f,
+ 0x66a0, 0x66a1, 0x66a2, 0x66a3, 0x66a4, 0x66a5, 0x66a6, 0x66a9,
+ 0x66aa, 0x66ab, 0x66ac, 0x66ad, 0x66af, 0x66b0, 0x66b1, 0x66b2,
+ 0x66b3, 0x66b5, 0x66b6, 0x66b7, 0x66b8, 0x66ba, 0x66bb, 0x66bc,
+ 0x66bd, 0x66bf, 0x66c0, 0x66c1, 0x66c2, 0x66c3, 0x66c4, 0x66c5,
+ 0x66c6, 0x66c7, 0x66c8, 0x66c9, 0x66ca, 0x66cb, 0x66cc, 0x66cd,
+ 0x66ce, 0x66cf, 0x66d0, 0x66d1, 0x66d2, 0x66d3, 0x66d4, 0x66d5,
+ 0x66d6, 0x66d7, 0x66d8, 0x66da, 0x66de, 0x66df, 0x66e0, 0x66e1,
+ 0x66e2, 0x66e3, 0x66e4, 0x66e5, 0x66e7, 0x66e8, 0x66ea, 0x66eb,
+ 0x66ec, 0x66ed, 0x66ee, 0x66ef, 0x66f1, 0x66f5, 0x66f6, 0x66f8,
+ 0x66fa, 0x66fb, 0x66fd, 0x6701, 0x6702, 0x6703,
+ /* 0x96 */
+ 0x6704, 0x6705, 0x6706, 0x6707, 0x670c, 0x670e, 0x670f, 0x6711,
+ 0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671a, 0x671c, 0x671e,
+ 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729,
+ 0x672e, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739,
+ 0x673b, 0x673c, 0x673e, 0x673f, 0x6741, 0x6744, 0x6745, 0x6747,
+ 0x674a, 0x674b, 0x674d, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758,
+ 0x6759, 0x675a, 0x675b, 0x675d, 0x6762, 0x6763, 0x6764, 0x6766,
+ 0x6767, 0x676b, 0x676c, 0x676e, 0x6771, 0x6774, 0x6776, 0x6778,
+ 0x6779, 0x677a, 0x677b, 0x677d, 0x6780, 0x6782, 0x6783, 0x6785,
+ 0x6786, 0x6788, 0x678a, 0x678c, 0x678d, 0x678e, 0x678f, 0x6791,
+ 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679b, 0x679f, 0x67a0,
+ 0x67a1, 0x67a4, 0x67a6, 0x67a9, 0x67ac, 0x67ae, 0x67b1, 0x67b2,
+ 0x67b4, 0x67b9, 0x67ba, 0x67bb, 0x67bc, 0x67bd, 0x67be, 0x67bf,
+ 0x67c0, 0x67c2, 0x67c5, 0x67c6, 0x67c7, 0x67c8, 0x67c9, 0x67ca,
+ 0x67cb, 0x67cc, 0x67cd, 0x67ce, 0x67d5, 0x67d6, 0x67d7, 0x67db,
+ 0x67df, 0x67e1, 0x67e3, 0x67e4, 0x67e6, 0x67e7, 0x67e8, 0x67ea,
+ 0x67eb, 0x67ed, 0x67ee, 0x67f2, 0x67f5, 0x67f6, 0x67f7, 0x67f8,
+ 0x67f9, 0x67fa, 0x67fb, 0x67fc, 0x67fe, 0x6801, 0x6802, 0x6803,
+ 0x6804, 0x6806, 0x680d, 0x6810, 0x6812, 0x6814, 0x6815, 0x6818,
+ 0x6819, 0x681a, 0x681b, 0x681c, 0x681e, 0x681f, 0x6820, 0x6822,
+ 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682b, 0x682c,
+ 0x682d, 0x682e, 0x682f, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836,
+ 0x683a, 0x683b, 0x683f, 0x6847, 0x684b, 0x684d, 0x684f, 0x6852,
+ 0x6856, 0x6857, 0x6858, 0x6859, 0x685a, 0x685b,
+ /* 0x97 */
+ 0x685c, 0x685d, 0x685e, 0x685f, 0x686a, 0x686c, 0x686d, 0x686e,
+ 0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879,
+ 0x687a, 0x687b, 0x687c, 0x687d, 0x687e, 0x687f, 0x6880, 0x6882,
+ 0x6884, 0x6887, 0x6888, 0x6889, 0x688a, 0x688b, 0x688c, 0x688d,
+ 0x688e, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898,
+ 0x6899, 0x689a, 0x689b, 0x689c, 0x689d, 0x689e, 0x689f, 0x68a0,
+ 0x68a1, 0x68a3, 0x68a4, 0x68a5, 0x68a9, 0x68aa, 0x68ab, 0x68ac,
+ 0x68ae, 0x68b1, 0x68b2, 0x68b4, 0x68b6, 0x68b7, 0x68b8, 0x68b9,
+ 0x68ba, 0x68bb, 0x68bc, 0x68bd, 0x68be, 0x68bf, 0x68c1, 0x68c3,
+ 0x68c4, 0x68c5, 0x68c6, 0x68c7, 0x68c8, 0x68ca, 0x68cc, 0x68ce,
+ 0x68cf, 0x68d0, 0x68d1, 0x68d3, 0x68d4, 0x68d6, 0x68d7, 0x68d9,
+ 0x68db, 0x68dc, 0x68dd, 0x68de, 0x68df, 0x68e1, 0x68e2, 0x68e4,
+ 0x68e5, 0x68e6, 0x68e7, 0x68e8, 0x68e9, 0x68ea, 0x68eb, 0x68ec,
+ 0x68ed, 0x68ef, 0x68f2, 0x68f3, 0x68f4, 0x68f6, 0x68f7, 0x68f8,
+ 0x68fb, 0x68fd, 0x68fe, 0x68ff, 0x6900, 0x6902, 0x6903, 0x6904,
+ 0x6906, 0x6907, 0x6908, 0x6909, 0x690a, 0x690c, 0x690f, 0x6911,
+ 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, 0x691a,
+ 0x691b, 0x691c, 0x691d, 0x691e, 0x6921, 0x6922, 0x6923, 0x6925,
+ 0x6926, 0x6927, 0x6928, 0x6929, 0x692a, 0x692b, 0x692c, 0x692e,
+ 0x692f, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937, 0x6938,
+ 0x693a, 0x693b, 0x693c, 0x693e, 0x6940, 0x6941, 0x6943, 0x6944,
+ 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694a, 0x694b, 0x694c,
+ 0x694d, 0x694e, 0x694f, 0x6950, 0x6951, 0x6952, 0x6953, 0x6955,
+ 0x6956, 0x6958, 0x6959, 0x695b, 0x695c, 0x695f,
+ /* 0x98 */
+ 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696a,
+ 0x696c, 0x696d, 0x696f, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975,
+ 0x6976, 0x697a, 0x697b, 0x697d, 0x697e, 0x697f, 0x6981, 0x6983,
+ 0x6985, 0x698a, 0x698b, 0x698c, 0x698e, 0x698f, 0x6990, 0x6991,
+ 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699a, 0x699d, 0x699e,
+ 0x699f, 0x69a0, 0x69a1, 0x69a2, 0x69a3, 0x69a4, 0x69a5, 0x69a6,
+ 0x69a9, 0x69aa, 0x69ac, 0x69ae, 0x69af, 0x69b0, 0x69b2, 0x69b3,
+ 0x69b5, 0x69b6, 0x69b8, 0x69b9, 0x69ba, 0x69bc, 0x69bd, 0x69be,
+ 0x69bf, 0x69c0, 0x69c2, 0x69c3, 0x69c4, 0x69c5, 0x69c6, 0x69c7,
+ 0x69c8, 0x69c9, 0x69cb, 0x69cd, 0x69cf, 0x69d1, 0x69d2, 0x69d3,
+ 0x69d5, 0x69d6, 0x69d7, 0x69d8, 0x69d9, 0x69da, 0x69dc, 0x69dd,
+ 0x69de, 0x69e1, 0x69e2, 0x69e3, 0x69e4, 0x69e5, 0x69e6, 0x69e7,
+ 0x69e8, 0x69e9, 0x69ea, 0x69eb, 0x69ec, 0x69ee, 0x69ef, 0x69f0,
+ 0x69f1, 0x69f3, 0x69f4, 0x69f5, 0x69f6, 0x69f7, 0x69f8, 0x69f9,
+ 0x69fa, 0x69fb, 0x69fc, 0x69fe, 0x6a00, 0x6a01, 0x6a02, 0x6a03,
+ 0x6a04, 0x6a05, 0x6a06, 0x6a07, 0x6a08, 0x6a09, 0x6a0b, 0x6a0c,
+ 0x6a0d, 0x6a0e, 0x6a0f, 0x6a10, 0x6a11, 0x6a12, 0x6a13, 0x6a14,
+ 0x6a15, 0x6a16, 0x6a19, 0x6a1a, 0x6a1b, 0x6a1c, 0x6a1d, 0x6a1e,
+ 0x6a20, 0x6a22, 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, 0x6a29,
+ 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a30, 0x6a32, 0x6a33, 0x6a34,
+ 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a, 0x6a3b, 0x6a3c, 0x6a3f,
+ 0x6a40, 0x6a41, 0x6a42, 0x6a43, 0x6a45, 0x6a46, 0x6a48, 0x6a49,
+ 0x6a4a, 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a51, 0x6a52,
+ 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a5a,
+ /* 0x99 */
+ 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a62, 0x6a63, 0x6a64,
+ 0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d,
+ 0x6a6e, 0x6a6f, 0x6a70, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a76,
+ 0x6a77, 0x6a78, 0x6a7a, 0x6a7b, 0x6a7d, 0x6a7e, 0x6a7f, 0x6a81,
+ 0x6a82, 0x6a83, 0x6a85, 0x6a86, 0x6a87, 0x6a88, 0x6a89, 0x6a8a,
+ 0x6a8b, 0x6a8c, 0x6a8d, 0x6a8f, 0x6a92, 0x6a93, 0x6a94, 0x6a95,
+ 0x6a96, 0x6a98, 0x6a99, 0x6a9a, 0x6a9b, 0x6a9c, 0x6a9d, 0x6a9e,
+ 0x6a9f, 0x6aa1, 0x6aa2, 0x6aa3, 0x6aa4, 0x6aa5, 0x6aa6, 0x6aa7,
+ 0x6aa8, 0x6aaa, 0x6aad, 0x6aae, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab2,
+ 0x6ab3, 0x6ab4, 0x6ab5, 0x6ab6, 0x6ab7, 0x6ab8, 0x6ab9, 0x6aba,
+ 0x6abb, 0x6abc, 0x6abd, 0x6abe, 0x6abf, 0x6ac0, 0x6ac1, 0x6ac2,
+ 0x6ac3, 0x6ac4, 0x6ac5, 0x6ac6, 0x6ac7, 0x6ac8, 0x6ac9, 0x6aca,
+ 0x6acb, 0x6acc, 0x6acd, 0x6ace, 0x6acf, 0x6ad0, 0x6ad1, 0x6ad2,
+ 0x6ad3, 0x6ad4, 0x6ad5, 0x6ad6, 0x6ad7, 0x6ad8, 0x6ad9, 0x6ada,
+ 0x6adb, 0x6adc, 0x6add, 0x6ade, 0x6adf, 0x6ae0, 0x6ae1, 0x6ae2,
+ 0x6ae3, 0x6ae4, 0x6ae5, 0x6ae6, 0x6ae7, 0x6ae8, 0x6ae9, 0x6aea,
+ 0x6aeb, 0x6aec, 0x6aed, 0x6aee, 0x6aef, 0x6af0, 0x6af1, 0x6af2,
+ 0x6af3, 0x6af4, 0x6af5, 0x6af6, 0x6af7, 0x6af8, 0x6af9, 0x6afa,
+ 0x6afb, 0x6afc, 0x6afd, 0x6afe, 0x6aff, 0x6b00, 0x6b01, 0x6b02,
+ 0x6b03, 0x6b04, 0x6b05, 0x6b06, 0x6b07, 0x6b08, 0x6b09, 0x6b0a,
+ 0x6b0b, 0x6b0c, 0x6b0d, 0x6b0e, 0x6b0f, 0x6b10, 0x6b11, 0x6b12,
+ 0x6b13, 0x6b14, 0x6b15, 0x6b16, 0x6b17, 0x6b18, 0x6b19, 0x6b1a,
+ 0x6b1b, 0x6b1c, 0x6b1d, 0x6b1e, 0x6b1f, 0x6b25, 0x6b26, 0x6b28,
+ 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c, 0x6b2d, 0x6b2e,
+ /* 0x9a */
+ 0x6b2f, 0x6b30, 0x6b31, 0x6b33, 0x6b34, 0x6b35, 0x6b36, 0x6b38,
+ 0x6b3b, 0x6b3c, 0x6b3d, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b44,
+ 0x6b45, 0x6b48, 0x6b4a, 0x6b4b, 0x6b4d, 0x6b4e, 0x6b4f, 0x6b50,
+ 0x6b51, 0x6b52, 0x6b53, 0x6b54, 0x6b55, 0x6b56, 0x6b57, 0x6b58,
+ 0x6b5a, 0x6b5b, 0x6b5c, 0x6b5d, 0x6b5e, 0x6b5f, 0x6b60, 0x6b61,
+ 0x6b68, 0x6b69, 0x6b6b, 0x6b6c, 0x6b6d, 0x6b6e, 0x6b6f, 0x6b70,
+ 0x6b71, 0x6b72, 0x6b73, 0x6b74, 0x6b75, 0x6b76, 0x6b77, 0x6b78,
+ 0x6b7a, 0x6b7d, 0x6b7e, 0x6b7f, 0x6b80, 0x6b85, 0x6b88, 0x6b8c,
+ 0x6b8e, 0x6b8f, 0x6b90, 0x6b91, 0x6b94, 0x6b95, 0x6b97, 0x6b98,
+ 0x6b99, 0x6b9c, 0x6b9d, 0x6b9e, 0x6b9f, 0x6ba0, 0x6ba2, 0x6ba3,
+ 0x6ba4, 0x6ba5, 0x6ba6, 0x6ba7, 0x6ba8, 0x6ba9, 0x6bab, 0x6bac,
+ 0x6bad, 0x6bae, 0x6baf, 0x6bb0, 0x6bb1, 0x6bb2, 0x6bb6, 0x6bb8,
+ 0x6bb9, 0x6bba, 0x6bbb, 0x6bbc, 0x6bbd, 0x6bbe, 0x6bc0, 0x6bc3,
+ 0x6bc4, 0x6bc6, 0x6bc7, 0x6bc8, 0x6bc9, 0x6bca, 0x6bcc, 0x6bce,
+ 0x6bd0, 0x6bd1, 0x6bd8, 0x6bda, 0x6bdc, 0x6bdd, 0x6bde, 0x6bdf,
+ 0x6be0, 0x6be2, 0x6be3, 0x6be4, 0x6be5, 0x6be6, 0x6be7, 0x6be8,
+ 0x6be9, 0x6bec, 0x6bed, 0x6bee, 0x6bf0, 0x6bf1, 0x6bf2, 0x6bf4,
+ 0x6bf6, 0x6bf7, 0x6bf8, 0x6bfa, 0x6bfb, 0x6bfc, 0x6bfe, 0x6bff,
+ 0x6c00, 0x6c01, 0x6c02, 0x6c03, 0x6c04, 0x6c08, 0x6c09, 0x6c0a,
+ 0x6c0b, 0x6c0c, 0x6c0e, 0x6c12, 0x6c17, 0x6c1c, 0x6c1d, 0x6c1e,
+ 0x6c20, 0x6c23, 0x6c25, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c31, 0x6c33,
+ 0x6c36, 0x6c37, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3e, 0x6c3f,
+ 0x6c43, 0x6c44, 0x6c45, 0x6c48, 0x6c4b, 0x6c4c, 0x6c4d, 0x6c4e,
+ 0x6c4f, 0x6c51, 0x6c52, 0x6c53, 0x6c56, 0x6c58,
+ /* 0x9b */
+ 0x6c59, 0x6c5a, 0x6c62, 0x6c63, 0x6c65, 0x6c66, 0x6c67, 0x6c6b,
+ 0x6c6c, 0x6c6d, 0x6c6e, 0x6c6f, 0x6c71, 0x6c73, 0x6c75, 0x6c77,
+ 0x6c78, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7f, 0x6c80, 0x6c84, 0x6c87,
+ 0x6c8a, 0x6c8b, 0x6c8d, 0x6c8e, 0x6c91, 0x6c92, 0x6c95, 0x6c96,
+ 0x6c97, 0x6c98, 0x6c9a, 0x6c9c, 0x6c9d, 0x6c9e, 0x6ca0, 0x6ca2,
+ 0x6ca8, 0x6cac, 0x6caf, 0x6cb0, 0x6cb4, 0x6cb5, 0x6cb6, 0x6cb7,
+ 0x6cba, 0x6cc0, 0x6cc1, 0x6cc2, 0x6cc3, 0x6cc6, 0x6cc7, 0x6cc8,
+ 0x6ccb, 0x6ccd, 0x6cce, 0x6ccf, 0x6cd1, 0x6cd2, 0x6cd8, 0x6cd9,
+ 0x6cda, 0x6cdc, 0x6cdd, 0x6cdf, 0x6ce4, 0x6ce6, 0x6ce7, 0x6ce9,
+ 0x6cec, 0x6ced, 0x6cf2, 0x6cf4, 0x6cf9, 0x6cff, 0x6d00, 0x6d02,
+ 0x6d03, 0x6d05, 0x6d06, 0x6d08, 0x6d09, 0x6d0a, 0x6d0d, 0x6d0f,
+ 0x6d10, 0x6d11, 0x6d13, 0x6d14, 0x6d15, 0x6d16, 0x6d18, 0x6d1c,
+ 0x6d1d, 0x6d1f, 0x6d20, 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d26,
+ 0x6d28, 0x6d29, 0x6d2c, 0x6d2d, 0x6d2f, 0x6d30, 0x6d34, 0x6d36,
+ 0x6d37, 0x6d38, 0x6d3a, 0x6d3f, 0x6d40, 0x6d42, 0x6d44, 0x6d49,
+ 0x6d4c, 0x6d50, 0x6d55, 0x6d56, 0x6d57, 0x6d58, 0x6d5b, 0x6d5d,
+ 0x6d5f, 0x6d61, 0x6d62, 0x6d64, 0x6d65, 0x6d67, 0x6d68, 0x6d6b,
+ 0x6d6c, 0x6d6d, 0x6d70, 0x6d71, 0x6d72, 0x6d73, 0x6d75, 0x6d76,
+ 0x6d79, 0x6d7a, 0x6d7b, 0x6d7d, 0x6d7e, 0x6d7f, 0x6d80, 0x6d81,
+ 0x6d83, 0x6d84, 0x6d86, 0x6d87, 0x6d8a, 0x6d8b, 0x6d8d, 0x6d8f,
+ 0x6d90, 0x6d92, 0x6d96, 0x6d97, 0x6d98, 0x6d99, 0x6d9a, 0x6d9c,
+ 0x6da2, 0x6da5, 0x6dac, 0x6dad, 0x6db0, 0x6db1, 0x6db3, 0x6db4,
+ 0x6db6, 0x6db7, 0x6db9, 0x6dba, 0x6dbb, 0x6dbc, 0x6dbd, 0x6dbe,
+ 0x6dc1, 0x6dc2, 0x6dc3, 0x6dc8, 0x6dc9, 0x6dca,
+ /* 0x9c */
+ 0x6dcd, 0x6dce, 0x6dcf, 0x6dd0, 0x6dd2, 0x6dd3, 0x6dd4, 0x6dd5,
+ 0x6dd7, 0x6dda, 0x6ddb, 0x6ddc, 0x6ddf, 0x6de2, 0x6de3, 0x6de5,
+ 0x6de7, 0x6de8, 0x6de9, 0x6dea, 0x6ded, 0x6def, 0x6df0, 0x6df2,
+ 0x6df4, 0x6df5, 0x6df6, 0x6df8, 0x6dfa, 0x6dfd, 0x6dfe, 0x6dff,
+ 0x6e00, 0x6e01, 0x6e02, 0x6e03, 0x6e04, 0x6e06, 0x6e07, 0x6e08,
+ 0x6e09, 0x6e0b, 0x6e0f, 0x6e12, 0x6e13, 0x6e15, 0x6e18, 0x6e19,
+ 0x6e1b, 0x6e1c, 0x6e1e, 0x6e1f, 0x6e22, 0x6e26, 0x6e27, 0x6e28,
+ 0x6e2a, 0x6e2c, 0x6e2e, 0x6e30, 0x6e31, 0x6e33, 0x6e35, 0x6e36,
+ 0x6e37, 0x6e39, 0x6e3b, 0x6e3c, 0x6e3d, 0x6e3e, 0x6e3f, 0x6e40,
+ 0x6e41, 0x6e42, 0x6e45, 0x6e46, 0x6e47, 0x6e48, 0x6e49, 0x6e4a,
+ 0x6e4b, 0x6e4c, 0x6e4f, 0x6e50, 0x6e51, 0x6e52, 0x6e55, 0x6e57,
+ 0x6e59, 0x6e5a, 0x6e5c, 0x6e5d, 0x6e5e, 0x6e60, 0x6e61, 0x6e62,
+ 0x6e63, 0x6e64, 0x6e65, 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a,
+ 0x6e6c, 0x6e6d, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e73, 0x6e74,
+ 0x6e75, 0x6e76, 0x6e77, 0x6e78, 0x6e79, 0x6e7a, 0x6e7b, 0x6e7c,
+ 0x6e7d, 0x6e80, 0x6e81, 0x6e82, 0x6e84, 0x6e87, 0x6e88, 0x6e8a,
+ 0x6e8b, 0x6e8c, 0x6e8d, 0x6e8e, 0x6e91, 0x6e92, 0x6e93, 0x6e94,
+ 0x6e95, 0x6e96, 0x6e97, 0x6e99, 0x6e9a, 0x6e9b, 0x6e9d, 0x6e9e,
+ 0x6ea0, 0x6ea1, 0x6ea3, 0x6ea4, 0x6ea6, 0x6ea8, 0x6ea9, 0x6eab,
+ 0x6eac, 0x6ead, 0x6eae, 0x6eb0, 0x6eb3, 0x6eb5, 0x6eb8, 0x6eb9,
+ 0x6ebc, 0x6ebe, 0x6ebf, 0x6ec0, 0x6ec3, 0x6ec4, 0x6ec5, 0x6ec6,
+ 0x6ec8, 0x6ec9, 0x6eca, 0x6ecc, 0x6ecd, 0x6ece, 0x6ed0, 0x6ed2,
+ 0x6ed6, 0x6ed8, 0x6ed9, 0x6edb, 0x6edc, 0x6edd, 0x6ee3, 0x6ee7,
+ 0x6eea, 0x6eeb, 0x6eec, 0x6eed, 0x6eee, 0x6eef,
+ /* 0x9d */
+ 0x6ef0, 0x6ef1, 0x6ef2, 0x6ef3, 0x6ef5, 0x6ef6, 0x6ef7, 0x6ef8,
+ 0x6efa, 0x6efb, 0x6efc, 0x6efd, 0x6efe, 0x6eff, 0x6f00, 0x6f01,
+ 0x6f03, 0x6f04, 0x6f05, 0x6f07, 0x6f08, 0x6f0a, 0x6f0b, 0x6f0c,
+ 0x6f0d, 0x6f0e, 0x6f10, 0x6f11, 0x6f12, 0x6f16, 0x6f17, 0x6f18,
+ 0x6f19, 0x6f1a, 0x6f1b, 0x6f1c, 0x6f1d, 0x6f1e, 0x6f1f, 0x6f21,
+ 0x6f22, 0x6f23, 0x6f25, 0x6f26, 0x6f27, 0x6f28, 0x6f2c, 0x6f2e,
+ 0x6f30, 0x6f32, 0x6f34, 0x6f35, 0x6f37, 0x6f38, 0x6f39, 0x6f3a,
+ 0x6f3b, 0x6f3c, 0x6f3d, 0x6f3f, 0x6f40, 0x6f41, 0x6f42, 0x6f43,
+ 0x6f44, 0x6f45, 0x6f48, 0x6f49, 0x6f4a, 0x6f4c, 0x6f4e, 0x6f4f,
+ 0x6f50, 0x6f51, 0x6f52, 0x6f53, 0x6f54, 0x6f55, 0x6f56, 0x6f57,
+ 0x6f59, 0x6f5a, 0x6f5b, 0x6f5d, 0x6f5f, 0x6f60, 0x6f61, 0x6f63,
+ 0x6f64, 0x6f65, 0x6f67, 0x6f68, 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c,
+ 0x6f6f, 0x6f70, 0x6f71, 0x6f73, 0x6f75, 0x6f76, 0x6f77, 0x6f79,
+ 0x6f7b, 0x6f7d, 0x6f7e, 0x6f7f, 0x6f80, 0x6f81, 0x6f82, 0x6f83,
+ 0x6f85, 0x6f86, 0x6f87, 0x6f8a, 0x6f8b, 0x6f8f, 0x6f90, 0x6f91,
+ 0x6f92, 0x6f93, 0x6f94, 0x6f95, 0x6f96, 0x6f97, 0x6f98, 0x6f99,
+ 0x6f9a, 0x6f9b, 0x6f9d, 0x6f9e, 0x6f9f, 0x6fa0, 0x6fa2, 0x6fa3,
+ 0x6fa4, 0x6fa5, 0x6fa6, 0x6fa8, 0x6fa9, 0x6faa, 0x6fab, 0x6fac,
+ 0x6fad, 0x6fae, 0x6faf, 0x6fb0, 0x6fb1, 0x6fb2, 0x6fb4, 0x6fb5,
+ 0x6fb7, 0x6fb8, 0x6fba, 0x6fbb, 0x6fbc, 0x6fbd, 0x6fbe, 0x6fbf,
+ 0x6fc1, 0x6fc3, 0x6fc4, 0x6fc5, 0x6fc6, 0x6fc7, 0x6fc8, 0x6fca,
+ 0x6fcb, 0x6fcc, 0x6fcd, 0x6fce, 0x6fcf, 0x6fd0, 0x6fd3, 0x6fd4,
+ 0x6fd5, 0x6fd6, 0x6fd7, 0x6fd8, 0x6fd9, 0x6fda, 0x6fdb, 0x6fdc,
+ 0x6fdd, 0x6fdf, 0x6fe2, 0x6fe3, 0x6fe4, 0x6fe5,
+ /* 0x9e */
+ 0x6fe6, 0x6fe7, 0x6fe8, 0x6fe9, 0x6fea, 0x6feb, 0x6fec, 0x6fed,
+ 0x6ff0, 0x6ff1, 0x6ff2, 0x6ff3, 0x6ff4, 0x6ff5, 0x6ff6, 0x6ff7,
+ 0x6ff8, 0x6ff9, 0x6ffa, 0x6ffb, 0x6ffc, 0x6ffd, 0x6ffe, 0x6fff,
+ 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007,
+ 0x7008, 0x7009, 0x700a, 0x700b, 0x700c, 0x700d, 0x700e, 0x700f,
+ 0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018,
+ 0x7019, 0x701c, 0x701d, 0x701e, 0x701f, 0x7020, 0x7021, 0x7022,
+ 0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702a, 0x702b,
+ 0x702c, 0x702d, 0x702e, 0x702f, 0x7030, 0x7031, 0x7032, 0x7033,
+ 0x7034, 0x7036, 0x7037, 0x7038, 0x703a, 0x703b, 0x703c, 0x703d,
+ 0x703e, 0x703f, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045,
+ 0x7046, 0x7047, 0x7048, 0x7049, 0x704a, 0x704b, 0x704d, 0x704e,
+ 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057,
+ 0x7058, 0x7059, 0x705a, 0x705b, 0x705c, 0x705d, 0x705f, 0x7060,
+ 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, 0x7068,
+ 0x7069, 0x706a, 0x706e, 0x7071, 0x7072, 0x7073, 0x7074, 0x7077,
+ 0x7079, 0x707a, 0x707b, 0x707d, 0x7081, 0x7082, 0x7083, 0x7084,
+ 0x7086, 0x7087, 0x7088, 0x708b, 0x708c, 0x708d, 0x708f, 0x7090,
+ 0x7091, 0x7093, 0x7097, 0x7098, 0x709a, 0x709b, 0x709e, 0x709f,
+ 0x70a0, 0x70a1, 0x70a2, 0x70a3, 0x70a4, 0x70a5, 0x70a6, 0x70a7,
+ 0x70a8, 0x70a9, 0x70aa, 0x70b0, 0x70b2, 0x70b4, 0x70b5, 0x70b6,
+ 0x70ba, 0x70be, 0x70bf, 0x70c4, 0x70c5, 0x70c6, 0x70c7, 0x70c9,
+ 0x70cb, 0x70cc, 0x70cd, 0x70ce, 0x70cf, 0x70d0, 0x70d1, 0x70d2,
+ 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d7, 0x70da,
+ /* 0x9f */
+ 0x70dc, 0x70dd, 0x70de, 0x70e0, 0x70e1, 0x70e2, 0x70e3, 0x70e5,
+ 0x70ea, 0x70ee, 0x70f0, 0x70f1, 0x70f2, 0x70f3, 0x70f4, 0x70f5,
+ 0x70f6, 0x70f8, 0x70fa, 0x70fb, 0x70fc, 0x70fe, 0x70ff, 0x7100,
+ 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108,
+ 0x710b, 0x710c, 0x710d, 0x710e, 0x710f, 0x7111, 0x7112, 0x7114,
+ 0x7117, 0x711b, 0x711c, 0x711d, 0x711e, 0x711f, 0x7120, 0x7121,
+ 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712a,
+ 0x712b, 0x712c, 0x712d, 0x712e, 0x7132, 0x7133, 0x7134, 0x7135,
+ 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713c, 0x713d, 0x713e,
+ 0x713f, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, 0x7147,
+ 0x7148, 0x7149, 0x714b, 0x714d, 0x714f, 0x7150, 0x7151, 0x7152,
+ 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159, 0x715a,
+ 0x715b, 0x715d, 0x715f, 0x7160, 0x7161, 0x7162, 0x7163, 0x7165,
+ 0x7169, 0x716a, 0x716b, 0x716c, 0x716d, 0x716f, 0x7170, 0x7171,
+ 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717b, 0x717c, 0x717e,
+ 0x717f, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, 0x7187,
+ 0x7188, 0x7189, 0x718b, 0x718c, 0x718d, 0x718e, 0x7190, 0x7191,
+ 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719a, 0x719b, 0x719c,
+ 0x719d, 0x719e, 0x71a1, 0x71a2, 0x71a3, 0x71a4, 0x71a5, 0x71a6,
+ 0x71a7, 0x71a9, 0x71aa, 0x71ab, 0x71ad, 0x71ae, 0x71af, 0x71b0,
+ 0x71b1, 0x71b2, 0x71b4, 0x71b6, 0x71b7, 0x71b8, 0x71ba, 0x71bb,
+ 0x71bc, 0x71bd, 0x71be, 0x71bf, 0x71c0, 0x71c1, 0x71c2, 0x71c4,
+ 0x71c5, 0x71c6, 0x71c7, 0x71c8, 0x71c9, 0x71ca, 0x71cb, 0x71cc,
+ 0x71cd, 0x71cf, 0x71d0, 0x71d1, 0x71d2, 0x71d3,
+ /* 0xa0 */
+ 0x71d6, 0x71d7, 0x71d8, 0x71d9, 0x71da, 0x71db, 0x71dc, 0x71dd,
+ 0x71de, 0x71df, 0x71e1, 0x71e2, 0x71e3, 0x71e4, 0x71e6, 0x71e8,
+ 0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ed, 0x71ef, 0x71f0, 0x71f1,
+ 0x71f2, 0x71f3, 0x71f4, 0x71f5, 0x71f6, 0x71f7, 0x71f8, 0x71fa,
+ 0x71fb, 0x71fc, 0x71fd, 0x71fe, 0x71ff, 0x7200, 0x7201, 0x7202,
+ 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720a, 0x720b,
+ 0x720c, 0x720d, 0x720e, 0x720f, 0x7210, 0x7211, 0x7212, 0x7213,
+ 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721a, 0x721b,
+ 0x721c, 0x721e, 0x721f, 0x7220, 0x7221, 0x7222, 0x7223, 0x7224,
+ 0x7225, 0x7226, 0x7227, 0x7229, 0x722b, 0x722d, 0x722e, 0x722f,
+ 0x7232, 0x7233, 0x7234, 0x723a, 0x723c, 0x723e, 0x7240, 0x7241,
+ 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724a, 0x724b,
+ 0x724e, 0x724f, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257,
+ 0x7258, 0x725a, 0x725c, 0x725e, 0x7260, 0x7263, 0x7264, 0x7265,
+ 0x7268, 0x726a, 0x726b, 0x726c, 0x726d, 0x7270, 0x7271, 0x7273,
+ 0x7274, 0x7276, 0x7277, 0x7278, 0x727b, 0x727c, 0x727d, 0x7282,
+ 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728c, 0x728e,
+ 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297, 0x7298,
+ 0x7299, 0x729a, 0x729b, 0x729c, 0x729d, 0x729e, 0x72a0, 0x72a1,
+ 0x72a2, 0x72a3, 0x72a4, 0x72a5, 0x72a6, 0x72a7, 0x72a8, 0x72a9,
+ 0x72aa, 0x72ab, 0x72ae, 0x72b1, 0x72b2, 0x72b3, 0x72b5, 0x72ba,
+ 0x72bb, 0x72bc, 0x72bd, 0x72be, 0x72bf, 0x72c0, 0x72c5, 0x72c6,
+ 0x72c7, 0x72c9, 0x72ca, 0x72cb, 0x72cc, 0x72cf, 0x72d1, 0x72d3,
+ 0x72d4, 0x72d5, 0x72d6, 0x72d8, 0x72da, 0x72db,
+ /* 0xa1 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x3000, 0x3001, 0x3002, 0x00b7, 0x02c9, 0x02c7, 0x00a8, 0x3003,
+ 0x3005, 0x2014, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1,
+ 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a,
+ 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312,
+ 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d,
+ 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234,
+ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4,
+ 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb,
+ 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2,
+ 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,
+ /* 0xa2 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f,
+ 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
+ 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477,
+ 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f,
+ 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+ 0x2468, 0x2469, 0xfffd, 0xfffd, 0x3220, 0x3221, 0x3222, 0x3223,
+ 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xfffd, 0xfffd,
+ 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
+ 0x2168, 0x2169, 0x216a, 0x216b, 0xfffd, 0xfffd,
+ /* 0xa3 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08,
+ 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
+ 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
+ 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
+ 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
+ 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40,
+ 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
+ 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
+ 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
+ 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
+ /* 0xa4 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
+ 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
+ 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa5 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
+ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
+ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
+ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
+ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
+ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
+ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
+ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
+ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
+ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
+ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa6 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfe35,
+ 0xfe36, 0xfe39, 0xfe3a, 0xfe3f, 0xfe40, 0xfe3d, 0xfe3e, 0xfe41,
+ 0xfe42, 0xfe43, 0xfe44, 0xfffd, 0xfffd, 0xfe3b, 0xfe3c, 0xfe37,
+ 0xfe38, 0xfe31, 0xfffd, 0xfe33, 0xfe34, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa7 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+ 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
+ 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa8 */
+ 0x02ca, 0x02cb, 0x02d9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105,
+ 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221f, 0x2223,
+ 0x2252, 0x2266, 0x2267, 0x22bf, 0x2550, 0x2551, 0x2552, 0x2553,
+ 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b,
+ 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563,
+ 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b,
+ 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572, 0x2573,
+ 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588,
+ 0x2589, 0x258a, 0x258b, 0x258c, 0x258d, 0x258e, 0x258f, 0x2593,
+ 0x2594, 0x2595, 0x25bc, 0x25bd, 0x25e2, 0x25e3, 0x25e4, 0x25e5,
+ 0x2609, 0x2295, 0x3012, 0x301d, 0x301e, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b, 0x00e8,
+ 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
+ 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
+ 0x00fc, 0x00ea, 0x0251, 0xfffd, 0x0144, 0x0148, 0xfffd, 0x0261,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
+ 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
+ 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa9 */
+ 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028,
+ 0x3029, 0x32a3, 0x338e, 0x338f, 0x339c, 0x339d, 0x339e, 0x33a1,
+ 0x33c4, 0x33ce, 0x33d1, 0x33d2, 0x33d5, 0xfe30, 0xffe2, 0xffe4,
+ 0xfffd, 0x2121, 0x3231, 0xfffd, 0x2010, 0xfffd, 0xfffd, 0xfffd,
+ 0x30fc, 0x309b, 0x309c, 0x30fd, 0x30fe, 0x3006, 0x309d, 0x309e,
+ 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f, 0xfe50,
+ 0xfe51, 0xfe52, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xfe59, 0xfe5a,
+ 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f, 0xfe60, 0xfe61, 0xfe62,
+ 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xfe68, 0xfe69, 0xfe6a, 0xfe6b,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3007, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504,
+ 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c,
+ 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514,
+ 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c,
+ 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524,
+ 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c,
+ 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
+ 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c,
+ 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
+ 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xaa */
+ 0x72dc, 0x72dd, 0x72df, 0x72e2, 0x72e3, 0x72e4, 0x72e5, 0x72e6,
+ 0x72e7, 0x72ea, 0x72eb, 0x72f5, 0x72f6, 0x72f9, 0x72fd, 0x72fe,
+ 0x72ff, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308,
+ 0x7309, 0x730b, 0x730c, 0x730d, 0x730f, 0x7310, 0x7311, 0x7312,
+ 0x7314, 0x7318, 0x7319, 0x731a, 0x731f, 0x7320, 0x7323, 0x7324,
+ 0x7326, 0x7327, 0x7328, 0x732d, 0x732f, 0x7330, 0x7332, 0x7333,
+ 0x7335, 0x7336, 0x733a, 0x733b, 0x733c, 0x733d, 0x7340, 0x7341,
+ 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348, 0x7349,
+ 0x734a, 0x734b, 0x734c, 0x734e, 0x734f, 0x7351, 0x7353, 0x7354,
+ 0x7355, 0x7356, 0x7358, 0x7359, 0x735a, 0x735b, 0x735c, 0x735d,
+ 0x735e, 0x735f, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366,
+ 0x7367, 0x7368, 0x7369, 0x736a, 0x736b, 0x736e, 0x7370, 0x7371,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xab */
+ 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379,
+ 0x737a, 0x737b, 0x737c, 0x737d, 0x737f, 0x7380, 0x7381, 0x7382,
+ 0x7383, 0x7385, 0x7386, 0x7388, 0x738a, 0x738c, 0x738d, 0x738f,
+ 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399,
+ 0x739a, 0x739c, 0x739d, 0x739e, 0x73a0, 0x73a1, 0x73a3, 0x73a4,
+ 0x73a5, 0x73a6, 0x73a7, 0x73a8, 0x73aa, 0x73ac, 0x73ad, 0x73b1,
+ 0x73b4, 0x73b5, 0x73b6, 0x73b8, 0x73b9, 0x73bc, 0x73bd, 0x73be,
+ 0x73bf, 0x73c1, 0x73c3, 0x73c4, 0x73c5, 0x73c6, 0x73c7, 0x73cb,
+ 0x73cc, 0x73ce, 0x73d2, 0x73d3, 0x73d4, 0x73d5, 0x73d6, 0x73d7,
+ 0x73d8, 0x73da, 0x73db, 0x73dc, 0x73dd, 0x73df, 0x73e1, 0x73e2,
+ 0x73e3, 0x73e4, 0x73e6, 0x73e8, 0x73ea, 0x73eb, 0x73ec, 0x73ee,
+ 0x73ef, 0x73f0, 0x73f1, 0x73f3, 0x73f4, 0x73f5, 0x73f6, 0x73f7,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xac */
+ 0x73f8, 0x73f9, 0x73fa, 0x73fb, 0x73fc, 0x73fd, 0x73fe, 0x73ff,
+ 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740b, 0x740c,
+ 0x740d, 0x740e, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416,
+ 0x7417, 0x7418, 0x7419, 0x741c, 0x741d, 0x741e, 0x741f, 0x7420,
+ 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742b, 0x742d, 0x742f,
+ 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743a, 0x743b, 0x743d,
+ 0x743e, 0x743f, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446,
+ 0x7447, 0x7448, 0x7449, 0x744a, 0x744b, 0x744c, 0x744d, 0x744e,
+ 0x744f, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456, 0x7458,
+ 0x745d, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, 0x7466,
+ 0x7467, 0x7468, 0x7469, 0x746a, 0x746b, 0x746c, 0x746e, 0x746f,
+ 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, 0x747a,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xad */
+ 0x747b, 0x747c, 0x747d, 0x747f, 0x7482, 0x7484, 0x7485, 0x7486,
+ 0x7488, 0x7489, 0x748a, 0x748c, 0x748d, 0x748f, 0x7491, 0x7492,
+ 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749a,
+ 0x749b, 0x749d, 0x749f, 0x74a0, 0x74a1, 0x74a2, 0x74a3, 0x74a4,
+ 0x74a5, 0x74a6, 0x74aa, 0x74ab, 0x74ac, 0x74ad, 0x74ae, 0x74af,
+ 0x74b0, 0x74b1, 0x74b2, 0x74b3, 0x74b4, 0x74b5, 0x74b6, 0x74b7,
+ 0x74b8, 0x74b9, 0x74bb, 0x74bc, 0x74bd, 0x74be, 0x74bf, 0x74c0,
+ 0x74c1, 0x74c2, 0x74c3, 0x74c4, 0x74c5, 0x74c6, 0x74c7, 0x74c8,
+ 0x74c9, 0x74ca, 0x74cb, 0x74cc, 0x74cd, 0x74ce, 0x74cf, 0x74d0,
+ 0x74d1, 0x74d3, 0x74d4, 0x74d5, 0x74d6, 0x74d7, 0x74d8, 0x74d9,
+ 0x74da, 0x74db, 0x74dd, 0x74df, 0x74e1, 0x74e5, 0x74e7, 0x74e8,
+ 0x74e9, 0x74ea, 0x74eb, 0x74ec, 0x74ed, 0x74f0, 0x74f1, 0x74f2,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xae */
+ 0x74f3, 0x74f5, 0x74f8, 0x74f9, 0x74fa, 0x74fb, 0x74fc, 0x74fd,
+ 0x74fe, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507,
+ 0x7508, 0x7509, 0x750a, 0x750b, 0x750c, 0x750e, 0x7510, 0x7512,
+ 0x7514, 0x7515, 0x7516, 0x7517, 0x751b, 0x751d, 0x751e, 0x7520,
+ 0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752a, 0x752e,
+ 0x7534, 0x7536, 0x7539, 0x753c, 0x753d, 0x753f, 0x7541, 0x7542,
+ 0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754a, 0x754d, 0x7550,
+ 0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558, 0x755d,
+ 0x755e, 0x755f, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7567,
+ 0x7568, 0x7569, 0x756b, 0x756c, 0x756d, 0x756e, 0x756f, 0x7570,
+ 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757a, 0x757b, 0x757c,
+ 0x757d, 0x757e, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 0x7587,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xaf */
+ 0x7588, 0x7589, 0x758a, 0x758c, 0x758d, 0x758e, 0x7590, 0x7593,
+ 0x7595, 0x7598, 0x759b, 0x759c, 0x759e, 0x75a2, 0x75a6, 0x75a7,
+ 0x75a8, 0x75a9, 0x75aa, 0x75ad, 0x75b6, 0x75b7, 0x75ba, 0x75bb,
+ 0x75bf, 0x75c0, 0x75c1, 0x75c6, 0x75cb, 0x75cc, 0x75ce, 0x75cf,
+ 0x75d0, 0x75d1, 0x75d3, 0x75d7, 0x75d9, 0x75da, 0x75dc, 0x75dd,
+ 0x75df, 0x75e0, 0x75e1, 0x75e5, 0x75e9, 0x75ec, 0x75ed, 0x75ee,
+ 0x75ef, 0x75f2, 0x75f3, 0x75f5, 0x75f6, 0x75f7, 0x75f8, 0x75fa,
+ 0x75fb, 0x75fd, 0x75fe, 0x7602, 0x7604, 0x7606, 0x7607, 0x7608,
+ 0x7609, 0x760b, 0x760d, 0x760e, 0x760f, 0x7611, 0x7612, 0x7613,
+ 0x7614, 0x7616, 0x761a, 0x761c, 0x761d, 0x761e, 0x7621, 0x7623,
+ 0x7627, 0x7628, 0x762c, 0x762e, 0x762f, 0x7631, 0x7632, 0x7636,
+ 0x7637, 0x7639, 0x763a, 0x763b, 0x763d, 0x7641, 0x7642, 0x7644,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xb0 */
+ 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764a, 0x764b, 0x764e,
+ 0x764f, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658,
+ 0x7659, 0x765a, 0x765b, 0x765d, 0x765f, 0x7660, 0x7661, 0x7662,
+ 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766a, 0x766c,
+ 0x766d, 0x766e, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675,
+ 0x7676, 0x7677, 0x7679, 0x767a, 0x767c, 0x767f, 0x7680, 0x7681,
+ 0x7683, 0x7685, 0x7689, 0x768a, 0x768c, 0x768d, 0x768f, 0x7690,
+ 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769a, 0x769b, 0x769c,
+ 0x769d, 0x769e, 0x769f, 0x76a0, 0x76a1, 0x76a2, 0x76a3, 0x76a5,
+ 0x76a6, 0x76a7, 0x76a8, 0x76a9, 0x76aa, 0x76ab, 0x76ac, 0x76ad,
+ 0x76af, 0x76b0, 0x76b3, 0x76b5, 0x76b6, 0x76b7, 0x76b8, 0x76b9,
+ 0x76ba, 0x76bb, 0x76bc, 0x76bd, 0x76be, 0x76c0, 0x76c1, 0x76c3,
+ 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691,
+ 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d,
+ 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848,
+ 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884,
+ 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed,
+ 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776,
+ 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf,
+ 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed,
+ 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc,
+ 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886,
+ 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d,
+ 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265,
+ /* 0xb1 */
+ 0x76c4, 0x76c7, 0x76c9, 0x76cb, 0x76cc, 0x76d3, 0x76d5, 0x76d9,
+ 0x76da, 0x76dc, 0x76dd, 0x76de, 0x76e0, 0x76e1, 0x76e2, 0x76e3,
+ 0x76e4, 0x76e6, 0x76e7, 0x76e8, 0x76e9, 0x76ea, 0x76eb, 0x76ec,
+ 0x76ed, 0x76f0, 0x76f3, 0x76f5, 0x76f6, 0x76f7, 0x76fa, 0x76fb,
+ 0x76fd, 0x76ff, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770a,
+ 0x770c, 0x770e, 0x770f, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714,
+ 0x7715, 0x7716, 0x7717, 0x7718, 0x771b, 0x771c, 0x771d, 0x771e,
+ 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772a, 0x772b, 0x772c,
+ 0x772e, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773b,
+ 0x773d, 0x773e, 0x773f, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748,
+ 0x7749, 0x774a, 0x774b, 0x774c, 0x774d, 0x774e, 0x774f, 0x7752,
+ 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759, 0x775c,
+ 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5,
+ 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351,
+ 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907,
+ 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29,
+ 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4,
+ 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9,
+ 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5,
+ 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16,
+ 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab,
+ 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b,
+ 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175,
+ 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3,
+ /* 0xb2 */
+ 0x775d, 0x775e, 0x775f, 0x7760, 0x7764, 0x7767, 0x7769, 0x776a,
+ 0x776d, 0x776e, 0x776f, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774,
+ 0x7775, 0x7776, 0x7777, 0x7778, 0x777a, 0x777b, 0x777c, 0x7781,
+ 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778a, 0x778b,
+ 0x778f, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798,
+ 0x7799, 0x779a, 0x779b, 0x779c, 0x779d, 0x779e, 0x77a1, 0x77a3,
+ 0x77a4, 0x77a6, 0x77a8, 0x77ab, 0x77ad, 0x77ae, 0x77af, 0x77b1,
+ 0x77b2, 0x77b4, 0x77b6, 0x77b7, 0x77b8, 0x77b9, 0x77ba, 0x77bc,
+ 0x77be, 0x77c0, 0x77c1, 0x77c2, 0x77c3, 0x77c4, 0x77c5, 0x77c6,
+ 0x77c7, 0x77c8, 0x77c9, 0x77ca, 0x77cb, 0x77cc, 0x77ce, 0x77cf,
+ 0x77d0, 0x77d1, 0x77d2, 0x77d3, 0x77d4, 0x77d5, 0x77d6, 0x77d8,
+ 0x77d9, 0x77da, 0x77dd, 0x77de, 0x77df, 0x77e0, 0x77e1, 0x77e4,
+ 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2,
+ 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236,
+ 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa,
+ 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016,
+ 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29,
+ 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b,
+ 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf,
+ 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7,
+ 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336,
+ 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6,
+ 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20,
+ 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316,
+ /* 0xb3 */
+ 0x77e6, 0x77e8, 0x77ea, 0x77ef, 0x77f0, 0x77f1, 0x77f2, 0x77f4,
+ 0x77f5, 0x77f7, 0x77f9, 0x77fa, 0x77fb, 0x77fc, 0x7803, 0x7804,
+ 0x7805, 0x7806, 0x7807, 0x7808, 0x780a, 0x780b, 0x780e, 0x780f,
+ 0x7810, 0x7813, 0x7815, 0x7819, 0x781b, 0x781e, 0x7820, 0x7821,
+ 0x7822, 0x7824, 0x7828, 0x782a, 0x782b, 0x782e, 0x782f, 0x7831,
+ 0x7832, 0x7833, 0x7835, 0x7836, 0x783d, 0x783f, 0x7841, 0x7842,
+ 0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784a, 0x784b, 0x784d,
+ 0x784f, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785a, 0x785b,
+ 0x785c, 0x785e, 0x785f, 0x7860, 0x7861, 0x7862, 0x7863, 0x7864,
+ 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786f, 0x7870, 0x7871,
+ 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, 0x787a,
+ 0x787b, 0x787d, 0x787e, 0x787f, 0x7880, 0x7881, 0x7882, 0x7883,
+ 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e,
+ 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632,
+ 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3,
+ 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1,
+ 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59,
+ 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f,
+ 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60,
+ 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64,
+ 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0,
+ 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7,
+ 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8,
+ 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a,
+ /* 0xb4 */
+ 0x7884, 0x7885, 0x7886, 0x7888, 0x788a, 0x788b, 0x788f, 0x7890,
+ 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789d, 0x789e, 0x78a0,
+ 0x78a2, 0x78a4, 0x78a6, 0x78a8, 0x78a9, 0x78aa, 0x78ab, 0x78ac,
+ 0x78ad, 0x78ae, 0x78af, 0x78b5, 0x78b6, 0x78b7, 0x78b8, 0x78ba,
+ 0x78bb, 0x78bc, 0x78bd, 0x78bf, 0x78c0, 0x78c2, 0x78c3, 0x78c4,
+ 0x78c6, 0x78c7, 0x78c8, 0x78cc, 0x78cd, 0x78ce, 0x78cf, 0x78d1,
+ 0x78d2, 0x78d3, 0x78d6, 0x78d7, 0x78d8, 0x78da, 0x78db, 0x78dc,
+ 0x78dd, 0x78de, 0x78df, 0x78e0, 0x78e1, 0x78e2, 0x78e3, 0x78e4,
+ 0x78e5, 0x78e6, 0x78e7, 0x78e9, 0x78ea, 0x78eb, 0x78ed, 0x78ee,
+ 0x78ef, 0x78f0, 0x78f1, 0x78f3, 0x78f5, 0x78f6, 0x78f8, 0x78f9,
+ 0x78fb, 0x78fc, 0x78fd, 0x78fe, 0x78ff, 0x7900, 0x7902, 0x7903,
+ 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790a, 0x790b, 0x790c,
+ 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd,
+ 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97,
+ 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524,
+ 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822,
+ 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148,
+ 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471,
+ 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07,
+ 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106,
+ 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb,
+ 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54,
+ 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26,
+ 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e,
+ /* 0xb5 */
+ 0x790d, 0x790e, 0x790f, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915,
+ 0x7916, 0x7917, 0x7918, 0x7919, 0x791a, 0x791b, 0x791c, 0x791d,
+ 0x791f, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927,
+ 0x7928, 0x7929, 0x792a, 0x792b, 0x792c, 0x792d, 0x792e, 0x792f,
+ 0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938,
+ 0x7939, 0x793d, 0x793f, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947,
+ 0x794a, 0x794b, 0x794c, 0x794d, 0x794e, 0x794f, 0x7950, 0x7951,
+ 0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963, 0x7964,
+ 0x7966, 0x7969, 0x796a, 0x796b, 0x796c, 0x796e, 0x7970, 0x7971,
+ 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797b, 0x797c,
+ 0x797d, 0x797e, 0x797f, 0x7982, 0x7983, 0x7986, 0x7987, 0x7988,
+ 0x7989, 0x798b, 0x798c, 0x798d, 0x798e, 0x7990, 0x7991, 0x7992,
+ 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6,
+ 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb,
+ 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48,
+ 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053,
+ 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49,
+ 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c,
+ 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730,
+ 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382,
+ 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43,
+ 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc,
+ 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc,
+ 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0,
+ /* 0xb6 */
+ 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799b,
+ 0x799c, 0x799d, 0x799e, 0x799f, 0x79a0, 0x79a1, 0x79a2, 0x79a3,
+ 0x79a4, 0x79a5, 0x79a6, 0x79a8, 0x79a9, 0x79aa, 0x79ab, 0x79ac,
+ 0x79ad, 0x79ae, 0x79af, 0x79b0, 0x79b1, 0x79b2, 0x79b4, 0x79b5,
+ 0x79b6, 0x79b7, 0x79b8, 0x79bc, 0x79bf, 0x79c2, 0x79c4, 0x79c5,
+ 0x79c7, 0x79c8, 0x79ca, 0x79cc, 0x79ce, 0x79cf, 0x79d0, 0x79d3,
+ 0x79d4, 0x79d6, 0x79d7, 0x79d9, 0x79da, 0x79db, 0x79dc, 0x79dd,
+ 0x79de, 0x79e0, 0x79e1, 0x79e2, 0x79e5, 0x79e8, 0x79ea, 0x79ec,
+ 0x79ee, 0x79f1, 0x79f2, 0x79f3, 0x79f4, 0x79f5, 0x79f6, 0x79f7,
+ 0x79f9, 0x79fa, 0x79fc, 0x79fe, 0x79ff, 0x7a01, 0x7a04, 0x7a05,
+ 0x7a07, 0x7a08, 0x7a09, 0x7a0a, 0x7a0c, 0x7a0f, 0x7a10, 0x7a11,
+ 0x7a12, 0x7a13, 0x7a15, 0x7a16, 0x7a18, 0x7a19, 0x7a1b, 0x7a1c,
+ 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a,
+ 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b,
+ 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661,
+ 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec,
+ 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6,
+ 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e,
+ 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566,
+ 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a,
+ 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0,
+ 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25,
+ 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c,
+ 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c,
+ /* 0xb7 */
+ 0x7a1d, 0x7a1f, 0x7a21, 0x7a22, 0x7a24, 0x7a25, 0x7a26, 0x7a27,
+ 0x7a28, 0x7a29, 0x7a2a, 0x7a2b, 0x7a2c, 0x7a2d, 0x7a2e, 0x7a2f,
+ 0x7a30, 0x7a31, 0x7a32, 0x7a34, 0x7a35, 0x7a36, 0x7a38, 0x7a3a,
+ 0x7a3e, 0x7a40, 0x7a41, 0x7a42, 0x7a43, 0x7a44, 0x7a45, 0x7a47,
+ 0x7a48, 0x7a49, 0x7a4a, 0x7a4b, 0x7a4c, 0x7a4d, 0x7a4e, 0x7a4f,
+ 0x7a50, 0x7a52, 0x7a53, 0x7a54, 0x7a55, 0x7a56, 0x7a58, 0x7a59,
+ 0x7a5a, 0x7a5b, 0x7a5c, 0x7a5d, 0x7a5e, 0x7a5f, 0x7a60, 0x7a61,
+ 0x7a62, 0x7a63, 0x7a64, 0x7a65, 0x7a66, 0x7a67, 0x7a68, 0x7a69,
+ 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x7a6e, 0x7a6f, 0x7a71, 0x7a72,
+ 0x7a73, 0x7a75, 0x7a7b, 0x7a7c, 0x7a7d, 0x7a7e, 0x7a82, 0x7a85,
+ 0x7a87, 0x7a89, 0x7a8a, 0x7a8b, 0x7a8c, 0x7a8e, 0x7a8f, 0x7a90,
+ 0x7a93, 0x7a94, 0x7a99, 0x7a9a, 0x7a9b, 0x7a9e, 0x7aa1, 0x7aa2,
+ 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5,
+ 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492,
+ 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af,
+ 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632,
+ 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561,
+ 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8,
+ 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f,
+ 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa,
+ 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af,
+ 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b,
+ 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90,
+ 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d,
+ /* 0xb8 */
+ 0x7aa3, 0x7aa4, 0x7aa7, 0x7aa9, 0x7aaa, 0x7aab, 0x7aae, 0x7aaf,
+ 0x7ab0, 0x7ab1, 0x7ab2, 0x7ab4, 0x7ab5, 0x7ab6, 0x7ab7, 0x7ab8,
+ 0x7ab9, 0x7aba, 0x7abb, 0x7abc, 0x7abd, 0x7abe, 0x7ac0, 0x7ac1,
+ 0x7ac2, 0x7ac3, 0x7ac4, 0x7ac5, 0x7ac6, 0x7ac7, 0x7ac8, 0x7ac9,
+ 0x7aca, 0x7acc, 0x7acd, 0x7ace, 0x7acf, 0x7ad0, 0x7ad1, 0x7ad2,
+ 0x7ad3, 0x7ad4, 0x7ad5, 0x7ad7, 0x7ad8, 0x7ada, 0x7adb, 0x7adc,
+ 0x7add, 0x7ae1, 0x7ae2, 0x7ae4, 0x7ae7, 0x7ae8, 0x7ae9, 0x7aea,
+ 0x7aeb, 0x7aec, 0x7aee, 0x7af0, 0x7af1, 0x7af2, 0x7af3, 0x7af4,
+ 0x7af5, 0x7af6, 0x7af7, 0x7af8, 0x7afb, 0x7afc, 0x7afe, 0x7b00,
+ 0x7b01, 0x7b02, 0x7b05, 0x7b07, 0x7b09, 0x7b0c, 0x7b0d, 0x7b0e,
+ 0x7b10, 0x7b12, 0x7b13, 0x7b16, 0x7b17, 0x7b18, 0x7b1a, 0x7b1c,
+ 0x7b1d, 0x7b1f, 0x7b21, 0x7b22, 0x7b23, 0x7b27, 0x7b29, 0x7b2d,
+ 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85,
+ 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74,
+ 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236,
+ 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490,
+ 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89,
+ 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f,
+ 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b,
+ 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f,
+ 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c,
+ 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b,
+ 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9,
+ 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9,
+ /* 0xb9 */
+ 0x7b2f, 0x7b30, 0x7b32, 0x7b34, 0x7b35, 0x7b36, 0x7b37, 0x7b39,
+ 0x7b3b, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44,
+ 0x7b46, 0x7b48, 0x7b4a, 0x7b4d, 0x7b4e, 0x7b53, 0x7b55, 0x7b57,
+ 0x7b59, 0x7b5c, 0x7b5e, 0x7b5f, 0x7b61, 0x7b63, 0x7b64, 0x7b65,
+ 0x7b66, 0x7b67, 0x7b68, 0x7b69, 0x7b6a, 0x7b6b, 0x7b6c, 0x7b6d,
+ 0x7b6f, 0x7b70, 0x7b73, 0x7b74, 0x7b76, 0x7b78, 0x7b7a, 0x7b7c,
+ 0x7b7d, 0x7b7f, 0x7b81, 0x7b82, 0x7b83, 0x7b84, 0x7b86, 0x7b87,
+ 0x7b88, 0x7b89, 0x7b8a, 0x7b8b, 0x7b8c, 0x7b8e, 0x7b8f, 0x7b91,
+ 0x7b92, 0x7b93, 0x7b96, 0x7b98, 0x7b99, 0x7b9a, 0x7b9b, 0x7b9e,
+ 0x7b9f, 0x7ba0, 0x7ba3, 0x7ba4, 0x7ba5, 0x7bae, 0x7baf, 0x7bb0,
+ 0x7bb2, 0x7bb3, 0x7bb5, 0x7bb6, 0x7bb7, 0x7bb9, 0x7bba, 0x7bbb,
+ 0x7bbc, 0x7bbd, 0x7bbe, 0x7bbf, 0x7bc0, 0x7bc2, 0x7bc3, 0x7bc4,
+ 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a,
+ 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1,
+ 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2,
+ 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30,
+ 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37,
+ 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250,
+ 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173,
+ 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c,
+ 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845,
+ 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842,
+ 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505,
+ 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8,
+ /* 0xba */
+ 0x7bc5, 0x7bc8, 0x7bc9, 0x7bca, 0x7bcb, 0x7bcd, 0x7bce, 0x7bcf,
+ 0x7bd0, 0x7bd2, 0x7bd4, 0x7bd5, 0x7bd6, 0x7bd7, 0x7bd8, 0x7bdb,
+ 0x7bdc, 0x7bde, 0x7bdf, 0x7be0, 0x7be2, 0x7be3, 0x7be4, 0x7be7,
+ 0x7be8, 0x7be9, 0x7beb, 0x7bec, 0x7bed, 0x7bef, 0x7bf0, 0x7bf2,
+ 0x7bf3, 0x7bf4, 0x7bf5, 0x7bf6, 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfb,
+ 0x7bfd, 0x7bff, 0x7c00, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c05,
+ 0x7c06, 0x7c08, 0x7c09, 0x7c0a, 0x7c0d, 0x7c0e, 0x7c10, 0x7c11,
+ 0x7c12, 0x7c13, 0x7c14, 0x7c15, 0x7c17, 0x7c18, 0x7c19, 0x7c1a,
+ 0x7c1b, 0x7c1c, 0x7c1d, 0x7c1e, 0x7c20, 0x7c21, 0x7c22, 0x7c23,
+ 0x7c24, 0x7c25, 0x7c28, 0x7c29, 0x7c2b, 0x7c2c, 0x7c2d, 0x7c2e,
+ 0x7c2f, 0x7c30, 0x7c31, 0x7c32, 0x7c33, 0x7c34, 0x7c35, 0x7c36,
+ 0x7c37, 0x7c39, 0x7c3a, 0x7c3b, 0x7c3c, 0x7c3d, 0x7c3e, 0x7c42,
+ 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163,
+ 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a,
+ 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a,
+ 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a,
+ 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d,
+ 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2,
+ 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a,
+ 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8,
+ 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f,
+ 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c,
+ 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6,
+ 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56,
+ /* 0xbb */
+ 0x7c43, 0x7c44, 0x7c45, 0x7c46, 0x7c47, 0x7c48, 0x7c49, 0x7c4a,
+ 0x7c4b, 0x7c4c, 0x7c4e, 0x7c4f, 0x7c50, 0x7c51, 0x7c52, 0x7c53,
+ 0x7c54, 0x7c55, 0x7c56, 0x7c57, 0x7c58, 0x7c59, 0x7c5a, 0x7c5b,
+ 0x7c5c, 0x7c5d, 0x7c5e, 0x7c5f, 0x7c60, 0x7c61, 0x7c62, 0x7c63,
+ 0x7c64, 0x7c65, 0x7c66, 0x7c67, 0x7c68, 0x7c69, 0x7c6a, 0x7c6b,
+ 0x7c6c, 0x7c6d, 0x7c6e, 0x7c6f, 0x7c70, 0x7c71, 0x7c72, 0x7c75,
+ 0x7c76, 0x7c77, 0x7c78, 0x7c79, 0x7c7a, 0x7c7e, 0x7c7f, 0x7c80,
+ 0x7c81, 0x7c82, 0x7c83, 0x7c84, 0x7c85, 0x7c86, 0x7c87, 0x7c88,
+ 0x7c8a, 0x7c8b, 0x7c8c, 0x7c8d, 0x7c8e, 0x7c8f, 0x7c90, 0x7c93,
+ 0x7c94, 0x7c96, 0x7c99, 0x7c9a, 0x7c9b, 0x7ca0, 0x7ca1, 0x7ca3,
+ 0x7ca6, 0x7ca7, 0x7ca8, 0x7ca9, 0x7cab, 0x7cac, 0x7cad, 0x7caf,
+ 0x7cb0, 0x7cb4, 0x7cb5, 0x7cb6, 0x7cb7, 0x7cb8, 0x7cba, 0x7cbb,
+ 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1,
+ 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd,
+ 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853,
+ 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115,
+ 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757,
+ 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d,
+ 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de,
+ 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd,
+ 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f,
+ 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b,
+ 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e,
+ 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95,
+ /* 0xbc */
+ 0x7cbf, 0x7cc0, 0x7cc2, 0x7cc3, 0x7cc4, 0x7cc6, 0x7cc9, 0x7ccb,
+ 0x7cce, 0x7ccf, 0x7cd0, 0x7cd1, 0x7cd2, 0x7cd3, 0x7cd4, 0x7cd8,
+ 0x7cda, 0x7cdb, 0x7cdd, 0x7cde, 0x7ce1, 0x7ce2, 0x7ce3, 0x7ce4,
+ 0x7ce5, 0x7ce6, 0x7ce7, 0x7ce9, 0x7cea, 0x7ceb, 0x7cec, 0x7ced,
+ 0x7cee, 0x7cf0, 0x7cf1, 0x7cf2, 0x7cf3, 0x7cf4, 0x7cf5, 0x7cf6,
+ 0x7cf7, 0x7cf9, 0x7cfa, 0x7cfc, 0x7cfd, 0x7cfe, 0x7cff, 0x7d00,
+ 0x7d01, 0x7d02, 0x7d03, 0x7d04, 0x7d05, 0x7d06, 0x7d07, 0x7d08,
+ 0x7d09, 0x7d0b, 0x7d0c, 0x7d0d, 0x7d0e, 0x7d0f, 0x7d10, 0x7d11,
+ 0x7d12, 0x7d13, 0x7d14, 0x7d15, 0x7d16, 0x7d17, 0x7d18, 0x7d19,
+ 0x7d1a, 0x7d1b, 0x7d1c, 0x7d1d, 0x7d1e, 0x7d1f, 0x7d21, 0x7d23,
+ 0x7d24, 0x7d25, 0x7d26, 0x7d28, 0x7d29, 0x7d2a, 0x7d2c, 0x7d2d,
+ 0x7d2e, 0x7d30, 0x7d31, 0x7d32, 0x7d33, 0x7d34, 0x7d35, 0x7d36,
+ 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9,
+ 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca,
+ 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0,
+ 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d,
+ 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2,
+ 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939,
+ 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be,
+ 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1,
+ 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270,
+ 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3,
+ 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274,
+ 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6,
+ /* 0xbd */
+ 0x7d37, 0x7d38, 0x7d39, 0x7d3a, 0x7d3b, 0x7d3c, 0x7d3d, 0x7d3e,
+ 0x7d3f, 0x7d40, 0x7d41, 0x7d42, 0x7d43, 0x7d44, 0x7d45, 0x7d46,
+ 0x7d47, 0x7d48, 0x7d49, 0x7d4a, 0x7d4b, 0x7d4c, 0x7d4d, 0x7d4e,
+ 0x7d4f, 0x7d50, 0x7d51, 0x7d52, 0x7d53, 0x7d54, 0x7d55, 0x7d56,
+ 0x7d57, 0x7d58, 0x7d59, 0x7d5a, 0x7d5b, 0x7d5c, 0x7d5d, 0x7d5e,
+ 0x7d5f, 0x7d60, 0x7d61, 0x7d62, 0x7d63, 0x7d64, 0x7d65, 0x7d66,
+ 0x7d67, 0x7d68, 0x7d69, 0x7d6a, 0x7d6b, 0x7d6c, 0x7d6d, 0x7d6f,
+ 0x7d70, 0x7d71, 0x7d72, 0x7d73, 0x7d74, 0x7d75, 0x7d76, 0x7d78,
+ 0x7d79, 0x7d7a, 0x7d7b, 0x7d7c, 0x7d7d, 0x7d7e, 0x7d7f, 0x7d80,
+ 0x7d81, 0x7d82, 0x7d83, 0x7d84, 0x7d85, 0x7d86, 0x7d87, 0x7d88,
+ 0x7d89, 0x7d8a, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d8e, 0x7d8f, 0x7d90,
+ 0x7d91, 0x7d92, 0x7d93, 0x7d94, 0x7d95, 0x7d96, 0x7d97, 0x7d98,
+ 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa,
+ 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868,
+ 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901,
+ 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc,
+ 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a,
+ 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb,
+ 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a,
+ 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01,
+ 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f,
+ 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1,
+ 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb,
+ 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78,
+ /* 0xbe */
+ 0x7d99, 0x7d9a, 0x7d9b, 0x7d9c, 0x7d9d, 0x7d9e, 0x7d9f, 0x7da0,
+ 0x7da1, 0x7da2, 0x7da3, 0x7da4, 0x7da5, 0x7da7, 0x7da8, 0x7da9,
+ 0x7daa, 0x7dab, 0x7dac, 0x7dad, 0x7daf, 0x7db0, 0x7db1, 0x7db2,
+ 0x7db3, 0x7db4, 0x7db5, 0x7db6, 0x7db7, 0x7db8, 0x7db9, 0x7dba,
+ 0x7dbb, 0x7dbc, 0x7dbd, 0x7dbe, 0x7dbf, 0x7dc0, 0x7dc1, 0x7dc2,
+ 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dc7, 0x7dc8, 0x7dc9, 0x7dca,
+ 0x7dcb, 0x7dcc, 0x7dcd, 0x7dce, 0x7dcf, 0x7dd0, 0x7dd1, 0x7dd2,
+ 0x7dd3, 0x7dd4, 0x7dd5, 0x7dd6, 0x7dd7, 0x7dd8, 0x7dd9, 0x7dda,
+ 0x7ddb, 0x7ddc, 0x7ddd, 0x7dde, 0x7ddf, 0x7de0, 0x7de1, 0x7de2,
+ 0x7de3, 0x7de4, 0x7de5, 0x7de6, 0x7de7, 0x7de8, 0x7de9, 0x7dea,
+ 0x7deb, 0x7dec, 0x7ded, 0x7dee, 0x7def, 0x7df0, 0x7df1, 0x7df2,
+ 0x7df3, 0x7df4, 0x7df5, 0x7df6, 0x7df7, 0x7df8, 0x7df9, 0x7dfa,
+ 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8,
+ 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f,
+ 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756,
+ 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0,
+ 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551,
+ 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8,
+ 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9,
+ 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd,
+ 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350,
+ 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b,
+ 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd,
+ 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb,
+ /* 0xbf */
+ 0x7dfb, 0x7dfc, 0x7dfd, 0x7dfe, 0x7dff, 0x7e00, 0x7e01, 0x7e02,
+ 0x7e03, 0x7e04, 0x7e05, 0x7e06, 0x7e07, 0x7e08, 0x7e09, 0x7e0a,
+ 0x7e0b, 0x7e0c, 0x7e0d, 0x7e0e, 0x7e0f, 0x7e10, 0x7e11, 0x7e12,
+ 0x7e13, 0x7e14, 0x7e15, 0x7e16, 0x7e17, 0x7e18, 0x7e19, 0x7e1a,
+ 0x7e1b, 0x7e1c, 0x7e1d, 0x7e1e, 0x7e1f, 0x7e20, 0x7e21, 0x7e22,
+ 0x7e23, 0x7e24, 0x7e25, 0x7e26, 0x7e27, 0x7e28, 0x7e29, 0x7e2a,
+ 0x7e2b, 0x7e2c, 0x7e2d, 0x7e2e, 0x7e2f, 0x7e30, 0x7e31, 0x7e32,
+ 0x7e33, 0x7e34, 0x7e35, 0x7e36, 0x7e37, 0x7e38, 0x7e39, 0x7e3a,
+ 0x7e3c, 0x7e3d, 0x7e3e, 0x7e3f, 0x7e40, 0x7e42, 0x7e43, 0x7e44,
+ 0x7e45, 0x7e46, 0x7e48, 0x7e49, 0x7e4a, 0x7e4b, 0x7e4c, 0x7e4d,
+ 0x7e4e, 0x7e4f, 0x7e50, 0x7e51, 0x7e52, 0x7e53, 0x7e54, 0x7e55,
+ 0x7e56, 0x7e57, 0x7e58, 0x7e59, 0x7e5a, 0x7e5b, 0x7e5c, 0x7e5d,
+ 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361,
+ 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a,
+ 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b,
+ 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760, 0x5777,
+ 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3, 0x54b3,
+ 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af, 0x5543,
+ 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54, 0x63a7,
+ 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f, 0x82e6,
+ 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8, 0x80ef,
+ 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321, 0x7b50,
+ 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f, 0x76d4,
+ 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080,
+ /* 0xc0 */
+ 0x7e5e, 0x7e5f, 0x7e60, 0x7e61, 0x7e62, 0x7e63, 0x7e64, 0x7e65,
+ 0x7e66, 0x7e67, 0x7e68, 0x7e69, 0x7e6a, 0x7e6b, 0x7e6c, 0x7e6d,
+ 0x7e6e, 0x7e6f, 0x7e70, 0x7e71, 0x7e72, 0x7e73, 0x7e74, 0x7e75,
+ 0x7e76, 0x7e77, 0x7e78, 0x7e79, 0x7e7a, 0x7e7b, 0x7e7c, 0x7e7d,
+ 0x7e7e, 0x7e7f, 0x7e80, 0x7e81, 0x7e83, 0x7e84, 0x7e85, 0x7e86,
+ 0x7e87, 0x7e88, 0x7e89, 0x7e8a, 0x7e8b, 0x7e8c, 0x7e8d, 0x7e8e,
+ 0x7e8f, 0x7e90, 0x7e91, 0x7e92, 0x7e93, 0x7e94, 0x7e95, 0x7e96,
+ 0x7e97, 0x7e98, 0x7e99, 0x7e9a, 0x7e9c, 0x7e9d, 0x7e9e, 0x7eae,
+ 0x7eb4, 0x7ebb, 0x7ebc, 0x7ed6, 0x7ee4, 0x7eec, 0x7ef9, 0x7f0a,
+ 0x7f10, 0x7f1e, 0x7f37, 0x7f39, 0x7f3b, 0x7f3c, 0x7f3d, 0x7f3e,
+ 0x7f3f, 0x7f40, 0x7f41, 0x7f43, 0x7f46, 0x7f47, 0x7f48, 0x7f49,
+ 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f, 0x7f52, 0x7f53,
+ 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0, 0x62ec,
+ 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721, 0x814a,
+ 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a, 0x680f,
+ 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd, 0x89c8,
+ 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc, 0x5eca,
+ 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001, 0x4f6c,
+ 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7, 0x956d,
+ 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b, 0x7c7b,
+ 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281, 0x9ece,
+ 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc, 0x9ca4,
+ 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389, 0x52b1,
+ 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0,
+ /* 0xc1 */
+ 0x7f56, 0x7f59, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f60, 0x7f63,
+ 0x7f64, 0x7f65, 0x7f66, 0x7f67, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6f,
+ 0x7f70, 0x7f73, 0x7f75, 0x7f76, 0x7f77, 0x7f78, 0x7f7a, 0x7f7b,
+ 0x7f7c, 0x7f7d, 0x7f7f, 0x7f80, 0x7f82, 0x7f83, 0x7f84, 0x7f85,
+ 0x7f86, 0x7f87, 0x7f88, 0x7f89, 0x7f8b, 0x7f8d, 0x7f8f, 0x7f90,
+ 0x7f91, 0x7f92, 0x7f93, 0x7f95, 0x7f96, 0x7f97, 0x7f98, 0x7f99,
+ 0x7f9b, 0x7f9c, 0x7fa0, 0x7fa2, 0x7fa3, 0x7fa5, 0x7fa6, 0x7fa8,
+ 0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7fb1, 0x7fb3,
+ 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7, 0x7fba, 0x7fbb, 0x7fbe, 0x7fc0,
+ 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc6, 0x7fc7, 0x7fc8, 0x7fc9, 0x7fcb,
+ 0x7fcd, 0x7fcf, 0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd6, 0x7fd7,
+ 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fe2, 0x7fe3,
+ 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9,
+ 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f,
+ 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae,
+ 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e,
+ 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5,
+ 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217,
+ 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716,
+ 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce,
+ 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc,
+ 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409,
+ 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3,
+ 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf,
+ /* 0xc2 */
+ 0x7fe4, 0x7fe7, 0x7fe8, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fef,
+ 0x7ff2, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7, 0x7ff8, 0x7ff9, 0x7ffa,
+ 0x7ffd, 0x7ffe, 0x7fff, 0x8002, 0x8007, 0x8008, 0x8009, 0x800a,
+ 0x800e, 0x800f, 0x8011, 0x8013, 0x801a, 0x801b, 0x801d, 0x801e,
+ 0x801f, 0x8021, 0x8023, 0x8024, 0x802b, 0x802c, 0x802d, 0x802e,
+ 0x802f, 0x8030, 0x8032, 0x8034, 0x8039, 0x803a, 0x803c, 0x803e,
+ 0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804e,
+ 0x804f, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0x8059,
+ 0x805b, 0x805c, 0x805d, 0x805e, 0x805f, 0x8060, 0x8061, 0x8062,
+ 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806b, 0x806c,
+ 0x806d, 0x806e, 0x806f, 0x8070, 0x8072, 0x8073, 0x8074, 0x8075,
+ 0x8076, 0x8077, 0x8078, 0x8079, 0x807a, 0x807b, 0x807c, 0x807d,
+ 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3,
+ 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3,
+ 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42,
+ 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415,
+ 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f,
+ 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6,
+ 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1,
+ 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523,
+ 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988,
+ 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417,
+ 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992,
+ 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b,
+ /* 0xc3 */
+ 0x807e, 0x8081, 0x8082, 0x8085, 0x8088, 0x808a, 0x808d, 0x808e,
+ 0x808f, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099,
+ 0x809e, 0x80a3, 0x80a6, 0x80a7, 0x80a8, 0x80ac, 0x80b0, 0x80b3,
+ 0x80b5, 0x80b6, 0x80b8, 0x80b9, 0x80bb, 0x80c5, 0x80c7, 0x80c8,
+ 0x80c9, 0x80ca, 0x80cb, 0x80cf, 0x80d0, 0x80d1, 0x80d2, 0x80d3,
+ 0x80d4, 0x80d5, 0x80d8, 0x80df, 0x80e0, 0x80e2, 0x80e3, 0x80e6,
+ 0x80ee, 0x80f5, 0x80f7, 0x80f9, 0x80fb, 0x80fe, 0x80ff, 0x8100,
+ 0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810b, 0x810c,
+ 0x8115, 0x8117, 0x8119, 0x811b, 0x811c, 0x811d, 0x811f, 0x8120,
+ 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, 0x8128,
+ 0x8129, 0x812a, 0x812b, 0x812d, 0x812e, 0x8130, 0x8133, 0x8134,
+ 0x8135, 0x8137, 0x8139, 0x813a, 0x813b, 0x813c, 0x813d, 0x813f,
+ 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd, 0x732b,
+ 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302, 0x5192,
+ 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885, 0x9176,
+ 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf, 0x7f8e,
+ 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec, 0x840c,
+ 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f, 0x772f,
+ 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73, 0x79d8,
+ 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720, 0x7ef5,
+ 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7, 0x63cf,
+ 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511, 0x706d,
+ 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e, 0x879f,
+ 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478,
+ /* 0xc4 */
+ 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149,
+ 0x814d, 0x814e, 0x814f, 0x8152, 0x8156, 0x8157, 0x8158, 0x815b,
+ 0x815c, 0x815d, 0x815e, 0x815f, 0x8161, 0x8162, 0x8163, 0x8164,
+ 0x8166, 0x8168, 0x816a, 0x816b, 0x816c, 0x816f, 0x8172, 0x8173,
+ 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185,
+ 0x8186, 0x8187, 0x8189, 0x818b, 0x818c, 0x818d, 0x818e, 0x8190,
+ 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819a,
+ 0x819e, 0x819f, 0x81a0, 0x81a1, 0x81a2, 0x81a4, 0x81a5, 0x81a7,
+ 0x81a9, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1,
+ 0x81b2, 0x81b4, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0x81bc,
+ 0x81bd, 0x81be, 0x81bf, 0x81c4, 0x81c5, 0x81c7, 0x81c8, 0x81c9,
+ 0x81cb, 0x81cd, 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2, 0x81d3,
+ 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54, 0x62b9,
+ 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde, 0x964c,
+ 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6, 0x6bcd,
+ 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee, 0x7766,
+ 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3, 0x5a1c,
+ 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537,
+ 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6, 0x5462,
+ 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a, 0x6ce5,
+ 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba, 0x852b,
+ 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18, 0x917f,
+ 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a, 0x954d,
+ 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81,
+ /* 0xc5 */
+ 0x81d4, 0x81d5, 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db,
+ 0x81dc, 0x81dd, 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e4,
+ 0x81e5, 0x81e6, 0x81e8, 0x81e9, 0x81eb, 0x81ee, 0x81ef, 0x81f0,
+ 0x81f1, 0x81f2, 0x81f5, 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa,
+ 0x81fd, 0x81ff, 0x8203, 0x8207, 0x8208, 0x8209, 0x820a, 0x820b,
+ 0x820e, 0x820f, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218,
+ 0x8219, 0x821a, 0x821d, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227,
+ 0x8229, 0x822e, 0x8232, 0x823a, 0x823c, 0x823d, 0x823f, 0x8240,
+ 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824a, 0x824c,
+ 0x824d, 0x824e, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255,
+ 0x8256, 0x8257, 0x8259, 0x825b, 0x825c, 0x825d, 0x825e, 0x8260,
+ 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8269,
+ 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53,
+ 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650,
+ 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25,
+ 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c,
+ 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43,
+ 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224,
+ 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486,
+ 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9,
+ 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6,
+ 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c,
+ 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812,
+ 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7,
+ /* 0xc6 */
+ 0x826a, 0x826b, 0x826c, 0x826d, 0x8271, 0x8275, 0x8276, 0x8277,
+ 0x8278, 0x827b, 0x827c, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286,
+ 0x8287, 0x8289, 0x828c, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296,
+ 0x829a, 0x829b, 0x829e, 0x82a0, 0x82a2, 0x82a3, 0x82a7, 0x82b2,
+ 0x82b5, 0x82b6, 0x82ba, 0x82bb, 0x82bc, 0x82bf, 0x82c0, 0x82c2,
+ 0x82c3, 0x82c5, 0x82c6, 0x82c9, 0x82d0, 0x82d6, 0x82d9, 0x82da,
+ 0x82dd, 0x82e2, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82ec, 0x82ed,
+ 0x82ee, 0x82f0, 0x82f2, 0x82f3, 0x82f5, 0x82f6, 0x82f8, 0x82fa,
+ 0x82fc, 0x82fd, 0x82fe, 0x82ff, 0x8300, 0x830a, 0x830b, 0x830d,
+ 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831d, 0x831e,
+ 0x831f, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326,
+ 0x8329, 0x832a, 0x832e, 0x8330, 0x8332, 0x8337, 0x833b, 0x833d,
+ 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41,
+ 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2,
+ 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058,
+ 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4,
+ 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb,
+ 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9,
+ 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd,
+ 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4,
+ 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566,
+ 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77,
+ 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14,
+ 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390,
+ /* 0xc7 */
+ 0x833e, 0x833f, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834a,
+ 0x834b, 0x834c, 0x834d, 0x834e, 0x8353, 0x8355, 0x8356, 0x8357,
+ 0x8358, 0x8359, 0x835d, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373,
+ 0x8374, 0x8375, 0x8376, 0x8379, 0x837a, 0x837e, 0x837f, 0x8380,
+ 0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838a, 0x838b,
+ 0x838c, 0x838d, 0x838f, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396,
+ 0x8397, 0x8399, 0x839a, 0x839d, 0x839f, 0x83a1, 0x83a2, 0x83a3,
+ 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83ac, 0x83ad, 0x83ae, 0x83af,
+ 0x83b5, 0x83bb, 0x83be, 0x83bf, 0x83c2, 0x83c3, 0x83c4, 0x83c6,
+ 0x83c8, 0x83c9, 0x83cb, 0x83cd, 0x83ce, 0x83d0, 0x83d1, 0x83d2,
+ 0x83d3, 0x83d5, 0x83d7, 0x83d9, 0x83da, 0x83db, 0x83de, 0x83e2,
+ 0x83e3, 0x83e4, 0x83e6, 0x83e7, 0x83e8, 0x83eb, 0x83ec, 0x83ed,
+ 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343, 0x8fc1,
+ 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3, 0x524d,
+ 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20, 0x6b49,
+ 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a, 0x62a2,
+ 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54, 0x4fa8,
+ 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d, 0x5207,
+ 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2, 0x79e6,
+ 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81, 0x9752,
+ 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674, 0x6c30,
+ 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb, 0x4e18,
+ 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b, 0x533a,
+ 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20,
+ /* 0xc8 */
+ 0x83ee, 0x83ef, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83fa,
+ 0x83fb, 0x83fc, 0x83fe, 0x83ff, 0x8400, 0x8402, 0x8405, 0x8407,
+ 0x8408, 0x8409, 0x840a, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415,
+ 0x8416, 0x8417, 0x8419, 0x841a, 0x841b, 0x841e, 0x841f, 0x8420,
+ 0x8421, 0x8422, 0x8423, 0x8429, 0x842a, 0x842b, 0x842c, 0x842d,
+ 0x842e, 0x842f, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436,
+ 0x8437, 0x8439, 0x843a, 0x843b, 0x843e, 0x843f, 0x8440, 0x8441,
+ 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449, 0x844a,
+ 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, 0x8450, 0x8452, 0x8453,
+ 0x8454, 0x8455, 0x8456, 0x8458, 0x845d, 0x845e, 0x845f, 0x8460,
+ 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846a, 0x846e,
+ 0x846f, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847b, 0x847c,
+ 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7, 0x6743,
+ 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238, 0x529d,
+ 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e, 0x96c0,
+ 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4, 0x58e4,
+ 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9, 0x70ed,
+ 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4, 0x5203,
+ 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338, 0x84c9,
+ 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197, 0x63c9,
+ 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982, 0x8fb1,
+ 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a, 0x745e,
+ 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12, 0x8428,
+ 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1,
+ /* 0xc9 */
+ 0x847d, 0x847e, 0x847f, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485,
+ 0x8486, 0x848a, 0x848d, 0x848f, 0x8490, 0x8491, 0x8492, 0x8493,
+ 0x8494, 0x8495, 0x8496, 0x8498, 0x849a, 0x849b, 0x849d, 0x849e,
+ 0x849f, 0x84a0, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7,
+ 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84b0,
+ 0x84b1, 0x84b3, 0x84b5, 0x84b6, 0x84b7, 0x84bb, 0x84bc, 0x84be,
+ 0x84c0, 0x84c2, 0x84c3, 0x84c5, 0x84c6, 0x84c7, 0x84c8, 0x84cb,
+ 0x84cc, 0x84ce, 0x84cf, 0x84d2, 0x84d4, 0x84d5, 0x84d7, 0x84d8,
+ 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84de, 0x84e1, 0x84e2, 0x84e4,
+ 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ed, 0x84ee, 0x84ef,
+ 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7, 0x84f8,
+ 0x84f9, 0x84fa, 0x84fb, 0x84fd, 0x84fe, 0x8500, 0x8501, 0x8502,
+ 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b,
+ 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802,
+ 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b,
+ 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b,
+ 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247,
+ 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a,
+ 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6,
+ 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c,
+ 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe,
+ 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5,
+ 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17,
+ 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3,
+ /* 0xca */
+ 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850a,
+ 0x850b, 0x850d, 0x850e, 0x850f, 0x8510, 0x8512, 0x8514, 0x8515,
+ 0x8516, 0x8518, 0x8519, 0x851b, 0x851c, 0x851d, 0x851e, 0x8520,
+ 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529,
+ 0x852a, 0x852d, 0x852e, 0x852f, 0x8530, 0x8531, 0x8532, 0x8533,
+ 0x8534, 0x8535, 0x8536, 0x853e, 0x853f, 0x8540, 0x8541, 0x8542,
+ 0x8544, 0x8545, 0x8546, 0x8547, 0x854b, 0x854c, 0x854d, 0x854e,
+ 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8557,
+ 0x8558, 0x855a, 0x855b, 0x855c, 0x855d, 0x855f, 0x8560, 0x8561,
+ 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856a, 0x856b,
+ 0x856c, 0x856d, 0x856e, 0x856f, 0x8570, 0x8571, 0x8573, 0x8575,
+ 0x8576, 0x8577, 0x8578, 0x857c, 0x857d, 0x857f, 0x8580, 0x8581,
+ 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee,
+ 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe,
+ 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2,
+ 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16,
+ 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc,
+ 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02,
+ 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88,
+ 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2,
+ 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f,
+ 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72,
+ 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f,
+ 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31,
+ /* 0xcb */
+ 0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858a, 0x858b, 0x858c,
+ 0x858d, 0x858e, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595,
+ 0x8596, 0x8597, 0x8598, 0x8599, 0x859a, 0x859d, 0x859e, 0x859f,
+ 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a5, 0x85a6, 0x85a7, 0x85a9,
+ 0x85ab, 0x85ac, 0x85ad, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5,
+ 0x85b6, 0x85b8, 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf,
+ 0x85c0, 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8,
+ 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85d1, 0x85d2, 0x85d4,
+ 0x85d6, 0x85d7, 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dd, 0x85de,
+ 0x85df, 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e5, 0x85e6, 0x85e7,
+ 0x85e8, 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, 0x85f0,
+ 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8,
+ 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05, 0x6813,
+ 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761, 0x7a0e,
+ 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714, 0x70c1,
+ 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d, 0x6b7b,
+ 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972, 0x5df3,
+ 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc, 0x8bf5,
+ 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7, 0x7d20,
+ 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9, 0x8083,
+ 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5, 0x9ad3,
+ 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59, 0x635f,
+ 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22, 0x9501,
+ 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854,
+ /* 0xcc */
+ 0x85f9, 0x85fa, 0x85fc, 0x85fd, 0x85fe, 0x8600, 0x8601, 0x8602,
+ 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860a, 0x860b,
+ 0x860c, 0x860d, 0x860e, 0x860f, 0x8610, 0x8612, 0x8613, 0x8614,
+ 0x8615, 0x8617, 0x8618, 0x8619, 0x861a, 0x861b, 0x861c, 0x861d,
+ 0x861e, 0x861f, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625,
+ 0x8626, 0x8628, 0x862a, 0x862b, 0x862c, 0x862d, 0x862e, 0x862f,
+ 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637,
+ 0x8639, 0x863a, 0x863b, 0x863d, 0x863e, 0x863f, 0x8640, 0x8641,
+ 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649,
+ 0x864a, 0x864b, 0x864c, 0x8652, 0x8653, 0x8655, 0x8656, 0x8657,
+ 0x8658, 0x8659, 0x865b, 0x865c, 0x865d, 0x865f, 0x8660, 0x8661,
+ 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a,
+ 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac, 0x53f0,
+ 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a, 0x8d2a,
+ 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d, 0x8c08,
+ 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad, 0x6c64,
+ 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6, 0x5018,
+ 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4, 0x7ee6,
+ 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957, 0x7279,
+ 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22, 0x9511,
+ 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f, 0x60d5,
+ 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530, 0x751c,
+ 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a, 0x8df3,
+ 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3,
+ /* 0xcd */
+ 0x866d, 0x866f, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676,
+ 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688,
+ 0x8689, 0x868e, 0x868f, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696,
+ 0x8697, 0x8698, 0x8699, 0x869a, 0x869b, 0x869e, 0x869f, 0x86a0,
+ 0x86a1, 0x86a2, 0x86a5, 0x86a6, 0x86ab, 0x86ad, 0x86ae, 0x86b2,
+ 0x86b3, 0x86b7, 0x86b8, 0x86b9, 0x86bb, 0x86bc, 0x86bd, 0x86be,
+ 0x86bf, 0x86c1, 0x86c2, 0x86c3, 0x86c5, 0x86c8, 0x86cc, 0x86cd,
+ 0x86d2, 0x86d3, 0x86d5, 0x86d6, 0x86d7, 0x86da, 0x86dc, 0x86dd,
+ 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e5, 0x86e6, 0x86e7, 0x86e8,
+ 0x86ea, 0x86eb, 0x86ec, 0x86ef, 0x86f5, 0x86f6, 0x86f7, 0x86fa,
+ 0x86fb, 0x86fc, 0x86fd, 0x86ff, 0x8701, 0x8704, 0x8705, 0x8706,
+ 0x870b, 0x870c, 0x870e, 0x870f, 0x8710, 0x8711, 0x8714, 0x8716,
+ 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a,
+ 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876,
+ 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f,
+ 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60,
+ 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f,
+ 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258,
+ 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3,
+ 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c,
+ 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38,
+ 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b,
+ 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51,
+ 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01,
+ /* 0xce */
+ 0x8719, 0x871b, 0x871d, 0x871f, 0x8720, 0x8724, 0x8726, 0x8727,
+ 0x8728, 0x872a, 0x872b, 0x872c, 0x872d, 0x872f, 0x8730, 0x8732,
+ 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873a, 0x873c, 0x873d,
+ 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874a,
+ 0x874b, 0x874d, 0x874f, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755,
+ 0x8756, 0x8758, 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f,
+ 0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b,
+ 0x876c, 0x876d, 0x876f, 0x8771, 0x8772, 0x8773, 0x8775, 0x8777,
+ 0x8778, 0x8779, 0x877a, 0x877f, 0x8780, 0x8781, 0x8784, 0x8786,
+ 0x8787, 0x8789, 0x878a, 0x878c, 0x878e, 0x878f, 0x8790, 0x8791,
+ 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879a, 0x879b,
+ 0x879c, 0x879d, 0x879e, 0x87a0, 0x87a1, 0x87a2, 0x87a3, 0x87a4,
+ 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f,
+ 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f,
+ 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3,
+ 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b,
+ 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33,
+ 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1,
+ 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c,
+ 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7,
+ 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e,
+ 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff,
+ 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852,
+ 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a,
+ /* 0xcf */
+ 0x87a5, 0x87a6, 0x87a7, 0x87a9, 0x87aa, 0x87ae, 0x87b0, 0x87b1,
+ 0x87b2, 0x87b4, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87bb, 0x87bc,
+ 0x87be, 0x87bf, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c7,
+ 0x87c8, 0x87c9, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d4,
+ 0x87d5, 0x87d6, 0x87d7, 0x87d8, 0x87d9, 0x87da, 0x87dc, 0x87dd,
+ 0x87de, 0x87df, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e6, 0x87e7,
+ 0x87e8, 0x87e9, 0x87eb, 0x87ec, 0x87ed, 0x87ef, 0x87f0, 0x87f1,
+ 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7, 0x87f8, 0x87fa,
+ 0x87fb, 0x87fc, 0x87fd, 0x87ff, 0x8800, 0x8801, 0x8802, 0x8804,
+ 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880b, 0x880c, 0x880d,
+ 0x880e, 0x880f, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817, 0x8818,
+ 0x8819, 0x881a, 0x881c, 0x881d, 0x881e, 0x881f, 0x8820, 0x8823,
+ 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc, 0x7184,
+ 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d, 0x4e60,
+ 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f, 0x7ec6,
+ 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1, 0x4fa0,
+ 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528, 0x5148,
+ 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237, 0x95f2,
+ 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e, 0x53bf,
+ 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf, 0x76f8,
+ 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61, 0x7fd4,
+ 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7, 0x6a61,
+ 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a, 0x54ee,
+ 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653,
+ /* 0xd0 */
+ 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882a, 0x882b,
+ 0x882c, 0x882d, 0x882e, 0x882f, 0x8830, 0x8831, 0x8833, 0x8834,
+ 0x8835, 0x8836, 0x8837, 0x8838, 0x883a, 0x883b, 0x883d, 0x883e,
+ 0x883f, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849,
+ 0x884a, 0x884b, 0x884e, 0x884f, 0x8850, 0x8851, 0x8852, 0x8853,
+ 0x8855, 0x8856, 0x8858, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e,
+ 0x885f, 0x8860, 0x8866, 0x8867, 0x886a, 0x886d, 0x886f, 0x8871,
+ 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887a, 0x887b,
+ 0x887c, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888a, 0x888c,
+ 0x888e, 0x888f, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895, 0x8897,
+ 0x8898, 0x8899, 0x889a, 0x889b, 0x889d, 0x889e, 0x889f, 0x88a0,
+ 0x88a1, 0x88a3, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa,
+ 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548, 0x6954,
+ 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a, 0x90aa,
+ 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9, 0x61c8,
+ 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x6b23,
+ 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f, 0x8165,
+ 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2, 0x884c,
+ 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6, 0x80f8,
+ 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e, 0x673d,
+ 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c, 0x9700,
+ 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157, 0x53d9,
+ 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea, 0x7eed,
+ 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384,
+ /* 0xd1 */
+ 0x88ac, 0x88ae, 0x88af, 0x88b0, 0x88b2, 0x88b3, 0x88b4, 0x88b5,
+ 0x88b6, 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bd, 0x88be, 0x88bf,
+ 0x88c0, 0x88c3, 0x88c4, 0x88c7, 0x88c8, 0x88ca, 0x88cb, 0x88cc,
+ 0x88cd, 0x88cf, 0x88d0, 0x88d1, 0x88d3, 0x88d6, 0x88d7, 0x88da,
+ 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88e0, 0x88e1, 0x88e6, 0x88e7,
+ 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f2,
+ 0x88f5, 0x88f6, 0x88f7, 0x88fa, 0x88fb, 0x88fd, 0x88ff, 0x8900,
+ 0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908, 0x8909,
+ 0x890b, 0x890c, 0x890d, 0x890e, 0x890f, 0x8911, 0x8914, 0x8915,
+ 0x8916, 0x8917, 0x8918, 0x891c, 0x891d, 0x891e, 0x891f, 0x8920,
+ 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929, 0x892c,
+ 0x892d, 0x892e, 0x892f, 0x8931, 0x8932, 0x8933, 0x8935, 0x8937,
+ 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74,
+ 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb,
+ 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5,
+ 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259,
+ 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6,
+ 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814,
+ 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf,
+ 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5,
+ 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a,
+ 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f,
+ 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b,
+ 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476,
+ /* 0xd2 */
+ 0x8938, 0x8939, 0x893a, 0x893b, 0x893c, 0x893d, 0x893e, 0x893f,
+ 0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949,
+ 0x894a, 0x894b, 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951,
+ 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959,
+ 0x895a, 0x895b, 0x895c, 0x895d, 0x8960, 0x8961, 0x8962, 0x8963,
+ 0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b, 0x896c,
+ 0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974,
+ 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897c, 0x897d,
+ 0x897e, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989,
+ 0x898a, 0x898b, 0x898c, 0x898d, 0x898e, 0x898f, 0x8990, 0x8991,
+ 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999,
+ 0x899a, 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1,
+ 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200,
+ 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce,
+ 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b,
+ 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d,
+ 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0,
+ 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a,
+ 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091,
+ 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6,
+ 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3,
+ 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335,
+ 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6,
+ 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690,
+ /* 0xd3 */
+ 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, 0x89a8, 0x89a9,
+ 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0, 0x89b1,
+ 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9,
+ 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89be, 0x89bf, 0x89c0, 0x89c3,
+ 0x89cd, 0x89d3, 0x89d4, 0x89d5, 0x89d7, 0x89d8, 0x89d9, 0x89db,
+ 0x89dd, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e4, 0x89e7, 0x89e8,
+ 0x89e9, 0x89ea, 0x89ec, 0x89ed, 0x89ee, 0x89f0, 0x89f1, 0x89f2,
+ 0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0x89fb,
+ 0x89fc, 0x89fd, 0x89fe, 0x89ff, 0x8a01, 0x8a02, 0x8a03, 0x8a04,
+ 0x8a05, 0x8a06, 0x8a08, 0x8a09, 0x8a0a, 0x8a0b, 0x8a0c, 0x8a0d,
+ 0x8a0e, 0x8a0f, 0x8a10, 0x8a11, 0x8a12, 0x8a13, 0x8a14, 0x8a15,
+ 0x8a16, 0x8a17, 0x8a18, 0x8a19, 0x8a1a, 0x8a1b, 0x8a1c, 0x8a1d,
+ 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28, 0x83b9,
+ 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8, 0x5f71,
+ 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3, 0x75c8,
+ 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c, 0x6c38,
+ 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7, 0x5c24,
+ 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149, 0x6709,
+ 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2,
+ 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206, 0x4f59,
+ 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685, 0x4e88,
+ 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed, 0x7fbd,
+ 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb, 0x5cea,
+ 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89,
+ /* 0xd4 */
+ 0x8a1e, 0x8a1f, 0x8a20, 0x8a21, 0x8a22, 0x8a23, 0x8a24, 0x8a25,
+ 0x8a26, 0x8a27, 0x8a28, 0x8a29, 0x8a2a, 0x8a2b, 0x8a2c, 0x8a2d,
+ 0x8a2e, 0x8a2f, 0x8a30, 0x8a31, 0x8a32, 0x8a33, 0x8a34, 0x8a35,
+ 0x8a36, 0x8a37, 0x8a38, 0x8a39, 0x8a3a, 0x8a3b, 0x8a3c, 0x8a3d,
+ 0x8a3f, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46,
+ 0x8a47, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e, 0x8a4f,
+ 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57,
+ 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f,
+ 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67,
+ 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f,
+ 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77,
+ 0x8a78, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e, 0x8a7f, 0x8a80,
+ 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33, 0x6e0a,
+ 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95, 0x56ed,
+ 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1, 0x613f,
+ 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5, 0x5cb3,
+ 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7, 0x5300,
+ 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5, 0x5b55,
+ 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0, 0x8f7d,
+ 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43, 0x810f,
+ 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9, 0x6fa1,
+ 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5, 0x8d23,
+ 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e, 0x66fe,
+ 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67,
+ /* 0xd5 */
+ 0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85, 0x8a86, 0x8a87, 0x8a88,
+ 0x8a8b, 0x8a8c, 0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a92,
+ 0x8a94, 0x8a95, 0x8a96, 0x8a97, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b,
+ 0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f, 0x8aa0, 0x8aa1, 0x8aa2, 0x8aa3,
+ 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab,
+ 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3,
+ 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8, 0x8ab9, 0x8aba, 0x8abb,
+ 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0, 0x8ac1, 0x8ac2, 0x8ac3,
+ 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9, 0x8aca, 0x8acb,
+ 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad2, 0x8ad3,
+ 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, 0x8ad9, 0x8ada, 0x8adb,
+ 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3,
+ 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8,
+ 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb,
+ 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d,
+ 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd,
+ 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756,
+ 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db,
+ 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087,
+ 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517,
+ 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827,
+ 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707,
+ 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0,
+ 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f,
+ /* 0xd6 */
+ 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb,
+ 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0, 0x8af1, 0x8af2, 0x8af3,
+ 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9, 0x8afa, 0x8afb,
+ 0x8afc, 0x8afd, 0x8afe, 0x8aff, 0x8b00, 0x8b01, 0x8b02, 0x8b03,
+ 0x8b04, 0x8b05, 0x8b06, 0x8b08, 0x8b09, 0x8b0a, 0x8b0b, 0x8b0c,
+ 0x8b0d, 0x8b0e, 0x8b0f, 0x8b10, 0x8b11, 0x8b12, 0x8b13, 0x8b14,
+ 0x8b15, 0x8b16, 0x8b17, 0x8b18, 0x8b19, 0x8b1a, 0x8b1b, 0x8b1c,
+ 0x8b1d, 0x8b1e, 0x8b1f, 0x8b20, 0x8b21, 0x8b22, 0x8b23, 0x8b24,
+ 0x8b25, 0x8b27, 0x8b28, 0x8b29, 0x8b2a, 0x8b2b, 0x8b2c, 0x8b2d,
+ 0x8b2e, 0x8b2f, 0x8b30, 0x8b31, 0x8b32, 0x8b33, 0x8b34, 0x8b35,
+ 0x8b36, 0x8b37, 0x8b38, 0x8b39, 0x8b3a, 0x8b3b, 0x8b3c, 0x8b3d,
+ 0x8b3e, 0x8b3f, 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45,
+ 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431,
+ 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c,
+ 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307,
+ 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7,
+ 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9,
+ 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d,
+ 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd,
+ 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5,
+ 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4,
+ 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010,
+ 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457,
+ 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51,
+ /* 0xd7 */
+ 0x8b46, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d,
+ 0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b52, 0x8b53, 0x8b54, 0x8b55,
+ 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d,
+ 0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65,
+ 0x8b67, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6d, 0x8b6e, 0x8b6f,
+ 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77,
+ 0x8b78, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8b7f,
+ 0x8b80, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85, 0x8b86, 0x8b87,
+ 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d, 0x8b8e, 0x8b8f,
+ 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95, 0x8b96, 0x8b97,
+ 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, 0x8b9e, 0x8b9f,
+ 0x8bac, 0x8bb1, 0x8bbb, 0x8bc7, 0x8bd0, 0x8bea, 0x8c09, 0x8c1e,
+ 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd, 0x4e13,
+ 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84, 0x88c5,
+ 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd, 0x8d58,
+ 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353, 0x684c,
+ 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a, 0x5179,
+ 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4,
+ 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03, 0x68d5,
+ 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70, 0x594f,
+ 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5, 0x963b,
+ 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a, 0x5c0a,
+ 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c, 0x5750,
+ 0x5ea7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xd8 */
+ 0x8c38, 0x8c39, 0x8c3a, 0x8c3b, 0x8c3c, 0x8c3d, 0x8c3e, 0x8c3f,
+ 0x8c40, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c48, 0x8c4a, 0x8c4b,
+ 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54,
+ 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5b, 0x8c5c, 0x8c5d, 0x8c5e,
+ 0x8c5f, 0x8c60, 0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67, 0x8c68,
+ 0x8c69, 0x8c6c, 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72,
+ 0x8c74, 0x8c75, 0x8c76, 0x8c77, 0x8c7b, 0x8c7c, 0x8c7d, 0x8c7e,
+ 0x8c7f, 0x8c80, 0x8c81, 0x8c83, 0x8c84, 0x8c86, 0x8c87, 0x8c88,
+ 0x8c8b, 0x8c8d, 0x8c8e, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93,
+ 0x8c95, 0x8c96, 0x8c97, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d,
+ 0x8c9e, 0x8c9f, 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5,
+ 0x8ca6, 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad,
+ 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15, 0x4e98,
+ 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f, 0x5315,
+ 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4, 0x9997,
+ 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c, 0x4e69,
+ 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d, 0x539d,
+ 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5, 0x5326,
+ 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208, 0x520e,
+ 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261, 0x525c,
+ 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7f54,
+ 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb, 0x4ede,
+ 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27, 0x4f09,
+ 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d,
+ /* 0xd9 */
+ 0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5,
+ 0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd,
+ 0x8cbe, 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5,
+ 0x8cc6, 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd,
+ 0x8cce, 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5,
+ 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd,
+ 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5,
+ 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced,
+ 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5,
+ 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd,
+ 0x8cfe, 0x8cff, 0x8d00, 0x8d01, 0x8d02, 0x8d03, 0x8d04, 0x8d05,
+ 0x8d06, 0x8d07, 0x8d08, 0x8d09, 0x8d0a, 0x8d0b, 0x8d0c, 0x8d0d,
+ 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89,
+ 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94,
+ 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1,
+ 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e,
+ 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043,
+ 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9,
+ 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107,
+ 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46,
+ 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9,
+ 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156,
+ 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34,
+ 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc,
+ /* 0xda */
+ 0x8d0e, 0x8d0f, 0x8d10, 0x8d11, 0x8d12, 0x8d13, 0x8d14, 0x8d15,
+ 0x8d16, 0x8d17, 0x8d18, 0x8d19, 0x8d1a, 0x8d1b, 0x8d1c, 0x8d20,
+ 0x8d51, 0x8d52, 0x8d57, 0x8d5f, 0x8d65, 0x8d68, 0x8d69, 0x8d6a,
+ 0x8d6c, 0x8d6e, 0x8d6f, 0x8d71, 0x8d72, 0x8d78, 0x8d79, 0x8d7a,
+ 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8d7f, 0x8d80, 0x8d82, 0x8d83,
+ 0x8d86, 0x8d87, 0x8d88, 0x8d89, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f,
+ 0x8d90, 0x8d92, 0x8d93, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99,
+ 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8da0, 0x8da1, 0x8da2,
+ 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab,
+ 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db2, 0x8db6, 0x8db7,
+ 0x8db9, 0x8dbb, 0x8dbd, 0x8dc0, 0x8dc1, 0x8dc2, 0x8dc5, 0x8dc7,
+ 0x8dc8, 0x8dc9, 0x8dca, 0x8dcd, 0x8dd0, 0x8dd2, 0x8dd3, 0x8dd4,
+ 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa,
+ 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce,
+ 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf,
+ 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6,
+ 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c,
+ 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b,
+ 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a,
+ 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369,
+ 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c,
+ 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674,
+ 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099,
+ 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba,
+ /* 0xdb */
+ 0x8dd5, 0x8dd8, 0x8dd9, 0x8ddc, 0x8de0, 0x8de1, 0x8de2, 0x8de5,
+ 0x8de6, 0x8de7, 0x8de9, 0x8ded, 0x8dee, 0x8df0, 0x8df1, 0x8df2,
+ 0x8df4, 0x8df6, 0x8dfc, 0x8dfe, 0x8dff, 0x8e00, 0x8e01, 0x8e02,
+ 0x8e03, 0x8e04, 0x8e06, 0x8e07, 0x8e08, 0x8e0b, 0x8e0d, 0x8e0e,
+ 0x8e10, 0x8e11, 0x8e12, 0x8e13, 0x8e15, 0x8e16, 0x8e17, 0x8e18,
+ 0x8e19, 0x8e1a, 0x8e1b, 0x8e1c, 0x8e20, 0x8e21, 0x8e24, 0x8e25,
+ 0x8e26, 0x8e27, 0x8e28, 0x8e2b, 0x8e2d, 0x8e30, 0x8e32, 0x8e33,
+ 0x8e34, 0x8e36, 0x8e37, 0x8e38, 0x8e3b, 0x8e3c, 0x8e3e, 0x8e3f,
+ 0x8e43, 0x8e45, 0x8e46, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50,
+ 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e5a, 0x8e5b,
+ 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0x8e63,
+ 0x8e64, 0x8e65, 0x8e67, 0x8e68, 0x8e6a, 0x8e6b, 0x8e6e, 0x8e71,
+ 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4, 0x90c7,
+ 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb, 0x90ef,
+ 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f, 0x9139,
+ 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad, 0x52be,
+ 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd, 0x5ef4,
+ 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def, 0x574c,
+ 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729, 0x572c,
+ 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b, 0x5742,
+ 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768, 0x576d,
+ 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf, 0x57a7,
+ 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9, 0x57d2,
+ 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd,
+ /* 0xdc */
+ 0x8e73, 0x8e75, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7d,
+ 0x8e7e, 0x8e80, 0x8e82, 0x8e83, 0x8e84, 0x8e86, 0x8e88, 0x8e89,
+ 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e91, 0x8e92, 0x8e93,
+ 0x8e95, 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0x8e9d,
+ 0x8e9f, 0x8ea0, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6,
+ 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8ead, 0x8eae, 0x8eb0, 0x8eb1,
+ 0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8ebb,
+ 0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3,
+ 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb,
+ 0x8ecc, 0x8ecd, 0x8ecf, 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4,
+ 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc,
+ 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4,
+ 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819, 0x5844,
+ 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880, 0x99a8,
+ 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a, 0x82a8,
+ 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8, 0x82be,
+ 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae, 0x82cb,
+ 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f, 0x82c4,
+ 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f, 0x8307,
+ 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3, 0x8311,
+ 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c, 0x8351,
+ 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331, 0x839b,
+ 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340, 0x8317,
+ 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365,
+ /* 0xdd */
+ 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec,
+ 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4,
+ 0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc,
+ 0x8efd, 0x8efe, 0x8eff, 0x8f00, 0x8f01, 0x8f02, 0x8f03, 0x8f04,
+ 0x8f05, 0x8f06, 0x8f07, 0x8f08, 0x8f09, 0x8f0a, 0x8f0b, 0x8f0c,
+ 0x8f0d, 0x8f0e, 0x8f0f, 0x8f10, 0x8f11, 0x8f12, 0x8f13, 0x8f14,
+ 0x8f15, 0x8f16, 0x8f17, 0x8f18, 0x8f19, 0x8f1a, 0x8f1b, 0x8f1c,
+ 0x8f1d, 0x8f1e, 0x8f1f, 0x8f20, 0x8f21, 0x8f22, 0x8f23, 0x8f24,
+ 0x8f25, 0x8f26, 0x8f27, 0x8f28, 0x8f29, 0x8f2a, 0x8f2b, 0x8f2c,
+ 0x8f2d, 0x8f2e, 0x8f2f, 0x8f30, 0x8f31, 0x8f32, 0x8f33, 0x8f34,
+ 0x8f35, 0x8f36, 0x8f37, 0x8f38, 0x8f39, 0x8f3a, 0x8f3b, 0x8f3c,
+ 0x8f3d, 0x8f3e, 0x8f3f, 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44,
+ 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0,
+ 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385,
+ 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e,
+ 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807,
+ 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411,
+ 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea,
+ 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a,
+ 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c,
+ 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1,
+ 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba,
+ 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c,
+ 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a,
+ /* 0xde */
+ 0x8f45, 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c,
+ 0x8f4d, 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54,
+ 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c,
+ 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64,
+ 0x8f65, 0x8f6a, 0x8f80, 0x8f8c, 0x8f92, 0x8f9d, 0x8fa0, 0x8fa1,
+ 0x8fa2, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7, 0x8faa, 0x8fac, 0x8fad,
+ 0x8fae, 0x8faf, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb7, 0x8fb8,
+ 0x8fba, 0x8fbb, 0x8fbc, 0x8fbf, 0x8fc0, 0x8fc3, 0x8fc6, 0x8fc9,
+ 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fcf, 0x8fd2, 0x8fd6, 0x8fd7,
+ 0x8fda, 0x8fe0, 0x8fe1, 0x8fe3, 0x8fe7, 0x8fec, 0x8fef, 0x8ff1,
+ 0x8ff2, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffe,
+ 0x8fff, 0x9007, 0x9008, 0x900c, 0x900e, 0x9013, 0x9015, 0x9018,
+ 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564,
+ 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8,
+ 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7,
+ 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629,
+ 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955,
+ 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c,
+ 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322,
+ 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a,
+ 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc,
+ 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452,
+ 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c,
+ 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496,
+ /* 0xdf */
+ 0x9019, 0x901c, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029,
+ 0x902a, 0x902b, 0x902c, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034,
+ 0x9037, 0x9039, 0x903a, 0x903d, 0x903f, 0x9040, 0x9043, 0x9045,
+ 0x9046, 0x9048, 0x9049, 0x904a, 0x904b, 0x904c, 0x904e, 0x9054,
+ 0x9055, 0x9056, 0x9059, 0x905a, 0x905c, 0x905d, 0x905e, 0x905f,
+ 0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906a, 0x906b,
+ 0x906c, 0x906f, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077,
+ 0x9078, 0x9079, 0x907a, 0x907b, 0x907c, 0x907e, 0x9081, 0x9084,
+ 0x9085, 0x9086, 0x9087, 0x9089, 0x908a, 0x908c, 0x908d, 0x908e,
+ 0x908f, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909a, 0x909c,
+ 0x909e, 0x909f, 0x90a0, 0x90a4, 0x90a5, 0x90a7, 0x90a8, 0x90a9,
+ 0x90ab, 0x90ad, 0x90b2, 0x90b7, 0x90bc, 0x90bd, 0x90bf, 0x90c0,
+ 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0, 0x64d7,
+ 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2, 0x7519,
+ 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb, 0x5412,
+ 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443,
+ 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477,
+ 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466, 0x549d,
+ 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6, 0x54d3,
+ 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc, 0x54d9,
+ 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf, 0x54de,
+ 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522, 0x5523,
+ 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5, 0x5549,
+ 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c,
+ /* 0xe0 */
+ 0x90c2, 0x90c3, 0x90c6, 0x90c8, 0x90c9, 0x90cb, 0x90cc, 0x90cd,
+ 0x90d2, 0x90d4, 0x90d5, 0x90d6, 0x90d8, 0x90d9, 0x90da, 0x90de,
+ 0x90df, 0x90e0, 0x90e3, 0x90e4, 0x90e5, 0x90e9, 0x90ea, 0x90ec,
+ 0x90ee, 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f5, 0x90f6, 0x90f7,
+ 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90ff, 0x9100, 0x9101, 0x9103,
+ 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910a, 0x910b, 0x910c,
+ 0x910d, 0x910e, 0x910f, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114,
+ 0x9115, 0x9116, 0x9117, 0x9118, 0x911a, 0x911b, 0x911c, 0x911d,
+ 0x911f, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127, 0x9128,
+ 0x9129, 0x912a, 0x912b, 0x912c, 0x912d, 0x912e, 0x9130, 0x9132,
+ 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913a, 0x913b,
+ 0x913c, 0x913d, 0x913e, 0x913f, 0x9140, 0x9141, 0x9142, 0x9144,
+ 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555c,
+ 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581, 0x559f,
+ 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be, 0x5594,
+ 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb, 0x55ec,
+ 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2, 0x55f3,
+ 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e, 0x5608,
+ 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627, 0x562d,
+ 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659, 0x565c,
+ 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b, 0x567c,
+ 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1, 0x56f5,
+ 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c, 0x5e0f,
+ 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c,
+ /* 0xe1 */
+ 0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156,
+ 0x9158, 0x9159, 0x915b, 0x915c, 0x915f, 0x9160, 0x9166, 0x9167,
+ 0x9168, 0x916b, 0x916d, 0x9173, 0x917a, 0x917b, 0x917c, 0x9180,
+ 0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918a, 0x918e,
+ 0x918f, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199,
+ 0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0x91a4, 0x91a5,
+ 0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91ab, 0x91ac, 0x91b0, 0x91b1,
+ 0x91b2, 0x91b3, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91bb, 0x91bc,
+ 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4,
+ 0x91c5, 0x91c6, 0x91c8, 0x91cb, 0x91d0, 0x91d2, 0x91d3, 0x91d4,
+ 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dd,
+ 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5,
+ 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a,
+ 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a,
+ 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3,
+ 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02,
+ 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b,
+ 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d,
+ 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d,
+ 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89,
+ 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc,
+ 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3,
+ 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2,
+ 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa,
+ /* 0xe2 */
+ 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed,
+ 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5,
+ 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd,
+ 0x91fe, 0x91ff, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205,
+ 0x9206, 0x9207, 0x9208, 0x9209, 0x920a, 0x920b, 0x920c, 0x920d,
+ 0x920e, 0x920f, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215,
+ 0x9216, 0x9217, 0x9218, 0x9219, 0x921a, 0x921b, 0x921c, 0x921d,
+ 0x921e, 0x921f, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x9225,
+ 0x9226, 0x9227, 0x9228, 0x9229, 0x922a, 0x922b, 0x922c, 0x922d,
+ 0x922e, 0x922f, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235,
+ 0x9236, 0x9237, 0x9238, 0x9239, 0x923a, 0x923b, 0x923c, 0x923d,
+ 0x923e, 0x923f, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245,
+ 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315,
+ 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d,
+ 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7,
+ 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
+ 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a,
+ 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91,
+ 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3,
+ 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4,
+ 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4,
+ 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035,
+ 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f,
+ 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042,
+ /* 0xe3 */
+ 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d,
+ 0x924e, 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255,
+ 0x9256, 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d,
+ 0x925e, 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265,
+ 0x9266, 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d,
+ 0x926e, 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276,
+ 0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e,
+ 0x927f, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x9286,
+ 0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d, 0x928f,
+ 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 0x9297,
+ 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, 0x929e, 0x929f,
+ 0x92a0, 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7,
+ 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083, 0x6092,
+ 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8, 0x60c6,
+ 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4, 0x6100,
+ 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7, 0x61b7,
+ 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1, 0x95f3,
+ 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606, 0x9608,
+ 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615, 0x9616,
+ 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35, 0x6c54,
+ 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c, 0x6c68,
+ 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad,
+ 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa,
+ 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe,
+ /* 0xe4 */
+ 0x92a8, 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92af, 0x92b0,
+ 0x92b1, 0x92b2, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8,
+ 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0,
+ 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c9,
+ 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1,
+ 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8, 0x92d9,
+ 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0, 0x92e1,
+ 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8, 0x92e9,
+ 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, 0x92f1,
+ 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8, 0x92f9,
+ 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x92ff, 0x9300, 0x9301,
+ 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308, 0x9309,
+ 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04, 0x6d19,
+ 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f, 0x6d52,
+ 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e, 0x6d93,
+ 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7, 0x6dc5,
+ 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd, 0x6dd9,
+ 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e, 0x6e6b,
+ 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25, 0x6e44,
+ 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5, 0x6ea7,
+ 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f, 0x6ec2,
+ 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9, 0x6f2f,
+ 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89, 0x6f8d,
+ 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1,
+ /* 0xe5 */
+ 0x930a, 0x930b, 0x930c, 0x930d, 0x930e, 0x930f, 0x9310, 0x9311,
+ 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319,
+ 0x931a, 0x931b, 0x931c, 0x931d, 0x931e, 0x931f, 0x9320, 0x9321,
+ 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329,
+ 0x932a, 0x932b, 0x932c, 0x932d, 0x932e, 0x932f, 0x9330, 0x9331,
+ 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339,
+ 0x933a, 0x933b, 0x933c, 0x933d, 0x933f, 0x9340, 0x9341, 0x9342,
+ 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934a,
+ 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351, 0x9352,
+ 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, 0x935a,
+ 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361, 0x9362,
+ 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x936b,
+ 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde,
+ 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f,
+ 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f,
+ 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07,
+ 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6,
+ 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d,
+ 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051,
+ 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074,
+ 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56,
+ 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66,
+ 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e,
+ 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3,
+ /* 0xe6 */
+ 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371, 0x9372, 0x9373,
+ 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937a, 0x937b,
+ 0x937c, 0x937d, 0x937e, 0x937f, 0x9380, 0x9381, 0x9382, 0x9383,
+ 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b,
+ 0x938c, 0x938d, 0x938e, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394,
+ 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c,
+ 0x939d, 0x939e, 0x939f, 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4,
+ 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac,
+ 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3, 0x93b4,
+ 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc,
+ 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3, 0x93c4,
+ 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93cb, 0x93cc, 0x93cd,
+ 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af,
+ 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8,
+ 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13,
+ 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec,
+ 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2,
+ 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8,
+ 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15,
+ 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75,
+ 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85,
+ 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b,
+ 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7,
+ 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9,
+ /* 0xe7 */
+ 0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3, 0x93d4, 0x93d5,
+ 0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db, 0x93dc, 0x93dd, 0x93de,
+ 0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3, 0x93e4, 0x93e5, 0x93e6,
+ 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed, 0x93ee,
+ 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6,
+ 0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0x93fd, 0x93fe,
+ 0x93ff, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406,
+ 0x9407, 0x9408, 0x9409, 0x940a, 0x940b, 0x940c, 0x940d, 0x940e,
+ 0x940f, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, 0x9416,
+ 0x9417, 0x9418, 0x9419, 0x941a, 0x941b, 0x941c, 0x941d, 0x941e,
+ 0x941f, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9426,
+ 0x9427, 0x9428, 0x9429, 0x942a, 0x942b, 0x942c, 0x942d, 0x942e,
+ 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb,
+ 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8,
+ 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa,
+ 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08, 0x7f0b,
+ 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c, 0x7f1b,
+ 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
+ 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31, 0x7f32,
+ 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095, 0x738e,
+ 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1, 0x73b7,
+ 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c, 0x740a,
+ 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a, 0x745b,
+ 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c,
+ /* 0xe8 */
+ 0x942f, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436,
+ 0x9437, 0x9438, 0x9439, 0x943a, 0x943b, 0x943c, 0x943d, 0x943f,
+ 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447,
+ 0x9448, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f,
+ 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457,
+ 0x9458, 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f,
+ 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467,
+ 0x9468, 0x9469, 0x946a, 0x946c, 0x946d, 0x946e, 0x946f, 0x9470,
+ 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, 0x9478,
+ 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, 0x947e, 0x947f, 0x9480,
+ 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498, 0x94c7,
+ 0x94cf, 0x94d3, 0x94d4, 0x94da, 0x94e6, 0x94fb, 0x951c, 0x9520,
+ 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459, 0x7477,
+ 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487, 0x748b,
+ 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba, 0x97ea,
+ 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769, 0x67a5,
+ 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8, 0x679e,
+ 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8, 0x680a,
+ 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3, 0x67dd,
+ 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd, 0x6832,
+ 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864, 0x6883,
+ 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e, 0x684a,
+ 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893, 0x686b,
+ 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9,
+ /* 0xe9 */
+ 0x9527, 0x9533, 0x953d, 0x9543, 0x9548, 0x954b, 0x9555, 0x955a,
+ 0x9560, 0x956e, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957a,
+ 0x957b, 0x957c, 0x957d, 0x957e, 0x9580, 0x9581, 0x9582, 0x9583,
+ 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958a, 0x958b,
+ 0x958c, 0x958d, 0x958e, 0x958f, 0x9590, 0x9591, 0x9592, 0x9593,
+ 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959a, 0x959b,
+ 0x959c, 0x959d, 0x959e, 0x959f, 0x95a0, 0x95a1, 0x95a2, 0x95a3,
+ 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0x95aa, 0x95ab,
+ 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1, 0x95b2, 0x95b3,
+ 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9, 0x95ba, 0x95bb,
+ 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1, 0x95c2, 0x95c3,
+ 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0x95ca, 0x95cb,
+ 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971,
+ 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998,
+ 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966,
+ 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4,
+ 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff,
+ 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e,
+ 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28,
+ 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337,
+ 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d,
+ 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72,
+ 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c,
+ 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b,
+ /* 0xea */
+ 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, 0x95d3,
+ 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, 0x95db,
+ 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, 0x95e3,
+ 0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95ec, 0x95ff, 0x9607, 0x9613,
+ 0x9618, 0x961b, 0x961e, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626,
+ 0x9627, 0x9628, 0x9629, 0x962b, 0x962c, 0x962d, 0x962f, 0x9630,
+ 0x9637, 0x9638, 0x9639, 0x963a, 0x963e, 0x9641, 0x9643, 0x964a,
+ 0x964e, 0x964f, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0x9658,
+ 0x9659, 0x965a, 0x965c, 0x965d, 0x965e, 0x9660, 0x9663, 0x9665,
+ 0x9666, 0x966b, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9673,
+ 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, 0x967e, 0x967f,
+ 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968a,
+ 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217,
+ 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7,
+ 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee,
+ 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600,
+ 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006,
+ 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677,
+ 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6,
+ 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45,
+ 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7,
+ 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e,
+ 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b,
+ 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0,
+ /* 0xeb */
+ 0x968c, 0x968e, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969a,
+ 0x969b, 0x969d, 0x969e, 0x969f, 0x96a0, 0x96a1, 0x96a2, 0x96a3,
+ 0x96a4, 0x96a5, 0x96a6, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac,
+ 0x96ad, 0x96ae, 0x96af, 0x96b1, 0x96b2, 0x96b4, 0x96b5, 0x96b7,
+ 0x96b8, 0x96ba, 0x96bb, 0x96bf, 0x96c2, 0x96c3, 0x96c8, 0x96ca,
+ 0x96cb, 0x96d0, 0x96d1, 0x96d3, 0x96d4, 0x96d6, 0x96d7, 0x96d8,
+ 0x96d9, 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96de, 0x96df, 0x96e1,
+ 0x96e2, 0x96e3, 0x96e4, 0x96e5, 0x96e6, 0x96e7, 0x96eb, 0x96ec,
+ 0x96ed, 0x96ee, 0x96f0, 0x96f1, 0x96f2, 0x96f4, 0x96f5, 0x96f8,
+ 0x96fa, 0x96fb, 0x96fc, 0x96fd, 0x96ff, 0x9702, 0x9703, 0x9705,
+ 0x970a, 0x970b, 0x970c, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715,
+ 0x9717, 0x9718, 0x9719, 0x971a, 0x971b, 0x971d, 0x971f, 0x9720,
+ 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9,
+ 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19, 0x6c1a,
+ 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555, 0x656b,
+ 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f, 0x809c,
+ 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad, 0x80b4,
+ 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2, 0x80c4,
+ 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1, 0x80f4,
+ 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112, 0x8c5a,
+ 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c, 0x8153,
+ 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c, 0x817d,
+ 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191, 0x6ed5,
+ 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb,
+ /* 0xec */
+ 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728,
+ 0x9729, 0x972b, 0x972c, 0x972e, 0x972f, 0x9731, 0x9733, 0x9734,
+ 0x9735, 0x9736, 0x9737, 0x973a, 0x973b, 0x973c, 0x973d, 0x973f,
+ 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747,
+ 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f,
+ 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975a, 0x975c,
+ 0x975d, 0x975f, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976a,
+ 0x976b, 0x976c, 0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0x9772,
+ 0x9775, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977d, 0x977e,
+ 0x977f, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, 0x9787,
+ 0x9788, 0x9789, 0x978a, 0x978c, 0x978e, 0x978f, 0x9790, 0x9793,
+ 0x9795, 0x9796, 0x9797, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d,
+ 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46, 0x6b59,
+ 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3, 0x5f40,
+ 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6, 0x65c4,
+ 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c, 0x7096,
+ 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8, 0x70ca,
+ 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c, 0x7168,
+ 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3, 0x71b5,
+ 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d, 0x7228,
+ 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243, 0x6248,
+ 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c, 0x7953,
+ 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a, 0x7985,
+ 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0,
+ /* 0xed */
+ 0x979e, 0x979f, 0x97a1, 0x97a2, 0x97a4, 0x97a5, 0x97a6, 0x97a7,
+ 0x97a8, 0x97a9, 0x97aa, 0x97ac, 0x97ae, 0x97b0, 0x97b1, 0x97b3,
+ 0x97b5, 0x97b6, 0x97b7, 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc,
+ 0x97bd, 0x97be, 0x97bf, 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4,
+ 0x97c5, 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc,
+ 0x97cd, 0x97ce, 0x97cf, 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4,
+ 0x97d5, 0x97d6, 0x97d7, 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc,
+ 0x97dd, 0x97de, 0x97df, 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4,
+ 0x97e5, 0x97e8, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f4,
+ 0x97f7, 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe,
+ 0x97ff, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806,
+ 0x9807, 0x9808, 0x9809, 0x980a, 0x980b, 0x980c, 0x980d, 0x980e,
+ 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab,
+ 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206,
+ 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800,
+ 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d,
+ 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823,
+ 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
+ 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1,
+ 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec,
+ 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b,
+ 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707,
+ 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738,
+ 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768,
+ /* 0xee */
+ 0x980f, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816,
+ 0x9817, 0x9818, 0x9819, 0x981a, 0x981b, 0x981c, 0x981d, 0x981e,
+ 0x981f, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826,
+ 0x9827, 0x9828, 0x9829, 0x982a, 0x982b, 0x982c, 0x982d, 0x982e,
+ 0x982f, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836,
+ 0x9837, 0x9838, 0x9839, 0x983a, 0x983b, 0x983c, 0x983d, 0x983e,
+ 0x983f, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846,
+ 0x9847, 0x9848, 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e,
+ 0x984f, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856,
+ 0x9857, 0x9858, 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e,
+ 0x985f, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866,
+ 0x9867, 0x9868, 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e,
+ 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791,
+ 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e,
+ 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61,
+ 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e,
+ 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a,
+ 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a,
+ 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac,
+ 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9,
+ 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca,
+ 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5,
+ 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0,
+ 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea,
+ /* 0xef */
+ 0x986f, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988b, 0x988e,
+ 0x9892, 0x9895, 0x9899, 0x98a3, 0x98a8, 0x98a9, 0x98aa, 0x98ab,
+ 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3,
+ 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb,
+ 0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3,
+ 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0x98cb,
+ 0x98cc, 0x98cd, 0x98cf, 0x98d0, 0x98d4, 0x98d6, 0x98d7, 0x98db,
+ 0x98dc, 0x98dd, 0x98e0, 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5,
+ 0x98e6, 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef,
+ 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7,
+ 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x98ff,
+ 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, 0x9907,
+ 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5, 0x94f7,
+ 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506, 0x9507,
+ 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513, 0x9514,
+ 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f, 0x9522,
+ 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534, 0x9536,
+ 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535, 0x9544,
+ 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552, 0x9553,
+ 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e, 0x955f,
+ 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568,
+ 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572, 0x9573,
+ 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3, 0x79eb,
+ 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14,
+ /* 0xf0 */
+ 0x9908, 0x9909, 0x990a, 0x990b, 0x990c, 0x990e, 0x990f, 0x9911,
+ 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919,
+ 0x991a, 0x991b, 0x991c, 0x991d, 0x991e, 0x991f, 0x9920, 0x9921,
+ 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929,
+ 0x992a, 0x992b, 0x992c, 0x992d, 0x992f, 0x9930, 0x9931, 0x9932,
+ 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993a,
+ 0x993b, 0x993c, 0x993d, 0x993e, 0x993f, 0x9940, 0x9941, 0x9942,
+ 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a,
+ 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9952,
+ 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b, 0x995c,
+ 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9964, 0x9966,
+ 0x9973, 0x9978, 0x9979, 0x997b, 0x997e, 0x9982, 0x9983, 0x9989,
+ 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688, 0x768e,
+ 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20, 0x9e22,
+ 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31, 0x9e36,
+ 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42, 0x9e44,
+ 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e51,
+ 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63, 0x9e66,
+ 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71, 0x9e6d,
+ 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac, 0x75a3,
+ 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3, 0x75c2,
+ 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb, 0x75e7,
+ 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605, 0x760c,
+ 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619,
+ /* 0xf1 */
+ 0x998c, 0x998e, 0x999a, 0x999b, 0x999c, 0x999d, 0x999e, 0x999f,
+ 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a6, 0x99a7, 0x99a9,
+ 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, 0x99b0, 0x99b1,
+ 0x99b2, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, 0x99b8, 0x99b9,
+ 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99be, 0x99bf, 0x99c0, 0x99c1,
+ 0x99c2, 0x99c3, 0x99c4, 0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9,
+ 0x99ca, 0x99cb, 0x99cc, 0x99cd, 0x99ce, 0x99cf, 0x99d0, 0x99d1,
+ 0x99d2, 0x99d3, 0x99d4, 0x99d5, 0x99d6, 0x99d7, 0x99d8, 0x99d9,
+ 0x99da, 0x99db, 0x99dc, 0x99dd, 0x99de, 0x99df, 0x99e0, 0x99e1,
+ 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, 0x99e8, 0x99e9,
+ 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, 0x99f0, 0x99f1,
+ 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, 0x99f8, 0x99f9,
+ 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f,
+ 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c,
+ 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80,
+ 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad,
+ 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2,
+ 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5,
+ 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919,
+ 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966,
+ 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014,
+ 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
+ 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052,
+ 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,
+ /* 0xf2 */
+ 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x99ff, 0x9a00, 0x9a01,
+ 0x9a02, 0x9a03, 0x9a04, 0x9a05, 0x9a06, 0x9a07, 0x9a08, 0x9a09,
+ 0x9a0a, 0x9a0b, 0x9a0c, 0x9a0d, 0x9a0e, 0x9a0f, 0x9a10, 0x9a11,
+ 0x9a12, 0x9a13, 0x9a14, 0x9a15, 0x9a16, 0x9a17, 0x9a18, 0x9a19,
+ 0x9a1a, 0x9a1b, 0x9a1c, 0x9a1d, 0x9a1e, 0x9a1f, 0x9a20, 0x9a21,
+ 0x9a22, 0x9a23, 0x9a24, 0x9a25, 0x9a26, 0x9a27, 0x9a28, 0x9a29,
+ 0x9a2a, 0x9a2b, 0x9a2c, 0x9a2d, 0x9a2e, 0x9a2f, 0x9a30, 0x9a31,
+ 0x9a32, 0x9a33, 0x9a34, 0x9a35, 0x9a36, 0x9a37, 0x9a38, 0x9a39,
+ 0x9a3a, 0x9a3b, 0x9a3c, 0x9a3d, 0x9a3e, 0x9a3f, 0x9a40, 0x9a41,
+ 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0x9a47, 0x9a48, 0x9a49,
+ 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51,
+ 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56, 0x9a57, 0x9a58, 0x9a59,
+ 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e,
+ 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c,
+ 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b,
+ 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6,
+ 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9,
+ 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0,
+ 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707,
+ 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e,
+ 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729,
+ 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760,
+ 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764,
+ 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2,
+ /* 0xf3 */
+ 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, 0x9a5f, 0x9a60, 0x9a61,
+ 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68, 0x9a69,
+ 0x9a6a, 0x9a6b, 0x9a72, 0x9a83, 0x9a89, 0x9a8d, 0x9a8e, 0x9a94,
+ 0x9a95, 0x9a99, 0x9aa6, 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad,
+ 0x9aae, 0x9aaf, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab9, 0x9abb,
+ 0x9abd, 0x9abe, 0x9abf, 0x9ac3, 0x9ac4, 0x9ac6, 0x9ac7, 0x9ac8,
+ 0x9ac9, 0x9aca, 0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad2, 0x9ad4,
+ 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add,
+ 0x9ade, 0x9ae0, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae7, 0x9ae8,
+ 0x9ae9, 0x9aea, 0x9aec, 0x9aee, 0x9af0, 0x9af1, 0x9af2, 0x9af3,
+ 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9afa, 0x9afc, 0x9afd,
+ 0x9afe, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b04, 0x9b05, 0x9b06,
+ 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab, 0x87e5,
+ 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1, 0x87c0,
+ 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813, 0x87fe,
+ 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42, 0x7f44,
+ 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04, 0x7b15,
+ 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19, 0x7b2e,
+ 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e, 0x7b58,
+ 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b,
+ 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac,
+ 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4,
+ 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6, 0x7bea,
+ 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b,
+ /* 0xf4 */
+ 0x9b07, 0x9b09, 0x9b0a, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b10,
+ 0x9b11, 0x9b12, 0x9b14, 0x9b15, 0x9b16, 0x9b17, 0x9b18, 0x9b19,
+ 0x9b1a, 0x9b1b, 0x9b1c, 0x9b1d, 0x9b1e, 0x9b20, 0x9b21, 0x9b22,
+ 0x9b24, 0x9b25, 0x9b26, 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2b,
+ 0x9b2c, 0x9b2d, 0x9b2e, 0x9b30, 0x9b31, 0x9b33, 0x9b34, 0x9b35,
+ 0x9b36, 0x9b37, 0x9b38, 0x9b39, 0x9b3a, 0x9b3d, 0x9b3e, 0x9b3f,
+ 0x9b40, 0x9b46, 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4e, 0x9b50, 0x9b52,
+ 0x9b53, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59, 0x9b5a, 0x9b5b,
+ 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61, 0x9b62, 0x9b63,
+ 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69, 0x9b6a, 0x9b6b,
+ 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71, 0x9b72, 0x9b73,
+ 0x9b74, 0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79, 0x9b7a, 0x9b7b,
+ 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe, 0x8201,
+ 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223, 0x822d,
+ 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234, 0x823e,
+ 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268, 0x887e,
+ 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f, 0x7fa7,
+ 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d, 0x7c9c,
+ 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7, 0x7ccc,
+ 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8, 0x7fbf,
+ 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee, 0x7ff3,
+ 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8, 0x9eb4,
+ 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d, 0x8c47,
+ 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164,
+ /* 0xf5 */
+ 0x9b7c, 0x9b7d, 0x9b7e, 0x9b7f, 0x9b80, 0x9b81, 0x9b82, 0x9b83,
+ 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a, 0x9b8b,
+ 0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b92, 0x9b93,
+ 0x9b94, 0x9b95, 0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a, 0x9b9b,
+ 0x9b9c, 0x9b9d, 0x9b9e, 0x9b9f, 0x9ba0, 0x9ba1, 0x9ba2, 0x9ba3,
+ 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab,
+ 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3,
+ 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb,
+ 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3,
+ 0x9bc4, 0x9bc5, 0x9bc6, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb,
+ 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3,
+ 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb,
+ 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172,
+ 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2,
+ 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba,
+ 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5,
+ 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde,
+ 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3,
+ 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f,
+ 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35,
+ 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a,
+ 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94,
+ 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98,
+ 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc,
+ /* 0xf6 */
+ 0x9bdc, 0x9bdd, 0x9bde, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3,
+ 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb,
+ 0x9bec, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3,
+ 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb,
+ 0x9bfc, 0x9bfd, 0x9bfe, 0x9bff, 0x9c00, 0x9c01, 0x9c02, 0x9c03,
+ 0x9c04, 0x9c05, 0x9c06, 0x9c07, 0x9c08, 0x9c09, 0x9c0a, 0x9c0b,
+ 0x9c0c, 0x9c0d, 0x9c0e, 0x9c0f, 0x9c10, 0x9c11, 0x9c12, 0x9c13,
+ 0x9c14, 0x9c15, 0x9c16, 0x9c17, 0x9c18, 0x9c19, 0x9c1a, 0x9c1b,
+ 0x9c1c, 0x9c1d, 0x9c1e, 0x9c1f, 0x9c20, 0x9c21, 0x9c22, 0x9c23,
+ 0x9c24, 0x9c25, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c2b,
+ 0x9c2c, 0x9c2d, 0x9c2e, 0x9c2f, 0x9c30, 0x9c31, 0x9c32, 0x9c33,
+ 0x9c34, 0x9c35, 0x9c36, 0x9c37, 0x9c38, 0x9c39, 0x9c3a, 0x9c3b,
+ 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3,
+ 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d,
+ 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88,
+ 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc,
+ 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8,
+ 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82,
+ 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90,
+ 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f,
+ 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8,
+ 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3,
+ 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd,
+ 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb,
+ /* 0xf7 */
+ 0x9c3c, 0x9c3d, 0x9c3e, 0x9c3f, 0x9c40, 0x9c41, 0x9c42, 0x9c43,
+ 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b,
+ 0x9c4c, 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0x9c53,
+ 0x9c54, 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b,
+ 0x9c5c, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0x9c62, 0x9c63,
+ 0x9c64, 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69, 0x9c6a, 0x9c6b,
+ 0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73,
+ 0x9c74, 0x9c75, 0x9c76, 0x9c77, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b,
+ 0x9c7d, 0x9c7e, 0x9c80, 0x9c83, 0x9c84, 0x9c89, 0x9c8a, 0x9c8c,
+ 0x9c8f, 0x9c93, 0x9c96, 0x9c97, 0x9c98, 0x9c99, 0x9c9d, 0x9caa,
+ 0x9cac, 0x9caf, 0x9cb9, 0x9cbe, 0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2,
+ 0x9cc8, 0x9cc9, 0x9cd1, 0x9cd2, 0x9cda, 0x9cdb, 0x9ce0, 0x9ce1,
+ 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5,
+ 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2, 0x977c,
+ 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3, 0x97b2,
+ 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba, 0x9abc,
+ 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1, 0x9b45,
+ 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8, 0x990d,
+ 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb,
+ 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f, 0x9b23,
+ 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b, 0x9e92,
+ 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0, 0x9edf,
+ 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22, 0x9f2c,
+ 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44,
+ /* 0xf8 */
+ 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea,
+ 0x9ceb, 0x9cec, 0x9ced, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2,
+ 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa,
+ 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9cff, 0x9d00, 0x9d01, 0x9d02,
+ 0x9d03, 0x9d04, 0x9d05, 0x9d06, 0x9d07, 0x9d08, 0x9d09, 0x9d0a,
+ 0x9d0b, 0x9d0c, 0x9d0d, 0x9d0e, 0x9d0f, 0x9d10, 0x9d11, 0x9d12,
+ 0x9d13, 0x9d14, 0x9d15, 0x9d16, 0x9d17, 0x9d18, 0x9d19, 0x9d1a,
+ 0x9d1b, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d1f, 0x9d20, 0x9d21, 0x9d22,
+ 0x9d23, 0x9d24, 0x9d25, 0x9d26, 0x9d27, 0x9d28, 0x9d29, 0x9d2a,
+ 0x9d2b, 0x9d2c, 0x9d2d, 0x9d2e, 0x9d2f, 0x9d30, 0x9d31, 0x9d32,
+ 0x9d33, 0x9d34, 0x9d35, 0x9d36, 0x9d37, 0x9d38, 0x9d39, 0x9d3a,
+ 0x9d3b, 0x9d3c, 0x9d3d, 0x9d3e, 0x9d3f, 0x9d40, 0x9d41, 0x9d42,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xf9 */
+ 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, 0x9d48, 0x9d49, 0x9d4a,
+ 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, 0x9d50, 0x9d51, 0x9d52,
+ 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0x9d5a,
+ 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f, 0x9d60, 0x9d61, 0x9d62,
+ 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a,
+ 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d72,
+ 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a,
+ 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9d7f, 0x9d80, 0x9d81, 0x9d82,
+ 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88, 0x9d89, 0x9d8a,
+ 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, 0x9d91, 0x9d92,
+ 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9d99, 0x9d9a,
+ 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0x9da1, 0x9da2,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xfa */
+ 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9, 0x9daa,
+ 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1, 0x9db2,
+ 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba,
+ 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2,
+ 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca,
+ 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2,
+ 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9, 0x9dda,
+ 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1, 0x9de2,
+ 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9, 0x9dea,
+ 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1, 0x9df2,
+ 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0x9dfa,
+ 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9dff, 0x9e00, 0x9e01, 0x9e02,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xfb */
+ 0x9e03, 0x9e04, 0x9e05, 0x9e06, 0x9e07, 0x9e08, 0x9e09, 0x9e0a,
+ 0x9e0b, 0x9e0c, 0x9e0d, 0x9e0e, 0x9e0f, 0x9e10, 0x9e11, 0x9e12,
+ 0x9e13, 0x9e14, 0x9e15, 0x9e16, 0x9e17, 0x9e18, 0x9e19, 0x9e1a,
+ 0x9e1b, 0x9e1c, 0x9e1d, 0x9e1e, 0x9e24, 0x9e27, 0x9e2e, 0x9e30,
+ 0x9e34, 0x9e3b, 0x9e3c, 0x9e40, 0x9e4d, 0x9e50, 0x9e52, 0x9e53,
+ 0x9e54, 0x9e56, 0x9e59, 0x9e5d, 0x9e5f, 0x9e60, 0x9e61, 0x9e62,
+ 0x9e65, 0x9e6e, 0x9e6f, 0x9e72, 0x9e74, 0x9e75, 0x9e76, 0x9e77,
+ 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, 0x9e80, 0x9e81,
+ 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e89, 0x9e8a, 0x9e8c, 0x9e8d,
+ 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e94, 0x9e95, 0x9e96, 0x9e97,
+ 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9e, 0x9ea0, 0x9ea1,
+ 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea7, 0x9ea8, 0x9ea9, 0x9eaa,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xfc */
+ 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2,
+ 0x9eb3, 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb9, 0x9eba, 0x9ebc, 0x9ebf,
+ 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8,
+ 0x9eca, 0x9ecb, 0x9ecc, 0x9ed0, 0x9ed2, 0x9ed3, 0x9ed5, 0x9ed6,
+ 0x9ed7, 0x9ed9, 0x9eda, 0x9ede, 0x9ee1, 0x9ee3, 0x9ee4, 0x9ee6,
+ 0x9ee8, 0x9eeb, 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2,
+ 0x9ef3, 0x9ef4, 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9efa, 0x9efd,
+ 0x9eff, 0x9f00, 0x9f01, 0x9f02, 0x9f03, 0x9f04, 0x9f05, 0x9f06,
+ 0x9f07, 0x9f08, 0x9f09, 0x9f0a, 0x9f0c, 0x9f0f, 0x9f11, 0x9f12,
+ 0x9f14, 0x9f15, 0x9f16, 0x9f18, 0x9f1a, 0x9f1b, 0x9f1c, 0x9f1d,
+ 0x9f1e, 0x9f1f, 0x9f21, 0x9f23, 0x9f24, 0x9f25, 0x9f26, 0x9f27,
+ 0x9f28, 0x9f29, 0x9f2a, 0x9f2b, 0x9f2d, 0x9f2e, 0x9f30, 0x9f31,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xfd */
+ 0x9f32, 0x9f33, 0x9f34, 0x9f35, 0x9f36, 0x9f38, 0x9f3a, 0x9f3c,
+ 0x9f3f, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f45, 0x9f46, 0x9f47,
+ 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f,
+ 0x9f52, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f59,
+ 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, 0x9f5f, 0x9f60, 0x9f61,
+ 0x9f62, 0x9f63, 0x9f64, 0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69,
+ 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71,
+ 0x9f72, 0x9f73, 0x9f74, 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x9f79,
+ 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f81, 0x9f82, 0x9f8d,
+ 0x9f8e, 0x9f8f, 0x9f90, 0x9f91, 0x9f92, 0x9f93, 0x9f94, 0x9f95,
+ 0x9f96, 0x9f97, 0x9f98, 0x9f9c, 0x9f9d, 0x9f9e, 0x9fa1, 0x9fa2,
+ 0x9fa3, 0x9fa4, 0x9fa5, 0xf92c, 0xf979, 0xf995, 0xf9e7, 0xf9f1,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xfe */
+ 0xfa0c, 0xfa0d, 0xfa0e, 0xfa0f, 0xfa11, 0xfa13, 0xfa14, 0xfa18,
+ 0xfa1f, 0xfa20, 0xfa21, 0xfa23, 0xfa24, 0xfa27, 0xfa28, 0xfa29,
+};
+
+static int
+gbk_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if ((c1 >= 0x81 && c1 <= 0xfe)) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) {
+ unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40));
+ unsigned short wc = 0xfffd;
+ {
+ if (i < 23766)
+ wc = gbk_2uni_page81[i];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short gbk_page00[208] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e8, 0x0000, 0x0000, 0xa1ec, /*0xa0-0xa7*/
+ 0xa1a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
+ 0xa1e3, 0xa1c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1a4, /*0xb0-0xb7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb8-0xbf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc0-0xc7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1c1, /*0xd0-0xd7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
+ 0xa8a4, 0xa8a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xe0-0xe7*/
+ 0xa8a8, 0xa8a6, 0xa8ba, 0x0000, 0xa8ac, 0xa8aa, 0x0000, 0x0000, /*0xe8-0xef*/
+ 0x0000, 0x0000, 0xa8b0, 0xa8ae, 0x0000, 0x0000, 0x0000, 0xa1c2, /*0xf0-0xf7*/
+ 0x0000, 0xa8b4, 0xa8b2, 0x0000, 0xa8b9, 0x0000, 0x0000, 0x0000, /*0xf8-0xff*/
+ /* 0x0100 */
+ 0x0000, 0xa8a1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x00-0x07*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
+ 0x0000, 0x0000, 0x0000, 0xa8a5, 0x0000, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
+ 0x0000, 0x0000, 0x0000, 0xa8a7, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
+ 0x0000, 0x0000, 0x0000, 0xa8a9, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa8bd, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
+ 0xa8be, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8ad, 0x0000, 0x0000, /*0x48-0x4f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/
+ 0x0000, 0x0000, 0x0000, 0xa8b1, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
+};
+static const unsigned short gbk_page01[24] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8a3, 0x0000, /*0xc8-0xcf*/
+ 0xa8ab, 0x0000, 0xa8af, 0x0000, 0xa8b3, 0x0000, 0xa8b5, 0x0000, /*0xd0-0xd7*/
+ 0xa8b6, 0x0000, 0xa8b7, 0x0000, 0xa8b8, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
+};
+static const unsigned short gbk_page02a[24] = {
+ 0x0000, 0xa8bb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
+ 0x0000, 0xa8c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/
+};
+static const unsigned short gbk_page02b[32] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1a6, /*0xc0-0xc7*/
+ 0x0000, 0xa1a5, 0xa840, 0xa841, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd0-0xd7*/
+ 0x0000, 0xa842, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
+};
+static const unsigned short gbk_page03[64] = {
+ 0x0000, 0xa6a1, 0xa6a2, 0xa6a3, 0xa6a4, 0xa6a5, 0xa6a6, 0xa6a7, /*0x90-0x97*/
+ 0xa6a8, 0xa6a9, 0xa6aa, 0xa6ab, 0xa6ac, 0xa6ad, 0xa6ae, 0xa6af, /*0x98-0x9f*/
+ 0xa6b0, 0xa6b1, 0x0000, 0xa6b2, 0xa6b3, 0xa6b4, 0xa6b5, 0xa6b6, /*0xa0-0xa7*/
+ 0xa6b7, 0xa6b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
+ 0x0000, 0xa6c1, 0xa6c2, 0xa6c3, 0xa6c4, 0xa6c5, 0xa6c6, 0xa6c7, /*0xb0-0xb7*/
+ 0xa6c8, 0xa6c9, 0xa6ca, 0xa6cb, 0xa6cc, 0xa6cd, 0xa6ce, 0xa6cf, /*0xb8-0xbf*/
+ 0xa6d0, 0xa6d1, 0x0000, 0xa6d2, 0xa6d3, 0xa6d4, 0xa6d5, 0xa6d6, /*0xc0-0xc7*/
+ 0xa6d7, 0xa6d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
+};
+static const unsigned short gbk_page04[88] = {
+ 0x0000, 0xa7a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x00-0x07*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
+ 0xa7a1, 0xa7a2, 0xa7a3, 0xa7a4, 0xa7a5, 0xa7a6, 0xa7a8, 0xa7a9, /*0x10-0x17*/
+ 0xa7aa, 0xa7ab, 0xa7ac, 0xa7ad, 0xa7ae, 0xa7af, 0xa7b0, 0xa7b1, /*0x18-0x1f*/
+ 0xa7b2, 0xa7b3, 0xa7b4, 0xa7b5, 0xa7b6, 0xa7b7, 0xa7b8, 0xa7b9, /*0x20-0x27*/
+ 0xa7ba, 0xa7bb, 0xa7bc, 0xa7bd, 0xa7be, 0xa7bf, 0xa7c0, 0xa7c1, /*0x28-0x2f*/
+ 0xa7d1, 0xa7d2, 0xa7d3, 0xa7d4, 0xa7d5, 0xa7d6, 0xa7d8, 0xa7d9, /*0x30-0x37*/
+ 0xa7da, 0xa7db, 0xa7dc, 0xa7dd, 0xa7de, 0xa7df, 0xa7e0, 0xa7e1, /*0x38-0x3f*/
+ 0xa7e2, 0xa7e3, 0xa7e4, 0xa7e5, 0xa7e6, 0xa7e7, 0xa7e8, 0xa7e9, /*0x40-0x47*/
+ 0xa7ea, 0xa7eb, 0xa7ec, 0xa7ed, 0xa7ee, 0xa7ef, 0xa7f0, 0xa7f1, /*0x48-0x4f*/
+ 0x0000, 0xa7d7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
+};
+static const unsigned short gbk_page20[48] = {
+ 0xa95c, 0x0000, 0x0000, 0xa843, 0xa1aa, 0xa844, 0xa1ac, 0x0000, /*0x10-0x17*/
+ 0xa1ae, 0xa1af, 0x0000, 0x0000, 0xa1b0, 0xa1b1, 0x0000, 0x0000, /*0x18-0x1f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa845, 0xa1ad, 0x0000, /*0x20-0x27*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0xa1eb, 0x0000, 0xa1e4, 0xa1e5, 0x0000, 0xa846, 0x0000, 0x0000, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0xa1f9, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
+};
+static const unsigned short gbk_page21[160] = {
+ 0x0000, 0x0000, 0x0000, 0xa1e6, 0x0000, 0xa847, 0x0000, 0x0000, /*0x00-0x07*/
+ 0x0000, 0xa848, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1ed, 0x0000, /*0x10-0x17*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
+ 0x0000, 0xa959, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
+ 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, /*0x60-0x67*/
+ 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
+ 0xa2a1, 0xa2a2, 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a6, 0xa2a7, 0xa2a8, /*0x70-0x77*/
+ 0xa2a9, 0xa2aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
+ 0xa1fb, 0xa1fc, 0xa1fa, 0xa1fd, 0x0000, 0x0000, 0xa849, 0xa84a, /*0x90-0x97*/
+ 0xa84b, 0xa84c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
+};
+static const unsigned short gbk_page22[184] = {
+ 0xa1ca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1c7, /*0x08-0x0f*/
+ 0x0000, 0xa1c6, 0x0000, 0x0000, 0x0000, 0xa84d, 0x0000, 0x0000, /*0x10-0x17*/
+ 0x0000, 0x0000, 0xa1cc, 0x0000, 0x0000, 0xa1d8, 0xa1de, 0xa84e, /*0x18-0x1f*/
+ 0xa1cf, 0x0000, 0x0000, 0xa84f, 0x0000, 0xa1ce, 0x0000, 0xa1c4, /*0x20-0x27*/
+ 0xa1c5, 0xa1c9, 0xa1c8, 0xa1d2, 0x0000, 0x0000, 0xa1d3, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e0, 0xa1df, 0xa1c3, 0xa1cb, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1d7, 0x0000, 0x0000, /*0x38-0x3f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
+ 0xa1d6, 0x0000, 0x0000, 0x0000, 0xa1d5, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
+ 0x0000, 0x0000, 0xa850, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
+ 0xa1d9, 0xa1d4, 0x0000, 0x0000, 0xa1dc, 0xa1dd, 0xa851, 0xa852, /*0x60-0x67*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1da, 0xa1db, /*0x68-0x6f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x70-0x77*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa892, 0x0000, 0x0000, /*0x90-0x97*/
+ 0x0000, 0xa1d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1cd, 0x0000, 0x0000, /*0xa0-0xa7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa853, /*0xb8-0xbf*/
+};
+static const unsigned short gbk_page24[64] = {
+ 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, /*0x60-0x67*/
+ 0xa2e1, 0xa2e2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, /*0x70-0x77*/
+ 0xa2c9, 0xa2ca, 0xa2cb, 0xa2cc, 0xa2cd, 0xa2ce, 0xa2cf, 0xa2d0, /*0x78-0x7f*/
+ 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, /*0x80-0x87*/
+ 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, /*0x88-0x8f*/
+ 0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, /*0x90-0x97*/
+ 0xa2c1, 0xa2c2, 0xa2c3, 0xa2c4, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
+};
+static const unsigned short gbk_page25[232] = {
+ 0xa9a4, 0xa9a5, 0xa9a6, 0xa9a7, 0xa9a8, 0xa9a9, 0xa9aa, 0xa9ab, /*0x00-0x07*/
+ 0xa9ac, 0xa9ad, 0xa9ae, 0xa9af, 0xa9b0, 0xa9b1, 0xa9b2, 0xa9b3, /*0x08-0x0f*/
+ 0xa9b4, 0xa9b5, 0xa9b6, 0xa9b7, 0xa9b8, 0xa9b9, 0xa9ba, 0xa9bb, /*0x10-0x17*/
+ 0xa9bc, 0xa9bd, 0xa9be, 0xa9bf, 0xa9c0, 0xa9c1, 0xa9c2, 0xa9c3, /*0x18-0x1f*/
+ 0xa9c4, 0xa9c5, 0xa9c6, 0xa9c7, 0xa9c8, 0xa9c9, 0xa9ca, 0xa9cb, /*0x20-0x27*/
+ 0xa9cc, 0xa9cd, 0xa9ce, 0xa9cf, 0xa9d0, 0xa9d1, 0xa9d2, 0xa9d3, /*0x28-0x2f*/
+ 0xa9d4, 0xa9d5, 0xa9d6, 0xa9d7, 0xa9d8, 0xa9d9, 0xa9da, 0xa9db, /*0x30-0x37*/
+ 0xa9dc, 0xa9dd, 0xa9de, 0xa9df, 0xa9e0, 0xa9e1, 0xa9e2, 0xa9e3, /*0x38-0x3f*/
+ 0xa9e4, 0xa9e5, 0xa9e6, 0xa9e7, 0xa9e8, 0xa9e9, 0xa9ea, 0xa9eb, /*0x40-0x47*/
+ 0xa9ec, 0xa9ed, 0xa9ee, 0xa9ef, 0x0000, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
+ 0xa854, 0xa855, 0xa856, 0xa857, 0xa858, 0xa859, 0xa85a, 0xa85b, /*0x50-0x57*/
+ 0xa85c, 0xa85d, 0xa85e, 0xa85f, 0xa860, 0xa861, 0xa862, 0xa863, /*0x58-0x5f*/
+ 0xa864, 0xa865, 0xa866, 0xa867, 0xa868, 0xa869, 0xa86a, 0xa86b, /*0x60-0x67*/
+ 0xa86c, 0xa86d, 0xa86e, 0xa86f, 0xa870, 0xa871, 0xa872, 0xa873, /*0x68-0x6f*/
+ 0xa874, 0xa875, 0xa876, 0xa877, 0x0000, 0x0000, 0x0000, 0x0000, /*0x70-0x77*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
+ 0x0000, 0xa878, 0xa879, 0xa87a, 0xa87b, 0xa87c, 0xa87d, 0xa87e, /*0x80-0x87*/
+ 0xa880, 0xa881, 0xa882, 0xa883, 0xa884, 0xa885, 0xa886, 0xa887, /*0x88-0x8f*/
+ 0x0000, 0x0000, 0x0000, 0xa888, 0xa889, 0xa88a, 0x0000, 0x0000, /*0x90-0x97*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
+ 0xa1f6, 0xa1f5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa0-0xa7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
+ 0x0000, 0x0000, 0xa1f8, 0xa1f7, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa88b, 0xa88c, 0x0000, 0x0000, /*0xb8-0xbf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1f4, 0xa1f3, /*0xc0-0xc7*/
+ 0x0000, 0x0000, 0x0000, 0xa1f0, 0x0000, 0x0000, 0xa1f2, 0xa1f1, /*0xc8-0xcf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd0-0xd7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
+ 0x0000, 0x0000, 0xa88d, 0xa88e, 0xa88f, 0xa890, 0x0000, 0x0000, /*0xe0-0xe7*/
+};
+static const unsigned short gbk_page26[72] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1ef, 0xa1ee, 0x0000, /*0x00-0x07*/
+ 0x0000, 0xa891, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
+ 0xa1e2, 0x0000, 0xa1e1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
+};
+static const unsigned short gbk_page30[304] = {
+ 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a8, 0x0000, 0xa1a9, 0xa965, 0xa996, /*0x00-0x07*/
+ 0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7, 0xa1b8, 0xa1b9, 0xa1ba, 0xa1bb, /*0x08-0x0f*/
+ 0xa1be, 0xa1bf, 0xa893, 0xa1fe, 0xa1b2, 0xa1b3, 0xa1bc, 0xa1bd, /*0x10-0x17*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa894, 0xa895, 0x0000, /*0x18-0x1f*/
+ 0x0000, 0xa940, 0xa941, 0xa942, 0xa943, 0xa944, 0xa945, 0xa946, /*0x20-0x27*/
+ 0xa947, 0xa948, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
+ 0x0000, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, 0xa4a5, 0xa4a6, 0xa4a7, /*0x40-0x47*/
+ 0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4ae, 0xa4af, /*0x48-0x4f*/
+ 0xa4b0, 0xa4b1, 0xa4b2, 0xa4b3, 0xa4b4, 0xa4b5, 0xa4b6, 0xa4b7, /*0x50-0x57*/
+ 0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, 0xa4be, 0xa4bf, /*0x58-0x5f*/
+ 0xa4c0, 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0xa4c7, /*0x60-0x67*/
+ 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4cc, 0xa4cd, 0xa4ce, 0xa4cf, /*0x68-0x6f*/
+ 0xa4d0, 0xa4d1, 0xa4d2, 0xa4d3, 0xa4d4, 0xa4d5, 0xa4d6, 0xa4d7, /*0x70-0x77*/
+ 0xa4d8, 0xa4d9, 0xa4da, 0xa4db, 0xa4dc, 0xa4dd, 0xa4de, 0xa4df, /*0x78-0x7f*/
+ 0xa4e0, 0xa4e1, 0xa4e2, 0xa4e3, 0xa4e4, 0xa4e5, 0xa4e6, 0xa4e7, /*0x80-0x87*/
+ 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ed, 0xa4ee, 0xa4ef, /*0x88-0x8f*/
+ 0xa4f0, 0xa4f1, 0xa4f2, 0xa4f3, 0x0000, 0x0000, 0x0000, 0x0000, /*0x90-0x97*/
+ 0x0000, 0x0000, 0x0000, 0xa961, 0xa962, 0xa966, 0xa967, 0x0000, /*0x98-0x9f*/
+ 0x0000, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a5, 0xa5a6, 0xa5a7, /*0xa0-0xa7*/
+ 0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac, 0xa5ad, 0xa5ae, 0xa5af, /*0xa8-0xaf*/
+ 0xa5b0, 0xa5b1, 0xa5b2, 0xa5b3, 0xa5b4, 0xa5b5, 0xa5b6, 0xa5b7, /*0xb0-0xb7*/
+ 0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd, 0xa5be, 0xa5bf, /*0xb8-0xbf*/
+ 0xa5c0, 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7, /*0xc0-0xc7*/
+ 0xa5c8, 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf, /*0xc8-0xcf*/
+ 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7, /*0xd0-0xd7*/
+ 0xa5d8, 0xa5d9, 0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5de, 0xa5df, /*0xd8-0xdf*/
+ 0xa5e0, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, 0xa5e5, 0xa5e6, 0xa5e7, /*0xe0-0xe7*/
+ 0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ee, 0xa5ef, /*0xe8-0xef*/
+ 0xa5f0, 0xa5f1, 0xa5f2, 0xa5f3, 0xa5f4, 0xa5f5, 0xa5f6, 0x0000, /*0xf0-0xf7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa960, 0xa963, 0xa964, 0x0000, /*0xf8-0xff*/
+ /* 0x3100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8c5, 0xa8c6, 0xa8c7, /*0x00-0x07*/
+ 0xa8c8, 0xa8c9, 0xa8ca, 0xa8cb, 0xa8cc, 0xa8cd, 0xa8ce, 0xa8cf, /*0x08-0x0f*/
+ 0xa8d0, 0xa8d1, 0xa8d2, 0xa8d3, 0xa8d4, 0xa8d5, 0xa8d6, 0xa8d7, /*0x10-0x17*/
+ 0xa8d8, 0xa8d9, 0xa8da, 0xa8db, 0xa8dc, 0xa8dd, 0xa8de, 0xa8df, /*0x18-0x1f*/
+ 0xa8e0, 0xa8e1, 0xa8e2, 0xa8e3, 0xa8e4, 0xa8e5, 0xa8e6, 0xa8e7, /*0x20-0x27*/
+ 0xa8e8, 0xa8e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+};
+static const unsigned short gbk_page32[24] = {
+ 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, /*0x20-0x27*/
+ 0xa2ed, 0xa2ee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0xa95a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
+};
+static const unsigned short gbk_page33[80] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa94a, 0xa94b, /*0x88-0x8f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x90-0x97*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa94c, 0xa94d, 0xa94e, 0x0000, /*0x98-0x9f*/
+ 0x0000, 0xa94f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa0-0xa7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb8-0xbf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa950, 0x0000, 0x0000, 0x0000, /*0xc0-0xc7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa951, 0x0000, /*0xc8-0xcf*/
+ 0x0000, 0xa952, 0xa953, 0x0000, 0x0000, 0xa954, 0x0000, 0x0000, /*0xd0-0xd7*/
+};
+static const unsigned short gbk_page4e[20904] = {
+ 0xd2bb, 0xb6a1, 0x8140, 0xc6df, 0x8141, 0x8142, 0x8143, 0xcdf2, /*0x00-0x07*/
+ 0xd5c9, 0xc8fd, 0xc9cf, 0xcfc2, 0xd8a2, 0xb2bb, 0xd3eb, 0x8144, /*0x08-0x0f*/
+ 0xd8a4, 0xb3f3, 0x8145, 0xd7a8, 0xc7d2, 0xd8a7, 0xcac0, 0x8146, /*0x10-0x17*/
+ 0xc7f0, 0xb1fb, 0xd2b5, 0xb4d4, 0xb6ab, 0xcbbf, 0xd8a9, 0x8147, /*0x18-0x1f*/
+ 0x8148, 0x8149, 0xb6aa, 0x814a, 0xc1bd, 0xd1cf, 0x814b, 0xc9a5, /*0x20-0x27*/
+ 0xd8ad, 0x814c, 0xb8f6, 0xd1be, 0xe3dc, 0xd6d0, 0x814d, 0x814e, /*0x28-0x2f*/
+ 0xb7e1, 0x814f, 0xb4ae, 0x8150, 0xc1d9, 0x8151, 0xd8bc, 0x8152, /*0x30-0x37*/
+ 0xcde8, 0xb5a4, 0xceaa, 0xd6f7, 0x8153, 0xc0f6, 0xbed9, 0xd8af, /*0x38-0x3f*/
+ 0x8154, 0x8155, 0x8156, 0xc4cb, 0x8157, 0xbec3, 0x8158, 0xd8b1, /*0x40-0x47*/
+ 0xc3b4, 0xd2e5, 0x8159, 0xd6ae, 0xceda, 0xd5a7, 0xbaf5, 0xb7a6, /*0x48-0x4f*/
+ 0xc0d6, 0x815a, 0xc6b9, 0xc5d2, 0xc7c7, 0x815b, 0xb9d4, 0x815c, /*0x50-0x57*/
+ 0xb3cb, 0xd2d2, 0x815d, 0x815e, 0xd8bf, 0xbec5, 0xc6f2, 0xd2b2, /*0x58-0x5f*/
+ 0xcfb0, 0xcfe7, 0x815f, 0x8160, 0x8161, 0x8162, 0xcae9, 0x8163, /*0x60-0x67*/
+ 0x8164, 0xd8c0, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816a, /*0x68-0x6f*/
+ 0xc2f2, 0xc2d2, 0x816b, 0xc8e9, 0x816c, 0x816d, 0x816e, 0x816f, /*0x70-0x77*/
+ 0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0xc7ac, 0x8176, /*0x78-0x7f*/
+ 0x8177, 0x8178, 0x8179, 0x817a, 0x817b, 0x817c, 0xc1cb, 0x817d, /*0x80-0x87*/
+ 0xd3e8, 0xd5f9, 0x817e, 0xcac2, 0xb6fe, 0xd8a1, 0xd3da, 0xbff7, /*0x88-0x8f*/
+ 0x8180, 0xd4c6, 0xbba5, 0xd8c1, 0xcee5, 0xbeae, 0x8181, 0x8182, /*0x90-0x97*/
+ 0xd8a8, 0x8183, 0xd1c7, 0xd0a9, 0x8184, 0x8185, 0x8186, 0xd8bd, /*0x98-0x9f*/
+ 0xd9ef, 0xcdf6, 0xbfba, 0x8187, 0xbdbb, 0xbaa5, 0xd2e0, 0xb2fa, /*0xa0-0xa7*/
+ 0xbae0, 0xc4b6, 0x8188, 0xcfed, 0xbea9, 0xcda4, 0xc1c1, 0x8189, /*0xa8-0xaf*/
+ 0x818a, 0x818b, 0xc7d7, 0xd9f1, 0x818c, 0xd9f4, 0x818d, 0x818e, /*0xb0-0xb7*/
+ 0x818f, 0x8190, 0xc8cb, 0xd8e9, 0x8191, 0x8192, 0x8193, 0xd2da, /*0xb8-0xbf*/
+ 0xcab2, 0xc8ca, 0xd8ec, 0xd8ea, 0xd8c6, 0xbdf6, 0xc6cd, 0xb3f0, /*0xc0-0xc7*/
+ 0x8194, 0xd8eb, 0xbdf1, 0xbde9, 0x8195, 0xc8d4, 0xb4d3, 0x8196, /*0xc8-0xcf*/
+ 0x8197, 0xc2d8, 0x8198, 0xb2d6, 0xd7d0, 0xcacb, 0xcbfb, 0xd5cc, /*0xd0-0xd7*/
+ 0xb8b6, 0xcfc9, 0x8199, 0x819a, 0x819b, 0xd9da, 0xd8f0, 0xc7aa, /*0xd8-0xdf*/
+ 0x819c, 0xd8ee, 0x819d, 0xb4fa, 0xc1ee, 0xd2d4, 0x819e, 0x819f, /*0xe0-0xe7*/
+ 0xd8ed, 0x81a0, 0xd2c7, 0xd8ef, 0xc3c7, 0x81a1, 0x81a2, 0x81a3, /*0xe8-0xef*/
+ 0xd1f6, 0x81a4, 0xd6d9, 0xd8f2, 0x81a5, 0xd8f5, 0xbcfe, 0xbcdb, /*0xf0-0xf7*/
+ 0x81a6, 0x81a7, 0x81a8, 0xc8ce, 0x81a9, 0xb7dd, 0x81aa, 0xb7c2, /*0xf8-0xff*/
+ /* 0x4f00 */
+ 0x81ab, 0xc6f3, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1, /*0x00-0x07*/
+ 0x81b2, 0xd8f8, 0xd2c1, 0x81b3, 0x81b4, 0xcee9, 0xbcbf, 0xb7fc, /*0x08-0x0f*/
+ 0xb7a5, 0xd0dd, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0xd6da, /*0x10-0x17*/
+ 0xd3c5, 0xbbef, 0xbbe1, 0xd8f1, 0x81ba, 0x81bb, 0xc9a1, 0xceb0, /*0x18-0x1f*/
+ 0xb4ab, 0x81bc, 0xd8f3, 0x81bd, 0xc9cb, 0xd8f6, 0xc2d7, 0xd8f7, /*0x20-0x27*/
+ 0x81be, 0x81bf, 0xceb1, 0xd8f9, 0x81c0, 0x81c1, 0x81c2, 0xb2ae, /*0x28-0x2f*/
+ 0xb9c0, 0x81c3, 0xd9a3, 0x81c4, 0xb0e9, 0x81c5, 0xc1e6, 0x81c6, /*0x30-0x37*/
+ 0xc9ec, 0x81c7, 0xcbc5, 0x81c8, 0xcbc6, 0xd9a4, 0x81c9, 0x81ca, /*0x38-0x3f*/
+ 0x81cb, 0x81cc, 0x81cd, 0xb5e8, 0x81ce, 0x81cf, 0xb5ab, 0x81d0, /*0x40-0x47*/
+ 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5, 0xcebb, 0xb5cd, 0xd7a1, /*0x48-0x4f*/
+ 0xd7f4, 0xd3d3, 0x81d6, 0xcce5, 0x81d7, 0xbace, 0x81d8, 0xd9a2, /*0x50-0x57*/
+ 0xd9dc, 0xd3e0, 0xd8fd, 0xb7f0, 0xd7f7, 0xd8fe, 0xd8fa, 0xd9a1, /*0x58-0x5f*/
+ 0xc4e3, 0x81d9, 0x81da, 0xd3b6, 0xd8f4, 0xd9dd, 0x81db, 0xd8fb, /*0x60-0x67*/
+ 0x81dc, 0xc5e5, 0x81dd, 0x81de, 0xc0d0, 0x81df, 0x81e0, 0xd1f0, /*0x68-0x6f*/
+ 0xb0db, 0x81e1, 0x81e2, 0xbcd1, 0xd9a6, 0x81e3, 0xd9a5, 0x81e4, /*0x70-0x77*/
+ 0x81e5, 0x81e6, 0x81e7, 0xd9ac, 0xd9ae, 0x81e8, 0xd9ab, 0xcab9, /*0x78-0x7f*/
+ 0x81e9, 0x81ea, 0x81eb, 0xd9a9, 0xd6b6, 0x81ec, 0x81ed, 0x81ee, /*0x80-0x87*/
+ 0xb3de, 0xd9a8, 0x81ef, 0xc0fd, 0x81f0, 0xcacc, 0x81f1, 0xd9aa, /*0x88-0x8f*/
+ 0x81f2, 0xd9a7, 0x81f3, 0x81f4, 0xd9b0, 0x81f5, 0x81f6, 0xb6b1, /*0x90-0x97*/
+ 0x81f7, 0x81f8, 0x81f9, 0xb9a9, 0x81fa, 0xd2c0, 0x81fb, 0x81fc, /*0x98-0x9f*/
+ 0xcfc0, 0x81fd, 0x81fe, 0xc2c2, 0x8240, 0xbdc4, 0xd5ec, 0xb2e0, /*0xa0-0xa7*/
+ 0xc7c8, 0xbfeb, 0xd9ad, 0x8241, 0xd9af, 0x8242, 0xceea, 0xbaee, /*0xa8-0xaf*/
+ 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, 0xc7d6, 0x8248, 0x8249, /*0xb0-0xb7*/
+ 0x824a, 0x824b, 0x824c, 0x824d, 0x824e, 0x824f, 0x8250, 0xb1e3, /*0xb8-0xbf*/
+ 0x8251, 0x8252, 0x8253, 0xb4d9, 0xb6ed, 0xd9b4, 0x8254, 0x8255, /*0xc0-0xc7*/
+ 0x8256, 0x8257, 0xbfa1, 0x8258, 0x8259, 0x825a, 0xd9de, 0xc7ce, /*0xc8-0xcf*/
+ 0xc0fe, 0xd9b8, 0x825b, 0x825c, 0x825d, 0x825e, 0x825f, 0xcbd7, /*0xd0-0xd7*/
+ 0xb7fd, 0x8260, 0xd9b5, 0x8261, 0xd9b7, 0xb1a3, 0xd3e1, 0xd9b9, /*0xd8-0xdf*/
+ 0x8262, 0xd0c5, 0x8263, 0xd9b6, 0x8264, 0x8265, 0xd9b1, 0x8266, /*0xe0-0xe7*/
+ 0xd9b2, 0xc1a9, 0xd9b3, 0x8267, 0x8268, 0xbcf3, 0xd0de, 0xb8a9, /*0xe8-0xef*/
+ 0x8269, 0xbee3, 0x826a, 0xd9bd, 0x826b, 0x826c, 0x826d, 0x826e, /*0xf0-0xf7*/
+ 0xd9ba, 0x826f, 0xb0b3, 0x8270, 0x8271, 0x8272, 0xd9c2, 0x8273, /*0xf8-0xff*/
+ /* 0x5000 */
+ 0x8274, 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x827a, 0x827b, /*0x00-0x07*/
+ 0x827c, 0x827d, 0x827e, 0x8280, 0xd9c4, 0xb1b6, 0x8281, 0xd9bf, /*0x08-0x0f*/
+ 0x8282, 0x8283, 0xb5b9, 0x8284, 0xbef3, 0x8285, 0x8286, 0x8287, /*0x10-0x17*/
+ 0xccc8, 0xbaf2, 0xd2d0, 0x8288, 0xd9c3, 0x8289, 0x828a, 0xbde8, /*0x18-0x1f*/
+ 0x828b, 0xb3ab, 0x828c, 0x828d, 0x828e, 0xd9c5, 0xbeeb, 0x828f, /*0x20-0x27*/
+ 0xd9c6, 0xd9bb, 0xc4df, 0x8290, 0xd9be, 0xd9c1, 0xd9c0, 0x8291, /*0x28-0x2f*/
+ 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, 0x8298, 0x8299, /*0x30-0x37*/
+ 0x829a, 0x829b, 0xd5ae, 0x829c, 0xd6b5, 0x829d, 0xc7e3, 0x829e, /*0x38-0x3f*/
+ 0x829f, 0x82a0, 0x82a1, 0xd9c8, 0x82a2, 0x82a3, 0x82a4, 0xbcd9, /*0x40-0x47*/
+ 0xd9ca, 0x82a5, 0x82a6, 0x82a7, 0xd9bc, 0x82a8, 0xd9cb, 0xc6ab, /*0x48-0x4f*/
+ 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0xd9c9, 0x82ae, 0x82af, /*0x50-0x57*/
+ 0x82b0, 0x82b1, 0xd7f6, 0x82b2, 0xcda3, 0x82b3, 0x82b4, 0x82b5, /*0x58-0x5f*/
+ 0x82b6, 0x82b7, 0x82b8, 0x82b9, 0x82ba, 0xbda1, 0x82bb, 0x82bc, /*0x60-0x67*/
+ 0x82bd, 0x82be, 0x82bf, 0x82c0, 0xd9cc, 0x82c1, 0x82c2, 0x82c3, /*0x68-0x6f*/
+ 0x82c4, 0x82c5, 0x82c6, 0x82c7, 0x82c8, 0x82c9, 0xc5bc, 0xcdb5, /*0x70-0x77*/
+ 0x82ca, 0x82cb, 0x82cc, 0xd9cd, 0x82cd, 0x82ce, 0xd9c7, 0xb3a5, /*0x78-0x7f*/
+ 0xbffe, 0x82cf, 0x82d0, 0x82d1, 0x82d2, 0xb8b5, 0x82d3, 0x82d4, /*0x80-0x87*/
+ 0xc0fc, 0x82d5, 0x82d6, 0x82d7, 0x82d8, 0xb0f8, 0x82d9, 0x82da, /*0x88-0x8f*/
+ 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, 0x82e0, 0x82e1, 0x82e2, /*0x90-0x97*/
+ 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, 0x82e8, 0x82e9, 0x82ea, /*0x98-0x9f*/
+ 0x82eb, 0x82ec, 0x82ed, 0xb4f6, 0x82ee, 0xd9ce, 0x82ef, 0xd9cf, /*0xa0-0xa7*/
+ 0xb4a2, 0xd9d0, 0x82f0, 0x82f1, 0xb4df, 0x82f2, 0x82f3, 0x82f4, /*0xa8-0xaf*/
+ 0x82f5, 0x82f6, 0xb0c1, 0x82f7, 0x82f8, 0x82f9, 0x82fa, 0x82fb, /*0xb0-0xb7*/
+ 0x82fc, 0x82fd, 0xd9d1, 0xc9b5, 0x82fe, 0x8340, 0x8341, 0x8342, /*0xb8-0xbf*/
+ 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349, 0x834a, /*0xc0-0xc7*/
+ 0x834b, 0x834c, 0x834d, 0x834e, 0x834f, 0x8350, 0x8351, 0xcff1, /*0xc8-0xcf*/
+ 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0xd9d2, 0x8358, /*0xd0-0xd7*/
+ 0x8359, 0x835a, 0xc1c5, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f, /*0xd8-0xdf*/
+ 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0xd9d6, 0xc9ae, /*0xe0-0xe7*/
+ 0x8366, 0x8367, 0x8368, 0x8369, 0xd9d5, 0xd9d4, 0xd9d7, 0x836a, /*0xe8-0xef*/
+ 0x836b, 0x836c, 0x836d, 0xcbdb, 0x836e, 0xbda9, 0x836f, 0x8370, /*0xf0-0xf7*/
+ 0x8371, 0x8372, 0x8373, 0xc6a7, 0x8374, 0x8375, 0x8376, 0x8377, /*0xf8-0xff*/
+ /* 0x5100 */
+ 0x8378, 0x8379, 0x837a, 0x837b, 0x837c, 0x837d, 0xd9d3, 0xd9d8, /*0x00-0x07*/
+ 0x837e, 0x8380, 0x8381, 0xd9d9, 0x8382, 0x8383, 0x8384, 0x8385, /*0x08-0x0f*/
+ 0x8386, 0x8387, 0xc8e5, 0x8388, 0x8389, 0x838a, 0x838b, 0x838c, /*0x10-0x17*/
+ 0x838d, 0x838e, 0x838f, 0x8390, 0x8391, 0x8392, 0x8393, 0x8394, /*0x18-0x1f*/
+ 0x8395, 0xc0dc, 0x8396, 0x8397, 0x8398, 0x8399, 0x839a, 0x839b, /*0x20-0x27*/
+ 0x839c, 0x839d, 0x839e, 0x839f, 0x83a0, 0x83a1, 0x83a2, 0x83a3, /*0x28-0x2f*/
+ 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83a8, 0x83a9, 0x83aa, 0x83ab, /*0x30-0x37*/
+ 0x83ac, 0x83ad, 0x83ae, 0x83af, 0x83b0, 0x83b1, 0x83b2, 0xb6f9, /*0x38-0x3f*/
+ 0xd8a3, 0xd4ca, 0x83b3, 0xd4aa, 0xd0d6, 0xb3e4, 0xd5d7, 0x83b4, /*0x40-0x47*/
+ 0xcfc8, 0xb9e2, 0x83b5, 0xbfcb, 0x83b6, 0xc3e2, 0x83b7, 0x83b8, /*0x48-0x4f*/
+ 0x83b9, 0xb6d2, 0x83ba, 0x83bb, 0xcdc3, 0xd9ee, 0xd9f0, 0x83bc, /*0x50-0x57*/
+ 0x83bd, 0x83be, 0xb5b3, 0x83bf, 0xb6b5, 0x83c0, 0x83c1, 0x83c2, /*0x58-0x5f*/
+ 0x83c3, 0x83c4, 0xbea4, 0x83c5, 0x83c6, 0xc8eb, 0x83c7, 0x83c8, /*0x60-0x67*/
+ 0xc8ab, 0x83c9, 0x83ca, 0xb0cb, 0xb9ab, 0xc1f9, 0xd9e2, 0x83cb, /*0x68-0x6f*/
+ 0xc0bc, 0xb9b2, 0x83cc, 0xb9d8, 0xd0cb, 0xb1f8, 0xc6e4, 0xbedf, /*0x70-0x77*/
+ 0xb5e4, 0xd7c8, 0x83cd, 0xd1f8, 0xbce6, 0xcade, 0x83ce, 0x83cf, /*0x78-0x7f*/
+ 0xbcbd, 0xd9e6, 0xd8e7, 0x83d0, 0x83d1, 0xc4da, 0x83d2, 0x83d3, /*0x80-0x87*/
+ 0xb8d4, 0xc8bd, 0x83d4, 0x83d5, 0xb2e1, 0xd4d9, 0x83d6, 0x83d7, /*0x88-0x8f*/
+ 0x83d8, 0x83d9, 0xc3b0, 0x83da, 0x83db, 0xc3e1, 0xdaa2, 0xc8df, /*0x90-0x97*/
+ 0x83dc, 0xd0b4, 0x83dd, 0xbefc, 0xc5a9, 0x83de, 0x83df, 0x83e0, /*0x98-0x9f*/
+ 0xb9da, 0x83e1, 0xdaa3, 0x83e2, 0xd4a9, 0xdaa4, 0x83e3, 0x83e4, /*0xa0-0xa7*/
+ 0x83e5, 0x83e6, 0x83e7, 0xd9fb, 0xb6ac, 0x83e8, 0x83e9, 0xb7eb, /*0xa8-0xaf*/
+ 0xb1f9, 0xd9fc, 0xb3e5, 0xbef6, 0x83ea, 0xbff6, 0xd2b1, 0xc0e4, /*0xb0-0xb7*/
+ 0x83eb, 0x83ec, 0x83ed, 0xb6b3, 0xd9fe, 0xd9fd, 0x83ee, 0x83ef, /*0xb8-0xbf*/
+ 0xbebb, 0x83f0, 0x83f1, 0x83f2, 0xc6e0, 0x83f3, 0xd7bc, 0xdaa1, /*0xc0-0xc7*/
+ 0x83f4, 0xc1b9, 0x83f5, 0xb5f2, 0xc1e8, 0x83f6, 0x83f7, 0xbcf5, /*0xc8-0xcf*/
+ 0x83f8, 0xb4d5, 0x83f9, 0x83fa, 0x83fb, 0x83fc, 0x83fd, 0x83fe, /*0xd0-0xd7*/
+ 0x8440, 0x8441, 0x8442, 0xc1dd, 0x8443, 0xc4fd, 0x8444, 0x8445, /*0xd8-0xdf*/
+ 0xbcb8, 0xb7b2, 0x8446, 0x8447, 0xb7ef, 0x8448, 0x8449, 0x844a, /*0xe0-0xe7*/
+ 0x844b, 0x844c, 0x844d, 0xd9ec, 0x844e, 0xc6be, 0x844f, 0xbfad, /*0xe8-0xef*/
+ 0xbbcb, 0x8450, 0x8451, 0xb5ca, 0x8452, 0xdbc9, 0xd0d7, 0x8453, /*0xf0-0xf7*/
+ 0xcdb9, 0xb0bc, 0xb3f6, 0xbbf7, 0xdbca, 0xbaaf, 0x8454, 0xd4e4, /*0xf8-0xff*/
+ /* 0x5200 */
+ 0xb5b6, 0xb5f3, 0xd8d6, 0xc8d0, 0x8455, 0x8456, 0xb7d6, 0xc7d0, /*0x00-0x07*/
+ 0xd8d7, 0x8457, 0xbfaf, 0x8458, 0x8459, 0xdbbb, 0xd8d8, 0x845a, /*0x08-0x0f*/
+ 0x845b, 0xd0cc, 0xbbae, 0x845c, 0x845d, 0x845e, 0xebbe, 0xc1d0, /*0x10-0x17*/
+ 0xc1f5, 0xd4f2, 0xb8d5, 0xb4b4, 0x845f, 0xb3f5, 0x8460, 0x8461, /*0x18-0x1f*/
+ 0xc9be, 0x8462, 0x8463, 0x8464, 0xc5d0, 0x8465, 0x8466, 0x8467, /*0x20-0x27*/
+ 0xc5d9, 0xc0fb, 0x8468, 0xb1f0, 0x8469, 0xd8d9, 0xb9ce, 0x846a, /*0x28-0x2f*/
+ 0xb5bd, 0x846b, 0x846c, 0xd8da, 0x846d, 0x846e, 0xd6c6, 0xcba2, /*0x30-0x37*/
+ 0xc8af, 0xc9b2, 0xb4cc, 0xbfcc, 0x846f, 0xb9f4, 0x8470, 0xd8db, /*0x38-0x3f*/
+ 0xd8dc, 0xb6e7, 0xbcc1, 0xccea, 0x8471, 0x8472, 0x8473, 0x8474, /*0x40-0x47*/
+ 0x8475, 0x8476, 0xcff7, 0x8477, 0xd8dd, 0xc7b0, 0x8478, 0x8479, /*0x48-0x4f*/
+ 0xb9d0, 0xbda3, 0x847a, 0x847b, 0xccde, 0x847c, 0xc6ca, 0x847d, /*0x50-0x57*/
+ 0x847e, 0x8480, 0x8481, 0x8482, 0xd8e0, 0x8483, 0xd8de, 0x8484, /*0x58-0x5f*/
+ 0x8485, 0xd8df, 0x8486, 0x8487, 0x8488, 0xb0fe, 0x8489, 0xbee7, /*0x60-0x67*/
+ 0x848a, 0xcaa3, 0xbcf4, 0x848b, 0x848c, 0x848d, 0x848e, 0xb8b1, /*0x68-0x6f*/
+ 0x848f, 0x8490, 0xb8ee, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495, /*0x70-0x77*/
+ 0x8496, 0x8497, 0x8498, 0x8499, 0x849a, 0xd8e2, 0x849b, 0xbdcb, /*0x78-0x7f*/
+ 0x849c, 0xd8e4, 0xd8e3, 0x849d, 0x849e, 0x849f, 0x84a0, 0x84a1, /*0x80-0x87*/
+ 0xc5fc, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7, 0x84a8, /*0x88-0x8f*/
+ 0xd8e5, 0x84a9, 0x84aa, 0xd8e6, 0x84ab, 0x84ac, 0x84ad, 0x84ae, /*0x90-0x97*/
+ 0x84af, 0x84b0, 0x84b1, 0xc1a6, 0x84b2, 0xc8b0, 0xb0ec, 0xb9a6, /*0x98-0x9f*/
+ 0xbcd3, 0xcef1, 0xdbbd, 0xc1d3, 0x84b3, 0x84b4, 0x84b5, 0x84b6, /*0xa0-0xa7*/
+ 0xb6af, 0xd6fa, 0xc5ac, 0xbdd9, 0xdbbe, 0xdbbf, 0x84b7, 0x84b8, /*0xa8-0xaf*/
+ 0x84b9, 0xc0f8, 0xbea2, 0xc0cd, 0x84ba, 0x84bb, 0x84bc, 0x84bd, /*0xb0-0xb7*/
+ 0x84be, 0x84bf, 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0xdbc0, 0xcac6, /*0xb8-0xbf*/
+ 0x84c4, 0x84c5, 0x84c6, 0xb2aa, 0x84c7, 0x84c8, 0x84c9, 0xd3c2, /*0xc0-0xc7*/
+ 0x84ca, 0xc3e3, 0x84cb, 0xd1ab, 0x84cc, 0x84cd, 0x84ce, 0x84cf, /*0xc8-0xcf*/
+ 0xdbc2, 0x84d0, 0xc0d5, 0x84d1, 0x84d2, 0x84d3, 0xdbc3, 0x84d4, /*0xd0-0xd7*/
+ 0xbfb1, 0x84d5, 0x84d6, 0x84d7, 0x84d8, 0x84d9, 0x84da, 0xc4bc, /*0xd8-0xdf*/
+ 0x84db, 0x84dc, 0x84dd, 0x84de, 0xc7da, 0x84df, 0x84e0, 0x84e1, /*0xe0-0xe7*/
+ 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6, 0x84e7, 0x84e8, 0x84e9, /*0xe8-0xef*/
+ 0xdbc4, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee, 0x84ef, 0x84f0, /*0xf0-0xf7*/
+ 0x84f1, 0xd9e8, 0xc9d7, 0x84f2, 0x84f3, 0x84f4, 0xb9b4, 0xcef0, /*0xf8-0xff*/
+ /* 0x5300 */
+ 0xd4c8, 0x84f5, 0x84f6, 0x84f7, 0x84f8, 0xb0fc, 0xb4d2, 0x84f9, /*0x00-0x07*/
+ 0xd0d9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0xd9e9, 0x84fe, 0xdecb, /*0x08-0x0f*/
+ 0xd9eb, 0x8540, 0x8541, 0x8542, 0x8543, 0xd8b0, 0xbbaf, 0xb1b1, /*0x10-0x17*/
+ 0x8544, 0xb3d7, 0xd8ce, 0x8545, 0x8546, 0xd4d1, 0x8547, 0x8548, /*0x18-0x1f*/
+ 0xbdb3, 0xbfef, 0x8549, 0xcfbb, 0x854a, 0x854b, 0xd8d0, 0x854c, /*0x20-0x27*/
+ 0x854d, 0x854e, 0xb7cb, 0x854f, 0x8550, 0x8551, 0xd8d1, 0x8552, /*0x28-0x2f*/
+ 0x8553, 0x8554, 0x8555, 0x8556, 0x8557, 0x8558, 0x8559, 0x855a, /*0x30-0x37*/
+ 0x855b, 0xc6a5, 0xc7f8, 0xd2bd, 0x855c, 0x855d, 0xd8d2, 0xc4e4, /*0x38-0x3f*/
+ 0x855e, 0xcaae, 0x855f, 0xc7a7, 0x8560, 0xd8a6, 0x8561, 0xc9fd, /*0x40-0x47*/
+ 0xcee7, 0xbbdc, 0xb0eb, 0x8562, 0x8563, 0x8564, 0xbbaa, 0xd0ad, /*0x48-0x4f*/
+ 0x8565, 0xb1b0, 0xd7e4, 0xd7bf, 0x8566, 0xb5a5, 0xc2f4, 0xc4cf, /*0x50-0x57*/
+ 0x8567, 0x8568, 0xb2a9, 0x8569, 0xb2b7, 0x856a, 0xb1e5, 0xdfb2, /*0x58-0x5f*/
+ 0xd5bc, 0xbfa8, 0xc2ac, 0xd8d5, 0xc2b1, 0x856b, 0xd8d4, 0xced4, /*0x60-0x67*/
+ 0x856c, 0xdae0, 0x856d, 0xcec0, 0x856e, 0x856f, 0xd8b4, 0xc3ae, /*0x68-0x6f*/
+ 0xd3a1, 0xcea3, 0x8570, 0xbcb4, 0xc8b4, 0xc2d1, 0x8571, 0xbeed, /*0x70-0x77*/
+ 0xd0b6, 0x8572, 0xdae1, 0x8573, 0x8574, 0x8575, 0x8576, 0xc7e4, /*0x78-0x7f*/
+ 0x8577, 0x8578, 0xb3a7, 0x8579, 0xb6f2, 0xccfc, 0xc0fa, 0x857a, /*0x80-0x87*/
+ 0x857b, 0xc0f7, 0x857c, 0xd1b9, 0xd1e1, 0xd8c7, 0x857d, 0x857e, /*0x88-0x8f*/
+ 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0xb2de, 0x8585, 0x8586, /*0x90-0x97*/
+ 0xc0e5, 0x8587, 0xbaf1, 0x8588, 0x8589, 0xd8c8, 0x858a, 0xd4ad, /*0x98-0x9f*/
+ 0x858b, 0x858c, 0xcfe1, 0xd8c9, 0x858d, 0xd8ca, 0xcfc3, 0x858e, /*0xa0-0xa7*/
+ 0xb3f8, 0xbec7, 0x858f, 0x8590, 0x8591, 0x8592, 0xd8cb, 0x8593, /*0xa8-0xaf*/
+ 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, 0xdbcc, 0x859a, /*0xb0-0xb7*/
+ 0x859b, 0x859c, 0x859d, 0xc8a5, 0x859e, 0x859f, 0x85a0, 0xcfd8, /*0xb8-0xbf*/
+ 0x85a1, 0xc8fe, 0xb2ce, 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, /*0xc0-0xc7*/
+ 0xd3d6, 0xb2e6, 0xbcb0, 0xd3d1, 0xcbab, 0xb7b4, 0x85a7, 0x85a8, /*0xc8-0xcf*/
+ 0x85a9, 0xb7a2, 0x85aa, 0x85ab, 0xcae5, 0x85ac, 0xc8a1, 0xcadc, /*0xd0-0xd7*/
+ 0xb1e4, 0xd0f0, 0x85ad, 0xc5d1, 0x85ae, 0x85af, 0x85b0, 0xdbc5, /*0xd8-0xdf*/
+ 0xb5fe, 0x85b1, 0x85b2, 0xbfda, 0xb9c5, 0xbee4, 0xc1ed, 0x85b3, /*0xe0-0xe7*/
+ 0xdfb6, 0xdfb5, 0xd6bb, 0xbdd0, 0xd5d9, 0xb0c8, 0xb6a3, 0xbfc9, /*0xe8-0xef*/
+ 0xcca8, 0xdfb3, 0xcab7, 0xd3d2, 0x85b4, 0xd8cf, 0xd2b6, 0xbac5, /*0xf0-0xf7*/
+ 0xcbbe, 0xccbe, 0x85b5, 0xdfb7, 0xb5f0, 0xdfb4, 0x85b6, 0x85b7, /*0xf8-0xff*/
+ /* 0x5400 */
+ 0x85b8, 0xd3f5, 0x85b9, 0xb3d4, 0xb8f7, 0x85ba, 0xdfba, 0x85bb, /*0x00-0x07*/
+ 0xbacf, 0xbcaa, 0xb5f5, 0x85bc, 0xcdac, 0xc3fb, 0xbaf3, 0xc0f4, /*0x08-0x0f*/
+ 0xcdc2, 0xcff2, 0xdfb8, 0xcfc5, 0x85bd, 0xc2c0, 0xdfb9, 0xc2f0, /*0x10-0x17*/
+ 0x85be, 0x85bf, 0x85c0, 0xbefd, 0x85c1, 0xc1df, 0xcdcc, 0xd2f7, /*0x18-0x1f*/
+ 0xb7cd, 0xdfc1, 0x85c2, 0xdfc4, 0x85c3, 0x85c4, 0xb7f1, 0xb0c9, /*0x20-0x27*/
+ 0xb6d6, 0xb7d4, 0x85c5, 0xbaac, 0xccfd, 0xbfd4, 0xcbb1, 0xc6f4, /*0x28-0x2f*/
+ 0x85c6, 0xd6a8, 0xdfc5, 0x85c7, 0xcee2, 0xb3b3, 0x85c8, 0x85c9, /*0x30-0x37*/
+ 0xcefc, 0xb4b5, 0x85ca, 0xcec7, 0xbaf0, 0x85cb, 0xcee1, 0x85cc, /*0x38-0x3f*/
+ 0xd1bd, 0x85cd, 0x85ce, 0xdfc0, 0x85cf, 0x85d0, 0xb4f4, 0x85d1, /*0x40-0x47*/
+ 0xb3ca, 0x85d2, 0xb8e6, 0xdfbb, 0x85d3, 0x85d4, 0x85d5, 0x85d6, /*0x48-0x4f*/
+ 0xc4c5, 0x85d7, 0xdfbc, 0xdfbd, 0xdfbe, 0xc5bb, 0xdfbf, 0xdfc2, /*0x50-0x57*/
+ 0xd4b1, 0xdfc3, 0x85d8, 0xc7ba, 0xced8, 0x85d9, 0x85da, 0x85db, /*0x58-0x5f*/
+ 0x85dc, 0x85dd, 0xc4d8, 0x85de, 0xdfca, 0x85df, 0xdfcf, 0x85e0, /*0x60-0x67*/
+ 0xd6dc, 0x85e1, 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7, /*0x68-0x6f*/
+ 0x85e8, 0xdfc9, 0xdfda, 0xceb6, 0x85e9, 0xbac7, 0xdfce, 0xdfc8, /*0x70-0x77*/
+ 0xc5de, 0x85ea, 0x85eb, 0xc9eb, 0xbaf4, 0xc3fc, 0x85ec, 0x85ed, /*0x78-0x7f*/
+ 0xbed7, 0x85ee, 0xdfc6, 0x85ef, 0xdfcd, 0x85f0, 0xc5d8, 0x85f1, /*0x80-0x87*/
+ 0x85f2, 0x85f3, 0x85f4, 0xd5a6, 0xbacd, 0x85f5, 0xbecc, 0xd3bd, /*0x88-0x8f*/
+ 0xb8c0, 0x85f6, 0xd6e4, 0x85f7, 0xdfc7, 0xb9be, 0xbfa7, 0x85f8, /*0x90-0x97*/
+ 0x85f9, 0xc1fc, 0xdfcb, 0xdfcc, 0x85fa, 0xdfd0, 0x85fb, 0x85fc, /*0x98-0x9f*/
+ 0x85fd, 0x85fe, 0x8640, 0xdfdb, 0xdfe5, 0x8641, 0xdfd7, 0xdfd6, /*0xa0-0xa7*/
+ 0xd7c9, 0xdfe3, 0xdfe4, 0xe5eb, 0xd2a7, 0xdfd2, 0x8642, 0xbfa9, /*0xa8-0xaf*/
+ 0x8643, 0xd4db, 0x8644, 0xbfc8, 0xdfd4, 0x8645, 0x8646, 0x8647, /*0xb0-0xb7*/
+ 0xcfcc, 0x8648, 0x8649, 0xdfdd, 0x864a, 0xd1ca, 0x864b, 0xdfde, /*0xb8-0xbf*/
+ 0xb0a7, 0xc6b7, 0xdfd3, 0x864c, 0xbae5, 0x864d, 0xb6df, 0xcddb, /*0xc0-0xc7*/
+ 0xb9fe, 0xd4d5, 0x864e, 0x864f, 0xdfdf, 0xcfec, 0xb0a5, 0xdfe7, /*0xc8-0xcf*/
+ 0xdfd1, 0xd1c6, 0xdfd5, 0xdfd8, 0xdfd9, 0xdfdc, 0x8650, 0xbba9, /*0xd0-0xd7*/
+ 0x8651, 0xdfe0, 0xdfe1, 0x8652, 0xdfe2, 0xdfe6, 0xdfe8, 0xd3b4, /*0xd8-0xdf*/
+ 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0xb8e7, 0xc5b6, 0xdfea, /*0xe0-0xe7*/
+ 0xc9da, 0xc1a8, 0xc4c4, 0x8658, 0x8659, 0xbfde, 0xcff8, 0x865a, /*0xe8-0xef*/
+ 0x865b, 0x865c, 0xd5dc, 0xdfee, 0x865d, 0x865e, 0x865f, 0x8660, /*0xf0-0xf7*/
+ 0x8661, 0x8662, 0xb2b8, 0x8663, 0xbadf, 0xdfec, 0x8664, 0xdbc1, /*0xf8-0xff*/
+ /* 0x5500 */
+ 0x8665, 0xd1e4, 0x8666, 0x8667, 0x8668, 0x8669, 0xcbf4, 0xb4bd, /*0x00-0x07*/
+ 0x866a, 0xb0a6, 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, 0xdff1, /*0x08-0x0f*/
+ 0xccc6, 0xdff2, 0x8670, 0x8671, 0xdfed, 0x8672, 0x8673, 0x8674, /*0x10-0x17*/
+ 0x8675, 0x8676, 0x8677, 0xdfe9, 0x8678, 0x8679, 0x867a, 0x867b, /*0x18-0x1f*/
+ 0xdfeb, 0x867c, 0xdfef, 0xdff0, 0xbbbd, 0x867d, 0x867e, 0xdff3, /*0x20-0x27*/
+ 0x8680, 0x8681, 0xdff4, 0x8682, 0xbba3, 0x8683, 0xcadb, 0xcea8, /*0x28-0x2f*/
+ 0xe0a7, 0xb3aa, 0x8684, 0xe0a6, 0x8685, 0x8686, 0x8687, 0xe0a1, /*0x30-0x37*/
+ 0x8688, 0x8689, 0x868a, 0x868b, 0xdffe, 0x868c, 0xcdd9, 0xdffc, /*0x38-0x3f*/
+ 0x868d, 0xdffa, 0x868e, 0xbfd0, 0xd7c4, 0x868f, 0xc9cc, 0x8690, /*0x40-0x47*/
+ 0x8691, 0xdff8, 0xb0a1, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696, /*0x48-0x4f*/
+ 0xdffd, 0x8697, 0x8698, 0x8699, 0x869a, 0xdffb, 0xe0a2, 0x869b, /*0x50-0x57*/
+ 0x869c, 0x869d, 0x869e, 0x869f, 0xe0a8, 0x86a0, 0x86a1, 0x86a2, /*0x58-0x5f*/
+ 0x86a3, 0xb7c8, 0x86a4, 0x86a5, 0xc6a1, 0xc9b6, 0xc0b2, 0xdff5, /*0x60-0x67*/
+ 0x86a6, 0x86a7, 0xc5be, 0x86a8, 0xd8c4, 0xdff9, 0xc4f6, 0x86a9, /*0x68-0x6f*/
+ 0x86aa, 0x86ab, 0x86ac, 0x86ad, 0x86ae, 0xe0a3, 0xe0a4, 0xe0a5, /*0x70-0x77*/
+ 0xd0a5, 0x86af, 0x86b0, 0xe0b4, 0xcce4, 0x86b1, 0xe0b1, 0x86b2, /*0x78-0x7f*/
+ 0xbfa6, 0xe0af, 0xceb9, 0xe0ab, 0xc9c6, 0x86b3, 0x86b4, 0xc0ae, /*0x80-0x87*/
+ 0xe0ae, 0xbaed, 0xbab0, 0xe0a9, 0x86b5, 0x86b6, 0x86b7, 0xdff6, /*0x88-0x8f*/
+ 0x86b8, 0xe0b3, 0x86b9, 0x86ba, 0xe0b8, 0x86bb, 0x86bc, 0x86bd, /*0x90-0x97*/
+ 0xb4ad, 0xe0b9, 0x86be, 0x86bf, 0xcfb2, 0xbac8, 0x86c0, 0xe0b0, /*0x98-0x9f*/
+ 0x86c1, 0x86c2, 0x86c3, 0x86c4, 0x86c5, 0x86c6, 0x86c7, 0xd0fa, /*0xa0-0xa7*/
+ 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc, 0x86cd, 0x86ce, 0x86cf, /*0xa8-0xaf*/
+ 0x86d0, 0xe0ac, 0x86d1, 0xd4fb, 0x86d2, 0xdff7, 0x86d3, 0xc5e7, /*0xb0-0xb7*/
+ 0x86d4, 0xe0ad, 0x86d5, 0xd3f7, 0x86d6, 0xe0b6, 0xe0b7, 0x86d7, /*0xb8-0xbf*/
+ 0x86d8, 0x86d9, 0x86da, 0x86db, 0xe0c4, 0xd0e1, 0x86dc, 0x86dd, /*0xc0-0xc7*/
+ 0x86de, 0xe0bc, 0x86df, 0x86e0, 0xe0c9, 0xe0ca, 0x86e1, 0x86e2, /*0xc8-0xcf*/
+ 0x86e3, 0xe0be, 0xe0aa, 0xc9a4, 0xe0c1, 0x86e4, 0xe0b2, 0x86e5, /*0xd0-0xd7*/
+ 0x86e6, 0x86e7, 0x86e8, 0x86e9, 0xcac8, 0xe0c3, 0x86ea, 0xe0b5, /*0xd8-0xdf*/
+ 0x86eb, 0xcecb, 0x86ec, 0xcbc3, 0xe0cd, 0xe0c6, 0xe0c2, 0x86ed, /*0xe0-0xe7*/
+ 0xe0cb, 0x86ee, 0xe0ba, 0xe0bf, 0xe0c0, 0x86ef, 0x86f0, 0xe0c5, /*0xe8-0xef*/
+ 0x86f1, 0x86f2, 0xe0c7, 0xe0c8, 0x86f3, 0xe0cc, 0x86f4, 0xe0bb, /*0xf0-0xf7*/
+ 0x86f5, 0x86f6, 0x86f7, 0x86f8, 0x86f9, 0xcbd4, 0xe0d5, 0x86fa, /*0xf8-0xff*/
+ /* 0x5600 */
+ 0xe0d6, 0xe0d2, 0x86fb, 0x86fc, 0x86fd, 0x86fe, 0x8740, 0x8741, /*0x00-0x07*/
+ 0xe0d0, 0xbcce, 0x8742, 0x8743, 0xe0d1, 0x8744, 0xb8c2, 0xd8c5, /*0x08-0x0f*/
+ 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, /*0x10-0x17*/
+ 0xd0ea, 0x874d, 0x874e, 0xc2ef, 0x874f, 0x8750, 0xe0cf, 0xe0bd, /*0x18-0x1f*/
+ 0x8751, 0x8752, 0x8753, 0xe0d4, 0xe0d3, 0x8754, 0x8755, 0xe0d7, /*0x20-0x27*/
+ 0x8756, 0x8757, 0x8758, 0x8759, 0xe0dc, 0xe0d8, 0x875a, 0x875b, /*0x28-0x2f*/
+ 0x875c, 0xd6f6, 0xb3b0, 0x875d, 0xd7ec, 0x875e, 0xcbbb, 0x875f, /*0x30-0x37*/
+ 0x8760, 0xe0da, 0x8761, 0xcefb, 0x8762, 0x8763, 0x8764, 0xbad9, /*0x38-0x3f*/
+ 0x8765, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, /*0x40-0x47*/
+ 0x876d, 0x876e, 0x876f, 0x8770, 0xe0e1, 0xe0dd, 0xd2ad, 0x8771, /*0x48-0x4f*/
+ 0x8772, 0x8773, 0x8774, 0x8775, 0xe0e2, 0x8776, 0x8777, 0xe0db, /*0x50-0x57*/
+ 0xe0d9, 0xe0df, 0x8778, 0x8779, 0xe0e0, 0x877a, 0x877b, 0x877c, /*0x58-0x5f*/
+ 0x877d, 0x877e, 0xe0de, 0x8780, 0xe0e4, 0x8781, 0x8782, 0x8783, /*0x60-0x67*/
+ 0xc6f7, 0xd8ac, 0xd4eb, 0xe0e6, 0xcac9, 0x8784, 0x8785, 0x8786, /*0x68-0x6f*/
+ 0x8787, 0xe0e5, 0x8788, 0x8789, 0x878a, 0x878b, 0xb8c1, 0x878c, /*0x70-0x77*/
+ 0x878d, 0x878e, 0x878f, 0xe0e7, 0xe0e8, 0x8790, 0x8791, 0x8792, /*0x78-0x7f*/
+ 0x8793, 0x8794, 0x8795, 0x8796, 0x8797, 0xe0e9, 0xe0e3, 0x8798, /*0x80-0x87*/
+ 0x8799, 0x879a, 0x879b, 0x879c, 0x879d, 0x879e, 0xbabf, 0xcce7, /*0x88-0x8f*/
+ 0x879f, 0x87a0, 0x87a1, 0xe0ea, 0x87a2, 0x87a3, 0x87a4, 0x87a5, /*0x90-0x97*/
+ 0x87a6, 0x87a7, 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, /*0x98-0x9f*/
+ 0x87ae, 0x87af, 0x87b0, 0xcff9, 0x87b1, 0x87b2, 0x87b3, 0x87b4, /*0xa0-0xa7*/
+ 0x87b5, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0xe0eb, /*0xa8-0xaf*/
+ 0x87bc, 0x87bd, 0x87be, 0x87bf, 0x87c0, 0x87c1, 0x87c2, 0xc8c2, /*0xb0-0xb7*/
+ 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0xbdc0, 0x87c7, 0x87c8, 0x87c9, /*0xb8-0xbf*/
+ 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d1, /*0xc0-0xc7*/
+ 0x87d2, 0x87d3, 0xc4d2, 0x87d4, 0x87d5, 0x87d6, 0x87d7, 0x87d8, /*0xc8-0xcf*/
+ 0x87d9, 0x87da, 0x87db, 0x87dc, 0xe0ec, 0x87dd, 0x87de, 0xe0ed, /*0xd0-0xd7*/
+ 0x87df, 0x87e0, 0xc7f4, 0xcbc4, 0x87e1, 0xe0ee, 0xbbd8, 0xd8b6, /*0xd8-0xdf*/
+ 0xd2f2, 0xe0ef, 0xcdc5, 0x87e2, 0xb6da, 0x87e3, 0x87e4, 0x87e5, /*0xe0-0xe7*/
+ 0x87e6, 0x87e7, 0x87e8, 0xe0f1, 0x87e9, 0xd4b0, 0x87ea, 0x87eb, /*0xe8-0xef*/
+ 0xc0a7, 0xb4d1, 0x87ec, 0x87ed, 0xcea7, 0xe0f0, 0x87ee, 0x87ef, /*0xf0-0xf7*/
+ 0x87f0, 0xe0f2, 0xb9cc, 0x87f1, 0x87f2, 0xb9fa, 0xcdbc, 0xe0f3, /*0xf8-0xff*/
+ /* 0x5700 */
+ 0x87f3, 0x87f4, 0x87f5, 0xc6d4, 0xe0f4, 0x87f6, 0xd4b2, 0x87f7, /*0x00-0x07*/
+ 0xc8a6, 0xe0f6, 0xe0f5, 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, /*0x08-0x0f*/
+ 0x87fd, 0x87fe, 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, /*0x10-0x17*/
+ 0x8846, 0x8847, 0x8848, 0x8849, 0xe0f7, 0x884a, 0x884b, 0xcdc1, /*0x18-0x1f*/
+ 0x884c, 0x884d, 0x884e, 0xcaa5, 0x884f, 0x8850, 0x8851, 0x8852, /*0x20-0x27*/
+ 0xd4da, 0xdbd7, 0xdbd9, 0x8853, 0xdbd8, 0xb9e7, 0xdbdc, 0xdbdd, /*0x28-0x2f*/
+ 0xb5d8, 0x8854, 0x8855, 0xdbda, 0x8856, 0x8857, 0x8858, 0x8859, /*0x30-0x37*/
+ 0x885a, 0xdbdb, 0xb3a1, 0xdbdf, 0x885b, 0x885c, 0xbbf8, 0x885d, /*0x38-0x3f*/
+ 0xd6b7, 0x885e, 0xdbe0, 0x885f, 0x8860, 0x8861, 0x8862, 0xbef9, /*0x40-0x47*/
+ 0x8863, 0x8864, 0xb7bb, 0x8865, 0xdbd0, 0xccae, 0xbfb2, 0xbbb5, /*0x48-0x4f*/
+ 0xd7f8, 0xbfd3, 0x8866, 0x8867, 0x8868, 0x8869, 0x886a, 0xbfe9, /*0x50-0x57*/
+ 0x886b, 0x886c, 0xbce1, 0xccb3, 0xdbde, 0xb0d3, 0xceeb, 0xb7d8, /*0x58-0x5f*/
+ 0xd7b9, 0xc6c2, 0x886d, 0x886e, 0xc0a4, 0x886f, 0xccb9, 0x8870, /*0x60-0x67*/
+ 0xdbe7, 0xdbe1, 0xc6ba, 0xdbe3, 0x8871, 0xdbe8, 0x8872, 0xc5f7, /*0x68-0x6f*/
+ 0x8873, 0x8874, 0x8875, 0xdbea, 0x8876, 0x8877, 0xdbe9, 0xbfc0, /*0x70-0x77*/
+ 0x8878, 0x8879, 0x887a, 0xdbe6, 0xdbe5, 0x887b, 0x887c, 0x887d, /*0x78-0x7f*/
+ 0x887e, 0x8880, 0xb4b9, 0xc0ac, 0xc2a2, 0xdbe2, 0xdbe4, 0x8881, /*0x80-0x87*/
+ 0x8882, 0x8883, 0x8884, 0xd0cd, 0xdbed, 0x8885, 0x8886, 0x8887, /*0x88-0x8f*/
+ 0x8888, 0x8889, 0xc0dd, 0xdbf2, 0x888a, 0x888b, 0x888c, 0x888d, /*0x90-0x97*/
+ 0x888e, 0x888f, 0x8890, 0xb6e2, 0x8891, 0x8892, 0x8893, 0x8894, /*0x98-0x9f*/
+ 0xdbf3, 0xdbd2, 0xb9b8, 0xd4ab, 0xdbec, 0x8895, 0xbfd1, 0xdbf0, /*0xa0-0xa7*/
+ 0x8896, 0xdbd1, 0x8897, 0xb5e6, 0x8898, 0xdbeb, 0xbfe5, 0x8899, /*0xa8-0xaf*/
+ 0x889a, 0x889b, 0xdbee, 0x889c, 0xdbf1, 0x889d, 0x889e, 0x889f, /*0xb0-0xb7*/
+ 0xdbf9, 0x88a0, 0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6, /*0xb8-0xbf*/
+ 0x88a7, 0x88a8, 0xb9a1, 0xb0a3, 0x88a9, 0x88aa, 0x88ab, 0x88ac, /*0xc0-0xc7*/
+ 0x88ad, 0x88ae, 0x88af, 0xc2f1, 0x88b0, 0x88b1, 0xb3c7, 0xdbef, /*0xc8-0xcf*/
+ 0x88b2, 0x88b3, 0xdbf8, 0x88b4, 0xc6d2, 0xdbf4, 0x88b5, 0x88b6, /*0xd0-0xd7*/
+ 0xdbf5, 0xdbf7, 0xdbf6, 0x88b7, 0x88b8, 0xdbfe, 0x88b9, 0xd3f2, /*0xd8-0xdf*/
+ 0xb2ba, 0x88ba, 0x88bb, 0x88bc, 0xdbfd, 0x88bd, 0x88be, 0x88bf, /*0xe0-0xe7*/
+ 0x88c0, 0x88c1, 0x88c2, 0x88c3, 0x88c4, 0xdca4, 0x88c5, 0xdbfb, /*0xe8-0xef*/
+ 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0xdbfa, 0x88ca, 0x88cb, 0x88cc, /*0xf0-0xf7*/
+ 0xdbfc, 0xc5e0, 0xbbf9, 0x88cd, 0x88ce, 0xdca3, 0x88cf, 0x88d0, /*0xf8-0xff*/
+ /* 0x5800 */
+ 0xdca5, 0x88d1, 0xccc3, 0x88d2, 0x88d3, 0x88d4, 0xb6d1, 0xddc0, /*0x00-0x07*/
+ 0x88d5, 0x88d6, 0x88d7, 0xdca1, 0x88d8, 0xdca2, 0x88d9, 0x88da, /*0x08-0x0f*/
+ 0x88db, 0xc7b5, 0x88dc, 0x88dd, 0x88de, 0xb6e9, 0x88df, 0x88e0, /*0x10-0x17*/
+ 0x88e1, 0xdca7, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0xdca6, 0x88e6, /*0x18-0x1f*/
+ 0xdca9, 0xb1a4, 0x88e7, 0x88e8, 0xb5cc, 0x88e9, 0x88ea, 0x88eb, /*0x20-0x27*/
+ 0x88ec, 0x88ed, 0xbfb0, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f2, /*0x28-0x2f*/
+ 0xd1df, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0xb6c2, 0x88f7, 0x88f8, /*0x30-0x37*/
+ 0x88f9, 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x8940, 0x8941, /*0x38-0x3f*/
+ 0x8942, 0x8943, 0x8944, 0x8945, 0xdca8, 0x8946, 0x8947, 0x8948, /*0x40-0x47*/
+ 0x8949, 0x894a, 0x894b, 0x894c, 0xcbfa, 0xebf3, 0x894d, 0x894e, /*0x48-0x4f*/
+ 0x894f, 0xcbdc, 0x8950, 0x8951, 0xcbfe, 0x8952, 0x8953, 0x8954, /*0x50-0x57*/
+ 0xccc1, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0xc8fb, 0x895a, /*0x58-0x5f*/
+ 0x895b, 0x895c, 0x895d, 0x895e, 0x895f, 0xdcaa, 0x8960, 0x8961, /*0x60-0x67*/
+ 0x8962, 0x8963, 0x8964, 0xccee, 0xdcab, 0x8965, 0x8966, 0x8967, /*0x68-0x6f*/
+ 0x8968, 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, /*0x70-0x77*/
+ 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0xdbd3, 0x8976, /*0x78-0x7f*/
+ 0xdcaf, 0xdcac, 0x8977, 0xbeb3, 0x8978, 0xcafb, 0x8979, 0x897a, /*0x80-0x87*/
+ 0x897b, 0xdcad, 0x897c, 0x897d, 0x897e, 0x8980, 0x8981, 0x8982, /*0x88-0x8f*/
+ 0x8983, 0x8984, 0xc9ca, 0xc4b9, 0x8985, 0x8986, 0x8987, 0x8988, /*0x90-0x97*/
+ 0x8989, 0xc7bd, 0xdcae, 0x898a, 0x898b, 0x898c, 0xd4f6, 0xd0e6, /*0x98-0x9f*/
+ 0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8992, 0x8993, 0x8994, /*0xa0-0xa7*/
+ 0xc4ab, 0xb6d5, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899a, /*0xa8-0xaf*/
+ 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1, 0x89a2, /*0xb0-0xb7*/
+ 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0xdbd4, 0x89a7, 0x89a8, 0x89a9, /*0xb8-0xbf*/
+ 0x89aa, 0xb1da, 0x89ab, 0x89ac, 0x89ad, 0xdbd5, 0x89ae, 0x89af, /*0xc0-0xc7*/
+ 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, /*0xc8-0xcf*/
+ 0x89b8, 0xdbd6, 0x89b9, 0x89ba, 0x89bb, 0xbabe, 0x89bc, 0x89bd, /*0xd0-0xd7*/
+ 0x89be, 0x89bf, 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5, /*0xd8-0xdf*/
+ 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0xc8c0, 0x89ca, 0x89cb, 0x89cc, /*0xe0-0xe7*/
+ 0x89cd, 0x89ce, 0x89cf, 0xcabf, 0xc8c9, 0x89d0, 0xd7b3, 0x89d1, /*0xe8-0xef*/
+ 0xc9f9, 0x89d2, 0x89d3, 0xbfc7, 0x89d4, 0x89d5, 0xbaf8, 0x89d6, /*0xf0-0xf7*/
+ 0x89d7, 0xd2bc, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd, /*0xf8-0xff*/
+ /* 0x5900 */
+ 0x89de, 0x89df, 0xe2ba, 0x89e0, 0xb4a6, 0x89e1, 0x89e2, 0xb1b8, /*0x00-0x07*/
+ 0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7, 0xb8b4, 0x89e8, 0xcfc4, /*0x08-0x0f*/
+ 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0xd9e7, 0xcfa6, 0xcde2, 0x89ed, /*0x10-0x17*/
+ 0x89ee, 0xd9ed, 0xb6e0, 0x89ef, 0xd2b9, 0x89f0, 0x89f1, 0xb9bb, /*0x18-0x1f*/
+ 0x89f2, 0x89f3, 0x89f4, 0x89f5, 0xe2b9, 0xe2b7, 0x89f6, 0xb4f3, /*0x20-0x27*/
+ 0x89f7, 0xccec, 0xccab, 0xb7f2, 0x89f8, 0xd8b2, 0xd1eb, 0xbabb, /*0x28-0x2f*/
+ 0x89f9, 0xcaa7, 0x89fa, 0x89fb, 0xcdb7, 0x89fc, 0x89fd, 0xd2c4, /*0x30-0x37*/
+ 0xbfe4, 0xbcd0, 0xb6e1, 0x89fe, 0xdec5, 0x8a40, 0x8a41, 0x8a42, /*0x38-0x3f*/
+ 0x8a43, 0xdec6, 0xdbbc, 0x8a44, 0xd1d9, 0x8a45, 0x8a46, 0xc6e6, /*0x40-0x47*/
+ 0xc4ce, 0xb7ee, 0x8a47, 0xb7dc, 0x8a48, 0x8a49, 0xbffc, 0xd7e0, /*0x48-0x4f*/
+ 0x8a4a, 0xc6f5, 0x8a4b, 0x8a4c, 0xb1bc, 0xdec8, 0xbdb1, 0xccd7, /*0x50-0x57*/
+ 0xdeca, 0x8a4d, 0xdec9, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a52, /*0x58-0x5f*/
+ 0xb5ec, 0x8a53, 0xc9dd, 0x8a54, 0x8a55, 0xb0c2, 0x8a56, 0x8a57, /*0x60-0x67*/
+ 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f, /*0x68-0x6f*/
+ 0x8a60, 0x8a61, 0x8a62, 0xc5ae, 0xc5ab, 0x8a63, 0xc4cc, 0x8a64, /*0x70-0x77*/
+ 0xbce9, 0xcbfd, 0x8a65, 0x8a66, 0x8a67, 0xbac3, 0x8a68, 0x8a69, /*0x78-0x7f*/
+ 0x8a6a, 0xe5f9, 0xc8e7, 0xe5fa, 0xcdfd, 0x8a6b, 0xd7b1, 0xb8be, /*0x80-0x87*/
+ 0xc2e8, 0x8a6c, 0xc8d1, 0x8a6d, 0x8a6e, 0xe5fb, 0x8a6f, 0x8a70, /*0x88-0x8f*/
+ 0x8a71, 0x8a72, 0xb6ca, 0xbccb, 0x8a73, 0x8a74, 0xd1fd, 0xe6a1, /*0x90-0x97*/
+ 0x8a75, 0xc3ee, 0x8a76, 0x8a77, 0x8a78, 0x8a79, 0xe6a4, 0x8a7a, /*0x98-0x9f*/
+ 0x8a7b, 0x8a7c, 0x8a7d, 0xe5fe, 0xe6a5, 0xcdd7, 0x8a7e, 0x8a80, /*0xa0-0xa7*/
+ 0xb7c1, 0xe5fc, 0xe5fd, 0xe6a3, 0x8a81, 0x8a82, 0xc4dd, 0xe6a8, /*0xa8-0xaf*/
+ 0x8a83, 0x8a84, 0xe6a7, 0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a89, /*0xb0-0xb7*/
+ 0x8a8a, 0xc3c3, 0x8a8b, 0xc6de, 0x8a8c, 0x8a8d, 0xe6aa, 0x8a8e, /*0xb8-0xbf*/
+ 0x8a8f, 0x8a90, 0x8a91, 0x8a92, 0x8a93, 0x8a94, 0xc4b7, 0x8a95, /*0xc0-0xc7*/
+ 0x8a96, 0x8a97, 0xe6a2, 0xcabc, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, /*0xc8-0xcf*/
+ 0xbde3, 0xb9c3, 0xe6a6, 0xd0d5, 0xceaf, 0x8a9c, 0x8a9d, 0xe6a9, /*0xd0-0xd7*/
+ 0xe6b0, 0x8a9e, 0xd2a6, 0x8a9f, 0xbdaa, 0xe6ad, 0x8aa0, 0x8aa1, /*0xd8-0xdf*/
+ 0x8aa2, 0x8aa3, 0x8aa4, 0xe6af, 0x8aa5, 0xc0d1, 0x8aa6, 0x8aa7, /*0xe0-0xe7*/
+ 0xd2cc, 0x8aa8, 0x8aa9, 0x8aaa, 0xbca7, 0x8aab, 0x8aac, 0x8aad, /*0xe8-0xef*/
+ 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, /*0xf0-0xf7*/
+ 0x8ab6, 0xe6b1, 0x8ab7, 0xd2f6, 0x8ab8, 0x8ab9, 0x8aba, 0xd7cb, /*0xf8-0xff*/
+ /* 0x5a00 */
+ 0x8abb, 0xcdfe, 0x8abc, 0xcdde, 0xc2a6, 0xe6ab, 0xe6ac, 0xbdbf, /*0x00-0x07*/
+ 0xe6ae, 0xe6b3, 0x8abd, 0x8abe, 0xe6b2, 0x8abf, 0x8ac0, 0x8ac1, /*0x08-0x0f*/
+ 0x8ac2, 0xe6b6, 0x8ac3, 0xe6b8, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, /*0x10-0x17*/
+ 0xc4ef, 0x8ac8, 0x8ac9, 0x8aca, 0xc4c8, 0x8acb, 0x8acc, 0xbeea, /*0x18-0x1f*/
+ 0xc9ef, 0x8acd, 0x8ace, 0xe6b7, 0x8acf, 0xb6f0, 0x8ad0, 0x8ad1, /*0x20-0x27*/
+ 0x8ad2, 0xc3e4, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, /*0x28-0x2f*/
+ 0x8ad9, 0xd3e9, 0xe6b4, 0x8ada, 0xe6b5, 0x8adb, 0xc8a2, 0x8adc, /*0x30-0x37*/
+ 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0xe6bd, 0x8ae1, 0x8ae2, 0x8ae3, /*0x38-0x3f*/
+ 0xe6b9, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0xc6c5, 0x8ae9, /*0x40-0x47*/
+ 0x8aea, 0xcdf1, 0xe6bb, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, /*0x48-0x4f*/
+ 0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0xe6bc, 0x8af5, 0x8af6, /*0x50-0x57*/
+ 0x8af7, 0x8af8, 0xbbe9, 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, /*0x58-0x5f*/
+ 0x8afe, 0x8b40, 0xe6be, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0xe6ba, /*0x60-0x67*/
+ 0x8b45, 0x8b46, 0xc0b7, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, /*0x68-0x6f*/
+ 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0xd3a4, 0xe6bf, 0xc9f4, 0xe6c3, /*0x70-0x77*/
+ 0x8b50, 0x8b51, 0xe6c4, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0xd0f6, /*0x78-0x7f*/
+ 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, /*0x80-0x87*/
+ 0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, /*0x88-0x8f*/
+ 0x8b66, 0x8b67, 0xc3bd, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6c, /*0x90-0x97*/
+ 0x8b6d, 0x8b6e, 0xc3c4, 0xe6c2, 0x8b6f, 0x8b70, 0x8b71, 0x8b72, /*0x98-0x9f*/
+ 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79, 0x8b7a, /*0xa0-0xa7*/
+ 0x8b7b, 0x8b7c, 0xe6c1, 0x8b7d, 0x8b7e, 0x8b80, 0x8b81, 0x8b82, /*0xa8-0xaf*/
+ 0x8b83, 0x8b84, 0xe6c7, 0xcfb1, 0x8b85, 0xebf4, 0x8b86, 0x8b87, /*0xb0-0xb7*/
+ 0xe6ca, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0xe6c5, 0x8b8d, /*0xb8-0xbf*/
+ 0x8b8e, 0xbcde, 0xc9a9, 0x8b8f, 0x8b90, 0x8b91, 0x8b92, 0x8b93, /*0xc0-0xc7*/
+ 0x8b94, 0xbcb5, 0x8b95, 0x8b96, 0xcfd3, 0x8b97, 0x8b98, 0x8b99, /*0xc8-0xcf*/
+ 0x8b9a, 0x8b9b, 0xe6c8, 0x8b9c, 0xe6c9, 0x8b9d, 0xe6ce, 0x8b9e, /*0xd0-0xd7*/
+ 0xe6d0, 0x8b9f, 0x8ba0, 0x8ba1, 0xe6d1, 0x8ba2, 0x8ba3, 0x8ba4, /*0xd8-0xdf*/
+ 0xe6cb, 0xb5d5, 0x8ba5, 0xe6cc, 0x8ba6, 0x8ba7, 0xe6cf, 0x8ba8, /*0xe0-0xe7*/
+ 0x8ba9, 0xc4db, 0x8baa, 0xe6c6, 0x8bab, 0x8bac, 0x8bad, 0x8bae, /*0xe8-0xef*/
+ 0x8baf, 0xe6cd, 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3, 0x8bb4, 0x8bb5, /*0xf0-0xf7*/
+ 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb, 0x8bbc, 0x8bbd, /*0xf8-0xff*/
+ /* 0x5b00 */
+ 0x8bbe, 0x8bbf, 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3, 0x8bc4, 0x8bc5, /*0x00-0x07*/
+ 0x8bc6, 0xe6d2, 0x8bc7, 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb, 0x8bcc, /*0x08-0x0f*/
+ 0x8bcd, 0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0x8bd2, 0xe6d4, 0xe6d3, /*0x10-0x17*/
+ 0x8bd3, 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, 0x8bd8, 0x8bd9, 0x8bda, /*0x18-0x1f*/
+ 0x8bdb, 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, 0x8be0, 0x8be1, 0x8be2, /*0x20-0x27*/
+ 0x8be3, 0x8be4, 0x8be5, 0x8be6, 0x8be7, 0x8be8, 0x8be9, 0x8bea, /*0x28-0x2f*/
+ 0x8beb, 0x8bec, 0xe6d5, 0x8bed, 0xd9f8, 0x8bee, 0x8bef, 0xe6d6, /*0x30-0x37*/
+ 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3, 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7, /*0x38-0x3f*/
+ 0xe6d7, 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb, 0x8bfc, 0x8bfd, 0x8bfe, /*0x40-0x47*/
+ 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c46, 0x8c47, /*0x48-0x4f*/
+ 0xd7d3, 0xe6dd, 0x8c48, 0xe6de, 0xbfd7, 0xd4d0, 0x8c49, 0xd7d6, /*0x50-0x57*/
+ 0xb4e6, 0xcbef, 0xe6da, 0xd8c3, 0xd7ce, 0xd0a2, 0x8c4a, 0xc3cf, /*0x58-0x5f*/
+ 0x8c4b, 0x8c4c, 0xe6df, 0xbcbe, 0xb9c2, 0xe6db, 0xd1a7, 0x8c4d, /*0x60-0x67*/
+ 0x8c4e, 0xbaa2, 0xc2cf, 0x8c4f, 0xd8ab, 0x8c50, 0x8c51, 0x8c52, /*0x68-0x6f*/
+ 0xcaeb, 0xe5ee, 0x8c53, 0xe6dc, 0x8c54, 0xb7f5, 0x8c55, 0x8c56, /*0x70-0x77*/
+ 0x8c57, 0x8c58, 0xc8e6, 0x8c59, 0x8c5a, 0xc4f5, 0x8c5b, 0x8c5c, /*0x78-0x7f*/
+ 0xe5b2, 0xc4fe, 0x8c5d, 0xcbfc, 0xe5b3, 0xd5ac, 0x8c5e, 0xd3ee, /*0x80-0x87*/
+ 0xcad8, 0xb0b2, 0x8c5f, 0xcbce, 0xcdea, 0x8c60, 0x8c61, 0xbaea, /*0x88-0x8f*/
+ 0x8c62, 0x8c63, 0x8c64, 0xe5b5, 0x8c65, 0xe5b4, 0x8c66, 0xd7da, /*0x90-0x97*/
+ 0xb9d9, 0xd6e6, 0xb6a8, 0xcdf0, 0xd2cb, 0xb1a6, 0xcab5, 0x8c67, /*0x98-0x9f*/
+ 0xb3e8, 0xc9f3, 0xbfcd, 0xd0fb, 0xcad2, 0xe5b6, 0xbbc2, 0x8c68, /*0xa0-0xa7*/
+ 0x8c69, 0x8c6a, 0xcfdc, 0xb9ac, 0x8c6b, 0x8c6c, 0x8c6d, 0x8c6e, /*0xa8-0xaf*/
+ 0xd4d7, 0x8c6f, 0x8c70, 0xbaa6, 0xd1e7, 0xcffc, 0xbcd2, 0x8c71, /*0xb0-0xb7*/
+ 0xe5b7, 0xc8dd, 0x8c72, 0x8c73, 0x8c74, 0xbfed, 0xb1f6, 0xcbde, /*0xb8-0xbf*/
+ 0x8c75, 0x8c76, 0xbcc5, 0x8c77, 0xbcc4, 0xd2fa, 0xc3dc, 0xbfdc, /*0xc0-0xc7*/
+ 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0xb8bb, 0x8c7c, 0x8c7d, 0x8c7e, /*0xc8-0xcf*/
+ 0xc3c2, 0x8c80, 0xbaae, 0xd4a2, 0x8c81, 0x8c82, 0x8c83, 0x8c84, /*0xd0-0xd7*/
+ 0x8c85, 0x8c86, 0x8c87, 0x8c88, 0x8c89, 0xc7de, 0xc4af, 0xb2ec, /*0xd8-0xdf*/
+ 0x8c8a, 0xb9d1, 0x8c8b, 0x8c8c, 0xe5bb, 0xc1c8, 0x8c8d, 0x8c8e, /*0xe0-0xe7*/
+ 0xd5af, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0xe5bc, 0x8c94, /*0xe8-0xef*/
+ 0xe5be, 0x8c95, 0x8c96, 0x8c97, 0x8c98, 0x8c99, 0x8c9a, 0x8c9b, /*0xf0-0xf7*/
+ 0xb4e7, 0xb6d4, 0xcbc2, 0xd1b0, 0xb5bc, 0x8c9c, 0x8c9d, 0xcad9, /*0xf8-0xff*/
+ /* 0x5c00 */
+ 0x8c9e, 0xb7e2, 0x8c9f, 0x8ca0, 0xc9e4, 0x8ca1, 0xbdab, 0x8ca2, /*0x00-0x07*/
+ 0x8ca3, 0xcebe, 0xd7f0, 0x8ca4, 0x8ca5, 0x8ca6, 0x8ca7, 0xd0a1, /*0x08-0x0f*/
+ 0x8ca8, 0xc9d9, 0x8ca9, 0x8caa, 0xb6fb, 0xe6d8, 0xbce2, 0x8cab, /*0x10-0x17*/
+ 0xb3be, 0x8cac, 0xc9d0, 0x8cad, 0xe6d9, 0xb3a2, 0x8cae, 0x8caf, /*0x18-0x1f*/
+ 0x8cb0, 0x8cb1, 0xdecc, 0x8cb2, 0xd3c8, 0xdecd, 0x8cb3, 0xd2a2, /*0x20-0x27*/
+ 0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7, 0xdece, 0x8cb8, 0x8cb9, 0x8cba, /*0x28-0x2f*/
+ 0x8cbb, 0xbecd, 0x8cbc, 0x8cbd, 0xdecf, 0x8cbe, 0x8cbf, 0x8cc0, /*0x30-0x37*/
+ 0xcaac, 0xd2fc, 0xb3df, 0xe5ea, 0xc4e1, 0xbea1, 0xceb2, 0xc4f2, /*0x38-0x3f*/
+ 0xbed6, 0xc6a8, 0xb2e3, 0x8cc1, 0x8cc2, 0xbed3, 0x8cc3, 0x8cc4, /*0x40-0x47*/
+ 0xc7fc, 0xcceb, 0xbdec, 0xcedd, 0x8cc5, 0x8cc6, 0xcaba, 0xc6c1, /*0x48-0x4f*/
+ 0xe5ec, 0xd0bc, 0x8cc7, 0x8cc8, 0x8cc9, 0xd5b9, 0x8cca, 0x8ccb, /*0x50-0x57*/
+ 0x8ccc, 0xe5ed, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0, 0xcaf4, 0x8cd1, /*0x58-0x5f*/
+ 0xcdc0, 0xc2c5, 0x8cd2, 0xe5ef, 0x8cd3, 0xc2c4, 0xe5f0, 0x8cd4, /*0x60-0x67*/
+ 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0xe5f8, 0xcdcd, /*0x68-0x6f*/
+ 0x8cdb, 0xc9bd, 0x8cdc, 0x8cdd, 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, /*0x70-0x77*/
+ 0x8ce2, 0xd2d9, 0xe1a8, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0xd3ec, /*0x78-0x7f*/
+ 0x8ce7, 0xcbea, 0xc6f1, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, /*0x80-0x87*/
+ 0xe1ac, 0x8ced, 0x8cee, 0x8cef, 0xe1a7, 0xe1a9, 0x8cf0, 0x8cf1, /*0x88-0x8f*/
+ 0xe1aa, 0xe1af, 0x8cf2, 0x8cf3, 0xb2ed, 0x8cf4, 0xe1ab, 0xb8da, /*0x90-0x97*/
+ 0xe1ad, 0xe1ae, 0xe1b0, 0xb5ba, 0xe1b1, 0x8cf5, 0x8cf6, 0x8cf7, /*0x98-0x9f*/
+ 0x8cf8, 0x8cf9, 0xe1b3, 0xe1b8, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, /*0xa0-0xa7*/
+ 0x8cfe, 0xd1d2, 0x8d40, 0xe1b6, 0xe1b5, 0xc1eb, 0x8d41, 0x8d42, /*0xa8-0xaf*/
+ 0x8d43, 0xe1b7, 0x8d44, 0xd4c0, 0x8d45, 0xe1b2, 0x8d46, 0xe1ba, /*0xb0-0xb7*/
+ 0xb0b6, 0x8d47, 0x8d48, 0x8d49, 0x8d4a, 0xe1b4, 0x8d4b, 0xbff9, /*0xb8-0xbf*/
+ 0x8d4c, 0xe1b9, 0x8d4d, 0x8d4e, 0xe1bb, 0x8d4f, 0x8d50, 0x8d51, /*0xc0-0xc7*/
+ 0x8d52, 0x8d53, 0x8d54, 0xe1be, 0x8d55, 0x8d56, 0x8d57, 0x8d58, /*0xc8-0xcf*/
+ 0x8d59, 0x8d5a, 0xe1bc, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f, /*0xd0-0xd7*/
+ 0x8d60, 0xd6c5, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, /*0xd8-0xdf*/
+ 0x8d67, 0xcfbf, 0x8d68, 0x8d69, 0xe1bd, 0xe1bf, 0xc2cd, 0x8d6a, /*0xe0-0xe7*/
+ 0xb6eb, 0x8d6b, 0xd3f8, 0x8d6c, 0x8d6d, 0xc7cd, 0x8d6e, 0x8d6f, /*0xe8-0xef*/
+ 0xb7e5, 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, /*0xf0-0xf7*/
+ 0x8d77, 0x8d78, 0x8d79, 0xbefe, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, /*0xf8-0xff*/
+ /* 0x5d00 */
+ 0x8d7e, 0x8d80, 0xe1c0, 0xe1c1, 0x8d81, 0x8d82, 0xe1c7, 0xb3e7, /*0x00-0x07*/
+ 0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, 0x8d88, 0xc6e9, 0x8d89, /*0x08-0x0f*/
+ 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0xb4de, 0x8d8e, 0xd1c2, 0x8d8f, /*0x10-0x17*/
+ 0x8d90, 0x8d91, 0x8d92, 0xe1c8, 0x8d93, 0x8d94, 0xe1c6, 0x8d95, /*0x18-0x1f*/
+ 0x8d96, 0x8d97, 0x8d98, 0x8d99, 0xe1c5, 0x8d9a, 0xe1c3, 0xe1c2, /*0x20-0x27*/
+ 0x8d9b, 0xb1c0, 0x8d9c, 0x8d9d, 0x8d9e, 0xd5b8, 0xe1c4, 0x8d9f, /*0x28-0x2f*/
+ 0x8da0, 0x8da1, 0x8da2, 0x8da3, 0xe1cb, 0x8da4, 0x8da5, 0x8da6, /*0x30-0x37*/
+ 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0xe1cc, 0xe1ca, 0x8dac, /*0x38-0x3f*/
+ 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1, 0x8db2, 0x8db3, 0xeffa, /*0x40-0x47*/
+ 0x8db4, 0x8db5, 0xe1d3, 0xe1d2, 0xc7b6, 0x8db6, 0x8db7, 0x8db8, /*0x48-0x4f*/
+ 0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, 0x8dc0, /*0x50-0x57*/
+ 0xe1c9, 0x8dc1, 0x8dc2, 0xe1ce, 0x8dc3, 0xe1d0, 0x8dc4, 0x8dc5, /*0x58-0x5f*/
+ 0x8dc6, 0x8dc7, 0x8dc8, 0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, /*0x60-0x67*/
+ 0x8dce, 0xe1d4, 0x8dcf, 0xe1d1, 0xe1cd, 0x8dd0, 0x8dd1, 0xe1cf, /*0x68-0x6f*/
+ 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0xe1d5, 0x8dd6, 0x8dd7, 0x8dd8, /*0x70-0x77*/
+ 0x8dd9, 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, 0x8de0, /*0x78-0x7f*/
+ 0x8de1, 0x8de2, 0xe1d6, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7, /*0x80-0x87*/
+ 0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def, /*0x88-0x8f*/
+ 0x8df0, 0x8df1, 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7, /*0x90-0x97*/
+ 0x8df8, 0xe1d7, 0x8df9, 0x8dfa, 0x8dfb, 0xe1d8, 0x8dfc, 0x8dfd, /*0x98-0x9f*/
+ 0x8dfe, 0x8e40, 0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, /*0xa0-0xa7*/
+ 0x8e47, 0x8e48, 0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, /*0xa8-0xaf*/
+ 0x8e4f, 0x8e50, 0x8e51, 0x8e52, 0x8e53, 0x8e54, 0x8e55, 0xe1da, /*0xb0-0xb7*/
+ 0x8e56, 0x8e57, 0x8e58, 0x8e59, 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, /*0xb8-0xbf*/
+ 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0xe1db, 0x8e63, 0x8e64, /*0xc0-0xc7*/
+ 0x8e65, 0x8e66, 0x8e67, 0x8e68, 0x8e69, 0xcea1, 0x8e6a, 0x8e6b, /*0xc8-0xcf*/
+ 0x8e6c, 0x8e6d, 0x8e6e, 0x8e6f, 0x8e70, 0x8e71, 0x8e72, 0x8e73, /*0xd0-0xd7*/
+ 0x8e74, 0x8e75, 0x8e76, 0xe7dd, 0x8e77, 0xb4a8, 0xd6dd, 0x8e78, /*0xd8-0xdf*/
+ 0x8e79, 0xd1b2, 0xb3b2, 0x8e7a, 0x8e7b, 0xb9a4, 0xd7f3, 0xc7c9, /*0xe0-0xe7*/
+ 0xbede, 0xb9ae, 0x8e7c, 0xced7, 0x8e7d, 0x8e7e, 0xb2ee, 0xdbcf, /*0xe8-0xef*/
+ 0x8e80, 0xbcba, 0xd2d1, 0xcbc8, 0xb0cd, 0x8e81, 0x8e82, 0xcfef, /*0xf0-0xf7*/
+ 0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, 0xd9e3, 0xbded, 0x8e88, /*0xf8-0xff*/
+ /* 0x5e00 */
+ 0x8e89, 0xb1d2, 0xcad0, 0xb2bc, 0x8e8a, 0xcba7, 0xb7ab, 0x8e8b, /*0x00-0x07*/
+ 0xcaa6, 0x8e8c, 0x8e8d, 0x8e8e, 0xcfa3, 0x8e8f, 0x8e90, 0xe0f8, /*0x08-0x0f*/
+ 0xd5ca, 0xe0fb, 0x8e91, 0x8e92, 0xe0fa, 0xc5c1, 0xccfb, 0x8e93, /*0x10-0x17*/
+ 0xc1b1, 0xe0f9, 0xd6e3, 0xb2af, 0xd6c4, 0xb5db, 0x8e94, 0x8e95, /*0x18-0x1f*/
+ 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0xb4f8, 0xd6a1, /*0x20-0x27*/
+ 0x8e9c, 0x8e9d, 0x8e9e, 0x8e9f, 0x8ea0, 0xcfaf, 0xb0ef, 0x8ea1, /*0x28-0x2f*/
+ 0x8ea2, 0xe0fc, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7, 0xe1a1, /*0x30-0x37*/
+ 0xb3a3, 0x8ea8, 0x8ea9, 0xe0fd, 0xe0fe, 0xc3b1, 0x8eaa, 0x8eab, /*0x38-0x3f*/
+ 0x8eac, 0x8ead, 0xc3dd, 0x8eae, 0xe1a2, 0xb7f9, 0x8eaf, 0x8eb0, /*0x40-0x47*/
+ 0x8eb1, 0x8eb2, 0x8eb3, 0x8eb4, 0xbbcf, 0x8eb5, 0x8eb6, 0x8eb7, /*0x48-0x4f*/
+ 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0xe1a3, 0xc4bb, 0x8ebc, 0x8ebd, /*0x50-0x57*/
+ 0x8ebe, 0x8ebf, 0x8ec0, 0xe1a4, 0x8ec1, 0x8ec2, 0xe1a5, 0x8ec3, /*0x58-0x5f*/
+ 0x8ec4, 0xe1a6, 0xb4b1, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, /*0x60-0x67*/
+ 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf, 0x8ed0, 0x8ed1, /*0x68-0x6f*/
+ 0x8ed2, 0x8ed3, 0xb8c9, 0xc6bd, 0xc4ea, 0x8ed4, 0xb2a2, 0x8ed5, /*0x70-0x77*/
+ 0xd0d2, 0x8ed6, 0xe7db, 0xbbc3, 0xd3d7, 0xd3c4, 0x8ed7, 0xb9e3, /*0x78-0x7f*/
+ 0xe2cf, 0x8ed8, 0x8ed9, 0x8eda, 0xd7af, 0x8edb, 0xc7ec, 0xb1d3, /*0x80-0x87*/
+ 0x8edc, 0x8edd, 0xb4b2, 0xe2d1, 0x8ede, 0x8edf, 0x8ee0, 0xd0f2, /*0x88-0x8f*/
+ 0xc2ae, 0xe2d0, 0x8ee1, 0xbfe2, 0xd3a6, 0xb5d7, 0xe2d2, 0xb5ea, /*0x90-0x97*/
+ 0x8ee2, 0xc3ed, 0xb8fd, 0x8ee3, 0xb8ae, 0x8ee4, 0xc5d3, 0xb7cf, /*0x98-0x9f*/
+ 0xe2d4, 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0xe2d3, 0xb6c8, 0xd7f9, /*0xa0-0xa7*/
+ 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, 0x8eed, 0xcda5, 0x8eee, 0x8eef, /*0xa8-0xaf*/
+ 0x8ef0, 0x8ef1, 0x8ef2, 0xe2d8, 0x8ef3, 0xe2d6, 0xcafc, 0xbfb5, /*0xb0-0xb7*/
+ 0xd3b9, 0xe2d5, 0x8ef4, 0x8ef5, 0x8ef6, 0x8ef7, 0xe2d7, 0x8ef8, /*0xb8-0xbf*/
+ 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8f40, 0x8f41, /*0xc0-0xc7*/
+ 0x8f42, 0xc1ae, 0xc0c8, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47, /*0xc8-0xcf*/
+ 0x8f48, 0xe2db, 0xe2da, 0xc0aa, 0x8f49, 0x8f4a, 0xc1ce, 0x8f4b, /*0xd0-0xd7*/
+ 0x8f4c, 0x8f4d, 0x8f4e, 0xe2dc, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, /*0xd8-0xdf*/
+ 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, /*0xe0-0xe7*/
+ 0xe2dd, 0x8f5b, 0xe2de, 0x8f5c, 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, /*0xe8-0xef*/
+ 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0xdbc8, 0x8f65, 0xd1d3, 0xcda2, /*0xf0-0xf7*/
+ 0x8f66, 0x8f67, 0xbda8, 0x8f68, 0x8f69, 0x8f6a, 0xdec3, 0xd8a5, /*0xf8-0xff*/
+ /* 0x5f00 */
+ 0xbfaa, 0xdbcd, 0xd2ec, 0xc6fa, 0xc5aa, 0x8f6b, 0x8f6c, 0x8f6d, /*0x00-0x07*/
+ 0xdec4, 0x8f6e, 0xb1d7, 0xdfae, 0x8f6f, 0x8f70, 0x8f71, 0xcabd, /*0x08-0x0f*/
+ 0x8f72, 0xdfb1, 0x8f73, 0xb9ad, 0x8f74, 0xd2fd, 0x8f75, 0xb8a5, /*0x10-0x17*/
+ 0xbaeb, 0x8f76, 0x8f77, 0xb3da, 0x8f78, 0x8f79, 0x8f7a, 0xb5dc, /*0x18-0x1f*/
+ 0xd5c5, 0x8f7b, 0x8f7c, 0x8f7d, 0x8f7e, 0xc3d6, 0xcfd2, 0xbba1, /*0x20-0x27*/
+ 0x8f80, 0xe5f3, 0xe5f2, 0x8f81, 0x8f82, 0xe5f4, 0x8f83, 0xcde4, /*0x28-0x2f*/
+ 0x8f84, 0xc8f5, 0x8f85, 0x8f86, 0x8f87, 0x8f88, 0x8f89, 0x8f8a, /*0x30-0x37*/
+ 0x8f8b, 0xb5af, 0xc7bf, 0x8f8c, 0xe5f6, 0x8f8d, 0x8f8e, 0x8f8f, /*0x38-0x3f*/
+ 0xecb0, 0x8f90, 0x8f91, 0x8f92, 0x8f93, 0x8f94, 0x8f95, 0x8f96, /*0x40-0x47*/
+ 0x8f97, 0x8f98, 0x8f99, 0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8f9e, /*0x48-0x4f*/
+ 0xe5e6, 0x8f9f, 0xb9e9, 0xb5b1, 0x8fa0, 0xc2bc, 0xe5e8, 0xe5e7, /*0x50-0x57*/
+ 0xe5e9, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0xd2cd, 0x8fa5, 0x8fa6, /*0x58-0x5f*/
+ 0x8fa7, 0xe1ea, 0xd0ce, 0x8fa8, 0xcdae, 0x8fa9, 0xd1e5, 0x8faa, /*0x60-0x67*/
+ 0x8fab, 0xb2ca, 0xb1eb, 0x8fac, 0xb1f2, 0xc5ed, 0x8fad, 0x8fae, /*0x68-0x6f*/
+ 0xd5c3, 0xd3b0, 0x8faf, 0xe1dc, 0x8fb0, 0x8fb1, 0x8fb2, 0xe1dd, /*0x70-0x77*/
+ 0x8fb3, 0xd2db, 0x8fb4, 0xb3b9, 0xb1cb, 0x8fb5, 0x8fb6, 0x8fb7, /*0x78-0x7f*/
+ 0xcdf9, 0xd5f7, 0xe1de, 0x8fb8, 0xbeb6, 0xb4fd, 0x8fb9, 0xe1df, /*0x80-0x87*/
+ 0xbadc, 0xe1e0, 0xbbb2, 0xc2c9, 0xe1e1, 0x8fba, 0x8fbb, 0x8fbc, /*0x88-0x8f*/
+ 0xd0ec, 0x8fbd, 0xcdbd, 0x8fbe, 0x8fbf, 0xe1e2, 0x8fc0, 0xb5c3, /*0x90-0x97*/
+ 0xc5c7, 0xe1e3, 0x8fc1, 0x8fc2, 0xe1e4, 0x8fc3, 0x8fc4, 0x8fc5, /*0x98-0x9f*/
+ 0x8fc6, 0xd3f9, 0x8fc7, 0x8fc8, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, /*0xa0-0xa7*/
+ 0xe1e5, 0x8fcd, 0xd1ad, 0x8fce, 0x8fcf, 0xe1e6, 0xcea2, 0x8fd0, /*0xa8-0xaf*/
+ 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0xe1e7, 0x8fd6, 0xb5c2, /*0xb0-0xb7*/
+ 0x8fd7, 0x8fd8, 0x8fd9, 0x8fda, 0xe1e8, 0xbbd5, 0x8fdb, 0x8fdc, /*0xb8-0xbf*/
+ 0x8fdd, 0x8fde, 0x8fdf, 0xd0c4, 0xe2e0, 0xb1d8, 0xd2e4, 0x8fe0, /*0xc0-0xc7*/
+ 0x8fe1, 0xe2e1, 0x8fe2, 0x8fe3, 0xbcc9, 0xc8cc, 0x8fe4, 0xe2e3, /*0xc8-0xcf*/
+ 0xecfe, 0xecfd, 0xdfaf, 0x8fe5, 0x8fe6, 0x8fe7, 0xe2e2, 0xd6be, /*0xd0-0xd7*/
+ 0xcdfc, 0xc3a6, 0x8fe8, 0x8fe9, 0x8fea, 0xe3c3, 0x8feb, 0x8fec, /*0xd8-0xdf*/
+ 0xd6d2, 0xe2e7, 0x8fed, 0x8fee, 0xe2e8, 0x8fef, 0x8ff0, 0xd3c7, /*0xe0-0xe7*/
+ 0x8ff1, 0x8ff2, 0xe2ec, 0xbfec, 0x8ff3, 0xe2ed, 0xe2e5, 0x8ff4, /*0xe8-0xef*/
+ 0x8ff5, 0xb3c0, 0x8ff6, 0x8ff7, 0x8ff8, 0xc4ee, 0x8ff9, 0x8ffa, /*0xf0-0xf7*/
+ 0xe2ee, 0x8ffb, 0x8ffc, 0xd0c3, 0x8ffd, 0xbaf6, 0xe2e9, 0xb7de, /*0xf8-0xff*/
+ /* 0x6000 */
+ 0xbbb3, 0xccac, 0xcbcb, 0xe2e4, 0xe2e6, 0xe2ea, 0xe2eb, 0x8ffe, /*0x00-0x07*/
+ 0x9040, 0x9041, 0xe2f7, 0x9042, 0x9043, 0xe2f4, 0xd4f5, 0xe2f3, /*0x08-0x0f*/
+ 0x9044, 0x9045, 0xc5ad, 0x9046, 0xd5fa, 0xc5c2, 0xb2c0, 0x9047, /*0x10-0x17*/
+ 0x9048, 0xe2ef, 0x9049, 0xe2f2, 0xc1af, 0xcbbc, 0x904a, 0x904b, /*0x18-0x1f*/
+ 0xb5a1, 0xe2f9, 0x904c, 0x904d, 0x904e, 0xbcb1, 0xe2f1, 0xd0d4, /*0x20-0x27*/
+ 0xd4b9, 0xe2f5, 0xb9d6, 0xe2f6, 0x904f, 0x9050, 0x9051, 0xc7d3, /*0x28-0x2f*/
+ 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0xe2f0, 0x9057, 0x9058, /*0x30-0x37*/
+ 0x9059, 0x905a, 0x905b, 0xd7dc, 0xeda1, 0x905c, 0x905d, 0xe2f8, /*0x38-0x3f*/
+ 0x905e, 0xeda5, 0xe2fe, 0xcad1, 0x905f, 0x9060, 0x9061, 0x9062, /*0x40-0x47*/
+ 0x9063, 0x9064, 0x9065, 0xc1b5, 0x9066, 0xbbd0, 0x9067, 0x9068, /*0x48-0x4f*/
+ 0xbfd6, 0x9069, 0xbae3, 0x906a, 0x906b, 0xcba1, 0x906c, 0x906d, /*0x50-0x57*/
+ 0x906e, 0xeda6, 0xeda3, 0x906f, 0x9070, 0xeda2, 0x9071, 0x9072, /*0x58-0x5f*/
+ 0x9073, 0x9074, 0xbbd6, 0xeda7, 0xd0f4, 0x9075, 0x9076, 0xeda4, /*0x60-0x67*/
+ 0xbade, 0xb6f7, 0xe3a1, 0xb6b2, 0xccf1, 0xb9a7, 0x9077, 0xcfa2, /*0x68-0x6f*/
+ 0xc7a1, 0x9078, 0x9079, 0xbfd2, 0x907a, 0x907b, 0xb6f1, 0x907c, /*0x70-0x77*/
+ 0xe2fa, 0xe2fb, 0xe2fd, 0xe2fc, 0xc4d5, 0xe3a2, 0x907d, 0xd3c1, /*0x78-0x7f*/
+ 0x907e, 0x9080, 0x9081, 0xe3a7, 0xc7c4, 0x9082, 0x9083, 0x9084, /*0x80-0x87*/
+ 0x9085, 0xcfa4, 0x9086, 0x9087, 0xe3a9, 0xbab7, 0x9088, 0x9089, /*0x88-0x8f*/
+ 0x908a, 0x908b, 0xe3a8, 0x908c, 0xbbda, 0x908d, 0xe3a3, 0x908e, /*0x90-0x97*/
+ 0x908f, 0x9090, 0xe3a4, 0xe3aa, 0x9091, 0xe3a6, 0x9092, 0xcef2, /*0x98-0x9f*/
+ 0xd3c6, 0x9093, 0x9094, 0xbbbc, 0x9095, 0x9096, 0xd4c3, 0x9097, /*0xa0-0xa7*/
+ 0xc4fa, 0x9098, 0x9099, 0xeda8, 0xd0fc, 0xe3a5, 0x909a, 0xc3f5, /*0xa8-0xaf*/
+ 0x909b, 0xe3ad, 0xb1af, 0x909c, 0xe3b2, 0x909d, 0x909e, 0x909f, /*0xb0-0xb7*/
+ 0xbcc2, 0x90a0, 0x90a1, 0xe3ac, 0xb5bf, 0x90a2, 0x90a3, 0x90a4, /*0xb8-0xbf*/
+ 0x90a5, 0x90a6, 0x90a7, 0x90a8, 0x90a9, 0xc7e9, 0xe3b0, 0x90aa, /*0xc0-0xc7*/
+ 0x90ab, 0x90ac, 0xbeaa, 0xcdef, 0x90ad, 0x90ae, 0x90af, 0x90b0, /*0xc8-0xcf*/
+ 0x90b1, 0xbbf3, 0x90b2, 0x90b3, 0x90b4, 0xcce8, 0x90b5, 0x90b6, /*0xd0-0xd7*/
+ 0xe3af, 0x90b7, 0xe3b1, 0x90b8, 0xcfa7, 0xe3ae, 0x90b9, 0xcea9, /*0xd8-0xdf*/
+ 0xbbdd, 0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90be, 0xb5eb, 0xbee5, /*0xe0-0xe7*/
+ 0xb2d2, 0xb3cd, 0x90bf, 0xb1b9, 0xe3ab, 0xb2d1, 0xb5ac, 0xb9df, /*0xe8-0xef*/
+ 0xb6e8, 0x90c0, 0x90c1, 0xcfeb, 0xe3b7, 0x90c2, 0xbbcc, 0x90c3, /*0xf0-0xf7*/
+ 0x90c4, 0xc8c7, 0xd0ca, 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, /*0xf8-0xff*/
+ /* 0x6100 */
+ 0xe3b8, 0xb3ee, 0x90ca, 0x90cb, 0x90cc, 0x90cd, 0xeda9, 0x90ce, /*0x00-0x07*/
+ 0xd3fa, 0xd3e4, 0x90cf, 0x90d0, 0x90d1, 0xedaa, 0xe3b9, 0xd2e2, /*0x08-0x0f*/
+ 0x90d2, 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0xe3b5, 0x90d7, 0x90d8, /*0x10-0x17*/
+ 0x90d9, 0x90da, 0xd3de, 0x90db, 0x90dc, 0x90dd, 0x90de, 0xb8d0, /*0x18-0x1f*/
+ 0xe3b3, 0x90df, 0x90e0, 0xe3b6, 0xb7df, 0x90e1, 0xe3b4, 0xc0a2, /*0x20-0x27*/
+ 0x90e2, 0x90e3, 0x90e4, 0xe3ba, 0x90e5, 0x90e6, 0x90e7, 0x90e8, /*0x28-0x2f*/
+ 0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0, /*0x30-0x37*/
+ 0x90f1, 0x90f2, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0xd4b8, /*0x38-0x3f*/
+ 0x90f8, 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x9140, /*0x40-0x47*/
+ 0xb4c8, 0x9141, 0xe3bb, 0x9142, 0xbbc5, 0x9143, 0xc9f7, 0x9144, /*0x48-0x4f*/
+ 0x9145, 0xc9e5, 0x9146, 0x9147, 0x9148, 0xc4bd, 0x9149, 0x914a, /*0x50-0x57*/
+ 0x914b, 0x914c, 0x914d, 0x914e, 0x914f, 0xedab, 0x9150, 0x9151, /*0x58-0x5f*/
+ 0x9152, 0x9153, 0xc2fd, 0x9154, 0x9155, 0x9156, 0x9157, 0xbbdb, /*0x60-0x67*/
+ 0xbfae, 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d, 0x915e, /*0x68-0x6f*/
+ 0xcebf, 0x915f, 0x9160, 0x9161, 0x9162, 0xe3bc, 0x9163, 0xbfb6, /*0x70-0x77*/
+ 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916a, 0x916b, /*0x78-0x7f*/
+ 0x916c, 0x916d, 0x916e, 0x916f, 0x9170, 0x9171, 0x9172, 0x9173, /*0x80-0x87*/
+ 0x9174, 0x9175, 0x9176, 0xb1ef, 0x9177, 0x9178, 0xd4f7, 0x9179, /*0x88-0x8f*/
+ 0x917a, 0x917b, 0x917c, 0x917d, 0xe3be, 0x917e, 0x9180, 0x9181, /*0x90-0x97*/
+ 0x9182, 0x9183, 0x9184, 0x9185, 0x9186, 0xedad, 0x9187, 0x9188, /*0x98-0x9f*/
+ 0x9189, 0x918a, 0x918b, 0x918c, 0x918d, 0x918e, 0x918f, 0xe3bf, /*0xa0-0xa7*/
+ 0xbaa9, 0xedac, 0x9190, 0x9191, 0xe3bd, 0x9192, 0x9193, 0x9194, /*0xa8-0xaf*/
+ 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 0x919a, 0x919b, 0xe3c0, /*0xb0-0xb7*/
+ 0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0xbab6, 0x91a2, /*0xb8-0xbf*/
+ 0x91a3, 0x91a4, 0xb6ae, 0x91a5, 0x91a6, 0x91a7, 0x91a8, 0x91a9, /*0xc0-0xc7*/
+ 0xd0b8, 0x91aa, 0xb0c3, 0xedae, 0x91ab, 0x91ac, 0x91ad, 0x91ae, /*0xc8-0xcf*/
+ 0x91af, 0xedaf, 0xc0c1, 0x91b0, 0xe3c1, 0x91b1, 0x91b2, 0x91b3, /*0xd0-0xd7*/
+ 0x91b4, 0x91b5, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91ba, 0x91bb, /*0xd8-0xdf*/
+ 0x91bc, 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0xc5b3, 0x91c2, /*0xe0-0xe7*/
+ 0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, /*0xe8-0xef*/
+ 0x91cb, 0x91cc, 0x91cd, 0x91ce, 0x91cf, 0xe3c2, 0x91d0, 0x91d1, /*0xf0-0xf7*/
+ 0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0xdcb2, /*0xf8-0xff*/
+ /* 0x6200 */
+ 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd, 0x91de, 0xedb0, 0x91df, /*0x00-0x07*/
+ 0xb8ea, 0x91e0, 0xceec, 0xeaa7, 0xd0e7, 0xcaf9, 0xc8d6, 0xcfb7, /*0x08-0x0f*/
+ 0xb3c9, 0xced2, 0xbde4, 0x91e1, 0x91e2, 0xe3de, 0xbbf2, 0xeaa8, /*0x10-0x17*/
+ 0xd5bd, 0x91e3, 0xc6dd, 0xeaa9, 0x91e4, 0x91e5, 0x91e6, 0xeaaa, /*0x18-0x1f*/
+ 0x91e7, 0xeaac, 0xeaab, 0x91e8, 0xeaae, 0xeaad, 0x91e9, 0x91ea, /*0x20-0x27*/
+ 0x91eb, 0x91ec, 0xbdd8, 0x91ed, 0xeaaf, 0x91ee, 0xc2be, 0x91ef, /*0x28-0x2f*/
+ 0x91f0, 0x91f1, 0x91f2, 0xb4c1, 0xb4f7, 0x91f3, 0x91f4, 0xbba7, /*0x30-0x37*/
+ 0x91f5, 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0xece6, 0xece5, 0xb7bf, /*0x38-0x3f*/
+ 0xcbf9, 0xb1e2, 0x91fa, 0xece7, 0x91fb, 0x91fc, 0x91fd, 0xc9c8, /*0x40-0x47*/
+ 0xece8, 0xece9, 0x91fe, 0xcad6, 0xded0, 0xb2c5, 0xd4fa, 0x9240, /*0x48-0x4f*/
+ 0x9241, 0xc6cb, 0xb0c7, 0xb4f2, 0xc8d3, 0x9242, 0x9243, 0x9244, /*0x50-0x57*/
+ 0xcdd0, 0x9245, 0x9246, 0xbfb8, 0x9247, 0x9248, 0x9249, 0x924a, /*0x58-0x5f*/
+ 0x924b, 0x924c, 0x924d, 0xbfdb, 0x924e, 0x924f, 0xc7a4, 0xd6b4, /*0x60-0x67*/
+ 0x9250, 0xc0a9, 0xded1, 0xc9a8, 0xd1ef, 0xc5a4, 0xb0e7, 0xb3b6, /*0x68-0x6f*/
+ 0xc8c5, 0x9251, 0x9252, 0xb0e2, 0x9253, 0x9254, 0xb7f6, 0x9255, /*0x70-0x77*/
+ 0x9256, 0xc5fa, 0x9257, 0x9258, 0xb6f3, 0x9259, 0xd5d2, 0xb3d0, /*0x78-0x7f*/
+ 0xbcbc, 0x925a, 0x925b, 0x925c, 0xb3ad, 0x925d, 0x925e, 0x925f, /*0x80-0x87*/
+ 0x9260, 0xbef1, 0xb0d1, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, /*0x88-0x8f*/
+ 0x9266, 0xd2d6, 0xcae3, 0xd7a5, 0x9267, 0xcdb6, 0xb6b6, 0xbfb9, /*0x90-0x97*/
+ 0xd5db, 0x9268, 0xb8a7, 0xc5d7, 0x9269, 0x926a, 0x926b, 0xded2, /*0x98-0x9f*/
+ 0xbfd9, 0xc2d5, 0xc7c0, 0x926c, 0xbba4, 0xb1a8, 0x926d, 0x926e, /*0xa0-0xa7*/
+ 0xc5ea, 0x926f, 0x9270, 0xc5fb, 0xcca7, 0x9271, 0x9272, 0x9273, /*0xa8-0xaf*/
+ 0x9274, 0xb1a7, 0x9275, 0x9276, 0x9277, 0xb5d6, 0x9278, 0x9279, /*0xb0-0xb7*/
+ 0x927a, 0xc4a8, 0x927b, 0xded3, 0xd1ba, 0xb3e9, 0x927c, 0xc3f2, /*0xb8-0xbf*/
+ 0x927d, 0x927e, 0xb7f7, 0x9280, 0xd6f4, 0xb5a3, 0xb2f0, 0xc4b4, /*0xc0-0xc7*/
+ 0xc4e9, 0xc0ad, 0xded4, 0x9281, 0xb0e8, 0xc5c4, 0xc1e0, 0x9282, /*0xc8-0xcf*/
+ 0xb9d5, 0x9283, 0xbedc, 0xcdd8, 0xb0ce, 0x9284, 0xcdcf, 0xded6, /*0xd0-0xd7*/
+ 0xbed0, 0xd7be, 0xded5, 0xd5d0, 0xb0dd, 0x9285, 0x9286, 0xc4e2, /*0xd8-0xdf*/
+ 0x9287, 0x9288, 0xc2a3, 0xbcf0, 0x9289, 0xd3b5, 0xc0b9, 0xc5a1, /*0xe0-0xe7*/
+ 0xb2a6, 0xd4f1, 0x928a, 0x928b, 0xc0a8, 0xcac3, 0xded7, 0xd5fc, /*0xe8-0xef*/
+ 0x928c, 0xb9b0, 0x928d, 0xc8ad, 0xcba9, 0x928e, 0xded9, 0xbfbd, /*0xf0-0xf7*/
+ 0x928f, 0x9290, 0x9291, 0x9292, 0xc6b4, 0xd7a7, 0xcab0, 0xc4c3, /*0xf8-0xff*/
+ /* 0x6300 */
+ 0x9293, 0xb3d6, 0xb9d2, 0x9294, 0x9295, 0x9296, 0x9297, 0xd6b8, /*0x00-0x07*/
+ 0xeafc, 0xb0b4, 0x9298, 0x9299, 0x929a, 0x929b, 0xbfe6, 0x929c, /*0x08-0x0f*/
+ 0x929d, 0xccf4, 0x929e, 0x929f, 0x92a0, 0x92a1, 0xcdda, 0x92a2, /*0x10-0x17*/
+ 0x92a3, 0x92a4, 0xd6bf, 0xc2ce, 0x92a5, 0xcece, 0xcca2, 0xd0ae, /*0x18-0x1f*/
+ 0xc4d3, 0xb5b2, 0xded8, 0xd5f5, 0xbcb7, 0xbbd3, 0x92a6, 0x92a7, /*0x20-0x27*/
+ 0xb0a4, 0x92a8, 0xc5b2, 0xb4ec, 0x92a9, 0x92aa, 0x92ab, 0xd5f1, /*0x28-0x2f*/
+ 0x92ac, 0x92ad, 0xeafd, 0x92ae, 0x92af, 0x92b0, 0x92b1, 0x92b2, /*0x30-0x37*/
+ 0x92b3, 0xdeda, 0xcda6, 0x92b4, 0x92b5, 0xcdec, 0x92b6, 0x92b7, /*0x38-0x3f*/
+ 0x92b8, 0x92b9, 0xcee6, 0xdedc, 0x92ba, 0xcdb1, 0xc0a6, 0x92bb, /*0x40-0x47*/
+ 0x92bc, 0xd7bd, 0x92bd, 0xdedb, 0xb0c6, 0xbab4, 0xc9d3, 0xc4f3, /*0x48-0x4f*/
+ 0xbee8, 0x92be, 0x92bf, 0x92c0, 0x92c1, 0xb2b6, 0x92c2, 0x92c3, /*0x50-0x57*/
+ 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c8, 0x92c9, 0xc0cc, 0xcbf0, /*0x58-0x5f*/
+ 0x92ca, 0xbcf1, 0xbbbb, 0xb5b7, 0x92cb, 0x92cc, 0x92cd, 0xc5f5, /*0x60-0x67*/
+ 0x92ce, 0xdee6, 0x92cf, 0x92d0, 0x92d1, 0xdee3, 0xbedd, 0x92d2, /*0x68-0x6f*/
+ 0x92d3, 0xdedf, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0xb4b7, 0xbddd, /*0x70-0x77*/
+ 0x92d8, 0x92d9, 0xdee0, 0xc4ed, 0x92da, 0x92db, 0x92dc, 0x92dd, /*0x78-0x7f*/
+ 0xcfc6, 0x92de, 0xb5e0, 0x92df, 0x92e0, 0x92e1, 0x92e2, 0xb6de, /*0x80-0x87*/
+ 0xcada, 0xb5f4, 0xdee5, 0x92e3, 0xd5c6, 0x92e4, 0xdee1, 0xcccd, /*0x88-0x8f*/
+ 0xc6fe, 0x92e5, 0xc5c5, 0x92e6, 0x92e7, 0x92e8, 0xd2b4, 0x92e9, /*0x90-0x97*/
+ 0xbef2, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, /*0x98-0x9f*/
+ 0xc2d3, 0x92f1, 0xccbd, 0xb3b8, 0x92f2, 0xbdd3, 0x92f3, 0xbfd8, /*0xa0-0xa7*/
+ 0xcdc6, 0xd1da, 0xb4eb, 0x92f4, 0xdee4, 0xdedd, 0xdee7, 0x92f5, /*0xa8-0xaf*/
+ 0xeafe, 0x92f6, 0x92f7, 0xc2b0, 0xdee2, 0x92f8, 0x92f9, 0xd6c0, /*0xb0-0xb7*/
+ 0xb5a7, 0x92fa, 0xb2f4, 0x92fb, 0xdee8, 0x92fc, 0xdef2, 0x92fd, /*0xb8-0xbf*/
+ 0x92fe, 0x9340, 0x9341, 0x9342, 0xdeed, 0x9343, 0xdef1, 0x9344, /*0xc0-0xc7*/
+ 0x9345, 0xc8e0, 0x9346, 0x9347, 0x9348, 0xd7e1, 0xdeef, 0xc3e8, /*0xc8-0xcf*/
+ 0xcce1, 0x9349, 0xb2e5, 0x934a, 0x934b, 0x934c, 0xd2be, 0x934d, /*0xd0-0xd7*/
+ 0x934e, 0x934f, 0x9350, 0x9351, 0x9352, 0x9353, 0xdeee, 0x9354, /*0xd8-0xdf*/
+ 0xdeeb, 0xced5, 0x9355, 0xb4a7, 0x9356, 0x9357, 0x9358, 0x9359, /*0xe0-0xe7*/
+ 0x935a, 0xbfab, 0xbebe, 0x935b, 0x935c, 0xbdd2, 0x935d, 0x935e, /*0xe8-0xef*/
+ 0x935f, 0x9360, 0xdee9, 0x9361, 0xd4ae, 0x9362, 0xdede, 0x9363, /*0xf0-0xf7*/
+ 0xdeea, 0x9364, 0x9365, 0x9366, 0x9367, 0xc0bf, 0x9368, 0xdeec, /*0xf8-0xff*/
+ /* 0x6400 */
+ 0xb2f3, 0xb8e9, 0xc2a7, 0x9369, 0x936a, 0xbdc1, 0x936b, 0x936c, /*0x00-0x07*/
+ 0x936d, 0x936e, 0x936f, 0xdef5, 0xdef8, 0x9370, 0x9371, 0xb2ab, /*0x08-0x0f*/
+ 0xb4a4, 0x9372, 0x9373, 0xb4ea, 0xc9a6, 0x9374, 0x9375, 0x9376, /*0x10-0x17*/
+ 0x9377, 0x9378, 0x9379, 0xdef6, 0xcbd1, 0x937a, 0xb8e3, 0x937b, /*0x18-0x1f*/
+ 0xdef7, 0xdefa, 0x937c, 0x937d, 0x937e, 0x9380, 0xdef9, 0x9381, /*0x20-0x27*/
+ 0x9382, 0x9383, 0xccc2, 0x9384, 0xb0e1, 0xb4ee, 0x9385, 0x9386, /*0x28-0x2f*/
+ 0x9387, 0x9388, 0x9389, 0x938a, 0xe5ba, 0x938b, 0x938c, 0x938d, /*0x30-0x37*/
+ 0x938e, 0x938f, 0xd0af, 0x9390, 0x9391, 0xb2eb, 0x9392, 0xeba1, /*0x38-0x3f*/
+ 0x9393, 0xdef4, 0x9394, 0x9395, 0xc9e3, 0xdef3, 0xb0da, 0xd2a1, /*0x40-0x47*/
+ 0xb1f7, 0x9396, 0xccaf, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, /*0x48-0x4f*/
+ 0x939c, 0x939d, 0xdef0, 0x939e, 0xcba4, 0x939f, 0x93a0, 0x93a1, /*0x50-0x57*/
+ 0xd5aa, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0xdefb, 0x93a7, /*0x58-0x5f*/
+ 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0xb4dd, /*0x60-0x67*/
+ 0x93af, 0xc4a6, 0x93b0, 0x93b1, 0x93b2, 0xdefd, 0x93b3, 0x93b4, /*0x68-0x6f*/
+ 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc, /*0x70-0x77*/
+ 0xc3fe, 0xc4a1, 0xdfa1, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, /*0x78-0x7f*/
+ 0x93c2, 0x93c3, 0xc1cc, 0x93c4, 0xdefc, 0xbeef, 0x93c5, 0xc6b2, /*0x80-0x87*/
+ 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, /*0x88-0x8f*/
+ 0x93ce, 0xb3c5, 0xc8f6, 0x93cf, 0x93d0, 0xcbba, 0xdefe, 0x93d1, /*0x90-0x97*/
+ 0x93d2, 0xdfa4, 0x93d3, 0x93d4, 0x93d5, 0x93d6, 0xd7b2, 0x93d7, /*0x98-0x9f*/
+ 0x93d8, 0x93d9, 0x93da, 0x93db, 0xb3b7, 0x93dc, 0x93dd, 0x93de, /*0xa0-0xa7*/
+ 0x93df, 0xc1c3, 0x93e0, 0x93e1, 0xc7cb, 0xb2a5, 0xb4e9, 0x93e2, /*0xa8-0xaf*/
+ 0xd7ab, 0x93e3, 0x93e4, 0x93e5, 0x93e6, 0xc4ec, 0x93e7, 0xdfa2, /*0xb0-0xb7*/
+ 0xdfa3, 0x93e8, 0xdfa5, 0x93e9, 0xbab3, 0x93ea, 0x93eb, 0x93ec, /*0xb8-0xbf*/
+ 0xdfa6, 0x93ed, 0xc0de, 0x93ee, 0x93ef, 0xc9c3, 0x93f0, 0x93f1, /*0xc0-0xc7*/
+ 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6, 0xb2d9, 0xc7e6, 0x93f7, /*0xc8-0xcf*/
+ 0xdfa7, 0x93f8, 0xc7dc, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0xdfa8, /*0xd0-0xd7*/
+ 0xeba2, 0x93fd, 0x93fe, 0x9440, 0x9441, 0x9442, 0xcbd3, 0x9443, /*0xd8-0xdf*/
+ 0x9444, 0x9445, 0xdfaa, 0x9446, 0xdfa9, 0x9447, 0xb2c1, 0x9448, /*0xe0-0xe7*/
+ 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f, 0x9450, /*0xe8-0xef*/
+ 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458, /*0xf0-0xf7*/
+ 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f, 0x9460, /*0xf8-0xff*/
+ /* 0x6500 */
+ 0xc5ca, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, /*0x00-0x07*/
+ 0x9468, 0xdfab, 0x9469, 0x946a, 0x946b, 0x946c, 0x946d, 0x946e, /*0x08-0x0f*/
+ 0x946f, 0x9470, 0xd4dc, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, /*0x10-0x17*/
+ 0xc8c1, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, /*0x18-0x1f*/
+ 0x947d, 0x947e, 0x9480, 0x9481, 0x9482, 0xdfac, 0x9483, 0x9484, /*0x20-0x27*/
+ 0x9485, 0x9486, 0x9487, 0xbef0, 0x9488, 0x9489, 0xdfad, 0xd6a7, /*0x28-0x2f*/
+ 0x948a, 0x948b, 0x948c, 0x948d, 0xeab7, 0xebb6, 0xcad5, 0x948e, /*0x30-0x37*/
+ 0xd8fc, 0xb8c4, 0x948f, 0xb9a5, 0x9490, 0x9491, 0xb7c5, 0xd5fe, /*0x38-0x3f*/
+ 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0xb9ca, 0x9497, 0x9498, /*0x40-0x47*/
+ 0xd0a7, 0xf4cd, 0x9499, 0x949a, 0xb5d0, 0x949b, 0x949c, 0xc3f4, /*0x48-0x4f*/
+ 0x949d, 0xbec8, 0x949e, 0x949f, 0x94a0, 0xebb7, 0xb0bd, 0x94a1, /*0x50-0x57*/
+ 0x94a2, 0xbdcc, 0x94a3, 0xc1b2, 0x94a4, 0xb1d6, 0xb3a8, 0x94a5, /*0x58-0x5f*/
+ 0x94a6, 0x94a7, 0xb8d2, 0xc9a2, 0x94a8, 0x94a9, 0xb6d8, 0x94aa, /*0x60-0x67*/
+ 0x94ab, 0x94ac, 0x94ad, 0xebb8, 0xbeb4, 0x94ae, 0x94af, 0x94b0, /*0x68-0x6f*/
+ 0xcafd, 0x94b1, 0xc7c3, 0x94b2, 0xd5fb, 0x94b3, 0x94b4, 0xb7f3, /*0x70-0x77*/
+ 0x94b5, 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, /*0x78-0x7f*/
+ 0x94bd, 0x94be, 0x94bf, 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0xcec4, /*0x80-0x87*/
+ 0x94c4, 0x94c5, 0x94c6, 0xd5ab, 0xb1f3, 0x94c7, 0x94c8, 0x94c9, /*0x88-0x8f*/
+ 0xecb3, 0xb0df, 0x94ca, 0xecb5, 0x94cb, 0x94cc, 0x94cd, 0xb6b7, /*0x90-0x97*/
+ 0x94ce, 0xc1cf, 0x94cf, 0xf5fa, 0xd0b1, 0x94d0, 0x94d1, 0xd5e5, /*0x98-0x9f*/
+ 0x94d2, 0xced3, 0x94d3, 0x94d4, 0xbdef, 0xb3e2, 0x94d5, 0xb8ab, /*0xa0-0xa7*/
+ 0x94d6, 0xd5b6, 0x94d7, 0xedbd, 0x94d8, 0xb6cf, 0x94d9, 0xcbb9, /*0xa8-0xaf*/
+ 0xd0c2, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de, 0x94df, 0x94e0, /*0xb0-0xb7*/
+ 0x94e1, 0xb7bd, 0x94e2, 0x94e3, 0xecb6, 0xcaa9, 0x94e4, 0x94e5, /*0xb8-0xbf*/
+ 0x94e6, 0xc5d4, 0x94e7, 0xecb9, 0xecb8, 0xc2c3, 0xecb7, 0x94e8, /*0xc0-0xc7*/
+ 0x94e9, 0x94ea, 0x94eb, 0xd0fd, 0xecba, 0x94ec, 0xecbb, 0xd7e5, /*0xc8-0xcf*/
+ 0x94ed, 0x94ee, 0xecbc, 0x94ef, 0x94f0, 0x94f1, 0xecbd, 0xc6ec, /*0xd0-0xd7*/
+ 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6, 0x94f7, 0x94f8, 0x94f9, /*0xd8-0xdf*/
+ 0xcede, 0x94fa, 0xbcc8, 0x94fb, 0x94fc, 0xc8d5, 0xb5a9, 0xbec9, /*0xe0-0xe7*/
+ 0xd6bc, 0xd4e7, 0x94fd, 0x94fe, 0xd1ae, 0xd0f1, 0xeab8, 0xeab9, /*0xe8-0xef*/
+ 0xeaba, 0xbab5, 0x9540, 0x9541, 0x9542, 0x9543, 0xcab1, 0xbff5, /*0xf0-0xf7*/
+ 0x9544, 0x9545, 0xcdfa, 0x9546, 0x9547, 0x9548, 0x9549, 0x954a, /*0xf8-0xff*/
+ /* 0x6600 */
+ 0xeac0, 0x954b, 0xb0ba, 0xeabe, 0x954c, 0x954d, 0xc0a5, 0x954e, /*0x00-0x07*/
+ 0x954f, 0x9550, 0xeabb, 0x9551, 0xb2fd, 0x9552, 0xc3f7, 0xbbe8, /*0x08-0x0f*/
+ 0x9553, 0x9554, 0x9555, 0xd2d7, 0xcef4, 0xeabf, 0x9556, 0x9557, /*0x10-0x17*/
+ 0x9558, 0xeabc, 0x9559, 0x955a, 0x955b, 0xeac3, 0x955c, 0xd0c7, /*0x18-0x1f*/
+ 0xd3b3, 0x955d, 0x955e, 0x955f, 0x9560, 0xb4ba, 0x9561, 0xc3c1, /*0x20-0x27*/
+ 0xd7f2, 0x9562, 0x9563, 0x9564, 0x9565, 0xd5d1, 0x9566, 0xcac7, /*0x28-0x2f*/
+ 0x9567, 0xeac5, 0x9568, 0x9569, 0xeac4, 0xeac7, 0xeac6, 0x956a, /*0x30-0x37*/
+ 0x956b, 0x956c, 0x956d, 0x956e, 0xd6e7, 0x956f, 0xcfd4, 0x9570, /*0x38-0x3f*/
+ 0x9571, 0xeacb, 0x9572, 0xbbce, 0x9573, 0x9574, 0x9575, 0x9576, /*0x40-0x47*/
+ 0x9577, 0x9578, 0x9579, 0xbdfa, 0xc9ce, 0x957a, 0x957b, 0xeacc, /*0x48-0x4f*/
+ 0x957c, 0x957d, 0xc9b9, 0xcffe, 0xeaca, 0xd4ce, 0xeacd, 0xeacf, /*0x50-0x57*/
+ 0x957e, 0x9580, 0xcded, 0x9581, 0x9582, 0x9583, 0x9584, 0xeac9, /*0x58-0x5f*/
+ 0x9585, 0xeace, 0x9586, 0x9587, 0xceee, 0x9588, 0xbbde, 0x9589, /*0x60-0x67*/
+ 0xb3bf, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0xc6d5, 0xbeb0, /*0x68-0x6f*/
+ 0xcefa, 0x958f, 0x9590, 0x9591, 0xc7e7, 0x9592, 0xbea7, 0xead0, /*0x70-0x77*/
+ 0x9593, 0x9594, 0xd6c7, 0x9595, 0x9596, 0x9597, 0xc1c0, 0x9598, /*0x78-0x7f*/
+ 0x9599, 0x959a, 0xd4dd, 0x959b, 0xead1, 0x959c, 0x959d, 0xcfbe, /*0x80-0x87*/
+ 0x959e, 0x959f, 0x95a0, 0x95a1, 0xead2, 0x95a2, 0x95a3, 0x95a4, /*0x88-0x8f*/
+ 0x95a5, 0xcaee, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0xc5af, 0xb0b5, /*0x90-0x97*/
+ 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0xead4, 0x95af, 0x95b0, /*0x98-0x9f*/
+ 0x95b1, 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0xead3, /*0xa0-0xa7*/
+ 0xf4df, 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0xc4ba, 0x95bd, /*0xa8-0xaf*/
+ 0x95be, 0x95bf, 0x95c0, 0x95c1, 0xb1a9, 0x95c2, 0x95c3, 0x95c4, /*0xb0-0xb7*/
+ 0x95c5, 0xe5df, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0xead5, 0x95ca, /*0xb8-0xbf*/
+ 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, /*0xc0-0xc7*/
+ 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, /*0xc8-0xcf*/
+ 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, /*0xd0-0xd7*/
+ 0x95e3, 0xcaef, 0x95e4, 0xead6, 0xead7, 0xc6d8, 0x95e5, 0x95e6, /*0xd8-0xdf*/
+ 0x95e7, 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, 0xead8, 0x95ed, /*0xe0-0xe7*/
+ 0x95ee, 0xead9, 0x95ef, 0x95f0, 0x95f1, 0x95f2, 0x95f3, 0x95f4, /*0xe8-0xef*/
+ 0xd4bb, 0x95f5, 0xc7fa, 0xd2b7, 0xb8fc, 0x95f6, 0x95f7, 0xeac2, /*0xf0-0xf7*/
+ 0x95f8, 0xb2dc, 0x95f9, 0x95fa, 0xc2fc, 0x95fb, 0xd4f8, 0xcce6, /*0xf8-0xff*/
+ /* 0x6700 */
+ 0xd7ee, 0x95fc, 0x95fd, 0x95fe, 0x9640, 0x9641, 0x9642, 0x9643, /*0x00-0x07*/
+ 0xd4c2, 0xd3d0, 0xebc3, 0xc5f3, 0x9644, 0xb7fe, 0x9645, 0x9646, /*0x08-0x0f*/
+ 0xebd4, 0x9647, 0x9648, 0x9649, 0xcbb7, 0xebde, 0x964a, 0xc0ca, /*0x10-0x17*/
+ 0x964b, 0x964c, 0x964d, 0xcdfb, 0x964e, 0xb3af, 0x964f, 0xc6da, /*0x18-0x1f*/
+ 0x9650, 0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0xebfc, 0x9656, /*0x20-0x27*/
+ 0xc4be, 0x9657, 0xceb4, 0xc4a9, 0xb1be, 0xd4fd, 0x9658, 0xcaf5, /*0x28-0x2f*/
+ 0x9659, 0xd6ec, 0x965a, 0x965b, 0xc6d3, 0xb6e4, 0x965c, 0x965d, /*0x30-0x37*/
+ 0x965e, 0x965f, 0xbbfa, 0x9660, 0x9661, 0xd0e0, 0x9662, 0x9663, /*0x38-0x3f*/
+ 0xc9b1, 0x9664, 0xd4d3, 0xc8a8, 0x9665, 0x9666, 0xb8cb, 0x9667, /*0x40-0x47*/
+ 0xe8be, 0xc9bc, 0x9668, 0x9669, 0xe8bb, 0x966a, 0xc0ee, 0xd0d3, /*0x48-0x4f*/
+ 0xb2c4, 0xb4e5, 0x966b, 0xe8bc, 0x966c, 0x966d, 0xd5c8, 0x966e, /*0x50-0x57*/
+ 0x966f, 0x9670, 0x9671, 0x9672, 0xb6c5, 0x9673, 0xe8bd, 0xcaf8, /*0x58-0x5f*/
+ 0xb8dc, 0xccf5, 0x9674, 0x9675, 0x9676, 0xc0b4, 0x9677, 0x9678, /*0x60-0x67*/
+ 0xd1ee, 0xe8bf, 0xe8c2, 0x9679, 0x967a, 0xbabc, 0x967b, 0xb1ad, /*0x68-0x6f*/
+ 0xbddc, 0x967c, 0xeabd, 0xe8c3, 0x967d, 0xe8c6, 0x967e, 0xe8cb, /*0x70-0x77*/
+ 0x9680, 0x9681, 0x9682, 0x9683, 0xe8cc, 0x9684, 0xcbc9, 0xb0e5, /*0x78-0x7f*/
+ 0x9685, 0xbcab, 0x9686, 0x9687, 0xb9b9, 0x9688, 0x9689, 0xe8c1, /*0x80-0x87*/
+ 0x968a, 0xcdf7, 0x968b, 0xe8ca, 0x968c, 0x968d, 0x968e, 0x968f, /*0x88-0x8f*/
+ 0xcef6, 0x9690, 0x9691, 0x9692, 0x9693, 0xd5ed, 0x9694, 0xc1d6, /*0x90-0x97*/
+ 0xe8c4, 0x9695, 0xc3b6, 0x9696, 0xb9fb, 0xd6a6, 0xe8c8, 0x9697, /*0x98-0x9f*/
+ 0x9698, 0x9699, 0xcae0, 0xd4e6, 0x969a, 0xe8c0, 0x969b, 0xe8c5, /*0xa0-0xa7*/
+ 0xe8c7, 0x969c, 0xc7b9, 0xb7e3, 0x969d, 0xe8c9, 0x969e, 0xbfdd, /*0xa8-0xaf*/
+ 0xe8d2, 0x969f, 0x96a0, 0xe8d7, 0x96a1, 0xe8d5, 0xbcdc, 0xbccf, /*0xb0-0xb7*/
+ 0xe8db, 0x96a2, 0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a7, 0x96a8, /*0xb8-0xbf*/
+ 0x96a9, 0xe8de, 0x96aa, 0xe8da, 0xb1fa, 0x96ab, 0x96ac, 0x96ad, /*0xc0-0xc7*/
+ 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4, 0xb0d8, /*0xc8-0xcf*/
+ 0xc4b3, 0xb8cc, 0xc6e2, 0xc8be, 0xc8e1, 0x96b5, 0x96b6, 0x96b7, /*0xd0-0xd7*/
+ 0xe8cf, 0xe8d4, 0xe8d6, 0x96b8, 0xb9f1, 0xe8d8, 0xd7f5, 0x96b9, /*0xd8-0xdf*/
+ 0xc4fb, 0x96ba, 0xe8dc, 0x96bb, 0x96bc, 0xb2e9, 0x96bd, 0x96be, /*0xe0-0xe7*/
+ 0x96bf, 0xe8d1, 0x96c0, 0x96c1, 0xbced, 0x96c2, 0x96c3, 0xbfc2, /*0xe8-0xef*/
+ 0xe8cd, 0xd6f9, 0x96c4, 0xc1f8, 0xb2f1, 0x96c5, 0x96c6, 0x96c7, /*0xf0-0xf7*/
+ 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0xe8df, 0x96cd, 0xcac1, /*0xf8-0xff*/
+ /* 0x6800 */
+ 0xe8d9, 0x96ce, 0x96cf, 0x96d0, 0x96d1, 0xd5a4, 0x96d2, 0xb1ea, /*0x00-0x07*/
+ 0xd5bb, 0xe8ce, 0xe8d0, 0xb6b0, 0xe8d3, 0x96d3, 0xe8dd, 0xc0b8, /*0x08-0x0f*/
+ 0x96d4, 0xcaf7, 0x96d5, 0xcba8, 0x96d6, 0x96d7, 0xc6dc, 0xc0f5, /*0x10-0x17*/
+ 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc, 0xe8e9, 0x96dd, 0x96de, /*0x18-0x1f*/
+ 0x96df, 0xd0a3, 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4, 0x96e5, /*0x20-0x27*/
+ 0x96e6, 0xe8f2, 0xd6ea, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, /*0x28-0x2f*/
+ 0x96ec, 0x96ed, 0xe8e0, 0xe8e1, 0x96ee, 0x96ef, 0x96f0, 0xd1f9, /*0x30-0x37*/
+ 0xbacb, 0xb8f9, 0x96f1, 0x96f2, 0xb8f1, 0xd4d4, 0xe8ef, 0x96f3, /*0x38-0x3f*/
+ 0xe8ee, 0xe8ec, 0xb9f0, 0xccd2, 0xe8e6, 0xcea6, 0xbff2, 0x96f4, /*0x40-0x47*/
+ 0xb0b8, 0xe8f1, 0xe8f0, 0x96f5, 0xd7c0, 0x96f6, 0xe8e4, 0x96f7, /*0x48-0x4f*/
+ 0xcda9, 0xc9a3, 0x96f8, 0xbbb8, 0xbddb, 0xe8ea, 0x96f9, 0x96fa, /*0x50-0x57*/
+ 0x96fb, 0x96fc, 0x96fd, 0x96fe, 0x9740, 0x9741, 0x9742, 0x9743, /*0x58-0x5f*/
+ 0xe8e2, 0xe8e3, 0xe8e5, 0xb5b5, 0xe8e7, 0xc7c5, 0xe8eb, 0xe8ed, /*0x60-0x67*/
+ 0xbdb0, 0xd7ae, 0x9744, 0xe8f8, 0x9745, 0x9746, 0x9747, 0x9748, /*0x68-0x6f*/
+ 0x9749, 0x974a, 0x974b, 0x974c, 0xe8f5, 0x974d, 0xcdb0, 0xe8f6, /*0x70-0x77*/
+ 0x974e, 0x974f, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755, /*0x78-0x7f*/
+ 0x9756, 0xc1ba, 0x9757, 0xe8e8, 0x9758, 0xc3b7, 0xb0f0, 0x9759, /*0x80-0x87*/
+ 0x975a, 0x975b, 0x975c, 0x975d, 0x975e, 0x975f, 0x9760, 0xe8f4, /*0x88-0x8f*/
+ 0x9761, 0x9762, 0x9763, 0xe8f7, 0x9764, 0x9765, 0x9766, 0xb9a3, /*0x90-0x97*/
+ 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d, 0x976e, /*0x98-0x9f*/
+ 0x976f, 0x9770, 0xc9d2, 0x9771, 0x9772, 0x9773, 0xc3ce, 0xcee0, /*0xa0-0xa7*/
+ 0xc0e6, 0x9774, 0x9775, 0x9776, 0x9777, 0xcbf3, 0x9778, 0xccdd, /*0xa8-0xaf*/
+ 0xd0b5, 0x9779, 0x977a, 0xcae1, 0x977b, 0xe8f3, 0x977c, 0x977d, /*0xb0-0xb7*/
+ 0x977e, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, /*0xb8-0xbf*/
+ 0xbcec, 0x9787, 0xe8f9, 0x9788, 0x9789, 0x978a, 0x978b, 0x978c, /*0xc0-0xc7*/
+ 0x978d, 0xc3de, 0x978e, 0xc6e5, 0x978f, 0xb9f7, 0x9790, 0x9791, /*0xc8-0xcf*/
+ 0x9792, 0x9793, 0xb0f4, 0x9794, 0x9795, 0xd7d8, 0x9796, 0x9797, /*0xd0-0xd7*/
+ 0xbcac, 0x9798, 0xc5ef, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d, /*0xd8-0xdf*/
+ 0xccc4, 0x979e, 0x979f, 0xe9a6, 0x97a0, 0x97a1, 0x97a2, 0x97a3, /*0xe0-0xe7*/
+ 0x97a4, 0x97a5, 0x97a6, 0x97a7, 0x97a8, 0x97a9, 0xc9ad, 0x97aa, /*0xe8-0xef*/
+ 0xe9a2, 0xc0e2, 0x97ab, 0x97ac, 0x97ad, 0xbfc3, 0x97ae, 0x97af, /*0xf0-0xf7*/
+ 0x97b0, 0xe8fe, 0xb9d7, 0x97b1, 0xe8fb, 0x97b2, 0x97b3, 0x97b4, /*0xf8-0xff*/
+ /* 0x6900 */
+ 0x97b5, 0xe9a4, 0x97b6, 0x97b7, 0x97b8, 0xd2ce, 0x97b9, 0x97ba, /*0x00-0x07*/
+ 0x97bb, 0x97bc, 0x97bd, 0xe9a3, 0x97be, 0xd6b2, 0xd7b5, 0x97bf, /*0x08-0x0f*/
+ 0xe9a7, 0x97c0, 0xbdb7, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, /*0x10-0x17*/
+ 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0xe8fc, /*0x18-0x1f*/
+ 0xe8fd, 0x97cd, 0x97ce, 0x97cf, 0xe9a1, 0x97d0, 0x97d1, 0x97d2, /*0x20-0x27*/
+ 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7, 0xcdd6, 0x97d8, 0x97d9, /*0x28-0x2f*/
+ 0xd2ac, 0x97da, 0x97db, 0x97dc, 0xe9b2, 0x97dd, 0x97de, 0x97df, /*0x30-0x37*/
+ 0x97e0, 0xe9a9, 0x97e1, 0x97e2, 0x97e3, 0xb4aa, 0x97e4, 0xb4bb, /*0x38-0x3f*/
+ 0x97e5, 0x97e6, 0xe9ab, 0x97e7, 0x97e8, 0x97e9, 0x97ea, 0x97eb, /*0x40-0x47*/
+ 0x97ec, 0x97ed, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f3, /*0x48-0x4f*/
+ 0x97f4, 0x97f5, 0x97f6, 0x97f7, 0xd0a8, 0x97f8, 0x97f9, 0xe9a5, /*0x50-0x57*/
+ 0x97fa, 0x97fb, 0xb3fe, 0x97fc, 0x97fd, 0xe9ac, 0xc0e3, 0x97fe, /*0x58-0x5f*/
+ 0xe9aa, 0x9840, 0x9841, 0xe9b9, 0x9842, 0x9843, 0xe9b8, 0x9844, /*0x60-0x67*/
+ 0x9845, 0x9846, 0x9847, 0xe9ae, 0x9848, 0x9849, 0xe8fa, 0x984a, /*0x68-0x6f*/
+ 0x984b, 0xe9a8, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850, 0xbfac, /*0x70-0x77*/
+ 0xe9b1, 0xe9ba, 0x9851, 0x9852, 0xc2a5, 0x9853, 0x9854, 0x9855, /*0x78-0x7f*/
+ 0xe9af, 0x9856, 0xb8c5, 0x9857, 0xe9ad, 0x9858, 0xd3dc, 0xe9b4, /*0x80-0x87*/
+ 0xe9b5, 0xe9b7, 0x9859, 0x985a, 0x985b, 0xe9c7, 0x985c, 0x985d, /*0x88-0x8f*/
+ 0x985e, 0x985f, 0x9860, 0x9861, 0xc0c6, 0xe9c5, 0x9862, 0x9863, /*0x90-0x97*/
+ 0xe9b0, 0x9864, 0x9865, 0xe9bb, 0xb0f1, 0x9866, 0x9867, 0x9868, /*0x98-0x9f*/
+ 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0xe9bc, /*0xa0-0xa7*/
+ 0xd5a5, 0x9870, 0x9871, 0xe9be, 0x9872, 0xe9bf, 0x9873, 0x9874, /*0xa8-0xaf*/
+ 0x9875, 0xe9c1, 0x9876, 0x9877, 0xc1f1, 0x9878, 0x9879, 0xc8b6, /*0xb0-0xb7*/
+ 0x987a, 0x987b, 0x987c, 0xe9bd, 0x987d, 0x987e, 0x9880, 0x9881, /*0xb8-0xbf*/
+ 0x9882, 0xe9c2, 0x9883, 0x9884, 0x9885, 0x9886, 0x9887, 0x9888, /*0xc0-0xc7*/
+ 0x9889, 0x988a, 0xe9c3, 0x988b, 0xe9b3, 0x988c, 0xe9b6, 0x988d, /*0xc8-0xcf*/
+ 0xbbb1, 0x988e, 0x988f, 0x9890, 0xe9c0, 0x9891, 0x9892, 0x9893, /*0xd0-0xd7*/
+ 0x9894, 0x9895, 0x9896, 0xbcf7, 0x9897, 0x9898, 0x9899, 0xe9c4, /*0xd8-0xdf*/
+ 0xe9c6, 0x989a, 0x989b, 0x989c, 0x989d, 0x989e, 0x989f, 0x98a0, /*0xe0-0xe7*/
+ 0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0xe9ca, 0x98a6, 0x98a7, /*0xe8-0xef*/
+ 0x98a8, 0x98a9, 0xe9ce, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, /*0xf0-0xf7*/
+ 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3, 0xb2db, 0x98b4, 0xe9c8, /*0xf8-0xff*/
+ /* 0x6a00 */
+ 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb, 0x98bc, /*0x00-0x07*/
+ 0x98bd, 0x98be, 0xb7ae, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3, /*0x08-0x0f*/
+ 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0xe9cb, /*0x10-0x17*/
+ 0xe9cc, 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0xd5c1, /*0x18-0x1f*/
+ 0x98d1, 0xc4a3, 0x98d2, 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7, /*0x20-0x27*/
+ 0xe9d8, 0x98d8, 0xbae1, 0x98d9, 0x98da, 0x98db, 0x98dc, 0xe9c9, /*0x28-0x2f*/
+ 0x98dd, 0xd3a3, 0x98de, 0x98df, 0x98e0, 0xe9d4, 0x98e1, 0x98e2, /*0x30-0x37*/
+ 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0xe9d7, 0xe9d0, 0x98e8, /*0x38-0x3f*/
+ 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0xe9cf, 0x98ed, 0x98ee, 0xc7c1, /*0x40-0x47*/
+ 0x98ef, 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, /*0x48-0x4f*/
+ 0xe9d2, 0x98f7, 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, /*0x50-0x57*/
+ 0xe9d9, 0xb3c8, 0x98fe, 0xe9d3, 0x9940, 0x9941, 0x9942, 0x9943, /*0x58-0x5f*/
+ 0x9944, 0xcff0, 0x9945, 0x9946, 0x9947, 0xe9cd, 0x9948, 0x9949, /*0x60-0x67*/
+ 0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, /*0x68-0x6f*/
+ 0x9952, 0xb3f7, 0x9953, 0x9954, 0x9955, 0x9956, 0x9957, 0x9958, /*0x70-0x77*/
+ 0x9959, 0xe9d6, 0x995a, 0x995b, 0xe9da, 0x995c, 0x995d, 0x995e, /*0x78-0x7f*/
+ 0xccb4, 0x995f, 0x9960, 0x9961, 0xcfad, 0x9962, 0x9963, 0x9964, /*0x80-0x87*/
+ 0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996a, 0xe9d5, 0x996b, /*0x88-0x8f*/
+ 0xe9dc, 0xe9db, 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, 0xe9de, /*0x90-0x97*/
+ 0x9971, 0x9972, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, /*0x98-0x9f*/
+ 0xe9d1, 0x9979, 0x997a, 0x997b, 0x997c, 0x997d, 0x997e, 0x9980, /*0xa0-0xa7*/
+ 0x9981, 0xe9dd, 0x9982, 0xe9df, 0xc3ca, 0x9983, 0x9984, 0x9985, /*0xa8-0xaf*/
+ 0x9986, 0x9987, 0x9988, 0x9989, 0x998a, 0x998b, 0x998c, 0x998d, /*0xb0-0xb7*/
+ 0x998e, 0x998f, 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995, /*0xb8-0xbf*/
+ 0x9996, 0x9997, 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d, /*0xc0-0xc7*/
+ 0x999e, 0x999f, 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5, /*0xc8-0xcf*/
+ 0x99a6, 0x99a7, 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, /*0xd0-0xd7*/
+ 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5, /*0xd8-0xdf*/
+ 0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd, /*0xe0-0xe7*/
+ 0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5, /*0xe8-0xef*/
+ 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd, /*0xf0-0xf7*/
+ 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5, /*0xf8-0xff*/
+ /* 0x6b00 */
+ 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, /*0x00-0x07*/
+ 0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, /*0x08-0x0f*/
+ 0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, /*0x10-0x17*/
+ 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5, /*0x18-0x1f*/
+ 0xc7b7, 0xb4ce, 0xbbb6, 0xd0c0, 0xeca3, 0x99f6, 0x99f7, 0xc5b7, /*0x20-0x27*/
+ 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x9a40, /*0x28-0x2f*/
+ 0x9a41, 0x9a42, 0xd3fb, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0xeca4, /*0x30-0x37*/
+ 0x9a47, 0xeca5, 0xc6db, 0x9a48, 0x9a49, 0x9a4a, 0xbfee, 0x9a4b, /*0x38-0x3f*/
+ 0x9a4c, 0x9a4d, 0x9a4e, 0xeca6, 0x9a4f, 0x9a50, 0xeca7, 0xd0aa, /*0x40-0x47*/
+ 0x9a51, 0xc7b8, 0x9a52, 0x9a53, 0xb8e8, 0x9a54, 0x9a55, 0x9a56, /*0x48-0x4f*/
+ 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, /*0x50-0x57*/
+ 0x9a5f, 0xeca8, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, /*0x58-0x5f*/
+ 0x9a66, 0x9a67, 0xd6b9, 0xd5fd, 0xb4cb, 0xb2bd, 0xcee4, 0xc6e7, /*0x60-0x67*/
+ 0x9a68, 0x9a69, 0xcde1, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e, /*0x68-0x6f*/
+ 0x9a6f, 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76, /*0x70-0x77*/
+ 0x9a77, 0xb4f5, 0x9a78, 0xcbc0, 0xbcdf, 0x9a79, 0x9a7a, 0x9a7b, /*0x78-0x7f*/
+ 0x9a7c, 0xe9e2, 0xe9e3, 0xd1ea, 0xe9e5, 0x9a7d, 0xb4f9, 0xe9e4, /*0x80-0x87*/
+ 0x9a7e, 0xd1b3, 0xcae2, 0xb2d0, 0x9a80, 0xe9e8, 0x9a81, 0x9a82, /*0x88-0x8f*/
+ 0x9a83, 0x9a84, 0xe9e6, 0xe9e7, 0x9a85, 0x9a86, 0xd6b3, 0x9a87, /*0x90-0x97*/
+ 0x9a88, 0x9a89, 0xe9e9, 0xe9ea, 0x9a8a, 0x9a8b, 0x9a8c, 0x9a8d, /*0x98-0x9f*/
+ 0x9a8e, 0xe9eb, 0x9a8f, 0x9a90, 0x9a91, 0x9a92, 0x9a93, 0x9a94, /*0xa0-0xa7*/
+ 0x9a95, 0x9a96, 0xe9ec, 0x9a97, 0x9a98, 0x9a99, 0x9a9a, 0x9a9b, /*0xa8-0xaf*/
+ 0x9a9c, 0x9a9d, 0x9a9e, 0xecaf, 0xc5b9, 0xb6ce, 0x9a9f, 0xd2f3, /*0xb0-0xb7*/
+ 0x9aa0, 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0xb5ee, /*0xb8-0xbf*/
+ 0x9aa7, 0xbbd9, 0xecb1, 0x9aa8, 0x9aa9, 0xd2e3, 0x9aaa, 0x9aab, /*0xc0-0xc7*/
+ 0x9aac, 0x9aad, 0x9aae, 0xcee3, 0x9aaf, 0xc4b8, 0x9ab0, 0xc3bf, /*0xc8-0xcf*/
+ 0x9ab1, 0x9ab2, 0xb6be, 0xd8b9, 0xb1c8, 0xb1cf, 0xb1d1, 0xc5fe, /*0xd0-0xd7*/
+ 0x9ab3, 0xb1d0, 0x9ab4, 0xc3ab, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8, /*0xd8-0xdf*/
+ 0x9ab9, 0xd5b1, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf, /*0xe0-0xe7*/
+ 0x9ac0, 0x9ac1, 0xeba4, 0xbac1, 0x9ac2, 0x9ac3, 0x9ac4, 0xccba, /*0xe8-0xef*/
+ 0x9ac5, 0x9ac6, 0x9ac7, 0xeba5, 0x9ac8, 0xeba7, 0x9ac9, 0x9aca, /*0xf0-0xf7*/
+ 0x9acb, 0xeba8, 0x9acc, 0x9acd, 0x9ace, 0xeba6, 0x9acf, 0x9ad0, /*0xf8-0xff*/
+ /* 0x6c00 */
+ 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0xeba9, 0xebab, 0xebaa, /*0x00-0x07*/
+ 0x9ad6, 0x9ad7, 0x9ad8, 0x9ad9, 0x9ada, 0xebac, 0x9adb, 0xcacf, /*0x08-0x0f*/
+ 0xd8b5, 0xc3f1, 0x9adc, 0xc3a5, 0xc6f8, 0xebad, 0xc4ca, 0x9add, /*0x10-0x17*/
+ 0xebae, 0xebaf, 0xebb0, 0xb7d5, 0x9ade, 0x9adf, 0x9ae0, 0xb7fa, /*0x18-0x1f*/
+ 0x9ae1, 0xebb1, 0xc7e2, 0x9ae2, 0xebb3, 0x9ae3, 0xbaa4, 0xd1f5, /*0x20-0x27*/
+ 0xb0b1, 0xebb2, 0xebb4, 0x9ae4, 0x9ae5, 0x9ae6, 0xb5aa, 0xc2c8, /*0x28-0x2f*/
+ 0xc7e8, 0x9ae7, 0xebb5, 0x9ae8, 0xcbae, 0xe3df, 0x9ae9, 0x9aea, /*0x30-0x37*/
+ 0xd3c0, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0xd9db, 0x9aef, 0x9af0, /*0x38-0x3f*/
+ 0xcda1, 0xd6ad, 0xc7f3, 0x9af1, 0x9af2, 0x9af3, 0xd9e0, 0xbbe3, /*0x40-0x47*/
+ 0x9af4, 0xbaba, 0xe3e2, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9af9, /*0x48-0x4f*/
+ 0xcfab, 0x9afa, 0x9afb, 0x9afc, 0xe3e0, 0xc9c7, 0x9afd, 0xbab9, /*0x50-0x57*/
+ 0x9afe, 0x9b40, 0x9b41, 0xd1b4, 0xe3e1, 0xc8ea, 0xb9af, 0xbdad, /*0x58-0x5f*/
+ 0xb3d8, 0xcedb, 0x9b42, 0x9b43, 0xccc0, 0x9b44, 0x9b45, 0x9b46, /*0x60-0x67*/
+ 0xe3e8, 0xe3e9, 0xcdf4, 0x9b47, 0x9b48, 0x9b49, 0x9b4a, 0x9b4b, /*0x68-0x6f*/
+ 0xccad, 0x9b4c, 0xbcb3, 0x9b4d, 0xe3ea, 0x9b4e, 0xe3eb, 0x9b4f, /*0x70-0x77*/
+ 0x9b50, 0xd0da, 0x9b51, 0x9b52, 0x9b53, 0xc6fb, 0xb7da, 0x9b54, /*0x78-0x7f*/
+ 0x9b55, 0xc7df, 0xd2ca, 0xced6, 0x9b56, 0xe3e4, 0xe3ec, 0x9b57, /*0x80-0x87*/
+ 0xc9f2, 0xb3c1, 0x9b58, 0x9b59, 0xe3e7, 0x9b5a, 0x9b5b, 0xc6e3, /*0x88-0x8f*/
+ 0xe3e5, 0x9b5c, 0x9b5d, 0xedb3, 0xe3e6, 0x9b5e, 0x9b5f, 0x9b60, /*0x90-0x97*/
+ 0x9b61, 0xc9b3, 0x9b62, 0xc5e6, 0x9b63, 0x9b64, 0x9b65, 0xb9b5, /*0x98-0x9f*/
+ 0x9b66, 0xc3bb, 0x9b67, 0xe3e3, 0xc5bd, 0xc1a4, 0xc2d9, 0xb2d7, /*0xa0-0xa7*/
+ 0x9b68, 0xe3ed, 0xbba6, 0xc4ad, 0x9b69, 0xe3f0, 0xbeda, 0x9b6a, /*0xa8-0xaf*/
+ 0x9b6b, 0xe3fb, 0xe3f5, 0xbad3, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, /*0xb0-0xb7*/
+ 0xb7d0, 0xd3cd, 0x9b70, 0xd6ce, 0xd5d3, 0xb9c1, 0xd5b4, 0xd1d8, /*0xb8-0xbf*/
+ 0x9b71, 0x9b72, 0x9b73, 0x9b74, 0xd0b9, 0xc7f6, 0x9b75, 0x9b76, /*0xc0-0xc7*/
+ 0x9b77, 0xc8aa, 0xb2b4, 0x9b78, 0xc3da, 0x9b79, 0x9b7a, 0x9b7b, /*0xc8-0xcf*/
+ 0xe3ee, 0x9b7c, 0x9b7d, 0xe3fc, 0xe3ef, 0xb7a8, 0xe3f7, 0xe3f4, /*0xd0-0xd7*/
+ 0x9b7e, 0x9b80, 0x9b81, 0xb7ba, 0x9b82, 0x9b83, 0xc5a2, 0x9b84, /*0xd8-0xdf*/
+ 0xe3f6, 0xc5dd, 0xb2a8, 0xc6fc, 0x9b85, 0xc4e0, 0x9b86, 0x9b87, /*0xe0-0xe7*/
+ 0xd7a2, 0x9b88, 0xc0e1, 0xe3f9, 0x9b89, 0x9b8a, 0xe3fa, 0xe3fd, /*0xe8-0xef*/
+ 0xcca9, 0xe3f3, 0x9b8b, 0xd3be, 0x9b8c, 0xb1c3, 0xedb4, 0xe3f1, /*0xf0-0xf7*/
+ 0xe3f2, 0x9b8d, 0xe3f8, 0xd0ba, 0xc6c3, 0xd4f3, 0xe3fe, 0x9b8e, /*0xf8-0xff*/
+ /* 0x6d00 */
+ 0x9b8f, 0xbde0, 0x9b90, 0x9b91, 0xe4a7, 0x9b92, 0x9b93, 0xe4a6, /*0x00-0x07*/
+ 0x9b94, 0x9b95, 0x9b96, 0xd1f3, 0xe4a3, 0x9b97, 0xe4a9, 0x9b98, /*0x08-0x0f*/
+ 0x9b99, 0x9b9a, 0xc8f7, 0x9b9b, 0x9b9c, 0x9b9d, 0x9b9e, 0xcfb4, /*0x10-0x17*/
+ 0x9b9f, 0xe4a8, 0xe4ae, 0xc2e5, 0x9ba0, 0x9ba1, 0xb6b4, 0x9ba2, /*0x18-0x1f*/
+ 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0xbdf2, 0x9ba8, 0xe4a2, /*0x20-0x27*/
+ 0x9ba9, 0x9baa, 0xbae9, 0xe4aa, 0x9bab, 0x9bac, 0xe4ac, 0x9bad, /*0x28-0x2f*/
+ 0x9bae, 0xb6fd, 0xd6de, 0xe4b2, 0x9baf, 0xe4ad, 0x9bb0, 0x9bb1, /*0x30-0x37*/
+ 0x9bb2, 0xe4a1, 0x9bb3, 0xbbee, 0xcddd, 0xc7a2, 0xc5c9, 0x9bb4, /*0x38-0x3f*/
+ 0x9bb5, 0xc1f7, 0x9bb6, 0xe4a4, 0x9bb7, 0xc7b3, 0xbdac, 0xbdbd, /*0x40-0x47*/
+ 0xe4a5, 0x9bb8, 0xd7c7, 0xb2e2, 0x9bb9, 0xe4ab, 0xbcc3, 0xe4af, /*0x48-0x4f*/
+ 0x9bba, 0xbbeb, 0xe4b0, 0xc5a8, 0xe4b1, 0x9bbb, 0x9bbc, 0x9bbd, /*0x50-0x57*/
+ 0x9bbe, 0xd5e3, 0xbfa3, 0x9bbf, 0xe4ba, 0x9bc0, 0xe4b7, 0x9bc1, /*0x58-0x5f*/
+ 0xe4bb, 0x9bc2, 0x9bc3, 0xe4bd, 0x9bc4, 0x9bc5, 0xc6d6, 0x9bc6, /*0x60-0x67*/
+ 0x9bc7, 0xbac6, 0xc0cb, 0x9bc8, 0x9bc9, 0x9bca, 0xb8a1, 0xe4b4, /*0x68-0x6f*/
+ 0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0xd4a1, 0x9bcf, 0x9bd0, 0xbaa3, /*0x70-0x77*/
+ 0xbdfe, 0x9bd1, 0x9bd2, 0x9bd3, 0xe4bc, 0x9bd4, 0x9bd5, 0x9bd6, /*0x78-0x7f*/
+ 0x9bd7, 0x9bd8, 0xcdbf, 0x9bd9, 0x9bda, 0xc4f9, 0x9bdb, 0x9bdc, /*0x80-0x87*/
+ 0xcffb, 0xc9e6, 0x9bdd, 0x9bde, 0xd3bf, 0x9bdf, 0xcfd1, 0x9be0, /*0x88-0x8f*/
+ 0x9be1, 0xe4b3, 0x9be2, 0xe4b8, 0xe4b9, 0xcce9, 0x9be3, 0x9be4, /*0x90-0x97*/
+ 0x9be5, 0x9be6, 0x9be7, 0xccce, 0x9be8, 0xc0d4, 0xe4b5, 0xc1b0, /*0x98-0x9f*/
+ 0xe4b6, 0xced0, 0x9be9, 0xbbc1, 0xb5d3, 0x9bea, 0xc8f3, 0xbda7, /*0xa0-0xa7*/
+ 0xd5c7, 0xc9ac, 0xb8a2, 0xe4ca, 0x9beb, 0x9bec, 0xe4cc, 0xd1c4, /*0xa8-0xaf*/
+ 0x9bed, 0x9bee, 0xd2ba, 0x9bef, 0x9bf0, 0xbaad, 0x9bf1, 0x9bf2, /*0xb0-0xb7*/
+ 0xbad4, 0x9bf3, 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0xe4c3, /*0xb8-0xbf*/
+ 0xb5ed, 0x9bf9, 0x9bfa, 0x9bfb, 0xd7cd, 0xe4c0, 0xcffd, 0xe4bf, /*0xc0-0xc7*/
+ 0x9bfc, 0x9bfd, 0x9bfe, 0xc1dc, 0xccca, 0x9c40, 0x9c41, 0x9c42, /*0xc8-0xcf*/
+ 0x9c43, 0xcae7, 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0xc4d7, 0x9c48, /*0xd0-0xd7*/
+ 0xccd4, 0xe4c8, 0x9c49, 0x9c4a, 0x9c4b, 0xe4c7, 0xe4c1, 0x9c4c, /*0xd8-0xdf*/
+ 0xe4c4, 0xb5ad, 0x9c4d, 0x9c4e, 0xd3d9, 0x9c4f, 0xe4c6, 0x9c50, /*0xe0-0xe7*/
+ 0x9c51, 0x9c52, 0x9c53, 0xd2f9, 0xb4e3, 0x9c54, 0xbbb4, 0x9c55, /*0xe8-0xef*/
+ 0x9c56, 0xc9ee, 0x9c57, 0xb4be, 0x9c58, 0x9c59, 0x9c5a, 0xbbec, /*0xf0-0xf7*/
+ 0x9c5b, 0xd1cd, 0x9c5c, 0xcced, 0xedb5, 0x9c5d, 0x9c5e, 0x9c5f, /*0xf8-0xff*/
+ /* 0x6e00 */
+ 0x9c60, 0x9c61, 0x9c62, 0x9c63, 0x9c64, 0xc7e5, 0x9c65, 0x9c66, /*0x00-0x07*/
+ 0x9c67, 0x9c68, 0xd4a8, 0x9c69, 0xe4cb, 0xd7d5, 0xe4c2, 0x9c6a, /*0x08-0x0f*/
+ 0xbda5, 0xe4c5, 0x9c6b, 0x9c6c, 0xd3e6, 0x9c6d, 0xe4c9, 0xc9f8, /*0x10-0x17*/
+ 0x9c6e, 0x9c6f, 0xe4be, 0x9c70, 0x9c71, 0xd3e5, 0x9c72, 0x9c73, /*0x18-0x1f*/
+ 0xc7fe, 0xb6c9, 0x9c74, 0xd4fc, 0xb2b3, 0xe4d7, 0x9c75, 0x9c76, /*0x20-0x27*/
+ 0x9c77, 0xcec2, 0x9c78, 0xe4cd, 0x9c79, 0xcebc, 0x9c7a, 0xb8db, /*0x28-0x2f*/
+ 0x9c7b, 0x9c7c, 0xe4d6, 0x9c7d, 0xbfca, 0x9c7e, 0x9c80, 0x9c81, /*0x30-0x37*/
+ 0xd3ce, 0x9c82, 0xc3ec, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87, /*0x38-0x3f*/
+ 0x9c88, 0x9c89, 0x9c8a, 0xc5c8, 0xe4d8, 0x9c8b, 0x9c8c, 0x9c8d, /*0x40-0x47*/
+ 0x9c8e, 0x9c8f, 0x9c90, 0x9c91, 0x9c92, 0xcdc4, 0xe4cf, 0x9c93, /*0x48-0x4f*/
+ 0x9c94, 0x9c95, 0x9c96, 0xe4d4, 0xe4d5, 0x9c97, 0xbafe, 0x9c98, /*0x50-0x57*/
+ 0xcfe6, 0x9c99, 0x9c9a, 0xd5bf, 0x9c9b, 0x9c9c, 0x9c9d, 0xe4d2, /*0x58-0x5f*/
+ 0x9c9e, 0x9c9f, 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, /*0x60-0x67*/
+ 0x9ca6, 0x9ca7, 0x9ca8, 0xe4d0, 0x9ca9, 0x9caa, 0xe4ce, 0x9cab, /*0x68-0x6f*/
+ 0x9cac, 0x9cad, 0x9cae, 0x9caf, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, /*0x70-0x77*/
+ 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cb8, 0x9cb9, 0xcde5, 0xcaaa, /*0x78-0x7f*/
+ 0x9cba, 0x9cbb, 0x9cbc, 0xc0a3, 0x9cbd, 0xbda6, 0xe4d3, 0x9cbe, /*0x80-0x87*/
+ 0x9cbf, 0xb8c8, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0xe4e7, /*0x88-0x8f*/
+ 0xd4b4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, /*0x90-0x97*/
+ 0xe4db, 0x9ccc, 0x9ccd, 0x9cce, 0xc1ef, 0x9ccf, 0x9cd0, 0xe4e9, /*0x98-0x9f*/
+ 0x9cd1, 0x9cd2, 0xd2e7, 0x9cd3, 0x9cd4, 0xe4df, 0x9cd5, 0xe4e0, /*0xa0-0xa7*/
+ 0x9cd6, 0x9cd7, 0xcfaa, 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0xcbdd, /*0xa8-0xaf*/
+ 0x9cdc, 0xe4da, 0xe4d1, 0x9cdd, 0xe4e5, 0x9cde, 0xc8dc, 0xe4e3, /*0xb0-0xb7*/
+ 0x9cdf, 0x9ce0, 0xc4e7, 0xe4e2, 0x9ce1, 0xe4e1, 0x9ce2, 0x9ce3, /*0xb8-0xbf*/
+ 0x9ce4, 0xb3fc, 0xe4e8, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0xb5e1, /*0xc0-0xc7*/
+ 0x9ce9, 0x9cea, 0x9ceb, 0xd7cc, 0x9cec, 0x9ced, 0x9cee, 0xe4e6, /*0xc8-0xcf*/
+ 0x9cef, 0xbbac, 0x9cf0, 0xd7d2, 0xcccf, 0xebf8, 0x9cf1, 0xe4e4, /*0xd0-0xd7*/
+ 0x9cf2, 0x9cf3, 0xb9f6, 0x9cf4, 0x9cf5, 0x9cf6, 0xd6cd, 0xe4d9, /*0xd8-0xdf*/
+ 0xe4dc, 0xc2fa, 0xe4de, 0x9cf7, 0xc2cb, 0xc0c4, 0xc2d0, 0x9cf8, /*0xe0-0xe7*/
+ 0xb1f5, 0xccb2, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, /*0xe8-0xef*/
+ 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0xb5ce, 0x9d44, 0x9d45, 0x9d46, /*0xf0-0xf7*/
+ 0x9d47, 0xe4ef, 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, /*0xf8-0xff*/
+ /* 0x6f00 */
+ 0x9d4e, 0x9d4f, 0xc6af, 0x9d50, 0x9d51, 0x9d52, 0xc6e1, 0x9d53, /*0x00-0x07*/
+ 0x9d54, 0xe4f5, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0xc2a9, /*0x08-0x0f*/
+ 0x9d5a, 0x9d5b, 0x9d5c, 0xc0ec, 0xd1dd, 0xe4ee, 0x9d5d, 0x9d5e, /*0x10-0x17*/
+ 0x9d5f, 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, /*0x18-0x1f*/
+ 0xc4ae, 0x9d67, 0x9d68, 0x9d69, 0xe4ed, 0x9d6a, 0x9d6b, 0x9d6c, /*0x20-0x27*/
+ 0x9d6d, 0xe4f6, 0xe4f4, 0xc2fe, 0x9d6e, 0xe4dd, 0x9d6f, 0xe4f0, /*0x28-0x2f*/
+ 0x9d70, 0xcafe, 0x9d71, 0xd5c4, 0x9d72, 0x9d73, 0xe4f1, 0x9d74, /*0x30-0x37*/
+ 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a, 0xd1fa, 0x9d7b, /*0x38-0x3f*/
+ 0x9d7c, 0x9d7d, 0x9d7e, 0x9d80, 0x9d81, 0x9d82, 0xe4eb, 0xe4ec, /*0x40-0x47*/
+ 0x9d83, 0x9d84, 0x9d85, 0xe4f2, 0x9d86, 0xceab, 0x9d87, 0x9d88, /*0x48-0x4f*/
+ 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, /*0x50-0x57*/
+ 0xc5cb, 0x9d91, 0x9d92, 0x9d93, 0xc7b1, 0x9d94, 0xc2ba, 0x9d95, /*0x58-0x5f*/
+ 0x9d96, 0x9d97, 0xe4ea, 0x9d98, 0x9d99, 0x9d9a, 0xc1ca, 0x9d9b, /*0x60-0x67*/
+ 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0xccb6, 0xb3b1, 0x9da1, /*0x68-0x6f*/
+ 0x9da2, 0x9da3, 0xe4fb, 0x9da4, 0xe4f3, 0x9da5, 0x9da6, 0x9da7, /*0x70-0x77*/
+ 0xe4fa, 0x9da8, 0xe4fd, 0x9da9, 0xe4fc, 0x9daa, 0x9dab, 0x9dac, /*0x78-0x7f*/
+ 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0xb3ce, 0x9db1, 0x9db2, 0x9db3, /*0x80-0x87*/
+ 0xb3ba, 0xe4f7, 0x9db4, 0x9db5, 0xe4f9, 0xe4f8, 0xc5ec, 0x9db6, /*0x88-0x8f*/
+ 0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, /*0x90-0x97*/
+ 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2, 0xc0bd, 0x9dc3, 0x9dc4, 0x9dc5, /*0x98-0x9f*/
+ 0x9dc6, 0xd4e8, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca, 0x9dcb, 0xe5a2, /*0xa0-0xa7*/
+ 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2, 0x9dd3, /*0xa8-0xaf*/
+ 0x9dd4, 0x9dd5, 0x9dd6, 0xb0c4, 0x9dd7, 0x9dd8, 0xe5a4, 0x9dd9, /*0xb0-0xb7*/
+ 0x9dda, 0xe5a3, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, /*0xb8-0xbf*/
+ 0xbca4, 0x9de1, 0xe5a5, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, /*0xc0-0xc7*/
+ 0x9de7, 0xe5a1, 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, 0x9ded, /*0xc8-0xcf*/
+ 0x9dee, 0xe4fe, 0xb1f4, 0x9def, 0x9df0, 0x9df1, 0x9df2, 0x9df3, /*0xd0-0xd7*/
+ 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0xe5a8, 0x9dfa, /*0xd8-0xdf*/
+ 0xe5a9, 0xe5a6, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9e40, 0x9e41, /*0xe0-0xe7*/
+ 0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0xe5a7, 0xe5aa, /*0xe8-0xef*/
+ 0x9e48, 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, /*0xf0-0xf7*/
+ 0x9e50, 0x9e51, 0x9e52, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, /*0xf8-0xff*/
+ /* 0x7000 */
+ 0x9e58, 0x9e59, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f, /*0x00-0x07*/
+ 0x9e60, 0x9e61, 0x9e62, 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67, /*0x08-0x0f*/
+ 0x9e68, 0xc6d9, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, /*0x10-0x17*/
+ 0x9e6f, 0x9e70, 0xe5ab, 0xe5ad, 0x9e71, 0x9e72, 0x9e73, 0x9e74, /*0x18-0x1f*/
+ 0x9e75, 0x9e76, 0x9e77, 0xe5ac, 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, /*0x20-0x27*/
+ 0x9e7c, 0x9e7d, 0x9e7e, 0x9e80, 0x9e81, 0x9e82, 0x9e83, 0x9e84, /*0x28-0x2f*/
+ 0x9e85, 0x9e86, 0x9e87, 0x9e88, 0x9e89, 0xe5af, 0x9e8a, 0x9e8b, /*0x30-0x37*/
+ 0x9e8c, 0xe5ae, 0x9e8d, 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e92, /*0x38-0x3f*/
+ 0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97, 0x9e98, 0x9e99, 0x9e9a, /*0x40-0x47*/
+ 0x9e9b, 0x9e9c, 0x9e9d, 0x9e9e, 0xb9e0, 0x9e9f, 0x9ea0, 0xe5b0, /*0x48-0x4f*/
+ 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, /*0x50-0x57*/
+ 0x9ea9, 0x9eaa, 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0xe5b1, 0x9eaf, /*0x58-0x5f*/
+ 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4, 0x9eb5, 0x9eb6, 0x9eb7, /*0x60-0x67*/
+ 0x9eb8, 0x9eb9, 0x9eba, 0xbbf0, 0xece1, 0xc3f0, 0x9ebb, 0xb5c6, /*0x68-0x6f*/
+ 0xbbd2, 0x9ebc, 0x9ebd, 0x9ebe, 0x9ebf, 0xc1e9, 0xd4ee, 0x9ec0, /*0x70-0x77*/
+ 0xbec4, 0x9ec1, 0x9ec2, 0x9ec3, 0xd7c6, 0x9ec4, 0xd4d6, 0xb2d3, /*0x78-0x7f*/
+ 0xecbe, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0xeac1, 0x9ec9, 0x9eca, /*0x80-0x87*/
+ 0x9ecb, 0xc2af, 0xb4b6, 0x9ecc, 0x9ecd, 0x9ece, 0xd1d7, 0x9ecf, /*0x88-0x8f*/
+ 0x9ed0, 0x9ed1, 0xb3b4, 0x9ed2, 0xc8b2, 0xbfbb, 0xecc0, 0x9ed3, /*0x90-0x97*/
+ 0x9ed4, 0xd6cb, 0x9ed5, 0x9ed6, 0xecbf, 0xecc1, 0x9ed7, 0x9ed8, /*0x98-0x9f*/
+ 0x9ed9, 0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ede, 0x9edf, 0x9ee0, /*0xa0-0xa7*/
+ 0x9ee1, 0x9ee2, 0x9ee3, 0xecc5, 0xbee6, 0xccbf, 0xc5da, 0xbebc, /*0xa8-0xaf*/
+ 0x9ee4, 0xecc6, 0x9ee5, 0xb1fe, 0x9ee6, 0x9ee7, 0x9ee8, 0xecc4, /*0xb0-0xb7*/
+ 0xd5a8, 0xb5e3, 0x9ee9, 0xecc2, 0xc1b6, 0xb3e3, 0x9eea, 0x9eeb, /*0xb8-0xbf*/
+ 0xecc3, 0xcbb8, 0xc0c3, 0xccfe, 0x9eec, 0x9eed, 0x9eee, 0x9eef, /*0xc0-0xc7*/
+ 0xc1d2, 0x9ef0, 0xecc8, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4, 0x9ef5, /*0xc8-0xcf*/
+ 0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd, /*0xd0-0xd7*/
+ 0xbae6, 0xc0d3, 0x9efe, 0xd6f2, 0x9f40, 0x9f41, 0x9f42, 0xd1cc, /*0xd8-0xdf*/
+ 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0xbfbe, 0x9f47, 0xb7b3, 0xc9d5, /*0xe0-0xe7*/
+ 0xecc7, 0xbbe2, 0x9f48, 0xcccc, 0xbdfd, 0xc8c8, 0x9f49, 0xcfa9, /*0xe8-0xef*/
+ 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f50, 0xcde9, /*0xf0-0xf7*/
+ 0x9f51, 0xc5eb, 0x9f52, 0x9f53, 0x9f54, 0xb7e9, 0x9f55, 0x9f56, /*0xf8-0xff*/
+ /* 0x7100 */
+ 0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, /*0x00-0x07*/
+ 0x9f5f, 0xd1c9, 0xbab8, 0x9f60, 0x9f61, 0x9f62, 0x9f63, 0x9f64, /*0x08-0x0f*/
+ 0xecc9, 0x9f65, 0x9f66, 0xecca, 0x9f67, 0xbbc0, 0xeccb, 0x9f68, /*0x10-0x17*/
+ 0xece2, 0xb1ba, 0xb7d9, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, /*0x18-0x1f*/
+ 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0xbdb9, 0x9f74, /*0x20-0x27*/
+ 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0xeccc, /*0x28-0x2f*/
+ 0xd1e6, 0xeccd, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f80, 0xc8bb, 0x9f81, /*0x30-0x37*/
+ 0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, 0x9f88, 0x9f89, /*0x38-0x3f*/
+ 0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0xecd1, 0x9f8f, 0x9f90, /*0x40-0x47*/
+ 0x9f91, 0x9f92, 0xecd3, 0x9f93, 0xbbcd, 0x9f94, 0xbce5, 0x9f95, /*0x48-0x4f*/
+ 0x9f96, 0x9f97, 0x9f98, 0x9f99, 0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d, /*0x50-0x57*/
+ 0x9f9e, 0x9f9f, 0x9fa0, 0x9fa1, 0xeccf, 0x9fa2, 0xc9b7, 0x9fa3, /*0x58-0x5f*/
+ 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7, 0xc3ba, 0x9fa8, 0xece3, 0xd5d5, /*0x60-0x67*/
+ 0xecd0, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0xd6f3, 0x9fae, /*0x68-0x6f*/
+ 0x9faf, 0x9fb0, 0xecd2, 0xecce, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, /*0x70-0x77*/
+ 0xecd4, 0x9fb5, 0xecd5, 0x9fb6, 0x9fb7, 0xc9bf, 0x9fb8, 0x9fb9, /*0x78-0x7f*/
+ 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0xcfa8, 0x9fbe, 0x9fbf, 0x9fc0, /*0x80-0x87*/
+ 0x9fc1, 0x9fc2, 0xd0dc, 0x9fc3, 0x9fc4, 0x9fc5, 0x9fc6, 0xd1ac, /*0x88-0x8f*/
+ 0x9fc7, 0x9fc8, 0x9fc9, 0x9fca, 0xc8db, 0x9fcb, 0x9fcc, 0x9fcd, /*0x90-0x97*/
+ 0xecd6, 0xcef5, 0x9fce, 0x9fcf, 0x9fd0, 0x9fd1, 0x9fd2, 0xcaec, /*0x98-0x9f*/
+ 0xecda, 0x9fd3, 0x9fd4, 0x9fd5, 0x9fd6, 0x9fd7, 0x9fd8, 0x9fd9, /*0xa0-0xa7*/
+ 0xecd9, 0x9fda, 0x9fdb, 0x9fdc, 0xb0be, 0x9fdd, 0x9fde, 0x9fdf, /*0xa8-0xaf*/
+ 0x9fe0, 0x9fe1, 0x9fe2, 0xecd7, 0x9fe3, 0xecd8, 0x9fe4, 0x9fe5, /*0xb0-0xb7*/
+ 0x9fe6, 0xece4, 0x9fe7, 0x9fe8, 0x9fe9, 0x9fea, 0x9feb, 0x9fec, /*0xb8-0xbf*/
+ 0x9fed, 0x9fee, 0x9fef, 0xc8bc, 0x9ff0, 0x9ff1, 0x9ff2, 0x9ff3, /*0xc0-0xc7*/
+ 0x9ff4, 0x9ff5, 0x9ff6, 0x9ff7, 0x9ff8, 0x9ff9, 0xc1c7, 0x9ffa, /*0xc8-0xcf*/
+ 0x9ffb, 0x9ffc, 0x9ffd, 0x9ffe, 0xecdc, 0xd1e0, 0xa040, 0xa041, /*0xd0-0xd7*/
+ 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, 0xa048, 0xa049, /*0xd8-0xdf*/
+ 0xecdb, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xd4ef, 0xa04e, 0xecdd, /*0xe0-0xe7*/
+ 0xa04f, 0xa050, 0xa051, 0xa052, 0xa053, 0xa054, 0xdbc6, 0xa055, /*0xe8-0xef*/
+ 0xa056, 0xa057, 0xa058, 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, /*0xf0-0xf7*/
+ 0xa05e, 0xecde, 0xa05f, 0xa060, 0xa061, 0xa062, 0xa063, 0xa064, /*0xf8-0xff*/
+ /* 0x7200 */
+ 0xa065, 0xa066, 0xa067, 0xa068, 0xa069, 0xa06a, 0xb1ac, 0xa06b, /*0x00-0x07*/
+ 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070, 0xa071, 0xa072, 0xa073, /*0x08-0x0f*/
+ 0xa074, 0xa075, 0xa076, 0xa077, 0xa078, 0xa079, 0xa07a, 0xa07b, /*0x10-0x17*/
+ 0xa07c, 0xa07d, 0xa07e, 0xa080, 0xa081, 0xecdf, 0xa082, 0xa083, /*0x18-0x1f*/
+ 0xa084, 0xa085, 0xa086, 0xa087, 0xa088, 0xa089, 0xa08a, 0xa08b, /*0x20-0x27*/
+ 0xece0, 0xa08c, 0xd7a6, 0xa08d, 0xc5c0, 0xa08e, 0xa08f, 0xa090, /*0x28-0x2f*/
+ 0xebbc, 0xb0ae, 0xa091, 0xa092, 0xa093, 0xbef4, 0xb8b8, 0xd2af, /*0x30-0x37*/
+ 0xb0d6, 0xb5f9, 0xa094, 0xd8b3, 0xa095, 0xcbac, 0xa096, 0xe3dd, /*0x38-0x3f*/
+ 0xa097, 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d, 0xc6ac, /*0x40-0x47*/
+ 0xb0e6, 0xa09e, 0xa09f, 0xa0a0, 0xc5c6, 0xebb9, 0xa0a1, 0xa0a2, /*0x48-0x4f*/
+ 0xa0a3, 0xa0a4, 0xebba, 0xa0a5, 0xa0a6, 0xa0a7, 0xebbb, 0xa0a8, /*0x50-0x57*/
+ 0xa0a9, 0xd1c0, 0xa0aa, 0xc5a3, 0xa0ab, 0xeaf2, 0xa0ac, 0xc4b2, /*0x58-0x5f*/
+ 0xa0ad, 0xc4b5, 0xc0ce, 0xa0ae, 0xa0af, 0xa0b0, 0xeaf3, 0xc4c1, /*0x60-0x67*/
+ 0xa0b1, 0xceef, 0xa0b2, 0xa0b3, 0xa0b4, 0xa0b5, 0xeaf0, 0xeaf4, /*0x68-0x6f*/
+ 0xa0b6, 0xa0b7, 0xc9fc, 0xa0b8, 0xa0b9, 0xc7a3, 0xa0ba, 0xa0bb, /*0x70-0x77*/
+ 0xa0bc, 0xccd8, 0xcefe, 0xa0bd, 0xa0be, 0xa0bf, 0xeaf5, 0xeaf6, /*0x78-0x7f*/
+ 0xcfac, 0xc0e7, 0xa0c0, 0xa0c1, 0xeaf7, 0xa0c2, 0xa0c3, 0xa0c4, /*0x80-0x87*/
+ 0xa0c5, 0xa0c6, 0xb6bf, 0xeaf8, 0xa0c7, 0xeaf9, 0xa0c8, 0xeafa, /*0x88-0x8f*/
+ 0xa0c9, 0xa0ca, 0xeafb, 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, /*0x90-0x97*/
+ 0xa0d0, 0xa0d1, 0xa0d2, 0xa0d3, 0xa0d4, 0xa0d5, 0xa0d6, 0xeaf1, /*0x98-0x9f*/
+ 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, /*0xa0-0xa7*/
+ 0xa0df, 0xa0e0, 0xa0e1, 0xa0e2, 0xc8ae, 0xe1eb, 0xa0e3, 0xb7b8, /*0xa8-0xaf*/
+ 0xe1ec, 0xa0e4, 0xa0e5, 0xa0e6, 0xe1ed, 0xa0e7, 0xd7b4, 0xe1ee, /*0xb0-0xb7*/
+ 0xe1ef, 0xd3cc, 0xa0e8, 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, /*0xb8-0xbf*/
+ 0xa0ee, 0xe1f1, 0xbff1, 0xe1f0, 0xb5d2, 0xa0ef, 0xa0f0, 0xa0f1, /*0xc0-0xc7*/
+ 0xb1b7, 0xa0f2, 0xa0f3, 0xa0f4, 0xa0f5, 0xe1f3, 0xe1f2, 0xa0f6, /*0xc8-0xcf*/
+ 0xbafc, 0xa0f7, 0xe1f4, 0xa0f8, 0xa0f9, 0xa0fa, 0xa0fb, 0xb9b7, /*0xd0-0xd7*/
+ 0xa0fc, 0xbed1, 0xa0fd, 0xa0fe, 0xaa40, 0xaa41, 0xc4fc, 0xaa42, /*0xd8-0xdf*/
+ 0xbadd, 0xbdc6, 0xaa43, 0xaa44, 0xaa45, 0xaa46, 0xaa47, 0xaa48, /*0xe0-0xe7*/
+ 0xe1f5, 0xe1f7, 0xaa49, 0xaa4a, 0xb6c0, 0xcfc1, 0xcaa8, 0xe1f6, /*0xe8-0xef*/
+ 0xd5f8, 0xd3fc, 0xe1f8, 0xe1fc, 0xe1f9, 0xaa4b, 0xaa4c, 0xe1fa, /*0xf0-0xf7*/
+ 0xc0ea, 0xaa4d, 0xe1fe, 0xe2a1, 0xc0c7, 0xaa4e, 0xaa4f, 0xaa50, /*0xf8-0xff*/
+ /* 0x7300 */
+ 0xaa51, 0xe1fb, 0xaa52, 0xe1fd, 0xaa53, 0xaa54, 0xaa55, 0xaa56, /*0x00-0x07*/
+ 0xaa57, 0xaa58, 0xe2a5, 0xaa59, 0xaa5a, 0xaa5b, 0xc1d4, 0xaa5c, /*0x08-0x0f*/
+ 0xaa5d, 0xaa5e, 0xaa5f, 0xe2a3, 0xaa60, 0xe2a8, 0xb2fe, 0xe2a2, /*0x10-0x17*/
+ 0xaa61, 0xaa62, 0xaa63, 0xc3cd, 0xb2c2, 0xe2a7, 0xe2a6, 0xaa64, /*0x18-0x1f*/
+ 0xaa65, 0xe2a4, 0xe2a9, 0xaa66, 0xaa67, 0xe2ab, 0xaa68, 0xaa69, /*0x20-0x27*/
+ 0xaa6a, 0xd0c9, 0xd6ed, 0xc3a8, 0xe2ac, 0xaa6b, 0xcfd7, 0xaa6c, /*0x28-0x2f*/
+ 0xaa6d, 0xe2ae, 0xaa6e, 0xaa6f, 0xbaef, 0xaa70, 0xaa71, 0xe9e0, /*0x30-0x37*/
+ 0xe2ad, 0xe2aa, 0xaa72, 0xaa73, 0xaa74, 0xaa75, 0xbbab, 0xd4b3, /*0x38-0x3f*/
+ 0xaa76, 0xaa77, 0xaa78, 0xaa79, 0xaa7a, 0xaa7b, 0xaa7c, 0xaa7d, /*0x40-0x47*/
+ 0xaa7e, 0xaa80, 0xaa81, 0xaa82, 0xaa83, 0xe2b0, 0xaa84, 0xaa85, /*0x48-0x4f*/
+ 0xe2af, 0xaa86, 0xe9e1, 0xaa87, 0xaa88, 0xaa89, 0xaa8a, 0xe2b1, /*0x50-0x57*/
+ 0xaa8b, 0xaa8c, 0xaa8d, 0xaa8e, 0xaa8f, 0xaa90, 0xaa91, 0xaa92, /*0x58-0x5f*/
+ 0xe2b2, 0xaa93, 0xaa94, 0xaa95, 0xaa96, 0xaa97, 0xaa98, 0xaa99, /*0x60-0x67*/
+ 0xaa9a, 0xaa9b, 0xaa9c, 0xaa9d, 0xe2b3, 0xcca1, 0xaa9e, 0xe2b4, /*0x68-0x6f*/
+ 0xaa9f, 0xaaa0, 0xab40, 0xab41, 0xab42, 0xab43, 0xab44, 0xab45, /*0x70-0x77*/
+ 0xab46, 0xab47, 0xab48, 0xab49, 0xab4a, 0xab4b, 0xe2b5, 0xab4c, /*0x78-0x7f*/
+ 0xab4d, 0xab4e, 0xab4f, 0xab50, 0xd0fe, 0xab51, 0xab52, 0xc2ca, /*0x80-0x87*/
+ 0xab53, 0xd3f1, 0xab54, 0xcdf5, 0xab55, 0xab56, 0xe7e0, 0xab57, /*0x88-0x8f*/
+ 0xab58, 0xe7e1, 0xab59, 0xab5a, 0xab5b, 0xab5c, 0xbec1, 0xab5d, /*0x90-0x97*/
+ 0xab5e, 0xab5f, 0xab60, 0xc2ea, 0xab61, 0xab62, 0xab63, 0xe7e4, /*0x98-0x9f*/
+ 0xab64, 0xab65, 0xe7e3, 0xab66, 0xab67, 0xab68, 0xab69, 0xab6a, /*0xa0-0xa7*/
+ 0xab6b, 0xcde6, 0xab6c, 0xc3b5, 0xab6d, 0xab6e, 0xe7e2, 0xbbb7, /*0xa8-0xaf*/
+ 0xcfd6, 0xab6f, 0xc1e1, 0xe7e9, 0xab70, 0xab71, 0xab72, 0xe7e8, /*0xb0-0xb7*/
+ 0xab73, 0xab74, 0xe7f4, 0xb2a3, 0xab75, 0xab76, 0xab77, 0xab78, /*0xb8-0xbf*/
+ 0xe7ea, 0xab79, 0xe7e6, 0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab7e, /*0xc0-0xc7*/
+ 0xe7ec, 0xe7eb, 0xc9ba, 0xab80, 0xab81, 0xd5e4, 0xab82, 0xe7e5, /*0xc8-0xcf*/
+ 0xb7a9, 0xe7e7, 0xab83, 0xab84, 0xab85, 0xab86, 0xab87, 0xab88, /*0xd0-0xd7*/
+ 0xab89, 0xe7ee, 0xab8a, 0xab8b, 0xab8c, 0xab8d, 0xe7f3, 0xab8e, /*0xd8-0xdf*/
+ 0xd6e9, 0xab8f, 0xab90, 0xab91, 0xab92, 0xe7ed, 0xab93, 0xe7f2, /*0xe0-0xe7*/
+ 0xab94, 0xe7f1, 0xab95, 0xab96, 0xab97, 0xb0e0, 0xab98, 0xab99, /*0xe8-0xef*/
+ 0xab9a, 0xab9b, 0xe7f5, 0xab9c, 0xab9d, 0xab9e, 0xab9f, 0xaba0, /*0xf0-0xf7*/
+ 0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, /*0xf8-0xff*/
+ /* 0x7400 */
+ 0xac48, 0xac49, 0xac4a, 0xc7f2, 0xac4b, 0xc0c5, 0xc0ed, 0xac4c, /*0x00-0x07*/
+ 0xac4d, 0xc1f0, 0xe7f0, 0xac4e, 0xac4f, 0xac50, 0xac51, 0xe7f6, /*0x08-0x0f*/
+ 0xcbf6, 0xac52, 0xac53, 0xac54, 0xac55, 0xac56, 0xac57, 0xac58, /*0x10-0x17*/
+ 0xac59, 0xac5a, 0xe8a2, 0xe8a1, 0xac5b, 0xac5c, 0xac5d, 0xac5e, /*0x18-0x1f*/
+ 0xac5f, 0xac60, 0xd7c1, 0xac61, 0xac62, 0xe7fa, 0xe7f9, 0xac63, /*0x20-0x27*/
+ 0xe7fb, 0xac64, 0xe7f7, 0xac65, 0xe7fe, 0xac66, 0xe7fd, 0xac67, /*0x28-0x2f*/
+ 0xe7fc, 0xac68, 0xac69, 0xc1d5, 0xc7d9, 0xc5fd, 0xc5c3, 0xac6a, /*0x30-0x37*/
+ 0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xc7ed, 0xac6f, 0xac70, 0xac71, /*0x38-0x3f*/
+ 0xac72, 0xe8a3, 0xac73, 0xac74, 0xac75, 0xac76, 0xac77, 0xac78, /*0x40-0x47*/
+ 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac80, 0xac81, /*0x48-0x4f*/
+ 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xe8a6, 0xac87, 0xe8a5, /*0x50-0x57*/
+ 0xac88, 0xe8a7, 0xbaf7, 0xe7f8, 0xe8a4, 0xac89, 0xc8f0, 0xc9aa, /*0x58-0x5f*/
+ 0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, 0xac91, /*0x60-0x67*/
+ 0xac92, 0xac93, 0xac94, 0xac95, 0xac96, 0xe8a9, 0xac97, 0xac98, /*0x68-0x6f*/
+ 0xb9e5, 0xac99, 0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xd1fe, 0xe8a8, /*0x70-0x77*/
+ 0xac9e, 0xac9f, 0xaca0, 0xad40, 0xad41, 0xad42, 0xe8aa, 0xad43, /*0x78-0x7f*/
+ 0xe8ad, 0xe8ae, 0xad44, 0xc1a7, 0xad45, 0xad46, 0xad47, 0xe8af, /*0x80-0x87*/
+ 0xad48, 0xad49, 0xad4a, 0xe8b0, 0xad4b, 0xad4c, 0xe8ac, 0xad4d, /*0x88-0x8f*/
+ 0xe8b4, 0xad4e, 0xad4f, 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, /*0x90-0x97*/
+ 0xad55, 0xad56, 0xad57, 0xad58, 0xe8ab, 0xad59, 0xe8b1, 0xad5a, /*0x98-0x9f*/
+ 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, 0xad60, 0xad61, 0xe8b5, /*0xa0-0xa7*/
+ 0xe8b2, 0xe8b3, 0xad62, 0xad63, 0xad64, 0xad65, 0xad66, 0xad67, /*0xa8-0xaf*/
+ 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, 0xad6d, 0xad6e, 0xad6f, /*0xb0-0xb7*/
+ 0xad70, 0xad71, 0xe8b7, 0xad72, 0xad73, 0xad74, 0xad75, 0xad76, /*0xb8-0xbf*/
+ 0xad77, 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d, 0xad7e, /*0xc0-0xc7*/
+ 0xad80, 0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, /*0xc8-0xcf*/
+ 0xad88, 0xad89, 0xe8b6, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, /*0xd0-0xd7*/
+ 0xad8f, 0xad90, 0xad91, 0xad92, 0xb9cf, 0xad93, 0xf0ac, 0xad94, /*0xd8-0xdf*/
+ 0xf0ad, 0xad95, 0xc6b0, 0xb0ea, 0xc8bf, 0xad96, 0xcddf, 0xad97, /*0xe0-0xe7*/
+ 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xcecd, 0xeab1, /*0xe8-0xef*/
+ 0xad9e, 0xad9f, 0xada0, 0xae40, 0xeab2, 0xae41, 0xc6bf, 0xb4c9, /*0xf0-0xf7*/
+ 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, 0xae48, 0xeab3, /*0xf8-0xff*/
+ /* 0x7500 */
+ 0xae49, 0xae4a, 0xae4b, 0xae4c, 0xd5e7, 0xae4d, 0xae4e, 0xae4f, /*0x00-0x07*/
+ 0xae50, 0xae51, 0xae52, 0xae53, 0xae54, 0xddf9, 0xae55, 0xeab4, /*0x08-0x0f*/
+ 0xae56, 0xeab5, 0xae57, 0xeab6, 0xae58, 0xae59, 0xae5a, 0xae5b, /*0x10-0x17*/
+ 0xb8ca, 0xdfb0, 0xc9f5, 0xae5c, 0xccf0, 0xae5d, 0xae5e, 0xc9fa, /*0x18-0x1f*/
+ 0xae5f, 0xae60, 0xae61, 0xae62, 0xae63, 0xc9fb, 0xae64, 0xae65, /*0x20-0x27*/
+ 0xd3c3, 0xcba6, 0xae66, 0xb8a6, 0xf0ae, 0xb1c2, 0xae67, 0xe5b8, /*0x28-0x2f*/
+ 0xccef, 0xd3c9, 0xbcd7, 0xc9ea, 0xae68, 0xb5e7, 0xae69, 0xc4d0, /*0x30-0x37*/
+ 0xb5e9, 0xae6a, 0xeeae, 0xbbad, 0xae6b, 0xae6c, 0xe7de, 0xae6d, /*0x38-0x3f*/
+ 0xeeaf, 0xae6e, 0xae6f, 0xae70, 0xae71, 0xb3a9, 0xae72, 0xae73, /*0x40-0x47*/
+ 0xeeb2, 0xae74, 0xae75, 0xeeb1, 0xbde7, 0xae76, 0xeeb0, 0xceb7, /*0x48-0x4f*/
+ 0xae77, 0xae78, 0xae79, 0xae7a, 0xc5cf, 0xae7b, 0xae7c, 0xae7d, /*0x50-0x57*/
+ 0xae7e, 0xc1f4, 0xdbce, 0xeeb3, 0xd0f3, 0xae80, 0xae81, 0xae82, /*0x58-0x5f*/
+ 0xae83, 0xae84, 0xae85, 0xae86, 0xae87, 0xc2d4, 0xc6e8, 0xae88, /*0x60-0x67*/
+ 0xae89, 0xae8a, 0xb7ac, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, /*0x68-0x6f*/
+ 0xae90, 0xae91, 0xeeb4, 0xae92, 0xb3eb, 0xae93, 0xae94, 0xae95, /*0x70-0x77*/
+ 0xbbfb, 0xeeb5, 0xae96, 0xae97, 0xae98, 0xae99, 0xae9a, 0xe7dc, /*0x78-0x7f*/
+ 0xae9b, 0xae9c, 0xae9d, 0xeeb6, 0xae9e, 0xae9f, 0xbdae, 0xaea0, /*0x80-0x87*/
+ 0xaf40, 0xaf41, 0xaf42, 0xf1e2, 0xaf43, 0xaf44, 0xaf45, 0xcae8, /*0x88-0x8f*/
+ 0xaf46, 0xd2c9, 0xf0da, 0xaf47, 0xf0db, 0xaf48, 0xf0dc, 0xc1c6, /*0x90-0x97*/
+ 0xaf49, 0xb8ed, 0xbece, 0xaf4a, 0xaf4b, 0xf0de, 0xaf4c, 0xc5b1, /*0x98-0x9f*/
+ 0xf0dd, 0xd1f1, 0xaf4d, 0xf0e0, 0xb0cc, 0xbdea, 0xaf4e, 0xaf4f, /*0xa0-0xa7*/
+ 0xaf50, 0xaf51, 0xaf52, 0xd2df, 0xf0df, 0xaf53, 0xb4af, 0xb7e8, /*0xa8-0xaf*/
+ 0xf0e6, 0xf0e5, 0xc6a3, 0xf0e1, 0xf0e2, 0xb4c3, 0xaf54, 0xaf55, /*0xb0-0xb7*/
+ 0xf0e3, 0xd5ee, 0xaf56, 0xaf57, 0xccdb, 0xbed2, 0xbcb2, 0xaf58, /*0xb8-0xbf*/
+ 0xaf59, 0xaf5a, 0xf0e8, 0xf0e7, 0xf0e4, 0xb2a1, 0xaf5b, 0xd6a2, /*0xc0-0xc7*/
+ 0xd3b8, 0xbeb7, 0xc8ac, 0xaf5c, 0xaf5d, 0xf0ea, 0xaf5e, 0xaf5f, /*0xc8-0xcf*/
+ 0xaf60, 0xaf61, 0xd1f7, 0xaf62, 0xd6cc, 0xbadb, 0xf0e9, 0xaf63, /*0xd0-0xd7*/
+ 0xb6bb, 0xaf64, 0xaf65, 0xcdb4, 0xaf66, 0xaf67, 0xc6a6, 0xaf68, /*0xd8-0xdf*/
+ 0xaf69, 0xaf6a, 0xc1a1, 0xf0eb, 0xf0ee, 0xaf6b, 0xf0ed, 0xf0f0, /*0xe0-0xe7*/
+ 0xf0ec, 0xaf6c, 0xbbbe, 0xf0ef, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, /*0xe8-0xef*/
+ 0xccb5, 0xf0f2, 0xaf71, 0xaf72, 0xb3d5, 0xaf73, 0xaf74, 0xaf75, /*0xf0-0xf7*/
+ 0xaf76, 0xb1d4, 0xaf77, 0xaf78, 0xf0f3, 0xaf79, 0xaf7a, 0xf0f4, /*0xf8-0xff*/
+ /* 0x7600 */
+ 0xf0f6, 0xb4e1, 0xaf7b, 0xf0f1, 0xaf7c, 0xf0f7, 0xaf7d, 0xaf7e, /*0x00-0x07*/
+ 0xaf80, 0xaf81, 0xf0fa, 0xaf82, 0xf0f8, 0xaf83, 0xaf84, 0xaf85, /*0x08-0x0f*/
+ 0xf0f5, 0xaf86, 0xaf87, 0xaf88, 0xaf89, 0xf0fd, 0xaf8a, 0xf0f9, /*0x10-0x17*/
+ 0xf0fc, 0xf0fe, 0xaf8b, 0xf1a1, 0xaf8c, 0xaf8d, 0xaf8e, 0xcec1, /*0x18-0x1f*/
+ 0xf1a4, 0xaf8f, 0xf1a3, 0xaf90, 0xc1f6, 0xf0fb, 0xcadd, 0xaf91, /*0x20-0x27*/
+ 0xaf92, 0xb4f1, 0xb1f1, 0xccb1, 0xaf93, 0xf1a6, 0xaf94, 0xaf95, /*0x28-0x2f*/
+ 0xf1a7, 0xaf96, 0xaf97, 0xf1ac, 0xd5ce, 0xf1a9, 0xaf98, 0xaf99, /*0x30-0x37*/
+ 0xc8b3, 0xaf9a, 0xaf9b, 0xaf9c, 0xf1a2, 0xaf9d, 0xf1ab, 0xf1a8, /*0x38-0x3f*/
+ 0xf1a5, 0xaf9e, 0xaf9f, 0xf1aa, 0xafa0, 0xb040, 0xb041, 0xb042, /*0x40-0x47*/
+ 0xb043, 0xb044, 0xb045, 0xb046, 0xb0a9, 0xf1ad, 0xb047, 0xb048, /*0x48-0x4f*/
+ 0xb049, 0xb04a, 0xb04b, 0xb04c, 0xf1af, 0xb04d, 0xf1b1, 0xb04e, /*0x50-0x57*/
+ 0xb04f, 0xb050, 0xb051, 0xb052, 0xf1b0, 0xb053, 0xf1ae, 0xb054, /*0x58-0x5f*/
+ 0xb055, 0xb056, 0xb057, 0xd1a2, 0xb058, 0xb059, 0xb05a, 0xb05b, /*0x60-0x67*/
+ 0xb05c, 0xb05d, 0xb05e, 0xf1b2, 0xb05f, 0xb060, 0xb061, 0xf1b3, /*0x68-0x6f*/
+ 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, 0xb069, /*0x70-0x77*/
+ 0xb9ef, 0xb06a, 0xb06b, 0xb5c7, 0xb06c, 0xb0d7, 0xb0d9, 0xb06d, /*0x78-0x7f*/
+ 0xb06e, 0xb06f, 0xd4ed, 0xb070, 0xb5c4, 0xb071, 0xbdd4, 0xbbca, /*0x80-0x87*/
+ 0xf0a7, 0xb072, 0xb073, 0xb8de, 0xb074, 0xb075, 0xf0a8, 0xb076, /*0x88-0x8f*/
+ 0xb077, 0xb0a8, 0xb078, 0xf0a9, 0xb079, 0xb07a, 0xcdee, 0xb07b, /*0x90-0x97*/
+ 0xb07c, 0xf0aa, 0xb07d, 0xb07e, 0xb080, 0xb081, 0xb082, 0xb083, /*0x98-0x9f*/
+ 0xb084, 0xb085, 0xb086, 0xb087, 0xf0ab, 0xb088, 0xb089, 0xb08a, /*0xa0-0xa7*/
+ 0xb08b, 0xb08c, 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xc6a4, 0xb091, /*0xa8-0xaf*/
+ 0xb092, 0xd6e5, 0xf1e4, 0xb093, 0xf1e5, 0xb094, 0xb095, 0xb096, /*0xb0-0xb7*/
+ 0xb097, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xc3f3, /*0xb8-0xbf*/
+ 0xb09e, 0xb09f, 0xd3db, 0xb0a0, 0xb140, 0xd6d1, 0xc5e8, 0xb141, /*0xc0-0xc7*/
+ 0xd3af, 0xb142, 0xd2e6, 0xb143, 0xb144, 0xeec1, 0xb0bb, 0xd5b5, /*0xc8-0xcf*/
+ 0xd1ce, 0xbce0, 0xbad0, 0xb145, 0xbff8, 0xb146, 0xb8c7, 0xb5c1, /*0xd0-0xd7*/
+ 0xc5cc, 0xb147, 0xb148, 0xcaa2, 0xb149, 0xb14a, 0xb14b, 0xc3cb, /*0xd8-0xdf*/
+ 0xb14c, 0xb14d, 0xb14e, 0xb14f, 0xb150, 0xeec2, 0xb151, 0xb152, /*0xe0-0xe7*/
+ 0xb153, 0xb154, 0xb155, 0xb156, 0xb157, 0xb158, 0xc4bf, 0xb6a2, /*0xe8-0xef*/
+ 0xb159, 0xedec, 0xc3a4, 0xb15a, 0xd6b1, 0xb15b, 0xb15c, 0xb15d, /*0xf0-0xf7*/
+ 0xcfe0, 0xedef, 0xb15e, 0xb15f, 0xc5ce, 0xb160, 0xb6dc, 0xb161, /*0xf8-0xff*/
+ /* 0x7700 */
+ 0xb162, 0xcaa1, 0xb163, 0xb164, 0xeded, 0xb165, 0xb166, 0xedf0, /*0x00-0x07*/
+ 0xedf1, 0xc3bc, 0xb167, 0xbfb4, 0xb168, 0xedee, 0xb169, 0xb16a, /*0x08-0x0f*/
+ 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, 0xb170, 0xb171, 0xb172, /*0x10-0x17*/
+ 0xb173, 0xedf4, 0xedf2, 0xb174, 0xb175, 0xb176, 0xb177, 0xd5e6, /*0x18-0x1f*/
+ 0xc3df, 0xb178, 0xedf3, 0xb179, 0xb17a, 0xb17b, 0xedf6, 0xb17c, /*0x20-0x27*/
+ 0xd5a3, 0xd1a3, 0xb17d, 0xb17e, 0xb180, 0xedf5, 0xb181, 0xc3d0, /*0x28-0x2f*/
+ 0xb182, 0xb183, 0xb184, 0xb185, 0xb186, 0xedf7, 0xbff4, 0xbeec, /*0x30-0x37*/
+ 0xedf8, 0xb187, 0xccf7, 0xb188, 0xd1db, 0xb189, 0xb18a, 0xb18b, /*0x38-0x3f*/
+ 0xd7c5, 0xd5f6, 0xb18c, 0xedfc, 0xb18d, 0xb18e, 0xb18f, 0xedfb, /*0x40-0x47*/
+ 0xb190, 0xb191, 0xb192, 0xb193, 0xb194, 0xb195, 0xb196, 0xb197, /*0x48-0x4f*/
+ 0xedf9, 0xedfa, 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d, /*0x50-0x57*/
+ 0xb19e, 0xb19f, 0xedfd, 0xbea6, 0xb1a0, 0xb240, 0xb241, 0xb242, /*0x58-0x5f*/
+ 0xb243, 0xcbaf, 0xeea1, 0xb6bd, 0xb244, 0xeea2, 0xc4c0, 0xb245, /*0x60-0x67*/
+ 0xedfe, 0xb246, 0xb247, 0xbdde, 0xb2c7, 0xb248, 0xb249, 0xb24a, /*0x68-0x6f*/
+ 0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252, /*0x70-0x77*/
+ 0xb253, 0xb6c3, 0xb254, 0xb255, 0xb256, 0xeea5, 0xd8ba, 0xeea3, /*0x78-0x7f*/
+ 0xeea6, 0xb257, 0xb258, 0xb259, 0xc3e9, 0xb3f2, 0xb25a, 0xb25b, /*0x80-0x87*/
+ 0xb25c, 0xb25d, 0xb25e, 0xb25f, 0xeea7, 0xeea4, 0xcfb9, 0xb260, /*0x88-0x8f*/
+ 0xb261, 0xeea8, 0xc2f7, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, /*0x90-0x97*/
+ 0xb267, 0xb268, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xeea9, /*0x98-0x9f*/
+ 0xeeaa, 0xb26e, 0xdeab, 0xb26f, 0xb270, 0xc6b3, 0xb271, 0xc7c6, /*0xa0-0xa7*/
+ 0xb272, 0xd6f5, 0xb5c9, 0xb273, 0xcbb2, 0xb274, 0xb275, 0xb276, /*0xa8-0xaf*/
+ 0xeeab, 0xb277, 0xb278, 0xcdab, 0xb279, 0xeeac, 0xb27a, 0xb27b, /*0xb0-0xb7*/
+ 0xb27c, 0xb27d, 0xb27e, 0xd5b0, 0xb280, 0xeead, 0xb281, 0xf6c4, /*0xb8-0xbf*/
+ 0xb282, 0xb283, 0xb284, 0xb285, 0xb286, 0xb287, 0xb288, 0xb289, /*0xc0-0xc7*/
+ 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xdbc7, 0xb28f, 0xb290, /*0xc8-0xcf*/
+ 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296, 0xb297, 0xb4a3, /*0xd0-0xd7*/
+ 0xb298, 0xb299, 0xb29a, 0xc3ac, 0xf1e6, 0xb29b, 0xb29c, 0xb29d, /*0xd8-0xdf*/
+ 0xb29e, 0xb29f, 0xcab8, 0xd2d3, 0xb2a0, 0xd6aa, 0xb340, 0xeff2, /*0xe0-0xe7*/
+ 0xb341, 0xbed8, 0xb342, 0xbdc3, 0xeff3, 0xb6cc, 0xb0ab, 0xb343, /*0xe8-0xef*/
+ 0xb344, 0xb345, 0xb346, 0xcaaf, 0xb347, 0xb348, 0xedb6, 0xb349, /*0xf0-0xf7*/
+ 0xedb7, 0xb34a, 0xb34b, 0xb34c, 0xb34d, 0xcef9, 0xb7af, 0xbff3, /*0xf8-0xff*/
+ /* 0x7800 */
+ 0xedb8, 0xc2eb, 0xc9b0, 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, /*0x00-0x07*/
+ 0xb353, 0xedb9, 0xb354, 0xb355, 0xc6f6, 0xbfb3, 0xb356, 0xb357, /*0x08-0x0f*/
+ 0xb358, 0xedbc, 0xc5f8, 0xb359, 0xd1d0, 0xb35a, 0xd7a9, 0xedba, /*0x10-0x17*/
+ 0xedbb, 0xb35b, 0xd1e2, 0xb35c, 0xedbf, 0xedc0, 0xb35d, 0xedc4, /*0x18-0x1f*/
+ 0xb35e, 0xb35f, 0xb360, 0xedc8, 0xb361, 0xedc6, 0xedce, 0xd5e8, /*0x20-0x27*/
+ 0xb362, 0xedc9, 0xb363, 0xb364, 0xedc7, 0xedbe, 0xb365, 0xb366, /*0x28-0x2f*/
+ 0xc5e9, 0xb367, 0xb368, 0xb369, 0xc6c6, 0xb36a, 0xb36b, 0xc9e9, /*0x30-0x37*/
+ 0xd4d2, 0xedc1, 0xedc2, 0xedc3, 0xedc5, 0xb36c, 0xc0f9, 0xb36d, /*0x38-0x3f*/
+ 0xb4a1, 0xb36e, 0xb36f, 0xb370, 0xb371, 0xb9e8, 0xb372, 0xedd0, /*0x40-0x47*/
+ 0xb373, 0xb374, 0xb375, 0xb376, 0xedd1, 0xb377, 0xedca, 0xb378, /*0x48-0x4f*/
+ 0xedcf, 0xb379, 0xcef8, 0xb37a, 0xb37b, 0xcbb6, 0xedcc, 0xedcd, /*0x50-0x57*/
+ 0xb37c, 0xb37d, 0xb37e, 0xb380, 0xb381, 0xcff5, 0xb382, 0xb383, /*0x58-0x5f*/
+ 0xb384, 0xb385, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, /*0x60-0x67*/
+ 0xb38c, 0xb38d, 0xedd2, 0xc1f2, 0xd3b2, 0xedcb, 0xc8b7, 0xb38e, /*0x68-0x6f*/
+ 0xb38f, 0xb390, 0xb391, 0xb392, 0xb393, 0xb394, 0xb395, 0xbcef, /*0x70-0x77*/
+ 0xb396, 0xb397, 0xb398, 0xb399, 0xc5f0, 0xb39a, 0xb39b, 0xb39c, /*0x78-0x7f*/
+ 0xb39d, 0xb39e, 0xb39f, 0xb3a0, 0xb440, 0xb441, 0xb442, 0xedd6, /*0x80-0x87*/
+ 0xb443, 0xb5ef, 0xb444, 0xb445, 0xc2b5, 0xb0ad, 0xcbe9, 0xb446, /*0x88-0x8f*/
+ 0xb447, 0xb1ae, 0xb448, 0xedd4, 0xb449, 0xb44a, 0xb44b, 0xcdeb, /*0x90-0x97*/
+ 0xb5e2, 0xb44c, 0xedd5, 0xedd3, 0xedd7, 0xb44d, 0xb44e, 0xb5fa, /*0x98-0x9f*/
+ 0xb44f, 0xedd8, 0xb450, 0xedd9, 0xb451, 0xeddc, 0xb452, 0xb1cc, /*0xa0-0xa7*/
+ 0xb453, 0xb454, 0xb455, 0xb456, 0xb457, 0xb458, 0xb459, 0xb45a, /*0xa8-0xaf*/
+ 0xc5f6, 0xbcee, 0xedda, 0xccbc, 0xb2ea, 0xb45b, 0xb45c, 0xb45d, /*0xb0-0xb7*/
+ 0xb45e, 0xeddb, 0xb45f, 0xb460, 0xb461, 0xb462, 0xc4eb, 0xb463, /*0xb8-0xbf*/
+ 0xb464, 0xb4c5, 0xb465, 0xb466, 0xb467, 0xb0f5, 0xb468, 0xb469, /*0xc0-0xc7*/
+ 0xb46a, 0xeddf, 0xc0da, 0xb4e8, 0xb46b, 0xb46c, 0xb46d, 0xb46e, /*0xc8-0xcf*/
+ 0xc5cd, 0xb46f, 0xb470, 0xb471, 0xeddd, 0xbfc4, 0xb472, 0xb473, /*0xd0-0xd7*/
+ 0xb474, 0xedde, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, /*0xd8-0xdf*/
+ 0xb47b, 0xb47c, 0xb47d, 0xb47e, 0xb480, 0xb481, 0xb482, 0xb483, /*0xe0-0xe7*/
+ 0xc4a5, 0xb484, 0xb485, 0xb486, 0xede0, 0xb487, 0xb488, 0xb489, /*0xe8-0xef*/
+ 0xb48a, 0xb48b, 0xede1, 0xb48c, 0xede3, 0xb48d, 0xb48e, 0xc1d7, /*0xf0-0xf7*/
+ 0xb48f, 0xb490, 0xbbc7, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, /*0xf8-0xff*/
+ /* 0x7900 */
+ 0xb496, 0xbdb8, 0xb497, 0xb498, 0xb499, 0xede2, 0xb49a, 0xb49b, /*0x00-0x07*/
+ 0xb49c, 0xb49d, 0xb49e, 0xb49f, 0xb4a0, 0xb540, 0xb541, 0xb542, /*0x08-0x0f*/
+ 0xb543, 0xb544, 0xb545, 0xede4, 0xb546, 0xb547, 0xb548, 0xb549, /*0x10-0x17*/
+ 0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xede6, 0xb550, /*0x18-0x1f*/
+ 0xb551, 0xb552, 0xb553, 0xb554, 0xede5, 0xb555, 0xb556, 0xb557, /*0x20-0x27*/
+ 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb55e, 0xb55f, /*0x28-0x2f*/
+ 0xb560, 0xb561, 0xb562, 0xb563, 0xede7, 0xb564, 0xb565, 0xb566, /*0x30-0x37*/
+ 0xb567, 0xb568, 0xcabe, 0xecea, 0xc0f1, 0xb569, 0xc9e7, 0xb56a, /*0x38-0x3f*/
+ 0xeceb, 0xc6ee, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xecec, 0xb56f, /*0x40-0x47*/
+ 0xc6ed, 0xeced, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, /*0x48-0x4f*/
+ 0xb576, 0xb577, 0xb578, 0xecf0, 0xb579, 0xb57a, 0xd7e6, 0xecf3, /*0x50-0x57*/
+ 0xb57b, 0xb57c, 0xecf1, 0xecee, 0xecef, 0xd7a3, 0xc9f1, 0xcbee, /*0x58-0x5f*/
+ 0xecf4, 0xb57d, 0xecf2, 0xb57e, 0xb580, 0xcfe9, 0xb581, 0xecf6, /*0x60-0x67*/
+ 0xc6b1, 0xb582, 0xb583, 0xb584, 0xb585, 0xbcc0, 0xb586, 0xecf5, /*0x68-0x6f*/
+ 0xb587, 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb5bb, /*0x70-0x77*/
+ 0xbbf6, 0xb58e, 0xecf7, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593, /*0x78-0x7f*/
+ 0xd9f7, 0xbdfb, 0xb594, 0xb595, 0xc2bb, 0xecf8, 0xb596, 0xb597, /*0x80-0x87*/
+ 0xb598, 0xb599, 0xecf9, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb8a3, /*0x88-0x8f*/
+ 0xb59e, 0xb59f, 0xb5a0, 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, /*0x90-0x97*/
+ 0xb645, 0xb646, 0xecfa, 0xb647, 0xb648, 0xb649, 0xb64a, 0xb64b, /*0x98-0x9f*/
+ 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652, 0xecfb, /*0xa0-0xa7*/
+ 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659, 0xb65a, /*0xa8-0xaf*/
+ 0xb65b, 0xb65c, 0xb65d, 0xecfc, 0xb65e, 0xb65f, 0xb660, 0xb661, /*0xb0-0xb7*/
+ 0xb662, 0xd3ed, 0xd8ae, 0xc0eb, 0xb663, 0xc7dd, 0xbacc, 0xb664, /*0xb8-0xbf*/
+ 0xd0e3, 0xcbbd, 0xb665, 0xcdba, 0xb666, 0xb667, 0xb8d1, 0xb668, /*0xc0-0xc7*/
+ 0xb669, 0xb1fc, 0xb66a, 0xc7ef, 0xb66b, 0xd6d6, 0xb66c, 0xb66d, /*0xc8-0xcf*/
+ 0xb66e, 0xbfc6, 0xc3eb, 0xb66f, 0xb670, 0xeff5, 0xb671, 0xb672, /*0xd0-0xd7*/
+ 0xc3d8, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, 0xb678, 0xd7e2, /*0xd8-0xdf*/
+ 0xb679, 0xb67a, 0xb67b, 0xeff7, 0xb3d3, 0xb67c, 0xc7d8, 0xd1ed, /*0xe0-0xe7*/
+ 0xb67d, 0xd6c8, 0xb67e, 0xeff8, 0xb680, 0xeff6, 0xb681, 0xbbfd, /*0xe8-0xef*/
+ 0xb3c6, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688, /*0xf0-0xf7*/
+ 0xbdd5, 0xb689, 0xb68a, 0xd2c6, 0xb68b, 0xbbe0, 0xb68c, 0xb68d, /*0xf8-0xff*/
+ /* 0x7a00 */
+ 0xcfa1, 0xb68e, 0xeffc, 0xeffb, 0xb68f, 0xb690, 0xeff9, 0xb691, /*0x00-0x07*/
+ 0xb692, 0xb693, 0xb694, 0xb3cc, 0xb695, 0xc9d4, 0xcbb0, 0xb696, /*0x08-0x0f*/
+ 0xb697, 0xb698, 0xb699, 0xb69a, 0xeffe, 0xb69b, 0xb69c, 0xb0de, /*0x10-0x17*/
+ 0xb69d, 0xb69e, 0xd6c9, 0xb69f, 0xb6a0, 0xb740, 0xeffd, 0xb741, /*0x18-0x1f*/
+ 0xb3ed, 0xb742, 0xb743, 0xf6d5, 0xb744, 0xb745, 0xb746, 0xb747, /*0x20-0x27*/
+ 0xb748, 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, /*0x28-0x2f*/
+ 0xb750, 0xb751, 0xb752, 0xcec8, 0xb753, 0xb754, 0xb755, 0xf0a2, /*0x30-0x37*/
+ 0xb756, 0xf0a1, 0xb757, 0xb5be, 0xbcda, 0xbbfc, 0xb758, 0xb8e5, /*0x38-0x3f*/
+ 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xc4c2, 0xb75f, /*0x40-0x47*/
+ 0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766, 0xb767, /*0x48-0x4f*/
+ 0xb768, 0xf0a3, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xcbeb, /*0x50-0x57*/
+ 0xb76e, 0xb76f, 0xb770, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775, /*0x58-0x5f*/
+ 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d, /*0x60-0x67*/
+ 0xb77e, 0xb780, 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, /*0x68-0x6f*/
+ 0xf0a6, 0xb787, 0xb788, 0xb789, 0xd1a8, 0xb78a, 0xbebf, 0xc7ee, /*0x70-0x77*/
+ 0xf1b6, 0xf1b7, 0xbfd5, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb4a9, /*0x78-0x7f*/
+ 0xf1b8, 0xcdbb, 0xb78f, 0xc7d4, 0xd5ad, 0xb790, 0xf1b9, 0xb791, /*0x80-0x87*/
+ 0xf1ba, 0xb792, 0xb793, 0xb794, 0xb795, 0xc7cf, 0xb796, 0xb797, /*0x88-0x8f*/
+ 0xb798, 0xd2a4, 0xd6cf, 0xb799, 0xb79a, 0xf1bb, 0xbdd1, 0xb4b0, /*0x90-0x97*/
+ 0xbebd, 0xb79b, 0xb79c, 0xb79d, 0xb4dc, 0xced1, 0xb79e, 0xbfdf, /*0x98-0x9f*/
+ 0xf1bd, 0xb79f, 0xb7a0, 0xb840, 0xb841, 0xbffa, 0xf1bc, 0xb842, /*0xa0-0xa7*/
+ 0xf1bf, 0xb843, 0xb844, 0xb845, 0xf1be, 0xf1c0, 0xb846, 0xb847, /*0xa8-0xaf*/
+ 0xb848, 0xb849, 0xb84a, 0xf1c1, 0xb84b, 0xb84c, 0xb84d, 0xb84e, /*0xb0-0xb7*/
+ 0xb84f, 0xb850, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, 0xc1fe, /*0xb8-0xbf*/
+ 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a, 0xb85b, 0xb85c, 0xb85d, /*0xc0-0xc7*/
+ 0xb85e, 0xb85f, 0xb860, 0xc1a2, 0xb861, 0xb862, 0xb863, 0xb864, /*0xc8-0xcf*/
+ 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, 0xcafa, 0xb86b, /*0xd0-0xd7*/
+ 0xb86c, 0xd5be, 0xb86d, 0xb86e, 0xb86f, 0xb870, 0xbeba, 0xbeb9, /*0xd8-0xdf*/
+ 0xd5c2, 0xb871, 0xb872, 0xbfa2, 0xb873, 0xcdaf, 0xf1b5, 0xb874, /*0xe0-0xe7*/
+ 0xb875, 0xb876, 0xb877, 0xb878, 0xb879, 0xbddf, 0xb87a, 0xb6cb, /*0xe8-0xef*/
+ 0xb87b, 0xb87c, 0xb87d, 0xb87e, 0xb880, 0xb881, 0xb882, 0xb883, /*0xf0-0xf7*/
+ 0xb884, 0xd6f1, 0xf3c3, 0xb885, 0xb886, 0xf3c4, 0xb887, 0xb8cd, /*0xf8-0xff*/
+ /* 0x7b00 */
+ 0xb888, 0xb889, 0xb88a, 0xf3c6, 0xf3c7, 0xb88b, 0xb0ca, 0xb88c, /*0x00-0x07*/
+ 0xf3c5, 0xb88d, 0xf3c9, 0xcbf1, 0xb88e, 0xb88f, 0xb890, 0xf3cb, /*0x08-0x0f*/
+ 0xb891, 0xd0a6, 0xb892, 0xb893, 0xb1ca, 0xf3c8, 0xb894, 0xb895, /*0x10-0x17*/
+ 0xb896, 0xf3cf, 0xb897, 0xb5d1, 0xb898, 0xb899, 0xf3d7, 0xb89a, /*0x18-0x1f*/
+ 0xf3d2, 0xb89b, 0xb89c, 0xb89d, 0xf3d4, 0xf3d3, 0xb7fb, 0xb89e, /*0x20-0x27*/
+ 0xb1bf, 0xb89f, 0xf3ce, 0xf3ca, 0xb5da, 0xb8a0, 0xf3d0, 0xb940, /*0x28-0x2f*/
+ 0xb941, 0xf3d1, 0xb942, 0xf3d5, 0xb943, 0xb944, 0xb945, 0xb946, /*0x30-0x37*/
+ 0xf3cd, 0xb947, 0xbce3, 0xb948, 0xc1fd, 0xb949, 0xf3d6, 0xb94a, /*0x38-0x3f*/
+ 0xb94b, 0xb94c, 0xb94d, 0xb94e, 0xb94f, 0xf3da, 0xb950, 0xf3cc, /*0x40-0x47*/
+ 0xb951, 0xb5c8, 0xb952, 0xbdee, 0xf3dc, 0xb953, 0xb954, 0xb7a4, /*0x48-0x4f*/
+ 0xbff0, 0xd6fe, 0xcdb2, 0xb955, 0xb4f0, 0xb956, 0xb2df, 0xb957, /*0x50-0x57*/
+ 0xf3d8, 0xb958, 0xf3d9, 0xc9b8, 0xb959, 0xf3dd, 0xb95a, 0xb95b, /*0x58-0x5f*/
+ 0xf3de, 0xb95c, 0xf3e1, 0xb95d, 0xb95e, 0xb95f, 0xb960, 0xb961, /*0x60-0x67*/
+ 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xf3df, 0xb968, /*0x68-0x6f*/
+ 0xb969, 0xf3e3, 0xf3e2, 0xb96a, 0xb96b, 0xf3db, 0xb96c, 0xbfea, /*0x70-0x77*/
+ 0xb96d, 0xb3ef, 0xb96e, 0xf3e0, 0xb96f, 0xb970, 0xc7a9, 0xb971, /*0x78-0x7f*/
+ 0xbcf2, 0xb972, 0xb973, 0xb974, 0xb975, 0xf3eb, 0xb976, 0xb977, /*0x80-0x87*/
+ 0xb978, 0xb979, 0xb97a, 0xb97b, 0xb97c, 0xb9bf, 0xb97d, 0xb97e, /*0x88-0x8f*/
+ 0xf3e4, 0xb980, 0xb981, 0xb982, 0xb2ad, 0xbbfe, 0xb983, 0xcbe3, /*0x90-0x97*/
+ 0xb984, 0xb985, 0xb986, 0xb987, 0xf3ed, 0xf3e9, 0xb988, 0xb989, /*0x98-0x9f*/
+ 0xb98a, 0xb9dc, 0xf3ee, 0xb98b, 0xb98c, 0xb98d, 0xf3e5, 0xf3e6, /*0xa0-0xa7*/
+ 0xf3ea, 0xc2e1, 0xf3ec, 0xf3ef, 0xf3e8, 0xbcfd, 0xb98e, 0xb98f, /*0xa8-0xaf*/
+ 0xb990, 0xcfe4, 0xb991, 0xb992, 0xf3f0, 0xb993, 0xb994, 0xb995, /*0xb0-0xb7*/
+ 0xf3e7, 0xb996, 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, /*0xb8-0xbf*/
+ 0xb99d, 0xf3f2, 0xb99e, 0xb99f, 0xb9a0, 0xba40, 0xd7ad, 0xc6aa, /*0xc0-0xc7*/
+ 0xba41, 0xba42, 0xba43, 0xba44, 0xf3f3, 0xba45, 0xba46, 0xba47, /*0xc8-0xcf*/
+ 0xba48, 0xf3f1, 0xba49, 0xc2a8, 0xba4a, 0xba4b, 0xba4c, 0xba4d, /*0xd0-0xd7*/
+ 0xba4e, 0xb8dd, 0xf3f5, 0xba4f, 0xba50, 0xf3f4, 0xba51, 0xba52, /*0xd8-0xdf*/
+ 0xba53, 0xb4db, 0xba54, 0xba55, 0xba56, 0xf3f6, 0xf3f7, 0xba57, /*0xe0-0xe7*/
+ 0xba58, 0xba59, 0xf3f8, 0xba5a, 0xba5b, 0xba5c, 0xc0ba, 0xba5d, /*0xe8-0xef*/
+ 0xba5e, 0xc0e9, 0xba5f, 0xba60, 0xba61, 0xba62, 0xba63, 0xc5f1, /*0xf0-0xf7*/
+ 0xba64, 0xba65, 0xba66, 0xba67, 0xf3fb, 0xba68, 0xf3fa, 0xba69, /*0xf8-0xff*/
+ /* 0x7c00 */
+ 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba70, 0xb4d8, /*0x00-0x07*/
+ 0xba71, 0xba72, 0xba73, 0xf3fe, 0xf3f9, 0xba74, 0xba75, 0xf3fc, /*0x08-0x0f*/
+ 0xba76, 0xba77, 0xba78, 0xba79, 0xba7a, 0xba7b, 0xf3fd, 0xba7c, /*0x10-0x17*/
+ 0xba7d, 0xba7e, 0xba80, 0xba81, 0xba82, 0xba83, 0xba84, 0xf4a1, /*0x18-0x1f*/
+ 0xba85, 0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xf4a3, 0xbbc9, /*0x20-0x27*/
+ 0xba8b, 0xba8c, 0xf4a2, 0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91, /*0x28-0x2f*/
+ 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, /*0x30-0x37*/
+ 0xf4a4, 0xba9a, 0xba9b, 0xba9c, 0xba9d, 0xba9e, 0xba9f, 0xb2be, /*0x38-0x3f*/
+ 0xf4a6, 0xf4a5, 0xbaa0, 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb44, /*0x40-0x47*/
+ 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49, 0xbcae, 0xbb4a, 0xbb4b, /*0x48-0x4f*/
+ 0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f, 0xbb50, 0xbb51, 0xbb52, 0xbb53, /*0x50-0x57*/
+ 0xbb54, 0xbb55, 0xbb56, 0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, /*0x58-0x5f*/
+ 0xbb5c, 0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xbb61, 0xbb62, 0xbb63, /*0x60-0x67*/
+ 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, /*0x68-0x6f*/
+ 0xbb6c, 0xbb6d, 0xbb6e, 0xc3d7, 0xd9e1, 0xbb6f, 0xbb70, 0xbb71, /*0x70-0x77*/
+ 0xbb72, 0xbb73, 0xbb74, 0xc0e0, 0xf4cc, 0xd7d1, 0xbb75, 0xbb76, /*0x78-0x7f*/
+ 0xbb77, 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb7e, /*0x80-0x87*/
+ 0xbb80, 0xb7db, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, /*0x88-0x8f*/
+ 0xbb87, 0xf4ce, 0xc1a3, 0xbb88, 0xbb89, 0xc6c9, 0xbb8a, 0xb4d6, /*0x90-0x97*/
+ 0xd5b3, 0xbb8b, 0xbb8c, 0xbb8d, 0xf4d0, 0xf4cf, 0xf4d1, 0xcbda, /*0x98-0x9f*/
+ 0xbb8e, 0xbb8f, 0xf4d2, 0xbb90, 0xd4c1, 0xd6e0, 0xbb91, 0xbb92, /*0xa0-0xa7*/
+ 0xbb93, 0xbb94, 0xb7e0, 0xbb95, 0xbb96, 0xbb97, 0xc1b8, 0xbb98, /*0xa8-0xaf*/
+ 0xbb99, 0xc1bb, 0xf4d3, 0xbeac, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, /*0xb0-0xb7*/
+ 0xbb9e, 0xb4e2, 0xbb9f, 0xbba0, 0xf4d4, 0xf4d5, 0xbeab, 0xbc40, /*0xb8-0xbf*/
+ 0xbc41, 0xf4d6, 0xbc42, 0xbc43, 0xbc44, 0xf4db, 0xbc45, 0xf4d7, /*0xc0-0xc7*/
+ 0xf4da, 0xbc46, 0xbafd, 0xbc47, 0xf4d8, 0xf4d9, 0xbc48, 0xbc49, /*0xc8-0xcf*/
+ 0xbc4a, 0xbc4b, 0xbc4c, 0xbc4d, 0xbc4e, 0xb8e2, 0xccc7, 0xf4dc, /*0xd0-0xd7*/
+ 0xbc4f, 0xb2da, 0xbc50, 0xbc51, 0xc3d3, 0xbc52, 0xbc53, 0xd4e3, /*0xd8-0xdf*/
+ 0xbfb7, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58, 0xbc59, 0xbc5a, /*0xe0-0xe7*/
+ 0xf4dd, 0xbc5b, 0xbc5c, 0xbc5d, 0xbc5e, 0xbc5f, 0xbc60, 0xc5b4, /*0xe8-0xef*/
+ 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0xbc68, /*0xf0-0xf7*/
+ 0xf4e9, 0xbc69, 0xbc6a, 0xcfb5, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, /*0xf8-0xff*/
+ /* 0x7d00 */
+ 0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, /*0x00-0x07*/
+ 0xbc77, 0xbc78, 0xcec9, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, /*0x08-0x0f*/
+ 0xbc7e, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86, /*0x10-0x17*/
+ 0xbc87, 0xbc88, 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, /*0x18-0x1f*/
+ 0xcbd8, 0xbc8f, 0xcbf7, 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbdf4, /*0x20-0x27*/
+ 0xbc94, 0xbc95, 0xbc96, 0xd7cf, 0xbc97, 0xbc98, 0xbc99, 0xc0db, /*0x28-0x2f*/
+ 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0xbca0, 0xbd40, /*0x30-0x37*/
+ 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd48, /*0x38-0x3f*/
+ 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, 0xbd50, /*0x40-0x47*/
+ 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd58, /*0x48-0x4f*/
+ 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f, 0xbd60, /*0x50-0x57*/
+ 0xbd61, 0xbd62, 0xbd63, 0xbd64, 0xbd65, 0xbd66, 0xbd67, 0xbd68, /*0x58-0x5f*/
+ 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, /*0x60-0x67*/
+ 0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xd0f5, 0xbd77, /*0x68-0x6f*/
+ 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xf4ea, /*0x70-0x77*/
+ 0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, /*0x78-0x7f*/
+ 0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, /*0x80-0x87*/
+ 0xbd90, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, /*0x88-0x8f*/
+ 0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f, /*0x90-0x97*/
+ 0xbda0, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, /*0x98-0x9f*/
+ 0xbe47, 0xbe48, 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xf4eb, 0xbe4d, /*0xa0-0xa7*/
+ 0xbe4e, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xf4ec, 0xbe54, /*0xa8-0xaf*/
+ 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59, 0xbe5a, 0xbe5b, 0xbe5c, /*0xb0-0xb7*/
+ 0xbe5d, 0xbe5e, 0xbe5f, 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, /*0xb8-0xbf*/
+ 0xbe65, 0xbe66, 0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, /*0xc0-0xc7*/
+ 0xbe6d, 0xbe6e, 0xbe6f, 0xbe70, 0xbe71, 0xbe72, 0xbe73, 0xbe74, /*0xc8-0xcf*/
+ 0xbe75, 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c, /*0xd0-0xd7*/
+ 0xbe7d, 0xbe7e, 0xbe80, 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, /*0xd8-0xdf*/
+ 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d, /*0xe0-0xe7*/
+ 0xbe8e, 0xbe8f, 0xbe90, 0xbe91, 0xbe92, 0xbe93, 0xbe94, 0xbe95, /*0xe8-0xef*/
+ 0xbe96, 0xbe97, 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, /*0xf0-0xf7*/
+ 0xbe9e, 0xbe9f, 0xbea0, 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44, /*0xf8-0xff*/
+ /* 0x7e00 */
+ 0xbf45, 0xbf46, 0xbf47, 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, /*0x00-0x07*/
+ 0xbf4d, 0xbf4e, 0xbf4f, 0xbf50, 0xbf51, 0xbf52, 0xbf53, 0xbf54, /*0x08-0x0f*/
+ 0xbf55, 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, /*0x10-0x17*/
+ 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63, 0xbf64, /*0x18-0x1f*/
+ 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, /*0x20-0x27*/
+ 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72, 0xbf73, 0xbf74, /*0x28-0x2f*/
+ 0xbf75, 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, /*0x30-0x37*/
+ 0xbf7d, 0xbf7e, 0xbf80, 0xf7e3, 0xbf81, 0xbf82, 0xbf83, 0xbf84, /*0x38-0x3f*/
+ 0xbf85, 0xb7b1, 0xbf86, 0xbf87, 0xbf88, 0xbf89, 0xbf8a, 0xf4ed, /*0x40-0x47*/
+ 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90, 0xbf91, 0xbf92, /*0x48-0x4f*/
+ 0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, /*0x50-0x57*/
+ 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0, 0xc040, 0xc041, /*0x58-0x5f*/
+ 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, /*0x60-0x67*/
+ 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f, 0xc050, 0xc051, /*0x68-0x6f*/
+ 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0xc058, 0xc059, /*0x70-0x77*/
+ 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e, 0xc05f, 0xc060, 0xc061, /*0x78-0x7f*/
+ 0xc062, 0xc063, 0xd7eb, 0xc064, 0xc065, 0xc066, 0xc067, 0xc068, /*0x80-0x87*/
+ 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, /*0x88-0x8f*/
+ 0xc071, 0xc072, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, /*0x90-0x97*/
+ 0xc079, 0xc07a, 0xc07b, 0xf4ee, 0xc07c, 0xc07d, 0xc07e, 0xe6f9, /*0x98-0x9f*/
+ 0xbec0, 0xe6fa, 0xbaec, 0xe6fb, 0xcfcb, 0xe6fc, 0xd4bc, 0xbcb6, /*0xa0-0xa7*/
+ 0xe6fd, 0xe6fe, 0xbccd, 0xc8d2, 0xceb3, 0xe7a1, 0xc080, 0xb4bf, /*0xa8-0xaf*/
+ 0xe7a2, 0xc9b4, 0xb8d9, 0xc4c9, 0xc081, 0xd7dd, 0xc2da, 0xb7d7, /*0xb0-0xb7*/
+ 0xd6bd, 0xcec6, 0xb7c4, 0xc082, 0xc083, 0xc5a6, 0xe7a3, 0xcfdf, /*0xb8-0xbf*/
+ 0xe7a4, 0xe7a5, 0xe7a6, 0xc1b7, 0xd7e9, 0xc9f0, 0xcfb8, 0xd6af, /*0xc0-0xc7*/
+ 0xd6d5, 0xe7a7, 0xb0ed, 0xe7a8, 0xe7a9, 0xc9dc, 0xd2ef, 0xbead, /*0xc8-0xcf*/
+ 0xe7aa, 0xb0f3, 0xc8de, 0xbde1, 0xe7ab, 0xc8c6, 0xc084, 0xe7ac, /*0xd0-0xd7*/
+ 0xbbe6, 0xb8f8, 0xd1a4, 0xe7ad, 0xc2e7, 0xbef8, 0xbdca, 0xcdb3, /*0xd8-0xdf*/
+ 0xe7ae, 0xe7af, 0xbeee, 0xd0e5, 0xc085, 0xcbe7, 0xccd0, 0xbccc, /*0xe0-0xe7*/
+ 0xe7b0, 0xbca8, 0xd0f7, 0xe7b1, 0xc086, 0xd0f8, 0xe7b2, 0xe7b3, /*0xe8-0xef*/
+ 0xb4c2, 0xe7b4, 0xe7b5, 0xc9fe, 0xceac, 0xc3e0, 0xe7b7, 0xb1c1, /*0xf0-0xf7*/
+ 0xb3f1, 0xc087, 0xe7b8, 0xe7b9, 0xd7db, 0xd5c0, 0xe7ba, 0xc2cc, /*0xf8-0xff*/
+ /* 0x7f00 */
+ 0xd7ba, 0xe7bb, 0xe7bc, 0xe7bd, 0xbcea, 0xc3e5, 0xc0c2, 0xe7be, /*0x00-0x07*/
+ 0xe7bf, 0xbca9, 0xc088, 0xe7c0, 0xe7c1, 0xe7b6, 0xb6d0, 0xe7c2, /*0x08-0x0f*/
+ 0xc089, 0xe7c3, 0xe7c4, 0xbbba, 0xb5de, 0xc2c6, 0xb1e0, 0xe7c5, /*0x10-0x17*/
+ 0xd4b5, 0xe7c6, 0xb8bf, 0xe7c8, 0xe7c7, 0xb7ec, 0xc08a, 0xe7c9, /*0x18-0x1f*/
+ 0xb2f8, 0xe7ca, 0xe7cb, 0xe7cc, 0xe7cd, 0xe7ce, 0xe7cf, 0xe7d0, /*0x20-0x27*/
+ 0xd3a7, 0xcbf5, 0xe7d1, 0xe7d2, 0xe7d3, 0xe7d4, 0xc9c9, 0xe7d5, /*0x28-0x2f*/
+ 0xe7d6, 0xe7d7, 0xe7d8, 0xe7d9, 0xbdc9, 0xe7da, 0xf3be, 0xc08b, /*0x30-0x37*/
+ 0xb8d7, 0xc08c, 0xc8b1, 0xc08d, 0xc08e, 0xc08f, 0xc090, 0xc091, /*0x38-0x3f*/
+ 0xc092, 0xc093, 0xf3bf, 0xc094, 0xf3c0, 0xf3c1, 0xc095, 0xc096, /*0x40-0x47*/
+ 0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, /*0x48-0x4f*/
+ 0xb9de, 0xcdf8, 0xc09f, 0xc0a0, 0xd8e8, 0xbab1, 0xc140, 0xc2de, /*0x50-0x57*/
+ 0xeeb7, 0xc141, 0xb7a3, 0xc142, 0xc143, 0xc144, 0xc145, 0xeeb9, /*0x58-0x5f*/
+ 0xc146, 0xeeb8, 0xb0d5, 0xc147, 0xc148, 0xc149, 0xc14a, 0xc14b, /*0x60-0x67*/
+ 0xeebb, 0xd5d6, 0xd7ef, 0xc14c, 0xc14d, 0xc14e, 0xd6c3, 0xc14f, /*0x68-0x6f*/
+ 0xc150, 0xeebd, 0xcaf0, 0xc151, 0xeebc, 0xc152, 0xc153, 0xc154, /*0x70-0x77*/
+ 0xc155, 0xeebe, 0xc156, 0xc157, 0xc158, 0xc159, 0xeec0, 0xc15a, /*0x78-0x7f*/
+ 0xc15b, 0xeebf, 0xc15c, 0xc15d, 0xc15e, 0xc15f, 0xc160, 0xc161, /*0x80-0x87*/
+ 0xc162, 0xc163, 0xd1f2, 0xc164, 0xc7bc, 0xc165, 0xc3c0, 0xc166, /*0x88-0x8f*/
+ 0xc167, 0xc168, 0xc169, 0xc16a, 0xb8e1, 0xc16b, 0xc16c, 0xc16d, /*0x90-0x97*/
+ 0xc16e, 0xc16f, 0xc1e7, 0xc170, 0xc171, 0xf4c6, 0xd0df, 0xf4c7, /*0x98-0x9f*/
+ 0xc172, 0xcfdb, 0xc173, 0xc174, 0xc8ba, 0xc175, 0xc176, 0xf4c8, /*0xa0-0xa7*/
+ 0xc177, 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xf4c9, /*0xa8-0xaf*/
+ 0xf4ca, 0xc17e, 0xf4cb, 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, /*0xb0-0xb7*/
+ 0xd9fa, 0xb8fe, 0xc185, 0xc186, 0xe5f1, 0xd3f0, 0xc187, 0xf4e0, /*0xb8-0xbf*/
+ 0xc188, 0xcecc, 0xc189, 0xc18a, 0xc18b, 0xb3e1, 0xc18c, 0xc18d, /*0xc0-0xc7*/
+ 0xc18e, 0xc18f, 0xf1b4, 0xc190, 0xd2ee, 0xc191, 0xf4e1, 0xc192, /*0xc8-0xcf*/
+ 0xc193, 0xc194, 0xc195, 0xc196, 0xcfe8, 0xf4e2, 0xc197, 0xc198, /*0xd0-0xd7*/
+ 0xc7cc, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, 0xc19e, 0xb5d4, /*0xd8-0xdf*/
+ 0xb4e4, 0xf4e4, 0xc19f, 0xc1a0, 0xc240, 0xf4e3, 0xf4e5, 0xc241, /*0xe0-0xe7*/
+ 0xc242, 0xf4e6, 0xc243, 0xc244, 0xc245, 0xc246, 0xf4e7, 0xc247, /*0xe8-0xef*/
+ 0xbab2, 0xb0bf, 0xc248, 0xf4e8, 0xc249, 0xc24a, 0xc24b, 0xc24c, /*0xf0-0xf7*/
+ 0xc24d, 0xc24e, 0xc24f, 0xb7ad, 0xd2ed, 0xc250, 0xc251, 0xc252, /*0xf8-0xff*/
+ /* 0x8000 */
+ 0xd2ab, 0xc0cf, 0xc253, 0xbfbc, 0xeba3, 0xd5df, 0xeac8, 0xc254, /*0x00-0x07*/
+ 0xc255, 0xc256, 0xc257, 0xf1f3, 0xb6f8, 0xcba3, 0xc258, 0xc259, /*0x08-0x0f*/
+ 0xc4cd, 0xc25a, 0xf1e7, 0xc25b, 0xf1e8, 0xb8fb, 0xf1e9, 0xbac4, /*0x10-0x17*/
+ 0xd4c5, 0xb0d2, 0xc25c, 0xc25d, 0xf1ea, 0xc25e, 0xc25f, 0xc260, /*0x18-0x1f*/
+ 0xf1eb, 0xc261, 0xf1ec, 0xc262, 0xc263, 0xf1ed, 0xf1ee, 0xf1ef, /*0x20-0x27*/
+ 0xf1f1, 0xf1f0, 0xc5d5, 0xc264, 0xc265, 0xc266, 0xc267, 0xc268, /*0x28-0x2f*/
+ 0xc269, 0xf1f2, 0xc26a, 0xb6fa, 0xc26b, 0xf1f4, 0xd2ae, 0xdec7, /*0x30-0x37*/
+ 0xcbca, 0xc26c, 0xc26d, 0xb3dc, 0xc26e, 0xb5a2, 0xc26f, 0xb9a2, /*0x38-0x3f*/
+ 0xc270, 0xc271, 0xc4f4, 0xf1f5, 0xc272, 0xc273, 0xf1f6, 0xc274, /*0x40-0x47*/
+ 0xc275, 0xc276, 0xc1c4, 0xc1fb, 0xd6b0, 0xf1f7, 0xc277, 0xc278, /*0x48-0x4f*/
+ 0xc279, 0xc27a, 0xf1f8, 0xc27b, 0xc1aa, 0xc27c, 0xc27d, 0xc27e, /*0x50-0x57*/
+ 0xc6b8, 0xc280, 0xbedb, 0xc281, 0xc282, 0xc283, 0xc284, 0xc285, /*0x58-0x5f*/
+ 0xc286, 0xc287, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, /*0x60-0x67*/
+ 0xc28e, 0xf1f9, 0xb4cf, 0xc28f, 0xc290, 0xc291, 0xc292, 0xc293, /*0x68-0x6f*/
+ 0xc294, 0xf1fa, 0xc295, 0xc296, 0xc297, 0xc298, 0xc299, 0xc29a, /*0x70-0x77*/
+ 0xc29b, 0xc29c, 0xc29d, 0xc29e, 0xc29f, 0xc2a0, 0xc340, 0xedb2, /*0x78-0x7f*/
+ 0xedb1, 0xc341, 0xc342, 0xcbe0, 0xd2de, 0xc343, 0xcbc1, 0xd5d8, /*0x80-0x87*/
+ 0xc344, 0xc8e2, 0xc345, 0xc0df, 0xbca1, 0xc346, 0xc347, 0xc348, /*0x88-0x8f*/
+ 0xc349, 0xc34a, 0xc34b, 0xebc1, 0xc34c, 0xc34d, 0xd0a4, 0xc34e, /*0x90-0x97*/
+ 0xd6e2, 0xc34f, 0xb6c7, 0xb8d8, 0xebc0, 0xb8ce, 0xc350, 0xebbf, /*0x98-0x9f*/
+ 0xb3a6, 0xb9c9, 0xd6ab, 0xc351, 0xb7f4, 0xb7ca, 0xc352, 0xc353, /*0xa0-0xa7*/
+ 0xc354, 0xbce7, 0xb7be, 0xebc6, 0xc355, 0xebc7, 0xb0b9, 0xbfcf, /*0xa8-0xaf*/
+ 0xc356, 0xebc5, 0xd3fd, 0xc357, 0xebc8, 0xc358, 0xc359, 0xebc9, /*0xb0-0xb7*/
+ 0xc35a, 0xc35b, 0xb7ce, 0xc35c, 0xebc2, 0xebc4, 0xc9f6, 0xd6d7, /*0xb8-0xbf*/
+ 0xd5cd, 0xd0b2, 0xebcf, 0xceb8, 0xebd0, 0xc35d, 0xb5a8, 0xc35e, /*0xc0-0xc7*/
+ 0xc35f, 0xc360, 0xc361, 0xc362, 0xb1b3, 0xebd2, 0xcca5, 0xc363, /*0xc8-0xcf*/
+ 0xc364, 0xc365, 0xc366, 0xc367, 0xc368, 0xc369, 0xc5d6, 0xebd3, /*0xd0-0xd7*/
+ 0xc36a, 0xebd1, 0xc5df, 0xebce, 0xcaa4, 0xebd5, 0xb0fb, 0xc36b, /*0xd8-0xdf*/
+ 0xc36c, 0xbafa, 0xc36d, 0xc36e, 0xd8b7, 0xf1e3, 0xc36f, 0xebca, /*0xe0-0xe7*/
+ 0xebcb, 0xebcc, 0xebcd, 0xebd6, 0xe6c0, 0xebd9, 0xc370, 0xbfe8, /*0xe8-0xef*/
+ 0xd2c8, 0xebd7, 0xebdc, 0xb8ec, 0xebd8, 0xc371, 0xbdba, 0xc372, /*0xf0-0xf7*/
+ 0xd0d8, 0xc373, 0xb0b7, 0xc374, 0xebdd, 0xc4dc, 0xc375, 0xc376, /*0xf8-0xff*/
+ /* 0x8100 */
+ 0xc377, 0xc378, 0xd6ac, 0xc379, 0xc37a, 0xc37b, 0xb4e0, 0xc37c, /*0x00-0x07*/
+ 0xc37d, 0xc2f6, 0xbcb9, 0xc37e, 0xc380, 0xebda, 0xebdb, 0xd4e0, /*0x08-0x0f*/
+ 0xc6ea, 0xc4d4, 0xebdf, 0xc5a7, 0xd9f5, 0xc381, 0xb2b1, 0xc382, /*0x10-0x17*/
+ 0xebe4, 0xc383, 0xbdc5, 0xc384, 0xc385, 0xc386, 0xebe2, 0xc387, /*0x18-0x1f*/
+ 0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f, /*0x20-0x27*/
+ 0xc390, 0xc391, 0xc392, 0xc393, 0xebe3, 0xc394, 0xc395, 0xb8ac, /*0x28-0x2f*/
+ 0xc396, 0xcdd1, 0xebe5, 0xc397, 0xc398, 0xc399, 0xebe1, 0xc39a, /*0x30-0x37*/
+ 0xc1b3, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xc6a2, 0xc3a0, /*0x38-0x3f*/
+ 0xc440, 0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xccf3, 0xc446, /*0x40-0x47*/
+ 0xebe6, 0xc447, 0xc0b0, 0xd2b8, 0xebe7, 0xc448, 0xc449, 0xc44a, /*0x48-0x4f*/
+ 0xb8af, 0xb8ad, 0xc44b, 0xebe8, 0xc7bb, 0xcdf3, 0xc44c, 0xc44d, /*0x50-0x57*/
+ 0xc44e, 0xebea, 0xebeb, 0xc44f, 0xc450, 0xc451, 0xc452, 0xc453, /*0x58-0x5f*/
+ 0xebed, 0xc454, 0xc455, 0xc456, 0xc457, 0xd0c8, 0xc458, 0xebf2, /*0x60-0x67*/
+ 0xc459, 0xebee, 0xc45a, 0xc45b, 0xc45c, 0xebf1, 0xc8f9, 0xc45d, /*0x68-0x6f*/
+ 0xd1fc, 0xebec, 0xc45e, 0xc45f, 0xebe9, 0xc460, 0xc461, 0xc462, /*0x70-0x77*/
+ 0xc463, 0xb8b9, 0xcfd9, 0xc4e5, 0xebef, 0xebf0, 0xccda, 0xcdc8, /*0x78-0x7f*/
+ 0xb0f2, 0xc464, 0xebf6, 0xc465, 0xc466, 0xc467, 0xc468, 0xc469, /*0x80-0x87*/
+ 0xebf5, 0xc46a, 0xb2b2, 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xb8e0, /*0x88-0x8f*/
+ 0xc46f, 0xebf7, 0xc470, 0xc471, 0xc472, 0xc473, 0xc474, 0xc475, /*0x90-0x97*/
+ 0xb1ec, 0xc476, 0xc477, 0xccc5, 0xc4a4, 0xcfa5, 0xc478, 0xc479, /*0x98-0x9f*/
+ 0xc47a, 0xc47b, 0xc47c, 0xebf9, 0xc47d, 0xc47e, 0xeca2, 0xc480, /*0xa0-0xa7*/
+ 0xc5f2, 0xc481, 0xebfa, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, /*0xa8-0xaf*/
+ 0xc487, 0xc488, 0xc489, 0xc9c5, 0xc48a, 0xc48b, 0xc48c, 0xc48d, /*0xb0-0xb7*/
+ 0xc48e, 0xc48f, 0xe2df, 0xebfe, 0xc490, 0xc491, 0xc492, 0xc493, /*0xb8-0xbf*/
+ 0xcdce, 0xeca1, 0xb1db, 0xd3b7, 0xc494, 0xc495, 0xd2dc, 0xc496, /*0xc0-0xc7*/
+ 0xc497, 0xc498, 0xebfd, 0xc499, 0xebfb, 0xc49a, 0xc49b, 0xc49c, /*0xc8-0xcf*/
+ 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc540, 0xc541, 0xc542, 0xc543, /*0xd0-0xd7*/
+ 0xc544, 0xc545, 0xc546, 0xc547, 0xc548, 0xc549, 0xc54a, 0xc54b, /*0xd8-0xdf*/
+ 0xc54c, 0xc54d, 0xc54e, 0xb3bc, 0xc54f, 0xc550, 0xc551, 0xeab0, /*0xe0-0xe7*/
+ 0xc552, 0xc553, 0xd7d4, 0xc554, 0xf4ab, 0xb3f4, 0xc555, 0xc556, /*0xe8-0xef*/
+ 0xc557, 0xc558, 0xc559, 0xd6c1, 0xd6c2, 0xc55a, 0xc55b, 0xc55c, /*0xf0-0xf7*/
+ 0xc55d, 0xc55e, 0xc55f, 0xd5e9, 0xbeca, 0xc560, 0xf4a7, 0xc561, /*0xf8-0xff*/
+ /* 0x8200 */
+ 0xd2a8, 0xf4a8, 0xf4a9, 0xc562, 0xf4aa, 0xbecb, 0xd3df, 0xc563, /*0x00-0x07*/
+ 0xc564, 0xc565, 0xc566, 0xc567, 0xc9e0, 0xc9e1, 0xc568, 0xc569, /*0x08-0x0f*/
+ 0xf3c2, 0xc56a, 0xcae6, 0xc56b, 0xccf2, 0xc56c, 0xc56d, 0xc56e, /*0x10-0x17*/
+ 0xc56f, 0xc570, 0xc571, 0xe2b6, 0xcbb4, 0xc572, 0xcee8, 0xd6db, /*0x18-0x1f*/
+ 0xc573, 0xf4ad, 0xf4ae, 0xf4af, 0xc574, 0xc575, 0xc576, 0xc577, /*0x20-0x27*/
+ 0xf4b2, 0xc578, 0xbabd, 0xf4b3, 0xb0e3, 0xf4b0, 0xc579, 0xf4b1, /*0x28-0x2f*/
+ 0xbda2, 0xb2d5, 0xc57a, 0xf4b6, 0xf4b7, 0xb6e6, 0xb2b0, 0xcfcf, /*0x30-0x37*/
+ 0xf4b4, 0xb4ac, 0xc57b, 0xf4b5, 0xc57c, 0xc57d, 0xf4b8, 0xc57e, /*0x38-0x3f*/
+ 0xc580, 0xc581, 0xc582, 0xc583, 0xf4b9, 0xc584, 0xc585, 0xcda7, /*0x40-0x47*/
+ 0xc586, 0xf4ba, 0xc587, 0xf4bb, 0xc588, 0xc589, 0xc58a, 0xf4bc, /*0x48-0x4f*/
+ 0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f, 0xc590, 0xc591, 0xc592, /*0x50-0x57*/
+ 0xcbd2, 0xc593, 0xf4bd, 0xc594, 0xc595, 0xc596, 0xc597, 0xf4be, /*0x58-0x5f*/
+ 0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e, 0xc59f, /*0x60-0x67*/
+ 0xf4bf, 0xc5a0, 0xc640, 0xc641, 0xc642, 0xc643, 0xf4de, 0xc1bc, /*0x68-0x6f*/
+ 0xbce8, 0xc644, 0xc9ab, 0xd1de, 0xe5f5, 0xc645, 0xc646, 0xc647, /*0x70-0x77*/
+ 0xc648, 0xdcb3, 0xd2d5, 0xc649, 0xc64a, 0xdcb4, 0xb0ac, 0xdcb5, /*0x78-0x7f*/
+ 0xc64b, 0xc64c, 0xbdda, 0xc64d, 0xdcb9, 0xc64e, 0xc64f, 0xc650, /*0x80-0x87*/
+ 0xd8c2, 0xc651, 0xdcb7, 0xd3f3, 0xc652, 0xc9d6, 0xdcba, 0xdcb6, /*0x88-0x8f*/
+ 0xc653, 0xdcbb, 0xc3a2, 0xc654, 0xc655, 0xc656, 0xc657, 0xdcbc, /*0x90-0x97*/
+ 0xdcc5, 0xdcbd, 0xc658, 0xc659, 0xcedf, 0xd6a5, 0xc65a, 0xdccf, /*0x98-0x9f*/
+ 0xc65b, 0xdccd, 0xc65c, 0xc65d, 0xdcd2, 0xbde6, 0xc2ab, 0xc65e, /*0xa0-0xa7*/
+ 0xdcb8, 0xdccb, 0xdcce, 0xdcbe, 0xb7d2, 0xb0c5, 0xdcc7, 0xd0be, /*0xa8-0xaf*/
+ 0xdcc1, 0xbba8, 0xc65f, 0xb7bc, 0xdccc, 0xc660, 0xc661, 0xdcc6, /*0xb0-0xb7*/
+ 0xdcbf, 0xc7db, 0xc662, 0xc663, 0xc664, 0xd1bf, 0xdcc0, 0xc665, /*0xb8-0xbf*/
+ 0xc666, 0xdcca, 0xc667, 0xc668, 0xdcd0, 0xc669, 0xc66a, 0xcead, /*0xc0-0xc7*/
+ 0xdcc2, 0xc66b, 0xdcc3, 0xdcc8, 0xdcc9, 0xb2d4, 0xdcd1, 0xcbd5, /*0xc8-0xcf*/
+ 0xc66c, 0xd4b7, 0xdcdb, 0xdcdf, 0xcca6, 0xdce6, 0xc66d, 0xc3e7, /*0xd0-0xd7*/
+ 0xdcdc, 0xc66e, 0xc66f, 0xbfc1, 0xdcd9, 0xc670, 0xb0fa, 0xb9b6, /*0xd8-0xdf*/
+ 0xdce5, 0xdcd3, 0xc671, 0xdcc4, 0xdcd6, 0xc8f4, 0xbfe0, 0xc672, /*0xe0-0xe7*/
+ 0xc673, 0xc674, 0xc675, 0xc9bb, 0xc676, 0xc677, 0xc678, 0xb1bd, /*0xe8-0xef*/
+ 0xc679, 0xd3a2, 0xc67a, 0xc67b, 0xdcda, 0xc67c, 0xc67d, 0xdcd5, /*0xf0-0xf7*/
+ 0xc67e, 0xc6bb, 0xc680, 0xdcde, 0xc681, 0xc682, 0xc683, 0xc684, /*0xf8-0xff*/
+ /* 0x8300 */
+ 0xc685, 0xd7c2, 0xc3af, 0xb7b6, 0xc7d1, 0xc3a9, 0xdce2, 0xdcd8, /*0x00-0x07*/
+ 0xdceb, 0xdcd4, 0xc686, 0xc687, 0xdcdd, 0xc688, 0xbea5, 0xdcd7, /*0x08-0x0f*/
+ 0xc689, 0xdce0, 0xc68a, 0xc68b, 0xdce3, 0xdce4, 0xc68c, 0xdcf8, /*0x10-0x17*/
+ 0xc68d, 0xc68e, 0xdce1, 0xdda2, 0xdce7, 0xc68f, 0xc690, 0xc691, /*0x18-0x1f*/
+ 0xc692, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xbceb, /*0x20-0x27*/
+ 0xb4c4, 0xc699, 0xc69a, 0xc3a3, 0xb2e7, 0xdcfa, 0xc69b, 0xdcf2, /*0x28-0x2f*/
+ 0xc69c, 0xdcef, 0xc69d, 0xdcfc, 0xdcee, 0xd2f0, 0xb2e8, 0xc69e, /*0x30-0x37*/
+ 0xc8d7, 0xc8e3, 0xdcfb, 0xc69f, 0xdced, 0xc6a0, 0xc740, 0xc741, /*0x38-0x3f*/
+ 0xdcf7, 0xc742, 0xc743, 0xdcf5, 0xc744, 0xc745, 0xbea3, 0xdcf4, /*0x40-0x47*/
+ 0xc746, 0xb2dd, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xdcf3, /*0x48-0x4f*/
+ 0xbcf6, 0xdce8, 0xbbc4, 0xc74c, 0xc0f3, 0xc74d, 0xc74e, 0xc74f, /*0x50-0x57*/
+ 0xc750, 0xc751, 0xbcd4, 0xdce9, 0xdcea, 0xc752, 0xdcf1, 0xdcf6, /*0x58-0x5f*/
+ 0xdcf9, 0xb5b4, 0xc753, 0xc8d9, 0xbbe7, 0xdcfe, 0xdcfd, 0xd3ab, /*0x60-0x67*/
+ 0xdda1, 0xdda3, 0xdda5, 0xd2f1, 0xdda4, 0xdda6, 0xdda7, 0xd2a9, /*0x68-0x6f*/
+ 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xbac9, /*0x70-0x77*/
+ 0xdda9, 0xc75b, 0xc75c, 0xddb6, 0xddb1, 0xddb4, 0xc75d, 0xc75e, /*0x78-0x7f*/
+ 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xddb0, 0xc6ce, 0xc764, /*0x80-0x87*/
+ 0xc765, 0xc0f2, 0xc766, 0xc767, 0xc768, 0xc769, 0xc9af, 0xc76a, /*0x88-0x8f*/
+ 0xc76b, 0xc76c, 0xdcec, 0xddae, 0xc76d, 0xc76e, 0xc76f, 0xc770, /*0x90-0x97*/
+ 0xddb7, 0xc771, 0xc772, 0xdcf0, 0xddaf, 0xc773, 0xddb8, 0xc774, /*0x98-0x9f*/
+ 0xddac, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, /*0xa0-0xa7*/
+ 0xddb9, 0xddb3, 0xddad, 0xc4aa, 0xc77c, 0xc77d, 0xc77e, 0xc780, /*0xa8-0xaf*/
+ 0xdda8, 0xc0b3, 0xc1ab, 0xddaa, 0xddab, 0xc781, 0xddb2, 0xbbf1, /*0xb0-0xb7*/
+ 0xddb5, 0xd3a8, 0xddba, 0xc782, 0xddbb, 0xc3a7, 0xc783, 0xc784, /*0xb8-0xbf*/
+ 0xddd2, 0xddbc, 0xc785, 0xc786, 0xc787, 0xddd1, 0xc788, 0xb9bd, /*0xc0-0xc7*/
+ 0xc789, 0xc78a, 0xbed5, 0xc78b, 0xbefa, 0xc78c, 0xc78d, 0xbaca, /*0xc8-0xcf*/
+ 0xc78e, 0xc78f, 0xc790, 0xc791, 0xddca, 0xc792, 0xddc5, 0xc793, /*0xd0-0xd7*/
+ 0xddbf, 0xc794, 0xc795, 0xc796, 0xb2cb, 0xddc3, 0xc797, 0xddcb, /*0xd8-0xdf*/
+ 0xb2a4, 0xddd5, 0xc798, 0xc799, 0xc79a, 0xddbe, 0xc79b, 0xc79c, /*0xe0-0xe7*/
+ 0xc79d, 0xc6d0, 0xddd0, 0xc79e, 0xc79f, 0xc7a0, 0xc840, 0xc841, /*0xe8-0xef*/
+ 0xddd4, 0xc1e2, 0xb7c6, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, /*0xf0-0xf7*/
+ 0xddce, 0xddcf, 0xc847, 0xc848, 0xc849, 0xddc4, 0xc84a, 0xc84b, /*0xf8-0xff*/
+ /* 0x8400 */
+ 0xc84c, 0xddbd, 0xc84d, 0xddcd, 0xccd1, 0xc84e, 0xddc9, 0xc84f, /*0x00-0x07*/
+ 0xc850, 0xc851, 0xc852, 0xddc2, 0xc3c8, 0xc6bc, 0xceae, 0xddcc, /*0x08-0x0f*/
+ 0xc853, 0xddc8, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, /*0x10-0x17*/
+ 0xddc1, 0xc85a, 0xc85b, 0xc85c, 0xddc6, 0xc2dc, 0xc85d, 0xc85e, /*0x18-0x1f*/
+ 0xc85f, 0xc860, 0xc861, 0xc862, 0xd3a9, 0xd3aa, 0xddd3, 0xcff4, /*0x20-0x27*/
+ 0xc8f8, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, /*0x28-0x2f*/
+ 0xc86a, 0xdde6, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, /*0x30-0x37*/
+ 0xddc7, 0xc871, 0xc872, 0xc873, 0xdde0, 0xc2e4, 0xc874, 0xc875, /*0x38-0x3f*/
+ 0xc876, 0xc877, 0xc878, 0xc879, 0xc87a, 0xc87b, 0xdde1, 0xc87c, /*0x40-0x47*/
+ 0xc87d, 0xc87e, 0xc880, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885, /*0x48-0x4f*/
+ 0xc886, 0xddd7, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0xd6f8, /*0x50-0x57*/
+ 0xc88c, 0xddd9, 0xddd8, 0xb8f0, 0xddd6, 0xc88d, 0xc88e, 0xc88f, /*0x58-0x5f*/
+ 0xc890, 0xc6cf, 0xc891, 0xb6ad, 0xc892, 0xc893, 0xc894, 0xc895, /*0x60-0x67*/
+ 0xc896, 0xdde2, 0xc897, 0xbaf9, 0xd4e1, 0xdde7, 0xc898, 0xc899, /*0x68-0x6f*/
+ 0xc89a, 0xb4d0, 0xc89b, 0xddda, 0xc89c, 0xbffb, 0xdde3, 0xc89d, /*0x70-0x77*/
+ 0xdddf, 0xc89e, 0xdddd, 0xc89f, 0xc8a0, 0xc940, 0xc941, 0xc942, /*0x78-0x7f*/
+ 0xc943, 0xc944, 0xb5d9, 0xc945, 0xc946, 0xc947, 0xc948, 0xdddb, /*0x80-0x87*/
+ 0xdddc, 0xddde, 0xc949, 0xbdaf, 0xdde4, 0xc94a, 0xdde5, 0xc94b, /*0x88-0x8f*/
+ 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0xc950, 0xc951, 0xc952, 0xddf5, /*0x90-0x97*/
+ 0xc953, 0xc3c9, 0xc954, 0xc955, 0xcbe2, 0xc956, 0xc957, 0xc958, /*0x98-0x9f*/
+ 0xc959, 0xddf2, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e, 0xc95f, /*0xa0-0xa7*/
+ 0xc960, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xd8e1, /*0xa8-0xaf*/
+ 0xc967, 0xc968, 0xc6d1, 0xc969, 0xddf4, 0xc96a, 0xc96b, 0xc96c, /*0xb0-0xb7*/
+ 0xd5f4, 0xddf3, 0xddf0, 0xc96d, 0xc96e, 0xddec, 0xc96f, 0xddef, /*0xb8-0xbf*/
+ 0xc970, 0xdde8, 0xc971, 0xc972, 0xd0ee, 0xc973, 0xc974, 0xc975, /*0xc0-0xc7*/
+ 0xc976, 0xc8d8, 0xddee, 0xc977, 0xc978, 0xdde9, 0xc979, 0xc97a, /*0xc8-0xcf*/
+ 0xddea, 0xcbf2, 0xc97b, 0xdded, 0xc97c, 0xc97d, 0xb1cd, 0xc97e, /*0xd0-0xd7*/
+ 0xc980, 0xc981, 0xc982, 0xc983, 0xc984, 0xc0b6, 0xc985, 0xbcbb, /*0xd8-0xdf*/
+ 0xddf1, 0xc986, 0xc987, 0xddf7, 0xc988, 0xddf6, 0xddeb, 0xc989, /*0xe0-0xe7*/
+ 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc5ee, 0xc98e, 0xc98f, 0xc990, /*0xe8-0xef*/
+ 0xddfb, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, 0xc997, /*0xf0-0xf7*/
+ 0xc998, 0xc999, 0xc99a, 0xc99b, 0xdea4, 0xc99c, 0xc99d, 0xdea3, /*0xf8-0xff*/
+ /* 0x8500 */
+ 0xc99e, 0xc99f, 0xc9a0, 0xca40, 0xca41, 0xca42, 0xca43, 0xca44, /*0x00-0x07*/
+ 0xca45, 0xca46, 0xca47, 0xca48, 0xddf8, 0xca49, 0xca4a, 0xca4b, /*0x08-0x0f*/
+ 0xca4c, 0xc3ef, 0xca4d, 0xc2fb, 0xca4e, 0xca4f, 0xca50, 0xd5e1, /*0x10-0x17*/
+ 0xca51, 0xca52, 0xceb5, 0xca53, 0xca54, 0xca55, 0xca56, 0xddfd, /*0x18-0x1f*/
+ 0xca57, 0xb2cc, 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d, /*0x20-0x27*/
+ 0xca5e, 0xca5f, 0xca60, 0xc4e8, 0xcadf, 0xca61, 0xca62, 0xca63, /*0x28-0x2f*/
+ 0xca64, 0xca65, 0xca66, 0xca67, 0xca68, 0xca69, 0xca6a, 0xc7be, /*0x30-0x37*/
+ 0xddfa, 0xddfc, 0xddfe, 0xdea2, 0xb0aa, 0xb1ce, 0xca6b, 0xca6c, /*0x38-0x3f*/
+ 0xca6d, 0xca6e, 0xca6f, 0xdeac, 0xca70, 0xca71, 0xca72, 0xca73, /*0x40-0x47*/
+ 0xdea6, 0xbdb6, 0xc8ef, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, /*0x48-0x4f*/
+ 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca7e, 0xdea1, 0xca80, /*0x50-0x57*/
+ 0xca81, 0xdea5, 0xca82, 0xca83, 0xca84, 0xca85, 0xdea9, 0xca86, /*0x58-0x5f*/
+ 0xca87, 0xca88, 0xca89, 0xca8a, 0xdea8, 0xca8b, 0xca8c, 0xca8d, /*0x60-0x67*/
+ 0xdea7, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, /*0x68-0x6f*/
+ 0xca95, 0xca96, 0xdead, 0xca97, 0xd4cc, 0xca98, 0xca99, 0xca9a, /*0x70-0x77*/
+ 0xca9b, 0xdeb3, 0xdeaa, 0xdeae, 0xca9c, 0xca9d, 0xc0d9, 0xca9e, /*0x78-0x7f*/
+ 0xca9f, 0xcaa0, 0xcb40, 0xcb41, 0xb1a1, 0xdeb6, 0xcb42, 0xdeb1, /*0x80-0x87*/
+ 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, 0xcb48, 0xcb49, 0xdeb2, /*0x88-0x8f*/
+ 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e, 0xcb4f, 0xcb50, 0xcb51, /*0x90-0x97*/
+ 0xcb52, 0xcb53, 0xcb54, 0xd1a6, 0xdeb5, 0xcb55, 0xcb56, 0xcb57, /*0x98-0x9f*/
+ 0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xdeaf, 0xcb5c, 0xcb5d, 0xcb5e, /*0xa0-0xa7*/
+ 0xdeb0, 0xcb5f, 0xd0bd, 0xcb60, 0xcb61, 0xcb62, 0xdeb4, 0xcaed, /*0xa8-0xaf*/
+ 0xdeb9, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xdeb8, /*0xb0-0xb7*/
+ 0xcb69, 0xdeb7, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, /*0xb8-0xbf*/
+ 0xcb70, 0xdebb, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, /*0xc0-0xc7*/
+ 0xcb77, 0xbde5, 0xcb78, 0xcb79, 0xcb7a, 0xcb7b, 0xcb7c, 0xb2d8, /*0xc8-0xcf*/
+ 0xc3ea, 0xcb7d, 0xcb7e, 0xdeba, 0xcb80, 0xc5ba, 0xcb81, 0xcb82, /*0xd0-0xd7*/
+ 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xdebc, 0xcb87, 0xcb88, 0xcb89, /*0xd8-0xdf*/
+ 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xccd9, 0xcb8e, 0xcb8f, 0xcb90, /*0xe0-0xe7*/
+ 0xcb91, 0xb7aa, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, /*0xe8-0xef*/
+ 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f, /*0xf0-0xf7*/
+ 0xcba0, 0xcc40, 0xcc41, 0xd4e5, 0xcc42, 0xcc43, 0xcc44, 0xdebd, /*0xf8-0xff*/
+ /* 0x8600 */
+ 0xcc45, 0xcc46, 0xcc47, 0xcc48, 0xcc49, 0xdebf, 0xcc4a, 0xcc4b, /*0x00-0x07*/
+ 0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50, 0xcc51, 0xcc52, 0xcc53, /*0x08-0x0f*/
+ 0xcc54, 0xc4a2, 0xcc55, 0xcc56, 0xcc57, 0xcc58, 0xdec1, 0xcc59, /*0x10-0x17*/
+ 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0xcc60, 0xcc61, /*0x18-0x1f*/
+ 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66, 0xcc67, 0xcc68, 0xdebe, /*0x20-0x27*/
+ 0xcc69, 0xdec0, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, /*0x28-0x2f*/
+ 0xcc70, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75, 0xcc76, 0xcc77, /*0x30-0x37*/
+ 0xd5ba, 0xcc78, 0xcc79, 0xcc7a, 0xdec2, 0xcc7b, 0xcc7c, 0xcc7d, /*0x38-0x3f*/
+ 0xcc7e, 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, /*0x40-0x47*/
+ 0xcc87, 0xcc88, 0xcc89, 0xcc8a, 0xcc8b, 0xf2ae, 0xbba2, 0xc2b2, /*0x48-0x4f*/
+ 0xc5b0, 0xc2c7, 0xcc8c, 0xcc8d, 0xf2af, 0xcc8e, 0xcc8f, 0xcc90, /*0x50-0x57*/
+ 0xcc91, 0xcc92, 0xd0e9, 0xcc93, 0xcc94, 0xcc95, 0xd3dd, 0xcc96, /*0x58-0x5f*/
+ 0xcc97, 0xcc98, 0xebbd, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, /*0x60-0x67*/
+ 0xcc9e, 0xcc9f, 0xcca0, 0xb3e6, 0xf2b0, 0xcd40, 0xf2b1, 0xcd41, /*0x68-0x6f*/
+ 0xcd42, 0xcaad, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, /*0x70-0x77*/
+ 0xcd49, 0xbae7, 0xf2b3, 0xf2b5, 0xf2b4, 0xcbe4, 0xcfba, 0xf2b2, /*0x78-0x7f*/
+ 0xcab4, 0xd2cf, 0xc2ec, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, /*0x80-0x87*/
+ 0xcd4f, 0xcd50, 0xcec3, 0xf2b8, 0xb0f6, 0xf2b7, 0xcd51, 0xcd52, /*0x88-0x8f*/
+ 0xcd53, 0xcd54, 0xcd55, 0xf2be, 0xcd56, 0xb2cf, 0xcd57, 0xcd58, /*0x90-0x97*/
+ 0xcd59, 0xcd5a, 0xcd5b, 0xcd5c, 0xd1c1, 0xf2ba, 0xcd5d, 0xcd5e, /*0x98-0x9f*/
+ 0xcd5f, 0xcd60, 0xcd61, 0xf2bc, 0xd4e9, 0xcd62, 0xcd63, 0xf2bb, /*0xa0-0xa7*/
+ 0xf2b6, 0xf2bf, 0xf2bd, 0xcd64, 0xf2b9, 0xcd65, 0xcd66, 0xf2c7, /*0xa8-0xaf*/
+ 0xf2c4, 0xf2c6, 0xcd67, 0xcd68, 0xf2ca, 0xf2c2, 0xf2c0, 0xcd69, /*0xb0-0xb7*/
+ 0xcd6a, 0xcd6b, 0xf2c5, 0xcd6c, 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, /*0xb8-0xbf*/
+ 0xd6fb, 0xcd71, 0xcd72, 0xcd73, 0xf2c1, 0xcd74, 0xc7f9, 0xc9df, /*0xc0-0xc7*/
+ 0xcd75, 0xf2c8, 0xb9c6, 0xb5b0, 0xcd76, 0xcd77, 0xf2c3, 0xf2c9, /*0xc8-0xcf*/
+ 0xf2d0, 0xf2d6, 0xcd78, 0xcd79, 0xbbd7, 0xcd7a, 0xcd7b, 0xcd7c, /*0xd0-0xd7*/
+ 0xf2d5, 0xcddc, 0xcd7d, 0xd6eb, 0xcd7e, 0xcd80, 0xf2d2, 0xf2d4, /*0xd8-0xdf*/
+ 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xb8f2, 0xcd85, 0xcd86, 0xcd87, /*0xe0-0xe7*/
+ 0xcd88, 0xf2cb, 0xcd89, 0xcd8a, 0xcd8b, 0xf2ce, 0xc2f9, 0xcd8c, /*0xe8-0xef*/
+ 0xd5dd, 0xf2cc, 0xf2cd, 0xf2cf, 0xf2d3, 0xcd8d, 0xcd8e, 0xcd8f, /*0xf0-0xf7*/
+ 0xf2d9, 0xd3bc, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xb6ea, 0xcd94, /*0xf8-0xff*/
+ /* 0x8700 */
+ 0xcaf1, 0xcd95, 0xb7e4, 0xf2d7, 0xcd96, 0xcd97, 0xcd98, 0xf2d8, /*0x00-0x07*/
+ 0xf2da, 0xf2dd, 0xf2db, 0xcd99, 0xcd9a, 0xf2dc, 0xcd9b, 0xcd9c, /*0x08-0x0f*/
+ 0xcd9d, 0xcd9e, 0xd1d1, 0xf2d1, 0xcd9f, 0xcdc9, 0xcda0, 0xcecf, /*0x10-0x17*/
+ 0xd6a9, 0xce40, 0xf2e3, 0xce41, 0xc3db, 0xce42, 0xf2e0, 0xce43, /*0x18-0x1f*/
+ 0xce44, 0xc0af, 0xf2ec, 0xf2de, 0xce45, 0xf2e1, 0xce46, 0xce47, /*0x20-0x27*/
+ 0xce48, 0xf2e8, 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xf2e2, 0xce4d, /*0x28-0x2f*/
+ 0xce4e, 0xf2e7, 0xce4f, 0xce50, 0xf2e6, 0xce51, 0xce52, 0xf2e9, /*0x30-0x37*/
+ 0xce53, 0xce54, 0xce55, 0xf2df, 0xce56, 0xce57, 0xf2e4, 0xf2ea, /*0x38-0x3f*/
+ 0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e, 0xd3ac, /*0x40-0x47*/
+ 0xf2e5, 0xb2f5, 0xce5f, 0xce60, 0xf2f2, 0xce61, 0xd0ab, 0xce62, /*0x48-0x4f*/
+ 0xce63, 0xce64, 0xce65, 0xf2f5, 0xce66, 0xce67, 0xce68, 0xbbc8, /*0x50-0x57*/
+ 0xce69, 0xf2f9, 0xce6a, 0xce6b, 0xce6c, 0xce6d, 0xce6e, 0xce6f, /*0x58-0x5f*/
+ 0xf2f0, 0xce70, 0xce71, 0xf2f6, 0xf2f8, 0xf2fa, 0xce72, 0xce73, /*0x60-0x67*/
+ 0xce74, 0xce75, 0xce76, 0xce77, 0xce78, 0xce79, 0xf2f3, 0xce7a, /*0x68-0x6f*/
+ 0xf2f1, 0xce7b, 0xce7c, 0xce7d, 0xbafb, 0xce7e, 0xb5fb, 0xce80, /*0x70-0x77*/
+ 0xce81, 0xce82, 0xce83, 0xf2ef, 0xf2f7, 0xf2ed, 0xf2ee, 0xce84, /*0x78-0x7f*/
+ 0xce85, 0xce86, 0xf2eb, 0xf3a6, 0xce87, 0xf3a3, 0xce88, 0xce89, /*0x80-0x87*/
+ 0xf3a2, 0xce8a, 0xce8b, 0xf2f4, 0xce8c, 0xc8da, 0xce8d, 0xce8e, /*0x88-0x8f*/
+ 0xce8f, 0xce90, 0xce91, 0xf2fb, 0xce92, 0xce93, 0xce94, 0xf3a5, /*0x90-0x97*/
+ 0xce95, 0xce96, 0xce97, 0xce98, 0xce99, 0xce9a, 0xce9b, 0xc3f8, /*0x98-0x9f*/
+ 0xce9c, 0xce9d, 0xce9e, 0xce9f, 0xcea0, 0xcf40, 0xcf41, 0xcf42, /*0xa0-0xa7*/
+ 0xf2fd, 0xcf43, 0xcf44, 0xf3a7, 0xf3a9, 0xf3a4, 0xcf45, 0xf2fc, /*0xa8-0xaf*/
+ 0xcf46, 0xcf47, 0xcf48, 0xf3ab, 0xcf49, 0xf3aa, 0xcf4a, 0xcf4b, /*0xb0-0xb7*/
+ 0xcf4c, 0xcf4d, 0xc2dd, 0xcf4e, 0xcf4f, 0xf3ae, 0xcf50, 0xcf51, /*0xb8-0xbf*/
+ 0xf3b0, 0xcf52, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xf3a1, 0xcf57, /*0xc0-0xc7*/
+ 0xcf58, 0xcf59, 0xf3b1, 0xf3ac, 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, /*0xc8-0xcf*/
+ 0xcf5e, 0xf3af, 0xf2fe, 0xf3ad, 0xcf5f, 0xcf60, 0xcf61, 0xcf62, /*0xd0-0xd7*/
+ 0xcf63, 0xcf64, 0xcf65, 0xf3b2, 0xcf66, 0xcf67, 0xcf68, 0xcf69, /*0xd8-0xdf*/
+ 0xf3b4, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xf3a8, 0xcf6e, 0xcf6f, /*0xe0-0xe7*/
+ 0xcf70, 0xcf71, 0xf3b3, 0xcf72, 0xcf73, 0xcf74, 0xf3b5, 0xcf75, /*0xe8-0xef*/
+ 0xcf76, 0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, /*0xf0-0xf7*/
+ 0xcf7e, 0xd0b7, 0xcf80, 0xcf81, 0xcf82, 0xcf83, 0xf3b8, 0xcf84, /*0xf8-0xff*/
+ /* 0x8800 */
+ 0xcf85, 0xcf86, 0xcf87, 0xd9f9, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, /*0x00-0x07*/
+ 0xcf8c, 0xcf8d, 0xf3b9, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92, /*0x08-0x0f*/
+ 0xcf93, 0xcf94, 0xcf95, 0xf3b7, 0xcf96, 0xc8e4, 0xf3b6, 0xcf97, /*0x10-0x17*/
+ 0xcf98, 0xcf99, 0xcf9a, 0xf3ba, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, /*0x18-0x1f*/
+ 0xcf9f, 0xf3bb, 0xb4c0, 0xcfa0, 0xd040, 0xd041, 0xd042, 0xd043, /*0x20-0x27*/
+ 0xd044, 0xd045, 0xd046, 0xd047, 0xd048, 0xd049, 0xd04a, 0xd04b, /*0x28-0x2f*/
+ 0xd04c, 0xd04d, 0xeec3, 0xd04e, 0xd04f, 0xd050, 0xd051, 0xd052, /*0x30-0x37*/
+ 0xd053, 0xf3bc, 0xd054, 0xd055, 0xf3bd, 0xd056, 0xd057, 0xd058, /*0x38-0x3f*/
+ 0xd1aa, 0xd059, 0xd05a, 0xd05b, 0xf4ac, 0xd0c6, 0xd05c, 0xd05d, /*0x40-0x47*/
+ 0xd05e, 0xd05f, 0xd060, 0xd061, 0xd0d0, 0xd1dc, 0xd062, 0xd063, /*0x48-0x4f*/
+ 0xd064, 0xd065, 0xd066, 0xd067, 0xcfce, 0xd068, 0xd069, 0xbdd6, /*0x50-0x57*/
+ 0xd06a, 0xd1c3, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070, /*0x58-0x5f*/
+ 0xd071, 0xbae2, 0xe1e9, 0xd2c2, 0xf1c2, 0xb2b9, 0xd072, 0xd073, /*0x60-0x67*/
+ 0xb1ed, 0xf1c3, 0xd074, 0xc9c0, 0xb3c4, 0xd075, 0xd9f2, 0xd076, /*0x68-0x6f*/
+ 0xcba5, 0xd077, 0xf1c4, 0xd078, 0xd079, 0xd07a, 0xd07b, 0xd6d4, /*0x70-0x77*/
+ 0xd07c, 0xd07d, 0xd07e, 0xd080, 0xd081, 0xf1c5, 0xf4c0, 0xf1c6, /*0x78-0x7f*/
+ 0xd082, 0xd4ac, 0xf1c7, 0xd083, 0xb0c0, 0xf4c1, 0xd084, 0xd085, /*0x80-0x87*/
+ 0xf4c2, 0xd086, 0xd087, 0xb4fc, 0xd088, 0xc5db, 0xd089, 0xd08a, /*0x88-0x8f*/
+ 0xd08b, 0xd08c, 0xccbb, 0xd08d, 0xd08e, 0xd08f, 0xd0e4, 0xd090, /*0x90-0x97*/
+ 0xd091, 0xd092, 0xd093, 0xd094, 0xcde0, 0xd095, 0xd096, 0xd097, /*0x98-0x9f*/
+ 0xd098, 0xd099, 0xf1c8, 0xd09a, 0xd9f3, 0xd09b, 0xd09c, 0xd09d, /*0xa0-0xa7*/
+ 0xd09e, 0xd09f, 0xd0a0, 0xb1bb, 0xd140, 0xcfae, 0xd141, 0xd142, /*0xa8-0xaf*/
+ 0xd143, 0xb8a4, 0xd144, 0xd145, 0xd146, 0xd147, 0xd148, 0xf1ca, /*0xb0-0xb7*/
+ 0xd149, 0xd14a, 0xd14b, 0xd14c, 0xf1cb, 0xd14d, 0xd14e, 0xd14f, /*0xb8-0xbf*/
+ 0xd150, 0xb2c3, 0xc1d1, 0xd151, 0xd152, 0xd7b0, 0xf1c9, 0xd153, /*0xc0-0xc7*/
+ 0xd154, 0xf1cc, 0xd155, 0xd156, 0xd157, 0xd158, 0xf1ce, 0xd159, /*0xc8-0xcf*/
+ 0xd15a, 0xd15b, 0xd9f6, 0xd15c, 0xd2e1, 0xd4a3, 0xd15d, 0xd15e, /*0xd0-0xd7*/
+ 0xf4c3, 0xc8b9, 0xd15f, 0xd160, 0xd161, 0xd162, 0xd163, 0xf4c4, /*0xd8-0xdf*/
+ 0xd164, 0xd165, 0xf1cd, 0xf1cf, 0xbfe3, 0xf1d0, 0xd166, 0xd167, /*0xe0-0xe7*/
+ 0xf1d4, 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, /*0xe8-0xef*/
+ 0xf1d6, 0xf1d1, 0xd16f, 0xc9d1, 0xc5e1, 0xd170, 0xd171, 0xd172, /*0xf0-0xf7*/
+ 0xc2e3, 0xb9fc, 0xd173, 0xd174, 0xf1d3, 0xd175, 0xf1d5, 0xd176, /*0xf8-0xff*/
+ /* 0x8900 */
+ 0xd177, 0xd178, 0xb9d3, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d, /*0x00-0x07*/
+ 0xd17e, 0xd180, 0xf1db, 0xd181, 0xd182, 0xd183, 0xd184, 0xd185, /*0x08-0x0f*/
+ 0xbad6, 0xd186, 0xb0fd, 0xf1d9, 0xd187, 0xd188, 0xd189, 0xd18a, /*0x10-0x17*/
+ 0xd18b, 0xf1d8, 0xf1d2, 0xf1da, 0xd18c, 0xd18d, 0xd18e, 0xd18f, /*0x18-0x1f*/
+ 0xd190, 0xf1d7, 0xd191, 0xd192, 0xd193, 0xc8ec, 0xd194, 0xd195, /*0x20-0x27*/
+ 0xd196, 0xd197, 0xcdca, 0xf1dd, 0xd198, 0xd199, 0xd19a, 0xd19b, /*0x28-0x2f*/
+ 0xe5bd, 0xd19c, 0xd19d, 0xd19e, 0xf1dc, 0xd19f, 0xf1de, 0xd1a0, /*0x30-0x37*/
+ 0xd240, 0xd241, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, /*0x38-0x3f*/
+ 0xd248, 0xf1df, 0xd249, 0xd24a, 0xcfe5, 0xd24b, 0xd24c, 0xd24d, /*0x40-0x47*/
+ 0xd24e, 0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, /*0x48-0x4f*/
+ 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, /*0x50-0x57*/
+ 0xd25e, 0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0xf4c5, 0xbdf3, /*0x58-0x5f*/
+ 0xd264, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xf1e0, 0xd26a, /*0x60-0x67*/
+ 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270, 0xd271, 0xd272, /*0x68-0x6f*/
+ 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, 0xd27a, /*0x70-0x77*/
+ 0xd27b, 0xd27c, 0xd27d, 0xf1e1, 0xd27e, 0xd280, 0xd281, 0xcef7, /*0x78-0x7f*/
+ 0xd282, 0xd2aa, 0xd283, 0xf1fb, 0xd284, 0xd285, 0xb8b2, 0xd286, /*0x80-0x87*/
+ 0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, /*0x88-0x8f*/
+ 0xd28f, 0xd290, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295, 0xd296, /*0x90-0x97*/
+ 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d, 0xd29e, /*0x98-0x9f*/
+ 0xd29f, 0xd2a0, 0xd340, 0xd341, 0xd342, 0xd343, 0xd344, 0xd345, /*0xa0-0xa7*/
+ 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, 0xd34d, /*0xa8-0xaf*/
+ 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, /*0xb0-0xb7*/
+ 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d, /*0xb8-0xbf*/
+ 0xd35e, 0xbcfb, 0xb9db, 0xd35f, 0xb9e6, 0xc3d9, 0xcad3, 0xeae8, /*0xc0-0xc7*/
+ 0xc0c0, 0xbef5, 0xeae9, 0xeaea, 0xeaeb, 0xd360, 0xeaec, 0xeaed, /*0xc8-0xcf*/
+ 0xeaee, 0xeaef, 0xbdc7, 0xd361, 0xd362, 0xd363, 0xf5fb, 0xd364, /*0xd0-0xd7*/
+ 0xd365, 0xd366, 0xf5fd, 0xd367, 0xf5fe, 0xd368, 0xf5fc, 0xd369, /*0xd8-0xdf*/
+ 0xd36a, 0xd36b, 0xd36c, 0xbde2, 0xd36d, 0xf6a1, 0xb4a5, 0xd36e, /*0xe0-0xe7*/
+ 0xd36f, 0xd370, 0xd371, 0xf6a2, 0xd372, 0xd373, 0xd374, 0xf6a3, /*0xe8-0xef*/
+ 0xd375, 0xd376, 0xd377, 0xecb2, 0xd378, 0xd379, 0xd37a, 0xd37b, /*0xf0-0xf7*/
+ 0xd37c, 0xd37d, 0xd37e, 0xd380, 0xd381, 0xd382, 0xd383, 0xd384, /*0xf8-0xff*/
+ /* 0x8a00 */
+ 0xd1d4, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd9ea, /*0x00-0x07*/
+ 0xd38b, 0xd38c, 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391, 0xd392, /*0x08-0x0f*/
+ 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0xd398, 0xd399, 0xd39a, /*0x10-0x17*/
+ 0xd39b, 0xd39c, 0xd39d, 0xd39e, 0xd39f, 0xd3a0, 0xd440, 0xd441, /*0x18-0x1f*/
+ 0xd442, 0xd443, 0xd444, 0xd445, 0xd446, 0xd447, 0xd448, 0xd449, /*0x20-0x27*/
+ 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, 0xd450, 0xd451, /*0x28-0x2f*/
+ 0xd452, 0xd453, 0xd454, 0xd455, 0xd456, 0xd457, 0xd458, 0xd459, /*0x30-0x37*/
+ 0xd45a, 0xd45b, 0xd45c, 0xd45d, 0xd45e, 0xd45f, 0xf6a4, 0xd460, /*0x38-0x3f*/
+ 0xd461, 0xd462, 0xd463, 0xd464, 0xd465, 0xd466, 0xd467, 0xd468, /*0x40-0x47*/
+ 0xeeba, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46d, 0xd46e, 0xd46f, /*0x48-0x4f*/
+ 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, /*0x50-0x57*/
+ 0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e, 0xd480, /*0x58-0x5f*/
+ 0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, 0xd488, /*0x60-0x67*/
+ 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d, 0xd48e, 0xd48f, 0xd490, /*0x68-0x6f*/
+ 0xd491, 0xd492, 0xd493, 0xd494, 0xd495, 0xd496, 0xd497, 0xd498, /*0x70-0x77*/
+ 0xd499, 0xd5b2, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, /*0x78-0x7f*/
+ 0xd4a0, 0xd540, 0xd541, 0xd542, 0xd543, 0xd544, 0xd545, 0xd546, /*0x80-0x87*/
+ 0xd547, 0xd3fe, 0xccdc, 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54c, /*0x88-0x8f*/
+ 0xd54d, 0xd54e, 0xd54f, 0xcac4, 0xd550, 0xd551, 0xd552, 0xd553, /*0x90-0x97*/
+ 0xd554, 0xd555, 0xd556, 0xd557, 0xd558, 0xd559, 0xd55a, 0xd55b, /*0x98-0x9f*/
+ 0xd55c, 0xd55d, 0xd55e, 0xd55f, 0xd560, 0xd561, 0xd562, 0xd563, /*0xa0-0xa7*/
+ 0xd564, 0xd565, 0xd566, 0xd567, 0xd568, 0xd569, 0xd56a, 0xd56b, /*0xa8-0xaf*/
+ 0xd56c, 0xd56d, 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, /*0xb0-0xb7*/
+ 0xd574, 0xd575, 0xd576, 0xd577, 0xd578, 0xd579, 0xd57a, 0xd57b, /*0xb8-0xbf*/
+ 0xd57c, 0xd57d, 0xd57e, 0xd580, 0xd581, 0xd582, 0xd583, 0xd584, /*0xc0-0xc7*/
+ 0xd585, 0xd586, 0xd587, 0xd588, 0xd589, 0xd58a, 0xd58b, 0xd58c, /*0xc8-0xcf*/
+ 0xd58d, 0xd58e, 0xd58f, 0xd590, 0xd591, 0xd592, 0xd593, 0xd594, /*0xd0-0xd7*/
+ 0xd595, 0xd596, 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, /*0xd8-0xdf*/
+ 0xd59d, 0xd59e, 0xd59f, 0xd5a0, 0xd640, 0xd641, 0xd642, 0xd643, /*0xe0-0xe7*/
+ 0xd644, 0xd645, 0xd646, 0xd647, 0xd648, 0xd649, 0xd64a, 0xd64b, /*0xe8-0xef*/
+ 0xd64c, 0xd64d, 0xd64e, 0xd64f, 0xd650, 0xd651, 0xd652, 0xd653, /*0xf0-0xf7*/
+ 0xd654, 0xd655, 0xd656, 0xd657, 0xd658, 0xd659, 0xd65a, 0xd65b, /*0xf8-0xff*/
+ /* 0x8b00 */
+ 0xd65c, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, 0xe5c0, /*0x00-0x07*/
+ 0xd663, 0xd664, 0xd665, 0xd666, 0xd667, 0xd668, 0xd669, 0xd66a, /*0x08-0x0f*/
+ 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0xd670, 0xd671, 0xd672, /*0x10-0x17*/
+ 0xd673, 0xd674, 0xd675, 0xd676, 0xd677, 0xd678, 0xd679, 0xd67a, /*0x18-0x1f*/
+ 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd680, 0xd681, 0xf6a5, 0xd682, /*0x20-0x27*/
+ 0xd683, 0xd684, 0xd685, 0xd686, 0xd687, 0xd688, 0xd689, 0xd68a, /*0x28-0x2f*/
+ 0xd68b, 0xd68c, 0xd68d, 0xd68e, 0xd68f, 0xd690, 0xd691, 0xd692, /*0x30-0x37*/
+ 0xd693, 0xd694, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, /*0x38-0x3f*/
+ 0xd69b, 0xd69c, 0xd69d, 0xd69e, 0xd69f, 0xd6a0, 0xd740, 0xd741, /*0x40-0x47*/
+ 0xd742, 0xd743, 0xd744, 0xd745, 0xd746, 0xd747, 0xd748, 0xd749, /*0x48-0x4f*/
+ 0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, 0xd750, 0xd751, /*0x50-0x57*/
+ 0xd752, 0xd753, 0xd754, 0xd755, 0xd756, 0xd757, 0xd758, 0xd759, /*0x58-0x5f*/
+ 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, 0xbeaf, 0xd760, /*0x60-0x67*/
+ 0xd761, 0xd762, 0xd763, 0xd764, 0xc6a9, 0xd765, 0xd766, 0xd767, /*0x68-0x6f*/
+ 0xd768, 0xd769, 0xd76a, 0xd76b, 0xd76c, 0xd76d, 0xd76e, 0xd76f, /*0x70-0x77*/
+ 0xd770, 0xd771, 0xd772, 0xd773, 0xd774, 0xd775, 0xd776, 0xd777, /*0x78-0x7f*/
+ 0xd778, 0xd779, 0xd77a, 0xd77b, 0xd77c, 0xd77d, 0xd77e, 0xd780, /*0x80-0x87*/
+ 0xd781, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0xd788, /*0x88-0x8f*/
+ 0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e, 0xd78f, 0xd790, /*0x90-0x97*/
+ 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, 0xd798, /*0x98-0x9f*/
+ 0xdaa5, 0xbcc6, 0xb6a9, 0xb8bc, 0xc8cf, 0xbca5, 0xdaa6, 0xdaa7, /*0xa0-0xa7*/
+ 0xccd6, 0xc8c3, 0xdaa8, 0xc6fd, 0xd799, 0xd1b5, 0xd2e9, 0xd1b6, /*0xa8-0xaf*/
+ 0xbcc7, 0xd79a, 0xbdb2, 0xbbe4, 0xdaa9, 0xdaaa, 0xd1c8, 0xdaab, /*0xb0-0xb7*/
+ 0xd0ed, 0xb6ef, 0xc2db, 0xd79b, 0xcbcf, 0xb7ed, 0xc9e8, 0xb7c3, /*0xb8-0xbf*/
+ 0xbef7, 0xd6a4, 0xdaac, 0xdaad, 0xc6c0, 0xd7e7, 0xcab6, 0xd79c, /*0xc0-0xc7*/
+ 0xd5a9, 0xcbdf, 0xd5ef, 0xdaae, 0xd6df, 0xb4ca, 0xdab0, 0xdaaf, /*0xc8-0xcf*/
+ 0xd79d, 0xd2eb, 0xdab1, 0xdab2, 0xdab3, 0xcad4, 0xdab4, 0xcaab, /*0xd0-0xd7*/
+ 0xdab5, 0xdab6, 0xb3cf, 0xd6ef, 0xdab7, 0xbbb0, 0xb5ae, 0xdab8, /*0xd8-0xdf*/
+ 0xdab9, 0xb9ee, 0xd1af, 0xd2e8, 0xdaba, 0xb8c3, 0xcfea, 0xb2ef, /*0xe0-0xe7*/
+ 0xdabb, 0xdabc, 0xd79e, 0xbdeb, 0xcedc, 0xd3ef, 0xdabd, 0xcef3, /*0xe8-0xef*/
+ 0xdabe, 0xd3d5, 0xbbe5, 0xdabf, 0xcbb5, 0xcbd0, 0xdac0, 0xc7eb, /*0xf0-0xf7*/
+ 0xd6ee, 0xdac1, 0xc5b5, 0xb6c1, 0xdac2, 0xb7cc, 0xbfce, 0xdac3, /*0xf8-0xff*/
+ /* 0x8c00 */
+ 0xdac4, 0xcbad, 0xdac5, 0xb5f7, 0xdac6, 0xc1c2, 0xd7bb, 0xdac7, /*0x00-0x07*/
+ 0xccb8, 0xd79f, 0xd2ea, 0xc4b1, 0xdac8, 0xb5fd, 0xbbd1, 0xdac9, /*0x08-0x0f*/
+ 0xd0b3, 0xdaca, 0xdacb, 0xcebd, 0xdacc, 0xdacd, 0xdace, 0xb2f7, /*0x10-0x17*/
+ 0xdad1, 0xdacf, 0xd1e8, 0xdad0, 0xc3d5, 0xdad2, 0xd7a0, 0xdad3, /*0x18-0x1f*/
+ 0xdad4, 0xdad5, 0xd0bb, 0xd2a5, 0xb0f9, 0xdad6, 0xc7ab, 0xdad7, /*0x20-0x27*/
+ 0xbdf7, 0xc3a1, 0xdad8, 0xdad9, 0xc3fd, 0xccb7, 0xdada, 0xdadb, /*0x28-0x2f*/
+ 0xc0be, 0xc6d7, 0xdadc, 0xdadd, 0xc7b4, 0xdade, 0xdadf, 0xb9c8, /*0x30-0x37*/
+ 0xd840, 0xd841, 0xd842, 0xd843, 0xd844, 0xd845, 0xd846, 0xd847, /*0x38-0x3f*/
+ 0xd848, 0xbbed, 0xd849, 0xd84a, 0xd84b, 0xd84c, 0xb6b9, 0xf4f8, /*0x40-0x47*/
+ 0xd84d, 0xf4f9, 0xd84e, 0xd84f, 0xcde3, 0xd850, 0xd851, 0xd852, /*0x48-0x4f*/
+ 0xd853, 0xd854, 0xd855, 0xd856, 0xd857, 0xf5b9, 0xd858, 0xd859, /*0x50-0x57*/
+ 0xd85a, 0xd85b, 0xebe0, 0xd85c, 0xd85d, 0xd85e, 0xd85f, 0xd860, /*0x58-0x5f*/
+ 0xd861, 0xcff3, 0xbbbf, 0xd862, 0xd863, 0xd864, 0xd865, 0xd866, /*0x60-0x67*/
+ 0xd867, 0xd868, 0xbac0, 0xd4a5, 0xd869, 0xd86a, 0xd86b, 0xd86c, /*0x68-0x6f*/
+ 0xd86d, 0xd86e, 0xd86f, 0xe1d9, 0xd870, 0xd871, 0xd872, 0xd873, /*0x70-0x77*/
+ 0xf5f4, 0xb1aa, 0xb2f2, 0xd874, 0xd875, 0xd876, 0xd877, 0xd878, /*0x78-0x7f*/
+ 0xd879, 0xd87a, 0xf5f5, 0xd87b, 0xd87c, 0xf5f7, 0xd87d, 0xd87e, /*0x80-0x87*/
+ 0xd880, 0xbad1, 0xf5f6, 0xd881, 0xc3b2, 0xd882, 0xd883, 0xd884, /*0x88-0x8f*/
+ 0xd885, 0xd886, 0xd887, 0xd888, 0xf5f9, 0xd889, 0xd88a, 0xd88b, /*0x90-0x97*/
+ 0xf5f8, 0xd88c, 0xd88d, 0xd88e, 0xd88f, 0xd890, 0xd891, 0xd892, /*0x98-0x9f*/
+ 0xd893, 0xd894, 0xd895, 0xd896, 0xd897, 0xd898, 0xd899, 0xd89a, /*0xa0-0xa7*/
+ 0xd89b, 0xd89c, 0xd89d, 0xd89e, 0xd89f, 0xd8a0, 0xd940, 0xd941, /*0xa8-0xaf*/
+ 0xd942, 0xd943, 0xd944, 0xd945, 0xd946, 0xd947, 0xd948, 0xd949, /*0xb0-0xb7*/
+ 0xd94a, 0xd94b, 0xd94c, 0xd94d, 0xd94e, 0xd94f, 0xd950, 0xd951, /*0xb8-0xbf*/
+ 0xd952, 0xd953, 0xd954, 0xd955, 0xd956, 0xd957, 0xd958, 0xd959, /*0xc0-0xc7*/
+ 0xd95a, 0xd95b, 0xd95c, 0xd95d, 0xd95e, 0xd95f, 0xd960, 0xd961, /*0xc8-0xcf*/
+ 0xd962, 0xd963, 0xd964, 0xd965, 0xd966, 0xd967, 0xd968, 0xd969, /*0xd0-0xd7*/
+ 0xd96a, 0xd96b, 0xd96c, 0xd96d, 0xd96e, 0xd96f, 0xd970, 0xd971, /*0xd8-0xdf*/
+ 0xd972, 0xd973, 0xd974, 0xd975, 0xd976, 0xd977, 0xd978, 0xd979, /*0xe0-0xe7*/
+ 0xd97a, 0xd97b, 0xd97c, 0xd97d, 0xd97e, 0xd980, 0xd981, 0xd982, /*0xe8-0xef*/
+ 0xd983, 0xd984, 0xd985, 0xd986, 0xd987, 0xd988, 0xd989, 0xd98a, /*0xf0-0xf7*/
+ 0xd98b, 0xd98c, 0xd98d, 0xd98e, 0xd98f, 0xd990, 0xd991, 0xd992, /*0xf8-0xff*/
+ /* 0x8d00 */
+ 0xd993, 0xd994, 0xd995, 0xd996, 0xd997, 0xd998, 0xd999, 0xd99a, /*0x00-0x07*/
+ 0xd99b, 0xd99c, 0xd99d, 0xd99e, 0xd99f, 0xd9a0, 0xda40, 0xda41, /*0x08-0x0f*/
+ 0xda42, 0xda43, 0xda44, 0xda45, 0xda46, 0xda47, 0xda48, 0xda49, /*0x10-0x17*/
+ 0xda4a, 0xda4b, 0xda4c, 0xda4d, 0xda4e, 0xb1b4, 0xd5ea, 0xb8ba, /*0x18-0x1f*/
+ 0xda4f, 0xb9b1, 0xb2c6, 0xd4f0, 0xcfcd, 0xb0dc, 0xd5cb, 0xbbf5, /*0x20-0x27*/
+ 0xd6ca, 0xb7b7, 0xccb0, 0xc6b6, 0xb1e1, 0xb9ba, 0xd6fc, 0xb9e1, /*0x28-0x2f*/
+ 0xb7a1, 0xbcfa, 0xeada, 0xeadb, 0xccf9, 0xb9f3, 0xeadc, 0xb4fb, /*0x30-0x37*/
+ 0xc3b3, 0xb7d1, 0xbad8, 0xeadd, 0xd4f4, 0xeade, 0xbcd6, 0xbbdf, /*0x38-0x3f*/
+ 0xeadf, 0xc1de, 0xc2b8, 0xd4df, 0xd7ca, 0xeae0, 0xeae1, 0xeae4, /*0x40-0x47*/
+ 0xeae2, 0xeae3, 0xc9de, 0xb8b3, 0xb6c4, 0xeae5, 0xcaea, 0xc9cd, /*0x48-0x4f*/
+ 0xb4cd, 0xda50, 0xda51, 0xe2d9, 0xc5e2, 0xeae6, 0xc0b5, 0xda52, /*0x50-0x57*/
+ 0xd7b8, 0xeae7, 0xd7ac, 0xc8fc, 0xd8d3, 0xd8cd, 0xd4de, 0xda53, /*0x58-0x5f*/
+ 0xd4f9, 0xc9c4, 0xd3ae, 0xb8d3, 0xb3e0, 0xda54, 0xc9e2, 0xf4f6, /*0x60-0x67*/
+ 0xda55, 0xda56, 0xda57, 0xbad5, 0xda58, 0xf4f7, 0xda59, 0xda5a, /*0x68-0x6f*/
+ 0xd7df, 0xda5b, 0xda5c, 0xf4f1, 0xb8b0, 0xd5d4, 0xb8cf, 0xc6f0, /*0x70-0x77*/
+ 0xda5d, 0xda5e, 0xda5f, 0xda60, 0xda61, 0xda62, 0xda63, 0xda64, /*0x78-0x7f*/
+ 0xda65, 0xb3c3, 0xda66, 0xda67, 0xf4f2, 0xb3ac, 0xda68, 0xda69, /*0x80-0x87*/
+ 0xda6a, 0xda6b, 0xd4bd, 0xc7f7, 0xda6c, 0xda6d, 0xda6e, 0xda6f, /*0x88-0x8f*/
+ 0xda70, 0xf4f4, 0xda71, 0xda72, 0xf4f3, 0xda73, 0xda74, 0xda75, /*0x90-0x97*/
+ 0xda76, 0xda77, 0xda78, 0xda79, 0xda7a, 0xda7b, 0xda7c, 0xcccb, /*0x98-0x9f*/
+ 0xda7d, 0xda7e, 0xda80, 0xc8a4, 0xda81, 0xda82, 0xda83, 0xda84, /*0xa0-0xa7*/
+ 0xda85, 0xda86, 0xda87, 0xda88, 0xda89, 0xda8a, 0xda8b, 0xda8c, /*0xa8-0xaf*/
+ 0xda8d, 0xf4f5, 0xda8e, 0xd7e3, 0xc5bf, 0xf5c0, 0xda8f, 0xda90, /*0xb0-0xb7*/
+ 0xf5bb, 0xda91, 0xf5c3, 0xda92, 0xf5c2, 0xda93, 0xd6ba, 0xf5c1, /*0xb8-0xbf*/
+ 0xda94, 0xda95, 0xda96, 0xd4be, 0xf5c4, 0xda97, 0xf5cc, 0xda98, /*0xc0-0xc7*/
+ 0xda99, 0xda9a, 0xda9b, 0xb0cf, 0xb5f8, 0xda9c, 0xf5c9, 0xf5ca, /*0xc8-0xcf*/
+ 0xda9d, 0xc5dc, 0xda9e, 0xda9f, 0xdaa0, 0xdb40, 0xf5c5, 0xf5c6, /*0xd0-0xd7*/
+ 0xdb41, 0xdb42, 0xf5c7, 0xf5cb, 0xdb43, 0xbee0, 0xf5c8, 0xb8fa, /*0xd8-0xdf*/
+ 0xdb44, 0xdb45, 0xdb46, 0xf5d0, 0xf5d3, 0xdb47, 0xdb48, 0xdb49, /*0xe0-0xe7*/
+ 0xbfe7, 0xdb4a, 0xb9f2, 0xf5bc, 0xf5cd, 0xdb4b, 0xdb4c, 0xc2b7, /*0xe8-0xef*/
+ 0xdb4d, 0xdb4e, 0xdb4f, 0xccf8, 0xdb50, 0xbcf9, 0xdb51, 0xf5ce, /*0xf0-0xf7*/
+ 0xf5cf, 0xf5d1, 0xb6e5, 0xf5d2, 0xdb52, 0xf5d5, 0xdb53, 0xdb54, /*0xf8-0xff*/
+ /* 0x8e00 */
+ 0xdb55, 0xdb56, 0xdb57, 0xdb58, 0xdb59, 0xf5bd, 0xdb5a, 0xdb5b, /*0x00-0x07*/
+ 0xdb5c, 0xf5d4, 0xd3bb, 0xdb5d, 0xb3ec, 0xdb5e, 0xdb5f, 0xcca4, /*0x08-0x0f*/
+ 0xdb60, 0xdb61, 0xdb62, 0xdb63, 0xf5d6, 0xdb64, 0xdb65, 0xdb66, /*0x10-0x17*/
+ 0xdb67, 0xdb68, 0xdb69, 0xdb6a, 0xdb6b, 0xf5d7, 0xbee1, 0xf5d8, /*0x18-0x1f*/
+ 0xdb6c, 0xdb6d, 0xccdf, 0xf5db, 0xdb6e, 0xdb6f, 0xdb70, 0xdb71, /*0x20-0x27*/
+ 0xdb72, 0xb2c8, 0xd7d9, 0xdb73, 0xf5d9, 0xdb74, 0xf5da, 0xf5dc, /*0x28-0x2f*/
+ 0xdb75, 0xf5e2, 0xdb76, 0xdb77, 0xdb78, 0xf5e0, 0xdb79, 0xdb7a, /*0x30-0x37*/
+ 0xdb7b, 0xf5df, 0xf5dd, 0xdb7c, 0xdb7d, 0xf5e1, 0xdb7e, 0xdb80, /*0x38-0x3f*/
+ 0xf5de, 0xf5e4, 0xf5e5, 0xdb81, 0xcce3, 0xdb82, 0xdb83, 0xe5bf, /*0x40-0x47*/
+ 0xb5b8, 0xf5e3, 0xf5e8, 0xcca3, 0xdb84, 0xdb85, 0xdb86, 0xdb87, /*0x48-0x4f*/
+ 0xdb88, 0xf5e6, 0xf5e7, 0xdb89, 0xdb8a, 0xdb8b, 0xdb8c, 0xdb8d, /*0x50-0x57*/
+ 0xdb8e, 0xf5be, 0xdb8f, 0xdb90, 0xdb91, 0xdb92, 0xdb93, 0xdb94, /*0x58-0x5f*/
+ 0xdb95, 0xdb96, 0xdb97, 0xdb98, 0xdb99, 0xdb9a, 0xb1c4, 0xdb9b, /*0x60-0x67*/
+ 0xdb9c, 0xf5bf, 0xdb9d, 0xdb9e, 0xb5c5, 0xb2e4, 0xdb9f, 0xf5ec, /*0x68-0x6f*/
+ 0xf5e9, 0xdba0, 0xb6d7, 0xdc40, 0xf5ed, 0xdc41, 0xf5ea, 0xdc42, /*0x70-0x77*/
+ 0xdc43, 0xdc44, 0xdc45, 0xdc46, 0xf5eb, 0xdc47, 0xdc48, 0xb4da, /*0x78-0x7f*/
+ 0xdc49, 0xd4ea, 0xdc4a, 0xdc4b, 0xdc4c, 0xf5ee, 0xdc4d, 0xb3f9, /*0x80-0x87*/
+ 0xdc4e, 0xdc4f, 0xdc50, 0xdc51, 0xdc52, 0xdc53, 0xdc54, 0xf5ef, /*0x88-0x8f*/
+ 0xf5f1, 0xdc55, 0xdc56, 0xdc57, 0xf5f0, 0xdc58, 0xdc59, 0xdc5a, /*0x90-0x97*/
+ 0xdc5b, 0xdc5c, 0xdc5d, 0xdc5e, 0xf5f2, 0xdc5f, 0xf5f3, 0xdc60, /*0x98-0x9f*/
+ 0xdc61, 0xdc62, 0xdc63, 0xdc64, 0xdc65, 0xdc66, 0xdc67, 0xdc68, /*0xa0-0xa7*/
+ 0xdc69, 0xdc6a, 0xdc6b, 0xc9ed, 0xb9aa, 0xdc6c, 0xdc6d, 0xc7fb, /*0xa8-0xaf*/
+ 0xdc6e, 0xdc6f, 0xb6e3, 0xdc70, 0xdc71, 0xdc72, 0xdc73, 0xdc74, /*0xb0-0xb7*/
+ 0xdc75, 0xdc76, 0xccc9, 0xdc77, 0xdc78, 0xdc79, 0xdc7a, 0xdc7b, /*0xb8-0xbf*/
+ 0xdc7c, 0xdc7d, 0xdc7e, 0xdc80, 0xdc81, 0xdc82, 0xdc83, 0xdc84, /*0xc0-0xc7*/
+ 0xdc85, 0xdc86, 0xdc87, 0xdc88, 0xdc89, 0xdc8a, 0xeaa6, 0xdc8b, /*0xc8-0xcf*/
+ 0xdc8c, 0xdc8d, 0xdc8e, 0xdc8f, 0xdc90, 0xdc91, 0xdc92, 0xdc93, /*0xd0-0xd7*/
+ 0xdc94, 0xdc95, 0xdc96, 0xdc97, 0xdc98, 0xdc99, 0xdc9a, 0xdc9b, /*0xd8-0xdf*/
+ 0xdc9c, 0xdc9d, 0xdc9e, 0xdc9f, 0xdca0, 0xdd40, 0xdd41, 0xdd42, /*0xe0-0xe7*/
+ 0xdd43, 0xdd44, 0xdd45, 0xdd46, 0xdd47, 0xdd48, 0xdd49, 0xdd4a, /*0xe8-0xef*/
+ 0xdd4b, 0xdd4c, 0xdd4d, 0xdd4e, 0xdd4f, 0xdd50, 0xdd51, 0xdd52, /*0xf0-0xf7*/
+ 0xdd53, 0xdd54, 0xdd55, 0xdd56, 0xdd57, 0xdd58, 0xdd59, 0xdd5a, /*0xf8-0xff*/
+ /* 0x8f00 */
+ 0xdd5b, 0xdd5c, 0xdd5d, 0xdd5e, 0xdd5f, 0xdd60, 0xdd61, 0xdd62, /*0x00-0x07*/
+ 0xdd63, 0xdd64, 0xdd65, 0xdd66, 0xdd67, 0xdd68, 0xdd69, 0xdd6a, /*0x08-0x0f*/
+ 0xdd6b, 0xdd6c, 0xdd6d, 0xdd6e, 0xdd6f, 0xdd70, 0xdd71, 0xdd72, /*0x10-0x17*/
+ 0xdd73, 0xdd74, 0xdd75, 0xdd76, 0xdd77, 0xdd78, 0xdd79, 0xdd7a, /*0x18-0x1f*/
+ 0xdd7b, 0xdd7c, 0xdd7d, 0xdd7e, 0xdd80, 0xdd81, 0xdd82, 0xdd83, /*0x20-0x27*/
+ 0xdd84, 0xdd85, 0xdd86, 0xdd87, 0xdd88, 0xdd89, 0xdd8a, 0xdd8b, /*0x28-0x2f*/
+ 0xdd8c, 0xdd8d, 0xdd8e, 0xdd8f, 0xdd90, 0xdd91, 0xdd92, 0xdd93, /*0x30-0x37*/
+ 0xdd94, 0xdd95, 0xdd96, 0xdd97, 0xdd98, 0xdd99, 0xdd9a, 0xdd9b, /*0x38-0x3f*/
+ 0xdd9c, 0xdd9d, 0xdd9e, 0xdd9f, 0xdda0, 0xde40, 0xde41, 0xde42, /*0x40-0x47*/
+ 0xde43, 0xde44, 0xde45, 0xde46, 0xde47, 0xde48, 0xde49, 0xde4a, /*0x48-0x4f*/
+ 0xde4b, 0xde4c, 0xde4d, 0xde4e, 0xde4f, 0xde50, 0xde51, 0xde52, /*0x50-0x57*/
+ 0xde53, 0xde54, 0xde55, 0xde56, 0xde57, 0xde58, 0xde59, 0xde5a, /*0x58-0x5f*/
+ 0xde5b, 0xde5c, 0xde5d, 0xde5e, 0xde5f, 0xde60, 0xb3b5, 0xd4fe, /*0x60-0x67*/
+ 0xb9ec, 0xd0f9, 0xde61, 0xe9ed, 0xd7aa, 0xe9ee, 0xc2d6, 0xc8ed, /*0x68-0x6f*/
+ 0xbae4, 0xe9ef, 0xe9f0, 0xe9f1, 0xd6e1, 0xe9f2, 0xe9f3, 0xe9f5, /*0x70-0x77*/
+ 0xe9f4, 0xe9f6, 0xe9f7, 0xc7e1, 0xe9f8, 0xd4d8, 0xe9f9, 0xbdce, /*0x78-0x7f*/
+ 0xde62, 0xe9fa, 0xe9fb, 0xbdcf, 0xe9fc, 0xb8a8, 0xc1be, 0xe9fd, /*0x80-0x87*/
+ 0xb1b2, 0xbbd4, 0xb9f5, 0xe9fe, 0xde63, 0xeaa1, 0xeaa2, 0xeaa3, /*0x88-0x8f*/
+ 0xb7f8, 0xbcad, 0xde64, 0xcae4, 0xe0ce, 0xd4af, 0xcfbd, 0xd5b7, /*0x90-0x97*/
+ 0xeaa4, 0xd5de, 0xeaa5, 0xd0c1, 0xb9bc, 0xde65, 0xb4c7, 0xb1d9, /*0x98-0x9f*/
+ 0xde66, 0xde67, 0xde68, 0xc0b1, 0xde69, 0xde6a, 0xde6b, 0xde6c, /*0xa0-0xa7*/
+ 0xb1e6, 0xb1e7, 0xde6d, 0xb1e8, 0xde6e, 0xde6f, 0xde70, 0xde71, /*0xa8-0xaf*/
+ 0xb3bd, 0xc8e8, 0xde72, 0xde73, 0xde74, 0xde75, 0xe5c1, 0xde76, /*0xb0-0xb7*/
+ 0xde77, 0xb1df, 0xde78, 0xde79, 0xde7a, 0xc1c9, 0xb4ef, 0xde7b, /*0xb8-0xbf*/
+ 0xde7c, 0xc7a8, 0xd3d8, 0xde7d, 0xc6f9, 0xd1b8, 0xde7e, 0xb9fd, /*0xc0-0xc7*/
+ 0xc2f5, 0xde80, 0xde81, 0xde82, 0xde83, 0xde84, 0xd3ad, 0xde85, /*0xc8-0xcf*/
+ 0xd4cb, 0xbdfc, 0xde86, 0xe5c2, 0xb7b5, 0xe5c3, 0xde87, 0xde88, /*0xd0-0xd7*/
+ 0xbbb9, 0xd5e2, 0xde89, 0xbdf8, 0xd4b6, 0xcea5, 0xc1ac, 0xb3d9, /*0xd8-0xdf*/
+ 0xde8a, 0xde8b, 0xccf6, 0xde8c, 0xe5c6, 0xe5c4, 0xe5c8, 0xde8d, /*0xe0-0xe7*/
+ 0xe5ca, 0xe5c7, 0xb5cf, 0xc6c8, 0xde8e, 0xb5fc, 0xe5c5, 0xde8f, /*0xe8-0xef*/
+ 0xcaf6, 0xde90, 0xde91, 0xe5c9, 0xde92, 0xde93, 0xde94, 0xc3d4, /*0xf0-0xf7*/
+ 0xb1c5, 0xbca3, 0xde95, 0xde96, 0xde97, 0xd7b7, 0xde98, 0xde99, /*0xf8-0xff*/
+ /* 0x9000 */
+ 0xcdcb, 0xcbcd, 0xcaca, 0xccd3, 0xe5cc, 0xe5cb, 0xc4e6, 0xde9a, /*0x00-0x07*/
+ 0xde9b, 0xd1a1, 0xd1b7, 0xe5cd, 0xde9c, 0xe5d0, 0xde9d, 0xcdb8, /*0x08-0x0f*/
+ 0xd6f0, 0xe5cf, 0xb5dd, 0xde9e, 0xcdbe, 0xde9f, 0xe5d1, 0xb6ba, /*0x10-0x17*/
+ 0xdea0, 0xdf40, 0xcda8, 0xb9e4, 0xdf41, 0xcac5, 0xb3d1, 0xcbd9, /*0x18-0x1f*/
+ 0xd4ec, 0xe5d2, 0xb7ea, 0xdf42, 0xdf43, 0xdf44, 0xe5ce, 0xdf45, /*0x20-0x27*/
+ 0xdf46, 0xdf47, 0xdf48, 0xdf49, 0xdf4a, 0xe5d5, 0xb4fe, 0xe5d6, /*0x28-0x2f*/
+ 0xdf4b, 0xdf4c, 0xdf4d, 0xdf4e, 0xdf4f, 0xe5d3, 0xe5d4, 0xdf50, /*0x30-0x37*/
+ 0xd2dd, 0xdf51, 0xdf52, 0xc2df, 0xb1c6, 0xdf53, 0xd3e2, 0xdf54, /*0x38-0x3f*/
+ 0xdf55, 0xb6dd, 0xcbec, 0xdf56, 0xe5d7, 0xdf57, 0xdf58, 0xd3f6, /*0x40-0x47*/
+ 0xdf59, 0xdf5a, 0xdf5b, 0xdf5c, 0xdf5d, 0xb1e9, 0xdf5e, 0xb6f4, /*0x48-0x4f*/
+ 0xe5da, 0xe5d8, 0xe5d9, 0xb5c0, 0xdf5f, 0xdf60, 0xdf61, 0xd2c5, /*0x50-0x57*/
+ 0xe5dc, 0xdf62, 0xdf63, 0xe5de, 0xdf64, 0xdf65, 0xdf66, 0xdf67, /*0x58-0x5f*/
+ 0xdf68, 0xdf69, 0xe5dd, 0xc7b2, 0xdf6a, 0xd2a3, 0xdf6b, 0xdf6c, /*0x60-0x67*/
+ 0xe5db, 0xdf6d, 0xdf6e, 0xdf6f, 0xdf70, 0xd4e2, 0xd5da, 0xdf71, /*0x68-0x6f*/
+ 0xdf72, 0xdf73, 0xdf74, 0xdf75, 0xe5e0, 0xd7f1, 0xdf76, 0xdf77, /*0x70-0x77*/
+ 0xdf78, 0xdf79, 0xdf7a, 0xdf7b, 0xdf7c, 0xe5e1, 0xdf7d, 0xb1dc, /*0x78-0x7f*/
+ 0xd1fb, 0xdf7e, 0xe5e2, 0xe5e4, 0xdf80, 0xdf81, 0xdf82, 0xdf83, /*0x80-0x87*/
+ 0xe5e3, 0xdf84, 0xdf85, 0xe5e5, 0xdf86, 0xdf87, 0xdf88, 0xdf89, /*0x88-0x8f*/
+ 0xdf8a, 0xd2d8, 0xdf8b, 0xb5cb, 0xdf8c, 0xe7df, 0xdf8d, 0xdaf5, /*0x90-0x97*/
+ 0xdf8e, 0xdaf8, 0xdf8f, 0xdaf6, 0xdf90, 0xdaf7, 0xdf91, 0xdf92, /*0x98-0x9f*/
+ 0xdf93, 0xdafa, 0xd0cf, 0xc4c7, 0xdf94, 0xdf95, 0xb0ee, 0xdf96, /*0xa0-0xa7*/
+ 0xdf97, 0xdf98, 0xd0b0, 0xdf99, 0xdaf9, 0xdf9a, 0xd3ca, 0xbaaa, /*0xa8-0xaf*/
+ 0xdba2, 0xc7f1, 0xdf9b, 0xdafc, 0xdafb, 0xc9db, 0xdafd, 0xdf9c, /*0xb0-0xb7*/
+ 0xdba1, 0xd7de, 0xdafe, 0xc1da, 0xdf9d, 0xdf9e, 0xdba5, 0xdf9f, /*0xb8-0xbf*/
+ 0xdfa0, 0xd3f4, 0xe040, 0xe041, 0xdba7, 0xdba4, 0xe042, 0xdba8, /*0xc0-0xc7*/
+ 0xe043, 0xe044, 0xbdbc, 0xe045, 0xe046, 0xe047, 0xc0c9, 0xdba3, /*0xc8-0xcf*/
+ 0xdba6, 0xd6a3, 0xe048, 0xdba9, 0xe049, 0xe04a, 0xe04b, 0xdbad, /*0xd0-0xd7*/
+ 0xe04c, 0xe04d, 0xe04e, 0xdbae, 0xdbac, 0xbac2, 0xe04f, 0xe050, /*0xd8-0xdf*/
+ 0xe051, 0xbfa4, 0xdbab, 0xe052, 0xe053, 0xe054, 0xdbaa, 0xd4c7, /*0xe0-0xe7*/
+ 0xb2bf, 0xe055, 0xe056, 0xdbaf, 0xe057, 0xb9f9, 0xe058, 0xdbb0, /*0xe8-0xef*/
+ 0xe059, 0xe05a, 0xe05b, 0xe05c, 0xb3bb, 0xe05d, 0xe05e, 0xe05f, /*0xf0-0xf7*/
+ 0xb5a6, 0xe060, 0xe061, 0xe062, 0xe063, 0xb6bc, 0xdbb1, 0xe064, /*0xf8-0xff*/
+ /* 0x9100 */
+ 0xe065, 0xe066, 0xb6f5, 0xe067, 0xdbb2, 0xe068, 0xe069, 0xe06a, /*0x00-0x07*/
+ 0xe06b, 0xe06c, 0xe06d, 0xe06e, 0xe06f, 0xe070, 0xe071, 0xe072, /*0x08-0x0f*/
+ 0xe073, 0xe074, 0xe075, 0xe076, 0xe077, 0xe078, 0xe079, 0xe07a, /*0x10-0x17*/
+ 0xe07b, 0xb1c9, 0xe07c, 0xe07d, 0xe07e, 0xe080, 0xdbb4, 0xe081, /*0x18-0x1f*/
+ 0xe082, 0xe083, 0xdbb3, 0xdbb5, 0xe084, 0xe085, 0xe086, 0xe087, /*0x20-0x27*/
+ 0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xdbb7, /*0x28-0x2f*/
+ 0xe08f, 0xdbb6, 0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095, /*0x30-0x37*/
+ 0xe096, 0xdbb8, 0xe097, 0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c, /*0x38-0x3f*/
+ 0xe09d, 0xe09e, 0xe09f, 0xdbb9, 0xe0a0, 0xe140, 0xdbba, 0xe141, /*0x40-0x47*/
+ 0xe142, 0xd3cf, 0xf4fa, 0xc7f5, 0xd7c3, 0xc5e4, 0xf4fc, 0xf4fd, /*0x48-0x4f*/
+ 0xf4fb, 0xe143, 0xbec6, 0xe144, 0xe145, 0xe146, 0xe147, 0xd0ef, /*0x50-0x57*/
+ 0xe148, 0xe149, 0xb7d3, 0xe14a, 0xe14b, 0xd4cd, 0xccaa, 0xe14c, /*0x58-0x5f*/
+ 0xe14d, 0xf5a2, 0xf5a1, 0xbaa8, 0xf4fe, 0xcbd6, 0xe14e, 0xe14f, /*0x60-0x67*/
+ 0xe150, 0xf5a4, 0xc0d2, 0xe151, 0xb3ea, 0xe152, 0xcdaa, 0xf5a5, /*0x68-0x6f*/
+ 0xf5a3, 0xbdb4, 0xf5a8, 0xe153, 0xf5a9, 0xbdcd, 0xc3b8, 0xbfe1, /*0x70-0x77*/
+ 0xcbe1, 0xf5aa, 0xe154, 0xe155, 0xe156, 0xf5a6, 0xf5a7, 0xc4f0, /*0x78-0x7f*/
+ 0xe157, 0xe158, 0xe159, 0xe15a, 0xe15b, 0xf5ac, 0xe15c, 0xb4bc, /*0x80-0x87*/
+ 0xe15d, 0xd7ed, 0xe15e, 0xb4d7, 0xf5ab, 0xf5ae, 0xe15f, 0xe160, /*0x88-0x8f*/
+ 0xf5ad, 0xf5af, 0xd0d1, 0xe161, 0xe162, 0xe163, 0xe164, 0xe165, /*0x90-0x97*/
+ 0xe166, 0xe167, 0xc3d1, 0xc8a9, 0xe168, 0xe169, 0xe16a, 0xe16b, /*0x98-0x9f*/
+ 0xe16c, 0xe16d, 0xf5b0, 0xf5b1, 0xe16e, 0xe16f, 0xe170, 0xe171, /*0xa0-0xa7*/
+ 0xe172, 0xe173, 0xf5b2, 0xe174, 0xe175, 0xf5b3, 0xf5b4, 0xf5b5, /*0xa8-0xaf*/
+ 0xe176, 0xe177, 0xe178, 0xe179, 0xf5b7, 0xf5b6, 0xe17a, 0xe17b, /*0xb0-0xb7*/
+ 0xe17c, 0xe17d, 0xf5b8, 0xe17e, 0xe180, 0xe181, 0xe182, 0xe183, /*0xb8-0xbf*/
+ 0xe184, 0xe185, 0xe186, 0xe187, 0xe188, 0xe189, 0xe18a, 0xb2c9, /*0xc0-0xc7*/
+ 0xe18b, 0xd3d4, 0xcacd, 0xe18c, 0xc0ef, 0xd6d8, 0xd2b0, 0xc1bf, /*0xc8-0xcf*/
+ 0xe18d, 0xbdf0, 0xe18e, 0xe18f, 0xe190, 0xe191, 0xe192, 0xe193, /*0xd0-0xd7*/
+ 0xe194, 0xe195, 0xe196, 0xe197, 0xb8aa, 0xe198, 0xe199, 0xe19a, /*0xd8-0xdf*/
+ 0xe19b, 0xe19c, 0xe19d, 0xe19e, 0xe19f, 0xe1a0, 0xe240, 0xe241, /*0xe0-0xe7*/
+ 0xe242, 0xe243, 0xe244, 0xe245, 0xe246, 0xe247, 0xe248, 0xe249, /*0xe8-0xef*/
+ 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f, 0xe250, 0xe251, /*0xf0-0xf7*/
+ 0xe252, 0xe253, 0xe254, 0xe255, 0xe256, 0xe257, 0xe258, 0xe259, /*0xf8-0xff*/
+ /* 0x9200 */
+ 0xe25a, 0xe25b, 0xe25c, 0xe25d, 0xe25e, 0xe25f, 0xe260, 0xe261, /*0x00-0x07*/
+ 0xe262, 0xe263, 0xe264, 0xe265, 0xe266, 0xe267, 0xe268, 0xe269, /*0x08-0x0f*/
+ 0xe26a, 0xe26b, 0xe26c, 0xe26d, 0xe26e, 0xe26f, 0xe270, 0xe271, /*0x10-0x17*/
+ 0xe272, 0xe273, 0xe274, 0xe275, 0xe276, 0xe277, 0xe278, 0xe279, /*0x18-0x1f*/
+ 0xe27a, 0xe27b, 0xe27c, 0xe27d, 0xe27e, 0xe280, 0xe281, 0xe282, /*0x20-0x27*/
+ 0xe283, 0xe284, 0xe285, 0xe286, 0xe287, 0xe288, 0xe289, 0xe28a, /*0x28-0x2f*/
+ 0xe28b, 0xe28c, 0xe28d, 0xe28e, 0xe28f, 0xe290, 0xe291, 0xe292, /*0x30-0x37*/
+ 0xe293, 0xe294, 0xe295, 0xe296, 0xe297, 0xe298, 0xe299, 0xe29a, /*0x38-0x3f*/
+ 0xe29b, 0xe29c, 0xe29d, 0xe29e, 0xe29f, 0xe2a0, 0xe340, 0xe341, /*0x40-0x47*/
+ 0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, 0xe348, 0xe349, /*0x48-0x4f*/
+ 0xe34a, 0xe34b, 0xe34c, 0xe34d, 0xe34e, 0xe34f, 0xe350, 0xe351, /*0x50-0x57*/
+ 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, 0xe358, 0xe359, /*0x58-0x5f*/
+ 0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f, 0xe360, 0xe361, /*0x60-0x67*/
+ 0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367, 0xe368, 0xe369, /*0x68-0x6f*/
+ 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xbcf8, 0xe36e, 0xe36f, 0xe370, /*0x70-0x77*/
+ 0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377, 0xe378, /*0x78-0x7f*/
+ 0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe380, 0xe381, /*0x80-0x87*/
+ 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, 0xf6c6, 0xe388, /*0x88-0x8f*/
+ 0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f, 0xe390, /*0x90-0x97*/
+ 0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397, 0xe398, /*0x98-0x9f*/
+ 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, 0xe3a0, /*0xa0-0xa7*/
+ 0xe440, 0xe441, 0xe442, 0xe443, 0xe444, 0xe445, 0xf6c7, 0xe446, /*0xa8-0xaf*/
+ 0xe447, 0xe448, 0xe449, 0xe44a, 0xe44b, 0xe44c, 0xe44d, 0xe44e, /*0xb0-0xb7*/
+ 0xe44f, 0xe450, 0xe451, 0xe452, 0xe453, 0xe454, 0xe455, 0xe456, /*0xb8-0xbf*/
+ 0xe457, 0xe458, 0xe459, 0xe45a, 0xe45b, 0xe45c, 0xe45d, 0xe45e, /*0xc0-0xc7*/
+ 0xf6c8, 0xe45f, 0xe460, 0xe461, 0xe462, 0xe463, 0xe464, 0xe465, /*0xc8-0xcf*/
+ 0xe466, 0xe467, 0xe468, 0xe469, 0xe46a, 0xe46b, 0xe46c, 0xe46d, /*0xd0-0xd7*/
+ 0xe46e, 0xe46f, 0xe470, 0xe471, 0xe472, 0xe473, 0xe474, 0xe475, /*0xd8-0xdf*/
+ 0xe476, 0xe477, 0xe478, 0xe479, 0xe47a, 0xe47b, 0xe47c, 0xe47d, /*0xe0-0xe7*/
+ 0xe47e, 0xe480, 0xe481, 0xe482, 0xe483, 0xe484, 0xe485, 0xe486, /*0xe8-0xef*/
+ 0xe487, 0xe488, 0xe489, 0xe48a, 0xe48b, 0xe48c, 0xe48d, 0xe48e, /*0xf0-0xf7*/
+ 0xe48f, 0xe490, 0xe491, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496, /*0xf8-0xff*/
+ /* 0x9300 */
+ 0xe497, 0xe498, 0xe499, 0xe49a, 0xe49b, 0xe49c, 0xe49d, 0xe49e, /*0x00-0x07*/
+ 0xe49f, 0xe4a0, 0xe540, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545, /*0x08-0x0f*/
+ 0xe546, 0xe547, 0xe548, 0xe549, 0xe54a, 0xe54b, 0xe54c, 0xe54d, /*0x10-0x17*/
+ 0xe54e, 0xe54f, 0xe550, 0xe551, 0xe552, 0xe553, 0xe554, 0xe555, /*0x18-0x1f*/
+ 0xe556, 0xe557, 0xe558, 0xe559, 0xe55a, 0xe55b, 0xe55c, 0xe55d, /*0x20-0x27*/
+ 0xe55e, 0xe55f, 0xe560, 0xe561, 0xe562, 0xe563, 0xe564, 0xe565, /*0x28-0x2f*/
+ 0xe566, 0xe567, 0xe568, 0xe569, 0xe56a, 0xe56b, 0xe56c, 0xe56d, /*0x30-0x37*/
+ 0xe56e, 0xe56f, 0xe570, 0xe571, 0xe572, 0xe573, 0xf6c9, 0xe574, /*0x38-0x3f*/
+ 0xe575, 0xe576, 0xe577, 0xe578, 0xe579, 0xe57a, 0xe57b, 0xe57c, /*0x40-0x47*/
+ 0xe57d, 0xe57e, 0xe580, 0xe581, 0xe582, 0xe583, 0xe584, 0xe585, /*0x48-0x4f*/
+ 0xe586, 0xe587, 0xe588, 0xe589, 0xe58a, 0xe58b, 0xe58c, 0xe58d, /*0x50-0x57*/
+ 0xe58e, 0xe58f, 0xe590, 0xe591, 0xe592, 0xe593, 0xe594, 0xe595, /*0x58-0x5f*/
+ 0xe596, 0xe597, 0xe598, 0xe599, 0xe59a, 0xe59b, 0xe59c, 0xe59d, /*0x60-0x67*/
+ 0xe59e, 0xe59f, 0xf6ca, 0xe5a0, 0xe640, 0xe641, 0xe642, 0xe643, /*0x68-0x6f*/
+ 0xe644, 0xe645, 0xe646, 0xe647, 0xe648, 0xe649, 0xe64a, 0xe64b, /*0x70-0x77*/
+ 0xe64c, 0xe64d, 0xe64e, 0xe64f, 0xe650, 0xe651, 0xe652, 0xe653, /*0x78-0x7f*/
+ 0xe654, 0xe655, 0xe656, 0xe657, 0xe658, 0xe659, 0xe65a, 0xe65b, /*0x80-0x87*/
+ 0xe65c, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0xe661, 0xe662, 0xf6cc, /*0x88-0x8f*/
+ 0xe663, 0xe664, 0xe665, 0xe666, 0xe667, 0xe668, 0xe669, 0xe66a, /*0x90-0x97*/
+ 0xe66b, 0xe66c, 0xe66d, 0xe66e, 0xe66f, 0xe670, 0xe671, 0xe672, /*0x98-0x9f*/
+ 0xe673, 0xe674, 0xe675, 0xe676, 0xe677, 0xe678, 0xe679, 0xe67a, /*0xa0-0xa7*/
+ 0xe67b, 0xe67c, 0xe67d, 0xe67e, 0xe680, 0xe681, 0xe682, 0xe683, /*0xa8-0xaf*/
+ 0xe684, 0xe685, 0xe686, 0xe687, 0xe688, 0xe689, 0xe68a, 0xe68b, /*0xb0-0xb7*/
+ 0xe68c, 0xe68d, 0xe68e, 0xe68f, 0xe690, 0xe691, 0xe692, 0xe693, /*0xb8-0xbf*/
+ 0xe694, 0xe695, 0xe696, 0xe697, 0xe698, 0xe699, 0xe69a, 0xe69b, /*0xc0-0xc7*/
+ 0xe69c, 0xe69d, 0xf6cb, 0xe69e, 0xe69f, 0xe6a0, 0xe740, 0xe741, /*0xc8-0xcf*/
+ 0xe742, 0xe743, 0xe744, 0xe745, 0xe746, 0xe747, 0xf7e9, 0xe748, /*0xd0-0xd7*/
+ 0xe749, 0xe74a, 0xe74b, 0xe74c, 0xe74d, 0xe74e, 0xe74f, 0xe750, /*0xd8-0xdf*/
+ 0xe751, 0xe752, 0xe753, 0xe754, 0xe755, 0xe756, 0xe757, 0xe758, /*0xe0-0xe7*/
+ 0xe759, 0xe75a, 0xe75b, 0xe75c, 0xe75d, 0xe75e, 0xe75f, 0xe760, /*0xe8-0xef*/
+ 0xe761, 0xe762, 0xe763, 0xe764, 0xe765, 0xe766, 0xe767, 0xe768, /*0xf0-0xf7*/
+ 0xe769, 0xe76a, 0xe76b, 0xe76c, 0xe76d, 0xe76e, 0xe76f, 0xe770, /*0xf8-0xff*/
+ /* 0x9400 */
+ 0xe771, 0xe772, 0xe773, 0xe774, 0xe775, 0xe776, 0xe777, 0xe778, /*0x00-0x07*/
+ 0xe779, 0xe77a, 0xe77b, 0xe77c, 0xe77d, 0xe77e, 0xe780, 0xe781, /*0x08-0x0f*/
+ 0xe782, 0xe783, 0xe784, 0xe785, 0xe786, 0xe787, 0xe788, 0xe789, /*0x10-0x17*/
+ 0xe78a, 0xe78b, 0xe78c, 0xe78d, 0xe78e, 0xe78f, 0xe790, 0xe791, /*0x18-0x1f*/
+ 0xe792, 0xe793, 0xe794, 0xe795, 0xe796, 0xe797, 0xe798, 0xe799, /*0x20-0x27*/
+ 0xe79a, 0xe79b, 0xe79c, 0xe79d, 0xe79e, 0xe79f, 0xe7a0, 0xe840, /*0x28-0x2f*/
+ 0xe841, 0xe842, 0xe843, 0xe844, 0xe845, 0xe846, 0xe847, 0xe848, /*0x30-0x37*/
+ 0xe849, 0xe84a, 0xe84b, 0xe84c, 0xe84d, 0xe84e, 0xf6cd, 0xe84f, /*0x38-0x3f*/
+ 0xe850, 0xe851, 0xe852, 0xe853, 0xe854, 0xe855, 0xe856, 0xe857, /*0x40-0x47*/
+ 0xe858, 0xe859, 0xe85a, 0xe85b, 0xe85c, 0xe85d, 0xe85e, 0xe85f, /*0x48-0x4f*/
+ 0xe860, 0xe861, 0xe862, 0xe863, 0xe864, 0xe865, 0xe866, 0xe867, /*0x50-0x57*/
+ 0xe868, 0xe869, 0xe86a, 0xe86b, 0xe86c, 0xe86d, 0xe86e, 0xe86f, /*0x58-0x5f*/
+ 0xe870, 0xe871, 0xe872, 0xe873, 0xe874, 0xe875, 0xe876, 0xe877, /*0x60-0x67*/
+ 0xe878, 0xe879, 0xe87a, 0xf6ce, 0xe87b, 0xe87c, 0xe87d, 0xe87e, /*0x68-0x6f*/
+ 0xe880, 0xe881, 0xe882, 0xe883, 0xe884, 0xe885, 0xe886, 0xe887, /*0x70-0x77*/
+ 0xe888, 0xe889, 0xe88a, 0xe88b, 0xe88c, 0xe88d, 0xe88e, 0xe88f, /*0x78-0x7f*/
+ 0xe890, 0xe891, 0xe892, 0xe893, 0xe894, 0xeec4, 0xeec5, 0xeec6, /*0x80-0x87*/
+ 0xd5eb, 0xb6a4, 0xeec8, 0xeec7, 0xeec9, 0xeeca, 0xc7a5, 0xeecb, /*0x88-0x8f*/
+ 0xeecc, 0xe895, 0xb7b0, 0xb5f6, 0xeecd, 0xeecf, 0xe896, 0xeece, /*0x90-0x97*/
+ 0xe897, 0xb8c6, 0xeed0, 0xeed1, 0xeed2, 0xb6db, 0xb3ae, 0xd6d3, /*0x98-0x9f*/
+ 0xc4c6, 0xb1b5, 0xb8d6, 0xeed3, 0xeed4, 0xd4bf, 0xc7d5, 0xbefb, /*0xa0-0xa7*/
+ 0xced9, 0xb9b3, 0xeed6, 0xeed5, 0xeed8, 0xeed7, 0xc5a5, 0xeed9, /*0xa8-0xaf*/
+ 0xeeda, 0xc7ae, 0xeedb, 0xc7af, 0xeedc, 0xb2a7, 0xeedd, 0xeede, /*0xb0-0xb7*/
+ 0xeedf, 0xeee0, 0xeee1, 0xd7ea, 0xeee2, 0xeee3, 0xbcd8, 0xeee4, /*0xb8-0xbf*/
+ 0xd3cb, 0xccfa, 0xb2ac, 0xc1e5, 0xeee5, 0xc7a6, 0xc3ad, 0xe898, /*0xc0-0xc7*/
+ 0xeee6, 0xeee7, 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xe899, /*0xc8-0xcf*/
+ 0xeeed, 0xeeee, 0xeeef, 0xe89a, 0xe89b, 0xeef0, 0xeef1, 0xeef2, /*0xd0-0xd7*/
+ 0xeef4, 0xeef3, 0xe89c, 0xeef5, 0xcdad, 0xc2c1, 0xeef6, 0xeef7, /*0xd8-0xdf*/
+ 0xeef8, 0xd5a1, 0xeef9, 0xcfb3, 0xeefa, 0xeefb, 0xe89d, 0xeefc, /*0xe0-0xe7*/
+ 0xeefd, 0xefa1, 0xeefe, 0xefa2, 0xb8f5, 0xc3fa, 0xefa3, 0xefa4, /*0xe8-0xef*/
+ 0xbdc2, 0xd2bf, 0xb2f9, 0xefa5, 0xefa6, 0xefa7, 0xd2f8, 0xefa8, /*0xf0-0xf7*/
+ 0xd6fd, 0xefa9, 0xc6cc, 0xe89e, 0xefaa, 0xefab, 0xc1b4, 0xefac, /*0xf8-0xff*/
+ /* 0x9500 */
+ 0xcffa, 0xcbf8, 0xefae, 0xefad, 0xb3fa, 0xb9f8, 0xefaf, 0xefb0, /*0x00-0x07*/
+ 0xd0e2, 0xefb1, 0xefb2, 0xb7e6, 0xd0bf, 0xefb3, 0xefb4, 0xefb5, /*0x08-0x0f*/
+ 0xc8f1, 0xcce0, 0xefb6, 0xefb7, 0xefb8, 0xefb9, 0xefba, 0xd5e0, /*0x10-0x17*/
+ 0xefbb, 0xb4ed, 0xc3aa, 0xefbc, 0xe89f, 0xefbd, 0xefbe, 0xefbf, /*0x18-0x1f*/
+ 0xe8a0, 0xcefd, 0xefc0, 0xc2e0, 0xb4b8, 0xd7b6, 0xbdf5, 0xe940, /*0x20-0x27*/
+ 0xcfc7, 0xefc3, 0xefc1, 0xefc2, 0xefc4, 0xb6a7, 0xbcfc, 0xbee2, /*0x28-0x2f*/
+ 0xc3cc, 0xefc5, 0xefc6, 0xe941, 0xefc7, 0xefcf, 0xefc8, 0xefc9, /*0x30-0x37*/
+ 0xefca, 0xc7c2, 0xeff1, 0xb6cd, 0xefcb, 0xe942, 0xefcc, 0xefcd, /*0x38-0x3f*/
+ 0xb6c6, 0xc3be, 0xefce, 0xe943, 0xefd0, 0xefd1, 0xefd2, 0xd5f2, /*0x40-0x47*/
+ 0xe944, 0xefd3, 0xc4f7, 0xe945, 0xefd4, 0xc4f8, 0xefd5, 0xefd6, /*0x48-0x4f*/
+ 0xb8e4, 0xb0f7, 0xefd7, 0xefd8, 0xefd9, 0xe946, 0xefda, 0xefdb, /*0x50-0x57*/
+ 0xefdc, 0xefdd, 0xe947, 0xefde, 0xbeb5, 0xefe1, 0xefdf, 0xefe0, /*0x58-0x5f*/
+ 0xe948, 0xefe2, 0xefe3, 0xc1cd, 0xefe4, 0xefe5, 0xefe6, 0xefe7, /*0x60-0x67*/
+ 0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec, 0xc0d8, 0xe949, 0xefed, /*0x68-0x6f*/
+ 0xc1ad, 0xefee, 0xefef, 0xeff0, 0xe94a, 0xe94b, 0xcfe2, 0xe94c, /*0x70-0x77*/
+ 0xe94d, 0xe94e, 0xe94f, 0xe950, 0xe951, 0xe952, 0xe953, 0xb3a4, /*0x78-0x7f*/
+ 0xe954, 0xe955, 0xe956, 0xe957, 0xe958, 0xe959, 0xe95a, 0xe95b, /*0x80-0x87*/
+ 0xe95c, 0xe95d, 0xe95e, 0xe95f, 0xe960, 0xe961, 0xe962, 0xe963, /*0x88-0x8f*/
+ 0xe964, 0xe965, 0xe966, 0xe967, 0xe968, 0xe969, 0xe96a, 0xe96b, /*0x90-0x97*/
+ 0xe96c, 0xe96d, 0xe96e, 0xe96f, 0xe970, 0xe971, 0xe972, 0xe973, /*0x98-0x9f*/
+ 0xe974, 0xe975, 0xe976, 0xe977, 0xe978, 0xe979, 0xe97a, 0xe97b, /*0xa0-0xa7*/
+ 0xe97c, 0xe97d, 0xe97e, 0xe980, 0xe981, 0xe982, 0xe983, 0xe984, /*0xa8-0xaf*/
+ 0xe985, 0xe986, 0xe987, 0xe988, 0xe989, 0xe98a, 0xe98b, 0xe98c, /*0xb0-0xb7*/
+ 0xe98d, 0xe98e, 0xe98f, 0xe990, 0xe991, 0xe992, 0xe993, 0xe994, /*0xb8-0xbf*/
+ 0xe995, 0xe996, 0xe997, 0xe998, 0xe999, 0xe99a, 0xe99b, 0xe99c, /*0xc0-0xc7*/
+ 0xe99d, 0xe99e, 0xe99f, 0xe9a0, 0xea40, 0xea41, 0xea42, 0xea43, /*0xc8-0xcf*/
+ 0xea44, 0xea45, 0xea46, 0xea47, 0xea48, 0xea49, 0xea4a, 0xea4b, /*0xd0-0xd7*/
+ 0xea4c, 0xea4d, 0xea4e, 0xea4f, 0xea50, 0xea51, 0xea52, 0xea53, /*0xd8-0xdf*/
+ 0xea54, 0xea55, 0xea56, 0xea57, 0xea58, 0xea59, 0xea5a, 0xea5b, /*0xe0-0xe7*/
+ 0xc3c5, 0xe3c5, 0xc9c1, 0xe3c6, 0xea5c, 0xb1d5, 0xceca, 0xb4b3, /*0xe8-0xef*/
+ 0xc8f2, 0xe3c7, 0xcfd0, 0xe3c8, 0xbce4, 0xe3c9, 0xe3ca, 0xc3c6, /*0xf0-0xf7*/
+ 0xd5a2, 0xc4d6, 0xb9eb, 0xcec5, 0xe3cb, 0xc3f6, 0xe3cc, 0xea5d, /*0xf8-0xff*/
+ /* 0x9600 */
+ 0xb7a7, 0xb8f3, 0xbad2, 0xe3cd, 0xe3ce, 0xd4c4, 0xe3cf, 0xea5e, /*0x00-0x07*/
+ 0xe3d0, 0xd1cb, 0xe3d1, 0xe3d2, 0xe3d3, 0xe3d4, 0xd1d6, 0xe3d5, /*0x08-0x0f*/
+ 0xb2fb, 0xc0bb, 0xe3d6, 0xea5f, 0xc0ab, 0xe3d7, 0xe3d8, 0xe3d9, /*0x10-0x17*/
+ 0xea60, 0xe3da, 0xe3db, 0xea61, 0xb8b7, 0xdae2, 0xea62, 0xb6d3, /*0x18-0x1f*/
+ 0xea63, 0xdae4, 0xdae3, 0xea64, 0xea65, 0xea66, 0xea67, 0xea68, /*0x20-0x27*/
+ 0xea69, 0xea6a, 0xdae6, 0xea6b, 0xea6c, 0xea6d, 0xc8ee, 0xea6e, /*0x28-0x2f*/
+ 0xea6f, 0xdae5, 0xb7c0, 0xd1f4, 0xd2f5, 0xd5f3, 0xbdd7, 0xea70, /*0x30-0x37*/
+ 0xea71, 0xea72, 0xea73, 0xd7e8, 0xdae8, 0xdae7, 0xea74, 0xb0a2, /*0x38-0x3f*/
+ 0xcdd3, 0xea75, 0xdae9, 0xea76, 0xb8bd, 0xbcca, 0xc2bd, 0xc2a4, /*0x40-0x47*/
+ 0xb3c2, 0xdaea, 0xea77, 0xc2aa, 0xc4b0, 0xbdb5, 0xea78, 0xea79, /*0x48-0x4f*/
+ 0xcfde, 0xea7a, 0xea7b, 0xea7c, 0xdaeb, 0xc9c2, 0xea7d, 0xea7e, /*0x50-0x57*/
+ 0xea80, 0xea81, 0xea82, 0xb1dd, 0xea83, 0xea84, 0xea85, 0xdaec, /*0x58-0x5f*/
+ 0xea86, 0xb6b8, 0xd4ba, 0xea87, 0xb3fd, 0xea88, 0xea89, 0xdaed, /*0x60-0x67*/
+ 0xd4c9, 0xcfd5, 0xc5e3, 0xea8a, 0xdaee, 0xea8b, 0xea8c, 0xea8d, /*0x68-0x6f*/
+ 0xea8e, 0xea8f, 0xdaef, 0xea90, 0xdaf0, 0xc1ea, 0xccd5, 0xcfdd, /*0x70-0x77*/
+ 0xea91, 0xea92, 0xea93, 0xea94, 0xea95, 0xea96, 0xea97, 0xea98, /*0x78-0x7f*/
+ 0xea99, 0xea9a, 0xea9b, 0xea9c, 0xea9d, 0xd3e7, 0xc2a1, 0xea9e, /*0x80-0x87*/
+ 0xdaf1, 0xea9f, 0xeaa0, 0xcbe5, 0xeb40, 0xdaf2, 0xeb41, 0xcbe6, /*0x88-0x8f*/
+ 0xd2fe, 0xeb42, 0xeb43, 0xeb44, 0xb8f4, 0xeb45, 0xeb46, 0xdaf3, /*0x90-0x97*/
+ 0xb0af, 0xcfb6, 0xeb47, 0xeb48, 0xd5cf, 0xeb49, 0xeb4a, 0xeb4b, /*0x98-0x9f*/
+ 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, 0xeb50, 0xeb51, 0xeb52, 0xcbed, /*0xa0-0xa7*/
+ 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, 0xeb58, 0xeb59, 0xeb5a, /*0xa8-0xaf*/
+ 0xdaf4, 0xeb5b, 0xeb5c, 0xe3c4, 0xeb5d, 0xeb5e, 0xc1a5, 0xeb5f, /*0xb0-0xb7*/
+ 0xeb60, 0xf6bf, 0xeb61, 0xeb62, 0xf6c0, 0xf6c1, 0xc4d1, 0xeb63, /*0xb8-0xbf*/
+ 0xc8b8, 0xd1e3, 0xeb64, 0xeb65, 0xd0db, 0xd1c5, 0xbcaf, 0xb9cd, /*0xc0-0xc7*/
+ 0xeb66, 0xeff4, 0xeb67, 0xeb68, 0xb4c6, 0xd3ba, 0xf6c2, 0xb3fb, /*0xc8-0xcf*/
+ 0xeb69, 0xeb6a, 0xf6c3, 0xeb6b, 0xeb6c, 0xb5f1, 0xeb6d, 0xeb6e, /*0xd0-0xd7*/
+ 0xeb6f, 0xeb70, 0xeb71, 0xeb72, 0xeb73, 0xeb74, 0xeb75, 0xeb76, /*0xd8-0xdf*/
+ 0xf6c5, 0xeb77, 0xeb78, 0xeb79, 0xeb7a, 0xeb7b, 0xeb7c, 0xeb7d, /*0xe0-0xe7*/
+ 0xd3ea, 0xf6a7, 0xd1a9, 0xeb7e, 0xeb80, 0xeb81, 0xeb82, 0xf6a9, /*0xe8-0xef*/
+ 0xeb83, 0xeb84, 0xeb85, 0xf6a8, 0xeb86, 0xeb87, 0xc1e3, 0xc0d7, /*0xf0-0xf7*/
+ 0xeb88, 0xb1a2, 0xeb89, 0xeb8a, 0xeb8b, 0xeb8c, 0xceed, 0xeb8d, /*0xf8-0xff*/
+ /* 0x9700 */
+ 0xd0e8, 0xf6ab, 0xeb8e, 0xeb8f, 0xcff6, 0xeb90, 0xf6aa, 0xd5f0, /*0x00-0x07*/
+ 0xf6ac, 0xc3b9, 0xeb91, 0xeb92, 0xeb93, 0xbbf4, 0xf6ae, 0xf6ad, /*0x08-0x0f*/
+ 0xeb94, 0xeb95, 0xeb96, 0xc4de, 0xeb97, 0xeb98, 0xc1d8, 0xeb99, /*0x10-0x17*/
+ 0xeb9a, 0xeb9b, 0xeb9c, 0xeb9d, 0xcbaa, 0xeb9e, 0xcfbc, 0xeb9f, /*0x18-0x1f*/
+ 0xeba0, 0xec40, 0xec41, 0xec42, 0xec43, 0xec44, 0xec45, 0xec46, /*0x20-0x27*/
+ 0xec47, 0xec48, 0xf6af, 0xec49, 0xec4a, 0xf6b0, 0xec4b, 0xec4c, /*0x28-0x2f*/
+ 0xf6b1, 0xec4d, 0xc2b6, 0xec4e, 0xec4f, 0xec50, 0xec51, 0xec52, /*0x30-0x37*/
+ 0xb0d4, 0xc5f9, 0xec53, 0xec54, 0xec55, 0xec56, 0xf6b2, 0xec57, /*0x38-0x3f*/
+ 0xec58, 0xec59, 0xec5a, 0xec5b, 0xec5c, 0xec5d, 0xec5e, 0xec5f, /*0x40-0x47*/
+ 0xec60, 0xec61, 0xec62, 0xec63, 0xec64, 0xec65, 0xec66, 0xec67, /*0x48-0x4f*/
+ 0xec68, 0xec69, 0xc7e0, 0xf6a6, 0xec6a, 0xec6b, 0xbeb8, 0xec6c, /*0x50-0x57*/
+ 0xec6d, 0xbeb2, 0xec6e, 0xb5e5, 0xec6f, 0xec70, 0xb7c7, 0xec71, /*0x58-0x5f*/
+ 0xbfbf, 0xc3d2, 0xc3e6, 0xec72, 0xec73, 0xd8cc, 0xec74, 0xec75, /*0x60-0x67*/
+ 0xec76, 0xb8ef, 0xec77, 0xec78, 0xec79, 0xec7a, 0xec7b, 0xec7c, /*0x68-0x6f*/
+ 0xec7d, 0xec7e, 0xec80, 0xbdf9, 0xd1a5, 0xec81, 0xb0d0, 0xec82, /*0x70-0x77*/
+ 0xec83, 0xec84, 0xec85, 0xec86, 0xf7b0, 0xec87, 0xec88, 0xec89, /*0x78-0x7f*/
+ 0xec8a, 0xec8b, 0xec8c, 0xec8d, 0xec8e, 0xf7b1, 0xec8f, 0xec90, /*0x80-0x87*/
+ 0xec91, 0xec92, 0xec93, 0xd0ac, 0xec94, 0xb0b0, 0xec95, 0xec96, /*0x88-0x8f*/
+ 0xec97, 0xf7b2, 0xf7b3, 0xec98, 0xf7b4, 0xec99, 0xec9a, 0xec9b, /*0x90-0x97*/
+ 0xc7ca, 0xec9c, 0xec9d, 0xec9e, 0xec9f, 0xeca0, 0xed40, 0xed41, /*0x98-0x9f*/
+ 0xbecf, 0xed42, 0xed43, 0xf7b7, 0xed44, 0xed45, 0xed46, 0xed47, /*0xa0-0xa7*/
+ 0xed48, 0xed49, 0xed4a, 0xf7b6, 0xed4b, 0xb1de, 0xed4c, 0xf7b5, /*0xa8-0xaf*/
+ 0xed4d, 0xed4e, 0xf7b8, 0xed4f, 0xf7b9, 0xed50, 0xed51, 0xed52, /*0xb0-0xb7*/
+ 0xed53, 0xed54, 0xed55, 0xed56, 0xed57, 0xed58, 0xed59, 0xed5a, /*0xb8-0xbf*/
+ 0xed5b, 0xed5c, 0xed5d, 0xed5e, 0xed5f, 0xed60, 0xed61, 0xed62, /*0xc0-0xc7*/
+ 0xed63, 0xed64, 0xed65, 0xed66, 0xed67, 0xed68, 0xed69, 0xed6a, /*0xc8-0xcf*/
+ 0xed6b, 0xed6c, 0xed6d, 0xed6e, 0xed6f, 0xed70, 0xed71, 0xed72, /*0xd0-0xd7*/
+ 0xed73, 0xed74, 0xed75, 0xed76, 0xed77, 0xed78, 0xed79, 0xed7a, /*0xd8-0xdf*/
+ 0xed7b, 0xed7c, 0xed7d, 0xed7e, 0xed80, 0xed81, 0xcea4, 0xc8cd, /*0xe0-0xe7*/
+ 0xed82, 0xbaab, 0xe8b8, 0xe8b9, 0xe8ba, 0xbec2, 0xed83, 0xed84, /*0xe8-0xef*/
+ 0xed85, 0xed86, 0xed87, 0xd2f4, 0xed88, 0xd4cf, 0xc9d8, 0xed89, /*0xf0-0xf7*/
+ 0xed8a, 0xed8b, 0xed8c, 0xed8d, 0xed8e, 0xed8f, 0xed90, 0xed91, /*0xf8-0xff*/
+ /* 0x9800 */
+ 0xed92, 0xed93, 0xed94, 0xed95, 0xed96, 0xed97, 0xed98, 0xed99, /*0x00-0x07*/
+ 0xed9a, 0xed9b, 0xed9c, 0xed9d, 0xed9e, 0xed9f, 0xeda0, 0xee40, /*0x08-0x0f*/
+ 0xee41, 0xee42, 0xee43, 0xee44, 0xee45, 0xee46, 0xee47, 0xee48, /*0x10-0x17*/
+ 0xee49, 0xee4a, 0xee4b, 0xee4c, 0xee4d, 0xee4e, 0xee4f, 0xee50, /*0x18-0x1f*/
+ 0xee51, 0xee52, 0xee53, 0xee54, 0xee55, 0xee56, 0xee57, 0xee58, /*0x20-0x27*/
+ 0xee59, 0xee5a, 0xee5b, 0xee5c, 0xee5d, 0xee5e, 0xee5f, 0xee60, /*0x28-0x2f*/
+ 0xee61, 0xee62, 0xee63, 0xee64, 0xee65, 0xee66, 0xee67, 0xee68, /*0x30-0x37*/
+ 0xee69, 0xee6a, 0xee6b, 0xee6c, 0xee6d, 0xee6e, 0xee6f, 0xee70, /*0x38-0x3f*/
+ 0xee71, 0xee72, 0xee73, 0xee74, 0xee75, 0xee76, 0xee77, 0xee78, /*0x40-0x47*/
+ 0xee79, 0xee7a, 0xee7b, 0xee7c, 0xee7d, 0xee7e, 0xee80, 0xee81, /*0x48-0x4f*/
+ 0xee82, 0xee83, 0xee84, 0xee85, 0xee86, 0xee87, 0xee88, 0xee89, /*0x50-0x57*/
+ 0xee8a, 0xee8b, 0xee8c, 0xee8d, 0xee8e, 0xee8f, 0xee90, 0xee91, /*0x58-0x5f*/
+ 0xee92, 0xee93, 0xee94, 0xee95, 0xee96, 0xee97, 0xee98, 0xee99, /*0x60-0x67*/
+ 0xee9a, 0xee9b, 0xee9c, 0xee9d, 0xee9e, 0xee9f, 0xeea0, 0xef40, /*0x68-0x6f*/
+ 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xd2b3, 0xb6a5, 0xc7ea, /*0x70-0x77*/
+ 0xf1fc, 0xcfee, 0xcbb3, 0xd0eb, 0xe7ef, 0xcde7, 0xb9cb, 0xb6d9, /*0x78-0x7f*/
+ 0xf1fd, 0xb0e4, 0xcbcc, 0xf1fe, 0xd4a4, 0xc2ad, 0xc1ec, 0xc6c4, /*0x80-0x87*/
+ 0xbeb1, 0xf2a1, 0xbcd5, 0xef46, 0xf2a2, 0xf2a3, 0xef47, 0xf2a4, /*0x88-0x8f*/
+ 0xd2c3, 0xc6b5, 0xef48, 0xcdc7, 0xf2a5, 0xef49, 0xd3b1, 0xbfc5, /*0x90-0x97*/
+ 0xcce2, 0xef4a, 0xf2a6, 0xf2a7, 0xd1d5, 0xb6ee, 0xf2a8, 0xf2a9, /*0x98-0x9f*/
+ 0xb5df, 0xf2aa, 0xf2ab, 0xef4b, 0xb2fc, 0xf2ac, 0xf2ad, 0xc8a7, /*0xa0-0xa7*/
+ 0xef4c, 0xef4d, 0xef4e, 0xef4f, 0xef50, 0xef51, 0xef52, 0xef53, /*0xa8-0xaf*/
+ 0xef54, 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b, /*0xb0-0xb7*/
+ 0xef5c, 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63, /*0xb8-0xbf*/
+ 0xef64, 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b, /*0xc0-0xc7*/
+ 0xef6c, 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xb7e7, 0xef72, /*0xc8-0xcf*/
+ 0xef73, 0xeca9, 0xecaa, 0xecab, 0xef74, 0xecac, 0xef75, 0xef76, /*0xd0-0xd7*/
+ 0xc6ae, 0xecad, 0xecae, 0xef77, 0xef78, 0xef79, 0xb7c9, 0xcab3, /*0xd8-0xdf*/
+ 0xef7a, 0xef7b, 0xef7c, 0xef7d, 0xef7e, 0xef80, 0xef81, 0xe2b8, /*0xe0-0xe7*/
+ 0xf7cf, 0xef82, 0xef83, 0xef84, 0xef85, 0xef86, 0xef87, 0xef88, /*0xe8-0xef*/
+ 0xef89, 0xef8a, 0xef8b, 0xef8c, 0xef8d, 0xef8e, 0xef8f, 0xef90, /*0xf0-0xf7*/
+ 0xef91, 0xef92, 0xef93, 0xef94, 0xef95, 0xef96, 0xef97, 0xef98, /*0xf8-0xff*/
+ /* 0x9900 */
+ 0xef99, 0xef9a, 0xef9b, 0xef9c, 0xef9d, 0xef9e, 0xef9f, 0xefa0, /*0x00-0x07*/
+ 0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf7d0, 0xf045, 0xf046, /*0x08-0x0f*/
+ 0xb2cd, 0xf047, 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, /*0x10-0x17*/
+ 0xf04e, 0xf04f, 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, /*0x18-0x1f*/
+ 0xf056, 0xf057, 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, /*0x20-0x27*/
+ 0xf05e, 0xf05f, 0xf060, 0xf061, 0xf062, 0xf063, 0xf7d1, 0xf064, /*0x28-0x2f*/
+ 0xf065, 0xf066, 0xf067, 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, /*0x30-0x37*/
+ 0xf06d, 0xf06e, 0xf06f, 0xf070, 0xf071, 0xf072, 0xf073, 0xf074, /*0x38-0x3f*/
+ 0xf075, 0xf076, 0xf077, 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, /*0x40-0x47*/
+ 0xf07d, 0xf07e, 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, /*0x48-0x4f*/
+ 0xf086, 0xf087, 0xf088, 0xf089, 0xf7d3, 0xf7d2, 0xf08a, 0xf08b, /*0x50-0x57*/
+ 0xf08c, 0xf08d, 0xf08e, 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093, /*0x58-0x5f*/
+ 0xf094, 0xf095, 0xf096, 0xe2bb, 0xf097, 0xbca2, 0xf098, 0xe2bc, /*0x60-0x67*/
+ 0xe2bd, 0xe2be, 0xe2bf, 0xe2c0, 0xe2c1, 0xb7b9, 0xd2fb, 0xbda4, /*0x68-0x6f*/
+ 0xcace, 0xb1a5, 0xcbc7, 0xf099, 0xe2c2, 0xb6fc, 0xc8c4, 0xe2c3, /*0x70-0x77*/
+ 0xf09a, 0xf09b, 0xbdc8, 0xf09c, 0xb1fd, 0xe2c4, 0xf09d, 0xb6f6, /*0x78-0x7f*/
+ 0xe2c5, 0xc4d9, 0xf09e, 0xf09f, 0xe2c6, 0xcfda, 0xb9dd, 0xe2c7, /*0x80-0x87*/
+ 0xc0a1, 0xf0a0, 0xe2c8, 0xb2f6, 0xf140, 0xe2c9, 0xf141, 0xc1f3, /*0x88-0x8f*/
+ 0xe2ca, 0xe2cb, 0xc2f8, 0xe2cc, 0xe2cd, 0xe2ce, 0xcad7, 0xd8b8, /*0x90-0x97*/
+ 0xd9e5, 0xcfe3, 0xf142, 0xf143, 0xf144, 0xf145, 0xf146, 0xf147, /*0x98-0x9f*/
+ 0xf148, 0xf149, 0xf14a, 0xf14b, 0xf14c, 0xf0a5, 0xf14d, 0xf14e, /*0xa0-0xa7*/
+ 0xdcb0, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153, 0xf154, 0xf155, /*0xa8-0xaf*/
+ 0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b, 0xf15c, 0xf15d, /*0xb0-0xb7*/
+ 0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163, 0xf164, 0xf165, /*0xb8-0xbf*/
+ 0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0xf16b, 0xf16c, 0xf16d, /*0xc0-0xc7*/
+ 0xf16e, 0xf16f, 0xf170, 0xf171, 0xf172, 0xf173, 0xf174, 0xf175, /*0xc8-0xcf*/
+ 0xf176, 0xf177, 0xf178, 0xf179, 0xf17a, 0xf17b, 0xf17c, 0xf17d, /*0xd0-0xd7*/
+ 0xf17e, 0xf180, 0xf181, 0xf182, 0xf183, 0xf184, 0xf185, 0xf186, /*0xd8-0xdf*/
+ 0xf187, 0xf188, 0xf189, 0xf18a, 0xf18b, 0xf18c, 0xf18d, 0xf18e, /*0xe0-0xe7*/
+ 0xf18f, 0xf190, 0xf191, 0xf192, 0xf193, 0xf194, 0xf195, 0xf196, /*0xe8-0xef*/
+ 0xf197, 0xf198, 0xf199, 0xf19a, 0xf19b, 0xf19c, 0xf19d, 0xf19e, /*0xf0-0xf7*/
+ 0xf19f, 0xf1a0, 0xf240, 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, /*0xf8-0xff*/
+ /* 0x9a00 */
+ 0xf246, 0xf247, 0xf248, 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, /*0x00-0x07*/
+ 0xf24e, 0xf24f, 0xf250, 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, /*0x08-0x0f*/
+ 0xf256, 0xf257, 0xf258, 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, /*0x10-0x17*/
+ 0xf25e, 0xf25f, 0xf260, 0xf261, 0xf262, 0xf263, 0xf264, 0xf265, /*0x18-0x1f*/
+ 0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d, /*0x20-0x27*/
+ 0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275, /*0x28-0x2f*/
+ 0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d, /*0x30-0x37*/
+ 0xf27e, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285, 0xf286, /*0x38-0x3f*/
+ 0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d, 0xf28e, /*0x40-0x47*/
+ 0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295, 0xf296, /*0x48-0x4f*/
+ 0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d, 0xf29e, /*0x50-0x57*/
+ 0xf29f, 0xf2a0, 0xf340, 0xf341, 0xf342, 0xf343, 0xf344, 0xf345, /*0x58-0x5f*/
+ 0xf346, 0xf347, 0xf348, 0xf349, 0xf34a, 0xf34b, 0xf34c, 0xf34d, /*0x60-0x67*/
+ 0xf34e, 0xf34f, 0xf350, 0xf351, 0xc2ed, 0xd4a6, 0xcdd4, 0xd1b1, /*0x68-0x6f*/
+ 0xb3db, 0xc7fd, 0xf352, 0xb2b5, 0xc2bf, 0xe6e0, 0xcabb, 0xe6e1, /*0x70-0x77*/
+ 0xe6e2, 0xbed4, 0xe6e3, 0xd7a4, 0xcdd5, 0xe6e5, 0xbcdd, 0xe6e4, /*0x78-0x7f*/
+ 0xe6e6, 0xe6e7, 0xc2ee, 0xf353, 0xbdbe, 0xe6e8, 0xc2e6, 0xbaa7, /*0x80-0x87*/
+ 0xe6e9, 0xf354, 0xe6ea, 0xb3d2, 0xd1e9, 0xf355, 0xf356, 0xbfa5, /*0x88-0x8f*/
+ 0xe6eb, 0xc6ef, 0xe6ec, 0xe6ed, 0xf357, 0xf358, 0xe6ee, 0xc6ad, /*0x90-0x97*/
+ 0xe6ef, 0xf359, 0xc9a7, 0xe6f0, 0xe6f1, 0xe6f2, 0xe5b9, 0xe6f3, /*0x98-0x9f*/
+ 0xe6f4, 0xc2e2, 0xe6f5, 0xe6f6, 0xd6e8, 0xe6f7, 0xf35a, 0xe6f8, /*0xa0-0xa7*/
+ 0xb9c7, 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360, 0xf361, /*0xa8-0xaf*/
+ 0xf7bb, 0xf7ba, 0xf362, 0xf363, 0xf364, 0xf365, 0xf7be, 0xf7bc, /*0xb0-0xb7*/
+ 0xbaa1, 0xf366, 0xf7bf, 0xf367, 0xf7c0, 0xf368, 0xf369, 0xf36a, /*0xb8-0xbf*/
+ 0xf7c2, 0xf7c1, 0xf7c4, 0xf36b, 0xf36c, 0xf7c3, 0xf36d, 0xf36e, /*0xc0-0xc7*/
+ 0xf36f, 0xf370, 0xf371, 0xf7c5, 0xf7c6, 0xf372, 0xf373, 0xf374, /*0xc8-0xcf*/
+ 0xf375, 0xf7c7, 0xf376, 0xcbe8, 0xf377, 0xf378, 0xf379, 0xf37a, /*0xd0-0xd7*/
+ 0xb8df, 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf380, 0xf381, 0xf7d4, /*0xd8-0xdf*/
+ 0xf382, 0xf7d5, 0xf383, 0xf384, 0xf385, 0xf386, 0xf7d6, 0xf387, /*0xe0-0xe7*/
+ 0xf388, 0xf389, 0xf38a, 0xf7d8, 0xf38b, 0xf7da, 0xf38c, 0xf7d7, /*0xe8-0xef*/
+ 0xf38d, 0xf38e, 0xf38f, 0xf390, 0xf391, 0xf392, 0xf393, 0xf394, /*0xf0-0xf7*/
+ 0xf395, 0xf7db, 0xf396, 0xf7d9, 0xf397, 0xf398, 0xf399, 0xf39a, /*0xf8-0xff*/
+ /* 0x9b00 */
+ 0xf39b, 0xf39c, 0xf39d, 0xd7d7, 0xf39e, 0xf39f, 0xf3a0, 0xf440, /*0x00-0x07*/
+ 0xf7dc, 0xf441, 0xf442, 0xf443, 0xf444, 0xf445, 0xf446, 0xf7dd, /*0x08-0x0f*/
+ 0xf447, 0xf448, 0xf449, 0xf7de, 0xf44a, 0xf44b, 0xf44c, 0xf44d, /*0x10-0x17*/
+ 0xf44e, 0xf44f, 0xf450, 0xf451, 0xf452, 0xf453, 0xf454, 0xf7df, /*0x18-0x1f*/
+ 0xf455, 0xf456, 0xf457, 0xf7e0, 0xf458, 0xf459, 0xf45a, 0xf45b, /*0x20-0x27*/
+ 0xf45c, 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xdbcb, /*0x28-0x2f*/
+ 0xf463, 0xf464, 0xd8aa, 0xf465, 0xf466, 0xf467, 0xf468, 0xf469, /*0x30-0x37*/
+ 0xf46a, 0xf46b, 0xf46c, 0xe5f7, 0xb9ed, 0xf46d, 0xf46e, 0xf46f, /*0x38-0x3f*/
+ 0xf470, 0xbffd, 0xbbea, 0xf7c9, 0xc6c7, 0xf7c8, 0xf471, 0xf7ca, /*0x40-0x47*/
+ 0xf7cc, 0xf7cb, 0xf472, 0xf473, 0xf474, 0xf7cd, 0xf475, 0xceba, /*0x48-0x4f*/
+ 0xf476, 0xf7ce, 0xf477, 0xf478, 0xc4a7, 0xf479, 0xf47a, 0xf47b, /*0x50-0x57*/
+ 0xf47c, 0xf47d, 0xf47e, 0xf480, 0xf481, 0xf482, 0xf483, 0xf484, /*0x58-0x5f*/
+ 0xf485, 0xf486, 0xf487, 0xf488, 0xf489, 0xf48a, 0xf48b, 0xf48c, /*0x60-0x67*/
+ 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0xf492, 0xf493, 0xf494, /*0x68-0x6f*/
+ 0xf495, 0xf496, 0xf497, 0xf498, 0xf499, 0xf49a, 0xf49b, 0xf49c, /*0x70-0x77*/
+ 0xf49d, 0xf49e, 0xf49f, 0xf4a0, 0xf540, 0xf541, 0xf542, 0xf543, /*0x78-0x7f*/
+ 0xf544, 0xf545, 0xf546, 0xf547, 0xf548, 0xf549, 0xf54a, 0xf54b, /*0x80-0x87*/
+ 0xf54c, 0xf54d, 0xf54e, 0xf54f, 0xf550, 0xf551, 0xf552, 0xf553, /*0x88-0x8f*/
+ 0xf554, 0xf555, 0xf556, 0xf557, 0xf558, 0xf559, 0xf55a, 0xf55b, /*0x90-0x97*/
+ 0xf55c, 0xf55d, 0xf55e, 0xf55f, 0xf560, 0xf561, 0xf562, 0xf563, /*0x98-0x9f*/
+ 0xf564, 0xf565, 0xf566, 0xf567, 0xf568, 0xf569, 0xf56a, 0xf56b, /*0xa0-0xa7*/
+ 0xf56c, 0xf56d, 0xf56e, 0xf56f, 0xf570, 0xf571, 0xf572, 0xf573, /*0xa8-0xaf*/
+ 0xf574, 0xf575, 0xf576, 0xf577, 0xf578, 0xf579, 0xf57a, 0xf57b, /*0xb0-0xb7*/
+ 0xf57c, 0xf57d, 0xf57e, 0xf580, 0xf581, 0xf582, 0xf583, 0xf584, /*0xb8-0xbf*/
+ 0xf585, 0xf586, 0xf587, 0xf588, 0xf589, 0xf58a, 0xf58b, 0xf58c, /*0xc0-0xc7*/
+ 0xf58d, 0xf58e, 0xf58f, 0xf590, 0xf591, 0xf592, 0xf593, 0xf594, /*0xc8-0xcf*/
+ 0xf595, 0xf596, 0xf597, 0xf598, 0xf599, 0xf59a, 0xf59b, 0xf59c, /*0xd0-0xd7*/
+ 0xf59d, 0xf59e, 0xf59f, 0xf5a0, 0xf640, 0xf641, 0xf642, 0xf643, /*0xd8-0xdf*/
+ 0xf644, 0xf645, 0xf646, 0xf647, 0xf648, 0xf649, 0xf64a, 0xf64b, /*0xe0-0xe7*/
+ 0xf64c, 0xf64d, 0xf64e, 0xf64f, 0xf650, 0xf651, 0xf652, 0xf653, /*0xe8-0xef*/
+ 0xf654, 0xf655, 0xf656, 0xf657, 0xf658, 0xf659, 0xf65a, 0xf65b, /*0xf0-0xf7*/
+ 0xf65c, 0xf65d, 0xf65e, 0xf65f, 0xf660, 0xf661, 0xf662, 0xf663, /*0xf8-0xff*/
+ /* 0x9c00 */
+ 0xf664, 0xf665, 0xf666, 0xf667, 0xf668, 0xf669, 0xf66a, 0xf66b, /*0x00-0x07*/
+ 0xf66c, 0xf66d, 0xf66e, 0xf66f, 0xf670, 0xf671, 0xf672, 0xf673, /*0x08-0x0f*/
+ 0xf674, 0xf675, 0xf676, 0xf677, 0xf678, 0xf679, 0xf67a, 0xf67b, /*0x10-0x17*/
+ 0xf67c, 0xf67d, 0xf67e, 0xf680, 0xf681, 0xf682, 0xf683, 0xf684, /*0x18-0x1f*/
+ 0xf685, 0xf686, 0xf687, 0xf688, 0xf689, 0xf68a, 0xf68b, 0xf68c, /*0x20-0x27*/
+ 0xf68d, 0xf68e, 0xf68f, 0xf690, 0xf691, 0xf692, 0xf693, 0xf694, /*0x28-0x2f*/
+ 0xf695, 0xf696, 0xf697, 0xf698, 0xf699, 0xf69a, 0xf69b, 0xf69c, /*0x30-0x37*/
+ 0xf69d, 0xf69e, 0xf69f, 0xf6a0, 0xf740, 0xf741, 0xf742, 0xf743, /*0x38-0x3f*/
+ 0xf744, 0xf745, 0xf746, 0xf747, 0xf748, 0xf749, 0xf74a, 0xf74b, /*0x40-0x47*/
+ 0xf74c, 0xf74d, 0xf74e, 0xf74f, 0xf750, 0xf751, 0xf752, 0xf753, /*0x48-0x4f*/
+ 0xf754, 0xf755, 0xf756, 0xf757, 0xf758, 0xf759, 0xf75a, 0xf75b, /*0x50-0x57*/
+ 0xf75c, 0xf75d, 0xf75e, 0xf75f, 0xf760, 0xf761, 0xf762, 0xf763, /*0x58-0x5f*/
+ 0xf764, 0xf765, 0xf766, 0xf767, 0xf768, 0xf769, 0xf76a, 0xf76b, /*0x60-0x67*/
+ 0xf76c, 0xf76d, 0xf76e, 0xf76f, 0xf770, 0xf771, 0xf772, 0xf773, /*0x68-0x6f*/
+ 0xf774, 0xf775, 0xf776, 0xf777, 0xf778, 0xf779, 0xf77a, 0xf77b, /*0x70-0x77*/
+ 0xf77c, 0xf77d, 0xf77e, 0xf780, 0xd3e3, 0xf781, 0xf782, 0xf6cf, /*0x78-0x7f*/
+ 0xf783, 0xc2b3, 0xf6d0, 0xf784, 0xf785, 0xf6d1, 0xf6d2, 0xf6d3, /*0x80-0x87*/
+ 0xf6d4, 0xf786, 0xf787, 0xf6d6, 0xf788, 0xb1ab, 0xf6d7, 0xf789, /*0x88-0x8f*/
+ 0xf6d8, 0xf6d9, 0xf6da, 0xf78a, 0xf6db, 0xf6dc, 0xf78b, 0xf78c, /*0x90-0x97*/
+ 0xf78d, 0xf78e, 0xf6dd, 0xf6de, 0xcfca, 0xf78f, 0xf6df, 0xf6e0, /*0x98-0x9f*/
+ 0xf6e1, 0xf6e2, 0xf6e3, 0xf6e4, 0xc0f0, 0xf6e5, 0xf6e6, 0xf6e7, /*0xa0-0xa7*/
+ 0xf6e8, 0xf6e9, 0xf790, 0xf6ea, 0xf791, 0xf6eb, 0xf6ec, 0xf792, /*0xa8-0xaf*/
+ 0xf6ed, 0xf6ee, 0xf6ef, 0xf6f0, 0xf6f1, 0xf6f2, 0xf6f3, 0xf6f4, /*0xb0-0xb7*/
+ 0xbea8, 0xf793, 0xf6f5, 0xf6f6, 0xf6f7, 0xf6f8, 0xf794, 0xf795, /*0xb8-0xbf*/
+ 0xf796, 0xf797, 0xf798, 0xc8fa, 0xf6f9, 0xf6fa, 0xf6fb, 0xf6fc, /*0xc0-0xc7*/
+ 0xf799, 0xf79a, 0xf6fd, 0xf6fe, 0xf7a1, 0xf7a2, 0xf7a3, 0xf7a4, /*0xc8-0xcf*/
+ 0xf7a5, 0xf79b, 0xf79c, 0xf7a6, 0xf7a7, 0xf7a8, 0xb1ee, 0xf7a9, /*0xd0-0xd7*/
+ 0xf7aa, 0xf7ab, 0xf79d, 0xf79e, 0xf7ac, 0xf7ad, 0xc1db, 0xf7ae, /*0xd8-0xdf*/
+ 0xf79f, 0xf7a0, 0xf7af, 0xf840, 0xf841, 0xf842, 0xf843, 0xf844, /*0xe0-0xe7*/
+ 0xf845, 0xf846, 0xf847, 0xf848, 0xf849, 0xf84a, 0xf84b, 0xf84c, /*0xe8-0xef*/
+ 0xf84d, 0xf84e, 0xf84f, 0xf850, 0xf851, 0xf852, 0xf853, 0xf854, /*0xf0-0xf7*/
+ 0xf855, 0xf856, 0xf857, 0xf858, 0xf859, 0xf85a, 0xf85b, 0xf85c, /*0xf8-0xff*/
+ /* 0x9d00 */
+ 0xf85d, 0xf85e, 0xf85f, 0xf860, 0xf861, 0xf862, 0xf863, 0xf864, /*0x00-0x07*/
+ 0xf865, 0xf866, 0xf867, 0xf868, 0xf869, 0xf86a, 0xf86b, 0xf86c, /*0x08-0x0f*/
+ 0xf86d, 0xf86e, 0xf86f, 0xf870, 0xf871, 0xf872, 0xf873, 0xf874, /*0x10-0x17*/
+ 0xf875, 0xf876, 0xf877, 0xf878, 0xf879, 0xf87a, 0xf87b, 0xf87c, /*0x18-0x1f*/
+ 0xf87d, 0xf87e, 0xf880, 0xf881, 0xf882, 0xf883, 0xf884, 0xf885, /*0x20-0x27*/
+ 0xf886, 0xf887, 0xf888, 0xf889, 0xf88a, 0xf88b, 0xf88c, 0xf88d, /*0x28-0x2f*/
+ 0xf88e, 0xf88f, 0xf890, 0xf891, 0xf892, 0xf893, 0xf894, 0xf895, /*0x30-0x37*/
+ 0xf896, 0xf897, 0xf898, 0xf899, 0xf89a, 0xf89b, 0xf89c, 0xf89d, /*0x38-0x3f*/
+ 0xf89e, 0xf89f, 0xf8a0, 0xf940, 0xf941, 0xf942, 0xf943, 0xf944, /*0x40-0x47*/
+ 0xf945, 0xf946, 0xf947, 0xf948, 0xf949, 0xf94a, 0xf94b, 0xf94c, /*0x48-0x4f*/
+ 0xf94d, 0xf94e, 0xf94f, 0xf950, 0xf951, 0xf952, 0xf953, 0xf954, /*0x50-0x57*/
+ 0xf955, 0xf956, 0xf957, 0xf958, 0xf959, 0xf95a, 0xf95b, 0xf95c, /*0x58-0x5f*/
+ 0xf95d, 0xf95e, 0xf95f, 0xf960, 0xf961, 0xf962, 0xf963, 0xf964, /*0x60-0x67*/
+ 0xf965, 0xf966, 0xf967, 0xf968, 0xf969, 0xf96a, 0xf96b, 0xf96c, /*0x68-0x6f*/
+ 0xf96d, 0xf96e, 0xf96f, 0xf970, 0xf971, 0xf972, 0xf973, 0xf974, /*0x70-0x77*/
+ 0xf975, 0xf976, 0xf977, 0xf978, 0xf979, 0xf97a, 0xf97b, 0xf97c, /*0x78-0x7f*/
+ 0xf97d, 0xf97e, 0xf980, 0xf981, 0xf982, 0xf983, 0xf984, 0xf985, /*0x80-0x87*/
+ 0xf986, 0xf987, 0xf988, 0xf989, 0xf98a, 0xf98b, 0xf98c, 0xf98d, /*0x88-0x8f*/
+ 0xf98e, 0xf98f, 0xf990, 0xf991, 0xf992, 0xf993, 0xf994, 0xf995, /*0x90-0x97*/
+ 0xf996, 0xf997, 0xf998, 0xf999, 0xf99a, 0xf99b, 0xf99c, 0xf99d, /*0x98-0x9f*/
+ 0xf99e, 0xf99f, 0xf9a0, 0xfa40, 0xfa41, 0xfa42, 0xfa43, 0xfa44, /*0xa0-0xa7*/
+ 0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49, 0xfa4a, 0xfa4b, 0xfa4c, /*0xa8-0xaf*/
+ 0xfa4d, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa52, 0xfa53, 0xfa54, /*0xb0-0xb7*/
+ 0xfa55, 0xfa56, 0xfa57, 0xfa58, 0xfa59, 0xfa5a, 0xfa5b, 0xfa5c, /*0xb8-0xbf*/
+ 0xfa5d, 0xfa5e, 0xfa5f, 0xfa60, 0xfa61, 0xfa62, 0xfa63, 0xfa64, /*0xc0-0xc7*/
+ 0xfa65, 0xfa66, 0xfa67, 0xfa68, 0xfa69, 0xfa6a, 0xfa6b, 0xfa6c, /*0xc8-0xcf*/
+ 0xfa6d, 0xfa6e, 0xfa6f, 0xfa70, 0xfa71, 0xfa72, 0xfa73, 0xfa74, /*0xd0-0xd7*/
+ 0xfa75, 0xfa76, 0xfa77, 0xfa78, 0xfa79, 0xfa7a, 0xfa7b, 0xfa7c, /*0xd8-0xdf*/
+ 0xfa7d, 0xfa7e, 0xfa80, 0xfa81, 0xfa82, 0xfa83, 0xfa84, 0xfa85, /*0xe0-0xe7*/
+ 0xfa86, 0xfa87, 0xfa88, 0xfa89, 0xfa8a, 0xfa8b, 0xfa8c, 0xfa8d, /*0xe8-0xef*/
+ 0xfa8e, 0xfa8f, 0xfa90, 0xfa91, 0xfa92, 0xfa93, 0xfa94, 0xfa95, /*0xf0-0xf7*/
+ 0xfa96, 0xfa97, 0xfa98, 0xfa99, 0xfa9a, 0xfa9b, 0xfa9c, 0xfa9d, /*0xf8-0xff*/
+ /* 0x9e00 */
+ 0xfa9e, 0xfa9f, 0xfaa0, 0xfb40, 0xfb41, 0xfb42, 0xfb43, 0xfb44, /*0x00-0x07*/
+ 0xfb45, 0xfb46, 0xfb47, 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, /*0x08-0x0f*/
+ 0xfb4d, 0xfb4e, 0xfb4f, 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, /*0x10-0x17*/
+ 0xfb55, 0xfb56, 0xfb57, 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xc4f1, /*0x18-0x1f*/
+ 0xf0af, 0xbca6, 0xf0b0, 0xc3f9, 0xfb5c, 0xc5b8, 0xd1bb, 0xfb5d, /*0x20-0x27*/
+ 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xd1bc, 0xfb5e, 0xd1ec, /*0x28-0x2f*/
+ 0xfb5f, 0xf0b7, 0xf0b6, 0xd4a7, 0xfb60, 0xcdd2, 0xf0b8, 0xf0ba, /*0x30-0x37*/
+ 0xf0b9, 0xf0bb, 0xf0bc, 0xfb61, 0xfb62, 0xb8eb, 0xf0bd, 0xbae8, /*0x38-0x3f*/
+ 0xfb63, 0xf0be, 0xf0bf, 0xbee9, 0xf0c0, 0xb6ec, 0xf0c1, 0xf0c2, /*0x40-0x47*/
+ 0xf0c3, 0xf0c4, 0xc8b5, 0xf0c5, 0xf0c6, 0xfb64, 0xf0c7, 0xc5f4, /*0x48-0x4f*/
+ 0xfb65, 0xf0c8, 0xfb66, 0xfb67, 0xfb68, 0xf0c9, 0xfb69, 0xf0ca, /*0x50-0x57*/
+ 0xf7bd, 0xfb6a, 0xf0cb, 0xf0cc, 0xf0cd, 0xfb6b, 0xf0ce, 0xfb6c, /*0x58-0x5f*/
+ 0xfb6d, 0xfb6e, 0xfb6f, 0xf0cf, 0xbad7, 0xfb70, 0xf0d0, 0xf0d1, /*0x60-0x67*/
+ 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d8, 0xfb71, 0xfb72, /*0x68-0x6f*/
+ 0xd3a5, 0xf0d7, 0xfb73, 0xf0d9, 0xfb74, 0xfb75, 0xfb76, 0xfb77, /*0x70-0x77*/
+ 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xf5ba, 0xc2b9, /*0x78-0x7f*/
+ 0xfb7e, 0xfb80, 0xf7e4, 0xfb81, 0xfb82, 0xfb83, 0xfb84, 0xf7e5, /*0x80-0x87*/
+ 0xf7e6, 0xfb85, 0xfb86, 0xf7e7, 0xfb87, 0xfb88, 0xfb89, 0xfb8a, /*0x88-0x8f*/
+ 0xfb8b, 0xfb8c, 0xf7e8, 0xc2b4, 0xfb8d, 0xfb8e, 0xfb8f, 0xfb90, /*0x90-0x97*/
+ 0xfb91, 0xfb92, 0xfb93, 0xfb94, 0xfb95, 0xf7ea, 0xfb96, 0xf7eb, /*0x98-0x9f*/
+ 0xfb97, 0xfb98, 0xfb99, 0xfb9a, 0xfb9b, 0xfb9c, 0xc2f3, 0xfb9d, /*0xa0-0xa7*/
+ 0xfb9e, 0xfb9f, 0xfba0, 0xfc40, 0xfc41, 0xfc42, 0xfc43, 0xfc44, /*0xa8-0xaf*/
+ 0xfc45, 0xfc46, 0xfc47, 0xfc48, 0xf4f0, 0xfc49, 0xfc4a, 0xfc4b, /*0xb0-0xb7*/
+ 0xf4ef, 0xfc4c, 0xfc4d, 0xc2e9, 0xfc4e, 0xf7e1, 0xf7e2, 0xfc4f, /*0xb8-0xbf*/
+ 0xfc50, 0xfc51, 0xfc52, 0xfc53, 0xbbc6, 0xfc54, 0xfc55, 0xfc56, /*0xc0-0xc7*/
+ 0xfc57, 0xd9e4, 0xfc58, 0xfc59, 0xfc5a, 0xcaf2, 0xc0e8, 0xf0a4, /*0xc8-0xcf*/
+ 0xfc5b, 0xbada, 0xfc5c, 0xfc5d, 0xc7ad, 0xfc5e, 0xfc5f, 0xfc60, /*0xd0-0xd7*/
+ 0xc4ac, 0xfc61, 0xfc62, 0xf7ec, 0xf7ed, 0xf7ee, 0xfc63, 0xf7f0, /*0xd8-0xdf*/
+ 0xf7ef, 0xfc64, 0xf7f1, 0xfc65, 0xfc66, 0xf7f4, 0xfc67, 0xf7f3, /*0xe0-0xe7*/
+ 0xfc68, 0xf7f2, 0xf7f5, 0xfc69, 0xfc6a, 0xfc6b, 0xfc6c, 0xf7f6, /*0xe8-0xef*/
+ 0xfc6d, 0xfc6e, 0xfc6f, 0xfc70, 0xfc71, 0xfc72, 0xfc73, 0xfc74, /*0xf0-0xf7*/
+ 0xfc75, 0xede9, 0xfc76, 0xedea, 0xedeb, 0xfc77, 0xf6bc, 0xfc78, /*0xf8-0xff*/
+ /* 0x9f00 */
+ 0xfc79, 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfc80, 0xfc81, /*0x00-0x07*/
+ 0xfc82, 0xfc83, 0xfc84, 0xf6bd, 0xfc85, 0xf6be, 0xb6a6, 0xfc86, /*0x08-0x0f*/
+ 0xd8be, 0xfc87, 0xfc88, 0xb9c4, 0xfc89, 0xfc8a, 0xfc8b, 0xd8bb, /*0x10-0x17*/
+ 0xfc8c, 0xdcb1, 0xfc8d, 0xfc8e, 0xfc8f, 0xfc90, 0xfc91, 0xfc92, /*0x18-0x1f*/
+ 0xcaf3, 0xfc93, 0xf7f7, 0xfc94, 0xfc95, 0xfc96, 0xfc97, 0xfc98, /*0x20-0x27*/
+ 0xfc99, 0xfc9a, 0xfc9b, 0xfc9c, 0xf7f8, 0xfc9d, 0xfc9e, 0xf7f9, /*0x28-0x2f*/
+ 0xfc9f, 0xfca0, 0xfd40, 0xfd41, 0xfd42, 0xfd43, 0xfd44, 0xf7fb, /*0x30-0x37*/
+ 0xfd45, 0xf7fa, 0xfd46, 0xb1c7, 0xfd47, 0xf7fc, 0xf7fd, 0xfd48, /*0x38-0x3f*/
+ 0xfd49, 0xfd4a, 0xfd4b, 0xfd4c, 0xf7fe, 0xfd4d, 0xfd4e, 0xfd4f, /*0x40-0x47*/
+ 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54, 0xfd55, 0xfd56, 0xfd57, /*0x48-0x4f*/
+ 0xc6eb, 0xecb4, 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c, 0xfd5d, /*0x50-0x57*/
+ 0xfd5e, 0xfd5f, 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64, 0xfd65, /*0x58-0x5f*/
+ 0xfd66, 0xfd67, 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c, 0xfd6d, /*0x60-0x67*/
+ 0xfd6e, 0xfd6f, 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74, 0xfd75, /*0x68-0x6f*/
+ 0xfd76, 0xfd77, 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c, 0xfd7d, /*0x70-0x77*/
+ 0xfd7e, 0xfd80, 0xfd81, 0xfd82, 0xfd83, 0xfd84, 0xfd85, 0xb3dd, /*0x78-0x7f*/
+ 0xf6b3, 0xfd86, 0xfd87, 0xf6b4, 0xc1e4, 0xf6b5, 0xf6b6, 0xf6b7, /*0x80-0x87*/
+ 0xf6b8, 0xf6b9, 0xf6ba, 0xc8a3, 0xf6bb, 0xfd88, 0xfd89, 0xfd8a, /*0x88-0x8f*/
+ 0xfd8b, 0xfd8c, 0xfd8d, 0xfd8e, 0xfd8f, 0xfd90, 0xfd91, 0xfd92, /*0x90-0x97*/
+ 0xfd93, 0xc1fa, 0xb9a8, 0xede8, 0xfd94, 0xfd95, 0xfd96, 0xb9ea, /*0x98-0x9f*/
+ 0xd9df, 0xfd97, 0xfd98, 0xfd99, 0xfd9a, 0xfd9b, 0x0000, 0x0000, /*0xa0-0xa7*/
+};
+static const unsigned short gbk_pagef9a[32] = {
+ 0x0000, 0xfd9d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd9e, 0x0000, 0x0000, /*0x90-0x97*/
+};
+static const unsigned short gbk_pagef9b[24] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd9f, /*0xe0-0xe7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xe8-0xef*/
+ 0x0000, 0xfda0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xf0-0xf7*/
+};
+static const unsigned short gbk_pagefa[40] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xfe40, 0xfe41, 0xfe42, 0xfe43, /*0x08-0x0f*/
+ 0x0000, 0xfe44, 0x0000, 0xfe45, 0xfe46, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
+ 0xfe47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe48, /*0x18-0x1f*/
+ 0xfe49, 0xfe4a, 0x0000, 0xfe4b, 0xfe4c, 0x0000, 0x0000, 0xfe4d, /*0x20-0x27*/
+ 0xfe4e, 0xfe4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+};
+static const unsigned short gbk_pagefe[64] = {
+ 0xa955, 0xa6f2, 0x0000, 0xa6f4, 0xa6f5, 0xa6e0, 0xa6e1, 0xa6f0, /*0x30-0x37*/
+ 0xa6f1, 0xa6e2, 0xa6e3, 0xa6ee, 0xa6ef, 0xa6e6, 0xa6e7, 0xa6e4, /*0x38-0x3f*/
+ 0xa6e5, 0xa6e8, 0xa6e9, 0xa6ea, 0xa6eb, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
+ 0x0000, 0xa968, 0xa969, 0xa96a, 0xa96b, 0xa96c, 0xa96d, 0xa96e, /*0x48-0x4f*/
+ 0xa96f, 0xa970, 0xa971, 0x0000, 0xa972, 0xa973, 0xa974, 0xa975, /*0x50-0x57*/
+ 0x0000, 0xa976, 0xa977, 0xa978, 0xa979, 0xa97a, 0xa97b, 0xa97c, /*0x58-0x5f*/
+ 0xa97d, 0xa97e, 0xa980, 0xa981, 0xa982, 0xa983, 0xa984, 0x0000, /*0x60-0x67*/
+ 0xa985, 0xa986, 0xa987, 0xa988, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
+};
+static const unsigned short gbk_pageffa[96] = {
+ 0x0000, 0xa3a1, 0xa3a2, 0xa3a3, 0xa1e7, 0xa3a5, 0xa3a6, 0xa3a7, /*0x00-0x07*/
+ 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, /*0x08-0x0f*/
+ 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, /*0x10-0x17*/
+ 0xa3b8, 0xa3b9, 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa3be, 0xa3bf, /*0x18-0x1f*/
+ 0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7, /*0x20-0x27*/
+ 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf, /*0x28-0x2f*/
+ 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7, /*0x30-0x37*/
+ 0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa3dc, 0xa3dd, 0xa3de, 0xa3df, /*0x38-0x3f*/
+ 0xa3e0, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7, /*0x40-0x47*/
+ 0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef, /*0x48-0x4f*/
+ 0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7, /*0x50-0x57*/
+ 0xa3f8, 0xa3f9, 0xa3fa, 0xa3fb, 0xa3fc, 0xa3fd, 0xa1ab, 0x0000, /*0x58-0x5f*/
+};
+static const unsigned short gbk_pageffb[8] = {
+ 0xa1e9, 0xa1ea, 0xa956, 0xa3fe, 0xa957, 0xa3a4, 0x0000, 0x0000, /*0xe0-0xe7*/
+};
+
+static int
+gbk_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ unsigned short c = 0;
+ if (wc >= 0x00a0 && wc < 0x0170)
+ c = gbk_page00[wc-0x00a0];
+ else if (wc >= 0x01c8 && wc < 0x01e0)
+ c = gbk_page01[wc-0x01c8];
+ else if (wc >= 0x0250 && wc < 0x0268)
+ c = gbk_page02a[wc-0x0250];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = gbk_page02b[wc-0x02c0];
+ else if (wc >= 0x0390 && wc < 0x03d0)
+ c = gbk_page03[wc-0x0390];
+ else if (wc >= 0x0400 && wc < 0x0458)
+ c = gbk_page04[wc-0x0400];
+ else if (wc >= 0x2010 && wc < 0x2040)
+ c = gbk_page20[wc-0x2010];
+ else if (wc >= 0x2100 && wc < 0x21a0)
+ c = gbk_page21[wc-0x2100];
+ else if (wc >= 0x2208 && wc < 0x22c0)
+ c = gbk_page22[wc-0x2208];
+ else if (wc == 0x2312)
+ c = 0xa1d0;
+ else if (wc >= 0x2460 && wc < 0x24a0)
+ c = gbk_page24[wc-0x2460];
+ else if (wc >= 0x2500 && wc < 0x25e8)
+ c = gbk_page25[wc-0x2500];
+ else if (wc >= 0x2600 && wc < 0x2648)
+ c = gbk_page26[wc-0x2600];
+ else if (wc >= 0x3000 && wc < 0x3130)
+ c = gbk_page30[wc-0x3000];
+ else if (wc >= 0x3220 && wc < 0x3238)
+ c = gbk_page32[wc-0x3220];
+ else if (wc == 0x32a3)
+ c = 0xa949;
+ else if (wc >= 0x3388 && wc < 0x33d8)
+ c = gbk_page33[wc-0x3388];
+ else if (wc >= 0x4e00 && wc < 0x9fa8)
+ c = gbk_page4e[wc-0x4e00];
+ else if (wc == 0xf92c)
+ c = 0xfd9c;
+ else if (wc >= 0xf978 && wc < 0xf998)
+ c = gbk_pagef9a[wc-0xf978];
+ else if (wc >= 0xf9e0 && wc < 0xf9f8)
+ c = gbk_pagef9b[wc-0xf9e0];
+ else if (wc >= 0xfa08 && wc < 0xfa30)
+ c = gbk_pagefa[wc-0xfa08];
+ else if (wc >= 0xfe30 && wc < 0xfe70)
+ c = gbk_pagefe[wc-0xfe30];
+ else if (wc >= 0xff00 && wc < 0xff60)
+ c = gbk_pageffa[wc-0xff00];
+ else if (wc >= 0xffe0 && wc < 0xffe8)
+ c = gbk_pageffb[wc-0xffe0];
+ if (c != 0) {
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/georgian_academy.h b/libX11/src/xlibi18n/lcUniConv/georgian_academy.h
index 0e4350461..40de94542 100644
--- a/libX11/src/xlibi18n/lcUniConv/georgian_academy.h
+++ b/libX11/src/xlibi18n/lcUniConv/georgian_academy.h
@@ -1,87 +1,87 @@
-
-/*
- * GEORGIAN-ACADEMY
- */
-
-static const unsigned short georgian_academy_2uni[32] = {
- /* 0x80 */
- 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
- /* 0x90 */
- 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
-};
-
-static int
-georgian_academy_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0x80 && c < 0xa0)
- *pwc = (ucs4_t) georgian_academy_2uni[c-0x80];
- else if (c >= 0xc0 && c < 0xe7)
- *pwc = (ucs4_t) c + 0x1010;
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char georgian_academy_page00[32] = {
- 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
- 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
-};
-static const unsigned char georgian_academy_page01[72] = {
- 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
-};
-static const unsigned char georgian_academy_page02[32] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
-};
-static const unsigned char georgian_academy_page20[48] = {
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-
-static int
-georgian_academy_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x0080 && wc < 0x00a0)
- c = georgian_academy_page00[wc-0x0080];
- else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100))
- c = wc;
- else if (wc >= 0x0150 && wc < 0x0198)
- c = georgian_academy_page01[wc-0x0150];
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = georgian_academy_page02[wc-0x02c0];
- else if (wc >= 0x10d0 && wc < 0x10f7)
- c = wc-0x1010;
- else if (wc >= 0x2010 && wc < 0x2040)
- c = georgian_academy_page20[wc-0x2010];
- else if (wc == 0x2122)
- c = 0x99;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * GEORGIAN-ACADEMY
+ */
+
+static const unsigned short georgian_academy_2uni[32] = {
+ /* 0x80 */
+ 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
+ /* 0x90 */
+ 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
+};
+
+static int
+georgian_academy_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0x80 && c < 0xa0)
+ *pwc = (ucs4_t) georgian_academy_2uni[c-0x80];
+ else if (c >= 0xc0 && c < 0xe7)
+ *pwc = (ucs4_t) c + 0x1010;
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char georgian_academy_page00[32] = {
+ 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
+ 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
+};
+static const unsigned char georgian_academy_page01[72] = {
+ 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char georgian_academy_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+static const unsigned char georgian_academy_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+georgian_academy_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0080 && wc < 0x00a0)
+ c = georgian_academy_page00[wc-0x0080];
+ else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100))
+ c = wc;
+ else if (wc >= 0x0150 && wc < 0x0198)
+ c = georgian_academy_page01[wc-0x0150];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = georgian_academy_page02[wc-0x02c0];
+ else if (wc >= 0x10d0 && wc < 0x10f7)
+ c = wc-0x1010;
+ else if (wc >= 0x2010 && wc < 0x2040)
+ c = georgian_academy_page20[wc-0x2010];
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/georgian_ps.h b/libX11/src/xlibi18n/lcUniConv/georgian_ps.h
index b96c491df..e0d20d96b 100644
--- a/libX11/src/xlibi18n/lcUniConv/georgian_ps.h
+++ b/libX11/src/xlibi18n/lcUniConv/georgian_ps.h
@@ -1,104 +1,104 @@
-
-/*
- * GEORGIAN-PS
- */
-
-static const unsigned short georgian_ps_2uni_1[32] = {
- /* 0x80 */
- 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
- /* 0x90 */
- 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
-};
-static const unsigned short georgian_ps_2uni_2[39] = {
- /* 0xc0 */
- 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10f1,
- 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10f2, 0x10dd,
- /* 0xd0 */
- 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10f3, 0x10e3, 0x10e4,
- 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec,
- /* 0xe0 */
- 0x10ed, 0x10ee, 0x10f4, 0x10ef, 0x10f0, 0x10f5,
-};
-
-static int
-georgian_ps_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0x80 && c < 0xa0)
- *pwc = (ucs4_t) georgian_ps_2uni_1[c-0x80];
- else if (c >= 0xc0 && c < 0xe6)
- *pwc = (ucs4_t) georgian_ps_2uni_2[c-0xc0];
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char georgian_ps_page00[32] = {
- 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
- 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
-};
-static const unsigned char georgian_ps_page01[72] = {
- 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
-};
-static const unsigned char georgian_ps_page02[32] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
-};
-static const unsigned char georgian_ps_page10[40] = {
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc8, /* 0xd0-0xd7 */
- 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xcf, 0xd0, 0xd1, /* 0xd8-0xdf */
- 0xd2, 0xd3, 0xd4, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, /* 0xe0-0xe7 */
- 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe3, /* 0xe8-0xef */
- 0xe4, 0xc7, 0xce, 0xd5, 0xe2, 0xe5, 0x00, 0x00, /* 0xf0-0xf7 */
-};
-static const unsigned char georgian_ps_page20[48] = {
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-
-static int
-georgian_ps_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x0080 && wc < 0x00a0)
- c = georgian_ps_page00[wc-0x0080];
- else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e6 && wc < 0x0100))
- c = wc;
- else if (wc >= 0x0150 && wc < 0x0198)
- c = georgian_ps_page01[wc-0x0150];
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = georgian_ps_page02[wc-0x02c0];
- else if (wc >= 0x10d0 && wc < 0x10f8)
- c = georgian_ps_page10[wc-0x10d0];
- else if (wc >= 0x2010 && wc < 0x2040)
- c = georgian_ps_page20[wc-0x2010];
- else if (wc == 0x2122)
- c = 0x99;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * GEORGIAN-PS
+ */
+
+static const unsigned short georgian_ps_2uni_1[32] = {
+ /* 0x80 */
+ 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
+ /* 0x90 */
+ 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
+};
+static const unsigned short georgian_ps_2uni_2[39] = {
+ /* 0xc0 */
+ 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10f1,
+ 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10f2, 0x10dd,
+ /* 0xd0 */
+ 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10f3, 0x10e3, 0x10e4,
+ 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec,
+ /* 0xe0 */
+ 0x10ed, 0x10ee, 0x10f4, 0x10ef, 0x10f0, 0x10f5,
+};
+
+static int
+georgian_ps_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0x80 && c < 0xa0)
+ *pwc = (ucs4_t) georgian_ps_2uni_1[c-0x80];
+ else if (c >= 0xc0 && c < 0xe6)
+ *pwc = (ucs4_t) georgian_ps_2uni_2[c-0xc0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char georgian_ps_page00[32] = {
+ 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
+ 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
+};
+static const unsigned char georgian_ps_page01[72] = {
+ 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char georgian_ps_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+static const unsigned char georgian_ps_page10[40] = {
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc8, /* 0xd0-0xd7 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xcf, 0xd0, 0xd1, /* 0xd8-0xdf */
+ 0xd2, 0xd3, 0xd4, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, /* 0xe0-0xe7 */
+ 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe3, /* 0xe8-0xef */
+ 0xe4, 0xc7, 0xce, 0xd5, 0xe2, 0xe5, 0x00, 0x00, /* 0xf0-0xf7 */
+};
+static const unsigned char georgian_ps_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+georgian_ps_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0080 && wc < 0x00a0)
+ c = georgian_ps_page00[wc-0x0080];
+ else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e6 && wc < 0x0100))
+ c = wc;
+ else if (wc >= 0x0150 && wc < 0x0198)
+ c = georgian_ps_page01[wc-0x0150];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = georgian_ps_page02[wc-0x02c0];
+ else if (wc >= 0x10d0 && wc < 0x10f8)
+ c = georgian_ps_page10[wc-0x10d0];
+ else if (wc >= 0x2010 && wc < 0x2040)
+ c = georgian_ps_page20[wc-0x2010];
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_1.h b/libX11/src/xlibi18n/lcUniConv/iso8859_1.h
index fc302bb44..111f3343f 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_1.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_1.h
@@ -1,22 +1,22 @@
-
-/*
- * ISO-8859-1
- */
-
-static int
-iso8859_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static int
-iso8859_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (wc < 0x0100) {
- *r = wc;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-1
+ */
+
+static int
+iso8859_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static int
+iso8859_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x0100) {
+ *r = wc;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_10.h b/libX11/src/xlibi18n/lcUniConv/iso8859_10.h
index 508db5758..3a31e112a 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_10.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_10.h
@@ -1,87 +1,87 @@
-
-/*
- * ISO-8859-10
- */
-
-static const unsigned short iso8859_10_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
- 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
- /* 0xb0 */
- 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7,
- 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b,
- /* 0xc0 */
- 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
- 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf,
- /* 0xd0 */
- 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
- 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
- /* 0xe0 */
- 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
- 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
- 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138,
-};
-
-static int
-iso8859_10_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_10_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_10_page00[224] = {
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
- 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
- 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
- 0xd0, 0x00, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
- 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */
- 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
- 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0xf0, 0x00, 0x00, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
- 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
- 0xa9, 0xb9, 0xa2, 0xb2, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
- 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0xa5, 0xb5, 0xa4, 0xb4, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, /* 0x30-0x37 */
- 0xff, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0xaf, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xaa, 0xba, 0x00, 0x00, 0x00, 0x00, 0xab, 0xbb, /* 0x60-0x67 */
- 0xd7, 0xf7, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0x00, /* 0x78-0x7f */
-};
-
-static int
-iso8859_10_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0180)
- c = iso8859_10_page00[wc-0x00a0];
- else if (wc == 0x2015)
- c = 0xbd;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-10
+ */
+
+static const unsigned short iso8859_10_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
+ 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
+ /* 0xb0 */
+ 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7,
+ 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b,
+ /* 0xc0 */
+ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
+ 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ /* 0xe0 */
+ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
+ 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138,
+};
+
+static int
+iso8859_10_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_10_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_10_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0xd0, 0x00, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0xf0, 0x00, 0x00, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
+ 0xa9, 0xb9, 0xa2, 0xb2, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
+ 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0xa5, 0xb5, 0xa4, 0xb4, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, /* 0x30-0x37 */
+ 0xff, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0xaf, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xaa, 0xba, 0x00, 0x00, 0x00, 0x00, 0xab, 0xbb, /* 0x60-0x67 */
+ 0xd7, 0xf7, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0x00, /* 0x78-0x7f */
+};
+
+static int
+iso8859_10_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_10_page00[wc-0x00a0];
+ else if (wc == 0x2015)
+ c = 0xbd;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_11.h b/libX11/src/xlibi18n/lcUniConv/iso8859_11.h
index 5458da514..8f82da035 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_11.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_11.h
@@ -1,77 +1,77 @@
-
-/*
- * ISO8859-11
- */
-
-static const unsigned short iso8859_11_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
- 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
- /* 0xb0 */
- 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
- 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
- /* 0xc0 */
- 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
- 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
- /* 0xd0 */
- 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
- 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
- /* 0xe0 */
- 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
- 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
- /* 0xf0 */
- 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
- 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
-};
-
-static int
-iso8859_11_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else if (c < 0xa0) {
- }
- else {
- unsigned short wc = iso8859_11_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char iso8859_11_page0e[96] = {
- 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
- 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
- 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
-};
-
-static int
-iso8859_11_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080 || wc == 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x0e00 && wc < 0x0e60)
- c = iso8859_11_page0e[wc-0x0e00];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO8859-11
+ */
+
+static const unsigned short iso8859_11_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+ /* 0xb0 */
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+ /* 0xc0 */
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+ /* 0xd0 */
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
+ /* 0xe0 */
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+ /* 0xf0 */
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+ 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+};
+
+static int
+iso8859_11_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else if (c < 0xa0) {
+ }
+ else {
+ unsigned short wc = iso8859_11_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_11_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+};
+
+static int
+iso8859_11_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080 || wc == 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0e00 && wc < 0x0e60)
+ c = iso8859_11_page0e[wc-0x0e00];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_13.h b/libX11/src/xlibi18n/lcUniConv/iso8859_13.h
index c041b154a..c331490c7 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_13.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_13.h
@@ -1,90 +1,90 @@
-
-/*
- * ISO-8859-13
- */
-
-static const unsigned short iso8859_13_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
- 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
- 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
- /* 0xc0 */
- 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
- 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
- /* 0xd0 */
- 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
- 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
- /* 0xe0 */
- 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
- 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
- /* 0xf0 */
- 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
- 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019,
-};
-
-static int
-iso8859_13_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_13_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_13_page00[224] = {
- 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0xc4, 0xc5, 0xaf, 0x00, /* 0xc0-0xc7 */
- 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0xd3, 0x00, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
- 0xa8, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe5, 0xbf, 0x00, /* 0xe0-0xe7 */
- 0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0xf3, 0x00, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
- 0xb8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0xc2, 0xe2, 0x00, 0x00, 0xc0, 0xe0, 0xc3, 0xe3, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0xc7, 0xe7, 0x00, 0x00, 0xcb, 0xeb, /* 0x10-0x17 */
- 0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0xce, 0xee, 0x00, 0x00, 0xc1, 0xe1, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xed, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0xcf, 0xef, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf4, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0x50-0x57 */
- 0x00, 0x00, 0xda, 0xfa, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_13_page20[8] = {
- 0x00, 0xff, 0x00, 0x00, 0xb4, 0xa1, 0xa5, 0x00, /* 0x18-0x1f */
-};
-
-static int
-iso8859_13_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0180)
- c = iso8859_13_page00[wc-0x00a0];
- else if (wc >= 0x2018 && wc < 0x2020)
- c = iso8859_13_page20[wc-0x2018];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-13
+ */
+
+static const unsigned short iso8859_13_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
+ 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
+ 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
+ /* 0xc0 */
+ 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
+ 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
+ /* 0xd0 */
+ 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
+ 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
+ /* 0xe0 */
+ 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
+ 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
+ /* 0xf0 */
+ 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
+ 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019,
+};
+
+static int
+iso8859_13_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_13_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_13_page00[224] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0xc4, 0xc5, 0xaf, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0xd3, 0x00, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0xa8, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe5, 0xbf, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0xf3, 0x00, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0xb8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0xc2, 0xe2, 0x00, 0x00, 0xc0, 0xe0, 0xc3, 0xe3, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0xc7, 0xe7, 0x00, 0x00, 0xcb, 0xeb, /* 0x10-0x17 */
+ 0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0xce, 0xee, 0x00, 0x00, 0xc1, 0xe1, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xed, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0xcf, 0xef, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf4, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0x50-0x57 */
+ 0x00, 0x00, 0xda, 0xfa, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_13_page20[8] = {
+ 0x00, 0xff, 0x00, 0x00, 0xb4, 0xa1, 0xa5, 0x00, /* 0x18-0x1f */
+};
+
+static int
+iso8859_13_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_13_page00[wc-0x00a0];
+ else if (wc >= 0x2018 && wc < 0x2020)
+ c = iso8859_13_page20[wc-0x2018];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_14.h b/libX11/src/xlibi18n/lcUniConv/iso8859_14.h
index f01581492..f925c8f03 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_14.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_14.h
@@ -1,108 +1,108 @@
-
-/*
- * ISO-8859-14
- */
-
-static const unsigned short iso8859_14_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
- 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
- /* 0xb0 */
- 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
- 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
- /* 0xc0 */
- 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
- /* 0xd0 */
- 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
- 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
- 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff,
-};
-
-static int
-iso8859_14_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0xa0)
- *pwc = (ucs4_t) iso8859_14_2uni[c-0xa0];
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char iso8859_14_page00[96] = {
- 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0x00, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
- 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x00, 0xff, /* 0xf8-0xff */
-};
-static const unsigned char iso8859_14_page01_0[32] = {
- 0x00, 0x00, 0xa4, 0xa5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
-};
-static const unsigned char iso8859_14_page01_1[16] = {
- 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, 0xde, 0xfe, /* 0x70-0x77 */
- 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_14_page1e_0[136] = {
- 0x00, 0x00, 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0xa6, 0xab, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xb1, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0xb4, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb9, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xbb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0x00, 0x00, /* 0x80-0x87 */
-};
-static const unsigned char iso8859_14_page1e_1[8] = {
- 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
-};
-
-static int
-iso8859_14_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0100)
- c = iso8859_14_page00[wc-0x00a0];
- else if (wc >= 0x0108 && wc < 0x0128)
- c = iso8859_14_page01_0[wc-0x0108];
- else if (wc >= 0x0170 && wc < 0x0180)
- c = iso8859_14_page01_1[wc-0x0170];
- else if (wc >= 0x1e00 && wc < 0x1e88)
- c = iso8859_14_page1e_0[wc-0x1e00];
- else if (wc >= 0x1ef0 && wc < 0x1ef8)
- c = iso8859_14_page1e_1[wc-0x1ef0];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-14
+ */
+
+static const unsigned short iso8859_14_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
+ 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
+ /* 0xb0 */
+ 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
+ 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff,
+};
+
+static int
+iso8859_14_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0)
+ *pwc = (ucs4_t) iso8859_14_2uni[c-0xa0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_14_page00[96] = {
+ 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0x00, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x00, 0xff, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_14_page01_0[32] = {
+ 0x00, 0x00, 0xa4, 0xa5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char iso8859_14_page01_1[16] = {
+ 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, 0xde, 0xfe, /* 0x70-0x77 */
+ 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_14_page1e_0[136] = {
+ 0x00, 0x00, 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0xa6, 0xab, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xb1, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0xb4, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb9, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xbb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0x00, 0x00, /* 0x80-0x87 */
+};
+static const unsigned char iso8859_14_page1e_1[8] = {
+ 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
+};
+
+static int
+iso8859_14_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = iso8859_14_page00[wc-0x00a0];
+ else if (wc >= 0x0108 && wc < 0x0128)
+ c = iso8859_14_page01_0[wc-0x0108];
+ else if (wc >= 0x0170 && wc < 0x0180)
+ c = iso8859_14_page01_1[wc-0x0170];
+ else if (wc >= 0x1e00 && wc < 0x1e88)
+ c = iso8859_14_page1e_0[wc-0x1e00];
+ else if (wc >= 0x1ef0 && wc < 0x1ef8)
+ c = iso8859_14_page1e_1[wc-0x1ef0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_15.h b/libX11/src/xlibi18n/lcUniConv/iso8859_15.h
index 631d9b5e2..258b108d6 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_15.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_15.h
@@ -1,62 +1,62 @@
-
-/*
- * ISO-8859-15
- */
-
-static const unsigned short iso8859_15_2uni[32] = {
- /* 0xa0 */
- 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
- 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
- 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
-};
-
-static int
-iso8859_15_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0xa0 && c < 0xc0)
- *pwc = (ucs4_t) iso8859_15_2uni[c-0xa0];
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char iso8859_15_page00[32] = {
- 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0xb9, 0xba, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0xb8-0xbf */
-};
-static const unsigned char iso8859_15_page01[48] = {
- 0x00, 0x00, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0xbe, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
-};
-
-static int
-iso8859_15_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00c0)
- c = iso8859_15_page00[wc-0x00a0];
- else if (wc >= 0x00c0 && wc < 0x0100)
- c = wc;
- else if (wc >= 0x0150 && wc < 0x0180)
- c = iso8859_15_page01[wc-0x0150];
- else if (wc == 0x20ac)
- c = 0xa4;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-15
+ */
+
+static const unsigned short iso8859_15_2uni[32] = {
+ /* 0xa0 */
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
+ 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
+ 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
+};
+
+static int
+iso8859_15_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0 && c < 0xc0)
+ *pwc = (ucs4_t) iso8859_15_2uni[c-0xa0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_15_page00[32] = {
+ 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0xb9, 0xba, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0xb8-0xbf */
+};
+static const unsigned char iso8859_15_page01[48] = {
+ 0x00, 0x00, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0xbe, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
+};
+
+static int
+iso8859_15_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = iso8859_15_page00[wc-0x00a0];
+ else if (wc >= 0x00c0 && wc < 0x0100)
+ c = wc;
+ else if (wc >= 0x0150 && wc < 0x0180)
+ c = iso8859_15_page01[wc-0x0150];
+ else if (wc == 0x20ac)
+ c = 0xa4;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_16.h b/libX11/src/xlibi18n/lcUniConv/iso8859_16.h
index 99a54d98f..082037f4b 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_16.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_16.h
@@ -1,97 +1,97 @@
-
-/*
- * ISO-8859-16
- */
-
-static const unsigned short iso8859_16_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7,
- 0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7,
- 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c,
- /* 0xc0 */
- 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7,
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
- /* 0xd0 */
- 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a,
- 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b,
- 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff,
-};
-
-static int
-iso8859_16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_16_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_16_page00[224] = {
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0xc6, 0xc7, /* 0xc0-0xc7 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
- 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0x00, /* 0xd0-0xd7 */
- 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0xe6, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0x00, /* 0xf0-0xf7 */
- 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
- /* 0x0100 */
- 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xa2, 0xc5, 0xe5, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0xb2, 0xb9, 0x00, 0x00, /* 0x08-0x0f */
- 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0xd5, 0xf5, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0xbe, 0xac, 0xae, 0xaf, 0xbf, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_16_page02[8] = {
- 0xaa, 0xba, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
-};
-static const unsigned char iso8859_16_page20[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xa5, 0x00, /* 0x18-0x1f */
-};
-
-static int
-iso8859_16_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0180)
- c = iso8859_16_page00[wc-0x00a0];
- else if (wc >= 0x0218 && wc < 0x0220)
- c = iso8859_16_page02[wc-0x0218];
- else if (wc >= 0x2018 && wc < 0x2020)
- c = iso8859_16_page20[wc-0x2018];
- else if (wc == 0x20ac)
- c = 0xa4;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-16
+ */
+
+static const unsigned short iso8859_16_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7,
+ 0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7,
+ 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a,
+ 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b,
+ 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff,
+};
+
+static int
+iso8859_16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_16_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_16_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0xc6, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0xe6, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xa2, 0xc5, 0xe5, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xb2, 0xb9, 0x00, 0x00, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xd5, 0xf5, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0xbe, 0xac, 0xae, 0xaf, 0xbf, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_16_page02[8] = {
+ 0xaa, 0xba, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+};
+static const unsigned char iso8859_16_page20[8] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xa5, 0x00, /* 0x18-0x1f */
+};
+
+static int
+iso8859_16_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_16_page00[wc-0x00a0];
+ else if (wc >= 0x0218 && wc < 0x0220)
+ c = iso8859_16_page02[wc-0x0218];
+ else if (wc >= 0x2018 && wc < 0x2020)
+ c = iso8859_16_page20[wc-0x2018];
+ else if (wc == 0x20ac)
+ c = 0xa4;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_2.h b/libX11/src/xlibi18n/lcUniConv/iso8859_2.h
index a63d00424..e9639a72f 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_2.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_2.h
@@ -1,93 +1,93 @@
-
-/*
- * ISO-8859-2
- */
-
-static const unsigned short iso8859_2_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
- 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
- /* 0xb0 */
- 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
- 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
- /* 0xc0 */
- 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
- 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
- /* 0xd0 */
- 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
- 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
- /* 0xe0 */
- 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
- 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
- /* 0xf0 */
- 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
- 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,
-};
-
-static int
-iso8859_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_2_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_2_page00[224] = {
- 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
- 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
- 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
- 0x00, 0x00, 0xda, 0x00, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
- 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
- 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
- 0x00, 0x00, 0xfa, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef, /* 0x08-0x0f */
- 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0xc5, 0xe5, 0x00, 0x00, 0xa5, 0xb5, 0x00, /* 0x38-0x3f */
- 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2, /* 0x40-0x47 */
- 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, /* 0x50-0x57 */
- 0xd8, 0xf8, 0xa6, 0xb6, 0x00, 0x00, 0xaa, 0xba, /* 0x58-0x5f */
- 0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9, /* 0x68-0x6f */
- 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_2_page02[32] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00, /* 0xd8-0xdf */
-};
-
-static int
-iso8859_2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0180)
- c = iso8859_2_page00[wc-0x00a0];
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = iso8859_2_page02[wc-0x02c0];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-2
+ */
+
+static const unsigned short iso8859_2_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
+ 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
+ /* 0xb0 */
+ 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
+ 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
+ /* 0xc0 */
+ 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
+ /* 0xd0 */
+ 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
+ 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
+ /* 0xe0 */
+ 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
+ /* 0xf0 */
+ 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
+ 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,
+};
+
+static int
+iso8859_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_2_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_2_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0xda, 0x00, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0x00, 0x00, 0xfa, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0xc5, 0xe5, 0x00, 0x00, 0xa5, 0xb5, 0x00, /* 0x38-0x3f */
+ 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2, /* 0x40-0x47 */
+ 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, /* 0x50-0x57 */
+ 0xd8, 0xf8, 0xa6, 0xb6, 0x00, 0x00, 0xaa, 0xba, /* 0x58-0x5f */
+ 0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9, /* 0x68-0x6f */
+ 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_2_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+iso8859_2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_2_page00[wc-0x00a0];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = iso8859_2_page02[wc-0x02c0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_3.h b/libX11/src/xlibi18n/lcUniConv/iso8859_3.h
index 2282f19cf..55217e5b8 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_3.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_3.h
@@ -1,99 +1,99 @@
-
-/*
- * ISO-8859-3
- */
-
-static const unsigned short iso8859_3_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0xfffd, 0x0124, 0x00a7,
- 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0xfffd, 0x017b,
- /* 0xb0 */
- 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
- 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0xfffd, 0x017c,
- /* 0xc0 */
- 0x00c0, 0x00c1, 0x00c2, 0xfffd, 0x00c4, 0x010a, 0x0108, 0x00c7,
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
- /* 0xd0 */
- 0xfffd, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
- 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0xfffd, 0x00e4, 0x010b, 0x0109, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0xfffd, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
- 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9,
-};
-
-static int
-iso8859_3_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = iso8859_3_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char iso8859_3_page00[96] = {
- 0xa0, 0x00, 0x00, 0xa3, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
- 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
- 0xb8, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
- 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
- 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
- 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
- 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
-};
-static const unsigned char iso8859_3_page01[120] = {
- 0xc6, 0xe6, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0xd8, 0xf8, 0xab, 0xbb, /* 0x18-0x1f */
- 0xd5, 0xf5, 0x00, 0x00, 0xa6, 0xb6, 0xa1, 0xb1, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0xa9, 0xb9, 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, 0xaa, 0xba, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0xdd, 0xfd, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_3_page02[8] = {
- 0xa2, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
-};
-
-static int
-iso8859_3_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0100)
- c = iso8859_3_page00[wc-0x00a0];
- else if (wc >= 0x0108 && wc < 0x0180)
- c = iso8859_3_page01[wc-0x0108];
- else if (wc >= 0x02d8 && wc < 0x02e0)
- c = iso8859_3_page02[wc-0x02d8];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-3
+ */
+
+static const unsigned short iso8859_3_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0xfffd, 0x0124, 0x00a7,
+ 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0xfffd, 0x017b,
+ /* 0xb0 */
+ 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
+ 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0xfffd, 0x017c,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0xfffd, 0x00c4, 0x010a, 0x0108, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0xfffd, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
+ 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0xfffd, 0x00e4, 0x010b, 0x0109, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0xfffd, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
+ 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9,
+};
+
+static int
+iso8859_3_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = iso8859_3_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_3_page00[96] = {
+ 0xa0, 0x00, 0x00, 0xa3, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_3_page01[120] = {
+ 0xc6, 0xe6, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0xd8, 0xf8, 0xab, 0xbb, /* 0x18-0x1f */
+ 0xd5, 0xf5, 0x00, 0x00, 0xa6, 0xb6, 0xa1, 0xb1, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0xa9, 0xb9, 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, 0xaa, 0xba, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0xdd, 0xfd, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_3_page02[8] = {
+ 0xa2, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+iso8859_3_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = iso8859_3_page00[wc-0x00a0];
+ else if (wc >= 0x0108 && wc < 0x0180)
+ c = iso8859_3_page01[wc-0x0108];
+ else if (wc >= 0x02d8 && wc < 0x02e0)
+ c = iso8859_3_page02[wc-0x02d8];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_4.h b/libX11/src/xlibi18n/lcUniConv/iso8859_4.h
index 878a7e44a..e08a37712 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_4.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_4.h
@@ -1,93 +1,93 @@
-
-/*
- * ISO-8859-4
- */
-
-static const unsigned short iso8859_4_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
- 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
- /* 0xb0 */
- 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
- 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
- /* 0xc0 */
- 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
- 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
- /* 0xd0 */
- 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
- 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
- /* 0xe0 */
- 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
- 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
- /* 0xf0 */
- 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
- 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9,
-};
-
-static int
-iso8859_4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_4_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_4_page00[224] = {
- 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xaf, /* 0xa8-0xaf */
- 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
- 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
- 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
- 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
- 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
- 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
- 0xd0, 0xf0, 0xaa, 0xba, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
- 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0xa5, 0xb5, 0xcf, 0xef, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf3, /* 0x30-0x37 */
- 0xa2, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0xbd, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xb3, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xa9, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, /* 0x60-0x67 */
- 0xdd, 0xfd, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_4_page02[32] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0xff, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
-};
-
-static int
-iso8859_4_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0180)
- c = iso8859_4_page00[wc-0x00a0];
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = iso8859_4_page02[wc-0x02c0];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-4
+ */
+
+static const unsigned short iso8859_4_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
+ 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
+ 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
+ /* 0xc0 */
+ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
+ /* 0xd0 */
+ 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
+ /* 0xe0 */
+ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
+ /* 0xf0 */
+ 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9,
+};
+
+static int
+iso8859_4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_4_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_4_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0xaa, 0xba, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
+ 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0xa5, 0xb5, 0xcf, 0xef, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf3, /* 0x30-0x37 */
+ 0xa2, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0xbd, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xb3, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xa9, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, /* 0x60-0x67 */
+ 0xdd, 0xfd, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_4_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xff, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+iso8859_4_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_4_page00[wc-0x00a0];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = iso8859_4_page02[wc-0x02c0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_5.h b/libX11/src/xlibi18n/lcUniConv/iso8859_5.h
index cdd6c45db..3d7c3323d 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_5.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_5.h
@@ -1,76 +1,76 @@
-
-/*
- * ISO-8859-5
- */
-
-static const unsigned short iso8859_5_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
- 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
- /* 0xb0 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
- 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
- /* 0xc0 */
- 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
- 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
- /* 0xd0 */
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
- 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
- /* 0xe0 */
- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
- 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
- /* 0xf0 */
- 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
- 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f,
-};
-
-static int
-iso8859_5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_5_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_5_page00[16] = {
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
-};
-static const unsigned char iso8859_5_page04[96] = {
- 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x08-0x0f */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
- 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x38-0x3f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
- 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff, /* 0x58-0x5f */
-};
-
-static int
-iso8859_5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00b0)
- c = iso8859_5_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x0460)
- c = iso8859_5_page04[wc-0x0400];
- else if (wc == 0x2116)
- c = 0xf0;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-5
+ */
+
+static const unsigned short iso8859_5_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
+ 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
+ /* 0xb0 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ /* 0xc0 */
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ /* 0xd0 */
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ /* 0xe0 */
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+ /* 0xf0 */
+ 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f,
+};
+
+static int
+iso8859_5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_5_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_5_page00[16] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char iso8859_5_page04[96] = {
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x08-0x0f */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff, /* 0x58-0x5f */
+};
+
+static int
+iso8859_5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00b0)
+ c = iso8859_5_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0460)
+ c = iso8859_5_page04[wc-0x0400];
+ else if (wc == 0x2116)
+ c = 0xf0;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_6.h b/libX11/src/xlibi18n/lcUniConv/iso8859_6.h
index 4c80a64f5..7b4b3b08a 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_6.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_6.h
@@ -1,79 +1,79 @@
-
-/*
- * ISO-8859-6
- */
-
-static const unsigned short iso8859_6_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0xfffd, 0xfffd, 0xfffd, 0x00a4, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x060c, 0x00ad, 0xfffd, 0xfffd,
- /* 0xb0 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0x061b, 0xfffd, 0xfffd, 0xfffd, 0x061f,
- /* 0xc0 */
- 0xfffd, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
- 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
- /* 0xd0 */
- 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
- 0x0638, 0x0639, 0x063a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xe0 */
- 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
- 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
- /* 0xf0 */
- 0x0650, 0x0651, 0x0652, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
-};
-
-static int
-iso8859_6_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = iso8859_6_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char iso8859_6_page00[16] = {
- 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
-};
-static const unsigned char iso8859_6_page06[80] = {
- 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
- 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
- 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
- 0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
-};
-
-static int
-iso8859_6_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00b0)
- c = iso8859_6_page00[wc-0x00a0];
- else if (wc >= 0x0608 && wc < 0x0658)
- c = iso8859_6_page06[wc-0x0608];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-6
+ */
+
+static const unsigned short iso8859_6_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0xfffd, 0xfffd, 0xfffd, 0x00a4, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x060c, 0x00ad, 0xfffd, 0xfffd,
+ /* 0xb0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0x061b, 0xfffd, 0xfffd, 0xfffd, 0x061f,
+ /* 0xc0 */
+ 0xfffd, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ /* 0xd0 */
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
+ 0x0638, 0x0639, 0x063a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xe0 */
+ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
+ 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
+ /* 0xf0 */
+ 0x0650, 0x0651, 0x0652, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+};
+
+static int
+iso8859_6_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = iso8859_6_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_6_page00[16] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char iso8859_6_page06[80] = {
+ 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+};
+
+static int
+iso8859_6_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00b0)
+ c = iso8859_6_page00[wc-0x00a0];
+ else if (wc >= 0x0608 && wc < 0x0658)
+ c = iso8859_6_page06[wc-0x0608];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_7.h b/libX11/src/xlibi18n/lcUniConv/iso8859_7.h
index 9b500e4b3..6744cfcea 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_7.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_7.h
@@ -1,87 +1,87 @@
-
-/*
- * ISO-8859-7
- */
-
-static const unsigned short iso8859_7_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x2018, 0x2019, 0x00a3, 0xfffd, 0xfffd, 0x00a6, 0x00a7,
- 0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0xfffd, 0x2015,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
- 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
- /* 0xc0 */
- 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
- 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
- /* 0xd0 */
- 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
- 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
- /* 0xe0 */
- 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
- 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
- /* 0xf0 */
- 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
- 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd,
-};
-
-static int
-iso8859_7_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = iso8859_7_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char iso8859_7_page00[32] = {
- 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
-};
-static const unsigned char iso8859_7_page03[80] = {
- 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0x00, /* 0x80-0x87 */
- 0xb8, 0xb9, 0xba, 0x00, 0xbc, 0x00, 0xbe, 0xbf, /* 0x88-0x8f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x90-0x97 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x98-0x9f */
- 0xd0, 0xd1, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xa0-0xa7 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xa8-0xaf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xb0-0xb7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xb8-0xbf */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xc0-0xc7 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xc8-0xcf */
-};
-static const unsigned char iso8859_7_page20[16] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, /* 0x10-0x17 */
- 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
-};
-
-static int
-iso8859_7_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00c0)
- c = iso8859_7_page00[wc-0x00a0];
- else if (wc >= 0x0380 && wc < 0x03d0)
- c = iso8859_7_page03[wc-0x0380];
- else if (wc >= 0x2010 && wc < 0x2020)
- c = iso8859_7_page20[wc-0x2010];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-7
+ */
+
+static const unsigned short iso8859_7_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x2018, 0x2019, 0x00a3, 0xfffd, 0xfffd, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0xfffd, 0x2015,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
+ 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
+ /* 0xc0 */
+ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+ 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+ /* 0xd0 */
+ 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
+ 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+ /* 0xe0 */
+ 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+ /* 0xf0 */
+ 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+ 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd,
+};
+
+static int
+iso8859_7_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = iso8859_7_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_7_page00[32] = {
+ 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char iso8859_7_page03[80] = {
+ 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0x00, /* 0x80-0x87 */
+ 0xb8, 0xb9, 0xba, 0x00, 0xbc, 0x00, 0xbe, 0xbf, /* 0x88-0x8f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x90-0x97 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x98-0x9f */
+ 0xd0, 0xd1, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xa0-0xa7 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xa8-0xaf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xb0-0xb7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xb8-0xbf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xc0-0xc7 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xc8-0xcf */
+};
+static const unsigned char iso8859_7_page20[16] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, /* 0x10-0x17 */
+ 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+};
+
+static int
+iso8859_7_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = iso8859_7_page00[wc-0x00a0];
+ else if (wc >= 0x0380 && wc < 0x03d0)
+ c = iso8859_7_page03[wc-0x0380];
+ else if (wc >= 0x2010 && wc < 0x2020)
+ c = iso8859_7_page20[wc-0x2010];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_8.h b/libX11/src/xlibi18n/lcUniConv/iso8859_8.h
index 152dc3cae..2469a870d 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_8.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_8.h
@@ -1,88 +1,88 @@
-
-/*
- * ISO-8859-8
- */
-
-static const unsigned short iso8859_8_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
- 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
- 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0xfffd,
- /* 0xc0 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xd0 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2017,
- /* 0xe0 */
- 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
- 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
- /* 0xf0 */
- 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
- 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
-};
-
-static int
-iso8859_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0xa0) {
- unsigned short wc = iso8859_8_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- else {
- *pwc = (ucs4_t) c;
- return 1;
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char iso8859_8_page00[88] = {
- 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
-};
-static const unsigned char iso8859_8_page05[32] = {
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
- 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
-};
-static const unsigned char iso8859_8_page20[16] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x10-0x17 */
-};
-
-static int
-iso8859_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00f8)
- c = iso8859_8_page00[wc-0x00a0];
- else if (wc >= 0x05d0 && wc < 0x05f0)
- c = iso8859_8_page05[wc-0x05d0];
- else if (wc >= 0x2008 && wc < 0x2018)
- c = iso8859_8_page20[wc-0x2008];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-8
+ */
+
+static const unsigned short iso8859_8_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0xfffd,
+ /* 0xc0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xd0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2017,
+ /* 0xe0 */
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+ /* 0xf0 */
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
+};
+
+static int
+iso8859_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0) {
+ unsigned short wc = iso8859_8_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ else {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_8_page00[88] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
+};
+static const unsigned char iso8859_8_page05[32] = {
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
+ 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+};
+static const unsigned char iso8859_8_page20[16] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x10-0x17 */
+};
+
+static int
+iso8859_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = iso8859_8_page00[wc-0x00a0];
+ else if (wc >= 0x05d0 && wc < 0x05f0)
+ c = iso8859_8_page05[wc-0x05d0];
+ else if (wc >= 0x2008 && wc < 0x2018)
+ c = iso8859_8_page20[wc-0x2008];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_9.h b/libX11/src/xlibi18n/lcUniConv/iso8859_9.h
index b94ac9de6..d95948cc2 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_9.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_9.h
@@ -1,66 +1,66 @@
-
-/*
- * ISO-8859-9
- */
-
-static const unsigned short iso8859_9_2uni[48] = {
- /* 0xd0 */
- 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
- 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
- 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
-};
-
-static int
-iso8859_9_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0xd0)
- *pwc = (ucs4_t) iso8859_9_2uni[c-0xd0];
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char iso8859_9_page00[48] = {
- 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
-};
-static const unsigned char iso8859_9_page01[72] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
-};
-
-static int
-iso8859_9_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00d0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00d0 && wc < 0x0100)
- c = iso8859_9_page00[wc-0x00d0];
- else if (wc >= 0x0118 && wc < 0x0160)
- c = iso8859_9_page01[wc-0x0118];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-9
+ */
+
+static const unsigned short iso8859_9_2uni[48] = {
+ /* 0xd0 */
+ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
+};
+
+static int
+iso8859_9_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xd0)
+ *pwc = (ucs4_t) iso8859_9_2uni[c-0xd0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_9_page00[48] = {
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_9_page01[72] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
+};
+
+static int
+iso8859_9_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00d0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00d0 && wc < 0x0100)
+ c = iso8859_9_page00[wc-0x00d0];
+ else if (wc >= 0x0118 && wc < 0x0160)
+ c = iso8859_9_page01[wc-0x0118];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_9e.h b/libX11/src/xlibi18n/lcUniConv/iso8859_9e.h
index cbab5816c..6a2b17f26 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_9e.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_9e.h
@@ -1,102 +1,102 @@
-
-/*
- * ISO-8859-9E
- */
-
-static const unsigned short iso8859_9e_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x017d, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x012c, 0x00a7,
- 0x016c, 0x00a9, 0x01e6, 0x00ab, 0x014a, 0x00ad, 0x00ae, 0x01d1,
- /* 0xb0 */
- 0x00b0, 0x017e, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x012d, 0x00b7,
- 0x016d, 0x00b9, 0x01e7, 0x00bb, 0x014b, 0x00bd, 0x0178, 0x01d2,
- /* 0xc0 */
- 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x018f, 0x00c7,
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
- /* 0xd0 */
- 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00dd,
- 0x019f, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x0259, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00fd,
- 0x0275, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
-};
-
-static int
-iso8859_9e_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0xa0)
- *pwc = (ucs4_t) iso8859_9e_2uni[c-0xa0];
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char iso8859_9e_page00[96] = {
- 0xa0, 0x00, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
- 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0xb9, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x00, 0xc7, /* 0xc0-0xc7 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
- 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
- 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0xd7, 0x00, 0xdf, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
- 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0xf7, 0x00, 0xff, /* 0xf8-0xff */
-};
-static const unsigned char iso8859_9e_page01[136] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, /* 0x28-0x2f */
- 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0xbe, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xb1, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, /* 0x88-0x8f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, /* 0x98-0x9f */
-};
-static const unsigned char iso8859_9e_page01_d[24] = {
- 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0xe0-0xe7 */
-};
-
-static int
-iso8859_9e_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0100)
- c = iso8859_9e_page00[wc-0x00a0];
- else if (wc >= 0x0118 && wc < 0x01a0)
- c = iso8859_9e_page01[wc-0x0118];
- else if (wc >= 0x01d0 && wc < 0x01e8)
- c = iso8859_9e_page01_d[wc-0x01d0];
- else if (wc == 0x0259)
- c = 0xe6;
- else if (wc == 0x0275)
- c = 0xf8;
- else if (wc == 0x20ac)
- c = 0xa4;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-9E
+ */
+
+static const unsigned short iso8859_9e_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x017d, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x012c, 0x00a7,
+ 0x016c, 0x00a9, 0x01e6, 0x00ab, 0x014a, 0x00ad, 0x00ae, 0x01d1,
+ /* 0xb0 */
+ 0x00b0, 0x017e, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x012d, 0x00b7,
+ 0x016d, 0x00b9, 0x01e7, 0x00bb, 0x014b, 0x00bd, 0x0178, 0x01d2,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x018f, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00dd,
+ 0x019f, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x0259, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00fd,
+ 0x0275, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
+};
+
+static int
+iso8859_9e_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0)
+ *pwc = (ucs4_t) iso8859_9e_2uni[c-0xa0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_9e_page00[96] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0xb9, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x00, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0xd7, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0xf7, 0x00, 0xff, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_9e_page01[136] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, /* 0x28-0x2f */
+ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0xbe, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xb1, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, /* 0x98-0x9f */
+};
+static const unsigned char iso8859_9e_page01_d[24] = {
+ 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0xe0-0xe7 */
+};
+
+static int
+iso8859_9e_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = iso8859_9e_page00[wc-0x00a0];
+ else if (wc >= 0x0118 && wc < 0x01a0)
+ c = iso8859_9e_page01[wc-0x0118];
+ else if (wc >= 0x01d0 && wc < 0x01e8)
+ c = iso8859_9e_page01_d[wc-0x01d0];
+ else if (wc == 0x0259)
+ c = 0xe6;
+ else if (wc == 0x0275)
+ c = 0xf8;
+ else if (wc == 0x20ac)
+ c = 0xa4;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/jisx0201.h b/libX11/src/xlibi18n/lcUniConv/jisx0201.h
index e4af9666f..b5d6ec215 100644
--- a/libX11/src/xlibi18n/lcUniConv/jisx0201.h
+++ b/libX11/src/xlibi18n/lcUniConv/jisx0201.h
@@ -1,47 +1,47 @@
-
-/*
- * JISX0201.1976-0
- */
-
-static int
-jisx0201_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- if (c == 0x5c)
- *pwc = (ucs4_t) 0x00a5;
- else if (c == 0x7e)
- *pwc = (ucs4_t) 0x203e;
- else
- *pwc = (ucs4_t) c;
- return 1;
- } else {
- if (c >= 0xa1 && c < 0xe0) {
- *pwc = (ucs4_t) c + 0xfec0;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static int
-jisx0201_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) {
- *r = wc;
- return 1;
- }
- if (wc == 0x00a5) {
- *r = 0x5c;
- return 1;
- }
- if (wc == 0x203e) {
- *r = 0x7e;
- return 1;
- }
- if (wc >= 0xff61 && wc < 0xffa0) {
- *r = wc - 0xfec0;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * JISX0201.1976-0
+ */
+
+static int
+jisx0201_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ if (c == 0x5c)
+ *pwc = (ucs4_t) 0x00a5;
+ else if (c == 0x7e)
+ *pwc = (ucs4_t) 0x203e;
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+ } else {
+ if (c >= 0xa1 && c < 0xe0) {
+ *pwc = (ucs4_t) c + 0xfec0;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static int
+jisx0201_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) {
+ *r = wc;
+ return 1;
+ }
+ if (wc == 0x00a5) {
+ *r = 0x5c;
+ return 1;
+ }
+ if (wc == 0x203e) {
+ *r = 0x7e;
+ return 1;
+ }
+ if (wc >= 0xff61 && wc < 0xffa0) {
+ *r = wc - 0xfec0;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/jisx0208.h b/libX11/src/xlibi18n/lcUniConv/jisx0208.h
index 5888f6f21..7c70eb4e1 100644
--- a/libX11/src/xlibi18n/lcUniConv/jisx0208.h
+++ b/libX11/src/xlibi18n/lcUniConv/jisx0208.h
@@ -1,2396 +1,2396 @@
-
-/*
- * JISX0208.1990-0
- */
-
-static const unsigned short jisx0208_2uni_page21[690] = {
- /* 0x21 */
- 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b,
- 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e,
- 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd,
- 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c,
- 0x301c, 0x2016, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019, 0x201c,
- 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b,
- 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e,
- 0x300f, 0x3010, 0x3011, 0xff0b, 0x2212, 0x00b1, 0x00d7, 0x00f7,
- 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234,
- 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04,
- 0x00a2, 0x00a3, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20, 0x00a7,
- 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7,
- /* 0x22 */
- 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b,
- 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a,
- 0x2229, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x2227, 0x2228, 0x00ac, 0x21d2, 0x21d4, 0x2200, 0x2203,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207,
- 0x2261, 0x2252, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235,
- 0x222b, 0x222c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x212b, 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021,
- 0x00b6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x25ef,
- /* 0x23 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xff10,
- 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
- 0xff19, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
- 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
- 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
- 0xff39, 0xff3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
- 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
- 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
- 0xff59, 0xff5a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x24 */
- 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
- 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
- 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
- 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
- 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
- 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
- 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
- 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
- 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
- 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x25 */
- 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
- 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
- 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
- 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
- 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
- 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
- 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
- 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
- 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
- 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
- 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x26 */
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
- 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
- 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
- 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
- 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x27 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
- 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
- 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
- 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
- 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
- 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
- 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x28 */
- 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c,
- 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b,
- 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f,
- 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542,
-};
-static const unsigned short jisx0208_2uni_page30[6398] = {
- /* 0x30 */
- 0x4e9c, 0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b, 0x6328, 0x59f6,
- 0x9022, 0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1, 0x6e25, 0x65ed,
- 0x8466, 0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1, 0x6271, 0x5b9b,
- 0x59d0, 0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e, 0x6216, 0x7c9f,
- 0x88b7, 0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848, 0x95c7, 0x978d,
- 0x674f, 0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049, 0x56f2, 0x5937,
- 0x59d4, 0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170, 0x6613, 0x6905,
- 0x70ba, 0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def, 0x80c3, 0x840e,
- 0x8863, 0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95, 0x4ea5, 0x57df,
- 0x80b2, 0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2, 0x9038, 0x7a32,
- 0x8328, 0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd, 0x54e1, 0x56e0,
- 0x59fb, 0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d,
- /* 0x31 */
- 0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87, 0x70cf,
- 0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11, 0x7893,
- 0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b, 0x59e5,
- 0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b, 0x96f2,
- 0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620, 0x66f3,
- 0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e, 0x9834,
- 0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca, 0x99c5,
- 0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186, 0x5712,
- 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4, 0x6cbf,
- 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01, 0x8276,
- 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc, 0x6c5a,
- 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc,
- /* 0x32 */
- 0x62bc, 0x65fa, 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1, 0x8956,
- 0x9d2c, 0x9d0e, 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104, 0x5c4b,
- 0x61b6, 0x81c6, 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378, 0x6069,
- 0x6e29, 0x7a4f, 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55, 0x4f3d,
- 0x4fa1, 0x4f73, 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1, 0x5bb6,
- 0x5be1, 0x79d1, 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3, 0x706b,
- 0x73c2, 0x798d, 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db, 0x8304,
- 0x8377, 0x83ef, 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8, 0x8fe6,
- 0x904e, 0x971e, 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259, 0x753b,
- 0x81e5, 0x82bd, 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5, 0x4ecb,
- 0x4f1a, 0x89e3, 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb, 0x602a,
- 0x6094, 0x6062, 0x61d0, 0x6212, 0x62d0, 0x6539,
- /* 0x33 */
- 0x9b41, 0x6666, 0x68b0, 0x6d77, 0x7070, 0x754c, 0x7686, 0x7d75,
- 0x82a5, 0x87f9, 0x958b, 0x968e, 0x8c9d, 0x51f1, 0x52be, 0x5916,
- 0x54b3, 0x5bb3, 0x5d16, 0x6168, 0x6982, 0x6daf, 0x788d, 0x84cb,
- 0x8857, 0x8a72, 0x93a7, 0x9ab8, 0x6d6c, 0x99a8, 0x86d9, 0x57a3,
- 0x67ff, 0x86ce, 0x920e, 0x5283, 0x5687, 0x5404, 0x5ed3, 0x62e1,
- 0x64b9, 0x683c, 0x6838, 0x6bbb, 0x7372, 0x78ba, 0x7a6b, 0x899a,
- 0x89d2, 0x8d6b, 0x8f03, 0x90ed, 0x95a3, 0x9694, 0x9769, 0x5b66,
- 0x5cb3, 0x697d, 0x984d, 0x984e, 0x639b, 0x7b20, 0x6a2b, 0x6a7f,
- 0x68b6, 0x9c0d, 0x6f5f, 0x5272, 0x559d, 0x6070, 0x62ec, 0x6d3b,
- 0x6e07, 0x6ed1, 0x845b, 0x8910, 0x8f44, 0x4e14, 0x9c39, 0x53f6,
- 0x691b, 0x6a3a, 0x9784, 0x682a, 0x515c, 0x7ac3, 0x84b2, 0x91dc,
- 0x938c, 0x565b, 0x9d28, 0x6822, 0x8305, 0x8431,
- /* 0x34 */
- 0x7ca5, 0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83, 0x51a0, 0x5bd2,
- 0x520a, 0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a, 0x59e6, 0x5b8c,
- 0x5b98, 0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f, 0x6163, 0x61be,
- 0x63db, 0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e, 0x6b53, 0x6c57,
- 0x6f22, 0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3, 0x770b, 0x7aff,
- 0x7ba1, 0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d, 0x8266, 0x839e,
- 0x89b3, 0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593, 0x9591, 0x95a2,
- 0x9665, 0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b, 0x5cb8, 0x5dcc,
- 0x73a9, 0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b, 0x96c1, 0x9811,
- 0x9854, 0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c, 0x5668, 0x57fa,
- 0x5947, 0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e, 0x5fcc, 0x63ee,
- 0x673a, 0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4,
- /* 0x35 */
- 0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948, 0x5b63,
- 0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77, 0x8ecc,
- 0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100, 0x5993,
- 0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591, 0x7947,
- 0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0, 0x5409,
- 0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775, 0x9ecd,
- 0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45, 0x4ec7,
- 0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551, 0x673d,
- 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae, 0x7b08,
- 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45, 0x5de8,
- 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd, 0x92f8,
- 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac,
- /* 0x36 */
- 0x4f9b, 0x4fa0, 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6, 0x5354,
- 0x5321, 0x537f, 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37, 0x5f4a,
- 0x602f, 0x6050, 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1, 0x72c2,
- 0x72ed, 0x77ef, 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7, 0x93e1,
- 0x97ff, 0x9957, 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681, 0x696d,
- 0x5c40, 0x66f2, 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5, 0x52e4,
- 0x5747, 0x5dfe, 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434, 0x7981,
- 0x79bd, 0x7b4b, 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f, 0x8b39,
- 0x8fd1, 0x91d1, 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5, 0x533a,
- 0x72d7, 0x7396, 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8, 0x99d2,
- 0x5177, 0x611a, 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3, 0x9047,
- 0x9685, 0x4e32, 0x6adb, 0x91e7, 0x5c51, 0x5c48,
- /* 0x37 */
- 0x6398, 0x7a9f, 0x6c93, 0x9774, 0x8f61, 0x7aaa, 0x718a, 0x9688,
- 0x7c82, 0x6817, 0x7e70, 0x6851, 0x936c, 0x52f2, 0x541b, 0x85ab,
- 0x8a13, 0x7fa4, 0x8ecd, 0x90e1, 0x5366, 0x8888, 0x7941, 0x4fc2,
- 0x50be, 0x5211, 0x5144, 0x5553, 0x572d, 0x73ea, 0x578b, 0x5951,
- 0x5f62, 0x5f84, 0x6075, 0x6176, 0x6167, 0x61a9, 0x63b2, 0x643a,
- 0x656c, 0x666f, 0x6842, 0x6e13, 0x7566, 0x7a3d, 0x7cfb, 0x7d4c,
- 0x7d99, 0x7e4b, 0x7f6b, 0x830e, 0x834a, 0x86cd, 0x8a08, 0x8a63,
- 0x8b66, 0x8efd, 0x981a, 0x9d8f, 0x82b8, 0x8fce, 0x9be8, 0x5287,
- 0x621f, 0x6483, 0x6fc0, 0x9699, 0x6841, 0x5091, 0x6b20, 0x6c7a,
- 0x6f54, 0x7a74, 0x7d50, 0x8840, 0x8a23, 0x6708, 0x4ef6, 0x5039,
- 0x5026, 0x5065, 0x517c, 0x5238, 0x5263, 0x55a7, 0x570f, 0x5805,
- 0x5acc, 0x5efa, 0x61b2, 0x61f8, 0x62f3, 0x6372,
- /* 0x38 */
- 0x691c, 0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814, 0x786f, 0x7d79,
- 0x770c, 0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2, 0x9063, 0x9375,
- 0x967a, 0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f, 0x53b3, 0x5e7b,
- 0x5f26, 0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43, 0x8237, 0x8a00,
- 0x8afa, 0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c, 0x56fa, 0x59d1,
- 0x5b64, 0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545, 0x67af, 0x6e56,
- 0x72d0, 0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0, 0x864e, 0x8a87,
- 0x8de8, 0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94, 0x4e92, 0x4f0d,
- 0x5348, 0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1, 0x609f, 0x68a7,
- 0x6a8e, 0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77, 0x9190, 0x4e5e,
- 0x9bc9, 0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016, 0x5149, 0x516c,
- 0x529f, 0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411,
- /* 0x39 */
- 0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d, 0x5b8f,
- 0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7, 0x5f18,
- 0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602, 0x6643,
- 0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a, 0x6d69,
- 0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0, 0x7d05,
- 0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1, 0x8154,
- 0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2, 0x8cfc,
- 0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d, 0x9805,
- 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408, 0x58d5,
- 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b, 0x544a,
- 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09, 0x8170,
- 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc,
- /* 0x3a */
- 0x6b64, 0x9803, 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a, 0x6068,
- 0x61c7, 0x660f, 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5, 0x7d3a,
- 0x826e, 0x9b42, 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f, 0x5de6,
- 0x5dee, 0x67fb, 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396, 0x88df,
- 0x5750, 0x5ea7, 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700, 0x54c9,
- 0x585e, 0x59bb, 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d, 0x6b73,
- 0x6e08, 0x707d, 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d, 0x658e,
- 0x7d30, 0x83dc, 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728, 0x6750,
- 0x7f6a, 0x8ca1, 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a, 0x80b4,
- 0x54b2, 0x5d0e, 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a, 0x548b,
- 0x643e, 0x6628, 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22, 0x932f,
- 0x685c, 0x9bad, 0x7b39, 0x5319, 0x518a, 0x5237,
- /* 0x3b */
- 0x5bdf, 0x62f6, 0x64ae, 0x64e6, 0x672d, 0x6bba, 0x85a9, 0x96d1,
- 0x7690, 0x9bd6, 0x634c, 0x9306, 0x9bab, 0x76bf, 0x6652, 0x4e09,
- 0x5098, 0x53c2, 0x5c71, 0x60e8, 0x6492, 0x6563, 0x685f, 0x71e6,
- 0x73ca, 0x7523, 0x7b97, 0x7e82, 0x8695, 0x8b83, 0x8cdb, 0x9178,
- 0x9910, 0x65ac, 0x66ab, 0x6b8b, 0x4ed5, 0x4ed4, 0x4f3a, 0x4f7f,
- 0x523a, 0x53f8, 0x53f2, 0x55e3, 0x56db, 0x58eb, 0x59cb, 0x59c9,
- 0x59ff, 0x5b50, 0x5c4d, 0x5e02, 0x5e2b, 0x5fd7, 0x601d, 0x6307,
- 0x652f, 0x5b5c, 0x65af, 0x65bd, 0x65e8, 0x679d, 0x6b62, 0x6b7b,
- 0x6c0f, 0x7345, 0x7949, 0x79c1, 0x7cf8, 0x7d19, 0x7d2b, 0x80a2,
- 0x8102, 0x81f3, 0x8996, 0x8a5e, 0x8a69, 0x8a66, 0x8a8c, 0x8aee,
- 0x8cc7, 0x8cdc, 0x96cc, 0x98fc, 0x6b6f, 0x4e8b, 0x4f3c, 0x4f8d,
- 0x5150, 0x5b57, 0x5bfa, 0x6148, 0x6301, 0x6642,
- /* 0x3c */
- 0x6b21, 0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4, 0x78c1, 0x793a,
- 0x800c, 0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50, 0x9e7f, 0x5f0f,
- 0x8b58, 0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb, 0x4e03, 0x53f1,
- 0x57f7, 0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f, 0x6f06, 0x75be,
- 0x8cea, 0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4, 0x829d, 0x5c61,
- 0x854a, 0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368, 0x8d66, 0x659c,
- 0x716e, 0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca, 0x906e, 0x86c7,
- 0x90aa, 0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c, 0x7235, 0x914c,
- 0x91c8, 0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9, 0x4e3b, 0x53d6,
- 0x5b88, 0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0, 0x7a2e, 0x816b,
- 0x8da3, 0x9152, 0x9996, 0x5112, 0x53d7, 0x546a, 0x5bff, 0x6388,
- 0x6a39, 0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468,
- /* 0x3d */
- 0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32, 0x79c0,
- 0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490, 0x8846,
- 0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c, 0x96c6,
- 0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e, 0x67d4,
- 0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4, 0x5919,
- 0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f, 0x51fa,
- 0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3, 0x821c,
- 0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3, 0x6e96,
- 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806, 0x51e6,
- 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2, 0x7f72,
- 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973, 0x5e8f,
- 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f,
- /* 0x3e */
- 0x52dd, 0x5320, 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531, 0x5617,
- 0x5968, 0x59be, 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11, 0x5c1a,
- 0x5e84, 0x5e8a, 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db, 0x638c,
- 0x6377, 0x6607, 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2, 0x6a1f,
- 0x6a35, 0x6cbc, 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126, 0x7167,
- 0x75c7, 0x7701, 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0, 0x7b11,
- 0x7ca7, 0x7d39, 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d, 0x88f3,
- 0x8a1f, 0x8a3c, 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4, 0x9266,
- 0x937e, 0x9418, 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e, 0x4e57,
- 0x5197, 0x5270, 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38, 0x60c5,
- 0x64fe, 0x6761, 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63, 0x84b8,
- 0x8b72, 0x91b8, 0x9320, 0x5631, 0x57f4, 0x98fe,
- /* 0x3f */
- 0x62ed, 0x690d, 0x6b96, 0x71ed, 0x7e54, 0x8077, 0x8272, 0x89e6,
- 0x98df, 0x8755, 0x8fb1, 0x5c3b, 0x4f38, 0x4fe1, 0x4fb5, 0x5507,
- 0x5a20, 0x5bdd, 0x5be9, 0x5fc3, 0x614e, 0x632f, 0x65b0, 0x664b,
- 0x68ee, 0x699b, 0x6d78, 0x6df1, 0x7533, 0x75b9, 0x771f, 0x795e,
- 0x79e6, 0x7d33, 0x81e3, 0x82af, 0x85aa, 0x89aa, 0x8a3a, 0x8eab,
- 0x8f9b, 0x9032, 0x91dd, 0x9707, 0x4eba, 0x4ec1, 0x5203, 0x5875,
- 0x58ec, 0x5c0b, 0x751a, 0x5c3d, 0x814e, 0x8a0a, 0x8fc5, 0x9663,
- 0x976d, 0x7b25, 0x8acf, 0x9808, 0x9162, 0x56f3, 0x53a8, 0x9017,
- 0x5439, 0x5782, 0x5e25, 0x63a8, 0x6c34, 0x708a, 0x7761, 0x7c8b,
- 0x7fe0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968f, 0x745e,
- 0x9ac4, 0x5d07, 0x5d69, 0x6570, 0x67a2, 0x8da8, 0x96db, 0x636e,
- 0x6749, 0x6919, 0x83c5, 0x9817, 0x96c0, 0x88fe,
- /* 0x40 */
- 0x6f84, 0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d, 0x662f, 0x51c4,
- 0x5236, 0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210, 0x653f, 0x6574,
- 0x661f, 0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05, 0x7272, 0x751f,
- 0x76db, 0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f, 0x8aa0, 0x8a93,
- 0x8acb, 0x901d, 0x9192, 0x9752, 0x9759, 0x6589, 0x7a0e, 0x8106,
- 0x96bb, 0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614, 0x6790, 0x77f3,
- 0x7a4d, 0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64, 0x8de1, 0x8e5f,
- 0x78a9, 0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298, 0x8a2d, 0x7a83,
- 0x7bc0, 0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749, 0x4ed9, 0x5148,
- 0x5343, 0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd, 0x6226, 0x6247,
- 0x64b0, 0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17, 0x67d3, 0x6f5c,
- 0x714e, 0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda,
- /* 0x41 */
- 0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e, 0x8cce,
- 0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae, 0x524d,
- 0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3, 0x7cce,
- 0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a, 0x72d9,
- 0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20, 0x7d44,
- 0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275, 0x53cc,
- 0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b, 0x5c64,
- 0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb, 0x64cd,
- 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5, 0x4e89,
- 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061, 0x8349,
- 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001, 0x906d,
- 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e,
- /* 0x42 */
- 0x81d3, 0x8535, 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247, 0x5373,
- 0x606f, 0x6349, 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7, 0x5c5e,
- 0x8cca, 0x65cf, 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3, 0x5b58,
- 0x5b6b, 0x5c0a, 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a, 0x592a,
- 0x6c70, 0x8a51, 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253, 0x67c1,
- 0x8235, 0x6955, 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806, 0x5bfe,
- 0x8010, 0x5cb1, 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234, 0x66ff,
- 0x6cf0, 0x6ede, 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8, 0x9000,
- 0x902e, 0x968a, 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927, 0x7b2c,
- 0x918d, 0x984c, 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544, 0x5b85,
- 0x6258, 0x629e, 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17, 0x9438,
- 0x6fc1, 0x8afe, 0x8338, 0x51e7, 0x86f8, 0x53ea,
- /* 0x43 */
- 0x53e9, 0x4f46, 0x9054, 0x8fb0, 0x596a, 0x8131, 0x5dfd, 0x7aea,
- 0x8fbf, 0x68da, 0x8c37, 0x72f8, 0x9c48, 0x6a3d, 0x8ab0, 0x4e39,
- 0x5358, 0x5606, 0x5766, 0x62c5, 0x63a2, 0x65e6, 0x6b4e, 0x6de1,
- 0x6e5b, 0x70ad, 0x77ed, 0x7aef, 0x7baa, 0x7dbb, 0x803d, 0x80c6,
- 0x86cb, 0x8a95, 0x935b, 0x56e3, 0x58c7, 0x5f3e, 0x65ad, 0x6696,
- 0x6a80, 0x6bb5, 0x7537, 0x8ac7, 0x5024, 0x77e5, 0x5730, 0x5f1b,
- 0x6065, 0x667a, 0x6c60, 0x75f4, 0x7a1a, 0x7f6e, 0x81f4, 0x8718,
- 0x9045, 0x99b3, 0x7bc9, 0x755c, 0x7af9, 0x7b51, 0x84c4, 0x9010,
- 0x79e9, 0x7a92, 0x8336, 0x5ae1, 0x7740, 0x4e2d, 0x4ef2, 0x5b99,
- 0x5fe0, 0x62bd, 0x663c, 0x67f1, 0x6ce8, 0x866b, 0x8877, 0x8a3b,
- 0x914e, 0x92f3, 0x99d0, 0x6a17, 0x7026, 0x732a, 0x82e7, 0x8457,
- 0x8caf, 0x4e01, 0x5146, 0x51cb, 0x558b, 0x5bf5,
- /* 0x44 */
- 0x5e16, 0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b, 0x5fb4, 0x61f2,
- 0x6311, 0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a, 0x773a, 0x8074,
- 0x8139, 0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85, 0x8df3, 0x929a,
- 0x9577, 0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4, 0x6715, 0x6c88,
- 0x73cd, 0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c, 0x690e, 0x69cc,
- 0x8ffd, 0x939a, 0x75db, 0x901a, 0x585a, 0x6802, 0x63b4, 0x69fb,
- 0x4f43, 0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4, 0x9354, 0x693f,
- 0x6f70, 0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a, 0x540a, 0x91e3,
- 0x9db4, 0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243, 0x8c9e, 0x5448,
- 0x5824, 0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7, 0x5f1f, 0x608c,
- 0x62b5, 0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887, 0x798e, 0x7a0b,
- 0x7de0, 0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013,
- /* 0x45 */
- 0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2, 0x6575,
- 0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2, 0x5fb9,
- 0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929, 0x5c55,
- 0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b, 0x70b9,
- 0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410, 0x5835,
- 0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21, 0x767b,
- 0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a, 0x52aa,
- 0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac, 0x51cd,
- 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6, 0x5d8b,
- 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df, 0x76d7,
- 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8, 0x7977,
- 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230,
- /* 0x46 */
- 0x8463, 0x8569, 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f, 0x9003,
- 0x900f, 0x9419, 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd, 0x52d5,
- 0x540c, 0x5802, 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3, 0x7ae5,
- 0x80f4, 0x8404, 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f, 0x5f97,
- 0x5fb3, 0x6d9c, 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2, 0x72ec,
- 0x8aad, 0x6803, 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a, 0x9cf6,
- 0x82eb, 0x5bc5, 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7, 0x6566,
- 0x6c8c, 0x8c5a, 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d, 0x5948,
- 0x90a3, 0x5185, 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058, 0x637a,
- 0x934b, 0x6962, 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960, 0x8edf,
- 0x96e3, 0x6c5d, 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302, 0x8cd1,
- 0x8089, 0x8679, 0x5eff, 0x65e5, 0x4e73, 0x5165,
- /* 0x47 */
- 0x5982, 0x5c3f, 0x97ee, 0x4efb, 0x598a, 0x5fcd, 0x8a8d, 0x6fe1,
- 0x79b0, 0x7962, 0x5be7, 0x8471, 0x732b, 0x71b1, 0x5e74, 0x5ff5,
- 0x637b, 0x649a, 0x71c3, 0x7c98, 0x4e43, 0x5efc, 0x4e4b, 0x57dc,
- 0x56a2, 0x60a9, 0x6fc3, 0x7d0d, 0x80fd, 0x8133, 0x81bf, 0x8fb2,
- 0x8997, 0x86a4, 0x5df4, 0x628a, 0x64ad, 0x8987, 0x6777, 0x6ce2,
- 0x6d3e, 0x7436, 0x7834, 0x5a46, 0x7f75, 0x82ad, 0x99ac, 0x4ff3,
- 0x5ec3, 0x62dd, 0x6392, 0x6557, 0x676f, 0x76c3, 0x724c, 0x80cc,
- 0x80ba, 0x8f29, 0x914d, 0x500d, 0x57f9, 0x5a92, 0x6885, 0x6973,
- 0x7164, 0x72fd, 0x8cb7, 0x58f2, 0x8ce0, 0x966a, 0x9019, 0x877f,
- 0x79e4, 0x77e7, 0x8429, 0x4f2f, 0x5265, 0x535a, 0x62cd, 0x67cf,
- 0x6cca, 0x767d, 0x7b94, 0x7c95, 0x8236, 0x8584, 0x8feb, 0x66dd,
- 0x6f20, 0x7206, 0x7e1b, 0x83ab, 0x99c1, 0x9ea6,
- /* 0x48 */
- 0x51fd, 0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48, 0x6ae8, 0x5e61,
- 0x808c, 0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c, 0x767a, 0x9197,
- 0x9aea, 0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5, 0x9ce9, 0x567a,
- 0x5859, 0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a, 0x53cd, 0x53db,
- 0x5e06, 0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e, 0x7248, 0x72af,
- 0x73ed, 0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9, 0x7bc4, 0x91c6,
- 0x7169, 0x9812, 0x98ef, 0x633d, 0x6669, 0x756a, 0x76e4, 0x78d0,
- 0x8543, 0x86ee, 0x532a, 0x5351, 0x5426, 0x5983, 0x5e87, 0x5f7c,
- 0x60b2, 0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4, 0x6ccc, 0x75b2,
- 0x76ae, 0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5, 0x88ab, 0x8ab9,
- 0x8cbb, 0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38, 0x5099, 0x5c3e,
- 0x5fae, 0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e,
- /* 0x49 */
- 0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66, 0x819d,
- 0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c, 0x6867,
- 0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a, 0x6a19,
- 0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79, 0x5edf,
- 0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c, 0x86ed,
- 0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7, 0x8cd3,
- 0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b, 0x5a66,
- 0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577, 0x65a7,
- 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299, 0x8b5c,
- 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab, 0x6b66,
- 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8, 0x847a,
- 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d,
- /* 0x4a */
- 0x798f, 0x8179, 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255, 0x6cb8,
- 0x4ecf, 0x7269, 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3, 0x61a4,
- 0x626e, 0x711a, 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0, 0x6587,
- 0x805e, 0x4e19, 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73, 0x5f0a,
- 0x67c4, 0x4e26, 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801, 0x50fb,
- 0x58c1, 0x7656, 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86, 0x504f,
- 0x5909, 0x7247, 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d, 0x4fbf,
- 0x52c9, 0x5a29, 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea, 0x5703,
- 0x6355, 0x6b69, 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df, 0x5893,
- 0x6155, 0x620a, 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023, 0x4ff8,
- 0x5305, 0x5446, 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef, 0x5d29,
- 0x5e96, 0x62b1, 0x6367, 0x653e, 0x65b9, 0x670b,
- /* 0x4b */
- 0x6cd5, 0x6ce1, 0x70f9, 0x7832, 0x7e2b, 0x80de, 0x82b3, 0x840c,
- 0x84ec, 0x8702, 0x8912, 0x8a2a, 0x8c4a, 0x90a6, 0x92d2, 0x98fd,
- 0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1, 0x508d, 0x5256, 0x574a, 0x59a8,
- 0x5e3d, 0x5fd8, 0x5fd9, 0x623f, 0x66b4, 0x671b, 0x67d0, 0x68d2,
- 0x5192, 0x7d21, 0x80aa, 0x81a8, 0x8b00, 0x8c8c, 0x8cbf, 0x927e,
- 0x9632, 0x5420, 0x982c, 0x5317, 0x50d5, 0x535c, 0x58a8, 0x64b2,
- 0x6734, 0x7267, 0x7766, 0x7a46, 0x91e6, 0x52c3, 0x6ca1, 0x6b86,
- 0x5800, 0x5e4c, 0x5954, 0x672c, 0x7ffb, 0x51e1, 0x76c6, 0x6469,
- 0x78e8, 0x9b54, 0x9ebb, 0x57cb, 0x59b9, 0x6627, 0x679a, 0x6bce,
- 0x54e9, 0x69d9, 0x5e55, 0x819c, 0x6795, 0x9baa, 0x67fe, 0x9c52,
- 0x685d, 0x4ea6, 0x4fe3, 0x53c8, 0x62b9, 0x672b, 0x6cab, 0x8fc4,
- 0x4fad, 0x7e6d, 0x9ebf, 0x4e07, 0x6162, 0x6e80,
- /* 0x4c */
- 0x6f2b, 0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3, 0x7b95, 0x5cac,
- 0x5bc6, 0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108, 0x5999, 0x7c8d,
- 0x6c11, 0x7720, 0x52d9, 0x5922, 0x7121, 0x725f, 0x77db, 0x9727,
- 0x9d61, 0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d, 0x547d, 0x660e,
- 0x76df, 0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d, 0x6ec5, 0x514d,
- 0x68c9, 0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478, 0x6a21, 0x8302,
- 0x5984, 0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2, 0x8017, 0x8499,
- 0x5132, 0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff, 0x9905, 0x5c24,
- 0x623b, 0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b, 0x9580, 0x5301,
- 0x4e5f, 0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce, 0x5f25, 0x77e2,
- 0x5384, 0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d, 0x9756, 0x67f3,
- 0x85ae, 0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652,
- /* 0x4d */
- 0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb, 0x5ba5,
- 0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67, 0x6d8c,
- 0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a, 0x9091,
- 0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e, 0x8a89,
- 0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8, 0x63da,
- 0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6, 0x7194,
- 0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981, 0x8b21,
- 0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32, 0x6c83,
- 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8, 0x6765,
- 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a, 0x4e71,
- 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7, 0x5229,
- 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483,
- /* 0x4e */
- 0x75e2, 0x88cf, 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b, 0x7387,
- 0x7acb, 0x844e, 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c, 0x7409,
- 0x7559, 0x786b, 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6, 0x616e,
- 0x65c5, 0x865c, 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc, 0x5bee,
- 0x6599, 0x6881, 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c, 0x7ce7,
- 0x826f, 0x8ad2, 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b, 0x7dd1,
- 0x502b, 0x5398, 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8, 0x8f2a,
- 0x96a3, 0x9c57, 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f, 0x985e,
- 0x4ee4, 0x4f36, 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c, 0x73b2,
- 0x793c, 0x82d3, 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97, 0x9f62,
- 0x66a6, 0x6b74, 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9, 0x604b,
- 0x6190, 0x6f23, 0x7149, 0x7c3e, 0x7df4, 0x806f,
- /* 0x4f */
- 0x84ee, 0x9023, 0x932c, 0x5442, 0x9b6f, 0x6ad3, 0x7089, 0x8cc2,
- 0x8def, 0x9732, 0x52b4, 0x5a41, 0x5eca, 0x5f04, 0x6717, 0x697c,
- 0x6994, 0x6d6a, 0x6f0f, 0x7262, 0x72fc, 0x7bed, 0x8001, 0x807e,
- 0x874b, 0x90ce, 0x516d, 0x9e93, 0x7984, 0x808b, 0x9332, 0x8ad6,
- 0x502d, 0x548c, 0x8a71, 0x6b6a, 0x8cc4, 0x8107, 0x60d1, 0x67a0,
- 0x9df2, 0x4e99, 0x4e98, 0x9c10, 0x8a6b, 0x85c1, 0x8568, 0x6900,
- 0x6e7e, 0x7897, 0x8155, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x50 */
- 0x5f0c, 0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36, 0x4e3c, 0x4e3f,
- 0x4e42, 0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b, 0x4e8a, 0x8212,
- 0x5f0d, 0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2, 0x4eb0, 0x4eb3,
- 0x4eb6, 0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2, 0x4ed7, 0x4ede,
- 0x4eed, 0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30, 0x4f5b, 0x4f5d,
- 0x4f57, 0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98, 0x4f7b, 0x4f69,
- 0x4f70, 0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118, 0x4fd4, 0x4fdf,
- 0x4fce, 0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0, 0x4fe4, 0x4fe5,
- 0x501a, 0x5028, 0x5014, 0x502a, 0x5025, 0x5005, 0x4f1c, 0x4ff6,
- 0x5021, 0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011, 0x5006, 0x5043,
- 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505a, 0x5056, 0x506c,
- 0x5078, 0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2,
- /* 0x51 */
- 0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5, 0x50ed,
- 0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102, 0x5116,
- 0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c, 0x513b,
- 0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8, 0x5169,
- 0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189, 0x518f,
- 0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2, 0x51a9,
- 0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5, 0x51bd,
- 0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed, 0x51f0,
- 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227, 0x522a,
- 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c, 0x525e,
- 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d, 0x528d,
- 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8,
- /* 0x52 */
- 0x8fa7, 0x52ac, 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd, 0x52d7,
- 0x52de, 0x52e3, 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5, 0x52f8,
- 0x52f9, 0x5306, 0x5308, 0x7538, 0x530d, 0x5310, 0x530f, 0x5315,
- 0x531a, 0x5323, 0x532f, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346,
- 0x5345, 0x4e17, 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369, 0x536e,
- 0x5918, 0x537b, 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6, 0x53a5,
- 0x53ae, 0x53b0, 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df, 0x66fc,
- 0x71ee, 0x53ee, 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d, 0x5440,
- 0x542c, 0x542d, 0x543c, 0x542e, 0x5436, 0x5429, 0x541d, 0x544e,
- 0x548f, 0x5475, 0x548e, 0x545f, 0x5471, 0x5477, 0x5470, 0x5492,
- 0x547b, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7, 0x54a2,
- 0x54b8, 0x54a5, 0x54ac, 0x54c4, 0x54c8, 0x54a8,
- /* 0x53 */
- 0x54ab, 0x54c2, 0x54a4, 0x54be, 0x54bc, 0x54d8, 0x54e5, 0x54e6,
- 0x550f, 0x5514, 0x54fd, 0x54ee, 0x54ed, 0x54fa, 0x54e2, 0x5539,
- 0x5540, 0x5563, 0x554c, 0x552e, 0x555c, 0x5545, 0x5556, 0x5557,
- 0x5538, 0x5533, 0x555d, 0x5599, 0x5580, 0x54af, 0x558a, 0x559f,
- 0x557b, 0x557e, 0x5598, 0x559e, 0x55ae, 0x557c, 0x5583, 0x55a9,
- 0x5587, 0x55a8, 0x55da, 0x55c5, 0x55df, 0x55c4, 0x55dc, 0x55e4,
- 0x55d4, 0x5614, 0x55f7, 0x5616, 0x55fe, 0x55fd, 0x561b, 0x55f9,
- 0x564e, 0x5650, 0x71df, 0x5634, 0x5636, 0x5632, 0x5638, 0x566b,
- 0x5664, 0x562f, 0x566c, 0x566a, 0x5686, 0x5680, 0x568a, 0x56a0,
- 0x5694, 0x568f, 0x56a5, 0x56ae, 0x56b6, 0x56b4, 0x56c2, 0x56bc,
- 0x56c1, 0x56c3, 0x56c0, 0x56c8, 0x56ce, 0x56d1, 0x56d3, 0x56d7,
- 0x56ee, 0x56f9, 0x5700, 0x56ff, 0x5704, 0x5709,
- /* 0x54 */
- 0x5708, 0x570b, 0x570d, 0x5713, 0x5718, 0x5716, 0x55c7, 0x571c,
- 0x5726, 0x5737, 0x5738, 0x574e, 0x573b, 0x5740, 0x574f, 0x5769,
- 0x57c0, 0x5788, 0x5761, 0x577f, 0x5789, 0x5793, 0x57a0, 0x57b3,
- 0x57a4, 0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4, 0x57d2, 0x57d3,
- 0x580a, 0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d, 0x5872, 0x5821,
- 0x5862, 0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d, 0x5879, 0x5885,
- 0x58b9, 0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb, 0x58b8, 0x58ae,
- 0x58c5, 0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8, 0x58e5, 0x58dc,
- 0x58e4, 0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb, 0x58fc, 0x58fd,
- 0x5902, 0x590a, 0x5910, 0x591b, 0x68a6, 0x5925, 0x592c, 0x592d,
- 0x5932, 0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950, 0x594e, 0x595a,
- 0x5958, 0x5962, 0x5960, 0x5967, 0x596c, 0x5969,
- /* 0x55 */
- 0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2, 0x59c6,
- 0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f, 0x5a11,
- 0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35, 0x5a36,
- 0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2, 0x5abd,
- 0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb, 0x5b0c,
- 0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e, 0x5b43,
- 0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65, 0x5b69,
- 0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80, 0x5b83,
- 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0, 0x5be4,
- 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6, 0x5bf3,
- 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22, 0x5c28,
- 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53,
- /* 0x56 */
- 0x5c50, 0x5c4f, 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76, 0x5c79,
- 0x5c8c, 0x5c91, 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6, 0x5cbc,
- 0x5cb7, 0x5cc5, 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd, 0x5cfa,
- 0x5ced, 0x5d8c, 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c, 0x5d1f,
- 0x5d1b, 0x5d11, 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18, 0x5d4c,
- 0x5d52, 0x5d4e, 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87, 0x5d84,
- 0x5d82, 0x5da2, 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90, 0x5db7,
- 0x5dbc, 0x5dc9, 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb, 0x5deb,
- 0x5df2, 0x5df5, 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b, 0x5e36,
- 0x5e37, 0x5e44, 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54, 0x5e5f,
- 0x5e62, 0x5e64, 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc, 0x5e7f,
- 0x5ea0, 0x5ec1, 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf,
- /* 0x57 */
- 0x5ed6, 0x5ee3, 0x5edd, 0x5eda, 0x5edb, 0x5ee2, 0x5ee1, 0x5ee8,
- 0x5ee9, 0x5eec, 0x5ef1, 0x5ef3, 0x5ef0, 0x5ef4, 0x5ef8, 0x5efe,
- 0x5f03, 0x5f09, 0x5f5d, 0x5f5c, 0x5f0b, 0x5f11, 0x5f16, 0x5f29,
- 0x5f2d, 0x5f38, 0x5f41, 0x5f48, 0x5f4c, 0x5f4e, 0x5f2f, 0x5f51,
- 0x5f56, 0x5f57, 0x5f59, 0x5f61, 0x5f6d, 0x5f73, 0x5f77, 0x5f83,
- 0x5f82, 0x5f7f, 0x5f8a, 0x5f88, 0x5f91, 0x5f87, 0x5f9e, 0x5f99,
- 0x5f98, 0x5fa0, 0x5fa8, 0x5fad, 0x5fbc, 0x5fd6, 0x5ffb, 0x5fe4,
- 0x5ff8, 0x5ff1, 0x5fdd, 0x60b3, 0x5fff, 0x6021, 0x6060, 0x6019,
- 0x6010, 0x6029, 0x600e, 0x6031, 0x601b, 0x6015, 0x602b, 0x6026,
- 0x600f, 0x603a, 0x605a, 0x6041, 0x606a, 0x6077, 0x605f, 0x604a,
- 0x6046, 0x604d, 0x6063, 0x6043, 0x6064, 0x6042, 0x606c, 0x606b,
- 0x6059, 0x6081, 0x608d, 0x60e7, 0x6083, 0x609a,
- /* 0x58 */
- 0x6084, 0x609b, 0x6096, 0x6097, 0x6092, 0x60a7, 0x608b, 0x60e1,
- 0x60b8, 0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd, 0x60c6, 0x60b5,
- 0x60d8, 0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7, 0x6100, 0x60f4,
- 0x60fa, 0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d, 0x610e, 0x6147,
- 0x613e, 0x6128, 0x6127, 0x614a, 0x613f, 0x613c, 0x612c, 0x6134,
- 0x613d, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615a,
- 0x616b, 0x6174, 0x616f, 0x6165, 0x6171, 0x615f, 0x615d, 0x6153,
- 0x6175, 0x6199, 0x6196, 0x6187, 0x61ac, 0x6194, 0x619a, 0x618a,
- 0x6191, 0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9, 0x61f7, 0x61c8,
- 0x61c3, 0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd, 0x61e6, 0x61e3,
- 0x61f6, 0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc, 0x61fe, 0x6200,
- 0x6208, 0x6209, 0x620d, 0x620c, 0x6214, 0x621b,
- /* 0x59 */
- 0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233, 0x6241,
- 0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c, 0x6282,
- 0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283, 0x6294,
- 0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4, 0x62c8,
- 0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9, 0x630c,
- 0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5, 0x6350,
- 0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380, 0x63ab,
- 0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b, 0x6369,
- 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2, 0x63f6,
- 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651d,
- 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e, 0x652a,
- 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc,
- /* 0x5a */
- 0x64da, 0x64d2, 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2, 0x64f1,
- 0x64e7, 0x8209, 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef, 0x652c,
- 0x64f6, 0x64f4, 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518, 0x651c,
- 0x6505, 0x6524, 0x6523, 0x652b, 0x6534, 0x6535, 0x6537, 0x6536,
- 0x6538, 0x754b, 0x6548, 0x6556, 0x6555, 0x654d, 0x6558, 0x655e,
- 0x655d, 0x6572, 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b, 0x659f,
- 0x65ab, 0x65b7, 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc, 0x65d2,
- 0x65db, 0x65d9, 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a, 0x6603,
- 0x65fb, 0x6773, 0x6635, 0x6636, 0x6634, 0x661c, 0x664f, 0x6644,
- 0x6649, 0x6641, 0x665e, 0x665d, 0x6664, 0x6667, 0x6668, 0x665f,
- 0x6662, 0x6670, 0x6683, 0x6688, 0x668e, 0x6689, 0x6684, 0x6698,
- 0x669d, 0x66c1, 0x66b9, 0x66c9, 0x66be, 0x66bc,
- /* 0x5b */
- 0x66c4, 0x66b8, 0x66d6, 0x66da, 0x66e0, 0x663f, 0x66e6, 0x66e9,
- 0x66f0, 0x66f5, 0x66f7, 0x670f, 0x6716, 0x671e, 0x6726, 0x6727,
- 0x9738, 0x672e, 0x673f, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746,
- 0x675e, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67a9,
- 0x677c, 0x676a, 0x678c, 0x678b, 0x67a6, 0x67a1, 0x6785, 0x67b7,
- 0x67ef, 0x67b4, 0x67ec, 0x67b3, 0x67e9, 0x67b8, 0x67e4, 0x67de,
- 0x67dd, 0x67e2, 0x67ee, 0x67b9, 0x67ce, 0x67c6, 0x67e7, 0x6a9c,
- 0x681e, 0x6846, 0x6829, 0x6840, 0x684d, 0x6832, 0x684e, 0x68b3,
- 0x682b, 0x6859, 0x6863, 0x6877, 0x687f, 0x689f, 0x688f, 0x68ad,
- 0x6894, 0x689d, 0x689b, 0x6883, 0x6aae, 0x68b9, 0x6874, 0x68b5,
- 0x68a0, 0x68ba, 0x690f, 0x688d, 0x687e, 0x6901, 0x68ca, 0x6908,
- 0x68d8, 0x6922, 0x6926, 0x68e1, 0x690c, 0x68cd,
- /* 0x5c */
- 0x68d4, 0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904, 0x68d7, 0x68e3,
- 0x6925, 0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a, 0x691a, 0x6923,
- 0x6921, 0x68c6, 0x6979, 0x6977, 0x695c, 0x6978, 0x696b, 0x6954,
- 0x697e, 0x696e, 0x6939, 0x6974, 0x693d, 0x6959, 0x6930, 0x6961,
- 0x695e, 0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae, 0x69d0, 0x69bf,
- 0x69c1, 0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca, 0x69dd, 0x69bb,
- 0x69c3, 0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c, 0x6995, 0x69b4,
- 0x69de, 0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a, 0x69f9, 0x69f2,
- 0x69e7, 0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14, 0x69eb, 0x6a0a,
- 0x6a12, 0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c, 0x6a72, 0x6a36,
- 0x6a78, 0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48, 0x6a38, 0x6a22,
- 0x6a90, 0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3,
- /* 0x5d */
- 0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3, 0x6aac,
- 0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb, 0x6b05,
- 0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38, 0x6b37,
- 0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50, 0x6b59,
- 0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f, 0x6b80,
- 0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4, 0x6baa,
- 0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc, 0x6bc6,
- 0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef, 0x9ebe,
- 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e, 0x6c55,
- 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b, 0x6c7e,
- 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3, 0x6cbd,
- 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe,
- /* 0x5e */
- 0x6cba, 0x6cdb, 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d, 0x6d36,
- 0x6d2b, 0x6d3d, 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12, 0x6d0c,
- 0x6d63, 0x6d93, 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e, 0x6d95,
- 0x6fe4, 0x6d85, 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7, 0x6de6,
- 0x6db8, 0x6dc6, 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2, 0x6dc5,
- 0x6dfa, 0x6dd9, 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d, 0x6e6e,
- 0x6e2e, 0x6e19, 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b, 0x6e2b,
- 0x6e76, 0x6e4d, 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24, 0x6eff,
- 0x6e1d, 0x6e38, 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7, 0x6ed3,
- 0x6ebd, 0x6eaf, 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f, 0x6ea5,
- 0x6ec2, 0x6e9f, 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8, 0x6efe,
- 0x6f3f, 0x6ef2, 0x6f31, 0x6eef, 0x6f32, 0x6ecc,
- /* 0x5f */
- 0x6f3e, 0x6f13, 0x6ef7, 0x6f86, 0x6f7a, 0x6f78, 0x6f81, 0x6f80,
- 0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d, 0x6f82, 0x6f7c, 0x6f58, 0x6f8e,
- 0x6f91, 0x6fc2, 0x6f66, 0x6fb3, 0x6fa3, 0x6fa1, 0x6fa4, 0x6fb9,
- 0x6fc6, 0x6faa, 0x6fdf, 0x6fd5, 0x6fec, 0x6fd4, 0x6fd8, 0x6ff1,
- 0x6fee, 0x6fdb, 0x7009, 0x700b, 0x6ffa, 0x7011, 0x7001, 0x700f,
- 0x6ffe, 0x701b, 0x701a, 0x6f74, 0x701d, 0x7018, 0x701f, 0x7030,
- 0x703e, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70af, 0x70f1,
- 0x70ac, 0x70b8, 0x70b3, 0x70ae, 0x70df, 0x70cb, 0x70dd, 0x70d9,
- 0x7109, 0x70fd, 0x711c, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166,
- 0x7162, 0x714c, 0x7156, 0x716c, 0x718f, 0x71fb, 0x7184, 0x7195,
- 0x71a8, 0x71ac, 0x71d7, 0x71b9, 0x71be, 0x71d2, 0x71c9, 0x71d4,
- 0x71ce, 0x71e0, 0x71ec, 0x71e7, 0x71f5, 0x71fc,
- /* 0x60 */
- 0x71f9, 0x71ff, 0x720d, 0x7210, 0x721b, 0x7228, 0x722d, 0x722c,
- 0x7230, 0x7232, 0x723b, 0x723c, 0x723f, 0x7240, 0x7246, 0x724b,
- 0x7258, 0x7274, 0x727e, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296,
- 0x72a2, 0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6, 0x72c4, 0x72ce,
- 0x72d2, 0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7, 0x500f, 0x7317,
- 0x730a, 0x731c, 0x7316, 0x731d, 0x7334, 0x732f, 0x7329, 0x7325,
- 0x733e, 0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a, 0x7368, 0x7370,
- 0x7378, 0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3, 0x73ce, 0x73bb,
- 0x73c0, 0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405, 0x746f, 0x7425,
- 0x73f8, 0x7432, 0x743a, 0x7455, 0x743f, 0x745f, 0x7459, 0x7441,
- 0x745c, 0x7469, 0x7470, 0x7463, 0x746a, 0x7476, 0x747e, 0x748b,
- 0x749e, 0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1,
- /* 0x61 */
- 0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0, 0x74f1,
- 0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e, 0x750d,
- 0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544, 0x754d,
- 0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564, 0x7567,
- 0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758a,
- 0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3, 0x75c2,
- 0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1, 0x75cd,
- 0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff, 0x75fc,
- 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d, 0x7609,
- 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630,
- 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661, 0x7662,
- 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670,
- /* 0x62 */
- 0x7672, 0x7676, 0x7678, 0x767c, 0x7680, 0x7683, 0x7688, 0x768b,
- 0x768e, 0x7696, 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4, 0x76b8,
- 0x76b9, 0x76ba, 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de, 0x76e1,
- 0x76e5, 0x76e7, 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707, 0x7704,
- 0x7729, 0x7724, 0x771e, 0x7725, 0x7726, 0x771b, 0x7737, 0x7738,
- 0x7747, 0x775a, 0x7768, 0x776b, 0x775b, 0x7765, 0x777f, 0x777e,
- 0x7779, 0x778e, 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0, 0x77b6,
- 0x77b9, 0x77bf, 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd, 0x77d7,
- 0x77da, 0x77dc, 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812, 0x7926,
- 0x7820, 0x792a, 0x7845, 0x788e, 0x7874, 0x7886, 0x787c, 0x789a,
- 0x788c, 0x78a3, 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6, 0x78cb,
- 0x78d4, 0x78be, 0x78bc, 0x78c5, 0x78ca, 0x78ec,
- /* 0x63 */
- 0x78e7, 0x78da, 0x78fd, 0x78f4, 0x7907, 0x7912, 0x7911, 0x7919,
- 0x792c, 0x792b, 0x7940, 0x7960, 0x7957, 0x795f, 0x795a, 0x7955,
- 0x7953, 0x797a, 0x797f, 0x798a, 0x799d, 0x79a7, 0x9f4b, 0x79aa,
- 0x79ae, 0x79b3, 0x79b9, 0x79ba, 0x79c9, 0x79d5, 0x79e7, 0x79ec,
- 0x79e1, 0x79e3, 0x7a08, 0x7a0d, 0x7a18, 0x7a19, 0x7a20, 0x7a1f,
- 0x7980, 0x7a31, 0x7a3b, 0x7a3e, 0x7a37, 0x7a43, 0x7a57, 0x7a49,
- 0x7a61, 0x7a62, 0x7a69, 0x9f9d, 0x7a70, 0x7a79, 0x7a7d, 0x7a88,
- 0x7a97, 0x7a95, 0x7a98, 0x7a96, 0x7aa9, 0x7ac8, 0x7ab0, 0x7ab6,
- 0x7ac5, 0x7ac4, 0x7abf, 0x9083, 0x7ac7, 0x7aca, 0x7acd, 0x7acf,
- 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada, 0x7add, 0x7ae1, 0x7ae2, 0x7ae6,
- 0x7aed, 0x7af0, 0x7b02, 0x7b0f, 0x7b0a, 0x7b06, 0x7b33, 0x7b18,
- 0x7b19, 0x7b1e, 0x7b35, 0x7b28, 0x7b36, 0x7b50,
- /* 0x64 */
- 0x7b7a, 0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45, 0x7b75, 0x7b65,
- 0x7b74, 0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e, 0x7b9d, 0x7b98,
- 0x7b9f, 0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92, 0x7b8f, 0x7b5d,
- 0x7b99, 0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4, 0x7bc6, 0x7bdd,
- 0x7be9, 0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60, 0x7c00, 0x7c07,
- 0x7c13, 0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6, 0x7c23, 0x7c27,
- 0x7c2a, 0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c, 0x7c43, 0x7c54,
- 0x7c4f, 0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64, 0x7c56, 0x7c65,
- 0x7c6c, 0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad, 0x7ca2, 0x7cab,
- 0x7ca1, 0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae, 0x7cb9, 0x7cbd,
- 0x7cc0, 0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc, 0x7ce2, 0x9b3b,
- 0x7cef, 0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06,
- /* 0x65 */
- 0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e, 0x7d32,
- 0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72, 0x7d68,
- 0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f, 0x7d7d,
- 0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd, 0x7dab,
- 0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0, 0x7dd8,
- 0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05, 0x7e0a,
- 0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b, 0x7e22,
- 0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37, 0x7e32,
- 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a, 0x7e79,
- 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d, 0x8fae,
- 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93, 0x7e94,
- 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a,
- /* 0x66 */
- 0x7f45, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55, 0x7f54,
- 0x7f58, 0x7f5f, 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78, 0x7f82,
- 0x7f86, 0x7f83, 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e, 0x7f9d,
- 0x7f9a, 0x7fa3, 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6, 0x7fb8,
- 0x8b71, 0x7fc5, 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1, 0x7fe6,
- 0x7fe9, 0x7ff3, 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b, 0x8012,
- 0x8018, 0x8019, 0x801c, 0x8021, 0x8028, 0x803f, 0x803b, 0x804a,
- 0x8046, 0x8052, 0x8058, 0x805a, 0x805f, 0x8062, 0x8068, 0x8073,
- 0x8072, 0x8070, 0x8076, 0x8079, 0x807d, 0x807f, 0x8084, 0x8086,
- 0x8085, 0x809b, 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac, 0x80db,
- 0x80e5, 0x80d9, 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109, 0x80ef,
- 0x80f1, 0x811b, 0x8129, 0x8123, 0x812f, 0x814b,
- /* 0x67 */
- 0x968b, 0x8146, 0x813e, 0x8153, 0x8151, 0x80fc, 0x8171, 0x816e,
- 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818a, 0x8180, 0x8182,
- 0x81a0, 0x8195, 0x81a4, 0x81a3, 0x815f, 0x8193, 0x81a9, 0x81b0,
- 0x81b5, 0x81be, 0x81b8, 0x81bd, 0x81c0, 0x81c2, 0x81ba, 0x81c9,
- 0x81cd, 0x81d1, 0x81d9, 0x81d8, 0x81c8, 0x81da, 0x81df, 0x81e0,
- 0x81e7, 0x81fa, 0x81fb, 0x81fe, 0x8201, 0x8202, 0x8205, 0x8207,
- 0x820a, 0x820d, 0x8210, 0x8216, 0x8229, 0x822b, 0x8238, 0x8233,
- 0x8240, 0x8259, 0x8258, 0x825d, 0x825a, 0x825f, 0x8264, 0x8262,
- 0x8268, 0x826a, 0x826b, 0x822e, 0x8271, 0x8277, 0x8278, 0x827e,
- 0x828d, 0x8292, 0x82ab, 0x829f, 0x82bb, 0x82ac, 0x82e1, 0x82e3,
- 0x82df, 0x82d2, 0x82f4, 0x82f3, 0x82fa, 0x8393, 0x8303, 0x82fb,
- 0x82f9, 0x82de, 0x8306, 0x82dc, 0x8309, 0x82d9,
- /* 0x68 */
- 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350,
- 0x8345, 0x832f, 0x832b, 0x8317, 0x8318, 0x8385, 0x839a, 0x83aa,
- 0x839f, 0x83a2, 0x8396, 0x8323, 0x838e, 0x8387, 0x838a, 0x837c,
- 0x83b5, 0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8, 0x83f4, 0x8413,
- 0x83eb, 0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b, 0x83c1, 0x83f7,
- 0x8407, 0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420, 0x83bd, 0x8438,
- 0x8506, 0x83fb, 0x846d, 0x842a, 0x843c, 0x855a, 0x8484, 0x8477,
- 0x846b, 0x84ad, 0x846e, 0x8482, 0x8469, 0x8446, 0x842c, 0x846f,
- 0x8479, 0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf, 0x849f, 0x84d9,
- 0x84cd, 0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6, 0x84d6, 0x84a1,
- 0x8521, 0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c, 0x851f, 0x8515,
- 0x8514, 0x84fc, 0x8540, 0x8563, 0x8558, 0x8548,
- /* 0x69 */
- 0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588, 0x8591,
- 0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587, 0x859c,
- 0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9, 0x85d0,
- 0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613, 0x860b,
- 0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f, 0x864d,
- 0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3, 0x86a9,
- 0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6, 0x86b0,
- 0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec, 0x86df,
- 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86fb,
- 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f, 0x8737,
- 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778, 0x874c,
- 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759,
- /* 0x6a */
- 0x8753, 0x8763, 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782, 0x87af,
- 0x87cb, 0x87bd, 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4, 0x87b3,
- 0x87c7, 0x87c6, 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f, 0x880d,
- 0x87fe, 0x87f6, 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816, 0x8815,
- 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883b, 0x8844,
- 0x8842, 0x8852, 0x8859, 0x885e, 0x8862, 0x886b, 0x8881, 0x887e,
- 0x889e, 0x8875, 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897, 0x8892,
- 0x88ae, 0x8899, 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf, 0x88b1,
- 0x88c3, 0x88c4, 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9, 0x8902,
- 0x88fc, 0x88f4, 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a, 0x8913,
- 0x8943, 0x891e, 0x8925, 0x892a, 0x892b, 0x8941, 0x8944, 0x893b,
- 0x8936, 0x8938, 0x894c, 0x891d, 0x8960, 0x895e,
- /* 0x6b */
- 0x8966, 0x8964, 0x896d, 0x896a, 0x896f, 0x8974, 0x8977, 0x897e,
- 0x8983, 0x8988, 0x898a, 0x8993, 0x8998, 0x89a1, 0x89a9, 0x89a6,
- 0x89ac, 0x89af, 0x89b2, 0x89ba, 0x89bd, 0x89bf, 0x89c0, 0x89da,
- 0x89dc, 0x89dd, 0x89e7, 0x89f4, 0x89f8, 0x8a03, 0x8a16, 0x8a10,
- 0x8a0c, 0x8a1b, 0x8a1d, 0x8a25, 0x8a36, 0x8a41, 0x8a5b, 0x8a52,
- 0x8a46, 0x8a48, 0x8a7c, 0x8a6d, 0x8a6c, 0x8a62, 0x8a85, 0x8a82,
- 0x8a84, 0x8aa8, 0x8aa1, 0x8a91, 0x8aa5, 0x8aa6, 0x8a9a, 0x8aa3,
- 0x8ac4, 0x8acd, 0x8ac2, 0x8ada, 0x8aeb, 0x8af3, 0x8ae7, 0x8ae4,
- 0x8af1, 0x8b14, 0x8ae0, 0x8ae2, 0x8af7, 0x8ade, 0x8adb, 0x8b0c,
- 0x8b07, 0x8b1a, 0x8ae1, 0x8b16, 0x8b10, 0x8b17, 0x8b20, 0x8b33,
- 0x97ab, 0x8b26, 0x8b2b, 0x8b3e, 0x8b28, 0x8b41, 0x8b4c, 0x8b4f,
- 0x8b4e, 0x8b49, 0x8b56, 0x8b5b, 0x8b5a, 0x8b6b,
- /* 0x6c */
- 0x8b5f, 0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80, 0x8b8c, 0x8b8e,
- 0x8b92, 0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a, 0x8c41, 0x8c3f,
- 0x8c48, 0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62, 0x8c6c, 0x8c78,
- 0x8c7a, 0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d, 0x8c8e, 0x8c94,
- 0x8c7c, 0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd, 0x8cb2, 0x8cb3,
- 0x8cae, 0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3, 0x8cda, 0x8cfd,
- 0x8cfa, 0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07, 0x8d0f, 0x8d0d,
- 0x8d10, 0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16, 0x8d67, 0x8d6d,
- 0x8d71, 0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe, 0x8dba, 0x8dcf,
- 0x8dda, 0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea, 0x8deb, 0x8ddf,
- 0x8de3, 0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d, 0x8e1e, 0x8e10,
- 0x8e1f, 0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a,
- /* 0x6d */
- 0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64, 0x8e60,
- 0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81, 0x8e87,
- 0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94, 0x8e99,
- 0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe, 0x8ec5,
- 0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb, 0x8efe,
- 0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c, 0x8f1f,
- 0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45, 0x8f42,
- 0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c, 0x8f62,
- 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf, 0x8fb7,
- 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4, 0x9005,
- 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e, 0x9016,
- 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8,
- /* 0x6e */
- 0x904f, 0x9050, 0x9051, 0x9052, 0x900e, 0x9049, 0x903e, 0x9056,
- 0x9058, 0x905e, 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072, 0x9082,
- 0x907d, 0x9081, 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8, 0x90af,
- 0x90b1, 0x90b5, 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102, 0x9112,
- 0x9119, 0x9132, 0x9130, 0x914a, 0x9156, 0x9158, 0x9163, 0x9165,
- 0x9169, 0x9173, 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2, 0x91ab,
- 0x91af, 0x91aa, 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1, 0x91c9,
- 0x91cb, 0x91d0, 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc, 0x91f5,
- 0x91f6, 0x921e, 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211, 0x925e,
- 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923f, 0x924b,
- 0x9250, 0x929c, 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf, 0x92b9,
- 0x92b7, 0x92e9, 0x930f, 0x92fa, 0x9344, 0x932e,
- /* 0x6f */
- 0x9319, 0x9322, 0x931a, 0x9323, 0x933a, 0x9335, 0x933b, 0x935c,
- 0x9360, 0x937c, 0x936e, 0x9356, 0x93b0, 0x93ac, 0x93ad, 0x9394,
- 0x93b9, 0x93d6, 0x93d7, 0x93e8, 0x93e5, 0x93d8, 0x93c3, 0x93dd,
- 0x93d0, 0x93c8, 0x93e4, 0x941a, 0x9414, 0x9413, 0x9403, 0x9407,
- 0x9410, 0x9436, 0x942b, 0x9435, 0x9421, 0x943a, 0x9441, 0x9452,
- 0x9444, 0x945b, 0x9460, 0x9462, 0x945e, 0x946a, 0x9229, 0x9470,
- 0x9475, 0x9477, 0x947d, 0x945a, 0x947c, 0x947e, 0x9481, 0x947f,
- 0x9582, 0x9587, 0x958a, 0x9594, 0x9596, 0x9598, 0x9599, 0x95a0,
- 0x95a8, 0x95a7, 0x95ad, 0x95bc, 0x95bb, 0x95b9, 0x95be, 0x95ca,
- 0x6ff6, 0x95c3, 0x95cd, 0x95cc, 0x95d5, 0x95d4, 0x95d6, 0x95dc,
- 0x95e1, 0x95e5, 0x95e2, 0x9621, 0x9628, 0x962e, 0x962f, 0x9642,
- 0x964c, 0x964f, 0x964b, 0x9677, 0x965c, 0x965e,
- /* 0x70 */
- 0x965d, 0x965f, 0x9666, 0x9672, 0x966c, 0x968d, 0x9698, 0x9695,
- 0x9697, 0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0, 0x96b4, 0x96b6,
- 0x96b8, 0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd, 0x894d, 0x96dc,
- 0x970d, 0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970e,
- 0x9711, 0x970f, 0x9716, 0x9719, 0x9724, 0x972a, 0x9730, 0x9739,
- 0x973d, 0x973e, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975c,
- 0x9760, 0x9764, 0x9766, 0x9768, 0x52d2, 0x976b, 0x9771, 0x9779,
- 0x9785, 0x977c, 0x9781, 0x977a, 0x9786, 0x978b, 0x978f, 0x9790,
- 0x979c, 0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4, 0x97c3, 0x97c6,
- 0x97c8, 0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2, 0x7adf, 0x97f6,
- 0x97f5, 0x980f, 0x980c, 0x9838, 0x9824, 0x9821, 0x9837, 0x983d,
- 0x9846, 0x984f, 0x984b, 0x986b, 0x986f, 0x9870,
- /* 0x71 */
- 0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6, 0x98c4,
- 0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912, 0x9914,
- 0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c, 0x992e,
- 0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b, 0x9951,
- 0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad, 0x99ae,
- 0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed, 0x99ee,
- 0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05, 0x99e2,
- 0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43, 0x9a3e,
- 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65, 0x9a64,
- 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0, 0x9acf,
- 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3, 0x9ae6,
- 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7,
- /* 0x72 */
- 0x9afb, 0x9b06, 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23, 0x9b25,
- 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32, 0x9b44,
- 0x9b43, 0x9b4f, 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74, 0x9b93,
- 0x9b83, 0x9b91, 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8, 0x9bb4,
- 0x9bc0, 0x9bca, 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2, 0x9be3,
- 0x9be2, 0x9be4, 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1, 0x9bf0,
- 0x9c15, 0x9c14, 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08, 0x9c12,
- 0x9c0a, 0x9c04, 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21, 0x9c30,
- 0x9c47, 0x9c32, 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67, 0x9c76,
- 0x9c78, 0x9ce7, 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb, 0x9d03,
- 0x9d06, 0x9d2a, 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44, 0x9d15,
- 0x9d12, 0x9d41, 0x9d3f, 0x9d3e, 0x9d46, 0x9d48,
- /* 0x73 */
- 0x9d5d, 0x9d5e, 0x9d64, 0x9d51, 0x9d50, 0x9d59, 0x9d72, 0x9d89,
- 0x9d87, 0x9dab, 0x9d6f, 0x9d7a, 0x9d9a, 0x9da4, 0x9da9, 0x9db2,
- 0x9dc4, 0x9dc1, 0x9dbb, 0x9db8, 0x9dba, 0x9dc6, 0x9dcf, 0x9dc2,
- 0x9dd9, 0x9dd3, 0x9df8, 0x9de6, 0x9ded, 0x9def, 0x9dfd, 0x9e1a,
- 0x9e1b, 0x9e1e, 0x9e75, 0x9e79, 0x9e7d, 0x9e81, 0x9e88, 0x9e8b,
- 0x9e8c, 0x9e92, 0x9e95, 0x9e91, 0x9e9d, 0x9ea5, 0x9ea9, 0x9eb8,
- 0x9eaa, 0x9ead, 0x9761, 0x9ecc, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed4,
- 0x9edc, 0x9ede, 0x9edd, 0x9ee0, 0x9ee5, 0x9ee8, 0x9eef, 0x9ef4,
- 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb, 0x9efc, 0x9efd, 0x9f07, 0x9f08,
- 0x76b7, 0x9f15, 0x9f21, 0x9f2c, 0x9f3e, 0x9f4a, 0x9f52, 0x9f54,
- 0x9f63, 0x9f5f, 0x9f60, 0x9f61, 0x9f66, 0x9f67, 0x9f6c, 0x9f6a,
- 0x9f77, 0x9f72, 0x9f76, 0x9f95, 0x9f9c, 0x9fa0,
- /* 0x74 */
- 0x582f, 0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199,
-};
-
-static int
-jisx0208_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = (s[0] & 0x7F);
- if ((c1 >= 0x21 && c1 <= 0x28) || (c1 >= 0x30 && c1 <= 0x74)) {
- if (n >= 2) {
- unsigned char c2 = (s[1] & 0x7F);
- if (c2 >= 0x21 && c2 < 0x7f) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- unsigned short wc = 0xfffd;
- if (i < 1410) {
- if (i < 690)
- wc = jisx0208_2uni_page21[i];
- } else {
- if (i < 7808)
- wc = jisx0208_2uni_page30[i-1410];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short jisx0208_2charset[6879] = {
- 0x2140, 0x2171, 0x2172, 0x2178, 0x212f, 0x224c, 0x216b, 0x215e,
- 0x212d, 0x2279, 0x215f, 0x2160, 0x2621, 0x2622, 0x2623, 0x2624,
- 0x2625, 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c,
- 0x262d, 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634,
- 0x2635, 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644,
- 0x2645, 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c,
- 0x264d, 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654,
- 0x2655, 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723,
- 0x2724, 0x2725, 0x2726, 0x2728, 0x2729, 0x272a, 0x272b, 0x272c,
- 0x272d, 0x272e, 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734,
- 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, 0x273a, 0x273b, 0x273c,
- 0x273d, 0x273e, 0x273f, 0x2740, 0x2741, 0x2751, 0x2752, 0x2753,
- 0x2754, 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c,
- 0x275d, 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764,
- 0x2765, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c,
- 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x213e, 0x213d,
- 0x2142, 0x2146, 0x2147, 0x2148, 0x2149, 0x2277, 0x2278, 0x2145,
- 0x2144, 0x2273, 0x216c, 0x216d, 0x2228, 0x216e, 0x2272, 0x222b,
- 0x222c, 0x222a, 0x222d, 0x224d, 0x224e, 0x224f, 0x225f, 0x2250,
- 0x2260, 0x223a, 0x223b, 0x215d, 0x2265, 0x2267, 0x2167, 0x225c,
- 0x224a, 0x224b, 0x2241, 0x2240, 0x2269, 0x226a, 0x2168, 0x2268,
- 0x2266, 0x2262, 0x2162, 0x2261, 0x2165, 0x2166, 0x2263, 0x2264,
- 0x223e, 0x223f, 0x223c, 0x223d, 0x225d, 0x225e, 0x2821, 0x282c,
- 0x2822, 0x282d, 0x2823, 0x282e, 0x2824, 0x282f, 0x2826, 0x2831,
- 0x2825, 0x2830, 0x2827, 0x283c, 0x2837, 0x2832, 0x2829, 0x283e,
- 0x2839, 0x2834, 0x2828, 0x2838, 0x283d, 0x2833, 0x282a, 0x283a,
- 0x283f, 0x2835, 0x282b, 0x283b, 0x2840, 0x2836, 0x2223, 0x2222,
- 0x2225, 0x2224, 0x2227, 0x2226, 0x2221, 0x217e, 0x217b, 0x217d,
- 0x217c, 0x227e, 0x217a, 0x2179, 0x216a, 0x2169, 0x2276, 0x2275,
- 0x2274, 0x2121, 0x2122, 0x2123, 0x2137, 0x2139, 0x213a, 0x213b,
- 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
- 0x215a, 0x215b, 0x2229, 0x222e, 0x214c, 0x214d, 0x2141, 0x2421,
- 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429,
- 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431,
- 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439,
- 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441,
- 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449,
- 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451,
- 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
- 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461,
- 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
- 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471,
- 0x2472, 0x2473, 0x212b, 0x212c, 0x2135, 0x2136, 0x2521, 0x2522,
- 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a,
- 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532,
- 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a,
- 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542,
- 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a,
- 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550, 0x2551, 0x2552,
- 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a,
- 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562,
- 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a,
- 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572,
- 0x2573, 0x2574, 0x2575, 0x2576, 0x2126, 0x213c, 0x2133, 0x2134,
- 0x306c, 0x437a, 0x3c37, 0x4b7c, 0x3e66, 0x3b30, 0x3e65, 0x323c,
- 0x4954, 0x4d3f, 0x5022, 0x312f, 0x336e, 0x5023, 0x4024, 0x5242,
- 0x3556, 0x4a3a, 0x3e67, 0x4e3e, 0x4a42, 0x5024, 0x4366, 0x5025,
- 0x367a, 0x5026, 0x345d, 0x4330, 0x3c67, 0x5027, 0x5028, 0x5029,
- 0x4735, 0x3557, 0x4737, 0x4663, 0x3843, 0x4b33, 0x6949, 0x502a,
- 0x3e68, 0x502b, 0x3235, 0x3665, 0x3870, 0x4c69, 0x5626, 0x4d70,
- 0x467d, 0x3425, 0x3535, 0x502c, 0x502d, 0x4e3b, 0x4d3d, 0x4168,
- 0x502f, 0x3b76, 0x4673, 0x5032, 0x313e, 0x385f, 0x385e, 0x3066,
- 0x4f4b, 0x4f4a, 0x3a33, 0x3021, 0x5033, 0x5034, 0x5035, 0x4b34,
- 0x5036, 0x3872, 0x3067, 0x4b72, 0x357c, 0x357d, 0x357e, 0x4462,
- 0x4e3c, 0x5037, 0x5038, 0x5039, 0x3f4d, 0x3d3a, 0x3f4e, 0x503e,
- 0x503c, 0x503d, 0x3558, 0x3a23, 0x3270, 0x503b, 0x503a, 0x4a29,
- 0x3b46, 0x3b45, 0x423e, 0x503f, 0x4955, 0x4067, 0x2138, 0x5040,
- 0x5042, 0x4265, 0x4e61, 0x304a, 0x5041, 0x323e, 0x3644, 0x4367,
- 0x376f, 0x5043, 0x4724, 0x346b, 0x5044, 0x304b, 0x3860, 0x346c,
- 0x497a, 0x4832, 0x3559, 0x3271, 0x5067, 0x4541, 0x476c, 0x5046,
- 0x483c, 0x4e62, 0x3f2d, 0x3b47, 0x3b77, 0x3240, 0x4451, 0x4322,
- 0x504a, 0x304c, 0x4463, 0x3d3b, 0x3a34, 0x4d24, 0x424e, 0x323f,
- 0x5049, 0x4d3e, 0x5045, 0x5047, 0x3a6e, 0x5048, 0x5524, 0x5050,
- 0x5053, 0x5051, 0x3242, 0x4a3b, 0x504b, 0x504f, 0x3873, 0x3b48,
- 0x3426, 0x5054, 0x504c, 0x4e63, 0x3b78, 0x504d, 0x5052, 0x5055,
- 0x504e, 0x3621, 0x304d, 0x3622, 0x3241, 0x5525, 0x4b79, 0x496e,
- 0x3874, 0x3f2f, 0x4e37, 0x4a58, 0x3738, 0x4225, 0x3264, 0x3d53,
- 0x5059, 0x505e, 0x505c, 0x5057, 0x422f, 0x505a, 0x505d, 0x505b,
- 0x4a5d, 0x5058, 0x3f2e, 0x4b73, 0x505f, 0x5060, 0x3d24, 0x506d,
- 0x4750, 0x4936, 0x5068, 0x4a70, 0x3236, 0x506c, 0x5066, 0x506f,
- 0x4152, 0x3844, 0x475c, 0x6047, 0x506e, 0x455d, 0x5063, 0x3876,
- 0x3875, 0x5061, 0x3c5a, 0x5069, 0x4a6f, 0x434d, 0x5065, 0x3771,
- 0x5062, 0x506a, 0x5064, 0x4e51, 0x506b, 0x4f41, 0x3666, 0x3770,
- 0x5070, 0x5071, 0x5075, 0x304e, 0x4a50, 0x5074, 0x5073, 0x5077,
- 0x5076, 0x4464, 0x3772, 0x5078, 0x3c45, 0x4226, 0x4465, 0x3676,
- 0x5079, 0x3536, 0x507a, 0x507c, 0x4b35, 0x3766, 0x3b31, 0x4877,
- 0x507b, 0x3a45, 0x4d43, 0x507e, 0x5123, 0x507d, 0x3a44, 0x3d7d,
- 0x3739, 0x5124, 0x364f, 0x5121, 0x5122, 0x462f, 0x417c, 0x3623,
- 0x4b4d, 0x5125, 0x4e3d, 0x5126, 0x5129, 0x5127, 0x414e, 0x5128,
- 0x512a, 0x512c, 0x512b, 0x4a48, 0x3537, 0x512e, 0x512f, 0x322f,
- 0x512d, 0x3c74, 0x5132, 0x5131, 0x5130, 0x5056, 0x5133, 0x3d7e,
- 0x5134, 0x4d25, 0x4c59, 0x5136, 0x5135, 0x5138, 0x5137, 0x5139,
- 0x513a, 0x3074, 0x3835, 0x373b, 0x3d3c, 0x437b, 0x3624, 0x4068,
- 0x3877, 0x396e, 0x513c, 0x4c48, 0x4546, 0x3b79, 0x513b, 0x513d,
- 0x455e, 0x3375, 0x513e, 0x467e, 0x4134, 0x5140, 0x5141, 0x482c,
- 0x3878, 0x4f3b, 0x5142, 0x3626, 0x4a3c, 0x4236, 0x3671, 0x4535,
- 0x3773, 0x5143, 0x5144, 0x4662, 0x315f, 0x5147, 0x3a7d, 0x5146,
- 0x3a46, 0x5148, 0x666e, 0x5149, 0x4b41, 0x514a, 0x514b, 0x514c,
- 0x3e69, 0x3c4c, 0x3427, 0x514f, 0x514d, 0x4c3d, 0x514e, 0x495a,
- 0x5150, 0x5151, 0x5152, 0x455f, 0x5156, 0x5154, 0x5155, 0x5153,
- 0x3a63, 0x5157, 0x4c6a, 0x4e64, 0x5158, 0x4028, 0x5159, 0x3d5a,
- 0x515a, 0x437c, 0x4e3f, 0x4560, 0x5245, 0x515b, 0x7425, 0x3645,
- 0x515c, 0x4b5e, 0x3d68, 0x427c, 0x515e, 0x4664, 0x515f, 0x5160,
- 0x332e, 0x5161, 0x3627, 0x464c, 0x317a, 0x3d50, 0x4821, 0x5162,
- 0x4561, 0x3f4f, 0x5163, 0x4a2c, 0x405a, 0x3422, 0x3429, 0x5164,
- 0x5166, 0x373a, 0x5165, 0x4e73, 0x3d69, 0x483d, 0x4a4c, 0x5167,
- 0x4d78, 0x5168, 0x5169, 0x457e, 0x516a, 0x4029, 0x3a7e, 0x3774,
- 0x516b, 0x3b49, 0x396f, 0x4466, 0x516d, 0x4227, 0x3a6f, 0x516e,
- 0x516f, 0x4130, 0x516c, 0x5171, 0x4b36, 0x3964, 0x5170, 0x3775,
- 0x3a5e, 0x476d, 0x5174, 0x5172, 0x497b, 0x3e6a, 0x517b, 0x3364,
- 0x5175, 0x5173, 0x414f, 0x5177, 0x5176, 0x3344, 0x3760, 0x517c,
- 0x4e2d, 0x5178, 0x517d, 0x517a, 0x5179, 0x4e4f, 0x3879, 0x3243,
- 0x4e74, 0x3d75, 0x4558, 0x3965, 0x5222, 0x5223, 0x4e65, 0x4f2b,
- 0x5225, 0x387a, 0x5224, 0x332f, 0x5226, 0x4b56, 0x443c, 0x4d26,
- 0x4a59, 0x5227, 0x7055, 0x4630, 0x5228, 0x342a, 0x4c33, 0x3e21,
- 0x5229, 0x4a67, 0x522d, 0x402a, 0x522a, 0x3650, 0x522b, 0x342b,
- 0x372e, 0x522e, 0x522f, 0x5230, 0x5231, 0x3c5b, 0x387b, 0x4c5e,
- 0x4c68, 0x4677, 0x4a71, 0x5232, 0x5233, 0x5235, 0x5237, 0x5236,
- 0x5238, 0x323d, 0x4b4c, 0x3a7c, 0x5239, 0x4159, 0x3e22, 0x3629,
- 0x523a, 0x485b, 0x523b, 0x523c, 0x523d, 0x523e, 0x4924, 0x3668,
- 0x3065, 0x463f, 0x523f, 0x3d3d, 0x4069, 0x5241, 0x5240, 0x3e23,
- 0x3861, 0x5243, 0x483e, 0x5244, 0x485c, 0x4234, 0x426e, 0x3628,
- 0x466e, 0x4331, 0x476e, 0x4b4e, 0x5246, 0x406a, 0x3735, 0x5247,
- 0x5248, 0x312c, 0x3075, 0x346d, 0x4228, 0x3551, 0x4d71, 0x524b,
- 0x3237, 0x524a, 0x362a, 0x524c, 0x4c71, 0x524d, 0x4e52, 0x387c,
- 0x3836, 0x524e, 0x5250, 0x524f, 0x3f5f, 0x3139, 0x315e, 0x5251,
- 0x5252, 0x3837, 0x5253, 0x356e, 0x3b32, 0x5254, 0x4b74, 0x3a35,
- 0x355a, 0x4d27, 0x4150, 0x483f, 0x3c7d, 0x3d47, 0x3c68, 0x3c75,
- 0x3d76, 0x4840, 0x5257, 0x3143, 0x4151, 0x387d, 0x3845, 0x3667,
- 0x525b, 0x4321, 0x427e, 0x362b, 0x3e24, 0x525c, 0x525a, 0x3244,
- 0x4266, 0x3c38, 0x3b4b, 0x3126, 0x3370, 0x3966, 0x3b4a, 0x525d,
- 0x525e, 0x3549, 0x3346, 0x3967, 0x3548, 0x445f, 0x3125, 0x4631,
- 0x4c3e, 0x3921, 0x4d79, 0x4547, 0x387e, 0x372f, 0x5267, 0x3663,
- 0x4b4a, 0x485d, 0x5266, 0x345e, 0x5261, 0x5262, 0x5264, 0x5265,
- 0x355b, 0x3f61, 0x4a2d, 0x5263, 0x525f, 0x3863, 0x5260, 0x4f24,
- 0x4a72, 0x4468, 0x3862, 0x3970, 0x5268, 0x465d, 0x526c, 0x3c7e,
- 0x3c76, 0x526f, 0x526d, 0x4c23, 0x526a, 0x5273, 0x526e, 0x5271,
- 0x3846, 0x4c3f, 0x5272, 0x5274, 0x5276, 0x3a70, 0x4f42, 0x526b,
- 0x5269, 0x5275, 0x5270, 0x5278, 0x5323, 0x527a, 0x527e, 0x5321,
- 0x527b, 0x533e, 0x3a69, 0x3331, 0x5279, 0x5325, 0x3076, 0x5324,
- 0x3025, 0x494a, 0x5322, 0x527c, 0x5277, 0x527d, 0x3a48, 0x5326,
- 0x3077, 0x532f, 0x5327, 0x5328, 0x3e25, 0x4b69, 0x532d, 0x532c,
- 0x452f, 0x532e, 0x532b, 0x3134, 0x3a36, 0x3f30, 0x5329, 0x4562,
- 0x532a, 0x3022, 0x5334, 0x4d23, 0x3e27, 0x533a, 0x5339, 0x5330,
- 0x4243, 0x5331, 0x426f, 0x5336, 0x3e26, 0x5333, 0x4c64, 0x373c,
- 0x5337, 0x5338, 0x5335, 0x533b, 0x5332, 0x5341, 0x5346, 0x5342,
- 0x533d, 0x5347, 0x4131, 0x5349, 0x3922, 0x533f, 0x437d, 0x5343,
- 0x533c, 0x342d, 0x346e, 0x3365, 0x5344, 0x5340, 0x3776, 0x534a,
- 0x5348, 0x4153, 0x354a, 0x362c, 0x5345, 0x3674, 0x3144, 0x534e,
- 0x534c, 0x5427, 0x5351, 0x534b, 0x534f, 0x534d, 0x3b4c, 0x5350,
- 0x5353, 0x5358, 0x5356, 0x5355, 0x4332, 0x3245, 0x5352, 0x5354,
- 0x3e28, 0x3133, 0x5357, 0x325e, 0x5362, 0x3e7c, 0x535e, 0x535c,
- 0x535d, 0x535f, 0x313d, 0x4139, 0x5359, 0x535a, 0x337a, 0x5361,
- 0x346f, 0x5364, 0x5360, 0x5363, 0x4a2e, 0x4655, 0x4838, 0x5366,
- 0x5365, 0x3345, 0x5367, 0x536a, 0x5369, 0x5368, 0x4739, 0x536b,
- 0x536c, 0x536e, 0x536d, 0x5370, 0x5373, 0x5371, 0x536f, 0x5372,
- 0x5374, 0x5375, 0x5376, 0x5377, 0x5378, 0x5145, 0x3c7c, 0x3b4d,
- 0x3273, 0x3078, 0x4344, 0x5379, 0x3a24, 0x304f, 0x3f5e, 0x537a,
- 0x3847, 0x3971, 0x537c, 0x537b, 0x4a60, 0x537d, 0x5421, 0x537e,
- 0x5422, 0x5423, 0x3777, 0x3160, 0x5424, 0x5426, 0x5425, 0x5428,
- 0x455a, 0x5429, 0x3035, 0x3a5f, 0x373d, 0x434f, 0x542a, 0x542b,
- 0x542d, 0x542e, 0x3a64, 0x3651, 0x4b37, 0x542c, 0x542f, 0x3a41,
- 0x3923, 0x5433, 0x3a25, 0x4333, 0x5430, 0x445a, 0x5434, 0x3f62,
- 0x5432, 0x5435, 0x373f, 0x5436, 0x5437, 0x3924, 0x3340, 0x5439,
- 0x543a, 0x543b, 0x5438, 0x5431, 0x543c, 0x543d, 0x4b64, 0x3e6b,
- 0x543f, 0x5440, 0x543e, 0x5442, 0x4738, 0x3068, 0x4956, 0x5443,
- 0x3e7d, 0x3c39, 0x475d, 0x3470, 0x3a6b, 0x4b59, 0x4632, 0x3778,
- 0x424f, 0x5441, 0x5444, 0x4244, 0x5445, 0x5446, 0x5448, 0x4469,
- 0x342e, 0x7421, 0x3161, 0x4a73, 0x3e6c, 0x4548, 0x3a66, 0x544e,
- 0x4a3d, 0x4e5d, 0x3274, 0x544a, 0x413a, 0x544d, 0x4563, 0x4549,
- 0x4564, 0x4839, 0x444d, 0x3a49, 0x5449, 0x3176, 0x4536, 0x544b,
- 0x5447, 0x3f50, 0x544f, 0x3d4e, 0x362d, 0x5450, 0x4a68, 0x417d,
- 0x4446, 0x5452, 0x4b4f, 0x5453, 0x5458, 0x4a2f, 0x5457, 0x5451,
- 0x5454, 0x5456, 0x3a26, 0x4a49, 0x5459, 0x4345, 0x3275, 0x3e6d,
- 0x545b, 0x545a, 0x3968, 0x545c, 0x545e, 0x545d, 0x5460, 0x5455,
- 0x5462, 0x5461, 0x545f, 0x3b4e, 0x3f51, 0x4154, 0x5463, 0x403c,
- 0x306d, 0x4764, 0x445b, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468,
- 0x5469, 0x4a51, 0x546a, 0x3246, 0x546b, 0x4d3c, 0x3330, 0x5249,
- 0x3d48, 0x423f, 0x546c, 0x4c6b, 0x4c34, 0x546e, 0x4267, 0x4537,
- 0x4240, 0x4957, 0x546f, 0x5470, 0x317b, 0x3c3a, 0x5471, 0x3050,
- 0x5472, 0x5473, 0x3162, 0x3471, 0x4660, 0x4a74, 0x5477, 0x4155,
- 0x5476, 0x3740, 0x4b5b, 0x5475, 0x4565, 0x5479, 0x5478, 0x547b,
- 0x547a, 0x317c, 0x547c, 0x3e29, 0x547e, 0x4325, 0x547d, 0x4a33,
- 0x3d77, 0x455b, 0x5521, 0x3925, 0x5522, 0x4721, 0x485e, 0x4c51,
- 0x4725, 0x552b, 0x3538, 0x4d45, 0x4c2f, 0x562c, 0x5523, 0x5526,
- 0x4245, 0x4b38, 0x454a, 0x5527, 0x4b65, 0x3a4a, 0x3e2a, 0x5528,
- 0x3b50, 0x3b4f, 0x3039, 0x3848, 0x402b, 0x3051, 0x552c, 0x552d,
- 0x552a, 0x3138, 0x342f, 0x5529, 0x4c45, 0x4931, 0x3028, 0x3079,
- 0x3b51, 0x3052, 0x3023, 0x5532, 0x5530, 0x4c3c, 0x5533, 0x5531,
- 0x552f, 0x3f31, 0x552e, 0x4a5a, 0x3864, 0x5537, 0x5538, 0x3e2b,
- 0x5534, 0x4f2c, 0x474c, 0x5536, 0x3a27, 0x5539, 0x4958, 0x553a,
- 0x5535, 0x4c3b, 0x475e, 0x553b, 0x4932, 0x553c, 0x5540, 0x553d,
- 0x3247, 0x553f, 0x3c3b, 0x553e, 0x3779, 0x554c, 0x5545, 0x5542,
- 0x4364, 0x5541, 0x5543, 0x5544, 0x5546, 0x5547, 0x3472, 0x5549,
- 0x5548, 0x554a, 0x3e6e, 0x554d, 0x445c, 0x3145, 0x554b, 0x554e,
- 0x554f, 0x5552, 0x5550, 0x5551, 0x3b52, 0x5553, 0x3926, 0x5554,
- 0x3b7a, 0x4238, 0x5555, 0x5556, 0x3b5a, 0x3927, 0x4c52, 0x3528,
- 0x3849, 0x5557, 0x3358, 0x5558, 0x4239, 0x5559, 0x5623, 0x555a,
- 0x555b, 0x555c, 0x555e, 0x555f, 0x5560, 0x4270, 0x3127, 0x3c69,
- 0x3042, 0x4157, 0x3430, 0x3c35, 0x3928, 0x4566, 0x3d21, 0x3431,
- 0x4368, 0x446a, 0x3038, 0x3539, 0x4a75, 0x3c42, 0x3552, 0x406b,
- 0x3c3c, 0x4d28, 0x5561, 0x355c, 0x3a4b, 0x3332, 0x3163, 0x3e2c,
- 0x3248, 0x5562, 0x4d46, 0x3d49, 0x3c64, 0x5563, 0x3473, 0x4652,
- 0x4c29, 0x5564, 0x5565, 0x4959, 0x5567, 0x3428, 0x3677, 0x5566,
- 0x3432, 0x3f32, 0x556b, 0x3b21, 0x3249, 0x556a, 0x5568, 0x556c,
- 0x5569, 0x472b, 0x5c4d, 0x3f33, 0x556d, 0x4e40, 0x556e, 0x5570,
- 0x437e, 0x556f, 0x4023, 0x3b7b, 0x4250, 0x3c77, 0x4975, 0x406c,
- 0x3c4d, 0x5571, 0x3e2d, 0x5572, 0x5573, 0x3053, 0x423a, 0x3f52,
- 0x5574, 0x4633, 0x3e2e, 0x3e2f, 0x5575, 0x406d, 0x3e30, 0x5576,
- 0x5577, 0x4c60, 0x5578, 0x3646, 0x3d22, 0x5579, 0x557a, 0x3c5c,
- 0x3f2c, 0x4674, 0x3f54, 0x4878, 0x4722, 0x3649, 0x557b, 0x356f,
- 0x557c, 0x367e, 0x464f, 0x3230, 0x3b53, 0x557d, 0x5622, 0x5621,
- 0x367d, 0x557e, 0x4538, 0x4230, 0x454b, 0x3c48, 0x4158, 0x4d7a,
- 0x5624, 0x5625, 0x4656, 0x3b33, 0x5627, 0x5628, 0x5629, 0x3474,
- 0x562a, 0x562b, 0x322c, 0x413b, 0x3464, 0x562d, 0x4c28, 0x4252,
- 0x3359, 0x562f, 0x5631, 0x345f, 0x562e, 0x5630, 0x5633, 0x5632,
- 0x5634, 0x5635, 0x463d, 0x362e, 0x3265, 0x5636, 0x563b, 0x5639,
- 0x4a77, 0x4a76, 0x4567, 0x5638, 0x3d54, 0x5637, 0x3f72, 0x563c,
- 0x3a6a, 0x5642, 0x5643, 0x563d, 0x3333, 0x563e, 0x5647, 0x5646,
- 0x5645, 0x5641, 0x5640, 0x5644, 0x4a78, 0x564b, 0x5648, 0x564a,
- 0x4d72, 0x5649, 0x563f, 0x3f73, 0x564c, 0x3a37, 0x564d, 0x564e,
- 0x5651, 0x5650, 0x564f, 0x4568, 0x563a, 0x5657, 0x5653, 0x5652,
- 0x5654, 0x5655, 0x5658, 0x4e66, 0x5659, 0x5656, 0x565a, 0x3460,
- 0x565b, 0x565d, 0x565c, 0x565e, 0x565f, 0x406e, 0x3d23, 0x3d64,
- 0x4163, 0x3929, 0x3a38, 0x392a, 0x3570, 0x5660, 0x3a39, 0x384a,
- 0x5661, 0x4c26, 0x4743, 0x5662, 0x392b, 0x342c, 0x4327, 0x3652,
- 0x3b54, 0x495b, 0x4841, 0x5663, 0x3475, 0x5666, 0x4421, 0x5665,
- 0x5664, 0x5667, 0x446b, 0x3f63, 0x3b55, 0x404a, 0x4253, 0x3522,
- 0x4422, 0x5668, 0x5669, 0x3e6f, 0x4b39, 0x566c, 0x566b, 0x566a,
- 0x497d, 0x5673, 0x4b5a, 0x566d, 0x566f, 0x4b6b, 0x566e, 0x5670,
- 0x4828, 0x5671, 0x4a3e, 0x5672, 0x3433, 0x4a3f, 0x472f, 0x5674,
- 0x5675, 0x392c, 0x3434, 0x5676, 0x3838, 0x4d44, 0x4d29, 0x3476,
- 0x5678, 0x4423, 0x392d, 0x3e31, 0x485f, 0x3e32, 0x3d78, 0x446c,
- 0x4a79, 0x4539, 0x392e, 0x495c, 0x5679, 0x4559, 0x3a42, 0x384b,
- 0x446d, 0x3043, 0x3d6e, 0x392f, 0x4d47, 0x567a, 0x567b, 0x4751,
- 0x567c, 0x4e77, 0x4f2d, 0x567e, 0x567d, 0x3347, 0x5721, 0x5724,
- 0x5725, 0x5723, 0x4940, 0x3e33, 0x5727, 0x5726, 0x5722, 0x5728,
- 0x5729, 0x572a, 0x572d, 0x572b, 0x572c, 0x572e, 0x3164, 0x446e,
- 0x572f, 0x377a, 0x3276, 0x4736, 0x5730, 0x467b, 0x4a5b, 0x5731,
- 0x4f2e, 0x5732, 0x4a40, 0x5735, 0x5021, 0x5031, 0x3c30, 0x4675,
- 0x5736, 0x355d, 0x4424, 0x307a, 0x5737, 0x4a26, 0x3930, 0x4350,
- 0x446f, 0x4c6f, 0x3839, 0x384c, 0x5738, 0x5739, 0x573f, 0x3c65,
- 0x4425, 0x362f, 0x573a, 0x492b, 0x4346, 0x573b, 0x573c, 0x3630,
- 0x573d, 0x573e, 0x5740, 0x4576, 0x5741, 0x5742, 0x5743, 0x5734,
- 0x5733, 0x5744, 0x3741, 0x4927, 0x3a4c, 0x4937, 0x4426, 0x494b,
- 0x5745, 0x3e34, 0x3146, 0x5746, 0x5747, 0x4c72, 0x4860, 0x574a,
- 0x317d, 0x402c, 0x5749, 0x5748, 0x3742, 0x4254, 0x574e, 0x574c,
- 0x574b, 0x4e27, 0x3865, 0x3d79, 0x574d, 0x454c, 0x3d3e, 0x4640,
- 0x5751, 0x5750, 0x574f, 0x5752, 0x3866, 0x5753, 0x497c, 0x3d5b,
- 0x5754, 0x4879, 0x4641, 0x4427, 0x4530, 0x5755, 0x352b, 0x3f34,
- 0x492c, 0x3477, 0x4726, 0x5756, 0x3b56, 0x4b3a, 0x4b3b, 0x317e,
- 0x575b, 0x4369, 0x5758, 0x3277, 0x582d, 0x575a, 0x4730, 0x5759,
- 0x5757, 0x397a, 0x575d, 0x5763, 0x5769, 0x5761, 0x455c, 0x5766,
- 0x495d, 0x5760, 0x5765, 0x4e67, 0x3b57, 0x4255, 0x575e, 0x355e,
- 0x5768, 0x402d, 0x3165, 0x5762, 0x3278, 0x5767, 0x3631, 0x5764,
- 0x576a, 0x576c, 0x5776, 0x5774, 0x5771, 0x5770, 0x4e78, 0x5772,
- 0x3632, 0x3931, 0x3d7a, 0x5779, 0x576b, 0x576f, 0x575f, 0x327a,
- 0x5773, 0x5775, 0x4351, 0x3a28, 0x3238, 0x576d, 0x5778, 0x5777,
- 0x3633, 0x4229, 0x3366, 0x3743, 0x576e, 0x577a, 0x577d, 0x5821,
- 0x3c3d, 0x5827, 0x4470, 0x577b, 0x5825, 0x3279, 0x5823, 0x5824,
- 0x577e, 0x5822, 0x3867, 0x4d2a, 0x3435, 0x3159, 0x5826, 0x473a,
- 0x302d, 0x4861, 0x575c, 0x582c, 0x5830, 0x4c65, 0x5829, 0x4569,
- 0x582e, 0x3e70, 0x582f, 0x4657, 0x4f47, 0x582b, 0x5831, 0x397b,
- 0x404b, 0x3054, 0x582a, 0x5828, 0x415a, 0x577c, 0x3b34, 0x4246,
- 0x583d, 0x415b, 0x5838, 0x5835, 0x5836, 0x3c66, 0x5839, 0x583c,
- 0x5837, 0x3d25, 0x583a, 0x5834, 0x4c7c, 0x4c7b, 0x583e, 0x583f,
- 0x3055, 0x5833, 0x3672, 0x3026, 0x3436, 0x583b, 0x5843, 0x5842,
- 0x5847, 0x5848, 0x5846, 0x5849, 0x5841, 0x5845, 0x584a, 0x584b,
- 0x5840, 0x3b7c, 0x5844, 0x4256, 0x3932, 0x5832, 0x3f35, 0x5858,
- 0x4a69, 0x584e, 0x584f, 0x5850, 0x5857, 0x5856, 0x4b7d, 0x3437,
- 0x5854, 0x3745, 0x3334, 0x5851, 0x4e38, 0x5853, 0x3056, 0x5855,
- 0x584c, 0x5852, 0x5859, 0x3744, 0x584d, 0x4d5d, 0x4d2b, 0x585c,
- 0x5860, 0x417e, 0x4e79, 0x5861, 0x585e, 0x585b, 0x585a, 0x585f,
- 0x4a30, 0x4634, 0x3746, 0x5862, 0x585d, 0x5863, 0x377b, 0x3231,
- 0x586b, 0x3438, 0x5869, 0x586a, 0x3a29, 0x5868, 0x5866, 0x5865,
- 0x586c, 0x5864, 0x586e, 0x327b, 0x5870, 0x586f, 0x4428, 0x5873,
- 0x5871, 0x5867, 0x377c, 0x5872, 0x5876, 0x5875, 0x5877, 0x5874,
- 0x5878, 0x5879, 0x587a, 0x4a6a, 0x587c, 0x587b, 0x3d3f, 0x402e,
- 0x3266, 0x327c, 0x587d, 0x303f, 0x404c, 0x587e, 0x6c43, 0x5921,
- 0x3761, 0x5922, 0x406f, 0x5923, 0x5924, 0x353a, 0x5925, 0x5926,
- 0x5927, 0x4257, 0x384d, 0x4c61, 0x4b3c, 0x3d6a, 0x5928, 0x4070,
- 0x6e3d, 0x4862, 0x3c6a, 0x3a4d, 0x5929, 0x4247, 0x4a27, 0x4271,
- 0x592c, 0x592a, 0x592d, 0x592b, 0x592e, 0x4a31, 0x3037, 0x495e,
- 0x4863, 0x592f, 0x5932, 0x3e35, 0x353b, 0x5930, 0x5937, 0x3e36,
- 0x5931, 0x4744, 0x4d5e, 0x5933, 0x5934, 0x5938, 0x456a, 0x5935,
- 0x3933, 0x405e, 0x5946, 0x4834, 0x4272, 0x4864, 0x5a2d, 0x4a7a,
- 0x4471, 0x4b75, 0x593b, 0x3221, 0x436a, 0x5944, 0x4334, 0x593e,
- 0x5945, 0x5940, 0x5947, 0x5943, 0x5942, 0x476f, 0x593c, 0x327d,
- 0x593a, 0x3571, 0x4273, 0x5936, 0x5939, 0x3934, 0x405b, 0x3e37,
- 0x5941, 0x4752, 0x3572, 0x3348, 0x3367, 0x3f21, 0x5949, 0x594e,
- 0x594a, 0x377d, 0x594f, 0x3b22, 0x3969, 0x3d26, 0x593d, 0x3b7d,
- 0x594c, 0x3b58, 0x594d, 0x3044, 0x5948, 0x4429, 0x3573, 0x3634,
- 0x594b, 0x3027, 0x3a43, 0x3f36, 0x4472, 0x4854, 0x5951, 0x415e,
- 0x422a, 0x3b2b, 0x5952, 0x5954, 0x5950, 0x4a61, 0x443d, 0x415c,
- 0x4a7b, 0x3c4e, 0x5960, 0x595f, 0x3f78, 0x377e, 0x5959, 0x3e39,
- 0x4668, 0x4731, 0x5957, 0x415d, 0x3c78, 0x595c, 0x3e38, 0x5956,
- 0x595b, 0x4753, 0x5955, 0x3721, 0x335d, 0x595d, 0x4e2b, 0x3a4e,
- 0x4335, 0x595a, 0x405c, 0x3935, 0x3f64, 0x3166, 0x413c, 0x5958,
- 0x3545, 0x3747, 0x444f, 0x595e, 0x415f, 0x5961, 0x5963, 0x4237,
- 0x5969, 0x5964, 0x5966, 0x4941, 0x4473, 0x5967, 0x4d2c, 0x4d48,
- 0x3439, 0x302e, 0x5965, 0x5962, 0x3478, 0x3167, 0x5968, 0x4d49,
- 0x596c, 0x423b, 0x5973, 0x596d, 0x596a, 0x5971, 0x5953, 0x596e,
- 0x5972, 0x4842, 0x456b, 0x596b, 0x596f, 0x3748, 0x3a71, 0x405d,
- 0x5977, 0x4526, 0x5974, 0x4b60, 0x5975, 0x5976, 0x4c4e, 0x4022,
- 0x3762, 0x597d, 0x3b35, 0x597a, 0x5979, 0x4732, 0x4635, 0x4531,
- 0x597b, 0x597c, 0x496f, 0x4745, 0x3b23, 0x4071, 0x4b50, 0x3349,
- 0x5a25, 0x597e, 0x4d4a, 0x5a27, 0x5a23, 0x5a24, 0x4160, 0x5a22,
- 0x593f, 0x5a26, 0x5a21, 0x5a2b, 0x5a2c, 0x4527, 0x5a2e, 0x3b24,
- 0x5a29, 0x353c, 0x5a2f, 0x5a28, 0x5a33, 0x5a32, 0x5a31, 0x5a34,
- 0x5a36, 0x3e71, 0x5a35, 0x5a39, 0x5a37, 0x5a38, 0x5970, 0x5a3b,
- 0x5a3a, 0x5978, 0x5a3c, 0x5a30, 0x3b59, 0x5a3d, 0x5a3e, 0x5a40,
- 0x5a3f, 0x5a41, 0x327e, 0x3936, 0x4a7c, 0x402f, 0x384e, 0x5a43,
- 0x5a46, 0x4952, 0x355f, 0x5a45, 0x5a44, 0x4754, 0x5a47, 0x3635,
- 0x5a49, 0x5a48, 0x343a, 0x3b36, 0x4658, 0x3749, 0x3f74, 0x5a4a,
- 0x4030, 0x4528, 0x495f, 0x5a4b, 0x5a4c, 0x5a4d, 0x4a38, 0x555d,
- 0x4046, 0x494c, 0x3a58, 0x4865, 0x4843, 0x454d, 0x4e41, 0x5a4f,
- 0x3c50, 0x5a50, 0x3036, 0x3654, 0x404d, 0x4960, 0x5a51, 0x3b42,
- 0x4347, 0x3b5b, 0x3f37, 0x5a52, 0x4a7d, 0x3177, 0x3b5c, 0x5a55,
- 0x5a53, 0x5a56, 0x4e39, 0x5a54, 0x407b, 0x5a57, 0x4232, 0x5a58,
- 0x347a, 0x5a5a, 0x5a59, 0x5a5b, 0x5a5c, 0x347b, 0x467c, 0x4336,
- 0x356c, 0x3b5d, 0x4161, 0x3d5c, 0x3030, 0x5a5d, 0x3222, 0x5a61,
- 0x3937, 0x5a60, 0x3a2b, 0x3e3a, 0x5a5f, 0x3e3b, 0x4c40, 0x3a2a,
- 0x3057, 0x404e, 0x5a66, 0x4031, 0x3147, 0x3d55, 0x4b66, 0x3a72,
- 0x3e3c, 0x4027, 0x5a65, 0x5a63, 0x5a64, 0x436b, 0x5b26, 0x5a6a,
- 0x3b7e, 0x3938, 0x5a68, 0x5a69, 0x3f38, 0x5a67, 0x3b2f, 0x5a6c,
- 0x5a6b, 0x5a70, 0x5a71, 0x5a6d, 0x3322, 0x5a6e, 0x5a6f, 0x4855,
- 0x4961, 0x374a, 0x5a72, 0x4032, 0x3e3d, 0x4352, 0x3647, 0x5a73,
- 0x5a77, 0x324b, 0x5a74, 0x5a76, 0x5a75, 0x3d6b, 0x4348, 0x3045,
- 0x5a78, 0x5a79, 0x442a, 0x4e71, 0x3b43, 0x4a6b, 0x4b3d, 0x5b22,
- 0x5a7b, 0x5a7e, 0x5a7d, 0x5a7a, 0x5b21, 0x465e, 0x5a7c, 0x5b23,
- 0x3d6c, 0x5b24, 0x4d4b, 0x4778, 0x5b25, 0x5b27, 0x5b28, 0x5b29,
- 0x364a, 0x3148, 0x3939, 0x5b2a, 0x5b2b, 0x3d71, 0x4162, 0x5258,
- 0x413e, 0x413d, 0x4258, 0x3a47, 0x5072, 0x376e, 0x4d2d, 0x4a7e,
- 0x497e, 0x5b2c, 0x3a73, 0x443f, 0x5b2d, 0x4f2f, 0x4b3e, 0x442b,
- 0x5b2e, 0x347c, 0x5b2f, 0x5b30, 0x4c5a, 0x4c24, 0x4b76, 0x4b5c,
- 0x3b25, 0x5b32, 0x3c6b, 0x4b51, 0x5b34, 0x5b37, 0x5b36, 0x3479,
- 0x3560, 0x5b33, 0x5b35, 0x5b38, 0x3f79, 0x4d7b, 0x3049, 0x3a60,
- 0x423c, 0x3c5d, 0x3e73, 0x5b3b, 0x454e, 0x5b39, 0x422b, 0x5b3a,
- 0x3e72, 0x4c5d, 0x5b3c, 0x5b3d, 0x4d68, 0x5b42, 0x393a, 0x4755,
- 0x5b3f, 0x456c, 0x5a5e, 0x5a62, 0x354f, 0x4747, 0x5b41, 0x3e3e,
- 0x4844, 0x5b47, 0x487a, 0x5b3e, 0x5b44, 0x5b43, 0x404f, 0x4b6d,
- 0x4e53, 0x4b67, 0x324c, 0x3b5e, 0x4f48, 0x5b46, 0x3f75, 0x5b45,
- 0x5b40, 0x384f, 0x5b4c, 0x5b4a, 0x324d, 0x5b48, 0x5b4e, 0x5b54,
- 0x4248, 0x4a41, 0x5b56, 0x4922, 0x5b55, 0x4770, 0x4b3f, 0x343b,
- 0x4077, 0x3d40, 0x4453, 0x4d2e, 0x5b51, 0x5b50, 0x5b52, 0x5b4f,
- 0x5b57, 0x5b4d, 0x5b4b, 0x5b53, 0x5b49, 0x436c, 0x4c78, 0x3c46,
- 0x3a74, 0x3a3a, 0x4b6f, 0x3341, 0x444e, 0x464a, 0x3149, 0x4072,
- 0x4034, 0x372a, 0x5b59, 0x393b, 0x337c, 0x5b5b, 0x3374, 0x5b61,
- 0x5b5e, 0x4073, 0x334b, 0x3a2c, 0x334a, 0x3a4f, 0x5b5c, 0x3765,
- 0x374b, 0x456d, 0x5b5a, 0x3046, 0x5b5d, 0x5b5f, 0x364d, 0x372c,
- 0x343c, 0x354b, 0x5b62, 0x3a79, 0x4b71, 0x3b37, 0x5b63, 0x4930,
- 0x5b6f, 0x3233, 0x5b64, 0x5b75, 0x5b65, 0x4e42, 0x5b6c, 0x475f,
- 0x5b74, 0x5b67, 0x3034, 0x5b69, 0x393c, 0x5b6b, 0x5b6a, 0x5b66,
- 0x5b71, 0x3e3f, 0x546d, 0x3868, 0x4d7c, 0x5b68, 0x4474, 0x3323,
- 0x3a2d, 0x5b60, 0x5b70, 0x3361, 0x5b6e, 0x5b72, 0x456e, 0x347e,
- 0x5c32, 0x4c49, 0x5b77, 0x347d, 0x5b7e, 0x4b40, 0x5c21, 0x5c23,
- 0x5c27, 0x5b79, 0x432a, 0x456f, 0x5c2b, 0x5b7c, 0x5c28, 0x5c22,
- 0x3f39, 0x5c2c, 0x4033, 0x5c2a, 0x343d, 0x4f50, 0x5b76, 0x5c26,
- 0x3058, 0x5b78, 0x4c3a, 0x5b7d, 0x3f22, 0x4447, 0x5b73, 0x5c25,
- 0x3f7a, 0x5c2f, 0x3371, 0x3821, 0x5c31, 0x5b7a, 0x5c30, 0x5c29,
- 0x5b7b, 0x5c2d, 0x5c2e, 0x5c3f, 0x464e, 0x5c24, 0x5c3b, 0x5c3d,
- 0x4458, 0x4d4c, 0x4976, 0x5c38, 0x424a, 0x5c3e, 0x413f, 0x5c35,
- 0x5c42, 0x5c41, 0x466f, 0x5c40, 0x466a, 0x5c44, 0x5c37, 0x3648,
- 0x5c3a, 0x3d5d, 0x4760, 0x5c3c, 0x364b, 0x5c34, 0x5c36, 0x5c33,
- 0x4f30, 0x335a, 0x5c39, 0x5c43, 0x3335, 0x3a67, 0x315d, 0x5c54,
- 0x4f31, 0x5c57, 0x3f3a, 0x5c56, 0x5c55, 0x5c52, 0x5c46, 0x5c63,
- 0x5c45, 0x5c58, 0x5c50, 0x5c4b, 0x5c48, 0x5c49, 0x5c51, 0x7422,
- 0x5c4e, 0x393d, 0x4448, 0x4164, 0x5c4c, 0x5c47, 0x5c4a, 0x4d4d,
- 0x4b6a, 0x5c4f, 0x5c59, 0x5c61, 0x5c5a, 0x5c67, 0x5c65, 0x5c60,
- 0x5c5f, 0x4450, 0x4165, 0x5c5d, 0x5c5b, 0x5c62, 0x5c68, 0x4875,
- 0x5c6e, 0x5c69, 0x5c6c, 0x5c66, 0x4374, 0x4938, 0x5c5c, 0x5c64,
- 0x3e40, 0x4c4f, 0x5c78, 0x5c6b, 0x3822, 0x3223, 0x335f, 0x5c53,
- 0x3e41, 0x5c70, 0x5c77, 0x3c79, 0x3372, 0x432e, 0x5c6d, 0x5c72,
- 0x5c76, 0x3636, 0x354c, 0x5c74, 0x3521, 0x464b, 0x5c73, 0x5c75,
- 0x5c6f, 0x5c71, 0x3360, 0x4349, 0x5c7c, 0x5c7a, 0x3869, 0x5c79,
- 0x5d21, 0x5b58, 0x5c7b, 0x5c7d, 0x5c7e, 0x5d2c, 0x5d28, 0x5b6d,
- 0x5d27, 0x5d26, 0x5d23, 0x5c6a, 0x5d25, 0x5d24, 0x5d2a, 0x4f26,
- 0x5d2d, 0x367b, 0x5d29, 0x5d2b, 0x4827, 0x5d2e, 0x5d32, 0x5d2f,
- 0x4d73, 0x5d30, 0x5c5e, 0x5d33, 0x5d34, 0x3135, 0x5d36, 0x3767,
- 0x3c21, 0x3655, 0x3224, 0x4d5f, 0x5d38, 0x5d37, 0x5d3a, 0x353d,
- 0x3656, 0x343e, 0x5d3d, 0x5d3c, 0x5d3e, 0x324e, 0x4337, 0x5d3f,
- 0x343f, 0x5d41, 0x5d40, 0x5d42, 0x5d43, 0x5d44, 0x3b5f, 0x4035,
- 0x3a21, 0x4970, 0x4a62, 0x4f44, 0x3b75, 0x3a50, 0x4e72, 0x5d45,
- 0x5d46, 0x3b60, 0x5d47, 0x5d48, 0x5d4a, 0x5d49, 0x4b58, 0x3d5e,
- 0x3c6c, 0x3b44, 0x5d4b, 0x5d4d, 0x3f23, 0x5d4c, 0x5d4e, 0x5d4f,
- 0x5d50, 0x5d51, 0x5d52, 0x5d54, 0x5d53, 0x5d55, 0x3225, 0x434a,
- 0x5d56, 0x3b26, 0x334c, 0x5d57, 0x4542, 0x544c, 0x3523, 0x5d58,
- 0x5d59, 0x4a6c, 0x4b68, 0x4647, 0x5d5a, 0x4866, 0x487b, 0x4c53,
- 0x5d5b, 0x5d5d, 0x5d5c, 0x5d5f, 0x5d5e, 0x5d61, 0x3b61, 0x4c31,
- 0x5d62, 0x5d63, 0x3524, 0x5d64, 0x5d66, 0x5d65, 0x3f65, 0x4939,
- 0x314a, 0x4845, 0x4475, 0x3d41, 0x3561, 0x4846, 0x3c2e, 0x5d68,
- 0x3440, 0x3178, 0x4672, 0x5d67, 0x393e, 0x4353, 0x5d69, 0x5d71,
- 0x5d6a, 0x4241, 0x3562, 0x5d72, 0x3768, 0x3525, 0x5d70, 0x5d6e,
- 0x5d6b, 0x4d60, 0x4440, 0x4659, 0x5d6c, 0x5d74, 0x5d73, 0x3723,
- 0x322d, 0x3a3b, 0x5d6d, 0x5d6f, 0x4b57, 0x4274, 0x4b77, 0x5d7c,
- 0x5d7d, 0x324f, 0x4a28, 0x4c7d, 0x5e21, 0x3c23, 0x3e42, 0x5d78,
- 0x5d7e, 0x3168, 0x3637, 0x5d75, 0x5d7a, 0x4074, 0x4771, 0x4867,
- 0x5d77, 0x4b21, 0x5d79, 0x5e24, 0x5e22, 0x5d7b, 0x4b22, 0x4748,
- 0x3563, 0x4525, 0x436d, 0x5e25, 0x5e23, 0x4259, 0x5d76, 0x314b,
- 0x4d4e, 0x5e30, 0x5e2f, 0x4076, 0x5e2c, 0x4d6c, 0x4636, 0x5e26,
- 0x4445, 0x314c, 0x393f, 0x5e29, 0x3d27, 0x5e2e, 0x5e2d, 0x5e28,
- 0x5e2b, 0x3368, 0x5e2a, 0x4749, 0x4e2e, 0x3e74, 0x4075, 0x5e36,
- 0x5e34, 0x494d, 0x5e31, 0x5e33, 0x313a, 0x3940, 0x4f32, 0x333d,
- 0x4962, 0x4d61, 0x3324, 0x3f3b, 0x5e35, 0x5e3a, 0x3e43, 0x4d30,
- 0x5e37, 0x5e32, 0x5e38, 0x4e5e, 0x4573, 0x4642, 0x3336, 0x3155,
- 0x5e3e, 0x5e41, 0x4e43, 0x4d64, 0x5e48, 0x5e42, 0x5e3f, 0x4e54,
- 0x5e45, 0x3d4a, 0x5e47, 0x5e4c, 0x4571, 0x5e4a, 0x5e44, 0x4338,
- 0x5e4b, 0x5e40, 0x5e46, 0x5e4d, 0x307c, 0x5e43, 0x5e4e, 0x3f3c,
- 0x3d5f, 0x4a25, 0x3a2e, 0x5e3b, 0x5e49, 0x453a, 0x4036, 0x3369,
- 0x3a51, 0x3e44, 0x5e3d, 0x3d42, 0x374c, 0x5e3c, 0x5e52, 0x3d6d,
- 0x383a, 0x5e61, 0x5e5b, 0x3574, 0x454f, 0x5e56, 0x5e5f, 0x302f,
- 0x3132, 0x3239, 0x5e58, 0x422c, 0x5e4f, 0x5e51, 0x3941, 0x5e62,
- 0x5e5d, 0x5e55, 0x5e5c, 0x4c2b, 0x5e5a, 0x5e5e, 0x3850, 0x3e45,
- 0x4339, 0x5e54, 0x4d2f, 0x5e57, 0x5e50, 0x4572, 0x5e53, 0x5e59,
- 0x4f51, 0x3c3e, 0x4b7e, 0x5e63, 0x482e, 0x5e6f, 0x383b, 0x3d60,
- 0x5e65, 0x4e2f, 0x3942, 0x5e72, 0x306e, 0x5e70, 0x5e64, 0x5e6a,
- 0x5e6c, 0x4d4f, 0x5e67, 0x452e, 0x5e69, 0x5e71, 0x5e6b, 0x4c47,
- 0x5e66, 0x3c22, 0x5e7e, 0x336a, 0x5e68, 0x5e6d, 0x5e6e, 0x426c,
- 0x425a, 0x5e76, 0x5e7c, 0x5e7a, 0x4529, 0x5f23, 0x5e77, 0x5e78,
- 0x5e60, 0x3579, 0x493a, 0x3c3f, 0x3977, 0x4f33, 0x5e74, 0x5f22,
- 0x3169, 0x4166, 0x4779, 0x3441, 0x4e7a, 0x4c21, 0x4452, 0x5e7b,
- 0x5e7d, 0x4132, 0x5f21, 0x5e79, 0x5e73, 0x3443, 0x3769, 0x5f2f,
- 0x5f2a, 0x4078, 0x3363, 0x3d61, 0x5f33, 0x5f2c, 0x442c, 0x5f29,
- 0x4459, 0x5f4c, 0x5f26, 0x5f25, 0x5f2e, 0x5f28, 0x5f27, 0x5f2d,
- 0x4021, 0x5f24, 0x5f30, 0x5f31, 0x3442, 0x5f36, 0x5f35, 0x5f37,
- 0x5f3a, 0x4543, 0x5f34, 0x5f38, 0x3763, 0x4279, 0x5f32, 0x473b,
- 0x5f39, 0x5f3e, 0x5f3c, 0x5f3f, 0x5f42, 0x5f3b, 0x396a, 0x4728,
- 0x5e39, 0x4d74, 0x5f3d, 0x5f41, 0x4275, 0x5f40, 0x5f2b, 0x6f69,
- 0x5f45, 0x5f49, 0x5f47, 0x5f43, 0x5f44, 0x5f48, 0x5f46, 0x494e,
- 0x5f4e, 0x5f4b, 0x5f4a, 0x5f4d, 0x4654, 0x5f4f, 0x4375, 0x426d,
- 0x4025, 0x5f50, 0x5f52, 0x5f51, 0x5e75, 0x5f53, 0x4667, 0x5f54,
- 0x3250, 0x4574, 0x3325, 0x3564, 0x3c5e, 0x3a52, 0x4f27, 0x3f66,
- 0x316a, 0x5f56, 0x5f55, 0x5f59, 0x433a, 0x5f5c, 0x5f57, 0x5f5b,
- 0x5f5a, 0x4540, 0x3059, 0x4e75, 0x5f5e, 0x3128, 0x5f60, 0x5f5f,
- 0x5f5d, 0x5f58, 0x4b23, 0x5f62, 0x5f61, 0x316b, 0x5f64, 0x4a32,
- 0x5f63, 0x4c35, 0x3e47, 0x4133, 0x3e46, 0x4e7b, 0x5f6a, 0x4079,
- 0x5f66, 0x5f6b, 0x316c, 0x5f69, 0x4761, 0x5f65, 0x5f68, 0x3e48,
- 0x4851, 0x5f6c, 0x3c51, 0x407a, 0x5f6f, 0x5f67, 0x3727, 0x5f6d,
- 0x4d50, 0x5f70, 0x7426, 0x3d4f, 0x5f71, 0x5f72, 0x472e, 0x5f74,
- 0x5f75, 0x4733, 0x4575, 0x5f77, 0x5f79, 0x4e55, 0x5f76, 0x5f78,
- 0x316d, 0x5f73, 0x535b, 0x5f7a, 0x4167, 0x3b38, 0x5f7c, 0x5f7b,
- 0x3f24, 0x5259, 0x5f7d, 0x6021, 0x5f6e, 0x5f7e, 0x6022, 0x477a,
- 0x6023, 0x6024, 0x6025, 0x6026, 0x445e, 0x6028, 0x6027, 0x6029,
- 0x602a, 0x3c5f, 0x4963, 0x4c6c, 0x602b, 0x602c, 0x4156, 0x3c24,
- 0x602d, 0x602e, 0x602f, 0x4a52, 0x4847, 0x6030, 0x4757, 0x442d,
- 0x6031, 0x3267, 0x356d, 0x4c46, 0x4c36, 0x3234, 0x4f34, 0x4b52,
- 0x4a2a, 0x4037, 0x6032, 0x4643, 0x3823, 0x6033, 0x3a54, 0x6035,
- 0x6034, 0x6036, 0x6037, 0x6038, 0x353e, 0x6039, 0x603a, 0x3824,
- 0x4848, 0x603c, 0x3e75, 0x603b, 0x3638, 0x603d, 0x603f, 0x603e,
- 0x6040, 0x3851, 0x6041, 0x3669, 0x4140, 0x397d, 0x6043, 0x6044,
- 0x6042, 0x3c6d, 0x4648, 0x3639, 0x6046, 0x432c, 0x6045, 0x4f35,
- 0x4762, 0x6049, 0x604b, 0x6048, 0x4c54, 0x604a, 0x604c, 0x4e44,
- 0x6050, 0x604f, 0x4376, 0x472d, 0x3825, 0x604e, 0x604d, 0x4d31,
- 0x4d32, 0x6051, 0x316e, 0x3976, 0x3b62, 0x6052, 0x6053, 0x6055,
- 0x3d43, 0x6057, 0x6056, 0x6058, 0x334d, 0x605a, 0x6059, 0x605c,
- 0x605b, 0x383c, 0x4e28, 0x364c, 0x3226, 0x366a, 0x3461, 0x4e68,
- 0x605e, 0x6060, 0x6061, 0x3251, 0x605d, 0x3b39, 0x4441, 0x605f,
- 0x6064, 0x3c6e, 0x6062, 0x373e, 0x4849, 0x6063, 0x607e, 0x6069,
- 0x383d, 0x3565, 0x6066, 0x4d7d, 0x4e30, 0x4276, 0x6068, 0x606a,
- 0x4e56, 0x3657, 0x487c, 0x474a, 0x606b, 0x606d, 0x6070, 0x606c,
- 0x606f, 0x386a, 0x314d, 0x6071, 0x3f70, 0x606e, 0x4e5c, 0x6074,
- 0x7424, 0x6072, 0x6075, 0x6067, 0x6073, 0x3a3c, 0x6076, 0x6077,
- 0x4d7e, 0x6078, 0x6079, 0x6065, 0x607a, 0x3444, 0x3c25, 0x607b,
- 0x607c, 0x607d, 0x313b, 0x6121, 0x493b, 0x6122, 0x3424, 0x6123,
- 0x6124, 0x6125, 0x6127, 0x6128, 0x6126, 0x4953, 0x612a, 0x6129,
- 0x612c, 0x612b, 0x612d, 0x612e, 0x6130, 0x612f, 0x3979, 0x6132,
- 0x6131, 0x3445, 0x3f53, 0x453c, 0x6133, 0x4038, 0x3b3a, 0x3179,
- 0x6134, 0x4d51, 0x4a63, 0x6135, 0x4544, 0x4d33, 0x3943, 0x3f3d,
- 0x434b, 0x5234, 0x442e, 0x3268, 0x6136, 0x6137, 0x613c, 0x613a,
- 0x6139, 0x5a42, 0x3326, 0x6138, 0x305a, 0x482a, 0x484a, 0x4e31,
- 0x613d, 0x613b, 0x435c, 0x4026, 0x482b, 0x492d, 0x613f, 0x4e2c,
- 0x374d, 0x6140, 0x613e, 0x4856, 0x6141, 0x6142, 0x305b, 0x3e76,
- 0x6147, 0x6144, 0x466d, 0x6143, 0x3526, 0x614a, 0x6145, 0x6146,
- 0x6149, 0x6148, 0x4925, 0x4142, 0x4141, 0x353f, 0x614b, 0x614c,
- 0x614d, 0x614f, 0x614e, 0x3156, 0x6157, 0x4868, 0x6151, 0x6153,
- 0x6155, 0x3f3e, 0x6156, 0x6154, 0x3c40, 0x6150, 0x6152, 0x4942,
- 0x3e49, 0x6159, 0x6158, 0x615a, 0x3c26, 0x3a2f, 0x4577, 0x615b,
- 0x444b, 0x615d, 0x4e21, 0x615c, 0x4169, 0x6162, 0x6164, 0x6165,
- 0x4354, 0x6163, 0x6160, 0x615e, 0x615f, 0x6161, 0x6168, 0x6166,
- 0x6167, 0x6169, 0x616b, 0x616c, 0x616d, 0x616e, 0x616a, 0x6170,
- 0x616f, 0x6171, 0x4e45, 0x6174, 0x6172, 0x6173, 0x3462, 0x4c7e,
- 0x4a4a, 0x6176, 0x6175, 0x6177, 0x6178, 0x617c, 0x6179, 0x617a,
- 0x617b, 0x617d, 0x617e, 0x6221, 0x6222, 0x6223, 0x482f, 0x4550,
- 0x6224, 0x4772, 0x4934, 0x6225, 0x6226, 0x452a, 0x3327, 0x3944,
- 0x6227, 0x6228, 0x6229, 0x3b29, 0x622b, 0x622a, 0x622c, 0x622d,
- 0x4869, 0x622e, 0x622f, 0x7369, 0x6230, 0x6231, 0x6232, 0x3b2e,
- 0x6233, 0x4756, 0x4b5f, 0x314e, 0x3157, 0x6234, 0x6236, 0x6235,
- 0x4570, 0x4039, 0x5d39, 0x6237, 0x4c41, 0x6238, 0x3446, 0x4857,
- 0x6239, 0x623a, 0x623b, 0x4c5c, 0x4c55, 0x443e, 0x416a, 0x623d,
- 0x3d62, 0x3e4a, 0x6240, 0x623f, 0x623e, 0x487d, 0x3447, 0x3829,
- 0x6246, 0x6243, 0x3f3f, 0x4c32, 0x6242, 0x6244, 0x6245, 0x6241,
- 0x6247, 0x6248, 0x442f, 0x3463, 0x4365, 0x6249, 0x624a, 0x624d,
- 0x3f67, 0x4644, 0x624e, 0x4b53, 0x624b, 0x624c, 0x6251, 0x6250,
- 0x624f, 0x6253, 0x6252, 0x6254, 0x6256, 0x6255, 0x4a4d, 0x3d56,
- 0x4e46, 0x6257, 0x4637, 0x6258, 0x6259, 0x625d, 0x625b, 0x625c,
- 0x625a, 0x625e, 0x625f, 0x6260, 0x6261, 0x4c37, 0x6262, 0x4c70,
- 0x6263, 0x434e, 0x476a, 0x366b, 0x433b, 0x6264, 0x363a, 0x4050,
- 0x6265, 0x3a3d, 0x6266, 0x6267, 0x3826, 0x3a55, 0x6269, 0x4556,
- 0x3a56, 0x354e, 0x4b24, 0x474b, 0x4557, 0x395c, 0x626b, 0x3e4b,
- 0x4e32, 0x3945, 0x3827, 0x4823, 0x626d, 0x626f, 0x386b, 0x626e,
- 0x4476, 0x6271, 0x3337, 0x626c, 0x486a, 0x3130, 0x3a6c, 0x4f52,
- 0x6270, 0x6272, 0x4a4b, 0x4059, 0x6274, 0x6275, 0x6273, 0x334e,
- 0x627b, 0x627a, 0x3c27, 0x627c, 0x6277, 0x627d, 0x6278, 0x4858,
- 0x6276, 0x6279, 0x6322, 0x6321, 0x4b61, 0x627e, 0x306b, 0x6324,
- 0x6323, 0x3e4c, 0x6325, 0x4143, 0x6327, 0x6326, 0x6328, 0x6268,
- 0x626a, 0x632a, 0x6329, 0x3c28, 0x4e69, 0x3c52, 0x632b, 0x3737,
- 0x3540, 0x3527, 0x3b63, 0x4d34, 0x6331, 0x6330, 0x4144, 0x632d,
- 0x632f, 0x3d4b, 0x3f40, 0x632e, 0x632c, 0x472a, 0x3e4d, 0x493c,
- 0x3a57, 0x4578, 0x6332, 0x6333, 0x6349, 0x3658, 0x4f3d, 0x4135,
- 0x6334, 0x3252, 0x4477, 0x4a21, 0x6335, 0x357a, 0x6336, 0x6338,
- 0x6339, 0x4729, 0x633a, 0x633b, 0x633c, 0x3659, 0x3253, 0x4645,
- 0x3d28, 0x3b64, 0x633d, 0x3d29, 0x324a, 0x4943, 0x633e, 0x486b,
- 0x4145, 0x6341, 0x6342, 0x4769, 0x3f41, 0x633f, 0x4361, 0x6340,
- 0x3e4e, 0x305c, 0x3529, 0x6343, 0x4478, 0x6344, 0x4047, 0x4c2d,
- 0x4923, 0x6345, 0x6346, 0x4355, 0x4e47, 0x6348, 0x6347, 0x3c6f,
- 0x634a, 0x3070, 0x634d, 0x634b, 0x3254, 0x374e, 0x634c, 0x3946,
- 0x3972, 0x4a66, 0x634e, 0x4b54, 0x6350, 0x4051, 0x314f, 0x323a,
- 0x302c, 0x634f, 0x6351, 0x6352, 0x3e77, 0x6353, 0x334f, 0x6355,
- 0x376a, 0x3566, 0x6356, 0x3675, 0x6357, 0x407c, 0x464d, 0x4060,
- 0x3a75, 0x6358, 0x4362, 0x416b, 0x635a, 0x635c, 0x6359, 0x635b,
- 0x3722, 0x635d, 0x3726, 0x3567, 0x4d52, 0x635f, 0x6360, 0x312e,
- 0x6363, 0x3376, 0x6362, 0x6361, 0x6365, 0x635e, 0x6366, 0x4e29,
- 0x6367, 0x6368, 0x5474, 0x636a, 0x6369, 0x636b, 0x636c, 0x4e35,
- 0x636d, 0x706f, 0x3e4f, 0x636e, 0x636f, 0x3d57, 0x4638, 0x6370,
- 0x4328, 0x6371, 0x433c, 0x6372, 0x3625, 0x513f, 0x435d, 0x3c33,
- 0x3448, 0x6373, 0x6422, 0x6376, 0x3568, 0x6375, 0x6424, 0x6374,
- 0x3e50, 0x6378, 0x6379, 0x452b, 0x637a, 0x335e, 0x3f5a, 0x4964,
- 0x637c, 0x4268, 0x6377, 0x637b, 0x637d, 0x3a7b, 0x6426, 0x492e,
- 0x4826, 0x4579, 0x365a, 0x6425, 0x6423, 0x4835, 0x637e, 0x435e,
- 0x457b, 0x457a, 0x3a76, 0x6438, 0x6428, 0x642a, 0x642d, 0x642e,
- 0x642b, 0x642c, 0x6429, 0x6427, 0x6421, 0x4a4f, 0x3255, 0x6435,
- 0x6432, 0x6437, 0x6436, 0x4773, 0x4c27, 0x3b3b, 0x6430, 0x6439,
- 0x6434, 0x6433, 0x642f, 0x6431, 0x3449, 0x433d, 0x407d, 0x4822,
- 0x643e, 0x4824, 0x4061, 0x643b, 0x484f, 0x643f, 0x4a53, 0x435b,
- 0x643a, 0x643c, 0x643d, 0x6440, 0x3c44, 0x4646, 0x6445, 0x6444,
- 0x6441, 0x4f36, 0x644a, 0x644e, 0x644b, 0x6447, 0x6448, 0x644d,
- 0x6442, 0x5255, 0x6449, 0x6443, 0x644c, 0x6452, 0x344a, 0x644f,
- 0x6450, 0x6451, 0x6454, 0x6453, 0x4876, 0x6455, 0x4e7c, 0x4a6d,
- 0x645a, 0x6457, 0x6456, 0x4052, 0x6459, 0x645b, 0x6458, 0x645f,
- 0x645c, 0x645d, 0x6446, 0x645e, 0x6460, 0x6461, 0x4a46, 0x6462,
- 0x4c62, 0x364e, 0x3729, 0x6463, 0x4a34, 0x3f68, 0x4c30, 0x6464,
- 0x4e33, 0x4774, 0x4146, 0x4734, 0x3d4d, 0x3040, 0x6469, 0x6467,
- 0x6465, 0x3421, 0x3e51, 0x646a, 0x6468, 0x6466, 0x646e, 0x646d,
- 0x646c, 0x646b, 0x646f, 0x6470, 0x403a, 0x6471, 0x6473, 0x6472,
- 0x3852, 0x4138, 0x6475, 0x457c, 0x6474, 0x6476, 0x4a35, 0x416c,
- 0x3947, 0x6477, 0x4e48, 0x6479, 0x647a, 0x647b, 0x647c, 0x3b65,
- 0x647d, 0x374f, 0x356a, 0x352a, 0x6521, 0x4c73, 0x3948, 0x647e,
- 0x6524, 0x4c66, 0x473c, 0x4933, 0x3d63, 0x6523, 0x3c53, 0x3949,
- 0x3b66, 0x3569, 0x4a36, 0x6522, 0x4147, 0x4b42, 0x3a77, 0x3b67,
- 0x445d, 0x6527, 0x4e5f, 0x3a59, 0x6528, 0x3f42, 0x652a, 0x3e52,
- 0x3a30, 0x6529, 0x3d2a, 0x383e, 0x4148, 0x6525, 0x652b, 0x6526,
- 0x3750, 0x652e, 0x6532, 0x376b, 0x652d, 0x6536, 0x394a, 0x4d6d,
- 0x303c, 0x6533, 0x356b, 0x6530, 0x6531, 0x457d, 0x652f, 0x652c,
- 0x3328, 0x4064, 0x3828, 0x6538, 0x6535, 0x6537, 0x6534, 0x3751,
- 0x4233, 0x6539, 0x416e, 0x6546, 0x6542, 0x653c, 0x6540, 0x3c7a,
- 0x305d, 0x653b, 0x6543, 0x6547, 0x394b, 0x4c56, 0x4456, 0x653d,
- 0x6545, 0x653a, 0x433e, 0x653f, 0x303d, 0x4c4a, 0x653e, 0x365b,
- 0x486c, 0x416d, 0x4e50, 0x3d6f, 0x656e, 0x6548, 0x407e, 0x6544,
- 0x6549, 0x654b, 0x4479, 0x654e, 0x654a, 0x4a54, 0x344b, 0x4c4b,
- 0x305e, 0x654d, 0x4e7d, 0x654c, 0x316f, 0x466c, 0x654f, 0x6556,
- 0x6550, 0x6557, 0x6553, 0x477b, 0x3c4a, 0x6555, 0x6552, 0x6558,
- 0x6551, 0x3d44, 0x4b25, 0x3d4c, 0x6554, 0x6560, 0x655c, 0x655f,
- 0x655d, 0x6561, 0x655b, 0x6541, 0x4053, 0x484b, 0x655e, 0x6559,
- 0x4121, 0x3752, 0x3d2b, 0x3f25, 0x4136, 0x6564, 0x6566, 0x6567,
- 0x6563, 0x6565, 0x655a, 0x6562, 0x656a, 0x6569, 0x4b7a, 0x372b,
- 0x6568, 0x656c, 0x656b, 0x656f, 0x6571, 0x3b3c, 0x656d, 0x6572,
- 0x6573, 0x6574, 0x657a, 0x453b, 0x6576, 0x6575, 0x6577, 0x6578,
- 0x6579, 0x657b, 0x657c, 0x344c, 0x657d, 0x657e, 0x6621, 0x6622,
- 0x6623, 0x6624, 0x6625, 0x6626, 0x6628, 0x6627, 0x6629, 0x662a,
- 0x662b, 0x662e, 0x662c, 0x662d, 0x3a61, 0x3753, 0x4356, 0x4833,
- 0x3d70, 0x474d, 0x486d, 0x662f, 0x586d, 0x6630, 0x6632, 0x4d65,
- 0x6631, 0x6634, 0x6633, 0x4d53, 0x6635, 0x487e, 0x6636, 0x6639,
- 0x6638, 0x6637, 0x663a, 0x3732, 0x4122, 0x3541, 0x663e, 0x663b,
- 0x663c, 0x663f, 0x6640, 0x663d, 0x3129, 0x3227, 0x6642, 0x6643,
- 0x6644, 0x4d62, 0x3d2c, 0x6646, 0x6645, 0x3f69, 0x6647, 0x6648,
- 0x6649, 0x3465, 0x344d, 0x664a, 0x664b, 0x4b5d, 0x4d63, 0x4d54,
- 0x4f37, 0x394d, 0x664e, 0x3c54, 0x664d, 0x664f, 0x3c29, 0x4251,
- 0x6650, 0x394c, 0x4c57, 0x6651, 0x6652, 0x6653, 0x6654, 0x6655,
- 0x3c2a, 0x4c6d, 0x6657, 0x433f, 0x6656, 0x6659, 0x6658, 0x665a,
- 0x403b, 0x665b, 0x665c, 0x4a39, 0x665d, 0x416f, 0x665e, 0x665f,
- 0x4e7e, 0x6662, 0x6661, 0x6660, 0x4430, 0x6663, 0x3f26, 0x6664,
- 0x6665, 0x4f38, 0x6666, 0x6667, 0x6669, 0x6668, 0x4825, 0x4679,
- 0x4f3e, 0x4829, 0x666b, 0x3e53, 0x492a, 0x666c, 0x666a, 0x344e,
- 0x3854, 0x3b68, 0x486e, 0x382a, 0x4b43, 0x666f, 0x666d, 0x394e,
- 0x394f, 0x3069, 0x3a68, 0x4759, 0x305f, 0x6674, 0x4340, 0x4758,
- 0x425b, 0x6676, 0x6672, 0x6675, 0x6670, 0x6673, 0x4b26, 0x3855,
- 0x307d, 0x6671, 0x6678, 0x6679, 0x4639, 0x363b, 0x6726, 0x473d,
- 0x3b69, 0x363c, 0x4048, 0x4f46, 0x4c2e, 0x6677, 0x4054, 0x3553,
- 0x667a, 0x667c, 0x667b, 0x667d, 0x4326, 0x473e, 0x4431, 0x6723,
- 0x6722, 0x667e, 0x3f55, 0x4965, 0x6725, 0x6724, 0x3950, 0x4f53,
- 0x6735, 0x6729, 0x672a, 0x3c70, 0x6728, 0x3978, 0x6727, 0x672b,
- 0x4432, 0x4a22, 0x4123, 0x425c, 0x672f, 0x6730, 0x672c, 0x672d,
- 0x672e, 0x3951, 0x6736, 0x6732, 0x4966, 0x4b6c, 0x4928, 0x6731,
- 0x6734, 0x6733, 0x4b44, 0x6737, 0x6738, 0x4137, 0x6739, 0x673b,
- 0x673f, 0x673c, 0x673a, 0x473f, 0x673d, 0x673e, 0x3232, 0x6745,
- 0x6740, 0x6741, 0x6742, 0x4221, 0x6744, 0x6743, 0x6746, 0x6747,
- 0x6748, 0x3f43, 0x3269, 0x6749, 0x4e57, 0x3c2b, 0x3d2d, 0x3b6a,
- 0x4357, 0x674a, 0x674b, 0x3131, 0x674c, 0x674d, 0x674e, 0x674f,
- 0x6750, 0x363d, 0x5a2a, 0x6751, 0x4065, 0x6752, 0x3c4b, 0x6753,
- 0x5030, 0x6754, 0x4a5e, 0x345c, 0x4124, 0x3d58, 0x4971, 0x3d2e,
- 0x6755, 0x3952, 0x6756, 0x484c, 0x6764, 0x6758, 0x4249, 0x4775,
- 0x383f, 0x6757, 0x4125, 0x6759, 0x447a, 0x675b, 0x675a, 0x675d,
- 0x675c, 0x675e, 0x6760, 0x675f, 0x344f, 0x6761, 0x6762, 0x6763,
- 0x3a31, 0x4e49, 0x6765, 0x3f27, 0x3170, 0x6766, 0x6767, 0x6768,
- 0x3072, 0x6769, 0x676a, 0x4967, 0x3c47, 0x676c, 0x3329, 0x3032,
- 0x676b, 0x676e, 0x474e, 0x3f44, 0x3256, 0x4b27, 0x375d, 0x365c,
- 0x676d, 0x326a, 0x3423, 0x3171, 0x6772, 0x4e6a, 0x425d, 0x4944,
- 0x677e, 0x3257, 0x677c, 0x677a, 0x6771, 0x676f, 0x6770, 0x3c63,
- 0x366c, 0x4377, 0x4651, 0x3151, 0x6774, 0x6773, 0x6779, 0x6775,
- 0x6778, 0x4c50, 0x6777, 0x3258, 0x337d, 0x677b, 0x677d, 0x3754,
- 0x6823, 0x682c, 0x682d, 0x302b, 0x6834, 0x3071, 0x682b, 0x682a,
- 0x6825, 0x6824, 0x6822, 0x6821, 0x4363, 0x427b, 0x6827, 0x6826,
- 0x6829, 0x4170, 0x3755, 0x3141, 0x6828, 0x3953, 0x4171, 0x683a,
- 0x683b, 0x3259, 0x322e, 0x6838, 0x682e, 0x6836, 0x683d, 0x6837,
- 0x6835, 0x6776, 0x6833, 0x682f, 0x3450, 0x6831, 0x683c, 0x6832,
- 0x683e, 0x6830, 0x477c, 0x4d69, 0x6839, 0x684f, 0x6847, 0x3f7b,
- 0x3546, 0x365d, 0x6842, 0x325b, 0x3e54, 0x6845, 0x3a5a, 0x4551,
- 0x684a, 0x4a6e, 0x6841, 0x325a, 0x3856, 0x4929, 0x684b, 0x683f,
- 0x6848, 0x6852, 0x6843, 0x6844, 0x463a, 0x6849, 0x6846, 0x4b28,
- 0x684c, 0x3060, 0x6840, 0x684e, 0x684d, 0x476b, 0x6854, 0x685f,
- 0x337e, 0x6862, 0x6850, 0x6855, 0x4d6e, 0x685e, 0x4d55, 0x4e2a,
- 0x4378, 0x336b, 0x4972, 0x6864, 0x4621, 0x3031, 0x685d, 0x6859,
- 0x4172, 0x6853, 0x685b, 0x6860, 0x472c, 0x302a, 0x6858, 0x6861,
- 0x4978, 0x685c, 0x6857, 0x3e55, 0x3d2f, 0x3c2c, 0x4c58, 0x4947,
- 0x6867, 0x6870, 0x685a, 0x3377, 0x3e78, 0x6865, 0x686a, 0x4173,
- 0x6866, 0x686d, 0x435f, 0x686e, 0x4d56, 0x6863, 0x3338, 0x6869,
- 0x686c, 0x4c2c, 0x686f, 0x6868, 0x686b, 0x4b29, 0x4f21, 0x6873,
- 0x687a, 0x6872, 0x3c43, 0x6851, 0x4a4e, 0x4c22, 0x6879, 0x6878,
- 0x6874, 0x6875, 0x3136, 0x6877, 0x6871, 0x4455, 0x6876, 0x307e,
- 0x4222, 0x4a43, 0x687b, 0x6921, 0x4859, 0x687e, 0x3e56, 0x3c49,
- 0x6923, 0x363e, 0x6924, 0x4979, 0x687d, 0x6856, 0x687c, 0x4f4f,
- 0x4622, 0x4973, 0x692b, 0x6931, 0x6932, 0x6925, 0x4776, 0x692f,
- 0x6927, 0x6929, 0x6933, 0x6928, 0x692c, 0x3172, 0x4665, 0x692d,
- 0x6930, 0x6926, 0x4126, 0x692a, 0x3b27, 0x3f45, 0x3730, 0x4c74,
- 0x4c79, 0x3d72, 0x6937, 0x6935, 0x4f4e, 0x6934, 0x4d75, 0x6936,
- 0x6938, 0x6939, 0x693c, 0x693a, 0x4623, 0x693b, 0x484d, 0x692e,
- 0x3d73, 0x693d, 0x6942, 0x4174, 0x6941, 0x6922, 0x6943, 0x4149,
- 0x693e, 0x6940, 0x693f, 0x5d31, 0x5d22, 0x6945, 0x6944, 0x4d76,
- 0x623c, 0x6946, 0x6947, 0x6948, 0x3857, 0x3554, 0x694a, 0x515d,
- 0x3575, 0x4e3a, 0x3673, 0x694b, 0x694c, 0x436e, 0x694d, 0x467a,
- 0x303a, 0x3263, 0x6952, 0x6953, 0x694e, 0x3b3d, 0x694f, 0x4742,
- 0x6950, 0x6951, 0x695b, 0x6955, 0x6958, 0x6954, 0x6956, 0x6957,
- 0x3c58, 0x6959, 0x4341, 0x3756, 0x3342, 0x695c, 0x333f, 0x6961,
- 0x695d, 0x6960, 0x483a, 0x695e, 0x695f, 0x4948, 0x485a, 0x6962,
- 0x427d, 0x696c, 0x6968, 0x326b, 0x6966, 0x4b2a, 0x6967, 0x6964,
- 0x6965, 0x696a, 0x696d, 0x696b, 0x6969, 0x6963, 0x4358, 0x6974,
- 0x4c2a, 0x6972, 0x6973, 0x696e, 0x6970, 0x6971, 0x696f, 0x4066,
- 0x4f39, 0x6978, 0x6979, 0x6a21, 0x3f2a, 0x697b, 0x697e, 0x6976,
- 0x6975, 0x6a22, 0x325c, 0x697c, 0x6a23, 0x697d, 0x697a, 0x4433,
- 0x6977, 0x4768, 0x6a27, 0x4d3b, 0x6a26, 0x6a25, 0x6a2e, 0x6a28,
- 0x6a30, 0x4d66, 0x6a33, 0x6a2a, 0x6a2b, 0x6a2f, 0x6a32, 0x6a31,
- 0x6a29, 0x6a2c, 0x6a3d, 0x6a36, 0x6a34, 0x6a35, 0x6a3a, 0x6a3b,
- 0x332a, 0x3542, 0x6a39, 0x6a24, 0x6a38, 0x6a3c, 0x6a37, 0x6a3e,
- 0x6a40, 0x6a3f, 0x6a42, 0x6a41, 0x695a, 0x6a46, 0x6a43, 0x6a44,
- 0x6a45, 0x6a47, 0x376c, 0x6a49, 0x6a48, 0x3d30, 0x3954, 0x5e27,
- 0x6a4a, 0x3d51, 0x3339, 0x6a4b, 0x3152, 0x3e57, 0x6a4c, 0x3955,
- 0x6a4d, 0x3061, 0x493d, 0x6a4e, 0x3f6a, 0x6a55, 0x6a52, 0x436f,
- 0x6a53, 0x6a50, 0x365e, 0x6a4f, 0x6a56, 0x3736, 0x425e, 0x6a5c,
- 0x6a58, 0x4235, 0x6a57, 0x6a5a, 0x6a51, 0x6a5b, 0x6a5d, 0x486f,
- 0x6a59, 0x6a5e, 0x6a60, 0x3853, 0x6a54, 0x3041, 0x6a5f, 0x3a5b,
- 0x4e76, 0x6a61, 0x6a62, 0x4175, 0x4e22, 0x6a63, 0x4d35, 0x6a64,
- 0x6a65, 0x4a64, 0x6a66, 0x3a40, 0x4e23, 0x6a6b, 0x6a6c, 0x3e58,
- 0x6a6a, 0x4d67, 0x6a67, 0x6a69, 0x403d, 0x3f7e, 0x6a68, 0x6a6d,
- 0x4a23, 0x6a6f, 0x6a6e, 0x336c, 0x4b2b, 0x6a70, 0x6a7c, 0x6a72,
- 0x6a73, 0x6a74, 0x6a75, 0x6a79, 0x6a7a, 0x6a78, 0x6a76, 0x6a71,
- 0x6a77, 0x6a7b, 0x7037, 0x3228, 0x6a7e, 0x365f, 0x6a7d, 0x6b22,
- 0x6b21, 0x6b24, 0x6b23, 0x6b25, 0x3d31, 0x6b26, 0x6b27, 0x6b28,
- 0x403e, 0x4d57, 0x6b29, 0x4a24, 0x4746, 0x6b2a, 0x6b2b, 0x382b,
- 0x352c, 0x6b2c, 0x3b6b, 0x4741, 0x6b2d, 0x3350, 0x6b2e, 0x6b30,
- 0x4d77, 0x6b2f, 0x3f46, 0x6b31, 0x6b32, 0x6b33, 0x3451, 0x6b34,
- 0x6b35, 0x6b36, 0x6b37, 0x3351, 0x6b38, 0x6b39, 0x6b3a, 0x3272,
- 0x3f28, 0x6b3b, 0x6b3c, 0x6b3d, 0x3840, 0x447b, 0x6b3e, 0x3757,
- 0x3f56, 0x6b41, 0x4624, 0x6b40, 0x3731, 0x6b3f, 0x4277, 0x352d,
- 0x6b42, 0x6b43, 0x3e59, 0x376d, 0x6b44, 0x4b2c, 0x405f, 0x3576,
- 0x4c75, 0x414a, 0x6b45, 0x3f47, 0x4370, 0x3e5a, 0x6b46, 0x6b49,
- 0x6b4a, 0x3a3e, 0x4242, 0x6b48, 0x3e5b, 0x493e, 0x6b47, 0x3b6c,
- 0x3153, 0x6b4e, 0x3758, 0x3b6e, 0x3b6d, 0x4f4d, 0x6b4d, 0x6b4c,
- 0x4127, 0x354d, 0x4f43, 0x333a, 0x3e5c, 0x6b4b, 0x6b50, 0x6b51,
- 0x6b4f, 0x3858, 0x4d40, 0x3b6f, 0x4727, 0x6b54, 0x4040, 0x4342,
- 0x4d36, 0x6b57, 0x386c, 0x403f, 0x6b53, 0x6b58, 0x386d, 0x6b55,
- 0x6b56, 0x6b52, 0x4062, 0x4649, 0x432f, 0x325d, 0x4870, 0x3543,
- 0x4434, 0x6b5b, 0x6b59, 0x434c, 0x4041, 0x3452, 0x6b5a, 0x3f5b,
- 0x4e4a, 0x4f40, 0x6b5c, 0x6b67, 0x4435, 0x6b66, 0x6b63, 0x6b6b,
- 0x6b64, 0x6b60, 0x447c, 0x6b5f, 0x6b5d, 0x4d21, 0x3b70, 0x6b61,
- 0x6b5e, 0x6b65, 0x3d74, 0x3841, 0x427a, 0x4b45, 0x315a, 0x3062,
- 0x4625, 0x6b69, 0x6b68, 0x4666, 0x6b6d, 0x6b62, 0x6b6c, 0x6b6e,
- 0x382c, 0x6b6a, 0x3956, 0x3c55, 0x6b6f, 0x4d58, 0x6b72, 0x6b75,
- 0x6b73, 0x4935, 0x6b70, 0x3660, 0x6b74, 0x6b76, 0x6b7a, 0x6b77,
- 0x6b79, 0x6b78, 0x6b7b, 0x3c31, 0x6b7d, 0x6b7c, 0x4968, 0x6c21,
- 0x3759, 0x6b7e, 0x6c22, 0x6c23, 0x3544, 0x6641, 0x3e79, 0x6c24,
- 0x386e, 0x6c25, 0x6c26, 0x3b3e, 0x5a4e, 0x6c27, 0x6c28, 0x3d32,
- 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x432b, 0x6c2e, 0x6c30,
- 0x6c2f, 0x4626, 0x6c31, 0x4b2d, 0x6c32, 0x6c33, 0x6c34, 0x6c35,
- 0x465a, 0x3e5d, 0x6c36, 0x396b, 0x502e, 0x6c37, 0x6c38, 0x493f,
- 0x6c39, 0x6c41, 0x6c3a, 0x6c3c, 0x6c3b, 0x6c3d, 0x4b46, 0x6c3e,
- 0x6c3f, 0x6c40, 0x6c42, 0x332d, 0x4467, 0x4969, 0x3a62, 0x3957,
- 0x494f, 0x325f, 0x484e, 0x6c45, 0x3453, 0x4055, 0x6c44, 0x6c49,
- 0x4379, 0x4c63, 0x6c47, 0x6c48, 0x352e, 0x6c4a, 0x4763, 0x425f,
- 0x4871, 0x453d, 0x6c46, 0x4b47, 0x326c, 0x6c4c, 0x4f28, 0x4442,
- 0x4f45, 0x3b71, 0x6c4b, 0x4231, 0x6c5c, 0x4128, 0x4678, 0x4950,
- 0x6c4f, 0x3b3f, 0x3b72, 0x3e5e, 0x4765, 0x382d, 0x6c4e, 0x6c4d,
- 0x496a, 0x3c41, 0x4552, 0x6c51, 0x6c52, 0x3958, 0x6c50, 0x6c53,
- 0x6c54, 0x6c56, 0x4223, 0x6c55, 0x3466, 0x6c58, 0x6c57, 0x6c59,
- 0x6c5b, 0x6c5d, 0x6c5e, 0x4056, 0x3c4f, 0x6c5f, 0x3352, 0x6c60,
- 0x4176, 0x6c61, 0x6c62, 0x496b, 0x352f, 0x6c63, 0x4436, 0x315b,
- 0x6c64, 0x3c71, 0x3f76, 0x422d, 0x6c67, 0x6c66, 0x6c65, 0x6c6d,
- 0x6c6b, 0x6c68, 0x6c6a, 0x6c69, 0x6c6c, 0x3577, 0x6c70, 0x4057,
- 0x6c71, 0x3859, 0x6c6e, 0x6c6f, 0x4f29, 0x4437, 0x4129, 0x6c72,
- 0x6c75, 0x6c73, 0x6c74, 0x4d59, 0x4627, 0x6c78, 0x6c76, 0x6c77,
- 0x6c79, 0x6d29, 0x6c7c, 0x6c7d, 0x6c7b, 0x6c7a, 0x447d, 0x6d21,
- 0x6d25, 0x6d22, 0x6c7e, 0x6d23, 0x6d24, 0x6d2b, 0x6d26, 0x4058,
- 0x6d28, 0x6d2a, 0x6d27, 0x6d2d, 0x3d33, 0x6d2c, 0x6d2e, 0x6d2f,
- 0x6d32, 0x6d31, 0x6d30, 0x6d34, 0x6d33, 0x4c76, 0x6d36, 0x6d35,
- 0x6d37, 0x6d38, 0x6d3a, 0x6d39, 0x3f48, 0x6d3b, 0x366d, 0x6d3c,
- 0x6d3e, 0x6d3f, 0x6d40, 0x6d3d, 0x6d41, 0x3c56, 0x6d42, 0x3530,
- 0x3733, 0x382e, 0x6d43, 0x4670, 0x453e, 0x6d44, 0x6d47, 0x3c34,
- 0x6d46, 0x6d45, 0x375a, 0x6d48, 0x3353, 0x6d4a, 0x3a5c, 0x6d49,
- 0x6d52, 0x6d4c, 0x6d4e, 0x4a65, 0x6d4b, 0x6d4d, 0x6d51, 0x6d4f,
- 0x3531, 0x6d50, 0x6d53, 0x475a, 0x4e58, 0x3d34, 0x6d54, 0x4d22,
- 0x6d56, 0x6d55, 0x6d59, 0x4d41, 0x6d58, 0x336d, 0x6d57, 0x6d5c,
- 0x6d5b, 0x6d5a, 0x4532, 0x6d5d, 0x6d5e, 0x6d5f, 0x396c, 0x3725,
- 0x6d60, 0x6d61, 0x6d62, 0x3f49, 0x6d63, 0x3c2d, 0x6d64, 0x6d65,
- 0x5221, 0x517e, 0x6d66, 0x6570, 0x6d67, 0x4324, 0x3f2b, 0x4740,
- 0x6d68, 0x4a55, 0x4454, 0x397e, 0x4329, 0x312a, 0x4b78, 0x3f57,
- 0x375e, 0x3661, 0x4a56, 0x6d69, 0x6d6b, 0x6d6a, 0x3260, 0x4676,
- 0x6d6c, 0x4777, 0x4533, 0x6d6d, 0x3d52, 0x6d6f, 0x4c42, 0x6d7e,
- 0x6d71, 0x6d72, 0x4449, 0x4260, 0x4177, 0x4628, 0x6d70, 0x3555,
- 0x6d79, 0x6d76, 0x6e25, 0x4629, 0x4360, 0x6d73, 0x447e, 0x4553,
- 0x6d74, 0x6d78, 0x3f60, 0x4767, 0x444c, 0x4042, 0x6d77, 0x422e,
- 0x4224, 0x6d75, 0x3029, 0x4f22, 0x6d7a, 0x4261, 0x3d35, 0x3f4a,
- 0x6d7c, 0x6d7b, 0x306f, 0x6d7d, 0x492f, 0x6e27, 0x465b, 0x3f6b,
- 0x4359, 0x3678, 0x6e26, 0x4d37, 0x313f, 0x4a57, 0x3261, 0x6e21,
- 0x6e22, 0x6e23, 0x6e24, 0x463b, 0x4323, 0x3063, 0x6e28, 0x6e29,
- 0x7423, 0x423d, 0x6e2a, 0x3173, 0x414c, 0x382f, 0x4d5a, 0x6e2b,
- 0x452c, 0x4178, 0x3c57, 0x6e2c, 0x6e2f, 0x3d65, 0x6e2d, 0x412b,
- 0x412a, 0x3064, 0x4e4b, 0x6e31, 0x4872, 0x6e33, 0x6e32, 0x6e30,
- 0x6364, 0x3454, 0x6d6e, 0x6e35, 0x6e34, 0x6e36, 0x4d38, 0x4661,
- 0x4b2e, 0x6e37, 0x3c59, 0x6e38, 0x6e39, 0x6e3a, 0x4521, 0x306a,
- 0x3959, 0x4f3a, 0x6e3e, 0x3734, 0x6e3b, 0x6e3c, 0x4974, 0x3354,
- 0x4d39, 0x363f, 0x4554, 0x6e3f, 0x6e40, 0x6e41, 0x4522, 0x6e43,
- 0x6e42, 0x4653, 0x6e44, 0x3d36, 0x3c60, 0x475b, 0x4371, 0x3c72,
- 0x3f6c, 0x6e45, 0x6e46, 0x3f5d, 0x6e47, 0x6e48, 0x6e49, 0x4d6f,
- 0x3d37, 0x6e4b, 0x6e4a, 0x395a, 0x3973, 0x3b40, 0x6e4e, 0x3d66,
- 0x6e4d, 0x6e4c, 0x4269, 0x386f, 0x4043, 0x4830, 0x3d39, 0x6e4f,
- 0x3e5f, 0x6e52, 0x6e50, 0x6e51, 0x6e54, 0x6e53, 0x3e7a, 0x6e55,
- 0x6e56, 0x6e57, 0x4850, 0x3a53, 0x3c61, 0x6e58, 0x6e59, 0x4e24,
- 0x3d45, 0x4c6e, 0x4e4c, 0x6e5a, 0x3662, 0x6e5b, 0x4523, 0x6e5e,
- 0x3378, 0x3f4b, 0x6e5c, 0x6e5d, 0x4460, 0x4b55, 0x367c, 0x6e60,
- 0x6e61, 0x6e5f, 0x6e63, 0x465f, 0x3343, 0x6e67, 0x6e64, 0x6e66,
- 0x6e62, 0x6f4f, 0x6e65, 0x4e6b, 0x385a, 0x6e6f, 0x4534, 0x6e6a,
- 0x6e6d, 0x6e6b, 0x6e70, 0x6e71, 0x6e69, 0x6e76, 0x3174, 0x6e68,
- 0x482d, 0x6e6c, 0x3e60, 0x395b, 0x4b48, 0x3664, 0x3d46, 0x463c,
- 0x412d, 0x6e74, 0x6e6e, 0x6e73, 0x4c43, 0x4438, 0x6e75, 0x6e72,
- 0x412c, 0x6e79, 0x6e78, 0x6e77, 0x4b2f, 0x3d7b, 0x6e7a, 0x4a5f,
- 0x3154, 0x4946, 0x4372, 0x3578, 0x6e7c, 0x395d, 0x3b2c, 0x6e7b,
- 0x3f6d, 0x3f6e, 0x6f21, 0x6f23, 0x3e7b, 0x6f22, 0x6f24, 0x3653,
- 0x4945, 0x3c62, 0x4f23, 0x6e7e, 0x3a78, 0x4f3f, 0x6f26, 0x6f25,
- 0x6f27, 0x6e7d, 0x4669, 0x4555, 0x4457, 0x6f2c, 0x4343, 0x6f28,
- 0x6f29, 0x372d, 0x6f2b, 0x3830, 0x6f2a, 0x3e61, 0x3379, 0x6f30,
- 0x3a3f, 0x4179, 0x444a, 0x333b, 0x6f2e, 0x6f2f, 0x4443, 0x6f2d,
- 0x6f31, 0x6f37, 0x6f3a, 0x6f39, 0x452d, 0x6f32, 0x6f33, 0x6f36,
- 0x6f38, 0x3640, 0x6f3b, 0x6f35, 0x6f34, 0x6f3f, 0x6f40, 0x6f41,
- 0x6f3e, 0x6f3d, 0x3e62, 0x462a, 0x6f3c, 0x6f45, 0x6f43, 0x6f44,
- 0x6f42, 0x4278, 0x6f46, 0x6f47, 0x6f49, 0x3455, 0x6f48, 0x4c7a,
- 0x6f54, 0x6f4a, 0x6f4d, 0x6f4b, 0x6f4c, 0x6f4e, 0x6f50, 0x6f51,
- 0x6f52, 0x6f55, 0x6f53, 0x6f56, 0x6f58, 0x6f57, 0x4439, 0x4c67,
- 0x6f59, 0x412e, 0x6f5a, 0x4a44, 0x6f5b, 0x332b, 0x313c, 0x3457,
- 0x3456, 0x6f5c, 0x6f5d, 0x6f5e, 0x6f5f, 0x6f60, 0x3458, 0x3355,
- 0x395e, 0x4836, 0x6f62, 0x6f61, 0x6f63, 0x315c, 0x6f66, 0x6f65,
- 0x6f64, 0x6f67, 0x6f6a, 0x3047, 0x6f68, 0x6f6c, 0x6f6b, 0x6f6e,
- 0x6f6d, 0x6f6f, 0x462e, 0x6f70, 0x6f71, 0x6f73, 0x6f72, 0x496c,
- 0x6f74, 0x6f75, 0x3a65, 0x6f76, 0x6f77, 0x4b49, 0x414b, 0x3024,
- 0x424b, 0x6f78, 0x496d, 0x6f7b, 0x6f79, 0x395f, 0x6f7a, 0x3842,
- 0x4a45, 0x6f7d, 0x7021, 0x6f7e, 0x7022, 0x3121, 0x3f58, 0x3d7c,
- 0x3459, 0x7023, 0x4766, 0x7025, 0x3122, 0x7024, 0x4444, 0x4e4d,
- 0x462b, 0x6f7c, 0x4e26, 0x3831, 0x4d5b, 0x3679, 0x4e34, 0x3728,
- 0x4262, 0x6721, 0x7026, 0x332c, 0x3f6f, 0x3356, 0x7028, 0x7029,
- 0x7027, 0x3764, 0x3a5d, 0x3e63, 0x3123, 0x4e59, 0x702b, 0x6e2e,
- 0x702a, 0x702e, 0x702c, 0x702d, 0x702f, 0x7030, 0x4e6c, 0x7031,
- 0x7032, 0x4049, 0x483b, 0x3f7d, 0x3467, 0x4d3a, 0x326d, 0x3d38,
- 0x385b, 0x7035, 0x7034, 0x3b73, 0x7036, 0x7033, 0x3b28, 0x703a,
- 0x6a2d, 0x5256, 0x3f77, 0x7038, 0x4e25, 0x4671, 0x312b, 0x4063,
- 0x3c36, 0x4a37, 0x3140, 0x4e6d, 0x4d6b, 0x703b, 0x4545, 0x3c7b,
- 0x703c, 0x703d, 0x3f4c, 0x703e, 0x4e6e, 0x7039, 0x7040, 0x7042,
- 0x7041, 0x703f, 0x7043, 0x7044, 0x417a, 0x3262, 0x7045, 0x4c38,
- 0x7046, 0x7047, 0x4f2a, 0x5b31, 0x7048, 0x7049, 0x704a, 0x704e,
- 0x704b, 0x704c, 0x704d, 0x704f, 0x4044, 0x4c77, 0x4045, 0x7050,
- 0x4873, 0x7051, 0x7353, 0x4c4c, 0x7052, 0x7053, 0x7054, 0x3357,
- 0x7056, 0x3f59, 0x7057, 0x3724, 0x7058, 0x705c, 0x705a, 0x705b,
- 0x3373, 0x7059, 0x705d, 0x705e, 0x3048, 0x705f, 0x7060, 0x3e64,
- 0x7061, 0x3547, 0x7064, 0x7063, 0x7062, 0x6b71, 0x4a5c, 0x7065,
- 0x7066, 0x7067, 0x7068, 0x7069, 0x706a, 0x345a, 0x706b, 0x706c,
- 0x4723, 0x706e, 0x323b, 0x7071, 0x7070, 0x3124, 0x3641, 0x4a47,
- 0x443a, 0x3a22, 0x3960, 0x3d67, 0x3f5c, 0x7073, 0x7072, 0x4d42,
- 0x3468, 0x4852, 0x465c, 0x3f7c, 0x4e4e, 0x375b, 0x7076, 0x7075,
- 0x4b4b, 0x462c, 0x3150, 0x7077, 0x7074, 0x4951, 0x4d6a, 0x7078,
- 0x7079, 0x707b, 0x426a, 0x335b, 0x335c, 0x707a, 0x3469, 0x3832,
- 0x346a, 0x453f, 0x4e60, 0x385c, 0x707c, 0x707d, 0x707e, 0x7121,
- 0x7123, 0x7122, 0x4977, 0x7124, 0x7125, 0x7126, 0x7127, 0x7129,
- 0x7128, 0x712a, 0x4874, 0x664c, 0x3f29, 0x3532, 0x712b, 0x712c,
- 0x522c, 0x5d3b, 0x4853, 0x307b, 0x303b, 0x3b74, 0x4b30, 0x3e7e,
- 0x712d, 0x4c5f, 0x712e, 0x4d5c, 0x3142, 0x3b41, 0x712f, 0x326e,
- 0x7130, 0x7131, 0x7133, 0x7134, 0x7136, 0x7132, 0x7135, 0x345b,
- 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713d, 0x713c, 0x713f,
- 0x7142, 0x713e, 0x7140, 0x7141, 0x7143, 0x3642, 0x3c73, 0x7144,
- 0x7145, 0x3961, 0x7146, 0x333e, 0x474f, 0x7147, 0x7148, 0x435a,
- 0x466b, 0x7149, 0x477d, 0x424c, 0x3158, 0x366e, 0x366f, 0x4373,
- 0x714e, 0x3670, 0x326f, 0x714d, 0x714b, 0x714c, 0x714a, 0x7158,
- 0x714f, 0x7150, 0x7151, 0x7152, 0x7154, 0x7153, 0x3d59, 0x7155,
- 0x7157, 0x3533, 0x7156, 0x417b, 0x3833, 0x7159, 0x424d, 0x715a,
- 0x462d, 0x715b, 0x7160, 0x715e, 0x715d, 0x715f, 0x715c, 0x7162,
- 0x7161, 0x7164, 0x3643, 0x7163, 0x7165, 0x7166, 0x7168, 0x7167,
- 0x7169, 0x716b, 0x716a, 0x397c, 0x716c, 0x716d, 0x333c, 0x716e,
- 0x716f, 0x3f71, 0x7170, 0x7171, 0x7172, 0x7173, 0x3962, 0x7174,
- 0x7175, 0x7176, 0x7177, 0x7178, 0x4831, 0x717a, 0x4926, 0x717b,
- 0x7179, 0x717d, 0x717c, 0x717e, 0x7221, 0x7222, 0x7223, 0x7224,
- 0x7225, 0x7226, 0x7227, 0x7228, 0x7229, 0x722a, 0x722b, 0x722c,
- 0x722d, 0x722e, 0x5d35, 0x722f, 0x6478, 0x3534, 0x3321, 0x3a32,
- 0x7231, 0x7230, 0x4c25, 0x7233, 0x7234, 0x7232, 0x7235, 0x4b62,
- 0x7236, 0x357b, 0x4f25, 0x7237, 0x7239, 0x303e, 0x723a, 0x4a2b,
- 0x7238, 0x723b, 0x723c, 0x723d, 0x723e, 0x723f, 0x4b6e, 0x3b2d,
- 0x3a7a, 0x412f, 0x7240, 0x7243, 0x7241, 0x7244, 0x3871, 0x7242,
- 0x7245, 0x7246, 0x7247, 0x724b, 0x3b2a, 0x4264, 0x724c, 0x7249,
- 0x7248, 0x724a, 0x375f, 0x7250, 0x724f, 0x724e, 0x3033, 0x725a,
- 0x7256, 0x7257, 0x7253, 0x7259, 0x7255, 0x3362, 0x4f4c, 0x7258,
- 0x7254, 0x7252, 0x7251, 0x725c, 0x725f, 0x725e, 0x725d, 0x4949,
- 0x725b, 0x3073, 0x7260, 0x7262, 0x336f, 0x724d, 0x3137, 0x7264,
- 0x7263, 0x7261, 0x432d, 0x4b70, 0x4e5a, 0x7265, 0x7266, 0x7267,
- 0x7268, 0x7269, 0x443b, 0x726a, 0x4837, 0x726f, 0x726b, 0x726c,
- 0x4b31, 0x4c44, 0x4650, 0x7270, 0x7271, 0x463e, 0x726e, 0x726d,
- 0x322a, 0x7279, 0x7278, 0x3175, 0x7276, 0x7275, 0x7273, 0x337b,
- 0x7272, 0x3c32, 0x3229, 0x3963, 0x727c, 0x727b, 0x727a, 0x7277,
- 0x727d, 0x727e, 0x7325, 0x7324, 0x7326, 0x312d, 0x7321, 0x7322,
- 0x3974, 0x4c39, 0x7323, 0x4b32, 0x732b, 0x7327, 0x732c, 0x7329,
- 0x7328, 0x375c, 0x732d, 0x732e, 0x732f, 0x732a, 0x7274, 0x7330,
- 0x4461, 0x7334, 0x7335, 0x7333, 0x7332, 0x7338, 0x7331, 0x7336,
- 0x7337, 0x733a, 0x7339, 0x733c, 0x733d, 0x733e, 0x4f49, 0x733b,
- 0x426b, 0x3a6d, 0x733f, 0x7340, 0x7341, 0x7342, 0x7343, 0x3834,
- 0x7344, 0x7345, 0x3c2f, 0x7346, 0x7347, 0x7348, 0x7349, 0x734c,
- 0x734a, 0x4f3c, 0x734b, 0x4e6f, 0x734d, 0x4e5b, 0x734e, 0x477e,
- 0x734f, 0x7351, 0x7352, 0x7350, 0x396d, 0x4c4d, 0x4b63, 0x5677,
- 0x5d60, 0x4b7b, 0x322b, 0x7354, 0x3550, 0x7355, 0x7356, 0x7357,
- 0x3975, 0x7358, 0x6054, 0x4c5b, 0x4263, 0x7359, 0x735b, 0x735a,
- 0x735c, 0x735d, 0x735e, 0x735f, 0x7360, 0x7361, 0x7362, 0x7363,
- 0x7364, 0x7365, 0x7366, 0x7367, 0x7368, 0x4524, 0x385d, 0x736a,
- 0x414d, 0x736b, 0x736c, 0x4921, 0x736d, 0x736e, 0x6337, 0x6c5a,
- 0x706d, 0x736f, 0x7370, 0x7372, 0x7373, 0x7374, 0x4e70, 0x7371,
- 0x7375, 0x7376, 0x7378, 0x7377, 0x737a, 0x737b, 0x7379, 0x4e36,
- 0x737c, 0x737d, 0x6354, 0x737e, 0x212a, 0x2174, 0x2170, 0x2173,
- 0x2175, 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x2125, 0x213f,
- 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337,
- 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129,
- 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347,
- 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f,
- 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357,
- 0x2358, 0x2359, 0x235a, 0x214e, 0x214f, 0x2130, 0x2132, 0x212e,
- 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, 0x2368,
- 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, 0x2370,
- 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, 0x2378,
- 0x2379, 0x237a, 0x2150, 0x2143, 0x2151, 0x2131, 0x216f,
-};
-
-static const Summary16 jisx0208_uni2indx_page00[16] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x1000 }, { 1, 0x0000 }, { 1, 0x0000 },
- { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0x118c }, { 6, 0x0053 },
- { 10, 0x0000 }, { 10, 0x0080 }, { 11, 0x0000 }, { 11, 0x0080 },
-};
-static const Summary16 jisx0208_uni2indx_page03[22] = {
- /* 0x0300 */
- { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 },
- { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 },
- { 12, 0x0000 }, { 12, 0xfffe }, { 27, 0x03fb }, { 36, 0xfffe },
- { 51, 0x03fb }, { 60, 0x0000 }, { 60, 0x0000 }, { 60, 0x0000 },
- /* 0x0400 */
- { 60, 0x0002 }, { 61, 0xffff }, { 77, 0xffff }, { 93, 0xffff },
- { 109, 0xffff }, { 125, 0x0002 },
-};
-static const Summary16 jisx0208_uni2indx_page20[50] = {
- /* 0x2000 */
- { 126, 0x0000 }, { 126, 0x3361 }, { 133, 0x0063 }, { 137, 0x080d },
- { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
- { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
- { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
- /* 0x2100 */
- { 141, 0x0008 }, { 142, 0x0000 }, { 142, 0x0800 }, { 143, 0x0000 },
- { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 },
- { 143, 0x0000 }, { 143, 0x000f }, { 147, 0x0000 }, { 147, 0x0000 },
- { 147, 0x0000 }, { 147, 0x0014 }, { 149, 0x0000 }, { 149, 0x0000 },
- /* 0x2200 */
- { 149, 0x098d }, { 155, 0x6404 }, { 159, 0x1f81 }, { 166, 0x2030 },
- { 169, 0x0000 }, { 169, 0x0004 }, { 170, 0x0cc3 }, { 176, 0x0000 },
- { 176, 0x00cc }, { 180, 0x0000 }, { 180, 0x0020 }, { 181, 0x0000 },
- { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 },
- /* 0x2300 */
- { 181, 0x0000 }, { 181, 0x0004 },
-};
-static const Summary16 jisx0208_uni2indx_page25[23] = {
- /* 0x2500 */
- { 182, 0x900f }, { 188, 0x3999 }, { 196, 0x9939 }, { 204, 0x9999 },
- { 212, 0x0804 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0000 },
- { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0003 }, { 216, 0x300c },
- { 220, 0xc8c0 }, { 225, 0x0000 }, { 225, 0x8000 }, { 226, 0x0000 },
- /* 0x2600 */
- { 226, 0x0060 }, { 228, 0x0000 }, { 228, 0x0000 }, { 228, 0x0000 },
- { 228, 0x0005 }, { 230, 0x0000 }, { 230, 0xa400 },
-};
-static const Summary16 jisx0208_uni2indx_page30[16] = {
- /* 0x3000 */
- { 233, 0xffef }, { 248, 0x103f }, { 255, 0x0000 }, { 255, 0x0000 },
- { 255, 0xfffe }, { 270, 0xffff }, { 286, 0xffff }, { 302, 0xffff },
- { 318, 0xffff }, { 334, 0x780f }, { 342, 0xfffe }, { 357, 0xffff },
- { 373, 0xffff }, { 389, 0xffff }, { 405, 0xffff }, { 421, 0x787f },
-};
-static const Summary16 jisx0208_uni2indx_page4e[1307] = {
- /* 0x4e00 */
- { 432, 0x6f8b }, { 442, 0x43f3 }, { 451, 0x2442 }, { 455, 0x9b46 },
- { 463, 0xe82c }, { 470, 0xe3e0 }, { 478, 0x0004 }, { 479, 0x400a },
- { 482, 0x5f65 }, { 492, 0xdb36 }, { 502, 0x7977 }, { 513, 0x0449 },
- { 517, 0xecd7 }, { 528, 0xe3f0 }, { 537, 0x6038 }, { 542, 0x08c5 },
- /* 0x4f00 */
- { 547, 0xe602 }, { 553, 0x3403 }, { 558, 0x8000 }, { 559, 0x3551 },
- { 566, 0xe0c8 }, { 572, 0x7eab }, { 583, 0x8200 }, { 585, 0x9869 },
- { 592, 0xa948 }, { 598, 0x2942 }, { 603, 0xe803 }, { 609, 0x8060 },
- { 612, 0x441c }, { 617, 0xad93 }, { 626, 0xc03a }, { 632, 0x4568 },
- /* 0x5000 */
- { 638, 0xaa60 }, { 644, 0x8656 }, { 651, 0x3f7a }, { 662, 0x0240 },
- { 664, 0x8388 }, { 669, 0x1461 }, { 674, 0x1020 }, { 676, 0x2174 },
- { 682, 0x2021 }, { 685, 0x0702 }, { 689, 0x3000 }, { 691, 0x40bc },
- { 697, 0xa624 }, { 703, 0x4462 }, { 708, 0x60a8 }, { 713, 0x0a20 },
- /* 0x5100 */
- { 716, 0x0217 }, { 721, 0x8574 }, { 728, 0x0402 }, { 730, 0x9c84 },
- { 736, 0x7bfb }, { 749, 0x1415 }, { 754, 0x7f24 }, { 763, 0x11e2 },
- { 769, 0xb665 }, { 778, 0x02ef }, { 786, 0x1f75 }, { 796, 0x20ff },
- { 805, 0x3a70 }, { 812, 0x3840 }, { 816, 0x26c3 }, { 823, 0x6763 },
- /* 0x5200 */
- { 832, 0x4dd9 }, { 841, 0x2092 }, { 845, 0x46b0 }, { 851, 0x0fc9 },
- { 859, 0xbc98 }, { 867, 0x4850 }, { 871, 0x8638 }, { 877, 0xa03f },
- { 885, 0x2388 }, { 890, 0x8816 }, { 895, 0x3e09 }, { 902, 0x5232 },
- { 908, 0x22aa }, { 914, 0xe3a4 }, { 922, 0x00dd }, { 928, 0xc72c },
- /* 0x5300 */
- { 936, 0xa166 }, { 943, 0x26e1 }, { 950, 0x840b }, { 955, 0x8f0a },
- { 962, 0x27eb }, { 972, 0x559e }, { 981, 0xc241 }, { 986, 0x89bb },
- { 995, 0x0014 }, { 997, 0x8540 }, { 1001, 0x6361 }, { 1008, 0x0849 },
- { 1012, 0x7f0c }, { 1021, 0x8ad0 }, { 1027, 0xff3e }, { 1040, 0x05cf },
- /* 0x5400 */
- { 1048, 0xff1a }, { 1059, 0xa803 }, { 1064, 0x7a41 }, { 1071, 0x7b40 },
- { 1078, 0x4745 }, { 1085, 0x8002 }, { 1087, 0x0500 }, { 1089, 0x38eb },
- { 1098, 0xd851 }, { 1105, 0x0005 }, { 1107, 0x9934 }, { 1114, 0x710c },
- { 1120, 0x0397 }, { 1127, 0x0100 }, { 1128, 0x6366 }, { 1136, 0x2404 },
- /* 0x5500 */
- { 1139, 0x80d0 }, { 1143, 0x0051 }, { 1146, 0xc000 }, { 1148, 0x430a },
- { 1153, 0x9071 }, { 1159, 0x30c8 }, { 1164, 0x0008 }, { 1165, 0x5800 },
- { 1168, 0x0e99 }, { 1175, 0xf700 }, { 1182, 0x5f80 }, { 1189, 0x0041 },
- { 1191, 0x00b0 }, { 1194, 0x9410 }, { 1198, 0x0018 }, { 1200, 0x6280 },
- /* 0x5600 */
- { 1204, 0x0240 }, { 1206, 0x09d0 }, { 1211, 0x8200 }, { 1213, 0x0156 },
- { 1218, 0x5004 }, { 1221, 0x0801 }, { 1223, 0x1d10 }, { 1228, 0x0510 },
- { 1231, 0x84c1 }, { 1236, 0x0010 }, { 1237, 0x4025 }, { 1241, 0x1050 },
- { 1244, 0x410f }, { 1250, 0x4d8a }, { 1257, 0x4009 }, { 1260, 0xa60d },
- /* 0x5700 */
- { 1267, 0xab19 }, { 1275, 0x914c }, { 1281, 0x21c0 }, { 1285, 0x0981 },
- { 1289, 0xc485 }, { 1295, 0x0003 }, { 1297, 0x0652 }, { 1302, 0x8000 },
- { 1303, 0x0b04 }, { 1307, 0x0008 }, { 1308, 0x041d }, { 1313, 0x0009 },
- { 1315, 0x4849 }, { 1320, 0x905c }, { 1326, 0x0009 }, { 1328, 0x1690 },
- /* 0x5800 */
- { 1333, 0x0c65 }, { 1339, 0x2220 }, { 1342, 0x8412 }, { 1346, 0x2433 },
- { 1352, 0x0c03 }, { 1356, 0x4796 }, { 1364, 0x0a04 }, { 1367, 0x4225 },
- { 1372, 0x0028 }, { 1374, 0x9088 }, { 1378, 0x4900 }, { 1381, 0x4f08 },
- { 1387, 0x14a2 }, { 1392, 0xd3aa }, { 1401, 0xd830 }, { 1407, 0x3e87 },
- /* 0x5900 */
- { 1416, 0x8604 }, { 1420, 0x1f61 }, { 1428, 0x7ea4 }, { 1437, 0x4186 },
- { 1442, 0xc390 }, { 1448, 0x05b3 }, { 1455, 0x57a5 }, { 1464, 0x2118 },
- { 1468, 0x241e }, { 1474, 0x2a48 }, { 1479, 0x1128 }, { 1483, 0x4a04 },
- { 1487, 0x0a40 }, { 1490, 0x161b }, { 1497, 0x0d60 }, { 1502, 0x8840 },
- /* 0x5a00 */
- { 1505, 0x020a }, { 1508, 0x9502 }, { 1513, 0x8221 }, { 1517, 0x1060 },
- { 1520, 0x0243 }, { 1524, 0x0400 }, { 1525, 0x1444 }, { 1529, 0x8000 },
- { 1530, 0x0000 }, { 1530, 0x0c04 }, { 1533, 0x0000 }, { 1533, 0x7000 },
- { 1536, 0x1a06 }, { 1541, 0x00c1 }, { 1544, 0x024a }, { 1548, 0x0c00 },
- /* 0x5b00 */
- { 1550, 0x1a00 }, { 1553, 0x0040 }, { 1554, 0x1404 }, { 1557, 0x4045 },
- { 1561, 0x0029 }, { 1564, 0xbdb3 }, { 1575, 0x0a78 }, { 1581, 0x052b },
- { 1587, 0xbba9 }, { 1597, 0xbfa0 }, { 1606, 0x407c }, { 1612, 0x8379 },
- { 1620, 0x12fc }, { 1628, 0xe81d }, { 1636, 0x4bf6 }, { 1646, 0xc569 },
- /* 0x5c00 */
- { 1654, 0xeff6 }, { 1667, 0x044a }, { 1671, 0x2115 }, { 1676, 0xff02 },
- { 1685, 0xed63 }, { 1695, 0x402b }, { 1700, 0xd033 }, { 1707, 0x0242 },
- { 1710, 0x1000 }, { 1711, 0x0013 }, { 1714, 0x1b02 }, { 1719, 0x59ca },
- { 1727, 0x00a0 }, { 1729, 0x0200 }, { 1730, 0xa703 }, { 1737, 0x2c41 },
- /* 0x5d00 */
- { 1742, 0x4880 }, { 1745, 0x8ff2 }, { 1755, 0x0204 }, { 1757, 0x0000 },
- { 1757, 0x5800 }, { 1760, 0x1005 }, { 1763, 0x9200 }, { 1766, 0x0048 },
- { 1768, 0x1894 }, { 1773, 0x2001 }, { 1775, 0x5004 }, { 1778, 0x3480 },
- { 1782, 0x3200 }, { 1785, 0x684c }, { 1791, 0x49ea }, { 1799, 0x68be },
- /* 0x5e00 */
- { 1808, 0x184c }, { 1813, 0x2e42 }, { 1819, 0xa820 }, { 1823, 0x21c9 },
- { 1829, 0x50b9 }, { 1836, 0x80b0 }, { 1840, 0x001e }, { 1844, 0xff7c },
- { 1857, 0x849a }, { 1863, 0x14e0 }, { 1868, 0x28c1 }, { 1873, 0x01e0 },
- { 1877, 0x870e }, { 1884, 0xac49 }, { 1891, 0x130f }, { 1898, 0xdddb },
- /* 0x5f00 */
- { 1910, 0xbe1a }, { 1919, 0x89fb }, { 1929, 0xa2e0 }, { 1935, 0x51a2 },
- { 1941, 0x5502 }, { 1946, 0x32ca }, { 1953, 0x3e46 }, { 1961, 0x928b },
- { 1968, 0x1dbf }, { 1979, 0x438f }, { 1987, 0x6703 }, { 1994, 0x3218 },
- { 1999, 0x3028 }, { 2003, 0x33c0 }, { 2009, 0x0811 }, { 2012, 0xa923 },
- /* 0x6000 */
- { 2019, 0xc000 }, { 2021, 0x3a65 }, { 2029, 0x8fe3 }, { 2039, 0x0402 },
- { 2041, 0x2c4e }, { 2048, 0x8625 }, { 2054, 0xbf3d }, { 2066, 0x00a1 },
- { 2069, 0x3a1a }, { 2076, 0x8cd4 }, { 2083, 0x06c9 }, { 2089, 0x317c },
- { 2097, 0x00e0 }, { 2100, 0x950a }, { 2106, 0x018b }, { 2111, 0x0edb },
- /* 0x6100 */
- { 2120, 0xe34b }, { 2129, 0x8c20 }, { 2133, 0x1182 }, { 2137, 0xf010 },
- { 2142, 0x7d94 }, { 2151, 0xa728 }, { 2158, 0xc9ac }, { 2166, 0x40fb },
- { 2174, 0x4484 }, { 2178, 0x0653 }, { 2184, 0x5a90 }, { 2190, 0x4444 },
- { 2194, 0x3fc8 }, { 2203, 0x0001 }, { 2204, 0x0048 }, { 2206, 0xf5d4 },
- /* 0x6200 */
- { 2216, 0x7701 }, { 2223, 0xec57 }, { 2233, 0xc442 }, { 2238, 0x891d },
- { 2245, 0x6b83 }, { 2253, 0x4928 }, { 2258, 0x4109 }, { 2262, 0xd242 },
- { 2268, 0x061d }, { 2274, 0x59fe }, { 2285, 0x1800 }, { 2287, 0x3a22 },
- { 2293, 0xb7e4 }, { 2303, 0x3b9f }, { 2314, 0xf003 }, { 2320, 0xc0ea },
- /* 0x6300 */
- { 2327, 0x1386 }, { 2333, 0x8202 }, { 2336, 0x8980 }, { 2340, 0xe400 },
- { 2344, 0xb200 }, { 2348, 0x10a1 }, { 2352, 0x4b80 }, { 2357, 0x0cc4 },
- { 2362, 0xd309 }, { 2369, 0x8944 }, { 2374, 0x1faf }, { 2385, 0x4834 },
- { 2390, 0x8259 }, { 2396, 0x0c45 }, { 2401, 0x420a }, { 2405, 0x0450 },
- /* 0x6400 */
- { 2408, 0xa040 }, { 2411, 0x10c8 }, { 2415, 0x3140 }, { 2419, 0x4450 },
- { 2423, 0x4004 }, { 2425, 0x0100 }, { 2426, 0x8280 }, { 2429, 0x0540 },
- { 2432, 0x0108 }, { 2434, 0x442c }, { 2439, 0x6a30 }, { 2445, 0x1a05 },
- { 2450, 0x20a6 }, { 2455, 0x0514 }, { 2459, 0x90cf }, { 2467, 0x6456 },
- /* 0x6500 */
- { 2474, 0x0021 }, { 2476, 0x3100 }, { 2479, 0x9c18 }, { 2485, 0xcbf0 },
- { 2494, 0xa120 }, { 2498, 0x63e2 }, { 2506, 0x104c }, { 2510, 0x01b5 },
- { 2516, 0x538c }, { 2523, 0x9a83 }, { 2530, 0xb8b2 }, { 2538, 0x3281 },
- { 2543, 0x987a }, { 2551, 0x0a84 }, { 2555, 0x33e7 }, { 2565, 0x0c02 },
- /* 0x6600 */
- { 2568, 0xd4cc }, { 2576, 0x9018 }, { 2580, 0xa1a1 }, { 2586, 0x9070 },
- { 2591, 0x8a1e }, { 2598, 0xe004 }, { 2602, 0xc3d4 }, { 2610, 0x0451 },
- { 2614, 0x439a }, { 2621, 0x21c2 }, { 2626, 0x4844 }, { 2630, 0x5310 },
- { 2635, 0x0292 }, { 2639, 0x3640 }, { 2644, 0x0241 }, { 2647, 0xf3bd },
- /* 0x6700 */
- { 2659, 0xab09 }, { 2666, 0xe8f0 }, { 2674, 0x7dc0 }, { 2682, 0xa5d2 },
- { 2690, 0xc242 }, { 2695, 0xd24b }, { 2703, 0xa43f }, { 2712, 0xd0af },
- { 2721, 0x1aa0 }, { 2726, 0x34a1 }, { 2732, 0x8247 }, { 2738, 0x03d8 },
- { 2744, 0xc452 }, { 2750, 0x651b }, { 2758, 0xd294 }, { 2765, 0xc83a },
- /* 0x6800 */
- { 2772, 0x001c }, { 2775, 0x40c8 }, { 2779, 0x0e06 }, { 2784, 0x3314 },
- { 2790, 0x614f }, { 2798, 0xb21b }, { 2806, 0x0088 }, { 2808, 0xc0d0 },
- { 2813, 0xa02a }, { 2818, 0xa898 }, { 2824, 0xa1c5 }, { 2831, 0x166b },
- { 2839, 0x2e50 }, { 2845, 0x85b4 }, { 2852, 0xc08b }, { 2858, 0x0604 },
- /* 0x6900 */
- { 2861, 0xf933 }, { 2871, 0x1e04 }, { 2876, 0x056e }, { 2883, 0xa251 },
- { 2889, 0x0400 }, { 2890, 0x7638 }, { 2898, 0xec07 }, { 2906, 0x73b8 },
- { 2915, 0x4406 }, { 2919, 0x1832 }, { 2924, 0x4081 }, { 2927, 0xc816 },
- { 2933, 0x7c8a }, { 2941, 0x6309 }, { 2947, 0x2980 }, { 2951, 0xaa04 },
- /* 0x6a00 */
- { 2956, 0x1c24 }, { 2961, 0xca9c }, { 2969, 0x4e0e }, { 2976, 0x2760 },
- { 2982, 0x0990 }, { 2986, 0x8300 }, { 2989, 0x0046 }, { 2992, 0x8104 },
- { 2995, 0x6011 }, { 2999, 0x1081 }, { 3002, 0x540d }, { 3008, 0x0908 },
- { 3011, 0x000e }, { 3014, 0xcc0a }, { 3020, 0x0500 }, { 3022, 0x0c00 },
- /* 0x6b00 */
- { 3024, 0x0430 }, { 3027, 0xa044 }, { 3031, 0x008b }, { 3035, 0x6784 },
- { 3042, 0x5288 }, { 3047, 0x8a19 }, { 3053, 0x865e }, { 3061, 0x8b18 },
- { 3067, 0x2e59 }, { 3075, 0x4160 }, { 3079, 0x8c10 }, { 3083, 0x9cbe },
- { 3093, 0x6861 }, { 3099, 0x891c }, { 3105, 0x9800 }, { 3108, 0x0008 },
- /* 0x6c00 */
- { 3109, 0x8100 }, { 3111, 0x089a }, { 3116, 0x0018 }, { 3118, 0x4190 },
- { 3122, 0x4007 }, { 3126, 0xe4a1 }, { 3133, 0x0505 }, { 3137, 0x640d },
- { 3143, 0x310e }, { 3149, 0x0e4d }, { 3156, 0x4806 }, { 3160, 0xff0a },
- { 3170, 0x1632 }, { 3176, 0x2aa8 }, { 3182, 0x852e }, { 3189, 0x000b },
- /* 0x6d00 */
- { 3192, 0x1800 }, { 3194, 0xca84 }, { 3200, 0x0e20 }, { 3204, 0x696c },
- { 3212, 0x0032 }, { 3215, 0x1600 }, { 3218, 0x5658 }, { 3225, 0x0390 },
- { 3229, 0x5120 }, { 3233, 0x1a28 }, { 3238, 0x8000 }, { 3239, 0x1124 },
- { 3243, 0x18e1 }, { 3249, 0x4326 }, { 3255, 0x5d52 }, { 3263, 0x0eaa },
- /* 0x6e00 */
- { 3270, 0x0fa0 }, { 3276, 0xae28 }, { 3283, 0xfa7b }, { 3295, 0x4500 },
- { 3298, 0x6408 }, { 3302, 0x8940 }, { 3306, 0xc880 }, { 3310, 0xc044 },
- { 3314, 0x9005 }, { 3318, 0xb141 }, { 3324, 0x8424 }, { 3328, 0x24c4 },
- { 3333, 0x1a34 }, { 3339, 0x603a }, { 3345, 0x9000 }, { 3347, 0xc194 },
- /* 0x6f00 */
- { 3353, 0x8246 }, { 3358, 0x003a }, { 3362, 0x180d }, { 3367, 0xc106 },
- { 3372, 0x0022 }, { 3374, 0x9910 }, { 3379, 0xe050 }, { 3384, 0x1511 },
- { 3389, 0x4057 }, { 3395, 0x0082 }, { 3397, 0x041a }, { 3401, 0x020a },
- { 3404, 0x004f }, { 3409, 0x8930 }, { 3414, 0xd813 }, { 3421, 0x444a },
- /* 0x7000 */
- { 3426, 0x8a02 }, { 3430, 0xed22 }, { 3438, 0x10c0 }, { 3441, 0x4005 },
- { 3444, 0x1000 }, { 3445, 0x0102 }, { 3447, 0x8808 }, { 3450, 0x3101 },
- { 3454, 0x4600 }, { 3457, 0x0204 }, { 3459, 0xf000 }, { 3463, 0x0708 },
- { 3467, 0x8900 }, { 3470, 0xa200 }, { 3473, 0x0000 }, { 3473, 0x2202 },
- /* 0x7100 */
- { 3476, 0x0200 }, { 3477, 0x1610 }, { 3481, 0x0042 }, { 3483, 0x1040 },
- { 3485, 0x5200 }, { 3488, 0x0260 }, { 3491, 0x52f4 }, { 3499, 0x2000 },
- { 3500, 0x8510 }, { 3504, 0x8230 }, { 3508, 0x1100 }, { 3510, 0x4202 },
- { 3513, 0x4308 }, { 3517, 0x80b5 }, { 3523, 0x70e1 }, { 3530, 0x9a20 },
- /* 0x7200 */
- { 3535, 0x2040 }, { 3537, 0x0801 }, { 3539, 0x3500 }, { 3543, 0xfc65 },
- { 3553, 0x19c1 }, { 3559, 0xab04 }, { 3565, 0x0286 }, { 3569, 0x6214 },
- { 3574, 0x0087 }, { 3578, 0x0044 }, { 3580, 0x9085 }, { 3585, 0x0244 },
- { 3588, 0x405c }, { 3593, 0x0a85 }, { 3598, 0x3207 }, { 3604, 0x3380 },
- /* 0x7300 */
- { 3609, 0x0400 }, { 3610, 0xb8c0 }, { 3616, 0xce20 }, { 3622, 0xc0d0 },
- { 3627, 0xc030 }, { 3631, 0x0080 }, { 3632, 0x0508 }, { 3635, 0x0d25 },
- { 3641, 0x0a90 }, { 3645, 0x0040 }, { 3646, 0x0200 }, { 3647, 0x080c },
- { 3650, 0x6505 }, { 3656, 0x4000 }, { 3657, 0x6421 }, { 3662, 0x4102 },
- /* 0x7400 */
- { 3665, 0x0268 }, { 3669, 0x0000 }, { 3669, 0x0024 }, { 3671, 0x847c },
- { 3678, 0x0002 }, { 3679, 0xde20 }, { 3686, 0x8619 }, { 3692, 0x4049 },
- { 3696, 0x0808 }, { 3698, 0x4000 }, { 3699, 0x0084 }, { 3701, 0x2001 },
- { 3703, 0x8400 }, { 3705, 0x1010 }, { 3707, 0x42cd }, { 3714, 0x01c7 },
- /* 0x7500 */
- { 3720, 0x7038 }, { 3726, 0xd52a }, { 3734, 0x1968 }, { 3740, 0x1d8f },
- { 3749, 0xbe50 }, { 3757, 0x3e12 }, { 3764, 0x2ef5 }, { 3774, 0x81d9 },
- { 3781, 0xcec4 }, { 3789, 0x2412 }, { 3793, 0x0828 }, { 3796, 0x732e },
- { 3805, 0x24ac }, { 3811, 0x4b34 }, { 3818, 0x020c }, { 3821, 0xd41d },
- /* 0x7600 */
- { 3829, 0x2a02 }, { 3833, 0x8000 }, { 3834, 0x0097 }, { 3839, 0x0811 },
- { 3842, 0x11c4 }, { 3847, 0x1144 }, { 3851, 0x1786 }, { 3858, 0x7d45 },
- { 3867, 0x49d9 }, { 3875, 0x0649 }, { 3880, 0x4000 }, { 3881, 0x8791 },
- { 3888, 0x254c }, { 3894, 0xd8c4 }, { 3901, 0x44ba }, { 3908, 0x4914 },
- /* 0x7700 */
- { 3913, 0x1b92 }, { 3920, 0xc800 }, { 3923, 0x0271 }, { 3928, 0x1580 },
- { 3932, 0x0081 }, { 3934, 0x0c00 }, { 3936, 0x096a }, { 3942, 0xc200 },
- { 3945, 0x4800 }, { 3947, 0x4002 }, { 3949, 0x3021 }, { 3953, 0xba49 },
- { 3961, 0x2080 }, { 3963, 0x1c80 }, { 3967, 0xe2ac }, { 3975, 0x1008 },
- /* 0x7800 */
- { 3977, 0x1004 }, { 3979, 0x0034 }, { 3982, 0x00e1 }, { 3986, 0x8414 },
- { 3990, 0x0020 }, { 3991, 0x2000 }, { 3992, 0x9800 }, { 3995, 0x1014 },
- { 3998, 0x70c2 }, { 4004, 0x04aa }, { 4009, 0x8688 }, { 4014, 0x5420 },
- { 4018, 0x0c62 }, { 4023, 0x0413 }, { 4027, 0x9180 }, { 4031, 0x2010 },
- /* 0x7900 */
- { 4033, 0x4082 }, { 4036, 0x0206 }, { 4039, 0x1c40 }, { 4043, 0x5400 },
- { 4046, 0x0383 }, { 4051, 0xe4e9 }, { 4060, 0x2125 }, { 4065, 0x8480 },
- { 4068, 0xe433 }, { 4076, 0x2000 }, { 4077, 0x44c0 }, { 4081, 0xe609 },
- { 4088, 0x0a03 }, { 4092, 0x8126 }, { 4097, 0x12da }, { 4104, 0x0801 },
- /* 0x7a00 */
- { 4106, 0x6901 }, { 4111, 0x9790 }, { 4118, 0x4001 }, { 4120, 0xf886 },
- { 4128, 0xe24d }, { 4136, 0x0081 }, { 4138, 0x0a0e }, { 4143, 0xa651 },
- { 4150, 0x011a }, { 4154, 0x81ec }, { 4161, 0xc600 }, { 4165, 0x8441 },
- { 4169, 0xadb8 }, { 4178, 0xb62c }, { 4186, 0xa46f }, { 4195, 0x8741 },
- /* 0x7b00 */
- { 4201, 0x8d54 }, { 4208, 0x4b02 }, { 4213, 0x1161 }, { 4218, 0x0268 },
- { 4222, 0xbb60 }, { 4230, 0x2057 }, { 4236, 0x50a0 }, { 4240, 0x0433 },
- { 4245, 0xa8c0 }, { 4250, 0xb7b4 }, { 4260, 0x2402 }, { 4263, 0x0112 },
- { 4266, 0x9ad3 }, { 4275, 0x2000 }, { 4276, 0x2271 }, { 4282, 0x00c8 },
- /* 0x7c00 */
- { 4285, 0x2081 }, { 4288, 0x809e }, { 4294, 0x0c8a }, { 4299, 0xe180 },
- { 4304, 0xb009 }, { 4309, 0x8151 }, { 4314, 0x1031 }, { 4318, 0x4028 },
- { 4321, 0x2a0e }, { 4327, 0x89a5 }, { 4334, 0x69b6 }, { 4343, 0x620e },
- { 4349, 0x4425 }, { 4354, 0xd144 }, { 4360, 0x8085 }, { 4364, 0x4d54 },
- /* 0x7d00 */
- { 4371, 0x2c75 }, { 4379, 0x1fb1 }, { 4388, 0xd807 }, { 4395, 0x862d },
- { 4402, 0xd87c }, { 4411, 0x4841 }, { 4415, 0x414e }, { 4421, 0x226e },
- { 4428, 0x8200 }, { 4430, 0x9e08 }, { 4436, 0xf80c }, { 4443, 0xed37 },
- { 4454, 0x8c80 }, { 4458, 0x7526 }, { 4466, 0x9313 }, { 4473, 0x0814 },
- /* 0x7e00 */
- { 4476, 0x0e32 }, { 4482, 0xc804 }, { 4486, 0x484e }, { 4492, 0x6ea6 },
- { 4501, 0x2c4a }, { 4507, 0x6670 }, { 4514, 0x26c0 }, { 4519, 0xba01 },
- { 4525, 0xd30c }, { 4532, 0x185d }, { 4539, 0x0000 }, { 4539, 0x0000 },
- { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 },
- /* 0x7f00 */
- { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0540 },
- { 4542, 0x7020 }, { 4546, 0x8133 }, { 4552, 0x4f81 }, { 4559, 0x03a5 },
- { 4565, 0x55ec }, { 4574, 0x6410 }, { 4578, 0xc318 }, { 4584, 0x2344 },
- { 4589, 0x1462 }, { 4594, 0x0034 }, { 4597, 0x0a43 }, { 4602, 0x1a09 },
- /* 0x8000 */
- { 4607, 0x187b }, { 4615, 0x13a5 }, { 4622, 0x0102 }, { 4624, 0xa848 },
- { 4629, 0x0440 }, { 4631, 0xc544 }, { 4637, 0x8106 }, { 4641, 0xe2dd },
- { 4651, 0x1af0 }, { 4658, 0x2d48 }, { 4664, 0xb626 }, { 4672, 0x0416 },
- { 4676, 0x5058 }, { 4681, 0x6e40 }, { 4687, 0x8032 }, { 4691, 0x3112 },
- /* 0x8100 */
- { 4696, 0x07e4 }, { 4703, 0x0c00 }, { 4705, 0x8208 }, { 4708, 0x420a },
- { 4712, 0x4840 }, { 4715, 0x803b }, { 4721, 0x4860 }, { 4725, 0x8713 },
- { 4732, 0x850d }, { 4738, 0x3428 }, { 4743, 0x0319 }, { 4748, 0xe529 },
- { 4756, 0x2345 }, { 4762, 0x870a }, { 4768, 0x25a9 }, { 4775, 0x5c18 },
- /* 0x8200 */
- { 4781, 0x77a6 }, { 4791, 0xd9c5 }, { 4800, 0x5e00 }, { 4805, 0x03e8 },
- { 4811, 0x0081 }, { 4813, 0xa700 }, { 4818, 0xcd54 }, { 4826, 0x41c6 },
- { 4832, 0x2800 }, { 4834, 0xa204 }, { 4838, 0xb860 }, { 4844, 0x2b0a },
- { 4850, 0x0020 }, { 4851, 0xda9e }, { 4861, 0x08ea }, { 4867, 0x0e1a },
- /* 0x8300 */
- { 4873, 0x427c }, { 4880, 0x11c0 }, { 4884, 0x8908 }, { 4888, 0x0376 },
- { 4895, 0x8621 }, { 4900, 0x0105 }, { 4903, 0x0000 }, { 4903, 0x18a8 },
- { 4908, 0x46a0 }, { 4913, 0xc448 }, { 4918, 0x0d05 }, { 4923, 0x2022 },
- { 4926, 0x5422 }, { 4931, 0x9148 }, { 4936, 0x8a01 }, { 4940, 0x2897 },
- /* 0x8400 */
- { 4947, 0x7898 }, { 4954, 0x0008 }, { 4955, 0x1605 }, { 4960, 0x3122 },
- { 4965, 0x4240 }, { 4968, 0x0880 }, { 4970, 0xfa4e }, { 4980, 0x06a2 },
- { 4985, 0x0814 }, { 4988, 0x9211 }, { 4993, 0x2002 }, { 4995, 0x9b04 },
- { 5001, 0x2e52 }, { 5008, 0x0643 }, { 5013, 0x5000 }, { 5015, 0x9010 },
- /* 0x8500 */
- { 5018, 0x0041 }, { 5020, 0x85ba }, { 5028, 0x3042 }, { 5032, 0x2020 },
- { 5034, 0x4f0b }, { 5042, 0x05a0 }, { 5046, 0x2708 }, { 5051, 0x4080 },
- { 5053, 0x0591 }, { 5058, 0x1a93 }, { 5065, 0xdf50 }, { 5074, 0x0600 },
- { 5076, 0xa202 }, { 5080, 0x3021 }, { 5084, 0x0630 }, { 5088, 0x4e80 },
- /* 0x8600 */
- { 5093, 0x0cc4 }, { 5098, 0x04c8 }, { 5102, 0xa004 }, { 5105, 0x8001 },
- { 5107, 0x6000 }, { 5109, 0xd431 }, { 5116, 0x0880 }, { 5118, 0x0a02 },
- { 5121, 0x1c00 }, { 5124, 0x0028 }, { 5126, 0x8e18 }, { 5132, 0x0041 },
- { 5134, 0x6ad0 }, { 5141, 0xca10 }, { 5146, 0xf210 }, { 5152, 0x4b00 },
- /* 0x8700 */
- { 5156, 0x274d }, { 5164, 0x1506 }, { 5169, 0x0220 }, { 5171, 0x8890 },
- { 5175, 0x5a00 }, { 5179, 0x82a8 }, { 5184, 0x4549 }, { 5190, 0x8150 },
- { 5194, 0x2004 }, { 5196, 0x8000 }, { 5197, 0x8804 }, { 5200, 0x2c08 },
- { 5204, 0x08d1 }, { 5209, 0x0005 }, { 5211, 0x8001 }, { 5213, 0x4ac4 },
- /* 0x8800 */
- { 5219, 0xe020 }, { 5223, 0x0062 }, { 5226, 0x008e }, { 5230, 0x0a42 },
- { 5234, 0x3055 }, { 5240, 0x6a8c }, { 5247, 0x090e }, { 5252, 0xe0a5 },
- { 5259, 0x2906 }, { 5264, 0x42c4 }, { 5269, 0x4814 }, { 5273, 0x80b3 },
- { 5279, 0x803e }, { 5285, 0xb330 }, { 5292, 0x0102 }, { 5294, 0x731c },
- /* 0x8900 */
- { 5302, 0x1494 }, { 5307, 0x600d }, { 5312, 0x0c20 }, { 5315, 0x0940 },
- { 5318, 0x301a }, { 5323, 0xc040 }, { 5326, 0xa451 }, { 5332, 0xc094 },
- { 5337, 0x8dca }, { 5345, 0x05c8 }, { 5350, 0x96c2 }, { 5357, 0xa40c },
- { 5362, 0x0001 }, { 5363, 0x3404 }, { 5367, 0x00c8 }, { 5370, 0x0110 },
- /* 0x8a00 */
- { 5372, 0x550d }, { 5379, 0xa9c9 }, { 5387, 0x2428 }, { 5391, 0x1c5a },
- { 5398, 0x0142 }, { 5401, 0x4837 }, { 5408, 0x7a4d }, { 5417, 0x100f },
- { 5422, 0x32b4 }, { 5429, 0x452a }, { 5435, 0x317b }, { 5444, 0x9205 },
- { 5449, 0xb894 }, { 5456, 0x5c44 }, { 5462, 0x68d7 }, { 5471, 0x458a },
- /* 0x8b00 */
- { 5477, 0x5097 }, { 5484, 0x2ed1 }, { 5492, 0x1943 }, { 5498, 0x4208 },
- { 5501, 0xd202 }, { 5506, 0x9d40 }, { 5512, 0x9840 }, { 5516, 0x2097 },
- { 5522, 0x5409 }, { 5527, 0x064d }, { 5533, 0x0000 }, { 5533, 0x0000 },
- { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 },
- /* 0x8c00 */
- { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x8480 },
- { 5536, 0x5542 }, { 5542, 0x0421 }, { 5545, 0x1c06 }, { 5550, 0x1700 },
- { 5554, 0x7624 }, { 5561, 0x6110 }, { 5565, 0xff87 }, { 5577, 0xb9dd },
- { 5588, 0x659f }, { 5598, 0x5c0a }, { 5604, 0x245d }, { 5611, 0x3c00 },
- /* 0x8d00 */
- { 5615, 0xadb0 }, { 5623, 0x0059 }, { 5627, 0x0000 }, { 5627, 0x0000 },
- { 5627, 0x0000 }, { 5627, 0x0000 }, { 5627, 0x28d0 }, { 5632, 0x009b },
- { 5637, 0x0422 }, { 5640, 0x0200 }, { 5641, 0x0108 }, { 5643, 0x4408 },
- { 5646, 0x9804 }, { 5650, 0xac40 }, { 5655, 0x8d0a }, { 5661, 0x9028 },
- /* 0x8e00 */
- { 5665, 0x8700 }, { 5669, 0xe001 }, { 5673, 0x0400 }, { 5674, 0x0031 },
- { 5677, 0x1794 }, { 5684, 0x8221 }, { 5688, 0x0019 }, { 5691, 0x1054 },
- { 5695, 0x2cb2 }, { 5702, 0x021a }, { 5706, 0x9c02 }, { 5711, 0x4003 },
- { 5714, 0x3d60 }, { 5721, 0x8804 }, { 5724, 0x080c }, { 5727, 0x7900 },
- /* 0x8f00 */
- { 5732, 0x1628 }, { 5737, 0xba3c }, { 5746, 0x8640 }, { 5750, 0xcb08 },
- { 5756, 0x7274 }, { 5764, 0x9080 }, { 5767, 0x001e }, { 5771, 0x0000 },
- { 5771, 0x0000 }, { 5771, 0xd800 }, { 5775, 0xe188 }, { 5781, 0x9c87 },
- { 5789, 0x4034 }, { 5793, 0x0412 }, { 5796, 0xae64 }, { 5804, 0x2791 },
- /* 0x9000 */
- { 5811, 0xe86b }, { 5820, 0xe6fb }, { 5832, 0x408f }, { 5838, 0x5366 },
- { 5846, 0xeea6 }, { 5856, 0x537f }, { 5867, 0xe32b }, { 5876, 0xb5e4 },
- { 5885, 0x869f }, { 5894, 0x0002 }, { 5895, 0x8548 }, { 5900, 0x0122 },
- { 5903, 0x4402 }, { 5906, 0x0800 }, { 5907, 0x2116 }, { 5912, 0x20a0 },
- /* 0x9100 */
- { 5915, 0x0004 }, { 5916, 0x0204 }, { 5918, 0x2000 }, { 5919, 0x0005 },
- { 5921, 0x7e00 }, { 5927, 0x0154 }, { 5931, 0x162c }, { 5937, 0x01ac },
- { 5942, 0x2a84 }, { 5947, 0x1085 }, { 5951, 0x8c14 }, { 5956, 0x0530 },
- { 5960, 0xfbc3 }, { 5971, 0xb943 }, { 5979, 0x00ca }, { 5983, 0x9060 },
- /* 0x9200 */
- { 5987, 0x6000 }, { 5989, 0x4032 }, { 5993, 0x1200 }, { 5995, 0x8090 },
- { 5998, 0x0b30 }, { 6003, 0x4c81 }, { 6008, 0x0054 }, { 6011, 0x4002 },
- { 6013, 0x0029 }, { 6016, 0x1d6a }, { 6024, 0x2000 }, { 6025, 0x0280 },
- { 6027, 0x8000 }, { 6028, 0x0004 }, { 6029, 0x2610 }, { 6033, 0x150c },
- /* 0x9300 */
- { 6038, 0x8040 }, { 6040, 0x0701 }, { 6044, 0xd94d }, { 6053, 0x0c24 },
- { 6057, 0x2810 }, { 6060, 0x1850 }, { 6064, 0x5001 }, { 6067, 0x5020 },
- { 6070, 0x1000 }, { 6071, 0x04d0 }, { 6075, 0x7080 }, { 6079, 0x0201 },
- { 6081, 0x0108 }, { 6083, 0x21c3 }, { 6089, 0x0132 }, { 6093, 0x0000 },
- /* 0x9400 */
- { 6093, 0x0088 }, { 6095, 0x0719 }, { 6101, 0x0802 }, { 6103, 0x0560 },
- { 6107, 0x0012 }, { 6109, 0x4c0e }, { 6115, 0x0405 }, { 6118, 0xf0a1 },
- { 6125, 0x0002 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
- { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
- /* 0x9500 */
- { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
- { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0080 },
- { 6127, 0x8e8d }, { 6135, 0x035a }, { 6141, 0x21bd }, { 6149, 0x5a04 },
- { 6154, 0x3488 }, { 6159, 0x1170 }, { 6164, 0x0026 }, { 6167, 0x0000 },
- /* 0x9600 */
- { 6167, 0x0000 }, { 6167, 0x1000 }, { 6168, 0xc502 }, { 6173, 0x8804 },
- { 6176, 0xb815 }, { 6183, 0xf801 }, { 6189, 0x147c }, { 6196, 0x25ed },
- { 6205, 0xed60 }, { 6213, 0x1bb0 }, { 6220, 0x0589 }, { 6225, 0x1bd7 },
- { 6235, 0x7af3 }, { 6246, 0x1a62 }, { 6252, 0x0d0c }, { 6257, 0x0ac5 },
- /* 0x9700 */
- { 6263, 0xe5d1 }, { 6272, 0x524a }, { 6278, 0x0490 }, { 6281, 0x6305 },
- { 6287, 0x0354 }, { 6292, 0x5244 }, { 6297, 0x2b57 }, { 6306, 0x1612 },
- { 6311, 0xa872 }, { 6318, 0x1101 }, { 6321, 0x2949 }, { 6327, 0x0018 },
- { 6329, 0x0948 }, { 6333, 0x1008 }, { 6335, 0x6000 }, { 6337, 0x886c },
- /* 0x9800 */
- { 6343, 0x916e }, { 6351, 0x058f }, { 6358, 0x3012 }, { 6362, 0x3990 },
- { 6368, 0xf840 }, { 6374, 0x4930 }, { 6379, 0x8880 }, { 6382, 0x001b },
- { 6386, 0x0000 }, { 6386, 0x0000 }, { 6386, 0x8500 }, { 6389, 0x0042 },
- { 6391, 0x0058 }, { 6394, 0x9800 }, { 6397, 0xea04 }, { 6403, 0x7014 },
- /* 0x9900 */
- { 6408, 0x1628 }, { 6413, 0x611d }, { 6420, 0x5113 }, { 6426, 0x6000 },
- { 6428, 0x1a24 }, { 6433, 0x00a7 }, { 6438, 0x0000 }, { 6438, 0x0000 },
- { 6438, 0x0000 }, { 6438, 0x03c0 }, { 6442, 0x7120 }, { 6447, 0x1018 },
- { 6450, 0x0172 }, { 6455, 0xa927 }, { 6463, 0x6004 }, { 6466, 0x8906 },
- /* 0x9a00 */
- { 6471, 0xc022 }, { 6475, 0x020c }, { 6478, 0x0900 }, { 6480, 0x4081 },
- { 6483, 0x202d }, { 6488, 0x8ca0 }, { 6493, 0x0e34 }, { 6499, 0x0000 },
- { 6499, 0x0000 }, { 6499, 0x0000 }, { 6499, 0x2100 }, { 6501, 0x1101 },
- { 6504, 0x8011 }, { 6507, 0xc11a }, { 6513, 0xec4c }, { 6521, 0x0892 },
- /* 0x9b00 */
- { 6525, 0x0040 }, { 6526, 0x8500 }, { 6529, 0xc7ac }, { 6538, 0x1806 },
- { 6542, 0xe03e }, { 6550, 0x0512 }, { 6554, 0x8000 }, { 6555, 0x0010 },
- { 6556, 0x4008 }, { 6558, 0x80ce }, { 6564, 0x6d01 }, { 6570, 0x0210 },
- { 6572, 0x8641 }, { 6577, 0x0856 }, { 6582, 0x011e }, { 6587, 0x0027 },
- /* 0x9c00 */
- { 6591, 0x3750 }, { 6598, 0x083d }, { 6604, 0xe032 }, { 6610, 0x4e05 },
- { 6616, 0x01c0 }, { 6619, 0x0484 }, { 6622, 0x0081 }, { 6624, 0x0140 },
- { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 },
- { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x1aa0 }, { 6631, 0x0059 },
- /* 0x9d00 */
- { 6635, 0x43c8 }, { 6641, 0x8824 }, { 6645, 0x1d48 }, { 6651, 0xc800 },
- { 6654, 0x0152 }, { 6658, 0x7203 }, { 6664, 0x9013 }, { 6669, 0x0404 },
- { 6671, 0x8280 }, { 6674, 0x0400 }, { 6675, 0x8a10 }, { 6679, 0x0d14 },
- { 6684, 0x8056 }, { 6689, 0x0208 }, { 6691, 0xa040 }, { 6694, 0x2704 },
- /* 0x9e00 */
- { 6699, 0x0000 }, { 6699, 0x4c00 }, { 6702, 0x0000 }, { 6702, 0x0000 },
- { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0xa320 },
- { 6707, 0x1902 }, { 6711, 0xa0ae }, { 6718, 0x2660 }, { 6723, 0xdf00 },
- { 6730, 0xf010 }, { 6735, 0x7b15 }, { 6744, 0x8121 }, { 6748, 0x3ad0 },
- /* 0x9f00 */
- { 6755, 0x4180 }, { 6758, 0x0028 }, { 6760, 0x1003 }, { 6763, 0x4800 },
- { 6765, 0xcc00 }, { 6769, 0x8014 }, { 6772, 0x14cf }, { 6780, 0x00c4 },
- { 6783, 0x2000 }, { 6784, 0x3020 }, { 6787, 0x0001 },
-};
-static const Summary16 jisx0208_uni2indx_pageff[15] = {
- /* 0xff00 */
- { 6788, 0xdf7a }, { 6800, 0xffff }, { 6816, 0xffff }, { 6832, 0xefff },
- { 6847, 0xffff }, { 6863, 0x3fff }, { 6877, 0x0000 }, { 6877, 0x0000 },
- { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 },
- { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0028 },
-};
-
-static int
-jisx0208_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc < 0x0100)
- summary = &jisx0208_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x0300 && wc < 0x0460)
- summary = &jisx0208_uni2indx_page03[(wc>>4)-0x030];
- else if (wc >= 0x2000 && wc < 0x2320)
- summary = &jisx0208_uni2indx_page20[(wc>>4)-0x200];
- else if (wc >= 0x2500 && wc < 0x2670)
- summary = &jisx0208_uni2indx_page25[(wc>>4)-0x250];
- else if (wc >= 0x3000 && wc < 0x3100)
- summary = &jisx0208_uni2indx_page30[(wc>>4)-0x300];
- else if (wc >= 0x4e00 && wc < 0x9fb0)
- summary = &jisx0208_uni2indx_page4e[(wc>>4)-0x4e0];
- else if (wc >= 0xff00 && wc < 0xfff0)
- summary = &jisx0208_uni2indx_pageff[(wc>>4)-0xff0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = jisx0208_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * JISX0208.1990-0
+ */
+
+static const unsigned short jisx0208_2uni_page21[690] = {
+ /* 0x21 */
+ 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b,
+ 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e,
+ 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd,
+ 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c,
+ 0x301c, 0x2016, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b,
+ 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e,
+ 0x300f, 0x3010, 0x3011, 0xff0b, 0x2212, 0x00b1, 0x00d7, 0x00f7,
+ 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234,
+ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04,
+ 0x00a2, 0x00a3, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20, 0x00a7,
+ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7,
+ /* 0x22 */
+ 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b,
+ 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a,
+ 0x2229, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x2227, 0x2228, 0x00ac, 0x21d2, 0x21d4, 0x2200, 0x2203,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207,
+ 0x2261, 0x2252, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235,
+ 0x222b, 0x222c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x212b, 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021,
+ 0x00b6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x25ef,
+ /* 0x23 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
+ 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
+ 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
+ 0xff39, 0xff3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
+ 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
+ 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
+ 0xff59, 0xff5a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x24 */
+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
+ 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
+ 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x25 */
+ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
+ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
+ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
+ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
+ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
+ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
+ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
+ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
+ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
+ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
+ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x26 */
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+ 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
+ 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x28 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c,
+ 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b,
+ 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f,
+ 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542,
+};
+static const unsigned short jisx0208_2uni_page30[6398] = {
+ /* 0x30 */
+ 0x4e9c, 0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b, 0x6328, 0x59f6,
+ 0x9022, 0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1, 0x6e25, 0x65ed,
+ 0x8466, 0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1, 0x6271, 0x5b9b,
+ 0x59d0, 0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e, 0x6216, 0x7c9f,
+ 0x88b7, 0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848, 0x95c7, 0x978d,
+ 0x674f, 0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049, 0x56f2, 0x5937,
+ 0x59d4, 0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170, 0x6613, 0x6905,
+ 0x70ba, 0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def, 0x80c3, 0x840e,
+ 0x8863, 0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95, 0x4ea5, 0x57df,
+ 0x80b2, 0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2, 0x9038, 0x7a32,
+ 0x8328, 0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd, 0x54e1, 0x56e0,
+ 0x59fb, 0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d,
+ /* 0x31 */
+ 0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87, 0x70cf,
+ 0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11, 0x7893,
+ 0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b, 0x59e5,
+ 0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b, 0x96f2,
+ 0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620, 0x66f3,
+ 0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e, 0x9834,
+ 0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca, 0x99c5,
+ 0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186, 0x5712,
+ 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4, 0x6cbf,
+ 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01, 0x8276,
+ 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc, 0x6c5a,
+ 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc,
+ /* 0x32 */
+ 0x62bc, 0x65fa, 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1, 0x8956,
+ 0x9d2c, 0x9d0e, 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104, 0x5c4b,
+ 0x61b6, 0x81c6, 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378, 0x6069,
+ 0x6e29, 0x7a4f, 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55, 0x4f3d,
+ 0x4fa1, 0x4f73, 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1, 0x5bb6,
+ 0x5be1, 0x79d1, 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3, 0x706b,
+ 0x73c2, 0x798d, 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db, 0x8304,
+ 0x8377, 0x83ef, 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8, 0x8fe6,
+ 0x904e, 0x971e, 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259, 0x753b,
+ 0x81e5, 0x82bd, 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5, 0x4ecb,
+ 0x4f1a, 0x89e3, 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb, 0x602a,
+ 0x6094, 0x6062, 0x61d0, 0x6212, 0x62d0, 0x6539,
+ /* 0x33 */
+ 0x9b41, 0x6666, 0x68b0, 0x6d77, 0x7070, 0x754c, 0x7686, 0x7d75,
+ 0x82a5, 0x87f9, 0x958b, 0x968e, 0x8c9d, 0x51f1, 0x52be, 0x5916,
+ 0x54b3, 0x5bb3, 0x5d16, 0x6168, 0x6982, 0x6daf, 0x788d, 0x84cb,
+ 0x8857, 0x8a72, 0x93a7, 0x9ab8, 0x6d6c, 0x99a8, 0x86d9, 0x57a3,
+ 0x67ff, 0x86ce, 0x920e, 0x5283, 0x5687, 0x5404, 0x5ed3, 0x62e1,
+ 0x64b9, 0x683c, 0x6838, 0x6bbb, 0x7372, 0x78ba, 0x7a6b, 0x899a,
+ 0x89d2, 0x8d6b, 0x8f03, 0x90ed, 0x95a3, 0x9694, 0x9769, 0x5b66,
+ 0x5cb3, 0x697d, 0x984d, 0x984e, 0x639b, 0x7b20, 0x6a2b, 0x6a7f,
+ 0x68b6, 0x9c0d, 0x6f5f, 0x5272, 0x559d, 0x6070, 0x62ec, 0x6d3b,
+ 0x6e07, 0x6ed1, 0x845b, 0x8910, 0x8f44, 0x4e14, 0x9c39, 0x53f6,
+ 0x691b, 0x6a3a, 0x9784, 0x682a, 0x515c, 0x7ac3, 0x84b2, 0x91dc,
+ 0x938c, 0x565b, 0x9d28, 0x6822, 0x8305, 0x8431,
+ /* 0x34 */
+ 0x7ca5, 0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83, 0x51a0, 0x5bd2,
+ 0x520a, 0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a, 0x59e6, 0x5b8c,
+ 0x5b98, 0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f, 0x6163, 0x61be,
+ 0x63db, 0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e, 0x6b53, 0x6c57,
+ 0x6f22, 0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3, 0x770b, 0x7aff,
+ 0x7ba1, 0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d, 0x8266, 0x839e,
+ 0x89b3, 0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593, 0x9591, 0x95a2,
+ 0x9665, 0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b, 0x5cb8, 0x5dcc,
+ 0x73a9, 0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b, 0x96c1, 0x9811,
+ 0x9854, 0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c, 0x5668, 0x57fa,
+ 0x5947, 0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e, 0x5fcc, 0x63ee,
+ 0x673a, 0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4,
+ /* 0x35 */
+ 0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948, 0x5b63,
+ 0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77, 0x8ecc,
+ 0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100, 0x5993,
+ 0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591, 0x7947,
+ 0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0, 0x5409,
+ 0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775, 0x9ecd,
+ 0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45, 0x4ec7,
+ 0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551, 0x673d,
+ 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae, 0x7b08,
+ 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45, 0x5de8,
+ 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd, 0x92f8,
+ 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac,
+ /* 0x36 */
+ 0x4f9b, 0x4fa0, 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6, 0x5354,
+ 0x5321, 0x537f, 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37, 0x5f4a,
+ 0x602f, 0x6050, 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1, 0x72c2,
+ 0x72ed, 0x77ef, 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7, 0x93e1,
+ 0x97ff, 0x9957, 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681, 0x696d,
+ 0x5c40, 0x66f2, 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5, 0x52e4,
+ 0x5747, 0x5dfe, 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434, 0x7981,
+ 0x79bd, 0x7b4b, 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f, 0x8b39,
+ 0x8fd1, 0x91d1, 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5, 0x533a,
+ 0x72d7, 0x7396, 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8, 0x99d2,
+ 0x5177, 0x611a, 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3, 0x9047,
+ 0x9685, 0x4e32, 0x6adb, 0x91e7, 0x5c51, 0x5c48,
+ /* 0x37 */
+ 0x6398, 0x7a9f, 0x6c93, 0x9774, 0x8f61, 0x7aaa, 0x718a, 0x9688,
+ 0x7c82, 0x6817, 0x7e70, 0x6851, 0x936c, 0x52f2, 0x541b, 0x85ab,
+ 0x8a13, 0x7fa4, 0x8ecd, 0x90e1, 0x5366, 0x8888, 0x7941, 0x4fc2,
+ 0x50be, 0x5211, 0x5144, 0x5553, 0x572d, 0x73ea, 0x578b, 0x5951,
+ 0x5f62, 0x5f84, 0x6075, 0x6176, 0x6167, 0x61a9, 0x63b2, 0x643a,
+ 0x656c, 0x666f, 0x6842, 0x6e13, 0x7566, 0x7a3d, 0x7cfb, 0x7d4c,
+ 0x7d99, 0x7e4b, 0x7f6b, 0x830e, 0x834a, 0x86cd, 0x8a08, 0x8a63,
+ 0x8b66, 0x8efd, 0x981a, 0x9d8f, 0x82b8, 0x8fce, 0x9be8, 0x5287,
+ 0x621f, 0x6483, 0x6fc0, 0x9699, 0x6841, 0x5091, 0x6b20, 0x6c7a,
+ 0x6f54, 0x7a74, 0x7d50, 0x8840, 0x8a23, 0x6708, 0x4ef6, 0x5039,
+ 0x5026, 0x5065, 0x517c, 0x5238, 0x5263, 0x55a7, 0x570f, 0x5805,
+ 0x5acc, 0x5efa, 0x61b2, 0x61f8, 0x62f3, 0x6372,
+ /* 0x38 */
+ 0x691c, 0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814, 0x786f, 0x7d79,
+ 0x770c, 0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2, 0x9063, 0x9375,
+ 0x967a, 0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f, 0x53b3, 0x5e7b,
+ 0x5f26, 0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43, 0x8237, 0x8a00,
+ 0x8afa, 0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c, 0x56fa, 0x59d1,
+ 0x5b64, 0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545, 0x67af, 0x6e56,
+ 0x72d0, 0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0, 0x864e, 0x8a87,
+ 0x8de8, 0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94, 0x4e92, 0x4f0d,
+ 0x5348, 0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1, 0x609f, 0x68a7,
+ 0x6a8e, 0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77, 0x9190, 0x4e5e,
+ 0x9bc9, 0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016, 0x5149, 0x516c,
+ 0x529f, 0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411,
+ /* 0x39 */
+ 0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d, 0x5b8f,
+ 0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7, 0x5f18,
+ 0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602, 0x6643,
+ 0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a, 0x6d69,
+ 0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0, 0x7d05,
+ 0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1, 0x8154,
+ 0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2, 0x8cfc,
+ 0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d, 0x9805,
+ 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408, 0x58d5,
+ 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b, 0x544a,
+ 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09, 0x8170,
+ 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc,
+ /* 0x3a */
+ 0x6b64, 0x9803, 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a, 0x6068,
+ 0x61c7, 0x660f, 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5, 0x7d3a,
+ 0x826e, 0x9b42, 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f, 0x5de6,
+ 0x5dee, 0x67fb, 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396, 0x88df,
+ 0x5750, 0x5ea7, 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700, 0x54c9,
+ 0x585e, 0x59bb, 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d, 0x6b73,
+ 0x6e08, 0x707d, 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d, 0x658e,
+ 0x7d30, 0x83dc, 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728, 0x6750,
+ 0x7f6a, 0x8ca1, 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a, 0x80b4,
+ 0x54b2, 0x5d0e, 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a, 0x548b,
+ 0x643e, 0x6628, 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22, 0x932f,
+ 0x685c, 0x9bad, 0x7b39, 0x5319, 0x518a, 0x5237,
+ /* 0x3b */
+ 0x5bdf, 0x62f6, 0x64ae, 0x64e6, 0x672d, 0x6bba, 0x85a9, 0x96d1,
+ 0x7690, 0x9bd6, 0x634c, 0x9306, 0x9bab, 0x76bf, 0x6652, 0x4e09,
+ 0x5098, 0x53c2, 0x5c71, 0x60e8, 0x6492, 0x6563, 0x685f, 0x71e6,
+ 0x73ca, 0x7523, 0x7b97, 0x7e82, 0x8695, 0x8b83, 0x8cdb, 0x9178,
+ 0x9910, 0x65ac, 0x66ab, 0x6b8b, 0x4ed5, 0x4ed4, 0x4f3a, 0x4f7f,
+ 0x523a, 0x53f8, 0x53f2, 0x55e3, 0x56db, 0x58eb, 0x59cb, 0x59c9,
+ 0x59ff, 0x5b50, 0x5c4d, 0x5e02, 0x5e2b, 0x5fd7, 0x601d, 0x6307,
+ 0x652f, 0x5b5c, 0x65af, 0x65bd, 0x65e8, 0x679d, 0x6b62, 0x6b7b,
+ 0x6c0f, 0x7345, 0x7949, 0x79c1, 0x7cf8, 0x7d19, 0x7d2b, 0x80a2,
+ 0x8102, 0x81f3, 0x8996, 0x8a5e, 0x8a69, 0x8a66, 0x8a8c, 0x8aee,
+ 0x8cc7, 0x8cdc, 0x96cc, 0x98fc, 0x6b6f, 0x4e8b, 0x4f3c, 0x4f8d,
+ 0x5150, 0x5b57, 0x5bfa, 0x6148, 0x6301, 0x6642,
+ /* 0x3c */
+ 0x6b21, 0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4, 0x78c1, 0x793a,
+ 0x800c, 0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50, 0x9e7f, 0x5f0f,
+ 0x8b58, 0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb, 0x4e03, 0x53f1,
+ 0x57f7, 0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f, 0x6f06, 0x75be,
+ 0x8cea, 0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4, 0x829d, 0x5c61,
+ 0x854a, 0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368, 0x8d66, 0x659c,
+ 0x716e, 0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca, 0x906e, 0x86c7,
+ 0x90aa, 0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c, 0x7235, 0x914c,
+ 0x91c8, 0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9, 0x4e3b, 0x53d6,
+ 0x5b88, 0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0, 0x7a2e, 0x816b,
+ 0x8da3, 0x9152, 0x9996, 0x5112, 0x53d7, 0x546a, 0x5bff, 0x6388,
+ 0x6a39, 0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468,
+ /* 0x3d */
+ 0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32, 0x79c0,
+ 0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490, 0x8846,
+ 0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c, 0x96c6,
+ 0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e, 0x67d4,
+ 0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4, 0x5919,
+ 0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f, 0x51fa,
+ 0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3, 0x821c,
+ 0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3, 0x6e96,
+ 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806, 0x51e6,
+ 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2, 0x7f72,
+ 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973, 0x5e8f,
+ 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f,
+ /* 0x3e */
+ 0x52dd, 0x5320, 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531, 0x5617,
+ 0x5968, 0x59be, 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11, 0x5c1a,
+ 0x5e84, 0x5e8a, 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db, 0x638c,
+ 0x6377, 0x6607, 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2, 0x6a1f,
+ 0x6a35, 0x6cbc, 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126, 0x7167,
+ 0x75c7, 0x7701, 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0, 0x7b11,
+ 0x7ca7, 0x7d39, 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d, 0x88f3,
+ 0x8a1f, 0x8a3c, 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4, 0x9266,
+ 0x937e, 0x9418, 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e, 0x4e57,
+ 0x5197, 0x5270, 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38, 0x60c5,
+ 0x64fe, 0x6761, 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63, 0x84b8,
+ 0x8b72, 0x91b8, 0x9320, 0x5631, 0x57f4, 0x98fe,
+ /* 0x3f */
+ 0x62ed, 0x690d, 0x6b96, 0x71ed, 0x7e54, 0x8077, 0x8272, 0x89e6,
+ 0x98df, 0x8755, 0x8fb1, 0x5c3b, 0x4f38, 0x4fe1, 0x4fb5, 0x5507,
+ 0x5a20, 0x5bdd, 0x5be9, 0x5fc3, 0x614e, 0x632f, 0x65b0, 0x664b,
+ 0x68ee, 0x699b, 0x6d78, 0x6df1, 0x7533, 0x75b9, 0x771f, 0x795e,
+ 0x79e6, 0x7d33, 0x81e3, 0x82af, 0x85aa, 0x89aa, 0x8a3a, 0x8eab,
+ 0x8f9b, 0x9032, 0x91dd, 0x9707, 0x4eba, 0x4ec1, 0x5203, 0x5875,
+ 0x58ec, 0x5c0b, 0x751a, 0x5c3d, 0x814e, 0x8a0a, 0x8fc5, 0x9663,
+ 0x976d, 0x7b25, 0x8acf, 0x9808, 0x9162, 0x56f3, 0x53a8, 0x9017,
+ 0x5439, 0x5782, 0x5e25, 0x63a8, 0x6c34, 0x708a, 0x7761, 0x7c8b,
+ 0x7fe0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968f, 0x745e,
+ 0x9ac4, 0x5d07, 0x5d69, 0x6570, 0x67a2, 0x8da8, 0x96db, 0x636e,
+ 0x6749, 0x6919, 0x83c5, 0x9817, 0x96c0, 0x88fe,
+ /* 0x40 */
+ 0x6f84, 0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d, 0x662f, 0x51c4,
+ 0x5236, 0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210, 0x653f, 0x6574,
+ 0x661f, 0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05, 0x7272, 0x751f,
+ 0x76db, 0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f, 0x8aa0, 0x8a93,
+ 0x8acb, 0x901d, 0x9192, 0x9752, 0x9759, 0x6589, 0x7a0e, 0x8106,
+ 0x96bb, 0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614, 0x6790, 0x77f3,
+ 0x7a4d, 0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64, 0x8de1, 0x8e5f,
+ 0x78a9, 0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298, 0x8a2d, 0x7a83,
+ 0x7bc0, 0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749, 0x4ed9, 0x5148,
+ 0x5343, 0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd, 0x6226, 0x6247,
+ 0x64b0, 0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17, 0x67d3, 0x6f5c,
+ 0x714e, 0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda,
+ /* 0x41 */
+ 0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e, 0x8cce,
+ 0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae, 0x524d,
+ 0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3, 0x7cce,
+ 0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a, 0x72d9,
+ 0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20, 0x7d44,
+ 0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275, 0x53cc,
+ 0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b, 0x5c64,
+ 0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb, 0x64cd,
+ 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5, 0x4e89,
+ 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061, 0x8349,
+ 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001, 0x906d,
+ 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e,
+ /* 0x42 */
+ 0x81d3, 0x8535, 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247, 0x5373,
+ 0x606f, 0x6349, 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7, 0x5c5e,
+ 0x8cca, 0x65cf, 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3, 0x5b58,
+ 0x5b6b, 0x5c0a, 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a, 0x592a,
+ 0x6c70, 0x8a51, 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253, 0x67c1,
+ 0x8235, 0x6955, 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806, 0x5bfe,
+ 0x8010, 0x5cb1, 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234, 0x66ff,
+ 0x6cf0, 0x6ede, 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8, 0x9000,
+ 0x902e, 0x968a, 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927, 0x7b2c,
+ 0x918d, 0x984c, 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544, 0x5b85,
+ 0x6258, 0x629e, 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17, 0x9438,
+ 0x6fc1, 0x8afe, 0x8338, 0x51e7, 0x86f8, 0x53ea,
+ /* 0x43 */
+ 0x53e9, 0x4f46, 0x9054, 0x8fb0, 0x596a, 0x8131, 0x5dfd, 0x7aea,
+ 0x8fbf, 0x68da, 0x8c37, 0x72f8, 0x9c48, 0x6a3d, 0x8ab0, 0x4e39,
+ 0x5358, 0x5606, 0x5766, 0x62c5, 0x63a2, 0x65e6, 0x6b4e, 0x6de1,
+ 0x6e5b, 0x70ad, 0x77ed, 0x7aef, 0x7baa, 0x7dbb, 0x803d, 0x80c6,
+ 0x86cb, 0x8a95, 0x935b, 0x56e3, 0x58c7, 0x5f3e, 0x65ad, 0x6696,
+ 0x6a80, 0x6bb5, 0x7537, 0x8ac7, 0x5024, 0x77e5, 0x5730, 0x5f1b,
+ 0x6065, 0x667a, 0x6c60, 0x75f4, 0x7a1a, 0x7f6e, 0x81f4, 0x8718,
+ 0x9045, 0x99b3, 0x7bc9, 0x755c, 0x7af9, 0x7b51, 0x84c4, 0x9010,
+ 0x79e9, 0x7a92, 0x8336, 0x5ae1, 0x7740, 0x4e2d, 0x4ef2, 0x5b99,
+ 0x5fe0, 0x62bd, 0x663c, 0x67f1, 0x6ce8, 0x866b, 0x8877, 0x8a3b,
+ 0x914e, 0x92f3, 0x99d0, 0x6a17, 0x7026, 0x732a, 0x82e7, 0x8457,
+ 0x8caf, 0x4e01, 0x5146, 0x51cb, 0x558b, 0x5bf5,
+ /* 0x44 */
+ 0x5e16, 0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b, 0x5fb4, 0x61f2,
+ 0x6311, 0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a, 0x773a, 0x8074,
+ 0x8139, 0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85, 0x8df3, 0x929a,
+ 0x9577, 0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4, 0x6715, 0x6c88,
+ 0x73cd, 0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c, 0x690e, 0x69cc,
+ 0x8ffd, 0x939a, 0x75db, 0x901a, 0x585a, 0x6802, 0x63b4, 0x69fb,
+ 0x4f43, 0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4, 0x9354, 0x693f,
+ 0x6f70, 0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a, 0x540a, 0x91e3,
+ 0x9db4, 0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243, 0x8c9e, 0x5448,
+ 0x5824, 0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7, 0x5f1f, 0x608c,
+ 0x62b5, 0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887, 0x798e, 0x7a0b,
+ 0x7de0, 0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013,
+ /* 0x45 */
+ 0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2, 0x6575,
+ 0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2, 0x5fb9,
+ 0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929, 0x5c55,
+ 0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b, 0x70b9,
+ 0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410, 0x5835,
+ 0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21, 0x767b,
+ 0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a, 0x52aa,
+ 0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac, 0x51cd,
+ 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6, 0x5d8b,
+ 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df, 0x76d7,
+ 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8, 0x7977,
+ 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230,
+ /* 0x46 */
+ 0x8463, 0x8569, 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f, 0x9003,
+ 0x900f, 0x9419, 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd, 0x52d5,
+ 0x540c, 0x5802, 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3, 0x7ae5,
+ 0x80f4, 0x8404, 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f, 0x5f97,
+ 0x5fb3, 0x6d9c, 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2, 0x72ec,
+ 0x8aad, 0x6803, 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a, 0x9cf6,
+ 0x82eb, 0x5bc5, 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7, 0x6566,
+ 0x6c8c, 0x8c5a, 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d, 0x5948,
+ 0x90a3, 0x5185, 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058, 0x637a,
+ 0x934b, 0x6962, 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960, 0x8edf,
+ 0x96e3, 0x6c5d, 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302, 0x8cd1,
+ 0x8089, 0x8679, 0x5eff, 0x65e5, 0x4e73, 0x5165,
+ /* 0x47 */
+ 0x5982, 0x5c3f, 0x97ee, 0x4efb, 0x598a, 0x5fcd, 0x8a8d, 0x6fe1,
+ 0x79b0, 0x7962, 0x5be7, 0x8471, 0x732b, 0x71b1, 0x5e74, 0x5ff5,
+ 0x637b, 0x649a, 0x71c3, 0x7c98, 0x4e43, 0x5efc, 0x4e4b, 0x57dc,
+ 0x56a2, 0x60a9, 0x6fc3, 0x7d0d, 0x80fd, 0x8133, 0x81bf, 0x8fb2,
+ 0x8997, 0x86a4, 0x5df4, 0x628a, 0x64ad, 0x8987, 0x6777, 0x6ce2,
+ 0x6d3e, 0x7436, 0x7834, 0x5a46, 0x7f75, 0x82ad, 0x99ac, 0x4ff3,
+ 0x5ec3, 0x62dd, 0x6392, 0x6557, 0x676f, 0x76c3, 0x724c, 0x80cc,
+ 0x80ba, 0x8f29, 0x914d, 0x500d, 0x57f9, 0x5a92, 0x6885, 0x6973,
+ 0x7164, 0x72fd, 0x8cb7, 0x58f2, 0x8ce0, 0x966a, 0x9019, 0x877f,
+ 0x79e4, 0x77e7, 0x8429, 0x4f2f, 0x5265, 0x535a, 0x62cd, 0x67cf,
+ 0x6cca, 0x767d, 0x7b94, 0x7c95, 0x8236, 0x8584, 0x8feb, 0x66dd,
+ 0x6f20, 0x7206, 0x7e1b, 0x83ab, 0x99c1, 0x9ea6,
+ /* 0x48 */
+ 0x51fd, 0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48, 0x6ae8, 0x5e61,
+ 0x808c, 0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c, 0x767a, 0x9197,
+ 0x9aea, 0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5, 0x9ce9, 0x567a,
+ 0x5859, 0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a, 0x53cd, 0x53db,
+ 0x5e06, 0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e, 0x7248, 0x72af,
+ 0x73ed, 0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9, 0x7bc4, 0x91c6,
+ 0x7169, 0x9812, 0x98ef, 0x633d, 0x6669, 0x756a, 0x76e4, 0x78d0,
+ 0x8543, 0x86ee, 0x532a, 0x5351, 0x5426, 0x5983, 0x5e87, 0x5f7c,
+ 0x60b2, 0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4, 0x6ccc, 0x75b2,
+ 0x76ae, 0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5, 0x88ab, 0x8ab9,
+ 0x8cbb, 0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38, 0x5099, 0x5c3e,
+ 0x5fae, 0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e,
+ /* 0x49 */
+ 0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66, 0x819d,
+ 0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c, 0x6867,
+ 0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a, 0x6a19,
+ 0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79, 0x5edf,
+ 0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c, 0x86ed,
+ 0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7, 0x8cd3,
+ 0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b, 0x5a66,
+ 0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577, 0x65a7,
+ 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299, 0x8b5c,
+ 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab, 0x6b66,
+ 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8, 0x847a,
+ 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d,
+ /* 0x4a */
+ 0x798f, 0x8179, 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255, 0x6cb8,
+ 0x4ecf, 0x7269, 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3, 0x61a4,
+ 0x626e, 0x711a, 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0, 0x6587,
+ 0x805e, 0x4e19, 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73, 0x5f0a,
+ 0x67c4, 0x4e26, 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801, 0x50fb,
+ 0x58c1, 0x7656, 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86, 0x504f,
+ 0x5909, 0x7247, 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d, 0x4fbf,
+ 0x52c9, 0x5a29, 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea, 0x5703,
+ 0x6355, 0x6b69, 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df, 0x5893,
+ 0x6155, 0x620a, 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023, 0x4ff8,
+ 0x5305, 0x5446, 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef, 0x5d29,
+ 0x5e96, 0x62b1, 0x6367, 0x653e, 0x65b9, 0x670b,
+ /* 0x4b */
+ 0x6cd5, 0x6ce1, 0x70f9, 0x7832, 0x7e2b, 0x80de, 0x82b3, 0x840c,
+ 0x84ec, 0x8702, 0x8912, 0x8a2a, 0x8c4a, 0x90a6, 0x92d2, 0x98fd,
+ 0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1, 0x508d, 0x5256, 0x574a, 0x59a8,
+ 0x5e3d, 0x5fd8, 0x5fd9, 0x623f, 0x66b4, 0x671b, 0x67d0, 0x68d2,
+ 0x5192, 0x7d21, 0x80aa, 0x81a8, 0x8b00, 0x8c8c, 0x8cbf, 0x927e,
+ 0x9632, 0x5420, 0x982c, 0x5317, 0x50d5, 0x535c, 0x58a8, 0x64b2,
+ 0x6734, 0x7267, 0x7766, 0x7a46, 0x91e6, 0x52c3, 0x6ca1, 0x6b86,
+ 0x5800, 0x5e4c, 0x5954, 0x672c, 0x7ffb, 0x51e1, 0x76c6, 0x6469,
+ 0x78e8, 0x9b54, 0x9ebb, 0x57cb, 0x59b9, 0x6627, 0x679a, 0x6bce,
+ 0x54e9, 0x69d9, 0x5e55, 0x819c, 0x6795, 0x9baa, 0x67fe, 0x9c52,
+ 0x685d, 0x4ea6, 0x4fe3, 0x53c8, 0x62b9, 0x672b, 0x6cab, 0x8fc4,
+ 0x4fad, 0x7e6d, 0x9ebf, 0x4e07, 0x6162, 0x6e80,
+ /* 0x4c */
+ 0x6f2b, 0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3, 0x7b95, 0x5cac,
+ 0x5bc6, 0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108, 0x5999, 0x7c8d,
+ 0x6c11, 0x7720, 0x52d9, 0x5922, 0x7121, 0x725f, 0x77db, 0x9727,
+ 0x9d61, 0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d, 0x547d, 0x660e,
+ 0x76df, 0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d, 0x6ec5, 0x514d,
+ 0x68c9, 0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478, 0x6a21, 0x8302,
+ 0x5984, 0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2, 0x8017, 0x8499,
+ 0x5132, 0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff, 0x9905, 0x5c24,
+ 0x623b, 0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b, 0x9580, 0x5301,
+ 0x4e5f, 0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce, 0x5f25, 0x77e2,
+ 0x5384, 0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d, 0x9756, 0x67f3,
+ 0x85ae, 0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652,
+ /* 0x4d */
+ 0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb, 0x5ba5,
+ 0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67, 0x6d8c,
+ 0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a, 0x9091,
+ 0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e, 0x8a89,
+ 0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8, 0x63da,
+ 0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6, 0x7194,
+ 0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981, 0x8b21,
+ 0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32, 0x6c83,
+ 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8, 0x6765,
+ 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a, 0x4e71,
+ 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7, 0x5229,
+ 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483,
+ /* 0x4e */
+ 0x75e2, 0x88cf, 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b, 0x7387,
+ 0x7acb, 0x844e, 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c, 0x7409,
+ 0x7559, 0x786b, 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6, 0x616e,
+ 0x65c5, 0x865c, 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc, 0x5bee,
+ 0x6599, 0x6881, 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c, 0x7ce7,
+ 0x826f, 0x8ad2, 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b, 0x7dd1,
+ 0x502b, 0x5398, 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8, 0x8f2a,
+ 0x96a3, 0x9c57, 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f, 0x985e,
+ 0x4ee4, 0x4f36, 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c, 0x73b2,
+ 0x793c, 0x82d3, 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97, 0x9f62,
+ 0x66a6, 0x6b74, 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9, 0x604b,
+ 0x6190, 0x6f23, 0x7149, 0x7c3e, 0x7df4, 0x806f,
+ /* 0x4f */
+ 0x84ee, 0x9023, 0x932c, 0x5442, 0x9b6f, 0x6ad3, 0x7089, 0x8cc2,
+ 0x8def, 0x9732, 0x52b4, 0x5a41, 0x5eca, 0x5f04, 0x6717, 0x697c,
+ 0x6994, 0x6d6a, 0x6f0f, 0x7262, 0x72fc, 0x7bed, 0x8001, 0x807e,
+ 0x874b, 0x90ce, 0x516d, 0x9e93, 0x7984, 0x808b, 0x9332, 0x8ad6,
+ 0x502d, 0x548c, 0x8a71, 0x6b6a, 0x8cc4, 0x8107, 0x60d1, 0x67a0,
+ 0x9df2, 0x4e99, 0x4e98, 0x9c10, 0x8a6b, 0x85c1, 0x8568, 0x6900,
+ 0x6e7e, 0x7897, 0x8155, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x50 */
+ 0x5f0c, 0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36, 0x4e3c, 0x4e3f,
+ 0x4e42, 0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b, 0x4e8a, 0x8212,
+ 0x5f0d, 0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2, 0x4eb0, 0x4eb3,
+ 0x4eb6, 0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2, 0x4ed7, 0x4ede,
+ 0x4eed, 0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30, 0x4f5b, 0x4f5d,
+ 0x4f57, 0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98, 0x4f7b, 0x4f69,
+ 0x4f70, 0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118, 0x4fd4, 0x4fdf,
+ 0x4fce, 0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0, 0x4fe4, 0x4fe5,
+ 0x501a, 0x5028, 0x5014, 0x502a, 0x5025, 0x5005, 0x4f1c, 0x4ff6,
+ 0x5021, 0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011, 0x5006, 0x5043,
+ 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505a, 0x5056, 0x506c,
+ 0x5078, 0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2,
+ /* 0x51 */
+ 0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5, 0x50ed,
+ 0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102, 0x5116,
+ 0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c, 0x513b,
+ 0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8, 0x5169,
+ 0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189, 0x518f,
+ 0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2, 0x51a9,
+ 0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5, 0x51bd,
+ 0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed, 0x51f0,
+ 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227, 0x522a,
+ 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c, 0x525e,
+ 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d, 0x528d,
+ 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8,
+ /* 0x52 */
+ 0x8fa7, 0x52ac, 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd, 0x52d7,
+ 0x52de, 0x52e3, 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5, 0x52f8,
+ 0x52f9, 0x5306, 0x5308, 0x7538, 0x530d, 0x5310, 0x530f, 0x5315,
+ 0x531a, 0x5323, 0x532f, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346,
+ 0x5345, 0x4e17, 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369, 0x536e,
+ 0x5918, 0x537b, 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6, 0x53a5,
+ 0x53ae, 0x53b0, 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df, 0x66fc,
+ 0x71ee, 0x53ee, 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d, 0x5440,
+ 0x542c, 0x542d, 0x543c, 0x542e, 0x5436, 0x5429, 0x541d, 0x544e,
+ 0x548f, 0x5475, 0x548e, 0x545f, 0x5471, 0x5477, 0x5470, 0x5492,
+ 0x547b, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7, 0x54a2,
+ 0x54b8, 0x54a5, 0x54ac, 0x54c4, 0x54c8, 0x54a8,
+ /* 0x53 */
+ 0x54ab, 0x54c2, 0x54a4, 0x54be, 0x54bc, 0x54d8, 0x54e5, 0x54e6,
+ 0x550f, 0x5514, 0x54fd, 0x54ee, 0x54ed, 0x54fa, 0x54e2, 0x5539,
+ 0x5540, 0x5563, 0x554c, 0x552e, 0x555c, 0x5545, 0x5556, 0x5557,
+ 0x5538, 0x5533, 0x555d, 0x5599, 0x5580, 0x54af, 0x558a, 0x559f,
+ 0x557b, 0x557e, 0x5598, 0x559e, 0x55ae, 0x557c, 0x5583, 0x55a9,
+ 0x5587, 0x55a8, 0x55da, 0x55c5, 0x55df, 0x55c4, 0x55dc, 0x55e4,
+ 0x55d4, 0x5614, 0x55f7, 0x5616, 0x55fe, 0x55fd, 0x561b, 0x55f9,
+ 0x564e, 0x5650, 0x71df, 0x5634, 0x5636, 0x5632, 0x5638, 0x566b,
+ 0x5664, 0x562f, 0x566c, 0x566a, 0x5686, 0x5680, 0x568a, 0x56a0,
+ 0x5694, 0x568f, 0x56a5, 0x56ae, 0x56b6, 0x56b4, 0x56c2, 0x56bc,
+ 0x56c1, 0x56c3, 0x56c0, 0x56c8, 0x56ce, 0x56d1, 0x56d3, 0x56d7,
+ 0x56ee, 0x56f9, 0x5700, 0x56ff, 0x5704, 0x5709,
+ /* 0x54 */
+ 0x5708, 0x570b, 0x570d, 0x5713, 0x5718, 0x5716, 0x55c7, 0x571c,
+ 0x5726, 0x5737, 0x5738, 0x574e, 0x573b, 0x5740, 0x574f, 0x5769,
+ 0x57c0, 0x5788, 0x5761, 0x577f, 0x5789, 0x5793, 0x57a0, 0x57b3,
+ 0x57a4, 0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4, 0x57d2, 0x57d3,
+ 0x580a, 0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d, 0x5872, 0x5821,
+ 0x5862, 0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d, 0x5879, 0x5885,
+ 0x58b9, 0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb, 0x58b8, 0x58ae,
+ 0x58c5, 0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8, 0x58e5, 0x58dc,
+ 0x58e4, 0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb, 0x58fc, 0x58fd,
+ 0x5902, 0x590a, 0x5910, 0x591b, 0x68a6, 0x5925, 0x592c, 0x592d,
+ 0x5932, 0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950, 0x594e, 0x595a,
+ 0x5958, 0x5962, 0x5960, 0x5967, 0x596c, 0x5969,
+ /* 0x55 */
+ 0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2, 0x59c6,
+ 0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f, 0x5a11,
+ 0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35, 0x5a36,
+ 0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2, 0x5abd,
+ 0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb, 0x5b0c,
+ 0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e, 0x5b43,
+ 0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65, 0x5b69,
+ 0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80, 0x5b83,
+ 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0, 0x5be4,
+ 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6, 0x5bf3,
+ 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22, 0x5c28,
+ 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53,
+ /* 0x56 */
+ 0x5c50, 0x5c4f, 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76, 0x5c79,
+ 0x5c8c, 0x5c91, 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6, 0x5cbc,
+ 0x5cb7, 0x5cc5, 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd, 0x5cfa,
+ 0x5ced, 0x5d8c, 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c, 0x5d1f,
+ 0x5d1b, 0x5d11, 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18, 0x5d4c,
+ 0x5d52, 0x5d4e, 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87, 0x5d84,
+ 0x5d82, 0x5da2, 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90, 0x5db7,
+ 0x5dbc, 0x5dc9, 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb, 0x5deb,
+ 0x5df2, 0x5df5, 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b, 0x5e36,
+ 0x5e37, 0x5e44, 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54, 0x5e5f,
+ 0x5e62, 0x5e64, 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc, 0x5e7f,
+ 0x5ea0, 0x5ec1, 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf,
+ /* 0x57 */
+ 0x5ed6, 0x5ee3, 0x5edd, 0x5eda, 0x5edb, 0x5ee2, 0x5ee1, 0x5ee8,
+ 0x5ee9, 0x5eec, 0x5ef1, 0x5ef3, 0x5ef0, 0x5ef4, 0x5ef8, 0x5efe,
+ 0x5f03, 0x5f09, 0x5f5d, 0x5f5c, 0x5f0b, 0x5f11, 0x5f16, 0x5f29,
+ 0x5f2d, 0x5f38, 0x5f41, 0x5f48, 0x5f4c, 0x5f4e, 0x5f2f, 0x5f51,
+ 0x5f56, 0x5f57, 0x5f59, 0x5f61, 0x5f6d, 0x5f73, 0x5f77, 0x5f83,
+ 0x5f82, 0x5f7f, 0x5f8a, 0x5f88, 0x5f91, 0x5f87, 0x5f9e, 0x5f99,
+ 0x5f98, 0x5fa0, 0x5fa8, 0x5fad, 0x5fbc, 0x5fd6, 0x5ffb, 0x5fe4,
+ 0x5ff8, 0x5ff1, 0x5fdd, 0x60b3, 0x5fff, 0x6021, 0x6060, 0x6019,
+ 0x6010, 0x6029, 0x600e, 0x6031, 0x601b, 0x6015, 0x602b, 0x6026,
+ 0x600f, 0x603a, 0x605a, 0x6041, 0x606a, 0x6077, 0x605f, 0x604a,
+ 0x6046, 0x604d, 0x6063, 0x6043, 0x6064, 0x6042, 0x606c, 0x606b,
+ 0x6059, 0x6081, 0x608d, 0x60e7, 0x6083, 0x609a,
+ /* 0x58 */
+ 0x6084, 0x609b, 0x6096, 0x6097, 0x6092, 0x60a7, 0x608b, 0x60e1,
+ 0x60b8, 0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd, 0x60c6, 0x60b5,
+ 0x60d8, 0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7, 0x6100, 0x60f4,
+ 0x60fa, 0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d, 0x610e, 0x6147,
+ 0x613e, 0x6128, 0x6127, 0x614a, 0x613f, 0x613c, 0x612c, 0x6134,
+ 0x613d, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615a,
+ 0x616b, 0x6174, 0x616f, 0x6165, 0x6171, 0x615f, 0x615d, 0x6153,
+ 0x6175, 0x6199, 0x6196, 0x6187, 0x61ac, 0x6194, 0x619a, 0x618a,
+ 0x6191, 0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9, 0x61f7, 0x61c8,
+ 0x61c3, 0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd, 0x61e6, 0x61e3,
+ 0x61f6, 0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc, 0x61fe, 0x6200,
+ 0x6208, 0x6209, 0x620d, 0x620c, 0x6214, 0x621b,
+ /* 0x59 */
+ 0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233, 0x6241,
+ 0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c, 0x6282,
+ 0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283, 0x6294,
+ 0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4, 0x62c8,
+ 0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9, 0x630c,
+ 0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5, 0x6350,
+ 0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380, 0x63ab,
+ 0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b, 0x6369,
+ 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2, 0x63f6,
+ 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651d,
+ 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e, 0x652a,
+ 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc,
+ /* 0x5a */
+ 0x64da, 0x64d2, 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2, 0x64f1,
+ 0x64e7, 0x8209, 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef, 0x652c,
+ 0x64f6, 0x64f4, 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518, 0x651c,
+ 0x6505, 0x6524, 0x6523, 0x652b, 0x6534, 0x6535, 0x6537, 0x6536,
+ 0x6538, 0x754b, 0x6548, 0x6556, 0x6555, 0x654d, 0x6558, 0x655e,
+ 0x655d, 0x6572, 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b, 0x659f,
+ 0x65ab, 0x65b7, 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc, 0x65d2,
+ 0x65db, 0x65d9, 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a, 0x6603,
+ 0x65fb, 0x6773, 0x6635, 0x6636, 0x6634, 0x661c, 0x664f, 0x6644,
+ 0x6649, 0x6641, 0x665e, 0x665d, 0x6664, 0x6667, 0x6668, 0x665f,
+ 0x6662, 0x6670, 0x6683, 0x6688, 0x668e, 0x6689, 0x6684, 0x6698,
+ 0x669d, 0x66c1, 0x66b9, 0x66c9, 0x66be, 0x66bc,
+ /* 0x5b */
+ 0x66c4, 0x66b8, 0x66d6, 0x66da, 0x66e0, 0x663f, 0x66e6, 0x66e9,
+ 0x66f0, 0x66f5, 0x66f7, 0x670f, 0x6716, 0x671e, 0x6726, 0x6727,
+ 0x9738, 0x672e, 0x673f, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746,
+ 0x675e, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67a9,
+ 0x677c, 0x676a, 0x678c, 0x678b, 0x67a6, 0x67a1, 0x6785, 0x67b7,
+ 0x67ef, 0x67b4, 0x67ec, 0x67b3, 0x67e9, 0x67b8, 0x67e4, 0x67de,
+ 0x67dd, 0x67e2, 0x67ee, 0x67b9, 0x67ce, 0x67c6, 0x67e7, 0x6a9c,
+ 0x681e, 0x6846, 0x6829, 0x6840, 0x684d, 0x6832, 0x684e, 0x68b3,
+ 0x682b, 0x6859, 0x6863, 0x6877, 0x687f, 0x689f, 0x688f, 0x68ad,
+ 0x6894, 0x689d, 0x689b, 0x6883, 0x6aae, 0x68b9, 0x6874, 0x68b5,
+ 0x68a0, 0x68ba, 0x690f, 0x688d, 0x687e, 0x6901, 0x68ca, 0x6908,
+ 0x68d8, 0x6922, 0x6926, 0x68e1, 0x690c, 0x68cd,
+ /* 0x5c */
+ 0x68d4, 0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904, 0x68d7, 0x68e3,
+ 0x6925, 0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a, 0x691a, 0x6923,
+ 0x6921, 0x68c6, 0x6979, 0x6977, 0x695c, 0x6978, 0x696b, 0x6954,
+ 0x697e, 0x696e, 0x6939, 0x6974, 0x693d, 0x6959, 0x6930, 0x6961,
+ 0x695e, 0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae, 0x69d0, 0x69bf,
+ 0x69c1, 0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca, 0x69dd, 0x69bb,
+ 0x69c3, 0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c, 0x6995, 0x69b4,
+ 0x69de, 0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a, 0x69f9, 0x69f2,
+ 0x69e7, 0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14, 0x69eb, 0x6a0a,
+ 0x6a12, 0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c, 0x6a72, 0x6a36,
+ 0x6a78, 0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48, 0x6a38, 0x6a22,
+ 0x6a90, 0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3,
+ /* 0x5d */
+ 0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3, 0x6aac,
+ 0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb, 0x6b05,
+ 0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38, 0x6b37,
+ 0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50, 0x6b59,
+ 0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f, 0x6b80,
+ 0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4, 0x6baa,
+ 0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc, 0x6bc6,
+ 0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef, 0x9ebe,
+ 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e, 0x6c55,
+ 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b, 0x6c7e,
+ 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3, 0x6cbd,
+ 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe,
+ /* 0x5e */
+ 0x6cba, 0x6cdb, 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d, 0x6d36,
+ 0x6d2b, 0x6d3d, 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12, 0x6d0c,
+ 0x6d63, 0x6d93, 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e, 0x6d95,
+ 0x6fe4, 0x6d85, 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7, 0x6de6,
+ 0x6db8, 0x6dc6, 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2, 0x6dc5,
+ 0x6dfa, 0x6dd9, 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d, 0x6e6e,
+ 0x6e2e, 0x6e19, 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b, 0x6e2b,
+ 0x6e76, 0x6e4d, 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24, 0x6eff,
+ 0x6e1d, 0x6e38, 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7, 0x6ed3,
+ 0x6ebd, 0x6eaf, 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f, 0x6ea5,
+ 0x6ec2, 0x6e9f, 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8, 0x6efe,
+ 0x6f3f, 0x6ef2, 0x6f31, 0x6eef, 0x6f32, 0x6ecc,
+ /* 0x5f */
+ 0x6f3e, 0x6f13, 0x6ef7, 0x6f86, 0x6f7a, 0x6f78, 0x6f81, 0x6f80,
+ 0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d, 0x6f82, 0x6f7c, 0x6f58, 0x6f8e,
+ 0x6f91, 0x6fc2, 0x6f66, 0x6fb3, 0x6fa3, 0x6fa1, 0x6fa4, 0x6fb9,
+ 0x6fc6, 0x6faa, 0x6fdf, 0x6fd5, 0x6fec, 0x6fd4, 0x6fd8, 0x6ff1,
+ 0x6fee, 0x6fdb, 0x7009, 0x700b, 0x6ffa, 0x7011, 0x7001, 0x700f,
+ 0x6ffe, 0x701b, 0x701a, 0x6f74, 0x701d, 0x7018, 0x701f, 0x7030,
+ 0x703e, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70af, 0x70f1,
+ 0x70ac, 0x70b8, 0x70b3, 0x70ae, 0x70df, 0x70cb, 0x70dd, 0x70d9,
+ 0x7109, 0x70fd, 0x711c, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166,
+ 0x7162, 0x714c, 0x7156, 0x716c, 0x718f, 0x71fb, 0x7184, 0x7195,
+ 0x71a8, 0x71ac, 0x71d7, 0x71b9, 0x71be, 0x71d2, 0x71c9, 0x71d4,
+ 0x71ce, 0x71e0, 0x71ec, 0x71e7, 0x71f5, 0x71fc,
+ /* 0x60 */
+ 0x71f9, 0x71ff, 0x720d, 0x7210, 0x721b, 0x7228, 0x722d, 0x722c,
+ 0x7230, 0x7232, 0x723b, 0x723c, 0x723f, 0x7240, 0x7246, 0x724b,
+ 0x7258, 0x7274, 0x727e, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296,
+ 0x72a2, 0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6, 0x72c4, 0x72ce,
+ 0x72d2, 0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7, 0x500f, 0x7317,
+ 0x730a, 0x731c, 0x7316, 0x731d, 0x7334, 0x732f, 0x7329, 0x7325,
+ 0x733e, 0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a, 0x7368, 0x7370,
+ 0x7378, 0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3, 0x73ce, 0x73bb,
+ 0x73c0, 0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405, 0x746f, 0x7425,
+ 0x73f8, 0x7432, 0x743a, 0x7455, 0x743f, 0x745f, 0x7459, 0x7441,
+ 0x745c, 0x7469, 0x7470, 0x7463, 0x746a, 0x7476, 0x747e, 0x748b,
+ 0x749e, 0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1,
+ /* 0x61 */
+ 0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0, 0x74f1,
+ 0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e, 0x750d,
+ 0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544, 0x754d,
+ 0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564, 0x7567,
+ 0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758a,
+ 0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3, 0x75c2,
+ 0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1, 0x75cd,
+ 0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff, 0x75fc,
+ 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d, 0x7609,
+ 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630,
+ 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661, 0x7662,
+ 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670,
+ /* 0x62 */
+ 0x7672, 0x7676, 0x7678, 0x767c, 0x7680, 0x7683, 0x7688, 0x768b,
+ 0x768e, 0x7696, 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4, 0x76b8,
+ 0x76b9, 0x76ba, 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de, 0x76e1,
+ 0x76e5, 0x76e7, 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707, 0x7704,
+ 0x7729, 0x7724, 0x771e, 0x7725, 0x7726, 0x771b, 0x7737, 0x7738,
+ 0x7747, 0x775a, 0x7768, 0x776b, 0x775b, 0x7765, 0x777f, 0x777e,
+ 0x7779, 0x778e, 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0, 0x77b6,
+ 0x77b9, 0x77bf, 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd, 0x77d7,
+ 0x77da, 0x77dc, 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812, 0x7926,
+ 0x7820, 0x792a, 0x7845, 0x788e, 0x7874, 0x7886, 0x787c, 0x789a,
+ 0x788c, 0x78a3, 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6, 0x78cb,
+ 0x78d4, 0x78be, 0x78bc, 0x78c5, 0x78ca, 0x78ec,
+ /* 0x63 */
+ 0x78e7, 0x78da, 0x78fd, 0x78f4, 0x7907, 0x7912, 0x7911, 0x7919,
+ 0x792c, 0x792b, 0x7940, 0x7960, 0x7957, 0x795f, 0x795a, 0x7955,
+ 0x7953, 0x797a, 0x797f, 0x798a, 0x799d, 0x79a7, 0x9f4b, 0x79aa,
+ 0x79ae, 0x79b3, 0x79b9, 0x79ba, 0x79c9, 0x79d5, 0x79e7, 0x79ec,
+ 0x79e1, 0x79e3, 0x7a08, 0x7a0d, 0x7a18, 0x7a19, 0x7a20, 0x7a1f,
+ 0x7980, 0x7a31, 0x7a3b, 0x7a3e, 0x7a37, 0x7a43, 0x7a57, 0x7a49,
+ 0x7a61, 0x7a62, 0x7a69, 0x9f9d, 0x7a70, 0x7a79, 0x7a7d, 0x7a88,
+ 0x7a97, 0x7a95, 0x7a98, 0x7a96, 0x7aa9, 0x7ac8, 0x7ab0, 0x7ab6,
+ 0x7ac5, 0x7ac4, 0x7abf, 0x9083, 0x7ac7, 0x7aca, 0x7acd, 0x7acf,
+ 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada, 0x7add, 0x7ae1, 0x7ae2, 0x7ae6,
+ 0x7aed, 0x7af0, 0x7b02, 0x7b0f, 0x7b0a, 0x7b06, 0x7b33, 0x7b18,
+ 0x7b19, 0x7b1e, 0x7b35, 0x7b28, 0x7b36, 0x7b50,
+ /* 0x64 */
+ 0x7b7a, 0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45, 0x7b75, 0x7b65,
+ 0x7b74, 0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e, 0x7b9d, 0x7b98,
+ 0x7b9f, 0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92, 0x7b8f, 0x7b5d,
+ 0x7b99, 0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4, 0x7bc6, 0x7bdd,
+ 0x7be9, 0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60, 0x7c00, 0x7c07,
+ 0x7c13, 0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6, 0x7c23, 0x7c27,
+ 0x7c2a, 0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c, 0x7c43, 0x7c54,
+ 0x7c4f, 0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64, 0x7c56, 0x7c65,
+ 0x7c6c, 0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad, 0x7ca2, 0x7cab,
+ 0x7ca1, 0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae, 0x7cb9, 0x7cbd,
+ 0x7cc0, 0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc, 0x7ce2, 0x9b3b,
+ 0x7cef, 0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06,
+ /* 0x65 */
+ 0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e, 0x7d32,
+ 0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72, 0x7d68,
+ 0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f, 0x7d7d,
+ 0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd, 0x7dab,
+ 0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0, 0x7dd8,
+ 0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05, 0x7e0a,
+ 0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b, 0x7e22,
+ 0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37, 0x7e32,
+ 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a, 0x7e79,
+ 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d, 0x8fae,
+ 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93, 0x7e94,
+ 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a,
+ /* 0x66 */
+ 0x7f45, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55, 0x7f54,
+ 0x7f58, 0x7f5f, 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78, 0x7f82,
+ 0x7f86, 0x7f83, 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e, 0x7f9d,
+ 0x7f9a, 0x7fa3, 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6, 0x7fb8,
+ 0x8b71, 0x7fc5, 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1, 0x7fe6,
+ 0x7fe9, 0x7ff3, 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b, 0x8012,
+ 0x8018, 0x8019, 0x801c, 0x8021, 0x8028, 0x803f, 0x803b, 0x804a,
+ 0x8046, 0x8052, 0x8058, 0x805a, 0x805f, 0x8062, 0x8068, 0x8073,
+ 0x8072, 0x8070, 0x8076, 0x8079, 0x807d, 0x807f, 0x8084, 0x8086,
+ 0x8085, 0x809b, 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac, 0x80db,
+ 0x80e5, 0x80d9, 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109, 0x80ef,
+ 0x80f1, 0x811b, 0x8129, 0x8123, 0x812f, 0x814b,
+ /* 0x67 */
+ 0x968b, 0x8146, 0x813e, 0x8153, 0x8151, 0x80fc, 0x8171, 0x816e,
+ 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818a, 0x8180, 0x8182,
+ 0x81a0, 0x8195, 0x81a4, 0x81a3, 0x815f, 0x8193, 0x81a9, 0x81b0,
+ 0x81b5, 0x81be, 0x81b8, 0x81bd, 0x81c0, 0x81c2, 0x81ba, 0x81c9,
+ 0x81cd, 0x81d1, 0x81d9, 0x81d8, 0x81c8, 0x81da, 0x81df, 0x81e0,
+ 0x81e7, 0x81fa, 0x81fb, 0x81fe, 0x8201, 0x8202, 0x8205, 0x8207,
+ 0x820a, 0x820d, 0x8210, 0x8216, 0x8229, 0x822b, 0x8238, 0x8233,
+ 0x8240, 0x8259, 0x8258, 0x825d, 0x825a, 0x825f, 0x8264, 0x8262,
+ 0x8268, 0x826a, 0x826b, 0x822e, 0x8271, 0x8277, 0x8278, 0x827e,
+ 0x828d, 0x8292, 0x82ab, 0x829f, 0x82bb, 0x82ac, 0x82e1, 0x82e3,
+ 0x82df, 0x82d2, 0x82f4, 0x82f3, 0x82fa, 0x8393, 0x8303, 0x82fb,
+ 0x82f9, 0x82de, 0x8306, 0x82dc, 0x8309, 0x82d9,
+ /* 0x68 */
+ 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350,
+ 0x8345, 0x832f, 0x832b, 0x8317, 0x8318, 0x8385, 0x839a, 0x83aa,
+ 0x839f, 0x83a2, 0x8396, 0x8323, 0x838e, 0x8387, 0x838a, 0x837c,
+ 0x83b5, 0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8, 0x83f4, 0x8413,
+ 0x83eb, 0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b, 0x83c1, 0x83f7,
+ 0x8407, 0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420, 0x83bd, 0x8438,
+ 0x8506, 0x83fb, 0x846d, 0x842a, 0x843c, 0x855a, 0x8484, 0x8477,
+ 0x846b, 0x84ad, 0x846e, 0x8482, 0x8469, 0x8446, 0x842c, 0x846f,
+ 0x8479, 0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf, 0x849f, 0x84d9,
+ 0x84cd, 0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6, 0x84d6, 0x84a1,
+ 0x8521, 0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c, 0x851f, 0x8515,
+ 0x8514, 0x84fc, 0x8540, 0x8563, 0x8558, 0x8548,
+ /* 0x69 */
+ 0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588, 0x8591,
+ 0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587, 0x859c,
+ 0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9, 0x85d0,
+ 0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613, 0x860b,
+ 0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f, 0x864d,
+ 0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3, 0x86a9,
+ 0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6, 0x86b0,
+ 0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec, 0x86df,
+ 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86fb,
+ 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f, 0x8737,
+ 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778, 0x874c,
+ 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759,
+ /* 0x6a */
+ 0x8753, 0x8763, 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782, 0x87af,
+ 0x87cb, 0x87bd, 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4, 0x87b3,
+ 0x87c7, 0x87c6, 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f, 0x880d,
+ 0x87fe, 0x87f6, 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816, 0x8815,
+ 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883b, 0x8844,
+ 0x8842, 0x8852, 0x8859, 0x885e, 0x8862, 0x886b, 0x8881, 0x887e,
+ 0x889e, 0x8875, 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897, 0x8892,
+ 0x88ae, 0x8899, 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf, 0x88b1,
+ 0x88c3, 0x88c4, 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9, 0x8902,
+ 0x88fc, 0x88f4, 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a, 0x8913,
+ 0x8943, 0x891e, 0x8925, 0x892a, 0x892b, 0x8941, 0x8944, 0x893b,
+ 0x8936, 0x8938, 0x894c, 0x891d, 0x8960, 0x895e,
+ /* 0x6b */
+ 0x8966, 0x8964, 0x896d, 0x896a, 0x896f, 0x8974, 0x8977, 0x897e,
+ 0x8983, 0x8988, 0x898a, 0x8993, 0x8998, 0x89a1, 0x89a9, 0x89a6,
+ 0x89ac, 0x89af, 0x89b2, 0x89ba, 0x89bd, 0x89bf, 0x89c0, 0x89da,
+ 0x89dc, 0x89dd, 0x89e7, 0x89f4, 0x89f8, 0x8a03, 0x8a16, 0x8a10,
+ 0x8a0c, 0x8a1b, 0x8a1d, 0x8a25, 0x8a36, 0x8a41, 0x8a5b, 0x8a52,
+ 0x8a46, 0x8a48, 0x8a7c, 0x8a6d, 0x8a6c, 0x8a62, 0x8a85, 0x8a82,
+ 0x8a84, 0x8aa8, 0x8aa1, 0x8a91, 0x8aa5, 0x8aa6, 0x8a9a, 0x8aa3,
+ 0x8ac4, 0x8acd, 0x8ac2, 0x8ada, 0x8aeb, 0x8af3, 0x8ae7, 0x8ae4,
+ 0x8af1, 0x8b14, 0x8ae0, 0x8ae2, 0x8af7, 0x8ade, 0x8adb, 0x8b0c,
+ 0x8b07, 0x8b1a, 0x8ae1, 0x8b16, 0x8b10, 0x8b17, 0x8b20, 0x8b33,
+ 0x97ab, 0x8b26, 0x8b2b, 0x8b3e, 0x8b28, 0x8b41, 0x8b4c, 0x8b4f,
+ 0x8b4e, 0x8b49, 0x8b56, 0x8b5b, 0x8b5a, 0x8b6b,
+ /* 0x6c */
+ 0x8b5f, 0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80, 0x8b8c, 0x8b8e,
+ 0x8b92, 0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a, 0x8c41, 0x8c3f,
+ 0x8c48, 0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62, 0x8c6c, 0x8c78,
+ 0x8c7a, 0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d, 0x8c8e, 0x8c94,
+ 0x8c7c, 0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd, 0x8cb2, 0x8cb3,
+ 0x8cae, 0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3, 0x8cda, 0x8cfd,
+ 0x8cfa, 0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07, 0x8d0f, 0x8d0d,
+ 0x8d10, 0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16, 0x8d67, 0x8d6d,
+ 0x8d71, 0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe, 0x8dba, 0x8dcf,
+ 0x8dda, 0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea, 0x8deb, 0x8ddf,
+ 0x8de3, 0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d, 0x8e1e, 0x8e10,
+ 0x8e1f, 0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a,
+ /* 0x6d */
+ 0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64, 0x8e60,
+ 0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81, 0x8e87,
+ 0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94, 0x8e99,
+ 0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe, 0x8ec5,
+ 0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb, 0x8efe,
+ 0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c, 0x8f1f,
+ 0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45, 0x8f42,
+ 0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c, 0x8f62,
+ 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf, 0x8fb7,
+ 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4, 0x9005,
+ 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e, 0x9016,
+ 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8,
+ /* 0x6e */
+ 0x904f, 0x9050, 0x9051, 0x9052, 0x900e, 0x9049, 0x903e, 0x9056,
+ 0x9058, 0x905e, 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072, 0x9082,
+ 0x907d, 0x9081, 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8, 0x90af,
+ 0x90b1, 0x90b5, 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102, 0x9112,
+ 0x9119, 0x9132, 0x9130, 0x914a, 0x9156, 0x9158, 0x9163, 0x9165,
+ 0x9169, 0x9173, 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2, 0x91ab,
+ 0x91af, 0x91aa, 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1, 0x91c9,
+ 0x91cb, 0x91d0, 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc, 0x91f5,
+ 0x91f6, 0x921e, 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211, 0x925e,
+ 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923f, 0x924b,
+ 0x9250, 0x929c, 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf, 0x92b9,
+ 0x92b7, 0x92e9, 0x930f, 0x92fa, 0x9344, 0x932e,
+ /* 0x6f */
+ 0x9319, 0x9322, 0x931a, 0x9323, 0x933a, 0x9335, 0x933b, 0x935c,
+ 0x9360, 0x937c, 0x936e, 0x9356, 0x93b0, 0x93ac, 0x93ad, 0x9394,
+ 0x93b9, 0x93d6, 0x93d7, 0x93e8, 0x93e5, 0x93d8, 0x93c3, 0x93dd,
+ 0x93d0, 0x93c8, 0x93e4, 0x941a, 0x9414, 0x9413, 0x9403, 0x9407,
+ 0x9410, 0x9436, 0x942b, 0x9435, 0x9421, 0x943a, 0x9441, 0x9452,
+ 0x9444, 0x945b, 0x9460, 0x9462, 0x945e, 0x946a, 0x9229, 0x9470,
+ 0x9475, 0x9477, 0x947d, 0x945a, 0x947c, 0x947e, 0x9481, 0x947f,
+ 0x9582, 0x9587, 0x958a, 0x9594, 0x9596, 0x9598, 0x9599, 0x95a0,
+ 0x95a8, 0x95a7, 0x95ad, 0x95bc, 0x95bb, 0x95b9, 0x95be, 0x95ca,
+ 0x6ff6, 0x95c3, 0x95cd, 0x95cc, 0x95d5, 0x95d4, 0x95d6, 0x95dc,
+ 0x95e1, 0x95e5, 0x95e2, 0x9621, 0x9628, 0x962e, 0x962f, 0x9642,
+ 0x964c, 0x964f, 0x964b, 0x9677, 0x965c, 0x965e,
+ /* 0x70 */
+ 0x965d, 0x965f, 0x9666, 0x9672, 0x966c, 0x968d, 0x9698, 0x9695,
+ 0x9697, 0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0, 0x96b4, 0x96b6,
+ 0x96b8, 0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd, 0x894d, 0x96dc,
+ 0x970d, 0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970e,
+ 0x9711, 0x970f, 0x9716, 0x9719, 0x9724, 0x972a, 0x9730, 0x9739,
+ 0x973d, 0x973e, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975c,
+ 0x9760, 0x9764, 0x9766, 0x9768, 0x52d2, 0x976b, 0x9771, 0x9779,
+ 0x9785, 0x977c, 0x9781, 0x977a, 0x9786, 0x978b, 0x978f, 0x9790,
+ 0x979c, 0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4, 0x97c3, 0x97c6,
+ 0x97c8, 0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2, 0x7adf, 0x97f6,
+ 0x97f5, 0x980f, 0x980c, 0x9838, 0x9824, 0x9821, 0x9837, 0x983d,
+ 0x9846, 0x984f, 0x984b, 0x986b, 0x986f, 0x9870,
+ /* 0x71 */
+ 0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6, 0x98c4,
+ 0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912, 0x9914,
+ 0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c, 0x992e,
+ 0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b, 0x9951,
+ 0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad, 0x99ae,
+ 0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed, 0x99ee,
+ 0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05, 0x99e2,
+ 0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43, 0x9a3e,
+ 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65, 0x9a64,
+ 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0, 0x9acf,
+ 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3, 0x9ae6,
+ 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7,
+ /* 0x72 */
+ 0x9afb, 0x9b06, 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23, 0x9b25,
+ 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32, 0x9b44,
+ 0x9b43, 0x9b4f, 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74, 0x9b93,
+ 0x9b83, 0x9b91, 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8, 0x9bb4,
+ 0x9bc0, 0x9bca, 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2, 0x9be3,
+ 0x9be2, 0x9be4, 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1, 0x9bf0,
+ 0x9c15, 0x9c14, 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08, 0x9c12,
+ 0x9c0a, 0x9c04, 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21, 0x9c30,
+ 0x9c47, 0x9c32, 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67, 0x9c76,
+ 0x9c78, 0x9ce7, 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb, 0x9d03,
+ 0x9d06, 0x9d2a, 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44, 0x9d15,
+ 0x9d12, 0x9d41, 0x9d3f, 0x9d3e, 0x9d46, 0x9d48,
+ /* 0x73 */
+ 0x9d5d, 0x9d5e, 0x9d64, 0x9d51, 0x9d50, 0x9d59, 0x9d72, 0x9d89,
+ 0x9d87, 0x9dab, 0x9d6f, 0x9d7a, 0x9d9a, 0x9da4, 0x9da9, 0x9db2,
+ 0x9dc4, 0x9dc1, 0x9dbb, 0x9db8, 0x9dba, 0x9dc6, 0x9dcf, 0x9dc2,
+ 0x9dd9, 0x9dd3, 0x9df8, 0x9de6, 0x9ded, 0x9def, 0x9dfd, 0x9e1a,
+ 0x9e1b, 0x9e1e, 0x9e75, 0x9e79, 0x9e7d, 0x9e81, 0x9e88, 0x9e8b,
+ 0x9e8c, 0x9e92, 0x9e95, 0x9e91, 0x9e9d, 0x9ea5, 0x9ea9, 0x9eb8,
+ 0x9eaa, 0x9ead, 0x9761, 0x9ecc, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed4,
+ 0x9edc, 0x9ede, 0x9edd, 0x9ee0, 0x9ee5, 0x9ee8, 0x9eef, 0x9ef4,
+ 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb, 0x9efc, 0x9efd, 0x9f07, 0x9f08,
+ 0x76b7, 0x9f15, 0x9f21, 0x9f2c, 0x9f3e, 0x9f4a, 0x9f52, 0x9f54,
+ 0x9f63, 0x9f5f, 0x9f60, 0x9f61, 0x9f66, 0x9f67, 0x9f6c, 0x9f6a,
+ 0x9f77, 0x9f72, 0x9f76, 0x9f95, 0x9f9c, 0x9fa0,
+ /* 0x74 */
+ 0x582f, 0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199,
+};
+
+static int
+jisx0208_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 >= 0x21 && c1 <= 0x28) || (c1 >= 0x30 && c1 <= 0x74)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 1410) {
+ if (i < 690)
+ wc = jisx0208_2uni_page21[i];
+ } else {
+ if (i < 7808)
+ wc = jisx0208_2uni_page30[i-1410];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short jisx0208_2charset[6879] = {
+ 0x2140, 0x2171, 0x2172, 0x2178, 0x212f, 0x224c, 0x216b, 0x215e,
+ 0x212d, 0x2279, 0x215f, 0x2160, 0x2621, 0x2622, 0x2623, 0x2624,
+ 0x2625, 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c,
+ 0x262d, 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634,
+ 0x2635, 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644,
+ 0x2645, 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c,
+ 0x264d, 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654,
+ 0x2655, 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723,
+ 0x2724, 0x2725, 0x2726, 0x2728, 0x2729, 0x272a, 0x272b, 0x272c,
+ 0x272d, 0x272e, 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734,
+ 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, 0x273a, 0x273b, 0x273c,
+ 0x273d, 0x273e, 0x273f, 0x2740, 0x2741, 0x2751, 0x2752, 0x2753,
+ 0x2754, 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c,
+ 0x275d, 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764,
+ 0x2765, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c,
+ 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x213e, 0x213d,
+ 0x2142, 0x2146, 0x2147, 0x2148, 0x2149, 0x2277, 0x2278, 0x2145,
+ 0x2144, 0x2273, 0x216c, 0x216d, 0x2228, 0x216e, 0x2272, 0x222b,
+ 0x222c, 0x222a, 0x222d, 0x224d, 0x224e, 0x224f, 0x225f, 0x2250,
+ 0x2260, 0x223a, 0x223b, 0x215d, 0x2265, 0x2267, 0x2167, 0x225c,
+ 0x224a, 0x224b, 0x2241, 0x2240, 0x2269, 0x226a, 0x2168, 0x2268,
+ 0x2266, 0x2262, 0x2162, 0x2261, 0x2165, 0x2166, 0x2263, 0x2264,
+ 0x223e, 0x223f, 0x223c, 0x223d, 0x225d, 0x225e, 0x2821, 0x282c,
+ 0x2822, 0x282d, 0x2823, 0x282e, 0x2824, 0x282f, 0x2826, 0x2831,
+ 0x2825, 0x2830, 0x2827, 0x283c, 0x2837, 0x2832, 0x2829, 0x283e,
+ 0x2839, 0x2834, 0x2828, 0x2838, 0x283d, 0x2833, 0x282a, 0x283a,
+ 0x283f, 0x2835, 0x282b, 0x283b, 0x2840, 0x2836, 0x2223, 0x2222,
+ 0x2225, 0x2224, 0x2227, 0x2226, 0x2221, 0x217e, 0x217b, 0x217d,
+ 0x217c, 0x227e, 0x217a, 0x2179, 0x216a, 0x2169, 0x2276, 0x2275,
+ 0x2274, 0x2121, 0x2122, 0x2123, 0x2137, 0x2139, 0x213a, 0x213b,
+ 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
+ 0x215a, 0x215b, 0x2229, 0x222e, 0x214c, 0x214d, 0x2141, 0x2421,
+ 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429,
+ 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431,
+ 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439,
+ 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441,
+ 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449,
+ 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451,
+ 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
+ 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461,
+ 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+ 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471,
+ 0x2472, 0x2473, 0x212b, 0x212c, 0x2135, 0x2136, 0x2521, 0x2522,
+ 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a,
+ 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532,
+ 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a,
+ 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542,
+ 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a,
+ 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550, 0x2551, 0x2552,
+ 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a,
+ 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562,
+ 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a,
+ 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572,
+ 0x2573, 0x2574, 0x2575, 0x2576, 0x2126, 0x213c, 0x2133, 0x2134,
+ 0x306c, 0x437a, 0x3c37, 0x4b7c, 0x3e66, 0x3b30, 0x3e65, 0x323c,
+ 0x4954, 0x4d3f, 0x5022, 0x312f, 0x336e, 0x5023, 0x4024, 0x5242,
+ 0x3556, 0x4a3a, 0x3e67, 0x4e3e, 0x4a42, 0x5024, 0x4366, 0x5025,
+ 0x367a, 0x5026, 0x345d, 0x4330, 0x3c67, 0x5027, 0x5028, 0x5029,
+ 0x4735, 0x3557, 0x4737, 0x4663, 0x3843, 0x4b33, 0x6949, 0x502a,
+ 0x3e68, 0x502b, 0x3235, 0x3665, 0x3870, 0x4c69, 0x5626, 0x4d70,
+ 0x467d, 0x3425, 0x3535, 0x502c, 0x502d, 0x4e3b, 0x4d3d, 0x4168,
+ 0x502f, 0x3b76, 0x4673, 0x5032, 0x313e, 0x385f, 0x385e, 0x3066,
+ 0x4f4b, 0x4f4a, 0x3a33, 0x3021, 0x5033, 0x5034, 0x5035, 0x4b34,
+ 0x5036, 0x3872, 0x3067, 0x4b72, 0x357c, 0x357d, 0x357e, 0x4462,
+ 0x4e3c, 0x5037, 0x5038, 0x5039, 0x3f4d, 0x3d3a, 0x3f4e, 0x503e,
+ 0x503c, 0x503d, 0x3558, 0x3a23, 0x3270, 0x503b, 0x503a, 0x4a29,
+ 0x3b46, 0x3b45, 0x423e, 0x503f, 0x4955, 0x4067, 0x2138, 0x5040,
+ 0x5042, 0x4265, 0x4e61, 0x304a, 0x5041, 0x323e, 0x3644, 0x4367,
+ 0x376f, 0x5043, 0x4724, 0x346b, 0x5044, 0x304b, 0x3860, 0x346c,
+ 0x497a, 0x4832, 0x3559, 0x3271, 0x5067, 0x4541, 0x476c, 0x5046,
+ 0x483c, 0x4e62, 0x3f2d, 0x3b47, 0x3b77, 0x3240, 0x4451, 0x4322,
+ 0x504a, 0x304c, 0x4463, 0x3d3b, 0x3a34, 0x4d24, 0x424e, 0x323f,
+ 0x5049, 0x4d3e, 0x5045, 0x5047, 0x3a6e, 0x5048, 0x5524, 0x5050,
+ 0x5053, 0x5051, 0x3242, 0x4a3b, 0x504b, 0x504f, 0x3873, 0x3b48,
+ 0x3426, 0x5054, 0x504c, 0x4e63, 0x3b78, 0x504d, 0x5052, 0x5055,
+ 0x504e, 0x3621, 0x304d, 0x3622, 0x3241, 0x5525, 0x4b79, 0x496e,
+ 0x3874, 0x3f2f, 0x4e37, 0x4a58, 0x3738, 0x4225, 0x3264, 0x3d53,
+ 0x5059, 0x505e, 0x505c, 0x5057, 0x422f, 0x505a, 0x505d, 0x505b,
+ 0x4a5d, 0x5058, 0x3f2e, 0x4b73, 0x505f, 0x5060, 0x3d24, 0x506d,
+ 0x4750, 0x4936, 0x5068, 0x4a70, 0x3236, 0x506c, 0x5066, 0x506f,
+ 0x4152, 0x3844, 0x475c, 0x6047, 0x506e, 0x455d, 0x5063, 0x3876,
+ 0x3875, 0x5061, 0x3c5a, 0x5069, 0x4a6f, 0x434d, 0x5065, 0x3771,
+ 0x5062, 0x506a, 0x5064, 0x4e51, 0x506b, 0x4f41, 0x3666, 0x3770,
+ 0x5070, 0x5071, 0x5075, 0x304e, 0x4a50, 0x5074, 0x5073, 0x5077,
+ 0x5076, 0x4464, 0x3772, 0x5078, 0x3c45, 0x4226, 0x4465, 0x3676,
+ 0x5079, 0x3536, 0x507a, 0x507c, 0x4b35, 0x3766, 0x3b31, 0x4877,
+ 0x507b, 0x3a45, 0x4d43, 0x507e, 0x5123, 0x507d, 0x3a44, 0x3d7d,
+ 0x3739, 0x5124, 0x364f, 0x5121, 0x5122, 0x462f, 0x417c, 0x3623,
+ 0x4b4d, 0x5125, 0x4e3d, 0x5126, 0x5129, 0x5127, 0x414e, 0x5128,
+ 0x512a, 0x512c, 0x512b, 0x4a48, 0x3537, 0x512e, 0x512f, 0x322f,
+ 0x512d, 0x3c74, 0x5132, 0x5131, 0x5130, 0x5056, 0x5133, 0x3d7e,
+ 0x5134, 0x4d25, 0x4c59, 0x5136, 0x5135, 0x5138, 0x5137, 0x5139,
+ 0x513a, 0x3074, 0x3835, 0x373b, 0x3d3c, 0x437b, 0x3624, 0x4068,
+ 0x3877, 0x396e, 0x513c, 0x4c48, 0x4546, 0x3b79, 0x513b, 0x513d,
+ 0x455e, 0x3375, 0x513e, 0x467e, 0x4134, 0x5140, 0x5141, 0x482c,
+ 0x3878, 0x4f3b, 0x5142, 0x3626, 0x4a3c, 0x4236, 0x3671, 0x4535,
+ 0x3773, 0x5143, 0x5144, 0x4662, 0x315f, 0x5147, 0x3a7d, 0x5146,
+ 0x3a46, 0x5148, 0x666e, 0x5149, 0x4b41, 0x514a, 0x514b, 0x514c,
+ 0x3e69, 0x3c4c, 0x3427, 0x514f, 0x514d, 0x4c3d, 0x514e, 0x495a,
+ 0x5150, 0x5151, 0x5152, 0x455f, 0x5156, 0x5154, 0x5155, 0x5153,
+ 0x3a63, 0x5157, 0x4c6a, 0x4e64, 0x5158, 0x4028, 0x5159, 0x3d5a,
+ 0x515a, 0x437c, 0x4e3f, 0x4560, 0x5245, 0x515b, 0x7425, 0x3645,
+ 0x515c, 0x4b5e, 0x3d68, 0x427c, 0x515e, 0x4664, 0x515f, 0x5160,
+ 0x332e, 0x5161, 0x3627, 0x464c, 0x317a, 0x3d50, 0x4821, 0x5162,
+ 0x4561, 0x3f4f, 0x5163, 0x4a2c, 0x405a, 0x3422, 0x3429, 0x5164,
+ 0x5166, 0x373a, 0x5165, 0x4e73, 0x3d69, 0x483d, 0x4a4c, 0x5167,
+ 0x4d78, 0x5168, 0x5169, 0x457e, 0x516a, 0x4029, 0x3a7e, 0x3774,
+ 0x516b, 0x3b49, 0x396f, 0x4466, 0x516d, 0x4227, 0x3a6f, 0x516e,
+ 0x516f, 0x4130, 0x516c, 0x5171, 0x4b36, 0x3964, 0x5170, 0x3775,
+ 0x3a5e, 0x476d, 0x5174, 0x5172, 0x497b, 0x3e6a, 0x517b, 0x3364,
+ 0x5175, 0x5173, 0x414f, 0x5177, 0x5176, 0x3344, 0x3760, 0x517c,
+ 0x4e2d, 0x5178, 0x517d, 0x517a, 0x5179, 0x4e4f, 0x3879, 0x3243,
+ 0x4e74, 0x3d75, 0x4558, 0x3965, 0x5222, 0x5223, 0x4e65, 0x4f2b,
+ 0x5225, 0x387a, 0x5224, 0x332f, 0x5226, 0x4b56, 0x443c, 0x4d26,
+ 0x4a59, 0x5227, 0x7055, 0x4630, 0x5228, 0x342a, 0x4c33, 0x3e21,
+ 0x5229, 0x4a67, 0x522d, 0x402a, 0x522a, 0x3650, 0x522b, 0x342b,
+ 0x372e, 0x522e, 0x522f, 0x5230, 0x5231, 0x3c5b, 0x387b, 0x4c5e,
+ 0x4c68, 0x4677, 0x4a71, 0x5232, 0x5233, 0x5235, 0x5237, 0x5236,
+ 0x5238, 0x323d, 0x4b4c, 0x3a7c, 0x5239, 0x4159, 0x3e22, 0x3629,
+ 0x523a, 0x485b, 0x523b, 0x523c, 0x523d, 0x523e, 0x4924, 0x3668,
+ 0x3065, 0x463f, 0x523f, 0x3d3d, 0x4069, 0x5241, 0x5240, 0x3e23,
+ 0x3861, 0x5243, 0x483e, 0x5244, 0x485c, 0x4234, 0x426e, 0x3628,
+ 0x466e, 0x4331, 0x476e, 0x4b4e, 0x5246, 0x406a, 0x3735, 0x5247,
+ 0x5248, 0x312c, 0x3075, 0x346d, 0x4228, 0x3551, 0x4d71, 0x524b,
+ 0x3237, 0x524a, 0x362a, 0x524c, 0x4c71, 0x524d, 0x4e52, 0x387c,
+ 0x3836, 0x524e, 0x5250, 0x524f, 0x3f5f, 0x3139, 0x315e, 0x5251,
+ 0x5252, 0x3837, 0x5253, 0x356e, 0x3b32, 0x5254, 0x4b74, 0x3a35,
+ 0x355a, 0x4d27, 0x4150, 0x483f, 0x3c7d, 0x3d47, 0x3c68, 0x3c75,
+ 0x3d76, 0x4840, 0x5257, 0x3143, 0x4151, 0x387d, 0x3845, 0x3667,
+ 0x525b, 0x4321, 0x427e, 0x362b, 0x3e24, 0x525c, 0x525a, 0x3244,
+ 0x4266, 0x3c38, 0x3b4b, 0x3126, 0x3370, 0x3966, 0x3b4a, 0x525d,
+ 0x525e, 0x3549, 0x3346, 0x3967, 0x3548, 0x445f, 0x3125, 0x4631,
+ 0x4c3e, 0x3921, 0x4d79, 0x4547, 0x387e, 0x372f, 0x5267, 0x3663,
+ 0x4b4a, 0x485d, 0x5266, 0x345e, 0x5261, 0x5262, 0x5264, 0x5265,
+ 0x355b, 0x3f61, 0x4a2d, 0x5263, 0x525f, 0x3863, 0x5260, 0x4f24,
+ 0x4a72, 0x4468, 0x3862, 0x3970, 0x5268, 0x465d, 0x526c, 0x3c7e,
+ 0x3c76, 0x526f, 0x526d, 0x4c23, 0x526a, 0x5273, 0x526e, 0x5271,
+ 0x3846, 0x4c3f, 0x5272, 0x5274, 0x5276, 0x3a70, 0x4f42, 0x526b,
+ 0x5269, 0x5275, 0x5270, 0x5278, 0x5323, 0x527a, 0x527e, 0x5321,
+ 0x527b, 0x533e, 0x3a69, 0x3331, 0x5279, 0x5325, 0x3076, 0x5324,
+ 0x3025, 0x494a, 0x5322, 0x527c, 0x5277, 0x527d, 0x3a48, 0x5326,
+ 0x3077, 0x532f, 0x5327, 0x5328, 0x3e25, 0x4b69, 0x532d, 0x532c,
+ 0x452f, 0x532e, 0x532b, 0x3134, 0x3a36, 0x3f30, 0x5329, 0x4562,
+ 0x532a, 0x3022, 0x5334, 0x4d23, 0x3e27, 0x533a, 0x5339, 0x5330,
+ 0x4243, 0x5331, 0x426f, 0x5336, 0x3e26, 0x5333, 0x4c64, 0x373c,
+ 0x5337, 0x5338, 0x5335, 0x533b, 0x5332, 0x5341, 0x5346, 0x5342,
+ 0x533d, 0x5347, 0x4131, 0x5349, 0x3922, 0x533f, 0x437d, 0x5343,
+ 0x533c, 0x342d, 0x346e, 0x3365, 0x5344, 0x5340, 0x3776, 0x534a,
+ 0x5348, 0x4153, 0x354a, 0x362c, 0x5345, 0x3674, 0x3144, 0x534e,
+ 0x534c, 0x5427, 0x5351, 0x534b, 0x534f, 0x534d, 0x3b4c, 0x5350,
+ 0x5353, 0x5358, 0x5356, 0x5355, 0x4332, 0x3245, 0x5352, 0x5354,
+ 0x3e28, 0x3133, 0x5357, 0x325e, 0x5362, 0x3e7c, 0x535e, 0x535c,
+ 0x535d, 0x535f, 0x313d, 0x4139, 0x5359, 0x535a, 0x337a, 0x5361,
+ 0x346f, 0x5364, 0x5360, 0x5363, 0x4a2e, 0x4655, 0x4838, 0x5366,
+ 0x5365, 0x3345, 0x5367, 0x536a, 0x5369, 0x5368, 0x4739, 0x536b,
+ 0x536c, 0x536e, 0x536d, 0x5370, 0x5373, 0x5371, 0x536f, 0x5372,
+ 0x5374, 0x5375, 0x5376, 0x5377, 0x5378, 0x5145, 0x3c7c, 0x3b4d,
+ 0x3273, 0x3078, 0x4344, 0x5379, 0x3a24, 0x304f, 0x3f5e, 0x537a,
+ 0x3847, 0x3971, 0x537c, 0x537b, 0x4a60, 0x537d, 0x5421, 0x537e,
+ 0x5422, 0x5423, 0x3777, 0x3160, 0x5424, 0x5426, 0x5425, 0x5428,
+ 0x455a, 0x5429, 0x3035, 0x3a5f, 0x373d, 0x434f, 0x542a, 0x542b,
+ 0x542d, 0x542e, 0x3a64, 0x3651, 0x4b37, 0x542c, 0x542f, 0x3a41,
+ 0x3923, 0x5433, 0x3a25, 0x4333, 0x5430, 0x445a, 0x5434, 0x3f62,
+ 0x5432, 0x5435, 0x373f, 0x5436, 0x5437, 0x3924, 0x3340, 0x5439,
+ 0x543a, 0x543b, 0x5438, 0x5431, 0x543c, 0x543d, 0x4b64, 0x3e6b,
+ 0x543f, 0x5440, 0x543e, 0x5442, 0x4738, 0x3068, 0x4956, 0x5443,
+ 0x3e7d, 0x3c39, 0x475d, 0x3470, 0x3a6b, 0x4b59, 0x4632, 0x3778,
+ 0x424f, 0x5441, 0x5444, 0x4244, 0x5445, 0x5446, 0x5448, 0x4469,
+ 0x342e, 0x7421, 0x3161, 0x4a73, 0x3e6c, 0x4548, 0x3a66, 0x544e,
+ 0x4a3d, 0x4e5d, 0x3274, 0x544a, 0x413a, 0x544d, 0x4563, 0x4549,
+ 0x4564, 0x4839, 0x444d, 0x3a49, 0x5449, 0x3176, 0x4536, 0x544b,
+ 0x5447, 0x3f50, 0x544f, 0x3d4e, 0x362d, 0x5450, 0x4a68, 0x417d,
+ 0x4446, 0x5452, 0x4b4f, 0x5453, 0x5458, 0x4a2f, 0x5457, 0x5451,
+ 0x5454, 0x5456, 0x3a26, 0x4a49, 0x5459, 0x4345, 0x3275, 0x3e6d,
+ 0x545b, 0x545a, 0x3968, 0x545c, 0x545e, 0x545d, 0x5460, 0x5455,
+ 0x5462, 0x5461, 0x545f, 0x3b4e, 0x3f51, 0x4154, 0x5463, 0x403c,
+ 0x306d, 0x4764, 0x445b, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468,
+ 0x5469, 0x4a51, 0x546a, 0x3246, 0x546b, 0x4d3c, 0x3330, 0x5249,
+ 0x3d48, 0x423f, 0x546c, 0x4c6b, 0x4c34, 0x546e, 0x4267, 0x4537,
+ 0x4240, 0x4957, 0x546f, 0x5470, 0x317b, 0x3c3a, 0x5471, 0x3050,
+ 0x5472, 0x5473, 0x3162, 0x3471, 0x4660, 0x4a74, 0x5477, 0x4155,
+ 0x5476, 0x3740, 0x4b5b, 0x5475, 0x4565, 0x5479, 0x5478, 0x547b,
+ 0x547a, 0x317c, 0x547c, 0x3e29, 0x547e, 0x4325, 0x547d, 0x4a33,
+ 0x3d77, 0x455b, 0x5521, 0x3925, 0x5522, 0x4721, 0x485e, 0x4c51,
+ 0x4725, 0x552b, 0x3538, 0x4d45, 0x4c2f, 0x562c, 0x5523, 0x5526,
+ 0x4245, 0x4b38, 0x454a, 0x5527, 0x4b65, 0x3a4a, 0x3e2a, 0x5528,
+ 0x3b50, 0x3b4f, 0x3039, 0x3848, 0x402b, 0x3051, 0x552c, 0x552d,
+ 0x552a, 0x3138, 0x342f, 0x5529, 0x4c45, 0x4931, 0x3028, 0x3079,
+ 0x3b51, 0x3052, 0x3023, 0x5532, 0x5530, 0x4c3c, 0x5533, 0x5531,
+ 0x552f, 0x3f31, 0x552e, 0x4a5a, 0x3864, 0x5537, 0x5538, 0x3e2b,
+ 0x5534, 0x4f2c, 0x474c, 0x5536, 0x3a27, 0x5539, 0x4958, 0x553a,
+ 0x5535, 0x4c3b, 0x475e, 0x553b, 0x4932, 0x553c, 0x5540, 0x553d,
+ 0x3247, 0x553f, 0x3c3b, 0x553e, 0x3779, 0x554c, 0x5545, 0x5542,
+ 0x4364, 0x5541, 0x5543, 0x5544, 0x5546, 0x5547, 0x3472, 0x5549,
+ 0x5548, 0x554a, 0x3e6e, 0x554d, 0x445c, 0x3145, 0x554b, 0x554e,
+ 0x554f, 0x5552, 0x5550, 0x5551, 0x3b52, 0x5553, 0x3926, 0x5554,
+ 0x3b7a, 0x4238, 0x5555, 0x5556, 0x3b5a, 0x3927, 0x4c52, 0x3528,
+ 0x3849, 0x5557, 0x3358, 0x5558, 0x4239, 0x5559, 0x5623, 0x555a,
+ 0x555b, 0x555c, 0x555e, 0x555f, 0x5560, 0x4270, 0x3127, 0x3c69,
+ 0x3042, 0x4157, 0x3430, 0x3c35, 0x3928, 0x4566, 0x3d21, 0x3431,
+ 0x4368, 0x446a, 0x3038, 0x3539, 0x4a75, 0x3c42, 0x3552, 0x406b,
+ 0x3c3c, 0x4d28, 0x5561, 0x355c, 0x3a4b, 0x3332, 0x3163, 0x3e2c,
+ 0x3248, 0x5562, 0x4d46, 0x3d49, 0x3c64, 0x5563, 0x3473, 0x4652,
+ 0x4c29, 0x5564, 0x5565, 0x4959, 0x5567, 0x3428, 0x3677, 0x5566,
+ 0x3432, 0x3f32, 0x556b, 0x3b21, 0x3249, 0x556a, 0x5568, 0x556c,
+ 0x5569, 0x472b, 0x5c4d, 0x3f33, 0x556d, 0x4e40, 0x556e, 0x5570,
+ 0x437e, 0x556f, 0x4023, 0x3b7b, 0x4250, 0x3c77, 0x4975, 0x406c,
+ 0x3c4d, 0x5571, 0x3e2d, 0x5572, 0x5573, 0x3053, 0x423a, 0x3f52,
+ 0x5574, 0x4633, 0x3e2e, 0x3e2f, 0x5575, 0x406d, 0x3e30, 0x5576,
+ 0x5577, 0x4c60, 0x5578, 0x3646, 0x3d22, 0x5579, 0x557a, 0x3c5c,
+ 0x3f2c, 0x4674, 0x3f54, 0x4878, 0x4722, 0x3649, 0x557b, 0x356f,
+ 0x557c, 0x367e, 0x464f, 0x3230, 0x3b53, 0x557d, 0x5622, 0x5621,
+ 0x367d, 0x557e, 0x4538, 0x4230, 0x454b, 0x3c48, 0x4158, 0x4d7a,
+ 0x5624, 0x5625, 0x4656, 0x3b33, 0x5627, 0x5628, 0x5629, 0x3474,
+ 0x562a, 0x562b, 0x322c, 0x413b, 0x3464, 0x562d, 0x4c28, 0x4252,
+ 0x3359, 0x562f, 0x5631, 0x345f, 0x562e, 0x5630, 0x5633, 0x5632,
+ 0x5634, 0x5635, 0x463d, 0x362e, 0x3265, 0x5636, 0x563b, 0x5639,
+ 0x4a77, 0x4a76, 0x4567, 0x5638, 0x3d54, 0x5637, 0x3f72, 0x563c,
+ 0x3a6a, 0x5642, 0x5643, 0x563d, 0x3333, 0x563e, 0x5647, 0x5646,
+ 0x5645, 0x5641, 0x5640, 0x5644, 0x4a78, 0x564b, 0x5648, 0x564a,
+ 0x4d72, 0x5649, 0x563f, 0x3f73, 0x564c, 0x3a37, 0x564d, 0x564e,
+ 0x5651, 0x5650, 0x564f, 0x4568, 0x563a, 0x5657, 0x5653, 0x5652,
+ 0x5654, 0x5655, 0x5658, 0x4e66, 0x5659, 0x5656, 0x565a, 0x3460,
+ 0x565b, 0x565d, 0x565c, 0x565e, 0x565f, 0x406e, 0x3d23, 0x3d64,
+ 0x4163, 0x3929, 0x3a38, 0x392a, 0x3570, 0x5660, 0x3a39, 0x384a,
+ 0x5661, 0x4c26, 0x4743, 0x5662, 0x392b, 0x342c, 0x4327, 0x3652,
+ 0x3b54, 0x495b, 0x4841, 0x5663, 0x3475, 0x5666, 0x4421, 0x5665,
+ 0x5664, 0x5667, 0x446b, 0x3f63, 0x3b55, 0x404a, 0x4253, 0x3522,
+ 0x4422, 0x5668, 0x5669, 0x3e6f, 0x4b39, 0x566c, 0x566b, 0x566a,
+ 0x497d, 0x5673, 0x4b5a, 0x566d, 0x566f, 0x4b6b, 0x566e, 0x5670,
+ 0x4828, 0x5671, 0x4a3e, 0x5672, 0x3433, 0x4a3f, 0x472f, 0x5674,
+ 0x5675, 0x392c, 0x3434, 0x5676, 0x3838, 0x4d44, 0x4d29, 0x3476,
+ 0x5678, 0x4423, 0x392d, 0x3e31, 0x485f, 0x3e32, 0x3d78, 0x446c,
+ 0x4a79, 0x4539, 0x392e, 0x495c, 0x5679, 0x4559, 0x3a42, 0x384b,
+ 0x446d, 0x3043, 0x3d6e, 0x392f, 0x4d47, 0x567a, 0x567b, 0x4751,
+ 0x567c, 0x4e77, 0x4f2d, 0x567e, 0x567d, 0x3347, 0x5721, 0x5724,
+ 0x5725, 0x5723, 0x4940, 0x3e33, 0x5727, 0x5726, 0x5722, 0x5728,
+ 0x5729, 0x572a, 0x572d, 0x572b, 0x572c, 0x572e, 0x3164, 0x446e,
+ 0x572f, 0x377a, 0x3276, 0x4736, 0x5730, 0x467b, 0x4a5b, 0x5731,
+ 0x4f2e, 0x5732, 0x4a40, 0x5735, 0x5021, 0x5031, 0x3c30, 0x4675,
+ 0x5736, 0x355d, 0x4424, 0x307a, 0x5737, 0x4a26, 0x3930, 0x4350,
+ 0x446f, 0x4c6f, 0x3839, 0x384c, 0x5738, 0x5739, 0x573f, 0x3c65,
+ 0x4425, 0x362f, 0x573a, 0x492b, 0x4346, 0x573b, 0x573c, 0x3630,
+ 0x573d, 0x573e, 0x5740, 0x4576, 0x5741, 0x5742, 0x5743, 0x5734,
+ 0x5733, 0x5744, 0x3741, 0x4927, 0x3a4c, 0x4937, 0x4426, 0x494b,
+ 0x5745, 0x3e34, 0x3146, 0x5746, 0x5747, 0x4c72, 0x4860, 0x574a,
+ 0x317d, 0x402c, 0x5749, 0x5748, 0x3742, 0x4254, 0x574e, 0x574c,
+ 0x574b, 0x4e27, 0x3865, 0x3d79, 0x574d, 0x454c, 0x3d3e, 0x4640,
+ 0x5751, 0x5750, 0x574f, 0x5752, 0x3866, 0x5753, 0x497c, 0x3d5b,
+ 0x5754, 0x4879, 0x4641, 0x4427, 0x4530, 0x5755, 0x352b, 0x3f34,
+ 0x492c, 0x3477, 0x4726, 0x5756, 0x3b56, 0x4b3a, 0x4b3b, 0x317e,
+ 0x575b, 0x4369, 0x5758, 0x3277, 0x582d, 0x575a, 0x4730, 0x5759,
+ 0x5757, 0x397a, 0x575d, 0x5763, 0x5769, 0x5761, 0x455c, 0x5766,
+ 0x495d, 0x5760, 0x5765, 0x4e67, 0x3b57, 0x4255, 0x575e, 0x355e,
+ 0x5768, 0x402d, 0x3165, 0x5762, 0x3278, 0x5767, 0x3631, 0x5764,
+ 0x576a, 0x576c, 0x5776, 0x5774, 0x5771, 0x5770, 0x4e78, 0x5772,
+ 0x3632, 0x3931, 0x3d7a, 0x5779, 0x576b, 0x576f, 0x575f, 0x327a,
+ 0x5773, 0x5775, 0x4351, 0x3a28, 0x3238, 0x576d, 0x5778, 0x5777,
+ 0x3633, 0x4229, 0x3366, 0x3743, 0x576e, 0x577a, 0x577d, 0x5821,
+ 0x3c3d, 0x5827, 0x4470, 0x577b, 0x5825, 0x3279, 0x5823, 0x5824,
+ 0x577e, 0x5822, 0x3867, 0x4d2a, 0x3435, 0x3159, 0x5826, 0x473a,
+ 0x302d, 0x4861, 0x575c, 0x582c, 0x5830, 0x4c65, 0x5829, 0x4569,
+ 0x582e, 0x3e70, 0x582f, 0x4657, 0x4f47, 0x582b, 0x5831, 0x397b,
+ 0x404b, 0x3054, 0x582a, 0x5828, 0x415a, 0x577c, 0x3b34, 0x4246,
+ 0x583d, 0x415b, 0x5838, 0x5835, 0x5836, 0x3c66, 0x5839, 0x583c,
+ 0x5837, 0x3d25, 0x583a, 0x5834, 0x4c7c, 0x4c7b, 0x583e, 0x583f,
+ 0x3055, 0x5833, 0x3672, 0x3026, 0x3436, 0x583b, 0x5843, 0x5842,
+ 0x5847, 0x5848, 0x5846, 0x5849, 0x5841, 0x5845, 0x584a, 0x584b,
+ 0x5840, 0x3b7c, 0x5844, 0x4256, 0x3932, 0x5832, 0x3f35, 0x5858,
+ 0x4a69, 0x584e, 0x584f, 0x5850, 0x5857, 0x5856, 0x4b7d, 0x3437,
+ 0x5854, 0x3745, 0x3334, 0x5851, 0x4e38, 0x5853, 0x3056, 0x5855,
+ 0x584c, 0x5852, 0x5859, 0x3744, 0x584d, 0x4d5d, 0x4d2b, 0x585c,
+ 0x5860, 0x417e, 0x4e79, 0x5861, 0x585e, 0x585b, 0x585a, 0x585f,
+ 0x4a30, 0x4634, 0x3746, 0x5862, 0x585d, 0x5863, 0x377b, 0x3231,
+ 0x586b, 0x3438, 0x5869, 0x586a, 0x3a29, 0x5868, 0x5866, 0x5865,
+ 0x586c, 0x5864, 0x586e, 0x327b, 0x5870, 0x586f, 0x4428, 0x5873,
+ 0x5871, 0x5867, 0x377c, 0x5872, 0x5876, 0x5875, 0x5877, 0x5874,
+ 0x5878, 0x5879, 0x587a, 0x4a6a, 0x587c, 0x587b, 0x3d3f, 0x402e,
+ 0x3266, 0x327c, 0x587d, 0x303f, 0x404c, 0x587e, 0x6c43, 0x5921,
+ 0x3761, 0x5922, 0x406f, 0x5923, 0x5924, 0x353a, 0x5925, 0x5926,
+ 0x5927, 0x4257, 0x384d, 0x4c61, 0x4b3c, 0x3d6a, 0x5928, 0x4070,
+ 0x6e3d, 0x4862, 0x3c6a, 0x3a4d, 0x5929, 0x4247, 0x4a27, 0x4271,
+ 0x592c, 0x592a, 0x592d, 0x592b, 0x592e, 0x4a31, 0x3037, 0x495e,
+ 0x4863, 0x592f, 0x5932, 0x3e35, 0x353b, 0x5930, 0x5937, 0x3e36,
+ 0x5931, 0x4744, 0x4d5e, 0x5933, 0x5934, 0x5938, 0x456a, 0x5935,
+ 0x3933, 0x405e, 0x5946, 0x4834, 0x4272, 0x4864, 0x5a2d, 0x4a7a,
+ 0x4471, 0x4b75, 0x593b, 0x3221, 0x436a, 0x5944, 0x4334, 0x593e,
+ 0x5945, 0x5940, 0x5947, 0x5943, 0x5942, 0x476f, 0x593c, 0x327d,
+ 0x593a, 0x3571, 0x4273, 0x5936, 0x5939, 0x3934, 0x405b, 0x3e37,
+ 0x5941, 0x4752, 0x3572, 0x3348, 0x3367, 0x3f21, 0x5949, 0x594e,
+ 0x594a, 0x377d, 0x594f, 0x3b22, 0x3969, 0x3d26, 0x593d, 0x3b7d,
+ 0x594c, 0x3b58, 0x594d, 0x3044, 0x5948, 0x4429, 0x3573, 0x3634,
+ 0x594b, 0x3027, 0x3a43, 0x3f36, 0x4472, 0x4854, 0x5951, 0x415e,
+ 0x422a, 0x3b2b, 0x5952, 0x5954, 0x5950, 0x4a61, 0x443d, 0x415c,
+ 0x4a7b, 0x3c4e, 0x5960, 0x595f, 0x3f78, 0x377e, 0x5959, 0x3e39,
+ 0x4668, 0x4731, 0x5957, 0x415d, 0x3c78, 0x595c, 0x3e38, 0x5956,
+ 0x595b, 0x4753, 0x5955, 0x3721, 0x335d, 0x595d, 0x4e2b, 0x3a4e,
+ 0x4335, 0x595a, 0x405c, 0x3935, 0x3f64, 0x3166, 0x413c, 0x5958,
+ 0x3545, 0x3747, 0x444f, 0x595e, 0x415f, 0x5961, 0x5963, 0x4237,
+ 0x5969, 0x5964, 0x5966, 0x4941, 0x4473, 0x5967, 0x4d2c, 0x4d48,
+ 0x3439, 0x302e, 0x5965, 0x5962, 0x3478, 0x3167, 0x5968, 0x4d49,
+ 0x596c, 0x423b, 0x5973, 0x596d, 0x596a, 0x5971, 0x5953, 0x596e,
+ 0x5972, 0x4842, 0x456b, 0x596b, 0x596f, 0x3748, 0x3a71, 0x405d,
+ 0x5977, 0x4526, 0x5974, 0x4b60, 0x5975, 0x5976, 0x4c4e, 0x4022,
+ 0x3762, 0x597d, 0x3b35, 0x597a, 0x5979, 0x4732, 0x4635, 0x4531,
+ 0x597b, 0x597c, 0x496f, 0x4745, 0x3b23, 0x4071, 0x4b50, 0x3349,
+ 0x5a25, 0x597e, 0x4d4a, 0x5a27, 0x5a23, 0x5a24, 0x4160, 0x5a22,
+ 0x593f, 0x5a26, 0x5a21, 0x5a2b, 0x5a2c, 0x4527, 0x5a2e, 0x3b24,
+ 0x5a29, 0x353c, 0x5a2f, 0x5a28, 0x5a33, 0x5a32, 0x5a31, 0x5a34,
+ 0x5a36, 0x3e71, 0x5a35, 0x5a39, 0x5a37, 0x5a38, 0x5970, 0x5a3b,
+ 0x5a3a, 0x5978, 0x5a3c, 0x5a30, 0x3b59, 0x5a3d, 0x5a3e, 0x5a40,
+ 0x5a3f, 0x5a41, 0x327e, 0x3936, 0x4a7c, 0x402f, 0x384e, 0x5a43,
+ 0x5a46, 0x4952, 0x355f, 0x5a45, 0x5a44, 0x4754, 0x5a47, 0x3635,
+ 0x5a49, 0x5a48, 0x343a, 0x3b36, 0x4658, 0x3749, 0x3f74, 0x5a4a,
+ 0x4030, 0x4528, 0x495f, 0x5a4b, 0x5a4c, 0x5a4d, 0x4a38, 0x555d,
+ 0x4046, 0x494c, 0x3a58, 0x4865, 0x4843, 0x454d, 0x4e41, 0x5a4f,
+ 0x3c50, 0x5a50, 0x3036, 0x3654, 0x404d, 0x4960, 0x5a51, 0x3b42,
+ 0x4347, 0x3b5b, 0x3f37, 0x5a52, 0x4a7d, 0x3177, 0x3b5c, 0x5a55,
+ 0x5a53, 0x5a56, 0x4e39, 0x5a54, 0x407b, 0x5a57, 0x4232, 0x5a58,
+ 0x347a, 0x5a5a, 0x5a59, 0x5a5b, 0x5a5c, 0x347b, 0x467c, 0x4336,
+ 0x356c, 0x3b5d, 0x4161, 0x3d5c, 0x3030, 0x5a5d, 0x3222, 0x5a61,
+ 0x3937, 0x5a60, 0x3a2b, 0x3e3a, 0x5a5f, 0x3e3b, 0x4c40, 0x3a2a,
+ 0x3057, 0x404e, 0x5a66, 0x4031, 0x3147, 0x3d55, 0x4b66, 0x3a72,
+ 0x3e3c, 0x4027, 0x5a65, 0x5a63, 0x5a64, 0x436b, 0x5b26, 0x5a6a,
+ 0x3b7e, 0x3938, 0x5a68, 0x5a69, 0x3f38, 0x5a67, 0x3b2f, 0x5a6c,
+ 0x5a6b, 0x5a70, 0x5a71, 0x5a6d, 0x3322, 0x5a6e, 0x5a6f, 0x4855,
+ 0x4961, 0x374a, 0x5a72, 0x4032, 0x3e3d, 0x4352, 0x3647, 0x5a73,
+ 0x5a77, 0x324b, 0x5a74, 0x5a76, 0x5a75, 0x3d6b, 0x4348, 0x3045,
+ 0x5a78, 0x5a79, 0x442a, 0x4e71, 0x3b43, 0x4a6b, 0x4b3d, 0x5b22,
+ 0x5a7b, 0x5a7e, 0x5a7d, 0x5a7a, 0x5b21, 0x465e, 0x5a7c, 0x5b23,
+ 0x3d6c, 0x5b24, 0x4d4b, 0x4778, 0x5b25, 0x5b27, 0x5b28, 0x5b29,
+ 0x364a, 0x3148, 0x3939, 0x5b2a, 0x5b2b, 0x3d71, 0x4162, 0x5258,
+ 0x413e, 0x413d, 0x4258, 0x3a47, 0x5072, 0x376e, 0x4d2d, 0x4a7e,
+ 0x497e, 0x5b2c, 0x3a73, 0x443f, 0x5b2d, 0x4f2f, 0x4b3e, 0x442b,
+ 0x5b2e, 0x347c, 0x5b2f, 0x5b30, 0x4c5a, 0x4c24, 0x4b76, 0x4b5c,
+ 0x3b25, 0x5b32, 0x3c6b, 0x4b51, 0x5b34, 0x5b37, 0x5b36, 0x3479,
+ 0x3560, 0x5b33, 0x5b35, 0x5b38, 0x3f79, 0x4d7b, 0x3049, 0x3a60,
+ 0x423c, 0x3c5d, 0x3e73, 0x5b3b, 0x454e, 0x5b39, 0x422b, 0x5b3a,
+ 0x3e72, 0x4c5d, 0x5b3c, 0x5b3d, 0x4d68, 0x5b42, 0x393a, 0x4755,
+ 0x5b3f, 0x456c, 0x5a5e, 0x5a62, 0x354f, 0x4747, 0x5b41, 0x3e3e,
+ 0x4844, 0x5b47, 0x487a, 0x5b3e, 0x5b44, 0x5b43, 0x404f, 0x4b6d,
+ 0x4e53, 0x4b67, 0x324c, 0x3b5e, 0x4f48, 0x5b46, 0x3f75, 0x5b45,
+ 0x5b40, 0x384f, 0x5b4c, 0x5b4a, 0x324d, 0x5b48, 0x5b4e, 0x5b54,
+ 0x4248, 0x4a41, 0x5b56, 0x4922, 0x5b55, 0x4770, 0x4b3f, 0x343b,
+ 0x4077, 0x3d40, 0x4453, 0x4d2e, 0x5b51, 0x5b50, 0x5b52, 0x5b4f,
+ 0x5b57, 0x5b4d, 0x5b4b, 0x5b53, 0x5b49, 0x436c, 0x4c78, 0x3c46,
+ 0x3a74, 0x3a3a, 0x4b6f, 0x3341, 0x444e, 0x464a, 0x3149, 0x4072,
+ 0x4034, 0x372a, 0x5b59, 0x393b, 0x337c, 0x5b5b, 0x3374, 0x5b61,
+ 0x5b5e, 0x4073, 0x334b, 0x3a2c, 0x334a, 0x3a4f, 0x5b5c, 0x3765,
+ 0x374b, 0x456d, 0x5b5a, 0x3046, 0x5b5d, 0x5b5f, 0x364d, 0x372c,
+ 0x343c, 0x354b, 0x5b62, 0x3a79, 0x4b71, 0x3b37, 0x5b63, 0x4930,
+ 0x5b6f, 0x3233, 0x5b64, 0x5b75, 0x5b65, 0x4e42, 0x5b6c, 0x475f,
+ 0x5b74, 0x5b67, 0x3034, 0x5b69, 0x393c, 0x5b6b, 0x5b6a, 0x5b66,
+ 0x5b71, 0x3e3f, 0x546d, 0x3868, 0x4d7c, 0x5b68, 0x4474, 0x3323,
+ 0x3a2d, 0x5b60, 0x5b70, 0x3361, 0x5b6e, 0x5b72, 0x456e, 0x347e,
+ 0x5c32, 0x4c49, 0x5b77, 0x347d, 0x5b7e, 0x4b40, 0x5c21, 0x5c23,
+ 0x5c27, 0x5b79, 0x432a, 0x456f, 0x5c2b, 0x5b7c, 0x5c28, 0x5c22,
+ 0x3f39, 0x5c2c, 0x4033, 0x5c2a, 0x343d, 0x4f50, 0x5b76, 0x5c26,
+ 0x3058, 0x5b78, 0x4c3a, 0x5b7d, 0x3f22, 0x4447, 0x5b73, 0x5c25,
+ 0x3f7a, 0x5c2f, 0x3371, 0x3821, 0x5c31, 0x5b7a, 0x5c30, 0x5c29,
+ 0x5b7b, 0x5c2d, 0x5c2e, 0x5c3f, 0x464e, 0x5c24, 0x5c3b, 0x5c3d,
+ 0x4458, 0x4d4c, 0x4976, 0x5c38, 0x424a, 0x5c3e, 0x413f, 0x5c35,
+ 0x5c42, 0x5c41, 0x466f, 0x5c40, 0x466a, 0x5c44, 0x5c37, 0x3648,
+ 0x5c3a, 0x3d5d, 0x4760, 0x5c3c, 0x364b, 0x5c34, 0x5c36, 0x5c33,
+ 0x4f30, 0x335a, 0x5c39, 0x5c43, 0x3335, 0x3a67, 0x315d, 0x5c54,
+ 0x4f31, 0x5c57, 0x3f3a, 0x5c56, 0x5c55, 0x5c52, 0x5c46, 0x5c63,
+ 0x5c45, 0x5c58, 0x5c50, 0x5c4b, 0x5c48, 0x5c49, 0x5c51, 0x7422,
+ 0x5c4e, 0x393d, 0x4448, 0x4164, 0x5c4c, 0x5c47, 0x5c4a, 0x4d4d,
+ 0x4b6a, 0x5c4f, 0x5c59, 0x5c61, 0x5c5a, 0x5c67, 0x5c65, 0x5c60,
+ 0x5c5f, 0x4450, 0x4165, 0x5c5d, 0x5c5b, 0x5c62, 0x5c68, 0x4875,
+ 0x5c6e, 0x5c69, 0x5c6c, 0x5c66, 0x4374, 0x4938, 0x5c5c, 0x5c64,
+ 0x3e40, 0x4c4f, 0x5c78, 0x5c6b, 0x3822, 0x3223, 0x335f, 0x5c53,
+ 0x3e41, 0x5c70, 0x5c77, 0x3c79, 0x3372, 0x432e, 0x5c6d, 0x5c72,
+ 0x5c76, 0x3636, 0x354c, 0x5c74, 0x3521, 0x464b, 0x5c73, 0x5c75,
+ 0x5c6f, 0x5c71, 0x3360, 0x4349, 0x5c7c, 0x5c7a, 0x3869, 0x5c79,
+ 0x5d21, 0x5b58, 0x5c7b, 0x5c7d, 0x5c7e, 0x5d2c, 0x5d28, 0x5b6d,
+ 0x5d27, 0x5d26, 0x5d23, 0x5c6a, 0x5d25, 0x5d24, 0x5d2a, 0x4f26,
+ 0x5d2d, 0x367b, 0x5d29, 0x5d2b, 0x4827, 0x5d2e, 0x5d32, 0x5d2f,
+ 0x4d73, 0x5d30, 0x5c5e, 0x5d33, 0x5d34, 0x3135, 0x5d36, 0x3767,
+ 0x3c21, 0x3655, 0x3224, 0x4d5f, 0x5d38, 0x5d37, 0x5d3a, 0x353d,
+ 0x3656, 0x343e, 0x5d3d, 0x5d3c, 0x5d3e, 0x324e, 0x4337, 0x5d3f,
+ 0x343f, 0x5d41, 0x5d40, 0x5d42, 0x5d43, 0x5d44, 0x3b5f, 0x4035,
+ 0x3a21, 0x4970, 0x4a62, 0x4f44, 0x3b75, 0x3a50, 0x4e72, 0x5d45,
+ 0x5d46, 0x3b60, 0x5d47, 0x5d48, 0x5d4a, 0x5d49, 0x4b58, 0x3d5e,
+ 0x3c6c, 0x3b44, 0x5d4b, 0x5d4d, 0x3f23, 0x5d4c, 0x5d4e, 0x5d4f,
+ 0x5d50, 0x5d51, 0x5d52, 0x5d54, 0x5d53, 0x5d55, 0x3225, 0x434a,
+ 0x5d56, 0x3b26, 0x334c, 0x5d57, 0x4542, 0x544c, 0x3523, 0x5d58,
+ 0x5d59, 0x4a6c, 0x4b68, 0x4647, 0x5d5a, 0x4866, 0x487b, 0x4c53,
+ 0x5d5b, 0x5d5d, 0x5d5c, 0x5d5f, 0x5d5e, 0x5d61, 0x3b61, 0x4c31,
+ 0x5d62, 0x5d63, 0x3524, 0x5d64, 0x5d66, 0x5d65, 0x3f65, 0x4939,
+ 0x314a, 0x4845, 0x4475, 0x3d41, 0x3561, 0x4846, 0x3c2e, 0x5d68,
+ 0x3440, 0x3178, 0x4672, 0x5d67, 0x393e, 0x4353, 0x5d69, 0x5d71,
+ 0x5d6a, 0x4241, 0x3562, 0x5d72, 0x3768, 0x3525, 0x5d70, 0x5d6e,
+ 0x5d6b, 0x4d60, 0x4440, 0x4659, 0x5d6c, 0x5d74, 0x5d73, 0x3723,
+ 0x322d, 0x3a3b, 0x5d6d, 0x5d6f, 0x4b57, 0x4274, 0x4b77, 0x5d7c,
+ 0x5d7d, 0x324f, 0x4a28, 0x4c7d, 0x5e21, 0x3c23, 0x3e42, 0x5d78,
+ 0x5d7e, 0x3168, 0x3637, 0x5d75, 0x5d7a, 0x4074, 0x4771, 0x4867,
+ 0x5d77, 0x4b21, 0x5d79, 0x5e24, 0x5e22, 0x5d7b, 0x4b22, 0x4748,
+ 0x3563, 0x4525, 0x436d, 0x5e25, 0x5e23, 0x4259, 0x5d76, 0x314b,
+ 0x4d4e, 0x5e30, 0x5e2f, 0x4076, 0x5e2c, 0x4d6c, 0x4636, 0x5e26,
+ 0x4445, 0x314c, 0x393f, 0x5e29, 0x3d27, 0x5e2e, 0x5e2d, 0x5e28,
+ 0x5e2b, 0x3368, 0x5e2a, 0x4749, 0x4e2e, 0x3e74, 0x4075, 0x5e36,
+ 0x5e34, 0x494d, 0x5e31, 0x5e33, 0x313a, 0x3940, 0x4f32, 0x333d,
+ 0x4962, 0x4d61, 0x3324, 0x3f3b, 0x5e35, 0x5e3a, 0x3e43, 0x4d30,
+ 0x5e37, 0x5e32, 0x5e38, 0x4e5e, 0x4573, 0x4642, 0x3336, 0x3155,
+ 0x5e3e, 0x5e41, 0x4e43, 0x4d64, 0x5e48, 0x5e42, 0x5e3f, 0x4e54,
+ 0x5e45, 0x3d4a, 0x5e47, 0x5e4c, 0x4571, 0x5e4a, 0x5e44, 0x4338,
+ 0x5e4b, 0x5e40, 0x5e46, 0x5e4d, 0x307c, 0x5e43, 0x5e4e, 0x3f3c,
+ 0x3d5f, 0x4a25, 0x3a2e, 0x5e3b, 0x5e49, 0x453a, 0x4036, 0x3369,
+ 0x3a51, 0x3e44, 0x5e3d, 0x3d42, 0x374c, 0x5e3c, 0x5e52, 0x3d6d,
+ 0x383a, 0x5e61, 0x5e5b, 0x3574, 0x454f, 0x5e56, 0x5e5f, 0x302f,
+ 0x3132, 0x3239, 0x5e58, 0x422c, 0x5e4f, 0x5e51, 0x3941, 0x5e62,
+ 0x5e5d, 0x5e55, 0x5e5c, 0x4c2b, 0x5e5a, 0x5e5e, 0x3850, 0x3e45,
+ 0x4339, 0x5e54, 0x4d2f, 0x5e57, 0x5e50, 0x4572, 0x5e53, 0x5e59,
+ 0x4f51, 0x3c3e, 0x4b7e, 0x5e63, 0x482e, 0x5e6f, 0x383b, 0x3d60,
+ 0x5e65, 0x4e2f, 0x3942, 0x5e72, 0x306e, 0x5e70, 0x5e64, 0x5e6a,
+ 0x5e6c, 0x4d4f, 0x5e67, 0x452e, 0x5e69, 0x5e71, 0x5e6b, 0x4c47,
+ 0x5e66, 0x3c22, 0x5e7e, 0x336a, 0x5e68, 0x5e6d, 0x5e6e, 0x426c,
+ 0x425a, 0x5e76, 0x5e7c, 0x5e7a, 0x4529, 0x5f23, 0x5e77, 0x5e78,
+ 0x5e60, 0x3579, 0x493a, 0x3c3f, 0x3977, 0x4f33, 0x5e74, 0x5f22,
+ 0x3169, 0x4166, 0x4779, 0x3441, 0x4e7a, 0x4c21, 0x4452, 0x5e7b,
+ 0x5e7d, 0x4132, 0x5f21, 0x5e79, 0x5e73, 0x3443, 0x3769, 0x5f2f,
+ 0x5f2a, 0x4078, 0x3363, 0x3d61, 0x5f33, 0x5f2c, 0x442c, 0x5f29,
+ 0x4459, 0x5f4c, 0x5f26, 0x5f25, 0x5f2e, 0x5f28, 0x5f27, 0x5f2d,
+ 0x4021, 0x5f24, 0x5f30, 0x5f31, 0x3442, 0x5f36, 0x5f35, 0x5f37,
+ 0x5f3a, 0x4543, 0x5f34, 0x5f38, 0x3763, 0x4279, 0x5f32, 0x473b,
+ 0x5f39, 0x5f3e, 0x5f3c, 0x5f3f, 0x5f42, 0x5f3b, 0x396a, 0x4728,
+ 0x5e39, 0x4d74, 0x5f3d, 0x5f41, 0x4275, 0x5f40, 0x5f2b, 0x6f69,
+ 0x5f45, 0x5f49, 0x5f47, 0x5f43, 0x5f44, 0x5f48, 0x5f46, 0x494e,
+ 0x5f4e, 0x5f4b, 0x5f4a, 0x5f4d, 0x4654, 0x5f4f, 0x4375, 0x426d,
+ 0x4025, 0x5f50, 0x5f52, 0x5f51, 0x5e75, 0x5f53, 0x4667, 0x5f54,
+ 0x3250, 0x4574, 0x3325, 0x3564, 0x3c5e, 0x3a52, 0x4f27, 0x3f66,
+ 0x316a, 0x5f56, 0x5f55, 0x5f59, 0x433a, 0x5f5c, 0x5f57, 0x5f5b,
+ 0x5f5a, 0x4540, 0x3059, 0x4e75, 0x5f5e, 0x3128, 0x5f60, 0x5f5f,
+ 0x5f5d, 0x5f58, 0x4b23, 0x5f62, 0x5f61, 0x316b, 0x5f64, 0x4a32,
+ 0x5f63, 0x4c35, 0x3e47, 0x4133, 0x3e46, 0x4e7b, 0x5f6a, 0x4079,
+ 0x5f66, 0x5f6b, 0x316c, 0x5f69, 0x4761, 0x5f65, 0x5f68, 0x3e48,
+ 0x4851, 0x5f6c, 0x3c51, 0x407a, 0x5f6f, 0x5f67, 0x3727, 0x5f6d,
+ 0x4d50, 0x5f70, 0x7426, 0x3d4f, 0x5f71, 0x5f72, 0x472e, 0x5f74,
+ 0x5f75, 0x4733, 0x4575, 0x5f77, 0x5f79, 0x4e55, 0x5f76, 0x5f78,
+ 0x316d, 0x5f73, 0x535b, 0x5f7a, 0x4167, 0x3b38, 0x5f7c, 0x5f7b,
+ 0x3f24, 0x5259, 0x5f7d, 0x6021, 0x5f6e, 0x5f7e, 0x6022, 0x477a,
+ 0x6023, 0x6024, 0x6025, 0x6026, 0x445e, 0x6028, 0x6027, 0x6029,
+ 0x602a, 0x3c5f, 0x4963, 0x4c6c, 0x602b, 0x602c, 0x4156, 0x3c24,
+ 0x602d, 0x602e, 0x602f, 0x4a52, 0x4847, 0x6030, 0x4757, 0x442d,
+ 0x6031, 0x3267, 0x356d, 0x4c46, 0x4c36, 0x3234, 0x4f34, 0x4b52,
+ 0x4a2a, 0x4037, 0x6032, 0x4643, 0x3823, 0x6033, 0x3a54, 0x6035,
+ 0x6034, 0x6036, 0x6037, 0x6038, 0x353e, 0x6039, 0x603a, 0x3824,
+ 0x4848, 0x603c, 0x3e75, 0x603b, 0x3638, 0x603d, 0x603f, 0x603e,
+ 0x6040, 0x3851, 0x6041, 0x3669, 0x4140, 0x397d, 0x6043, 0x6044,
+ 0x6042, 0x3c6d, 0x4648, 0x3639, 0x6046, 0x432c, 0x6045, 0x4f35,
+ 0x4762, 0x6049, 0x604b, 0x6048, 0x4c54, 0x604a, 0x604c, 0x4e44,
+ 0x6050, 0x604f, 0x4376, 0x472d, 0x3825, 0x604e, 0x604d, 0x4d31,
+ 0x4d32, 0x6051, 0x316e, 0x3976, 0x3b62, 0x6052, 0x6053, 0x6055,
+ 0x3d43, 0x6057, 0x6056, 0x6058, 0x334d, 0x605a, 0x6059, 0x605c,
+ 0x605b, 0x383c, 0x4e28, 0x364c, 0x3226, 0x366a, 0x3461, 0x4e68,
+ 0x605e, 0x6060, 0x6061, 0x3251, 0x605d, 0x3b39, 0x4441, 0x605f,
+ 0x6064, 0x3c6e, 0x6062, 0x373e, 0x4849, 0x6063, 0x607e, 0x6069,
+ 0x383d, 0x3565, 0x6066, 0x4d7d, 0x4e30, 0x4276, 0x6068, 0x606a,
+ 0x4e56, 0x3657, 0x487c, 0x474a, 0x606b, 0x606d, 0x6070, 0x606c,
+ 0x606f, 0x386a, 0x314d, 0x6071, 0x3f70, 0x606e, 0x4e5c, 0x6074,
+ 0x7424, 0x6072, 0x6075, 0x6067, 0x6073, 0x3a3c, 0x6076, 0x6077,
+ 0x4d7e, 0x6078, 0x6079, 0x6065, 0x607a, 0x3444, 0x3c25, 0x607b,
+ 0x607c, 0x607d, 0x313b, 0x6121, 0x493b, 0x6122, 0x3424, 0x6123,
+ 0x6124, 0x6125, 0x6127, 0x6128, 0x6126, 0x4953, 0x612a, 0x6129,
+ 0x612c, 0x612b, 0x612d, 0x612e, 0x6130, 0x612f, 0x3979, 0x6132,
+ 0x6131, 0x3445, 0x3f53, 0x453c, 0x6133, 0x4038, 0x3b3a, 0x3179,
+ 0x6134, 0x4d51, 0x4a63, 0x6135, 0x4544, 0x4d33, 0x3943, 0x3f3d,
+ 0x434b, 0x5234, 0x442e, 0x3268, 0x6136, 0x6137, 0x613c, 0x613a,
+ 0x6139, 0x5a42, 0x3326, 0x6138, 0x305a, 0x482a, 0x484a, 0x4e31,
+ 0x613d, 0x613b, 0x435c, 0x4026, 0x482b, 0x492d, 0x613f, 0x4e2c,
+ 0x374d, 0x6140, 0x613e, 0x4856, 0x6141, 0x6142, 0x305b, 0x3e76,
+ 0x6147, 0x6144, 0x466d, 0x6143, 0x3526, 0x614a, 0x6145, 0x6146,
+ 0x6149, 0x6148, 0x4925, 0x4142, 0x4141, 0x353f, 0x614b, 0x614c,
+ 0x614d, 0x614f, 0x614e, 0x3156, 0x6157, 0x4868, 0x6151, 0x6153,
+ 0x6155, 0x3f3e, 0x6156, 0x6154, 0x3c40, 0x6150, 0x6152, 0x4942,
+ 0x3e49, 0x6159, 0x6158, 0x615a, 0x3c26, 0x3a2f, 0x4577, 0x615b,
+ 0x444b, 0x615d, 0x4e21, 0x615c, 0x4169, 0x6162, 0x6164, 0x6165,
+ 0x4354, 0x6163, 0x6160, 0x615e, 0x615f, 0x6161, 0x6168, 0x6166,
+ 0x6167, 0x6169, 0x616b, 0x616c, 0x616d, 0x616e, 0x616a, 0x6170,
+ 0x616f, 0x6171, 0x4e45, 0x6174, 0x6172, 0x6173, 0x3462, 0x4c7e,
+ 0x4a4a, 0x6176, 0x6175, 0x6177, 0x6178, 0x617c, 0x6179, 0x617a,
+ 0x617b, 0x617d, 0x617e, 0x6221, 0x6222, 0x6223, 0x482f, 0x4550,
+ 0x6224, 0x4772, 0x4934, 0x6225, 0x6226, 0x452a, 0x3327, 0x3944,
+ 0x6227, 0x6228, 0x6229, 0x3b29, 0x622b, 0x622a, 0x622c, 0x622d,
+ 0x4869, 0x622e, 0x622f, 0x7369, 0x6230, 0x6231, 0x6232, 0x3b2e,
+ 0x6233, 0x4756, 0x4b5f, 0x314e, 0x3157, 0x6234, 0x6236, 0x6235,
+ 0x4570, 0x4039, 0x5d39, 0x6237, 0x4c41, 0x6238, 0x3446, 0x4857,
+ 0x6239, 0x623a, 0x623b, 0x4c5c, 0x4c55, 0x443e, 0x416a, 0x623d,
+ 0x3d62, 0x3e4a, 0x6240, 0x623f, 0x623e, 0x487d, 0x3447, 0x3829,
+ 0x6246, 0x6243, 0x3f3f, 0x4c32, 0x6242, 0x6244, 0x6245, 0x6241,
+ 0x6247, 0x6248, 0x442f, 0x3463, 0x4365, 0x6249, 0x624a, 0x624d,
+ 0x3f67, 0x4644, 0x624e, 0x4b53, 0x624b, 0x624c, 0x6251, 0x6250,
+ 0x624f, 0x6253, 0x6252, 0x6254, 0x6256, 0x6255, 0x4a4d, 0x3d56,
+ 0x4e46, 0x6257, 0x4637, 0x6258, 0x6259, 0x625d, 0x625b, 0x625c,
+ 0x625a, 0x625e, 0x625f, 0x6260, 0x6261, 0x4c37, 0x6262, 0x4c70,
+ 0x6263, 0x434e, 0x476a, 0x366b, 0x433b, 0x6264, 0x363a, 0x4050,
+ 0x6265, 0x3a3d, 0x6266, 0x6267, 0x3826, 0x3a55, 0x6269, 0x4556,
+ 0x3a56, 0x354e, 0x4b24, 0x474b, 0x4557, 0x395c, 0x626b, 0x3e4b,
+ 0x4e32, 0x3945, 0x3827, 0x4823, 0x626d, 0x626f, 0x386b, 0x626e,
+ 0x4476, 0x6271, 0x3337, 0x626c, 0x486a, 0x3130, 0x3a6c, 0x4f52,
+ 0x6270, 0x6272, 0x4a4b, 0x4059, 0x6274, 0x6275, 0x6273, 0x334e,
+ 0x627b, 0x627a, 0x3c27, 0x627c, 0x6277, 0x627d, 0x6278, 0x4858,
+ 0x6276, 0x6279, 0x6322, 0x6321, 0x4b61, 0x627e, 0x306b, 0x6324,
+ 0x6323, 0x3e4c, 0x6325, 0x4143, 0x6327, 0x6326, 0x6328, 0x6268,
+ 0x626a, 0x632a, 0x6329, 0x3c28, 0x4e69, 0x3c52, 0x632b, 0x3737,
+ 0x3540, 0x3527, 0x3b63, 0x4d34, 0x6331, 0x6330, 0x4144, 0x632d,
+ 0x632f, 0x3d4b, 0x3f40, 0x632e, 0x632c, 0x472a, 0x3e4d, 0x493c,
+ 0x3a57, 0x4578, 0x6332, 0x6333, 0x6349, 0x3658, 0x4f3d, 0x4135,
+ 0x6334, 0x3252, 0x4477, 0x4a21, 0x6335, 0x357a, 0x6336, 0x6338,
+ 0x6339, 0x4729, 0x633a, 0x633b, 0x633c, 0x3659, 0x3253, 0x4645,
+ 0x3d28, 0x3b64, 0x633d, 0x3d29, 0x324a, 0x4943, 0x633e, 0x486b,
+ 0x4145, 0x6341, 0x6342, 0x4769, 0x3f41, 0x633f, 0x4361, 0x6340,
+ 0x3e4e, 0x305c, 0x3529, 0x6343, 0x4478, 0x6344, 0x4047, 0x4c2d,
+ 0x4923, 0x6345, 0x6346, 0x4355, 0x4e47, 0x6348, 0x6347, 0x3c6f,
+ 0x634a, 0x3070, 0x634d, 0x634b, 0x3254, 0x374e, 0x634c, 0x3946,
+ 0x3972, 0x4a66, 0x634e, 0x4b54, 0x6350, 0x4051, 0x314f, 0x323a,
+ 0x302c, 0x634f, 0x6351, 0x6352, 0x3e77, 0x6353, 0x334f, 0x6355,
+ 0x376a, 0x3566, 0x6356, 0x3675, 0x6357, 0x407c, 0x464d, 0x4060,
+ 0x3a75, 0x6358, 0x4362, 0x416b, 0x635a, 0x635c, 0x6359, 0x635b,
+ 0x3722, 0x635d, 0x3726, 0x3567, 0x4d52, 0x635f, 0x6360, 0x312e,
+ 0x6363, 0x3376, 0x6362, 0x6361, 0x6365, 0x635e, 0x6366, 0x4e29,
+ 0x6367, 0x6368, 0x5474, 0x636a, 0x6369, 0x636b, 0x636c, 0x4e35,
+ 0x636d, 0x706f, 0x3e4f, 0x636e, 0x636f, 0x3d57, 0x4638, 0x6370,
+ 0x4328, 0x6371, 0x433c, 0x6372, 0x3625, 0x513f, 0x435d, 0x3c33,
+ 0x3448, 0x6373, 0x6422, 0x6376, 0x3568, 0x6375, 0x6424, 0x6374,
+ 0x3e50, 0x6378, 0x6379, 0x452b, 0x637a, 0x335e, 0x3f5a, 0x4964,
+ 0x637c, 0x4268, 0x6377, 0x637b, 0x637d, 0x3a7b, 0x6426, 0x492e,
+ 0x4826, 0x4579, 0x365a, 0x6425, 0x6423, 0x4835, 0x637e, 0x435e,
+ 0x457b, 0x457a, 0x3a76, 0x6438, 0x6428, 0x642a, 0x642d, 0x642e,
+ 0x642b, 0x642c, 0x6429, 0x6427, 0x6421, 0x4a4f, 0x3255, 0x6435,
+ 0x6432, 0x6437, 0x6436, 0x4773, 0x4c27, 0x3b3b, 0x6430, 0x6439,
+ 0x6434, 0x6433, 0x642f, 0x6431, 0x3449, 0x433d, 0x407d, 0x4822,
+ 0x643e, 0x4824, 0x4061, 0x643b, 0x484f, 0x643f, 0x4a53, 0x435b,
+ 0x643a, 0x643c, 0x643d, 0x6440, 0x3c44, 0x4646, 0x6445, 0x6444,
+ 0x6441, 0x4f36, 0x644a, 0x644e, 0x644b, 0x6447, 0x6448, 0x644d,
+ 0x6442, 0x5255, 0x6449, 0x6443, 0x644c, 0x6452, 0x344a, 0x644f,
+ 0x6450, 0x6451, 0x6454, 0x6453, 0x4876, 0x6455, 0x4e7c, 0x4a6d,
+ 0x645a, 0x6457, 0x6456, 0x4052, 0x6459, 0x645b, 0x6458, 0x645f,
+ 0x645c, 0x645d, 0x6446, 0x645e, 0x6460, 0x6461, 0x4a46, 0x6462,
+ 0x4c62, 0x364e, 0x3729, 0x6463, 0x4a34, 0x3f68, 0x4c30, 0x6464,
+ 0x4e33, 0x4774, 0x4146, 0x4734, 0x3d4d, 0x3040, 0x6469, 0x6467,
+ 0x6465, 0x3421, 0x3e51, 0x646a, 0x6468, 0x6466, 0x646e, 0x646d,
+ 0x646c, 0x646b, 0x646f, 0x6470, 0x403a, 0x6471, 0x6473, 0x6472,
+ 0x3852, 0x4138, 0x6475, 0x457c, 0x6474, 0x6476, 0x4a35, 0x416c,
+ 0x3947, 0x6477, 0x4e48, 0x6479, 0x647a, 0x647b, 0x647c, 0x3b65,
+ 0x647d, 0x374f, 0x356a, 0x352a, 0x6521, 0x4c73, 0x3948, 0x647e,
+ 0x6524, 0x4c66, 0x473c, 0x4933, 0x3d63, 0x6523, 0x3c53, 0x3949,
+ 0x3b66, 0x3569, 0x4a36, 0x6522, 0x4147, 0x4b42, 0x3a77, 0x3b67,
+ 0x445d, 0x6527, 0x4e5f, 0x3a59, 0x6528, 0x3f42, 0x652a, 0x3e52,
+ 0x3a30, 0x6529, 0x3d2a, 0x383e, 0x4148, 0x6525, 0x652b, 0x6526,
+ 0x3750, 0x652e, 0x6532, 0x376b, 0x652d, 0x6536, 0x394a, 0x4d6d,
+ 0x303c, 0x6533, 0x356b, 0x6530, 0x6531, 0x457d, 0x652f, 0x652c,
+ 0x3328, 0x4064, 0x3828, 0x6538, 0x6535, 0x6537, 0x6534, 0x3751,
+ 0x4233, 0x6539, 0x416e, 0x6546, 0x6542, 0x653c, 0x6540, 0x3c7a,
+ 0x305d, 0x653b, 0x6543, 0x6547, 0x394b, 0x4c56, 0x4456, 0x653d,
+ 0x6545, 0x653a, 0x433e, 0x653f, 0x303d, 0x4c4a, 0x653e, 0x365b,
+ 0x486c, 0x416d, 0x4e50, 0x3d6f, 0x656e, 0x6548, 0x407e, 0x6544,
+ 0x6549, 0x654b, 0x4479, 0x654e, 0x654a, 0x4a54, 0x344b, 0x4c4b,
+ 0x305e, 0x654d, 0x4e7d, 0x654c, 0x316f, 0x466c, 0x654f, 0x6556,
+ 0x6550, 0x6557, 0x6553, 0x477b, 0x3c4a, 0x6555, 0x6552, 0x6558,
+ 0x6551, 0x3d44, 0x4b25, 0x3d4c, 0x6554, 0x6560, 0x655c, 0x655f,
+ 0x655d, 0x6561, 0x655b, 0x6541, 0x4053, 0x484b, 0x655e, 0x6559,
+ 0x4121, 0x3752, 0x3d2b, 0x3f25, 0x4136, 0x6564, 0x6566, 0x6567,
+ 0x6563, 0x6565, 0x655a, 0x6562, 0x656a, 0x6569, 0x4b7a, 0x372b,
+ 0x6568, 0x656c, 0x656b, 0x656f, 0x6571, 0x3b3c, 0x656d, 0x6572,
+ 0x6573, 0x6574, 0x657a, 0x453b, 0x6576, 0x6575, 0x6577, 0x6578,
+ 0x6579, 0x657b, 0x657c, 0x344c, 0x657d, 0x657e, 0x6621, 0x6622,
+ 0x6623, 0x6624, 0x6625, 0x6626, 0x6628, 0x6627, 0x6629, 0x662a,
+ 0x662b, 0x662e, 0x662c, 0x662d, 0x3a61, 0x3753, 0x4356, 0x4833,
+ 0x3d70, 0x474d, 0x486d, 0x662f, 0x586d, 0x6630, 0x6632, 0x4d65,
+ 0x6631, 0x6634, 0x6633, 0x4d53, 0x6635, 0x487e, 0x6636, 0x6639,
+ 0x6638, 0x6637, 0x663a, 0x3732, 0x4122, 0x3541, 0x663e, 0x663b,
+ 0x663c, 0x663f, 0x6640, 0x663d, 0x3129, 0x3227, 0x6642, 0x6643,
+ 0x6644, 0x4d62, 0x3d2c, 0x6646, 0x6645, 0x3f69, 0x6647, 0x6648,
+ 0x6649, 0x3465, 0x344d, 0x664a, 0x664b, 0x4b5d, 0x4d63, 0x4d54,
+ 0x4f37, 0x394d, 0x664e, 0x3c54, 0x664d, 0x664f, 0x3c29, 0x4251,
+ 0x6650, 0x394c, 0x4c57, 0x6651, 0x6652, 0x6653, 0x6654, 0x6655,
+ 0x3c2a, 0x4c6d, 0x6657, 0x433f, 0x6656, 0x6659, 0x6658, 0x665a,
+ 0x403b, 0x665b, 0x665c, 0x4a39, 0x665d, 0x416f, 0x665e, 0x665f,
+ 0x4e7e, 0x6662, 0x6661, 0x6660, 0x4430, 0x6663, 0x3f26, 0x6664,
+ 0x6665, 0x4f38, 0x6666, 0x6667, 0x6669, 0x6668, 0x4825, 0x4679,
+ 0x4f3e, 0x4829, 0x666b, 0x3e53, 0x492a, 0x666c, 0x666a, 0x344e,
+ 0x3854, 0x3b68, 0x486e, 0x382a, 0x4b43, 0x666f, 0x666d, 0x394e,
+ 0x394f, 0x3069, 0x3a68, 0x4759, 0x305f, 0x6674, 0x4340, 0x4758,
+ 0x425b, 0x6676, 0x6672, 0x6675, 0x6670, 0x6673, 0x4b26, 0x3855,
+ 0x307d, 0x6671, 0x6678, 0x6679, 0x4639, 0x363b, 0x6726, 0x473d,
+ 0x3b69, 0x363c, 0x4048, 0x4f46, 0x4c2e, 0x6677, 0x4054, 0x3553,
+ 0x667a, 0x667c, 0x667b, 0x667d, 0x4326, 0x473e, 0x4431, 0x6723,
+ 0x6722, 0x667e, 0x3f55, 0x4965, 0x6725, 0x6724, 0x3950, 0x4f53,
+ 0x6735, 0x6729, 0x672a, 0x3c70, 0x6728, 0x3978, 0x6727, 0x672b,
+ 0x4432, 0x4a22, 0x4123, 0x425c, 0x672f, 0x6730, 0x672c, 0x672d,
+ 0x672e, 0x3951, 0x6736, 0x6732, 0x4966, 0x4b6c, 0x4928, 0x6731,
+ 0x6734, 0x6733, 0x4b44, 0x6737, 0x6738, 0x4137, 0x6739, 0x673b,
+ 0x673f, 0x673c, 0x673a, 0x473f, 0x673d, 0x673e, 0x3232, 0x6745,
+ 0x6740, 0x6741, 0x6742, 0x4221, 0x6744, 0x6743, 0x6746, 0x6747,
+ 0x6748, 0x3f43, 0x3269, 0x6749, 0x4e57, 0x3c2b, 0x3d2d, 0x3b6a,
+ 0x4357, 0x674a, 0x674b, 0x3131, 0x674c, 0x674d, 0x674e, 0x674f,
+ 0x6750, 0x363d, 0x5a2a, 0x6751, 0x4065, 0x6752, 0x3c4b, 0x6753,
+ 0x5030, 0x6754, 0x4a5e, 0x345c, 0x4124, 0x3d58, 0x4971, 0x3d2e,
+ 0x6755, 0x3952, 0x6756, 0x484c, 0x6764, 0x6758, 0x4249, 0x4775,
+ 0x383f, 0x6757, 0x4125, 0x6759, 0x447a, 0x675b, 0x675a, 0x675d,
+ 0x675c, 0x675e, 0x6760, 0x675f, 0x344f, 0x6761, 0x6762, 0x6763,
+ 0x3a31, 0x4e49, 0x6765, 0x3f27, 0x3170, 0x6766, 0x6767, 0x6768,
+ 0x3072, 0x6769, 0x676a, 0x4967, 0x3c47, 0x676c, 0x3329, 0x3032,
+ 0x676b, 0x676e, 0x474e, 0x3f44, 0x3256, 0x4b27, 0x375d, 0x365c,
+ 0x676d, 0x326a, 0x3423, 0x3171, 0x6772, 0x4e6a, 0x425d, 0x4944,
+ 0x677e, 0x3257, 0x677c, 0x677a, 0x6771, 0x676f, 0x6770, 0x3c63,
+ 0x366c, 0x4377, 0x4651, 0x3151, 0x6774, 0x6773, 0x6779, 0x6775,
+ 0x6778, 0x4c50, 0x6777, 0x3258, 0x337d, 0x677b, 0x677d, 0x3754,
+ 0x6823, 0x682c, 0x682d, 0x302b, 0x6834, 0x3071, 0x682b, 0x682a,
+ 0x6825, 0x6824, 0x6822, 0x6821, 0x4363, 0x427b, 0x6827, 0x6826,
+ 0x6829, 0x4170, 0x3755, 0x3141, 0x6828, 0x3953, 0x4171, 0x683a,
+ 0x683b, 0x3259, 0x322e, 0x6838, 0x682e, 0x6836, 0x683d, 0x6837,
+ 0x6835, 0x6776, 0x6833, 0x682f, 0x3450, 0x6831, 0x683c, 0x6832,
+ 0x683e, 0x6830, 0x477c, 0x4d69, 0x6839, 0x684f, 0x6847, 0x3f7b,
+ 0x3546, 0x365d, 0x6842, 0x325b, 0x3e54, 0x6845, 0x3a5a, 0x4551,
+ 0x684a, 0x4a6e, 0x6841, 0x325a, 0x3856, 0x4929, 0x684b, 0x683f,
+ 0x6848, 0x6852, 0x6843, 0x6844, 0x463a, 0x6849, 0x6846, 0x4b28,
+ 0x684c, 0x3060, 0x6840, 0x684e, 0x684d, 0x476b, 0x6854, 0x685f,
+ 0x337e, 0x6862, 0x6850, 0x6855, 0x4d6e, 0x685e, 0x4d55, 0x4e2a,
+ 0x4378, 0x336b, 0x4972, 0x6864, 0x4621, 0x3031, 0x685d, 0x6859,
+ 0x4172, 0x6853, 0x685b, 0x6860, 0x472c, 0x302a, 0x6858, 0x6861,
+ 0x4978, 0x685c, 0x6857, 0x3e55, 0x3d2f, 0x3c2c, 0x4c58, 0x4947,
+ 0x6867, 0x6870, 0x685a, 0x3377, 0x3e78, 0x6865, 0x686a, 0x4173,
+ 0x6866, 0x686d, 0x435f, 0x686e, 0x4d56, 0x6863, 0x3338, 0x6869,
+ 0x686c, 0x4c2c, 0x686f, 0x6868, 0x686b, 0x4b29, 0x4f21, 0x6873,
+ 0x687a, 0x6872, 0x3c43, 0x6851, 0x4a4e, 0x4c22, 0x6879, 0x6878,
+ 0x6874, 0x6875, 0x3136, 0x6877, 0x6871, 0x4455, 0x6876, 0x307e,
+ 0x4222, 0x4a43, 0x687b, 0x6921, 0x4859, 0x687e, 0x3e56, 0x3c49,
+ 0x6923, 0x363e, 0x6924, 0x4979, 0x687d, 0x6856, 0x687c, 0x4f4f,
+ 0x4622, 0x4973, 0x692b, 0x6931, 0x6932, 0x6925, 0x4776, 0x692f,
+ 0x6927, 0x6929, 0x6933, 0x6928, 0x692c, 0x3172, 0x4665, 0x692d,
+ 0x6930, 0x6926, 0x4126, 0x692a, 0x3b27, 0x3f45, 0x3730, 0x4c74,
+ 0x4c79, 0x3d72, 0x6937, 0x6935, 0x4f4e, 0x6934, 0x4d75, 0x6936,
+ 0x6938, 0x6939, 0x693c, 0x693a, 0x4623, 0x693b, 0x484d, 0x692e,
+ 0x3d73, 0x693d, 0x6942, 0x4174, 0x6941, 0x6922, 0x6943, 0x4149,
+ 0x693e, 0x6940, 0x693f, 0x5d31, 0x5d22, 0x6945, 0x6944, 0x4d76,
+ 0x623c, 0x6946, 0x6947, 0x6948, 0x3857, 0x3554, 0x694a, 0x515d,
+ 0x3575, 0x4e3a, 0x3673, 0x694b, 0x694c, 0x436e, 0x694d, 0x467a,
+ 0x303a, 0x3263, 0x6952, 0x6953, 0x694e, 0x3b3d, 0x694f, 0x4742,
+ 0x6950, 0x6951, 0x695b, 0x6955, 0x6958, 0x6954, 0x6956, 0x6957,
+ 0x3c58, 0x6959, 0x4341, 0x3756, 0x3342, 0x695c, 0x333f, 0x6961,
+ 0x695d, 0x6960, 0x483a, 0x695e, 0x695f, 0x4948, 0x485a, 0x6962,
+ 0x427d, 0x696c, 0x6968, 0x326b, 0x6966, 0x4b2a, 0x6967, 0x6964,
+ 0x6965, 0x696a, 0x696d, 0x696b, 0x6969, 0x6963, 0x4358, 0x6974,
+ 0x4c2a, 0x6972, 0x6973, 0x696e, 0x6970, 0x6971, 0x696f, 0x4066,
+ 0x4f39, 0x6978, 0x6979, 0x6a21, 0x3f2a, 0x697b, 0x697e, 0x6976,
+ 0x6975, 0x6a22, 0x325c, 0x697c, 0x6a23, 0x697d, 0x697a, 0x4433,
+ 0x6977, 0x4768, 0x6a27, 0x4d3b, 0x6a26, 0x6a25, 0x6a2e, 0x6a28,
+ 0x6a30, 0x4d66, 0x6a33, 0x6a2a, 0x6a2b, 0x6a2f, 0x6a32, 0x6a31,
+ 0x6a29, 0x6a2c, 0x6a3d, 0x6a36, 0x6a34, 0x6a35, 0x6a3a, 0x6a3b,
+ 0x332a, 0x3542, 0x6a39, 0x6a24, 0x6a38, 0x6a3c, 0x6a37, 0x6a3e,
+ 0x6a40, 0x6a3f, 0x6a42, 0x6a41, 0x695a, 0x6a46, 0x6a43, 0x6a44,
+ 0x6a45, 0x6a47, 0x376c, 0x6a49, 0x6a48, 0x3d30, 0x3954, 0x5e27,
+ 0x6a4a, 0x3d51, 0x3339, 0x6a4b, 0x3152, 0x3e57, 0x6a4c, 0x3955,
+ 0x6a4d, 0x3061, 0x493d, 0x6a4e, 0x3f6a, 0x6a55, 0x6a52, 0x436f,
+ 0x6a53, 0x6a50, 0x365e, 0x6a4f, 0x6a56, 0x3736, 0x425e, 0x6a5c,
+ 0x6a58, 0x4235, 0x6a57, 0x6a5a, 0x6a51, 0x6a5b, 0x6a5d, 0x486f,
+ 0x6a59, 0x6a5e, 0x6a60, 0x3853, 0x6a54, 0x3041, 0x6a5f, 0x3a5b,
+ 0x4e76, 0x6a61, 0x6a62, 0x4175, 0x4e22, 0x6a63, 0x4d35, 0x6a64,
+ 0x6a65, 0x4a64, 0x6a66, 0x3a40, 0x4e23, 0x6a6b, 0x6a6c, 0x3e58,
+ 0x6a6a, 0x4d67, 0x6a67, 0x6a69, 0x403d, 0x3f7e, 0x6a68, 0x6a6d,
+ 0x4a23, 0x6a6f, 0x6a6e, 0x336c, 0x4b2b, 0x6a70, 0x6a7c, 0x6a72,
+ 0x6a73, 0x6a74, 0x6a75, 0x6a79, 0x6a7a, 0x6a78, 0x6a76, 0x6a71,
+ 0x6a77, 0x6a7b, 0x7037, 0x3228, 0x6a7e, 0x365f, 0x6a7d, 0x6b22,
+ 0x6b21, 0x6b24, 0x6b23, 0x6b25, 0x3d31, 0x6b26, 0x6b27, 0x6b28,
+ 0x403e, 0x4d57, 0x6b29, 0x4a24, 0x4746, 0x6b2a, 0x6b2b, 0x382b,
+ 0x352c, 0x6b2c, 0x3b6b, 0x4741, 0x6b2d, 0x3350, 0x6b2e, 0x6b30,
+ 0x4d77, 0x6b2f, 0x3f46, 0x6b31, 0x6b32, 0x6b33, 0x3451, 0x6b34,
+ 0x6b35, 0x6b36, 0x6b37, 0x3351, 0x6b38, 0x6b39, 0x6b3a, 0x3272,
+ 0x3f28, 0x6b3b, 0x6b3c, 0x6b3d, 0x3840, 0x447b, 0x6b3e, 0x3757,
+ 0x3f56, 0x6b41, 0x4624, 0x6b40, 0x3731, 0x6b3f, 0x4277, 0x352d,
+ 0x6b42, 0x6b43, 0x3e59, 0x376d, 0x6b44, 0x4b2c, 0x405f, 0x3576,
+ 0x4c75, 0x414a, 0x6b45, 0x3f47, 0x4370, 0x3e5a, 0x6b46, 0x6b49,
+ 0x6b4a, 0x3a3e, 0x4242, 0x6b48, 0x3e5b, 0x493e, 0x6b47, 0x3b6c,
+ 0x3153, 0x6b4e, 0x3758, 0x3b6e, 0x3b6d, 0x4f4d, 0x6b4d, 0x6b4c,
+ 0x4127, 0x354d, 0x4f43, 0x333a, 0x3e5c, 0x6b4b, 0x6b50, 0x6b51,
+ 0x6b4f, 0x3858, 0x4d40, 0x3b6f, 0x4727, 0x6b54, 0x4040, 0x4342,
+ 0x4d36, 0x6b57, 0x386c, 0x403f, 0x6b53, 0x6b58, 0x386d, 0x6b55,
+ 0x6b56, 0x6b52, 0x4062, 0x4649, 0x432f, 0x325d, 0x4870, 0x3543,
+ 0x4434, 0x6b5b, 0x6b59, 0x434c, 0x4041, 0x3452, 0x6b5a, 0x3f5b,
+ 0x4e4a, 0x4f40, 0x6b5c, 0x6b67, 0x4435, 0x6b66, 0x6b63, 0x6b6b,
+ 0x6b64, 0x6b60, 0x447c, 0x6b5f, 0x6b5d, 0x4d21, 0x3b70, 0x6b61,
+ 0x6b5e, 0x6b65, 0x3d74, 0x3841, 0x427a, 0x4b45, 0x315a, 0x3062,
+ 0x4625, 0x6b69, 0x6b68, 0x4666, 0x6b6d, 0x6b62, 0x6b6c, 0x6b6e,
+ 0x382c, 0x6b6a, 0x3956, 0x3c55, 0x6b6f, 0x4d58, 0x6b72, 0x6b75,
+ 0x6b73, 0x4935, 0x6b70, 0x3660, 0x6b74, 0x6b76, 0x6b7a, 0x6b77,
+ 0x6b79, 0x6b78, 0x6b7b, 0x3c31, 0x6b7d, 0x6b7c, 0x4968, 0x6c21,
+ 0x3759, 0x6b7e, 0x6c22, 0x6c23, 0x3544, 0x6641, 0x3e79, 0x6c24,
+ 0x386e, 0x6c25, 0x6c26, 0x3b3e, 0x5a4e, 0x6c27, 0x6c28, 0x3d32,
+ 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x432b, 0x6c2e, 0x6c30,
+ 0x6c2f, 0x4626, 0x6c31, 0x4b2d, 0x6c32, 0x6c33, 0x6c34, 0x6c35,
+ 0x465a, 0x3e5d, 0x6c36, 0x396b, 0x502e, 0x6c37, 0x6c38, 0x493f,
+ 0x6c39, 0x6c41, 0x6c3a, 0x6c3c, 0x6c3b, 0x6c3d, 0x4b46, 0x6c3e,
+ 0x6c3f, 0x6c40, 0x6c42, 0x332d, 0x4467, 0x4969, 0x3a62, 0x3957,
+ 0x494f, 0x325f, 0x484e, 0x6c45, 0x3453, 0x4055, 0x6c44, 0x6c49,
+ 0x4379, 0x4c63, 0x6c47, 0x6c48, 0x352e, 0x6c4a, 0x4763, 0x425f,
+ 0x4871, 0x453d, 0x6c46, 0x4b47, 0x326c, 0x6c4c, 0x4f28, 0x4442,
+ 0x4f45, 0x3b71, 0x6c4b, 0x4231, 0x6c5c, 0x4128, 0x4678, 0x4950,
+ 0x6c4f, 0x3b3f, 0x3b72, 0x3e5e, 0x4765, 0x382d, 0x6c4e, 0x6c4d,
+ 0x496a, 0x3c41, 0x4552, 0x6c51, 0x6c52, 0x3958, 0x6c50, 0x6c53,
+ 0x6c54, 0x6c56, 0x4223, 0x6c55, 0x3466, 0x6c58, 0x6c57, 0x6c59,
+ 0x6c5b, 0x6c5d, 0x6c5e, 0x4056, 0x3c4f, 0x6c5f, 0x3352, 0x6c60,
+ 0x4176, 0x6c61, 0x6c62, 0x496b, 0x352f, 0x6c63, 0x4436, 0x315b,
+ 0x6c64, 0x3c71, 0x3f76, 0x422d, 0x6c67, 0x6c66, 0x6c65, 0x6c6d,
+ 0x6c6b, 0x6c68, 0x6c6a, 0x6c69, 0x6c6c, 0x3577, 0x6c70, 0x4057,
+ 0x6c71, 0x3859, 0x6c6e, 0x6c6f, 0x4f29, 0x4437, 0x4129, 0x6c72,
+ 0x6c75, 0x6c73, 0x6c74, 0x4d59, 0x4627, 0x6c78, 0x6c76, 0x6c77,
+ 0x6c79, 0x6d29, 0x6c7c, 0x6c7d, 0x6c7b, 0x6c7a, 0x447d, 0x6d21,
+ 0x6d25, 0x6d22, 0x6c7e, 0x6d23, 0x6d24, 0x6d2b, 0x6d26, 0x4058,
+ 0x6d28, 0x6d2a, 0x6d27, 0x6d2d, 0x3d33, 0x6d2c, 0x6d2e, 0x6d2f,
+ 0x6d32, 0x6d31, 0x6d30, 0x6d34, 0x6d33, 0x4c76, 0x6d36, 0x6d35,
+ 0x6d37, 0x6d38, 0x6d3a, 0x6d39, 0x3f48, 0x6d3b, 0x366d, 0x6d3c,
+ 0x6d3e, 0x6d3f, 0x6d40, 0x6d3d, 0x6d41, 0x3c56, 0x6d42, 0x3530,
+ 0x3733, 0x382e, 0x6d43, 0x4670, 0x453e, 0x6d44, 0x6d47, 0x3c34,
+ 0x6d46, 0x6d45, 0x375a, 0x6d48, 0x3353, 0x6d4a, 0x3a5c, 0x6d49,
+ 0x6d52, 0x6d4c, 0x6d4e, 0x4a65, 0x6d4b, 0x6d4d, 0x6d51, 0x6d4f,
+ 0x3531, 0x6d50, 0x6d53, 0x475a, 0x4e58, 0x3d34, 0x6d54, 0x4d22,
+ 0x6d56, 0x6d55, 0x6d59, 0x4d41, 0x6d58, 0x336d, 0x6d57, 0x6d5c,
+ 0x6d5b, 0x6d5a, 0x4532, 0x6d5d, 0x6d5e, 0x6d5f, 0x396c, 0x3725,
+ 0x6d60, 0x6d61, 0x6d62, 0x3f49, 0x6d63, 0x3c2d, 0x6d64, 0x6d65,
+ 0x5221, 0x517e, 0x6d66, 0x6570, 0x6d67, 0x4324, 0x3f2b, 0x4740,
+ 0x6d68, 0x4a55, 0x4454, 0x397e, 0x4329, 0x312a, 0x4b78, 0x3f57,
+ 0x375e, 0x3661, 0x4a56, 0x6d69, 0x6d6b, 0x6d6a, 0x3260, 0x4676,
+ 0x6d6c, 0x4777, 0x4533, 0x6d6d, 0x3d52, 0x6d6f, 0x4c42, 0x6d7e,
+ 0x6d71, 0x6d72, 0x4449, 0x4260, 0x4177, 0x4628, 0x6d70, 0x3555,
+ 0x6d79, 0x6d76, 0x6e25, 0x4629, 0x4360, 0x6d73, 0x447e, 0x4553,
+ 0x6d74, 0x6d78, 0x3f60, 0x4767, 0x444c, 0x4042, 0x6d77, 0x422e,
+ 0x4224, 0x6d75, 0x3029, 0x4f22, 0x6d7a, 0x4261, 0x3d35, 0x3f4a,
+ 0x6d7c, 0x6d7b, 0x306f, 0x6d7d, 0x492f, 0x6e27, 0x465b, 0x3f6b,
+ 0x4359, 0x3678, 0x6e26, 0x4d37, 0x313f, 0x4a57, 0x3261, 0x6e21,
+ 0x6e22, 0x6e23, 0x6e24, 0x463b, 0x4323, 0x3063, 0x6e28, 0x6e29,
+ 0x7423, 0x423d, 0x6e2a, 0x3173, 0x414c, 0x382f, 0x4d5a, 0x6e2b,
+ 0x452c, 0x4178, 0x3c57, 0x6e2c, 0x6e2f, 0x3d65, 0x6e2d, 0x412b,
+ 0x412a, 0x3064, 0x4e4b, 0x6e31, 0x4872, 0x6e33, 0x6e32, 0x6e30,
+ 0x6364, 0x3454, 0x6d6e, 0x6e35, 0x6e34, 0x6e36, 0x4d38, 0x4661,
+ 0x4b2e, 0x6e37, 0x3c59, 0x6e38, 0x6e39, 0x6e3a, 0x4521, 0x306a,
+ 0x3959, 0x4f3a, 0x6e3e, 0x3734, 0x6e3b, 0x6e3c, 0x4974, 0x3354,
+ 0x4d39, 0x363f, 0x4554, 0x6e3f, 0x6e40, 0x6e41, 0x4522, 0x6e43,
+ 0x6e42, 0x4653, 0x6e44, 0x3d36, 0x3c60, 0x475b, 0x4371, 0x3c72,
+ 0x3f6c, 0x6e45, 0x6e46, 0x3f5d, 0x6e47, 0x6e48, 0x6e49, 0x4d6f,
+ 0x3d37, 0x6e4b, 0x6e4a, 0x395a, 0x3973, 0x3b40, 0x6e4e, 0x3d66,
+ 0x6e4d, 0x6e4c, 0x4269, 0x386f, 0x4043, 0x4830, 0x3d39, 0x6e4f,
+ 0x3e5f, 0x6e52, 0x6e50, 0x6e51, 0x6e54, 0x6e53, 0x3e7a, 0x6e55,
+ 0x6e56, 0x6e57, 0x4850, 0x3a53, 0x3c61, 0x6e58, 0x6e59, 0x4e24,
+ 0x3d45, 0x4c6e, 0x4e4c, 0x6e5a, 0x3662, 0x6e5b, 0x4523, 0x6e5e,
+ 0x3378, 0x3f4b, 0x6e5c, 0x6e5d, 0x4460, 0x4b55, 0x367c, 0x6e60,
+ 0x6e61, 0x6e5f, 0x6e63, 0x465f, 0x3343, 0x6e67, 0x6e64, 0x6e66,
+ 0x6e62, 0x6f4f, 0x6e65, 0x4e6b, 0x385a, 0x6e6f, 0x4534, 0x6e6a,
+ 0x6e6d, 0x6e6b, 0x6e70, 0x6e71, 0x6e69, 0x6e76, 0x3174, 0x6e68,
+ 0x482d, 0x6e6c, 0x3e60, 0x395b, 0x4b48, 0x3664, 0x3d46, 0x463c,
+ 0x412d, 0x6e74, 0x6e6e, 0x6e73, 0x4c43, 0x4438, 0x6e75, 0x6e72,
+ 0x412c, 0x6e79, 0x6e78, 0x6e77, 0x4b2f, 0x3d7b, 0x6e7a, 0x4a5f,
+ 0x3154, 0x4946, 0x4372, 0x3578, 0x6e7c, 0x395d, 0x3b2c, 0x6e7b,
+ 0x3f6d, 0x3f6e, 0x6f21, 0x6f23, 0x3e7b, 0x6f22, 0x6f24, 0x3653,
+ 0x4945, 0x3c62, 0x4f23, 0x6e7e, 0x3a78, 0x4f3f, 0x6f26, 0x6f25,
+ 0x6f27, 0x6e7d, 0x4669, 0x4555, 0x4457, 0x6f2c, 0x4343, 0x6f28,
+ 0x6f29, 0x372d, 0x6f2b, 0x3830, 0x6f2a, 0x3e61, 0x3379, 0x6f30,
+ 0x3a3f, 0x4179, 0x444a, 0x333b, 0x6f2e, 0x6f2f, 0x4443, 0x6f2d,
+ 0x6f31, 0x6f37, 0x6f3a, 0x6f39, 0x452d, 0x6f32, 0x6f33, 0x6f36,
+ 0x6f38, 0x3640, 0x6f3b, 0x6f35, 0x6f34, 0x6f3f, 0x6f40, 0x6f41,
+ 0x6f3e, 0x6f3d, 0x3e62, 0x462a, 0x6f3c, 0x6f45, 0x6f43, 0x6f44,
+ 0x6f42, 0x4278, 0x6f46, 0x6f47, 0x6f49, 0x3455, 0x6f48, 0x4c7a,
+ 0x6f54, 0x6f4a, 0x6f4d, 0x6f4b, 0x6f4c, 0x6f4e, 0x6f50, 0x6f51,
+ 0x6f52, 0x6f55, 0x6f53, 0x6f56, 0x6f58, 0x6f57, 0x4439, 0x4c67,
+ 0x6f59, 0x412e, 0x6f5a, 0x4a44, 0x6f5b, 0x332b, 0x313c, 0x3457,
+ 0x3456, 0x6f5c, 0x6f5d, 0x6f5e, 0x6f5f, 0x6f60, 0x3458, 0x3355,
+ 0x395e, 0x4836, 0x6f62, 0x6f61, 0x6f63, 0x315c, 0x6f66, 0x6f65,
+ 0x6f64, 0x6f67, 0x6f6a, 0x3047, 0x6f68, 0x6f6c, 0x6f6b, 0x6f6e,
+ 0x6f6d, 0x6f6f, 0x462e, 0x6f70, 0x6f71, 0x6f73, 0x6f72, 0x496c,
+ 0x6f74, 0x6f75, 0x3a65, 0x6f76, 0x6f77, 0x4b49, 0x414b, 0x3024,
+ 0x424b, 0x6f78, 0x496d, 0x6f7b, 0x6f79, 0x395f, 0x6f7a, 0x3842,
+ 0x4a45, 0x6f7d, 0x7021, 0x6f7e, 0x7022, 0x3121, 0x3f58, 0x3d7c,
+ 0x3459, 0x7023, 0x4766, 0x7025, 0x3122, 0x7024, 0x4444, 0x4e4d,
+ 0x462b, 0x6f7c, 0x4e26, 0x3831, 0x4d5b, 0x3679, 0x4e34, 0x3728,
+ 0x4262, 0x6721, 0x7026, 0x332c, 0x3f6f, 0x3356, 0x7028, 0x7029,
+ 0x7027, 0x3764, 0x3a5d, 0x3e63, 0x3123, 0x4e59, 0x702b, 0x6e2e,
+ 0x702a, 0x702e, 0x702c, 0x702d, 0x702f, 0x7030, 0x4e6c, 0x7031,
+ 0x7032, 0x4049, 0x483b, 0x3f7d, 0x3467, 0x4d3a, 0x326d, 0x3d38,
+ 0x385b, 0x7035, 0x7034, 0x3b73, 0x7036, 0x7033, 0x3b28, 0x703a,
+ 0x6a2d, 0x5256, 0x3f77, 0x7038, 0x4e25, 0x4671, 0x312b, 0x4063,
+ 0x3c36, 0x4a37, 0x3140, 0x4e6d, 0x4d6b, 0x703b, 0x4545, 0x3c7b,
+ 0x703c, 0x703d, 0x3f4c, 0x703e, 0x4e6e, 0x7039, 0x7040, 0x7042,
+ 0x7041, 0x703f, 0x7043, 0x7044, 0x417a, 0x3262, 0x7045, 0x4c38,
+ 0x7046, 0x7047, 0x4f2a, 0x5b31, 0x7048, 0x7049, 0x704a, 0x704e,
+ 0x704b, 0x704c, 0x704d, 0x704f, 0x4044, 0x4c77, 0x4045, 0x7050,
+ 0x4873, 0x7051, 0x7353, 0x4c4c, 0x7052, 0x7053, 0x7054, 0x3357,
+ 0x7056, 0x3f59, 0x7057, 0x3724, 0x7058, 0x705c, 0x705a, 0x705b,
+ 0x3373, 0x7059, 0x705d, 0x705e, 0x3048, 0x705f, 0x7060, 0x3e64,
+ 0x7061, 0x3547, 0x7064, 0x7063, 0x7062, 0x6b71, 0x4a5c, 0x7065,
+ 0x7066, 0x7067, 0x7068, 0x7069, 0x706a, 0x345a, 0x706b, 0x706c,
+ 0x4723, 0x706e, 0x323b, 0x7071, 0x7070, 0x3124, 0x3641, 0x4a47,
+ 0x443a, 0x3a22, 0x3960, 0x3d67, 0x3f5c, 0x7073, 0x7072, 0x4d42,
+ 0x3468, 0x4852, 0x465c, 0x3f7c, 0x4e4e, 0x375b, 0x7076, 0x7075,
+ 0x4b4b, 0x462c, 0x3150, 0x7077, 0x7074, 0x4951, 0x4d6a, 0x7078,
+ 0x7079, 0x707b, 0x426a, 0x335b, 0x335c, 0x707a, 0x3469, 0x3832,
+ 0x346a, 0x453f, 0x4e60, 0x385c, 0x707c, 0x707d, 0x707e, 0x7121,
+ 0x7123, 0x7122, 0x4977, 0x7124, 0x7125, 0x7126, 0x7127, 0x7129,
+ 0x7128, 0x712a, 0x4874, 0x664c, 0x3f29, 0x3532, 0x712b, 0x712c,
+ 0x522c, 0x5d3b, 0x4853, 0x307b, 0x303b, 0x3b74, 0x4b30, 0x3e7e,
+ 0x712d, 0x4c5f, 0x712e, 0x4d5c, 0x3142, 0x3b41, 0x712f, 0x326e,
+ 0x7130, 0x7131, 0x7133, 0x7134, 0x7136, 0x7132, 0x7135, 0x345b,
+ 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713d, 0x713c, 0x713f,
+ 0x7142, 0x713e, 0x7140, 0x7141, 0x7143, 0x3642, 0x3c73, 0x7144,
+ 0x7145, 0x3961, 0x7146, 0x333e, 0x474f, 0x7147, 0x7148, 0x435a,
+ 0x466b, 0x7149, 0x477d, 0x424c, 0x3158, 0x366e, 0x366f, 0x4373,
+ 0x714e, 0x3670, 0x326f, 0x714d, 0x714b, 0x714c, 0x714a, 0x7158,
+ 0x714f, 0x7150, 0x7151, 0x7152, 0x7154, 0x7153, 0x3d59, 0x7155,
+ 0x7157, 0x3533, 0x7156, 0x417b, 0x3833, 0x7159, 0x424d, 0x715a,
+ 0x462d, 0x715b, 0x7160, 0x715e, 0x715d, 0x715f, 0x715c, 0x7162,
+ 0x7161, 0x7164, 0x3643, 0x7163, 0x7165, 0x7166, 0x7168, 0x7167,
+ 0x7169, 0x716b, 0x716a, 0x397c, 0x716c, 0x716d, 0x333c, 0x716e,
+ 0x716f, 0x3f71, 0x7170, 0x7171, 0x7172, 0x7173, 0x3962, 0x7174,
+ 0x7175, 0x7176, 0x7177, 0x7178, 0x4831, 0x717a, 0x4926, 0x717b,
+ 0x7179, 0x717d, 0x717c, 0x717e, 0x7221, 0x7222, 0x7223, 0x7224,
+ 0x7225, 0x7226, 0x7227, 0x7228, 0x7229, 0x722a, 0x722b, 0x722c,
+ 0x722d, 0x722e, 0x5d35, 0x722f, 0x6478, 0x3534, 0x3321, 0x3a32,
+ 0x7231, 0x7230, 0x4c25, 0x7233, 0x7234, 0x7232, 0x7235, 0x4b62,
+ 0x7236, 0x357b, 0x4f25, 0x7237, 0x7239, 0x303e, 0x723a, 0x4a2b,
+ 0x7238, 0x723b, 0x723c, 0x723d, 0x723e, 0x723f, 0x4b6e, 0x3b2d,
+ 0x3a7a, 0x412f, 0x7240, 0x7243, 0x7241, 0x7244, 0x3871, 0x7242,
+ 0x7245, 0x7246, 0x7247, 0x724b, 0x3b2a, 0x4264, 0x724c, 0x7249,
+ 0x7248, 0x724a, 0x375f, 0x7250, 0x724f, 0x724e, 0x3033, 0x725a,
+ 0x7256, 0x7257, 0x7253, 0x7259, 0x7255, 0x3362, 0x4f4c, 0x7258,
+ 0x7254, 0x7252, 0x7251, 0x725c, 0x725f, 0x725e, 0x725d, 0x4949,
+ 0x725b, 0x3073, 0x7260, 0x7262, 0x336f, 0x724d, 0x3137, 0x7264,
+ 0x7263, 0x7261, 0x432d, 0x4b70, 0x4e5a, 0x7265, 0x7266, 0x7267,
+ 0x7268, 0x7269, 0x443b, 0x726a, 0x4837, 0x726f, 0x726b, 0x726c,
+ 0x4b31, 0x4c44, 0x4650, 0x7270, 0x7271, 0x463e, 0x726e, 0x726d,
+ 0x322a, 0x7279, 0x7278, 0x3175, 0x7276, 0x7275, 0x7273, 0x337b,
+ 0x7272, 0x3c32, 0x3229, 0x3963, 0x727c, 0x727b, 0x727a, 0x7277,
+ 0x727d, 0x727e, 0x7325, 0x7324, 0x7326, 0x312d, 0x7321, 0x7322,
+ 0x3974, 0x4c39, 0x7323, 0x4b32, 0x732b, 0x7327, 0x732c, 0x7329,
+ 0x7328, 0x375c, 0x732d, 0x732e, 0x732f, 0x732a, 0x7274, 0x7330,
+ 0x4461, 0x7334, 0x7335, 0x7333, 0x7332, 0x7338, 0x7331, 0x7336,
+ 0x7337, 0x733a, 0x7339, 0x733c, 0x733d, 0x733e, 0x4f49, 0x733b,
+ 0x426b, 0x3a6d, 0x733f, 0x7340, 0x7341, 0x7342, 0x7343, 0x3834,
+ 0x7344, 0x7345, 0x3c2f, 0x7346, 0x7347, 0x7348, 0x7349, 0x734c,
+ 0x734a, 0x4f3c, 0x734b, 0x4e6f, 0x734d, 0x4e5b, 0x734e, 0x477e,
+ 0x734f, 0x7351, 0x7352, 0x7350, 0x396d, 0x4c4d, 0x4b63, 0x5677,
+ 0x5d60, 0x4b7b, 0x322b, 0x7354, 0x3550, 0x7355, 0x7356, 0x7357,
+ 0x3975, 0x7358, 0x6054, 0x4c5b, 0x4263, 0x7359, 0x735b, 0x735a,
+ 0x735c, 0x735d, 0x735e, 0x735f, 0x7360, 0x7361, 0x7362, 0x7363,
+ 0x7364, 0x7365, 0x7366, 0x7367, 0x7368, 0x4524, 0x385d, 0x736a,
+ 0x414d, 0x736b, 0x736c, 0x4921, 0x736d, 0x736e, 0x6337, 0x6c5a,
+ 0x706d, 0x736f, 0x7370, 0x7372, 0x7373, 0x7374, 0x4e70, 0x7371,
+ 0x7375, 0x7376, 0x7378, 0x7377, 0x737a, 0x737b, 0x7379, 0x4e36,
+ 0x737c, 0x737d, 0x6354, 0x737e, 0x212a, 0x2174, 0x2170, 0x2173,
+ 0x2175, 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x2125, 0x213f,
+ 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337,
+ 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129,
+ 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347,
+ 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f,
+ 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357,
+ 0x2358, 0x2359, 0x235a, 0x214e, 0x214f, 0x2130, 0x2132, 0x212e,
+ 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, 0x2368,
+ 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, 0x2370,
+ 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, 0x2378,
+ 0x2379, 0x237a, 0x2150, 0x2143, 0x2151, 0x2131, 0x216f,
+};
+
+static const Summary16 jisx0208_uni2indx_page00[16] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x1000 }, { 1, 0x0000 }, { 1, 0x0000 },
+ { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0x118c }, { 6, 0x0053 },
+ { 10, 0x0000 }, { 10, 0x0080 }, { 11, 0x0000 }, { 11, 0x0080 },
+};
+static const Summary16 jisx0208_uni2indx_page03[22] = {
+ /* 0x0300 */
+ { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 },
+ { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 },
+ { 12, 0x0000 }, { 12, 0xfffe }, { 27, 0x03fb }, { 36, 0xfffe },
+ { 51, 0x03fb }, { 60, 0x0000 }, { 60, 0x0000 }, { 60, 0x0000 },
+ /* 0x0400 */
+ { 60, 0x0002 }, { 61, 0xffff }, { 77, 0xffff }, { 93, 0xffff },
+ { 109, 0xffff }, { 125, 0x0002 },
+};
+static const Summary16 jisx0208_uni2indx_page20[50] = {
+ /* 0x2000 */
+ { 126, 0x0000 }, { 126, 0x3361 }, { 133, 0x0063 }, { 137, 0x080d },
+ { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
+ { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
+ { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
+ /* 0x2100 */
+ { 141, 0x0008 }, { 142, 0x0000 }, { 142, 0x0800 }, { 143, 0x0000 },
+ { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 },
+ { 143, 0x0000 }, { 143, 0x000f }, { 147, 0x0000 }, { 147, 0x0000 },
+ { 147, 0x0000 }, { 147, 0x0014 }, { 149, 0x0000 }, { 149, 0x0000 },
+ /* 0x2200 */
+ { 149, 0x098d }, { 155, 0x6404 }, { 159, 0x1f81 }, { 166, 0x2030 },
+ { 169, 0x0000 }, { 169, 0x0004 }, { 170, 0x0cc3 }, { 176, 0x0000 },
+ { 176, 0x00cc }, { 180, 0x0000 }, { 180, 0x0020 }, { 181, 0x0000 },
+ { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 },
+ /* 0x2300 */
+ { 181, 0x0000 }, { 181, 0x0004 },
+};
+static const Summary16 jisx0208_uni2indx_page25[23] = {
+ /* 0x2500 */
+ { 182, 0x900f }, { 188, 0x3999 }, { 196, 0x9939 }, { 204, 0x9999 },
+ { 212, 0x0804 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0000 },
+ { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0003 }, { 216, 0x300c },
+ { 220, 0xc8c0 }, { 225, 0x0000 }, { 225, 0x8000 }, { 226, 0x0000 },
+ /* 0x2600 */
+ { 226, 0x0060 }, { 228, 0x0000 }, { 228, 0x0000 }, { 228, 0x0000 },
+ { 228, 0x0005 }, { 230, 0x0000 }, { 230, 0xa400 },
+};
+static const Summary16 jisx0208_uni2indx_page30[16] = {
+ /* 0x3000 */
+ { 233, 0xffef }, { 248, 0x103f }, { 255, 0x0000 }, { 255, 0x0000 },
+ { 255, 0xfffe }, { 270, 0xffff }, { 286, 0xffff }, { 302, 0xffff },
+ { 318, 0xffff }, { 334, 0x780f }, { 342, 0xfffe }, { 357, 0xffff },
+ { 373, 0xffff }, { 389, 0xffff }, { 405, 0xffff }, { 421, 0x787f },
+};
+static const Summary16 jisx0208_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 432, 0x6f8b }, { 442, 0x43f3 }, { 451, 0x2442 }, { 455, 0x9b46 },
+ { 463, 0xe82c }, { 470, 0xe3e0 }, { 478, 0x0004 }, { 479, 0x400a },
+ { 482, 0x5f65 }, { 492, 0xdb36 }, { 502, 0x7977 }, { 513, 0x0449 },
+ { 517, 0xecd7 }, { 528, 0xe3f0 }, { 537, 0x6038 }, { 542, 0x08c5 },
+ /* 0x4f00 */
+ { 547, 0xe602 }, { 553, 0x3403 }, { 558, 0x8000 }, { 559, 0x3551 },
+ { 566, 0xe0c8 }, { 572, 0x7eab }, { 583, 0x8200 }, { 585, 0x9869 },
+ { 592, 0xa948 }, { 598, 0x2942 }, { 603, 0xe803 }, { 609, 0x8060 },
+ { 612, 0x441c }, { 617, 0xad93 }, { 626, 0xc03a }, { 632, 0x4568 },
+ /* 0x5000 */
+ { 638, 0xaa60 }, { 644, 0x8656 }, { 651, 0x3f7a }, { 662, 0x0240 },
+ { 664, 0x8388 }, { 669, 0x1461 }, { 674, 0x1020 }, { 676, 0x2174 },
+ { 682, 0x2021 }, { 685, 0x0702 }, { 689, 0x3000 }, { 691, 0x40bc },
+ { 697, 0xa624 }, { 703, 0x4462 }, { 708, 0x60a8 }, { 713, 0x0a20 },
+ /* 0x5100 */
+ { 716, 0x0217 }, { 721, 0x8574 }, { 728, 0x0402 }, { 730, 0x9c84 },
+ { 736, 0x7bfb }, { 749, 0x1415 }, { 754, 0x7f24 }, { 763, 0x11e2 },
+ { 769, 0xb665 }, { 778, 0x02ef }, { 786, 0x1f75 }, { 796, 0x20ff },
+ { 805, 0x3a70 }, { 812, 0x3840 }, { 816, 0x26c3 }, { 823, 0x6763 },
+ /* 0x5200 */
+ { 832, 0x4dd9 }, { 841, 0x2092 }, { 845, 0x46b0 }, { 851, 0x0fc9 },
+ { 859, 0xbc98 }, { 867, 0x4850 }, { 871, 0x8638 }, { 877, 0xa03f },
+ { 885, 0x2388 }, { 890, 0x8816 }, { 895, 0x3e09 }, { 902, 0x5232 },
+ { 908, 0x22aa }, { 914, 0xe3a4 }, { 922, 0x00dd }, { 928, 0xc72c },
+ /* 0x5300 */
+ { 936, 0xa166 }, { 943, 0x26e1 }, { 950, 0x840b }, { 955, 0x8f0a },
+ { 962, 0x27eb }, { 972, 0x559e }, { 981, 0xc241 }, { 986, 0x89bb },
+ { 995, 0x0014 }, { 997, 0x8540 }, { 1001, 0x6361 }, { 1008, 0x0849 },
+ { 1012, 0x7f0c }, { 1021, 0x8ad0 }, { 1027, 0xff3e }, { 1040, 0x05cf },
+ /* 0x5400 */
+ { 1048, 0xff1a }, { 1059, 0xa803 }, { 1064, 0x7a41 }, { 1071, 0x7b40 },
+ { 1078, 0x4745 }, { 1085, 0x8002 }, { 1087, 0x0500 }, { 1089, 0x38eb },
+ { 1098, 0xd851 }, { 1105, 0x0005 }, { 1107, 0x9934 }, { 1114, 0x710c },
+ { 1120, 0x0397 }, { 1127, 0x0100 }, { 1128, 0x6366 }, { 1136, 0x2404 },
+ /* 0x5500 */
+ { 1139, 0x80d0 }, { 1143, 0x0051 }, { 1146, 0xc000 }, { 1148, 0x430a },
+ { 1153, 0x9071 }, { 1159, 0x30c8 }, { 1164, 0x0008 }, { 1165, 0x5800 },
+ { 1168, 0x0e99 }, { 1175, 0xf700 }, { 1182, 0x5f80 }, { 1189, 0x0041 },
+ { 1191, 0x00b0 }, { 1194, 0x9410 }, { 1198, 0x0018 }, { 1200, 0x6280 },
+ /* 0x5600 */
+ { 1204, 0x0240 }, { 1206, 0x09d0 }, { 1211, 0x8200 }, { 1213, 0x0156 },
+ { 1218, 0x5004 }, { 1221, 0x0801 }, { 1223, 0x1d10 }, { 1228, 0x0510 },
+ { 1231, 0x84c1 }, { 1236, 0x0010 }, { 1237, 0x4025 }, { 1241, 0x1050 },
+ { 1244, 0x410f }, { 1250, 0x4d8a }, { 1257, 0x4009 }, { 1260, 0xa60d },
+ /* 0x5700 */
+ { 1267, 0xab19 }, { 1275, 0x914c }, { 1281, 0x21c0 }, { 1285, 0x0981 },
+ { 1289, 0xc485 }, { 1295, 0x0003 }, { 1297, 0x0652 }, { 1302, 0x8000 },
+ { 1303, 0x0b04 }, { 1307, 0x0008 }, { 1308, 0x041d }, { 1313, 0x0009 },
+ { 1315, 0x4849 }, { 1320, 0x905c }, { 1326, 0x0009 }, { 1328, 0x1690 },
+ /* 0x5800 */
+ { 1333, 0x0c65 }, { 1339, 0x2220 }, { 1342, 0x8412 }, { 1346, 0x2433 },
+ { 1352, 0x0c03 }, { 1356, 0x4796 }, { 1364, 0x0a04 }, { 1367, 0x4225 },
+ { 1372, 0x0028 }, { 1374, 0x9088 }, { 1378, 0x4900 }, { 1381, 0x4f08 },
+ { 1387, 0x14a2 }, { 1392, 0xd3aa }, { 1401, 0xd830 }, { 1407, 0x3e87 },
+ /* 0x5900 */
+ { 1416, 0x8604 }, { 1420, 0x1f61 }, { 1428, 0x7ea4 }, { 1437, 0x4186 },
+ { 1442, 0xc390 }, { 1448, 0x05b3 }, { 1455, 0x57a5 }, { 1464, 0x2118 },
+ { 1468, 0x241e }, { 1474, 0x2a48 }, { 1479, 0x1128 }, { 1483, 0x4a04 },
+ { 1487, 0x0a40 }, { 1490, 0x161b }, { 1497, 0x0d60 }, { 1502, 0x8840 },
+ /* 0x5a00 */
+ { 1505, 0x020a }, { 1508, 0x9502 }, { 1513, 0x8221 }, { 1517, 0x1060 },
+ { 1520, 0x0243 }, { 1524, 0x0400 }, { 1525, 0x1444 }, { 1529, 0x8000 },
+ { 1530, 0x0000 }, { 1530, 0x0c04 }, { 1533, 0x0000 }, { 1533, 0x7000 },
+ { 1536, 0x1a06 }, { 1541, 0x00c1 }, { 1544, 0x024a }, { 1548, 0x0c00 },
+ /* 0x5b00 */
+ { 1550, 0x1a00 }, { 1553, 0x0040 }, { 1554, 0x1404 }, { 1557, 0x4045 },
+ { 1561, 0x0029 }, { 1564, 0xbdb3 }, { 1575, 0x0a78 }, { 1581, 0x052b },
+ { 1587, 0xbba9 }, { 1597, 0xbfa0 }, { 1606, 0x407c }, { 1612, 0x8379 },
+ { 1620, 0x12fc }, { 1628, 0xe81d }, { 1636, 0x4bf6 }, { 1646, 0xc569 },
+ /* 0x5c00 */
+ { 1654, 0xeff6 }, { 1667, 0x044a }, { 1671, 0x2115 }, { 1676, 0xff02 },
+ { 1685, 0xed63 }, { 1695, 0x402b }, { 1700, 0xd033 }, { 1707, 0x0242 },
+ { 1710, 0x1000 }, { 1711, 0x0013 }, { 1714, 0x1b02 }, { 1719, 0x59ca },
+ { 1727, 0x00a0 }, { 1729, 0x0200 }, { 1730, 0xa703 }, { 1737, 0x2c41 },
+ /* 0x5d00 */
+ { 1742, 0x4880 }, { 1745, 0x8ff2 }, { 1755, 0x0204 }, { 1757, 0x0000 },
+ { 1757, 0x5800 }, { 1760, 0x1005 }, { 1763, 0x9200 }, { 1766, 0x0048 },
+ { 1768, 0x1894 }, { 1773, 0x2001 }, { 1775, 0x5004 }, { 1778, 0x3480 },
+ { 1782, 0x3200 }, { 1785, 0x684c }, { 1791, 0x49ea }, { 1799, 0x68be },
+ /* 0x5e00 */
+ { 1808, 0x184c }, { 1813, 0x2e42 }, { 1819, 0xa820 }, { 1823, 0x21c9 },
+ { 1829, 0x50b9 }, { 1836, 0x80b0 }, { 1840, 0x001e }, { 1844, 0xff7c },
+ { 1857, 0x849a }, { 1863, 0x14e0 }, { 1868, 0x28c1 }, { 1873, 0x01e0 },
+ { 1877, 0x870e }, { 1884, 0xac49 }, { 1891, 0x130f }, { 1898, 0xdddb },
+ /* 0x5f00 */
+ { 1910, 0xbe1a }, { 1919, 0x89fb }, { 1929, 0xa2e0 }, { 1935, 0x51a2 },
+ { 1941, 0x5502 }, { 1946, 0x32ca }, { 1953, 0x3e46 }, { 1961, 0x928b },
+ { 1968, 0x1dbf }, { 1979, 0x438f }, { 1987, 0x6703 }, { 1994, 0x3218 },
+ { 1999, 0x3028 }, { 2003, 0x33c0 }, { 2009, 0x0811 }, { 2012, 0xa923 },
+ /* 0x6000 */
+ { 2019, 0xc000 }, { 2021, 0x3a65 }, { 2029, 0x8fe3 }, { 2039, 0x0402 },
+ { 2041, 0x2c4e }, { 2048, 0x8625 }, { 2054, 0xbf3d }, { 2066, 0x00a1 },
+ { 2069, 0x3a1a }, { 2076, 0x8cd4 }, { 2083, 0x06c9 }, { 2089, 0x317c },
+ { 2097, 0x00e0 }, { 2100, 0x950a }, { 2106, 0x018b }, { 2111, 0x0edb },
+ /* 0x6100 */
+ { 2120, 0xe34b }, { 2129, 0x8c20 }, { 2133, 0x1182 }, { 2137, 0xf010 },
+ { 2142, 0x7d94 }, { 2151, 0xa728 }, { 2158, 0xc9ac }, { 2166, 0x40fb },
+ { 2174, 0x4484 }, { 2178, 0x0653 }, { 2184, 0x5a90 }, { 2190, 0x4444 },
+ { 2194, 0x3fc8 }, { 2203, 0x0001 }, { 2204, 0x0048 }, { 2206, 0xf5d4 },
+ /* 0x6200 */
+ { 2216, 0x7701 }, { 2223, 0xec57 }, { 2233, 0xc442 }, { 2238, 0x891d },
+ { 2245, 0x6b83 }, { 2253, 0x4928 }, { 2258, 0x4109 }, { 2262, 0xd242 },
+ { 2268, 0x061d }, { 2274, 0x59fe }, { 2285, 0x1800 }, { 2287, 0x3a22 },
+ { 2293, 0xb7e4 }, { 2303, 0x3b9f }, { 2314, 0xf003 }, { 2320, 0xc0ea },
+ /* 0x6300 */
+ { 2327, 0x1386 }, { 2333, 0x8202 }, { 2336, 0x8980 }, { 2340, 0xe400 },
+ { 2344, 0xb200 }, { 2348, 0x10a1 }, { 2352, 0x4b80 }, { 2357, 0x0cc4 },
+ { 2362, 0xd309 }, { 2369, 0x8944 }, { 2374, 0x1faf }, { 2385, 0x4834 },
+ { 2390, 0x8259 }, { 2396, 0x0c45 }, { 2401, 0x420a }, { 2405, 0x0450 },
+ /* 0x6400 */
+ { 2408, 0xa040 }, { 2411, 0x10c8 }, { 2415, 0x3140 }, { 2419, 0x4450 },
+ { 2423, 0x4004 }, { 2425, 0x0100 }, { 2426, 0x8280 }, { 2429, 0x0540 },
+ { 2432, 0x0108 }, { 2434, 0x442c }, { 2439, 0x6a30 }, { 2445, 0x1a05 },
+ { 2450, 0x20a6 }, { 2455, 0x0514 }, { 2459, 0x90cf }, { 2467, 0x6456 },
+ /* 0x6500 */
+ { 2474, 0x0021 }, { 2476, 0x3100 }, { 2479, 0x9c18 }, { 2485, 0xcbf0 },
+ { 2494, 0xa120 }, { 2498, 0x63e2 }, { 2506, 0x104c }, { 2510, 0x01b5 },
+ { 2516, 0x538c }, { 2523, 0x9a83 }, { 2530, 0xb8b2 }, { 2538, 0x3281 },
+ { 2543, 0x987a }, { 2551, 0x0a84 }, { 2555, 0x33e7 }, { 2565, 0x0c02 },
+ /* 0x6600 */
+ { 2568, 0xd4cc }, { 2576, 0x9018 }, { 2580, 0xa1a1 }, { 2586, 0x9070 },
+ { 2591, 0x8a1e }, { 2598, 0xe004 }, { 2602, 0xc3d4 }, { 2610, 0x0451 },
+ { 2614, 0x439a }, { 2621, 0x21c2 }, { 2626, 0x4844 }, { 2630, 0x5310 },
+ { 2635, 0x0292 }, { 2639, 0x3640 }, { 2644, 0x0241 }, { 2647, 0xf3bd },
+ /* 0x6700 */
+ { 2659, 0xab09 }, { 2666, 0xe8f0 }, { 2674, 0x7dc0 }, { 2682, 0xa5d2 },
+ { 2690, 0xc242 }, { 2695, 0xd24b }, { 2703, 0xa43f }, { 2712, 0xd0af },
+ { 2721, 0x1aa0 }, { 2726, 0x34a1 }, { 2732, 0x8247 }, { 2738, 0x03d8 },
+ { 2744, 0xc452 }, { 2750, 0x651b }, { 2758, 0xd294 }, { 2765, 0xc83a },
+ /* 0x6800 */
+ { 2772, 0x001c }, { 2775, 0x40c8 }, { 2779, 0x0e06 }, { 2784, 0x3314 },
+ { 2790, 0x614f }, { 2798, 0xb21b }, { 2806, 0x0088 }, { 2808, 0xc0d0 },
+ { 2813, 0xa02a }, { 2818, 0xa898 }, { 2824, 0xa1c5 }, { 2831, 0x166b },
+ { 2839, 0x2e50 }, { 2845, 0x85b4 }, { 2852, 0xc08b }, { 2858, 0x0604 },
+ /* 0x6900 */
+ { 2861, 0xf933 }, { 2871, 0x1e04 }, { 2876, 0x056e }, { 2883, 0xa251 },
+ { 2889, 0x0400 }, { 2890, 0x7638 }, { 2898, 0xec07 }, { 2906, 0x73b8 },
+ { 2915, 0x4406 }, { 2919, 0x1832 }, { 2924, 0x4081 }, { 2927, 0xc816 },
+ { 2933, 0x7c8a }, { 2941, 0x6309 }, { 2947, 0x2980 }, { 2951, 0xaa04 },
+ /* 0x6a00 */
+ { 2956, 0x1c24 }, { 2961, 0xca9c }, { 2969, 0x4e0e }, { 2976, 0x2760 },
+ { 2982, 0x0990 }, { 2986, 0x8300 }, { 2989, 0x0046 }, { 2992, 0x8104 },
+ { 2995, 0x6011 }, { 2999, 0x1081 }, { 3002, 0x540d }, { 3008, 0x0908 },
+ { 3011, 0x000e }, { 3014, 0xcc0a }, { 3020, 0x0500 }, { 3022, 0x0c00 },
+ /* 0x6b00 */
+ { 3024, 0x0430 }, { 3027, 0xa044 }, { 3031, 0x008b }, { 3035, 0x6784 },
+ { 3042, 0x5288 }, { 3047, 0x8a19 }, { 3053, 0x865e }, { 3061, 0x8b18 },
+ { 3067, 0x2e59 }, { 3075, 0x4160 }, { 3079, 0x8c10 }, { 3083, 0x9cbe },
+ { 3093, 0x6861 }, { 3099, 0x891c }, { 3105, 0x9800 }, { 3108, 0x0008 },
+ /* 0x6c00 */
+ { 3109, 0x8100 }, { 3111, 0x089a }, { 3116, 0x0018 }, { 3118, 0x4190 },
+ { 3122, 0x4007 }, { 3126, 0xe4a1 }, { 3133, 0x0505 }, { 3137, 0x640d },
+ { 3143, 0x310e }, { 3149, 0x0e4d }, { 3156, 0x4806 }, { 3160, 0xff0a },
+ { 3170, 0x1632 }, { 3176, 0x2aa8 }, { 3182, 0x852e }, { 3189, 0x000b },
+ /* 0x6d00 */
+ { 3192, 0x1800 }, { 3194, 0xca84 }, { 3200, 0x0e20 }, { 3204, 0x696c },
+ { 3212, 0x0032 }, { 3215, 0x1600 }, { 3218, 0x5658 }, { 3225, 0x0390 },
+ { 3229, 0x5120 }, { 3233, 0x1a28 }, { 3238, 0x8000 }, { 3239, 0x1124 },
+ { 3243, 0x18e1 }, { 3249, 0x4326 }, { 3255, 0x5d52 }, { 3263, 0x0eaa },
+ /* 0x6e00 */
+ { 3270, 0x0fa0 }, { 3276, 0xae28 }, { 3283, 0xfa7b }, { 3295, 0x4500 },
+ { 3298, 0x6408 }, { 3302, 0x8940 }, { 3306, 0xc880 }, { 3310, 0xc044 },
+ { 3314, 0x9005 }, { 3318, 0xb141 }, { 3324, 0x8424 }, { 3328, 0x24c4 },
+ { 3333, 0x1a34 }, { 3339, 0x603a }, { 3345, 0x9000 }, { 3347, 0xc194 },
+ /* 0x6f00 */
+ { 3353, 0x8246 }, { 3358, 0x003a }, { 3362, 0x180d }, { 3367, 0xc106 },
+ { 3372, 0x0022 }, { 3374, 0x9910 }, { 3379, 0xe050 }, { 3384, 0x1511 },
+ { 3389, 0x4057 }, { 3395, 0x0082 }, { 3397, 0x041a }, { 3401, 0x020a },
+ { 3404, 0x004f }, { 3409, 0x8930 }, { 3414, 0xd813 }, { 3421, 0x444a },
+ /* 0x7000 */
+ { 3426, 0x8a02 }, { 3430, 0xed22 }, { 3438, 0x10c0 }, { 3441, 0x4005 },
+ { 3444, 0x1000 }, { 3445, 0x0102 }, { 3447, 0x8808 }, { 3450, 0x3101 },
+ { 3454, 0x4600 }, { 3457, 0x0204 }, { 3459, 0xf000 }, { 3463, 0x0708 },
+ { 3467, 0x8900 }, { 3470, 0xa200 }, { 3473, 0x0000 }, { 3473, 0x2202 },
+ /* 0x7100 */
+ { 3476, 0x0200 }, { 3477, 0x1610 }, { 3481, 0x0042 }, { 3483, 0x1040 },
+ { 3485, 0x5200 }, { 3488, 0x0260 }, { 3491, 0x52f4 }, { 3499, 0x2000 },
+ { 3500, 0x8510 }, { 3504, 0x8230 }, { 3508, 0x1100 }, { 3510, 0x4202 },
+ { 3513, 0x4308 }, { 3517, 0x80b5 }, { 3523, 0x70e1 }, { 3530, 0x9a20 },
+ /* 0x7200 */
+ { 3535, 0x2040 }, { 3537, 0x0801 }, { 3539, 0x3500 }, { 3543, 0xfc65 },
+ { 3553, 0x19c1 }, { 3559, 0xab04 }, { 3565, 0x0286 }, { 3569, 0x6214 },
+ { 3574, 0x0087 }, { 3578, 0x0044 }, { 3580, 0x9085 }, { 3585, 0x0244 },
+ { 3588, 0x405c }, { 3593, 0x0a85 }, { 3598, 0x3207 }, { 3604, 0x3380 },
+ /* 0x7300 */
+ { 3609, 0x0400 }, { 3610, 0xb8c0 }, { 3616, 0xce20 }, { 3622, 0xc0d0 },
+ { 3627, 0xc030 }, { 3631, 0x0080 }, { 3632, 0x0508 }, { 3635, 0x0d25 },
+ { 3641, 0x0a90 }, { 3645, 0x0040 }, { 3646, 0x0200 }, { 3647, 0x080c },
+ { 3650, 0x6505 }, { 3656, 0x4000 }, { 3657, 0x6421 }, { 3662, 0x4102 },
+ /* 0x7400 */
+ { 3665, 0x0268 }, { 3669, 0x0000 }, { 3669, 0x0024 }, { 3671, 0x847c },
+ { 3678, 0x0002 }, { 3679, 0xde20 }, { 3686, 0x8619 }, { 3692, 0x4049 },
+ { 3696, 0x0808 }, { 3698, 0x4000 }, { 3699, 0x0084 }, { 3701, 0x2001 },
+ { 3703, 0x8400 }, { 3705, 0x1010 }, { 3707, 0x42cd }, { 3714, 0x01c7 },
+ /* 0x7500 */
+ { 3720, 0x7038 }, { 3726, 0xd52a }, { 3734, 0x1968 }, { 3740, 0x1d8f },
+ { 3749, 0xbe50 }, { 3757, 0x3e12 }, { 3764, 0x2ef5 }, { 3774, 0x81d9 },
+ { 3781, 0xcec4 }, { 3789, 0x2412 }, { 3793, 0x0828 }, { 3796, 0x732e },
+ { 3805, 0x24ac }, { 3811, 0x4b34 }, { 3818, 0x020c }, { 3821, 0xd41d },
+ /* 0x7600 */
+ { 3829, 0x2a02 }, { 3833, 0x8000 }, { 3834, 0x0097 }, { 3839, 0x0811 },
+ { 3842, 0x11c4 }, { 3847, 0x1144 }, { 3851, 0x1786 }, { 3858, 0x7d45 },
+ { 3867, 0x49d9 }, { 3875, 0x0649 }, { 3880, 0x4000 }, { 3881, 0x8791 },
+ { 3888, 0x254c }, { 3894, 0xd8c4 }, { 3901, 0x44ba }, { 3908, 0x4914 },
+ /* 0x7700 */
+ { 3913, 0x1b92 }, { 3920, 0xc800 }, { 3923, 0x0271 }, { 3928, 0x1580 },
+ { 3932, 0x0081 }, { 3934, 0x0c00 }, { 3936, 0x096a }, { 3942, 0xc200 },
+ { 3945, 0x4800 }, { 3947, 0x4002 }, { 3949, 0x3021 }, { 3953, 0xba49 },
+ { 3961, 0x2080 }, { 3963, 0x1c80 }, { 3967, 0xe2ac }, { 3975, 0x1008 },
+ /* 0x7800 */
+ { 3977, 0x1004 }, { 3979, 0x0034 }, { 3982, 0x00e1 }, { 3986, 0x8414 },
+ { 3990, 0x0020 }, { 3991, 0x2000 }, { 3992, 0x9800 }, { 3995, 0x1014 },
+ { 3998, 0x70c2 }, { 4004, 0x04aa }, { 4009, 0x8688 }, { 4014, 0x5420 },
+ { 4018, 0x0c62 }, { 4023, 0x0413 }, { 4027, 0x9180 }, { 4031, 0x2010 },
+ /* 0x7900 */
+ { 4033, 0x4082 }, { 4036, 0x0206 }, { 4039, 0x1c40 }, { 4043, 0x5400 },
+ { 4046, 0x0383 }, { 4051, 0xe4e9 }, { 4060, 0x2125 }, { 4065, 0x8480 },
+ { 4068, 0xe433 }, { 4076, 0x2000 }, { 4077, 0x44c0 }, { 4081, 0xe609 },
+ { 4088, 0x0a03 }, { 4092, 0x8126 }, { 4097, 0x12da }, { 4104, 0x0801 },
+ /* 0x7a00 */
+ { 4106, 0x6901 }, { 4111, 0x9790 }, { 4118, 0x4001 }, { 4120, 0xf886 },
+ { 4128, 0xe24d }, { 4136, 0x0081 }, { 4138, 0x0a0e }, { 4143, 0xa651 },
+ { 4150, 0x011a }, { 4154, 0x81ec }, { 4161, 0xc600 }, { 4165, 0x8441 },
+ { 4169, 0xadb8 }, { 4178, 0xb62c }, { 4186, 0xa46f }, { 4195, 0x8741 },
+ /* 0x7b00 */
+ { 4201, 0x8d54 }, { 4208, 0x4b02 }, { 4213, 0x1161 }, { 4218, 0x0268 },
+ { 4222, 0xbb60 }, { 4230, 0x2057 }, { 4236, 0x50a0 }, { 4240, 0x0433 },
+ { 4245, 0xa8c0 }, { 4250, 0xb7b4 }, { 4260, 0x2402 }, { 4263, 0x0112 },
+ { 4266, 0x9ad3 }, { 4275, 0x2000 }, { 4276, 0x2271 }, { 4282, 0x00c8 },
+ /* 0x7c00 */
+ { 4285, 0x2081 }, { 4288, 0x809e }, { 4294, 0x0c8a }, { 4299, 0xe180 },
+ { 4304, 0xb009 }, { 4309, 0x8151 }, { 4314, 0x1031 }, { 4318, 0x4028 },
+ { 4321, 0x2a0e }, { 4327, 0x89a5 }, { 4334, 0x69b6 }, { 4343, 0x620e },
+ { 4349, 0x4425 }, { 4354, 0xd144 }, { 4360, 0x8085 }, { 4364, 0x4d54 },
+ /* 0x7d00 */
+ { 4371, 0x2c75 }, { 4379, 0x1fb1 }, { 4388, 0xd807 }, { 4395, 0x862d },
+ { 4402, 0xd87c }, { 4411, 0x4841 }, { 4415, 0x414e }, { 4421, 0x226e },
+ { 4428, 0x8200 }, { 4430, 0x9e08 }, { 4436, 0xf80c }, { 4443, 0xed37 },
+ { 4454, 0x8c80 }, { 4458, 0x7526 }, { 4466, 0x9313 }, { 4473, 0x0814 },
+ /* 0x7e00 */
+ { 4476, 0x0e32 }, { 4482, 0xc804 }, { 4486, 0x484e }, { 4492, 0x6ea6 },
+ { 4501, 0x2c4a }, { 4507, 0x6670 }, { 4514, 0x26c0 }, { 4519, 0xba01 },
+ { 4525, 0xd30c }, { 4532, 0x185d }, { 4539, 0x0000 }, { 4539, 0x0000 },
+ { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 },
+ /* 0x7f00 */
+ { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0540 },
+ { 4542, 0x7020 }, { 4546, 0x8133 }, { 4552, 0x4f81 }, { 4559, 0x03a5 },
+ { 4565, 0x55ec }, { 4574, 0x6410 }, { 4578, 0xc318 }, { 4584, 0x2344 },
+ { 4589, 0x1462 }, { 4594, 0x0034 }, { 4597, 0x0a43 }, { 4602, 0x1a09 },
+ /* 0x8000 */
+ { 4607, 0x187b }, { 4615, 0x13a5 }, { 4622, 0x0102 }, { 4624, 0xa848 },
+ { 4629, 0x0440 }, { 4631, 0xc544 }, { 4637, 0x8106 }, { 4641, 0xe2dd },
+ { 4651, 0x1af0 }, { 4658, 0x2d48 }, { 4664, 0xb626 }, { 4672, 0x0416 },
+ { 4676, 0x5058 }, { 4681, 0x6e40 }, { 4687, 0x8032 }, { 4691, 0x3112 },
+ /* 0x8100 */
+ { 4696, 0x07e4 }, { 4703, 0x0c00 }, { 4705, 0x8208 }, { 4708, 0x420a },
+ { 4712, 0x4840 }, { 4715, 0x803b }, { 4721, 0x4860 }, { 4725, 0x8713 },
+ { 4732, 0x850d }, { 4738, 0x3428 }, { 4743, 0x0319 }, { 4748, 0xe529 },
+ { 4756, 0x2345 }, { 4762, 0x870a }, { 4768, 0x25a9 }, { 4775, 0x5c18 },
+ /* 0x8200 */
+ { 4781, 0x77a6 }, { 4791, 0xd9c5 }, { 4800, 0x5e00 }, { 4805, 0x03e8 },
+ { 4811, 0x0081 }, { 4813, 0xa700 }, { 4818, 0xcd54 }, { 4826, 0x41c6 },
+ { 4832, 0x2800 }, { 4834, 0xa204 }, { 4838, 0xb860 }, { 4844, 0x2b0a },
+ { 4850, 0x0020 }, { 4851, 0xda9e }, { 4861, 0x08ea }, { 4867, 0x0e1a },
+ /* 0x8300 */
+ { 4873, 0x427c }, { 4880, 0x11c0 }, { 4884, 0x8908 }, { 4888, 0x0376 },
+ { 4895, 0x8621 }, { 4900, 0x0105 }, { 4903, 0x0000 }, { 4903, 0x18a8 },
+ { 4908, 0x46a0 }, { 4913, 0xc448 }, { 4918, 0x0d05 }, { 4923, 0x2022 },
+ { 4926, 0x5422 }, { 4931, 0x9148 }, { 4936, 0x8a01 }, { 4940, 0x2897 },
+ /* 0x8400 */
+ { 4947, 0x7898 }, { 4954, 0x0008 }, { 4955, 0x1605 }, { 4960, 0x3122 },
+ { 4965, 0x4240 }, { 4968, 0x0880 }, { 4970, 0xfa4e }, { 4980, 0x06a2 },
+ { 4985, 0x0814 }, { 4988, 0x9211 }, { 4993, 0x2002 }, { 4995, 0x9b04 },
+ { 5001, 0x2e52 }, { 5008, 0x0643 }, { 5013, 0x5000 }, { 5015, 0x9010 },
+ /* 0x8500 */
+ { 5018, 0x0041 }, { 5020, 0x85ba }, { 5028, 0x3042 }, { 5032, 0x2020 },
+ { 5034, 0x4f0b }, { 5042, 0x05a0 }, { 5046, 0x2708 }, { 5051, 0x4080 },
+ { 5053, 0x0591 }, { 5058, 0x1a93 }, { 5065, 0xdf50 }, { 5074, 0x0600 },
+ { 5076, 0xa202 }, { 5080, 0x3021 }, { 5084, 0x0630 }, { 5088, 0x4e80 },
+ /* 0x8600 */
+ { 5093, 0x0cc4 }, { 5098, 0x04c8 }, { 5102, 0xa004 }, { 5105, 0x8001 },
+ { 5107, 0x6000 }, { 5109, 0xd431 }, { 5116, 0x0880 }, { 5118, 0x0a02 },
+ { 5121, 0x1c00 }, { 5124, 0x0028 }, { 5126, 0x8e18 }, { 5132, 0x0041 },
+ { 5134, 0x6ad0 }, { 5141, 0xca10 }, { 5146, 0xf210 }, { 5152, 0x4b00 },
+ /* 0x8700 */
+ { 5156, 0x274d }, { 5164, 0x1506 }, { 5169, 0x0220 }, { 5171, 0x8890 },
+ { 5175, 0x5a00 }, { 5179, 0x82a8 }, { 5184, 0x4549 }, { 5190, 0x8150 },
+ { 5194, 0x2004 }, { 5196, 0x8000 }, { 5197, 0x8804 }, { 5200, 0x2c08 },
+ { 5204, 0x08d1 }, { 5209, 0x0005 }, { 5211, 0x8001 }, { 5213, 0x4ac4 },
+ /* 0x8800 */
+ { 5219, 0xe020 }, { 5223, 0x0062 }, { 5226, 0x008e }, { 5230, 0x0a42 },
+ { 5234, 0x3055 }, { 5240, 0x6a8c }, { 5247, 0x090e }, { 5252, 0xe0a5 },
+ { 5259, 0x2906 }, { 5264, 0x42c4 }, { 5269, 0x4814 }, { 5273, 0x80b3 },
+ { 5279, 0x803e }, { 5285, 0xb330 }, { 5292, 0x0102 }, { 5294, 0x731c },
+ /* 0x8900 */
+ { 5302, 0x1494 }, { 5307, 0x600d }, { 5312, 0x0c20 }, { 5315, 0x0940 },
+ { 5318, 0x301a }, { 5323, 0xc040 }, { 5326, 0xa451 }, { 5332, 0xc094 },
+ { 5337, 0x8dca }, { 5345, 0x05c8 }, { 5350, 0x96c2 }, { 5357, 0xa40c },
+ { 5362, 0x0001 }, { 5363, 0x3404 }, { 5367, 0x00c8 }, { 5370, 0x0110 },
+ /* 0x8a00 */
+ { 5372, 0x550d }, { 5379, 0xa9c9 }, { 5387, 0x2428 }, { 5391, 0x1c5a },
+ { 5398, 0x0142 }, { 5401, 0x4837 }, { 5408, 0x7a4d }, { 5417, 0x100f },
+ { 5422, 0x32b4 }, { 5429, 0x452a }, { 5435, 0x317b }, { 5444, 0x9205 },
+ { 5449, 0xb894 }, { 5456, 0x5c44 }, { 5462, 0x68d7 }, { 5471, 0x458a },
+ /* 0x8b00 */
+ { 5477, 0x5097 }, { 5484, 0x2ed1 }, { 5492, 0x1943 }, { 5498, 0x4208 },
+ { 5501, 0xd202 }, { 5506, 0x9d40 }, { 5512, 0x9840 }, { 5516, 0x2097 },
+ { 5522, 0x5409 }, { 5527, 0x064d }, { 5533, 0x0000 }, { 5533, 0x0000 },
+ { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 },
+ /* 0x8c00 */
+ { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x8480 },
+ { 5536, 0x5542 }, { 5542, 0x0421 }, { 5545, 0x1c06 }, { 5550, 0x1700 },
+ { 5554, 0x7624 }, { 5561, 0x6110 }, { 5565, 0xff87 }, { 5577, 0xb9dd },
+ { 5588, 0x659f }, { 5598, 0x5c0a }, { 5604, 0x245d }, { 5611, 0x3c00 },
+ /* 0x8d00 */
+ { 5615, 0xadb0 }, { 5623, 0x0059 }, { 5627, 0x0000 }, { 5627, 0x0000 },
+ { 5627, 0x0000 }, { 5627, 0x0000 }, { 5627, 0x28d0 }, { 5632, 0x009b },
+ { 5637, 0x0422 }, { 5640, 0x0200 }, { 5641, 0x0108 }, { 5643, 0x4408 },
+ { 5646, 0x9804 }, { 5650, 0xac40 }, { 5655, 0x8d0a }, { 5661, 0x9028 },
+ /* 0x8e00 */
+ { 5665, 0x8700 }, { 5669, 0xe001 }, { 5673, 0x0400 }, { 5674, 0x0031 },
+ { 5677, 0x1794 }, { 5684, 0x8221 }, { 5688, 0x0019 }, { 5691, 0x1054 },
+ { 5695, 0x2cb2 }, { 5702, 0x021a }, { 5706, 0x9c02 }, { 5711, 0x4003 },
+ { 5714, 0x3d60 }, { 5721, 0x8804 }, { 5724, 0x080c }, { 5727, 0x7900 },
+ /* 0x8f00 */
+ { 5732, 0x1628 }, { 5737, 0xba3c }, { 5746, 0x8640 }, { 5750, 0xcb08 },
+ { 5756, 0x7274 }, { 5764, 0x9080 }, { 5767, 0x001e }, { 5771, 0x0000 },
+ { 5771, 0x0000 }, { 5771, 0xd800 }, { 5775, 0xe188 }, { 5781, 0x9c87 },
+ { 5789, 0x4034 }, { 5793, 0x0412 }, { 5796, 0xae64 }, { 5804, 0x2791 },
+ /* 0x9000 */
+ { 5811, 0xe86b }, { 5820, 0xe6fb }, { 5832, 0x408f }, { 5838, 0x5366 },
+ { 5846, 0xeea6 }, { 5856, 0x537f }, { 5867, 0xe32b }, { 5876, 0xb5e4 },
+ { 5885, 0x869f }, { 5894, 0x0002 }, { 5895, 0x8548 }, { 5900, 0x0122 },
+ { 5903, 0x4402 }, { 5906, 0x0800 }, { 5907, 0x2116 }, { 5912, 0x20a0 },
+ /* 0x9100 */
+ { 5915, 0x0004 }, { 5916, 0x0204 }, { 5918, 0x2000 }, { 5919, 0x0005 },
+ { 5921, 0x7e00 }, { 5927, 0x0154 }, { 5931, 0x162c }, { 5937, 0x01ac },
+ { 5942, 0x2a84 }, { 5947, 0x1085 }, { 5951, 0x8c14 }, { 5956, 0x0530 },
+ { 5960, 0xfbc3 }, { 5971, 0xb943 }, { 5979, 0x00ca }, { 5983, 0x9060 },
+ /* 0x9200 */
+ { 5987, 0x6000 }, { 5989, 0x4032 }, { 5993, 0x1200 }, { 5995, 0x8090 },
+ { 5998, 0x0b30 }, { 6003, 0x4c81 }, { 6008, 0x0054 }, { 6011, 0x4002 },
+ { 6013, 0x0029 }, { 6016, 0x1d6a }, { 6024, 0x2000 }, { 6025, 0x0280 },
+ { 6027, 0x8000 }, { 6028, 0x0004 }, { 6029, 0x2610 }, { 6033, 0x150c },
+ /* 0x9300 */
+ { 6038, 0x8040 }, { 6040, 0x0701 }, { 6044, 0xd94d }, { 6053, 0x0c24 },
+ { 6057, 0x2810 }, { 6060, 0x1850 }, { 6064, 0x5001 }, { 6067, 0x5020 },
+ { 6070, 0x1000 }, { 6071, 0x04d0 }, { 6075, 0x7080 }, { 6079, 0x0201 },
+ { 6081, 0x0108 }, { 6083, 0x21c3 }, { 6089, 0x0132 }, { 6093, 0x0000 },
+ /* 0x9400 */
+ { 6093, 0x0088 }, { 6095, 0x0719 }, { 6101, 0x0802 }, { 6103, 0x0560 },
+ { 6107, 0x0012 }, { 6109, 0x4c0e }, { 6115, 0x0405 }, { 6118, 0xf0a1 },
+ { 6125, 0x0002 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
+ { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
+ /* 0x9500 */
+ { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
+ { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0080 },
+ { 6127, 0x8e8d }, { 6135, 0x035a }, { 6141, 0x21bd }, { 6149, 0x5a04 },
+ { 6154, 0x3488 }, { 6159, 0x1170 }, { 6164, 0x0026 }, { 6167, 0x0000 },
+ /* 0x9600 */
+ { 6167, 0x0000 }, { 6167, 0x1000 }, { 6168, 0xc502 }, { 6173, 0x8804 },
+ { 6176, 0xb815 }, { 6183, 0xf801 }, { 6189, 0x147c }, { 6196, 0x25ed },
+ { 6205, 0xed60 }, { 6213, 0x1bb0 }, { 6220, 0x0589 }, { 6225, 0x1bd7 },
+ { 6235, 0x7af3 }, { 6246, 0x1a62 }, { 6252, 0x0d0c }, { 6257, 0x0ac5 },
+ /* 0x9700 */
+ { 6263, 0xe5d1 }, { 6272, 0x524a }, { 6278, 0x0490 }, { 6281, 0x6305 },
+ { 6287, 0x0354 }, { 6292, 0x5244 }, { 6297, 0x2b57 }, { 6306, 0x1612 },
+ { 6311, 0xa872 }, { 6318, 0x1101 }, { 6321, 0x2949 }, { 6327, 0x0018 },
+ { 6329, 0x0948 }, { 6333, 0x1008 }, { 6335, 0x6000 }, { 6337, 0x886c },
+ /* 0x9800 */
+ { 6343, 0x916e }, { 6351, 0x058f }, { 6358, 0x3012 }, { 6362, 0x3990 },
+ { 6368, 0xf840 }, { 6374, 0x4930 }, { 6379, 0x8880 }, { 6382, 0x001b },
+ { 6386, 0x0000 }, { 6386, 0x0000 }, { 6386, 0x8500 }, { 6389, 0x0042 },
+ { 6391, 0x0058 }, { 6394, 0x9800 }, { 6397, 0xea04 }, { 6403, 0x7014 },
+ /* 0x9900 */
+ { 6408, 0x1628 }, { 6413, 0x611d }, { 6420, 0x5113 }, { 6426, 0x6000 },
+ { 6428, 0x1a24 }, { 6433, 0x00a7 }, { 6438, 0x0000 }, { 6438, 0x0000 },
+ { 6438, 0x0000 }, { 6438, 0x03c0 }, { 6442, 0x7120 }, { 6447, 0x1018 },
+ { 6450, 0x0172 }, { 6455, 0xa927 }, { 6463, 0x6004 }, { 6466, 0x8906 },
+ /* 0x9a00 */
+ { 6471, 0xc022 }, { 6475, 0x020c }, { 6478, 0x0900 }, { 6480, 0x4081 },
+ { 6483, 0x202d }, { 6488, 0x8ca0 }, { 6493, 0x0e34 }, { 6499, 0x0000 },
+ { 6499, 0x0000 }, { 6499, 0x0000 }, { 6499, 0x2100 }, { 6501, 0x1101 },
+ { 6504, 0x8011 }, { 6507, 0xc11a }, { 6513, 0xec4c }, { 6521, 0x0892 },
+ /* 0x9b00 */
+ { 6525, 0x0040 }, { 6526, 0x8500 }, { 6529, 0xc7ac }, { 6538, 0x1806 },
+ { 6542, 0xe03e }, { 6550, 0x0512 }, { 6554, 0x8000 }, { 6555, 0x0010 },
+ { 6556, 0x4008 }, { 6558, 0x80ce }, { 6564, 0x6d01 }, { 6570, 0x0210 },
+ { 6572, 0x8641 }, { 6577, 0x0856 }, { 6582, 0x011e }, { 6587, 0x0027 },
+ /* 0x9c00 */
+ { 6591, 0x3750 }, { 6598, 0x083d }, { 6604, 0xe032 }, { 6610, 0x4e05 },
+ { 6616, 0x01c0 }, { 6619, 0x0484 }, { 6622, 0x0081 }, { 6624, 0x0140 },
+ { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 },
+ { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x1aa0 }, { 6631, 0x0059 },
+ /* 0x9d00 */
+ { 6635, 0x43c8 }, { 6641, 0x8824 }, { 6645, 0x1d48 }, { 6651, 0xc800 },
+ { 6654, 0x0152 }, { 6658, 0x7203 }, { 6664, 0x9013 }, { 6669, 0x0404 },
+ { 6671, 0x8280 }, { 6674, 0x0400 }, { 6675, 0x8a10 }, { 6679, 0x0d14 },
+ { 6684, 0x8056 }, { 6689, 0x0208 }, { 6691, 0xa040 }, { 6694, 0x2704 },
+ /* 0x9e00 */
+ { 6699, 0x0000 }, { 6699, 0x4c00 }, { 6702, 0x0000 }, { 6702, 0x0000 },
+ { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0xa320 },
+ { 6707, 0x1902 }, { 6711, 0xa0ae }, { 6718, 0x2660 }, { 6723, 0xdf00 },
+ { 6730, 0xf010 }, { 6735, 0x7b15 }, { 6744, 0x8121 }, { 6748, 0x3ad0 },
+ /* 0x9f00 */
+ { 6755, 0x4180 }, { 6758, 0x0028 }, { 6760, 0x1003 }, { 6763, 0x4800 },
+ { 6765, 0xcc00 }, { 6769, 0x8014 }, { 6772, 0x14cf }, { 6780, 0x00c4 },
+ { 6783, 0x2000 }, { 6784, 0x3020 }, { 6787, 0x0001 },
+};
+static const Summary16 jisx0208_uni2indx_pageff[15] = {
+ /* 0xff00 */
+ { 6788, 0xdf7a }, { 6800, 0xffff }, { 6816, 0xffff }, { 6832, 0xefff },
+ { 6847, 0xffff }, { 6863, 0x3fff }, { 6877, 0x0000 }, { 6877, 0x0000 },
+ { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 },
+ { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0028 },
+};
+
+static int
+jisx0208_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc < 0x0100)
+ summary = &jisx0208_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x0300 && wc < 0x0460)
+ summary = &jisx0208_uni2indx_page03[(wc>>4)-0x030];
+ else if (wc >= 0x2000 && wc < 0x2320)
+ summary = &jisx0208_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x2500 && wc < 0x2670)
+ summary = &jisx0208_uni2indx_page25[(wc>>4)-0x250];
+ else if (wc >= 0x3000 && wc < 0x3100)
+ summary = &jisx0208_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &jisx0208_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xff00 && wc < 0xfff0)
+ summary = &jisx0208_uni2indx_pageff[(wc>>4)-0xff0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = jisx0208_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/jisx0212.h b/libX11/src/xlibi18n/lcUniConv/jisx0212.h
index 05cca5203..471353836 100644
--- a/libX11/src/xlibi18n/lcUniConv/jisx0212.h
+++ b/libX11/src/xlibi18n/lcUniConv/jisx0212.h
@@ -1,2163 +1,2163 @@
-
-/*
- * JISX0212.1990-0
- */
-
-static const unsigned short jisx0212_2uni_page22[81] = {
- /* 0x22 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x02d8, 0x02c7,
- 0x00b8, 0x02d9, 0x02dd, 0x00af, 0x02db, 0x02da, 0x007e, 0x0384,
- 0x0385, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x00a1, 0x00a6, 0x00bf, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0x00ba, 0x00aa, 0x00a9, 0x00ae, 0x2122, 0x00a4,
- 0x2116,
-};
-static const unsigned short jisx0212_2uni_page26[188] = {
- /* 0x26 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0xfffd, 0x038c, 0xfffd,
- 0x038e, 0x03ab, 0xfffd, 0x038f, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, 0x03c2,
- 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0xfffd, 0xfffd,
- /* 0x27 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408,
- 0x0409, 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458,
- 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f,
-};
-static const unsigned short jisx0212_2uni_page29[275] = {
- /* 0x29 */
- 0x00c6, 0x0110, 0xfffd, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x0141,
- 0x013f, 0xfffd, 0x014a, 0x00d8, 0x0152, 0xfffd, 0x0166, 0x00de,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0142,
- 0x0140, 0x0149, 0x014b, 0x00f8, 0x0153, 0x00df, 0x0167, 0x00fe,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x2a */
- 0x00c1, 0x00c0, 0x00c4, 0x00c2, 0x0102, 0x01cd, 0x0100, 0x0104,
- 0x00c5, 0x00c3, 0x0106, 0x0108, 0x010c, 0x00c7, 0x010a, 0x010e,
- 0x00c9, 0x00c8, 0x00cb, 0x00ca, 0x011a, 0x0116, 0x0112, 0x0118,
- 0xfffd, 0x011c, 0x011e, 0x0122, 0x0120, 0x0124, 0x00cd, 0x00cc,
- 0x00cf, 0x00ce, 0x01cf, 0x0130, 0x012a, 0x012e, 0x0128, 0x0134,
- 0x0136, 0x0139, 0x013d, 0x013b, 0x0143, 0x0147, 0x0145, 0x00d1,
- 0x00d3, 0x00d2, 0x00d6, 0x00d4, 0x01d1, 0x0150, 0x014c, 0x00d5,
- 0x0154, 0x0158, 0x0156, 0x015a, 0x015c, 0x0160, 0x015e, 0x0164,
- 0x0162, 0x00da, 0x00d9, 0x00dc, 0x00db, 0x016c, 0x01d3, 0x0170,
- 0x016a, 0x0172, 0x016e, 0x0168, 0x01d7, 0x01db, 0x01d9, 0x01d5,
- 0x0174, 0x00dd, 0x0178, 0x0176, 0x0179, 0x017d, 0x017b, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x2b */
- 0x00e1, 0x00e0, 0x00e4, 0x00e2, 0x0103, 0x01ce, 0x0101, 0x0105,
- 0x00e5, 0x00e3, 0x0107, 0x0109, 0x010d, 0x00e7, 0x010b, 0x010f,
- 0x00e9, 0x00e8, 0x00eb, 0x00ea, 0x011b, 0x0117, 0x0113, 0x0119,
- 0x01f5, 0x011d, 0x011f, 0xfffd, 0x0121, 0x0125, 0x00ed, 0x00ec,
- 0x00ef, 0x00ee, 0x01d0, 0xfffd, 0x012b, 0x012f, 0x0129, 0x0135,
- 0x0137, 0x013a, 0x013e, 0x013c, 0x0144, 0x0148, 0x0146, 0x00f1,
- 0x00f3, 0x00f2, 0x00f6, 0x00f4, 0x01d2, 0x0151, 0x014d, 0x00f5,
- 0x0155, 0x0159, 0x0157, 0x015b, 0x015d, 0x0161, 0x015f, 0x0165,
- 0x0163, 0x00fa, 0x00f9, 0x00fc, 0x00fb, 0x016d, 0x01d4, 0x0171,
- 0x016b, 0x0173, 0x016f, 0x0169, 0x01d8, 0x01dc, 0x01da, 0x01d6,
- 0x0175, 0x00fd, 0x00ff, 0x0177, 0x017a, 0x017e, 0x017c,
-};
-static const unsigned short jisx0212_2uni_page30[5801] = {
- /* 0x30 */
- 0x4e02, 0x4e04, 0x4e05, 0x4e0c, 0x4e12, 0x4e1f, 0x4e23, 0x4e24,
- 0x4e28, 0x4e2b, 0x4e2e, 0x4e2f, 0x4e30, 0x4e35, 0x4e40, 0x4e41,
- 0x4e44, 0x4e47, 0x4e51, 0x4e5a, 0x4e5c, 0x4e63, 0x4e68, 0x4e69,
- 0x4e74, 0x4e75, 0x4e79, 0x4e7f, 0x4e8d, 0x4e96, 0x4e97, 0x4e9d,
- 0x4eaf, 0x4eb9, 0x4ec3, 0x4ed0, 0x4eda, 0x4edb, 0x4ee0, 0x4ee1,
- 0x4ee2, 0x4ee8, 0x4eef, 0x4ef1, 0x4ef3, 0x4ef5, 0x4efd, 0x4efe,
- 0x4eff, 0x4f00, 0x4f02, 0x4f03, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12,
- 0x4f15, 0x4f16, 0x4f17, 0x4f19, 0x4f2e, 0x4f31, 0x4f60, 0x4f33,
- 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f40, 0x4f42, 0x4f48,
- 0x4f49, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56, 0x4f58, 0x4f5f,
- 0x4f63, 0x4f6a, 0x4f6c, 0x4f6e, 0x4f71, 0x4f77, 0x4f78, 0x4f79,
- 0x4f7a, 0x4f7d, 0x4f7e, 0x4f81, 0x4f82, 0x4f84,
- /* 0x31 */
- 0x4f85, 0x4f89, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92, 0x4f93,
- 0x4f94, 0x4f97, 0x4f99, 0x4f9a, 0x4f9e, 0x4f9f, 0x4fb2, 0x4fb7,
- 0x4fb9, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc5,
- 0x4fc6, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fcf, 0x4fd2,
- 0x4fdc, 0x4fe0, 0x4fe2, 0x4ff0, 0x4ff2, 0x4ffc, 0x4ffd, 0x4fff,
- 0x5000, 0x5001, 0x5004, 0x5007, 0x500a, 0x500c, 0x500e, 0x5010,
- 0x5013, 0x5017, 0x5018, 0x501b, 0x501c, 0x501d, 0x501e, 0x5022,
- 0x5027, 0x502e, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040, 0x5041,
- 0x5042, 0x5045, 0x5046, 0x504a, 0x504c, 0x504e, 0x5051, 0x5052,
- 0x5053, 0x5057, 0x5059, 0x505f, 0x5060, 0x5062, 0x5063, 0x5066,
- 0x5067, 0x506a, 0x506d, 0x5070, 0x5071, 0x503b, 0x5081, 0x5083,
- 0x5084, 0x5086, 0x508a, 0x508e, 0x508f, 0x5090,
- /* 0x32 */
- 0x5092, 0x5093, 0x5094, 0x5096, 0x509b, 0x509c, 0x509e, 0x509f,
- 0x50a0, 0x50a1, 0x50a2, 0x50aa, 0x50af, 0x50b0, 0x50b9, 0x50ba,
- 0x50bd, 0x50c0, 0x50c3, 0x50c4, 0x50c7, 0x50cc, 0x50ce, 0x50d0,
- 0x50d3, 0x50d4, 0x50d8, 0x50dc, 0x50dd, 0x50df, 0x50e2, 0x50e4,
- 0x50e6, 0x50e8, 0x50e9, 0x50ef, 0x50f1, 0x50f6, 0x50fa, 0x50fe,
- 0x5103, 0x5106, 0x5107, 0x5108, 0x510b, 0x510c, 0x510d, 0x510e,
- 0x50f2, 0x5110, 0x5117, 0x5119, 0x511b, 0x511c, 0x511d, 0x511e,
- 0x5123, 0x5127, 0x5128, 0x512c, 0x512d, 0x512f, 0x5131, 0x5133,
- 0x5134, 0x5135, 0x5138, 0x5139, 0x5142, 0x514a, 0x514f, 0x5153,
- 0x5155, 0x5157, 0x5158, 0x515f, 0x5164, 0x5166, 0x517e, 0x5183,
- 0x5184, 0x518b, 0x518e, 0x5198, 0x519d, 0x51a1, 0x51a3, 0x51ad,
- 0x51b8, 0x51ba, 0x51bc, 0x51be, 0x51bf, 0x51c2,
- /* 0x33 */
- 0x51c8, 0x51cf, 0x51d1, 0x51d2, 0x51d3, 0x51d5, 0x51d8, 0x51de,
- 0x51e2, 0x51e5, 0x51ee, 0x51f2, 0x51f3, 0x51f4, 0x51f7, 0x5201,
- 0x5202, 0x5205, 0x5212, 0x5213, 0x5215, 0x5216, 0x5218, 0x5222,
- 0x5228, 0x5231, 0x5232, 0x5235, 0x523c, 0x5245, 0x5249, 0x5255,
- 0x5257, 0x5258, 0x525a, 0x525c, 0x525f, 0x5260, 0x5261, 0x5266,
- 0x526e, 0x5277, 0x5278, 0x5279, 0x5280, 0x5282, 0x5285, 0x528a,
- 0x528c, 0x5293, 0x5295, 0x5296, 0x5297, 0x5298, 0x529a, 0x529c,
- 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52af, 0x52b0, 0x52b6, 0x52b7,
- 0x52b8, 0x52ba, 0x52bb, 0x52bd, 0x52c0, 0x52c4, 0x52c6, 0x52c8,
- 0x52cc, 0x52cf, 0x52d1, 0x52d4, 0x52d6, 0x52db, 0x52dc, 0x52e1,
- 0x52e5, 0x52e8, 0x52e9, 0x52ea, 0x52ec, 0x52f0, 0x52f1, 0x52f4,
- 0x52f6, 0x52f7, 0x5300, 0x5303, 0x530a, 0x530b,
- /* 0x34 */
- 0x530c, 0x5311, 0x5313, 0x5318, 0x531b, 0x531c, 0x531e, 0x531f,
- 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c, 0x532d, 0x5330,
- 0x5332, 0x5335, 0x533c, 0x533d, 0x533e, 0x5342, 0x534c, 0x534b,
- 0x5359, 0x535b, 0x5361, 0x5363, 0x5365, 0x536c, 0x536d, 0x5372,
- 0x5379, 0x537e, 0x5383, 0x5387, 0x5388, 0x538e, 0x5393, 0x5394,
- 0x5399, 0x539d, 0x53a1, 0x53a4, 0x53aa, 0x53ab, 0x53af, 0x53b2,
- 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53ba, 0x53bd, 0x53c0, 0x53c5,
- 0x53cf, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dd, 0x53de, 0x53e0,
- 0x53e6, 0x53e7, 0x53f5, 0x5402, 0x5413, 0x541a, 0x5421, 0x5427,
- 0x5428, 0x542a, 0x542f, 0x5431, 0x5434, 0x5435, 0x5443, 0x5444,
- 0x5447, 0x544d, 0x544f, 0x545e, 0x5462, 0x5464, 0x5466, 0x5467,
- 0x5469, 0x546b, 0x546d, 0x546e, 0x5474, 0x547f,
- /* 0x35 */
- 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548d, 0x5491, 0x5495,
- 0x5496, 0x549c, 0x549f, 0x54a1, 0x54a6, 0x54a7, 0x54a9, 0x54aa,
- 0x54ad, 0x54ae, 0x54b1, 0x54b7, 0x54b9, 0x54ba, 0x54bb, 0x54bf,
- 0x54c6, 0x54ca, 0x54cd, 0x54ce, 0x54e0, 0x54ea, 0x54ec, 0x54ef,
- 0x54f6, 0x54fc, 0x54fe, 0x54ff, 0x5500, 0x5501, 0x5505, 0x5508,
- 0x5509, 0x550c, 0x550d, 0x550e, 0x5515, 0x552a, 0x552b, 0x5532,
- 0x5535, 0x5536, 0x553b, 0x553c, 0x553d, 0x5541, 0x5547, 0x5549,
- 0x554a, 0x554d, 0x5550, 0x5551, 0x5558, 0x555a, 0x555b, 0x555e,
- 0x5560, 0x5561, 0x5564, 0x5566, 0x557f, 0x5581, 0x5582, 0x5586,
- 0x5588, 0x558e, 0x558f, 0x5591, 0x5592, 0x5593, 0x5594, 0x5597,
- 0x55a3, 0x55a4, 0x55ad, 0x55b2, 0x55bf, 0x55c1, 0x55c3, 0x55c6,
- 0x55c9, 0x55cb, 0x55cc, 0x55ce, 0x55d1, 0x55d2,
- /* 0x36 */
- 0x55d3, 0x55d7, 0x55d8, 0x55db, 0x55de, 0x55e2, 0x55e9, 0x55f6,
- 0x55ff, 0x5605, 0x5608, 0x560a, 0x560d, 0x560e, 0x560f, 0x5610,
- 0x5611, 0x5612, 0x5619, 0x562c, 0x5630, 0x5633, 0x5635, 0x5637,
- 0x5639, 0x563b, 0x563c, 0x563d, 0x563f, 0x5640, 0x5641, 0x5643,
- 0x5644, 0x5646, 0x5649, 0x564b, 0x564d, 0x564f, 0x5654, 0x565e,
- 0x5660, 0x5661, 0x5662, 0x5663, 0x5666, 0x5669, 0x566d, 0x566f,
- 0x5671, 0x5672, 0x5675, 0x5684, 0x5685, 0x5688, 0x568b, 0x568c,
- 0x5695, 0x5699, 0x569a, 0x569d, 0x569e, 0x569f, 0x56a6, 0x56a7,
- 0x56a8, 0x56a9, 0x56ab, 0x56ac, 0x56ad, 0x56b1, 0x56b3, 0x56b7,
- 0x56be, 0x56c5, 0x56c9, 0x56ca, 0x56cb, 0x56cf, 0x56d0, 0x56cc,
- 0x56cd, 0x56d9, 0x56dc, 0x56dd, 0x56df, 0x56e1, 0x56e4, 0x56e5,
- 0x56e6, 0x56e7, 0x56e8, 0x56f1, 0x56eb, 0x56ed,
- /* 0x37 */
- 0x56f6, 0x56f7, 0x5701, 0x5702, 0x5707, 0x570a, 0x570c, 0x5711,
- 0x5715, 0x571a, 0x571b, 0x571d, 0x5720, 0x5722, 0x5723, 0x5724,
- 0x5725, 0x5729, 0x572a, 0x572c, 0x572e, 0x572f, 0x5733, 0x5734,
- 0x573d, 0x573e, 0x573f, 0x5745, 0x5746, 0x574c, 0x574d, 0x5752,
- 0x5762, 0x5765, 0x5767, 0x5768, 0x576b, 0x576d, 0x576e, 0x576f,
- 0x5770, 0x5771, 0x5773, 0x5774, 0x5775, 0x5777, 0x5779, 0x577a,
- 0x577b, 0x577c, 0x577e, 0x5781, 0x5783, 0x578c, 0x5794, 0x5797,
- 0x5799, 0x579a, 0x579c, 0x579d, 0x579e, 0x579f, 0x57a1, 0x5795,
- 0x57a7, 0x57a8, 0x57a9, 0x57ac, 0x57b8, 0x57bd, 0x57c7, 0x57c8,
- 0x57cc, 0x57cf, 0x57d5, 0x57dd, 0x57de, 0x57e4, 0x57e6, 0x57e7,
- 0x57e9, 0x57ed, 0x57f0, 0x57f5, 0x57f6, 0x57f8, 0x57fd, 0x57fe,
- 0x57ff, 0x5803, 0x5804, 0x5808, 0x5809, 0x57e1,
- /* 0x38 */
- 0x580c, 0x580d, 0x581b, 0x581e, 0x581f, 0x5820, 0x5826, 0x5827,
- 0x582d, 0x5832, 0x5839, 0x583f, 0x5849, 0x584c, 0x584d, 0x584f,
- 0x5850, 0x5855, 0x585f, 0x5861, 0x5864, 0x5867, 0x5868, 0x5878,
- 0x587c, 0x587f, 0x5880, 0x5881, 0x5887, 0x5888, 0x5889, 0x588a,
- 0x588c, 0x588d, 0x588f, 0x5890, 0x5894, 0x5896, 0x589d, 0x58a0,
- 0x58a1, 0x58a2, 0x58a6, 0x58a9, 0x58b1, 0x58b2, 0x58c4, 0x58bc,
- 0x58c2, 0x58c8, 0x58cd, 0x58ce, 0x58d0, 0x58d2, 0x58d4, 0x58d6,
- 0x58da, 0x58dd, 0x58e1, 0x58e2, 0x58e9, 0x58f3, 0x5905, 0x5906,
- 0x590b, 0x590c, 0x5912, 0x5913, 0x5914, 0x8641, 0x591d, 0x5921,
- 0x5923, 0x5924, 0x5928, 0x592f, 0x5930, 0x5933, 0x5935, 0x5936,
- 0x593f, 0x5943, 0x5946, 0x5952, 0x5953, 0x5959, 0x595b, 0x595d,
- 0x595e, 0x595f, 0x5961, 0x5963, 0x596b, 0x596d,
- /* 0x39 */
- 0x596f, 0x5972, 0x5975, 0x5976, 0x5979, 0x597b, 0x597c, 0x598b,
- 0x598c, 0x598e, 0x5992, 0x5995, 0x5997, 0x599f, 0x59a4, 0x59a7,
- 0x59ad, 0x59ae, 0x59af, 0x59b0, 0x59b3, 0x59b7, 0x59ba, 0x59bc,
- 0x59c1, 0x59c3, 0x59c4, 0x59c8, 0x59ca, 0x59cd, 0x59d2, 0x59dd,
- 0x59de, 0x59df, 0x59e3, 0x59e4, 0x59e7, 0x59ee, 0x59ef, 0x59f1,
- 0x59f2, 0x59f4, 0x59f7, 0x5a00, 0x5a04, 0x5a0c, 0x5a0d, 0x5a0e,
- 0x5a12, 0x5a13, 0x5a1e, 0x5a23, 0x5a24, 0x5a27, 0x5a28, 0x5a2a,
- 0x5a2d, 0x5a30, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4c, 0x5a50,
- 0x5a55, 0x5a5e, 0x5a63, 0x5a65, 0x5a67, 0x5a6d, 0x5a77, 0x5a7a,
- 0x5a7b, 0x5a7e, 0x5a8b, 0x5a90, 0x5a93, 0x5a96, 0x5a99, 0x5a9c,
- 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa2, 0x5aa7, 0x5aac, 0x5ab1, 0x5ab2,
- 0x5ab3, 0x5ab5, 0x5ab8, 0x5aba, 0x5abb, 0x5abf,
- /* 0x3a */
- 0x5ac4, 0x5ac6, 0x5ac8, 0x5acf, 0x5ada, 0x5adc, 0x5ae0, 0x5ae5,
- 0x5aea, 0x5aee, 0x5af5, 0x5af6, 0x5afd, 0x5b00, 0x5b01, 0x5b08,
- 0x5b17, 0x5b34, 0x5b19, 0x5b1b, 0x5b1d, 0x5b21, 0x5b25, 0x5b2d,
- 0x5b38, 0x5b41, 0x5b4b, 0x5b4c, 0x5b52, 0x5b56, 0x5b5e, 0x5b68,
- 0x5b6e, 0x5b6f, 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, 0x5b81, 0x5b84,
- 0x5b86, 0x5b8a, 0x5b8e, 0x5b90, 0x5b91, 0x5b93, 0x5b94, 0x5b96,
- 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5baf, 0x5bb1, 0x5bb2, 0x5bb7,
- 0x5bba, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bcd, 0x5bcf, 0x5bd6, 0x5bd7,
- 0x5bd8, 0x5bd9, 0x5bda, 0x5be0, 0x5bef, 0x5bf1, 0x5bf4, 0x5bfd,
- 0x5c0c, 0x5c17, 0x5c1e, 0x5c1f, 0x5c23, 0x5c26, 0x5c29, 0x5c2b,
- 0x5c2c, 0x5c2e, 0x5c30, 0x5c32, 0x5c35, 0x5c36, 0x5c59, 0x5c5a,
- 0x5c5c, 0x5c62, 0x5c63, 0x5c67, 0x5c68, 0x5c69,
- /* 0x3b */
- 0x5c6d, 0x5c70, 0x5c74, 0x5c75, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d,
- 0x5c87, 0x5c88, 0x5c8a, 0x5c8f, 0x5c92, 0x5c9d, 0x5c9f, 0x5ca0,
- 0x5ca2, 0x5ca3, 0x5ca6, 0x5caa, 0x5cb2, 0x5cb4, 0x5cb5, 0x5cba,
- 0x5cc9, 0x5ccb, 0x5cd2, 0x5cdd, 0x5cd7, 0x5cee, 0x5cf1, 0x5cf2,
- 0x5cf4, 0x5d01, 0x5d06, 0x5d0d, 0x5d12, 0x5d2b, 0x5d23, 0x5d24,
- 0x5d26, 0x5d27, 0x5d31, 0x5d34, 0x5d39, 0x5d3d, 0x5d3f, 0x5d42,
- 0x5d43, 0x5d46, 0x5d48, 0x5d55, 0x5d51, 0x5d59, 0x5d4a, 0x5d5f,
- 0x5d60, 0x5d61, 0x5d62, 0x5d64, 0x5d6a, 0x5d6d, 0x5d70, 0x5d79,
- 0x5d7a, 0x5d7e, 0x5d7f, 0x5d81, 0x5d83, 0x5d88, 0x5d8a, 0x5d92,
- 0x5d93, 0x5d94, 0x5d95, 0x5d99, 0x5d9b, 0x5d9f, 0x5da0, 0x5da7,
- 0x5dab, 0x5db0, 0x5db4, 0x5db8, 0x5db9, 0x5dc3, 0x5dc7, 0x5dcb,
- 0x5dd0, 0x5dce, 0x5dd8, 0x5dd9, 0x5de0, 0x5de4,
- /* 0x3c */
- 0x5de9, 0x5df8, 0x5df9, 0x5e00, 0x5e07, 0x5e0d, 0x5e12, 0x5e14,
- 0x5e15, 0x5e18, 0x5e1f, 0x5e20, 0x5e2e, 0x5e28, 0x5e32, 0x5e35,
- 0x5e3e, 0x5e4b, 0x5e50, 0x5e49, 0x5e51, 0x5e56, 0x5e58, 0x5e5b,
- 0x5e5c, 0x5e5e, 0x5e68, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e,
- 0x5e70, 0x5e80, 0x5e8b, 0x5e8e, 0x5ea2, 0x5ea4, 0x5ea5, 0x5ea8,
- 0x5eaa, 0x5eac, 0x5eb1, 0x5eb3, 0x5ebd, 0x5ebe, 0x5ebf, 0x5ec6,
- 0x5ecc, 0x5ecb, 0x5ece, 0x5ed1, 0x5ed2, 0x5ed4, 0x5ed5, 0x5edc,
- 0x5ede, 0x5ee5, 0x5eeb, 0x5f02, 0x5f06, 0x5f07, 0x5f08, 0x5f0e,
- 0x5f19, 0x5f1c, 0x5f1d, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f28,
- 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f34, 0x5f36, 0x5f3b, 0x5f3d,
- 0x5f3f, 0x5f40, 0x5f44, 0x5f45, 0x5f47, 0x5f4d, 0x5f50, 0x5f54,
- 0x5f58, 0x5f5b, 0x5f60, 0x5f63, 0x5f64, 0x5f67,
- /* 0x3d */
- 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e,
- 0x5f89, 0x5f8d, 0x5f8f, 0x5f96, 0x5f9c, 0x5f9d, 0x5fa2, 0x5fa7,
- 0x5fab, 0x5fa4, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb8, 0x5fc4,
- 0x5fc7, 0x5fc8, 0x5fc9, 0x5fcb, 0x5fd0, 0x5fd1, 0x5fd2, 0x5fd3,
- 0x5fd4, 0x5fde, 0x5fe1, 0x5fe2, 0x5fe8, 0x5fe9, 0x5fea, 0x5fec,
- 0x5fed, 0x5fee, 0x5fef, 0x5ff2, 0x5ff3, 0x5ff6, 0x5ffa, 0x5ffc,
- 0x6007, 0x600a, 0x600d, 0x6013, 0x6014, 0x6017, 0x6018, 0x601a,
- 0x601f, 0x6024, 0x602d, 0x6033, 0x6035, 0x6040, 0x6047, 0x6048,
- 0x6049, 0x604c, 0x6051, 0x6054, 0x6056, 0x6057, 0x605d, 0x6061,
- 0x6067, 0x6071, 0x607e, 0x607f, 0x6082, 0x6086, 0x6088, 0x608a,
- 0x608e, 0x6091, 0x6093, 0x6095, 0x6098, 0x609d, 0x609e, 0x60a2,
- 0x60a4, 0x60a5, 0x60a8, 0x60b0, 0x60b1, 0x60b7,
- /* 0x3e */
- 0x60bb, 0x60be, 0x60c2, 0x60c4, 0x60c8, 0x60c9, 0x60ca, 0x60cb,
- 0x60ce, 0x60cf, 0x60d4, 0x60d5, 0x60d9, 0x60db, 0x60dd, 0x60de,
- 0x60e2, 0x60e5, 0x60f2, 0x60f5, 0x60f8, 0x60fc, 0x60fd, 0x6102,
- 0x6107, 0x610a, 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114,
- 0x6116, 0x6117, 0x6119, 0x611c, 0x611e, 0x6122, 0x612a, 0x612b,
- 0x6130, 0x6131, 0x6135, 0x6136, 0x6137, 0x6139, 0x6141, 0x6145,
- 0x6146, 0x6149, 0x615e, 0x6160, 0x616c, 0x6172, 0x6178, 0x617b,
- 0x617c, 0x617f, 0x6180, 0x6181, 0x6183, 0x6184, 0x618b, 0x618d,
- 0x6192, 0x6193, 0x6197, 0x6198, 0x619c, 0x619d, 0x619f, 0x61a0,
- 0x61a5, 0x61a8, 0x61aa, 0x61ad, 0x61b8, 0x61b9, 0x61bc, 0x61c0,
- 0x61c1, 0x61c2, 0x61ce, 0x61cf, 0x61d5, 0x61dc, 0x61dd, 0x61de,
- 0x61df, 0x61e1, 0x61e2, 0x61e7, 0x61e9, 0x61e5,
- /* 0x3f */
- 0x61ec, 0x61ed, 0x61ef, 0x6201, 0x6203, 0x6204, 0x6207, 0x6213,
- 0x6215, 0x621c, 0x6220, 0x6222, 0x6223, 0x6227, 0x6229, 0x622b,
- 0x6239, 0x623d, 0x6242, 0x6243, 0x6244, 0x6246, 0x624c, 0x6250,
- 0x6251, 0x6252, 0x6254, 0x6256, 0x625a, 0x625c, 0x6264, 0x626d,
- 0x626f, 0x6273, 0x627a, 0x627d, 0x628d, 0x628e, 0x628f, 0x6290,
- 0x62a6, 0x62a8, 0x62b3, 0x62b6, 0x62b7, 0x62ba, 0x62be, 0x62bf,
- 0x62c4, 0x62ce, 0x62d5, 0x62d6, 0x62da, 0x62ea, 0x62f2, 0x62f4,
- 0x62fc, 0x62fd, 0x6303, 0x6304, 0x630a, 0x630b, 0x630d, 0x6310,
- 0x6313, 0x6316, 0x6318, 0x6329, 0x632a, 0x632d, 0x6335, 0x6336,
- 0x6339, 0x633c, 0x6341, 0x6342, 0x6343, 0x6344, 0x6346, 0x634a,
- 0x634b, 0x634e, 0x6352, 0x6353, 0x6354, 0x6358, 0x635b, 0x6365,
- 0x6366, 0x636c, 0x636d, 0x6371, 0x6374, 0x6375,
- /* 0x40 */
- 0x6378, 0x637c, 0x637d, 0x637f, 0x6382, 0x6384, 0x6387, 0x638a,
- 0x6390, 0x6394, 0x6395, 0x6399, 0x639a, 0x639e, 0x63a4, 0x63a6,
- 0x63ad, 0x63ae, 0x63af, 0x63bd, 0x63c1, 0x63c5, 0x63c8, 0x63ce,
- 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63dc, 0x63e0, 0x63e5, 0x63ea,
- 0x63ec, 0x63f2, 0x63f3, 0x63f5, 0x63f8, 0x63f9, 0x6409, 0x640a,
- 0x6410, 0x6412, 0x6414, 0x6418, 0x641e, 0x6420, 0x6422, 0x6424,
- 0x6425, 0x6429, 0x642a, 0x642f, 0x6430, 0x6435, 0x643d, 0x643f,
- 0x644b, 0x644f, 0x6451, 0x6452, 0x6453, 0x6454, 0x645a, 0x645b,
- 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6463, 0x646d, 0x6473,
- 0x6474, 0x647b, 0x647d, 0x6485, 0x6487, 0x648f, 0x6490, 0x6491,
- 0x6498, 0x6499, 0x649b, 0x649d, 0x649f, 0x64a1, 0x64a3, 0x64a6,
- 0x64a8, 0x64ac, 0x64b3, 0x64bd, 0x64be, 0x64bf,
- /* 0x41 */
- 0x64c4, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64ce, 0x64d0, 0x64d1,
- 0x64d5, 0x64d7, 0x64e4, 0x64e5, 0x64e9, 0x64ea, 0x64ed, 0x64f0,
- 0x64f5, 0x64f7, 0x64fb, 0x64ff, 0x6501, 0x6504, 0x6508, 0x6509,
- 0x650a, 0x650f, 0x6513, 0x6514, 0x6516, 0x6519, 0x651b, 0x651e,
- 0x651f, 0x6522, 0x6526, 0x6529, 0x652e, 0x6531, 0x653a, 0x653c,
- 0x653d, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554, 0x655f,
- 0x6560, 0x6567, 0x656b, 0x657a, 0x657d, 0x6581, 0x6585, 0x658a,
- 0x6592, 0x6595, 0x6598, 0x659d, 0x65a0, 0x65a3, 0x65a6, 0x65ae,
- 0x65b2, 0x65b3, 0x65b4, 0x65bf, 0x65c2, 0x65c8, 0x65c9, 0x65ce,
- 0x65d0, 0x65d4, 0x65d6, 0x65d8, 0x65df, 0x65f0, 0x65f2, 0x65f4,
- 0x65f5, 0x65f9, 0x65fe, 0x65ff, 0x6600, 0x6604, 0x6608, 0x6609,
- 0x660d, 0x6611, 0x6612, 0x6615, 0x6616, 0x661d,
- /* 0x42 */
- 0x661e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662a,
- 0x662b, 0x662c, 0x662e, 0x6630, 0x6631, 0x6633, 0x6639, 0x6637,
- 0x6640, 0x6645, 0x6646, 0x664a, 0x664c, 0x6651, 0x664e, 0x6657,
- 0x6658, 0x6659, 0x665b, 0x665c, 0x6660, 0x6661, 0x66fb, 0x666a,
- 0x666b, 0x666c, 0x667e, 0x6673, 0x6675, 0x667f, 0x6677, 0x6678,
- 0x6679, 0x667b, 0x6680, 0x667c, 0x668b, 0x668c, 0x668d, 0x6690,
- 0x6692, 0x6699, 0x669a, 0x669b, 0x669c, 0x669f, 0x66a0, 0x66a4,
- 0x66ad, 0x66b1, 0x66b2, 0x66b5, 0x66bb, 0x66bf, 0x66c0, 0x66c2,
- 0x66c3, 0x66c8, 0x66cc, 0x66ce, 0x66cf, 0x66d4, 0x66db, 0x66df,
- 0x66e8, 0x66eb, 0x66ec, 0x66ee, 0x66fa, 0x6705, 0x6707, 0x670e,
- 0x6713, 0x6719, 0x671c, 0x6720, 0x6722, 0x6733, 0x673e, 0x6745,
- 0x6747, 0x6748, 0x674c, 0x6754, 0x6755, 0x675d,
- /* 0x43 */
- 0x6766, 0x676c, 0x676e, 0x6774, 0x6776, 0x677b, 0x6781, 0x6784,
- 0x678e, 0x678f, 0x6791, 0x6793, 0x6796, 0x6798, 0x6799, 0x679b,
- 0x67b0, 0x67b1, 0x67b2, 0x67b5, 0x67bb, 0x67bc, 0x67bd, 0x67f9,
- 0x67c0, 0x67c2, 0x67c3, 0x67c5, 0x67c8, 0x67c9, 0x67d2, 0x67d7,
- 0x67d9, 0x67dc, 0x67e1, 0x67e6, 0x67f0, 0x67f2, 0x67f6, 0x67f7,
- 0x6852, 0x6814, 0x6819, 0x681d, 0x681f, 0x6828, 0x6827, 0x682c,
- 0x682d, 0x682f, 0x6830, 0x6831, 0x6833, 0x683b, 0x683f, 0x6844,
- 0x6845, 0x684a, 0x684c, 0x6855, 0x6857, 0x6858, 0x685b, 0x686b,
- 0x686e, 0x686f, 0x6870, 0x6871, 0x6872, 0x6875, 0x6879, 0x687a,
- 0x687b, 0x687c, 0x6882, 0x6884, 0x6886, 0x6888, 0x6896, 0x6898,
- 0x689a, 0x689c, 0x68a1, 0x68a3, 0x68a5, 0x68a9, 0x68aa, 0x68ae,
- 0x68b2, 0x68bb, 0x68c5, 0x68c8, 0x68cc, 0x68cf,
- /* 0x44 */
- 0x68d0, 0x68d1, 0x68d3, 0x68d6, 0x68d9, 0x68dc, 0x68dd, 0x68e5,
- 0x68e8, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68f0, 0x68f1, 0x68f5,
- 0x68f6, 0x68fb, 0x68fc, 0x68fd, 0x6906, 0x6909, 0x690a, 0x6910,
- 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, 0x6933, 0x6935, 0x6938,
- 0x693b, 0x6942, 0x6945, 0x6949, 0x694e, 0x6957, 0x695b, 0x6963,
- 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, 0x696c, 0x6970, 0x6971,
- 0x6972, 0x697a, 0x697b, 0x697f, 0x6980, 0x698d, 0x6992, 0x6996,
- 0x6998, 0x69a1, 0x69a5, 0x69a6, 0x69a8, 0x69ab, 0x69ad, 0x69af,
- 0x69b7, 0x69b8, 0x69ba, 0x69bc, 0x69c5, 0x69c8, 0x69d1, 0x69d6,
- 0x69d7, 0x69e2, 0x69e5, 0x69ee, 0x69ef, 0x69f1, 0x69f3, 0x69f5,
- 0x69fe, 0x6a00, 0x6a01, 0x6a03, 0x6a0f, 0x6a11, 0x6a15, 0x6a1a,
- 0x6a1d, 0x6a20, 0x6a24, 0x6a28, 0x6a30, 0x6a32,
- /* 0x45 */
- 0x6a34, 0x6a37, 0x6a3b, 0x6a3e, 0x6a3f, 0x6a45, 0x6a46, 0x6a49,
- 0x6a4a, 0x6a4e, 0x6a50, 0x6a51, 0x6a52, 0x6a55, 0x6a56, 0x6a5b,
- 0x6a64, 0x6a67, 0x6a6a, 0x6a71, 0x6a73, 0x6a7e, 0x6a81, 0x6a83,
- 0x6a86, 0x6a87, 0x6a89, 0x6a8b, 0x6a91, 0x6a9b, 0x6a9d, 0x6a9e,
- 0x6a9f, 0x6aa5, 0x6aab, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab4, 0x6abd,
- 0x6abe, 0x6abf, 0x6ac6, 0x6ac9, 0x6ac8, 0x6acc, 0x6ad0, 0x6ad4,
- 0x6ad5, 0x6ad6, 0x6adc, 0x6add, 0x6ae4, 0x6ae7, 0x6aec, 0x6af0,
- 0x6af1, 0x6af2, 0x6afc, 0x6afd, 0x6b02, 0x6b03, 0x6b06, 0x6b07,
- 0x6b09, 0x6b0f, 0x6b10, 0x6b11, 0x6b17, 0x6b1b, 0x6b1e, 0x6b24,
- 0x6b28, 0x6b2b, 0x6b2c, 0x6b2f, 0x6b35, 0x6b36, 0x6b3b, 0x6b3f,
- 0x6b46, 0x6b4a, 0x6b4d, 0x6b52, 0x6b56, 0x6b58, 0x6b5d, 0x6b60,
- 0x6b67, 0x6b6b, 0x6b6e, 0x6b70, 0x6b75, 0x6b7d,
- /* 0x46 */
- 0x6b7e, 0x6b82, 0x6b85, 0x6b97, 0x6b9b, 0x6b9f, 0x6ba0, 0x6ba2,
- 0x6ba3, 0x6ba8, 0x6ba9, 0x6bac, 0x6bad, 0x6bae, 0x6bb0, 0x6bb8,
- 0x6bb9, 0x6bbd, 0x6bbe, 0x6bc3, 0x6bc4, 0x6bc9, 0x6bcc, 0x6bd6,
- 0x6bda, 0x6be1, 0x6be3, 0x6be6, 0x6be7, 0x6bee, 0x6bf1, 0x6bf7,
- 0x6bf9, 0x6bff, 0x6c02, 0x6c04, 0x6c05, 0x6c09, 0x6c0d, 0x6c0e,
- 0x6c10, 0x6c12, 0x6c19, 0x6c1f, 0x6c26, 0x6c27, 0x6c28, 0x6c2c,
- 0x6c2e, 0x6c33, 0x6c35, 0x6c36, 0x6c3a, 0x6c3b, 0x6c3f, 0x6c4a,
- 0x6c4b, 0x6c4d, 0x6c4f, 0x6c52, 0x6c54, 0x6c59, 0x6c5b, 0x6c5c,
- 0x6c6b, 0x6c6d, 0x6c6f, 0x6c74, 0x6c76, 0x6c78, 0x6c79, 0x6c7b,
- 0x6c85, 0x6c86, 0x6c87, 0x6c89, 0x6c94, 0x6c95, 0x6c97, 0x6c98,
- 0x6c9c, 0x6c9f, 0x6cb0, 0x6cb2, 0x6cb4, 0x6cc2, 0x6cc6, 0x6ccd,
- 0x6ccf, 0x6cd0, 0x6cd1, 0x6cd2, 0x6cd4, 0x6cd6,
- /* 0x47 */
- 0x6cda, 0x6cdc, 0x6ce0, 0x6ce7, 0x6ce9, 0x6ceb, 0x6cec, 0x6cee,
- 0x6cf2, 0x6cf4, 0x6d04, 0x6d07, 0x6d0a, 0x6d0e, 0x6d0f, 0x6d11,
- 0x6d13, 0x6d1a, 0x6d26, 0x6d27, 0x6d28, 0x6c67, 0x6d2e, 0x6d2f,
- 0x6d31, 0x6d39, 0x6d3c, 0x6d3f, 0x6d57, 0x6d5e, 0x6d5f, 0x6d61,
- 0x6d65, 0x6d67, 0x6d6f, 0x6d70, 0x6d7c, 0x6d82, 0x6d87, 0x6d91,
- 0x6d92, 0x6d94, 0x6d96, 0x6d97, 0x6d98, 0x6daa, 0x6dac, 0x6db4,
- 0x6db7, 0x6db9, 0x6dbd, 0x6dbf, 0x6dc4, 0x6dc8, 0x6dca, 0x6dce,
- 0x6dcf, 0x6dd6, 0x6ddb, 0x6ddd, 0x6ddf, 0x6de0, 0x6de2, 0x6de5,
- 0x6de9, 0x6def, 0x6df0, 0x6df4, 0x6df6, 0x6dfc, 0x6e00, 0x6e04,
- 0x6e1e, 0x6e22, 0x6e27, 0x6e32, 0x6e36, 0x6e39, 0x6e3b, 0x6e3c,
- 0x6e44, 0x6e45, 0x6e48, 0x6e49, 0x6e4b, 0x6e4f, 0x6e51, 0x6e52,
- 0x6e53, 0x6e54, 0x6e57, 0x6e5c, 0x6e5d, 0x6e5e,
- /* 0x48 */
- 0x6e62, 0x6e63, 0x6e68, 0x6e73, 0x6e7b, 0x6e7d, 0x6e8d, 0x6e93,
- 0x6e99, 0x6ea0, 0x6ea7, 0x6ead, 0x6eae, 0x6eb1, 0x6eb3, 0x6ebb,
- 0x6ebf, 0x6ec0, 0x6ec1, 0x6ec3, 0x6ec7, 0x6ec8, 0x6eca, 0x6ecd,
- 0x6ece, 0x6ecf, 0x6eeb, 0x6eed, 0x6eee, 0x6ef9, 0x6efb, 0x6efd,
- 0x6f04, 0x6f08, 0x6f0a, 0x6f0c, 0x6f0d, 0x6f16, 0x6f18, 0x6f1a,
- 0x6f1b, 0x6f26, 0x6f29, 0x6f2a, 0x6f2f, 0x6f30, 0x6f33, 0x6f36,
- 0x6f3b, 0x6f3c, 0x6f2d, 0x6f4f, 0x6f51, 0x6f52, 0x6f53, 0x6f57,
- 0x6f59, 0x6f5a, 0x6f5d, 0x6f5e, 0x6f61, 0x6f62, 0x6f68, 0x6f6c,
- 0x6f7d, 0x6f7e, 0x6f83, 0x6f87, 0x6f88, 0x6f8b, 0x6f8c, 0x6f8d,
- 0x6f90, 0x6f92, 0x6f93, 0x6f94, 0x6f96, 0x6f9a, 0x6f9f, 0x6fa0,
- 0x6fa5, 0x6fa6, 0x6fa7, 0x6fa8, 0x6fae, 0x6faf, 0x6fb0, 0x6fb5,
- 0x6fb6, 0x6fbc, 0x6fc5, 0x6fc7, 0x6fc8, 0x6fca,
- /* 0x49 */
- 0x6fda, 0x6fde, 0x6fe8, 0x6fe9, 0x6ff0, 0x6ff5, 0x6ff9, 0x6ffc,
- 0x6ffd, 0x7000, 0x7005, 0x7006, 0x7007, 0x700d, 0x7017, 0x7020,
- 0x7023, 0x702f, 0x7034, 0x7037, 0x7039, 0x703c, 0x7043, 0x7044,
- 0x7048, 0x7049, 0x704a, 0x704b, 0x7054, 0x7055, 0x705d, 0x705e,
- 0x704e, 0x7064, 0x7065, 0x706c, 0x706e, 0x7075, 0x7076, 0x707e,
- 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097, 0x7098,
- 0x709b, 0x70a4, 0x70ab, 0x70b0, 0x70b1, 0x70b4, 0x70b7, 0x70ca,
- 0x70d1, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d8, 0x70dc, 0x70e4,
- 0x70fa, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710b, 0x710c,
- 0x710f, 0x711e, 0x7120, 0x712b, 0x712d, 0x712f, 0x7130, 0x7131,
- 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714a, 0x714b, 0x7150,
- 0x7152, 0x7157, 0x715a, 0x715c, 0x715e, 0x7160,
- /* 0x4a */
- 0x7168, 0x7179, 0x7180, 0x7185, 0x7187, 0x718c, 0x7192, 0x719a,
- 0x719b, 0x71a0, 0x71a2, 0x71af, 0x71b0, 0x71b2, 0x71b3, 0x71ba,
- 0x71bf, 0x71c0, 0x71c1, 0x71c4, 0x71cb, 0x71cc, 0x71d3, 0x71d6,
- 0x71d9, 0x71da, 0x71dc, 0x71f8, 0x71fe, 0x7200, 0x7207, 0x7208,
- 0x7209, 0x7213, 0x7217, 0x721a, 0x721d, 0x721f, 0x7224, 0x722b,
- 0x722f, 0x7234, 0x7238, 0x7239, 0x7241, 0x7242, 0x7243, 0x7245,
- 0x724e, 0x724f, 0x7250, 0x7253, 0x7255, 0x7256, 0x725a, 0x725c,
- 0x725e, 0x7260, 0x7263, 0x7268, 0x726b, 0x726e, 0x726f, 0x7271,
- 0x7277, 0x7278, 0x727b, 0x727c, 0x727f, 0x7284, 0x7289, 0x728d,
- 0x728e, 0x7293, 0x729b, 0x72a8, 0x72ad, 0x72ae, 0x72b1, 0x72b4,
- 0x72be, 0x72c1, 0x72c7, 0x72c9, 0x72cc, 0x72d5, 0x72d6, 0x72d8,
- 0x72df, 0x72e5, 0x72f3, 0x72f4, 0x72fa, 0x72fb,
- /* 0x4b */
- 0x72fe, 0x7302, 0x7304, 0x7305, 0x7307, 0x730b, 0x730d, 0x7312,
- 0x7313, 0x7318, 0x7319, 0x731e, 0x7322, 0x7324, 0x7327, 0x7328,
- 0x732c, 0x7331, 0x7332, 0x7335, 0x733a, 0x733b, 0x733d, 0x7343,
- 0x734d, 0x7350, 0x7352, 0x7356, 0x7358, 0x735d, 0x735e, 0x735f,
- 0x7360, 0x7366, 0x7367, 0x7369, 0x736b, 0x736c, 0x736e, 0x736f,
- 0x7371, 0x7377, 0x7379, 0x737c, 0x7380, 0x7381, 0x7383, 0x7385,
- 0x7386, 0x738e, 0x7390, 0x7393, 0x7395, 0x7397, 0x7398, 0x739c,
- 0x739e, 0x739f, 0x73a0, 0x73a2, 0x73a5, 0x73a6, 0x73aa, 0x73ab,
- 0x73ad, 0x73b5, 0x73b7, 0x73b9, 0x73bc, 0x73bd, 0x73bf, 0x73c5,
- 0x73c6, 0x73c9, 0x73cb, 0x73cc, 0x73cf, 0x73d2, 0x73d3, 0x73d6,
- 0x73d9, 0x73dd, 0x73e1, 0x73e3, 0x73e6, 0x73e7, 0x73e9, 0x73f4,
- 0x73f5, 0x73f7, 0x73f9, 0x73fa, 0x73fb, 0x73fd,
- /* 0x4c */
- 0x73ff, 0x7400, 0x7401, 0x7404, 0x7407, 0x740a, 0x7411, 0x741a,
- 0x741b, 0x7424, 0x7426, 0x7428, 0x7429, 0x742a, 0x742b, 0x742c,
- 0x742d, 0x742e, 0x742f, 0x7430, 0x7431, 0x7439, 0x7440, 0x7443,
- 0x7444, 0x7446, 0x7447, 0x744b, 0x744d, 0x7451, 0x7452, 0x7457,
- 0x745d, 0x7462, 0x7466, 0x7467, 0x7468, 0x746b, 0x746d, 0x746e,
- 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, 0x7486, 0x7487, 0x7489,
- 0x748f, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499, 0x749a, 0x749c,
- 0x749f, 0x74a0, 0x74a1, 0x74a3, 0x74a6, 0x74a8, 0x74a9, 0x74aa,
- 0x74ab, 0x74ae, 0x74af, 0x74b1, 0x74b2, 0x74b5, 0x74b9, 0x74bb,
- 0x74bf, 0x74c8, 0x74c9, 0x74cc, 0x74d0, 0x74d3, 0x74d8, 0x74da,
- 0x74db, 0x74de, 0x74df, 0x74e4, 0x74e8, 0x74ea, 0x74eb, 0x74ef,
- 0x74f4, 0x74fa, 0x74fb, 0x74fc, 0x74ff, 0x7506,
- /* 0x4d */
- 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527, 0x7529,
- 0x752a, 0x752f, 0x7536, 0x7539, 0x753d, 0x753e, 0x753f, 0x7540,
- 0x7543, 0x7547, 0x7548, 0x754e, 0x7550, 0x7552, 0x7557, 0x755e,
- 0x755f, 0x7561, 0x756f, 0x7571, 0x7579, 0x757a, 0x757b, 0x757c,
- 0x757d, 0x757e, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593, 0x7595,
- 0x7599, 0x759c, 0x75a2, 0x75a4, 0x75b4, 0x75ba, 0x75bf, 0x75c0,
- 0x75c1, 0x75c4, 0x75c6, 0x75cc, 0x75ce, 0x75cf, 0x75d7, 0x75dc,
- 0x75df, 0x75e0, 0x75e1, 0x75e4, 0x75e7, 0x75ec, 0x75ee, 0x75ef,
- 0x75f1, 0x75f9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607, 0x7608,
- 0x760a, 0x760c, 0x760f, 0x7612, 0x7613, 0x7615, 0x7616, 0x7619,
- 0x761b, 0x761c, 0x761d, 0x761e, 0x7623, 0x7625, 0x7626, 0x7629,
- 0x762d, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639,
- /* 0x4e */
- 0x763a, 0x763c, 0x764a, 0x7640, 0x7641, 0x7643, 0x7644, 0x7645,
- 0x7649, 0x764b, 0x7655, 0x7659, 0x765f, 0x7664, 0x7665, 0x766d,
- 0x766e, 0x766f, 0x7671, 0x7674, 0x7681, 0x7685, 0x768c, 0x768d,
- 0x7695, 0x769b, 0x769c, 0x769d, 0x769f, 0x76a0, 0x76a2, 0x76a3,
- 0x76a4, 0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76aa, 0x76ad, 0x76bd,
- 0x76c1, 0x76c5, 0x76c9, 0x76cb, 0x76cc, 0x76ce, 0x76d4, 0x76d9,
- 0x76e0, 0x76e6, 0x76e8, 0x76ec, 0x76f0, 0x76f1, 0x76f6, 0x76f9,
- 0x76fc, 0x7700, 0x7706, 0x770a, 0x770e, 0x7712, 0x7714, 0x7715,
- 0x7717, 0x7719, 0x771a, 0x771c, 0x7722, 0x7728, 0x772d, 0x772e,
- 0x772f, 0x7734, 0x7735, 0x7736, 0x7739, 0x773d, 0x773e, 0x7742,
- 0x7745, 0x7746, 0x774a, 0x774d, 0x774e, 0x774f, 0x7752, 0x7756,
- 0x7757, 0x775c, 0x775e, 0x775f, 0x7760, 0x7762,
- /* 0x4f */
- 0x7764, 0x7767, 0x776a, 0x776c, 0x7770, 0x7772, 0x7773, 0x7774,
- 0x777a, 0x777d, 0x7780, 0x7784, 0x778c, 0x778d, 0x7794, 0x7795,
- 0x7796, 0x779a, 0x779f, 0x77a2, 0x77a7, 0x77aa, 0x77ae, 0x77af,
- 0x77b1, 0x77b5, 0x77be, 0x77c3, 0x77c9, 0x77d1, 0x77d2, 0x77d5,
- 0x77d9, 0x77de, 0x77df, 0x77e0, 0x77e4, 0x77e6, 0x77ea, 0x77ec,
- 0x77f0, 0x77f1, 0x77f4, 0x77f8, 0x77fb, 0x7805, 0x7806, 0x7809,
- 0x780d, 0x780e, 0x7811, 0x781d, 0x7821, 0x7822, 0x7823, 0x782d,
- 0x782e, 0x7830, 0x7835, 0x7837, 0x7843, 0x7844, 0x7847, 0x7848,
- 0x784c, 0x784e, 0x7852, 0x785c, 0x785e, 0x7860, 0x7861, 0x7863,
- 0x7864, 0x7868, 0x786a, 0x786e, 0x787a, 0x787e, 0x788a, 0x788f,
- 0x7894, 0x7898, 0x78a1, 0x789d, 0x789e, 0x789f, 0x78a4, 0x78a8,
- 0x78ac, 0x78ad, 0x78b0, 0x78b1, 0x78b2, 0x78b3,
- /* 0x50 */
- 0x78bb, 0x78bd, 0x78bf, 0x78c7, 0x78c8, 0x78c9, 0x78cc, 0x78ce,
- 0x78d2, 0x78d3, 0x78d5, 0x78d6, 0x78e4, 0x78db, 0x78df, 0x78e0,
- 0x78e1, 0x78e6, 0x78ea, 0x78f2, 0x78f3, 0x7900, 0x78f6, 0x78f7,
- 0x78fa, 0x78fb, 0x78ff, 0x7906, 0x790c, 0x7910, 0x791a, 0x791c,
- 0x791e, 0x791f, 0x7920, 0x7925, 0x7927, 0x7929, 0x792d, 0x7931,
- 0x7934, 0x7935, 0x793b, 0x793d, 0x793f, 0x7944, 0x7945, 0x7946,
- 0x794a, 0x794b, 0x794f, 0x7951, 0x7954, 0x7958, 0x795b, 0x795c,
- 0x7967, 0x7969, 0x796b, 0x7972, 0x7979, 0x797b, 0x797c, 0x797e,
- 0x798b, 0x798c, 0x7991, 0x7993, 0x7994, 0x7995, 0x7996, 0x7998,
- 0x799b, 0x799c, 0x79a1, 0x79a8, 0x79a9, 0x79ab, 0x79af, 0x79b1,
- 0x79b4, 0x79b8, 0x79bb, 0x79c2, 0x79c4, 0x79c7, 0x79c8, 0x79ca,
- 0x79cf, 0x79d4, 0x79d6, 0x79da, 0x79dd, 0x79de,
- /* 0x51 */
- 0x79e0, 0x79e2, 0x79e5, 0x79ea, 0x79eb, 0x79ed, 0x79f1, 0x79f8,
- 0x79fc, 0x7a02, 0x7a03, 0x7a07, 0x7a09, 0x7a0a, 0x7a0c, 0x7a11,
- 0x7a15, 0x7a1b, 0x7a1e, 0x7a21, 0x7a27, 0x7a2b, 0x7a2d, 0x7a2f,
- 0x7a30, 0x7a34, 0x7a35, 0x7a38, 0x7a39, 0x7a3a, 0x7a44, 0x7a45,
- 0x7a47, 0x7a48, 0x7a4c, 0x7a55, 0x7a56, 0x7a59, 0x7a5c, 0x7a5d,
- 0x7a5f, 0x7a60, 0x7a65, 0x7a67, 0x7a6a, 0x7a6d, 0x7a75, 0x7a78,
- 0x7a7e, 0x7a80, 0x7a82, 0x7a85, 0x7a86, 0x7a8a, 0x7a8b, 0x7a90,
- 0x7a91, 0x7a94, 0x7a9e, 0x7aa0, 0x7aa3, 0x7aac, 0x7ab3, 0x7ab5,
- 0x7ab9, 0x7abb, 0x7abc, 0x7ac6, 0x7ac9, 0x7acc, 0x7ace, 0x7ad1,
- 0x7adb, 0x7ae8, 0x7ae9, 0x7aeb, 0x7aec, 0x7af1, 0x7af4, 0x7afb,
- 0x7afd, 0x7afe, 0x7b07, 0x7b14, 0x7b1f, 0x7b23, 0x7b27, 0x7b29,
- 0x7b2a, 0x7b2b, 0x7b2d, 0x7b2e, 0x7b2f, 0x7b30,
- /* 0x52 */
- 0x7b31, 0x7b34, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b47, 0x7b4e,
- 0x7b55, 0x7b60, 0x7b64, 0x7b66, 0x7b69, 0x7b6a, 0x7b6d, 0x7b6f,
- 0x7b72, 0x7b73, 0x7b77, 0x7b84, 0x7b89, 0x7b8e, 0x7b90, 0x7b91,
- 0x7b96, 0x7b9b, 0x7b9e, 0x7ba0, 0x7ba5, 0x7bac, 0x7baf, 0x7bb0,
- 0x7bb2, 0x7bb5, 0x7bb6, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bc2,
- 0x7bc5, 0x7bc8, 0x7bca, 0x7bd4, 0x7bd6, 0x7bd7, 0x7bd9, 0x7bda,
- 0x7bdb, 0x7be8, 0x7bea, 0x7bf2, 0x7bf4, 0x7bf5, 0x7bf8, 0x7bf9,
- 0x7bfa, 0x7bfc, 0x7bfe, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c06,
- 0x7c09, 0x7c0b, 0x7c0c, 0x7c0e, 0x7c0f, 0x7c19, 0x7c1b, 0x7c20,
- 0x7c25, 0x7c26, 0x7c28, 0x7c2c, 0x7c31, 0x7c33, 0x7c34, 0x7c36,
- 0x7c39, 0x7c3a, 0x7c46, 0x7c4a, 0x7c55, 0x7c51, 0x7c52, 0x7c53,
- 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e,
- /* 0x53 */
- 0x7c61, 0x7c63, 0x7c67, 0x7c69, 0x7c6d, 0x7c6e, 0x7c70, 0x7c72,
- 0x7c79, 0x7c7c, 0x7c7d, 0x7c86, 0x7c87, 0x7c8f, 0x7c94, 0x7c9e,
- 0x7ca0, 0x7ca6, 0x7cb0, 0x7cb6, 0x7cb7, 0x7cba, 0x7cbb, 0x7cbc,
- 0x7cbf, 0x7cc4, 0x7cc7, 0x7cc8, 0x7cc9, 0x7ccd, 0x7ccf, 0x7cd3,
- 0x7cd4, 0x7cd5, 0x7cd7, 0x7cd9, 0x7cda, 0x7cdd, 0x7ce6, 0x7ce9,
- 0x7ceb, 0x7cf5, 0x7d03, 0x7d07, 0x7d08, 0x7d09, 0x7d0f, 0x7d11,
- 0x7d12, 0x7d13, 0x7d16, 0x7d1d, 0x7d1e, 0x7d23, 0x7d26, 0x7d2a,
- 0x7d2d, 0x7d31, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d40, 0x7d41, 0x7d47,
- 0x7d48, 0x7d4d, 0x7d51, 0x7d53, 0x7d57, 0x7d59, 0x7d5a, 0x7d5c,
- 0x7d5d, 0x7d65, 0x7d67, 0x7d6a, 0x7d70, 0x7d78, 0x7d7a, 0x7d7b,
- 0x7d7f, 0x7d81, 0x7d82, 0x7d83, 0x7d85, 0x7d86, 0x7d88, 0x7d8b,
- 0x7d8c, 0x7d8d, 0x7d91, 0x7d96, 0x7d97, 0x7d9d,
- /* 0x54 */
- 0x7d9e, 0x7da6, 0x7da7, 0x7daa, 0x7db3, 0x7db6, 0x7db7, 0x7db9,
- 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dcc, 0x7dcd, 0x7dce,
- 0x7dd7, 0x7dd9, 0x7e00, 0x7de2, 0x7de5, 0x7de6, 0x7dea, 0x7deb,
- 0x7ded, 0x7df1, 0x7df5, 0x7df6, 0x7df9, 0x7dfa, 0x7e08, 0x7e10,
- 0x7e11, 0x7e15, 0x7e17, 0x7e1c, 0x7e1d, 0x7e20, 0x7e27, 0x7e28,
- 0x7e2c, 0x7e2d, 0x7e2f, 0x7e33, 0x7e36, 0x7e3f, 0x7e44, 0x7e45,
- 0x7e47, 0x7e4e, 0x7e50, 0x7e52, 0x7e58, 0x7e5f, 0x7e61, 0x7e62,
- 0x7e65, 0x7e6b, 0x7e6e, 0x7e6f, 0x7e73, 0x7e78, 0x7e7e, 0x7e81,
- 0x7e86, 0x7e87, 0x7e8a, 0x7e8d, 0x7e91, 0x7e95, 0x7e98, 0x7e9a,
- 0x7e9d, 0x7e9e, 0x7f3c, 0x7f3b, 0x7f3d, 0x7f3e, 0x7f3f, 0x7f43,
- 0x7f44, 0x7f47, 0x7f4f, 0x7f52, 0x7f53, 0x7f5b, 0x7f5c, 0x7f5d,
- 0x7f61, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f6d,
- /* 0x55 */
- 0x7f71, 0x7f7d, 0x7f7e, 0x7f7f, 0x7f80, 0x7f8b, 0x7f8d, 0x7f8f,
- 0x7f90, 0x7f91, 0x7f96, 0x7f97, 0x7f9c, 0x7fa1, 0x7fa2, 0x7fa6,
- 0x7faa, 0x7fad, 0x7fb4, 0x7fbc, 0x7fbf, 0x7fc0, 0x7fc3, 0x7fc8,
- 0x7fce, 0x7fcf, 0x7fdb, 0x7fdf, 0x7fe3, 0x7fe5, 0x7fe8, 0x7fec,
- 0x7fee, 0x7fef, 0x7ff2, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff, 0x8007,
- 0x8008, 0x800a, 0x800d, 0x800e, 0x800f, 0x8011, 0x8013, 0x8014,
- 0x8016, 0x801d, 0x801e, 0x801f, 0x8020, 0x8024, 0x8026, 0x802c,
- 0x802e, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803a, 0x803c,
- 0x803e, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806d, 0x8071,
- 0x8075, 0x8081, 0x8088, 0x808e, 0x809c, 0x809e, 0x80a6, 0x80a7,
- 0x80ab, 0x80b8, 0x80b9, 0x80c8, 0x80cd, 0x80cf, 0x80d2, 0x80d4,
- 0x80d5, 0x80d7, 0x80d8, 0x80e0, 0x80ed, 0x80ee,
- /* 0x56 */
- 0x80f0, 0x80f2, 0x80f3, 0x80f6, 0x80f9, 0x80fa, 0x80fe, 0x8103,
- 0x810b, 0x8116, 0x8117, 0x8118, 0x811c, 0x811e, 0x8120, 0x8124,
- 0x8127, 0x812c, 0x8130, 0x8135, 0x813a, 0x813c, 0x8145, 0x8147,
- 0x814a, 0x814c, 0x8152, 0x8157, 0x8160, 0x8161, 0x8167, 0x8168,
- 0x8169, 0x816d, 0x816f, 0x8177, 0x8181, 0x8190, 0x8184, 0x8185,
- 0x8186, 0x818b, 0x818e, 0x8196, 0x8198, 0x819b, 0x819e, 0x81a2,
- 0x81ae, 0x81b2, 0x81b4, 0x81bb, 0x81cb, 0x81c3, 0x81c5, 0x81ca,
- 0x81ce, 0x81cf, 0x81d5, 0x81d7, 0x81db, 0x81dd, 0x81de, 0x81e1,
- 0x81e4, 0x81eb, 0x81ec, 0x81f0, 0x81f1, 0x81f2, 0x81f5, 0x81f6,
- 0x81f8, 0x81f9, 0x81fd, 0x81ff, 0x8200, 0x8203, 0x820f, 0x8213,
- 0x8214, 0x8219, 0x821a, 0x821d, 0x8221, 0x8222, 0x8228, 0x8232,
- 0x8234, 0x823a, 0x8243, 0x8244, 0x8245, 0x8246,
- /* 0x57 */
- 0x824b, 0x824e, 0x824f, 0x8251, 0x8256, 0x825c, 0x8260, 0x8263,
- 0x8267, 0x826d, 0x8274, 0x827b, 0x827d, 0x827f, 0x8280, 0x8281,
- 0x8283, 0x8284, 0x8287, 0x8289, 0x828a, 0x828e, 0x8291, 0x8294,
- 0x8296, 0x8298, 0x829a, 0x829b, 0x82a0, 0x82a1, 0x82a3, 0x82a4,
- 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ae, 0x82b0, 0x82b2, 0x82b4,
- 0x82b7, 0x82ba, 0x82bc, 0x82be, 0x82bf, 0x82c6, 0x82d0, 0x82d5,
- 0x82da, 0x82e0, 0x82e2, 0x82e4, 0x82e8, 0x82ea, 0x82ed, 0x82ef,
- 0x82f6, 0x82f7, 0x82fd, 0x82fe, 0x8300, 0x8301, 0x8307, 0x8308,
- 0x830a, 0x830b, 0x8354, 0x831b, 0x831d, 0x831e, 0x831f, 0x8321,
- 0x8322, 0x832c, 0x832d, 0x832e, 0x8330, 0x8333, 0x8337, 0x833a,
- 0x833c, 0x833d, 0x8342, 0x8343, 0x8344, 0x8347, 0x834d, 0x834e,
- 0x8351, 0x8355, 0x8356, 0x8357, 0x8370, 0x8378,
- /* 0x58 */
- 0x837d, 0x837f, 0x8380, 0x8382, 0x8384, 0x8386, 0x838d, 0x8392,
- 0x8394, 0x8395, 0x8398, 0x8399, 0x839b, 0x839c, 0x839d, 0x83a6,
- 0x83a7, 0x83a9, 0x83ac, 0x83be, 0x83bf, 0x83c0, 0x83c7, 0x83c9,
- 0x83cf, 0x83d0, 0x83d1, 0x83d4, 0x83dd, 0x8353, 0x83e8, 0x83ea,
- 0x83f6, 0x83f8, 0x83f9, 0x83fc, 0x8401, 0x8406, 0x840a, 0x840f,
- 0x8411, 0x8415, 0x8419, 0x83ad, 0x842f, 0x8439, 0x8445, 0x8447,
- 0x8448, 0x844a, 0x844d, 0x844f, 0x8451, 0x8452, 0x8456, 0x8458,
- 0x8459, 0x845a, 0x845c, 0x8460, 0x8464, 0x8465, 0x8467, 0x846a,
- 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847c, 0x847d, 0x8481,
- 0x8485, 0x8492, 0x8493, 0x8495, 0x849e, 0x84a6, 0x84a8, 0x84a9,
- 0x84aa, 0x84af, 0x84b1, 0x84b4, 0x84ba, 0x84bd, 0x84be, 0x84c0,
- 0x84c2, 0x84c7, 0x84c8, 0x84cc, 0x84cf, 0x84d3,
- /* 0x59 */
- 0x84dc, 0x84e7, 0x84ea, 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f7,
- 0x8532, 0x84fa, 0x84fb, 0x84fd, 0x8502, 0x8503, 0x8507, 0x850c,
- 0x850e, 0x8510, 0x851c, 0x851e, 0x8522, 0x8523, 0x8524, 0x8525,
- 0x8527, 0x852a, 0x852b, 0x852f, 0x8533, 0x8534, 0x8536, 0x853f,
- 0x8546, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8556, 0x8559,
- 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562, 0x8564,
- 0x856b, 0x856f, 0x8579, 0x857a, 0x857b, 0x857d, 0x857f, 0x8581,
- 0x8585, 0x8586, 0x8589, 0x858b, 0x858c, 0x858f, 0x8593, 0x8598,
- 0x859d, 0x859f, 0x85a0, 0x85a2, 0x85a5, 0x85a7, 0x85b4, 0x85b6,
- 0x85b7, 0x85b8, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c2, 0x85c7,
- 0x85ca, 0x85cb, 0x85ce, 0x85ad, 0x85d8, 0x85da, 0x85df, 0x85e0,
- 0x85e6, 0x85e8, 0x85ed, 0x85f3, 0x85f6, 0x85fc,
- /* 0x5a */
- 0x85ff, 0x8600, 0x8604, 0x8605, 0x860d, 0x860e, 0x8610, 0x8611,
- 0x8612, 0x8618, 0x8619, 0x861b, 0x861e, 0x8621, 0x8627, 0x8629,
- 0x8636, 0x8638, 0x863a, 0x863c, 0x863d, 0x8640, 0x8642, 0x8646,
- 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, 0x865d, 0x8660,
- 0x8661, 0x8662, 0x8663, 0x8664, 0x8669, 0x866c, 0x866f, 0x8675,
- 0x8676, 0x8677, 0x867a, 0x868d, 0x8691, 0x8696, 0x8698, 0x869a,
- 0x869c, 0x86a1, 0x86a6, 0x86a7, 0x86a8, 0x86ad, 0x86b1, 0x86b3,
- 0x86b4, 0x86b5, 0x86b7, 0x86b8, 0x86b9, 0x86bf, 0x86c0, 0x86c1,
- 0x86c3, 0x86c5, 0x86d1, 0x86d2, 0x86d5, 0x86d7, 0x86da, 0x86dc,
- 0x86e0, 0x86e3, 0x86e5, 0x86e7, 0x8688, 0x86fa, 0x86fc, 0x86fd,
- 0x8704, 0x8705, 0x8707, 0x870b, 0x870e, 0x870f, 0x8710, 0x8713,
- 0x8714, 0x8719, 0x871e, 0x871f, 0x8721, 0x8723,
- /* 0x5b */
- 0x8728, 0x872e, 0x872f, 0x8731, 0x8732, 0x8739, 0x873a, 0x873c,
- 0x873d, 0x873e, 0x8740, 0x8743, 0x8745, 0x874d, 0x8758, 0x875d,
- 0x8761, 0x8764, 0x8765, 0x876f, 0x8771, 0x8772, 0x877b, 0x8783,
- 0x8784, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x878b, 0x878c,
- 0x8790, 0x8793, 0x8795, 0x8797, 0x8798, 0x8799, 0x879e, 0x87a0,
- 0x87a3, 0x87a7, 0x87ac, 0x87ad, 0x87ae, 0x87b1, 0x87b5, 0x87be,
- 0x87bf, 0x87c1, 0x87c8, 0x87c9, 0x87ca, 0x87ce, 0x87d5, 0x87d6,
- 0x87d9, 0x87da, 0x87dc, 0x87df, 0x87e2, 0x87e3, 0x87e4, 0x87ea,
- 0x87eb, 0x87ed, 0x87f1, 0x87f3, 0x87f8, 0x87fa, 0x87ff, 0x8801,
- 0x8803, 0x8806, 0x8809, 0x880a, 0x880b, 0x8810, 0x8819, 0x8812,
- 0x8813, 0x8814, 0x8818, 0x881a, 0x881b, 0x881c, 0x881e, 0x881f,
- 0x8828, 0x882d, 0x882e, 0x8830, 0x8832, 0x8835,
- /* 0x5c */
- 0x883a, 0x883c, 0x8841, 0x8843, 0x8845, 0x8848, 0x8849, 0x884a,
- 0x884b, 0x884e, 0x8851, 0x8855, 0x8856, 0x8858, 0x885a, 0x885c,
- 0x885f, 0x8860, 0x8864, 0x8869, 0x8871, 0x8879, 0x887b, 0x8880,
- 0x8898, 0x889a, 0x889b, 0x889c, 0x889f, 0x88a0, 0x88a8, 0x88aa,
- 0x88ba, 0x88bd, 0x88be, 0x88c0, 0x88ca, 0x88cb, 0x88cc, 0x88cd,
- 0x88ce, 0x88d1, 0x88d2, 0x88d3, 0x88db, 0x88de, 0x88e7, 0x88ef,
- 0x88f0, 0x88f1, 0x88f5, 0x88f7, 0x8901, 0x8906, 0x890d, 0x890e,
- 0x890f, 0x8915, 0x8916, 0x8918, 0x8919, 0x891a, 0x891c, 0x8920,
- 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932, 0x8935, 0x8939,
- 0x893a, 0x893e, 0x8940, 0x8942, 0x8945, 0x8946, 0x8949, 0x894f,
- 0x8952, 0x8957, 0x895a, 0x895b, 0x895c, 0x8961, 0x8962, 0x8963,
- 0x896b, 0x896e, 0x8970, 0x8973, 0x8975, 0x897a,
- /* 0x5d */
- 0x897b, 0x897c, 0x897d, 0x8989, 0x898d, 0x8990, 0x8994, 0x8995,
- 0x899b, 0x899c, 0x899f, 0x89a0, 0x89a5, 0x89b0, 0x89b4, 0x89b5,
- 0x89b6, 0x89b7, 0x89bc, 0x89d4, 0x89d5, 0x89d6, 0x89d7, 0x89d8,
- 0x89e5, 0x89e9, 0x89eb, 0x89ed, 0x89f1, 0x89f3, 0x89f6, 0x89f9,
- 0x89fd, 0x89ff, 0x8a04, 0x8a05, 0x8a07, 0x8a0f, 0x8a11, 0x8a12,
- 0x8a14, 0x8a15, 0x8a1e, 0x8a20, 0x8a22, 0x8a24, 0x8a26, 0x8a2b,
- 0x8a2c, 0x8a2f, 0x8a35, 0x8a37, 0x8a3d, 0x8a3e, 0x8a40, 0x8a43,
- 0x8a45, 0x8a47, 0x8a49, 0x8a4d, 0x8a4e, 0x8a53, 0x8a56, 0x8a57,
- 0x8a58, 0x8a5c, 0x8a5d, 0x8a61, 0x8a65, 0x8a67, 0x8a75, 0x8a76,
- 0x8a77, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7e, 0x8a7f, 0x8a80, 0x8a83,
- 0x8a86, 0x8a8b, 0x8a8f, 0x8a90, 0x8a92, 0x8a96, 0x8a97, 0x8a99,
- 0x8a9f, 0x8aa7, 0x8aa9, 0x8aae, 0x8aaf, 0x8ab3,
- /* 0x5e */
- 0x8ab6, 0x8ab7, 0x8abb, 0x8abe, 0x8ac3, 0x8ac6, 0x8ac8, 0x8ac9,
- 0x8aca, 0x8ad1, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad7, 0x8add, 0x8adf,
- 0x8aec, 0x8af0, 0x8af4, 0x8af5, 0x8af6, 0x8afc, 0x8aff, 0x8b05,
- 0x8b06, 0x8b0b, 0x8b11, 0x8b1c, 0x8b1e, 0x8b1f, 0x8b0a, 0x8b2d,
- 0x8b30, 0x8b37, 0x8b3c, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46,
- 0x8b48, 0x8b52, 0x8b53, 0x8b54, 0x8b59, 0x8b4d, 0x8b5e, 0x8b63,
- 0x8b6d, 0x8b76, 0x8b78, 0x8b79, 0x8b7c, 0x8b7e, 0x8b81, 0x8b84,
- 0x8b85, 0x8b8b, 0x8b8d, 0x8b8f, 0x8b94, 0x8b95, 0x8b9c, 0x8b9e,
- 0x8b9f, 0x8c38, 0x8c39, 0x8c3d, 0x8c3e, 0x8c45, 0x8c47, 0x8c49,
- 0x8c4b, 0x8c4f, 0x8c51, 0x8c53, 0x8c54, 0x8c57, 0x8c58, 0x8c5b,
- 0x8c5d, 0x8c59, 0x8c63, 0x8c64, 0x8c66, 0x8c68, 0x8c69, 0x8c6d,
- 0x8c73, 0x8c75, 0x8c76, 0x8c7b, 0x8c7e, 0x8c86,
- /* 0x5f */
- 0x8c87, 0x8c8b, 0x8c90, 0x8c92, 0x8c93, 0x8c99, 0x8c9b, 0x8c9c,
- 0x8ca4, 0x8cb9, 0x8cba, 0x8cc5, 0x8cc6, 0x8cc9, 0x8ccb, 0x8ccf,
- 0x8cd6, 0x8cd5, 0x8cd9, 0x8cdd, 0x8ce1, 0x8ce8, 0x8cec, 0x8cef,
- 0x8cf0, 0x8cf2, 0x8cf5, 0x8cf7, 0x8cf8, 0x8cfe, 0x8cff, 0x8d01,
- 0x8d03, 0x8d09, 0x8d12, 0x8d17, 0x8d1b, 0x8d65, 0x8d69, 0x8d6c,
- 0x8d6e, 0x8d7f, 0x8d82, 0x8d84, 0x8d88, 0x8d8d, 0x8d90, 0x8d91,
- 0x8d95, 0x8d9e, 0x8d9f, 0x8da0, 0x8da6, 0x8dab, 0x8dac, 0x8daf,
- 0x8db2, 0x8db5, 0x8db7, 0x8db9, 0x8dbb, 0x8dc0, 0x8dc5, 0x8dc6,
- 0x8dc7, 0x8dc8, 0x8dca, 0x8dce, 0x8dd1, 0x8dd4, 0x8dd5, 0x8dd7,
- 0x8dd9, 0x8de4, 0x8de5, 0x8de7, 0x8dec, 0x8df0, 0x8dbc, 0x8df1,
- 0x8df2, 0x8df4, 0x8dfd, 0x8e01, 0x8e04, 0x8e05, 0x8e06, 0x8e0b,
- 0x8e11, 0x8e14, 0x8e16, 0x8e20, 0x8e21, 0x8e22,
- /* 0x60 */
- 0x8e23, 0x8e26, 0x8e27, 0x8e31, 0x8e33, 0x8e36, 0x8e37, 0x8e38,
- 0x8e39, 0x8e3d, 0x8e40, 0x8e41, 0x8e4b, 0x8e4d, 0x8e4e, 0x8e4f,
- 0x8e54, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e61, 0x8e62, 0x8e69,
- 0x8e6c, 0x8e6d, 0x8e6f, 0x8e70, 0x8e71, 0x8e79, 0x8e7a, 0x8e7b,
- 0x8e82, 0x8e83, 0x8e89, 0x8e90, 0x8e92, 0x8e95, 0x8e9a, 0x8e9b,
- 0x8e9d, 0x8e9e, 0x8ea2, 0x8ea7, 0x8ea9, 0x8ead, 0x8eae, 0x8eb3,
- 0x8eb5, 0x8eba, 0x8ebb, 0x8ec0, 0x8ec1, 0x8ec3, 0x8ec4, 0x8ec7,
- 0x8ecf, 0x8ed1, 0x8ed4, 0x8edc, 0x8ee8, 0x8eee, 0x8ef0, 0x8ef1,
- 0x8ef7, 0x8ef9, 0x8efa, 0x8eed, 0x8f00, 0x8f02, 0x8f07, 0x8f08,
- 0x8f0f, 0x8f10, 0x8f16, 0x8f17, 0x8f18, 0x8f1e, 0x8f20, 0x8f21,
- 0x8f23, 0x8f25, 0x8f27, 0x8f28, 0x8f2c, 0x8f2d, 0x8f2e, 0x8f34,
- 0x8f35, 0x8f36, 0x8f37, 0x8f3a, 0x8f40, 0x8f41,
- /* 0x61 */
- 0x8f43, 0x8f47, 0x8f4f, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55,
- 0x8f58, 0x8f5d, 0x8f5e, 0x8f65, 0x8f9d, 0x8fa0, 0x8fa1, 0x8fa4,
- 0x8fa5, 0x8fa6, 0x8fb5, 0x8fb6, 0x8fb8, 0x8fbe, 0x8fc0, 0x8fc1,
- 0x8fc6, 0x8fca, 0x8fcb, 0x8fcd, 0x8fd0, 0x8fd2, 0x8fd3, 0x8fd5,
- 0x8fe0, 0x8fe3, 0x8fe4, 0x8fe8, 0x8fee, 0x8ff1, 0x8ff5, 0x8ff6,
- 0x8ffb, 0x8ffe, 0x9002, 0x9004, 0x9008, 0x900c, 0x9018, 0x901b,
- 0x9028, 0x9029, 0x902f, 0x902a, 0x902c, 0x902d, 0x9033, 0x9034,
- 0x9037, 0x903f, 0x9043, 0x9044, 0x904c, 0x905b, 0x905d, 0x9062,
- 0x9066, 0x9067, 0x906c, 0x9070, 0x9074, 0x9079, 0x9085, 0x9088,
- 0x908b, 0x908c, 0x908e, 0x9090, 0x9095, 0x9097, 0x9098, 0x9099,
- 0x909b, 0x90a0, 0x90a1, 0x90a2, 0x90a5, 0x90b0, 0x90b2, 0x90b3,
- 0x90b4, 0x90b6, 0x90bd, 0x90cc, 0x90be, 0x90c3,
- /* 0x62 */
- 0x90c4, 0x90c5, 0x90c7, 0x90c8, 0x90d5, 0x90d7, 0x90d8, 0x90d9,
- 0x90dc, 0x90dd, 0x90df, 0x90e5, 0x90d2, 0x90f6, 0x90eb, 0x90ef,
- 0x90f0, 0x90f4, 0x90fe, 0x90ff, 0x9100, 0x9104, 0x9105, 0x9106,
- 0x9108, 0x910d, 0x9110, 0x9114, 0x9116, 0x9117, 0x9118, 0x911a,
- 0x911c, 0x911e, 0x9120, 0x9125, 0x9122, 0x9123, 0x9127, 0x9129,
- 0x912e, 0x912f, 0x9131, 0x9134, 0x9136, 0x9137, 0x9139, 0x913a,
- 0x913c, 0x913d, 0x9143, 0x9147, 0x9148, 0x914f, 0x9153, 0x9157,
- 0x9159, 0x915a, 0x915b, 0x9161, 0x9164, 0x9167, 0x916d, 0x9174,
- 0x9179, 0x917a, 0x917b, 0x9181, 0x9183, 0x9185, 0x9186, 0x918a,
- 0x918e, 0x9191, 0x9193, 0x9194, 0x9195, 0x9198, 0x919e, 0x91a1,
- 0x91a6, 0x91a8, 0x91ac, 0x91ad, 0x91ae, 0x91b0, 0x91b1, 0x91b2,
- 0x91b3, 0x91b6, 0x91bb, 0x91bc, 0x91bd, 0x91bf,
- /* 0x63 */
- 0x91c2, 0x91c3, 0x91c5, 0x91d3, 0x91d4, 0x91d7, 0x91d9, 0x91da,
- 0x91de, 0x91e4, 0x91e5, 0x91e9, 0x91ea, 0x91ec, 0x91ed, 0x91ee,
- 0x91ef, 0x91f0, 0x91f1, 0x91f7, 0x91f9, 0x91fb, 0x91fd, 0x9200,
- 0x9201, 0x9204, 0x9205, 0x9206, 0x9207, 0x9209, 0x920a, 0x920c,
- 0x9210, 0x9212, 0x9213, 0x9216, 0x9218, 0x921c, 0x921d, 0x9223,
- 0x9224, 0x9225, 0x9226, 0x9228, 0x922e, 0x922f, 0x9230, 0x9233,
- 0x9235, 0x9236, 0x9238, 0x9239, 0x923a, 0x923c, 0x923e, 0x9240,
- 0x9242, 0x9243, 0x9246, 0x9247, 0x924a, 0x924d, 0x924e, 0x924f,
- 0x9251, 0x9258, 0x9259, 0x925c, 0x925d, 0x9260, 0x9261, 0x9265,
- 0x9267, 0x9268, 0x9269, 0x926e, 0x926f, 0x9270, 0x9275, 0x9276,
- 0x9277, 0x9278, 0x9279, 0x927b, 0x927c, 0x927d, 0x927f, 0x9288,
- 0x9289, 0x928a, 0x928d, 0x928e, 0x9292, 0x9297,
- /* 0x64 */
- 0x9299, 0x929f, 0x92a0, 0x92a4, 0x92a5, 0x92a7, 0x92a8, 0x92ab,
- 0x92af, 0x92b2, 0x92b6, 0x92b8, 0x92ba, 0x92bb, 0x92bc, 0x92bd,
- 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c5, 0x92c6, 0x92c7,
- 0x92c8, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92d0, 0x92d3, 0x92d5,
- 0x92d7, 0x92d8, 0x92d9, 0x92dc, 0x92dd, 0x92df, 0x92e0, 0x92e1,
- 0x92e3, 0x92e5, 0x92e7, 0x92e8, 0x92ec, 0x92ee, 0x92f0, 0x92f9,
- 0x92fb, 0x92ff, 0x9300, 0x9302, 0x9308, 0x930d, 0x9311, 0x9314,
- 0x9315, 0x931c, 0x931d, 0x931e, 0x931f, 0x9321, 0x9324, 0x9325,
- 0x9327, 0x9329, 0x932a, 0x9333, 0x9334, 0x9336, 0x9337, 0x9347,
- 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, 0x9357, 0x9358,
- 0x935a, 0x935e, 0x9364, 0x9365, 0x9367, 0x9369, 0x936a, 0x936d,
- 0x936f, 0x9370, 0x9371, 0x9373, 0x9374, 0x9376,
- /* 0x65 */
- 0x937a, 0x937d, 0x937f, 0x9380, 0x9381, 0x9382, 0x9388, 0x938a,
- 0x938b, 0x938d, 0x938f, 0x9392, 0x9395, 0x9398, 0x939b, 0x939e,
- 0x93a1, 0x93a3, 0x93a4, 0x93a6, 0x93a8, 0x93ab, 0x93b4, 0x93b5,
- 0x93b6, 0x93ba, 0x93a9, 0x93c1, 0x93c4, 0x93c5, 0x93c6, 0x93c7,
- 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93d3, 0x93d9, 0x93dc,
- 0x93de, 0x93df, 0x93e2, 0x93e6, 0x93e7, 0x93f9, 0x93f7, 0x93f8,
- 0x93fa, 0x93fb, 0x93fd, 0x9401, 0x9402, 0x9404, 0x9408, 0x9409,
- 0x940d, 0x940e, 0x940f, 0x9415, 0x9416, 0x9417, 0x941f, 0x942e,
- 0x942f, 0x9431, 0x9432, 0x9433, 0x9434, 0x943b, 0x943f, 0x943d,
- 0x9443, 0x9445, 0x9448, 0x944a, 0x944c, 0x9455, 0x9459, 0x945c,
- 0x945f, 0x9461, 0x9463, 0x9468, 0x946b, 0x946d, 0x946e, 0x946f,
- 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, 0x9579,
- /* 0x66 */
- 0x957e, 0x9584, 0x9588, 0x958c, 0x958d, 0x958e, 0x959d, 0x959e,
- 0x959f, 0x95a1, 0x95a6, 0x95a9, 0x95ab, 0x95ac, 0x95b4, 0x95b6,
- 0x95ba, 0x95bd, 0x95bf, 0x95c6, 0x95c8, 0x95c9, 0x95cb, 0x95d0,
- 0x95d1, 0x95d2, 0x95d3, 0x95d9, 0x95da, 0x95dd, 0x95de, 0x95df,
- 0x95e0, 0x95e4, 0x95e6, 0x961d, 0x961e, 0x9622, 0x9624, 0x9625,
- 0x9626, 0x962c, 0x9631, 0x9633, 0x9637, 0x9638, 0x9639, 0x963a,
- 0x963c, 0x963d, 0x9641, 0x9652, 0x9654, 0x9656, 0x9657, 0x9658,
- 0x9661, 0x966e, 0x9674, 0x967b, 0x967c, 0x967e, 0x967f, 0x9681,
- 0x9682, 0x9683, 0x9684, 0x9689, 0x9691, 0x9696, 0x969a, 0x969d,
- 0x969f, 0x96a4, 0x96a5, 0x96a6, 0x96a9, 0x96ae, 0x96af, 0x96b3,
- 0x96ba, 0x96ca, 0x96d2, 0x5db2, 0x96d8, 0x96da, 0x96dd, 0x96de,
- 0x96df, 0x96e9, 0x96ef, 0x96f1, 0x96fa, 0x9702,
- /* 0x67 */
- 0x9703, 0x9705, 0x9709, 0x971a, 0x971b, 0x971d, 0x9721, 0x9722,
- 0x9723, 0x9728, 0x9731, 0x9733, 0x9741, 0x9743, 0x974a, 0x974e,
- 0x974f, 0x9755, 0x9757, 0x9758, 0x975a, 0x975b, 0x9763, 0x9767,
- 0x976a, 0x976e, 0x9773, 0x9776, 0x9777, 0x9778, 0x977b, 0x977d,
- 0x977f, 0x9780, 0x9789, 0x9795, 0x9796, 0x9797, 0x9799, 0x979a,
- 0x979e, 0x979f, 0x97a2, 0x97ac, 0x97ae, 0x97b1, 0x97b2, 0x97b5,
- 0x97b6, 0x97b8, 0x97b9, 0x97ba, 0x97bc, 0x97be, 0x97bf, 0x97c1,
- 0x97c4, 0x97c5, 0x97c7, 0x97c9, 0x97ca, 0x97cc, 0x97cd, 0x97ce,
- 0x97d0, 0x97d1, 0x97d4, 0x97d7, 0x97d8, 0x97d9, 0x97dd, 0x97de,
- 0x97e0, 0x97db, 0x97e1, 0x97e4, 0x97ef, 0x97f1, 0x97f4, 0x97f7,
- 0x97f8, 0x97fa, 0x9807, 0x980a, 0x9819, 0x980d, 0x980e, 0x9814,
- 0x9816, 0x981c, 0x981e, 0x9820, 0x9823, 0x9826,
- /* 0x68 */
- 0x982b, 0x982e, 0x982f, 0x9830, 0x9832, 0x9833, 0x9835, 0x9825,
- 0x983e, 0x9844, 0x9847, 0x984a, 0x9851, 0x9852, 0x9853, 0x9856,
- 0x9857, 0x9859, 0x985a, 0x9862, 0x9863, 0x9865, 0x9866, 0x986a,
- 0x986c, 0x98ab, 0x98ad, 0x98ae, 0x98b0, 0x98b4, 0x98b7, 0x98b8,
- 0x98ba, 0x98bb, 0x98bf, 0x98c2, 0x98c5, 0x98c8, 0x98cc, 0x98e1,
- 0x98e3, 0x98e5, 0x98e6, 0x98e7, 0x98ea, 0x98f3, 0x98f6, 0x9902,
- 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917, 0x991a, 0x991b,
- 0x991c, 0x991f, 0x9922, 0x9926, 0x9927, 0x992b, 0x9931, 0x9932,
- 0x9933, 0x9934, 0x9935, 0x9939, 0x993a, 0x993b, 0x993c, 0x9940,
- 0x9941, 0x9946, 0x9947, 0x9948, 0x994d, 0x994e, 0x9954, 0x9958,
- 0x9959, 0x995b, 0x995c, 0x995e, 0x995f, 0x9960, 0x999b, 0x999d,
- 0x999f, 0x99a6, 0x99b0, 0x99b1, 0x99b2, 0x99b5,
- /* 0x69 */
- 0x99b9, 0x99ba, 0x99bd, 0x99bf, 0x99c3, 0x99c9, 0x99d3, 0x99d4,
- 0x99d9, 0x99da, 0x99dc, 0x99de, 0x99e7, 0x99ea, 0x99eb, 0x99ec,
- 0x99f0, 0x99f4, 0x99f5, 0x99f9, 0x99fd, 0x99fe, 0x9a02, 0x9a03,
- 0x9a04, 0x9a0b, 0x9a0c, 0x9a10, 0x9a11, 0x9a16, 0x9a1e, 0x9a20,
- 0x9a22, 0x9a23, 0x9a24, 0x9a27, 0x9a2d, 0x9a2e, 0x9a33, 0x9a35,
- 0x9a36, 0x9a38, 0x9a47, 0x9a41, 0x9a44, 0x9a4a, 0x9a4b, 0x9a4c,
- 0x9a4e, 0x9a51, 0x9a54, 0x9a56, 0x9a5d, 0x9aaa, 0x9aac, 0x9aae,
- 0x9aaf, 0x9ab2, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab9, 0x9abb, 0x9abe,
- 0x9abf, 0x9ac1, 0x9ac3, 0x9ac6, 0x9ac8, 0x9ace, 0x9ad0, 0x9ad2,
- 0x9ad5, 0x9ad6, 0x9ad7, 0x9adb, 0x9adc, 0x9ae0, 0x9ae4, 0x9ae5,
- 0x9ae7, 0x9ae9, 0x9aec, 0x9af2, 0x9af3, 0x9af5, 0x9af9, 0x9afa,
- 0x9afd, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b03,
- /* 0x6a */
- 0x9b04, 0x9b05, 0x9b08, 0x9b09, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e,
- 0x9b10, 0x9b12, 0x9b16, 0x9b19, 0x9b1b, 0x9b1c, 0x9b20, 0x9b26,
- 0x9b2b, 0x9b2d, 0x9b33, 0x9b34, 0x9b35, 0x9b37, 0x9b39, 0x9b3a,
- 0x9b3d, 0x9b48, 0x9b4b, 0x9b4c, 0x9b55, 0x9b56, 0x9b57, 0x9b5b,
- 0x9b5e, 0x9b61, 0x9b63, 0x9b65, 0x9b66, 0x9b68, 0x9b6a, 0x9b6b,
- 0x9b6c, 0x9b6d, 0x9b6e, 0x9b73, 0x9b75, 0x9b77, 0x9b78, 0x9b79,
- 0x9b7f, 0x9b80, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b89, 0x9b8a,
- 0x9b8b, 0x9b8d, 0x9b8f, 0x9b90, 0x9b94, 0x9b9a, 0x9b9d, 0x9b9e,
- 0x9ba6, 0x9ba7, 0x9ba9, 0x9bac, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb7,
- 0x9bb8, 0x9bbb, 0x9bbc, 0x9bbe, 0x9bbf, 0x9bc1, 0x9bc7, 0x9bc8,
- 0x9bce, 0x9bd0, 0x9bd7, 0x9bd8, 0x9bdd, 0x9bdf, 0x9be5, 0x9be7,
- 0x9bea, 0x9beb, 0x9bef, 0x9bf3, 0x9bf7, 0x9bf8,
- /* 0x6b */
- 0x9bf9, 0x9bfa, 0x9bfd, 0x9bff, 0x9c00, 0x9c02, 0x9c0b, 0x9c0f,
- 0x9c11, 0x9c16, 0x9c18, 0x9c19, 0x9c1a, 0x9c1c, 0x9c1e, 0x9c22,
- 0x9c23, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c31, 0x9c35,
- 0x9c36, 0x9c37, 0x9c3d, 0x9c41, 0x9c43, 0x9c44, 0x9c45, 0x9c49,
- 0x9c4a, 0x9c4e, 0x9c4f, 0x9c50, 0x9c53, 0x9c54, 0x9c56, 0x9c58,
- 0x9c5b, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c63, 0x9c69, 0x9c6a, 0x9c5c,
- 0x9c6b, 0x9c68, 0x9c6e, 0x9c70, 0x9c72, 0x9c75, 0x9c77, 0x9c7b,
- 0x9ce6, 0x9cf2, 0x9cf7, 0x9cf9, 0x9d0b, 0x9d02, 0x9d11, 0x9d17,
- 0x9d18, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d2f, 0x9d30, 0x9d32, 0x9d33,
- 0x9d34, 0x9d3a, 0x9d3c, 0x9d45, 0x9d3d, 0x9d42, 0x9d43, 0x9d47,
- 0x9d4a, 0x9d53, 0x9d54, 0x9d5f, 0x9d63, 0x9d62, 0x9d65, 0x9d69,
- 0x9d6a, 0x9d6b, 0x9d70, 0x9d76, 0x9d77, 0x9d7b,
- /* 0x6c */
- 0x9d7c, 0x9d7e, 0x9d83, 0x9d84, 0x9d86, 0x9d8a, 0x9d8d, 0x9d8e,
- 0x9d92, 0x9d93, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9da1, 0x9daa,
- 0x9dac, 0x9dae, 0x9db1, 0x9db5, 0x9db9, 0x9dbc, 0x9dbf, 0x9dc3,
- 0x9dc7, 0x9dc9, 0x9dca, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dda,
- 0x9dde, 0x9ddf, 0x9de0, 0x9de5, 0x9de7, 0x9de9, 0x9deb, 0x9dee,
- 0x9df0, 0x9df3, 0x9df4, 0x9dfe, 0x9e0a, 0x9e02, 0x9e07, 0x9e0e,
- 0x9e10, 0x9e11, 0x9e12, 0x9e15, 0x9e16, 0x9e19, 0x9e1c, 0x9e1d,
- 0x9e7a, 0x9e7b, 0x9e7c, 0x9e80, 0x9e82, 0x9e83, 0x9e84, 0x9e85,
- 0x9e87, 0x9e8e, 0x9e8f, 0x9e96, 0x9e98, 0x9e9b, 0x9e9e, 0x9ea4,
- 0x9ea8, 0x9eac, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb3, 0x9eb4, 0x9eb5,
- 0x9ec6, 0x9ec8, 0x9ecb, 0x9ed5, 0x9edf, 0x9ee4, 0x9ee7, 0x9eec,
- 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef5,
- /* 0x6d */
- 0x9ef8, 0x9eff, 0x9f02, 0x9f03, 0x9f09, 0x9f0f, 0x9f10, 0x9f11,
- 0x9f12, 0x9f14, 0x9f16, 0x9f17, 0x9f19, 0x9f1a, 0x9f1b, 0x9f1f,
- 0x9f22, 0x9f26, 0x9f2a, 0x9f2b, 0x9f2f, 0x9f31, 0x9f32, 0x9f34,
- 0x9f37, 0x9f39, 0x9f3a, 0x9f3c, 0x9f3d, 0x9f3f, 0x9f41, 0x9f43,
- 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f53, 0x9f55, 0x9f56, 0x9f57,
- 0x9f58, 0x9f5a, 0x9f5d, 0x9f5e, 0x9f68, 0x9f69, 0x9f6d, 0x9f6e,
- 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f75, 0x9f7a, 0x9f7d, 0x9f8f,
- 0x9f90, 0x9f91, 0x9f92, 0x9f94, 0x9f96, 0x9f97, 0x9f9e, 0x9fa1,
- 0x9fa2, 0x9fa3, 0x9fa5,
-};
-
-static int
-jisx0212_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = (s[0] & 0x7F);
- if ((c1 == 0x22) || (c1 >= 0x26 && c1 <= 0x27) || (c1 >= 0x29 && c1 <= 0x2b) || (c1 >= 0x30 && c1 <= 0x6d)) {
- if (n >= 2) {
- unsigned char c2 = (s[1] & 0x7F);
- if (c2 >= 0x21 && c2 < 0x7f) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- unsigned short wc = 0xfffd;
- if (i < 470) {
- if (i < 175)
- wc = jisx0212_2uni_page22[i-94];
- } else if (i < 752) {
- if (i < 658)
- wc = jisx0212_2uni_page26[i-470];
- } else if (i < 1410) {
- if (i < 1027)
- wc = jisx0212_2uni_page29[i-752];
- } else {
- if (i < 7211)
- wc = jisx0212_2uni_page30[i-1410];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short jisx0212_2charset[6067] = {
- 0x2237, 0x2242, 0x2270, 0x2243, 0x226d, 0x226c, 0x226e, 0x2234,
- 0x2231, 0x226b, 0x2244, 0x2a22, 0x2a21, 0x2a24, 0x2a2a, 0x2a23,
- 0x2a29, 0x2921, 0x2a2e, 0x2a32, 0x2a31, 0x2a34, 0x2a33, 0x2a40,
- 0x2a3f, 0x2a42, 0x2a41, 0x2a50, 0x2a52, 0x2a51, 0x2a54, 0x2a58,
- 0x2a53, 0x292c, 0x2a63, 0x2a62, 0x2a65, 0x2a64, 0x2a72, 0x2930,
- 0x294e, 0x2b22, 0x2b21, 0x2b24, 0x2b2a, 0x2b23, 0x2b29, 0x2941,
- 0x2b2e, 0x2b32, 0x2b31, 0x2b34, 0x2b33, 0x2b40, 0x2b3f, 0x2b42,
- 0x2b41, 0x2943, 0x2b50, 0x2b52, 0x2b51, 0x2b54, 0x2b58, 0x2b53,
- 0x294c, 0x2b63, 0x2b62, 0x2b65, 0x2b64, 0x2b72, 0x2950, 0x2b73,
- 0x2a27, 0x2b27, 0x2a25, 0x2b25, 0x2a28, 0x2b28, 0x2a2b, 0x2b2b,
- 0x2a2c, 0x2b2c, 0x2a2f, 0x2b2f, 0x2a2d, 0x2b2d, 0x2a30, 0x2b30,
- 0x2922, 0x2942, 0x2a37, 0x2b37, 0x2a36, 0x2b36, 0x2a38, 0x2b38,
- 0x2a35, 0x2b35, 0x2a3a, 0x2b3a, 0x2a3b, 0x2b3b, 0x2a3d, 0x2b3d,
- 0x2a3c, 0x2a3e, 0x2b3e, 0x2924, 0x2944, 0x2a47, 0x2b47, 0x2a45,
- 0x2b45, 0x2a46, 0x2b46, 0x2a44, 0x2945, 0x2926, 0x2946, 0x2a48,
- 0x2b48, 0x2a49, 0x2b49, 0x2947, 0x2a4a, 0x2b4a, 0x2a4c, 0x2b4c,
- 0x2a4b, 0x2b4b, 0x2929, 0x2949, 0x2928, 0x2948, 0x2a4d, 0x2b4d,
- 0x2a4f, 0x2b4f, 0x2a4e, 0x2b4e, 0x294a, 0x292b, 0x294b, 0x2a57,
- 0x2b57, 0x2a56, 0x2b56, 0x292d, 0x294d, 0x2a59, 0x2b59, 0x2a5b,
- 0x2b5b, 0x2a5a, 0x2b5a, 0x2a5c, 0x2b5c, 0x2a5d, 0x2b5d, 0x2a5f,
- 0x2b5f, 0x2a5e, 0x2b5e, 0x2a61, 0x2b61, 0x2a60, 0x2b60, 0x292f,
- 0x294f, 0x2a6c, 0x2b6c, 0x2a69, 0x2b69, 0x2a66, 0x2b66, 0x2a6b,
- 0x2b6b, 0x2a68, 0x2b68, 0x2a6a, 0x2b6a, 0x2a71, 0x2b71, 0x2a74,
- 0x2b74, 0x2a73, 0x2a75, 0x2b75, 0x2a77, 0x2b77, 0x2a76, 0x2b76,
- 0x2a26, 0x2b26, 0x2a43, 0x2b43, 0x2a55, 0x2b55, 0x2a67, 0x2b67,
- 0x2a70, 0x2b70, 0x2a6d, 0x2b6d, 0x2a6f, 0x2b6f, 0x2a6e, 0x2b6e,
- 0x2b39, 0x2230, 0x222f, 0x2232, 0x2236, 0x2235, 0x2233, 0x2238,
- 0x2239, 0x2661, 0x2662, 0x2663, 0x2664, 0x2667, 0x2669, 0x266c,
- 0x2676, 0x2665, 0x266a, 0x2671, 0x2672, 0x2673, 0x2674, 0x267b,
- 0x2678, 0x2675, 0x267a, 0x2677, 0x2679, 0x267c, 0x2742, 0x2743,
- 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274a, 0x274b,
- 0x274c, 0x274d, 0x274e, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776,
- 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e,
- 0x2271, 0x226f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026,
- 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e,
- 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
- 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e,
- 0x303f, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
- 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
- 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
- 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
- 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
- 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
- 0x3070, 0x305f, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
- 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130,
- 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
- 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
- 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
- 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
- 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
- 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x3176, 0x315f,
- 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167,
- 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f,
- 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3177, 0x3178,
- 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x3221, 0x3222,
- 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x322a,
- 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x3230, 0x3231, 0x3232,
- 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, 0x3238, 0x3239, 0x323a,
- 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, 0x3240, 0x3241, 0x3242,
- 0x3243, 0x3244, 0x3245, 0x3251, 0x3246, 0x3247, 0x3248, 0x3249,
- 0x324a, 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 0x3250, 0x3252,
- 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, 0x3259, 0x325a,
- 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, 0x3260, 0x3261, 0x3262,
- 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326a,
- 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, 0x3270, 0x3271, 0x3272,
- 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, 0x3278, 0x3279, 0x327a,
- 0x327b, 0x327c, 0x327d, 0x327e, 0x3321, 0x3322, 0x3323, 0x3324,
- 0x3325, 0x3326, 0x3327, 0x3328, 0x3329, 0x332a, 0x332b, 0x332c,
- 0x332d, 0x332e, 0x332f, 0x3330, 0x3331, 0x3332, 0x3333, 0x3334,
- 0x3335, 0x3336, 0x3337, 0x3338, 0x3339, 0x333a, 0x333b, 0x333c,
- 0x333d, 0x333e, 0x333f, 0x3340, 0x3341, 0x3342, 0x3343, 0x3344,
- 0x3345, 0x3346, 0x3347, 0x3348, 0x3349, 0x334a, 0x334b, 0x334c,
- 0x334d, 0x334e, 0x334f, 0x3350, 0x3351, 0x3352, 0x3353, 0x3354,
- 0x3355, 0x3356, 0x3357, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c,
- 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364,
- 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c,
- 0x336d, 0x336e, 0x336f, 0x3370, 0x3371, 0x3372, 0x3373, 0x3374,
- 0x3375, 0x3376, 0x3377, 0x3378, 0x3379, 0x337a, 0x337b, 0x337c,
- 0x337d, 0x337e, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426,
- 0x3427, 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e,
- 0x342f, 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436,
- 0x3438, 0x3437, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e,
- 0x343f, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446,
- 0x3447, 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e,
- 0x344f, 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456,
- 0x3457, 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e,
- 0x345f, 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466,
- 0x3467, 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e,
- 0x346f, 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476,
- 0x3477, 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e,
- 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528,
- 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, 0x3530,
- 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538,
- 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, 0x3540,
- 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, 0x3548,
- 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, 0x3550,
- 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, 0x3558,
- 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, 0x3560,
- 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568,
- 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570,
- 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578,
- 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x3621, 0x3622,
- 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, 0x3628, 0x3629, 0x362a,
- 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, 0x3630, 0x3631, 0x3632,
- 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, 0x363a,
- 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, 0x3640, 0x3641, 0x3642,
- 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364a,
- 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, 0x3650, 0x3651, 0x3652,
- 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365a,
- 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, 0x3660, 0x3661, 0x3662,
- 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, 0x3668, 0x3669, 0x366a,
- 0x366b, 0x366c, 0x366d, 0x3670, 0x3671, 0x366e, 0x366f, 0x3672,
- 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, 0x3679, 0x367a,
- 0x367b, 0x367d, 0x367e, 0x367c, 0x3721, 0x3722, 0x3723, 0x3724,
- 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372a, 0x372b, 0x372c,
- 0x372d, 0x372e, 0x372f, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
- 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
- 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
- 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
- 0x374d, 0x374e, 0x374f, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754,
- 0x3755, 0x3756, 0x3757, 0x3760, 0x3758, 0x3759, 0x375a, 0x375b,
- 0x375c, 0x375d, 0x375e, 0x375f, 0x3761, 0x3762, 0x3763, 0x3764,
- 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376a, 0x376b, 0x376c,
- 0x376d, 0x377e, 0x376e, 0x376f, 0x3770, 0x3771, 0x3772, 0x3773,
- 0x3774, 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377a, 0x377b,
- 0x377c, 0x377d, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826,
- 0x3827, 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e,
- 0x382f, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836,
- 0x3837, 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e,
- 0x383f, 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846,
- 0x3847, 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e,
- 0x3850, 0x3851, 0x384f, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856,
- 0x3857, 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e,
- 0x385f, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3867,
- 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e, 0x386f,
- 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877,
- 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e, 0x3921,
- 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, 0x3928, 0x3929,
- 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, 0x3930, 0x3931,
- 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938, 0x3939,
- 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, 0x3940, 0x3941,
- 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948, 0x3949,
- 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, 0x3950, 0x3951,
- 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958, 0x3959,
- 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, 0x3960, 0x3961,
- 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, 0x3968, 0x3969,
- 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, 0x3970, 0x3971,
- 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978, 0x3979,
- 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x3a21, 0x3a22, 0x3a23,
- 0x3a24, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29, 0x3a2a, 0x3a2b,
- 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a33, 0x3a34,
- 0x3a35, 0x3a36, 0x3a37, 0x3a38, 0x3a32, 0x3a39, 0x3a3a, 0x3a3b,
- 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, 0x3a40, 0x3a41, 0x3a42, 0x3a43,
- 0x3a44, 0x3a45, 0x3a46, 0x3a47, 0x3a48, 0x3a49, 0x3a4a, 0x3a4b,
- 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, 0x3a50, 0x3a51, 0x3a52, 0x3a53,
- 0x3a54, 0x3a55, 0x3a56, 0x3a57, 0x3a58, 0x3a59, 0x3a5a, 0x3a5b,
- 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, 0x3a60, 0x3a61, 0x3a62, 0x3a63,
- 0x3a64, 0x3a65, 0x3a66, 0x3a67, 0x3a68, 0x3a69, 0x3a6a, 0x3a6b,
- 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, 0x3a70, 0x3a71, 0x3a72, 0x3a73,
- 0x3a74, 0x3a75, 0x3a76, 0x3a77, 0x3a78, 0x3a79, 0x3a7a, 0x3a7b,
- 0x3a7c, 0x3a7d, 0x3a7e, 0x3b21, 0x3b22, 0x3b23, 0x3b24, 0x3b25,
- 0x3b26, 0x3b27, 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c, 0x3b2d,
- 0x3b2e, 0x3b2f, 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34, 0x3b35,
- 0x3b36, 0x3b37, 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3d, 0x3b3c,
- 0x3b3e, 0x3b3f, 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44, 0x3b45,
- 0x3b47, 0x3b48, 0x3b49, 0x3b4a, 0x3b46, 0x3b4b, 0x3b4c, 0x3b4d,
- 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b57, 0x3b55,
- 0x3b54, 0x3b56, 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c, 0x3b5d,
- 0x3b5e, 0x3b5f, 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64, 0x3b65,
- 0x3b66, 0x3b67, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c, 0x3b6d,
- 0x3b6e, 0x3b6f, 0x3b70, 0x3b71, 0x3b72, 0x6674, 0x3b73, 0x3b74,
- 0x3b75, 0x3b76, 0x3b77, 0x3b78, 0x3b7a, 0x3b79, 0x3b7b, 0x3b7c,
- 0x3b7d, 0x3b7e, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26,
- 0x3c27, 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2e, 0x3c2d,
- 0x3c2f, 0x3c30, 0x3c31, 0x3c34, 0x3c32, 0x3c33, 0x3c35, 0x3c36,
- 0x3c37, 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e,
- 0x3c3f, 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46,
- 0x3c47, 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e,
- 0x3c4f, 0x3c50, 0x3c52, 0x3c51, 0x3c53, 0x3c54, 0x3c55, 0x3c56,
- 0x3c57, 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e,
- 0x3c5f, 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66,
- 0x3c67, 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e,
- 0x3c6f, 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76,
- 0x3c77, 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e,
- 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, 0x3d28,
- 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, 0x3d32,
- 0x3d30, 0x3d31, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, 0x3d38,
- 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40,
- 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, 0x3d48,
- 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, 0x3d50,
- 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, 0x3d58,
- 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, 0x3d60,
- 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, 0x3d68,
- 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, 0x3d70,
- 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, 0x3d78,
- 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3e21, 0x3e22,
- 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x3e29, 0x3e2a,
- 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, 0x3e30, 0x3e31, 0x3e32,
- 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, 0x3e38, 0x3e39, 0x3e3a,
- 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x3e41, 0x3e42,
- 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, 0x3e48, 0x3e49, 0x3e4a,
- 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, 0x3e50, 0x3e51, 0x3e52,
- 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, 0x3e58, 0x3e59, 0x3e5a,
- 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, 0x3e60, 0x3e61, 0x3e62,
- 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, 0x3e68, 0x3e69, 0x3e6a,
- 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, 0x3e70, 0x3e71, 0x3e72,
- 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, 0x3e78, 0x3e79, 0x3e7a,
- 0x3e7b, 0x3e7e, 0x3e7c, 0x3e7d, 0x3f21, 0x3f22, 0x3f23, 0x3f24,
- 0x3f25, 0x3f26, 0x3f27, 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c,
- 0x3f2d, 0x3f2e, 0x3f2f, 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34,
- 0x3f35, 0x3f36, 0x3f37, 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c,
- 0x3f3d, 0x3f3e, 0x3f3f, 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44,
- 0x3f45, 0x3f46, 0x3f47, 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c,
- 0x3f4d, 0x3f4e, 0x3f4f, 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54,
- 0x3f55, 0x3f56, 0x3f57, 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c,
- 0x3f5d, 0x3f5e, 0x3f5f, 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64,
- 0x3f65, 0x3f66, 0x3f67, 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c,
- 0x3f6d, 0x3f6e, 0x3f6f, 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74,
- 0x3f75, 0x3f76, 0x3f77, 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c,
- 0x3f7d, 0x3f7e, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026,
- 0x4027, 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e,
- 0x402f, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036,
- 0x4037, 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e,
- 0x403f, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046,
- 0x4047, 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e,
- 0x404f, 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056,
- 0x4057, 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e,
- 0x405f, 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066,
- 0x4067, 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e,
- 0x406f, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076,
- 0x4077, 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e,
- 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128,
- 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, 0x4130,
- 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138,
- 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, 0x4140,
- 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, 0x4148,
- 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, 0x4150,
- 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, 0x4158,
- 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, 0x4160,
- 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168,
- 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, 0x4170,
- 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178,
- 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x4221, 0x4222,
- 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a,
- 0x422b, 0x422c, 0x422d, 0x422e, 0x4230, 0x422f, 0x4231, 0x4232,
- 0x4233, 0x4234, 0x4235, 0x4237, 0x4236, 0x4238, 0x4239, 0x423a,
- 0x423b, 0x423c, 0x423d, 0x423e, 0x4240, 0x4241, 0x4242, 0x4244,
- 0x4245, 0x4247, 0x4248, 0x4249, 0x424a, 0x424c, 0x4243, 0x4246,
- 0x424b, 0x424d, 0x424e, 0x424f, 0x4250, 0x4251, 0x4252, 0x4253,
- 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a, 0x425b,
- 0x425c, 0x425d, 0x425e, 0x425f, 0x4260, 0x4261, 0x4262, 0x4263,
- 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269, 0x426a, 0x426b,
- 0x426c, 0x426d, 0x423f, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272,
- 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a,
- 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324,
- 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c,
- 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334,
- 0x4335, 0x4336, 0x4337, 0x4339, 0x433a, 0x433b, 0x433c, 0x433d,
- 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345,
- 0x4346, 0x4347, 0x4348, 0x4338, 0x434a, 0x434b, 0x434c, 0x434d,
- 0x434f, 0x434e, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355,
- 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x4349, 0x435c,
- 0x435d, 0x435e, 0x435f, 0x4360, 0x4361, 0x4362, 0x4363, 0x4364,
- 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436a, 0x436b, 0x436c,
- 0x436d, 0x436e, 0x436f, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374,
- 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437a, 0x437b, 0x437c,
- 0x437d, 0x437e, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426,
- 0x4427, 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e,
- 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436,
- 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e,
- 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446,
- 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e,
- 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456,
- 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e,
- 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466,
- 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e,
- 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476,
- 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e,
- 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528,
- 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, 0x4530,
- 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538,
- 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, 0x4540,
- 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, 0x4548,
- 0x4549, 0x454a, 0x454b, 0x454d, 0x454c, 0x454e, 0x454f, 0x4550,
- 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, 0x4558,
- 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, 0x4560,
- 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, 0x4568,
- 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, 0x4570,
- 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578,
- 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, 0x4622,
- 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462a,
- 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, 0x4632,
- 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, 0x463a,
- 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, 0x4642,
- 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, 0x464a,
- 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, 0x4652,
- 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465a,
- 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4736, 0x4661,
- 0x4662, 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669,
- 0x466a, 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671,
- 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679,
- 0x467a, 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723,
- 0x4724, 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b,
- 0x472c, 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733,
- 0x4734, 0x4735, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, 0x473c,
- 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, 0x4744,
- 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, 0x474c,
- 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, 0x4754,
- 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, 0x475c,
- 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, 0x4764,
- 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, 0x476c,
- 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774,
- 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, 0x477c,
- 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826,
- 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e,
- 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836,
- 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e,
- 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846,
- 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x4853, 0x484d,
- 0x484e, 0x484f, 0x4850, 0x4851, 0x4852, 0x4854, 0x4855, 0x4856,
- 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e,
- 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866,
- 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e,
- 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876,
- 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e,
- 0x4921, 0x4922, 0x4923, 0x4924, 0x4925, 0x4926, 0x4927, 0x4928,
- 0x4929, 0x492a, 0x492b, 0x492c, 0x492d, 0x492e, 0x492f, 0x4930,
- 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, 0x4938,
- 0x4939, 0x493a, 0x493b, 0x493c, 0x4941, 0x493d, 0x493e, 0x493f,
- 0x4940, 0x4942, 0x4943, 0x4944, 0x4945, 0x4946, 0x4947, 0x4948,
- 0x4949, 0x494a, 0x494b, 0x494c, 0x494d, 0x494e, 0x494f, 0x4950,
- 0x4951, 0x4952, 0x4953, 0x4954, 0x4955, 0x4956, 0x4957, 0x4958,
- 0x4959, 0x495a, 0x495b, 0x495c, 0x495d, 0x495e, 0x495f, 0x4960,
- 0x4961, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, 0x4967, 0x4968,
- 0x4969, 0x496a, 0x496b, 0x496c, 0x496d, 0x496e, 0x496f, 0x4970,
- 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, 0x4978,
- 0x4979, 0x497a, 0x497b, 0x497c, 0x497d, 0x497e, 0x4a21, 0x4a22,
- 0x4a23, 0x4a24, 0x4a25, 0x4a26, 0x4a27, 0x4a28, 0x4a29, 0x4a2a,
- 0x4a2b, 0x4a2c, 0x4a2d, 0x4a2e, 0x4a2f, 0x4a30, 0x4a31, 0x4a32,
- 0x4a33, 0x4a34, 0x4a35, 0x4a36, 0x4a37, 0x4a38, 0x4a39, 0x4a3a,
- 0x4a3b, 0x4a3c, 0x4a3d, 0x4a3e, 0x4a3f, 0x4a40, 0x4a41, 0x4a42,
- 0x4a43, 0x4a44, 0x4a45, 0x4a46, 0x4a47, 0x4a48, 0x4a49, 0x4a4a,
- 0x4a4b, 0x4a4c, 0x4a4d, 0x4a4e, 0x4a4f, 0x4a50, 0x4a51, 0x4a52,
- 0x4a53, 0x4a54, 0x4a55, 0x4a56, 0x4a57, 0x4a58, 0x4a59, 0x4a5a,
- 0x4a5b, 0x4a5c, 0x4a5d, 0x4a5e, 0x4a5f, 0x4a60, 0x4a61, 0x4a62,
- 0x4a63, 0x4a64, 0x4a65, 0x4a66, 0x4a67, 0x4a68, 0x4a69, 0x4a6a,
- 0x4a6b, 0x4a6c, 0x4a6d, 0x4a6e, 0x4a6f, 0x4a70, 0x4a71, 0x4a72,
- 0x4a73, 0x4a74, 0x4a75, 0x4a76, 0x4a77, 0x4a78, 0x4a79, 0x4a7a,
- 0x4a7b, 0x4a7c, 0x4a7d, 0x4a7e, 0x4b21, 0x4b22, 0x4b23, 0x4b24,
- 0x4b25, 0x4b26, 0x4b27, 0x4b28, 0x4b29, 0x4b2a, 0x4b2b, 0x4b2c,
- 0x4b2d, 0x4b2e, 0x4b2f, 0x4b30, 0x4b31, 0x4b32, 0x4b33, 0x4b34,
- 0x4b35, 0x4b36, 0x4b37, 0x4b38, 0x4b39, 0x4b3a, 0x4b3b, 0x4b3c,
- 0x4b3d, 0x4b3e, 0x4b3f, 0x4b40, 0x4b41, 0x4b42, 0x4b43, 0x4b44,
- 0x4b45, 0x4b46, 0x4b47, 0x4b48, 0x4b49, 0x4b4a, 0x4b4b, 0x4b4c,
- 0x4b4d, 0x4b4e, 0x4b4f, 0x4b50, 0x4b51, 0x4b52, 0x4b53, 0x4b54,
- 0x4b55, 0x4b56, 0x4b57, 0x4b58, 0x4b59, 0x4b5a, 0x4b5b, 0x4b5c,
- 0x4b5d, 0x4b5e, 0x4b5f, 0x4b60, 0x4b61, 0x4b62, 0x4b63, 0x4b64,
- 0x4b65, 0x4b66, 0x4b67, 0x4b68, 0x4b69, 0x4b6a, 0x4b6b, 0x4b6c,
- 0x4b6d, 0x4b6e, 0x4b6f, 0x4b70, 0x4b71, 0x4b72, 0x4b73, 0x4b74,
- 0x4b75, 0x4b76, 0x4b77, 0x4b78, 0x4b79, 0x4b7a, 0x4b7b, 0x4b7c,
- 0x4b7d, 0x4b7e, 0x4c21, 0x4c22, 0x4c23, 0x4c24, 0x4c25, 0x4c26,
- 0x4c27, 0x4c28, 0x4c29, 0x4c2a, 0x4c2b, 0x4c2c, 0x4c2d, 0x4c2e,
- 0x4c2f, 0x4c30, 0x4c31, 0x4c32, 0x4c33, 0x4c34, 0x4c35, 0x4c36,
- 0x4c37, 0x4c38, 0x4c39, 0x4c3a, 0x4c3b, 0x4c3c, 0x4c3d, 0x4c3e,
- 0x4c3f, 0x4c40, 0x4c41, 0x4c42, 0x4c43, 0x4c44, 0x4c45, 0x4c46,
- 0x4c47, 0x4c48, 0x4c49, 0x4c4a, 0x4c4b, 0x4c4c, 0x4c4d, 0x4c4e,
- 0x4c4f, 0x4c50, 0x4c51, 0x4c52, 0x4c53, 0x4c54, 0x4c55, 0x4c56,
- 0x4c57, 0x4c58, 0x4c59, 0x4c5a, 0x4c5b, 0x4c5c, 0x4c5d, 0x4c5e,
- 0x4c5f, 0x4c60, 0x4c61, 0x4c62, 0x4c63, 0x4c64, 0x4c65, 0x4c66,
- 0x4c67, 0x4c68, 0x4c69, 0x4c6a, 0x4c6b, 0x4c6c, 0x4c6d, 0x4c6e,
- 0x4c6f, 0x4c70, 0x4c71, 0x4c72, 0x4c73, 0x4c74, 0x4c75, 0x4c76,
- 0x4c77, 0x4c78, 0x4c79, 0x4c7a, 0x4c7b, 0x4c7c, 0x4c7d, 0x4c7e,
- 0x4d21, 0x4d22, 0x4d23, 0x4d24, 0x4d25, 0x4d26, 0x4d27, 0x4d28,
- 0x4d29, 0x4d2a, 0x4d2b, 0x4d2c, 0x4d2d, 0x4d2e, 0x4d2f, 0x4d30,
- 0x4d31, 0x4d32, 0x4d33, 0x4d34, 0x4d35, 0x4d36, 0x4d37, 0x4d38,
- 0x4d39, 0x4d3a, 0x4d3b, 0x4d3c, 0x4d3d, 0x4d3e, 0x4d3f, 0x4d40,
- 0x4d41, 0x4d42, 0x4d43, 0x4d44, 0x4d45, 0x4d46, 0x4d47, 0x4d48,
- 0x4d49, 0x4d4a, 0x4d4b, 0x4d4c, 0x4d4d, 0x4d4e, 0x4d4f, 0x4d50,
- 0x4d51, 0x4d52, 0x4d53, 0x4d54, 0x4d55, 0x4d56, 0x4d57, 0x4d58,
- 0x4d59, 0x4d5a, 0x4d5b, 0x4d5c, 0x4d5d, 0x4d5e, 0x4d5f, 0x4d60,
- 0x4d61, 0x4d62, 0x4d63, 0x4d64, 0x4d65, 0x4d66, 0x4d67, 0x4d68,
- 0x4d69, 0x4d6a, 0x4d6b, 0x4d6c, 0x4d6d, 0x4d6e, 0x4d6f, 0x4d70,
- 0x4d71, 0x4d72, 0x4d73, 0x4d74, 0x4d75, 0x4d76, 0x4d77, 0x4d78,
- 0x4d79, 0x4d7a, 0x4d7b, 0x4d7c, 0x4d7d, 0x4d7e, 0x4e21, 0x4e22,
- 0x4e24, 0x4e25, 0x4e26, 0x4e27, 0x4e28, 0x4e29, 0x4e23, 0x4e2a,
- 0x4e2b, 0x4e2c, 0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32,
- 0x4e33, 0x4e34, 0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a,
- 0x4e3b, 0x4e3c, 0x4e3d, 0x4e3e, 0x4e3f, 0x4e40, 0x4e41, 0x4e42,
- 0x4e43, 0x4e44, 0x4e45, 0x4e46, 0x4e47, 0x4e48, 0x4e49, 0x4e4a,
- 0x4e4b, 0x4e4c, 0x4e4d, 0x4e4e, 0x4e4f, 0x4e50, 0x4e51, 0x4e52,
- 0x4e53, 0x4e54, 0x4e55, 0x4e56, 0x4e57, 0x4e58, 0x4e59, 0x4e5a,
- 0x4e5b, 0x4e5c, 0x4e5d, 0x4e5e, 0x4e5f, 0x4e60, 0x4e61, 0x4e62,
- 0x4e63, 0x4e64, 0x4e65, 0x4e66, 0x4e67, 0x4e68, 0x4e69, 0x4e6a,
- 0x4e6b, 0x4e6c, 0x4e6d, 0x4e6e, 0x4e6f, 0x4e70, 0x4e71, 0x4e72,
- 0x4e73, 0x4e74, 0x4e75, 0x4e76, 0x4e77, 0x4e78, 0x4e79, 0x4e7a,
- 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7e, 0x4f21, 0x4f22, 0x4f23, 0x4f24,
- 0x4f25, 0x4f26, 0x4f27, 0x4f28, 0x4f29, 0x4f2a, 0x4f2b, 0x4f2c,
- 0x4f2d, 0x4f2e, 0x4f2f, 0x4f30, 0x4f31, 0x4f32, 0x4f33, 0x4f34,
- 0x4f35, 0x4f36, 0x4f37, 0x4f38, 0x4f39, 0x4f3a, 0x4f3b, 0x4f3c,
- 0x4f3d, 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f43, 0x4f44,
- 0x4f45, 0x4f46, 0x4f47, 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c,
- 0x4f4d, 0x4f4e, 0x4f4f, 0x4f50, 0x4f51, 0x4f52, 0x4f53, 0x4f54,
- 0x4f55, 0x4f56, 0x4f57, 0x4f58, 0x4f59, 0x4f5a, 0x4f5b, 0x4f5c,
- 0x4f5d, 0x4f5e, 0x4f5f, 0x4f60, 0x4f61, 0x4f62, 0x4f63, 0x4f64,
- 0x4f65, 0x4f66, 0x4f67, 0x4f68, 0x4f69, 0x4f6a, 0x4f6b, 0x4f6c,
- 0x4f6d, 0x4f6e, 0x4f6f, 0x4f70, 0x4f71, 0x4f72, 0x4f74, 0x4f75,
- 0x4f76, 0x4f73, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7b, 0x4f7c,
- 0x4f7d, 0x4f7e, 0x5021, 0x5022, 0x5023, 0x5024, 0x5025, 0x5026,
- 0x5027, 0x5028, 0x5029, 0x502a, 0x502b, 0x502c, 0x502e, 0x502f,
- 0x5030, 0x5031, 0x502d, 0x5032, 0x5033, 0x5034, 0x5035, 0x5037,
- 0x5038, 0x5039, 0x503a, 0x503b, 0x5036, 0x503c, 0x503d, 0x503e,
- 0x503f, 0x5040, 0x5041, 0x5042, 0x5043, 0x5044, 0x5045, 0x5046,
- 0x5047, 0x5048, 0x5049, 0x504a, 0x504b, 0x504c, 0x504d, 0x504e,
- 0x504f, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5055, 0x5056,
- 0x5057, 0x5058, 0x5059, 0x505a, 0x505b, 0x505c, 0x505d, 0x505e,
- 0x505f, 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, 0x5065, 0x5066,
- 0x5067, 0x5068, 0x5069, 0x506a, 0x506b, 0x506c, 0x506d, 0x506e,
- 0x506f, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5076,
- 0x5077, 0x5078, 0x5079, 0x507a, 0x507b, 0x507c, 0x507d, 0x507e,
- 0x5121, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128,
- 0x5129, 0x512a, 0x512b, 0x512c, 0x512d, 0x512e, 0x512f, 0x5130,
- 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, 0x5138,
- 0x5139, 0x513a, 0x513b, 0x513c, 0x513d, 0x513e, 0x513f, 0x5140,
- 0x5141, 0x5142, 0x5143, 0x5144, 0x5145, 0x5146, 0x5147, 0x5148,
- 0x5149, 0x514a, 0x514b, 0x514c, 0x514d, 0x514e, 0x514f, 0x5150,
- 0x5151, 0x5152, 0x5153, 0x5154, 0x5155, 0x5156, 0x5157, 0x5158,
- 0x5159, 0x515a, 0x515b, 0x515c, 0x515d, 0x515e, 0x515f, 0x5160,
- 0x5161, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166, 0x5167, 0x5168,
- 0x5169, 0x516a, 0x516b, 0x516c, 0x516d, 0x516e, 0x516f, 0x5170,
- 0x5171, 0x5172, 0x5173, 0x5174, 0x5175, 0x5176, 0x5177, 0x5178,
- 0x5179, 0x517a, 0x517b, 0x517c, 0x517d, 0x517e, 0x5221, 0x5222,
- 0x5223, 0x5224, 0x5225, 0x5226, 0x5227, 0x5228, 0x5229, 0x522a,
- 0x522b, 0x522c, 0x522d, 0x522e, 0x522f, 0x5230, 0x5231, 0x5232,
- 0x5233, 0x5234, 0x5235, 0x5236, 0x5237, 0x5238, 0x5239, 0x523a,
- 0x523b, 0x523c, 0x523d, 0x523e, 0x523f, 0x5240, 0x5241, 0x5242,
- 0x5243, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a,
- 0x524b, 0x524c, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252,
- 0x5253, 0x5254, 0x5255, 0x5256, 0x5257, 0x5258, 0x5259, 0x525a,
- 0x525b, 0x525c, 0x525d, 0x525e, 0x525f, 0x5260, 0x5261, 0x5262,
- 0x5263, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269, 0x526a,
- 0x526b, 0x526c, 0x526d, 0x526e, 0x526f, 0x5270, 0x5271, 0x5272,
- 0x5273, 0x5274, 0x5276, 0x5277, 0x5278, 0x5275, 0x5279, 0x527a,
- 0x527b, 0x527c, 0x527d, 0x527e, 0x5321, 0x5322, 0x5323, 0x5324,
- 0x5325, 0x5326, 0x5327, 0x5328, 0x5329, 0x532a, 0x532b, 0x532c,
- 0x532d, 0x532e, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
- 0x5335, 0x5336, 0x5337, 0x5338, 0x5339, 0x533a, 0x533b, 0x533c,
- 0x533d, 0x533e, 0x533f, 0x5340, 0x5341, 0x5342, 0x5343, 0x5344,
- 0x5345, 0x5346, 0x5347, 0x5348, 0x5349, 0x534a, 0x534b, 0x534c,
- 0x534d, 0x534e, 0x534f, 0x5350, 0x5351, 0x5352, 0x5353, 0x5354,
- 0x5355, 0x5356, 0x5357, 0x5358, 0x5359, 0x535a, 0x535b, 0x535c,
- 0x535d, 0x535e, 0x535f, 0x5360, 0x5361, 0x5362, 0x5363, 0x5364,
- 0x5365, 0x5366, 0x5367, 0x5368, 0x5369, 0x536a, 0x536b, 0x536c,
- 0x536d, 0x536e, 0x536f, 0x5370, 0x5371, 0x5372, 0x5373, 0x5374,
- 0x5375, 0x5376, 0x5377, 0x5378, 0x5379, 0x537a, 0x537b, 0x537c,
- 0x537d, 0x537e, 0x5421, 0x5422, 0x5423, 0x5424, 0x5425, 0x5426,
- 0x5427, 0x5428, 0x5429, 0x542a, 0x542b, 0x542c, 0x542d, 0x542e,
- 0x542f, 0x5430, 0x5431, 0x5432, 0x5434, 0x5435, 0x5436, 0x5437,
- 0x5438, 0x5439, 0x543a, 0x543b, 0x543c, 0x543d, 0x543e, 0x5433,
- 0x543f, 0x5440, 0x5441, 0x5442, 0x5443, 0x5444, 0x5445, 0x5446,
- 0x5447, 0x5448, 0x5449, 0x544a, 0x544b, 0x544c, 0x544d, 0x544e,
- 0x544f, 0x5450, 0x5451, 0x5452, 0x5453, 0x5454, 0x5455, 0x5456,
- 0x5457, 0x5458, 0x5459, 0x545a, 0x545b, 0x545c, 0x545d, 0x545e,
- 0x545f, 0x5460, 0x5461, 0x5462, 0x5463, 0x5464, 0x5465, 0x5466,
- 0x5467, 0x5468, 0x5469, 0x546a, 0x546c, 0x546b, 0x546d, 0x546e,
- 0x546f, 0x5470, 0x5471, 0x5472, 0x5473, 0x5474, 0x5475, 0x5476,
- 0x5477, 0x5478, 0x5479, 0x547a, 0x547b, 0x547c, 0x547d, 0x547e,
- 0x5521, 0x5522, 0x5523, 0x5524, 0x5525, 0x5526, 0x5527, 0x5528,
- 0x5529, 0x552a, 0x552b, 0x552c, 0x552d, 0x552e, 0x552f, 0x5530,
- 0x5531, 0x5532, 0x5533, 0x5534, 0x5535, 0x5536, 0x5537, 0x5538,
- 0x5539, 0x553a, 0x553b, 0x553c, 0x553d, 0x553e, 0x553f, 0x5540,
- 0x5541, 0x5542, 0x5543, 0x5544, 0x5545, 0x5546, 0x5547, 0x5548,
- 0x5549, 0x554a, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5550,
- 0x5551, 0x5552, 0x5553, 0x5554, 0x5555, 0x5556, 0x5557, 0x5558,
- 0x5559, 0x555a, 0x555b, 0x555c, 0x555d, 0x555e, 0x555f, 0x5560,
- 0x5561, 0x5562, 0x5563, 0x5564, 0x5565, 0x5566, 0x5567, 0x5568,
- 0x5569, 0x556a, 0x556b, 0x556c, 0x556d, 0x556e, 0x556f, 0x5570,
- 0x5571, 0x5572, 0x5573, 0x5574, 0x5575, 0x5576, 0x5577, 0x5578,
- 0x5579, 0x557a, 0x557b, 0x557c, 0x557d, 0x557e, 0x5621, 0x5622,
- 0x5623, 0x5624, 0x5625, 0x5626, 0x5627, 0x5628, 0x5629, 0x562a,
- 0x562b, 0x562c, 0x562d, 0x562e, 0x562f, 0x5630, 0x5631, 0x5632,
- 0x5633, 0x5634, 0x5635, 0x5636, 0x5637, 0x5638, 0x5639, 0x563a,
- 0x563b, 0x563c, 0x563d, 0x563e, 0x563f, 0x5640, 0x5641, 0x5642,
- 0x5643, 0x5644, 0x5645, 0x5647, 0x5648, 0x5649, 0x564a, 0x564b,
- 0x5646, 0x564c, 0x564d, 0x564e, 0x564f, 0x5650, 0x5651, 0x5652,
- 0x5653, 0x5654, 0x5656, 0x5657, 0x5658, 0x5655, 0x5659, 0x565a,
- 0x565b, 0x565c, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0x5662,
- 0x5663, 0x5664, 0x5665, 0x5666, 0x5667, 0x5668, 0x5669, 0x566a,
- 0x566b, 0x566c, 0x566d, 0x566e, 0x566f, 0x5670, 0x5671, 0x5672,
- 0x5673, 0x5674, 0x5675, 0x5676, 0x5677, 0x5678, 0x5679, 0x567a,
- 0x567b, 0x567c, 0x567d, 0x567e, 0x5721, 0x5722, 0x5723, 0x5724,
- 0x5725, 0x5726, 0x5727, 0x5728, 0x5729, 0x572a, 0x572b, 0x572c,
- 0x572d, 0x572e, 0x572f, 0x5730, 0x5731, 0x5732, 0x5733, 0x5734,
- 0x5735, 0x5736, 0x5737, 0x5738, 0x5739, 0x573a, 0x573b, 0x573c,
- 0x573d, 0x573e, 0x573f, 0x5740, 0x5741, 0x5742, 0x5743, 0x5744,
- 0x5745, 0x5746, 0x5747, 0x5748, 0x5749, 0x574a, 0x574b, 0x574c,
- 0x574d, 0x574e, 0x574f, 0x5750, 0x5751, 0x5752, 0x5753, 0x5754,
- 0x5755, 0x5756, 0x5757, 0x5758, 0x5759, 0x575a, 0x575b, 0x575c,
- 0x575d, 0x575e, 0x575f, 0x5760, 0x5761, 0x5762, 0x5764, 0x5765,
- 0x5766, 0x5767, 0x5768, 0x5769, 0x576a, 0x576b, 0x576c, 0x576d,
- 0x576e, 0x576f, 0x5770, 0x5771, 0x5772, 0x5773, 0x5774, 0x5775,
- 0x5776, 0x5777, 0x5778, 0x5779, 0x583e, 0x5763, 0x577a, 0x577b,
- 0x577c, 0x577d, 0x577e, 0x5821, 0x5822, 0x5823, 0x5824, 0x5825,
- 0x5826, 0x5827, 0x5828, 0x5829, 0x582a, 0x582b, 0x582c, 0x582d,
- 0x582e, 0x582f, 0x5830, 0x5831, 0x5832, 0x5833, 0x584c, 0x5834,
- 0x5835, 0x5836, 0x5837, 0x5838, 0x5839, 0x583a, 0x583b, 0x583c,
- 0x583d, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5844, 0x5845,
- 0x5846, 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584d, 0x584e,
- 0x584f, 0x5850, 0x5851, 0x5852, 0x5853, 0x5854, 0x5855, 0x5856,
- 0x5857, 0x5858, 0x5859, 0x585a, 0x585b, 0x585c, 0x585d, 0x585e,
- 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 0x5865, 0x5866,
- 0x5867, 0x5868, 0x5869, 0x586a, 0x586b, 0x586c, 0x586d, 0x586e,
- 0x586f, 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876,
- 0x5877, 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587e,
- 0x5921, 0x5922, 0x5923, 0x5924, 0x5925, 0x5926, 0x5927, 0x5928,
- 0x592a, 0x592b, 0x592c, 0x592d, 0x592e, 0x592f, 0x5930, 0x5931,
- 0x5932, 0x5933, 0x5934, 0x5935, 0x5936, 0x5937, 0x5938, 0x5939,
- 0x593a, 0x593b, 0x593c, 0x5929, 0x593d, 0x593e, 0x593f, 0x5940,
- 0x5941, 0x5942, 0x5943, 0x5944, 0x5945, 0x5946, 0x5947, 0x5948,
- 0x5949, 0x594a, 0x594b, 0x594c, 0x594d, 0x594e, 0x594f, 0x5950,
- 0x5951, 0x5952, 0x5953, 0x5954, 0x5955, 0x5956, 0x5957, 0x5958,
- 0x5959, 0x595a, 0x595b, 0x595c, 0x595d, 0x595e, 0x595f, 0x5960,
- 0x5961, 0x5962, 0x5963, 0x5964, 0x5965, 0x5966, 0x5974, 0x5967,
- 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f,
- 0x5970, 0x5971, 0x5972, 0x5973, 0x5975, 0x5976, 0x5977, 0x5978,
- 0x5979, 0x597a, 0x597b, 0x597c, 0x597d, 0x597e, 0x5a21, 0x5a22,
- 0x5a23, 0x5a24, 0x5a25, 0x5a26, 0x5a27, 0x5a28, 0x5a29, 0x5a2a,
- 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f, 0x5a30, 0x5a31, 0x5a32,
- 0x5a33, 0x5a34, 0x5a35, 0x5a36, 0x3866, 0x5a37, 0x5a38, 0x5a39,
- 0x5a3a, 0x5a3b, 0x5a3c, 0x5a3d, 0x5a3e, 0x5a3f, 0x5a40, 0x5a41,
- 0x5a42, 0x5a43, 0x5a44, 0x5a45, 0x5a46, 0x5a47, 0x5a48, 0x5a49,
- 0x5a4a, 0x5a4b, 0x5a6d, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, 0x5a50,
- 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a55, 0x5a56, 0x5a57, 0x5a58,
- 0x5a59, 0x5a5a, 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60,
- 0x5a61, 0x5a62, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a67, 0x5a68,
- 0x5a69, 0x5a6a, 0x5a6b, 0x5a6c, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71,
- 0x5a72, 0x5a73, 0x5a74, 0x5a75, 0x5a76, 0x5a77, 0x5a78, 0x5a79,
- 0x5a7a, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5b21, 0x5b22, 0x5b23,
- 0x5b24, 0x5b25, 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b,
- 0x5b2c, 0x5b2d, 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b32, 0x5b33,
- 0x5b34, 0x5b35, 0x5b36, 0x5b37, 0x5b38, 0x5b39, 0x5b3a, 0x5b3b,
- 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, 0x5b40, 0x5b41, 0x5b42, 0x5b43,
- 0x5b44, 0x5b45, 0x5b46, 0x5b47, 0x5b48, 0x5b49, 0x5b4a, 0x5b4b,
- 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f, 0x5b50, 0x5b51, 0x5b52, 0x5b53,
- 0x5b54, 0x5b55, 0x5b56, 0x5b57, 0x5b58, 0x5b59, 0x5b5a, 0x5b5b,
- 0x5b5c, 0x5b5d, 0x5b5e, 0x5b5f, 0x5b60, 0x5b61, 0x5b62, 0x5b63,
- 0x5b64, 0x5b65, 0x5b66, 0x5b67, 0x5b68, 0x5b69, 0x5b6a, 0x5b6b,
- 0x5b6c, 0x5b6d, 0x5b6e, 0x5b70, 0x5b71, 0x5b72, 0x5b73, 0x5b6f,
- 0x5b74, 0x5b75, 0x5b76, 0x5b77, 0x5b78, 0x5b79, 0x5b7a, 0x5b7b,
- 0x5b7c, 0x5b7d, 0x5b7e, 0x5c21, 0x5c22, 0x5c23, 0x5c24, 0x5c25,
- 0x5c26, 0x5c27, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2c, 0x5c2d,
- 0x5c2e, 0x5c2f, 0x5c30, 0x5c31, 0x5c32, 0x5c33, 0x5c34, 0x5c35,
- 0x5c36, 0x5c37, 0x5c38, 0x5c39, 0x5c3a, 0x5c3b, 0x5c3c, 0x5c3d,
- 0x5c3e, 0x5c3f, 0x5c40, 0x5c41, 0x5c42, 0x5c43, 0x5c44, 0x5c45,
- 0x5c46, 0x5c47, 0x5c48, 0x5c49, 0x5c4a, 0x5c4b, 0x5c4c, 0x5c4d,
- 0x5c4e, 0x5c4f, 0x5c50, 0x5c51, 0x5c52, 0x5c53, 0x5c54, 0x5c55,
- 0x5c56, 0x5c57, 0x5c58, 0x5c59, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d,
- 0x5c5e, 0x5c5f, 0x5c60, 0x5c61, 0x5c62, 0x5c63, 0x5c64, 0x5c65,
- 0x5c66, 0x5c67, 0x5c68, 0x5c69, 0x5c6a, 0x5c6b, 0x5c6c, 0x5c6d,
- 0x5c6e, 0x5c6f, 0x5c70, 0x5c71, 0x5c72, 0x5c73, 0x5c74, 0x5c75,
- 0x5c76, 0x5c77, 0x5c78, 0x5c79, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d,
- 0x5c7e, 0x5d21, 0x5d22, 0x5d23, 0x5d24, 0x5d25, 0x5d26, 0x5d27,
- 0x5d28, 0x5d29, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2d, 0x5d2e, 0x5d2f,
- 0x5d30, 0x5d31, 0x5d32, 0x5d33, 0x5d34, 0x5d35, 0x5d36, 0x5d37,
- 0x5d38, 0x5d39, 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3d, 0x5d3e, 0x5d3f,
- 0x5d40, 0x5d41, 0x5d42, 0x5d43, 0x5d44, 0x5d45, 0x5d46, 0x5d47,
- 0x5d48, 0x5d49, 0x5d4a, 0x5d4b, 0x5d4c, 0x5d4d, 0x5d4e, 0x5d4f,
- 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57,
- 0x5d58, 0x5d59, 0x5d5a, 0x5d5b, 0x5d5c, 0x5d5d, 0x5d5e, 0x5d5f,
- 0x5d60, 0x5d61, 0x5d62, 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67,
- 0x5d68, 0x5d69, 0x5d6a, 0x5d6b, 0x5d6c, 0x5d6d, 0x5d6e, 0x5d6f,
- 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d74, 0x5d75, 0x5d76, 0x5d77,
- 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5e21,
- 0x5e22, 0x5e23, 0x5e24, 0x5e25, 0x5e26, 0x5e27, 0x5e28, 0x5e29,
- 0x5e2a, 0x5e2b, 0x5e2c, 0x5e2d, 0x5e2e, 0x5e2f, 0x5e30, 0x5e31,
- 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e37, 0x5e38, 0x5e39,
- 0x5e3f, 0x5e3a, 0x5e3b, 0x5e3c, 0x5e3d, 0x5e3e, 0x5e40, 0x5e41,
- 0x5e42, 0x5e43, 0x5e44, 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49,
- 0x5e4e, 0x5e4a, 0x5e4b, 0x5e4c, 0x5e4d, 0x5e4f, 0x5e50, 0x5e51,
- 0x5e52, 0x5e53, 0x5e54, 0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59,
- 0x5e5a, 0x5e5b, 0x5e5c, 0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61,
- 0x5e62, 0x5e63, 0x5e64, 0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69,
- 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e, 0x5e6f, 0x5e72, 0x5e70,
- 0x5e71, 0x5e73, 0x5e74, 0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79,
- 0x5e7a, 0x5e7b, 0x5e7c, 0x5e7d, 0x5e7e, 0x5f21, 0x5f22, 0x5f23,
- 0x5f24, 0x5f25, 0x5f26, 0x5f27, 0x5f28, 0x5f29, 0x5f2a, 0x5f2b,
- 0x5f2c, 0x5f2d, 0x5f2e, 0x5f2f, 0x5f30, 0x5f32, 0x5f31, 0x5f33,
- 0x5f34, 0x5f35, 0x5f36, 0x5f37, 0x5f38, 0x5f39, 0x5f3a, 0x5f3b,
- 0x5f3c, 0x5f3d, 0x5f3e, 0x5f3f, 0x5f40, 0x5f41, 0x5f42, 0x5f43,
- 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49, 0x5f4a, 0x5f4b,
- 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f50, 0x5f51, 0x5f52, 0x5f53,
- 0x5f54, 0x5f55, 0x5f56, 0x5f57, 0x5f58, 0x5f59, 0x5f5a, 0x5f5b,
- 0x5f5c, 0x5f5d, 0x5f6f, 0x5f5e, 0x5f5f, 0x5f60, 0x5f61, 0x5f62,
- 0x5f63, 0x5f64, 0x5f65, 0x5f66, 0x5f67, 0x5f68, 0x5f69, 0x5f6a,
- 0x5f6b, 0x5f6c, 0x5f6d, 0x5f6e, 0x5f70, 0x5f71, 0x5f72, 0x5f73,
- 0x5f74, 0x5f75, 0x5f76, 0x5f77, 0x5f78, 0x5f79, 0x5f7a, 0x5f7b,
- 0x5f7c, 0x5f7d, 0x5f7e, 0x6021, 0x6022, 0x6023, 0x6024, 0x6025,
- 0x6026, 0x6027, 0x6028, 0x6029, 0x602a, 0x602b, 0x602c, 0x602d,
- 0x602e, 0x602f, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6035,
- 0x6036, 0x6037, 0x6038, 0x6039, 0x603a, 0x603b, 0x603c, 0x603d,
- 0x603e, 0x603f, 0x6040, 0x6041, 0x6042, 0x6043, 0x6044, 0x6045,
- 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604b, 0x604c, 0x604d,
- 0x604e, 0x604f, 0x6050, 0x6051, 0x6052, 0x6053, 0x6054, 0x6055,
- 0x6056, 0x6057, 0x6058, 0x6059, 0x605a, 0x605b, 0x605c, 0x605d,
- 0x6064, 0x605e, 0x605f, 0x6060, 0x6061, 0x6062, 0x6063, 0x6065,
- 0x6066, 0x6067, 0x6068, 0x6069, 0x606a, 0x606b, 0x606c, 0x606d,
- 0x606e, 0x606f, 0x6070, 0x6071, 0x6072, 0x6073, 0x6074, 0x6075,
- 0x6076, 0x6077, 0x6078, 0x6079, 0x607a, 0x607b, 0x607c, 0x607d,
- 0x607e, 0x6121, 0x6122, 0x6123, 0x6124, 0x6125, 0x6126, 0x6127,
- 0x6128, 0x6129, 0x612a, 0x612b, 0x612c, 0x612d, 0x612e, 0x612f,
- 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137,
- 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x613f,
- 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, 0x6147,
- 0x6148, 0x6149, 0x614a, 0x614b, 0x614c, 0x614d, 0x614e, 0x614f,
- 0x6150, 0x6151, 0x6152, 0x6154, 0x6155, 0x6156, 0x6153, 0x6157,
- 0x6158, 0x6159, 0x615a, 0x615b, 0x615c, 0x615d, 0x615e, 0x615f,
- 0x6160, 0x6161, 0x6162, 0x6163, 0x6164, 0x6165, 0x6166, 0x6167,
- 0x6168, 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f,
- 0x6170, 0x6171, 0x6172, 0x6173, 0x6174, 0x6175, 0x6176, 0x6177,
- 0x6178, 0x6179, 0x617a, 0x617b, 0x617d, 0x617e, 0x6221, 0x6222,
- 0x6223, 0x6224, 0x617c, 0x622d, 0x6225, 0x6226, 0x6227, 0x6228,
- 0x6229, 0x622a, 0x622b, 0x622c, 0x622f, 0x6230, 0x6231, 0x6232,
- 0x622e, 0x6233, 0x6234, 0x6235, 0x6236, 0x6237, 0x6238, 0x6239,
- 0x623a, 0x623b, 0x623c, 0x623d, 0x623e, 0x623f, 0x6240, 0x6241,
- 0x6242, 0x6243, 0x6245, 0x6246, 0x6244, 0x6247, 0x6248, 0x6249,
- 0x624a, 0x624b, 0x624c, 0x624d, 0x624e, 0x624f, 0x6250, 0x6251,
- 0x6252, 0x6253, 0x6254, 0x6255, 0x6256, 0x6257, 0x6258, 0x6259,
- 0x625a, 0x625b, 0x625c, 0x625d, 0x625e, 0x625f, 0x6260, 0x6261,
- 0x6262, 0x6263, 0x6264, 0x6265, 0x6266, 0x6267, 0x6268, 0x6269,
- 0x626a, 0x626b, 0x626c, 0x626d, 0x626e, 0x626f, 0x6270, 0x6271,
- 0x6272, 0x6273, 0x6274, 0x6275, 0x6276, 0x6277, 0x6278, 0x6279,
- 0x627a, 0x627b, 0x627c, 0x627d, 0x627e, 0x6321, 0x6322, 0x6323,
- 0x6324, 0x6325, 0x6326, 0x6327, 0x6328, 0x6329, 0x632a, 0x632b,
- 0x632c, 0x632d, 0x632e, 0x632f, 0x6330, 0x6331, 0x6332, 0x6333,
- 0x6334, 0x6335, 0x6336, 0x6337, 0x6338, 0x6339, 0x633a, 0x633b,
- 0x633c, 0x633d, 0x633e, 0x633f, 0x6340, 0x6341, 0x6342, 0x6343,
- 0x6344, 0x6345, 0x6346, 0x6347, 0x6348, 0x6349, 0x634a, 0x634b,
- 0x634c, 0x634d, 0x634e, 0x634f, 0x6350, 0x6351, 0x6352, 0x6353,
- 0x6354, 0x6355, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b,
- 0x635c, 0x635d, 0x635e, 0x635f, 0x6360, 0x6361, 0x6362, 0x6363,
- 0x6364, 0x6365, 0x6366, 0x6367, 0x6368, 0x6369, 0x636a, 0x636b,
- 0x636c, 0x636d, 0x636e, 0x636f, 0x6370, 0x6371, 0x6372, 0x6373,
- 0x6374, 0x6375, 0x6376, 0x6377, 0x6378, 0x6379, 0x637a, 0x637b,
- 0x637c, 0x637d, 0x637e, 0x6421, 0x6422, 0x6423, 0x6424, 0x6425,
- 0x6426, 0x6427, 0x6428, 0x6429, 0x642a, 0x642b, 0x642c, 0x642d,
- 0x642e, 0x642f, 0x6430, 0x6431, 0x6432, 0x6433, 0x6434, 0x6435,
- 0x6436, 0x6437, 0x6438, 0x6439, 0x643a, 0x643b, 0x643c, 0x643d,
- 0x643e, 0x643f, 0x6440, 0x6441, 0x6442, 0x6443, 0x6444, 0x6445,
- 0x6446, 0x6447, 0x6448, 0x6449, 0x644a, 0x644b, 0x644c, 0x644d,
- 0x644e, 0x644f, 0x6450, 0x6451, 0x6452, 0x6453, 0x6454, 0x6455,
- 0x6456, 0x6457, 0x6458, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d,
- 0x645e, 0x645f, 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465,
- 0x6466, 0x6467, 0x6468, 0x6469, 0x646a, 0x646b, 0x646c, 0x646d,
- 0x646e, 0x646f, 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475,
- 0x6476, 0x6477, 0x6478, 0x6479, 0x647a, 0x647b, 0x647c, 0x647d,
- 0x647e, 0x6521, 0x6522, 0x6523, 0x6524, 0x6525, 0x6526, 0x6527,
- 0x6528, 0x6529, 0x652a, 0x652b, 0x652c, 0x652d, 0x652e, 0x652f,
- 0x6530, 0x6531, 0x6532, 0x6533, 0x6534, 0x6535, 0x653b, 0x6536,
- 0x6537, 0x6538, 0x6539, 0x653a, 0x653c, 0x653d, 0x653e, 0x653f,
- 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6545, 0x6546, 0x6547,
- 0x6548, 0x6549, 0x654a, 0x654b, 0x654c, 0x654d, 0x654f, 0x6550,
- 0x654e, 0x6551, 0x6552, 0x6553, 0x6554, 0x6555, 0x6556, 0x6557,
- 0x6558, 0x6559, 0x655a, 0x655b, 0x655c, 0x655d, 0x655e, 0x655f,
- 0x6560, 0x6561, 0x6562, 0x6563, 0x6564, 0x6565, 0x6566, 0x6568,
- 0x6567, 0x6569, 0x656a, 0x656b, 0x656c, 0x656d, 0x656e, 0x656f,
- 0x6570, 0x6571, 0x6572, 0x6573, 0x6574, 0x6575, 0x6576, 0x6577,
- 0x6578, 0x6579, 0x657a, 0x657c, 0x657b, 0x657d, 0x657e, 0x6621,
- 0x6622, 0x6623, 0x6624, 0x6625, 0x6626, 0x6627, 0x6628, 0x6629,
- 0x662a, 0x662b, 0x662c, 0x662d, 0x662e, 0x662f, 0x6630, 0x6631,
- 0x6632, 0x6633, 0x6634, 0x6635, 0x6636, 0x6637, 0x6638, 0x6639,
- 0x663a, 0x663b, 0x663c, 0x663d, 0x663e, 0x663f, 0x6640, 0x6641,
- 0x6642, 0x6643, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648, 0x6649,
- 0x664a, 0x664b, 0x664c, 0x664d, 0x664e, 0x664f, 0x6650, 0x6651,
- 0x6652, 0x6653, 0x6654, 0x6655, 0x6656, 0x6657, 0x6658, 0x6659,
- 0x665a, 0x665b, 0x665c, 0x665d, 0x665e, 0x665f, 0x6660, 0x6661,
- 0x6662, 0x6663, 0x6664, 0x6665, 0x6666, 0x6667, 0x6668, 0x6669,
- 0x666a, 0x666b, 0x666c, 0x666d, 0x666e, 0x666f, 0x6670, 0x6671,
- 0x6672, 0x6673, 0x6675, 0x6676, 0x6677, 0x6678, 0x6679, 0x667a,
- 0x667b, 0x667c, 0x667d, 0x667e, 0x6721, 0x6722, 0x6723, 0x6724,
- 0x6725, 0x6726, 0x6727, 0x6728, 0x6729, 0x672a, 0x672b, 0x672c,
- 0x672d, 0x672e, 0x672f, 0x6730, 0x6731, 0x6732, 0x6733, 0x6734,
- 0x6735, 0x6736, 0x6737, 0x6738, 0x6739, 0x673a, 0x673b, 0x673c,
- 0x673d, 0x673e, 0x673f, 0x6740, 0x6741, 0x6742, 0x6743, 0x6744,
- 0x6745, 0x6746, 0x6747, 0x6748, 0x6749, 0x674a, 0x674b, 0x674c,
- 0x674d, 0x674e, 0x674f, 0x6750, 0x6751, 0x6752, 0x6753, 0x6754,
- 0x6755, 0x6756, 0x6757, 0x6758, 0x6759, 0x675a, 0x675b, 0x675c,
- 0x675d, 0x675e, 0x675f, 0x6760, 0x6761, 0x6762, 0x6763, 0x6764,
- 0x6765, 0x6766, 0x676a, 0x6767, 0x6768, 0x6769, 0x676b, 0x676c,
- 0x676d, 0x676e, 0x676f, 0x6770, 0x6771, 0x6772, 0x6773, 0x6774,
- 0x6776, 0x6777, 0x6778, 0x6779, 0x6775, 0x677a, 0x677b, 0x677c,
- 0x677d, 0x6828, 0x677e, 0x6821, 0x6822, 0x6823, 0x6824, 0x6825,
- 0x6826, 0x6827, 0x6829, 0x682a, 0x682b, 0x682c, 0x682d, 0x682e,
- 0x682f, 0x6830, 0x6831, 0x6832, 0x6833, 0x6834, 0x6835, 0x6836,
- 0x6837, 0x6838, 0x6839, 0x683a, 0x683b, 0x683c, 0x683d, 0x683e,
- 0x683f, 0x6840, 0x6841, 0x6842, 0x6843, 0x6844, 0x6845, 0x6846,
- 0x6847, 0x6848, 0x6849, 0x684a, 0x684b, 0x684c, 0x684d, 0x684e,
- 0x684f, 0x6850, 0x6851, 0x6852, 0x6853, 0x6854, 0x6855, 0x6856,
- 0x6857, 0x6858, 0x6859, 0x685a, 0x685b, 0x685c, 0x685d, 0x685e,
- 0x685f, 0x6860, 0x6861, 0x6862, 0x6863, 0x6864, 0x6865, 0x6866,
- 0x6867, 0x6868, 0x6869, 0x686a, 0x686b, 0x686c, 0x686d, 0x686e,
- 0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6874, 0x6875, 0x6876,
- 0x6877, 0x6878, 0x6879, 0x687a, 0x687b, 0x687c, 0x687d, 0x687e,
- 0x6921, 0x6922, 0x6923, 0x6924, 0x6925, 0x6926, 0x6927, 0x6928,
- 0x6929, 0x692a, 0x692b, 0x692c, 0x692d, 0x692e, 0x692f, 0x6930,
- 0x6931, 0x6932, 0x6933, 0x6934, 0x6935, 0x6936, 0x6937, 0x6938,
- 0x6939, 0x693a, 0x693b, 0x693c, 0x693d, 0x693e, 0x693f, 0x6940,
- 0x6941, 0x6942, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948,
- 0x6949, 0x694a, 0x694c, 0x694d, 0x694b, 0x694e, 0x694f, 0x6950,
- 0x6951, 0x6952, 0x6953, 0x6954, 0x6955, 0x6956, 0x6957, 0x6958,
- 0x6959, 0x695a, 0x695b, 0x695c, 0x695d, 0x695e, 0x695f, 0x6960,
- 0x6961, 0x6962, 0x6963, 0x6964, 0x6965, 0x6966, 0x6967, 0x6968,
- 0x6969, 0x696a, 0x696b, 0x696c, 0x696d, 0x696e, 0x696f, 0x6970,
- 0x6971, 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x6977, 0x6978,
- 0x6979, 0x697a, 0x697b, 0x697c, 0x697d, 0x697e, 0x6a21, 0x6a22,
- 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, 0x6a28, 0x6a29, 0x6a2a,
- 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a2f, 0x6a30, 0x6a31, 0x6a32,
- 0x6a33, 0x6a34, 0x6a35, 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a,
- 0x6a3b, 0x6a3c, 0x6a3d, 0x6a3e, 0x6a3f, 0x6a40, 0x6a41, 0x6a42,
- 0x6a43, 0x6a44, 0x6a45, 0x6a46, 0x6a47, 0x6a48, 0x6a49, 0x6a4a,
- 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a50, 0x6a51, 0x6a52,
- 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a58, 0x6a59, 0x6a5a,
- 0x6a5b, 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a61, 0x6a62,
- 0x6a63, 0x6a64, 0x6a65, 0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a,
- 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e, 0x6a6f, 0x6a70, 0x6a71, 0x6a72,
- 0x6a73, 0x6a74, 0x6a75, 0x6a76, 0x6a77, 0x6a78, 0x6a79, 0x6a7a,
- 0x6a7b, 0x6a7c, 0x6a7d, 0x6a7e, 0x6b21, 0x6b22, 0x6b23, 0x6b24,
- 0x6b25, 0x6b26, 0x6b27, 0x6b28, 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c,
- 0x6b2d, 0x6b2e, 0x6b2f, 0x6b30, 0x6b31, 0x6b32, 0x6b33, 0x6b34,
- 0x6b35, 0x6b36, 0x6b37, 0x6b38, 0x6b39, 0x6b3a, 0x6b3b, 0x6b3c,
- 0x6b3d, 0x6b3e, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b43, 0x6b44,
- 0x6b45, 0x6b46, 0x6b47, 0x6b48, 0x6b49, 0x6b50, 0x6b4a, 0x6b4b,
- 0x6b4c, 0x6b4d, 0x6b52, 0x6b4e, 0x6b4f, 0x6b51, 0x6b53, 0x6b54,
- 0x6b55, 0x6b56, 0x6b57, 0x6b58, 0x6b59, 0x6b5a, 0x6b5b, 0x6b5c,
- 0x6b5e, 0x6b5d, 0x6b5f, 0x6b60, 0x6b61, 0x6b62, 0x6b63, 0x6b64,
- 0x6b65, 0x6b66, 0x6b67, 0x6b68, 0x6b69, 0x6b6a, 0x6b6b, 0x6b6d,
- 0x6b6e, 0x6b6f, 0x6b6c, 0x6b70, 0x6b71, 0x6b72, 0x6b73, 0x6b74,
- 0x6b76, 0x6b75, 0x6b77, 0x6b78, 0x6b79, 0x6b7a, 0x6b7b, 0x6b7c,
- 0x6b7d, 0x6b7e, 0x6c21, 0x6c22, 0x6c23, 0x6c24, 0x6c25, 0x6c26,
- 0x6c27, 0x6c28, 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c2e,
- 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c33, 0x6c34, 0x6c35, 0x6c36,
- 0x6c37, 0x6c38, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3d, 0x6c3e,
- 0x6c3f, 0x6c40, 0x6c41, 0x6c42, 0x6c43, 0x6c44, 0x6c45, 0x6c46,
- 0x6c47, 0x6c48, 0x6c49, 0x6c4a, 0x6c4b, 0x6c4c, 0x6c4e, 0x6c4f,
- 0x6c4d, 0x6c50, 0x6c51, 0x6c52, 0x6c53, 0x6c54, 0x6c55, 0x6c56,
- 0x6c57, 0x6c58, 0x6c59, 0x6c5a, 0x6c5b, 0x6c5c, 0x6c5d, 0x6c5e,
- 0x6c5f, 0x6c60, 0x6c61, 0x6c62, 0x6c63, 0x6c64, 0x6c65, 0x6c66,
- 0x6c67, 0x6c68, 0x6c69, 0x6c6a, 0x6c6b, 0x6c6c, 0x6c6d, 0x6c6e,
- 0x6c6f, 0x6c70, 0x6c71, 0x6c72, 0x6c73, 0x6c74, 0x6c75, 0x6c76,
- 0x6c77, 0x6c78, 0x6c79, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7d, 0x6c7e,
- 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d25, 0x6d26, 0x6d27, 0x6d28,
- 0x6d29, 0x6d2a, 0x6d2b, 0x6d2c, 0x6d2d, 0x6d2e, 0x6d2f, 0x6d30,
- 0x6d31, 0x6d32, 0x6d33, 0x6d34, 0x6d35, 0x6d36, 0x6d37, 0x6d38,
- 0x6d39, 0x6d3a, 0x6d3b, 0x6d3c, 0x6d3d, 0x6d3e, 0x6d3f, 0x6d40,
- 0x6d41, 0x6d42, 0x6d43, 0x6d44, 0x6d45, 0x6d46, 0x6d47, 0x6d48,
- 0x6d49, 0x6d4a, 0x6d4b, 0x6d4c, 0x6d4d, 0x6d4e, 0x6d4f, 0x6d50,
- 0x6d51, 0x6d52, 0x6d53, 0x6d54, 0x6d55, 0x6d56, 0x6d57, 0x6d58,
- 0x6d59, 0x6d5a, 0x6d5b, 0x6d5c, 0x6d5d, 0x6d5e, 0x6d5f, 0x6d60,
- 0x6d61, 0x6d62, 0x6d63,
-};
-
-static const Summary16 jisx0212_uni2indx_page00[70] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x4000 },
- { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0xc652 }, { 8, 0x8500 },
- { 11, 0xffff }, { 27, 0xff7e }, { 41, 0xffff }, { 57, 0xff7f },
- /* 0x0100 */
- { 72, 0xffff }, { 88, 0xffcf }, { 102, 0xcff7 }, { 115, 0xffff },
- { 131, 0x3fff }, { 145, 0xffff }, { 161, 0xffff }, { 177, 0x7fff },
- { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
- { 192, 0xe000 }, { 195, 0x1fff }, { 208, 0x0000 }, { 208, 0x0020 },
- /* 0x0200 */
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- { 209, 0x0080 }, { 210, 0x2f00 }, { 215, 0x0000 }, { 215, 0x0000 },
- /* 0x0300 */
- { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 },
- { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 },
- { 215, 0xd770 }, { 224, 0x0001 }, { 225, 0xfc00 }, { 231, 0x0001 },
- { 232, 0x7c04 }, { 238, 0x0000 }, { 238, 0x0000 }, { 238, 0x0000 },
- /* 0x0400 */
- { 238, 0xdffc }, { 251, 0x0000 }, { 251, 0x0000 }, { 251, 0x0000 },
- { 251, 0x0000 }, { 251, 0xdffc },
-};
-static const Summary16 jisx0212_uni2indx_page21[3] = {
- /* 0x2100 */
- { 264, 0x0000 }, { 264, 0x0040 }, { 265, 0x0004 },
-};
-static const Summary16 jisx0212_uni2indx_page4e[1307] = {
- /* 0x4e00 */
- { 266, 0x1034 }, { 270, 0x8004 }, { 272, 0xc918 }, { 278, 0x0021 },
- { 280, 0x0093 }, { 284, 0x1402 }, { 287, 0x0308 }, { 290, 0x8230 },
- { 294, 0x2000 }, { 295, 0x20c0 }, { 298, 0x8000 }, { 299, 0x0200 },
- { 300, 0x0008 }, { 301, 0x0c01 }, { 304, 0x8107 }, { 309, 0xe02a },
- /* 0x4f00 */
- { 315, 0x190d }, { 321, 0x02e4 }, { 326, 0x4000 }, { 327, 0x4aaa },
- { 334, 0x1b05 }, { 340, 0x8154 }, { 345, 0x5409 }, { 350, 0x6782 },
- { 357, 0x5636 }, { 365, 0xc69d }, { 374, 0x0000 }, { 374, 0x7a84 },
- { 381, 0xbb63 }, { 391, 0x1004 }, { 393, 0x0005 }, { 395, 0xb005 },
- /* 0x5000 */
- { 400, 0x5493 }, { 407, 0x7989 }, { 415, 0x4084 }, { 418, 0x082d },
- { 423, 0x5467 }, { 431, 0x828e }, { 437, 0x24cd }, { 444, 0x0003 },
- { 446, 0xc45a }, { 453, 0xd85d }, { 462, 0x8407 }, { 467, 0x2601 },
- { 471, 0x5099 }, { 477, 0xb119 }, { 484, 0x8354 }, { 490, 0x4446 },
- /* 0x5100 */
- { 495, 0x79c8 }, { 503, 0x7a81 }, { 510, 0xb188 }, { 516, 0x033a },
- { 522, 0x8404 }, { 525, 0x81a8 }, { 530, 0x0050 }, { 532, 0x4000 },
- { 533, 0x4818 }, { 537, 0x2100 }, { 539, 0x200a }, { 542, 0xd500 },
- { 547, 0x8104 }, { 550, 0x412e }, { 556, 0x4024 }, { 559, 0x009c },
- /* 0x5200 */
- { 563, 0x0026 }, { 566, 0x016c }, { 571, 0x0104 }, { 573, 0x1026 },
- { 577, 0x0220 }, { 579, 0x95a0 }, { 585, 0x4043 }, { 589, 0x0380 },
- { 592, 0x1425 }, { 597, 0x15e8 }, { 604, 0x80f0 }, { 609, 0x2dc1 },
- { 616, 0x9151 }, { 622, 0x1852 }, { 627, 0x1722 }, { 633, 0x00d3 },
- /* 0x5300 */
- { 638, 0x1c09 }, { 643, 0xd90a }, { 650, 0x3ba0 }, { 657, 0x7025 },
- { 663, 0x1804 }, { 666, 0x0a00 }, { 668, 0x302a }, { 673, 0x4204 },
- { 676, 0x4188 }, { 680, 0x2218 }, { 684, 0x8c12 }, { 689, 0x25b4 },
- { 696, 0x8021 }, { 699, 0x642c }, { 705, 0x00c1 }, { 708, 0x0020 },
- /* 0x5400 */
- { 709, 0x0004 }, { 710, 0x0408 }, { 712, 0x8582 }, { 717, 0x0032 },
- { 720, 0xa098 }, { 725, 0x4000 }, { 726, 0x6ad4 }, { 734, 0x8010 },
- { 736, 0x232a }, { 742, 0x9062 }, { 747, 0x66c2 }, { 754, 0x8e82 },
- { 760, 0x6440 }, { 764, 0x0000 }, { 764, 0x9401 }, { 768, 0xd040 },
- /* 0x5500 */
- { 772, 0x7323 }, { 780, 0x0020 }, { 781, 0x0c00 }, { 783, 0x3864 },
- { 789, 0x2682 }, { 794, 0x4d03 }, { 800, 0x0053 }, { 804, 0x8000 },
- { 805, 0xc146 }, { 811, 0x009e }, { 816, 0x2018 }, { 819, 0x8004 },
- { 821, 0x5a4a }, { 828, 0x498e }, { 835, 0x0204 }, { 837, 0x8040 },
- /* 0x5600 */
- { 839, 0xe520 }, { 845, 0x0207 }, { 849, 0x1000 }, { 850, 0xbaa9 },
- { 859, 0xaa5b }, { 868, 0x4010 }, { 870, 0xa24f }, { 878, 0x0026 },
- { 881, 0x1930 }, { 886, 0xe620 }, { 892, 0x3bc0 }, { 899, 0x408a },
- { 903, 0xbe20 }, { 910, 0xb201 }, { 915, 0x29f2 }, { 923, 0x00c2 },
- /* 0x5700 */
- { 926, 0x1486 }, { 931, 0x2c22 }, { 936, 0xd63d }, { 946, 0xe018 },
- { 951, 0x3060 }, { 955, 0x0004 }, { 956, 0xe9a4 }, { 964, 0x5ebb },
- { 975, 0x100a }, { 978, 0xf6b0 }, { 987, 0x1382 }, { 992, 0x2100 },
- { 994, 0x9180 }, { 998, 0x6020 }, { 1001, 0x22d2 }, { 1007, 0xe161 },
- /* 0x5800 */
- { 1014, 0x3318 }, { 1020, 0xc800 }, { 1023, 0x20c1 }, { 1027, 0x8204 },
- { 1030, 0xb200 }, { 1034, 0x8021 }, { 1037, 0x0192 }, { 1041, 0x9100 },
- { 1044, 0xb783 }, { 1053, 0x2051 }, { 1057, 0x0247 }, { 1062, 0x1006 },
- { 1065, 0x6114 }, { 1070, 0x2455 }, { 1076, 0x0206 }, { 1079, 0x0008 },
- /* 0x5900 */
- { 1080, 0x1860 }, { 1084, 0x201c }, { 1088, 0x811a }, { 1093, 0x8069 },
- { 1098, 0x0048 }, { 1100, 0xea0c }, { 1107, 0xa80a }, { 1112, 0x1a64 },
- { 1118, 0x5800 }, { 1121, 0x80a4 }, { 1125, 0xe090 }, { 1130, 0x1489 },
- { 1135, 0x251a }, { 1141, 0xe004 }, { 1145, 0xc098 }, { 1150, 0x0096 },
- /* 0x5a00 */
- { 1154, 0x7011 }, { 1159, 0x400c }, { 1162, 0x2598 }, { 1168, 0x0001 },
- { 1169, 0x11b0 }, { 1174, 0x4021 }, { 1177, 0x20a8 }, { 1181, 0x4c80 },
- { 1185, 0x0800 }, { 1186, 0xd249 }, { 1193, 0x1085 }, { 1197, 0x8d2e },
- { 1205, 0x8150 }, { 1209, 0x1400 }, { 1211, 0x4421 }, { 1215, 0x2060 },
- /* 0x5b00 */
- { 1218, 0x0103 }, { 1221, 0x2a80 }, { 1225, 0x2022 }, { 1228, 0x0110 },
- { 1230, 0x1802 }, { 1233, 0x4044 }, { 1236, 0xc100 }, { 1239, 0xf000 },
- { 1243, 0x4452 }, { 1248, 0x005b }, { 1253, 0xb300 }, { 1258, 0x1486 },
- { 1263, 0xa003 }, { 1267, 0x07c0 }, { 1272, 0x8001 }, { 1274, 0x2012 },
- /* 0x5c00 */
- { 1277, 0x1000 }, { 1278, 0xc080 }, { 1281, 0x5a48 }, { 1287, 0x0065 },
- { 1291, 0x0000 }, { 1291, 0x1600 }, { 1294, 0x238c }, { 1300, 0x3c31 },
- { 1307, 0x8580 }, { 1311, 0xa004 }, { 1314, 0x044d }, { 1319, 0x0434 },
- { 1323, 0x0a00 }, { 1325, 0x2084 }, { 1328, 0x4000 }, { 1329, 0x0016 },
- /* 0x5d00 */
- { 1332, 0x2042 }, { 1335, 0x0004 }, { 1336, 0x08d8 }, { 1341, 0xa212 },
- { 1346, 0x054c }, { 1351, 0x8222 }, { 1355, 0x2417 }, { 1361, 0xc601 },
- { 1366, 0x050a }, { 1370, 0x8a3c }, { 1377, 0x0881 }, { 1380, 0x0315 },
- { 1385, 0x4888 }, { 1389, 0x0301 }, { 1392, 0x0211 }, { 1395, 0x0300 },
- /* 0x5e00 */
- { 1397, 0x2081 }, { 1400, 0x8134 }, { 1405, 0x4101 }, { 1408, 0x4024 },
- { 1411, 0x0a00 }, { 1413, 0x5943 }, { 1420, 0x7d00 }, { 1426, 0x0001 },
- { 1427, 0x4801 }, { 1430, 0x0000 }, { 1430, 0x1534 }, { 1436, 0xe00a },
- { 1441, 0x5840 }, { 1445, 0x5036 }, { 1451, 0x0820 }, { 1453, 0x0000 },
- /* 0x5f00 */
- { 1453, 0x41c4 }, { 1458, 0x3200 }, { 1461, 0x591e }, { 1469, 0xa851 },
- { 1475, 0x20b1 }, { 1480, 0x0911 }, { 1484, 0x8099 }, { 1489, 0x6534 },
- { 1496, 0xa200 }, { 1499, 0x3040 }, { 1502, 0x9894 }, { 1508, 0x0103 },
- { 1511, 0x0b90 }, { 1516, 0x401f }, { 1522, 0xf706 }, { 1531, 0x144c },
- /* 0x6000 */
- { 1536, 0x2480 }, { 1539, 0x8598 }, { 1545, 0x2010 }, { 1547, 0x0028 },
- { 1549, 0x1381 }, { 1554, 0x20d2 }, { 1559, 0x0082 }, { 1561, 0xc002 },
- { 1564, 0x4544 }, { 1569, 0x612a }, { 1575, 0x0134 }, { 1579, 0x4883 },
- { 1584, 0xcf14 }, { 1592, 0x6a30 }, { 1598, 0x0024 }, { 1600, 0x3124 },
- /* 0x6100 */
- { 1605, 0x1484 }, { 1609, 0x52df }, { 1619, 0x0c04 }, { 1622, 0x02e3 },
- { 1628, 0x0262 }, { 1632, 0x4000 }, { 1633, 0x1001 }, { 1635, 0x9904 },
- { 1640, 0x281b }, { 1646, 0xb18c }, { 1653, 0x2521 }, { 1658, 0x1300 },
- { 1661, 0xc007 }, { 1666, 0xf020 }, { 1671, 0xb2a6 }, { 1679, 0x0000 },
- /* 0x6200 */
- { 1679, 0x009a }, { 1683, 0x1028 }, { 1686, 0x0a8d }, { 1692, 0x2200 },
- { 1694, 0x105c }, { 1699, 0x1457 }, { 1706, 0xa010 }, { 1709, 0x2408 },
- { 1712, 0xe000 }, { 1715, 0x0001 }, { 1716, 0x0140 }, { 1718, 0xc4c8 },
- { 1724, 0x4010 }, { 1726, 0x0460 }, { 1729, 0x0400 }, { 1730, 0x3014 },
- /* 0x6300 */
- { 1734, 0x2c18 }, { 1739, 0x0149 }, { 1743, 0x2600 }, { 1746, 0x1260 },
- { 1750, 0x4c5e }, { 1758, 0x091c }, { 1763, 0x3060 }, { 1767, 0xb132 },
- { 1774, 0x0494 }, { 1778, 0x4631 }, { 1784, 0xe050 }, { 1789, 0x2000 },
- { 1790, 0x4122 }, { 1794, 0x103a }, { 1799, 0x1421 }, { 1803, 0x032c },
- /* 0x6400 */
- { 1808, 0x0600 }, { 1810, 0x4115 }, { 1815, 0x8635 }, { 1822, 0xa021 },
- { 1826, 0x8800 }, { 1828, 0xbc1e }, { 1837, 0x200b }, { 1841, 0x2818 },
- { 1845, 0x80a0 }, { 1848, 0xab03 }, { 1855, 0x114a }, { 1860, 0xe008 },
- { 1864, 0x5e10 }, { 1870, 0x00a3 }, { 1874, 0x2630 }, { 1879, 0x88a1 },
- /* 0x6500 */
- { 1884, 0x8712 }, { 1890, 0xca58 }, { 1897, 0x4244 }, { 1901, 0x3402 },
- { 1905, 0x0288 }, { 1908, 0x8015 }, { 1912, 0x0881 }, { 1915, 0x2400 },
- { 1917, 0x0422 }, { 1920, 0x2124 }, { 1924, 0x4049 }, { 1928, 0x801c },
- { 1932, 0x4304 }, { 1936, 0x8151 }, { 1941, 0x0000 }, { 1941, 0xc235 },
- /* 0x6600 */
- { 1948, 0x2311 }, { 1953, 0x6066 }, { 1959, 0x5e5e }, { 1969, 0x028b },
- { 1974, 0x5461 }, { 1980, 0x1b82 }, { 1986, 0x1c03 }, { 1991, 0xdba8 },
- { 2000, 0x3801 }, { 2004, 0x9e05 }, { 2011, 0x2011 }, { 2014, 0x8826 },
- { 2019, 0xd10d }, { 2026, 0x8810 }, { 2029, 0x5900 }, { 2033, 0x0c00 },
- /* 0x6700 */
- { 2035, 0x40a0 }, { 2038, 0x1208 }, { 2041, 0x0005 }, { 2043, 0x4008 },
- { 2045, 0x11a0 }, { 2049, 0x2030 }, { 2052, 0x5040 }, { 2055, 0x0850 },
- { 2058, 0xc012 }, { 2062, 0x0b4a }, { 2068, 0x0000 }, { 2068, 0x3827 },
- { 2075, 0x032d }, { 2081, 0x1284 }, { 2085, 0x0042 }, { 2087, 0x02c5 },
- /* 0x6800 */
- { 2092, 0x0000 }, { 2092, 0xa210 }, { 2096, 0xb180 }, { 2101, 0x880b },
- { 2106, 0x1430 }, { 2110, 0x09a4 }, { 2115, 0xc800 }, { 2118, 0x1e27 },
- { 2126, 0x0154 }, { 2130, 0x1540 }, { 2134, 0x462a }, { 2140, 0x0804 },
- { 2142, 0x9120 }, { 2146, 0x324b }, { 2153, 0x3d20 }, { 2159, 0x3863 },
- /* 0x6900 */
- { 2166, 0x0640 }, { 2169, 0x00cb }, { 2174, 0x0000 }, { 2174, 0x092a },
- { 2179, 0x4224 }, { 2183, 0x0880 }, { 2185, 0x1378 }, { 2192, 0x8c07 },
- { 2198, 0x2001 }, { 2200, 0x0144 }, { 2203, 0xa962 }, { 2210, 0x1580 },
- { 2214, 0x0120 }, { 2216, 0x00c2 }, { 2219, 0xc024 }, { 2223, 0x402a },
- /* 0x6a00 */
- { 2227, 0x800b }, { 2231, 0x2422 }, { 2235, 0x0111 }, { 2238, 0xc895 },
- { 2245, 0x4660 }, { 2250, 0x0867 }, { 2256, 0x0490 }, { 2259, 0x400a },
- { 2262, 0x0aca }, { 2268, 0xe802 }, { 2273, 0x8820 }, { 2276, 0xe013 },
- { 2282, 0x1340 }, { 2286, 0x3071 }, { 2292, 0x1090 }, { 2295, 0x3007 },
- /* 0x6b00 */
- { 2300, 0x82cc }, { 2306, 0x4883 }, { 2311, 0x9910 }, { 2316, 0x8860 },
- { 2320, 0x2440 }, { 2323, 0x2144 }, { 2327, 0x4881 }, { 2331, 0x6021 },
- { 2335, 0x0024 }, { 2337, 0x8880 }, { 2340, 0x730d }, { 2348, 0x6301 },
- { 2353, 0x1218 }, { 2357, 0x0440 }, { 2359, 0x40ca }, { 2364, 0x8282 },
- /* 0x6c00 */
- { 2368, 0x6234 }, { 2374, 0x8205 }, { 2378, 0x51c0 }, { 2383, 0x8c68 },
- { 2389, 0xac00 }, { 2393, 0x1a14 }, { 2398, 0xa880 }, { 2402, 0x0b50 },
- { 2407, 0x02e0 }, { 2411, 0x91b0 }, { 2417, 0x0000 }, { 2417, 0x0015 },
- { 2420, 0xa044 }, { 2424, 0x1457 }, { 2431, 0x5a81 }, { 2437, 0x0014 },
- /* 0x6d00 */
- { 2439, 0xc490 }, { 2444, 0x040a }, { 2447, 0xc1c0 }, { 2452, 0x9202 },
- { 2456, 0x0000 }, { 2456, 0xc080 }, { 2459, 0x80a2 }, { 2463, 0x1001 },
- { 2465, 0x0084 }, { 2467, 0x01d6 }, { 2473, 0x1400 }, { 2475, 0xa290 },
- { 2480, 0xc510 }, { 2485, 0xa840 }, { 2489, 0x8225 }, { 2494, 0x1051 },
- /* 0x6e00 */
- { 2498, 0x0011 }, { 2500, 0x4000 }, { 2501, 0x0084 }, { 2503, 0x1a44 },
- { 2508, 0x8b30 }, { 2514, 0x709e }, { 2522, 0x010c }, { 2525, 0x2808 },
- { 2528, 0x2000 }, { 2529, 0x0208 }, { 2531, 0x6081 }, { 2535, 0x880a },
- { 2539, 0xe58b }, { 2548, 0x0000 }, { 2548, 0x6800 }, { 2551, 0x2a00 },
- /* 0x6f00 */
- { 2554, 0x3510 }, { 2559, 0x0d40 }, { 2563, 0xa640 }, { 2568, 0x1849 },
- { 2573, 0x8000 }, { 2574, 0x668e }, { 2582, 0x1106 }, { 2586, 0x6000 },
- { 2588, 0x3988 }, { 2594, 0x845d }, { 2601, 0xc1e1 }, { 2608, 0x1061 },
- { 2612, 0x05a0 }, { 2616, 0x4400 }, { 2618, 0x0300 }, { 2620, 0x3221 },
- /* 0x7000 */
- { 2625, 0x20e1 }, { 2630, 0x0080 }, { 2631, 0x8009 }, { 2634, 0x1290 },
- { 2638, 0x4f18 }, { 2645, 0x6030 }, { 2649, 0x5030 }, { 2653, 0x4060 },
- { 2656, 0x0062 }, { 2659, 0x09f0 }, { 2665, 0x0810 }, { 2667, 0x0093 },
- { 2671, 0x0400 }, { 2672, 0x117a }, { 2679, 0x0010 }, { 2680, 0x0400 },
- /* 0x7100 */
- { 2681, 0x98f8 }, { 2689, 0x4000 }, { 2690, 0xa801 }, { 2694, 0x0103 },
- { 2697, 0x0ce2 }, { 2703, 0x5485 }, { 2709, 0x0101 }, { 2711, 0x0200 },
- { 2712, 0x10a1 }, { 2716, 0x0c04 }, { 2719, 0x8005 }, { 2722, 0x840d },
- { 2727, 0x1813 }, { 2732, 0x1648 }, { 2737, 0x0000 }, { 2737, 0x4100 },
- /* 0x7200 */
- { 2739, 0x0381 }, { 2743, 0xa488 }, { 2748, 0x8810 }, { 2751, 0x0310 },
- { 2754, 0xc02e }, { 2760, 0x5469 }, { 2767, 0xc909 }, { 2773, 0x9982 },
- { 2779, 0x6210 }, { 2783, 0x0808 }, { 2785, 0x6100 }, { 2788, 0x4012 },
- { 2791, 0x1282 }, { 2795, 0x8160 }, { 2799, 0x0020 }, { 2800, 0x4c18 },
- /* 0x7300 */
- { 2805, 0x28b4 }, { 2811, 0x430c }, { 2816, 0x1194 }, { 2821, 0x2c26 },
- { 2827, 0x2008 }, { 2829, 0xe145 }, { 2836, 0xdac1 }, { 2844, 0x1282 },
- { 2848, 0x406b }, { 2854, 0xd1a9 }, { 2862, 0x2c65 }, { 2869, 0xb2a0 },
- { 2875, 0x9a60 }, { 2881, 0x224c }, { 2886, 0x02ca }, { 2891, 0xaeb0 },
- /* 0x7400 */
- { 2899, 0x0493 }, { 2904, 0x0c02 }, { 2907, 0xff50 }, { 2917, 0x0203 },
- { 2920, 0x28d9 }, { 2927, 0x2086 }, { 2931, 0x69c4 }, { 2938, 0x0006 },
- { 2940, 0x82e3 }, { 2947, 0x9707 }, { 2955, 0xcf4b }, { 2965, 0x8a26 },
- { 2971, 0x1300 }, { 2974, 0xcd09 }, { 2981, 0x8d10 }, { 2986, 0x9c10 },
- /* 0x7500 */
- { 2991, 0x0040 }, { 2992, 0x00c4 }, { 2995, 0x8693 }, { 3002, 0xe240 },
- { 3007, 0x4189 }, { 3012, 0xc085 }, { 3017, 0x8002 }, { 3019, 0x7e02 },
- { 3026, 0x0022 }, { 3028, 0x122d }, { 3034, 0x0014 }, { 3036, 0x8410 },
- { 3039, 0xd053 }, { 3046, 0x9080 }, { 3049, 0xd093 }, { 3056, 0x0202 },
- /* 0x7600 */
- { 3058, 0x959d }, { 3067, 0x7a6c }, { 3076, 0x2268 }, { 3081, 0x172c },
- { 3088, 0x0e3b }, { 3096, 0x8220 }, { 3099, 0xe030 }, { 3104, 0x0012 },
- { 3106, 0x3022 }, { 3110, 0xb820 }, { 3115, 0x25fd }, { 3125, 0x2000 },
- { 3126, 0x5a22 }, { 3132, 0x0210 }, { 3134, 0x1141 }, { 3138, 0x1243 },
- /* 0x7700 */
- { 3143, 0x4441 }, { 3147, 0x16b4 }, { 3154, 0xe104 }, { 3159, 0x6270 },
- { 3165, 0xe464 }, { 3172, 0xd0c4 }, { 3178, 0x1495 }, { 3184, 0x241d },
- { 3190, 0x3011 }, { 3194, 0x8470 }, { 3199, 0xc484 }, { 3204, 0x4022 },
- { 3207, 0x0208 }, { 3209, 0xc226 }, { 3215, 0x1451 }, { 3220, 0x0913 },
- /* 0x7800 */
- { 3225, 0x6260 }, { 3230, 0x2002 }, { 3232, 0x600e }, { 3237, 0x00a1 },
- { 3240, 0x5198 }, { 3246, 0x5004 }, { 3249, 0x451b }, { 3256, 0x4400 },
- { 3258, 0x8400 }, { 3260, 0xe110 }, { 3265, 0x3112 }, { 3270, 0xa80f },
- { 3277, 0x5380 }, { 3282, 0x886c }, { 3288, 0x0453 }, { 3293, 0x8ccc },
- /* 0x7900 */
- { 3300, 0x1041 }, { 3303, 0xd401 }, { 3308, 0x22a1 }, { 3313, 0xa832 },
- { 3319, 0x8c70 }, { 3325, 0x1912 }, { 3330, 0x0a80 }, { 3333, 0x5a04 },
- { 3338, 0x1800 }, { 3340, 0x197a }, { 3348, 0x8b02 }, { 3353, 0x0912 },
- { 3357, 0x8594 }, { 3363, 0x6450 }, { 3368, 0x2c25 }, { 3374, 0x1102 },
- /* 0x7a00 */
- { 3377, 0x168c }, { 3383, 0x4822 }, { 3387, 0xa882 }, { 3392, 0x0731 },
- { 3398, 0x11b0 }, { 3403, 0xb260 }, { 3409, 0x24a1 }, { 3414, 0x4120 },
- { 3417, 0x0c65 }, { 3423, 0x4013 }, { 3427, 0x1009 }, { 3430, 0x1a28 },
- { 3435, 0x5240 }, { 3439, 0x0802 }, { 3441, 0x1b00 }, { 3445, 0x6812 },
- /* 0x7b00 */
- { 3450, 0x0080 }, { 3451, 0x8010 }, { 3453, 0xee88 }, { 3461, 0xa013 },
- { 3466, 0x4083 }, { 3470, 0x0020 }, { 3471, 0xa651 }, { 3478, 0x008c },
- { 3481, 0x4210 }, { 3484, 0x4843 }, { 3489, 0x9021 }, { 3493, 0x3c65 },
- { 3501, 0x0524 }, { 3505, 0x0ed0 }, { 3511, 0x0500 }, { 3513, 0x5734 },
- /* 0x7c00 */
- { 3521, 0xda5e }, { 3531, 0x0a00 }, { 3533, 0x1161 }, { 3538, 0x065a },
- { 3544, 0x0440 }, { 3546, 0x7e2e }, { 3556, 0x628a }, { 3562, 0x3205 },
- { 3567, 0x80c0 }, { 3570, 0x4010 }, { 3572, 0x0041 }, { 3574, 0x9cc1 },
- { 3581, 0xa390 }, { 3587, 0x26b8 }, { 3594, 0x0a40 }, { 3597, 0x0020 },
- /* 0x7d00 */
- { 3598, 0x8388 }, { 3603, 0x604e }, { 3609, 0x2448 }, { 3613, 0x7002 },
- { 3617, 0x2183 }, { 3622, 0x368a }, { 3629, 0x04a0 }, { 3632, 0x8d01 },
- { 3637, 0x396e }, { 3646, 0x60c2 }, { 3651, 0x04c0 }, { 3654, 0x02c8 },
- { 3658, 0x707c }, { 3666, 0x0280 }, { 3668, 0x2c64 }, { 3674, 0x0662 },
- /* 0x7e00 */
- { 3679, 0x0101 }, { 3681, 0x30a3 }, { 3687, 0xb181 }, { 3693, 0x8048 },
- { 3696, 0x40b0 }, { 3700, 0x8105 }, { 3704, 0xc826 }, { 3710, 0x4108 },
- { 3713, 0x24c2 }, { 3718, 0x6522 }, { 3724, 0x0000 }, { 3724, 0x0000 },
- { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 },
- /* 0x7f00 */
- { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0xf800 },
- { 3729, 0x8098 }, { 3733, 0x380c }, { 3738, 0x207a }, { 3744, 0xe002 },
- { 3748, 0xa801 }, { 3752, 0x10c3 }, { 3757, 0x2446 }, { 3762, 0x9010 },
- { 3765, 0xc109 }, { 3770, 0x8800 }, { 3772, 0xd128 }, { 3778, 0xe404 },
- /* 0x8000 */
- { 3783, 0xe580 }, { 3789, 0xe05a }, { 3796, 0x5051 }, { 3801, 0x56b1 },
- { 3809, 0x0011 }, { 3811, 0x0000 }, { 3811, 0x2051 }, { 3815, 0x0022 },
- { 3817, 0x4102 }, { 3820, 0x5000 }, { 3822, 0x08c0 }, { 3825, 0x0300 },
- { 3827, 0xa100 }, { 3830, 0x01b4 }, { 3835, 0x6001 }, { 3838, 0x464d },
- /* 0x8100 */
- { 3845, 0x0808 }, { 3847, 0x51c0 }, { 3852, 0x1091 }, { 3856, 0x1421 },
- { 3860, 0x14a0 }, { 3864, 0x0084 }, { 3866, 0xa383 }, { 3873, 0x0080 },
- { 3874, 0x4872 }, { 3880, 0x4941 }, { 3885, 0x4004 }, { 3887, 0x0814 },
- { 3890, 0xcc28 }, { 3896, 0x68a0 }, { 3901, 0x1812 }, { 3905, 0xa367 },
- /* 0x8200 */
- { 3914, 0x8009 }, { 3917, 0x2618 }, { 3922, 0x0106 }, { 3925, 0x0414 },
- { 3928, 0xc878 }, { 3935, 0x1042 }, { 3938, 0x2089 }, { 3942, 0xa810 },
- { 3946, 0x469b }, { 3954, 0x0d52 }, { 3960, 0x479b }, { 3969, 0xd495 },
- { 3977, 0x0040 }, { 3978, 0x0421 }, { 3981, 0xa515 }, { 3988, 0x60c0 },
- /* 0x8300 */
- { 3992, 0x0d83 }, { 3998, 0xe800 }, { 4002, 0x7006 }, { 4007, 0x3489 },
- { 4013, 0x609c }, { 4019, 0x00fa }, { 4025, 0x0000 }, { 4025, 0xa101 },
- { 4029, 0x2055 }, { 4034, 0x3b34 }, { 4042, 0x32c0 }, { 4047, 0xc000 },
- { 4049, 0x8281 }, { 4053, 0x2013 }, { 4057, 0x0500 }, { 4059, 0x1340 },
- /* 0x8400 */
- { 4063, 0x8442 }, { 4067, 0x0222 }, { 4070, 0x8000 }, { 4071, 0x0200 },
- { 4072, 0xa5a0 }, { 4078, 0x1746 }, { 4085, 0x04b1 }, { 4090, 0x3159 },
- { 4097, 0x0022 }, { 4099, 0x402c }, { 4103, 0x8740 }, { 4108, 0x6412 },
- { 4113, 0x9185 }, { 4119, 0x1008 }, { 4121, 0x8480 }, { 4124, 0x2c87 },
- /* 0x8500 */
- { 4131, 0x508c }, { 4136, 0x5001 }, { 4139, 0x8cbc }, { 4147, 0x805c },
- { 4152, 0x8040 }, { 4154, 0xf24f }, { 4164, 0x8817 }, { 4170, 0xae00 },
- { 4175, 0x9a62 }, { 4182, 0xa108 }, { 4186, 0x20a5 }, { 4191, 0xf1d0 },
- { 4199, 0x4c84 }, { 4204, 0x8500 }, { 4207, 0x2141 }, { 4211, 0x9048 },
- /* 0x8600 */
- { 4215, 0x6031 }, { 4220, 0x4b07 }, { 4227, 0x0282 }, { 4230, 0x3540 },
- { 4235, 0x0047 }, { 4239, 0x23cc }, { 4246, 0x921f }, { 4254, 0x04e0 },
- { 4258, 0x2100 }, { 4260, 0x1542 }, { 4265, 0x21c2 }, { 4270, 0x83ba },
- { 4278, 0x002b }, { 4282, 0x14a6 }, { 4288, 0x00a9 }, { 4292, 0x3400 },
- /* 0x8700 */
- { 4295, 0xc8b0 }, { 4301, 0xc219 }, { 4307, 0xc10a }, { 4312, 0x7606 },
- { 4319, 0x2029 }, { 4323, 0x2100 }, { 4325, 0x8032 }, { 4329, 0x0806 },
- { 4332, 0x1bf8 }, { 4341, 0x43a9 }, { 4348, 0x7089 }, { 4354, 0xc022 },
- { 4358, 0x4702 }, { 4363, 0x9660 }, { 4369, 0x2c1c }, { 4375, 0x850a },
- /* 0x8800 */
- { 4380, 0x0e4a }, { 4386, 0xdf1d }, { 4397, 0x6100 }, { 4400, 0x1425 },
- { 4405, 0x4f2a }, { 4413, 0x9562 }, { 4420, 0x0211 }, { 4423, 0x0a02 },
- { 4426, 0x0001 }, { 4427, 0x9d00 }, { 4432, 0x0501 }, { 4435, 0x6400 },
- { 4438, 0x7c01 }, { 4444, 0x480e }, { 4449, 0x8080 }, { 4451, 0x00a3 },
- /* 0x8900 */
- { 4455, 0xe042 }, { 4460, 0x1760 }, { 4466, 0x01c1 }, { 4470, 0x4627 },
- { 4477, 0x8265 }, { 4483, 0x1c84 }, { 4488, 0x480e }, { 4493, 0x3c29 },
- { 4500, 0x2200 }, { 4502, 0x9831 }, { 4508, 0x0021 }, { 4510, 0x10f1 },
- { 4516, 0x0000 }, { 4516, 0x01f0 }, { 4521, 0x2a20 }, { 4525, 0xa24a },
- /* 0x8a00 */
- { 4531, 0x80b0 }, { 4535, 0x4036 }, { 4540, 0x9855 }, { 4547, 0x60a0 },
- { 4551, 0x62a9 }, { 4558, 0x31c8 }, { 4564, 0x00a2 }, { 4567, 0xcee0 },
- { 4575, 0x8849 }, { 4580, 0x82c5 }, { 4586, 0xc280 }, { 4590, 0x48c8 },
- { 4595, 0x0748 }, { 4600, 0xa0ba }, { 4607, 0x1000 }, { 4608, 0x9071 },
- /* 0x8b00 */
- { 4614, 0x0c60 }, { 4618, 0xd002 }, { 4622, 0x2000 }, { 4623, 0x1081 },
- { 4626, 0x217c }, { 4633, 0x421c }, { 4638, 0x2008 }, { 4640, 0x5340 },
- { 4645, 0xa832 }, { 4651, 0xd030 }, { 4656, 0x0000 }, { 4656, 0x0000 },
- { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 },
- /* 0x8c00 */
- { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x6300 },
- { 4660, 0x8aa0 }, { 4665, 0x2b9a }, { 4673, 0x2358 }, { 4679, 0x4868 },
- { 4684, 0x08c0 }, { 4687, 0x1a0d }, { 4693, 0x0010 }, { 4694, 0x0600 },
- { 4696, 0x8a60 }, { 4701, 0x2260 }, { 4705, 0x9102 }, { 4709, 0xc1a5 },
- /* 0x8d00 */
- { 4716, 0x020a }, { 4719, 0x0884 }, { 4722, 0x0000 }, { 4722, 0x0000 },
- { 4722, 0x0000 }, { 4722, 0x0000 }, { 4722, 0x5220 }, { 4726, 0x8000 },
- { 4727, 0x2114 }, { 4731, 0xc023 }, { 4736, 0x9841 }, { 4741, 0x1aa4 },
- { 4747, 0x45e1 }, { 4754, 0x02b2 }, { 4759, 0x10b0 }, { 4763, 0x2017 },
- /* 0x8e00 */
- { 4768, 0x0872 }, { 4773, 0x0052 }, { 4776, 0x00cf }, { 4782, 0x23ca },
- { 4789, 0xe803 }, { 4795, 0x7810 }, { 4800, 0xb206 }, { 4806, 0x0e03 },
- { 4811, 0x020c }, { 4814, 0x6c25 }, { 4821, 0x6284 }, { 4826, 0x0c28 },
- { 4830, 0x809b }, { 4836, 0x1012 }, { 4839, 0x6100 }, { 4842, 0x0683 },
- /* 0x8f00 */
- { 4847, 0x8185 }, { 4852, 0x41c1 }, { 4857, 0x71ab }, { 4866, 0x04f0 },
- { 4871, 0x808b }, { 4876, 0x613e }, { 4884, 0x0020 }, { 4885, 0x0000 },
- { 4885, 0x0000 }, { 4885, 0x2000 }, { 4886, 0x0073 }, { 4891, 0x4160 },
- { 4895, 0x2c43 }, { 4901, 0x002d }, { 4905, 0x4119 }, { 4910, 0x4862 },
- /* 0x9000 */
- { 4915, 0x1114 }, { 4919, 0x0900 }, { 4921, 0xb700 }, { 4927, 0x8098 },
- { 4931, 0x1018 }, { 4934, 0x2800 }, { 4936, 0x10c4 }, { 4940, 0x0211 },
- { 4943, 0x5920 }, { 4948, 0x0ba1 }, { 4954, 0x0027 }, { 4958, 0x605d },
- { 4965, 0x11b8 }, { 4971, 0xb3a4 }, { 4979, 0x8820 }, { 4982, 0xc051 },
- /* 0x9100 */
- { 4987, 0x2171 }, { 4993, 0x55d1 }, { 5001, 0xc2ad }, { 5009, 0x36d2 },
- { 5017, 0x8188 }, { 5021, 0x0e88 }, { 5026, 0x2092 }, { 5030, 0x0e10 },
- { 5034, 0x446a }, { 5040, 0x413a }, { 5046, 0x7142 }, { 5052, 0xb84f },
- { 5061, 0x002c }, { 5064, 0x4698 }, { 5070, 0xf630 }, { 5078, 0x2a83 },
- /* 0x9200 */
- { 5084, 0x16f3 }, { 5093, 0x314d }, { 5100, 0xc178 }, { 5107, 0x5769 },
- { 5116, 0xe4cd }, { 5125, 0x3302 }, { 5130, 0xc3a3 }, { 5138, 0xbbe1 },
- { 5148, 0x6700 }, { 5153, 0x8284 }, { 5157, 0x89b1 }, { 5164, 0xbd44 },
- { 5172, 0x79ef }, { 5184, 0xb3a9 }, { 5193, 0x51ab }, { 5201, 0x8a01 },
- /* 0x9300 */
- { 5205, 0x2105 }, { 5209, 0xf032 }, { 5216, 0x06b2 }, { 5222, 0x00d8 },
- { 5226, 0x0380 }, { 5229, 0x45a7 }, { 5237, 0xa6b0 }, { 5244, 0xa45b },
- { 5252, 0xad07 }, { 5260, 0x4924 }, { 5265, 0x0b5a }, { 5272, 0x0470 },
- { 5276, 0x3ef2 }, { 5286, 0xd208 }, { 5291, 0x00c4 }, { 5294, 0x2f80 },
- /* 0x9400 */
- { 5300, 0xe316 }, { 5308, 0x80e0 }, { 5312, 0xc000 }, { 5314, 0xa81e },
- { 5321, 0x1528 }, { 5326, 0x9220 }, { 5330, 0xe90a }, { 5337, 0x0006 },
- { 5339, 0x0018 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
- { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
- /* 0x9500 */
- { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
- { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x4300 },
- { 5344, 0x7110 }, { 5349, 0xe000 }, { 5352, 0x1a42 }, { 5357, 0xa450 },
- { 5362, 0x0b40 }, { 5366, 0xe60f }, { 5375, 0x0051 }, { 5378, 0x0000 },
- /* 0x9600 */
- { 5378, 0x0000 }, { 5378, 0x6000 }, { 5380, 0x1074 }, { 5385, 0x378a },
- { 5393, 0x0002 }, { 5394, 0x01d4 }, { 5399, 0x4002 }, { 5401, 0xd810 },
- { 5406, 0x021e }, { 5411, 0xa442 }, { 5416, 0xc270 }, { 5422, 0x0408 },
- { 5424, 0x0400 }, { 5425, 0xe504 }, { 5431, 0x8200 }, { 5433, 0x0402 },
- /* 0x9700 */
- { 5435, 0x022c }, { 5439, 0x2c00 }, { 5442, 0x010e }, { 5446, 0x000a },
- { 5448, 0xc40a }, { 5453, 0x0da0 }, { 5458, 0x4488 }, { 5462, 0xa9c8 },
- { 5469, 0x0201 }, { 5471, 0xc6e0 }, { 5478, 0x5004 }, { 5481, 0xd766 },
- { 5491, 0x76b2 }, { 5500, 0x6b93 }, { 5509, 0x8013 }, { 5513, 0x0592 },
- /* 0x9800 */
- { 5518, 0x6480 }, { 5522, 0x5250 }, { 5527, 0xc869 }, { 5534, 0x402d },
- { 5539, 0x0490 }, { 5542, 0x06ce }, { 5549, 0x146c }, { 5555, 0x0000 },
- { 5555, 0x0000 }, { 5555, 0x0000 }, { 5555, 0x6800 }, { 5558, 0x8d91 },
- { 5565, 0x1124 }, { 5569, 0x0000 }, { 5569, 0x04ea }, { 5575, 0x0048 },
- /* 0x9900 */
- { 5577, 0x0184 }, { 5580, 0x9ce2 }, { 5588, 0x08c4 }, { 5592, 0x1e3e },
- { 5601, 0x61c3 }, { 5608, 0xdb10 }, { 5615, 0x0001 }, { 5616, 0x0000 },
- { 5616, 0x0000 }, { 5616, 0xa800 }, { 5619, 0x0040 }, { 5620, 0xa627 },
- { 5628, 0x0208 }, { 5630, 0x5618 }, { 5636, 0x1c80 }, { 5640, 0x6231 },
- /* 0x9a00 */
- { 5646, 0x181c }, { 5651, 0x4043 }, { 5655, 0x609d }, { 5662, 0x0168 },
- { 5666, 0x5c92 }, { 5673, 0x2052 }, { 5677, 0x0000 }, { 5677, 0x0000 },
- { 5677, 0x0000 }, { 5677, 0x0000 }, { 5677, 0xd400 }, { 5681, 0xca74 },
- { 5689, 0x414a }, { 5694, 0x18e5 }, { 5701, 0x12b1 }, { 5707, 0xa62c },
- /* 0x9b00 */
- { 5714, 0x7b3f }, { 5726, 0x1a45 }, { 5732, 0x2841 }, { 5736, 0x26b8 },
- { 5743, 0x1900 }, { 5746, 0x48e0 }, { 5751, 0x7d6a }, { 5761, 0x83a8 },
- { 5767, 0xaef1 }, { 5777, 0x6411 }, { 5782, 0x12c0 }, { 5786, 0xd987 },
- { 5795, 0x4182 }, { 5799, 0xa181 }, { 5804, 0x8ca0 }, { 5809, 0xa788 },
- /* 0x9c00 */
- { 5816, 0x8805 }, { 5820, 0x5742 }, { 5827, 0x07cc }, { 5834, 0x20e2 },
- { 5839, 0xc63a }, { 5847, 0xf959 }, { 5857, 0x4f08 }, { 5863, 0x08a5 },
- { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 },
- { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0040 }, { 5869, 0x0284 },
- /* 0x9d00 */
- { 5872, 0x0804 }, { 5874, 0x7182 }, { 5880, 0x8000 }, { 5881, 0x341d },
- { 5888, 0x04ac }, { 5893, 0x8018 }, { 5896, 0x0e2c }, { 5902, 0x58c1 },
- { 5908, 0x6458 }, { 5914, 0x01ec }, { 5920, 0x5402 }, { 5924, 0x9222 },
- { 5929, 0x0688 }, { 5933, 0xc4f0 }, { 5940, 0x4aa1 }, { 5946, 0x4019 },
- /* 0x9e00 */
- { 5950, 0x4484 }, { 5954, 0x3267 }, { 5962, 0x0000 }, { 5962, 0x0000 },
- { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x1c00 },
- { 5965, 0xc0bd }, { 5973, 0x4940 }, { 5977, 0xd110 }, { 5982, 0x0039 },
- { 5986, 0x0940 }, { 5989, 0x8020 }, { 5991, 0x7090 }, { 5996, 0x8127 },
- /* 0x9f00 */
- { 6002, 0x820c }, { 6006, 0x8ed7 }, { 6016, 0x8c44 }, { 6021, 0xb696 },
- { 6030, 0x00fa }, { 6036, 0x65e8 }, { 6044, 0xe300 }, { 6049, 0x242b },
- { 6055, 0x8000 }, { 6056, 0x40d7 }, { 6063, 0x002e },
-};
-
-static int
-jisx0212_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc < 0x0460)
- summary = &jisx0212_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x2100 && wc < 0x2130)
- summary = &jisx0212_uni2indx_page21[(wc>>4)-0x210];
- else if (wc >= 0x4e00 && wc < 0x9fb0)
- summary = &jisx0212_uni2indx_page4e[(wc>>4)-0x4e0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = jisx0212_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * JISX0212.1990-0
+ */
+
+static const unsigned short jisx0212_2uni_page22[81] = {
+ /* 0x22 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x02d8, 0x02c7,
+ 0x00b8, 0x02d9, 0x02dd, 0x00af, 0x02db, 0x02da, 0x007e, 0x0384,
+ 0x0385, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x00a1, 0x00a6, 0x00bf, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0x00ba, 0x00aa, 0x00a9, 0x00ae, 0x2122, 0x00a4,
+ 0x2116,
+};
+static const unsigned short jisx0212_2uni_page26[188] = {
+ /* 0x26 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0xfffd, 0x038c, 0xfffd,
+ 0x038e, 0x03ab, 0xfffd, 0x038f, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, 0x03c2,
+ 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408,
+ 0x0409, 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458,
+ 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f,
+};
+static const unsigned short jisx0212_2uni_page29[275] = {
+ /* 0x29 */
+ 0x00c6, 0x0110, 0xfffd, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x0141,
+ 0x013f, 0xfffd, 0x014a, 0x00d8, 0x0152, 0xfffd, 0x0166, 0x00de,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0142,
+ 0x0140, 0x0149, 0x014b, 0x00f8, 0x0153, 0x00df, 0x0167, 0x00fe,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2a */
+ 0x00c1, 0x00c0, 0x00c4, 0x00c2, 0x0102, 0x01cd, 0x0100, 0x0104,
+ 0x00c5, 0x00c3, 0x0106, 0x0108, 0x010c, 0x00c7, 0x010a, 0x010e,
+ 0x00c9, 0x00c8, 0x00cb, 0x00ca, 0x011a, 0x0116, 0x0112, 0x0118,
+ 0xfffd, 0x011c, 0x011e, 0x0122, 0x0120, 0x0124, 0x00cd, 0x00cc,
+ 0x00cf, 0x00ce, 0x01cf, 0x0130, 0x012a, 0x012e, 0x0128, 0x0134,
+ 0x0136, 0x0139, 0x013d, 0x013b, 0x0143, 0x0147, 0x0145, 0x00d1,
+ 0x00d3, 0x00d2, 0x00d6, 0x00d4, 0x01d1, 0x0150, 0x014c, 0x00d5,
+ 0x0154, 0x0158, 0x0156, 0x015a, 0x015c, 0x0160, 0x015e, 0x0164,
+ 0x0162, 0x00da, 0x00d9, 0x00dc, 0x00db, 0x016c, 0x01d3, 0x0170,
+ 0x016a, 0x0172, 0x016e, 0x0168, 0x01d7, 0x01db, 0x01d9, 0x01d5,
+ 0x0174, 0x00dd, 0x0178, 0x0176, 0x0179, 0x017d, 0x017b, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2b */
+ 0x00e1, 0x00e0, 0x00e4, 0x00e2, 0x0103, 0x01ce, 0x0101, 0x0105,
+ 0x00e5, 0x00e3, 0x0107, 0x0109, 0x010d, 0x00e7, 0x010b, 0x010f,
+ 0x00e9, 0x00e8, 0x00eb, 0x00ea, 0x011b, 0x0117, 0x0113, 0x0119,
+ 0x01f5, 0x011d, 0x011f, 0xfffd, 0x0121, 0x0125, 0x00ed, 0x00ec,
+ 0x00ef, 0x00ee, 0x01d0, 0xfffd, 0x012b, 0x012f, 0x0129, 0x0135,
+ 0x0137, 0x013a, 0x013e, 0x013c, 0x0144, 0x0148, 0x0146, 0x00f1,
+ 0x00f3, 0x00f2, 0x00f6, 0x00f4, 0x01d2, 0x0151, 0x014d, 0x00f5,
+ 0x0155, 0x0159, 0x0157, 0x015b, 0x015d, 0x0161, 0x015f, 0x0165,
+ 0x0163, 0x00fa, 0x00f9, 0x00fc, 0x00fb, 0x016d, 0x01d4, 0x0171,
+ 0x016b, 0x0173, 0x016f, 0x0169, 0x01d8, 0x01dc, 0x01da, 0x01d6,
+ 0x0175, 0x00fd, 0x00ff, 0x0177, 0x017a, 0x017e, 0x017c,
+};
+static const unsigned short jisx0212_2uni_page30[5801] = {
+ /* 0x30 */
+ 0x4e02, 0x4e04, 0x4e05, 0x4e0c, 0x4e12, 0x4e1f, 0x4e23, 0x4e24,
+ 0x4e28, 0x4e2b, 0x4e2e, 0x4e2f, 0x4e30, 0x4e35, 0x4e40, 0x4e41,
+ 0x4e44, 0x4e47, 0x4e51, 0x4e5a, 0x4e5c, 0x4e63, 0x4e68, 0x4e69,
+ 0x4e74, 0x4e75, 0x4e79, 0x4e7f, 0x4e8d, 0x4e96, 0x4e97, 0x4e9d,
+ 0x4eaf, 0x4eb9, 0x4ec3, 0x4ed0, 0x4eda, 0x4edb, 0x4ee0, 0x4ee1,
+ 0x4ee2, 0x4ee8, 0x4eef, 0x4ef1, 0x4ef3, 0x4ef5, 0x4efd, 0x4efe,
+ 0x4eff, 0x4f00, 0x4f02, 0x4f03, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12,
+ 0x4f15, 0x4f16, 0x4f17, 0x4f19, 0x4f2e, 0x4f31, 0x4f60, 0x4f33,
+ 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f40, 0x4f42, 0x4f48,
+ 0x4f49, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56, 0x4f58, 0x4f5f,
+ 0x4f63, 0x4f6a, 0x4f6c, 0x4f6e, 0x4f71, 0x4f77, 0x4f78, 0x4f79,
+ 0x4f7a, 0x4f7d, 0x4f7e, 0x4f81, 0x4f82, 0x4f84,
+ /* 0x31 */
+ 0x4f85, 0x4f89, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92, 0x4f93,
+ 0x4f94, 0x4f97, 0x4f99, 0x4f9a, 0x4f9e, 0x4f9f, 0x4fb2, 0x4fb7,
+ 0x4fb9, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc5,
+ 0x4fc6, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fcf, 0x4fd2,
+ 0x4fdc, 0x4fe0, 0x4fe2, 0x4ff0, 0x4ff2, 0x4ffc, 0x4ffd, 0x4fff,
+ 0x5000, 0x5001, 0x5004, 0x5007, 0x500a, 0x500c, 0x500e, 0x5010,
+ 0x5013, 0x5017, 0x5018, 0x501b, 0x501c, 0x501d, 0x501e, 0x5022,
+ 0x5027, 0x502e, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040, 0x5041,
+ 0x5042, 0x5045, 0x5046, 0x504a, 0x504c, 0x504e, 0x5051, 0x5052,
+ 0x5053, 0x5057, 0x5059, 0x505f, 0x5060, 0x5062, 0x5063, 0x5066,
+ 0x5067, 0x506a, 0x506d, 0x5070, 0x5071, 0x503b, 0x5081, 0x5083,
+ 0x5084, 0x5086, 0x508a, 0x508e, 0x508f, 0x5090,
+ /* 0x32 */
+ 0x5092, 0x5093, 0x5094, 0x5096, 0x509b, 0x509c, 0x509e, 0x509f,
+ 0x50a0, 0x50a1, 0x50a2, 0x50aa, 0x50af, 0x50b0, 0x50b9, 0x50ba,
+ 0x50bd, 0x50c0, 0x50c3, 0x50c4, 0x50c7, 0x50cc, 0x50ce, 0x50d0,
+ 0x50d3, 0x50d4, 0x50d8, 0x50dc, 0x50dd, 0x50df, 0x50e2, 0x50e4,
+ 0x50e6, 0x50e8, 0x50e9, 0x50ef, 0x50f1, 0x50f6, 0x50fa, 0x50fe,
+ 0x5103, 0x5106, 0x5107, 0x5108, 0x510b, 0x510c, 0x510d, 0x510e,
+ 0x50f2, 0x5110, 0x5117, 0x5119, 0x511b, 0x511c, 0x511d, 0x511e,
+ 0x5123, 0x5127, 0x5128, 0x512c, 0x512d, 0x512f, 0x5131, 0x5133,
+ 0x5134, 0x5135, 0x5138, 0x5139, 0x5142, 0x514a, 0x514f, 0x5153,
+ 0x5155, 0x5157, 0x5158, 0x515f, 0x5164, 0x5166, 0x517e, 0x5183,
+ 0x5184, 0x518b, 0x518e, 0x5198, 0x519d, 0x51a1, 0x51a3, 0x51ad,
+ 0x51b8, 0x51ba, 0x51bc, 0x51be, 0x51bf, 0x51c2,
+ /* 0x33 */
+ 0x51c8, 0x51cf, 0x51d1, 0x51d2, 0x51d3, 0x51d5, 0x51d8, 0x51de,
+ 0x51e2, 0x51e5, 0x51ee, 0x51f2, 0x51f3, 0x51f4, 0x51f7, 0x5201,
+ 0x5202, 0x5205, 0x5212, 0x5213, 0x5215, 0x5216, 0x5218, 0x5222,
+ 0x5228, 0x5231, 0x5232, 0x5235, 0x523c, 0x5245, 0x5249, 0x5255,
+ 0x5257, 0x5258, 0x525a, 0x525c, 0x525f, 0x5260, 0x5261, 0x5266,
+ 0x526e, 0x5277, 0x5278, 0x5279, 0x5280, 0x5282, 0x5285, 0x528a,
+ 0x528c, 0x5293, 0x5295, 0x5296, 0x5297, 0x5298, 0x529a, 0x529c,
+ 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52af, 0x52b0, 0x52b6, 0x52b7,
+ 0x52b8, 0x52ba, 0x52bb, 0x52bd, 0x52c0, 0x52c4, 0x52c6, 0x52c8,
+ 0x52cc, 0x52cf, 0x52d1, 0x52d4, 0x52d6, 0x52db, 0x52dc, 0x52e1,
+ 0x52e5, 0x52e8, 0x52e9, 0x52ea, 0x52ec, 0x52f0, 0x52f1, 0x52f4,
+ 0x52f6, 0x52f7, 0x5300, 0x5303, 0x530a, 0x530b,
+ /* 0x34 */
+ 0x530c, 0x5311, 0x5313, 0x5318, 0x531b, 0x531c, 0x531e, 0x531f,
+ 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c, 0x532d, 0x5330,
+ 0x5332, 0x5335, 0x533c, 0x533d, 0x533e, 0x5342, 0x534c, 0x534b,
+ 0x5359, 0x535b, 0x5361, 0x5363, 0x5365, 0x536c, 0x536d, 0x5372,
+ 0x5379, 0x537e, 0x5383, 0x5387, 0x5388, 0x538e, 0x5393, 0x5394,
+ 0x5399, 0x539d, 0x53a1, 0x53a4, 0x53aa, 0x53ab, 0x53af, 0x53b2,
+ 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53ba, 0x53bd, 0x53c0, 0x53c5,
+ 0x53cf, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dd, 0x53de, 0x53e0,
+ 0x53e6, 0x53e7, 0x53f5, 0x5402, 0x5413, 0x541a, 0x5421, 0x5427,
+ 0x5428, 0x542a, 0x542f, 0x5431, 0x5434, 0x5435, 0x5443, 0x5444,
+ 0x5447, 0x544d, 0x544f, 0x545e, 0x5462, 0x5464, 0x5466, 0x5467,
+ 0x5469, 0x546b, 0x546d, 0x546e, 0x5474, 0x547f,
+ /* 0x35 */
+ 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548d, 0x5491, 0x5495,
+ 0x5496, 0x549c, 0x549f, 0x54a1, 0x54a6, 0x54a7, 0x54a9, 0x54aa,
+ 0x54ad, 0x54ae, 0x54b1, 0x54b7, 0x54b9, 0x54ba, 0x54bb, 0x54bf,
+ 0x54c6, 0x54ca, 0x54cd, 0x54ce, 0x54e0, 0x54ea, 0x54ec, 0x54ef,
+ 0x54f6, 0x54fc, 0x54fe, 0x54ff, 0x5500, 0x5501, 0x5505, 0x5508,
+ 0x5509, 0x550c, 0x550d, 0x550e, 0x5515, 0x552a, 0x552b, 0x5532,
+ 0x5535, 0x5536, 0x553b, 0x553c, 0x553d, 0x5541, 0x5547, 0x5549,
+ 0x554a, 0x554d, 0x5550, 0x5551, 0x5558, 0x555a, 0x555b, 0x555e,
+ 0x5560, 0x5561, 0x5564, 0x5566, 0x557f, 0x5581, 0x5582, 0x5586,
+ 0x5588, 0x558e, 0x558f, 0x5591, 0x5592, 0x5593, 0x5594, 0x5597,
+ 0x55a3, 0x55a4, 0x55ad, 0x55b2, 0x55bf, 0x55c1, 0x55c3, 0x55c6,
+ 0x55c9, 0x55cb, 0x55cc, 0x55ce, 0x55d1, 0x55d2,
+ /* 0x36 */
+ 0x55d3, 0x55d7, 0x55d8, 0x55db, 0x55de, 0x55e2, 0x55e9, 0x55f6,
+ 0x55ff, 0x5605, 0x5608, 0x560a, 0x560d, 0x560e, 0x560f, 0x5610,
+ 0x5611, 0x5612, 0x5619, 0x562c, 0x5630, 0x5633, 0x5635, 0x5637,
+ 0x5639, 0x563b, 0x563c, 0x563d, 0x563f, 0x5640, 0x5641, 0x5643,
+ 0x5644, 0x5646, 0x5649, 0x564b, 0x564d, 0x564f, 0x5654, 0x565e,
+ 0x5660, 0x5661, 0x5662, 0x5663, 0x5666, 0x5669, 0x566d, 0x566f,
+ 0x5671, 0x5672, 0x5675, 0x5684, 0x5685, 0x5688, 0x568b, 0x568c,
+ 0x5695, 0x5699, 0x569a, 0x569d, 0x569e, 0x569f, 0x56a6, 0x56a7,
+ 0x56a8, 0x56a9, 0x56ab, 0x56ac, 0x56ad, 0x56b1, 0x56b3, 0x56b7,
+ 0x56be, 0x56c5, 0x56c9, 0x56ca, 0x56cb, 0x56cf, 0x56d0, 0x56cc,
+ 0x56cd, 0x56d9, 0x56dc, 0x56dd, 0x56df, 0x56e1, 0x56e4, 0x56e5,
+ 0x56e6, 0x56e7, 0x56e8, 0x56f1, 0x56eb, 0x56ed,
+ /* 0x37 */
+ 0x56f6, 0x56f7, 0x5701, 0x5702, 0x5707, 0x570a, 0x570c, 0x5711,
+ 0x5715, 0x571a, 0x571b, 0x571d, 0x5720, 0x5722, 0x5723, 0x5724,
+ 0x5725, 0x5729, 0x572a, 0x572c, 0x572e, 0x572f, 0x5733, 0x5734,
+ 0x573d, 0x573e, 0x573f, 0x5745, 0x5746, 0x574c, 0x574d, 0x5752,
+ 0x5762, 0x5765, 0x5767, 0x5768, 0x576b, 0x576d, 0x576e, 0x576f,
+ 0x5770, 0x5771, 0x5773, 0x5774, 0x5775, 0x5777, 0x5779, 0x577a,
+ 0x577b, 0x577c, 0x577e, 0x5781, 0x5783, 0x578c, 0x5794, 0x5797,
+ 0x5799, 0x579a, 0x579c, 0x579d, 0x579e, 0x579f, 0x57a1, 0x5795,
+ 0x57a7, 0x57a8, 0x57a9, 0x57ac, 0x57b8, 0x57bd, 0x57c7, 0x57c8,
+ 0x57cc, 0x57cf, 0x57d5, 0x57dd, 0x57de, 0x57e4, 0x57e6, 0x57e7,
+ 0x57e9, 0x57ed, 0x57f0, 0x57f5, 0x57f6, 0x57f8, 0x57fd, 0x57fe,
+ 0x57ff, 0x5803, 0x5804, 0x5808, 0x5809, 0x57e1,
+ /* 0x38 */
+ 0x580c, 0x580d, 0x581b, 0x581e, 0x581f, 0x5820, 0x5826, 0x5827,
+ 0x582d, 0x5832, 0x5839, 0x583f, 0x5849, 0x584c, 0x584d, 0x584f,
+ 0x5850, 0x5855, 0x585f, 0x5861, 0x5864, 0x5867, 0x5868, 0x5878,
+ 0x587c, 0x587f, 0x5880, 0x5881, 0x5887, 0x5888, 0x5889, 0x588a,
+ 0x588c, 0x588d, 0x588f, 0x5890, 0x5894, 0x5896, 0x589d, 0x58a0,
+ 0x58a1, 0x58a2, 0x58a6, 0x58a9, 0x58b1, 0x58b2, 0x58c4, 0x58bc,
+ 0x58c2, 0x58c8, 0x58cd, 0x58ce, 0x58d0, 0x58d2, 0x58d4, 0x58d6,
+ 0x58da, 0x58dd, 0x58e1, 0x58e2, 0x58e9, 0x58f3, 0x5905, 0x5906,
+ 0x590b, 0x590c, 0x5912, 0x5913, 0x5914, 0x8641, 0x591d, 0x5921,
+ 0x5923, 0x5924, 0x5928, 0x592f, 0x5930, 0x5933, 0x5935, 0x5936,
+ 0x593f, 0x5943, 0x5946, 0x5952, 0x5953, 0x5959, 0x595b, 0x595d,
+ 0x595e, 0x595f, 0x5961, 0x5963, 0x596b, 0x596d,
+ /* 0x39 */
+ 0x596f, 0x5972, 0x5975, 0x5976, 0x5979, 0x597b, 0x597c, 0x598b,
+ 0x598c, 0x598e, 0x5992, 0x5995, 0x5997, 0x599f, 0x59a4, 0x59a7,
+ 0x59ad, 0x59ae, 0x59af, 0x59b0, 0x59b3, 0x59b7, 0x59ba, 0x59bc,
+ 0x59c1, 0x59c3, 0x59c4, 0x59c8, 0x59ca, 0x59cd, 0x59d2, 0x59dd,
+ 0x59de, 0x59df, 0x59e3, 0x59e4, 0x59e7, 0x59ee, 0x59ef, 0x59f1,
+ 0x59f2, 0x59f4, 0x59f7, 0x5a00, 0x5a04, 0x5a0c, 0x5a0d, 0x5a0e,
+ 0x5a12, 0x5a13, 0x5a1e, 0x5a23, 0x5a24, 0x5a27, 0x5a28, 0x5a2a,
+ 0x5a2d, 0x5a30, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4c, 0x5a50,
+ 0x5a55, 0x5a5e, 0x5a63, 0x5a65, 0x5a67, 0x5a6d, 0x5a77, 0x5a7a,
+ 0x5a7b, 0x5a7e, 0x5a8b, 0x5a90, 0x5a93, 0x5a96, 0x5a99, 0x5a9c,
+ 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa2, 0x5aa7, 0x5aac, 0x5ab1, 0x5ab2,
+ 0x5ab3, 0x5ab5, 0x5ab8, 0x5aba, 0x5abb, 0x5abf,
+ /* 0x3a */
+ 0x5ac4, 0x5ac6, 0x5ac8, 0x5acf, 0x5ada, 0x5adc, 0x5ae0, 0x5ae5,
+ 0x5aea, 0x5aee, 0x5af5, 0x5af6, 0x5afd, 0x5b00, 0x5b01, 0x5b08,
+ 0x5b17, 0x5b34, 0x5b19, 0x5b1b, 0x5b1d, 0x5b21, 0x5b25, 0x5b2d,
+ 0x5b38, 0x5b41, 0x5b4b, 0x5b4c, 0x5b52, 0x5b56, 0x5b5e, 0x5b68,
+ 0x5b6e, 0x5b6f, 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, 0x5b81, 0x5b84,
+ 0x5b86, 0x5b8a, 0x5b8e, 0x5b90, 0x5b91, 0x5b93, 0x5b94, 0x5b96,
+ 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5baf, 0x5bb1, 0x5bb2, 0x5bb7,
+ 0x5bba, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bcd, 0x5bcf, 0x5bd6, 0x5bd7,
+ 0x5bd8, 0x5bd9, 0x5bda, 0x5be0, 0x5bef, 0x5bf1, 0x5bf4, 0x5bfd,
+ 0x5c0c, 0x5c17, 0x5c1e, 0x5c1f, 0x5c23, 0x5c26, 0x5c29, 0x5c2b,
+ 0x5c2c, 0x5c2e, 0x5c30, 0x5c32, 0x5c35, 0x5c36, 0x5c59, 0x5c5a,
+ 0x5c5c, 0x5c62, 0x5c63, 0x5c67, 0x5c68, 0x5c69,
+ /* 0x3b */
+ 0x5c6d, 0x5c70, 0x5c74, 0x5c75, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d,
+ 0x5c87, 0x5c88, 0x5c8a, 0x5c8f, 0x5c92, 0x5c9d, 0x5c9f, 0x5ca0,
+ 0x5ca2, 0x5ca3, 0x5ca6, 0x5caa, 0x5cb2, 0x5cb4, 0x5cb5, 0x5cba,
+ 0x5cc9, 0x5ccb, 0x5cd2, 0x5cdd, 0x5cd7, 0x5cee, 0x5cf1, 0x5cf2,
+ 0x5cf4, 0x5d01, 0x5d06, 0x5d0d, 0x5d12, 0x5d2b, 0x5d23, 0x5d24,
+ 0x5d26, 0x5d27, 0x5d31, 0x5d34, 0x5d39, 0x5d3d, 0x5d3f, 0x5d42,
+ 0x5d43, 0x5d46, 0x5d48, 0x5d55, 0x5d51, 0x5d59, 0x5d4a, 0x5d5f,
+ 0x5d60, 0x5d61, 0x5d62, 0x5d64, 0x5d6a, 0x5d6d, 0x5d70, 0x5d79,
+ 0x5d7a, 0x5d7e, 0x5d7f, 0x5d81, 0x5d83, 0x5d88, 0x5d8a, 0x5d92,
+ 0x5d93, 0x5d94, 0x5d95, 0x5d99, 0x5d9b, 0x5d9f, 0x5da0, 0x5da7,
+ 0x5dab, 0x5db0, 0x5db4, 0x5db8, 0x5db9, 0x5dc3, 0x5dc7, 0x5dcb,
+ 0x5dd0, 0x5dce, 0x5dd8, 0x5dd9, 0x5de0, 0x5de4,
+ /* 0x3c */
+ 0x5de9, 0x5df8, 0x5df9, 0x5e00, 0x5e07, 0x5e0d, 0x5e12, 0x5e14,
+ 0x5e15, 0x5e18, 0x5e1f, 0x5e20, 0x5e2e, 0x5e28, 0x5e32, 0x5e35,
+ 0x5e3e, 0x5e4b, 0x5e50, 0x5e49, 0x5e51, 0x5e56, 0x5e58, 0x5e5b,
+ 0x5e5c, 0x5e5e, 0x5e68, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e,
+ 0x5e70, 0x5e80, 0x5e8b, 0x5e8e, 0x5ea2, 0x5ea4, 0x5ea5, 0x5ea8,
+ 0x5eaa, 0x5eac, 0x5eb1, 0x5eb3, 0x5ebd, 0x5ebe, 0x5ebf, 0x5ec6,
+ 0x5ecc, 0x5ecb, 0x5ece, 0x5ed1, 0x5ed2, 0x5ed4, 0x5ed5, 0x5edc,
+ 0x5ede, 0x5ee5, 0x5eeb, 0x5f02, 0x5f06, 0x5f07, 0x5f08, 0x5f0e,
+ 0x5f19, 0x5f1c, 0x5f1d, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f28,
+ 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f34, 0x5f36, 0x5f3b, 0x5f3d,
+ 0x5f3f, 0x5f40, 0x5f44, 0x5f45, 0x5f47, 0x5f4d, 0x5f50, 0x5f54,
+ 0x5f58, 0x5f5b, 0x5f60, 0x5f63, 0x5f64, 0x5f67,
+ /* 0x3d */
+ 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e,
+ 0x5f89, 0x5f8d, 0x5f8f, 0x5f96, 0x5f9c, 0x5f9d, 0x5fa2, 0x5fa7,
+ 0x5fab, 0x5fa4, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb8, 0x5fc4,
+ 0x5fc7, 0x5fc8, 0x5fc9, 0x5fcb, 0x5fd0, 0x5fd1, 0x5fd2, 0x5fd3,
+ 0x5fd4, 0x5fde, 0x5fe1, 0x5fe2, 0x5fe8, 0x5fe9, 0x5fea, 0x5fec,
+ 0x5fed, 0x5fee, 0x5fef, 0x5ff2, 0x5ff3, 0x5ff6, 0x5ffa, 0x5ffc,
+ 0x6007, 0x600a, 0x600d, 0x6013, 0x6014, 0x6017, 0x6018, 0x601a,
+ 0x601f, 0x6024, 0x602d, 0x6033, 0x6035, 0x6040, 0x6047, 0x6048,
+ 0x6049, 0x604c, 0x6051, 0x6054, 0x6056, 0x6057, 0x605d, 0x6061,
+ 0x6067, 0x6071, 0x607e, 0x607f, 0x6082, 0x6086, 0x6088, 0x608a,
+ 0x608e, 0x6091, 0x6093, 0x6095, 0x6098, 0x609d, 0x609e, 0x60a2,
+ 0x60a4, 0x60a5, 0x60a8, 0x60b0, 0x60b1, 0x60b7,
+ /* 0x3e */
+ 0x60bb, 0x60be, 0x60c2, 0x60c4, 0x60c8, 0x60c9, 0x60ca, 0x60cb,
+ 0x60ce, 0x60cf, 0x60d4, 0x60d5, 0x60d9, 0x60db, 0x60dd, 0x60de,
+ 0x60e2, 0x60e5, 0x60f2, 0x60f5, 0x60f8, 0x60fc, 0x60fd, 0x6102,
+ 0x6107, 0x610a, 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114,
+ 0x6116, 0x6117, 0x6119, 0x611c, 0x611e, 0x6122, 0x612a, 0x612b,
+ 0x6130, 0x6131, 0x6135, 0x6136, 0x6137, 0x6139, 0x6141, 0x6145,
+ 0x6146, 0x6149, 0x615e, 0x6160, 0x616c, 0x6172, 0x6178, 0x617b,
+ 0x617c, 0x617f, 0x6180, 0x6181, 0x6183, 0x6184, 0x618b, 0x618d,
+ 0x6192, 0x6193, 0x6197, 0x6198, 0x619c, 0x619d, 0x619f, 0x61a0,
+ 0x61a5, 0x61a8, 0x61aa, 0x61ad, 0x61b8, 0x61b9, 0x61bc, 0x61c0,
+ 0x61c1, 0x61c2, 0x61ce, 0x61cf, 0x61d5, 0x61dc, 0x61dd, 0x61de,
+ 0x61df, 0x61e1, 0x61e2, 0x61e7, 0x61e9, 0x61e5,
+ /* 0x3f */
+ 0x61ec, 0x61ed, 0x61ef, 0x6201, 0x6203, 0x6204, 0x6207, 0x6213,
+ 0x6215, 0x621c, 0x6220, 0x6222, 0x6223, 0x6227, 0x6229, 0x622b,
+ 0x6239, 0x623d, 0x6242, 0x6243, 0x6244, 0x6246, 0x624c, 0x6250,
+ 0x6251, 0x6252, 0x6254, 0x6256, 0x625a, 0x625c, 0x6264, 0x626d,
+ 0x626f, 0x6273, 0x627a, 0x627d, 0x628d, 0x628e, 0x628f, 0x6290,
+ 0x62a6, 0x62a8, 0x62b3, 0x62b6, 0x62b7, 0x62ba, 0x62be, 0x62bf,
+ 0x62c4, 0x62ce, 0x62d5, 0x62d6, 0x62da, 0x62ea, 0x62f2, 0x62f4,
+ 0x62fc, 0x62fd, 0x6303, 0x6304, 0x630a, 0x630b, 0x630d, 0x6310,
+ 0x6313, 0x6316, 0x6318, 0x6329, 0x632a, 0x632d, 0x6335, 0x6336,
+ 0x6339, 0x633c, 0x6341, 0x6342, 0x6343, 0x6344, 0x6346, 0x634a,
+ 0x634b, 0x634e, 0x6352, 0x6353, 0x6354, 0x6358, 0x635b, 0x6365,
+ 0x6366, 0x636c, 0x636d, 0x6371, 0x6374, 0x6375,
+ /* 0x40 */
+ 0x6378, 0x637c, 0x637d, 0x637f, 0x6382, 0x6384, 0x6387, 0x638a,
+ 0x6390, 0x6394, 0x6395, 0x6399, 0x639a, 0x639e, 0x63a4, 0x63a6,
+ 0x63ad, 0x63ae, 0x63af, 0x63bd, 0x63c1, 0x63c5, 0x63c8, 0x63ce,
+ 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63dc, 0x63e0, 0x63e5, 0x63ea,
+ 0x63ec, 0x63f2, 0x63f3, 0x63f5, 0x63f8, 0x63f9, 0x6409, 0x640a,
+ 0x6410, 0x6412, 0x6414, 0x6418, 0x641e, 0x6420, 0x6422, 0x6424,
+ 0x6425, 0x6429, 0x642a, 0x642f, 0x6430, 0x6435, 0x643d, 0x643f,
+ 0x644b, 0x644f, 0x6451, 0x6452, 0x6453, 0x6454, 0x645a, 0x645b,
+ 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6463, 0x646d, 0x6473,
+ 0x6474, 0x647b, 0x647d, 0x6485, 0x6487, 0x648f, 0x6490, 0x6491,
+ 0x6498, 0x6499, 0x649b, 0x649d, 0x649f, 0x64a1, 0x64a3, 0x64a6,
+ 0x64a8, 0x64ac, 0x64b3, 0x64bd, 0x64be, 0x64bf,
+ /* 0x41 */
+ 0x64c4, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64ce, 0x64d0, 0x64d1,
+ 0x64d5, 0x64d7, 0x64e4, 0x64e5, 0x64e9, 0x64ea, 0x64ed, 0x64f0,
+ 0x64f5, 0x64f7, 0x64fb, 0x64ff, 0x6501, 0x6504, 0x6508, 0x6509,
+ 0x650a, 0x650f, 0x6513, 0x6514, 0x6516, 0x6519, 0x651b, 0x651e,
+ 0x651f, 0x6522, 0x6526, 0x6529, 0x652e, 0x6531, 0x653a, 0x653c,
+ 0x653d, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554, 0x655f,
+ 0x6560, 0x6567, 0x656b, 0x657a, 0x657d, 0x6581, 0x6585, 0x658a,
+ 0x6592, 0x6595, 0x6598, 0x659d, 0x65a0, 0x65a3, 0x65a6, 0x65ae,
+ 0x65b2, 0x65b3, 0x65b4, 0x65bf, 0x65c2, 0x65c8, 0x65c9, 0x65ce,
+ 0x65d0, 0x65d4, 0x65d6, 0x65d8, 0x65df, 0x65f0, 0x65f2, 0x65f4,
+ 0x65f5, 0x65f9, 0x65fe, 0x65ff, 0x6600, 0x6604, 0x6608, 0x6609,
+ 0x660d, 0x6611, 0x6612, 0x6615, 0x6616, 0x661d,
+ /* 0x42 */
+ 0x661e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662a,
+ 0x662b, 0x662c, 0x662e, 0x6630, 0x6631, 0x6633, 0x6639, 0x6637,
+ 0x6640, 0x6645, 0x6646, 0x664a, 0x664c, 0x6651, 0x664e, 0x6657,
+ 0x6658, 0x6659, 0x665b, 0x665c, 0x6660, 0x6661, 0x66fb, 0x666a,
+ 0x666b, 0x666c, 0x667e, 0x6673, 0x6675, 0x667f, 0x6677, 0x6678,
+ 0x6679, 0x667b, 0x6680, 0x667c, 0x668b, 0x668c, 0x668d, 0x6690,
+ 0x6692, 0x6699, 0x669a, 0x669b, 0x669c, 0x669f, 0x66a0, 0x66a4,
+ 0x66ad, 0x66b1, 0x66b2, 0x66b5, 0x66bb, 0x66bf, 0x66c0, 0x66c2,
+ 0x66c3, 0x66c8, 0x66cc, 0x66ce, 0x66cf, 0x66d4, 0x66db, 0x66df,
+ 0x66e8, 0x66eb, 0x66ec, 0x66ee, 0x66fa, 0x6705, 0x6707, 0x670e,
+ 0x6713, 0x6719, 0x671c, 0x6720, 0x6722, 0x6733, 0x673e, 0x6745,
+ 0x6747, 0x6748, 0x674c, 0x6754, 0x6755, 0x675d,
+ /* 0x43 */
+ 0x6766, 0x676c, 0x676e, 0x6774, 0x6776, 0x677b, 0x6781, 0x6784,
+ 0x678e, 0x678f, 0x6791, 0x6793, 0x6796, 0x6798, 0x6799, 0x679b,
+ 0x67b0, 0x67b1, 0x67b2, 0x67b5, 0x67bb, 0x67bc, 0x67bd, 0x67f9,
+ 0x67c0, 0x67c2, 0x67c3, 0x67c5, 0x67c8, 0x67c9, 0x67d2, 0x67d7,
+ 0x67d9, 0x67dc, 0x67e1, 0x67e6, 0x67f0, 0x67f2, 0x67f6, 0x67f7,
+ 0x6852, 0x6814, 0x6819, 0x681d, 0x681f, 0x6828, 0x6827, 0x682c,
+ 0x682d, 0x682f, 0x6830, 0x6831, 0x6833, 0x683b, 0x683f, 0x6844,
+ 0x6845, 0x684a, 0x684c, 0x6855, 0x6857, 0x6858, 0x685b, 0x686b,
+ 0x686e, 0x686f, 0x6870, 0x6871, 0x6872, 0x6875, 0x6879, 0x687a,
+ 0x687b, 0x687c, 0x6882, 0x6884, 0x6886, 0x6888, 0x6896, 0x6898,
+ 0x689a, 0x689c, 0x68a1, 0x68a3, 0x68a5, 0x68a9, 0x68aa, 0x68ae,
+ 0x68b2, 0x68bb, 0x68c5, 0x68c8, 0x68cc, 0x68cf,
+ /* 0x44 */
+ 0x68d0, 0x68d1, 0x68d3, 0x68d6, 0x68d9, 0x68dc, 0x68dd, 0x68e5,
+ 0x68e8, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68f0, 0x68f1, 0x68f5,
+ 0x68f6, 0x68fb, 0x68fc, 0x68fd, 0x6906, 0x6909, 0x690a, 0x6910,
+ 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, 0x6933, 0x6935, 0x6938,
+ 0x693b, 0x6942, 0x6945, 0x6949, 0x694e, 0x6957, 0x695b, 0x6963,
+ 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, 0x696c, 0x6970, 0x6971,
+ 0x6972, 0x697a, 0x697b, 0x697f, 0x6980, 0x698d, 0x6992, 0x6996,
+ 0x6998, 0x69a1, 0x69a5, 0x69a6, 0x69a8, 0x69ab, 0x69ad, 0x69af,
+ 0x69b7, 0x69b8, 0x69ba, 0x69bc, 0x69c5, 0x69c8, 0x69d1, 0x69d6,
+ 0x69d7, 0x69e2, 0x69e5, 0x69ee, 0x69ef, 0x69f1, 0x69f3, 0x69f5,
+ 0x69fe, 0x6a00, 0x6a01, 0x6a03, 0x6a0f, 0x6a11, 0x6a15, 0x6a1a,
+ 0x6a1d, 0x6a20, 0x6a24, 0x6a28, 0x6a30, 0x6a32,
+ /* 0x45 */
+ 0x6a34, 0x6a37, 0x6a3b, 0x6a3e, 0x6a3f, 0x6a45, 0x6a46, 0x6a49,
+ 0x6a4a, 0x6a4e, 0x6a50, 0x6a51, 0x6a52, 0x6a55, 0x6a56, 0x6a5b,
+ 0x6a64, 0x6a67, 0x6a6a, 0x6a71, 0x6a73, 0x6a7e, 0x6a81, 0x6a83,
+ 0x6a86, 0x6a87, 0x6a89, 0x6a8b, 0x6a91, 0x6a9b, 0x6a9d, 0x6a9e,
+ 0x6a9f, 0x6aa5, 0x6aab, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab4, 0x6abd,
+ 0x6abe, 0x6abf, 0x6ac6, 0x6ac9, 0x6ac8, 0x6acc, 0x6ad0, 0x6ad4,
+ 0x6ad5, 0x6ad6, 0x6adc, 0x6add, 0x6ae4, 0x6ae7, 0x6aec, 0x6af0,
+ 0x6af1, 0x6af2, 0x6afc, 0x6afd, 0x6b02, 0x6b03, 0x6b06, 0x6b07,
+ 0x6b09, 0x6b0f, 0x6b10, 0x6b11, 0x6b17, 0x6b1b, 0x6b1e, 0x6b24,
+ 0x6b28, 0x6b2b, 0x6b2c, 0x6b2f, 0x6b35, 0x6b36, 0x6b3b, 0x6b3f,
+ 0x6b46, 0x6b4a, 0x6b4d, 0x6b52, 0x6b56, 0x6b58, 0x6b5d, 0x6b60,
+ 0x6b67, 0x6b6b, 0x6b6e, 0x6b70, 0x6b75, 0x6b7d,
+ /* 0x46 */
+ 0x6b7e, 0x6b82, 0x6b85, 0x6b97, 0x6b9b, 0x6b9f, 0x6ba0, 0x6ba2,
+ 0x6ba3, 0x6ba8, 0x6ba9, 0x6bac, 0x6bad, 0x6bae, 0x6bb0, 0x6bb8,
+ 0x6bb9, 0x6bbd, 0x6bbe, 0x6bc3, 0x6bc4, 0x6bc9, 0x6bcc, 0x6bd6,
+ 0x6bda, 0x6be1, 0x6be3, 0x6be6, 0x6be7, 0x6bee, 0x6bf1, 0x6bf7,
+ 0x6bf9, 0x6bff, 0x6c02, 0x6c04, 0x6c05, 0x6c09, 0x6c0d, 0x6c0e,
+ 0x6c10, 0x6c12, 0x6c19, 0x6c1f, 0x6c26, 0x6c27, 0x6c28, 0x6c2c,
+ 0x6c2e, 0x6c33, 0x6c35, 0x6c36, 0x6c3a, 0x6c3b, 0x6c3f, 0x6c4a,
+ 0x6c4b, 0x6c4d, 0x6c4f, 0x6c52, 0x6c54, 0x6c59, 0x6c5b, 0x6c5c,
+ 0x6c6b, 0x6c6d, 0x6c6f, 0x6c74, 0x6c76, 0x6c78, 0x6c79, 0x6c7b,
+ 0x6c85, 0x6c86, 0x6c87, 0x6c89, 0x6c94, 0x6c95, 0x6c97, 0x6c98,
+ 0x6c9c, 0x6c9f, 0x6cb0, 0x6cb2, 0x6cb4, 0x6cc2, 0x6cc6, 0x6ccd,
+ 0x6ccf, 0x6cd0, 0x6cd1, 0x6cd2, 0x6cd4, 0x6cd6,
+ /* 0x47 */
+ 0x6cda, 0x6cdc, 0x6ce0, 0x6ce7, 0x6ce9, 0x6ceb, 0x6cec, 0x6cee,
+ 0x6cf2, 0x6cf4, 0x6d04, 0x6d07, 0x6d0a, 0x6d0e, 0x6d0f, 0x6d11,
+ 0x6d13, 0x6d1a, 0x6d26, 0x6d27, 0x6d28, 0x6c67, 0x6d2e, 0x6d2f,
+ 0x6d31, 0x6d39, 0x6d3c, 0x6d3f, 0x6d57, 0x6d5e, 0x6d5f, 0x6d61,
+ 0x6d65, 0x6d67, 0x6d6f, 0x6d70, 0x6d7c, 0x6d82, 0x6d87, 0x6d91,
+ 0x6d92, 0x6d94, 0x6d96, 0x6d97, 0x6d98, 0x6daa, 0x6dac, 0x6db4,
+ 0x6db7, 0x6db9, 0x6dbd, 0x6dbf, 0x6dc4, 0x6dc8, 0x6dca, 0x6dce,
+ 0x6dcf, 0x6dd6, 0x6ddb, 0x6ddd, 0x6ddf, 0x6de0, 0x6de2, 0x6de5,
+ 0x6de9, 0x6def, 0x6df0, 0x6df4, 0x6df6, 0x6dfc, 0x6e00, 0x6e04,
+ 0x6e1e, 0x6e22, 0x6e27, 0x6e32, 0x6e36, 0x6e39, 0x6e3b, 0x6e3c,
+ 0x6e44, 0x6e45, 0x6e48, 0x6e49, 0x6e4b, 0x6e4f, 0x6e51, 0x6e52,
+ 0x6e53, 0x6e54, 0x6e57, 0x6e5c, 0x6e5d, 0x6e5e,
+ /* 0x48 */
+ 0x6e62, 0x6e63, 0x6e68, 0x6e73, 0x6e7b, 0x6e7d, 0x6e8d, 0x6e93,
+ 0x6e99, 0x6ea0, 0x6ea7, 0x6ead, 0x6eae, 0x6eb1, 0x6eb3, 0x6ebb,
+ 0x6ebf, 0x6ec0, 0x6ec1, 0x6ec3, 0x6ec7, 0x6ec8, 0x6eca, 0x6ecd,
+ 0x6ece, 0x6ecf, 0x6eeb, 0x6eed, 0x6eee, 0x6ef9, 0x6efb, 0x6efd,
+ 0x6f04, 0x6f08, 0x6f0a, 0x6f0c, 0x6f0d, 0x6f16, 0x6f18, 0x6f1a,
+ 0x6f1b, 0x6f26, 0x6f29, 0x6f2a, 0x6f2f, 0x6f30, 0x6f33, 0x6f36,
+ 0x6f3b, 0x6f3c, 0x6f2d, 0x6f4f, 0x6f51, 0x6f52, 0x6f53, 0x6f57,
+ 0x6f59, 0x6f5a, 0x6f5d, 0x6f5e, 0x6f61, 0x6f62, 0x6f68, 0x6f6c,
+ 0x6f7d, 0x6f7e, 0x6f83, 0x6f87, 0x6f88, 0x6f8b, 0x6f8c, 0x6f8d,
+ 0x6f90, 0x6f92, 0x6f93, 0x6f94, 0x6f96, 0x6f9a, 0x6f9f, 0x6fa0,
+ 0x6fa5, 0x6fa6, 0x6fa7, 0x6fa8, 0x6fae, 0x6faf, 0x6fb0, 0x6fb5,
+ 0x6fb6, 0x6fbc, 0x6fc5, 0x6fc7, 0x6fc8, 0x6fca,
+ /* 0x49 */
+ 0x6fda, 0x6fde, 0x6fe8, 0x6fe9, 0x6ff0, 0x6ff5, 0x6ff9, 0x6ffc,
+ 0x6ffd, 0x7000, 0x7005, 0x7006, 0x7007, 0x700d, 0x7017, 0x7020,
+ 0x7023, 0x702f, 0x7034, 0x7037, 0x7039, 0x703c, 0x7043, 0x7044,
+ 0x7048, 0x7049, 0x704a, 0x704b, 0x7054, 0x7055, 0x705d, 0x705e,
+ 0x704e, 0x7064, 0x7065, 0x706c, 0x706e, 0x7075, 0x7076, 0x707e,
+ 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097, 0x7098,
+ 0x709b, 0x70a4, 0x70ab, 0x70b0, 0x70b1, 0x70b4, 0x70b7, 0x70ca,
+ 0x70d1, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d8, 0x70dc, 0x70e4,
+ 0x70fa, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710b, 0x710c,
+ 0x710f, 0x711e, 0x7120, 0x712b, 0x712d, 0x712f, 0x7130, 0x7131,
+ 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714a, 0x714b, 0x7150,
+ 0x7152, 0x7157, 0x715a, 0x715c, 0x715e, 0x7160,
+ /* 0x4a */
+ 0x7168, 0x7179, 0x7180, 0x7185, 0x7187, 0x718c, 0x7192, 0x719a,
+ 0x719b, 0x71a0, 0x71a2, 0x71af, 0x71b0, 0x71b2, 0x71b3, 0x71ba,
+ 0x71bf, 0x71c0, 0x71c1, 0x71c4, 0x71cb, 0x71cc, 0x71d3, 0x71d6,
+ 0x71d9, 0x71da, 0x71dc, 0x71f8, 0x71fe, 0x7200, 0x7207, 0x7208,
+ 0x7209, 0x7213, 0x7217, 0x721a, 0x721d, 0x721f, 0x7224, 0x722b,
+ 0x722f, 0x7234, 0x7238, 0x7239, 0x7241, 0x7242, 0x7243, 0x7245,
+ 0x724e, 0x724f, 0x7250, 0x7253, 0x7255, 0x7256, 0x725a, 0x725c,
+ 0x725e, 0x7260, 0x7263, 0x7268, 0x726b, 0x726e, 0x726f, 0x7271,
+ 0x7277, 0x7278, 0x727b, 0x727c, 0x727f, 0x7284, 0x7289, 0x728d,
+ 0x728e, 0x7293, 0x729b, 0x72a8, 0x72ad, 0x72ae, 0x72b1, 0x72b4,
+ 0x72be, 0x72c1, 0x72c7, 0x72c9, 0x72cc, 0x72d5, 0x72d6, 0x72d8,
+ 0x72df, 0x72e5, 0x72f3, 0x72f4, 0x72fa, 0x72fb,
+ /* 0x4b */
+ 0x72fe, 0x7302, 0x7304, 0x7305, 0x7307, 0x730b, 0x730d, 0x7312,
+ 0x7313, 0x7318, 0x7319, 0x731e, 0x7322, 0x7324, 0x7327, 0x7328,
+ 0x732c, 0x7331, 0x7332, 0x7335, 0x733a, 0x733b, 0x733d, 0x7343,
+ 0x734d, 0x7350, 0x7352, 0x7356, 0x7358, 0x735d, 0x735e, 0x735f,
+ 0x7360, 0x7366, 0x7367, 0x7369, 0x736b, 0x736c, 0x736e, 0x736f,
+ 0x7371, 0x7377, 0x7379, 0x737c, 0x7380, 0x7381, 0x7383, 0x7385,
+ 0x7386, 0x738e, 0x7390, 0x7393, 0x7395, 0x7397, 0x7398, 0x739c,
+ 0x739e, 0x739f, 0x73a0, 0x73a2, 0x73a5, 0x73a6, 0x73aa, 0x73ab,
+ 0x73ad, 0x73b5, 0x73b7, 0x73b9, 0x73bc, 0x73bd, 0x73bf, 0x73c5,
+ 0x73c6, 0x73c9, 0x73cb, 0x73cc, 0x73cf, 0x73d2, 0x73d3, 0x73d6,
+ 0x73d9, 0x73dd, 0x73e1, 0x73e3, 0x73e6, 0x73e7, 0x73e9, 0x73f4,
+ 0x73f5, 0x73f7, 0x73f9, 0x73fa, 0x73fb, 0x73fd,
+ /* 0x4c */
+ 0x73ff, 0x7400, 0x7401, 0x7404, 0x7407, 0x740a, 0x7411, 0x741a,
+ 0x741b, 0x7424, 0x7426, 0x7428, 0x7429, 0x742a, 0x742b, 0x742c,
+ 0x742d, 0x742e, 0x742f, 0x7430, 0x7431, 0x7439, 0x7440, 0x7443,
+ 0x7444, 0x7446, 0x7447, 0x744b, 0x744d, 0x7451, 0x7452, 0x7457,
+ 0x745d, 0x7462, 0x7466, 0x7467, 0x7468, 0x746b, 0x746d, 0x746e,
+ 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, 0x7486, 0x7487, 0x7489,
+ 0x748f, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499, 0x749a, 0x749c,
+ 0x749f, 0x74a0, 0x74a1, 0x74a3, 0x74a6, 0x74a8, 0x74a9, 0x74aa,
+ 0x74ab, 0x74ae, 0x74af, 0x74b1, 0x74b2, 0x74b5, 0x74b9, 0x74bb,
+ 0x74bf, 0x74c8, 0x74c9, 0x74cc, 0x74d0, 0x74d3, 0x74d8, 0x74da,
+ 0x74db, 0x74de, 0x74df, 0x74e4, 0x74e8, 0x74ea, 0x74eb, 0x74ef,
+ 0x74f4, 0x74fa, 0x74fb, 0x74fc, 0x74ff, 0x7506,
+ /* 0x4d */
+ 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527, 0x7529,
+ 0x752a, 0x752f, 0x7536, 0x7539, 0x753d, 0x753e, 0x753f, 0x7540,
+ 0x7543, 0x7547, 0x7548, 0x754e, 0x7550, 0x7552, 0x7557, 0x755e,
+ 0x755f, 0x7561, 0x756f, 0x7571, 0x7579, 0x757a, 0x757b, 0x757c,
+ 0x757d, 0x757e, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593, 0x7595,
+ 0x7599, 0x759c, 0x75a2, 0x75a4, 0x75b4, 0x75ba, 0x75bf, 0x75c0,
+ 0x75c1, 0x75c4, 0x75c6, 0x75cc, 0x75ce, 0x75cf, 0x75d7, 0x75dc,
+ 0x75df, 0x75e0, 0x75e1, 0x75e4, 0x75e7, 0x75ec, 0x75ee, 0x75ef,
+ 0x75f1, 0x75f9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607, 0x7608,
+ 0x760a, 0x760c, 0x760f, 0x7612, 0x7613, 0x7615, 0x7616, 0x7619,
+ 0x761b, 0x761c, 0x761d, 0x761e, 0x7623, 0x7625, 0x7626, 0x7629,
+ 0x762d, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639,
+ /* 0x4e */
+ 0x763a, 0x763c, 0x764a, 0x7640, 0x7641, 0x7643, 0x7644, 0x7645,
+ 0x7649, 0x764b, 0x7655, 0x7659, 0x765f, 0x7664, 0x7665, 0x766d,
+ 0x766e, 0x766f, 0x7671, 0x7674, 0x7681, 0x7685, 0x768c, 0x768d,
+ 0x7695, 0x769b, 0x769c, 0x769d, 0x769f, 0x76a0, 0x76a2, 0x76a3,
+ 0x76a4, 0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76aa, 0x76ad, 0x76bd,
+ 0x76c1, 0x76c5, 0x76c9, 0x76cb, 0x76cc, 0x76ce, 0x76d4, 0x76d9,
+ 0x76e0, 0x76e6, 0x76e8, 0x76ec, 0x76f0, 0x76f1, 0x76f6, 0x76f9,
+ 0x76fc, 0x7700, 0x7706, 0x770a, 0x770e, 0x7712, 0x7714, 0x7715,
+ 0x7717, 0x7719, 0x771a, 0x771c, 0x7722, 0x7728, 0x772d, 0x772e,
+ 0x772f, 0x7734, 0x7735, 0x7736, 0x7739, 0x773d, 0x773e, 0x7742,
+ 0x7745, 0x7746, 0x774a, 0x774d, 0x774e, 0x774f, 0x7752, 0x7756,
+ 0x7757, 0x775c, 0x775e, 0x775f, 0x7760, 0x7762,
+ /* 0x4f */
+ 0x7764, 0x7767, 0x776a, 0x776c, 0x7770, 0x7772, 0x7773, 0x7774,
+ 0x777a, 0x777d, 0x7780, 0x7784, 0x778c, 0x778d, 0x7794, 0x7795,
+ 0x7796, 0x779a, 0x779f, 0x77a2, 0x77a7, 0x77aa, 0x77ae, 0x77af,
+ 0x77b1, 0x77b5, 0x77be, 0x77c3, 0x77c9, 0x77d1, 0x77d2, 0x77d5,
+ 0x77d9, 0x77de, 0x77df, 0x77e0, 0x77e4, 0x77e6, 0x77ea, 0x77ec,
+ 0x77f0, 0x77f1, 0x77f4, 0x77f8, 0x77fb, 0x7805, 0x7806, 0x7809,
+ 0x780d, 0x780e, 0x7811, 0x781d, 0x7821, 0x7822, 0x7823, 0x782d,
+ 0x782e, 0x7830, 0x7835, 0x7837, 0x7843, 0x7844, 0x7847, 0x7848,
+ 0x784c, 0x784e, 0x7852, 0x785c, 0x785e, 0x7860, 0x7861, 0x7863,
+ 0x7864, 0x7868, 0x786a, 0x786e, 0x787a, 0x787e, 0x788a, 0x788f,
+ 0x7894, 0x7898, 0x78a1, 0x789d, 0x789e, 0x789f, 0x78a4, 0x78a8,
+ 0x78ac, 0x78ad, 0x78b0, 0x78b1, 0x78b2, 0x78b3,
+ /* 0x50 */
+ 0x78bb, 0x78bd, 0x78bf, 0x78c7, 0x78c8, 0x78c9, 0x78cc, 0x78ce,
+ 0x78d2, 0x78d3, 0x78d5, 0x78d6, 0x78e4, 0x78db, 0x78df, 0x78e0,
+ 0x78e1, 0x78e6, 0x78ea, 0x78f2, 0x78f3, 0x7900, 0x78f6, 0x78f7,
+ 0x78fa, 0x78fb, 0x78ff, 0x7906, 0x790c, 0x7910, 0x791a, 0x791c,
+ 0x791e, 0x791f, 0x7920, 0x7925, 0x7927, 0x7929, 0x792d, 0x7931,
+ 0x7934, 0x7935, 0x793b, 0x793d, 0x793f, 0x7944, 0x7945, 0x7946,
+ 0x794a, 0x794b, 0x794f, 0x7951, 0x7954, 0x7958, 0x795b, 0x795c,
+ 0x7967, 0x7969, 0x796b, 0x7972, 0x7979, 0x797b, 0x797c, 0x797e,
+ 0x798b, 0x798c, 0x7991, 0x7993, 0x7994, 0x7995, 0x7996, 0x7998,
+ 0x799b, 0x799c, 0x79a1, 0x79a8, 0x79a9, 0x79ab, 0x79af, 0x79b1,
+ 0x79b4, 0x79b8, 0x79bb, 0x79c2, 0x79c4, 0x79c7, 0x79c8, 0x79ca,
+ 0x79cf, 0x79d4, 0x79d6, 0x79da, 0x79dd, 0x79de,
+ /* 0x51 */
+ 0x79e0, 0x79e2, 0x79e5, 0x79ea, 0x79eb, 0x79ed, 0x79f1, 0x79f8,
+ 0x79fc, 0x7a02, 0x7a03, 0x7a07, 0x7a09, 0x7a0a, 0x7a0c, 0x7a11,
+ 0x7a15, 0x7a1b, 0x7a1e, 0x7a21, 0x7a27, 0x7a2b, 0x7a2d, 0x7a2f,
+ 0x7a30, 0x7a34, 0x7a35, 0x7a38, 0x7a39, 0x7a3a, 0x7a44, 0x7a45,
+ 0x7a47, 0x7a48, 0x7a4c, 0x7a55, 0x7a56, 0x7a59, 0x7a5c, 0x7a5d,
+ 0x7a5f, 0x7a60, 0x7a65, 0x7a67, 0x7a6a, 0x7a6d, 0x7a75, 0x7a78,
+ 0x7a7e, 0x7a80, 0x7a82, 0x7a85, 0x7a86, 0x7a8a, 0x7a8b, 0x7a90,
+ 0x7a91, 0x7a94, 0x7a9e, 0x7aa0, 0x7aa3, 0x7aac, 0x7ab3, 0x7ab5,
+ 0x7ab9, 0x7abb, 0x7abc, 0x7ac6, 0x7ac9, 0x7acc, 0x7ace, 0x7ad1,
+ 0x7adb, 0x7ae8, 0x7ae9, 0x7aeb, 0x7aec, 0x7af1, 0x7af4, 0x7afb,
+ 0x7afd, 0x7afe, 0x7b07, 0x7b14, 0x7b1f, 0x7b23, 0x7b27, 0x7b29,
+ 0x7b2a, 0x7b2b, 0x7b2d, 0x7b2e, 0x7b2f, 0x7b30,
+ /* 0x52 */
+ 0x7b31, 0x7b34, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b47, 0x7b4e,
+ 0x7b55, 0x7b60, 0x7b64, 0x7b66, 0x7b69, 0x7b6a, 0x7b6d, 0x7b6f,
+ 0x7b72, 0x7b73, 0x7b77, 0x7b84, 0x7b89, 0x7b8e, 0x7b90, 0x7b91,
+ 0x7b96, 0x7b9b, 0x7b9e, 0x7ba0, 0x7ba5, 0x7bac, 0x7baf, 0x7bb0,
+ 0x7bb2, 0x7bb5, 0x7bb6, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bc2,
+ 0x7bc5, 0x7bc8, 0x7bca, 0x7bd4, 0x7bd6, 0x7bd7, 0x7bd9, 0x7bda,
+ 0x7bdb, 0x7be8, 0x7bea, 0x7bf2, 0x7bf4, 0x7bf5, 0x7bf8, 0x7bf9,
+ 0x7bfa, 0x7bfc, 0x7bfe, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c06,
+ 0x7c09, 0x7c0b, 0x7c0c, 0x7c0e, 0x7c0f, 0x7c19, 0x7c1b, 0x7c20,
+ 0x7c25, 0x7c26, 0x7c28, 0x7c2c, 0x7c31, 0x7c33, 0x7c34, 0x7c36,
+ 0x7c39, 0x7c3a, 0x7c46, 0x7c4a, 0x7c55, 0x7c51, 0x7c52, 0x7c53,
+ 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e,
+ /* 0x53 */
+ 0x7c61, 0x7c63, 0x7c67, 0x7c69, 0x7c6d, 0x7c6e, 0x7c70, 0x7c72,
+ 0x7c79, 0x7c7c, 0x7c7d, 0x7c86, 0x7c87, 0x7c8f, 0x7c94, 0x7c9e,
+ 0x7ca0, 0x7ca6, 0x7cb0, 0x7cb6, 0x7cb7, 0x7cba, 0x7cbb, 0x7cbc,
+ 0x7cbf, 0x7cc4, 0x7cc7, 0x7cc8, 0x7cc9, 0x7ccd, 0x7ccf, 0x7cd3,
+ 0x7cd4, 0x7cd5, 0x7cd7, 0x7cd9, 0x7cda, 0x7cdd, 0x7ce6, 0x7ce9,
+ 0x7ceb, 0x7cf5, 0x7d03, 0x7d07, 0x7d08, 0x7d09, 0x7d0f, 0x7d11,
+ 0x7d12, 0x7d13, 0x7d16, 0x7d1d, 0x7d1e, 0x7d23, 0x7d26, 0x7d2a,
+ 0x7d2d, 0x7d31, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d40, 0x7d41, 0x7d47,
+ 0x7d48, 0x7d4d, 0x7d51, 0x7d53, 0x7d57, 0x7d59, 0x7d5a, 0x7d5c,
+ 0x7d5d, 0x7d65, 0x7d67, 0x7d6a, 0x7d70, 0x7d78, 0x7d7a, 0x7d7b,
+ 0x7d7f, 0x7d81, 0x7d82, 0x7d83, 0x7d85, 0x7d86, 0x7d88, 0x7d8b,
+ 0x7d8c, 0x7d8d, 0x7d91, 0x7d96, 0x7d97, 0x7d9d,
+ /* 0x54 */
+ 0x7d9e, 0x7da6, 0x7da7, 0x7daa, 0x7db3, 0x7db6, 0x7db7, 0x7db9,
+ 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dcc, 0x7dcd, 0x7dce,
+ 0x7dd7, 0x7dd9, 0x7e00, 0x7de2, 0x7de5, 0x7de6, 0x7dea, 0x7deb,
+ 0x7ded, 0x7df1, 0x7df5, 0x7df6, 0x7df9, 0x7dfa, 0x7e08, 0x7e10,
+ 0x7e11, 0x7e15, 0x7e17, 0x7e1c, 0x7e1d, 0x7e20, 0x7e27, 0x7e28,
+ 0x7e2c, 0x7e2d, 0x7e2f, 0x7e33, 0x7e36, 0x7e3f, 0x7e44, 0x7e45,
+ 0x7e47, 0x7e4e, 0x7e50, 0x7e52, 0x7e58, 0x7e5f, 0x7e61, 0x7e62,
+ 0x7e65, 0x7e6b, 0x7e6e, 0x7e6f, 0x7e73, 0x7e78, 0x7e7e, 0x7e81,
+ 0x7e86, 0x7e87, 0x7e8a, 0x7e8d, 0x7e91, 0x7e95, 0x7e98, 0x7e9a,
+ 0x7e9d, 0x7e9e, 0x7f3c, 0x7f3b, 0x7f3d, 0x7f3e, 0x7f3f, 0x7f43,
+ 0x7f44, 0x7f47, 0x7f4f, 0x7f52, 0x7f53, 0x7f5b, 0x7f5c, 0x7f5d,
+ 0x7f61, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f6d,
+ /* 0x55 */
+ 0x7f71, 0x7f7d, 0x7f7e, 0x7f7f, 0x7f80, 0x7f8b, 0x7f8d, 0x7f8f,
+ 0x7f90, 0x7f91, 0x7f96, 0x7f97, 0x7f9c, 0x7fa1, 0x7fa2, 0x7fa6,
+ 0x7faa, 0x7fad, 0x7fb4, 0x7fbc, 0x7fbf, 0x7fc0, 0x7fc3, 0x7fc8,
+ 0x7fce, 0x7fcf, 0x7fdb, 0x7fdf, 0x7fe3, 0x7fe5, 0x7fe8, 0x7fec,
+ 0x7fee, 0x7fef, 0x7ff2, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff, 0x8007,
+ 0x8008, 0x800a, 0x800d, 0x800e, 0x800f, 0x8011, 0x8013, 0x8014,
+ 0x8016, 0x801d, 0x801e, 0x801f, 0x8020, 0x8024, 0x8026, 0x802c,
+ 0x802e, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803a, 0x803c,
+ 0x803e, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806d, 0x8071,
+ 0x8075, 0x8081, 0x8088, 0x808e, 0x809c, 0x809e, 0x80a6, 0x80a7,
+ 0x80ab, 0x80b8, 0x80b9, 0x80c8, 0x80cd, 0x80cf, 0x80d2, 0x80d4,
+ 0x80d5, 0x80d7, 0x80d8, 0x80e0, 0x80ed, 0x80ee,
+ /* 0x56 */
+ 0x80f0, 0x80f2, 0x80f3, 0x80f6, 0x80f9, 0x80fa, 0x80fe, 0x8103,
+ 0x810b, 0x8116, 0x8117, 0x8118, 0x811c, 0x811e, 0x8120, 0x8124,
+ 0x8127, 0x812c, 0x8130, 0x8135, 0x813a, 0x813c, 0x8145, 0x8147,
+ 0x814a, 0x814c, 0x8152, 0x8157, 0x8160, 0x8161, 0x8167, 0x8168,
+ 0x8169, 0x816d, 0x816f, 0x8177, 0x8181, 0x8190, 0x8184, 0x8185,
+ 0x8186, 0x818b, 0x818e, 0x8196, 0x8198, 0x819b, 0x819e, 0x81a2,
+ 0x81ae, 0x81b2, 0x81b4, 0x81bb, 0x81cb, 0x81c3, 0x81c5, 0x81ca,
+ 0x81ce, 0x81cf, 0x81d5, 0x81d7, 0x81db, 0x81dd, 0x81de, 0x81e1,
+ 0x81e4, 0x81eb, 0x81ec, 0x81f0, 0x81f1, 0x81f2, 0x81f5, 0x81f6,
+ 0x81f8, 0x81f9, 0x81fd, 0x81ff, 0x8200, 0x8203, 0x820f, 0x8213,
+ 0x8214, 0x8219, 0x821a, 0x821d, 0x8221, 0x8222, 0x8228, 0x8232,
+ 0x8234, 0x823a, 0x8243, 0x8244, 0x8245, 0x8246,
+ /* 0x57 */
+ 0x824b, 0x824e, 0x824f, 0x8251, 0x8256, 0x825c, 0x8260, 0x8263,
+ 0x8267, 0x826d, 0x8274, 0x827b, 0x827d, 0x827f, 0x8280, 0x8281,
+ 0x8283, 0x8284, 0x8287, 0x8289, 0x828a, 0x828e, 0x8291, 0x8294,
+ 0x8296, 0x8298, 0x829a, 0x829b, 0x82a0, 0x82a1, 0x82a3, 0x82a4,
+ 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ae, 0x82b0, 0x82b2, 0x82b4,
+ 0x82b7, 0x82ba, 0x82bc, 0x82be, 0x82bf, 0x82c6, 0x82d0, 0x82d5,
+ 0x82da, 0x82e0, 0x82e2, 0x82e4, 0x82e8, 0x82ea, 0x82ed, 0x82ef,
+ 0x82f6, 0x82f7, 0x82fd, 0x82fe, 0x8300, 0x8301, 0x8307, 0x8308,
+ 0x830a, 0x830b, 0x8354, 0x831b, 0x831d, 0x831e, 0x831f, 0x8321,
+ 0x8322, 0x832c, 0x832d, 0x832e, 0x8330, 0x8333, 0x8337, 0x833a,
+ 0x833c, 0x833d, 0x8342, 0x8343, 0x8344, 0x8347, 0x834d, 0x834e,
+ 0x8351, 0x8355, 0x8356, 0x8357, 0x8370, 0x8378,
+ /* 0x58 */
+ 0x837d, 0x837f, 0x8380, 0x8382, 0x8384, 0x8386, 0x838d, 0x8392,
+ 0x8394, 0x8395, 0x8398, 0x8399, 0x839b, 0x839c, 0x839d, 0x83a6,
+ 0x83a7, 0x83a9, 0x83ac, 0x83be, 0x83bf, 0x83c0, 0x83c7, 0x83c9,
+ 0x83cf, 0x83d0, 0x83d1, 0x83d4, 0x83dd, 0x8353, 0x83e8, 0x83ea,
+ 0x83f6, 0x83f8, 0x83f9, 0x83fc, 0x8401, 0x8406, 0x840a, 0x840f,
+ 0x8411, 0x8415, 0x8419, 0x83ad, 0x842f, 0x8439, 0x8445, 0x8447,
+ 0x8448, 0x844a, 0x844d, 0x844f, 0x8451, 0x8452, 0x8456, 0x8458,
+ 0x8459, 0x845a, 0x845c, 0x8460, 0x8464, 0x8465, 0x8467, 0x846a,
+ 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847c, 0x847d, 0x8481,
+ 0x8485, 0x8492, 0x8493, 0x8495, 0x849e, 0x84a6, 0x84a8, 0x84a9,
+ 0x84aa, 0x84af, 0x84b1, 0x84b4, 0x84ba, 0x84bd, 0x84be, 0x84c0,
+ 0x84c2, 0x84c7, 0x84c8, 0x84cc, 0x84cf, 0x84d3,
+ /* 0x59 */
+ 0x84dc, 0x84e7, 0x84ea, 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f7,
+ 0x8532, 0x84fa, 0x84fb, 0x84fd, 0x8502, 0x8503, 0x8507, 0x850c,
+ 0x850e, 0x8510, 0x851c, 0x851e, 0x8522, 0x8523, 0x8524, 0x8525,
+ 0x8527, 0x852a, 0x852b, 0x852f, 0x8533, 0x8534, 0x8536, 0x853f,
+ 0x8546, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8556, 0x8559,
+ 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562, 0x8564,
+ 0x856b, 0x856f, 0x8579, 0x857a, 0x857b, 0x857d, 0x857f, 0x8581,
+ 0x8585, 0x8586, 0x8589, 0x858b, 0x858c, 0x858f, 0x8593, 0x8598,
+ 0x859d, 0x859f, 0x85a0, 0x85a2, 0x85a5, 0x85a7, 0x85b4, 0x85b6,
+ 0x85b7, 0x85b8, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c2, 0x85c7,
+ 0x85ca, 0x85cb, 0x85ce, 0x85ad, 0x85d8, 0x85da, 0x85df, 0x85e0,
+ 0x85e6, 0x85e8, 0x85ed, 0x85f3, 0x85f6, 0x85fc,
+ /* 0x5a */
+ 0x85ff, 0x8600, 0x8604, 0x8605, 0x860d, 0x860e, 0x8610, 0x8611,
+ 0x8612, 0x8618, 0x8619, 0x861b, 0x861e, 0x8621, 0x8627, 0x8629,
+ 0x8636, 0x8638, 0x863a, 0x863c, 0x863d, 0x8640, 0x8642, 0x8646,
+ 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, 0x865d, 0x8660,
+ 0x8661, 0x8662, 0x8663, 0x8664, 0x8669, 0x866c, 0x866f, 0x8675,
+ 0x8676, 0x8677, 0x867a, 0x868d, 0x8691, 0x8696, 0x8698, 0x869a,
+ 0x869c, 0x86a1, 0x86a6, 0x86a7, 0x86a8, 0x86ad, 0x86b1, 0x86b3,
+ 0x86b4, 0x86b5, 0x86b7, 0x86b8, 0x86b9, 0x86bf, 0x86c0, 0x86c1,
+ 0x86c3, 0x86c5, 0x86d1, 0x86d2, 0x86d5, 0x86d7, 0x86da, 0x86dc,
+ 0x86e0, 0x86e3, 0x86e5, 0x86e7, 0x8688, 0x86fa, 0x86fc, 0x86fd,
+ 0x8704, 0x8705, 0x8707, 0x870b, 0x870e, 0x870f, 0x8710, 0x8713,
+ 0x8714, 0x8719, 0x871e, 0x871f, 0x8721, 0x8723,
+ /* 0x5b */
+ 0x8728, 0x872e, 0x872f, 0x8731, 0x8732, 0x8739, 0x873a, 0x873c,
+ 0x873d, 0x873e, 0x8740, 0x8743, 0x8745, 0x874d, 0x8758, 0x875d,
+ 0x8761, 0x8764, 0x8765, 0x876f, 0x8771, 0x8772, 0x877b, 0x8783,
+ 0x8784, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x878b, 0x878c,
+ 0x8790, 0x8793, 0x8795, 0x8797, 0x8798, 0x8799, 0x879e, 0x87a0,
+ 0x87a3, 0x87a7, 0x87ac, 0x87ad, 0x87ae, 0x87b1, 0x87b5, 0x87be,
+ 0x87bf, 0x87c1, 0x87c8, 0x87c9, 0x87ca, 0x87ce, 0x87d5, 0x87d6,
+ 0x87d9, 0x87da, 0x87dc, 0x87df, 0x87e2, 0x87e3, 0x87e4, 0x87ea,
+ 0x87eb, 0x87ed, 0x87f1, 0x87f3, 0x87f8, 0x87fa, 0x87ff, 0x8801,
+ 0x8803, 0x8806, 0x8809, 0x880a, 0x880b, 0x8810, 0x8819, 0x8812,
+ 0x8813, 0x8814, 0x8818, 0x881a, 0x881b, 0x881c, 0x881e, 0x881f,
+ 0x8828, 0x882d, 0x882e, 0x8830, 0x8832, 0x8835,
+ /* 0x5c */
+ 0x883a, 0x883c, 0x8841, 0x8843, 0x8845, 0x8848, 0x8849, 0x884a,
+ 0x884b, 0x884e, 0x8851, 0x8855, 0x8856, 0x8858, 0x885a, 0x885c,
+ 0x885f, 0x8860, 0x8864, 0x8869, 0x8871, 0x8879, 0x887b, 0x8880,
+ 0x8898, 0x889a, 0x889b, 0x889c, 0x889f, 0x88a0, 0x88a8, 0x88aa,
+ 0x88ba, 0x88bd, 0x88be, 0x88c0, 0x88ca, 0x88cb, 0x88cc, 0x88cd,
+ 0x88ce, 0x88d1, 0x88d2, 0x88d3, 0x88db, 0x88de, 0x88e7, 0x88ef,
+ 0x88f0, 0x88f1, 0x88f5, 0x88f7, 0x8901, 0x8906, 0x890d, 0x890e,
+ 0x890f, 0x8915, 0x8916, 0x8918, 0x8919, 0x891a, 0x891c, 0x8920,
+ 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932, 0x8935, 0x8939,
+ 0x893a, 0x893e, 0x8940, 0x8942, 0x8945, 0x8946, 0x8949, 0x894f,
+ 0x8952, 0x8957, 0x895a, 0x895b, 0x895c, 0x8961, 0x8962, 0x8963,
+ 0x896b, 0x896e, 0x8970, 0x8973, 0x8975, 0x897a,
+ /* 0x5d */
+ 0x897b, 0x897c, 0x897d, 0x8989, 0x898d, 0x8990, 0x8994, 0x8995,
+ 0x899b, 0x899c, 0x899f, 0x89a0, 0x89a5, 0x89b0, 0x89b4, 0x89b5,
+ 0x89b6, 0x89b7, 0x89bc, 0x89d4, 0x89d5, 0x89d6, 0x89d7, 0x89d8,
+ 0x89e5, 0x89e9, 0x89eb, 0x89ed, 0x89f1, 0x89f3, 0x89f6, 0x89f9,
+ 0x89fd, 0x89ff, 0x8a04, 0x8a05, 0x8a07, 0x8a0f, 0x8a11, 0x8a12,
+ 0x8a14, 0x8a15, 0x8a1e, 0x8a20, 0x8a22, 0x8a24, 0x8a26, 0x8a2b,
+ 0x8a2c, 0x8a2f, 0x8a35, 0x8a37, 0x8a3d, 0x8a3e, 0x8a40, 0x8a43,
+ 0x8a45, 0x8a47, 0x8a49, 0x8a4d, 0x8a4e, 0x8a53, 0x8a56, 0x8a57,
+ 0x8a58, 0x8a5c, 0x8a5d, 0x8a61, 0x8a65, 0x8a67, 0x8a75, 0x8a76,
+ 0x8a77, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7e, 0x8a7f, 0x8a80, 0x8a83,
+ 0x8a86, 0x8a8b, 0x8a8f, 0x8a90, 0x8a92, 0x8a96, 0x8a97, 0x8a99,
+ 0x8a9f, 0x8aa7, 0x8aa9, 0x8aae, 0x8aaf, 0x8ab3,
+ /* 0x5e */
+ 0x8ab6, 0x8ab7, 0x8abb, 0x8abe, 0x8ac3, 0x8ac6, 0x8ac8, 0x8ac9,
+ 0x8aca, 0x8ad1, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad7, 0x8add, 0x8adf,
+ 0x8aec, 0x8af0, 0x8af4, 0x8af5, 0x8af6, 0x8afc, 0x8aff, 0x8b05,
+ 0x8b06, 0x8b0b, 0x8b11, 0x8b1c, 0x8b1e, 0x8b1f, 0x8b0a, 0x8b2d,
+ 0x8b30, 0x8b37, 0x8b3c, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46,
+ 0x8b48, 0x8b52, 0x8b53, 0x8b54, 0x8b59, 0x8b4d, 0x8b5e, 0x8b63,
+ 0x8b6d, 0x8b76, 0x8b78, 0x8b79, 0x8b7c, 0x8b7e, 0x8b81, 0x8b84,
+ 0x8b85, 0x8b8b, 0x8b8d, 0x8b8f, 0x8b94, 0x8b95, 0x8b9c, 0x8b9e,
+ 0x8b9f, 0x8c38, 0x8c39, 0x8c3d, 0x8c3e, 0x8c45, 0x8c47, 0x8c49,
+ 0x8c4b, 0x8c4f, 0x8c51, 0x8c53, 0x8c54, 0x8c57, 0x8c58, 0x8c5b,
+ 0x8c5d, 0x8c59, 0x8c63, 0x8c64, 0x8c66, 0x8c68, 0x8c69, 0x8c6d,
+ 0x8c73, 0x8c75, 0x8c76, 0x8c7b, 0x8c7e, 0x8c86,
+ /* 0x5f */
+ 0x8c87, 0x8c8b, 0x8c90, 0x8c92, 0x8c93, 0x8c99, 0x8c9b, 0x8c9c,
+ 0x8ca4, 0x8cb9, 0x8cba, 0x8cc5, 0x8cc6, 0x8cc9, 0x8ccb, 0x8ccf,
+ 0x8cd6, 0x8cd5, 0x8cd9, 0x8cdd, 0x8ce1, 0x8ce8, 0x8cec, 0x8cef,
+ 0x8cf0, 0x8cf2, 0x8cf5, 0x8cf7, 0x8cf8, 0x8cfe, 0x8cff, 0x8d01,
+ 0x8d03, 0x8d09, 0x8d12, 0x8d17, 0x8d1b, 0x8d65, 0x8d69, 0x8d6c,
+ 0x8d6e, 0x8d7f, 0x8d82, 0x8d84, 0x8d88, 0x8d8d, 0x8d90, 0x8d91,
+ 0x8d95, 0x8d9e, 0x8d9f, 0x8da0, 0x8da6, 0x8dab, 0x8dac, 0x8daf,
+ 0x8db2, 0x8db5, 0x8db7, 0x8db9, 0x8dbb, 0x8dc0, 0x8dc5, 0x8dc6,
+ 0x8dc7, 0x8dc8, 0x8dca, 0x8dce, 0x8dd1, 0x8dd4, 0x8dd5, 0x8dd7,
+ 0x8dd9, 0x8de4, 0x8de5, 0x8de7, 0x8dec, 0x8df0, 0x8dbc, 0x8df1,
+ 0x8df2, 0x8df4, 0x8dfd, 0x8e01, 0x8e04, 0x8e05, 0x8e06, 0x8e0b,
+ 0x8e11, 0x8e14, 0x8e16, 0x8e20, 0x8e21, 0x8e22,
+ /* 0x60 */
+ 0x8e23, 0x8e26, 0x8e27, 0x8e31, 0x8e33, 0x8e36, 0x8e37, 0x8e38,
+ 0x8e39, 0x8e3d, 0x8e40, 0x8e41, 0x8e4b, 0x8e4d, 0x8e4e, 0x8e4f,
+ 0x8e54, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e61, 0x8e62, 0x8e69,
+ 0x8e6c, 0x8e6d, 0x8e6f, 0x8e70, 0x8e71, 0x8e79, 0x8e7a, 0x8e7b,
+ 0x8e82, 0x8e83, 0x8e89, 0x8e90, 0x8e92, 0x8e95, 0x8e9a, 0x8e9b,
+ 0x8e9d, 0x8e9e, 0x8ea2, 0x8ea7, 0x8ea9, 0x8ead, 0x8eae, 0x8eb3,
+ 0x8eb5, 0x8eba, 0x8ebb, 0x8ec0, 0x8ec1, 0x8ec3, 0x8ec4, 0x8ec7,
+ 0x8ecf, 0x8ed1, 0x8ed4, 0x8edc, 0x8ee8, 0x8eee, 0x8ef0, 0x8ef1,
+ 0x8ef7, 0x8ef9, 0x8efa, 0x8eed, 0x8f00, 0x8f02, 0x8f07, 0x8f08,
+ 0x8f0f, 0x8f10, 0x8f16, 0x8f17, 0x8f18, 0x8f1e, 0x8f20, 0x8f21,
+ 0x8f23, 0x8f25, 0x8f27, 0x8f28, 0x8f2c, 0x8f2d, 0x8f2e, 0x8f34,
+ 0x8f35, 0x8f36, 0x8f37, 0x8f3a, 0x8f40, 0x8f41,
+ /* 0x61 */
+ 0x8f43, 0x8f47, 0x8f4f, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55,
+ 0x8f58, 0x8f5d, 0x8f5e, 0x8f65, 0x8f9d, 0x8fa0, 0x8fa1, 0x8fa4,
+ 0x8fa5, 0x8fa6, 0x8fb5, 0x8fb6, 0x8fb8, 0x8fbe, 0x8fc0, 0x8fc1,
+ 0x8fc6, 0x8fca, 0x8fcb, 0x8fcd, 0x8fd0, 0x8fd2, 0x8fd3, 0x8fd5,
+ 0x8fe0, 0x8fe3, 0x8fe4, 0x8fe8, 0x8fee, 0x8ff1, 0x8ff5, 0x8ff6,
+ 0x8ffb, 0x8ffe, 0x9002, 0x9004, 0x9008, 0x900c, 0x9018, 0x901b,
+ 0x9028, 0x9029, 0x902f, 0x902a, 0x902c, 0x902d, 0x9033, 0x9034,
+ 0x9037, 0x903f, 0x9043, 0x9044, 0x904c, 0x905b, 0x905d, 0x9062,
+ 0x9066, 0x9067, 0x906c, 0x9070, 0x9074, 0x9079, 0x9085, 0x9088,
+ 0x908b, 0x908c, 0x908e, 0x9090, 0x9095, 0x9097, 0x9098, 0x9099,
+ 0x909b, 0x90a0, 0x90a1, 0x90a2, 0x90a5, 0x90b0, 0x90b2, 0x90b3,
+ 0x90b4, 0x90b6, 0x90bd, 0x90cc, 0x90be, 0x90c3,
+ /* 0x62 */
+ 0x90c4, 0x90c5, 0x90c7, 0x90c8, 0x90d5, 0x90d7, 0x90d8, 0x90d9,
+ 0x90dc, 0x90dd, 0x90df, 0x90e5, 0x90d2, 0x90f6, 0x90eb, 0x90ef,
+ 0x90f0, 0x90f4, 0x90fe, 0x90ff, 0x9100, 0x9104, 0x9105, 0x9106,
+ 0x9108, 0x910d, 0x9110, 0x9114, 0x9116, 0x9117, 0x9118, 0x911a,
+ 0x911c, 0x911e, 0x9120, 0x9125, 0x9122, 0x9123, 0x9127, 0x9129,
+ 0x912e, 0x912f, 0x9131, 0x9134, 0x9136, 0x9137, 0x9139, 0x913a,
+ 0x913c, 0x913d, 0x9143, 0x9147, 0x9148, 0x914f, 0x9153, 0x9157,
+ 0x9159, 0x915a, 0x915b, 0x9161, 0x9164, 0x9167, 0x916d, 0x9174,
+ 0x9179, 0x917a, 0x917b, 0x9181, 0x9183, 0x9185, 0x9186, 0x918a,
+ 0x918e, 0x9191, 0x9193, 0x9194, 0x9195, 0x9198, 0x919e, 0x91a1,
+ 0x91a6, 0x91a8, 0x91ac, 0x91ad, 0x91ae, 0x91b0, 0x91b1, 0x91b2,
+ 0x91b3, 0x91b6, 0x91bb, 0x91bc, 0x91bd, 0x91bf,
+ /* 0x63 */
+ 0x91c2, 0x91c3, 0x91c5, 0x91d3, 0x91d4, 0x91d7, 0x91d9, 0x91da,
+ 0x91de, 0x91e4, 0x91e5, 0x91e9, 0x91ea, 0x91ec, 0x91ed, 0x91ee,
+ 0x91ef, 0x91f0, 0x91f1, 0x91f7, 0x91f9, 0x91fb, 0x91fd, 0x9200,
+ 0x9201, 0x9204, 0x9205, 0x9206, 0x9207, 0x9209, 0x920a, 0x920c,
+ 0x9210, 0x9212, 0x9213, 0x9216, 0x9218, 0x921c, 0x921d, 0x9223,
+ 0x9224, 0x9225, 0x9226, 0x9228, 0x922e, 0x922f, 0x9230, 0x9233,
+ 0x9235, 0x9236, 0x9238, 0x9239, 0x923a, 0x923c, 0x923e, 0x9240,
+ 0x9242, 0x9243, 0x9246, 0x9247, 0x924a, 0x924d, 0x924e, 0x924f,
+ 0x9251, 0x9258, 0x9259, 0x925c, 0x925d, 0x9260, 0x9261, 0x9265,
+ 0x9267, 0x9268, 0x9269, 0x926e, 0x926f, 0x9270, 0x9275, 0x9276,
+ 0x9277, 0x9278, 0x9279, 0x927b, 0x927c, 0x927d, 0x927f, 0x9288,
+ 0x9289, 0x928a, 0x928d, 0x928e, 0x9292, 0x9297,
+ /* 0x64 */
+ 0x9299, 0x929f, 0x92a0, 0x92a4, 0x92a5, 0x92a7, 0x92a8, 0x92ab,
+ 0x92af, 0x92b2, 0x92b6, 0x92b8, 0x92ba, 0x92bb, 0x92bc, 0x92bd,
+ 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c5, 0x92c6, 0x92c7,
+ 0x92c8, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92d0, 0x92d3, 0x92d5,
+ 0x92d7, 0x92d8, 0x92d9, 0x92dc, 0x92dd, 0x92df, 0x92e0, 0x92e1,
+ 0x92e3, 0x92e5, 0x92e7, 0x92e8, 0x92ec, 0x92ee, 0x92f0, 0x92f9,
+ 0x92fb, 0x92ff, 0x9300, 0x9302, 0x9308, 0x930d, 0x9311, 0x9314,
+ 0x9315, 0x931c, 0x931d, 0x931e, 0x931f, 0x9321, 0x9324, 0x9325,
+ 0x9327, 0x9329, 0x932a, 0x9333, 0x9334, 0x9336, 0x9337, 0x9347,
+ 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, 0x9357, 0x9358,
+ 0x935a, 0x935e, 0x9364, 0x9365, 0x9367, 0x9369, 0x936a, 0x936d,
+ 0x936f, 0x9370, 0x9371, 0x9373, 0x9374, 0x9376,
+ /* 0x65 */
+ 0x937a, 0x937d, 0x937f, 0x9380, 0x9381, 0x9382, 0x9388, 0x938a,
+ 0x938b, 0x938d, 0x938f, 0x9392, 0x9395, 0x9398, 0x939b, 0x939e,
+ 0x93a1, 0x93a3, 0x93a4, 0x93a6, 0x93a8, 0x93ab, 0x93b4, 0x93b5,
+ 0x93b6, 0x93ba, 0x93a9, 0x93c1, 0x93c4, 0x93c5, 0x93c6, 0x93c7,
+ 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93d3, 0x93d9, 0x93dc,
+ 0x93de, 0x93df, 0x93e2, 0x93e6, 0x93e7, 0x93f9, 0x93f7, 0x93f8,
+ 0x93fa, 0x93fb, 0x93fd, 0x9401, 0x9402, 0x9404, 0x9408, 0x9409,
+ 0x940d, 0x940e, 0x940f, 0x9415, 0x9416, 0x9417, 0x941f, 0x942e,
+ 0x942f, 0x9431, 0x9432, 0x9433, 0x9434, 0x943b, 0x943f, 0x943d,
+ 0x9443, 0x9445, 0x9448, 0x944a, 0x944c, 0x9455, 0x9459, 0x945c,
+ 0x945f, 0x9461, 0x9463, 0x9468, 0x946b, 0x946d, 0x946e, 0x946f,
+ 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, 0x9579,
+ /* 0x66 */
+ 0x957e, 0x9584, 0x9588, 0x958c, 0x958d, 0x958e, 0x959d, 0x959e,
+ 0x959f, 0x95a1, 0x95a6, 0x95a9, 0x95ab, 0x95ac, 0x95b4, 0x95b6,
+ 0x95ba, 0x95bd, 0x95bf, 0x95c6, 0x95c8, 0x95c9, 0x95cb, 0x95d0,
+ 0x95d1, 0x95d2, 0x95d3, 0x95d9, 0x95da, 0x95dd, 0x95de, 0x95df,
+ 0x95e0, 0x95e4, 0x95e6, 0x961d, 0x961e, 0x9622, 0x9624, 0x9625,
+ 0x9626, 0x962c, 0x9631, 0x9633, 0x9637, 0x9638, 0x9639, 0x963a,
+ 0x963c, 0x963d, 0x9641, 0x9652, 0x9654, 0x9656, 0x9657, 0x9658,
+ 0x9661, 0x966e, 0x9674, 0x967b, 0x967c, 0x967e, 0x967f, 0x9681,
+ 0x9682, 0x9683, 0x9684, 0x9689, 0x9691, 0x9696, 0x969a, 0x969d,
+ 0x969f, 0x96a4, 0x96a5, 0x96a6, 0x96a9, 0x96ae, 0x96af, 0x96b3,
+ 0x96ba, 0x96ca, 0x96d2, 0x5db2, 0x96d8, 0x96da, 0x96dd, 0x96de,
+ 0x96df, 0x96e9, 0x96ef, 0x96f1, 0x96fa, 0x9702,
+ /* 0x67 */
+ 0x9703, 0x9705, 0x9709, 0x971a, 0x971b, 0x971d, 0x9721, 0x9722,
+ 0x9723, 0x9728, 0x9731, 0x9733, 0x9741, 0x9743, 0x974a, 0x974e,
+ 0x974f, 0x9755, 0x9757, 0x9758, 0x975a, 0x975b, 0x9763, 0x9767,
+ 0x976a, 0x976e, 0x9773, 0x9776, 0x9777, 0x9778, 0x977b, 0x977d,
+ 0x977f, 0x9780, 0x9789, 0x9795, 0x9796, 0x9797, 0x9799, 0x979a,
+ 0x979e, 0x979f, 0x97a2, 0x97ac, 0x97ae, 0x97b1, 0x97b2, 0x97b5,
+ 0x97b6, 0x97b8, 0x97b9, 0x97ba, 0x97bc, 0x97be, 0x97bf, 0x97c1,
+ 0x97c4, 0x97c5, 0x97c7, 0x97c9, 0x97ca, 0x97cc, 0x97cd, 0x97ce,
+ 0x97d0, 0x97d1, 0x97d4, 0x97d7, 0x97d8, 0x97d9, 0x97dd, 0x97de,
+ 0x97e0, 0x97db, 0x97e1, 0x97e4, 0x97ef, 0x97f1, 0x97f4, 0x97f7,
+ 0x97f8, 0x97fa, 0x9807, 0x980a, 0x9819, 0x980d, 0x980e, 0x9814,
+ 0x9816, 0x981c, 0x981e, 0x9820, 0x9823, 0x9826,
+ /* 0x68 */
+ 0x982b, 0x982e, 0x982f, 0x9830, 0x9832, 0x9833, 0x9835, 0x9825,
+ 0x983e, 0x9844, 0x9847, 0x984a, 0x9851, 0x9852, 0x9853, 0x9856,
+ 0x9857, 0x9859, 0x985a, 0x9862, 0x9863, 0x9865, 0x9866, 0x986a,
+ 0x986c, 0x98ab, 0x98ad, 0x98ae, 0x98b0, 0x98b4, 0x98b7, 0x98b8,
+ 0x98ba, 0x98bb, 0x98bf, 0x98c2, 0x98c5, 0x98c8, 0x98cc, 0x98e1,
+ 0x98e3, 0x98e5, 0x98e6, 0x98e7, 0x98ea, 0x98f3, 0x98f6, 0x9902,
+ 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917, 0x991a, 0x991b,
+ 0x991c, 0x991f, 0x9922, 0x9926, 0x9927, 0x992b, 0x9931, 0x9932,
+ 0x9933, 0x9934, 0x9935, 0x9939, 0x993a, 0x993b, 0x993c, 0x9940,
+ 0x9941, 0x9946, 0x9947, 0x9948, 0x994d, 0x994e, 0x9954, 0x9958,
+ 0x9959, 0x995b, 0x995c, 0x995e, 0x995f, 0x9960, 0x999b, 0x999d,
+ 0x999f, 0x99a6, 0x99b0, 0x99b1, 0x99b2, 0x99b5,
+ /* 0x69 */
+ 0x99b9, 0x99ba, 0x99bd, 0x99bf, 0x99c3, 0x99c9, 0x99d3, 0x99d4,
+ 0x99d9, 0x99da, 0x99dc, 0x99de, 0x99e7, 0x99ea, 0x99eb, 0x99ec,
+ 0x99f0, 0x99f4, 0x99f5, 0x99f9, 0x99fd, 0x99fe, 0x9a02, 0x9a03,
+ 0x9a04, 0x9a0b, 0x9a0c, 0x9a10, 0x9a11, 0x9a16, 0x9a1e, 0x9a20,
+ 0x9a22, 0x9a23, 0x9a24, 0x9a27, 0x9a2d, 0x9a2e, 0x9a33, 0x9a35,
+ 0x9a36, 0x9a38, 0x9a47, 0x9a41, 0x9a44, 0x9a4a, 0x9a4b, 0x9a4c,
+ 0x9a4e, 0x9a51, 0x9a54, 0x9a56, 0x9a5d, 0x9aaa, 0x9aac, 0x9aae,
+ 0x9aaf, 0x9ab2, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab9, 0x9abb, 0x9abe,
+ 0x9abf, 0x9ac1, 0x9ac3, 0x9ac6, 0x9ac8, 0x9ace, 0x9ad0, 0x9ad2,
+ 0x9ad5, 0x9ad6, 0x9ad7, 0x9adb, 0x9adc, 0x9ae0, 0x9ae4, 0x9ae5,
+ 0x9ae7, 0x9ae9, 0x9aec, 0x9af2, 0x9af3, 0x9af5, 0x9af9, 0x9afa,
+ 0x9afd, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b03,
+ /* 0x6a */
+ 0x9b04, 0x9b05, 0x9b08, 0x9b09, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e,
+ 0x9b10, 0x9b12, 0x9b16, 0x9b19, 0x9b1b, 0x9b1c, 0x9b20, 0x9b26,
+ 0x9b2b, 0x9b2d, 0x9b33, 0x9b34, 0x9b35, 0x9b37, 0x9b39, 0x9b3a,
+ 0x9b3d, 0x9b48, 0x9b4b, 0x9b4c, 0x9b55, 0x9b56, 0x9b57, 0x9b5b,
+ 0x9b5e, 0x9b61, 0x9b63, 0x9b65, 0x9b66, 0x9b68, 0x9b6a, 0x9b6b,
+ 0x9b6c, 0x9b6d, 0x9b6e, 0x9b73, 0x9b75, 0x9b77, 0x9b78, 0x9b79,
+ 0x9b7f, 0x9b80, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b89, 0x9b8a,
+ 0x9b8b, 0x9b8d, 0x9b8f, 0x9b90, 0x9b94, 0x9b9a, 0x9b9d, 0x9b9e,
+ 0x9ba6, 0x9ba7, 0x9ba9, 0x9bac, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb7,
+ 0x9bb8, 0x9bbb, 0x9bbc, 0x9bbe, 0x9bbf, 0x9bc1, 0x9bc7, 0x9bc8,
+ 0x9bce, 0x9bd0, 0x9bd7, 0x9bd8, 0x9bdd, 0x9bdf, 0x9be5, 0x9be7,
+ 0x9bea, 0x9beb, 0x9bef, 0x9bf3, 0x9bf7, 0x9bf8,
+ /* 0x6b */
+ 0x9bf9, 0x9bfa, 0x9bfd, 0x9bff, 0x9c00, 0x9c02, 0x9c0b, 0x9c0f,
+ 0x9c11, 0x9c16, 0x9c18, 0x9c19, 0x9c1a, 0x9c1c, 0x9c1e, 0x9c22,
+ 0x9c23, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c31, 0x9c35,
+ 0x9c36, 0x9c37, 0x9c3d, 0x9c41, 0x9c43, 0x9c44, 0x9c45, 0x9c49,
+ 0x9c4a, 0x9c4e, 0x9c4f, 0x9c50, 0x9c53, 0x9c54, 0x9c56, 0x9c58,
+ 0x9c5b, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c63, 0x9c69, 0x9c6a, 0x9c5c,
+ 0x9c6b, 0x9c68, 0x9c6e, 0x9c70, 0x9c72, 0x9c75, 0x9c77, 0x9c7b,
+ 0x9ce6, 0x9cf2, 0x9cf7, 0x9cf9, 0x9d0b, 0x9d02, 0x9d11, 0x9d17,
+ 0x9d18, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d2f, 0x9d30, 0x9d32, 0x9d33,
+ 0x9d34, 0x9d3a, 0x9d3c, 0x9d45, 0x9d3d, 0x9d42, 0x9d43, 0x9d47,
+ 0x9d4a, 0x9d53, 0x9d54, 0x9d5f, 0x9d63, 0x9d62, 0x9d65, 0x9d69,
+ 0x9d6a, 0x9d6b, 0x9d70, 0x9d76, 0x9d77, 0x9d7b,
+ /* 0x6c */
+ 0x9d7c, 0x9d7e, 0x9d83, 0x9d84, 0x9d86, 0x9d8a, 0x9d8d, 0x9d8e,
+ 0x9d92, 0x9d93, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9da1, 0x9daa,
+ 0x9dac, 0x9dae, 0x9db1, 0x9db5, 0x9db9, 0x9dbc, 0x9dbf, 0x9dc3,
+ 0x9dc7, 0x9dc9, 0x9dca, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dda,
+ 0x9dde, 0x9ddf, 0x9de0, 0x9de5, 0x9de7, 0x9de9, 0x9deb, 0x9dee,
+ 0x9df0, 0x9df3, 0x9df4, 0x9dfe, 0x9e0a, 0x9e02, 0x9e07, 0x9e0e,
+ 0x9e10, 0x9e11, 0x9e12, 0x9e15, 0x9e16, 0x9e19, 0x9e1c, 0x9e1d,
+ 0x9e7a, 0x9e7b, 0x9e7c, 0x9e80, 0x9e82, 0x9e83, 0x9e84, 0x9e85,
+ 0x9e87, 0x9e8e, 0x9e8f, 0x9e96, 0x9e98, 0x9e9b, 0x9e9e, 0x9ea4,
+ 0x9ea8, 0x9eac, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb3, 0x9eb4, 0x9eb5,
+ 0x9ec6, 0x9ec8, 0x9ecb, 0x9ed5, 0x9edf, 0x9ee4, 0x9ee7, 0x9eec,
+ 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef5,
+ /* 0x6d */
+ 0x9ef8, 0x9eff, 0x9f02, 0x9f03, 0x9f09, 0x9f0f, 0x9f10, 0x9f11,
+ 0x9f12, 0x9f14, 0x9f16, 0x9f17, 0x9f19, 0x9f1a, 0x9f1b, 0x9f1f,
+ 0x9f22, 0x9f26, 0x9f2a, 0x9f2b, 0x9f2f, 0x9f31, 0x9f32, 0x9f34,
+ 0x9f37, 0x9f39, 0x9f3a, 0x9f3c, 0x9f3d, 0x9f3f, 0x9f41, 0x9f43,
+ 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f53, 0x9f55, 0x9f56, 0x9f57,
+ 0x9f58, 0x9f5a, 0x9f5d, 0x9f5e, 0x9f68, 0x9f69, 0x9f6d, 0x9f6e,
+ 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f75, 0x9f7a, 0x9f7d, 0x9f8f,
+ 0x9f90, 0x9f91, 0x9f92, 0x9f94, 0x9f96, 0x9f97, 0x9f9e, 0x9fa1,
+ 0x9fa2, 0x9fa3, 0x9fa5,
+};
+
+static int
+jisx0212_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 == 0x22) || (c1 >= 0x26 && c1 <= 0x27) || (c1 >= 0x29 && c1 <= 0x2b) || (c1 >= 0x30 && c1 <= 0x6d)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 470) {
+ if (i < 175)
+ wc = jisx0212_2uni_page22[i-94];
+ } else if (i < 752) {
+ if (i < 658)
+ wc = jisx0212_2uni_page26[i-470];
+ } else if (i < 1410) {
+ if (i < 1027)
+ wc = jisx0212_2uni_page29[i-752];
+ } else {
+ if (i < 7211)
+ wc = jisx0212_2uni_page30[i-1410];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short jisx0212_2charset[6067] = {
+ 0x2237, 0x2242, 0x2270, 0x2243, 0x226d, 0x226c, 0x226e, 0x2234,
+ 0x2231, 0x226b, 0x2244, 0x2a22, 0x2a21, 0x2a24, 0x2a2a, 0x2a23,
+ 0x2a29, 0x2921, 0x2a2e, 0x2a32, 0x2a31, 0x2a34, 0x2a33, 0x2a40,
+ 0x2a3f, 0x2a42, 0x2a41, 0x2a50, 0x2a52, 0x2a51, 0x2a54, 0x2a58,
+ 0x2a53, 0x292c, 0x2a63, 0x2a62, 0x2a65, 0x2a64, 0x2a72, 0x2930,
+ 0x294e, 0x2b22, 0x2b21, 0x2b24, 0x2b2a, 0x2b23, 0x2b29, 0x2941,
+ 0x2b2e, 0x2b32, 0x2b31, 0x2b34, 0x2b33, 0x2b40, 0x2b3f, 0x2b42,
+ 0x2b41, 0x2943, 0x2b50, 0x2b52, 0x2b51, 0x2b54, 0x2b58, 0x2b53,
+ 0x294c, 0x2b63, 0x2b62, 0x2b65, 0x2b64, 0x2b72, 0x2950, 0x2b73,
+ 0x2a27, 0x2b27, 0x2a25, 0x2b25, 0x2a28, 0x2b28, 0x2a2b, 0x2b2b,
+ 0x2a2c, 0x2b2c, 0x2a2f, 0x2b2f, 0x2a2d, 0x2b2d, 0x2a30, 0x2b30,
+ 0x2922, 0x2942, 0x2a37, 0x2b37, 0x2a36, 0x2b36, 0x2a38, 0x2b38,
+ 0x2a35, 0x2b35, 0x2a3a, 0x2b3a, 0x2a3b, 0x2b3b, 0x2a3d, 0x2b3d,
+ 0x2a3c, 0x2a3e, 0x2b3e, 0x2924, 0x2944, 0x2a47, 0x2b47, 0x2a45,
+ 0x2b45, 0x2a46, 0x2b46, 0x2a44, 0x2945, 0x2926, 0x2946, 0x2a48,
+ 0x2b48, 0x2a49, 0x2b49, 0x2947, 0x2a4a, 0x2b4a, 0x2a4c, 0x2b4c,
+ 0x2a4b, 0x2b4b, 0x2929, 0x2949, 0x2928, 0x2948, 0x2a4d, 0x2b4d,
+ 0x2a4f, 0x2b4f, 0x2a4e, 0x2b4e, 0x294a, 0x292b, 0x294b, 0x2a57,
+ 0x2b57, 0x2a56, 0x2b56, 0x292d, 0x294d, 0x2a59, 0x2b59, 0x2a5b,
+ 0x2b5b, 0x2a5a, 0x2b5a, 0x2a5c, 0x2b5c, 0x2a5d, 0x2b5d, 0x2a5f,
+ 0x2b5f, 0x2a5e, 0x2b5e, 0x2a61, 0x2b61, 0x2a60, 0x2b60, 0x292f,
+ 0x294f, 0x2a6c, 0x2b6c, 0x2a69, 0x2b69, 0x2a66, 0x2b66, 0x2a6b,
+ 0x2b6b, 0x2a68, 0x2b68, 0x2a6a, 0x2b6a, 0x2a71, 0x2b71, 0x2a74,
+ 0x2b74, 0x2a73, 0x2a75, 0x2b75, 0x2a77, 0x2b77, 0x2a76, 0x2b76,
+ 0x2a26, 0x2b26, 0x2a43, 0x2b43, 0x2a55, 0x2b55, 0x2a67, 0x2b67,
+ 0x2a70, 0x2b70, 0x2a6d, 0x2b6d, 0x2a6f, 0x2b6f, 0x2a6e, 0x2b6e,
+ 0x2b39, 0x2230, 0x222f, 0x2232, 0x2236, 0x2235, 0x2233, 0x2238,
+ 0x2239, 0x2661, 0x2662, 0x2663, 0x2664, 0x2667, 0x2669, 0x266c,
+ 0x2676, 0x2665, 0x266a, 0x2671, 0x2672, 0x2673, 0x2674, 0x267b,
+ 0x2678, 0x2675, 0x267a, 0x2677, 0x2679, 0x267c, 0x2742, 0x2743,
+ 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274a, 0x274b,
+ 0x274c, 0x274d, 0x274e, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776,
+ 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e,
+ 0x2271, 0x226f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026,
+ 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e,
+ 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
+ 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e,
+ 0x303f, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
+ 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
+ 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
+ 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
+ 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
+ 0x3070, 0x305f, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+ 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130,
+ 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
+ 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
+ 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
+ 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
+ 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
+ 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x3176, 0x315f,
+ 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167,
+ 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f,
+ 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3177, 0x3178,
+ 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x3221, 0x3222,
+ 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x322a,
+ 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x3230, 0x3231, 0x3232,
+ 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, 0x3238, 0x3239, 0x323a,
+ 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, 0x3240, 0x3241, 0x3242,
+ 0x3243, 0x3244, 0x3245, 0x3251, 0x3246, 0x3247, 0x3248, 0x3249,
+ 0x324a, 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 0x3250, 0x3252,
+ 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, 0x3259, 0x325a,
+ 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, 0x3260, 0x3261, 0x3262,
+ 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326a,
+ 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, 0x3270, 0x3271, 0x3272,
+ 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, 0x3278, 0x3279, 0x327a,
+ 0x327b, 0x327c, 0x327d, 0x327e, 0x3321, 0x3322, 0x3323, 0x3324,
+ 0x3325, 0x3326, 0x3327, 0x3328, 0x3329, 0x332a, 0x332b, 0x332c,
+ 0x332d, 0x332e, 0x332f, 0x3330, 0x3331, 0x3332, 0x3333, 0x3334,
+ 0x3335, 0x3336, 0x3337, 0x3338, 0x3339, 0x333a, 0x333b, 0x333c,
+ 0x333d, 0x333e, 0x333f, 0x3340, 0x3341, 0x3342, 0x3343, 0x3344,
+ 0x3345, 0x3346, 0x3347, 0x3348, 0x3349, 0x334a, 0x334b, 0x334c,
+ 0x334d, 0x334e, 0x334f, 0x3350, 0x3351, 0x3352, 0x3353, 0x3354,
+ 0x3355, 0x3356, 0x3357, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c,
+ 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364,
+ 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c,
+ 0x336d, 0x336e, 0x336f, 0x3370, 0x3371, 0x3372, 0x3373, 0x3374,
+ 0x3375, 0x3376, 0x3377, 0x3378, 0x3379, 0x337a, 0x337b, 0x337c,
+ 0x337d, 0x337e, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426,
+ 0x3427, 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e,
+ 0x342f, 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436,
+ 0x3438, 0x3437, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e,
+ 0x343f, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446,
+ 0x3447, 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e,
+ 0x344f, 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456,
+ 0x3457, 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e,
+ 0x345f, 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466,
+ 0x3467, 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e,
+ 0x346f, 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476,
+ 0x3477, 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e,
+ 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528,
+ 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, 0x3530,
+ 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538,
+ 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, 0x3540,
+ 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, 0x3548,
+ 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, 0x3550,
+ 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, 0x3558,
+ 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, 0x3560,
+ 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568,
+ 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570,
+ 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578,
+ 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x3621, 0x3622,
+ 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, 0x3628, 0x3629, 0x362a,
+ 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, 0x3630, 0x3631, 0x3632,
+ 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, 0x363a,
+ 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, 0x3640, 0x3641, 0x3642,
+ 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364a,
+ 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, 0x3650, 0x3651, 0x3652,
+ 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365a,
+ 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, 0x3660, 0x3661, 0x3662,
+ 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, 0x3668, 0x3669, 0x366a,
+ 0x366b, 0x366c, 0x366d, 0x3670, 0x3671, 0x366e, 0x366f, 0x3672,
+ 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, 0x3679, 0x367a,
+ 0x367b, 0x367d, 0x367e, 0x367c, 0x3721, 0x3722, 0x3723, 0x3724,
+ 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372a, 0x372b, 0x372c,
+ 0x372d, 0x372e, 0x372f, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
+ 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
+ 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
+ 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
+ 0x374d, 0x374e, 0x374f, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754,
+ 0x3755, 0x3756, 0x3757, 0x3760, 0x3758, 0x3759, 0x375a, 0x375b,
+ 0x375c, 0x375d, 0x375e, 0x375f, 0x3761, 0x3762, 0x3763, 0x3764,
+ 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376a, 0x376b, 0x376c,
+ 0x376d, 0x377e, 0x376e, 0x376f, 0x3770, 0x3771, 0x3772, 0x3773,
+ 0x3774, 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377a, 0x377b,
+ 0x377c, 0x377d, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826,
+ 0x3827, 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e,
+ 0x382f, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836,
+ 0x3837, 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e,
+ 0x383f, 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846,
+ 0x3847, 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e,
+ 0x3850, 0x3851, 0x384f, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856,
+ 0x3857, 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e,
+ 0x385f, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3867,
+ 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e, 0x386f,
+ 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877,
+ 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e, 0x3921,
+ 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, 0x3928, 0x3929,
+ 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, 0x3930, 0x3931,
+ 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938, 0x3939,
+ 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, 0x3940, 0x3941,
+ 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948, 0x3949,
+ 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, 0x3950, 0x3951,
+ 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958, 0x3959,
+ 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, 0x3960, 0x3961,
+ 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, 0x3968, 0x3969,
+ 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, 0x3970, 0x3971,
+ 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978, 0x3979,
+ 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x3a21, 0x3a22, 0x3a23,
+ 0x3a24, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29, 0x3a2a, 0x3a2b,
+ 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a33, 0x3a34,
+ 0x3a35, 0x3a36, 0x3a37, 0x3a38, 0x3a32, 0x3a39, 0x3a3a, 0x3a3b,
+ 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, 0x3a40, 0x3a41, 0x3a42, 0x3a43,
+ 0x3a44, 0x3a45, 0x3a46, 0x3a47, 0x3a48, 0x3a49, 0x3a4a, 0x3a4b,
+ 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, 0x3a50, 0x3a51, 0x3a52, 0x3a53,
+ 0x3a54, 0x3a55, 0x3a56, 0x3a57, 0x3a58, 0x3a59, 0x3a5a, 0x3a5b,
+ 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, 0x3a60, 0x3a61, 0x3a62, 0x3a63,
+ 0x3a64, 0x3a65, 0x3a66, 0x3a67, 0x3a68, 0x3a69, 0x3a6a, 0x3a6b,
+ 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, 0x3a70, 0x3a71, 0x3a72, 0x3a73,
+ 0x3a74, 0x3a75, 0x3a76, 0x3a77, 0x3a78, 0x3a79, 0x3a7a, 0x3a7b,
+ 0x3a7c, 0x3a7d, 0x3a7e, 0x3b21, 0x3b22, 0x3b23, 0x3b24, 0x3b25,
+ 0x3b26, 0x3b27, 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c, 0x3b2d,
+ 0x3b2e, 0x3b2f, 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34, 0x3b35,
+ 0x3b36, 0x3b37, 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3d, 0x3b3c,
+ 0x3b3e, 0x3b3f, 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44, 0x3b45,
+ 0x3b47, 0x3b48, 0x3b49, 0x3b4a, 0x3b46, 0x3b4b, 0x3b4c, 0x3b4d,
+ 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b57, 0x3b55,
+ 0x3b54, 0x3b56, 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c, 0x3b5d,
+ 0x3b5e, 0x3b5f, 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64, 0x3b65,
+ 0x3b66, 0x3b67, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c, 0x3b6d,
+ 0x3b6e, 0x3b6f, 0x3b70, 0x3b71, 0x3b72, 0x6674, 0x3b73, 0x3b74,
+ 0x3b75, 0x3b76, 0x3b77, 0x3b78, 0x3b7a, 0x3b79, 0x3b7b, 0x3b7c,
+ 0x3b7d, 0x3b7e, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26,
+ 0x3c27, 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2e, 0x3c2d,
+ 0x3c2f, 0x3c30, 0x3c31, 0x3c34, 0x3c32, 0x3c33, 0x3c35, 0x3c36,
+ 0x3c37, 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e,
+ 0x3c3f, 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46,
+ 0x3c47, 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e,
+ 0x3c4f, 0x3c50, 0x3c52, 0x3c51, 0x3c53, 0x3c54, 0x3c55, 0x3c56,
+ 0x3c57, 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e,
+ 0x3c5f, 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66,
+ 0x3c67, 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e,
+ 0x3c6f, 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76,
+ 0x3c77, 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e,
+ 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, 0x3d28,
+ 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, 0x3d32,
+ 0x3d30, 0x3d31, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, 0x3d38,
+ 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40,
+ 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, 0x3d48,
+ 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, 0x3d50,
+ 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, 0x3d58,
+ 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, 0x3d60,
+ 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, 0x3d68,
+ 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, 0x3d70,
+ 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, 0x3d78,
+ 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3e21, 0x3e22,
+ 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x3e29, 0x3e2a,
+ 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, 0x3e30, 0x3e31, 0x3e32,
+ 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, 0x3e38, 0x3e39, 0x3e3a,
+ 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x3e41, 0x3e42,
+ 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, 0x3e48, 0x3e49, 0x3e4a,
+ 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, 0x3e50, 0x3e51, 0x3e52,
+ 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, 0x3e58, 0x3e59, 0x3e5a,
+ 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, 0x3e60, 0x3e61, 0x3e62,
+ 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, 0x3e68, 0x3e69, 0x3e6a,
+ 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, 0x3e70, 0x3e71, 0x3e72,
+ 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, 0x3e78, 0x3e79, 0x3e7a,
+ 0x3e7b, 0x3e7e, 0x3e7c, 0x3e7d, 0x3f21, 0x3f22, 0x3f23, 0x3f24,
+ 0x3f25, 0x3f26, 0x3f27, 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c,
+ 0x3f2d, 0x3f2e, 0x3f2f, 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34,
+ 0x3f35, 0x3f36, 0x3f37, 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c,
+ 0x3f3d, 0x3f3e, 0x3f3f, 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44,
+ 0x3f45, 0x3f46, 0x3f47, 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c,
+ 0x3f4d, 0x3f4e, 0x3f4f, 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54,
+ 0x3f55, 0x3f56, 0x3f57, 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c,
+ 0x3f5d, 0x3f5e, 0x3f5f, 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64,
+ 0x3f65, 0x3f66, 0x3f67, 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c,
+ 0x3f6d, 0x3f6e, 0x3f6f, 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74,
+ 0x3f75, 0x3f76, 0x3f77, 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c,
+ 0x3f7d, 0x3f7e, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026,
+ 0x4027, 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e,
+ 0x402f, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036,
+ 0x4037, 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e,
+ 0x403f, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046,
+ 0x4047, 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e,
+ 0x404f, 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056,
+ 0x4057, 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e,
+ 0x405f, 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066,
+ 0x4067, 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e,
+ 0x406f, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076,
+ 0x4077, 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e,
+ 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128,
+ 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, 0x4130,
+ 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138,
+ 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, 0x4140,
+ 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, 0x4148,
+ 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, 0x4150,
+ 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, 0x4158,
+ 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, 0x4160,
+ 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168,
+ 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, 0x4170,
+ 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178,
+ 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x4221, 0x4222,
+ 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a,
+ 0x422b, 0x422c, 0x422d, 0x422e, 0x4230, 0x422f, 0x4231, 0x4232,
+ 0x4233, 0x4234, 0x4235, 0x4237, 0x4236, 0x4238, 0x4239, 0x423a,
+ 0x423b, 0x423c, 0x423d, 0x423e, 0x4240, 0x4241, 0x4242, 0x4244,
+ 0x4245, 0x4247, 0x4248, 0x4249, 0x424a, 0x424c, 0x4243, 0x4246,
+ 0x424b, 0x424d, 0x424e, 0x424f, 0x4250, 0x4251, 0x4252, 0x4253,
+ 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a, 0x425b,
+ 0x425c, 0x425d, 0x425e, 0x425f, 0x4260, 0x4261, 0x4262, 0x4263,
+ 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269, 0x426a, 0x426b,
+ 0x426c, 0x426d, 0x423f, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272,
+ 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a,
+ 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324,
+ 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c,
+ 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334,
+ 0x4335, 0x4336, 0x4337, 0x4339, 0x433a, 0x433b, 0x433c, 0x433d,
+ 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345,
+ 0x4346, 0x4347, 0x4348, 0x4338, 0x434a, 0x434b, 0x434c, 0x434d,
+ 0x434f, 0x434e, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355,
+ 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x4349, 0x435c,
+ 0x435d, 0x435e, 0x435f, 0x4360, 0x4361, 0x4362, 0x4363, 0x4364,
+ 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436a, 0x436b, 0x436c,
+ 0x436d, 0x436e, 0x436f, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374,
+ 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437a, 0x437b, 0x437c,
+ 0x437d, 0x437e, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426,
+ 0x4427, 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e,
+ 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436,
+ 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e,
+ 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446,
+ 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e,
+ 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456,
+ 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e,
+ 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466,
+ 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e,
+ 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476,
+ 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e,
+ 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528,
+ 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, 0x4530,
+ 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538,
+ 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, 0x4540,
+ 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, 0x4548,
+ 0x4549, 0x454a, 0x454b, 0x454d, 0x454c, 0x454e, 0x454f, 0x4550,
+ 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, 0x4558,
+ 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, 0x4560,
+ 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, 0x4568,
+ 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, 0x4570,
+ 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578,
+ 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, 0x4622,
+ 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462a,
+ 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, 0x4632,
+ 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, 0x463a,
+ 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, 0x4642,
+ 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, 0x464a,
+ 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, 0x4652,
+ 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465a,
+ 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4736, 0x4661,
+ 0x4662, 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669,
+ 0x466a, 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671,
+ 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679,
+ 0x467a, 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723,
+ 0x4724, 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b,
+ 0x472c, 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733,
+ 0x4734, 0x4735, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, 0x473c,
+ 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, 0x4744,
+ 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, 0x474c,
+ 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, 0x4754,
+ 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, 0x475c,
+ 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, 0x4764,
+ 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, 0x476c,
+ 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774,
+ 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, 0x477c,
+ 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826,
+ 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e,
+ 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836,
+ 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e,
+ 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846,
+ 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x4853, 0x484d,
+ 0x484e, 0x484f, 0x4850, 0x4851, 0x4852, 0x4854, 0x4855, 0x4856,
+ 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e,
+ 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866,
+ 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e,
+ 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876,
+ 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e,
+ 0x4921, 0x4922, 0x4923, 0x4924, 0x4925, 0x4926, 0x4927, 0x4928,
+ 0x4929, 0x492a, 0x492b, 0x492c, 0x492d, 0x492e, 0x492f, 0x4930,
+ 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, 0x4938,
+ 0x4939, 0x493a, 0x493b, 0x493c, 0x4941, 0x493d, 0x493e, 0x493f,
+ 0x4940, 0x4942, 0x4943, 0x4944, 0x4945, 0x4946, 0x4947, 0x4948,
+ 0x4949, 0x494a, 0x494b, 0x494c, 0x494d, 0x494e, 0x494f, 0x4950,
+ 0x4951, 0x4952, 0x4953, 0x4954, 0x4955, 0x4956, 0x4957, 0x4958,
+ 0x4959, 0x495a, 0x495b, 0x495c, 0x495d, 0x495e, 0x495f, 0x4960,
+ 0x4961, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, 0x4967, 0x4968,
+ 0x4969, 0x496a, 0x496b, 0x496c, 0x496d, 0x496e, 0x496f, 0x4970,
+ 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, 0x4978,
+ 0x4979, 0x497a, 0x497b, 0x497c, 0x497d, 0x497e, 0x4a21, 0x4a22,
+ 0x4a23, 0x4a24, 0x4a25, 0x4a26, 0x4a27, 0x4a28, 0x4a29, 0x4a2a,
+ 0x4a2b, 0x4a2c, 0x4a2d, 0x4a2e, 0x4a2f, 0x4a30, 0x4a31, 0x4a32,
+ 0x4a33, 0x4a34, 0x4a35, 0x4a36, 0x4a37, 0x4a38, 0x4a39, 0x4a3a,
+ 0x4a3b, 0x4a3c, 0x4a3d, 0x4a3e, 0x4a3f, 0x4a40, 0x4a41, 0x4a42,
+ 0x4a43, 0x4a44, 0x4a45, 0x4a46, 0x4a47, 0x4a48, 0x4a49, 0x4a4a,
+ 0x4a4b, 0x4a4c, 0x4a4d, 0x4a4e, 0x4a4f, 0x4a50, 0x4a51, 0x4a52,
+ 0x4a53, 0x4a54, 0x4a55, 0x4a56, 0x4a57, 0x4a58, 0x4a59, 0x4a5a,
+ 0x4a5b, 0x4a5c, 0x4a5d, 0x4a5e, 0x4a5f, 0x4a60, 0x4a61, 0x4a62,
+ 0x4a63, 0x4a64, 0x4a65, 0x4a66, 0x4a67, 0x4a68, 0x4a69, 0x4a6a,
+ 0x4a6b, 0x4a6c, 0x4a6d, 0x4a6e, 0x4a6f, 0x4a70, 0x4a71, 0x4a72,
+ 0x4a73, 0x4a74, 0x4a75, 0x4a76, 0x4a77, 0x4a78, 0x4a79, 0x4a7a,
+ 0x4a7b, 0x4a7c, 0x4a7d, 0x4a7e, 0x4b21, 0x4b22, 0x4b23, 0x4b24,
+ 0x4b25, 0x4b26, 0x4b27, 0x4b28, 0x4b29, 0x4b2a, 0x4b2b, 0x4b2c,
+ 0x4b2d, 0x4b2e, 0x4b2f, 0x4b30, 0x4b31, 0x4b32, 0x4b33, 0x4b34,
+ 0x4b35, 0x4b36, 0x4b37, 0x4b38, 0x4b39, 0x4b3a, 0x4b3b, 0x4b3c,
+ 0x4b3d, 0x4b3e, 0x4b3f, 0x4b40, 0x4b41, 0x4b42, 0x4b43, 0x4b44,
+ 0x4b45, 0x4b46, 0x4b47, 0x4b48, 0x4b49, 0x4b4a, 0x4b4b, 0x4b4c,
+ 0x4b4d, 0x4b4e, 0x4b4f, 0x4b50, 0x4b51, 0x4b52, 0x4b53, 0x4b54,
+ 0x4b55, 0x4b56, 0x4b57, 0x4b58, 0x4b59, 0x4b5a, 0x4b5b, 0x4b5c,
+ 0x4b5d, 0x4b5e, 0x4b5f, 0x4b60, 0x4b61, 0x4b62, 0x4b63, 0x4b64,
+ 0x4b65, 0x4b66, 0x4b67, 0x4b68, 0x4b69, 0x4b6a, 0x4b6b, 0x4b6c,
+ 0x4b6d, 0x4b6e, 0x4b6f, 0x4b70, 0x4b71, 0x4b72, 0x4b73, 0x4b74,
+ 0x4b75, 0x4b76, 0x4b77, 0x4b78, 0x4b79, 0x4b7a, 0x4b7b, 0x4b7c,
+ 0x4b7d, 0x4b7e, 0x4c21, 0x4c22, 0x4c23, 0x4c24, 0x4c25, 0x4c26,
+ 0x4c27, 0x4c28, 0x4c29, 0x4c2a, 0x4c2b, 0x4c2c, 0x4c2d, 0x4c2e,
+ 0x4c2f, 0x4c30, 0x4c31, 0x4c32, 0x4c33, 0x4c34, 0x4c35, 0x4c36,
+ 0x4c37, 0x4c38, 0x4c39, 0x4c3a, 0x4c3b, 0x4c3c, 0x4c3d, 0x4c3e,
+ 0x4c3f, 0x4c40, 0x4c41, 0x4c42, 0x4c43, 0x4c44, 0x4c45, 0x4c46,
+ 0x4c47, 0x4c48, 0x4c49, 0x4c4a, 0x4c4b, 0x4c4c, 0x4c4d, 0x4c4e,
+ 0x4c4f, 0x4c50, 0x4c51, 0x4c52, 0x4c53, 0x4c54, 0x4c55, 0x4c56,
+ 0x4c57, 0x4c58, 0x4c59, 0x4c5a, 0x4c5b, 0x4c5c, 0x4c5d, 0x4c5e,
+ 0x4c5f, 0x4c60, 0x4c61, 0x4c62, 0x4c63, 0x4c64, 0x4c65, 0x4c66,
+ 0x4c67, 0x4c68, 0x4c69, 0x4c6a, 0x4c6b, 0x4c6c, 0x4c6d, 0x4c6e,
+ 0x4c6f, 0x4c70, 0x4c71, 0x4c72, 0x4c73, 0x4c74, 0x4c75, 0x4c76,
+ 0x4c77, 0x4c78, 0x4c79, 0x4c7a, 0x4c7b, 0x4c7c, 0x4c7d, 0x4c7e,
+ 0x4d21, 0x4d22, 0x4d23, 0x4d24, 0x4d25, 0x4d26, 0x4d27, 0x4d28,
+ 0x4d29, 0x4d2a, 0x4d2b, 0x4d2c, 0x4d2d, 0x4d2e, 0x4d2f, 0x4d30,
+ 0x4d31, 0x4d32, 0x4d33, 0x4d34, 0x4d35, 0x4d36, 0x4d37, 0x4d38,
+ 0x4d39, 0x4d3a, 0x4d3b, 0x4d3c, 0x4d3d, 0x4d3e, 0x4d3f, 0x4d40,
+ 0x4d41, 0x4d42, 0x4d43, 0x4d44, 0x4d45, 0x4d46, 0x4d47, 0x4d48,
+ 0x4d49, 0x4d4a, 0x4d4b, 0x4d4c, 0x4d4d, 0x4d4e, 0x4d4f, 0x4d50,
+ 0x4d51, 0x4d52, 0x4d53, 0x4d54, 0x4d55, 0x4d56, 0x4d57, 0x4d58,
+ 0x4d59, 0x4d5a, 0x4d5b, 0x4d5c, 0x4d5d, 0x4d5e, 0x4d5f, 0x4d60,
+ 0x4d61, 0x4d62, 0x4d63, 0x4d64, 0x4d65, 0x4d66, 0x4d67, 0x4d68,
+ 0x4d69, 0x4d6a, 0x4d6b, 0x4d6c, 0x4d6d, 0x4d6e, 0x4d6f, 0x4d70,
+ 0x4d71, 0x4d72, 0x4d73, 0x4d74, 0x4d75, 0x4d76, 0x4d77, 0x4d78,
+ 0x4d79, 0x4d7a, 0x4d7b, 0x4d7c, 0x4d7d, 0x4d7e, 0x4e21, 0x4e22,
+ 0x4e24, 0x4e25, 0x4e26, 0x4e27, 0x4e28, 0x4e29, 0x4e23, 0x4e2a,
+ 0x4e2b, 0x4e2c, 0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32,
+ 0x4e33, 0x4e34, 0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a,
+ 0x4e3b, 0x4e3c, 0x4e3d, 0x4e3e, 0x4e3f, 0x4e40, 0x4e41, 0x4e42,
+ 0x4e43, 0x4e44, 0x4e45, 0x4e46, 0x4e47, 0x4e48, 0x4e49, 0x4e4a,
+ 0x4e4b, 0x4e4c, 0x4e4d, 0x4e4e, 0x4e4f, 0x4e50, 0x4e51, 0x4e52,
+ 0x4e53, 0x4e54, 0x4e55, 0x4e56, 0x4e57, 0x4e58, 0x4e59, 0x4e5a,
+ 0x4e5b, 0x4e5c, 0x4e5d, 0x4e5e, 0x4e5f, 0x4e60, 0x4e61, 0x4e62,
+ 0x4e63, 0x4e64, 0x4e65, 0x4e66, 0x4e67, 0x4e68, 0x4e69, 0x4e6a,
+ 0x4e6b, 0x4e6c, 0x4e6d, 0x4e6e, 0x4e6f, 0x4e70, 0x4e71, 0x4e72,
+ 0x4e73, 0x4e74, 0x4e75, 0x4e76, 0x4e77, 0x4e78, 0x4e79, 0x4e7a,
+ 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7e, 0x4f21, 0x4f22, 0x4f23, 0x4f24,
+ 0x4f25, 0x4f26, 0x4f27, 0x4f28, 0x4f29, 0x4f2a, 0x4f2b, 0x4f2c,
+ 0x4f2d, 0x4f2e, 0x4f2f, 0x4f30, 0x4f31, 0x4f32, 0x4f33, 0x4f34,
+ 0x4f35, 0x4f36, 0x4f37, 0x4f38, 0x4f39, 0x4f3a, 0x4f3b, 0x4f3c,
+ 0x4f3d, 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f43, 0x4f44,
+ 0x4f45, 0x4f46, 0x4f47, 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c,
+ 0x4f4d, 0x4f4e, 0x4f4f, 0x4f50, 0x4f51, 0x4f52, 0x4f53, 0x4f54,
+ 0x4f55, 0x4f56, 0x4f57, 0x4f58, 0x4f59, 0x4f5a, 0x4f5b, 0x4f5c,
+ 0x4f5d, 0x4f5e, 0x4f5f, 0x4f60, 0x4f61, 0x4f62, 0x4f63, 0x4f64,
+ 0x4f65, 0x4f66, 0x4f67, 0x4f68, 0x4f69, 0x4f6a, 0x4f6b, 0x4f6c,
+ 0x4f6d, 0x4f6e, 0x4f6f, 0x4f70, 0x4f71, 0x4f72, 0x4f74, 0x4f75,
+ 0x4f76, 0x4f73, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7b, 0x4f7c,
+ 0x4f7d, 0x4f7e, 0x5021, 0x5022, 0x5023, 0x5024, 0x5025, 0x5026,
+ 0x5027, 0x5028, 0x5029, 0x502a, 0x502b, 0x502c, 0x502e, 0x502f,
+ 0x5030, 0x5031, 0x502d, 0x5032, 0x5033, 0x5034, 0x5035, 0x5037,
+ 0x5038, 0x5039, 0x503a, 0x503b, 0x5036, 0x503c, 0x503d, 0x503e,
+ 0x503f, 0x5040, 0x5041, 0x5042, 0x5043, 0x5044, 0x5045, 0x5046,
+ 0x5047, 0x5048, 0x5049, 0x504a, 0x504b, 0x504c, 0x504d, 0x504e,
+ 0x504f, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5055, 0x5056,
+ 0x5057, 0x5058, 0x5059, 0x505a, 0x505b, 0x505c, 0x505d, 0x505e,
+ 0x505f, 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, 0x5065, 0x5066,
+ 0x5067, 0x5068, 0x5069, 0x506a, 0x506b, 0x506c, 0x506d, 0x506e,
+ 0x506f, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5076,
+ 0x5077, 0x5078, 0x5079, 0x507a, 0x507b, 0x507c, 0x507d, 0x507e,
+ 0x5121, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128,
+ 0x5129, 0x512a, 0x512b, 0x512c, 0x512d, 0x512e, 0x512f, 0x5130,
+ 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, 0x5138,
+ 0x5139, 0x513a, 0x513b, 0x513c, 0x513d, 0x513e, 0x513f, 0x5140,
+ 0x5141, 0x5142, 0x5143, 0x5144, 0x5145, 0x5146, 0x5147, 0x5148,
+ 0x5149, 0x514a, 0x514b, 0x514c, 0x514d, 0x514e, 0x514f, 0x5150,
+ 0x5151, 0x5152, 0x5153, 0x5154, 0x5155, 0x5156, 0x5157, 0x5158,
+ 0x5159, 0x515a, 0x515b, 0x515c, 0x515d, 0x515e, 0x515f, 0x5160,
+ 0x5161, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166, 0x5167, 0x5168,
+ 0x5169, 0x516a, 0x516b, 0x516c, 0x516d, 0x516e, 0x516f, 0x5170,
+ 0x5171, 0x5172, 0x5173, 0x5174, 0x5175, 0x5176, 0x5177, 0x5178,
+ 0x5179, 0x517a, 0x517b, 0x517c, 0x517d, 0x517e, 0x5221, 0x5222,
+ 0x5223, 0x5224, 0x5225, 0x5226, 0x5227, 0x5228, 0x5229, 0x522a,
+ 0x522b, 0x522c, 0x522d, 0x522e, 0x522f, 0x5230, 0x5231, 0x5232,
+ 0x5233, 0x5234, 0x5235, 0x5236, 0x5237, 0x5238, 0x5239, 0x523a,
+ 0x523b, 0x523c, 0x523d, 0x523e, 0x523f, 0x5240, 0x5241, 0x5242,
+ 0x5243, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a,
+ 0x524b, 0x524c, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252,
+ 0x5253, 0x5254, 0x5255, 0x5256, 0x5257, 0x5258, 0x5259, 0x525a,
+ 0x525b, 0x525c, 0x525d, 0x525e, 0x525f, 0x5260, 0x5261, 0x5262,
+ 0x5263, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269, 0x526a,
+ 0x526b, 0x526c, 0x526d, 0x526e, 0x526f, 0x5270, 0x5271, 0x5272,
+ 0x5273, 0x5274, 0x5276, 0x5277, 0x5278, 0x5275, 0x5279, 0x527a,
+ 0x527b, 0x527c, 0x527d, 0x527e, 0x5321, 0x5322, 0x5323, 0x5324,
+ 0x5325, 0x5326, 0x5327, 0x5328, 0x5329, 0x532a, 0x532b, 0x532c,
+ 0x532d, 0x532e, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
+ 0x5335, 0x5336, 0x5337, 0x5338, 0x5339, 0x533a, 0x533b, 0x533c,
+ 0x533d, 0x533e, 0x533f, 0x5340, 0x5341, 0x5342, 0x5343, 0x5344,
+ 0x5345, 0x5346, 0x5347, 0x5348, 0x5349, 0x534a, 0x534b, 0x534c,
+ 0x534d, 0x534e, 0x534f, 0x5350, 0x5351, 0x5352, 0x5353, 0x5354,
+ 0x5355, 0x5356, 0x5357, 0x5358, 0x5359, 0x535a, 0x535b, 0x535c,
+ 0x535d, 0x535e, 0x535f, 0x5360, 0x5361, 0x5362, 0x5363, 0x5364,
+ 0x5365, 0x5366, 0x5367, 0x5368, 0x5369, 0x536a, 0x536b, 0x536c,
+ 0x536d, 0x536e, 0x536f, 0x5370, 0x5371, 0x5372, 0x5373, 0x5374,
+ 0x5375, 0x5376, 0x5377, 0x5378, 0x5379, 0x537a, 0x537b, 0x537c,
+ 0x537d, 0x537e, 0x5421, 0x5422, 0x5423, 0x5424, 0x5425, 0x5426,
+ 0x5427, 0x5428, 0x5429, 0x542a, 0x542b, 0x542c, 0x542d, 0x542e,
+ 0x542f, 0x5430, 0x5431, 0x5432, 0x5434, 0x5435, 0x5436, 0x5437,
+ 0x5438, 0x5439, 0x543a, 0x543b, 0x543c, 0x543d, 0x543e, 0x5433,
+ 0x543f, 0x5440, 0x5441, 0x5442, 0x5443, 0x5444, 0x5445, 0x5446,
+ 0x5447, 0x5448, 0x5449, 0x544a, 0x544b, 0x544c, 0x544d, 0x544e,
+ 0x544f, 0x5450, 0x5451, 0x5452, 0x5453, 0x5454, 0x5455, 0x5456,
+ 0x5457, 0x5458, 0x5459, 0x545a, 0x545b, 0x545c, 0x545d, 0x545e,
+ 0x545f, 0x5460, 0x5461, 0x5462, 0x5463, 0x5464, 0x5465, 0x5466,
+ 0x5467, 0x5468, 0x5469, 0x546a, 0x546c, 0x546b, 0x546d, 0x546e,
+ 0x546f, 0x5470, 0x5471, 0x5472, 0x5473, 0x5474, 0x5475, 0x5476,
+ 0x5477, 0x5478, 0x5479, 0x547a, 0x547b, 0x547c, 0x547d, 0x547e,
+ 0x5521, 0x5522, 0x5523, 0x5524, 0x5525, 0x5526, 0x5527, 0x5528,
+ 0x5529, 0x552a, 0x552b, 0x552c, 0x552d, 0x552e, 0x552f, 0x5530,
+ 0x5531, 0x5532, 0x5533, 0x5534, 0x5535, 0x5536, 0x5537, 0x5538,
+ 0x5539, 0x553a, 0x553b, 0x553c, 0x553d, 0x553e, 0x553f, 0x5540,
+ 0x5541, 0x5542, 0x5543, 0x5544, 0x5545, 0x5546, 0x5547, 0x5548,
+ 0x5549, 0x554a, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5550,
+ 0x5551, 0x5552, 0x5553, 0x5554, 0x5555, 0x5556, 0x5557, 0x5558,
+ 0x5559, 0x555a, 0x555b, 0x555c, 0x555d, 0x555e, 0x555f, 0x5560,
+ 0x5561, 0x5562, 0x5563, 0x5564, 0x5565, 0x5566, 0x5567, 0x5568,
+ 0x5569, 0x556a, 0x556b, 0x556c, 0x556d, 0x556e, 0x556f, 0x5570,
+ 0x5571, 0x5572, 0x5573, 0x5574, 0x5575, 0x5576, 0x5577, 0x5578,
+ 0x5579, 0x557a, 0x557b, 0x557c, 0x557d, 0x557e, 0x5621, 0x5622,
+ 0x5623, 0x5624, 0x5625, 0x5626, 0x5627, 0x5628, 0x5629, 0x562a,
+ 0x562b, 0x562c, 0x562d, 0x562e, 0x562f, 0x5630, 0x5631, 0x5632,
+ 0x5633, 0x5634, 0x5635, 0x5636, 0x5637, 0x5638, 0x5639, 0x563a,
+ 0x563b, 0x563c, 0x563d, 0x563e, 0x563f, 0x5640, 0x5641, 0x5642,
+ 0x5643, 0x5644, 0x5645, 0x5647, 0x5648, 0x5649, 0x564a, 0x564b,
+ 0x5646, 0x564c, 0x564d, 0x564e, 0x564f, 0x5650, 0x5651, 0x5652,
+ 0x5653, 0x5654, 0x5656, 0x5657, 0x5658, 0x5655, 0x5659, 0x565a,
+ 0x565b, 0x565c, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0x5662,
+ 0x5663, 0x5664, 0x5665, 0x5666, 0x5667, 0x5668, 0x5669, 0x566a,
+ 0x566b, 0x566c, 0x566d, 0x566e, 0x566f, 0x5670, 0x5671, 0x5672,
+ 0x5673, 0x5674, 0x5675, 0x5676, 0x5677, 0x5678, 0x5679, 0x567a,
+ 0x567b, 0x567c, 0x567d, 0x567e, 0x5721, 0x5722, 0x5723, 0x5724,
+ 0x5725, 0x5726, 0x5727, 0x5728, 0x5729, 0x572a, 0x572b, 0x572c,
+ 0x572d, 0x572e, 0x572f, 0x5730, 0x5731, 0x5732, 0x5733, 0x5734,
+ 0x5735, 0x5736, 0x5737, 0x5738, 0x5739, 0x573a, 0x573b, 0x573c,
+ 0x573d, 0x573e, 0x573f, 0x5740, 0x5741, 0x5742, 0x5743, 0x5744,
+ 0x5745, 0x5746, 0x5747, 0x5748, 0x5749, 0x574a, 0x574b, 0x574c,
+ 0x574d, 0x574e, 0x574f, 0x5750, 0x5751, 0x5752, 0x5753, 0x5754,
+ 0x5755, 0x5756, 0x5757, 0x5758, 0x5759, 0x575a, 0x575b, 0x575c,
+ 0x575d, 0x575e, 0x575f, 0x5760, 0x5761, 0x5762, 0x5764, 0x5765,
+ 0x5766, 0x5767, 0x5768, 0x5769, 0x576a, 0x576b, 0x576c, 0x576d,
+ 0x576e, 0x576f, 0x5770, 0x5771, 0x5772, 0x5773, 0x5774, 0x5775,
+ 0x5776, 0x5777, 0x5778, 0x5779, 0x583e, 0x5763, 0x577a, 0x577b,
+ 0x577c, 0x577d, 0x577e, 0x5821, 0x5822, 0x5823, 0x5824, 0x5825,
+ 0x5826, 0x5827, 0x5828, 0x5829, 0x582a, 0x582b, 0x582c, 0x582d,
+ 0x582e, 0x582f, 0x5830, 0x5831, 0x5832, 0x5833, 0x584c, 0x5834,
+ 0x5835, 0x5836, 0x5837, 0x5838, 0x5839, 0x583a, 0x583b, 0x583c,
+ 0x583d, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5844, 0x5845,
+ 0x5846, 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584d, 0x584e,
+ 0x584f, 0x5850, 0x5851, 0x5852, 0x5853, 0x5854, 0x5855, 0x5856,
+ 0x5857, 0x5858, 0x5859, 0x585a, 0x585b, 0x585c, 0x585d, 0x585e,
+ 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 0x5865, 0x5866,
+ 0x5867, 0x5868, 0x5869, 0x586a, 0x586b, 0x586c, 0x586d, 0x586e,
+ 0x586f, 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876,
+ 0x5877, 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587e,
+ 0x5921, 0x5922, 0x5923, 0x5924, 0x5925, 0x5926, 0x5927, 0x5928,
+ 0x592a, 0x592b, 0x592c, 0x592d, 0x592e, 0x592f, 0x5930, 0x5931,
+ 0x5932, 0x5933, 0x5934, 0x5935, 0x5936, 0x5937, 0x5938, 0x5939,
+ 0x593a, 0x593b, 0x593c, 0x5929, 0x593d, 0x593e, 0x593f, 0x5940,
+ 0x5941, 0x5942, 0x5943, 0x5944, 0x5945, 0x5946, 0x5947, 0x5948,
+ 0x5949, 0x594a, 0x594b, 0x594c, 0x594d, 0x594e, 0x594f, 0x5950,
+ 0x5951, 0x5952, 0x5953, 0x5954, 0x5955, 0x5956, 0x5957, 0x5958,
+ 0x5959, 0x595a, 0x595b, 0x595c, 0x595d, 0x595e, 0x595f, 0x5960,
+ 0x5961, 0x5962, 0x5963, 0x5964, 0x5965, 0x5966, 0x5974, 0x5967,
+ 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f,
+ 0x5970, 0x5971, 0x5972, 0x5973, 0x5975, 0x5976, 0x5977, 0x5978,
+ 0x5979, 0x597a, 0x597b, 0x597c, 0x597d, 0x597e, 0x5a21, 0x5a22,
+ 0x5a23, 0x5a24, 0x5a25, 0x5a26, 0x5a27, 0x5a28, 0x5a29, 0x5a2a,
+ 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f, 0x5a30, 0x5a31, 0x5a32,
+ 0x5a33, 0x5a34, 0x5a35, 0x5a36, 0x3866, 0x5a37, 0x5a38, 0x5a39,
+ 0x5a3a, 0x5a3b, 0x5a3c, 0x5a3d, 0x5a3e, 0x5a3f, 0x5a40, 0x5a41,
+ 0x5a42, 0x5a43, 0x5a44, 0x5a45, 0x5a46, 0x5a47, 0x5a48, 0x5a49,
+ 0x5a4a, 0x5a4b, 0x5a6d, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, 0x5a50,
+ 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a55, 0x5a56, 0x5a57, 0x5a58,
+ 0x5a59, 0x5a5a, 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60,
+ 0x5a61, 0x5a62, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a67, 0x5a68,
+ 0x5a69, 0x5a6a, 0x5a6b, 0x5a6c, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71,
+ 0x5a72, 0x5a73, 0x5a74, 0x5a75, 0x5a76, 0x5a77, 0x5a78, 0x5a79,
+ 0x5a7a, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5b21, 0x5b22, 0x5b23,
+ 0x5b24, 0x5b25, 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b,
+ 0x5b2c, 0x5b2d, 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b32, 0x5b33,
+ 0x5b34, 0x5b35, 0x5b36, 0x5b37, 0x5b38, 0x5b39, 0x5b3a, 0x5b3b,
+ 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, 0x5b40, 0x5b41, 0x5b42, 0x5b43,
+ 0x5b44, 0x5b45, 0x5b46, 0x5b47, 0x5b48, 0x5b49, 0x5b4a, 0x5b4b,
+ 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f, 0x5b50, 0x5b51, 0x5b52, 0x5b53,
+ 0x5b54, 0x5b55, 0x5b56, 0x5b57, 0x5b58, 0x5b59, 0x5b5a, 0x5b5b,
+ 0x5b5c, 0x5b5d, 0x5b5e, 0x5b5f, 0x5b60, 0x5b61, 0x5b62, 0x5b63,
+ 0x5b64, 0x5b65, 0x5b66, 0x5b67, 0x5b68, 0x5b69, 0x5b6a, 0x5b6b,
+ 0x5b6c, 0x5b6d, 0x5b6e, 0x5b70, 0x5b71, 0x5b72, 0x5b73, 0x5b6f,
+ 0x5b74, 0x5b75, 0x5b76, 0x5b77, 0x5b78, 0x5b79, 0x5b7a, 0x5b7b,
+ 0x5b7c, 0x5b7d, 0x5b7e, 0x5c21, 0x5c22, 0x5c23, 0x5c24, 0x5c25,
+ 0x5c26, 0x5c27, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2c, 0x5c2d,
+ 0x5c2e, 0x5c2f, 0x5c30, 0x5c31, 0x5c32, 0x5c33, 0x5c34, 0x5c35,
+ 0x5c36, 0x5c37, 0x5c38, 0x5c39, 0x5c3a, 0x5c3b, 0x5c3c, 0x5c3d,
+ 0x5c3e, 0x5c3f, 0x5c40, 0x5c41, 0x5c42, 0x5c43, 0x5c44, 0x5c45,
+ 0x5c46, 0x5c47, 0x5c48, 0x5c49, 0x5c4a, 0x5c4b, 0x5c4c, 0x5c4d,
+ 0x5c4e, 0x5c4f, 0x5c50, 0x5c51, 0x5c52, 0x5c53, 0x5c54, 0x5c55,
+ 0x5c56, 0x5c57, 0x5c58, 0x5c59, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d,
+ 0x5c5e, 0x5c5f, 0x5c60, 0x5c61, 0x5c62, 0x5c63, 0x5c64, 0x5c65,
+ 0x5c66, 0x5c67, 0x5c68, 0x5c69, 0x5c6a, 0x5c6b, 0x5c6c, 0x5c6d,
+ 0x5c6e, 0x5c6f, 0x5c70, 0x5c71, 0x5c72, 0x5c73, 0x5c74, 0x5c75,
+ 0x5c76, 0x5c77, 0x5c78, 0x5c79, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d,
+ 0x5c7e, 0x5d21, 0x5d22, 0x5d23, 0x5d24, 0x5d25, 0x5d26, 0x5d27,
+ 0x5d28, 0x5d29, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2d, 0x5d2e, 0x5d2f,
+ 0x5d30, 0x5d31, 0x5d32, 0x5d33, 0x5d34, 0x5d35, 0x5d36, 0x5d37,
+ 0x5d38, 0x5d39, 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3d, 0x5d3e, 0x5d3f,
+ 0x5d40, 0x5d41, 0x5d42, 0x5d43, 0x5d44, 0x5d45, 0x5d46, 0x5d47,
+ 0x5d48, 0x5d49, 0x5d4a, 0x5d4b, 0x5d4c, 0x5d4d, 0x5d4e, 0x5d4f,
+ 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57,
+ 0x5d58, 0x5d59, 0x5d5a, 0x5d5b, 0x5d5c, 0x5d5d, 0x5d5e, 0x5d5f,
+ 0x5d60, 0x5d61, 0x5d62, 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67,
+ 0x5d68, 0x5d69, 0x5d6a, 0x5d6b, 0x5d6c, 0x5d6d, 0x5d6e, 0x5d6f,
+ 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d74, 0x5d75, 0x5d76, 0x5d77,
+ 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5e21,
+ 0x5e22, 0x5e23, 0x5e24, 0x5e25, 0x5e26, 0x5e27, 0x5e28, 0x5e29,
+ 0x5e2a, 0x5e2b, 0x5e2c, 0x5e2d, 0x5e2e, 0x5e2f, 0x5e30, 0x5e31,
+ 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e37, 0x5e38, 0x5e39,
+ 0x5e3f, 0x5e3a, 0x5e3b, 0x5e3c, 0x5e3d, 0x5e3e, 0x5e40, 0x5e41,
+ 0x5e42, 0x5e43, 0x5e44, 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49,
+ 0x5e4e, 0x5e4a, 0x5e4b, 0x5e4c, 0x5e4d, 0x5e4f, 0x5e50, 0x5e51,
+ 0x5e52, 0x5e53, 0x5e54, 0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59,
+ 0x5e5a, 0x5e5b, 0x5e5c, 0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61,
+ 0x5e62, 0x5e63, 0x5e64, 0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69,
+ 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e, 0x5e6f, 0x5e72, 0x5e70,
+ 0x5e71, 0x5e73, 0x5e74, 0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79,
+ 0x5e7a, 0x5e7b, 0x5e7c, 0x5e7d, 0x5e7e, 0x5f21, 0x5f22, 0x5f23,
+ 0x5f24, 0x5f25, 0x5f26, 0x5f27, 0x5f28, 0x5f29, 0x5f2a, 0x5f2b,
+ 0x5f2c, 0x5f2d, 0x5f2e, 0x5f2f, 0x5f30, 0x5f32, 0x5f31, 0x5f33,
+ 0x5f34, 0x5f35, 0x5f36, 0x5f37, 0x5f38, 0x5f39, 0x5f3a, 0x5f3b,
+ 0x5f3c, 0x5f3d, 0x5f3e, 0x5f3f, 0x5f40, 0x5f41, 0x5f42, 0x5f43,
+ 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49, 0x5f4a, 0x5f4b,
+ 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f50, 0x5f51, 0x5f52, 0x5f53,
+ 0x5f54, 0x5f55, 0x5f56, 0x5f57, 0x5f58, 0x5f59, 0x5f5a, 0x5f5b,
+ 0x5f5c, 0x5f5d, 0x5f6f, 0x5f5e, 0x5f5f, 0x5f60, 0x5f61, 0x5f62,
+ 0x5f63, 0x5f64, 0x5f65, 0x5f66, 0x5f67, 0x5f68, 0x5f69, 0x5f6a,
+ 0x5f6b, 0x5f6c, 0x5f6d, 0x5f6e, 0x5f70, 0x5f71, 0x5f72, 0x5f73,
+ 0x5f74, 0x5f75, 0x5f76, 0x5f77, 0x5f78, 0x5f79, 0x5f7a, 0x5f7b,
+ 0x5f7c, 0x5f7d, 0x5f7e, 0x6021, 0x6022, 0x6023, 0x6024, 0x6025,
+ 0x6026, 0x6027, 0x6028, 0x6029, 0x602a, 0x602b, 0x602c, 0x602d,
+ 0x602e, 0x602f, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6035,
+ 0x6036, 0x6037, 0x6038, 0x6039, 0x603a, 0x603b, 0x603c, 0x603d,
+ 0x603e, 0x603f, 0x6040, 0x6041, 0x6042, 0x6043, 0x6044, 0x6045,
+ 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604b, 0x604c, 0x604d,
+ 0x604e, 0x604f, 0x6050, 0x6051, 0x6052, 0x6053, 0x6054, 0x6055,
+ 0x6056, 0x6057, 0x6058, 0x6059, 0x605a, 0x605b, 0x605c, 0x605d,
+ 0x6064, 0x605e, 0x605f, 0x6060, 0x6061, 0x6062, 0x6063, 0x6065,
+ 0x6066, 0x6067, 0x6068, 0x6069, 0x606a, 0x606b, 0x606c, 0x606d,
+ 0x606e, 0x606f, 0x6070, 0x6071, 0x6072, 0x6073, 0x6074, 0x6075,
+ 0x6076, 0x6077, 0x6078, 0x6079, 0x607a, 0x607b, 0x607c, 0x607d,
+ 0x607e, 0x6121, 0x6122, 0x6123, 0x6124, 0x6125, 0x6126, 0x6127,
+ 0x6128, 0x6129, 0x612a, 0x612b, 0x612c, 0x612d, 0x612e, 0x612f,
+ 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137,
+ 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x613f,
+ 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, 0x6147,
+ 0x6148, 0x6149, 0x614a, 0x614b, 0x614c, 0x614d, 0x614e, 0x614f,
+ 0x6150, 0x6151, 0x6152, 0x6154, 0x6155, 0x6156, 0x6153, 0x6157,
+ 0x6158, 0x6159, 0x615a, 0x615b, 0x615c, 0x615d, 0x615e, 0x615f,
+ 0x6160, 0x6161, 0x6162, 0x6163, 0x6164, 0x6165, 0x6166, 0x6167,
+ 0x6168, 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f,
+ 0x6170, 0x6171, 0x6172, 0x6173, 0x6174, 0x6175, 0x6176, 0x6177,
+ 0x6178, 0x6179, 0x617a, 0x617b, 0x617d, 0x617e, 0x6221, 0x6222,
+ 0x6223, 0x6224, 0x617c, 0x622d, 0x6225, 0x6226, 0x6227, 0x6228,
+ 0x6229, 0x622a, 0x622b, 0x622c, 0x622f, 0x6230, 0x6231, 0x6232,
+ 0x622e, 0x6233, 0x6234, 0x6235, 0x6236, 0x6237, 0x6238, 0x6239,
+ 0x623a, 0x623b, 0x623c, 0x623d, 0x623e, 0x623f, 0x6240, 0x6241,
+ 0x6242, 0x6243, 0x6245, 0x6246, 0x6244, 0x6247, 0x6248, 0x6249,
+ 0x624a, 0x624b, 0x624c, 0x624d, 0x624e, 0x624f, 0x6250, 0x6251,
+ 0x6252, 0x6253, 0x6254, 0x6255, 0x6256, 0x6257, 0x6258, 0x6259,
+ 0x625a, 0x625b, 0x625c, 0x625d, 0x625e, 0x625f, 0x6260, 0x6261,
+ 0x6262, 0x6263, 0x6264, 0x6265, 0x6266, 0x6267, 0x6268, 0x6269,
+ 0x626a, 0x626b, 0x626c, 0x626d, 0x626e, 0x626f, 0x6270, 0x6271,
+ 0x6272, 0x6273, 0x6274, 0x6275, 0x6276, 0x6277, 0x6278, 0x6279,
+ 0x627a, 0x627b, 0x627c, 0x627d, 0x627e, 0x6321, 0x6322, 0x6323,
+ 0x6324, 0x6325, 0x6326, 0x6327, 0x6328, 0x6329, 0x632a, 0x632b,
+ 0x632c, 0x632d, 0x632e, 0x632f, 0x6330, 0x6331, 0x6332, 0x6333,
+ 0x6334, 0x6335, 0x6336, 0x6337, 0x6338, 0x6339, 0x633a, 0x633b,
+ 0x633c, 0x633d, 0x633e, 0x633f, 0x6340, 0x6341, 0x6342, 0x6343,
+ 0x6344, 0x6345, 0x6346, 0x6347, 0x6348, 0x6349, 0x634a, 0x634b,
+ 0x634c, 0x634d, 0x634e, 0x634f, 0x6350, 0x6351, 0x6352, 0x6353,
+ 0x6354, 0x6355, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b,
+ 0x635c, 0x635d, 0x635e, 0x635f, 0x6360, 0x6361, 0x6362, 0x6363,
+ 0x6364, 0x6365, 0x6366, 0x6367, 0x6368, 0x6369, 0x636a, 0x636b,
+ 0x636c, 0x636d, 0x636e, 0x636f, 0x6370, 0x6371, 0x6372, 0x6373,
+ 0x6374, 0x6375, 0x6376, 0x6377, 0x6378, 0x6379, 0x637a, 0x637b,
+ 0x637c, 0x637d, 0x637e, 0x6421, 0x6422, 0x6423, 0x6424, 0x6425,
+ 0x6426, 0x6427, 0x6428, 0x6429, 0x642a, 0x642b, 0x642c, 0x642d,
+ 0x642e, 0x642f, 0x6430, 0x6431, 0x6432, 0x6433, 0x6434, 0x6435,
+ 0x6436, 0x6437, 0x6438, 0x6439, 0x643a, 0x643b, 0x643c, 0x643d,
+ 0x643e, 0x643f, 0x6440, 0x6441, 0x6442, 0x6443, 0x6444, 0x6445,
+ 0x6446, 0x6447, 0x6448, 0x6449, 0x644a, 0x644b, 0x644c, 0x644d,
+ 0x644e, 0x644f, 0x6450, 0x6451, 0x6452, 0x6453, 0x6454, 0x6455,
+ 0x6456, 0x6457, 0x6458, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d,
+ 0x645e, 0x645f, 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465,
+ 0x6466, 0x6467, 0x6468, 0x6469, 0x646a, 0x646b, 0x646c, 0x646d,
+ 0x646e, 0x646f, 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475,
+ 0x6476, 0x6477, 0x6478, 0x6479, 0x647a, 0x647b, 0x647c, 0x647d,
+ 0x647e, 0x6521, 0x6522, 0x6523, 0x6524, 0x6525, 0x6526, 0x6527,
+ 0x6528, 0x6529, 0x652a, 0x652b, 0x652c, 0x652d, 0x652e, 0x652f,
+ 0x6530, 0x6531, 0x6532, 0x6533, 0x6534, 0x6535, 0x653b, 0x6536,
+ 0x6537, 0x6538, 0x6539, 0x653a, 0x653c, 0x653d, 0x653e, 0x653f,
+ 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6545, 0x6546, 0x6547,
+ 0x6548, 0x6549, 0x654a, 0x654b, 0x654c, 0x654d, 0x654f, 0x6550,
+ 0x654e, 0x6551, 0x6552, 0x6553, 0x6554, 0x6555, 0x6556, 0x6557,
+ 0x6558, 0x6559, 0x655a, 0x655b, 0x655c, 0x655d, 0x655e, 0x655f,
+ 0x6560, 0x6561, 0x6562, 0x6563, 0x6564, 0x6565, 0x6566, 0x6568,
+ 0x6567, 0x6569, 0x656a, 0x656b, 0x656c, 0x656d, 0x656e, 0x656f,
+ 0x6570, 0x6571, 0x6572, 0x6573, 0x6574, 0x6575, 0x6576, 0x6577,
+ 0x6578, 0x6579, 0x657a, 0x657c, 0x657b, 0x657d, 0x657e, 0x6621,
+ 0x6622, 0x6623, 0x6624, 0x6625, 0x6626, 0x6627, 0x6628, 0x6629,
+ 0x662a, 0x662b, 0x662c, 0x662d, 0x662e, 0x662f, 0x6630, 0x6631,
+ 0x6632, 0x6633, 0x6634, 0x6635, 0x6636, 0x6637, 0x6638, 0x6639,
+ 0x663a, 0x663b, 0x663c, 0x663d, 0x663e, 0x663f, 0x6640, 0x6641,
+ 0x6642, 0x6643, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648, 0x6649,
+ 0x664a, 0x664b, 0x664c, 0x664d, 0x664e, 0x664f, 0x6650, 0x6651,
+ 0x6652, 0x6653, 0x6654, 0x6655, 0x6656, 0x6657, 0x6658, 0x6659,
+ 0x665a, 0x665b, 0x665c, 0x665d, 0x665e, 0x665f, 0x6660, 0x6661,
+ 0x6662, 0x6663, 0x6664, 0x6665, 0x6666, 0x6667, 0x6668, 0x6669,
+ 0x666a, 0x666b, 0x666c, 0x666d, 0x666e, 0x666f, 0x6670, 0x6671,
+ 0x6672, 0x6673, 0x6675, 0x6676, 0x6677, 0x6678, 0x6679, 0x667a,
+ 0x667b, 0x667c, 0x667d, 0x667e, 0x6721, 0x6722, 0x6723, 0x6724,
+ 0x6725, 0x6726, 0x6727, 0x6728, 0x6729, 0x672a, 0x672b, 0x672c,
+ 0x672d, 0x672e, 0x672f, 0x6730, 0x6731, 0x6732, 0x6733, 0x6734,
+ 0x6735, 0x6736, 0x6737, 0x6738, 0x6739, 0x673a, 0x673b, 0x673c,
+ 0x673d, 0x673e, 0x673f, 0x6740, 0x6741, 0x6742, 0x6743, 0x6744,
+ 0x6745, 0x6746, 0x6747, 0x6748, 0x6749, 0x674a, 0x674b, 0x674c,
+ 0x674d, 0x674e, 0x674f, 0x6750, 0x6751, 0x6752, 0x6753, 0x6754,
+ 0x6755, 0x6756, 0x6757, 0x6758, 0x6759, 0x675a, 0x675b, 0x675c,
+ 0x675d, 0x675e, 0x675f, 0x6760, 0x6761, 0x6762, 0x6763, 0x6764,
+ 0x6765, 0x6766, 0x676a, 0x6767, 0x6768, 0x6769, 0x676b, 0x676c,
+ 0x676d, 0x676e, 0x676f, 0x6770, 0x6771, 0x6772, 0x6773, 0x6774,
+ 0x6776, 0x6777, 0x6778, 0x6779, 0x6775, 0x677a, 0x677b, 0x677c,
+ 0x677d, 0x6828, 0x677e, 0x6821, 0x6822, 0x6823, 0x6824, 0x6825,
+ 0x6826, 0x6827, 0x6829, 0x682a, 0x682b, 0x682c, 0x682d, 0x682e,
+ 0x682f, 0x6830, 0x6831, 0x6832, 0x6833, 0x6834, 0x6835, 0x6836,
+ 0x6837, 0x6838, 0x6839, 0x683a, 0x683b, 0x683c, 0x683d, 0x683e,
+ 0x683f, 0x6840, 0x6841, 0x6842, 0x6843, 0x6844, 0x6845, 0x6846,
+ 0x6847, 0x6848, 0x6849, 0x684a, 0x684b, 0x684c, 0x684d, 0x684e,
+ 0x684f, 0x6850, 0x6851, 0x6852, 0x6853, 0x6854, 0x6855, 0x6856,
+ 0x6857, 0x6858, 0x6859, 0x685a, 0x685b, 0x685c, 0x685d, 0x685e,
+ 0x685f, 0x6860, 0x6861, 0x6862, 0x6863, 0x6864, 0x6865, 0x6866,
+ 0x6867, 0x6868, 0x6869, 0x686a, 0x686b, 0x686c, 0x686d, 0x686e,
+ 0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6874, 0x6875, 0x6876,
+ 0x6877, 0x6878, 0x6879, 0x687a, 0x687b, 0x687c, 0x687d, 0x687e,
+ 0x6921, 0x6922, 0x6923, 0x6924, 0x6925, 0x6926, 0x6927, 0x6928,
+ 0x6929, 0x692a, 0x692b, 0x692c, 0x692d, 0x692e, 0x692f, 0x6930,
+ 0x6931, 0x6932, 0x6933, 0x6934, 0x6935, 0x6936, 0x6937, 0x6938,
+ 0x6939, 0x693a, 0x693b, 0x693c, 0x693d, 0x693e, 0x693f, 0x6940,
+ 0x6941, 0x6942, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948,
+ 0x6949, 0x694a, 0x694c, 0x694d, 0x694b, 0x694e, 0x694f, 0x6950,
+ 0x6951, 0x6952, 0x6953, 0x6954, 0x6955, 0x6956, 0x6957, 0x6958,
+ 0x6959, 0x695a, 0x695b, 0x695c, 0x695d, 0x695e, 0x695f, 0x6960,
+ 0x6961, 0x6962, 0x6963, 0x6964, 0x6965, 0x6966, 0x6967, 0x6968,
+ 0x6969, 0x696a, 0x696b, 0x696c, 0x696d, 0x696e, 0x696f, 0x6970,
+ 0x6971, 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x6977, 0x6978,
+ 0x6979, 0x697a, 0x697b, 0x697c, 0x697d, 0x697e, 0x6a21, 0x6a22,
+ 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, 0x6a28, 0x6a29, 0x6a2a,
+ 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a2f, 0x6a30, 0x6a31, 0x6a32,
+ 0x6a33, 0x6a34, 0x6a35, 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a,
+ 0x6a3b, 0x6a3c, 0x6a3d, 0x6a3e, 0x6a3f, 0x6a40, 0x6a41, 0x6a42,
+ 0x6a43, 0x6a44, 0x6a45, 0x6a46, 0x6a47, 0x6a48, 0x6a49, 0x6a4a,
+ 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a50, 0x6a51, 0x6a52,
+ 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a58, 0x6a59, 0x6a5a,
+ 0x6a5b, 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a61, 0x6a62,
+ 0x6a63, 0x6a64, 0x6a65, 0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a,
+ 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e, 0x6a6f, 0x6a70, 0x6a71, 0x6a72,
+ 0x6a73, 0x6a74, 0x6a75, 0x6a76, 0x6a77, 0x6a78, 0x6a79, 0x6a7a,
+ 0x6a7b, 0x6a7c, 0x6a7d, 0x6a7e, 0x6b21, 0x6b22, 0x6b23, 0x6b24,
+ 0x6b25, 0x6b26, 0x6b27, 0x6b28, 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c,
+ 0x6b2d, 0x6b2e, 0x6b2f, 0x6b30, 0x6b31, 0x6b32, 0x6b33, 0x6b34,
+ 0x6b35, 0x6b36, 0x6b37, 0x6b38, 0x6b39, 0x6b3a, 0x6b3b, 0x6b3c,
+ 0x6b3d, 0x6b3e, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b43, 0x6b44,
+ 0x6b45, 0x6b46, 0x6b47, 0x6b48, 0x6b49, 0x6b50, 0x6b4a, 0x6b4b,
+ 0x6b4c, 0x6b4d, 0x6b52, 0x6b4e, 0x6b4f, 0x6b51, 0x6b53, 0x6b54,
+ 0x6b55, 0x6b56, 0x6b57, 0x6b58, 0x6b59, 0x6b5a, 0x6b5b, 0x6b5c,
+ 0x6b5e, 0x6b5d, 0x6b5f, 0x6b60, 0x6b61, 0x6b62, 0x6b63, 0x6b64,
+ 0x6b65, 0x6b66, 0x6b67, 0x6b68, 0x6b69, 0x6b6a, 0x6b6b, 0x6b6d,
+ 0x6b6e, 0x6b6f, 0x6b6c, 0x6b70, 0x6b71, 0x6b72, 0x6b73, 0x6b74,
+ 0x6b76, 0x6b75, 0x6b77, 0x6b78, 0x6b79, 0x6b7a, 0x6b7b, 0x6b7c,
+ 0x6b7d, 0x6b7e, 0x6c21, 0x6c22, 0x6c23, 0x6c24, 0x6c25, 0x6c26,
+ 0x6c27, 0x6c28, 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c2e,
+ 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c33, 0x6c34, 0x6c35, 0x6c36,
+ 0x6c37, 0x6c38, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3d, 0x6c3e,
+ 0x6c3f, 0x6c40, 0x6c41, 0x6c42, 0x6c43, 0x6c44, 0x6c45, 0x6c46,
+ 0x6c47, 0x6c48, 0x6c49, 0x6c4a, 0x6c4b, 0x6c4c, 0x6c4e, 0x6c4f,
+ 0x6c4d, 0x6c50, 0x6c51, 0x6c52, 0x6c53, 0x6c54, 0x6c55, 0x6c56,
+ 0x6c57, 0x6c58, 0x6c59, 0x6c5a, 0x6c5b, 0x6c5c, 0x6c5d, 0x6c5e,
+ 0x6c5f, 0x6c60, 0x6c61, 0x6c62, 0x6c63, 0x6c64, 0x6c65, 0x6c66,
+ 0x6c67, 0x6c68, 0x6c69, 0x6c6a, 0x6c6b, 0x6c6c, 0x6c6d, 0x6c6e,
+ 0x6c6f, 0x6c70, 0x6c71, 0x6c72, 0x6c73, 0x6c74, 0x6c75, 0x6c76,
+ 0x6c77, 0x6c78, 0x6c79, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7d, 0x6c7e,
+ 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d25, 0x6d26, 0x6d27, 0x6d28,
+ 0x6d29, 0x6d2a, 0x6d2b, 0x6d2c, 0x6d2d, 0x6d2e, 0x6d2f, 0x6d30,
+ 0x6d31, 0x6d32, 0x6d33, 0x6d34, 0x6d35, 0x6d36, 0x6d37, 0x6d38,
+ 0x6d39, 0x6d3a, 0x6d3b, 0x6d3c, 0x6d3d, 0x6d3e, 0x6d3f, 0x6d40,
+ 0x6d41, 0x6d42, 0x6d43, 0x6d44, 0x6d45, 0x6d46, 0x6d47, 0x6d48,
+ 0x6d49, 0x6d4a, 0x6d4b, 0x6d4c, 0x6d4d, 0x6d4e, 0x6d4f, 0x6d50,
+ 0x6d51, 0x6d52, 0x6d53, 0x6d54, 0x6d55, 0x6d56, 0x6d57, 0x6d58,
+ 0x6d59, 0x6d5a, 0x6d5b, 0x6d5c, 0x6d5d, 0x6d5e, 0x6d5f, 0x6d60,
+ 0x6d61, 0x6d62, 0x6d63,
+};
+
+static const Summary16 jisx0212_uni2indx_page00[70] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x4000 },
+ { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0xc652 }, { 8, 0x8500 },
+ { 11, 0xffff }, { 27, 0xff7e }, { 41, 0xffff }, { 57, 0xff7f },
+ /* 0x0100 */
+ { 72, 0xffff }, { 88, 0xffcf }, { 102, 0xcff7 }, { 115, 0xffff },
+ { 131, 0x3fff }, { 145, 0xffff }, { 161, 0xffff }, { 177, 0x7fff },
+ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
+ { 192, 0xe000 }, { 195, 0x1fff }, { 208, 0x0000 }, { 208, 0x0020 },
+ /* 0x0200 */
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0080 }, { 210, 0x2f00 }, { 215, 0x0000 }, { 215, 0x0000 },
+ /* 0x0300 */
+ { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 },
+ { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 },
+ { 215, 0xd770 }, { 224, 0x0001 }, { 225, 0xfc00 }, { 231, 0x0001 },
+ { 232, 0x7c04 }, { 238, 0x0000 }, { 238, 0x0000 }, { 238, 0x0000 },
+ /* 0x0400 */
+ { 238, 0xdffc }, { 251, 0x0000 }, { 251, 0x0000 }, { 251, 0x0000 },
+ { 251, 0x0000 }, { 251, 0xdffc },
+};
+static const Summary16 jisx0212_uni2indx_page21[3] = {
+ /* 0x2100 */
+ { 264, 0x0000 }, { 264, 0x0040 }, { 265, 0x0004 },
+};
+static const Summary16 jisx0212_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 266, 0x1034 }, { 270, 0x8004 }, { 272, 0xc918 }, { 278, 0x0021 },
+ { 280, 0x0093 }, { 284, 0x1402 }, { 287, 0x0308 }, { 290, 0x8230 },
+ { 294, 0x2000 }, { 295, 0x20c0 }, { 298, 0x8000 }, { 299, 0x0200 },
+ { 300, 0x0008 }, { 301, 0x0c01 }, { 304, 0x8107 }, { 309, 0xe02a },
+ /* 0x4f00 */
+ { 315, 0x190d }, { 321, 0x02e4 }, { 326, 0x4000 }, { 327, 0x4aaa },
+ { 334, 0x1b05 }, { 340, 0x8154 }, { 345, 0x5409 }, { 350, 0x6782 },
+ { 357, 0x5636 }, { 365, 0xc69d }, { 374, 0x0000 }, { 374, 0x7a84 },
+ { 381, 0xbb63 }, { 391, 0x1004 }, { 393, 0x0005 }, { 395, 0xb005 },
+ /* 0x5000 */
+ { 400, 0x5493 }, { 407, 0x7989 }, { 415, 0x4084 }, { 418, 0x082d },
+ { 423, 0x5467 }, { 431, 0x828e }, { 437, 0x24cd }, { 444, 0x0003 },
+ { 446, 0xc45a }, { 453, 0xd85d }, { 462, 0x8407 }, { 467, 0x2601 },
+ { 471, 0x5099 }, { 477, 0xb119 }, { 484, 0x8354 }, { 490, 0x4446 },
+ /* 0x5100 */
+ { 495, 0x79c8 }, { 503, 0x7a81 }, { 510, 0xb188 }, { 516, 0x033a },
+ { 522, 0x8404 }, { 525, 0x81a8 }, { 530, 0x0050 }, { 532, 0x4000 },
+ { 533, 0x4818 }, { 537, 0x2100 }, { 539, 0x200a }, { 542, 0xd500 },
+ { 547, 0x8104 }, { 550, 0x412e }, { 556, 0x4024 }, { 559, 0x009c },
+ /* 0x5200 */
+ { 563, 0x0026 }, { 566, 0x016c }, { 571, 0x0104 }, { 573, 0x1026 },
+ { 577, 0x0220 }, { 579, 0x95a0 }, { 585, 0x4043 }, { 589, 0x0380 },
+ { 592, 0x1425 }, { 597, 0x15e8 }, { 604, 0x80f0 }, { 609, 0x2dc1 },
+ { 616, 0x9151 }, { 622, 0x1852 }, { 627, 0x1722 }, { 633, 0x00d3 },
+ /* 0x5300 */
+ { 638, 0x1c09 }, { 643, 0xd90a }, { 650, 0x3ba0 }, { 657, 0x7025 },
+ { 663, 0x1804 }, { 666, 0x0a00 }, { 668, 0x302a }, { 673, 0x4204 },
+ { 676, 0x4188 }, { 680, 0x2218 }, { 684, 0x8c12 }, { 689, 0x25b4 },
+ { 696, 0x8021 }, { 699, 0x642c }, { 705, 0x00c1 }, { 708, 0x0020 },
+ /* 0x5400 */
+ { 709, 0x0004 }, { 710, 0x0408 }, { 712, 0x8582 }, { 717, 0x0032 },
+ { 720, 0xa098 }, { 725, 0x4000 }, { 726, 0x6ad4 }, { 734, 0x8010 },
+ { 736, 0x232a }, { 742, 0x9062 }, { 747, 0x66c2 }, { 754, 0x8e82 },
+ { 760, 0x6440 }, { 764, 0x0000 }, { 764, 0x9401 }, { 768, 0xd040 },
+ /* 0x5500 */
+ { 772, 0x7323 }, { 780, 0x0020 }, { 781, 0x0c00 }, { 783, 0x3864 },
+ { 789, 0x2682 }, { 794, 0x4d03 }, { 800, 0x0053 }, { 804, 0x8000 },
+ { 805, 0xc146 }, { 811, 0x009e }, { 816, 0x2018 }, { 819, 0x8004 },
+ { 821, 0x5a4a }, { 828, 0x498e }, { 835, 0x0204 }, { 837, 0x8040 },
+ /* 0x5600 */
+ { 839, 0xe520 }, { 845, 0x0207 }, { 849, 0x1000 }, { 850, 0xbaa9 },
+ { 859, 0xaa5b }, { 868, 0x4010 }, { 870, 0xa24f }, { 878, 0x0026 },
+ { 881, 0x1930 }, { 886, 0xe620 }, { 892, 0x3bc0 }, { 899, 0x408a },
+ { 903, 0xbe20 }, { 910, 0xb201 }, { 915, 0x29f2 }, { 923, 0x00c2 },
+ /* 0x5700 */
+ { 926, 0x1486 }, { 931, 0x2c22 }, { 936, 0xd63d }, { 946, 0xe018 },
+ { 951, 0x3060 }, { 955, 0x0004 }, { 956, 0xe9a4 }, { 964, 0x5ebb },
+ { 975, 0x100a }, { 978, 0xf6b0 }, { 987, 0x1382 }, { 992, 0x2100 },
+ { 994, 0x9180 }, { 998, 0x6020 }, { 1001, 0x22d2 }, { 1007, 0xe161 },
+ /* 0x5800 */
+ { 1014, 0x3318 }, { 1020, 0xc800 }, { 1023, 0x20c1 }, { 1027, 0x8204 },
+ { 1030, 0xb200 }, { 1034, 0x8021 }, { 1037, 0x0192 }, { 1041, 0x9100 },
+ { 1044, 0xb783 }, { 1053, 0x2051 }, { 1057, 0x0247 }, { 1062, 0x1006 },
+ { 1065, 0x6114 }, { 1070, 0x2455 }, { 1076, 0x0206 }, { 1079, 0x0008 },
+ /* 0x5900 */
+ { 1080, 0x1860 }, { 1084, 0x201c }, { 1088, 0x811a }, { 1093, 0x8069 },
+ { 1098, 0x0048 }, { 1100, 0xea0c }, { 1107, 0xa80a }, { 1112, 0x1a64 },
+ { 1118, 0x5800 }, { 1121, 0x80a4 }, { 1125, 0xe090 }, { 1130, 0x1489 },
+ { 1135, 0x251a }, { 1141, 0xe004 }, { 1145, 0xc098 }, { 1150, 0x0096 },
+ /* 0x5a00 */
+ { 1154, 0x7011 }, { 1159, 0x400c }, { 1162, 0x2598 }, { 1168, 0x0001 },
+ { 1169, 0x11b0 }, { 1174, 0x4021 }, { 1177, 0x20a8 }, { 1181, 0x4c80 },
+ { 1185, 0x0800 }, { 1186, 0xd249 }, { 1193, 0x1085 }, { 1197, 0x8d2e },
+ { 1205, 0x8150 }, { 1209, 0x1400 }, { 1211, 0x4421 }, { 1215, 0x2060 },
+ /* 0x5b00 */
+ { 1218, 0x0103 }, { 1221, 0x2a80 }, { 1225, 0x2022 }, { 1228, 0x0110 },
+ { 1230, 0x1802 }, { 1233, 0x4044 }, { 1236, 0xc100 }, { 1239, 0xf000 },
+ { 1243, 0x4452 }, { 1248, 0x005b }, { 1253, 0xb300 }, { 1258, 0x1486 },
+ { 1263, 0xa003 }, { 1267, 0x07c0 }, { 1272, 0x8001 }, { 1274, 0x2012 },
+ /* 0x5c00 */
+ { 1277, 0x1000 }, { 1278, 0xc080 }, { 1281, 0x5a48 }, { 1287, 0x0065 },
+ { 1291, 0x0000 }, { 1291, 0x1600 }, { 1294, 0x238c }, { 1300, 0x3c31 },
+ { 1307, 0x8580 }, { 1311, 0xa004 }, { 1314, 0x044d }, { 1319, 0x0434 },
+ { 1323, 0x0a00 }, { 1325, 0x2084 }, { 1328, 0x4000 }, { 1329, 0x0016 },
+ /* 0x5d00 */
+ { 1332, 0x2042 }, { 1335, 0x0004 }, { 1336, 0x08d8 }, { 1341, 0xa212 },
+ { 1346, 0x054c }, { 1351, 0x8222 }, { 1355, 0x2417 }, { 1361, 0xc601 },
+ { 1366, 0x050a }, { 1370, 0x8a3c }, { 1377, 0x0881 }, { 1380, 0x0315 },
+ { 1385, 0x4888 }, { 1389, 0x0301 }, { 1392, 0x0211 }, { 1395, 0x0300 },
+ /* 0x5e00 */
+ { 1397, 0x2081 }, { 1400, 0x8134 }, { 1405, 0x4101 }, { 1408, 0x4024 },
+ { 1411, 0x0a00 }, { 1413, 0x5943 }, { 1420, 0x7d00 }, { 1426, 0x0001 },
+ { 1427, 0x4801 }, { 1430, 0x0000 }, { 1430, 0x1534 }, { 1436, 0xe00a },
+ { 1441, 0x5840 }, { 1445, 0x5036 }, { 1451, 0x0820 }, { 1453, 0x0000 },
+ /* 0x5f00 */
+ { 1453, 0x41c4 }, { 1458, 0x3200 }, { 1461, 0x591e }, { 1469, 0xa851 },
+ { 1475, 0x20b1 }, { 1480, 0x0911 }, { 1484, 0x8099 }, { 1489, 0x6534 },
+ { 1496, 0xa200 }, { 1499, 0x3040 }, { 1502, 0x9894 }, { 1508, 0x0103 },
+ { 1511, 0x0b90 }, { 1516, 0x401f }, { 1522, 0xf706 }, { 1531, 0x144c },
+ /* 0x6000 */
+ { 1536, 0x2480 }, { 1539, 0x8598 }, { 1545, 0x2010 }, { 1547, 0x0028 },
+ { 1549, 0x1381 }, { 1554, 0x20d2 }, { 1559, 0x0082 }, { 1561, 0xc002 },
+ { 1564, 0x4544 }, { 1569, 0x612a }, { 1575, 0x0134 }, { 1579, 0x4883 },
+ { 1584, 0xcf14 }, { 1592, 0x6a30 }, { 1598, 0x0024 }, { 1600, 0x3124 },
+ /* 0x6100 */
+ { 1605, 0x1484 }, { 1609, 0x52df }, { 1619, 0x0c04 }, { 1622, 0x02e3 },
+ { 1628, 0x0262 }, { 1632, 0x4000 }, { 1633, 0x1001 }, { 1635, 0x9904 },
+ { 1640, 0x281b }, { 1646, 0xb18c }, { 1653, 0x2521 }, { 1658, 0x1300 },
+ { 1661, 0xc007 }, { 1666, 0xf020 }, { 1671, 0xb2a6 }, { 1679, 0x0000 },
+ /* 0x6200 */
+ { 1679, 0x009a }, { 1683, 0x1028 }, { 1686, 0x0a8d }, { 1692, 0x2200 },
+ { 1694, 0x105c }, { 1699, 0x1457 }, { 1706, 0xa010 }, { 1709, 0x2408 },
+ { 1712, 0xe000 }, { 1715, 0x0001 }, { 1716, 0x0140 }, { 1718, 0xc4c8 },
+ { 1724, 0x4010 }, { 1726, 0x0460 }, { 1729, 0x0400 }, { 1730, 0x3014 },
+ /* 0x6300 */
+ { 1734, 0x2c18 }, { 1739, 0x0149 }, { 1743, 0x2600 }, { 1746, 0x1260 },
+ { 1750, 0x4c5e }, { 1758, 0x091c }, { 1763, 0x3060 }, { 1767, 0xb132 },
+ { 1774, 0x0494 }, { 1778, 0x4631 }, { 1784, 0xe050 }, { 1789, 0x2000 },
+ { 1790, 0x4122 }, { 1794, 0x103a }, { 1799, 0x1421 }, { 1803, 0x032c },
+ /* 0x6400 */
+ { 1808, 0x0600 }, { 1810, 0x4115 }, { 1815, 0x8635 }, { 1822, 0xa021 },
+ { 1826, 0x8800 }, { 1828, 0xbc1e }, { 1837, 0x200b }, { 1841, 0x2818 },
+ { 1845, 0x80a0 }, { 1848, 0xab03 }, { 1855, 0x114a }, { 1860, 0xe008 },
+ { 1864, 0x5e10 }, { 1870, 0x00a3 }, { 1874, 0x2630 }, { 1879, 0x88a1 },
+ /* 0x6500 */
+ { 1884, 0x8712 }, { 1890, 0xca58 }, { 1897, 0x4244 }, { 1901, 0x3402 },
+ { 1905, 0x0288 }, { 1908, 0x8015 }, { 1912, 0x0881 }, { 1915, 0x2400 },
+ { 1917, 0x0422 }, { 1920, 0x2124 }, { 1924, 0x4049 }, { 1928, 0x801c },
+ { 1932, 0x4304 }, { 1936, 0x8151 }, { 1941, 0x0000 }, { 1941, 0xc235 },
+ /* 0x6600 */
+ { 1948, 0x2311 }, { 1953, 0x6066 }, { 1959, 0x5e5e }, { 1969, 0x028b },
+ { 1974, 0x5461 }, { 1980, 0x1b82 }, { 1986, 0x1c03 }, { 1991, 0xdba8 },
+ { 2000, 0x3801 }, { 2004, 0x9e05 }, { 2011, 0x2011 }, { 2014, 0x8826 },
+ { 2019, 0xd10d }, { 2026, 0x8810 }, { 2029, 0x5900 }, { 2033, 0x0c00 },
+ /* 0x6700 */
+ { 2035, 0x40a0 }, { 2038, 0x1208 }, { 2041, 0x0005 }, { 2043, 0x4008 },
+ { 2045, 0x11a0 }, { 2049, 0x2030 }, { 2052, 0x5040 }, { 2055, 0x0850 },
+ { 2058, 0xc012 }, { 2062, 0x0b4a }, { 2068, 0x0000 }, { 2068, 0x3827 },
+ { 2075, 0x032d }, { 2081, 0x1284 }, { 2085, 0x0042 }, { 2087, 0x02c5 },
+ /* 0x6800 */
+ { 2092, 0x0000 }, { 2092, 0xa210 }, { 2096, 0xb180 }, { 2101, 0x880b },
+ { 2106, 0x1430 }, { 2110, 0x09a4 }, { 2115, 0xc800 }, { 2118, 0x1e27 },
+ { 2126, 0x0154 }, { 2130, 0x1540 }, { 2134, 0x462a }, { 2140, 0x0804 },
+ { 2142, 0x9120 }, { 2146, 0x324b }, { 2153, 0x3d20 }, { 2159, 0x3863 },
+ /* 0x6900 */
+ { 2166, 0x0640 }, { 2169, 0x00cb }, { 2174, 0x0000 }, { 2174, 0x092a },
+ { 2179, 0x4224 }, { 2183, 0x0880 }, { 2185, 0x1378 }, { 2192, 0x8c07 },
+ { 2198, 0x2001 }, { 2200, 0x0144 }, { 2203, 0xa962 }, { 2210, 0x1580 },
+ { 2214, 0x0120 }, { 2216, 0x00c2 }, { 2219, 0xc024 }, { 2223, 0x402a },
+ /* 0x6a00 */
+ { 2227, 0x800b }, { 2231, 0x2422 }, { 2235, 0x0111 }, { 2238, 0xc895 },
+ { 2245, 0x4660 }, { 2250, 0x0867 }, { 2256, 0x0490 }, { 2259, 0x400a },
+ { 2262, 0x0aca }, { 2268, 0xe802 }, { 2273, 0x8820 }, { 2276, 0xe013 },
+ { 2282, 0x1340 }, { 2286, 0x3071 }, { 2292, 0x1090 }, { 2295, 0x3007 },
+ /* 0x6b00 */
+ { 2300, 0x82cc }, { 2306, 0x4883 }, { 2311, 0x9910 }, { 2316, 0x8860 },
+ { 2320, 0x2440 }, { 2323, 0x2144 }, { 2327, 0x4881 }, { 2331, 0x6021 },
+ { 2335, 0x0024 }, { 2337, 0x8880 }, { 2340, 0x730d }, { 2348, 0x6301 },
+ { 2353, 0x1218 }, { 2357, 0x0440 }, { 2359, 0x40ca }, { 2364, 0x8282 },
+ /* 0x6c00 */
+ { 2368, 0x6234 }, { 2374, 0x8205 }, { 2378, 0x51c0 }, { 2383, 0x8c68 },
+ { 2389, 0xac00 }, { 2393, 0x1a14 }, { 2398, 0xa880 }, { 2402, 0x0b50 },
+ { 2407, 0x02e0 }, { 2411, 0x91b0 }, { 2417, 0x0000 }, { 2417, 0x0015 },
+ { 2420, 0xa044 }, { 2424, 0x1457 }, { 2431, 0x5a81 }, { 2437, 0x0014 },
+ /* 0x6d00 */
+ { 2439, 0xc490 }, { 2444, 0x040a }, { 2447, 0xc1c0 }, { 2452, 0x9202 },
+ { 2456, 0x0000 }, { 2456, 0xc080 }, { 2459, 0x80a2 }, { 2463, 0x1001 },
+ { 2465, 0x0084 }, { 2467, 0x01d6 }, { 2473, 0x1400 }, { 2475, 0xa290 },
+ { 2480, 0xc510 }, { 2485, 0xa840 }, { 2489, 0x8225 }, { 2494, 0x1051 },
+ /* 0x6e00 */
+ { 2498, 0x0011 }, { 2500, 0x4000 }, { 2501, 0x0084 }, { 2503, 0x1a44 },
+ { 2508, 0x8b30 }, { 2514, 0x709e }, { 2522, 0x010c }, { 2525, 0x2808 },
+ { 2528, 0x2000 }, { 2529, 0x0208 }, { 2531, 0x6081 }, { 2535, 0x880a },
+ { 2539, 0xe58b }, { 2548, 0x0000 }, { 2548, 0x6800 }, { 2551, 0x2a00 },
+ /* 0x6f00 */
+ { 2554, 0x3510 }, { 2559, 0x0d40 }, { 2563, 0xa640 }, { 2568, 0x1849 },
+ { 2573, 0x8000 }, { 2574, 0x668e }, { 2582, 0x1106 }, { 2586, 0x6000 },
+ { 2588, 0x3988 }, { 2594, 0x845d }, { 2601, 0xc1e1 }, { 2608, 0x1061 },
+ { 2612, 0x05a0 }, { 2616, 0x4400 }, { 2618, 0x0300 }, { 2620, 0x3221 },
+ /* 0x7000 */
+ { 2625, 0x20e1 }, { 2630, 0x0080 }, { 2631, 0x8009 }, { 2634, 0x1290 },
+ { 2638, 0x4f18 }, { 2645, 0x6030 }, { 2649, 0x5030 }, { 2653, 0x4060 },
+ { 2656, 0x0062 }, { 2659, 0x09f0 }, { 2665, 0x0810 }, { 2667, 0x0093 },
+ { 2671, 0x0400 }, { 2672, 0x117a }, { 2679, 0x0010 }, { 2680, 0x0400 },
+ /* 0x7100 */
+ { 2681, 0x98f8 }, { 2689, 0x4000 }, { 2690, 0xa801 }, { 2694, 0x0103 },
+ { 2697, 0x0ce2 }, { 2703, 0x5485 }, { 2709, 0x0101 }, { 2711, 0x0200 },
+ { 2712, 0x10a1 }, { 2716, 0x0c04 }, { 2719, 0x8005 }, { 2722, 0x840d },
+ { 2727, 0x1813 }, { 2732, 0x1648 }, { 2737, 0x0000 }, { 2737, 0x4100 },
+ /* 0x7200 */
+ { 2739, 0x0381 }, { 2743, 0xa488 }, { 2748, 0x8810 }, { 2751, 0x0310 },
+ { 2754, 0xc02e }, { 2760, 0x5469 }, { 2767, 0xc909 }, { 2773, 0x9982 },
+ { 2779, 0x6210 }, { 2783, 0x0808 }, { 2785, 0x6100 }, { 2788, 0x4012 },
+ { 2791, 0x1282 }, { 2795, 0x8160 }, { 2799, 0x0020 }, { 2800, 0x4c18 },
+ /* 0x7300 */
+ { 2805, 0x28b4 }, { 2811, 0x430c }, { 2816, 0x1194 }, { 2821, 0x2c26 },
+ { 2827, 0x2008 }, { 2829, 0xe145 }, { 2836, 0xdac1 }, { 2844, 0x1282 },
+ { 2848, 0x406b }, { 2854, 0xd1a9 }, { 2862, 0x2c65 }, { 2869, 0xb2a0 },
+ { 2875, 0x9a60 }, { 2881, 0x224c }, { 2886, 0x02ca }, { 2891, 0xaeb0 },
+ /* 0x7400 */
+ { 2899, 0x0493 }, { 2904, 0x0c02 }, { 2907, 0xff50 }, { 2917, 0x0203 },
+ { 2920, 0x28d9 }, { 2927, 0x2086 }, { 2931, 0x69c4 }, { 2938, 0x0006 },
+ { 2940, 0x82e3 }, { 2947, 0x9707 }, { 2955, 0xcf4b }, { 2965, 0x8a26 },
+ { 2971, 0x1300 }, { 2974, 0xcd09 }, { 2981, 0x8d10 }, { 2986, 0x9c10 },
+ /* 0x7500 */
+ { 2991, 0x0040 }, { 2992, 0x00c4 }, { 2995, 0x8693 }, { 3002, 0xe240 },
+ { 3007, 0x4189 }, { 3012, 0xc085 }, { 3017, 0x8002 }, { 3019, 0x7e02 },
+ { 3026, 0x0022 }, { 3028, 0x122d }, { 3034, 0x0014 }, { 3036, 0x8410 },
+ { 3039, 0xd053 }, { 3046, 0x9080 }, { 3049, 0xd093 }, { 3056, 0x0202 },
+ /* 0x7600 */
+ { 3058, 0x959d }, { 3067, 0x7a6c }, { 3076, 0x2268 }, { 3081, 0x172c },
+ { 3088, 0x0e3b }, { 3096, 0x8220 }, { 3099, 0xe030 }, { 3104, 0x0012 },
+ { 3106, 0x3022 }, { 3110, 0xb820 }, { 3115, 0x25fd }, { 3125, 0x2000 },
+ { 3126, 0x5a22 }, { 3132, 0x0210 }, { 3134, 0x1141 }, { 3138, 0x1243 },
+ /* 0x7700 */
+ { 3143, 0x4441 }, { 3147, 0x16b4 }, { 3154, 0xe104 }, { 3159, 0x6270 },
+ { 3165, 0xe464 }, { 3172, 0xd0c4 }, { 3178, 0x1495 }, { 3184, 0x241d },
+ { 3190, 0x3011 }, { 3194, 0x8470 }, { 3199, 0xc484 }, { 3204, 0x4022 },
+ { 3207, 0x0208 }, { 3209, 0xc226 }, { 3215, 0x1451 }, { 3220, 0x0913 },
+ /* 0x7800 */
+ { 3225, 0x6260 }, { 3230, 0x2002 }, { 3232, 0x600e }, { 3237, 0x00a1 },
+ { 3240, 0x5198 }, { 3246, 0x5004 }, { 3249, 0x451b }, { 3256, 0x4400 },
+ { 3258, 0x8400 }, { 3260, 0xe110 }, { 3265, 0x3112 }, { 3270, 0xa80f },
+ { 3277, 0x5380 }, { 3282, 0x886c }, { 3288, 0x0453 }, { 3293, 0x8ccc },
+ /* 0x7900 */
+ { 3300, 0x1041 }, { 3303, 0xd401 }, { 3308, 0x22a1 }, { 3313, 0xa832 },
+ { 3319, 0x8c70 }, { 3325, 0x1912 }, { 3330, 0x0a80 }, { 3333, 0x5a04 },
+ { 3338, 0x1800 }, { 3340, 0x197a }, { 3348, 0x8b02 }, { 3353, 0x0912 },
+ { 3357, 0x8594 }, { 3363, 0x6450 }, { 3368, 0x2c25 }, { 3374, 0x1102 },
+ /* 0x7a00 */
+ { 3377, 0x168c }, { 3383, 0x4822 }, { 3387, 0xa882 }, { 3392, 0x0731 },
+ { 3398, 0x11b0 }, { 3403, 0xb260 }, { 3409, 0x24a1 }, { 3414, 0x4120 },
+ { 3417, 0x0c65 }, { 3423, 0x4013 }, { 3427, 0x1009 }, { 3430, 0x1a28 },
+ { 3435, 0x5240 }, { 3439, 0x0802 }, { 3441, 0x1b00 }, { 3445, 0x6812 },
+ /* 0x7b00 */
+ { 3450, 0x0080 }, { 3451, 0x8010 }, { 3453, 0xee88 }, { 3461, 0xa013 },
+ { 3466, 0x4083 }, { 3470, 0x0020 }, { 3471, 0xa651 }, { 3478, 0x008c },
+ { 3481, 0x4210 }, { 3484, 0x4843 }, { 3489, 0x9021 }, { 3493, 0x3c65 },
+ { 3501, 0x0524 }, { 3505, 0x0ed0 }, { 3511, 0x0500 }, { 3513, 0x5734 },
+ /* 0x7c00 */
+ { 3521, 0xda5e }, { 3531, 0x0a00 }, { 3533, 0x1161 }, { 3538, 0x065a },
+ { 3544, 0x0440 }, { 3546, 0x7e2e }, { 3556, 0x628a }, { 3562, 0x3205 },
+ { 3567, 0x80c0 }, { 3570, 0x4010 }, { 3572, 0x0041 }, { 3574, 0x9cc1 },
+ { 3581, 0xa390 }, { 3587, 0x26b8 }, { 3594, 0x0a40 }, { 3597, 0x0020 },
+ /* 0x7d00 */
+ { 3598, 0x8388 }, { 3603, 0x604e }, { 3609, 0x2448 }, { 3613, 0x7002 },
+ { 3617, 0x2183 }, { 3622, 0x368a }, { 3629, 0x04a0 }, { 3632, 0x8d01 },
+ { 3637, 0x396e }, { 3646, 0x60c2 }, { 3651, 0x04c0 }, { 3654, 0x02c8 },
+ { 3658, 0x707c }, { 3666, 0x0280 }, { 3668, 0x2c64 }, { 3674, 0x0662 },
+ /* 0x7e00 */
+ { 3679, 0x0101 }, { 3681, 0x30a3 }, { 3687, 0xb181 }, { 3693, 0x8048 },
+ { 3696, 0x40b0 }, { 3700, 0x8105 }, { 3704, 0xc826 }, { 3710, 0x4108 },
+ { 3713, 0x24c2 }, { 3718, 0x6522 }, { 3724, 0x0000 }, { 3724, 0x0000 },
+ { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 },
+ /* 0x7f00 */
+ { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0xf800 },
+ { 3729, 0x8098 }, { 3733, 0x380c }, { 3738, 0x207a }, { 3744, 0xe002 },
+ { 3748, 0xa801 }, { 3752, 0x10c3 }, { 3757, 0x2446 }, { 3762, 0x9010 },
+ { 3765, 0xc109 }, { 3770, 0x8800 }, { 3772, 0xd128 }, { 3778, 0xe404 },
+ /* 0x8000 */
+ { 3783, 0xe580 }, { 3789, 0xe05a }, { 3796, 0x5051 }, { 3801, 0x56b1 },
+ { 3809, 0x0011 }, { 3811, 0x0000 }, { 3811, 0x2051 }, { 3815, 0x0022 },
+ { 3817, 0x4102 }, { 3820, 0x5000 }, { 3822, 0x08c0 }, { 3825, 0x0300 },
+ { 3827, 0xa100 }, { 3830, 0x01b4 }, { 3835, 0x6001 }, { 3838, 0x464d },
+ /* 0x8100 */
+ { 3845, 0x0808 }, { 3847, 0x51c0 }, { 3852, 0x1091 }, { 3856, 0x1421 },
+ { 3860, 0x14a0 }, { 3864, 0x0084 }, { 3866, 0xa383 }, { 3873, 0x0080 },
+ { 3874, 0x4872 }, { 3880, 0x4941 }, { 3885, 0x4004 }, { 3887, 0x0814 },
+ { 3890, 0xcc28 }, { 3896, 0x68a0 }, { 3901, 0x1812 }, { 3905, 0xa367 },
+ /* 0x8200 */
+ { 3914, 0x8009 }, { 3917, 0x2618 }, { 3922, 0x0106 }, { 3925, 0x0414 },
+ { 3928, 0xc878 }, { 3935, 0x1042 }, { 3938, 0x2089 }, { 3942, 0xa810 },
+ { 3946, 0x469b }, { 3954, 0x0d52 }, { 3960, 0x479b }, { 3969, 0xd495 },
+ { 3977, 0x0040 }, { 3978, 0x0421 }, { 3981, 0xa515 }, { 3988, 0x60c0 },
+ /* 0x8300 */
+ { 3992, 0x0d83 }, { 3998, 0xe800 }, { 4002, 0x7006 }, { 4007, 0x3489 },
+ { 4013, 0x609c }, { 4019, 0x00fa }, { 4025, 0x0000 }, { 4025, 0xa101 },
+ { 4029, 0x2055 }, { 4034, 0x3b34 }, { 4042, 0x32c0 }, { 4047, 0xc000 },
+ { 4049, 0x8281 }, { 4053, 0x2013 }, { 4057, 0x0500 }, { 4059, 0x1340 },
+ /* 0x8400 */
+ { 4063, 0x8442 }, { 4067, 0x0222 }, { 4070, 0x8000 }, { 4071, 0x0200 },
+ { 4072, 0xa5a0 }, { 4078, 0x1746 }, { 4085, 0x04b1 }, { 4090, 0x3159 },
+ { 4097, 0x0022 }, { 4099, 0x402c }, { 4103, 0x8740 }, { 4108, 0x6412 },
+ { 4113, 0x9185 }, { 4119, 0x1008 }, { 4121, 0x8480 }, { 4124, 0x2c87 },
+ /* 0x8500 */
+ { 4131, 0x508c }, { 4136, 0x5001 }, { 4139, 0x8cbc }, { 4147, 0x805c },
+ { 4152, 0x8040 }, { 4154, 0xf24f }, { 4164, 0x8817 }, { 4170, 0xae00 },
+ { 4175, 0x9a62 }, { 4182, 0xa108 }, { 4186, 0x20a5 }, { 4191, 0xf1d0 },
+ { 4199, 0x4c84 }, { 4204, 0x8500 }, { 4207, 0x2141 }, { 4211, 0x9048 },
+ /* 0x8600 */
+ { 4215, 0x6031 }, { 4220, 0x4b07 }, { 4227, 0x0282 }, { 4230, 0x3540 },
+ { 4235, 0x0047 }, { 4239, 0x23cc }, { 4246, 0x921f }, { 4254, 0x04e0 },
+ { 4258, 0x2100 }, { 4260, 0x1542 }, { 4265, 0x21c2 }, { 4270, 0x83ba },
+ { 4278, 0x002b }, { 4282, 0x14a6 }, { 4288, 0x00a9 }, { 4292, 0x3400 },
+ /* 0x8700 */
+ { 4295, 0xc8b0 }, { 4301, 0xc219 }, { 4307, 0xc10a }, { 4312, 0x7606 },
+ { 4319, 0x2029 }, { 4323, 0x2100 }, { 4325, 0x8032 }, { 4329, 0x0806 },
+ { 4332, 0x1bf8 }, { 4341, 0x43a9 }, { 4348, 0x7089 }, { 4354, 0xc022 },
+ { 4358, 0x4702 }, { 4363, 0x9660 }, { 4369, 0x2c1c }, { 4375, 0x850a },
+ /* 0x8800 */
+ { 4380, 0x0e4a }, { 4386, 0xdf1d }, { 4397, 0x6100 }, { 4400, 0x1425 },
+ { 4405, 0x4f2a }, { 4413, 0x9562 }, { 4420, 0x0211 }, { 4423, 0x0a02 },
+ { 4426, 0x0001 }, { 4427, 0x9d00 }, { 4432, 0x0501 }, { 4435, 0x6400 },
+ { 4438, 0x7c01 }, { 4444, 0x480e }, { 4449, 0x8080 }, { 4451, 0x00a3 },
+ /* 0x8900 */
+ { 4455, 0xe042 }, { 4460, 0x1760 }, { 4466, 0x01c1 }, { 4470, 0x4627 },
+ { 4477, 0x8265 }, { 4483, 0x1c84 }, { 4488, 0x480e }, { 4493, 0x3c29 },
+ { 4500, 0x2200 }, { 4502, 0x9831 }, { 4508, 0x0021 }, { 4510, 0x10f1 },
+ { 4516, 0x0000 }, { 4516, 0x01f0 }, { 4521, 0x2a20 }, { 4525, 0xa24a },
+ /* 0x8a00 */
+ { 4531, 0x80b0 }, { 4535, 0x4036 }, { 4540, 0x9855 }, { 4547, 0x60a0 },
+ { 4551, 0x62a9 }, { 4558, 0x31c8 }, { 4564, 0x00a2 }, { 4567, 0xcee0 },
+ { 4575, 0x8849 }, { 4580, 0x82c5 }, { 4586, 0xc280 }, { 4590, 0x48c8 },
+ { 4595, 0x0748 }, { 4600, 0xa0ba }, { 4607, 0x1000 }, { 4608, 0x9071 },
+ /* 0x8b00 */
+ { 4614, 0x0c60 }, { 4618, 0xd002 }, { 4622, 0x2000 }, { 4623, 0x1081 },
+ { 4626, 0x217c }, { 4633, 0x421c }, { 4638, 0x2008 }, { 4640, 0x5340 },
+ { 4645, 0xa832 }, { 4651, 0xd030 }, { 4656, 0x0000 }, { 4656, 0x0000 },
+ { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 },
+ /* 0x8c00 */
+ { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x6300 },
+ { 4660, 0x8aa0 }, { 4665, 0x2b9a }, { 4673, 0x2358 }, { 4679, 0x4868 },
+ { 4684, 0x08c0 }, { 4687, 0x1a0d }, { 4693, 0x0010 }, { 4694, 0x0600 },
+ { 4696, 0x8a60 }, { 4701, 0x2260 }, { 4705, 0x9102 }, { 4709, 0xc1a5 },
+ /* 0x8d00 */
+ { 4716, 0x020a }, { 4719, 0x0884 }, { 4722, 0x0000 }, { 4722, 0x0000 },
+ { 4722, 0x0000 }, { 4722, 0x0000 }, { 4722, 0x5220 }, { 4726, 0x8000 },
+ { 4727, 0x2114 }, { 4731, 0xc023 }, { 4736, 0x9841 }, { 4741, 0x1aa4 },
+ { 4747, 0x45e1 }, { 4754, 0x02b2 }, { 4759, 0x10b0 }, { 4763, 0x2017 },
+ /* 0x8e00 */
+ { 4768, 0x0872 }, { 4773, 0x0052 }, { 4776, 0x00cf }, { 4782, 0x23ca },
+ { 4789, 0xe803 }, { 4795, 0x7810 }, { 4800, 0xb206 }, { 4806, 0x0e03 },
+ { 4811, 0x020c }, { 4814, 0x6c25 }, { 4821, 0x6284 }, { 4826, 0x0c28 },
+ { 4830, 0x809b }, { 4836, 0x1012 }, { 4839, 0x6100 }, { 4842, 0x0683 },
+ /* 0x8f00 */
+ { 4847, 0x8185 }, { 4852, 0x41c1 }, { 4857, 0x71ab }, { 4866, 0x04f0 },
+ { 4871, 0x808b }, { 4876, 0x613e }, { 4884, 0x0020 }, { 4885, 0x0000 },
+ { 4885, 0x0000 }, { 4885, 0x2000 }, { 4886, 0x0073 }, { 4891, 0x4160 },
+ { 4895, 0x2c43 }, { 4901, 0x002d }, { 4905, 0x4119 }, { 4910, 0x4862 },
+ /* 0x9000 */
+ { 4915, 0x1114 }, { 4919, 0x0900 }, { 4921, 0xb700 }, { 4927, 0x8098 },
+ { 4931, 0x1018 }, { 4934, 0x2800 }, { 4936, 0x10c4 }, { 4940, 0x0211 },
+ { 4943, 0x5920 }, { 4948, 0x0ba1 }, { 4954, 0x0027 }, { 4958, 0x605d },
+ { 4965, 0x11b8 }, { 4971, 0xb3a4 }, { 4979, 0x8820 }, { 4982, 0xc051 },
+ /* 0x9100 */
+ { 4987, 0x2171 }, { 4993, 0x55d1 }, { 5001, 0xc2ad }, { 5009, 0x36d2 },
+ { 5017, 0x8188 }, { 5021, 0x0e88 }, { 5026, 0x2092 }, { 5030, 0x0e10 },
+ { 5034, 0x446a }, { 5040, 0x413a }, { 5046, 0x7142 }, { 5052, 0xb84f },
+ { 5061, 0x002c }, { 5064, 0x4698 }, { 5070, 0xf630 }, { 5078, 0x2a83 },
+ /* 0x9200 */
+ { 5084, 0x16f3 }, { 5093, 0x314d }, { 5100, 0xc178 }, { 5107, 0x5769 },
+ { 5116, 0xe4cd }, { 5125, 0x3302 }, { 5130, 0xc3a3 }, { 5138, 0xbbe1 },
+ { 5148, 0x6700 }, { 5153, 0x8284 }, { 5157, 0x89b1 }, { 5164, 0xbd44 },
+ { 5172, 0x79ef }, { 5184, 0xb3a9 }, { 5193, 0x51ab }, { 5201, 0x8a01 },
+ /* 0x9300 */
+ { 5205, 0x2105 }, { 5209, 0xf032 }, { 5216, 0x06b2 }, { 5222, 0x00d8 },
+ { 5226, 0x0380 }, { 5229, 0x45a7 }, { 5237, 0xa6b0 }, { 5244, 0xa45b },
+ { 5252, 0xad07 }, { 5260, 0x4924 }, { 5265, 0x0b5a }, { 5272, 0x0470 },
+ { 5276, 0x3ef2 }, { 5286, 0xd208 }, { 5291, 0x00c4 }, { 5294, 0x2f80 },
+ /* 0x9400 */
+ { 5300, 0xe316 }, { 5308, 0x80e0 }, { 5312, 0xc000 }, { 5314, 0xa81e },
+ { 5321, 0x1528 }, { 5326, 0x9220 }, { 5330, 0xe90a }, { 5337, 0x0006 },
+ { 5339, 0x0018 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
+ { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
+ /* 0x9500 */
+ { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
+ { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x4300 },
+ { 5344, 0x7110 }, { 5349, 0xe000 }, { 5352, 0x1a42 }, { 5357, 0xa450 },
+ { 5362, 0x0b40 }, { 5366, 0xe60f }, { 5375, 0x0051 }, { 5378, 0x0000 },
+ /* 0x9600 */
+ { 5378, 0x0000 }, { 5378, 0x6000 }, { 5380, 0x1074 }, { 5385, 0x378a },
+ { 5393, 0x0002 }, { 5394, 0x01d4 }, { 5399, 0x4002 }, { 5401, 0xd810 },
+ { 5406, 0x021e }, { 5411, 0xa442 }, { 5416, 0xc270 }, { 5422, 0x0408 },
+ { 5424, 0x0400 }, { 5425, 0xe504 }, { 5431, 0x8200 }, { 5433, 0x0402 },
+ /* 0x9700 */
+ { 5435, 0x022c }, { 5439, 0x2c00 }, { 5442, 0x010e }, { 5446, 0x000a },
+ { 5448, 0xc40a }, { 5453, 0x0da0 }, { 5458, 0x4488 }, { 5462, 0xa9c8 },
+ { 5469, 0x0201 }, { 5471, 0xc6e0 }, { 5478, 0x5004 }, { 5481, 0xd766 },
+ { 5491, 0x76b2 }, { 5500, 0x6b93 }, { 5509, 0x8013 }, { 5513, 0x0592 },
+ /* 0x9800 */
+ { 5518, 0x6480 }, { 5522, 0x5250 }, { 5527, 0xc869 }, { 5534, 0x402d },
+ { 5539, 0x0490 }, { 5542, 0x06ce }, { 5549, 0x146c }, { 5555, 0x0000 },
+ { 5555, 0x0000 }, { 5555, 0x0000 }, { 5555, 0x6800 }, { 5558, 0x8d91 },
+ { 5565, 0x1124 }, { 5569, 0x0000 }, { 5569, 0x04ea }, { 5575, 0x0048 },
+ /* 0x9900 */
+ { 5577, 0x0184 }, { 5580, 0x9ce2 }, { 5588, 0x08c4 }, { 5592, 0x1e3e },
+ { 5601, 0x61c3 }, { 5608, 0xdb10 }, { 5615, 0x0001 }, { 5616, 0x0000 },
+ { 5616, 0x0000 }, { 5616, 0xa800 }, { 5619, 0x0040 }, { 5620, 0xa627 },
+ { 5628, 0x0208 }, { 5630, 0x5618 }, { 5636, 0x1c80 }, { 5640, 0x6231 },
+ /* 0x9a00 */
+ { 5646, 0x181c }, { 5651, 0x4043 }, { 5655, 0x609d }, { 5662, 0x0168 },
+ { 5666, 0x5c92 }, { 5673, 0x2052 }, { 5677, 0x0000 }, { 5677, 0x0000 },
+ { 5677, 0x0000 }, { 5677, 0x0000 }, { 5677, 0xd400 }, { 5681, 0xca74 },
+ { 5689, 0x414a }, { 5694, 0x18e5 }, { 5701, 0x12b1 }, { 5707, 0xa62c },
+ /* 0x9b00 */
+ { 5714, 0x7b3f }, { 5726, 0x1a45 }, { 5732, 0x2841 }, { 5736, 0x26b8 },
+ { 5743, 0x1900 }, { 5746, 0x48e0 }, { 5751, 0x7d6a }, { 5761, 0x83a8 },
+ { 5767, 0xaef1 }, { 5777, 0x6411 }, { 5782, 0x12c0 }, { 5786, 0xd987 },
+ { 5795, 0x4182 }, { 5799, 0xa181 }, { 5804, 0x8ca0 }, { 5809, 0xa788 },
+ /* 0x9c00 */
+ { 5816, 0x8805 }, { 5820, 0x5742 }, { 5827, 0x07cc }, { 5834, 0x20e2 },
+ { 5839, 0xc63a }, { 5847, 0xf959 }, { 5857, 0x4f08 }, { 5863, 0x08a5 },
+ { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 },
+ { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0040 }, { 5869, 0x0284 },
+ /* 0x9d00 */
+ { 5872, 0x0804 }, { 5874, 0x7182 }, { 5880, 0x8000 }, { 5881, 0x341d },
+ { 5888, 0x04ac }, { 5893, 0x8018 }, { 5896, 0x0e2c }, { 5902, 0x58c1 },
+ { 5908, 0x6458 }, { 5914, 0x01ec }, { 5920, 0x5402 }, { 5924, 0x9222 },
+ { 5929, 0x0688 }, { 5933, 0xc4f0 }, { 5940, 0x4aa1 }, { 5946, 0x4019 },
+ /* 0x9e00 */
+ { 5950, 0x4484 }, { 5954, 0x3267 }, { 5962, 0x0000 }, { 5962, 0x0000 },
+ { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x1c00 },
+ { 5965, 0xc0bd }, { 5973, 0x4940 }, { 5977, 0xd110 }, { 5982, 0x0039 },
+ { 5986, 0x0940 }, { 5989, 0x8020 }, { 5991, 0x7090 }, { 5996, 0x8127 },
+ /* 0x9f00 */
+ { 6002, 0x820c }, { 6006, 0x8ed7 }, { 6016, 0x8c44 }, { 6021, 0xb696 },
+ { 6030, 0x00fa }, { 6036, 0x65e8 }, { 6044, 0xe300 }, { 6049, 0x242b },
+ { 6055, 0x8000 }, { 6056, 0x40d7 }, { 6063, 0x002e },
+};
+
+static int
+jisx0212_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc < 0x0460)
+ summary = &jisx0212_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x2100 && wc < 0x2130)
+ summary = &jisx0212_uni2indx_page21[(wc>>4)-0x210];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &jisx0212_uni2indx_page4e[(wc>>4)-0x4e0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = jisx0212_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/koi8_c.h b/libX11/src/xlibi18n/lcUniConv/koi8_c.h
index d870a01db..aae4929d2 100644
--- a/libX11/src/xlibi18n/lcUniConv/koi8_c.h
+++ b/libX11/src/xlibi18n/lcUniConv/koi8_c.h
@@ -1,102 +1,102 @@
-
-/*
- * KOI8-C
- */
-
-static const unsigned short koi8_c_2uni[128] = {
- /* 0x80 */
- 0x0493, 0x0497, 0x049b, 0x049d, 0x04a3, 0x04af, 0x04b1, 0x04b3,
- 0x04b7, 0x04b9, 0x04bb, 0x2580, 0x04d9, 0x04e3, 0x04e9, 0x04ef,
- /* 0x90 */
- 0x0492, 0x0496, 0x049a, 0x049c, 0x04a2, 0x04ae, 0x04b0, 0x04b2,
- 0x04b6, 0x04b8, 0x04ba, 0x2321, 0x04d8, 0x04e2, 0x04e8, 0x04ee,
- /* 0xa0 */
- 0x00a0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457,
- 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x0491, 0x045e, 0x045f,
- /* 0xb0 */
- 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407,
- 0x0486, 0x0409, 0x040a, 0x040b, 0x040c, 0x0490, 0x040e, 0x040f,
- /* 0xc0 */
- 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
- 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- /* 0xd0 */
- 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
- 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
- /* 0xe0 */
- 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
- 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- /* 0xf0 */
- 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
- 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
-};
-
-static int
-koi8_c_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) koi8_c_2uni[c-0x80];
- return 1;
-}
-
-static const unsigned char koi8_c_page00[1] = {
- 0xa0, /* 0xa0-0xa7 */
-};
-static const unsigned char koi8_c_page04[240] = {
- 0x00, 0xb3, 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x00-0x07 */
- 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0xbf, /* 0x08-0x0f */
- 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
- 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
- 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
- 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
- 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
- 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
- 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
- 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
- 0x00, 0xa3, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x50-0x57 */
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0xbd, 0xad, 0x90, 0x80, 0x00, 0x00, 0x91, 0x81, /* 0x90-0x97 */
- 0x00, 0x00, 0x92, 0x82, 0x93, 0x83, 0x00, 0x00, /* 0x98-0x9f */
- 0x00, 0x00, 0x94, 0x84, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x85, /* 0xa8-0xaf */
- 0x96, 0x86, 0x97, 0x87, 0x00, 0x00, 0x98, 0x88, /* 0xb0-0xb7 */
- 0x99, 0x89, 0x9a, 0x8a, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x9c, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x9d, 0x8d, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x9e, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x8f, /* 0xe8-0xef */
-};
-static const unsigned char koi8_c_page22[1] = {
- 0xb0, /* 0x16-0x16 */
-};
-
-static int
-koi8_c_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00a1)
- c = koi8_c_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x04ef)
- c = koi8_c_page04[wc-0x0400];
- else if (wc >= 0x2216 && wc < 0x2217)
- c = koi8_c_page22[wc-0x2216];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * KOI8-C
+ */
+
+static const unsigned short koi8_c_2uni[128] = {
+ /* 0x80 */
+ 0x0493, 0x0497, 0x049b, 0x049d, 0x04a3, 0x04af, 0x04b1, 0x04b3,
+ 0x04b7, 0x04b9, 0x04bb, 0x2580, 0x04d9, 0x04e3, 0x04e9, 0x04ef,
+ /* 0x90 */
+ 0x0492, 0x0496, 0x049a, 0x049c, 0x04a2, 0x04ae, 0x04b0, 0x04b2,
+ 0x04b6, 0x04b8, 0x04ba, 0x2321, 0x04d8, 0x04e2, 0x04e8, 0x04ee,
+ /* 0xa0 */
+ 0x00a0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457,
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x0491, 0x045e, 0x045f,
+ /* 0xb0 */
+ 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407,
+ 0x0486, 0x0409, 0x040a, 0x040b, 0x040c, 0x0490, 0x040e, 0x040f,
+ /* 0xc0 */
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ /* 0xd0 */
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ /* 0xe0 */
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ /* 0xf0 */
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
+};
+
+static int
+koi8_c_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) koi8_c_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char koi8_c_page00[1] = {
+ 0xa0, /* 0xa0-0xa7 */
+};
+static const unsigned char koi8_c_page04[240] = {
+ 0x00, 0xb3, 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x00-0x07 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0xbf, /* 0x08-0x0f */
+ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
+ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
+ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
+ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
+ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
+ 0x00, 0xa3, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x50-0x57 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xbd, 0xad, 0x90, 0x80, 0x00, 0x00, 0x91, 0x81, /* 0x90-0x97 */
+ 0x00, 0x00, 0x92, 0x82, 0x93, 0x83, 0x00, 0x00, /* 0x98-0x9f */
+ 0x00, 0x00, 0x94, 0x84, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x85, /* 0xa8-0xaf */
+ 0x96, 0x86, 0x97, 0x87, 0x00, 0x00, 0x98, 0x88, /* 0xb0-0xb7 */
+ 0x99, 0x89, 0x9a, 0x8a, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x9c, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x9d, 0x8d, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x9e, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x8f, /* 0xe8-0xef */
+};
+static const unsigned char koi8_c_page22[1] = {
+ 0xb0, /* 0x16-0x16 */
+};
+
+static int
+koi8_c_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00a1)
+ c = koi8_c_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x04ef)
+ c = koi8_c_page04[wc-0x0400];
+ else if (wc >= 0x2216 && wc < 0x2217)
+ c = koi8_c_page22[wc-0x2216];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/koi8_r.h b/libX11/src/xlibi18n/lcUniConv/koi8_r.h
index 37ca594f6..fd8f19d66 100644
--- a/libX11/src/xlibi18n/lcUniConv/koi8_r.h
+++ b/libX11/src/xlibi18n/lcUniConv/koi8_r.h
@@ -1,134 +1,134 @@
-
-/*
- * KOI8-R
- */
-
-/* Specification: RFC 1489 */
-
-static const unsigned short koi8_r_2uni[128] = {
- /* 0x80 */
- 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
- 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
- /* 0x90 */
- 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
- 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
- /* 0xa0 */
- 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
- 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
- /* 0xb0 */
- 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
- 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,
- /* 0xc0 */
- 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
- 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- /* 0xd0 */
- 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
- 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
- /* 0xe0 */
- 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
- 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- /* 0xf0 */
- 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
- 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
-};
-
-static int
-koi8_r_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) koi8_r_2uni[c-0x80];
- return 1;
-}
-
-static const unsigned char koi8_r_page00[88] = {
- 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
- 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
-};
-static const unsigned char koi8_r_page04[88] = {
- 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
- 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
- 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
- 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
- 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
- 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
- 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
- 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
- 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
-};
-static const unsigned char koi8_r_page22[80] = {
- 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
-};
-static const unsigned char koi8_r_page23[8] = {
- 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
-};
-static const unsigned char koi8_r_page25[168] = {
- 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, /* 0x50-0x57 */
- 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
- 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, /* 0x60-0x67 */
- 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
-};
-
-static int
-koi8_r_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00f8)
- c = koi8_r_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x0458)
- c = koi8_r_page04[wc-0x0400];
- else if (wc >= 0x2218 && wc < 0x2268)
- c = koi8_r_page22[wc-0x2218];
- else if (wc >= 0x2320 && wc < 0x2328)
- c = koi8_r_page23[wc-0x2320];
- else if (wc >= 0x2500 && wc < 0x25a8)
- c = koi8_r_page25[wc-0x2500];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * KOI8-R
+ */
+
+/* Specification: RFC 1489 */
+
+static const unsigned short koi8_r_2uni[128] = {
+ /* 0x80 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+ 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+ /* 0x90 */
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+ 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+ /* 0xa0 */
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
+ /* 0xb0 */
+ 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,
+ /* 0xc0 */
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ /* 0xd0 */
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ /* 0xe0 */
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ /* 0xf0 */
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
+};
+
+static int
+koi8_r_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) koi8_r_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char koi8_r_page00[88] = {
+ 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
+};
+static const unsigned char koi8_r_page04[88] = {
+ 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
+ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
+ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
+ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
+ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
+ 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+};
+static const unsigned char koi8_r_page22[80] = {
+ 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
+};
+static const unsigned char koi8_r_page23[8] = {
+ 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char koi8_r_page25[168] = {
+ 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, /* 0x50-0x57 */
+ 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
+ 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, /* 0x60-0x67 */
+ 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+};
+
+static int
+koi8_r_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = koi8_r_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0458)
+ c = koi8_r_page04[wc-0x0400];
+ else if (wc >= 0x2218 && wc < 0x2268)
+ c = koi8_r_page22[wc-0x2218];
+ else if (wc >= 0x2320 && wc < 0x2328)
+ c = koi8_r_page23[wc-0x2320];
+ else if (wc >= 0x2500 && wc < 0x25a8)
+ c = koi8_r_page25[wc-0x2500];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/koi8_u.h b/libX11/src/xlibi18n/lcUniConv/koi8_u.h
index e094419bc..048d9f028 100644
--- a/libX11/src/xlibi18n/lcUniConv/koi8_u.h
+++ b/libX11/src/xlibi18n/lcUniConv/koi8_u.h
@@ -1,142 +1,142 @@
-
-/*
- * KOI8-U
- */
-
-/* Specification: RFC 2319 */
-
-static const unsigned short koi8_u_2uni[128] = {
- /* 0x80 */
- 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
- 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
- /* 0x90 */
- 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
- 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
- /* 0xa0 */
- 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457,
- 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e,
- /* 0xb0 */
- 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407,
- 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9,
- /* 0xc0 */
- 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
- 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- /* 0xd0 */
- 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
- 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
- /* 0xe0 */
- 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
- 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- /* 0xf0 */
- 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
- 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
-};
-
-static int
-koi8_u_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) koi8_u_2uni[c-0x80];
- return 1;
-}
-
-static const unsigned char koi8_u_page00[88] = {
- 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
- 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
-};
-static const unsigned char koi8_u_page04[152] = {
- 0x00, 0xb3, 0x00, 0x00, 0xb4, 0x00, 0xb6, 0xb7, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
- 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
- 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
- 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
- 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
- 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
- 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
- 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
- 0x00, 0xa3, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0xbd, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
-};
-static const unsigned char koi8_u_page22[80] = {
- 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
-};
-static const unsigned char koi8_u_page23[8] = {
- 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
-};
-static const unsigned char koi8_u_page25[168] = {
- 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0xa0, 0xa1, 0xa2, 0x00, 0xa5, 0x00, 0x00, 0xa8, /* 0x50-0x57 */
- 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
- 0xb1, 0xb2, 0x00, 0xb5, 0x00, 0x00, 0xb8, 0xb9, /* 0x60-0x67 */
- 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
-};
-
-static int
-koi8_u_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00f8)
- c = koi8_u_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x0498)
- c = koi8_u_page04[wc-0x0400];
- else if (wc >= 0x2218 && wc < 0x2268)
- c = koi8_u_page22[wc-0x2218];
- else if (wc >= 0x2320 && wc < 0x2328)
- c = koi8_u_page23[wc-0x2320];
- else if (wc >= 0x2500 && wc < 0x25a8)
- c = koi8_u_page25[wc-0x2500];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * KOI8-U
+ */
+
+/* Specification: RFC 2319 */
+
+static const unsigned short koi8_u_2uni[128] = {
+ /* 0x80 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+ 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+ /* 0x90 */
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+ 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+ /* 0xa0 */
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e,
+ /* 0xb0 */
+ 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9,
+ /* 0xc0 */
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ /* 0xd0 */
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ /* 0xe0 */
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ /* 0xf0 */
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
+};
+
+static int
+koi8_u_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) koi8_u_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char koi8_u_page00[88] = {
+ 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
+};
+static const unsigned char koi8_u_page04[152] = {
+ 0x00, 0xb3, 0x00, 0x00, 0xb4, 0x00, 0xb6, 0xb7, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
+ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
+ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
+ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
+ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
+ 0x00, 0xa3, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xbd, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char koi8_u_page22[80] = {
+ 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
+};
+static const unsigned char koi8_u_page23[8] = {
+ 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char koi8_u_page25[168] = {
+ 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xa0, 0xa1, 0xa2, 0x00, 0xa5, 0x00, 0x00, 0xa8, /* 0x50-0x57 */
+ 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
+ 0xb1, 0xb2, 0x00, 0xb5, 0x00, 0x00, 0xb8, 0xb9, /* 0x60-0x67 */
+ 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+};
+
+static int
+koi8_u_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = koi8_u_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0498)
+ c = koi8_u_page04[wc-0x0400];
+ else if (wc >= 0x2218 && wc < 0x2268)
+ c = koi8_u_page22[wc-0x2218];
+ else if (wc >= 0x2320 && wc < 0x2328)
+ c = koi8_u_page23[wc-0x2320];
+ else if (wc >= 0x2500 && wc < 0x25a8)
+ c = koi8_u_page25[wc-0x2500];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/ksc5601.h b/libX11/src/xlibi18n/lcUniConv/ksc5601.h
index 843dcff19..55b6306df 100644
--- a/libX11/src/xlibi18n/lcUniConv/ksc5601.h
+++ b/libX11/src/xlibi18n/lcUniConv/ksc5601.h
@@ -1,3002 +1,3002 @@
-
-/*
- * KSC5601.1987-0
- */
-
-static const unsigned short ksc5601_2uni_page21[1115] = {
- /* 0x21 */
- 0x3000, 0x3001, 0x3002, 0x00b7, 0x2025, 0x2026, 0x00a8, 0x3003,
- 0x00ad, 0x2015, 0x2225, 0xff3c, 0x223c, 0x2018, 0x2019, 0x201c,
- 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
- 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7,
- 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032, 0x2033,
- 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640, 0x2220,
- 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7, 0x203b,
- 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1,
- 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190, 0x2191,
- 0x2193, 0x2194, 0x3013, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d,
- 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282,
- 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, 0xffe2,
- /* 0x22 */
- 0x21d2, 0x21d4, 0x2200, 0x2203, 0x00b4, 0xff5e, 0x02c7, 0x02d8,
- 0x02dd, 0x02da, 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf, 0x02d0,
- 0x222e, 0x2211, 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1, 0x25c0,
- 0x25b7, 0x25b6, 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663,
- 0x2299, 0x25c8, 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4, 0x25a5,
- 0x25a8, 0x25a7, 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, 0x261c,
- 0x261e, 0x00b6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196,
- 0x2198, 0x266d, 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, 0x2116,
- 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x23 */
- 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, 0xff08,
- 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
- 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
- 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
- 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
- 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
- 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
- 0xff39, 0xff3a, 0xff3b, 0xffe6, 0xff3d, 0xff3e, 0xff3f, 0xff40,
- 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
- 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
- 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
- 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
- /* 0x24 */
- 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
- 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
- 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
- 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
- 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
- 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160,
- 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168,
- 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, 0x3170,
- 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178,
- 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f, 0x3180,
- 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187, 0x3188,
- 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e,
- /* 0x25 */
- 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
- 0x2178, 0x2179, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2160,
- 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
- 0x2169, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
- 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
- 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
- 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
- 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x26 */
- 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c,
- 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b,
- 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f,
- 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542,
- 0x2512, 0x2511, 0x251a, 0x2519, 0x2516, 0x2515, 0x250e, 0x250d,
- 0x251e, 0x251f, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252a,
- 0x252d, 0x252e, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253a,
- 0x253d, 0x253e, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546,
- 0x2547, 0x2548, 0x2549, 0x254a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x27 */
- 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33c4, 0x33a3, 0x33a4,
- 0x33a5, 0x33a6, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d, 0x339e,
- 0x339f, 0x33a0, 0x33a1, 0x33a2, 0x33ca, 0x338d, 0x338e, 0x338f,
- 0x33cf, 0x3388, 0x3389, 0x33c8, 0x33a7, 0x33a8, 0x33b0, 0x33b1,
- 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, 0x33b8, 0x33b9,
- 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x33ba, 0x33bb, 0x33bc,
- 0x33bd, 0x33be, 0x33bf, 0x3390, 0x3391, 0x3392, 0x3393, 0x3394,
- 0x2126, 0x33c0, 0x33c1, 0x338a, 0x338b, 0x338c, 0x33d6, 0x33c5,
- 0x33ad, 0x33ae, 0x33af, 0x33db, 0x33a9, 0x33aa, 0x33ab, 0x33ac,
- 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x33c6, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x28 */
- 0x00c6, 0x00d0, 0x00aa, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x013f,
- 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, 0xfffd,
- 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, 0x3267,
- 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, 0x326f,
- 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, 0x3277,
- 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1, 0x24d2, 0x24d3,
- 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da, 0x24db,
- 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2, 0x24e3,
- 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2460, 0x2461,
- 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
- 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd, 0x2153, 0x2154,
- 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e,
- /* 0x29 */
- 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140,
- 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0149,
- 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207,
- 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f,
- 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217,
- 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e, 0x249f,
- 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7,
- 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af,
- 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474, 0x2475,
- 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d,
- 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x00b9, 0x00b2, 0x00b3,
- 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, 0x2084,
- /* 0x2a */
- 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
- 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
- 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
- 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
- 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
- 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
- 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
- 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
- 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
- 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x2b */
- 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
- 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
- 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
- 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
- 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
- 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
- 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
- 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
- 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
- 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
- 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x2c */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
- 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
- 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
- 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
- 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
- 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
- 0x044f,
-};
-static const unsigned short ksc5601_2uni_page30[2350] = {
- /* 0x30 */
- 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a, 0xac10,
- 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, 0xac19,
- 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, 0xac2c, 0xac2d,
- 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, 0xac40, 0xac4b,
- 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, 0xac74, 0xac77,
- 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, 0xac85, 0xac86,
- 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, 0xac9c, 0xac9d,
- 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, 0xacac, 0xacaf,
- 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, 0xacc1, 0xacc4,
- 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, 0xace4, 0xace7,
- 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf5,
- 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06,
- /* 0x31 */
- 0xad0c, 0xad0d, 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad29,
- 0xad2c, 0xad2d, 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45,
- 0xad47, 0xad49, 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c,
- 0xad6d, 0xad70, 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c,
- 0xad7d, 0xad7f, 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90,
- 0xad9c, 0xad9d, 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8,
- 0xadd0, 0xadd1, 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9,
- 0xadfc, 0xadff, 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d,
- 0xae14, 0xae30, 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40,
- 0xae41, 0xae43, 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e,
- 0xae50, 0xae54, 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61,
- 0xae65, 0xae68, 0xae69, 0xae6c, 0xae70, 0xae78,
- /* 0x32 */
- 0xae79, 0xae7b, 0xae7c, 0xae7d, 0xae84, 0xae85, 0xae8c, 0xaebc,
- 0xaebd, 0xaebe, 0xaec0, 0xaec4, 0xaecc, 0xaecd, 0xaecf, 0xaed0,
- 0xaed1, 0xaed8, 0xaed9, 0xaedc, 0xaee8, 0xaeeb, 0xaeed, 0xaef4,
- 0xaef8, 0xaefc, 0xaf07, 0xaf08, 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d,
- 0xaf30, 0xaf32, 0xaf34, 0xaf3c, 0xaf3d, 0xaf3f, 0xaf41, 0xaf42,
- 0xaf43, 0xaf48, 0xaf49, 0xaf50, 0xaf5c, 0xaf5d, 0xaf64, 0xaf65,
- 0xaf79, 0xaf80, 0xaf84, 0xaf88, 0xaf90, 0xaf91, 0xaf95, 0xaf9c,
- 0xafb8, 0xafb9, 0xafbc, 0xafc0, 0xafc7, 0xafc8, 0xafc9, 0xafcb,
- 0xafcd, 0xafce, 0xafd4, 0xafdc, 0xafe8, 0xafe9, 0xaff0, 0xaff1,
- 0xaff4, 0xaff8, 0xb000, 0xb001, 0xb004, 0xb00c, 0xb010, 0xb014,
- 0xb01c, 0xb01d, 0xb028, 0xb044, 0xb045, 0xb048, 0xb04a, 0xb04c,
- 0xb04e, 0xb053, 0xb054, 0xb055, 0xb057, 0xb059,
- /* 0x33 */
- 0xb05d, 0xb07c, 0xb07d, 0xb080, 0xb084, 0xb08c, 0xb08d, 0xb08f,
- 0xb091, 0xb098, 0xb099, 0xb09a, 0xb09c, 0xb09f, 0xb0a0, 0xb0a1,
- 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af,
- 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b8, 0xb0bc, 0xb0c4, 0xb0c5,
- 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, 0xb0d1, 0xb0d4, 0xb0d8, 0xb0e0,
- 0xb0e5, 0xb108, 0xb109, 0xb10b, 0xb10c, 0xb110, 0xb112, 0xb113,
- 0xb118, 0xb119, 0xb11b, 0xb11c, 0xb11d, 0xb123, 0xb124, 0xb125,
- 0xb128, 0xb12c, 0xb134, 0xb135, 0xb137, 0xb138, 0xb139, 0xb140,
- 0xb141, 0xb144, 0xb148, 0xb150, 0xb151, 0xb154, 0xb155, 0xb158,
- 0xb15c, 0xb160, 0xb178, 0xb179, 0xb17c, 0xb180, 0xb182, 0xb188,
- 0xb189, 0xb18b, 0xb18d, 0xb192, 0xb193, 0xb194, 0xb198, 0xb19c,
- 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, 0xb1dc, 0xb1dd,
- /* 0x34 */
- 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, 0xb1fb, 0xb1fd,
- 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, 0xb215, 0xb217,
- 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, 0xb260, 0xb268,
- 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, 0xb289, 0xb290,
- 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, 0xb2a1, 0xb2a3,
- 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, 0xb2c8, 0xb2c9,
- 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db, 0xb2dd, 0xb2e2,
- 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee,
- 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa,
- 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, 0xb310, 0xb311,
- 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, 0xb356, 0xb358,
- 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365,
- /* 0x35 */
- 0xb367, 0xb369, 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378,
- 0xb380, 0xb381, 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394,
- 0xb3a0, 0xb3a1, 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb,
- 0xb3cc, 0xb3ce, 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db,
- 0xb3dd, 0xb3e0, 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c,
- 0xb420, 0xb428, 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454,
- 0xb458, 0xb460, 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488,
- 0xb49d, 0xb4a4, 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0,
- 0xb4c4, 0xb4c8, 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3,
- 0xb4e4, 0xb4e6, 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514,
- 0xb515, 0xb518, 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528,
- 0xb529, 0xb52a, 0xb530, 0xb531, 0xb534, 0xb538,
- /* 0x36 */
- 0xb540, 0xb541, 0xb543, 0xb544, 0xb545, 0xb54b, 0xb54c, 0xb54d,
- 0xb550, 0xb554, 0xb55c, 0xb55d, 0xb55f, 0xb560, 0xb561, 0xb5a0,
- 0xb5a1, 0xb5a4, 0xb5a8, 0xb5aa, 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3,
- 0xb5b4, 0xb5b5, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc,
- 0xb5cd, 0xb5cf, 0xb5d0, 0xb5d1, 0xb5d8, 0xb5ec, 0xb610, 0xb611,
- 0xb614, 0xb618, 0xb625, 0xb62c, 0xb634, 0xb648, 0xb664, 0xb668,
- 0xb69c, 0xb69d, 0xb6a0, 0xb6a4, 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4,
- 0xb6f0, 0xb6f4, 0xb6f8, 0xb700, 0xb701, 0xb705, 0xb728, 0xb729,
- 0xb72c, 0xb72f, 0xb730, 0xb738, 0xb739, 0xb73b, 0xb744, 0xb748,
- 0xb74c, 0xb754, 0xb755, 0xb760, 0xb764, 0xb768, 0xb770, 0xb771,
- 0xb773, 0xb775, 0xb77c, 0xb77d, 0xb780, 0xb784, 0xb78c, 0xb78d,
- 0xb78f, 0xb790, 0xb791, 0xb792, 0xb796, 0xb797,
- /* 0x37 */
- 0xb798, 0xb799, 0xb79c, 0xb7a0, 0xb7a8, 0xb7a9, 0xb7ab, 0xb7ac,
- 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, 0xb7c7, 0xb7c9, 0xb7ec, 0xb7ed,
- 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, 0xb7ff, 0xb800, 0xb801, 0xb807,
- 0xb808, 0xb809, 0xb80c, 0xb810, 0xb818, 0xb819, 0xb81b, 0xb81d,
- 0xb824, 0xb825, 0xb828, 0xb82c, 0xb834, 0xb835, 0xb837, 0xb838,
- 0xb839, 0xb840, 0xb844, 0xb851, 0xb853, 0xb85c, 0xb85d, 0xb860,
- 0xb864, 0xb86c, 0xb86d, 0xb86f, 0xb871, 0xb878, 0xb87c, 0xb88d,
- 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, 0xb8c0, 0xb8c1, 0xb8c3, 0xb8c5,
- 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, 0xb8df, 0xb8e1, 0xb8e8, 0xb8e9,
- 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, 0xb8fb, 0xb8fd, 0xb904, 0xb918,
- 0xb920, 0xb93c, 0xb93d, 0xb940, 0xb944, 0xb94c, 0xb94f, 0xb951,
- 0xb958, 0xb959, 0xb95c, 0xb960, 0xb968, 0xb969,
- /* 0x38 */
- 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, 0xb984, 0xb985,
- 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, 0xb9ad, 0xb9b0,
- 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, 0xb9c9, 0xb9cc,
- 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, 0xb9d9, 0xb9db,
- 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e8, 0xb9ec,
- 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xba00, 0xba01,
- 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, 0xba42, 0xba48,
- 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, 0xba55, 0xba58,
- 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, 0xba70, 0xba71,
- 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, 0xba8c, 0xbaa8,
- 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, 0xbab9, 0xbabb,
- 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc,
- /* 0x39 */
- 0xbb00, 0xbb04, 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20,
- 0xbb29, 0xbb2b, 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c,
- 0xbb3d, 0xbb3e, 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f,
- 0xbb50, 0xbb54, 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c,
- 0xbb90, 0xbba4, 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4,
- 0xbbc8, 0xbbd0, 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00,
- 0xbc02, 0xbc08, 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11,
- 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d,
- 0xbc1e, 0xbc1f, 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30,
- 0xbc31, 0xbc34, 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45,
- 0xbc49, 0xbc4c, 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88,
- 0xbc8b, 0xbc8c, 0xbc8e, 0xbc94, 0xbc95, 0xbc97,
- /* 0x3a */
- 0xbc99, 0xbc9a, 0xbca0, 0xbca1, 0xbca4, 0xbca7, 0xbca8, 0xbcb0,
- 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4,
- 0xbccd, 0xbccf, 0xbcd0, 0xbcd1, 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4,
- 0xbcf5, 0xbcf6, 0xbcf8, 0xbcfc, 0xbd04, 0xbd05, 0xbd07, 0xbd09,
- 0xbd10, 0xbd14, 0xbd24, 0xbd2c, 0xbd40, 0xbd48, 0xbd49, 0xbd4c,
- 0xbd50, 0xbd58, 0xbd59, 0xbd64, 0xbd68, 0xbd80, 0xbd81, 0xbd84,
- 0xbd87, 0xbd88, 0xbd89, 0xbd8a, 0xbd90, 0xbd91, 0xbd93, 0xbd95,
- 0xbd99, 0xbd9a, 0xbd9c, 0xbda4, 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5,
- 0xbdd8, 0xbddc, 0xbde9, 0xbdf0, 0xbdf4, 0xbdf8, 0xbe00, 0xbe03,
- 0xbe05, 0xbe0c, 0xbe0d, 0xbe10, 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f,
- 0xbe44, 0xbe45, 0xbe48, 0xbe4c, 0xbe4e, 0xbe54, 0xbe55, 0xbe57,
- 0xbe59, 0xbe5a, 0xbe5b, 0xbe60, 0xbe61, 0xbe64,
- /* 0x3b */
- 0xbe68, 0xbe6a, 0xbe70, 0xbe71, 0xbe73, 0xbe74, 0xbe75, 0xbe7b,
- 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, 0xbe8c, 0xbe8d, 0xbe8f, 0xbe90,
- 0xbe91, 0xbe98, 0xbe99, 0xbea8, 0xbed0, 0xbed1, 0xbed4, 0xbed7,
- 0xbed8, 0xbee0, 0xbee3, 0xbee4, 0xbee5, 0xbeec, 0xbf01, 0xbf08,
- 0xbf09, 0xbf18, 0xbf19, 0xbf1b, 0xbf1c, 0xbf1d, 0xbf40, 0xbf41,
- 0xbf44, 0xbf48, 0xbf50, 0xbf51, 0xbf55, 0xbf94, 0xbfb0, 0xbfc5,
- 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, 0xbfdc, 0xbfdf, 0xbfe1, 0xc03c,
- 0xc051, 0xc058, 0xc05c, 0xc060, 0xc068, 0xc069, 0xc090, 0xc091,
- 0xc094, 0xc098, 0xc0a0, 0xc0a1, 0xc0a3, 0xc0a5, 0xc0ac, 0xc0ad,
- 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0bc, 0xc0bd,
- 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, 0xc0c8, 0xc0c9, 0xc0cc, 0xc0d0,
- 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, 0xc0dd, 0xc0e4,
- /* 0x3c */
- 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f9, 0xc100,
- 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, 0xc11e, 0xc11f,
- 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, 0xc12d, 0xc12f,
- 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, 0xc140, 0xc148,
- 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, 0xc158, 0xc15c,
- 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, 0xc174, 0xc178,
- 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, 0xc196, 0xc19c,
- 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, 0xc1ac, 0xc1b0,
- 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, 0xc1d8, 0xc1e0,
- 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, 0xc1fd, 0xc200,
- 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, 0xc219, 0xc21c,
- 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d,
- /* 0x3d */
- 0xc22f, 0xc231, 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254,
- 0xc258, 0xc260, 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c,
- 0xc27d, 0xc27f, 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b,
- 0xc29d, 0xc2a4, 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5,
- 0xc2b7, 0xc2b9, 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb,
- 0xc2ec, 0xc2ed, 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb,
- 0xc2fc, 0xc300, 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314,
- 0xc315, 0xc318, 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345,
- 0xc368, 0xc369, 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c,
- 0xc37d, 0xc384, 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9, 0xc3dc,
- 0xc3df, 0xc3e0, 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5,
- 0xc3f8, 0xc408, 0xc410, 0xc424, 0xc42c, 0xc430,
- /* 0x3e */
- 0xc434, 0xc43c, 0xc43d, 0xc448, 0xc464, 0xc465, 0xc468, 0xc46c,
- 0xc474, 0xc475, 0xc479, 0xc480, 0xc494, 0xc49c, 0xc4b8, 0xc4bc,
- 0xc4e9, 0xc4f0, 0xc4f1, 0xc4f4, 0xc4f8, 0xc4fa, 0xc4ff, 0xc500,
- 0xc501, 0xc50c, 0xc510, 0xc514, 0xc51c, 0xc528, 0xc529, 0xc52c,
- 0xc530, 0xc538, 0xc539, 0xc53b, 0xc53d, 0xc544, 0xc545, 0xc548,
- 0xc549, 0xc54a, 0xc54c, 0xc54d, 0xc54e, 0xc553, 0xc554, 0xc555,
- 0xc557, 0xc558, 0xc559, 0xc55d, 0xc55e, 0xc560, 0xc561, 0xc564,
- 0xc568, 0xc570, 0xc571, 0xc573, 0xc574, 0xc575, 0xc57c, 0xc57d,
- 0xc580, 0xc584, 0xc587, 0xc58c, 0xc58d, 0xc58f, 0xc591, 0xc595,
- 0xc597, 0xc598, 0xc59c, 0xc5a0, 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8,
- 0xc5b9, 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6,
- 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cc, 0xc5ce,
- /* 0x3f */
- 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, 0xc5e0, 0xc5e1, 0xc5e3, 0xc5e5,
- 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, 0xc5f4, 0xc5f6, 0xc5f7, 0xc5fc,
- 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc605, 0xc606, 0xc607,
- 0xc608, 0xc60c, 0xc610, 0xc618, 0xc619, 0xc61b, 0xc61c, 0xc624,
- 0xc625, 0xc628, 0xc62c, 0xc62d, 0xc62e, 0xc630, 0xc633, 0xc634,
- 0xc635, 0xc637, 0xc639, 0xc63b, 0xc640, 0xc641, 0xc644, 0xc648,
- 0xc650, 0xc651, 0xc653, 0xc654, 0xc655, 0xc65c, 0xc65d, 0xc660,
- 0xc66c, 0xc66f, 0xc671, 0xc678, 0xc679, 0xc67c, 0xc680, 0xc688,
- 0xc689, 0xc68b, 0xc68d, 0xc694, 0xc695, 0xc698, 0xc69c, 0xc6a4,
- 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, 0xc6b1, 0xc6b4, 0xc6b8, 0xc6b9,
- 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, 0xc6c5, 0xc6cc, 0xc6cd, 0xc6d0,
- 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, 0xc6e1, 0xc6e8,
- /* 0x40 */
- 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, 0xc704, 0xc705,
- 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, 0xc720, 0xc721,
- 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, 0xc737, 0xc73c,
- 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, 0xc74f, 0xc751,
- 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc75c,
- 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, 0xc77c, 0xc77d,
- 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, 0xc789, 0xc78a,
- 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, 0xc798, 0xc79a,
- 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7ac, 0xc7ad,
- 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c8,
- 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, 0xc7e4, 0xc7e8,
- 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a,
- /* 0x41 */
- 0xc810, 0xc811, 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820,
- 0xc824, 0xc82c, 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840,
- 0xc848, 0xc849, 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874,
- 0xc878, 0xc87a, 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887,
- 0xc88b, 0xc88c, 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8,
- 0xc8bc, 0xc8bd, 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7,
- 0xc8d9, 0xc8e0, 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900,
- 0xc904, 0xc905, 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918,
- 0xc92c, 0xc934, 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961,
- 0xc963, 0xc96c, 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c,
- 0xc990, 0xc998, 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4,
- 0xc9c7, 0xc9c8, 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3,
- /* 0x42 */
- 0xc9d5, 0xc9d6, 0xc9d9, 0xc9da, 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2,
- 0xc9e4, 0xc9e7, 0xc9ec, 0xc9ed, 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8,
- 0xc9f9, 0xc9fc, 0xca00, 0xca08, 0xca09, 0xca0b, 0xca0c, 0xca0d,
- 0xca14, 0xca18, 0xca29, 0xca4c, 0xca4d, 0xca50, 0xca54, 0xca5c,
- 0xca5d, 0xca5f, 0xca60, 0xca61, 0xca68, 0xca7d, 0xca84, 0xca98,
- 0xcabc, 0xcabd, 0xcac0, 0xcac4, 0xcacc, 0xcacd, 0xcacf, 0xcad1,
- 0xcad3, 0xcad8, 0xcad9, 0xcae0, 0xcaec, 0xcaf4, 0xcb08, 0xcb10,
- 0xcb14, 0xcb18, 0xcb20, 0xcb21, 0xcb41, 0xcb48, 0xcb49, 0xcb4c,
- 0xcb50, 0xcb58, 0xcb59, 0xcb5d, 0xcb64, 0xcb78, 0xcb79, 0xcb9c,
- 0xcbb8, 0xcbd4, 0xcbe4, 0xcbe7, 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10,
- 0xcc14, 0xcc1c, 0xcc1d, 0xcc21, 0xcc22, 0xcc27, 0xcc28, 0xcc29,
- 0xcc2c, 0xcc2e, 0xcc30, 0xcc38, 0xcc39, 0xcc3b,
- /* 0x43 */
- 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, 0xcc45, 0xcc48, 0xcc4c, 0xcc54,
- 0xcc55, 0xcc57, 0xcc58, 0xcc59, 0xcc60, 0xcc64, 0xcc66, 0xcc68,
- 0xcc70, 0xcc75, 0xcc98, 0xcc99, 0xcc9c, 0xcca0, 0xcca8, 0xcca9,
- 0xccab, 0xccac, 0xccad, 0xccb4, 0xccb5, 0xccb8, 0xccbc, 0xccc4,
- 0xccc5, 0xccc7, 0xccc9, 0xccd0, 0xccd4, 0xcce4, 0xccec, 0xccf0,
- 0xcd01, 0xcd08, 0xcd09, 0xcd0c, 0xcd10, 0xcd18, 0xcd19, 0xcd1b,
- 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, 0xcd39, 0xcd5c, 0xcd60, 0xcd64,
- 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, 0xcd78, 0xcd88, 0xcd94, 0xcd95,
- 0xcd98, 0xcd9c, 0xcda4, 0xcda5, 0xcda7, 0xcda9, 0xcdb0, 0xcdc4,
- 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, 0xcdf0, 0xcdf8, 0xcdf9, 0xcdfb,
- 0xcdfd, 0xce04, 0xce08, 0xce0c, 0xce14, 0xce19, 0xce20, 0xce21,
- 0xce24, 0xce28, 0xce30, 0xce31, 0xce33, 0xce35,
- /* 0x44 */
- 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, 0xce68, 0xce69,
- 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, 0xce84, 0xce85,
- 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, 0xcea0, 0xcea1,
- 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, 0xcee4, 0xcee5,
- 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, 0xcef8, 0xcef9,
- 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, 0xcf13, 0xcf15,
- 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, 0xcf30, 0xcf31,
- 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, 0xcf65, 0xcf67,
- 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, 0xcf85, 0xcf8c,
- 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, 0xcfe4, 0xcfe8,
- 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, 0xd004, 0xd011,
- 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c,
- /* 0x45 */
- 0xd044, 0xd045, 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060,
- 0xd06c, 0xd06d, 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4,
- 0xd0a5, 0xd0a8, 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0,
- 0xd0c1, 0xd0c4, 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4,
- 0xd0d5, 0xd0dc, 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef,
- 0xd0f0, 0xd0f1, 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138,
- 0xd13a, 0xd140, 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d,
- 0xd150, 0xd154, 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c,
- 0xd17c, 0xd184, 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0,
- 0xd1b1, 0xd1b3, 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4,
- 0xd1f8, 0xd207, 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234,
- 0xd23c, 0xd23d, 0xd23f, 0xd241, 0xd248, 0xd25c,
- /* 0x46 */
- 0xd264, 0xd280, 0xd281, 0xd284, 0xd288, 0xd290, 0xd291, 0xd295,
- 0xd29c, 0xd2a0, 0xd2a4, 0xd2ac, 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc,
- 0xd2bf, 0xd2c0, 0xd2c2, 0xd2c8, 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8,
- 0xd2dc, 0xd2e4, 0xd2e5, 0xd2f0, 0xd2f1, 0xd2f4, 0xd2f8, 0xd300,
- 0xd301, 0xd303, 0xd305, 0xd30c, 0xd30d, 0xd30e, 0xd310, 0xd314,
- 0xd316, 0xd31c, 0xd31d, 0xd31f, 0xd320, 0xd321, 0xd325, 0xd328,
- 0xd329, 0xd32c, 0xd330, 0xd338, 0xd339, 0xd33b, 0xd33c, 0xd33d,
- 0xd344, 0xd345, 0xd37c, 0xd37d, 0xd380, 0xd384, 0xd38c, 0xd38d,
- 0xd38f, 0xd390, 0xd391, 0xd398, 0xd399, 0xd39c, 0xd3a0, 0xd3a8,
- 0xd3a9, 0xd3ab, 0xd3ad, 0xd3b4, 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5,
- 0xd3c8, 0xd3c9, 0xd3d0, 0xd3d8, 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed,
- 0xd3f0, 0xd3f4, 0xd3fc, 0xd3fd, 0xd3ff, 0xd401,
- /* 0x47 */
- 0xd408, 0xd41d, 0xd440, 0xd444, 0xd45c, 0xd460, 0xd464, 0xd46d,
- 0xd46f, 0xd478, 0xd479, 0xd47c, 0xd47f, 0xd480, 0xd482, 0xd488,
- 0xd489, 0xd48b, 0xd48d, 0xd494, 0xd4a9, 0xd4cc, 0xd4d0, 0xd4d4,
- 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, 0xd4f0, 0xd4f8, 0xd4fb, 0xd4fd,
- 0xd504, 0xd508, 0xd50c, 0xd514, 0xd515, 0xd517, 0xd53c, 0xd53d,
- 0xd540, 0xd544, 0xd54c, 0xd54d, 0xd54f, 0xd551, 0xd558, 0xd559,
- 0xd55c, 0xd560, 0xd565, 0xd568, 0xd569, 0xd56b, 0xd56d, 0xd574,
- 0xd575, 0xd578, 0xd57c, 0xd584, 0xd585, 0xd587, 0xd588, 0xd589,
- 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, 0xd5cc, 0xd5d0, 0xd5d2, 0xd5d8,
- 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, 0xd5e5, 0xd5e8, 0xd5ec, 0xd5f4,
- 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, 0xd601, 0xd604, 0xd608, 0xd610,
- 0xd611, 0xd613, 0xd614, 0xd615, 0xd61c, 0xd620,
- /* 0x48 */
- 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, 0xd645, 0xd648,
- 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, 0xd658, 0xd65c,
- 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, 0xd685, 0xd68c,
- 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, 0xd6a8, 0xd6ac,
- 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, 0xd6cc, 0xd6d1,
- 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, 0xd6f0, 0xd6f5,
- 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, 0xd719, 0xd71c,
- 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, 0xd735, 0xd738,
- 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, 0xd754, 0xd756,
- 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, 0xd765, 0xd769,
- 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, 0xd788, 0xd789,
- 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d,
-};
-static const unsigned short ksc5601_2uni_page4a[4888] = {
- /* 0x4a */
- 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475, 0x54e5,
- 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef, 0x6b4c,
- 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888, 0x8a36,
- 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374, 0x5404,
- 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2, 0x95a3,
- 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79, 0x61c7,
- 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b, 0x78f5,
- 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb, 0x9593,
- 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b, 0x8910,
- 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x611f, 0x61be,
- 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b, 0x7518, 0x75b3, 0x76e3,
- 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452, 0x9f95,
- /* 0x4b */
- 0x5323, 0x5cac, 0x7532, 0x80db, 0x9240, 0x9598, 0x525b, 0x5808,
- 0x59dc, 0x5ca1, 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177, 0x6c5f,
- 0x757a, 0x7586, 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154, 0x8221,
- 0x8591, 0x8941, 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb, 0x4ef7,
- 0x500b, 0x51f1, 0x584f, 0x6137, 0x613e, 0x6168, 0x6539, 0x69ea,
- 0x6f11, 0x75a5, 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb, 0xf900,
- 0x93a7, 0x958b, 0x5580, 0x5ba2, 0x5751, 0xf901, 0x7cb3, 0x7fb9,
- 0x91b5, 0x5028, 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e, 0x64da,
- 0x64e7, 0x6e20, 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0xf902, 0x907d,
- 0x9245, 0x92f8, 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa, 0x6106,
- 0x6957, 0x8171, 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e, 0x5091,
- 0x6770, 0x6840, 0x5109, 0x528d, 0x5292, 0x6aa2,
- /* 0x4c */
- 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2, 0x5048, 0x61a9,
- 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188, 0x89a1, 0x9694,
- 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d, 0x80a9, 0x898b,
- 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54, 0x7d50, 0x7f3a,
- 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257, 0x938c, 0x4eac,
- 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd, 0x537f, 0x5770,
- 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce, 0x656c, 0x666f,
- 0x66bb, 0x66f4, 0x6897, 0x6d87, 0x7085, 0x70f1, 0x749f, 0x74a5,
- 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6, 0x7d45, 0x7d93,
- 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15, 0x9015, 0x93e1,
- 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2, 0x5553, 0x583a, 0x5951,
- 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842, 0x68b0,
- /* 0x4d */
- 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb, 0x7e6b,
- 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4, 0x53e9,
- 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab, 0x62f7,
- 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd, 0x75fc,
- 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f, 0x82e6,
- 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0xf903, 0x8f9c,
- 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b, 0x66f2,
- 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11, 0x6606,
- 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68, 0xf904,
- 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5, 0x6050,
- 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3, 0x8ca2,
- 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc,
- /* 0x4e */
- 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b, 0x9846,
- 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0xf905, 0x51a0, 0x5b98, 0x5bec,
- 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1, 0x7f50,
- 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d, 0x62ec,
- 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0, 0x6d38,
- 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366, 0x639b,
- 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127, 0x62d0,
- 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4, 0x50d1,
- 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e, 0x6821,
- 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x81a0, 0x854e,
- 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903, 0x9a55, 0x9bab, 0x4e18,
- 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177, 0x52fe,
- /* 0x4f */
- 0x5340, 0x53e3, 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2, 0x5bc7,
- 0x5d87, 0x5ed0, 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9, 0x69cb,
- 0x6b50, 0x6bc6, 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7, 0x7396,
- 0x7403, 0x77bf, 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc, 0x8205,
- 0x820a, 0x82df, 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011, 0x90b1,
- 0x9264, 0x92b6, 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c, 0x570b,
- 0x5c40, 0x83ca, 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98, 0x7fa4,
- 0x88d9, 0x8ecd, 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f, 0x5bae,
- 0x5f13, 0x7a79, 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238, 0x52f8,
- 0x5377, 0x5708, 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737, 0x53a5,
- 0x7357, 0x8568, 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70, 0x8a6d,
- 0x8ecc, 0x994b, 0xf906, 0x6677, 0x6b78, 0x8cb4,
- /* 0x50 */
- 0x9b3c, 0xf907, 0x53eb, 0x572d, 0x594e, 0x63c6, 0x69fb, 0x73ea,
- 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f, 0x8d73, 0x9035,
- 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc, 0x921e, 0xf908,
- 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8, 0x6975, 0x9699,
- 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839, 0x69ff, 0x747e,
- 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1, 0x9949, 0xf909,
- 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434, 0x7981, 0x79bd,
- 0x82a9, 0x887e, 0x887f, 0x895f, 0xf90a, 0x9326, 0x4f0b, 0x53ca,
- 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98, 0x5162, 0x77dc,
- 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc, 0x5668, 0x573b,
- 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993, 0x5bc4, 0x5c90, 0x5d0e,
- 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7, 0x65e3,
- /* 0x51 */
- 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a, 0x6c23,
- 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482, 0x74a3,
- 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948, 0x797a,
- 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c, 0x8a18,
- 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951, 0x9a0e,
- 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee, 0x6854,
- 0x91d1, 0x55ab, 0x513a, 0xf90b, 0xf90c, 0x5a1c, 0x61e6, 0xf90d,
- 0x62cf, 0x62ff, 0xf90e, 0xf90f, 0xf910, 0xf911, 0xf912, 0xf913,
- 0x90a3, 0xf914, 0xf915, 0xf916, 0xf917, 0xf918, 0x8afe, 0xf919,
- 0xf91a, 0xf91b, 0xf91c, 0x6696, 0xf91d, 0x7156, 0xf91e, 0xf91f,
- 0x96e3, 0xf920, 0x634f, 0x637a, 0x5357, 0xf921, 0x678f, 0x6960,
- 0x6e73, 0xf922, 0x7537, 0xf923, 0xf924, 0xf925,
- /* 0x52 */
- 0x7d0d, 0xf926, 0xf927, 0x8872, 0x56ca, 0x5a18, 0xf928, 0xf929,
- 0xf92a, 0xf92b, 0xf92c, 0x4e43, 0xf92d, 0x5167, 0x5948, 0x67f0,
- 0x8010, 0xf92e, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5, 0x606c,
- 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0xf92f, 0x5974, 0x5f29,
- 0x6012, 0xf930, 0xf931, 0xf932, 0x7459, 0xf933, 0xf934, 0xf935,
- 0xf936, 0xf937, 0xf938, 0x99d1, 0xf939, 0xf93a, 0xf93b, 0xf93c,
- 0xf93d, 0xf93e, 0xf93f, 0xf940, 0xf941, 0xf942, 0xf943, 0x6fc3,
- 0xf944, 0xf945, 0x81bf, 0x8fb2, 0x60f1, 0xf946, 0xf947, 0x8166,
- 0xf948, 0xf949, 0x5c3f, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e,
- 0xf94f, 0xf950, 0xf951, 0x5ae9, 0x8a25, 0x677b, 0x7d10, 0xf952,
- 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, 0x80fd, 0xf958, 0xf959,
- 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a, 0x8336,
- /* 0x53 */
- 0x4e39, 0x4eb6, 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56, 0x65b7,
- 0x65e6, 0x6a80, 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e, 0x7dde,
- 0x86cb, 0x8892, 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a, 0x75b8,
- 0x9054, 0x5556, 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1, 0x6e5b,
- 0x6f6d, 0x6fb9, 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983, 0x8ac7,
- 0x8b5a, 0x931f, 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d, 0x5510,
- 0x5802, 0x5858, 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576, 0x7cd6,
- 0x87b3, 0x9ee8, 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d, 0x5cb1,
- 0x5e36, 0x5f85, 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b, 0x8cb8,
- 0x968a, 0x9edb, 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200, 0x5230,
- 0x5716, 0x5835, 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b, 0x5ea6,
- 0x5f92, 0x60bc, 0x6311, 0x6389, 0x6417, 0x6843,
- /* 0x54 */
- 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4, 0x71fe, 0x76dc,
- 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced, 0x8df3, 0x8e48,
- 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676, 0x97dc, 0x6bd2,
- 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf, 0x7be4, 0x7e9b,
- 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be, 0x6c8c, 0x711e,
- 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd, 0x51ac, 0x51cd,
- 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df, 0x6d1e, 0x6f7c,
- 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285, 0x515c, 0x6597,
- 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0xf95a, 0x8c46, 0x9017,
- 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f, 0x920d, 0x5f97,
- 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49, 0x85e4, 0x8b04, 0x9127,
- 0x9a30, 0x5587, 0x61f6, 0xf95b, 0x7669, 0x7f85,
- /* 0x55 */
- 0x863f, 0x87ba, 0x88f8, 0x908f, 0xf95c, 0x6d1b, 0x70d9, 0x73de,
- 0x7d61, 0x843d, 0xf95d, 0x916a, 0x99f1, 0xf95e, 0x4e82, 0x5375,
- 0x6b04, 0x6b12, 0x703e, 0x721b, 0x862d, 0x9e1e, 0x524c, 0x8fa3,
- 0x5d50, 0x64e5, 0x652c, 0x6b16, 0x6feb, 0x7c43, 0x7e9c, 0x85cd,
- 0x8964, 0x89bd, 0x62c9, 0x81d8, 0x881f, 0x5eca, 0x6717, 0x6d6a,
- 0x72fc, 0x7405, 0x746f, 0x8782, 0x90de, 0x4f86, 0x5d0d, 0x5fa0,
- 0x840a, 0x51b7, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169, 0x51c9,
- 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2, 0x8f1b,
- 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e, 0x623e,
- 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad, 0x9a62,
- 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d, 0x792b,
- 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23,
- /* 0x56 */
- 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023, 0x934a,
- 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9, 0x6582,
- 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9, 0xf95f,
- 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce, 0x8046,
- 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b, 0x6fa7,
- 0x79ae, 0x91b4, 0x96b7, 0x52de, 0xf960, 0x6488, 0x64c4, 0x6ad3,
- 0x6f5e, 0x7018, 0x7210, 0x76e7, 0x8001, 0x8606, 0x865c, 0x8def,
- 0x8f05, 0x9732, 0x9b6f, 0x9dfa, 0x9e75, 0x788c, 0x797f, 0x7da0,
- 0x83c9, 0x9304, 0x9e7f, 0x9e93, 0x8ad6, 0x58df, 0x5f04, 0x6727,
- 0x7027, 0x74cf, 0x7c60, 0x807e, 0x5121, 0x7028, 0x7262, 0x78ca,
- 0x8cc2, 0x8cda, 0x8cf4, 0x96f7, 0x4e86, 0x50da, 0x5bee, 0x5ed6,
- 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a, 0x84fc,
- /* 0x57 */
- 0x907c, 0x9b27, 0x9f8d, 0x58d8, 0x5a41, 0x5c62, 0x6a13, 0x6dda,
- 0x6f0f, 0x763b, 0x7d2f, 0x7e37, 0x851e, 0x8938, 0x93e4, 0x964b,
- 0x5289, 0x65d2, 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f, 0x7409,
- 0x7460, 0x7559, 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d, 0x622e,
- 0x9678, 0x4f96, 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a, 0x5f8b,
- 0x6144, 0x6817, 0xf961, 0x9686, 0x52d2, 0x808b, 0x51dc, 0x51cc,
- 0x695e, 0x7a1c, 0x7dbe, 0x83f1, 0x9675, 0x4fda, 0x5229, 0x5398,
- 0x540f, 0x550e, 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c, 0x7281,
- 0x72f8, 0x7406, 0x7483, 0xf962, 0x75e2, 0x7c6c, 0x7f79, 0x7fb8,
- 0x8389, 0x88cf, 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9, 0x541d,
- 0x6f7e, 0x71d0, 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57, 0x9e9f,
- 0x6797, 0x6dcb, 0x7433, 0x81e8, 0x9716, 0x782c,
- /* 0x58 */
- 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2, 0x78bc, 0x78e8,
- 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20, 0x819c, 0x83ab,
- 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e, 0x6162, 0x633d,
- 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e, 0x842c, 0x8513,
- 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9, 0x672b, 0x6cab,
- 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8, 0x5fd9, 0x671b,
- 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e, 0x9099, 0x57cb,
- 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885, 0x6bcf, 0x7164,
- 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108, 0x8c8a, 0x964c,
- 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2, 0x76df, 0x840c,
- 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9, 0x68c9, 0x6c94, 0x7704,
- 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5, 0x6ec5,
- /* 0x59 */
- 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927, 0x6e9f,
- 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298, 0x9cf4,
- 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155, 0x6478,
- 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f, 0x7261,
- 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00, 0x8b28,
- 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46, 0x9da9,
- 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893, 0x5999,
- 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7, 0x82d7,
- 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7, 0x64ab,
- 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d, 0x7e46,
- 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61, 0x58a8,
- 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587,
- /* 0x5a */
- 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef, 0x52ff,
- 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c, 0x5fae,
- 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73, 0x7f8e,
- 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6, 0x610d,
- 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f, 0x73c9,
- 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a, 0x62cd,
- 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e, 0x7b94,
- 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9, 0x99c1,
- 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500, 0x6591,
- 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x76e4, 0x76fc,
- 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c, 0x87e0, 0x8fd4, 0x9812,
- 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24, 0x6f51,
- /* 0x5b */
- 0x767c, 0x8dcb, 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023, 0x508d,
- 0x574a, 0x59a8, 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e, 0x65b9,
- 0x65c1, 0x6609, 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21, 0x80aa,
- 0x8180, 0x822b, 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17, 0x90a6,
- 0x9632, 0x9f90, 0x500d, 0x4ff3, 0xf963, 0x57f9, 0x5f98, 0x62dc,
- 0x6392, 0x676f, 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da, 0x88f4,
- 0x88f5, 0x8919, 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f, 0x4f70,
- 0x5e1b, 0x67cf, 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61, 0x6a0a,
- 0x7169, 0x71d4, 0x756a, 0xf964, 0x7e41, 0x8543, 0x85e9, 0x98dc,
- 0x4f10, 0x7b4f, 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5, 0x6c3e,
- 0x6c4e, 0x6cdb, 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a, 0x50fb,
- 0x5288, 0x58c1, 0x64d8, 0x6a97, 0x74a7, 0x7656,
- /* 0x5c */
- 0x78a7, 0x8617, 0x95e2, 0x9739, 0xf965, 0x535e, 0x5f01, 0x8b8a,
- 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49, 0x9f08, 0x4e19,
- 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a, 0x67c4, 0x68c5,
- 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27, 0x9920, 0x9a08,
- 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65, 0x6d11, 0x6e7a,
- 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913, 0x8b5c, 0x8f14,
- 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9, 0x670d, 0x798f,
- 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39, 0x8f3b, 0x99a5,
- 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01, 0x5cef, 0x5cf0,
- 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b, 0x84ec, 0x8702,
- 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8, 0x4fef, 0x5085, 0x5256,
- 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b, 0x5a66,
- /* 0x5d */
- 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0xf966, 0x6276, 0x6577, 0x65a7,
- 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150, 0x8151,
- 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6, 0x8cfb,
- 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9, 0x9ce7,
- 0x5317, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e, 0x5fff,
- 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89, 0x7cde,
- 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0xf967, 0x4f5b, 0x5f17, 0x5f7f,
- 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c, 0x4e15,
- 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87, 0x60b2,
- 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4, 0x6bd6,
- 0x6bd7, 0x6bd8, 0x6cb8, 0xf968, 0x7435, 0x75fa, 0x7812, 0x7891,
- 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5,
- /* 0x5e */
- 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c, 0x8cbb,
- 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c, 0x658c,
- 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad, 0x8ca7,
- 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d, 0x4e8b,
- 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff, 0x53f2,
- 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11, 0x5beb,
- 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368, 0x659c,
- 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7, 0x6e23,
- 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1, 0x7be9,
- 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x86c7, 0x88df,
- 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66, 0x8fad, 0x90aa, 0x98fc,
- 0x99df, 0x9e9d, 0x524a, 0xf969, 0x6714, 0xf96a,
- /* 0x5f */
- 0x5098, 0x522a, 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523, 0x759d,
- 0x7b97, 0x849c, 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba, 0x715e,
- 0x85a9, 0x4e09, 0xf96b, 0x6749, 0x68ee, 0x6e17, 0x829f, 0x8518,
- 0x886b, 0x63f7, 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7, 0x50cf,
- 0x511f, 0x5546, 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0, 0x5e38,
- 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58, 0x723d,
- 0x7240, 0x72c0, 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3, 0x89f4,
- 0x8a73, 0x8c61, 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd, 0x55c7,
- 0xf96c, 0x7a61, 0x7d22, 0x8272, 0x7272, 0x751f, 0x7525, 0xf96d,
- 0x7b19, 0x5885, 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90, 0x6055,
- 0x6292, 0x637f, 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816, 0x68f2,
- 0x7280, 0x745e, 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72,
- /* 0x60 */
- 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d, 0x92e4, 0x9ecd,
- 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614, 0x6673, 0x6790,
- 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6, 0x91cb, 0x932b,
- 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3, 0x6247, 0x657e,
- 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487, 0x74bf, 0x766c,
- 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3, 0x8239, 0x861a,
- 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425, 0x994d, 0x9bae,
- 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b, 0x820c, 0x859b,
- 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261, 0x66b9, 0x6bb2,
- 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d, 0x6d89, 0x71ee,
- 0xf96e, 0x57ce, 0x59d3, 0x5bac, 0x6027, 0x60fa, 0x6210, 0x661f,
- 0x665f, 0x7329, 0x73f9, 0x76db, 0x7701, 0x7b6c,
- /* 0x61 */
- 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2, 0x6b72,
- 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0xf96f, 0x8cb0, 0x53ec, 0x562f,
- 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383, 0x6414,
- 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4, 0x71d2,
- 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b, 0x7d20,
- 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061, 0x90b5,
- 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91, 0x7c9f,
- 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d, 0x84c0,
- 0x905c, 0x98e1, 0x7387, 0x5b8b, 0x609a, 0x677e, 0x6dde, 0x8a1f,
- 0x8aa6, 0x9001, 0x980c, 0x5237, 0xf970, 0x7051, 0x788e, 0x9396,
- 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782, 0x58fd,
- 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101,
- /* 0x62 */
- 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x6578, 0x6a39, 0x6b8a,
- 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407, 0x74b2,
- 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f, 0x7dac,
- 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea, 0x8896,
- 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296, 0x92b9,
- 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996, 0x9ad3,
- 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1, 0x6f5a,
- 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87, 0x5faa,
- 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35, 0x6df3,
- 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x821c, 0x8340,
- 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187, 0x931e, 0x9806, 0x99b4,
- 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07, 0x5d27,
- /* 0x63 */
- 0x5d69, 0x745f, 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2, 0x8936,
- 0x8972, 0x4e1e, 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f, 0x6607,
- 0x7e69, 0x8805, 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb, 0x5aa4,
- 0x5c38, 0x5c4e, 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd, 0x662f,
- 0x6642, 0x67be, 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5, 0x8494,
- 0x84cd, 0x8996, 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a, 0x57f4,
- 0x5bd4, 0x5f0f, 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c, 0x7184,
- 0x7bd2, 0x8755, 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38, 0x4f81,
- 0x4fe1, 0x547b, 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668, 0x71fc,
- 0x7533, 0x795e, 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa, 0x85ce,
- 0x8703, 0x8a0a, 0x8eab, 0x8f9b, 0xf971, 0x8fc5, 0x5931, 0x5ba4,
- 0x5be6, 0x6089, 0x5be9, 0x5c0b, 0x5fc3, 0x6c81,
- /* 0x64 */
- 0xf972, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6, 0x4ec0, 0x5341,
- 0xf973, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152, 0x555e, 0x5a25,
- 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe, 0x8859, 0x8a1d,
- 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a, 0x5cb3, 0x5dbd,
- 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x6a02, 0x6e25, 0x9102, 0x9354,
- 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309, 0x664f, 0x6848,
- 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1, 0x8b01, 0x8ecb,
- 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697, 0x764c, 0x83f4,
- 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0, 0x592e, 0x600f,
- 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0, 0x57c3, 0x5d16,
- 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e, 0x9698, 0x9744, 0x5384,
- 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b, 0x984d,
- /* 0x65 */
- 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6, 0x591c,
- 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0xf974, 0x91ce, 0x5f31,
- 0xf975, 0xf976, 0x7d04, 0x82e5, 0x846f, 0x84bb, 0x85e5, 0x8e8d,
- 0xf977, 0x4f6f, 0xf978, 0xf979, 0x58e4, 0x5b43, 0x6059, 0x63da,
- 0x6518, 0x656d, 0x6698, 0xf97a, 0x694a, 0x6a23, 0x6d0b, 0x7001,
- 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0xf97b, 0x7f8a, 0xf97c,
- 0x8944, 0xf97d, 0x8b93, 0x91c0, 0x967d, 0xf97e, 0x990a, 0x5704,
- 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad, 0x9b5a,
- 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043, 0x5830,
- 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa, 0x513c,
- 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186, 0x4e88,
- 0x4f59, 0xf97f, 0xf980, 0xf981, 0x5982, 0xf982,
- /* 0x66 */
- 0xf983, 0x6b5f, 0x6c5d, 0xf984, 0x74b5, 0x7916, 0xf985, 0x8207,
- 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0xf986, 0x9918, 0xf987, 0xf988,
- 0xf989, 0x4ea6, 0xf98a, 0x57df, 0x5f79, 0x6613, 0xf98b, 0xf98c,
- 0x75ab, 0x7e79, 0x8b6f, 0xf98d, 0x9006, 0x9a5b, 0x56a5, 0x5827,
- 0x59f8, 0x5a1f, 0x5bb4, 0xf98e, 0x5ef6, 0xf98f, 0xf990, 0x6350,
- 0x633b, 0xf991, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93, 0x6df5,
- 0x6f14, 0xf992, 0x70df, 0x7136, 0x7159, 0xf993, 0x71c3, 0x71d5,
- 0xf994, 0x784f, 0x786f, 0xf995, 0x7b75, 0x7de3, 0xf996, 0x7e2f,
- 0xf997, 0x884d, 0x8edf, 0xf998, 0xf999, 0xf99a, 0x925b, 0xf99b,
- 0x9cf6, 0xf99c, 0xf99d, 0xf99e, 0x6085, 0x6d85, 0xf99f, 0x71b1,
- 0xf9a0, 0xf9a1, 0x95b1, 0x53ad, 0xf9a2, 0xf9a3, 0xf9a4, 0x67d3,
- 0xf9a5, 0x708e, 0x7130, 0x7430, 0x8276, 0x82d2,
- /* 0x67 */
- 0xf9a6, 0x95bb, 0x9ae5, 0x9e7d, 0x66c4, 0xf9a7, 0x71c1, 0x8449,
- 0xf9a8, 0xf9a9, 0x584b, 0xf9aa, 0xf9ab, 0x5db8, 0x5f71, 0xf9ac,
- 0x6620, 0x668e, 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36, 0x6f41,
- 0x6fda, 0x701b, 0x702f, 0x7150, 0x71df, 0x7370, 0xf9ad, 0x745b,
- 0xf9ae, 0x74d4, 0x76c8, 0x7a4e, 0x7e93, 0xf9af, 0xf9b0, 0x82f1,
- 0x8a60, 0x8fce, 0xf9b1, 0x9348, 0xf9b2, 0x9719, 0xf9b3, 0xf9b4,
- 0x4e42, 0x502a, 0xf9b5, 0x5208, 0x53e1, 0x66f3, 0x6c6d, 0x6fca,
- 0x730a, 0x777f, 0x7a62, 0x82ae, 0x85dd, 0x8602, 0xf9b6, 0x88d4,
- 0x8a63, 0x8b7d, 0x8c6b, 0xf9b7, 0x92b3, 0xf9b8, 0x9713, 0x9810,
- 0x4e94, 0x4f0d, 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433, 0x55da,
- 0x5862, 0x58ba, 0x5967, 0x5a1b, 0x5be4, 0x609f, 0xf9b9, 0x61ca,
- 0x6556, 0x65ff, 0x6664, 0x68a7, 0x6c5a, 0x6fb3,
- /* 0x68 */
- 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4, 0x9c32, 0x9f07,
- 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab, 0x7465, 0x761f,
- 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1, 0x74ee, 0x7515,
- 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26, 0x74e6, 0x7aa9,
- 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49, 0x5b8c, 0x5b9b,
- 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c, 0x7897, 0x7de9,
- 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e, 0x9811, 0x66f0,
- 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d, 0x5a03, 0x6b6a,
- 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f, 0xf9ba, 0xf9bb,
- 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da, 0x5be5, 0xf9bc,
- 0xf9bd, 0x5da2, 0x62d7, 0x6416, 0x6493, 0x64fe, 0xf9be, 0x66dc,
- 0xf9bf, 0x6a48, 0xf9c0, 0x71ff, 0x7464, 0xf9c1,
- /* 0x69 */
- 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0xf9c2, 0x87ef,
- 0x8981, 0x8b20, 0x9059, 0xf9c3, 0x9080, 0x9952, 0x617e, 0x6b32,
- 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197, 0x52c7,
- 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c, 0x6e67,
- 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338, 0x84c9,
- 0x8e0a, 0x9394, 0x93de, 0xf9c4, 0x4e8e, 0x4f51, 0x5076, 0x512a,
- 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a, 0x6182,
- 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991, 0x79b9,
- 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047, 0x90f5,
- 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed, 0x6631,
- 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0xf9c5, 0x6a52,
- 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553,
- /* 0x6a */
- 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90, 0x718a,
- 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3, 0x5a9b,
- 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39, 0x6e72,
- 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45, 0x9060,
- 0xf9c6, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e, 0x4f4d,
- 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09, 0x6170,
- 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e, 0x8466,
- 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb, 0x9b4f,
- 0x4e73, 0x4f91, 0x5112, 0x516a, 0xf9c7, 0x552f, 0x55a9, 0x5b7a,
- 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x6108, 0x6109,
- 0x63c4, 0x6538, 0x6709, 0xf9c8, 0x67d4, 0x67da, 0xf9c9, 0x6961,
- 0x6962, 0x6cb9, 0x6d27, 0xf9ca, 0x6e38, 0xf9cb,
- /* 0x6b */
- 0x6fe1, 0x7336, 0x7337, 0xf9cc, 0x745c, 0x7531, 0xf9cd, 0x7652,
- 0xf9ce, 0xf9cf, 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98, 0x8adb,
- 0x8aed, 0x8e30, 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149, 0x91c9,
- 0x936e, 0xf9d0, 0xf9d1, 0x5809, 0xf9d2, 0x6bd3, 0x8089, 0x80b2,
- 0xf9d3, 0xf9d4, 0x5141, 0x596b, 0x5c39, 0xf9d5, 0xf9d6, 0x6f64,
- 0x73a7, 0x80e4, 0x8d07, 0xf9d7, 0x9217, 0x958f, 0xf9d8, 0xf9d9,
- 0xf9da, 0xf9db, 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d, 0xf9dc,
- 0x57a0, 0x6069, 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1, 0x4e59,
- 0x541f, 0x6deb, 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6, 0x6ce3,
- 0x9091, 0x51dd, 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a, 0x5100,
- 0x5b9c, 0x610f, 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591, 0x77e3,
- 0x7fa9, 0x8264, 0x858f, 0x87fb, 0x8863, 0x8abc,
- /* 0x6c */
- 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0xf9dd, 0xf9de, 0x5937,
- 0x59e8, 0xf9df, 0x5df2, 0x5f1b, 0x5f5b, 0x6021, 0xf9e0, 0xf9e1,
- 0xf9e2, 0xf9e3, 0x723e, 0x73e5, 0xf9e4, 0x7570, 0x75cd, 0xf9e5,
- 0x79fb, 0xf9e6, 0x800c, 0x8033, 0x8084, 0x82e1, 0x8351, 0xf9e7,
- 0xf9e8, 0x8cbd, 0x8cb3, 0x9087, 0xf9e9, 0xf9ea, 0x98f4, 0x990c,
- 0xf9eb, 0xf9ec, 0x7037, 0x76ca, 0x7fca, 0x7fcc, 0x7ffc, 0x8b1a,
- 0x4eba, 0x4ec1, 0x5203, 0x5370, 0xf9ed, 0x54bd, 0x56e0, 0x59fb,
- 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0xf9ee, 0xf9ef, 0x7d6a, 0x8335,
- 0xf9f0, 0x8693, 0x8a8d, 0xf9f1, 0x976d, 0x9777, 0xf9f2, 0xf9f3,
- 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2, 0x9038, 0x93b0,
- 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9, 0x6041, 0xf9f4, 0xf9f5,
- 0x7a14, 0xf9f6, 0x834f, 0x8cc3, 0x5165, 0x5344,
- /* 0x6d */
- 0xf9f7, 0xf9f8, 0xf9f9, 0x4ecd, 0x5269, 0x5b55, 0x82bf, 0x4ed4,
- 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c, 0x6063,
- 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5, 0x78c1,
- 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee, 0x8cc7,
- 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c, 0x70b8,
- 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71, 0x68e7,
- 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4, 0x7c2a,
- 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb, 0x58ef,
- 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2, 0x6756,
- 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0xf9fa, 0x7350, 0x748b,
- 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c, 0x8523,
- 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577,
- /* 0x6e */
- 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750, 0x683d,
- 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1, 0x8f09,
- 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47, 0x4f4e,
- 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e, 0x6a17,
- 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35, 0x82e7,
- 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019, 0x90b8,
- 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458, 0x6575,
- 0x6ef4, 0x72c4, 0xf9fb, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d, 0x7e3e,
- 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f, 0x8fea,
- 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x5168, 0x5178,
- 0x524d, 0x526a, 0x5861, 0x587c, 0x5960, 0x5c08, 0x5c55, 0x5edb,
- 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08, 0x6fb1,
- /* 0x6f */
- 0x714e, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c, 0x7b8b,
- 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f, 0x9293,
- 0x9322, 0x942b, 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207, 0x622a,
- 0x6298, 0x6d59, 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360, 0x5cbe,
- 0x5e97, 0x6f38, 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede, 0x63a5,
- 0x647a, 0x8776, 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075, 0x5448,
- 0x59c3, 0x5b9a, 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5, 0x633a,
- 0x653f, 0x6574, 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968, 0x6a89,
- 0x6b63, 0x6c40, 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e, 0x70a1,
- 0x738e, 0x73fd, 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b, 0x7a7d,
- 0x7cbe, 0x7d8e, 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d, 0x914a,
- 0x91d8, 0x9266, 0x92cc, 0x9320, 0x9706, 0x9756,
- /* 0x70 */
- 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c, 0x5824, 0x5e1d,
- 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d, 0x7b2c, 0x81cd,
- 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664, 0x969b, 0x973d,
- 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9, 0x5632, 0x5f14,
- 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa, 0x66f9, 0x671d,
- 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167, 0x71e5, 0x722a,
- 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20, 0x7a95, 0x7c97,
- 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4, 0x8a54, 0x8abf,
- 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b, 0x96d5, 0x9ce5,
- 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a, 0x5352, 0x62d9,
- 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0, 0x616b, 0x68d5, 0x6dd9,
- 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31, 0x816b,
- /* 0x71 */
- 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6, 0x5ea7,
- 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd, 0x80c4,
- 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda, 0x665d,
- 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d, 0x70b7,
- 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f, 0x86db,
- 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e, 0x9152,
- 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6, 0x57c8,
- 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec, 0x710c,
- 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff, 0x8301,
- 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b, 0x6c41,
- 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511, 0x75c7,
- 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea,
- /* 0x72 */
- 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f, 0x652f,
- 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a, 0x6f2c,
- 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102, 0x81f3,
- 0x829d, 0x82b7, 0x8718, 0x8a8c, 0xf9fc, 0x8d04, 0x8dbe, 0x9072,
- 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4, 0x5875,
- 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84, 0x6d25,
- 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1, 0x771e,
- 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897, 0x8a3a,
- 0x8cd1, 0x8eeb, 0x8fb0, 0x9032, 0x93ad, 0x9663, 0x9673, 0x9707,
- 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x74c6, 0x75be,
- 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea, 0x8dcc, 0x8fed, 0x659f,
- 0x6715, 0xf9fd, 0x57f7, 0x6f57, 0x7ddd, 0x8f2f,
- /* 0x73 */
- 0x93f6, 0x96c6, 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98, 0x501f,
- 0x53c9, 0x55df, 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb, 0x7b9a,
- 0xf9fe, 0x8e49, 0x8eca, 0x906e, 0x6349, 0x643e, 0x7740, 0x7a84,
- 0x932f, 0x947f, 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8, 0x74da,
- 0x7ac4, 0x7c12, 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a, 0x947d,
- 0x9910, 0x994c, 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e, 0x50ed,
- 0x53c3, 0x5879, 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9, 0x8b92,
- 0x8b96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0, 0x5f70,
- 0x6134, 0x655e, 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4, 0x6f32,
- 0x7316, 0x7621, 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc, 0x50b5,
- 0x57f0, 0x5bc0, 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5, 0x83dc,
- 0x8521, 0x91c7, 0x91f5, 0x518a, 0x67f5, 0x7b56,
- /* 0x74 */
- 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c, 0xf9ff, 0x5254,
- 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5, 0x6ecc, 0x7620,
- 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343, 0x5598, 0x5929,
- 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f, 0x821b, 0x85a6,
- 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621, 0x97c6, 0x51f8,
- 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4, 0x8f1f, 0x8f4d,
- 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b, 0x77bb, 0x7c3d,
- 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16, 0x6377, 0x7252,
- 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3, 0x6674, 0x6df8,
- 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0xfa00, 0x5243, 0x66ff,
- 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e, 0x905e, 0x9ad4, 0x521d,
- 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db, 0x68a2,
- /* 0x75 */
- 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901, 0x790e,
- 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549, 0x8c82,
- 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed, 0x77d7,
- 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2, 0x585a,
- 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525, 0x9283,
- 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8, 0x690e,
- 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429, 0x8acf,
- 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318, 0x939a,
- 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa, 0x7b51,
- 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010, 0x6625,
- 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0, 0x6c96,
- 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403,
- /* 0x76 */
- 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a, 0x7fe0,
- 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2, 0x5074,
- 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024, 0x55e4,
- 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be, 0x75d4,
- 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e, 0x81f4,
- 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5, 0x98ed,
- 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795, 0x6c88,
- 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4, 0x7a31,
- 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0, 0x6253,
- 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x99dd, 0x502c,
- 0x5353, 0x5544, 0x577c, 0xfa01, 0x6258, 0xfa02, 0x64e2, 0x666b,
- 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438, 0x8a17,
- /* 0x77 */
- 0x9438, 0x5451, 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e, 0x7058,
- 0x70ad, 0x7dbb, 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708, 0x803d,
- 0x8caa, 0x5854, 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f, 0xfa03,
- 0x8569, 0x514c, 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86, 0x6c70,
- 0x6cf0, 0x7b1e, 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1, 0xfa04,
- 0x64c7, 0x6fa4, 0x6491, 0x6504, 0x514e, 0x5410, 0x571f, 0x8a0e,
- 0x615f, 0x6876, 0xfa05, 0x75db, 0x7b52, 0x7d71, 0x901a, 0x5806,
- 0x69cc, 0x817f, 0x892a, 0x9000, 0x9839, 0x5078, 0x5957, 0x59ac,
- 0x6295, 0x900f, 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761, 0x5a46,
- 0x5df4, 0x628a, 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e, 0x722c,
- 0x7436, 0x7834, 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224, 0x5742,
- 0x677f, 0x7248, 0x74e3, 0x8ca9, 0x8fa6, 0x9211,
- /* 0x78 */
- 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504, 0x6096, 0x6557,
- 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987, 0x8c9d, 0x5f6d,
- 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x4fbf, 0x504f, 0x6241, 0x7247,
- 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19, 0x8cb6, 0x576a,
- 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16, 0x5e63, 0x5ee2,
- 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b, 0x4f48, 0x5305,
- 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03, 0x6016, 0x629b,
- 0x62b1, 0x6355, 0xfa06, 0x6ce1, 0x6d66, 0x75b1, 0x7832, 0x80de,
- 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912, 0x900b, 0x92ea,
- 0x98fd, 0x9b91, 0x5e45, 0x66b4, 0x66dd, 0x7011, 0x7206, 0xfa07,
- 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753, 0x6a19, 0x6f02, 0x74e2,
- 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4, 0x9a43,
- /* 0x79 */
- 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae, 0x5f7c,
- 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339, 0x5f3c,
- 0x5fc5, 0x6ccc, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe, 0x999d,
- 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8, 0x6630,
- 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e, 0x9c15,
- 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068, 0x608d,
- 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0, 0x9591,
- 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b, 0x54b8,
- 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c, 0x9677,
- 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4, 0x965c,
- 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297, 0x676d,
- 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a,
- /* 0x7a */
- 0xfa08, 0xfa09, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793, 0x595a,
- 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9, 0x89e3,
- 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838, 0x5016,
- 0x5e78, 0x674f, 0x8347, 0x884c, 0x4eab, 0x5411, 0x56ae, 0x73e6,
- 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f, 0x865b,
- 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa, 0x9a57,
- 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26, 0x61f8,
- 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729, 0x774d,
- 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0xfa0a, 0x8ce2, 0x9249,
- 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x4fe0, 0x5354,
- 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9, 0x8105, 0x8107, 0x83a2,
- 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211, 0x578b,
- /* 0x7b */
- 0x5f62, 0x6cc2, 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192, 0x73e9,
- 0x7469, 0x834a, 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3, 0x99a8,
- 0x516e, 0x5f57, 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a, 0x91af,
- 0x978b, 0x4e4e, 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d, 0x5cb5,
- 0x5f27, 0x6236, 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69, 0x6dcf,
- 0x6e56, 0x6ef8, 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0, 0x7425,
- 0x745a, 0x74e0, 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1, 0x82a6,
- 0x846b, 0x84bf, 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a, 0x93ac,
- 0x9800, 0x9865, 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f, 0x6df7,
- 0x6e3e, 0x743f, 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4, 0x5f18,
- 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c, 0x9d3b,
- 0x5316, 0x548c, 0x5b05, 0x6a3a, 0x706b, 0x7575,
- /* 0x7c */
- 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41, 0x8ca8, 0x9774,
- 0xfa0b, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b, 0x4e38, 0x559a,
- 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61, 0x6665, 0x6853,
- 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69, 0x9c25, 0x6d3b,
- 0x6ed1, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c, 0x5fa8, 0x604d,
- 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5, 0x6cc1, 0x6e5f,
- 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1, 0x7c27, 0x8352,
- 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de, 0x5efb, 0x5f8a,
- 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c, 0x6dee, 0x6fae,
- 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4, 0x8aa8, 0x8cc4,
- 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404, 0x54ee, 0x5686, 0x5b5d,
- 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d, 0x6dc6,
- /* 0x7d */
- 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a, 0x540e,
- 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166, 0x73dd,
- 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f, 0x71fb,
- 0x85b0, 0x8a13, 0x6688, 0x85a8, 0x55a7, 0x6684, 0x714a, 0x8431,
- 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689, 0x7147,
- 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566, 0x8667,
- 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36, 0x80f8,
- 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79, 0x7d07,
- 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d, 0x7fd5,
- 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec, 0x5b09,
- 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199, 0x71b9,
- 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70,
-};
-
-static int
-ksc5601_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = (s[0] & 0x7F);
- if ((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x30 && c1 <= 0x48) || (c1 >= 0x4a && c1 <= 0x7d)) {
- if (n >= 2) {
- unsigned char c2 = (s[1] & 0x7F);
- if (c2 >= 0x21 && c2 < 0x7f) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- unsigned short wc = 0xfffd;
- if (i < 1410) {
- if (i < 1115)
- wc = ksc5601_2uni_page21[i];
- } else if (i < 3854) {
- if (i < 3760)
- wc = ksc5601_2uni_page30[i-1410];
- } else {
- if (i < 8742)
- wc = ksc5601_2uni_page4a[i-3854];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short ksc5601_2charset[8224] = {
- 0x222e, 0x2234, 0x2157, 0x2127, 0x2823, 0x2129, 0x2146, 0x213e,
- 0x2977, 0x2978, 0x2225, 0x2252, 0x2124, 0x222c, 0x2976, 0x282c,
- 0x2879, 0x2876, 0x287a, 0x222f, 0x2821, 0x2822, 0x213f, 0x282a,
- 0x282d, 0x292c, 0x2921, 0x2923, 0x2140, 0x292a, 0x292d, 0x2922,
- 0x2824, 0x2924, 0x2925, 0x2826, 0x2926, 0x2927, 0x2828, 0x2928,
- 0x2829, 0x2929, 0x2930, 0x282f, 0x292f, 0x282b, 0x292b, 0x282e,
- 0x292e, 0x2227, 0x2230, 0x2228, 0x222b, 0x222a, 0x222d, 0x2229,
- 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548,
- 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550,
- 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558,
- 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568,
- 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570,
- 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2577, 0x2578,
- 0x2c27, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c28,
- 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c30,
- 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38,
- 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40,
- 0x2c41, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c58,
- 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x2c5f, 0x2c60,
- 0x2c61, 0x2c62, 0x2c63, 0x2c64, 0x2c65, 0x2c66, 0x2c67, 0x2c68,
- 0x2c69, 0x2c6a, 0x2c6b, 0x2c6c, 0x2c6d, 0x2c6e, 0x2c6f, 0x2c70,
- 0x2c71, 0x2c57, 0x212a, 0x212e, 0x212f, 0x2130, 0x2131, 0x2253,
- 0x2254, 0x2125, 0x2126, 0x2236, 0x2147, 0x2148, 0x2158, 0x2979,
- 0x297a, 0x297b, 0x297c, 0x297d, 0x297e, 0x2149, 0x2235, 0x2724,
- 0x2260, 0x2265, 0x2262, 0x2759, 0x214a, 0x2877, 0x2878, 0x287b,
- 0x287c, 0x287d, 0x287e, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
- 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x2521, 0x2522, 0x2523,
- 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x2167,
- 0x2168, 0x2166, 0x2169, 0x216a, 0x2255, 0x2258, 0x2256, 0x2259,
- 0x2257, 0x2221, 0x2222, 0x2223, 0x2153, 0x2224, 0x2154, 0x2174,
- 0x2175, 0x2233, 0x2232, 0x216e, 0x2170, 0x2144, 0x2150, 0x212b,
- 0x217c, 0x217d, 0x217b, 0x217a, 0x2172, 0x2173, 0x2231, 0x2145,
- 0x2171, 0x212d, 0x216f, 0x2156, 0x2141, 0x2155, 0x2142, 0x2143,
- 0x216c, 0x216d, 0x2178, 0x2179, 0x2176, 0x2177, 0x2241, 0x2151,
- 0x2152, 0x2867, 0x2868, 0x2869, 0x286a, 0x286b, 0x286c, 0x286d,
- 0x286e, 0x286f, 0x2870, 0x2871, 0x2872, 0x2873, 0x2874, 0x2875,
- 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x296c, 0x296d, 0x296e,
- 0x296f, 0x2970, 0x2971, 0x2972, 0x2973, 0x2974, 0x2975, 0x294d,
- 0x294e, 0x294f, 0x2950, 0x2951, 0x2952, 0x2953, 0x2954, 0x2955,
- 0x2956, 0x2957, 0x2958, 0x2959, 0x295a, 0x295b, 0x295c, 0x295d,
- 0x295e, 0x295f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 0x2965,
- 0x2966, 0x284d, 0x284e, 0x284f, 0x2850, 0x2851, 0x2852, 0x2853,
- 0x2854, 0x2855, 0x2856, 0x2857, 0x2858, 0x2859, 0x285a, 0x285b,
- 0x285c, 0x285d, 0x285e, 0x285f, 0x2860, 0x2861, 0x2862, 0x2863,
- 0x2864, 0x2865, 0x2866, 0x2621, 0x262c, 0x2622, 0x262d, 0x2623,
- 0x2648, 0x2647, 0x262e, 0x2624, 0x2642, 0x2641, 0x262f, 0x2626,
- 0x2646, 0x2645, 0x2631, 0x2625, 0x2644, 0x2643, 0x2630, 0x2627,
- 0x263c, 0x2649, 0x264a, 0x2637, 0x264b, 0x264c, 0x2632, 0x2629,
- 0x263e, 0x264d, 0x264e, 0x2639, 0x264f, 0x2650, 0x2634, 0x2628,
- 0x2651, 0x2652, 0x2638, 0x263d, 0x2653, 0x2654, 0x2633, 0x262a,
- 0x2655, 0x2656, 0x263a, 0x263f, 0x2657, 0x2658, 0x2635, 0x262b,
- 0x2659, 0x265a, 0x263b, 0x265b, 0x265c, 0x2640, 0x265d, 0x265e,
- 0x265f, 0x2660, 0x2661, 0x2662, 0x2663, 0x2664, 0x2636, 0x2246,
- 0x2161, 0x2160, 0x2243, 0x2247, 0x2248, 0x224b, 0x224a, 0x2249,
- 0x224c, 0x2163, 0x2162, 0x223a, 0x2239, 0x2165, 0x2164, 0x2238,
- 0x2237, 0x215f, 0x215e, 0x2242, 0x215b, 0x215d, 0x215c, 0x2244,
- 0x2245, 0x215a, 0x2159, 0x224f, 0x224e, 0x2250, 0x2251, 0x214f,
- 0x214e, 0x223c, 0x223d, 0x2240, 0x223b, 0x223e, 0x223f, 0x224d,
- 0x225b, 0x225c, 0x225d, 0x225a, 0x2121, 0x2122, 0x2123, 0x2128,
- 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b,
- 0x213c, 0x213d, 0x216b, 0x2132, 0x2133, 0x2a21, 0x2a22, 0x2a23,
- 0x2a24, 0x2a25, 0x2a26, 0x2a27, 0x2a28, 0x2a29, 0x2a2a, 0x2a2b,
- 0x2a2c, 0x2a2d, 0x2a2e, 0x2a2f, 0x2a30, 0x2a31, 0x2a32, 0x2a33,
- 0x2a34, 0x2a35, 0x2a36, 0x2a37, 0x2a38, 0x2a39, 0x2a3a, 0x2a3b,
- 0x2a3c, 0x2a3d, 0x2a3e, 0x2a3f, 0x2a40, 0x2a41, 0x2a42, 0x2a43,
- 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48, 0x2a49, 0x2a4a, 0x2a4b,
- 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50, 0x2a51, 0x2a52, 0x2a53,
- 0x2a54, 0x2a55, 0x2a56, 0x2a57, 0x2a58, 0x2a59, 0x2a5a, 0x2a5b,
- 0x2a5c, 0x2a5d, 0x2a5e, 0x2a5f, 0x2a60, 0x2a61, 0x2a62, 0x2a63,
- 0x2a64, 0x2a65, 0x2a66, 0x2a67, 0x2a68, 0x2a69, 0x2a6a, 0x2a6b,
- 0x2a6c, 0x2a6d, 0x2a6e, 0x2a6f, 0x2a70, 0x2a71, 0x2a72, 0x2a73,
- 0x2b21, 0x2b22, 0x2b23, 0x2b24, 0x2b25, 0x2b26, 0x2b27, 0x2b28,
- 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e, 0x2b2f, 0x2b30,
- 0x2b31, 0x2b32, 0x2b33, 0x2b34, 0x2b35, 0x2b36, 0x2b37, 0x2b38,
- 0x2b39, 0x2b3a, 0x2b3b, 0x2b3c, 0x2b3d, 0x2b3e, 0x2b3f, 0x2b40,
- 0x2b41, 0x2b42, 0x2b43, 0x2b44, 0x2b45, 0x2b46, 0x2b47, 0x2b48,
- 0x2b49, 0x2b4a, 0x2b4b, 0x2b4c, 0x2b4d, 0x2b4e, 0x2b4f, 0x2b50,
- 0x2b51, 0x2b52, 0x2b53, 0x2b54, 0x2b55, 0x2b56, 0x2b57, 0x2b58,
- 0x2b59, 0x2b5a, 0x2b5b, 0x2b5c, 0x2b5d, 0x2b5e, 0x2b5f, 0x2b60,
- 0x2b61, 0x2b62, 0x2b63, 0x2b64, 0x2b65, 0x2b66, 0x2b67, 0x2b68,
- 0x2b69, 0x2b6a, 0x2b6b, 0x2b6c, 0x2b6d, 0x2b6e, 0x2b6f, 0x2b70,
- 0x2b71, 0x2b72, 0x2b73, 0x2b74, 0x2b75, 0x2b76, 0x2421, 0x2422,
- 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x242a,
- 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431, 0x2432,
- 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439, 0x243a,
- 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441, 0x2442,
- 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449, 0x244a,
- 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451, 0x2452,
- 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x245a,
- 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461, 0x2462,
- 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a,
- 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472,
- 0x2473, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
- 0x247b, 0x247c, 0x247d, 0x247e, 0x2931, 0x2932, 0x2933, 0x2934,
- 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c,
- 0x293d, 0x293e, 0x293f, 0x2940, 0x2941, 0x2942, 0x2943, 0x2944,
- 0x2945, 0x2946, 0x2947, 0x2948, 0x2949, 0x294a, 0x294b, 0x294c,
- 0x225f, 0x2831, 0x2832, 0x2833, 0x2834, 0x2835, 0x2836, 0x2837,
- 0x2838, 0x2839, 0x283a, 0x283b, 0x283c, 0x283d, 0x283e, 0x283f,
- 0x2840, 0x2841, 0x2842, 0x2843, 0x2844, 0x2845, 0x2846, 0x2847,
- 0x2848, 0x2849, 0x284a, 0x284b, 0x284c, 0x225e, 0x2749, 0x274a,
- 0x274b, 0x274c, 0x274d, 0x273a, 0x273b, 0x275c, 0x275d, 0x275e,
- 0x2736, 0x2737, 0x2738, 0x2754, 0x2755, 0x2756, 0x2757, 0x2758,
- 0x2721, 0x2722, 0x2723, 0x2725, 0x272b, 0x272c, 0x272d, 0x272e,
- 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2727, 0x2728,
- 0x2729, 0x272a, 0x273d, 0x273e, 0x2765, 0x2766, 0x2767, 0x2768,
- 0x2761, 0x2762, 0x2763, 0x273f, 0x2740, 0x2741, 0x2742, 0x2743,
- 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x274e, 0x274f, 0x2750,
- 0x2751, 0x2752, 0x2753, 0x275a, 0x275b, 0x2263, 0x276c, 0x2726,
- 0x2760, 0x276f, 0x2261, 0x273c, 0x276d, 0x2735, 0x2739, 0x276a,
- 0x276b, 0x275f, 0x2264, 0x2764, 0x276e, 0x2769, 0x6c69, 0x6f4b,
- 0x7652, 0x5832, 0x6d5b, 0x5f32, 0x5f3e, 0x793b, 0x5c74, 0x7564,
- 0x7326, 0x5d60, 0x6126, 0x4e78, 0x5c30, 0x632a, 0x7169, 0x4d7a,
- 0x7c2f, 0x5321, 0x712b, 0x6751, 0x522c, 0x4e79, 0x717d, 0x5e3f,
- 0x7b3a, 0x7939, 0x4e52, 0x632b, 0x6b60, 0x4e7a, 0x4b77, 0x6525,
- 0x4a61, 0x544c, 0x6a61, 0x5c63, 0x5f2d, 0x4b6b, 0x552f, 0x5675,
- 0x6578, 0x5e40, 0x6c23, 0x694d, 0x6a27, 0x6976, 0x7b3b, 0x6769,
- 0x6f4c, 0x5066, 0x5e41, 0x642c, 0x584c, 0x7971, 0x4e5f, 0x7a24,
- 0x6632, 0x7a7b, 0x7a3d, 0x4c48, 0x6f4d, 0x5555, 0x5322, 0x6c51,
- 0x6427, 0x6c52, 0x7631, 0x4e7b, 0x5051, 0x4b3f, 0x6d24, 0x6d28,
- 0x5e42, 0x7662, 0x6d5c, 0x5c75, 0x6039, 0x544e, 0x7435, 0x535b,
- 0x5635, 0x6c24, 0x6466, 0x716a, 0x4b6c, 0x4b40, 0x6c72, 0x506a,
- 0x7972, 0x6c25, 0x505f, 0x676a, 0x506b, 0x5c51, 0x5b69, 0x7d4c,
- 0x5b57, 0x5a61, 0x5636, 0x635f, 0x5e43, 0x5e44, 0x4a21, 0x6e6c,
- 0x5323, 0x6e37, 0x784f, 0x6a48, 0x6e38, 0x712c, 0x7125, 0x694e,
- 0x793c, 0x6579, 0x6c6a, 0x5d56, 0x6d42, 0x7825, 0x653a, 0x5b58,
- 0x4a22, 0x514d, 0x6e6d, 0x6c6b, 0x5e45, 0x6360, 0x4a49, 0x7269,
- 0x554e, 0x7636, 0x4e42, 0x5647, 0x6334, 0x712d, 0x6a62, 0x5742,
- 0x7327, 0x4d6a, 0x6b6e, 0x5932, 0x7d25, 0x7655, 0x5562, 0x7835,
- 0x4c75, 0x7535, 0x642d, 0x676b, 0x7155, 0x703b, 0x6935, 0x4c49,
- 0x7a55, 0x6154, 0x5756, 0x5c41, 0x5e46, 0x7a6f, 0x6361, 0x6173,
- 0x5c76, 0x4e7c, 0x5b44, 0x7871, 0x5c64, 0x656f, 0x5c31, 0x5556,
- 0x735a, 0x4b41, 0x5b43, 0x597a, 0x536e, 0x7a38, 0x7d26, 0x6b6f,
- 0x7426, 0x4c4a, 0x7328, 0x735b, 0x5b27, 0x7637, 0x4f66, 0x7072,
- 0x4b5a, 0x6752, 0x5743, 0x7670, 0x685e, 0x6526, 0x6567, 0x4a23,
- 0x4c27, 0x6a49, 0x7836, 0x7a25, 0x712e, 0x6f4e, 0x4b6d, 0x7630,
- 0x6f4f, 0x694f, 0x775e, 0x4e53, 0x5c77, 0x5b28, 0x4b78, 0x5f21,
- 0x5d61, 0x754a, 0x6936, 0x676c, 0x6e6e, 0x7370, 0x5f3f, 0x4c4b,
- 0x5041, 0x7452, 0x603a, 0x5f40, 0x4e60, 0x5c52, 0x7d6a, 0x5676,
- 0x6a4a, 0x6869, 0x632c, 0x7350, 0x4a24, 0x5b78, 0x5e47, 0x6b70,
- 0x7156, 0x6562, 0x4c4c, 0x4b7b, 0x6a63, 0x5f41, 0x566d, 0x6950,
- 0x6e39, 0x5563, 0x5153, 0x6570, 0x6834, 0x6b43, 0x6a2a, 0x7a7c,
- 0x7576, 0x703c, 0x7d54, 0x603b, 0x4e43, 0x503a, 0x773a, 0x5873,
- 0x774d, 0x642e, 0x545f, 0x5067, 0x6c7d, 0x522e, 0x6e6f, 0x5557,
- 0x6a64, 0x7822, 0x4d6b, 0x573f, 0x7b31, 0x4d6c, 0x5c32, 0x506c,
- 0x4e7d, 0x6e70, 0x4c42, 0x506d, 0x6577, 0x737c, 0x6e22, 0x5933,
- 0x5874, 0x6937, 0x4e2e, 0x5922, 0x5871, 0x544f, 0x6527, 0x5552,
- 0x5629, 0x7422, 0x7157, 0x5558, 0x703d, 0x5750, 0x5450, 0x574f,
- 0x6b6a, 0x7d6b, 0x5b6d, 0x7c45, 0x4b42, 0x7d55, 0x7448, 0x686a,
- 0x7573, 0x795e, 0x536f, 0x6c53, 0x5d42, 0x6f37, 0x6754, 0x4a4a,
- 0x597b, 0x7a7d, 0x562a, 0x7478, 0x7777, 0x5c2c, 0x5757, 0x5f22,
- 0x4e3e, 0x5370, 0x7024, 0x616c, 0x4f67, 0x734b, 0x6d29, 0x4a3e,
- 0x746f, 0x764e, 0x5e7b, 0x503b, 0x5537, 0x6e71, 0x7428, 0x5c78,
- 0x4b27, 0x5a4e, 0x6066, 0x6d25, 0x6e72, 0x5c79, 0x795c, 0x735c,
- 0x7872, 0x7479, 0x7c71, 0x503c, 0x5b79, 0x5731, 0x4b7c, 0x7025,
- 0x4b7d, 0x5574, 0x4d6d, 0x4a25, 0x562b, 0x5042, 0x703e, 0x523d,
- 0x4c24, 0x7a36, 0x4c4d, 0x5a7a, 0x764f, 0x6938, 0x5875, 0x4c4e,
- 0x574d, 0x5451, 0x696d, 0x4a6b, 0x5962, 0x7d32, 0x632d, 0x564c,
- 0x5934, 0x6127, 0x6e53, 0x5043, 0x7d33, 0x5564, 0x4f68, 0x6d43,
- 0x5032, 0x4e7e, 0x5a28, 0x7850, 0x7d56, 0x7851, 0x7852, 0x5c53,
- 0x5d62, 0x7b79, 0x5d41, 0x6335, 0x6d5d, 0x4e44, 0x4b21, 0x5d63,
- 0x7c5d, 0x792f, 0x527b, 0x4f21, 0x6428, 0x7436, 0x6c7e, 0x632e,
- 0x676d, 0x7d41, 0x5a62, 0x5833, 0x5d64, 0x706f, 0x7671, 0x7a70,
- 0x5175, 0x5a4f, 0x5c54, 0x5c26, 0x6f3f, 0x4e4f, 0x6059, 0x5956,
- 0x6c54, 0x6a4b, 0x4a3f, 0x5530, 0x4f69, 0x716d, 0x4c4f, 0x6478,
- 0x646d, 0x5758, 0x7d27, 0x6a2b, 0x7632, 0x4f70, 0x793d, 0x6674,
- 0x4b5b, 0x7351, 0x6951, 0x7329, 0x5060, 0x6952, 0x5a63, 0x6252,
- 0x7622, 0x6174, 0x5a64, 0x6755, 0x753f, 0x4f22, 0x4d2f, 0x4f23,
- 0x4d30, 0x717e, 0x5023, 0x612f, 0x7823, 0x4a26, 0x773b, 0x726a,
- 0x5e48, 0x6953, 0x5e49, 0x7d5e, 0x4a40, 0x796a, 0x514e, 0x6e54,
- 0x5452, 0x5923, 0x7d28, 0x5759, 0x774e, 0x7a3e, 0x4f56, 0x5770,
- 0x6b61, 0x7845, 0x5c7a, 0x5d43, 0x795f, 0x676f, 0x7d65, 0x7623,
- 0x597c, 0x7d29, 0x676e, 0x5565, 0x6f50, 0x4d31, 0x7722, 0x7132,
- 0x7131, 0x4d32, 0x5a2b, 0x4a27, 0x6362, 0x7b3c, 0x5924, 0x6e3a,
- 0x7853, 0x7b7a, 0x4f24, 0x5c7b, 0x7663, 0x6d2a, 0x7221, 0x4e61,
- 0x7a26, 0x7960, 0x6c56, 0x646e, 0x7921, 0x7b6f, 0x796b, 0x6e23,
- 0x6a2c, 0x4a28, 0x747a, 0x4d56, 0x7c76, 0x7449, 0x7854, 0x7826,
- 0x5e4a, 0x7246, 0x575a, 0x5350, 0x5845, 0x6a66, 0x735d, 0x645a,
- 0x7664, 0x7672, 0x5f42, 0x597d, 0x4c76, 0x533a, 0x642f, 0x7961,
- 0x7026, 0x4b53, 0x603c, 0x744a, 0x547a, 0x7d2a, 0x7962, 0x7437,
- 0x7d42, 0x7c30, 0x7d6c, 0x4a62, 0x7d3d, 0x6a67, 0x5f43, 0x5152,
- 0x4e62, 0x5324, 0x7d2b, 0x5f60, 0x7247, 0x6770, 0x506e, 0x732a,
- 0x5e4b, 0x7638, 0x6175, 0x7133, 0x7723, 0x4a29, 0x4f25, 0x5f44,
- 0x6130, 0x703f, 0x7624, 0x6336, 0x7a46, 0x506f, 0x7d6d, 0x5d44,
- 0x7c77, 0x663f, 0x5e2d, 0x7a3f, 0x6571, 0x6d44, 0x5225, 0x7d6e,
- 0x7536, 0x6176, 0x5e4c, 0x7c5e, 0x6c57, 0x4d5d, 0x5637, 0x4d33,
- 0x7855, 0x6558, 0x4f6a, 0x4f50, 0x6a4c, 0x6a2e, 0x6a2d, 0x5371,
- 0x5325, 0x774f, 0x6e24, 0x5024, 0x7222, 0x5070, 0x7223, 0x7778,
- 0x5033, 0x5b29, 0x533b, 0x4a6c, 0x7126, 0x4b55, 0x7767, 0x4d5e,
- 0x7724, 0x7840, 0x535d, 0x4c50, 0x4f26, 0x7673, 0x6177, 0x535c,
- 0x7a7e, 0x7a27, 0x6b59, 0x4f27, 0x6a2f, 0x646f, 0x6939, 0x7158,
- 0x5858, 0x6072, 0x6634, 0x5c7c, 0x7371, 0x6350, 0x727b, 0x5b46,
- 0x5071, 0x5072, 0x4f5c, 0x5351, 0x4c31, 0x7758, 0x4b28, 0x6b3c,
- 0x643e, 0x745c, 0x5c42, 0x7027, 0x6640, 0x4a6d, 0x686b, 0x6568,
- 0x5c43, 0x6d5e, 0x5372, 0x4c77, 0x4e54, 0x672b, 0x4b43, 0x6131,
- 0x7732, 0x5373, 0x5352, 0x7540, 0x5f5d, 0x6e73, 0x6771, 0x7d34,
- 0x7248, 0x7352, 0x6e74, 0x6253, 0x4c51, 0x5f6a, 0x693a, 0x5957,
- 0x754d, 0x7172, 0x7a47, 0x5978, 0x5442, 0x7665, 0x5d45, 0x6772,
- 0x6d5f, 0x4a4b, 0x5b7a, 0x6835, 0x5326, 0x7d35, 0x7949, 0x6462,
- 0x7b3d, 0x5724, 0x4e45, 0x4e55, 0x5666, 0x653d, 0x5e4d, 0x6c73,
- 0x6d60, 0x6c6c, 0x7b3e, 0x5f6b, 0x6178, 0x793e, 0x5073, 0x602a,
- 0x6862, 0x6254, 0x527d, 0x6528, 0x5953, 0x535e, 0x7438, 0x773c,
- 0x5c7d, 0x686c, 0x6467, 0x6377, 0x6c28, 0x7a71, 0x6572, 0x5074,
- 0x522f, 0x5c65, 0x5025, 0x7134, 0x7c31, 0x4c78, 0x5d46, 0x7a51,
- 0x775f, 0x7a28, 0x6e75, 0x5e4e, 0x6773, 0x772c, 0x6b44, 0x6d61,
- 0x602b, 0x5d47, 0x5233, 0x523f, 0x4a4c, 0x7b3f, 0x657d, 0x5d65,
- 0x584d, 0x6c74, 0x5075, 0x686d, 0x5052, 0x5958, 0x7666, 0x5b2a,
- 0x7760, 0x5859, 0x7423, 0x745d, 0x6f51, 0x5935, 0x6d2b, 0x6337,
- 0x6e3b, 0x4d34, 0x6073, 0x6a4d, 0x6c75, 0x686e, 0x4b29, 0x712f,
- 0x4a4d, 0x6c29, 0x726b, 0x7d6f, 0x7973, 0x6641, 0x6c58, 0x6d2c,
- 0x6a4e, 0x685f, 0x5e4f, 0x5226, 0x6774, 0x5156, 0x6642, 0x6363,
- 0x6430, 0x5834, 0x7625, 0x735e, 0x5725, 0x7768, 0x6846, 0x7b66,
- 0x5d66, 0x5c7e, 0x585a, 0x5a2c, 0x6a30, 0x6338, 0x4a2a, 0x6179,
- 0x6a31, 0x726c, 0x7a6e, 0x6e55, 0x7974, 0x526c, 0x7b7b, 0x7d70,
- 0x603d, 0x4e63, 0x7846, 0x5e2e, 0x5f45, 0x653e, 0x6d2d, 0x7a6a,
- 0x4d6e, 0x6d26, 0x6d2e, 0x706d, 0x5d21, 0x6d2f, 0x7c78, 0x586b,
- 0x4c79, 0x4d35, 0x7a29, 0x615d, 0x6255, 0x6d4f, 0x5d22, 0x794a,
- 0x6a68, 0x656d, 0x536b, 0x6954, 0x617a, 0x644c, 0x6164, 0x6847,
- 0x4e5b, 0x5c55, 0x7735, 0x7c73, 0x7073, 0x4e2f, 0x7135, 0x6f52,
- 0x6848, 0x6b71, 0x4b54, 0x603e, 0x6378, 0x6a69, 0x7c32, 0x6074,
- 0x4f60, 0x6e25, 0x7a2a, 0x6643, 0x6132, 0x4a2b, 0x6364, 0x693b,
- 0x6256, 0x7372, 0x6e56, 0x6a32, 0x5076, 0x6c59, 0x5a4b, 0x4f28,
- 0x5d23, 0x585b, 0x794e, 0x6955, 0x6351, 0x523c, 0x582c, 0x734c,
- 0x4d7b, 0x7656, 0x6775, 0x686f, 0x6379, 0x523b, 0x7373, 0x637b,
- 0x5e50, 0x4e30, 0x5677, 0x7159, 0x7541, 0x5c44, 0x753b, 0x5e51,
- 0x5c66, 0x5e52, 0x6d62, 0x6e76, 0x6a4f, 0x706e, 0x637c, 0x535f,
- 0x5374, 0x6133, 0x6134, 0x7453, 0x5f46, 0x6956, 0x5b2b, 0x7626,
- 0x6339, 0x6b45, 0x7429, 0x4d36, 0x5279, 0x5a2d, 0x5263, 0x4f51,
- 0x4b5c, 0x4c7a, 0x4f5d, 0x6829, 0x633b, 0x633a, 0x605a, 0x6e77,
- 0x5c33, 0x5375, 0x5726, 0x7635, 0x575b, 0x6155, 0x546a, 0x5f23,
- 0x7d5f, 0x5077, 0x6d54, 0x4b2a, 0x645b, 0x617b, 0x4b22, 0x5360,
- 0x643f, 0x7b40, 0x5a3e, 0x644d, 0x5639, 0x6f40, 0x617c, 0x7639,
- 0x5f47, 0x6431, 0x5c67, 0x5c68, 0x7a56, 0x5376, 0x715a, 0x7a72,
- 0x627d, 0x554f, 0x5078, 0x4d5f, 0x754b, 0x6470, 0x4b2b, 0x5744,
- 0x627e, 0x5d5a, 0x5a2e, 0x4a6e, 0x5539, 0x6321, 0x6863, 0x732b,
- 0x4f29, 0x5377, 0x5471, 0x4e64, 0x6872, 0x6575, 0x672e, 0x563a,
- 0x5f6c, 0x6440, 0x6864, 0x5835, 0x645c, 0x7439, 0x7136, 0x625e,
- 0x6135, 0x4d6f, 0x7127, 0x4e65, 0x4b5d, 0x5963, 0x732c, 0x5079,
- 0x6c2b, 0x5e53, 0x7769, 0x7975, 0x615e, 0x4b6e, 0x633c, 0x7856,
- 0x5b6e, 0x7d71, 0x7736, 0x745e, 0x726d, 0x5b59, 0x7028, 0x617d,
- 0x5e54, 0x602c, 0x6d63, 0x5361, 0x5f48, 0x5936, 0x7d2c, 0x6f53,
- 0x6441, 0x786b, 0x5b2c, 0x7c46, 0x582d, 0x763a, 0x5b5f, 0x5353,
- 0x7847, 0x4a4e, 0x7841, 0x5234, 0x5c34, 0x7a39, 0x4a4f, 0x7c33,
- 0x6a6a, 0x6a6b, 0x507a, 0x6d64, 0x5d67, 0x5f49, 0x5f6d, 0x6e3c,
- 0x6f41, 0x4c52, 0x5d24, 0x5f4a, 0x5378, 0x7128, 0x4d37, 0x6f54,
- 0x645d, 0x5f6e, 0x4b2c, 0x693c, 0x6a6c, 0x5f4b, 0x793f, 0x562f,
- 0x5546, 0x4f2a, 0x4e29, 0x5678, 0x7137, 0x6e78, 0x5959, 0x735f,
- 0x7848, 0x4e46, 0x5566, 0x7466, 0x6645, 0x6f55, 0x4b6f, 0x7c5f,
- 0x5c27, 0x5667, 0x7849, 0x6352, 0x633d, 0x4f61, 0x7040, 0x6c5a,
- 0x5d57, 0x7b70, 0x6c2c, 0x7029, 0x7a57, 0x7b41, 0x5240, 0x6530,
- 0x6d65, 0x4b2d, 0x7930, 0x7725, 0x4b2e, 0x5a2f, 0x5836, 0x5327,
- 0x7b32, 0x7d44, 0x6c2d, 0x7b21, 0x6569, 0x696e, 0x7374, 0x7873,
- 0x7041, 0x5e2f, 0x7830, 0x7360, 0x672f, 0x5b2d, 0x6635, 0x7928,
- 0x5d58, 0x6859, 0x6f56, 0x5362, 0x625f, 0x7c60, 0x5748, 0x7d2d,
- 0x5f6f, 0x4c53, 0x5379, 0x5470, 0x5b47, 0x5e55, 0x7074, 0x5550,
- 0x6559, 0x7c47, 0x5c56, 0x6260, 0x5a30, 0x7323, 0x536c, 0x744b,
- 0x7d45, 0x637d, 0x7931, 0x507b, 0x6c5b, 0x753c, 0x7224, 0x584e,
- 0x584f, 0x7577, 0x7661, 0x5237, 0x7b6c, 0x5d48, 0x6468, 0x5241,
- 0x7857, 0x563b, 0x5e56, 0x773d, 0x6c2e, 0x5061, 0x6075, 0x6a33,
- 0x4e56, 0x4c25, 0x6c76, 0x6261, 0x633e, 0x7c48, 0x4d70, 0x7976,
- 0x5f70, 0x653f, 0x4e3f, 0x7c61, 0x6d30, 0x7d51, 0x763b, 0x794f,
- 0x6b5a, 0x4a41, 0x5238, 0x4d71, 0x6353, 0x7d66, 0x666d, 0x637a,
- 0x702a, 0x7950, 0x7c62, 0x7827, 0x6165, 0x6e79, 0x6776, 0x6a6d,
- 0x7c34, 0x7542, 0x575c, 0x7075, 0x5d68, 0x536d, 0x757c, 0x5a3f,
- 0x4c7b, 0x537a, 0x7424, 0x6f57, 0x5443, 0x7b63, 0x7b6d, 0x602d,
- 0x6a6e, 0x7b33, 0x6442, 0x7667, 0x525d, 0x5f4c, 0x7c49, 0x6529,
- 0x6076, 0x7633, 0x617e, 0x4b70, 0x6a6f, 0x6a70, 0x5a40, 0x7834,
- 0x6b72, 0x6443, 0x6957, 0x6471, 0x4a6f, 0x4e57, 0x7c4a, 0x7361,
- 0x4b44, 0x6365, 0x4b45, 0x6a34, 0x693d, 0x5749, 0x6b5b, 0x6d31,
- 0x4c43, 0x773e, 0x7c4b, 0x7874, 0x5937, 0x7353, 0x7354, 0x7764,
- 0x7751, 0x5837, 0x4e31, 0x4a42, 0x7b34, 0x4b46, 0x7076, 0x5567,
- 0x6a50, 0x4c54, 0x4b2f, 0x742a, 0x692f, 0x7543, 0x6958, 0x5d69,
- 0x7173, 0x557b, 0x5e3b, 0x747b, 0x7d73, 0x7d72, 0x7726, 0x5d49,
- 0x5453, 0x4c28, 0x5a41, 0x4c55, 0x5964, 0x7a4a, 0x6563, 0x533c,
- 0x4a70, 0x5044, 0x4a50, 0x7a2b, 0x6b6b, 0x6778, 0x5965, 0x5157,
- 0x7324, 0x547b, 0x7c63, 0x7a58, 0x7355, 0x4f2b, 0x6b73, 0x557c,
- 0x5354, 0x4d7c, 0x5966, 0x6279, 0x6221, 0x6b54, 0x6077, 0x6432,
- 0x4c7c, 0x7b64, 0x742b, 0x503d, 0x4a71, 0x6f38, 0x5740, 0x6e7a,
- 0x7d74, 0x5363, 0x7b42, 0x5568, 0x5b2e, 0x6136, 0x7837, 0x603f,
- 0x7b43, 0x5d6a, 0x6222, 0x6e26, 0x7668, 0x7675, 0x5d4a, 0x5062,
- 0x5d26, 0x5d6b, 0x6479, 0x632f, 0x507c, 0x747c, 0x4c3c, 0x776a,
- 0x6564, 0x5f71, 0x7761, 0x7977, 0x6f39, 0x7858, 0x7929, 0x7859,
- 0x6e3d, 0x5846, 0x6463, 0x754e, 0x5d59, 0x5967, 0x5239, 0x5543,
- 0x5a65, 0x5a50, 0x5159, 0x4e58, 0x4b5e, 0x742c, 0x5a7b, 0x7669,
- 0x6873, 0x4f2c, 0x7070, 0x747d, 0x5b48, 0x4e40, 0x6354, 0x514f,
- 0x7175, 0x4d72, 0x4f6b, 0x4d38, 0x6326, 0x515a, 0x7225, 0x7226,
- 0x644e, 0x537b, 0x7129, 0x7249, 0x6f58, 0x6649, 0x5838, 0x7a73,
- 0x7335, 0x7824, 0x5173, 0x6648, 0x785a, 0x5c69, 0x5e57, 0x4b5f,
- 0x4f6c, 0x745f, 0x5174, 0x523a, 0x5f72, 0x6137, 0x6223, 0x537c,
- 0x6d66, 0x5b49, 0x647a, 0x4f5e, 0x4e50, 0x5553, 0x7375, 0x772e,
- 0x6f48, 0x4d73, 0x754f, 0x6573, 0x7042, 0x4a51, 0x6a71, 0x5026,
- 0x595a, 0x702b, 0x6b67, 0x6540, 0x7c35, 0x6444, 0x4c29, 0x7d46,
- 0x6a35, 0x652a, 0x5f3a, 0x615f, 0x5a51, 0x6138, 0x6874, 0x537d,
- 0x6224, 0x724a, 0x5a66, 0x7733, 0x7d4d, 0x7336, 0x6e57, 0x7544,
- 0x5824, 0x7227, 0x5938, 0x5939, 0x6f49, 0x564e, 0x774b, 0x5f2e,
- 0x6875, 0x5235, 0x5355, 0x744c, 0x5a7c, 0x5968, 0x776b, 0x7549,
- 0x733c, 0x5a52, 0x5335, 0x6836, 0x564f, 0x743a, 0x7749, 0x4c2a,
- 0x7043, 0x4c56, 0x5053, 0x533d, 0x5b7b, 0x4b60, 0x5364, 0x7677,
- 0x553a, 0x734d, 0x4b61, 0x6b74, 0x742d, 0x7c2a, 0x776c, 0x6876,
- 0x5a67, 0x774c, 0x6541, 0x606e, 0x557d, 0x4e66, 0x7c2b, 0x553b,
- 0x7228, 0x6225, 0x4d39, 0x6a72, 0x4b47, 0x4d74, 0x5b2f, 0x6f59,
- 0x4d3a, 0x7c79, 0x5f73, 0x4e67, 0x5a42, 0x4f2d, 0x6779, 0x7828,
- 0x7362, 0x4a72, 0x5f24, 0x5444, 0x4c57, 0x6542, 0x4d3b, 0x6f5a,
- 0x6e58, 0x5d27, 0x6226, 0x6040, 0x5630, 0x784a, 0x7c7a, 0x597e,
- 0x5e30, 0x5d6c, 0x5a68, 0x5460, 0x5679, 0x4d57, 0x5e58, 0x7278,
- 0x6456, 0x5045, 0x742e, 0x5d28, 0x6d45, 0x7356, 0x5e59, 0x6366,
- 0x5328, 0x5b30, 0x655a, 0x633f, 0x5b31, 0x5569, 0x6041, 0x6f5b,
- 0x7069, 0x5732, 0x507d, 0x5969, 0x507e, 0x6c6d, 0x5329, 0x7229,
- 0x7044, 0x6262, 0x696f, 0x7951, 0x6959, 0x685a, 0x5a43, 0x5a44,
- 0x5445, 0x677a, 0x4d60, 0x6330, 0x5b32, 0x7b44, 0x7363, 0x5925,
- 0x7b67, 0x5d4b, 0x5054, 0x6636, 0x602e, 0x7d5a, 0x5c35, 0x6078,
- 0x6731, 0x7570, 0x585c, 0x6d46, 0x6139, 0x6340, 0x7940, 0x6970,
- 0x595b, 0x7364, 0x5c36, 0x6469, 0x7045, 0x6341, 0x7c4c, 0x7c4d,
- 0x724b, 0x724c, 0x644f, 0x715b, 0x7a59, 0x7138, 0x7d75, 0x6079,
- 0x677b, 0x7c37, 0x7c64, 0x7b45, 0x6367, 0x5839, 0x7678, 0x5c45,
- 0x4c58, 0x602f, 0x7467, 0x6f5c, 0x4f7c, 0x6f5d, 0x722a, 0x7d3e,
- 0x4a2c, 0x7d3b, 0x7d47, 0x6732, 0x6a51, 0x5f74, 0x516c, 0x645e,
- 0x6543, 0x5926, 0x4d3c, 0x7365, 0x6d55, 0x593a, 0x6d67, 0x7b35,
- 0x786c, 0x6067, 0x4c59, 0x5446, 0x6725, 0x5575, 0x533e, 0x7c7b,
- 0x6472, 0x5f75, 0x6878, 0x786d, 0x4e47, 0x7d76, 0x6858, 0x4d58,
- 0x6756, 0x4c5a, 0x4a63, 0x5f76, 0x7047, 0x7046, 0x583a, 0x7174,
- 0x7470, 0x754c, 0x7c65, 0x6a45, 0x6a73, 0x5d5b, 0x5c57, 0x5e7d,
- 0x7279, 0x5547, 0x5850, 0x7048, 0x5121, 0x5122, 0x5954, 0x5668,
- 0x594a, 0x5a31, 0x5847, 0x5c62, 0x734e, 0x7574, 0x7139, 0x5a53,
- 0x766a, 0x4f75, 0x7d2e, 0x4a52, 0x5f34, 0x575d, 0x7a3a, 0x6e27,
- 0x753d, 0x7875, 0x6d68, 0x5461, 0x5123, 0x6156, 0x7978, 0x5b4a,
- 0x4b79, 0x5454, 0x595c, 0x6e3e, 0x776d, 0x526e, 0x6166, 0x7779,
- 0x5d6d, 0x685b, 0x5b33, 0x5177, 0x6030, 0x5462, 0x7657, 0x5779,
- 0x585d, 0x4d7d, 0x722b, 0x4d3d, 0x7842, 0x722c, 0x4a2d, 0x4a2e,
- 0x4f2e, 0x6342, 0x5c37, 0x5b5a, 0x593b, 0x4a73, 0x7653, 0x6678,
- 0x6a75, 0x6a76, 0x7679, 0x4f2f, 0x4a53, 0x4a2f, 0x5230, 0x713a,
- 0x5733, 0x6343, 0x737d, 0x5e5a, 0x5e5b, 0x6f5e, 0x6263, 0x6e7b,
- 0x5f77, 0x574a, 0x4e68, 0x5b5b, 0x713b, 0x6971, 0x7a37, 0x5046,
- 0x4c2b, 0x6e28, 0x4b7a, 0x7979, 0x4c7d, 0x537e, 0x6450, 0x726e,
- 0x5455, 0x5f4d, 0x7c38, 0x5150, 0x724d, 0x7752, 0x4a54, 0x5559,
- 0x585e, 0x4d59, 0x6e29, 0x763c, 0x4c5b, 0x7049, 0x7c7c, 0x6849,
- 0x747e, 0x677c, 0x575e, 0x5e5c, 0x702c, 0x4c7e, 0x4d61, 0x613a,
- 0x5b6f, 0x5a32, 0x5125, 0x5c38, 0x5876, 0x5124, 0x4d62, 0x5c6a,
- 0x7077, 0x704a, 0x503e, 0x5d5c, 0x5456, 0x5356, 0x6d50, 0x4d21,
- 0x5f35, 0x5f78, 0x5421, 0x4e32, 0x684a, 0x6b75, 0x6355, 0x7550,
- 0x7521, 0x5927, 0x652b, 0x664b, 0x7571, 0x6545, 0x7923, 0x605b,
- 0x766b, 0x4b71, 0x596a, 0x7522, 0x5751, 0x5178, 0x6a78, 0x6a79,
- 0x5a33, 0x6f5f, 0x716f, 0x6576, 0x6e3f, 0x6264, 0x503f, 0x7a2c,
- 0x7551, 0x6733, 0x693e, 0x724e, 0x5b34, 0x7c4e, 0x5d6e, 0x6734,
- 0x5734, 0x7734, 0x4d3e, 0x5a69, 0x4f30, 0x7759, 0x7366, 0x4e59,
- 0x4e2a, 0x4b48, 0x5027, 0x704b, 0x5047, 0x6445, 0x5b60, 0x555a,
- 0x5727, 0x6e40, 0x7876, 0x7552, 0x6d69, 0x593c, 0x6546, 0x7523,
- 0x5a54, 0x6227, 0x7b7c, 0x715c, 0x4a74, 0x687a, 0x4e69, 0x6978,
- 0x6265, 0x5039, 0x5472, 0x5126, 0x5f4e, 0x7c74, 0x532a, 0x4c2c,
- 0x6f60, 0x6565, 0x5055, 0x5b7c, 0x7c66, 0x4b7e, 0x6d6a, 0x5e31,
- 0x7963, 0x5422, 0x4f76, 0x5650, 0x556a, 0x716e, 0x7a4b, 0x6521,
- 0x5531, 0x4f6d, 0x6d6b, 0x5532, 0x553c, 0x7d62, 0x732d, 0x7d5b,
- 0x6930, 0x5127, 0x7d63, 0x4e33, 0x7d64, 0x7a4e, 0x4a30, 0x7727,
- 0x4f31, 0x6622, 0x7c36, 0x722d, 0x6f61, 0x732e, 0x5c46, 0x596b,
- 0x6860, 0x6128, 0x5576, 0x4f7d, 0x5e5d, 0x5951, 0x646a, 0x724f,
- 0x773f, 0x6266, 0x6228, 0x6356, 0x6d51, 0x6979, 0x5631, 0x5e32,
- 0x6068, 0x532b, 0x6b5c, 0x5f2f, 0x4a43, 0x6e7c, 0x7d43, 0x6b76,
- 0x4f32, 0x596c, 0x593d, 0x585f, 0x5438, 0x6b3e, 0x5d6f, 0x5d70,
- 0x5d71, 0x5d72, 0x593e, 0x7b46, 0x4f33, 0x6e7d, 0x642b, 0x5a45,
- 0x586c, 0x5128, 0x6229, 0x5e3c, 0x6735, 0x5b70, 0x6f62, 0x7170,
- 0x4f34, 0x5b71, 0x6031, 0x5f25, 0x7952, 0x677d, 0x6623, 0x7b71,
- 0x4b30, 0x722e, 0x4d67, 0x685c, 0x6757, 0x7740, 0x5063, 0x5a21,
- 0x4c3d, 0x5129, 0x5d4c, 0x637e, 0x512a, 0x682a, 0x6a36, 0x797a,
- 0x664c, 0x7658, 0x5447, 0x594b, 0x5952, 0x534b, 0x5877, 0x5a29,
- 0x7578, 0x5e5e, 0x722f, 0x7829, 0x5848, 0x6e41, 0x7941, 0x5d73,
- 0x6a7a, 0x763d, 0x613b, 0x4d3f, 0x7454, 0x664d, 0x7c4f, 0x7b22,
- 0x605c, 0x743b, 0x5a55, 0x7932, 0x7b72, 0x5b76, 0x5e5f, 0x5b72,
- 0x785c, 0x776e, 0x6b68, 0x527a, 0x713c, 0x7a5a, 0x5a6a, 0x5a46,
- 0x7741, 0x6736, 0x6547, 0x562c, 0x5c47, 0x6129, 0x622a, 0x5526,
- 0x5457, 0x7250, 0x6a7b, 0x605d, 0x7b73, 0x713d, 0x6267, 0x7d57,
- 0x4e48, 0x6a37, 0x7c40, 0x7d67, 0x776f, 0x5735, 0x6f3a, 0x715d,
- 0x5e33, 0x684b, 0x785d, 0x7b47, 0x5548, 0x575f, 0x5d29, 0x6931,
- 0x7a2d, 0x7659, 0x7a74, 0x782a, 0x666e, 0x4c5c, 0x613c, 0x606f,
- 0x693f, 0x7c7d, 0x664e, 0x6157, 0x664f, 0x7471, 0x6473, 0x647b,
- 0x7964, 0x6f63, 0x4f6e, 0x763e, 0x6032, 0x7c7e, 0x512b, 0x577a,
- 0x7b48, 0x6257, 0x5423, 0x7078, 0x5728, 0x6167, 0x533f, 0x6f64,
- 0x5745, 0x6b62, 0x7c67, 0x6422, 0x6268, 0x6650, 0x7b68, 0x7468,
- 0x6574, 0x743c, 0x7455, 0x5f36, 0x7c39, 0x6e42, 0x4a75, 0x6f65,
- 0x4b62, 0x5424, 0x5e60, 0x5a7d, 0x6446, 0x683e, 0x605e, 0x7634,
- 0x6a52, 0x797b, 0x6042, 0x4a64, 0x6737, 0x6a7d, 0x595d, 0x5a34,
- 0x6e2a, 0x7b69, 0x5b4b, 0x5a35, 0x713e, 0x532c, 0x7b49, 0x5f4f,
- 0x5340, 0x6357, 0x6f66, 0x7c50, 0x6940, 0x7553, 0x6c5c, 0x7737,
- 0x6a38, 0x5179, 0x5c48, 0x6a39, 0x715e, 0x5736, 0x4f35, 0x5928,
- 0x6c6e, 0x5d2a, 0x4d22, 0x682e, 0x613d, 0x7251, 0x6941, 0x527c,
- 0x5b35, 0x7367, 0x587e, 0x7c51, 0x6d32, 0x742f, 0x7b23, 0x7c41,
- 0x6e2b, 0x5425, 0x7472, 0x6e59, 0x7b4a, 0x4d63, 0x583b, 0x655b,
- 0x7877, 0x7654, 0x5729, 0x4b49, 0x6651, 0x704c, 0x582e, 0x7953,
- 0x557e, 0x583c, 0x7230, 0x622b, 0x7368, 0x6f42, 0x6d6c, 0x6738,
- 0x5a7e, 0x4c3e, 0x727c, 0x5a6b, 0x6258, 0x6d56, 0x5651, 0x6033,
- 0x7c52, 0x6b48, 0x5341, 0x704d, 0x4f77, 0x6d52, 0x5458, 0x5c49,
- 0x5771, 0x5f3b, 0x7325, 0x744d, 0x713f, 0x7831, 0x697a, 0x7b4b,
- 0x4a55, 0x7954, 0x774a, 0x5648, 0x7c68, 0x733d, 0x6e7e, 0x677e,
- 0x5342, 0x5336, 0x4c2d, 0x767a, 0x5632, 0x5258, 0x6758, 0x6325,
- 0x6739, 0x702d, 0x7b4c, 0x6b21, 0x5426, 0x7b4d, 0x553d, 0x715f,
- 0x767b, 0x5e34, 0x556b, 0x6548, 0x7b24, 0x5439, 0x5e61, 0x6423,
- 0x5737, 0x786e, 0x5e35, 0x5652, 0x7955, 0x673a, 0x6b55, 0x5577,
- 0x6f67, 0x613e, 0x7a2e, 0x5669, 0x566e, 0x673b, 0x6c4b, 0x5533,
- 0x4e34, 0x7b25, 0x616e, 0x7728, 0x7b4e, 0x583d, 0x7b7d, 0x7c69,
- 0x4f36, 0x6d47, 0x6e2c, 0x4c5d, 0x7627, 0x667a, 0x7524, 0x7d5c,
- 0x6d33, 0x4e49, 0x6f68, 0x613f, 0x7a5b, 0x4b63, 0x7729, 0x7b26,
- 0x5c39, 0x7140, 0x6d48, 0x6f43, 0x562d, 0x7d4e, 0x6821, 0x7b74,
- 0x5527, 0x7176, 0x6653, 0x4c5e, 0x7832, 0x5c6b, 0x7d36, 0x656a,
- 0x7160, 0x5b4c, 0x5d4d, 0x5448, 0x596d, 0x7525, 0x667b, 0x6654,
- 0x7d48, 0x5621, 0x7d3f, 0x7c53, 0x6f21, 0x673c, 0x516e, 0x6655,
- 0x6972, 0x5f30, 0x5860, 0x7c3a, 0x7d2f, 0x704e, 0x5b61, 0x6549,
- 0x6d34, 0x6043, 0x6358, 0x697b, 0x6a28, 0x7d37, 0x7b27, 0x6942,
- 0x7d77, 0x6259, 0x5c6c, 0x6822, 0x6670, 0x7d78, 0x7d79, 0x763f,
- 0x6727, 0x6657, 0x5473, 0x5449, 0x567a, 0x5772, 0x6140, 0x5b62,
- 0x6658, 0x673d, 0x704f, 0x733e, 0x622c, 0x7537, 0x6070, 0x7d38,
- 0x6368, 0x5427, 0x687c, 0x7a52, 0x786f, 0x5653, 0x5534, 0x7050,
- 0x7770, 0x6e33, 0x6a3a, 0x6a53, 0x6d49, 0x5d2b, 0x652c, 0x7d21,
- 0x5f50, 0x6c33, 0x5f51, 0x6d6d, 0x7838, 0x777a, 0x782b, 0x7460,
- 0x543a, 0x6433, 0x695a, 0x5e36, 0x593f, 0x5940, 0x566f, 0x594c,
- 0x5a2a, 0x5f65, 0x7765, 0x4c32, 0x5f79, 0x5760, 0x543b, 0x7d7a,
- 0x4c33, 0x5b73, 0x5f52, 0x4e4a, 0x6e5a, 0x6464, 0x7b4f, 0x4f37,
- 0x6e43, 0x4e6a, 0x622d, 0x5761, 0x7a75, 0x5549, 0x782c, 0x6759,
- 0x7369, 0x586d, 0x6344, 0x7071, 0x6865, 0x607a, 0x6e44, 0x595e,
- 0x6b22, 0x6b23, 0x7c42, 0x6a3b, 0x682b, 0x5e62, 0x6d6f, 0x6823,
- 0x4f71, 0x543c, 0x7c6a, 0x673e, 0x7c72, 0x5634, 0x622e, 0x5337,
- 0x7a4c, 0x7a5c, 0x6d35, 0x6163, 0x682c, 0x685d, 0x6f69, 0x743d,
- 0x4f38, 0x695b, 0x512c, 0x5a47, 0x6b49, 0x684c, 0x5e37, 0x563c,
- 0x5365, 0x7a5d, 0x5a56, 0x4a31, 0x5a48, 0x5f26, 0x7933, 0x7252,
- 0x4a44, 0x4e4b, 0x4d75, 0x7d30, 0x5528, 0x7141, 0x6269, 0x5c4a,
- 0x6c34, 0x7a40, 0x7b28, 0x5028, 0x5a6c, 0x596e, 0x607b, 0x6f6a,
- 0x7a5e, 0x6044, 0x4f39, 0x554a, 0x5762, 0x622f, 0x5738, 0x684d,
- 0x765a, 0x6f22, 0x625a, 0x767c, 0x7b50, 0x512d, 0x4d64, 0x512e,
- 0x5c6d, 0x684e, 0x7079, 0x4e35, 0x667c, 0x577b, 0x5056, 0x5d75,
- 0x7771, 0x767d, 0x5b77, 0x7b6a, 0x695c, 0x5941, 0x7572, 0x6045,
- 0x6a54, 0x7942, 0x6a3c, 0x5245, 0x7b51, 0x6740, 0x6b25, 0x5f7a,
- 0x6322, 0x5739, 0x6943, 0x687d, 0x682f, 0x7253, 0x7b29, 0x5825,
- 0x554b, 0x5048, 0x512f, 0x5763, 0x6046, 0x5622, 0x6d70, 0x5773,
- 0x7c54, 0x5a57, 0x4c5f, 0x7254, 0x5130, 0x4c60, 0x5b7d, 0x733f,
- 0x7051, 0x7c3b, 0x6230, 0x6625, 0x625b, 0x5f5e, 0x6047, 0x726f,
- 0x4c61, 0x566a, 0x6742, 0x4e36, 0x7340, 0x4d7e, 0x7b52, 0x7878,
- 0x777b, 0x683f, 0x6837, 0x6d36, 0x5c3a, 0x4c34, 0x7177, 0x6838,
- 0x4a76, 0x6424, 0x7456, 0x5f66, 0x5f27, 0x5f67, 0x6141, 0x6944,
- 0x5c4b, 0x6945, 0x6f23, 0x6b26, 0x4b23, 0x6369, 0x517b, 0x6f24,
- 0x6f6b, 0x5034, 0x4d23, 0x6866, 0x6f25, 0x534c, 0x5a6d, 0x573a,
- 0x7255, 0x7565, 0x596f, 0x7934, 0x5554, 0x7d4f, 0x5b63, 0x7161,
- 0x6c36, 0x7b7e, 0x5357, 0x5131, 0x4b31, 0x5132, 0x4b32, 0x7142,
- 0x7461, 0x7935, 0x6143, 0x6142, 0x6b77, 0x5f28, 0x4b4a, 0x6639,
- 0x785e, 0x792a, 0x4a77, 0x6d37, 0x5338, 0x7256, 0x5459, 0x6e45,
- 0x7270, 0x4a32, 0x5c3b, 0x7178, 0x6c37, 0x654a, 0x7640, 0x7d5d,
- 0x5463, 0x4c62, 0x7754, 0x5765, 0x5343, 0x5826, 0x7641, 0x5d76,
- 0x4d40, 0x655c, 0x654b, 0x6144, 0x6830, 0x7430, 0x736a, 0x5a6e,
- 0x573b, 0x6231, 0x572a, 0x567b, 0x645f, 0x4a56, 0x6b28, 0x5b7e,
- 0x7642, 0x6f3b, 0x547d, 0x6048, 0x6839, 0x6f26, 0x4d24, 0x5474,
- 0x5b21, 0x5b5c, 0x5b5d, 0x6e5c, 0x4b4b, 0x7c55, 0x4e6b, 0x4d41,
- 0x7b53, 0x792b, 0x7554, 0x5929, 0x695d, 0x5b4d, 0x5d4e, 0x6743,
- 0x6c4c, 0x796c, 0x4b4c, 0x607c, 0x5428, 0x6d53, 0x586f, 0x7257,
- 0x4a78, 0x5a6f, 0x5654, 0x594d, 0x586e, 0x7241, 0x5f53, 0x5a70,
- 0x626a, 0x607d, 0x5878, 0x772f, 0x5a36, 0x4a57, 0x7258, 0x5879,
- 0x7a5f, 0x4f6f, 0x5942, 0x7052, 0x6451, 0x7337, 0x7a60, 0x6f6c,
- 0x6232, 0x543d, 0x594e, 0x7462, 0x5429, 0x4d42, 0x675a, 0x7259,
- 0x592a, 0x583e, 0x5c2d, 0x626b, 0x567c, 0x4a79, 0x545a, 0x7457,
- 0x4c21, 0x4f3a, 0x7538, 0x5943, 0x5068, 0x6345, 0x6b78, 0x7231,
- 0x4f3b, 0x532d, 0x6861, 0x4e6c, 0x6034, 0x5e63, 0x5d77, 0x7232,
- 0x7376, 0x765b, 0x577e, 0x785f, 0x7772, 0x5029, 0x665a, 0x7526,
- 0x573c, 0x4c63, 0x665b, 0x5d5d, 0x5133, 0x6f6d, 0x565e, 0x6474,
- 0x616f, 0x5d78, 0x684f, 0x4a65, 0x5c21, 0x6035, 0x7c2c, 0x7c2d,
- 0x5827, 0x6d38, 0x5b36, 0x5670, 0x732f, 0x4d25, 0x5a71, 0x5828,
- 0x4c64, 0x5134, 0x4a58, 0x5a72, 0x7527, 0x7528, 0x6626, 0x556c,
- 0x5578, 0x5a73, 0x6346, 0x5e64, 0x5e65, 0x5135, 0x5136, 0x5137,
- 0x7233, 0x695e, 0x7053, 0x7234, 0x7054, 0x4b64, 0x7b54, 0x7566,
- 0x636a, 0x5e66, 0x5f54, 0x7879, 0x702e, 0x5138, 0x565f, 0x5057,
- 0x7c21, 0x6f6e, 0x5c58, 0x695f, 0x655d, 0x7d7b, 0x6049, 0x5649,
- 0x542a, 0x654c, 0x6960, 0x5058, 0x7c22, 0x543e, 0x6233, 0x5e67,
- 0x5c3c, 0x5236, 0x7555, 0x4e21, 0x7529, 0x5d79, 0x5d7a, 0x7055,
- 0x765f, 0x725a, 0x646b, 0x7271, 0x6c39, 0x7d7c, 0x612a, 0x4a59,
- 0x6f6f, 0x752a, 0x6c79, 0x782d, 0x7242, 0x7643, 0x5752, 0x7922,
- 0x7056, 0x707a, 0x7660, 0x6973, 0x7243, 0x542b, 0x4a33, 0x4d26,
- 0x4d43, 0x4d5a, 0x594f, 0x7644, 0x6e5d, 0x6744, 0x6234, 0x5f62,
- 0x675b, 0x6831, 0x7c2e, 0x654d, 0x7a6b, 0x4f3c, 0x4f62, 0x4d76,
- 0x6f70, 0x743e, 0x544d, 0x7338, 0x6921, 0x7272, 0x736b, 0x7057,
- 0x4f57, 0x4f5f, 0x6840, 0x6841, 0x4f63, 0x6922, 0x502a, 0x7341,
- 0x502b, 0x5464, 0x6f3c, 0x5821, 0x595f, 0x7357, 0x5c3d, 0x4c65,
- 0x6d71, 0x7162, 0x545b, 0x6235, 0x4a66, 0x532e, 0x4c66, 0x7153,
- 0x7567, 0x4a5a, 0x7b6e, 0x6145, 0x5f69, 0x6e5e, 0x7742, 0x5822,
- 0x5d2c, 0x702f, 0x563d, 0x612b, 0x7936, 0x5475, 0x5049, 0x6f27,
- 0x626c, 0x5b6a, 0x4e4c, 0x7568, 0x7755, 0x534d, 0x737e, 0x5035,
- 0x607e, 0x5f7b, 0x665d, 0x6824, 0x4b4d, 0x6f28, 0x6e34, 0x5a58,
- 0x5139, 0x5f29, 0x7330, 0x4c44, 0x4e37, 0x6f29, 0x5f55, 0x6d57,
- 0x6e46, 0x6f3d, 0x7c56, 0x5b74, 0x6f2a, 0x7839, 0x7569, 0x6359,
- 0x6146, 0x543f, 0x5e68, 0x706a, 0x7342, 0x532f, 0x4a5b, 0x7c57,
- 0x6d58, 0x6147, 0x7458, 0x5633, 0x5d2d, 0x553e, 0x7143, 0x6e5f,
- 0x566b, 0x7459, 0x5766, 0x5a37, 0x5d7b, 0x5d4f, 0x5823, 0x5a59,
- 0x7058, 0x6f44, 0x6158, 0x7154, 0x6d72, 0x555b, 0x555c, 0x7344,
- 0x4b57, 0x6236, 0x6f71, 0x7b55, 0x5358, 0x5d50, 0x7059, 0x4b33,
- 0x555d, 0x4d27, 0x502c, 0x513a, 0x7144, 0x6533, 0x7b75, 0x6961,
- 0x7d60, 0x7c3c, 0x5a22, 0x5a23, 0x5221, 0x526f, 0x626d, 0x5e69,
- 0x4e5c, 0x7235, 0x5064, 0x5d51, 0x6148, 0x5b37, 0x5f63, 0x6d39,
- 0x7145, 0x734f, 0x572b, 0x612c, 0x636b, 0x6e47, 0x6149, 0x4a7a,
- 0x707b, 0x7a61, 0x705a, 0x4c67, 0x5a74, 0x4c3f, 0x4e6d, 0x5529,
- 0x7a62, 0x5065, 0x6b56, 0x6c5f, 0x5f7c, 0x7756, 0x5e6a, 0x4b34,
- 0x6f3e, 0x4c35, 0x4f3d, 0x6f72, 0x6237, 0x4c68, 0x707c, 0x5660,
- 0x7146, 0x6238, 0x6b2b, 0x4b35, 0x5851, 0x744e, 0x7377, 0x5746,
- 0x513b, 0x772a, 0x6d4a, 0x5753, 0x587a, 0x7645, 0x514c, 0x5d7c,
- 0x5f7d, 0x7965, 0x604a, 0x727d, 0x5330, 0x7473, 0x5a49, 0x665e,
- 0x783a, 0x6850, 0x587b, 0x6a55, 0x5623, 0x7646, 0x725b, 0x647c,
- 0x6832, 0x5a5a, 0x725c, 0x7b56, 0x6932, 0x6e2d, 0x7a63, 0x5c6e,
- 0x756a, 0x6660, 0x707d, 0x572c, 0x7545, 0x6e60, 0x5b65, 0x5d5e,
- 0x5970, 0x6923, 0x7179, 0x7244, 0x604b, 0x6924, 0x6239, 0x6331,
- 0x7c6b, 0x4d28, 0x4c36, 0x705b, 0x663a, 0x4d29, 0x7343, 0x6159,
- 0x6f2b, 0x6745, 0x6069, 0x7345, 0x5440, 0x553f, 0x5d2e, 0x797c,
- 0x4c40, 0x6522, 0x4e38, 0x5852, 0x7956, 0x712a, 0x4e51, 0x7647,
- 0x5b6b, 0x5f7e, 0x5861, 0x7773, 0x5767, 0x547e, 0x513c, 0x654f,
- 0x4b36, 0x5a38, 0x4d44, 0x563e, 0x623a, 0x4f58, 0x604c, 0x6b79,
- 0x7d7d, 0x5768, 0x4b58, 0x6962, 0x683a, 0x6347, 0x6c4d, 0x6c4e,
- 0x563f, 0x6327, 0x5f56, 0x7d68, 0x6e61, 0x7628, 0x5d7d, 0x783b,
- 0x6851, 0x7957, 0x4e6e, 0x6c4f, 0x6925, 0x5655, 0x4d45, 0x6d3a,
- 0x513d, 0x4f3e, 0x6c3b, 0x5231, 0x4c69, 0x5944, 0x697c, 0x513e,
- 0x6c3c, 0x652d, 0x7730, 0x4c6a, 0x5344, 0x5640, 0x567d, 0x6121,
- 0x5e3d, 0x7629, 0x5a24, 0x5624, 0x7546, 0x6122, 0x6946, 0x7245,
- 0x7469, 0x566c, 0x6b53, 0x6c3d, 0x625c, 0x5e6b, 0x705c, 0x6b3f,
- 0x574e, 0x513f, 0x752b, 0x797d, 0x4a5c, 0x4d46, 0x7236, 0x5d7e,
- 0x4c37, 0x5b38, 0x5069, 0x4e5d, 0x6b40, 0x7d22, 0x784b, 0x6a56,
- 0x7130, 0x5b4e, 0x7743, 0x5b4f, 0x4b24, 0x7860, 0x7b57, 0x6b4a,
- 0x6021, 0x4e4d, 0x545c, 0x7d58, 0x5276, 0x7237, 0x7a76, 0x762a,
- 0x7a77, 0x5866, 0x7431, 0x6852, 0x4a45, 0x4c6b, 0x626e, 0x623b,
- 0x772d, 0x7861, 0x736c, 0x5e21, 0x647d, 0x636c, 0x5d2f, 0x5d30,
- 0x4b37, 0x6853, 0x6123, 0x5260, 0x707e, 0x6926, 0x4b72, 0x6d73,
- 0x5c59, 0x604d, 0x775a, 0x5b39, 0x4c2e, 0x5a5b, 0x4d47, 0x5d31,
- 0x582f, 0x6323, 0x4e6f, 0x7273, 0x7833, 0x604e, 0x757d, 0x6b6c,
- 0x5345, 0x7c6c, 0x525b, 0x546b, 0x5e22, 0x6566, 0x7030, 0x5544,
- 0x6d74, 0x636d, 0x6842, 0x6d75, 0x577c, 0x6d3b, 0x762b, 0x7238,
- 0x7648, 0x5366, 0x725d, 0x4f3f, 0x6b2c, 0x4f40, 0x6628, 0x7d69,
- 0x4f41, 0x605f, 0x5e6c, 0x6022, 0x743f, 0x626f, 0x5971, 0x7147,
- 0x4b38, 0x797e, 0x5b3a, 0x5a75, 0x766c, 0x5a5c, 0x7a64, 0x604f,
- 0x5d32, 0x6629, 0x6f73, 0x736d, 0x6b7a, 0x7966, 0x4a5d, 0x555e,
- 0x4a5e, 0x5f64, 0x667d, 0x752c, 0x6475, 0x6963, 0x6d4b, 0x4f64,
- 0x5853, 0x5d33, 0x546c, 0x7239, 0x5f37, 0x4b4e, 0x7b58, 0x5059,
- 0x5d52, 0x7774, 0x675c, 0x6425, 0x7c23, 0x5b3b, 0x723a, 0x697d,
- 0x504a, 0x7556, 0x5945, 0x6434, 0x6d27, 0x6a3d, 0x667e, 0x7744,
- 0x752d, 0x5960, 0x4a34, 0x7862, 0x4f42, 0x6c3e, 0x6534, 0x4d48,
- 0x6e48, 0x6748, 0x4d49, 0x7937, 0x7168, 0x5972, 0x5b75, 0x4a35,
- 0x5946, 0x5849, 0x592b, 0x6d3c, 0x5854, 0x5c5a, 0x623c, 0x7c6d,
- 0x6c60, 0x527e, 0x6947, 0x662a, 0x6270, 0x7a3b, 0x752e, 0x7b2a,
- 0x6c7b, 0x6c3f, 0x7c58, 0x5465, 0x7943, 0x6e62, 0x5769, 0x6d76,
- 0x5e6d, 0x4c6c, 0x636e, 0x6854, 0x7a78, 0x5d34, 0x6435, 0x5830,
- 0x5855, 0x746a, 0x4e39, 0x5661, 0x4f52, 0x5036, 0x4e22, 0x736e,
- 0x7378, 0x5c4c, 0x504b, 0x7c24, 0x4d4a, 0x5754, 0x5e23, 0x6460,
- 0x6e49, 0x625d, 0x757e, 0x542c, 0x5551, 0x5870, 0x7843, 0x6a57,
- 0x7557, 0x583f, 0x7d40, 0x6b2d, 0x552a, 0x6728, 0x6e4a, 0x4a67,
- 0x7863, 0x545d, 0x6a58, 0x7b59, 0x6d77, 0x6535, 0x502d, 0x7171,
- 0x623d, 0x6348, 0x5955, 0x5f2a, 0x5b3c, 0x7864, 0x717a, 0x6536,
- 0x736f, 0x7b5a, 0x6160, 0x592c, 0x756b, 0x6036, 0x6948, 0x4b4f,
- 0x6349, 0x5e6e, 0x623e, 0x5c6f, 0x5625, 0x6271, 0x567e, 0x5921,
- 0x5840, 0x5c5b, 0x6d3d, 0x5f38, 0x6a25, 0x572d, 0x7379, 0x6d78,
- 0x7547, 0x614a, 0x6b63, 0x725e, 0x784c, 0x6a59, 0x5346, 0x5b66,
- 0x752f, 0x4e70, 0x697e, 0x7b36, 0x6272, 0x4f72, 0x7739, 0x5973,
- 0x614b, 0x5a5d, 0x5a39, 0x6b7b, 0x4b39, 0x6d79, 0x6060, 0x7440,
- 0x7d3c, 0x5f31, 0x636f, 0x6023, 0x7d39, 0x7031, 0x4d4b, 0x6d3e,
- 0x5540, 0x6370, 0x6d7a, 0x6964, 0x556d, 0x675d, 0x5476, 0x6537,
- 0x5b67, 0x623f, 0x6e4b, 0x5774, 0x705d, 0x4e2b, 0x675e, 0x5656,
- 0x614c, 0x6833, 0x656e, 0x5c22, 0x6050, 0x5535, 0x5521, 0x7b5b,
- 0x794b, 0x4b73, 0x7425, 0x7a48, 0x5657, 0x6965, 0x7b5c, 0x7d50,
- 0x7b76, 0x5a25, 0x5b3d, 0x6c62, 0x4d77, 0x705e, 0x7649, 0x5e6f,
- 0x5331, 0x7c6e, 0x6843, 0x7148, 0x4e71, 0x796d, 0x7274, 0x6436,
- 0x7539, 0x5c70, 0x6371, 0x6825, 0x723b, 0x5e24, 0x5a4c, 0x4a69,
- 0x635a, 0x7c59, 0x6a5a, 0x7944, 0x6324, 0x7b5d, 0x6f4a, 0x6844,
- 0x554c, 0x6b57, 0x592d, 0x7b2b, 0x5359, 0x5522, 0x765e, 0x5a76,
- 0x6051, 0x6928, 0x7579, 0x7a2f, 0x6b7c, 0x606a, 0x6332, 0x5545,
- 0x7163, 0x556e, 0x4d4c, 0x6d59, 0x5841, 0x7a6c, 0x716b, 0x7a3c,
- 0x6662, 0x7a65, 0x627a, 0x4a36, 0x6437, 0x6a5b, 0x757a, 0x7b2c,
- 0x4f43, 0x6b7d, 0x787a, 0x5f39, 0x6171, 0x5224, 0x757b, 0x505a,
- 0x505b, 0x6a3e, 0x5931, 0x4a37, 0x5367, 0x7865, 0x5332, 0x6240,
- 0x725f, 0x4d65, 0x792c, 0x4d4d, 0x6e2e, 0x562e, 0x576a, 0x6760,
- 0x6b2e, 0x4f59, 0x5c4d, 0x6d7b, 0x5e70, 0x576b, 0x5e25, 0x5f57,
- 0x5b50, 0x5b51, 0x5523, 0x7032, 0x5c5c, 0x4a68, 0x7866, 0x5c4e,
- 0x6a5c, 0x5b52, 0x6933, 0x775b, 0x6328, 0x572e, 0x6061, 0x4b3a,
- 0x6551, 0x505c, 0x5541, 0x584a, 0x6329, 0x6024, 0x6929, 0x5347,
- 0x5c5d, 0x782e, 0x4c38, 0x502e, 0x5872, 0x634a, 0x4c2f, 0x542d,
- 0x7651, 0x504c, 0x4a46, 0x5542, 0x4e3a, 0x4a47, 0x7a30, 0x5f58,
- 0x753a, 0x656b, 0x6f74, 0x5d35, 0x4d2a, 0x6372, 0x7b77, 0x7750,
- 0x7d3a, 0x7d61, 0x767e, 0x5140, 0x6845, 0x6438, 0x6168, 0x4c41,
- 0x526d, 0x5b3e, 0x6062, 0x7a49, 0x614d, 0x4a38, 0x7260, 0x7149,
- 0x5e71, 0x705f, 0x7844, 0x6e4c, 0x5e72, 0x6749, 0x6273, 0x6761,
- 0x634b, 0x634c, 0x4f78, 0x6f2c, 0x7d7e, 0x7c25, 0x7a31, 0x5f59,
- 0x6052, 0x745a, 0x714a, 0x4e23, 0x723c, 0x6c63, 0x6025, 0x772b,
- 0x6b2f, 0x655e, 0x6124, 0x4d2b, 0x5974, 0x6826, 0x4d4e, 0x6169,
- 0x7c6f, 0x6063, 0x6241, 0x4e24, 0x5e26, 0x6b7e, 0x6b5d, 0x7060,
- 0x745b, 0x6274, 0x5348, 0x746b, 0x6e35, 0x7558, 0x555f, 0x5665,
- 0x6b30, 0x7463, 0x634d, 0x7474, 0x7a32, 0x6f75, 0x4a5f, 0x6b31,
- 0x6d3f, 0x7d49, 0x6426, 0x7924, 0x7033, 0x656c, 0x5167, 0x5947,
- 0x6457, 0x6a5d, 0x5477, 0x5a3a, 0x5a4d, 0x794c, 0x615a, 0x5b3f,
- 0x4c45, 0x6c50, 0x4b3b, 0x5e73, 0x692a, 0x5948, 0x6e63, 0x573d,
- 0x4f44, 0x504d, 0x7c26, 0x717b, 0x7d52, 0x5141, 0x635b, 0x5349,
- 0x5c4f, 0x4c6d, 0x5e27, 0x663b, 0x6c21, 0x4c39, 0x7b5e, 0x6762,
- 0x5441, 0x5c28, 0x6242, 0x7358, 0x6553, 0x7359, 0x7346, 0x4d5b,
- 0x4d2c, 0x7c43, 0x5467, 0x5142, 0x7925, 0x6855, 0x634e, 0x544a,
- 0x5f5a, 0x7b5f, 0x6763, 0x787b, 0x634f, 0x7530, 0x5867, 0x5949,
- 0x782f, 0x6f76, 0x5d36, 0x6e2f, 0x4d78, 0x5e38, 0x7c27, 0x777c,
- 0x7731, 0x4e3b, 0x7421, 0x6e4d, 0x612e, 0x6c43, 0x4f7e, 0x783f,
- 0x5862, 0x5368, 0x5e28, 0x7464, 0x6c42, 0x5975, 0x7945, 0x5d53,
- 0x5671, 0x6c7c, 0x7c70, 0x6d40, 0x4a39, 0x6e64, 0x7261, 0x5e39,
- 0x5672, 0x5e74, 0x5f5b, 0x5b53, 0x7a67, 0x5863, 0x7441, 0x5d37,
- 0x7275, 0x542e, 0x5673, 0x5d38, 0x4f45, 0x5f5f, 0x723e, 0x7621,
- 0x6b4b, 0x717c, 0x7347, 0x606b, 0x6d7c, 0x615b, 0x6e65, 0x5e75,
- 0x7a53, 0x714b, 0x502f, 0x5d39, 0x5143, 0x7531, 0x6a46, 0x7061,
- 0x762c, 0x7559, 0x706b, 0x5d3a, 0x723f, 0x7745, 0x5b22, 0x7276,
- 0x4a3a, 0x7775, 0x4b65, 0x6e66, 0x6053, 0x4e25, 0x5658, 0x542f,
- 0x6949, 0x534e, 0x7442, 0x4b66, 0x7121, 0x6b32, 0x7122, 0x6b33,
- 0x7034, 0x4b74, 0x5430, 0x7332, 0x7b37, 0x756c, 0x6e67, 0x7432,
- 0x756d, 0x4f73, 0x7062, 0x6e4e, 0x714c, 0x6538, 0x5775, 0x6373,
- 0x4f65, 0x4f46, 0x7333, 0x6458, 0x4f79, 0x4f5a, 0x7a4d, 0x6663,
- 0x7262, 0x756e, 0x4a3b, 0x635c, 0x4e72, 0x5659, 0x6e30, 0x7465,
- 0x5842, 0x5c50, 0x4c6e, 0x5560, 0x764a, 0x7d4a, 0x5856, 0x744f,
- 0x5626, 0x5c3e, 0x5b54, 0x5747, 0x727e, 0x714d, 0x6243, 0x5c5e,
- 0x5c5f, 0x6f2d, 0x662b, 0x795d, 0x6a3f, 0x6f2e, 0x7450, 0x4e73,
- 0x662c, 0x4e5e, 0x5579, 0x6374, 0x4d50, 0x5538, 0x777d, 0x5c29,
- 0x5e76, 0x5c2a, 0x7263, 0x6934, 0x525c, 0x6966, 0x6376, 0x674a,
- 0x504e, 0x5a77, 0x4a3c, 0x6e68, 0x5a5e, 0x7277, 0x627b, 0x4c26,
- 0x5a3b, 0x6e69, 0x755a, 0x775c, 0x616a, 0x4e41, 0x5431, 0x7d31,
- 0x663d, 0x7b2d, 0x7867, 0x614e, 0x7762, 0x756f, 0x4f47, 0x5432,
- 0x4c6f, 0x5468, 0x6e4f, 0x7757, 0x6026, 0x5641, 0x615c, 0x7063,
- 0x7164, 0x5c71, 0x5627, 0x7475, 0x714e, 0x7264, 0x5030, 0x6c6f,
- 0x793a, 0x6b35, 0x546d, 0x6244, 0x6967, 0x6b34, 0x6a21, 0x783c,
- 0x4e26, 0x7946, 0x7c5a, 0x5433, 0x5339, 0x6a5e, 0x692b, 0x6161,
- 0x534f, 0x7476, 0x6a40, 0x614f, 0x4c3a, 0x6e6a, 0x7064, 0x7334,
- 0x546e, 0x7240, 0x7165, 0x7443, 0x6054, 0x6b36, 0x5721, 0x4b68,
- 0x792d, 0x692d, 0x5864, 0x7a33, 0x6245, 0x7c3d, 0x6c44, 0x5831,
- 0x5c2b, 0x5524, 0x6b69, 0x683b, 0x5857, 0x7b2e, 0x5161, 0x5b40,
- 0x753e, 0x5e77, 0x4a7b, 0x7746, 0x4f48, 0x6150, 0x6e50, 0x6974,
- 0x4e74, 0x554d, 0x4f5b, 0x5d3b, 0x4e2c, 0x6968, 0x5434, 0x6447,
- 0x755b, 0x7a41, 0x5e29, 0x5478, 0x6f77, 0x5333, 0x6b37, 0x6f78,
- 0x755c, 0x6d4c, 0x5b55, 0x714f, 0x7150, 0x7532, 0x592e, 0x552c,
- 0x6246, 0x7d23, 0x7b65, 0x5f2b, 0x6275, 0x762d, 0x7533, 0x7035,
- 0x6125, 0x755d, 0x6c22, 0x6d7d, 0x7534, 0x7b38, 0x5b23, 0x564a,
- 0x4b59, 0x6554, 0x737a, 0x6b38, 0x6037, 0x576c, 0x716c, 0x652f,
- 0x5561, 0x576d, 0x5151, 0x6172, 0x6f79, 0x5d3c, 0x765c, 0x7065,
- 0x7444, 0x6969, 0x737b, 0x546f, 0x4c22, 0x777e, 0x5f3c, 0x6b4d,
- 0x5037, 0x5642, 0x682d, 0x6f2f, 0x4b25, 0x4b69, 0x7a68, 0x4c46,
- 0x6667, 0x6a47, 0x5b24, 0x4f49, 0x627c, 0x6f7a, 0x6b5e, 0x7548,
- 0x545e, 0x6055, 0x6f30, 0x6247, 0x592f, 0x7967, 0x6765, 0x4f4a,
- 0x6151, 0x6248, 0x6f7b, 0x7a79, 0x5c72, 0x6027, 0x7868, 0x4b6a,
- 0x4b3c, 0x5662, 0x755e, 0x755f, 0x6e36, 0x6276, 0x534a, 0x6f7c,
- 0x5144, 0x6f31, 0x5145, 0x505e, 0x5961, 0x6038, 0x4d51, 0x7339,
- 0x674c, 0x5628, 0x4e27, 0x5435, 0x6448, 0x5334, 0x6b39, 0x4b75,
- 0x765d, 0x7123, 0x4c47, 0x694a, 0x6170, 0x7560, 0x7b2f, 0x4b51,
- 0x7b60, 0x7265, 0x6c70, 0x706c, 0x6e6b, 0x694b, 0x4c70, 0x572f,
- 0x7321, 0x7c75, 0x7124, 0x6056, 0x6f32, 0x7451, 0x7721, 0x7151,
- 0x4a7c, 0x4a7d, 0x4e4e, 0x7348, 0x733a, 0x6d7e, 0x5a26, 0x606c,
- 0x784d, 0x4b52, 0x6b4e, 0x7958, 0x7959, 0x4a60, 0x5a4a, 0x4b26,
- 0x4a48, 0x796e, 0x5b6c, 0x5031, 0x556f, 0x6673, 0x6722, 0x6459,
- 0x6461, 0x7c44, 0x796f, 0x4f74, 0x7766, 0x4e3c, 0x7445, 0x5c23,
- 0x5d3d, 0x7446, 0x7821, 0x6856, 0x5b41, 0x7066, 0x6439, 0x766d,
- 0x792e, 0x5d3e, 0x5730, 0x5868, 0x4b3d, 0x795a, 0x784e, 0x7970,
- 0x606d, 0x6333, 0x7433, 0x6a42, 0x7266, 0x7036, 0x5b56, 0x6b64,
- 0x7267, 0x5755, 0x5436, 0x7968, 0x5741, 0x6555, 0x696a, 0x574c,
- 0x5369, 0x6249, 0x7c5b, 0x4d2d, 0x4c30, 0x6a22, 0x6476, 0x5040,
- 0x7037, 0x6e21, 0x5776, 0x624a, 0x624b, 0x7a4f, 0x6b5f, 0x564b,
- 0x7434, 0x6d4d, 0x6452, 0x6a29, 0x643a, 0x7322, 0x4d52, 0x764b,
- 0x7166, 0x6d41, 0x683c, 0x6e51, 0x7067, 0x624c, 0x642a, 0x7561,
- 0x6d5a, 0x576e, 0x5171, 0x696b, 0x696c, 0x6064, 0x5a27, 0x5d54,
- 0x6a23, 0x5643, 0x5674, 0x5a5f, 0x6f33, 0x624d, 0x6f7d, 0x7268,
- 0x6f45, 0x6767, 0x577d, 0x674e, 0x5f5c, 0x7947, 0x5976, 0x5f2c,
- 0x565a, 0x5c24, 0x7038, 0x557a, 0x6477, 0x5644, 0x746c, 0x6f7e,
- 0x7021, 0x5e2a, 0x5a3c, 0x587c, 0x7a54, 0x6c65, 0x7c28, 0x6c66,
- 0x584b, 0x7b39, 0x6453, 0x4d79, 0x4f53, 0x4a6a, 0x4f54, 0x783d,
- 0x7447, 0x6a5f, 0x795b, 0x5437, 0x6b65, 0x6152, 0x6a24, 0x7a42,
- 0x7b61, 0x7a6d, 0x7022, 0x4c71, 0x7a23, 0x6277, 0x624e, 0x6975,
- 0x616b, 0x6768, 0x6857, 0x5a78, 0x544b, 0x7776, 0x5645, 0x5469,
- 0x7a7a, 0x4c72, 0x775d, 0x5e3a, 0x4e28, 0x7039, 0x647e, 0x6449,
- 0x6454, 0x6a43, 0x6f34, 0x573e, 0x7b62, 0x4d53, 0x6f35, 0x7a69,
- 0x7926, 0x5f3d, 0x7747, 0x787d, 0x787c, 0x5e2b, 0x5b68, 0x635d,
- 0x6162, 0x5146, 0x7650, 0x6b66, 0x5a79, 0x6c47, 0x5e78, 0x7869,
- 0x635e, 0x4e75, 0x7a43, 0x6557, 0x6c48, 0x7349, 0x643b, 0x662e,
- 0x6f36, 0x5c3f, 0x4e3d, 0x5843, 0x504f, 0x4f7a, 0x734a, 0x6057,
- 0x5147, 0x692e, 0x683d, 0x7a44, 0x624f, 0x7a45, 0x7938, 0x5c60,
- 0x7b30, 0x5829, 0x655f, 0x7927, 0x766e, 0x764c, 0x6278, 0x6c71,
- 0x5a60, 0x7152, 0x524c, 0x4f4b, 0x4a3d, 0x5d3f, 0x766f, 0x5e79,
- 0x7a34, 0x552d, 0x7167, 0x5e3e, 0x5c40, 0x5148, 0x5149, 0x783e,
- 0x4b76, 0x5479, 0x7562, 0x6153, 0x5869, 0x787e, 0x4f4c, 0x7d24,
- 0x4e76, 0x7a50, 0x4c73, 0x663e, 0x762e, 0x5570, 0x514a, 0x7c3e,
- 0x5571, 0x4d69, 0x7a35, 0x6250, 0x7477, 0x4d54, 0x6723, 0x5b25,
- 0x6251, 0x5722, 0x7763, 0x6a26, 0x5021, 0x4e5a, 0x7b6b, 0x5b26,
- 0x5b5e, 0x5865, 0x6a60, 0x582a, 0x6560, 0x565b, 0x6f46, 0x786a,
- 0x6455, 0x4e77, 0x6058, 0x576f, 0x746d, 0x4d66, 0x4c74, 0x7563,
- 0x644a, 0x5c61, 0x7948, 0x7c3f, 0x6827, 0x5844, 0x4b3e, 0x5c2e,
- 0x5777, 0x7068, 0x5d40, 0x4f4d, 0x5c73, 0x5930, 0x6669, 0x643c,
- 0x6a44, 0x646c, 0x6465, 0x7b78, 0x4c3b, 0x643d, 0x4d5c, 0x5977,
- 0x5d5f, 0x6d4e, 0x5950, 0x6523, 0x794d, 0x4d2e, 0x4f4e, 0x762f,
- 0x7d53, 0x6b6d, 0x565c, 0x6524, 0x5536, 0x565d, 0x7969, 0x6724,
- 0x5663, 0x514b, 0x5664, 0x5572, 0x5e7a, 0x5778, 0x586a, 0x4f55,
- 0x587d, 0x582b, 0x7d4b, 0x7c5c, 0x6028, 0x5573, 0x7d59, 0x4c23,
- 0x5979, 0x536a, 0x7575, 0x6f47, 0x535a, 0x5a3d, 0x6828, 0x5c2f,
- 0x7023, 0x4d55, 0x6029, 0x5e2c, 0x703a, 0x6e31, 0x6e32, 0x764d,
- 0x6e52, 0x5646, 0x6065, 0x733b, 0x6561, 0x644b, 0x5723, 0x5b42,
- 0x4a7e, 0x4f4f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026,
- 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e,
- 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
- 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e,
- 0x303f, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
- 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
- 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
- 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
- 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066,
- 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e,
- 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
- 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130,
- 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
- 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
- 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
- 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
- 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
- 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160,
- 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168,
- 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, 0x3170,
- 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178,
- 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x3221, 0x3222,
- 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x322a,
- 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x3230, 0x3231, 0x3232,
- 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, 0x3238, 0x3239, 0x323a,
- 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, 0x3240, 0x3241, 0x3242,
- 0x3243, 0x3244, 0x3245, 0x3246, 0x3247, 0x3248, 0x3249, 0x324a,
- 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 0x3250, 0x3251, 0x3252,
- 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, 0x3259, 0x325a,
- 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, 0x3260, 0x3261, 0x3262,
- 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326a,
- 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, 0x3270, 0x3271, 0x3272,
- 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, 0x3278, 0x3279, 0x327a,
- 0x327b, 0x327c, 0x327d, 0x327e, 0x3321, 0x3322, 0x3323, 0x3324,
- 0x3325, 0x3326, 0x3327, 0x3328, 0x3329, 0x332a, 0x332b, 0x332c,
- 0x332d, 0x332e, 0x332f, 0x3330, 0x3331, 0x3332, 0x3333, 0x3334,
- 0x3335, 0x3336, 0x3337, 0x3338, 0x3339, 0x333a, 0x333b, 0x333c,
- 0x333d, 0x333e, 0x333f, 0x3340, 0x3341, 0x3342, 0x3343, 0x3344,
- 0x3345, 0x3346, 0x3347, 0x3348, 0x3349, 0x334a, 0x334b, 0x334c,
- 0x334d, 0x334e, 0x334f, 0x3350, 0x3351, 0x3352, 0x3353, 0x3354,
- 0x3355, 0x3356, 0x3357, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c,
- 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364,
- 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c,
- 0x336d, 0x336e, 0x336f, 0x3370, 0x3371, 0x3372, 0x3373, 0x3374,
- 0x3375, 0x3376, 0x3377, 0x3378, 0x3379, 0x337a, 0x337b, 0x337c,
- 0x337d, 0x337e, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426,
- 0x3427, 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e,
- 0x342f, 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436,
- 0x3437, 0x3438, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e,
- 0x343f, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446,
- 0x3447, 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e,
- 0x344f, 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456,
- 0x3457, 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e,
- 0x345f, 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466,
- 0x3467, 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e,
- 0x346f, 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476,
- 0x3477, 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e,
- 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528,
- 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, 0x3530,
- 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538,
- 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, 0x3540,
- 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, 0x3548,
- 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, 0x3550,
- 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, 0x3558,
- 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, 0x3560,
- 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568,
- 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570,
- 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578,
- 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x3621, 0x3622,
- 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, 0x3628, 0x3629, 0x362a,
- 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, 0x3630, 0x3631, 0x3632,
- 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, 0x363a,
- 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, 0x3640, 0x3641, 0x3642,
- 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364a,
- 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, 0x3650, 0x3651, 0x3652,
- 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365a,
- 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, 0x3660, 0x3661, 0x3662,
- 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, 0x3668, 0x3669, 0x366a,
- 0x366b, 0x366c, 0x366d, 0x366e, 0x366f, 0x3670, 0x3671, 0x3672,
- 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, 0x3679, 0x367a,
- 0x367b, 0x367c, 0x367d, 0x367e, 0x3721, 0x3722, 0x3723, 0x3724,
- 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372a, 0x372b, 0x372c,
- 0x372d, 0x372e, 0x372f, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
- 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
- 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
- 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
- 0x374d, 0x374e, 0x374f, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754,
- 0x3755, 0x3756, 0x3757, 0x3758, 0x3759, 0x375a, 0x375b, 0x375c,
- 0x375d, 0x375e, 0x375f, 0x3760, 0x3761, 0x3762, 0x3763, 0x3764,
- 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376a, 0x376b, 0x376c,
- 0x376d, 0x376e, 0x376f, 0x3770, 0x3771, 0x3772, 0x3773, 0x3774,
- 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377a, 0x377b, 0x377c,
- 0x377d, 0x377e, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826,
- 0x3827, 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e,
- 0x382f, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836,
- 0x3837, 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e,
- 0x383f, 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846,
- 0x3847, 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e,
- 0x384f, 0x3850, 0x3851, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856,
- 0x3857, 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e,
- 0x385f, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3866,
- 0x3867, 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e,
- 0x386f, 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876,
- 0x3877, 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e,
- 0x3921, 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, 0x3928,
- 0x3929, 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, 0x3930,
- 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938,
- 0x3939, 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, 0x3940,
- 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948,
- 0x3949, 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, 0x3950,
- 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958,
- 0x3959, 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, 0x3960,
- 0x3961, 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, 0x3968,
- 0x3969, 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, 0x3970,
- 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978,
- 0x3979, 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x3a21, 0x3a22,
- 0x3a23, 0x3a24, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29, 0x3a2a,
- 0x3a2b, 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a32,
- 0x3a33, 0x3a34, 0x3a35, 0x3a36, 0x3a37, 0x3a38, 0x3a39, 0x3a3a,
- 0x3a3b, 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, 0x3a40, 0x3a41, 0x3a42,
- 0x3a43, 0x3a44, 0x3a45, 0x3a46, 0x3a47, 0x3a48, 0x3a49, 0x3a4a,
- 0x3a4b, 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, 0x3a50, 0x3a51, 0x3a52,
- 0x3a53, 0x3a54, 0x3a55, 0x3a56, 0x3a57, 0x3a58, 0x3a59, 0x3a5a,
- 0x3a5b, 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, 0x3a60, 0x3a61, 0x3a62,
- 0x3a63, 0x3a64, 0x3a65, 0x3a66, 0x3a67, 0x3a68, 0x3a69, 0x3a6a,
- 0x3a6b, 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, 0x3a70, 0x3a71, 0x3a72,
- 0x3a73, 0x3a74, 0x3a75, 0x3a76, 0x3a77, 0x3a78, 0x3a79, 0x3a7a,
- 0x3a7b, 0x3a7c, 0x3a7d, 0x3a7e, 0x3b21, 0x3b22, 0x3b23, 0x3b24,
- 0x3b25, 0x3b26, 0x3b27, 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c,
- 0x3b2d, 0x3b2e, 0x3b2f, 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34,
- 0x3b35, 0x3b36, 0x3b37, 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3c,
- 0x3b3d, 0x3b3e, 0x3b3f, 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44,
- 0x3b45, 0x3b46, 0x3b47, 0x3b48, 0x3b49, 0x3b4a, 0x3b4b, 0x3b4c,
- 0x3b4d, 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b54,
- 0x3b55, 0x3b56, 0x3b57, 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c,
- 0x3b5d, 0x3b5e, 0x3b5f, 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64,
- 0x3b65, 0x3b66, 0x3b67, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c,
- 0x3b6d, 0x3b6e, 0x3b6f, 0x3b70, 0x3b71, 0x3b72, 0x3b73, 0x3b74,
- 0x3b75, 0x3b76, 0x3b77, 0x3b78, 0x3b79, 0x3b7a, 0x3b7b, 0x3b7c,
- 0x3b7d, 0x3b7e, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26,
- 0x3c27, 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2d, 0x3c2e,
- 0x3c2f, 0x3c30, 0x3c31, 0x3c32, 0x3c33, 0x3c34, 0x3c35, 0x3c36,
- 0x3c37, 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e,
- 0x3c3f, 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46,
- 0x3c47, 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e,
- 0x3c4f, 0x3c50, 0x3c51, 0x3c52, 0x3c53, 0x3c54, 0x3c55, 0x3c56,
- 0x3c57, 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e,
- 0x3c5f, 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66,
- 0x3c67, 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e,
- 0x3c6f, 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76,
- 0x3c77, 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e,
- 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, 0x3d28,
- 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, 0x3d30,
- 0x3d31, 0x3d32, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, 0x3d38,
- 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40,
- 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, 0x3d48,
- 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, 0x3d50,
- 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, 0x3d58,
- 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, 0x3d60,
- 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, 0x3d68,
- 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, 0x3d70,
- 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, 0x3d78,
- 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3e21, 0x3e22,
- 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x3e29, 0x3e2a,
- 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, 0x3e30, 0x3e31, 0x3e32,
- 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, 0x3e38, 0x3e39, 0x3e3a,
- 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x3e41, 0x3e42,
- 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, 0x3e48, 0x3e49, 0x3e4a,
- 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, 0x3e50, 0x3e51, 0x3e52,
- 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, 0x3e58, 0x3e59, 0x3e5a,
- 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, 0x3e60, 0x3e61, 0x3e62,
- 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, 0x3e68, 0x3e69, 0x3e6a,
- 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, 0x3e70, 0x3e71, 0x3e72,
- 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, 0x3e78, 0x3e79, 0x3e7a,
- 0x3e7b, 0x3e7c, 0x3e7d, 0x3e7e, 0x3f21, 0x3f22, 0x3f23, 0x3f24,
- 0x3f25, 0x3f26, 0x3f27, 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c,
- 0x3f2d, 0x3f2e, 0x3f2f, 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34,
- 0x3f35, 0x3f36, 0x3f37, 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c,
- 0x3f3d, 0x3f3e, 0x3f3f, 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44,
- 0x3f45, 0x3f46, 0x3f47, 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c,
- 0x3f4d, 0x3f4e, 0x3f4f, 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54,
- 0x3f55, 0x3f56, 0x3f57, 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c,
- 0x3f5d, 0x3f5e, 0x3f5f, 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64,
- 0x3f65, 0x3f66, 0x3f67, 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c,
- 0x3f6d, 0x3f6e, 0x3f6f, 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74,
- 0x3f75, 0x3f76, 0x3f77, 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c,
- 0x3f7d, 0x3f7e, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026,
- 0x4027, 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e,
- 0x402f, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036,
- 0x4037, 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e,
- 0x403f, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046,
- 0x4047, 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e,
- 0x404f, 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056,
- 0x4057, 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e,
- 0x405f, 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066,
- 0x4067, 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e,
- 0x406f, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076,
- 0x4077, 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e,
- 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128,
- 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, 0x4130,
- 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138,
- 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, 0x4140,
- 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, 0x4148,
- 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, 0x4150,
- 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, 0x4158,
- 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, 0x4160,
- 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168,
- 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, 0x4170,
- 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178,
- 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x4221, 0x4222,
- 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a,
- 0x422b, 0x422c, 0x422d, 0x422e, 0x422f, 0x4230, 0x4231, 0x4232,
- 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, 0x4238, 0x4239, 0x423a,
- 0x423b, 0x423c, 0x423d, 0x423e, 0x423f, 0x4240, 0x4241, 0x4242,
- 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, 0x4248, 0x4249, 0x424a,
- 0x424b, 0x424c, 0x424d, 0x424e, 0x424f, 0x4250, 0x4251, 0x4252,
- 0x4253, 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a,
- 0x425b, 0x425c, 0x425d, 0x425e, 0x425f, 0x4260, 0x4261, 0x4262,
- 0x4263, 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269, 0x426a,
- 0x426b, 0x426c, 0x426d, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272,
- 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a,
- 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324,
- 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c,
- 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334,
- 0x4335, 0x4336, 0x4337, 0x4338, 0x4339, 0x433a, 0x433b, 0x433c,
- 0x433d, 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344,
- 0x4345, 0x4346, 0x4347, 0x4348, 0x4349, 0x434a, 0x434b, 0x434c,
- 0x434d, 0x434e, 0x434f, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354,
- 0x4355, 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x435c,
- 0x435d, 0x435e, 0x435f, 0x4360, 0x4361, 0x4362, 0x4363, 0x4364,
- 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436a, 0x436b, 0x436c,
- 0x436d, 0x436e, 0x436f, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374,
- 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437a, 0x437b, 0x437c,
- 0x437d, 0x437e, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426,
- 0x4427, 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e,
- 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436,
- 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e,
- 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446,
- 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e,
- 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456,
- 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e,
- 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466,
- 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e,
- 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476,
- 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e,
- 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528,
- 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, 0x4530,
- 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538,
- 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, 0x4540,
- 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, 0x4548,
- 0x4549, 0x454a, 0x454b, 0x454c, 0x454d, 0x454e, 0x454f, 0x4550,
- 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, 0x4558,
- 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, 0x4560,
- 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, 0x4568,
- 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, 0x4570,
- 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578,
- 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, 0x4622,
- 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462a,
- 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, 0x4632,
- 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, 0x463a,
- 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, 0x4642,
- 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, 0x464a,
- 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, 0x4652,
- 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465a,
- 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4661, 0x4662,
- 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669, 0x466a,
- 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671, 0x4672,
- 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679, 0x467a,
- 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723, 0x4724,
- 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b, 0x472c,
- 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733, 0x4734,
- 0x4735, 0x4736, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, 0x473c,
- 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, 0x4744,
- 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, 0x474c,
- 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, 0x4754,
- 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, 0x475c,
- 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, 0x4764,
- 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, 0x476c,
- 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774,
- 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, 0x477c,
- 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826,
- 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e,
- 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836,
- 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e,
- 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846,
- 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x484d, 0x484e,
- 0x484f, 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856,
- 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e,
- 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866,
- 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e,
- 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876,
- 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e,
- 0x4b50, 0x4b56, 0x4b67, 0x4d4f, 0x4d68, 0x4e2d, 0x4f7b, 0x5022,
- 0x5038, 0x5050, 0x505d, 0x5154, 0x5155, 0x5158, 0x515b, 0x515c,
- 0x515d, 0x515e, 0x515f, 0x5160, 0x5162, 0x5163, 0x5164, 0x5165,
- 0x5166, 0x5168, 0x5169, 0x516a, 0x516b, 0x516d, 0x516f, 0x5170,
- 0x5172, 0x5176, 0x517a, 0x517c, 0x517d, 0x517e, 0x5222, 0x5223,
- 0x5227, 0x5228, 0x5229, 0x522a, 0x522b, 0x522d, 0x5232, 0x523e,
- 0x5242, 0x5243, 0x5244, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a,
- 0x524b, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252, 0x5253,
- 0x5254, 0x5255, 0x5256, 0x5257, 0x5259, 0x525a, 0x525e, 0x525f,
- 0x5261, 0x5262, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269,
- 0x526a, 0x526b, 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, 0x5275,
- 0x5277, 0x5278, 0x5466, 0x547c, 0x5525, 0x552b, 0x552e, 0x5638,
- 0x564d, 0x574b, 0x5764, 0x5b45, 0x5b64, 0x5c25, 0x5d25, 0x5d55,
- 0x5d74, 0x5e7c, 0x5e7e, 0x5f33, 0x5f61, 0x5f68, 0x6071, 0x612d,
- 0x616d, 0x6375, 0x6421, 0x6429, 0x652e, 0x6531, 0x6532, 0x6539,
- 0x653b, 0x653c, 0x6544, 0x654e, 0x6550, 0x6552, 0x6556, 0x657a,
- 0x657b, 0x657c, 0x657e, 0x6621, 0x6624, 0x6627, 0x662d, 0x662f,
- 0x6630, 0x6631, 0x6633, 0x6637, 0x6638, 0x663c, 0x6644, 0x6646,
- 0x6647, 0x664a, 0x6652, 0x6656, 0x6659, 0x665c, 0x665f, 0x6661,
- 0x6664, 0x6665, 0x6666, 0x6668, 0x666a, 0x666b, 0x666c, 0x666f,
- 0x6671, 0x6672, 0x6675, 0x6676, 0x6677, 0x6679, 0x6721, 0x6726,
- 0x6729, 0x672a, 0x672c, 0x672d, 0x6730, 0x673f, 0x6741, 0x6746,
- 0x6747, 0x674b, 0x674d, 0x674f, 0x6750, 0x6753, 0x675f, 0x6764,
- 0x6766, 0x6777, 0x6867, 0x6868, 0x6870, 0x6871, 0x6877, 0x6879,
- 0x687b, 0x687e, 0x6927, 0x692c, 0x694c, 0x6977, 0x6a41, 0x6a65,
- 0x6a74, 0x6a77, 0x6a7c, 0x6a7e, 0x6b24, 0x6b27, 0x6b29, 0x6b2a,
- 0x6b3a, 0x6b3b, 0x6b3d, 0x6b41, 0x6b42, 0x6b46, 0x6b47, 0x6b4c,
- 0x6b4f, 0x6b50, 0x6b51, 0x6b52, 0x6b58, 0x6c26, 0x6c27, 0x6c2a,
- 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c35, 0x6c38, 0x6c3a, 0x6c40,
- 0x6c41, 0x6c45, 0x6c46, 0x6c49, 0x6c4a, 0x6c55, 0x6c5d, 0x6c5e,
- 0x6c61, 0x6c64, 0x6c67, 0x6c68, 0x6c77, 0x6c78, 0x6c7a, 0x6d21,
- 0x6d22, 0x6d23, 0x6d6e, 0x6e5b, 0x723d, 0x727a, 0x7331, 0x7427,
- 0x746e, 0x7674, 0x7676, 0x7738, 0x7748, 0x7753, 0x785b, 0x7870,
- 0x7a21, 0x7a22, 0x7a66, 0x7c29, 0x2321, 0x2322, 0x2323, 0x2324,
- 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c,
- 0x232d, 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334,
- 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c,
- 0x233d, 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344,
- 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c,
- 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354,
- 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x212c,
- 0x235d, 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364,
- 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c,
- 0x236d, 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374,
- 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c,
- 0x237d, 0x2226, 0x214b, 0x214c, 0x217e, 0x237e, 0x214d, 0x235c,
-};
-
-static const Summary16 ksc5601_uni2indx_page00[70] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x2592 }, { 6, 0xf7df },
- { 20, 0x0040 }, { 21, 0xc181 }, { 26, 0x0040 }, { 27, 0x4181 },
- /* 0x0100 */
- { 31, 0x0000 }, { 31, 0x0002 }, { 32, 0x00c0 }, { 34, 0x810e },
- { 39, 0x0e07 }, { 45, 0x000c }, { 47, 0x00c0 }, { 49, 0x0000 },
- { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
- { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
- /* 0x0200 */
- { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
- { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
- { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
- { 49, 0x0080 }, { 50, 0x2f01 }, { 56, 0x0000 }, { 56, 0x0000 },
- /* 0x0300 */
- { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
- { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
- { 56, 0x0000 }, { 56, 0xfffe }, { 71, 0x03fb }, { 80, 0xfffe },
- { 95, 0x03fb }, { 104, 0x0000 }, { 104, 0x0000 }, { 104, 0x0000 },
- /* 0x0400 */
- { 104, 0x0002 }, { 105, 0xffff }, { 121, 0xffff }, { 137, 0xffff },
- { 153, 0xffff }, { 169, 0x0002 },
-};
-static const Summary16 ksc5601_uni2indx_page20[103] = {
- /* 0x2000 */
- { 170, 0x0000 }, { 170, 0x3320 }, { 175, 0x0063 }, { 179, 0x080d },
- { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x8010 },
- { 185, 0x001e }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 },
- { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 },
- /* 0x2100 */
- { 189, 0x0208 }, { 191, 0x0048 }, { 193, 0x0846 }, { 197, 0x0000 },
- { 197, 0x0000 }, { 197, 0x7818 }, { 203, 0x03ff }, { 213, 0x03ff },
- { 223, 0x0000 }, { 223, 0x03ff }, { 233, 0x0000 }, { 233, 0x0000 },
- { 233, 0x0000 }, { 233, 0x0014 }, { 235, 0x0000 }, { 235, 0x0000 },
- /* 0x2200 */
- { 235, 0x898d }, { 242, 0x6402 }, { 246, 0x5fa1 }, { 255, 0x3030 },
- { 259, 0x0000 }, { 259, 0x0004 }, { 260, 0x0c33 }, { 266, 0x0000 },
- { 266, 0x00cc }, { 270, 0x0200 }, { 271, 0x0020 }, { 272, 0x0000 },
- { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 },
- /* 0x2300 */
- { 272, 0x0000 }, { 272, 0x0004 }, { 273, 0x0000 }, { 273, 0x0000 },
- { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
- { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
- { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
- /* 0x2400 */
- { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
- { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x7fff }, { 288, 0xfff0 },
- { 300, 0x0007 }, { 303, 0xf000 }, { 307, 0xffff }, { 323, 0x003f },
- { 329, 0x0000 }, { 329, 0xffff }, { 345, 0x03ff }, { 355, 0x0000 },
- /* 0x2500 */
- { 355, 0xf00f }, { 363, 0xffff }, { 379, 0xffff }, { 395, 0xffff },
- { 411, 0x0fff }, { 423, 0x0000 }, { 423, 0x0000 }, { 423, 0x0000 },
- { 423, 0x0000 }, { 423, 0x0004 }, { 424, 0x03fb }, { 433, 0x30cc },
- { 439, 0xc9c3 }, { 447, 0x0003 }, { 449, 0x0000 }, { 449, 0x0000 },
- /* 0x2600 */
- { 449, 0xc060 }, { 453, 0x5000 }, { 455, 0x0000 }, { 455, 0x0000 },
- { 455, 0x0005 }, { 457, 0x0000 }, { 457, 0x37bb },
-};
-static const Summary16 ksc5601_uni2indx_page30[62] = {
- /* 0x3000 */
- { 468, 0xff0f }, { 480, 0x003b }, { 485, 0x0000 }, { 485, 0x0000 },
- { 485, 0xfffe }, { 500, 0xffff }, { 516, 0xffff }, { 532, 0xffff },
- { 548, 0xffff }, { 564, 0x000f }, { 568, 0xfffe }, { 583, 0xffff },
- { 599, 0xffff }, { 615, 0xffff }, { 631, 0xffff }, { 647, 0x007f },
- /* 0x3100 */
- { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0xfffe },
- { 669, 0xffff }, { 685, 0xffff }, { 701, 0xffff }, { 717, 0xffff },
- { 733, 0x7fff }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 },
- { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 },
- /* 0x3200 */
- { 748, 0xffff }, { 764, 0x1fff }, { 777, 0x0000 }, { 777, 0x0000 },
- { 777, 0x0000 }, { 777, 0x0000 }, { 777, 0xffff }, { 793, 0x8fff },
- { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
- { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
- /* 0x3300 */
- { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
- { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
- { 806, 0xff1f }, { 819, 0xffff }, { 835, 0xffff }, { 851, 0xffff },
- { 867, 0x87ff }, { 879, 0x3949 },
-};
-static const Summary16 ksc5601_uni2indx_page4e[1306] = {
- /* 0x4e00 */
- { 886, 0x2f8b }, { 895, 0x4372 }, { 902, 0x2000 }, { 903, 0x0b04 },
- { 907, 0xe82c }, { 914, 0xe340 }, { 920, 0x2800 }, { 922, 0x40c8 },
- { 926, 0x5944 }, { 932, 0x4937 }, { 940, 0x7976 }, { 950, 0x0440 },
- { 952, 0x2c93 }, { 959, 0xa3f0 }, { 967, 0x0038 }, { 970, 0x08c5 },
- /* 0x4f00 */
- { 975, 0xee02 }, { 982, 0x0003 }, { 984, 0x8000 }, { 985, 0x3550 },
- { 991, 0xe1c8 }, { 998, 0x1e23 }, { 1005, 0x8200 }, { 1007, 0xc449 },
- { 1013, 0xad5a }, { 1022, 0x2942 }, { 1027, 0xc000 }, { 1029, 0x8060 },
- { 1032, 0x461c }, { 1038, 0xa49a }, { 1045, 0xc003 }, { 1049, 0x052a },
- /* 0x5000 */
- { 1054, 0x2a44 }, { 1059, 0xd646 }, { 1067, 0x3dda }, { 1077, 0x0800 },
- { 1078, 0x8388 }, { 1083, 0x1420 }, { 1086, 0x0020 }, { 1087, 0x0170 },
- { 1091, 0x2021 }, { 1094, 0x0302 }, { 1097, 0x3000 }, { 1099, 0x40ac },
- { 1104, 0x8620 }, { 1108, 0x4462 }, { 1113, 0x20a0 }, { 1116, 0x8a00 },
- /* 0x5100 */
- { 1119, 0x0253 }, { 1124, 0x8004 }, { 1126, 0x0402 }, { 1128, 0x1484 },
- { 1132, 0x7bfb }, { 1145, 0x1004 }, { 1147, 0x7fa4 }, { 1157, 0x11e2 },
- { 1163, 0x2441 }, { 1167, 0x00a4 }, { 1170, 0x1421 }, { 1174, 0x20c0 },
- { 1177, 0x3a50 }, { 1183, 0x7000 }, { 1186, 0x0002 }, { 1187, 0x2743 },
- /* 0x5200 */
- { 1194, 0x45c9 }, { 1201, 0x2082 }, { 1204, 0x4630 }, { 1209, 0x0fc1 },
- { 1216, 0x3c88 }, { 1222, 0x2850 }, { 1226, 0x8602 }, { 1230, 0xa024 },
- { 1234, 0x2388 }, { 1239, 0x8806 }, { 1243, 0x0e19 }, { 1249, 0x4000 },
- { 1250, 0x22aa }, { 1256, 0xeb64 }, { 1265, 0x001c }, { 1268, 0xcd28 },
- /* 0x5300 */
- { 1275, 0xa120 }, { 1279, 0x02e1 }, { 1284, 0x840b }, { 1289, 0x8200 },
- { 1291, 0x279b }, { 1300, 0x549e }, { 1308, 0x8141 }, { 1312, 0xa0b3 },
- { 1319, 0x0010 }, { 1320, 0x8508 }, { 1324, 0x2061 }, { 1328, 0x0800 },
- { 1329, 0x2f08 }, { 1335, 0x08d0 }, { 1339, 0xbe3e }, { 1350, 0x010f },
- /* 0x5400 */
- { 1355, 0xf718 }, { 1364, 0xa803 }, { 1369, 0x0a41 }, { 1373, 0x5b08 },
- { 1379, 0x0504 }, { 1382, 0x0002 }, { 1383, 0x0500 }, { 1385, 0x382a },
- { 1391, 0x5041 }, { 1395, 0x0001 }, { 1396, 0x1910 }, { 1400, 0x2108 },
- { 1403, 0x0313 }, { 1408, 0x0000 }, { 1408, 0x6122 }, { 1413, 0x0404 },
- /* 0x5500 */
- { 1415, 0x40d0 }, { 1419, 0x1001 }, { 1421, 0x8000 }, { 1422, 0x4022 },
- { 1425, 0x8050 }, { 1428, 0x4048 }, { 1431, 0x0008 }, { 1432, 0x1000 },
- { 1433, 0x06d1 }, { 1439, 0x3700 }, { 1444, 0x5e80 }, { 1450, 0x0000 },
- { 1450, 0x00a0 }, { 1452, 0x9410 }, { 1456, 0x0018 }, { 1458, 0x6000 },
- /* 0x5600 */
- { 1460, 0x0240 }, { 1462, 0x0090 }, { 1464, 0x8000 }, { 1465, 0x0054 },
- { 1468, 0x0000 }, { 1468, 0x0008 }, { 1469, 0x0900 }, { 1471, 0x0010 },
- { 1472, 0x0040 }, { 1473, 0x0000 }, { 1473, 0x5020 }, { 1476, 0x1010 },
- { 1478, 0x2400 }, { 1480, 0x4c02 }, { 1484, 0x0001 }, { 1485, 0x0601 },
- /* 0x5700 */
- { 1488, 0x2918 }, { 1493, 0x814c }, { 1498, 0x2100 }, { 1500, 0x0801 },
- { 1502, 0x6485 }, { 1508, 0x0003 }, { 1510, 0x4452 }, { 1515, 0x1021 },
- { 1518, 0x0904 }, { 1521, 0x0008 }, { 1522, 0x000d }, { 1525, 0x0000 },
- { 1525, 0x4988 }, { 1530, 0x8000 }, { 1531, 0x0001 }, { 1532, 0x1691 },
- /* 0x5800 */
- { 1538, 0x0765 }, { 1545, 0x4000 }, { 1546, 0x8492 }, { 1551, 0x0433 },
- { 1556, 0x8c00 }, { 1559, 0x4592 }, { 1565, 0x0016 }, { 1568, 0x5220 },
- { 1572, 0x0228 }, { 1575, 0xd008 }, { 1579, 0x4300 }, { 1582, 0x4c08 },
- { 1586, 0x40a2 }, { 1590, 0xc32a }, { 1597, 0x9810 }, { 1601, 0x2e00 },
- /* 0x5900 */
- { 1605, 0x8000 }, { 1606, 0x1670 }, { 1612, 0x6e84 }, { 1619, 0x4082 },
- { 1622, 0xc390 }, { 1628, 0x04b3 }, { 1634, 0x7c85 }, { 1642, 0x2118 },
- { 1646, 0x041c }, { 1650, 0x02c8 }, { 1654, 0x1120 }, { 1657, 0x4a00 },
- { 1660, 0x0a48 }, { 1664, 0x361b }, { 1672, 0x5540 }, { 1677, 0x8900 },
- /* 0x5a00 */
- { 1680, 0x000a }, { 1682, 0x9902 }, { 1687, 0x0221 }, { 1690, 0x1040 },
- { 1692, 0x0242 }, { 1695, 0x0400 }, { 1696, 0x0044 }, { 1698, 0x0000 },
- { 1698, 0x0000 }, { 1698, 0x0c04 }, { 1701, 0x0010 }, { 1702, 0x0000 },
- { 1702, 0x1216 }, { 1707, 0x0000 }, { 1707, 0x0242 }, { 1710, 0x0000 },
- /* 0x5b00 */
- { 1710, 0x1a20 }, { 1714, 0x0040 }, { 1715, 0x0400 }, { 1716, 0x0000 },
- { 1716, 0x0009 }, { 1718, 0xb5b3 }, { 1728, 0x0a18 }, { 1732, 0x1523 },
- { 1738, 0x9ba0 }, { 1745, 0x1fe8 }, { 1754, 0x507c }, { 1761, 0x8379 },
- { 1769, 0x10fd }, { 1777, 0xc09d }, { 1784, 0xdbf6 }, { 1796, 0x0560 },
- /* 0x5c00 */
- { 1800, 0xef92 }, { 1810, 0x0242 }, { 1813, 0x0110 }, { 1815, 0xdf02 },
- { 1823, 0x6961 }, { 1830, 0x0822 }, { 1833, 0x9035 }, { 1839, 0x0202 },
- { 1841, 0x0000 }, { 1841, 0x0003 }, { 1843, 0x1a02 }, { 1847, 0x45aa },
- { 1854, 0x0001 }, { 1855, 0x0200 }, { 1856, 0x8101 }, { 1859, 0x2851 },
- /* 0x5d00 */
- { 1864, 0x6080 }, { 1867, 0x02d2 }, { 1872, 0x0280 }, { 1874, 0x0000 },
- { 1874, 0x1800 }, { 1876, 0x0001 }, { 1877, 0x9200 }, { 1880, 0x0000 },
- { 1880, 0x0880 }, { 1882, 0x2000 }, { 1883, 0x0405 }, { 1886, 0x3500 },
- { 1890, 0x2000 }, { 1891, 0x6044 }, { 1895, 0x49e6 }, { 1903, 0x609e },
- /* 0x5e00 */
- { 1910, 0x104c }, { 1914, 0x2a42 }, { 1919, 0x2820 }, { 1922, 0xa148 },
- { 1927, 0x10b1 }, { 1932, 0x8020 }, { 1934, 0x000e }, { 1937, 0x7b9c },
- { 1947, 0x8490 }, { 1951, 0x14a0 }, { 1955, 0x28c1 }, { 1960, 0x41e0 },
- { 1965, 0x0704 }, { 1969, 0x8c49 }, { 1975, 0x100d }, { 1979, 0x0cc8 },
- /* 0x5f00 */
- { 1984, 0x8412 }, { 1988, 0x89ba }, { 1996, 0x02c0 }, { 1999, 0x1422 },
- { 2003, 0x5500 }, { 2007, 0x0ac0 }, { 2011, 0x3ec4 }, { 2019, 0x9283 },
- { 2025, 0x1ca3 }, { 2032, 0x4387 }, { 2039, 0x4703 }, { 2045, 0x22a0 },
- { 2049, 0x3028 }, { 2053, 0x03c0 }, { 2057, 0x0801 }, { 2059, 0xa020 },
- /* 0x6000 */
- { 2062, 0x8000 }, { 2063, 0x3044 }, { 2067, 0x85a3 }, { 2074, 0x0000 },
- { 2074, 0x200e }, { 2078, 0x2225 }, { 2083, 0xb73c }, { 2093, 0x0001 },
- { 2094, 0x3220 }, { 2098, 0x8c50 }, { 2103, 0x0099 }, { 2107, 0x315d },
- { 2115, 0x00a0 }, { 2117, 0x9402 }, { 2121, 0x0003 }, { 2123, 0x0e4b },
- /* 0x6100 */
- { 2130, 0xe342 }, { 2137, 0x8c20 }, { 2141, 0x0080 }, { 2142, 0xd091 },
- { 2148, 0x1d94 }, { 2155, 0xa328 }, { 2161, 0x499c }, { 2168, 0x60c1 },
- { 2173, 0x4406 }, { 2177, 0x0713 }, { 2183, 0x5a90 }, { 2189, 0x4444 },
- { 2193, 0x0f88 }, { 2199, 0x0000 }, { 2199, 0x0040 }, { 2200, 0x95c4 },
- /* 0x6200 */
- { 2207, 0x7581 }, { 2214, 0x8447 }, { 2220, 0x4402 }, { 2223, 0xc053 },
- { 2229, 0x2b83 }, { 2236, 0x0108 }, { 2238, 0x4000 }, { 2239, 0x9242 },
- { 2244, 0x0611 }, { 2248, 0x09a6 }, { 2254, 0x0800 }, { 2255, 0x3222 },
- { 2260, 0xb384 }, { 2267, 0x1bdd }, { 2277, 0xf000 }, { 2281, 0xc08a },
- /* 0x6300 */
- { 2286, 0x0282 }, { 2289, 0x0002 }, { 2290, 0x8800 }, { 2292, 0x6c00 },
- { 2296, 0x9200 }, { 2299, 0x0021 }, { 2301, 0x4180 }, { 2304, 0x8c84 },
- { 2309, 0x1308 }, { 2313, 0x0944 }, { 2317, 0x07a7 }, { 2325, 0x0000 },
- { 2325, 0x8051 }, { 2329, 0x0c41 }, { 2333, 0x6002 }, { 2336, 0x00d0 },
- /* 0x6400 */
- { 2339, 0xa000 }, { 2341, 0x10d0 }, { 2345, 0x3004 }, { 2348, 0x4400 },
- { 2350, 0x0000 }, { 2350, 0x0100 }, { 2351, 0x8201 }, { 2354, 0x0700 },
- { 2357, 0x0100 }, { 2358, 0x440e }, { 2363, 0x6830 }, { 2368, 0x0805 },
- { 2371, 0x64b2 }, { 2378, 0x0514 }, { 2382, 0x10e6 }, { 2388, 0x4414 },
- /* 0x6500 */
- { 2392, 0x0011 }, { 2394, 0x2100 }, { 2396, 0x9c08 }, { 2401, 0xcbc0 },
- { 2408, 0xe120 }, { 2413, 0x40c2 }, { 2417, 0x304c }, { 2422, 0x41b4 },
- { 2428, 0x10ac }, { 2433, 0x9a83 }, { 2440, 0x98b2 }, { 2447, 0x3281 },
- { 2452, 0x9822 }, { 2457, 0x0084 }, { 2459, 0x3369 }, { 2467, 0xbc12 },
- /* 0x6600 */
- { 2474, 0xd6c0 }, { 2481, 0xc03b }, { 2488, 0xa1a1 }, { 2494, 0x0c53 },
- { 2500, 0x8a1e }, { 2507, 0xea00 }, { 2512, 0xcbf0 }, { 2521, 0x05d8 },
- { 2527, 0x4390 }, { 2532, 0x21c3 }, { 2538, 0x4805 }, { 2542, 0x4a1c },
- { 2548, 0x02d0 }, { 2552, 0x3240 }, { 2556, 0x0041 }, { 2558, 0xd79d },
- /* 0x6700 */
- { 2569, 0x2b09 }, { 2575, 0xe8b0 }, { 2582, 0x7dc0 }, { 2590, 0x2452 },
- { 2595, 0xc240 }, { 2599, 0xd04b }, { 2606, 0xa000 }, { 2608, 0xc8ab },
- { 2616, 0x8a80 }, { 2620, 0x34a9 }, { 2627, 0x8000 }, { 2628, 0x41c9 },
- { 2634, 0x8010 }, { 2636, 0x241f }, { 2643, 0x9200 }, { 2646, 0x487b },
- /* 0x6800 */
- { 2654, 0x0000 }, { 2654, 0x00cc }, { 2658, 0x8406 }, { 2662, 0x3300 },
- { 2666, 0x410f }, { 2672, 0x001b }, { 2676, 0x2000 }, { 2677, 0x8040 },
- { 2679, 0x8022 }, { 2682, 0xa098 }, { 2687, 0xa186 }, { 2693, 0x006b },
- { 2698, 0x2a30 }, { 2703, 0x85a4 }, { 2709, 0x4181 }, { 2713, 0x0604 },
- /* 0x6900 */
- { 2716, 0x6021 }, { 2720, 0x0004 }, { 2721, 0x0080 }, { 2722, 0xa001 },
- { 2725, 0x0400 }, { 2726, 0x46b8 }, { 2733, 0xe90f }, { 2742, 0x03a0 },
- { 2746, 0x0000 }, { 2746, 0x1820 }, { 2749, 0x40a0 }, { 2752, 0x0810 },
- { 2754, 0x380a }, { 2759, 0x0001 }, { 2760, 0x0500 }, { 2762, 0xa800 },
- /* 0x6a00 */
- { 2765, 0x0404 }, { 2767, 0xc28a }, { 2773, 0x000a }, { 2775, 0x2720 },
- { 2780, 0x0910 }, { 2783, 0x830c }, { 2788, 0x0802 }, { 2790, 0x0000 },
- { 2790, 0x6211 }, { 2795, 0x1080 }, { 2797, 0x000c }, { 2799, 0x0808 },
- { 2801, 0x000c }, { 2803, 0x0c08 }, { 2806, 0x0000 }, { 2806, 0x0840 },
- /* 0x6b00 */
- { 2808, 0x1410 }, { 2811, 0x0044 }, { 2813, 0x000b }, { 2816, 0x6404 },
- { 2820, 0x50c0 }, { 2824, 0x8001 }, { 2826, 0x047e }, { 2833, 0x8984 },
- { 2838, 0x0658 }, { 2843, 0x4140 }, { 2846, 0xc000 }, { 2848, 0x94a4 },
- { 2854, 0xa862 }, { 2860, 0x09dc }, { 2867, 0x1800 }, { 2869, 0x0000 },
- /* 0x6c00 */
- { 2869, 0x8100 }, { 2871, 0x000a }, { 2873, 0x0008 }, { 2874, 0x4190 },
- { 2878, 0x4007 }, { 2882, 0xe4a1 }, { 2889, 0x2501 }, { 2893, 0x6445 },
- { 2899, 0x11ee }, { 2907, 0x0e7d }, { 2916, 0x4800 }, { 2918, 0xfb08 },
- { 2926, 0x1616 }, { 2932, 0x08a8 }, { 2936, 0xc92e }, { 2944, 0x0009 },
- /* 0x6d00 */
- { 2946, 0x1800 }, { 2948, 0x4a82 }, { 2953, 0x06a0 }, { 2957, 0x6b64 },
- { 2965, 0x0002 }, { 2966, 0x1600 }, { 2969, 0x5648 }, { 2975, 0x8390 },
- { 2980, 0x73a0 }, { 2987, 0x002a }, { 2990, 0x8000 }, { 2991, 0x0024 },
- { 2993, 0x88f9 }, { 3001, 0x4702 }, { 3006, 0x4d02 }, { 3011, 0x0faa },
- /* 0x6e00 */
- { 3019, 0x0000 }, { 3019, 0x8e80 }, { 3024, 0xb87b }, { 3034, 0x7554 },
- { 3042, 0x2418 }, { 3046, 0xd940 }, { 3052, 0xc880 }, { 3056, 0x040c },
- { 3059, 0x0000 }, { 3059, 0xb041 }, { 3064, 0x8c24 }, { 3069, 0x0442 },
- { 3072, 0x5a34 }, { 3079, 0x001a }, { 3082, 0x8000 }, { 3083, 0xc110 },
- /* 0x6f00 */
- { 3087, 0x8046 }, { 3091, 0x0032 }, { 3094, 0x180d }, { 3099, 0x8106 },
- { 3103, 0x0002 }, { 3104, 0xcd92 }, { 3112, 0x6014 }, { 3116, 0x7401 },
- { 3121, 0x6112 }, { 3126, 0x0091 }, { 3129, 0xc098 }, { 3134, 0x420a },
- { 3138, 0x040f }, { 3143, 0x8420 }, { 3146, 0x9a13 }, { 3153, 0x4002 },
- /* 0x7000 */
- { 3155, 0x8a62 }, { 3161, 0xfd22 }, { 3170, 0x8188 }, { 3174, 0x4080 },
- { 3176, 0x1000 }, { 3177, 0x2103 }, { 3181, 0x0808 }, { 3183, 0x3101 },
- { 3187, 0x4420 }, { 3190, 0x0704 }, { 3194, 0xb812 }, { 3200, 0x0388 },
- { 3204, 0x8900 }, { 3207, 0xa300 }, { 3211, 0x0000 }, { 3211, 0x2202 },
- /* 0x7100 */
- { 3214, 0x1210 }, { 3217, 0x4600 }, { 3220, 0x0042 }, { 3222, 0x0041 },
- { 3224, 0x5680 }, { 3229, 0x5241 }, { 3234, 0x52f0 }, { 3241, 0x2000 },
- { 3242, 0x8610 }, { 3246, 0x8214 }, { 3250, 0x1004 }, { 3252, 0x4602 },
- { 3256, 0x430a }, { 3261, 0x8035 }, { 3266, 0x60e0 }, { 3271, 0xd800 },
- /* 0x7200 */
- { 3275, 0x0041 }, { 3277, 0x0801 }, { 3279, 0x3400 }, { 3282, 0x6c65 },
- { 3290, 0x11c1 }, { 3295, 0xab04 }, { 3301, 0x0286 }, { 3305, 0x2204 },
- { 3308, 0x0003 }, { 3310, 0x0000 }, { 3310, 0x9084 }, { 3314, 0x0000 },
- { 3314, 0x4015 }, { 3318, 0x0281 }, { 3321, 0x0202 }, { 3323, 0x3300 },
- /* 0x7300 */
- { 3327, 0x0400 }, { 3328, 0x3840 }, { 3332, 0x0e20 }, { 3336, 0xc0c0 },
- { 3340, 0x0030 }, { 3342, 0x0085 }, { 3345, 0x0500 }, { 3347, 0x0d25 },
- { 3353, 0x4ad0 }, { 3359, 0x81d0 }, { 3364, 0x2280 }, { 3367, 0x020c },
- { 3370, 0xb605 }, { 3377, 0x6240 }, { 3381, 0x2679 }, { 3389, 0x6280 },
- /* 0x7400 */
- { 3393, 0x02ea }, { 3399, 0x0808 }, { 3401, 0xdd67 }, { 3412, 0x8579 },
- { 3420, 0x081b }, { 3425, 0xdea0 }, { 3433, 0x8735 }, { 3441, 0x4000 },
- { 3442, 0x0a8c }, { 3447, 0xd100 }, { 3451, 0x05aa }, { 3457, 0xa225 },
- { 3463, 0x8440 }, { 3466, 0x1510 }, { 3470, 0x404d }, { 3475, 0x0080 },
- /* 0x7500 */
- { 3476, 0x0012 }, { 3478, 0x8d22 }, { 3484, 0x1968 }, { 3490, 0x058f },
- { 3497, 0x9080 }, { 3500, 0x3a1a }, { 3507, 0x8464 }, { 3512, 0x8561 },
- { 3518, 0xccc0 }, { 3524, 0x2002 }, { 3526, 0x0820 }, { 3528, 0x732e },
- { 3537, 0x20a4 }, { 3541, 0x0b34 }, { 3547, 0x0004 }, { 3548, 0x1415 },
- /* 0x7600 */
- { 3553, 0x2001 }, { 3555, 0x8200 }, { 3557, 0x0057 }, { 3562, 0x0800 },
- { 3563, 0x5004 }, { 3566, 0x0044 }, { 3568, 0x1212 }, { 3572, 0x7905 },
- { 3579, 0x40d0 }, { 3583, 0x0009 }, { 3585, 0x4000 }, { 3586, 0x8400 },
- { 3588, 0x054c }, { 3593, 0xd844 }, { 3599, 0x409a }, { 3604, 0x5114 },
- /* 0x7700 */
- { 3609, 0x0b12 }, { 3614, 0x4000 }, { 3615, 0x0201 }, { 3617, 0x1580 },
- { 3621, 0x2001 }, { 3623, 0x0800 }, { 3624, 0x084a }, { 3628, 0xc200 },
- { 3631, 0x0800 }, { 3632, 0x4002 }, { 3634, 0x3020 }, { 3637, 0x9809 },
- { 3642, 0x0000 }, { 3642, 0x1880 }, { 3645, 0xe22c }, { 3652, 0x0008 },
- /* 0x7800 */
- { 3653, 0x0004 }, { 3654, 0x0004 }, { 3655, 0x10e0 }, { 3659, 0x0014 },
- { 3661, 0x8020 }, { 3663, 0x2000 }, { 3664, 0x9800 }, { 3667, 0x1000 },
- { 3668, 0x7082 }, { 3673, 0x0082 }, { 3675, 0x0288 }, { 3678, 0x1c00 },
- { 3681, 0x4c22 }, { 3686, 0x0001 }, { 3687, 0x9100 }, { 3690, 0x0820 },
- /* 0x7900 */
- { 3692, 0x4002 }, { 3694, 0x0040 }, { 3695, 0x1c00 }, { 3698, 0x4400 },
- { 3700, 0x0383 }, { 3705, 0x7cc1 }, { 3713, 0x2121 }, { 3717, 0x8400 },
- { 3719, 0xe002 }, { 3723, 0x0002 }, { 3724, 0x44c0 }, { 3728, 0xe20a },
- { 3734, 0x0e03 }, { 3739, 0x8126 }, { 3744, 0x02d0 }, { 3748, 0x0800 },
- /* 0x7a00 */
- { 3749, 0x2921 }, { 3754, 0x9690 }, { 3760, 0x4001 }, { 3762, 0xb8c2 },
- { 3769, 0x6241 }, { 3774, 0x0080 }, { 3775, 0x0a06 }, { 3779, 0xa651 },
- { 3786, 0x0112 }, { 3789, 0x812c }, { 3794, 0xc600 }, { 3798, 0x0400 },
- { 3799, 0x0cb0 }, { 3804, 0xa280 }, { 3808, 0xa429 }, { 3814, 0x8640 },
- /* 0x7b00 */
- { 3818, 0x8000 }, { 3819, 0x4a02 }, { 3823, 0x3041 }, { 3827, 0x0200 },
- { 3828, 0xba40 }, { 3834, 0x0057 }, { 3839, 0x5001 }, { 3842, 0x2020 },
- { 3844, 0x8880 }, { 3847, 0x24b0 }, { 3852, 0x2002 }, { 3854, 0x0112 },
- { 3857, 0x02d3 }, { 3863, 0x0004 }, { 3864, 0x0211 }, { 3867, 0x0000 },
- /* 0x7c00 */
- { 3867, 0x0080 }, { 3868, 0x4004 }, { 3870, 0x0c82 }, { 3874, 0xe000 },
- { 3877, 0x3008 }, { 3880, 0x0000 }, { 3880, 0x1011 }, { 3883, 0x0008 },
- { 3884, 0x0208 }, { 3886, 0x81a4 }, { 3891, 0x40a0 }, { 3894, 0x420e },
- { 3899, 0x0400 }, { 3900, 0xc040 }, { 3903, 0x0081 }, { 3905, 0x4800 },
- /* 0x7d00 */
- { 3907, 0x2df5 }, { 3917, 0x0f91 }, { 3924, 0xd807 }, { 3931, 0x0629 },
- { 3936, 0x007c }, { 3941, 0x4001 }, { 3943, 0x4546 }, { 3949, 0x824e },
- { 3955, 0xc000 }, { 3957, 0x1008 }, { 3959, 0x3005 }, { 3963, 0xed36 },
- { 3973, 0x0c80 }, { 3976, 0x6540 }, { 3981, 0x930b }, { 3988, 0x0810 },
- /* 0x7e00 */
- { 3990, 0x0600 }, { 3992, 0xe820 }, { 3997, 0xc80a }, { 4002, 0x6082 },
- { 4006, 0x00ca }, { 4010, 0x4034 }, { 4014, 0x2e02 }, { 4019, 0x1201 },
- { 4022, 0x9004 }, { 4025, 0x1948 }, { 4030, 0x0000 }, { 4030, 0x0000 },
- { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 },
- /* 0x7f00 */
- { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0540 },
- { 4033, 0x1000 }, { 4034, 0x0031 }, { 4037, 0x4c00 }, { 4040, 0x02a5 },
- { 4045, 0x5520 }, { 4050, 0x4410 }, { 4053, 0x0310 }, { 4056, 0x2304 },
- { 4060, 0x5422 }, { 4065, 0x8034 }, { 4069, 0x0a03 }, { 4073, 0x1201 },
- /* 0x8000 */
- { 4076, 0x126b }, { 4083, 0x01a1 }, { 4087, 0x2000 }, { 4088, 0xa048 },
- { 4092, 0x0448 }, { 4095, 0x4540 }, { 4099, 0x8000 }, { 4100, 0xe08d },
- { 4107, 0x1af0 }, { 4114, 0x2840 }, { 4117, 0x8626 }, { 4123, 0x0416 },
- { 4127, 0x5018 }, { 4131, 0x4c00 }, { 4134, 0x0032 }, { 4137, 0x2112 },
- /* 0x8100 */
- { 4141, 0x05e4 }, { 4147, 0x0d00 }, { 4150, 0x8a08 }, { 4154, 0x4200 },
- { 4156, 0x4800 }, { 4158, 0x0033 }, { 4162, 0x0860 }, { 4165, 0x8703 },
- { 4171, 0x8501 }, { 4175, 0x3400 }, { 4178, 0x0109 }, { 4181, 0xe428 },
- { 4187, 0x2045 }, { 4191, 0x8100 }, { 4193, 0x25a8 }, { 4199, 0x5c18 },
- /* 0x8200 */
- { 4205, 0x35a0 }, { 4211, 0xd804 }, { 4216, 0x1c02 }, { 4220, 0x02e0 },
- { 4224, 0x00a1 }, { 4227, 0x0200 }, { 4228, 0xc050 }, { 4232, 0x4146 },
- { 4237, 0x6800 }, { 4240, 0xa604 }, { 4245, 0xf260 }, { 4252, 0xbb8a },
- { 4261, 0x0000 }, { 4261, 0xc8b6 }, { 4269, 0x00e2 }, { 4273, 0x6002 },
- /* 0x8300 */
- { 4276, 0x023e }, { 4282, 0x0080 }, { 4283, 0x8900 }, { 4286, 0x0372 },
- { 4292, 0x8681 }, { 4297, 0x0006 }, { 4299, 0x0000 }, { 4299, 0x0888 },
- { 4302, 0x4600 }, { 4305, 0x4140 }, { 4308, 0x0e04 }, { 4312, 0x2000 },
- { 4313, 0x1622 }, { 4318, 0x1048 }, { 4321, 0x8a00 }, { 4324, 0x2217 },
- /* 0x8400 */
- { 4330, 0x7418 }, { 4336, 0x0000 }, { 4336, 0x1200 }, { 4338, 0x2102 },
- { 4341, 0x0200 }, { 4342, 0x0880 }, { 4344, 0x984a }, { 4350, 0x0420 },
- { 4352, 0x0000 }, { 4352, 0x1211 }, { 4356, 0x0002 }, { 4357, 0x9904 },
- { 4362, 0x2a55 }, { 4369, 0x0402 }, { 4371, 0x5000 }, { 4373, 0x1010 },
- /* 0x8500 */
- { 4375, 0x0000 }, { 4375, 0x459a }, { 4382, 0xb02a }, { 4388, 0xa000 },
- { 4390, 0x420a }, { 4394, 0x0208 }, { 4396, 0x2708 }, { 4401, 0x0000 },
- { 4401, 0x8090 }, { 4404, 0x0812 }, { 4407, 0x8740 }, { 4412, 0x0401 },
- { 4414, 0xe202 }, { 4419, 0x3020 }, { 4422, 0x0630 }, { 4426, 0x8c80 },
- /* 0x8600 */
- { 4430, 0x04c4 }, { 4434, 0x04c0 }, { 4437, 0x2000 }, { 4438, 0x8000 },
- { 4439, 0x4000 }, { 4440, 0xd831 }, { 4447, 0x0080 }, { 4448, 0x0200 },
- { 4449, 0x1400 }, { 4451, 0x0008 }, { 4452, 0x0218 }, { 4455, 0x0000 },
- { 4455, 0x0880 }, { 4457, 0x8a10 }, { 4461, 0x2010 }, { 4463, 0x4000 },
- /* 0x8700 */
- { 4464, 0x010d }, { 4468, 0x1500 }, { 4471, 0x0000 }, { 4471, 0x0000 },
- { 4471, 0x4000 }, { 4472, 0x80a0 }, { 4475, 0x0140 }, { 4477, 0x0150 },
- { 4480, 0x2004 }, { 4482, 0x8000 }, { 4483, 0x0004 }, { 4484, 0x0408 },
- { 4486, 0x0010 }, { 4487, 0x0000 }, { 4487, 0x9001 }, { 4490, 0x4a04 },
- /* 0x8800 */
- { 4494, 0x0020 }, { 4495, 0x8000 }, { 4496, 0x000c }, { 4498, 0x0842 },
- { 4501, 0x3041 }, { 4505, 0x2a8c }, { 4511, 0x090e }, { 4516, 0xc085 },
- { 4521, 0x2906 }, { 4526, 0x40c4 }, { 4530, 0x0800 }, { 4531, 0x0010 },
- { 4532, 0x8006 }, { 4535, 0xb230 }, { 4541, 0x0102 }, { 4543, 0x2138 },
- /* 0x8900 */
- { 4548, 0x0080 }, { 4549, 0x030d }, { 4554, 0x0420 }, { 4556, 0x0940 },
- { 4559, 0x0012 }, { 4561, 0x8000 }, { 4562, 0x0410 }, { 4564, 0x8004 },
- { 4566, 0x88ca }, { 4572, 0x0048 }, { 4574, 0x0602 }, { 4577, 0x2404 },
- { 4580, 0x0001 }, { 4581, 0x0004 }, { 4582, 0x0008 }, { 4583, 0x0110 },
- /* 0x8a00 */
- { 4585, 0x550d }, { 4592, 0xa9c8 }, { 4599, 0x2428 }, { 4603, 0x0c52 },
- { 4608, 0x0000 }, { 4608, 0x4831 }, { 4613, 0x624d }, { 4620, 0x022f },
- { 4626, 0x30a0 }, { 4630, 0x4128 }, { 4634, 0x057b }, { 4642, 0xd205 },
- { 4648, 0xa894 }, { 4654, 0x1844 }, { 4658, 0x6cc2 }, { 4665, 0x45c2 },
- /* 0x8b00 */
- { 4671, 0x4017 }, { 4676, 0x2ed1 }, { 4684, 0x1901 }, { 4688, 0x0208 },
- { 4690, 0xc202 }, { 4694, 0x1500 }, { 4697, 0x9040 }, { 4700, 0x2091 },
- { 4704, 0x0401 }, { 4706, 0x044d }, { 4711, 0x0000 }, { 4711, 0x0000 },
- { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 },
- /* 0x8c00 */
- { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x8080 },
- { 4713, 0x1542 }, { 4718, 0x0420 }, { 4720, 0x0c02 }, { 4723, 0x0600 },
- { 4725, 0x1404 }, { 4728, 0x6000 }, { 4730, 0x9f87 }, { 4740, 0xb9d9 },
- { 4750, 0x059f }, { 4758, 0x540a }, { 4763, 0x245d }, { 4770, 0x3810 },
- /* 0x8d00 */
- { 4774, 0x25b0 }, { 4780, 0x0048 }, { 4782, 0x0000 }, { 4782, 0x0000 },
- { 4782, 0x0000 }, { 4782, 0x0000 }, { 4782, 0x0850 }, { 4785, 0x0099 },
- { 4789, 0x0420 }, { 4791, 0x0200 }, { 4792, 0x0108 }, { 4794, 0x4408 },
- { 4797, 0x9840 }, { 4801, 0x2800 }, { 4803, 0x810a }, { 4807, 0x0008 },
- /* 0x8e00 */
- { 4808, 0x8400 }, { 4810, 0x4001 }, { 4812, 0x0400 }, { 4813, 0x0021 },
- { 4815, 0x0794 }, { 4821, 0x8200 }, { 4823, 0x0001 }, { 4824, 0x0050 },
- { 4826, 0x2482 }, { 4830, 0x0000 }, { 4830, 0x1c00 }, { 4833, 0x0000 },
- { 4833, 0x3c01 }, { 4838, 0x8004 }, { 4840, 0x0800 }, { 4841, 0x4900 },
- /* 0x8f00 */
- { 4844, 0x0228 }, { 4847, 0xf83c }, { 4856, 0x86c0 }, { 4861, 0xcb08 },
- { 4867, 0x6230 }, { 4872, 0xa000 }, { 4874, 0x0004 }, { 4875, 0x0000 },
- { 4875, 0x0000 }, { 4875, 0x1800 }, { 4877, 0xa148 }, { 4882, 0x0007 },
- { 4885, 0x4024 }, { 4888, 0x0012 }, { 4890, 0x2c40 }, { 4894, 0x2285 },
- /* 0x9000 */
- { 4899, 0xa96f }, { 4909, 0xe6b3 }, { 4919, 0x400f }, { 4924, 0x5126 },
- { 4930, 0x6c86 }, { 4937, 0x723b }, { 4946, 0xe20b }, { 4953, 0xb5a4 },
- { 4961, 0x859f }, { 4970, 0x0222 }, { 4973, 0x854c }, { 4979, 0x0123 },
- { 4983, 0x0402 }, { 4985, 0x4000 }, { 4986, 0x2102 }, { 4989, 0x2020 },
- /* 0x9100 */
- { 4991, 0x0004 }, { 4992, 0x0224 }, { 4995, 0x2080 }, { 4997, 0x0004 },
- { 4998, 0x7e00 }, { 5004, 0x0004 }, { 5005, 0x1604 }, { 5009, 0x01a0 },
- { 5012, 0x2a80 }, { 5016, 0x1004 }, { 5018, 0xd800 }, { 5022, 0x0032 },
- { 5025, 0xfa81 }, { 5033, 0x3183 }, { 5039, 0x0488 }, { 5042, 0x0020 },
- /* 0x9200 */
- { 5043, 0x2000 }, { 5044, 0x4087 }, { 5049, 0x0000 }, { 5049, 0x8410 },
- { 5052, 0x0221 }, { 5055, 0x4880 }, { 5058, 0x0074 }, { 5062, 0x0000 },
- { 5062, 0x0029 }, { 5065, 0x114a }, { 5070, 0x0000 }, { 5070, 0x02c8 },
- { 5074, 0x9000 }, { 5076, 0x0004 }, { 5077, 0x0410 }, { 5079, 0x1100 },
- /* 0x9300 */
- { 5081, 0x0010 }, { 5082, 0xc501 }, { 5087, 0xc957 }, { 5096, 0x0000 },
- { 5096, 0x2d00 }, { 5100, 0x0810 }, { 5102, 0x4000 }, { 5103, 0x5020 },
- { 5106, 0x1000 }, { 5107, 0x0450 }, { 5110, 0x3088 }, { 5114, 0x0001 },
- { 5115, 0x0008 }, { 5116, 0x4002 }, { 5118, 0x0012 }, { 5120, 0x0040 },
- /* 0x9400 */
- { 5121, 0x0010 }, { 5122, 0x0100 }, { 5123, 0x0820 }, { 5125, 0x0120 },
- { 5127, 0x0010 }, { 5128, 0x0806 }, { 5131, 0x0000 }, { 5131, 0xa000 },
- { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
- { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
- /* 0x9500 */
- { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
- { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0080 },
- { 5134, 0x8a09 }, { 5139, 0x011e }, { 5144, 0x2138 }, { 5149, 0x1802 },
- { 5152, 0x0480 }, { 5154, 0x1070 }, { 5158, 0x0006 }, { 5160, 0x0000 },
- /* 0x9600 */
- { 5160, 0x0000 }, { 5160, 0x1000 }, { 5161, 0x4402 }, { 5164, 0x8804 },
- { 5167, 0x3815 }, { 5173, 0xf801 }, { 5179, 0x041c }, { 5183, 0x21e9 },
- { 5190, 0x6c60 }, { 5196, 0x1b30 }, { 5202, 0x0588 }, { 5206, 0x0882 },
- { 5209, 0x7af3 }, { 5220, 0x1a60 }, { 5225, 0x870c }, { 5231, 0x0ac5 },
- /* 0x9700 */
- { 5237, 0x00c1 }, { 5240, 0x524a }, { 5246, 0x0080 }, { 5247, 0x2205 },
- { 5251, 0x0114 }, { 5254, 0x5042 }, { 5258, 0x2206 }, { 5262, 0x0490 },
- { 5265, 0xa800 }, { 5268, 0x0000 }, { 5268, 0x2901 }, { 5272, 0x0000 },
- { 5272, 0x0840 }, { 5274, 0x1008 }, { 5276, 0x0000 }, { 5276, 0x8848 },
- /* 0x9800 */
- { 5280, 0x156f }, { 5289, 0x018f }, { 5295, 0x2000 }, { 5296, 0x0b01 },
- { 5300, 0x7040 }, { 5304, 0x4510 }, { 5308, 0x88a0 }, { 5312, 0x0000 },
- { 5312, 0x0000 }, { 5312, 0x0000 }, { 5312, 0x8100 }, { 5314, 0x0002 },
- { 5315, 0x0090 }, { 5317, 0x9800 }, { 5320, 0xe006 }, { 5325, 0x7010 },
- /* 0x9900 */
- { 5329, 0x1608 }, { 5333, 0x4109 }, { 5337, 0x0101 }, { 5339, 0x0000 },
- { 5339, 0x3a20 }, { 5344, 0x0096 }, { 5348, 0x0000 }, { 5348, 0x0000 },
- { 5348, 0x0000 }, { 5348, 0x2240 }, { 5351, 0x7120 }, { 5356, 0x021a },
- { 5360, 0x0002 }, { 5361, 0xa227 }, { 5368, 0x2000 }, { 5369, 0x8002 },
- /* 0x9a00 */
- { 5371, 0xc102 }, { 5375, 0x0200 }, { 5376, 0x0800 }, { 5377, 0x00c1 },
- { 5380, 0x2029 }, { 5384, 0x8ca0 }, { 5389, 0x0624 }, { 5393, 0x0000 },
- { 5393, 0x0000 }, { 5393, 0x0000 }, { 5393, 0x0100 }, { 5394, 0x0100 },
- { 5395, 0x0000 }, { 5395, 0x0118 }, { 5398, 0x4020 }, { 5400, 0x0000 },
- /* 0x9b00 */
- { 5400, 0x0000 }, { 5400, 0x0400 }, { 5401, 0x0480 }, { 5403, 0x1002 },
- { 5405, 0x803e }, { 5411, 0x0410 }, { 5413, 0x8000 }, { 5414, 0x0000 },
- { 5414, 0x4000 }, { 5415, 0x8002 }, { 5417, 0x4800 }, { 5419, 0x0000 },
- { 5419, 0x0200 }, { 5420, 0x0040 }, { 5421, 0x0110 }, { 5423, 0x0000 },
- /* 0x9c00 */
- { 5423, 0x2000 }, { 5424, 0x0025 }, { 5427, 0x0020 }, { 5428, 0x0804 },
- { 5430, 0x0280 }, { 5432, 0x0080 }, { 5433, 0x0000 }, { 5433, 0x0000 },
- { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 },
- { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x02a0 }, { 5436, 0x0058 },
- /* 0x9d00 */
- { 5439, 0x0200 }, { 5440, 0x0800 }, { 5441, 0x0140 }, { 5443, 0x0800 },
- { 5444, 0x0000 }, { 5444, 0x2002 }, { 5446, 0x1003 }, { 5449, 0x0004 },
- { 5450, 0x0000 }, { 5450, 0x0000 }, { 5450, 0x8200 }, { 5452, 0x0010 },
- { 5453, 0x0010 }, { 5454, 0x0080 }, { 5455, 0x0000 }, { 5455, 0x0704 },
- /* 0x9e00 */
- { 5459, 0x0000 }, { 5459, 0x4400 }, { 5461, 0x0000 }, { 5461, 0x0000 },
- { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0xa220 },
- { 5465, 0x0000 }, { 5465, 0xa08c }, { 5470, 0x0020 }, { 5471, 0x4830 },
- { 5475, 0x6008 }, { 5478, 0x5912 }, { 5484, 0x0100 }, { 5485, 0x0010 },
- /* 0x9f00 */
- { 5486, 0x4180 }, { 5489, 0x0008 }, { 5490, 0x0001 }, { 5491, 0x0800 },
- { 5492, 0x4c00 }, { 5495, 0x8004 }, { 5497, 0x1482 }, { 5501, 0x0080 },
- { 5502, 0x2000 }, { 5503, 0x1021 },
-};
-static const Summary16 ksc5601_uni2indx_pageac[698] = {
- /* 0xac00 */
- { 5506, 0x0793 }, { 5513, 0x3eff }, { 5526, 0xb011 }, { 5531, 0x1303 },
- { 5536, 0x2801 }, { 5539, 0x1110 }, { 5542, 0x0000 }, { 5542, 0x0593 },
- { 5548, 0x1e7b }, { 5558, 0xb011 }, { 5563, 0x9703 }, { 5570, 0x3b01 },
- { 5576, 0x1112 }, { 5580, 0x00a0 }, { 5582, 0x9593 }, { 5590, 0x306b },
- /* 0xad00 */
- { 5597, 0xb051 }, { 5603, 0x1102 }, { 5606, 0x3201 }, { 5610, 0x1130 },
- { 5614, 0x02b0 }, { 5618, 0x0111 }, { 5621, 0x300a }, { 5625, 0xb879 },
- { 5634, 0x1306 }, { 5639, 0x3001 }, { 5642, 0x0010 }, { 5643, 0x0080 },
- { 5644, 0x0113 }, { 5648, 0x100b }, { 5652, 0x0011 }, { 5654, 0x9300 },
- /* 0xae00 */
- { 5658, 0x2b03 }, { 5664, 0x0010 }, { 5665, 0x0000 }, { 5665, 0x0593 },
- { 5671, 0x746b }, { 5680, 0xb051 }, { 5686, 0x1323 }, { 5692, 0x3b01 },
- { 5698, 0x1030 }, { 5701, 0x0000 }, { 5701, 0x0000 }, { 5701, 0x7000 },
- { 5704, 0xb011 }, { 5709, 0x1303 }, { 5714, 0x2900 }, { 5717, 0x1110 },
- /* 0xaf00 */
- { 5720, 0x2180 }, { 5723, 0x0001 }, { 5724, 0x3000 }, { 5726, 0xb015 },
- { 5732, 0x030e }, { 5737, 0x3001 }, { 5740, 0x0030 }, { 5742, 0x0200 },
- { 5743, 0x0111 }, { 5746, 0x1023 }, { 5750, 0x0000 }, { 5750, 0x1300 },
- { 5753, 0x6b81 }, { 5760, 0x1010 }, { 5762, 0x0300 }, { 5764, 0x0113 },
- /* 0xb000 */
- { 5768, 0x1013 }, { 5772, 0x3011 }, { 5776, 0x0100 }, { 5777, 0x0000 },
- { 5777, 0x5530 }, { 5783, 0x22b8 }, { 5789, 0x0000 }, { 5789, 0x3000 },
- { 5791, 0xb011 }, { 5796, 0x9702 }, { 5802, 0xfb07 }, { 5812, 0x113a },
- { 5818, 0x03b0 }, { 5823, 0x0113 }, { 5827, 0x0021 }, { 5829, 0x0000 },
- /* 0xb100 */
- { 5829, 0x1b00 }, { 5833, 0x3b0d }, { 5841, 0x1138 }, { 5846, 0x03b0 },
- { 5851, 0x0113 }, { 5855, 0x1133 }, { 5861, 0x0001 }, { 5862, 0x1300 },
- { 5865, 0x2b05 }, { 5871, 0x111c }, { 5876, 0x0100 }, { 5877, 0x0000 },
- { 5877, 0x1000 }, { 5878, 0xb011 }, { 5883, 0x1300 }, { 5886, 0x2a01 },
- /* 0xb200 */
- { 5890, 0x1930 }, { 5895, 0x02b0 }, { 5899, 0x0001 }, { 5900, 0x1010 },
- { 5902, 0x0000 }, { 5902, 0x1100 }, { 5904, 0x0301 }, { 5907, 0x1030 },
- { 5910, 0x0230 }, { 5913, 0x0713 }, { 5919, 0x146b }, { 5926, 0x0011 },
- { 5928, 0x1300 }, { 5931, 0x2b05 }, { 5937, 0xf974 }, { 5947, 0x8fb8 },
- /* 0xb300 */
- { 5956, 0x0113 }, { 5960, 0x103b }, { 5966, 0x0000 }, { 5966, 0x0000 },
- { 5966, 0x0000 }, { 5966, 0xd970 }, { 5974, 0x4ab0 }, { 5980, 0x0113 },
- { 5984, 0x103b }, { 5990, 0x0011 }, { 5992, 0x1103 }, { 5996, 0x0000 },
- { 5996, 0x5930 }, { 6002, 0x2ab1 }, { 6009, 0x0111 }, { 6012, 0x1000 },
- /* 0xb400 */
- { 6013, 0x0000 }, { 6013, 0x1101 }, { 6016, 0x0b01 }, { 6020, 0x0010 },
- { 6021, 0x0000 }, { 6021, 0x0113 }, { 6025, 0x102b }, { 6030, 0x0000 },
- { 6030, 0x0101 }, { 6032, 0x2000 }, { 6033, 0x1110 }, { 6036, 0x02a0 },
- { 6039, 0x0111 }, { 6042, 0x3021 }, { 6046, 0xb059 }, { 6053, 0x0102 },
- /* 0xb500 */
- { 6055, 0x0000 }, { 6055, 0x1930 }, { 6060, 0x07b0 }, { 6066, 0x0113 },
- { 6070, 0x383b }, { 6078, 0xb011 }, { 6083, 0x0003 }, { 6085, 0x0000 },
- { 6085, 0x0000 }, { 6085, 0x0000 }, { 6085, 0x0d13 }, { 6091, 0x383b },
- { 6099, 0xb011 }, { 6104, 0x0103 }, { 6107, 0x1000 }, { 6108, 0x0000 },
- /* 0xb600 */
- { 6108, 0x0000 }, { 6108, 0x0113 }, { 6112, 0x1020 }, { 6114, 0x0010 },
- { 6115, 0x0100 }, { 6116, 0x0000 }, { 6116, 0x0110 }, { 6118, 0x0000 },
- { 6118, 0x0000 }, { 6118, 0x3000 }, { 6120, 0x1811 }, { 6124, 0x0002 },
- { 6125, 0x0000 }, { 6125, 0x0010 }, { 6126, 0x0000 }, { 6126, 0x0111 },
- /* 0xb700 */
- { 6129, 0x0023 }, { 6132, 0x0000 }, { 6132, 0x9300 }, { 6136, 0x0b01 },
- { 6140, 0x1110 }, { 6143, 0x0030 }, { 6145, 0x0111 }, { 6148, 0x302b },
- { 6154, 0xb011 }, { 6159, 0x13c7 }, { 6167, 0x3b01 }, { 6173, 0x0130 },
- { 6176, 0x0280 }, { 6178, 0x0000 }, { 6178, 0x3000 }, { 6180, 0xb011 },
- /* 0xb800 */
- { 6185, 0x1383 }, { 6191, 0x2b01 }, { 6196, 0x1130 }, { 6200, 0x03b0 },
- { 6205, 0x0011 }, { 6207, 0x300a }, { 6211, 0xb011 }, { 6216, 0x1102 },
- { 6219, 0x2000 }, { 6220, 0x0000 }, { 6220, 0x0100 }, { 6221, 0x0111 },
- { 6224, 0x102b }, { 6229, 0xa011 }, { 6233, 0x1302 }, { 6237, 0x2b01 },
- /* 0xb900 */
- { 6242, 0x0010 }, { 6243, 0x0100 }, { 6244, 0x0001 }, { 6245, 0x3000 },
- { 6247, 0x9011 }, { 6251, 0x1302 }, { 6255, 0x2b01 }, { 6260, 0x1130 },
- { 6264, 0x66b0 }, { 6271, 0x0000 }, { 6271, 0x3000 }, { 6273, 0xb011 },
- { 6278, 0xd302 }, { 6284, 0x6b07 }, { 6292, 0x113a }, { 6298, 0x07b0 },
- /* 0xba00 */
- { 6304, 0x0103 }, { 6307, 0x0020 }, { 6308, 0x0000 }, { 6308, 0x1300 },
- { 6311, 0x6b05 }, { 6318, 0x1138 }, { 6323, 0x03b0 }, { 6328, 0x0113 },
- { 6332, 0x10b8 }, { 6337, 0x0000 }, { 6337, 0x1b00 }, { 6341, 0x2b05 },
- { 6347, 0x0110 }, { 6349, 0x0300 }, { 6351, 0x0000 }, { 6351, 0x1000 },
- /* 0xbb00 */
- { 6352, 0xa011 }, { 6356, 0x1102 }, { 6359, 0x0a01 }, { 6362, 0x7970 },
- { 6370, 0xa2b0 }, { 6376, 0x0111 }, { 6379, 0x100a }, { 6382, 0x0000 },
- { 6382, 0x1100 }, { 6384, 0x0001 }, { 6385, 0x1110 }, { 6388, 0x0090 },
- { 6390, 0x0111 }, { 6393, 0x0009 }, { 6395, 0x0000 }, { 6395, 0x9300 },
- /* 0xbc00 */
- { 6399, 0xbb05 }, { 6407, 0xf9f2 }, { 6418, 0x22b0 }, { 6423, 0x0113 },
- { 6427, 0x323b }, { 6435, 0x2001 }, { 6437, 0x0000 }, { 6437, 0x0000 },
- { 6437, 0x5930 }, { 6443, 0x06b0 }, { 6448, 0x0193 }, { 6453, 0x303b },
- { 6460, 0xa011 }, { 6464, 0x1123 }, { 6469, 0x0000 }, { 6469, 0x1170 },
- /* 0xbd00 */
- { 6474, 0x02b0 }, { 6478, 0x0011 }, { 6480, 0x1010 }, { 6482, 0x0000 },
- { 6482, 0x1301 }, { 6486, 0x0301 }, { 6489, 0x0110 }, { 6491, 0x0000 },
- { 6491, 0x0793 }, { 6498, 0x162b }, { 6505, 0x0010 }, { 6506, 0x0101 },
- { 6508, 0x0000 }, { 6508, 0x1130 }, { 6512, 0x0200 }, { 6513, 0x0111 },
- /* 0xbe00 */
- { 6516, 0x3029 }, { 6521, 0xb011 }, { 6526, 0x0000 }, { 6526, 0x0000 },
- { 6526, 0x5130 }, { 6531, 0x0eb0 }, { 6537, 0x0513 }, { 6542, 0x383b },
- { 6550, 0xb011 }, { 6555, 0x0303 }, { 6559, 0x0100 }, { 6560, 0x0000 },
- { 6560, 0x0000 }, { 6560, 0x0193 }, { 6565, 0x1039 }, { 6570, 0x0000 },
- /* 0xbf00 */
- { 6570, 0x0302 }, { 6573, 0x3b00 }, { 6578, 0x0000 }, { 6578, 0x0000 },
- { 6578, 0x0113 }, { 6582, 0x0023 }, { 6585, 0x0000 }, { 6585, 0x0000 },
- { 6585, 0x0000 }, { 6585, 0x0010 }, { 6586, 0x0000 }, { 6586, 0x0001 },
- { 6587, 0x3020 }, { 6590, 0x9011 }, { 6594, 0x0002 }, { 6595, 0x0000 },
- /* 0xc000 */
- { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x1000 },
- { 6596, 0x0000 }, { 6596, 0x1102 }, { 6599, 0x0301 }, { 6602, 0x0000 },
- { 6602, 0x0000 }, { 6602, 0x0113 }, { 6606, 0xb02b }, { 6613, 0xb079 },
- { 6621, 0x1323 }, { 6627, 0x3b01 }, { 6633, 0x1130 }, { 6637, 0x02b0 },
- /* 0xc100 */
- { 6641, 0x0111 }, { 6644, 0xf021 }, { 6650, 0xb0d9 }, { 6658, 0x1343 },
- { 6664, 0x3b01 }, { 6670, 0x1130 }, { 6674, 0x03b0 }, { 6679, 0x0111 },
- { 6682, 0x7020 }, { 6686, 0xb051 }, { 6692, 0x1322 }, { 6697, 0x2001 },
- { 6699, 0x1110 }, { 6702, 0x0190 }, { 6705, 0x0111 }, { 6708, 0x300b },
- /* 0xc200 */
- { 6713, 0xb011 }, { 6718, 0x9302 }, { 6723, 0xab01 }, { 6729, 0x0016 },
- { 6732, 0x0100 }, { 6733, 0x0113 }, { 6737, 0x3021 }, { 6741, 0xb011 },
- { 6746, 0x0302 }, { 6749, 0x2901 }, { 6753, 0x3130 }, { 6758, 0x02b0 },
- { 6762, 0x0000 }, { 6762, 0x3000 }, { 6764, 0xb819 }, { 6771, 0x1b42 },
- /* 0xc300 */
- { 6777, 0x3301 }, { 6782, 0x1138 }, { 6787, 0x0330 }, { 6791, 0x0000 },
- { 6791, 0x0020 }, { 6792, 0x0000 }, { 6792, 0x1300 }, { 6795, 0x3305 },
- { 6801, 0x1110 }, { 6804, 0x0000 }, { 6804, 0x0000 }, { 6804, 0x0000 },
- { 6804, 0x0001 }, { 6805, 0x9300 }, { 6809, 0x2305 }, { 6814, 0x0130 },
- /* 0xc400 */
- { 6817, 0x0100 }, { 6818, 0x0001 }, { 6819, 0x1010 }, { 6821, 0x3011 },
- { 6825, 0x0100 }, { 6826, 0x0000 }, { 6826, 0x1130 }, { 6830, 0x0230 },
- { 6833, 0x0001 }, { 6834, 0x1010 }, { 6836, 0x0000 }, { 6836, 0x1100 },
- { 6838, 0x0000 }, { 6838, 0x0000 }, { 6838, 0x0200 }, { 6839, 0x8513 },
- /* 0xc500 */
- { 6845, 0x1003 }, { 6848, 0x1011 }, { 6851, 0x1300 }, { 6854, 0x2b01 },
- { 6859, 0x7730 }, { 6867, 0x63b8 }, { 6875, 0x0113 }, { 6879, 0x303b },
- { 6886, 0xb091 }, { 6892, 0x11a2 }, { 6897, 0x0201 }, { 6899, 0x7b30 },
- { 6907, 0x57f0 }, { 6916, 0x0113 }, { 6920, 0x702b }, { 6927, 0xf0d1 },
- /* 0xc600 */
- { 6935, 0x11e3 }, { 6942, 0x1b01 }, { 6947, 0x7130 }, { 6953, 0x0ab9 },
- { 6960, 0x0113 }, { 6964, 0x303b }, { 6971, 0x9001 }, { 6974, 0x1302 },
- { 6978, 0x2b01 }, { 6983, 0x1130 }, { 6987, 0x02b0 }, { 6991, 0x0713 },
- { 6997, 0x302b }, { 7003, 0x3011 }, { 7007, 0x1303 }, { 7012, 0x2301 },
- /* 0xc700 */
- { 7016, 0x1130 }, { 7020, 0x02b0 }, { 7024, 0x0113 }, { 7028, 0x30ab },
- { 7035, 0xb411 }, { 7041, 0x11fe }, { 7050, 0x0901 }, { 7053, 0x7130 },
- { 7059, 0x47b8 }, { 7067, 0x05d3 }, { 7074, 0x307b }, { 7082, 0xb011 },
- { 7087, 0x5303 }, { 7093, 0x2101 }, { 7096, 0x1110 }, { 7099, 0x0000 },
- /* 0xc800 */
- { 7099, 0x0513 }, { 7104, 0x306b }, { 7111, 0xb011 }, { 7116, 0x1102 },
- { 7119, 0x3301 }, { 7124, 0x0010 }, { 7125, 0x0000 }, { 7125, 0x0513 },
- { 7130, 0x38eb }, { 7139, 0xa010 }, { 7142, 0x0102 }, { 7144, 0x3000 },
- { 7146, 0x1110 }, { 7149, 0x02b0 }, { 7153, 0x0013 }, { 7156, 0x3020 },
- /* 0xc900 */
- { 7159, 0xb071 }, { 7166, 0x0102 }, { 7168, 0x1000 }, { 7169, 0x0010 },
- { 7170, 0x0000 }, { 7170, 0x0113 }, { 7174, 0x100b }, { 7178, 0x1011 },
- { 7181, 0x1300 }, { 7184, 0x2b01 }, { 7189, 0x0000 }, { 7189, 0x0000 },
- { 7189, 0x0593 }, { 7195, 0x366b }, { 7204, 0xb095 }, { 7211, 0x1303 },
- /* 0xca00 */
- { 7216, 0x3b01 }, { 7222, 0x0110 }, { 7224, 0x0200 }, { 7225, 0x0000 },
- { 7225, 0x3000 }, { 7227, 0xb011 }, { 7232, 0x0103 }, { 7235, 0x2000 },
- { 7236, 0x0010 }, { 7237, 0x0100 }, { 7238, 0x0000 }, { 7238, 0x3000 },
- { 7240, 0xb011 }, { 7245, 0x030a }, { 7249, 0x1001 }, { 7251, 0x0010 },
- /* 0xcb00 */
- { 7252, 0x0100 }, { 7253, 0x0111 }, { 7256, 0x0003 }, { 7258, 0x0000 },
- { 7258, 0x1302 }, { 7262, 0x2301 }, { 7266, 0x0010 }, { 7267, 0x0300 },
- { 7269, 0x0000 }, { 7269, 0x1000 }, { 7270, 0x0000 }, { 7270, 0x0100 },
- { 7271, 0x0000 }, { 7271, 0x0010 }, { 7272, 0x0290 }, { 7275, 0x0000 },
- /* 0xcc00 */
- { 7275, 0x3000 }, { 7277, 0x3011 }, { 7281, 0x5386 }, { 7288, 0x7b01 },
- { 7295, 0x1130 }, { 7299, 0x03b0 }, { 7304, 0x0151 }, { 7308, 0x0021 },
- { 7310, 0x0000 }, { 7310, 0x1300 }, { 7313, 0x3b01 }, { 7319, 0x1130 },
- { 7323, 0x02b0 }, { 7327, 0x0011 }, { 7329, 0x1010 }, { 7331, 0x0001 },
- /* 0xcd00 */
- { 7332, 0x1302 }, { 7336, 0x2b01 }, { 7341, 0x1110 }, { 7344, 0x0200 },
- { 7345, 0x0000 }, { 7345, 0x1000 }, { 7346, 0xb011 }, { 7351, 0x0102 },
- { 7353, 0x0100 }, { 7354, 0x1130 }, { 7358, 0x02b0 }, { 7362, 0x0001 },
- { 7363, 0x1010 }, { 7365, 0x0001 }, { 7366, 0x1100 }, { 7368, 0x2b01 },
- /* 0xce00 */
- { 7373, 0x1110 }, { 7376, 0x0210 }, { 7378, 0x0113 }, { 7382, 0x002b },
- { 7386, 0x0000 }, { 7386, 0x9300 }, { 7390, 0x2b03 }, { 7396, 0x1130 },
- { 7400, 0x02b0 }, { 7404, 0x0113 }, { 7408, 0x303b }, { 7415, 0x0000 },
- { 7415, 0x0002 }, { 7416, 0x0000 }, { 7416, 0x1930 }, { 7421, 0x03b0 },
- /* 0xcf00 */
- { 7426, 0x0113 }, { 7430, 0x102b }, { 7435, 0xb011 }, { 7440, 0x0103 },
- { 7443, 0x0000 }, { 7443, 0x1130 }, { 7447, 0x02b0 }, { 7451, 0x0113 },
- { 7455, 0x1021 }, { 7458, 0x0000 }, { 7458, 0x0102 }, { 7460, 0x0001 },
- { 7461, 0x0010 }, { 7462, 0x0000 }, { 7462, 0x0113 }, { 7466, 0x102b },
- /* 0xd000 */
- { 7471, 0x0011 }, { 7473, 0x0102 }, { 7475, 0x2000 }, { 7476, 0x1130 },
- { 7480, 0x02b0 }, { 7484, 0x0111 }, { 7487, 0x3001 }, { 7490, 0x3011 },
- { 7494, 0x0002 }, { 7495, 0x0000 }, { 7495, 0x1130 }, { 7499, 0x02b0 },
- { 7503, 0x0313 }, { 7508, 0x303b }, { 7515, 0xb011 }, { 7520, 0x0103 },
- /* 0xd100 */
- { 7523, 0x2000 }, { 7524, 0x0000 }, { 7524, 0x0000 }, { 7524, 0x0513 },
- { 7529, 0x303b }, { 7536, 0xb011 }, { 7541, 0x1102 }, { 7544, 0x1000 },
- { 7545, 0x0110 }, { 7547, 0x0000 }, { 7547, 0x0113 }, { 7551, 0x142b },
- { 7557, 0x0001 }, { 7558, 0x0100 }, { 7559, 0x0000 }, { 7559, 0x0110 },
- /* 0xd200 */
- { 7561, 0x0280 }, { 7563, 0x0001 }, { 7564, 0x3000 }, { 7566, 0xb011 },
- { 7571, 0x0102 }, { 7573, 0x1000 }, { 7574, 0x0010 }, { 7575, 0x0000 },
- { 7575, 0x0113 }, { 7579, 0x1023 }, { 7583, 0x1011 }, { 7586, 0x9302 },
- { 7591, 0x0b05 }, { 7596, 0x1110 }, { 7599, 0x0030 }, { 7601, 0x0113 },
- /* 0xd300 */
- { 7605, 0x702b }, { 7612, 0xb051 }, { 7618, 0x1323 }, { 7624, 0x3b01 },
- { 7630, 0x0030 }, { 7632, 0x0000 }, { 7632, 0x0000 }, { 7632, 0x3000 },
- { 7634, 0xb011 }, { 7639, 0x1303 }, { 7644, 0x2b01 }, { 7649, 0x1110 },
- { 7652, 0x0330 }, { 7656, 0x0101 }, { 7658, 0x300a }, { 7662, 0xb011 },
- /* 0xd400 */
- { 7667, 0x0102 }, { 7669, 0x2000 }, { 7670, 0x0000 }, { 7670, 0x0000 },
- { 7670, 0x0011 }, { 7672, 0x1000 }, { 7673, 0xa011 }, { 7677, 0x9300 },
- { 7681, 0x2b05 }, { 7687, 0x0010 }, { 7688, 0x0200 }, { 7689, 0x0000 },
- { 7689, 0x1000 }, { 7690, 0x9011 }, { 7694, 0x1100 }, { 7696, 0x2901 },
- /* 0xd500 */
- { 7700, 0x1110 }, { 7703, 0x00b0 }, { 7706, 0x0000 }, { 7706, 0x3000 },
- { 7708, 0xb011 }, { 7713, 0x1302 }, { 7717, 0x2b21 }, { 7723, 0x1130 },
- { 7727, 0x03b0 }, { 7732, 0x0001 }, { 7733, 0x0020 }, { 7734, 0x0000 },
- { 7734, 0x1300 }, { 7737, 0x2b05 }, { 7743, 0x1130 }, { 7747, 0x02b0 },
- /* 0xd600 */
- { 7751, 0x0113 }, { 7755, 0x103b }, { 7761, 0x2011 }, { 7764, 0x1300 },
- { 7767, 0x2b21 }, { 7773, 0x1132 }, { 7778, 0x0280 }, { 7780, 0x0013 },
- { 7783, 0x3028 }, { 7787, 0xa011 }, { 7791, 0x1102 }, { 7794, 0x0a01 },
- { 7797, 0x1130 }, { 7801, 0x0292 }, { 7805, 0x0111 }, { 7808, 0x3021 },
- /* 0xd700 */
- { 7812, 0x0011 }, { 7814, 0x1302 }, { 7818, 0x2b01 }, { 7823, 0x1130 },
- { 7827, 0x0290 }, { 7830, 0x03d3 }, { 7837, 0x122b }, { 7843, 0x3011 },
- { 7847, 0x1302 }, { 7851, 0x2b01 },
-};
-static const Summary16 ksc5601_uni2indx_pagef9[17] = {
- /* 0xf900 */
- { 7856, 0xffff }, { 7872, 0xffff }, { 7888, 0xffff }, { 7904, 0xffff },
- { 7920, 0xffff }, { 7936, 0xffff }, { 7952, 0xffff }, { 7968, 0xffff },
- { 7984, 0xffff }, { 8000, 0xffff }, { 8016, 0xffff }, { 8032, 0xffff },
- { 8048, 0xffff }, { 8064, 0xffff }, { 8080, 0xffff }, { 8096, 0xffff },
- /* 0xfa00 */
- { 8112, 0x0fff },
-};
-static const Summary16 ksc5601_uni2indx_pageff[15] = {
- /* 0xff00 */
- { 8124, 0xfffe }, { 8139, 0xffff }, { 8155, 0xffff }, { 8171, 0xffff },
- { 8187, 0xffff }, { 8203, 0x7fff }, { 8218, 0x0000 }, { 8218, 0x0000 },
- { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 },
- { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x006f },
-};
-
-static int
-ksc5601_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc < 0x0460)
- summary = &ksc5601_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x2000 && wc < 0x2670) /* General Punctuation (2000, 206F) */
- summary = &ksc5601_uni2indx_page20[(wc>>4)-0x200];
- else if (wc >= 0x3000 && wc < 0x33e0) /* CJK Symbols and Punctuation (3000, 303F) */
- summary = &ksc5601_uni2indx_page30[(wc>>4)-0x300];
- else if (wc >= 0x4e00 && wc < 0x9fa0) /* CJK Unified Ideographs (4E00, 9FFF) */
- summary = &ksc5601_uni2indx_page4e[(wc>>4)-0x4e0];
- else if (wc >= 0xac00 && wc < 0xd7a0) /* Hangul Syllables (AC00, D7AF) 11183 */
- summary = &ksc5601_uni2indx_pageac[(wc>>4)-0xac0];
- else if (wc >= 0xf900 && wc < 0xfa10) /* CJK Compatibility Ideographs (F900, FAFF) */
- summary = &ksc5601_uni2indx_pagef9[(wc>>4)-0xf90];
- else if (wc >= 0xff00 && wc < 0xfff0) /* Halfwidth and Fullwidth Forms (FF00, FFEF) */
- summary = &ksc5601_uni2indx_pageff[(wc>>4)-0xff0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = ksc5601_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * KSC5601.1987-0
+ */
+
+static const unsigned short ksc5601_2uni_page21[1115] = {
+ /* 0x21 */
+ 0x3000, 0x3001, 0x3002, 0x00b7, 0x2025, 0x2026, 0x00a8, 0x3003,
+ 0x00ad, 0x2015, 0x2225, 0xff3c, 0x223c, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7,
+ 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032, 0x2033,
+ 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640, 0x2220,
+ 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7, 0x203b,
+ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1,
+ 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190, 0x2191,
+ 0x2193, 0x2194, 0x3013, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d,
+ 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282,
+ 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, 0xffe2,
+ /* 0x22 */
+ 0x21d2, 0x21d4, 0x2200, 0x2203, 0x00b4, 0xff5e, 0x02c7, 0x02d8,
+ 0x02dd, 0x02da, 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf, 0x02d0,
+ 0x222e, 0x2211, 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1, 0x25c0,
+ 0x25b7, 0x25b6, 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663,
+ 0x2299, 0x25c8, 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4, 0x25a5,
+ 0x25a8, 0x25a7, 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, 0x261c,
+ 0x261e, 0x00b6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196,
+ 0x2198, 0x266d, 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, 0x2116,
+ 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x23 */
+ 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, 0xff08,
+ 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
+ 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
+ 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
+ 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
+ 0xff39, 0xff3a, 0xff3b, 0xffe6, 0xff3d, 0xff3e, 0xff3f, 0xff40,
+ 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
+ 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
+ 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
+ 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
+ /* 0x24 */
+ 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
+ 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
+ 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
+ 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
+ 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
+ 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160,
+ 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168,
+ 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, 0x3170,
+ 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178,
+ 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f, 0x3180,
+ 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187, 0x3188,
+ 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e,
+ /* 0x25 */
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x26 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c,
+ 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b,
+ 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f,
+ 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542,
+ 0x2512, 0x2511, 0x251a, 0x2519, 0x2516, 0x2515, 0x250e, 0x250d,
+ 0x251e, 0x251f, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252a,
+ 0x252d, 0x252e, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253a,
+ 0x253d, 0x253e, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546,
+ 0x2547, 0x2548, 0x2549, 0x254a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33c4, 0x33a3, 0x33a4,
+ 0x33a5, 0x33a6, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d, 0x339e,
+ 0x339f, 0x33a0, 0x33a1, 0x33a2, 0x33ca, 0x338d, 0x338e, 0x338f,
+ 0x33cf, 0x3388, 0x3389, 0x33c8, 0x33a7, 0x33a8, 0x33b0, 0x33b1,
+ 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, 0x33b8, 0x33b9,
+ 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x33ba, 0x33bb, 0x33bc,
+ 0x33bd, 0x33be, 0x33bf, 0x3390, 0x3391, 0x3392, 0x3393, 0x3394,
+ 0x2126, 0x33c0, 0x33c1, 0x338a, 0x338b, 0x338c, 0x33d6, 0x33c5,
+ 0x33ad, 0x33ae, 0x33af, 0x33db, 0x33a9, 0x33aa, 0x33ab, 0x33ac,
+ 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x33c6, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x28 */
+ 0x00c6, 0x00d0, 0x00aa, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x013f,
+ 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, 0xfffd,
+ 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, 0x3267,
+ 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, 0x326f,
+ 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, 0x3277,
+ 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1, 0x24d2, 0x24d3,
+ 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da, 0x24db,
+ 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2, 0x24e3,
+ 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2460, 0x2461,
+ 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+ 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd, 0x2153, 0x2154,
+ 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e,
+ /* 0x29 */
+ 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140,
+ 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0149,
+ 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207,
+ 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f,
+ 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217,
+ 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e, 0x249f,
+ 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7,
+ 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af,
+ 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474, 0x2475,
+ 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d,
+ 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x00b9, 0x00b2, 0x00b3,
+ 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, 0x2084,
+ /* 0x2a */
+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
+ 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
+ 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2b */
+ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
+ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
+ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
+ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
+ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
+ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
+ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
+ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
+ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
+ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
+ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2c */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+ 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
+ 0x044f,
+};
+static const unsigned short ksc5601_2uni_page30[2350] = {
+ /* 0x30 */
+ 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a, 0xac10,
+ 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, 0xac19,
+ 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, 0xac2c, 0xac2d,
+ 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, 0xac40, 0xac4b,
+ 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, 0xac74, 0xac77,
+ 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, 0xac85, 0xac86,
+ 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, 0xac9c, 0xac9d,
+ 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, 0xacac, 0xacaf,
+ 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, 0xacc1, 0xacc4,
+ 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, 0xace4, 0xace7,
+ 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf5,
+ 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06,
+ /* 0x31 */
+ 0xad0c, 0xad0d, 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad29,
+ 0xad2c, 0xad2d, 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45,
+ 0xad47, 0xad49, 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c,
+ 0xad6d, 0xad70, 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c,
+ 0xad7d, 0xad7f, 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90,
+ 0xad9c, 0xad9d, 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8,
+ 0xadd0, 0xadd1, 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9,
+ 0xadfc, 0xadff, 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d,
+ 0xae14, 0xae30, 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40,
+ 0xae41, 0xae43, 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e,
+ 0xae50, 0xae54, 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61,
+ 0xae65, 0xae68, 0xae69, 0xae6c, 0xae70, 0xae78,
+ /* 0x32 */
+ 0xae79, 0xae7b, 0xae7c, 0xae7d, 0xae84, 0xae85, 0xae8c, 0xaebc,
+ 0xaebd, 0xaebe, 0xaec0, 0xaec4, 0xaecc, 0xaecd, 0xaecf, 0xaed0,
+ 0xaed1, 0xaed8, 0xaed9, 0xaedc, 0xaee8, 0xaeeb, 0xaeed, 0xaef4,
+ 0xaef8, 0xaefc, 0xaf07, 0xaf08, 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d,
+ 0xaf30, 0xaf32, 0xaf34, 0xaf3c, 0xaf3d, 0xaf3f, 0xaf41, 0xaf42,
+ 0xaf43, 0xaf48, 0xaf49, 0xaf50, 0xaf5c, 0xaf5d, 0xaf64, 0xaf65,
+ 0xaf79, 0xaf80, 0xaf84, 0xaf88, 0xaf90, 0xaf91, 0xaf95, 0xaf9c,
+ 0xafb8, 0xafb9, 0xafbc, 0xafc0, 0xafc7, 0xafc8, 0xafc9, 0xafcb,
+ 0xafcd, 0xafce, 0xafd4, 0xafdc, 0xafe8, 0xafe9, 0xaff0, 0xaff1,
+ 0xaff4, 0xaff8, 0xb000, 0xb001, 0xb004, 0xb00c, 0xb010, 0xb014,
+ 0xb01c, 0xb01d, 0xb028, 0xb044, 0xb045, 0xb048, 0xb04a, 0xb04c,
+ 0xb04e, 0xb053, 0xb054, 0xb055, 0xb057, 0xb059,
+ /* 0x33 */
+ 0xb05d, 0xb07c, 0xb07d, 0xb080, 0xb084, 0xb08c, 0xb08d, 0xb08f,
+ 0xb091, 0xb098, 0xb099, 0xb09a, 0xb09c, 0xb09f, 0xb0a0, 0xb0a1,
+ 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af,
+ 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b8, 0xb0bc, 0xb0c4, 0xb0c5,
+ 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, 0xb0d1, 0xb0d4, 0xb0d8, 0xb0e0,
+ 0xb0e5, 0xb108, 0xb109, 0xb10b, 0xb10c, 0xb110, 0xb112, 0xb113,
+ 0xb118, 0xb119, 0xb11b, 0xb11c, 0xb11d, 0xb123, 0xb124, 0xb125,
+ 0xb128, 0xb12c, 0xb134, 0xb135, 0xb137, 0xb138, 0xb139, 0xb140,
+ 0xb141, 0xb144, 0xb148, 0xb150, 0xb151, 0xb154, 0xb155, 0xb158,
+ 0xb15c, 0xb160, 0xb178, 0xb179, 0xb17c, 0xb180, 0xb182, 0xb188,
+ 0xb189, 0xb18b, 0xb18d, 0xb192, 0xb193, 0xb194, 0xb198, 0xb19c,
+ 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, 0xb1dc, 0xb1dd,
+ /* 0x34 */
+ 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, 0xb1fb, 0xb1fd,
+ 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, 0xb215, 0xb217,
+ 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, 0xb260, 0xb268,
+ 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, 0xb289, 0xb290,
+ 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, 0xb2a1, 0xb2a3,
+ 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, 0xb2c8, 0xb2c9,
+ 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db, 0xb2dd, 0xb2e2,
+ 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee,
+ 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa,
+ 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, 0xb310, 0xb311,
+ 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, 0xb356, 0xb358,
+ 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365,
+ /* 0x35 */
+ 0xb367, 0xb369, 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378,
+ 0xb380, 0xb381, 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394,
+ 0xb3a0, 0xb3a1, 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb,
+ 0xb3cc, 0xb3ce, 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db,
+ 0xb3dd, 0xb3e0, 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c,
+ 0xb420, 0xb428, 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454,
+ 0xb458, 0xb460, 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488,
+ 0xb49d, 0xb4a4, 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0,
+ 0xb4c4, 0xb4c8, 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3,
+ 0xb4e4, 0xb4e6, 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514,
+ 0xb515, 0xb518, 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528,
+ 0xb529, 0xb52a, 0xb530, 0xb531, 0xb534, 0xb538,
+ /* 0x36 */
+ 0xb540, 0xb541, 0xb543, 0xb544, 0xb545, 0xb54b, 0xb54c, 0xb54d,
+ 0xb550, 0xb554, 0xb55c, 0xb55d, 0xb55f, 0xb560, 0xb561, 0xb5a0,
+ 0xb5a1, 0xb5a4, 0xb5a8, 0xb5aa, 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3,
+ 0xb5b4, 0xb5b5, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc,
+ 0xb5cd, 0xb5cf, 0xb5d0, 0xb5d1, 0xb5d8, 0xb5ec, 0xb610, 0xb611,
+ 0xb614, 0xb618, 0xb625, 0xb62c, 0xb634, 0xb648, 0xb664, 0xb668,
+ 0xb69c, 0xb69d, 0xb6a0, 0xb6a4, 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4,
+ 0xb6f0, 0xb6f4, 0xb6f8, 0xb700, 0xb701, 0xb705, 0xb728, 0xb729,
+ 0xb72c, 0xb72f, 0xb730, 0xb738, 0xb739, 0xb73b, 0xb744, 0xb748,
+ 0xb74c, 0xb754, 0xb755, 0xb760, 0xb764, 0xb768, 0xb770, 0xb771,
+ 0xb773, 0xb775, 0xb77c, 0xb77d, 0xb780, 0xb784, 0xb78c, 0xb78d,
+ 0xb78f, 0xb790, 0xb791, 0xb792, 0xb796, 0xb797,
+ /* 0x37 */
+ 0xb798, 0xb799, 0xb79c, 0xb7a0, 0xb7a8, 0xb7a9, 0xb7ab, 0xb7ac,
+ 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, 0xb7c7, 0xb7c9, 0xb7ec, 0xb7ed,
+ 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, 0xb7ff, 0xb800, 0xb801, 0xb807,
+ 0xb808, 0xb809, 0xb80c, 0xb810, 0xb818, 0xb819, 0xb81b, 0xb81d,
+ 0xb824, 0xb825, 0xb828, 0xb82c, 0xb834, 0xb835, 0xb837, 0xb838,
+ 0xb839, 0xb840, 0xb844, 0xb851, 0xb853, 0xb85c, 0xb85d, 0xb860,
+ 0xb864, 0xb86c, 0xb86d, 0xb86f, 0xb871, 0xb878, 0xb87c, 0xb88d,
+ 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, 0xb8c0, 0xb8c1, 0xb8c3, 0xb8c5,
+ 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, 0xb8df, 0xb8e1, 0xb8e8, 0xb8e9,
+ 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, 0xb8fb, 0xb8fd, 0xb904, 0xb918,
+ 0xb920, 0xb93c, 0xb93d, 0xb940, 0xb944, 0xb94c, 0xb94f, 0xb951,
+ 0xb958, 0xb959, 0xb95c, 0xb960, 0xb968, 0xb969,
+ /* 0x38 */
+ 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, 0xb984, 0xb985,
+ 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, 0xb9ad, 0xb9b0,
+ 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, 0xb9c9, 0xb9cc,
+ 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, 0xb9d9, 0xb9db,
+ 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e8, 0xb9ec,
+ 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xba00, 0xba01,
+ 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, 0xba42, 0xba48,
+ 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, 0xba55, 0xba58,
+ 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, 0xba70, 0xba71,
+ 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, 0xba8c, 0xbaa8,
+ 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, 0xbab9, 0xbabb,
+ 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc,
+ /* 0x39 */
+ 0xbb00, 0xbb04, 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20,
+ 0xbb29, 0xbb2b, 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c,
+ 0xbb3d, 0xbb3e, 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f,
+ 0xbb50, 0xbb54, 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c,
+ 0xbb90, 0xbba4, 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4,
+ 0xbbc8, 0xbbd0, 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00,
+ 0xbc02, 0xbc08, 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11,
+ 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d,
+ 0xbc1e, 0xbc1f, 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30,
+ 0xbc31, 0xbc34, 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45,
+ 0xbc49, 0xbc4c, 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88,
+ 0xbc8b, 0xbc8c, 0xbc8e, 0xbc94, 0xbc95, 0xbc97,
+ /* 0x3a */
+ 0xbc99, 0xbc9a, 0xbca0, 0xbca1, 0xbca4, 0xbca7, 0xbca8, 0xbcb0,
+ 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4,
+ 0xbccd, 0xbccf, 0xbcd0, 0xbcd1, 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4,
+ 0xbcf5, 0xbcf6, 0xbcf8, 0xbcfc, 0xbd04, 0xbd05, 0xbd07, 0xbd09,
+ 0xbd10, 0xbd14, 0xbd24, 0xbd2c, 0xbd40, 0xbd48, 0xbd49, 0xbd4c,
+ 0xbd50, 0xbd58, 0xbd59, 0xbd64, 0xbd68, 0xbd80, 0xbd81, 0xbd84,
+ 0xbd87, 0xbd88, 0xbd89, 0xbd8a, 0xbd90, 0xbd91, 0xbd93, 0xbd95,
+ 0xbd99, 0xbd9a, 0xbd9c, 0xbda4, 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5,
+ 0xbdd8, 0xbddc, 0xbde9, 0xbdf0, 0xbdf4, 0xbdf8, 0xbe00, 0xbe03,
+ 0xbe05, 0xbe0c, 0xbe0d, 0xbe10, 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f,
+ 0xbe44, 0xbe45, 0xbe48, 0xbe4c, 0xbe4e, 0xbe54, 0xbe55, 0xbe57,
+ 0xbe59, 0xbe5a, 0xbe5b, 0xbe60, 0xbe61, 0xbe64,
+ /* 0x3b */
+ 0xbe68, 0xbe6a, 0xbe70, 0xbe71, 0xbe73, 0xbe74, 0xbe75, 0xbe7b,
+ 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, 0xbe8c, 0xbe8d, 0xbe8f, 0xbe90,
+ 0xbe91, 0xbe98, 0xbe99, 0xbea8, 0xbed0, 0xbed1, 0xbed4, 0xbed7,
+ 0xbed8, 0xbee0, 0xbee3, 0xbee4, 0xbee5, 0xbeec, 0xbf01, 0xbf08,
+ 0xbf09, 0xbf18, 0xbf19, 0xbf1b, 0xbf1c, 0xbf1d, 0xbf40, 0xbf41,
+ 0xbf44, 0xbf48, 0xbf50, 0xbf51, 0xbf55, 0xbf94, 0xbfb0, 0xbfc5,
+ 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, 0xbfdc, 0xbfdf, 0xbfe1, 0xc03c,
+ 0xc051, 0xc058, 0xc05c, 0xc060, 0xc068, 0xc069, 0xc090, 0xc091,
+ 0xc094, 0xc098, 0xc0a0, 0xc0a1, 0xc0a3, 0xc0a5, 0xc0ac, 0xc0ad,
+ 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0bc, 0xc0bd,
+ 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, 0xc0c8, 0xc0c9, 0xc0cc, 0xc0d0,
+ 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, 0xc0dd, 0xc0e4,
+ /* 0x3c */
+ 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f9, 0xc100,
+ 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, 0xc11e, 0xc11f,
+ 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, 0xc12d, 0xc12f,
+ 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, 0xc140, 0xc148,
+ 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, 0xc158, 0xc15c,
+ 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, 0xc174, 0xc178,
+ 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, 0xc196, 0xc19c,
+ 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, 0xc1ac, 0xc1b0,
+ 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, 0xc1d8, 0xc1e0,
+ 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, 0xc1fd, 0xc200,
+ 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, 0xc219, 0xc21c,
+ 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d,
+ /* 0x3d */
+ 0xc22f, 0xc231, 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254,
+ 0xc258, 0xc260, 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c,
+ 0xc27d, 0xc27f, 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b,
+ 0xc29d, 0xc2a4, 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5,
+ 0xc2b7, 0xc2b9, 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb,
+ 0xc2ec, 0xc2ed, 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb,
+ 0xc2fc, 0xc300, 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314,
+ 0xc315, 0xc318, 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345,
+ 0xc368, 0xc369, 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c,
+ 0xc37d, 0xc384, 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9, 0xc3dc,
+ 0xc3df, 0xc3e0, 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5,
+ 0xc3f8, 0xc408, 0xc410, 0xc424, 0xc42c, 0xc430,
+ /* 0x3e */
+ 0xc434, 0xc43c, 0xc43d, 0xc448, 0xc464, 0xc465, 0xc468, 0xc46c,
+ 0xc474, 0xc475, 0xc479, 0xc480, 0xc494, 0xc49c, 0xc4b8, 0xc4bc,
+ 0xc4e9, 0xc4f0, 0xc4f1, 0xc4f4, 0xc4f8, 0xc4fa, 0xc4ff, 0xc500,
+ 0xc501, 0xc50c, 0xc510, 0xc514, 0xc51c, 0xc528, 0xc529, 0xc52c,
+ 0xc530, 0xc538, 0xc539, 0xc53b, 0xc53d, 0xc544, 0xc545, 0xc548,
+ 0xc549, 0xc54a, 0xc54c, 0xc54d, 0xc54e, 0xc553, 0xc554, 0xc555,
+ 0xc557, 0xc558, 0xc559, 0xc55d, 0xc55e, 0xc560, 0xc561, 0xc564,
+ 0xc568, 0xc570, 0xc571, 0xc573, 0xc574, 0xc575, 0xc57c, 0xc57d,
+ 0xc580, 0xc584, 0xc587, 0xc58c, 0xc58d, 0xc58f, 0xc591, 0xc595,
+ 0xc597, 0xc598, 0xc59c, 0xc5a0, 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8,
+ 0xc5b9, 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6,
+ 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cc, 0xc5ce,
+ /* 0x3f */
+ 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, 0xc5e0, 0xc5e1, 0xc5e3, 0xc5e5,
+ 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, 0xc5f4, 0xc5f6, 0xc5f7, 0xc5fc,
+ 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc605, 0xc606, 0xc607,
+ 0xc608, 0xc60c, 0xc610, 0xc618, 0xc619, 0xc61b, 0xc61c, 0xc624,
+ 0xc625, 0xc628, 0xc62c, 0xc62d, 0xc62e, 0xc630, 0xc633, 0xc634,
+ 0xc635, 0xc637, 0xc639, 0xc63b, 0xc640, 0xc641, 0xc644, 0xc648,
+ 0xc650, 0xc651, 0xc653, 0xc654, 0xc655, 0xc65c, 0xc65d, 0xc660,
+ 0xc66c, 0xc66f, 0xc671, 0xc678, 0xc679, 0xc67c, 0xc680, 0xc688,
+ 0xc689, 0xc68b, 0xc68d, 0xc694, 0xc695, 0xc698, 0xc69c, 0xc6a4,
+ 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, 0xc6b1, 0xc6b4, 0xc6b8, 0xc6b9,
+ 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, 0xc6c5, 0xc6cc, 0xc6cd, 0xc6d0,
+ 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, 0xc6e1, 0xc6e8,
+ /* 0x40 */
+ 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, 0xc704, 0xc705,
+ 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, 0xc720, 0xc721,
+ 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, 0xc737, 0xc73c,
+ 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, 0xc74f, 0xc751,
+ 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc75c,
+ 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, 0xc77c, 0xc77d,
+ 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, 0xc789, 0xc78a,
+ 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, 0xc798, 0xc79a,
+ 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7ac, 0xc7ad,
+ 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c8,
+ 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, 0xc7e4, 0xc7e8,
+ 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a,
+ /* 0x41 */
+ 0xc810, 0xc811, 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820,
+ 0xc824, 0xc82c, 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840,
+ 0xc848, 0xc849, 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874,
+ 0xc878, 0xc87a, 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887,
+ 0xc88b, 0xc88c, 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8,
+ 0xc8bc, 0xc8bd, 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7,
+ 0xc8d9, 0xc8e0, 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900,
+ 0xc904, 0xc905, 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918,
+ 0xc92c, 0xc934, 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961,
+ 0xc963, 0xc96c, 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c,
+ 0xc990, 0xc998, 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4,
+ 0xc9c7, 0xc9c8, 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3,
+ /* 0x42 */
+ 0xc9d5, 0xc9d6, 0xc9d9, 0xc9da, 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2,
+ 0xc9e4, 0xc9e7, 0xc9ec, 0xc9ed, 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8,
+ 0xc9f9, 0xc9fc, 0xca00, 0xca08, 0xca09, 0xca0b, 0xca0c, 0xca0d,
+ 0xca14, 0xca18, 0xca29, 0xca4c, 0xca4d, 0xca50, 0xca54, 0xca5c,
+ 0xca5d, 0xca5f, 0xca60, 0xca61, 0xca68, 0xca7d, 0xca84, 0xca98,
+ 0xcabc, 0xcabd, 0xcac0, 0xcac4, 0xcacc, 0xcacd, 0xcacf, 0xcad1,
+ 0xcad3, 0xcad8, 0xcad9, 0xcae0, 0xcaec, 0xcaf4, 0xcb08, 0xcb10,
+ 0xcb14, 0xcb18, 0xcb20, 0xcb21, 0xcb41, 0xcb48, 0xcb49, 0xcb4c,
+ 0xcb50, 0xcb58, 0xcb59, 0xcb5d, 0xcb64, 0xcb78, 0xcb79, 0xcb9c,
+ 0xcbb8, 0xcbd4, 0xcbe4, 0xcbe7, 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10,
+ 0xcc14, 0xcc1c, 0xcc1d, 0xcc21, 0xcc22, 0xcc27, 0xcc28, 0xcc29,
+ 0xcc2c, 0xcc2e, 0xcc30, 0xcc38, 0xcc39, 0xcc3b,
+ /* 0x43 */
+ 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, 0xcc45, 0xcc48, 0xcc4c, 0xcc54,
+ 0xcc55, 0xcc57, 0xcc58, 0xcc59, 0xcc60, 0xcc64, 0xcc66, 0xcc68,
+ 0xcc70, 0xcc75, 0xcc98, 0xcc99, 0xcc9c, 0xcca0, 0xcca8, 0xcca9,
+ 0xccab, 0xccac, 0xccad, 0xccb4, 0xccb5, 0xccb8, 0xccbc, 0xccc4,
+ 0xccc5, 0xccc7, 0xccc9, 0xccd0, 0xccd4, 0xcce4, 0xccec, 0xccf0,
+ 0xcd01, 0xcd08, 0xcd09, 0xcd0c, 0xcd10, 0xcd18, 0xcd19, 0xcd1b,
+ 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, 0xcd39, 0xcd5c, 0xcd60, 0xcd64,
+ 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, 0xcd78, 0xcd88, 0xcd94, 0xcd95,
+ 0xcd98, 0xcd9c, 0xcda4, 0xcda5, 0xcda7, 0xcda9, 0xcdb0, 0xcdc4,
+ 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, 0xcdf0, 0xcdf8, 0xcdf9, 0xcdfb,
+ 0xcdfd, 0xce04, 0xce08, 0xce0c, 0xce14, 0xce19, 0xce20, 0xce21,
+ 0xce24, 0xce28, 0xce30, 0xce31, 0xce33, 0xce35,
+ /* 0x44 */
+ 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, 0xce68, 0xce69,
+ 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, 0xce84, 0xce85,
+ 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, 0xcea0, 0xcea1,
+ 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, 0xcee4, 0xcee5,
+ 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, 0xcef8, 0xcef9,
+ 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, 0xcf13, 0xcf15,
+ 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, 0xcf30, 0xcf31,
+ 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, 0xcf65, 0xcf67,
+ 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, 0xcf85, 0xcf8c,
+ 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, 0xcfe4, 0xcfe8,
+ 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, 0xd004, 0xd011,
+ 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c,
+ /* 0x45 */
+ 0xd044, 0xd045, 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060,
+ 0xd06c, 0xd06d, 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4,
+ 0xd0a5, 0xd0a8, 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0,
+ 0xd0c1, 0xd0c4, 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4,
+ 0xd0d5, 0xd0dc, 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef,
+ 0xd0f0, 0xd0f1, 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138,
+ 0xd13a, 0xd140, 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d,
+ 0xd150, 0xd154, 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c,
+ 0xd17c, 0xd184, 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0,
+ 0xd1b1, 0xd1b3, 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4,
+ 0xd1f8, 0xd207, 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234,
+ 0xd23c, 0xd23d, 0xd23f, 0xd241, 0xd248, 0xd25c,
+ /* 0x46 */
+ 0xd264, 0xd280, 0xd281, 0xd284, 0xd288, 0xd290, 0xd291, 0xd295,
+ 0xd29c, 0xd2a0, 0xd2a4, 0xd2ac, 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc,
+ 0xd2bf, 0xd2c0, 0xd2c2, 0xd2c8, 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8,
+ 0xd2dc, 0xd2e4, 0xd2e5, 0xd2f0, 0xd2f1, 0xd2f4, 0xd2f8, 0xd300,
+ 0xd301, 0xd303, 0xd305, 0xd30c, 0xd30d, 0xd30e, 0xd310, 0xd314,
+ 0xd316, 0xd31c, 0xd31d, 0xd31f, 0xd320, 0xd321, 0xd325, 0xd328,
+ 0xd329, 0xd32c, 0xd330, 0xd338, 0xd339, 0xd33b, 0xd33c, 0xd33d,
+ 0xd344, 0xd345, 0xd37c, 0xd37d, 0xd380, 0xd384, 0xd38c, 0xd38d,
+ 0xd38f, 0xd390, 0xd391, 0xd398, 0xd399, 0xd39c, 0xd3a0, 0xd3a8,
+ 0xd3a9, 0xd3ab, 0xd3ad, 0xd3b4, 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5,
+ 0xd3c8, 0xd3c9, 0xd3d0, 0xd3d8, 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed,
+ 0xd3f0, 0xd3f4, 0xd3fc, 0xd3fd, 0xd3ff, 0xd401,
+ /* 0x47 */
+ 0xd408, 0xd41d, 0xd440, 0xd444, 0xd45c, 0xd460, 0xd464, 0xd46d,
+ 0xd46f, 0xd478, 0xd479, 0xd47c, 0xd47f, 0xd480, 0xd482, 0xd488,
+ 0xd489, 0xd48b, 0xd48d, 0xd494, 0xd4a9, 0xd4cc, 0xd4d0, 0xd4d4,
+ 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, 0xd4f0, 0xd4f8, 0xd4fb, 0xd4fd,
+ 0xd504, 0xd508, 0xd50c, 0xd514, 0xd515, 0xd517, 0xd53c, 0xd53d,
+ 0xd540, 0xd544, 0xd54c, 0xd54d, 0xd54f, 0xd551, 0xd558, 0xd559,
+ 0xd55c, 0xd560, 0xd565, 0xd568, 0xd569, 0xd56b, 0xd56d, 0xd574,
+ 0xd575, 0xd578, 0xd57c, 0xd584, 0xd585, 0xd587, 0xd588, 0xd589,
+ 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, 0xd5cc, 0xd5d0, 0xd5d2, 0xd5d8,
+ 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, 0xd5e5, 0xd5e8, 0xd5ec, 0xd5f4,
+ 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, 0xd601, 0xd604, 0xd608, 0xd610,
+ 0xd611, 0xd613, 0xd614, 0xd615, 0xd61c, 0xd620,
+ /* 0x48 */
+ 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, 0xd645, 0xd648,
+ 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, 0xd658, 0xd65c,
+ 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, 0xd685, 0xd68c,
+ 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, 0xd6a8, 0xd6ac,
+ 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, 0xd6cc, 0xd6d1,
+ 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, 0xd6f0, 0xd6f5,
+ 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, 0xd719, 0xd71c,
+ 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, 0xd735, 0xd738,
+ 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, 0xd754, 0xd756,
+ 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, 0xd765, 0xd769,
+ 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, 0xd788, 0xd789,
+ 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d,
+};
+static const unsigned short ksc5601_2uni_page4a[4888] = {
+ /* 0x4a */
+ 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475, 0x54e5,
+ 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef, 0x6b4c,
+ 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888, 0x8a36,
+ 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374, 0x5404,
+ 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2, 0x95a3,
+ 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79, 0x61c7,
+ 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b, 0x78f5,
+ 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb, 0x9593,
+ 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b, 0x8910,
+ 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x611f, 0x61be,
+ 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b, 0x7518, 0x75b3, 0x76e3,
+ 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452, 0x9f95,
+ /* 0x4b */
+ 0x5323, 0x5cac, 0x7532, 0x80db, 0x9240, 0x9598, 0x525b, 0x5808,
+ 0x59dc, 0x5ca1, 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177, 0x6c5f,
+ 0x757a, 0x7586, 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154, 0x8221,
+ 0x8591, 0x8941, 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb, 0x4ef7,
+ 0x500b, 0x51f1, 0x584f, 0x6137, 0x613e, 0x6168, 0x6539, 0x69ea,
+ 0x6f11, 0x75a5, 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb, 0xf900,
+ 0x93a7, 0x958b, 0x5580, 0x5ba2, 0x5751, 0xf901, 0x7cb3, 0x7fb9,
+ 0x91b5, 0x5028, 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e, 0x64da,
+ 0x64e7, 0x6e20, 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0xf902, 0x907d,
+ 0x9245, 0x92f8, 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa, 0x6106,
+ 0x6957, 0x8171, 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e, 0x5091,
+ 0x6770, 0x6840, 0x5109, 0x528d, 0x5292, 0x6aa2,
+ /* 0x4c */
+ 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2, 0x5048, 0x61a9,
+ 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188, 0x89a1, 0x9694,
+ 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d, 0x80a9, 0x898b,
+ 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54, 0x7d50, 0x7f3a,
+ 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257, 0x938c, 0x4eac,
+ 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd, 0x537f, 0x5770,
+ 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce, 0x656c, 0x666f,
+ 0x66bb, 0x66f4, 0x6897, 0x6d87, 0x7085, 0x70f1, 0x749f, 0x74a5,
+ 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6, 0x7d45, 0x7d93,
+ 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15, 0x9015, 0x93e1,
+ 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2, 0x5553, 0x583a, 0x5951,
+ 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842, 0x68b0,
+ /* 0x4d */
+ 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb, 0x7e6b,
+ 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4, 0x53e9,
+ 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab, 0x62f7,
+ 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd, 0x75fc,
+ 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f, 0x82e6,
+ 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0xf903, 0x8f9c,
+ 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b, 0x66f2,
+ 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11, 0x6606,
+ 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68, 0xf904,
+ 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5, 0x6050,
+ 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3, 0x8ca2,
+ 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc,
+ /* 0x4e */
+ 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b, 0x9846,
+ 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0xf905, 0x51a0, 0x5b98, 0x5bec,
+ 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1, 0x7f50,
+ 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d, 0x62ec,
+ 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0, 0x6d38,
+ 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366, 0x639b,
+ 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127, 0x62d0,
+ 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4, 0x50d1,
+ 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e, 0x6821,
+ 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x81a0, 0x854e,
+ 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903, 0x9a55, 0x9bab, 0x4e18,
+ 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177, 0x52fe,
+ /* 0x4f */
+ 0x5340, 0x53e3, 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2, 0x5bc7,
+ 0x5d87, 0x5ed0, 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9, 0x69cb,
+ 0x6b50, 0x6bc6, 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7, 0x7396,
+ 0x7403, 0x77bf, 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc, 0x8205,
+ 0x820a, 0x82df, 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011, 0x90b1,
+ 0x9264, 0x92b6, 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c, 0x570b,
+ 0x5c40, 0x83ca, 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98, 0x7fa4,
+ 0x88d9, 0x8ecd, 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f, 0x5bae,
+ 0x5f13, 0x7a79, 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238, 0x52f8,
+ 0x5377, 0x5708, 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737, 0x53a5,
+ 0x7357, 0x8568, 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70, 0x8a6d,
+ 0x8ecc, 0x994b, 0xf906, 0x6677, 0x6b78, 0x8cb4,
+ /* 0x50 */
+ 0x9b3c, 0xf907, 0x53eb, 0x572d, 0x594e, 0x63c6, 0x69fb, 0x73ea,
+ 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f, 0x8d73, 0x9035,
+ 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc, 0x921e, 0xf908,
+ 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8, 0x6975, 0x9699,
+ 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839, 0x69ff, 0x747e,
+ 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1, 0x9949, 0xf909,
+ 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434, 0x7981, 0x79bd,
+ 0x82a9, 0x887e, 0x887f, 0x895f, 0xf90a, 0x9326, 0x4f0b, 0x53ca,
+ 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98, 0x5162, 0x77dc,
+ 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc, 0x5668, 0x573b,
+ 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993, 0x5bc4, 0x5c90, 0x5d0e,
+ 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7, 0x65e3,
+ /* 0x51 */
+ 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a, 0x6c23,
+ 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482, 0x74a3,
+ 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948, 0x797a,
+ 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c, 0x8a18,
+ 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951, 0x9a0e,
+ 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee, 0x6854,
+ 0x91d1, 0x55ab, 0x513a, 0xf90b, 0xf90c, 0x5a1c, 0x61e6, 0xf90d,
+ 0x62cf, 0x62ff, 0xf90e, 0xf90f, 0xf910, 0xf911, 0xf912, 0xf913,
+ 0x90a3, 0xf914, 0xf915, 0xf916, 0xf917, 0xf918, 0x8afe, 0xf919,
+ 0xf91a, 0xf91b, 0xf91c, 0x6696, 0xf91d, 0x7156, 0xf91e, 0xf91f,
+ 0x96e3, 0xf920, 0x634f, 0x637a, 0x5357, 0xf921, 0x678f, 0x6960,
+ 0x6e73, 0xf922, 0x7537, 0xf923, 0xf924, 0xf925,
+ /* 0x52 */
+ 0x7d0d, 0xf926, 0xf927, 0x8872, 0x56ca, 0x5a18, 0xf928, 0xf929,
+ 0xf92a, 0xf92b, 0xf92c, 0x4e43, 0xf92d, 0x5167, 0x5948, 0x67f0,
+ 0x8010, 0xf92e, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5, 0x606c,
+ 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0xf92f, 0x5974, 0x5f29,
+ 0x6012, 0xf930, 0xf931, 0xf932, 0x7459, 0xf933, 0xf934, 0xf935,
+ 0xf936, 0xf937, 0xf938, 0x99d1, 0xf939, 0xf93a, 0xf93b, 0xf93c,
+ 0xf93d, 0xf93e, 0xf93f, 0xf940, 0xf941, 0xf942, 0xf943, 0x6fc3,
+ 0xf944, 0xf945, 0x81bf, 0x8fb2, 0x60f1, 0xf946, 0xf947, 0x8166,
+ 0xf948, 0xf949, 0x5c3f, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e,
+ 0xf94f, 0xf950, 0xf951, 0x5ae9, 0x8a25, 0x677b, 0x7d10, 0xf952,
+ 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, 0x80fd, 0xf958, 0xf959,
+ 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a, 0x8336,
+ /* 0x53 */
+ 0x4e39, 0x4eb6, 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56, 0x65b7,
+ 0x65e6, 0x6a80, 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e, 0x7dde,
+ 0x86cb, 0x8892, 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a, 0x75b8,
+ 0x9054, 0x5556, 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1, 0x6e5b,
+ 0x6f6d, 0x6fb9, 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983, 0x8ac7,
+ 0x8b5a, 0x931f, 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d, 0x5510,
+ 0x5802, 0x5858, 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576, 0x7cd6,
+ 0x87b3, 0x9ee8, 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d, 0x5cb1,
+ 0x5e36, 0x5f85, 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b, 0x8cb8,
+ 0x968a, 0x9edb, 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200, 0x5230,
+ 0x5716, 0x5835, 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b, 0x5ea6,
+ 0x5f92, 0x60bc, 0x6311, 0x6389, 0x6417, 0x6843,
+ /* 0x54 */
+ 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4, 0x71fe, 0x76dc,
+ 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced, 0x8df3, 0x8e48,
+ 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676, 0x97dc, 0x6bd2,
+ 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf, 0x7be4, 0x7e9b,
+ 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be, 0x6c8c, 0x711e,
+ 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd, 0x51ac, 0x51cd,
+ 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df, 0x6d1e, 0x6f7c,
+ 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285, 0x515c, 0x6597,
+ 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0xf95a, 0x8c46, 0x9017,
+ 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f, 0x920d, 0x5f97,
+ 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49, 0x85e4, 0x8b04, 0x9127,
+ 0x9a30, 0x5587, 0x61f6, 0xf95b, 0x7669, 0x7f85,
+ /* 0x55 */
+ 0x863f, 0x87ba, 0x88f8, 0x908f, 0xf95c, 0x6d1b, 0x70d9, 0x73de,
+ 0x7d61, 0x843d, 0xf95d, 0x916a, 0x99f1, 0xf95e, 0x4e82, 0x5375,
+ 0x6b04, 0x6b12, 0x703e, 0x721b, 0x862d, 0x9e1e, 0x524c, 0x8fa3,
+ 0x5d50, 0x64e5, 0x652c, 0x6b16, 0x6feb, 0x7c43, 0x7e9c, 0x85cd,
+ 0x8964, 0x89bd, 0x62c9, 0x81d8, 0x881f, 0x5eca, 0x6717, 0x6d6a,
+ 0x72fc, 0x7405, 0x746f, 0x8782, 0x90de, 0x4f86, 0x5d0d, 0x5fa0,
+ 0x840a, 0x51b7, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169, 0x51c9,
+ 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2, 0x8f1b,
+ 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e, 0x623e,
+ 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad, 0x9a62,
+ 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d, 0x792b,
+ 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23,
+ /* 0x56 */
+ 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023, 0x934a,
+ 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9, 0x6582,
+ 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9, 0xf95f,
+ 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce, 0x8046,
+ 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b, 0x6fa7,
+ 0x79ae, 0x91b4, 0x96b7, 0x52de, 0xf960, 0x6488, 0x64c4, 0x6ad3,
+ 0x6f5e, 0x7018, 0x7210, 0x76e7, 0x8001, 0x8606, 0x865c, 0x8def,
+ 0x8f05, 0x9732, 0x9b6f, 0x9dfa, 0x9e75, 0x788c, 0x797f, 0x7da0,
+ 0x83c9, 0x9304, 0x9e7f, 0x9e93, 0x8ad6, 0x58df, 0x5f04, 0x6727,
+ 0x7027, 0x74cf, 0x7c60, 0x807e, 0x5121, 0x7028, 0x7262, 0x78ca,
+ 0x8cc2, 0x8cda, 0x8cf4, 0x96f7, 0x4e86, 0x50da, 0x5bee, 0x5ed6,
+ 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a, 0x84fc,
+ /* 0x57 */
+ 0x907c, 0x9b27, 0x9f8d, 0x58d8, 0x5a41, 0x5c62, 0x6a13, 0x6dda,
+ 0x6f0f, 0x763b, 0x7d2f, 0x7e37, 0x851e, 0x8938, 0x93e4, 0x964b,
+ 0x5289, 0x65d2, 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f, 0x7409,
+ 0x7460, 0x7559, 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d, 0x622e,
+ 0x9678, 0x4f96, 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a, 0x5f8b,
+ 0x6144, 0x6817, 0xf961, 0x9686, 0x52d2, 0x808b, 0x51dc, 0x51cc,
+ 0x695e, 0x7a1c, 0x7dbe, 0x83f1, 0x9675, 0x4fda, 0x5229, 0x5398,
+ 0x540f, 0x550e, 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c, 0x7281,
+ 0x72f8, 0x7406, 0x7483, 0xf962, 0x75e2, 0x7c6c, 0x7f79, 0x7fb8,
+ 0x8389, 0x88cf, 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9, 0x541d,
+ 0x6f7e, 0x71d0, 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57, 0x9e9f,
+ 0x6797, 0x6dcb, 0x7433, 0x81e8, 0x9716, 0x782c,
+ /* 0x58 */
+ 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2, 0x78bc, 0x78e8,
+ 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20, 0x819c, 0x83ab,
+ 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e, 0x6162, 0x633d,
+ 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e, 0x842c, 0x8513,
+ 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9, 0x672b, 0x6cab,
+ 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8, 0x5fd9, 0x671b,
+ 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e, 0x9099, 0x57cb,
+ 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885, 0x6bcf, 0x7164,
+ 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108, 0x8c8a, 0x964c,
+ 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2, 0x76df, 0x840c,
+ 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9, 0x68c9, 0x6c94, 0x7704,
+ 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5, 0x6ec5,
+ /* 0x59 */
+ 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927, 0x6e9f,
+ 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298, 0x9cf4,
+ 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155, 0x6478,
+ 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f, 0x7261,
+ 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00, 0x8b28,
+ 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46, 0x9da9,
+ 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893, 0x5999,
+ 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7, 0x82d7,
+ 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7, 0x64ab,
+ 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d, 0x7e46,
+ 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61, 0x58a8,
+ 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587,
+ /* 0x5a */
+ 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef, 0x52ff,
+ 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c, 0x5fae,
+ 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73, 0x7f8e,
+ 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6, 0x610d,
+ 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f, 0x73c9,
+ 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a, 0x62cd,
+ 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e, 0x7b94,
+ 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9, 0x99c1,
+ 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500, 0x6591,
+ 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x76e4, 0x76fc,
+ 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c, 0x87e0, 0x8fd4, 0x9812,
+ 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24, 0x6f51,
+ /* 0x5b */
+ 0x767c, 0x8dcb, 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023, 0x508d,
+ 0x574a, 0x59a8, 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e, 0x65b9,
+ 0x65c1, 0x6609, 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21, 0x80aa,
+ 0x8180, 0x822b, 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17, 0x90a6,
+ 0x9632, 0x9f90, 0x500d, 0x4ff3, 0xf963, 0x57f9, 0x5f98, 0x62dc,
+ 0x6392, 0x676f, 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da, 0x88f4,
+ 0x88f5, 0x8919, 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f, 0x4f70,
+ 0x5e1b, 0x67cf, 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61, 0x6a0a,
+ 0x7169, 0x71d4, 0x756a, 0xf964, 0x7e41, 0x8543, 0x85e9, 0x98dc,
+ 0x4f10, 0x7b4f, 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5, 0x6c3e,
+ 0x6c4e, 0x6cdb, 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a, 0x50fb,
+ 0x5288, 0x58c1, 0x64d8, 0x6a97, 0x74a7, 0x7656,
+ /* 0x5c */
+ 0x78a7, 0x8617, 0x95e2, 0x9739, 0xf965, 0x535e, 0x5f01, 0x8b8a,
+ 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49, 0x9f08, 0x4e19,
+ 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a, 0x67c4, 0x68c5,
+ 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27, 0x9920, 0x9a08,
+ 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65, 0x6d11, 0x6e7a,
+ 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913, 0x8b5c, 0x8f14,
+ 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9, 0x670d, 0x798f,
+ 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39, 0x8f3b, 0x99a5,
+ 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01, 0x5cef, 0x5cf0,
+ 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b, 0x84ec, 0x8702,
+ 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8, 0x4fef, 0x5085, 0x5256,
+ 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b, 0x5a66,
+ /* 0x5d */
+ 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0xf966, 0x6276, 0x6577, 0x65a7,
+ 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150, 0x8151,
+ 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6, 0x8cfb,
+ 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9, 0x9ce7,
+ 0x5317, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e, 0x5fff,
+ 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89, 0x7cde,
+ 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0xf967, 0x4f5b, 0x5f17, 0x5f7f,
+ 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c, 0x4e15,
+ 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87, 0x60b2,
+ 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4, 0x6bd6,
+ 0x6bd7, 0x6bd8, 0x6cb8, 0xf968, 0x7435, 0x75fa, 0x7812, 0x7891,
+ 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5,
+ /* 0x5e */
+ 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c, 0x8cbb,
+ 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c, 0x658c,
+ 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad, 0x8ca7,
+ 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d, 0x4e8b,
+ 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff, 0x53f2,
+ 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11, 0x5beb,
+ 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368, 0x659c,
+ 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7, 0x6e23,
+ 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1, 0x7be9,
+ 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x86c7, 0x88df,
+ 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66, 0x8fad, 0x90aa, 0x98fc,
+ 0x99df, 0x9e9d, 0x524a, 0xf969, 0x6714, 0xf96a,
+ /* 0x5f */
+ 0x5098, 0x522a, 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523, 0x759d,
+ 0x7b97, 0x849c, 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba, 0x715e,
+ 0x85a9, 0x4e09, 0xf96b, 0x6749, 0x68ee, 0x6e17, 0x829f, 0x8518,
+ 0x886b, 0x63f7, 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7, 0x50cf,
+ 0x511f, 0x5546, 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0, 0x5e38,
+ 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58, 0x723d,
+ 0x7240, 0x72c0, 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3, 0x89f4,
+ 0x8a73, 0x8c61, 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd, 0x55c7,
+ 0xf96c, 0x7a61, 0x7d22, 0x8272, 0x7272, 0x751f, 0x7525, 0xf96d,
+ 0x7b19, 0x5885, 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90, 0x6055,
+ 0x6292, 0x637f, 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816, 0x68f2,
+ 0x7280, 0x745e, 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72,
+ /* 0x60 */
+ 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d, 0x92e4, 0x9ecd,
+ 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614, 0x6673, 0x6790,
+ 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6, 0x91cb, 0x932b,
+ 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3, 0x6247, 0x657e,
+ 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487, 0x74bf, 0x766c,
+ 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3, 0x8239, 0x861a,
+ 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425, 0x994d, 0x9bae,
+ 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b, 0x820c, 0x859b,
+ 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261, 0x66b9, 0x6bb2,
+ 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d, 0x6d89, 0x71ee,
+ 0xf96e, 0x57ce, 0x59d3, 0x5bac, 0x6027, 0x60fa, 0x6210, 0x661f,
+ 0x665f, 0x7329, 0x73f9, 0x76db, 0x7701, 0x7b6c,
+ /* 0x61 */
+ 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2, 0x6b72,
+ 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0xf96f, 0x8cb0, 0x53ec, 0x562f,
+ 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383, 0x6414,
+ 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4, 0x71d2,
+ 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b, 0x7d20,
+ 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061, 0x90b5,
+ 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91, 0x7c9f,
+ 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d, 0x84c0,
+ 0x905c, 0x98e1, 0x7387, 0x5b8b, 0x609a, 0x677e, 0x6dde, 0x8a1f,
+ 0x8aa6, 0x9001, 0x980c, 0x5237, 0xf970, 0x7051, 0x788e, 0x9396,
+ 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782, 0x58fd,
+ 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101,
+ /* 0x62 */
+ 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x6578, 0x6a39, 0x6b8a,
+ 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407, 0x74b2,
+ 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f, 0x7dac,
+ 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea, 0x8896,
+ 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296, 0x92b9,
+ 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996, 0x9ad3,
+ 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1, 0x6f5a,
+ 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87, 0x5faa,
+ 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35, 0x6df3,
+ 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x821c, 0x8340,
+ 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187, 0x931e, 0x9806, 0x99b4,
+ 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07, 0x5d27,
+ /* 0x63 */
+ 0x5d69, 0x745f, 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2, 0x8936,
+ 0x8972, 0x4e1e, 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f, 0x6607,
+ 0x7e69, 0x8805, 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb, 0x5aa4,
+ 0x5c38, 0x5c4e, 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd, 0x662f,
+ 0x6642, 0x67be, 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5, 0x8494,
+ 0x84cd, 0x8996, 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a, 0x57f4,
+ 0x5bd4, 0x5f0f, 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c, 0x7184,
+ 0x7bd2, 0x8755, 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38, 0x4f81,
+ 0x4fe1, 0x547b, 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668, 0x71fc,
+ 0x7533, 0x795e, 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa, 0x85ce,
+ 0x8703, 0x8a0a, 0x8eab, 0x8f9b, 0xf971, 0x8fc5, 0x5931, 0x5ba4,
+ 0x5be6, 0x6089, 0x5be9, 0x5c0b, 0x5fc3, 0x6c81,
+ /* 0x64 */
+ 0xf972, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6, 0x4ec0, 0x5341,
+ 0xf973, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152, 0x555e, 0x5a25,
+ 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe, 0x8859, 0x8a1d,
+ 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a, 0x5cb3, 0x5dbd,
+ 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x6a02, 0x6e25, 0x9102, 0x9354,
+ 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309, 0x664f, 0x6848,
+ 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1, 0x8b01, 0x8ecb,
+ 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697, 0x764c, 0x83f4,
+ 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0, 0x592e, 0x600f,
+ 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0, 0x57c3, 0x5d16,
+ 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e, 0x9698, 0x9744, 0x5384,
+ 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b, 0x984d,
+ /* 0x65 */
+ 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6, 0x591c,
+ 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0xf974, 0x91ce, 0x5f31,
+ 0xf975, 0xf976, 0x7d04, 0x82e5, 0x846f, 0x84bb, 0x85e5, 0x8e8d,
+ 0xf977, 0x4f6f, 0xf978, 0xf979, 0x58e4, 0x5b43, 0x6059, 0x63da,
+ 0x6518, 0x656d, 0x6698, 0xf97a, 0x694a, 0x6a23, 0x6d0b, 0x7001,
+ 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0xf97b, 0x7f8a, 0xf97c,
+ 0x8944, 0xf97d, 0x8b93, 0x91c0, 0x967d, 0xf97e, 0x990a, 0x5704,
+ 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad, 0x9b5a,
+ 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043, 0x5830,
+ 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa, 0x513c,
+ 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186, 0x4e88,
+ 0x4f59, 0xf97f, 0xf980, 0xf981, 0x5982, 0xf982,
+ /* 0x66 */
+ 0xf983, 0x6b5f, 0x6c5d, 0xf984, 0x74b5, 0x7916, 0xf985, 0x8207,
+ 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0xf986, 0x9918, 0xf987, 0xf988,
+ 0xf989, 0x4ea6, 0xf98a, 0x57df, 0x5f79, 0x6613, 0xf98b, 0xf98c,
+ 0x75ab, 0x7e79, 0x8b6f, 0xf98d, 0x9006, 0x9a5b, 0x56a5, 0x5827,
+ 0x59f8, 0x5a1f, 0x5bb4, 0xf98e, 0x5ef6, 0xf98f, 0xf990, 0x6350,
+ 0x633b, 0xf991, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93, 0x6df5,
+ 0x6f14, 0xf992, 0x70df, 0x7136, 0x7159, 0xf993, 0x71c3, 0x71d5,
+ 0xf994, 0x784f, 0x786f, 0xf995, 0x7b75, 0x7de3, 0xf996, 0x7e2f,
+ 0xf997, 0x884d, 0x8edf, 0xf998, 0xf999, 0xf99a, 0x925b, 0xf99b,
+ 0x9cf6, 0xf99c, 0xf99d, 0xf99e, 0x6085, 0x6d85, 0xf99f, 0x71b1,
+ 0xf9a0, 0xf9a1, 0x95b1, 0x53ad, 0xf9a2, 0xf9a3, 0xf9a4, 0x67d3,
+ 0xf9a5, 0x708e, 0x7130, 0x7430, 0x8276, 0x82d2,
+ /* 0x67 */
+ 0xf9a6, 0x95bb, 0x9ae5, 0x9e7d, 0x66c4, 0xf9a7, 0x71c1, 0x8449,
+ 0xf9a8, 0xf9a9, 0x584b, 0xf9aa, 0xf9ab, 0x5db8, 0x5f71, 0xf9ac,
+ 0x6620, 0x668e, 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36, 0x6f41,
+ 0x6fda, 0x701b, 0x702f, 0x7150, 0x71df, 0x7370, 0xf9ad, 0x745b,
+ 0xf9ae, 0x74d4, 0x76c8, 0x7a4e, 0x7e93, 0xf9af, 0xf9b0, 0x82f1,
+ 0x8a60, 0x8fce, 0xf9b1, 0x9348, 0xf9b2, 0x9719, 0xf9b3, 0xf9b4,
+ 0x4e42, 0x502a, 0xf9b5, 0x5208, 0x53e1, 0x66f3, 0x6c6d, 0x6fca,
+ 0x730a, 0x777f, 0x7a62, 0x82ae, 0x85dd, 0x8602, 0xf9b6, 0x88d4,
+ 0x8a63, 0x8b7d, 0x8c6b, 0xf9b7, 0x92b3, 0xf9b8, 0x9713, 0x9810,
+ 0x4e94, 0x4f0d, 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433, 0x55da,
+ 0x5862, 0x58ba, 0x5967, 0x5a1b, 0x5be4, 0x609f, 0xf9b9, 0x61ca,
+ 0x6556, 0x65ff, 0x6664, 0x68a7, 0x6c5a, 0x6fb3,
+ /* 0x68 */
+ 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4, 0x9c32, 0x9f07,
+ 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab, 0x7465, 0x761f,
+ 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1, 0x74ee, 0x7515,
+ 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26, 0x74e6, 0x7aa9,
+ 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49, 0x5b8c, 0x5b9b,
+ 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c, 0x7897, 0x7de9,
+ 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e, 0x9811, 0x66f0,
+ 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d, 0x5a03, 0x6b6a,
+ 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f, 0xf9ba, 0xf9bb,
+ 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da, 0x5be5, 0xf9bc,
+ 0xf9bd, 0x5da2, 0x62d7, 0x6416, 0x6493, 0x64fe, 0xf9be, 0x66dc,
+ 0xf9bf, 0x6a48, 0xf9c0, 0x71ff, 0x7464, 0xf9c1,
+ /* 0x69 */
+ 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0xf9c2, 0x87ef,
+ 0x8981, 0x8b20, 0x9059, 0xf9c3, 0x9080, 0x9952, 0x617e, 0x6b32,
+ 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197, 0x52c7,
+ 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c, 0x6e67,
+ 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338, 0x84c9,
+ 0x8e0a, 0x9394, 0x93de, 0xf9c4, 0x4e8e, 0x4f51, 0x5076, 0x512a,
+ 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a, 0x6182,
+ 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991, 0x79b9,
+ 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047, 0x90f5,
+ 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed, 0x6631,
+ 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0xf9c5, 0x6a52,
+ 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553,
+ /* 0x6a */
+ 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90, 0x718a,
+ 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3, 0x5a9b,
+ 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39, 0x6e72,
+ 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45, 0x9060,
+ 0xf9c6, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e, 0x4f4d,
+ 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09, 0x6170,
+ 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e, 0x8466,
+ 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb, 0x9b4f,
+ 0x4e73, 0x4f91, 0x5112, 0x516a, 0xf9c7, 0x552f, 0x55a9, 0x5b7a,
+ 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x6108, 0x6109,
+ 0x63c4, 0x6538, 0x6709, 0xf9c8, 0x67d4, 0x67da, 0xf9c9, 0x6961,
+ 0x6962, 0x6cb9, 0x6d27, 0xf9ca, 0x6e38, 0xf9cb,
+ /* 0x6b */
+ 0x6fe1, 0x7336, 0x7337, 0xf9cc, 0x745c, 0x7531, 0xf9cd, 0x7652,
+ 0xf9ce, 0xf9cf, 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98, 0x8adb,
+ 0x8aed, 0x8e30, 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149, 0x91c9,
+ 0x936e, 0xf9d0, 0xf9d1, 0x5809, 0xf9d2, 0x6bd3, 0x8089, 0x80b2,
+ 0xf9d3, 0xf9d4, 0x5141, 0x596b, 0x5c39, 0xf9d5, 0xf9d6, 0x6f64,
+ 0x73a7, 0x80e4, 0x8d07, 0xf9d7, 0x9217, 0x958f, 0xf9d8, 0xf9d9,
+ 0xf9da, 0xf9db, 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d, 0xf9dc,
+ 0x57a0, 0x6069, 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1, 0x4e59,
+ 0x541f, 0x6deb, 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6, 0x6ce3,
+ 0x9091, 0x51dd, 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a, 0x5100,
+ 0x5b9c, 0x610f, 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591, 0x77e3,
+ 0x7fa9, 0x8264, 0x858f, 0x87fb, 0x8863, 0x8abc,
+ /* 0x6c */
+ 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0xf9dd, 0xf9de, 0x5937,
+ 0x59e8, 0xf9df, 0x5df2, 0x5f1b, 0x5f5b, 0x6021, 0xf9e0, 0xf9e1,
+ 0xf9e2, 0xf9e3, 0x723e, 0x73e5, 0xf9e4, 0x7570, 0x75cd, 0xf9e5,
+ 0x79fb, 0xf9e6, 0x800c, 0x8033, 0x8084, 0x82e1, 0x8351, 0xf9e7,
+ 0xf9e8, 0x8cbd, 0x8cb3, 0x9087, 0xf9e9, 0xf9ea, 0x98f4, 0x990c,
+ 0xf9eb, 0xf9ec, 0x7037, 0x76ca, 0x7fca, 0x7fcc, 0x7ffc, 0x8b1a,
+ 0x4eba, 0x4ec1, 0x5203, 0x5370, 0xf9ed, 0x54bd, 0x56e0, 0x59fb,
+ 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0xf9ee, 0xf9ef, 0x7d6a, 0x8335,
+ 0xf9f0, 0x8693, 0x8a8d, 0xf9f1, 0x976d, 0x9777, 0xf9f2, 0xf9f3,
+ 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2, 0x9038, 0x93b0,
+ 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9, 0x6041, 0xf9f4, 0xf9f5,
+ 0x7a14, 0xf9f6, 0x834f, 0x8cc3, 0x5165, 0x5344,
+ /* 0x6d */
+ 0xf9f7, 0xf9f8, 0xf9f9, 0x4ecd, 0x5269, 0x5b55, 0x82bf, 0x4ed4,
+ 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c, 0x6063,
+ 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5, 0x78c1,
+ 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee, 0x8cc7,
+ 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c, 0x70b8,
+ 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71, 0x68e7,
+ 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4, 0x7c2a,
+ 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb, 0x58ef,
+ 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2, 0x6756,
+ 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0xf9fa, 0x7350, 0x748b,
+ 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c, 0x8523,
+ 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577,
+ /* 0x6e */
+ 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750, 0x683d,
+ 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1, 0x8f09,
+ 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47, 0x4f4e,
+ 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e, 0x6a17,
+ 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35, 0x82e7,
+ 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019, 0x90b8,
+ 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458, 0x6575,
+ 0x6ef4, 0x72c4, 0xf9fb, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d, 0x7e3e,
+ 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f, 0x8fea,
+ 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x5168, 0x5178,
+ 0x524d, 0x526a, 0x5861, 0x587c, 0x5960, 0x5c08, 0x5c55, 0x5edb,
+ 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08, 0x6fb1,
+ /* 0x6f */
+ 0x714e, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c, 0x7b8b,
+ 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f, 0x9293,
+ 0x9322, 0x942b, 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207, 0x622a,
+ 0x6298, 0x6d59, 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360, 0x5cbe,
+ 0x5e97, 0x6f38, 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede, 0x63a5,
+ 0x647a, 0x8776, 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075, 0x5448,
+ 0x59c3, 0x5b9a, 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5, 0x633a,
+ 0x653f, 0x6574, 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968, 0x6a89,
+ 0x6b63, 0x6c40, 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e, 0x70a1,
+ 0x738e, 0x73fd, 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b, 0x7a7d,
+ 0x7cbe, 0x7d8e, 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d, 0x914a,
+ 0x91d8, 0x9266, 0x92cc, 0x9320, 0x9706, 0x9756,
+ /* 0x70 */
+ 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c, 0x5824, 0x5e1d,
+ 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d, 0x7b2c, 0x81cd,
+ 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664, 0x969b, 0x973d,
+ 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9, 0x5632, 0x5f14,
+ 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa, 0x66f9, 0x671d,
+ 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167, 0x71e5, 0x722a,
+ 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20, 0x7a95, 0x7c97,
+ 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4, 0x8a54, 0x8abf,
+ 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b, 0x96d5, 0x9ce5,
+ 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a, 0x5352, 0x62d9,
+ 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0, 0x616b, 0x68d5, 0x6dd9,
+ 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31, 0x816b,
+ /* 0x71 */
+ 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6, 0x5ea7,
+ 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd, 0x80c4,
+ 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda, 0x665d,
+ 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d, 0x70b7,
+ 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f, 0x86db,
+ 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e, 0x9152,
+ 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6, 0x57c8,
+ 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec, 0x710c,
+ 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff, 0x8301,
+ 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b, 0x6c41,
+ 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511, 0x75c7,
+ 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea,
+ /* 0x72 */
+ 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f, 0x652f,
+ 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a, 0x6f2c,
+ 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102, 0x81f3,
+ 0x829d, 0x82b7, 0x8718, 0x8a8c, 0xf9fc, 0x8d04, 0x8dbe, 0x9072,
+ 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4, 0x5875,
+ 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84, 0x6d25,
+ 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1, 0x771e,
+ 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897, 0x8a3a,
+ 0x8cd1, 0x8eeb, 0x8fb0, 0x9032, 0x93ad, 0x9663, 0x9673, 0x9707,
+ 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x74c6, 0x75be,
+ 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea, 0x8dcc, 0x8fed, 0x659f,
+ 0x6715, 0xf9fd, 0x57f7, 0x6f57, 0x7ddd, 0x8f2f,
+ /* 0x73 */
+ 0x93f6, 0x96c6, 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98, 0x501f,
+ 0x53c9, 0x55df, 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb, 0x7b9a,
+ 0xf9fe, 0x8e49, 0x8eca, 0x906e, 0x6349, 0x643e, 0x7740, 0x7a84,
+ 0x932f, 0x947f, 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8, 0x74da,
+ 0x7ac4, 0x7c12, 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a, 0x947d,
+ 0x9910, 0x994c, 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e, 0x50ed,
+ 0x53c3, 0x5879, 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9, 0x8b92,
+ 0x8b96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0, 0x5f70,
+ 0x6134, 0x655e, 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4, 0x6f32,
+ 0x7316, 0x7621, 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc, 0x50b5,
+ 0x57f0, 0x5bc0, 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5, 0x83dc,
+ 0x8521, 0x91c7, 0x91f5, 0x518a, 0x67f5, 0x7b56,
+ /* 0x74 */
+ 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c, 0xf9ff, 0x5254,
+ 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5, 0x6ecc, 0x7620,
+ 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343, 0x5598, 0x5929,
+ 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f, 0x821b, 0x85a6,
+ 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621, 0x97c6, 0x51f8,
+ 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4, 0x8f1f, 0x8f4d,
+ 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b, 0x77bb, 0x7c3d,
+ 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16, 0x6377, 0x7252,
+ 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3, 0x6674, 0x6df8,
+ 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0xfa00, 0x5243, 0x66ff,
+ 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e, 0x905e, 0x9ad4, 0x521d,
+ 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db, 0x68a2,
+ /* 0x75 */
+ 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901, 0x790e,
+ 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549, 0x8c82,
+ 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed, 0x77d7,
+ 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2, 0x585a,
+ 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525, 0x9283,
+ 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8, 0x690e,
+ 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429, 0x8acf,
+ 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318, 0x939a,
+ 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa, 0x7b51,
+ 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010, 0x6625,
+ 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0, 0x6c96,
+ 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403,
+ /* 0x76 */
+ 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a, 0x7fe0,
+ 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2, 0x5074,
+ 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024, 0x55e4,
+ 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be, 0x75d4,
+ 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e, 0x81f4,
+ 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5, 0x98ed,
+ 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795, 0x6c88,
+ 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4, 0x7a31,
+ 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0, 0x6253,
+ 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x99dd, 0x502c,
+ 0x5353, 0x5544, 0x577c, 0xfa01, 0x6258, 0xfa02, 0x64e2, 0x666b,
+ 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438, 0x8a17,
+ /* 0x77 */
+ 0x9438, 0x5451, 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e, 0x7058,
+ 0x70ad, 0x7dbb, 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708, 0x803d,
+ 0x8caa, 0x5854, 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f, 0xfa03,
+ 0x8569, 0x514c, 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86, 0x6c70,
+ 0x6cf0, 0x7b1e, 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1, 0xfa04,
+ 0x64c7, 0x6fa4, 0x6491, 0x6504, 0x514e, 0x5410, 0x571f, 0x8a0e,
+ 0x615f, 0x6876, 0xfa05, 0x75db, 0x7b52, 0x7d71, 0x901a, 0x5806,
+ 0x69cc, 0x817f, 0x892a, 0x9000, 0x9839, 0x5078, 0x5957, 0x59ac,
+ 0x6295, 0x900f, 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761, 0x5a46,
+ 0x5df4, 0x628a, 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e, 0x722c,
+ 0x7436, 0x7834, 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224, 0x5742,
+ 0x677f, 0x7248, 0x74e3, 0x8ca9, 0x8fa6, 0x9211,
+ /* 0x78 */
+ 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504, 0x6096, 0x6557,
+ 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987, 0x8c9d, 0x5f6d,
+ 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x4fbf, 0x504f, 0x6241, 0x7247,
+ 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19, 0x8cb6, 0x576a,
+ 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16, 0x5e63, 0x5ee2,
+ 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b, 0x4f48, 0x5305,
+ 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03, 0x6016, 0x629b,
+ 0x62b1, 0x6355, 0xfa06, 0x6ce1, 0x6d66, 0x75b1, 0x7832, 0x80de,
+ 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912, 0x900b, 0x92ea,
+ 0x98fd, 0x9b91, 0x5e45, 0x66b4, 0x66dd, 0x7011, 0x7206, 0xfa07,
+ 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753, 0x6a19, 0x6f02, 0x74e2,
+ 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4, 0x9a43,
+ /* 0x79 */
+ 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae, 0x5f7c,
+ 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339, 0x5f3c,
+ 0x5fc5, 0x6ccc, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe, 0x999d,
+ 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8, 0x6630,
+ 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e, 0x9c15,
+ 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068, 0x608d,
+ 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0, 0x9591,
+ 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b, 0x54b8,
+ 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c, 0x9677,
+ 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4, 0x965c,
+ 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297, 0x676d,
+ 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a,
+ /* 0x7a */
+ 0xfa08, 0xfa09, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793, 0x595a,
+ 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9, 0x89e3,
+ 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838, 0x5016,
+ 0x5e78, 0x674f, 0x8347, 0x884c, 0x4eab, 0x5411, 0x56ae, 0x73e6,
+ 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f, 0x865b,
+ 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa, 0x9a57,
+ 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26, 0x61f8,
+ 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729, 0x774d,
+ 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0xfa0a, 0x8ce2, 0x9249,
+ 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x4fe0, 0x5354,
+ 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9, 0x8105, 0x8107, 0x83a2,
+ 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211, 0x578b,
+ /* 0x7b */
+ 0x5f62, 0x6cc2, 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192, 0x73e9,
+ 0x7469, 0x834a, 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3, 0x99a8,
+ 0x516e, 0x5f57, 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a, 0x91af,
+ 0x978b, 0x4e4e, 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d, 0x5cb5,
+ 0x5f27, 0x6236, 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69, 0x6dcf,
+ 0x6e56, 0x6ef8, 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0, 0x7425,
+ 0x745a, 0x74e0, 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1, 0x82a6,
+ 0x846b, 0x84bf, 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a, 0x93ac,
+ 0x9800, 0x9865, 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f, 0x6df7,
+ 0x6e3e, 0x743f, 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4, 0x5f18,
+ 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c, 0x9d3b,
+ 0x5316, 0x548c, 0x5b05, 0x6a3a, 0x706b, 0x7575,
+ /* 0x7c */
+ 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41, 0x8ca8, 0x9774,
+ 0xfa0b, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b, 0x4e38, 0x559a,
+ 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61, 0x6665, 0x6853,
+ 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69, 0x9c25, 0x6d3b,
+ 0x6ed1, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c, 0x5fa8, 0x604d,
+ 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5, 0x6cc1, 0x6e5f,
+ 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1, 0x7c27, 0x8352,
+ 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de, 0x5efb, 0x5f8a,
+ 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c, 0x6dee, 0x6fae,
+ 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4, 0x8aa8, 0x8cc4,
+ 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404, 0x54ee, 0x5686, 0x5b5d,
+ 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d, 0x6dc6,
+ /* 0x7d */
+ 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a, 0x540e,
+ 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166, 0x73dd,
+ 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f, 0x71fb,
+ 0x85b0, 0x8a13, 0x6688, 0x85a8, 0x55a7, 0x6684, 0x714a, 0x8431,
+ 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689, 0x7147,
+ 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566, 0x8667,
+ 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36, 0x80f8,
+ 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79, 0x7d07,
+ 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d, 0x7fd5,
+ 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec, 0x5b09,
+ 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199, 0x71b9,
+ 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70,
+};
+
+static int
+ksc5601_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x30 && c1 <= 0x48) || (c1 >= 0x4a && c1 <= 0x7d)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 1410) {
+ if (i < 1115)
+ wc = ksc5601_2uni_page21[i];
+ } else if (i < 3854) {
+ if (i < 3760)
+ wc = ksc5601_2uni_page30[i-1410];
+ } else {
+ if (i < 8742)
+ wc = ksc5601_2uni_page4a[i-3854];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short ksc5601_2charset[8224] = {
+ 0x222e, 0x2234, 0x2157, 0x2127, 0x2823, 0x2129, 0x2146, 0x213e,
+ 0x2977, 0x2978, 0x2225, 0x2252, 0x2124, 0x222c, 0x2976, 0x282c,
+ 0x2879, 0x2876, 0x287a, 0x222f, 0x2821, 0x2822, 0x213f, 0x282a,
+ 0x282d, 0x292c, 0x2921, 0x2923, 0x2140, 0x292a, 0x292d, 0x2922,
+ 0x2824, 0x2924, 0x2925, 0x2826, 0x2926, 0x2927, 0x2828, 0x2928,
+ 0x2829, 0x2929, 0x2930, 0x282f, 0x292f, 0x282b, 0x292b, 0x282e,
+ 0x292e, 0x2227, 0x2230, 0x2228, 0x222b, 0x222a, 0x222d, 0x2229,
+ 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548,
+ 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550,
+ 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558,
+ 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568,
+ 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570,
+ 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2577, 0x2578,
+ 0x2c27, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c28,
+ 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c30,
+ 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38,
+ 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40,
+ 0x2c41, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c58,
+ 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x2c5f, 0x2c60,
+ 0x2c61, 0x2c62, 0x2c63, 0x2c64, 0x2c65, 0x2c66, 0x2c67, 0x2c68,
+ 0x2c69, 0x2c6a, 0x2c6b, 0x2c6c, 0x2c6d, 0x2c6e, 0x2c6f, 0x2c70,
+ 0x2c71, 0x2c57, 0x212a, 0x212e, 0x212f, 0x2130, 0x2131, 0x2253,
+ 0x2254, 0x2125, 0x2126, 0x2236, 0x2147, 0x2148, 0x2158, 0x2979,
+ 0x297a, 0x297b, 0x297c, 0x297d, 0x297e, 0x2149, 0x2235, 0x2724,
+ 0x2260, 0x2265, 0x2262, 0x2759, 0x214a, 0x2877, 0x2878, 0x287b,
+ 0x287c, 0x287d, 0x287e, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
+ 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x2521, 0x2522, 0x2523,
+ 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x2167,
+ 0x2168, 0x2166, 0x2169, 0x216a, 0x2255, 0x2258, 0x2256, 0x2259,
+ 0x2257, 0x2221, 0x2222, 0x2223, 0x2153, 0x2224, 0x2154, 0x2174,
+ 0x2175, 0x2233, 0x2232, 0x216e, 0x2170, 0x2144, 0x2150, 0x212b,
+ 0x217c, 0x217d, 0x217b, 0x217a, 0x2172, 0x2173, 0x2231, 0x2145,
+ 0x2171, 0x212d, 0x216f, 0x2156, 0x2141, 0x2155, 0x2142, 0x2143,
+ 0x216c, 0x216d, 0x2178, 0x2179, 0x2176, 0x2177, 0x2241, 0x2151,
+ 0x2152, 0x2867, 0x2868, 0x2869, 0x286a, 0x286b, 0x286c, 0x286d,
+ 0x286e, 0x286f, 0x2870, 0x2871, 0x2872, 0x2873, 0x2874, 0x2875,
+ 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x296c, 0x296d, 0x296e,
+ 0x296f, 0x2970, 0x2971, 0x2972, 0x2973, 0x2974, 0x2975, 0x294d,
+ 0x294e, 0x294f, 0x2950, 0x2951, 0x2952, 0x2953, 0x2954, 0x2955,
+ 0x2956, 0x2957, 0x2958, 0x2959, 0x295a, 0x295b, 0x295c, 0x295d,
+ 0x295e, 0x295f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 0x2965,
+ 0x2966, 0x284d, 0x284e, 0x284f, 0x2850, 0x2851, 0x2852, 0x2853,
+ 0x2854, 0x2855, 0x2856, 0x2857, 0x2858, 0x2859, 0x285a, 0x285b,
+ 0x285c, 0x285d, 0x285e, 0x285f, 0x2860, 0x2861, 0x2862, 0x2863,
+ 0x2864, 0x2865, 0x2866, 0x2621, 0x262c, 0x2622, 0x262d, 0x2623,
+ 0x2648, 0x2647, 0x262e, 0x2624, 0x2642, 0x2641, 0x262f, 0x2626,
+ 0x2646, 0x2645, 0x2631, 0x2625, 0x2644, 0x2643, 0x2630, 0x2627,
+ 0x263c, 0x2649, 0x264a, 0x2637, 0x264b, 0x264c, 0x2632, 0x2629,
+ 0x263e, 0x264d, 0x264e, 0x2639, 0x264f, 0x2650, 0x2634, 0x2628,
+ 0x2651, 0x2652, 0x2638, 0x263d, 0x2653, 0x2654, 0x2633, 0x262a,
+ 0x2655, 0x2656, 0x263a, 0x263f, 0x2657, 0x2658, 0x2635, 0x262b,
+ 0x2659, 0x265a, 0x263b, 0x265b, 0x265c, 0x2640, 0x265d, 0x265e,
+ 0x265f, 0x2660, 0x2661, 0x2662, 0x2663, 0x2664, 0x2636, 0x2246,
+ 0x2161, 0x2160, 0x2243, 0x2247, 0x2248, 0x224b, 0x224a, 0x2249,
+ 0x224c, 0x2163, 0x2162, 0x223a, 0x2239, 0x2165, 0x2164, 0x2238,
+ 0x2237, 0x215f, 0x215e, 0x2242, 0x215b, 0x215d, 0x215c, 0x2244,
+ 0x2245, 0x215a, 0x2159, 0x224f, 0x224e, 0x2250, 0x2251, 0x214f,
+ 0x214e, 0x223c, 0x223d, 0x2240, 0x223b, 0x223e, 0x223f, 0x224d,
+ 0x225b, 0x225c, 0x225d, 0x225a, 0x2121, 0x2122, 0x2123, 0x2128,
+ 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b,
+ 0x213c, 0x213d, 0x216b, 0x2132, 0x2133, 0x2a21, 0x2a22, 0x2a23,
+ 0x2a24, 0x2a25, 0x2a26, 0x2a27, 0x2a28, 0x2a29, 0x2a2a, 0x2a2b,
+ 0x2a2c, 0x2a2d, 0x2a2e, 0x2a2f, 0x2a30, 0x2a31, 0x2a32, 0x2a33,
+ 0x2a34, 0x2a35, 0x2a36, 0x2a37, 0x2a38, 0x2a39, 0x2a3a, 0x2a3b,
+ 0x2a3c, 0x2a3d, 0x2a3e, 0x2a3f, 0x2a40, 0x2a41, 0x2a42, 0x2a43,
+ 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48, 0x2a49, 0x2a4a, 0x2a4b,
+ 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50, 0x2a51, 0x2a52, 0x2a53,
+ 0x2a54, 0x2a55, 0x2a56, 0x2a57, 0x2a58, 0x2a59, 0x2a5a, 0x2a5b,
+ 0x2a5c, 0x2a5d, 0x2a5e, 0x2a5f, 0x2a60, 0x2a61, 0x2a62, 0x2a63,
+ 0x2a64, 0x2a65, 0x2a66, 0x2a67, 0x2a68, 0x2a69, 0x2a6a, 0x2a6b,
+ 0x2a6c, 0x2a6d, 0x2a6e, 0x2a6f, 0x2a70, 0x2a71, 0x2a72, 0x2a73,
+ 0x2b21, 0x2b22, 0x2b23, 0x2b24, 0x2b25, 0x2b26, 0x2b27, 0x2b28,
+ 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e, 0x2b2f, 0x2b30,
+ 0x2b31, 0x2b32, 0x2b33, 0x2b34, 0x2b35, 0x2b36, 0x2b37, 0x2b38,
+ 0x2b39, 0x2b3a, 0x2b3b, 0x2b3c, 0x2b3d, 0x2b3e, 0x2b3f, 0x2b40,
+ 0x2b41, 0x2b42, 0x2b43, 0x2b44, 0x2b45, 0x2b46, 0x2b47, 0x2b48,
+ 0x2b49, 0x2b4a, 0x2b4b, 0x2b4c, 0x2b4d, 0x2b4e, 0x2b4f, 0x2b50,
+ 0x2b51, 0x2b52, 0x2b53, 0x2b54, 0x2b55, 0x2b56, 0x2b57, 0x2b58,
+ 0x2b59, 0x2b5a, 0x2b5b, 0x2b5c, 0x2b5d, 0x2b5e, 0x2b5f, 0x2b60,
+ 0x2b61, 0x2b62, 0x2b63, 0x2b64, 0x2b65, 0x2b66, 0x2b67, 0x2b68,
+ 0x2b69, 0x2b6a, 0x2b6b, 0x2b6c, 0x2b6d, 0x2b6e, 0x2b6f, 0x2b70,
+ 0x2b71, 0x2b72, 0x2b73, 0x2b74, 0x2b75, 0x2b76, 0x2421, 0x2422,
+ 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x242a,
+ 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431, 0x2432,
+ 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439, 0x243a,
+ 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441, 0x2442,
+ 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449, 0x244a,
+ 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451, 0x2452,
+ 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x245a,
+ 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461, 0x2462,
+ 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a,
+ 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472,
+ 0x2473, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
+ 0x247b, 0x247c, 0x247d, 0x247e, 0x2931, 0x2932, 0x2933, 0x2934,
+ 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c,
+ 0x293d, 0x293e, 0x293f, 0x2940, 0x2941, 0x2942, 0x2943, 0x2944,
+ 0x2945, 0x2946, 0x2947, 0x2948, 0x2949, 0x294a, 0x294b, 0x294c,
+ 0x225f, 0x2831, 0x2832, 0x2833, 0x2834, 0x2835, 0x2836, 0x2837,
+ 0x2838, 0x2839, 0x283a, 0x283b, 0x283c, 0x283d, 0x283e, 0x283f,
+ 0x2840, 0x2841, 0x2842, 0x2843, 0x2844, 0x2845, 0x2846, 0x2847,
+ 0x2848, 0x2849, 0x284a, 0x284b, 0x284c, 0x225e, 0x2749, 0x274a,
+ 0x274b, 0x274c, 0x274d, 0x273a, 0x273b, 0x275c, 0x275d, 0x275e,
+ 0x2736, 0x2737, 0x2738, 0x2754, 0x2755, 0x2756, 0x2757, 0x2758,
+ 0x2721, 0x2722, 0x2723, 0x2725, 0x272b, 0x272c, 0x272d, 0x272e,
+ 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2727, 0x2728,
+ 0x2729, 0x272a, 0x273d, 0x273e, 0x2765, 0x2766, 0x2767, 0x2768,
+ 0x2761, 0x2762, 0x2763, 0x273f, 0x2740, 0x2741, 0x2742, 0x2743,
+ 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x274e, 0x274f, 0x2750,
+ 0x2751, 0x2752, 0x2753, 0x275a, 0x275b, 0x2263, 0x276c, 0x2726,
+ 0x2760, 0x276f, 0x2261, 0x273c, 0x276d, 0x2735, 0x2739, 0x276a,
+ 0x276b, 0x275f, 0x2264, 0x2764, 0x276e, 0x2769, 0x6c69, 0x6f4b,
+ 0x7652, 0x5832, 0x6d5b, 0x5f32, 0x5f3e, 0x793b, 0x5c74, 0x7564,
+ 0x7326, 0x5d60, 0x6126, 0x4e78, 0x5c30, 0x632a, 0x7169, 0x4d7a,
+ 0x7c2f, 0x5321, 0x712b, 0x6751, 0x522c, 0x4e79, 0x717d, 0x5e3f,
+ 0x7b3a, 0x7939, 0x4e52, 0x632b, 0x6b60, 0x4e7a, 0x4b77, 0x6525,
+ 0x4a61, 0x544c, 0x6a61, 0x5c63, 0x5f2d, 0x4b6b, 0x552f, 0x5675,
+ 0x6578, 0x5e40, 0x6c23, 0x694d, 0x6a27, 0x6976, 0x7b3b, 0x6769,
+ 0x6f4c, 0x5066, 0x5e41, 0x642c, 0x584c, 0x7971, 0x4e5f, 0x7a24,
+ 0x6632, 0x7a7b, 0x7a3d, 0x4c48, 0x6f4d, 0x5555, 0x5322, 0x6c51,
+ 0x6427, 0x6c52, 0x7631, 0x4e7b, 0x5051, 0x4b3f, 0x6d24, 0x6d28,
+ 0x5e42, 0x7662, 0x6d5c, 0x5c75, 0x6039, 0x544e, 0x7435, 0x535b,
+ 0x5635, 0x6c24, 0x6466, 0x716a, 0x4b6c, 0x4b40, 0x6c72, 0x506a,
+ 0x7972, 0x6c25, 0x505f, 0x676a, 0x506b, 0x5c51, 0x5b69, 0x7d4c,
+ 0x5b57, 0x5a61, 0x5636, 0x635f, 0x5e43, 0x5e44, 0x4a21, 0x6e6c,
+ 0x5323, 0x6e37, 0x784f, 0x6a48, 0x6e38, 0x712c, 0x7125, 0x694e,
+ 0x793c, 0x6579, 0x6c6a, 0x5d56, 0x6d42, 0x7825, 0x653a, 0x5b58,
+ 0x4a22, 0x514d, 0x6e6d, 0x6c6b, 0x5e45, 0x6360, 0x4a49, 0x7269,
+ 0x554e, 0x7636, 0x4e42, 0x5647, 0x6334, 0x712d, 0x6a62, 0x5742,
+ 0x7327, 0x4d6a, 0x6b6e, 0x5932, 0x7d25, 0x7655, 0x5562, 0x7835,
+ 0x4c75, 0x7535, 0x642d, 0x676b, 0x7155, 0x703b, 0x6935, 0x4c49,
+ 0x7a55, 0x6154, 0x5756, 0x5c41, 0x5e46, 0x7a6f, 0x6361, 0x6173,
+ 0x5c76, 0x4e7c, 0x5b44, 0x7871, 0x5c64, 0x656f, 0x5c31, 0x5556,
+ 0x735a, 0x4b41, 0x5b43, 0x597a, 0x536e, 0x7a38, 0x7d26, 0x6b6f,
+ 0x7426, 0x4c4a, 0x7328, 0x735b, 0x5b27, 0x7637, 0x4f66, 0x7072,
+ 0x4b5a, 0x6752, 0x5743, 0x7670, 0x685e, 0x6526, 0x6567, 0x4a23,
+ 0x4c27, 0x6a49, 0x7836, 0x7a25, 0x712e, 0x6f4e, 0x4b6d, 0x7630,
+ 0x6f4f, 0x694f, 0x775e, 0x4e53, 0x5c77, 0x5b28, 0x4b78, 0x5f21,
+ 0x5d61, 0x754a, 0x6936, 0x676c, 0x6e6e, 0x7370, 0x5f3f, 0x4c4b,
+ 0x5041, 0x7452, 0x603a, 0x5f40, 0x4e60, 0x5c52, 0x7d6a, 0x5676,
+ 0x6a4a, 0x6869, 0x632c, 0x7350, 0x4a24, 0x5b78, 0x5e47, 0x6b70,
+ 0x7156, 0x6562, 0x4c4c, 0x4b7b, 0x6a63, 0x5f41, 0x566d, 0x6950,
+ 0x6e39, 0x5563, 0x5153, 0x6570, 0x6834, 0x6b43, 0x6a2a, 0x7a7c,
+ 0x7576, 0x703c, 0x7d54, 0x603b, 0x4e43, 0x503a, 0x773a, 0x5873,
+ 0x774d, 0x642e, 0x545f, 0x5067, 0x6c7d, 0x522e, 0x6e6f, 0x5557,
+ 0x6a64, 0x7822, 0x4d6b, 0x573f, 0x7b31, 0x4d6c, 0x5c32, 0x506c,
+ 0x4e7d, 0x6e70, 0x4c42, 0x506d, 0x6577, 0x737c, 0x6e22, 0x5933,
+ 0x5874, 0x6937, 0x4e2e, 0x5922, 0x5871, 0x544f, 0x6527, 0x5552,
+ 0x5629, 0x7422, 0x7157, 0x5558, 0x703d, 0x5750, 0x5450, 0x574f,
+ 0x6b6a, 0x7d6b, 0x5b6d, 0x7c45, 0x4b42, 0x7d55, 0x7448, 0x686a,
+ 0x7573, 0x795e, 0x536f, 0x6c53, 0x5d42, 0x6f37, 0x6754, 0x4a4a,
+ 0x597b, 0x7a7d, 0x562a, 0x7478, 0x7777, 0x5c2c, 0x5757, 0x5f22,
+ 0x4e3e, 0x5370, 0x7024, 0x616c, 0x4f67, 0x734b, 0x6d29, 0x4a3e,
+ 0x746f, 0x764e, 0x5e7b, 0x503b, 0x5537, 0x6e71, 0x7428, 0x5c78,
+ 0x4b27, 0x5a4e, 0x6066, 0x6d25, 0x6e72, 0x5c79, 0x795c, 0x735c,
+ 0x7872, 0x7479, 0x7c71, 0x503c, 0x5b79, 0x5731, 0x4b7c, 0x7025,
+ 0x4b7d, 0x5574, 0x4d6d, 0x4a25, 0x562b, 0x5042, 0x703e, 0x523d,
+ 0x4c24, 0x7a36, 0x4c4d, 0x5a7a, 0x764f, 0x6938, 0x5875, 0x4c4e,
+ 0x574d, 0x5451, 0x696d, 0x4a6b, 0x5962, 0x7d32, 0x632d, 0x564c,
+ 0x5934, 0x6127, 0x6e53, 0x5043, 0x7d33, 0x5564, 0x4f68, 0x6d43,
+ 0x5032, 0x4e7e, 0x5a28, 0x7850, 0x7d56, 0x7851, 0x7852, 0x5c53,
+ 0x5d62, 0x7b79, 0x5d41, 0x6335, 0x6d5d, 0x4e44, 0x4b21, 0x5d63,
+ 0x7c5d, 0x792f, 0x527b, 0x4f21, 0x6428, 0x7436, 0x6c7e, 0x632e,
+ 0x676d, 0x7d41, 0x5a62, 0x5833, 0x5d64, 0x706f, 0x7671, 0x7a70,
+ 0x5175, 0x5a4f, 0x5c54, 0x5c26, 0x6f3f, 0x4e4f, 0x6059, 0x5956,
+ 0x6c54, 0x6a4b, 0x4a3f, 0x5530, 0x4f69, 0x716d, 0x4c4f, 0x6478,
+ 0x646d, 0x5758, 0x7d27, 0x6a2b, 0x7632, 0x4f70, 0x793d, 0x6674,
+ 0x4b5b, 0x7351, 0x6951, 0x7329, 0x5060, 0x6952, 0x5a63, 0x6252,
+ 0x7622, 0x6174, 0x5a64, 0x6755, 0x753f, 0x4f22, 0x4d2f, 0x4f23,
+ 0x4d30, 0x717e, 0x5023, 0x612f, 0x7823, 0x4a26, 0x773b, 0x726a,
+ 0x5e48, 0x6953, 0x5e49, 0x7d5e, 0x4a40, 0x796a, 0x514e, 0x6e54,
+ 0x5452, 0x5923, 0x7d28, 0x5759, 0x774e, 0x7a3e, 0x4f56, 0x5770,
+ 0x6b61, 0x7845, 0x5c7a, 0x5d43, 0x795f, 0x676f, 0x7d65, 0x7623,
+ 0x597c, 0x7d29, 0x676e, 0x5565, 0x6f50, 0x4d31, 0x7722, 0x7132,
+ 0x7131, 0x4d32, 0x5a2b, 0x4a27, 0x6362, 0x7b3c, 0x5924, 0x6e3a,
+ 0x7853, 0x7b7a, 0x4f24, 0x5c7b, 0x7663, 0x6d2a, 0x7221, 0x4e61,
+ 0x7a26, 0x7960, 0x6c56, 0x646e, 0x7921, 0x7b6f, 0x796b, 0x6e23,
+ 0x6a2c, 0x4a28, 0x747a, 0x4d56, 0x7c76, 0x7449, 0x7854, 0x7826,
+ 0x5e4a, 0x7246, 0x575a, 0x5350, 0x5845, 0x6a66, 0x735d, 0x645a,
+ 0x7664, 0x7672, 0x5f42, 0x597d, 0x4c76, 0x533a, 0x642f, 0x7961,
+ 0x7026, 0x4b53, 0x603c, 0x744a, 0x547a, 0x7d2a, 0x7962, 0x7437,
+ 0x7d42, 0x7c30, 0x7d6c, 0x4a62, 0x7d3d, 0x6a67, 0x5f43, 0x5152,
+ 0x4e62, 0x5324, 0x7d2b, 0x5f60, 0x7247, 0x6770, 0x506e, 0x732a,
+ 0x5e4b, 0x7638, 0x6175, 0x7133, 0x7723, 0x4a29, 0x4f25, 0x5f44,
+ 0x6130, 0x703f, 0x7624, 0x6336, 0x7a46, 0x506f, 0x7d6d, 0x5d44,
+ 0x7c77, 0x663f, 0x5e2d, 0x7a3f, 0x6571, 0x6d44, 0x5225, 0x7d6e,
+ 0x7536, 0x6176, 0x5e4c, 0x7c5e, 0x6c57, 0x4d5d, 0x5637, 0x4d33,
+ 0x7855, 0x6558, 0x4f6a, 0x4f50, 0x6a4c, 0x6a2e, 0x6a2d, 0x5371,
+ 0x5325, 0x774f, 0x6e24, 0x5024, 0x7222, 0x5070, 0x7223, 0x7778,
+ 0x5033, 0x5b29, 0x533b, 0x4a6c, 0x7126, 0x4b55, 0x7767, 0x4d5e,
+ 0x7724, 0x7840, 0x535d, 0x4c50, 0x4f26, 0x7673, 0x6177, 0x535c,
+ 0x7a7e, 0x7a27, 0x6b59, 0x4f27, 0x6a2f, 0x646f, 0x6939, 0x7158,
+ 0x5858, 0x6072, 0x6634, 0x5c7c, 0x7371, 0x6350, 0x727b, 0x5b46,
+ 0x5071, 0x5072, 0x4f5c, 0x5351, 0x4c31, 0x7758, 0x4b28, 0x6b3c,
+ 0x643e, 0x745c, 0x5c42, 0x7027, 0x6640, 0x4a6d, 0x686b, 0x6568,
+ 0x5c43, 0x6d5e, 0x5372, 0x4c77, 0x4e54, 0x672b, 0x4b43, 0x6131,
+ 0x7732, 0x5373, 0x5352, 0x7540, 0x5f5d, 0x6e73, 0x6771, 0x7d34,
+ 0x7248, 0x7352, 0x6e74, 0x6253, 0x4c51, 0x5f6a, 0x693a, 0x5957,
+ 0x754d, 0x7172, 0x7a47, 0x5978, 0x5442, 0x7665, 0x5d45, 0x6772,
+ 0x6d5f, 0x4a4b, 0x5b7a, 0x6835, 0x5326, 0x7d35, 0x7949, 0x6462,
+ 0x7b3d, 0x5724, 0x4e45, 0x4e55, 0x5666, 0x653d, 0x5e4d, 0x6c73,
+ 0x6d60, 0x6c6c, 0x7b3e, 0x5f6b, 0x6178, 0x793e, 0x5073, 0x602a,
+ 0x6862, 0x6254, 0x527d, 0x6528, 0x5953, 0x535e, 0x7438, 0x773c,
+ 0x5c7d, 0x686c, 0x6467, 0x6377, 0x6c28, 0x7a71, 0x6572, 0x5074,
+ 0x522f, 0x5c65, 0x5025, 0x7134, 0x7c31, 0x4c78, 0x5d46, 0x7a51,
+ 0x775f, 0x7a28, 0x6e75, 0x5e4e, 0x6773, 0x772c, 0x6b44, 0x6d61,
+ 0x602b, 0x5d47, 0x5233, 0x523f, 0x4a4c, 0x7b3f, 0x657d, 0x5d65,
+ 0x584d, 0x6c74, 0x5075, 0x686d, 0x5052, 0x5958, 0x7666, 0x5b2a,
+ 0x7760, 0x5859, 0x7423, 0x745d, 0x6f51, 0x5935, 0x6d2b, 0x6337,
+ 0x6e3b, 0x4d34, 0x6073, 0x6a4d, 0x6c75, 0x686e, 0x4b29, 0x712f,
+ 0x4a4d, 0x6c29, 0x726b, 0x7d6f, 0x7973, 0x6641, 0x6c58, 0x6d2c,
+ 0x6a4e, 0x685f, 0x5e4f, 0x5226, 0x6774, 0x5156, 0x6642, 0x6363,
+ 0x6430, 0x5834, 0x7625, 0x735e, 0x5725, 0x7768, 0x6846, 0x7b66,
+ 0x5d66, 0x5c7e, 0x585a, 0x5a2c, 0x6a30, 0x6338, 0x4a2a, 0x6179,
+ 0x6a31, 0x726c, 0x7a6e, 0x6e55, 0x7974, 0x526c, 0x7b7b, 0x7d70,
+ 0x603d, 0x4e63, 0x7846, 0x5e2e, 0x5f45, 0x653e, 0x6d2d, 0x7a6a,
+ 0x4d6e, 0x6d26, 0x6d2e, 0x706d, 0x5d21, 0x6d2f, 0x7c78, 0x586b,
+ 0x4c79, 0x4d35, 0x7a29, 0x615d, 0x6255, 0x6d4f, 0x5d22, 0x794a,
+ 0x6a68, 0x656d, 0x536b, 0x6954, 0x617a, 0x644c, 0x6164, 0x6847,
+ 0x4e5b, 0x5c55, 0x7735, 0x7c73, 0x7073, 0x4e2f, 0x7135, 0x6f52,
+ 0x6848, 0x6b71, 0x4b54, 0x603e, 0x6378, 0x6a69, 0x7c32, 0x6074,
+ 0x4f60, 0x6e25, 0x7a2a, 0x6643, 0x6132, 0x4a2b, 0x6364, 0x693b,
+ 0x6256, 0x7372, 0x6e56, 0x6a32, 0x5076, 0x6c59, 0x5a4b, 0x4f28,
+ 0x5d23, 0x585b, 0x794e, 0x6955, 0x6351, 0x523c, 0x582c, 0x734c,
+ 0x4d7b, 0x7656, 0x6775, 0x686f, 0x6379, 0x523b, 0x7373, 0x637b,
+ 0x5e50, 0x4e30, 0x5677, 0x7159, 0x7541, 0x5c44, 0x753b, 0x5e51,
+ 0x5c66, 0x5e52, 0x6d62, 0x6e76, 0x6a4f, 0x706e, 0x637c, 0x535f,
+ 0x5374, 0x6133, 0x6134, 0x7453, 0x5f46, 0x6956, 0x5b2b, 0x7626,
+ 0x6339, 0x6b45, 0x7429, 0x4d36, 0x5279, 0x5a2d, 0x5263, 0x4f51,
+ 0x4b5c, 0x4c7a, 0x4f5d, 0x6829, 0x633b, 0x633a, 0x605a, 0x6e77,
+ 0x5c33, 0x5375, 0x5726, 0x7635, 0x575b, 0x6155, 0x546a, 0x5f23,
+ 0x7d5f, 0x5077, 0x6d54, 0x4b2a, 0x645b, 0x617b, 0x4b22, 0x5360,
+ 0x643f, 0x7b40, 0x5a3e, 0x644d, 0x5639, 0x6f40, 0x617c, 0x7639,
+ 0x5f47, 0x6431, 0x5c67, 0x5c68, 0x7a56, 0x5376, 0x715a, 0x7a72,
+ 0x627d, 0x554f, 0x5078, 0x4d5f, 0x754b, 0x6470, 0x4b2b, 0x5744,
+ 0x627e, 0x5d5a, 0x5a2e, 0x4a6e, 0x5539, 0x6321, 0x6863, 0x732b,
+ 0x4f29, 0x5377, 0x5471, 0x4e64, 0x6872, 0x6575, 0x672e, 0x563a,
+ 0x5f6c, 0x6440, 0x6864, 0x5835, 0x645c, 0x7439, 0x7136, 0x625e,
+ 0x6135, 0x4d6f, 0x7127, 0x4e65, 0x4b5d, 0x5963, 0x732c, 0x5079,
+ 0x6c2b, 0x5e53, 0x7769, 0x7975, 0x615e, 0x4b6e, 0x633c, 0x7856,
+ 0x5b6e, 0x7d71, 0x7736, 0x745e, 0x726d, 0x5b59, 0x7028, 0x617d,
+ 0x5e54, 0x602c, 0x6d63, 0x5361, 0x5f48, 0x5936, 0x7d2c, 0x6f53,
+ 0x6441, 0x786b, 0x5b2c, 0x7c46, 0x582d, 0x763a, 0x5b5f, 0x5353,
+ 0x7847, 0x4a4e, 0x7841, 0x5234, 0x5c34, 0x7a39, 0x4a4f, 0x7c33,
+ 0x6a6a, 0x6a6b, 0x507a, 0x6d64, 0x5d67, 0x5f49, 0x5f6d, 0x6e3c,
+ 0x6f41, 0x4c52, 0x5d24, 0x5f4a, 0x5378, 0x7128, 0x4d37, 0x6f54,
+ 0x645d, 0x5f6e, 0x4b2c, 0x693c, 0x6a6c, 0x5f4b, 0x793f, 0x562f,
+ 0x5546, 0x4f2a, 0x4e29, 0x5678, 0x7137, 0x6e78, 0x5959, 0x735f,
+ 0x7848, 0x4e46, 0x5566, 0x7466, 0x6645, 0x6f55, 0x4b6f, 0x7c5f,
+ 0x5c27, 0x5667, 0x7849, 0x6352, 0x633d, 0x4f61, 0x7040, 0x6c5a,
+ 0x5d57, 0x7b70, 0x6c2c, 0x7029, 0x7a57, 0x7b41, 0x5240, 0x6530,
+ 0x6d65, 0x4b2d, 0x7930, 0x7725, 0x4b2e, 0x5a2f, 0x5836, 0x5327,
+ 0x7b32, 0x7d44, 0x6c2d, 0x7b21, 0x6569, 0x696e, 0x7374, 0x7873,
+ 0x7041, 0x5e2f, 0x7830, 0x7360, 0x672f, 0x5b2d, 0x6635, 0x7928,
+ 0x5d58, 0x6859, 0x6f56, 0x5362, 0x625f, 0x7c60, 0x5748, 0x7d2d,
+ 0x5f6f, 0x4c53, 0x5379, 0x5470, 0x5b47, 0x5e55, 0x7074, 0x5550,
+ 0x6559, 0x7c47, 0x5c56, 0x6260, 0x5a30, 0x7323, 0x536c, 0x744b,
+ 0x7d45, 0x637d, 0x7931, 0x507b, 0x6c5b, 0x753c, 0x7224, 0x584e,
+ 0x584f, 0x7577, 0x7661, 0x5237, 0x7b6c, 0x5d48, 0x6468, 0x5241,
+ 0x7857, 0x563b, 0x5e56, 0x773d, 0x6c2e, 0x5061, 0x6075, 0x6a33,
+ 0x4e56, 0x4c25, 0x6c76, 0x6261, 0x633e, 0x7c48, 0x4d70, 0x7976,
+ 0x5f70, 0x653f, 0x4e3f, 0x7c61, 0x6d30, 0x7d51, 0x763b, 0x794f,
+ 0x6b5a, 0x4a41, 0x5238, 0x4d71, 0x6353, 0x7d66, 0x666d, 0x637a,
+ 0x702a, 0x7950, 0x7c62, 0x7827, 0x6165, 0x6e79, 0x6776, 0x6a6d,
+ 0x7c34, 0x7542, 0x575c, 0x7075, 0x5d68, 0x536d, 0x757c, 0x5a3f,
+ 0x4c7b, 0x537a, 0x7424, 0x6f57, 0x5443, 0x7b63, 0x7b6d, 0x602d,
+ 0x6a6e, 0x7b33, 0x6442, 0x7667, 0x525d, 0x5f4c, 0x7c49, 0x6529,
+ 0x6076, 0x7633, 0x617e, 0x4b70, 0x6a6f, 0x6a70, 0x5a40, 0x7834,
+ 0x6b72, 0x6443, 0x6957, 0x6471, 0x4a6f, 0x4e57, 0x7c4a, 0x7361,
+ 0x4b44, 0x6365, 0x4b45, 0x6a34, 0x693d, 0x5749, 0x6b5b, 0x6d31,
+ 0x4c43, 0x773e, 0x7c4b, 0x7874, 0x5937, 0x7353, 0x7354, 0x7764,
+ 0x7751, 0x5837, 0x4e31, 0x4a42, 0x7b34, 0x4b46, 0x7076, 0x5567,
+ 0x6a50, 0x4c54, 0x4b2f, 0x742a, 0x692f, 0x7543, 0x6958, 0x5d69,
+ 0x7173, 0x557b, 0x5e3b, 0x747b, 0x7d73, 0x7d72, 0x7726, 0x5d49,
+ 0x5453, 0x4c28, 0x5a41, 0x4c55, 0x5964, 0x7a4a, 0x6563, 0x533c,
+ 0x4a70, 0x5044, 0x4a50, 0x7a2b, 0x6b6b, 0x6778, 0x5965, 0x5157,
+ 0x7324, 0x547b, 0x7c63, 0x7a58, 0x7355, 0x4f2b, 0x6b73, 0x557c,
+ 0x5354, 0x4d7c, 0x5966, 0x6279, 0x6221, 0x6b54, 0x6077, 0x6432,
+ 0x4c7c, 0x7b64, 0x742b, 0x503d, 0x4a71, 0x6f38, 0x5740, 0x6e7a,
+ 0x7d74, 0x5363, 0x7b42, 0x5568, 0x5b2e, 0x6136, 0x7837, 0x603f,
+ 0x7b43, 0x5d6a, 0x6222, 0x6e26, 0x7668, 0x7675, 0x5d4a, 0x5062,
+ 0x5d26, 0x5d6b, 0x6479, 0x632f, 0x507c, 0x747c, 0x4c3c, 0x776a,
+ 0x6564, 0x5f71, 0x7761, 0x7977, 0x6f39, 0x7858, 0x7929, 0x7859,
+ 0x6e3d, 0x5846, 0x6463, 0x754e, 0x5d59, 0x5967, 0x5239, 0x5543,
+ 0x5a65, 0x5a50, 0x5159, 0x4e58, 0x4b5e, 0x742c, 0x5a7b, 0x7669,
+ 0x6873, 0x4f2c, 0x7070, 0x747d, 0x5b48, 0x4e40, 0x6354, 0x514f,
+ 0x7175, 0x4d72, 0x4f6b, 0x4d38, 0x6326, 0x515a, 0x7225, 0x7226,
+ 0x644e, 0x537b, 0x7129, 0x7249, 0x6f58, 0x6649, 0x5838, 0x7a73,
+ 0x7335, 0x7824, 0x5173, 0x6648, 0x785a, 0x5c69, 0x5e57, 0x4b5f,
+ 0x4f6c, 0x745f, 0x5174, 0x523a, 0x5f72, 0x6137, 0x6223, 0x537c,
+ 0x6d66, 0x5b49, 0x647a, 0x4f5e, 0x4e50, 0x5553, 0x7375, 0x772e,
+ 0x6f48, 0x4d73, 0x754f, 0x6573, 0x7042, 0x4a51, 0x6a71, 0x5026,
+ 0x595a, 0x702b, 0x6b67, 0x6540, 0x7c35, 0x6444, 0x4c29, 0x7d46,
+ 0x6a35, 0x652a, 0x5f3a, 0x615f, 0x5a51, 0x6138, 0x6874, 0x537d,
+ 0x6224, 0x724a, 0x5a66, 0x7733, 0x7d4d, 0x7336, 0x6e57, 0x7544,
+ 0x5824, 0x7227, 0x5938, 0x5939, 0x6f49, 0x564e, 0x774b, 0x5f2e,
+ 0x6875, 0x5235, 0x5355, 0x744c, 0x5a7c, 0x5968, 0x776b, 0x7549,
+ 0x733c, 0x5a52, 0x5335, 0x6836, 0x564f, 0x743a, 0x7749, 0x4c2a,
+ 0x7043, 0x4c56, 0x5053, 0x533d, 0x5b7b, 0x4b60, 0x5364, 0x7677,
+ 0x553a, 0x734d, 0x4b61, 0x6b74, 0x742d, 0x7c2a, 0x776c, 0x6876,
+ 0x5a67, 0x774c, 0x6541, 0x606e, 0x557d, 0x4e66, 0x7c2b, 0x553b,
+ 0x7228, 0x6225, 0x4d39, 0x6a72, 0x4b47, 0x4d74, 0x5b2f, 0x6f59,
+ 0x4d3a, 0x7c79, 0x5f73, 0x4e67, 0x5a42, 0x4f2d, 0x6779, 0x7828,
+ 0x7362, 0x4a72, 0x5f24, 0x5444, 0x4c57, 0x6542, 0x4d3b, 0x6f5a,
+ 0x6e58, 0x5d27, 0x6226, 0x6040, 0x5630, 0x784a, 0x7c7a, 0x597e,
+ 0x5e30, 0x5d6c, 0x5a68, 0x5460, 0x5679, 0x4d57, 0x5e58, 0x7278,
+ 0x6456, 0x5045, 0x742e, 0x5d28, 0x6d45, 0x7356, 0x5e59, 0x6366,
+ 0x5328, 0x5b30, 0x655a, 0x633f, 0x5b31, 0x5569, 0x6041, 0x6f5b,
+ 0x7069, 0x5732, 0x507d, 0x5969, 0x507e, 0x6c6d, 0x5329, 0x7229,
+ 0x7044, 0x6262, 0x696f, 0x7951, 0x6959, 0x685a, 0x5a43, 0x5a44,
+ 0x5445, 0x677a, 0x4d60, 0x6330, 0x5b32, 0x7b44, 0x7363, 0x5925,
+ 0x7b67, 0x5d4b, 0x5054, 0x6636, 0x602e, 0x7d5a, 0x5c35, 0x6078,
+ 0x6731, 0x7570, 0x585c, 0x6d46, 0x6139, 0x6340, 0x7940, 0x6970,
+ 0x595b, 0x7364, 0x5c36, 0x6469, 0x7045, 0x6341, 0x7c4c, 0x7c4d,
+ 0x724b, 0x724c, 0x644f, 0x715b, 0x7a59, 0x7138, 0x7d75, 0x6079,
+ 0x677b, 0x7c37, 0x7c64, 0x7b45, 0x6367, 0x5839, 0x7678, 0x5c45,
+ 0x4c58, 0x602f, 0x7467, 0x6f5c, 0x4f7c, 0x6f5d, 0x722a, 0x7d3e,
+ 0x4a2c, 0x7d3b, 0x7d47, 0x6732, 0x6a51, 0x5f74, 0x516c, 0x645e,
+ 0x6543, 0x5926, 0x4d3c, 0x7365, 0x6d55, 0x593a, 0x6d67, 0x7b35,
+ 0x786c, 0x6067, 0x4c59, 0x5446, 0x6725, 0x5575, 0x533e, 0x7c7b,
+ 0x6472, 0x5f75, 0x6878, 0x786d, 0x4e47, 0x7d76, 0x6858, 0x4d58,
+ 0x6756, 0x4c5a, 0x4a63, 0x5f76, 0x7047, 0x7046, 0x583a, 0x7174,
+ 0x7470, 0x754c, 0x7c65, 0x6a45, 0x6a73, 0x5d5b, 0x5c57, 0x5e7d,
+ 0x7279, 0x5547, 0x5850, 0x7048, 0x5121, 0x5122, 0x5954, 0x5668,
+ 0x594a, 0x5a31, 0x5847, 0x5c62, 0x734e, 0x7574, 0x7139, 0x5a53,
+ 0x766a, 0x4f75, 0x7d2e, 0x4a52, 0x5f34, 0x575d, 0x7a3a, 0x6e27,
+ 0x753d, 0x7875, 0x6d68, 0x5461, 0x5123, 0x6156, 0x7978, 0x5b4a,
+ 0x4b79, 0x5454, 0x595c, 0x6e3e, 0x776d, 0x526e, 0x6166, 0x7779,
+ 0x5d6d, 0x685b, 0x5b33, 0x5177, 0x6030, 0x5462, 0x7657, 0x5779,
+ 0x585d, 0x4d7d, 0x722b, 0x4d3d, 0x7842, 0x722c, 0x4a2d, 0x4a2e,
+ 0x4f2e, 0x6342, 0x5c37, 0x5b5a, 0x593b, 0x4a73, 0x7653, 0x6678,
+ 0x6a75, 0x6a76, 0x7679, 0x4f2f, 0x4a53, 0x4a2f, 0x5230, 0x713a,
+ 0x5733, 0x6343, 0x737d, 0x5e5a, 0x5e5b, 0x6f5e, 0x6263, 0x6e7b,
+ 0x5f77, 0x574a, 0x4e68, 0x5b5b, 0x713b, 0x6971, 0x7a37, 0x5046,
+ 0x4c2b, 0x6e28, 0x4b7a, 0x7979, 0x4c7d, 0x537e, 0x6450, 0x726e,
+ 0x5455, 0x5f4d, 0x7c38, 0x5150, 0x724d, 0x7752, 0x4a54, 0x5559,
+ 0x585e, 0x4d59, 0x6e29, 0x763c, 0x4c5b, 0x7049, 0x7c7c, 0x6849,
+ 0x747e, 0x677c, 0x575e, 0x5e5c, 0x702c, 0x4c7e, 0x4d61, 0x613a,
+ 0x5b6f, 0x5a32, 0x5125, 0x5c38, 0x5876, 0x5124, 0x4d62, 0x5c6a,
+ 0x7077, 0x704a, 0x503e, 0x5d5c, 0x5456, 0x5356, 0x6d50, 0x4d21,
+ 0x5f35, 0x5f78, 0x5421, 0x4e32, 0x684a, 0x6b75, 0x6355, 0x7550,
+ 0x7521, 0x5927, 0x652b, 0x664b, 0x7571, 0x6545, 0x7923, 0x605b,
+ 0x766b, 0x4b71, 0x596a, 0x7522, 0x5751, 0x5178, 0x6a78, 0x6a79,
+ 0x5a33, 0x6f5f, 0x716f, 0x6576, 0x6e3f, 0x6264, 0x503f, 0x7a2c,
+ 0x7551, 0x6733, 0x693e, 0x724e, 0x5b34, 0x7c4e, 0x5d6e, 0x6734,
+ 0x5734, 0x7734, 0x4d3e, 0x5a69, 0x4f30, 0x7759, 0x7366, 0x4e59,
+ 0x4e2a, 0x4b48, 0x5027, 0x704b, 0x5047, 0x6445, 0x5b60, 0x555a,
+ 0x5727, 0x6e40, 0x7876, 0x7552, 0x6d69, 0x593c, 0x6546, 0x7523,
+ 0x5a54, 0x6227, 0x7b7c, 0x715c, 0x4a74, 0x687a, 0x4e69, 0x6978,
+ 0x6265, 0x5039, 0x5472, 0x5126, 0x5f4e, 0x7c74, 0x532a, 0x4c2c,
+ 0x6f60, 0x6565, 0x5055, 0x5b7c, 0x7c66, 0x4b7e, 0x6d6a, 0x5e31,
+ 0x7963, 0x5422, 0x4f76, 0x5650, 0x556a, 0x716e, 0x7a4b, 0x6521,
+ 0x5531, 0x4f6d, 0x6d6b, 0x5532, 0x553c, 0x7d62, 0x732d, 0x7d5b,
+ 0x6930, 0x5127, 0x7d63, 0x4e33, 0x7d64, 0x7a4e, 0x4a30, 0x7727,
+ 0x4f31, 0x6622, 0x7c36, 0x722d, 0x6f61, 0x732e, 0x5c46, 0x596b,
+ 0x6860, 0x6128, 0x5576, 0x4f7d, 0x5e5d, 0x5951, 0x646a, 0x724f,
+ 0x773f, 0x6266, 0x6228, 0x6356, 0x6d51, 0x6979, 0x5631, 0x5e32,
+ 0x6068, 0x532b, 0x6b5c, 0x5f2f, 0x4a43, 0x6e7c, 0x7d43, 0x6b76,
+ 0x4f32, 0x596c, 0x593d, 0x585f, 0x5438, 0x6b3e, 0x5d6f, 0x5d70,
+ 0x5d71, 0x5d72, 0x593e, 0x7b46, 0x4f33, 0x6e7d, 0x642b, 0x5a45,
+ 0x586c, 0x5128, 0x6229, 0x5e3c, 0x6735, 0x5b70, 0x6f62, 0x7170,
+ 0x4f34, 0x5b71, 0x6031, 0x5f25, 0x7952, 0x677d, 0x6623, 0x7b71,
+ 0x4b30, 0x722e, 0x4d67, 0x685c, 0x6757, 0x7740, 0x5063, 0x5a21,
+ 0x4c3d, 0x5129, 0x5d4c, 0x637e, 0x512a, 0x682a, 0x6a36, 0x797a,
+ 0x664c, 0x7658, 0x5447, 0x594b, 0x5952, 0x534b, 0x5877, 0x5a29,
+ 0x7578, 0x5e5e, 0x722f, 0x7829, 0x5848, 0x6e41, 0x7941, 0x5d73,
+ 0x6a7a, 0x763d, 0x613b, 0x4d3f, 0x7454, 0x664d, 0x7c4f, 0x7b22,
+ 0x605c, 0x743b, 0x5a55, 0x7932, 0x7b72, 0x5b76, 0x5e5f, 0x5b72,
+ 0x785c, 0x776e, 0x6b68, 0x527a, 0x713c, 0x7a5a, 0x5a6a, 0x5a46,
+ 0x7741, 0x6736, 0x6547, 0x562c, 0x5c47, 0x6129, 0x622a, 0x5526,
+ 0x5457, 0x7250, 0x6a7b, 0x605d, 0x7b73, 0x713d, 0x6267, 0x7d57,
+ 0x4e48, 0x6a37, 0x7c40, 0x7d67, 0x776f, 0x5735, 0x6f3a, 0x715d,
+ 0x5e33, 0x684b, 0x785d, 0x7b47, 0x5548, 0x575f, 0x5d29, 0x6931,
+ 0x7a2d, 0x7659, 0x7a74, 0x782a, 0x666e, 0x4c5c, 0x613c, 0x606f,
+ 0x693f, 0x7c7d, 0x664e, 0x6157, 0x664f, 0x7471, 0x6473, 0x647b,
+ 0x7964, 0x6f63, 0x4f6e, 0x763e, 0x6032, 0x7c7e, 0x512b, 0x577a,
+ 0x7b48, 0x6257, 0x5423, 0x7078, 0x5728, 0x6167, 0x533f, 0x6f64,
+ 0x5745, 0x6b62, 0x7c67, 0x6422, 0x6268, 0x6650, 0x7b68, 0x7468,
+ 0x6574, 0x743c, 0x7455, 0x5f36, 0x7c39, 0x6e42, 0x4a75, 0x6f65,
+ 0x4b62, 0x5424, 0x5e60, 0x5a7d, 0x6446, 0x683e, 0x605e, 0x7634,
+ 0x6a52, 0x797b, 0x6042, 0x4a64, 0x6737, 0x6a7d, 0x595d, 0x5a34,
+ 0x6e2a, 0x7b69, 0x5b4b, 0x5a35, 0x713e, 0x532c, 0x7b49, 0x5f4f,
+ 0x5340, 0x6357, 0x6f66, 0x7c50, 0x6940, 0x7553, 0x6c5c, 0x7737,
+ 0x6a38, 0x5179, 0x5c48, 0x6a39, 0x715e, 0x5736, 0x4f35, 0x5928,
+ 0x6c6e, 0x5d2a, 0x4d22, 0x682e, 0x613d, 0x7251, 0x6941, 0x527c,
+ 0x5b35, 0x7367, 0x587e, 0x7c51, 0x6d32, 0x742f, 0x7b23, 0x7c41,
+ 0x6e2b, 0x5425, 0x7472, 0x6e59, 0x7b4a, 0x4d63, 0x583b, 0x655b,
+ 0x7877, 0x7654, 0x5729, 0x4b49, 0x6651, 0x704c, 0x582e, 0x7953,
+ 0x557e, 0x583c, 0x7230, 0x622b, 0x7368, 0x6f42, 0x6d6c, 0x6738,
+ 0x5a7e, 0x4c3e, 0x727c, 0x5a6b, 0x6258, 0x6d56, 0x5651, 0x6033,
+ 0x7c52, 0x6b48, 0x5341, 0x704d, 0x4f77, 0x6d52, 0x5458, 0x5c49,
+ 0x5771, 0x5f3b, 0x7325, 0x744d, 0x713f, 0x7831, 0x697a, 0x7b4b,
+ 0x4a55, 0x7954, 0x774a, 0x5648, 0x7c68, 0x733d, 0x6e7e, 0x677e,
+ 0x5342, 0x5336, 0x4c2d, 0x767a, 0x5632, 0x5258, 0x6758, 0x6325,
+ 0x6739, 0x702d, 0x7b4c, 0x6b21, 0x5426, 0x7b4d, 0x553d, 0x715f,
+ 0x767b, 0x5e34, 0x556b, 0x6548, 0x7b24, 0x5439, 0x5e61, 0x6423,
+ 0x5737, 0x786e, 0x5e35, 0x5652, 0x7955, 0x673a, 0x6b55, 0x5577,
+ 0x6f67, 0x613e, 0x7a2e, 0x5669, 0x566e, 0x673b, 0x6c4b, 0x5533,
+ 0x4e34, 0x7b25, 0x616e, 0x7728, 0x7b4e, 0x583d, 0x7b7d, 0x7c69,
+ 0x4f36, 0x6d47, 0x6e2c, 0x4c5d, 0x7627, 0x667a, 0x7524, 0x7d5c,
+ 0x6d33, 0x4e49, 0x6f68, 0x613f, 0x7a5b, 0x4b63, 0x7729, 0x7b26,
+ 0x5c39, 0x7140, 0x6d48, 0x6f43, 0x562d, 0x7d4e, 0x6821, 0x7b74,
+ 0x5527, 0x7176, 0x6653, 0x4c5e, 0x7832, 0x5c6b, 0x7d36, 0x656a,
+ 0x7160, 0x5b4c, 0x5d4d, 0x5448, 0x596d, 0x7525, 0x667b, 0x6654,
+ 0x7d48, 0x5621, 0x7d3f, 0x7c53, 0x6f21, 0x673c, 0x516e, 0x6655,
+ 0x6972, 0x5f30, 0x5860, 0x7c3a, 0x7d2f, 0x704e, 0x5b61, 0x6549,
+ 0x6d34, 0x6043, 0x6358, 0x697b, 0x6a28, 0x7d37, 0x7b27, 0x6942,
+ 0x7d77, 0x6259, 0x5c6c, 0x6822, 0x6670, 0x7d78, 0x7d79, 0x763f,
+ 0x6727, 0x6657, 0x5473, 0x5449, 0x567a, 0x5772, 0x6140, 0x5b62,
+ 0x6658, 0x673d, 0x704f, 0x733e, 0x622c, 0x7537, 0x6070, 0x7d38,
+ 0x6368, 0x5427, 0x687c, 0x7a52, 0x786f, 0x5653, 0x5534, 0x7050,
+ 0x7770, 0x6e33, 0x6a3a, 0x6a53, 0x6d49, 0x5d2b, 0x652c, 0x7d21,
+ 0x5f50, 0x6c33, 0x5f51, 0x6d6d, 0x7838, 0x777a, 0x782b, 0x7460,
+ 0x543a, 0x6433, 0x695a, 0x5e36, 0x593f, 0x5940, 0x566f, 0x594c,
+ 0x5a2a, 0x5f65, 0x7765, 0x4c32, 0x5f79, 0x5760, 0x543b, 0x7d7a,
+ 0x4c33, 0x5b73, 0x5f52, 0x4e4a, 0x6e5a, 0x6464, 0x7b4f, 0x4f37,
+ 0x6e43, 0x4e6a, 0x622d, 0x5761, 0x7a75, 0x5549, 0x782c, 0x6759,
+ 0x7369, 0x586d, 0x6344, 0x7071, 0x6865, 0x607a, 0x6e44, 0x595e,
+ 0x6b22, 0x6b23, 0x7c42, 0x6a3b, 0x682b, 0x5e62, 0x6d6f, 0x6823,
+ 0x4f71, 0x543c, 0x7c6a, 0x673e, 0x7c72, 0x5634, 0x622e, 0x5337,
+ 0x7a4c, 0x7a5c, 0x6d35, 0x6163, 0x682c, 0x685d, 0x6f69, 0x743d,
+ 0x4f38, 0x695b, 0x512c, 0x5a47, 0x6b49, 0x684c, 0x5e37, 0x563c,
+ 0x5365, 0x7a5d, 0x5a56, 0x4a31, 0x5a48, 0x5f26, 0x7933, 0x7252,
+ 0x4a44, 0x4e4b, 0x4d75, 0x7d30, 0x5528, 0x7141, 0x6269, 0x5c4a,
+ 0x6c34, 0x7a40, 0x7b28, 0x5028, 0x5a6c, 0x596e, 0x607b, 0x6f6a,
+ 0x7a5e, 0x6044, 0x4f39, 0x554a, 0x5762, 0x622f, 0x5738, 0x684d,
+ 0x765a, 0x6f22, 0x625a, 0x767c, 0x7b50, 0x512d, 0x4d64, 0x512e,
+ 0x5c6d, 0x684e, 0x7079, 0x4e35, 0x667c, 0x577b, 0x5056, 0x5d75,
+ 0x7771, 0x767d, 0x5b77, 0x7b6a, 0x695c, 0x5941, 0x7572, 0x6045,
+ 0x6a54, 0x7942, 0x6a3c, 0x5245, 0x7b51, 0x6740, 0x6b25, 0x5f7a,
+ 0x6322, 0x5739, 0x6943, 0x687d, 0x682f, 0x7253, 0x7b29, 0x5825,
+ 0x554b, 0x5048, 0x512f, 0x5763, 0x6046, 0x5622, 0x6d70, 0x5773,
+ 0x7c54, 0x5a57, 0x4c5f, 0x7254, 0x5130, 0x4c60, 0x5b7d, 0x733f,
+ 0x7051, 0x7c3b, 0x6230, 0x6625, 0x625b, 0x5f5e, 0x6047, 0x726f,
+ 0x4c61, 0x566a, 0x6742, 0x4e36, 0x7340, 0x4d7e, 0x7b52, 0x7878,
+ 0x777b, 0x683f, 0x6837, 0x6d36, 0x5c3a, 0x4c34, 0x7177, 0x6838,
+ 0x4a76, 0x6424, 0x7456, 0x5f66, 0x5f27, 0x5f67, 0x6141, 0x6944,
+ 0x5c4b, 0x6945, 0x6f23, 0x6b26, 0x4b23, 0x6369, 0x517b, 0x6f24,
+ 0x6f6b, 0x5034, 0x4d23, 0x6866, 0x6f25, 0x534c, 0x5a6d, 0x573a,
+ 0x7255, 0x7565, 0x596f, 0x7934, 0x5554, 0x7d4f, 0x5b63, 0x7161,
+ 0x6c36, 0x7b7e, 0x5357, 0x5131, 0x4b31, 0x5132, 0x4b32, 0x7142,
+ 0x7461, 0x7935, 0x6143, 0x6142, 0x6b77, 0x5f28, 0x4b4a, 0x6639,
+ 0x785e, 0x792a, 0x4a77, 0x6d37, 0x5338, 0x7256, 0x5459, 0x6e45,
+ 0x7270, 0x4a32, 0x5c3b, 0x7178, 0x6c37, 0x654a, 0x7640, 0x7d5d,
+ 0x5463, 0x4c62, 0x7754, 0x5765, 0x5343, 0x5826, 0x7641, 0x5d76,
+ 0x4d40, 0x655c, 0x654b, 0x6144, 0x6830, 0x7430, 0x736a, 0x5a6e,
+ 0x573b, 0x6231, 0x572a, 0x567b, 0x645f, 0x4a56, 0x6b28, 0x5b7e,
+ 0x7642, 0x6f3b, 0x547d, 0x6048, 0x6839, 0x6f26, 0x4d24, 0x5474,
+ 0x5b21, 0x5b5c, 0x5b5d, 0x6e5c, 0x4b4b, 0x7c55, 0x4e6b, 0x4d41,
+ 0x7b53, 0x792b, 0x7554, 0x5929, 0x695d, 0x5b4d, 0x5d4e, 0x6743,
+ 0x6c4c, 0x796c, 0x4b4c, 0x607c, 0x5428, 0x6d53, 0x586f, 0x7257,
+ 0x4a78, 0x5a6f, 0x5654, 0x594d, 0x586e, 0x7241, 0x5f53, 0x5a70,
+ 0x626a, 0x607d, 0x5878, 0x772f, 0x5a36, 0x4a57, 0x7258, 0x5879,
+ 0x7a5f, 0x4f6f, 0x5942, 0x7052, 0x6451, 0x7337, 0x7a60, 0x6f6c,
+ 0x6232, 0x543d, 0x594e, 0x7462, 0x5429, 0x4d42, 0x675a, 0x7259,
+ 0x592a, 0x583e, 0x5c2d, 0x626b, 0x567c, 0x4a79, 0x545a, 0x7457,
+ 0x4c21, 0x4f3a, 0x7538, 0x5943, 0x5068, 0x6345, 0x6b78, 0x7231,
+ 0x4f3b, 0x532d, 0x6861, 0x4e6c, 0x6034, 0x5e63, 0x5d77, 0x7232,
+ 0x7376, 0x765b, 0x577e, 0x785f, 0x7772, 0x5029, 0x665a, 0x7526,
+ 0x573c, 0x4c63, 0x665b, 0x5d5d, 0x5133, 0x6f6d, 0x565e, 0x6474,
+ 0x616f, 0x5d78, 0x684f, 0x4a65, 0x5c21, 0x6035, 0x7c2c, 0x7c2d,
+ 0x5827, 0x6d38, 0x5b36, 0x5670, 0x732f, 0x4d25, 0x5a71, 0x5828,
+ 0x4c64, 0x5134, 0x4a58, 0x5a72, 0x7527, 0x7528, 0x6626, 0x556c,
+ 0x5578, 0x5a73, 0x6346, 0x5e64, 0x5e65, 0x5135, 0x5136, 0x5137,
+ 0x7233, 0x695e, 0x7053, 0x7234, 0x7054, 0x4b64, 0x7b54, 0x7566,
+ 0x636a, 0x5e66, 0x5f54, 0x7879, 0x702e, 0x5138, 0x565f, 0x5057,
+ 0x7c21, 0x6f6e, 0x5c58, 0x695f, 0x655d, 0x7d7b, 0x6049, 0x5649,
+ 0x542a, 0x654c, 0x6960, 0x5058, 0x7c22, 0x543e, 0x6233, 0x5e67,
+ 0x5c3c, 0x5236, 0x7555, 0x4e21, 0x7529, 0x5d79, 0x5d7a, 0x7055,
+ 0x765f, 0x725a, 0x646b, 0x7271, 0x6c39, 0x7d7c, 0x612a, 0x4a59,
+ 0x6f6f, 0x752a, 0x6c79, 0x782d, 0x7242, 0x7643, 0x5752, 0x7922,
+ 0x7056, 0x707a, 0x7660, 0x6973, 0x7243, 0x542b, 0x4a33, 0x4d26,
+ 0x4d43, 0x4d5a, 0x594f, 0x7644, 0x6e5d, 0x6744, 0x6234, 0x5f62,
+ 0x675b, 0x6831, 0x7c2e, 0x654d, 0x7a6b, 0x4f3c, 0x4f62, 0x4d76,
+ 0x6f70, 0x743e, 0x544d, 0x7338, 0x6921, 0x7272, 0x736b, 0x7057,
+ 0x4f57, 0x4f5f, 0x6840, 0x6841, 0x4f63, 0x6922, 0x502a, 0x7341,
+ 0x502b, 0x5464, 0x6f3c, 0x5821, 0x595f, 0x7357, 0x5c3d, 0x4c65,
+ 0x6d71, 0x7162, 0x545b, 0x6235, 0x4a66, 0x532e, 0x4c66, 0x7153,
+ 0x7567, 0x4a5a, 0x7b6e, 0x6145, 0x5f69, 0x6e5e, 0x7742, 0x5822,
+ 0x5d2c, 0x702f, 0x563d, 0x612b, 0x7936, 0x5475, 0x5049, 0x6f27,
+ 0x626c, 0x5b6a, 0x4e4c, 0x7568, 0x7755, 0x534d, 0x737e, 0x5035,
+ 0x607e, 0x5f7b, 0x665d, 0x6824, 0x4b4d, 0x6f28, 0x6e34, 0x5a58,
+ 0x5139, 0x5f29, 0x7330, 0x4c44, 0x4e37, 0x6f29, 0x5f55, 0x6d57,
+ 0x6e46, 0x6f3d, 0x7c56, 0x5b74, 0x6f2a, 0x7839, 0x7569, 0x6359,
+ 0x6146, 0x543f, 0x5e68, 0x706a, 0x7342, 0x532f, 0x4a5b, 0x7c57,
+ 0x6d58, 0x6147, 0x7458, 0x5633, 0x5d2d, 0x553e, 0x7143, 0x6e5f,
+ 0x566b, 0x7459, 0x5766, 0x5a37, 0x5d7b, 0x5d4f, 0x5823, 0x5a59,
+ 0x7058, 0x6f44, 0x6158, 0x7154, 0x6d72, 0x555b, 0x555c, 0x7344,
+ 0x4b57, 0x6236, 0x6f71, 0x7b55, 0x5358, 0x5d50, 0x7059, 0x4b33,
+ 0x555d, 0x4d27, 0x502c, 0x513a, 0x7144, 0x6533, 0x7b75, 0x6961,
+ 0x7d60, 0x7c3c, 0x5a22, 0x5a23, 0x5221, 0x526f, 0x626d, 0x5e69,
+ 0x4e5c, 0x7235, 0x5064, 0x5d51, 0x6148, 0x5b37, 0x5f63, 0x6d39,
+ 0x7145, 0x734f, 0x572b, 0x612c, 0x636b, 0x6e47, 0x6149, 0x4a7a,
+ 0x707b, 0x7a61, 0x705a, 0x4c67, 0x5a74, 0x4c3f, 0x4e6d, 0x5529,
+ 0x7a62, 0x5065, 0x6b56, 0x6c5f, 0x5f7c, 0x7756, 0x5e6a, 0x4b34,
+ 0x6f3e, 0x4c35, 0x4f3d, 0x6f72, 0x6237, 0x4c68, 0x707c, 0x5660,
+ 0x7146, 0x6238, 0x6b2b, 0x4b35, 0x5851, 0x744e, 0x7377, 0x5746,
+ 0x513b, 0x772a, 0x6d4a, 0x5753, 0x587a, 0x7645, 0x514c, 0x5d7c,
+ 0x5f7d, 0x7965, 0x604a, 0x727d, 0x5330, 0x7473, 0x5a49, 0x665e,
+ 0x783a, 0x6850, 0x587b, 0x6a55, 0x5623, 0x7646, 0x725b, 0x647c,
+ 0x6832, 0x5a5a, 0x725c, 0x7b56, 0x6932, 0x6e2d, 0x7a63, 0x5c6e,
+ 0x756a, 0x6660, 0x707d, 0x572c, 0x7545, 0x6e60, 0x5b65, 0x5d5e,
+ 0x5970, 0x6923, 0x7179, 0x7244, 0x604b, 0x6924, 0x6239, 0x6331,
+ 0x7c6b, 0x4d28, 0x4c36, 0x705b, 0x663a, 0x4d29, 0x7343, 0x6159,
+ 0x6f2b, 0x6745, 0x6069, 0x7345, 0x5440, 0x553f, 0x5d2e, 0x797c,
+ 0x4c40, 0x6522, 0x4e38, 0x5852, 0x7956, 0x712a, 0x4e51, 0x7647,
+ 0x5b6b, 0x5f7e, 0x5861, 0x7773, 0x5767, 0x547e, 0x513c, 0x654f,
+ 0x4b36, 0x5a38, 0x4d44, 0x563e, 0x623a, 0x4f58, 0x604c, 0x6b79,
+ 0x7d7d, 0x5768, 0x4b58, 0x6962, 0x683a, 0x6347, 0x6c4d, 0x6c4e,
+ 0x563f, 0x6327, 0x5f56, 0x7d68, 0x6e61, 0x7628, 0x5d7d, 0x783b,
+ 0x6851, 0x7957, 0x4e6e, 0x6c4f, 0x6925, 0x5655, 0x4d45, 0x6d3a,
+ 0x513d, 0x4f3e, 0x6c3b, 0x5231, 0x4c69, 0x5944, 0x697c, 0x513e,
+ 0x6c3c, 0x652d, 0x7730, 0x4c6a, 0x5344, 0x5640, 0x567d, 0x6121,
+ 0x5e3d, 0x7629, 0x5a24, 0x5624, 0x7546, 0x6122, 0x6946, 0x7245,
+ 0x7469, 0x566c, 0x6b53, 0x6c3d, 0x625c, 0x5e6b, 0x705c, 0x6b3f,
+ 0x574e, 0x513f, 0x752b, 0x797d, 0x4a5c, 0x4d46, 0x7236, 0x5d7e,
+ 0x4c37, 0x5b38, 0x5069, 0x4e5d, 0x6b40, 0x7d22, 0x784b, 0x6a56,
+ 0x7130, 0x5b4e, 0x7743, 0x5b4f, 0x4b24, 0x7860, 0x7b57, 0x6b4a,
+ 0x6021, 0x4e4d, 0x545c, 0x7d58, 0x5276, 0x7237, 0x7a76, 0x762a,
+ 0x7a77, 0x5866, 0x7431, 0x6852, 0x4a45, 0x4c6b, 0x626e, 0x623b,
+ 0x772d, 0x7861, 0x736c, 0x5e21, 0x647d, 0x636c, 0x5d2f, 0x5d30,
+ 0x4b37, 0x6853, 0x6123, 0x5260, 0x707e, 0x6926, 0x4b72, 0x6d73,
+ 0x5c59, 0x604d, 0x775a, 0x5b39, 0x4c2e, 0x5a5b, 0x4d47, 0x5d31,
+ 0x582f, 0x6323, 0x4e6f, 0x7273, 0x7833, 0x604e, 0x757d, 0x6b6c,
+ 0x5345, 0x7c6c, 0x525b, 0x546b, 0x5e22, 0x6566, 0x7030, 0x5544,
+ 0x6d74, 0x636d, 0x6842, 0x6d75, 0x577c, 0x6d3b, 0x762b, 0x7238,
+ 0x7648, 0x5366, 0x725d, 0x4f3f, 0x6b2c, 0x4f40, 0x6628, 0x7d69,
+ 0x4f41, 0x605f, 0x5e6c, 0x6022, 0x743f, 0x626f, 0x5971, 0x7147,
+ 0x4b38, 0x797e, 0x5b3a, 0x5a75, 0x766c, 0x5a5c, 0x7a64, 0x604f,
+ 0x5d32, 0x6629, 0x6f73, 0x736d, 0x6b7a, 0x7966, 0x4a5d, 0x555e,
+ 0x4a5e, 0x5f64, 0x667d, 0x752c, 0x6475, 0x6963, 0x6d4b, 0x4f64,
+ 0x5853, 0x5d33, 0x546c, 0x7239, 0x5f37, 0x4b4e, 0x7b58, 0x5059,
+ 0x5d52, 0x7774, 0x675c, 0x6425, 0x7c23, 0x5b3b, 0x723a, 0x697d,
+ 0x504a, 0x7556, 0x5945, 0x6434, 0x6d27, 0x6a3d, 0x667e, 0x7744,
+ 0x752d, 0x5960, 0x4a34, 0x7862, 0x4f42, 0x6c3e, 0x6534, 0x4d48,
+ 0x6e48, 0x6748, 0x4d49, 0x7937, 0x7168, 0x5972, 0x5b75, 0x4a35,
+ 0x5946, 0x5849, 0x592b, 0x6d3c, 0x5854, 0x5c5a, 0x623c, 0x7c6d,
+ 0x6c60, 0x527e, 0x6947, 0x662a, 0x6270, 0x7a3b, 0x752e, 0x7b2a,
+ 0x6c7b, 0x6c3f, 0x7c58, 0x5465, 0x7943, 0x6e62, 0x5769, 0x6d76,
+ 0x5e6d, 0x4c6c, 0x636e, 0x6854, 0x7a78, 0x5d34, 0x6435, 0x5830,
+ 0x5855, 0x746a, 0x4e39, 0x5661, 0x4f52, 0x5036, 0x4e22, 0x736e,
+ 0x7378, 0x5c4c, 0x504b, 0x7c24, 0x4d4a, 0x5754, 0x5e23, 0x6460,
+ 0x6e49, 0x625d, 0x757e, 0x542c, 0x5551, 0x5870, 0x7843, 0x6a57,
+ 0x7557, 0x583f, 0x7d40, 0x6b2d, 0x552a, 0x6728, 0x6e4a, 0x4a67,
+ 0x7863, 0x545d, 0x6a58, 0x7b59, 0x6d77, 0x6535, 0x502d, 0x7171,
+ 0x623d, 0x6348, 0x5955, 0x5f2a, 0x5b3c, 0x7864, 0x717a, 0x6536,
+ 0x736f, 0x7b5a, 0x6160, 0x592c, 0x756b, 0x6036, 0x6948, 0x4b4f,
+ 0x6349, 0x5e6e, 0x623e, 0x5c6f, 0x5625, 0x6271, 0x567e, 0x5921,
+ 0x5840, 0x5c5b, 0x6d3d, 0x5f38, 0x6a25, 0x572d, 0x7379, 0x6d78,
+ 0x7547, 0x614a, 0x6b63, 0x725e, 0x784c, 0x6a59, 0x5346, 0x5b66,
+ 0x752f, 0x4e70, 0x697e, 0x7b36, 0x6272, 0x4f72, 0x7739, 0x5973,
+ 0x614b, 0x5a5d, 0x5a39, 0x6b7b, 0x4b39, 0x6d79, 0x6060, 0x7440,
+ 0x7d3c, 0x5f31, 0x636f, 0x6023, 0x7d39, 0x7031, 0x4d4b, 0x6d3e,
+ 0x5540, 0x6370, 0x6d7a, 0x6964, 0x556d, 0x675d, 0x5476, 0x6537,
+ 0x5b67, 0x623f, 0x6e4b, 0x5774, 0x705d, 0x4e2b, 0x675e, 0x5656,
+ 0x614c, 0x6833, 0x656e, 0x5c22, 0x6050, 0x5535, 0x5521, 0x7b5b,
+ 0x794b, 0x4b73, 0x7425, 0x7a48, 0x5657, 0x6965, 0x7b5c, 0x7d50,
+ 0x7b76, 0x5a25, 0x5b3d, 0x6c62, 0x4d77, 0x705e, 0x7649, 0x5e6f,
+ 0x5331, 0x7c6e, 0x6843, 0x7148, 0x4e71, 0x796d, 0x7274, 0x6436,
+ 0x7539, 0x5c70, 0x6371, 0x6825, 0x723b, 0x5e24, 0x5a4c, 0x4a69,
+ 0x635a, 0x7c59, 0x6a5a, 0x7944, 0x6324, 0x7b5d, 0x6f4a, 0x6844,
+ 0x554c, 0x6b57, 0x592d, 0x7b2b, 0x5359, 0x5522, 0x765e, 0x5a76,
+ 0x6051, 0x6928, 0x7579, 0x7a2f, 0x6b7c, 0x606a, 0x6332, 0x5545,
+ 0x7163, 0x556e, 0x4d4c, 0x6d59, 0x5841, 0x7a6c, 0x716b, 0x7a3c,
+ 0x6662, 0x7a65, 0x627a, 0x4a36, 0x6437, 0x6a5b, 0x757a, 0x7b2c,
+ 0x4f43, 0x6b7d, 0x787a, 0x5f39, 0x6171, 0x5224, 0x757b, 0x505a,
+ 0x505b, 0x6a3e, 0x5931, 0x4a37, 0x5367, 0x7865, 0x5332, 0x6240,
+ 0x725f, 0x4d65, 0x792c, 0x4d4d, 0x6e2e, 0x562e, 0x576a, 0x6760,
+ 0x6b2e, 0x4f59, 0x5c4d, 0x6d7b, 0x5e70, 0x576b, 0x5e25, 0x5f57,
+ 0x5b50, 0x5b51, 0x5523, 0x7032, 0x5c5c, 0x4a68, 0x7866, 0x5c4e,
+ 0x6a5c, 0x5b52, 0x6933, 0x775b, 0x6328, 0x572e, 0x6061, 0x4b3a,
+ 0x6551, 0x505c, 0x5541, 0x584a, 0x6329, 0x6024, 0x6929, 0x5347,
+ 0x5c5d, 0x782e, 0x4c38, 0x502e, 0x5872, 0x634a, 0x4c2f, 0x542d,
+ 0x7651, 0x504c, 0x4a46, 0x5542, 0x4e3a, 0x4a47, 0x7a30, 0x5f58,
+ 0x753a, 0x656b, 0x6f74, 0x5d35, 0x4d2a, 0x6372, 0x7b77, 0x7750,
+ 0x7d3a, 0x7d61, 0x767e, 0x5140, 0x6845, 0x6438, 0x6168, 0x4c41,
+ 0x526d, 0x5b3e, 0x6062, 0x7a49, 0x614d, 0x4a38, 0x7260, 0x7149,
+ 0x5e71, 0x705f, 0x7844, 0x6e4c, 0x5e72, 0x6749, 0x6273, 0x6761,
+ 0x634b, 0x634c, 0x4f78, 0x6f2c, 0x7d7e, 0x7c25, 0x7a31, 0x5f59,
+ 0x6052, 0x745a, 0x714a, 0x4e23, 0x723c, 0x6c63, 0x6025, 0x772b,
+ 0x6b2f, 0x655e, 0x6124, 0x4d2b, 0x5974, 0x6826, 0x4d4e, 0x6169,
+ 0x7c6f, 0x6063, 0x6241, 0x4e24, 0x5e26, 0x6b7e, 0x6b5d, 0x7060,
+ 0x745b, 0x6274, 0x5348, 0x746b, 0x6e35, 0x7558, 0x555f, 0x5665,
+ 0x6b30, 0x7463, 0x634d, 0x7474, 0x7a32, 0x6f75, 0x4a5f, 0x6b31,
+ 0x6d3f, 0x7d49, 0x6426, 0x7924, 0x7033, 0x656c, 0x5167, 0x5947,
+ 0x6457, 0x6a5d, 0x5477, 0x5a3a, 0x5a4d, 0x794c, 0x615a, 0x5b3f,
+ 0x4c45, 0x6c50, 0x4b3b, 0x5e73, 0x692a, 0x5948, 0x6e63, 0x573d,
+ 0x4f44, 0x504d, 0x7c26, 0x717b, 0x7d52, 0x5141, 0x635b, 0x5349,
+ 0x5c4f, 0x4c6d, 0x5e27, 0x663b, 0x6c21, 0x4c39, 0x7b5e, 0x6762,
+ 0x5441, 0x5c28, 0x6242, 0x7358, 0x6553, 0x7359, 0x7346, 0x4d5b,
+ 0x4d2c, 0x7c43, 0x5467, 0x5142, 0x7925, 0x6855, 0x634e, 0x544a,
+ 0x5f5a, 0x7b5f, 0x6763, 0x787b, 0x634f, 0x7530, 0x5867, 0x5949,
+ 0x782f, 0x6f76, 0x5d36, 0x6e2f, 0x4d78, 0x5e38, 0x7c27, 0x777c,
+ 0x7731, 0x4e3b, 0x7421, 0x6e4d, 0x612e, 0x6c43, 0x4f7e, 0x783f,
+ 0x5862, 0x5368, 0x5e28, 0x7464, 0x6c42, 0x5975, 0x7945, 0x5d53,
+ 0x5671, 0x6c7c, 0x7c70, 0x6d40, 0x4a39, 0x6e64, 0x7261, 0x5e39,
+ 0x5672, 0x5e74, 0x5f5b, 0x5b53, 0x7a67, 0x5863, 0x7441, 0x5d37,
+ 0x7275, 0x542e, 0x5673, 0x5d38, 0x4f45, 0x5f5f, 0x723e, 0x7621,
+ 0x6b4b, 0x717c, 0x7347, 0x606b, 0x6d7c, 0x615b, 0x6e65, 0x5e75,
+ 0x7a53, 0x714b, 0x502f, 0x5d39, 0x5143, 0x7531, 0x6a46, 0x7061,
+ 0x762c, 0x7559, 0x706b, 0x5d3a, 0x723f, 0x7745, 0x5b22, 0x7276,
+ 0x4a3a, 0x7775, 0x4b65, 0x6e66, 0x6053, 0x4e25, 0x5658, 0x542f,
+ 0x6949, 0x534e, 0x7442, 0x4b66, 0x7121, 0x6b32, 0x7122, 0x6b33,
+ 0x7034, 0x4b74, 0x5430, 0x7332, 0x7b37, 0x756c, 0x6e67, 0x7432,
+ 0x756d, 0x4f73, 0x7062, 0x6e4e, 0x714c, 0x6538, 0x5775, 0x6373,
+ 0x4f65, 0x4f46, 0x7333, 0x6458, 0x4f79, 0x4f5a, 0x7a4d, 0x6663,
+ 0x7262, 0x756e, 0x4a3b, 0x635c, 0x4e72, 0x5659, 0x6e30, 0x7465,
+ 0x5842, 0x5c50, 0x4c6e, 0x5560, 0x764a, 0x7d4a, 0x5856, 0x744f,
+ 0x5626, 0x5c3e, 0x5b54, 0x5747, 0x727e, 0x714d, 0x6243, 0x5c5e,
+ 0x5c5f, 0x6f2d, 0x662b, 0x795d, 0x6a3f, 0x6f2e, 0x7450, 0x4e73,
+ 0x662c, 0x4e5e, 0x5579, 0x6374, 0x4d50, 0x5538, 0x777d, 0x5c29,
+ 0x5e76, 0x5c2a, 0x7263, 0x6934, 0x525c, 0x6966, 0x6376, 0x674a,
+ 0x504e, 0x5a77, 0x4a3c, 0x6e68, 0x5a5e, 0x7277, 0x627b, 0x4c26,
+ 0x5a3b, 0x6e69, 0x755a, 0x775c, 0x616a, 0x4e41, 0x5431, 0x7d31,
+ 0x663d, 0x7b2d, 0x7867, 0x614e, 0x7762, 0x756f, 0x4f47, 0x5432,
+ 0x4c6f, 0x5468, 0x6e4f, 0x7757, 0x6026, 0x5641, 0x615c, 0x7063,
+ 0x7164, 0x5c71, 0x5627, 0x7475, 0x714e, 0x7264, 0x5030, 0x6c6f,
+ 0x793a, 0x6b35, 0x546d, 0x6244, 0x6967, 0x6b34, 0x6a21, 0x783c,
+ 0x4e26, 0x7946, 0x7c5a, 0x5433, 0x5339, 0x6a5e, 0x692b, 0x6161,
+ 0x534f, 0x7476, 0x6a40, 0x614f, 0x4c3a, 0x6e6a, 0x7064, 0x7334,
+ 0x546e, 0x7240, 0x7165, 0x7443, 0x6054, 0x6b36, 0x5721, 0x4b68,
+ 0x792d, 0x692d, 0x5864, 0x7a33, 0x6245, 0x7c3d, 0x6c44, 0x5831,
+ 0x5c2b, 0x5524, 0x6b69, 0x683b, 0x5857, 0x7b2e, 0x5161, 0x5b40,
+ 0x753e, 0x5e77, 0x4a7b, 0x7746, 0x4f48, 0x6150, 0x6e50, 0x6974,
+ 0x4e74, 0x554d, 0x4f5b, 0x5d3b, 0x4e2c, 0x6968, 0x5434, 0x6447,
+ 0x755b, 0x7a41, 0x5e29, 0x5478, 0x6f77, 0x5333, 0x6b37, 0x6f78,
+ 0x755c, 0x6d4c, 0x5b55, 0x714f, 0x7150, 0x7532, 0x592e, 0x552c,
+ 0x6246, 0x7d23, 0x7b65, 0x5f2b, 0x6275, 0x762d, 0x7533, 0x7035,
+ 0x6125, 0x755d, 0x6c22, 0x6d7d, 0x7534, 0x7b38, 0x5b23, 0x564a,
+ 0x4b59, 0x6554, 0x737a, 0x6b38, 0x6037, 0x576c, 0x716c, 0x652f,
+ 0x5561, 0x576d, 0x5151, 0x6172, 0x6f79, 0x5d3c, 0x765c, 0x7065,
+ 0x7444, 0x6969, 0x737b, 0x546f, 0x4c22, 0x777e, 0x5f3c, 0x6b4d,
+ 0x5037, 0x5642, 0x682d, 0x6f2f, 0x4b25, 0x4b69, 0x7a68, 0x4c46,
+ 0x6667, 0x6a47, 0x5b24, 0x4f49, 0x627c, 0x6f7a, 0x6b5e, 0x7548,
+ 0x545e, 0x6055, 0x6f30, 0x6247, 0x592f, 0x7967, 0x6765, 0x4f4a,
+ 0x6151, 0x6248, 0x6f7b, 0x7a79, 0x5c72, 0x6027, 0x7868, 0x4b6a,
+ 0x4b3c, 0x5662, 0x755e, 0x755f, 0x6e36, 0x6276, 0x534a, 0x6f7c,
+ 0x5144, 0x6f31, 0x5145, 0x505e, 0x5961, 0x6038, 0x4d51, 0x7339,
+ 0x674c, 0x5628, 0x4e27, 0x5435, 0x6448, 0x5334, 0x6b39, 0x4b75,
+ 0x765d, 0x7123, 0x4c47, 0x694a, 0x6170, 0x7560, 0x7b2f, 0x4b51,
+ 0x7b60, 0x7265, 0x6c70, 0x706c, 0x6e6b, 0x694b, 0x4c70, 0x572f,
+ 0x7321, 0x7c75, 0x7124, 0x6056, 0x6f32, 0x7451, 0x7721, 0x7151,
+ 0x4a7c, 0x4a7d, 0x4e4e, 0x7348, 0x733a, 0x6d7e, 0x5a26, 0x606c,
+ 0x784d, 0x4b52, 0x6b4e, 0x7958, 0x7959, 0x4a60, 0x5a4a, 0x4b26,
+ 0x4a48, 0x796e, 0x5b6c, 0x5031, 0x556f, 0x6673, 0x6722, 0x6459,
+ 0x6461, 0x7c44, 0x796f, 0x4f74, 0x7766, 0x4e3c, 0x7445, 0x5c23,
+ 0x5d3d, 0x7446, 0x7821, 0x6856, 0x5b41, 0x7066, 0x6439, 0x766d,
+ 0x792e, 0x5d3e, 0x5730, 0x5868, 0x4b3d, 0x795a, 0x784e, 0x7970,
+ 0x606d, 0x6333, 0x7433, 0x6a42, 0x7266, 0x7036, 0x5b56, 0x6b64,
+ 0x7267, 0x5755, 0x5436, 0x7968, 0x5741, 0x6555, 0x696a, 0x574c,
+ 0x5369, 0x6249, 0x7c5b, 0x4d2d, 0x4c30, 0x6a22, 0x6476, 0x5040,
+ 0x7037, 0x6e21, 0x5776, 0x624a, 0x624b, 0x7a4f, 0x6b5f, 0x564b,
+ 0x7434, 0x6d4d, 0x6452, 0x6a29, 0x643a, 0x7322, 0x4d52, 0x764b,
+ 0x7166, 0x6d41, 0x683c, 0x6e51, 0x7067, 0x624c, 0x642a, 0x7561,
+ 0x6d5a, 0x576e, 0x5171, 0x696b, 0x696c, 0x6064, 0x5a27, 0x5d54,
+ 0x6a23, 0x5643, 0x5674, 0x5a5f, 0x6f33, 0x624d, 0x6f7d, 0x7268,
+ 0x6f45, 0x6767, 0x577d, 0x674e, 0x5f5c, 0x7947, 0x5976, 0x5f2c,
+ 0x565a, 0x5c24, 0x7038, 0x557a, 0x6477, 0x5644, 0x746c, 0x6f7e,
+ 0x7021, 0x5e2a, 0x5a3c, 0x587c, 0x7a54, 0x6c65, 0x7c28, 0x6c66,
+ 0x584b, 0x7b39, 0x6453, 0x4d79, 0x4f53, 0x4a6a, 0x4f54, 0x783d,
+ 0x7447, 0x6a5f, 0x795b, 0x5437, 0x6b65, 0x6152, 0x6a24, 0x7a42,
+ 0x7b61, 0x7a6d, 0x7022, 0x4c71, 0x7a23, 0x6277, 0x624e, 0x6975,
+ 0x616b, 0x6768, 0x6857, 0x5a78, 0x544b, 0x7776, 0x5645, 0x5469,
+ 0x7a7a, 0x4c72, 0x775d, 0x5e3a, 0x4e28, 0x7039, 0x647e, 0x6449,
+ 0x6454, 0x6a43, 0x6f34, 0x573e, 0x7b62, 0x4d53, 0x6f35, 0x7a69,
+ 0x7926, 0x5f3d, 0x7747, 0x787d, 0x787c, 0x5e2b, 0x5b68, 0x635d,
+ 0x6162, 0x5146, 0x7650, 0x6b66, 0x5a79, 0x6c47, 0x5e78, 0x7869,
+ 0x635e, 0x4e75, 0x7a43, 0x6557, 0x6c48, 0x7349, 0x643b, 0x662e,
+ 0x6f36, 0x5c3f, 0x4e3d, 0x5843, 0x504f, 0x4f7a, 0x734a, 0x6057,
+ 0x5147, 0x692e, 0x683d, 0x7a44, 0x624f, 0x7a45, 0x7938, 0x5c60,
+ 0x7b30, 0x5829, 0x655f, 0x7927, 0x766e, 0x764c, 0x6278, 0x6c71,
+ 0x5a60, 0x7152, 0x524c, 0x4f4b, 0x4a3d, 0x5d3f, 0x766f, 0x5e79,
+ 0x7a34, 0x552d, 0x7167, 0x5e3e, 0x5c40, 0x5148, 0x5149, 0x783e,
+ 0x4b76, 0x5479, 0x7562, 0x6153, 0x5869, 0x787e, 0x4f4c, 0x7d24,
+ 0x4e76, 0x7a50, 0x4c73, 0x663e, 0x762e, 0x5570, 0x514a, 0x7c3e,
+ 0x5571, 0x4d69, 0x7a35, 0x6250, 0x7477, 0x4d54, 0x6723, 0x5b25,
+ 0x6251, 0x5722, 0x7763, 0x6a26, 0x5021, 0x4e5a, 0x7b6b, 0x5b26,
+ 0x5b5e, 0x5865, 0x6a60, 0x582a, 0x6560, 0x565b, 0x6f46, 0x786a,
+ 0x6455, 0x4e77, 0x6058, 0x576f, 0x746d, 0x4d66, 0x4c74, 0x7563,
+ 0x644a, 0x5c61, 0x7948, 0x7c3f, 0x6827, 0x5844, 0x4b3e, 0x5c2e,
+ 0x5777, 0x7068, 0x5d40, 0x4f4d, 0x5c73, 0x5930, 0x6669, 0x643c,
+ 0x6a44, 0x646c, 0x6465, 0x7b78, 0x4c3b, 0x643d, 0x4d5c, 0x5977,
+ 0x5d5f, 0x6d4e, 0x5950, 0x6523, 0x794d, 0x4d2e, 0x4f4e, 0x762f,
+ 0x7d53, 0x6b6d, 0x565c, 0x6524, 0x5536, 0x565d, 0x7969, 0x6724,
+ 0x5663, 0x514b, 0x5664, 0x5572, 0x5e7a, 0x5778, 0x586a, 0x4f55,
+ 0x587d, 0x582b, 0x7d4b, 0x7c5c, 0x6028, 0x5573, 0x7d59, 0x4c23,
+ 0x5979, 0x536a, 0x7575, 0x6f47, 0x535a, 0x5a3d, 0x6828, 0x5c2f,
+ 0x7023, 0x4d55, 0x6029, 0x5e2c, 0x703a, 0x6e31, 0x6e32, 0x764d,
+ 0x6e52, 0x5646, 0x6065, 0x733b, 0x6561, 0x644b, 0x5723, 0x5b42,
+ 0x4a7e, 0x4f4f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026,
+ 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e,
+ 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
+ 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e,
+ 0x303f, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
+ 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
+ 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
+ 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
+ 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066,
+ 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e,
+ 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+ 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130,
+ 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
+ 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
+ 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
+ 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
+ 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
+ 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160,
+ 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168,
+ 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, 0x3170,
+ 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178,
+ 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x3221, 0x3222,
+ 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x322a,
+ 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x3230, 0x3231, 0x3232,
+ 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, 0x3238, 0x3239, 0x323a,
+ 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, 0x3240, 0x3241, 0x3242,
+ 0x3243, 0x3244, 0x3245, 0x3246, 0x3247, 0x3248, 0x3249, 0x324a,
+ 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 0x3250, 0x3251, 0x3252,
+ 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, 0x3259, 0x325a,
+ 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, 0x3260, 0x3261, 0x3262,
+ 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326a,
+ 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, 0x3270, 0x3271, 0x3272,
+ 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, 0x3278, 0x3279, 0x327a,
+ 0x327b, 0x327c, 0x327d, 0x327e, 0x3321, 0x3322, 0x3323, 0x3324,
+ 0x3325, 0x3326, 0x3327, 0x3328, 0x3329, 0x332a, 0x332b, 0x332c,
+ 0x332d, 0x332e, 0x332f, 0x3330, 0x3331, 0x3332, 0x3333, 0x3334,
+ 0x3335, 0x3336, 0x3337, 0x3338, 0x3339, 0x333a, 0x333b, 0x333c,
+ 0x333d, 0x333e, 0x333f, 0x3340, 0x3341, 0x3342, 0x3343, 0x3344,
+ 0x3345, 0x3346, 0x3347, 0x3348, 0x3349, 0x334a, 0x334b, 0x334c,
+ 0x334d, 0x334e, 0x334f, 0x3350, 0x3351, 0x3352, 0x3353, 0x3354,
+ 0x3355, 0x3356, 0x3357, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c,
+ 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364,
+ 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c,
+ 0x336d, 0x336e, 0x336f, 0x3370, 0x3371, 0x3372, 0x3373, 0x3374,
+ 0x3375, 0x3376, 0x3377, 0x3378, 0x3379, 0x337a, 0x337b, 0x337c,
+ 0x337d, 0x337e, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426,
+ 0x3427, 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e,
+ 0x342f, 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436,
+ 0x3437, 0x3438, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e,
+ 0x343f, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446,
+ 0x3447, 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e,
+ 0x344f, 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456,
+ 0x3457, 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e,
+ 0x345f, 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466,
+ 0x3467, 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e,
+ 0x346f, 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476,
+ 0x3477, 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e,
+ 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528,
+ 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, 0x3530,
+ 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538,
+ 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, 0x3540,
+ 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, 0x3548,
+ 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, 0x3550,
+ 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, 0x3558,
+ 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, 0x3560,
+ 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568,
+ 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570,
+ 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578,
+ 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x3621, 0x3622,
+ 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, 0x3628, 0x3629, 0x362a,
+ 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, 0x3630, 0x3631, 0x3632,
+ 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, 0x363a,
+ 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, 0x3640, 0x3641, 0x3642,
+ 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364a,
+ 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, 0x3650, 0x3651, 0x3652,
+ 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365a,
+ 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, 0x3660, 0x3661, 0x3662,
+ 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, 0x3668, 0x3669, 0x366a,
+ 0x366b, 0x366c, 0x366d, 0x366e, 0x366f, 0x3670, 0x3671, 0x3672,
+ 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, 0x3679, 0x367a,
+ 0x367b, 0x367c, 0x367d, 0x367e, 0x3721, 0x3722, 0x3723, 0x3724,
+ 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372a, 0x372b, 0x372c,
+ 0x372d, 0x372e, 0x372f, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
+ 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
+ 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
+ 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
+ 0x374d, 0x374e, 0x374f, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754,
+ 0x3755, 0x3756, 0x3757, 0x3758, 0x3759, 0x375a, 0x375b, 0x375c,
+ 0x375d, 0x375e, 0x375f, 0x3760, 0x3761, 0x3762, 0x3763, 0x3764,
+ 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376a, 0x376b, 0x376c,
+ 0x376d, 0x376e, 0x376f, 0x3770, 0x3771, 0x3772, 0x3773, 0x3774,
+ 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377a, 0x377b, 0x377c,
+ 0x377d, 0x377e, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826,
+ 0x3827, 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e,
+ 0x382f, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836,
+ 0x3837, 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e,
+ 0x383f, 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846,
+ 0x3847, 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e,
+ 0x384f, 0x3850, 0x3851, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856,
+ 0x3857, 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e,
+ 0x385f, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3866,
+ 0x3867, 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e,
+ 0x386f, 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876,
+ 0x3877, 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e,
+ 0x3921, 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, 0x3928,
+ 0x3929, 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, 0x3930,
+ 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938,
+ 0x3939, 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, 0x3940,
+ 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948,
+ 0x3949, 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, 0x3950,
+ 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958,
+ 0x3959, 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, 0x3960,
+ 0x3961, 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, 0x3968,
+ 0x3969, 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, 0x3970,
+ 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978,
+ 0x3979, 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x3a21, 0x3a22,
+ 0x3a23, 0x3a24, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29, 0x3a2a,
+ 0x3a2b, 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a32,
+ 0x3a33, 0x3a34, 0x3a35, 0x3a36, 0x3a37, 0x3a38, 0x3a39, 0x3a3a,
+ 0x3a3b, 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, 0x3a40, 0x3a41, 0x3a42,
+ 0x3a43, 0x3a44, 0x3a45, 0x3a46, 0x3a47, 0x3a48, 0x3a49, 0x3a4a,
+ 0x3a4b, 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, 0x3a50, 0x3a51, 0x3a52,
+ 0x3a53, 0x3a54, 0x3a55, 0x3a56, 0x3a57, 0x3a58, 0x3a59, 0x3a5a,
+ 0x3a5b, 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, 0x3a60, 0x3a61, 0x3a62,
+ 0x3a63, 0x3a64, 0x3a65, 0x3a66, 0x3a67, 0x3a68, 0x3a69, 0x3a6a,
+ 0x3a6b, 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, 0x3a70, 0x3a71, 0x3a72,
+ 0x3a73, 0x3a74, 0x3a75, 0x3a76, 0x3a77, 0x3a78, 0x3a79, 0x3a7a,
+ 0x3a7b, 0x3a7c, 0x3a7d, 0x3a7e, 0x3b21, 0x3b22, 0x3b23, 0x3b24,
+ 0x3b25, 0x3b26, 0x3b27, 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c,
+ 0x3b2d, 0x3b2e, 0x3b2f, 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34,
+ 0x3b35, 0x3b36, 0x3b37, 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3c,
+ 0x3b3d, 0x3b3e, 0x3b3f, 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44,
+ 0x3b45, 0x3b46, 0x3b47, 0x3b48, 0x3b49, 0x3b4a, 0x3b4b, 0x3b4c,
+ 0x3b4d, 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b54,
+ 0x3b55, 0x3b56, 0x3b57, 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c,
+ 0x3b5d, 0x3b5e, 0x3b5f, 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64,
+ 0x3b65, 0x3b66, 0x3b67, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c,
+ 0x3b6d, 0x3b6e, 0x3b6f, 0x3b70, 0x3b71, 0x3b72, 0x3b73, 0x3b74,
+ 0x3b75, 0x3b76, 0x3b77, 0x3b78, 0x3b79, 0x3b7a, 0x3b7b, 0x3b7c,
+ 0x3b7d, 0x3b7e, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26,
+ 0x3c27, 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2d, 0x3c2e,
+ 0x3c2f, 0x3c30, 0x3c31, 0x3c32, 0x3c33, 0x3c34, 0x3c35, 0x3c36,
+ 0x3c37, 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e,
+ 0x3c3f, 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46,
+ 0x3c47, 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e,
+ 0x3c4f, 0x3c50, 0x3c51, 0x3c52, 0x3c53, 0x3c54, 0x3c55, 0x3c56,
+ 0x3c57, 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e,
+ 0x3c5f, 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66,
+ 0x3c67, 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e,
+ 0x3c6f, 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76,
+ 0x3c77, 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e,
+ 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, 0x3d28,
+ 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, 0x3d30,
+ 0x3d31, 0x3d32, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, 0x3d38,
+ 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40,
+ 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, 0x3d48,
+ 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, 0x3d50,
+ 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, 0x3d58,
+ 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, 0x3d60,
+ 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, 0x3d68,
+ 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, 0x3d70,
+ 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, 0x3d78,
+ 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3e21, 0x3e22,
+ 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x3e29, 0x3e2a,
+ 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, 0x3e30, 0x3e31, 0x3e32,
+ 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, 0x3e38, 0x3e39, 0x3e3a,
+ 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x3e41, 0x3e42,
+ 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, 0x3e48, 0x3e49, 0x3e4a,
+ 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, 0x3e50, 0x3e51, 0x3e52,
+ 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, 0x3e58, 0x3e59, 0x3e5a,
+ 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, 0x3e60, 0x3e61, 0x3e62,
+ 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, 0x3e68, 0x3e69, 0x3e6a,
+ 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, 0x3e70, 0x3e71, 0x3e72,
+ 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, 0x3e78, 0x3e79, 0x3e7a,
+ 0x3e7b, 0x3e7c, 0x3e7d, 0x3e7e, 0x3f21, 0x3f22, 0x3f23, 0x3f24,
+ 0x3f25, 0x3f26, 0x3f27, 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c,
+ 0x3f2d, 0x3f2e, 0x3f2f, 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34,
+ 0x3f35, 0x3f36, 0x3f37, 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c,
+ 0x3f3d, 0x3f3e, 0x3f3f, 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44,
+ 0x3f45, 0x3f46, 0x3f47, 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c,
+ 0x3f4d, 0x3f4e, 0x3f4f, 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54,
+ 0x3f55, 0x3f56, 0x3f57, 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c,
+ 0x3f5d, 0x3f5e, 0x3f5f, 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64,
+ 0x3f65, 0x3f66, 0x3f67, 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c,
+ 0x3f6d, 0x3f6e, 0x3f6f, 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74,
+ 0x3f75, 0x3f76, 0x3f77, 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c,
+ 0x3f7d, 0x3f7e, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026,
+ 0x4027, 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e,
+ 0x402f, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036,
+ 0x4037, 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e,
+ 0x403f, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046,
+ 0x4047, 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e,
+ 0x404f, 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056,
+ 0x4057, 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e,
+ 0x405f, 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066,
+ 0x4067, 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e,
+ 0x406f, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076,
+ 0x4077, 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e,
+ 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128,
+ 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, 0x4130,
+ 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138,
+ 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, 0x4140,
+ 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, 0x4148,
+ 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, 0x4150,
+ 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, 0x4158,
+ 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, 0x4160,
+ 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168,
+ 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, 0x4170,
+ 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178,
+ 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x4221, 0x4222,
+ 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a,
+ 0x422b, 0x422c, 0x422d, 0x422e, 0x422f, 0x4230, 0x4231, 0x4232,
+ 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, 0x4238, 0x4239, 0x423a,
+ 0x423b, 0x423c, 0x423d, 0x423e, 0x423f, 0x4240, 0x4241, 0x4242,
+ 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, 0x4248, 0x4249, 0x424a,
+ 0x424b, 0x424c, 0x424d, 0x424e, 0x424f, 0x4250, 0x4251, 0x4252,
+ 0x4253, 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a,
+ 0x425b, 0x425c, 0x425d, 0x425e, 0x425f, 0x4260, 0x4261, 0x4262,
+ 0x4263, 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269, 0x426a,
+ 0x426b, 0x426c, 0x426d, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272,
+ 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a,
+ 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324,
+ 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c,
+ 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334,
+ 0x4335, 0x4336, 0x4337, 0x4338, 0x4339, 0x433a, 0x433b, 0x433c,
+ 0x433d, 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344,
+ 0x4345, 0x4346, 0x4347, 0x4348, 0x4349, 0x434a, 0x434b, 0x434c,
+ 0x434d, 0x434e, 0x434f, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354,
+ 0x4355, 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x435c,
+ 0x435d, 0x435e, 0x435f, 0x4360, 0x4361, 0x4362, 0x4363, 0x4364,
+ 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436a, 0x436b, 0x436c,
+ 0x436d, 0x436e, 0x436f, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374,
+ 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437a, 0x437b, 0x437c,
+ 0x437d, 0x437e, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426,
+ 0x4427, 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e,
+ 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436,
+ 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e,
+ 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446,
+ 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e,
+ 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456,
+ 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e,
+ 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466,
+ 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e,
+ 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476,
+ 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e,
+ 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528,
+ 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, 0x4530,
+ 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538,
+ 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, 0x4540,
+ 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, 0x4548,
+ 0x4549, 0x454a, 0x454b, 0x454c, 0x454d, 0x454e, 0x454f, 0x4550,
+ 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, 0x4558,
+ 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, 0x4560,
+ 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, 0x4568,
+ 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, 0x4570,
+ 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578,
+ 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, 0x4622,
+ 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462a,
+ 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, 0x4632,
+ 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, 0x463a,
+ 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, 0x4642,
+ 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, 0x464a,
+ 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, 0x4652,
+ 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465a,
+ 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4661, 0x4662,
+ 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669, 0x466a,
+ 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671, 0x4672,
+ 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679, 0x467a,
+ 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723, 0x4724,
+ 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b, 0x472c,
+ 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733, 0x4734,
+ 0x4735, 0x4736, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, 0x473c,
+ 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, 0x4744,
+ 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, 0x474c,
+ 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, 0x4754,
+ 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, 0x475c,
+ 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, 0x4764,
+ 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, 0x476c,
+ 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774,
+ 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, 0x477c,
+ 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826,
+ 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e,
+ 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836,
+ 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e,
+ 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846,
+ 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x484d, 0x484e,
+ 0x484f, 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856,
+ 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e,
+ 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866,
+ 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e,
+ 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876,
+ 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e,
+ 0x4b50, 0x4b56, 0x4b67, 0x4d4f, 0x4d68, 0x4e2d, 0x4f7b, 0x5022,
+ 0x5038, 0x5050, 0x505d, 0x5154, 0x5155, 0x5158, 0x515b, 0x515c,
+ 0x515d, 0x515e, 0x515f, 0x5160, 0x5162, 0x5163, 0x5164, 0x5165,
+ 0x5166, 0x5168, 0x5169, 0x516a, 0x516b, 0x516d, 0x516f, 0x5170,
+ 0x5172, 0x5176, 0x517a, 0x517c, 0x517d, 0x517e, 0x5222, 0x5223,
+ 0x5227, 0x5228, 0x5229, 0x522a, 0x522b, 0x522d, 0x5232, 0x523e,
+ 0x5242, 0x5243, 0x5244, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a,
+ 0x524b, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252, 0x5253,
+ 0x5254, 0x5255, 0x5256, 0x5257, 0x5259, 0x525a, 0x525e, 0x525f,
+ 0x5261, 0x5262, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269,
+ 0x526a, 0x526b, 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, 0x5275,
+ 0x5277, 0x5278, 0x5466, 0x547c, 0x5525, 0x552b, 0x552e, 0x5638,
+ 0x564d, 0x574b, 0x5764, 0x5b45, 0x5b64, 0x5c25, 0x5d25, 0x5d55,
+ 0x5d74, 0x5e7c, 0x5e7e, 0x5f33, 0x5f61, 0x5f68, 0x6071, 0x612d,
+ 0x616d, 0x6375, 0x6421, 0x6429, 0x652e, 0x6531, 0x6532, 0x6539,
+ 0x653b, 0x653c, 0x6544, 0x654e, 0x6550, 0x6552, 0x6556, 0x657a,
+ 0x657b, 0x657c, 0x657e, 0x6621, 0x6624, 0x6627, 0x662d, 0x662f,
+ 0x6630, 0x6631, 0x6633, 0x6637, 0x6638, 0x663c, 0x6644, 0x6646,
+ 0x6647, 0x664a, 0x6652, 0x6656, 0x6659, 0x665c, 0x665f, 0x6661,
+ 0x6664, 0x6665, 0x6666, 0x6668, 0x666a, 0x666b, 0x666c, 0x666f,
+ 0x6671, 0x6672, 0x6675, 0x6676, 0x6677, 0x6679, 0x6721, 0x6726,
+ 0x6729, 0x672a, 0x672c, 0x672d, 0x6730, 0x673f, 0x6741, 0x6746,
+ 0x6747, 0x674b, 0x674d, 0x674f, 0x6750, 0x6753, 0x675f, 0x6764,
+ 0x6766, 0x6777, 0x6867, 0x6868, 0x6870, 0x6871, 0x6877, 0x6879,
+ 0x687b, 0x687e, 0x6927, 0x692c, 0x694c, 0x6977, 0x6a41, 0x6a65,
+ 0x6a74, 0x6a77, 0x6a7c, 0x6a7e, 0x6b24, 0x6b27, 0x6b29, 0x6b2a,
+ 0x6b3a, 0x6b3b, 0x6b3d, 0x6b41, 0x6b42, 0x6b46, 0x6b47, 0x6b4c,
+ 0x6b4f, 0x6b50, 0x6b51, 0x6b52, 0x6b58, 0x6c26, 0x6c27, 0x6c2a,
+ 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c35, 0x6c38, 0x6c3a, 0x6c40,
+ 0x6c41, 0x6c45, 0x6c46, 0x6c49, 0x6c4a, 0x6c55, 0x6c5d, 0x6c5e,
+ 0x6c61, 0x6c64, 0x6c67, 0x6c68, 0x6c77, 0x6c78, 0x6c7a, 0x6d21,
+ 0x6d22, 0x6d23, 0x6d6e, 0x6e5b, 0x723d, 0x727a, 0x7331, 0x7427,
+ 0x746e, 0x7674, 0x7676, 0x7738, 0x7748, 0x7753, 0x785b, 0x7870,
+ 0x7a21, 0x7a22, 0x7a66, 0x7c29, 0x2321, 0x2322, 0x2323, 0x2324,
+ 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c,
+ 0x232d, 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334,
+ 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c,
+ 0x233d, 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344,
+ 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c,
+ 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354,
+ 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x212c,
+ 0x235d, 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364,
+ 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c,
+ 0x236d, 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374,
+ 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c,
+ 0x237d, 0x2226, 0x214b, 0x214c, 0x217e, 0x237e, 0x214d, 0x235c,
+};
+
+static const Summary16 ksc5601_uni2indx_page00[70] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x2592 }, { 6, 0xf7df },
+ { 20, 0x0040 }, { 21, 0xc181 }, { 26, 0x0040 }, { 27, 0x4181 },
+ /* 0x0100 */
+ { 31, 0x0000 }, { 31, 0x0002 }, { 32, 0x00c0 }, { 34, 0x810e },
+ { 39, 0x0e07 }, { 45, 0x000c }, { 47, 0x00c0 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ /* 0x0200 */
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0080 }, { 50, 0x2f01 }, { 56, 0x0000 }, { 56, 0x0000 },
+ /* 0x0300 */
+ { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
+ { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
+ { 56, 0x0000 }, { 56, 0xfffe }, { 71, 0x03fb }, { 80, 0xfffe },
+ { 95, 0x03fb }, { 104, 0x0000 }, { 104, 0x0000 }, { 104, 0x0000 },
+ /* 0x0400 */
+ { 104, 0x0002 }, { 105, 0xffff }, { 121, 0xffff }, { 137, 0xffff },
+ { 153, 0xffff }, { 169, 0x0002 },
+};
+static const Summary16 ksc5601_uni2indx_page20[103] = {
+ /* 0x2000 */
+ { 170, 0x0000 }, { 170, 0x3320 }, { 175, 0x0063 }, { 179, 0x080d },
+ { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x8010 },
+ { 185, 0x001e }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 },
+ { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 },
+ /* 0x2100 */
+ { 189, 0x0208 }, { 191, 0x0048 }, { 193, 0x0846 }, { 197, 0x0000 },
+ { 197, 0x0000 }, { 197, 0x7818 }, { 203, 0x03ff }, { 213, 0x03ff },
+ { 223, 0x0000 }, { 223, 0x03ff }, { 233, 0x0000 }, { 233, 0x0000 },
+ { 233, 0x0000 }, { 233, 0x0014 }, { 235, 0x0000 }, { 235, 0x0000 },
+ /* 0x2200 */
+ { 235, 0x898d }, { 242, 0x6402 }, { 246, 0x5fa1 }, { 255, 0x3030 },
+ { 259, 0x0000 }, { 259, 0x0004 }, { 260, 0x0c33 }, { 266, 0x0000 },
+ { 266, 0x00cc }, { 270, 0x0200 }, { 271, 0x0020 }, { 272, 0x0000 },
+ { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 },
+ /* 0x2300 */
+ { 272, 0x0000 }, { 272, 0x0004 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ /* 0x2400 */
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x7fff }, { 288, 0xfff0 },
+ { 300, 0x0007 }, { 303, 0xf000 }, { 307, 0xffff }, { 323, 0x003f },
+ { 329, 0x0000 }, { 329, 0xffff }, { 345, 0x03ff }, { 355, 0x0000 },
+ /* 0x2500 */
+ { 355, 0xf00f }, { 363, 0xffff }, { 379, 0xffff }, { 395, 0xffff },
+ { 411, 0x0fff }, { 423, 0x0000 }, { 423, 0x0000 }, { 423, 0x0000 },
+ { 423, 0x0000 }, { 423, 0x0004 }, { 424, 0x03fb }, { 433, 0x30cc },
+ { 439, 0xc9c3 }, { 447, 0x0003 }, { 449, 0x0000 }, { 449, 0x0000 },
+ /* 0x2600 */
+ { 449, 0xc060 }, { 453, 0x5000 }, { 455, 0x0000 }, { 455, 0x0000 },
+ { 455, 0x0005 }, { 457, 0x0000 }, { 457, 0x37bb },
+};
+static const Summary16 ksc5601_uni2indx_page30[62] = {
+ /* 0x3000 */
+ { 468, 0xff0f }, { 480, 0x003b }, { 485, 0x0000 }, { 485, 0x0000 },
+ { 485, 0xfffe }, { 500, 0xffff }, { 516, 0xffff }, { 532, 0xffff },
+ { 548, 0xffff }, { 564, 0x000f }, { 568, 0xfffe }, { 583, 0xffff },
+ { 599, 0xffff }, { 615, 0xffff }, { 631, 0xffff }, { 647, 0x007f },
+ /* 0x3100 */
+ { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0xfffe },
+ { 669, 0xffff }, { 685, 0xffff }, { 701, 0xffff }, { 717, 0xffff },
+ { 733, 0x7fff }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 },
+ { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 },
+ /* 0x3200 */
+ { 748, 0xffff }, { 764, 0x1fff }, { 777, 0x0000 }, { 777, 0x0000 },
+ { 777, 0x0000 }, { 777, 0x0000 }, { 777, 0xffff }, { 793, 0x8fff },
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ /* 0x3300 */
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ { 806, 0xff1f }, { 819, 0xffff }, { 835, 0xffff }, { 851, 0xffff },
+ { 867, 0x87ff }, { 879, 0x3949 },
+};
+static const Summary16 ksc5601_uni2indx_page4e[1306] = {
+ /* 0x4e00 */
+ { 886, 0x2f8b }, { 895, 0x4372 }, { 902, 0x2000 }, { 903, 0x0b04 },
+ { 907, 0xe82c }, { 914, 0xe340 }, { 920, 0x2800 }, { 922, 0x40c8 },
+ { 926, 0x5944 }, { 932, 0x4937 }, { 940, 0x7976 }, { 950, 0x0440 },
+ { 952, 0x2c93 }, { 959, 0xa3f0 }, { 967, 0x0038 }, { 970, 0x08c5 },
+ /* 0x4f00 */
+ { 975, 0xee02 }, { 982, 0x0003 }, { 984, 0x8000 }, { 985, 0x3550 },
+ { 991, 0xe1c8 }, { 998, 0x1e23 }, { 1005, 0x8200 }, { 1007, 0xc449 },
+ { 1013, 0xad5a }, { 1022, 0x2942 }, { 1027, 0xc000 }, { 1029, 0x8060 },
+ { 1032, 0x461c }, { 1038, 0xa49a }, { 1045, 0xc003 }, { 1049, 0x052a },
+ /* 0x5000 */
+ { 1054, 0x2a44 }, { 1059, 0xd646 }, { 1067, 0x3dda }, { 1077, 0x0800 },
+ { 1078, 0x8388 }, { 1083, 0x1420 }, { 1086, 0x0020 }, { 1087, 0x0170 },
+ { 1091, 0x2021 }, { 1094, 0x0302 }, { 1097, 0x3000 }, { 1099, 0x40ac },
+ { 1104, 0x8620 }, { 1108, 0x4462 }, { 1113, 0x20a0 }, { 1116, 0x8a00 },
+ /* 0x5100 */
+ { 1119, 0x0253 }, { 1124, 0x8004 }, { 1126, 0x0402 }, { 1128, 0x1484 },
+ { 1132, 0x7bfb }, { 1145, 0x1004 }, { 1147, 0x7fa4 }, { 1157, 0x11e2 },
+ { 1163, 0x2441 }, { 1167, 0x00a4 }, { 1170, 0x1421 }, { 1174, 0x20c0 },
+ { 1177, 0x3a50 }, { 1183, 0x7000 }, { 1186, 0x0002 }, { 1187, 0x2743 },
+ /* 0x5200 */
+ { 1194, 0x45c9 }, { 1201, 0x2082 }, { 1204, 0x4630 }, { 1209, 0x0fc1 },
+ { 1216, 0x3c88 }, { 1222, 0x2850 }, { 1226, 0x8602 }, { 1230, 0xa024 },
+ { 1234, 0x2388 }, { 1239, 0x8806 }, { 1243, 0x0e19 }, { 1249, 0x4000 },
+ { 1250, 0x22aa }, { 1256, 0xeb64 }, { 1265, 0x001c }, { 1268, 0xcd28 },
+ /* 0x5300 */
+ { 1275, 0xa120 }, { 1279, 0x02e1 }, { 1284, 0x840b }, { 1289, 0x8200 },
+ { 1291, 0x279b }, { 1300, 0x549e }, { 1308, 0x8141 }, { 1312, 0xa0b3 },
+ { 1319, 0x0010 }, { 1320, 0x8508 }, { 1324, 0x2061 }, { 1328, 0x0800 },
+ { 1329, 0x2f08 }, { 1335, 0x08d0 }, { 1339, 0xbe3e }, { 1350, 0x010f },
+ /* 0x5400 */
+ { 1355, 0xf718 }, { 1364, 0xa803 }, { 1369, 0x0a41 }, { 1373, 0x5b08 },
+ { 1379, 0x0504 }, { 1382, 0x0002 }, { 1383, 0x0500 }, { 1385, 0x382a },
+ { 1391, 0x5041 }, { 1395, 0x0001 }, { 1396, 0x1910 }, { 1400, 0x2108 },
+ { 1403, 0x0313 }, { 1408, 0x0000 }, { 1408, 0x6122 }, { 1413, 0x0404 },
+ /* 0x5500 */
+ { 1415, 0x40d0 }, { 1419, 0x1001 }, { 1421, 0x8000 }, { 1422, 0x4022 },
+ { 1425, 0x8050 }, { 1428, 0x4048 }, { 1431, 0x0008 }, { 1432, 0x1000 },
+ { 1433, 0x06d1 }, { 1439, 0x3700 }, { 1444, 0x5e80 }, { 1450, 0x0000 },
+ { 1450, 0x00a0 }, { 1452, 0x9410 }, { 1456, 0x0018 }, { 1458, 0x6000 },
+ /* 0x5600 */
+ { 1460, 0x0240 }, { 1462, 0x0090 }, { 1464, 0x8000 }, { 1465, 0x0054 },
+ { 1468, 0x0000 }, { 1468, 0x0008 }, { 1469, 0x0900 }, { 1471, 0x0010 },
+ { 1472, 0x0040 }, { 1473, 0x0000 }, { 1473, 0x5020 }, { 1476, 0x1010 },
+ { 1478, 0x2400 }, { 1480, 0x4c02 }, { 1484, 0x0001 }, { 1485, 0x0601 },
+ /* 0x5700 */
+ { 1488, 0x2918 }, { 1493, 0x814c }, { 1498, 0x2100 }, { 1500, 0x0801 },
+ { 1502, 0x6485 }, { 1508, 0x0003 }, { 1510, 0x4452 }, { 1515, 0x1021 },
+ { 1518, 0x0904 }, { 1521, 0x0008 }, { 1522, 0x000d }, { 1525, 0x0000 },
+ { 1525, 0x4988 }, { 1530, 0x8000 }, { 1531, 0x0001 }, { 1532, 0x1691 },
+ /* 0x5800 */
+ { 1538, 0x0765 }, { 1545, 0x4000 }, { 1546, 0x8492 }, { 1551, 0x0433 },
+ { 1556, 0x8c00 }, { 1559, 0x4592 }, { 1565, 0x0016 }, { 1568, 0x5220 },
+ { 1572, 0x0228 }, { 1575, 0xd008 }, { 1579, 0x4300 }, { 1582, 0x4c08 },
+ { 1586, 0x40a2 }, { 1590, 0xc32a }, { 1597, 0x9810 }, { 1601, 0x2e00 },
+ /* 0x5900 */
+ { 1605, 0x8000 }, { 1606, 0x1670 }, { 1612, 0x6e84 }, { 1619, 0x4082 },
+ { 1622, 0xc390 }, { 1628, 0x04b3 }, { 1634, 0x7c85 }, { 1642, 0x2118 },
+ { 1646, 0x041c }, { 1650, 0x02c8 }, { 1654, 0x1120 }, { 1657, 0x4a00 },
+ { 1660, 0x0a48 }, { 1664, 0x361b }, { 1672, 0x5540 }, { 1677, 0x8900 },
+ /* 0x5a00 */
+ { 1680, 0x000a }, { 1682, 0x9902 }, { 1687, 0x0221 }, { 1690, 0x1040 },
+ { 1692, 0x0242 }, { 1695, 0x0400 }, { 1696, 0x0044 }, { 1698, 0x0000 },
+ { 1698, 0x0000 }, { 1698, 0x0c04 }, { 1701, 0x0010 }, { 1702, 0x0000 },
+ { 1702, 0x1216 }, { 1707, 0x0000 }, { 1707, 0x0242 }, { 1710, 0x0000 },
+ /* 0x5b00 */
+ { 1710, 0x1a20 }, { 1714, 0x0040 }, { 1715, 0x0400 }, { 1716, 0x0000 },
+ { 1716, 0x0009 }, { 1718, 0xb5b3 }, { 1728, 0x0a18 }, { 1732, 0x1523 },
+ { 1738, 0x9ba0 }, { 1745, 0x1fe8 }, { 1754, 0x507c }, { 1761, 0x8379 },
+ { 1769, 0x10fd }, { 1777, 0xc09d }, { 1784, 0xdbf6 }, { 1796, 0x0560 },
+ /* 0x5c00 */
+ { 1800, 0xef92 }, { 1810, 0x0242 }, { 1813, 0x0110 }, { 1815, 0xdf02 },
+ { 1823, 0x6961 }, { 1830, 0x0822 }, { 1833, 0x9035 }, { 1839, 0x0202 },
+ { 1841, 0x0000 }, { 1841, 0x0003 }, { 1843, 0x1a02 }, { 1847, 0x45aa },
+ { 1854, 0x0001 }, { 1855, 0x0200 }, { 1856, 0x8101 }, { 1859, 0x2851 },
+ /* 0x5d00 */
+ { 1864, 0x6080 }, { 1867, 0x02d2 }, { 1872, 0x0280 }, { 1874, 0x0000 },
+ { 1874, 0x1800 }, { 1876, 0x0001 }, { 1877, 0x9200 }, { 1880, 0x0000 },
+ { 1880, 0x0880 }, { 1882, 0x2000 }, { 1883, 0x0405 }, { 1886, 0x3500 },
+ { 1890, 0x2000 }, { 1891, 0x6044 }, { 1895, 0x49e6 }, { 1903, 0x609e },
+ /* 0x5e00 */
+ { 1910, 0x104c }, { 1914, 0x2a42 }, { 1919, 0x2820 }, { 1922, 0xa148 },
+ { 1927, 0x10b1 }, { 1932, 0x8020 }, { 1934, 0x000e }, { 1937, 0x7b9c },
+ { 1947, 0x8490 }, { 1951, 0x14a0 }, { 1955, 0x28c1 }, { 1960, 0x41e0 },
+ { 1965, 0x0704 }, { 1969, 0x8c49 }, { 1975, 0x100d }, { 1979, 0x0cc8 },
+ /* 0x5f00 */
+ { 1984, 0x8412 }, { 1988, 0x89ba }, { 1996, 0x02c0 }, { 1999, 0x1422 },
+ { 2003, 0x5500 }, { 2007, 0x0ac0 }, { 2011, 0x3ec4 }, { 2019, 0x9283 },
+ { 2025, 0x1ca3 }, { 2032, 0x4387 }, { 2039, 0x4703 }, { 2045, 0x22a0 },
+ { 2049, 0x3028 }, { 2053, 0x03c0 }, { 2057, 0x0801 }, { 2059, 0xa020 },
+ /* 0x6000 */
+ { 2062, 0x8000 }, { 2063, 0x3044 }, { 2067, 0x85a3 }, { 2074, 0x0000 },
+ { 2074, 0x200e }, { 2078, 0x2225 }, { 2083, 0xb73c }, { 2093, 0x0001 },
+ { 2094, 0x3220 }, { 2098, 0x8c50 }, { 2103, 0x0099 }, { 2107, 0x315d },
+ { 2115, 0x00a0 }, { 2117, 0x9402 }, { 2121, 0x0003 }, { 2123, 0x0e4b },
+ /* 0x6100 */
+ { 2130, 0xe342 }, { 2137, 0x8c20 }, { 2141, 0x0080 }, { 2142, 0xd091 },
+ { 2148, 0x1d94 }, { 2155, 0xa328 }, { 2161, 0x499c }, { 2168, 0x60c1 },
+ { 2173, 0x4406 }, { 2177, 0x0713 }, { 2183, 0x5a90 }, { 2189, 0x4444 },
+ { 2193, 0x0f88 }, { 2199, 0x0000 }, { 2199, 0x0040 }, { 2200, 0x95c4 },
+ /* 0x6200 */
+ { 2207, 0x7581 }, { 2214, 0x8447 }, { 2220, 0x4402 }, { 2223, 0xc053 },
+ { 2229, 0x2b83 }, { 2236, 0x0108 }, { 2238, 0x4000 }, { 2239, 0x9242 },
+ { 2244, 0x0611 }, { 2248, 0x09a6 }, { 2254, 0x0800 }, { 2255, 0x3222 },
+ { 2260, 0xb384 }, { 2267, 0x1bdd }, { 2277, 0xf000 }, { 2281, 0xc08a },
+ /* 0x6300 */
+ { 2286, 0x0282 }, { 2289, 0x0002 }, { 2290, 0x8800 }, { 2292, 0x6c00 },
+ { 2296, 0x9200 }, { 2299, 0x0021 }, { 2301, 0x4180 }, { 2304, 0x8c84 },
+ { 2309, 0x1308 }, { 2313, 0x0944 }, { 2317, 0x07a7 }, { 2325, 0x0000 },
+ { 2325, 0x8051 }, { 2329, 0x0c41 }, { 2333, 0x6002 }, { 2336, 0x00d0 },
+ /* 0x6400 */
+ { 2339, 0xa000 }, { 2341, 0x10d0 }, { 2345, 0x3004 }, { 2348, 0x4400 },
+ { 2350, 0x0000 }, { 2350, 0x0100 }, { 2351, 0x8201 }, { 2354, 0x0700 },
+ { 2357, 0x0100 }, { 2358, 0x440e }, { 2363, 0x6830 }, { 2368, 0x0805 },
+ { 2371, 0x64b2 }, { 2378, 0x0514 }, { 2382, 0x10e6 }, { 2388, 0x4414 },
+ /* 0x6500 */
+ { 2392, 0x0011 }, { 2394, 0x2100 }, { 2396, 0x9c08 }, { 2401, 0xcbc0 },
+ { 2408, 0xe120 }, { 2413, 0x40c2 }, { 2417, 0x304c }, { 2422, 0x41b4 },
+ { 2428, 0x10ac }, { 2433, 0x9a83 }, { 2440, 0x98b2 }, { 2447, 0x3281 },
+ { 2452, 0x9822 }, { 2457, 0x0084 }, { 2459, 0x3369 }, { 2467, 0xbc12 },
+ /* 0x6600 */
+ { 2474, 0xd6c0 }, { 2481, 0xc03b }, { 2488, 0xa1a1 }, { 2494, 0x0c53 },
+ { 2500, 0x8a1e }, { 2507, 0xea00 }, { 2512, 0xcbf0 }, { 2521, 0x05d8 },
+ { 2527, 0x4390 }, { 2532, 0x21c3 }, { 2538, 0x4805 }, { 2542, 0x4a1c },
+ { 2548, 0x02d0 }, { 2552, 0x3240 }, { 2556, 0x0041 }, { 2558, 0xd79d },
+ /* 0x6700 */
+ { 2569, 0x2b09 }, { 2575, 0xe8b0 }, { 2582, 0x7dc0 }, { 2590, 0x2452 },
+ { 2595, 0xc240 }, { 2599, 0xd04b }, { 2606, 0xa000 }, { 2608, 0xc8ab },
+ { 2616, 0x8a80 }, { 2620, 0x34a9 }, { 2627, 0x8000 }, { 2628, 0x41c9 },
+ { 2634, 0x8010 }, { 2636, 0x241f }, { 2643, 0x9200 }, { 2646, 0x487b },
+ /* 0x6800 */
+ { 2654, 0x0000 }, { 2654, 0x00cc }, { 2658, 0x8406 }, { 2662, 0x3300 },
+ { 2666, 0x410f }, { 2672, 0x001b }, { 2676, 0x2000 }, { 2677, 0x8040 },
+ { 2679, 0x8022 }, { 2682, 0xa098 }, { 2687, 0xa186 }, { 2693, 0x006b },
+ { 2698, 0x2a30 }, { 2703, 0x85a4 }, { 2709, 0x4181 }, { 2713, 0x0604 },
+ /* 0x6900 */
+ { 2716, 0x6021 }, { 2720, 0x0004 }, { 2721, 0x0080 }, { 2722, 0xa001 },
+ { 2725, 0x0400 }, { 2726, 0x46b8 }, { 2733, 0xe90f }, { 2742, 0x03a0 },
+ { 2746, 0x0000 }, { 2746, 0x1820 }, { 2749, 0x40a0 }, { 2752, 0x0810 },
+ { 2754, 0x380a }, { 2759, 0x0001 }, { 2760, 0x0500 }, { 2762, 0xa800 },
+ /* 0x6a00 */
+ { 2765, 0x0404 }, { 2767, 0xc28a }, { 2773, 0x000a }, { 2775, 0x2720 },
+ { 2780, 0x0910 }, { 2783, 0x830c }, { 2788, 0x0802 }, { 2790, 0x0000 },
+ { 2790, 0x6211 }, { 2795, 0x1080 }, { 2797, 0x000c }, { 2799, 0x0808 },
+ { 2801, 0x000c }, { 2803, 0x0c08 }, { 2806, 0x0000 }, { 2806, 0x0840 },
+ /* 0x6b00 */
+ { 2808, 0x1410 }, { 2811, 0x0044 }, { 2813, 0x000b }, { 2816, 0x6404 },
+ { 2820, 0x50c0 }, { 2824, 0x8001 }, { 2826, 0x047e }, { 2833, 0x8984 },
+ { 2838, 0x0658 }, { 2843, 0x4140 }, { 2846, 0xc000 }, { 2848, 0x94a4 },
+ { 2854, 0xa862 }, { 2860, 0x09dc }, { 2867, 0x1800 }, { 2869, 0x0000 },
+ /* 0x6c00 */
+ { 2869, 0x8100 }, { 2871, 0x000a }, { 2873, 0x0008 }, { 2874, 0x4190 },
+ { 2878, 0x4007 }, { 2882, 0xe4a1 }, { 2889, 0x2501 }, { 2893, 0x6445 },
+ { 2899, 0x11ee }, { 2907, 0x0e7d }, { 2916, 0x4800 }, { 2918, 0xfb08 },
+ { 2926, 0x1616 }, { 2932, 0x08a8 }, { 2936, 0xc92e }, { 2944, 0x0009 },
+ /* 0x6d00 */
+ { 2946, 0x1800 }, { 2948, 0x4a82 }, { 2953, 0x06a0 }, { 2957, 0x6b64 },
+ { 2965, 0x0002 }, { 2966, 0x1600 }, { 2969, 0x5648 }, { 2975, 0x8390 },
+ { 2980, 0x73a0 }, { 2987, 0x002a }, { 2990, 0x8000 }, { 2991, 0x0024 },
+ { 2993, 0x88f9 }, { 3001, 0x4702 }, { 3006, 0x4d02 }, { 3011, 0x0faa },
+ /* 0x6e00 */
+ { 3019, 0x0000 }, { 3019, 0x8e80 }, { 3024, 0xb87b }, { 3034, 0x7554 },
+ { 3042, 0x2418 }, { 3046, 0xd940 }, { 3052, 0xc880 }, { 3056, 0x040c },
+ { 3059, 0x0000 }, { 3059, 0xb041 }, { 3064, 0x8c24 }, { 3069, 0x0442 },
+ { 3072, 0x5a34 }, { 3079, 0x001a }, { 3082, 0x8000 }, { 3083, 0xc110 },
+ /* 0x6f00 */
+ { 3087, 0x8046 }, { 3091, 0x0032 }, { 3094, 0x180d }, { 3099, 0x8106 },
+ { 3103, 0x0002 }, { 3104, 0xcd92 }, { 3112, 0x6014 }, { 3116, 0x7401 },
+ { 3121, 0x6112 }, { 3126, 0x0091 }, { 3129, 0xc098 }, { 3134, 0x420a },
+ { 3138, 0x040f }, { 3143, 0x8420 }, { 3146, 0x9a13 }, { 3153, 0x4002 },
+ /* 0x7000 */
+ { 3155, 0x8a62 }, { 3161, 0xfd22 }, { 3170, 0x8188 }, { 3174, 0x4080 },
+ { 3176, 0x1000 }, { 3177, 0x2103 }, { 3181, 0x0808 }, { 3183, 0x3101 },
+ { 3187, 0x4420 }, { 3190, 0x0704 }, { 3194, 0xb812 }, { 3200, 0x0388 },
+ { 3204, 0x8900 }, { 3207, 0xa300 }, { 3211, 0x0000 }, { 3211, 0x2202 },
+ /* 0x7100 */
+ { 3214, 0x1210 }, { 3217, 0x4600 }, { 3220, 0x0042 }, { 3222, 0x0041 },
+ { 3224, 0x5680 }, { 3229, 0x5241 }, { 3234, 0x52f0 }, { 3241, 0x2000 },
+ { 3242, 0x8610 }, { 3246, 0x8214 }, { 3250, 0x1004 }, { 3252, 0x4602 },
+ { 3256, 0x430a }, { 3261, 0x8035 }, { 3266, 0x60e0 }, { 3271, 0xd800 },
+ /* 0x7200 */
+ { 3275, 0x0041 }, { 3277, 0x0801 }, { 3279, 0x3400 }, { 3282, 0x6c65 },
+ { 3290, 0x11c1 }, { 3295, 0xab04 }, { 3301, 0x0286 }, { 3305, 0x2204 },
+ { 3308, 0x0003 }, { 3310, 0x0000 }, { 3310, 0x9084 }, { 3314, 0x0000 },
+ { 3314, 0x4015 }, { 3318, 0x0281 }, { 3321, 0x0202 }, { 3323, 0x3300 },
+ /* 0x7300 */
+ { 3327, 0x0400 }, { 3328, 0x3840 }, { 3332, 0x0e20 }, { 3336, 0xc0c0 },
+ { 3340, 0x0030 }, { 3342, 0x0085 }, { 3345, 0x0500 }, { 3347, 0x0d25 },
+ { 3353, 0x4ad0 }, { 3359, 0x81d0 }, { 3364, 0x2280 }, { 3367, 0x020c },
+ { 3370, 0xb605 }, { 3377, 0x6240 }, { 3381, 0x2679 }, { 3389, 0x6280 },
+ /* 0x7400 */
+ { 3393, 0x02ea }, { 3399, 0x0808 }, { 3401, 0xdd67 }, { 3412, 0x8579 },
+ { 3420, 0x081b }, { 3425, 0xdea0 }, { 3433, 0x8735 }, { 3441, 0x4000 },
+ { 3442, 0x0a8c }, { 3447, 0xd100 }, { 3451, 0x05aa }, { 3457, 0xa225 },
+ { 3463, 0x8440 }, { 3466, 0x1510 }, { 3470, 0x404d }, { 3475, 0x0080 },
+ /* 0x7500 */
+ { 3476, 0x0012 }, { 3478, 0x8d22 }, { 3484, 0x1968 }, { 3490, 0x058f },
+ { 3497, 0x9080 }, { 3500, 0x3a1a }, { 3507, 0x8464 }, { 3512, 0x8561 },
+ { 3518, 0xccc0 }, { 3524, 0x2002 }, { 3526, 0x0820 }, { 3528, 0x732e },
+ { 3537, 0x20a4 }, { 3541, 0x0b34 }, { 3547, 0x0004 }, { 3548, 0x1415 },
+ /* 0x7600 */
+ { 3553, 0x2001 }, { 3555, 0x8200 }, { 3557, 0x0057 }, { 3562, 0x0800 },
+ { 3563, 0x5004 }, { 3566, 0x0044 }, { 3568, 0x1212 }, { 3572, 0x7905 },
+ { 3579, 0x40d0 }, { 3583, 0x0009 }, { 3585, 0x4000 }, { 3586, 0x8400 },
+ { 3588, 0x054c }, { 3593, 0xd844 }, { 3599, 0x409a }, { 3604, 0x5114 },
+ /* 0x7700 */
+ { 3609, 0x0b12 }, { 3614, 0x4000 }, { 3615, 0x0201 }, { 3617, 0x1580 },
+ { 3621, 0x2001 }, { 3623, 0x0800 }, { 3624, 0x084a }, { 3628, 0xc200 },
+ { 3631, 0x0800 }, { 3632, 0x4002 }, { 3634, 0x3020 }, { 3637, 0x9809 },
+ { 3642, 0x0000 }, { 3642, 0x1880 }, { 3645, 0xe22c }, { 3652, 0x0008 },
+ /* 0x7800 */
+ { 3653, 0x0004 }, { 3654, 0x0004 }, { 3655, 0x10e0 }, { 3659, 0x0014 },
+ { 3661, 0x8020 }, { 3663, 0x2000 }, { 3664, 0x9800 }, { 3667, 0x1000 },
+ { 3668, 0x7082 }, { 3673, 0x0082 }, { 3675, 0x0288 }, { 3678, 0x1c00 },
+ { 3681, 0x4c22 }, { 3686, 0x0001 }, { 3687, 0x9100 }, { 3690, 0x0820 },
+ /* 0x7900 */
+ { 3692, 0x4002 }, { 3694, 0x0040 }, { 3695, 0x1c00 }, { 3698, 0x4400 },
+ { 3700, 0x0383 }, { 3705, 0x7cc1 }, { 3713, 0x2121 }, { 3717, 0x8400 },
+ { 3719, 0xe002 }, { 3723, 0x0002 }, { 3724, 0x44c0 }, { 3728, 0xe20a },
+ { 3734, 0x0e03 }, { 3739, 0x8126 }, { 3744, 0x02d0 }, { 3748, 0x0800 },
+ /* 0x7a00 */
+ { 3749, 0x2921 }, { 3754, 0x9690 }, { 3760, 0x4001 }, { 3762, 0xb8c2 },
+ { 3769, 0x6241 }, { 3774, 0x0080 }, { 3775, 0x0a06 }, { 3779, 0xa651 },
+ { 3786, 0x0112 }, { 3789, 0x812c }, { 3794, 0xc600 }, { 3798, 0x0400 },
+ { 3799, 0x0cb0 }, { 3804, 0xa280 }, { 3808, 0xa429 }, { 3814, 0x8640 },
+ /* 0x7b00 */
+ { 3818, 0x8000 }, { 3819, 0x4a02 }, { 3823, 0x3041 }, { 3827, 0x0200 },
+ { 3828, 0xba40 }, { 3834, 0x0057 }, { 3839, 0x5001 }, { 3842, 0x2020 },
+ { 3844, 0x8880 }, { 3847, 0x24b0 }, { 3852, 0x2002 }, { 3854, 0x0112 },
+ { 3857, 0x02d3 }, { 3863, 0x0004 }, { 3864, 0x0211 }, { 3867, 0x0000 },
+ /* 0x7c00 */
+ { 3867, 0x0080 }, { 3868, 0x4004 }, { 3870, 0x0c82 }, { 3874, 0xe000 },
+ { 3877, 0x3008 }, { 3880, 0x0000 }, { 3880, 0x1011 }, { 3883, 0x0008 },
+ { 3884, 0x0208 }, { 3886, 0x81a4 }, { 3891, 0x40a0 }, { 3894, 0x420e },
+ { 3899, 0x0400 }, { 3900, 0xc040 }, { 3903, 0x0081 }, { 3905, 0x4800 },
+ /* 0x7d00 */
+ { 3907, 0x2df5 }, { 3917, 0x0f91 }, { 3924, 0xd807 }, { 3931, 0x0629 },
+ { 3936, 0x007c }, { 3941, 0x4001 }, { 3943, 0x4546 }, { 3949, 0x824e },
+ { 3955, 0xc000 }, { 3957, 0x1008 }, { 3959, 0x3005 }, { 3963, 0xed36 },
+ { 3973, 0x0c80 }, { 3976, 0x6540 }, { 3981, 0x930b }, { 3988, 0x0810 },
+ /* 0x7e00 */
+ { 3990, 0x0600 }, { 3992, 0xe820 }, { 3997, 0xc80a }, { 4002, 0x6082 },
+ { 4006, 0x00ca }, { 4010, 0x4034 }, { 4014, 0x2e02 }, { 4019, 0x1201 },
+ { 4022, 0x9004 }, { 4025, 0x1948 }, { 4030, 0x0000 }, { 4030, 0x0000 },
+ { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 },
+ /* 0x7f00 */
+ { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0540 },
+ { 4033, 0x1000 }, { 4034, 0x0031 }, { 4037, 0x4c00 }, { 4040, 0x02a5 },
+ { 4045, 0x5520 }, { 4050, 0x4410 }, { 4053, 0x0310 }, { 4056, 0x2304 },
+ { 4060, 0x5422 }, { 4065, 0x8034 }, { 4069, 0x0a03 }, { 4073, 0x1201 },
+ /* 0x8000 */
+ { 4076, 0x126b }, { 4083, 0x01a1 }, { 4087, 0x2000 }, { 4088, 0xa048 },
+ { 4092, 0x0448 }, { 4095, 0x4540 }, { 4099, 0x8000 }, { 4100, 0xe08d },
+ { 4107, 0x1af0 }, { 4114, 0x2840 }, { 4117, 0x8626 }, { 4123, 0x0416 },
+ { 4127, 0x5018 }, { 4131, 0x4c00 }, { 4134, 0x0032 }, { 4137, 0x2112 },
+ /* 0x8100 */
+ { 4141, 0x05e4 }, { 4147, 0x0d00 }, { 4150, 0x8a08 }, { 4154, 0x4200 },
+ { 4156, 0x4800 }, { 4158, 0x0033 }, { 4162, 0x0860 }, { 4165, 0x8703 },
+ { 4171, 0x8501 }, { 4175, 0x3400 }, { 4178, 0x0109 }, { 4181, 0xe428 },
+ { 4187, 0x2045 }, { 4191, 0x8100 }, { 4193, 0x25a8 }, { 4199, 0x5c18 },
+ /* 0x8200 */
+ { 4205, 0x35a0 }, { 4211, 0xd804 }, { 4216, 0x1c02 }, { 4220, 0x02e0 },
+ { 4224, 0x00a1 }, { 4227, 0x0200 }, { 4228, 0xc050 }, { 4232, 0x4146 },
+ { 4237, 0x6800 }, { 4240, 0xa604 }, { 4245, 0xf260 }, { 4252, 0xbb8a },
+ { 4261, 0x0000 }, { 4261, 0xc8b6 }, { 4269, 0x00e2 }, { 4273, 0x6002 },
+ /* 0x8300 */
+ { 4276, 0x023e }, { 4282, 0x0080 }, { 4283, 0x8900 }, { 4286, 0x0372 },
+ { 4292, 0x8681 }, { 4297, 0x0006 }, { 4299, 0x0000 }, { 4299, 0x0888 },
+ { 4302, 0x4600 }, { 4305, 0x4140 }, { 4308, 0x0e04 }, { 4312, 0x2000 },
+ { 4313, 0x1622 }, { 4318, 0x1048 }, { 4321, 0x8a00 }, { 4324, 0x2217 },
+ /* 0x8400 */
+ { 4330, 0x7418 }, { 4336, 0x0000 }, { 4336, 0x1200 }, { 4338, 0x2102 },
+ { 4341, 0x0200 }, { 4342, 0x0880 }, { 4344, 0x984a }, { 4350, 0x0420 },
+ { 4352, 0x0000 }, { 4352, 0x1211 }, { 4356, 0x0002 }, { 4357, 0x9904 },
+ { 4362, 0x2a55 }, { 4369, 0x0402 }, { 4371, 0x5000 }, { 4373, 0x1010 },
+ /* 0x8500 */
+ { 4375, 0x0000 }, { 4375, 0x459a }, { 4382, 0xb02a }, { 4388, 0xa000 },
+ { 4390, 0x420a }, { 4394, 0x0208 }, { 4396, 0x2708 }, { 4401, 0x0000 },
+ { 4401, 0x8090 }, { 4404, 0x0812 }, { 4407, 0x8740 }, { 4412, 0x0401 },
+ { 4414, 0xe202 }, { 4419, 0x3020 }, { 4422, 0x0630 }, { 4426, 0x8c80 },
+ /* 0x8600 */
+ { 4430, 0x04c4 }, { 4434, 0x04c0 }, { 4437, 0x2000 }, { 4438, 0x8000 },
+ { 4439, 0x4000 }, { 4440, 0xd831 }, { 4447, 0x0080 }, { 4448, 0x0200 },
+ { 4449, 0x1400 }, { 4451, 0x0008 }, { 4452, 0x0218 }, { 4455, 0x0000 },
+ { 4455, 0x0880 }, { 4457, 0x8a10 }, { 4461, 0x2010 }, { 4463, 0x4000 },
+ /* 0x8700 */
+ { 4464, 0x010d }, { 4468, 0x1500 }, { 4471, 0x0000 }, { 4471, 0x0000 },
+ { 4471, 0x4000 }, { 4472, 0x80a0 }, { 4475, 0x0140 }, { 4477, 0x0150 },
+ { 4480, 0x2004 }, { 4482, 0x8000 }, { 4483, 0x0004 }, { 4484, 0x0408 },
+ { 4486, 0x0010 }, { 4487, 0x0000 }, { 4487, 0x9001 }, { 4490, 0x4a04 },
+ /* 0x8800 */
+ { 4494, 0x0020 }, { 4495, 0x8000 }, { 4496, 0x000c }, { 4498, 0x0842 },
+ { 4501, 0x3041 }, { 4505, 0x2a8c }, { 4511, 0x090e }, { 4516, 0xc085 },
+ { 4521, 0x2906 }, { 4526, 0x40c4 }, { 4530, 0x0800 }, { 4531, 0x0010 },
+ { 4532, 0x8006 }, { 4535, 0xb230 }, { 4541, 0x0102 }, { 4543, 0x2138 },
+ /* 0x8900 */
+ { 4548, 0x0080 }, { 4549, 0x030d }, { 4554, 0x0420 }, { 4556, 0x0940 },
+ { 4559, 0x0012 }, { 4561, 0x8000 }, { 4562, 0x0410 }, { 4564, 0x8004 },
+ { 4566, 0x88ca }, { 4572, 0x0048 }, { 4574, 0x0602 }, { 4577, 0x2404 },
+ { 4580, 0x0001 }, { 4581, 0x0004 }, { 4582, 0x0008 }, { 4583, 0x0110 },
+ /* 0x8a00 */
+ { 4585, 0x550d }, { 4592, 0xa9c8 }, { 4599, 0x2428 }, { 4603, 0x0c52 },
+ { 4608, 0x0000 }, { 4608, 0x4831 }, { 4613, 0x624d }, { 4620, 0x022f },
+ { 4626, 0x30a0 }, { 4630, 0x4128 }, { 4634, 0x057b }, { 4642, 0xd205 },
+ { 4648, 0xa894 }, { 4654, 0x1844 }, { 4658, 0x6cc2 }, { 4665, 0x45c2 },
+ /* 0x8b00 */
+ { 4671, 0x4017 }, { 4676, 0x2ed1 }, { 4684, 0x1901 }, { 4688, 0x0208 },
+ { 4690, 0xc202 }, { 4694, 0x1500 }, { 4697, 0x9040 }, { 4700, 0x2091 },
+ { 4704, 0x0401 }, { 4706, 0x044d }, { 4711, 0x0000 }, { 4711, 0x0000 },
+ { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 },
+ /* 0x8c00 */
+ { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x8080 },
+ { 4713, 0x1542 }, { 4718, 0x0420 }, { 4720, 0x0c02 }, { 4723, 0x0600 },
+ { 4725, 0x1404 }, { 4728, 0x6000 }, { 4730, 0x9f87 }, { 4740, 0xb9d9 },
+ { 4750, 0x059f }, { 4758, 0x540a }, { 4763, 0x245d }, { 4770, 0x3810 },
+ /* 0x8d00 */
+ { 4774, 0x25b0 }, { 4780, 0x0048 }, { 4782, 0x0000 }, { 4782, 0x0000 },
+ { 4782, 0x0000 }, { 4782, 0x0000 }, { 4782, 0x0850 }, { 4785, 0x0099 },
+ { 4789, 0x0420 }, { 4791, 0x0200 }, { 4792, 0x0108 }, { 4794, 0x4408 },
+ { 4797, 0x9840 }, { 4801, 0x2800 }, { 4803, 0x810a }, { 4807, 0x0008 },
+ /* 0x8e00 */
+ { 4808, 0x8400 }, { 4810, 0x4001 }, { 4812, 0x0400 }, { 4813, 0x0021 },
+ { 4815, 0x0794 }, { 4821, 0x8200 }, { 4823, 0x0001 }, { 4824, 0x0050 },
+ { 4826, 0x2482 }, { 4830, 0x0000 }, { 4830, 0x1c00 }, { 4833, 0x0000 },
+ { 4833, 0x3c01 }, { 4838, 0x8004 }, { 4840, 0x0800 }, { 4841, 0x4900 },
+ /* 0x8f00 */
+ { 4844, 0x0228 }, { 4847, 0xf83c }, { 4856, 0x86c0 }, { 4861, 0xcb08 },
+ { 4867, 0x6230 }, { 4872, 0xa000 }, { 4874, 0x0004 }, { 4875, 0x0000 },
+ { 4875, 0x0000 }, { 4875, 0x1800 }, { 4877, 0xa148 }, { 4882, 0x0007 },
+ { 4885, 0x4024 }, { 4888, 0x0012 }, { 4890, 0x2c40 }, { 4894, 0x2285 },
+ /* 0x9000 */
+ { 4899, 0xa96f }, { 4909, 0xe6b3 }, { 4919, 0x400f }, { 4924, 0x5126 },
+ { 4930, 0x6c86 }, { 4937, 0x723b }, { 4946, 0xe20b }, { 4953, 0xb5a4 },
+ { 4961, 0x859f }, { 4970, 0x0222 }, { 4973, 0x854c }, { 4979, 0x0123 },
+ { 4983, 0x0402 }, { 4985, 0x4000 }, { 4986, 0x2102 }, { 4989, 0x2020 },
+ /* 0x9100 */
+ { 4991, 0x0004 }, { 4992, 0x0224 }, { 4995, 0x2080 }, { 4997, 0x0004 },
+ { 4998, 0x7e00 }, { 5004, 0x0004 }, { 5005, 0x1604 }, { 5009, 0x01a0 },
+ { 5012, 0x2a80 }, { 5016, 0x1004 }, { 5018, 0xd800 }, { 5022, 0x0032 },
+ { 5025, 0xfa81 }, { 5033, 0x3183 }, { 5039, 0x0488 }, { 5042, 0x0020 },
+ /* 0x9200 */
+ { 5043, 0x2000 }, { 5044, 0x4087 }, { 5049, 0x0000 }, { 5049, 0x8410 },
+ { 5052, 0x0221 }, { 5055, 0x4880 }, { 5058, 0x0074 }, { 5062, 0x0000 },
+ { 5062, 0x0029 }, { 5065, 0x114a }, { 5070, 0x0000 }, { 5070, 0x02c8 },
+ { 5074, 0x9000 }, { 5076, 0x0004 }, { 5077, 0x0410 }, { 5079, 0x1100 },
+ /* 0x9300 */
+ { 5081, 0x0010 }, { 5082, 0xc501 }, { 5087, 0xc957 }, { 5096, 0x0000 },
+ { 5096, 0x2d00 }, { 5100, 0x0810 }, { 5102, 0x4000 }, { 5103, 0x5020 },
+ { 5106, 0x1000 }, { 5107, 0x0450 }, { 5110, 0x3088 }, { 5114, 0x0001 },
+ { 5115, 0x0008 }, { 5116, 0x4002 }, { 5118, 0x0012 }, { 5120, 0x0040 },
+ /* 0x9400 */
+ { 5121, 0x0010 }, { 5122, 0x0100 }, { 5123, 0x0820 }, { 5125, 0x0120 },
+ { 5127, 0x0010 }, { 5128, 0x0806 }, { 5131, 0x0000 }, { 5131, 0xa000 },
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
+ /* 0x9500 */
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0080 },
+ { 5134, 0x8a09 }, { 5139, 0x011e }, { 5144, 0x2138 }, { 5149, 0x1802 },
+ { 5152, 0x0480 }, { 5154, 0x1070 }, { 5158, 0x0006 }, { 5160, 0x0000 },
+ /* 0x9600 */
+ { 5160, 0x0000 }, { 5160, 0x1000 }, { 5161, 0x4402 }, { 5164, 0x8804 },
+ { 5167, 0x3815 }, { 5173, 0xf801 }, { 5179, 0x041c }, { 5183, 0x21e9 },
+ { 5190, 0x6c60 }, { 5196, 0x1b30 }, { 5202, 0x0588 }, { 5206, 0x0882 },
+ { 5209, 0x7af3 }, { 5220, 0x1a60 }, { 5225, 0x870c }, { 5231, 0x0ac5 },
+ /* 0x9700 */
+ { 5237, 0x00c1 }, { 5240, 0x524a }, { 5246, 0x0080 }, { 5247, 0x2205 },
+ { 5251, 0x0114 }, { 5254, 0x5042 }, { 5258, 0x2206 }, { 5262, 0x0490 },
+ { 5265, 0xa800 }, { 5268, 0x0000 }, { 5268, 0x2901 }, { 5272, 0x0000 },
+ { 5272, 0x0840 }, { 5274, 0x1008 }, { 5276, 0x0000 }, { 5276, 0x8848 },
+ /* 0x9800 */
+ { 5280, 0x156f }, { 5289, 0x018f }, { 5295, 0x2000 }, { 5296, 0x0b01 },
+ { 5300, 0x7040 }, { 5304, 0x4510 }, { 5308, 0x88a0 }, { 5312, 0x0000 },
+ { 5312, 0x0000 }, { 5312, 0x0000 }, { 5312, 0x8100 }, { 5314, 0x0002 },
+ { 5315, 0x0090 }, { 5317, 0x9800 }, { 5320, 0xe006 }, { 5325, 0x7010 },
+ /* 0x9900 */
+ { 5329, 0x1608 }, { 5333, 0x4109 }, { 5337, 0x0101 }, { 5339, 0x0000 },
+ { 5339, 0x3a20 }, { 5344, 0x0096 }, { 5348, 0x0000 }, { 5348, 0x0000 },
+ { 5348, 0x0000 }, { 5348, 0x2240 }, { 5351, 0x7120 }, { 5356, 0x021a },
+ { 5360, 0x0002 }, { 5361, 0xa227 }, { 5368, 0x2000 }, { 5369, 0x8002 },
+ /* 0x9a00 */
+ { 5371, 0xc102 }, { 5375, 0x0200 }, { 5376, 0x0800 }, { 5377, 0x00c1 },
+ { 5380, 0x2029 }, { 5384, 0x8ca0 }, { 5389, 0x0624 }, { 5393, 0x0000 },
+ { 5393, 0x0000 }, { 5393, 0x0000 }, { 5393, 0x0100 }, { 5394, 0x0100 },
+ { 5395, 0x0000 }, { 5395, 0x0118 }, { 5398, 0x4020 }, { 5400, 0x0000 },
+ /* 0x9b00 */
+ { 5400, 0x0000 }, { 5400, 0x0400 }, { 5401, 0x0480 }, { 5403, 0x1002 },
+ { 5405, 0x803e }, { 5411, 0x0410 }, { 5413, 0x8000 }, { 5414, 0x0000 },
+ { 5414, 0x4000 }, { 5415, 0x8002 }, { 5417, 0x4800 }, { 5419, 0x0000 },
+ { 5419, 0x0200 }, { 5420, 0x0040 }, { 5421, 0x0110 }, { 5423, 0x0000 },
+ /* 0x9c00 */
+ { 5423, 0x2000 }, { 5424, 0x0025 }, { 5427, 0x0020 }, { 5428, 0x0804 },
+ { 5430, 0x0280 }, { 5432, 0x0080 }, { 5433, 0x0000 }, { 5433, 0x0000 },
+ { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 },
+ { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x02a0 }, { 5436, 0x0058 },
+ /* 0x9d00 */
+ { 5439, 0x0200 }, { 5440, 0x0800 }, { 5441, 0x0140 }, { 5443, 0x0800 },
+ { 5444, 0x0000 }, { 5444, 0x2002 }, { 5446, 0x1003 }, { 5449, 0x0004 },
+ { 5450, 0x0000 }, { 5450, 0x0000 }, { 5450, 0x8200 }, { 5452, 0x0010 },
+ { 5453, 0x0010 }, { 5454, 0x0080 }, { 5455, 0x0000 }, { 5455, 0x0704 },
+ /* 0x9e00 */
+ { 5459, 0x0000 }, { 5459, 0x4400 }, { 5461, 0x0000 }, { 5461, 0x0000 },
+ { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0xa220 },
+ { 5465, 0x0000 }, { 5465, 0xa08c }, { 5470, 0x0020 }, { 5471, 0x4830 },
+ { 5475, 0x6008 }, { 5478, 0x5912 }, { 5484, 0x0100 }, { 5485, 0x0010 },
+ /* 0x9f00 */
+ { 5486, 0x4180 }, { 5489, 0x0008 }, { 5490, 0x0001 }, { 5491, 0x0800 },
+ { 5492, 0x4c00 }, { 5495, 0x8004 }, { 5497, 0x1482 }, { 5501, 0x0080 },
+ { 5502, 0x2000 }, { 5503, 0x1021 },
+};
+static const Summary16 ksc5601_uni2indx_pageac[698] = {
+ /* 0xac00 */
+ { 5506, 0x0793 }, { 5513, 0x3eff }, { 5526, 0xb011 }, { 5531, 0x1303 },
+ { 5536, 0x2801 }, { 5539, 0x1110 }, { 5542, 0x0000 }, { 5542, 0x0593 },
+ { 5548, 0x1e7b }, { 5558, 0xb011 }, { 5563, 0x9703 }, { 5570, 0x3b01 },
+ { 5576, 0x1112 }, { 5580, 0x00a0 }, { 5582, 0x9593 }, { 5590, 0x306b },
+ /* 0xad00 */
+ { 5597, 0xb051 }, { 5603, 0x1102 }, { 5606, 0x3201 }, { 5610, 0x1130 },
+ { 5614, 0x02b0 }, { 5618, 0x0111 }, { 5621, 0x300a }, { 5625, 0xb879 },
+ { 5634, 0x1306 }, { 5639, 0x3001 }, { 5642, 0x0010 }, { 5643, 0x0080 },
+ { 5644, 0x0113 }, { 5648, 0x100b }, { 5652, 0x0011 }, { 5654, 0x9300 },
+ /* 0xae00 */
+ { 5658, 0x2b03 }, { 5664, 0x0010 }, { 5665, 0x0000 }, { 5665, 0x0593 },
+ { 5671, 0x746b }, { 5680, 0xb051 }, { 5686, 0x1323 }, { 5692, 0x3b01 },
+ { 5698, 0x1030 }, { 5701, 0x0000 }, { 5701, 0x0000 }, { 5701, 0x7000 },
+ { 5704, 0xb011 }, { 5709, 0x1303 }, { 5714, 0x2900 }, { 5717, 0x1110 },
+ /* 0xaf00 */
+ { 5720, 0x2180 }, { 5723, 0x0001 }, { 5724, 0x3000 }, { 5726, 0xb015 },
+ { 5732, 0x030e }, { 5737, 0x3001 }, { 5740, 0x0030 }, { 5742, 0x0200 },
+ { 5743, 0x0111 }, { 5746, 0x1023 }, { 5750, 0x0000 }, { 5750, 0x1300 },
+ { 5753, 0x6b81 }, { 5760, 0x1010 }, { 5762, 0x0300 }, { 5764, 0x0113 },
+ /* 0xb000 */
+ { 5768, 0x1013 }, { 5772, 0x3011 }, { 5776, 0x0100 }, { 5777, 0x0000 },
+ { 5777, 0x5530 }, { 5783, 0x22b8 }, { 5789, 0x0000 }, { 5789, 0x3000 },
+ { 5791, 0xb011 }, { 5796, 0x9702 }, { 5802, 0xfb07 }, { 5812, 0x113a },
+ { 5818, 0x03b0 }, { 5823, 0x0113 }, { 5827, 0x0021 }, { 5829, 0x0000 },
+ /* 0xb100 */
+ { 5829, 0x1b00 }, { 5833, 0x3b0d }, { 5841, 0x1138 }, { 5846, 0x03b0 },
+ { 5851, 0x0113 }, { 5855, 0x1133 }, { 5861, 0x0001 }, { 5862, 0x1300 },
+ { 5865, 0x2b05 }, { 5871, 0x111c }, { 5876, 0x0100 }, { 5877, 0x0000 },
+ { 5877, 0x1000 }, { 5878, 0xb011 }, { 5883, 0x1300 }, { 5886, 0x2a01 },
+ /* 0xb200 */
+ { 5890, 0x1930 }, { 5895, 0x02b0 }, { 5899, 0x0001 }, { 5900, 0x1010 },
+ { 5902, 0x0000 }, { 5902, 0x1100 }, { 5904, 0x0301 }, { 5907, 0x1030 },
+ { 5910, 0x0230 }, { 5913, 0x0713 }, { 5919, 0x146b }, { 5926, 0x0011 },
+ { 5928, 0x1300 }, { 5931, 0x2b05 }, { 5937, 0xf974 }, { 5947, 0x8fb8 },
+ /* 0xb300 */
+ { 5956, 0x0113 }, { 5960, 0x103b }, { 5966, 0x0000 }, { 5966, 0x0000 },
+ { 5966, 0x0000 }, { 5966, 0xd970 }, { 5974, 0x4ab0 }, { 5980, 0x0113 },
+ { 5984, 0x103b }, { 5990, 0x0011 }, { 5992, 0x1103 }, { 5996, 0x0000 },
+ { 5996, 0x5930 }, { 6002, 0x2ab1 }, { 6009, 0x0111 }, { 6012, 0x1000 },
+ /* 0xb400 */
+ { 6013, 0x0000 }, { 6013, 0x1101 }, { 6016, 0x0b01 }, { 6020, 0x0010 },
+ { 6021, 0x0000 }, { 6021, 0x0113 }, { 6025, 0x102b }, { 6030, 0x0000 },
+ { 6030, 0x0101 }, { 6032, 0x2000 }, { 6033, 0x1110 }, { 6036, 0x02a0 },
+ { 6039, 0x0111 }, { 6042, 0x3021 }, { 6046, 0xb059 }, { 6053, 0x0102 },
+ /* 0xb500 */
+ { 6055, 0x0000 }, { 6055, 0x1930 }, { 6060, 0x07b0 }, { 6066, 0x0113 },
+ { 6070, 0x383b }, { 6078, 0xb011 }, { 6083, 0x0003 }, { 6085, 0x0000 },
+ { 6085, 0x0000 }, { 6085, 0x0000 }, { 6085, 0x0d13 }, { 6091, 0x383b },
+ { 6099, 0xb011 }, { 6104, 0x0103 }, { 6107, 0x1000 }, { 6108, 0x0000 },
+ /* 0xb600 */
+ { 6108, 0x0000 }, { 6108, 0x0113 }, { 6112, 0x1020 }, { 6114, 0x0010 },
+ { 6115, 0x0100 }, { 6116, 0x0000 }, { 6116, 0x0110 }, { 6118, 0x0000 },
+ { 6118, 0x0000 }, { 6118, 0x3000 }, { 6120, 0x1811 }, { 6124, 0x0002 },
+ { 6125, 0x0000 }, { 6125, 0x0010 }, { 6126, 0x0000 }, { 6126, 0x0111 },
+ /* 0xb700 */
+ { 6129, 0x0023 }, { 6132, 0x0000 }, { 6132, 0x9300 }, { 6136, 0x0b01 },
+ { 6140, 0x1110 }, { 6143, 0x0030 }, { 6145, 0x0111 }, { 6148, 0x302b },
+ { 6154, 0xb011 }, { 6159, 0x13c7 }, { 6167, 0x3b01 }, { 6173, 0x0130 },
+ { 6176, 0x0280 }, { 6178, 0x0000 }, { 6178, 0x3000 }, { 6180, 0xb011 },
+ /* 0xb800 */
+ { 6185, 0x1383 }, { 6191, 0x2b01 }, { 6196, 0x1130 }, { 6200, 0x03b0 },
+ { 6205, 0x0011 }, { 6207, 0x300a }, { 6211, 0xb011 }, { 6216, 0x1102 },
+ { 6219, 0x2000 }, { 6220, 0x0000 }, { 6220, 0x0100 }, { 6221, 0x0111 },
+ { 6224, 0x102b }, { 6229, 0xa011 }, { 6233, 0x1302 }, { 6237, 0x2b01 },
+ /* 0xb900 */
+ { 6242, 0x0010 }, { 6243, 0x0100 }, { 6244, 0x0001 }, { 6245, 0x3000 },
+ { 6247, 0x9011 }, { 6251, 0x1302 }, { 6255, 0x2b01 }, { 6260, 0x1130 },
+ { 6264, 0x66b0 }, { 6271, 0x0000 }, { 6271, 0x3000 }, { 6273, 0xb011 },
+ { 6278, 0xd302 }, { 6284, 0x6b07 }, { 6292, 0x113a }, { 6298, 0x07b0 },
+ /* 0xba00 */
+ { 6304, 0x0103 }, { 6307, 0x0020 }, { 6308, 0x0000 }, { 6308, 0x1300 },
+ { 6311, 0x6b05 }, { 6318, 0x1138 }, { 6323, 0x03b0 }, { 6328, 0x0113 },
+ { 6332, 0x10b8 }, { 6337, 0x0000 }, { 6337, 0x1b00 }, { 6341, 0x2b05 },
+ { 6347, 0x0110 }, { 6349, 0x0300 }, { 6351, 0x0000 }, { 6351, 0x1000 },
+ /* 0xbb00 */
+ { 6352, 0xa011 }, { 6356, 0x1102 }, { 6359, 0x0a01 }, { 6362, 0x7970 },
+ { 6370, 0xa2b0 }, { 6376, 0x0111 }, { 6379, 0x100a }, { 6382, 0x0000 },
+ { 6382, 0x1100 }, { 6384, 0x0001 }, { 6385, 0x1110 }, { 6388, 0x0090 },
+ { 6390, 0x0111 }, { 6393, 0x0009 }, { 6395, 0x0000 }, { 6395, 0x9300 },
+ /* 0xbc00 */
+ { 6399, 0xbb05 }, { 6407, 0xf9f2 }, { 6418, 0x22b0 }, { 6423, 0x0113 },
+ { 6427, 0x323b }, { 6435, 0x2001 }, { 6437, 0x0000 }, { 6437, 0x0000 },
+ { 6437, 0x5930 }, { 6443, 0x06b0 }, { 6448, 0x0193 }, { 6453, 0x303b },
+ { 6460, 0xa011 }, { 6464, 0x1123 }, { 6469, 0x0000 }, { 6469, 0x1170 },
+ /* 0xbd00 */
+ { 6474, 0x02b0 }, { 6478, 0x0011 }, { 6480, 0x1010 }, { 6482, 0x0000 },
+ { 6482, 0x1301 }, { 6486, 0x0301 }, { 6489, 0x0110 }, { 6491, 0x0000 },
+ { 6491, 0x0793 }, { 6498, 0x162b }, { 6505, 0x0010 }, { 6506, 0x0101 },
+ { 6508, 0x0000 }, { 6508, 0x1130 }, { 6512, 0x0200 }, { 6513, 0x0111 },
+ /* 0xbe00 */
+ { 6516, 0x3029 }, { 6521, 0xb011 }, { 6526, 0x0000 }, { 6526, 0x0000 },
+ { 6526, 0x5130 }, { 6531, 0x0eb0 }, { 6537, 0x0513 }, { 6542, 0x383b },
+ { 6550, 0xb011 }, { 6555, 0x0303 }, { 6559, 0x0100 }, { 6560, 0x0000 },
+ { 6560, 0x0000 }, { 6560, 0x0193 }, { 6565, 0x1039 }, { 6570, 0x0000 },
+ /* 0xbf00 */
+ { 6570, 0x0302 }, { 6573, 0x3b00 }, { 6578, 0x0000 }, { 6578, 0x0000 },
+ { 6578, 0x0113 }, { 6582, 0x0023 }, { 6585, 0x0000 }, { 6585, 0x0000 },
+ { 6585, 0x0000 }, { 6585, 0x0010 }, { 6586, 0x0000 }, { 6586, 0x0001 },
+ { 6587, 0x3020 }, { 6590, 0x9011 }, { 6594, 0x0002 }, { 6595, 0x0000 },
+ /* 0xc000 */
+ { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x1000 },
+ { 6596, 0x0000 }, { 6596, 0x1102 }, { 6599, 0x0301 }, { 6602, 0x0000 },
+ { 6602, 0x0000 }, { 6602, 0x0113 }, { 6606, 0xb02b }, { 6613, 0xb079 },
+ { 6621, 0x1323 }, { 6627, 0x3b01 }, { 6633, 0x1130 }, { 6637, 0x02b0 },
+ /* 0xc100 */
+ { 6641, 0x0111 }, { 6644, 0xf021 }, { 6650, 0xb0d9 }, { 6658, 0x1343 },
+ { 6664, 0x3b01 }, { 6670, 0x1130 }, { 6674, 0x03b0 }, { 6679, 0x0111 },
+ { 6682, 0x7020 }, { 6686, 0xb051 }, { 6692, 0x1322 }, { 6697, 0x2001 },
+ { 6699, 0x1110 }, { 6702, 0x0190 }, { 6705, 0x0111 }, { 6708, 0x300b },
+ /* 0xc200 */
+ { 6713, 0xb011 }, { 6718, 0x9302 }, { 6723, 0xab01 }, { 6729, 0x0016 },
+ { 6732, 0x0100 }, { 6733, 0x0113 }, { 6737, 0x3021 }, { 6741, 0xb011 },
+ { 6746, 0x0302 }, { 6749, 0x2901 }, { 6753, 0x3130 }, { 6758, 0x02b0 },
+ { 6762, 0x0000 }, { 6762, 0x3000 }, { 6764, 0xb819 }, { 6771, 0x1b42 },
+ /* 0xc300 */
+ { 6777, 0x3301 }, { 6782, 0x1138 }, { 6787, 0x0330 }, { 6791, 0x0000 },
+ { 6791, 0x0020 }, { 6792, 0x0000 }, { 6792, 0x1300 }, { 6795, 0x3305 },
+ { 6801, 0x1110 }, { 6804, 0x0000 }, { 6804, 0x0000 }, { 6804, 0x0000 },
+ { 6804, 0x0001 }, { 6805, 0x9300 }, { 6809, 0x2305 }, { 6814, 0x0130 },
+ /* 0xc400 */
+ { 6817, 0x0100 }, { 6818, 0x0001 }, { 6819, 0x1010 }, { 6821, 0x3011 },
+ { 6825, 0x0100 }, { 6826, 0x0000 }, { 6826, 0x1130 }, { 6830, 0x0230 },
+ { 6833, 0x0001 }, { 6834, 0x1010 }, { 6836, 0x0000 }, { 6836, 0x1100 },
+ { 6838, 0x0000 }, { 6838, 0x0000 }, { 6838, 0x0200 }, { 6839, 0x8513 },
+ /* 0xc500 */
+ { 6845, 0x1003 }, { 6848, 0x1011 }, { 6851, 0x1300 }, { 6854, 0x2b01 },
+ { 6859, 0x7730 }, { 6867, 0x63b8 }, { 6875, 0x0113 }, { 6879, 0x303b },
+ { 6886, 0xb091 }, { 6892, 0x11a2 }, { 6897, 0x0201 }, { 6899, 0x7b30 },
+ { 6907, 0x57f0 }, { 6916, 0x0113 }, { 6920, 0x702b }, { 6927, 0xf0d1 },
+ /* 0xc600 */
+ { 6935, 0x11e3 }, { 6942, 0x1b01 }, { 6947, 0x7130 }, { 6953, 0x0ab9 },
+ { 6960, 0x0113 }, { 6964, 0x303b }, { 6971, 0x9001 }, { 6974, 0x1302 },
+ { 6978, 0x2b01 }, { 6983, 0x1130 }, { 6987, 0x02b0 }, { 6991, 0x0713 },
+ { 6997, 0x302b }, { 7003, 0x3011 }, { 7007, 0x1303 }, { 7012, 0x2301 },
+ /* 0xc700 */
+ { 7016, 0x1130 }, { 7020, 0x02b0 }, { 7024, 0x0113 }, { 7028, 0x30ab },
+ { 7035, 0xb411 }, { 7041, 0x11fe }, { 7050, 0x0901 }, { 7053, 0x7130 },
+ { 7059, 0x47b8 }, { 7067, 0x05d3 }, { 7074, 0x307b }, { 7082, 0xb011 },
+ { 7087, 0x5303 }, { 7093, 0x2101 }, { 7096, 0x1110 }, { 7099, 0x0000 },
+ /* 0xc800 */
+ { 7099, 0x0513 }, { 7104, 0x306b }, { 7111, 0xb011 }, { 7116, 0x1102 },
+ { 7119, 0x3301 }, { 7124, 0x0010 }, { 7125, 0x0000 }, { 7125, 0x0513 },
+ { 7130, 0x38eb }, { 7139, 0xa010 }, { 7142, 0x0102 }, { 7144, 0x3000 },
+ { 7146, 0x1110 }, { 7149, 0x02b0 }, { 7153, 0x0013 }, { 7156, 0x3020 },
+ /* 0xc900 */
+ { 7159, 0xb071 }, { 7166, 0x0102 }, { 7168, 0x1000 }, { 7169, 0x0010 },
+ { 7170, 0x0000 }, { 7170, 0x0113 }, { 7174, 0x100b }, { 7178, 0x1011 },
+ { 7181, 0x1300 }, { 7184, 0x2b01 }, { 7189, 0x0000 }, { 7189, 0x0000 },
+ { 7189, 0x0593 }, { 7195, 0x366b }, { 7204, 0xb095 }, { 7211, 0x1303 },
+ /* 0xca00 */
+ { 7216, 0x3b01 }, { 7222, 0x0110 }, { 7224, 0x0200 }, { 7225, 0x0000 },
+ { 7225, 0x3000 }, { 7227, 0xb011 }, { 7232, 0x0103 }, { 7235, 0x2000 },
+ { 7236, 0x0010 }, { 7237, 0x0100 }, { 7238, 0x0000 }, { 7238, 0x3000 },
+ { 7240, 0xb011 }, { 7245, 0x030a }, { 7249, 0x1001 }, { 7251, 0x0010 },
+ /* 0xcb00 */
+ { 7252, 0x0100 }, { 7253, 0x0111 }, { 7256, 0x0003 }, { 7258, 0x0000 },
+ { 7258, 0x1302 }, { 7262, 0x2301 }, { 7266, 0x0010 }, { 7267, 0x0300 },
+ { 7269, 0x0000 }, { 7269, 0x1000 }, { 7270, 0x0000 }, { 7270, 0x0100 },
+ { 7271, 0x0000 }, { 7271, 0x0010 }, { 7272, 0x0290 }, { 7275, 0x0000 },
+ /* 0xcc00 */
+ { 7275, 0x3000 }, { 7277, 0x3011 }, { 7281, 0x5386 }, { 7288, 0x7b01 },
+ { 7295, 0x1130 }, { 7299, 0x03b0 }, { 7304, 0x0151 }, { 7308, 0x0021 },
+ { 7310, 0x0000 }, { 7310, 0x1300 }, { 7313, 0x3b01 }, { 7319, 0x1130 },
+ { 7323, 0x02b0 }, { 7327, 0x0011 }, { 7329, 0x1010 }, { 7331, 0x0001 },
+ /* 0xcd00 */
+ { 7332, 0x1302 }, { 7336, 0x2b01 }, { 7341, 0x1110 }, { 7344, 0x0200 },
+ { 7345, 0x0000 }, { 7345, 0x1000 }, { 7346, 0xb011 }, { 7351, 0x0102 },
+ { 7353, 0x0100 }, { 7354, 0x1130 }, { 7358, 0x02b0 }, { 7362, 0x0001 },
+ { 7363, 0x1010 }, { 7365, 0x0001 }, { 7366, 0x1100 }, { 7368, 0x2b01 },
+ /* 0xce00 */
+ { 7373, 0x1110 }, { 7376, 0x0210 }, { 7378, 0x0113 }, { 7382, 0x002b },
+ { 7386, 0x0000 }, { 7386, 0x9300 }, { 7390, 0x2b03 }, { 7396, 0x1130 },
+ { 7400, 0x02b0 }, { 7404, 0x0113 }, { 7408, 0x303b }, { 7415, 0x0000 },
+ { 7415, 0x0002 }, { 7416, 0x0000 }, { 7416, 0x1930 }, { 7421, 0x03b0 },
+ /* 0xcf00 */
+ { 7426, 0x0113 }, { 7430, 0x102b }, { 7435, 0xb011 }, { 7440, 0x0103 },
+ { 7443, 0x0000 }, { 7443, 0x1130 }, { 7447, 0x02b0 }, { 7451, 0x0113 },
+ { 7455, 0x1021 }, { 7458, 0x0000 }, { 7458, 0x0102 }, { 7460, 0x0001 },
+ { 7461, 0x0010 }, { 7462, 0x0000 }, { 7462, 0x0113 }, { 7466, 0x102b },
+ /* 0xd000 */
+ { 7471, 0x0011 }, { 7473, 0x0102 }, { 7475, 0x2000 }, { 7476, 0x1130 },
+ { 7480, 0x02b0 }, { 7484, 0x0111 }, { 7487, 0x3001 }, { 7490, 0x3011 },
+ { 7494, 0x0002 }, { 7495, 0x0000 }, { 7495, 0x1130 }, { 7499, 0x02b0 },
+ { 7503, 0x0313 }, { 7508, 0x303b }, { 7515, 0xb011 }, { 7520, 0x0103 },
+ /* 0xd100 */
+ { 7523, 0x2000 }, { 7524, 0x0000 }, { 7524, 0x0000 }, { 7524, 0x0513 },
+ { 7529, 0x303b }, { 7536, 0xb011 }, { 7541, 0x1102 }, { 7544, 0x1000 },
+ { 7545, 0x0110 }, { 7547, 0x0000 }, { 7547, 0x0113 }, { 7551, 0x142b },
+ { 7557, 0x0001 }, { 7558, 0x0100 }, { 7559, 0x0000 }, { 7559, 0x0110 },
+ /* 0xd200 */
+ { 7561, 0x0280 }, { 7563, 0x0001 }, { 7564, 0x3000 }, { 7566, 0xb011 },
+ { 7571, 0x0102 }, { 7573, 0x1000 }, { 7574, 0x0010 }, { 7575, 0x0000 },
+ { 7575, 0x0113 }, { 7579, 0x1023 }, { 7583, 0x1011 }, { 7586, 0x9302 },
+ { 7591, 0x0b05 }, { 7596, 0x1110 }, { 7599, 0x0030 }, { 7601, 0x0113 },
+ /* 0xd300 */
+ { 7605, 0x702b }, { 7612, 0xb051 }, { 7618, 0x1323 }, { 7624, 0x3b01 },
+ { 7630, 0x0030 }, { 7632, 0x0000 }, { 7632, 0x0000 }, { 7632, 0x3000 },
+ { 7634, 0xb011 }, { 7639, 0x1303 }, { 7644, 0x2b01 }, { 7649, 0x1110 },
+ { 7652, 0x0330 }, { 7656, 0x0101 }, { 7658, 0x300a }, { 7662, 0xb011 },
+ /* 0xd400 */
+ { 7667, 0x0102 }, { 7669, 0x2000 }, { 7670, 0x0000 }, { 7670, 0x0000 },
+ { 7670, 0x0011 }, { 7672, 0x1000 }, { 7673, 0xa011 }, { 7677, 0x9300 },
+ { 7681, 0x2b05 }, { 7687, 0x0010 }, { 7688, 0x0200 }, { 7689, 0x0000 },
+ { 7689, 0x1000 }, { 7690, 0x9011 }, { 7694, 0x1100 }, { 7696, 0x2901 },
+ /* 0xd500 */
+ { 7700, 0x1110 }, { 7703, 0x00b0 }, { 7706, 0x0000 }, { 7706, 0x3000 },
+ { 7708, 0xb011 }, { 7713, 0x1302 }, { 7717, 0x2b21 }, { 7723, 0x1130 },
+ { 7727, 0x03b0 }, { 7732, 0x0001 }, { 7733, 0x0020 }, { 7734, 0x0000 },
+ { 7734, 0x1300 }, { 7737, 0x2b05 }, { 7743, 0x1130 }, { 7747, 0x02b0 },
+ /* 0xd600 */
+ { 7751, 0x0113 }, { 7755, 0x103b }, { 7761, 0x2011 }, { 7764, 0x1300 },
+ { 7767, 0x2b21 }, { 7773, 0x1132 }, { 7778, 0x0280 }, { 7780, 0x0013 },
+ { 7783, 0x3028 }, { 7787, 0xa011 }, { 7791, 0x1102 }, { 7794, 0x0a01 },
+ { 7797, 0x1130 }, { 7801, 0x0292 }, { 7805, 0x0111 }, { 7808, 0x3021 },
+ /* 0xd700 */
+ { 7812, 0x0011 }, { 7814, 0x1302 }, { 7818, 0x2b01 }, { 7823, 0x1130 },
+ { 7827, 0x0290 }, { 7830, 0x03d3 }, { 7837, 0x122b }, { 7843, 0x3011 },
+ { 7847, 0x1302 }, { 7851, 0x2b01 },
+};
+static const Summary16 ksc5601_uni2indx_pagef9[17] = {
+ /* 0xf900 */
+ { 7856, 0xffff }, { 7872, 0xffff }, { 7888, 0xffff }, { 7904, 0xffff },
+ { 7920, 0xffff }, { 7936, 0xffff }, { 7952, 0xffff }, { 7968, 0xffff },
+ { 7984, 0xffff }, { 8000, 0xffff }, { 8016, 0xffff }, { 8032, 0xffff },
+ { 8048, 0xffff }, { 8064, 0xffff }, { 8080, 0xffff }, { 8096, 0xffff },
+ /* 0xfa00 */
+ { 8112, 0x0fff },
+};
+static const Summary16 ksc5601_uni2indx_pageff[15] = {
+ /* 0xff00 */
+ { 8124, 0xfffe }, { 8139, 0xffff }, { 8155, 0xffff }, { 8171, 0xffff },
+ { 8187, 0xffff }, { 8203, 0x7fff }, { 8218, 0x0000 }, { 8218, 0x0000 },
+ { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 },
+ { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x006f },
+};
+
+static int
+ksc5601_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc < 0x0460)
+ summary = &ksc5601_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x2000 && wc < 0x2670) /* General Punctuation (2000, 206F) */
+ summary = &ksc5601_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x3000 && wc < 0x33e0) /* CJK Symbols and Punctuation (3000, 303F) */
+ summary = &ksc5601_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fa0) /* CJK Unified Ideographs (4E00, 9FFF) */
+ summary = &ksc5601_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xac00 && wc < 0xd7a0) /* Hangul Syllables (AC00, D7AF) 11183 */
+ summary = &ksc5601_uni2indx_pageac[(wc>>4)-0xac0];
+ else if (wc >= 0xf900 && wc < 0xfa10) /* CJK Compatibility Ideographs (F900, FAFF) */
+ summary = &ksc5601_uni2indx_pagef9[(wc>>4)-0xf90];
+ else if (wc >= 0xff00 && wc < 0xfff0) /* Halfwidth and Fullwidth Forms (FF00, FFEF) */
+ summary = &ksc5601_uni2indx_pageff[(wc>>4)-0xff0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = ksc5601_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/mulelao.h b/libX11/src/xlibi18n/lcUniConv/mulelao.h
index 5b8245762..98a8658d5 100644
--- a/libX11/src/xlibi18n/lcUniConv/mulelao.h
+++ b/libX11/src/xlibi18n/lcUniConv/mulelao.h
@@ -1,77 +1,77 @@
-
-/*
- * MULELAO-1
- */
-
-static const unsigned short mulelao_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0e81, 0x0e82, 0xfffd, 0x0e84, 0xfffd, 0xfffd, 0x0e87,
- 0x0e88, 0xfffd, 0x0e8a, 0xfffd, 0xfffd, 0x0e8d, 0xfffd, 0xfffd,
- /* 0xb0 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e94, 0x0e95, 0x0e96, 0x0e97,
- 0xfffd, 0x0e99, 0x0e9a, 0x0e9b, 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f,
- /* 0xc0 */
- 0xfffd, 0x0ea1, 0x0ea2, 0x0ea3, 0xfffd, 0x0ea5, 0xfffd, 0x0ea7,
- 0xfffd, 0xfffd, 0x0eaa, 0x0eab, 0xfffd, 0x0ead, 0x0eae, 0x0eaf,
- /* 0xd0 */
- 0x0eb0, 0x0eb1, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7,
- 0x0eb8, 0x0eb9, 0xfffd, 0x0ebb, 0x0ebc, 0x0ebd, 0xfffd, 0xfffd,
- /* 0xe0 */
- 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0xfffd, 0x0ec6, 0xfffd,
- 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0xfffd, 0xfffd,
- /* 0xf0 */
- 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
- 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x0edc, 0x0edd, 0xfffd, 0xfffd,
-};
-
-static int
-mulelao_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = mulelao_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char mulelao_page0e[96] = {
- 0x00, 0xa1, 0xa2, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0x80-0x87 */
- 0xa8, 0x00, 0xaa, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x90-0x97 */
- 0x00, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x98-0x9f */
- 0x00, 0xc1, 0xc2, 0xc3, 0x00, 0xc5, 0x00, 0xc7, /* 0xa0-0xa7 */
- 0x00, 0x00, 0xca, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xa8-0xaf */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xb0-0xb7 */
- 0xd8, 0xd9, 0x00, 0xdb, 0xdc, 0xdd, 0x00, 0x00, /* 0xb8-0xbf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x00, 0xe6, 0x00, /* 0xc0-0xc7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x00, 0x00, /* 0xc8-0xcf */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
- 0xf8, 0xf9, 0x00, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */
-};
-
-static int
-mulelao_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc == 0x00a0)
- c = 0xa0;
- else if (wc >= 0x0e80 && wc < 0x0ee0)
- c = mulelao_page0e[wc-0x0e80];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * MULELAO-1
+ */
+
+static const unsigned short mulelao_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0e81, 0x0e82, 0xfffd, 0x0e84, 0xfffd, 0xfffd, 0x0e87,
+ 0x0e88, 0xfffd, 0x0e8a, 0xfffd, 0xfffd, 0x0e8d, 0xfffd, 0xfffd,
+ /* 0xb0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e94, 0x0e95, 0x0e96, 0x0e97,
+ 0xfffd, 0x0e99, 0x0e9a, 0x0e9b, 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f,
+ /* 0xc0 */
+ 0xfffd, 0x0ea1, 0x0ea2, 0x0ea3, 0xfffd, 0x0ea5, 0xfffd, 0x0ea7,
+ 0xfffd, 0xfffd, 0x0eaa, 0x0eab, 0xfffd, 0x0ead, 0x0eae, 0x0eaf,
+ /* 0xd0 */
+ 0x0eb0, 0x0eb1, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7,
+ 0x0eb8, 0x0eb9, 0xfffd, 0x0ebb, 0x0ebc, 0x0ebd, 0xfffd, 0xfffd,
+ /* 0xe0 */
+ 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0xfffd, 0x0ec6, 0xfffd,
+ 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0xfffd, 0xfffd,
+ /* 0xf0 */
+ 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
+ 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x0edc, 0x0edd, 0xfffd, 0xfffd,
+};
+
+static int
+mulelao_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = mulelao_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char mulelao_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0x80-0x87 */
+ 0xa8, 0x00, 0xaa, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x90-0x97 */
+ 0x00, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x98-0x9f */
+ 0x00, 0xc1, 0xc2, 0xc3, 0x00, 0xc5, 0x00, 0xc7, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0xca, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xa8-0xaf */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xb0-0xb7 */
+ 0xd8, 0xd9, 0x00, 0xdb, 0xdc, 0xdd, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x00, 0xe6, 0x00, /* 0xc0-0xc7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x00, 0x00, /* 0xc8-0xcf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
+ 0xf8, 0xf9, 0x00, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+mulelao_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc == 0x00a0)
+ c = 0xa0;
+ else if (wc >= 0x0e80 && wc < 0x0ee0)
+ c = mulelao_page0e[wc-0x0e80];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/tatar_cyr.h b/libX11/src/xlibi18n/lcUniConv/tatar_cyr.h
index 471e5a79a..cfeb3e110 100644
--- a/libX11/src/xlibi18n/lcUniConv/tatar_cyr.h
+++ b/libX11/src/xlibi18n/lcUniConv/tatar_cyr.h
@@ -1,122 +1,122 @@
-
-/*
- * TATAR-CYR
- */
-
-static const unsigned short tatar_cyr_2uni[128] = {
- /* 0x80 */
- 0x04d8, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x20ac, 0x2030, 0x04e8, 0x2039, 0x04ae, 0x0496, 0x04a2, 0x04ba,
- /* 0x90 */
- 0x04d9, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x98, 0x2122, 0x04e9, 0x203a, 0x04af, 0x0497, 0x04a3, 0x04bb,
- /* 0xa0 */
- 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
- 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
- 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
- /* 0xc0 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
- 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
- /* 0xd0 */
- 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
- 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
- /* 0xe0 */
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
- 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
- /* 0xf0 */
- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
- 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
-};
-
-static int
-tatar_cyr_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) tatar_cyr_2uni[c-0x80];
- return 1;
-}
-
-static const unsigned char tatar_cyr_page00[32] = {
- 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
-};
-static const unsigned char tatar_cyr_page04[240] = {
- 0x00, 0xa8, 0x00, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
- 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, /* 0x08-0x0f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
- 0x00, 0xb8, 0x00, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
- 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x9d, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0x00, 0x00, 0x8e, 0x9e, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x9c, /* 0xa8-0xaf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x8f, 0x9f, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x80, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
-};
-static const unsigned char tatar_cyr_page20[48] = {
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-static const unsigned char tatar_cyr_page21[24] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
-};
-static const unsigned char tatar_cyr_page22[1] = {
- 0xb0, /* 0x16-0x16 */
-};
-
-static int
-tatar_cyr_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00bc)
- c = tatar_cyr_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x04ef)
- c = tatar_cyr_page04[wc-0x0400];
- else if (wc >= 0x2010 && wc < 0x203b)
- c = tatar_cyr_page20[wc-0x2010];
- else if (wc == 0x20ac)
- c = 0x88;
- else if (wc >= 0x2110 && wc < 0x2123)
- c = tatar_cyr_page21[wc-0x2110];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * TATAR-CYR
+ */
+
+static const unsigned short tatar_cyr_2uni[128] = {
+ /* 0x80 */
+ 0x04d8, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x20ac, 0x2030, 0x04e8, 0x2039, 0x04ae, 0x0496, 0x04a2, 0x04ba,
+ /* 0x90 */
+ 0x04d9, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x98, 0x2122, 0x04e9, 0x203a, 0x04af, 0x0497, 0x04a3, 0x04bb,
+ /* 0xa0 */
+ 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
+ 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
+ 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
+ /* 0xc0 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ /* 0xd0 */
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ /* 0xe0 */
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ /* 0xf0 */
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+};
+
+static int
+tatar_cyr_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) tatar_cyr_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char tatar_cyr_page00[32] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char tatar_cyr_page04[240] = {
+ 0x00, 0xa8, 0x00, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
+ 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, /* 0x08-0x0f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
+ 0x00, 0xb8, 0x00, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
+ 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x9d, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x00, 0x00, 0x8e, 0x9e, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x9c, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x8f, 0x9f, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x80, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+};
+static const unsigned char tatar_cyr_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+static const unsigned char tatar_cyr_page21[24] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char tatar_cyr_page22[1] = {
+ 0xb0, /* 0x16-0x16 */
+};
+
+static int
+tatar_cyr_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00bc)
+ c = tatar_cyr_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x04ef)
+ c = tatar_cyr_page04[wc-0x0400];
+ else if (wc >= 0x2010 && wc < 0x203b)
+ c = tatar_cyr_page20[wc-0x2010];
+ else if (wc == 0x20ac)
+ c = 0x88;
+ else if (wc >= 0x2110 && wc < 0x2123)
+ c = tatar_cyr_page21[wc-0x2110];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/tcvn.h b/libX11/src/xlibi18n/lcUniConv/tcvn.h
index 4662683dc..953a1f4fd 100644
--- a/libX11/src/xlibi18n/lcUniConv/tcvn.h
+++ b/libX11/src/xlibi18n/lcUniConv/tcvn.h
@@ -1,133 +1,133 @@
-
-/*
- * TCVN-5712
- */
-
-static const unsigned short tcvn_2uni_1[32] = {
- /* 0x00 */
- 0x0000, 0x00da, 0x1ee4, 0x0003, 0x1eea, 0x1eec, 0x1eee, 0x0007,
- 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
- /* 0x10 */
- 0x0010, 0x1ee8, 0x1ef0, 0x1ef2, 0x1ef6, 0x1ef8, 0x00dd, 0x1ef4,
- 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
-};
-static const unsigned short tcvn_2uni_2[128] = {
- /* 0x80 */
- 0x00c0, 0x1ea2, 0x00c3, 0x00c1, 0x1ea0, 0x1eb6, 0x1eac, 0x00c8,
- 0x1eba, 0x1ebc, 0x00c9, 0x1eb8, 0x1ec6, 0x00cc, 0x1ec8, 0x0128,
- /* 0x90 */
- 0x00cd, 0x1eca, 0x00d2, 0x1ece, 0x00d5, 0x00d3, 0x1ecc, 0x1ed8,
- 0x1edc, 0x1ede, 0x1ee0, 0x1eda, 0x1ee2, 0x00d9, 0x1ee6, 0x0168,
- /* 0xa0 */
- 0x00a0, 0x0102, 0x00c2, 0x00ca, 0x00d4, 0x01a0, 0x01af, 0x0110,
- 0x0103, 0x00e2, 0x00ea, 0x00f4, 0x01a1, 0x01b0, 0x0111, 0x1eb0,
- /* 0xb0 */
- 0x0300, 0x0309, 0x0303, 0x0301, 0x0323, 0x00e0, 0x1ea3, 0x00e3,
- 0x00e1, 0x1ea1, 0x1eb2, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eaf, 0x1eb4,
- /* 0xc0 */
- 0x1eae, 0x1ea6, 0x1ea8, 0x1eaa, 0x1ea4, 0x1ec0, 0x1eb7, 0x1ea7,
- 0x1ea9, 0x1eab, 0x1ea5, 0x1ead, 0x00e8, 0x1ec2, 0x1ebb, 0x1ebd,
- /* 0xd0 */
- 0x00e9, 0x1eb9, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ebf, 0x1ec7, 0x00ec,
- 0x1ec9, 0x1ec4, 0x1ebe, 0x1ed2, 0x0129, 0x00ed, 0x1ecb, 0x00f2,
- /* 0xe0 */
- 0x1ed4, 0x1ecf, 0x00f5, 0x00f3, 0x1ecd, 0x1ed3, 0x1ed5, 0x1ed7,
- 0x1ed1, 0x1ed9, 0x1edd, 0x1edf, 0x1ee1, 0x1edb, 0x1ee3, 0x00f9,
- /* 0xf0 */
- 0x1ed6, 0x1ee7, 0x0169, 0x00fa, 0x1ee5, 0x1eeb, 0x1eed, 0x1eef,
- 0x1ee9, 0x1ef1, 0x1ef3, 0x1ef7, 0x1ef9, 0x00fd, 0x1ef5, 0x1ed0,
-};
-
-static int
-tcvn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x20)
- *pwc = (ucs4_t) tcvn_2uni_1[c];
- else if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) tcvn_2uni_2[c-0x80];
- return 1;
-}
-
-static const unsigned char tcvn_page00[96+184] = {
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x80, 0x83, 0xa2, 0x82, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x87, 0x8a, 0xa3, 0x00, 0x8d, 0x90, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x92, 0x95, 0xa4, 0x94, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x9d, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, /* 0xd8-0xdf */
- 0xb5, 0xb8, 0xa9, 0xb7, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0xcc, 0xd0, 0xaa, 0x00, 0xd7, 0xdd, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0xdf, 0xe3, 0xab, 0xe2, 0x00, 0x00, /* 0xf0-0xf7 */
- 0x00, 0xef, 0xf3, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0x00, 0x00, 0xa1, 0xa8, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0xa7, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x8f, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x9f, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0xa5, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, /* 0xa8-0xaf */
- 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
-};
-static const unsigned char tcvn_page03[40] = {
- 0xb0, 0xb3, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
-};
-static const unsigned char tcvn_page1e[96] = {
- 0x84, 0xb9, 0x81, 0xb6, 0xc4, 0xca, 0xc1, 0xc7, /* 0xa0-0xa7 */
- 0xc2, 0xc8, 0xc3, 0xc9, 0x86, 0xcb, 0xc0, 0xbe, /* 0xa8-0xaf */
- 0xaf, 0xbb, 0xba, 0xbc, 0xbf, 0xbd, 0x85, 0xc6, /* 0xb0-0xb7 */
- 0x8b, 0xd1, 0x88, 0xce, 0x89, 0xcf, 0xda, 0xd5, /* 0xb8-0xbf */
- 0xc5, 0xd2, 0xcd, 0xd3, 0xd9, 0xd4, 0x8c, 0xd6, /* 0xc0-0xc7 */
- 0x8e, 0xd8, 0x91, 0xde, 0x96, 0xe4, 0x93, 0xe1, /* 0xc8-0xcf */
- 0xff, 0xe8, 0xdb, 0xe5, 0xe0, 0xe6, 0xf0, 0xe7, /* 0xd0-0xd7 */
- 0x97, 0xe9, 0x9b, 0xed, 0x98, 0xea, 0x99, 0xeb, /* 0xd8-0xdf */
- 0x9a, 0xec, 0x9c, 0xee, 0x02, 0xf4, 0x9e, 0xf1, /* 0xe0-0xe7 */
- 0x11, 0xf8, 0x04, 0xf5, 0x05, 0xf6, 0x06, 0xf7, /* 0xe8-0xef */
- 0x12, 0xf9, 0x13, 0xfa, 0x17, 0xfe, 0x14, 0xfb, /* 0xf0-0xf7 */
- 0x15, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
-};
-
-static int
-tcvn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080 && (wc >= 0x0020 || (0x00fe0076 & (1 << wc)) == 0)) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x01b8)
- c = tcvn_page00[wc-0x00a0];
- else if (wc >= 0x0300 && wc < 0x0328)
- c = tcvn_page03[wc-0x0300];
- else if (wc >= 0x1ea0 && wc < 0x1f00)
- c = tcvn_page1e[wc-0x1ea0];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * TCVN-5712
+ */
+
+static const unsigned short tcvn_2uni_1[32] = {
+ /* 0x00 */
+ 0x0000, 0x00da, 0x1ee4, 0x0003, 0x1eea, 0x1eec, 0x1eee, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ /* 0x10 */
+ 0x0010, 0x1ee8, 0x1ef0, 0x1ef2, 0x1ef6, 0x1ef8, 0x00dd, 0x1ef4,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+};
+static const unsigned short tcvn_2uni_2[128] = {
+ /* 0x80 */
+ 0x00c0, 0x1ea2, 0x00c3, 0x00c1, 0x1ea0, 0x1eb6, 0x1eac, 0x00c8,
+ 0x1eba, 0x1ebc, 0x00c9, 0x1eb8, 0x1ec6, 0x00cc, 0x1ec8, 0x0128,
+ /* 0x90 */
+ 0x00cd, 0x1eca, 0x00d2, 0x1ece, 0x00d5, 0x00d3, 0x1ecc, 0x1ed8,
+ 0x1edc, 0x1ede, 0x1ee0, 0x1eda, 0x1ee2, 0x00d9, 0x1ee6, 0x0168,
+ /* 0xa0 */
+ 0x00a0, 0x0102, 0x00c2, 0x00ca, 0x00d4, 0x01a0, 0x01af, 0x0110,
+ 0x0103, 0x00e2, 0x00ea, 0x00f4, 0x01a1, 0x01b0, 0x0111, 0x1eb0,
+ /* 0xb0 */
+ 0x0300, 0x0309, 0x0303, 0x0301, 0x0323, 0x00e0, 0x1ea3, 0x00e3,
+ 0x00e1, 0x1ea1, 0x1eb2, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eaf, 0x1eb4,
+ /* 0xc0 */
+ 0x1eae, 0x1ea6, 0x1ea8, 0x1eaa, 0x1ea4, 0x1ec0, 0x1eb7, 0x1ea7,
+ 0x1ea9, 0x1eab, 0x1ea5, 0x1ead, 0x00e8, 0x1ec2, 0x1ebb, 0x1ebd,
+ /* 0xd0 */
+ 0x00e9, 0x1eb9, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ebf, 0x1ec7, 0x00ec,
+ 0x1ec9, 0x1ec4, 0x1ebe, 0x1ed2, 0x0129, 0x00ed, 0x1ecb, 0x00f2,
+ /* 0xe0 */
+ 0x1ed4, 0x1ecf, 0x00f5, 0x00f3, 0x1ecd, 0x1ed3, 0x1ed5, 0x1ed7,
+ 0x1ed1, 0x1ed9, 0x1edd, 0x1edf, 0x1ee1, 0x1edb, 0x1ee3, 0x00f9,
+ /* 0xf0 */
+ 0x1ed6, 0x1ee7, 0x0169, 0x00fa, 0x1ee5, 0x1eeb, 0x1eed, 0x1eef,
+ 0x1ee9, 0x1ef1, 0x1ef3, 0x1ef7, 0x1ef9, 0x00fd, 0x1ef5, 0x1ed0,
+};
+
+static int
+tcvn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x20)
+ *pwc = (ucs4_t) tcvn_2uni_1[c];
+ else if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) tcvn_2uni_2[c-0x80];
+ return 1;
+}
+
+static const unsigned char tcvn_page00[96+184] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x80, 0x83, 0xa2, 0x82, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x87, 0x8a, 0xa3, 0x00, 0x8d, 0x90, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x92, 0x95, 0xa4, 0x94, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x9d, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, /* 0xd8-0xdf */
+ 0xb5, 0xb8, 0xa9, 0xb7, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0xcc, 0xd0, 0xaa, 0x00, 0xd7, 0xdd, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0xdf, 0xe3, 0xab, 0xe2, 0x00, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xef, 0xf3, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xa1, 0xa8, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xa7, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x8f, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x9f, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0xa5, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, /* 0xa8-0xaf */
+ 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+};
+static const unsigned char tcvn_page03[40] = {
+ 0xb0, 0xb3, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char tcvn_page1e[96] = {
+ 0x84, 0xb9, 0x81, 0xb6, 0xc4, 0xca, 0xc1, 0xc7, /* 0xa0-0xa7 */
+ 0xc2, 0xc8, 0xc3, 0xc9, 0x86, 0xcb, 0xc0, 0xbe, /* 0xa8-0xaf */
+ 0xaf, 0xbb, 0xba, 0xbc, 0xbf, 0xbd, 0x85, 0xc6, /* 0xb0-0xb7 */
+ 0x8b, 0xd1, 0x88, 0xce, 0x89, 0xcf, 0xda, 0xd5, /* 0xb8-0xbf */
+ 0xc5, 0xd2, 0xcd, 0xd3, 0xd9, 0xd4, 0x8c, 0xd6, /* 0xc0-0xc7 */
+ 0x8e, 0xd8, 0x91, 0xde, 0x96, 0xe4, 0x93, 0xe1, /* 0xc8-0xcf */
+ 0xff, 0xe8, 0xdb, 0xe5, 0xe0, 0xe6, 0xf0, 0xe7, /* 0xd0-0xd7 */
+ 0x97, 0xe9, 0x9b, 0xed, 0x98, 0xea, 0x99, 0xeb, /* 0xd8-0xdf */
+ 0x9a, 0xec, 0x9c, 0xee, 0x02, 0xf4, 0x9e, 0xf1, /* 0xe0-0xe7 */
+ 0x11, 0xf8, 0x04, 0xf5, 0x05, 0xf6, 0x06, 0xf7, /* 0xe8-0xef */
+ 0x12, 0xf9, 0x13, 0xfa, 0x17, 0xfe, 0x14, 0xfb, /* 0xf0-0xf7 */
+ 0x15, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+
+static int
+tcvn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080 && (wc >= 0x0020 || (0x00fe0076 & (1 << wc)) == 0)) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x01b8)
+ c = tcvn_page00[wc-0x00a0];
+ else if (wc >= 0x0300 && wc < 0x0328)
+ c = tcvn_page03[wc-0x0300];
+ else if (wc >= 0x1ea0 && wc < 0x1f00)
+ c = tcvn_page1e[wc-0x1ea0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/tis620.h b/libX11/src/xlibi18n/lcUniConv/tis620.h
index 4fa96ec98..0e3184a5c 100644
--- a/libX11/src/xlibi18n/lcUniConv/tis620.h
+++ b/libX11/src/xlibi18n/lcUniConv/tis620.h
@@ -1,77 +1,77 @@
-
-/*
- * TIS620-0
- */
-
-static const unsigned short tis620_2uni[96] = {
- /* 0xa0 */
- 0xfffd, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
- 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
- /* 0xb0 */
- 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
- 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
- /* 0xc0 */
- 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
- 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
- /* 0xd0 */
- 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
- 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
- /* 0xe0 */
- 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
- 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
- /* 0xf0 */
- 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
- 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
-};
-
-static int
-tis620_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else if (c < 0xa0) {
- }
- else {
- unsigned short wc = tis620_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char tis620_page0e[96] = {
- 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
- 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
- 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
-};
-
-static int
-tis620_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x0e00 && wc < 0x0e60)
- c = tis620_page0e[wc-0x0e00];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * TIS620-0
+ */
+
+static const unsigned short tis620_2uni[96] = {
+ /* 0xa0 */
+ 0xfffd, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+ /* 0xb0 */
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+ /* 0xc0 */
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+ /* 0xd0 */
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
+ /* 0xe0 */
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+ /* 0xf0 */
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+ 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+};
+
+static int
+tis620_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else if (c < 0xa0) {
+ }
+ else {
+ unsigned short wc = tis620_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char tis620_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+};
+
+static int
+tis620_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0e00 && wc < 0x0e60)
+ c = tis620_page0e[wc-0x0e00];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/ucs2be.h b/libX11/src/xlibi18n/lcUniConv/ucs2be.h
index 20a8b27bd..958d25051 100644
--- a/libX11/src/xlibi18n/lcUniConv/ucs2be.h
+++ b/libX11/src/xlibi18n/lcUniConv/ucs2be.h
@@ -1,31 +1,31 @@
-/*
- * UCS-2BE = UCS-2 big endian
- */
-
-static int
-ucs2be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- if (n >= 2) {
- if (s[0] >= 0xd8 && s[0] < 0xe0) {
- return RET_ILSEQ;
- } else {
- *pwc = (s[0] << 8) + s[1];
- return 2;
- }
- }
- return RET_TOOFEW(0);
-}
-
-static int
-ucs2be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) {
- if (n >= 2) {
- r[0] = (unsigned char) (wc >> 8);
- r[1] = (unsigned char) wc;
- return 2;
- } else
- return RET_TOOSMALL;
- }
- return RET_ILSEQ;
-}
+/*
+ * UCS-2BE = UCS-2 big endian
+ */
+
+static int
+ucs2be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ if (n >= 2) {
+ if (s[0] >= 0xd8 && s[0] < 0xe0) {
+ return RET_ILSEQ;
+ } else {
+ *pwc = (s[0] << 8) + s[1];
+ return 2;
+ }
+ }
+ return RET_TOOFEW(0);
+}
+
+static int
+ucs2be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) {
+ if (n >= 2) {
+ r[0] = (unsigned char) (wc >> 8);
+ r[1] = (unsigned char) wc;
+ return 2;
+ } else
+ return RET_TOOSMALL;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/utf8.h b/libX11/src/xlibi18n/lcUniConv/utf8.h
index d00995ca0..ef0f7303f 100644
--- a/libX11/src/xlibi18n/lcUniConv/utf8.h
+++ b/libX11/src/xlibi18n/lcUniConv/utf8.h
@@ -1,109 +1,109 @@
-
-/*
- * UTF-8
- */
-
-/* Specification: RFC 2279 */
-
-static int
-utf8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = s[0];
-
- if (c < 0x80) {
- *pwc = c;
- return 1;
- } else if (c < 0xc2) {
- return RET_ILSEQ;
- } else if (c < 0xe0) {
- if (n < 2)
- return RET_TOOFEW(0);
- if (!((s[1] ^ 0x80) < 0x40))
- return RET_ILSEQ;
- *pwc = ((ucs4_t) (c & 0x1f) << 6)
- | (ucs4_t) (s[1] ^ 0x80);
- return 2;
- } else if (c < 0xf0) {
- if (n < 3)
- return RET_TOOFEW(0);
- if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (c >= 0xe1 || s[1] >= 0xa0)))
- return RET_ILSEQ;
- *pwc = ((ucs4_t) (c & 0x0f) << 12)
- | ((ucs4_t) (s[1] ^ 0x80) << 6)
- | (ucs4_t) (s[2] ^ 0x80);
- return 3;
- } else if (c < 0xf8) {
- if (n < 4)
- return RET_TOOFEW(0);
- if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40
- && (c >= 0xf1 || s[1] >= 0x90)))
- return RET_ILSEQ;
- *pwc = ((ucs4_t) (c & 0x07) << 18)
- | ((ucs4_t) (s[1] ^ 0x80) << 12)
- | ((ucs4_t) (s[2] ^ 0x80) << 6)
- | (ucs4_t) (s[3] ^ 0x80);
- return 4;
- } else if (c < 0xfc) {
- if (n < 5)
- return RET_TOOFEW(0);
- if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (c >= 0xf9 || s[1] >= 0x88)))
- return RET_ILSEQ;
- *pwc = ((ucs4_t) (c & 0x03) << 24)
- | ((ucs4_t) (s[1] ^ 0x80) << 18)
- | ((ucs4_t) (s[2] ^ 0x80) << 12)
- | ((ucs4_t) (s[3] ^ 0x80) << 6)
- | (ucs4_t) (s[4] ^ 0x80);
- return 5;
- } else if (c < 0xfe) {
- if (n < 6)
- return RET_TOOFEW(0);
- if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (s[5] ^ 0x80) < 0x40
- && (c >= 0xfd || s[1] >= 0x84)))
- return RET_ILSEQ;
- *pwc = ((ucs4_t) (c & 0x01) << 30)
- | ((ucs4_t) (s[1] ^ 0x80) << 24)
- | ((ucs4_t) (s[2] ^ 0x80) << 18)
- | ((ucs4_t) (s[3] ^ 0x80) << 12)
- | ((ucs4_t) (s[4] ^ 0x80) << 6)
- | (ucs4_t) (s[5] ^ 0x80);
- return 6;
- } else
- return RET_ILSEQ;
-}
-
-static int
-utf8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) /* n == 0 is acceptable */
-{
- int count;
- if (wc < 0x80)
- count = 1;
- else if (wc < 0x800)
- count = 2;
- else if (wc < 0x10000)
- count = 3;
- else if (wc < 0x200000)
- count = 4;
- else if (wc < 0x4000000)
- count = 5;
- else if (wc <= 0x7fffffff)
- count = 6;
- else
- return RET_ILSEQ;
- if (n < count)
- return RET_TOOSMALL;
- switch (count) { /* note: code falls through cases! */
- case 6: r[5] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x4000000;
- case 5: r[4] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x200000;
- case 4: r[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000;
- case 3: r[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800;
- case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0;
- case 1: r[0] = wc;
- }
- return count;
-}
+
+/*
+ * UTF-8
+ */
+
+/* Specification: RFC 2279 */
+
+static int
+utf8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = s[0];
+
+ if (c < 0x80) {
+ *pwc = c;
+ return 1;
+ } else if (c < 0xc2) {
+ return RET_ILSEQ;
+ } else if (c < 0xe0) {
+ if (n < 2)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x1f) << 6)
+ | (ucs4_t) (s[1] ^ 0x80);
+ return 2;
+ } else if (c < 0xf0) {
+ if (n < 3)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x0f) << 12)
+ | ((ucs4_t) (s[1] ^ 0x80) << 6)
+ | (ucs4_t) (s[2] ^ 0x80);
+ return 3;
+ } else if (c < 0xf8) {
+ if (n < 4)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x07) << 18)
+ | ((ucs4_t) (s[1] ^ 0x80) << 12)
+ | ((ucs4_t) (s[2] ^ 0x80) << 6)
+ | (ucs4_t) (s[3] ^ 0x80);
+ return 4;
+ } else if (c < 0xfc) {
+ if (n < 5)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x03) << 24)
+ | ((ucs4_t) (s[1] ^ 0x80) << 18)
+ | ((ucs4_t) (s[2] ^ 0x80) << 12)
+ | ((ucs4_t) (s[3] ^ 0x80) << 6)
+ | (ucs4_t) (s[4] ^ 0x80);
+ return 5;
+ } else if (c < 0xfe) {
+ if (n < 6)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x01) << 30)
+ | ((ucs4_t) (s[1] ^ 0x80) << 24)
+ | ((ucs4_t) (s[2] ^ 0x80) << 18)
+ | ((ucs4_t) (s[3] ^ 0x80) << 12)
+ | ((ucs4_t) (s[4] ^ 0x80) << 6)
+ | (ucs4_t) (s[5] ^ 0x80);
+ return 6;
+ } else
+ return RET_ILSEQ;
+}
+
+static int
+utf8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) /* n == 0 is acceptable */
+{
+ int count;
+ if (wc < 0x80)
+ count = 1;
+ else if (wc < 0x800)
+ count = 2;
+ else if (wc < 0x10000)
+ count = 3;
+ else if (wc < 0x200000)
+ count = 4;
+ else if (wc < 0x4000000)
+ count = 5;
+ else if (wc <= 0x7fffffff)
+ count = 6;
+ else
+ return RET_ILSEQ;
+ if (n < count)
+ return RET_TOOSMALL;
+ switch (count) { /* note: code falls through cases! */
+ case 6: r[5] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x4000000;
+ case 5: r[4] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x200000;
+ case 4: r[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000;
+ case 3: r[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800;
+ case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0;
+ case 1: r[0] = wc;
+ }
+ return count;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/viscii.h b/libX11/src/xlibi18n/lcUniConv/viscii.h
index d5147e81e..fa1886326 100644
--- a/libX11/src/xlibi18n/lcUniConv/viscii.h
+++ b/libX11/src/xlibi18n/lcUniConv/viscii.h
@@ -1,122 +1,122 @@
-
-/*
- * VISCII1.1-1
- */
-
-/* Specification: RFC 1456 */
-
-static const unsigned short viscii_2uni_1[32] = {
- /* 0x00 */
- 0x0000, 0x0001, 0x1eb2, 0x0003, 0x0004, 0x1eb4, 0x1eaa, 0x0007,
- 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
- /* 0x10 */
- 0x0010, 0x0011, 0x0012, 0x0013, 0x1ef6, 0x0015, 0x0016, 0x0017,
- 0x0018, 0x1ef8, 0x001a, 0x001b, 0x001c, 0x001d, 0x1ef4, 0x001f,
-};
-static const unsigned short viscii_2uni_2[128] = {
- /* 0x80 */
- 0x1ea0, 0x1eae, 0x1eb0, 0x1eb6, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eac,
- 0x1ebc, 0x1eb8, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ed0,
- /* 0x90 */
- 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1ee2, 0x1eda, 0x1edc, 0x1ede,
- 0x1eca, 0x1ece, 0x1ecc, 0x1ec8, 0x1ee6, 0x0168, 0x1ee4, 0x1ef2,
- /* 0xa0 */
- 0x00d5, 0x1eaf, 0x1eb1, 0x1eb7, 0x1ea5, 0x1ea7, 0x1ea9, 0x1ead,
- 0x1ebd, 0x1eb9, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ed1,
- /* 0xb0 */
- 0x1ed3, 0x1ed5, 0x1ed7, 0x1ee0, 0x01a0, 0x1ed9, 0x1edd, 0x1edf,
- 0x1ecb, 0x1ef0, 0x1ee8, 0x1eea, 0x1eec, 0x01a1, 0x1edb, 0x01af,
- /* 0xc0 */
- 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x1ea2, 0x0102, 0x1eb3, 0x1eb5,
- 0x00c8, 0x00c9, 0x00ca, 0x1eba, 0x00cc, 0x00cd, 0x0128, 0x1ef3,
- /* 0xd0 */
- 0x0110, 0x1ee9, 0x00d2, 0x00d3, 0x00d4, 0x1ea1, 0x1ef7, 0x1eeb,
- 0x1eed, 0x00d9, 0x00da, 0x1ef9, 0x1ef5, 0x00dd, 0x1ee1, 0x01b0,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x1ea3, 0x0103, 0x1eef, 0x1eab,
- 0x00e8, 0x00e9, 0x00ea, 0x1ebb, 0x00ec, 0x00ed, 0x0129, 0x1ec9,
- /* 0xf0 */
- 0x0111, 0x1ef1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x1ecf, 0x1ecd,
- 0x1ee5, 0x00f9, 0x00fa, 0x0169, 0x1ee7, 0x00fd, 0x1ee3, 0x1eee,
-};
-
-static int
-viscii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x20)
- *pwc = (ucs4_t) viscii_2uni_1[c];
- else if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) viscii_2uni_2[c-0x80];
- return 1;
-}
-
-static const unsigned char viscii_page00[64+184] = {
- 0xc0, 0xc1, 0xc2, 0xc3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0xc8, 0xc9, 0xca, 0x00, 0xcc, 0xcd, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0xa0, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0xd9, 0xda, 0x00, 0x00, 0xdd, 0x00, 0x00, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0x00, 0xec, 0xed, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0xf5, 0x00, 0x00, /* 0xf0-0xf7 */
- 0x00, 0xf9, 0xfa, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0x00, 0x00, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0xce, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x9d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0xb4, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, /* 0xa8-0xaf */
- 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
-};
-static const unsigned char viscii_page1e[96] = {
- 0x80, 0xd5, 0xc4, 0xe4, 0x84, 0xa4, 0x85, 0xa5, /* 0xa0-0xa7 */
- 0x86, 0xa6, 0x06, 0xe7, 0x87, 0xa7, 0x81, 0xa1, /* 0xa8-0xaf */
- 0x82, 0xa2, 0x02, 0xc6, 0x05, 0xc7, 0x83, 0xa3, /* 0xb0-0xb7 */
- 0x89, 0xa9, 0xcb, 0xeb, 0x88, 0xa8, 0x8a, 0xaa, /* 0xb8-0xbf */
- 0x8b, 0xab, 0x8c, 0xac, 0x8d, 0xad, 0x8e, 0xae, /* 0xc0-0xc7 */
- 0x9b, 0xef, 0x98, 0xb8, 0x9a, 0xf7, 0x99, 0xf6, /* 0xc8-0xcf */
- 0x8f, 0xaf, 0x90, 0xb0, 0x91, 0xb1, 0x92, 0xb2, /* 0xd0-0xd7 */
- 0x93, 0xb5, 0x95, 0xbe, 0x96, 0xb6, 0x97, 0xb7, /* 0xd8-0xdf */
- 0xb3, 0xde, 0x94, 0xfe, 0x9e, 0xf8, 0x9c, 0xfc, /* 0xe0-0xe7 */
- 0xba, 0xd1, 0xbb, 0xd7, 0xbc, 0xd8, 0xff, 0xe6, /* 0xe8-0xef */
- 0xb9, 0xf1, 0x9f, 0xcf, 0x1e, 0xdc, 0x14, 0xd6, /* 0xf0-0xf7 */
- 0x19, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
-};
-
-static int
-viscii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080 && (wc >= 0x0020 || (0x42100064 & (1 << wc)) == 0)) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00c0 && wc < 0x01b8)
- c = viscii_page00[wc-0x00c0];
- else if (wc >= 0x1ea0 && wc < 0x1f00)
- c = viscii_page1e[wc-0x1ea0];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * VISCII1.1-1
+ */
+
+/* Specification: RFC 1456 */
+
+static const unsigned short viscii_2uni_1[32] = {
+ /* 0x00 */
+ 0x0000, 0x0001, 0x1eb2, 0x0003, 0x0004, 0x1eb4, 0x1eaa, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ /* 0x10 */
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x1ef6, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x1ef8, 0x001a, 0x001b, 0x001c, 0x001d, 0x1ef4, 0x001f,
+};
+static const unsigned short viscii_2uni_2[128] = {
+ /* 0x80 */
+ 0x1ea0, 0x1eae, 0x1eb0, 0x1eb6, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eac,
+ 0x1ebc, 0x1eb8, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ed0,
+ /* 0x90 */
+ 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1ee2, 0x1eda, 0x1edc, 0x1ede,
+ 0x1eca, 0x1ece, 0x1ecc, 0x1ec8, 0x1ee6, 0x0168, 0x1ee4, 0x1ef2,
+ /* 0xa0 */
+ 0x00d5, 0x1eaf, 0x1eb1, 0x1eb7, 0x1ea5, 0x1ea7, 0x1ea9, 0x1ead,
+ 0x1ebd, 0x1eb9, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ed1,
+ /* 0xb0 */
+ 0x1ed3, 0x1ed5, 0x1ed7, 0x1ee0, 0x01a0, 0x1ed9, 0x1edd, 0x1edf,
+ 0x1ecb, 0x1ef0, 0x1ee8, 0x1eea, 0x1eec, 0x01a1, 0x1edb, 0x01af,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x1ea2, 0x0102, 0x1eb3, 0x1eb5,
+ 0x00c8, 0x00c9, 0x00ca, 0x1eba, 0x00cc, 0x00cd, 0x0128, 0x1ef3,
+ /* 0xd0 */
+ 0x0110, 0x1ee9, 0x00d2, 0x00d3, 0x00d4, 0x1ea1, 0x1ef7, 0x1eeb,
+ 0x1eed, 0x00d9, 0x00da, 0x1ef9, 0x1ef5, 0x00dd, 0x1ee1, 0x01b0,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x1ea3, 0x0103, 0x1eef, 0x1eab,
+ 0x00e8, 0x00e9, 0x00ea, 0x1ebb, 0x00ec, 0x00ed, 0x0129, 0x1ec9,
+ /* 0xf0 */
+ 0x0111, 0x1ef1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x1ecf, 0x1ecd,
+ 0x1ee5, 0x00f9, 0x00fa, 0x0169, 0x1ee7, 0x00fd, 0x1ee3, 0x1eee,
+};
+
+static int
+viscii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x20)
+ *pwc = (ucs4_t) viscii_2uni_1[c];
+ else if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) viscii_2uni_2[c-0x80];
+ return 1;
+}
+
+static const unsigned char viscii_page00[64+184] = {
+ 0xc0, 0xc1, 0xc2, 0xc3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0x00, 0xcc, 0xcd, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0xa0, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0x00, 0x00, 0xdd, 0x00, 0x00, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0x00, 0xec, 0xed, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0xf5, 0x00, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0xce, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x9d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0xb4, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, /* 0xa8-0xaf */
+ 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+};
+static const unsigned char viscii_page1e[96] = {
+ 0x80, 0xd5, 0xc4, 0xe4, 0x84, 0xa4, 0x85, 0xa5, /* 0xa0-0xa7 */
+ 0x86, 0xa6, 0x06, 0xe7, 0x87, 0xa7, 0x81, 0xa1, /* 0xa8-0xaf */
+ 0x82, 0xa2, 0x02, 0xc6, 0x05, 0xc7, 0x83, 0xa3, /* 0xb0-0xb7 */
+ 0x89, 0xa9, 0xcb, 0xeb, 0x88, 0xa8, 0x8a, 0xaa, /* 0xb8-0xbf */
+ 0x8b, 0xab, 0x8c, 0xac, 0x8d, 0xad, 0x8e, 0xae, /* 0xc0-0xc7 */
+ 0x9b, 0xef, 0x98, 0xb8, 0x9a, 0xf7, 0x99, 0xf6, /* 0xc8-0xcf */
+ 0x8f, 0xaf, 0x90, 0xb0, 0x91, 0xb1, 0x92, 0xb2, /* 0xd0-0xd7 */
+ 0x93, 0xb5, 0x95, 0xbe, 0x96, 0xb6, 0x97, 0xb7, /* 0xd8-0xdf */
+ 0xb3, 0xde, 0x94, 0xfe, 0x9e, 0xf8, 0x9c, 0xfc, /* 0xe0-0xe7 */
+ 0xba, 0xd1, 0xbb, 0xd7, 0xbc, 0xd8, 0xff, 0xe6, /* 0xe8-0xef */
+ 0xb9, 0xf1, 0x9f, 0xcf, 0x1e, 0xdc, 0x14, 0xd6, /* 0xf0-0xf7 */
+ 0x19, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+
+static int
+viscii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080 && (wc >= 0x0020 || (0x42100064 & (1 << wc)) == 0)) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00c0 && wc < 0x01b8)
+ c = viscii_page00[wc-0x00c0];
+ else if (wc >= 0x1ea0 && wc < 0x1f00)
+ c = viscii_page1e[wc-0x1ea0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUtil.c b/libX11/src/xlibi18n/lcUtil.c
index 196bca20c..e473eb48f 100644
--- a/libX11/src/xlibi18n/lcUtil.c
+++ b/libX11/src/xlibi18n/lcUtil.c
@@ -1,86 +1,86 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * 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 of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA 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.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- * Bug fixes: Bruno Haible XFree86 Inc.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlib.h>
-#include "XlcPublic.h"
-
-/* Don't use <ctype.h> here because it is locale dependent. */
-
-#define set_toupper(ch) \
- if (ch >= 'a' && ch <= 'z') \
- ch = ch - 'a' + 'A';
-
-/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
- Like strcasecmp in an ASCII locale. */
-int
-_XlcCompareISOLatin1(
- const char *str1,
- const char *str2)
-{
- unsigned char ch1, ch2;
-
- for ( ; ; str1++, str2++) {
- ch1 = *str1;
- ch2 = *str2;
- if (ch1 == '\0' || ch2 == '\0')
- break;
- set_toupper(ch1);
- set_toupper(ch2);
- if (ch1 != ch2)
- break;
- }
-
- return ch1 - ch2;
-}
-
-/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
- case of ASCII letters. Like strncasecmp in an ASCII locale. */
-int
-_XlcNCompareISOLatin1(
- const char *str1,
- const char *str2,
- int len)
-{
- unsigned char ch1, ch2;
-
- for ( ; ; str1++, str2++, len--) {
- if (len == 0)
- return 0;
- ch1 = *str1;
- ch2 = *str2;
- if (ch1 == '\0' || ch2 == '\0')
- break;
- set_toupper(ch1);
- set_toupper(ch2);
- if (ch1 != ch2)
- break;
- }
-
- return ch1 - ch2;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * 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 of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA 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.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ * Bug fixes: Bruno Haible XFree86 Inc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlib.h>
+#include "XlcPublic.h"
+
+/* Don't use <ctype.h> here because it is locale dependent. */
+
+#define set_toupper(ch) \
+ if (ch >= 'a' && ch <= 'z') \
+ ch = ch - 'a' + 'A';
+
+/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
+ Like strcasecmp in an ASCII locale. */
+int
+_XlcCompareISOLatin1(
+ const char *str1,
+ const char *str2)
+{
+ unsigned char ch1, ch2;
+
+ for ( ; ; str1++, str2++) {
+ ch1 = *str1;
+ ch2 = *str2;
+ if (ch1 == '\0' || ch2 == '\0')
+ break;
+ set_toupper(ch1);
+ set_toupper(ch2);
+ if (ch1 != ch2)
+ break;
+ }
+
+ return ch1 - ch2;
+}
+
+/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
+ case of ASCII letters. Like strncasecmp in an ASCII locale. */
+int
+_XlcNCompareISOLatin1(
+ const char *str1,
+ const char *str2,
+ int len)
+{
+ unsigned char ch1, ch2;
+
+ for ( ; ; str1++, str2++, len--) {
+ if (len == 0)
+ return 0;
+ ch1 = *str1;
+ ch2 = *str2;
+ if (ch1 == '\0' || ch2 == '\0')
+ break;
+ set_toupper(ch1);
+ set_toupper(ch2);
+ if (ch1 != ch2)
+ break;
+ }
+
+ return ch1 - ch2;
+}
diff --git a/libX11/src/xlibi18n/lcWrap.c b/libX11/src/xlibi18n/lcWrap.c
index c3f5ca531..0c03f23b0 100644
--- a/libX11/src/xlibi18n/lcWrap.c
+++ b/libX11/src/xlibi18n/lcWrap.c
@@ -1,649 +1,649 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-/*
- * Copyright 1991 by the Open Software Foundation
- * Copyright 1993 by the TOSHIBA Corp.
- *
- * 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 names of Open Software Foundation and TOSHIBA
- * not be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Open Software
- * Foundation and TOSHIBA make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OPEN SOFTWARE FOUNDATION AND TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN OR TOSHIBA 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.
- *
- * M. Collins OSF
- *
- * Katsuhisa Yano TOSHIBA Corp.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdlib.h>
-#include "Xlibint.h"
-#include "Xlcint.h"
-#include <X11/Xlocale.h>
-#include <X11/Xos.h>
-#ifdef WIN32
-#undef close
-#endif
-#include <X11/Xutil.h>
-#include "XlcPubI.h"
-
-#ifdef XTHREADS
-LockInfoPtr _Xi18n_lock;
-#endif
-
-char *
-XSetLocaleModifiers(
- const char *modifiers)
-{
- XLCd lcd = _XlcCurrentLC();
- char *user_mods;
-
- if (!lcd)
- return (char *) NULL;
- if (!modifiers)
- return lcd->core->modifiers;
- user_mods = getenv("XMODIFIERS");
- modifiers = (*lcd->methods->map_modifiers) (lcd,
- user_mods, (char *)modifiers);
- if (modifiers) {
- if (lcd->core->modifiers)
- Xfree(lcd->core->modifiers);
- lcd->core->modifiers = (char *)modifiers;
- }
- return (char *)modifiers;
-}
-
-Bool
-XSupportsLocale(void)
-{
- return _XlcCurrentLC() != (XLCd)NULL;
-}
-
-Bool _XlcValidModSyntax(
- const char * mods,
- const char * const *valid_mods)
-{
- int i;
- const char * const *ptr;
-
- while (mods && (*mods == '@')) {
- mods++;
- if (*mods == '@')
- break;
- for (ptr = valid_mods; *ptr; ptr++) {
- i = strlen(*ptr);
- if (strncmp(mods, *ptr, i) || ((mods[i] != '=')
-#ifdef WIN32
- && (mods[i] != '#')
-#endif
- ))
- continue;
- mods = strchr(mods+i+1, '@');
- break;
- }
- }
- return !mods || !*mods;
-}
-
-static const char *im_valid[] = {"im", (const char *)NULL};
-
-/*ARGSUSED*/
-char *
-_XlcDefaultMapModifiers(
- XLCd lcd,
- const char *user_mods,
- const char *prog_mods)
-{
- int i;
- char *mods;
-
- if (!_XlcValidModSyntax(prog_mods, im_valid))
- return (char *)NULL;
- if (!_XlcValidModSyntax(user_mods, im_valid))
- return (char *)NULL;
- i = strlen(prog_mods) + 1;
- if (user_mods)
- i += strlen(user_mods);
- mods = Xmalloc(i);
- if (mods) {
- strcpy(mods, prog_mods);
- if (user_mods)
- strcat(mods, user_mods);
-#ifdef WIN32
- {
- char *s;
- for (s = mods; (s = strchr(s, '@')); s++) {
- for (s++; *s && *s != '='; s++) {
- if (*s == '#') {
- *s = '=';
- break;
- }
- }
- }
- }
-#endif
- }
- return mods;
-}
-
-typedef struct _XLCdListRec {
- struct _XLCdListRec *next;
- XLCd lcd;
- int ref_count;
-} XLCdListRec, *XLCdList;
-
-static XLCdList lcd_list = NULL;
-
-typedef struct _XlcLoaderListRec {
- struct _XlcLoaderListRec *next;
- XLCdLoadProc proc;
-} XlcLoaderListRec, *XlcLoaderList;
-
-static XlcLoaderList loader_list = NULL;
-
-void
-_XlcRemoveLoader(
- XLCdLoadProc proc)
-{
- XlcLoaderList loader, prev;
-
- if (loader_list == NULL)
- return;
-
- prev = loader = loader_list;
- if (loader->proc == proc) {
- loader_list = loader->next;
- Xfree(loader);
- return;
- }
-
- while ((loader = loader->next)) {
- if (loader->proc == proc) {
- prev->next = loader->next;
- Xfree(loader);
- return;
- }
- prev = loader;
- }
-
- return;
-}
-
-Bool
-_XlcAddLoader(
- XLCdLoadProc proc,
- XlcPosition position)
-{
- XlcLoaderList loader, last;
-
- _XlcRemoveLoader(proc); /* remove old loader, if exist */
-
- loader = (XlcLoaderList) Xmalloc(sizeof(XlcLoaderListRec));
- if (loader == NULL)
- return False;
-
- loader->proc = proc;
-
- if (loader_list == NULL)
- position = XlcHead;
-
- if (position == XlcHead) {
- loader->next = loader_list;
- loader_list = loader;
- } else {
- last = loader_list;
- while (last->next)
- last = last->next;
-
- loader->next = NULL;
- last->next = loader;
- }
-
- return True;
-}
-
-XLCd
-_XOpenLC(
- char *name)
-{
- XLCd lcd;
- XlcLoaderList loader;
- XLCdList cur;
-#if !defined(X_LOCALE)
- int len;
- char sinamebuf[256];
- char* siname = sinamebuf;
-#endif
-
- if (name == NULL) {
- name = setlocale (LC_CTYPE, (char *)NULL);
-#if !defined(X_LOCALE)
- /*
- * _XlMapOSLocaleName will return the same string or a substring
- * of name, so strlen(name) is okay
- */
- if ((len = strlen(name)) >= sizeof sinamebuf) {
- siname = Xmalloc (len + 1);
- if (siname == NULL)
- return NULL;
- }
- name = _XlcMapOSLocaleName(name, siname);
-#endif
- }
-
- _XLockMutex(_Xi18n_lock);
-
- /*
- * search for needed lcd, if found return it
- */
- for (cur = lcd_list; cur; cur = cur->next) {
- if (!strcmp (cur->lcd->core->name, name)) {
- lcd = cur->lcd;
- cur->ref_count++;
- goto found;
- }
- }
-
- if (!loader_list)
- _XlcInitLoader();
-
- /*
- * not there, so try to get and add to list
- */
- for (loader = loader_list; loader; loader = loader->next) {
- lcd = (*loader->proc)(name);
- if (lcd) {
- cur = (XLCdList) Xmalloc (sizeof(XLCdListRec));
- if (cur) {
- cur->lcd = lcd;
- cur->ref_count = 1;
- cur->next = lcd_list;
- lcd_list = cur;
- } else {
- (*lcd->methods->close)(lcd);
- lcd = (XLCd) NULL;
- }
- goto found;
- }
- }
-
- lcd = NULL;
-
-found:
- _XUnlockMutex(_Xi18n_lock);
-
-#if !defined(X_LOCALE)
- if (siname != sinamebuf) Xfree(siname);
-#endif
-
- return lcd;
-}
-
-void
-_XCloseLC(
- XLCd lcd)
-{
- XLCdList cur, *prev;
-
- for (prev = &lcd_list; (cur = *prev); prev = &cur->next) {
- if (cur->lcd == lcd) {
- if (--cur->ref_count < 1) {
- (*lcd->methods->close)(lcd);
- *prev = cur->next;
- Xfree(cur);
- }
- break;
- }
- }
-
- if(loader_list) {
- _XlcDeInitLoader();
- loader_list = NULL;
- }
-}
-
-/*
- * Get the XLCd for the current locale
- */
-
-XLCd
-_XlcCurrentLC(void)
-{
- XLCd lcd;
- static XLCd last_lcd = NULL;
-
- lcd = _XOpenLC((char *) NULL);
-
- if (last_lcd)
- _XCloseLC(last_lcd);
-
- last_lcd = lcd;
-
- return lcd;
-}
-
-XrmMethods
-_XrmInitParseInfo(
- XPointer *state)
-{
- XLCd lcd = _XOpenLC((char *) NULL);
-
- if (lcd == (XLCd) NULL)
- return (XrmMethods) NULL;
-
- return (*lcd->methods->init_parse_info)(lcd, state);
-}
-
-int
-XmbTextPropertyToTextList(
- Display *dpy,
- const XTextProperty *text_prop,
- char ***list_ret,
- int *count_ret)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->mb_text_prop_to_list)(lcd, dpy, text_prop, list_ret,
- count_ret);
-}
-
-int
-XwcTextPropertyToTextList(
- Display *dpy,
- const XTextProperty *text_prop,
- wchar_t ***list_ret,
- int *count_ret)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->wc_text_prop_to_list)(lcd, dpy, text_prop, list_ret,
- count_ret);
-}
-
-int
-Xutf8TextPropertyToTextList(
- Display *dpy,
- const XTextProperty *text_prop,
- char ***list_ret,
- int *count_ret)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->utf8_text_prop_to_list)(lcd, dpy, text_prop,
- list_ret, count_ret);
-}
-
-int
-XmbTextListToTextProperty(
- Display *dpy,
- char **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->mb_text_list_to_prop)(lcd, dpy, list, count, style,
- text_prop);
-}
-
-int
-XwcTextListToTextProperty(
- Display *dpy,
- wchar_t **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->wc_text_list_to_prop)(lcd, dpy, list, count, style,
- text_prop);
-}
-
-int
-Xutf8TextListToTextProperty(
- Display *dpy,
- char **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->utf8_text_list_to_prop)(lcd, dpy, list, count,
- style, text_prop);
-}
-
-void
-XwcFreeStringList(
- wchar_t **list)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return;
-
- (*lcd->methods->wc_free_string_list)(lcd, list);
-}
-
-const char *
-XDefaultString(void)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return (char *) NULL;
-
- return (*lcd->methods->default_string)(lcd);
-}
-
-void
-_XlcCopyFromArg(
- char *src,
- char *dst,
- int size)
-{
- if (size == sizeof(long))
- *((long *) dst) = (long) src;
-#ifdef LONG64
- else if (size == sizeof(int))
- *((int *) dst) = (int)(long) src;
-#endif
- else if (size == sizeof(short))
- *((short *) dst) = (short)(long) src;
- else if (size == sizeof(char))
- *((char *) dst) = (char)(long) src;
- else if (size == sizeof(XPointer))
- *((XPointer *) dst) = (XPointer) src;
- else if (size > sizeof(XPointer))
- memcpy(dst, (char *) src, size);
- else
- memcpy(dst, (char *) &src, size);
-}
-
-void
-_XlcCopyToArg(
- char *src,
- char **dst,
- int size)
-{
- /* FIXME:
- On Big Endian machines, this behaves differently than _XCopyToArg. */
- if (size == sizeof(long))
- *((long *) *dst) = *((long *) src);
-#ifdef LONG64
- else if (size == sizeof(int))
- *((int *) *dst) = *((int *) src);
-#endif
- else if (size == sizeof(short))
- *((short *) *dst) = *((short *) src);
- else if (size == sizeof(char))
- *((char *) *dst) = *((char *) src);
- else if (size == sizeof(XPointer))
- *((XPointer *) *dst) = *((XPointer *) src);
- else
- memcpy(*dst, src, size);
-}
-
-void
-_XlcCountVaList(
- va_list var,
- int *count_ret)
-{
- int count;
-
- for (count = 0; va_arg(var, char *); count++)
- (void)va_arg(var, XPointer);
-
- *count_ret = count;
-}
-
-void
-_XlcVaToArgList(
- va_list var,
- int count,
- XlcArgList *args_ret)
-{
- XlcArgList args;
-
- *args_ret = args = (XlcArgList) Xmalloc(sizeof(XlcArg) * count);
- if (args == (XlcArgList) NULL)
- return;
-
- for ( ; count-- > 0; args++) {
- args->name = va_arg(var, char *);
- args->value = va_arg(var, XPointer);
- }
-}
-
-void
-_XlcCompileResourceList(
- XlcResourceList resources,
- int num_resources)
-{
- for ( ; num_resources-- > 0; resources++)
- resources->xrm_name = XrmPermStringToQuark(resources->name);
-}
-
-char *
-_XlcGetValues(
- XPointer base,
- XlcResourceList resources,
- int num_resources,
- XlcArgList args,
- int num_args,
- unsigned long mask)
-{
- XlcResourceList res;
- XrmQuark xrm_name;
- int count;
-
- for ( ; num_args-- > 0; args++) {
- res = resources;
- count = num_resources;
- xrm_name = XrmPermStringToQuark(args->name);
-
- for ( ; count-- > 0; res++) {
- if (xrm_name == res->xrm_name && (mask & res->mask)) {
- _XlcCopyToArg(base + res->offset, &args->value, res->size);
- break;
- }
- }
-
- if (count < 0)
- return args->name;
- }
-
- return NULL;
-}
-
-char *
-_XlcSetValues(
- XPointer base,
- XlcResourceList resources,
- int num_resources,
- XlcArgList args,
- int num_args,
- unsigned long mask)
-{
- XlcResourceList res;
- XrmQuark xrm_name;
- int count;
-
- for ( ; num_args-- > 0; args++) {
- res = resources;
- count = num_resources;
- xrm_name = XrmPermStringToQuark(args->name);
-
- for ( ; count-- > 0; res++) {
- if (xrm_name == res->xrm_name && (mask & res->mask)) {
- _XlcCopyFromArg(args->value, base + res->offset, res->size);
- break;
- }
- }
-
- if (count < 0)
- return args->name;
- }
-
- return NULL;
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+/*
+ * Copyright 1991 by the Open Software Foundation
+ * Copyright 1993 by the TOSHIBA Corp.
+ *
+ * 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 names of Open Software Foundation and TOSHIBA
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Open Software
+ * Foundation and TOSHIBA make no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION AND TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN OR TOSHIBA 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.
+ *
+ * M. Collins OSF
+ *
+ * Katsuhisa Yano TOSHIBA Corp.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdlib.h>
+#include "Xlibint.h"
+#include "Xlcint.h"
+#include <X11/Xlocale.h>
+#include <X11/Xos.h>
+#ifdef WIN32
+#undef close
+#endif
+#include <X11/Xutil.h>
+#include "XlcPubI.h"
+
+#ifdef XTHREADS
+LockInfoPtr _Xi18n_lock;
+#endif
+
+char *
+XSetLocaleModifiers(
+ const char *modifiers)
+{
+ XLCd lcd = _XlcCurrentLC();
+ char *user_mods;
+
+ if (!lcd)
+ return (char *) NULL;
+ if (!modifiers)
+ return lcd->core->modifiers;
+ user_mods = getenv("XMODIFIERS");
+ modifiers = (*lcd->methods->map_modifiers) (lcd,
+ user_mods, (char *)modifiers);
+ if (modifiers) {
+ if (lcd->core->modifiers)
+ Xfree(lcd->core->modifiers);
+ lcd->core->modifiers = (char *)modifiers;
+ }
+ return (char *)modifiers;
+}
+
+Bool
+XSupportsLocale(void)
+{
+ return _XlcCurrentLC() != (XLCd)NULL;
+}
+
+Bool _XlcValidModSyntax(
+ const char * mods,
+ const char * const *valid_mods)
+{
+ int i;
+ const char * const *ptr;
+
+ while (mods && (*mods == '@')) {
+ mods++;
+ if (*mods == '@')
+ break;
+ for (ptr = valid_mods; *ptr; ptr++) {
+ i = strlen(*ptr);
+ if (strncmp(mods, *ptr, i) || ((mods[i] != '=')
+#ifdef WIN32
+ && (mods[i] != '#')
+#endif
+ ))
+ continue;
+ mods = strchr(mods+i+1, '@');
+ break;
+ }
+ }
+ return !mods || !*mods;
+}
+
+static const char *im_valid[] = {"im", (const char *)NULL};
+
+/*ARGSUSED*/
+char *
+_XlcDefaultMapModifiers(
+ XLCd lcd,
+ const char *user_mods,
+ const char *prog_mods)
+{
+ int i;
+ char *mods;
+
+ if (!_XlcValidModSyntax(prog_mods, im_valid))
+ return (char *)NULL;
+ if (!_XlcValidModSyntax(user_mods, im_valid))
+ return (char *)NULL;
+ i = strlen(prog_mods) + 1;
+ if (user_mods)
+ i += strlen(user_mods);
+ mods = Xmalloc(i);
+ if (mods) {
+ strcpy(mods, prog_mods);
+ if (user_mods)
+ strcat(mods, user_mods);
+#ifdef WIN32
+ {
+ char *s;
+ for (s = mods; (s = strchr(s, '@')); s++) {
+ for (s++; *s && *s != '='; s++) {
+ if (*s == '#') {
+ *s = '=';
+ break;
+ }
+ }
+ }
+ }
+#endif
+ }
+ return mods;
+}
+
+typedef struct _XLCdListRec {
+ struct _XLCdListRec *next;
+ XLCd lcd;
+ int ref_count;
+} XLCdListRec, *XLCdList;
+
+static XLCdList lcd_list = NULL;
+
+typedef struct _XlcLoaderListRec {
+ struct _XlcLoaderListRec *next;
+ XLCdLoadProc proc;
+} XlcLoaderListRec, *XlcLoaderList;
+
+static XlcLoaderList loader_list = NULL;
+
+void
+_XlcRemoveLoader(
+ XLCdLoadProc proc)
+{
+ XlcLoaderList loader, prev;
+
+ if (loader_list == NULL)
+ return;
+
+ prev = loader = loader_list;
+ if (loader->proc == proc) {
+ loader_list = loader->next;
+ Xfree(loader);
+ return;
+ }
+
+ while ((loader = loader->next)) {
+ if (loader->proc == proc) {
+ prev->next = loader->next;
+ Xfree(loader);
+ return;
+ }
+ prev = loader;
+ }
+
+ return;
+}
+
+Bool
+_XlcAddLoader(
+ XLCdLoadProc proc,
+ XlcPosition position)
+{
+ XlcLoaderList loader, last;
+
+ _XlcRemoveLoader(proc); /* remove old loader, if exist */
+
+ loader = (XlcLoaderList) Xmalloc(sizeof(XlcLoaderListRec));
+ if (loader == NULL)
+ return False;
+
+ loader->proc = proc;
+
+ if (loader_list == NULL)
+ position = XlcHead;
+
+ if (position == XlcHead) {
+ loader->next = loader_list;
+ loader_list = loader;
+ } else {
+ last = loader_list;
+ while (last->next)
+ last = last->next;
+
+ loader->next = NULL;
+ last->next = loader;
+ }
+
+ return True;
+}
+
+XLCd
+_XOpenLC(
+ char *name)
+{
+ XLCd lcd;
+ XlcLoaderList loader;
+ XLCdList cur;
+#if !defined(X_LOCALE)
+ int len;
+ char sinamebuf[256];
+ char* siname = sinamebuf;
+#endif
+
+ if (name == NULL) {
+ name = setlocale (LC_CTYPE, (char *)NULL);
+#if !defined(X_LOCALE)
+ /*
+ * _XlMapOSLocaleName will return the same string or a substring
+ * of name, so strlen(name) is okay
+ */
+ if ((len = strlen(name)) >= sizeof sinamebuf) {
+ siname = Xmalloc (len + 1);
+ if (siname == NULL)
+ return NULL;
+ }
+ name = _XlcMapOSLocaleName(name, siname);
+#endif
+ }
+
+ _XLockMutex(_Xi18n_lock);
+
+ /*
+ * search for needed lcd, if found return it
+ */
+ for (cur = lcd_list; cur; cur = cur->next) {
+ if (!strcmp (cur->lcd->core->name, name)) {
+ lcd = cur->lcd;
+ cur->ref_count++;
+ goto found;
+ }
+ }
+
+ if (!loader_list)
+ _XlcInitLoader();
+
+ /*
+ * not there, so try to get and add to list
+ */
+ for (loader = loader_list; loader; loader = loader->next) {
+ lcd = (*loader->proc)(name);
+ if (lcd) {
+ cur = (XLCdList) Xmalloc (sizeof(XLCdListRec));
+ if (cur) {
+ cur->lcd = lcd;
+ cur->ref_count = 1;
+ cur->next = lcd_list;
+ lcd_list = cur;
+ } else {
+ (*lcd->methods->close)(lcd);
+ lcd = (XLCd) NULL;
+ }
+ goto found;
+ }
+ }
+
+ lcd = NULL;
+
+found:
+ _XUnlockMutex(_Xi18n_lock);
+
+#if !defined(X_LOCALE)
+ if (siname != sinamebuf) Xfree(siname);
+#endif
+
+ return lcd;
+}
+
+void
+_XCloseLC(
+ XLCd lcd)
+{
+ XLCdList cur, *prev;
+
+ for (prev = &lcd_list; (cur = *prev); prev = &cur->next) {
+ if (cur->lcd == lcd) {
+ if (--cur->ref_count < 1) {
+ (*lcd->methods->close)(lcd);
+ *prev = cur->next;
+ Xfree(cur);
+ }
+ break;
+ }
+ }
+
+ if(loader_list) {
+ _XlcDeInitLoader();
+ loader_list = NULL;
+ }
+}
+
+/*
+ * Get the XLCd for the current locale
+ */
+
+XLCd
+_XlcCurrentLC(void)
+{
+ XLCd lcd;
+ static XLCd last_lcd = NULL;
+
+ lcd = _XOpenLC((char *) NULL);
+
+ if (last_lcd)
+ _XCloseLC(last_lcd);
+
+ last_lcd = lcd;
+
+ return lcd;
+}
+
+XrmMethods
+_XrmInitParseInfo(
+ XPointer *state)
+{
+ XLCd lcd = _XOpenLC((char *) NULL);
+
+ if (lcd == (XLCd) NULL)
+ return (XrmMethods) NULL;
+
+ return (*lcd->methods->init_parse_info)(lcd, state);
+}
+
+int
+XmbTextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->mb_text_prop_to_list)(lcd, dpy, text_prop, list_ret,
+ count_ret);
+}
+
+int
+XwcTextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ wchar_t ***list_ret,
+ int *count_ret)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->wc_text_prop_to_list)(lcd, dpy, text_prop, list_ret,
+ count_ret);
+}
+
+int
+Xutf8TextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->utf8_text_prop_to_list)(lcd, dpy, text_prop,
+ list_ret, count_ret);
+}
+
+int
+XmbTextListToTextProperty(
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->mb_text_list_to_prop)(lcd, dpy, list, count, style,
+ text_prop);
+}
+
+int
+XwcTextListToTextProperty(
+ Display *dpy,
+ wchar_t **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->wc_text_list_to_prop)(lcd, dpy, list, count, style,
+ text_prop);
+}
+
+int
+Xutf8TextListToTextProperty(
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->utf8_text_list_to_prop)(lcd, dpy, list, count,
+ style, text_prop);
+}
+
+void
+XwcFreeStringList(
+ wchar_t **list)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return;
+
+ (*lcd->methods->wc_free_string_list)(lcd, list);
+}
+
+const char *
+XDefaultString(void)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return (char *) NULL;
+
+ return (*lcd->methods->default_string)(lcd);
+}
+
+void
+_XlcCopyFromArg(
+ char *src,
+ char *dst,
+ int size)
+{
+ if (size == sizeof(long))
+ *((long *) dst) = (long) src;
+#ifdef LONG64
+ else if (size == sizeof(int))
+ *((int *) dst) = (int)(long) src;
+#endif
+ else if (size == sizeof(short))
+ *((short *) dst) = (short)(long) src;
+ else if (size == sizeof(char))
+ *((char *) dst) = (char)(long) src;
+ else if (size == sizeof(XPointer))
+ *((XPointer *) dst) = (XPointer) src;
+ else if (size > sizeof(XPointer))
+ memcpy(dst, (char *) src, size);
+ else
+ memcpy(dst, (char *) &src, size);
+}
+
+void
+_XlcCopyToArg(
+ char *src,
+ char **dst,
+ int size)
+{
+ /* FIXME:
+ On Big Endian machines, this behaves differently than _XCopyToArg. */
+ if (size == sizeof(long))
+ *((long *) *dst) = *((long *) src);
+#ifdef LONG64
+ else if (size == sizeof(int))
+ *((int *) *dst) = *((int *) src);
+#endif
+ else if (size == sizeof(short))
+ *((short *) *dst) = *((short *) src);
+ else if (size == sizeof(char))
+ *((char *) *dst) = *((char *) src);
+ else if (size == sizeof(XPointer))
+ *((XPointer *) *dst) = *((XPointer *) src);
+ else
+ memcpy(*dst, src, size);
+}
+
+void
+_XlcCountVaList(
+ va_list var,
+ int *count_ret)
+{
+ int count;
+
+ for (count = 0; va_arg(var, char *); count++)
+ (void)va_arg(var, XPointer);
+
+ *count_ret = count;
+}
+
+void
+_XlcVaToArgList(
+ va_list var,
+ int count,
+ XlcArgList *args_ret)
+{
+ XlcArgList args;
+
+ *args_ret = args = (XlcArgList) Xmalloc(sizeof(XlcArg) * count);
+ if (args == (XlcArgList) NULL)
+ return;
+
+ for ( ; count-- > 0; args++) {
+ args->name = va_arg(var, char *);
+ args->value = va_arg(var, XPointer);
+ }
+}
+
+void
+_XlcCompileResourceList(
+ XlcResourceList resources,
+ int num_resources)
+{
+ for ( ; num_resources-- > 0; resources++)
+ resources->xrm_name = XrmPermStringToQuark(resources->name);
+}
+
+char *
+_XlcGetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask)
+{
+ XlcResourceList res;
+ XrmQuark xrm_name;
+ int count;
+
+ for ( ; num_args-- > 0; args++) {
+ res = resources;
+ count = num_resources;
+ xrm_name = XrmPermStringToQuark(args->name);
+
+ for ( ; count-- > 0; res++) {
+ if (xrm_name == res->xrm_name && (mask & res->mask)) {
+ _XlcCopyToArg(base + res->offset, &args->value, res->size);
+ break;
+ }
+ }
+
+ if (count < 0)
+ return args->name;
+ }
+
+ return NULL;
+}
+
+char *
+_XlcSetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask)
+{
+ XlcResourceList res;
+ XrmQuark xrm_name;
+ int count;
+
+ for ( ; num_args-- > 0; args++) {
+ res = resources;
+ count = num_resources;
+ xrm_name = XrmPermStringToQuark(args->name);
+
+ for ( ; count-- > 0; res++) {
+ if (xrm_name == res->xrm_name && (mask & res->mask)) {
+ _XlcCopyFromArg(args->value, base + res->offset, res->size);
+ break;
+ }
+ }
+
+ if (count < 0)
+ return args->name;
+ }
+
+ return NULL;
+}
diff --git a/libX11/src/xlibi18n/mbWMProps.c b/libX11/src/xlibi18n/mbWMProps.c
index bff7aa352..018f44aea 100644
--- a/libX11/src/xlibi18n/mbWMProps.c
+++ b/libX11/src/xlibi18n/mbWMProps.c
@@ -1,69 +1,69 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <X11/Xlocale.h>
-
-void
-XmbSetWMProperties (
- Display *dpy,
- Window w,
- _Xconst char *windowName,
- _Xconst char *iconName,
- char **argv,
- int argc,
- XSizeHints *sizeHints,
- XWMHints *wmHints,
- XClassHint *classHints)
-{
- XTextProperty wname, iname;
- XTextProperty *wprop = NULL;
- XTextProperty *iprop = NULL;
-
- if (windowName &&
- XmbTextListToTextProperty(dpy, (char**)&windowName, 1,
- XStdICCTextStyle, &wname) >= Success)
- wprop = &wname;
- if (iconName &&
- XmbTextListToTextProperty(dpy, (char**)&iconName, 1,
- XStdICCTextStyle, &iname) >= Success)
- iprop = &iname;
- XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
- sizeHints, wmHints, classHints);
- if (wprop)
- Xfree((char *)wname.value);
- if (iprop)
- Xfree((char *)iname.value);
-
- /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/Xlocale.h>
+
+void
+XmbSetWMProperties (
+ Display *dpy,
+ Window w,
+ _Xconst char *windowName,
+ _Xconst char *iconName,
+ char **argv,
+ int argc,
+ XSizeHints *sizeHints,
+ XWMHints *wmHints,
+ XClassHint *classHints)
+{
+ XTextProperty wname, iname;
+ XTextProperty *wprop = NULL;
+ XTextProperty *iprop = NULL;
+
+ if (windowName &&
+ XmbTextListToTextProperty(dpy, (char**)&windowName, 1,
+ XStdICCTextStyle, &wname) >= Success)
+ wprop = &wname;
+ if (iconName &&
+ XmbTextListToTextProperty(dpy, (char**)&iconName, 1,
+ XStdICCTextStyle, &iname) >= Success)
+ iprop = &iname;
+ XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
+ sizeHints, wmHints, classHints);
+ if (wprop)
+ Xfree((char *)wname.value);
+ if (iprop)
+ Xfree((char *)iname.value);
+
+ /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
+}
diff --git a/libX11/src/xlibi18n/mbWrap.c b/libX11/src/xlibi18n/mbWrap.c
index 19f01f656..6887495e1 100644
--- a/libX11/src/xlibi18n/mbWrap.c
+++ b/libX11/src/xlibi18n/mbWrap.c
@@ -1,163 +1,163 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-/*
- * Copyright 1991 by the Open Software Foundation
- *
- * 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 Open Software Foundation
- * not be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Open Software
- * Foundation makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN 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.
- *
- * M. Collins OSF
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-void
-XmbDrawText(
- Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- XmbTextItem *text_items,
- int nitems)
-{
- register XFontSet fs = NULL;
- register XmbTextItem *p = text_items;
- register int i = nitems;
- register int esc;
-
- /* ignore leading items with no fontset */
- while (i && !p->font_set) {
- i--;
- p++;
- }
-
- for (; --i >= 0; p++) {
- if (p->font_set)
- fs = p->font_set;
- x += p->delta;
- esc = (*fs->methods->mb_draw_string) (dpy, d, fs, gc, x, y,
- p->chars, p->nchars);
- if (!esc)
- esc = fs->methods->mb_escapement (fs, p->chars, p->nchars);
- x += esc;
- }
-}
-
-void
-XmbDrawString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst char *text,
- int text_len)
-{
- (void)(*font_set->methods->mb_draw_string) (dpy, d, font_set, gc, x, y,
- (char *)text, text_len);
-}
-
-
-void
-XmbDrawImageString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst char *text,
- int text_len)
-{
- (*font_set->methods->mb_draw_image_string) (dpy, d, font_set, gc, x, y,
- (char *)text, text_len);
-}
-
-int
-XmbTextEscapement(
- XFontSet font_set,
- _Xconst char *text,
- int text_len)
-{
- return (*font_set->methods->mb_escapement) (font_set,
- (char *)text, text_len);
-}
-
-int
-XmbTextExtents(
- XFontSet font_set,
- _Xconst char *text,
- int text_len,
- XRectangle *overall_ink_extents,
- XRectangle *overall_logical_extents)
-{
- return (*font_set->methods->mb_extents) (font_set,
- (char *)text, text_len,
- overall_ink_extents,
- overall_logical_extents);
-}
-
-Status
-XmbTextPerCharExtents(
- XFontSet font_set,
- _Xconst char *text,
- int text_len,
- XRectangle *ink_extents_buffer,
- XRectangle *logical_extents_buffer,
- int buffer_size,
- int *num_chars,
- XRectangle *max_ink_extents,
- XRectangle *max_logical_extents)
-{
- return (*font_set->methods->mb_extents_per_char)
- (font_set, (char *)text, text_len,
- ink_extents_buffer, logical_extents_buffer,
- buffer_size, num_chars, max_ink_extents, max_logical_extents);
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+/*
+ * Copyright 1991 by the Open Software Foundation
+ *
+ * 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 Open Software Foundation
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Open Software
+ * Foundation makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN 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.
+ *
+ * M. Collins OSF
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+void
+XmbDrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XmbTextItem *text_items,
+ int nitems)
+{
+ register XFontSet fs = NULL;
+ register XmbTextItem *p = text_items;
+ register int i = nitems;
+ register int esc;
+
+ /* ignore leading items with no fontset */
+ while (i && !p->font_set) {
+ i--;
+ p++;
+ }
+
+ for (; --i >= 0; p++) {
+ if (p->font_set)
+ fs = p->font_set;
+ x += p->delta;
+ esc = (*fs->methods->mb_draw_string) (dpy, d, fs, gc, x, y,
+ p->chars, p->nchars);
+ if (!esc)
+ esc = fs->methods->mb_escapement (fs, p->chars, p->nchars);
+ x += esc;
+ }
+}
+
+void
+XmbDrawString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+{
+ (void)(*font_set->methods->mb_draw_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+
+void
+XmbDrawImageString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+{
+ (*font_set->methods->mb_draw_image_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+int
+XmbTextEscapement(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len)
+{
+ return (*font_set->methods->mb_escapement) (font_set,
+ (char *)text, text_len);
+}
+
+int
+XmbTextExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *overall_ink_extents,
+ XRectangle *overall_logical_extents)
+{
+ return (*font_set->methods->mb_extents) (font_set,
+ (char *)text, text_len,
+ overall_ink_extents,
+ overall_logical_extents);
+}
+
+Status
+XmbTextPerCharExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *ink_extents_buffer,
+ XRectangle *logical_extents_buffer,
+ int buffer_size,
+ int *num_chars,
+ XRectangle *max_ink_extents,
+ XRectangle *max_logical_extents)
+{
+ return (*font_set->methods->mb_extents_per_char)
+ (font_set, (char *)text, text_len,
+ ink_extents_buffer, logical_extents_buffer,
+ buffer_size, num_chars, max_ink_extents, max_logical_extents);
+}
diff --git a/libX11/src/xlibi18n/utf8WMProps.c b/libX11/src/xlibi18n/utf8WMProps.c
index bbfb7c057..244988311 100644
--- a/libX11/src/xlibi18n/utf8WMProps.c
+++ b/libX11/src/xlibi18n/utf8WMProps.c
@@ -1,91 +1,91 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-/*
- * Copyright 2000 by Bruno Haible
- *
- * 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 Bruno Haible not
- * be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Bruno Haible
- * makes no representations about the suitability of this software for
- * any purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
- * NO EVENT SHALL Bruno Haible 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <X11/Xlocale.h>
-
-void
-Xutf8SetWMProperties (
- Display *dpy,
- Window w,
- _Xconst char *windowName,
- _Xconst char *iconName,
- char **argv,
- int argc,
- XSizeHints *sizeHints,
- XWMHints *wmHints,
- XClassHint *classHints)
-{
- XTextProperty wname, iname;
- XTextProperty *wprop = NULL;
- XTextProperty *iprop = NULL;
-
- if (windowName &&
- Xutf8TextListToTextProperty(dpy, (char**)&windowName, 1,
- XStdICCTextStyle, &wname) >= Success)
- wprop = &wname;
- if (iconName &&
- Xutf8TextListToTextProperty(dpy, (char**)&iconName, 1,
- XStdICCTextStyle, &iname) >= Success)
- iprop = &iname;
- XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
- sizeHints, wmHints, classHints);
- if (wprop)
- Xfree((char *)wname.value);
- if (iprop)
- Xfree((char *)iname.value);
-
- /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+/*
+ * Copyright 2000 by Bruno Haible
+ *
+ * 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 Bruno Haible not
+ * be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Bruno Haible
+ * makes no representations about the suitability of this software for
+ * any purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL Bruno Haible 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/Xlocale.h>
+
+void
+Xutf8SetWMProperties (
+ Display *dpy,
+ Window w,
+ _Xconst char *windowName,
+ _Xconst char *iconName,
+ char **argv,
+ int argc,
+ XSizeHints *sizeHints,
+ XWMHints *wmHints,
+ XClassHint *classHints)
+{
+ XTextProperty wname, iname;
+ XTextProperty *wprop = NULL;
+ XTextProperty *iprop = NULL;
+
+ if (windowName &&
+ Xutf8TextListToTextProperty(dpy, (char**)&windowName, 1,
+ XStdICCTextStyle, &wname) >= Success)
+ wprop = &wname;
+ if (iconName &&
+ Xutf8TextListToTextProperty(dpy, (char**)&iconName, 1,
+ XStdICCTextStyle, &iname) >= Success)
+ iprop = &iname;
+ XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
+ sizeHints, wmHints, classHints);
+ if (wprop)
+ Xfree((char *)wname.value);
+ if (iprop)
+ Xfree((char *)iname.value);
+
+ /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
+}
diff --git a/libX11/src/xlibi18n/utf8Wrap.c b/libX11/src/xlibi18n/utf8Wrap.c
index 82967b0b1..01664e9e6 100644
--- a/libX11/src/xlibi18n/utf8Wrap.c
+++ b/libX11/src/xlibi18n/utf8Wrap.c
@@ -1,185 +1,185 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-/*
- * Copyright 1991 by the Open Software Foundation
- *
- * 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 Open Software Foundation
- * not be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Open Software
- * Foundation makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN 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.
- *
- * M. Collins OSF
- */
-/*
- * Copyright 2000 by Bruno Haible
- *
- * 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 Bruno Haible not
- * be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Bruno Haible
- * makes no representations about the suitability of this software for
- * any purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
- * NO EVENT SHALL Bruno Haible 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-void
-Xutf8DrawText(
- Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- XmbTextItem *text_items,
- int nitems)
-{
- register XFontSet fs = NULL;
- register XmbTextItem *p = text_items;
- register int i = nitems;
- register int esc;
-
- /* ignore leading items with no fontset */
- while (i && !p->font_set) {
- i--;
- p++;
- }
-
- for (; --i >= 0; p++) {
- if (p->font_set)
- fs = p->font_set;
- x += p->delta;
- esc = (*fs->methods->utf8_draw_string) (dpy, d, fs, gc, x, y,
- p->chars, p->nchars);
- if (!esc)
- esc = fs->methods->utf8_escapement (fs, p->chars, p->nchars);
- x += esc;
- }
-}
-
-void
-Xutf8DrawString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst char *text,
- int text_len)
-{
- (void)(*font_set->methods->utf8_draw_string) (dpy, d, font_set, gc, x, y,
- (char *)text, text_len);
-}
-
-
-void
-Xutf8DrawImageString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst char *text,
- int text_len)
-{
- (*font_set->methods->utf8_draw_image_string) (dpy, d, font_set, gc, x, y,
- (char *)text, text_len);
-}
-
-int
-Xutf8TextEscapement(
- XFontSet font_set,
- _Xconst char *text,
- int text_len)
-{
- return (*font_set->methods->utf8_escapement) (font_set,
- (char *)text, text_len);
-}
-
-int
-Xutf8TextExtents(
- XFontSet font_set,
- _Xconst char *text,
- int text_len,
- XRectangle *overall_ink_extents,
- XRectangle *overall_logical_extents)
-{
- return (*font_set->methods->utf8_extents) (font_set,
- (char *)text, text_len,
- overall_ink_extents,
- overall_logical_extents);
-}
-
-Status
-Xutf8TextPerCharExtents(
- XFontSet font_set,
- _Xconst char *text,
- int text_len,
- XRectangle *ink_extents_buffer,
- XRectangle *logical_extents_buffer,
- int buffer_size,
- int *num_chars,
- XRectangle *max_ink_extents,
- XRectangle *max_logical_extents)
-{
- return (*font_set->methods->utf8_extents_per_char)
- (font_set, (char *)text, text_len,
- ink_extents_buffer, logical_extents_buffer,
- buffer_size, num_chars, max_ink_extents, max_logical_extents);
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+/*
+ * Copyright 1991 by the Open Software Foundation
+ *
+ * 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 Open Software Foundation
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Open Software
+ * Foundation makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN 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.
+ *
+ * M. Collins OSF
+ */
+/*
+ * Copyright 2000 by Bruno Haible
+ *
+ * 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 Bruno Haible not
+ * be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Bruno Haible
+ * makes no representations about the suitability of this software for
+ * any purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL Bruno Haible 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+void
+Xutf8DrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XmbTextItem *text_items,
+ int nitems)
+{
+ register XFontSet fs = NULL;
+ register XmbTextItem *p = text_items;
+ register int i = nitems;
+ register int esc;
+
+ /* ignore leading items with no fontset */
+ while (i && !p->font_set) {
+ i--;
+ p++;
+ }
+
+ for (; --i >= 0; p++) {
+ if (p->font_set)
+ fs = p->font_set;
+ x += p->delta;
+ esc = (*fs->methods->utf8_draw_string) (dpy, d, fs, gc, x, y,
+ p->chars, p->nchars);
+ if (!esc)
+ esc = fs->methods->utf8_escapement (fs, p->chars, p->nchars);
+ x += esc;
+ }
+}
+
+void
+Xutf8DrawString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+{
+ (void)(*font_set->methods->utf8_draw_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+
+void
+Xutf8DrawImageString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+{
+ (*font_set->methods->utf8_draw_image_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+int
+Xutf8TextEscapement(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len)
+{
+ return (*font_set->methods->utf8_escapement) (font_set,
+ (char *)text, text_len);
+}
+
+int
+Xutf8TextExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *overall_ink_extents,
+ XRectangle *overall_logical_extents)
+{
+ return (*font_set->methods->utf8_extents) (font_set,
+ (char *)text, text_len,
+ overall_ink_extents,
+ overall_logical_extents);
+}
+
+Status
+Xutf8TextPerCharExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *ink_extents_buffer,
+ XRectangle *logical_extents_buffer,
+ int buffer_size,
+ int *num_chars,
+ XRectangle *max_ink_extents,
+ XRectangle *max_logical_extents)
+{
+ return (*font_set->methods->utf8_extents_per_char)
+ (font_set, (char *)text, text_len,
+ ink_extents_buffer, logical_extents_buffer,
+ buffer_size, num_chars, max_ink_extents, max_logical_extents);
+}
diff --git a/libX11/src/xlibi18n/wcWrap.c b/libX11/src/xlibi18n/wcWrap.c
index cc3b33f7d..de1011f64 100644
--- a/libX11/src/xlibi18n/wcWrap.c
+++ b/libX11/src/xlibi18n/wcWrap.c
@@ -1,161 +1,161 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-/*
- * Copyright 1991 by the Open Software Foundation
- *
- * 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 Open Software Foundation
- * not be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Open Software
- * Foundation makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN 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.
- *
- * M. Collins OSF
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-void
-XwcDrawText(
- Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- XwcTextItem *text_items,
- int nitems)
-{
- register XFontSet fs = NULL;
- register XwcTextItem *p = text_items;
- register int i = nitems;
- register int esc;
-
- /* ignore leading items with no fontset */
- while (i && !p->font_set) {
- i--;
- p++;
- }
-
- for (; --i >= 0; p++) {
- if (p->font_set)
- fs = p->font_set;
- x += p->delta;
- esc = (*fs->methods->wc_draw_string) (dpy, d, fs, gc, x, y,
- p->chars, p->nchars);
- if (!esc)
- esc = fs->methods->wc_escapement (fs, p->chars, p->nchars);
- x += esc;
- }
-}
-
-void
-XwcDrawString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst wchar_t *text,
- int text_len)
-{
- (void)(*font_set->methods->wc_draw_string) (dpy, d, font_set, gc, x, y,
- text, text_len);
-}
-
-void
-XwcDrawImageString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst wchar_t *text,
- int text_len)
-{
- (*font_set->methods->wc_draw_image_string) (dpy, d, font_set, gc, x, y,
- text, text_len);
-}
-
-int
-XwcTextEscapement(
- XFontSet font_set,
- _Xconst wchar_t *text,
- int text_len)
-{
- return (*font_set->methods->wc_escapement) (font_set, text, text_len);
-}
-
-int
-XwcTextExtents(
- XFontSet font_set,
- _Xconst wchar_t *text,
- int text_len,
- XRectangle *overall_ink_extents,
- XRectangle *overall_logical_extents)
-{
- return (*font_set->methods->wc_extents) (font_set, text, text_len,
- overall_ink_extents,
- overall_logical_extents);
-}
-
-Status
-XwcTextPerCharExtents(
- XFontSet font_set,
- _Xconst wchar_t *text,
- int text_len,
- XRectangle *ink_extents_buffer,
- XRectangle *logical_extents_buffer,
- int buffer_size,
- int *num_chars,
- XRectangle *max_ink_extents,
- XRectangle *max_logical_extents)
-{
- return (*font_set->methods->wc_extents_per_char)
- (font_set, text, text_len,
- ink_extents_buffer, logical_extents_buffer,
- buffer_size, num_chars, max_ink_extents, max_logical_extents);
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+/*
+ * Copyright 1991 by the Open Software Foundation
+ *
+ * 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 Open Software Foundation
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Open Software
+ * Foundation makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN 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.
+ *
+ * M. Collins OSF
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+void
+XwcDrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XwcTextItem *text_items,
+ int nitems)
+{
+ register XFontSet fs = NULL;
+ register XwcTextItem *p = text_items;
+ register int i = nitems;
+ register int esc;
+
+ /* ignore leading items with no fontset */
+ while (i && !p->font_set) {
+ i--;
+ p++;
+ }
+
+ for (; --i >= 0; p++) {
+ if (p->font_set)
+ fs = p->font_set;
+ x += p->delta;
+ esc = (*fs->methods->wc_draw_string) (dpy, d, fs, gc, x, y,
+ p->chars, p->nchars);
+ if (!esc)
+ esc = fs->methods->wc_escapement (fs, p->chars, p->nchars);
+ x += esc;
+ }
+}
+
+void
+XwcDrawString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst wchar_t *text,
+ int text_len)
+{
+ (void)(*font_set->methods->wc_draw_string) (dpy, d, font_set, gc, x, y,
+ text, text_len);
+}
+
+void
+XwcDrawImageString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst wchar_t *text,
+ int text_len)
+{
+ (*font_set->methods->wc_draw_image_string) (dpy, d, font_set, gc, x, y,
+ text, text_len);
+}
+
+int
+XwcTextEscapement(
+ XFontSet font_set,
+ _Xconst wchar_t *text,
+ int text_len)
+{
+ return (*font_set->methods->wc_escapement) (font_set, text, text_len);
+}
+
+int
+XwcTextExtents(
+ XFontSet font_set,
+ _Xconst wchar_t *text,
+ int text_len,
+ XRectangle *overall_ink_extents,
+ XRectangle *overall_logical_extents)
+{
+ return (*font_set->methods->wc_extents) (font_set, text, text_len,
+ overall_ink_extents,
+ overall_logical_extents);
+}
+
+Status
+XwcTextPerCharExtents(
+ XFontSet font_set,
+ _Xconst wchar_t *text,
+ int text_len,
+ XRectangle *ink_extents_buffer,
+ XRectangle *logical_extents_buffer,
+ int buffer_size,
+ int *num_chars,
+ XRectangle *max_ink_extents,
+ XRectangle *max_logical_extents)
+{
+ return (*font_set->methods->wc_extents_per_char)
+ (font_set, text, text_len,
+ ink_extents_buffer, logical_extents_buffer,
+ buffer_size, num_chars, max_ink_extents, max_logical_extents);
+}
diff --git a/libX11/src/xlibi18n/xim_trans.c b/libX11/src/xlibi18n/xim_trans.c
index 752ae00b1..0381e0c69 100644
--- a/libX11/src/xlibi18n/xim_trans.c
+++ b/libX11/src/xlibi18n/xim_trans.c
@@ -1,30 +1,30 @@
-/*
- * Copyright © 2003 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#define XIM_t 1
-#define TRANS_CLIENT 1
-
-#include <X11/Xtrans/transport.c>
+/*
+ * Copyright © 2003 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#define XIM_t 1
+#define TRANS_CLIENT 1
+
+#include <X11/Xtrans/transport.c>
diff --git a/libX11/x11-xcb.pc.in b/libX11/x11-xcb.pc.in
index 315a9d176..588fd233b 100644
--- a/libX11/x11-xcb.pc.in
+++ b/libX11/x11-xcb.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: X11 XCB
-Description: X Library XCB interface
-Version: @PACKAGE_VERSION@
-Requires: x11 xcb
-Cflags: -I${includedir}
-Libs: -L${libdir} -lX11-xcb
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: X11 XCB
+Description: X Library XCB interface
+Version: @PACKAGE_VERSION@
+Requires: x11 xcb
+Cflags: -I${includedir}
+Libs: -L${libdir} -lX11-xcb
diff --git a/libX11/x11.pc.in b/libX11/x11.pc.in
index 25c7e7cd0..7352985ed 100644
--- a/libX11/x11.pc.in
+++ b/libX11/x11.pc.in
@@ -1,15 +1,15 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-xthreadlib=@XTHREADLIB@
-
-Name: X11
-Description: X Library
-Version: @PACKAGE_VERSION@
-Requires: xproto @XKBPROTO_REQUIRES@
-Requires.private: @X11_EXTRA_DEPS@
-Cflags: -I${includedir} @XTHREAD_CFLAGS@
-Libs: -L${libdir} -lX11
-Libs.private: @XTHREADLIB@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+xthreadlib=@XTHREADLIB@
+
+Name: X11
+Description: X Library
+Version: @PACKAGE_VERSION@
+Requires: xproto @XKBPROTO_REQUIRES@
+Requires.private: @X11_EXTRA_DEPS@
+Cflags: -I${includedir} @XTHREAD_CFLAGS@
+Libs: -L${libdir} -lX11
+Libs.private: @XTHREADLIB@
diff --git a/libXau/.gitignore b/libXau/.gitignore
new file mode 100644
index 000000000..668956753
--- /dev/null
+++ b/libXau/.gitignore
@@ -0,0 +1,78 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libXau
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libXau/AUTHORS b/libXau/AUTHORS
index a49197556..772f33a5b 100644
--- a/libXau/AUTHORS
+++ b/libXau/AUTHORS
@@ -1,3 +1,3 @@
-Keith Packard, X Consortium
-
-Some bug fixes, but not clear from where.
+Keith Packard, X Consortium
+
+Some bug fixes, but not clear from where.
diff --git a/libXau/AuDispose.c b/libXau/AuDispose.c
index 164fe947d..2a9b2f145 100644
--- a/libXau/AuDispose.c
+++ b/libXau/AuDispose.c
@@ -1,47 +1,47 @@
-/*
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xauth.h>
-#include <stdlib.h>
-
-void
-XauDisposeAuth (Xauth *auth)
-{
- if (auth) {
- if (auth->address) (void) free (auth->address);
- if (auth->number) (void) free (auth->number);
- if (auth->name) (void) free (auth->name);
- if (auth->data) {
- (void) bzero (auth->data, auth->data_length);
- (void) free (auth->data);
- }
- free ((char *) auth);
- }
- return;
-}
+/*
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xauth.h>
+#include <stdlib.h>
+
+void
+XauDisposeAuth (Xauth *auth)
+{
+ if (auth) {
+ if (auth->address) (void) free (auth->address);
+ if (auth->number) (void) free (auth->number);
+ if (auth->name) (void) free (auth->name);
+ if (auth->data) {
+ (void) bzero (auth->data, auth->data_length);
+ (void) free (auth->data);
+ }
+ free ((char *) auth);
+ }
+ return;
+}
diff --git a/libXau/AuGetAddr.c b/libXau/AuGetAddr.c
index f26c58ba4..897d8b565 100644
--- a/libXau/AuGetAddr.c
+++ b/libXau/AuGetAddr.c
@@ -1,109 +1,109 @@
-/*
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xauth.h>
-#include <X11/Xos.h>
-
-static int
-binaryEqual (_Xconst char *a, _Xconst char *b, int len)
-{
- while (len--)
- if (*a++ != *b++)
- return 0;
- return 1;
-}
-
-Xauth *
-XauGetAuthByAddr (
-#if NeedWidePrototypes
-unsigned int family,
-unsigned int address_length,
-#else
-unsigned short family,
-unsigned short address_length,
-#endif
-_Xconst char* address,
-#if NeedWidePrototypes
-unsigned int number_length,
-#else
-unsigned short number_length,
-#endif
-_Xconst char* number,
-#if NeedWidePrototypes
-unsigned int name_length,
-#else
-unsigned short name_length,
-#endif
-_Xconst char* name)
-{
- FILE *auth_file;
- char *auth_name;
- Xauth *entry;
-
- auth_name = XauFileName ();
- if (!auth_name)
- return NULL;
- if (access (auth_name, R_OK) != 0) /* checks REAL id */
- return NULL;
- auth_file = fopen (auth_name, "rb");
- if (!auth_file)
- return NULL;
- for (;;) {
- entry = XauReadAuth (auth_file);
- if (!entry)
- break;
- /*
- * Match when:
- * either family or entry->family are FamilyWild or
- * family and entry->family are the same and
- * address and entry->address are the same
- * and
- * either number or entry->number are empty or
- * number and entry->number are the same
- * and
- * either name or entry->name are empty or
- * name and entry->name are the same
- */
-
- if ((family == FamilyWild || entry->family == FamilyWild ||
- (entry->family == family &&
- address_length == entry->address_length &&
- binaryEqual (entry->address, address, (int)address_length))) &&
- (number_length == 0 || entry->number_length == 0 ||
- (number_length == entry->number_length &&
- binaryEqual (entry->number, number, (int)number_length))) &&
- (name_length == 0 || entry->name_length == 0 ||
- (entry->name_length == name_length &&
- binaryEqual (entry->name, name, (int)name_length))))
- break;
- XauDisposeAuth (entry);
- }
- (void) fclose (auth_file);
- return entry;
-}
+/*
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xauth.h>
+#include <X11/Xos.h>
+
+static int
+binaryEqual (_Xconst char *a, _Xconst char *b, int len)
+{
+ while (len--)
+ if (*a++ != *b++)
+ return 0;
+ return 1;
+}
+
+Xauth *
+XauGetAuthByAddr (
+#if NeedWidePrototypes
+unsigned int family,
+unsigned int address_length,
+#else
+unsigned short family,
+unsigned short address_length,
+#endif
+_Xconst char* address,
+#if NeedWidePrototypes
+unsigned int number_length,
+#else
+unsigned short number_length,
+#endif
+_Xconst char* number,
+#if NeedWidePrototypes
+unsigned int name_length,
+#else
+unsigned short name_length,
+#endif
+_Xconst char* name)
+{
+ FILE *auth_file;
+ char *auth_name;
+ Xauth *entry;
+
+ auth_name = XauFileName ();
+ if (!auth_name)
+ return NULL;
+ if (access (auth_name, R_OK) != 0) /* checks REAL id */
+ return NULL;
+ auth_file = fopen (auth_name, "rb");
+ if (!auth_file)
+ return NULL;
+ for (;;) {
+ entry = XauReadAuth (auth_file);
+ if (!entry)
+ break;
+ /*
+ * Match when:
+ * either family or entry->family are FamilyWild or
+ * family and entry->family are the same and
+ * address and entry->address are the same
+ * and
+ * either number or entry->number are empty or
+ * number and entry->number are the same
+ * and
+ * either name or entry->name are empty or
+ * name and entry->name are the same
+ */
+
+ if ((family == FamilyWild || entry->family == FamilyWild ||
+ (entry->family == family &&
+ address_length == entry->address_length &&
+ binaryEqual (entry->address, address, (int)address_length))) &&
+ (number_length == 0 || entry->number_length == 0 ||
+ (number_length == entry->number_length &&
+ binaryEqual (entry->number, number, (int)number_length))) &&
+ (name_length == 0 || entry->name_length == 0 ||
+ (entry->name_length == name_length &&
+ binaryEqual (entry->name, name, (int)name_length))))
+ break;
+ XauDisposeAuth (entry);
+ }
+ (void) fclose (auth_file);
+ return entry;
+}
diff --git a/libXau/AuGetBest.c b/libXau/AuGetBest.c
index 7d001526f..673ee406a 100644
--- a/libXau/AuGetBest.c
+++ b/libXau/AuGetBest.c
@@ -1,170 +1,170 @@
-/*
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xauth.h>
-#include <X11/Xos.h>
-#ifdef XTHREADS
-#include <X11/Xthreads.h>
-#endif
-#ifdef hpux
-#define X_INCLUDE_NETDB_H
-#define XOS_USE_NO_LOCKING
-#include <X11/Xos_r.h>
-#endif
-
-static int
-binaryEqual (_Xconst char *a, _Xconst char *b, int len)
-{
- while (len--)
- if (*a++ != *b++)
- return 0;
- return 1;
-}
-
-Xauth *
-XauGetBestAuthByAddr (
-#if NeedWidePrototypes
- unsigned int family,
- unsigned int address_length,
-#else
- unsigned short family,
- unsigned short address_length,
-#endif
- _Xconst char* address,
-#if NeedWidePrototypes
- unsigned int number_length,
-#else
- unsigned short number_length,
-#endif
- _Xconst char* number,
- int types_length,
- char** types,
- _Xconst int* type_lengths)
-{
- FILE *auth_file;
- char *auth_name;
- Xauth *entry;
- Xauth *best;
- int best_type;
- int type;
-#ifdef hpux
- char *fully_qual_address;
- unsigned short fully_qual_address_length;
-#endif
-
- auth_name = XauFileName ();
- if (!auth_name)
- return NULL;
- if (access (auth_name, R_OK) != 0) /* checks REAL id */
- return NULL;
- auth_file = fopen (auth_name, "rb");
- if (!auth_file)
- return NULL;
-
-#ifdef hpux
- if (family == FamilyLocal) {
-#ifdef XTHREADS_NEEDS_BYNAMEPARAMS
- _Xgethostbynameparams hparams;
-#endif
- struct hostent *hostp;
-
- /* make sure we try fully-qualified hostname */
- if ((hostp = _XGethostbyname(address,hparams)) != NULL) {
- fully_qual_address = hostp->h_name;
- fully_qual_address_length = strlen(fully_qual_address);
- }
- else
- {
- fully_qual_address = NULL;
- fully_qual_address_length = 0;
- }
- }
-#endif /* hpux */
-
- best = NULL;
- best_type = types_length;
- for (;;) {
- entry = XauReadAuth (auth_file);
- if (!entry)
- break;
- /*
- * Match when:
- * either family or entry->family are FamilyWild or
- * family and entry->family are the same and
- * address and entry->address are the same
- * and
- * either number or entry->number are empty or
- * number and entry->number are the same
- * and
- * either name or entry->name are empty or
- * name and entry->name are the same
- */
-
- if ((family == FamilyWild || entry->family == FamilyWild ||
- (entry->family == family &&
- ((address_length == entry->address_length &&
- binaryEqual (entry->address, address, (int)address_length))
-#ifdef hpux
- || (family == FamilyLocal &&
- fully_qual_address_length == entry->address_length &&
- binaryEqual (entry->address, fully_qual_address,
- (int) fully_qual_address_length))
-#endif
- ))) &&
- (number_length == 0 || entry->number_length == 0 ||
- (number_length == entry->number_length &&
- binaryEqual (entry->number, number, (int)number_length))))
- {
- if (best_type == 0)
- {
- best = entry;
- break;
- }
- for (type = 0; type < best_type; type++)
- if (type_lengths[type] == entry->name_length &&
- !(strncmp (types[type], entry->name, entry->name_length)))
- {
- break;
- }
- if (type < best_type)
- {
- if (best)
- XauDisposeAuth (best);
- best = entry;
- best_type = type;
- if (type == 0)
- break;
- continue;
- }
- }
- XauDisposeAuth (entry);
- }
- (void) fclose (auth_file);
- return best;
-}
+/*
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xauth.h>
+#include <X11/Xos.h>
+#ifdef XTHREADS
+#include <X11/Xthreads.h>
+#endif
+#ifdef hpux
+#define X_INCLUDE_NETDB_H
+#define XOS_USE_NO_LOCKING
+#include <X11/Xos_r.h>
+#endif
+
+static int
+binaryEqual (_Xconst char *a, _Xconst char *b, int len)
+{
+ while (len--)
+ if (*a++ != *b++)
+ return 0;
+ return 1;
+}
+
+Xauth *
+XauGetBestAuthByAddr (
+#if NeedWidePrototypes
+ unsigned int family,
+ unsigned int address_length,
+#else
+ unsigned short family,
+ unsigned short address_length,
+#endif
+ _Xconst char* address,
+#if NeedWidePrototypes
+ unsigned int number_length,
+#else
+ unsigned short number_length,
+#endif
+ _Xconst char* number,
+ int types_length,
+ char** types,
+ _Xconst int* type_lengths)
+{
+ FILE *auth_file;
+ char *auth_name;
+ Xauth *entry;
+ Xauth *best;
+ int best_type;
+ int type;
+#ifdef hpux
+ char *fully_qual_address;
+ unsigned short fully_qual_address_length;
+#endif
+
+ auth_name = XauFileName ();
+ if (!auth_name)
+ return NULL;
+ if (access (auth_name, R_OK) != 0) /* checks REAL id */
+ return NULL;
+ auth_file = fopen (auth_name, "rb");
+ if (!auth_file)
+ return NULL;
+
+#ifdef hpux
+ if (family == FamilyLocal) {
+#ifdef XTHREADS_NEEDS_BYNAMEPARAMS
+ _Xgethostbynameparams hparams;
+#endif
+ struct hostent *hostp;
+
+ /* make sure we try fully-qualified hostname */
+ if ((hostp = _XGethostbyname(address,hparams)) != NULL) {
+ fully_qual_address = hostp->h_name;
+ fully_qual_address_length = strlen(fully_qual_address);
+ }
+ else
+ {
+ fully_qual_address = NULL;
+ fully_qual_address_length = 0;
+ }
+ }
+#endif /* hpux */
+
+ best = NULL;
+ best_type = types_length;
+ for (;;) {
+ entry = XauReadAuth (auth_file);
+ if (!entry)
+ break;
+ /*
+ * Match when:
+ * either family or entry->family are FamilyWild or
+ * family and entry->family are the same and
+ * address and entry->address are the same
+ * and
+ * either number or entry->number are empty or
+ * number and entry->number are the same
+ * and
+ * either name or entry->name are empty or
+ * name and entry->name are the same
+ */
+
+ if ((family == FamilyWild || entry->family == FamilyWild ||
+ (entry->family == family &&
+ ((address_length == entry->address_length &&
+ binaryEqual (entry->address, address, (int)address_length))
+#ifdef hpux
+ || (family == FamilyLocal &&
+ fully_qual_address_length == entry->address_length &&
+ binaryEqual (entry->address, fully_qual_address,
+ (int) fully_qual_address_length))
+#endif
+ ))) &&
+ (number_length == 0 || entry->number_length == 0 ||
+ (number_length == entry->number_length &&
+ binaryEqual (entry->number, number, (int)number_length))))
+ {
+ if (best_type == 0)
+ {
+ best = entry;
+ break;
+ }
+ for (type = 0; type < best_type; type++)
+ if (type_lengths[type] == entry->name_length &&
+ !(strncmp (types[type], entry->name, entry->name_length)))
+ {
+ break;
+ }
+ if (type < best_type)
+ {
+ if (best)
+ XauDisposeAuth (best);
+ best = entry;
+ best_type = type;
+ if (type == 0)
+ break;
+ continue;
+ }
+ }
+ XauDisposeAuth (entry);
+ }
+ (void) fclose (auth_file);
+ return best;
+}
diff --git a/libXau/AuRead.c b/libXau/AuRead.c
index 09e454336..3c59632de 100644
--- a/libXau/AuRead.c
+++ b/libXau/AuRead.c
@@ -1,107 +1,107 @@
-/*
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xauth.h>
-#include <stdlib.h>
-
-static int
-read_short (unsigned short *shortp, FILE *file)
-{
- unsigned char file_short[2];
-
- if (fread ((char *) file_short, (int) sizeof (file_short), 1, file) != 1)
- return 0;
- *shortp = file_short[0] * 256 + file_short[1];
- return 1;
-}
-
-static int
-read_counted_string (unsigned short *countp, char **stringp, FILE *file)
-{
- unsigned short len;
- char *data;
-
- if (read_short (&len, file) == 0)
- return 0;
- if (len == 0) {
- data = NULL;
- } else {
- data = malloc ((unsigned) len);
- if (!data)
- return 0;
- if (fread (data, (int) sizeof (char), (int) len, file) != len) {
- bzero (data, len);
- free (data);
- return 0;
- }
- }
- *stringp = data;
- *countp = len;
- return 1;
-}
-
-Xauth *
-XauReadAuth (FILE *auth_file)
-{
- Xauth local;
- Xauth *ret;
-
- if (read_short (&local.family, auth_file) == 0)
- return NULL;
- if (read_counted_string (&local.address_length, &local.address, auth_file) == 0)
- return NULL;
- if (read_counted_string (&local.number_length, &local.number, auth_file) == 0) {
- if (local.address) free (local.address);
- return NULL;
- }
- if (read_counted_string (&local.name_length, &local.name, auth_file) == 0) {
- if (local.address) free (local.address);
- if (local.number) free (local.number);
- return NULL;
- }
- if (read_counted_string (&local.data_length, &local.data, auth_file) == 0) {
- if (local.address) free (local.address);
- if (local.number) free (local.number);
- if (local.name) free (local.name);
- return NULL;
- }
- ret = (Xauth *) malloc (sizeof (Xauth));
- if (!ret) {
- if (local.address) free (local.address);
- if (local.number) free (local.number);
- if (local.name) free (local.name);
- if (local.data) {
- bzero (local.data, local.data_length);
- free (local.data);
- }
- return NULL;
- }
- *ret = local;
- return ret;
-}
+/*
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xauth.h>
+#include <stdlib.h>
+
+static int
+read_short (unsigned short *shortp, FILE *file)
+{
+ unsigned char file_short[2];
+
+ if (fread ((char *) file_short, (int) sizeof (file_short), 1, file) != 1)
+ return 0;
+ *shortp = file_short[0] * 256 + file_short[1];
+ return 1;
+}
+
+static int
+read_counted_string (unsigned short *countp, char **stringp, FILE *file)
+{
+ unsigned short len;
+ char *data;
+
+ if (read_short (&len, file) == 0)
+ return 0;
+ if (len == 0) {
+ data = NULL;
+ } else {
+ data = malloc ((unsigned) len);
+ if (!data)
+ return 0;
+ if (fread (data, (int) sizeof (char), (int) len, file) != len) {
+ bzero (data, len);
+ free (data);
+ return 0;
+ }
+ }
+ *stringp = data;
+ *countp = len;
+ return 1;
+}
+
+Xauth *
+XauReadAuth (FILE *auth_file)
+{
+ Xauth local;
+ Xauth *ret;
+
+ if (read_short (&local.family, auth_file) == 0)
+ return NULL;
+ if (read_counted_string (&local.address_length, &local.address, auth_file) == 0)
+ return NULL;
+ if (read_counted_string (&local.number_length, &local.number, auth_file) == 0) {
+ if (local.address) free (local.address);
+ return NULL;
+ }
+ if (read_counted_string (&local.name_length, &local.name, auth_file) == 0) {
+ if (local.address) free (local.address);
+ if (local.number) free (local.number);
+ return NULL;
+ }
+ if (read_counted_string (&local.data_length, &local.data, auth_file) == 0) {
+ if (local.address) free (local.address);
+ if (local.number) free (local.number);
+ if (local.name) free (local.name);
+ return NULL;
+ }
+ ret = (Xauth *) malloc (sizeof (Xauth));
+ if (!ret) {
+ if (local.address) free (local.address);
+ if (local.number) free (local.number);
+ if (local.name) free (local.name);
+ if (local.data) {
+ bzero (local.data, local.data_length);
+ free (local.data);
+ }
+ return NULL;
+ }
+ *ret = local;
+ return ret;
+}
diff --git a/libXau/AuUnlock.c b/libXau/AuUnlock.c
index 072331e34..ddbe7db9e 100644
--- a/libXau/AuUnlock.c
+++ b/libXau/AuUnlock.c
@@ -1,59 +1,59 @@
-/*
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xauth.h>
-#include <X11/Xos.h>
-
-int
-XauUnlockAuth (
-_Xconst char *file_name)
-{
-#ifndef WIN32
- char creat_name[1025];
-#endif
- char link_name[1025];
-
- if (strlen (file_name) > 1022)
- return 0;
-#ifndef WIN32
- (void) strcpy (creat_name, file_name);
- (void) strcat (creat_name, "-c");
-#endif
- (void) strcpy (link_name, file_name);
- (void) strcat (link_name, "-l");
- /*
- * I think this is the correct order
- */
-#ifndef WIN32
- (void) unlink (creat_name);
-#endif
- (void) unlink (link_name);
-
- return 1;
-}
+/*
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xauth.h>
+#include <X11/Xos.h>
+
+int
+XauUnlockAuth (
+_Xconst char *file_name)
+{
+#ifndef WIN32
+ char creat_name[1025];
+#endif
+ char link_name[1025];
+
+ if (strlen (file_name) > 1022)
+ return 0;
+#ifndef WIN32
+ (void) strcpy (creat_name, file_name);
+ (void) strcat (creat_name, "-c");
+#endif
+ (void) strcpy (link_name, file_name);
+ (void) strcat (link_name, "-l");
+ /*
+ * I think this is the correct order
+ */
+#ifndef WIN32
+ (void) unlink (creat_name);
+#endif
+ (void) unlink (link_name);
+
+ return 1;
+}
diff --git a/libXau/AuWrite.c b/libXau/AuWrite.c
index 2ad7a07af..0924f8d06 100644
--- a/libXau/AuWrite.c
+++ b/libXau/AuWrite.c
@@ -1,68 +1,68 @@
-/*
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xauth.h>
-
-static int
-write_short (unsigned short s, FILE *file)
-{
- unsigned char file_short[2];
-
- file_short[0] = (s & (unsigned)0xff00) >> 8;
- file_short[1] = s & 0xff;
- if (fwrite ((char *) file_short, (int) sizeof (file_short), 1, file) != 1)
- return 0;
- return 1;
-}
-
-static int
-write_counted_string (unsigned short count, char *string, FILE *file)
-{
- if (write_short (count, file) == 0)
- return 0;
- if (fwrite (string, (int) sizeof (char), (int) count, file) != count)
- return 0;
- return 1;
-}
-
-int
-XauWriteAuth (FILE *auth_file, Xauth *auth)
-{
- if (write_short (auth->family, auth_file) == 0)
- return 0;
- if (write_counted_string (auth->address_length, auth->address, auth_file) == 0)
- return 0;
- if (write_counted_string (auth->number_length, auth->number, auth_file) == 0)
- return 0;
- if (write_counted_string (auth->name_length, auth->name, auth_file) == 0)
- return 0;
- if (write_counted_string (auth->data_length, auth->data, auth_file) == 0)
- return 0;
- return 1;
-}
+/*
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xauth.h>
+
+static int
+write_short (unsigned short s, FILE *file)
+{
+ unsigned char file_short[2];
+
+ file_short[0] = (s & (unsigned)0xff00) >> 8;
+ file_short[1] = s & 0xff;
+ if (fwrite ((char *) file_short, (int) sizeof (file_short), 1, file) != 1)
+ return 0;
+ return 1;
+}
+
+static int
+write_counted_string (unsigned short count, char *string, FILE *file)
+{
+ if (write_short (count, file) == 0)
+ return 0;
+ if (fwrite (string, (int) sizeof (char), (int) count, file) != count)
+ return 0;
+ return 1;
+}
+
+int
+XauWriteAuth (FILE *auth_file, Xauth *auth)
+{
+ if (write_short (auth->family, auth_file) == 0)
+ return 0;
+ if (write_counted_string (auth->address_length, auth->address, auth_file) == 0)
+ return 0;
+ if (write_counted_string (auth->number_length, auth->number, auth_file) == 0)
+ return 0;
+ if (write_counted_string (auth->name_length, auth->name, auth_file) == 0)
+ return 0;
+ if (write_counted_string (auth->data_length, auth->data, auth_file) == 0)
+ return 0;
+ return 1;
+}
diff --git a/libXau/Autest.c b/libXau/Autest.c
index 966e0d13f..efb3da8c6 100644
--- a/libXau/Autest.c
+++ b/libXau/Autest.c
@@ -1,74 +1,74 @@
-/*
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xauth.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-int
-main (int argc, char **argv)
-{
- Xauth test_data;
- char *name = "XAU-TEST-1";
- char *data = "Do not begin the test until instructed to do so.";
- char *file = NULL;
- int state = 0;
- FILE *output;
-
- while (*++argv) {
- if (!strcmp (*argv, "-file"))
- file = *++argv;
- else if (state == 0) {
- name = *argv;
- ++state;
- } else if (state == 1) {
- data = *argv;
- ++state;
- }
- }
- test_data.family = 0;
- test_data.address_length = 0;
- test_data.address = "";
- test_data.number_length = 0;
- test_data.number = "";
- test_data.name_length = strlen (name);
- test_data.name = name;
- test_data.data_length = strlen (data);
- test_data.data = data;
- if (!file) {
- output = tmpfile();
- } else {
- output = fopen (file, "w");
- }
- if (output) {
- state = XauWriteAuth (output, &test_data);
- fclose (output);
- }
- return (state = 1) ? 0 : 1;
-}
+/*
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xauth.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main (int argc, char **argv)
+{
+ Xauth test_data;
+ char *name = "XAU-TEST-1";
+ char *data = "Do not begin the test until instructed to do so.";
+ char *file = NULL;
+ int state = 0;
+ FILE *output;
+
+ while (*++argv) {
+ if (!strcmp (*argv, "-file"))
+ file = *++argv;
+ else if (state == 0) {
+ name = *argv;
+ ++state;
+ } else if (state == 1) {
+ data = *argv;
+ ++state;
+ }
+ }
+ test_data.family = 0;
+ test_data.address_length = 0;
+ test_data.address = "";
+ test_data.number_length = 0;
+ test_data.number = "";
+ test_data.name_length = strlen (name);
+ test_data.name = name;
+ test_data.data_length = strlen (data);
+ test_data.data = data;
+ if (!file) {
+ output = tmpfile();
+ } else {
+ output = fopen (file, "w");
+ }
+ if (output) {
+ state = XauWriteAuth (output, &test_data);
+ fclose (output);
+ }
+ return (state = 1) ? 0 : 1;
+}
diff --git a/libXau/COPYING b/libXau/COPYING
index 64492ad80..e893a82a7 100644
--- a/libXau/COPYING
+++ b/libXau/COPYING
@@ -1,21 +1,21 @@
-Copyright 1988, 1993, 1994, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
+Copyright 1988, 1993, 1994, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
diff --git a/libXau/include/X11/Xauth.h b/libXau/include/X11/Xauth.h
index ec8375a35..f57a1b375 100644
--- a/libXau/include/X11/Xauth.h
+++ b/libXau/include/X11/Xauth.h
@@ -1,137 +1,137 @@
-/*
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-*/
-
-#ifndef _Xauth_h
-#define _Xauth_h
-
-typedef struct xauth {
- unsigned short family;
- unsigned short address_length;
- char *address;
- unsigned short number_length;
- char *number;
- unsigned short name_length;
- char *name;
- unsigned short data_length;
- char *data;
-} Xauth;
-
-#ifndef _XAUTH_STRUCT_ONLY
-
-# include <X11/Xfuncproto.h>
-# include <X11/Xfuncs.h>
-
-# include <stdio.h>
-
-# define FamilyLocal (256) /* not part of X standard (i.e. X.h) */
-# define FamilyWild (65535)
-# define FamilyNetname (254) /* not part of X standard */
-# define FamilyKrb5Principal (253) /* Kerberos 5 principal name */
-# define FamilyLocalHost (252) /* for local non-net authentication */
-
-
-_XFUNCPROTOBEGIN
-
-char *XauFileName(void);
-
-Xauth *XauReadAuth(
-FILE* /* auth_file */
-);
-
-int XauLockAuth(
-_Xconst char* /* file_name */,
-int /* retries */,
-int /* timeout */,
-long /* dead */
-);
-
-int XauUnlockAuth(
-_Xconst char* /* file_name */
-);
-
-int XauWriteAuth(
-FILE* /* auth_file */,
-Xauth* /* auth */
-);
-
-Xauth *XauGetAuthByAddr(
-#if NeedWidePrototypes
-unsigned int /* family */,
-unsigned int /* address_length */,
-#else
-unsigned short /* family */,
-unsigned short /* address_length */,
-#endif
-_Xconst char* /* address */,
-#if NeedWidePrototypes
-unsigned int /* number_length */,
-#else
-unsigned short /* number_length */,
-#endif
-_Xconst char* /* number */,
-#if NeedWidePrototypes
-unsigned int /* name_length */,
-#else
-unsigned short /* name_length */,
-#endif
-_Xconst char* /* name */
-);
-
-Xauth *XauGetBestAuthByAddr(
-#if NeedWidePrototypes
-unsigned int /* family */,
-unsigned int /* address_length */,
-#else
-unsigned short /* family */,
-unsigned short /* address_length */,
-#endif
-_Xconst char* /* address */,
-#if NeedWidePrototypes
-unsigned int /* number_length */,
-#else
-unsigned short /* number_length */,
-#endif
-_Xconst char* /* number */,
-int /* types_length */,
-char** /* type_names */,
-_Xconst int* /* type_lengths */
-);
-
-void XauDisposeAuth(
-Xauth* /* auth */
-);
-
-_XFUNCPROTOEND
-
-/* Return values from XauLockAuth */
-
-# define LOCK_SUCCESS 0 /* lock succeeded */
-# define LOCK_ERROR 1 /* lock unexpectely failed, check errno */
-# define LOCK_TIMEOUT 2 /* lock failed, timeouts expired */
-
-#endif /* _XAUTH_STRUCT_ONLY */
-
-#endif /* _Xauth_h */
+/*
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+*/
+
+#ifndef _Xauth_h
+#define _Xauth_h
+
+typedef struct xauth {
+ unsigned short family;
+ unsigned short address_length;
+ char *address;
+ unsigned short number_length;
+ char *number;
+ unsigned short name_length;
+ char *name;
+ unsigned short data_length;
+ char *data;
+} Xauth;
+
+#ifndef _XAUTH_STRUCT_ONLY
+
+# include <X11/Xfuncproto.h>
+# include <X11/Xfuncs.h>
+
+# include <stdio.h>
+
+# define FamilyLocal (256) /* not part of X standard (i.e. X.h) */
+# define FamilyWild (65535)
+# define FamilyNetname (254) /* not part of X standard */
+# define FamilyKrb5Principal (253) /* Kerberos 5 principal name */
+# define FamilyLocalHost (252) /* for local non-net authentication */
+
+
+_XFUNCPROTOBEGIN
+
+char *XauFileName(void);
+
+Xauth *XauReadAuth(
+FILE* /* auth_file */
+);
+
+int XauLockAuth(
+_Xconst char* /* file_name */,
+int /* retries */,
+int /* timeout */,
+long /* dead */
+);
+
+int XauUnlockAuth(
+_Xconst char* /* file_name */
+);
+
+int XauWriteAuth(
+FILE* /* auth_file */,
+Xauth* /* auth */
+);
+
+Xauth *XauGetAuthByAddr(
+#if NeedWidePrototypes
+unsigned int /* family */,
+unsigned int /* address_length */,
+#else
+unsigned short /* family */,
+unsigned short /* address_length */,
+#endif
+_Xconst char* /* address */,
+#if NeedWidePrototypes
+unsigned int /* number_length */,
+#else
+unsigned short /* number_length */,
+#endif
+_Xconst char* /* number */,
+#if NeedWidePrototypes
+unsigned int /* name_length */,
+#else
+unsigned short /* name_length */,
+#endif
+_Xconst char* /* name */
+);
+
+Xauth *XauGetBestAuthByAddr(
+#if NeedWidePrototypes
+unsigned int /* family */,
+unsigned int /* address_length */,
+#else
+unsigned short /* family */,
+unsigned short /* address_length */,
+#endif
+_Xconst char* /* address */,
+#if NeedWidePrototypes
+unsigned int /* number_length */,
+#else
+unsigned short /* number_length */,
+#endif
+_Xconst char* /* number */,
+int /* types_length */,
+char** /* type_names */,
+_Xconst int* /* type_lengths */
+);
+
+void XauDisposeAuth(
+Xauth* /* auth */
+);
+
+_XFUNCPROTOEND
+
+/* Return values from XauLockAuth */
+
+# define LOCK_SUCCESS 0 /* lock succeeded */
+# define LOCK_ERROR 1 /* lock unexpectely failed, check errno */
+# define LOCK_TIMEOUT 2 /* lock failed, timeouts expired */
+
+#endif /* _XAUTH_STRUCT_ONLY */
+
+#endif /* _Xauth_h */
diff --git a/libXau/man/Xau.man b/libXau/man/Xau.man
index 12deda077..46d4a195c 100644
--- a/libXau/man/Xau.man
+++ b/libXau/man/Xau.man
@@ -1,129 +1,129 @@
-.\" Copyright (c) 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 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
-.\" dealing in this Software without prior written authorization from the
-.\" X Consortium.
-.\"
-.TH Xau __libmansuffix__ __xorgversion__
-.SH NAME
-Xau library: XauFileName, XauReadAuth, XauLockAuth, XauUnlockAuth,
-XauWriteAuth, XauDisposeAuth,
-XauGetAuthByAddr, XauGetBestAuthByAddr \- X authority database routines
-.SH SYNOPSIS
-.B "#include <X11/Xauth.h>"
-.PP
-.nf
-.ta .5i 2i
-typedef struct xauth {
- unsigned short family;
- unsigned short address_length;
- char *address;
- unsigned short number_length;
- char *number;
- unsigned short name_length;
- char *name;
- unsigned short data_length;
- char *data;
-} Xauth;
-
-.HP
-char *XauFileName (void);
-.HP
-Xauth *XauReadAuth (FILE *\fIauth_file\fP\^);
-.HP
-int XauWriteAuth (FILE *\fIauth_file\fP, Xauth *\fIauth\fP\^);
-.HP
-Xauth *XauGetAuthByAddr (unsigned short \fIfamily\fP\^, unsigned short
-\fIaddress_length\fP\^, const char *\fIaddress\fP\^, unsigned short
-\fInumber_length\fP\^, const char *\fInumber\fP\^, unsigned short
-\fIname_length\fP\^, const char *\fIname\fP\^);
-.HP
-Xauth *XauGetBestAuthByAddr (unsigned short \fIfamily\fP\^, unsigned short
-\fIaddress_length\fP\^, const char *\fIaddress\fP\^, unsigned short
-\fInumber_length\fP\^, const char *\fInumber\fP\^, int \fItypes_length\fP\^,
-char **\fItypes\fR\^, const int *\fItype_lengths\fR\^);
-.HP
-int XauLockAuth (const char *\fIfile_name\fP\^, int \fIretries\fP\^, int
-\fItimeout\fP\^, long \fIdead\fP\^);
-.HP
-int XauUnlockAuth (const char *\fIfile_name\fP\^);
-.HP
-int XauDisposeAuth (Xauth *\fIauth\fP\^);
-.ft R
-.SH DESCRIPTION
-.PP
-\fBXauFileName\fP generates the default authorization file name by first
-checking the XAUTHORITY environment variable if set, else it returns
-$HOME/.Xauthority. This name is statically allocated and should
-not be freed.
-.PP
-\fBXauReadAuth\fP reads the next entry from \fIauth_file\fP. The entry is
-\fBnot\fP statically allocated and should be freed by calling
-\fIXauDisposeAuth\fP.
-.PP
-\fBXauWriteAuth\fP writes an authorization entry to \fIauth_file\fP. It
-returns 1 on success, 0 on failure.
-.PP
-\fBXauGetAuthByAddr\fP searches for an entry which matches the given network
-address/display number pair. The entry is \fBnot\fP statically allocated
-and should be freed by calling \fIXauDisposeAuth\fP.
-.PP
-\fBXauGetBestAuthByAddr\fP is similar to \fBXauGetAuthByAddr\fP, except
-that a list of acceptable authentication methods is specified. Xau will
-choose the file entry which matches the earliest entry in this list (e.g., the
-most secure authentication method). The \fItypes\fP argument is an array of
-strings, one string for each authentication method. \fItypes_length\fP
-specifies how many elements are in the \fItypes\fP array.
-\fItypes_lengths\fP is an array of integers representing the length
-of each string.
-.PP
-\fBXauLockAuth\fP does the work necessary to synchronously update an
-authorization file. First it makes two file names, one with ``-c'' appended
-to \fIfile_name\fP, the other with ``-l'' appended. If the ``-c'' file
-already exists and is more than \fIdead\fP seconds old, \fIXauLockAuth\fP
-removes it and the associated ``-l'' file. To prevent possible
-synchronization troubles with NFS, a \fIdead\fP value of zero forces the
-files to be removed. \fIXauLockAuth\fP makes \fIretries\fP attempts to
-create and link the file names, pausing \fItimeout\fP seconds between each
-attempt. \fIXauLockAuth\fP returns a collection of values depending on the
-results:
-.nf
-.ta .5i 2i
-
- LOCK_ERROR A system error occurred, either a file_name
- which is too long, or an unexpected failure from
- a system call. errno may prove useful.
-
- LOCK_TIMEOUT \fIretries\fP attempts failed
-
- LOCK_SUCCESS The lock succeeded.
-
-.fi
-.PP
-\fBXauUnlockAuth\fP undoes the work of \fIXauLockAuth\fP by unlinking both
-the ``-c'' and ``-l'' file names.
-.PP
-\fBXauDisposeAuth\fP frees storage allocated to hold an authorization entry.
-.SH "SEE ALSO"
-xauth(1), xdm(1)
-.SH AUTHOR
-Keith Packard, MIT X Consortium
+.\" Copyright (c) 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 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
+.\" dealing in this Software without prior written authorization from the
+.\" X Consortium.
+.\"
+.TH Xau __libmansuffix__ __xorgversion__
+.SH NAME
+Xau library: XauFileName, XauReadAuth, XauLockAuth, XauUnlockAuth,
+XauWriteAuth, XauDisposeAuth,
+XauGetAuthByAddr, XauGetBestAuthByAddr \- X authority database routines
+.SH SYNOPSIS
+.B "#include <X11/Xauth.h>"
+.PP
+.nf
+.ta .5i 2i
+typedef struct xauth {
+ unsigned short family;
+ unsigned short address_length;
+ char *address;
+ unsigned short number_length;
+ char *number;
+ unsigned short name_length;
+ char *name;
+ unsigned short data_length;
+ char *data;
+} Xauth;
+
+.HP
+char *XauFileName (void);
+.HP
+Xauth *XauReadAuth (FILE *\fIauth_file\fP\^);
+.HP
+int XauWriteAuth (FILE *\fIauth_file\fP, Xauth *\fIauth\fP\^);
+.HP
+Xauth *XauGetAuthByAddr (unsigned short \fIfamily\fP\^, unsigned short
+\fIaddress_length\fP\^, const char *\fIaddress\fP\^, unsigned short
+\fInumber_length\fP\^, const char *\fInumber\fP\^, unsigned short
+\fIname_length\fP\^, const char *\fIname\fP\^);
+.HP
+Xauth *XauGetBestAuthByAddr (unsigned short \fIfamily\fP\^, unsigned short
+\fIaddress_length\fP\^, const char *\fIaddress\fP\^, unsigned short
+\fInumber_length\fP\^, const char *\fInumber\fP\^, int \fItypes_length\fP\^,
+char **\fItypes\fR\^, const int *\fItype_lengths\fR\^);
+.HP
+int XauLockAuth (const char *\fIfile_name\fP\^, int \fIretries\fP\^, int
+\fItimeout\fP\^, long \fIdead\fP\^);
+.HP
+int XauUnlockAuth (const char *\fIfile_name\fP\^);
+.HP
+int XauDisposeAuth (Xauth *\fIauth\fP\^);
+.ft R
+.SH DESCRIPTION
+.PP
+\fBXauFileName\fP generates the default authorization file name by first
+checking the XAUTHORITY environment variable if set, else it returns
+$HOME/.Xauthority. This name is statically allocated and should
+not be freed.
+.PP
+\fBXauReadAuth\fP reads the next entry from \fIauth_file\fP. The entry is
+\fBnot\fP statically allocated and should be freed by calling
+\fIXauDisposeAuth\fP.
+.PP
+\fBXauWriteAuth\fP writes an authorization entry to \fIauth_file\fP. It
+returns 1 on success, 0 on failure.
+.PP
+\fBXauGetAuthByAddr\fP searches for an entry which matches the given network
+address/display number pair. The entry is \fBnot\fP statically allocated
+and should be freed by calling \fIXauDisposeAuth\fP.
+.PP
+\fBXauGetBestAuthByAddr\fP is similar to \fBXauGetAuthByAddr\fP, except
+that a list of acceptable authentication methods is specified. Xau will
+choose the file entry which matches the earliest entry in this list (e.g., the
+most secure authentication method). The \fItypes\fP argument is an array of
+strings, one string for each authentication method. \fItypes_length\fP
+specifies how many elements are in the \fItypes\fP array.
+\fItypes_lengths\fP is an array of integers representing the length
+of each string.
+.PP
+\fBXauLockAuth\fP does the work necessary to synchronously update an
+authorization file. First it makes two file names, one with ``-c'' appended
+to \fIfile_name\fP, the other with ``-l'' appended. If the ``-c'' file
+already exists and is more than \fIdead\fP seconds old, \fIXauLockAuth\fP
+removes it and the associated ``-l'' file. To prevent possible
+synchronization troubles with NFS, a \fIdead\fP value of zero forces the
+files to be removed. \fIXauLockAuth\fP makes \fIretries\fP attempts to
+create and link the file names, pausing \fItimeout\fP seconds between each
+attempt. \fIXauLockAuth\fP returns a collection of values depending on the
+results:
+.nf
+.ta .5i 2i
+
+ LOCK_ERROR A system error occurred, either a file_name
+ which is too long, or an unexpected failure from
+ a system call. errno may prove useful.
+
+ LOCK_TIMEOUT \fIretries\fP attempts failed
+
+ LOCK_SUCCESS The lock succeeded.
+
+.fi
+.PP
+\fBXauUnlockAuth\fP undoes the work of \fIXauLockAuth\fP by unlinking both
+the ``-c'' and ``-l'' file names.
+.PP
+\fBXauDisposeAuth\fP frees storage allocated to hold an authorization entry.
+.SH "SEE ALSO"
+xauth(1), xdm(1)
+.SH AUTHOR
+Keith Packard, MIT X Consortium
diff --git a/libXau/xau.pc.in b/libXau/xau.pc.in
index cda113a27..1c724e4b2 100644
--- a/libXau/xau.pc.in
+++ b/libXau/xau.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Xau
-Description: X authorization file management libary
-Version: @PACKAGE_VERSION@
-Requires: xproto
-Cflags: -I${includedir}
-Libs: -L${libdir} -lXau
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Xau
+Description: X authorization file management libary
+Version: @PACKAGE_VERSION@
+Requires: xproto
+Cflags: -I${includedir}
+Libs: -L${libdir} -lXau
diff --git a/libXdmcp/.gitignore b/libXdmcp/.gitignore
new file mode 100644
index 000000000..ba66f132b
--- /dev/null
+++ b/libXdmcp/.gitignore
@@ -0,0 +1,78 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libXdmcp
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libXdmcp/AUTHORS b/libXdmcp/AUTHORS
index 0364123c6..cf90d230d 100644
--- a/libXdmcp/AUTHORS
+++ b/libXdmcp/AUTHORS
@@ -1,8 +1,8 @@
-Keith Packard, MIT X Consortium
-
-Significant contributions by David Rosenthal of Sun who examined the protocol
-for security issues.
-
-GNU/Hurd support, Marcus Brinkmann
-
-Our apologies if we have inadvertantly overlooked anyone.
+Keith Packard, MIT X Consortium
+
+Significant contributions by David Rosenthal of Sun who examined the protocol
+for security issues.
+
+GNU/Hurd support, Marcus Brinkmann
+
+Our apologies if we have inadvertantly overlooked anyone.
diff --git a/libXdmcp/COPYING b/libXdmcp/COPYING
index 5532d143c..8fbc421a4 100644
--- a/libXdmcp/COPYING
+++ b/libXdmcp/COPYING
@@ -1,23 +1,23 @@
-Copyright 1989, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-Author: Keith Packard, MIT X Consortium
+Copyright 1989, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+Author: Keith Packard, MIT X Consortium
diff --git a/libXdmcp/README b/libXdmcp/README
index 7ba85f043..441a11428 100644
--- a/libXdmcp/README
+++ b/libXdmcp/README
@@ -1,25 +1,25 @@
-libXdmcp - X Display Manager Control Protocol library
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/lib/libXdmcp
-
- http://cgit.freedesktop.org/xorg/lib/libXdmcp
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+libXdmcp - X Display Manager Control Protocol library
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/lib/libXdmcp
+
+ http://cgit.freedesktop.org/xorg/lib/libXdmcp
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/libXdmcp/Wraphelp.README.crypto b/libXdmcp/Wraphelp.README.crypto
index 20c34c071..0fa654fd4 100644
--- a/libXdmcp/Wraphelp.README.crypto
+++ b/libXdmcp/Wraphelp.README.crypto
@@ -1,64 +1,64 @@
-Export Requirements.
-
-You may not export or re-export this software or any copy or
-adaptation in violation of any applicable laws or regulations.
-
-Without limiting the generality of the foregoing, hardware, software,
-technology or services provided under this license agreement may not
-be exported, reexported, transferred or downloaded to or within (or to
-a national resident of) countries under U.S. economic embargo
-including the following countries:
-
-Cuba, Iran, Libya, North Korea, Sudan and Syria. This list is subject
-to change.
-
-Hardware, software, technology or services may not be exported,
-reexported, transferred or downloaded to persons or entities listed on
-the U.S. Department of Commerce Denied Persons List, Entity List of
-proliferation concern or on any U.S. Treasury Department Designated
-Nationals exclusion list, or to parties directly or indirectly
-involved in the development or production of nuclear, chemical,
-biological weapons or in missile technology programs as specified in
-the U.S. Export Administration Regulations (15 CFR 744).
-
-By accepting this license agreement you confirm that you are not
-located in (or a national resident of) any country under U.S. economic
-embargo, not identified on any U.S. Department of Commerce Denied
-Persons List, Entity List or Treasury Department Designated Nationals
-exclusion list, and not directly or indirectly involved in the
-development or production of nuclear, chemical, biological weapons or
-in missile technology programs as specified in the U.S. Export
-Administration Regulations.
-
-Software available on this web site contains cryptography and is
-therefore subject to US government export control under the
-U.S. Export Administration Regulations ("EAR"). EAR Part 740.13(e)
-allows the export and reexport of publicly available encryption source
-code that is not subject to payment of license fee or royalty
-payment. Object code resulting from the compiling of such source code
-may also be exported and reexported under this provision if publicly
-available and not subject to a fee or payment other than reasonable
-and customary fees for reproduction and distribution. This kind of
-encryption source code and the corresponding object code may be
-exported or reexported without prior U.S. government export license
-authorization provided that the U.S. government is notified about the
-Internet location of the software.
-
-The open source software available on this web site is publicly
-available without license fee or royalty payment, and all binary
-software is compiled from the source code. The U.S. government has
-been notified about this site and the location site for the source
-code. Therefore, the source code and compiled object code may be
-downloaded and exported under U.S. export license exception (without a
-U.S. export license) in accordance with the further restrictions
-outlined above regarding embargoed countries, restricted persons and
-restricted end uses.
-
-Local Country Import Requirements. The software you are about to
-download contains cryptography technology. Some countries regulate the
-import, use and/or export of certain products with cryptography. The
-X.org Foundation makes no claims as to the applicability of local
-country import, use and/or export regulations in relation to the
-download of this product. If you are located outside the U.S. and
-Canada you are advised to consult your local country regulations to
-insure compliance.
+Export Requirements.
+
+You may not export or re-export this software or any copy or
+adaptation in violation of any applicable laws or regulations.
+
+Without limiting the generality of the foregoing, hardware, software,
+technology or services provided under this license agreement may not
+be exported, reexported, transferred or downloaded to or within (or to
+a national resident of) countries under U.S. economic embargo
+including the following countries:
+
+Cuba, Iran, Libya, North Korea, Sudan and Syria. This list is subject
+to change.
+
+Hardware, software, technology or services may not be exported,
+reexported, transferred or downloaded to persons or entities listed on
+the U.S. Department of Commerce Denied Persons List, Entity List of
+proliferation concern or on any U.S. Treasury Department Designated
+Nationals exclusion list, or to parties directly or indirectly
+involved in the development or production of nuclear, chemical,
+biological weapons or in missile technology programs as specified in
+the U.S. Export Administration Regulations (15 CFR 744).
+
+By accepting this license agreement you confirm that you are not
+located in (or a national resident of) any country under U.S. economic
+embargo, not identified on any U.S. Department of Commerce Denied
+Persons List, Entity List or Treasury Department Designated Nationals
+exclusion list, and not directly or indirectly involved in the
+development or production of nuclear, chemical, biological weapons or
+in missile technology programs as specified in the U.S. Export
+Administration Regulations.
+
+Software available on this web site contains cryptography and is
+therefore subject to US government export control under the
+U.S. Export Administration Regulations ("EAR"). EAR Part 740.13(e)
+allows the export and reexport of publicly available encryption source
+code that is not subject to payment of license fee or royalty
+payment. Object code resulting from the compiling of such source code
+may also be exported and reexported under this provision if publicly
+available and not subject to a fee or payment other than reasonable
+and customary fees for reproduction and distribution. This kind of
+encryption source code and the corresponding object code may be
+exported or reexported without prior U.S. government export license
+authorization provided that the U.S. government is notified about the
+Internet location of the software.
+
+The open source software available on this web site is publicly
+available without license fee or royalty payment, and all binary
+software is compiled from the source code. The U.S. government has
+been notified about this site and the location site for the source
+code. Therefore, the source code and compiled object code may be
+downloaded and exported under U.S. export license exception (without a
+U.S. export license) in accordance with the further restrictions
+outlined above regarding embargoed countries, restricted persons and
+restricted end uses.
+
+Local Country Import Requirements. The software you are about to
+download contains cryptography technology. Some countries regulate the
+import, use and/or export of certain products with cryptography. The
+X.org Foundation makes no claims as to the applicability of local
+country import, use and/or export regulations in relation to the
+download of this product. If you are located outside the U.S. and
+Canada you are advised to consult your local country regulations to
+insure compliance.
diff --git a/libXdmcp/autogen.sh b/libXdmcp/autogen.sh
index 904cd6746..6fcae015c 100644
--- a/libXdmcp/autogen.sh
+++ b/libXdmcp/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libXdmcp/doc/.gitignore b/libXdmcp/doc/.gitignore
new file mode 100644
index 000000000..92946c9f0
--- /dev/null
+++ b/libXdmcp/doc/.gitignore
@@ -0,0 +1,5 @@
+*.html
+*.ps
+*.pdf
+*.txt
+*.db
diff --git a/libXdmcp/xdmcp.pc.in b/libXdmcp/xdmcp.pc.in
index 095d17207..c414e9165 100644
--- a/libXdmcp/xdmcp.pc.in
+++ b/libXdmcp/xdmcp.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Xdmcp
-Description: X Display Manager Control Protocol library
-Version: @PACKAGE_VERSION@
-Requires: xproto
-Cflags: -I${includedir}
-Libs: -L${libdir} -lXdmcp
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Xdmcp
+Description: X Display Manager Control Protocol library
+Version: @PACKAGE_VERSION@
+Requires: xproto
+Cflags: -I${includedir}
+Libs: -L${libdir} -lXdmcp
diff --git a/libXext/.gitignore b/libXext/.gitignore
new file mode 100644
index 000000000..84f4963c5
--- /dev/null
+++ b/libXext/.gitignore
@@ -0,0 +1,78 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libXext
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libXext/README b/libXext/README
index 8bd443beb..6ca09ffca 100644
--- a/libXext/README
+++ b/libXext/README
@@ -1,29 +1,29 @@
-libXext - library for common extensions to the X11 protocol
-
-No new extensions should be added to this library - it is now instead
-preferred to make per-extension libraries that can be evolved as needed
-without breaking compatibility of this core library.
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/lib/libXext
-
- http://cgit.freedesktop.org/xorg/lib/libXext
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+libXext - library for common extensions to the X11 protocol
+
+No new extensions should be added to this library - it is now instead
+preferred to make per-extension libraries that can be evolved as needed
+without breaking compatibility of this core library.
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/lib/libXext
+
+ http://cgit.freedesktop.org/xorg/lib/libXext
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/libXext/specs/.gitignore b/libXext/specs/.gitignore
new file mode 100644
index 000000000..92946c9f0
--- /dev/null
+++ b/libXext/specs/.gitignore
@@ -0,0 +1,5 @@
+*.html
+*.ps
+*.pdf
+*.txt
+*.db
diff --git a/libXext/xext.pc.in b/libXext/xext.pc.in
index cf9370134..0e6efeb7b 100644
--- a/libXext/xext.pc.in
+++ b/libXext/xext.pc.in
@@ -1,12 +1,12 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Xext
-Description: Misc X Extension Library
-Version: @PACKAGE_VERSION@
-Requires: xextproto
-Requires.private: x11
-Cflags: -I${includedir}
-Libs: -L${libdir} -lXext
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Xext
+Description: Misc X Extension Library
+Version: @PACKAGE_VERSION@
+Requires: xextproto
+Requires.private: x11
+Cflags: -I${includedir}
+Libs: -L${libdir} -lXext
diff --git a/libXinerama/.gitignore b/libXinerama/.gitignore
new file mode 100644
index 000000000..3c327ee35
--- /dev/null
+++ b/libXinerama/.gitignore
@@ -0,0 +1,78 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libXinerama
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libXinerama/COPYING b/libXinerama/COPYING
index c9816b684..b565d04a2 100644
--- a/libXinerama/COPYING
+++ b/libXinerama/COPYING
@@ -1,66 +1,66 @@
-Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
-
-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 (including the next
-paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-
-Copyright 2003 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
-
-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.
-
-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
-DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
-BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
-shall not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from Digital
-Equipment Corporation.
+Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+
+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 (including the next
+paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+
+Copyright 2003 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
+
+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.
+
+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
+DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Digital
+Equipment Corporation.
diff --git a/libXinerama/README b/libXinerama/README
index 397233598..f86ceae96 100644
--- a/libXinerama/README
+++ b/libXinerama/README
@@ -1,25 +1,25 @@
-libXinerama - API for Xinerama extension to X11 Protocol
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/lib/libXinerama
-
- http://cgit.freedesktop.org/xorg/lib/libXinerama
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+libXinerama - API for Xinerama extension to X11 Protocol
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/lib/libXinerama
+
+ http://cgit.freedesktop.org/xorg/lib/libXinerama
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/libXinerama/man/Makefile.am b/libXinerama/man/Makefile.am
index d220ff5fd..7a349ef35 100644
--- a/libXinerama/man/Makefile.am
+++ b/libXinerama/man/Makefile.am
@@ -1,45 +1,45 @@
-#
-# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
-#
-# 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 (including the next
-# paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-
-libmandir = $(LIB_MAN_DIR)
-
-libman_PRE = \
- Xinerama.man \
- $(Xinerama_shadows:=.man)
-
-Xinerama_shadows = \
- XineramaQueryExtension \
- XineramaQueryVersion \
- XineramaIsActive \
- XineramaQueryScreens
-
-EXTRA_DIST = $(libman_PRE)
-CLEANFILES = $(libman_DATA)
-
-libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@)
-
-SUFFIXES = .$(LIB_MAN_SUFFIX) .man
-
-# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
-.man.$(LIB_MAN_SUFFIX):
- $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
+#
+# Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+#
+# 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 (including the next
+# paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+
+libmandir = $(LIB_MAN_DIR)
+
+libman_PRE = \
+ Xinerama.man \
+ $(Xinerama_shadows:=.man)
+
+Xinerama_shadows = \
+ XineramaQueryExtension \
+ XineramaQueryVersion \
+ XineramaIsActive \
+ XineramaQueryScreens
+
+EXTRA_DIST = $(libman_PRE)
+CLEANFILES = $(libman_DATA)
+
+libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@)
+
+SUFFIXES = .$(LIB_MAN_SUFFIX) .man
+
+# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
+.man.$(LIB_MAN_SUFFIX):
+ $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
diff --git a/libXinerama/xinerama.pc.in b/libXinerama/xinerama.pc.in
index a2ffe1b3f..f36049764 100644
--- a/libXinerama/xinerama.pc.in
+++ b/libXinerama/xinerama.pc.in
@@ -1,12 +1,12 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Xinerama
-Description: The Xinerama Library
-Version: @PACKAGE_VERSION@
-Requires: xineramaproto
-Requires.private: x11 xext
-Cflags: -I${includedir}
-Libs: -L${libdir} -lXinerama
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Xinerama
+Description: The Xinerama Library
+Version: @PACKAGE_VERSION@
+Requires: xineramaproto
+Requires.private: x11 xext
+Cflags: -I${includedir}
+Libs: -L${libdir} -lXinerama
diff --git a/libXmu/.gitignore b/libXmu/.gitignore
new file mode 100644
index 000000000..0efb7f990
--- /dev/null
+++ b/libXmu/.gitignore
@@ -0,0 +1,78 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libXmu
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libXmu/doc/.gitignore b/libXmu/doc/.gitignore
new file mode 100644
index 000000000..35b7958a7
--- /dev/null
+++ b/libXmu/doc/.gitignore
@@ -0,0 +1,5 @@
+*.txt
+*.html
+*.pdf
+*.ps
+*.db
diff --git a/libfontenc/.gitignore b/libfontenc/.gitignore
new file mode 100644
index 000000000..f5a54a370
--- /dev/null
+++ b/libfontenc/.gitignore
@@ -0,0 +1,78 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libfontenc
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libfontenc/COPYING b/libfontenc/COPYING
index 51327effd..047bead5a 100644
--- a/libfontenc/COPYING
+++ b/libfontenc/COPYING
@@ -1,19 +1,19 @@
-Copyright (c) 1998-2001 by Juliusz Chroboczek
-
-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
-AUTHORS OR COPYRIGHT HOLDERS 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.
+Copyright (c) 1998-2001 by Juliusz Chroboczek
+
+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
+AUTHORS OR COPYRIGHT HOLDERS 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.
diff --git a/libfontenc/README b/libfontenc/README
index 8a6658d49..f4e90ac42 100644
--- a/libfontenc/README
+++ b/libfontenc/README
@@ -1,25 +1,25 @@
-libfontenc - font encoding library
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/lib/libfontenc
-
- http://cgit.freedesktop.org/xorg/lib/libfontenc
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+libfontenc - font encoding library
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/lib/libfontenc
+
+ http://cgit.freedesktop.org/xorg/lib/libfontenc
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/libfontenc/autogen.sh b/libfontenc/autogen.sh
index 904cd6746..6fcae015c 100644
--- a/libfontenc/autogen.sh
+++ b/libfontenc/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libfontenc/fontenc.pc.in b/libfontenc/fontenc.pc.in
index 1be100f2d..f28f2ce22 100644
--- a/libfontenc/fontenc.pc.in
+++ b/libfontenc/fontenc.pc.in
@@ -1,10 +1,10 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: fontenc
-Description: The fontenc Library
-Version: @PACKAGE_VERSION@
-Cflags: -I${includedir}
-Libs: -L${libdir} -lfontenc
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: fontenc
+Description: The fontenc Library
+Version: @PACKAGE_VERSION@
+Cflags: -I${includedir}
+Libs: -L${libdir} -lfontenc
diff --git a/libxcb/.gitignore b/libxcb/.gitignore
new file mode 100644
index 000000000..7878d7c25
--- /dev/null
+++ b/libxcb/.gitignore
@@ -0,0 +1,30 @@
+aclocal.m4
+autom4te.cache
+compile
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+mkinstalldirs
+config.guess
+config.h
+config.h.in
+config.log
+config.status
+config.sub
+configure
+configure.lineno
+.deps
+.dirstamp
+.libs
+*.lo
+*.loT
+*.la
+Makefile
+Makefile.in
+stamp-h1
+*.o
+*.pc
+*.tar.bz2
+*.tar.gz
diff --git a/libxcb/COPYING b/libxcb/COPYING
index 54bfbe5b0..50a14e39e 100644
--- a/libxcb/COPYING
+++ b/libxcb/COPYING
@@ -1,30 +1,30 @@
-Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-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 AUTHORS
-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 names of the authors
-or their institutions 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
-authors.
+Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+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 AUTHORS
+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 names of the authors
+or their institutions 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
+authors.
diff --git a/libxcb/INSTALL b/libxcb/INSTALL
index 54caf7c19..bf8c23f1f 100644
--- a/libxcb/INSTALL
+++ b/libxcb/INSTALL
@@ -1,229 +1,229 @@
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
-
- This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
- These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.)
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. Run `./configure --help'
-for details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
-
-Installation Names
-==================
-
- By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on. Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the `--target=TYPE' option to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
- Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-will cause the specified gcc to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-`configure' Invocation
-======================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
+Foundation, Inc.
+
+ This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory. After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/libxcb/Makefile.am b/libxcb/Makefile.am
index 6c43c5bd4..1f88b72da 100644
--- a/libxcb/Makefile.am
+++ b/libxcb/Makefile.am
@@ -1,85 +1,85 @@
-SUBDIRS=src tests doc
-
-pkgconfigdir = $(libdir)/pkgconfig
-
-pkgconfig_DATA = xcb.pc
-
-if BUILD_COMPOSITE
-pkgconfig_DATA += xcb-composite.pc
-endif
-if BUILD_DAMAGE
-pkgconfig_DATA += xcb-damage.pc
-endif
-if BUILD_DPMS
-pkgconfig_DATA += xcb-dpms.pc
-endif
-if BUILD_DRI2
-pkgconfig_DATA += xcb-dri2.pc
-endif
-if BUILD_GLX
-pkgconfig_DATA += xcb-glx.pc
-endif
-if BUILD_RANDR
-pkgconfig_DATA += xcb-randr.pc
-endif
-if BUILD_RECORD
-pkgconfig_DATA += xcb-record.pc
-endif
-if BUILD_RENDER
-pkgconfig_DATA += xcb-render.pc
-endif
-if BUILD_RESOURCE
-pkgconfig_DATA += xcb-res.pc
-endif
-if BUILD_SCREENSAVER
-pkgconfig_DATA += xcb-screensaver.pc
-endif
-if BUILD_SHAPE
-pkgconfig_DATA += xcb-shape.pc
-endif
-if BUILD_SHM
-pkgconfig_DATA += xcb-shm.pc
-endif
-if BUILD_SYNC
-pkgconfig_DATA += xcb-sync.pc
-endif
-if BUILD_XEVIE
-pkgconfig_DATA += xcb-xevie.pc
-endif
-if BUILD_XFREE86_DRI
-pkgconfig_DATA += xcb-xf86dri.pc
-endif
-if BUILD_XFIXES
-pkgconfig_DATA += xcb-xfixes.pc
-endif
-if BUILD_XINERAMA
-pkgconfig_DATA += xcb-xinerama.pc
-endif
-if BUILD_XINPUT
-pkgconfig_DATA += xcb-xinput.pc
-endif
-if BUILD_XKB
-pkgconfig_DATA += xcb-xkb.pc
-endif
-if BUILD_XPRINT
-pkgconfig_DATA += xcb-xprint.pc
-endif
-if BUILD_SELINUX
-pkgconfig_DATA += xcb-xselinux.pc
-endif
-if BUILD_XTEST
-pkgconfig_DATA += xcb-xtest.pc
-endif
-if BUILD_XV
-pkgconfig_DATA += xcb-xv.pc
-endif
-if BUILD_XVMC
-pkgconfig_DATA += xcb-xvmc.pc
-endif
-
-
-EXTRA_DIST = \
-tools/README \
-tools/api_conv.pl \
-tools/constants \
-autogen.sh
+SUBDIRS=src tests doc
+
+pkgconfigdir = $(libdir)/pkgconfig
+
+pkgconfig_DATA = xcb.pc
+
+if BUILD_COMPOSITE
+pkgconfig_DATA += xcb-composite.pc
+endif
+if BUILD_DAMAGE
+pkgconfig_DATA += xcb-damage.pc
+endif
+if BUILD_DPMS
+pkgconfig_DATA += xcb-dpms.pc
+endif
+if BUILD_DRI2
+pkgconfig_DATA += xcb-dri2.pc
+endif
+if BUILD_GLX
+pkgconfig_DATA += xcb-glx.pc
+endif
+if BUILD_RANDR
+pkgconfig_DATA += xcb-randr.pc
+endif
+if BUILD_RECORD
+pkgconfig_DATA += xcb-record.pc
+endif
+if BUILD_RENDER
+pkgconfig_DATA += xcb-render.pc
+endif
+if BUILD_RESOURCE
+pkgconfig_DATA += xcb-res.pc
+endif
+if BUILD_SCREENSAVER
+pkgconfig_DATA += xcb-screensaver.pc
+endif
+if BUILD_SHAPE
+pkgconfig_DATA += xcb-shape.pc
+endif
+if BUILD_SHM
+pkgconfig_DATA += xcb-shm.pc
+endif
+if BUILD_SYNC
+pkgconfig_DATA += xcb-sync.pc
+endif
+if BUILD_XEVIE
+pkgconfig_DATA += xcb-xevie.pc
+endif
+if BUILD_XFREE86_DRI
+pkgconfig_DATA += xcb-xf86dri.pc
+endif
+if BUILD_XFIXES
+pkgconfig_DATA += xcb-xfixes.pc
+endif
+if BUILD_XINERAMA
+pkgconfig_DATA += xcb-xinerama.pc
+endif
+if BUILD_XINPUT
+pkgconfig_DATA += xcb-xinput.pc
+endif
+if BUILD_XKB
+pkgconfig_DATA += xcb-xkb.pc
+endif
+if BUILD_XPRINT
+pkgconfig_DATA += xcb-xprint.pc
+endif
+if BUILD_SELINUX
+pkgconfig_DATA += xcb-xselinux.pc
+endif
+if BUILD_XTEST
+pkgconfig_DATA += xcb-xtest.pc
+endif
+if BUILD_XV
+pkgconfig_DATA += xcb-xv.pc
+endif
+if BUILD_XVMC
+pkgconfig_DATA += xcb-xvmc.pc
+endif
+
+
+EXTRA_DIST = \
+tools/README \
+tools/api_conv.pl \
+tools/constants \
+autogen.sh
diff --git a/libxcb/README b/libxcb/README
index 167c8aca6..cb830a436 100644
--- a/libxcb/README
+++ b/libxcb/README
@@ -1,36 +1,36 @@
-About libxcb
-============
-
-libxcb provides an interface to the X Window System protocol, which
-replaces the current Xlib interface. It has several advantages over
-Xlib, including:
-- size: small, simple library, and lower memory footprint
-- latency hiding: batch several requests and wait for the replies later
-- direct protocol access: interface and protocol correspond exactly
-- proven thread support: transparently access XCB from multiple threads
-- easy extension implementation: interfaces auto-generated from XML-XCB
-
-Xlib can also use XCB as a transport layer, allowing software to make
-requests and receive responses with both, which eases porting to XCB.
-However, client programs, libraries, and toolkits will gain the most
-benefit from a native XCB port.
-
-
-Please report any issues you find to the freedesktop.org bug tracker,
-at:
-
- <https://bugs.freedesktop.org/enter_bug.cgi?product=XCB>
-
-Discussion about XCB occurs on the XCB mailing list:
-
- <mailto:xcb at lists.freedesktop.org>
- <http://lists.freedesktop.org/mailman/listinfo/xcb>
-
-You can obtain the latest development versions of XCB using GIT.
-For anonymous checkouts, use:
-
- git clone git://anongit.freedesktop.org/git/xcb/libxcb
-
-For developers, use:
-
- git clone git+ssh://git.freedesktop.org/git/xcb/libxcb
+About libxcb
+============
+
+libxcb provides an interface to the X Window System protocol, which
+replaces the current Xlib interface. It has several advantages over
+Xlib, including:
+- size: small, simple library, and lower memory footprint
+- latency hiding: batch several requests and wait for the replies later
+- direct protocol access: interface and protocol correspond exactly
+- proven thread support: transparently access XCB from multiple threads
+- easy extension implementation: interfaces auto-generated from XML-XCB
+
+Xlib can also use XCB as a transport layer, allowing software to make
+requests and receive responses with both, which eases porting to XCB.
+However, client programs, libraries, and toolkits will gain the most
+benefit from a native XCB port.
+
+
+Please report any issues you find to the freedesktop.org bug tracker,
+at:
+
+ <https://bugs.freedesktop.org/enter_bug.cgi?product=XCB>
+
+Discussion about XCB occurs on the XCB mailing list:
+
+ <mailto:xcb at lists.freedesktop.org>
+ <http://lists.freedesktop.org/mailman/listinfo/xcb>
+
+You can obtain the latest development versions of XCB using GIT.
+For anonymous checkouts, use:
+
+ git clone git://anongit.freedesktop.org/git/xcb/libxcb
+
+For developers, use:
+
+ git clone git+ssh://git.freedesktop.org/git/xcb/libxcb
diff --git a/libxcb/acinclude.m4 b/libxcb/acinclude.m4
index ad24bc2e5..8fa30de73 100644
--- a/libxcb/acinclude.m4
+++ b/libxcb/acinclude.m4
@@ -1,142 +1,142 @@
-dnl Detection and configuration of the visibility feature of gcc
-dnl Vincent Torri 2006-02-11
-dnl
-dnl XCB_CHECK_VISIBILITY([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Check the visibility feature of gcc
-dnl
-AC_DEFUN([XCB_CHECK_VISIBILITY],
-[
-AC_MSG_CHECKING([whether ${CC} supports symbol visibility])
-
-save_CFLAGS=${CFLAGS}
-CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
-AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#pragma GCC visibility push(hidden)
-extern void f(int);
-#pragma GCC visibility pop
- ]],
- [[]]
- )],
- [AC_DEFINE(
- GCC_HAS_VISIBILITY,
- [],
- [Defined if GCC supports the visibility feature])
- m4_if([$1], [], [:], [$1])
- AC_MSG_RESULT(yes)],
- [m4_if([$2], [], [:], [$2])
- AC_MSG_RESULT(no)])
-
-CFLAGS=${save_CFLAGS}
-])
-
-dnl Configure script for doxygen
-dnl Vincent Torri 2006-05-11
-dnl
-dnl XCB_CHECK_DOXYGEN([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Test for the doxygen program, and define BUILD_DOCS and DOXYGEN.
-dnl
-AC_DEFUN([XCB_CHECK_DOXYGEN],
-[
-DOXYGEN="doxygen"
-
-dnl
-dnl Disable the build of the documentation
-dnl
-AC_ARG_ENABLE(
- [build_docs],
- AC_HELP_STRING(
- [--disable-build-docs],
- [Disable the build of the documentation]),
- [if test x"$enableval" != x"yes" ; then
- enable_build_docs="no"
- else
- enable_build_docs="yes"
- fi],
- [enable_build_docs="yes"])
-
-if test "$enable_build_docs" = "no" ; then
- BUILD_DOCS=no
-else
-dnl
-dnl Get the prefix where doxygen is installed.
-dnl
-AC_ARG_WITH(
- [doxygen],
- AC_HELP_STRING(
- [--with-doxygen=FILE],
- [doxygen program to use (eg /usr/bin/doxygen)]),
- dnl
- dnl Check the given doxygen program.
- dnl
- [DOXYGEN=${withval}
- AC_CHECK_PROG(
- [BUILD_DOCS],
- [${DOXYGEN}],
- [yes],
- [no])
- if test $BUILD_DOCS = no; then
- echo "WARNING:"
- echo "The doxygen program you specified:"
- echo "$DOXYGEN"
- echo "was not found. Please check the path and make sure "
- echo "the program exists and is executable."
- AC_MSG_WARN(
- [Warning: no doxygen detected. Documentation will not be built])
- fi],
- [AC_CHECK_PROG(
- [BUILD_DOCS],
- [${DOXYGEN}],
- [yes],
- [no])
- if test ${BUILD_DOCS} = no; then
- echo "WARNING:"
- echo "The doxygen program was not found in your execute"
- echo "You may have doxygen installed somewhere not covered by your path."
- echo ""
- echo "If this is the case make sure you have the packages installed, AND"
- echo "that the doxygen program is in your execute path (see your"
- echo "shell manual page on setting the \$PATH environment variable), OR"
- echo "alternatively, specify the program to use with --with-doxygen."
- AC_MSG_WARN(
- [Warning: no doxygen detected. Documentation will not be built])
- fi])
- AC_PATH_PROG(DOT, dot, no)
- if test "$DOT" = "no"; then
- AC_MSG_WARN([Warning: no dot detected. Documentation will not be built])
- BUILD_DOCS="no"
- fi
-fi
-AC_MSG_CHECKING([whether documentation is built])
-AC_MSG_RESULT([${BUILD_DOCS}])
-
-dnl
-dnl Substitution
-dnl
-AC_SUBST([DOXYGEN])
-
-AM_CONDITIONAL(BUILD_DOCS, test "x$BUILD_DOCS" = "xyes")
-
-])
-
-dnl Detection and configuration of the visibility feature of gcc
-dnl Vincent Torri 2006-02-11
-dnl
-dnl XCB_EXTENSION(name, default)
-dnl set the X extension
-dnl
-AC_DEFUN([XCB_EXTENSION],
-[
-pushdef([UP], translit([$1], [-a-z], [_A-Z]))dnl
-pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl
-
-AC_ARG_ENABLE(DOWN,
- [AS_HELP_STRING([--enable-[]DOWN], [Build XCB $1 Extension (default: $2)])],
- [BUILD_[]UP=$enableval],
- [BUILD_[]UP=$2])
-
-AM_CONDITIONAL(BUILD_[]UP, [test "x$BUILD_[]UP" = "xyes"])
-])
-
-dnl End of acinclude.m4
+dnl Detection and configuration of the visibility feature of gcc
+dnl Vincent Torri 2006-02-11
+dnl
+dnl XCB_CHECK_VISIBILITY([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Check the visibility feature of gcc
+dnl
+AC_DEFUN([XCB_CHECK_VISIBILITY],
+[
+AC_MSG_CHECKING([whether ${CC} supports symbol visibility])
+
+save_CFLAGS=${CFLAGS}
+CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#pragma GCC visibility push(hidden)
+extern void f(int);
+#pragma GCC visibility pop
+ ]],
+ [[]]
+ )],
+ [AC_DEFINE(
+ GCC_HAS_VISIBILITY,
+ [],
+ [Defined if GCC supports the visibility feature])
+ m4_if([$1], [], [:], [$1])
+ AC_MSG_RESULT(yes)],
+ [m4_if([$2], [], [:], [$2])
+ AC_MSG_RESULT(no)])
+
+CFLAGS=${save_CFLAGS}
+])
+
+dnl Configure script for doxygen
+dnl Vincent Torri 2006-05-11
+dnl
+dnl XCB_CHECK_DOXYGEN([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for the doxygen program, and define BUILD_DOCS and DOXYGEN.
+dnl
+AC_DEFUN([XCB_CHECK_DOXYGEN],
+[
+DOXYGEN="doxygen"
+
+dnl
+dnl Disable the build of the documentation
+dnl
+AC_ARG_ENABLE(
+ [build_docs],
+ AC_HELP_STRING(
+ [--disable-build-docs],
+ [Disable the build of the documentation]),
+ [if test x"$enableval" != x"yes" ; then
+ enable_build_docs="no"
+ else
+ enable_build_docs="yes"
+ fi],
+ [enable_build_docs="yes"])
+
+if test "$enable_build_docs" = "no" ; then
+ BUILD_DOCS=no
+else
+dnl
+dnl Get the prefix where doxygen is installed.
+dnl
+AC_ARG_WITH(
+ [doxygen],
+ AC_HELP_STRING(
+ [--with-doxygen=FILE],
+ [doxygen program to use (eg /usr/bin/doxygen)]),
+ dnl
+ dnl Check the given doxygen program.
+ dnl
+ [DOXYGEN=${withval}
+ AC_CHECK_PROG(
+ [BUILD_DOCS],
+ [${DOXYGEN}],
+ [yes],
+ [no])
+ if test $BUILD_DOCS = no; then
+ echo "WARNING:"
+ echo "The doxygen program you specified:"
+ echo "$DOXYGEN"
+ echo "was not found. Please check the path and make sure "
+ echo "the program exists and is executable."
+ AC_MSG_WARN(
+ [Warning: no doxygen detected. Documentation will not be built])
+ fi],
+ [AC_CHECK_PROG(
+ [BUILD_DOCS],
+ [${DOXYGEN}],
+ [yes],
+ [no])
+ if test ${BUILD_DOCS} = no; then
+ echo "WARNING:"
+ echo "The doxygen program was not found in your execute"
+ echo "You may have doxygen installed somewhere not covered by your path."
+ echo ""
+ echo "If this is the case make sure you have the packages installed, AND"
+ echo "that the doxygen program is in your execute path (see your"
+ echo "shell manual page on setting the \$PATH environment variable), OR"
+ echo "alternatively, specify the program to use with --with-doxygen."
+ AC_MSG_WARN(
+ [Warning: no doxygen detected. Documentation will not be built])
+ fi])
+ AC_PATH_PROG(DOT, dot, no)
+ if test "$DOT" = "no"; then
+ AC_MSG_WARN([Warning: no dot detected. Documentation will not be built])
+ BUILD_DOCS="no"
+ fi
+fi
+AC_MSG_CHECKING([whether documentation is built])
+AC_MSG_RESULT([${BUILD_DOCS}])
+
+dnl
+dnl Substitution
+dnl
+AC_SUBST([DOXYGEN])
+
+AM_CONDITIONAL(BUILD_DOCS, test "x$BUILD_DOCS" = "xyes")
+
+])
+
+dnl Detection and configuration of the visibility feature of gcc
+dnl Vincent Torri 2006-02-11
+dnl
+dnl XCB_EXTENSION(name, default)
+dnl set the X extension
+dnl
+AC_DEFUN([XCB_EXTENSION],
+[
+pushdef([UP], translit([$1], [-a-z], [_A-Z]))dnl
+pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl
+
+AC_ARG_ENABLE(DOWN,
+ [AS_HELP_STRING([--enable-[]DOWN], [Build XCB $1 Extension (default: $2)])],
+ [BUILD_[]UP=$enableval],
+ [BUILD_[]UP=$2])
+
+AM_CONDITIONAL(BUILD_[]UP, [test "x$BUILD_[]UP" = "xyes"])
+])
+
+dnl End of acinclude.m4
diff --git a/libxcb/autogen.sh b/libxcb/autogen.sh
index 904cd6746..6fcae015c 100644
--- a/libxcb/autogen.sh
+++ b/libxcb/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libxcb/doc/.gitignore b/libxcb/doc/.gitignore
new file mode 100644
index 000000000..55caf95c6
--- /dev/null
+++ b/libxcb/doc/.gitignore
@@ -0,0 +1,2 @@
+manual
+xcb.doxygen \ No newline at end of file
diff --git a/libxcb/doc/tutorial/xcb.css b/libxcb/doc/tutorial/xcb.css
index e059b3b33..48b0249a8 100644
--- a/libxcb/doc/tutorial/xcb.css
+++ b/libxcb/doc/tutorial/xcb.css
@@ -1,123 +1,123 @@
-body
-{
- background-color: #dddddd;
- color: #000000;
- padding: 8px;
- margin: 0px;
-}
-div.title
-{
- text-align: center;
- font-weight: bold;
- font-size: 28px;
-}
-div.emph
-{
- text-align: left;
- font-weight: bold;
-}
-div.section li.title
-{
- font-weight: bold;
- font-size: 22px;
-}
-div.section li.title p
-{
- font-weight: normal;
- font-size: 16px;
-}
-div.section li.title ul
-{
- font-weight: normal;
- font-size: 16px;
-}
-div.section li.title ol
-{
- font-weight: normal;
- font-size: 16px;
-}
-div.section li.subtitle
-{
- font-weight: bold;
- font-size: 18px;
-}
-div.section li.subsubtitle
-{
- font-weight: bold;
- font-size: 16px;
-}
-div.comp
-{
- border: thin solid #000000;
- color: #000000;
- background-color: #ffffe0;
- padding: 14px;
-}
-div.comp div.title
-{
- font-weight: bold;
- font-size: 16px;
- text-align: center;
-}
-div.comp div.xlib ul li
-{
- font-family: monospace;
- font-size: 12px;
- font-weight: bold;
- position: absolute;
- width: 49%;
- margin-left: 0px;
- margin-top: 10px;
-}
-div.comp div.xcb ul li
-{
- font-family: monospace;
- font-size: 12px;
- font-weight: bold;
- position: relative;
- margin-left: 51%;
- margin-top: 10px;
-}
-pre.code
-{
- border: thin solid #000000;
- color: #000000;
- background-color: #efefef;
- padding: 4px;
- text-align: left;
- font-size: 10px;
-}
-pre.text
-{
- border: thin solid #000000;
- color: #000000;
- background-color: #efefef;
- padding: 4px;
- text-align: left;
- font-size: 10px;
-}
-span.code
-{
- font-family: monospace;
- font-size: 12px;
-}
-pre.code .type
-{
- color: #44bb44;
-}
-pre.code .function
-{
- color: #449fb7;
-}
-pre.code .include
-{
- color: #7d93ae;
-}
-pre.code .string
-{
- color: #ef6e4b;
-}
-pre.code .keyword
-{
- color: #00bbbb;
-}
+body
+{
+ background-color: #dddddd;
+ color: #000000;
+ padding: 8px;
+ margin: 0px;
+}
+div.title
+{
+ text-align: center;
+ font-weight: bold;
+ font-size: 28px;
+}
+div.emph
+{
+ text-align: left;
+ font-weight: bold;
+}
+div.section li.title
+{
+ font-weight: bold;
+ font-size: 22px;
+}
+div.section li.title p
+{
+ font-weight: normal;
+ font-size: 16px;
+}
+div.section li.title ul
+{
+ font-weight: normal;
+ font-size: 16px;
+}
+div.section li.title ol
+{
+ font-weight: normal;
+ font-size: 16px;
+}
+div.section li.subtitle
+{
+ font-weight: bold;
+ font-size: 18px;
+}
+div.section li.subsubtitle
+{
+ font-weight: bold;
+ font-size: 16px;
+}
+div.comp
+{
+ border: thin solid #000000;
+ color: #000000;
+ background-color: #ffffe0;
+ padding: 14px;
+}
+div.comp div.title
+{
+ font-weight: bold;
+ font-size: 16px;
+ text-align: center;
+}
+div.comp div.xlib ul li
+{
+ font-family: monospace;
+ font-size: 12px;
+ font-weight: bold;
+ position: absolute;
+ width: 49%;
+ margin-left: 0px;
+ margin-top: 10px;
+}
+div.comp div.xcb ul li
+{
+ font-family: monospace;
+ font-size: 12px;
+ font-weight: bold;
+ position: relative;
+ margin-left: 51%;
+ margin-top: 10px;
+}
+pre.code
+{
+ border: thin solid #000000;
+ color: #000000;
+ background-color: #efefef;
+ padding: 4px;
+ text-align: left;
+ font-size: 10px;
+}
+pre.text
+{
+ border: thin solid #000000;
+ color: #000000;
+ background-color: #efefef;
+ padding: 4px;
+ text-align: left;
+ font-size: 10px;
+}
+span.code
+{
+ font-family: monospace;
+ font-size: 12px;
+}
+pre.code .type
+{
+ color: #44bb44;
+}
+pre.code .function
+{
+ color: #449fb7;
+}
+pre.code .include
+{
+ color: #7d93ae;
+}
+pre.code .string
+{
+ color: #ef6e4b;
+}
+pre.code .keyword
+{
+ color: #00bbbb;
+}
diff --git a/libxcb/doc/xcb.doxygen.in b/libxcb/doc/xcb.doxygen.in
index 58aa07630..d674cbab1 100644
--- a/libxcb/doc/xcb.doxygen.in
+++ b/libxcb/doc/xcb.doxygen.in
@@ -1,1253 +1,1253 @@
-# Doxyfile 1.5.0
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = "XCB"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER = @VERSION@
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = @top_builddir@/doc
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
-# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
-# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
-# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE = English
-
-# This tag can be used to specify the encoding used in the generated output.
-# The encoding is not always determined by the language that is chosen,
-# but also whether or not the output is meant for Windows or non-Windows users.
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
-# forces the Windows encoding (this is the default for the Windows binary),
-# whereas setting the tag to NO uses a Unix-style encoding (the default for
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
-# include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES = NO
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from the
-# version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-# XXX: In the future this should be turned on. For now it generates too much noise.
-WARN_IF_UNDOCUMENTED = NO
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC = YES
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = @top_srcdir@/src @top_builddir@/src
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentstion.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = manual
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = YES
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a caller dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_WIDTH = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that a graph may be further truncated if the graph's
-# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
-# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
-# the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, which results in a white background.
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
+# Doxyfile 1.5.0
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = "XCB"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @VERSION@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = @top_builddir@/doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
+# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
+# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
+# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member
+# documentation.
+
+DETAILS_AT_TOP = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for Java.
+# For instance, namespaces will be presented as packages, qualified scopes
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
+# include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = NO
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from the
+# version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = YES
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+# XXX: In the future this should be turned on. For now it generates too much noise.
+WARN_IF_UNDOCUMENTED = NO
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = @top_srcdir@/src @top_builddir@/src
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
+
+FILE_PATTERNS =
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output. If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code. Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = manual
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a caller dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that a graph may be further truncated if the graph's
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, which results in a white background.
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
diff --git a/libxcb/doc/xkb_internals b/libxcb/doc/xkb_internals
index 3e103910c..93c6d0170 100644
--- a/libxcb/doc/xkb_internals
+++ b/libxcb/doc/xkb_internals
@@ -1,49 +1,49 @@
-
-XKB introduces several uncommon data structures:
- - switch allows conditional inclusion of fields
- - several complex objects intermix variable and fixed size fields
- - lists with a variable number of variable size objects
-
-To handle these objects, a number of new functions is generated:
- - _serialize() turns a structured object into a byte stream,
- (re)ordering or including fields according to the protocol
- - _unserialize() rewrites data from a buffer into a structured object
- - _unpack() expands a buffer representing a switch object into
- a special structured type, all flags needed to resolve the switch
- expression have to given as parameters
- - _sizeof() calculates the size of a serialized object, often by calling
- _unserialize()/_unpack() internally
-
-The new structured data type for switch is special as it contains fixed
-and variable size fields. Variable size fields can be accessed via pointers.
-
-If switch appears in a request, an additional set of request helpers is
-generated with the suffix _aux or _aux_(un)checked. While the 'common'
-request functions require that switch has been serialized before, the _aux
-variants take the structured data type. They are especially designed to
-replace certain functions in xcb-util/aux.
-
-Accessors for switch members need two parameters, where the first is usually
-a pointer to the respective request or reply structure, while the second
-is a pointer to the unpacked switch data structure.
-
-Functions from the serialize family that take a double pointer can allocate
-memory on their own, which is useful if the size of a buffer has to be
-calculated depending on the data within. These functions call malloc() when
-the double pointer is given as the address of a pointer that has been
-initialized to 0. It is the responsibility of the user to free any allocated
-memory.
-
-Intermixed variable and fixed size fields are an important special case in XKB.
-The current implementation resolves the issue by reordering the fields before
-sending them on the wire as well as before returning a reply. That means that
-these objects look like 'common' XCB data types and they can be accessed as such
-(i.e. fixed size fields directly via the structured type and variable size fields
-via accessors/iterators).
-
-In case a list with variable size elements needs to be accessed, it is necessary
-to use iterators. The iterator functions take care of determining the actual
-object size for each element automatically.
-
-A small and preliminary set of auxiliary functions is available in xkb_util.c
-in the check_xkb module.
+
+XKB introduces several uncommon data structures:
+ - switch allows conditional inclusion of fields
+ - several complex objects intermix variable and fixed size fields
+ - lists with a variable number of variable size objects
+
+To handle these objects, a number of new functions is generated:
+ - _serialize() turns a structured object into a byte stream,
+ (re)ordering or including fields according to the protocol
+ - _unserialize() rewrites data from a buffer into a structured object
+ - _unpack() expands a buffer representing a switch object into
+ a special structured type, all flags needed to resolve the switch
+ expression have to given as parameters
+ - _sizeof() calculates the size of a serialized object, often by calling
+ _unserialize()/_unpack() internally
+
+The new structured data type for switch is special as it contains fixed
+and variable size fields. Variable size fields can be accessed via pointers.
+
+If switch appears in a request, an additional set of request helpers is
+generated with the suffix _aux or _aux_(un)checked. While the 'common'
+request functions require that switch has been serialized before, the _aux
+variants take the structured data type. They are especially designed to
+replace certain functions in xcb-util/aux.
+
+Accessors for switch members need two parameters, where the first is usually
+a pointer to the respective request or reply structure, while the second
+is a pointer to the unpacked switch data structure.
+
+Functions from the serialize family that take a double pointer can allocate
+memory on their own, which is useful if the size of a buffer has to be
+calculated depending on the data within. These functions call malloc() when
+the double pointer is given as the address of a pointer that has been
+initialized to 0. It is the responsibility of the user to free any allocated
+memory.
+
+Intermixed variable and fixed size fields are an important special case in XKB.
+The current implementation resolves the issue by reordering the fields before
+sending them on the wire as well as before returning a reply. That means that
+these objects look like 'common' XCB data types and they can be accessed as such
+(i.e. fixed size fields directly via the structured type and variable size fields
+via accessors/iterators).
+
+In case a list with variable size elements needs to be accessed, it is necessary
+to use iterators. The iterator functions take care of determining the actual
+object size for each element automatically.
+
+A small and preliminary set of auxiliary functions is available in xkb_util.c
+in the check_xkb module.
diff --git a/libxcb/doc/xkb_issues b/libxcb/doc/xkb_issues
index f10c015e5..80efcc1fc 100644
--- a/libxcb/doc/xkb_issues
+++ b/libxcb/doc/xkb_issues
@@ -1,38 +1,38 @@
-
-There are a number of problematic special cases in XKB. The issues
-mentioned here are at most partly resolved.
-
-1. The are several XxxDoodad structures defined in xkb.xml. They are used
- in a few lists, but in a rather special way:
- The struct "CommonDoodad" is supposed to be a rather generic data type,
- combining the most basic Doodad fields that are common in all these structures.
- All Doodads are encapsulated in a union type simply called "Doodad".
- Now this union is used in subsequent list definitions, aiming at a kind of
- 'polymorphism': From inspection of the protocol and Xlib, the Doodads are to
- be discriminated based on their type field.
- However the special meaning of the type field is not encoded in the protocol.
- Furthermore the TextDoodad and the LogoDoodad are variable size types due to
- some fields of type CountedString16, thereby turning the union into a
- possibly variable size type as well.
- However, for lists with variable size elements, special sizeof functions are
- required. These cannot be autogenerated as it cannot be referred which
- Doodad type to use for the union.
- Therefore, the Doodad type structures are unsupported at the moment.
-
-2. There are still some bugs in xkb.xml: Either certain fields are missing
- that are required by the protocol, or Xlib simply has another understanding
- of the protocol.
-
-3. The interface for accessors should be reviewed.
-
-4. Currently some bitcases carry 'name' attributes. These could be avoided if
- the data within would consist of a singe struct field only.
-
-5. switch could get a 'fixed_size' attribute, so when rewriting valueparam to switch,
- an uint32_t * pointer could be used instead of void *.
-
-6. The automatic inclusion of padding requires some complicated coding in the
- generator. This is errorprone and could be avoided if all padding is explicitly
- given in the protocol definition. For variable size fields that require padding,
- the pad tag could get a 'fieldref' attribute. That way padding could be handled
+
+There are a number of problematic special cases in XKB. The issues
+mentioned here are at most partly resolved.
+
+1. The are several XxxDoodad structures defined in xkb.xml. They are used
+ in a few lists, but in a rather special way:
+ The struct "CommonDoodad" is supposed to be a rather generic data type,
+ combining the most basic Doodad fields that are common in all these structures.
+ All Doodads are encapsulated in a union type simply called "Doodad".
+ Now this union is used in subsequent list definitions, aiming at a kind of
+ 'polymorphism': From inspection of the protocol and Xlib, the Doodads are to
+ be discriminated based on their type field.
+ However the special meaning of the type field is not encoded in the protocol.
+ Furthermore the TextDoodad and the LogoDoodad are variable size types due to
+ some fields of type CountedString16, thereby turning the union into a
+ possibly variable size type as well.
+ However, for lists with variable size elements, special sizeof functions are
+ required. These cannot be autogenerated as it cannot be referred which
+ Doodad type to use for the union.
+ Therefore, the Doodad type structures are unsupported at the moment.
+
+2. There are still some bugs in xkb.xml: Either certain fields are missing
+ that are required by the protocol, or Xlib simply has another understanding
+ of the protocol.
+
+3. The interface for accessors should be reviewed.
+
+4. Currently some bitcases carry 'name' attributes. These could be avoided if
+ the data within would consist of a singe struct field only.
+
+5. switch could get a 'fixed_size' attribute, so when rewriting valueparam to switch,
+ an uint32_t * pointer could be used instead of void *.
+
+6. The automatic inclusion of padding requires some complicated coding in the
+ generator. This is errorprone and could be avoided if all padding is explicitly
+ given in the protocol definition. For variable size fields that require padding,
+ the pad tag could get a 'fieldref' attribute. That way padding could be handled
a lot easier in the autogenerator. \ No newline at end of file
diff --git a/libxcb/src/xcb_ext.c b/libxcb/src/xcb_ext.c
index c79c54de2..be7862f41 100644
--- a/libxcb/src/xcb_ext.c
+++ b/libxcb/src/xcb_ext.c
@@ -1,129 +1,129 @@
-/* Copyright (C) 2001-2004 Bart Massey and Jamey Sharp.
- *
- * 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
- * AUTHORS 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 names of the authors or their
- * institutions 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 authors.
- */
-
-/* A cache for QueryExtension results. */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "xcb.h"
-#include "xcbext.h"
-#include "xcbint.h"
-
-typedef struct lazyreply {
- enum lazy_reply_tag tag;
- union {
- xcb_query_extension_cookie_t cookie;
- xcb_query_extension_reply_t *reply;
- } value;
-} lazyreply;
-
-static lazyreply *get_index(xcb_connection_t *c, int idx)
-{
- if(idx > c->ext.extensions_size)
- {
- int new_size = idx << 1;
- lazyreply *new_extensions = realloc(c->ext.extensions, sizeof(lazyreply) * new_size);
- if(!new_extensions)
- return 0;
- memset(new_extensions + c->ext.extensions_size, 0, sizeof(lazyreply) * (new_size - c->ext.extensions_size));
- c->ext.extensions = new_extensions;
- c->ext.extensions_size = new_size;
- }
- return c->ext.extensions + idx - 1;
-}
-
-static lazyreply *get_lazyreply(xcb_connection_t *c, xcb_extension_t *ext)
-{
- static pthread_mutex_t global_lock = PTHREAD_MUTEX_INITIALIZER;
- static int next_global_id;
-
- lazyreply *data;
-
- pthread_mutex_lock(&global_lock);
- if(!ext->global_id)
- ext->global_id = ++next_global_id;
- pthread_mutex_unlock(&global_lock);
-
- data = get_index(c, ext->global_id);
- if(data && data->tag == LAZY_NONE)
- {
- /* cache miss: query the server */
- data->tag = LAZY_COOKIE;
- data->value.cookie = xcb_query_extension(c, strlen(ext->name), ext->name);
- }
- return data;
-}
-
-/* Public interface */
-
-/* Do not free the returned xcb_query_extension_reply_t - on return, it's aliased
- * from the cache. */
-const xcb_query_extension_reply_t *xcb_get_extension_data(xcb_connection_t *c, xcb_extension_t *ext)
-{
- lazyreply *data;
- if(c->has_error)
- return 0;
-
- pthread_mutex_lock(&c->ext.lock);
- data = get_lazyreply(c, ext);
- if(data && data->tag == LAZY_COOKIE)
- {
- data->tag = LAZY_FORCED;
- data->value.reply = xcb_query_extension_reply(c, data->value.cookie, 0);
- }
- pthread_mutex_unlock(&c->ext.lock);
-
- return data ? data->value.reply : 0;
-}
-
-void xcb_prefetch_extension_data(xcb_connection_t *c, xcb_extension_t *ext)
-{
- if(c->has_error)
- return;
- pthread_mutex_lock(&c->ext.lock);
- get_lazyreply(c, ext);
- pthread_mutex_unlock(&c->ext.lock);
-}
-
-/* Private interface */
-
-int _xcb_ext_init(xcb_connection_t *c)
-{
- if(pthread_mutex_init(&c->ext.lock, 0))
- return 0;
- return 1;
-}
-
-void _xcb_ext_destroy(xcb_connection_t *c)
-{
- if (!c->ext.lock)
- return; /* mutex is not initialised */
- pthread_mutex_destroy(&c->ext.lock);
- while(c->ext.extensions_size-- > 0)
- if(c->ext.extensions[c->ext.extensions_size].tag == LAZY_FORCED)
- free(c->ext.extensions[c->ext.extensions_size].value.reply);
- free(c->ext.extensions);
-}
+/* Copyright (C) 2001-2004 Bart Massey and Jamey Sharp.
+ *
+ * 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
+ * AUTHORS 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 names of the authors or their
+ * institutions 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 authors.
+ */
+
+/* A cache for QueryExtension results. */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "xcb.h"
+#include "xcbext.h"
+#include "xcbint.h"
+
+typedef struct lazyreply {
+ enum lazy_reply_tag tag;
+ union {
+ xcb_query_extension_cookie_t cookie;
+ xcb_query_extension_reply_t *reply;
+ } value;
+} lazyreply;
+
+static lazyreply *get_index(xcb_connection_t *c, int idx)
+{
+ if(idx > c->ext.extensions_size)
+ {
+ int new_size = idx << 1;
+ lazyreply *new_extensions = realloc(c->ext.extensions, sizeof(lazyreply) * new_size);
+ if(!new_extensions)
+ return 0;
+ memset(new_extensions + c->ext.extensions_size, 0, sizeof(lazyreply) * (new_size - c->ext.extensions_size));
+ c->ext.extensions = new_extensions;
+ c->ext.extensions_size = new_size;
+ }
+ return c->ext.extensions + idx - 1;
+}
+
+static lazyreply *get_lazyreply(xcb_connection_t *c, xcb_extension_t *ext)
+{
+ static pthread_mutex_t global_lock = PTHREAD_MUTEX_INITIALIZER;
+ static int next_global_id;
+
+ lazyreply *data;
+
+ pthread_mutex_lock(&global_lock);
+ if(!ext->global_id)
+ ext->global_id = ++next_global_id;
+ pthread_mutex_unlock(&global_lock);
+
+ data = get_index(c, ext->global_id);
+ if(data && data->tag == LAZY_NONE)
+ {
+ /* cache miss: query the server */
+ data->tag = LAZY_COOKIE;
+ data->value.cookie = xcb_query_extension(c, strlen(ext->name), ext->name);
+ }
+ return data;
+}
+
+/* Public interface */
+
+/* Do not free the returned xcb_query_extension_reply_t - on return, it's aliased
+ * from the cache. */
+const xcb_query_extension_reply_t *xcb_get_extension_data(xcb_connection_t *c, xcb_extension_t *ext)
+{
+ lazyreply *data;
+ if(c->has_error)
+ return 0;
+
+ pthread_mutex_lock(&c->ext.lock);
+ data = get_lazyreply(c, ext);
+ if(data && data->tag == LAZY_COOKIE)
+ {
+ data->tag = LAZY_FORCED;
+ data->value.reply = xcb_query_extension_reply(c, data->value.cookie, 0);
+ }
+ pthread_mutex_unlock(&c->ext.lock);
+
+ return data ? data->value.reply : 0;
+}
+
+void xcb_prefetch_extension_data(xcb_connection_t *c, xcb_extension_t *ext)
+{
+ if(c->has_error)
+ return;
+ pthread_mutex_lock(&c->ext.lock);
+ get_lazyreply(c, ext);
+ pthread_mutex_unlock(&c->ext.lock);
+}
+
+/* Private interface */
+
+int _xcb_ext_init(xcb_connection_t *c)
+{
+ if(pthread_mutex_init(&c->ext.lock, 0))
+ return 0;
+ return 1;
+}
+
+void _xcb_ext_destroy(xcb_connection_t *c)
+{
+ if (!c->ext.lock)
+ return; /* mutex is not initialised */
+ pthread_mutex_destroy(&c->ext.lock);
+ while(c->ext.extensions_size-- > 0)
+ if(c->ext.extensions[c->ext.extensions_size].tag == LAZY_FORCED)
+ free(c->ext.extensions[c->ext.extensions_size].value.reply);
+ free(c->ext.extensions);
+}
diff --git a/libxcb/src/xcb_list.c b/libxcb/src/xcb_list.c
index 3a18d9086..fc00588b4 100644
--- a/libxcb/src/xcb_list.c
+++ b/libxcb/src/xcb_list.c
@@ -1,101 +1,101 @@
-/* Copyright (C) 2001-2004 Bart Massey and Jamey Sharp.
- *
- * 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
- * AUTHORS 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 names of the authors or their
- * institutions 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 authors.
- */
-
-/* A generic implementation of a list of void-pointers. */
-
-#include <stdlib.h>
-
-#include "xcb.h"
-#include "xcbint.h"
-
-typedef struct node {
- struct node *next;
- unsigned int key;
- void *data;
-} node;
-
-struct _xcb_map {
- node *head;
- node **tail;
-};
-
-/* Private interface */
-
-_xcb_map *_xcb_map_new()
-{
- _xcb_map *list;
- list = malloc(sizeof(_xcb_map));
- if(!list)
- return 0;
- list->head = 0;
- list->tail = &list->head;
- return list;
-}
-
-void _xcb_map_delete(_xcb_map *list, xcb_list_free_func_t do_free)
-{
- if(!list)
- return;
- while(list->head)
- {
- node *cur = list->head;
- if(do_free)
- do_free(cur->data);
- list->head = cur->next;
- free(cur);
- }
- free(list);
-}
-
-int _xcb_map_put(_xcb_map *list, unsigned int key, void *data)
-{
- node *cur = malloc(sizeof(node));
- if(!cur)
- return 0;
- cur->key = key;
- cur->data = data;
- cur->next = 0;
- *list->tail = cur;
- list->tail = &cur->next;
- return 1;
-}
-
-void *_xcb_map_remove(_xcb_map *list, unsigned int key)
-{
- node **cur;
- for(cur = &list->head; *cur; cur = &(*cur)->next)
- if((*cur)->key == key)
- {
- node *tmp = *cur;
- void *ret = (*cur)->data;
- *cur = (*cur)->next;
- if(!*cur)
- list->tail = cur;
-
- free(tmp);
- return ret;
- }
- return 0;
-}
+/* Copyright (C) 2001-2004 Bart Massey and Jamey Sharp.
+ *
+ * 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
+ * AUTHORS 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 names of the authors or their
+ * institutions 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 authors.
+ */
+
+/* A generic implementation of a list of void-pointers. */
+
+#include <stdlib.h>
+
+#include "xcb.h"
+#include "xcbint.h"
+
+typedef struct node {
+ struct node *next;
+ unsigned int key;
+ void *data;
+} node;
+
+struct _xcb_map {
+ node *head;
+ node **tail;
+};
+
+/* Private interface */
+
+_xcb_map *_xcb_map_new()
+{
+ _xcb_map *list;
+ list = malloc(sizeof(_xcb_map));
+ if(!list)
+ return 0;
+ list->head = 0;
+ list->tail = &list->head;
+ return list;
+}
+
+void _xcb_map_delete(_xcb_map *list, xcb_list_free_func_t do_free)
+{
+ if(!list)
+ return;
+ while(list->head)
+ {
+ node *cur = list->head;
+ if(do_free)
+ do_free(cur->data);
+ list->head = cur->next;
+ free(cur);
+ }
+ free(list);
+}
+
+int _xcb_map_put(_xcb_map *list, unsigned int key, void *data)
+{
+ node *cur = malloc(sizeof(node));
+ if(!cur)
+ return 0;
+ cur->key = key;
+ cur->data = data;
+ cur->next = 0;
+ *list->tail = cur;
+ list->tail = &cur->next;
+ return 1;
+}
+
+void *_xcb_map_remove(_xcb_map *list, unsigned int key)
+{
+ node **cur;
+ for(cur = &list->head; *cur; cur = &(*cur)->next)
+ if((*cur)->key == key)
+ {
+ node *tmp = *cur;
+ void *ret = (*cur)->data;
+ *cur = (*cur)->next;
+ if(!*cur)
+ list->tail = cur;
+
+ free(tmp);
+ return ret;
+ }
+ return 0;
+}
diff --git a/libxcb/src/xcb_xid.c b/libxcb/src/xcb_xid.c
index b0de73f21..e32306157 100644
--- a/libxcb/src/xcb_xid.c
+++ b/libxcb/src/xcb_xid.c
@@ -1,99 +1,99 @@
-/* Copyright (C) 2001-2008 Bart Massey and Jamey Sharp.
- *
- * 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
- * AUTHORS 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 names of the authors or their
- * institutions 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 authors.
- */
-
-/* XID allocators. */
-
-#include <assert.h>
-#include <stdlib.h>
-#include "xcb.h"
-#include "xcbext.h"
-#include "xcbint.h"
-#include "xc_misc.h"
-
-/* Public interface */
-
-uint32_t xcb_generate_id(xcb_connection_t *c)
-{
- uint32_t ret;
- if(c->has_error)
- return -1;
- pthread_mutex_lock(&c->xid.lock);
- if(c->xid.last >= c->xid.max - c->xid.inc + 1)
- {
- xcb_xc_misc_get_xid_range_reply_t *range;
- assert(c->xid.last == c->xid.max);
- if (c->xid.last == 0) {
- /* finish setting up initial range */
- c->xid.max = c->setup->resource_id_mask;
- } else {
- /* check for extension */
- const xcb_query_extension_reply_t *xc_misc_reply =
- xcb_get_extension_data(c, &xcb_xc_misc_id);
- if (!xc_misc_reply) {
- pthread_mutex_unlock(&c->xid.lock);
- return -1;
- }
- /* get new range */
- range = xcb_xc_misc_get_xid_range_reply(c,
- xcb_xc_misc_get_xid_range(c), 0);
- /* XXX The latter disjunct is what the server returns
- when it is out of XIDs. Sweet. */
- if(!range || (range->start_id == 0 && range->count == 1))
- {
- pthread_mutex_unlock(&c->xid.lock);
- return -1;
- }
- assert(range->count > 0 && range->start_id > 0);
- c->xid.last = range->start_id;
- c->xid.max = range->start_id + (range->count - 1) * c->xid.inc;
- free(range);
- }
- } else {
- c->xid.last += c->xid.inc;
- }
- ret = c->xid.last | c->xid.base;
- pthread_mutex_unlock(&c->xid.lock);
- return ret;
-}
-
-/* Private interface */
-
-int _xcb_xid_init(xcb_connection_t *c)
-{
- if(pthread_mutex_init(&c->xid.lock, 0))
- return 0;
- c->xid.last = 0;
- c->xid.max = 0;
- c->xid.base = c->setup->resource_id_base;
- c->xid.inc = c->setup->resource_id_mask & -(c->setup->resource_id_mask);
- return 1;
-}
-
-void _xcb_xid_destroy(xcb_connection_t *c)
-{
- if (!c->xid.lock)
- return; /* mutex was not initialised yet */
- pthread_mutex_destroy(&c->xid.lock);
-}
+/* Copyright (C) 2001-2008 Bart Massey and Jamey Sharp.
+ *
+ * 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
+ * AUTHORS 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 names of the authors or their
+ * institutions 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 authors.
+ */
+
+/* XID allocators. */
+
+#include <assert.h>
+#include <stdlib.h>
+#include "xcb.h"
+#include "xcbext.h"
+#include "xcbint.h"
+#include "xc_misc.h"
+
+/* Public interface */
+
+uint32_t xcb_generate_id(xcb_connection_t *c)
+{
+ uint32_t ret;
+ if(c->has_error)
+ return -1;
+ pthread_mutex_lock(&c->xid.lock);
+ if(c->xid.last >= c->xid.max - c->xid.inc + 1)
+ {
+ xcb_xc_misc_get_xid_range_reply_t *range;
+ assert(c->xid.last == c->xid.max);
+ if (c->xid.last == 0) {
+ /* finish setting up initial range */
+ c->xid.max = c->setup->resource_id_mask;
+ } else {
+ /* check for extension */
+ const xcb_query_extension_reply_t *xc_misc_reply =
+ xcb_get_extension_data(c, &xcb_xc_misc_id);
+ if (!xc_misc_reply) {
+ pthread_mutex_unlock(&c->xid.lock);
+ return -1;
+ }
+ /* get new range */
+ range = xcb_xc_misc_get_xid_range_reply(c,
+ xcb_xc_misc_get_xid_range(c), 0);
+ /* XXX The latter disjunct is what the server returns
+ when it is out of XIDs. Sweet. */
+ if(!range || (range->start_id == 0 && range->count == 1))
+ {
+ pthread_mutex_unlock(&c->xid.lock);
+ return -1;
+ }
+ assert(range->count > 0 && range->start_id > 0);
+ c->xid.last = range->start_id;
+ c->xid.max = range->start_id + (range->count - 1) * c->xid.inc;
+ free(range);
+ }
+ } else {
+ c->xid.last += c->xid.inc;
+ }
+ ret = c->xid.last | c->xid.base;
+ pthread_mutex_unlock(&c->xid.lock);
+ return ret;
+}
+
+/* Private interface */
+
+int _xcb_xid_init(xcb_connection_t *c)
+{
+ if(pthread_mutex_init(&c->xid.lock, 0))
+ return 0;
+ c->xid.last = 0;
+ c->xid.max = 0;
+ c->xid.base = c->setup->resource_id_base;
+ c->xid.inc = c->setup->resource_id_mask & -(c->setup->resource_id_mask);
+ return 1;
+}
+
+void _xcb_xid_destroy(xcb_connection_t *c)
+{
+ if (!c->xid.lock)
+ return; /* mutex was not initialised yet */
+ pthread_mutex_destroy(&c->xid.lock);
+}
diff --git a/libxcb/src/xcbext.h b/libxcb/src/xcbext.h
index 1c2ab2236..98b3c93c1 100644
--- a/libxcb/src/xcbext.h
+++ b/libxcb/src/xcbext.h
@@ -1,102 +1,102 @@
-/*
- * Copyright (C) 2001-2004 Bart Massey and Jamey Sharp.
- * All Rights Reserved.
- *
- * 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
- * AUTHORS 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 names of the authors or their
- * institutions 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 authors.
- */
-
-#ifndef __XCBEXT_H
-#define __XCBEXT_H
-
-#include "xcb.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* xcb_ext.c */
-
-struct xcb_extension_t {
- const char *name;
- int global_id;
-};
-
-
-/* xcb_out.c */
-
-typedef struct {
- size_t count;
- xcb_extension_t *ext;
- uint8_t opcode;
- uint8_t isvoid;
-} xcb_protocol_request_t;
-
-enum xcb_send_request_flags_t {
- XCB_REQUEST_CHECKED = 1 << 0,
- XCB_REQUEST_RAW = 1 << 1,
- XCB_REQUEST_DISCARD_REPLY = 1 << 2
-};
-
-unsigned int xcb_send_request(xcb_connection_t *c, int flags, struct iovec *vector, const xcb_protocol_request_t *request);
-
-/* xcb_take_socket allows external code to ask XCB for permission to
- * take over the write side of the socket and send raw data with
- * xcb_writev. xcb_take_socket provides the sequence number of the last
- * request XCB sent. The caller of xcb_take_socket must supply a
- * callback which XCB can call when it wants the write side of the
- * socket back to make a request. This callback synchronizes with the
- * external socket owner and flushes any output queues if appropriate.
- * If you are sending requests which won't cause a reply, please note the
- * comment for xcb_writev which explains some sequence number wrap issues.
- * */
-int xcb_take_socket(xcb_connection_t *c, void (*return_socket)(void *closure), void *closure, int flags, uint64_t *sent);
-
-/* You must own the write-side of the socket (you've called
- * xcb_take_socket, and haven't returned from return_socket yet) to call
- * xcb_writev. Also, the iovec must have at least 1 byte of data in it.
- * You have to make sure that xcb can detect sequence number wraps correctly.
- * This means that the first request you send after xcb_take_socket must cause a
- * reply (e.g. just insert a GetInputFocus request). After every (1 << 16) - 1
- * requests without a reply, you have to insert a request which will cause a
- * reply. You can again use GetInputFocus for this. You do not have to wait for
- * any of the GetInputFocus replies, but can instead handle them via
- * xcb_discard_reply(). */
-int xcb_writev(xcb_connection_t *c, struct iovec *vector, int count, uint64_t requests);
-
-
-/* xcb_in.c */
-
-void *xcb_wait_for_reply(xcb_connection_t *c, unsigned int request, xcb_generic_error_t **e);
-int xcb_poll_for_reply(xcb_connection_t *c, unsigned int request, void **reply, xcb_generic_error_t **error);
-
-
-/* xcb_util.c */
-
-int xcb_popcount(uint32_t mask);
-int xcb_sumof(uint8_t *list, int len);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+/*
+ * Copyright (C) 2001-2004 Bart Massey and Jamey Sharp.
+ * All Rights Reserved.
+ *
+ * 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
+ * AUTHORS 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 names of the authors or their
+ * institutions 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 authors.
+ */
+
+#ifndef __XCBEXT_H
+#define __XCBEXT_H
+
+#include "xcb.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* xcb_ext.c */
+
+struct xcb_extension_t {
+ const char *name;
+ int global_id;
+};
+
+
+/* xcb_out.c */
+
+typedef struct {
+ size_t count;
+ xcb_extension_t *ext;
+ uint8_t opcode;
+ uint8_t isvoid;
+} xcb_protocol_request_t;
+
+enum xcb_send_request_flags_t {
+ XCB_REQUEST_CHECKED = 1 << 0,
+ XCB_REQUEST_RAW = 1 << 1,
+ XCB_REQUEST_DISCARD_REPLY = 1 << 2
+};
+
+unsigned int xcb_send_request(xcb_connection_t *c, int flags, struct iovec *vector, const xcb_protocol_request_t *request);
+
+/* xcb_take_socket allows external code to ask XCB for permission to
+ * take over the write side of the socket and send raw data with
+ * xcb_writev. xcb_take_socket provides the sequence number of the last
+ * request XCB sent. The caller of xcb_take_socket must supply a
+ * callback which XCB can call when it wants the write side of the
+ * socket back to make a request. This callback synchronizes with the
+ * external socket owner and flushes any output queues if appropriate.
+ * If you are sending requests which won't cause a reply, please note the
+ * comment for xcb_writev which explains some sequence number wrap issues.
+ * */
+int xcb_take_socket(xcb_connection_t *c, void (*return_socket)(void *closure), void *closure, int flags, uint64_t *sent);
+
+/* You must own the write-side of the socket (you've called
+ * xcb_take_socket, and haven't returned from return_socket yet) to call
+ * xcb_writev. Also, the iovec must have at least 1 byte of data in it.
+ * You have to make sure that xcb can detect sequence number wraps correctly.
+ * This means that the first request you send after xcb_take_socket must cause a
+ * reply (e.g. just insert a GetInputFocus request). After every (1 << 16) - 1
+ * requests without a reply, you have to insert a request which will cause a
+ * reply. You can again use GetInputFocus for this. You do not have to wait for
+ * any of the GetInputFocus replies, but can instead handle them via
+ * xcb_discard_reply(). */
+int xcb_writev(xcb_connection_t *c, struct iovec *vector, int count, uint64_t requests);
+
+
+/* xcb_in.c */
+
+void *xcb_wait_for_reply(xcb_connection_t *c, unsigned int request, xcb_generic_error_t **e);
+int xcb_poll_for_reply(xcb_connection_t *c, unsigned int request, void **reply, xcb_generic_error_t **error);
+
+
+/* xcb_util.c */
+
+int xcb_popcount(uint32_t mask);
+int xcb_sumof(uint8_t *list, int len);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/libxcb/tests/.gitignore b/libxcb/tests/.gitignore
new file mode 100644
index 000000000..58b019a02
--- /dev/null
+++ b/libxcb/tests/.gitignore
@@ -0,0 +1,3 @@
+CheckLog.html
+CheckLog_xcb.xml
+check_all
diff --git a/libxcb/tests/CheckLog.xsl b/libxcb/tests/CheckLog.xsl
index 3daebaa5d..75b14e694 100644
--- a/libxcb/tests/CheckLog.xsl
+++ b/libxcb/tests/CheckLog.xsl
@@ -1,104 +1,104 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<xsl:stylesheet
- version="1.0"
- xmlns:check="http://check.sourceforge.net/ns"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns="http://www.w3.org/TR/REC-html40">
-
-<xsl:output method="html"/>
-
-<xsl:template match="/">
-<html>
- <head>
- <title>Test Suite Results</title>
- </head>
-
- <body>
- <xsl:apply-templates/>
- </body>
-</html>
-</xsl:template>
-
-<xsl:template match="datetime">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="duration">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="check:suite">
- <xsl:apply-templates select="check:title"/>
- <center>
- <table width="80%" border="1">
- <thead>
- <tr>
- <td>Test Path</td>
- <td>Test Function Location</td>
- <td>C Identifier</td>
- <td>Test Case</td>
- <td>Result</td>
- </tr>
- </thead>
- <tbody>
- <xsl:apply-templates select="check:test"/>
- </tbody>
- </table>
- </center>
-</xsl:template>
-
-<xsl:template match="check:testsuites">
- <xsl:apply-templates select="check:suite"/>
- <h3>Unit Test Statistics</h3>
- <ul>
- <li>date/time: <xsl:apply-templates select="check:datetime"/></li>
- <li>duration: <xsl:apply-templates select="check:duration"/></li>
- </ul>
- <hr></hr>
-</xsl:template>
-
-<xsl:template match="check:title">
- <h2>Test Suite: <xsl:apply-templates/></h2>
-</xsl:template>
-
-<xsl:template match="check:test[@result='success']">
- <tr bgcolor="lime">
- <xsl:apply-templates/>
- </tr>
-</xsl:template>
-
-<xsl:template match="check:test[@result='failure']">
- <tr bgcolor="red">
- <xsl:apply-templates/>
- </tr>
-</xsl:template>
-
-<xsl:template match="check:test[@result='error']">
- <tr bgcolor="yellow">
- <xsl:apply-templates/>
- </tr>
-</xsl:template>
-
-<xsl:template match="check:path">
- <td><xsl:apply-templates/></td>
-</xsl:template>
-
-<xsl:template match="check:fn">
- <td><xsl:apply-templates/></td>
-</xsl:template>
-
-<xsl:template match="check:id">
- <td><xsl:apply-templates/></td>
-</xsl:template>
-
-<xsl:template match="check:description">
- <td><xsl:apply-templates/></td>
-</xsl:template>
-
-<xsl:template match="check:message">
- <td><xsl:apply-templates/></td>
-</xsl:template>
-
-</xsl:stylesheet>
-
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:check="http://check.sourceforge.net/ns"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/TR/REC-html40">
+
+<xsl:output method="html"/>
+
+<xsl:template match="/">
+<html>
+ <head>
+ <title>Test Suite Results</title>
+ </head>
+
+ <body>
+ <xsl:apply-templates/>
+ </body>
+</html>
+</xsl:template>
+
+<xsl:template match="datetime">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="duration">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="check:suite">
+ <xsl:apply-templates select="check:title"/>
+ <center>
+ <table width="80%" border="1">
+ <thead>
+ <tr>
+ <td>Test Path</td>
+ <td>Test Function Location</td>
+ <td>C Identifier</td>
+ <td>Test Case</td>
+ <td>Result</td>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:apply-templates select="check:test"/>
+ </tbody>
+ </table>
+ </center>
+</xsl:template>
+
+<xsl:template match="check:testsuites">
+ <xsl:apply-templates select="check:suite"/>
+ <h3>Unit Test Statistics</h3>
+ <ul>
+ <li>date/time: <xsl:apply-templates select="check:datetime"/></li>
+ <li>duration: <xsl:apply-templates select="check:duration"/></li>
+ </ul>
+ <hr></hr>
+</xsl:template>
+
+<xsl:template match="check:title">
+ <h2>Test Suite: <xsl:apply-templates/></h2>
+</xsl:template>
+
+<xsl:template match="check:test[@result='success']">
+ <tr bgcolor="lime">
+ <xsl:apply-templates/>
+ </tr>
+</xsl:template>
+
+<xsl:template match="check:test[@result='failure']">
+ <tr bgcolor="red">
+ <xsl:apply-templates/>
+ </tr>
+</xsl:template>
+
+<xsl:template match="check:test[@result='error']">
+ <tr bgcolor="yellow">
+ <xsl:apply-templates/>
+ </tr>
+</xsl:template>
+
+<xsl:template match="check:path">
+ <td><xsl:apply-templates/></td>
+</xsl:template>
+
+<xsl:template match="check:fn">
+ <td><xsl:apply-templates/></td>
+</xsl:template>
+
+<xsl:template match="check:id">
+ <td><xsl:apply-templates/></td>
+</xsl:template>
+
+<xsl:template match="check:description">
+ <td><xsl:apply-templates/></td>
+</xsl:template>
+
+<xsl:template match="check:message">
+ <td><xsl:apply-templates/></td>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/libxcb/tests/Makefile.am b/libxcb/tests/Makefile.am
index 077681e51..93fd03d9b 100644
--- a/libxcb/tests/Makefile.am
+++ b/libxcb/tests/Makefile.am
@@ -1,32 +1,32 @@
-########################
-## tests/Makefile.am
-########################
-SUBDIRS =
-EXTRA_DIST = CheckLog.xsl
-AM_MAKEFLAGS = -k
-AM_CFLAGS = -Wall -Werror @CHECK_CFLAGS@ -I$(top_srcdir)/src
-LDADD = @CHECK_LIBS@ $(top_builddir)/src/libxcb.la
-
-if HAVE_CHECK
-TESTS = check_all
-check_PROGRAMS = check_all
-check_all_SOURCES = check_all.c check_suites.h check_public.c
-
-all-local::
- $(RM) CheckLog*.xml
-
-check-local: check-TESTS
- $(RM) CheckLog.html
- if test x$(HTML_CHECK_RESULT) = xtrue; then \
- $(XSLTPROC) $(srcdir)/CheckLog.xsl CheckLog*.xml > CheckLog.html; \
- else \
- touch CheckLog.html; \
- fi
-
-CheckLog.html: $(check_PROGRAMS)
- $(MAKE) $(AM_MAKEFLAGS) check;
-
-endif
-
-clean-local::
- $(RM) CheckLog.html CheckLog*.txt CheckLog*.xml
+########################
+## tests/Makefile.am
+########################
+SUBDIRS =
+EXTRA_DIST = CheckLog.xsl
+AM_MAKEFLAGS = -k
+AM_CFLAGS = -Wall -Werror @CHECK_CFLAGS@ -I$(top_srcdir)/src
+LDADD = @CHECK_LIBS@ $(top_builddir)/src/libxcb.la
+
+if HAVE_CHECK
+TESTS = check_all
+check_PROGRAMS = check_all
+check_all_SOURCES = check_all.c check_suites.h check_public.c
+
+all-local::
+ $(RM) CheckLog*.xml
+
+check-local: check-TESTS
+ $(RM) CheckLog.html
+ if test x$(HTML_CHECK_RESULT) = xtrue; then \
+ $(XSLTPROC) $(srcdir)/CheckLog.xsl CheckLog*.xml > CheckLog.html; \
+ else \
+ touch CheckLog.html; \
+ fi
+
+CheckLog.html: $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check;
+
+endif
+
+clean-local::
+ $(RM) CheckLog.html CheckLog*.txt CheckLog*.xml
diff --git a/libxcb/tests/check_all.c b/libxcb/tests/check_all.c
index 4393422e3..8c7887dd9 100644
--- a/libxcb/tests/check_all.c
+++ b/libxcb/tests/check_all.c
@@ -1,20 +1,20 @@
-#include <stdlib.h>
-#include "check_suites.h"
-
-void suite_add_test(Suite *s, TFun tf, const char *name)
-{
- TCase *tc = tcase_create(name);
- tcase_add_test(tc, tf);
- suite_add_tcase(s, tc);
-}
-
-int main(void)
-{
- int nf;
- SRunner *sr = srunner_create(public_suite());
- srunner_set_xml(sr, "CheckLog_xcb.xml");
- srunner_run_all(sr, CK_NORMAL);
- nf = srunner_ntests_failed(sr);
- srunner_free(sr);
- return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
-}
+#include <stdlib.h>
+#include "check_suites.h"
+
+void suite_add_test(Suite *s, TFun tf, const char *name)
+{
+ TCase *tc = tcase_create(name);
+ tcase_add_test(tc, tf);
+ suite_add_tcase(s, tc);
+}
+
+int main(void)
+{
+ int nf;
+ SRunner *sr = srunner_create(public_suite());
+ srunner_set_xml(sr, "CheckLog_xcb.xml");
+ srunner_run_all(sr, CK_NORMAL);
+ nf = srunner_ntests_failed(sr);
+ srunner_free(sr);
+ return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/libxcb/tests/check_public.c b/libxcb/tests/check_public.c
index 2094bfef1..c77c6917d 100644
--- a/libxcb/tests/check_public.c
+++ b/libxcb/tests/check_public.c
@@ -1,218 +1,218 @@
-#include <check.h>
-#include <string.h>
-#include <stdlib.h>
-#include "check_suites.h"
-#include "xcb.h"
-#include "xcbext.h"
-
-/* xcb_parse_display tests {{{ */
-
-typedef enum test_type_t {
- TEST_ARGUMENT, TEST_ENVIRONMENT, TEST_END
-} test_type_t;
-static const char *const test_string[] = { "", "via $DISPLAY " };
-
-static void parse_display_pass(const char *name, const char *host, const int display, const int screen)
-{
- int success;
- char *got_host;
- int got_display, got_screen;
- const char *argument = 0;
- test_type_t test_type;
-
- for(test_type = TEST_ARGUMENT; test_type != TEST_END; test_type++)
- {
- if(test_type == TEST_ARGUMENT)
- {
- argument = name;
- putenv("DISPLAY=");
- }
- else if(test_type == TEST_ENVIRONMENT)
- {
- argument = 0;
- setenv("DISPLAY", name, 1);
- }
-
- got_host = (char *) -1;
- got_display = got_screen = -42;
- mark_point();
- success = xcb_parse_display(argument, &got_host, &got_display, &got_screen);
- fail_unless(success, "unexpected parse failure %sfor '%s'", test_string[test_type], name);
- fail_unless(strcmp(host, got_host) == 0, "parse %sproduced unexpected hostname '%s' for '%s': expected '%s'", test_string[test_type], got_host, name, host);
- fail_unless(display == got_display, "parse %sproduced unexpected display '%d' for '%s': expected '%d'", test_string[test_type], got_display, name, display);
- fail_unless(screen == got_screen, "parse %sproduced unexpected screen '%d' for '%s': expected '%d'", test_string[test_type], got_screen, name, screen);
-
- got_host = (char *) -1;
- got_display = got_screen = -42;
- mark_point();
- success = xcb_parse_display(argument, &got_host, &got_display, 0);
- fail_unless(success, "unexpected screenless parse failure %sfor '%s'", test_string[test_type], name);
- fail_unless(strcmp(host, got_host) == 0, "screenless parse %sproduced unexpected hostname '%s' for '%s': expected '%s'", test_string[test_type], got_host, name, host);
- fail_unless(display == got_display, "screenless parse %sproduced unexpected display '%d' for '%s': expected '%d'", test_string[test_type], got_display, name, display);
- }
- putenv("DISPLAY=");
-}
-
-static void parse_display_fail(const char *name)
-{
- int success;
- char *got_host;
- int got_display, got_screen;
- const char *argument = 0;
- test_type_t test_type;
-
- for(test_type = TEST_ARGUMENT; test_type != TEST_END; test_type++)
- {
- if(test_type == TEST_ARGUMENT)
- {
- argument = name;
- putenv("DISPLAY=");
- }
- else if(test_type == TEST_ENVIRONMENT)
- {
- if (!name) break;
- argument = 0;
- setenv("DISPLAY", name, 1);
- }
-
- got_host = (char *) -1;
- got_display = got_screen = -42;
- mark_point();
- success = xcb_parse_display(argument, &got_host, &got_display, &got_screen);
- fail_unless(!success, "unexpected parse success %sfor '%s'", test_string[test_type], name);
- fail_unless(got_host == (char *) -1, "host changed on parse failure %sfor '%s': got %p", test_string[test_type], name, got_host);
- fail_unless(got_display == -42, "display changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_display);
- fail_unless(got_screen == -42, "screen changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_screen);
-
- got_host = (char *) -1;
- got_display = got_screen = -42;
- mark_point();
- success = xcb_parse_display(argument, &got_host, &got_display, 0);
- fail_unless(!success, "unexpected screenless parse success %sfor '%s'", test_string[test_type], name);
- fail_unless(got_host == (char *) -1, "host changed on parse failure %sfor '%s': got %p", test_string[test_type], name, got_host);
- fail_unless(got_display == -42, "display changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_display);
- }
- putenv("DISPLAY=");
-}
-
-START_TEST(parse_display_unix)
-{
- parse_display_pass(":0", "", 0, 0);
- parse_display_pass(":1", "", 1, 0);
- parse_display_pass(":0.1", "", 0, 1);
-}
-END_TEST
-
-START_TEST(parse_display_ip)
-{
- parse_display_pass("x.org:0", "x.org", 0, 0);
- parse_display_pass("expo:0", "expo", 0, 0);
- parse_display_pass("bigmachine:1", "bigmachine", 1, 0);
- parse_display_pass("hydra:0.1", "hydra", 0, 1);
-}
-END_TEST
-
-START_TEST(parse_display_ipv4)
-{
- parse_display_pass("198.112.45.11:0", "198.112.45.11", 0, 0);
- parse_display_pass("198.112.45.11:0.1", "198.112.45.11", 0, 1);
-}
-END_TEST
-
-START_TEST(parse_display_ipv6)
-{
- parse_display_pass(":::0", "::", 0, 0);
- parse_display_pass("1:::0", "1::", 0, 0);
- parse_display_pass("::1:0", "::1", 0, 0);
- parse_display_pass("::1:0.1", "::1", 0, 1);
- parse_display_pass("::127.0.0.1:0", "::127.0.0.1", 0, 0);
- parse_display_pass("::ffff:127.0.0.1:0", "::ffff:127.0.0.1", 0, 0);
- parse_display_pass("2002:83fc:d052::1:0", "2002:83fc:d052::1", 0, 0);
- parse_display_pass("2002:83fc:d052::1:0.1", "2002:83fc:d052::1", 0, 1);
- parse_display_pass("[::]:0", "[::]", 0, 0);
- parse_display_pass("[1::]:0", "[1::]", 0, 0);
- parse_display_pass("[::1]:0", "[::1]", 0, 0);
- parse_display_pass("[::1]:0.1", "[::1]", 0, 1);
- parse_display_pass("[::127.0.0.1]:0", "[::127.0.0.1]", 0, 0);
- parse_display_pass("[::ffff:127.0.0.1]:0", "[::ffff:127.0.0.1]", 0, 0);
- parse_display_pass("[2002:83fc:d052::1]:0", "[2002:83fc:d052::1]", 0, 0);
- parse_display_pass("[2002:83fc:d052::1]:0.1", "[2002:83fc:d052::1]", 0, 1);
-}
-END_TEST
-
-START_TEST(parse_display_decnet)
-{
- parse_display_pass("myws::0", "myws:", 0, 0);
- parse_display_pass("big::1", "big:", 1, 0);
- parse_display_pass("hydra::0.1", "hydra:", 0, 1);
-}
-END_TEST
-
-START_TEST(parse_display_negative)
-{
- parse_display_fail(0);
- parse_display_fail("");
- parse_display_fail(":");
- parse_display_fail("::");
- parse_display_fail(":::");
- parse_display_fail(":.");
- parse_display_fail(":a");
- parse_display_fail(":a.");
- parse_display_fail(":0.");
- parse_display_fail(":.a");
- parse_display_fail(":.0");
- parse_display_fail(":0.a");
- parse_display_fail(":0.0.");
-
- parse_display_fail("127.0.0.1");
- parse_display_fail("127.0.0.1:");
- parse_display_fail("127.0.0.1::");
- parse_display_fail("::127.0.0.1");
- parse_display_fail("::127.0.0.1:");
- parse_display_fail("::127.0.0.1::");
- parse_display_fail("::ffff:127.0.0.1");
- parse_display_fail("::ffff:127.0.0.1:");
- parse_display_fail("::ffff:127.0.0.1::");
- parse_display_fail("localhost");
- parse_display_fail("localhost:");
- parse_display_fail("localhost::");
-}
-END_TEST
-
-/* }}} */
-
-static void popcount_eq(uint32_t bits, int count)
-{
- fail_unless(xcb_popcount(bits) == count, "unexpected popcount(%08x) != %d", bits, count);
-}
-
-START_TEST(popcount)
-{
- uint32_t mask;
- int count;
-
- for (mask = 0xffffffff, count = 32; count >= 0; mask >>= 1, --count) {
- popcount_eq(mask, count);
- }
- for (mask = 0x80000000; mask; mask >>= 1) {
- popcount_eq(mask, 1);
- }
- for (mask = 0x80000000; mask > 1; mask >>= 1) {
- popcount_eq(mask | 1, 2);
- }
-}
-END_TEST
-
-Suite *public_suite(void)
-{
- Suite *s = suite_create("Public API");
- putenv("DISPLAY=");
- suite_add_test(s, parse_display_unix, "xcb_parse_display unix");
- suite_add_test(s, parse_display_ip, "xcb_parse_display ip");
- suite_add_test(s, parse_display_ipv4, "xcb_parse_display ipv4");
- suite_add_test(s, parse_display_ipv6, "xcb_parse_display ipv6");
- suite_add_test(s, parse_display_decnet, "xcb_parse_display decnet");
- suite_add_test(s, parse_display_negative, "xcb_parse_display negative");
- suite_add_test(s, popcount, "xcb_popcount");
- return s;
-}
+#include <check.h>
+#include <string.h>
+#include <stdlib.h>
+#include "check_suites.h"
+#include "xcb.h"
+#include "xcbext.h"
+
+/* xcb_parse_display tests {{{ */
+
+typedef enum test_type_t {
+ TEST_ARGUMENT, TEST_ENVIRONMENT, TEST_END
+} test_type_t;
+static const char *const test_string[] = { "", "via $DISPLAY " };
+
+static void parse_display_pass(const char *name, const char *host, const int display, const int screen)
+{
+ int success;
+ char *got_host;
+ int got_display, got_screen;
+ const char *argument = 0;
+ test_type_t test_type;
+
+ for(test_type = TEST_ARGUMENT; test_type != TEST_END; test_type++)
+ {
+ if(test_type == TEST_ARGUMENT)
+ {
+ argument = name;
+ putenv("DISPLAY=");
+ }
+ else if(test_type == TEST_ENVIRONMENT)
+ {
+ argument = 0;
+ setenv("DISPLAY", name, 1);
+ }
+
+ got_host = (char *) -1;
+ got_display = got_screen = -42;
+ mark_point();
+ success = xcb_parse_display(argument, &got_host, &got_display, &got_screen);
+ fail_unless(success, "unexpected parse failure %sfor '%s'", test_string[test_type], name);
+ fail_unless(strcmp(host, got_host) == 0, "parse %sproduced unexpected hostname '%s' for '%s': expected '%s'", test_string[test_type], got_host, name, host);
+ fail_unless(display == got_display, "parse %sproduced unexpected display '%d' for '%s': expected '%d'", test_string[test_type], got_display, name, display);
+ fail_unless(screen == got_screen, "parse %sproduced unexpected screen '%d' for '%s': expected '%d'", test_string[test_type], got_screen, name, screen);
+
+ got_host = (char *) -1;
+ got_display = got_screen = -42;
+ mark_point();
+ success = xcb_parse_display(argument, &got_host, &got_display, 0);
+ fail_unless(success, "unexpected screenless parse failure %sfor '%s'", test_string[test_type], name);
+ fail_unless(strcmp(host, got_host) == 0, "screenless parse %sproduced unexpected hostname '%s' for '%s': expected '%s'", test_string[test_type], got_host, name, host);
+ fail_unless(display == got_display, "screenless parse %sproduced unexpected display '%d' for '%s': expected '%d'", test_string[test_type], got_display, name, display);
+ }
+ putenv("DISPLAY=");
+}
+
+static void parse_display_fail(const char *name)
+{
+ int success;
+ char *got_host;
+ int got_display, got_screen;
+ const char *argument = 0;
+ test_type_t test_type;
+
+ for(test_type = TEST_ARGUMENT; test_type != TEST_END; test_type++)
+ {
+ if(test_type == TEST_ARGUMENT)
+ {
+ argument = name;
+ putenv("DISPLAY=");
+ }
+ else if(test_type == TEST_ENVIRONMENT)
+ {
+ if (!name) break;
+ argument = 0;
+ setenv("DISPLAY", name, 1);
+ }
+
+ got_host = (char *) -1;
+ got_display = got_screen = -42;
+ mark_point();
+ success = xcb_parse_display(argument, &got_host, &got_display, &got_screen);
+ fail_unless(!success, "unexpected parse success %sfor '%s'", test_string[test_type], name);
+ fail_unless(got_host == (char *) -1, "host changed on parse failure %sfor '%s': got %p", test_string[test_type], name, got_host);
+ fail_unless(got_display == -42, "display changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_display);
+ fail_unless(got_screen == -42, "screen changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_screen);
+
+ got_host = (char *) -1;
+ got_display = got_screen = -42;
+ mark_point();
+ success = xcb_parse_display(argument, &got_host, &got_display, 0);
+ fail_unless(!success, "unexpected screenless parse success %sfor '%s'", test_string[test_type], name);
+ fail_unless(got_host == (char *) -1, "host changed on parse failure %sfor '%s': got %p", test_string[test_type], name, got_host);
+ fail_unless(got_display == -42, "display changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_display);
+ }
+ putenv("DISPLAY=");
+}
+
+START_TEST(parse_display_unix)
+{
+ parse_display_pass(":0", "", 0, 0);
+ parse_display_pass(":1", "", 1, 0);
+ parse_display_pass(":0.1", "", 0, 1);
+}
+END_TEST
+
+START_TEST(parse_display_ip)
+{
+ parse_display_pass("x.org:0", "x.org", 0, 0);
+ parse_display_pass("expo:0", "expo", 0, 0);
+ parse_display_pass("bigmachine:1", "bigmachine", 1, 0);
+ parse_display_pass("hydra:0.1", "hydra", 0, 1);
+}
+END_TEST
+
+START_TEST(parse_display_ipv4)
+{
+ parse_display_pass("198.112.45.11:0", "198.112.45.11", 0, 0);
+ parse_display_pass("198.112.45.11:0.1", "198.112.45.11", 0, 1);
+}
+END_TEST
+
+START_TEST(parse_display_ipv6)
+{
+ parse_display_pass(":::0", "::", 0, 0);
+ parse_display_pass("1:::0", "1::", 0, 0);
+ parse_display_pass("::1:0", "::1", 0, 0);
+ parse_display_pass("::1:0.1", "::1", 0, 1);
+ parse_display_pass("::127.0.0.1:0", "::127.0.0.1", 0, 0);
+ parse_display_pass("::ffff:127.0.0.1:0", "::ffff:127.0.0.1", 0, 0);
+ parse_display_pass("2002:83fc:d052::1:0", "2002:83fc:d052::1", 0, 0);
+ parse_display_pass("2002:83fc:d052::1:0.1", "2002:83fc:d052::1", 0, 1);
+ parse_display_pass("[::]:0", "[::]", 0, 0);
+ parse_display_pass("[1::]:0", "[1::]", 0, 0);
+ parse_display_pass("[::1]:0", "[::1]", 0, 0);
+ parse_display_pass("[::1]:0.1", "[::1]", 0, 1);
+ parse_display_pass("[::127.0.0.1]:0", "[::127.0.0.1]", 0, 0);
+ parse_display_pass("[::ffff:127.0.0.1]:0", "[::ffff:127.0.0.1]", 0, 0);
+ parse_display_pass("[2002:83fc:d052::1]:0", "[2002:83fc:d052::1]", 0, 0);
+ parse_display_pass("[2002:83fc:d052::1]:0.1", "[2002:83fc:d052::1]", 0, 1);
+}
+END_TEST
+
+START_TEST(parse_display_decnet)
+{
+ parse_display_pass("myws::0", "myws:", 0, 0);
+ parse_display_pass("big::1", "big:", 1, 0);
+ parse_display_pass("hydra::0.1", "hydra:", 0, 1);
+}
+END_TEST
+
+START_TEST(parse_display_negative)
+{
+ parse_display_fail(0);
+ parse_display_fail("");
+ parse_display_fail(":");
+ parse_display_fail("::");
+ parse_display_fail(":::");
+ parse_display_fail(":.");
+ parse_display_fail(":a");
+ parse_display_fail(":a.");
+ parse_display_fail(":0.");
+ parse_display_fail(":.a");
+ parse_display_fail(":.0");
+ parse_display_fail(":0.a");
+ parse_display_fail(":0.0.");
+
+ parse_display_fail("127.0.0.1");
+ parse_display_fail("127.0.0.1:");
+ parse_display_fail("127.0.0.1::");
+ parse_display_fail("::127.0.0.1");
+ parse_display_fail("::127.0.0.1:");
+ parse_display_fail("::127.0.0.1::");
+ parse_display_fail("::ffff:127.0.0.1");
+ parse_display_fail("::ffff:127.0.0.1:");
+ parse_display_fail("::ffff:127.0.0.1::");
+ parse_display_fail("localhost");
+ parse_display_fail("localhost:");
+ parse_display_fail("localhost::");
+}
+END_TEST
+
+/* }}} */
+
+static void popcount_eq(uint32_t bits, int count)
+{
+ fail_unless(xcb_popcount(bits) == count, "unexpected popcount(%08x) != %d", bits, count);
+}
+
+START_TEST(popcount)
+{
+ uint32_t mask;
+ int count;
+
+ for (mask = 0xffffffff, count = 32; count >= 0; mask >>= 1, --count) {
+ popcount_eq(mask, count);
+ }
+ for (mask = 0x80000000; mask; mask >>= 1) {
+ popcount_eq(mask, 1);
+ }
+ for (mask = 0x80000000; mask > 1; mask >>= 1) {
+ popcount_eq(mask | 1, 2);
+ }
+}
+END_TEST
+
+Suite *public_suite(void)
+{
+ Suite *s = suite_create("Public API");
+ putenv("DISPLAY=");
+ suite_add_test(s, parse_display_unix, "xcb_parse_display unix");
+ suite_add_test(s, parse_display_ip, "xcb_parse_display ip");
+ suite_add_test(s, parse_display_ipv4, "xcb_parse_display ipv4");
+ suite_add_test(s, parse_display_ipv6, "xcb_parse_display ipv6");
+ suite_add_test(s, parse_display_decnet, "xcb_parse_display decnet");
+ suite_add_test(s, parse_display_negative, "xcb_parse_display negative");
+ suite_add_test(s, popcount, "xcb_popcount");
+ return s;
+}
diff --git a/libxcb/tests/check_suites.h b/libxcb/tests/check_suites.h
index 499f1afaf..9eaf04293 100644
--- a/libxcb/tests/check_suites.h
+++ b/libxcb/tests/check_suites.h
@@ -1,4 +1,4 @@
-#include <check.h>
-
-void suite_add_test(Suite *s, TFun tf, const char *name);
-Suite *public_suite(void);
+#include <check.h>
+
+void suite_add_test(Suite *s, TFun tf, const char *name);
+Suite *public_suite(void);
diff --git a/libxcb/tools/README b/libxcb/tools/README
index 2d1874e14..d9b5e09e5 100644
--- a/libxcb/tools/README
+++ b/libxcb/tools/README
@@ -1,17 +1,17 @@
-
-api_conv.pl:
-------------
-
- Description: used to convert old XCB names in camel case to lower
- case names.
-
- Usage:
-
- * for several files:
-
-perl -i xcb/tools/api_conv.pl xcb/tools/constants <file1> <file2> ...
-
- * for a directory:
-
-find dir -name '*.[ch]' -exec perl -i xcb/tools/api_conv.pl xcb/tools/constants {} +
-
+
+api_conv.pl:
+------------
+
+ Description: used to convert old XCB names in camel case to lower
+ case names.
+
+ Usage:
+
+ * for several files:
+
+perl -i xcb/tools/api_conv.pl xcb/tools/constants <file1> <file2> ...
+
+ * for a directory:
+
+find dir -name '*.[ch]' -exec perl -i xcb/tools/api_conv.pl xcb/tools/constants {} +
+
diff --git a/libxcb/tools/api_conv.pl b/libxcb/tools/api_conv.pl
index 5b3c18d15..8f3cfa8ce 100644
--- a/libxcb/tools/api_conv.pl
+++ b/libxcb/tools/api_conv.pl
@@ -1,98 +1,98 @@
-#!/usr/bin/perl -plw
-use strict;
-
-BEGIN {
- %::const = map { $_ => 1 } (
- # constants in xcb.h
- "XCBNone",
- "XCBCopyFromParent",
- "XCBCurrentTime",
- "XCBNoSymbol",
- "XCBError",
- "XCBReply",
- # renamed constants
- "XCBButtonAny",
- "XCBButton1",
- "XCBButton2",
- "XCBButton3",
- "XCBButton4",
- "XCBButton5",
- "XCBHostInsert",
- "XCBHostDelete",
- "XCBGlxGC_GL_CURRENT_BIT",
- "XCBGlxGC_GL_POINT_BIT",
- "XCBGlxGC_GL_LINE_BIT",
- "XCBGlxGC_GL_POLYGON_BIT",
- "XCBGlxGC_GL_POLYGON_STIPPLE_BIT",
- "XCBGlxGC_GL_PIXEL_MODE_BIT",
- "XCBGlxGC_GL_LIGHTING_BIT",
- "XCBGlxGC_GL_FOG_BIT",
- "XCBGlxGC_GL_DEPTH_BUFFER_BIT",
- "XCBGlxGC_GL_ACCUM_BUFFER_BIT",
- "XCBGlxGC_GL_STENCIL_BUFFER_BIT",
- "XCBGlxGC_GL_VIEWPORT_BIT",
- "XCBGlxGC_GL_TRANSFORM_BIT",
- "XCBGlxGC_GL_ENABLE_BIT",
- "XCBGlxGC_GL_COLOR_BUFFER_BIT",
- "XCBGlxGC_GL_HINT_BIT",
- "XCBGlxGC_GL_EVAL_BIT",
- "XCBGlxGC_GL_LIST_BIT",
- "XCBGlxGC_GL_TEXTURE_BIT",
- "XCBGlxGC_GL_SCISSOR_BIT",
- "XCBGlxGC_GL_ALL_ATTRIB_BITS",
- "XCBGlxRM_GL_RENDER",
- "XCBGlxRM_GL_FEEDBACK",
- "XCBGlxRM_GL_SELECT",
- );
- open(CONST, shift) or die "failed to open constants list: $!";
- while(<CONST>)
- {
- chomp;
- die "invalid constant name: \"$_\"" unless /^XCB[A-Za-z0-9_]*$/;
- $::const{$_} = 1;
- }
- close(CONST);
-}
-
-sub convert($$)
-{
- local $_ = shift;
- my ($fun) = @_;
-
- return "xcb_generate_id" if /^xcb_[a-z0-9_]+_new$/ or /^XCB[A-Z0-9]+New$/;
- return "uint$1_t" if /^CARD(8|16|32)$/;
- return "int$1_t" if /^INT(8|16|32)$/;
- return "uint8_t" if $_ eq 'BOOL' or $_ eq 'BYTE';
- return $_ if /^[A-Z0-9]*_[A-Z0-9_]*$/ or !/^XCB(.+)/;
- my $const = defined $::const{$_};
- $_ = $1;
-
- s/^(GX|RandR|XFixes|XP|XvMC|ScreenSaver)(.)/uc($1) . "_" . $2/e unless /^ScreenSaver(?:Reset|Active)$/;
-
- my %abbr = (
- "Iter" => "iterator",
- "Req" => "request",
- "Rep" => "reply",
- );
-
- my $word;
- if(/CHAR2B|INT64|FLOAT32|FLOAT64|BOOL32|STRING8/)
- {
- $word = qr/[A-Z](?:[A-Z0-9]*|[a-z]*)/;
- } else {
- $word = qr/[0-9]+|[A-Z](?:[A-Z]*|[a-z]*)/;
- }
- s/($word)_?(?=[0-9A-Z]|$)/"_" . ($abbr{$1} or lc($1))/eg;
-
- s/^_shape_shape_/_shape_/;
- s/^_xf_?86_dri/_xf86dri/;
- $_ = "_family_decnet" if $_ eq "_family_de_cnet";
- return "XCB" . uc($_) if $const;
-
- $_ .= "_t" unless $fun or /_id$/;
-
- return "xcb" . $_;
-}
-
-s/^(\s*#\s*include\s*<)X11\/XCB\//$1xcb\//;
-s/([_A-Za-z][_A-Za-z0-9]*)([ \t]*\()?/convert($1, defined $2) . ($2 or "")/eg;
+#!/usr/bin/perl -plw
+use strict;
+
+BEGIN {
+ %::const = map { $_ => 1 } (
+ # constants in xcb.h
+ "XCBNone",
+ "XCBCopyFromParent",
+ "XCBCurrentTime",
+ "XCBNoSymbol",
+ "XCBError",
+ "XCBReply",
+ # renamed constants
+ "XCBButtonAny",
+ "XCBButton1",
+ "XCBButton2",
+ "XCBButton3",
+ "XCBButton4",
+ "XCBButton5",
+ "XCBHostInsert",
+ "XCBHostDelete",
+ "XCBGlxGC_GL_CURRENT_BIT",
+ "XCBGlxGC_GL_POINT_BIT",
+ "XCBGlxGC_GL_LINE_BIT",
+ "XCBGlxGC_GL_POLYGON_BIT",
+ "XCBGlxGC_GL_POLYGON_STIPPLE_BIT",
+ "XCBGlxGC_GL_PIXEL_MODE_BIT",
+ "XCBGlxGC_GL_LIGHTING_BIT",
+ "XCBGlxGC_GL_FOG_BIT",
+ "XCBGlxGC_GL_DEPTH_BUFFER_BIT",
+ "XCBGlxGC_GL_ACCUM_BUFFER_BIT",
+ "XCBGlxGC_GL_STENCIL_BUFFER_BIT",
+ "XCBGlxGC_GL_VIEWPORT_BIT",
+ "XCBGlxGC_GL_TRANSFORM_BIT",
+ "XCBGlxGC_GL_ENABLE_BIT",
+ "XCBGlxGC_GL_COLOR_BUFFER_BIT",
+ "XCBGlxGC_GL_HINT_BIT",
+ "XCBGlxGC_GL_EVAL_BIT",
+ "XCBGlxGC_GL_LIST_BIT",
+ "XCBGlxGC_GL_TEXTURE_BIT",
+ "XCBGlxGC_GL_SCISSOR_BIT",
+ "XCBGlxGC_GL_ALL_ATTRIB_BITS",
+ "XCBGlxRM_GL_RENDER",
+ "XCBGlxRM_GL_FEEDBACK",
+ "XCBGlxRM_GL_SELECT",
+ );
+ open(CONST, shift) or die "failed to open constants list: $!";
+ while(<CONST>)
+ {
+ chomp;
+ die "invalid constant name: \"$_\"" unless /^XCB[A-Za-z0-9_]*$/;
+ $::const{$_} = 1;
+ }
+ close(CONST);
+}
+
+sub convert($$)
+{
+ local $_ = shift;
+ my ($fun) = @_;
+
+ return "xcb_generate_id" if /^xcb_[a-z0-9_]+_new$/ or /^XCB[A-Z0-9]+New$/;
+ return "uint$1_t" if /^CARD(8|16|32)$/;
+ return "int$1_t" if /^INT(8|16|32)$/;
+ return "uint8_t" if $_ eq 'BOOL' or $_ eq 'BYTE';
+ return $_ if /^[A-Z0-9]*_[A-Z0-9_]*$/ or !/^XCB(.+)/;
+ my $const = defined $::const{$_};
+ $_ = $1;
+
+ s/^(GX|RandR|XFixes|XP|XvMC|ScreenSaver)(.)/uc($1) . "_" . $2/e unless /^ScreenSaver(?:Reset|Active)$/;
+
+ my %abbr = (
+ "Iter" => "iterator",
+ "Req" => "request",
+ "Rep" => "reply",
+ );
+
+ my $word;
+ if(/CHAR2B|INT64|FLOAT32|FLOAT64|BOOL32|STRING8/)
+ {
+ $word = qr/[A-Z](?:[A-Z0-9]*|[a-z]*)/;
+ } else {
+ $word = qr/[0-9]+|[A-Z](?:[A-Z]*|[a-z]*)/;
+ }
+ s/($word)_?(?=[0-9A-Z]|$)/"_" . ($abbr{$1} or lc($1))/eg;
+
+ s/^_shape_shape_/_shape_/;
+ s/^_xf_?86_dri/_xf86dri/;
+ $_ = "_family_decnet" if $_ eq "_family_de_cnet";
+ return "XCB" . uc($_) if $const;
+
+ $_ .= "_t" unless $fun or /_id$/;
+
+ return "xcb" . $_;
+}
+
+s/^(\s*#\s*include\s*<)X11\/XCB\//$1xcb\//;
+s/([_A-Za-z][_A-Za-z0-9]*)([ \t]*\()?/convert($1, defined $2) . ($2 or "")/eg;
diff --git a/libxcb/tools/constants b/libxcb/tools/constants
index 168560015..2bc101f1a 100644
--- a/libxcb/tools/constants
+++ b/libxcb/tools/constants
@@ -1,573 +1,573 @@
-XCBCompositeRedirectAutomatic
-XCBCompositeRedirectManual
-XCBDamageReportLevelRawRectangles
-XCBDamageReportLevelDeltaRectangles
-XCBDamageReportLevelBoundingBox
-XCBDamageReportLevelNonEmpty
-XCBDamageBadDamage
-XCBDamageNotify
-XCBGlxGeneric
-XCBGlxBadContext
-XCBGlxBadContextState
-XCBGlxBadDrawable
-XCBGlxBadPixmap
-XCBGlxBadContextTag
-XCBGlxBadCurrentWindow
-XCBGlxBadRenderRequest
-XCBGlxBadLargeRequest
-XCBGlxUnsupportedPrivateRequest
-XCBGlxBadFBConfig
-XCBGlxBadPbuffer
-XCBGlxBadCurrentDrawable
-XCBGlxBadWindow
-XCBGlxPbufferClobber
-XCBGlxPBCETDamaged
-XCBGlxPBCETSaved
-XCBGlxPBCDTWindow
-XCBGlxPBCDTPbuffer
-XCBGlxGC_GL_CURRENT_BIT
-XCBGlxGC_GL_POINT_BIT
-XCBGlxGC_GL_LINE_BIT
-XCBGlxGC_GL_POLYGON_BIT
-XCBGlxGC_GL_POLYGON_STIPPLE_BIT
-XCBGlxGC_GL_PIXEL_MODE_BIT
-XCBGlxGC_GL_LIGHTING_BIT
-XCBGlxGC_GL_FOG_BIT
-XCBGlxGC_GL_DEPTH_BUFFER_BIT
-XCBGlxGC_GL_ACCUM_BUFFER_BIT
-XCBGlxGC_GL_STENCIL_BUFFER_BIT
-XCBGlxGC_GL_VIEWPORT_BIT
-XCBGlxGC_GL_TRANSFORM_BIT
-XCBGlxGC_GL_ENABLE_BIT
-XCBGlxGC_GL_COLOR_BUFFER_BIT
-XCBGlxGC_GL_HINT_BIT
-XCBGlxGC_GL_EVAL_BIT
-XCBGlxGC_GL_LIST_BIT
-XCBGlxGC_GL_TEXTURE_BIT
-XCBGlxGC_GL_SCISSOR_BIT
-XCBGlxGC_GL_ALL_ATTRIB_BITS
-XCBGlxRM_GL_RENDER
-XCBGlxRM_GL_FEEDBACK
-XCBGlxRM_GL_SELECT
-XCBRandRRotationRotate_0
-XCBRandRRotationRotate_90
-XCBRandRRotationRotate_180
-XCBRandRRotationRotate_270
-XCBRandRRotationReflect_X
-XCBRandRRotationReflect_Y
-XCBRandRSetConfigSuccess
-XCBRandRSetConfigInvalidConfigTime
-XCBRandRSetConfigInvalidTime
-XCBRandRSetConfigFailed
-XCBRandRSMScreenChangeNotify
-XCBRandRScreenChangeNotify
-XCBRecordHTypeFromServerTime
-XCBRecordHTypeFromClientTime
-XCBRecordHTypeFromClientSequence
-XCBRecordCSCurrentClients
-XCBRecordCSFutureClients
-XCBRecordCSAllClients
-XCBRecordBadContext
-XCBRenderPictTypeIndexed
-XCBRenderPictTypeDirect
-XCBRenderPictOpClear
-XCBRenderPictOpSrc
-XCBRenderPictOpDst
-XCBRenderPictOpOver
-XCBRenderPictOpOverReverse
-XCBRenderPictOpIn
-XCBRenderPictOpInReverse
-XCBRenderPictOpOut
-XCBRenderPictOpOutReverse
-XCBRenderPictOpAtop
-XCBRenderPictOpAtopReverse
-XCBRenderPictOpXor
-XCBRenderPictOpAdd
-XCBRenderPictOpSaturate
-XCBRenderPictOpDisjointClear
-XCBRenderPictOpDisjointSrc
-XCBRenderPictOpDisjointDst
-XCBRenderPictOpDisjointOver
-XCBRenderPictOpDisjointOverReverse
-XCBRenderPictOpDisjointIn
-XCBRenderPictOpDisjointInReverse
-XCBRenderPictOpDisjointOut
-XCBRenderPictOpDisjointOutReverse
-XCBRenderPictOpDisjointAtop
-XCBRenderPictOpDisjointAtopReverse
-XCBRenderPictOpDisjointXor
-XCBRenderPictOpConjointClear
-XCBRenderPictOpConjointSrc
-XCBRenderPictOpConjointDst
-XCBRenderPictOpConjointOver
-XCBRenderPictOpConjointOverReverse
-XCBRenderPictOpConjointIn
-XCBRenderPictOpConjointInReverse
-XCBRenderPictOpConjointOut
-XCBRenderPictOpConjointOutReverse
-XCBRenderPictOpConjointAtop
-XCBRenderPictOpConjointAtopReverse
-XCBRenderPictOpConjointXor
-XCBRenderPolyEdgeSharp
-XCBRenderPolyEdgeSmooth
-XCBRenderPolyModePrecise
-XCBRenderPolyModeImprecise
-XCBRenderCPRepeat
-XCBRenderCPAlphaMap
-XCBRenderCPAlphaXOrigin
-XCBRenderCPAlphaYOrigin
-XCBRenderCPClipXOrigin
-XCBRenderCPClipYOrigin
-XCBRenderCPClipMask
-XCBRenderCPGraphicsExposure
-XCBRenderCPSubwindowMode
-XCBRenderCPPolyEdge
-XCBRenderCPPolyMode
-XCBRenderCPDither
-XCBRenderCPComponentAlpha
-XCBRenderSubPixelUnknown
-XCBRenderSubPixelHorizontalRGB
-XCBRenderSubPixelHorizontalBGR
-XCBRenderSubPixelVerticalRGB
-XCBRenderSubPixelVerticalBGR
-XCBRenderSubPixelNone
-XCBRenderPictFormat
-XCBRenderPicture
-XCBRenderPictOp
-XCBRenderGlyphSet
-XCBRenderGlyph
-XCBScreenSaverKindBlanked
-XCBScreenSaverKindInternal
-XCBScreenSaverKindExternal
-XCBScreenSaverEventNotifyMask
-XCBScreenSaverEventCycleMask
-XCBScreenSaverStateOff
-XCBScreenSaverStateOn
-XCBScreenSaverStateCycle
-XCBScreenSaverStateDisabled
-XCBScreenSaverNotify
-XCBShapeSOSet
-XCBShapeSOUnion
-XCBShapeSOIntersect
-XCBShapeSOSubtract
-XCBShapeSOInvert
-XCBShapeSKBounding
-XCBShapeSKClip
-XCBShapeSKInput
-XCBShapeNotify
-XCBShmCompletion
-XCBShmBadSeg
-XCBSyncALARMSTATEActive
-XCBSyncALARMSTATEInactive
-XCBSyncALARMSTATEDestroyed
-XCBSyncTESTTYPEPositiveTransition
-XCBSyncTESTTYPENegativeTransition
-XCBSyncTESTTYPEPositiveComparison
-XCBSyncTESTTYPENegativeComparison
-XCBSyncVALUETYPEAbsolute
-XCBSyncVALUETYPERelative
-XCBSyncCACounter
-XCBSyncCAValueType
-XCBSyncCAValue
-XCBSyncCATestType
-XCBSyncCADelta
-XCBSyncCAEvents
-XCBSyncCounter
-XCBSyncAlarm
-XCBSyncCounterNotify
-XCBSyncAlarmNotify
-XCBXevieDatatypeUnmodified
-XCBXevieDatatypeModified
-XCBXFixesSaveSetModeInsert
-XCBXFixesSaveSetModeDelete
-XCBXFixesSaveSetTargetNearest
-XCBXFixesSaveSetTargetRoot
-XCBXFixesSaveSetMappingMap
-XCBXFixesSaveSetMappingUnmap
-XCBXFixesSelectionEventSetSelectionOwner
-XCBXFixesSelectionEventSelectionWindowDestroy
-XCBXFixesSelectionEventSelectionClientClose
-XCBXFixesSelectionEventMaskSetSelectionOwner
-XCBXFixesSelectionEventMaskSelectionWindowDestroy
-XCBXFixesSelectionEventMaskSelectionClientClose
-XCBXFixesSelectionNotify
-XCBXFixesCursorNotifyDisplayCursor
-XCBXFixesCursorNotifyMaskDisplayCursor
-XCBXFixesCursorNotify
-XCBXFixesBadRegion
-XCBXPGetDocFinished
-XCBXPGetDocSecondConsumer
-XCBXPEvMaskNoEventMask
-XCBXPEvMaskPrintMask
-XCBXPEvMaskAttributeMask
-XCBXPDetailStartJobNotify
-XCBXPDetailEndJobNotify
-XCBXPDetailStartDocNotify
-XCBXPDetailEndDocNotify
-XCBXPDetailStartPageNotify
-XCBXPDetailEndPageNotify
-XCBXPAttrJobAttr
-XCBXPAttrDocAttr
-XCBXPAttrPageAttr
-XCBXPAttrPrinterAttr
-XCBXPAttrServerAttr
-XCBXPAttrMediumAttr
-XCBXPAttrSpoolerAttr
-XCBXPNotify
-XCBXPAttributNotify
-XCBXPBadContext
-XCBXPBadSequence
-XCBXvTypeInputMask
-XCBXvTypeOutputMask
-XCBXvTypeVideoMask
-XCBXvTypeStillMask
-XCBXvTypeImageMask
-XCBXvImageFormatInfoTypeRGB
-XCBXvImageFormatInfoTypeYUV
-XCBXvImageFormatInfoFormatPacked
-XCBXvImageFormatInfoFormatPlanar
-XCBXvAttributeFlagGettable
-XCBXvAttributeFlagSettable
-XCBXvBadPort
-XCBXvBadEncoding
-XCBXvBadControl
-XCBXvVideoNotify
-XCBXvPortNotify
-XCBTestCursorNone
-XCBTestCursorCurrent
-XCBVisualClassStaticGray
-XCBVisualClassGrayScale
-XCBVisualClassStaticColor
-XCBVisualClassPseudoColor
-XCBVisualClassTrueColor
-XCBVisualClassDirectColor
-XCBImageOrderLSBFirst
-XCBImageOrderMSBFirst
-XCBModMaskShift
-XCBModMaskLock
-XCBModMaskControl
-XCBModMask1
-XCBModMask2
-XCBModMask3
-XCBModMask4
-XCBModMask5
-XCBKeyPress
-XCBKeyRelease
-XCBButtonMask1
-XCBButtonMask2
-XCBButtonMask3
-XCBButtonMask4
-XCBButtonMask5
-XCBButtonMaskAny
-XCBButtonPress
-XCBButtonRelease
-XCBMotionNormal
-XCBMotionHint
-XCBMotionNotify
-XCBNotifyDetailAncestor
-XCBNotifyDetailVirtual
-XCBNotifyDetailInferior
-XCBNotifyDetailNonlinear
-XCBNotifyDetailNonlinearVirtual
-XCBNotifyDetailPointer
-XCBNotifyDetailPointerRoot
-XCBNotifyDetailNone
-XCBNotifyModeNormal
-XCBNotifyModeGrab
-XCBNotifyModeUngrab
-XCBNotifyModeWhileGrabbed
-XCBEnterNotify
-XCBLeaveNotify
-XCBFocusIn
-XCBFocusOut
-XCBKeymapNotify
-XCBExpose
-XCBGraphicsExposure
-XCBNoExposure
-XCBVisibilityUnobscured
-XCBVisibilityPartiallyObscured
-XCBVisibilityFullyObscured
-XCBVisibilityNotify
-XCBCreateNotify
-XCBDestroyNotify
-XCBUnmapNotify
-XCBMapNotify
-XCBMapRequest
-XCBReparentNotify
-XCBConfigureNotify
-XCBConfigureRequest
-XCBGravityNotify
-XCBResizeRequest
-XCBPlaceOnTop
-XCBPlaceOnBottom
-XCBCirculateNotify
-XCBCirculateRequest
-XCBPropertyNewValue
-XCBPropertyDelete
-XCBPropertyNotify
-XCBSelectionClear
-XCBSelectionRequest
-XCBSelectionNotify
-XCBColormapStateUninstalled
-XCBColormapStateInstalled
-XCBColormapNotify
-XCBClientMessage
-XCBMappingModifier
-XCBMappingKeyboard
-XCBMappingPointer
-XCBMappingNotify
-XCBRequest
-XCBValue
-XCBWindow
-XCBPixmap
-XCBAtom
-XCBCursor
-XCBFont
-XCBMatch
-XCBDrawable
-XCBAccess
-XCBAlloc
-XCBColormap
-XCBGContext
-XCBIDChoice
-XCBName
-XCBLength
-XCBImplementation
-XCBWindowClassCopyFromParent
-XCBWindowClassInputOutput
-XCBWindowClassInputOnly
-XCBCWBackPixmap
-XCBCWBackPixel
-XCBCWBorderPixmap
-XCBCWBorderPixel
-XCBCWBitGravity
-XCBCWWinGravity
-XCBCWBackingStore
-XCBCWBackingPlanes
-XCBCWBackingPixel
-XCBCWOverrideRedirect
-XCBCWSaveUnder
-XCBCWEventMask
-XCBCWDontPropagate
-XCBCWColormap
-XCBCWCursor
-XCBBackPixmapNone
-XCBBackPixmapParentRelative
-XCBGravityBitForget
-XCBGravityWinUnmap
-XCBGravityNorthWest
-XCBGravityNorth
-XCBGravityNorthEast
-XCBGravityWest
-XCBGravityCenter
-XCBGravityEast
-XCBGravitySouthWest
-XCBGravitySouth
-XCBGravitySouthEast
-XCBGravityStatic
-XCBBackingStoreNotUseful
-XCBBackingStoreWhenMapped
-XCBBackingStoreAlways
-XCBEventMaskNoEvent
-XCBEventMaskKeyPress
-XCBEventMaskKeyRelease
-XCBEventMaskButtonPress
-XCBEventMaskButtonRelease
-XCBEventMaskEnterWindow
-XCBEventMaskLeaveWindow
-XCBEventMaskPointerMotion
-XCBEventMaskPointerMotionHint
-XCBEventMaskButton1Motion
-XCBEventMaskButton2Motion
-XCBEventMaskButton3Motion
-XCBEventMaskButton4Motion
-XCBEventMaskButton5Motion
-XCBEventMaskButtonMotion
-XCBEventMaskKeymapState
-XCBEventMaskExposure
-XCBEventMaskVisibilityChange
-XCBEventMaskStructureNotify
-XCBEventMaskResizeRedirect
-XCBEventMaskSubstructureNotify
-XCBEventMaskSubstructureRedirect
-XCBEventMaskFocusChange
-XCBEventMaskPropertyChange
-XCBEventMaskColorMapChange
-XCBEventMaskOwnerGrabButton
-XCBMapStateUnmapped
-XCBMapStateUnviewable
-XCBMapStateViewable
-XCBSetModeInsert
-XCBSetModeDelete
-XCBConfigWindowX
-XCBConfigWindowY
-XCBConfigWindowWidth
-XCBConfigWindowHeight
-XCBConfigWindowBorderWidth
-XCBConfigWindowSibling
-XCBConfigWindowStackMode
-XCBStackModeAbove
-XCBStackModeBelow
-XCBStackModeTopIf
-XCBStackModeBottomIf
-XCBStackModeOpposite
-XCBCirculateRaiseLowest
-XCBCirculateLowerHighest
-XCBPropModeReplace
-XCBPropModePrepend
-XCBPropModeAppend
-XCBGetPropertyTypeAny
-XCBSendEventDestPointerWindow
-XCBSendEventDestItemFocus
-XCBGrabModeAsync
-XCBGrabModeSync
-XCBGrabStatusSuccess
-XCBGrabStatusAlreadyGrabbed
-XCBGrabStatusInvalidTime
-XCBGrabStatusNotViewable
-XCBGrabStatusFrozen
-XCBButtonAny
-XCBButton1
-XCBButton2
-XCBButton3
-XCBButton4
-XCBButton5
-XCBGrabAny
-XCBAllowAsyncPointer
-XCBAllowSyncPointer
-XCBAllowReplayPointer
-XCBAllowAsyncKeyboard
-XCBAllowSyncKeyboard
-XCBAllowReplayKeyboard
-XCBAllowAsyncBoth
-XCBAllowSyncBoth
-XCBInputFocusNone
-XCBInputFocusPointerRoot
-XCBInputFocusParent
-XCBFontDrawLeftToRight
-XCBFontDrawRightToLeft
-XCBGCFunction
-XCBGCPlaneMask
-XCBGCForeground
-XCBGCBackground
-XCBGCLineWidth
-XCBGCLineStyle
-XCBGCCapStyle
-XCBGCJoinStyle
-XCBGCFillStyle
-XCBGCFillRule
-XCBGCTile
-XCBGCStipple
-XCBGCTileStippleOriginX
-XCBGCTileStippleOriginY
-XCBGCFont
-XCBGCSubwindowMode
-XCBGCGraphicsExposures
-XCBGCClipOriginX
-XCBGCClipOriginY
-XCBGCClipMask
-XCBGCDashOffset
-XCBGCDashList
-XCBGCArcMode
-XCBGXclear
-XCBGXand
-XCBGXandReverse
-XCBGXcopy
-XCBGXandInverted
-XCBGXnoop
-XCBGXxor
-XCBGXor
-XCBGXnor
-XCBGXequiv
-XCBGXinvert
-XCBGXorReverse
-XCBGXcopyInverted
-XCBGXorInverted
-XCBGXnand
-XCBGXset
-XCBLineStyleSolid
-XCBLineStyleOnOffDash
-XCBLineStyleDoubleDash
-XCBCapStyleNotLast
-XCBCapStyleCap
-XCBCapStyleButt
-XCBCapStyleProjecting
-XCBJoinStyleMitre
-XCBJoinStyleRound
-XCBJoinStyleBevel
-XCBFillStyleSolid
-XCBFillStyleTiled
-XCBFillStyleStippled
-XCBFillStyleOpaqueStippled
-XCBFillRuleEvenOdd
-XCBFillRuleWinding
-XCBSubwindowModeClipByChildren
-XCBSubwindowModeIncludeInferiors
-XCBArcModeChord
-XCBArcModePieSlice
-XCBClipOrderingUnsorted
-XCBClipOrderingYSorted
-XCBClipOrderingYXSorted
-XCBClipOrderingYXBanded
-XCBCoordModeOrigin
-XCBCoordModePrevious
-XCBPolyShapeComplex
-XCBPolyShapeNonconvex
-XCBPolyShapeConvex
-XCBImageFormatXYBitmap
-XCBImageFormatXYPixmap
-XCBImageFormatZPixmap
-XCBColormapAllocNone
-XCBColormapAllocAll
-XCBColorFlagRed
-XCBColorFlagGreen
-XCBColorFlagBlue
-XCBQueryShapeOfLargestCursor
-XCBQueryShapeOfFastestTile
-XCBQueryShapeOfFastestStipple
-XCBKBKeyClickPercent
-XCBKBBellPercent
-XCBKBBellPitch
-XCBKBBellDuration
-XCBKBLed
-XCBKBLedMode
-XCBKBKey
-XCBKBAutoRepeatMode
-XCBLedModeOff
-XCBLedModeOn
-XCBAutoRepeatModeOff
-XCBAutoRepeatModeOn
-XCBAutoRepeatModeDefault
-XCBBlankingNotPreferred
-XCBBlankingPreferred
-XCBBlankingDefault
-XCBExposuresNotAllowed
-XCBExposuresAllowed
-XCBExposuresDefault
-XCBHostInsert
-XCBHostDelete
-XCBFamilyInternet
-XCBFamilyDECnet
-XCBFamilyChaos
-XCBFamilyServerInterpreted
-XCBFamilyInternet6
-XCBAccessControlDisable
-XCBAccessControlEnable
-XCBCloseDownDestroyAll
-XCBCloseDownRetainPermanent
-XCBCloseDownRetainTemporary
-XCBKillAllTemporary
-XCBScreenSaverReset
-XCBScreenSaverActive
-XCBMappingStatusSuccess
-XCBMappingStatusBusy
-XCBMappingStatusFailure
-XCBMapIndexShift
-XCBMapIndexLock
-XCBMapIndexControl
-XCBMapIndex1
-XCBMapIndex2
-XCBMapIndex3
-XCBMapIndex4
-XCBMapIndex5
+XCBCompositeRedirectAutomatic
+XCBCompositeRedirectManual
+XCBDamageReportLevelRawRectangles
+XCBDamageReportLevelDeltaRectangles
+XCBDamageReportLevelBoundingBox
+XCBDamageReportLevelNonEmpty
+XCBDamageBadDamage
+XCBDamageNotify
+XCBGlxGeneric
+XCBGlxBadContext
+XCBGlxBadContextState
+XCBGlxBadDrawable
+XCBGlxBadPixmap
+XCBGlxBadContextTag
+XCBGlxBadCurrentWindow
+XCBGlxBadRenderRequest
+XCBGlxBadLargeRequest
+XCBGlxUnsupportedPrivateRequest
+XCBGlxBadFBConfig
+XCBGlxBadPbuffer
+XCBGlxBadCurrentDrawable
+XCBGlxBadWindow
+XCBGlxPbufferClobber
+XCBGlxPBCETDamaged
+XCBGlxPBCETSaved
+XCBGlxPBCDTWindow
+XCBGlxPBCDTPbuffer
+XCBGlxGC_GL_CURRENT_BIT
+XCBGlxGC_GL_POINT_BIT
+XCBGlxGC_GL_LINE_BIT
+XCBGlxGC_GL_POLYGON_BIT
+XCBGlxGC_GL_POLYGON_STIPPLE_BIT
+XCBGlxGC_GL_PIXEL_MODE_BIT
+XCBGlxGC_GL_LIGHTING_BIT
+XCBGlxGC_GL_FOG_BIT
+XCBGlxGC_GL_DEPTH_BUFFER_BIT
+XCBGlxGC_GL_ACCUM_BUFFER_BIT
+XCBGlxGC_GL_STENCIL_BUFFER_BIT
+XCBGlxGC_GL_VIEWPORT_BIT
+XCBGlxGC_GL_TRANSFORM_BIT
+XCBGlxGC_GL_ENABLE_BIT
+XCBGlxGC_GL_COLOR_BUFFER_BIT
+XCBGlxGC_GL_HINT_BIT
+XCBGlxGC_GL_EVAL_BIT
+XCBGlxGC_GL_LIST_BIT
+XCBGlxGC_GL_TEXTURE_BIT
+XCBGlxGC_GL_SCISSOR_BIT
+XCBGlxGC_GL_ALL_ATTRIB_BITS
+XCBGlxRM_GL_RENDER
+XCBGlxRM_GL_FEEDBACK
+XCBGlxRM_GL_SELECT
+XCBRandRRotationRotate_0
+XCBRandRRotationRotate_90
+XCBRandRRotationRotate_180
+XCBRandRRotationRotate_270
+XCBRandRRotationReflect_X
+XCBRandRRotationReflect_Y
+XCBRandRSetConfigSuccess
+XCBRandRSetConfigInvalidConfigTime
+XCBRandRSetConfigInvalidTime
+XCBRandRSetConfigFailed
+XCBRandRSMScreenChangeNotify
+XCBRandRScreenChangeNotify
+XCBRecordHTypeFromServerTime
+XCBRecordHTypeFromClientTime
+XCBRecordHTypeFromClientSequence
+XCBRecordCSCurrentClients
+XCBRecordCSFutureClients
+XCBRecordCSAllClients
+XCBRecordBadContext
+XCBRenderPictTypeIndexed
+XCBRenderPictTypeDirect
+XCBRenderPictOpClear
+XCBRenderPictOpSrc
+XCBRenderPictOpDst
+XCBRenderPictOpOver
+XCBRenderPictOpOverReverse
+XCBRenderPictOpIn
+XCBRenderPictOpInReverse
+XCBRenderPictOpOut
+XCBRenderPictOpOutReverse
+XCBRenderPictOpAtop
+XCBRenderPictOpAtopReverse
+XCBRenderPictOpXor
+XCBRenderPictOpAdd
+XCBRenderPictOpSaturate
+XCBRenderPictOpDisjointClear
+XCBRenderPictOpDisjointSrc
+XCBRenderPictOpDisjointDst
+XCBRenderPictOpDisjointOver
+XCBRenderPictOpDisjointOverReverse
+XCBRenderPictOpDisjointIn
+XCBRenderPictOpDisjointInReverse
+XCBRenderPictOpDisjointOut
+XCBRenderPictOpDisjointOutReverse
+XCBRenderPictOpDisjointAtop
+XCBRenderPictOpDisjointAtopReverse
+XCBRenderPictOpDisjointXor
+XCBRenderPictOpConjointClear
+XCBRenderPictOpConjointSrc
+XCBRenderPictOpConjointDst
+XCBRenderPictOpConjointOver
+XCBRenderPictOpConjointOverReverse
+XCBRenderPictOpConjointIn
+XCBRenderPictOpConjointInReverse
+XCBRenderPictOpConjointOut
+XCBRenderPictOpConjointOutReverse
+XCBRenderPictOpConjointAtop
+XCBRenderPictOpConjointAtopReverse
+XCBRenderPictOpConjointXor
+XCBRenderPolyEdgeSharp
+XCBRenderPolyEdgeSmooth
+XCBRenderPolyModePrecise
+XCBRenderPolyModeImprecise
+XCBRenderCPRepeat
+XCBRenderCPAlphaMap
+XCBRenderCPAlphaXOrigin
+XCBRenderCPAlphaYOrigin
+XCBRenderCPClipXOrigin
+XCBRenderCPClipYOrigin
+XCBRenderCPClipMask
+XCBRenderCPGraphicsExposure
+XCBRenderCPSubwindowMode
+XCBRenderCPPolyEdge
+XCBRenderCPPolyMode
+XCBRenderCPDither
+XCBRenderCPComponentAlpha
+XCBRenderSubPixelUnknown
+XCBRenderSubPixelHorizontalRGB
+XCBRenderSubPixelHorizontalBGR
+XCBRenderSubPixelVerticalRGB
+XCBRenderSubPixelVerticalBGR
+XCBRenderSubPixelNone
+XCBRenderPictFormat
+XCBRenderPicture
+XCBRenderPictOp
+XCBRenderGlyphSet
+XCBRenderGlyph
+XCBScreenSaverKindBlanked
+XCBScreenSaverKindInternal
+XCBScreenSaverKindExternal
+XCBScreenSaverEventNotifyMask
+XCBScreenSaverEventCycleMask
+XCBScreenSaverStateOff
+XCBScreenSaverStateOn
+XCBScreenSaverStateCycle
+XCBScreenSaverStateDisabled
+XCBScreenSaverNotify
+XCBShapeSOSet
+XCBShapeSOUnion
+XCBShapeSOIntersect
+XCBShapeSOSubtract
+XCBShapeSOInvert
+XCBShapeSKBounding
+XCBShapeSKClip
+XCBShapeSKInput
+XCBShapeNotify
+XCBShmCompletion
+XCBShmBadSeg
+XCBSyncALARMSTATEActive
+XCBSyncALARMSTATEInactive
+XCBSyncALARMSTATEDestroyed
+XCBSyncTESTTYPEPositiveTransition
+XCBSyncTESTTYPENegativeTransition
+XCBSyncTESTTYPEPositiveComparison
+XCBSyncTESTTYPENegativeComparison
+XCBSyncVALUETYPEAbsolute
+XCBSyncVALUETYPERelative
+XCBSyncCACounter
+XCBSyncCAValueType
+XCBSyncCAValue
+XCBSyncCATestType
+XCBSyncCADelta
+XCBSyncCAEvents
+XCBSyncCounter
+XCBSyncAlarm
+XCBSyncCounterNotify
+XCBSyncAlarmNotify
+XCBXevieDatatypeUnmodified
+XCBXevieDatatypeModified
+XCBXFixesSaveSetModeInsert
+XCBXFixesSaveSetModeDelete
+XCBXFixesSaveSetTargetNearest
+XCBXFixesSaveSetTargetRoot
+XCBXFixesSaveSetMappingMap
+XCBXFixesSaveSetMappingUnmap
+XCBXFixesSelectionEventSetSelectionOwner
+XCBXFixesSelectionEventSelectionWindowDestroy
+XCBXFixesSelectionEventSelectionClientClose
+XCBXFixesSelectionEventMaskSetSelectionOwner
+XCBXFixesSelectionEventMaskSelectionWindowDestroy
+XCBXFixesSelectionEventMaskSelectionClientClose
+XCBXFixesSelectionNotify
+XCBXFixesCursorNotifyDisplayCursor
+XCBXFixesCursorNotifyMaskDisplayCursor
+XCBXFixesCursorNotify
+XCBXFixesBadRegion
+XCBXPGetDocFinished
+XCBXPGetDocSecondConsumer
+XCBXPEvMaskNoEventMask
+XCBXPEvMaskPrintMask
+XCBXPEvMaskAttributeMask
+XCBXPDetailStartJobNotify
+XCBXPDetailEndJobNotify
+XCBXPDetailStartDocNotify
+XCBXPDetailEndDocNotify
+XCBXPDetailStartPageNotify
+XCBXPDetailEndPageNotify
+XCBXPAttrJobAttr
+XCBXPAttrDocAttr
+XCBXPAttrPageAttr
+XCBXPAttrPrinterAttr
+XCBXPAttrServerAttr
+XCBXPAttrMediumAttr
+XCBXPAttrSpoolerAttr
+XCBXPNotify
+XCBXPAttributNotify
+XCBXPBadContext
+XCBXPBadSequence
+XCBXvTypeInputMask
+XCBXvTypeOutputMask
+XCBXvTypeVideoMask
+XCBXvTypeStillMask
+XCBXvTypeImageMask
+XCBXvImageFormatInfoTypeRGB
+XCBXvImageFormatInfoTypeYUV
+XCBXvImageFormatInfoFormatPacked
+XCBXvImageFormatInfoFormatPlanar
+XCBXvAttributeFlagGettable
+XCBXvAttributeFlagSettable
+XCBXvBadPort
+XCBXvBadEncoding
+XCBXvBadControl
+XCBXvVideoNotify
+XCBXvPortNotify
+XCBTestCursorNone
+XCBTestCursorCurrent
+XCBVisualClassStaticGray
+XCBVisualClassGrayScale
+XCBVisualClassStaticColor
+XCBVisualClassPseudoColor
+XCBVisualClassTrueColor
+XCBVisualClassDirectColor
+XCBImageOrderLSBFirst
+XCBImageOrderMSBFirst
+XCBModMaskShift
+XCBModMaskLock
+XCBModMaskControl
+XCBModMask1
+XCBModMask2
+XCBModMask3
+XCBModMask4
+XCBModMask5
+XCBKeyPress
+XCBKeyRelease
+XCBButtonMask1
+XCBButtonMask2
+XCBButtonMask3
+XCBButtonMask4
+XCBButtonMask5
+XCBButtonMaskAny
+XCBButtonPress
+XCBButtonRelease
+XCBMotionNormal
+XCBMotionHint
+XCBMotionNotify
+XCBNotifyDetailAncestor
+XCBNotifyDetailVirtual
+XCBNotifyDetailInferior
+XCBNotifyDetailNonlinear
+XCBNotifyDetailNonlinearVirtual
+XCBNotifyDetailPointer
+XCBNotifyDetailPointerRoot
+XCBNotifyDetailNone
+XCBNotifyModeNormal
+XCBNotifyModeGrab
+XCBNotifyModeUngrab
+XCBNotifyModeWhileGrabbed
+XCBEnterNotify
+XCBLeaveNotify
+XCBFocusIn
+XCBFocusOut
+XCBKeymapNotify
+XCBExpose
+XCBGraphicsExposure
+XCBNoExposure
+XCBVisibilityUnobscured
+XCBVisibilityPartiallyObscured
+XCBVisibilityFullyObscured
+XCBVisibilityNotify
+XCBCreateNotify
+XCBDestroyNotify
+XCBUnmapNotify
+XCBMapNotify
+XCBMapRequest
+XCBReparentNotify
+XCBConfigureNotify
+XCBConfigureRequest
+XCBGravityNotify
+XCBResizeRequest
+XCBPlaceOnTop
+XCBPlaceOnBottom
+XCBCirculateNotify
+XCBCirculateRequest
+XCBPropertyNewValue
+XCBPropertyDelete
+XCBPropertyNotify
+XCBSelectionClear
+XCBSelectionRequest
+XCBSelectionNotify
+XCBColormapStateUninstalled
+XCBColormapStateInstalled
+XCBColormapNotify
+XCBClientMessage
+XCBMappingModifier
+XCBMappingKeyboard
+XCBMappingPointer
+XCBMappingNotify
+XCBRequest
+XCBValue
+XCBWindow
+XCBPixmap
+XCBAtom
+XCBCursor
+XCBFont
+XCBMatch
+XCBDrawable
+XCBAccess
+XCBAlloc
+XCBColormap
+XCBGContext
+XCBIDChoice
+XCBName
+XCBLength
+XCBImplementation
+XCBWindowClassCopyFromParent
+XCBWindowClassInputOutput
+XCBWindowClassInputOnly
+XCBCWBackPixmap
+XCBCWBackPixel
+XCBCWBorderPixmap
+XCBCWBorderPixel
+XCBCWBitGravity
+XCBCWWinGravity
+XCBCWBackingStore
+XCBCWBackingPlanes
+XCBCWBackingPixel
+XCBCWOverrideRedirect
+XCBCWSaveUnder
+XCBCWEventMask
+XCBCWDontPropagate
+XCBCWColormap
+XCBCWCursor
+XCBBackPixmapNone
+XCBBackPixmapParentRelative
+XCBGravityBitForget
+XCBGravityWinUnmap
+XCBGravityNorthWest
+XCBGravityNorth
+XCBGravityNorthEast
+XCBGravityWest
+XCBGravityCenter
+XCBGravityEast
+XCBGravitySouthWest
+XCBGravitySouth
+XCBGravitySouthEast
+XCBGravityStatic
+XCBBackingStoreNotUseful
+XCBBackingStoreWhenMapped
+XCBBackingStoreAlways
+XCBEventMaskNoEvent
+XCBEventMaskKeyPress
+XCBEventMaskKeyRelease
+XCBEventMaskButtonPress
+XCBEventMaskButtonRelease
+XCBEventMaskEnterWindow
+XCBEventMaskLeaveWindow
+XCBEventMaskPointerMotion
+XCBEventMaskPointerMotionHint
+XCBEventMaskButton1Motion
+XCBEventMaskButton2Motion
+XCBEventMaskButton3Motion
+XCBEventMaskButton4Motion
+XCBEventMaskButton5Motion
+XCBEventMaskButtonMotion
+XCBEventMaskKeymapState
+XCBEventMaskExposure
+XCBEventMaskVisibilityChange
+XCBEventMaskStructureNotify
+XCBEventMaskResizeRedirect
+XCBEventMaskSubstructureNotify
+XCBEventMaskSubstructureRedirect
+XCBEventMaskFocusChange
+XCBEventMaskPropertyChange
+XCBEventMaskColorMapChange
+XCBEventMaskOwnerGrabButton
+XCBMapStateUnmapped
+XCBMapStateUnviewable
+XCBMapStateViewable
+XCBSetModeInsert
+XCBSetModeDelete
+XCBConfigWindowX
+XCBConfigWindowY
+XCBConfigWindowWidth
+XCBConfigWindowHeight
+XCBConfigWindowBorderWidth
+XCBConfigWindowSibling
+XCBConfigWindowStackMode
+XCBStackModeAbove
+XCBStackModeBelow
+XCBStackModeTopIf
+XCBStackModeBottomIf
+XCBStackModeOpposite
+XCBCirculateRaiseLowest
+XCBCirculateLowerHighest
+XCBPropModeReplace
+XCBPropModePrepend
+XCBPropModeAppend
+XCBGetPropertyTypeAny
+XCBSendEventDestPointerWindow
+XCBSendEventDestItemFocus
+XCBGrabModeAsync
+XCBGrabModeSync
+XCBGrabStatusSuccess
+XCBGrabStatusAlreadyGrabbed
+XCBGrabStatusInvalidTime
+XCBGrabStatusNotViewable
+XCBGrabStatusFrozen
+XCBButtonAny
+XCBButton1
+XCBButton2
+XCBButton3
+XCBButton4
+XCBButton5
+XCBGrabAny
+XCBAllowAsyncPointer
+XCBAllowSyncPointer
+XCBAllowReplayPointer
+XCBAllowAsyncKeyboard
+XCBAllowSyncKeyboard
+XCBAllowReplayKeyboard
+XCBAllowAsyncBoth
+XCBAllowSyncBoth
+XCBInputFocusNone
+XCBInputFocusPointerRoot
+XCBInputFocusParent
+XCBFontDrawLeftToRight
+XCBFontDrawRightToLeft
+XCBGCFunction
+XCBGCPlaneMask
+XCBGCForeground
+XCBGCBackground
+XCBGCLineWidth
+XCBGCLineStyle
+XCBGCCapStyle
+XCBGCJoinStyle
+XCBGCFillStyle
+XCBGCFillRule
+XCBGCTile
+XCBGCStipple
+XCBGCTileStippleOriginX
+XCBGCTileStippleOriginY
+XCBGCFont
+XCBGCSubwindowMode
+XCBGCGraphicsExposures
+XCBGCClipOriginX
+XCBGCClipOriginY
+XCBGCClipMask
+XCBGCDashOffset
+XCBGCDashList
+XCBGCArcMode
+XCBGXclear
+XCBGXand
+XCBGXandReverse
+XCBGXcopy
+XCBGXandInverted
+XCBGXnoop
+XCBGXxor
+XCBGXor
+XCBGXnor
+XCBGXequiv
+XCBGXinvert
+XCBGXorReverse
+XCBGXcopyInverted
+XCBGXorInverted
+XCBGXnand
+XCBGXset
+XCBLineStyleSolid
+XCBLineStyleOnOffDash
+XCBLineStyleDoubleDash
+XCBCapStyleNotLast
+XCBCapStyleCap
+XCBCapStyleButt
+XCBCapStyleProjecting
+XCBJoinStyleMitre
+XCBJoinStyleRound
+XCBJoinStyleBevel
+XCBFillStyleSolid
+XCBFillStyleTiled
+XCBFillStyleStippled
+XCBFillStyleOpaqueStippled
+XCBFillRuleEvenOdd
+XCBFillRuleWinding
+XCBSubwindowModeClipByChildren
+XCBSubwindowModeIncludeInferiors
+XCBArcModeChord
+XCBArcModePieSlice
+XCBClipOrderingUnsorted
+XCBClipOrderingYSorted
+XCBClipOrderingYXSorted
+XCBClipOrderingYXBanded
+XCBCoordModeOrigin
+XCBCoordModePrevious
+XCBPolyShapeComplex
+XCBPolyShapeNonconvex
+XCBPolyShapeConvex
+XCBImageFormatXYBitmap
+XCBImageFormatXYPixmap
+XCBImageFormatZPixmap
+XCBColormapAllocNone
+XCBColormapAllocAll
+XCBColorFlagRed
+XCBColorFlagGreen
+XCBColorFlagBlue
+XCBQueryShapeOfLargestCursor
+XCBQueryShapeOfFastestTile
+XCBQueryShapeOfFastestStipple
+XCBKBKeyClickPercent
+XCBKBBellPercent
+XCBKBBellPitch
+XCBKBBellDuration
+XCBKBLed
+XCBKBLedMode
+XCBKBKey
+XCBKBAutoRepeatMode
+XCBLedModeOff
+XCBLedModeOn
+XCBAutoRepeatModeOff
+XCBAutoRepeatModeOn
+XCBAutoRepeatModeDefault
+XCBBlankingNotPreferred
+XCBBlankingPreferred
+XCBBlankingDefault
+XCBExposuresNotAllowed
+XCBExposuresAllowed
+XCBExposuresDefault
+XCBHostInsert
+XCBHostDelete
+XCBFamilyInternet
+XCBFamilyDECnet
+XCBFamilyChaos
+XCBFamilyServerInterpreted
+XCBFamilyInternet6
+XCBAccessControlDisable
+XCBAccessControlEnable
+XCBCloseDownDestroyAll
+XCBCloseDownRetainPermanent
+XCBCloseDownRetainTemporary
+XCBKillAllTemporary
+XCBScreenSaverReset
+XCBScreenSaverActive
+XCBMappingStatusSuccess
+XCBMappingStatusBusy
+XCBMappingStatusFailure
+XCBMapIndexShift
+XCBMapIndexLock
+XCBMapIndexControl
+XCBMapIndex1
+XCBMapIndex2
+XCBMapIndex3
+XCBMapIndex4
+XCBMapIndex5
XCBAllPlanes \ No newline at end of file
diff --git a/libxcb/xcb-composite.pc.in b/libxcb/xcb-composite.pc.in
index 02d49b0c2..2cd20e913 100644
--- a/libxcb/xcb-composite.pc.in
+++ b/libxcb/xcb-composite.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Composite
-Description: XCB Composite Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb xcb-xfixes
-Libs: -L${libdir} -lxcb-composite
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Composite
+Description: XCB Composite Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb xcb-xfixes
+Libs: -L${libdir} -lxcb-composite
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-damage.pc.in b/libxcb/xcb-damage.pc.in
index c4bc59986..1f694c5df 100644
--- a/libxcb/xcb-damage.pc.in
+++ b/libxcb/xcb-damage.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Damage
-Description: XCB Damage Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb xcb-xfixes
-Libs: -L${libdir} -lxcb-damage
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Damage
+Description: XCB Damage Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb xcb-xfixes
+Libs: -L${libdir} -lxcb-damage
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-dpms.pc.in b/libxcb/xcb-dpms.pc.in
index 838a054be..4c369981b 100644
--- a/libxcb/xcb-dpms.pc.in
+++ b/libxcb/xcb-dpms.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB DPMS
-Description: XCB DPMS Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-dpms
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB DPMS
+Description: XCB DPMS Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-dpms
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-dri2.pc.in b/libxcb/xcb-dri2.pc.in
index a9944dfa2..2b46adcb3 100644
--- a/libxcb/xcb-dri2.pc.in
+++ b/libxcb/xcb-dri2.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB DRI2
-Description: XCB DRI2 Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-dri2
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB DRI2
+Description: XCB DRI2 Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-dri2
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-glx.pc.in b/libxcb/xcb-glx.pc.in
index bbd412675..e2b08abe1 100644
--- a/libxcb/xcb-glx.pc.in
+++ b/libxcb/xcb-glx.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB GLX
-Description: XCB GLX Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-glx
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB GLX
+Description: XCB GLX Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-glx
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-proto/.gitignore b/libxcb/xcb-proto/.gitignore
new file mode 100644
index 000000000..d0148ecfa
--- /dev/null
+++ b/libxcb/xcb-proto/.gitignore
@@ -0,0 +1,31 @@
+aclocal.m4
+autom4te.cache
+compile
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+mkinstalldirs
+py-compile
+config.guess
+config.h
+config.h.in
+config.log
+config.status
+config.sub
+configure
+configure.lineno
+.deps
+.dirstamp
+.libs
+*.lo
+*.loT
+*.la
+Makefile
+Makefile.in
+stamp-h1
+*.o
+*.pc
+*.tar.bz2
+*.tar.gz
diff --git a/libxcb/xcb-proto/COPYING b/libxcb/xcb-proto/COPYING
index 54bfbe5b0..50a14e39e 100644
--- a/libxcb/xcb-proto/COPYING
+++ b/libxcb/xcb-proto/COPYING
@@ -1,30 +1,30 @@
-Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-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 AUTHORS
-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 names of the authors
-or their institutions 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
-authors.
+Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+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 AUTHORS
+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 names of the authors
+or their institutions 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
+authors.
diff --git a/libxcb/xcb-proto/INSTALL b/libxcb/xcb-proto/INSTALL
index 54caf7c19..bf8c23f1f 100644
--- a/libxcb/xcb-proto/INSTALL
+++ b/libxcb/xcb-proto/INSTALL
@@ -1,229 +1,229 @@
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
-
- This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
- These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.)
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. Run `./configure --help'
-for details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
-
-Installation Names
-==================
-
- By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on. Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the `--target=TYPE' option to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
- Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-will cause the specified gcc to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-`configure' Invocation
-======================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
+Foundation, Inc.
+
+ This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory. After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/libxcb/xcb-proto/README b/libxcb/xcb-proto/README
index 22d7debca..11ffe528a 100644
--- a/libxcb/xcb-proto/README
+++ b/libxcb/xcb-proto/README
@@ -1,47 +1,47 @@
-About xcb-proto
-===============
-
-xcb-proto provides the XML-XCB protocol descriptions that libxcb uses to
-generate the majority of its code and API. We provide them separately
-from libxcb to allow reuse by other projects, such as additional
-language bindings, protocol dissectors, or documentation generators.
-
-This separation between the XCB transport layer and the
-automatically-generated protocol layer also makes it far easier to write
-new extensions. With the Xlib infrastructure, client-side support for
-new extensions requires significant duplication of effort. With XCB and
-the XML-XCB protocol descriptions, client-side support for a new
-extension requires only an XML description of the extension, and not a
-single line of code.
-
-Python libraries: xcb-proto also contains language-independent Python
-libraries that are used to parse an XML description and create objects
-used by Python code generators in individual language bindings. These
-libraries are installed into $(prefix)/lib/pythonX.X/site-packages. If
-this location is not on your system's Python path, scripts that import
-them will fail with import errors. In this case you must add the
-install location to your Python path by creating a file with a `.pth'
-extension in a directory that _is_ on the Python path, and put the
-path to the install location in that file. For example, on my system
-there is a file named 'local.pth' in /usr/lib/python2.5/site-packages,
-which contains '/usr/local/lib/python2.5/site-packages'. Note that
-this is only necessary on machines where XCB is being built.
-
-Please report any issues you find to the freedesktop.org bug tracker,
-at:
-
- <https://bugs.freedesktop.org/enter_bug.cgi?product=XCB>
-
-Discussion about XCB occurs on the XCB mailing list:
-
- <mailto:xcb at lists.freedesktop.org>
- <http://lists.freedesktop.org/mailman/listinfo/xcb>
-
-You can obtain the latest development versions of XCB using GIT.
-For anonymous checkouts, use:
-
- git clone git://anongit.freedesktop.org/git/xcb/proto
-
-For developers, use:
-
- git clone git+ssh://git.freedesktop.org/git/xcb/proto
+About xcb-proto
+===============
+
+xcb-proto provides the XML-XCB protocol descriptions that libxcb uses to
+generate the majority of its code and API. We provide them separately
+from libxcb to allow reuse by other projects, such as additional
+language bindings, protocol dissectors, or documentation generators.
+
+This separation between the XCB transport layer and the
+automatically-generated protocol layer also makes it far easier to write
+new extensions. With the Xlib infrastructure, client-side support for
+new extensions requires significant duplication of effort. With XCB and
+the XML-XCB protocol descriptions, client-side support for a new
+extension requires only an XML description of the extension, and not a
+single line of code.
+
+Python libraries: xcb-proto also contains language-independent Python
+libraries that are used to parse an XML description and create objects
+used by Python code generators in individual language bindings. These
+libraries are installed into $(prefix)/lib/pythonX.X/site-packages. If
+this location is not on your system's Python path, scripts that import
+them will fail with import errors. In this case you must add the
+install location to your Python path by creating a file with a `.pth'
+extension in a directory that _is_ on the Python path, and put the
+path to the install location in that file. For example, on my system
+there is a file named 'local.pth' in /usr/lib/python2.5/site-packages,
+which contains '/usr/local/lib/python2.5/site-packages'. Note that
+this is only necessary on machines where XCB is being built.
+
+Please report any issues you find to the freedesktop.org bug tracker,
+at:
+
+ <https://bugs.freedesktop.org/enter_bug.cgi?product=XCB>
+
+Discussion about XCB occurs on the XCB mailing list:
+
+ <mailto:xcb at lists.freedesktop.org>
+ <http://lists.freedesktop.org/mailman/listinfo/xcb>
+
+You can obtain the latest development versions of XCB using GIT.
+For anonymous checkouts, use:
+
+ git clone git://anongit.freedesktop.org/git/xcb/proto
+
+For developers, use:
+
+ git clone git+ssh://git.freedesktop.org/git/xcb/proto
diff --git a/libxcb/xcb-proto/TODO b/libxcb/xcb-proto/TODO
index add693c48..51aac0a92 100644
--- a/libxcb/xcb-proto/TODO
+++ b/libxcb/xcb-proto/TODO
@@ -1,45 +1,45 @@
-Last Updated: 2006-04-27
-
-Extension Status:
-
-X - Present, tested, works.
-U - Present, untested.
-I - Incomplete.
-
-X BIG-REQUESTS
-X COMPOSITE
-X DAMAGE
- DOUBLE-BUFFER
-X DPMS
- Extended-Visual-Information
-X GLX
- LBX
-X MIT-SCREEN-SAVER
-X MIT-SHM
- MIT-SUNDRY-NONSTANDARD
- Multi-Buffering
-X RANDR
-X RECORD
-X RENDER
- SECURITY
- SGI-GLX
-X SHAPE
-X SYNC
- TOG-CUP
-X X-Resource
- XC-APPGROUP
-X XC-MISC
-X XEVIE
-X XFIXES
- XFree86-Bigfont
- XFree86-DGA
-X XFree86-DRI
- XFree86-Misc
- XFree86-VidModeExtension
- XINERAMA
- XInputExtension
- XKEYBOARD
-I XpExtension (XPRINT)
-X XTEST
-X XVideo
-U XVideo-MotionCompensation
+Last Updated: 2006-04-27
+
+Extension Status:
+
+X - Present, tested, works.
+U - Present, untested.
+I - Incomplete.
+
+X BIG-REQUESTS
+X COMPOSITE
+X DAMAGE
+ DOUBLE-BUFFER
+X DPMS
+ Extended-Visual-Information
+X GLX
+ LBX
+X MIT-SCREEN-SAVER
+X MIT-SHM
+ MIT-SUNDRY-NONSTANDARD
+ Multi-Buffering
+X RANDR
+X RECORD
+X RENDER
+ SECURITY
+ SGI-GLX
+X SHAPE
+X SYNC
+ TOG-CUP
+X X-Resource
+ XC-APPGROUP
+X XC-MISC
+X XEVIE
+X XFIXES
+ XFree86-Bigfont
+ XFree86-DGA
+X XFree86-DRI
+ XFree86-Misc
+ XFree86-VidModeExtension
+ XINERAMA
+ XInputExtension
+ XKEYBOARD
+I XpExtension (XPRINT)
+X XTEST
+X XVideo
+U XVideo-MotionCompensation
diff --git a/libxcb/xcb-proto/autogen.sh b/libxcb/xcb-proto/autogen.sh
index 904cd6746..6fcae015c 100644
--- a/libxcb/xcb-proto/autogen.sh
+++ b/libxcb/xcb-proto/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libxcb/xcb-proto/src/bigreq.xml b/libxcb/xcb-proto/src/bigreq.xml
index 3cca2f77f..df1455be9 100644
--- a/libxcb/xcb-proto/src/bigreq.xml
+++ b/libxcb/xcb-proto/src/bigreq.xml
@@ -1,38 +1,38 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<xcb header="bigreq" extension-xname="BIG-REQUESTS"
- extension-name="BigRequests" extension-multiword="true"
- major-version="0" minor-version="0">
-
- <request name="Enable" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="maximum_request_length" />
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="bigreq" extension-xname="BIG-REQUESTS"
+ extension-name="BigRequests" extension-multiword="true"
+ major-version="0" minor-version="0">
+
+ <request name="Enable" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="maximum_request_length" />
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/composite.xml b/libxcb/xcb-proto/src/composite.xml
index d16b6e746..d6e5dc261 100644
--- a/libxcb/xcb-proto/src/composite.xml
+++ b/libxcb/xcb-proto/src/composite.xml
@@ -1,98 +1,98 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2004 Josh Triplett. All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<!-- This file describes version 0.3 of COMPOSITE. -->
-<xcb header="composite" extension-xname="Composite" extension-name="Composite"
- major-version="0" minor-version="3">
-
- <import>xproto</import>
- <import>xfixes</import>
-
- <enum name="Redirect">
- <item name="Automatic" />
- <item name="Manual" />
- </enum>
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD32" name="client_major_version" />
- <field type="CARD32" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="major_version" />
- <field type="CARD32" name="minor_version" />
- <pad bytes="16" />
- </reply>
- </request>
-
- <request name="RedirectWindow" opcode="1">
- <field type="WINDOW" name="window" />
- <field type="CARD8" name="update" enum="Redirect" />
- <pad bytes="3" />
- </request>
-
- <request name="RedirectSubwindows" opcode="2">
- <field type="WINDOW" name="window" />
- <field type="CARD8" name="update" enum="Redirect" />
- <pad bytes="3" />
- </request>
-
- <request name="UnredirectWindow" opcode="3">
- <field type="WINDOW" name="window" />
- <field type="CARD8" name="update" enum="Redirect" />
- <pad bytes="3" />
- </request>
-
- <request name="UnredirectSubwindows" opcode="4">
- <field type="WINDOW" name="window" />
- <field type="CARD8" name="update" enum="Redirect" />
- <pad bytes="3" />
- </request>
-
- <request name="CreateRegionFromBorderClip" opcode="5">
- <field type="REGION" name="region" />
- <field type="WINDOW" name="window" />
- </request>
-
- <request name="NameWindowPixmap" opcode="6">
- <field type="WINDOW" name="window" />
- <field type="PIXMAP" name="pixmap" />
- </request>
-
- <!-- new in version 0.3 -->
-
- <request name="GetOverlayWindow" opcode="7">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="WINDOW" name="overlay_win" />
- <pad bytes="20" />
- </reply>
- </request>
-
- <request name="ReleaseOverlayWindow" opcode="8">
- <field type="WINDOW" name="window" />
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<!-- This file describes version 0.3 of COMPOSITE. -->
+<xcb header="composite" extension-xname="Composite" extension-name="Composite"
+ major-version="0" minor-version="3">
+
+ <import>xproto</import>
+ <import>xfixes</import>
+
+ <enum name="Redirect">
+ <item name="Automatic" />
+ <item name="Manual" />
+ </enum>
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD32" name="client_major_version" />
+ <field type="CARD32" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <pad bytes="16" />
+ </reply>
+ </request>
+
+ <request name="RedirectWindow" opcode="1">
+ <field type="WINDOW" name="window" />
+ <field type="CARD8" name="update" enum="Redirect" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="RedirectSubwindows" opcode="2">
+ <field type="WINDOW" name="window" />
+ <field type="CARD8" name="update" enum="Redirect" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="UnredirectWindow" opcode="3">
+ <field type="WINDOW" name="window" />
+ <field type="CARD8" name="update" enum="Redirect" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="UnredirectSubwindows" opcode="4">
+ <field type="WINDOW" name="window" />
+ <field type="CARD8" name="update" enum="Redirect" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="CreateRegionFromBorderClip" opcode="5">
+ <field type="REGION" name="region" />
+ <field type="WINDOW" name="window" />
+ </request>
+
+ <request name="NameWindowPixmap" opcode="6">
+ <field type="WINDOW" name="window" />
+ <field type="PIXMAP" name="pixmap" />
+ </request>
+
+ <!-- new in version 0.3 -->
+
+ <request name="GetOverlayWindow" opcode="7">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="WINDOW" name="overlay_win" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <request name="ReleaseOverlayWindow" opcode="8">
+ <field type="WINDOW" name="window" />
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/damage.xml b/libxcb/xcb-proto/src/damage.xml
index 9c5cde5b6..5ac4cebbc 100644
--- a/libxcb/xcb-proto/src/damage.xml
+++ b/libxcb/xcb-proto/src/damage.xml
@@ -1,87 +1,87 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2004 Josh Triplett
-Copyright (C) 2007 Jeremy Kolb
-All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<!-- This file describes version 1.1 of DAMAGE. -->
-<xcb header="damage" extension-xname="DAMAGE" extension-name="Damage"
- major-version="1" minor-version="1">
- <import>xproto</import>
- <import>xfixes</import>
-
- <xidtype name="DAMAGE" />
-
- <enum name="ReportLevel">
- <item name="RawRectangles" />
- <item name="DeltaRectangles" />
- <item name="BoundingBox" />
- <item name="NonEmpty" />
- </enum>
-
- <error name="BadDamage" number="0" />
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD32" name="client_major_version" />
- <field type="CARD32" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="major_version" />
- <field type="CARD32" name="minor_version" />
- <pad bytes="16" />
- </reply>
- </request>
-
- <request name="Create" opcode="1">
- <field type="DAMAGE" name="damage" />
- <field type="DRAWABLE" name="drawable" />
- <field type="CARD8" name="level" enum="ReportLevel" />
- <pad bytes="3" />
- </request>
-
- <request name="Destroy" opcode="2">
- <field type="DAMAGE" name="damage" />
- </request>
-
- <request name="Subtract" opcode="3">
- <field type="DAMAGE" name="damage" />
- <field type="REGION" name="repair" altenum="Region" />
- <field type="REGION" name="parts" altenum="Region" />
- </request>
-
- <request name="Add" opcode="4">
- <field type="DRAWABLE" name="drawable" />
- <field type="REGION" name="region" />
- </request>
-
- <event name="Notify" number="0">
- <field type="CARD8" name="level" enum="ReportLevel" />
- <field type="DRAWABLE" name="drawable" />
- <field type="DAMAGE" name="damage" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="RECTANGLE" name="area" />
- <field type="RECTANGLE" name="geometry" />
- </event>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett
+Copyright (C) 2007 Jeremy Kolb
+All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<!-- This file describes version 1.1 of DAMAGE. -->
+<xcb header="damage" extension-xname="DAMAGE" extension-name="Damage"
+ major-version="1" minor-version="1">
+ <import>xproto</import>
+ <import>xfixes</import>
+
+ <xidtype name="DAMAGE" />
+
+ <enum name="ReportLevel">
+ <item name="RawRectangles" />
+ <item name="DeltaRectangles" />
+ <item name="BoundingBox" />
+ <item name="NonEmpty" />
+ </enum>
+
+ <error name="BadDamage" number="0" />
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD32" name="client_major_version" />
+ <field type="CARD32" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <pad bytes="16" />
+ </reply>
+ </request>
+
+ <request name="Create" opcode="1">
+ <field type="DAMAGE" name="damage" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD8" name="level" enum="ReportLevel" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="Destroy" opcode="2">
+ <field type="DAMAGE" name="damage" />
+ </request>
+
+ <request name="Subtract" opcode="3">
+ <field type="DAMAGE" name="damage" />
+ <field type="REGION" name="repair" altenum="Region" />
+ <field type="REGION" name="parts" altenum="Region" />
+ </request>
+
+ <request name="Add" opcode="4">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="REGION" name="region" />
+ </request>
+
+ <event name="Notify" number="0">
+ <field type="CARD8" name="level" enum="ReportLevel" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="DAMAGE" name="damage" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="RECTANGLE" name="area" />
+ <field type="RECTANGLE" name="geometry" />
+ </event>
+</xcb>
diff --git a/libxcb/xcb-proto/src/dpms.xml b/libxcb/xcb-proto/src/dpms.xml
index 0c2ac2027..32a9fca52 100644
--- a/libxcb/xcb-proto/src/dpms.xml
+++ b/libxcb/xcb-proto/src/dpms.xml
@@ -1,87 +1,87 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<xcb header="dpms" extension-xname="DPMS" extension-name="DPMS"
- major-version="0" minor-version="0">
- <request name="GetVersion" opcode="0">
- <field type="CARD16" name="client_major_version" />
- <field type="CARD16" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major_version" />
- <field type="CARD16" name="server_minor_version" />
- </reply>
- </request>
-
- <request name="Capable" opcode="1">
- <reply>
- <pad bytes="1" />
- <field type="BOOL" name="capable" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <request name="GetTimeouts" opcode="2">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="standby_timeout" />
- <field type="CARD16" name="suspend_timeout" />
- <field type="CARD16" name="off_timeout" />
- <pad bytes="18" />
- </reply>
- </request>
-
- <request name="SetTimeouts" opcode="3">
- <field type="CARD16" name="standby_timeout" />
- <field type="CARD16" name="suspend_timeout" />
- <field type="CARD16" name="off_timeout" />
- </request>
-
- <request name="Enable" opcode="4" />
-
- <request name="Disable" opcode="5" />
-
- <enum name="DPMSMode">
- <item name="On" />
- <item name="Standby" />
- <item name="Suspend" />
- <item name="Off" />
- </enum>
-
- <request name="ForceLevel" opcode="6">
- <field type="CARD16" name="power_level" enum="DPMSMode" />
- </request>
-
- <request name="Info" opcode="7">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="power_level" enum="DPMSMode" />
- <field type="BOOL" name="state" />
- <pad bytes="21" />
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="dpms" extension-xname="DPMS" extension-name="DPMS"
+ major-version="0" minor-version="0">
+ <request name="GetVersion" opcode="0">
+ <field type="CARD16" name="client_major_version" />
+ <field type="CARD16" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major_version" />
+ <field type="CARD16" name="server_minor_version" />
+ </reply>
+ </request>
+
+ <request name="Capable" opcode="1">
+ <reply>
+ <pad bytes="1" />
+ <field type="BOOL" name="capable" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <request name="GetTimeouts" opcode="2">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="standby_timeout" />
+ <field type="CARD16" name="suspend_timeout" />
+ <field type="CARD16" name="off_timeout" />
+ <pad bytes="18" />
+ </reply>
+ </request>
+
+ <request name="SetTimeouts" opcode="3">
+ <field type="CARD16" name="standby_timeout" />
+ <field type="CARD16" name="suspend_timeout" />
+ <field type="CARD16" name="off_timeout" />
+ </request>
+
+ <request name="Enable" opcode="4" />
+
+ <request name="Disable" opcode="5" />
+
+ <enum name="DPMSMode">
+ <item name="On" />
+ <item name="Standby" />
+ <item name="Suspend" />
+ <item name="Off" />
+ </enum>
+
+ <request name="ForceLevel" opcode="6">
+ <field type="CARD16" name="power_level" enum="DPMSMode" />
+ </request>
+
+ <request name="Info" opcode="7">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="power_level" enum="DPMSMode" />
+ <field type="BOOL" name="state" />
+ <pad bytes="21" />
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/dri2.xml b/libxcb/xcb-proto/src/dri2.xml
index 3af160066..508e4c1fc 100644
--- a/libxcb/xcb-proto/src/dri2.xml
+++ b/libxcb/xcb-proto/src/dri2.xml
@@ -28,7 +28,7 @@ authorization from the authors.
-->
<xcb header="dri2" extension-xname="DRI2" extension-name="DRI2"
- major-version="1" minor-version="3">
+ major-version="1" minor-version="4">
<import>xproto</import>
<enum name="Attachment">
@@ -241,6 +241,18 @@ authorization from the authors.
<field type="CARD32" name="interval" />
</request>
+ <!-- Version 1.4 -->
+
+ <request name="GetParam" opcode="13">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD32" name="param" />
+ <reply>
+ <field type="BOOL" name="is_param_recognized" />
+ <field type="CARD32" name="value_hi" />
+ <field type="CARD32" name="value_lo" />
+ </reply>
+ </request>
+
<!-- Events -->
<event name="BufferSwapComplete" number="0">
diff --git a/libxcb/xcb-proto/src/ge.xml b/libxcb/xcb-proto/src/ge.xml
index 3a6210d97..b9ecacc4e 100644
--- a/libxcb/xcb-proto/src/ge.xml
+++ b/libxcb/xcb-proto/src/ge.xml
@@ -1,42 +1,42 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2009 Open Text Corporation. All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<xcb header="ge" extension-xname="Generic Event Extension" extension-name="GenericEvent"
- major-version="1" minor-version="0">
-
- <!-- Version 1 -->
- <request name="QueryVersion" opcode="0">
- <field type="CARD16" name="client_major_version" />
- <field type="CARD16" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- <pad bytes="20" />
- </reply>
- </request>
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2009 Open Text Corporation. All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="ge" extension-xname="Generic Event Extension" extension-name="GenericEvent"
+ major-version="1" minor-version="0">
+
+ <!-- Version 1 -->
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD16" name="client_major_version" />
+ <field type="CARD16" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/randr.xml b/libxcb/xcb-proto/src/randr.xml
index 4f0716f7c..b28372e9c 100644
--- a/libxcb/xcb-proto/src/randr.xml
+++ b/libxcb/xcb-proto/src/randr.xml
@@ -1,671 +1,671 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Jeremy Kolb, Ian Osgood
-All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-
-<xcb header="randr" extension-xname="RANDR" extension-name="RandR"
- major-version="1" minor-version="3">
-
- <import>xproto</import>
- <import>render</import>
-
- <!-- XIDs -->
- <xidtype name="MODE" />
- <xidtype name="CRTC" />
- <xidtype name="OUTPUT" />
-
- <!-- Errors -->
-
- <error name="BadOutput" number="0" />
- <error name="BadCrtc" number="1" />
- <error name="BadMode" number="2" />
-
- <!-- Requests -->
-
- <enum name="Rotation">
- <item name="Rotate_0"> <bit>0</bit></item>
- <item name="Rotate_90"> <bit>1</bit></item>
- <item name="Rotate_180"><bit>2</bit></item>
- <item name="Rotate_270"><bit>3</bit></item>
- <item name="Reflect_X"> <bit>4</bit></item>
- <item name="Reflect_Y"> <bit>5</bit></item>
- </enum>
-
- <struct name="ScreenSize">
- <field type="CARD16" name="width" /> <!-- pixels -->
- <field type="CARD16" name="height" />
- <field type="CARD16" name="mwidth" /> <!-- millimeters -->
- <field type="CARD16" name="mheight" />
- </struct>
-
- <struct name="RefreshRates">
- <field type="CARD16" name="nRates" />
- <list type="CARD16" name="rates">
- <fieldref>nRates</fieldref>
- </list>
- </struct>
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD32" name="major_version" />
- <field type="CARD32" name="minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="major_version" />
- <field type="CARD32" name="minor_version" />
- <pad bytes="16" />
- </reply>
- </request>
-
- <!-- Skip obsolete opcode 1 so old clients fail immediately -->
-
- <enum name="SetConfig">
- <item name="Success"><value>0</value></item>
- <item name="InvalidConfigTime"><value>1</value></item>
- <item name="InvalidTime"><value>2</value></item>
- <item name="Failed"><value>3</value></item>
- </enum>
-
- <!-- This is for the 1.1 version request. I don't believe we need to specify a 1.0 request
- as few things used randr 1.0. The only difference is the removal of refresh and padding I think.
- BEWARE: the docs lie!
- -->
- <request name="SetScreenConfig" opcode="2">
- <field type="WINDOW" name="window" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="CARD16" name="sizeID" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <field type="CARD16" name="rate" />
- <pad bytes="2" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="new_timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="WINDOW" name="root" />
- <field type="CARD16" name="subpixel_order" enum="SubPixel" />
- <pad bytes="10" />
- </reply>
- </request>
-
- <!-- opcode 3 is obsolete -->
-
- <enum name="NotifyMask" >
- <item name="ScreenChange"> <bit>0</bit></item>
- <!-- new in 1.2 -->
- <item name="CrtcChange"> <bit>1</bit></item>
- <item name="OutputChange"> <bit>2</bit></item>
- <item name="OutputProperty"><bit>3</bit></item>
- </enum>
-
- <request name="SelectInput" opcode="4">
- <field type="WINDOW" name="window" />
- <field type="CARD16" name="enable" mask="NotifyMask" />
- <pad bytes="2" />
- </request>
-
- <!--
- I think this is correct. It works. though I believe nInfo is a bit high...
- -->
- <request name="GetScreenInfo" opcode="5">
- <field type="WINDOW" name="window" />
- <reply>
- <field type="CARD8" name="rotations" mask="Rotation" />
- <field type="WINDOW" name="root" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="CARD16" name="nSizes" />
- <field type="CARD16" name="sizeID" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <field type="CARD16" name="rate" />
- <field type="CARD16" name="nInfo" />
- <pad bytes="2" />
- <list type="ScreenSize" name="sizes">
- <fieldref>nSizes</fieldref>
- </list>
- <list type="RefreshRates" name="rates">
- <op op="-">
- <fieldref>nInfo</fieldref>
- <fieldref>nSizes</fieldref>
- </op>
- </list>
- </reply>
- </request>
-
- <!-- new in version 1.2 -->
-
- <request name="GetScreenSizeRange" opcode="6">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="min_width" />
- <field type="CARD16" name="min_height" />
- <field type="CARD16" name="max_width" />
- <field type="CARD16" name="max_height" />
- <pad bytes="16" />
- </reply>
- </request>
-
- <request name="SetScreenSize" opcode="7">
- <field type="WINDOW" name="window" />
- <field type="CARD16" name="width" /> <!-- pixels -->
- <field type="CARD16" name="height" />
- <field type="CARD32" name="mm_width" /> <!-- millimeters -->
- <field type="CARD32" name="mm_height" />
- </request>
-
- <!-- for GetScreenResources.ModeInfo.ModeFlag -->
- <enum name="ModeFlag">
- <item name="HsyncPositive"> <bit>0</bit></item>
- <item name="HsyncNegative"> <bit>1</bit></item>
- <item name="VsyncPositive"> <bit>2</bit></item>
- <item name="VsyncNegative"> <bit>3</bit></item>
- <item name="Interlace"> <bit>4</bit></item>
- <item name="DoubleScan"> <bit>5</bit></item>
- <item name="Csync"> <bit>6</bit></item>
- <item name="CsyncPositive"> <bit>7</bit></item>
- <item name="CsyncNegative"> <bit>8</bit></item>
- <item name="HskewPresent"> <bit>9</bit></item>
- <item name="Bcast"> <bit>10</bit></item>
- <item name="PixelMultiplex"><bit>11</bit></item>
- <item name="DoubleClock"> <bit>12</bit></item>
- <item name="HalveClock"> <bit>13</bit></item>
- </enum>
-
- <struct name="ModeInfo">
- <field type="CARD32" name="id" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD32" name="dot_clock" />
- <field type="CARD16" name="hsync_start" />
- <field type="CARD16" name="hsync_end" />
- <field type="CARD16" name="htotal" />
- <field type="CARD16" name="hskew" />
- <field type="CARD16" name="vsync_start" />
- <field type="CARD16" name="vsync_end" />
- <field type="CARD16" name="vtotal" />
- <field type="CARD16" name="name_len" />
- <field type="CARD32" name="mode_flags" mask="ModeFlag" />
- <!-- the mode name itself -->
- </struct>
-
- <request name="GetScreenResources" opcode="8">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="CARD16" name="num_crtcs" />
- <field type="CARD16" name="num_outputs" />
- <field type="CARD16" name="num_modes" />
- <field type="CARD16" name="names_len" />
- <pad bytes="8" />
- <list type="CRTC" name="crtcs">
- <fieldref>num_crtcs</fieldref>
- </list>
- <list type="OUTPUT" name="outputs">
- <fieldref>num_outputs</fieldref>
- </list>
- <list type="ModeInfo" name="modes">
- <fieldref>num_modes</fieldref>
- </list>
- <!-- FIXME: this is *not* null separated!
- One must use ModeInfo.name_len from each previous
- ModeInfo to infer the position of the name. -->
- <list type="BYTE" name="names">
- <fieldref>names_len</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- for GetOutputInfo.connection -->
- <enum name="Connection">
- <item name="Connected" />
- <item name="Disconnected" />
- <item name="Unknown" />
- </enum>
-
- <request name="GetOutputInfo" opcode="9">
- <field type="OUTPUT" name="output" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="CRTC" name="crtc" />
- <field type="CARD32" name="mm_width" /> <!-- millimeters -->
- <field type="CARD32" name="mm_height" />
- <field type="CARD8" name="connection" enum="Connection" />
- <field type="CARD8" name="subpixel_order" enum="SubPixel" />
- <field type="CARD16" name="num_crtcs" />
- <field type="CARD16" name="num_modes" />
- <field type="CARD16" name="num_preferred" />
- <field type="CARD16" name="num_clones" />
- <field type="CARD16" name="name_len" />
- <list type="CRTC" name="crtcs">
- <fieldref>num_crtcs</fieldref>
- </list>
- <list type="MODE" name="modes">
- <fieldref>num_modes</fieldref>
- </list>
- <list type="OUTPUT" name="clones">
- <fieldref>num_clones</fieldref>
- </list>
- <list type="BYTE" name="name">
- <fieldref>name_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="ListOutputProperties" opcode="10">
- <field type="OUTPUT" name="output" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_atoms" />
- <pad bytes="22" />
- <list type="ATOM" name="atoms">
- <fieldref>num_atoms</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="QueryOutputProperty" opcode="11">
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="property" />
- <reply>
- <pad bytes="1" />
- <field type="BOOL" name="pending" />
- <field type="BOOL" name="range" />
- <field type="BOOL" name="immutable" />
- <pad bytes="21" />
- <list type="INT32" name="validValues">
- <fieldref>length</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="ConfigureOutputProperty" opcode="12">
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="property" />
- <field type="BOOL" name="pending" />
- <field type="BOOL" name="range" />
- <pad bytes="2" />
- <list type="INT32" name="values" />
- </request>
-
- <request name="ChangeOutputProperty" opcode="13">
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="property" />
- <field type="ATOM" name="type" />
- <field type="CARD8" name="format" />
- <field type="CARD8" name="mode" enum="PropMode" />
- <pad bytes="2" />
- <field type="CARD32" name="num_units" />
- <list type="void" name="data">
- <op op="/">
- <op op="*">
- <fieldref>num_units</fieldref>
- <fieldref>format</fieldref>
- </op>
- <value>8</value>
- </op>
- </list>
- </request>
-
- <request name="DeleteOutputProperty" opcode="14">
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="property" />
- </request>
-
- <!-- NOTE: num_items depends on format (8/16/32) -->
- <request name="GetOutputProperty" opcode="15">
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="property" />
- <field type="ATOM" name="type" altenum="GetPropertyType" />
- <field type="CARD32" name="long_offset" />
- <field type="CARD32" name="long_length" />
- <field type="BOOL" name="delete" />
- <field type="BOOL" name="pending" />
- <pad bytes="2" />
- <reply>
- <field type="CARD8" name="format" />
- <field type="ATOM" name="type" altenum="Atom" />
- <field type="CARD32" name="bytes_after" />
- <field type="CARD32" name="num_items" />
- <pad bytes="12" />
- <list type="BYTE" name="data">
- <!-- n * format / 8 -->
- <op op="*">
- <fieldref>num_items</fieldref>
- <op op="/">
- <fieldref>format</fieldref>
- <value>8</value>
- </op>
- </op>
- </list>
- </reply>
- </request>
-
- <request name="CreateMode" opcode="16">
- <field type="WINDOW" name="window" />
- <field type="ModeInfo" name="mode_info" />
- <list type="char" name="name" />
- <reply>
- <pad bytes="1" />
- <field type="MODE" name="mode" />
- <pad bytes="20" />
- </reply>
- </request>
-
- <request name="DestroyMode" opcode="17">
- <field type="MODE" name="mode" />
- </request>
-
- <request name="AddOutputMode" opcode="18">
- <field type="OUTPUT" name="output" />
- <field type="MODE" name="mode" />
- </request>
-
- <request name="DeleteOutputMode" opcode="19">
- <field type="OUTPUT" name="output" />
- <field type="MODE" name="mode" />
- </request>
-
- <request name="GetCrtcInfo" opcode="20">
- <field type="CRTC" name="crtc" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="MODE" name="mode" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <field type="CARD16" name="rotations" mask="Rotation" />
- <field type="CARD16" name="num_outputs" />
- <field type="CARD16" name="num_possible_outputs" />
- <list type="OUTPUT" name="outputs">
- <fieldref>num_outputs</fieldref>
- </list>
- <list type="OUTPUT" name="possible">
- <fieldref>num_possible_outputs</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetCrtcConfig" opcode="21">
- <field type="CRTC" name="crtc" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="MODE" name="mode" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <pad bytes="2" />
- <list type="OUTPUT" name="outputs" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="timestamp" />
- <pad bytes="20" />
- </reply>
- </request>
-
- <request name="GetCrtcGammaSize" opcode="22">
- <field type="CRTC" name="crtc" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="size" />
- <pad bytes="22" />
- </reply>
- </request>
-
- <request name="GetCrtcGamma" opcode="23">
- <field type="CRTC" name="crtc" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="size" />
- <pad bytes="22" />
- <list type="CARD16" name="red">
- <fieldref>size</fieldref>
- </list>
- <list type="CARD16" name="green">
- <fieldref>size</fieldref>
- </list>
- <list type="CARD16" name="blue">
- <fieldref>size</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetCrtcGamma" opcode="24">
- <field type="CRTC" name="crtc" />
- <field type="CARD16" name="size" />
- <pad bytes="2"/>
- <list type="CARD16" name="red">
- <fieldref>size</fieldref>
- </list>
- <list type="CARD16" name="green">
- <fieldref>size</fieldref>
- </list>
- <list type="CARD16" name="blue">
- <fieldref>size</fieldref>
- </list>
- </request>
-
- <!-- new in 1.3 -->
-
- <request name="GetScreenResourcesCurrent" opcode="25">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="CARD16" name="num_crtcs" />
- <field type="CARD16" name="num_outputs" />
- <field type="CARD16" name="num_modes" />
- <field type="CARD16" name="names_len" />
- <pad bytes="8" />
- <list type="CRTC" name="crtcs">
- <fieldref>num_crtcs</fieldref>
- </list>
- <list type="OUTPUT" name="outputs">
- <fieldref>num_outputs</fieldref>
- </list>
- <list type="ModeInfo" name="modes">
- <fieldref>num_modes</fieldref>
- </list>
- <!-- FIXME: this is *not* null separated!
- One must use ModeInfo.name_len from each previous
- ModeInfo to infer the position of the name. -->
- <list type="BYTE" name="names">
- <fieldref>names_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetCrtcTransform" opcode="26">
- <field type="CRTC" name="crtc" />
- <field type="TRANSFORM" name="transform" />
- <field type="CARD16" name="filter_len" />
- <pad bytes="2" />
- <list type="char" name="filter_name">
- <fieldref>filter_len</fieldref>
- </list>
- <list type="FIXED" name="filter_params" />
- </request>
-
- <request name="GetCrtcTransform" opcode="27">
- <field type="CRTC" name="crtc" />
- <reply>
- <pad bytes="1" />
- <field type="TRANSFORM" name="pending_transform" />
- <field type="BOOL" name="has_transforms" />
- <pad bytes="3" />
- <field type="TRANSFORM" name="current_transform" />
- <pad bytes="4" />
- <field type="CARD16" name="pending_len" />
- <field type="CARD16" name="pending_nparams" />
- <field type="CARD16" name="current_len" />
- <field type="CARD16" name="current_nparams" />
- <list type="char" name="pending_filter_name" >
- <fieldref>pending_len</fieldref>
- </list>
- <list type="FIXED" name="pending_params" >
- <fieldref>pending_nparams</fieldref>
- </list>
- <list type="char" name="current_filter_name" >
- <fieldref>current_len</fieldref>
- </list>
- <list type="FIXED" name="current_params" >
- <fieldref>current_nparams</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetPanning" opcode="28">
- <field type="CRTC" name="crtc" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="CARD16" name="left" />
- <field type="CARD16" name="top" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="track_left" />
- <field type="CARD16" name="track_top" />
- <field type="CARD16" name="track_width" />
- <field type="CARD16" name="track_height" />
- <field type="INT16" name="border_left" />
- <field type="INT16" name="border_top" />
- <field type="INT16" name="border_right" />
- <field type="INT16" name="border_bottom" />
- </reply>
- </request>
-
- <request name="SetPanning" opcode="29">
- <field type="CRTC" name="crtc" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="CARD16" name="left" />
- <field type="CARD16" name="top" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="track_left" />
- <field type="CARD16" name="track_top" />
- <field type="CARD16" name="track_width" />
- <field type="CARD16" name="track_height" />
- <field type="INT16" name="border_left" />
- <field type="INT16" name="border_top" />
- <field type="INT16" name="border_right" />
- <field type="INT16" name="border_bottom" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="timestamp" />
- </reply>
- </request>
-
- <request name="SetOutputPrimary" opcode="30">
- <field type="WINDOW" name="window" />
- <field type="OUTPUT" name="output" />
- </request>
-
- <request name="GetOutputPrimary" opcode="31">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="OUTPUT" name="output" />
- </reply>
- </request>
-
- <!-- Events -->
-
- <event name="ScreenChangeNotify" number="0">
- <field type="CARD8" name="rotation" mask="Rotation" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="WINDOW" name="root" />
- <field type="WINDOW" name="request_window" />
- <field type="CARD16" name="sizeID" />
- <field type="CARD16" name="subpixel_order" enum="SubPixel" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="mwidth" />
- <field type="CARD16" name="mheight" />
- </event>
-
- <!-- New in version 1.2 -->
-
- <!-- subcode -->
- <enum name="Notify" >
- <item name="CrtcChange"> <value>0</value></item>
- <item name="OutputChange"> <value>1</value></item>
- <item name="OutputProperty"><value>2</value></item>
- </enum>
-
- <struct name="CrtcChange">
- <field type="TIMESTAMP" name="timestamp" />
- <field type="WINDOW" name="window" />
- <field type="CRTC" name="crtc" />
- <field type="MODE" name="mode" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <pad bytes="2" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- </struct>
-
- <struct name="OutputChange">
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="WINDOW" name="window" />
- <field type="OUTPUT" name="output" />
- <field type="CRTC" name="crtc" />
- <field type="MODE" name="mode" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <field type="CARD8" name="connection" enum="Connection" />
- <field type="CARD8" name="subpixel_order" enum="SubPixel" />
- </struct>
-
- <struct name="OutputProperty">
- <field type="WINDOW" name="window" />
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="atom" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="CARD8" name="status" enum="Property" />
- <pad bytes="11" />
- </struct>
-
- <union name="NotifyData">
- <field type="CrtcChange" name="cc" />
- <field type="OutputChange" name="oc" />
- <field type="OutputProperty" name="op" />
- </union>
-
- <event name="Notify" number="1">
- <field type="CARD8" name="subCode" enum="Notify" />
- <field type="NotifyData" name="u" />
- </event>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb, Ian Osgood
+All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="randr" extension-xname="RANDR" extension-name="RandR"
+ major-version="1" minor-version="3">
+
+ <import>xproto</import>
+ <import>render</import>
+
+ <!-- XIDs -->
+ <xidtype name="MODE" />
+ <xidtype name="CRTC" />
+ <xidtype name="OUTPUT" />
+
+ <!-- Errors -->
+
+ <error name="BadOutput" number="0" />
+ <error name="BadCrtc" number="1" />
+ <error name="BadMode" number="2" />
+
+ <!-- Requests -->
+
+ <enum name="Rotation">
+ <item name="Rotate_0"> <bit>0</bit></item>
+ <item name="Rotate_90"> <bit>1</bit></item>
+ <item name="Rotate_180"><bit>2</bit></item>
+ <item name="Rotate_270"><bit>3</bit></item>
+ <item name="Reflect_X"> <bit>4</bit></item>
+ <item name="Reflect_Y"> <bit>5</bit></item>
+ </enum>
+
+ <struct name="ScreenSize">
+ <field type="CARD16" name="width" /> <!-- pixels -->
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="mwidth" /> <!-- millimeters -->
+ <field type="CARD16" name="mheight" />
+ </struct>
+
+ <struct name="RefreshRates">
+ <field type="CARD16" name="nRates" />
+ <list type="CARD16" name="rates">
+ <fieldref>nRates</fieldref>
+ </list>
+ </struct>
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <pad bytes="16" />
+ </reply>
+ </request>
+
+ <!-- Skip obsolete opcode 1 so old clients fail immediately -->
+
+ <enum name="SetConfig">
+ <item name="Success"><value>0</value></item>
+ <item name="InvalidConfigTime"><value>1</value></item>
+ <item name="InvalidTime"><value>2</value></item>
+ <item name="Failed"><value>3</value></item>
+ </enum>
+
+ <!-- This is for the 1.1 version request. I don't believe we need to specify a 1.0 request
+ as few things used randr 1.0. The only difference is the removal of refresh and padding I think.
+ BEWARE: the docs lie!
+ -->
+ <request name="SetScreenConfig" opcode="2">
+ <field type="WINDOW" name="window" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="CARD16" name="sizeID" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <field type="CARD16" name="rate" />
+ <pad bytes="2" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="new_timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="WINDOW" name="root" />
+ <field type="CARD16" name="subpixel_order" enum="SubPixel" />
+ <pad bytes="10" />
+ </reply>
+ </request>
+
+ <!-- opcode 3 is obsolete -->
+
+ <enum name="NotifyMask" >
+ <item name="ScreenChange"> <bit>0</bit></item>
+ <!-- new in 1.2 -->
+ <item name="CrtcChange"> <bit>1</bit></item>
+ <item name="OutputChange"> <bit>2</bit></item>
+ <item name="OutputProperty"><bit>3</bit></item>
+ </enum>
+
+ <request name="SelectInput" opcode="4">
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="enable" mask="NotifyMask" />
+ <pad bytes="2" />
+ </request>
+
+ <!--
+ I think this is correct. It works. though I believe nInfo is a bit high...
+ -->
+ <request name="GetScreenInfo" opcode="5">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <field type="CARD8" name="rotations" mask="Rotation" />
+ <field type="WINDOW" name="root" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="CARD16" name="nSizes" />
+ <field type="CARD16" name="sizeID" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <field type="CARD16" name="rate" />
+ <field type="CARD16" name="nInfo" />
+ <pad bytes="2" />
+ <list type="ScreenSize" name="sizes">
+ <fieldref>nSizes</fieldref>
+ </list>
+ <list type="RefreshRates" name="rates">
+ <op op="-">
+ <fieldref>nInfo</fieldref>
+ <fieldref>nSizes</fieldref>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <!-- new in version 1.2 -->
+
+ <request name="GetScreenSizeRange" opcode="6">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="min_width" />
+ <field type="CARD16" name="min_height" />
+ <field type="CARD16" name="max_width" />
+ <field type="CARD16" name="max_height" />
+ <pad bytes="16" />
+ </reply>
+ </request>
+
+ <request name="SetScreenSize" opcode="7">
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="width" /> <!-- pixels -->
+ <field type="CARD16" name="height" />
+ <field type="CARD32" name="mm_width" /> <!-- millimeters -->
+ <field type="CARD32" name="mm_height" />
+ </request>
+
+ <!-- for GetScreenResources.ModeInfo.ModeFlag -->
+ <enum name="ModeFlag">
+ <item name="HsyncPositive"> <bit>0</bit></item>
+ <item name="HsyncNegative"> <bit>1</bit></item>
+ <item name="VsyncPositive"> <bit>2</bit></item>
+ <item name="VsyncNegative"> <bit>3</bit></item>
+ <item name="Interlace"> <bit>4</bit></item>
+ <item name="DoubleScan"> <bit>5</bit></item>
+ <item name="Csync"> <bit>6</bit></item>
+ <item name="CsyncPositive"> <bit>7</bit></item>
+ <item name="CsyncNegative"> <bit>8</bit></item>
+ <item name="HskewPresent"> <bit>9</bit></item>
+ <item name="Bcast"> <bit>10</bit></item>
+ <item name="PixelMultiplex"><bit>11</bit></item>
+ <item name="DoubleClock"> <bit>12</bit></item>
+ <item name="HalveClock"> <bit>13</bit></item>
+ </enum>
+
+ <struct name="ModeInfo">
+ <field type="CARD32" name="id" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD32" name="dot_clock" />
+ <field type="CARD16" name="hsync_start" />
+ <field type="CARD16" name="hsync_end" />
+ <field type="CARD16" name="htotal" />
+ <field type="CARD16" name="hskew" />
+ <field type="CARD16" name="vsync_start" />
+ <field type="CARD16" name="vsync_end" />
+ <field type="CARD16" name="vtotal" />
+ <field type="CARD16" name="name_len" />
+ <field type="CARD32" name="mode_flags" mask="ModeFlag" />
+ <!-- the mode name itself -->
+ </struct>
+
+ <request name="GetScreenResources" opcode="8">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="CARD16" name="num_crtcs" />
+ <field type="CARD16" name="num_outputs" />
+ <field type="CARD16" name="num_modes" />
+ <field type="CARD16" name="names_len" />
+ <pad bytes="8" />
+ <list type="CRTC" name="crtcs">
+ <fieldref>num_crtcs</fieldref>
+ </list>
+ <list type="OUTPUT" name="outputs">
+ <fieldref>num_outputs</fieldref>
+ </list>
+ <list type="ModeInfo" name="modes">
+ <fieldref>num_modes</fieldref>
+ </list>
+ <!-- FIXME: this is *not* null separated!
+ One must use ModeInfo.name_len from each previous
+ ModeInfo to infer the position of the name. -->
+ <list type="BYTE" name="names">
+ <fieldref>names_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- for GetOutputInfo.connection -->
+ <enum name="Connection">
+ <item name="Connected" />
+ <item name="Disconnected" />
+ <item name="Unknown" />
+ </enum>
+
+ <request name="GetOutputInfo" opcode="9">
+ <field type="OUTPUT" name="output" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="CRTC" name="crtc" />
+ <field type="CARD32" name="mm_width" /> <!-- millimeters -->
+ <field type="CARD32" name="mm_height" />
+ <field type="CARD8" name="connection" enum="Connection" />
+ <field type="CARD8" name="subpixel_order" enum="SubPixel" />
+ <field type="CARD16" name="num_crtcs" />
+ <field type="CARD16" name="num_modes" />
+ <field type="CARD16" name="num_preferred" />
+ <field type="CARD16" name="num_clones" />
+ <field type="CARD16" name="name_len" />
+ <list type="CRTC" name="crtcs">
+ <fieldref>num_crtcs</fieldref>
+ </list>
+ <list type="MODE" name="modes">
+ <fieldref>num_modes</fieldref>
+ </list>
+ <list type="OUTPUT" name="clones">
+ <fieldref>num_clones</fieldref>
+ </list>
+ <list type="BYTE" name="name">
+ <fieldref>name_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ListOutputProperties" opcode="10">
+ <field type="OUTPUT" name="output" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_atoms" />
+ <pad bytes="22" />
+ <list type="ATOM" name="atoms">
+ <fieldref>num_atoms</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryOutputProperty" opcode="11">
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="property" />
+ <reply>
+ <pad bytes="1" />
+ <field type="BOOL" name="pending" />
+ <field type="BOOL" name="range" />
+ <field type="BOOL" name="immutable" />
+ <pad bytes="21" />
+ <list type="INT32" name="validValues">
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ConfigureOutputProperty" opcode="12">
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="property" />
+ <field type="BOOL" name="pending" />
+ <field type="BOOL" name="range" />
+ <pad bytes="2" />
+ <list type="INT32" name="values" />
+ </request>
+
+ <request name="ChangeOutputProperty" opcode="13">
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="property" />
+ <field type="ATOM" name="type" />
+ <field type="CARD8" name="format" />
+ <field type="CARD8" name="mode" enum="PropMode" />
+ <pad bytes="2" />
+ <field type="CARD32" name="num_units" />
+ <list type="void" name="data">
+ <op op="/">
+ <op op="*">
+ <fieldref>num_units</fieldref>
+ <fieldref>format</fieldref>
+ </op>
+ <value>8</value>
+ </op>
+ </list>
+ </request>
+
+ <request name="DeleteOutputProperty" opcode="14">
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="property" />
+ </request>
+
+ <!-- NOTE: num_items depends on format (8/16/32) -->
+ <request name="GetOutputProperty" opcode="15">
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="property" />
+ <field type="ATOM" name="type" altenum="GetPropertyType" />
+ <field type="CARD32" name="long_offset" />
+ <field type="CARD32" name="long_length" />
+ <field type="BOOL" name="delete" />
+ <field type="BOOL" name="pending" />
+ <pad bytes="2" />
+ <reply>
+ <field type="CARD8" name="format" />
+ <field type="ATOM" name="type" altenum="Atom" />
+ <field type="CARD32" name="bytes_after" />
+ <field type="CARD32" name="num_items" />
+ <pad bytes="12" />
+ <list type="BYTE" name="data">
+ <!-- n * format / 8 -->
+ <op op="*">
+ <fieldref>num_items</fieldref>
+ <op op="/">
+ <fieldref>format</fieldref>
+ <value>8</value>
+ </op>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <request name="CreateMode" opcode="16">
+ <field type="WINDOW" name="window" />
+ <field type="ModeInfo" name="mode_info" />
+ <list type="char" name="name" />
+ <reply>
+ <pad bytes="1" />
+ <field type="MODE" name="mode" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <request name="DestroyMode" opcode="17">
+ <field type="MODE" name="mode" />
+ </request>
+
+ <request name="AddOutputMode" opcode="18">
+ <field type="OUTPUT" name="output" />
+ <field type="MODE" name="mode" />
+ </request>
+
+ <request name="DeleteOutputMode" opcode="19">
+ <field type="OUTPUT" name="output" />
+ <field type="MODE" name="mode" />
+ </request>
+
+ <request name="GetCrtcInfo" opcode="20">
+ <field type="CRTC" name="crtc" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <field type="CARD16" name="rotations" mask="Rotation" />
+ <field type="CARD16" name="num_outputs" />
+ <field type="CARD16" name="num_possible_outputs" />
+ <list type="OUTPUT" name="outputs">
+ <fieldref>num_outputs</fieldref>
+ </list>
+ <list type="OUTPUT" name="possible">
+ <fieldref>num_possible_outputs</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetCrtcConfig" opcode="21">
+ <field type="CRTC" name="crtc" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <pad bytes="2" />
+ <list type="OUTPUT" name="outputs" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <request name="GetCrtcGammaSize" opcode="22">
+ <field type="CRTC" name="crtc" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="size" />
+ <pad bytes="22" />
+ </reply>
+ </request>
+
+ <request name="GetCrtcGamma" opcode="23">
+ <field type="CRTC" name="crtc" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="size" />
+ <pad bytes="22" />
+ <list type="CARD16" name="red">
+ <fieldref>size</fieldref>
+ </list>
+ <list type="CARD16" name="green">
+ <fieldref>size</fieldref>
+ </list>
+ <list type="CARD16" name="blue">
+ <fieldref>size</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetCrtcGamma" opcode="24">
+ <field type="CRTC" name="crtc" />
+ <field type="CARD16" name="size" />
+ <pad bytes="2"/>
+ <list type="CARD16" name="red">
+ <fieldref>size</fieldref>
+ </list>
+ <list type="CARD16" name="green">
+ <fieldref>size</fieldref>
+ </list>
+ <list type="CARD16" name="blue">
+ <fieldref>size</fieldref>
+ </list>
+ </request>
+
+ <!-- new in 1.3 -->
+
+ <request name="GetScreenResourcesCurrent" opcode="25">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="CARD16" name="num_crtcs" />
+ <field type="CARD16" name="num_outputs" />
+ <field type="CARD16" name="num_modes" />
+ <field type="CARD16" name="names_len" />
+ <pad bytes="8" />
+ <list type="CRTC" name="crtcs">
+ <fieldref>num_crtcs</fieldref>
+ </list>
+ <list type="OUTPUT" name="outputs">
+ <fieldref>num_outputs</fieldref>
+ </list>
+ <list type="ModeInfo" name="modes">
+ <fieldref>num_modes</fieldref>
+ </list>
+ <!-- FIXME: this is *not* null separated!
+ One must use ModeInfo.name_len from each previous
+ ModeInfo to infer the position of the name. -->
+ <list type="BYTE" name="names">
+ <fieldref>names_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetCrtcTransform" opcode="26">
+ <field type="CRTC" name="crtc" />
+ <field type="TRANSFORM" name="transform" />
+ <field type="CARD16" name="filter_len" />
+ <pad bytes="2" />
+ <list type="char" name="filter_name">
+ <fieldref>filter_len</fieldref>
+ </list>
+ <list type="FIXED" name="filter_params" />
+ </request>
+
+ <request name="GetCrtcTransform" opcode="27">
+ <field type="CRTC" name="crtc" />
+ <reply>
+ <pad bytes="1" />
+ <field type="TRANSFORM" name="pending_transform" />
+ <field type="BOOL" name="has_transforms" />
+ <pad bytes="3" />
+ <field type="TRANSFORM" name="current_transform" />
+ <pad bytes="4" />
+ <field type="CARD16" name="pending_len" />
+ <field type="CARD16" name="pending_nparams" />
+ <field type="CARD16" name="current_len" />
+ <field type="CARD16" name="current_nparams" />
+ <list type="char" name="pending_filter_name" >
+ <fieldref>pending_len</fieldref>
+ </list>
+ <list type="FIXED" name="pending_params" >
+ <fieldref>pending_nparams</fieldref>
+ </list>
+ <list type="char" name="current_filter_name" >
+ <fieldref>current_len</fieldref>
+ </list>
+ <list type="FIXED" name="current_params" >
+ <fieldref>current_nparams</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetPanning" opcode="28">
+ <field type="CRTC" name="crtc" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="CARD16" name="left" />
+ <field type="CARD16" name="top" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="track_left" />
+ <field type="CARD16" name="track_top" />
+ <field type="CARD16" name="track_width" />
+ <field type="CARD16" name="track_height" />
+ <field type="INT16" name="border_left" />
+ <field type="INT16" name="border_top" />
+ <field type="INT16" name="border_right" />
+ <field type="INT16" name="border_bottom" />
+ </reply>
+ </request>
+
+ <request name="SetPanning" opcode="29">
+ <field type="CRTC" name="crtc" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="CARD16" name="left" />
+ <field type="CARD16" name="top" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="track_left" />
+ <field type="CARD16" name="track_top" />
+ <field type="CARD16" name="track_width" />
+ <field type="CARD16" name="track_height" />
+ <field type="INT16" name="border_left" />
+ <field type="INT16" name="border_top" />
+ <field type="INT16" name="border_right" />
+ <field type="INT16" name="border_bottom" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="timestamp" />
+ </reply>
+ </request>
+
+ <request name="SetOutputPrimary" opcode="30">
+ <field type="WINDOW" name="window" />
+ <field type="OUTPUT" name="output" />
+ </request>
+
+ <request name="GetOutputPrimary" opcode="31">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="OUTPUT" name="output" />
+ </reply>
+ </request>
+
+ <!-- Events -->
+
+ <event name="ScreenChangeNotify" number="0">
+ <field type="CARD8" name="rotation" mask="Rotation" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="request_window" />
+ <field type="CARD16" name="sizeID" />
+ <field type="CARD16" name="subpixel_order" enum="SubPixel" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="mwidth" />
+ <field type="CARD16" name="mheight" />
+ </event>
+
+ <!-- New in version 1.2 -->
+
+ <!-- subcode -->
+ <enum name="Notify" >
+ <item name="CrtcChange"> <value>0</value></item>
+ <item name="OutputChange"> <value>1</value></item>
+ <item name="OutputProperty"><value>2</value></item>
+ </enum>
+
+ <struct name="CrtcChange">
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="WINDOW" name="window" />
+ <field type="CRTC" name="crtc" />
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <pad bytes="2" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ </struct>
+
+ <struct name="OutputChange">
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="WINDOW" name="window" />
+ <field type="OUTPUT" name="output" />
+ <field type="CRTC" name="crtc" />
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <field type="CARD8" name="connection" enum="Connection" />
+ <field type="CARD8" name="subpixel_order" enum="SubPixel" />
+ </struct>
+
+ <struct name="OutputProperty">
+ <field type="WINDOW" name="window" />
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="atom" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="CARD8" name="status" enum="Property" />
+ <pad bytes="11" />
+ </struct>
+
+ <union name="NotifyData">
+ <field type="CrtcChange" name="cc" />
+ <field type="OutputChange" name="oc" />
+ <field type="OutputProperty" name="op" />
+ </union>
+
+ <event name="Notify" number="1">
+ <field type="CARD8" name="subCode" enum="Notify" />
+ <field type="NotifyData" name="u" />
+ </event>
+</xcb>
diff --git a/libxcb/xcb-proto/src/record.xml b/libxcb/xcb-proto/src/record.xml
index 74c16fe5b..11fb9fc6a 100644
--- a/libxcb/xcb-proto/src/record.xml
+++ b/libxcb/xcb-proto/src/record.xml
@@ -1,178 +1,178 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2005 Jeremy Kolb.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person ob/Sintaining 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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-
-<xcb header="record" extension-xname="RECORD" extension-name="Record"
- major-version="1" minor-version="13">
-
- <!-- Types -->
- <xidtype name="CONTEXT" />
-
- <struct name="Range8">
- <field type="CARD8" name="first" />
- <field type="CARD8" name="last" />
- </struct>
-
- <struct name="Range16">
- <field type="CARD16" name="first" />
- <field type="CARD16" name="last" />
- </struct>
-
- <struct name="ExtRange">
- <field type="Range8" name="major" />
- <field type="Range16" name="minor" />
- </struct>
-
- <struct name="Range">
- <field type="Range8" name="core_requests" />
- <field type="Range8" name="core_replies" />
- <field type="ExtRange" name="ext_requests" />
- <field type="ExtRange" name="ext_replies" />
- <field type="Range8" name="delivered_events" />
- <field type="Range8" name="device_events" />
- <field type="Range8" name="errors" />
- <field type="BOOL" name="client_started" />
- <field type="BOOL" name="client_died" />
- </struct>
-
- <typedef oldname="CARD8" newname="ElementHeader" />
- <enum name="HType">
- <item name="FromServerTime"><bit>0</bit></item>
- <item name="FromClientTime"><bit>1</bit></item>
- <item name="FromClientSequence"><bit>2</bit></item>
- </enum>
-
- <typedef oldname="CARD32" newname="ClientSpec" />
- <enum name="CS">
- <item name="CurrentClients"><value>1</value></item>
- <item name="FutureClients"><value>2</value></item>
- <item name="AllClients"><value>3</value></item>
- </enum>
-
- <struct name="ClientInfo">
- <field type="ClientSpec" name="client_resource" />
- <field type="CARD32" name="num_ranges" />
- <list type="Range" name="ranges">
- <fieldref>num_ranges</fieldref>
- </list>
- </struct>
-
- <!-- Errors -->
- <error name="BadContext" number="0">
- <field type="CARD32" name="invalid_record" />
- </error>
-
- <!-- Requests -->
- <request name="QueryVersion" opcode="0">
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- <reply>
- <pad bytes="1"/>
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- </reply>
- </request>
-
- <request name="CreateContext" opcode="1">
- <field type="record:CONTEXT" name="context" />
- <field type="ElementHeader" name="element_header" />
- <pad bytes="3" />
- <field type="CARD32" name="num_client_specs" />
- <field type="CARD32" name="num_ranges" />
- <list type="ClientSpec" name="client_specs">
- <fieldref>num_client_specs</fieldref>
- </list>
- <list type="Range" name="ranges">
- <fieldref>num_ranges</fieldref>
- </list>
- </request>
-
- <request name="RegisterClients" opcode="2">
- <field type="record:CONTEXT" name="context" />
- <field type="ElementHeader" name="element_header" />
- <pad bytes="3" />
- <field type="CARD32" name="num_client_specs" />
- <field type="CARD32" name="num_ranges" />
- <list type="ClientSpec" name="client_specs">
- <fieldref>num_client_specs</fieldref>
- </list>
- <list type="Range" name="ranges">
- <fieldref>num_ranges</fieldref>
- </list>
- </request>
-
- <request name="UnregisterClients" opcode="3">
- <field type="record:CONTEXT" name="context" />
- <field type="CARD32" name="num_client_specs" />
- <list type="ClientSpec" name="client_specs">
- <fieldref>num_client_specs</fieldref>
- </list>
- </request>
-
- <request name="GetContext" opcode="4">
- <field type="record:CONTEXT" name="context" />
- <reply>
- <field type="BOOL" name="enabled" />
- <field type="ElementHeader" name="element_header" />
- <pad bytes="3" />
- <field type="CARD32" name="num_intercepted_clients" />
- <pad bytes="16" />
- <list type="ClientInfo" name="intercepted_clients">
- <fieldref>num_intercepted_clients</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="EnableContext" opcode="5">
- <field type="record:CONTEXT" name="context" />
- <reply>
- <field type="CARD8" name="category" />
- <field type="ElementHeader" name="element_header" />
- <field type="BOOL" name="client_swapped" />
- <pad bytes="2" />
- <field type="CARD32" name="xid_base" />
- <field type="CARD32" name="server_time" />
- <field type="CARD32" name="rec_sequence_num" />
- <pad bytes="8" />
- <list type="BYTE" name="data">
- <op op="*">
- <fieldref>length</fieldref>
- <value>4</value>
- </op>
- </list>
- </reply>
- </request>
-
- <request name="DisableContext" opcode="6">
- <field type="record:CONTEXT" name="context" />
- </request>
-
- <request name="FreeContext" opcode="7">
- <field type="record:CONTEXT" name="context" />
- </request>
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2005 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining 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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="record" extension-xname="RECORD" extension-name="Record"
+ major-version="1" minor-version="13">
+
+ <!-- Types -->
+ <xidtype name="CONTEXT" />
+
+ <struct name="Range8">
+ <field type="CARD8" name="first" />
+ <field type="CARD8" name="last" />
+ </struct>
+
+ <struct name="Range16">
+ <field type="CARD16" name="first" />
+ <field type="CARD16" name="last" />
+ </struct>
+
+ <struct name="ExtRange">
+ <field type="Range8" name="major" />
+ <field type="Range16" name="minor" />
+ </struct>
+
+ <struct name="Range">
+ <field type="Range8" name="core_requests" />
+ <field type="Range8" name="core_replies" />
+ <field type="ExtRange" name="ext_requests" />
+ <field type="ExtRange" name="ext_replies" />
+ <field type="Range8" name="delivered_events" />
+ <field type="Range8" name="device_events" />
+ <field type="Range8" name="errors" />
+ <field type="BOOL" name="client_started" />
+ <field type="BOOL" name="client_died" />
+ </struct>
+
+ <typedef oldname="CARD8" newname="ElementHeader" />
+ <enum name="HType">
+ <item name="FromServerTime"><bit>0</bit></item>
+ <item name="FromClientTime"><bit>1</bit></item>
+ <item name="FromClientSequence"><bit>2</bit></item>
+ </enum>
+
+ <typedef oldname="CARD32" newname="ClientSpec" />
+ <enum name="CS">
+ <item name="CurrentClients"><value>1</value></item>
+ <item name="FutureClients"><value>2</value></item>
+ <item name="AllClients"><value>3</value></item>
+ </enum>
+
+ <struct name="ClientInfo">
+ <field type="ClientSpec" name="client_resource" />
+ <field type="CARD32" name="num_ranges" />
+ <list type="Range" name="ranges">
+ <fieldref>num_ranges</fieldref>
+ </list>
+ </struct>
+
+ <!-- Errors -->
+ <error name="BadContext" number="0">
+ <field type="CARD32" name="invalid_record" />
+ </error>
+
+ <!-- Requests -->
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ <reply>
+ <pad bytes="1"/>
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ </reply>
+ </request>
+
+ <request name="CreateContext" opcode="1">
+ <field type="record:CONTEXT" name="context" />
+ <field type="ElementHeader" name="element_header" />
+ <pad bytes="3" />
+ <field type="CARD32" name="num_client_specs" />
+ <field type="CARD32" name="num_ranges" />
+ <list type="ClientSpec" name="client_specs">
+ <fieldref>num_client_specs</fieldref>
+ </list>
+ <list type="Range" name="ranges">
+ <fieldref>num_ranges</fieldref>
+ </list>
+ </request>
+
+ <request name="RegisterClients" opcode="2">
+ <field type="record:CONTEXT" name="context" />
+ <field type="ElementHeader" name="element_header" />
+ <pad bytes="3" />
+ <field type="CARD32" name="num_client_specs" />
+ <field type="CARD32" name="num_ranges" />
+ <list type="ClientSpec" name="client_specs">
+ <fieldref>num_client_specs</fieldref>
+ </list>
+ <list type="Range" name="ranges">
+ <fieldref>num_ranges</fieldref>
+ </list>
+ </request>
+
+ <request name="UnregisterClients" opcode="3">
+ <field type="record:CONTEXT" name="context" />
+ <field type="CARD32" name="num_client_specs" />
+ <list type="ClientSpec" name="client_specs">
+ <fieldref>num_client_specs</fieldref>
+ </list>
+ </request>
+
+ <request name="GetContext" opcode="4">
+ <field type="record:CONTEXT" name="context" />
+ <reply>
+ <field type="BOOL" name="enabled" />
+ <field type="ElementHeader" name="element_header" />
+ <pad bytes="3" />
+ <field type="CARD32" name="num_intercepted_clients" />
+ <pad bytes="16" />
+ <list type="ClientInfo" name="intercepted_clients">
+ <fieldref>num_intercepted_clients</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="EnableContext" opcode="5">
+ <field type="record:CONTEXT" name="context" />
+ <reply>
+ <field type="CARD8" name="category" />
+ <field type="ElementHeader" name="element_header" />
+ <field type="BOOL" name="client_swapped" />
+ <pad bytes="2" />
+ <field type="CARD32" name="xid_base" />
+ <field type="CARD32" name="server_time" />
+ <field type="CARD32" name="rec_sequence_num" />
+ <pad bytes="8" />
+ <list type="BYTE" name="data">
+ <op op="*">
+ <fieldref>length</fieldref>
+ <value>4</value>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <request name="DisableContext" opcode="6">
+ <field type="record:CONTEXT" name="context" />
+ </request>
+
+ <request name="FreeContext" opcode="7">
+ <field type="record:CONTEXT" name="context" />
+ </request>
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/res.xml b/libxcb/xcb-proto/src/res.xml
index d758d893b..fed2cf712 100644
--- a/libxcb/xcb-proto/src/res.xml
+++ b/libxcb/xcb-proto/src/res.xml
@@ -1,83 +1,83 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Jeremy Kolb
-All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<xcb header="res" extension-xname="X-Resource" extension-name="Res"
- major-version="1" minor-version="0">
- <import>xproto</import>
-
- <struct name="Client">
- <field type="CARD32" name="resource_base" />
- <field type="CARD32" name="resource_mask" />
- </struct>
-
- <struct name="Type">
- <field type="ATOM" name="resource_type" />
- <field type="CARD32" name="count" />
- </struct>
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD8" name="client_major" />
- <field type="CARD8" name="client_minor" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major" />
- <field type="CARD16" name="server_minor" />
- </reply>
- </request>
-
- <request name="QueryClients" opcode="1">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_clients" />
- <pad bytes="20" />
- <list type="Client" name="clients">
- <fieldref>num_clients</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="QueryClientResources" opcode="2">
- <field type="CARD32" name="xid" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_types" />
- <pad bytes="20" />
- <list type="Type" name="types">
- <fieldref>num_types</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="QueryClientPixmapBytes" opcode="3">
- <field type="CARD32" name="xid" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="bytes" />
- <field type="CARD32" name="bytes_overflow" />
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb
+All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="res" extension-xname="X-Resource" extension-name="Res"
+ major-version="1" minor-version="0">
+ <import>xproto</import>
+
+ <struct name="Client">
+ <field type="CARD32" name="resource_base" />
+ <field type="CARD32" name="resource_mask" />
+ </struct>
+
+ <struct name="Type">
+ <field type="ATOM" name="resource_type" />
+ <field type="CARD32" name="count" />
+ </struct>
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD8" name="client_major" />
+ <field type="CARD8" name="client_minor" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major" />
+ <field type="CARD16" name="server_minor" />
+ </reply>
+ </request>
+
+ <request name="QueryClients" opcode="1">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_clients" />
+ <pad bytes="20" />
+ <list type="Client" name="clients">
+ <fieldref>num_clients</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryClientResources" opcode="2">
+ <field type="CARD32" name="xid" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_types" />
+ <pad bytes="20" />
+ <list type="Type" name="types">
+ <fieldref>num_types</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryClientPixmapBytes" opcode="3">
+ <field type="CARD32" name="xid" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="bytes" />
+ <field type="CARD32" name="bytes_overflow" />
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/screensaver.xml b/libxcb/xcb-proto/src/screensaver.xml
index 9c7bccb08..52af00427 100644
--- a/libxcb/xcb-proto/src/screensaver.xml
+++ b/libxcb/xcb-proto/src/screensaver.xml
@@ -1,128 +1,128 @@
-<!--
-
-Copyright (C) 2005 Vincent Torri.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person ob/Sintaining 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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<!--
-Screen Saver Extension to the X Protocol
-Draft Standard Version 1.1
--->
-<xcb header="screensaver" extension-xname="MIT-SCREEN-SAVER" extension-name="ScreenSaver" major-version="1" minor-version="1">
-
- <!-- Types -->
-
- <import>xproto</import>
-
- <enum name="Kind">
- <item name="Blanked" />
- <item name="Internal" />
- <item name="External" />
- </enum>
-
- <enum name="Event">
- <item name="NotifyMask"><bit>0</bit></item>
- <item name="CycleMask"> <bit>1</bit></item>
- </enum>
-
- <enum name="State">
- <item name="Off" />
- <item name="On" />
- <item name="Cycle" />
- <item name="Disabled" />
- </enum>
-
- <!-- Errors -->
- <!-- Requests -->
- <request name="QueryVersion" opcode="0">
- <field type="CARD8" name="client_major_version"/>
- <field type="CARD8" name="client_minor_version"/>
- <pad bytes="2"/>
- <reply>
- <pad bytes="1"/>
- <field type="CARD16" name="server_major_version"/>
- <field type="CARD16" name="server_minor_version"/>
- <pad bytes="20"/>
- </reply>
- </request>
-
- <request name="QueryInfo" opcode="1">
- <field type="DRAWABLE" name="drawable"/>
- <reply>
- <field type="CARD8" name="state"/>
- <field type="WINDOW" name="saver_window"/>
- <field type="CARD32" name="ms_until_server"/>
- <field type="CARD32" name="ms_since_user_input"/>
- <field type="CARD32" name="event_mask" />
- <field type="BYTE" name="kind"/> <!-- enum Kind -->
- <pad bytes="7"/>
- </reply>
- </request>
-
- <request name="SelectInput" opcode="2">
- <field type="DRAWABLE" name="drawable"/>
- <field type="CARD32" name="event_mask" /> <!-- enum Event -->
- </request>
-
- <request name="SetAttributes" opcode="3">
- <field type="DRAWABLE" name="drawable"/>
- <field type="INT16" name="x"/>
- <field type="INT16" name="y"/>
- <field type="CARD16" name="width"/>
- <field type="CARD16" name="height"/>
- <field type="CARD16" name="border_width"/>
- <field type="BYTE" name="class"/> <!-- enum XCBWindowClass -->
- <field type="CARD8" name="depth"/>
- <field type="VISUALID" name="visual"/>
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
- </request>
-
- <request name="UnsetAttributes" opcode="4">
- <field type="DRAWABLE" name="drawable"/>
- </request>
-
- <!-- version 1.1 -->
- <request name="Suspend" opcode="5">
- <field type="BOOL" name="suspend" />
- <pad bytes="3" />
- </request>
-
- <!-- Events -->
-
- <event name="Notify" number="0">
- <field type="CARD8" name="code"/>
- <field type="BYTE" name="state"/> <!-- enum State -->
- <pad bytes="1" />
- <field type="CARD16" name="sequence_number"/>
- <field type="TIMESTAMP" name="time"/>
- <field type="WINDOW" name="root"/>
- <field type="WINDOW" name="window"/>
- <field type="BYTE" name="kind"/> <!-- enum Kind -->
- <field type="BOOL" name="forced"/>
- <pad bytes="14"/>
- </event>
-
-</xcb>
+<!--
+
+Copyright (C) 2005 Vincent Torri.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining 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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<!--
+Screen Saver Extension to the X Protocol
+Draft Standard Version 1.1
+-->
+<xcb header="screensaver" extension-xname="MIT-SCREEN-SAVER" extension-name="ScreenSaver" major-version="1" minor-version="1">
+
+ <!-- Types -->
+
+ <import>xproto</import>
+
+ <enum name="Kind">
+ <item name="Blanked" />
+ <item name="Internal" />
+ <item name="External" />
+ </enum>
+
+ <enum name="Event">
+ <item name="NotifyMask"><bit>0</bit></item>
+ <item name="CycleMask"> <bit>1</bit></item>
+ </enum>
+
+ <enum name="State">
+ <item name="Off" />
+ <item name="On" />
+ <item name="Cycle" />
+ <item name="Disabled" />
+ </enum>
+
+ <!-- Errors -->
+ <!-- Requests -->
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD8" name="client_major_version"/>
+ <field type="CARD8" name="client_minor_version"/>
+ <pad bytes="2"/>
+ <reply>
+ <pad bytes="1"/>
+ <field type="CARD16" name="server_major_version"/>
+ <field type="CARD16" name="server_minor_version"/>
+ <pad bytes="20"/>
+ </reply>
+ </request>
+
+ <request name="QueryInfo" opcode="1">
+ <field type="DRAWABLE" name="drawable"/>
+ <reply>
+ <field type="CARD8" name="state"/>
+ <field type="WINDOW" name="saver_window"/>
+ <field type="CARD32" name="ms_until_server"/>
+ <field type="CARD32" name="ms_since_user_input"/>
+ <field type="CARD32" name="event_mask" />
+ <field type="BYTE" name="kind"/> <!-- enum Kind -->
+ <pad bytes="7"/>
+ </reply>
+ </request>
+
+ <request name="SelectInput" opcode="2">
+ <field type="DRAWABLE" name="drawable"/>
+ <field type="CARD32" name="event_mask" /> <!-- enum Event -->
+ </request>
+
+ <request name="SetAttributes" opcode="3">
+ <field type="DRAWABLE" name="drawable"/>
+ <field type="INT16" name="x"/>
+ <field type="INT16" name="y"/>
+ <field type="CARD16" name="width"/>
+ <field type="CARD16" name="height"/>
+ <field type="CARD16" name="border_width"/>
+ <field type="BYTE" name="class"/> <!-- enum XCBWindowClass -->
+ <field type="CARD8" name="depth"/>
+ <field type="VISUALID" name="visual"/>
+ <valueparam value-mask-type="CARD32"
+ value-mask-name="value_mask"
+ value-list-name="value_list" />
+ </request>
+
+ <request name="UnsetAttributes" opcode="4">
+ <field type="DRAWABLE" name="drawable"/>
+ </request>
+
+ <!-- version 1.1 -->
+ <request name="Suspend" opcode="5">
+ <field type="BOOL" name="suspend" />
+ <pad bytes="3" />
+ </request>
+
+ <!-- Events -->
+
+ <event name="Notify" number="0">
+ <field type="CARD8" name="code"/>
+ <field type="BYTE" name="state"/> <!-- enum State -->
+ <pad bytes="1" />
+ <field type="CARD16" name="sequence_number"/>
+ <field type="TIMESTAMP" name="time"/>
+ <field type="WINDOW" name="root"/>
+ <field type="WINDOW" name="window"/>
+ <field type="BYTE" name="kind"/> <!-- enum Kind -->
+ <field type="BOOL" name="forced"/>
+ <pad bytes="14"/>
+ </event>
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/shape.xml b/libxcb/xcb-proto/src/shape.xml
index c128ade32..ce54d3112 100644
--- a/libxcb/xcb-proto/src/shape.xml
+++ b/libxcb/xcb-proto/src/shape.xml
@@ -1,155 +1,155 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<!-- This file describes version 1.1 of the Shape extension. -->
-<xcb header="shape" extension-xname="SHAPE" extension-name="Shape" major-version="1" minor-version="1">
- <import>xproto</import>
-
- <typedef oldname="CARD8" newname="OP" />
- <typedef oldname="CARD8" newname="KIND" />
-
- <!-- Shape attributes of type OP. -->
- <enum name="SO">
- <item name="Set" />
- <item name="Union" />
- <item name="Intersect" />
- <item name="Subtract" />
- <item name="Invert" />
- </enum>
-
- <!-- Shape attributes of type KIND. -->
- <enum name="SK">
- <item name="Bounding" />
- <item name="Clip" />
- <item name="Input" /> <!-- added in version 1.1 -->
- </enum>
-
- <event name="Notify" number="0">
- <field type="KIND" name="shape_kind" enum="SK" />
- <field type="WINDOW" name="affected_window" />
- <field type="INT16" name="extents_x" />
- <field type="INT16" name="extents_y" />
- <field type="CARD16" name="extents_width" />
- <field type="CARD16" name="extents_height" />
- <field type="TIMESTAMP" name="server_time" />
- <field type="BOOL" name="shaped" />
- <pad bytes="11" />
- </event>
-
- <request name="QueryVersion" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- </reply>
- </request>
-
- <request name="Rectangles" opcode="1">
- <field type="OP" name="operation" enum="SO" />
- <field type="KIND" name="destination_kind" enum="SK" />
- <field type="BYTE" name="ordering" enum="ClipOrdering" />
- <pad bytes="1" />
- <field type="WINDOW" name="destination_window" />
- <field type="INT16" name="x_offset" />
- <field type="INT16" name="y_offset" />
- <list type="RECTANGLE" name="rectangles" />
- </request>
-
- <request name="Mask" opcode="2">
- <field type="OP" name="operation" enum="SO" />
- <field type="KIND" name="destination_kind" enum="SK" />
- <pad bytes="2" />
- <field type="WINDOW" name="destination_window" />
- <field type="INT16" name="x_offset" />
- <field type="INT16" name="y_offset" />
- <field type="PIXMAP" name="source_bitmap" altenum="Pixmap" />
- </request>
-
- <request name="Combine" opcode="3">
- <field type="OP" name="operation" enum="SO" />
- <field type="KIND" name="destination_kind" enum="SK" />
- <field type="KIND" name="source_kind" enum="SK" />
- <pad bytes="1" />
- <field type="WINDOW" name="destination_window" />
- <field type="INT16" name="x_offset" />
- <field type="INT16" name="y_offset" />
- <field type="WINDOW" name="source_window" />
- </request>
-
- <request name="Offset" opcode="4">
- <field type="KIND" name="destination_kind" enum="SK" />
- <pad bytes="3" />
- <field type="WINDOW" name="destination_window" />
- <field type="INT16" name="x_offset" />
- <field type="INT16" name="y_offset" />
- </request>
-
- <request name="QueryExtents" opcode="5">
- <field type="WINDOW" name="destination_window" />
- <reply>
- <pad bytes="1" />
- <field type="BOOL" name="bounding_shaped" />
- <field type="BOOL" name="clip_shaped" />
- <pad bytes="2" />
- <field type="INT16" name="bounding_shape_extents_x" />
- <field type="INT16" name="bounding_shape_extents_y" />
- <field type="CARD16" name="bounding_shape_extents_width" />
- <field type="CARD16" name="bounding_shape_extents_height" />
- <field type="INT16" name="clip_shape_extents_x" />
- <field type="INT16" name="clip_shape_extents_y" />
- <field type="CARD16" name="clip_shape_extents_width" />
- <field type="CARD16" name="clip_shape_extents_height" />
- </reply>
- </request>
-
- <request name="SelectInput" opcode="6">
- <field type="WINDOW" name="destination_window" />
- <field type="BOOL" name="enable" />
- <pad bytes="3" />
- </request>
-
- <request name="InputSelected" opcode="7">
- <field type="WINDOW" name="destination_window" />
- <reply>
- <field type="BOOL" name="enabled" />
- </reply>
- </request>
-
- <request name="GetRectangles" opcode="8">
- <field type="WINDOW" name="window" />
- <field type="KIND" name="source_kind" enum="SK" />
- <pad bytes="3" />
- <reply>
- <field type="BYTE" name="ordering" enum="ClipOrdering" />
- <field type="CARD32" name="rectangles_len" />
- <pad bytes="20" />
- <list type="RECTANGLE" name="rectangles">
- <fieldref>rectangles_len</fieldref>
- </list>
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<!-- This file describes version 1.1 of the Shape extension. -->
+<xcb header="shape" extension-xname="SHAPE" extension-name="Shape" major-version="1" minor-version="1">
+ <import>xproto</import>
+
+ <typedef oldname="CARD8" newname="OP" />
+ <typedef oldname="CARD8" newname="KIND" />
+
+ <!-- Shape attributes of type OP. -->
+ <enum name="SO">
+ <item name="Set" />
+ <item name="Union" />
+ <item name="Intersect" />
+ <item name="Subtract" />
+ <item name="Invert" />
+ </enum>
+
+ <!-- Shape attributes of type KIND. -->
+ <enum name="SK">
+ <item name="Bounding" />
+ <item name="Clip" />
+ <item name="Input" /> <!-- added in version 1.1 -->
+ </enum>
+
+ <event name="Notify" number="0">
+ <field type="KIND" name="shape_kind" enum="SK" />
+ <field type="WINDOW" name="affected_window" />
+ <field type="INT16" name="extents_x" />
+ <field type="INT16" name="extents_y" />
+ <field type="CARD16" name="extents_width" />
+ <field type="CARD16" name="extents_height" />
+ <field type="TIMESTAMP" name="server_time" />
+ <field type="BOOL" name="shaped" />
+ <pad bytes="11" />
+ </event>
+
+ <request name="QueryVersion" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ </reply>
+ </request>
+
+ <request name="Rectangles" opcode="1">
+ <field type="OP" name="operation" enum="SO" />
+ <field type="KIND" name="destination_kind" enum="SK" />
+ <field type="BYTE" name="ordering" enum="ClipOrdering" />
+ <pad bytes="1" />
+ <field type="WINDOW" name="destination_window" />
+ <field type="INT16" name="x_offset" />
+ <field type="INT16" name="y_offset" />
+ <list type="RECTANGLE" name="rectangles" />
+ </request>
+
+ <request name="Mask" opcode="2">
+ <field type="OP" name="operation" enum="SO" />
+ <field type="KIND" name="destination_kind" enum="SK" />
+ <pad bytes="2" />
+ <field type="WINDOW" name="destination_window" />
+ <field type="INT16" name="x_offset" />
+ <field type="INT16" name="y_offset" />
+ <field type="PIXMAP" name="source_bitmap" altenum="Pixmap" />
+ </request>
+
+ <request name="Combine" opcode="3">
+ <field type="OP" name="operation" enum="SO" />
+ <field type="KIND" name="destination_kind" enum="SK" />
+ <field type="KIND" name="source_kind" enum="SK" />
+ <pad bytes="1" />
+ <field type="WINDOW" name="destination_window" />
+ <field type="INT16" name="x_offset" />
+ <field type="INT16" name="y_offset" />
+ <field type="WINDOW" name="source_window" />
+ </request>
+
+ <request name="Offset" opcode="4">
+ <field type="KIND" name="destination_kind" enum="SK" />
+ <pad bytes="3" />
+ <field type="WINDOW" name="destination_window" />
+ <field type="INT16" name="x_offset" />
+ <field type="INT16" name="y_offset" />
+ </request>
+
+ <request name="QueryExtents" opcode="5">
+ <field type="WINDOW" name="destination_window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="BOOL" name="bounding_shaped" />
+ <field type="BOOL" name="clip_shaped" />
+ <pad bytes="2" />
+ <field type="INT16" name="bounding_shape_extents_x" />
+ <field type="INT16" name="bounding_shape_extents_y" />
+ <field type="CARD16" name="bounding_shape_extents_width" />
+ <field type="CARD16" name="bounding_shape_extents_height" />
+ <field type="INT16" name="clip_shape_extents_x" />
+ <field type="INT16" name="clip_shape_extents_y" />
+ <field type="CARD16" name="clip_shape_extents_width" />
+ <field type="CARD16" name="clip_shape_extents_height" />
+ </reply>
+ </request>
+
+ <request name="SelectInput" opcode="6">
+ <field type="WINDOW" name="destination_window" />
+ <field type="BOOL" name="enable" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="InputSelected" opcode="7">
+ <field type="WINDOW" name="destination_window" />
+ <reply>
+ <field type="BOOL" name="enabled" />
+ </reply>
+ </request>
+
+ <request name="GetRectangles" opcode="8">
+ <field type="WINDOW" name="window" />
+ <field type="KIND" name="source_kind" enum="SK" />
+ <pad bytes="3" />
+ <reply>
+ <field type="BYTE" name="ordering" enum="ClipOrdering" />
+ <field type="CARD32" name="rectangles_len" />
+ <pad bytes="20" />
+ <list type="RECTANGLE" name="rectangles">
+ <fieldref>rectangles_len</fieldref>
+ </list>
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/shm.xml b/libxcb/xcb-proto/src/shm.xml
index adda50957..e2f575f10 100644
--- a/libxcb/xcb-proto/src/shm.xml
+++ b/libxcb/xcb-proto/src/shm.xml
@@ -1,116 +1,116 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<xcb header="shm" extension-xname="MIT-SHM" extension-name="Shm"
- major-version="1" minor-version="1">
- <import>xproto</import>
-
- <xidtype name="SEG" />
-
- <event name="Completion" number="0">
- <pad bytes="1" />
- <field type="DRAWABLE" name="drawable" />
- <field type="CARD16" name="minor_event" />
- <field type="BYTE" name="major_event" />
- <pad bytes="1" />
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="offset" />
- </event>
-
- <errorcopy name="BadSeg" number="0" ref="Value" />
-
- <request name="QueryVersion" opcode="0">
- <reply>
- <field type="BOOL" name="shared_pixmaps" />
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- <field type="CARD16" name="uid" />
- <field type="CARD16" name="gid" />
- <field type="CARD8" name="pixmap_format" />
- <pad bytes="15" />
- </reply>
- </request>
-
- <request name="Attach" opcode="1">
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="shmid" />
- <field type="BOOL" name="read_only" />
- <pad bytes="3" />
- </request>
-
- <request name="Detach" opcode="2">
- <field type="SEG" name="shmseg" />
- </request>
-
- <request name="PutImage" opcode="3">
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="CARD16" name="total_width" />
- <field type="CARD16" name="total_height" />
- <field type="CARD16" name="src_x" />
- <field type="CARD16" name="src_y" />
- <field type="CARD16" name="src_width" />
- <field type="CARD16" name="src_height" />
- <field type="INT16" name="dst_x" />
- <field type="INT16" name="dst_y" />
- <field type="CARD8" name="depth" />
- <field type="CARD8" name="format" />
- <field type="CARD8" name="send_event" />
- <pad bytes="1" />
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="offset" />
- </request>
-
- <request name="GetImage" opcode="4">
- <field type="DRAWABLE" name="drawable" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD32" name="plane_mask" />
- <field type="CARD8" name="format" />
- <pad bytes="3" />
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="offset" />
- <reply>
- <field type="CARD8" name="depth" />
- <field type="VISUALID" name="visual" />
- <field type="CARD32" name="size" />
- </reply>
- </request>
-
- <request name="CreatePixmap" opcode="5">
- <field type="PIXMAP" name="pid" />
- <field type="DRAWABLE" name="drawable" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD8" name="depth" />
- <pad bytes="3" />
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="offset" />
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="shm" extension-xname="MIT-SHM" extension-name="Shm"
+ major-version="1" minor-version="1">
+ <import>xproto</import>
+
+ <xidtype name="SEG" />
+
+ <event name="Completion" number="0">
+ <pad bytes="1" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD16" name="minor_event" />
+ <field type="BYTE" name="major_event" />
+ <pad bytes="1" />
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="offset" />
+ </event>
+
+ <errorcopy name="BadSeg" number="0" ref="Value" />
+
+ <request name="QueryVersion" opcode="0">
+ <reply>
+ <field type="BOOL" name="shared_pixmaps" />
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ <field type="CARD16" name="uid" />
+ <field type="CARD16" name="gid" />
+ <field type="CARD8" name="pixmap_format" />
+ <pad bytes="15" />
+ </reply>
+ </request>
+
+ <request name="Attach" opcode="1">
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="shmid" />
+ <field type="BOOL" name="read_only" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="Detach" opcode="2">
+ <field type="SEG" name="shmseg" />
+ </request>
+
+ <request name="PutImage" opcode="3">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="CARD16" name="total_width" />
+ <field type="CARD16" name="total_height" />
+ <field type="CARD16" name="src_x" />
+ <field type="CARD16" name="src_y" />
+ <field type="CARD16" name="src_width" />
+ <field type="CARD16" name="src_height" />
+ <field type="INT16" name="dst_x" />
+ <field type="INT16" name="dst_y" />
+ <field type="CARD8" name="depth" />
+ <field type="CARD8" name="format" />
+ <field type="CARD8" name="send_event" />
+ <pad bytes="1" />
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="offset" />
+ </request>
+
+ <request name="GetImage" opcode="4">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD32" name="plane_mask" />
+ <field type="CARD8" name="format" />
+ <pad bytes="3" />
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="offset" />
+ <reply>
+ <field type="CARD8" name="depth" />
+ <field type="VISUALID" name="visual" />
+ <field type="CARD32" name="size" />
+ </reply>
+ </request>
+
+ <request name="CreatePixmap" opcode="5">
+ <field type="PIXMAP" name="pid" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD8" name="depth" />
+ <pad bytes="3" />
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="offset" />
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/xc_misc.xml b/libxcb/xcb-proto/src/xc_misc.xml
index 139ca22f0..b9b21ca48 100644
--- a/libxcb/xcb-proto/src/xc_misc.xml
+++ b/libxcb/xcb-proto/src/xc_misc.xml
@@ -1,38 +1,38 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2004 Mikko Torni and Josh Triplett.
-All Rights Reserved. See the file COPYING in this directory
-for licensing information.
--->
-<xcb header="xc_misc" extension-xname="XC-MISC" extension-name="XCMisc"
- extension-multiword="true" major-version="1" minor-version="1">
- <request name="GetVersion" opcode="0">
- <field type="CARD16" name="client_major_version" />
- <field type="CARD16" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major_version" />
- <field type="CARD16" name="server_minor_version" />
- </reply>
- </request>
-
- <request name="GetXIDRange" opcode="1">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="start_id" />
- <field type="CARD32" name="count" />
- </reply>
- </request>
-
- <request name="GetXIDList" opcode="2">
- <field type="CARD32" name="count" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="ids_len" />
- <pad bytes="20" />
- <list type="CARD32" name="ids">
- <fieldref>ids_len</fieldref>
- </list>
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Mikko Torni and Josh Triplett.
+All Rights Reserved. See the file COPYING in this directory
+for licensing information.
+-->
+<xcb header="xc_misc" extension-xname="XC-MISC" extension-name="XCMisc"
+ extension-multiword="true" major-version="1" minor-version="1">
+ <request name="GetVersion" opcode="0">
+ <field type="CARD16" name="client_major_version" />
+ <field type="CARD16" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major_version" />
+ <field type="CARD16" name="server_minor_version" />
+ </reply>
+ </request>
+
+ <request name="GetXIDRange" opcode="1">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="start_id" />
+ <field type="CARD32" name="count" />
+ </reply>
+ </request>
+
+ <request name="GetXIDList" opcode="2">
+ <field type="CARD32" name="count" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="ids_len" />
+ <pad bytes="20" />
+ <list type="CARD32" name="ids">
+ <fieldref>ids_len</fieldref>
+ </list>
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/xevie.xml b/libxcb/xcb-proto/src/xevie.xml
index 222b412e4..a88f1590b 100644
--- a/libxcb/xcb-proto/src/xevie.xml
+++ b/libxcb/xcb-proto/src/xevie.xml
@@ -1,85 +1,85 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2004 Josh Triplett. All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<!-- This file describes version 1 of XEVIE. -->
-<xcb header="xevie" extension-xname="XEVIE" extension-name="Xevie"
- major-version="1" minor-version="0">
- <request name="QueryVersion" opcode="0">
- <field type="CARD16" name="client_major_version" />
- <field type="CARD16" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major_version" />
- <field type="CARD16" name="server_minor_version" />
- <pad bytes="20" />
- </reply>
- </request>
-
- <request name="Start" opcode="1">
- <field type="CARD32" name="screen" />
- <reply>
- <pad bytes="1" />
- <pad bytes="24" />
- </reply>
- </request>
-
- <request name="End" opcode="2">
- <field type="CARD32" name="cmap" />
- <reply>
- <pad bytes="1" />
- <pad bytes="24" />
- </reply>
- </request>
-
- <enum name="Datatype">
- <item name="Unmodified" />
- <item name="Modified" />
- </enum>
-
- <!-- The Send request needs to send an arbitrary Event; this type is used
- to reserve the necessary structure size. -->
- <struct name="Event">
- <pad bytes="32" />
- </struct>
-
- <request name="Send" opcode="3">
- <field type="Event" name="event" />
- <field type="CARD32" name="data_type" /> <!-- Datatype -->
- <pad bytes="64" />
- <reply>
- <pad bytes="1" />
- <pad bytes="24" />
- </reply>
- </request>
-
- <request name="SelectInput" opcode="4">
- <field type="CARD32" name="event_mask" />
- <reply>
- <pad bytes="1" />
- <pad bytes="24" />
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<!-- This file describes version 1 of XEVIE. -->
+<xcb header="xevie" extension-xname="XEVIE" extension-name="Xevie"
+ major-version="1" minor-version="0">
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD16" name="client_major_version" />
+ <field type="CARD16" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major_version" />
+ <field type="CARD16" name="server_minor_version" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <request name="Start" opcode="1">
+ <field type="CARD32" name="screen" />
+ <reply>
+ <pad bytes="1" />
+ <pad bytes="24" />
+ </reply>
+ </request>
+
+ <request name="End" opcode="2">
+ <field type="CARD32" name="cmap" />
+ <reply>
+ <pad bytes="1" />
+ <pad bytes="24" />
+ </reply>
+ </request>
+
+ <enum name="Datatype">
+ <item name="Unmodified" />
+ <item name="Modified" />
+ </enum>
+
+ <!-- The Send request needs to send an arbitrary Event; this type is used
+ to reserve the necessary structure size. -->
+ <struct name="Event">
+ <pad bytes="32" />
+ </struct>
+
+ <request name="Send" opcode="3">
+ <field type="Event" name="event" />
+ <field type="CARD32" name="data_type" /> <!-- Datatype -->
+ <pad bytes="64" />
+ <reply>
+ <pad bytes="1" />
+ <pad bytes="24" />
+ </reply>
+ </request>
+
+ <request name="SelectInput" opcode="4">
+ <field type="CARD32" name="event_mask" />
+ <reply>
+ <pad bytes="1" />
+ <pad bytes="24" />
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/xfixes.xml b/libxcb/xcb-proto/src/xfixes.xml
index 9bbeaab1e..7ddea0db5 100644
--- a/libxcb/xcb-proto/src/xfixes.xml
+++ b/libxcb/xcb-proto/src/xfixes.xml
@@ -1,334 +1,334 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2004 Josh Triplett. All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<!-- This file describes version 4 of XFixes. -->
-<xcb header="xfixes" extension-xname="XFIXES" extension-name="XFixes"
- major-version="4" minor-version="0">
- <import>xproto</import>
- <import>render</import>
- <import>shape</import>
-
- <!-- Version 1 -->
- <request name="QueryVersion" opcode="0">
- <field type="CARD32" name="client_major_version" />
- <field type="CARD32" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="major_version" />
- <field type="CARD32" name="minor_version" />
- <pad bytes="16" />
- </reply>
- </request>
-
- <enum name="SaveSetMode">
- <item name="Insert" />
- <item name="Delete" />
- </enum>
-
- <enum name="SaveSetTarget">
- <item name="Nearest" />
- <item name="Root" />
- </enum>
-
- <enum name="SaveSetMapping">
- <item name="Map" />
- <item name="Unmap" />
- </enum>
-
- <request name="ChangeSaveSet" opcode="1">
- <field type="BYTE" name="mode" enum="SaveSetMode" />
- <field type="BYTE" name="target" enum="SaveSetTarget" />
- <field type="BYTE" name="map" enum="SaveSetMapping" />
- <pad bytes="1" />
- <field type="WINDOW" name="window" />
- </request>
-
- <enum name="SelectionEvent">
- <item name="SetSelectionOwner" />
- <item name="SelectionWindowDestroy" />
- <item name="SelectionClientClose" />
- </enum>
-
- <enum name="SelectionEventMask">
- <item name="SetSelectionOwner"> <bit>0</bit></item>
- <item name="SelectionWindowDestroy"><bit>1</bit></item>
- <item name="SelectionClientClose"> <bit>2</bit></item>
- </enum>
-
- <event name="SelectionNotify" number="0">
- <field type="CARD8" name="subtype" enum="SelectionEvent" />
- <field type="WINDOW" name="window" />
- <field type="WINDOW" name="owner" />
- <field type="ATOM" name="selection" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="selection_timestamp" />
- <pad bytes="8" />
- </event>
-
- <request name="SelectSelectionInput" opcode="2">
- <field type="WINDOW" name="window" />
- <field type="ATOM" name="selection" />
- <field type="CARD32" name="event_mask" mask="SelectionEventMask" />
- </request>
-
- <enum name="CursorNotify">
- <item name="DisplayCursor" />
- </enum>
-
- <enum name="CursorNotifyMask">
- <item name="DisplayCursor"><bit>0</bit></item>
- </enum>
-
- <event name="CursorNotify" number="1">
- <field type="CARD8" name="subtype" enum="CursorNotify" />
- <field type="WINDOW" name="window" />
- <field type="CARD32" name="cursor_serial" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="ATOM" name="name" altenum="Atom" /> <!-- Added in version 2 -->
- <pad bytes="12" />
- </event>
-
- <request name="SelectCursorInput" opcode="3">
- <field type="WINDOW" name="window" />
- <field type="CARD32" name="event_mask" mask="CursorNotifyMask" />
- </request>
-
- <request name="GetCursorImage" opcode="4">
- <reply>
- <pad bytes="1" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="xhot" />
- <field type="CARD16" name="yhot" />
- <field type="CARD32" name="cursor_serial" />
- <pad bytes="8" />
- <list type="CARD32" name="cursor_image">
- <op op="*">
- <fieldref>width</fieldref>
- <fieldref>height</fieldref>
- </op>
- </list>
- </reply>
- </request>
-
- <!-- Version 2 -->
-
- <xidtype name="REGION" />
-
- <error name="BadRegion" number="0" />
-
- <enum name="Region">
- <item name="None" />
- </enum>
-
- <request name="CreateRegion" opcode="5">
- <field type="REGION" name="region" />
- <list type="RECTANGLE" name="rectangles" />
- </request>
-
- <request name="CreateRegionFromBitmap" opcode="6">
- <field type="REGION" name="region" />
- <field type="PIXMAP" name="bitmap" />
- </request>
-
- <request name="CreateRegionFromWindow" opcode="7">
- <field type="REGION" name="region" />
- <field type="WINDOW" name="window" />
- <field type="shape:KIND" name="kind" enum="SK" />
- <pad bytes="3" />
- </request>
-
- <request name="CreateRegionFromGC" opcode="8">
- <field type="REGION" name="region" />
- <field type="GCONTEXT" name="gc" />
- </request>
-
- <request name="CreateRegionFromPicture" opcode="9">
- <field type="REGION" name="region" />
- <field type="PICTURE" name="picture" />
- </request>
-
- <request name="DestroyRegion" opcode="10">
- <field type="REGION" name="region" />
- </request>
-
- <request name="SetRegion" opcode="11">
- <field type="REGION" name="region" />
- <list type="RECTANGLE" name="rectangles" />
- </request>
-
- <request name="CopyRegion" opcode="12">
- <field type="REGION" name="source" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="UnionRegion" opcode="13">
- <field type="REGION" name="source1" />
- <field type="REGION" name="source2" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="IntersectRegion" opcode="14">
- <field type="REGION" name="source1" />
- <field type="REGION" name="source2" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="SubtractRegion" opcode="15">
- <field type="REGION" name="source1" />
- <field type="REGION" name="source2" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="InvertRegion" opcode="16">
- <field type="REGION" name="source" />
- <field type="RECTANGLE" name="bounds" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="TranslateRegion" opcode="17">
- <field type="REGION" name="region" />
- <field type="INT16" name="dx" />
- <field type="INT16" name="dy" />
- </request>
-
- <request name="RegionExtents" opcode="18">
- <field type="REGION" name="source" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="FetchRegion" opcode="19">
- <field type="REGION" name="region" />
- <reply>
- <pad bytes="1" />
- <field type="RECTANGLE" name="extents" />
- <pad bytes="16" />
- <list type="RECTANGLE" name="rectangles">
- <op op='/'>
- <fieldref>length</fieldref>
- <value>2</value>
- </op>
- </list>
- </reply>
- </request>
-
- <request name="SetGCClipRegion" opcode="20">
- <field type="GCONTEXT" name="gc" />
- <field type="REGION" name="region" altenum="Region" />
- <field type="INT16" name="x_origin" />
- <field type="INT16" name="y_origin" />
- </request>
-
- <request name="SetWindowShapeRegion" opcode="21">
- <field type="WINDOW" name="dest" />
- <field type="shape:KIND" name="dest_kind" enum="SK" />
- <pad bytes="3" />
- <field type="INT16" name="x_offset" />
- <field type="INT16" name="y_offset" />
- <field type="REGION" name="region" altenum="Region" />
- </request>
-
- <request name="SetPictureClipRegion" opcode="22">
- <field type="PICTURE" name="picture" />
- <field type="REGION" name="region" altenum="Region" />
- <field type="INT16" name="x_origin" />
- <field type="INT16" name="y_origin" />
- </request>
-
- <request name="SetCursorName" opcode="23">
- <field type="CURSOR" name="cursor" />
- <field type="CARD16" name="nbytes" />
- <pad bytes="2" />
- <list type="char" name="name"><fieldref>nbytes</fieldref></list>
- </request>
-
- <request name="GetCursorName" opcode="24">
- <field type="CURSOR" name="cursor" />
- <reply>
- <pad bytes="1" />
- <field type="ATOM" name="atom" altenum="Atom" />
- <field type="CARD16" name="nbytes" />
- <pad bytes="18" />
- <list type="char" name="name"><fieldref>nbytes</fieldref></list>
- </reply>
- </request>
-
- <request name="GetCursorImageAndName" opcode="25">
- <reply>
- <pad bytes="1" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="xhot" />
- <field type="CARD16" name="yhot" />
- <field type="CARD32" name="cursor_serial" />
- <field type="ATOM" name="cursor_atom" altenum="Atom" />
- <field type="CARD16" name="nbytes" />
- <pad bytes="2" />
- <list type="char" name="name"><fieldref>nbytes</fieldref></list>
- <list type="CARD32" name="cursor_image">
- <op op="*">
- <fieldref>width</fieldref>
- <fieldref>height</fieldref>
- </op>
- </list>
- </reply>
- </request>
-
- <request name="ChangeCursor" opcode="26">
- <field type="CURSOR" name="source" />
- <field type="CURSOR" name="destination" />
- </request>
-
- <request name="ChangeCursorByName" opcode="27">
- <field type="CURSOR" name="src" />
- <field type="CARD16" name="nbytes" />
- <pad bytes="2" />
- <list type="char" name="name"><fieldref>nbytes</fieldref></list>
- </request>
-
- <!-- Version 3 -->
- <request name="ExpandRegion" opcode="28">
- <field type="REGION" name="source" />
- <field type="REGION" name="destination" />
- <field type="CARD16" name="left" />
- <field type="CARD16" name="right" />
- <field type="CARD16" name="top" />
- <field type="CARD16" name="bottom" />
- </request>
-
- <!-- Version 4 -->
- <request name="HideCursor" opcode="29">
- <field type="WINDOW" name="window" />
- </request>
-
- <request name="ShowCursor" opcode="30">
- <field type="WINDOW" name="window" />
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<!-- This file describes version 4 of XFixes. -->
+<xcb header="xfixes" extension-xname="XFIXES" extension-name="XFixes"
+ major-version="4" minor-version="0">
+ <import>xproto</import>
+ <import>render</import>
+ <import>shape</import>
+
+ <!-- Version 1 -->
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD32" name="client_major_version" />
+ <field type="CARD32" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <pad bytes="16" />
+ </reply>
+ </request>
+
+ <enum name="SaveSetMode">
+ <item name="Insert" />
+ <item name="Delete" />
+ </enum>
+
+ <enum name="SaveSetTarget">
+ <item name="Nearest" />
+ <item name="Root" />
+ </enum>
+
+ <enum name="SaveSetMapping">
+ <item name="Map" />
+ <item name="Unmap" />
+ </enum>
+
+ <request name="ChangeSaveSet" opcode="1">
+ <field type="BYTE" name="mode" enum="SaveSetMode" />
+ <field type="BYTE" name="target" enum="SaveSetTarget" />
+ <field type="BYTE" name="map" enum="SaveSetMapping" />
+ <pad bytes="1" />
+ <field type="WINDOW" name="window" />
+ </request>
+
+ <enum name="SelectionEvent">
+ <item name="SetSelectionOwner" />
+ <item name="SelectionWindowDestroy" />
+ <item name="SelectionClientClose" />
+ </enum>
+
+ <enum name="SelectionEventMask">
+ <item name="SetSelectionOwner"> <bit>0</bit></item>
+ <item name="SelectionWindowDestroy"><bit>1</bit></item>
+ <item name="SelectionClientClose"> <bit>2</bit></item>
+ </enum>
+
+ <event name="SelectionNotify" number="0">
+ <field type="CARD8" name="subtype" enum="SelectionEvent" />
+ <field type="WINDOW" name="window" />
+ <field type="WINDOW" name="owner" />
+ <field type="ATOM" name="selection" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="selection_timestamp" />
+ <pad bytes="8" />
+ </event>
+
+ <request name="SelectSelectionInput" opcode="2">
+ <field type="WINDOW" name="window" />
+ <field type="ATOM" name="selection" />
+ <field type="CARD32" name="event_mask" mask="SelectionEventMask" />
+ </request>
+
+ <enum name="CursorNotify">
+ <item name="DisplayCursor" />
+ </enum>
+
+ <enum name="CursorNotifyMask">
+ <item name="DisplayCursor"><bit>0</bit></item>
+ </enum>
+
+ <event name="CursorNotify" number="1">
+ <field type="CARD8" name="subtype" enum="CursorNotify" />
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="cursor_serial" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="ATOM" name="name" altenum="Atom" /> <!-- Added in version 2 -->
+ <pad bytes="12" />
+ </event>
+
+ <request name="SelectCursorInput" opcode="3">
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="event_mask" mask="CursorNotifyMask" />
+ </request>
+
+ <request name="GetCursorImage" opcode="4">
+ <reply>
+ <pad bytes="1" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="xhot" />
+ <field type="CARD16" name="yhot" />
+ <field type="CARD32" name="cursor_serial" />
+ <pad bytes="8" />
+ <list type="CARD32" name="cursor_image">
+ <op op="*">
+ <fieldref>width</fieldref>
+ <fieldref>height</fieldref>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <!-- Version 2 -->
+
+ <xidtype name="REGION" />
+
+ <error name="BadRegion" number="0" />
+
+ <enum name="Region">
+ <item name="None" />
+ </enum>
+
+ <request name="CreateRegion" opcode="5">
+ <field type="REGION" name="region" />
+ <list type="RECTANGLE" name="rectangles" />
+ </request>
+
+ <request name="CreateRegionFromBitmap" opcode="6">
+ <field type="REGION" name="region" />
+ <field type="PIXMAP" name="bitmap" />
+ </request>
+
+ <request name="CreateRegionFromWindow" opcode="7">
+ <field type="REGION" name="region" />
+ <field type="WINDOW" name="window" />
+ <field type="shape:KIND" name="kind" enum="SK" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="CreateRegionFromGC" opcode="8">
+ <field type="REGION" name="region" />
+ <field type="GCONTEXT" name="gc" />
+ </request>
+
+ <request name="CreateRegionFromPicture" opcode="9">
+ <field type="REGION" name="region" />
+ <field type="PICTURE" name="picture" />
+ </request>
+
+ <request name="DestroyRegion" opcode="10">
+ <field type="REGION" name="region" />
+ </request>
+
+ <request name="SetRegion" opcode="11">
+ <field type="REGION" name="region" />
+ <list type="RECTANGLE" name="rectangles" />
+ </request>
+
+ <request name="CopyRegion" opcode="12">
+ <field type="REGION" name="source" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="UnionRegion" opcode="13">
+ <field type="REGION" name="source1" />
+ <field type="REGION" name="source2" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="IntersectRegion" opcode="14">
+ <field type="REGION" name="source1" />
+ <field type="REGION" name="source2" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="SubtractRegion" opcode="15">
+ <field type="REGION" name="source1" />
+ <field type="REGION" name="source2" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="InvertRegion" opcode="16">
+ <field type="REGION" name="source" />
+ <field type="RECTANGLE" name="bounds" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="TranslateRegion" opcode="17">
+ <field type="REGION" name="region" />
+ <field type="INT16" name="dx" />
+ <field type="INT16" name="dy" />
+ </request>
+
+ <request name="RegionExtents" opcode="18">
+ <field type="REGION" name="source" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="FetchRegion" opcode="19">
+ <field type="REGION" name="region" />
+ <reply>
+ <pad bytes="1" />
+ <field type="RECTANGLE" name="extents" />
+ <pad bytes="16" />
+ <list type="RECTANGLE" name="rectangles">
+ <op op='/'>
+ <fieldref>length</fieldref>
+ <value>2</value>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetGCClipRegion" opcode="20">
+ <field type="GCONTEXT" name="gc" />
+ <field type="REGION" name="region" altenum="Region" />
+ <field type="INT16" name="x_origin" />
+ <field type="INT16" name="y_origin" />
+ </request>
+
+ <request name="SetWindowShapeRegion" opcode="21">
+ <field type="WINDOW" name="dest" />
+ <field type="shape:KIND" name="dest_kind" enum="SK" />
+ <pad bytes="3" />
+ <field type="INT16" name="x_offset" />
+ <field type="INT16" name="y_offset" />
+ <field type="REGION" name="region" altenum="Region" />
+ </request>
+
+ <request name="SetPictureClipRegion" opcode="22">
+ <field type="PICTURE" name="picture" />
+ <field type="REGION" name="region" altenum="Region" />
+ <field type="INT16" name="x_origin" />
+ <field type="INT16" name="y_origin" />
+ </request>
+
+ <request name="SetCursorName" opcode="23">
+ <field type="CURSOR" name="cursor" />
+ <field type="CARD16" name="nbytes" />
+ <pad bytes="2" />
+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
+ </request>
+
+ <request name="GetCursorName" opcode="24">
+ <field type="CURSOR" name="cursor" />
+ <reply>
+ <pad bytes="1" />
+ <field type="ATOM" name="atom" altenum="Atom" />
+ <field type="CARD16" name="nbytes" />
+ <pad bytes="18" />
+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
+ </reply>
+ </request>
+
+ <request name="GetCursorImageAndName" opcode="25">
+ <reply>
+ <pad bytes="1" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="xhot" />
+ <field type="CARD16" name="yhot" />
+ <field type="CARD32" name="cursor_serial" />
+ <field type="ATOM" name="cursor_atom" altenum="Atom" />
+ <field type="CARD16" name="nbytes" />
+ <pad bytes="2" />
+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
+ <list type="CARD32" name="cursor_image">
+ <op op="*">
+ <fieldref>width</fieldref>
+ <fieldref>height</fieldref>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ChangeCursor" opcode="26">
+ <field type="CURSOR" name="source" />
+ <field type="CURSOR" name="destination" />
+ </request>
+
+ <request name="ChangeCursorByName" opcode="27">
+ <field type="CURSOR" name="src" />
+ <field type="CARD16" name="nbytes" />
+ <pad bytes="2" />
+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
+ </request>
+
+ <!-- Version 3 -->
+ <request name="ExpandRegion" opcode="28">
+ <field type="REGION" name="source" />
+ <field type="REGION" name="destination" />
+ <field type="CARD16" name="left" />
+ <field type="CARD16" name="right" />
+ <field type="CARD16" name="top" />
+ <field type="CARD16" name="bottom" />
+ </request>
+
+ <!-- Version 4 -->
+ <request name="HideCursor" opcode="29">
+ <field type="WINDOW" name="window" />
+ </request>
+
+ <request name="ShowCursor" opcode="30">
+ <field type="WINDOW" name="window" />
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/xinerama.xml b/libxcb/xcb-proto/src/xinerama.xml
index b2747eeab..5534aa6c0 100644
--- a/libxcb/xcb-proto/src/xinerama.xml
+++ b/libxcb/xcb-proto/src/xinerama.xml
@@ -1,99 +1,99 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Jeremy Kolb.
-All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-
-<xcb header="xinerama" extension-xname="XINERAMA" extension-name="Xinerama"
- major-version="1" minor-version="1">
-
- <!-- Version 1.1 -->
-
- <import>xproto</import>
-
- <struct name="ScreenInfo">
- <field type="INT16" name="x_org" />
- <field type="INT16" name="y_org" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- </struct>
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD8" name="major" />
- <field type="CARD8" name="minor" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="major" />
- <field type="CARD16" name="minor" />
- </reply>
- </request>
-
- <request name="GetState" opcode="1">
- <field type="WINDOW" name="window" />
- <reply>
- <field type="BYTE" name="state" />
- <field type="WINDOW" name="window" />
- </reply>
- </request>
-
- <request name="GetScreenCount" opcode="2">
- <field type="WINDOW" name="window" />
- <reply>
- <field type="BYTE" name="screen_count" />
- <field type="WINDOW" name="window" />
- </reply>
- </request>
-
- <request name="GetScreenSize" opcode="3">
- <field type="WINDOW" name="window" />
- <field type="CARD32" name="screen" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="width" />
- <field type="CARD32" name="height" />
- <field type="WINDOW" name="window" />
- <field type="CARD32" name="screen" />
- </reply>
- </request>
-
- <request name="IsActive" opcode="4">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="state" />
- </reply>
- </request>
-
- <request name="QueryScreens" opcode="5">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="number" />
- <pad bytes="20" />
- <list type="ScreenInfo" name="screen_info">
- <fieldref>number</fieldref>
- </list>
- </reply>
- </request>
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb.
+All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="xinerama" extension-xname="XINERAMA" extension-name="Xinerama"
+ major-version="1" minor-version="1">
+
+ <!-- Version 1.1 -->
+
+ <import>xproto</import>
+
+ <struct name="ScreenInfo">
+ <field type="INT16" name="x_org" />
+ <field type="INT16" name="y_org" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ </struct>
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD8" name="major" />
+ <field type="CARD8" name="minor" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major" />
+ <field type="CARD16" name="minor" />
+ </reply>
+ </request>
+
+ <request name="GetState" opcode="1">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <field type="BYTE" name="state" />
+ <field type="WINDOW" name="window" />
+ </reply>
+ </request>
+
+ <request name="GetScreenCount" opcode="2">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <field type="BYTE" name="screen_count" />
+ <field type="WINDOW" name="window" />
+ </reply>
+ </request>
+
+ <request name="GetScreenSize" opcode="3">
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="screen" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="width" />
+ <field type="CARD32" name="height" />
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="screen" />
+ </reply>
+ </request>
+
+ <request name="IsActive" opcode="4">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="state" />
+ </reply>
+ </request>
+
+ <request name="QueryScreens" opcode="5">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="number" />
+ <pad bytes="20" />
+ <list type="ScreenInfo" name="screen_info">
+ <fieldref>number</fieldref>
+ </list>
+ </reply>
+ </request>
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/xinput.xml b/libxcb/xcb-proto/src/xinput.xml
index 80416fe3f..b0a7a82e8 100644
--- a/libxcb/xcb-proto/src/xinput.xml
+++ b/libxcb/xcb-proto/src/xinput.xml
@@ -1,1020 +1,1020 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Peter Hutterer
-All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-
-<!-- Spec: http://refspecs.freestandards.org/X11/Xinput.pdf -->
-
-<xcb header="xinput" extension-xname="XInputExtension" extension-name="Input"
- major-version="1" minor-version="4">
- <import>xproto</import>
-
- <typedef oldname="CARD8" newname="KeyCode" />
- <typedef oldname="CARD32" newname="EventClass" />
-
- <enum name="ValuatorMode">
- <item name="Relative"> <value>0</value></item>
- <item name="Absolute"> <value>1</value></item>
- </enum>
-
- <enum name="PropagateMode">
- <item name="AddToList"> <value>0</value></item>
- <item name="DeleteFromList"> <value>1</value></item>
- </enum>
-
- <!-- GetExtensionVersion -->
-
- <request name="GetExtensionVersion" opcode="1">
- <field type="CARD16" name="name_len" />
- <pad bytes="2" />
- <list type="char" name="name">
- <fieldref>name_len</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major" />
- <field type="CARD16" name="server_minor" />
- <field type="BOOL" name="present" />
- <pad bytes="19" />
- </reply>
- </request>
-
- <!-- ListInputDevices -->
-
- <enum name="DeviceUse">
- <item name="IsXPointer"><value>0</value></item>
- <item name="IsXKeyboard"><value>1</value></item>
- <item name="IsXExtensionDevice"><value>2</value></item>
- <item name="IsXExtensionKeyboard"><value>3</value></item>
- <item name="IsXExtensionPointer"><value>4</value></item>
- </enum>
-
- <struct name="DeviceInfo">
- <field type="ATOM" name="device_type" />
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="num_class_info" />
- <field type="CARD8" name="device_use" enum="DeviceUse" />
- <pad bytes="1" />
- </struct>
-
- <request name="ListInputDevices" opcode="2">
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="devices_len" />
- <pad bytes="23" />
- <list type="DeviceInfo" name="devices">
- <fieldref>devices_len</fieldref>
- </list>
- <!-- Uninterpreted: list of deviceinfo structs of 3 the subtypes -->
- <!-- Uninterpreted: list of null-terminated strings -->
- </reply>
- </request>
-
- <enum name="InputClass">
- <item name="Key"><value>0</value></item>
- <item name="Button"><value>1</value></item>
- <item name="Valuator"><value>2</value></item>
- <item name="Feedback"><value>3</value></item>
- <item name="Proximity"><value>4</value></item>
- <item name="Focus"><value>5</value></item>
- <item name="Other"><value>6</value></item>
- </enum>
-
- <struct name="InputInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- </struct>
-
- <struct name="KeyInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="KeyCode" name="min_keycode" />
- <field type="KeyCode" name="max_keycode" />
- <field type="CARD16" name="num_keys" />
- <pad bytes="2" />
- </struct>
-
- <struct name="ButtonInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD16" name="num_buttons" />
- </struct>
-
- <struct name="AxisInfo">
- <field type="CARD32" name="resolution" />
- <field type="INT32" name="minimum" />
- <field type="INT32" name="maximum" />
- </struct>
-
- <struct name="ValuatorInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="axes_len" />
- <field type="CARD8" name="mode" enum="ValuatorMode" />
- <field type="CARD32" name="motion_size" />
- <list type="AxisInfo" name="axes">
- <fieldref>axes_len</fieldref>
- </list>
- </struct>
-
- <!-- OpenDevice -->
-
- <struct name="InputClassInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="event_type_base" />
- </struct>
-
- <request name="OpenDevice" opcode="3">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="num_classes" />
- <pad bytes="23" />
- <list type="InputClassInfo" name="class_info">
- <fieldref>num_classes</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- CloseDevice -->
-
- <request name="CloseDevice" opcode="4">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- </request>
-
- <!-- SetDeviceMode -->
-
- <request name="SetDeviceMode" opcode="5">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="mode" enum="ValuatorMode" />
- <pad bytes="2" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- SelectExtensionEvent -->
-
- <request name="SelectExtensionEvent" opcode="6">
- <field type="WINDOW" name="window" />
- <field type="CARD16" name="num_classes" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </request>
-
- <!-- GetSelectedExtensionEvents -->
-
- <request name="GetSelectedExtensionEvents" opcode="7">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_this_classes" />
- <field type="CARD16" name="num_all_classes" />
- <pad bytes="20" />
- <list type="EventClass" name="this_classes">
- <fieldref>num_this_classes</fieldref>
- </list>
- <list type="EventClass" name="all_classes">
- <fieldref>num_all_classes</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- ChangeDeviceDontPropagateList -->
-
- <request name="ChangeDeviceDontPropagateList" opcode="8">
- <field type="WINDOW" name="window" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD8" name="mode" enum="PropagateMode" />
- <pad bytes="1" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </request>
-
- <!-- GetDeviceDontPropagateList -->
-
- <request name="GetDeviceDontPropagateList" opcode="9">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_classes" />
- <pad bytes="22" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- GetDeviceMotionEvents -->
-
- <request name="GetDeviceMotionEvents" opcode="10">
- <field type="TIMESTAMP" name="start" />
- <field type="TIMESTAMP" name="stop" altenum="Time" />
- <field type="CARD8" name="device_id" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_coords" />
- <field type="CARD8" name="num_axes" />
- <field type="CARD8" name="device_mode" enum="ValuatorMode" />
- <pad bytes="18" />
- <!-- Uninterpreted: list of DeviceTimeCoord structures -->
- </reply>
- </request>
-
- <struct name="DeviceTimeCoord">
- <field type="TIMESTAMP" name="time" />
- <!-- Uninterpreted: list of CARD16 -->
- </struct>
-
- <!-- ChangeKeyboardDevice -->
- <request name="ChangeKeyboardDevice" opcode="11">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- ChangePointerDevice -->
-
- <request name="ChangePointerDevice" opcode="12">
- <field type="CARD8" name="x_axis" />
- <field type="CARD8" name="y_axis" />
- <field type="CARD8" name="device_id" />
- <pad bytes="1" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- GrabDevice -->
-
- <request name="GrabDevice" opcode="13">
- <field type="WINDOW" name="grab_window" />
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD8" name="this_device_mode" enum="GrabMode" />
- <field type="CARD8" name="other_device_mode" enum="GrabMode" />
- <field type="BOOL" name="owner_events" />
- <field type="CARD8" name="device_id" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- UngrabDevice -->
-
- <request name="UngrabDevice" opcode="14">
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD8" name="device_id" />
- </request>
-
- <!-- GrabDeviceKey -->
-
- <request name="GrabDeviceKey" opcode="15">
- <field type="WINDOW" name="grab_window" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD8" name="grabbed_device" />
- <field type="CARD8" name="key" altenum="Grab" />
- <field type="CARD8" name="this_device_mode" enum="GrabMode" />
- <field type="CARD8" name="other_device_mode" enum="GrabMode" />
- <field type="BOOL" name="owner_events" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </request>
-
- <!-- UngrabDeviceKey -->
-
- <request name="UngrabDeviceKey" opcode="16">
- <field type="WINDOW" name="grabWindow" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD8" name="key" altenum="Grab" />
- <field type="CARD8" name="grabbed_device" />
- </request>
-
- <!-- GrabDeviceButton -->
-
- <request name="GrabDeviceButton" opcode="17">
- <field type="WINDOW" name="grab_window" />
- <field type="CARD8" name="grabbed_device" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="this_device_mode" enum="GrabMode" />
- <field type="CARD8" name="other_device_mode" enum="GrabMode" />
- <field type="CARD8" name="button" altenum="Grab" />
- <field type="CARD8" name="owner_events" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </request>
-
- <!-- UngrabDeviceButton -->
-
- <request name="UngrabDeviceButton" opcode="18">
- <field type="WINDOW" name="grab_window" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD8" name="button" altenum="Grab" />
- <field type="CARD8" name="grabbed_device" />
- </request>
-
- <!-- AllowDeviceEvents -->
-
- <enum name="DeviceInputMode">
- <item name="AsyncThisDevice" />
- <item name="SyncThisDevice" />
- <item name="ReplayThisDevice" />
- <item name="AsyncOtherDevices" />
- <item name="AsyncAll" />
- <item name="SyncAll" />
- </enum>
-
- <request name="AllowDeviceEvents" opcode="19">
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD8" name="mode" enum="DeviceInputMode" />
- <field type="CARD8" name="device_id" />
- </request>
-
- <!-- GetDeviceFocus -->
-
- <request name="GetDeviceFocus" opcode="20">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="WINDOW" name="focus" altenum="InputFocus" />
- <field type="TIMESTAMP" name="time" />
- <field type="CARD8" name="revert_to" enum="InputFocus" />
- <pad bytes="15" />
- </reply>
- </request>
-
- <!-- SetDeviceFocus -->
-
- <request name="SetDeviceFocus" opcode="21">
- <field type="WINDOW" name="focus" altenum="InputFocus" />
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD8" name="revert_to" enum="InputFocus" />
- <field type="CARD8" name="device_id" />
- </request>
-
- <!-- GetFeedbackControl -->
-
- <request name="GetFeedbackControl" opcode="22">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_feedback" />
- <pad bytes="22" />
- <!-- Uninterpreted: list of FeedbackState structures -->
- </reply>
- </request>
-
- <enum name="FeedbackClass">
- <item name="Keyboard" />
- <item name="Pointer" />
- <item name="String" />
- <item name="Integer" />
- <item name="Led" />
- <item name="Bell" />
- </enum>
-
- <struct name="FeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- </struct>
-
- <struct name="KbdFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD16" name="pitch" />
- <field type="CARD16" name="duration" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
- <field type="BOOL" name="global_auto_repeat" />
- <field type="CARD8" name="click" />
- <field type="CARD8" name="percent" />
- <pad bytes="1" />
- <list type="CARD8" name="auto_repeats"><value>32</value></list>
- </struct>
-
- <struct name="PtrFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <pad bytes="2" />
- <field type="CARD16" name="accel_num" />
- <field type="CARD16" name="accel_denom" />
- <field type="CARD16" name="threshold" />
- </struct>
-
- <struct name="IntegerFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="resolution" />
- <field type="INT32" name="min_value" />
- <field type="INT32" name="max_value" />
- </struct>
-
- <struct name="StringFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD16" name="max_symbols" />
- <field type="CARD16" name="num_keysyms" />
- <list type="KEYSYM" name="keysyms">
- <fieldref>num_keysyms</fieldref>
- </list>
- </struct>
-
- <struct name="BellFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="percent" />
- <pad bytes="3" />
- <field type="CARD16" name="pitch" />
- <field type="CARD16" name="duration" />
- </struct>
-
- <struct name="LedFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
- </struct>
-
- <!-- ChangeFeedbackControl
-
- <request name="ChangeFeedbackControl" opcode="23">
- <field type="CARD32" name="mask" />
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="feedback_id" />
- Uninterpreted: list of FeedbackCtl structures
- </request>
-
- -->
-
- <struct name="FeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- </struct>
-
- <struct name="KbdFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="KeyCode" name="key" />
- <field type="CARD8" name="auto_repeat_mode" />
- <field type="INT8" name="key_click_percent" />
- <field type="INT8" name="bell_percent" />
- <field type="INT16" name="bell_pitch" />
- <field type="INT16" name="bell_duration" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
- </struct>
-
- <struct name="PtrFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <pad bytes="2" />
- <field type="INT16" name="num" />
- <field type="INT16" name="denom" />
- <field type="INT16" name="threshold" />
- </struct>
-
- <struct name="IntegerFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="INT32" name="int_to_display" />
- </struct>
-
- <struct name="StringFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <pad bytes="2" />
- <field type="CARD16" name="num_keysyms" />
- <list type="KEYSYM" name="keysyms">
- <fieldref>num_keysyms</fieldref>
- </list>
- </struct>
-
- <struct name="BellFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="INT8" name="percent" />
- <pad bytes="3" />
- <field type="INT16" name="pitch" />
- <field type="INT16" name="duration" />
- </struct>
-
- <struct name="LedFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
- </struct>
-
- <!-- GetDeviceKeyMapping -->
-
- <request name="GetDeviceKeyMapping" opcode="24">
- <field type="CARD8" name="device_id" />
- <field type="KeyCode" name="first_keycode" />
- <field type="CARD8" name="count" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="keysyms_per_keycode" />
- <pad bytes="23" />
- <list type="KEYSYM" name="keysyms">
- <fieldref>length</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- ChangeDeviceKeyMapping -->
-
- <request name="ChangeDeviceKeyMapping" opcode="25">
- <field type="CARD8" name="device_id" />
- <field type="KeyCode" name="first_keycode" />
- <field type="CARD8" name="keysyms_per_keycode" />
- <field type="CARD8" name="keycode_count" />
- <list type="KEYSYM" name="keysyms">
- <op op="*">
- <fieldref>keycode_count</fieldref>
- <fieldref>keysyms_per_keycode</fieldref>
- </op>
- </list>
- </request>
-
- <!-- GetDeviceModifierMapping -->
-
- <request name="GetDeviceModifierMapping" opcode="26">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="keycodes_per_modifier" />
- <pad bytes="23" />
- <list type="CARD8" name="keymaps">
- <op op="*">
- <fieldref>keycodes_per_modifier</fieldref>
- <value>8</value>
- </op>
- </list>
- </reply>
- </request>
-
- <!-- SetDeviceModifierMapping -->
-
- <request name="SetDeviceModifierMapping" opcode="27">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="keycodes_per_modifier" />
- <pad bytes="1" />
- <list type="CARD8" name="keymaps">
- <op op="*">
- <fieldref>keycodes_per_modifier</fieldref>
- <value>8</value>
- </op>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="MappingStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- GetDeviceButtonMapping -->
-
- <request name="GetDeviceButtonMapping" opcode="28">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="map_size" />
- <pad bytes="23" />
- <list type="CARD8" name="map">
- <fieldref>map_size</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- SetDeviceButtonMapping -->
-
- <request name="SetDeviceButtonMapping" opcode="29">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="map_size" />
- <pad bytes="2" />
- <list type="CARD8" name="map">
- <fieldref>map_size</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="MappingStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- QueryDeviceState -->
-
- <request name="QueryDeviceState" opcode="30">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="num_classes" />
- <pad bytes="23" />
- <!-- Uninterpreted: list of InputState structures -->
- </reply>
- </request>
-
- <struct name="InputState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_items" />
- </struct>
-
- <struct name="KeyState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_keys" />
- <pad bytes="1" />
- <list type="CARD8" name="keys">
- <value>32</value>
- </list>
- </struct>
-
- <struct name="ButtonState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_buttons" />
- <pad bytes="1" />
- <list type="CARD8" name="buttons">
- <value>32</value>
- </list>
- </struct>
-
- <struct name="ValuatorState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_valuators" />
- <field type="CARD8" name="mode" />
- <list type="CARD32" name="valuators">
- <fieldref>num_valuators</fieldref>
- </list>
- </struct>
-
- <!-- SendExtensionEvent -->
-
- <request name="SendExtensionEvent" opcode="31">
- <field type="WINDOW" name="destination" />
- <field type="CARD8" name="device_id" />
- <field type="BOOL" name="propagate" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD8" name="num_events" />
- <pad bytes="3" />
- <list type="char" name="events">
- <op op="*">
- <fieldref>num_events</fieldref>
- <value>32</value>
- </op>
- </list>
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </request>
-
- <!-- DeviceBell -->
-
- <request name="DeviceBell" opcode="32">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="feedback_id" />
- <field type="CARD8" name="feedback_class" />
- <field type="INT8" name="percent" />
- </request>
-
- <!-- SetDeviceValuators -->
-
- <request name="SetDeviceValuators" opcode="33">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="first_valuator" />
- <field type="CARD8" name="num_valuators" />
- <pad bytes="1" />
- <list type="INT32" name="valuators">
- <fieldref>num_valuators</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- GetDeviceControl -->
-
- <request name="GetDeviceControl" opcode="34">
- <field type="CARD16" name="control_id" />
- <field type="CARD8" name="device_id" />
- <pad bytes="1" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- <!-- Uninterpreted: list of DeviceState structures -->
- </reply>
- </request>
-
- <struct name="DeviceState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- </struct>
-
- <struct name="DeviceResolutionState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="num_valuators" />
- <list type="CARD32" name="resolution_values">
- <fieldref>num_valuators</fieldref>
- </list>
- <list type="CARD32" name="resolution_min">
- <fieldref>num_valuators</fieldref>
- </list>
- <list type="CARD32" name="resolution_max">
- <fieldref>num_valuators</fieldref>
- </list>
- </struct>
-
- <struct name="DeviceAbsCalibState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="INT32" name="min_x" />
- <field type="INT32" name="max_x" />
- <field type="INT32" name="min_y" />
- <field type="INT32" name="max_y" />
- <field type="CARD32" name="flip_x" />
- <field type="CARD32" name="flip_y" />
- <field type="CARD32" name="rotation" />
- <field type="CARD32" name="button_threshold" />
- </struct>
-
- <struct name="DeviceAbsAreaState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="offset_x" />
- <field type="CARD32" name="offset_y" />
- <field type="CARD32" name="width" />
- <field type="CARD32" name="height" />
- <field type="CARD32" name="screen" />
- <field type="CARD32" name="following" />
- </struct>
-
- <struct name="DeviceCoreState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="status" />
- <field type="CARD8" name="iscore" />
- <pad bytes="2" />
- </struct>
-
- <struct name="DeviceEnableState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="enable" />
- <pad bytes="3" />
- </struct>
-
- <!-- ChangeDeviceControl
-
- <request name="ChangeDeviceControl" opcode="35">
- <field type="CARD16" name="control_id" />
- <field type="CARD8" name="device_id" />
- <pad bytes="1" />
- Uninterpreted: list of DeviceCtl structures
- <reply>
- <pad byte="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- -->
-
- <struct name="DeviceCtl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- </struct>
-
- <struct name="DeviceResolutionCtl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="first_valuator" />
- <field type="CARD8" name="num_valuators" />
- <list type="CARD32" name="resolution_values">
- <fieldref>num_valuators</fieldref>
- </list>
- </struct>
-
- <struct name="DeviceAbsCalibCtl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="INT32" name="min_x" />
- <field type="INT32" name="max_x" />
- <field type="INT32" name="min_y" />
- <field type="INT32" name="max_y" />
- <field type="CARD32" name="flip_x" />
- <field type="CARD32" name="flip_y" />
- <field type="CARD32" name="rotation" />
- <field type="CARD32" name="button_threshold" />
- </struct>
-
- <struct name="DeviceAbsAreaCtrl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="offset_x" />
- <field type="CARD32" name="offset_y" />
- <field type="INT32" name="width" />
- <field type="INT32" name="height" />
- <field type="INT32" name="screen" />
- <field type="CARD32" name="following" />
- </struct>
-
- <struct name="DeviceCoreCtrl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="status" />
- <pad bytes="3" />
- </struct>
-
- <struct name="DeviceEnableCtrl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="enable" />
- <pad bytes="3" />
- </struct>
-
- <!-- EVENTS -->
-
- <event name="DeviceValuator" number="0">
- <field type="CARD8" name="device_id" />
- <field type="CARD16" name="device_state" />
- <field type="CARD8" name="num_valuators" />
- <field type="CARD8" name="first_valuator" />
- <list type="INT32" name="valuators"><value>6</value></list>
- </event>
-
- <event name="DeviceKeyPress" number="1">
- <field type="BYTE" name="detail" />
- <field type="TIMESTAMP" name="time" />
- <field type="WINDOW" name="root" />
- <field type="WINDOW" name="event" />
- <field type="WINDOW" name="child" altenum="Window" />
- <field type="INT16" name="root_x" />
- <field type="INT16" name="root_y" />
- <field type="INT16" name="event_x" />
- <field type="INT16" name="event_y" />
- <field type="CARD16" name="state" />
- <field type="BOOL" name="same_screen" />
- <field type="CARD8" name="device_id" />
- </event>
-
- <eventcopy name="DeviceKeyRelease" number="2" ref="DeviceKeyPress" />
- <eventcopy name="DeviceButtonPress" number="3" ref="DeviceKeyPress" />
- <eventcopy name="DeviceButtonRelease" number="4" ref="DeviceKeyPress" />
- <eventcopy name="DeviceMotionNotify" number="5" ref="DeviceKeyPress" />
- <eventcopy name="ProximityIn" number="8" ref="DeviceKeyPress" />
- <eventcopy name="ProximityOut" number="9" ref="DeviceKeyPress" />
-
- <event name="FocusIn" number="6">
- <field type="BYTE" name="detail" enum="NotifyDetail" />
- <field type="TIMESTAMP" name="time" />
- <field type="WINDOW" name="window" />
- <field type="BYTE" name="mode" enum="NotifyMode" />
- <field type="CARD8" name="device_id" />
- <pad bytes="18" />
- </event>
-
- <eventcopy name="FocusOut" number="7" ref="FocusIn" />
-
- <event name="DeviceStateNotify" number="10">
- <field type="BYTE" name="device_id" />
- <field type="TIMESTAMP" name="time" />
- <field type="CARD8" name="num_keys" />
- <field type="CARD8" name="num_buttons" />
- <field type="CARD8" name="num_valuators" />
- <field type="CARD8" name="classes_reported" />
- <list type="CARD8" name="buttons">
- <value>4</value>
- </list>
- <list type="CARD8" name="keys">
- <value>4</value>
- </list>
- <list type="CARD32" name="valuators">
- <value>3</value>
- </list>
- </event>
-
- <event name="DeviceMappingNotify" number="11">
- <field type="BYTE" name="device_id" />
- <field type="CARD8" name="request" />
- <field type="KeyCode" name="first_keycode" />
- <field type="CARD8" name="count" />
- <pad bytes="1" />
- <field type="TIMESTAMP" name="time" />
- <pad bytes="20" />
- </event>
-
- <event name="ChangeDeviceNotify" number="12">
- <field type="BYTE" name="device_id" />
- <field type="TIMESTAMP" name="time" />
- <field type="CARD8" name="request" />
- <pad bytes="23" />
- </event>
-
- <event name="DeviceKeyStateNotify" number="13">
- <field type="BYTE" name="device_id" />
- <list type="CARD8" name="keys">
- <value>28</value>
- </list>
- </event>
-
- <event name="DeviceButtonStateNotify" number="14">
- <field type="BYTE" name="device_id" />
- <list type="CARD8" name="buttons">
- <value>28</value>
- </list>
- </event>
-
- <event name="DevicePresenceNotify" number="15">
- <pad bytes="1" />
- <field type="TIMESTAMP" name="time" />
- <field type="BYTE" name="devchange" />
- <field type="BYTE" name="device_id" />
- <field type="CARD16" name="control" />
- <pad bytes="20" />
- </event>
-
- <!-- ERRORS -->
- <error name="Device" number="0" />
- <error name="Event" number="1" />
- <error name="Mode" number="2" />
- <error name="DeviceBusy" number="3" />
- <error name="Class" number="4" />
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Peter Hutterer
+All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<!-- Spec: http://refspecs.freestandards.org/X11/Xinput.pdf -->
+
+<xcb header="xinput" extension-xname="XInputExtension" extension-name="Input"
+ major-version="1" minor-version="4">
+ <import>xproto</import>
+
+ <typedef oldname="CARD8" newname="KeyCode" />
+ <typedef oldname="CARD32" newname="EventClass" />
+
+ <enum name="ValuatorMode">
+ <item name="Relative"> <value>0</value></item>
+ <item name="Absolute"> <value>1</value></item>
+ </enum>
+
+ <enum name="PropagateMode">
+ <item name="AddToList"> <value>0</value></item>
+ <item name="DeleteFromList"> <value>1</value></item>
+ </enum>
+
+ <!-- GetExtensionVersion -->
+
+ <request name="GetExtensionVersion" opcode="1">
+ <field type="CARD16" name="name_len" />
+ <pad bytes="2" />
+ <list type="char" name="name">
+ <fieldref>name_len</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major" />
+ <field type="CARD16" name="server_minor" />
+ <field type="BOOL" name="present" />
+ <pad bytes="19" />
+ </reply>
+ </request>
+
+ <!-- ListInputDevices -->
+
+ <enum name="DeviceUse">
+ <item name="IsXPointer"><value>0</value></item>
+ <item name="IsXKeyboard"><value>1</value></item>
+ <item name="IsXExtensionDevice"><value>2</value></item>
+ <item name="IsXExtensionKeyboard"><value>3</value></item>
+ <item name="IsXExtensionPointer"><value>4</value></item>
+ </enum>
+
+ <struct name="DeviceInfo">
+ <field type="ATOM" name="device_type" />
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="num_class_info" />
+ <field type="CARD8" name="device_use" enum="DeviceUse" />
+ <pad bytes="1" />
+ </struct>
+
+ <request name="ListInputDevices" opcode="2">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="devices_len" />
+ <pad bytes="23" />
+ <list type="DeviceInfo" name="devices">
+ <fieldref>devices_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list of deviceinfo structs of 3 the subtypes -->
+ <!-- Uninterpreted: list of null-terminated strings -->
+ </reply>
+ </request>
+
+ <enum name="InputClass">
+ <item name="Key"><value>0</value></item>
+ <item name="Button"><value>1</value></item>
+ <item name="Valuator"><value>2</value></item>
+ <item name="Feedback"><value>3</value></item>
+ <item name="Proximity"><value>4</value></item>
+ <item name="Focus"><value>5</value></item>
+ <item name="Other"><value>6</value></item>
+ </enum>
+
+ <struct name="InputInfo">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ </struct>
+
+ <struct name="KeyInfo">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="KeyCode" name="min_keycode" />
+ <field type="KeyCode" name="max_keycode" />
+ <field type="CARD16" name="num_keys" />
+ <pad bytes="2" />
+ </struct>
+
+ <struct name="ButtonInfo">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD16" name="num_buttons" />
+ </struct>
+
+ <struct name="AxisInfo">
+ <field type="CARD32" name="resolution" />
+ <field type="INT32" name="minimum" />
+ <field type="INT32" name="maximum" />
+ </struct>
+
+ <struct name="ValuatorInfo">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="axes_len" />
+ <field type="CARD8" name="mode" enum="ValuatorMode" />
+ <field type="CARD32" name="motion_size" />
+ <list type="AxisInfo" name="axes">
+ <fieldref>axes_len</fieldref>
+ </list>
+ </struct>
+
+ <!-- OpenDevice -->
+
+ <struct name="InputClassInfo">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="event_type_base" />
+ </struct>
+
+ <request name="OpenDevice" opcode="3">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="num_classes" />
+ <pad bytes="23" />
+ <list type="InputClassInfo" name="class_info">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- CloseDevice -->
+
+ <request name="CloseDevice" opcode="4">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ </request>
+
+ <!-- SetDeviceMode -->
+
+ <request name="SetDeviceMode" opcode="5">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="mode" enum="ValuatorMode" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- SelectExtensionEvent -->
+
+ <request name="SelectExtensionEvent" opcode="6">
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="num_classes" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </request>
+
+ <!-- GetSelectedExtensionEvents -->
+
+ <request name="GetSelectedExtensionEvents" opcode="7">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_this_classes" />
+ <field type="CARD16" name="num_all_classes" />
+ <pad bytes="20" />
+ <list type="EventClass" name="this_classes">
+ <fieldref>num_this_classes</fieldref>
+ </list>
+ <list type="EventClass" name="all_classes">
+ <fieldref>num_all_classes</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- ChangeDeviceDontPropagateList -->
+
+ <request name="ChangeDeviceDontPropagateList" opcode="8">
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD8" name="mode" enum="PropagateMode" />
+ <pad bytes="1" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </request>
+
+ <!-- GetDeviceDontPropagateList -->
+
+ <request name="GetDeviceDontPropagateList" opcode="9">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_classes" />
+ <pad bytes="22" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- GetDeviceMotionEvents -->
+
+ <request name="GetDeviceMotionEvents" opcode="10">
+ <field type="TIMESTAMP" name="start" />
+ <field type="TIMESTAMP" name="stop" altenum="Time" />
+ <field type="CARD8" name="device_id" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_coords" />
+ <field type="CARD8" name="num_axes" />
+ <field type="CARD8" name="device_mode" enum="ValuatorMode" />
+ <pad bytes="18" />
+ <!-- Uninterpreted: list of DeviceTimeCoord structures -->
+ </reply>
+ </request>
+
+ <struct name="DeviceTimeCoord">
+ <field type="TIMESTAMP" name="time" />
+ <!-- Uninterpreted: list of CARD16 -->
+ </struct>
+
+ <!-- ChangeKeyboardDevice -->
+ <request name="ChangeKeyboardDevice" opcode="11">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- ChangePointerDevice -->
+
+ <request name="ChangePointerDevice" opcode="12">
+ <field type="CARD8" name="x_axis" />
+ <field type="CARD8" name="y_axis" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="1" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- GrabDevice -->
+
+ <request name="GrabDevice" opcode="13">
+ <field type="WINDOW" name="grab_window" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD8" name="this_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="other_device_mode" enum="GrabMode" />
+ <field type="BOOL" name="owner_events" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- UngrabDevice -->
+
+ <request name="UngrabDevice" opcode="14">
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD8" name="device_id" />
+ </request>
+
+ <!-- GrabDeviceKey -->
+
+ <request name="GrabDeviceKey" opcode="15">
+ <field type="WINDOW" name="grab_window" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD8" name="grabbed_device" />
+ <field type="CARD8" name="key" altenum="Grab" />
+ <field type="CARD8" name="this_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="other_device_mode" enum="GrabMode" />
+ <field type="BOOL" name="owner_events" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </request>
+
+ <!-- UngrabDeviceKey -->
+
+ <request name="UngrabDeviceKey" opcode="16">
+ <field type="WINDOW" name="grabWindow" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD8" name="key" altenum="Grab" />
+ <field type="CARD8" name="grabbed_device" />
+ </request>
+
+ <!-- GrabDeviceButton -->
+
+ <request name="GrabDeviceButton" opcode="17">
+ <field type="WINDOW" name="grab_window" />
+ <field type="CARD8" name="grabbed_device" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="this_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="other_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="button" altenum="Grab" />
+ <field type="CARD8" name="owner_events" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </request>
+
+ <!-- UngrabDeviceButton -->
+
+ <request name="UngrabDeviceButton" opcode="18">
+ <field type="WINDOW" name="grab_window" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD8" name="button" altenum="Grab" />
+ <field type="CARD8" name="grabbed_device" />
+ </request>
+
+ <!-- AllowDeviceEvents -->
+
+ <enum name="DeviceInputMode">
+ <item name="AsyncThisDevice" />
+ <item name="SyncThisDevice" />
+ <item name="ReplayThisDevice" />
+ <item name="AsyncOtherDevices" />
+ <item name="AsyncAll" />
+ <item name="SyncAll" />
+ </enum>
+
+ <request name="AllowDeviceEvents" opcode="19">
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD8" name="mode" enum="DeviceInputMode" />
+ <field type="CARD8" name="device_id" />
+ </request>
+
+ <!-- GetDeviceFocus -->
+
+ <request name="GetDeviceFocus" opcode="20">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="WINDOW" name="focus" altenum="InputFocus" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="CARD8" name="revert_to" enum="InputFocus" />
+ <pad bytes="15" />
+ </reply>
+ </request>
+
+ <!-- SetDeviceFocus -->
+
+ <request name="SetDeviceFocus" opcode="21">
+ <field type="WINDOW" name="focus" altenum="InputFocus" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD8" name="revert_to" enum="InputFocus" />
+ <field type="CARD8" name="device_id" />
+ </request>
+
+ <!-- GetFeedbackControl -->
+
+ <request name="GetFeedbackControl" opcode="22">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_feedback" />
+ <pad bytes="22" />
+ <!-- Uninterpreted: list of FeedbackState structures -->
+ </reply>
+ </request>
+
+ <enum name="FeedbackClass">
+ <item name="Keyboard" />
+ <item name="Pointer" />
+ <item name="String" />
+ <item name="Integer" />
+ <item name="Led" />
+ <item name="Bell" />
+ </enum>
+
+ <struct name="FeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ </struct>
+
+ <struct name="KbdFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD16" name="pitch" />
+ <field type="CARD16" name="duration" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ <field type="BOOL" name="global_auto_repeat" />
+ <field type="CARD8" name="click" />
+ <field type="CARD8" name="percent" />
+ <pad bytes="1" />
+ <list type="CARD8" name="auto_repeats"><value>32</value></list>
+ </struct>
+
+ <struct name="PtrFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <pad bytes="2" />
+ <field type="CARD16" name="accel_num" />
+ <field type="CARD16" name="accel_denom" />
+ <field type="CARD16" name="threshold" />
+ </struct>
+
+ <struct name="IntegerFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="resolution" />
+ <field type="INT32" name="min_value" />
+ <field type="INT32" name="max_value" />
+ </struct>
+
+ <struct name="StringFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD16" name="max_symbols" />
+ <field type="CARD16" name="num_keysyms" />
+ <list type="KEYSYM" name="keysyms">
+ <fieldref>num_keysyms</fieldref>
+ </list>
+ </struct>
+
+ <struct name="BellFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="percent" />
+ <pad bytes="3" />
+ <field type="CARD16" name="pitch" />
+ <field type="CARD16" name="duration" />
+ </struct>
+
+ <struct name="LedFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ </struct>
+
+ <!-- ChangeFeedbackControl
+
+ <request name="ChangeFeedbackControl" opcode="23">
+ <field type="CARD32" name="mask" />
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="feedback_id" />
+ Uninterpreted: list of FeedbackCtl structures
+ </request>
+
+ -->
+
+ <struct name="FeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ </struct>
+
+ <struct name="KbdFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="KeyCode" name="key" />
+ <field type="CARD8" name="auto_repeat_mode" />
+ <field type="INT8" name="key_click_percent" />
+ <field type="INT8" name="bell_percent" />
+ <field type="INT16" name="bell_pitch" />
+ <field type="INT16" name="bell_duration" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ </struct>
+
+ <struct name="PtrFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <pad bytes="2" />
+ <field type="INT16" name="num" />
+ <field type="INT16" name="denom" />
+ <field type="INT16" name="threshold" />
+ </struct>
+
+ <struct name="IntegerFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="INT32" name="int_to_display" />
+ </struct>
+
+ <struct name="StringFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <pad bytes="2" />
+ <field type="CARD16" name="num_keysyms" />
+ <list type="KEYSYM" name="keysyms">
+ <fieldref>num_keysyms</fieldref>
+ </list>
+ </struct>
+
+ <struct name="BellFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="INT8" name="percent" />
+ <pad bytes="3" />
+ <field type="INT16" name="pitch" />
+ <field type="INT16" name="duration" />
+ </struct>
+
+ <struct name="LedFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ </struct>
+
+ <!-- GetDeviceKeyMapping -->
+
+ <request name="GetDeviceKeyMapping" opcode="24">
+ <field type="CARD8" name="device_id" />
+ <field type="KeyCode" name="first_keycode" />
+ <field type="CARD8" name="count" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="keysyms_per_keycode" />
+ <pad bytes="23" />
+ <list type="KEYSYM" name="keysyms">
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- ChangeDeviceKeyMapping -->
+
+ <request name="ChangeDeviceKeyMapping" opcode="25">
+ <field type="CARD8" name="device_id" />
+ <field type="KeyCode" name="first_keycode" />
+ <field type="CARD8" name="keysyms_per_keycode" />
+ <field type="CARD8" name="keycode_count" />
+ <list type="KEYSYM" name="keysyms">
+ <op op="*">
+ <fieldref>keycode_count</fieldref>
+ <fieldref>keysyms_per_keycode</fieldref>
+ </op>
+ </list>
+ </request>
+
+ <!-- GetDeviceModifierMapping -->
+
+ <request name="GetDeviceModifierMapping" opcode="26">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="keycodes_per_modifier" />
+ <pad bytes="23" />
+ <list type="CARD8" name="keymaps">
+ <op op="*">
+ <fieldref>keycodes_per_modifier</fieldref>
+ <value>8</value>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <!-- SetDeviceModifierMapping -->
+
+ <request name="SetDeviceModifierMapping" opcode="27">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="keycodes_per_modifier" />
+ <pad bytes="1" />
+ <list type="CARD8" name="keymaps">
+ <op op="*">
+ <fieldref>keycodes_per_modifier</fieldref>
+ <value>8</value>
+ </op>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="MappingStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- GetDeviceButtonMapping -->
+
+ <request name="GetDeviceButtonMapping" opcode="28">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="map_size" />
+ <pad bytes="23" />
+ <list type="CARD8" name="map">
+ <fieldref>map_size</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- SetDeviceButtonMapping -->
+
+ <request name="SetDeviceButtonMapping" opcode="29">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="map_size" />
+ <pad bytes="2" />
+ <list type="CARD8" name="map">
+ <fieldref>map_size</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="MappingStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- QueryDeviceState -->
+
+ <request name="QueryDeviceState" opcode="30">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="num_classes" />
+ <pad bytes="23" />
+ <!-- Uninterpreted: list of InputState structures -->
+ </reply>
+ </request>
+
+ <struct name="InputState">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_items" />
+ </struct>
+
+ <struct name="KeyState">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_keys" />
+ <pad bytes="1" />
+ <list type="CARD8" name="keys">
+ <value>32</value>
+ </list>
+ </struct>
+
+ <struct name="ButtonState">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_buttons" />
+ <pad bytes="1" />
+ <list type="CARD8" name="buttons">
+ <value>32</value>
+ </list>
+ </struct>
+
+ <struct name="ValuatorState">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_valuators" />
+ <field type="CARD8" name="mode" />
+ <list type="CARD32" name="valuators">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ </struct>
+
+ <!-- SendExtensionEvent -->
+
+ <request name="SendExtensionEvent" opcode="31">
+ <field type="WINDOW" name="destination" />
+ <field type="CARD8" name="device_id" />
+ <field type="BOOL" name="propagate" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD8" name="num_events" />
+ <pad bytes="3" />
+ <list type="char" name="events">
+ <op op="*">
+ <fieldref>num_events</fieldref>
+ <value>32</value>
+ </op>
+ </list>
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </request>
+
+ <!-- DeviceBell -->
+
+ <request name="DeviceBell" opcode="32">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD8" name="feedback_class" />
+ <field type="INT8" name="percent" />
+ </request>
+
+ <!-- SetDeviceValuators -->
+
+ <request name="SetDeviceValuators" opcode="33">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="first_valuator" />
+ <field type="CARD8" name="num_valuators" />
+ <pad bytes="1" />
+ <list type="INT32" name="valuators">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- GetDeviceControl -->
+
+ <request name="GetDeviceControl" opcode="34">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="1" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ <!-- Uninterpreted: list of DeviceState structures -->
+ </reply>
+ </request>
+
+ <struct name="DeviceState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ </struct>
+
+ <struct name="DeviceResolutionState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="num_valuators" />
+ <list type="CARD32" name="resolution_values">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ <list type="CARD32" name="resolution_min">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ <list type="CARD32" name="resolution_max">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ </struct>
+
+ <struct name="DeviceAbsCalibState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="INT32" name="min_x" />
+ <field type="INT32" name="max_x" />
+ <field type="INT32" name="min_y" />
+ <field type="INT32" name="max_y" />
+ <field type="CARD32" name="flip_x" />
+ <field type="CARD32" name="flip_y" />
+ <field type="CARD32" name="rotation" />
+ <field type="CARD32" name="button_threshold" />
+ </struct>
+
+ <struct name="DeviceAbsAreaState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="offset_x" />
+ <field type="CARD32" name="offset_y" />
+ <field type="CARD32" name="width" />
+ <field type="CARD32" name="height" />
+ <field type="CARD32" name="screen" />
+ <field type="CARD32" name="following" />
+ </struct>
+
+ <struct name="DeviceCoreState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="status" />
+ <field type="CARD8" name="iscore" />
+ <pad bytes="2" />
+ </struct>
+
+ <struct name="DeviceEnableState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="enable" />
+ <pad bytes="3" />
+ </struct>
+
+ <!-- ChangeDeviceControl
+
+ <request name="ChangeDeviceControl" opcode="35">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="1" />
+ Uninterpreted: list of DeviceCtl structures
+ <reply>
+ <pad byte="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ -->
+
+ <struct name="DeviceCtl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ </struct>
+
+ <struct name="DeviceResolutionCtl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="first_valuator" />
+ <field type="CARD8" name="num_valuators" />
+ <list type="CARD32" name="resolution_values">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ </struct>
+
+ <struct name="DeviceAbsCalibCtl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="INT32" name="min_x" />
+ <field type="INT32" name="max_x" />
+ <field type="INT32" name="min_y" />
+ <field type="INT32" name="max_y" />
+ <field type="CARD32" name="flip_x" />
+ <field type="CARD32" name="flip_y" />
+ <field type="CARD32" name="rotation" />
+ <field type="CARD32" name="button_threshold" />
+ </struct>
+
+ <struct name="DeviceAbsAreaCtrl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="offset_x" />
+ <field type="CARD32" name="offset_y" />
+ <field type="INT32" name="width" />
+ <field type="INT32" name="height" />
+ <field type="INT32" name="screen" />
+ <field type="CARD32" name="following" />
+ </struct>
+
+ <struct name="DeviceCoreCtrl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="status" />
+ <pad bytes="3" />
+ </struct>
+
+ <struct name="DeviceEnableCtrl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="enable" />
+ <pad bytes="3" />
+ </struct>
+
+ <!-- EVENTS -->
+
+ <event name="DeviceValuator" number="0">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD16" name="device_state" />
+ <field type="CARD8" name="num_valuators" />
+ <field type="CARD8" name="first_valuator" />
+ <list type="INT32" name="valuators"><value>6</value></list>
+ </event>
+
+ <event name="DeviceKeyPress" number="1">
+ <field type="BYTE" name="detail" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="WINDOW" name="child" altenum="Window" />
+ <field type="INT16" name="root_x" />
+ <field type="INT16" name="root_y" />
+ <field type="INT16" name="event_x" />
+ <field type="INT16" name="event_y" />
+ <field type="CARD16" name="state" />
+ <field type="BOOL" name="same_screen" />
+ <field type="CARD8" name="device_id" />
+ </event>
+
+ <eventcopy name="DeviceKeyRelease" number="2" ref="DeviceKeyPress" />
+ <eventcopy name="DeviceButtonPress" number="3" ref="DeviceKeyPress" />
+ <eventcopy name="DeviceButtonRelease" number="4" ref="DeviceKeyPress" />
+ <eventcopy name="DeviceMotionNotify" number="5" ref="DeviceKeyPress" />
+ <eventcopy name="ProximityIn" number="8" ref="DeviceKeyPress" />
+ <eventcopy name="ProximityOut" number="9" ref="DeviceKeyPress" />
+
+ <event name="FocusIn" number="6">
+ <field type="BYTE" name="detail" enum="NotifyDetail" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="WINDOW" name="window" />
+ <field type="BYTE" name="mode" enum="NotifyMode" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="18" />
+ </event>
+
+ <eventcopy name="FocusOut" number="7" ref="FocusIn" />
+
+ <event name="DeviceStateNotify" number="10">
+ <field type="BYTE" name="device_id" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="CARD8" name="num_keys" />
+ <field type="CARD8" name="num_buttons" />
+ <field type="CARD8" name="num_valuators" />
+ <field type="CARD8" name="classes_reported" />
+ <list type="CARD8" name="buttons">
+ <value>4</value>
+ </list>
+ <list type="CARD8" name="keys">
+ <value>4</value>
+ </list>
+ <list type="CARD32" name="valuators">
+ <value>3</value>
+ </list>
+ </event>
+
+ <event name="DeviceMappingNotify" number="11">
+ <field type="BYTE" name="device_id" />
+ <field type="CARD8" name="request" />
+ <field type="KeyCode" name="first_keycode" />
+ <field type="CARD8" name="count" />
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="time" />
+ <pad bytes="20" />
+ </event>
+
+ <event name="ChangeDeviceNotify" number="12">
+ <field type="BYTE" name="device_id" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="CARD8" name="request" />
+ <pad bytes="23" />
+ </event>
+
+ <event name="DeviceKeyStateNotify" number="13">
+ <field type="BYTE" name="device_id" />
+ <list type="CARD8" name="keys">
+ <value>28</value>
+ </list>
+ </event>
+
+ <event name="DeviceButtonStateNotify" number="14">
+ <field type="BYTE" name="device_id" />
+ <list type="CARD8" name="buttons">
+ <value>28</value>
+ </list>
+ </event>
+
+ <event name="DevicePresenceNotify" number="15">
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="BYTE" name="devchange" />
+ <field type="BYTE" name="device_id" />
+ <field type="CARD16" name="control" />
+ <pad bytes="20" />
+ </event>
+
+ <!-- ERRORS -->
+ <error name="Device" number="0" />
+ <error name="Event" number="1" />
+ <error name="Mode" number="2" />
+ <error name="DeviceBusy" number="3" />
+ <error name="Class" number="4" />
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/xprint.xml b/libxcb/xcb-proto/src/xprint.xml
index ffd8df1ea..4107e96e5 100644
--- a/libxcb/xcb-proto/src/xprint.xml
+++ b/libxcb/xcb-proto/src/xprint.xml
@@ -1,329 +1,329 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2005 Jeremy Kolb.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person ob/Sintaining 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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-
-<xcb header="xprint" extension-xname="XpExtension" extension-name="XPrint"
- extension-multiword="true" major-version="1" minor-version="0">
-
- <!-- Conforms to XPRINT 1.0 -->
-
- <import>xproto</import>
-
- <typedef oldname="char" newname="STRING8" />
-
- <!-- Types -->
- <struct name="PRINTER">
- <field type="CARD32" name="nameLen" />
- <list type="STRING8" name="name">
- <fieldref>nameLen</fieldref>
- </list>
- <!-- Padding -->
- <field type="CARD32" name="descLen" />
- <list type="STRING8" name="description">
- <fieldref>descLen</fieldref>
- </list>
- <!-- More padding -->
- </struct>
-
- <!--<typedef oldname="CARD32" newname="PCONTEXT" />-->
- <xidtype name="PCONTEXT" />
-
- <!-- "PrintGetDocumentData" -->
- <enum name="GetDoc">
- <item name="Finished"><value>0</value></item>
- <item name="SecondConsumer"><value>1</value></item>
- </enum>
-
- <!-- Event Mask ("PrintSelectInput") -->
- <enum name="EvMask">
- <item name="NoEventMask"><value>0</value></item>
- <item name="PrintMask"><bit>0</bit></item>
- <item name="AttributeMask"><bit>1</bit></item>
- </enum>
-
- <!-- "PrintNotify" detail -->
- <enum name="Detail">
- <item name="StartJobNotify"><value>1</value></item>
- <item name="EndJobNotify"><value>2</value></item>
- <item name="StartDocNotify"><value>3</value></item>
- <item name="EndDocNotify"><value>4</value></item>
- <item name="StartPageNotify"><value>5</value></item>
- <item name="EndPageNotify"><value>6</value></item>
- </enum>
-
- <!-- "AttributeNotify" detail -->
- <enum name="Attr">
- <item name="JobAttr"><value>1</value></item>
- <item name="DocAttr"><value>2</value></item>
- <item name="PageAttr"><value>3</value></item>
- <item name="PrinterAttr"><value>4</value></item>
- <item name="ServerAttr"><value>5</value></item>
- <item name="MediumAttr"><value>6</value></item>
- <item name="SpoolerAttr"><value>7</value></item>
- </enum>
-
-
- <!-- Requests -->
- <request name="PrintQueryVersion" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- </reply>
- </request>
-
- <request name="PrintGetPrinterList" opcode="1">
- <field type="CARD32" name="printerNameLen" />
- <field type="CARD32" name="localeLen" />
- <list type="STRING8" name="printer_name">
- <fieldref>printerNameLen</fieldref>
- </list>
- <!-- There's some padding in here... -->
- <list type="STRING8" name="locale">
- <fieldref>localeLen</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="listCount" />
- <pad bytes="20" />
- <list type="PRINTER" name="printers">
- <fieldref>listCount</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="PrintRehashPrinterList" opcode="20" />
-
- <request name="CreateContext" opcode="2">
- <field type="CARD32" name="context_id" />
- <field type="CARD32" name="printerNameLen" />
- <field type="CARD32" name="localeLen" />
- <list type="STRING8" name="printerName">
- <fieldref>printerNameLen</fieldref>
- </list>
- <!-- padding -->
- <list type="STRING8" name="locale">
- <fieldref>localeLen</fieldref>
- </list>
- </request>
-
- <request name="PrintSetContext" opcode="3">
- <field type="CARD32" name="context" />
- </request>
-
- <request name="PrintGetContext" opcode="4">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context" />
- </reply>
- </request>
-
- <request name="PrintDestroyContext" opcode="5">
- <field type="CARD32" name="context" />
- </request>
-
- <request name="PrintGetScreenOfContext" opcode="6">
- <reply>
- <pad bytes="1" />
- <field type="WINDOW" name="root" />
- </reply>
- </request>
-
- <request name="PrintStartJob" opcode="7">
- <field type="CARD8" name="output_mode"/>
- </request>
-
- <request name="PrintEndJob" opcode="8">
- <field type="BOOL" name="cancel" />
- </request>
-
- <request name="PrintStartDoc" opcode="9">
- <field type="CARD8" name="driver_mode" />
- </request>
-
- <request name="PrintEndDoc" opcode="10">
- <field type="BOOL" name="cancel" />
- </request>
-
- <request name="PrintPutDocumentData" opcode="11">
- <field type="DRAWABLE" name="drawable" />
- <field type="CARD32" name="len_data" />
- <field type="CARD16" name="len_fmt" />
- <field type="CARD16" name="len_options" />
- <list type="BYTE" name="data">
- <fieldref>len_data</fieldref>
- </list>
- <!-- padding -->
- <list type="STRING8" name="doc_format" />
- <!-- padding -->
- <list type="STRING8" name="options" />
- </request>
-
- <request name="PrintGetDocumentData" opcode="12">
- <field type="PCONTEXT" name="context" />
- <field type="CARD32" name="max_bytes" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="status_code" />
- <field type="CARD32" name="finished_flag" />
- <field type="CARD32" name="dataLen" />
- <pad bytes="12" />
- <list type="BYTE" name="data">
- <fieldref>dataLen</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="PrintStartPage" opcode="13">
- <field type="WINDOW" name="window" />
- </request>
-
- <request name="PrintEndPage" opcode="14">
- <field type="BOOL" name="cancel" />
- <pad bytes="3" />
- </request>
-
- <request name="PrintSelectInput" opcode="15">
- <field type="PCONTEXT" name="context" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="event_mask"
- value-list-name="event_list" />
- </request>
-
- <request name="PrintInputSelected" opcode="16">
- <field type="PCONTEXT" name="context" />
- <reply>
- <pad bytes="1" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="event_mask"
- value-list-name="event_list" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="all_events_mask"
- value-list-name="all_events_list" />
- </reply>
- </request>
-
- <request name="PrintGetAttributes" opcode="17">
- <field type="PCONTEXT" name="context" />
- <field type="CARD8" name="pool" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="stringLen" />
- <pad bytes="20" />
- <field type="STRING8" name="attributes" />
- </reply>
- </request>
-
- <request name="PrintGetOneAttributes" opcode="19">
- <field type="PCONTEXT" name="context" />
- <field type="CARD32" name="nameLen" />
- <field type="CARD8" name="pool" />
- <pad bytes="3" />
- <list type="STRING8" name="name">
- <fieldref>nameLen</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="valueLen" />
- <pad bytes="20" />
- <list type="STRING8" name="value">
- <fieldref>valueLen</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="PrintSetAttributes" opcode="18">
- <field type="PCONTEXT" name="context" />
- <field type="CARD32" name="stringLen" />
- <field type="CARD8" name="pool" />
- <field type="CARD8" name="rule" />
- <pad bytes="2" />
- <list type="STRING8" name="attributes" />
- </request>
-
- <request name="PrintGetPageDimensions" opcode="21">
- <field type="PCONTEXT" name="context" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="offset_x" />
- <field type="CARD16" name="offset_y" />
- <field type="CARD16" name="reproducible_width" />
- <field type="CARD16" name="reproducible_height" />
- </reply>
- </request>
-
- <request name="PrintQueryScreens" opcode="22">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="listCount" />
- <pad bytes="20" />
- <list type="WINDOW" name="roots">
- <fieldref>listCount</fieldref>
- </list>
- <!-- There may be a WINDOW rootWindow here... -->
- </reply>
- </request>
-
- <request name="PrintSetImageResolution" opcode="23">
- <field type="PCONTEXT" name="context" />
- <field type="CARD16" name="image_resolution" />
- <reply>
- <field type="BOOL" name="status" />
- <field type="CARD16" name="previous_resolutions" />
- </reply>
- </request>
-
- <request name="PrintGetImageResolution" opcode="24">
- <field type="PCONTEXT" name="context" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="image_resolution" />
- </reply>
- </request>
-
-
- <!-- Events -->
- <event name="Notify" number="0">
- <field type="CARD8" name="detail" />
- <field type="PCONTEXT" name="context" />
- <field type="BOOL" name="cancel" />
- </event>
-
- <event name="AttributNotify" number="1">
- <field type="CARD8" name="detail" />
- <field type="PCONTEXT" name="context" />
- </event>
-
- <!-- Errors -->
- <error name="BadContext" number="0" />
- <error name="BadSequence" number="1" />
-
-</xcb>
-
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2005 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining 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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="xprint" extension-xname="XpExtension" extension-name="XPrint"
+ extension-multiword="true" major-version="1" minor-version="0">
+
+ <!-- Conforms to XPRINT 1.0 -->
+
+ <import>xproto</import>
+
+ <typedef oldname="char" newname="STRING8" />
+
+ <!-- Types -->
+ <struct name="PRINTER">
+ <field type="CARD32" name="nameLen" />
+ <list type="STRING8" name="name">
+ <fieldref>nameLen</fieldref>
+ </list>
+ <!-- Padding -->
+ <field type="CARD32" name="descLen" />
+ <list type="STRING8" name="description">
+ <fieldref>descLen</fieldref>
+ </list>
+ <!-- More padding -->
+ </struct>
+
+ <!--<typedef oldname="CARD32" newname="PCONTEXT" />-->
+ <xidtype name="PCONTEXT" />
+
+ <!-- "PrintGetDocumentData" -->
+ <enum name="GetDoc">
+ <item name="Finished"><value>0</value></item>
+ <item name="SecondConsumer"><value>1</value></item>
+ </enum>
+
+ <!-- Event Mask ("PrintSelectInput") -->
+ <enum name="EvMask">
+ <item name="NoEventMask"><value>0</value></item>
+ <item name="PrintMask"><bit>0</bit></item>
+ <item name="AttributeMask"><bit>1</bit></item>
+ </enum>
+
+ <!-- "PrintNotify" detail -->
+ <enum name="Detail">
+ <item name="StartJobNotify"><value>1</value></item>
+ <item name="EndJobNotify"><value>2</value></item>
+ <item name="StartDocNotify"><value>3</value></item>
+ <item name="EndDocNotify"><value>4</value></item>
+ <item name="StartPageNotify"><value>5</value></item>
+ <item name="EndPageNotify"><value>6</value></item>
+ </enum>
+
+ <!-- "AttributeNotify" detail -->
+ <enum name="Attr">
+ <item name="JobAttr"><value>1</value></item>
+ <item name="DocAttr"><value>2</value></item>
+ <item name="PageAttr"><value>3</value></item>
+ <item name="PrinterAttr"><value>4</value></item>
+ <item name="ServerAttr"><value>5</value></item>
+ <item name="MediumAttr"><value>6</value></item>
+ <item name="SpoolerAttr"><value>7</value></item>
+ </enum>
+
+
+ <!-- Requests -->
+ <request name="PrintQueryVersion" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ </reply>
+ </request>
+
+ <request name="PrintGetPrinterList" opcode="1">
+ <field type="CARD32" name="printerNameLen" />
+ <field type="CARD32" name="localeLen" />
+ <list type="STRING8" name="printer_name">
+ <fieldref>printerNameLen</fieldref>
+ </list>
+ <!-- There's some padding in here... -->
+ <list type="STRING8" name="locale">
+ <fieldref>localeLen</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="listCount" />
+ <pad bytes="20" />
+ <list type="PRINTER" name="printers">
+ <fieldref>listCount</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="PrintRehashPrinterList" opcode="20" />
+
+ <request name="CreateContext" opcode="2">
+ <field type="CARD32" name="context_id" />
+ <field type="CARD32" name="printerNameLen" />
+ <field type="CARD32" name="localeLen" />
+ <list type="STRING8" name="printerName">
+ <fieldref>printerNameLen</fieldref>
+ </list>
+ <!-- padding -->
+ <list type="STRING8" name="locale">
+ <fieldref>localeLen</fieldref>
+ </list>
+ </request>
+
+ <request name="PrintSetContext" opcode="3">
+ <field type="CARD32" name="context" />
+ </request>
+
+ <request name="PrintGetContext" opcode="4">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context" />
+ </reply>
+ </request>
+
+ <request name="PrintDestroyContext" opcode="5">
+ <field type="CARD32" name="context" />
+ </request>
+
+ <request name="PrintGetScreenOfContext" opcode="6">
+ <reply>
+ <pad bytes="1" />
+ <field type="WINDOW" name="root" />
+ </reply>
+ </request>
+
+ <request name="PrintStartJob" opcode="7">
+ <field type="CARD8" name="output_mode"/>
+ </request>
+
+ <request name="PrintEndJob" opcode="8">
+ <field type="BOOL" name="cancel" />
+ </request>
+
+ <request name="PrintStartDoc" opcode="9">
+ <field type="CARD8" name="driver_mode" />
+ </request>
+
+ <request name="PrintEndDoc" opcode="10">
+ <field type="BOOL" name="cancel" />
+ </request>
+
+ <request name="PrintPutDocumentData" opcode="11">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD32" name="len_data" />
+ <field type="CARD16" name="len_fmt" />
+ <field type="CARD16" name="len_options" />
+ <list type="BYTE" name="data">
+ <fieldref>len_data</fieldref>
+ </list>
+ <!-- padding -->
+ <list type="STRING8" name="doc_format" />
+ <!-- padding -->
+ <list type="STRING8" name="options" />
+ </request>
+
+ <request name="PrintGetDocumentData" opcode="12">
+ <field type="PCONTEXT" name="context" />
+ <field type="CARD32" name="max_bytes" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="status_code" />
+ <field type="CARD32" name="finished_flag" />
+ <field type="CARD32" name="dataLen" />
+ <pad bytes="12" />
+ <list type="BYTE" name="data">
+ <fieldref>dataLen</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="PrintStartPage" opcode="13">
+ <field type="WINDOW" name="window" />
+ </request>
+
+ <request name="PrintEndPage" opcode="14">
+ <field type="BOOL" name="cancel" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="PrintSelectInput" opcode="15">
+ <field type="PCONTEXT" name="context" />
+ <valueparam value-mask-type="CARD32"
+ value-mask-name="event_mask"
+ value-list-name="event_list" />
+ </request>
+
+ <request name="PrintInputSelected" opcode="16">
+ <field type="PCONTEXT" name="context" />
+ <reply>
+ <pad bytes="1" />
+ <valueparam value-mask-type="CARD32"
+ value-mask-name="event_mask"
+ value-list-name="event_list" />
+ <valueparam value-mask-type="CARD32"
+ value-mask-name="all_events_mask"
+ value-list-name="all_events_list" />
+ </reply>
+ </request>
+
+ <request name="PrintGetAttributes" opcode="17">
+ <field type="PCONTEXT" name="context" />
+ <field type="CARD8" name="pool" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="stringLen" />
+ <pad bytes="20" />
+ <field type="STRING8" name="attributes" />
+ </reply>
+ </request>
+
+ <request name="PrintGetOneAttributes" opcode="19">
+ <field type="PCONTEXT" name="context" />
+ <field type="CARD32" name="nameLen" />
+ <field type="CARD8" name="pool" />
+ <pad bytes="3" />
+ <list type="STRING8" name="name">
+ <fieldref>nameLen</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="valueLen" />
+ <pad bytes="20" />
+ <list type="STRING8" name="value">
+ <fieldref>valueLen</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="PrintSetAttributes" opcode="18">
+ <field type="PCONTEXT" name="context" />
+ <field type="CARD32" name="stringLen" />
+ <field type="CARD8" name="pool" />
+ <field type="CARD8" name="rule" />
+ <pad bytes="2" />
+ <list type="STRING8" name="attributes" />
+ </request>
+
+ <request name="PrintGetPageDimensions" opcode="21">
+ <field type="PCONTEXT" name="context" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="offset_x" />
+ <field type="CARD16" name="offset_y" />
+ <field type="CARD16" name="reproducible_width" />
+ <field type="CARD16" name="reproducible_height" />
+ </reply>
+ </request>
+
+ <request name="PrintQueryScreens" opcode="22">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="listCount" />
+ <pad bytes="20" />
+ <list type="WINDOW" name="roots">
+ <fieldref>listCount</fieldref>
+ </list>
+ <!-- There may be a WINDOW rootWindow here... -->
+ </reply>
+ </request>
+
+ <request name="PrintSetImageResolution" opcode="23">
+ <field type="PCONTEXT" name="context" />
+ <field type="CARD16" name="image_resolution" />
+ <reply>
+ <field type="BOOL" name="status" />
+ <field type="CARD16" name="previous_resolutions" />
+ </reply>
+ </request>
+
+ <request name="PrintGetImageResolution" opcode="24">
+ <field type="PCONTEXT" name="context" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="image_resolution" />
+ </reply>
+ </request>
+
+
+ <!-- Events -->
+ <event name="Notify" number="0">
+ <field type="CARD8" name="detail" />
+ <field type="PCONTEXT" name="context" />
+ <field type="BOOL" name="cancel" />
+ </event>
+
+ <event name="AttributNotify" number="1">
+ <field type="CARD8" name="detail" />
+ <field type="PCONTEXT" name="context" />
+ </event>
+
+ <!-- Errors -->
+ <error name="BadContext" number="0" />
+ <error name="BadSequence" number="1" />
+
+</xcb>
+
diff --git a/libxcb/xcb-proto/src/xselinux.xml b/libxcb/xcb-proto/src/xselinux.xml
index 7751470ca..2031fec57 100644
--- a/libxcb/xcb-proto/src/xselinux.xml
+++ b/libxcb/xcb-proto/src/xselinux.xml
@@ -1,276 +1,276 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-<xcb header="xselinux" extension-xname="SELinux" extension-name="SELinux"
- extension-multiword="false" major-version="1" minor-version="0">
- <import>xproto</import>
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD8" name="client_major" />
- <field type="CARD8" name="client_minor" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major" />
- <field type="CARD16" name="server_minor" />
- </reply>
- </request>
-
- <request name="SetDeviceCreateContext" opcode="1">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetDeviceCreateContext" opcode="2">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetDeviceContext" opcode="3">
- <field type="CARD32" name="device" />
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetDeviceContext" opcode="4">
- <field type="CARD32" name="device" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetWindowCreateContext" opcode="5">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetWindowCreateContext" opcode="6">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetWindowContext" opcode="7">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <struct name="ListItem">
- <field type="ATOM" name="name" />
- <field type="CARD32" name="object_context_len" />
- <field type="CARD32" name="data_context_len" />
- <list type="char" name="object_context">
- <fieldref>object_context_len</fieldref>
- </list>
- <list type="char" name="data_context">
- <fieldref>data_context_len</fieldref>
- </list>
- </struct>
-
- <request name="SetPropertyCreateContext" opcode="8">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetPropertyCreateContext" opcode="9">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetPropertyUseContext" opcode="10">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetPropertyUseContext" opcode="11">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetPropertyContext" opcode="12">
- <field type="WINDOW" name="window" />
- <field type="ATOM" name="property" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetPropertyDataContext" opcode="13">
- <field type="WINDOW" name="window" />
- <field type="ATOM" name="property" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="ListProperties" opcode="14">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="properties_len" />
- <pad bytes="20" />
- <list type="ListItem" name="properties">
- <fieldref>properties_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetSelectionCreateContext" opcode="15">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetSelectionCreateContext" opcode="16">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetSelectionUseContext" opcode="17">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetSelectionUseContext" opcode="18">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetSelectionContext" opcode="19">
- <field type="ATOM" name="selection" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetSelectionDataContext" opcode="20">
- <field type="ATOM" name="selection" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="ListSelections" opcode="21">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="selections_len" />
- <pad bytes="20" />
- <list type="ListItem" name="selections">
- <fieldref>selections_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetClientContext" opcode="22">
- <field type="CARD32" name="resource" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+<xcb header="xselinux" extension-xname="SELinux" extension-name="SELinux"
+ extension-multiword="false" major-version="1" minor-version="0">
+ <import>xproto</import>
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD8" name="client_major" />
+ <field type="CARD8" name="client_minor" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major" />
+ <field type="CARD16" name="server_minor" />
+ </reply>
+ </request>
+
+ <request name="SetDeviceCreateContext" opcode="1">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetDeviceCreateContext" opcode="2">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetDeviceContext" opcode="3">
+ <field type="CARD32" name="device" />
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetDeviceContext" opcode="4">
+ <field type="CARD32" name="device" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetWindowCreateContext" opcode="5">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetWindowCreateContext" opcode="6">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetWindowContext" opcode="7">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <struct name="ListItem">
+ <field type="ATOM" name="name" />
+ <field type="CARD32" name="object_context_len" />
+ <field type="CARD32" name="data_context_len" />
+ <list type="char" name="object_context">
+ <fieldref>object_context_len</fieldref>
+ </list>
+ <list type="char" name="data_context">
+ <fieldref>data_context_len</fieldref>
+ </list>
+ </struct>
+
+ <request name="SetPropertyCreateContext" opcode="8">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetPropertyCreateContext" opcode="9">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetPropertyUseContext" opcode="10">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetPropertyUseContext" opcode="11">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetPropertyContext" opcode="12">
+ <field type="WINDOW" name="window" />
+ <field type="ATOM" name="property" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetPropertyDataContext" opcode="13">
+ <field type="WINDOW" name="window" />
+ <field type="ATOM" name="property" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ListProperties" opcode="14">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="properties_len" />
+ <pad bytes="20" />
+ <list type="ListItem" name="properties">
+ <fieldref>properties_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetSelectionCreateContext" opcode="15">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetSelectionCreateContext" opcode="16">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetSelectionUseContext" opcode="17">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetSelectionUseContext" opcode="18">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetSelectionContext" opcode="19">
+ <field type="ATOM" name="selection" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetSelectionDataContext" opcode="20">
+ <field type="ATOM" name="selection" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ListSelections" opcode="21">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="selections_len" />
+ <pad bytes="20" />
+ <list type="ListItem" name="selections">
+ <fieldref>selections_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetClientContext" opcode="22">
+ <field type="CARD32" name="resource" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/xv.xml b/libxcb/xcb-proto/src/xv.xml
index d2bfc2992..08c80b04b 100644
--- a/libxcb/xcb-proto/src/xv.xml
+++ b/libxcb/xcb-proto/src/xv.xml
@@ -1,450 +1,450 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Jeremy Kolb.
-All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-
-<xcb header="xv" extension-xname="XVideo" extension-name="Xv" major-version="2" minor-version="2">
- <import>xproto</import>
- <import>shm</import>
- <!-- Implements version 2.2 of XV -->
-
- <!-- XIDs -->
- <xidtype name="PORT" />
- <xidtype name="ENCODING" />
-
- <enum name="Type">
- <item name="InputMask"><bit>0</bit></item>
- <item name="OutputMask"><bit>1</bit></item>
- <item name="VideoMask"><bit>2</bit></item>
- <item name="StillMask"><bit>3</bit></item>
- <item name="ImageMask"><bit>4</bit></item>
- </enum>
-
- <enum name="ImageFormatInfoType">
- <item name="RGB" />
- <item name="YUV" />
- </enum>
-
- <enum name="ImageFormatInfoFormat">
- <item name="Packed" />
- <item name="Planar" />
- </enum>
-
- <enum name="AttributeFlag">
- <item name="Gettable"><bit>0</bit></item>
- <item name="Settable"><bit>1</bit></item>
- </enum>
-
- <enum name="VideoNotifyReason">
- <item name="Started" />
- <item name="Stopped" />
- <item name="Busy" />
- <item name="Preempted" />
- <item name="HardError" />
- </enum>
-
- <enum name="ScanlineOrder">
- <item name="TopToBottom" />
- <item name="BottomToTop" />
- </enum>
-
- <enum name="GrabPortStatus">
- <item name="Success" />
- <item name="BadExtension" />
- <item name="AlreadyGrabbed" />
- <item name="InvalidTime" />
- <item name="BadReply" />
- <item name="BadAlloc" />
- </enum>
-
- <struct name="Rational">
- <field type="INT32" name="numerator" />
- <field type="INT32" name="denominator" />
- </struct>
-
- <struct name="Format">
- <field type="VISUALID" name="visual" />
- <field type="CARD8" name="depth" />
- <pad bytes="3" />
- </struct>
-
- <struct name="AdaptorInfo">
- <field type="PORT" name="base_id" />
- <field type="CARD16" name="name_size" />
- <field type="CARD16" name="num_ports" />
- <field type="CARD16" name="num_formats" />
- <field type="CARD8" name="type" mask="Type" />
- <pad bytes="1" />
- <list type="char" name="name">
- <fieldref>name_size</fieldref>
- </list>
- <list type="Format" name="formats">
- <fieldref>num_formats</fieldref>
- </list>
-
- </struct>
-
- <struct name="EncodingInfo">
- <field type="ENCODING" name="encoding" />
- <field type="CARD16" name="name_size" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <!--
- Some versions of Xvproto.h incorrectly have
- this padding after "rate".
- -->
- <pad bytes="2" />
- <field type="Rational" name="rate" />
- <list type="char" name="name">
- <fieldref>name_size</fieldref>
- </list>
- </struct>
-
- <struct name="Image">
- <field type="CARD32" name="id" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD32" name="data_size" />
- <field type="CARD32" name="num_planes" />
- <list type="CARD32" name="pitches">
- <fieldref>num_planes</fieldref>
- </list>
- <list type="CARD32" name="offsets">
- <fieldref>num_planes</fieldref>
- </list>
- <list type="CARD8" name="data">
- <fieldref>data_size</fieldref>
- </list>
- <!-- Some XPointer "obdata" for SHM use-->
- </struct>
-
- <struct name="AttributeInfo">
- <field type="CARD32" name="flags" mask="AttributeFlag" />
- <field type="INT32" name="min" />
- <field type="INT32" name="max" />
- <field type="CARD32" name="size" />
- <list type="char" name="name">
- <fieldref>size</fieldref>
- </list>
- </struct>
-
- <struct name="ImageFormatInfo">
- <field type="CARD32" name="id" />
- <field type="CARD8" name="type" enum="ImageFormatInfoType" />
- <field type="CARD8" name="byte_order" enum="ImageOrder" />
- <pad bytes="2" />
- <list type="CARD8" name="guid">
- <value>16</value>
- </list>
- <field type="CARD8" name="bpp" />
- <field type="CARD8" name="num_planes" />
- <pad bytes="2" />
- <field type="CARD8" name="depth" />
- <pad bytes="3" />
- <field type="CARD32" name="red_mask" />
- <field type="CARD32" name="green_mask" />
- <field type="CARD32" name="blue_mask" />
- <field type="CARD8" name="format" enum="ImageFormatInfoFormat" />
- <pad bytes="3" />
- <field type="CARD32" name="y_sample_bits" />
- <field type="CARD32" name="u_sample_bits" />
- <field type="CARD32" name="v_sample_bits" />
- <field type="CARD32" name="vhorz_y_period" />
- <field type="CARD32" name="vhorz_u_period" />
- <field type="CARD32" name="vhorz_v_period" />
- <field type="CARD32" name="vvert_y_period" />
- <field type="CARD32" name="vvert_u_period" />
- <field type="CARD32" name="vvert_v_period" />
- <list type="CARD8" name="vcomp_order">
- <value>32</value>
- </list>
- <field type="CARD8" name="vscanline_order" enum="ScanlineOrder" />
- <pad bytes="11" />
- </struct>
-
-
- <!-- Errors -->
- <error name="BadPort" number="0"/>
- <error name="BadEncoding" number="1"/>
- <error name="BadControl" number="2"/>
-
- <!-- Events -->
- <event name="VideoNotify" number="0">
- <field type="BYTE" name="reason" enum="VideoNotifyReason" />
- <field type="TIMESTAMP" name="time" />
- <field type="DRAWABLE" name="drawable" />
- <field type="PORT" name="port" />
- </event>
-
- <event name="PortNotify" number="1">
- <pad bytes="1" />
- <field type="TIMESTAMP" name="time" />
- <field type="PORT" name="port" />
- <field type="ATOM" name="attribute" />
- <field type="INT32" name="value" />
- </event>
-
-
- <!-- Requests -->
- <request name="QueryExtension" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="major" />
- <field type="CARD16" name="minor" />
- </reply>
- </request>
-
- <request name="QueryAdaptors" opcode="1">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_adaptors" />
- <pad bytes="22" />
- <list type="AdaptorInfo" name="info">
- <fieldref>num_adaptors</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="QueryEncodings" opcode="2">
- <field type="PORT" name="port" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_encodings" />
- <!--
- In Xvproto.h this padding is 24 bytes
- in actuality it is 22 bytes
- -->
- <pad bytes="22" />
- <list type="EncodingInfo" name="info">
- <fieldref>num_encodings</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GrabPort" opcode="3">
- <field type="PORT" name="port" />
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <reply>
- <field type="BYTE" name="result" enum="GrabPortStatus" />
- </reply>
- </request>
-
- <request name="UngrabPort" opcode="4">
- <field type="PORT" name="port" />
- <field type="TIMESTAMP" name="time" altenum="Time" />
- </request>
-
- <request name="PutVideo" opcode="5">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="INT16" name="vid_x" />
- <field type="INT16" name="vid_y" />
- <field type="CARD16" name="vid_w" />
- <field type="CARD16" name="vid_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- </request>
-
- <request name="PutStill" opcode="6">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="INT16" name="vid_x" />
- <field type="INT16" name="vid_y" />
- <field type="CARD16" name="vid_w" />
- <field type="CARD16" name="vid_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- </request>
-
- <request name="GetVideo" opcode="7">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="INT16" name="vid_x" />
- <field type="INT16" name="vid_y" />
- <field type="CARD16" name="vid_w" />
- <field type="CARD16" name="vid_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- </request>
-
- <request name="GetStill" opcode="8">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="INT16" name="vid_x" />
- <field type="INT16" name="vid_y" />
- <field type="CARD16" name="vid_w" />
- <field type="CARD16" name="vid_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- </request>
-
- <request name="StopVideo" opcode="9">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- </request>
-
- <request name="SelectVideoNotify" opcode="10">
- <field type="DRAWABLE" name="drawable" />
- <field type="BOOL" name="onoff" />
- <pad bytes="3" />
- </request>
-
- <request name="SelectPortNotify" opcode="11">
- <field type="PORT" name="port" />
- <field type="BOOL" name="onoff" />
- <pad bytes="3" />
- </request>
-
- <request name="QueryBestSize" opcode="12">
- <field type="PORT" name="port" />
- <field type="CARD16" name="vid_w" />
- <field type="CARD16" name="vid_h" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- <field type="BOOL" name="motion" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="actual_width" />
- <field type="CARD16" name="actual_height" />
- </reply>
- </request>
-
- <request name="SetPortAttribute" opcode="13">
- <field type="PORT" name="port" />
- <field type="ATOM" name="attribute" />
- <field type="INT32" name="value" />
- </request>
-
- <request name="GetPortAttribute" opcode="14">
- <field type="PORT" name="port" />
- <field type="ATOM" name="attribute" />
- <reply>
- <pad bytes="1" />
- <field type="INT32" name="value" />
- </reply>
- </request>
-
- <!-- Not in the docs beyond this point :( -->
-
- <request name="QueryPortAttributes" opcode="15">
- <field type="PORT" name="port" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_attributes" />
- <field type="CARD32" name="text_size" />
- <pad bytes="16" />
- <list type="AttributeInfo" name="attributes">
- <fieldref>num_attributes</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="ListImageFormats" opcode="16">
- <field type="PORT" name="port" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_formats" />
- <pad bytes="20" />
- <list type="ImageFormatInfo" name="format">
- <fieldref>num_formats</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="QueryImageAttributes" opcode="17">
- <field type="PORT" name="port" />
- <field type="CARD32" name="id" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_planes" />
- <field type="CARD32" name="data_size" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <pad bytes="12" />
- <list type="CARD32" name="pitches">
- <fieldref>num_planes</fieldref>
- </list>
- <list type="CARD32" name="offsets">
- <fieldref>num_planes</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="PutImage" opcode="18">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="CARD32" name="id" />
- <field type="INT16" name="src_x" />
- <field type="INT16" name="src_y" />
- <field type="CARD16" name="src_w" />
- <field type="CARD16" name="src_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <list type="CARD8" name="data" />
- </request>
-
- <request name="ShmPutImage" opcode="19">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="id" />
- <field type="CARD32" name="offset" />
- <field type="INT16" name="src_x" />
- <field type="INT16" name="src_y" />
- <field type="CARD16" name="src_w" />
- <field type="CARD16" name="src_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD8" name="send_event" />
- <pad bytes="3" />
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb.
+All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="xv" extension-xname="XVideo" extension-name="Xv" major-version="2" minor-version="2">
+ <import>xproto</import>
+ <import>shm</import>
+ <!-- Implements version 2.2 of XV -->
+
+ <!-- XIDs -->
+ <xidtype name="PORT" />
+ <xidtype name="ENCODING" />
+
+ <enum name="Type">
+ <item name="InputMask"><bit>0</bit></item>
+ <item name="OutputMask"><bit>1</bit></item>
+ <item name="VideoMask"><bit>2</bit></item>
+ <item name="StillMask"><bit>3</bit></item>
+ <item name="ImageMask"><bit>4</bit></item>
+ </enum>
+
+ <enum name="ImageFormatInfoType">
+ <item name="RGB" />
+ <item name="YUV" />
+ </enum>
+
+ <enum name="ImageFormatInfoFormat">
+ <item name="Packed" />
+ <item name="Planar" />
+ </enum>
+
+ <enum name="AttributeFlag">
+ <item name="Gettable"><bit>0</bit></item>
+ <item name="Settable"><bit>1</bit></item>
+ </enum>
+
+ <enum name="VideoNotifyReason">
+ <item name="Started" />
+ <item name="Stopped" />
+ <item name="Busy" />
+ <item name="Preempted" />
+ <item name="HardError" />
+ </enum>
+
+ <enum name="ScanlineOrder">
+ <item name="TopToBottom" />
+ <item name="BottomToTop" />
+ </enum>
+
+ <enum name="GrabPortStatus">
+ <item name="Success" />
+ <item name="BadExtension" />
+ <item name="AlreadyGrabbed" />
+ <item name="InvalidTime" />
+ <item name="BadReply" />
+ <item name="BadAlloc" />
+ </enum>
+
+ <struct name="Rational">
+ <field type="INT32" name="numerator" />
+ <field type="INT32" name="denominator" />
+ </struct>
+
+ <struct name="Format">
+ <field type="VISUALID" name="visual" />
+ <field type="CARD8" name="depth" />
+ <pad bytes="3" />
+ </struct>
+
+ <struct name="AdaptorInfo">
+ <field type="PORT" name="base_id" />
+ <field type="CARD16" name="name_size" />
+ <field type="CARD16" name="num_ports" />
+ <field type="CARD16" name="num_formats" />
+ <field type="CARD8" name="type" mask="Type" />
+ <pad bytes="1" />
+ <list type="char" name="name">
+ <fieldref>name_size</fieldref>
+ </list>
+ <list type="Format" name="formats">
+ <fieldref>num_formats</fieldref>
+ </list>
+
+ </struct>
+
+ <struct name="EncodingInfo">
+ <field type="ENCODING" name="encoding" />
+ <field type="CARD16" name="name_size" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <!--
+ Some versions of Xvproto.h incorrectly have
+ this padding after "rate".
+ -->
+ <pad bytes="2" />
+ <field type="Rational" name="rate" />
+ <list type="char" name="name">
+ <fieldref>name_size</fieldref>
+ </list>
+ </struct>
+
+ <struct name="Image">
+ <field type="CARD32" name="id" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD32" name="data_size" />
+ <field type="CARD32" name="num_planes" />
+ <list type="CARD32" name="pitches">
+ <fieldref>num_planes</fieldref>
+ </list>
+ <list type="CARD32" name="offsets">
+ <fieldref>num_planes</fieldref>
+ </list>
+ <list type="CARD8" name="data">
+ <fieldref>data_size</fieldref>
+ </list>
+ <!-- Some XPointer "obdata" for SHM use-->
+ </struct>
+
+ <struct name="AttributeInfo">
+ <field type="CARD32" name="flags" mask="AttributeFlag" />
+ <field type="INT32" name="min" />
+ <field type="INT32" name="max" />
+ <field type="CARD32" name="size" />
+ <list type="char" name="name">
+ <fieldref>size</fieldref>
+ </list>
+ </struct>
+
+ <struct name="ImageFormatInfo">
+ <field type="CARD32" name="id" />
+ <field type="CARD8" name="type" enum="ImageFormatInfoType" />
+ <field type="CARD8" name="byte_order" enum="ImageOrder" />
+ <pad bytes="2" />
+ <list type="CARD8" name="guid">
+ <value>16</value>
+ </list>
+ <field type="CARD8" name="bpp" />
+ <field type="CARD8" name="num_planes" />
+ <pad bytes="2" />
+ <field type="CARD8" name="depth" />
+ <pad bytes="3" />
+ <field type="CARD32" name="red_mask" />
+ <field type="CARD32" name="green_mask" />
+ <field type="CARD32" name="blue_mask" />
+ <field type="CARD8" name="format" enum="ImageFormatInfoFormat" />
+ <pad bytes="3" />
+ <field type="CARD32" name="y_sample_bits" />
+ <field type="CARD32" name="u_sample_bits" />
+ <field type="CARD32" name="v_sample_bits" />
+ <field type="CARD32" name="vhorz_y_period" />
+ <field type="CARD32" name="vhorz_u_period" />
+ <field type="CARD32" name="vhorz_v_period" />
+ <field type="CARD32" name="vvert_y_period" />
+ <field type="CARD32" name="vvert_u_period" />
+ <field type="CARD32" name="vvert_v_period" />
+ <list type="CARD8" name="vcomp_order">
+ <value>32</value>
+ </list>
+ <field type="CARD8" name="vscanline_order" enum="ScanlineOrder" />
+ <pad bytes="11" />
+ </struct>
+
+
+ <!-- Errors -->
+ <error name="BadPort" number="0"/>
+ <error name="BadEncoding" number="1"/>
+ <error name="BadControl" number="2"/>
+
+ <!-- Events -->
+ <event name="VideoNotify" number="0">
+ <field type="BYTE" name="reason" enum="VideoNotifyReason" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="PORT" name="port" />
+ </event>
+
+ <event name="PortNotify" number="1">
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="PORT" name="port" />
+ <field type="ATOM" name="attribute" />
+ <field type="INT32" name="value" />
+ </event>
+
+
+ <!-- Requests -->
+ <request name="QueryExtension" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major" />
+ <field type="CARD16" name="minor" />
+ </reply>
+ </request>
+
+ <request name="QueryAdaptors" opcode="1">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_adaptors" />
+ <pad bytes="22" />
+ <list type="AdaptorInfo" name="info">
+ <fieldref>num_adaptors</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryEncodings" opcode="2">
+ <field type="PORT" name="port" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_encodings" />
+ <!--
+ In Xvproto.h this padding is 24 bytes
+ in actuality it is 22 bytes
+ -->
+ <pad bytes="22" />
+ <list type="EncodingInfo" name="info">
+ <fieldref>num_encodings</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GrabPort" opcode="3">
+ <field type="PORT" name="port" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <reply>
+ <field type="BYTE" name="result" enum="GrabPortStatus" />
+ </reply>
+ </request>
+
+ <request name="UngrabPort" opcode="4">
+ <field type="PORT" name="port" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ </request>
+
+ <request name="PutVideo" opcode="5">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="INT16" name="vid_x" />
+ <field type="INT16" name="vid_y" />
+ <field type="CARD16" name="vid_w" />
+ <field type="CARD16" name="vid_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ </request>
+
+ <request name="PutStill" opcode="6">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="INT16" name="vid_x" />
+ <field type="INT16" name="vid_y" />
+ <field type="CARD16" name="vid_w" />
+ <field type="CARD16" name="vid_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ </request>
+
+ <request name="GetVideo" opcode="7">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="INT16" name="vid_x" />
+ <field type="INT16" name="vid_y" />
+ <field type="CARD16" name="vid_w" />
+ <field type="CARD16" name="vid_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ </request>
+
+ <request name="GetStill" opcode="8">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="INT16" name="vid_x" />
+ <field type="INT16" name="vid_y" />
+ <field type="CARD16" name="vid_w" />
+ <field type="CARD16" name="vid_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ </request>
+
+ <request name="StopVideo" opcode="9">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ </request>
+
+ <request name="SelectVideoNotify" opcode="10">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="BOOL" name="onoff" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="SelectPortNotify" opcode="11">
+ <field type="PORT" name="port" />
+ <field type="BOOL" name="onoff" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="QueryBestSize" opcode="12">
+ <field type="PORT" name="port" />
+ <field type="CARD16" name="vid_w" />
+ <field type="CARD16" name="vid_h" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ <field type="BOOL" name="motion" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="actual_width" />
+ <field type="CARD16" name="actual_height" />
+ </reply>
+ </request>
+
+ <request name="SetPortAttribute" opcode="13">
+ <field type="PORT" name="port" />
+ <field type="ATOM" name="attribute" />
+ <field type="INT32" name="value" />
+ </request>
+
+ <request name="GetPortAttribute" opcode="14">
+ <field type="PORT" name="port" />
+ <field type="ATOM" name="attribute" />
+ <reply>
+ <pad bytes="1" />
+ <field type="INT32" name="value" />
+ </reply>
+ </request>
+
+ <!-- Not in the docs beyond this point :( -->
+
+ <request name="QueryPortAttributes" opcode="15">
+ <field type="PORT" name="port" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_attributes" />
+ <field type="CARD32" name="text_size" />
+ <pad bytes="16" />
+ <list type="AttributeInfo" name="attributes">
+ <fieldref>num_attributes</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ListImageFormats" opcode="16">
+ <field type="PORT" name="port" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_formats" />
+ <pad bytes="20" />
+ <list type="ImageFormatInfo" name="format">
+ <fieldref>num_formats</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryImageAttributes" opcode="17">
+ <field type="PORT" name="port" />
+ <field type="CARD32" name="id" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_planes" />
+ <field type="CARD32" name="data_size" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <pad bytes="12" />
+ <list type="CARD32" name="pitches">
+ <fieldref>num_planes</fieldref>
+ </list>
+ <list type="CARD32" name="offsets">
+ <fieldref>num_planes</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="PutImage" opcode="18">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="CARD32" name="id" />
+ <field type="INT16" name="src_x" />
+ <field type="INT16" name="src_y" />
+ <field type="CARD16" name="src_w" />
+ <field type="CARD16" name="src_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <list type="CARD8" name="data" />
+ </request>
+
+ <request name="ShmPutImage" opcode="19">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="id" />
+ <field type="CARD32" name="offset" />
+ <field type="INT16" name="src_x" />
+ <field type="INT16" name="src_y" />
+ <field type="CARD16" name="src_w" />
+ <field type="CARD16" name="src_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD8" name="send_event" />
+ <pad bytes="3" />
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/xvmc.xml b/libxcb/xcb-proto/src/xvmc.xml
index ac80003f9..1c477ae49 100644
--- a/libxcb/xcb-proto/src/xvmc.xml
+++ b/libxcb/xcb-proto/src/xvmc.xml
@@ -1,146 +1,146 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Jeremy Kolb.
-All Rights Reserved.
-
-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
-AUTHORS 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 names of the authors or their
-institutions 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 authors.
--->
-
-<xcb header="xvmc" extension-xname="XVideo-MotionCompensation" extension-name="XvMC" major-version="1" minor-version="1">
- <import>xv</import>
-
- <xidtype name="CONTEXT" />
- <xidtype name="SURFACE" />
- <xidtype name="SUBPICTURE" />
-
- <struct name="SurfaceInfo">
- <field type="SURFACE" name="id" />
- <field type="CARD16" name="chroma_format" />
- <field type="CARD16" name="pad0" />
- <field type="CARD16" name="max_width" />
- <field type="CARD16" name="max_height" />
- <field type="CARD16" name="subpicture_max_width" />
- <field type="CARD16" name="subpicture_max_height" />
- <field type="CARD32" name="mc_type" />
- <field type="CARD32" name="flags" />
- </struct>
-
- <request name="QueryVersion" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="major" />
- <field type="CARD32" name="minor" />
- </reply>
- </request>
-
- <request name="ListSurfaceTypes" opcode="1">
- <field type="PORT" name="port_id" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num" />
- <pad bytes="20" />
- <list type="SurfaceInfo" name="surfaces">
- <fieldref>num</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="CreateContext" opcode="2">
- <field type="CONTEXT" name="context_id" />
- <field type="PORT" name="port_id" />
- <field type="SURFACE" name="surface_id" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD32" name="flags" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="width_actual" />
- <field type="CARD16" name="height_actual" />
- <field type="CARD32" name="flags_return" />
- <pad bytes="20" />
- <list type="CARD32" name="priv_data">
- <fieldref>length</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="DestroyContext" opcode="3">
- <field type="CONTEXT" name="context_id" />
- </request>
-
- <request name="CreateSurface" opcode="4">
- <field type="SURFACE" name="surface_id" />
- <field type="CONTEXT" name="context_id" />
- <reply>
- <pad bytes="1" />
- <pad bytes="24" />
- <list type="CARD32" name="priv_data">
- <fieldref>length</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="DestroySurface" opcode="5">
- <field type="SURFACE" name="surface_id" />
- </request>
-
- <request name="CreateSubpicture" opcode="6">
- <field type="SUBPICTURE" name="subpicture_id" />
- <field type="CONTEXT" name="context" />
- <field type="CARD32" name="xvimage_id" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="width_actual" />
- <field type="CARD16" name="height_actual" />
- <field type="CARD16" name="num_palette_entries" />
- <field type="CARD16" name="entry_bytes" />
- <list type="CARD8" name="component_order">
- <value>4</value>
- </list>
- <pad bytes="12" />
- <list type="CARD32" name="priv_data">
- <fieldref>length</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="DestroySubpicture" opcode="7">
- <field type="SUBPICTURE" name="subpicture_id" />
- </request>
-
- <request name="ListSubpictureTypes" opcode="8">
- <field type="PORT" name="port_id" />
- <field type="SURFACE" name="surface_id" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num" />
- <pad bytes="20" />
- <list type="ImageFormatInfo" name="types">
- <fieldref>num</fieldref>
- </list>
- </reply>
- </request>
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb.
+All Rights Reserved.
+
+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
+AUTHORS 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 names of the authors or their
+institutions 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 authors.
+-->
+
+<xcb header="xvmc" extension-xname="XVideo-MotionCompensation" extension-name="XvMC" major-version="1" minor-version="1">
+ <import>xv</import>
+
+ <xidtype name="CONTEXT" />
+ <xidtype name="SURFACE" />
+ <xidtype name="SUBPICTURE" />
+
+ <struct name="SurfaceInfo">
+ <field type="SURFACE" name="id" />
+ <field type="CARD16" name="chroma_format" />
+ <field type="CARD16" name="pad0" />
+ <field type="CARD16" name="max_width" />
+ <field type="CARD16" name="max_height" />
+ <field type="CARD16" name="subpicture_max_width" />
+ <field type="CARD16" name="subpicture_max_height" />
+ <field type="CARD32" name="mc_type" />
+ <field type="CARD32" name="flags" />
+ </struct>
+
+ <request name="QueryVersion" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major" />
+ <field type="CARD32" name="minor" />
+ </reply>
+ </request>
+
+ <request name="ListSurfaceTypes" opcode="1">
+ <field type="PORT" name="port_id" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num" />
+ <pad bytes="20" />
+ <list type="SurfaceInfo" name="surfaces">
+ <fieldref>num</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="CreateContext" opcode="2">
+ <field type="CONTEXT" name="context_id" />
+ <field type="PORT" name="port_id" />
+ <field type="SURFACE" name="surface_id" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD32" name="flags" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="width_actual" />
+ <field type="CARD16" name="height_actual" />
+ <field type="CARD32" name="flags_return" />
+ <pad bytes="20" />
+ <list type="CARD32" name="priv_data">
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="DestroyContext" opcode="3">
+ <field type="CONTEXT" name="context_id" />
+ </request>
+
+ <request name="CreateSurface" opcode="4">
+ <field type="SURFACE" name="surface_id" />
+ <field type="CONTEXT" name="context_id" />
+ <reply>
+ <pad bytes="1" />
+ <pad bytes="24" />
+ <list type="CARD32" name="priv_data">
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="DestroySurface" opcode="5">
+ <field type="SURFACE" name="surface_id" />
+ </request>
+
+ <request name="CreateSubpicture" opcode="6">
+ <field type="SUBPICTURE" name="subpicture_id" />
+ <field type="CONTEXT" name="context" />
+ <field type="CARD32" name="xvimage_id" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="width_actual" />
+ <field type="CARD16" name="height_actual" />
+ <field type="CARD16" name="num_palette_entries" />
+ <field type="CARD16" name="entry_bytes" />
+ <list type="CARD8" name="component_order">
+ <value>4</value>
+ </list>
+ <pad bytes="12" />
+ <list type="CARD32" name="priv_data">
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="DestroySubpicture" opcode="7">
+ <field type="SUBPICTURE" name="subpicture_id" />
+ </request>
+
+ <request name="ListSubpictureTypes" opcode="8">
+ <field type="PORT" name="port_id" />
+ <field type="SURFACE" name="surface_id" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num" />
+ <pad bytes="20" />
+ <list type="ImageFormatInfo" name="types">
+ <fieldref>num</fieldref>
+ </list>
+ </reply>
+ </request>
+
+</xcb>
diff --git a/libxcb/xcb-proto/xcbgen/Makefile.am b/libxcb/xcb-proto/xcbgen/Makefile.am
index 110a992f1..c4c79bfda 100644
--- a/libxcb/xcb-proto/xcbgen/Makefile.am
+++ b/libxcb/xcb-proto/xcbgen/Makefile.am
@@ -1,3 +1,3 @@
-pkgpythondir = $(pythondir)/xcbgen
-
-pkgpython_PYTHON = __init__.py error.py expr.py matcher.py state.py xtypes.py
+pkgpythondir = $(pythondir)/xcbgen
+
+pkgpython_PYTHON = __init__.py error.py expr.py matcher.py state.py xtypes.py
diff --git a/libxcb/xcb-proto/xcbgen/__init__.py b/libxcb/xcb-proto/xcbgen/__init__.py
index 8b1378917..d3f5a12fa 100644
--- a/libxcb/xcb-proto/xcbgen/__init__.py
+++ b/libxcb/xcb-proto/xcbgen/__init__.py
@@ -1 +1 @@
-
+
diff --git a/libxcb/xcb-proto/xcbgen/error.py b/libxcb/xcb-proto/xcbgen/error.py
index bbcd5013d..611d638b0 100644
--- a/libxcb/xcb-proto/xcbgen/error.py
+++ b/libxcb/xcb-proto/xcbgen/error.py
@@ -1,5 +1,5 @@
-class ResolveException(Exception):
- '''
- Gets thrown when a type doesn't resolve in the XML.
- '''
- pass
+class ResolveException(Exception):
+ '''
+ Gets thrown when a type doesn't resolve in the XML.
+ '''
+ pass
diff --git a/libxcb/xcb-randr.pc.in b/libxcb/xcb-randr.pc.in
index ac7f35d97..93a301138 100644
--- a/libxcb/xcb-randr.pc.in
+++ b/libxcb/xcb-randr.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB RandR
-Description: XCB RandR Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-randr
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB RandR
+Description: XCB RandR Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-randr
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-record.pc.in b/libxcb/xcb-record.pc.in
index 689f098fc..3c0cd6c0e 100644
--- a/libxcb/xcb-record.pc.in
+++ b/libxcb/xcb-record.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Record
-Description: XCB Record Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-record
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Record
+Description: XCB Record Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-record
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-render.pc.in b/libxcb/xcb-render.pc.in
index c3b050ab6..0f0769cc1 100644
--- a/libxcb/xcb-render.pc.in
+++ b/libxcb/xcb-render.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Render
-Description: XCB Render Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-render
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Render
+Description: XCB Render Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-render
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-res.pc.in b/libxcb/xcb-res.pc.in
index 62dbab63e..b620269db 100644
--- a/libxcb/xcb-res.pc.in
+++ b/libxcb/xcb-res.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Res
-Description: XCB X-Resource Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-res
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Res
+Description: XCB X-Resource Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-res
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-screensaver.pc.in b/libxcb/xcb-screensaver.pc.in
index ba3f8ecf3..6a9ad19b5 100644
--- a/libxcb/xcb-screensaver.pc.in
+++ b/libxcb/xcb-screensaver.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Screensaver
-Description: XCB Screensaver Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-screensaver
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Screensaver
+Description: XCB Screensaver Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-screensaver
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-shape.pc.in b/libxcb/xcb-shape.pc.in
index 880204d8a..0e265b848 100644
--- a/libxcb/xcb-shape.pc.in
+++ b/libxcb/xcb-shape.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Shape
-Description: XCB Shape Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-shape
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Shape
+Description: XCB Shape Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-shape
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-shm.pc.in b/libxcb/xcb-shm.pc.in
index 9256bf015..33ee37d97 100644
--- a/libxcb/xcb-shm.pc.in
+++ b/libxcb/xcb-shm.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Shm
-Description: XCB Shm Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-shm
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Shm
+Description: XCB Shm Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-shm
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-sync.pc.in b/libxcb/xcb-sync.pc.in
index ead76d166..6f70a6e87 100644
--- a/libxcb/xcb-sync.pc.in
+++ b/libxcb/xcb-sync.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Sync
-Description: XCB Sync Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-sync
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Sync
+Description: XCB Sync Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-sync
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xevie.pc.in b/libxcb/xcb-xevie.pc.in
index 0aa3e02ac..aad488eec 100644
--- a/libxcb/xcb-xevie.pc.in
+++ b/libxcb/xcb-xevie.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Xevie
-Description: XCB Xevie Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xevie
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Xevie
+Description: XCB Xevie Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xevie
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xf86dri.pc.in b/libxcb/xcb-xf86dri.pc.in
index f3f29806d..dac5828e4 100644
--- a/libxcb/xcb-xf86dri.pc.in
+++ b/libxcb/xcb-xf86dri.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB XFree86-DRI
-Description: XCB XFree86-DRI Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xf86dri
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB XFree86-DRI
+Description: XCB XFree86-DRI Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xf86dri
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xfixes.pc.in b/libxcb/xcb-xfixes.pc.in
index 93eafda30..d13fe30a9 100644
--- a/libxcb/xcb-xfixes.pc.in
+++ b/libxcb/xcb-xfixes.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB XFixes
-Description: XCB XFixes Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb xcb-render xcb-shape
-Libs: -L${libdir} -lxcb-xfixes
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB XFixes
+Description: XCB XFixes Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb xcb-render xcb-shape
+Libs: -L${libdir} -lxcb-xfixes
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xinerama.pc.in b/libxcb/xcb-xinerama.pc.in
index c4775f9b5..84ecba128 100644
--- a/libxcb/xcb-xinerama.pc.in
+++ b/libxcb/xcb-xinerama.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Xinerama
-Description: XCB Xinerama Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xinerama
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Xinerama
+Description: XCB Xinerama Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xinerama
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xinput.pc.in b/libxcb/xcb-xinput.pc.in
index ec3122947..d1d1b8f5f 100644
--- a/libxcb/xcb-xinput.pc.in
+++ b/libxcb/xcb-xinput.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB XInput
-Description: XCB XInput Extension (EXPERIMENTAL)
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xinput
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB XInput
+Description: XCB XInput Extension (EXPERIMENTAL)
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xinput
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xkb.pc.in b/libxcb/xcb-xkb.pc.in
index cb31fadcb..6ed003581 100644
--- a/libxcb/xcb-xkb.pc.in
+++ b/libxcb/xcb-xkb.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB XKB
-Description: XCB Keyboard Extension (EXPERIMENTAL)
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xkb
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB XKB
+Description: XCB Keyboard Extension (EXPERIMENTAL)
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xkb
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xprint.pc.in b/libxcb/xcb-xprint.pc.in
index b5275d5d5..f0c257162 100644
--- a/libxcb/xcb-xprint.pc.in
+++ b/libxcb/xcb-xprint.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Xprint
-Description: XCB Xprint Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xprint
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Xprint
+Description: XCB Xprint Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xprint
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xselinux.pc.in b/libxcb/xcb-xselinux.pc.in
index 6a71f733a..f7042f26c 100644
--- a/libxcb/xcb-xselinux.pc.in
+++ b/libxcb/xcb-xselinux.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB SELinux
-Description: XCB SELinux Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xselinux
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB SELinux
+Description: XCB SELinux Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xselinux
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xtest.pc.in b/libxcb/xcb-xtest.pc.in
index 886c4dc2f..cead05604 100644
--- a/libxcb/xcb-xtest.pc.in
+++ b/libxcb/xcb-xtest.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB XTEST
-Description: XCB XTEST Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xtest
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB XTEST
+Description: XCB XTEST Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xtest
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xv.pc.in b/libxcb/xcb-xv.pc.in
index f4476135f..a78fbf27e 100644
--- a/libxcb/xcb-xv.pc.in
+++ b/libxcb/xcb-xv.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Xv
-Description: XCB Xv Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb xcb-shm
-Libs: -L${libdir} -lxcb-xv
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Xv
+Description: XCB Xv Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb xcb-shm
+Libs: -L${libdir} -lxcb-xv
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xvmc.pc.in b/libxcb/xcb-xvmc.pc.in
index 95bf4effc..fc0d213b9 100644
--- a/libxcb/xcb-xvmc.pc.in
+++ b/libxcb/xcb-xvmc.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB XvMC
-Description: XCB XvMC Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb xcb-xv
-Libs: -L${libdir} -lxcb-xvmc
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB XvMC
+Description: XCB XvMC Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb xcb-xv
+Libs: -L${libdir} -lxcb-xvmc
+Cflags: -I${includedir}
diff --git a/libxcb/xcb.pc.in b/libxcb/xcb.pc.in
index 2dc8c13bb..433c1686a 100644
--- a/libxcb/xcb.pc.in
+++ b/libxcb/xcb.pc.in
@@ -1,13 +1,13 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-xcbproto_version=@XCBPROTO_VERSION@
-
-Name: XCB
-Description: X-protocol C Binding
-Version: @PACKAGE_VERSION@
-Requires.private: @NEEDED@
-Libs: -L${libdir} -lxcb
-Libs.private: @LIBS@
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+xcbproto_version=@XCBPROTO_VERSION@
+
+Name: XCB
+Description: X-protocol C Binding
+Version: @PACKAGE_VERSION@
+Requires.private: @NEEDED@
+Libs: -L${libdir} -lxcb
+Libs.private: @LIBS@
+Cflags: -I${includedir}
diff --git a/mesalib/.gitignore b/mesalib/.gitignore
new file mode 100644
index 000000000..717d45d23
--- /dev/null
+++ b/mesalib/.gitignore
@@ -0,0 +1,42 @@
+*.a
+*.dll
+*.exe
+*.ilk
+*.la
+*.lo
+*.o
+*.obj
+*.os
+*.pc
+*.pdb
+*.pyc
+*.pyo
+*.so
+*.so.*
+*.sw[a-z]
+*.tar
+*.tar.bz2
+*.tar.gz
+*.zip
+*~
+depend
+depend.bak
+bin/ltmain.sh
+lib
+lib64
+configure
+configure.lineno
+autom4te.cache
+aclocal.m4
+config.log
+config.status
+cscope*
+.scon*
+config.py
+build
+libtool
+manifest.txt
+Makefile.in
+.dir-locals.el
+.deps/
+.libs/
diff --git a/mesalib/bin/.gitignore b/mesalib/bin/.gitignore
new file mode 100644
index 000000000..2ee67a666
--- /dev/null
+++ b/mesalib/bin/.gitignore
@@ -0,0 +1,7 @@
+config.guess
+config.sub
+install-sh
+/depcomp
+/missing
+ylwrap
+compile
diff --git a/mesalib/bin/confdiff.sh b/mesalib/bin/confdiff.sh
index 43df914f3..568fcd6d5 100644
--- a/mesalib/bin/confdiff.sh
+++ b/mesalib/bin/confdiff.sh
@@ -1,48 +1,48 @@
-#!/bin/bash -e
-
-usage()
-{
- echo "Usage: $0 <target1> <target2>"
- echo "Highlight differences between Mesa configs"
- echo "Example:"
- echo " $0 linux linux-x86"
-}
-
-die()
-{
- echo "$@" >&2
- return 1
-}
-
-case "$1" in
--h|--help) usage; exit 0;;
-esac
-
-[ $# -lt 2 ] && die 2 targets needed. See $0 --help
-target1=$1
-target2=$2
-
-topdir=$(cd "`dirname $0`"/..; pwd)
-cd "$topdir"
-
-[ -f "./configs/$target1" ] || die Missing configs/$target1
-[ -f "./configs/$target2" ] || die Missing configs/$target2
-
-trap 'rm -f "$t1" "$t2"' 0
-
-t1=$(mktemp)
-t2=$(mktemp)
-
-make -f- -n -p <<EOF | sed '/^# Not a target/,/^$/d' > $t1
-TOP = .
-include \$(TOP)/configs/$target1
-default:
-EOF
-
-make -f- -n -p <<EOF | sed '/^# Not a target/,/^$/d' > $t2
-TOP = .
-include \$(TOP)/configs/$target2
-default:
-EOF
-
-diff -pu -I'^#' $t1 $t2
+#!/bin/bash -e
+
+usage()
+{
+ echo "Usage: $0 <target1> <target2>"
+ echo "Highlight differences between Mesa configs"
+ echo "Example:"
+ echo " $0 linux linux-x86"
+}
+
+die()
+{
+ echo "$@" >&2
+ return 1
+}
+
+case "$1" in
+-h|--help) usage; exit 0;;
+esac
+
+[ $# -lt 2 ] && die 2 targets needed. See $0 --help
+target1=$1
+target2=$2
+
+topdir=$(cd "`dirname $0`"/..; pwd)
+cd "$topdir"
+
+[ -f "./configs/$target1" ] || die Missing configs/$target1
+[ -f "./configs/$target2" ] || die Missing configs/$target2
+
+trap 'rm -f "$t1" "$t2"' 0
+
+t1=$(mktemp)
+t2=$(mktemp)
+
+make -f- -n -p <<EOF | sed '/^# Not a target/,/^$/d' > $t1
+TOP = .
+include \$(TOP)/configs/$target1
+default:
+EOF
+
+make -f- -n -p <<EOF | sed '/^# Not a target/,/^$/d' > $t2
+TOP = .
+include \$(TOP)/configs/$target2
+default:
+EOF
+
+diff -pu -I'^#' $t1 $t2
diff --git a/mesalib/bin/installmesa b/mesalib/bin/installmesa
index 771fb4fdc..1e24c05ca 100644
--- a/mesalib/bin/installmesa
+++ b/mesalib/bin/installmesa
@@ -1,74 +1,74 @@
-#!/bin/sh
-
-#
-# Simple shell script for installing Mesa's header and library files.
-# If the copy commands below don't work on a particular system (i.e. the
-# -f or -d flags), we may need to branch on `uname` to do the right thing.
-#
-
-
-TOP=.
-
-INCLUDE_DIR="/usr/local/include"
-LIB_DIR="/usr/local/lib"
-
-if [ "x$#" = "x0" ] ; then
-echo
-echo "***** Mesa installation - You may need root privileges to do this *****"
-echo
-echo "Default directory for header files is:" ${INCLUDE_DIR}
-echo "Enter new directory or press <Enter> to accept this default."
-
-read INPUT
-if [ "x${INPUT}" != "x" ] ; then
- INCLUDE_DIR=${INPUT}
-fi
-
-echo
-echo "Default directory for library files is:" ${LIB_DIR}
-echo "Enter new directory or press <Enter> to accept this default."
-
-read INPUT
-if [ "x${INPUT}" != "x" ] ; then
- LIB_DIR=${INPUT}
-fi
-
-echo
-echo "About to install Mesa header files (GL/*.h) in: " ${INCLUDE_DIR}/GL
-echo "and Mesa library files (libGL.*, etc) in: " ${LIB_DIR}
-echo "Press <Enter> to continue, or <ctrl>-C to abort."
-
-read INPUT
-
-else
-INCLUDE_DIR=$1/include
-LIB_DIR=$1/lib
-fi
-
-# flags:
-# -f = force
-# -d = preserve symlinks (does not work on BSD)
-
-if [ `uname` = "FreeBSD" ] ; then
- CP_FLAGS="-f"
-elif [ `uname` = "Darwin" ] ; then
- CP_FLAGS="-f"
-elif [ `uname` = "AIX" ] ; then
- CP_FLAGS="-fh"
-else
- CP_FLAGS="-fd"
-fi
-
-
-set -v
-
-mkdir -p ${INCLUDE_DIR}
-mkdir -p ${INCLUDE_DIR}/GL
-# NOT YET: mkdir -p ${INCLUDE_DIR}/GLES
-mkdir -p ${LIB_DIR}
-cp -f ${TOP}/include/GL/*.h ${INCLUDE_DIR}/GL
-cp -f ${TOP}/src/glw/*.h ${INCLUDE_DIR}/GL
-# NOT YET: cp -f ${TOP}/include/GLES/*.h ${INCLUDE_DIR}/GLES
-cp ${CP_FLAGS} ${TOP}/lib*/lib* ${LIB_DIR}
-
-echo "Done."
+#!/bin/sh
+
+#
+# Simple shell script for installing Mesa's header and library files.
+# If the copy commands below don't work on a particular system (i.e. the
+# -f or -d flags), we may need to branch on `uname` to do the right thing.
+#
+
+
+TOP=.
+
+INCLUDE_DIR="/usr/local/include"
+LIB_DIR="/usr/local/lib"
+
+if [ "x$#" = "x0" ] ; then
+echo
+echo "***** Mesa installation - You may need root privileges to do this *****"
+echo
+echo "Default directory for header files is:" ${INCLUDE_DIR}
+echo "Enter new directory or press <Enter> to accept this default."
+
+read INPUT
+if [ "x${INPUT}" != "x" ] ; then
+ INCLUDE_DIR=${INPUT}
+fi
+
+echo
+echo "Default directory for library files is:" ${LIB_DIR}
+echo "Enter new directory or press <Enter> to accept this default."
+
+read INPUT
+if [ "x${INPUT}" != "x" ] ; then
+ LIB_DIR=${INPUT}
+fi
+
+echo
+echo "About to install Mesa header files (GL/*.h) in: " ${INCLUDE_DIR}/GL
+echo "and Mesa library files (libGL.*, etc) in: " ${LIB_DIR}
+echo "Press <Enter> to continue, or <ctrl>-C to abort."
+
+read INPUT
+
+else
+INCLUDE_DIR=$1/include
+LIB_DIR=$1/lib
+fi
+
+# flags:
+# -f = force
+# -d = preserve symlinks (does not work on BSD)
+
+if [ `uname` = "FreeBSD" ] ; then
+ CP_FLAGS="-f"
+elif [ `uname` = "Darwin" ] ; then
+ CP_FLAGS="-f"
+elif [ `uname` = "AIX" ] ; then
+ CP_FLAGS="-fh"
+else
+ CP_FLAGS="-fd"
+fi
+
+
+set -v
+
+mkdir -p ${INCLUDE_DIR}
+mkdir -p ${INCLUDE_DIR}/GL
+# NOT YET: mkdir -p ${INCLUDE_DIR}/GLES
+mkdir -p ${LIB_DIR}
+cp -f ${TOP}/include/GL/*.h ${INCLUDE_DIR}/GL
+cp -f ${TOP}/src/glw/*.h ${INCLUDE_DIR}/GL
+# NOT YET: cp -f ${TOP}/include/GLES/*.h ${INCLUDE_DIR}/GLES
+cp ${CP_FLAGS} ${TOP}/lib*/lib* ${LIB_DIR}
+
+echo "Done."
diff --git a/mesalib/configs/.gitignore b/mesalib/configs/.gitignore
new file mode 100644
index 000000000..97ac5b732
--- /dev/null
+++ b/mesalib/configs/.gitignore
@@ -0,0 +1,2 @@
+current
+autoconf
diff --git a/mesalib/configure.ac b/mesalib/configure.ac
index fc1c28eb2..fb7c4a684 100644
--- a/mesalib/configure.ac
+++ b/mesalib/configure.ac
@@ -1434,18 +1434,9 @@ if test "x$enable_egl" = xyes; then
if test "$have_libudev" = yes; then
DEFINES="$DEFINES -DHAVE_LIBUDEV"
fi
+
if test "x$enable_dri" = xyes; then
- # build egl_dri2 when xcb-dri2 is available
- PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
- [have_xcb_dri2=yes],[have_xcb_dri2=no])
- if test "$have_xcb_dri2" = yes; then
- HAVE_EGL_DRIVER_DRI2=1
- # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
- save_LIBS="$LIBS"
- AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
- [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
- LIBS="$save_LIBS"
- fi
+ HAVE_EGL_DRIVER_DRI2=1
fi
fi
@@ -1723,6 +1714,9 @@ esac
AC_SUBST([VG_LIB_DEPS])
AC_SUBST([EGL_CLIENT_APIS])
+dnl
+dnl EGL Platforms configuration
+dnl
AC_ARG_WITH([egl-platforms],
[AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
[comma delimited native platforms libEGL supports, e.g.
@@ -1740,28 +1734,45 @@ if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
AC_MSG_ERROR([cannot build egl state tracker without EGL library])
fi
-# verify the requested driver directories exist
+# Do per-EGL platform setups and checks
egl_platforms=`IFS=', '; echo $with_egl_platforms`
for plat in $egl_platforms; do
- test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
- AC_MSG_ERROR([EGL platform '$plat' does not exist])
- if test "$plat" = "fbdev"; then
- GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
- fi
- if test "$plat" = "null"; then
- GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
- fi
- if test "$plat" = "wayland"; then
+ case "$plat" in
+ fbdev|null)
+ GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/$plat"
+ ;;
+
+ wayland)
PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
[AC_MSG_ERROR([cannot find libwayland-client])])
- GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
+ GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
+
+ m4_ifdef([WAYLAND_SCANNER_RULES],
+ [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
+ ;;
+
+ x11)
+ PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes])
+ # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
+ save_LIBS="$LIBS"
+ AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
+ [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
+ LIBS="$save_LIBS"
+ ;;
+
+ drm)
+ test "x$enable_gbm" = "xno" &&
+ AC_MSG_ERROR([EGL platform drm needs gbm])
+ ;;
+
+ android|gdi)
+ ;;
+
+ *)
+ AC_MSG_ERROR([EGL platform '$plat' does not exist])
+ ;;
+ esac
- m4_ifdef([WAYLAND_SCANNER_RULES],
- [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
- fi
- if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
- AC_MSG_ERROR([EGL platform drm needs gbm])
- fi
case "$plat$have_libudev" in
waylandno|drmno)
AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
diff --git a/mesalib/docs/MESA_agp_offset.spec b/mesalib/docs/MESA_agp_offset.spec
index bf3ea1748..06e1d902e 100644
--- a/mesalib/docs/MESA_agp_offset.spec
+++ b/mesalib/docs/MESA_agp_offset.spec
@@ -1,95 +1,95 @@
-Name
-
- MESA_agp_offset
-
-Name Strings
-
- GLX_MESA_agp_offset
-
-Contact
-
- Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com)
- Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
-
-Status
-
- Shipping (Mesa 4.0.4 and later. Only implemented in particular
- XFree86/DRI drivers.)
-
-Version
-
- 1.0
-
-Number
-
- TBD
-
-Dependencies
-
- OpenGL 1.0 or later is required
- GLX_NV_vertex_array_range is required.
- This extensions is written against the OpenGL 1.4 Specification.
-
-Overview
-
- This extensions provides a way to convert pointers in an AGP memory
- region into byte offsets into the AGP aperture.
- Note, this extension depends on GLX_NV_vertex_array_range, for which
- no real specification exists. See GL_NV_vertex_array_range for more
- information.
-
-IP Status
-
- None
-
-Issues
-
- None
-
-New Procedures and Functions
-
- unsigned int glXGetAGPOffsetMESA( const void *pointer )
-
-New Tokens
-
- None
-
-Additions to the OpenGL 1.4 Specification
-
- None
-
-Additions to Chapter 3 the GLX 1.4 Specification (Functions and Errors)
-
- Add a new section, 3.6 as follows:
-
- 3.6 AGP Memory Access
-
- On "PC" computers, AGP memory can be allocated with glXAllocateMemoryNV
- and freed with glXFreeMemoryNV. Sometimes it's useful to know where a
- block of AGP memory is located with respect to the start of the AGP
- aperture. The function
-
- GLuint glXGetAGPOffsetMESA( const GLvoid *pointer )
-
- Returns the offset of the given memory block from the start of AGP
- memory in basic machine units (i.e. bytes). If pointer is invalid
- the value ~0 will be returned.
-
-GLX Protocol
-
- None. This is a client side-only extension.
-
-Errors
-
- glXGetAGPOffsetMESA will return ~0 if the pointer does not point to
- an AGP memory region.
-
-New State
-
- None
-
-Revision History
-
- 20 September 2002 - Initial draft
- 2 October 2002 - finished GLX chapter 3 additions
- 27 July 2004 - use unsigned int instead of GLuint, void instead of GLvoid
+Name
+
+ MESA_agp_offset
+
+Name Strings
+
+ GLX_MESA_agp_offset
+
+Contact
+
+ Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com)
+ Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
+
+Status
+
+ Shipping (Mesa 4.0.4 and later. Only implemented in particular
+ XFree86/DRI drivers.)
+
+Version
+
+ 1.0
+
+Number
+
+ TBD
+
+Dependencies
+
+ OpenGL 1.0 or later is required
+ GLX_NV_vertex_array_range is required.
+ This extensions is written against the OpenGL 1.4 Specification.
+
+Overview
+
+ This extensions provides a way to convert pointers in an AGP memory
+ region into byte offsets into the AGP aperture.
+ Note, this extension depends on GLX_NV_vertex_array_range, for which
+ no real specification exists. See GL_NV_vertex_array_range for more
+ information.
+
+IP Status
+
+ None
+
+Issues
+
+ None
+
+New Procedures and Functions
+
+ unsigned int glXGetAGPOffsetMESA( const void *pointer )
+
+New Tokens
+
+ None
+
+Additions to the OpenGL 1.4 Specification
+
+ None
+
+Additions to Chapter 3 the GLX 1.4 Specification (Functions and Errors)
+
+ Add a new section, 3.6 as follows:
+
+ 3.6 AGP Memory Access
+
+ On "PC" computers, AGP memory can be allocated with glXAllocateMemoryNV
+ and freed with glXFreeMemoryNV. Sometimes it's useful to know where a
+ block of AGP memory is located with respect to the start of the AGP
+ aperture. The function
+
+ GLuint glXGetAGPOffsetMESA( const GLvoid *pointer )
+
+ Returns the offset of the given memory block from the start of AGP
+ memory in basic machine units (i.e. bytes). If pointer is invalid
+ the value ~0 will be returned.
+
+GLX Protocol
+
+ None. This is a client side-only extension.
+
+Errors
+
+ glXGetAGPOffsetMESA will return ~0 if the pointer does not point to
+ an AGP memory region.
+
+New State
+
+ None
+
+Revision History
+
+ 20 September 2002 - Initial draft
+ 2 October 2002 - finished GLX chapter 3 additions
+ 27 July 2004 - use unsigned int instead of GLuint, void instead of GLvoid
diff --git a/mesalib/docs/MESA_pack_invert.spec b/mesalib/docs/MESA_pack_invert.spec
index 0eeb58c13..33fb3c7bf 100644
--- a/mesalib/docs/MESA_pack_invert.spec
+++ b/mesalib/docs/MESA_pack_invert.spec
@@ -1,138 +1,138 @@
-Name
-
- MESA_pack_invert
-
-Name Strings
-
- GL_MESA_pack_invert
-
-Contact
-
- Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com)
- Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
-
-Status
-
- Shipping (Mesa 4.0.4 and later)
-
-Version
-
- 1.0
-
-Number
-
- TBD
-
-Dependencies
-
- OpenGL 1.0 or later is required
- This extensions is written against the OpenGL 1.4 Specification.
-
-Overview
-
- This extension adds a new pixel storage parameter to indicate that
- images are to be packed in top-to-bottom order instead of OpenGL's
- conventional bottom-to-top order. Only pixel packing can be
- inverted (i.e. for glReadPixels, glGetTexImage, glGetConvolutionFilter,
- etc).
-
- Almost all known image file formats store images in top-to-bottom
- order. As it is, OpenGL reads images from the frame buffer in
- bottom-to-top order. Thus, images usually have to be inverted before
- writing them to a file with image I/O libraries. This extension
- allows images to be read such that inverting isn't needed.
-
-IP Status
-
- None
-
-Issues
-
- 1. Should we also define UNPACK_INVERT_MESA for glDrawPixels, etc?
-
- Resolved: No, we're only concerned with pixel packing. There are other
- solutions for inverting images when using glDrawPixels (negative Y pixel
- zoom) or glTexImage (invert the vertex T coordinates). It would be easy
- enough to define a complementary extension for pixel packing in the
- future if needed.
-
-New Procedures and Functions
-
- None
-
-New Tokens
-
- Accepted by the <pname> parameter of PixelStorei and PixelStoref
- and the <pname> parameter of GetIntegerv, GetFloatv, GetDoublev
- and GetBooleanv:
-
- PACK_INVERT_MESA 0x8758
-
-Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)
-
- None
-
-Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
-
- None
-
-Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
-Operations and the Frame Buffer)
-
- Add the following entry to table 4.4 (PixelStore parameters) on page 182:
-
- Parameter Name Type Initial Value Valid Range
- ---------------------------------------------------------
- PACK_INVERT_MESA boolean FALSE TRUE/FALSE
-
- In the section labeled "Placement in Client Memory" on page 184
- insert the following text into the paragraph before the sentence
- that starts with "If the format is RED, GREEN, BLUE...":
-
- "The parameter PACK_INVERT_MESA controls whether the image is packed
- in bottom-to-top order (the default) or top-to-bottom order. Equation
- 3.8 is modified as follows:
-
- ... the first element of the Nth row is indicated by
-
- p + Nk, if PACK_INVERT_MESA is false
- p + k * (H - 1) - Nk, if PACK_INVERT_MESA is true, where H is the
- image height
- "
-
-Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)
-
- None
-
-Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
-State Requests)
-
- None
-
-Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)
-
- None
-
-Additions to the AGL/GLX/WGL Specifications
-
- None
-
-GLX Protocol
-
- None
-
-Errors
-
- None
-
-New State
-
- Add the following entry to table 6.20 (Pixels) on page 235:
-
- Get Value Type Get Cmd Initial Value Description Sec Attribute
- --------------------------------------------------------------------------------------------------
- PACK_INVERT_MESA boolean GetBoolean FALSE Value of PACK_INVERT_MESA 4.3.2 pixel-store
-
-Revision History
-
- 21 September 2002 - Initial draft
+Name
+
+ MESA_pack_invert
+
+Name Strings
+
+ GL_MESA_pack_invert
+
+Contact
+
+ Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com)
+ Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
+
+Status
+
+ Shipping (Mesa 4.0.4 and later)
+
+Version
+
+ 1.0
+
+Number
+
+ TBD
+
+Dependencies
+
+ OpenGL 1.0 or later is required
+ This extensions is written against the OpenGL 1.4 Specification.
+
+Overview
+
+ This extension adds a new pixel storage parameter to indicate that
+ images are to be packed in top-to-bottom order instead of OpenGL's
+ conventional bottom-to-top order. Only pixel packing can be
+ inverted (i.e. for glReadPixels, glGetTexImage, glGetConvolutionFilter,
+ etc).
+
+ Almost all known image file formats store images in top-to-bottom
+ order. As it is, OpenGL reads images from the frame buffer in
+ bottom-to-top order. Thus, images usually have to be inverted before
+ writing them to a file with image I/O libraries. This extension
+ allows images to be read such that inverting isn't needed.
+
+IP Status
+
+ None
+
+Issues
+
+ 1. Should we also define UNPACK_INVERT_MESA for glDrawPixels, etc?
+
+ Resolved: No, we're only concerned with pixel packing. There are other
+ solutions for inverting images when using glDrawPixels (negative Y pixel
+ zoom) or glTexImage (invert the vertex T coordinates). It would be easy
+ enough to define a complementary extension for pixel packing in the
+ future if needed.
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <pname> parameter of PixelStorei and PixelStoref
+ and the <pname> parameter of GetIntegerv, GetFloatv, GetDoublev
+ and GetBooleanv:
+
+ PACK_INVERT_MESA 0x8758
+
+Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)
+
+ None
+
+Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
+
+ None
+
+Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
+Operations and the Frame Buffer)
+
+ Add the following entry to table 4.4 (PixelStore parameters) on page 182:
+
+ Parameter Name Type Initial Value Valid Range
+ ---------------------------------------------------------
+ PACK_INVERT_MESA boolean FALSE TRUE/FALSE
+
+ In the section labeled "Placement in Client Memory" on page 184
+ insert the following text into the paragraph before the sentence
+ that starts with "If the format is RED, GREEN, BLUE...":
+
+ "The parameter PACK_INVERT_MESA controls whether the image is packed
+ in bottom-to-top order (the default) or top-to-bottom order. Equation
+ 3.8 is modified as follows:
+
+ ... the first element of the Nth row is indicated by
+
+ p + Nk, if PACK_INVERT_MESA is false
+ p + k * (H - 1) - Nk, if PACK_INVERT_MESA is true, where H is the
+ image height
+ "
+
+Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)
+
+ None
+
+Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
+State Requests)
+
+ None
+
+Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)
+
+ None
+
+Additions to the AGL/GLX/WGL Specifications
+
+ None
+
+GLX Protocol
+
+ None
+
+Errors
+
+ None
+
+New State
+
+ Add the following entry to table 6.20 (Pixels) on page 235:
+
+ Get Value Type Get Cmd Initial Value Description Sec Attribute
+ --------------------------------------------------------------------------------------------------
+ PACK_INVERT_MESA boolean GetBoolean FALSE Value of PACK_INVERT_MESA 4.3.2 pixel-store
+
+Revision History
+
+ 21 September 2002 - Initial draft
diff --git a/mesalib/docs/MESA_release_buffers.spec b/mesalib/docs/MESA_release_buffers.spec
index e906e1459..52d1e5a9c 100644
--- a/mesalib/docs/MESA_release_buffers.spec
+++ b/mesalib/docs/MESA_release_buffers.spec
@@ -1,85 +1,85 @@
-Name
-
- MESA_release_buffers
-
-Name Strings
-
- GLX_MESA_release_buffers
-
-Contact
-
- Brian Paul (brian.paul 'at' tungstengraphics.com)
-
-Status
-
- Shipping since Mesa 2.0 in October, 1996.
-
-Version
-
- Last Modified Date: 8 June 2000
-
-Number
-
- 217
-
-Dependencies
-
- OpenGL 1.0 or later is required.
- GLX 1.0 or later is required.
-
-Overview
-
- Mesa's implementation of GLX is entirely implemented on the client side.
- Therefore, Mesa cannot immediately detect when an X window or pixmap is
- destroyed in order to free any ancillary data associated with the window
- or pixmap.
-
- The glxMesaReleaseBuffers() function can be used to explicitly indicate
- when the back color buffer, depth buffer, stencil buffer, and/or accumu-
- lation buffer associated with a drawable can be freed.
-
-IP Status
-
- Open-source; freely implementable.
-
-Issues
-
- None.
-
-New Procedures and Functions
-
- Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
-
-New Tokens
-
- None.
-
-Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
-
- The function
-
- Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
-
- causes all software ancillary buffers (back buffer, depth, stencil,
- accum, etc) associated with the named drawable to be immediately
- deallocated. True is returned if <d> is a valid Mesa GLX drawable,
- else False is returned. After calling glXReleaseBuffersMESA, the
- drawable should no longer be used for GL rendering. Results of
- attempting to do so are undefined.
-
-
-GLX Protocol
-
- None, since this is a client-side operation.
-
-Errors
-
- None.
-
-New State
-
- None.
-
-Revision History
-
- 8 June 2000 - initial specification
+Name
+
+ MESA_release_buffers
+
+Name Strings
+
+ GLX_MESA_release_buffers
+
+Contact
+
+ Brian Paul (brian.paul 'at' tungstengraphics.com)
+
+Status
+
+ Shipping since Mesa 2.0 in October, 1996.
+
+Version
+
+ Last Modified Date: 8 June 2000
+
+Number
+
+ 217
+
+Dependencies
+
+ OpenGL 1.0 or later is required.
+ GLX 1.0 or later is required.
+
+Overview
+
+ Mesa's implementation of GLX is entirely implemented on the client side.
+ Therefore, Mesa cannot immediately detect when an X window or pixmap is
+ destroyed in order to free any ancillary data associated with the window
+ or pixmap.
+
+ The glxMesaReleaseBuffers() function can be used to explicitly indicate
+ when the back color buffer, depth buffer, stencil buffer, and/or accumu-
+ lation buffer associated with a drawable can be freed.
+
+IP Status
+
+ Open-source; freely implementable.
+
+Issues
+
+ None.
+
+New Procedures and Functions
+
+ Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
+
+New Tokens
+
+ None.
+
+Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
+
+ The function
+
+ Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
+
+ causes all software ancillary buffers (back buffer, depth, stencil,
+ accum, etc) associated with the named drawable to be immediately
+ deallocated. True is returned if <d> is a valid Mesa GLX drawable,
+ else False is returned. After calling glXReleaseBuffersMESA, the
+ drawable should no longer be used for GL rendering. Results of
+ attempting to do so are undefined.
+
+
+GLX Protocol
+
+ None, since this is a client-side operation.
+
+Errors
+
+ None.
+
+New State
+
+ None.
+
+Revision History
+
+ 8 June 2000 - initial specification
diff --git a/mesalib/docs/MESA_resize_buffers.spec b/mesalib/docs/MESA_resize_buffers.spec
index 4d6e9f720..dabc7c421 100644
--- a/mesalib/docs/MESA_resize_buffers.spec
+++ b/mesalib/docs/MESA_resize_buffers.spec
@@ -1,81 +1,81 @@
-Name
-
- MESA_resize_buffers
-
-Name Strings
-
- GL_MESA_resize_buffers
-
-Contact
-
- Brian Paul (brian.paul 'at' tungstengraphics.com)
-
-Status
-
- Shipping (since Mesa version 2.2)
-
-Version
-
-
-Number
-
- 196
-
-Dependencies
-
- Mesa 2.2 or later is required.
-
-Overview
-
- Mesa is often used as a client library with no integration with
- the computer's window system (an X server, for example). And since
- Mesa does not have an event loop nor window system callbacks, it
- cannot properly respond to window system events. In particular,
- Mesa cannot automatically detect when a window has been resized.
-
- Mesa's glViewport command queries the current window size and updates
- its internal data structors accordingly. This normally works fine
- since most applications call glViewport in response to window size
- changes.
-
- In some situations, however, the application may not call glViewport
- when a window size changes but would still like Mesa to adjust to
- the new window size. This extension exports a new function to solve
- this problem.
-
-New Procedures and Functions
-
- void glResizeBuffersMESA( void )
-
-New Tokens
-
- none
-
-Additions to the OpenGL Specification (no particular section)
-
- The glResizeBuffersMESA command may be called when the client
- determines that a window has been resized. Calling
- glResizeBuffersMESA causes Mesa to query the current window size
- and adjust its internal data structures. This may include
- reallocating depth, stencil, alpha and accumulation buffers.
-
-Additions to the AGL/GLX/WGL Specifications
-
- None
-
-Errors
-
- INVALID_OPERATION is generated if glResizeBuffersMESA is called between
- Begin and End.
-
-New State
-
- None.
-
-New Implementation Dependent State
-
- None.
-
-Revision History
-
- * Revision 1.0 - Initial specification
+Name
+
+ MESA_resize_buffers
+
+Name Strings
+
+ GL_MESA_resize_buffers
+
+Contact
+
+ Brian Paul (brian.paul 'at' tungstengraphics.com)
+
+Status
+
+ Shipping (since Mesa version 2.2)
+
+Version
+
+
+Number
+
+ 196
+
+Dependencies
+
+ Mesa 2.2 or later is required.
+
+Overview
+
+ Mesa is often used as a client library with no integration with
+ the computer's window system (an X server, for example). And since
+ Mesa does not have an event loop nor window system callbacks, it
+ cannot properly respond to window system events. In particular,
+ Mesa cannot automatically detect when a window has been resized.
+
+ Mesa's glViewport command queries the current window size and updates
+ its internal data structors accordingly. This normally works fine
+ since most applications call glViewport in response to window size
+ changes.
+
+ In some situations, however, the application may not call glViewport
+ when a window size changes but would still like Mesa to adjust to
+ the new window size. This extension exports a new function to solve
+ this problem.
+
+New Procedures and Functions
+
+ void glResizeBuffersMESA( void )
+
+New Tokens
+
+ none
+
+Additions to the OpenGL Specification (no particular section)
+
+ The glResizeBuffersMESA command may be called when the client
+ determines that a window has been resized. Calling
+ glResizeBuffersMESA causes Mesa to query the current window size
+ and adjust its internal data structures. This may include
+ reallocating depth, stencil, alpha and accumulation buffers.
+
+Additions to the AGL/GLX/WGL Specifications
+
+ None
+
+Errors
+
+ INVALID_OPERATION is generated if glResizeBuffersMESA is called between
+ Begin and End.
+
+New State
+
+ None.
+
+New Implementation Dependent State
+
+ None.
+
+Revision History
+
+ * Revision 1.0 - Initial specification
diff --git a/mesalib/docs/MESA_swap_control.spec b/mesalib/docs/MESA_swap_control.spec
index 31340772f..a002563c9 100644
--- a/mesalib/docs/MESA_swap_control.spec
+++ b/mesalib/docs/MESA_swap_control.spec
@@ -1,129 +1,129 @@
-Name
-
- MESA_swap_control
-
-Name Strings
-
- GLX_MESA_swap_control
-
-Contact
-
- Ian Romanick, IBM, idr at us.ibm.com
-
-Status
-
- Deployed in DRI drivers post-XFree86 4.3.
-
-Version
-
- Date: 5/1/2003 Revision: 1.1
-
-Number
-
- ???
-
-Dependencies
-
- None
-
- Based on GLX_SGI_swap_control version 1.9 and WGL_EXT_swap_control
- version 1.5.
-
-Overview
-
- This extension allows an application to specify a minimum periodicity
- of color buffer swaps, measured in video frame periods.
-
-Issues
-
- * Should implementations that export GLX_MESA_swap_control also export
- GL_EXT_swap_control for compatibility with WGL_EXT_swap_control?
-
- UNRESOLVED.
-
-New Procedures and Functions
-
- int glXSwapIntervalMESA(unsigned int interval)
- int glXGetSwapIntervalMESA(void)
-
-New Tokens
-
- None
-
-Additions to Chapter 2 of the 1.4 GL Specification (OpenGL Operation)
-
- None
-
-Additions to Chapter 3 of the 1.4 GL Specification (Rasterization)
-
- None
-
-Additions to Chapter 4 of the 1.4 GL Specification (Per-Fragment Operations
-and the Framebuffer)
-
- None
-
-Additions to Chapter 5 of the 1.4 GL Specification (Special Functions)
-
- None
-
-Additions to Chapter 6 of the 1.4 GL Specification (State and State Requests)
-
- None
-
-Additions to the GLX 1.3 Specification
-
- [Add the following to Section 3.3.10 of the GLX Specification (Double
- Buffering)]
-
- glXSwapIntervalMESA specifies the minimum number of video frame periods
- per buffer swap. (e.g. a value of two means that the color buffers
- will be swapped at most every other video frame.) A return value
- of zero indicates success; otherwise an error occurred. The interval
- takes effect when glXSwapBuffers is first called subsequent to the
- glXSwapIntervalMESA call.
-
- A video frame period is the time required by the monitor to display a
- full frame of video data. In the case of an interlaced monitor,
- this is typically the time required to display both the even and odd
- fields of a frame of video data.
-
- If <interval> is set to a value of 0, buffer swaps are not synchro-
- nized to a video frame. The <interval> value is silently clamped to
- the maximum implementation-dependent value supported before being
- stored.
-
- The swap interval is not part of the render context state. It cannot
- be pushed or popped. The current swap interval for the window
- associated with the current context can be obtained by calling
- glXGetSwapIntervalMESA. The default swap interval is 0.
-
- On XFree86, setting the environment variable LIBGL_THROTTLE_REFRESH sets
- the swap interval to 1.
-
-Errors
-
- glXSwapIntervalMESA returns GLX_BAD_CONTEXT if there is no current
- GLXContext or if the current context is not a direct rendering context.
-
-GLX Protocol
-
- None. This extension only extends to direct rendering contexts.
-
-New State
-
- Get Value Get Command Type Initial Value
- --------- ----------- ---- -------------
- [swap interval] GetSwapInterval Z+ 0
-
-New Implementation Dependent State
-
- None
-
-
-Revision History
-
- 1.1, 5/1/03 Added the issues section and contact information.
- Changed the default swap interval to 0.
- 1.0, 3/17/03 Initial version based on GLX_SGI_swap_control and
- WGL_EXT_swap_control.
+Name
+
+ MESA_swap_control
+
+Name Strings
+
+ GLX_MESA_swap_control
+
+Contact
+
+ Ian Romanick, IBM, idr at us.ibm.com
+
+Status
+
+ Deployed in DRI drivers post-XFree86 4.3.
+
+Version
+
+ Date: 5/1/2003 Revision: 1.1
+
+Number
+
+ ???
+
+Dependencies
+
+ None
+
+ Based on GLX_SGI_swap_control version 1.9 and WGL_EXT_swap_control
+ version 1.5.
+
+Overview
+
+ This extension allows an application to specify a minimum periodicity
+ of color buffer swaps, measured in video frame periods.
+
+Issues
+
+ * Should implementations that export GLX_MESA_swap_control also export
+ GL_EXT_swap_control for compatibility with WGL_EXT_swap_control?
+
+ UNRESOLVED.
+
+New Procedures and Functions
+
+ int glXSwapIntervalMESA(unsigned int interval)
+ int glXGetSwapIntervalMESA(void)
+
+New Tokens
+
+ None
+
+Additions to Chapter 2 of the 1.4 GL Specification (OpenGL Operation)
+
+ None
+
+Additions to Chapter 3 of the 1.4 GL Specification (Rasterization)
+
+ None
+
+Additions to Chapter 4 of the 1.4 GL Specification (Per-Fragment Operations
+and the Framebuffer)
+
+ None
+
+Additions to Chapter 5 of the 1.4 GL Specification (Special Functions)
+
+ None
+
+Additions to Chapter 6 of the 1.4 GL Specification (State and State Requests)
+
+ None
+
+Additions to the GLX 1.3 Specification
+
+ [Add the following to Section 3.3.10 of the GLX Specification (Double
+ Buffering)]
+
+ glXSwapIntervalMESA specifies the minimum number of video frame periods
+ per buffer swap. (e.g. a value of two means that the color buffers
+ will be swapped at most every other video frame.) A return value
+ of zero indicates success; otherwise an error occurred. The interval
+ takes effect when glXSwapBuffers is first called subsequent to the
+ glXSwapIntervalMESA call.
+
+ A video frame period is the time required by the monitor to display a
+ full frame of video data. In the case of an interlaced monitor,
+ this is typically the time required to display both the even and odd
+ fields of a frame of video data.
+
+ If <interval> is set to a value of 0, buffer swaps are not synchro-
+ nized to a video frame. The <interval> value is silently clamped to
+ the maximum implementation-dependent value supported before being
+ stored.
+
+ The swap interval is not part of the render context state. It cannot
+ be pushed or popped. The current swap interval for the window
+ associated with the current context can be obtained by calling
+ glXGetSwapIntervalMESA. The default swap interval is 0.
+
+ On XFree86, setting the environment variable LIBGL_THROTTLE_REFRESH sets
+ the swap interval to 1.
+
+Errors
+
+ glXSwapIntervalMESA returns GLX_BAD_CONTEXT if there is no current
+ GLXContext or if the current context is not a direct rendering context.
+
+GLX Protocol
+
+ None. This extension only extends to direct rendering contexts.
+
+New State
+
+ Get Value Get Command Type Initial Value
+ --------- ----------- ---- -------------
+ [swap interval] GetSwapInterval Z+ 0
+
+New Implementation Dependent State
+
+ None
+
+
+Revision History
+
+ 1.1, 5/1/03 Added the issues section and contact information.
+ Changed the default swap interval to 0.
+ 1.0, 3/17/03 Initial version based on GLX_SGI_swap_control and
+ WGL_EXT_swap_control.
diff --git a/mesalib/docs/MESA_texture_array.spec b/mesalib/docs/MESA_texture_array.spec
index 1cc2217f3..b146821f7 100644
--- a/mesalib/docs/MESA_texture_array.spec
+++ b/mesalib/docs/MESA_texture_array.spec
@@ -1,804 +1,804 @@
-Name
-
- MESA_texture_array
-
-Name Strings
-
- GL_MESA_texture_array
-
-Contact
-
- Ian Romanick, IBM (idr 'at' us.ibm.com)
-
-IP Status
-
- No known IP issues.
-
-Status
-
- Shipping in Mesa 7.1
-
-Version
-
-
-Number
-
- TBD
-
-Dependencies
-
- OpenGL 1.2 or GL_EXT_texture3D is required.
-
- Support for ARB_fragment_program is assumed, but not required.
-
- Support for ARB_fragment_program_shadow is assumed, but not required.
-
- Support for EXT_framebuffer_object is assumed, but not required.
-
- Written based on the wording of the OpenGL 2.0 specification and
- ARB_fragment_program_shadow but not dependent on them.
-
-Overview
-
- There are a number of circumstances where an application may wish to
- blend two textures out of a larger set of textures. Moreover, in some
- cases the selected textures may vary on a per-fragment basis within
- a polygon. Several examples include:
-
- 1. High dynamic range textures. The application stores several
- different "exposures" of an image as different textures. On a
- per-fragment basis, the application selects which exposures are
- used.
-
- 2. A terrain engine where the altitude of a point determines the
- texture applied to it. If the transition is from beach sand to
- grass to rocks to snow, the application will store each texture
- in a different texture map, and dynamically select which two
- textures to blend at run-time.
-
- 3. Storing short video clips in textures. Each depth slice is a
- single frame of video.
-
- Several solutions to this problem have been proposed, but they either
- involve using a separate texture unit for each texture map or using 3D
- textures without mipmaps. Both of these options have major drawbacks.
-
- This extension provides a third alternative that eliminates the major
- drawbacks of both previous methods. A new texture target,
- TEXTURE_2D_ARRAY, is added that functions identically to TEXTURE_3D in
- all aspects except the sizes of the non-base level images. In
- traditional 3D texturing, the size of the N+1 LOD is half the size
- of the N LOD in all three dimensions. For the TEXTURE_2D_ARRAY target,
- the height and width of the N+1 LOD is halved, but the depth is the
- same for all levels of detail. The texture then becomes an array of
- 2D textures. The per-fragment texel is selected by the R texture
- coordinate.
-
- References:
-
- http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011557
- http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=000516
- http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011903
- http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm
-
-New Procedures and Functions
-
- All functions come directly from EXT_texture_array.
-
- void FramebufferTextureLayerEXT(enum target, enum attachment,
- uint texture, int level, int layer);
-
-New Tokens
-
- All token names and values come directly from EXT_texture_array.
-
- Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by
- the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
- GetDoublev, and by the <target> parameter of TexImage3D, GetTexImage,
- GetTexLevelParameteriv, GetTexLevelParameterfv, GetTexParameteriv, and
- GetTexParameterfv:
-
- TEXTURE_1D_ARRAY_EXT 0x8C18
- TEXTURE_2D_ARRAY_EXT 0x8C1A
-
- Accepted by the <target> parameter of TexImage2D, TexSubImage2D,
- CopyTexImage2D, CopyTexSubImage2D, CompressedTexImage2D,
- CompressedTexSubImage2D, GetTexLevelParameteriv, and
- GetTexLevelParameterfv:
-
- TEXTURE_1D_ARRAY_EXT
- PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
-
- Accepted by the <target> parameter of TexImage3D, TexSubImage3D,
- CopyTexSubImage3D, CompressedTexImage3D, CompressedTexSubImage3D,
- GetTexLevelParameteriv, and GetTexLevelParameterfv:
-
- TEXTURE_2D_ARRAY_EXT
- PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
-
- Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
- GetFloatv, and GetDoublev
-
- TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
- TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
- MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
-
- Accepted by the <param> parameter of TexParameterf, TexParameteri,
- TexParameterfv, and TexParameteriv when the <pname> parameter is
- TEXTURE_COMPARE_MODE_ARB:
-
- COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
-
- (Note: COMPARE_REF_DEPTH_TO_TEXTURE_EXT is simply an alias for the
- existing COMPARE_R_TO_TEXTURE token in OpenGL 2.0; the alternate name
- reflects the fact that the R coordinate is not always used.)
-
- Accepted by the <internalformat> parameter of TexImage3D and
- CompressedTexImage3D, and by the <format> parameter of
- CompressedTexSubImage3D:
-
- COMPRESSED_RGB_S3TC_DXT1_EXT
- COMPRESSED_RGBA_S3TC_DXT1_EXT
- COMPRESSED_RGBA_S3TC_DXT3_EXT
- COMPRESSED_RGBA_S3TC_DXT5_EXT
-
- Accepted by the <pname> parameter of
- GetFramebufferAttachmentParameterivEXT:
-
- FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
-
- (Note: FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER is simply an alias for the
- FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT token provided in
- EXT_framebuffer_object. This extension generalizes the notion of
- "<zoffset>" to include layers of an array texture.)
-
-Additions to Chapter 2 of the OpenGL 2.0 Specification (OpenGL Operation)
-
- None
-
-Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization)
-
- -- Section 3.8.1 "Texture Image Specification"
-
- Change the first paragraph (page 150) to say (spec changes identical to
- EXT_texture_array):
-
- "The command
-
- void TexImage3D(enum target, int level, int internalformat,
- sizei width, sizei height, sizei depth, int border,
- enum format, enum type, void *data);
-
- is used to specify a three-dimensional texture image. target must be one
- one of TEXTURE_3D for a three-dimensional texture or
- TEXTURE_2D_ARRAY_EXT for an two-dimensional array texture.
- Additionally, target may be either PROXY_TEXTURE_3D for a
- three-dimensional proxy texture, or PROXY_TEXTURE_2D_ARRAY_EXT for a
- two-dimensional proxy array texture."
-
- Change the fourth paragraph on page 151 to say (spec changes identical
- to EXT_texture_array):
-
- "Textures with a base internal format of DEPTH_COMPONENT are supported
- by texture image specification commands only if target is TEXTURE_1D,
- TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, TEXTURE_2D_ARRAY_EXT,
- PROXY_TEXTURE_1D, PROXY_TEXTURE_2D, PROXY_TEXTURE_1D_ARRAY_EXT, or
- PROXY_TEXTURE_2D_ARRAY_EXT. Using this format in conjunction with any
- other target will result in an INVALID_OPERATION error."
-
-
- Change the fourth paragraph on page 156 to say (spec changes identical
- to EXT_texture_array):
-
- "The command
-
- void TexImage2D(enum target, int level,
- int internalformat, sizei width, sizei height,
- int border, enum format, enum type, void *data);
-
- is used to specify a two-dimensional texture image. target must be one
- of TEXTURE_2D for a two-dimensional texture, TEXTURE_1D_ARRAY_EXT for a
- one-dimensional array texture, or one of TEXTURE_CUBE_MAP_POSITIVE_X,
- TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE_MAP_POSITIVE_Y,
- TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or
- TEXTURE_CUBE_MAP_NEGATIVE_Z for a cube map texture. Additionally,
- target may be either PROXY_TEXTURE_2D for a two-dimensional proxy
- texture, PROXY_TEXTURE_1D_ARRAY_EXT for a one-dimensional proxy array
- texture, or PROXY TEXTURE_CUBE_MAP for a cube map proxy texture in the
- special case discussed in section 3.8.11. The other parameters match
- the corresponding parameters of TexImage3D.
-
- For the purposes of decoding the texture image, TexImage2D is
- equivalent to calling TexImage3D with corresponding arguments and depth
- of 1, except that
-
- * The border depth, d_b, is zero, and the depth of the image is
- always 1 regardless of the value of border.
-
- * The border height, h_b, is zero if <target> is
- TEXTURE_1D_ARRAY_EXT, and <border> otherwise.
-
- * Convolution will be performed on the image (possibly changing its
- width and height) if SEPARABLE 2D or CONVOLUTION 2D is enabled.
-
- * UNPACK SKIP IMAGES is ignored."
-
- -- Section 3.8.2 "Alternate Texture Image Specification Commands"
-
- Change the second paragraph (page 159) (spec changes identical
- to EXT_texture_array):
-
- "The command
-
- void CopyTexImage2D(enum target, int level,
- enum internalformat, int x, int y, sizei width,
- sizei height, int border);
-
- defines a two-dimensional texture image in exactly the manner of
- TexImage2D, except that the image data are taken from the framebuffer
- rather than from client memory. Currently, target must be one of
- TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, TEXTURE_CUBE_MAP_POSITIVE_X,
- TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE MAP_POSITIVE_Y,
- TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or
- TEXTURE_CUBE_MAP_NEGATIVE_Z.
-
-
- Change the last paragraph on page 160 to say (spec changes identical
- to EXT_texture_array):
-
- "Currently the target arguments of TexSubImage1D and CopyTexSubImage1D
- must be TEXTURE_1D, the target arguments of TexSubImage2D and
- CopyTexSubImage2D must be one of TEXTURE_2D, TEXTURE_1D_ARRAY_EXT,
- TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_NEGATIVE_X,
- TEXTURE_CUBE_MAP_POSITIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Y,
- TEXTURE_CUBE_MAP_POSITIVE_Z, or TEXTURE_CUBE_MAP_NEGATIVE_Z, and the
- target arguments of TexSubImage3D and CopyTexSubImage3D must be
- TEXTURE_3D or TEXTURE_2D_ARRAY_EXT. ..."
-
-
- -- Section 3.8.4 "Texture Parameters"
-
- Change the first paragraph (page 166) to say:
-
- "Various parameters control how the texel array is treated when
- specified or changed, and when applied to a fragment. Each parameter is
- set by calling
-
- void TexParameter{if}(enum target, enum pname, T param);
- void TexParameter{if}v(enum target, enum pname, T params);
-
- target is the target, either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D,
- TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT."
-
-
- -- Section 3.8.8 "Texture Minification" in the section "Scale Factor and Level of Detail"
-
- Change the first paragraph (page 172) to say:
-
- "Let s(x,y) be the function that associates an s texture coordinate
- with each set of window coordinates (x,y) that lie within a primitive;
- define t(x,y) and r(x,y) analogously. Let u(x,y) = w_t * s(x,y),
- v(x,y) = h_t * t(x,y), and w(x,y) = d_t * r(x,y), where w_t, h_t,
- and d_t are as defined by equations 3.15, 3.16, and 3.17 with
- w_s, h_s, and d_s equal to the width, height, and depth of the
- image array whose level is level_base. For a one-dimensional
- texture or a one-dimensional array texture, define v(x,y) = 0 and
- w(x,y) = 0; for a two-dimensional texture or a two-dimensional array
- texture, define w(x,y) = 0..."
-
- -- Section 3.8.8 "Texture Minification" in the section "Mipmapping"
-
- Change the third paragraph (page 174) to say:
-
- "For a two-dimensional texture, two-dimensional array texture, or
- cube map texture,"
-
- Change the fourth paragraph (page 174) to say:
-
- "And for a one-dimensional texture or a one-dimensional array texture,"
-
- After the first paragraph (page 175) add:
-
- "For one-dimensional array textures, h_b and d_b are treated as 1,
- regardless of the actual values, when performing mipmap calculations.
- For two-dimensional array textures, d_b is always treated as one,
- regardless of the actual value, when performing mipmap calculations."
-
- -- Section 3.8.8 "Automatic Mipmap Generation" in the section "Mipmapping"
-
- Change the third paragraph (page 176) to say (spec changes identical
- to EXT_texture_array):
-
- "The contents of the derived arrays are computed by repeated, filtered
- reduction of the level_base array. For one- and two-dimensional array
- textures, each layer is filtered independently. ..."
-
- -- Section 3.8.8 "Manual Mipmap Generation" in the section "Mipmapping"
-
- Change first paragraph to say (spec changes identical to
- EXT_texture_array):
-
- "Mipmaps can be generated manually with the command
-
- void GenerateMipmapEXT(enum target);
-
- where <target> is one of TEXTURE_1D, TEXTURE_2D, TEXTURE_CUBE_MAP,
- TEXTURE_3D, TEXTURE_1D_ARRAY, or TEXTURE_2D_ARRAY. Mipmap generation
- affects the texture image attached to <target>. ..."
-
- -- Section 3.8.10 "Texture Completeness"
-
- Change the second paragraph (page 177) to say (spec changes identical
- to EXT_texture_array):
-
- "For one-, two-, or three-dimensional textures and one- or
- two-dimensional array textures, a texture is complete if the following
- conditions all hold true:"
-
- -- Section 3.8.11 "Texture State and Proxy State"
-
- Change the second and third paragraphs (page 179) to say (spec changes
- identical to EXT_texture_array):
-
- "In addition to image arrays for one-, two-, and three-dimensional
- textures, one- and two-dimensional array textures, and the six image
- arrays for the cube map texture, partially instantiated image arrays
- are maintained for one-, two-, and three-dimensional textures and one-
- and two-dimensional array textures. Additionally, a single proxy image
- array is maintained for the cube map texture. Each proxy image array
- includes width, height, depth, border width, and internal format state
- values, as well as state for the red, green, blue, alpha, luminance,
- and intensity component resolutions. Proxy image arrays do not include
- image data, nor do they include texture properties. When TexImage3D is
- executed with target specified as PROXY_TEXTURE_3D, the
- three-dimensional proxy state values of the specified level-of-detail
- are recomputed and updated. If the image array would not be supported
- by TexImage3D called with target set to TEXTURE 3D, no error is
- generated, but the proxy width, height, depth, border width, and
- component resolutions are set to zero. If the image array would be
- supported by such a call to TexImage3D, the proxy state values are set
- exactly as though the actual image array were being specified. No pixel
- data are transferred or processed in either case.
-
- Proxy arrays for one- and two-dimensional textures and one- and
- two-dimensional array textures are operated on in the same way when
- TexImage1D is executed with target specified as PROXY_TEXTURE_1D,
- TexImage2D is executed with target specified as PROXY_TEXTURE_2D or
- PROXY_TEXTURE_1D_ARRAY_EXT, or TexImage3D is executed with target
- specified as PROXY_TETXURE_2D_ARRAY_EXT."
-
- -- Section 3.8.12 "Texture Objects"
-
- Change section (page 180) to say (spec changes identical to
- EXT_texture_array):
-
- "In addition to the default textures TEXTURE_1D, TEXTURE_2D,
- TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and TEXTURE_2D_EXT,
- named one-, two-, and three-dimensional, cube map, and one- and
- two-dimensional array texture objects can be created and operated upon.
- The name space for texture objects is the unsigned integers, with zero
- reserved by the GL.
-
- A texture object is created by binding an unused name to TEXTURE_1D,
- TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or
- TEXTURE_2D_ARRAY_EXT. The binding is effected by calling
-
- void BindTexture(enum target, uint texture);
-
- with <target> set to the desired texture target and <texture> set to
- the unused name. The resulting texture object is a new state vector,
- comprising all the state values listed in section 3.8.11, set to the
- same initial values. If the new texture object is bound to TEXTURE_1D,
- TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or
- TEXTURE_2D_ARRAY_EXT, it is and remains a one-, two-,
- three-dimensional, cube map, one- or two-dimensional array texture
- respectively until it is deleted.
-
- BindTexture may also be used to bind an existing texture object to
- either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP,
- TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT. The error
- INVALID_OPERATION is generated if an attempt is made to bind a texture
- object of different dimensionality than the specified target. If the
- bind is successful no change is made to the state of the bound texture
- object, and any previous binding to target is broken.
-
- While a texture object is bound, GL operations on the target to which
- it is bound affect the bound object, and queries of the target to which
- it is bound return state from the bound object. If texture mapping of
- the dimensionality of the target to which a texture object is bound is
- enabled, the state of the bound texture object directs the texturing
- operation.
-
- In the initial state, TEXTURE_1D, TEXTURE_2D, TEXTURE_3D,
- TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and TEXTURE_2D_ARRAY_EXT have
- one-, two-, three-dimensional, cube map, and one- and two-dimensional
- array texture state vectors respectively associated with them. In order
- that access to these initial textures not be lost, they are treated as
- texture objects all of whose names are 0. The initial one-, two-,
- three-dimensional, cube map, one- and two-dimensional array textures
- are therefore operated upon, queried, and applied as TEXTURE_1D,
- TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and
- TEXTURE_2D_ARRAY_EXT respectively while 0 is bound to the corresponding
- targets.
-
- Change second paragraph on page 181 to say (spec changes identical to
- EXT_texture_array):
-
- "... If a texture that is currently bound to one of the targets
- TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP,
- TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT is deleted, it is as
- though BindTexture had been executed with the same target and texture
- zero. ..."
-
- Change second paragraph on page 182 to say (spec changes identical to
- EXT_texture_array):
-
- "The texture object name space, including the initial one-, two-, and
- three dimensional, cube map, and one- and two-dimensional array texture
- objects, is shared among all texture units. ..."
-
-
- -- Section 3.8.14 "Depth Texture Comparison Modes" in "Texture Comparison Modes"
-
- Change second through fourth paragraphs (page 188) to say:
-
- "Let D_t be the depth texture value, in the range [0, 1]. For
- texture lookups from one- and two-dimensional, rectangle, and
- one-dimensional array targets, let R be the interpolated <r>
- texture coordinate, clamped to the range [0, 1]. For texture lookups
- from two-dimensional array texture targets, let R be the interpolated
- <q> texture coordinate, clamped to the range [0, 1]. Then the
- effective texture value L_t, I_t, or A_t is computed as follows:
-
- If the value of TEXTURE_COMPARE_MODE is NONE, then
-
- r = Dt
-
- If the value of TEXTURE_COMPARE_MODE is
- COMPARE_REF_DEPTH_TO_TEXTURE_EXT), then r depends on the texture
- comparison function as shown in table 3.27."
-
- -- Section 3.8.15 "Texture Application"
-
- Change the first paragraph (page 189) to say:
-
- "Texturing is enabled or disabled using the generic Enable and Disable
- commands, respectively, with the symbolic constants TEXTURE_1D,
- TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or
- TEXTURE_2D_ARRAY_EXT to enable one-, two-, three-dimensional, cube
- map, one-dimensional array, or two-dimensional array texture,
- respectively. If both two- and one-dimensional textures are enabled,
- the two-dimensional texture is used. If the three-dimensional and
- either of the two- or one-dimensional textures is enabled, the
- three-dimensional texture is used. If the cube map texture and any of
- the three-, two-, or one-dimensional textures is enabled, then cube map
- texturing is used. If one-dimensional array texture is enabled and any
- of cube map, three-, two-, or one-dimensional textures is enabled,
- one-dimensional array texturing is used. If two-dimensional array
- texture is enabled and any of cube map, three-, two-, one-dimensional
- textures or one-dimensional array texture is enabled, two-dimensional
- array texturing is used..."
-
- -- Section 3.11.2 of ARB_fragment_program (Fragment Program Grammar and Restrictions):
-
- (mostly add to existing grammar rules)
-
- <optionName> ::= "MESA_texture_array"
-
- <texTarget> ::= "1D"
- | "2D"
- | "3D"
- | "CUBE"
- | "RECT"
- | <arrayTarget> (if program option is present)
- | <shadowTarget> (if program option is present)
-
- <arrayTarget> ::= "ARRAY1D"
- | "ARRAY2D"
-
- <shadowTarget> ::= "SHADOW1D"
- | "SHADOW2D"
- | "SHADOWRECT"
- | <shadowArrayTarget> (if program option is present)
-
- <shadowArrayTarget> ::= "SHADOWARRAY1D"
- | "SHADOWARRAY2D"
-
-
- -- Add Section 3.11.4.5.4 "Texture Stack Option"
-
- "If a fragment program specifies the "MESA_texture_array" program
- option, the <texTarget> rule is modified to add the texture targets
- ARRAY1D and ARRAY2D (See Section 3.11.2)."
-
- -- Section 3.11.6 "Fragment Program Texture Instruction Set"
-
- (replace 1st and 2nd paragraphs with the following paragraphs)
-
- "The first three texture instructions described below specify the
- mapping of 4-tuple input vectors to 4-tuple output vectors.
- The sampling of the texture works as described in section 3.8,
- except that texture environments and texture functions are not
- applicable, and the texture enables hierarchy is replaced by explicit
- references to the desired texture target (i.e., 1D, 2D, 3D, cube map,
- rectangle, ARRAY1D, ARRAY2D). These texture instructions specify
- how the 4-tuple is mapped into the coordinates used for sampling. The
- following function is used to describe the texture sampling in the
- descriptions below:
-
- vec4 TextureSample(vec4 coord, float lodBias, int texImageUnit,
- enum texTarget);
-
- Note that not all four components of the texture coordinates <coord>
- are used by all texture targets. Component usage for each <texTarget>
- is defined in table X.
-
- coordinates used
- texTarget Texture Type s t r layer shadow
- ---------------- --------------------- ----- ----- ------
- 1D TEXTURE_1D x - - - -
- 2D TEXTURE_2D x y - - -
- 3D TEXTURE_3D x y z - -
- CUBE TEXTURE_CUBE_MAP x y z - -
- RECT TEXTURE_RECTANGLE_ARB x y - - -
- ARRAY1D TEXTURE_1D_ARRAY_EXT x - - y -
- ARRAY2D TEXTURE_2D_ARRAY_EXT x y - z -
- SHADOW1D TEXTURE_1D x - - - z
- SHADOW2D TEXTURE_2D x y - - z
- SHADOWRECT TEXTURE_RECTANGLE_ARB x y - - z
- SHADOWARRAY1D TEXTURE_1D_ARRAY_EXT x - - y z
- SHADOWARRAY2D TEXTURE_2D_ARRAY_EXT x y - z w
-
- Table X: Texture types accessed for each of the <texTarget>, and
- coordinate mappings. The "coordinates used" column indicate the
- input values used for each coordinate of the texture lookup, the
- layer selector for array textures, and the reference value for
- texture comparisons."
-
- -- Section 3.11.6.2 "TXP: Project coordinate and map to color"
-
- Add to the end of the section:
-
- "A program will fail to load if the TXP instruction is used in
- conjunction with the SHADOWARRAY2D target."
-
-Additions to Chapter 4 of the OpenGL 2.0 Specification (Per-Fragment Operations)
-
- -- Section 4.4.2.3 "Attaching Texture Images to a Framebuffer"
-
- Add to the end of the section (spec changes identical to
- EXT_texture_array):
-
- "The command
-
- void FramebufferTextureLayerEXT(enum target, enum attachment,
- uint texture, int level, int layer);
-
- operates identically to FramebufferTexture3DEXT, except that it
- attaches a single layer of a three-dimensional texture or a one- or
- two-dimensional array texture. <layer> is an integer indicating the
- layer number, and is treated identically to the <zoffset> parameter in
- FramebufferTexture3DEXT. The error INVALID_VALUE is generated if
- <layer> is negative. The error INVALID_OPERATION is generated if
- <texture> is non-zero and is not the name of a three dimensional
- texture or one- or two-dimensional array texture. Unlike
- FramebufferTexture3D, no <textarget> parameter is accepted.
-
- If <texture> is non-zero and the command does not result in an error,
- the framebuffer attachment state corresponding to <attachment> is
- updated as in the other FramebufferTexture commands, except that
- FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT is set to <layer>."
-
- -- Section 4.4.4.1 "Framebuffer Attachment Completeness"
-
- Add to the end of the list of completeness rules (spec changes
- identical to EXT_texture_array):
-
- "* If FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT is TEXTURE and
- FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT names a one- or
- two-dimensional array texture, then
- FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT must be smaller than the
- number of layers in the texture."
-
-Additions to Chapter 5 of the OpenGL 2.0 Specification (Special Functions)
-
- -- Section 5.4 "Display Lists"
-
- Change the first paragraph on page 242 to say (spec changes
- identical to EXT_texture_array):
-
- "TexImage3D, TexImage2D, TexImage1D, Histogram, and ColorTable are
- executed immediately when called with the corresponding proxy arguments
- PROXY_TEXTURE_3D or PROXY_TEXTURE_2D_ARRAY_EXT; PROXY_TEXTURE_2D,
- PROXY_TEXTURE_CUBE_MAP, or PROXY_TEXTURE_1D_ARRAY_EXT;
- PROXY_TEXTURE_1D; PROXY_HISTOGRAM; and PROXY_COLOR_TABLE,
- PROXY_POST_CONVOLUTION_COLOR_TABLE, or
- PROXY_POST_COLOR_MATRIX_COLOR_TABLE."
-
-Additions to Chapter 6 of the OpenGL 2.0 Specification (State and State Requests)
-
- -- Section 6.1.3 "Enumerated Queries"
-
- Add after the line beginning "If the value of
- FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT is TEXTURE" (spec changes
- identical to EXT_texture_array):
-
- "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT and the
- texture object named FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT is a
- three-dimensional texture or a one- or two-dimensional array texture,
- then <params> will contain the number of texture layer attached to the
- attachment point. Otherwise, <params> will contain the value zero."
-
- -- Section 6.1.4 "Texture Queries"
-
- Change the first three paragraphs (page 248) to say (spec changes
- identical to EXT_texture_array):
-
- "The command
-
- void GetTexImage(enum tex, int lod, enum format,
- enum type, void *img);
-
- is used to obtain texture images. It is somewhat different from the
- other get commands; tex is a symbolic value indicating which texture
- (or texture face in the case of a cube map texture target name) is to
- be obtained. TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_1D_ARRAY_EXT,
- and TEXTURE_2D_ARRAY_EXT indicate a one-, two-, or three-dimensional
- texture, or one- or two-dimensional array texture, respectively.
- TEXTURE_CUBE_MAP_POSITIVE_X, ...
-
- GetTexImage obtains... from the first image to the last for
- three-dimensional textures. One- and two-dimensional array textures
- are treated as two- and three-dimensional images, respectively, where
- the layers are treated as rows or images. These groups are then...
-
- For three-dimensional and two-dimensional array textures, pixel storage
- operations are applied as if the image were two-dimensional, except
- that the additional pixel storage state values PACK_IMAGE_HEIGHT and
- PACK_SKIP_IMAGES are applied. ..."
-
-Additions to Appendix A of the OpenGL 2.0 Specification (Invariance)
-
- None
-
-Additions to the AGL/GLX/WGL Specifications
-
- None
-
-GLX Protocol
-
- None
-
-Dependencies on ARB_fragment_program
-
- If ARB_fragment_program is not supported, the changes to section 3.11
- should be ignored.
-
-Dependencies on EXT_framebuffer_object
-
- If EXT_framebuffer_object is not supported, the changes to section
- 3.8.8 ("Manual Mipmap Generation"), 4.4.2.3, and 6.1.3 should be ignored.
-
-Dependencies on EXT_texture_compression_s3tc and NV_texture_compression_vtc
-
- (Identical dependency as EXT_texture_array.)
-
- S3TC texture compression is supported for two-dimensional array textures.
- When <target> is TEXTURE_2D_ARRAY_EXT, each layer is stored independently
- as a compressed two-dimensional textures. When specifying or querying
- compressed images using one of the S3TC formats, the images are provided
- and/or returned as a series of two-dimensional textures stored
- consecutively in memory, with the layer closest to zero specified first.
- For array textures, images are not arranged in 4x4x4 or 4x4x2 blocks as in
- the three-dimensional compression format provided in the
- EXT_texture_compression_vtc extension. Pixel store parameters, including
- those specific to three-dimensional images, are ignored when compressed
- image data are provided or returned, as in the
- EXT_texture_compression_s3tc extension.
-
- S3TC compression is not supported for one-dimensional texture targets in
- EXT_texture_compression_s3tc, and is not supported for one-dimensional
- array textures in this extension. If compressed one-dimensional arrays
- are needed, use a two-dimensional texture with a height of one.
-
- This extension allows the use of the four S3TC internal format types in
- TexImage3D, CompressedTexImage3D, and CompressedTexSubImage3D calls.
-
-Errors
-
- None
-
-New State
-
- (add to table 6.15, p. 276)
-
- Initial
- Get Value Type Get Command Value Description Sec. Attribute
- ---------------------------- ----- ----------- ----- -------------------- ------ ---------
- TEXTURE_BINDING_1D_ARRAY_EXT 2*xZ+ GetIntegerv 0 texture object bound 3.8.12 texture
- to TEXTURE_1D_ARRAY
- TEXTURE_BINDING_2D_ARRAY_EXT 2*xZ+ GetIntegerv 0 texture object bound 3.8.12 texture
- to TEXTURE_2D_ARRAY
-
-
-New Implementation Dependent State
-
- (add to Table 6.32, p. 293)
-
- Minimum
- Get Value Type Get Command Value Description Sec. Attribute
- ---------------------------- ---- ----------- ------- ------------------ ----- ---------
- MAX_TEXTURE_ARRAY_LAYERS_EXT Z+ GetIntegerv 64 maximum number of 3.8.1 -
- layers for texture
- arrays
-
-Issues
-
- (1) Is "texture stack" a good name for this functionality?
-
- NO. The name is changed to "array texture" to match the
- nomenclature used by GL_EXT_texture_array.
-
- (2) Should the R texture coordinate be treated as normalized or
- un-normalized? If it were un-normalized, floor(R) could be thought
- of as a direct index into the array texture. This may be more
- convenient for applications.
-
- RESOLVED. All texture coordinates are normalized. The issue of
- un-normalized texture coordinates has been discussed in the ARB
- before and should be left for a layered extension.
-
- RE-RESOLVED. The R coordinate is un-normalized. Accessing an array
- using [0, layers-1] coordinates is much more natural.
-
- (3) How does LOD selection work for stacked textures?
-
- RESOLVED. For 2D array textures the R coordinate is ignored, and
- the LOD selection equations for 2D textures are used. For 1D
- array textures the T coordinate is ignored, and the LOD selection
- equations for 1D textures are used. The expected usage is in a
- fragment program with an explicit LOD selection.
-
- (4) What is the maximum size of a 2D array texture? Is it the same
- as for a 3D texture, or should a new query be added? How about for 1D
- array textures?
-
- RESOLVED. A new query is added.
-
- (5) How are array textures exposed in GLSL?
-
- RESOLVED. Use GL_EXT_texture_array.
-
- (6) Should a 1D array texture also be exposed?
-
- RESOLVED. For orthogonality, yes.
-
- (7) How are stacked textures attached to framebuffer objects?
-
- RESOLVED. Layers of both one- and two-dimensional array textures
- are attached using FreambufferTextureLayerEXT. Once attached, the
- array texture layer behaves exactly as either a one- or
- two-dimensional texture.
-
- (8) How is this extension related to GL_EXT_texture_array?
-
- This extension adapats GL_MESAX_texture_stack to the notation,
- indexing, and FBO access of GL_EXT_texture_array. This extension
- replaces the GLSL support of GL_EXT_texture_array with
- GL_ARB_fragment_program support.
-
- Assembly program support is also provided by GL_NV_gpu_program4.
- GL_NV_gpu_program4 also adds support for other features that are
- specific to Nvidia hardware, while this extension adds only support
- for array textures.
-
- Much of text of this extension that has changed since
- GL_MESAX_texture_stack comes directly from either
- GL_EXT_texture_array or GL_NV_gpu_program4.
-
-Revision History
-
- ||2005/11/15||0.1||idr||Initial draft MESAX version.||
- ||2005/12/07||0.2||idr||Added framebuffer object interactions.||
- ||2005/12/12||0.3||idr||Updated fragment program interactions.||
- ||2007/05/16||0.4||idr||Converted to MESA_texture_array. Brought in line with EXT_texture_array and NV_gpu_program4.||
+Name
+
+ MESA_texture_array
+
+Name Strings
+
+ GL_MESA_texture_array
+
+Contact
+
+ Ian Romanick, IBM (idr 'at' us.ibm.com)
+
+IP Status
+
+ No known IP issues.
+
+Status
+
+ Shipping in Mesa 7.1
+
+Version
+
+
+Number
+
+ TBD
+
+Dependencies
+
+ OpenGL 1.2 or GL_EXT_texture3D is required.
+
+ Support for ARB_fragment_program is assumed, but not required.
+
+ Support for ARB_fragment_program_shadow is assumed, but not required.
+
+ Support for EXT_framebuffer_object is assumed, but not required.
+
+ Written based on the wording of the OpenGL 2.0 specification and
+ ARB_fragment_program_shadow but not dependent on them.
+
+Overview
+
+ There are a number of circumstances where an application may wish to
+ blend two textures out of a larger set of textures. Moreover, in some
+ cases the selected textures may vary on a per-fragment basis within
+ a polygon. Several examples include:
+
+ 1. High dynamic range textures. The application stores several
+ different "exposures" of an image as different textures. On a
+ per-fragment basis, the application selects which exposures are
+ used.
+
+ 2. A terrain engine where the altitude of a point determines the
+ texture applied to it. If the transition is from beach sand to
+ grass to rocks to snow, the application will store each texture
+ in a different texture map, and dynamically select which two
+ textures to blend at run-time.
+
+ 3. Storing short video clips in textures. Each depth slice is a
+ single frame of video.
+
+ Several solutions to this problem have been proposed, but they either
+ involve using a separate texture unit for each texture map or using 3D
+ textures without mipmaps. Both of these options have major drawbacks.
+
+ This extension provides a third alternative that eliminates the major
+ drawbacks of both previous methods. A new texture target,
+ TEXTURE_2D_ARRAY, is added that functions identically to TEXTURE_3D in
+ all aspects except the sizes of the non-base level images. In
+ traditional 3D texturing, the size of the N+1 LOD is half the size
+ of the N LOD in all three dimensions. For the TEXTURE_2D_ARRAY target,
+ the height and width of the N+1 LOD is halved, but the depth is the
+ same for all levels of detail. The texture then becomes an array of
+ 2D textures. The per-fragment texel is selected by the R texture
+ coordinate.
+
+ References:
+
+ http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011557
+ http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=000516
+ http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=011903
+ http://www.delphi3d.net/articles/viewarticle.php?article=terraintex.htm
+
+New Procedures and Functions
+
+ All functions come directly from EXT_texture_array.
+
+ void FramebufferTextureLayerEXT(enum target, enum attachment,
+ uint texture, int level, int layer);
+
+New Tokens
+
+ All token names and values come directly from EXT_texture_array.
+
+ Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, by
+ the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
+ GetDoublev, and by the <target> parameter of TexImage3D, GetTexImage,
+ GetTexLevelParameteriv, GetTexLevelParameterfv, GetTexParameteriv, and
+ GetTexParameterfv:
+
+ TEXTURE_1D_ARRAY_EXT 0x8C18
+ TEXTURE_2D_ARRAY_EXT 0x8C1A
+
+ Accepted by the <target> parameter of TexImage2D, TexSubImage2D,
+ CopyTexImage2D, CopyTexSubImage2D, CompressedTexImage2D,
+ CompressedTexSubImage2D, GetTexLevelParameteriv, and
+ GetTexLevelParameterfv:
+
+ TEXTURE_1D_ARRAY_EXT
+ PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19
+
+ Accepted by the <target> parameter of TexImage3D, TexSubImage3D,
+ CopyTexSubImage3D, CompressedTexImage3D, CompressedTexSubImage3D,
+ GetTexLevelParameteriv, and GetTexLevelParameterfv:
+
+ TEXTURE_2D_ARRAY_EXT
+ PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B
+
+ Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
+ GetFloatv, and GetDoublev
+
+ TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C
+ TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D
+ MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF
+
+ Accepted by the <param> parameter of TexParameterf, TexParameteri,
+ TexParameterfv, and TexParameteriv when the <pname> parameter is
+ TEXTURE_COMPARE_MODE_ARB:
+
+ COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E
+
+ (Note: COMPARE_REF_DEPTH_TO_TEXTURE_EXT is simply an alias for the
+ existing COMPARE_R_TO_TEXTURE token in OpenGL 2.0; the alternate name
+ reflects the fact that the R coordinate is not always used.)
+
+ Accepted by the <internalformat> parameter of TexImage3D and
+ CompressedTexImage3D, and by the <format> parameter of
+ CompressedTexSubImage3D:
+
+ COMPRESSED_RGB_S3TC_DXT1_EXT
+ COMPRESSED_RGBA_S3TC_DXT1_EXT
+ COMPRESSED_RGBA_S3TC_DXT3_EXT
+ COMPRESSED_RGBA_S3TC_DXT5_EXT
+
+ Accepted by the <pname> parameter of
+ GetFramebufferAttachmentParameterivEXT:
+
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4
+
+ (Note: FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER is simply an alias for the
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT token provided in
+ EXT_framebuffer_object. This extension generalizes the notion of
+ "<zoffset>" to include layers of an array texture.)
+
+Additions to Chapter 2 of the OpenGL 2.0 Specification (OpenGL Operation)
+
+ None
+
+Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization)
+
+ -- Section 3.8.1 "Texture Image Specification"
+
+ Change the first paragraph (page 150) to say (spec changes identical to
+ EXT_texture_array):
+
+ "The command
+
+ void TexImage3D(enum target, int level, int internalformat,
+ sizei width, sizei height, sizei depth, int border,
+ enum format, enum type, void *data);
+
+ is used to specify a three-dimensional texture image. target must be one
+ one of TEXTURE_3D for a three-dimensional texture or
+ TEXTURE_2D_ARRAY_EXT for an two-dimensional array texture.
+ Additionally, target may be either PROXY_TEXTURE_3D for a
+ three-dimensional proxy texture, or PROXY_TEXTURE_2D_ARRAY_EXT for a
+ two-dimensional proxy array texture."
+
+ Change the fourth paragraph on page 151 to say (spec changes identical
+ to EXT_texture_array):
+
+ "Textures with a base internal format of DEPTH_COMPONENT are supported
+ by texture image specification commands only if target is TEXTURE_1D,
+ TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, TEXTURE_2D_ARRAY_EXT,
+ PROXY_TEXTURE_1D, PROXY_TEXTURE_2D, PROXY_TEXTURE_1D_ARRAY_EXT, or
+ PROXY_TEXTURE_2D_ARRAY_EXT. Using this format in conjunction with any
+ other target will result in an INVALID_OPERATION error."
+
+
+ Change the fourth paragraph on page 156 to say (spec changes identical
+ to EXT_texture_array):
+
+ "The command
+
+ void TexImage2D(enum target, int level,
+ int internalformat, sizei width, sizei height,
+ int border, enum format, enum type, void *data);
+
+ is used to specify a two-dimensional texture image. target must be one
+ of TEXTURE_2D for a two-dimensional texture, TEXTURE_1D_ARRAY_EXT for a
+ one-dimensional array texture, or one of TEXTURE_CUBE_MAP_POSITIVE_X,
+ TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE_MAP_POSITIVE_Y,
+ TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or
+ TEXTURE_CUBE_MAP_NEGATIVE_Z for a cube map texture. Additionally,
+ target may be either PROXY_TEXTURE_2D for a two-dimensional proxy
+ texture, PROXY_TEXTURE_1D_ARRAY_EXT for a one-dimensional proxy array
+ texture, or PROXY TEXTURE_CUBE_MAP for a cube map proxy texture in the
+ special case discussed in section 3.8.11. The other parameters match
+ the corresponding parameters of TexImage3D.
+
+ For the purposes of decoding the texture image, TexImage2D is
+ equivalent to calling TexImage3D with corresponding arguments and depth
+ of 1, except that
+
+ * The border depth, d_b, is zero, and the depth of the image is
+ always 1 regardless of the value of border.
+
+ * The border height, h_b, is zero if <target> is
+ TEXTURE_1D_ARRAY_EXT, and <border> otherwise.
+
+ * Convolution will be performed on the image (possibly changing its
+ width and height) if SEPARABLE 2D or CONVOLUTION 2D is enabled.
+
+ * UNPACK SKIP IMAGES is ignored."
+
+ -- Section 3.8.2 "Alternate Texture Image Specification Commands"
+
+ Change the second paragraph (page 159) (spec changes identical
+ to EXT_texture_array):
+
+ "The command
+
+ void CopyTexImage2D(enum target, int level,
+ enum internalformat, int x, int y, sizei width,
+ sizei height, int border);
+
+ defines a two-dimensional texture image in exactly the manner of
+ TexImage2D, except that the image data are taken from the framebuffer
+ rather than from client memory. Currently, target must be one of
+ TEXTURE_2D, TEXTURE_1D_ARRAY_EXT, TEXTURE_CUBE_MAP_POSITIVE_X,
+ TEXTURE_CUBE_MAP_NEGATIVE_X, TEXTURE_CUBE MAP_POSITIVE_Y,
+ TEXTURE_CUBE_MAP_NEGATIVE_Y, TEXTURE_CUBE_MAP_POSITIVE_Z, or
+ TEXTURE_CUBE_MAP_NEGATIVE_Z.
+
+
+ Change the last paragraph on page 160 to say (spec changes identical
+ to EXT_texture_array):
+
+ "Currently the target arguments of TexSubImage1D and CopyTexSubImage1D
+ must be TEXTURE_1D, the target arguments of TexSubImage2D and
+ CopyTexSubImage2D must be one of TEXTURE_2D, TEXTURE_1D_ARRAY_EXT,
+ TEXTURE_CUBE_MAP_POSITIVE_X, TEXTURE_CUBE_MAP_NEGATIVE_X,
+ TEXTURE_CUBE_MAP_POSITIVE_Y, TEXTURE_CUBE_MAP_NEGATIVE_Y,
+ TEXTURE_CUBE_MAP_POSITIVE_Z, or TEXTURE_CUBE_MAP_NEGATIVE_Z, and the
+ target arguments of TexSubImage3D and CopyTexSubImage3D must be
+ TEXTURE_3D or TEXTURE_2D_ARRAY_EXT. ..."
+
+
+ -- Section 3.8.4 "Texture Parameters"
+
+ Change the first paragraph (page 166) to say:
+
+ "Various parameters control how the texel array is treated when
+ specified or changed, and when applied to a fragment. Each parameter is
+ set by calling
+
+ void TexParameter{if}(enum target, enum pname, T param);
+ void TexParameter{if}v(enum target, enum pname, T params);
+
+ target is the target, either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D,
+ TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT."
+
+
+ -- Section 3.8.8 "Texture Minification" in the section "Scale Factor and Level of Detail"
+
+ Change the first paragraph (page 172) to say:
+
+ "Let s(x,y) be the function that associates an s texture coordinate
+ with each set of window coordinates (x,y) that lie within a primitive;
+ define t(x,y) and r(x,y) analogously. Let u(x,y) = w_t * s(x,y),
+ v(x,y) = h_t * t(x,y), and w(x,y) = d_t * r(x,y), where w_t, h_t,
+ and d_t are as defined by equations 3.15, 3.16, and 3.17 with
+ w_s, h_s, and d_s equal to the width, height, and depth of the
+ image array whose level is level_base. For a one-dimensional
+ texture or a one-dimensional array texture, define v(x,y) = 0 and
+ w(x,y) = 0; for a two-dimensional texture or a two-dimensional array
+ texture, define w(x,y) = 0..."
+
+ -- Section 3.8.8 "Texture Minification" in the section "Mipmapping"
+
+ Change the third paragraph (page 174) to say:
+
+ "For a two-dimensional texture, two-dimensional array texture, or
+ cube map texture,"
+
+ Change the fourth paragraph (page 174) to say:
+
+ "And for a one-dimensional texture or a one-dimensional array texture,"
+
+ After the first paragraph (page 175) add:
+
+ "For one-dimensional array textures, h_b and d_b are treated as 1,
+ regardless of the actual values, when performing mipmap calculations.
+ For two-dimensional array textures, d_b is always treated as one,
+ regardless of the actual value, when performing mipmap calculations."
+
+ -- Section 3.8.8 "Automatic Mipmap Generation" in the section "Mipmapping"
+
+ Change the third paragraph (page 176) to say (spec changes identical
+ to EXT_texture_array):
+
+ "The contents of the derived arrays are computed by repeated, filtered
+ reduction of the level_base array. For one- and two-dimensional array
+ textures, each layer is filtered independently. ..."
+
+ -- Section 3.8.8 "Manual Mipmap Generation" in the section "Mipmapping"
+
+ Change first paragraph to say (spec changes identical to
+ EXT_texture_array):
+
+ "Mipmaps can be generated manually with the command
+
+ void GenerateMipmapEXT(enum target);
+
+ where <target> is one of TEXTURE_1D, TEXTURE_2D, TEXTURE_CUBE_MAP,
+ TEXTURE_3D, TEXTURE_1D_ARRAY, or TEXTURE_2D_ARRAY. Mipmap generation
+ affects the texture image attached to <target>. ..."
+
+ -- Section 3.8.10 "Texture Completeness"
+
+ Change the second paragraph (page 177) to say (spec changes identical
+ to EXT_texture_array):
+
+ "For one-, two-, or three-dimensional textures and one- or
+ two-dimensional array textures, a texture is complete if the following
+ conditions all hold true:"
+
+ -- Section 3.8.11 "Texture State and Proxy State"
+
+ Change the second and third paragraphs (page 179) to say (spec changes
+ identical to EXT_texture_array):
+
+ "In addition to image arrays for one-, two-, and three-dimensional
+ textures, one- and two-dimensional array textures, and the six image
+ arrays for the cube map texture, partially instantiated image arrays
+ are maintained for one-, two-, and three-dimensional textures and one-
+ and two-dimensional array textures. Additionally, a single proxy image
+ array is maintained for the cube map texture. Each proxy image array
+ includes width, height, depth, border width, and internal format state
+ values, as well as state for the red, green, blue, alpha, luminance,
+ and intensity component resolutions. Proxy image arrays do not include
+ image data, nor do they include texture properties. When TexImage3D is
+ executed with target specified as PROXY_TEXTURE_3D, the
+ three-dimensional proxy state values of the specified level-of-detail
+ are recomputed and updated. If the image array would not be supported
+ by TexImage3D called with target set to TEXTURE 3D, no error is
+ generated, but the proxy width, height, depth, border width, and
+ component resolutions are set to zero. If the image array would be
+ supported by such a call to TexImage3D, the proxy state values are set
+ exactly as though the actual image array were being specified. No pixel
+ data are transferred or processed in either case.
+
+ Proxy arrays for one- and two-dimensional textures and one- and
+ two-dimensional array textures are operated on in the same way when
+ TexImage1D is executed with target specified as PROXY_TEXTURE_1D,
+ TexImage2D is executed with target specified as PROXY_TEXTURE_2D or
+ PROXY_TEXTURE_1D_ARRAY_EXT, or TexImage3D is executed with target
+ specified as PROXY_TETXURE_2D_ARRAY_EXT."
+
+ -- Section 3.8.12 "Texture Objects"
+
+ Change section (page 180) to say (spec changes identical to
+ EXT_texture_array):
+
+ "In addition to the default textures TEXTURE_1D, TEXTURE_2D,
+ TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and TEXTURE_2D_EXT,
+ named one-, two-, and three-dimensional, cube map, and one- and
+ two-dimensional array texture objects can be created and operated upon.
+ The name space for texture objects is the unsigned integers, with zero
+ reserved by the GL.
+
+ A texture object is created by binding an unused name to TEXTURE_1D,
+ TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or
+ TEXTURE_2D_ARRAY_EXT. The binding is effected by calling
+
+ void BindTexture(enum target, uint texture);
+
+ with <target> set to the desired texture target and <texture> set to
+ the unused name. The resulting texture object is a new state vector,
+ comprising all the state values listed in section 3.8.11, set to the
+ same initial values. If the new texture object is bound to TEXTURE_1D,
+ TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or
+ TEXTURE_2D_ARRAY_EXT, it is and remains a one-, two-,
+ three-dimensional, cube map, one- or two-dimensional array texture
+ respectively until it is deleted.
+
+ BindTexture may also be used to bind an existing texture object to
+ either TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP,
+ TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT. The error
+ INVALID_OPERATION is generated if an attempt is made to bind a texture
+ object of different dimensionality than the specified target. If the
+ bind is successful no change is made to the state of the bound texture
+ object, and any previous binding to target is broken.
+
+ While a texture object is bound, GL operations on the target to which
+ it is bound affect the bound object, and queries of the target to which
+ it is bound return state from the bound object. If texture mapping of
+ the dimensionality of the target to which a texture object is bound is
+ enabled, the state of the bound texture object directs the texturing
+ operation.
+
+ In the initial state, TEXTURE_1D, TEXTURE_2D, TEXTURE_3D,
+ TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and TEXTURE_2D_ARRAY_EXT have
+ one-, two-, three-dimensional, cube map, and one- and two-dimensional
+ array texture state vectors respectively associated with them. In order
+ that access to these initial textures not be lost, they are treated as
+ texture objects all of whose names are 0. The initial one-, two-,
+ three-dimensional, cube map, one- and two-dimensional array textures
+ are therefore operated upon, queried, and applied as TEXTURE_1D,
+ TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, and
+ TEXTURE_2D_ARRAY_EXT respectively while 0 is bound to the corresponding
+ targets.
+
+ Change second paragraph on page 181 to say (spec changes identical to
+ EXT_texture_array):
+
+ "... If a texture that is currently bound to one of the targets
+ TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP,
+ TEXTURE_1D_ARRAY_EXT, or TEXTURE_2D_ARRAY_EXT is deleted, it is as
+ though BindTexture had been executed with the same target and texture
+ zero. ..."
+
+ Change second paragraph on page 182 to say (spec changes identical to
+ EXT_texture_array):
+
+ "The texture object name space, including the initial one-, two-, and
+ three dimensional, cube map, and one- and two-dimensional array texture
+ objects, is shared among all texture units. ..."
+
+
+ -- Section 3.8.14 "Depth Texture Comparison Modes" in "Texture Comparison Modes"
+
+ Change second through fourth paragraphs (page 188) to say:
+
+ "Let D_t be the depth texture value, in the range [0, 1]. For
+ texture lookups from one- and two-dimensional, rectangle, and
+ one-dimensional array targets, let R be the interpolated <r>
+ texture coordinate, clamped to the range [0, 1]. For texture lookups
+ from two-dimensional array texture targets, let R be the interpolated
+ <q> texture coordinate, clamped to the range [0, 1]. Then the
+ effective texture value L_t, I_t, or A_t is computed as follows:
+
+ If the value of TEXTURE_COMPARE_MODE is NONE, then
+
+ r = Dt
+
+ If the value of TEXTURE_COMPARE_MODE is
+ COMPARE_REF_DEPTH_TO_TEXTURE_EXT), then r depends on the texture
+ comparison function as shown in table 3.27."
+
+ -- Section 3.8.15 "Texture Application"
+
+ Change the first paragraph (page 189) to say:
+
+ "Texturing is enabled or disabled using the generic Enable and Disable
+ commands, respectively, with the symbolic constants TEXTURE_1D,
+ TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP, TEXTURE_1D_ARRAY_EXT, or
+ TEXTURE_2D_ARRAY_EXT to enable one-, two-, three-dimensional, cube
+ map, one-dimensional array, or two-dimensional array texture,
+ respectively. If both two- and one-dimensional textures are enabled,
+ the two-dimensional texture is used. If the three-dimensional and
+ either of the two- or one-dimensional textures is enabled, the
+ three-dimensional texture is used. If the cube map texture and any of
+ the three-, two-, or one-dimensional textures is enabled, then cube map
+ texturing is used. If one-dimensional array texture is enabled and any
+ of cube map, three-, two-, or one-dimensional textures is enabled,
+ one-dimensional array texturing is used. If two-dimensional array
+ texture is enabled and any of cube map, three-, two-, one-dimensional
+ textures or one-dimensional array texture is enabled, two-dimensional
+ array texturing is used..."
+
+ -- Section 3.11.2 of ARB_fragment_program (Fragment Program Grammar and Restrictions):
+
+ (mostly add to existing grammar rules)
+
+ <optionName> ::= "MESA_texture_array"
+
+ <texTarget> ::= "1D"
+ | "2D"
+ | "3D"
+ | "CUBE"
+ | "RECT"
+ | <arrayTarget> (if program option is present)
+ | <shadowTarget> (if program option is present)
+
+ <arrayTarget> ::= "ARRAY1D"
+ | "ARRAY2D"
+
+ <shadowTarget> ::= "SHADOW1D"
+ | "SHADOW2D"
+ | "SHADOWRECT"
+ | <shadowArrayTarget> (if program option is present)
+
+ <shadowArrayTarget> ::= "SHADOWARRAY1D"
+ | "SHADOWARRAY2D"
+
+
+ -- Add Section 3.11.4.5.4 "Texture Stack Option"
+
+ "If a fragment program specifies the "MESA_texture_array" program
+ option, the <texTarget> rule is modified to add the texture targets
+ ARRAY1D and ARRAY2D (See Section 3.11.2)."
+
+ -- Section 3.11.6 "Fragment Program Texture Instruction Set"
+
+ (replace 1st and 2nd paragraphs with the following paragraphs)
+
+ "The first three texture instructions described below specify the
+ mapping of 4-tuple input vectors to 4-tuple output vectors.
+ The sampling of the texture works as described in section 3.8,
+ except that texture environments and texture functions are not
+ applicable, and the texture enables hierarchy is replaced by explicit
+ references to the desired texture target (i.e., 1D, 2D, 3D, cube map,
+ rectangle, ARRAY1D, ARRAY2D). These texture instructions specify
+ how the 4-tuple is mapped into the coordinates used for sampling. The
+ following function is used to describe the texture sampling in the
+ descriptions below:
+
+ vec4 TextureSample(vec4 coord, float lodBias, int texImageUnit,
+ enum texTarget);
+
+ Note that not all four components of the texture coordinates <coord>
+ are used by all texture targets. Component usage for each <texTarget>
+ is defined in table X.
+
+ coordinates used
+ texTarget Texture Type s t r layer shadow
+ ---------------- --------------------- ----- ----- ------
+ 1D TEXTURE_1D x - - - -
+ 2D TEXTURE_2D x y - - -
+ 3D TEXTURE_3D x y z - -
+ CUBE TEXTURE_CUBE_MAP x y z - -
+ RECT TEXTURE_RECTANGLE_ARB x y - - -
+ ARRAY1D TEXTURE_1D_ARRAY_EXT x - - y -
+ ARRAY2D TEXTURE_2D_ARRAY_EXT x y - z -
+ SHADOW1D TEXTURE_1D x - - - z
+ SHADOW2D TEXTURE_2D x y - - z
+ SHADOWRECT TEXTURE_RECTANGLE_ARB x y - - z
+ SHADOWARRAY1D TEXTURE_1D_ARRAY_EXT x - - y z
+ SHADOWARRAY2D TEXTURE_2D_ARRAY_EXT x y - z w
+
+ Table X: Texture types accessed for each of the <texTarget>, and
+ coordinate mappings. The "coordinates used" column indicate the
+ input values used for each coordinate of the texture lookup, the
+ layer selector for array textures, and the reference value for
+ texture comparisons."
+
+ -- Section 3.11.6.2 "TXP: Project coordinate and map to color"
+
+ Add to the end of the section:
+
+ "A program will fail to load if the TXP instruction is used in
+ conjunction with the SHADOWARRAY2D target."
+
+Additions to Chapter 4 of the OpenGL 2.0 Specification (Per-Fragment Operations)
+
+ -- Section 4.4.2.3 "Attaching Texture Images to a Framebuffer"
+
+ Add to the end of the section (spec changes identical to
+ EXT_texture_array):
+
+ "The command
+
+ void FramebufferTextureLayerEXT(enum target, enum attachment,
+ uint texture, int level, int layer);
+
+ operates identically to FramebufferTexture3DEXT, except that it
+ attaches a single layer of a three-dimensional texture or a one- or
+ two-dimensional array texture. <layer> is an integer indicating the
+ layer number, and is treated identically to the <zoffset> parameter in
+ FramebufferTexture3DEXT. The error INVALID_VALUE is generated if
+ <layer> is negative. The error INVALID_OPERATION is generated if
+ <texture> is non-zero and is not the name of a three dimensional
+ texture or one- or two-dimensional array texture. Unlike
+ FramebufferTexture3D, no <textarget> parameter is accepted.
+
+ If <texture> is non-zero and the command does not result in an error,
+ the framebuffer attachment state corresponding to <attachment> is
+ updated as in the other FramebufferTexture commands, except that
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT is set to <layer>."
+
+ -- Section 4.4.4.1 "Framebuffer Attachment Completeness"
+
+ Add to the end of the list of completeness rules (spec changes
+ identical to EXT_texture_array):
+
+ "* If FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT is TEXTURE and
+ FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT names a one- or
+ two-dimensional array texture, then
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT must be smaller than the
+ number of layers in the texture."
+
+Additions to Chapter 5 of the OpenGL 2.0 Specification (Special Functions)
+
+ -- Section 5.4 "Display Lists"
+
+ Change the first paragraph on page 242 to say (spec changes
+ identical to EXT_texture_array):
+
+ "TexImage3D, TexImage2D, TexImage1D, Histogram, and ColorTable are
+ executed immediately when called with the corresponding proxy arguments
+ PROXY_TEXTURE_3D or PROXY_TEXTURE_2D_ARRAY_EXT; PROXY_TEXTURE_2D,
+ PROXY_TEXTURE_CUBE_MAP, or PROXY_TEXTURE_1D_ARRAY_EXT;
+ PROXY_TEXTURE_1D; PROXY_HISTOGRAM; and PROXY_COLOR_TABLE,
+ PROXY_POST_CONVOLUTION_COLOR_TABLE, or
+ PROXY_POST_COLOR_MATRIX_COLOR_TABLE."
+
+Additions to Chapter 6 of the OpenGL 2.0 Specification (State and State Requests)
+
+ -- Section 6.1.3 "Enumerated Queries"
+
+ Add after the line beginning "If the value of
+ FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT is TEXTURE" (spec changes
+ identical to EXT_texture_array):
+
+ "If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT and the
+ texture object named FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT is a
+ three-dimensional texture or a one- or two-dimensional array texture,
+ then <params> will contain the number of texture layer attached to the
+ attachment point. Otherwise, <params> will contain the value zero."
+
+ -- Section 6.1.4 "Texture Queries"
+
+ Change the first three paragraphs (page 248) to say (spec changes
+ identical to EXT_texture_array):
+
+ "The command
+
+ void GetTexImage(enum tex, int lod, enum format,
+ enum type, void *img);
+
+ is used to obtain texture images. It is somewhat different from the
+ other get commands; tex is a symbolic value indicating which texture
+ (or texture face in the case of a cube map texture target name) is to
+ be obtained. TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_1D_ARRAY_EXT,
+ and TEXTURE_2D_ARRAY_EXT indicate a one-, two-, or three-dimensional
+ texture, or one- or two-dimensional array texture, respectively.
+ TEXTURE_CUBE_MAP_POSITIVE_X, ...
+
+ GetTexImage obtains... from the first image to the last for
+ three-dimensional textures. One- and two-dimensional array textures
+ are treated as two- and three-dimensional images, respectively, where
+ the layers are treated as rows or images. These groups are then...
+
+ For three-dimensional and two-dimensional array textures, pixel storage
+ operations are applied as if the image were two-dimensional, except
+ that the additional pixel storage state values PACK_IMAGE_HEIGHT and
+ PACK_SKIP_IMAGES are applied. ..."
+
+Additions to Appendix A of the OpenGL 2.0 Specification (Invariance)
+
+ None
+
+Additions to the AGL/GLX/WGL Specifications
+
+ None
+
+GLX Protocol
+
+ None
+
+Dependencies on ARB_fragment_program
+
+ If ARB_fragment_program is not supported, the changes to section 3.11
+ should be ignored.
+
+Dependencies on EXT_framebuffer_object
+
+ If EXT_framebuffer_object is not supported, the changes to section
+ 3.8.8 ("Manual Mipmap Generation"), 4.4.2.3, and 6.1.3 should be ignored.
+
+Dependencies on EXT_texture_compression_s3tc and NV_texture_compression_vtc
+
+ (Identical dependency as EXT_texture_array.)
+
+ S3TC texture compression is supported for two-dimensional array textures.
+ When <target> is TEXTURE_2D_ARRAY_EXT, each layer is stored independently
+ as a compressed two-dimensional textures. When specifying or querying
+ compressed images using one of the S3TC formats, the images are provided
+ and/or returned as a series of two-dimensional textures stored
+ consecutively in memory, with the layer closest to zero specified first.
+ For array textures, images are not arranged in 4x4x4 or 4x4x2 blocks as in
+ the three-dimensional compression format provided in the
+ EXT_texture_compression_vtc extension. Pixel store parameters, including
+ those specific to three-dimensional images, are ignored when compressed
+ image data are provided or returned, as in the
+ EXT_texture_compression_s3tc extension.
+
+ S3TC compression is not supported for one-dimensional texture targets in
+ EXT_texture_compression_s3tc, and is not supported for one-dimensional
+ array textures in this extension. If compressed one-dimensional arrays
+ are needed, use a two-dimensional texture with a height of one.
+
+ This extension allows the use of the four S3TC internal format types in
+ TexImage3D, CompressedTexImage3D, and CompressedTexSubImage3D calls.
+
+Errors
+
+ None
+
+New State
+
+ (add to table 6.15, p. 276)
+
+ Initial
+ Get Value Type Get Command Value Description Sec. Attribute
+ ---------------------------- ----- ----------- ----- -------------------- ------ ---------
+ TEXTURE_BINDING_1D_ARRAY_EXT 2*xZ+ GetIntegerv 0 texture object bound 3.8.12 texture
+ to TEXTURE_1D_ARRAY
+ TEXTURE_BINDING_2D_ARRAY_EXT 2*xZ+ GetIntegerv 0 texture object bound 3.8.12 texture
+ to TEXTURE_2D_ARRAY
+
+
+New Implementation Dependent State
+
+ (add to Table 6.32, p. 293)
+
+ Minimum
+ Get Value Type Get Command Value Description Sec. Attribute
+ ---------------------------- ---- ----------- ------- ------------------ ----- ---------
+ MAX_TEXTURE_ARRAY_LAYERS_EXT Z+ GetIntegerv 64 maximum number of 3.8.1 -
+ layers for texture
+ arrays
+
+Issues
+
+ (1) Is "texture stack" a good name for this functionality?
+
+ NO. The name is changed to "array texture" to match the
+ nomenclature used by GL_EXT_texture_array.
+
+ (2) Should the R texture coordinate be treated as normalized or
+ un-normalized? If it were un-normalized, floor(R) could be thought
+ of as a direct index into the array texture. This may be more
+ convenient for applications.
+
+ RESOLVED. All texture coordinates are normalized. The issue of
+ un-normalized texture coordinates has been discussed in the ARB
+ before and should be left for a layered extension.
+
+ RE-RESOLVED. The R coordinate is un-normalized. Accessing an array
+ using [0, layers-1] coordinates is much more natural.
+
+ (3) How does LOD selection work for stacked textures?
+
+ RESOLVED. For 2D array textures the R coordinate is ignored, and
+ the LOD selection equations for 2D textures are used. For 1D
+ array textures the T coordinate is ignored, and the LOD selection
+ equations for 1D textures are used. The expected usage is in a
+ fragment program with an explicit LOD selection.
+
+ (4) What is the maximum size of a 2D array texture? Is it the same
+ as for a 3D texture, or should a new query be added? How about for 1D
+ array textures?
+
+ RESOLVED. A new query is added.
+
+ (5) How are array textures exposed in GLSL?
+
+ RESOLVED. Use GL_EXT_texture_array.
+
+ (6) Should a 1D array texture also be exposed?
+
+ RESOLVED. For orthogonality, yes.
+
+ (7) How are stacked textures attached to framebuffer objects?
+
+ RESOLVED. Layers of both one- and two-dimensional array textures
+ are attached using FreambufferTextureLayerEXT. Once attached, the
+ array texture layer behaves exactly as either a one- or
+ two-dimensional texture.
+
+ (8) How is this extension related to GL_EXT_texture_array?
+
+ This extension adapats GL_MESAX_texture_stack to the notation,
+ indexing, and FBO access of GL_EXT_texture_array. This extension
+ replaces the GLSL support of GL_EXT_texture_array with
+ GL_ARB_fragment_program support.
+
+ Assembly program support is also provided by GL_NV_gpu_program4.
+ GL_NV_gpu_program4 also adds support for other features that are
+ specific to Nvidia hardware, while this extension adds only support
+ for array textures.
+
+ Much of text of this extension that has changed since
+ GL_MESAX_texture_stack comes directly from either
+ GL_EXT_texture_array or GL_NV_gpu_program4.
+
+Revision History
+
+ ||2005/11/15||0.1||idr||Initial draft MESAX version.||
+ ||2005/12/07||0.2||idr||Added framebuffer object interactions.||
+ ||2005/12/12||0.3||idr||Updated fragment program interactions.||
+ ||2007/05/16||0.4||idr||Converted to MESA_texture_array. Brought in line with EXT_texture_array and NV_gpu_program4.||
diff --git a/mesalib/docs/MESA_texture_signed_rgba.spec b/mesalib/docs/MESA_texture_signed_rgba.spec
index bcc4d4203..e3a6b59af 100644
--- a/mesalib/docs/MESA_texture_signed_rgba.spec
+++ b/mesalib/docs/MESA_texture_signed_rgba.spec
@@ -1,214 +1,214 @@
-Name
-
- MESA_texture_signed_rgba
-
-Name Strings
-
- GL_MESA_texture_signed_rgba
-
-Contact
-
-
-
-Notice
-
-
-
-IP Status
-
- No known IP issues
-
-Status
-
-
-
-Version
-
- 0.3, 2009-03-24
-
-Number
-
- Not assigned ?
-
-Dependencies
-
- Written based on the wording of the OpenGL 2.0 specification.
-
- This extension trivially interacts with ARB_texture_float.
- This extension shares some language with ARB_texture_compression_rgtc
- but does not depend on it.
-
-Overview
-
- OpenGL prior to 3.1 does not support any signed texture formats.
- ARB_texture_compression_rgtc introduces some compressed red and
- red_green signed formats but no uncompressed ones, which might
- still be useful. NV_texture_shader adds signed texture formats,
- but also a lot of functionality which has been superseded by fragment
- shaders.
- It is usually possible to get the same functionality
- using a unsigned format by doing scale and bias in a shader, but this
- is undesirable since modern hardware has direct support for this.
- This extension adds a signed 4-channel texture format by backporting
- the relevant features from OpenGL 3.1, as a means to support this in
- OpenGL implementations only supporting older versions.
-
-Issues
-
- 1) What should this extension be called?
-
- RESOLVED: MESA_texture_signed_rgba seems reasonable.
- The rgba part is there because only 4 channel format is supported.
-
-
- 2) Should the full set of signed formats (alpha, luminance, rgb, etc.)
- be supported?
-
- RESOLVED: NO. To keep this extension simple, only add the most
- universal format, rgba. alpha/luminance can't be trivially supported
- since OpenGL 3.1 does not support them any longer, and there is some
- implied dependency on ARB_texture_rg for red/red_green formats so
- avoid all this. Likewise, only 8 bits per channel is supported.
-
-
- 3) Should this extension use new enums for the texture formats?
-
- RESOLVED: NO. Same enums as those used in OpenGL 3.1.
-
-
- 4) How are signed integer values mapped to floating-point values?
-
- RESOLVED: Same as described in issue 5) of
- ARB_texture_compression_rgtc (quote):
- A signed 8-bit two's complement value X is computed to
- a floating-point value Xf with the formula:
-
- { X / 127.0, X > -128
- Xf = {
- { -1.0, X == -128
-
- This conversion means -1, 0, and +1 are all exactly representable,
- however -128 and -127 both map to -1.0. Mapping -128 to -1.0
- avoids the numerical awkwardness of have a representable value
- slightly more negative than -1.0.
-
- This conversion is intentionally NOT the "byte" conversion listed
- in Table 2.9 for component conversions. That conversion says:
-
- Xf = (2*X + 1) / 255.0
-
- The Table 2.9 conversion is incapable of exactly representing
- zero.
-
- (Difference to ARB_texture_compression_rgtc):
- This is the same mapping as OpenGL 3.1 uses.
- This is also different to what NV_texture_shader used.
- The above mapping should be considered the reference, but there
- is some leeway so other mappings are allowed for implementations which
- cannot do this. Particularly the mapping given in NV_texture_shader or
- the standard OpenGL byte/float mapping is considered acceptable too, as
- might be a mapping which represents -1.0 by -128, 0.0 by 0 and 1.0 by
- 127 (that is, uses different scale factors for negative and positive
- numbers).
- Also, it is ok to store incoming GL_BYTE user data as-is, without
- converting to GL_FLOAT (using the standard OpenGL float/byte mapping)
- and converting back (using the mapping described here).
- Other than those subtle issues there are no other non-standard
- conversions used, so when using for instance CopyTexImage2D with
- a framebuffer clamped to [0,1] all converted numbers will be in the range
- [0, 127] (and not scaled and biased).
-
-
- 5) How will signed components resulting from RGBA8_SNORM texture
- fetches interact with fragment coloring?
-
- RESOLVED: Same as described in issue 6) of
- ARB_texture_compression_rgtc (quote):
- The specification language for this extension is silent
- about clamping behavior leaving this to the core specification
- and other extensions. The clamping or lack of clamping is left
- to the core specification and other extensions.
-
- For assembly program extensions supporting texture fetches
- (ARB_fragment_program, NV_fragment_program, NV_vertex_program3,
- etc.) or the OpenGL Shading Language, these signed formats will
- appear as expected with unclamped signed components as a result
- of a texture fetch instruction.
-
- If ARB_color_buffer_float is supported, its clamping controls
- will apply.
-
- NV_texture_shader extension, if supported, adds support for
- fixed-point textures with signed components and relaxed the
- fixed-function texture environment clamping appropriately. If the
- NV_texture_shader extension is supported, its specified behavior
- for the texture environment applies where intermediate values
- are clamped to [-1,1] unless stated otherwise as in the case
- of explicitly clamped to [0,1] for GL_COMBINE. or clamping the
- linear interpolation weight to [0,1] for GL_DECAL and GL_BLEND.
-
- Otherwise, the conventional core texture environment clamps
- incoming, intermediate, and output color components to [0,1].
-
- This implies that the conventional texture environment
- functionality of unextended OpenGL 1.5 or OpenGL 2.0 without
- using GLSL (and with none of the extensions referred to above)
- is unable to make proper use of the signed texture formats added
- by this extension because the conventional texture environment
- requires texture source colors to be clamped to [0,1]. Texture
- filtering of these signed formats would be still signed, but
- negative values generated post-filtering would be clamped to
- zero by the core texture environment functionality. The
- expectation is clearly that this extension would be co-implemented
- with one of the previously referred to extensions or used with
- GLSL for the new signed formats to be useful.
-
-
- 6) Should the RGBA_SNORM tokens also be accepted by CopyTexImage
- functions?
-
- RESOLVED: YES.
-
-
- 7) What to do with GetTexParameter if ARB_texture_float is supported,
- in particular what datatype should this return for TEXTURE_RED_TYPE_ARB,
- TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB, TEXTURE_ALPHA_TYPE_ARB?
-
- RESOLVED: ARB_texture_float states type is either NONE,
- UNSIGNED_NORMALIZED_ARB, or FLOAT. This extension adds a new enum,
- SIGNED_NORMALIZED, which will be returned accordingly. This is the
- same behaviour as in OpenGL 3.1.
-
-
-New Tokens
-
-
- Accepted by the <internalformat> parameter of
- TexImage1D, TexImage2D, TexImage3D, CopyTexImage1D, and CopyTexImage2D:
-
- RGBA_SNORM 0x8F93
- RGBA8_SNORM 0x8F97
-
- Returned by the <params> parameter of GetTexLevelParameter:
-
- SIGNED_NORMALIZED 0x8F9C
-
-
-Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization):
-
- -- Section 3.8.1, Texture Image Specification
-
- Add to Table 3.16 (page 154): Sized internal formats
-
- Sized Base R G B A L I D
- Internal Format Internal Format bits bits bits bits bits bits bits
- --------------- --------------- ---- ---- ---- ---- ---- ---- ----
- RGBA8_SNORM RGBA 8 8 8 8 0 0 0
-
-
-Dependencies on ARB_texture_float extension:
-
- If ARB_texture_float is supported, GetTexParameter queries with <value>
- of TEXTURE_RED_TYPE_ARB, TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB or
- TEXTURE_ALPHA_TYPE_ARB return SIGNED_NORMALIZED if
- the base internal format is RGBA_SNORM.
+Name
+
+ MESA_texture_signed_rgba
+
+Name Strings
+
+ GL_MESA_texture_signed_rgba
+
+Contact
+
+
+
+Notice
+
+
+
+IP Status
+
+ No known IP issues
+
+Status
+
+
+
+Version
+
+ 0.3, 2009-03-24
+
+Number
+
+ Not assigned ?
+
+Dependencies
+
+ Written based on the wording of the OpenGL 2.0 specification.
+
+ This extension trivially interacts with ARB_texture_float.
+ This extension shares some language with ARB_texture_compression_rgtc
+ but does not depend on it.
+
+Overview
+
+ OpenGL prior to 3.1 does not support any signed texture formats.
+ ARB_texture_compression_rgtc introduces some compressed red and
+ red_green signed formats but no uncompressed ones, which might
+ still be useful. NV_texture_shader adds signed texture formats,
+ but also a lot of functionality which has been superseded by fragment
+ shaders.
+ It is usually possible to get the same functionality
+ using a unsigned format by doing scale and bias in a shader, but this
+ is undesirable since modern hardware has direct support for this.
+ This extension adds a signed 4-channel texture format by backporting
+ the relevant features from OpenGL 3.1, as a means to support this in
+ OpenGL implementations only supporting older versions.
+
+Issues
+
+ 1) What should this extension be called?
+
+ RESOLVED: MESA_texture_signed_rgba seems reasonable.
+ The rgba part is there because only 4 channel format is supported.
+
+
+ 2) Should the full set of signed formats (alpha, luminance, rgb, etc.)
+ be supported?
+
+ RESOLVED: NO. To keep this extension simple, only add the most
+ universal format, rgba. alpha/luminance can't be trivially supported
+ since OpenGL 3.1 does not support them any longer, and there is some
+ implied dependency on ARB_texture_rg for red/red_green formats so
+ avoid all this. Likewise, only 8 bits per channel is supported.
+
+
+ 3) Should this extension use new enums for the texture formats?
+
+ RESOLVED: NO. Same enums as those used in OpenGL 3.1.
+
+
+ 4) How are signed integer values mapped to floating-point values?
+
+ RESOLVED: Same as described in issue 5) of
+ ARB_texture_compression_rgtc (quote):
+ A signed 8-bit two's complement value X is computed to
+ a floating-point value Xf with the formula:
+
+ { X / 127.0, X > -128
+ Xf = {
+ { -1.0, X == -128
+
+ This conversion means -1, 0, and +1 are all exactly representable,
+ however -128 and -127 both map to -1.0. Mapping -128 to -1.0
+ avoids the numerical awkwardness of have a representable value
+ slightly more negative than -1.0.
+
+ This conversion is intentionally NOT the "byte" conversion listed
+ in Table 2.9 for component conversions. That conversion says:
+
+ Xf = (2*X + 1) / 255.0
+
+ The Table 2.9 conversion is incapable of exactly representing
+ zero.
+
+ (Difference to ARB_texture_compression_rgtc):
+ This is the same mapping as OpenGL 3.1 uses.
+ This is also different to what NV_texture_shader used.
+ The above mapping should be considered the reference, but there
+ is some leeway so other mappings are allowed for implementations which
+ cannot do this. Particularly the mapping given in NV_texture_shader or
+ the standard OpenGL byte/float mapping is considered acceptable too, as
+ might be a mapping which represents -1.0 by -128, 0.0 by 0 and 1.0 by
+ 127 (that is, uses different scale factors for negative and positive
+ numbers).
+ Also, it is ok to store incoming GL_BYTE user data as-is, without
+ converting to GL_FLOAT (using the standard OpenGL float/byte mapping)
+ and converting back (using the mapping described here).
+ Other than those subtle issues there are no other non-standard
+ conversions used, so when using for instance CopyTexImage2D with
+ a framebuffer clamped to [0,1] all converted numbers will be in the range
+ [0, 127] (and not scaled and biased).
+
+
+ 5) How will signed components resulting from RGBA8_SNORM texture
+ fetches interact with fragment coloring?
+
+ RESOLVED: Same as described in issue 6) of
+ ARB_texture_compression_rgtc (quote):
+ The specification language for this extension is silent
+ about clamping behavior leaving this to the core specification
+ and other extensions. The clamping or lack of clamping is left
+ to the core specification and other extensions.
+
+ For assembly program extensions supporting texture fetches
+ (ARB_fragment_program, NV_fragment_program, NV_vertex_program3,
+ etc.) or the OpenGL Shading Language, these signed formats will
+ appear as expected with unclamped signed components as a result
+ of a texture fetch instruction.
+
+ If ARB_color_buffer_float is supported, its clamping controls
+ will apply.
+
+ NV_texture_shader extension, if supported, adds support for
+ fixed-point textures with signed components and relaxed the
+ fixed-function texture environment clamping appropriately. If the
+ NV_texture_shader extension is supported, its specified behavior
+ for the texture environment applies where intermediate values
+ are clamped to [-1,1] unless stated otherwise as in the case
+ of explicitly clamped to [0,1] for GL_COMBINE. or clamping the
+ linear interpolation weight to [0,1] for GL_DECAL and GL_BLEND.
+
+ Otherwise, the conventional core texture environment clamps
+ incoming, intermediate, and output color components to [0,1].
+
+ This implies that the conventional texture environment
+ functionality of unextended OpenGL 1.5 or OpenGL 2.0 without
+ using GLSL (and with none of the extensions referred to above)
+ is unable to make proper use of the signed texture formats added
+ by this extension because the conventional texture environment
+ requires texture source colors to be clamped to [0,1]. Texture
+ filtering of these signed formats would be still signed, but
+ negative values generated post-filtering would be clamped to
+ zero by the core texture environment functionality. The
+ expectation is clearly that this extension would be co-implemented
+ with one of the previously referred to extensions or used with
+ GLSL for the new signed formats to be useful.
+
+
+ 6) Should the RGBA_SNORM tokens also be accepted by CopyTexImage
+ functions?
+
+ RESOLVED: YES.
+
+
+ 7) What to do with GetTexParameter if ARB_texture_float is supported,
+ in particular what datatype should this return for TEXTURE_RED_TYPE_ARB,
+ TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB, TEXTURE_ALPHA_TYPE_ARB?
+
+ RESOLVED: ARB_texture_float states type is either NONE,
+ UNSIGNED_NORMALIZED_ARB, or FLOAT. This extension adds a new enum,
+ SIGNED_NORMALIZED, which will be returned accordingly. This is the
+ same behaviour as in OpenGL 3.1.
+
+
+New Tokens
+
+
+ Accepted by the <internalformat> parameter of
+ TexImage1D, TexImage2D, TexImage3D, CopyTexImage1D, and CopyTexImage2D:
+
+ RGBA_SNORM 0x8F93
+ RGBA8_SNORM 0x8F97
+
+ Returned by the <params> parameter of GetTexLevelParameter:
+
+ SIGNED_NORMALIZED 0x8F9C
+
+
+Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization):
+
+ -- Section 3.8.1, Texture Image Specification
+
+ Add to Table 3.16 (page 154): Sized internal formats
+
+ Sized Base R G B A L I D
+ Internal Format Internal Format bits bits bits bits bits bits bits
+ --------------- --------------- ---- ---- ---- ---- ---- ---- ----
+ RGBA8_SNORM RGBA 8 8 8 8 0 0 0
+
+
+Dependencies on ARB_texture_float extension:
+
+ If ARB_texture_float is supported, GetTexParameter queries with <value>
+ of TEXTURE_RED_TYPE_ARB, TEXTURE_GREEN_TYPE_ARB, TEXTURE_BLUE_TYPE_ARB or
+ TEXTURE_ALPHA_TYPE_ARB return SIGNED_NORMALIZED if
+ the base internal format is RGBA_SNORM.
diff --git a/mesalib/docs/MESA_window_pos.spec b/mesalib/docs/MESA_window_pos.spec
index ac3e5b1b3..9e81e9c4d 100644
--- a/mesalib/docs/MESA_window_pos.spec
+++ b/mesalib/docs/MESA_window_pos.spec
@@ -1,126 +1,126 @@
-Name
-
- MESA_window_pos
-
-Name Strings
-
- GL_MESA_window_pos
-
-Contact
-
- Brian Paul, brian.paul 'at' tungstengraphics.com
-
-Status
-
- Shipping (since Mesa version 1.2.8)
-
-Version
-
-
-Number
-
- 197
-
-Dependencies
-
- OpenGL 1.0 is required.
- The extension is written against the OpenGL 1.2 Specification
-
-Overview
-
- In order to set the current raster position to a specific window
- coordinate with the RasterPos command, the modelview matrix, projection
- matrix and viewport must be set very carefully. Furthermore, if the
- desired window coordinate is outside of the window's bounds one must
- rely on a subtle side-effect of the Bitmap command in order to circumvent
- frustum clipping.
-
- This extension provides a set of functions to directly set the
- current raster position, bypassing the modelview matrix, the
- projection matrix and the viewport to window mapping. Furthermore,
- clip testing is not performed.
-
- This greatly simplifies the process of setting the current raster
- position to a specific window coordinate prior to calling DrawPixels,
- CopyPixels or Bitmap.
-
-New Procedures and Functions
-
- void WindowPos2dMESA(double x, double y)
- void WindowPos2fMESA(float x, float y)
- void WindowPos2iMESA(int x, int y)
- void WindowPos2sMESA(short x, short y)
- void WindowPos2ivMESA(const int *p)
- void WindowPos2svMESA(const short *p)
- void WindowPos2fvMESA(const float *p)
- void WindowPos2dvMESA(const double *p)
- void WindowPos3iMESA(int x, int y, int z)
- void WindowPos3sMESA(short x, short y, short z)
- void WindowPos3fMESA(float x, float y, float z)
- void WindowPos3dMESA(double x, double y, double z)
- void WindowPos3ivMESA(const int *p)
- void WindowPos3svMESA(const short *p)
- void WindowPos3fvMESA(const float *p)
- void WindowPos3dvMESA(const double *p)
- void WindowPos4iMESA(int x, int y, int z, int w)
- void WindowPos4sMESA(short x, short y, short z, short w)
- void WindowPos4fMESA(float x, float y, float z, float w)
- void WindowPos4dMESA(double x, double y, double z, double )
- void WindowPos4ivMESA(const int *p)
- void WindowPos4svMESA(const short *p)
- void WindowPos4fvMESA(const float *p)
- void WindowPos4dvMESA(const double *p)
-
-New Tokens
-
- none
-
-Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation)
-
- - (2.12, p. 41) Insert after third paragraph:
-
- Alternately, the current raster position may be set by one of the
- WindowPosMESA commands:
-
- void WindowPos{234}{sidf}MESA( T coords );
- void WindowPos{234}{sidf}vMESA( T coords );
-
- WindosPos4MESA takes four values indicating x, y, z, and w.
- WindowPos3MESA (or WindowPos2MESA) is analaguos, but sets only
- x, y, and z with w implicitly set to 1 (or only x and y with z
- implicitly set to 0 and w implicitly set to 1).
-
- WindowPosMESA operates like RasterPos except that the current modelview
- matrix, projection matrix and viewport parameters are ignored and the
- clip test operation always passes. The current raster position values
- are directly set to the parameters passed to WindowPosMESA. The current
- color, color index and texture coordinate update the current raster
- position's associated data.
-
-Additions to the AGL/GLX/WGL Specifications
-
- None
-
-GLX Protocol
-
- Not specified at this time. However, a protocol message very similar
- to that of RasterPos is expected.
-
-Errors
-
- INVALID_OPERATION is generated if WindowPosMESA is called between
- Begin and End.
-
-New State
-
- None.
-
-New Implementation Dependent State
-
- None.
-
-Revision History
-
- * Revision 1.0 - Initial specification
- * Revision 1.1 - Minor clean-up (7 Jan 2000, Brian Paul)
-
+Name
+
+ MESA_window_pos
+
+Name Strings
+
+ GL_MESA_window_pos
+
+Contact
+
+ Brian Paul, brian.paul 'at' tungstengraphics.com
+
+Status
+
+ Shipping (since Mesa version 1.2.8)
+
+Version
+
+
+Number
+
+ 197
+
+Dependencies
+
+ OpenGL 1.0 is required.
+ The extension is written against the OpenGL 1.2 Specification
+
+Overview
+
+ In order to set the current raster position to a specific window
+ coordinate with the RasterPos command, the modelview matrix, projection
+ matrix and viewport must be set very carefully. Furthermore, if the
+ desired window coordinate is outside of the window's bounds one must
+ rely on a subtle side-effect of the Bitmap command in order to circumvent
+ frustum clipping.
+
+ This extension provides a set of functions to directly set the
+ current raster position, bypassing the modelview matrix, the
+ projection matrix and the viewport to window mapping. Furthermore,
+ clip testing is not performed.
+
+ This greatly simplifies the process of setting the current raster
+ position to a specific window coordinate prior to calling DrawPixels,
+ CopyPixels or Bitmap.
+
+New Procedures and Functions
+
+ void WindowPos2dMESA(double x, double y)
+ void WindowPos2fMESA(float x, float y)
+ void WindowPos2iMESA(int x, int y)
+ void WindowPos2sMESA(short x, short y)
+ void WindowPos2ivMESA(const int *p)
+ void WindowPos2svMESA(const short *p)
+ void WindowPos2fvMESA(const float *p)
+ void WindowPos2dvMESA(const double *p)
+ void WindowPos3iMESA(int x, int y, int z)
+ void WindowPos3sMESA(short x, short y, short z)
+ void WindowPos3fMESA(float x, float y, float z)
+ void WindowPos3dMESA(double x, double y, double z)
+ void WindowPos3ivMESA(const int *p)
+ void WindowPos3svMESA(const short *p)
+ void WindowPos3fvMESA(const float *p)
+ void WindowPos3dvMESA(const double *p)
+ void WindowPos4iMESA(int x, int y, int z, int w)
+ void WindowPos4sMESA(short x, short y, short z, short w)
+ void WindowPos4fMESA(float x, float y, float z, float w)
+ void WindowPos4dMESA(double x, double y, double z, double )
+ void WindowPos4ivMESA(const int *p)
+ void WindowPos4svMESA(const short *p)
+ void WindowPos4fvMESA(const float *p)
+ void WindowPos4dvMESA(const double *p)
+
+New Tokens
+
+ none
+
+Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation)
+
+ - (2.12, p. 41) Insert after third paragraph:
+
+ Alternately, the current raster position may be set by one of the
+ WindowPosMESA commands:
+
+ void WindowPos{234}{sidf}MESA( T coords );
+ void WindowPos{234}{sidf}vMESA( T coords );
+
+ WindosPos4MESA takes four values indicating x, y, z, and w.
+ WindowPos3MESA (or WindowPos2MESA) is analaguos, but sets only
+ x, y, and z with w implicitly set to 1 (or only x and y with z
+ implicitly set to 0 and w implicitly set to 1).
+
+ WindowPosMESA operates like RasterPos except that the current modelview
+ matrix, projection matrix and viewport parameters are ignored and the
+ clip test operation always passes. The current raster position values
+ are directly set to the parameters passed to WindowPosMESA. The current
+ color, color index and texture coordinate update the current raster
+ position's associated data.
+
+Additions to the AGL/GLX/WGL Specifications
+
+ None
+
+GLX Protocol
+
+ Not specified at this time. However, a protocol message very similar
+ to that of RasterPos is expected.
+
+Errors
+
+ INVALID_OPERATION is generated if WindowPosMESA is called between
+ Begin and End.
+
+New State
+
+ None.
+
+New Implementation Dependent State
+
+ None.
+
+Revision History
+
+ * Revision 1.0 - Initial specification
+ * Revision 1.1 - Minor clean-up (7 Jan 2000, Brian Paul)
+
diff --git a/mesalib/docs/MESA_ycbcr_texture.spec b/mesalib/docs/MESA_ycbcr_texture.spec
index e865039fb..6a730e81c 100644
--- a/mesalib/docs/MESA_ycbcr_texture.spec
+++ b/mesalib/docs/MESA_ycbcr_texture.spec
@@ -1,204 +1,204 @@
-Name
-
- MESA_ycbcr_texture
-
-Name Strings
-
- GL_MESA_ycbcr_texture
-
-Contact
-
- Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com)
- Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
-
-Status
-
- Shipping (Mesa 4.0.4 and later)
-
-Version
-
- 1.0
-
-Number
-
- TBD
-
-Dependencies
-
- OpenGL 1.0 or later is required
- This extension is written against the OpenGL 1.4 Specification.
- NV_texture_rectangle effects the definition of this extension.
-
-Overview
-
- This extension supports texture images stored in the YCbCr format.
- There is no support for converting YCbCr images to RGB or vice versa
- during pixel transfer. The texture's YCbCr colors are converted to
- RGB during texture sampling, after-which, all the usual per-fragment
- operations take place. Only 2D texture images are supported (not
- glDrawPixels, glReadPixels, etc).
-
- A YCbCr pixel (texel) is a 16-bit unsigned short with two components.
- The first component is luminance (Y). For pixels in even-numbered
- image columns, the second component is Cb. For pixels in odd-numbered
- image columns, the second component is Cr. If one were to convert the
- data to RGB one would need to examine two pixels from columns N and N+1
- (where N is even) to deduce the RGB color.
-
-IP Status
-
- None
-
-Issues
-
- None
-
-New Procedures and Functions
-
- None
-
-New Tokens
-
- Accepted by the <internalFormat> and <format> parameters of
- TexImage2D and TexSubImage2D:
-
- YCBCR_MESA 0x8757
-
- Accepted by the <type> parameter of TexImage2D and TexSubImage2D:
-
- UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */
- UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */
-
-Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)
-
- None
-
-Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
-
- In section 3.6.4, Rasterization of Pixel Rectangles, on page 101,
- add the following to Table 3.8 (Packed pixel formats):
-
- type Parameter GL Data Number of Matching
- Token Name Type Components Pixel Formats
- -------------- ------- ---------- -------------
- UNSIGNED_SHORT_8_8_MESA ushort 2 YCBCR_MESA
- UNSIGNED_SHORT_8_8_REV_MESA ushort 2 YCBCR_MESA
-
-
- In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
- add the following to Table 3.10 (UNSIGNED_SHORT formats):
-
- UNSIGNED_SHORT_8_8_MESA:
-
- 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- +-------------------------------+-------------------------------+
- | 1st | 2nd |
- +-------------------------------+-------------------------------+
-
- UNSIGNED_SHORT_8_8_REV_MESA:
-
- 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- +-------------------------------+-------------------------------+
- | 2nd | 1st |
- +-------------------------------+-------------------------------+
-
-
- In section 3.6.4, Rasterization of Pixel Rectangles, on page 104,
- add the following to Table 3.12 (Packed pixel field assignments):
-
- First Second Third Fourth
- Format Element Element Element Element
- ------ ------- ------- ------- -------
- YCBCR_MESA luminance chroma
-
-
- In section 3.8.1, Texture Image Specification, on page 125, add
- another item to the list of TexImage2D and TexImage3D equivalence
- exceptions:
-
- * The value of internalformat and format may be YCBCR_MESA to
- indicate that the image data is in YCbCr format. type must
- be either UNSIGNED_SHORT_8_8_MESA or UNSIGNED_SHORT_8_8_REV_MESA
- as seen in tables 3.8 and 3.10. Table 3.12 describes the mapping
- between Y and Cb/Cr to the components.
- If NV_texture_rectangle is supported target may also be
- TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV.
- All pixel transfer operations are bypassed. The texture is stored as
- YCbCr, not RGB. Queries of the texture's red, green and blue component
- sizes will return zero. The YCbCr colors are converted to RGB during
- texture sampling using an implementation dependent conversion.
-
-
- In section 3.8.1, Texture Image Specification, on page 126, add
- another item to the list of TexImage1D and TexImage2D equivalence
- exceptions:
-
- * The value of internalformat and format can not be YCBCR_MESA.
-
-
- In section 3.8.2, Alternate Texture Image Specification Commands, on
- page 129, insert this paragraph after the first full paragraph on the
- page:
-
- "If the internal storage format of the image being updated by
- TexSubImage2D is YCBCR_MESA then format must be YCBCR_MESA.
- The error INVALID_OPERATION will be generated otherwise."
-
-
-Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
-Operations and the Frame Buffer)
-
- None
-
-Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)
-
- None
-
-Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
-State Requests)
-
- None
-
-Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)
-
- None
-
-Additions to the AGL/GLX/WGL Specifications
-
- None
-
-GLX Protocol
-
- None
-
-Errors
-
- INVALID_ENUM is generated by TexImage2D if <internalFormat> is
- MESA_YCBCR but <format> is not MESA_YCBCR.
-
- INVALID_ENUM is generated by TexImage2D if <format> is MESA_YCBCR but
- <internalFormat> is not MESA_YCBCR.
-
- INVALID_VALUE is generated by TexImage2D if <format> is MESA_YCBCR and
- <internalFormat> is MESA_YCBCR and <border> is not zero.
-
- INVALID_OPERATION is generated by TexSubImage2D if the internal image
- format is YCBCR_MESA and <format> is not YCBCR_MESA.
-
- INVALID_OPERATION is generated by CopyTexSubImage2D if the internal
- image is YCBCR_MESA.
-
-New State
-
- Edit table 6.16 on page 231: change the type of TEXTURE_INTERNAL_FORMAT
- from n x Z42 to n x Z43 to indicate that internal format may also be
- YCBCR_MESA.
-
-Revision History
-
- 20 September 2002 - Initial draft
- 29 April 2003 - minor updates
- 3 September 2003 - further clarify when YCbCr->RGB conversion takes place
- 19 September 2003 - a few more updates prior to submitting to extension
- registry.
- 3 April 2004 - fix assorted inaccuracies
+Name
+
+ MESA_ycbcr_texture
+
+Name Strings
+
+ GL_MESA_ycbcr_texture
+
+Contact
+
+ Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com)
+ Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)
+
+Status
+
+ Shipping (Mesa 4.0.4 and later)
+
+Version
+
+ 1.0
+
+Number
+
+ TBD
+
+Dependencies
+
+ OpenGL 1.0 or later is required
+ This extension is written against the OpenGL 1.4 Specification.
+ NV_texture_rectangle effects the definition of this extension.
+
+Overview
+
+ This extension supports texture images stored in the YCbCr format.
+ There is no support for converting YCbCr images to RGB or vice versa
+ during pixel transfer. The texture's YCbCr colors are converted to
+ RGB during texture sampling, after-which, all the usual per-fragment
+ operations take place. Only 2D texture images are supported (not
+ glDrawPixels, glReadPixels, etc).
+
+ A YCbCr pixel (texel) is a 16-bit unsigned short with two components.
+ The first component is luminance (Y). For pixels in even-numbered
+ image columns, the second component is Cb. For pixels in odd-numbered
+ image columns, the second component is Cr. If one were to convert the
+ data to RGB one would need to examine two pixels from columns N and N+1
+ (where N is even) to deduce the RGB color.
+
+IP Status
+
+ None
+
+Issues
+
+ None
+
+New Procedures and Functions
+
+ None
+
+New Tokens
+
+ Accepted by the <internalFormat> and <format> parameters of
+ TexImage2D and TexSubImage2D:
+
+ YCBCR_MESA 0x8757
+
+ Accepted by the <type> parameter of TexImage2D and TexSubImage2D:
+
+ UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */
+ UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */
+
+Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)
+
+ None
+
+Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
+
+ In section 3.6.4, Rasterization of Pixel Rectangles, on page 101,
+ add the following to Table 3.8 (Packed pixel formats):
+
+ type Parameter GL Data Number of Matching
+ Token Name Type Components Pixel Formats
+ -------------- ------- ---------- -------------
+ UNSIGNED_SHORT_8_8_MESA ushort 2 YCBCR_MESA
+ UNSIGNED_SHORT_8_8_REV_MESA ushort 2 YCBCR_MESA
+
+
+ In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
+ add the following to Table 3.10 (UNSIGNED_SHORT formats):
+
+ UNSIGNED_SHORT_8_8_MESA:
+
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ +-------------------------------+-------------------------------+
+ | 1st | 2nd |
+ +-------------------------------+-------------------------------+
+
+ UNSIGNED_SHORT_8_8_REV_MESA:
+
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ +-------------------------------+-------------------------------+
+ | 2nd | 1st |
+ +-------------------------------+-------------------------------+
+
+
+ In section 3.6.4, Rasterization of Pixel Rectangles, on page 104,
+ add the following to Table 3.12 (Packed pixel field assignments):
+
+ First Second Third Fourth
+ Format Element Element Element Element
+ ------ ------- ------- ------- -------
+ YCBCR_MESA luminance chroma
+
+
+ In section 3.8.1, Texture Image Specification, on page 125, add
+ another item to the list of TexImage2D and TexImage3D equivalence
+ exceptions:
+
+ * The value of internalformat and format may be YCBCR_MESA to
+ indicate that the image data is in YCbCr format. type must
+ be either UNSIGNED_SHORT_8_8_MESA or UNSIGNED_SHORT_8_8_REV_MESA
+ as seen in tables 3.8 and 3.10. Table 3.12 describes the mapping
+ between Y and Cb/Cr to the components.
+ If NV_texture_rectangle is supported target may also be
+ TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV.
+ All pixel transfer operations are bypassed. The texture is stored as
+ YCbCr, not RGB. Queries of the texture's red, green and blue component
+ sizes will return zero. The YCbCr colors are converted to RGB during
+ texture sampling using an implementation dependent conversion.
+
+
+ In section 3.8.1, Texture Image Specification, on page 126, add
+ another item to the list of TexImage1D and TexImage2D equivalence
+ exceptions:
+
+ * The value of internalformat and format can not be YCBCR_MESA.
+
+
+ In section 3.8.2, Alternate Texture Image Specification Commands, on
+ page 129, insert this paragraph after the first full paragraph on the
+ page:
+
+ "If the internal storage format of the image being updated by
+ TexSubImage2D is YCBCR_MESA then format must be YCBCR_MESA.
+ The error INVALID_OPERATION will be generated otherwise."
+
+
+Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
+Operations and the Frame Buffer)
+
+ None
+
+Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)
+
+ None
+
+Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
+State Requests)
+
+ None
+
+Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)
+
+ None
+
+Additions to the AGL/GLX/WGL Specifications
+
+ None
+
+GLX Protocol
+
+ None
+
+Errors
+
+ INVALID_ENUM is generated by TexImage2D if <internalFormat> is
+ MESA_YCBCR but <format> is not MESA_YCBCR.
+
+ INVALID_ENUM is generated by TexImage2D if <format> is MESA_YCBCR but
+ <internalFormat> is not MESA_YCBCR.
+
+ INVALID_VALUE is generated by TexImage2D if <format> is MESA_YCBCR and
+ <internalFormat> is MESA_YCBCR and <border> is not zero.
+
+ INVALID_OPERATION is generated by TexSubImage2D if the internal image
+ format is YCBCR_MESA and <format> is not YCBCR_MESA.
+
+ INVALID_OPERATION is generated by CopyTexSubImage2D if the internal
+ image is YCBCR_MESA.
+
+New State
+
+ Edit table 6.16 on page 231: change the type of TEXTURE_INTERNAL_FORMAT
+ from n x Z42 to n x Z43 to indicate that internal format may also be
+ YCBCR_MESA.
+
+Revision History
+
+ 20 September 2002 - Initial draft
+ 29 April 2003 - minor updates
+ 3 September 2003 - further clarify when YCbCr->RGB conversion takes place
+ 19 September 2003 - a few more updates prior to submitting to extension
+ registry.
+ 3 April 2004 - fix assorted inaccuracies
diff --git a/mesalib/docs/VERSIONS b/mesalib/docs/VERSIONS
index f72679fbe..0ebcd1469 100644
--- a/mesalib/docs/VERSIONS
+++ b/mesalib/docs/VERSIONS
@@ -1,1514 +1,1514 @@
-
-
-Mesa Version History
-====================
-
-1.0 beta February 1995
- Initial release
-
-1.1 beta March 4, 1995
- Changes:
- faster point and line drawing (2x faster)
- more systems supported, better Makefiles
- Renamed lib*.a files to avoid collisions
- many small bug fixes
- New:
- pseudo-GLX functions added
- new implementation of evaluators (eval2.c)
- GLUT support
-
-1.1.1 beta March 7, 1995
- Changes:
- Reverted from eval2.c to eval.c due to FPE on Linux
- more speed improvements
- more Makefile changes
-
-1.1.2 beta March 14, 1995
- New:
- implementation of SGI's blending extensions
- glXUseXFont implemented
- added MESA_DEBUG environment variable support
- Changes:
- Using eval2.c again
- more FPE-prevention checks (0-length normals are OK)
- a few small bug fixes
- much faster pixel logic ops!
- faster transformation arithmetic
-
-1.1.3 beta March 31, 1995
- New:
- gluScaleImage() and gluBuild2DMipMaps() implemented
- Mesa widgets for Xt/Motif
- blendEXT demos
- added environment variables for selecting visuals
- Changes:
- almost all GLUT demos work correctly now
- faster X device driver functions
- more bug fixes
-
-1.1.4 beta April 20, 1995
- Bug fixes:
- - missing #define SEEK_SET in src-tk/image.c
- - compile glShadeModel into display lists
- - fixed pow() domain error in src/light.c
- - fixed "flickering bitmaps" in double buffer mode
- - fixed tk.h and aux.h for C++
- - state of LIGHT_MODEL_LOCAL_VIEWER was inverted
- New features:
- - MUCH, MUCH nicer dithering in 8-bit RGB mode
- - updated widgets and widget demos
- - Implemented GLXPixmap functions
- - Added GLU 1.1 and GLX 1.1 functions
- - Changed the X/Mesa interface API, more versatile
- - Implemented gluPartialDisk()
-
-1.2 May 22, 1995
- Bug fixes:
- - IRIX 4.x makefile problem
- - modified tk to share root colormap as needed
- - gluLookAt normalization problem
- - suppress Expose, NoExpose events in swapbuffers
- - glBitmap() and glDrawPixels() clipping
- New features:
- - GL_BLEND, GL_MODULATE, GL_DECAL, and GL_REPLACE_EXT texture
- modes implemented
- - texture maps stored more efficiently
- - texture maps can be compiled into display lists
- - Bogdan Sikorski's GLU polygon tesselation code
- - Linas Vepstas's sweep and extrusion library
- - glXCreateContext()'s shareList parameter works as it's supposed to.
- XMesaCreateContext() updated to accept a shareList parameter too.
- - Mesa can be compiled with real OpenGL .h files
- - MESA_BACK_BUFFER environment variable
- - better GLX error checking
-
-1.2.1 June 22, 1995
- Bug fixes:
- - X/Mesa double buffer window resize crash
- - widgets now pass PointerMotion events
- - X/Mesa incorrect default clear color and drawing color
- - more robust X MIT-SHM support in X/Mesa
- - glTexImage( format=GL_LUMINANCE ) didn't work
- - GL_LINE mode polygons with line width > 1.0 could cause a crash
- - numerous feedback bugs
- - glReadPixels() from depth buffer was wrong
- - error prone depth and stencil buffer allocation
- New features:
- - Preliminary Microsoft Windows driver
- - Implemented a number of missing functions: glEvalCoord[12][df]v(),
- glGet...(), etc.
- - Added a few missing symbols to gl.h and glu.h
- - Faster rendering of smooth-shaded, RGBA, depth-buffered polygons.
- - Faster rendering of lines when width=2.0
- - Stencil-related functions now work in display lists
- Changes:
- - renamed aux.h as glaux.h (MS-DOS names can't start with aux)
- - most filenames are in 8.3 format to accomodate MS-DOS
- - use GLubytes to store arrays of colors instead of GLints
-
-1.2.2 August 2, 1995
- New features:
- - texture mapped points and lines
- - NURBS! (but not 100% complete)
- - viewports may safely extend beyond window boundaries
- - MESA_PRIVATE_CMAP environment variable
- - Grayscale X display support
- - two new demos: demos/gears.c and demos/shadow.c
- - MachTen for Macintosh configuration
- Bug fixes:
- - glGet*(GL_DEPTH_BITS) returned bytes, not bits
- - point, line, and bitmap rasterization suffered from roundoff errors
- - fixed a division by zero error in line clippping
- - occasional wrong default background color really fixed!
- - glDepthFunc(GL_ALWAYS) with glDepthMask(GL_FALSE) didn't work
- - gluBuild2DMipmaps malloc problem fixed
- - view volume clipping of smooth shaded lines resulted in bad colors
- Changes:
- - new visual selection method in glXChooseVisual()
- - improved GLU quadric functions
- - call XSync for glFinish and XFlush for glFlush
- - glVertex() calls now use a function pointer to avoid conditionals
- - removed contrib directory from Mesa tar file (available on ftp site)
- - AIX shared library support
- - Removed GLUenum type as it's not in OpenGL
-
-1.2.3 September 26, 1995
- New features:
- - Mesa header files now equivalent to SGI OpenGL headers
- - Support for HP's Color Recovery dithering displays
- - Faster vertex transformation
- - Faster raster operations into X windows under certain conditions
- - New configurations: HP w/ shared libs, Ultrix w/ GCC, Data General
- - 4-bit visuals now supported
- Bug fixes:
- - glScissor bug fixed
- - round-off errors in clipping lines against clip planes fixed
- - byte swapping between hosts and display servers implemented
- - glGetError() can be called without a current rendering context
- - problem with accidentally culled polygons is fixed
- - fixed some widget compilation problems
-
-1.2.4 November 17, 1995
- New features:
- - More speed improvements (lighting, fogging, polygon drawing)
- - Window system and OS-independent off-screen rendering
- - Preliminary Fortran bindings
- - glPolygonOffsetEXT implemented
- - glColorMask and glIndexMask now fully implemented
- - glPixelZoom implemented
- - display lists fully implemented
- - gamma correction
- - dithering in 8-bit TrueColor/DirectColor visuals
- Changes:
- - Improved device driver interface
- - tk.h renamed to gltk.h to avoid conflicts with Tcl's Tk
- - Dithering support moved from core into device driver
- Bug fixes:
- - glEnable/Disable( GL_LIGHTING ) didn't always take effect
- - glReadPixels byte swapping was broken
- - glMaterial with pname==GL_AMBIENT_AND_DIFFUSE was broken
- - duplicate glColor4b() prototype in GL/gl.h removed
- - stripes in wave -ci demo fixed
- - GL_LINEAR_MIPMAP_NEAREST had wrong value
- - bugs in HP Color Recovery support fixed
- - fixed bug when blending lines, points, bitmaps outside of window
-
-1.2.5 November 30, 1995
- New Features:
- - updated MS Windows driver
- - new implementation of StaticGray/GrayScale visual support
- Bug fixes:
- - pixelzooming with gamma correction or blending didn't work
- - HP color recovery visual wasn't being picked by glXChooseVisual
- - glClear didn't always observe glColorMask changes
- - olympic and offset demos didn't compile on some Suns
- - texcoord clamping wasn't correct
- - a polygon optimization introduced an occasional sampling problem
-
-1.2.6 January 26, 1996
- New Features:
- - faster line and polygon rendering under certain conditions. See
- Performance Tips 9 and 10 in README
- - profiling
- - lighting is a bit faster
- - better perspective corrected texture mapping
- - Amiga AmiWin (X11) support
- - preliminary Linux SVGA driver
- Changes:
- - now using a 16-bit depth buffer, faster, smaller
- - GL_NORMALIZE is disabled by default
- Bug fixes:
- - projective texture mapping
- - fixed a memory leak in the context destroy function
- - GL_POLYGON with less than 3 vertices caused a crash
- - glGet*() returned wrong result for GL_INDEX_MODE
- - reading pixels from an unmapped X window caused a BadMatch error
-
-1.2.7 March 5, 1996
- New:
- - faster lighting
- - faster 16-bit TrueColor rendering on Linux
- - faster 32-bit TrueColor rendering on Linux, HP, IBM
- - non-depth-buffered XImage polygons are faster
- - vertex array extension
- - software alpha planes
- - updated Macintosh driver
- - new NeXT driver
- - GLU quadric functions generate texture coordinates
- - reflect.c demo - reflective, textured surface demo
- Changes:
- - gamma correction code moved into the X driver for better performance
- Bug fixes:
- - multiple glClipPlane()'s didn't work reliably
- - glPolygonMode() didn't always work
- - glCullFace( GL_FRONT_AND_BACK ) didn't work
- - texture mapping with gamma correction was buggy
- - floating point exceptions in texture coordinate interpolation
- - XImage byte swapping didn't always work
- - polygon edge flags weren't always used correctly
-
-1.2.8 May 22, 1996
- New:
- - overlay planes on X servers with the SERVER_OVERLAY_VISUALS property
- - better monochrome output
- - more IRIX 6.x configurations
- - more robust RGB mode color allocation
- - added MESA_XSYNC environment variable
- - GLX_MESA_pixmap_colormap and GLX_EXT_visual_info extensions
- - GL_MESA_window_pos extension
- - faster glReadPixels/glDrawPixels for GL_DEPTH and GL_UNSIGNED_SHORT
- and GL_UNSIGNED_INT
- - driver for prototype Cirrus Mondello 3-D board
- - updated AmigaDOS driver
- - a few small speed optimizations in polygon rendering
- Changes:
- - internal device driver interface modified to simplify device
- driver implementations and to support hardware Z buffers
- - several changes to the X/Mesa interface (xmesa.h)
- Bug fixes:
- - fixed pow(0,0) domain error triggered on some systems
- - glStencilClear() in a display list caused an infinite loop
- - glRasterPos*() was sometimes off by +/-0.5 in X and Y
- - color masking and blending were performed in wrong order
- - auxSolidCylinder() sometimes drew a wire-frame cylinder
- - fixed file writing bug in osdemo.c
- - pixel mapping didn't always work
- - the GL_GEQUAL stencil func didn't work
- - the GL_INVERT stencil op didn't work
- - the stencil write mask didn't work
- - glPush/PopAttrib() didn't do enough error checking
- - glIsList() didn't always work correctly
-
-2.0 October 10, 1996
- New:
- - Implements OpenGL 1.1 API functions
- - all texture filtering modes supported (mipmapping)
- - faster texture mapping, see Performance Tip 11 in README
- - antialiased RGB points
- - X support for line and polygon stippling
- - glDrawBuffer( GL_FRONT_AND_BACK ) works
- - util/ directory of useful stuff
- - demos/texobj demo of texture objects
- Changes:
- - major internal changes for thread-safeness
- - new device driver interface
- - MESA_ALPHA env variable removed
- - triangle rasterizer replaces polygon rasterizer
- Bug fixes:
- - glPopAttrib() bug
- - glDrawBuffer(GL_NONE) works now
-
-2.1 December 14, 1996
- New:
- - VMS support
- - MS-DOS driver
- - OpenStep support
- - updated, combined Windows 95/NT driver
- - implemented glGetLighti() and glGetTexGen*()
- - GLX does garbage collection of ancillary buffers
- Bug fixes:
- - removed unused _EXT constants from gl.h
- - fixed polygon offset bugs
- - Z coordinates of clipped lines were incorrect
- - glEdgeFlag() in display lists didn't always work
- - glLight*() in display lists didn't work
- - fixed X line stipple bugs (Michael Pichler)
- - glXUseXfonts XFreeFont/XFreeFontInfo bug fixed
- - fixed a feedback bug
- - glTexGen*() now transforms GL_EYE_PLANE by inverse modelview matrix
- - polygons were sometimes culled instead of clipped
- - triangle rasterizer suffered from float/int overflow exceptions
- - fixed FP underflow exception in lighting (specular exponent)
- - glEnable/glDisable of GL_EXT_vertex_array enums didn't work
- - fixed free(NULL) in GLU tesselator code
- - using 24-bit color on some X servers resulted in garbage rendering
- - 32-bit per pixel mode for XFree86 now works
- - glRotate(a,0,0,0) gave unpredictable results
- - GL_LINE_STRIP with > 480 vertices had occasional clipping problems
- - 8-bit TrueColor GLXPixmap rendering incorrectly required a colormap
- - glMaterial() wasn't ignored when GL_COLOR_MATERIAL was enabled
- - glEnable(GL_COLOR_MATERIAL) followed by glColor() didn't work right
- - accumulation buffer was limited to positive values
- - projective textures didn't work
- - selection buffer overflows weren't handled correctly
- Changes:
- - restored the GL_EXT_polygon_offset extension
- - slightly faster RGB dithering
- - the SVGA driver works again
- - Amiga driver now distributed separately
- - NeXT driver updated for Mesa 2.x
-
-2.2 March 14, 1997
- New:
- - better color selection when dithering
- - added GL_EXT_texture_object extension
- - updated MS-DOS driver for DJGPP
- - added openbsd make configuration
- - faster dithered flat-shaded triangles
- - various compilation problems with Motif widgets fixed
- - gl.h, glx.h and glu.h name mangling option
- - BeOS driver
- - 3D texture mapping extension
- - GL_MESA_resize_buffers extension
- - morph3d, stex3d and spectex demos
- - 3Dfx support
- Bug fixes:
- - glColorMaterial should finally work right in all respects
- - linear interpolation of mipmap levels was incorrectly weighted
- - readpix.c didn't compile on Macintosh
- - GL_INVERT and related logic ops didn't work right
- - glTexImage[12]D() didn't check its parameters consistantly
- - fixed a memory leak in glTexImage[12]D()
- - kludged around a SunOS 5.x/GCC compiler bug in the feedback code
- - glReadPixels aborted instead of normally catching some errors
- - a few 1.1 constants were missing or misnamed in gl.h
- - glBegin(p); glBegin(q); didn't generate an error
- - fixed a memory leak in GLX code
- - clipping of concave polygons could cause a core dump
- - 1-component alpha texture maps didn't work
- - fixed a GLU polygon tesselator bug
- - polygons with colinear vertices were sometimes culled
- - feedback triangle colors were wrong when using smooth shading
- - textures with borders didn't work correctly
- - colors returned in feedback mode were wrong when using lighting
- - spotlights didn't effect ambient lighting correctly
- - gluPartialDisk() had a few bugs
- Changes:
- - device driver interface expanded to support texture mapping
- - faster matrix inversion subroutine
- - commented out #include "wmesa_extend.h" from src/wmesa.c
- - fixed many compiler warnings in the demo programs
-
-2.3 June 30, 1997
- New:
- - Mesa distribution divided into two pieces: library code and demos
- - faster vertex transformation, clip testing, lighting
- - faster line drawing
- - TrueColor visuals how have dithering (for depths < 24 bits)
- - added MESA_NO_DITHER environment variable
- - new device driver function: NearFar(), RenderVB(), RasterSetup()
- - added LynxOS configuration
- - added cygnus Win32 configuration
- - added texcyl.c GLUT demo
- - added XMesaDitherColor() to X/Mesa interface
- - new NURBS code from Bogdan Sikorski
- - added demos/shape.c (non-rectangular X window!)
- Bug fixes:
- - glEnable/DisableClientState() were missing from GL/gl.h
- - GL_SPHERE_MAP texcoord generation didn't work correctly
- - glXGetConfig() returned wrong number of depth, stencil, accum bits
- - glDrawPixels feedback/selection didn't examine RasterPos valid bit
- - black and white were reversed on some monochrome displays
- - fixed potential image memory leak (wasn't setting reference counter)
- - glDrawPixels sometimes didn't recognize some GL state changes
- - gluProject/UnProject() didn't check for divide by zero
- - stex3d demo called random() and srandom(), not portable
- - fixed memory leaks in context.c and drawpix.c
- - fixed NULL dereferencing problem in gl_update_texture_state()
- - glReadPixels between glBegin/glEnd didn't generate an error.
- - fixed memory leak in polygon tesselator (Randy Frank)
- - fixed seg fault bug drawing flat-shaded, depth-tested lines
- - clipped GL_TRIANGLE_STRIPs sometimes had wrong color when flat-shaded
- - glBindTexture sometimes didn't work
- - fixed a bug deep in glXReleaseBuffersMESA()
- - fog was mistakenly applied to alpha
- - glPopMatrix didn't set "dirty matrix" flag
- - glPolygonStipple pattern was sometimes wrong
- - glClear wasn't disabled during feedback and selection
- - fixed memory leak in glTexSubImage[123]D
- Changes:
- - many library source files reorganized
- - faster X color allocation, colors also freed when finished with them
- - new texture sampling function pointer in texture objects
- - incorporated 3Dfx VooDoo driver v0.16 into main source tree
- - many 3Dfx driver updates
- - cygnus Makefiles now included
- - updated DOS driver
- - made a few changes to dosmesa.c and wmesa.c (VB->Unclipped)
- - internally, colors now stored in GLubytes, not GLfixed
- - optimized changing of GL_SHININESS parameter
-
-2.4 September 18, 1997
- New:
- - updated 3Dfx Glide driver
- - hacks for 3Dfx rendering into an X window or fullscreen
- - added depth buffer access functions to X/Mesa and OS/Mesa interfaces
- Bug fixes:
- - pixel buffer could overflow with long, wide lines
- - fixed FP underflow problems in lighting
- - glTexSubImage1D() had an unitialized variable
- - incomplete texture objects could cause a segfault
- - glDrawPixels with GL_COMPILE_AND_EXECUTE caused infinite loop
- - flat-shaded quads in a strip were miscolored if clipped
- - mipmapped triangle lod computation now works correctly
- - fixed a few under/overflow bugs in triangle rasterizer
- - glArrayElement() assigned bad normal if normal array disabled
- - changed argument to glXReleaseBuffersMESA()
- - fixed small triangle underflow bugs in tritemp.h (hopefully)
- - glBindTexture(target, 0) caused a crash
- - glTexImage[123]D() with NULL image pointer caused crash
- - glPixelStore parameters are now ignored during display list execution
- - fixed a two-sided lighting w/ clipping bug (black vertices)
- - textures with width!=height were sometimes mis-rendered
- - "weird" projection matrices could cause div by 0, other fp errors
- Changes:
- - changed precompiled header symbol from PCH to PC_HEADER
- - split api.c into api1.c and api2.c
- - added hash.c source file (but not used yet)
- - a few Sun and HP configuration file changes
- - MESA_GLX_FX env var replaces MESA_FX_WINDOW and MESA_FX_FULLSCREEN
- - fixed a few cygnus build problems (src/Makefile.cygnus, src/wmesa.c)
-
-2.5 November 20, 1997
- New:
- - updated 3Dfx driver (v20) for GLQuake
- - added GL_EXT_paletted_texture extension
- - added GL_EXT_shared_texture_palette extension
- - added GL_EXT_point_parameters extension
- - now including Mark Kilgard's GLUT library v3.6
- - new GLUT-based demos in gdemos/
- - added a few more Unix config targets
- - added Intel X86 assembly language vertex transformation code
- - 3Dfx/Glide driver for Mesa now recognizes SST_SCREENREFRESH env var
- - Windows 95 S3 Virge driver
- Bug fixes:
- - glCopyTexImage?D would crash due to uninitialized variable
- - glColor w/ glColorMaterial in a display list caused a bug
- - fixed several glDrawPixels() and ReadPixels() bugs in 3Dfx driver
- - glVertex4*() vertices weren't always projected correctly
- - trying to use mipmapped textured points or lines caused crash
- - glColor[34][fd]() values now clamped to [0,1] before int conversion
- Changes:
- - new device driver functions for texture mapping
- - hash tables used for display list and texture object lookup
- - fixed GLX visual handling code to avoid saving redundant visuals
- - 3Dfx Glide libraries automatically linked to libMesaGL.so
- - dropped the Cirrus Logic Mondello code since it's obsolete
- - updated Cygnus Makefiles (Stephane Rehel)
- - updated Windows MSVC++ Makefiles (Oleg Letsinsky)
- - procedure for making library files has changed: scripts now take
- a major and minor version arguments. Make-config changed a lot.
- - new implementation of glTexSubImage2D()
- - updated widgets-mesa directory to create libMesaGLwM.a (Motif widget)
- - separate linux-glide and linux-386-glide configurations
-
-2.6 February 12, 1998
- New:
- - Windows WGL functions
- - updated VMS, DOS, Windows, Cygnus, BeOS, Amiga compilation support
- - v0.22 of 3Dfx Glide driver
- - more X86 assembly language optimizations
- - faster blending for some modes
- - XMesaSetFXmode() to switch between 3Dfx window and full-screen mode
- - added preliminary thread support
- - added GLX_MESA_copy_sub_buffer extension
- - some clipping optimizations
- Bug fixes:
- - fixed shading/material bug when drawing long primitive strips
- - fixed clipping problem in long primitive strips
- - fixed clipping bug when using 3Dfx driver
- - fixed a problem when trying to use X fonts w/ 3Dfx driver
- - fixed a texture filter bug in 3Dfx/Glide driver
- - fixed bug in 3Dfx/Glide driver involving depth mask & clearing
- - glLoadMatrix to set projection matrix confused the 3Dfx driver
- - non-identity texture matrices didn't work with linux-386 configs
- - glGenTextures() didn't reserve the returned texture IDs
- - NULL proxy image sent to glTexImageXD() caused crash
- - added texture state validation optimization (Henk Kok)
- - fixed colormap reuse problem when using both RGB and CI windows
- - 32bpp True/DirectColor X visuals weren't recognized
- - fixed potential problem in evaluators memory allocation
- - fixed assorted demo compilation bugs
- Changes:
- - replaced old Mesa/windows/ directory with Mesa/WIN32/ directory
- - converted a few old glaux/gltk demos to GLUT
- - renamed directories: demos -> xdemos, gdemos -> demos
-
-
-3.0 September 17, 1998
- New:
- - OpenGL 1.2 API
- - GL_EXT_abgr pixel format extension
- - GL_SGIS_texture_edge_clamp extension
- - GL_SGIS_multitexture extension (to be replaced by GL_ARB_multitex)
- - GL_EXT_multitexture extension (to be replaced by GL_ARB_multitex)
- - GL_EXT_rescale_normal extension and renormal.c demo
- - GLX_SGI_video_sync extension (a no-op)
- - antialiased lines
- - glGetTexImage() now implemented
- - glDraw/Copy/ReadPixels() optimizations
- - optimized textured triangle code (Marten Stromberg)
- - more optimization of dithered TrueColor triangles in X driver
- - Linux GGI driver
- - updated MGL driver
- Bug fixes:
- - lots of assorted compilation fixes
- - glInitNames didn't write initial hit record
- - glBitmap didn't always check for invalid raster position
- - switching between GLX and OSMesa contexts caused a crash
- - fixed uninitialized variable in Mesa widget code
- - fixed typo in texture code which caused book/texgen to crash
- - fixed texture sampling bug when filter=GL_LINEAR and wrap=GL_CLAMP
- - gluDisk() in POINT or LINE mode sometimes failed
- - fixed texture + fog bug
- - GL_COMPILE_AND_EXECUTE mode didn't work reliably
- - glMultMatrix in projection matrix mode w/ 3Dfx driver could fail
- - glDrawPixels(color index pixels) weren't converted to RGBA
- - fixed possible getenv() buffer overflow security bug
- - glBitmap in feedback mode was offset by xOrig, yOrig params
- - device driver's DrawPixels hook was never used
- - glDrawPixels with zoomY!=1 and top/bottom clipping didn't work
- - glDrawPixels optimized for GL_LUMINANCE, GL_LUMINANCE_ALPHA, GLubyte
- - fixed MakeCurrent bug in GLwRedrawObjects() in MesaWorkstation.c
- - glCopyTexSubImage2D() didn't work with 3Dfx driver
- - lines with width = 2 could cause crash
- - glClear with scissor rect sometimes cleared whole buffer
- - glTexSubImage2D( .. GL_COLOR_INDEX .. ) didn't work
- - glTexImageXD( .. GL_ABGR_EXT .. ) didn't work
- - computation of inverse modelview matrix sometimes failed
- - fixed GL_CLAMP mode texture sampling bug
- - textured line interpolation was somewhat broken
- - textured triangle interpolation was also somewhat broken
- - glGet(MODELVIEW/PROJECTION/TEXTURE_MATRIX_STACK_DEPTH) off by one
- - evaluator state wasn't fully initialized
- - texture coordinate clipping was buggy
- - evaluator surfaces could be mis-colored
- - glAccum(GL_RETURN, s) didn't obey glColorMask() settings
- - zero area polygons shouldn't be culled if polygon mode is point/line
- - clipped width and height of glReadPixels was sometimes off by one
- - blending with alpha = 0 or 1.0 wasn't always exact
- - reading of pixels from clipped region was buggy
- - minor tweaking of X visual management in GLX emulator
- - glPolygonStipple now obeys pixel unpacking parameters
- - glGetPolygonStipple now obeys pixel packing parameters
- - interleaved vertex array texture coordinates were broken
- - query of proxy texture internal format was broken
- - alpha channel wasn't reliably cleared
- - fixed divide by zero error in gluScaleImage if dest size = 1 x 1
- Conformance bug fixes:
- - GL_SELECTION_BUFFER_POINTER and GL_SELECTION_BUFFER_SIZE were missing
- - GL_TEXTURE_INTERNAL_FORMAT was missing
- - glGet*(GL_POLYGON_STIPPLE) was broken
- - glPush/PopAttrib() didn't save/restore all texture state
- - glBitmap in feedback mode didn't work
- - feedback of texture coords didn't always work
- - glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLbyte was broke
- - glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLubyte was broke
- - glDrawPixels w/ format=GL_STENCIL_INDEX, type=GL_BITMAP was broke
- Changes:
- - upgraded GLUT to version 3.7
- - only GL and GLU library code included in MesaLib.tar.gz
- - GLUT and all demos now in MesaDemos.tar.gz
- - glaux and gltk libraries removed
- - IRIX -n32 and -64 libs go in lib32/ and lib64/ directories
-
-
-3.1 beta 1 November 19, 1998
- New:
- - GL_EXT_stencil_wrap extension
- - GL_INGR_blend_func_separate extension
- - GL_ARB_multitexture extension
- - GL_NV_texgen_reflection extension
- - newly optimized vertex transformation code
- - updated GLUT 3.7 code
- - better precision when using 32-bit Z buffer
- - Allegro DJGPP driver
- Bug fixes:
- - glCopyPixels between front/back buffers didn't copy alpha correctly
- - fixed out-of-bounds memory access in optimized 2-D texture code
- - glPixelStorei didn't accept GL_PACK/UNPACK_IMAGE_HEIGHT parameter
- - glGet*() didn't accept GL_MAX_3D_TEXTURE_SIZE parameter
- - clipping of texture coordinates sometimes had bad R,Q values
- - GL_CLAMP_TO_EDGE texture sampling was off by 0.5 texels
- - glEdgeFlagPointer() now takes a GLvoid * instead of GLboolean *
- - texture was sometimes applied twice with 3Dfx driver
- - glPush/PopAttrib() fouled up texture object reference counts
- - glDeleteLists(0, n) caused assertion failure
- - bilinear texture sampling wasn't accurate enough
- - glClear w/ glDepthMask(GL_FALSE) didn't work right on 3Dfx
- - color components were reversed on big endian 32 bpp X visuals
- Changes:
- - removed GL_EXT_multitexture extension
-
-
-3.1 beta 2 May 24, 1999
- New:
- - multi-textured points and lines (mjk@nvidia.com)
- - optimized 24bpp X rendering (bernd.paysan@gmx.de)
- - added allegro support (bernie-t@geocities.com)
- - cleaned-up Windows-related stuff (Ted Jump)
- - minor stereo changes (KendallB@scitechsoft.com)
- - new BeOS driver which implements BGLView class
- - new Direct3D driver (see src/D3D)
- - more efficient filled gluCylinder() function
- - utilities: util/showbuffer.[ch] and util/glstate.[ch]
- - fixed some IRIX compiler warnings
- - added support for building Mesa in XFree86 with
- SGI's GLX (kevin@precisioninsight.com)
- Bug fixes:
- - a variety of Windows/Mesa bug fixes (mjk@nvidia.com)
- - packed pixel images weren't unpacked correctly
- - patches some win32 files in GLUT (mjk@nvidia.com)
- - glTexImage[123]D() didn't accept internalFormat == GL_COLOR_INDEX
- - fixed lighting bug in Keith's new shading code
- - fixed texture segfault seen in Lament screensaver
- - fixed miscellaneous low-memory bugs
- - glClear(GL_COLOR_BUFFER_BIT) with RGBA or CI masking was broken
- - GL_LINEAR sampling of 3D textures was broken
- - fixed SVR4 'cc' compiler macro problem (dawes@xfree86.org)
- - added GL_TEXTURE_PRIORITY fix (keithh@netcomuk.co.uk)
- - fixed wide point and wide line conformance bugs (brianp)
- Changes:
- - some device driver changes (see src/dd.h)
- - new copyright on core Mesa code
-
-
-3.1 beta 3 September 17, 1999
- New:
- - optimized glAccum function
- - optimized 24bpp rendering in XMesa driver
- - GLU 1.2 polygon tessellator
- Bug Fixes:
- - glGetTexLevelParameter wasn't fully implemented
- - glXUseXFont now handles multi-byte fonts
- - glIsEnabled(GL_TEXTURE_2D / 3D) returned wrong result
- - alpha channel of blending points, lines was sometimes incorrect
- Changes:
- - New library names: "libGL" instead of "libMesaGL"
- - New library numbering: libGL.so.1.2.310
- - New subdirectories: docs/ and bin/
- - New Makefile-system (autoconf,automake,libtool)
-
-
-3.1 final December 14, 1999
- New:
- - added demos/gloss.c
- - added xdemos/glxdpyinfo.c
- - added GLX_ARB_get_proc_address extension
- - rewritten glTexImage code paths (faster, less memory, bug fixes)
- Bug Fixes:
- - several vertex array bug fixes
- - overlapping glCopyPixels with pixel zooming now works
- - glXUseXFont() bitmaps were vertically shifted by one pixel
- - glCopyPixels with pixel zooming now works
-
-
-3.2 final April 24, 2000
- Bug fixes:
- - fixed memcpy bugs in span.c
- - fixed missing glEnd problem in demos/tessdemo.c
- - fixed bug when clearing 24bpp Ximages
- - fixed clipping problem found in Unreal Tournament
- - fixed Loki's "ice bug" and "crazy triangles" seen in Heretic2
- - fixed Loki's 3dfx RGB vs BGR bug
- - fixed Loki's 3dfx smooth/flat shading bug in SoF
- Changes:
- - updated docs/README file
- - use bcopy() optimizations on FreeBSD
- - re-enabled the optimized persp_textured_triangle() function
-
-
-3.2.1 July 19, 2000
- Bug fixes:
- - gluBuild2DMipmaps() didn't accept GL_BGRA
- - Fixed compile/makefile problems on IRIX
- - fixed segfault in 3dfx driver when using GL selection/feedback
- - no longer cull very, very tiny triangles
- - blending w/ drawbuffer==GL_FRONT_BACK caused segfault (sw rendering)
- - fixed Motif detection code in widgets-mesa/configure.in
- - glColorMaterial and glMaterial updates to emissive and ambient
- didn't always work right
- - Specular highlights weren't always in the right place
- - clipped GL_LINE mode polygons had interior lines appear
- - blend term GL_ONE_MINUS_CONSTANT_ALPHA was broken
- - GL_NICEST fog didn't always work with flat shading
- - glRect commands in display lists were sometimes miscolored
- - Line Z offset didn't always work
- - fixed texgen normal vector problem (gloss's teapot)
- - numerous GL conformance bugs fixed
- Changes:
- - glColorMask(false, false, false, false) handled better/faster
- - reverted to old GLU polygon tessellator, GLU 1.1
- - updated Win32 build files
-
-
-3.3 July 21, 2000
- New:
- - antialiased triangles now implemented
- - GL_EXT_texture_env_add texture mode extension
- - GLX 1.3 API
- - support for separate draw/read buffers (ie GL_SGI_make_current_read)
- - thread-safe API dispath
- - improved glxinfo program
- - demos/texdown program to measure texture download performance
- - glext.h header file
- - demos/geartrain program
- - GL_EXT_texture_lod_bias extension
- - demos/lodbias program
- - further optimized glRead/DrawPixels for 16-bit TrueColor X visuals
- - GLX_EXT_visual_rating extension (a no-op, however)
- - GL_HP_occlusion_test extension (for X and OS/Mesa drivers)
- - demos/occlude program
- - GL_SGIS_pixel_texture and GL_SGIX_pixel_texture extensions
- - demos/pixeltex program
- - GL_SGI_color_matrix extension
- - GL_SGI_color_table extension
- - GL_EXT_histogram extension
- - GL_ARB_texture_cube_map extension
- - added xdemos/glxheads and xdemos/manywin
- - demos/texenv.c demo
- - GL_EXT_texture_env_combine extension (by Holger Waechtler)
- - Xlib driver is now thread-safe (see xdemos/glthreads)
- Bug Fixes:
- - various GL conformance failures fixed since 3.2.1
- Changes:
- - gl.h now uses #defines instead of C enums for all tokens
- - glu.h now uses #defines instead of C enums for all tokens
- - moved programs from 3Dfx/demos/ into demos/ directory
-
-
-3.4 November 3, 2000
- New:
- - optimized glDrawPixels for glPixelZoom(1,-1)
- Bug Fixes:
- - widgets-mesa/src/*.c files were missing from 3.3 distro
- - include/GL/mesa_wgl.h file was missing from 3.3 distro
- - fixed some Win32 compile problems
- - texture object priorities weren't getting initialized to 1.0
- - glAreTexturesResident return value was wrong when using hardware
- - glXUseXFont segfaulted when using 3dfx driver (via MESA_GLX_FX)
- - glReadPixels with GLushort packed types was broken
- - fixed a few bugs in the GL_EXT_texture_env_combine texture code
- - glPush/PopAttrib(GL_ENABLE_BIT) mishandled multi-texture enables
- - fixed some typos/bugs in the VB code
- - glDrawPixels(GL_COLOR_INDEX) to RGB window didn't work
- - optimized glDrawPixels paths weren't being used
- - per-fragment fog calculation didn't work without a Z buffer
- - improved blending accuracy, fixes Glean blendFunc test failures
- - glPixelStore(GL_PACK/UNPACK_SKIP_IMAGES) wasn't handled correctly
- - glXGetProcAddressARB() didn't always return the right address
- - gluBuild[12]DMipmaps() didn't grok the GL_BGR pixel format
- - texture matrix changes weren't always detected (GLUT projtex demo)
- - fixed random color problem in vertex fog code
- - fixed Glide-related bug that let Quake get a 24-bit Z buffer
- Changes:
- - finished internal support for compressed textures for DRI
-
-
-3.4.1 February 14, 2001
- New:
- - fixed some Linux build problems
- - fixed some Windows build problems
- - GL_EXT_texture_env_dot3 extension (Gareth Hughes)
- Bug fixes:
- - added RENDER_START/RENDER_FINISH macros for glCopyTexImage in DRI
- - various state-update code changes needed for DRI bugs
- - disabled pixel transfer ops in glColorTable commands, not needed
- - fixed bugs in glCopyConvolutionFilter1D/2D, glGetConvolutionFilter
- - updated sources and fixed compile problems in widgets-mesa/
- - GLX_PBUFFER enum value was wrong in glx.h
- - fixed a glColorMaterial lighting bug
- - fixed bad args to Read/WriteStencilSpan in h/w stencil clear function
- - glXCopySubBufferMESA() Y position was off by one
- - Error checking of glTexSubImage3D() was broken (bug 128775)
- - glPopAttrib() didn't restore all derived Mesa state correctly
- - Better glReadPixels accuracy for 16bpp color - fixes lots of OpenGL
- conformance problems at 16bpp.
- - clearing depth buffer with scissoring was broken, would segfault
- - OSMesaGetDepthBuffer() returned bad bytesPerValue value
- - fixed a line clipping bug (reported by Craig McDaniel)
- - fixed RGB color over/underflow bug for very tiny triangles
- Known problems:
- - NURBS or evaluator surfaces inside display lists don't always work
-
-
-3.4.2 May 17, 2001
- Bug fixes:
- - deleting the currently bound texture could cause bad problems
- - using fog could result in random vertex alpha values
- - AA triangle rendering could touch pixels outside right window bound
- - fixed byteswapping problem in clear_32bit_ximage() function
- - fixed bugs in wglUseFontBitmapsA(), by Frank Warmerdam
- - fixed memory leak in glXUseXFont()
- - fragment sampling in AA triangle function was off by 1/2 pixel
- - Windows: reading pixels from framebuffer didn't always work
- - glConvolutionFilter2D could segfault or cause FP exception
- - fixed segfaults in FX and X drivers when using tex unit 1 but not 0
- - GL_NAND logicop didn't work right in RGBA mode
- - fixed a memory corruption bug in vertex buffer reset code
- - clearing the softwara alpha buffer with scissoring was broken
- - fixed a few color index mode fog bugs
- - fixed some bad assertions in color index mode
- - fixed FX line 'stipple' bug #420091
- - fixed stencil buffer clear width/height typo
- - fixed GL error glitches in gl[Client]ActiveTextureARB()
- - fixed Windows compilation problem in texutil.c
- - fixed 1/8-pixel AA triangle sampling error
- Changes:
- - optimized writing mono-colored pixel spans to X pixmaps
- - increased max viewport size to 2048 x 2048
-
-
-3.5 June 21, 2001
- New:
- - internals of Mesa divided into modular pieces (Keith Whitwell)
- - 100% OpenGL 1.2 conformance (passes all conformance tests)
- - new AA line algorithm
- - GL_EXT_convolution extension
- - GL_ARB_imaging subset
- - OSMesaCreateContextExt() function
- - GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
- - GL_MAX_TEXTURE_UNITS_ARB now defaults to eight
- - GL_EXT_fog_coord extension (Keith Whitwell)
- - GL_EXT_secondary_color extension (Keith Whitwell)
- - GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
- - GL_SGIX_depth_texture extension
- - GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions
- - demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow
- - GL_ARB_texture_env_combine extension
- - GL_ARB_texture_env_dot3 extension
- - GL_ARB_texture_border_clamp (aka GL_SGIS_texture_border_clamp)
- - OSMesaCreateContextExt() function
- - libOSMesa.so library, contains the OSMesa driver interface
- - GL/glxext.h header file for GLX extensions
- - somewhat faster software texturing, fogging, depth testing
- - all color-index conformance tests now pass (only 8bpp tested)
- - SPARC assembly language TCL optimizations (David Miller)
- - GL_SGIS_generate_mipmap extension
- Bug Fixes:
- - fbiRev and tmuRev were unitialized when using Glide3
- - fixed a few color index mode conformance failures; all pass now
- - now appling antialiasing coverage to alpha after texturing
- - colors weren't getting clamped to [0,1] before color table lookup
- - fixed RISC alignment errors caused by COPY_4UBV macro
- - drawing wide, flat-shaded lines could cause a segfault
- - vertices now snapped to 1/16 pixel to fix rendering of tiny triangles
- Changes:
- - SGI's Sample Implementation (SI) 1.3 GLU library replaces Mesa GLU
- - new libOSMesa.so library, contains the OSMesa driver interface
-
-
-4.0 October 22, 2001
- New:
- - Mesa 4.0 implements the OpenGL 1.3 specification
- - GL_IBM_rasterpos_clip extension
- - GL_EXT_texture_edge_clamp extension (aka GL_SGIS_texture_edge_clamp)
- - GL_ARB_texture_mirrored_repeat extension
- - WindML UGL driver (Stephane Raimbault)
- - added OSMESA_MAX_WIDTH/HEIGHT queries
- - attempted compiliation fixes for Solaris 5, 7 and 8
- - updated glext.h and glxext.h files
- - updated Windows driver (Karl Schultz)
- Bug fixes:
- - added some missing GLX 1.3 tokens to include/GL/glx.h
- - GL_COLOR_MATRIX changes weren't recognized by teximage functions
- - glCopyPixels with scale and bias was broken
- - glRasterPos with lighting could segfault
- - glDeleteTextures could leave a dangling pointer
- - Proxy textures for cube maps didn't work
- - fixed a number of 16-bit color channel bugs
- - fixed a few minor memory leaks
- - GLX context sharing was broken in 3.5
- - fixed state-update bugs in glPopClientAttrib()
- - fixed glDrawRangeElements() bug
- - fixed a glPush/PopAttrib() bug related to texture binding
- - flat-shaded, textured lines were broken
- - fixed a dangling pointer problem in the XMesa code (Chris Burghart)
- - lighting didn't always produce the correct alpha value
- - fixed 3DNow! code to not read past end of arrays (Andrew Lewycky)
-
-
-4.0.1 December 17, 2001
- New:
- - better sub-pixel sample positions for AA triangles (Ray Tice)
- - slightly faster blending for (GL_ZERO, GL_ONE) and (GL_ONE, GL_ZERO)
- Bug fixes:
- - added missing break statements in glGet*() for multisample cases
- - fixed uninitialized hash table mutex bug (display lists / texobjs)
- - fixed bad teximage error check conditional (bug 476846)
- - fixed demos readtex.c compilation problem on Windows (Karl Schultz)
- - added missing glGet() query for GL_MAX_TEXTURE_LOD_BIAS_EXT
- - silence some compiler warnings (gcc 2.96)
- - enable the #define GL_VERSION_1_3 in GL/gl.h
- - added GL 1.3 and GLX 1.4 entries to gl_mangle.h and glx_mangle.h
- - fixed glu.h typedef problem found with MSDev 6.0
- - build libGL.so with -Bsymbolic (fixes bug found with Chromium)
- - added missing 'const' to glXGetContextIDEXT() in glxext.h
- - fixed a few glXGetProcAddress() errors (texture compression, etc)
- - fixed start index bug in compiled vertex arrays (Keith)
- - fixed compilation problems in src/SPARC/glapi_sparc.S
- - fixed triangle strip "parity" bug found in VTK medical1 demo (Keith)
- - use glXGetProcAddressARB in GLUT to avoid extension linking problems
- - provoking vertex of flat-shaded, color-index triangles was wrong
- - fixed a few display list bugs (GLUT walker, molecule, etc) (Keith)
- - glTexParameter didn't flush the vertex buffer (Ray Tice)
- - feedback attributes for glDraw/CopyPixels and glBitmap were wrong
- - fixed bug in normal length caching (ParaView lighting bug)
- - fixed separate_specular color bug found in Chimera (18 Dec 2001)
-
-
-4.0.2 April 2, 2002
- New:
- - New DOS (DJGPP) driver written by Daniel Borca
- - New driver interface functions for TCL drivers (such as Radeon DRI)
- - GL_RENDERER string returns "Mesa Offscreen16" or "Mesa Offscreen32"
- if using deep color channels
- - latest GL/glext.h and GL/glxext.h headers from SGI
- Bug fixes:
- - GL_BLEND with non-black texture env color wasn't always correct
- - GL_REPLACE with GL_RGB texture format wasn't always correct (alpha)
- - glTexEnviv( pname != GL_TEXTURE_ENV_COLOR ) was broken
- - glReadPixels was sometimes mistakenly clipped by the scissor box
- - glDraw/ReadPixels didn't catch all the errors that they should have
- - Fixed 24bpp rendering problem in Windows driver (Karl Schultz)
- - 16-bit GLchan mode fixes (m_trans_tmp.h, s_triangle.c)
- - Fixed 1-bit float->int conversion bug in glDrawPixels(GL_DEPTH_COMP)
- - glColorMask as sometimes effecting glXSwapBuffers()
- - fixed a potential bug in XMesaGarbageCollect()
- - N threads rendering into one window didn't work reliably
- - glCopyPixels didn't work for deep color channels
- - improved 8 -> 16bit/channel texture image conversion (Gerk Huisma)
- - glPopAttrib() didn't correctly restore user clip planes
- - user clip planes failed for some perspective projections (Chromium)
- Known bugs:
- - mipmap LOD computation
-
-
-4.0.3 June 25, 2002
- New:
- - updated GL/glext.h file (version 15)
- - corrected MMX blend code (Jose Fonseca)
- - support for software-based alpha planes in Windows driver
- - updated GGI driver (Filip Spacek)
- Bug fixes:
- - glext.h had wrong values for GL_DOT3_RGB[A]_EXT tokens
- - OSMesaMakeCurrent() didn't recognize buffer size changes
- - assorted conformance fixes for 16-bit/channel rendering
- - texcombine alpha subtraction mode was broken
- - fixed lighting bug with non-uniform scaling and display lists
- - fixed bug when deleting shared display lists
- - disabled SPARC cliptest assembly code (Mesa bug 544665)
- - fixed a couple Solaris compilation/link problems
- - blending clipped glDrawPixels didn't always work
- - glGetTexImage() didn't accept packed pixel types
- - glPixelMapu[is]v() could explode given too large of pixelmap
- - glGetTexParameter[if]v() didn't accept GL_TEXTURE_MAX_ANISOTROPY_EXT
- - glXCopyContext() could lead to segfaults
- - glCullFace(GL_FRONT_AND_BACK) didn't work (bug 572665)
- Changes:
- - lots of C++ (g++) code clean-ups
- - lots of T&L updates for the Radeon DRI driver
- Known bugs:
- - mipmap LOD computation (fixed for Mesa 4.1)
-
-
-4.0.4 October 3, 2002
- New:
- - GL_NV_texture_rectangle extension
- - updated glext.h header (version 17)
- - updated DOS driver (Daniel Borca)
- - updated BeOS R5 driver (Philippe Houdoin)
- - added GL_IBM_texture_mirror_repeat
- - glxinfo now takes -l option to print interesting OpenGL limits info
- - GL_MESA_ycbcr_texture extension
- - GL_APPLE_client_storage extension (for some DRI drivers only)
- - GL_MESA_pack_invert extension
- Bug fixes:
- - fixed GL_LINEAR fog bug by adding clamping
- - fixed FP exceptions found using Alpha CPU
- - 3dfx MESA_GLX_FX=window (render to window) didn't work
- - fixed memory leak in wglCreateContest (Karl Schultz)
- - define GLAPIENTRY and GLAPI if undefined in glu.h
- - wglGetProcAddress didn't handle all API functions
- - when testing for OpenGL 1.2 vs 1.3, check for GL_ARB_texture_cube_map
- - removed GL_MAX_CONVOLUTION_WIDTH/HEIGHT from glGetInteger/Float/etc()
- - error checking in compressed tex image functions had some glitches
- - fixed AIX compile problem in src/config.c
- - glGetTexImage was using pixel unpacking instead of packing params
- - auto-mipmap generation for cube maps was incorrect
- Changes:
- - max texture units reduced to six to accomodate texture rectangles
- - removed unfinished GL_MESA_sprite_point extension code
-
-
-4.1 October 29, 2002
- New:
- - GL_NV_vertex_program extension
- - GL_NV_vertex_program1_1 extension
- - GL_ARB_window_pos extension
- - GL_ARB_depth_texture extension
- - GL_ARB_shadow extension
- - GL_ARB_shadow_ambient extension
- - GL_EXT_shadow_funcs extension
- - GL_ARB_point_parameters extension
- - GL_ARB_texture_env_crossbar
- - GL_NV_point_sprite extension
- - GL_NV_texture_rectangle extension
- - GL_EXT_multi_draw_arrays extension
- - GL_EXT_stencil_two_side extension
- - GLX_SGIX_fbconfig and GLX_SGIX_pbuffer extensions
- - GL_ATI_texture_mirror_once extension (Ian Romanick)
- - massive overhaul/simplification of software rasterizer module,
- many contributions from Klaus Niederkrueger
- - faster software texturing in some cases (i.e. trilinear filtering)
- - new OSMesaGetProcAddress() function
- - more blend modes implemented with MMX code (Jose Fonseca)
- - added glutGetProcAddress() to GLUT
- - added GLUT_FPS env var to compute frames/second in glutSwapBuffers()
- - pbinfo and pbdemo PBuffer programs
- - glxinfo -v prints transprent pixel info (Gerd Sussner)
- Bug fixes:
- - better mipmap LOD computation (prevents excessive blurriness)
- - OSMesaMakeCurrent() didn't recognize buffer size changes
- - assorted conformance fixes for 16-bit/channel rendering
- - texcombine alpha subtraction mode was broken
- - fixed some blend problems when GLchan==GLfloat (Gerk Huisma)
- - clamp colors to [0,inf] in OSMesa if GLchan==GLfloat (Gerk Huisma)
- - fixed divide by zero error in NURBS tessellator (Jon Perry)
- - fixed GL_LINEAR fog bug by adding clamping
- - fixed FP exceptions found using Alpha CPU
- - 3dfx/glide driver render-to-window feature was broken
- - added missing GLX_TRANSPARENT_RGB token to glx.h
- - fixed error checking related to paletted textures
- - fixed reference count error in glDeleteTextures (Randy Fayan)
- Changes:
- - New spec file and Python code to generate some GL dispatch files
- - Glide driver defaults to "no" with autoconf/automake
- - updated demos/stex3d with new options
-
-
-5.0 November 13, 2002
- New:
- - OpenGL 1.4 support (glGetString(GL_VERSION) returns "1.4")
- - removed some overlooked debugging code
- - glxinfo updated to support GLX_ARB_multisample
- - GLUT now support GLX_ARB_multisample
- - updated DOS driver (Daniel Borca)
- Bug fixes:
- - GL_POINT and GL_LINE-mode polygons didn't obey cull state
- - fixed potential bug in _mesa_align_malloc/calloc()
- - fixed missing triangle bug when running vertex programs
- - fixed a few HPUX compilation problems
- - FX (Glide) driver didn't compile
- - setting GL_TEXTURE_BORDER_COLOR with glTexParameteriv() didn't work
- - a few EXT functions, like glGenTexturesEXT, were no-ops
- - a few OpenGL 1.4 functions like glFogCoord*, glBlendFuncSeparate,
- glMultiDrawArrays and glMultiDrawElements were missing
- - glGet*(GL_ACTIVE_STENCIL_FACE_EXT) was broken
- - Pentium 4 Mobile was mistakenly identified as having 3DNow!
- - fixed one-bit error in point/line fragment Z calculation
- - fixed potential segfault in fakeglx code
- - fixed color overflow problem in DOT3 texture env mode
-
-
-5.0.1 March 30, 2003
- New:
- - DOS driver updates from Daniel Borca
- - updated GL/gl_mangle.h file (Bill Hoffman)
- Bug fixes:
- - auto mipmap generation for cube maps was broken (bug 641363)
- - writing/clearing software alpha channels was unreliable
- - minor compilation fixes for OS/2 (Evgeny Kotsuba)
- - fixed some bad assertions found with shadowtex demo
- - fixed error checking bug in glCopyTexSubImage2D (bug 659020)
- - glRotate(angle, -x, 0, 0) was incorrect (bug 659677)
- - fixed potential segfault in texture object validation (bug 659012)
- - fixed some bogus code in _mesa_test_os_sse_exception_support (Linus)
- - fix fog stride bug in tnl code for h/w drivers (Michel Danzer)
- - fixed glActiveTexture / glMatrixMode(GL_TEXTURE) bug (#669080)
- - glGet(GL_CURRENT_SECONDARY_COLOR) should return 4 values, not 3
- - fixed compilation problem on Solaris7/x86 (bug 536406)
- - fixed prefetch bug in 3DNow! code (Felix Kuhling)
- - fixed NeXT build problem (FABSF macro)
- - glDrawPixels Z values when glPixelZoom!=1 were invalid (bug 687811)
- - zoomed glDraw/CopyPixels with clipping sometimes failed (bug 689964)
- - AA line and triangle Z values are now rounded, not truncated
- - fixed color interpolation bug when GLchan==GLfloat (bug 694461)
- - glArePrograms/TexturesResident() wasn't 100% correct (Jose Fonseca)
- - fixed a minor GL_COLOR_MATERIAL bug
- - NV vertex program EXP instruction was broken
- - glColorMask misbehaved with X window / pixmap rendering
- - fix autoconf/libtool GLU C++ linker problem on Linux (a total hack)
- - attempt to fix GGI compilation problem when MesaDemos not present
- - NV vertex program ARL-relative fetches didn't work
- Changes:
- - use glPolygonOffset in gloss demo to avoid z-fighting artifacts
- - updated winpos and pointblast demos to use ARB extensions
- - disable SPARC normal transformation code (bug 673938)
- - GLU fixes for OS/2 (Evgeny Kotsuba)
-
-
-5.0.2 September 5, 2003
- Bug fixes:
- - fixed texgen problem causing texcoord's Q to be zero (stex3d)
- - default GL_TEXTURE_COMPARE_MODE_ARB was wrong
- - GL_CURRENT_MATRIX_NV query was wrong
- - GL_CURRENT_MATRIX_STACK_DEPTH_NV query was off by one
- - GL_LIST_MODE query wasn't correct
- - GL_FOG_COORDINATE_SOURCE_EXT query wasn't supported
- - GL_SECONDARY_COLOR_ARRAY_SIZE_EXT query returned wrong value
- - blended, wide lines didn't always work correctly (bug 711595)
- - glVertexAttrib4svNV w component was always 1
- - fixed bug in GL_IBM_rasterpos_clip (missing return)
- - GL_DEPTH_TEXTURE_MODE = GL_ALPHA didn't work correctly
- - a few Solaris compilation fixes
- - fixed glClear() problem for DRI drivers (non-existant stencil, etc)
- - fixed int/REAL mixup in GLU NURBS curve evaluator (Eric Cazeaux)
- - fixed delete [] bug in SI GLU (bug 721765) (Diego Santa Cruz)
- - glFog() didn't clamp fog colors
- - fixed bad float/int conversion for GL_TEXTURE_PRIORITY in the
- gl[Get]TexParameteri[v] functions
- - fixed invalid memory references in glTexGen functions (bug 781602)
- - integer-valued color arrays weren't handled correctly
- - glDrawPixels(GL_DEPTH_COMPONENT) with glPixelZoom didn't work
- - GL_EXT_texture_lod_bias is part of 1.4, overlooked in 5.0.1
- Changes:
- - build GLUT with -fexceptions so C++ apps propogate exceptions
-
-
-5.1 December 17, 2003
- New:
- - reorganized directory tree
- - GL_ARB_vertex/fragment_program extensions (Michal Krol & Karl Rasche)
- - GL_ATI_texture_env_combine3 extension (Ian Romanick)
- - GL_SGI_texture_color_table extension (Eric Plante)
- - GL_NV_fragment_program extension
- - GL_NV_light_max_exponent extension
- - GL_EXT_texture_rectangle (identical to GL_NV_texture_rectangle)
- - GL_ARB_occlusion_query extension
- - GL_ARB_point_sprite extension
- - GL_ARB_texture_non_power_of_two extension
- - GL_IBM_multimode_draw_arrays extension
- - GL_EXT_texture_mirror_clamp extension (Ian Romanick)
- - GL_ARB_vertex_buffer_object extension
- - new X86 feature detection code (Petr Sebor)
- - less memory used for display lists and vertex buffers
- - demo of per-pixel lighting with a fragment program (demos/fplight.c)
- - new version (18) of glext.h header
- - new spriteblast.c demo of GL_ARB_point_sprite
- - faster glDrawPixels in X11 driver in some cases (see RELNOTES-5.1)
- - faster glCopyPixels in X11 driver in some cases (see RELNOTES-5.1)
- Bug fixes:
- - really enable OpenGL 1.4 features in DOS driver.
- - fixed issues in glDrawPixels and glCopyPixels for very wide images
- - glPixelMapf/ui/usv()'s size parameter is GLsizei, not GLint
- - fixed some texgen bugs reported by Daniel Borca
- - fixed wglMakeCurrent(NULL, NULL) bug (#835861)
- - fixed glTexSubImage3D z-offset bug (Cedric Gautier)
- - fixed RGBA blend enable bug (Ville Syrjala)
- - glAccum is supposed to be a no-op in selection/feedback mode
- - fixed texgen bug #597589 (John Popplewell)
- Changes:
- - dropped API trace feature (src/Trace/)
- - documentation overhaul. merged with website content. more html.
- - glxgears.c demo updated to use GLX swap rate extensions
- - glTexImage1/2/3D now allows width/height/depth = 0
- - disable SPARC asm code on Linux (bug 852204)
-
-
-6.0 January 16, 2004
- New:
- - full OpenGL 1.5 support
- - updated GL/glext.h file to version 21
- Changes:
- - changed max framebuffer size to 4Kx4K (MAX_WIDTH/HEIGHT in config.h)
- Bug fixes:
- - fixed bug in UNCLAMPED_FLOAT_TO_UBYTE macro; solves a color
- clamping issue
- - updated suno5-gcc configs
- - glColor3 functions sometimes resulted in undefined alpha values
- - fixed FP divide by zero error seen on VMS with xlockmore, others
- - fixed vertex/fragment program debug problem (bug 873011)
- - building on AIX with gcc works now
- - glDeleteProgramsARB failed for ARB fragment programs (bug 876160)
- - glDrawRangeElements tried to modify potentially read-only storage
- - updated files for building on Windows
-
-
-6.0.1 April 2, 2004
- New:
- - upgraded glext.h to version 22
- - new build targets (Dan Schikore)
- - new linux-x86-opteron build target (Heath Feather)
- Bug fixes:
- - glBindProgramARB didn't update all necessary state
- - fixed build problems on OpenBSD
- - omit CVS directories from tarballs
- - glGetTexImage(GL_COLOR_INDEX) was broken
- - fixed an infinite loop in t&l module
- - silenced some valgrind warnings about using unitialized memory
- - fixed some compilation/link glitches on IRIX (Mike Stephens)
- - glBindProgram wasn't getting compiled into display lists
- - GLX_FBCONFIG_ID wasn't recognized in glXChooseFBConfig() (bug 888079)
- - two-sided lighting and vertex program didn't work (bug 887330)
- - stores to program parameter registers in vertex state programs
- didn't work.
- - fixed glOrtho bug found with gcc 3.2.2 (RH9)
- - glXCreateWindow() wasn't fully implemented (bug 890894)
- - generic vertex attribute arrays didn't work in display lists
- - vertex buffer objects' default usage and access fields were wrong
- - glDrawArrays with start!=0 was broken
- - fragment program PK2H, UP2H, UP4B and UP4UB instructions were broken
- - linux-osmesa16-static config didn't work
- - fixed a few color index rendering problems (bug 910687)
- - glInterleavedArrays didn't respect GL_CLIENT_ACTIVE_TEXTURE
- - OSMesa RGB and BGR modes were broken
- - glProgramStringARB mistakenly required a null-terminated string
- - fragment program XPD instruction was incorrect
- - glGetMaterial() didn't work reliably
- - ARB_fragment_program KIL instruction was incorrect
-
-
-6.1 August 18, 2004
- New:
- - Revamped Makefile system
- - glXUseRotatedXFont() utility (see xdemos/xuserotfont.c)
- - internal driver interface changes related to texture object
- allocation, vertex/fragment programs, BlendEquationSeparate, etc.
- - option to walk triangle edges with double-precision floats
- (Justin Novosad of Discreet) (see config.h file)
- - support for AUX buffers in software GLX driver
- - updated glext.h to version 24 and glxext.h to version 6
- - new MESA_GLX_FORCE_ALPHA and MESA_GLX_DEPTH_BITS env vars
- - updated BeOS support (Philippe Houdoin)
- Changes:
- - fragment fog interpolation is perspective corrected now
- - new glTexImage code, much cleaner, may be a bit faster
- Bug fixes:
- - glArrayElement in display lists didn't handle generic vertex attribs
- - glFogCoord didn't always work properly
- - ARB_fragment_program fog options didn't work
- - frag prog TEX instruction no longer incorrectly divides s,t,r by q
- - ARB frag prog TEX and TEXP instructions now use LOD=0
- - glTexEnviv in display lists didn't work
- - glRasterPos didn't do texgen or apply texture matrix
- - GL_DOUBLE-valued vertex arrays were broken in some cases
- - fixed texture rectangle edge/border sampling bugs
- - sampling an incomplete texture in a fragment program would segfault
- - glTexImage was missing a few error checks
- - fixed some minor glGetTexParameter glitches
- - GL_INTENSITY was mistakenly accepted as a <format> to glTexImage
- - fragment program writes to RC/HC register were broken
- - fixed a few glitches in GL_HP_occlusion_test extension
- - glBeginQueryARB and glEndQueryARB didn't work inside display lists
- - vertex program state references were broken
- - fixed triangle color interpolation bug on AIX (Shane Blackett)
- - fixed a number of minor memory leaks (bug #1002030)
-
-
-6.2 October 2, 2004
- New:
- - enabled GL_ARB_texture_rectangle (same as GL_NV_texture_rectangle)
- - updated Doxygen support (Jose Fonseca)
- Changes:
- - some GGI driver updates (Christoph Egger, bug 1025977)
- Bug fixes:
- - Omit GL_ARB_texture_non_power_of_two from list of OpenGL 1.5 features
- - fixed a few compilation issues on IRIX
- - fixed a matrix classification bug (reported by Wes Bethel)
- - we weren't reseting the vertex/fragment program error state
- before parsing (Dave Reveman)
- - adjust texcoords for sampling texture rectangles (Dave Reveman)
- - glGet*(GL_MAX_VERTEX_ATTRIBS_ARB) wasn't implemented
- - repeated calls to glDeleteTexture(t) could lead to a crash
- - fixed potential ref count bugs in VBOs and vertex/fragment programs
- - spriteblast demo didn't handle window size changes correctly
- - glTexSubImage didn't handle pixels=NULL correctly for PBOs
- - fixed color index mode glDrawPixels bug (Karl Schultz)
-
-
-6.2.1 December 9, 2004
- Bug fixes:
- - don't apply regular fog or color sum when using a fragment program
- - glProgramEnvParameter4fARB always generated an error on
- GL_FRAGMENT_PROGRAM_ARB (fdo bug 1645)
- - glVertexAttrib3svNV and glVertexAttrib3svARB were broken
- - fixed width/height mix-up in glSeparableFilter2D()
- - fixed regression in glCopyPixels + convolution
- - glReadPixels from a clipped front color buffer didn't always work
- - glTexImage didn't accept GL_RED/GREEN/BLUE as the format
- - Attempting queries/accesses of VBO 0 weren't detected as errors
- - paletted textures failed if the palette had fewer than 256 entries
- Changes:
- - fixed a bunch of compiler warnings found with gcc 3.4
- - bug reports should to go bugzilla.freedesktop.org
-
-
-6.3 July 20, 2005
- New:
- - GL_EXT_framebuffer_object extension
- - GL_ARB_draw_buffers extension
- - GL_ARB_pixel_buffer_object extension
- - GL_OES_read_format extension (Ian Romanick)
- - DirectFB driver (Claudio Ciccani)
- - x86_64 vertex transformation code (Mikko T.)
- - Updated GL/glext.h to version 29
- Changes:
- - added -stereo option for glxgears demo (Jacek Rosik)
- - updated the PBuffer demo code in xdemos/ directory
- - glDeleteTextures/Programs/Buffers() now makes the object ID
- available for immediate re-use
- - assorted 64-bit clean-ups fixes (x86_64 and Win64)
- - lots of internal changes for GL_EXT_framebuffer_object
- Bug fixes:
- - some functions didn't support PBO functionality
- - glGetTexImage didn't convert color index images to RGBA as required
- - fragment program texcoords were sometimes wrong for points and lines
- - fixed problem with negative dot product in arbfplight, fplight demos
- - fixed bug in perspective correction of antialiased, textured lines
- - querying GL_POST_CONVOLUTION_ALPHA_BIAS_EXT returned wrong value
- - fixed a couple per-pixel fog bugs (Soju Matsumoto)
- - glGetBooleanv(GL_FRAGMENT_PROGRAM_BINDING_NV) was broken
- - fixed float parsing bug in ARB frag/vert programs (bug 2520)
- - XMesaGetDepthBuffer() returned incorrect value for bytesPerValue
- - GL_COLOR_MATERIAL with glColor3 didn't properly set diffuse alpha
- - glXChooseFBConfig() crashed if attribList pointer was NULL
- - program state.light[n].spot.direction.w was wrong value (bug 3083)
- - fragment program fog option required glEnable(GL_FOG) - wrong.
- - glColorTable() could produce a Mesa implementation error (bug 3135)
- - RasterPos could get corrupted by color index rendering path
- - Removed bad XTranslateCoordinates call when rendering to Pixmaps
- - glPopAttrib() didn't properly restore GL_TEXTURE_GEN enable state
- - fixed a few Darwin compilation problems
-
-
-6.3.1
- This was an intermediate release for X.org which wasn't otherwise released.
-
-
-6.3.2 August 19, 2005
- New:
- - The distribution now includes the DRI drivers and GLX code
- Changes:
- - Made the DRI "new" driver interface standard, remove old code
- Bug fixes:
- - GL_ARB_vertex/fragment_shader were mistakenly listed in the
- extensions string
- - negative relative addressing in vertex programs was broken
- - update/fix SPARC assembly code for vertex transformation
- - fixed memory leak when freeing GLX drawables/renderbuffers
- - fixed display list memory leak
- - the GL_PIXEL_MAP_I_TO_I table is now floating point, not integer
- - wglGetProcAddress() didn't handle wgl-functions
- - fixed glxext.h cross-compile issue (Colin Harrison)
- - assorted DRI driver fixes
-
-
-6.4 October 24, 2005
- New:
- - Added a fast XOR line drawing function in Xlib driver
- - Added support for GL_ARB_texture_mirrored_repeat to savage
- driver (supported only on Savage4 hardware).
- Changes:
- - Mesa now packaged in three parts: Library, Demos and GLUT
- Bug fixes:
- - GLX_X_RENDERABLE token wasn't accepted by glXChooseFBConfig
- - Some files were present multiple times in the 6.3.2 tarballs
- - r200_vtxtmp_x86.S file was missing from 6.3.2 tarball (bug 4207)
- - glxgears_fbconfig demo didn't work (bug 4237)
- - fixed bug when bilinear sampling 2d textures with borders
- - glXCreatePbuffer() could segfault instead of returning 0 (bug 4235)
- - fixed undefined frexp and rand in X.org libGLcore.a (bug 4242)
- - fixed a few problems with proxy color tables (bug 4270)
- - fixed precision problem in Z clearing (bug 4395)
- - glBitmap, glDraw/CopyPixels mistakenly generated selection hits
- - fixed potential segfault caused by reading pixels outside
- of renderbuffer bounds
- - glGetTexLevelParameter didn't accept GL_TEXTURE_DEPTH_SIZE_ARB
- - fixed memory corruption bug involving software alpha buffers
- - glReadPixels clipped by window bounds was sometimes broken
- - glDraw/CopyPixels of stencil data ignored the stencil write mask
- - glReadPixels from a texture bound to a framebuffer object didn't work
- - glIsRender/FramebufferEXT weren't totally correct
- - fixed a number of point size attenuation/fade bugs
- - fixed glFogCoord bug 4729
- - GLX encoding for transpose matrix functions was broken
- - fixed broken fragment program KIL and SWZ instructions
- - fragment programs that wrote result.depth.z didn't work
-
-
-6.4.1 November 30, 2005
- Bug fixes:
- - redefining a vertex program string didn't take effect in TNL module
- - fixed occasional segfault upon vertex/fragment parsing error
- - vertex program LIT instruction didn't handle 0^0=1 correctly
- - fragment program fog option didn't work with glDrawPixels, glBitmap
- - USE_MGL_NAMESPACE didn't work for x86-64
- - OSMesa demos were missing from previous release tarballs
- - fixed problem with float->ushort conversion in glClear (bug 4992)
- - popping of GL_EYE_PLANE texgen state was broken (bug 4996)
- - popping of GL_SPOT_DIRECTION light state was broken (bug 5005)
- - fixed occasional triangle color interpolation problem on VMS
- - work around invalid free() call (bug 5131)
- - fixed BSD X server compilation problem by including stdint.h
-
-
-6.4.2 February 2, 2006
- New:
- - added OSMesaColorClamp() function/feature
- - added wglGetExtensionStringARB() function
- Bug fixes:
- - fixed some problems when building on Windows
- - GLw header files weren't installed by installmesa script (bug 5396)
- - GL/glfbdev.h file was missing from tarballs
- - fixed TNL initialization bug which could lead to crash (bug 5791)
-
-
-6.5 March 31, 2006
- New:
- - OpenGL Shading Language support through GL_ARB_shader_objects,
- GL_ARB_shading_language_100, GL_ARB_vertex_shader and
- GL_ARB_fragment_shader (done by Michal Krol)
- - GL_EXT_packed_depth_stencil extension
- - GL_EXT_timer_query extension
- - GL_EXT_framebuffer_blit extension
- - GL_ARB_half_float_pixel
- - reflect demo improved to support multiple windows
- - singlebuffer demo (shows no/little-flicker single-buffered rendering)
- - r200: enable GL_ARB_texture_env_crossbar, separate the texture
- sampling unit bits from the texture env combine enable bits
- - r200: add support for GL_ATI_fragment_shader
- - added fast XOR-mode line drawing optimization
- - radeon: add support for all 3 tmus, GL_ARB_texture_cube_map
- and GL_EXT_fog_coord
- - MESA_GLX_ALPHA_BITS env var for xlib driver
- - many DRI driver updates (including screen rotation support
- for the Intel DRI driver)
- Changes:
- - removed GL_HP_occlusion_test (use GL_ARB_occlusion_query instead)
- - removed GL_SGIX/SGIS_pixel_texture extensions
- Bug fixes:
- - fixed glxcontextmodes.c datatype problem (bug 5835)
- - fixed aix-gcc build/install bugs (bug 5874)
- - fixed some bugs in texture env program generation
- - glXCopyContext() didn't handle texture object bindings properly
- - glXCopyContext() didn't copy all lighting state
- - fixed FreeBSD config (Pedro Giffuni)
- - fixed some minor framebuffer object bugs
- - replaced dprintf() with _glu_printf() in GLU (bug 6244)
- - fixed a number of thread safety bugs/regressions
- - fixed a number of GLU tesselator bugs (John Shell, bug 6339)
- - paletted texturing was broken w/ floating point palettes (K. Schultz)
- - lots of assorted framebuffer object bug fixes
-
-6.5.1 August 31, 2006
- New:
- - Intel i965 DRI driver
- - GL_APPLE_vertex_array_object extension (Ian Romanick)
- - GL_EXT_texture_sRGB extension
- - GL_EXT_gpu_program_parameters (Ian Romanick)
- - "engine" demo
- - updated fbdev driver and GLUT for fbdev (Sean D'Epagnier)
- - many updates to the DRI drivers
- Changes:
- - The glVertexAttribARB functions no longer alias the conventional
- vertex attributes.
- - glxinfo program prints more info with -l option
- - GL_FRAGMENT_PROGRAM_NV and GL_FRAGMENT_PROGRAM_ARB are now
- compatible, in terms of glBindProgramARB()
- Bug fixes:
- - fixed broken texture border handling for depth textures (bug 6498)
- - removed the test for duplicated framebuffer attachments, per
- version 117 of the GL_EXT_framebuffer_object specification
- - fixed a few render-to-texture bugs, including render to depth texture
- - clipping of lines against user-defined clip planes was broken (6512)
- - assembly language dispatch for SPARC was broken (bug 6484)
- - assorted compilation fixes on various Unix platforms (Dan Schikore)
- - glPopAttrib could restore an invalid value for GL_DRAW_BUFFER
- - assorted minor fixes for 16 and 32 bit/channel modes
- - fixed assorted bugs in texture compression paths
- - fixed indirect rendering vertex array crashes (bug 6863)
- - glDrawPixels GL_INDEX_OFFSET didn't always work
- - fixed convolution memory leak (bug 7077)
- - rectangular depth textures didn't work
- - invalid mode to glBegin didn't generate an error (bug 7142)
- - 'normalized' parameter to glVertexAttribPointerARB didn't work
- - disable bogus GLX_SGI_video_sync extension in xlib driver
- - fixed R128 driver locking bug (Martijn van Oosterhout)
- - using evaluators with vertex programs caused crashes (bug 7564)
- - fragment.position wasn't set correctly for point/line primitives
- - fixed parser bug for scalar sources for GL_NV_fragment_program
- - max fragment program length was incorrectly 128, now 1024
- - writes to result.depth in fragment programs weren't clamped to [0,1]
- - fixed potential dangling pointer bug in glBindProgram()
- - fixed some memory leaks (and potential crashes) in Xlib driver
+
+
+Mesa Version History
+====================
+
+1.0 beta February 1995
+ Initial release
+
+1.1 beta March 4, 1995
+ Changes:
+ faster point and line drawing (2x faster)
+ more systems supported, better Makefiles
+ Renamed lib*.a files to avoid collisions
+ many small bug fixes
+ New:
+ pseudo-GLX functions added
+ new implementation of evaluators (eval2.c)
+ GLUT support
+
+1.1.1 beta March 7, 1995
+ Changes:
+ Reverted from eval2.c to eval.c due to FPE on Linux
+ more speed improvements
+ more Makefile changes
+
+1.1.2 beta March 14, 1995
+ New:
+ implementation of SGI's blending extensions
+ glXUseXFont implemented
+ added MESA_DEBUG environment variable support
+ Changes:
+ Using eval2.c again
+ more FPE-prevention checks (0-length normals are OK)
+ a few small bug fixes
+ much faster pixel logic ops!
+ faster transformation arithmetic
+
+1.1.3 beta March 31, 1995
+ New:
+ gluScaleImage() and gluBuild2DMipMaps() implemented
+ Mesa widgets for Xt/Motif
+ blendEXT demos
+ added environment variables for selecting visuals
+ Changes:
+ almost all GLUT demos work correctly now
+ faster X device driver functions
+ more bug fixes
+
+1.1.4 beta April 20, 1995
+ Bug fixes:
+ - missing #define SEEK_SET in src-tk/image.c
+ - compile glShadeModel into display lists
+ - fixed pow() domain error in src/light.c
+ - fixed "flickering bitmaps" in double buffer mode
+ - fixed tk.h and aux.h for C++
+ - state of LIGHT_MODEL_LOCAL_VIEWER was inverted
+ New features:
+ - MUCH, MUCH nicer dithering in 8-bit RGB mode
+ - updated widgets and widget demos
+ - Implemented GLXPixmap functions
+ - Added GLU 1.1 and GLX 1.1 functions
+ - Changed the X/Mesa interface API, more versatile
+ - Implemented gluPartialDisk()
+
+1.2 May 22, 1995
+ Bug fixes:
+ - IRIX 4.x makefile problem
+ - modified tk to share root colormap as needed
+ - gluLookAt normalization problem
+ - suppress Expose, NoExpose events in swapbuffers
+ - glBitmap() and glDrawPixels() clipping
+ New features:
+ - GL_BLEND, GL_MODULATE, GL_DECAL, and GL_REPLACE_EXT texture
+ modes implemented
+ - texture maps stored more efficiently
+ - texture maps can be compiled into display lists
+ - Bogdan Sikorski's GLU polygon tesselation code
+ - Linas Vepstas's sweep and extrusion library
+ - glXCreateContext()'s shareList parameter works as it's supposed to.
+ XMesaCreateContext() updated to accept a shareList parameter too.
+ - Mesa can be compiled with real OpenGL .h files
+ - MESA_BACK_BUFFER environment variable
+ - better GLX error checking
+
+1.2.1 June 22, 1995
+ Bug fixes:
+ - X/Mesa double buffer window resize crash
+ - widgets now pass PointerMotion events
+ - X/Mesa incorrect default clear color and drawing color
+ - more robust X MIT-SHM support in X/Mesa
+ - glTexImage( format=GL_LUMINANCE ) didn't work
+ - GL_LINE mode polygons with line width > 1.0 could cause a crash
+ - numerous feedback bugs
+ - glReadPixels() from depth buffer was wrong
+ - error prone depth and stencil buffer allocation
+ New features:
+ - Preliminary Microsoft Windows driver
+ - Implemented a number of missing functions: glEvalCoord[12][df]v(),
+ glGet...(), etc.
+ - Added a few missing symbols to gl.h and glu.h
+ - Faster rendering of smooth-shaded, RGBA, depth-buffered polygons.
+ - Faster rendering of lines when width=2.0
+ - Stencil-related functions now work in display lists
+ Changes:
+ - renamed aux.h as glaux.h (MS-DOS names can't start with aux)
+ - most filenames are in 8.3 format to accomodate MS-DOS
+ - use GLubytes to store arrays of colors instead of GLints
+
+1.2.2 August 2, 1995
+ New features:
+ - texture mapped points and lines
+ - NURBS! (but not 100% complete)
+ - viewports may safely extend beyond window boundaries
+ - MESA_PRIVATE_CMAP environment variable
+ - Grayscale X display support
+ - two new demos: demos/gears.c and demos/shadow.c
+ - MachTen for Macintosh configuration
+ Bug fixes:
+ - glGet*(GL_DEPTH_BITS) returned bytes, not bits
+ - point, line, and bitmap rasterization suffered from roundoff errors
+ - fixed a division by zero error in line clippping
+ - occasional wrong default background color really fixed!
+ - glDepthFunc(GL_ALWAYS) with glDepthMask(GL_FALSE) didn't work
+ - gluBuild2DMipmaps malloc problem fixed
+ - view volume clipping of smooth shaded lines resulted in bad colors
+ Changes:
+ - new visual selection method in glXChooseVisual()
+ - improved GLU quadric functions
+ - call XSync for glFinish and XFlush for glFlush
+ - glVertex() calls now use a function pointer to avoid conditionals
+ - removed contrib directory from Mesa tar file (available on ftp site)
+ - AIX shared library support
+ - Removed GLUenum type as it's not in OpenGL
+
+1.2.3 September 26, 1995
+ New features:
+ - Mesa header files now equivalent to SGI OpenGL headers
+ - Support for HP's Color Recovery dithering displays
+ - Faster vertex transformation
+ - Faster raster operations into X windows under certain conditions
+ - New configurations: HP w/ shared libs, Ultrix w/ GCC, Data General
+ - 4-bit visuals now supported
+ Bug fixes:
+ - glScissor bug fixed
+ - round-off errors in clipping lines against clip planes fixed
+ - byte swapping between hosts and display servers implemented
+ - glGetError() can be called without a current rendering context
+ - problem with accidentally culled polygons is fixed
+ - fixed some widget compilation problems
+
+1.2.4 November 17, 1995
+ New features:
+ - More speed improvements (lighting, fogging, polygon drawing)
+ - Window system and OS-independent off-screen rendering
+ - Preliminary Fortran bindings
+ - glPolygonOffsetEXT implemented
+ - glColorMask and glIndexMask now fully implemented
+ - glPixelZoom implemented
+ - display lists fully implemented
+ - gamma correction
+ - dithering in 8-bit TrueColor/DirectColor visuals
+ Changes:
+ - Improved device driver interface
+ - tk.h renamed to gltk.h to avoid conflicts with Tcl's Tk
+ - Dithering support moved from core into device driver
+ Bug fixes:
+ - glEnable/Disable( GL_LIGHTING ) didn't always take effect
+ - glReadPixels byte swapping was broken
+ - glMaterial with pname==GL_AMBIENT_AND_DIFFUSE was broken
+ - duplicate glColor4b() prototype in GL/gl.h removed
+ - stripes in wave -ci demo fixed
+ - GL_LINEAR_MIPMAP_NEAREST had wrong value
+ - bugs in HP Color Recovery support fixed
+ - fixed bug when blending lines, points, bitmaps outside of window
+
+1.2.5 November 30, 1995
+ New Features:
+ - updated MS Windows driver
+ - new implementation of StaticGray/GrayScale visual support
+ Bug fixes:
+ - pixelzooming with gamma correction or blending didn't work
+ - HP color recovery visual wasn't being picked by glXChooseVisual
+ - glClear didn't always observe glColorMask changes
+ - olympic and offset demos didn't compile on some Suns
+ - texcoord clamping wasn't correct
+ - a polygon optimization introduced an occasional sampling problem
+
+1.2.6 January 26, 1996
+ New Features:
+ - faster line and polygon rendering under certain conditions. See
+ Performance Tips 9 and 10 in README
+ - profiling
+ - lighting is a bit faster
+ - better perspective corrected texture mapping
+ - Amiga AmiWin (X11) support
+ - preliminary Linux SVGA driver
+ Changes:
+ - now using a 16-bit depth buffer, faster, smaller
+ - GL_NORMALIZE is disabled by default
+ Bug fixes:
+ - projective texture mapping
+ - fixed a memory leak in the context destroy function
+ - GL_POLYGON with less than 3 vertices caused a crash
+ - glGet*() returned wrong result for GL_INDEX_MODE
+ - reading pixels from an unmapped X window caused a BadMatch error
+
+1.2.7 March 5, 1996
+ New:
+ - faster lighting
+ - faster 16-bit TrueColor rendering on Linux
+ - faster 32-bit TrueColor rendering on Linux, HP, IBM
+ - non-depth-buffered XImage polygons are faster
+ - vertex array extension
+ - software alpha planes
+ - updated Macintosh driver
+ - new NeXT driver
+ - GLU quadric functions generate texture coordinates
+ - reflect.c demo - reflective, textured surface demo
+ Changes:
+ - gamma correction code moved into the X driver for better performance
+ Bug fixes:
+ - multiple glClipPlane()'s didn't work reliably
+ - glPolygonMode() didn't always work
+ - glCullFace( GL_FRONT_AND_BACK ) didn't work
+ - texture mapping with gamma correction was buggy
+ - floating point exceptions in texture coordinate interpolation
+ - XImage byte swapping didn't always work
+ - polygon edge flags weren't always used correctly
+
+1.2.8 May 22, 1996
+ New:
+ - overlay planes on X servers with the SERVER_OVERLAY_VISUALS property
+ - better monochrome output
+ - more IRIX 6.x configurations
+ - more robust RGB mode color allocation
+ - added MESA_XSYNC environment variable
+ - GLX_MESA_pixmap_colormap and GLX_EXT_visual_info extensions
+ - GL_MESA_window_pos extension
+ - faster glReadPixels/glDrawPixels for GL_DEPTH and GL_UNSIGNED_SHORT
+ and GL_UNSIGNED_INT
+ - driver for prototype Cirrus Mondello 3-D board
+ - updated AmigaDOS driver
+ - a few small speed optimizations in polygon rendering
+ Changes:
+ - internal device driver interface modified to simplify device
+ driver implementations and to support hardware Z buffers
+ - several changes to the X/Mesa interface (xmesa.h)
+ Bug fixes:
+ - fixed pow(0,0) domain error triggered on some systems
+ - glStencilClear() in a display list caused an infinite loop
+ - glRasterPos*() was sometimes off by +/-0.5 in X and Y
+ - color masking and blending were performed in wrong order
+ - auxSolidCylinder() sometimes drew a wire-frame cylinder
+ - fixed file writing bug in osdemo.c
+ - pixel mapping didn't always work
+ - the GL_GEQUAL stencil func didn't work
+ - the GL_INVERT stencil op didn't work
+ - the stencil write mask didn't work
+ - glPush/PopAttrib() didn't do enough error checking
+ - glIsList() didn't always work correctly
+
+2.0 October 10, 1996
+ New:
+ - Implements OpenGL 1.1 API functions
+ - all texture filtering modes supported (mipmapping)
+ - faster texture mapping, see Performance Tip 11 in README
+ - antialiased RGB points
+ - X support for line and polygon stippling
+ - glDrawBuffer( GL_FRONT_AND_BACK ) works
+ - util/ directory of useful stuff
+ - demos/texobj demo of texture objects
+ Changes:
+ - major internal changes for thread-safeness
+ - new device driver interface
+ - MESA_ALPHA env variable removed
+ - triangle rasterizer replaces polygon rasterizer
+ Bug fixes:
+ - glPopAttrib() bug
+ - glDrawBuffer(GL_NONE) works now
+
+2.1 December 14, 1996
+ New:
+ - VMS support
+ - MS-DOS driver
+ - OpenStep support
+ - updated, combined Windows 95/NT driver
+ - implemented glGetLighti() and glGetTexGen*()
+ - GLX does garbage collection of ancillary buffers
+ Bug fixes:
+ - removed unused _EXT constants from gl.h
+ - fixed polygon offset bugs
+ - Z coordinates of clipped lines were incorrect
+ - glEdgeFlag() in display lists didn't always work
+ - glLight*() in display lists didn't work
+ - fixed X line stipple bugs (Michael Pichler)
+ - glXUseXfonts XFreeFont/XFreeFontInfo bug fixed
+ - fixed a feedback bug
+ - glTexGen*() now transforms GL_EYE_PLANE by inverse modelview matrix
+ - polygons were sometimes culled instead of clipped
+ - triangle rasterizer suffered from float/int overflow exceptions
+ - fixed FP underflow exception in lighting (specular exponent)
+ - glEnable/glDisable of GL_EXT_vertex_array enums didn't work
+ - fixed free(NULL) in GLU tesselator code
+ - using 24-bit color on some X servers resulted in garbage rendering
+ - 32-bit per pixel mode for XFree86 now works
+ - glRotate(a,0,0,0) gave unpredictable results
+ - GL_LINE_STRIP with > 480 vertices had occasional clipping problems
+ - 8-bit TrueColor GLXPixmap rendering incorrectly required a colormap
+ - glMaterial() wasn't ignored when GL_COLOR_MATERIAL was enabled
+ - glEnable(GL_COLOR_MATERIAL) followed by glColor() didn't work right
+ - accumulation buffer was limited to positive values
+ - projective textures didn't work
+ - selection buffer overflows weren't handled correctly
+ Changes:
+ - restored the GL_EXT_polygon_offset extension
+ - slightly faster RGB dithering
+ - the SVGA driver works again
+ - Amiga driver now distributed separately
+ - NeXT driver updated for Mesa 2.x
+
+2.2 March 14, 1997
+ New:
+ - better color selection when dithering
+ - added GL_EXT_texture_object extension
+ - updated MS-DOS driver for DJGPP
+ - added openbsd make configuration
+ - faster dithered flat-shaded triangles
+ - various compilation problems with Motif widgets fixed
+ - gl.h, glx.h and glu.h name mangling option
+ - BeOS driver
+ - 3D texture mapping extension
+ - GL_MESA_resize_buffers extension
+ - morph3d, stex3d and spectex demos
+ - 3Dfx support
+ Bug fixes:
+ - glColorMaterial should finally work right in all respects
+ - linear interpolation of mipmap levels was incorrectly weighted
+ - readpix.c didn't compile on Macintosh
+ - GL_INVERT and related logic ops didn't work right
+ - glTexImage[12]D() didn't check its parameters consistantly
+ - fixed a memory leak in glTexImage[12]D()
+ - kludged around a SunOS 5.x/GCC compiler bug in the feedback code
+ - glReadPixels aborted instead of normally catching some errors
+ - a few 1.1 constants were missing or misnamed in gl.h
+ - glBegin(p); glBegin(q); didn't generate an error
+ - fixed a memory leak in GLX code
+ - clipping of concave polygons could cause a core dump
+ - 1-component alpha texture maps didn't work
+ - fixed a GLU polygon tesselator bug
+ - polygons with colinear vertices were sometimes culled
+ - feedback triangle colors were wrong when using smooth shading
+ - textures with borders didn't work correctly
+ - colors returned in feedback mode were wrong when using lighting
+ - spotlights didn't effect ambient lighting correctly
+ - gluPartialDisk() had a few bugs
+ Changes:
+ - device driver interface expanded to support texture mapping
+ - faster matrix inversion subroutine
+ - commented out #include "wmesa_extend.h" from src/wmesa.c
+ - fixed many compiler warnings in the demo programs
+
+2.3 June 30, 1997
+ New:
+ - Mesa distribution divided into two pieces: library code and demos
+ - faster vertex transformation, clip testing, lighting
+ - faster line drawing
+ - TrueColor visuals how have dithering (for depths < 24 bits)
+ - added MESA_NO_DITHER environment variable
+ - new device driver function: NearFar(), RenderVB(), RasterSetup()
+ - added LynxOS configuration
+ - added cygnus Win32 configuration
+ - added texcyl.c GLUT demo
+ - added XMesaDitherColor() to X/Mesa interface
+ - new NURBS code from Bogdan Sikorski
+ - added demos/shape.c (non-rectangular X window!)
+ Bug fixes:
+ - glEnable/DisableClientState() were missing from GL/gl.h
+ - GL_SPHERE_MAP texcoord generation didn't work correctly
+ - glXGetConfig() returned wrong number of depth, stencil, accum bits
+ - glDrawPixels feedback/selection didn't examine RasterPos valid bit
+ - black and white were reversed on some monochrome displays
+ - fixed potential image memory leak (wasn't setting reference counter)
+ - glDrawPixels sometimes didn't recognize some GL state changes
+ - gluProject/UnProject() didn't check for divide by zero
+ - stex3d demo called random() and srandom(), not portable
+ - fixed memory leaks in context.c and drawpix.c
+ - fixed NULL dereferencing problem in gl_update_texture_state()
+ - glReadPixels between glBegin/glEnd didn't generate an error.
+ - fixed memory leak in polygon tesselator (Randy Frank)
+ - fixed seg fault bug drawing flat-shaded, depth-tested lines
+ - clipped GL_TRIANGLE_STRIPs sometimes had wrong color when flat-shaded
+ - glBindTexture sometimes didn't work
+ - fixed a bug deep in glXReleaseBuffersMESA()
+ - fog was mistakenly applied to alpha
+ - glPopMatrix didn't set "dirty matrix" flag
+ - glPolygonStipple pattern was sometimes wrong
+ - glClear wasn't disabled during feedback and selection
+ - fixed memory leak in glTexSubImage[123]D
+ Changes:
+ - many library source files reorganized
+ - faster X color allocation, colors also freed when finished with them
+ - new texture sampling function pointer in texture objects
+ - incorporated 3Dfx VooDoo driver v0.16 into main source tree
+ - many 3Dfx driver updates
+ - cygnus Makefiles now included
+ - updated DOS driver
+ - made a few changes to dosmesa.c and wmesa.c (VB->Unclipped)
+ - internally, colors now stored in GLubytes, not GLfixed
+ - optimized changing of GL_SHININESS parameter
+
+2.4 September 18, 1997
+ New:
+ - updated 3Dfx Glide driver
+ - hacks for 3Dfx rendering into an X window or fullscreen
+ - added depth buffer access functions to X/Mesa and OS/Mesa interfaces
+ Bug fixes:
+ - pixel buffer could overflow with long, wide lines
+ - fixed FP underflow problems in lighting
+ - glTexSubImage1D() had an unitialized variable
+ - incomplete texture objects could cause a segfault
+ - glDrawPixels with GL_COMPILE_AND_EXECUTE caused infinite loop
+ - flat-shaded quads in a strip were miscolored if clipped
+ - mipmapped triangle lod computation now works correctly
+ - fixed a few under/overflow bugs in triangle rasterizer
+ - glArrayElement() assigned bad normal if normal array disabled
+ - changed argument to glXReleaseBuffersMESA()
+ - fixed small triangle underflow bugs in tritemp.h (hopefully)
+ - glBindTexture(target, 0) caused a crash
+ - glTexImage[123]D() with NULL image pointer caused crash
+ - glPixelStore parameters are now ignored during display list execution
+ - fixed a two-sided lighting w/ clipping bug (black vertices)
+ - textures with width!=height were sometimes mis-rendered
+ - "weird" projection matrices could cause div by 0, other fp errors
+ Changes:
+ - changed precompiled header symbol from PCH to PC_HEADER
+ - split api.c into api1.c and api2.c
+ - added hash.c source file (but not used yet)
+ - a few Sun and HP configuration file changes
+ - MESA_GLX_FX env var replaces MESA_FX_WINDOW and MESA_FX_FULLSCREEN
+ - fixed a few cygnus build problems (src/Makefile.cygnus, src/wmesa.c)
+
+2.5 November 20, 1997
+ New:
+ - updated 3Dfx driver (v20) for GLQuake
+ - added GL_EXT_paletted_texture extension
+ - added GL_EXT_shared_texture_palette extension
+ - added GL_EXT_point_parameters extension
+ - now including Mark Kilgard's GLUT library v3.6
+ - new GLUT-based demos in gdemos/
+ - added a few more Unix config targets
+ - added Intel X86 assembly language vertex transformation code
+ - 3Dfx/Glide driver for Mesa now recognizes SST_SCREENREFRESH env var
+ - Windows 95 S3 Virge driver
+ Bug fixes:
+ - glCopyTexImage?D would crash due to uninitialized variable
+ - glColor w/ glColorMaterial in a display list caused a bug
+ - fixed several glDrawPixels() and ReadPixels() bugs in 3Dfx driver
+ - glVertex4*() vertices weren't always projected correctly
+ - trying to use mipmapped textured points or lines caused crash
+ - glColor[34][fd]() values now clamped to [0,1] before int conversion
+ Changes:
+ - new device driver functions for texture mapping
+ - hash tables used for display list and texture object lookup
+ - fixed GLX visual handling code to avoid saving redundant visuals
+ - 3Dfx Glide libraries automatically linked to libMesaGL.so
+ - dropped the Cirrus Logic Mondello code since it's obsolete
+ - updated Cygnus Makefiles (Stephane Rehel)
+ - updated Windows MSVC++ Makefiles (Oleg Letsinsky)
+ - procedure for making library files has changed: scripts now take
+ a major and minor version arguments. Make-config changed a lot.
+ - new implementation of glTexSubImage2D()
+ - updated widgets-mesa directory to create libMesaGLwM.a (Motif widget)
+ - separate linux-glide and linux-386-glide configurations
+
+2.6 February 12, 1998
+ New:
+ - Windows WGL functions
+ - updated VMS, DOS, Windows, Cygnus, BeOS, Amiga compilation support
+ - v0.22 of 3Dfx Glide driver
+ - more X86 assembly language optimizations
+ - faster blending for some modes
+ - XMesaSetFXmode() to switch between 3Dfx window and full-screen mode
+ - added preliminary thread support
+ - added GLX_MESA_copy_sub_buffer extension
+ - some clipping optimizations
+ Bug fixes:
+ - fixed shading/material bug when drawing long primitive strips
+ - fixed clipping problem in long primitive strips
+ - fixed clipping bug when using 3Dfx driver
+ - fixed a problem when trying to use X fonts w/ 3Dfx driver
+ - fixed a texture filter bug in 3Dfx/Glide driver
+ - fixed bug in 3Dfx/Glide driver involving depth mask & clearing
+ - glLoadMatrix to set projection matrix confused the 3Dfx driver
+ - non-identity texture matrices didn't work with linux-386 configs
+ - glGenTextures() didn't reserve the returned texture IDs
+ - NULL proxy image sent to glTexImageXD() caused crash
+ - added texture state validation optimization (Henk Kok)
+ - fixed colormap reuse problem when using both RGB and CI windows
+ - 32bpp True/DirectColor X visuals weren't recognized
+ - fixed potential problem in evaluators memory allocation
+ - fixed assorted demo compilation bugs
+ Changes:
+ - replaced old Mesa/windows/ directory with Mesa/WIN32/ directory
+ - converted a few old glaux/gltk demos to GLUT
+ - renamed directories: demos -> xdemos, gdemos -> demos
+
+
+3.0 September 17, 1998
+ New:
+ - OpenGL 1.2 API
+ - GL_EXT_abgr pixel format extension
+ - GL_SGIS_texture_edge_clamp extension
+ - GL_SGIS_multitexture extension (to be replaced by GL_ARB_multitex)
+ - GL_EXT_multitexture extension (to be replaced by GL_ARB_multitex)
+ - GL_EXT_rescale_normal extension and renormal.c demo
+ - GLX_SGI_video_sync extension (a no-op)
+ - antialiased lines
+ - glGetTexImage() now implemented
+ - glDraw/Copy/ReadPixels() optimizations
+ - optimized textured triangle code (Marten Stromberg)
+ - more optimization of dithered TrueColor triangles in X driver
+ - Linux GGI driver
+ - updated MGL driver
+ Bug fixes:
+ - lots of assorted compilation fixes
+ - glInitNames didn't write initial hit record
+ - glBitmap didn't always check for invalid raster position
+ - switching between GLX and OSMesa contexts caused a crash
+ - fixed uninitialized variable in Mesa widget code
+ - fixed typo in texture code which caused book/texgen to crash
+ - fixed texture sampling bug when filter=GL_LINEAR and wrap=GL_CLAMP
+ - gluDisk() in POINT or LINE mode sometimes failed
+ - fixed texture + fog bug
+ - GL_COMPILE_AND_EXECUTE mode didn't work reliably
+ - glMultMatrix in projection matrix mode w/ 3Dfx driver could fail
+ - glDrawPixels(color index pixels) weren't converted to RGBA
+ - fixed possible getenv() buffer overflow security bug
+ - glBitmap in feedback mode was offset by xOrig, yOrig params
+ - device driver's DrawPixels hook was never used
+ - glDrawPixels with zoomY!=1 and top/bottom clipping didn't work
+ - glDrawPixels optimized for GL_LUMINANCE, GL_LUMINANCE_ALPHA, GLubyte
+ - fixed MakeCurrent bug in GLwRedrawObjects() in MesaWorkstation.c
+ - glCopyTexSubImage2D() didn't work with 3Dfx driver
+ - lines with width = 2 could cause crash
+ - glClear with scissor rect sometimes cleared whole buffer
+ - glTexSubImage2D( .. GL_COLOR_INDEX .. ) didn't work
+ - glTexImageXD( .. GL_ABGR_EXT .. ) didn't work
+ - computation of inverse modelview matrix sometimes failed
+ - fixed GL_CLAMP mode texture sampling bug
+ - textured line interpolation was somewhat broken
+ - textured triangle interpolation was also somewhat broken
+ - glGet(MODELVIEW/PROJECTION/TEXTURE_MATRIX_STACK_DEPTH) off by one
+ - evaluator state wasn't fully initialized
+ - texture coordinate clipping was buggy
+ - evaluator surfaces could be mis-colored
+ - glAccum(GL_RETURN, s) didn't obey glColorMask() settings
+ - zero area polygons shouldn't be culled if polygon mode is point/line
+ - clipped width and height of glReadPixels was sometimes off by one
+ - blending with alpha = 0 or 1.0 wasn't always exact
+ - reading of pixels from clipped region was buggy
+ - minor tweaking of X visual management in GLX emulator
+ - glPolygonStipple now obeys pixel unpacking parameters
+ - glGetPolygonStipple now obeys pixel packing parameters
+ - interleaved vertex array texture coordinates were broken
+ - query of proxy texture internal format was broken
+ - alpha channel wasn't reliably cleared
+ - fixed divide by zero error in gluScaleImage if dest size = 1 x 1
+ Conformance bug fixes:
+ - GL_SELECTION_BUFFER_POINTER and GL_SELECTION_BUFFER_SIZE were missing
+ - GL_TEXTURE_INTERNAL_FORMAT was missing
+ - glGet*(GL_POLYGON_STIPPLE) was broken
+ - glPush/PopAttrib() didn't save/restore all texture state
+ - glBitmap in feedback mode didn't work
+ - feedback of texture coords didn't always work
+ - glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLbyte was broke
+ - glDrawPixels w/ format=GL_DEPTH_COMPONENT, type=GLubyte was broke
+ - glDrawPixels w/ format=GL_STENCIL_INDEX, type=GL_BITMAP was broke
+ Changes:
+ - upgraded GLUT to version 3.7
+ - only GL and GLU library code included in MesaLib.tar.gz
+ - GLUT and all demos now in MesaDemos.tar.gz
+ - glaux and gltk libraries removed
+ - IRIX -n32 and -64 libs go in lib32/ and lib64/ directories
+
+
+3.1 beta 1 November 19, 1998
+ New:
+ - GL_EXT_stencil_wrap extension
+ - GL_INGR_blend_func_separate extension
+ - GL_ARB_multitexture extension
+ - GL_NV_texgen_reflection extension
+ - newly optimized vertex transformation code
+ - updated GLUT 3.7 code
+ - better precision when using 32-bit Z buffer
+ - Allegro DJGPP driver
+ Bug fixes:
+ - glCopyPixels between front/back buffers didn't copy alpha correctly
+ - fixed out-of-bounds memory access in optimized 2-D texture code
+ - glPixelStorei didn't accept GL_PACK/UNPACK_IMAGE_HEIGHT parameter
+ - glGet*() didn't accept GL_MAX_3D_TEXTURE_SIZE parameter
+ - clipping of texture coordinates sometimes had bad R,Q values
+ - GL_CLAMP_TO_EDGE texture sampling was off by 0.5 texels
+ - glEdgeFlagPointer() now takes a GLvoid * instead of GLboolean *
+ - texture was sometimes applied twice with 3Dfx driver
+ - glPush/PopAttrib() fouled up texture object reference counts
+ - glDeleteLists(0, n) caused assertion failure
+ - bilinear texture sampling wasn't accurate enough
+ - glClear w/ glDepthMask(GL_FALSE) didn't work right on 3Dfx
+ - color components were reversed on big endian 32 bpp X visuals
+ Changes:
+ - removed GL_EXT_multitexture extension
+
+
+3.1 beta 2 May 24, 1999
+ New:
+ - multi-textured points and lines (mjk@nvidia.com)
+ - optimized 24bpp X rendering (bernd.paysan@gmx.de)
+ - added allegro support (bernie-t@geocities.com)
+ - cleaned-up Windows-related stuff (Ted Jump)
+ - minor stereo changes (KendallB@scitechsoft.com)
+ - new BeOS driver which implements BGLView class
+ - new Direct3D driver (see src/D3D)
+ - more efficient filled gluCylinder() function
+ - utilities: util/showbuffer.[ch] and util/glstate.[ch]
+ - fixed some IRIX compiler warnings
+ - added support for building Mesa in XFree86 with
+ SGI's GLX (kevin@precisioninsight.com)
+ Bug fixes:
+ - a variety of Windows/Mesa bug fixes (mjk@nvidia.com)
+ - packed pixel images weren't unpacked correctly
+ - patches some win32 files in GLUT (mjk@nvidia.com)
+ - glTexImage[123]D() didn't accept internalFormat == GL_COLOR_INDEX
+ - fixed lighting bug in Keith's new shading code
+ - fixed texture segfault seen in Lament screensaver
+ - fixed miscellaneous low-memory bugs
+ - glClear(GL_COLOR_BUFFER_BIT) with RGBA or CI masking was broken
+ - GL_LINEAR sampling of 3D textures was broken
+ - fixed SVR4 'cc' compiler macro problem (dawes@xfree86.org)
+ - added GL_TEXTURE_PRIORITY fix (keithh@netcomuk.co.uk)
+ - fixed wide point and wide line conformance bugs (brianp)
+ Changes:
+ - some device driver changes (see src/dd.h)
+ - new copyright on core Mesa code
+
+
+3.1 beta 3 September 17, 1999
+ New:
+ - optimized glAccum function
+ - optimized 24bpp rendering in XMesa driver
+ - GLU 1.2 polygon tessellator
+ Bug Fixes:
+ - glGetTexLevelParameter wasn't fully implemented
+ - glXUseXFont now handles multi-byte fonts
+ - glIsEnabled(GL_TEXTURE_2D / 3D) returned wrong result
+ - alpha channel of blending points, lines was sometimes incorrect
+ Changes:
+ - New library names: "libGL" instead of "libMesaGL"
+ - New library numbering: libGL.so.1.2.310
+ - New subdirectories: docs/ and bin/
+ - New Makefile-system (autoconf,automake,libtool)
+
+
+3.1 final December 14, 1999
+ New:
+ - added demos/gloss.c
+ - added xdemos/glxdpyinfo.c
+ - added GLX_ARB_get_proc_address extension
+ - rewritten glTexImage code paths (faster, less memory, bug fixes)
+ Bug Fixes:
+ - several vertex array bug fixes
+ - overlapping glCopyPixels with pixel zooming now works
+ - glXUseXFont() bitmaps were vertically shifted by one pixel
+ - glCopyPixels with pixel zooming now works
+
+
+3.2 final April 24, 2000
+ Bug fixes:
+ - fixed memcpy bugs in span.c
+ - fixed missing glEnd problem in demos/tessdemo.c
+ - fixed bug when clearing 24bpp Ximages
+ - fixed clipping problem found in Unreal Tournament
+ - fixed Loki's "ice bug" and "crazy triangles" seen in Heretic2
+ - fixed Loki's 3dfx RGB vs BGR bug
+ - fixed Loki's 3dfx smooth/flat shading bug in SoF
+ Changes:
+ - updated docs/README file
+ - use bcopy() optimizations on FreeBSD
+ - re-enabled the optimized persp_textured_triangle() function
+
+
+3.2.1 July 19, 2000
+ Bug fixes:
+ - gluBuild2DMipmaps() didn't accept GL_BGRA
+ - Fixed compile/makefile problems on IRIX
+ - fixed segfault in 3dfx driver when using GL selection/feedback
+ - no longer cull very, very tiny triangles
+ - blending w/ drawbuffer==GL_FRONT_BACK caused segfault (sw rendering)
+ - fixed Motif detection code in widgets-mesa/configure.in
+ - glColorMaterial and glMaterial updates to emissive and ambient
+ didn't always work right
+ - Specular highlights weren't always in the right place
+ - clipped GL_LINE mode polygons had interior lines appear
+ - blend term GL_ONE_MINUS_CONSTANT_ALPHA was broken
+ - GL_NICEST fog didn't always work with flat shading
+ - glRect commands in display lists were sometimes miscolored
+ - Line Z offset didn't always work
+ - fixed texgen normal vector problem (gloss's teapot)
+ - numerous GL conformance bugs fixed
+ Changes:
+ - glColorMask(false, false, false, false) handled better/faster
+ - reverted to old GLU polygon tessellator, GLU 1.1
+ - updated Win32 build files
+
+
+3.3 July 21, 2000
+ New:
+ - antialiased triangles now implemented
+ - GL_EXT_texture_env_add texture mode extension
+ - GLX 1.3 API
+ - support for separate draw/read buffers (ie GL_SGI_make_current_read)
+ - thread-safe API dispath
+ - improved glxinfo program
+ - demos/texdown program to measure texture download performance
+ - glext.h header file
+ - demos/geartrain program
+ - GL_EXT_texture_lod_bias extension
+ - demos/lodbias program
+ - further optimized glRead/DrawPixels for 16-bit TrueColor X visuals
+ - GLX_EXT_visual_rating extension (a no-op, however)
+ - GL_HP_occlusion_test extension (for X and OS/Mesa drivers)
+ - demos/occlude program
+ - GL_SGIS_pixel_texture and GL_SGIX_pixel_texture extensions
+ - demos/pixeltex program
+ - GL_SGI_color_matrix extension
+ - GL_SGI_color_table extension
+ - GL_EXT_histogram extension
+ - GL_ARB_texture_cube_map extension
+ - added xdemos/glxheads and xdemos/manywin
+ - demos/texenv.c demo
+ - GL_EXT_texture_env_combine extension (by Holger Waechtler)
+ - Xlib driver is now thread-safe (see xdemos/glthreads)
+ Bug Fixes:
+ - various GL conformance failures fixed since 3.2.1
+ Changes:
+ - gl.h now uses #defines instead of C enums for all tokens
+ - glu.h now uses #defines instead of C enums for all tokens
+ - moved programs from 3Dfx/demos/ into demos/ directory
+
+
+3.4 November 3, 2000
+ New:
+ - optimized glDrawPixels for glPixelZoom(1,-1)
+ Bug Fixes:
+ - widgets-mesa/src/*.c files were missing from 3.3 distro
+ - include/GL/mesa_wgl.h file was missing from 3.3 distro
+ - fixed some Win32 compile problems
+ - texture object priorities weren't getting initialized to 1.0
+ - glAreTexturesResident return value was wrong when using hardware
+ - glXUseXFont segfaulted when using 3dfx driver (via MESA_GLX_FX)
+ - glReadPixels with GLushort packed types was broken
+ - fixed a few bugs in the GL_EXT_texture_env_combine texture code
+ - glPush/PopAttrib(GL_ENABLE_BIT) mishandled multi-texture enables
+ - fixed some typos/bugs in the VB code
+ - glDrawPixels(GL_COLOR_INDEX) to RGB window didn't work
+ - optimized glDrawPixels paths weren't being used
+ - per-fragment fog calculation didn't work without a Z buffer
+ - improved blending accuracy, fixes Glean blendFunc test failures
+ - glPixelStore(GL_PACK/UNPACK_SKIP_IMAGES) wasn't handled correctly
+ - glXGetProcAddressARB() didn't always return the right address
+ - gluBuild[12]DMipmaps() didn't grok the GL_BGR pixel format
+ - texture matrix changes weren't always detected (GLUT projtex demo)
+ - fixed random color problem in vertex fog code
+ - fixed Glide-related bug that let Quake get a 24-bit Z buffer
+ Changes:
+ - finished internal support for compressed textures for DRI
+
+
+3.4.1 February 14, 2001
+ New:
+ - fixed some Linux build problems
+ - fixed some Windows build problems
+ - GL_EXT_texture_env_dot3 extension (Gareth Hughes)
+ Bug fixes:
+ - added RENDER_START/RENDER_FINISH macros for glCopyTexImage in DRI
+ - various state-update code changes needed for DRI bugs
+ - disabled pixel transfer ops in glColorTable commands, not needed
+ - fixed bugs in glCopyConvolutionFilter1D/2D, glGetConvolutionFilter
+ - updated sources and fixed compile problems in widgets-mesa/
+ - GLX_PBUFFER enum value was wrong in glx.h
+ - fixed a glColorMaterial lighting bug
+ - fixed bad args to Read/WriteStencilSpan in h/w stencil clear function
+ - glXCopySubBufferMESA() Y position was off by one
+ - Error checking of glTexSubImage3D() was broken (bug 128775)
+ - glPopAttrib() didn't restore all derived Mesa state correctly
+ - Better glReadPixels accuracy for 16bpp color - fixes lots of OpenGL
+ conformance problems at 16bpp.
+ - clearing depth buffer with scissoring was broken, would segfault
+ - OSMesaGetDepthBuffer() returned bad bytesPerValue value
+ - fixed a line clipping bug (reported by Craig McDaniel)
+ - fixed RGB color over/underflow bug for very tiny triangles
+ Known problems:
+ - NURBS or evaluator surfaces inside display lists don't always work
+
+
+3.4.2 May 17, 2001
+ Bug fixes:
+ - deleting the currently bound texture could cause bad problems
+ - using fog could result in random vertex alpha values
+ - AA triangle rendering could touch pixels outside right window bound
+ - fixed byteswapping problem in clear_32bit_ximage() function
+ - fixed bugs in wglUseFontBitmapsA(), by Frank Warmerdam
+ - fixed memory leak in glXUseXFont()
+ - fragment sampling in AA triangle function was off by 1/2 pixel
+ - Windows: reading pixels from framebuffer didn't always work
+ - glConvolutionFilter2D could segfault or cause FP exception
+ - fixed segfaults in FX and X drivers when using tex unit 1 but not 0
+ - GL_NAND logicop didn't work right in RGBA mode
+ - fixed a memory corruption bug in vertex buffer reset code
+ - clearing the softwara alpha buffer with scissoring was broken
+ - fixed a few color index mode fog bugs
+ - fixed some bad assertions in color index mode
+ - fixed FX line 'stipple' bug #420091
+ - fixed stencil buffer clear width/height typo
+ - fixed GL error glitches in gl[Client]ActiveTextureARB()
+ - fixed Windows compilation problem in texutil.c
+ - fixed 1/8-pixel AA triangle sampling error
+ Changes:
+ - optimized writing mono-colored pixel spans to X pixmaps
+ - increased max viewport size to 2048 x 2048
+
+
+3.5 June 21, 2001
+ New:
+ - internals of Mesa divided into modular pieces (Keith Whitwell)
+ - 100% OpenGL 1.2 conformance (passes all conformance tests)
+ - new AA line algorithm
+ - GL_EXT_convolution extension
+ - GL_ARB_imaging subset
+ - OSMesaCreateContextExt() function
+ - GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
+ - GL_MAX_TEXTURE_UNITS_ARB now defaults to eight
+ - GL_EXT_fog_coord extension (Keith Whitwell)
+ - GL_EXT_secondary_color extension (Keith Whitwell)
+ - GL_ARB_texture_env_add extension (same as GL_EXT_texture_env_add)
+ - GL_SGIX_depth_texture extension
+ - GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions
+ - demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow
+ - GL_ARB_texture_env_combine extension
+ - GL_ARB_texture_env_dot3 extension
+ - GL_ARB_texture_border_clamp (aka GL_SGIS_texture_border_clamp)
+ - OSMesaCreateContextExt() function
+ - libOSMesa.so library, contains the OSMesa driver interface
+ - GL/glxext.h header file for GLX extensions
+ - somewhat faster software texturing, fogging, depth testing
+ - all color-index conformance tests now pass (only 8bpp tested)
+ - SPARC assembly language TCL optimizations (David Miller)
+ - GL_SGIS_generate_mipmap extension
+ Bug Fixes:
+ - fbiRev and tmuRev were unitialized when using Glide3
+ - fixed a few color index mode conformance failures; all pass now
+ - now appling antialiasing coverage to alpha after texturing
+ - colors weren't getting clamped to [0,1] before color table lookup
+ - fixed RISC alignment errors caused by COPY_4UBV macro
+ - drawing wide, flat-shaded lines could cause a segfault
+ - vertices now snapped to 1/16 pixel to fix rendering of tiny triangles
+ Changes:
+ - SGI's Sample Implementation (SI) 1.3 GLU library replaces Mesa GLU
+ - new libOSMesa.so library, contains the OSMesa driver interface
+
+
+4.0 October 22, 2001
+ New:
+ - Mesa 4.0 implements the OpenGL 1.3 specification
+ - GL_IBM_rasterpos_clip extension
+ - GL_EXT_texture_edge_clamp extension (aka GL_SGIS_texture_edge_clamp)
+ - GL_ARB_texture_mirrored_repeat extension
+ - WindML UGL driver (Stephane Raimbault)
+ - added OSMESA_MAX_WIDTH/HEIGHT queries
+ - attempted compiliation fixes for Solaris 5, 7 and 8
+ - updated glext.h and glxext.h files
+ - updated Windows driver (Karl Schultz)
+ Bug fixes:
+ - added some missing GLX 1.3 tokens to include/GL/glx.h
+ - GL_COLOR_MATRIX changes weren't recognized by teximage functions
+ - glCopyPixels with scale and bias was broken
+ - glRasterPos with lighting could segfault
+ - glDeleteTextures could leave a dangling pointer
+ - Proxy textures for cube maps didn't work
+ - fixed a number of 16-bit color channel bugs
+ - fixed a few minor memory leaks
+ - GLX context sharing was broken in 3.5
+ - fixed state-update bugs in glPopClientAttrib()
+ - fixed glDrawRangeElements() bug
+ - fixed a glPush/PopAttrib() bug related to texture binding
+ - flat-shaded, textured lines were broken
+ - fixed a dangling pointer problem in the XMesa code (Chris Burghart)
+ - lighting didn't always produce the correct alpha value
+ - fixed 3DNow! code to not read past end of arrays (Andrew Lewycky)
+
+
+4.0.1 December 17, 2001
+ New:
+ - better sub-pixel sample positions for AA triangles (Ray Tice)
+ - slightly faster blending for (GL_ZERO, GL_ONE) and (GL_ONE, GL_ZERO)
+ Bug fixes:
+ - added missing break statements in glGet*() for multisample cases
+ - fixed uninitialized hash table mutex bug (display lists / texobjs)
+ - fixed bad teximage error check conditional (bug 476846)
+ - fixed demos readtex.c compilation problem on Windows (Karl Schultz)
+ - added missing glGet() query for GL_MAX_TEXTURE_LOD_BIAS_EXT
+ - silence some compiler warnings (gcc 2.96)
+ - enable the #define GL_VERSION_1_3 in GL/gl.h
+ - added GL 1.3 and GLX 1.4 entries to gl_mangle.h and glx_mangle.h
+ - fixed glu.h typedef problem found with MSDev 6.0
+ - build libGL.so with -Bsymbolic (fixes bug found with Chromium)
+ - added missing 'const' to glXGetContextIDEXT() in glxext.h
+ - fixed a few glXGetProcAddress() errors (texture compression, etc)
+ - fixed start index bug in compiled vertex arrays (Keith)
+ - fixed compilation problems in src/SPARC/glapi_sparc.S
+ - fixed triangle strip "parity" bug found in VTK medical1 demo (Keith)
+ - use glXGetProcAddressARB in GLUT to avoid extension linking problems
+ - provoking vertex of flat-shaded, color-index triangles was wrong
+ - fixed a few display list bugs (GLUT walker, molecule, etc) (Keith)
+ - glTexParameter didn't flush the vertex buffer (Ray Tice)
+ - feedback attributes for glDraw/CopyPixels and glBitmap were wrong
+ - fixed bug in normal length caching (ParaView lighting bug)
+ - fixed separate_specular color bug found in Chimera (18 Dec 2001)
+
+
+4.0.2 April 2, 2002
+ New:
+ - New DOS (DJGPP) driver written by Daniel Borca
+ - New driver interface functions for TCL drivers (such as Radeon DRI)
+ - GL_RENDERER string returns "Mesa Offscreen16" or "Mesa Offscreen32"
+ if using deep color channels
+ - latest GL/glext.h and GL/glxext.h headers from SGI
+ Bug fixes:
+ - GL_BLEND with non-black texture env color wasn't always correct
+ - GL_REPLACE with GL_RGB texture format wasn't always correct (alpha)
+ - glTexEnviv( pname != GL_TEXTURE_ENV_COLOR ) was broken
+ - glReadPixels was sometimes mistakenly clipped by the scissor box
+ - glDraw/ReadPixels didn't catch all the errors that they should have
+ - Fixed 24bpp rendering problem in Windows driver (Karl Schultz)
+ - 16-bit GLchan mode fixes (m_trans_tmp.h, s_triangle.c)
+ - Fixed 1-bit float->int conversion bug in glDrawPixels(GL_DEPTH_COMP)
+ - glColorMask as sometimes effecting glXSwapBuffers()
+ - fixed a potential bug in XMesaGarbageCollect()
+ - N threads rendering into one window didn't work reliably
+ - glCopyPixels didn't work for deep color channels
+ - improved 8 -> 16bit/channel texture image conversion (Gerk Huisma)
+ - glPopAttrib() didn't correctly restore user clip planes
+ - user clip planes failed for some perspective projections (Chromium)
+ Known bugs:
+ - mipmap LOD computation
+
+
+4.0.3 June 25, 2002
+ New:
+ - updated GL/glext.h file (version 15)
+ - corrected MMX blend code (Jose Fonseca)
+ - support for software-based alpha planes in Windows driver
+ - updated GGI driver (Filip Spacek)
+ Bug fixes:
+ - glext.h had wrong values for GL_DOT3_RGB[A]_EXT tokens
+ - OSMesaMakeCurrent() didn't recognize buffer size changes
+ - assorted conformance fixes for 16-bit/channel rendering
+ - texcombine alpha subtraction mode was broken
+ - fixed lighting bug with non-uniform scaling and display lists
+ - fixed bug when deleting shared display lists
+ - disabled SPARC cliptest assembly code (Mesa bug 544665)
+ - fixed a couple Solaris compilation/link problems
+ - blending clipped glDrawPixels didn't always work
+ - glGetTexImage() didn't accept packed pixel types
+ - glPixelMapu[is]v() could explode given too large of pixelmap
+ - glGetTexParameter[if]v() didn't accept GL_TEXTURE_MAX_ANISOTROPY_EXT
+ - glXCopyContext() could lead to segfaults
+ - glCullFace(GL_FRONT_AND_BACK) didn't work (bug 572665)
+ Changes:
+ - lots of C++ (g++) code clean-ups
+ - lots of T&L updates for the Radeon DRI driver
+ Known bugs:
+ - mipmap LOD computation (fixed for Mesa 4.1)
+
+
+4.0.4 October 3, 2002
+ New:
+ - GL_NV_texture_rectangle extension
+ - updated glext.h header (version 17)
+ - updated DOS driver (Daniel Borca)
+ - updated BeOS R5 driver (Philippe Houdoin)
+ - added GL_IBM_texture_mirror_repeat
+ - glxinfo now takes -l option to print interesting OpenGL limits info
+ - GL_MESA_ycbcr_texture extension
+ - GL_APPLE_client_storage extension (for some DRI drivers only)
+ - GL_MESA_pack_invert extension
+ Bug fixes:
+ - fixed GL_LINEAR fog bug by adding clamping
+ - fixed FP exceptions found using Alpha CPU
+ - 3dfx MESA_GLX_FX=window (render to window) didn't work
+ - fixed memory leak in wglCreateContest (Karl Schultz)
+ - define GLAPIENTRY and GLAPI if undefined in glu.h
+ - wglGetProcAddress didn't handle all API functions
+ - when testing for OpenGL 1.2 vs 1.3, check for GL_ARB_texture_cube_map
+ - removed GL_MAX_CONVOLUTION_WIDTH/HEIGHT from glGetInteger/Float/etc()
+ - error checking in compressed tex image functions had some glitches
+ - fixed AIX compile problem in src/config.c
+ - glGetTexImage was using pixel unpacking instead of packing params
+ - auto-mipmap generation for cube maps was incorrect
+ Changes:
+ - max texture units reduced to six to accomodate texture rectangles
+ - removed unfinished GL_MESA_sprite_point extension code
+
+
+4.1 October 29, 2002
+ New:
+ - GL_NV_vertex_program extension
+ - GL_NV_vertex_program1_1 extension
+ - GL_ARB_window_pos extension
+ - GL_ARB_depth_texture extension
+ - GL_ARB_shadow extension
+ - GL_ARB_shadow_ambient extension
+ - GL_EXT_shadow_funcs extension
+ - GL_ARB_point_parameters extension
+ - GL_ARB_texture_env_crossbar
+ - GL_NV_point_sprite extension
+ - GL_NV_texture_rectangle extension
+ - GL_EXT_multi_draw_arrays extension
+ - GL_EXT_stencil_two_side extension
+ - GLX_SGIX_fbconfig and GLX_SGIX_pbuffer extensions
+ - GL_ATI_texture_mirror_once extension (Ian Romanick)
+ - massive overhaul/simplification of software rasterizer module,
+ many contributions from Klaus Niederkrueger
+ - faster software texturing in some cases (i.e. trilinear filtering)
+ - new OSMesaGetProcAddress() function
+ - more blend modes implemented with MMX code (Jose Fonseca)
+ - added glutGetProcAddress() to GLUT
+ - added GLUT_FPS env var to compute frames/second in glutSwapBuffers()
+ - pbinfo and pbdemo PBuffer programs
+ - glxinfo -v prints transprent pixel info (Gerd Sussner)
+ Bug fixes:
+ - better mipmap LOD computation (prevents excessive blurriness)
+ - OSMesaMakeCurrent() didn't recognize buffer size changes
+ - assorted conformance fixes for 16-bit/channel rendering
+ - texcombine alpha subtraction mode was broken
+ - fixed some blend problems when GLchan==GLfloat (Gerk Huisma)
+ - clamp colors to [0,inf] in OSMesa if GLchan==GLfloat (Gerk Huisma)
+ - fixed divide by zero error in NURBS tessellator (Jon Perry)
+ - fixed GL_LINEAR fog bug by adding clamping
+ - fixed FP exceptions found using Alpha CPU
+ - 3dfx/glide driver render-to-window feature was broken
+ - added missing GLX_TRANSPARENT_RGB token to glx.h
+ - fixed error checking related to paletted textures
+ - fixed reference count error in glDeleteTextures (Randy Fayan)
+ Changes:
+ - New spec file and Python code to generate some GL dispatch files
+ - Glide driver defaults to "no" with autoconf/automake
+ - updated demos/stex3d with new options
+
+
+5.0 November 13, 2002
+ New:
+ - OpenGL 1.4 support (glGetString(GL_VERSION) returns "1.4")
+ - removed some overlooked debugging code
+ - glxinfo updated to support GLX_ARB_multisample
+ - GLUT now support GLX_ARB_multisample
+ - updated DOS driver (Daniel Borca)
+ Bug fixes:
+ - GL_POINT and GL_LINE-mode polygons didn't obey cull state
+ - fixed potential bug in _mesa_align_malloc/calloc()
+ - fixed missing triangle bug when running vertex programs
+ - fixed a few HPUX compilation problems
+ - FX (Glide) driver didn't compile
+ - setting GL_TEXTURE_BORDER_COLOR with glTexParameteriv() didn't work
+ - a few EXT functions, like glGenTexturesEXT, were no-ops
+ - a few OpenGL 1.4 functions like glFogCoord*, glBlendFuncSeparate,
+ glMultiDrawArrays and glMultiDrawElements were missing
+ - glGet*(GL_ACTIVE_STENCIL_FACE_EXT) was broken
+ - Pentium 4 Mobile was mistakenly identified as having 3DNow!
+ - fixed one-bit error in point/line fragment Z calculation
+ - fixed potential segfault in fakeglx code
+ - fixed color overflow problem in DOT3 texture env mode
+
+
+5.0.1 March 30, 2003
+ New:
+ - DOS driver updates from Daniel Borca
+ - updated GL/gl_mangle.h file (Bill Hoffman)
+ Bug fixes:
+ - auto mipmap generation for cube maps was broken (bug 641363)
+ - writing/clearing software alpha channels was unreliable
+ - minor compilation fixes for OS/2 (Evgeny Kotsuba)
+ - fixed some bad assertions found with shadowtex demo
+ - fixed error checking bug in glCopyTexSubImage2D (bug 659020)
+ - glRotate(angle, -x, 0, 0) was incorrect (bug 659677)
+ - fixed potential segfault in texture object validation (bug 659012)
+ - fixed some bogus code in _mesa_test_os_sse_exception_support (Linus)
+ - fix fog stride bug in tnl code for h/w drivers (Michel Danzer)
+ - fixed glActiveTexture / glMatrixMode(GL_TEXTURE) bug (#669080)
+ - glGet(GL_CURRENT_SECONDARY_COLOR) should return 4 values, not 3
+ - fixed compilation problem on Solaris7/x86 (bug 536406)
+ - fixed prefetch bug in 3DNow! code (Felix Kuhling)
+ - fixed NeXT build problem (FABSF macro)
+ - glDrawPixels Z values when glPixelZoom!=1 were invalid (bug 687811)
+ - zoomed glDraw/CopyPixels with clipping sometimes failed (bug 689964)
+ - AA line and triangle Z values are now rounded, not truncated
+ - fixed color interpolation bug when GLchan==GLfloat (bug 694461)
+ - glArePrograms/TexturesResident() wasn't 100% correct (Jose Fonseca)
+ - fixed a minor GL_COLOR_MATERIAL bug
+ - NV vertex program EXP instruction was broken
+ - glColorMask misbehaved with X window / pixmap rendering
+ - fix autoconf/libtool GLU C++ linker problem on Linux (a total hack)
+ - attempt to fix GGI compilation problem when MesaDemos not present
+ - NV vertex program ARL-relative fetches didn't work
+ Changes:
+ - use glPolygonOffset in gloss demo to avoid z-fighting artifacts
+ - updated winpos and pointblast demos to use ARB extensions
+ - disable SPARC normal transformation code (bug 673938)
+ - GLU fixes for OS/2 (Evgeny Kotsuba)
+
+
+5.0.2 September 5, 2003
+ Bug fixes:
+ - fixed texgen problem causing texcoord's Q to be zero (stex3d)
+ - default GL_TEXTURE_COMPARE_MODE_ARB was wrong
+ - GL_CURRENT_MATRIX_NV query was wrong
+ - GL_CURRENT_MATRIX_STACK_DEPTH_NV query was off by one
+ - GL_LIST_MODE query wasn't correct
+ - GL_FOG_COORDINATE_SOURCE_EXT query wasn't supported
+ - GL_SECONDARY_COLOR_ARRAY_SIZE_EXT query returned wrong value
+ - blended, wide lines didn't always work correctly (bug 711595)
+ - glVertexAttrib4svNV w component was always 1
+ - fixed bug in GL_IBM_rasterpos_clip (missing return)
+ - GL_DEPTH_TEXTURE_MODE = GL_ALPHA didn't work correctly
+ - a few Solaris compilation fixes
+ - fixed glClear() problem for DRI drivers (non-existant stencil, etc)
+ - fixed int/REAL mixup in GLU NURBS curve evaluator (Eric Cazeaux)
+ - fixed delete [] bug in SI GLU (bug 721765) (Diego Santa Cruz)
+ - glFog() didn't clamp fog colors
+ - fixed bad float/int conversion for GL_TEXTURE_PRIORITY in the
+ gl[Get]TexParameteri[v] functions
+ - fixed invalid memory references in glTexGen functions (bug 781602)
+ - integer-valued color arrays weren't handled correctly
+ - glDrawPixels(GL_DEPTH_COMPONENT) with glPixelZoom didn't work
+ - GL_EXT_texture_lod_bias is part of 1.4, overlooked in 5.0.1
+ Changes:
+ - build GLUT with -fexceptions so C++ apps propogate exceptions
+
+
+5.1 December 17, 2003
+ New:
+ - reorganized directory tree
+ - GL_ARB_vertex/fragment_program extensions (Michal Krol & Karl Rasche)
+ - GL_ATI_texture_env_combine3 extension (Ian Romanick)
+ - GL_SGI_texture_color_table extension (Eric Plante)
+ - GL_NV_fragment_program extension
+ - GL_NV_light_max_exponent extension
+ - GL_EXT_texture_rectangle (identical to GL_NV_texture_rectangle)
+ - GL_ARB_occlusion_query extension
+ - GL_ARB_point_sprite extension
+ - GL_ARB_texture_non_power_of_two extension
+ - GL_IBM_multimode_draw_arrays extension
+ - GL_EXT_texture_mirror_clamp extension (Ian Romanick)
+ - GL_ARB_vertex_buffer_object extension
+ - new X86 feature detection code (Petr Sebor)
+ - less memory used for display lists and vertex buffers
+ - demo of per-pixel lighting with a fragment program (demos/fplight.c)
+ - new version (18) of glext.h header
+ - new spriteblast.c demo of GL_ARB_point_sprite
+ - faster glDrawPixels in X11 driver in some cases (see RELNOTES-5.1)
+ - faster glCopyPixels in X11 driver in some cases (see RELNOTES-5.1)
+ Bug fixes:
+ - really enable OpenGL 1.4 features in DOS driver.
+ - fixed issues in glDrawPixels and glCopyPixels for very wide images
+ - glPixelMapf/ui/usv()'s size parameter is GLsizei, not GLint
+ - fixed some texgen bugs reported by Daniel Borca
+ - fixed wglMakeCurrent(NULL, NULL) bug (#835861)
+ - fixed glTexSubImage3D z-offset bug (Cedric Gautier)
+ - fixed RGBA blend enable bug (Ville Syrjala)
+ - glAccum is supposed to be a no-op in selection/feedback mode
+ - fixed texgen bug #597589 (John Popplewell)
+ Changes:
+ - dropped API trace feature (src/Trace/)
+ - documentation overhaul. merged with website content. more html.
+ - glxgears.c demo updated to use GLX swap rate extensions
+ - glTexImage1/2/3D now allows width/height/depth = 0
+ - disable SPARC asm code on Linux (bug 852204)
+
+
+6.0 January 16, 2004
+ New:
+ - full OpenGL 1.5 support
+ - updated GL/glext.h file to version 21
+ Changes:
+ - changed max framebuffer size to 4Kx4K (MAX_WIDTH/HEIGHT in config.h)
+ Bug fixes:
+ - fixed bug in UNCLAMPED_FLOAT_TO_UBYTE macro; solves a color
+ clamping issue
+ - updated suno5-gcc configs
+ - glColor3 functions sometimes resulted in undefined alpha values
+ - fixed FP divide by zero error seen on VMS with xlockmore, others
+ - fixed vertex/fragment program debug problem (bug 873011)
+ - building on AIX with gcc works now
+ - glDeleteProgramsARB failed for ARB fragment programs (bug 876160)
+ - glDrawRangeElements tried to modify potentially read-only storage
+ - updated files for building on Windows
+
+
+6.0.1 April 2, 2004
+ New:
+ - upgraded glext.h to version 22
+ - new build targets (Dan Schikore)
+ - new linux-x86-opteron build target (Heath Feather)
+ Bug fixes:
+ - glBindProgramARB didn't update all necessary state
+ - fixed build problems on OpenBSD
+ - omit CVS directories from tarballs
+ - glGetTexImage(GL_COLOR_INDEX) was broken
+ - fixed an infinite loop in t&l module
+ - silenced some valgrind warnings about using unitialized memory
+ - fixed some compilation/link glitches on IRIX (Mike Stephens)
+ - glBindProgram wasn't getting compiled into display lists
+ - GLX_FBCONFIG_ID wasn't recognized in glXChooseFBConfig() (bug 888079)
+ - two-sided lighting and vertex program didn't work (bug 887330)
+ - stores to program parameter registers in vertex state programs
+ didn't work.
+ - fixed glOrtho bug found with gcc 3.2.2 (RH9)
+ - glXCreateWindow() wasn't fully implemented (bug 890894)
+ - generic vertex attribute arrays didn't work in display lists
+ - vertex buffer objects' default usage and access fields were wrong
+ - glDrawArrays with start!=0 was broken
+ - fragment program PK2H, UP2H, UP4B and UP4UB instructions were broken
+ - linux-osmesa16-static config didn't work
+ - fixed a few color index rendering problems (bug 910687)
+ - glInterleavedArrays didn't respect GL_CLIENT_ACTIVE_TEXTURE
+ - OSMesa RGB and BGR modes were broken
+ - glProgramStringARB mistakenly required a null-terminated string
+ - fragment program XPD instruction was incorrect
+ - glGetMaterial() didn't work reliably
+ - ARB_fragment_program KIL instruction was incorrect
+
+
+6.1 August 18, 2004
+ New:
+ - Revamped Makefile system
+ - glXUseRotatedXFont() utility (see xdemos/xuserotfont.c)
+ - internal driver interface changes related to texture object
+ allocation, vertex/fragment programs, BlendEquationSeparate, etc.
+ - option to walk triangle edges with double-precision floats
+ (Justin Novosad of Discreet) (see config.h file)
+ - support for AUX buffers in software GLX driver
+ - updated glext.h to version 24 and glxext.h to version 6
+ - new MESA_GLX_FORCE_ALPHA and MESA_GLX_DEPTH_BITS env vars
+ - updated BeOS support (Philippe Houdoin)
+ Changes:
+ - fragment fog interpolation is perspective corrected now
+ - new glTexImage code, much cleaner, may be a bit faster
+ Bug fixes:
+ - glArrayElement in display lists didn't handle generic vertex attribs
+ - glFogCoord didn't always work properly
+ - ARB_fragment_program fog options didn't work
+ - frag prog TEX instruction no longer incorrectly divides s,t,r by q
+ - ARB frag prog TEX and TEXP instructions now use LOD=0
+ - glTexEnviv in display lists didn't work
+ - glRasterPos didn't do texgen or apply texture matrix
+ - GL_DOUBLE-valued vertex arrays were broken in some cases
+ - fixed texture rectangle edge/border sampling bugs
+ - sampling an incomplete texture in a fragment program would segfault
+ - glTexImage was missing a few error checks
+ - fixed some minor glGetTexParameter glitches
+ - GL_INTENSITY was mistakenly accepted as a <format> to glTexImage
+ - fragment program writes to RC/HC register were broken
+ - fixed a few glitches in GL_HP_occlusion_test extension
+ - glBeginQueryARB and glEndQueryARB didn't work inside display lists
+ - vertex program state references were broken
+ - fixed triangle color interpolation bug on AIX (Shane Blackett)
+ - fixed a number of minor memory leaks (bug #1002030)
+
+
+6.2 October 2, 2004
+ New:
+ - enabled GL_ARB_texture_rectangle (same as GL_NV_texture_rectangle)
+ - updated Doxygen support (Jose Fonseca)
+ Changes:
+ - some GGI driver updates (Christoph Egger, bug 1025977)
+ Bug fixes:
+ - Omit GL_ARB_texture_non_power_of_two from list of OpenGL 1.5 features
+ - fixed a few compilation issues on IRIX
+ - fixed a matrix classification bug (reported by Wes Bethel)
+ - we weren't reseting the vertex/fragment program error state
+ before parsing (Dave Reveman)
+ - adjust texcoords for sampling texture rectangles (Dave Reveman)
+ - glGet*(GL_MAX_VERTEX_ATTRIBS_ARB) wasn't implemented
+ - repeated calls to glDeleteTexture(t) could lead to a crash
+ - fixed potential ref count bugs in VBOs and vertex/fragment programs
+ - spriteblast demo didn't handle window size changes correctly
+ - glTexSubImage didn't handle pixels=NULL correctly for PBOs
+ - fixed color index mode glDrawPixels bug (Karl Schultz)
+
+
+6.2.1 December 9, 2004
+ Bug fixes:
+ - don't apply regular fog or color sum when using a fragment program
+ - glProgramEnvParameter4fARB always generated an error on
+ GL_FRAGMENT_PROGRAM_ARB (fdo bug 1645)
+ - glVertexAttrib3svNV and glVertexAttrib3svARB were broken
+ - fixed width/height mix-up in glSeparableFilter2D()
+ - fixed regression in glCopyPixels + convolution
+ - glReadPixels from a clipped front color buffer didn't always work
+ - glTexImage didn't accept GL_RED/GREEN/BLUE as the format
+ - Attempting queries/accesses of VBO 0 weren't detected as errors
+ - paletted textures failed if the palette had fewer than 256 entries
+ Changes:
+ - fixed a bunch of compiler warnings found with gcc 3.4
+ - bug reports should to go bugzilla.freedesktop.org
+
+
+6.3 July 20, 2005
+ New:
+ - GL_EXT_framebuffer_object extension
+ - GL_ARB_draw_buffers extension
+ - GL_ARB_pixel_buffer_object extension
+ - GL_OES_read_format extension (Ian Romanick)
+ - DirectFB driver (Claudio Ciccani)
+ - x86_64 vertex transformation code (Mikko T.)
+ - Updated GL/glext.h to version 29
+ Changes:
+ - added -stereo option for glxgears demo (Jacek Rosik)
+ - updated the PBuffer demo code in xdemos/ directory
+ - glDeleteTextures/Programs/Buffers() now makes the object ID
+ available for immediate re-use
+ - assorted 64-bit clean-ups fixes (x86_64 and Win64)
+ - lots of internal changes for GL_EXT_framebuffer_object
+ Bug fixes:
+ - some functions didn't support PBO functionality
+ - glGetTexImage didn't convert color index images to RGBA as required
+ - fragment program texcoords were sometimes wrong for points and lines
+ - fixed problem with negative dot product in arbfplight, fplight demos
+ - fixed bug in perspective correction of antialiased, textured lines
+ - querying GL_POST_CONVOLUTION_ALPHA_BIAS_EXT returned wrong value
+ - fixed a couple per-pixel fog bugs (Soju Matsumoto)
+ - glGetBooleanv(GL_FRAGMENT_PROGRAM_BINDING_NV) was broken
+ - fixed float parsing bug in ARB frag/vert programs (bug 2520)
+ - XMesaGetDepthBuffer() returned incorrect value for bytesPerValue
+ - GL_COLOR_MATERIAL with glColor3 didn't properly set diffuse alpha
+ - glXChooseFBConfig() crashed if attribList pointer was NULL
+ - program state.light[n].spot.direction.w was wrong value (bug 3083)
+ - fragment program fog option required glEnable(GL_FOG) - wrong.
+ - glColorTable() could produce a Mesa implementation error (bug 3135)
+ - RasterPos could get corrupted by color index rendering path
+ - Removed bad XTranslateCoordinates call when rendering to Pixmaps
+ - glPopAttrib() didn't properly restore GL_TEXTURE_GEN enable state
+ - fixed a few Darwin compilation problems
+
+
+6.3.1
+ This was an intermediate release for X.org which wasn't otherwise released.
+
+
+6.3.2 August 19, 2005
+ New:
+ - The distribution now includes the DRI drivers and GLX code
+ Changes:
+ - Made the DRI "new" driver interface standard, remove old code
+ Bug fixes:
+ - GL_ARB_vertex/fragment_shader were mistakenly listed in the
+ extensions string
+ - negative relative addressing in vertex programs was broken
+ - update/fix SPARC assembly code for vertex transformation
+ - fixed memory leak when freeing GLX drawables/renderbuffers
+ - fixed display list memory leak
+ - the GL_PIXEL_MAP_I_TO_I table is now floating point, not integer
+ - wglGetProcAddress() didn't handle wgl-functions
+ - fixed glxext.h cross-compile issue (Colin Harrison)
+ - assorted DRI driver fixes
+
+
+6.4 October 24, 2005
+ New:
+ - Added a fast XOR line drawing function in Xlib driver
+ - Added support for GL_ARB_texture_mirrored_repeat to savage
+ driver (supported only on Savage4 hardware).
+ Changes:
+ - Mesa now packaged in three parts: Library, Demos and GLUT
+ Bug fixes:
+ - GLX_X_RENDERABLE token wasn't accepted by glXChooseFBConfig
+ - Some files were present multiple times in the 6.3.2 tarballs
+ - r200_vtxtmp_x86.S file was missing from 6.3.2 tarball (bug 4207)
+ - glxgears_fbconfig demo didn't work (bug 4237)
+ - fixed bug when bilinear sampling 2d textures with borders
+ - glXCreatePbuffer() could segfault instead of returning 0 (bug 4235)
+ - fixed undefined frexp and rand in X.org libGLcore.a (bug 4242)
+ - fixed a few problems with proxy color tables (bug 4270)
+ - fixed precision problem in Z clearing (bug 4395)
+ - glBitmap, glDraw/CopyPixels mistakenly generated selection hits
+ - fixed potential segfault caused by reading pixels outside
+ of renderbuffer bounds
+ - glGetTexLevelParameter didn't accept GL_TEXTURE_DEPTH_SIZE_ARB
+ - fixed memory corruption bug involving software alpha buffers
+ - glReadPixels clipped by window bounds was sometimes broken
+ - glDraw/CopyPixels of stencil data ignored the stencil write mask
+ - glReadPixels from a texture bound to a framebuffer object didn't work
+ - glIsRender/FramebufferEXT weren't totally correct
+ - fixed a number of point size attenuation/fade bugs
+ - fixed glFogCoord bug 4729
+ - GLX encoding for transpose matrix functions was broken
+ - fixed broken fragment program KIL and SWZ instructions
+ - fragment programs that wrote result.depth.z didn't work
+
+
+6.4.1 November 30, 2005
+ Bug fixes:
+ - redefining a vertex program string didn't take effect in TNL module
+ - fixed occasional segfault upon vertex/fragment parsing error
+ - vertex program LIT instruction didn't handle 0^0=1 correctly
+ - fragment program fog option didn't work with glDrawPixels, glBitmap
+ - USE_MGL_NAMESPACE didn't work for x86-64
+ - OSMesa demos were missing from previous release tarballs
+ - fixed problem with float->ushort conversion in glClear (bug 4992)
+ - popping of GL_EYE_PLANE texgen state was broken (bug 4996)
+ - popping of GL_SPOT_DIRECTION light state was broken (bug 5005)
+ - fixed occasional triangle color interpolation problem on VMS
+ - work around invalid free() call (bug 5131)
+ - fixed BSD X server compilation problem by including stdint.h
+
+
+6.4.2 February 2, 2006
+ New:
+ - added OSMesaColorClamp() function/feature
+ - added wglGetExtensionStringARB() function
+ Bug fixes:
+ - fixed some problems when building on Windows
+ - GLw header files weren't installed by installmesa script (bug 5396)
+ - GL/glfbdev.h file was missing from tarballs
+ - fixed TNL initialization bug which could lead to crash (bug 5791)
+
+
+6.5 March 31, 2006
+ New:
+ - OpenGL Shading Language support through GL_ARB_shader_objects,
+ GL_ARB_shading_language_100, GL_ARB_vertex_shader and
+ GL_ARB_fragment_shader (done by Michal Krol)
+ - GL_EXT_packed_depth_stencil extension
+ - GL_EXT_timer_query extension
+ - GL_EXT_framebuffer_blit extension
+ - GL_ARB_half_float_pixel
+ - reflect demo improved to support multiple windows
+ - singlebuffer demo (shows no/little-flicker single-buffered rendering)
+ - r200: enable GL_ARB_texture_env_crossbar, separate the texture
+ sampling unit bits from the texture env combine enable bits
+ - r200: add support for GL_ATI_fragment_shader
+ - added fast XOR-mode line drawing optimization
+ - radeon: add support for all 3 tmus, GL_ARB_texture_cube_map
+ and GL_EXT_fog_coord
+ - MESA_GLX_ALPHA_BITS env var for xlib driver
+ - many DRI driver updates (including screen rotation support
+ for the Intel DRI driver)
+ Changes:
+ - removed GL_HP_occlusion_test (use GL_ARB_occlusion_query instead)
+ - removed GL_SGIX/SGIS_pixel_texture extensions
+ Bug fixes:
+ - fixed glxcontextmodes.c datatype problem (bug 5835)
+ - fixed aix-gcc build/install bugs (bug 5874)
+ - fixed some bugs in texture env program generation
+ - glXCopyContext() didn't handle texture object bindings properly
+ - glXCopyContext() didn't copy all lighting state
+ - fixed FreeBSD config (Pedro Giffuni)
+ - fixed some minor framebuffer object bugs
+ - replaced dprintf() with _glu_printf() in GLU (bug 6244)
+ - fixed a number of thread safety bugs/regressions
+ - fixed a number of GLU tesselator bugs (John Shell, bug 6339)
+ - paletted texturing was broken w/ floating point palettes (K. Schultz)
+ - lots of assorted framebuffer object bug fixes
+
+6.5.1 August 31, 2006
+ New:
+ - Intel i965 DRI driver
+ - GL_APPLE_vertex_array_object extension (Ian Romanick)
+ - GL_EXT_texture_sRGB extension
+ - GL_EXT_gpu_program_parameters (Ian Romanick)
+ - "engine" demo
+ - updated fbdev driver and GLUT for fbdev (Sean D'Epagnier)
+ - many updates to the DRI drivers
+ Changes:
+ - The glVertexAttribARB functions no longer alias the conventional
+ vertex attributes.
+ - glxinfo program prints more info with -l option
+ - GL_FRAGMENT_PROGRAM_NV and GL_FRAGMENT_PROGRAM_ARB are now
+ compatible, in terms of glBindProgramARB()
+ Bug fixes:
+ - fixed broken texture border handling for depth textures (bug 6498)
+ - removed the test for duplicated framebuffer attachments, per
+ version 117 of the GL_EXT_framebuffer_object specification
+ - fixed a few render-to-texture bugs, including render to depth texture
+ - clipping of lines against user-defined clip planes was broken (6512)
+ - assembly language dispatch for SPARC was broken (bug 6484)
+ - assorted compilation fixes on various Unix platforms (Dan Schikore)
+ - glPopAttrib could restore an invalid value for GL_DRAW_BUFFER
+ - assorted minor fixes for 16 and 32 bit/channel modes
+ - fixed assorted bugs in texture compression paths
+ - fixed indirect rendering vertex array crashes (bug 6863)
+ - glDrawPixels GL_INDEX_OFFSET didn't always work
+ - fixed convolution memory leak (bug 7077)
+ - rectangular depth textures didn't work
+ - invalid mode to glBegin didn't generate an error (bug 7142)
+ - 'normalized' parameter to glVertexAttribPointerARB didn't work
+ - disable bogus GLX_SGI_video_sync extension in xlib driver
+ - fixed R128 driver locking bug (Martijn van Oosterhout)
+ - using evaluators with vertex programs caused crashes (bug 7564)
+ - fragment.position wasn't set correctly for point/line primitives
+ - fixed parser bug for scalar sources for GL_NV_fragment_program
+ - max fragment program length was incorrectly 128, now 1024
+ - writes to result.depth in fragment programs weren't clamped to [0,1]
+ - fixed potential dangling pointer bug in glBindProgram()
+ - fixed some memory leaks (and potential crashes) in Xlib driver
diff --git a/mesalib/docs/enums.txt b/mesalib/docs/enums.txt
index cb97b5a31..b37768e20 100644
--- a/mesalib/docs/enums.txt
+++ b/mesalib/docs/enums.txt
@@ -1,57 +1,57 @@
-
-See the OpenGL ARB enum registry at http://www.opengl.org/registry/api/enum.spec
-
-Blocks allocated to Mesa:
- 0x8750-0x875F
- 0x8BB0-0x8BBF
-
-
-GL_MESA_packed_depth_stencil
- GL_DEPTH_STENCIL_MESA 0x8750
- GL_UNSIGNED_INT_24_8_MESA 0x8751
- GL_UNSIGNED_INT_8_24_REV_MESA 0x8752
- GL_UNSIGNED_SHORT_15_1_MESA 0x8753
- GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
-
-GL_MESA_trace.spec:
- GL_TRACE_ALL_BITS_MESA 0xFFFF
- GL_TRACE_OPERATIONS_BIT_MESA 0x0001
- GL_TRACE_PRIMITIVES_BIT_MESA 0x0002
- GL_TRACE_ARRAYS_BIT_MESA 0x0004
- GL_TRACE_TEXTURES_BIT_MESA 0x0008
- GL_TRACE_PIXELS_BIT_MESA 0x0010
- GL_TRACE_ERRORS_BIT_MESA 0x0020
- GL_TRACE_MASK_MESA 0x8755
- GL_TRACE_NAME_MESA 0x8756
-
-MESA_ycbcr_texture.spec:
- GL_YCBCR_MESA 0x8757
- GL_UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */
- GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */
-
-GL_MESA_pack_invert.spec
- GL_PACK_INVERT_MESA 0x8758
-
-GL_MESA_shader_debug.spec: (obsolete)
- GL_DEBUG_OBJECT_MESA 0x8759
- GL_DEBUG_PRINT_MESA 0x875A
- GL_DEBUG_ASSERT_MESA 0x875B
-
-GL_MESA_program_debug.spec: (obsolete)
- GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x????
- GL_VERTEX_PROGRAM_CALLBACK_MESA 0x????
- GL_FRAGMENT_PROGRAM_POSITION_MESA 0x????
- GL_VERTEX_PROGRAM_POSITION_MESA 0x????
- GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x????
- GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x????
- GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x????
- GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x????
-
-GL_MESAX_texture_stack:
- GL_TEXTURE_1D_STACK_MESAX 0x8759
- GL_TEXTURE_2D_STACK_MESAX 0x875A
- GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
- GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
- GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
- GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
-
+
+See the OpenGL ARB enum registry at http://www.opengl.org/registry/api/enum.spec
+
+Blocks allocated to Mesa:
+ 0x8750-0x875F
+ 0x8BB0-0x8BBF
+
+
+GL_MESA_packed_depth_stencil
+ GL_DEPTH_STENCIL_MESA 0x8750
+ GL_UNSIGNED_INT_24_8_MESA 0x8751
+ GL_UNSIGNED_INT_8_24_REV_MESA 0x8752
+ GL_UNSIGNED_SHORT_15_1_MESA 0x8753
+ GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754
+
+GL_MESA_trace.spec:
+ GL_TRACE_ALL_BITS_MESA 0xFFFF
+ GL_TRACE_OPERATIONS_BIT_MESA 0x0001
+ GL_TRACE_PRIMITIVES_BIT_MESA 0x0002
+ GL_TRACE_ARRAYS_BIT_MESA 0x0004
+ GL_TRACE_TEXTURES_BIT_MESA 0x0008
+ GL_TRACE_PIXELS_BIT_MESA 0x0010
+ GL_TRACE_ERRORS_BIT_MESA 0x0020
+ GL_TRACE_MASK_MESA 0x8755
+ GL_TRACE_NAME_MESA 0x8756
+
+MESA_ycbcr_texture.spec:
+ GL_YCBCR_MESA 0x8757
+ GL_UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */
+ GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */
+
+GL_MESA_pack_invert.spec
+ GL_PACK_INVERT_MESA 0x8758
+
+GL_MESA_shader_debug.spec: (obsolete)
+ GL_DEBUG_OBJECT_MESA 0x8759
+ GL_DEBUG_PRINT_MESA 0x875A
+ GL_DEBUG_ASSERT_MESA 0x875B
+
+GL_MESA_program_debug.spec: (obsolete)
+ GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x????
+ GL_VERTEX_PROGRAM_CALLBACK_MESA 0x????
+ GL_FRAGMENT_PROGRAM_POSITION_MESA 0x????
+ GL_VERTEX_PROGRAM_POSITION_MESA 0x????
+ GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x????
+ GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x????
+ GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x????
+ GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x????
+
+GL_MESAX_texture_stack:
+ GL_TEXTURE_1D_STACK_MESAX 0x8759
+ GL_TEXTURE_2D_STACK_MESAX 0x875A
+ GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B
+ GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C
+ GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D
+ GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E
+
diff --git a/mesalib/docs/install.html b/mesalib/docs/install.html
index 2ba7cb867..a344c2ca7 100644
--- a/mesalib/docs/install.html
+++ b/mesalib/docs/install.html
@@ -16,8 +16,7 @@
<li><a href="#prereq-dri">For DRI and hardware acceleration</a>
</ul>
<li><a href="#autoconf">Building with autoconf (Linux/Unix/X11)</a>
-<li><a href="#scons">Building with SCons (Windows)</a>
-<li><a href="#legacy">Building with legacy Makefiles (deprecated)</a>
+<li><a href="#scons">Building with SCons (Windows/Linux)</a>
<li><a href="#other">Building for other systems</a>
<li><a href="#libs">Library Information</a>
<li><a href="#pkg-config">Building OpenGL programs with pkg-config
@@ -95,7 +94,7 @@ for more details.
<a name="scons">
-<H1>3. Building with SCons (Windows)</H1>
+<H1>3. Building with SCons (Windows/Linux)</H1>
<p>
To build Mesa with SCons on Linux or Windows do
@@ -129,118 +128,8 @@ Put them all in the same directory to test them.
-<a name="legacy">
-<h1>4. Building with legacy Makefiles (deprecated)</h1>
-
-<p>
-The legacy Mesa build system is based on a collection of pre-defined
-system configurations.
-Some of these might work for older systems not supported by autoconf.
-</p>
-<p>
-To see the list of configurations, just type <code>make</code>.
-Then choose a configuration from the list and type <code>make</code>
-<em>configname</em>.
-</p>
-
-<p>
-Mesa may be built in several different ways using the predefined configurations:
-</p>
-<ul>
-<li><b><em>Stand-alone/Xlib mode</em></b> - Mesa will be compiled as
-a software renderer using Xlib to do all rendering.
-The libGL.so library will be a self-contained rendering library that will
-allow you to run OpenGL/GLX applications on any X server (regardless of
-whether it supports the GLX X server extension).
-You will <em>not</em> be able to use hardware 3D acceleration.
-<p>
-To compile stand-alone Mesa type <code>make</code> in the top-level directory.
-You'll see a list of supported system configurations.
-Choose one from the list (such as linux-x86), and type:
-</p>
-<pre>
- make linux-x86
-</pre>
-<p>This will produce libGL.so and several other libraries</p>
-</li>
-
-<li><b><em>DRI/accelerated</em></b> - The DRI hardware drivers for
-accelerated OpenGL rendering (for ATI, Intel, Matrox, etc) will be built.
-The libGL.so library will support the GLX extension and will load/use
-the DRI hardware drivers.
-
-
-<p>
-Build Mesa and the DRI hardware drivers by running
-</p>
-<pre>
- make linux-dri
-</pre>
-<p>
-There are also <code>linux-dri-x86</code>, <code>linux-dri-x86-64</code>,
-and <code>linux-ppc</code> configurations which are optimized for those
-architectures.
-</p>
-<p>
-Make sure you have the prerequisite versions of DRM and Xserver mentioned
-above.
-</p>
-
-</ul>
-
-
-<p>
-Later, if you want to rebuild for a different configuration run
-<code>make realclean</code> before rebuilding.
-</p>
-
-
-
-<a name="install">
-<H2>Installing the header and library files</H2>
-
-<p>
-The standard location for the OpenGL header files on Unix-type systems is
-in <code>/usr/include/GL/</code>.
-The standard location for the libraries is <code>/usr/lib/</code>.
-For more information see, the
-<a href="http://oss.sgi.com/projects/ogl-sample/ABI/" target="_parent">
-Linux/OpenGL ABI specification</a>.
-</p>
-
-<p>
-If you'd like Mesa to co-exist with another implementation of OpenGL that's
-already installed, you'll have to choose different directories, like
-<code>/usr/local/include/GL/</code> and <code>/usr/local/lib/</code>.
-</p>
-
-<p>
-To install Mesa's headers and libraries, run <code>make install</code>.
-But first, check the Mesa/configs/default file and examine the values
-of the <b>INSTALL_DIR</b> and <b>DRI_DRIVER_INSTALL_DIR</b> variables.
-Change them if needed, then run <code>make install</code>.
-</p>
-
-<p>
-The variable
-<b>DESTDIR</b> may also be used to install the contents to a temporary
-staging directory.
-This can be useful for package management.
-For example: <code>make install DESTDIR=/somepath/</code>
-</p>
-
-<p>
-Note: at runtime you can use the LD_LIBRARY_PATH environment variable
-(on Linux at least) to switch
-between the Mesa libraries and other vendor's libraries whenever you want.
-This is a handy way to compare multiple OpenGL implementations.
-</p>
-
-
-
-
<a name="other">
-<H1>5. Building for other systems</H1>
+<H1>4. Building for other systems</H1>
<p>
Documentation for other environments (some may be very out of date):
@@ -255,7 +144,7 @@ Documentation for other environments (some may be very out of date):
<a name="libs">
-<H1>6. Library Information</H1>
+<H1>5. Library Information</H1>
<p>
When compilation has finished, look in the top-level <code>lib/</code>
@@ -300,7 +189,7 @@ versions of libGL and device drivers.
<a name="pkg-config">
-<H1>7. Building OpenGL programs with pkg-config</H1>
+<H1>6. Building OpenGL programs with pkg-config</H1>
<p>
Running <code>make install</code> will install package configuration files
diff --git a/mesalib/docs/mesa.css b/mesalib/docs/mesa.css
index 8e4944e44..a53a9df8b 100644
--- a/mesalib/docs/mesa.css
+++ b/mesalib/docs/mesa.css
@@ -1,33 +1,33 @@
-/* Mesa CSS */
-body {
- background-color: #ffffff;
- font: 14px 'Lucida Grande', Geneva, Arial, Verdana, sans-serif;
- color: black;
- link: #111188;
-}
-
-h1 {
- font: 24px 'Lucida Grande', Geneva, Arial, Verdana, sans-serif;
- font-weight: bold;
- color: black;
-}
-
-h2 {
- font: 18px 'Lucida Grande', Geneva, Arial, Verdana, sans-serif, bold;
- font-weight: bold;
- color: black;
-}
-
-code {
- font-family: monospace;
- font-size: 10pt;
- color: black;
-}
-
-
-pre {
- /*font-family: monospace;*/
- font-size: 10pt;
- /*color: black;*/
-}
-
+/* Mesa CSS */
+body {
+ background-color: #ffffff;
+ font: 14px 'Lucida Grande', Geneva, Arial, Verdana, sans-serif;
+ color: black;
+ link: #111188;
+}
+
+h1 {
+ font: 24px 'Lucida Grande', Geneva, Arial, Verdana, sans-serif;
+ font-weight: bold;
+ color: black;
+}
+
+h2 {
+ font: 18px 'Lucida Grande', Geneva, Arial, Verdana, sans-serif, bold;
+ font-weight: bold;
+ color: black;
+}
+
+code {
+ font-family: monospace;
+ font-size: 10pt;
+ color: black;
+}
+
+
+pre {
+ /*font-family: monospace;*/
+ font-size: 10pt;
+ /*color: black;*/
+}
+
diff --git a/mesalib/docs/relnotes-7.10.html b/mesalib/docs/relnotes-7.10.html
index bb73975b7..3f4f229b0 100644
--- a/mesalib/docs/relnotes-7.10.html
+++ b/mesalib/docs/relnotes-7.10.html
@@ -1,2795 +1,2795 @@
-<HTML>
-
-<head>
-<TITLE>Mesa Release Notes</TITLE>
-<link rel="stylesheet" type="text/css" href="mesa.css">
-<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-</head>
-
-<BODY>
-
-<body bgcolor="#eeeeee">
-
-<H1>Mesa 7.10 Release Notes / January 7, 2011</H1>
-
-<p>
-Mesa 7.10 is a new development release.
-People who are concerned with stability and reliability should stick
-with a previous release or wait for Mesa 7.10.1.
-</p>
-<p>
-Mesa 7.10 implements the OpenGL 2.1 API, but the version reported by
-glGetString(GL_VERSION) depends on the particular driver being used.
-Some drivers don't support all the features required in OpenGL 2.1.
-</p>
-<p>
-See the <a href="install.html">Compiling/Installing page</a> for prerequisites
-for DRI hardware acceleration.
-</p>
-
-
-<h2>MD5 checksums</h2>
-<pre>
-0a70c15c135561824bdcae92bf232e43 MesaLib-7.10.tar.gz
-33fb94eccc02cbb4d8d1365615e38e46 MesaLib-7.10.tar.bz2
-5cafdc0eda0f9bf370b95c98df3338fa MesaLib-7.10.zip
-bc644be551ed585fc4f66c16b64a91c9 MesaGLUT-7.10.tar.gz
-5c2677a155672352d62b177e4f0f92e8 MesaGLUT-7.10.tar.bz2
-2ce5001f74496d1ba719ef74d910a5cf MesaGLUT-7.10.zip
-</pre>
-
-
-<h2>New features</h2>
-<ul>
-<li>GL_ARB_explicit_attrib_location extension (Intel and software drivers).
-<li>GL_ARB_texture_rg (Intel, software drivers, gallium drivers).
-<li>GL_EXT_separate_shader_objects extension (Intel and software drivers).
-<li>GL_NV_primitive_restart extension (Gallium softpipe, llvmpipe).
-<li>New fragment shader back-end for i965-class hardware.
-<li>Support for Sandybridge chipset in i965 DRI driver.
-</ul>
-
-
-<h2>Bug fixes</h2>
-<p>This list is likely incomplete.</p>
-<ul>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28800">Bug 28800</a> - [r300c, r300g] Texture corruption with World of Warcraft</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29420">Bug 29420</a> - Amnesia / HPL2 RendererFeatTest - not rendering correctly</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29946">Bug 29946</a> - [swrast] piglit valgrind glsl-array-bounds-04 fails</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30261">Bug 30261</a> - [GLSL 1.20] allowing inconsistent invariant declaration between two vertex shaders</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30632">Bug 30632</a> - [softpipe] state_tracker/st_manager.c:489: st_context_notify_invalid_framebuffer: Assertion `stfb &amp;&amp; stfb-&gt;iface == stfbi' failed.</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30694">Bug 30694</a> - wincopy will crash on Gallium drivers when going to front buffer</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30771">Bug 30771</a> - [r600g] vert-tex glsl demo</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30787">Bug 30787</a> - Invalid asm shader does not generate draw-time error when used with GLSL shader</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30974">Bug 30974</a> - [llvmpipe] SIGABRT src/gallium/drivers/llvmpipe/lp_state_fs.c:779</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30993">Bug 30993</a> - getFramebufferAttachmentParameteriv wrongly generates error</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31101">Bug 31101</a> - [glsl2] abort() in ir_validate::visit_enter(ir_assignment *ir)</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31193">Bug 31193</a> - [regression] aa43176e break water reflections</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31194">Bug 31194</a> - The mesa meta save/restore code doesn't ref the current GLSL program</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31371">Bug 31371</a> - glslparsertest: ir.cpp:358: ir_constant::ir_constant(const glsl_type*, const ir_constant_data*): Assertion `(type->base_type &gt;= 0) &amp;&amp; (type->base_type &lt;= 3)' failed.</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31439">Bug 31439</a> - Crash in glBufferSubData() with size == 0</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31495">Bug 31495</a> - [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31514">Bug 31514</a> - isBuffer returns true for unbound buffers</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31560">Bug 31560</a> - [tdfx] tdfx_tex.c:702: error: ‘const struct gl_color_table’ has no member named ‘Format’</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31617">Bug 31617</a> - Radeon/Compiz: 'failed to attach dri2 front buffer', error case not handled</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31648">Bug 31648</a> - [GLSL] array-struct-array gets assertion: `(size &gt;= 1) && (size &lt;= 4)' failed.</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31650">Bug 31650</a> - [GLSL] varying gl_TexCoord fails to be re-declared to different size in the second shader</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31673">Bug 31673</a> - GL_FRAGMENT_PRECISION_HIGH preprocessor macro undefined in GLSL ES</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31690">Bug 31690</a> - i915 shader compiler fails to flatten if in Aquarium webgl demo.</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31832">Bug 31832</a> - [i915] Bad renderbuffer format: 21</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31841">Bug 31841</a> - [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31894">Bug 31894</a> - Writing to gl_PointSize with GLES2 corrupts other varyings</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31909">Bug 31909</a> - [i965] brw_fs.cpp:1461: void fs_visitor::emit_bool_to_cond_code(ir_rvalue*): Assertion `expr-&gt;operands[i]-&gt;type-&gt;is_scalar()' failed.</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31934">Bug 31934</a> - [gallium] Mapping empty buffer object causes SIGSEGV</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31983">Bug 31983</a> - [i915 gles2] "if (expression with builtin/varying variables) discard" breaks linkage</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31985">Bug 31985</a> - [GLSL 1.20] initialized uniform array considered as "unsized"</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31987">Bug 31987</a> - [gles2] if input a wrong pname(GL_NONE) to glGetBoolean, it will not case GL_INVALID_ENUM</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32035">Bug 32035</a> - [GLSL bisected] comparing unsized array gets segfault</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32070">Bug 32070</a> - llvmpipe renders stencil demo incorrectly</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32273">Bug 32273</a> - assertion fails when starting vdrift 2010 release with shaders enabled</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32287">Bug 32287</a> - [bisected GLSL] float-int failure</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32311">Bug 32311</a> - [965 bisected] Array look-ups broken on GM45</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32520">Bug 32520</a> - [gles2] glBlendFunc(GL_ZERO, GL_DST_COLOR) will result in GL_INVALID_ENUM</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32825">Bug 32825</a> - egl_glx driver completely broken in 7.9 branch [fix in master]</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=">Bug </a> - </li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=">Bug </a> - </li>
-
-</ul>
-
-
-<h2>Changes</h2>
-<p>Adam Jackson (2):
-<ul>
- <li>i965: Update renderer strings for sandybridge</li>
- <li>drivers/x11: unifdef XFree86Server</li>
-</ul></p>
-
-<p>Alex Deucher (30):
-<ul>
- <li>r600c: fix mipmap stride on evergreen</li>
- <li>r600c: add reloc for CB_COLOR0_ATTRIB</li>
- <li>r600c: pull over 6xx/7xx vertex fixes for evergreen</li>
- <li>r600c: fix segfault in evergreen stencil code</li>
- <li>r100: revalidate after radeon_update_renderbuffers</li>
- <li>r600c: add missing radeon_prepare_render() call on evergreen</li>
- <li>r600c: properly align mipmaps to group size</li>
- <li>egl_dri2: Add radeon chip ids</li>
- <li>r600c/evergreen: texture align is group_bytes just like 6xx/7xx</li>
- <li>r600g: fix buffer alignment</li>
- <li>r600g: All EVENT_WRITE packets need the EVENT_INDEX field</li>
- <li>r600g: translate ARR instruction for evergreen</li>
- <li>r600g: use meaningful defines for chiprev</li>
- <li>r600g: use full range of VS resources for vertex samplers</li>
- <li>r600g: fix additional EVENT_WRITE packet</li>
- <li>r600g: fix some winsys functions to deal properly with evergreen</li>
- <li>r600c: add Ontario Fusion APU support</li>
- <li>r600g: add support for ontario APUs</li>
- <li>r600c: fix VC flush on cedar and palm</li>
- <li>gallium/egl: fix r300 vs r600 loading</li>
- <li>r600c: fix some opcodes on evergreen</li>
- <li>r600c: bump texture limits to hw limits</li>
- <li>r600g: bump texture/cb limits appropriately for evergreen</li>
- <li>radeon: bump mip tree levels to 15</li>
- <li>r600g: fix rendering with a vertex attrib having a zero stride</li>
- <li>r600g: remove useless switch statements</li>
- <li>r600g: add support for NI (northern islands) asics</li>
- <li>r600c: add support for NI asics</li>
- <li>r600g: support up to 64 shader constants</li>
- <li>r600c: fix up SQ setup in blit code for Ontario/NI</li>
-</ul></p>
-
-<p>Andre Maasikas (3):
-<ul>
- <li>r600c: fix buffer height setting in dri2 case</li>
- <li>r600g: break alu clause earlier</li>
- <li>r600g: fix evergreen interpolation setup</li>
-</ul></p>
-
-<p>Andrew Randrianasulu (2):
-<ul>
- <li>dri/nv04: Don't expose ARB_texture_env_combine/dot3.</li>
- <li>dri/nv04: Enable eng3dm for A8/L8 textures.</li>
-</ul></p>
-
-<p>Aras Pranckevicius (2):
-<ul>
- <li>glsl: fix crash in loop analysis when some controls can't be determined</li>
- <li>glsl: fix matrix type check in ir_algebraic</li>
-</ul></p>
-
-<p>Bas Nieuwenhuizen (3):
-<ul>
- <li>r600g: set ENABLE_KILL in the shader state in the new design</li>
- <li>r600g: set ENABLE_KILL on evergreen too</li>
- <li>r600g: use dirty list to track dirty blocks</li>
-</ul></p>
-
-<p>Ben Skeggs (3):
-<ul>
- <li>nv50: DST</li>
- <li>nv50: DPH</li>
- <li>nv50: silence some unknown get_param warnings</li>
-</ul></p>
-
-<p>Benjamin Franzke (2):
-<ul>
- <li>st/egl image: multiply drm buf-stride with blocksize</li>
- <li>r600g: implement texture_get_handle (needed for eglExportDRMImageMESA)</li>
-</ul></p>
-
-<p>Brian Paul (296):
-<ul>
- <li>glx: add const qualifiers to __indirect_glMultiDrawArraysEXT()</li>
- <li>glsl2: fix signed/unsigned comparison warning</li>
- <li>llvmpipe: cast to silence warning</li>
- <li>llvmpipe: s/boolean/unsigned/ in bitfield to silence warning</li>
- <li>nv50: use unsigned int for bitfields to silence warnings</li>
- <li>tgsi: fix incorrect usage_mask for shadow tex instructions</li>
- <li>gallivm: expand AoS sampling to cover all filtering modes</li>
- <li>gallivm: fix incorrect vector shuffle datatype</li>
- <li>gallivm: move i32_vec_type inside the #ifdef</li>
- <li>mesa: include mfeatures.h in formats.c</li>
- <li>gallivm: fix wrong return value in bitwise functions</li>
- <li>tgsi/sse: fix aos_to_soa() loop to handle num_inputs==0</li>
- <li>gallivm: added missing case for PIPE_TEXTURE_RECT</li>
- <li>gallium: better docs for pipe_rasterizer_state::sprite_coord_enable</li>
- <li>gallium: rework handling of sprite_coord_enable state</li>
- <li>gallium/docs: added new pipeline.txt diagram</li>
- <li>mesa: don't call valid_texture_object() in non-debug builds</li>
- <li>glsl2: silence compiler warnings in printf() calls</li>
- <li>docs: remove old broken link</li>
- <li>docs: mark as obsolete, remove dead links</li>
- <li>llvmpipe: fix query bug when no there's no scene</li>
- <li>gallivm: remove debug code</li>
- <li>llvmpipe: maintain fragment shader state for draw module</li>
- <li>llvmpipe: indentation fix</li>
- <li>llvmpipe: reformatting, remove trailing whitespace, etc</li>
- <li>llvmpipe: clean-up, comments in setup_point_coefficient()</li>
- <li>llvmpipe: rename sprite field, add sprite_coord_origin</li>
- <li>llvmpipe: implement sprite coord origin modes</li>
- <li>draw: fix test for using the wide-point stage</li>
- <li>llvmpipe: check bitshift against PIPE_MAX_SHADER_OUTPUTS</li>
- <li>draw: check bitshift against PIPE_MAX_SHADER_OUTPUS</li>
- <li>Merge branch 'sprite-coord'</li>
- <li>draw: new draw_fs.[ch] files</li>
- <li>glsl2: fix typo in error msg</li>
- <li>gallivm: fix lp_build_sample_compare()</li>
- <li>softpipe: add missing calls to set draw vertex samplers/views</li>
- <li>mesa: don't advertise bogus GL_ARB_shading_language_120 extension</li>
- <li>configs: remove egl-swrast target from linux-dri config</li>
- <li>llvmpipe: fix sprite texcoord setup for non-projective texturing</li>
- <li>mesa: fix assertions to handle srgb formats</li>
- <li>st/mesa: add missing MESA_FORMAT_S8 case in st_mesa_format_to_pipe_format()</li>
- <li>st/mesa: use the wrapped renderbuffer in CopyPixels()</li>
- <li>llvmpipe: make min/max lod and lod bias dynamic state</li>
- <li>llvmpipe: make texture border_color dynamic state</li>
- <li>softpipe: fix repeat() function for NPOT textures</li>
- <li>gallivm: fix repeat() function for NPOT textures</li>
- <li>swrast: update comments for REMAINDER() macro</li>
- <li>softpipe: rename sp_state_fs.c -&gt; sp_state_shader.c</li>
- <li>softpipe: make shader-related functions static</li>
- <li>softpipe: make blend/stencil/depth functions static</li>
- <li>softpipe: make sampler state functions static</li>
- <li>softpipe: make vertex state functions static</li>
- <li>softpipe: make rasterizer state functions static</li>
- <li>softpipe: make stream out state functions static</li>
- <li>softpipe: make clip state functions static</li>
- <li>softpipe: minor asst. clean-ups</li>
- <li>softpipe: allocate tile data on demand</li>
- <li>llvmpipe: fix swizzling of texture border color</li>
- <li>softpipe: fix swizzling of texture border color</li>
- <li>draw: pass sampler state down to llvm jit state</li>
- <li>gallivm: check for level=0 case in lp_build_minify()</li>
- <li>gallivm: added some comments</li>
- <li>draw: check for null sampler pointers</li>
- <li>swrast: fix choose_depth_texture_level() to respect mipmap filtering state</li>
- <li>st/mesa: replace assertion w/ conditional in framebuffer invalidation</li>
- <li>glsl2: fix signed/unsigned comparison warning</li>
- <li>st/xlib: add some comments</li>
- <li>ir_to_mesa: assorted clean-ups, const qualifiers, new comments</li>
- <li>mesa: remove assertion w/ undeclared variable texelBytes</li>
- <li>gallivm: remove newlines</li>
- <li>draw/llvmpipe: replace DRAW_MAX_TEXTURE_LEVELS with PIPE_MAX_TEXTURE_LEVELS</li>
- <li>mesa: reformatting, comments, code movement</li>
- <li>x11: fix breakage from gl_config::visualType removal</li>
- <li>gallivm: work-around trilinear mipmap filtering regression with LLVM 2.8</li>
- <li>mesa: remove post-convolution width/height vars</li>
- <li>gallivm: add compile-time option to emit inst addrs and/or line numbers</li>
- <li>llvmpipe: code to dump bytecode to file (disabled)</li>
- <li>gallivm: added lp_build_print_vec4()</li>
- <li>gallivm: added lp_build_load_volatile()</li>
- <li>glsl: add ir_unop_round_even case to silence unhandled enum warning</li>
- <li>st/mesa: fix regressions in glDrawPixels(GL_STENCIL_INDEX)</li>
- <li>st/mesa: reformatting in st_cb_drawpixels.c</li>
- <li>st/mesa: use GLuint to avoid problem w/ uint not defined on mingw32</li>
- <li>st/mesa: update function name, comments</li>
- <li>gallivm: use util_snprintf()</li>
- <li>llvmpipe: remove lp_setup_coef*.c files from Makefile</li>
- <li>mesa: fix mesa version string construction</li>
- <li>gallivm: fix incorrect type for zero vector in emit_kilp()</li>
- <li>llvmpipe/draw: always enable LLVMAddInstructionCombiningPass()</li>
- <li>draw: use float version of LLVM Mul/Add instructions</li>
- <li>draw: fix typo in comment</li>
- <li>mesa: add GL_RG case to _mesa_source_buffer_exists()</li>
- <li>mesa: add missing cases for packing red/green images</li>
- <li>st/mesa: added cases for GL_COMPRESSED_RED/RG in st_choose_format()</li>
- <li>docs: update texture red/green support in GL3.txt</li>
- <li>docs: add GL_ARB_texture_rg to release notes</li>
- <li>mesa: driver hook for primitive restart</li>
- <li>mesa: set/get primitive restart state</li>
- <li>mesa: API spec for primitive restart</li>
- <li>mesa: regenerated files with primitive restart</li>
- <li>mesa: plug in primitive restart function</li>
- <li>vbo: support for primitive restart</li>
- <li>gallium: new CAP, state for primitive restart</li>
- <li>st/mesa: support for primitive restart</li>
- <li>draw: implement primitive splitting for primitive restart</li>
- <li>softpipe: enable primitive restart</li>
- <li>llvmpipe: enable primitive restart</li>
- <li>docs: added GL_NV_primitive_restart extension</li>
- <li>Merge branch 'primitive-restart-cleanup'</li>
- <li>winsys/xlib: formatting fixes</li>
- <li>winsys/xlib: use Bool type for shm field</li>
- <li>winsys/xlib: fix up allocation/dealloction of XImage</li>
- <li>winsys/xlib: rename xm-&gt;xlib</li>
- <li>galahad: silence warnings</li>
- <li>mesa: move declaration before code</li>
- <li>docs: updated GL3 status for primitive restart</li>
- <li>mesa: 80-column wrapping</li>
- <li>mesa: simplify fbo format checking code</li>
- <li>mesa: split up the image.c file</li>
- <li>mesa: add pixel packing for unscaled integer types</li>
- <li>mesa: _mesa_ClearColorIuiEXT() and _mesa_ClearColorIiEXT()</li>
- <li>mesa: _mesa_is_format_integer() function</li>
- <li>mesa: minor reformatting, clean-ups</li>
- <li>mesa: added _mesa_is_fragment_shader_active() helper</li>
- <li>mesa: new glDrawPixels error check for integer formats</li>
- <li>softpipe: added some texture sample debug code (disabled)</li>
- <li>mesa: added new gl_extensions::EXT_gpu_shader4 field</li>
- <li>mesa: added new gl_framebuffer::_IntegerColor field</li>
- <li>mesa: added glGet query for GL_RGBA_INTEGER_MODE_EXT</li>
- <li>mesa: compute _IntegerColor field in _mesa_test_framebuffer_completeness()</li>
- <li>mesa: added cases for GL_EXT_texture_integer formats</li>
- <li>mesa: added cases for GL_EXT_texture_integer</li>
- <li>st/mesa: add format selection for signed/unsigned integer formats</li>
- <li>mesa: simplify target_can_be_compressed() function</li>
- <li>glapi: GL_EXT_texture_integer API</li>
- <li>glapi: include/build EXT_texture_integer.xml</li>
- <li>mesa: regenerated API files for GL_EXT_texture_integer</li>
- <li>mesa: plug in GL_EXT_texture_integer functions</li>
- <li>mesa: display list support for GL_EXT_texture_integer</li>
- <li>st/mesa: be smarter choosing texture format for glDrawPixels()</li>
- <li>softpipe: remove &gt;32bpp color restriction</li>
- <li>mesa: silence enum comparison warning</li>
- <li>mesa: fix uninitialized var warning</li>
- <li>xlib: silence unused var warning</li>
- <li>util: use pointer_to_func() to silence warning</li>
- <li>rtasm: use pointer_to_func() to silence warning</li>
- <li>translate: use function typedefs, casts to silence warnings</li>
- <li>translate: remove unused prototypes</li>
- <li>mesa: additional glReadPixels error checks for GL_EXT_texture_integer</li>
- <li>mesa: additional switch cases for GL_EXT_texture_integer</li>
- <li>mesa: additional teximage error checks for GL_EXT_texture_integer</li>
- <li>mesa: do integer FB / shader validation check in _mesa_valid_to_render()</li>
- <li>mesa: call _mesa_valid_to_render() in glDrawPixels, glCopyPixels, glBitmap</li>
- <li>mesa: remove the unused _mesa_is_fragment_shader_active() function</li>
- <li>mesa: fix bug in _mesa_is_format_integer()</li>
- <li>mesa: rename function to _mesa_is_format_integer_color()</li>
- <li>mesa: remove 'normalized' parameter from _mesa_VertexAttribIPointer()</li>
- <li>vbo: re-indent file</li>
- <li>glapi: xml spec file for GL_EXT_gpu_shader4</li>
- <li>glapi: include EXT_gpu_shader4.xml</li>
- <li>glapi: regenerated API files</li>
- <li>mesa: plug in stubs for glBindFragDataLocation(), glGetFragDataLocation()</li>
- <li>mesa: add glGetUniformuiv(), plug in uint glUniform funcs</li>
- <li>mesa: plug in more GL_EXT_gpu_shader4 functions</li>
- <li>mesa: add new GLvertexformat entries for integer-valued attributes</li>
- <li>mesa: implement integer-valued vertex attribute functions</li>
- <li>mesa: add gl_client_array::Integer field and related vertex array state code</li>
- <li>mesa: consolidate glVertex/Color/etcPointer() code</li>
- <li>mesa: state/queries for GL_MIN/MAX_PROGRAM_TEXEL_OFFSET_EXT</li>
- <li>mesa: glArrayElement support for integer-valued arrays</li>
- <li>mesa: clean-up array element code</li>
- <li>mesa: add extension table entry for GL_EXT_gpu_shader4</li>
- <li>mesa: remove obsolete comment</li>
- <li>mesa: fix incorrect type in _mesa_texstore_rgba_int16()</li>
- <li>mesa: fix integer cases in _mesa_is_legal_format_and_type()</li>
- <li>mesa: add const qualifier to _mesa_is_legal_format_and_type()</li>
- <li>mesa: additional integer formats in _mesa_bytes_per_pixel()</li>
- <li>mesa: pixel transfer ops do not apply to integer-valued textures</li>
- <li>mesa: remove dead code</li>
- <li>osmesa: fix renderbuffer memleak in OSMesaMakeCurrent()</li>
- <li>mesa: use GLubyte for edge flag arrays</li>
- <li>mesa: move the gl_config struct declaration</li>
- <li>dri/util: add a bunch of comments</li>
- <li>mesa: remove always-false conditional in check_compatible()</li>
- <li>mesa: fix aux/accum comment and error message mixups</li>
- <li>llvmpipe: assign context's frag shader pointer before using it</li>
- <li>llvmpipe: add a cast</li>
- <li>mesa: silence new warnings in texobj.c</li>
- <li>egl/gdi: fix typo: xsurf-&gt;gsurf</li>
- <li>mesa: code to unpack RGBA as uints</li>
- <li>gallivm: implement scatter stores into temp register file</li>
- <li>gallivm: add some LLVM var labels</li>
- <li>gallivm: added debug code to dump temp registers</li>
- <li>gallivm: add pixel offsets in scatter stores</li>
- <li>gallivm: added lp_elem_type()</li>
- <li>gallivm: implement execution mask for scatter stores</li>
- <li>tgsi: remove unused function</li>
- <li>llvmpipe: added some debug assertions, but disabled</li>
- <li>gallivm: alloca() was called too often for temporary arrays</li>
- <li>gallivm: add const qualifiers, fix comment string</li>
- <li>softpipe: disable vertex texturing with draw/llvm</li>
- <li>mesa: consolidate pixel packing/unpacking code</li>
- <li>mesa: rename vars in pixel pack/unpack code</li>
- <li>mesa: implement uint texstore code</li>
- <li>mesa: remove stray GL_FLOAT case in _mesa_is_legal_format_and_type()</li>
- <li>mesa: make fixed-pt and byte-valued arrays a runtime feature</li>
- <li>softpipe: can't no-op depth test stage when occlusion query is enabled</li>
- <li>mesa: no-op glBufferSubData() on size==0</li>
- <li>mesa: #include mfeatures.h in enums.h</li>
- <li>mesa: improve error message</li>
- <li>mesa: add missing formats in _mesa_format_to_type_and_comps()</li>
- <li>mesa: handle more pixel types in mipmap generation code</li>
- <li>mesa: make glIsBuffer() return false for never bound buffers</li>
- <li>mesa: fix glDeleteBuffers() regression</li>
- <li>tdfx: s/Format/_BaseFormat/</li>
- <li>mesa: consolidate assertions in teximage code</li>
- <li>radeon: set gl_texture_image::TexFormat field in radeonSetTexBuffer2()</li>
- <li>r600: set gl_texture_image::TexFormat field in r600SetTexBuffer2()</li>
- <li>r200: set gl_texture_image::TexFormat field in r200SetTexBuffer2()</li>
- <li>r300: set gl_texture_image::TexFormat field in r300SetTexBuffer2()</li>
- <li>evergreen: set gl_texture_image::TexFormat field in evergreenSetTexBuffer()</li>
- <li>st/mesa: fix glDrawPixels(depth/stencil) bugs</li>
- <li>glsl: fix assorted MSVC warnings</li>
- <li>mesa: add more work-arounds for acoshf(), asinhf(), atahf()</li>
- <li>glsl: remove opt_constant_expression.cpp from SConscript</li>
- <li>mesa: fix error messages and minor reindenting</li>
- <li>mesa: whitespace cleanups</li>
- <li>mesa: 80-column wrapping</li>
- <li>mesa: reorder texture_error_check() params</li>
- <li>mesa: minor clean-ups in context code</li>
- <li>mesa: upgrade to glext.h version 66</li>
- <li>mesa: pass gl_format to _mesa_init_teximage_fields()</li>
- <li>mesa: fix error msg typo</li>
- <li>glapi: rename GL3.xml to GL3x.xml as it covers all GL 3.x versions</li>
- <li>mesa: hook up GL 3.x entrypoints</li>
- <li>docs: update some GL 3.0 status</li>
- <li>mesa: fix get_texture_dimensions() for texture array targets</li>
- <li>swrast: init alpha value to 1.0 in opt_sample_rgb_2d()</li>
- <li>glsl: fix off by one in register index assertion</li>
- <li>glsl: use gl_register_file in a few places</li>
- <li>mesa: rename, make _mesa_register_file_name() non-static</li>
- <li>mesa: _mesa_valid_register_index() to validate register indexes</li>
- <li>mesa: replace #defines with new gl_shader_type enum</li>
- <li>mesa: use gl_shader_type enum</li>
- <li>glsl: better handling of linker failures</li>
- <li>glsl: start restoring some geometry shader code</li>
- <li>mesa: add assertion and update comment in _mesa_format_image_size()</li>
- <li>mesa: added _mesa_format_image_size64()</li>
- <li>x11: remove test_proxy_teximage() function</li>
- <li>st/mesa: fix mapping of zero-sized buffer objects</li>
- <li>gallivm/llvmpipe: squash merge of the llvm-context branch</li>
- <li>mesa: raise max texture sizes to 16K</li>
- <li>softpipe: increase max texture size to 16K</li>
- <li>mesa: replace large/MAX_WIDTH stack allocations with heap allocations</li>
- <li>mesa: replace large/MAX_WIDTH stack allocations with heap allocations</li>
- <li>swrast: avoid large stack allocations in blend code</li>
- <li>swrast: avoid large stack allocations in tex combine code</li>
- <li>st/mesa: avoid large stack allocations in readpixels code</li>
- <li>mesa: replace more MAX_WIDTH stack allocations with heap allocations</li>
- <li>gallivm/llvmpipe: remove lp_build_context::builder</li>
- <li>gallivm: fix null builder pointers</li>
- <li>mesa: fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME query</li>
- <li>mesa: return GL_FRAMEBUFFER_DEFAULT as FBO attachment type</li>
- <li>llvmpipe: fix broken stencil writemask</li>
- <li>mesa: consolidate some compiler -D flags</li>
- <li>swrast: allow GL_RG format in glDrawPixels()</li>
- <li>swrast: fix indentation</li>
- <li>swrast: accept GL_RG in glReadPixels()</li>
- <li>swrast: restructure some glReadPixels() code</li>
- <li>mesa: make glGet*(GL_NONE) generate GL_INVALID_ENUM</li>
- <li>mesa: remove unneeded cast</li>
- <li>mesa: update comments, remove dead code</li>
- <li>st/mesa: new comment about updating state vars</li>
- <li>mesa: add error margin to clip mask debug/check code</li>
- <li>gallium/util: minor formatting fixes</li>
- <li>mesa/llvm: use llvm-config --cppflags</li>
- <li>st/mesa: fix mipmap generation bug</li>
- <li>mesa: test for cube map completeness in glGenerateMipmap()</li>
- <li>mesa: set gl_texture_object::_Complete=FALSE in incomplete()</li>
- <li>mesa: consolidate glTexImage1/2/3D() code</li>
- <li>mesa: simplify proxy texture code in texture_error_check()</li>
- <li>mesa: consolidate the glTexSubImage1/2/3D() functions</li>
- <li>mesa: consolidate glCopyTexImage1/2D() code</li>
- <li>mesa: consolidate glCopyTexSubImage1/2/3D() functions</li>
- <li>mesa: consolidate glCompressedTexImage1/2/3D() functions</li>
- <li>mesa: make _mesa_test_proxy_teximage() easier to read</li>
- <li>configure: use llvm-config --cppflags instead of --cflags</li>
- <li>mesa: revamp error checking for compressed texture images</li>
- <li>mesa: simplify target checking for TexImage functions</li>
- <li>draw/llvm: don't flush in vs_llvm_delete()</li>
- <li>tnl: Initialize gl_program_machine memory in run_vp.</li>
- <li>tnl: a better way to initialize the gl_program_machine memory</li>
- <li>mesa, st/mesa: disable GL_ARB_geometry_shader4</li>
- <li>mesa/meta: fix broken assertion, rename stack depth var</li>
- <li>glsl: new glsl_strtod() wrapper to fix decimal point interpretation</li>
- <li>st/mesa: fix renderbuffer pointer check in st_Clear()</li>
-</ul></p>
-
-<p>Brian Rogers (1):
-<ul>
- <li>mesa: Add missing else in do_row_3D</li>
-</ul></p>
-
-<p>Chad Versace (25):
-<ul>
- <li>intel_extensions: Add ability to set GLSL version via environment</li>
- <li>glsl: Add glsl_type::uvecN_type for N=2,3</li>
- <li>glsl: Add lexer rules for uint and uvecN (N=2..4)</li>
- <li>glsl: Changes in generated file glsl_lexer.cpp</li>
- <li>glsl: Add lexer rules for &lt&lt and &gt;&gt; in GLSL 1.30</li>
- <li>glsl: Change generated file glsl_lexer.cpp</li>
- <li>glsl: Implement ast-to-hir for binary shifts in GLSL 1.30</li>
- <li>glsl: Implement constant expr evaluation for bitwise-not</li>
- <li>glsl: Implement constant expr evaluation for bit-shift ops</li>
- <li>glsl: Implement constant expr evaluation for bitwise logic ops</li>
- <li>glsl: Fix ir validation for bit logic ops</li>
- <li>glsl: Define shift_result_type() in ast_to_hir.cpp</li>
- <li>glsl: Implement ast-to-hir for bit-shift-assignment</li>
- <li>glsl: Define bit_logic_result_type() in ast_to_hir.cpp</li>
- <li>glsl: Implement ast-to-hir for bit-logic ops</li>
- <li>glsl: Fix lexer rule for ^=</li>
- <li>glsl: Commit generated file glsl_lexer.cpp</li>
- <li>glsl: Fix ast-to-hir for ARB_fragment_coord_conventions</li>
- <li>mesa: Fix C++ includes in sampler.cpp</li>
- <li>glsl: Fix ir_expression::constant_expression_value()</li>
- <li>glsl: Fix erroneous cast in ast_jump_statement::hir()</li>
- <li>glsl: Fix Doxygen tag file in recently renamed files</li>
- <li>glsl: Improve usage message for glsl_compiler</li>
- <li>glsl: Fix linker bug in cross_validate_globals()</li>
- <li>glsl: In ast_to_hir, check sampler array indexing</li>
-</ul></p>
-
-<p>Chia-I Wu (149):
-<ul>
- <li>glapi: Fix build errors for ES.</li>
- <li>glapi: Fix ES build errors again.</li>
- <li>mesa: Update ES APIspec.xml.</li>
- <li>st/xlib: Notify the context when the front/back buffers are swapped.</li>
- <li>targets/egl: Use C++ compiler to link GL/ES state trackers.</li>
- <li>libgl-xlib: Remove unused st_api_create_OpenGL.</li>
- <li>st/egl: Split modeset code support to modeset.c.</li>
- <li>st/egl: Rename kms backend to drm.</li>
- <li>st/egl: s/kms/drm/ on the drm backend.</li>
- <li>egl: Enable drm platform by default.</li>
- <li>egl: Check extensions.</li>
- <li>st/egl: Skip single-buffered configs in EGL.</li>
- <li>mapi: Fix compiler warnings.</li>
- <li>st/egl: Drop context argument from egl_g3d_get_egl_image.</li>
- <li>targets/egl: Fix linking with libdrm.</li>
- <li>st/vega: Fix version check in context creation.</li>
- <li>egl: Use attribute names as the _EGLConfig member names.</li>
- <li>egl: Access config attributes directly.</li>
- <li>st/egl: Access _EGLConfig directly.</li>
- <li>st/egl: Do not finish a fence that is NULL.</li>
- <li>mesa: Remove unused vtxfmt_tmp.h.</li>
- <li>egl_dri2: Drop the use of _egl[SG]etConfigKey.</li>
- <li>egl_glx: Drop the use of [SG]ET_CONFIG_ATTRIB.</li>
- <li>egl_glx: Fix borken driver.</li>
- <li>egl: Move attributes in _EGLImage to _EGLImageAttribs.</li>
- <li>egl: Parse image attributes with _eglParseImageAttribList.</li>
- <li>egl: Move fallback routines to eglfallbacks.c.</li>
- <li>egl: Drop dpy argument from the link functions.</li>
- <li>egl: Minor changes to the _EGLConfig interface.</li>
- <li>egl: Minor changes to the _EGLScreen interface.</li>
- <li>egl: Fix _eglModeLookup.</li>
- <li>st/egl: Fix native_mode refresh mode.</li>
- <li>egl: Add reference count for resources.</li>
- <li>egl: Use reference counting to replace IsLinked or IsBound.</li>
- <li>egl: Fix a false negative check in _eglCheckMakeCurrent.</li>
- <li>st/egl: Use resource reference count for egl_g3d_sync.</li>
- <li>egl_dri2: Fix a typo that make glFlush be called at wrong time.</li>
- <li>glapi: Do not use glapidispatch.h.</li>
- <li>glapi: Move glapidispatch.h to core mesa.</li>
- <li>glapi: Do not use glapioffsets.h.</li>
- <li>glapi: Merge glapioffsets.h into glapidispath.h.</li>
- <li>vbo: Use CALL_* macros.</li>
- <li>mesa: Remove unnecessary glapitable.h includes.</li>
- <li>autoconf: Better client API selection.</li>
- <li>docs: Update egl and openvg docs.</li>
- <li>autoconf: Update configuration info.</li>
- <li>Merge branch 'glapi-reorg'</li>
- <li>targets: Add missing quotes to Makefile.xorg.</li>
- <li>autoconf: st/vega requires --enable-openvg.</li>
- <li>st/mesa: Unreference the sampler view in st_bind_surface.</li>
- <li>autoconf: Tidy configure output for EGL.</li>
- <li>targets/egl: Fix a warning with --disable-opengl build.</li>
- <li>egl: Rework _eglGetSearchPath.</li>
- <li>mesa: Select FEATURE_remap_table when multiple APIs are enabled.</li>
- <li>mesa: Allow contexts of different APIs to coexist.</li>
- <li>egl: Set up the pthread key even TLS is used.</li>
- <li>st/egl: Add native_surface::present callback.</li>
- <li>st/egl: Use native_surface::present callback.</li>
- <li>d3d1x: Use native_surface::present.</li>
- <li>st/egl: Remove flush_frontbuffer and swap_buffers.</li>
- <li>st/egl: Add support for swap interval and swap behavior.</li>
- <li>st/egl: Add support for EGL_MATCH_NATIVE_PIXMAP.</li>
- <li>st/egl: Add extern "C" wrapper to native.h.</li>
- <li>st/egl: Add native_display_buffer interface.</li>
- <li>st/egl: Use native_display_buffer for EGL_MESA_drm_image.</li>
- <li>autoconf: Add --enable-gallium-egl.</li>
- <li>docs: Update egl docs.</li>
- <li>st/dri: Add support for surfaceless current contexts.</li>
- <li>egl_dri2: Fix __DRI_DRI2 version 1 support.</li>
- <li>st/vega: Do not wait NULL fences.</li>
- <li>gallium: Add st_api::name.</li>
- <li>gallium: Add st_context_iface::share to st_api.</li>
- <li>st/wgl: Use st_context_iface::share for DrvShareLists.</li>
- <li>st/glx: Replace MESA_VERSION_STRING by xmesa_get_name.</li>
- <li>mesa: Clean up core.h.</li>
- <li>scons: Define IN_DRI_DRIVER.</li>
- <li>tgsi: Add STENCIL to text parser.</li>
- <li>st/vega: vegaLookupSingle should validate the state.</li>
- <li>st/vega: Set wrap_r for mask and blend samplers.</li>
- <li>st/vega: Fix vgReadPixels with a subrectangle.</li>
- <li>egl_dri2: Fix one context, multiple surfaces.</li>
- <li>auxiliary: util_blit_pixels_tex should restore the viewport.</li>
- <li>st/vega: Fix a crash with empty paths.</li>
- <li>st/vega: Masks and surfaces should share orientation.</li>
- <li>st/vega: No flipping in vg_prepare_blend_surface.</li>
- <li>st/vega: Fix a typo in EXTENDED_BLENDER_OVER_FUNC.</li>
- <li>llvmpipe: Fix build errors on x86.</li>
- <li>st/vega: Overhaul renderer with renderer states.</li>
- <li>st/vega: Add DRAWTEX renderer state.</li>
- <li>st/vega: Add SCISSOR renderer state.</li>
- <li>st/vega: Add CLEAR renderer state for vgClear.</li>
- <li>st/vega: Add FILTER renderer state for image filtering.</li>
- <li>st/vega: Use the renderer for vgMask.</li>
- <li>st/vega: Add POLYGON_STENCIL and POLYGON_FILL renderer state.</li>
- <li>st/vega: Delay fb state update to vg_validate_state.</li>
- <li>st/vega: Use st_framebuffer for fb width/height.</li>
- <li>st/vega: Move g3d states to renderer.</li>
- <li>st/vega: Make shader_bind call into the renderer.</li>
- <li>st/vega: vg_manager should care about only the color buffer.</li>
- <li>st/vega: Clean up vg_context fields and functions.</li>
- <li>st/vega: Clean up renderer fields and functions.</li>
- <li>st/vega: vg_copy_texture and vg_copy_surface should share code.</li>
- <li>st/vega: Get rid of renderer_copy_texture.</li>
- <li>st/vega: Update to latest headers.</li>
- <li>st/vega: Fix image sampler views for alpha-only formats.</li>
- <li>st/vega: Make path_render and path_stroke take a matrix.</li>
- <li>st/vega: Make image_draw take a matrix.</li>
- <li>st/vega: Add primitive text support.</li>
- <li>st/vega: Revive mask layer support.</li>
- <li>st/vega: More flexible shader selection.</li>
- <li>st/vega: Add color transformation support.</li>
- <li>st/vega: Bump version to 1.1.</li>
- <li>st/vega: Fix paint coordinates transformations.</li>
- <li>st/vega: Fix negated logic in image_draw.</li>
- <li>st/vega: Fix degenerate paints.</li>
- <li>st/vega: Simplify radial gradient.</li>
- <li>st/vega: Remove st_inlines.h.</li>
- <li>st/vega: Delay blend texture creation until needed.</li>
- <li>st/vega: Create drawing surface mask as needed.</li>
- <li>st/vega: Initialize pipe states with renderer.</li>
- <li>st/vega: Avoid unnecessary constant bufer upload.</li>
- <li>st/vega: Destroy the pipe context with vg_context.</li>
- <li>st/vega: polygon_array requires a deep free.</li>
- <li>st/egl: Set pipe_resource::array_size to 1.</li>
- <li>st/vega: Set pipe_resource::array_size to 1.</li>
- <li>st/vega: Move vertex transformation to shader.</li>
- <li>st/vega: Add a missing break.</li>
- <li>st/vega: Add some comments to pipeline shaders.</li>
- <li>st/vega: Refactor blend shaders.</li>
- <li>st/vega: Move masking after blending.</li>
- <li>st/vega: Add support for per-channel alpha.</li>
- <li>st/vega: Blending should use premultiplied alpha.</li>
- <li>st/vega: Fix VG_BLEND_MULTIPLY.</li>
- <li>st/vega: Add blend shaders for all blend modes.</li>
- <li>st/vega: Fix pipe blend state for various blend modes.</li>
- <li>egl: _eglFilterArray should not allocate.</li>
- <li>mapi: Rewrite mapi_abi.py to get rid of preprocessor magic.</li>
- <li>vbo: Drop second ATTR macro.</li>
- <li>vbo: Fix GLES2 glVertexAttrib.</li>
- <li>mesa: Do not advertise GL_OES_texture_3D.</li>
- <li>mesa: Fix GL_FIXED arrays.</li>
- <li>mesa: Fix glTexCoordPointer with type GL_FIXED.</li>
- <li>st/egl: Plug pbuffer leaks.</li>
- <li>st/egl: Fix eglCopyBuffers.</li>
- <li>st/egl: Assorted fixes for dri2_display_get_configs.</li>
- <li>docs/egl: Update egl.html.</li>
- <li>st/egl: Fix eglChooseConfig when configs is NULL.</li>
- <li>docs: Add an example for EGL_DRIVERS_PATH.</li>
- <li>autoconf: Fix --with-driver=xlib --enable-openvg.</li>
-</ul></p>
-
-<p>Chris Wilson (2):
-<ul>
- <li>i915g: Fix closure of full batch buffers</li>
- <li>intel: Check for unsupported texture when finishing using as a render target</li>
-</ul></p>
-
-<p>Christoph Bumiller (80):
-<ul>
- <li>nv50: import new compiler</li>
- <li>nouveau: update nouveau_class.h</li>
- <li>nv50: introduce the big formats table</li>
- <li>nv50: don't produce MOV immediate to output reg in store opt</li>
- <li>nv50: change back accidentally swapped UNORM,SNORM vertex type</li>
- <li>nv50: add/fix some license headers</li>
- <li>nv50: simple reload elimination and local CSE</li>
- <li>nv50: fix constant_operand opt mul by 2 case</li>
- <li>nv50: permit usage of undefined TGSI TEMPs</li>
- <li>nv50: add missing 2nd source for POW multiplication</li>
- <li>nv50: add signed RGTC1 to format table, allow 2_10_10_10 for vbufs</li>
- <li>nv50: fix for empty BBs</li>
- <li>nv50: insert MOVs also for PHI sources from dominating block</li>
- <li>nv50: explicitly set src type for SET ops</li>
- <li>nv50: fixes for nested IFs</li>
- <li>nv50: don't eliminate loads to dedicated values</li>
- <li>nv50: fix constbuf validation</li>
- <li>nv50: build proper phi functions in the first place</li>
- <li>nv50: fix reg count</li>
- <li>nv50: begin implementing loops</li>
- <li>nv50: more constant folding</li>
- <li>nv50: loops part 2</li>
- <li>nv50: flatten simple IF/ELSE/ENDIF constructs</li>
- <li>nv50: fix thinko in store to output reg possible check</li>
- <li>nv50: generate JOINs for outermost IF clauses</li>
- <li>nv50: more TGSI opcodes (SIN, SCS, ARL, RET, KILP)</li>
- <li>nv50: fix PSIZ and PRIMID mapping</li>
- <li>nv50: check dst compatibility in CSE</li>
- <li>nv50: initialize edgeflag input index</li>
- <li>nv50: emit predicate for interp</li>
- <li>Merge remote branch 'origin/master' into nv50-compiler</li>
- <li>nv50: DP2, fix ARL</li>
- <li>nv50: yet another case we need a nop.exit</li>
- <li>nv50: fix check for sprite/point coord enable</li>
- <li>nv50: handle TEXTURE_SWIZZLE and GEOMETRY_SHADER4 caps</li>
- <li>nv50: set the FragDepth output index</li>
- <li>nv50: turn off verbose debug output by default</li>
- <li>nv50: attempt at making more complicated loops work</li>
- <li>nv50: SSG</li>
- <li>nv50: make FrontFacing -1 or +1</li>
- <li>nv50: re-add proper TEXBIAS sequence</li>
- <li>nv50: make use of TGSI immediate type</li>
- <li>nv50: must join SELECT inputs before MOV inputs</li>
- <li>nv50: fix XPD, was negated</li>
- <li>nv50: fix find_dom_frontier</li>
- <li>nv50: fix build-predicate function</li>
- <li>Merge remote branch 'origin/master' into nv50-compiler</li>
- <li>nv50: load address register before using it, not after</li>
- <li>nv50: save tgsi instructions</li>
- <li>nv50: prepare for having multiple functions</li>
- <li>nv50: don't parse again in tgsi_2_nc</li>
- <li>nv50: use actual loads/stores if TEMPs are accessed indirectly</li>
- <li>nv50: create value references with the right type</li>
- <li>nv50: duplicate interps in load_proj_tex_coords</li>
- <li>nv50: address regs are 16 bit</li>
- <li>nv50: fix can_load check for 3rd source</li>
- <li>nv50: reduce bb_reachable_by runtime from pot to linear</li>
- <li>nv50: minor compiler fixes and cleanups</li>
- <li>nv50: cannot move from local mem to output reg directly</li>
- <li>nv50: newlines in shader bincode printing</li>
- <li>nv50: match TEMP limit with nv50 ir builder</li>
- <li>nv50: handle TGSI EXP and LOG again</li>
- <li>nv50: check for immediates when turning MUL ADD into MAD</li>
- <li>nv50: interp cannot write flags reg</li>
- <li>nv50: MOV TEMP[0], -CONST[0] must be float32 negation</li>
- <li>nv50: fix indirect CONST access with large or negative offsets</li>
- <li>nv50: fix TXP depth comparison value</li>
- <li>nv50: consider address register in reload elimination</li>
- <li>nv50: improve and fix modifier folding optimization</li>
- <li>nv50: put low limit on REG_ALLOC_TEMP and FP_RESULT_COUNT</li>
- <li>Merge remote branch 'origin/nv50-compiler'</li>
- <li>nv50: don't segfault on shaders with 0 instructions</li>
- <li>nv50: get shader fixups/relocations into working state</li>
- <li>nv50: add relocs for stack and local mem buffers</li>
- <li>nv50: emit constbuf relocs before uploading constants</li>
- <li>nv50: fix typo in fifo packet length limit</li>
- <li>nv50: use formats table in nv50_surface.c</li>
- <li>nv50: use CLEAR_BUFFERS for surface fills</li>
- <li>nv50: fix/handle a few more PIPE_CAPs</li>
- <li>nv50: fix GP state bind and validate</li>
-</ul></p>
-
-<p>Corbin Simpson (8):
-<ul>
- <li>r600g: Use align() instead of handrolled code.</li>
- <li>r600g: Trivially deobfuscate r600_hw_states.</li>
- <li>r600g: Deobfuscate and comment a few more functions in r600_hw_states.</li>
- <li>r600g: Clean up some indentation and |= vs. | usage.</li>
- <li>r600g: Fix false and true.</li>
- <li>r600g: "tmp" is such a bad name for a texture.</li>
- <li>r600g: Clean up PS setup.</li>
- <li>r600g: Cleanup viewport floats.</li>
-</ul></p>
-
-<p>Daniel Lichtenberger (1):
-<ul>
- <li>radeon: fix potential segfault in renderbuffer update</li>
-</ul></p>
-
-<p>Daniel Vetter (21):
-<ul>
- <li>r200: revalidate after radeon_update_renderbuffers</li>
- <li>i915g: rip out -&gt;sw_tiled</li>
- <li>i915g: s/hw_tiled/tiling</li>
- <li>i915g: add pineview pci ids</li>
- <li>i915g: kill RGBA/X formats</li>
- <li>i915g: kill buf-&gt;map_gtt</li>
- <li>i915g: kill idws-&gt;pool</li>
- <li>i915g: drop alignment parameter from iws-&gt;buffer_create</li>
- <li>i915g: add winsys function to create tiled buffers</li>
- <li>i915g: switch to tiled allocations, kill set_fence</li>
- <li>i915g: prepare winsys/batchbuffer for execbuf2</li>
- <li>i915g: return tiling in iws-&gt;buffer_from_handle</li>
- <li>i915g: implement unfenced color&amp;depth buffer using tiling bits</li>
- <li>i915g: implement unfenced relocs for textures using tiling bits</li>
- <li>i915g: postpone mipmap/face offset calculation</li>
- <li>i915g: don't pot-align stride for tiled buffers</li>
- <li>i915g: enable X-tiling for textures</li>
- <li>i915g: switch rendering to mipmapped textures to (x,y) offsets</li>
- <li>i915g: enable x-tiling for render targets</li>
- <li>i915g: assert(depth_surface-&gt;offset == 0)</li>
- <li>i915g: track TODO items</li>
-</ul></p>
-
-<p>Dave Airlie (182):
-<ul>
- <li>r300g: fix buffer reuse issue caused by previous commit</li>
- <li>r600g: pull r600_draw struct out into header</li>
- <li>r600g: use index min/max + index buffer offset.</li>
- <li>r600g: add vgt dma src defines</li>
- <li>r600g: fixup texture state on evergreen.</li>
- <li>r600g: fix texture bos and avoid doing depth blit on evergreen</li>
- <li>r600g: hide radeon_ctx inside winsys.</li>
- <li>r600g: attempt to abstract kernel bos from pipe driver.</li>
- <li>r600g: move constant buffer creation behind winsys abstraction.</li>
- <li>r600g: use malloc bufmgr for constant buffers</li>
- <li>r600g: add support for kernel bo</li>
- <li>r600g: add winsys bo caching.</li>
- <li>r600g: add upload manager support.</li>
- <li>r600g: fixup map flushing.</li>
- <li>r600g: use calloc for ctx bo allocations</li>
- <li>r600g: oops got the use_mem_constant the wrong way around.</li>
- <li>r600g; add uses waterfall to asm cf for r6xx.</li>
- <li>r600g: only emit uses waterfall on r6xx hw.</li>
- <li>util/r300g: split the r300 index buffer modifier functions out to util</li>
- <li>r600g: modify index buffers for sizes the hw can't deal with.</li>
- <li>r600g: send correct surface base update for multi-cbufs</li>
- <li>r600g: fix fbo-drawbuffers-maxtargets</li>
- <li>r600g: clean up valgrind issues on maxtargets test.</li>
- <li>r600g: drop debugging that snuck in</li>
- <li>r600g: fix tiling support for ddx supplied buffers</li>
- <li>r600g: add z16 to color setup</li>
- <li>r600g: add color/texture support for more depth formats.</li>
- <li>r600g: fix r700 cube map sizing.</li>
- <li>r600g: fixup r700 CB_SHADER_CONTROL register.</li>
- <li>r600g: add missing BC_INST wrapper for evergreen</li>
- <li>r600g: only flush for the correct colorbuffer, not all of them.</li>
- <li>r600g: deal with overflow of VTX/TEX CF clauses.</li>
- <li>r600g: set back to correct codepaths.</li>
- <li>r600g: fixup evergreen miptree setup.</li>
- <li>r600g: fix eg texture borders.</li>
- <li>r600g: fix typo in struct member name</li>
- <li>r600g: cleanup some of the DB blit code</li>
- <li>r600g: make stencil readback work</li>
- <li>r600g: disable dirty handling on texture from depth code.</li>
- <li>r600g: use floats instead of hex for blit vbo</li>
- <li>r600g: fix depth readback on rv610 and other quirky variants.</li>
- <li>r600g: fix typo in evergreen register list</li>
- <li>u_blitter: add a custom blitter call passing a dsa cso</li>
- <li>r600g: use blitter to do db-&gt;cb flushing.</li>
- <li>r600g: fix warnings since last commit.</li>
- <li>egl: fix build since 17eace581d25a626a7d75d9d1205d012cbb14a6e</li>
- <li>r300g: fix point sprite coord.</li>
- <li>r600g: add vert support for 16/16 and 16/16/16 floats.</li>
- <li>r600g: add some more vertex format support.</li>
- <li>r600g: some more vertex formats</li>
- <li>r600g: fix draw-elements and draw-elements-base-vertex</li>
- <li>r600g: drop index_offset parameter to index buffer translate.</li>
- <li>r600g: fixup tex wrapping.</li>
- <li>r600g: fixup VP-&gt;FP output-&gt;input routing.</li>
- <li>r600g: fix typo in r700 alu emit</li>
- <li>r600g: fixup sprite coord enable.</li>
- <li>r600g: fix polygon mode</li>
- <li>mesa/mipmap: fix warning since 1acadebd6270d3604b026842b8a21360968618a0</li>
- <li>r600g: add eg poly mode code.</li>
- <li>r600g: make index bias fix for evergreen</li>
- <li>r600g: add eg db count control register.</li>
- <li>r300g: fix glsl-fs-pointcoord</li>
- <li>r600g: add evergreen texture resource properly.</li>
- <li>r600g: fix db flush breaking config state</li>
- <li>r600g: on evergreen the centroid isn't set in this register.</li>
- <li>r600g: add back evergreen name.</li>
- <li>r600g: add evergreen texture border support to new path</li>
- <li>r600g: move radeon.h members around to add back map flushing.</li>
- <li>r600g: add initial vertex translate support.</li>
- <li>r600g: remove old assert from new codepath</li>
- <li>Revert "r600g: add initial vertex translate support."</li>
- <li>r600g: port r300g fix for X* formats in texformat code</li>
- <li>r600g: add L8A8 unorm.</li>
- <li>r600g: clean up some code from move to new paths.</li>
- <li>r600g: return string for chip family</li>
- <li>r600g: use Elements macro instead of manual sizeofs</li>
- <li>r600g: fix evergreen depth flushing.</li>
- <li>r600g: add winsys support for CTL constants.</li>
- <li>r600g: drop depth quirk on evergreen</li>
- <li>r600g: add reloc for evergreen color attrib</li>
- <li>r600g: realign evergreen code with r600 code.</li>
- <li>r600g: add assembler support for other vtx fetch fields.</li>
- <li>r600g: fixup vertex format picking.</li>
- <li>r600g: sync vertex/texture cache on resources on evergreen</li>
- <li>r600g: add cb flushing for extra buffers + depth buffer on r600/evergreen</li>
- <li>r600g: fix evergreen draw-buffers</li>
- <li>r600g: flush SH cache on constant change on evergreen</li>
- <li>r600g: only set the Z export if shader exports it.</li>
- <li>r600g: setup basic loop consts on r600 + evergreen.</li>
- <li>mesa/st: initial attempt at RG support for gallium drivers</li>
- <li>r600g: break out of search for reloc bo after finding it.</li>
- <li>r600g: the code to check whether a new vertex shader is needed was wrong</li>
- <li>r600g: fix wwarning in bo_map function</li>
- <li>r600g: TODO domain management</li>
- <li>r600g: add bo fenced list.</li>
- <li>pb: don't keep checking buffers after first busy</li>
- <li>r600g: add bo busy backoff.</li>
- <li>r600g: drop mman allocator</li>
- <li>r600g: drop use_mem_constant.</li>
- <li>r600g: avoid unneeded bo wait</li>
- <li>pb: fix numDelayed accounting</li>
- <li>r600g: add evergreen stencil support.</li>
- <li>r600g: use format from the sampler view not from the texture.</li>
- <li>r600g: fix Z export enable bits.</li>
- <li>r600g: add some RG texture format support.</li>
- <li>r600g: drop width/height per level storage.</li>
- <li>r600g: fix input/output Z export mixup for evergreen.</li>
- <li>r600g: evergreen has no request size bit in texture word4</li>
- <li>r600g: enable vertex samplers.</li>
- <li>r600g: add TXL opcode support.</li>
- <li>r600g: don't run with scissors.</li>
- <li>r600g: fix typo in vertex sampling on r600</li>
- <li>gallium/tgsi: add support for stencil writes.</li>
- <li>gallium/format: add support for X24S8 and S8X24 formats.</li>
- <li>gallium/format: add X32_S8X24_USCALED format.</li>
- <li>gallium/util: add S8 tile sampling support.</li>
- <li>mesa: add support for FRAG_RESULT_STENCIL.</li>
- <li>mesa: improve texstore for 8/24 formats and add texstore for S8.</li>
- <li>softpipe: add support for shader stencil export capability</li>
- <li>st/mesa: add option to choose a texture format that we won't render to.</li>
- <li>st/mesa: use shader stencil export to accelerate shader drawpixels.</li>
- <li>r600g: add support for S8, X24S8 and S8X24 sampler formats.</li>
- <li>r600g: add shader stencil export support.</li>
- <li>glsl: add support for shader stencil export</li>
- <li>st/mesa: enable stencil shader export extension if supported</li>
- <li>r600g: fix depth0 setting</li>
- <li>r600g: fix scissor/cliprect confusion</li>
- <li>r600g: store samplers/views across blit when we need to modify them</li>
- <li>r600g: reduce size of context structure.</li>
- <li>r600g: the vs/ps const arrays weren't actually being used.</li>
- <li>r600g: add copy into tiled texture</li>
- <li>r600g: split out miptree setup like r300g</li>
- <li>r600g: use common texture object create function</li>
- <li>r600g: rename pitch in texture to pitch_in_bytes</li>
- <li>r600g: remove bpt and start using pitch_in_bytes/pixels.</li>
- <li>r600g: fix transfer stride.</li>
- <li>r600g: drop all use of unsigned long</li>
- <li>r600g: use blitter for hw copy region</li>
- <li>r600g: evergreen add stencil export bit</li>
- <li>r600g: add missing eg reg definition</li>
- <li>r600g: fix stencil export for evergreen harder</li>
- <li>r600g: drop unused context members</li>
- <li>r600g: only pick centroid coordinate when asked.</li>
- <li>r600g: fixup pos/face ena/address properly</li>
- <li>r600g: fixup typo in macro name</li>
- <li>r600g: select linear interpolate if tgsi input requests it</li>
- <li>r300g: clean up warning due to unknown cap.</li>
- <li>tgsi: add scanner support for centroid inputs</li>
- <li>r600g: evergreen interpolation support.</li>
- <li>r600g: add evergreen ARL support.</li>
- <li>r600g: switch to a common formats.h file since they are in different regs</li>
- <li>r600g: add defines for tiling</li>
- <li>r600g: get tiling info from kernel</li>
- <li>r600g: set tiling bits in hw state</li>
- <li>r600g: do proper tracking of views/samplers.</li>
- <li>r600g: fix typo in tiling setup cb code.</li>
- <li>r600g: depth needs to bound to ds</li>
- <li>r600g: attempt to cleanup depth blit</li>
- <li>r600g: fix transfer function for tiling.</li>
- <li>r600g: retrieve tiling info from kernel for shared buffers.</li>
- <li>r600g: all non-0 mipmap levels need to be w/h aligned to POT.</li>
- <li>r600g: move to per-miplevel array mode.</li>
- <li>r600g: start adding hooks for aligning width/height for tiles.</li>
- <li>r600g: add r600 surface to store the aligned height.</li>
- <li>r600g: introduce a per-driver resource flag for transfers.</li>
- <li>r600g: add texture tiling alignment support.</li>
- <li>r600g: add texture tiling enable under a debug option.</li>
- <li>r600g: initial translate state support</li>
- <li>r600g: start splitting out common code from eg/r600.</li>
- <li>r600g: not fatal if we can't get tiling info from kernel</li>
- <li>r600g: merge more of the common r600/evergreen state handling</li>
- <li>r600g: drop more common state handling code</li>
- <li>r600g: fix magic 0x1 -&gt;flat shade ena</li>
- <li>r600g: add assembler support for all the kcache fields.</li>
- <li>gallium/noop: report GL 2.1</li>
- <li>r600g: pick correct color swap for A8 fbos.</li>
- <li>r300g/r600g: bump cache manager timeouts to 1s</li>
- <li>r600g: it looks like r600 can handle dword offsets in the indices.</li>
- <li>r300g: try and use all of vertex constant space</li>
- <li>r300g: fixup rs690 tiling stride alignment calculations.</li>
- <li>r600g: fix evergreen segfaults.</li>
- <li>r600g: hack around property unknown issues.</li>
-</ul></p>
-
-<p>Eric Anholt (300):
-<ul>
- <li>glsl: Add definition of gl_TextureMatrix inverse/transpose builtins.</li>
- <li>i965: Share the KIL_NV implementation between glsl and non-glsl.</li>
- <li>i965: Also enable CC statistics when doing OQs.</li>
- <li>i965: Track the windowizer's dispatch for kill pixel, promoted, and OQ</li>
- <li>glsl: Rework assignments with write_masks to have LHS chan count match RHS.</li>
- <li>glsl: Fix copy'n'wasted ir_noop_swizzle conditions.</li>
- <li>ir_to_mesa: Only compare vector_elements present for any_nequal/all_equal</li>
- <li>i965: Fix the vector/expression splitting for the write_mask change.</li>
- <li>i965: When splitting vector variable assignment, ignore unset channels.</li>
- <li>i965: Update expression splitting for the vector-result change to compares.</li>
- <li>i965: Warning fix for vector result any_nequal/all_equal change.</li>
- <li>mesa: Remove the non-required ARB_imaging extension.</li>
- <li>mesa: Remove EXT_histogram.</li>
- <li>mesa: Remove SGI_color_table.</li>
- <li>mesa: Remove SGI_color_matrix.</li>
- <li>mesa: Remove EXT_convolution.</li>
- <li>intel: Remove disabled stencil drawpixels acceleration.</li>
- <li>intel: Remove unnecessary minimum pitch alignment to 32 bytes.</li>
- <li>intel: Replace my intel_texture_bitmap code with _mesa_meta_Bitmap.</li>
- <li>radeon: Remove copied minimum pitch alignment code.</li>
- <li>unichrome: Mostly revert my convolution removal changes.</li>
- <li>intel: Remove dead intelIsTextureResident().</li>
- <li>i915: Remove a dead if (0) block.</li>
- <li>intel: Dead comment removal.</li>
- <li>intel: Corresponding FinishRenderTexture debug to BeginRenderTexture.</li>
- <li>i965: Add support for rendering to SARGB8 FBOs.</li>
- <li>intel: Fix segfault on INTEL_DEBUG=fbo with unsupported framebuffers.</li>
- <li>intel: Add fallback debug to glGenerateMipmap.</li>
- <li>intel: More reverting of the sw fallback for depth texture border color.</li>
- <li>intel: Improve some of the miptree debugging.</li>
- <li>mesa: Fix type typo in glGenerateMipmap handling of GL_UNSIGNED_INT data.</li>
- <li>glsl: Fix broadcast_index of lower_variable_index_to_cond_assign.</li>
- <li>glsl: Add validation that a swizzle only references valid channels.</li>
- <li>i965: Fix up writemasked assignments in the new FS.</li>
- <li>i965: Remove swizzling of assignment to vector-splitting single-channel LHS.</li>
- <li>i965: Handle all_equal/any_nequal in the new FS.</li>
- <li>i965: Fix vector splitting RHS channel selection with sparse writemasks.</li>
- <li>i965: Add support for dFdx()/dFdy() to the FS backend.</li>
- <li>i965: Add support for attribute interpolation on Sandybridge.</li>
- <li>i965: Set up inputs to the fragment shader according to FP InputsRead.</li>
- <li>i965: Add support for POW in gen6 FS.</li>
- <li>i965: Fix negation in the new FS backend.</li>
- <li>i965: Actually track the "if" depth in loop in the new FS backend.</li>
- <li>i965: Apply the same set of lowering passes to new FS as to Mesa IR.</li>
- <li>i965: Fix valgrind complaint about base_ir for new FS debugging.</li>
- <li>i965: Fix up the FS backend for the variable array indexing pass.</li>
- <li>i965: Set the variable type when dereferencing an array.</li>
- <li>i965: Add support for dereferencing structs to the new FS backend.</li>
- <li>i965: Add support for struct, array, and matrix uniforms to FS backend.</li>
- <li>i965: Fix all non-snb regression in the snb attribute interpolation commit.</li>
- <li>i965: Fix up part of my Sandybridge attributes support patch.</li>
- <li>i965: Add support for gl_FrontFacing to the new FS backend.</li>
- <li>i965: Subtract instead of adding when computing y delta in new FS backend.</li>
- <li>mesa: Pull ir_to_mesa's sampler number fetcher out to shared code.</li>
- <li>i965: Set up sampler numbers in the FS backend.</li>
- <li>i965: Add support for non-color render target write data to new FS backend.</li>
- <li>i965: Add support for MRT to the new FS backend.</li>
- <li>i965: Add support for ir_loop counters to the new FS backend.</li>
- <li>i965: Add support for ARB_fragment_coord_conventions to the new FS backend.</li>
- <li>glsl: Also update implicit sizes of varyings at link time.</li>
- <li>i965: Do interpolation for varying matrices and arrays in the FS backend.</li>
- <li>i965: Don't try to emit interpolation for unused varying slots.</li>
- <li>i965: Fix array indexing of arrays of matrices.</li>
- <li>i965: Clean up obsolete FINISHME comment.</li>
- <li>mesa: Move the list of builtin uniform info from ir_to_mesa to shared code.</li>
- <li>i965: Add support for builtin uniforms to the new FS backend.</li>
- <li>i965: Fix use of undefined mem_ctx in vector splitting.</li>
- <li>i956: Make new FS discard do its work in a temp, not the null reg!</li>
- <li>i965: Clean up the virtual GRF handling.</li>
- <li>ra: First cut at a graph-coloring register allocator for mesa.</li>
- <li>i965: First cut at register allocation using graph coloring.</li>
- <li>i965: Add live interval analysis and hook it up to the register allocator.</li>
- <li>i965: Remove my "safety counter" code from loops.</li>
- <li>i965: Fix whole-structure/array assignment in new FS.</li>
- <li>mesa: Don't reference a W component in setting up a vec3 uniform component.</li>
- <li>i965: Fix new FS handling of builtin uniforms with packed scalars in structs.</li>
- <li>glsl: Add a lowering pass for texture projection.</li>
- <li>i965: Use the lowering pass for texture projection.</li>
- <li>i965: Split the gen4 and gen5 sampler handling apart.</li>
- <li>i965: Add gen6 attribute interpolation to new FS backend.</li>
- <li>i965: Fix the gen6 jump size for BREAK/CONT in new FS.</li>
- <li>i965: Also increment attribute location when skipping unused slots.</li>
- <li>i965: Pre-gen6, map VS outputs (not FS inputs) to URB setup in the new FS.</li>
- <li>i965: Add real support for pre-gen5 texture sampling to the new FS.</li>
- <li>i965: Fix up copy'n'pasteo from moving coordinate setup around for gen4.</li>
- <li>i965: Restore the forcing of aligned pairs for delta_xy on chips with PLN.</li>
- <li>i965: When producing a single channel swizzle, don't make a temporary.</li>
- <li>i965: Add a sanity check for register allocation sizes.</li>
- <li>i965: Fix off-by-ones in handling the last members of register classes.</li>
- <li>i965: Don't try to emit code if we failed register allocation.</li>
- <li>i965: Add support for EXT_texture_swizzle to the new FS backend.</li>
- <li>i965: Set up swizzling of shadow compare results for GL_DEPTH_TEXTURE_MODE.</li>
- <li>i965: Fix glean/texSwizzle regression in previous commit.</li>
- <li>i965: Be more conservative on live interval calculation.</li>
- <li>i965: Add trivial dead code elimination in the new FS backend.</li>
- <li>i965: Add initial folding of constants into operand immediate slots.</li>
- <li>i965: In disasm, gen6 fb writes don't put msg reg # in destreg_conditionalmod.</li>
- <li>i965: Add support for gen6 FB writes to the new FS.</li>
- <li>i965: Enable the constant propagation code.</li>
- <li>i965: Also do constant propagation for the second operand of CMP.</li>
- <li>i965: Add back gen6 headerless FB writes to the new FS backend.</li>
- <li>i965: Gen6 no longer has the IFF instruction; always use IF.</li>
- <li>i965: Fix up IF/ELSE/ENDIF for gen6.</li>
- <li>i965: Fix botch in the header_present case in the new FS.</li>
- <li>i965: Add some clarification of the WECtrl field.</li>
- <li>i965: Don't do 1/w multiplication in new FS for gen6</li>
- <li>i965: Gen6's sampler messages are the same as Ironlake.</li>
- <li>i965: Refactor gl_FrontFacing setup out of general variable setup.</li>
- <li>i965: Add support for gl_FrontFacing on gen6.</li>
- <li>i965: Don't assume that WPOS is always provided on gen6 in the new FS.</li>
- <li>i965: Fix gen6 pointsize handling to match pre-gen6.</li>
- <li>i965: Disable emitting if () statements on gen6 until we really fix them.</li>
- <li>i965: Normalize cubemap coordinates like is done in the Mesa IR path.</li>
- <li>mesa: Simplify a bit of _mesa_add_state_reference using memcmp.</li>
- <li>i965: Drop the check for duplicate _mesa_add_state_reference.</li>
- <li>i965: Drop the check for YUV constants in the param list.</li>
- <li>i965: Handle swizzles in the addition of YUV texture constants.</li>
- <li>i965: Fix gen6 WM push constants updates.</li>
- <li>i965: Fix new FS gen6 interpolation for sparsely-populated arrays.</li>
- <li>i965: Enable attribute swizzling (repositioning) in the gen6 SF.</li>
- <li>i965: Add register coalescing to the new FS backend.</li>
- <li>i965: Split FS_OPCODE_DISCARD into two steps.</li>
- <li>i965: Reduce register interference checks for changed FS_OPCODE_DISCARD.</li>
- <li>i965: Move FS backend structures to a header.</li>
- <li>i965: Give the math opcodes information on base mrf/mrf len.</li>
- <li>i965: Give the FB write and texture opcodes the info on base MRF, like math.</li>
- <li>i965: Compute to MRF in the new FS backend.</li>
- <li>i965: Don't consider gen6 math instructions to write to MRFs.</li>
- <li>i965: Add a couple of checks for gen6 math instruction limits.</li>
- <li>i965: Don't compute-to-MRF in gen6 math instructions.</li>
- <li>i965: Expand uniform args to gen6 math to full registers to get hstride == 1.</li>
- <li>i965: Don't compute-to-MRF in gen6 VS math.</li>
- <li>i965: Fix gen6 pixel_[xy] setup to avoid mixing int and float src operands.</li>
- <li>i965: Always use the new FS backend on gen6.</li>
- <li>i965: Fix missing "break;" in i2b/f2b, and missing AND of CMP result.</li>
- <li>intel: Allow CopyTexSubImage to InternalFormat 3/4 textures, like RGB/RGBA.</li>
- <li>i965: Don't rebase the index buffer to min 0 if any arrays are in VBOs.</li>
- <li>i965: Add support for rescaling GL_TEXTURE_RECTANGLE coords to new FS.</li>
- <li>i965: Set class_sizes[] for the aligned reg pair class.</li>
- <li>i965: Update the live interval when coalescing regs.</li>
- <li>i965: Add a pass to the FS to split virtual GRFs to float channels.</li>
- <li>i965: Add a function for handling the move of boolean values to flag regs.</li>
- <li>i965: Add peepholing of conditional mod generation from expressions.</li>
- <li>i965: Enable the new FS backend on pre-gen6 as well.</li>
- <li>i965: Fix texturing on pre-gen5.</li>
- <li>i965: Set the type of the null register to fix gen6 FS comparisons.</li>
- <li>i965: Disable the debug printf I added for FS disasm.</li>
- <li>i965: Fix a weirdness in NOT handling.</li>
- <li>i965: Fix assertion failure on gen6 BufferSubData to busy BO.</li>
- <li>i965: Assert out on gen6 VS constant buffer reads that hang the GPU for now.</li>
- <li>i965: Fix scissor-offscreen on gen6 like we did pre-gen6.</li>
- <li>i965: Avoid blits in BufferCopySubdata on gen6.</li>
- <li>i965: Tell the shader compiler when we expect depth writes for gen6.</li>
- <li>i965: Remove the gen6 emit_mi_flushes I sprinkled around the driver.</li>
- <li>i965: Disable thread dispatch when the FS doesn't do any work.</li>
- <li>i965: Add EU emit support for gen6's new IF instruction with comparison.</li>
- <li>i965: Set the source operand types for gen6 if/else/endif to integer.</li>
- <li>i965: Use the new style of IF statement with embedded comparison on gen6.</li>
- <li>i965: Split register allocation out of the ever-growing brw_fs.cpp.</li>
- <li>i965: Fix gl_FrontFacing emit on pre-gen6.</li>
- <li>i965: Add support for register spilling.</li>
- <li>i965: Don't emit register spill offsets directly into g0.</li>
- <li>i965: Correct scratch space allocation.</li>
- <li>i965: Be more aggressive in tracking live/dead intervals within loops.</li>
- <li>i965: Move the FS disasm/annotation printout to codegen time.</li>
- <li>i965: Add support for pull constants to the new FS backend.</li>
- <li>i965: Add EU code for dword scattered reads (constant buffer array indexing).</li>
- <li>i965: Clarify an XXX comment in FB writes with real info.</li>
- <li>i965: Use SENDC on the first render target write on gen6.</li>
- <li>i965: Clear some undefined fields of g0 when using them for gen6 FB writes.</li>
- <li>i965: Add disasm for the flag register.</li>
- <li>i965: Add support for discard instructions on gen6.</li>
- <li>i965: Handle new ir_unop_round_even in channel expression splitting.</li>
- <li>i965: Fix typo in comment about state flags.</li>
- <li>i965: Set up the constant buffer on gen6 when it's needed.</li>
- <li>i965: Add support for constant buffer loads on gen6.</li>
- <li>i965: Drop the eot argument to read messages, which can never be set.</li>
- <li>i965: Fix VS URB entry sizing.</li>
- <li>i965: Disable register spilling on gen6 until it's fixed.</li>
- <li>i965: Make FS uniforms be the actual type of the uniform at upload time.</li>
- <li>i965: Add user clip planes support to gen6.</li>
- <li>i965: Update gen6 SF state when point state (sprite or attenuation) changes.</li>
- <li>i965: Upload required gen6 VS push constants even when using pull constants.</li>
- <li>i965: Update the gen6 stencil ref state when stencil state changes.</li>
- <li>mesa: Make metaops use program refcounts instead of names.</li>
- <li>mesa: Don't compute an unused texture completeness debug string.</li>
- <li>intel: For batch, use GTT mapping instead of writing to a malloc and copying.</li>
- <li>intel: Annotate debug printout checks with unlikely().</li>
- <li>intel: Remove the magic unaligned memcpy code.</li>
- <li>i965: Remove dead intel_structs.h file.</li>
- <li>intel: Avoid taking logbase2 of several things that we max.</li>
- <li>intel: Remove duplicated teximage miptree to object miptree promotion.</li>
- <li>intel: Remove leftover dri1 locking fields in the context.</li>
- <li>mesa: Fix delayed state flagging for EXT_sso-related program changes.</li>
- <li>intel: Fix the client-side swapbuffers throttling.</li>
- <li>Revert "intel: Fix the client-side swapbuffers throttling."</li>
- <li>i965: Allow OPCODE_SWZ to put immediates in the first arg.</li>
- <li>i965: Add support for math on constants in gen6 brw_wm_glsl.c path.</li>
- <li>i965: Work around strangeness in swizzling/masking of gen6 math.</li>
- <li>i965: re-enable gen6 IF statements in the fragment shader.</li>
- <li>glsl: Free the loop state context when we free the loop state.</li>
- <li>i965: Fix gl_FragCoord inversion when drawing to an FBO.</li>
- <li>i965: Shut up spurious gcc warning about GLSL_TYPE enums.</li>
- <li>mesa: Don't spam the console in a debug build unless some spam is requested.</li>
- <li>i965: Add state dumping for sampler state.</li>
- <li>i965: Add dumping of the sampler default color.</li>
- <li>i965: Fail on loops on gen6 for now until we write the EU emit code for it.</li>
- <li>i965: Eliminate dead code more aggressively.</li>
- <li>mesa: Include C++ files in the makedepend of DRI drivers.</li>
- <li>i965: Fix compute_to_mrf to not move a MRF write up into another live range.</li>
- <li>i965: Just use memset() to clear most members in FS constructors.</li>
- <li>i965: Remove extra n at the end of every instruction in INTEL_DEBUG=wm.</li>
- <li>i965: Fold constants into the second arg of BRW_SEL as well.</li>
- <li>glsl: Add a helper function for determining if an rvalue could be a saturate.</li>
- <li>i965: Recognize saturates and turn them into a saturated mov.</li>
- <li>ir_to_mesa: Detect and emit MOV_SATs for saturate constructs.</li>
- <li>i965: Improve compute-to-mrf.</li>
- <li>i965: Remove duplicate MRF writes in the FS backend.</li>
- <li>i965: Move gen4 blend constant color to the gen4 blending file.</li>
- <li>i965: Don't upload polygon stipple unless required.</li>
- <li>i965: Don't upload line stipple pattern unless we're stippling.</li>
- <li>i965: Don't upload line smooth params unless we're line smoothing.</li>
- <li>i965: Use the new embedded compare in SEL on gen6 for VS MIN and MAX opcodes.</li>
- <li>i965: Fix type of gl_FragData[] dereference for FB write.</li>
- <li>glsl: Make the symbol table's add_function just use the function's name.</li>
- <li>glsl: Make the symbol table's add_variable just use the variable's name.</li>
- <li>glsl: Add a helper constructor for expressions that works out result type.</li>
- <li>glsl: Fix structure and array comparisions.</li>
- <li>glsl: Quiet unreachable no-return-from-function warning.</li>
- <li>i965: Dump the WHILE jump distance on gen6.</li>
- <li>i965: Add support for gen6 DO/WHILE ISA emit.</li>
- <li>i965: Add support for gen6 BREAK ISA emit.</li>
- <li>i965: Add support for gen6 CONTINUE instruction emit.</li>
- <li>i965: Enable IF statements in the VS.</li>
- <li>i965: Add support for loops in the VS.</li>
- <li>glsl: Mark the array access for whole-array comparisons.</li>
- <li>glsl: Fix flipped return of has_value() for array constants.</li>
- <li>mesa: Add getters for the rest of the supported draw buffers.</li>
- <li>mesa: Add getters for ARB_copy_buffer's attachment points.</li>
- <li>intel: Add an env var override to execute for a different GPU revision.</li>
- <li>i965: Update gen6 WM state on compiled program change, not just FP change.</li>
- <li>i965: Update gen6 SF state on fragment program change too.</li>
- <li>i965: Fix compile warning about missing opcodes.</li>
- <li>i965: Move payload reg setup to compile, not lookup time.</li>
- <li>i965: Provide delta_xy reg to gen6 non-GLSL path PINTERP.</li>
- <li>i965: Fix up 16-wide gen6 FB writes after various refactoring.</li>
- <li>i965: Don't smash a group of coordinates doing gen6 16-wide sampler headers.</li>
- <li>i965: Fix gen6 interpolation setup for 16-wide.</li>
- <li>i965: Fix up gen6 samplers for their usage by brw_wm_emit.c</li>
- <li>i965: Make the sampler's implied move on gen6 be a raw move.</li>
- <li>i965: Align gen6 push constant size to dispatch width.</li>
- <li>i965: Add support for the instruction compression bits on gen6.</li>
- <li>i965: Nuke brw_wm_glsl.c.</li>
- <li>i965: Remove INTEL_DEBUG=glsl_force now that there's no brw_wm_glsl.c</li>
- <li>i965: Fix comment about gen6_wm_constants.</li>
- <li>i965: Handle saturates on gen6 math instructions.</li>
- <li>i965: Always hand the absolute value to RSQ.</li>
- <li>i965: Add disabled debug code for dumping out the WM constant payload.</li>
- <li>i965: Work around gen6 ignoring source modifiers on math instructions.</li>
- <li>i965: Fix flipped value of the not-embedded-in-if on gen6.</li>
- <li>i965: Don't try to store gen6 (float) blend constant color in bytes.</li>
- <li>i965: Set up the color masking for the first drawbuffer on gen6.</li>
- <li>i965: Set up the per-render-target blend state on gen6.</li>
- <li>i965: Set the render target index in gen6 fixed-function/ARB_fp path.</li>
- <li>i965: Use the new pixel mask location for gen6 ARB_fp KIL instructions.</li>
- <li>i965: Drop KIL_NV from the ff/ARB_fp path since it was only used for GLSL.</li>
- <li>i965: Drop push-mode reladdr constant loading and always use constant_map.</li>
- <li>i965: Fix VS constants regression pre-gen6.</li>
- <li>i965: Clean up VS constant buffer location setup.</li>
- <li>i965: Set up the correct texture border color state struct for Ironlake.</li>
- <li>i965: Set render_cache_read_write surface state bit on gen6 constant surfs.</li>
- <li>i965: remove unused variable since brw_wm_glsl.c removal.</li>
- <li>intel: Use plain R8 and RG8 for COMPRESSED_RED and COMPRESSED_RG.</li>
- <li>intel: Set the swizzling for depth textures using the GL_RED depth mode.</li>
- <li>glsl: Correct the marking of InputsRead/OutputsWritten on in/out matrices.</li>
- <li>i965: Correct the dp_read message descriptor setup on g4x.</li>
- <li>intel: Include stdbool so we can stop using GLboolean when we want to.</li>
- <li>i965: Fix ARL to work on gen6.</li>
- <li>i956: Fix the old FP path fragment position setup on gen6.</li>
- <li>i965: Fix gl_FragCoord.z setup on gen6.</li>
- <li>i965: Add support for using the BLT ring on gen6.</li>
- <li>intel: Update renderbuffers before looking up CopyTexImage's read buffer.</li>
- <li>intel: Drop commented intel_flush from copy_teximage.</li>
- <li>intel: Try to sanely check that formats match for CopyTexImage.</li>
- <li>intel: Support glCopyTexImage() from XRGB8888 to ARGB8888.</li>
- <li>i965: Avoid using float type for raw moves, to work around SNB issue.</li>
- <li>i965: Set the alternative floating point mode on gen6 VS and WM.</li>
- <li>i965: Add support for gen6 constant-index constant loading.</li>
- <li>i965: Add support for gen6 reladdr VS constant loading.</li>
- <li>i965: Improve the hacks for ARB_fp scalar^scalar POW on gen6.</li>
- <li>i965: Factor out the ir comparision to BRW_CONDITIONAL_* code.</li>
- <li>i965: Fix regression in FS comparisons on original gen4 due to gen6 changes.</li>
- <li>i965: Do lowering of array indexing of a vector in the FS.</li>
- <li>intel: Only do frame throttling at glFlush time when using frontbuffer.</li>
- <li>intel: Handle forced swrast clears before other clear bits.</li>
- <li>intel: Use tri clears when we don't know how to blit clear the format.</li>
- <li>intel: Add spans code for the ARB_texture_rg support.</li>
- <li>intel: Add a couple of helper functions to reduce rb code duplication.</li>
- <li>intel: Fix segfaults from trying to use _ColorDrawBuffers in FBO validation.</li>
- <li>intel: When validating an FBO's combined depth/stencil, use the given FBO.</li>
-</ul></p>
-
-<p>Fabian Bieler (2):
-<ul>
- <li>r600g: set address of pop instructions to next instruction</li>
- <li>glsl: fix lowering conditional returns in subroutines</li>
-</ul></p>
-
-<p>Francisco Jerez (51):
-<ul>
- <li>dri/nv04: Fix PGRAPH_ERRORs when running OA.</li>
- <li>dri/nv04: Mipmapping fixes.</li>
- <li>dri/nv04: Align SIFM transfer dimensions.</li>
- <li>dri/nv04: Fix up color mask.</li>
- <li>dri/nv04: Fix maximum texture size.</li>
- <li>dri/nv04: Fix provoking vertex.</li>
- <li>dri/nouveau: Update nouveau_class.h.</li>
- <li>dri/nouveau: Add some more extensions.</li>
- <li>dri/nouveau: Fix glRenderbufferStorage with DEPTH_COMPONENT as internal format.</li>
- <li>dri/nouveau: Don't request a fake front unnecessarily.</li>
- <li>dri/nouveau: Don't reemit the BO state in nouveau_state_emit().</li>
- <li>dri/nouveau: Cleanup references to the old FBOs on glMakeCurrent().</li>
- <li>meta: Don't bind the created texture object in init_temp_texture().</li>
- <li>dri/nv10: Fix the CLAMP texture wrap mode.</li>
- <li>dri/nv04: Use nvgl_wrap_mode().</li>
- <li>dri/nouveau: Remove unnecessary assertion.</li>
- <li>dri/nouveau: Cleanup more references to old FBOs and VBOs.</li>
- <li>dri/nv10-nv20: Fix texturing in some cases after a base level change.</li>
- <li>dri/nouveau: Fix software mipmap generation on 1x1 textures.</li>
- <li>dri/nouveau: Have a smaller amount of larger scratch buffers.</li>
- <li>dri/nouveau: Remove unnecessary flush.</li>
- <li>dri/nv10: Use fast Z clears.</li>
- <li>dri/nouveau: Minor cleanup.</li>
- <li>dri/nv10: Fake fast Z clears for pre-nv17 cards.</li>
- <li>dri/nouveau: Initialize tile_flags when allocating a render target.</li>
- <li>nouveau: Get larger push buffers.</li>
- <li>dri/nouveau: Force a "slow" Z clear if we're getting a new depth buffer.</li>
- <li>dri/nv20: Clear with the 3D engine.</li>
- <li>dri/nouveau: Don't assert(0) on compressed internal formats.</li>
- <li>dri/nv25: Bind a hierarchical depth buffer.</li>
- <li>dri/nouveau: Call _mesa_update_state() after framebuffer invalidation.</li>
- <li>dri/nouveau: Honor the access flags in nouveau_bufferobj_map_range.</li>
- <li>dri/nouveau: Tell the vbo module we want real hardware BOs.</li>
- <li>dri/nouveau: Split out the scratch helpers to a separate file.</li>
- <li>dri/nouveau: Avoid recursion in nouveau_bo_context_reset().</li>
- <li>dri/nouveau: Use a macro to iterate over the bound vertex attributes.</li>
- <li>dri/nouveau: Split out array handling to its own file.</li>
- <li>dri/nouveau: Optimize VBO binding re-emission.</li>
- <li>dri/nouveau: Keep small DYNAMIC_DRAW vertex buffers in system ram.</li>
- <li>dri/nouveau: Pipeline glTexSubImage texture transfers.</li>
- <li>dri/nouveau: Fix type promotion issue on 32bit platforms.</li>
- <li>dri/nouveau: Validate the framebuffer state on read buffer changes.</li>
- <li>dri/nouveau: Re-emit the BO state when coming back from a software fallback.</li>
- <li>meta: Don't leak alpha function/reference value changes.</li>
- <li>meta: Fix incorrect rendering of the bitmap alpha component.</li>
- <li>vbo: Avoid unnecessary copy to/from current in vertex format upgrade.</li>
- <li>meta: Don't try to disable cube maps if the driver doesn't expose the extension.</li>
- <li>meta: Handle bitmaps with alpha test enabled.</li>
- <li>dri/nouveau: Split hardware/software TNL instantiation more cleanly.</li>
- <li>dri/nouveau: Fix typo.</li>
- <li>dri/nouveau: Kill a bunch of ternary operators.</li>
-</ul></p>
-
-<p>Fredrik Höglund (2):
-<ul>
- <li>r600g: Fix texture sampling with swizzled coords</li>
- <li>r600g: fix pow(0, 0) evaluating to NaN</li>
-</ul></p>
-
-<p>Guillermo S. Romero (1):
-<ul>
- <li>r300g: Do not use buf param before checking for NULL.</li>
-</ul></p>
-
-<p>Henri Verbeet (19):
-<ul>
- <li>r600g: Flush upload buffers before draws instead of before flushes.</li>
- <li>r600g: Check for other references before checking for existing mappings in radeon_bo_pb_map_internal().</li>
- <li>r600g: Remove a redundant flush in r600_texture_transfer_map().</li>
- <li>r600g: Buffer object maps imply a wait.</li>
- <li>r600g: Respect PB_USAGE_UNSYNCHRONIZED in radeon_bo_pb_map_internal().</li>
- <li>Revert "r600g: Flush upload buffers before draws instead of before flushes."</li>
- <li>r600g: fix exports_ps to export a number not a mask.</li>
- <li>r600g: Mention AMD in the renderer string.</li>
- <li>r600g: Cleanup the fenced_bo list in r600_context_fini().</li>
- <li>r600g: Evergreen has two extra frac_bits for the sampler LOD state.</li>
- <li>r600: Evergreen has two extra frac_bits for the sampler LOD state.</li>
- <li>r600g: Add PIPE_FORMAT_L8A8_UNORM for Evergreen as well.</li>
- <li>r600g: Swizzle vertex data only once.</li>
- <li>r600g: Synchronize supported color formats between Evergreen and r600/r700.</li>
- <li>r600g: Fix the PIPE_FORMAT_L8A8_UNORM color swaps.</li>
- <li>r600g: Fix the PIPE_FORMAT_A8_UNORM color swap for Evergreen as well.</li>
- <li>r600g: Cleanup block bo references in r600_context_fini().</li>
- <li>r600g: Cleanup fetch shader resources in r600_pipe_shader_destroy().</li>
- <li>st/mesa: Handle wrapped depth buffers in st_copy_texsubimage().</li>
-</ul></p>
-
-<p>Hui Qi Tay (10):
-<ul>
- <li>llvmpipe: minor changes in llvm coefficient calcs</li>
- <li>draw: cliptest and viewport done in a single loop in vertex shader</li>
- <li>draw: added viewport and cliptest flags</li>
- <li>draw: sanitize llvm variant key</li>
- <li>draw: corrections for w coordinate</li>
- <li>draw: corrections to allow for different cliptest cases</li>
- <li>llvmpipe: Moved draw pipeline twoside function to llvm setup code</li>
- <li>llvmpipe: added llvm offset setup code</li>
- <li>llvmpipe: clean up polygon offset function in lp setup code</li>
- <li>llvmpipe: fix such that offset/twoside function only does in-place modification</li>
-</ul></p>
-
-<p>Ian Romanick (102):
-<ul>
- <li>glsl2: Refactor testing for whether a deref is of a matrix or array</li>
- <li>glsl2: Add flags to enable variable index lowering</li>
- <li>glsl: Add doxygen comments</li>
- <li>EGL DRI2: Silence piles of 'unused variable' warnings</li>
- <li>EGL DRI2: Silence 'missing initializer' warnings</li>
- <li>egl_glx: Silence piles of 'unused variable' warnings</li>
- <li>egl: Fix several 'comparison between signed and unsigned integer' warnings</li>
- <li>dri: Ensure that DRI driver cpp files are in tarballs</li>
- <li>mesa: Force GL_ARB_copy_buffer to always be enabled</li>
- <li>mesa: Force GL_SGIS_generate_mipmap to always be enabled</li>
- <li>Remove GL_MESA_packed_depth_stencil</li>
- <li>Remove GL_EXT_cull_vertex</li>
- <li>Regenerate files changed by previous commit</li>
- <li>Remove unnescessary initializations of UpdateTexturePalette</li>
- <li>ARB_texture_rg: Add GLX protocol support</li>
- <li>ARB_texture_rg: Correct some errors in RED / RG internal format handling</li>
- <li>ARB_texture_rg: Add GL_TEXTURE_{RED,GREEN}_SIZE query support</li>
- <li>ARB_texture_rg: Add GL_RED as a valid GL_DEPTH_TEXTURE_MODE</li>
- <li>ARB_texture_rg: Handle RED and RG the same as RGB for tex env</li>
- <li>ARB_texture_rg: Add R8, R16, RG88, and RG1616 internal formats</li>
- <li>ARB_texture_rg: Allow RED and RG textures as FBO color buffer attachments</li>
- <li>mesa: Enable GL_ARB_texture_rg in software paths</li>
- <li>i965: Enable GL_ARB_texture_rg</li>
- <li>mesa: Add ARB_texture_compression_rgtc as an alias for EXT_texture_compression_rgtc</li>
- <li>ARB_texture_rg: Add GL_COMPRESSED_{RED,RG} cases in _mesa_is_color_format</li>
- <li>mesa: Fix misplaced #endif</li>
- <li>mesa: Trivial correction to comment</li>
- <li>rgtc: Detect RGTC formats as color formats and as compressed formats</li>
- <li>docs: Add list of bugs fixed in 7.9</li>
- <li>docs: Import 7.9 release notes from 7.9 branch.</li>
- <li>docs: Import 7.8.x release notes from 7.8 branch.</li>
- <li>docs: download.html does not need to be updated for each release</li>
- <li>docs: Update mailing lines from sf.net to freedesktop.org</li>
- <li>docs: Import news updates from 7.9 branch</li>
- <li>docs: added news item for 7.9 release</li>
- <li>glsl: Fail linking if assign_attribute_locations fails</li>
- <li>glsl: Refactor 'layout' grammar to match GLSL 1.60 spec grammar</li>
- <li>glsl: Slight refactor of error / warning checking for ARB_fcc layout</li>
- <li>glsl: Clear type_qualifier using memset</li>
- <li>glsl: Wrap ast_type_qualifier contents in a struct in a union</li>
- <li>glsl: Regenerate files modified by previous commits</li>
- <li>glcpp: Add the define for ARB_explicit_attrib_location when present</li>
- <li>glcpp: Regenerate files changes by previous commit</li>
- <li>glsl: Add parser support for GL_ARB_explicit_attrib_location layouts</li>
- <li>glsl: Regenerate files changes by previous commit</li>
- <li>glsl: Track explicit location in AST to IR translation</li>
- <li>glsl: Add linker support for explicit attribute locations</li>
- <li>main: Enable GL_ARB_explicit_attrib_location for swrast</li>
- <li>intel: Enable GL_ARB_explicit_attrib_location</li>
- <li>glsl: Remove const decoration from inlined function parameters</li>
- <li>docs: skeleton for 7.10 release notes</li>
- <li>docs: Update status of GL 3.x related extensions</li>
- <li>mesa: Validate assembly shaders when GLSL shaders are used</li>
- <li>glsl: Fix incorrect assertion</li>
- <li>linker: Reject shaders that have unresolved function calls</li>
- <li>mesa: Silence unused variable warning</li>
- <li>mesa: Refactor validation of shader targets</li>
- <li>mesa: Clean up two 'comparison between signed and unsigned' warnings</li>
- <li>mesa: Clean up various 'unused parameter' warnings in shaderapi</li>
- <li>glsl: Slightly change the semantic of _LinkedShaders</li>
- <li>linker: Trivial indention fix</li>
- <li>i965: Fix indentation after commit 3322fbaf</li>
- <li>linker: Improve handling of unread/unwritten shader inputs/outputs</li>
- <li>glapi: Add GL_EXT_separate_shader_objects</li>
- <li>glapi: Commit files changed by previous commit</li>
- <li>mesa: Add infrastructure to track GL_EXT_separate_shader_objects</li>
- <li>mesa: Skeletal support for GL_EXT_separate_shader_objects</li>
- <li>mesa: Add display list support for GL_EXT_separate_shader_objects functions</li>
- <li>mesa: Track an ActiveProgram distinct from CurrentProgram</li>
- <li>Track separate programs for each stage</li>
- <li>swrast: Enable GL_EXT_separate_shader_objects in software paths</li>
- <li>intel: Enable GL_EXT_separate_shader_objects in Intel drivers</li>
- <li>docs: add GL_EXT_separate_shader_objects to release notes</li>
- <li>glsl: Fix incorrect gl_type of sampler2DArray and sampler1DArrayShadow</li>
- <li>ir_to_mesa: Refactor code for emitting DP instructions</li>
- <li>mesa: Allow query of MAX_SAMPLES with EXT_framebuffer_multisample</li>
- <li>glsl: Refactor is_vec_{zero,one} to be methods of ir_constant</li>
- <li>glsl: Simplify generation of swizzle for vector constructors</li>
- <li>glsl: Make is_zero and is_one virtual methods of ir_rvalue</li>
- <li>ir_to_mesa: Generate smarter code for some conditional moves</li>
- <li>glsl: Add ir_unop_sin_reduced and ir_unop_cos_reduced</li>
- <li>glsl: Eliminate assumptions about size of ir_expression::operands</li>
- <li>glsl: Add ir_rvalue::is_negative_one predicate</li>
- <li>glsl: Add unary ir_expression constructor</li>
- <li>glsl: Add ir_quadop_vector expression</li>
- <li>glsl: Fix matrix constructors with vector parameters</li>
- <li>i915: Disallow alpha, red, RG, and sRGB as render targets</li>
- <li>glsl: Use M_LOG2E constant instead of calling log2</li>
- <li>glsl: Lower ir_binop_pow to a sequence of EXP2 and LOG2</li>
- <li>i915: Request that POW instructions be lowered</li>
- <li>i915: Correctly generate unconditional KIL instructions</li>
- <li>glsl: Ensure that equality comparisons don't return a NULL IR tree</li>
- <li>i965: Correctly emit constants for aggregate types (array, matrix, struct)</li>
- <li>glsl: Inherrit type of declared variable from initializer</li>
- <li>linker: Ensure that unsized arrays have a size after linking</li>
- <li>linker: Fix regressions caused by previous commit</li>
- <li>glsl: Inherrit type of declared variable from initializer after processing assignment</li>
- <li>linker: Allow built-in arrays to have different sizes between shader stages</li>
- <li>ir_to_mesa: Don't generate swizzles for record derefs of non-scalar/vectors</li>
- <li>Refresh autogenerated file builtin_function.cpp.</li>
- <li>glsl: Allow less restrictive uses of sampler array indexing in GLSL &lt= 1.20</li>
- <li>docs: Import 7.9.1 release notes from 7.9 branch</li>
-</ul></p>
-
-<p>Jakob Bornecrantz (27):
-<ul>
- <li>rbug: Cast opcode to corrent int size</li>
- <li>rbug: Add function to get opcode name string</li>
- <li>scons: Link against talloc in the Gallium DRI drivers</li>
- <li>i915g: Link with wrapper sw winsys with scons</li>
- <li>tgsi: Actually care what check_soa_dependencies says</li>
- <li>tgsi: Fix missing test before check</li>
- <li>llvmpipe: Move makefile include to before targets</li>
- <li>wrapper: Fix spelling</li>
- <li>wrapper: Add a way to dewrap a pipe screen without destroying it</li>
- <li>egl: Remove unnecessary headers</li>
- <li>target-helpers: Remove per target software wrapper check</li>
- <li>graw: Tidy graw xlib scons file a bit</li>
- <li>scons: Remove old pipebuffer SConscript</li>
- <li>scons: Detabify</li>
- <li>scons: Check for pkg-config before trying to use it</li>
- <li>scons: Check for libdrm_[intel|radeon] as well</li>
- <li>scons: Move dependancy checks to the main gallium scons file</li>
- <li>scons: Unify state tracker SConscripts</li>
- <li>galahad: Correct the name of the scons library</li>
- <li>graw: Use inline sw helper instead of roll your own loader</li>
- <li>libgl-xlib: Use sw helper instead of roll your own</li>
- <li>libgl-xlib: Use inline debug helper instead of non-inline version</li>
- <li>graw: Use inline debug helper instead of non-inline version</li>
- <li>gallium: Remove redundant sw and debug target helpers</li>
- <li>i915g: Improve debug printing for textures</li>
- <li>i915g: Make sure that new vbo gets updated</li>
- <li>st/mesa: Unbind all constant buffers</li>
-</ul></p>
-
-<p>Jerome Glisse (75):
-<ul>
- <li>r600g: alternative command stream building from context</li>
- <li>r600g: move chip class to radeon common structure</li>
- <li>r600g: use pipe context for flushing inside map</li>
- <li>r600g: add back reference check when mapping buffer</li>
- <li>r600g: directly allocate bo for user buffer</li>
- <li>r600g: fix multi buffer rendering</li>
- <li>r600g: occlusion query for new design</li>
- <li>r600g: flush color buffer after draw command</li>
- <li>r600g: disable shader rebuild optimization &amp; account cb flush packet</li>
- <li>r600g: fix multiple occlusion query on same id</li>
- <li>r600g: initial evergreen support in new path</li>
- <li>r600g: fix typo in evergreen define (resource are in x range)</li>
- <li>r600g: move use_mem_constants flags for new designs structure alignment</li>
- <li>r600g: evergreen fix for new design</li>
- <li>r600g: fix compilation after change to evergreend.h</li>
- <li>r600g: fixup some evergreen register definitions</li>
- <li>r600g: fix evergreen new path</li>
- <li>r600g: fix reg definition</li>
- <li>r600g: fix evergreen new path</li>
- <li>r600g: bring over fix from old path to new path</li>
- <li>r600g: fix vertex resource &amp; polygon offset</li>
- <li>r600g: disable early cull optimization when occlusion query running</li>
- <li>r600g: move around variables to share depth uncompression code</li>
- <li>r600g: use depth decompression in new path</li>
- <li>r600g: fix index buffer drawing</li>
- <li>r600g: build packet header once</li>
- <li>r600g: fix pointsprite &amp; resource unbinding</li>
- <li>r600g: fix routing btw vertex &amp; pixel shader</li>
- <li>r600g: fix occlusion query after change to block structure</li>
- <li>r600g: use ptr for blit depth uncompress function</li>
- <li>r600g: fix remaining piglit issue in new design</li>
- <li>r600g: switch to new design</li>
- <li>r600g: suspend/resume occlusion query around clear/copy</li>
- <li>r600g: avoid rebuilding the vertex shader if no change to input format</li>
- <li>r600g: use a hash table instead of group</li>
- <li>r600g: delete old path</li>
- <li>r600g: cleanup</li>
- <li>r600g: more cleanup</li>
- <li>r600g: use constant buffer instead of register for constant</li>
- <li>r600g: fix constant &amp; literal src splitting, also fix mplayer gl2 shader</li>
- <li>evergreeng: avoid overlapping border color btw VS &amp; PS</li>
- <li>r600g: indentation fixes</li>
- <li>r600g: rename radeon_ws_bo to r600_bo</li>
- <li>r600g: allow r600_bo to be a sub allocation of a big bo</li>
- <li>r600g: use r600_bo for relocation argument, simplify code</li>
- <li>r600g: rename radeon_ws_bo to r600_bo</li>
- <li>r600g: remove dead label &amp; fix indentation</li>
- <li>r600g: store reloc information in bo structure</li>
- <li>r600g: improve bo flushing</li>
- <li>r600g: simplify block relocation</li>
- <li>r600g: userspace fence to avoid kernel call for testing bo busy status</li>
- <li>r600g: avoid segfault due to unintialized list pointer</li>
- <li>r600g: fix dirty state handling</li>
- <li>r600g: allow driver to work without submitting cmd to GPU</li>
- <li>gallium/noop: no operation gallium driver</li>
- <li>r600g: code cleanup (indent, trailing space, empty line ...)</li>
- <li>r600g: fix occlusion query on evergreen (avoid lockup)</li>
- <li>r600g: add fetch shader capabilities</li>
- <li>r600g: dump raw shader output for debugging</li>
- <li>r600g: update polygon offset only when rasterizer or zbuffer change</li>
- <li>r600g: indentation fix</li>
- <li>r600g: more indentation fix + warning silencing + dead code removal</li>
- <li>r600g: build fetch shader from vertex elements</li>
- <li>r600g: avoid useless shader rebuild at draw call</li>
- <li>r600g: remove useless flush map</li>
- <li>r600g: remove dead code</li>
- <li>r600g: fix userspace fence against lastest kernel</li>
- <li>r600g: avoid using pb* helper we are loosing previous cpu cycle with it</li>
- <li>r600g: specialized upload manager</li>
- <li>r600g: indentation cleanup</li>
- <li>r600g: fix bo size when creating bo from handle</li>
- <li>r600g: fix segfault when translating vertex buffer</li>
- <li>r600g: need to reference upload buffer as the might still live accross flush</li>
- <li>r600g: properly unset vertex buffer</li>
- <li>r600g: avoid segfault</li>
-</ul></p>
-
-<p>Joakim Sindholt (3):
-<ul>
- <li>util/u_blitter: fix leak</li>
- <li>radeong: fix leaks</li>
- <li>r300g: silence guard band cap errors</li>
-</ul></p>
-
-<p>Johann Rudloff (3):
-<ul>
- <li>radeon: Implement EGL_MESA_no_surface_extension</li>
- <li>radeon: Implement __DRI_IMAGE and EGL_MESA_image_drm</li>
- <li>radeon: Implement GL_OES_EGL_image</li>
-</ul></p>
-
-<p>John Doe (3):
-<ul>
- <li>r600g: misc cleanup</li>
- <li>r600g: don't double count dirty block</li>
- <li>r600g: keep a mapping around for each bo</li>
-</ul></p>
-
-<p>Jon TURNEY (1):
-<ul>
- <li>Ensure -L$(TOP)/$(LIB_DIR) appears in link line before any -L in $LDFLAGS</li>
-</ul></p>
-
-<p>José Fonseca (128):
-<ul>
- <li>gallivm: Fix address register swizzle.</li>
- <li>gallivm: Start collecting bitwise arithmetic helpers in a new module.</li>
- <li>gallivm: Clamp indirect register indices to file_max.</li>
- <li>util: linearized sRGB values don't fit into 8bits</li>
- <li>llvmpipe: Default to no threading on single processor systems.</li>
- <li>tgsi: Don't ignore indirect registers in tgsi_check_soa_dependencies</li>
- <li>llvmpipe: Describe how to profile llvmpipe.</li>
- <li>llvmpipe: When failing free fs shader too.</li>
- <li>util: Flush stdout on util_format.</li>
- <li>gallivm: Add unorm support to lp_build_lerp()</li>
- <li>llvmpipe: Special case complementary and identify blend factors in SoA.</li>
- <li>llvmpipe: Make rgb/alpha bland func/factors match, when there is no alpha.</li>
- <li>draw: Prevent clipped vertices overflow.</li>
- <li>draw: Fullfil the new min_lod/max_lod/lod_bias/border_color dynamic state</li>
- <li>gallivm: Fetch the lod from the dynamic state when min_lod == max_lod.</li>
- <li>gallivm: Remove dead experimental code.</li>
- <li>llvmpipe: Decouple sampler view and sampler state updates.</li>
- <li>scons: New build= option, with support for checked builds.</li>
- <li>scons: New build= option, with support for checked builds.</li>
- <li>trace: Fix set_index_buffer and draw_vbo tracing.</li>
- <li>python/retrace: Handle set_index_buffer and draw_vbo.</li>
- <li>gallivm: Use SSE4.1's ROUNDSS/ROUNDSD for scalar rounding.</li>
- <li>gallivm: More comprehensive border usage logic.</li>
- <li>retrace: Handle clear_render_target and clear_depth_stencil.</li>
- <li>llvmpipe: Dump a few missing shader key flags.</li>
- <li>llvmpipe: Fix perspective interpolation for point sprites.</li>
- <li>llvmpipe: Fix sprite coord perspective interpolation of Q.</li>
- <li>gallivm: Take the type signedness in consideration in round/ceil/floor.</li>
- <li>gallivm: Use a faster (and less accurate) log2 in lod computation.</li>
- <li>gallivm: Fast implementation of iround(log2(x))</li>
- <li>gallivm: Combined ifloor &amp; fract helper.</li>
- <li>gallivm: Only apply min/max_lod when necessary.</li>
- <li>gallivm: Compute lod as integer whenever possible.</li>
- <li>util: Cleanup util_pack_z_stencil and friends.</li>
- <li>llvmpipe: Cleanup depth-stencil clears.</li>
- <li>gallivm: Vectorize the rho computation.</li>
- <li>gallivm: Do not do mipfiltering when magnifying.</li>
- <li>gallivm: Simplify lp_build_mipmap_level_sizes' interface.</li>
- <li>gallivm: Don't compute the second mipmap level when frac(lod) == 0</li>
- <li>gallivm: Use lp_build_ifloor_fract for lod computation.</li>
- <li>gallivm: Clamp mipmap level and zero mip weight simultaneously.</li>
- <li>gallivm: Fix copy'n'paste typo in previous commit.</li>
- <li>gallivm: Implement brilinear filtering.</li>
- <li>gallivm: Use the wrappers for SSE pack intrinsics.</li>
- <li>gallivm: Avoid control flow for two-sided stencil test.</li>
- <li>gallivm: Warn when doing inefficient integer comparisons.</li>
- <li>gallivm: Move into the as much of the second level code as possible.</li>
- <li>llvmpipe: First minify the texture size, then broadcast.</li>
- <li>gallivm: Help for combined extraction and broadcasting.</li>
- <li>gallivm: Do size computations simultanously for all dimensions (AoS).</li>
- <li>llvmpipe: Prevent z &gt; 1.0</li>
- <li>llvmpipe: Fix MSVC build. Enable the new SSE2 code on non SSE3 systems.</li>
- <li>gallivm: Handle code have ret correctly.</li>
- <li>util: Defined M_SQRT2 when not available.</li>
- <li>gallivm: Less code duplication in log computation.</li>
- <li>gallivm: Special bri-linear computation path for unmodified rho.</li>
- <li>gallivm: Don't generate Phis for execution mask.</li>
- <li>gallivm: Use varilables instead of Phis for cubemap selection.</li>
- <li>gallivm: Remove support for Phi generation.</li>
- <li>gallivm: Factor out the SI-&gt;FP texture size conversion for SoA path too</li>
- <li>gallivm: Simplify if/then/else implementation.</li>
- <li>gallivm: Cleanup the rest of the flow module.</li>
- <li>gallivm: Fix a long standing bug with nested if-then-else emission.</li>
- <li>gallivm: Allow to disable bri-linear filtering with GALLIVM_DEBUG=no_brilinear runtime option</li>
- <li>gallivm: Use variables instead of Phis in loops.</li>
- <li>gallivm: Pass texture coords derivates as scalars.</li>
- <li>llvmpipe: Remove outdated comment about stencil testing.</li>
- <li>gallivm: Eliminate unsigned integer arithmetic from texture coordinates.</li>
- <li>gallium: Define C99 restrict keyword where absent.</li>
- <li>tgsi: Export some names for some tgsi enums.</li>
- <li>gallivm: More detailed analysis of tgsi shaders.</li>
- <li>llvmpipe: Use lp_tgsi_info.</li>
- <li>llvmpipe: Do not dispose the execution engine.</li>
- <li>llvmpipe: Fix MSVC build.</li>
- <li>llmvpipe: improve mm_mullo_epi32</li>
- <li>gallivm: Name anonymous union.</li>
- <li>llvmpipe: Unbreak Z32_FLOAT.</li>
- <li>gallivm: More accurate float -&gt; 24bit &amp; 32bit unorm conversion.</li>
- <li>llvmpipe: Generalize the x8z24 fast path to all depth formats.</li>
- <li>llvmpipe: Fix depth-stencil regression.</li>
- <li>llvmpipe: Ensure z_shift and z_width is initialized.</li>
- <li>gallivm: Fix SoA cubemap derivative computation.</li>
- <li>llvmpipe: Fix bad refactoring.</li>
- <li>llvmpipe: Initialize bld ctx via lp_build_context_init instead of ad-hoc and broken code.</li>
- <li>gallivm: Comment lp_build_insert_new_block().</li>
- <li>gallivm: Add a note about SSE4.1's nearest mode rounding.</li>
- <li>llvmpipe: Don't test rounding of x.5 numbers.</li>
- <li>gallium: Avoid using __doc__ in python scripts.</li>
- <li>gallivm: always enable LLVMAddInstructionCombiningPass()</li>
- <li>gallivm: Remove the EMMS opcodes.</li>
- <li>mesa: Fix windows build (uint -&gt; GLuint).</li>
- <li>scons: Revamp how to specify targets to build.</li>
- <li>scons: Fix MinGW cross-compilation.</li>
- <li>scons: Some pipe drivers are not portable for MSVC</li>
- <li>scons: Restore x11 tool behavior for backwards compatability.</li>
- <li>scons: Disable python state tracker when swig is not present.</li>
- <li>r600g: List recently added files in SConscript.</li>
- <li>scons: Add aliases for several pipe drivers.</li>
- <li>scons: i915 can't build on MSVC either.</li>
- <li>scons: Propagate installation targets.</li>
- <li>xorg/vmwgfx: Add missing source file to SConscript.</li>
- <li>st/xorg: Add missing n to error message.</li>
- <li>st/xorg: Detect libkms with scons too.</li>
- <li>xorg/vmwgfx: Link libkms when available.</li>
- <li>r600g: Swap the util_blitter_destroy call order.</li>
- <li>gallivm: Allocate TEMP/OUT arrays only once.</li>
- <li>libgl-gdi: Allow to pick softpipe/llvmpipe on runtime.</li>
- <li>scons: Use inline wrap helpers more consistently.</li>
- <li>svga: Use consistent hexadecimal representation on debug output.</li>
- <li>scons: Alias for svga</li>
- <li>wgl: Stub WGL_ARB_pbuffer support.</li>
- <li>wgl: More complete WGL_ARB_pbuffer support.</li>
- <li>svga: Silence debug printf.</li>
- <li>scons: Move MSVS_VERSION option to common module.</li>
- <li>vega: Remove extraneous ;</li>
- <li>retrace: Some fixes.</li>
- <li>util: C++ safe.</li>
- <li>wgl: Fix double free. Remove dead code.</li>
- <li>util: Plug leaks in util_destroy_gen_mipmap.</li>
- <li>util: __builtin_frame_address() doesn't work on mingw.</li>
- <li>util: Don't try to use imagehlp on mingw.</li>
- <li>wgl: Unreference the current framebuffer after the make_current call.</li>
- <li>WIN32_THREADS -&gt; WIN32</li>
- <li>mapi: Hack to avoid vgCreateFont being generated as vgCreateFontA.</li>
- <li>wgl: Fix visual's buffer_mask configuration.</li>
- <li>mesa: Temporary hack to prevent stack overflow on windows</li>
- <li>mesa: Bump the number of bits in the register index.</li>
- <li>llvmpipe: Plug fence leaks.</li>
-</ul></p>
-
-<p>Julien Cristau (1):
-<ul>
- <li>Makefile: don't include the same files twice in the tarball</li>
-</ul></p>
-
-<p>Keith Whitwell (89):
-<ul>
- <li>llvmpipe: brackets around macro arg</li>
- <li>llvmpipe: remove duplicate code</li>
- <li>llvmpipe: return zero from floor_pot(zero)</li>
- <li>gallivm: make lp_build_sample_nop public</li>
- <li>llvmpipe: add LP_PERF flag to disable various aspects of rasterization</li>
- <li>llvmpipe: add DEBUG_FS to dump variant information</li>
- <li>llvmpipe: use llvm for attribute interpolant calculation</li>
- <li>graw: add frag-face shader</li>
- <li>llvmpipe: fix flatshading in new line code</li>
- <li>draw: don't apply flatshading to clipped tris with &lt3 verts</li>
- <li>llvmpipe: handle FACING interpolants in line and point setup</li>
- <li>llvmpipe: handle up to 8 planes in triangle binner</li>
- <li>llvmpipe: make debug_fs_variant respect variant-&gt;nr_samplers</li>
- <li>gallivm: don't apply zero lod_bias</li>
- <li>llvmpipe: fail gracefully on oom in scene creation</li>
- <li>llvmpipe: avoid overflow in triangle culling</li>
- <li>gallivm: special case conversion 4x4f to 1x16ub</li>
- <li>gallivm: round rather than truncate in new 4x4f-&gt;1x16ub conversion path</li>
- <li>llvmpipe: clean up setup_tri a little</li>
- <li>llvmpipe: add rast_tri_4_16 for small lines and points</li>
- <li>llvmpipe: fix off-by-one in tri_16</li>
- <li>llvmpipe: defer attribute interpolation until after mask and ztest</li>
- <li>llvmpipe: use alloca for fs color outputs</li>
- <li>llvmpipe: store zero into all alloca'd values</li>
- <li>llvmpipe: dump fragment shader ir and asm when LP_DEBUG=fs</li>
- <li>gallivm: specialized x8z24 depthtest path</li>
- <li>gallivm: prefer blendvb for integer arguments</li>
- <li>gallivm: simpler uint8-&gt;float conversions</li>
- <li>llvmpipe: try to be sensible about whether to branch after mask updates</li>
- <li>llvmpipe: clean up shader pre/postamble, try to catch more early-z</li>
- <li>llvmpipe: simplified SSE2 swz/unswz routines</li>
- <li>llvmpipe: try to do more of rast_tri_3_16 with intrinsics</li>
- <li>llvmpipe: add debug helpers for epi32 etc</li>
- <li>llvmpipe: try to keep plane c values small</li>
- <li>llvmpipe: fix typo in last commit</li>
- <li>gallium: move sse intrinsics debug helpers to u_sse.h</li>
- <li>r600g: add missing file to sconscript</li>
- <li>gallivm: don't branch on KILLs near end of shader</li>
- <li>Revert "llvmpipe: try to keep plane c values small"</li>
- <li>llvmpipe: make sure intrinsics code is guarded with PIPE_ARCH_SSE</li>
- <li>llvmpipe: don't try to emit non-existent color outputs</li>
- <li>r600/drm: fix segfaults in winsys create failure path</li>
- <li>r600g: emit hardware linewidth</li>
- <li>r600g: handle absolute modifier in shader translator</li>
- <li>llvmpipe: reintroduce SET_STATE binner command</li>
- <li>llvmpipe: don't pass frontfacing as a float</li>
- <li>llvmpipe: slightly shrink the size of a binned triangle</li>
- <li>llvmpipe: don't store plane.ei value in binned data</li>
- <li>gallium: move some intrinsics helpers to u_sse.h</li>
- <li>llvmpipe: do plane calculations with intrinsics</li>
- <li>llvmpipe: use aligned loads/stores for plane values</li>
- <li>llvmpipe: fix non-sse build after recent changes</li>
- <li>llvmpipe: check shader outputs are non-null before using</li>
- <li>llvmpipe: validate color outputs against key-&gt;nr_cbufs</li>
- <li>llvmpipe: clean up fields in draw_llvm_variant_key</li>
- <li>llvmpipe: remove setup fallback path</li>
- <li>llvmpipe: fail cleanly on malloc failure in lp_setup_alloc_triangle</li>
- <li>Merge remote branch 'origin/master' into lp-setup-llvm</li>
- <li>llvmpipe: remove unused file</li>
- <li>llvmpipe: remove unused arg from jit_setup_tri function</li>
- <li>Merge branch 'llvm-cliptest-viewport'</li>
- <li>draw: make sure viewport gets updated in draw llvm shader</li>
- <li>llvmpipe: turn off draw offset/twoside when we can handle it</li>
- <li>llvmpipe: avoid generating tri_16 for tris which extend past tile bounds</li>
- <li>llvmpipe: guard against NULL task-&gt;query pointer</li>
- <li>st/mesa: unbind constant buffer when not in use</li>
- <li>r600g: propagate usage flags in texture transfers</li>
- <li>r600g: propogate resource usage flags to winsys, use to choose bo domains</li>
- <li>r600g: use a buffer in GTT as intermediate on texture up and downloads</li>
- <li>r600g: remove unused flink, domain fields from r600_resource</li>
- <li>r600g: set hardware pixel centers according to gl_rasterization_rules</li>
- <li>evergreeng: protect against null constant buffers</li>
- <li>r600g: don't call debug_get_bool_option for tiling more than once</li>
- <li>evergreeng: respect linewidth state, use integer widths only</li>
- <li>evergreeng: set hardware pixelcenters according to gl_rasterization_rules</li>
- <li>r600g: avoid recursion with staged uploads</li>
- <li>r600g: attempt to turn on DXTn formats</li>
- <li>r600g: translate ARR instruction</li>
- <li>r600: fix my pessimism about PIPE_TRANSFER_x flags</li>
- <li>ws/r600: match bo_busy shared/fence logic in bo_wait</li>
- <li>r600g: guard experimental s3tc code with R600_ENABLE_S3TC</li>
- <li>r600g: do not try to use staging resource for depth textures</li>
- <li>r600g: enforce minimum stride on render target texture images</li>
- <li>llvmpipe: fix up twoside after recent changes</li>
- <li>llvmpipe: twoside for specular color also</li>
- <li>Merge branch 'lp-offset-twoside'</li>
- <li>llvmpipe: raise dirty flag on transfers to bound constbuf</li>
- <li>llvmpipe: remove misleading debug string</li>
- <li>llvmpipe: shortcircuit some calls to set_scene_state</li>
-</ul></p>
-
-<p>Kenneth Graunke (94):
-<ul>
- <li>glsl: Change from has_builtin_signature to has_user_signature.</li>
- <li>glsl: Don't print blank (function ...) headers for built-ins.</li>
- <li>glsl: Properly handle nested structure types.</li>
- <li>glsl/builtins: Fix equal and notEqual builtins.</li>
- <li>glsl/builtins: Switch comparison functions to just return an expression.</li>
- <li>glsl: Add comments to clarify the types of comparison binops.</li>
- <li>glsl: Fix broken handling of ir_binop_equal and ir_binop_nequal.</li>
- <li>glsl: "Copyright", not "Constantright"</li>
- <li>i965: Fix incorrect batchbuffer size in gen6 clip state command.</li>
- <li>i965: Use logical-not when emitting ir_unop_ceil.</li>
- <li>glsl: Add front-end support for the "trunc" built-in.</li>
- <li>glsl: Refresh autogenerated file builtin_function.cpp.</li>
- <li>i965: Use RNDZ for ir_unop_trunc in the new FS.</li>
- <li>i965: Correctly emit the RNDZ instruction.</li>
- <li>i965: Clean up a warning in the old fragment backend.</li>
- <li>glsl: Add a new ir_unop_round_even opcode for GLSL 1.30's roundEven.</li>
- <li>glsl: Add front-end support for GLSL 1.30's roundEven built-in.</li>
- <li>i965: Add support for ir_unop_round_even via the RNDE instruction.</li>
- <li>glsl: Add support for the 1.30 round() built-in.</li>
- <li>glsl: Refresh autogenerated file builtin_function.cpp.</li>
- <li>glsl: Don't return NULL IR for erroneous bit-shift operators.</li>
- <li>i965: Add missing "break" statement.</li>
- <li>glsl: Fix copy and paste error in ast_bit_and node creation.</li>
- <li>glsl: Regenerate parser files.</li>
- <li>i965: Remove unused variable.</li>
- <li>glsl: Remove useless ir_shader enumeration value.</li>
- <li>mesa: Remove FEATURE_ARB_shading_language_120 macro.</li>
- <li>glcpp: Return NEWLINE token for newlines inside multi-line comments.</li>
- <li>glcpp: Refresh autogenerated lexer file.</li>
- <li>glsl: Add support for GLSL 1.30's modf built-in.</li>
- <li>glsl: Refresh autogenerated file builtin_function.cpp.</li>
- <li>generate_builtins.py: Output large strings as arrays of characters.</li>
- <li>Refresh autogenerated file builtin_function.cpp.</li>
- <li>glsl: Fix constant component count in vector constructor emitting.</li>
- <li>Fix build on systems where "python" is python 3.</li>
- <li>i965: Add bit operation support to the fragment shader backend.</li>
- <li>glsl: Remove unused ARRAY_SIZE macro.</li>
- <li>glsl/builtins: Rename 'x' to 'y_over_x' in atan(float) implementation.</li>
- <li>glsl/builtins: Clean up some ugly autogenerated code in atan.</li>
- <li>Refresh autogenerated file builtin_function.cpp.</li>
- <li>glsl: Don't print a useless space at the end of an S-Expression list.</li>
- <li>ir_reader: Return a specific ir_dereference variant.</li>
- <li>ir_reader: Remove useless error check.</li>
- <li>ir_reader: Fix some potential NULL pointer dereferences.</li>
- <li>ir_dead_functions: Actually free dead functions and signatures.</li>
- <li>glsl: Remove unnecessary "unused variable" warning suppression.</li>
- <li>glsl: Remove GLSL_TYPE_FUNCTION define.</li>
- <li>glsl: Convert glsl_type::base_type from #define'd constants to an enum.</li>
- <li>glsl: Rework reserved word/keyword handling in the lexer.</li>
- <li>glsl: Add new keywords and reserved words for GLSL 1.30.</li>
- <li>glsl: Add support for the 'u' and 'U' unsigned integer suffixes.</li>
- <li>glsl: Refresh autogenerated lexer and parser files.</li>
- <li>generate_builtins.py: Fix inconsistent use of tabs and spaces warning.</li>
- <li>glsl: Implement the asinh, acosh, and atanh built-in functions.</li>
- <li>glsl: Refresh autogenerated file builtin_function.cpp.</li>
- <li>glsl: Add constant expression handling for asinh, acosh, and atanh.</li>
- <li>glsl: Remove unused and out of date Makefile.am.</li>
- <li>glsl: Rename various ir_* files to lower_* and opt_*.</li>
- <li>glcpp: Define GL_FRAGMENT_PRECISION_HIGH if GLSL version &gt;= 1.30.</li>
- <li>Refresh autogenerated glcpp parser.</li>
- <li>glsl: Fix constant expression handling for &lt, &gt;, &lt=, &gt;= on vectors.</li>
- <li>glsl: Unconditionally define GL_FRAGMENT_PRECISION_HIGH in ES2 shaders.</li>
- <li>Regenerate glcpp parser.</li>
- <li>glsl: Reimplement the "cross" built-in without ir_binop_cross.</li>
- <li>Refresh autogenerated file builtin_function.cpp.</li>
- <li>glsl: Remove the ir_binop_cross opcode.</li>
- <li>glsl: Refactor get_num_operands.</li>
- <li>glsl: Simplify a type check by using type-&gt;is_integer().</li>
- <li>glsl: Combine many instruction lowering passes into one.</li>
- <li>mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.</li>
- <li>glsl: Don't inline function prototypes.</li>
- <li>glsl: Use do_common_optimization in the standalone compiler.</li>
- <li>glsl: Add a virtual as_discard() method.</li>
- <li>glsl: Refactor out cloning of function prototypes.</li>
- <li>glsl: Lazily import built-in function prototypes.</li>
- <li>glsl: Remove anti-built-in hacks from the print visitor.</li>
- <li>glsl/linker: Free any IR discarded by optimization passes.</li>
- <li>glsl: Add an optimization pass to simplify discards.</li>
- <li>glsl: Add a lowering pass to move discards out of if-statements.</li>
- <li>glsl: Remove "discard" support from lower_jumps.</li>
- <li>glsl: Add comments to lower_jumps (from the commit message).</li>
- <li>ir_print_visitor: Print out constant structure values.</li>
- <li>glsl: Factor out code which emits a new function into the IR stream.</li>
- <li>symbol_table: Add support for adding a symbol at top-level/global scope.</li>
- <li>glsl: Properly add functions during lazy built-in prototype importing.</li>
- <li>glcpp: Don't emit SPACE tokens in conditional_tokens production.</li>
- <li>Refresh autogenerated glcpp parser.</li>
- <li>glsl: Clean up code by adding a new is_break() function.</li>
- <li>glsl: Consider the "else" branch when looking for loop breaks.</li>
- <li>Remove OES_compressed_paletted_texture from the ES2 extension list.</li>
- <li>glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).</li>
- <li>glsl: Support if-flattening beyond a given maximum nesting depth.</li>
- <li>i965: Flatten if-statements beyond depth 16 on pre-gen6.</li>
- <li>i965: Internally enable GL_NV_blend_square on ES2.</li>
-</ul></p>
-
-<p>Kristian Høgsberg (16):
-<ul>
- <li>glx: Hold on to drawables if we're just switching to another context</li>
- <li>intel: Fix GL_ARB_shading_language_120 commit</li>
- <li>dri2: Make createImageFromName() take a __DRIscreen instead of __DRIcontext</li>
- <li>glx: Invalidate buffers after binding a drawable</li>
- <li>dri: Pass the __DRIscreen and the __DRIscreen private back to image lookup</li>
- <li>glx: Only remove drawables from the hash when we actually delete them</li>
- <li>gles2: Add GL_EXT_texture_format_BGRA8888 support</li>
- <li>Get rid of GL/internal/glcore.h</li>
- <li>gl: Remove unused GLcontextModes fields</li>
- <li>Rename GLvisual and __GLcontextModes to struct gl_config</li>
- <li>Drop GLframebuffer typedef and just use struct gl_framebuffer</li>
- <li>Drop GLcontext typedef and use struct gl_context instead</li>
- <li>Drop the "neutral" tnl module</li>
- <li>Only install vtxfmt tables for OpenGL</li>
- <li>i965: Don't write mrf assignment for pointsize output</li>
- <li>docs: Fix MESA_drm_image typo</li>
-</ul></p>
-
-<p>Krzysztof Smiechowicz (1):
-<ul>
- <li>nvfx: Pair os_malloc_aligned() with os_free_aligned().</li>
-</ul></p>
-
-<p>Luca Barbieri (84):
-<ul>
- <li>auxiliary: fix unintended fallthrough</li>
- <li>glsl: add pass to lower variable array indexing to conditional assignments</li>
- <li>auxiliary: fix depth-only and stencil-only clears</li>
- <li>gallium: avoid the C++ keyword "template" in sw_winsys.h</li>
- <li>softpipe: make z/s test always pass if no zsbuf, instead of crashing</li>
- <li>tgsi: add switch/case opcodes to tgsi_opcode_tmp.h</li>
- <li>softpipe: fix whitespace</li>
- <li>d3d1x: add new Direct3D 10/11 COM state tracker for Gallium</li>
- <li>d3d1x: add blob and signature extraction APIs</li>
- <li>d3d1x: fix compilation with recent Wine versions installed</li>
- <li>d3d1x: add missing file</li>
- <li>d3d1x: actually enable and fix blob apis</li>
- <li>d3d1x: fix build with compilers other than GCC 4.5</li>
- <li>d3d1x: add template parameters to base class ctor calls for GCC 4.4</li>
- <li>d3d1x: fix GCC 4.1/4.2 build</li>
- <li>d3d1x: ignore errors while building docs</li>
- <li>d3d1x: attempt to fix/workaround bug #30322</li>
- <li>nvfx: remove gl_PointCoord hack</li>
- <li>glx: decouple dri2.c and GLX, fixing Gallium EGL and d3d1x build</li>
- <li>winsys: automatically build sw winsys needed by EGL and d3d1x</li>
- <li>d3d1x: don't build progs automatically</li>
- <li>d3d1x: add missing memory barrier</li>
- <li>d3d1x: link with CXXFLAGS</li>
- <li>d3d1x: fix cf analysis</li>
- <li>d3d1x: fix warning</li>
- <li>d3d1x: fix segfault when hashing</li>
- <li>d3d1x: destroy native_display on adapter destruction</li>
- <li>d3d1x: fix GUID declarations</li>
- <li>d3d1x: redesign the HWND resolver interface</li>
- <li>d3d1x: fix API name</li>
- <li>d3d1x: define GUIDs in the normal way</li>
- <li>d3d1x: add Wine dlls (tri, tex working, but no other testing)</li>
- <li>d3d1x: properly reference count the backend</li>
- <li>d3d1x: fix deadlocks on non-recursive mutex</li>
- <li>d3d1x: bind NULL CSOs before destroying default CSOs on context dtor</li>
- <li>d3d1x: initialize the mutex</li>
- <li>d3d1x: autogenerate shader enums and text from def files</li>
- <li>d3d1x: s/tpf/sm4/g</li>
- <li>d3d1x: normalize whitespace</li>
- <li>d3d1x: remove specstrings</li>
- <li>d3d1x: minifix</li>
- <li>d3d1x: rename context params</li>
- <li>d3d11: rename screen params</li>
- <li>d3d1x: rename params in misc and objects</li>
- <li>d3d1x: rename parameters in dxgi</li>
- <li>d3d11: obliterate IDL parameter names</li>
- <li>d3d1x: remove specstrings.h include</li>
- <li>d3d1x: flush the pipe context when presenting</li>
- <li>d3d1x: remove another include specstrings.h</li>
- <li>d3d1x: flush properly</li>
- <li>d3d1x: add missing guid.cpp</li>
- <li>d3d1x: fix build without system EGL/egl.h</li>
- <li>d3d1x: add autogenerated files as prerequisites, so make builds them</li>
- <li>d3d1x: obliterate IDL parameter names from d3d10.idl from Wine too</li>
- <li>d3d1x: add shader dumping</li>
- <li>d3d1x: add untested support for geometry shader translation</li>
- <li>d3d1x: don't assert on unsupported resource types</li>
- <li>d3d1x: fix CheckMultisampleQualityLevels</li>
- <li>d3d1x: draw to the correct buffer</li>
- <li>d3d1x: fix linking of dxbc2tgsi</li>
- <li>nvfx: allow setting NULL constant buffers</li>
- <li>nvfx: add RGB framebuffer format support in addition to BGR</li>
- <li>d3d1x: don't crash on drivers not supporting vertex or geometry sampling</li>
- <li>d3d1x: assert if X visual is not among enumerated visuals</li>
- <li>d3d1x: stop using GLX in demos, just use the default visual</li>
- <li>d3d1x: CRLF -&gt; LF in progs</li>
- <li>mesa: make makedepend an hard requirement</li>
- <li>gallium: add $(PROGS_DEPS) as dependencies for $(PROGS)</li>
- <li>d3d1x: fix parallel build</li>
- <li>d3d1x: add private gitignore file</li>
- <li>d3d1x: fix progs linking if not all EGL platforms are enabled</li>
- <li>d3d1x: link progs with CXXFLAGS</li>
- <li>d3d11: advertise IDXGIDevice1, not just IDXGIDevice</li>
- <li>d3d11: ignore StructureByteStride</li>
- <li>d3d1x: link to libdrm for X11 platform too</li>
- <li>ureg: support centroid interpolation</li>
- <li>d3d1x: support centroid interpolation</li>
- <li>d3d1x: properly support specifying MipLevels as 0</li>
- <li>d3d1x: put proper calling convention in headers, fixes 64-bit builds</li>
- <li>d3d1x: rework DXGI for occlusion testing and default width/height</li>
- <li>d3d1x: fix Map</li>
- <li>d3d11: fix reference counting so devices get freed</li>
- <li>d3d1x: work around crash in widl</li>
- <li>glsl: Unroll loops with conditional breaks anywhere (not just the end)</li>
-</ul></p>
-
-<p>Lucas Stach (1):
-<ul>
- <li>nvfx: fill PIPE_CAP_PRIMITIVE_RESTART and PIPE_CAP_SHADER_STENCIL_EXPORT</li>
-</ul></p>
-
-<p>Marek Olšák (100):
-<ul>
- <li>r300g: prevent creating multiple winsys BOs for the same handle</li>
- <li>r300g/swtcl: fix CS overrun</li>
- <li>st/mesa: fix assertion failure in GetTexImage for cubemaps</li>
- <li>util: make calling remove_from_list multiple times in a row safe</li>
- <li>r300g: fixup long-lived BO maps being incorrectly unmapped when flushing</li>
- <li>r300g: make accessing map_list and buffer_handles thread-safe</li>
- <li>r300g: fix a copy-paste typo for logging</li>
- <li>r300g: fix the border color for every format other than PIPE_FORMAT_B8G8R8A8</li>
- <li>Build r300g by default</li>
- <li>util: fix util_pack_color for B4G4R4A4</li>
- <li>r300g: fix macrotiling on R350</li>
- <li>r300g: code cleanups</li>
- <li>r300/compiler: fix projective mapping of 2D NPOT textures</li>
- <li>r300/compiler: do not use copy propagation if SaturateMode is used</li>
- <li>r300/compiler: fix shadow sampling with swizzled coords</li>
- <li>r300g: add support for 3D NPOT textures without mipmapping</li>
- <li>r300g: fix swizzling of texture border color</li>
- <li>configure.ac: look for libdrm_radeon before building gallium/r300,r600</li>
- <li>configure.ac: do not build xorg-r300g by default</li>
- <li>Makefile: ensure Gallium's Makefile.xorg and SConscript.dri are in the tarball</li>
- <li>r300g: add support for formats beginning with X, like X8R8G8B8</li>
- <li>r300g: fix conditional rendering in non-wait path</li>
- <li>r300g: add support for R8G8 colorbuffers</li>
- <li>r300g: add support for L8A8 colorbuffers</li>
- <li>update release notes for Gallium</li>
- <li>r300g: fix microtiling for 16-bits-per-channel formats</li>
- <li>r300g: do not print get_param errors in non-debug build</li>
- <li>r300g: say no to PIPE_CAP_STREAM_OUTPUT and PIPE_CAP_PRIMITIVE_RESTART</li>
- <li>mesa: allow FBO attachments of formats LUMINANCE, LUMINANCE_ALPHA, and INTENSITY</li>
- <li>r300g: fix texture border for 16-bits-per-channel formats</li>
- <li>st/mesa: support RGBA16 and use it for RGBA12 as well</li>
- <li>r300g: add a default channel ordering of texture border for unhandled formats</li>
- <li>r300g: mention ATI in the renderer string</li>
- <li>r300g: rename has_hyperz -&gt; can_hyperz</li>
- <li>r300g: turn magic numbers into names in the hyperz code</li>
- <li>gallium: add CAPs for indirect addressing and lower it in st/mesa when needed</li>
- <li>tgsi: fill out CAPs for indirect addressing</li>
- <li>i915g: fill out CAPs for indirect addressing</li>
- <li>i965g: fill out CAPs for indirect addressing</li>
- <li>nv50: fill out CAPs for indirect addressing</li>
- <li>nvfx: fill out CAPs for indirect addressing</li>
- <li>r300g: fill out CAPs for indirect addressing</li>
- <li>r600g: fill out CAPs for indirect addressing</li>
- <li>svga: fill out CAPs for indirect addressing</li>
- <li>r300g: fix texture border color for all texture formats</li>
- <li>r300g: clean up redundancy in draw functions</li>
- <li>r300g: return shader caps from Draw for SWTCL vertex shaders</li>
- <li>r300g: remove the hack with OPCODE_RET</li>
- <li>r300g: print FS inputs uninitialized due to hardware limits to stderr</li>
- <li>r300g: fix rendering with no vertex elements</li>
- <li>st/mesa: enable ARB_explicit_attrib_location and EXT_separate_shader_objects</li>
- <li>docs: add GL 4.1 status</li>
- <li>gallium: add PIPE_SHADER_CAP_SUBROUTINES</li>
- <li>st/mesa: set MaxUniformComponents</li>
- <li>u_blitter: use PIPE_TRANSFER_DISCARD to prevent cpu/gpu stall</li>
- <li>r300/compiler: fix rc_rewrite_depth_out for it to work with any instruction</li>
- <li>r300/compiler: remove duplicate function rc_mask_to_swz</li>
- <li>r300/compiler: add a function for swizzling a mask</li>
- <li>r300/compiler: move util functions to radeon_compiler_util</li>
- <li>u_blitter: interpolate clear color using a GENERIC varying instead of COLOR</li>
- <li>st/mesa: fix texture border color for RED and RG base formats</li>
- <li>util: rename u_mempool -&gt; u_slab</li>
- <li>r300g: fix texture border color once again</li>
- <li>r300/compiler: implement and lower OPCODE_CLAMP</li>
- <li>ir_to_mesa: Add support for conditional discards.</li>
- <li>r300g: fix texture swizzling with compressed textures on r400-r500</li>
- <li>r300g: disable ARB_texture_swizzle if S3TC is enabled on r3xx-only</li>
- <li>r300g: fix up cubemap texture offset computation</li>
- <li>r300/compiler: disable the swizzle lowering pass in vertex shaders</li>
- <li>r300g: fix build</li>
- <li>r300g: use internal BO handle for add_buffer and write_reloc</li>
- <li>r300g: implement simple transfer_inline_write for buffers</li>
- <li>mesa, st/mesa: fix gl_FragCoord with FBOs in Gallium</li>
- <li>r300g: fix pointer arithmetic with void* in transfer_inline_write</li>
- <li>r300g: do not remove unused constants if we are not near the limit</li>
- <li>r300g: add capability bit index_bias_supported</li>
- <li>r300g: one more r500_index_bias_supported leftover</li>
- <li>r300g: do not use the index parameter in set_constant_buffer</li>
- <li>r300g: cleanup winsys</li>
- <li>r300g: optimize looping over atoms</li>
- <li>st/mesa: initialize key in st_vp_varient</li>
- <li>u_blitter: use util_is_format_compatible in the assert</li>
- <li>r300g: cache packet dwords of 3D_LOAD_VBPNTR in a command buffer if possible</li>
- <li>r300g: validate buffers only if any of bound buffers is changed</li>
- <li>r300g: also revalidate the SWTCL vertex buffer after its reallocation</li>
- <li>r300/compiler: don't terminate regalloc if we surpass max temps limit</li>
- <li>r300/compiler: add a function to query program stats (alu, tex, temps..)</li>
- <li>r300/compiler: cleanup rc_run_compiler</li>
- <li>r300/compiler: do not print pair/tex/presub program stats for vertex shaders</li>
- <li>r300/compiler: handle DPH and XPD in rc_compute_sources_for_writemask</li>
- <li>r300/compiler: make lowering passes possibly use up to two less temps</li>
- <li>r300/compiler: remove at least unused immediates if externals cannot be removed</li>
- <li>r300/compiler: fix LIT in VS</li>
- <li>r300/compiler: fix swizzle lowering with a presubtract source operand</li>
- <li>r300g: fix rendering with a vertex attrib having a zero stride</li>
- <li>r300g: finally fix the texture corruption on r3xx-r4xx</li>
- <li>r300g/swtcl: re-enable LLVM</li>
- <li>r300g: mark vertex arrays as dirty after a buffer_offset change</li>
- <li>mesa: fix texel store functions for some float formats</li>
- <li>r300/compiler: disable the rename_regs pass for loops</li>
-</ul></p>
-
-<p>Mario Kleiner (1):
-<ul>
- <li>mesa/r300classic: Fix dri2Invalidate/radeon_prepare_render for page flipping.</li>
-</ul></p>
-
-<p>Mathias Fröhlich (3):
-<ul>
- <li>r300g: Avoid returning values in a static array, fixing a potential race</li>
- <li>r600g: Only compare active vertex elements</li>
- <li>st/mesa: Set PIPE_TRANSFER_DISCARD for GL_MAP_INVALIDATE_RANGE/BUFFFER_BIT</li>
-</ul></p>
-
-<p>Michal Krol (10):
-<ul>
- <li>svga: Fix relative addressing translation for pixel shaders.</li>
- <li>svga: Integer constant register file has a separate namespace.</li>
- <li>tgsi/exec: Cleanup the remaining arithmetic instructions.</li>
- <li>tgsi/exec: Get rid of obsolete condition codes.</li>
- <li>tgsi/build: Reduce interface clutter.</li>
- <li>graw/gdi: Initial commit.</li>
- <li>scons: Hook-up graw-gdi target.</li>
- <li>graw/gdi: Fix window dimensions.</li>
- <li>os: Open file streams in binary mode.</li>
- <li>graw: Export graw_save_surface_to_file().</li>
-</ul></p>
-
-<p>Nicolas Kaiser (26):
-<ul>
- <li>swrast: remove duplicated include</li>
- <li>egl: remove duplicated include</li>
- <li>gallium/rtasm: remove duplicated include</li>
- <li>gallium/util: remove duplicated include</li>
- <li>gallium/i915: remove duplicated include</li>
- <li>gallium/llvmpipe: remove duplicated include</li>
- <li>gallium/softpipe: remove duplicated include</li>
- <li>gallium/st: remove duplicated includes</li>
- <li>gallium/winsys: remove duplicated include</li>
- <li>glx: remove duplicated include</li>
- <li>dri/common: remove duplicated include</li>
- <li>dri/i810: remove duplicated include</li>
- <li>dri/i915: remove duplicated include</li>
- <li>dri/i965: remove duplicated include</li>
- <li>dri/intel: remove duplicated include</li>
- <li>dri/mga: remove duplicated include</li>
- <li>dri/r128: remove duplicated include</li>
- <li>dri/r300: remove duplicated include</li>
- <li>dri/r600: remove duplicated include</li>
- <li>dri/radeon: remove duplicated includes</li>
- <li>dri/savage: remove duplicated include</li>
- <li>main: remove duplicated includes</li>
- <li>math: remove duplicated includes</li>
- <li>st: remove duplicated include</li>
- <li>i965g: use Elements macro instead of manual sizeofs</li>
- <li>nv50: fix always true conditional in shader optimization</li>
-</ul></p>
-
-<p>Orion Poplawski (1):
-<ul>
- <li>osmesa: link against libtalloc</li>
-</ul></p>
-
-<p>Owen W. Taylor (1):
-<ul>
- <li>r600g: Fix location for clip plane registers</li>
-</ul></p>
-
-<p>Peter Clifton (3):
-<ul>
- <li>intel: Fix emit_linear_blit to use DWORD aligned width blits</li>
- <li>intel: Add assert check for blitting alignment.</li>
- <li>meta: Mask Stencil.Clear against stencilMax in _mesa_meta_Clear</li>
-</ul></p>
-
-<p>Robert Hooker (2):
-<ul>
- <li>intel: Add a new B43 pci id.</li>
- <li>egl_dri2: Add missing intel chip ids.</li>
-</ul></p>
-
-<p>Roland Scheidegger (16):
-<ul>
- <li>gallivm: fix copy&amp;paste bug</li>
- <li>gallivm: don't use URem/UDiv when calculating offsets for blocks</li>
- <li>gallivm: optimize yuv decoding</li>
- <li>gallivm: fix trunc/itrunc comment</li>
- <li>gallivm: faster iround implementation for sse2</li>
- <li>gallivm: replace sub/floor/ifloor combo with ifloor_fract</li>
- <li>gallivm: optimize some tex wrap mode calculations a bit</li>
- <li>gallivm: more linear tex wrap mode calculation simplification</li>
- <li>gallivm: avoid unnecessary URem in linear wrap repeat case</li>
- <li>gallivm: optimize soa linear clamp to edge wrap mode a bit</li>
- <li>gallivm: make use of new iround code in lp_bld_conv.</li>
- <li>gallivm: fix different handling of [non]normalized coords in linear soa path</li>
- <li>gallivm: only use lp_build_conv 4x4f -&gt; 1x16 ub fastpath with sse2</li>
- <li>r200: fix r200 large points</li>
- <li>mesa: remove unneeded DD_POINT_SIZE and DD_LINE_WIDTH tricaps</li>
- <li>gallium: support for array textures and related changes</li>
-</ul></p>
-
-<p>Shuang He (1):
-<ul>
- <li>mesa: allow GLfixed arrays for OpenGL ES 2.0</li>
-</ul></p>
-
-<p>Stephan Schmid (1):
-<ul>
- <li>r600g: fix relative addressing when splitting constant accesses</li>
-</ul></p>
-
-<p>Thomas Hellstrom (21):
-<ul>
- <li>st/xorg: Don't try to use option values before processing options</li>
- <li>xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers</li>
- <li>st/xorg: Add a customizer option to get rid of annoying cursor update flicker</li>
- <li>xorg/vmwgfx: Don't hide HW cursors when updating them</li>
- <li>st/xorg: Don't try to remove invalid fbs</li>
- <li>st/xorg: Fix typo</li>
- <li>st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments</li>
- <li>st/xorg: Fix compilation errors for Xservers compiled without Composite</li>
- <li>st/xorg: Don't use deprecated x*alloc / xfree functions</li>
- <li>xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions</li>
- <li>st/xorg: Fix compilation for Xservers &gt;= 1.10</li>
- <li>mesa: Make sure we have the talloc cflags when using the talloc headers</li>
- <li>egl: Add an include for size_t</li>
- <li>mesa: Add talloc includes for gles</li>
- <li>st/egl: Fix build for include files in nonstandard places</li>
- <li>svga/drm: Optionally resolve calls to powf during link-time</li>
- <li>gallium/targets: Trivial crosscompiling fix</li>
- <li>st/xorg: Add a function to flush pending rendering and damage</li>
- <li>gallium/targets/xorg-vmwgfx: Xv fixes</li>
- <li>xorg/vmwgfx: Flush even if we don't autopaint the color key</li>
- <li>xorg/vmwgfx: Don't clip video to viewport</li>
-</ul></p>
-
-<p>Tilman Sauerbeck (35):
-<ul>
- <li>r600g: Fixed a bo leak in r600_blit_state_ps_shader().</li>
- <li>r600g: Use clamped math for RCP and RSQ.</li>
- <li>r600g: Formatting fixes.</li>
- <li>r600g: Added DB_SHADER_CONTROL defines.</li>
- <li>r600g: Only set PA_SC_EDGERULE on rv770 and greater.</li>
- <li>r600g: Enable PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED.</li>
- <li>r600g: Fixed the shift in S_02880C_KILL_ENABLE.</li>
- <li>glsl2: Empty functions can be inlined.</li>
- <li>glsl2: Fixed cloning of ir_call error instructions.</li>
- <li>r600g: Added support for TGSI_SEMANTIC_FACE.</li>
- <li>gallium/docs: Fixed a typo in the SCS opcode description.</li>
- <li>r600g: Honour destination operand's writemask in the SCS implementation.</li>
- <li>r600g: Implemented the Z and W component write for the SCS opcode.</li>
- <li>python/tests: Fixed tri.py for API and TGSI syntax changes.</li>
- <li>r600g: Removed debug code.</li>
- <li>gallium/docs: The RET opcode may appear anywhere in a subroutine.</li>
- <li>r600g: Destroy the blitter.</li>
- <li>r600g: Fixed two texture surface leaks in r600_blit_uncompress_depth().</li>
- <li>r600g: Cleaned up index buffer reference handling in the draw module.</li>
- <li>r600g: Fixed r600_vertex_element leak.</li>
- <li>r600g: Added r600_pipe_shader_destroy().</li>
- <li>r600g: Also clear bc data when we're destroying a shader.</li>
- <li>r600g: In radeon_bo(), call LIST_INITHEAD early.</li>
- <li>r600g: Destroy the blitter.</li>
- <li>r600g: Removed unused 'ptr' argument from radeon_bo().</li>
- <li>r600g: Made radeon_bo_pb_map_internal() actually call radeon_bo_map().</li>
- <li>r600g: Fixed unmap condition in radeon_bo_pb_destroy().</li>
- <li>r600g: Made radeon_bo::map_count signed.</li>
- <li>r600g: We don't support PIPE_CAP_PRIMITIVE_RESTART.</li>
- <li>r600g: Delete custom_dsa_flush on shutdown.</li>
- <li>r600g: Fixed two memory leaks in winsys.</li>
- <li>r600g: Destroy the winsys in r600_destroy_screen().</li>
- <li>st/mesa: Reset the index buffer before destroying the pipe context.</li>
- <li>st/mesa: Reset the constant buffers before destroying the pipe context.</li>
- <li>r600g: Removed duplicated call to tgsi_split_literal_constant().</li>
-</ul></p>
-
-<p>Timo Wiren (1):
-<ul>
- <li>Fix typos in comments and debug output strings.</li>
-</ul></p>
-
-<p>Tom Fogal (3):
-<ul>
- <li>Implement x86_64 atomics for compilers w/o intrinsics.</li>
- <li>Prefer intrinsics to handrolled atomic ops.</li>
- <li>Revert "Prefer intrinsics to handrolled atomic ops."</li>
-</ul></p>
-
-<p>Tom Stellard (32):
-<ul>
- <li>r300/compiler: Refactor the pair instruction data structures</li>
- <li>r300g: Always try to build libr300compiler.a</li>
- <li>r300/compiler: Fix two mistakes in the presubtract optimization pass.</li>
- <li>r300/compiler: Add more helper functions for iterating through sources</li>
- <li>r300/compiler: Print immediate values after "dead constants" pass</li>
- <li>r300/compiler: radeon_remove_constants.c: fix indentation</li>
- <li>r300/compiler: Use rc_for_all_reads_src() in "dead constants" pass</li>
- <li>r300/compiler: Fix segfault in error path</li>
- <li>r300/compiler: Don't use rc_error() unless the error is unrecoverable</li>
- <li>r300/compiler: Don't merge instructions that write output regs and ALU result</li>
- <li>r300/compiler: Create a helper function for merging presubtract sources</li>
- <li>r300/compiler: Fix incorrect assumption</li>
- <li>r300/compiler: Clear empty registers after constant folding</li>
- <li>r300/compiler: Add a new function for more efficient dataflow analysis</li>
- <li>r300g: Add new debug option for logging vertex/fragment program stats</li>
- <li>r300/compiler: Use rc_get_readers_normal() for presubtract optimizations</li>
- <li>r300/compiler: Don't clobber presubtract sources during optimizations</li>
- <li>r300/compiler: Don't track readers into an IF block.</li>
- <li>r300/compiler: Make sure presubtract sources use supported swizzles</li>
- <li>r300/compiler: Fix register allocator's handling of loops</li>
- <li>r300/compiler: Fix instruction scheduling within IF blocks</li>
- <li>r300/compiler: Use zero as the register index for unused sources</li>
- <li>r300/compiler: Ignore alpha dest register when replicating the result</li>
- <li>r300/compiler: Add rc_get_readers()</li>
- <li>r300/compiler: Handle BREAK and CONTINUE in rc_get_readers()</li>
- <li>r300/compiler: Track readers through branches in rc_get_readers()</li>
- <li>r300/compiler: Convert RGB to alpha in the scheduler</li>
- <li>r300/compiler: Use presubtract operations as much as possible</li>
- <li>r300/compiler: Enable rename_reg pass for r500 cards</li>
- <li>r300/compiler: Add a more efficient version of rc_find_free_temporary()</li>
- <li>r300/compiler: Don't allow presubtract sources to be remapped twice</li>
- <li>r300/compiler: Fix black terrain in Civ4</li>
-</ul></p>
-
-<p>Victor Tseng (1):
-<ul>
- <li>egl/i965: include inline_wrapper_sw_helper.h</li>
-</ul></p>
-
-<p>Viktor Novotný (6):
-<ul>
- <li>dri/nouveau: Import headers from rules-ng-ng</li>
- <li>dri/nouveau: nv04: Use rules-ng-ng headers</li>
- <li>dri/nouveau: nv10: Use rules-ng-ng headers</li>
- <li>dri/nouveau nv20: Use rules-ng-ng headers</li>
- <li>dri/nouveau: Remove nouveau_class.h, finishing switch to rules-ng-ng headers</li>
- <li>dri/nouveau: Clean up magic numbers in get_rt_format</li>
-</ul></p>
-
-<p>Vinson Lee (214):
-<ul>
- <li>llvmpipe: Remove unnecessary header.</li>
- <li>r600g: Remove unnecessary headers.</li>
- <li>mesa: Include missing header in program.h.</li>
- <li>glsl: Fix 'format not a string literal and no format arguments' warning.</li>
- <li>r600g: Silence uninitialized variable warning.</li>
- <li>r600g: Silence uninitialized variable warning.</li>
- <li>nvfx: Silence uninitialized variable warnings.</li>
- <li>r600g: Silence uninitialized variable warning.</li>
- <li>r600g: Silence uninitialized variable warning.</li>
- <li>r600g: Silence uninitialized variable warning.</li>
- <li>r600g: Silence unused variable warning.</li>
- <li>nv50: Update files in SConscript to match Makefile.</li>
- <li>nv50: Remove unnecessary headers.</li>
- <li>nv50: Silence uninitialized variable warning.</li>
- <li>nv50: Silence uninitialized variable warning.</li>
- <li>nv50: Silence uninitialized variable warning.</li>
- <li>gallivm: Remove unnecessary headers.</li>
- <li>draw: Remove unnecessary header.</li>
- <li>nv50: Silence uninitialized variable warnings.</li>
- <li>nv50: Fix 'control reaches end of non-void function' warning.</li>
- <li>mesa/st: Silence uninitialized variable warning.</li>
- <li>gallivm: Remove unnecessary header.</li>
- <li>r600g: Remove unnecessary header.</li>
- <li>r600g: Remove unnecessary headers.</li>
- <li>r600g: Fix implicit declaration warning.</li>
- <li>r600g: Fix memory leak on error path.</li>
- <li>r600g: Silence uninitialized variable warning.</li>
- <li>r600g: Silence unused variable warnings.</li>
- <li>mesa: bump version to 7.10</li>
- <li>ir_to_mesa: Remove unused member array_indexed from struct statevar_element.</li>
- <li>mesa: Silence "'valid_texture_object' defined but not used" warning.</li>
- <li>x86: Silence unused variable warning on Mac OS X.</li>
- <li>glsl: Fix 'control reaches end of non-void function' warning.</li>
- <li>nvfx: Remove const qualifer from nvfx_vertprog_translate.</li>
- <li>nvfx: Silence uninitialized variable warnings.</li>
- <li>r600g: Remove unused variable.</li>
- <li>nv50: Silence missing initializer warning.</li>
- <li>nv50: Remove dead initialization.</li>
- <li>nv50: Remove dead initialization.</li>
- <li>tgsi: Remove duplicate case value.</li>
- <li>glut: Define markWindowHidden for non-Windows only.</li>
- <li>glut: Define eventParser for non-Windows only.</li>
- <li>r300g: Silence uninitialized variable warning.</li>
- <li>intel: Fix implicit declaration of function '_mesa_meta_Bitmap' warning.</li>
- <li>mesa: Remove unnecessary headers.</li>
- <li>r600g: Remove unnecessary header.</li>
- <li>unichrome: Remove unnecessary header.</li>
- <li>intel: Remove unnecessary headers.</li>
- <li>r600g: Remove unused variable.</li>
- <li>r600g: Disable unused variables.</li>
- <li>r600g: Remove unused variable.</li>
- <li>r600g: Silence 'control reaches end of non-void function' warning.</li>
- <li>r600g: Remove unused variable.</li>
- <li>r600g: Remove unused variable.</li>
- <li>r600g: Disable unused variables.</li>
- <li>intel: Remove unnecessary header.</li>
- <li>st/dri: Remove unnecessary header.</li>
- <li>r600g: Remove unused variable.</li>
- <li>r300g: Remove unused variable.</li>
- <li>r600g: Don't return a value in function returning void.</li>
- <li>r600g: Remove unused variables.</li>
- <li>r600g: Include p_compiler.h instead of malloc.h.</li>
- <li>r600g: Silence uninitialized variable warnings.</li>
- <li>scons: Add MinGW-w64 prefixes for MinGW build.</li>
- <li>dri: Add GET_PROGRAM_NAME definition for Mac OS X.</li>
- <li>scons: Add program/sampler.cpp to SCons build.</li>
- <li>mesa: Fix printf format warning.</li>
- <li>mesa: Fix printf format warning.</li>
- <li>mesa: Fix printf format warning.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r600g: Update SConscript.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r600g: Update SConscript.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r600g: Update SConscript.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r600g: Fix SCons build.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r300/compiler: Remove declaration before code.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>glsl: Remove unnecessary header.</li>
- <li>savage: Remove unnecessary header.</li>
- <li>r600g: Remove unused variable.</li>
- <li>r600g: Remove unnecessary headers.</li>
- <li>r600g: Fix SCons build.</li>
- <li>r600g: Remove unnecessary header.</li>
- <li>gallivm: Remove unnecessary header.</li>
- <li>r600g: Silence uninitialized variable warning.</li>
- <li>r600g: Silence uninitialized variable warning.</li>
- <li>r600g: Silence uninitialized variable warning.</li>
- <li>i915: Silence unused variable warning in non-debug builds.</li>
- <li>i915: Silence unused variable warning in non-debug builds.</li>
- <li>i965: Silence unused variable warning on non-debug builds.</li>
- <li>i965: Silence unused variable warning on non-debug builds.</li>
- <li>i965: Initialize member variables.</li>
- <li>r300: Silence uninitialized variable warning.</li>
- <li>tdfx: Silence unused variable warning on non-debug builds.</li>
- <li>gallivm: Remove unnecessary header.</li>
- <li>glsl: Initialize variable in ir_derefence_array::constant_expression_value</li>
- <li>mesa: Add missing header to shaderobj.h.</li>
- <li>llvmpipe: Return non-zero exit code for lp_test_round failures.</li>
- <li>r300/compiler: Remove unused variable.</li>
- <li>st/xorg: Fix memory leak on error path.</li>
- <li>llvmpipe: Initialize state variable in debug_bin function.</li>
- <li>llvmpipe: Initialize variable.</li>
- <li>draw: Move loop variable declaration outside for loop.</li>
- <li>r600g: Ensure r600_src is initialized in tgsi_exp function.</li>
- <li>glsl: Add assert for unhandled ir_shader case.</li>
- <li>swrast: Print out format on unexpected failure in _swrast_DrawPixels.</li>
- <li>llvmpipe: Remove unnecessary header.</li>
- <li>draw: Remove unnecessary header.</li>
- <li>gallivm: Silence uninitialized variable warnings.</li>
- <li>gallivm: Silence uninitialized variable warnings.</li>
- <li>gallivm: Silence uninitialized variable warning.</li>
- <li>r300g: Silence uninitialized variable warning.</li>
- <li>mesa: Remove unnecessary headers.</li>
- <li>r600g: Silence uninitialized variable warnings.</li>
- <li>st/mesa: Remove unnecessary header.</li>
- <li>mesa: Remove unnecessary header.</li>
- <li>egl: Remove unnecessary headers.</li>
- <li>swrast: Print out format on unexpected failure in _swrast_ReadPixels.</li>
- <li>st/mesa: Silence uninitialized variable warning.</li>
- <li>savage: Remove unnecessary header.</li>
- <li>st/vega: Remove unnecessary headers.</li>
- <li>dri/nouveau: Silence uninitialized variable warning.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>i965: Silence uninitialized variable warning.</li>
- <li>i965: Silence uninitialized variable warning.</li>
- <li>mesa: Clean up header file inclusion in accum.h.</li>
- <li>mesa: Clean up header file inclusion in version.h.</li>
- <li>mesa: Clean up header file inclusion in api_loopback.h.</li>
- <li>mesa: Clean up header file inclusion in api_validate.h.</li>
- <li>mesa: Include mfeatures.h in api_loopback for FEATURE_beginend.</li>
- <li>mesa: Include mfeatures.h in api_validate.c for FEATURE_* symbols.</li>
- <li>mesa: Clean up header file inclusion in arrayobj.h.</li>
- <li>mesa: Clean up header file inclusion in atifragshader.h.</li>
- <li>mesa: Clean up header file inclusion in attrib.h.</li>
- <li>mesa: Clean up header file inclusion in blend.h.</li>
- <li>mesa: Clean up header file inclusion in buffers.h.</li>
- <li>mesa: Clean up header file inclusion in colortab.h.</li>
- <li>mesa: Clean up header file inclusion in convolve.h.</li>
- <li>mesa: Clean up header file inclusion in debug.h.</li>
- <li>mesa: Clean up header file inclusion in depth.h.</li>
- <li>mesa: Clean up header file inclusion in depthstencil.h.</li>
- <li>mesa: Clean up header file inclusion in drawpix.h.</li>
- <li>mesa: Clean up header file inclusion in drawtex.h.</li>
- <li>mesa: Clean up header file inclusion in enable.h.</li>
- <li>mesa: Clean up header file inclusion in extensions.h.</li>
- <li>graw: Add struct pipe_surface forward declaration.</li>
- <li>mesa: Clean up header file inclusion in fbobject.h.</li>
- <li>mesa: Clean up header file inclusion in ffvertex_prog.h.</li>
- <li>mesa: Clean up header file inclusion in fog.h.</li>
- <li>mesa: Clean up header file inclusion in framebuffer.h.</li>
- <li>mesa: Clean up header file inclusion in hint.h.</li>
- <li>mesa: Clean up header file inclusion in histogram.h.</li>
- <li>mesa: Clean up header file inclusion in image.h.</li>
- <li>mesa: Add missing header and forward declarations in dd.h.</li>
- <li>mesa: Clean up header file inclusion in light.h.</li>
- <li>mesa: Clean up header file inclusion in lines.h.</li>
- <li>mesa: Clean up header file inclusion in matrix.h.</li>
- <li>mesa: Clean up header file inclusion in multisample.h.</li>
- <li>mesa: Clean up header file inclusion in nvprogram.h.</li>
- <li>winsys/xlib: Add cygwin to SConscript.</li>
- <li>mesa: Clean up header file inclusion in pixel.h.</li>
- <li>mesa: Clean up header file inclusion in pixelstore.h.</li>
- <li>mesa: Fix printf format warnings.</li>
- <li>mesa: Clean up header file inclusion in points.h.</li>
- <li>i965: Silence uninitialized variable warning.</li>
- <li>glsl: Add ir_constant_expression.cpp to SConscript.</li>
- <li>mesa: Add definitions for inverse hyperbolic function on MSVC.</li>
- <li>glsl: Fix 'control reaches end of non-void function' warning.</li>
- <li>glsl: Add lower_vector.cpp to SConscript.</li>
- <li>glsl: Fix type of label 'default' in switch statement.</li>
- <li>st/mesa: Remove unnecessary headers.</li>
- <li>swrast: Remove unnecessary header.</li>
- <li>r600: Remove unnecesary header.</li>
- <li>intel: Remove unnecessary header.</li>
- <li>mesa: Clean up header file inclusion in polygon.h.</li>
- <li>mesa: Clean up header file inclusion in rastpos.h.</li>
- <li>mesa: Clean up header file inclusion in readpix.h.</li>
- <li>mesa: Clean up header file inclusion in renderbuffer.h.</li>
- <li>mesa: Clean up header file inclusion in scissor.h.</li>
- <li>mesa: Clean up header file inclusion in shaderapi.h.</li>
- <li>mesa: Clean up header file inclusion in shared.h.</li>
- <li>mesa: Clean up header file inclusion in stencil.h.</li>
- <li>r600: Remove unnecessary header.</li>
- <li>llvmpipe: Remove unnecessary headers.</li>
- <li>mesa: Clean up header file inclusion in syncobj.h.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>r300/compiler: Move declaration before code.</li>
- <li>mesa: Clean up header file inclusion in texcompress.h.</li>
- <li>st/vega: Silence uninitialized variable warning.</li>
- <li>mesa: Clean up header file inclusion in texcompress_s3tc.h.</li>
- <li>mesa: Clean up header file inclusion in texenvprogram.h.</li>
- <li>mesa: Clean up header file inclusion in texformat.h.</li>
- <li>mesa: Clean up header file inclusion in texgetimage.h.</li>
- <li>mesa: Clean up header file inclusion in texobj.h.</li>
- <li>gallium/noop: Add prototype for noop_init_state_functions.</li>
- <li>mesa: Clean up header file inclusion in texrender.h.</li>
- <li>mesa: Clean up header file inclusion in transformfeedback.h.</li>
- <li>mesa: Clean up header file inclusion in varray.h.</li>
- <li>mesa: Clean up header file inclusion in viewport.h.</li>
- <li>r200: Silence uninitialized variable warning.</li>
- <li>r600g: Fix SCons build.</li>
- <li>i965: Silence uninitialized variable warning.</li>
-</ul></p>
-
-<p>Xavier Chantry (8):
-<ul>
- <li>nv50: fix size of outputs_written array</li>
- <li>nv50: apply layout_mask to tile_flags</li>
- <li>nvfx: only expose one rt on nv30</li>
- <li>nvfx: fb-&gt;nr_cbufs &lt= 1 on nv30</li>
- <li>nvfx: reset nvfx-&gt;hw_zeta</li>
- <li>nvfx: fixes after array textures merge</li>
- <li>init ps-&gt;context with util_surfaces_get and do_get</li>
- <li>gallium/trace: check bind_vertex_sampler_states and set_vertex_sampler_views</li>
-</ul></p>
-
-<p>Xiang, Haihao (10):
-<ul>
- <li>mesa: fix regression from b4bb6680200b5a898583392f4c831c02f41e63f7</li>
- <li>i965: add support for polygon mode on Sandybridge.</li>
- <li>i965: fix for flat shading on Sandybridge</li>
- <li>i965: set minimum/maximum Point Width on Sandybridge</li>
- <li>meta: allow nested meta operations</li>
- <li>i965: support for two-sided lighting on Sandybridge</li>
- <li>i965: fix register region description</li>
- <li>i965: use align1 access mode for instructions with execSize=1 in VS</li>
- <li>i965: don't spawn GS thread for LINELOOP on Sandybridge</li>
- <li>i965: use BLT to clear buffer if possible on Sandybridge</li>
-</ul></p>
-
-<p>Zack Rusin (8):
-<ul>
- <li>rbug: fix rbug when contexts are being destroyed</li>
- <li>llvmpipe: fix rasterization of vertical lines on pixel boundaries</li>
- <li>scons: build the xorg state trackers only when env includes drm</li>
- <li>gallivm: implement indirect addressing of the output registers</li>
- <li>gallivm: implement indirect addressing over inputs</li>
- <li>gallivm: fix storing of the addr register</li>
- <li>scons: add alias for identity</li>
- <li>gallium/util: add states relevant to geometry shaders</li>
-</ul></p>
-
-<p>Zhenyu Wang (40):
-<ul>
- <li>i965: disasm quarter and write enable instruction control on sandybridge</li>
- <li>i965: new state dump for sandybridge</li>
- <li>i965: enable accumulator update in PS kernel too on sandybridge</li>
- <li>i965: Fix color interpolation on sandybridge</li>
- <li>i965: force zero in clipper to ignore RTAIndex on sandybridge</li>
- <li>i965: fix point size setting in header on sandybridge</li>
- <li>i965: ff sync message change for sandybridge</li>
- <li>i965: ignore quads for GS kernel on sandybridge</li>
- <li>i965: add sandybridge viewport state bo into validation list</li>
- <li>i965: VS use SPF mode on sandybridge for now</li>
- <li>i965: fix jump count on sandybridge</li>
- <li>i965: Fix sampler on sandybridge</li>
- <li>i965: fix const register count for sandybridge</li>
- <li>i965: Add all device ids for sandybridge</li>
- <li>i965: sandybridge pipe control workaround before write cache flush</li>
- <li>i965: only allow SIMD8 kernel on sandybridge now</li>
- <li>i965: don't do calculation for delta_xy on sandybridge</li>
- <li>i965: fix pixel w interpolation on sandybridge</li>
- <li>i965: enable polygon offset on sandybridge</li>
- <li>i965: fix scissor state on sandybridge</li>
- <li>i965: fix point sprite on sandybridge</li>
- <li>i965: fix occlusion query on sandybridge</li>
- <li>i965: fallback bitmap operation on sandybridge</li>
- <li>i965: Always set tiling for depth buffer on sandybridge</li>
- <li>i965: fallback lineloop on sandybridge for now</li>
- <li>Revert "i965: Always set tiling for depth buffer on sandybridge"</li>
- <li>i965: always set tiling for fbo depth buffer on sandybridge</li>
- <li>i965: Fix GS hang on Sandybridge</li>
- <li>Revert "i965: fallback lineloop on sandybridge for now"</li>
- <li>i965: refresh wm push constant also for BRW_NEW_FRAMENT_PROGRAM on gen6</li>
- <li>i965: fix dest type of 'endif' on sandybridge</li>
- <li>Revert "i965: VS use SPF mode on sandybridge for now"</li>
- <li>i965: also using align1 mode for math2 on sandybridge</li>
- <li>i965: Fix GS state uploading on Sandybridge</li>
- <li>i965: upload WM state for _NEW_POLYGON on sandybridge</li>
- <li>i965: Use MI_FLUSH_DW for blt ring flush on sandybridge</li>
- <li>i965: explicit tell header present for fb write on sandybridge</li>
- <li>i965: Fix occlusion query on sandybridge</li>
- <li>i965: Use last vertex convention for quad provoking vertex on sandybridge</li>
- <li>i965: Fix provoking vertex select in clip state for sandybridge</li>
-</ul></p>
-
-<p>Zou Nan hai (1):
-<ul>
- <li>i965: skip too small size mipmap</li>
-</ul></p>
-
-<p>delphi (2):
-<ul>
- <li>draw: added userclip planes and updated variant_key</li>
- <li>draw: some changes to allow for runtime changes to userclip planes</li>
-</ul></p>
-
-<p>nobled (3):
-<ul>
- <li>r300g: Abort if atom allocations fail</li>
- <li>r300g: Abort if draw_create() fails</li>
- <li>r300g: Drop unnecessary cast</li>
-</ul></p>
-
-<p>pontus lidman (1):
-<ul>
- <li>mesa: check for posix_memalign() errors</li>
-</ul></p>
-
-<p>richard (2):
-<ul>
- <li>evergreen : fix z format setting, enable stencil.</li>
- <li>r600c : inline vertex format is not updated in an app, switch to use vfetch constants. For the 7.9 and 7.10 branches as well.</li>
-</ul></p>
-
-</body>
-</html>
+<HTML>
+
+<head>
+<TITLE>Mesa Release Notes</TITLE>
+<link rel="stylesheet" type="text/css" href="mesa.css">
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+</head>
+
+<BODY>
+
+<body bgcolor="#eeeeee">
+
+<H1>Mesa 7.10 Release Notes / January 7, 2011</H1>
+
+<p>
+Mesa 7.10 is a new development release.
+People who are concerned with stability and reliability should stick
+with a previous release or wait for Mesa 7.10.1.
+</p>
+<p>
+Mesa 7.10 implements the OpenGL 2.1 API, but the version reported by
+glGetString(GL_VERSION) depends on the particular driver being used.
+Some drivers don't support all the features required in OpenGL 2.1.
+</p>
+<p>
+See the <a href="install.html">Compiling/Installing page</a> for prerequisites
+for DRI hardware acceleration.
+</p>
+
+
+<h2>MD5 checksums</h2>
+<pre>
+0a70c15c135561824bdcae92bf232e43 MesaLib-7.10.tar.gz
+33fb94eccc02cbb4d8d1365615e38e46 MesaLib-7.10.tar.bz2
+5cafdc0eda0f9bf370b95c98df3338fa MesaLib-7.10.zip
+bc644be551ed585fc4f66c16b64a91c9 MesaGLUT-7.10.tar.gz
+5c2677a155672352d62b177e4f0f92e8 MesaGLUT-7.10.tar.bz2
+2ce5001f74496d1ba719ef74d910a5cf MesaGLUT-7.10.zip
+</pre>
+
+
+<h2>New features</h2>
+<ul>
+<li>GL_ARB_explicit_attrib_location extension (Intel and software drivers).
+<li>GL_ARB_texture_rg (Intel, software drivers, gallium drivers).
+<li>GL_EXT_separate_shader_objects extension (Intel and software drivers).
+<li>GL_NV_primitive_restart extension (Gallium softpipe, llvmpipe).
+<li>New fragment shader back-end for i965-class hardware.
+<li>Support for Sandybridge chipset in i965 DRI driver.
+</ul>
+
+
+<h2>Bug fixes</h2>
+<p>This list is likely incomplete.</p>
+<ul>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28800">Bug 28800</a> - [r300c, r300g] Texture corruption with World of Warcraft</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29420">Bug 29420</a> - Amnesia / HPL2 RendererFeatTest - not rendering correctly</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29946">Bug 29946</a> - [swrast] piglit valgrind glsl-array-bounds-04 fails</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30261">Bug 30261</a> - [GLSL 1.20] allowing inconsistent invariant declaration between two vertex shaders</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30632">Bug 30632</a> - [softpipe] state_tracker/st_manager.c:489: st_context_notify_invalid_framebuffer: Assertion `stfb &amp;&amp; stfb-&gt;iface == stfbi' failed.</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30694">Bug 30694</a> - wincopy will crash on Gallium drivers when going to front buffer</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30771">Bug 30771</a> - [r600g] vert-tex glsl demo</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30787">Bug 30787</a> - Invalid asm shader does not generate draw-time error when used with GLSL shader</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30974">Bug 30974</a> - [llvmpipe] SIGABRT src/gallium/drivers/llvmpipe/lp_state_fs.c:779</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30993">Bug 30993</a> - getFramebufferAttachmentParameteriv wrongly generates error</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31101">Bug 31101</a> - [glsl2] abort() in ir_validate::visit_enter(ir_assignment *ir)</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31193">Bug 31193</a> - [regression] aa43176e break water reflections</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31194">Bug 31194</a> - The mesa meta save/restore code doesn't ref the current GLSL program</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31371">Bug 31371</a> - glslparsertest: ir.cpp:358: ir_constant::ir_constant(const glsl_type*, const ir_constant_data*): Assertion `(type->base_type &gt;= 0) &amp;&amp; (type->base_type &lt;= 3)' failed.</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31439">Bug 31439</a> - Crash in glBufferSubData() with size == 0</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31495">Bug 31495</a> - [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31514">Bug 31514</a> - isBuffer returns true for unbound buffers</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31560">Bug 31560</a> - [tdfx] tdfx_tex.c:702: error: ‘const struct gl_color_table’ has no member named ‘Format’</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31617">Bug 31617</a> - Radeon/Compiz: 'failed to attach dri2 front buffer', error case not handled</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31648">Bug 31648</a> - [GLSL] array-struct-array gets assertion: `(size &gt;= 1) && (size &lt;= 4)' failed.</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31650">Bug 31650</a> - [GLSL] varying gl_TexCoord fails to be re-declared to different size in the second shader</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31673">Bug 31673</a> - GL_FRAGMENT_PRECISION_HIGH preprocessor macro undefined in GLSL ES</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31690">Bug 31690</a> - i915 shader compiler fails to flatten if in Aquarium webgl demo.</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31832">Bug 31832</a> - [i915] Bad renderbuffer format: 21</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31841">Bug 31841</a> - [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31894">Bug 31894</a> - Writing to gl_PointSize with GLES2 corrupts other varyings</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31909">Bug 31909</a> - [i965] brw_fs.cpp:1461: void fs_visitor::emit_bool_to_cond_code(ir_rvalue*): Assertion `expr-&gt;operands[i]-&gt;type-&gt;is_scalar()' failed.</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31934">Bug 31934</a> - [gallium] Mapping empty buffer object causes SIGSEGV</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31983">Bug 31983</a> - [i915 gles2] "if (expression with builtin/varying variables) discard" breaks linkage</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31985">Bug 31985</a> - [GLSL 1.20] initialized uniform array considered as "unsized"</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31987">Bug 31987</a> - [gles2] if input a wrong pname(GL_NONE) to glGetBoolean, it will not case GL_INVALID_ENUM</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32035">Bug 32035</a> - [GLSL bisected] comparing unsized array gets segfault</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32070">Bug 32070</a> - llvmpipe renders stencil demo incorrectly</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32273">Bug 32273</a> - assertion fails when starting vdrift 2010 release with shaders enabled</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32287">Bug 32287</a> - [bisected GLSL] float-int failure</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32311">Bug 32311</a> - [965 bisected] Array look-ups broken on GM45</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32520">Bug 32520</a> - [gles2] glBlendFunc(GL_ZERO, GL_DST_COLOR) will result in GL_INVALID_ENUM</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32825">Bug 32825</a> - egl_glx driver completely broken in 7.9 branch [fix in master]</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=">Bug </a> - </li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=">Bug </a> - </li>
+
+</ul>
+
+
+<h2>Changes</h2>
+<p>Adam Jackson (2):
+<ul>
+ <li>i965: Update renderer strings for sandybridge</li>
+ <li>drivers/x11: unifdef XFree86Server</li>
+</ul></p>
+
+<p>Alex Deucher (30):
+<ul>
+ <li>r600c: fix mipmap stride on evergreen</li>
+ <li>r600c: add reloc for CB_COLOR0_ATTRIB</li>
+ <li>r600c: pull over 6xx/7xx vertex fixes for evergreen</li>
+ <li>r600c: fix segfault in evergreen stencil code</li>
+ <li>r100: revalidate after radeon_update_renderbuffers</li>
+ <li>r600c: add missing radeon_prepare_render() call on evergreen</li>
+ <li>r600c: properly align mipmaps to group size</li>
+ <li>egl_dri2: Add radeon chip ids</li>
+ <li>r600c/evergreen: texture align is group_bytes just like 6xx/7xx</li>
+ <li>r600g: fix buffer alignment</li>
+ <li>r600g: All EVENT_WRITE packets need the EVENT_INDEX field</li>
+ <li>r600g: translate ARR instruction for evergreen</li>
+ <li>r600g: use meaningful defines for chiprev</li>
+ <li>r600g: use full range of VS resources for vertex samplers</li>
+ <li>r600g: fix additional EVENT_WRITE packet</li>
+ <li>r600g: fix some winsys functions to deal properly with evergreen</li>
+ <li>r600c: add Ontario Fusion APU support</li>
+ <li>r600g: add support for ontario APUs</li>
+ <li>r600c: fix VC flush on cedar and palm</li>
+ <li>gallium/egl: fix r300 vs r600 loading</li>
+ <li>r600c: fix some opcodes on evergreen</li>
+ <li>r600c: bump texture limits to hw limits</li>
+ <li>r600g: bump texture/cb limits appropriately for evergreen</li>
+ <li>radeon: bump mip tree levels to 15</li>
+ <li>r600g: fix rendering with a vertex attrib having a zero stride</li>
+ <li>r600g: remove useless switch statements</li>
+ <li>r600g: add support for NI (northern islands) asics</li>
+ <li>r600c: add support for NI asics</li>
+ <li>r600g: support up to 64 shader constants</li>
+ <li>r600c: fix up SQ setup in blit code for Ontario/NI</li>
+</ul></p>
+
+<p>Andre Maasikas (3):
+<ul>
+ <li>r600c: fix buffer height setting in dri2 case</li>
+ <li>r600g: break alu clause earlier</li>
+ <li>r600g: fix evergreen interpolation setup</li>
+</ul></p>
+
+<p>Andrew Randrianasulu (2):
+<ul>
+ <li>dri/nv04: Don't expose ARB_texture_env_combine/dot3.</li>
+ <li>dri/nv04: Enable eng3dm for A8/L8 textures.</li>
+</ul></p>
+
+<p>Aras Pranckevicius (2):
+<ul>
+ <li>glsl: fix crash in loop analysis when some controls can't be determined</li>
+ <li>glsl: fix matrix type check in ir_algebraic</li>
+</ul></p>
+
+<p>Bas Nieuwenhuizen (3):
+<ul>
+ <li>r600g: set ENABLE_KILL in the shader state in the new design</li>
+ <li>r600g: set ENABLE_KILL on evergreen too</li>
+ <li>r600g: use dirty list to track dirty blocks</li>
+</ul></p>
+
+<p>Ben Skeggs (3):
+<ul>
+ <li>nv50: DST</li>
+ <li>nv50: DPH</li>
+ <li>nv50: silence some unknown get_param warnings</li>
+</ul></p>
+
+<p>Benjamin Franzke (2):
+<ul>
+ <li>st/egl image: multiply drm buf-stride with blocksize</li>
+ <li>r600g: implement texture_get_handle (needed for eglExportDRMImageMESA)</li>
+</ul></p>
+
+<p>Brian Paul (296):
+<ul>
+ <li>glx: add const qualifiers to __indirect_glMultiDrawArraysEXT()</li>
+ <li>glsl2: fix signed/unsigned comparison warning</li>
+ <li>llvmpipe: cast to silence warning</li>
+ <li>llvmpipe: s/boolean/unsigned/ in bitfield to silence warning</li>
+ <li>nv50: use unsigned int for bitfields to silence warnings</li>
+ <li>tgsi: fix incorrect usage_mask for shadow tex instructions</li>
+ <li>gallivm: expand AoS sampling to cover all filtering modes</li>
+ <li>gallivm: fix incorrect vector shuffle datatype</li>
+ <li>gallivm: move i32_vec_type inside the #ifdef</li>
+ <li>mesa: include mfeatures.h in formats.c</li>
+ <li>gallivm: fix wrong return value in bitwise functions</li>
+ <li>tgsi/sse: fix aos_to_soa() loop to handle num_inputs==0</li>
+ <li>gallivm: added missing case for PIPE_TEXTURE_RECT</li>
+ <li>gallium: better docs for pipe_rasterizer_state::sprite_coord_enable</li>
+ <li>gallium: rework handling of sprite_coord_enable state</li>
+ <li>gallium/docs: added new pipeline.txt diagram</li>
+ <li>mesa: don't call valid_texture_object() in non-debug builds</li>
+ <li>glsl2: silence compiler warnings in printf() calls</li>
+ <li>docs: remove old broken link</li>
+ <li>docs: mark as obsolete, remove dead links</li>
+ <li>llvmpipe: fix query bug when no there's no scene</li>
+ <li>gallivm: remove debug code</li>
+ <li>llvmpipe: maintain fragment shader state for draw module</li>
+ <li>llvmpipe: indentation fix</li>
+ <li>llvmpipe: reformatting, remove trailing whitespace, etc</li>
+ <li>llvmpipe: clean-up, comments in setup_point_coefficient()</li>
+ <li>llvmpipe: rename sprite field, add sprite_coord_origin</li>
+ <li>llvmpipe: implement sprite coord origin modes</li>
+ <li>draw: fix test for using the wide-point stage</li>
+ <li>llvmpipe: check bitshift against PIPE_MAX_SHADER_OUTPUTS</li>
+ <li>draw: check bitshift against PIPE_MAX_SHADER_OUTPUS</li>
+ <li>Merge branch 'sprite-coord'</li>
+ <li>draw: new draw_fs.[ch] files</li>
+ <li>glsl2: fix typo in error msg</li>
+ <li>gallivm: fix lp_build_sample_compare()</li>
+ <li>softpipe: add missing calls to set draw vertex samplers/views</li>
+ <li>mesa: don't advertise bogus GL_ARB_shading_language_120 extension</li>
+ <li>configs: remove egl-swrast target from linux-dri config</li>
+ <li>llvmpipe: fix sprite texcoord setup for non-projective texturing</li>
+ <li>mesa: fix assertions to handle srgb formats</li>
+ <li>st/mesa: add missing MESA_FORMAT_S8 case in st_mesa_format_to_pipe_format()</li>
+ <li>st/mesa: use the wrapped renderbuffer in CopyPixels()</li>
+ <li>llvmpipe: make min/max lod and lod bias dynamic state</li>
+ <li>llvmpipe: make texture border_color dynamic state</li>
+ <li>softpipe: fix repeat() function for NPOT textures</li>
+ <li>gallivm: fix repeat() function for NPOT textures</li>
+ <li>swrast: update comments for REMAINDER() macro</li>
+ <li>softpipe: rename sp_state_fs.c -&gt; sp_state_shader.c</li>
+ <li>softpipe: make shader-related functions static</li>
+ <li>softpipe: make blend/stencil/depth functions static</li>
+ <li>softpipe: make sampler state functions static</li>
+ <li>softpipe: make vertex state functions static</li>
+ <li>softpipe: make rasterizer state functions static</li>
+ <li>softpipe: make stream out state functions static</li>
+ <li>softpipe: make clip state functions static</li>
+ <li>softpipe: minor asst. clean-ups</li>
+ <li>softpipe: allocate tile data on demand</li>
+ <li>llvmpipe: fix swizzling of texture border color</li>
+ <li>softpipe: fix swizzling of texture border color</li>
+ <li>draw: pass sampler state down to llvm jit state</li>
+ <li>gallivm: check for level=0 case in lp_build_minify()</li>
+ <li>gallivm: added some comments</li>
+ <li>draw: check for null sampler pointers</li>
+ <li>swrast: fix choose_depth_texture_level() to respect mipmap filtering state</li>
+ <li>st/mesa: replace assertion w/ conditional in framebuffer invalidation</li>
+ <li>glsl2: fix signed/unsigned comparison warning</li>
+ <li>st/xlib: add some comments</li>
+ <li>ir_to_mesa: assorted clean-ups, const qualifiers, new comments</li>
+ <li>mesa: remove assertion w/ undeclared variable texelBytes</li>
+ <li>gallivm: remove newlines</li>
+ <li>draw/llvmpipe: replace DRAW_MAX_TEXTURE_LEVELS with PIPE_MAX_TEXTURE_LEVELS</li>
+ <li>mesa: reformatting, comments, code movement</li>
+ <li>x11: fix breakage from gl_config::visualType removal</li>
+ <li>gallivm: work-around trilinear mipmap filtering regression with LLVM 2.8</li>
+ <li>mesa: remove post-convolution width/height vars</li>
+ <li>gallivm: add compile-time option to emit inst addrs and/or line numbers</li>
+ <li>llvmpipe: code to dump bytecode to file (disabled)</li>
+ <li>gallivm: added lp_build_print_vec4()</li>
+ <li>gallivm: added lp_build_load_volatile()</li>
+ <li>glsl: add ir_unop_round_even case to silence unhandled enum warning</li>
+ <li>st/mesa: fix regressions in glDrawPixels(GL_STENCIL_INDEX)</li>
+ <li>st/mesa: reformatting in st_cb_drawpixels.c</li>
+ <li>st/mesa: use GLuint to avoid problem w/ uint not defined on mingw32</li>
+ <li>st/mesa: update function name, comments</li>
+ <li>gallivm: use util_snprintf()</li>
+ <li>llvmpipe: remove lp_setup_coef*.c files from Makefile</li>
+ <li>mesa: fix mesa version string construction</li>
+ <li>gallivm: fix incorrect type for zero vector in emit_kilp()</li>
+ <li>llvmpipe/draw: always enable LLVMAddInstructionCombiningPass()</li>
+ <li>draw: use float version of LLVM Mul/Add instructions</li>
+ <li>draw: fix typo in comment</li>
+ <li>mesa: add GL_RG case to _mesa_source_buffer_exists()</li>
+ <li>mesa: add missing cases for packing red/green images</li>
+ <li>st/mesa: added cases for GL_COMPRESSED_RED/RG in st_choose_format()</li>
+ <li>docs: update texture red/green support in GL3.txt</li>
+ <li>docs: add GL_ARB_texture_rg to release notes</li>
+ <li>mesa: driver hook for primitive restart</li>
+ <li>mesa: set/get primitive restart state</li>
+ <li>mesa: API spec for primitive restart</li>
+ <li>mesa: regenerated files with primitive restart</li>
+ <li>mesa: plug in primitive restart function</li>
+ <li>vbo: support for primitive restart</li>
+ <li>gallium: new CAP, state for primitive restart</li>
+ <li>st/mesa: support for primitive restart</li>
+ <li>draw: implement primitive splitting for primitive restart</li>
+ <li>softpipe: enable primitive restart</li>
+ <li>llvmpipe: enable primitive restart</li>
+ <li>docs: added GL_NV_primitive_restart extension</li>
+ <li>Merge branch 'primitive-restart-cleanup'</li>
+ <li>winsys/xlib: formatting fixes</li>
+ <li>winsys/xlib: use Bool type for shm field</li>
+ <li>winsys/xlib: fix up allocation/dealloction of XImage</li>
+ <li>winsys/xlib: rename xm-&gt;xlib</li>
+ <li>galahad: silence warnings</li>
+ <li>mesa: move declaration before code</li>
+ <li>docs: updated GL3 status for primitive restart</li>
+ <li>mesa: 80-column wrapping</li>
+ <li>mesa: simplify fbo format checking code</li>
+ <li>mesa: split up the image.c file</li>
+ <li>mesa: add pixel packing for unscaled integer types</li>
+ <li>mesa: _mesa_ClearColorIuiEXT() and _mesa_ClearColorIiEXT()</li>
+ <li>mesa: _mesa_is_format_integer() function</li>
+ <li>mesa: minor reformatting, clean-ups</li>
+ <li>mesa: added _mesa_is_fragment_shader_active() helper</li>
+ <li>mesa: new glDrawPixels error check for integer formats</li>
+ <li>softpipe: added some texture sample debug code (disabled)</li>
+ <li>mesa: added new gl_extensions::EXT_gpu_shader4 field</li>
+ <li>mesa: added new gl_framebuffer::_IntegerColor field</li>
+ <li>mesa: added glGet query for GL_RGBA_INTEGER_MODE_EXT</li>
+ <li>mesa: compute _IntegerColor field in _mesa_test_framebuffer_completeness()</li>
+ <li>mesa: added cases for GL_EXT_texture_integer formats</li>
+ <li>mesa: added cases for GL_EXT_texture_integer</li>
+ <li>st/mesa: add format selection for signed/unsigned integer formats</li>
+ <li>mesa: simplify target_can_be_compressed() function</li>
+ <li>glapi: GL_EXT_texture_integer API</li>
+ <li>glapi: include/build EXT_texture_integer.xml</li>
+ <li>mesa: regenerated API files for GL_EXT_texture_integer</li>
+ <li>mesa: plug in GL_EXT_texture_integer functions</li>
+ <li>mesa: display list support for GL_EXT_texture_integer</li>
+ <li>st/mesa: be smarter choosing texture format for glDrawPixels()</li>
+ <li>softpipe: remove &gt;32bpp color restriction</li>
+ <li>mesa: silence enum comparison warning</li>
+ <li>mesa: fix uninitialized var warning</li>
+ <li>xlib: silence unused var warning</li>
+ <li>util: use pointer_to_func() to silence warning</li>
+ <li>rtasm: use pointer_to_func() to silence warning</li>
+ <li>translate: use function typedefs, casts to silence warnings</li>
+ <li>translate: remove unused prototypes</li>
+ <li>mesa: additional glReadPixels error checks for GL_EXT_texture_integer</li>
+ <li>mesa: additional switch cases for GL_EXT_texture_integer</li>
+ <li>mesa: additional teximage error checks for GL_EXT_texture_integer</li>
+ <li>mesa: do integer FB / shader validation check in _mesa_valid_to_render()</li>
+ <li>mesa: call _mesa_valid_to_render() in glDrawPixels, glCopyPixels, glBitmap</li>
+ <li>mesa: remove the unused _mesa_is_fragment_shader_active() function</li>
+ <li>mesa: fix bug in _mesa_is_format_integer()</li>
+ <li>mesa: rename function to _mesa_is_format_integer_color()</li>
+ <li>mesa: remove 'normalized' parameter from _mesa_VertexAttribIPointer()</li>
+ <li>vbo: re-indent file</li>
+ <li>glapi: xml spec file for GL_EXT_gpu_shader4</li>
+ <li>glapi: include EXT_gpu_shader4.xml</li>
+ <li>glapi: regenerated API files</li>
+ <li>mesa: plug in stubs for glBindFragDataLocation(), glGetFragDataLocation()</li>
+ <li>mesa: add glGetUniformuiv(), plug in uint glUniform funcs</li>
+ <li>mesa: plug in more GL_EXT_gpu_shader4 functions</li>
+ <li>mesa: add new GLvertexformat entries for integer-valued attributes</li>
+ <li>mesa: implement integer-valued vertex attribute functions</li>
+ <li>mesa: add gl_client_array::Integer field and related vertex array state code</li>
+ <li>mesa: consolidate glVertex/Color/etcPointer() code</li>
+ <li>mesa: state/queries for GL_MIN/MAX_PROGRAM_TEXEL_OFFSET_EXT</li>
+ <li>mesa: glArrayElement support for integer-valued arrays</li>
+ <li>mesa: clean-up array element code</li>
+ <li>mesa: add extension table entry for GL_EXT_gpu_shader4</li>
+ <li>mesa: remove obsolete comment</li>
+ <li>mesa: fix incorrect type in _mesa_texstore_rgba_int16()</li>
+ <li>mesa: fix integer cases in _mesa_is_legal_format_and_type()</li>
+ <li>mesa: add const qualifier to _mesa_is_legal_format_and_type()</li>
+ <li>mesa: additional integer formats in _mesa_bytes_per_pixel()</li>
+ <li>mesa: pixel transfer ops do not apply to integer-valued textures</li>
+ <li>mesa: remove dead code</li>
+ <li>osmesa: fix renderbuffer memleak in OSMesaMakeCurrent()</li>
+ <li>mesa: use GLubyte for edge flag arrays</li>
+ <li>mesa: move the gl_config struct declaration</li>
+ <li>dri/util: add a bunch of comments</li>
+ <li>mesa: remove always-false conditional in check_compatible()</li>
+ <li>mesa: fix aux/accum comment and error message mixups</li>
+ <li>llvmpipe: assign context's frag shader pointer before using it</li>
+ <li>llvmpipe: add a cast</li>
+ <li>mesa: silence new warnings in texobj.c</li>
+ <li>egl/gdi: fix typo: xsurf-&gt;gsurf</li>
+ <li>mesa: code to unpack RGBA as uints</li>
+ <li>gallivm: implement scatter stores into temp register file</li>
+ <li>gallivm: add some LLVM var labels</li>
+ <li>gallivm: added debug code to dump temp registers</li>
+ <li>gallivm: add pixel offsets in scatter stores</li>
+ <li>gallivm: added lp_elem_type()</li>
+ <li>gallivm: implement execution mask for scatter stores</li>
+ <li>tgsi: remove unused function</li>
+ <li>llvmpipe: added some debug assertions, but disabled</li>
+ <li>gallivm: alloca() was called too often for temporary arrays</li>
+ <li>gallivm: add const qualifiers, fix comment string</li>
+ <li>softpipe: disable vertex texturing with draw/llvm</li>
+ <li>mesa: consolidate pixel packing/unpacking code</li>
+ <li>mesa: rename vars in pixel pack/unpack code</li>
+ <li>mesa: implement uint texstore code</li>
+ <li>mesa: remove stray GL_FLOAT case in _mesa_is_legal_format_and_type()</li>
+ <li>mesa: make fixed-pt and byte-valued arrays a runtime feature</li>
+ <li>softpipe: can't no-op depth test stage when occlusion query is enabled</li>
+ <li>mesa: no-op glBufferSubData() on size==0</li>
+ <li>mesa: #include mfeatures.h in enums.h</li>
+ <li>mesa: improve error message</li>
+ <li>mesa: add missing formats in _mesa_format_to_type_and_comps()</li>
+ <li>mesa: handle more pixel types in mipmap generation code</li>
+ <li>mesa: make glIsBuffer() return false for never bound buffers</li>
+ <li>mesa: fix glDeleteBuffers() regression</li>
+ <li>tdfx: s/Format/_BaseFormat/</li>
+ <li>mesa: consolidate assertions in teximage code</li>
+ <li>radeon: set gl_texture_image::TexFormat field in radeonSetTexBuffer2()</li>
+ <li>r600: set gl_texture_image::TexFormat field in r600SetTexBuffer2()</li>
+ <li>r200: set gl_texture_image::TexFormat field in r200SetTexBuffer2()</li>
+ <li>r300: set gl_texture_image::TexFormat field in r300SetTexBuffer2()</li>
+ <li>evergreen: set gl_texture_image::TexFormat field in evergreenSetTexBuffer()</li>
+ <li>st/mesa: fix glDrawPixels(depth/stencil) bugs</li>
+ <li>glsl: fix assorted MSVC warnings</li>
+ <li>mesa: add more work-arounds for acoshf(), asinhf(), atahf()</li>
+ <li>glsl: remove opt_constant_expression.cpp from SConscript</li>
+ <li>mesa: fix error messages and minor reindenting</li>
+ <li>mesa: whitespace cleanups</li>
+ <li>mesa: 80-column wrapping</li>
+ <li>mesa: reorder texture_error_check() params</li>
+ <li>mesa: minor clean-ups in context code</li>
+ <li>mesa: upgrade to glext.h version 66</li>
+ <li>mesa: pass gl_format to _mesa_init_teximage_fields()</li>
+ <li>mesa: fix error msg typo</li>
+ <li>glapi: rename GL3.xml to GL3x.xml as it covers all GL 3.x versions</li>
+ <li>mesa: hook up GL 3.x entrypoints</li>
+ <li>docs: update some GL 3.0 status</li>
+ <li>mesa: fix get_texture_dimensions() for texture array targets</li>
+ <li>swrast: init alpha value to 1.0 in opt_sample_rgb_2d()</li>
+ <li>glsl: fix off by one in register index assertion</li>
+ <li>glsl: use gl_register_file in a few places</li>
+ <li>mesa: rename, make _mesa_register_file_name() non-static</li>
+ <li>mesa: _mesa_valid_register_index() to validate register indexes</li>
+ <li>mesa: replace #defines with new gl_shader_type enum</li>
+ <li>mesa: use gl_shader_type enum</li>
+ <li>glsl: better handling of linker failures</li>
+ <li>glsl: start restoring some geometry shader code</li>
+ <li>mesa: add assertion and update comment in _mesa_format_image_size()</li>
+ <li>mesa: added _mesa_format_image_size64()</li>
+ <li>x11: remove test_proxy_teximage() function</li>
+ <li>st/mesa: fix mapping of zero-sized buffer objects</li>
+ <li>gallivm/llvmpipe: squash merge of the llvm-context branch</li>
+ <li>mesa: raise max texture sizes to 16K</li>
+ <li>softpipe: increase max texture size to 16K</li>
+ <li>mesa: replace large/MAX_WIDTH stack allocations with heap allocations</li>
+ <li>mesa: replace large/MAX_WIDTH stack allocations with heap allocations</li>
+ <li>swrast: avoid large stack allocations in blend code</li>
+ <li>swrast: avoid large stack allocations in tex combine code</li>
+ <li>st/mesa: avoid large stack allocations in readpixels code</li>
+ <li>mesa: replace more MAX_WIDTH stack allocations with heap allocations</li>
+ <li>gallivm/llvmpipe: remove lp_build_context::builder</li>
+ <li>gallivm: fix null builder pointers</li>
+ <li>mesa: fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME query</li>
+ <li>mesa: return GL_FRAMEBUFFER_DEFAULT as FBO attachment type</li>
+ <li>llvmpipe: fix broken stencil writemask</li>
+ <li>mesa: consolidate some compiler -D flags</li>
+ <li>swrast: allow GL_RG format in glDrawPixels()</li>
+ <li>swrast: fix indentation</li>
+ <li>swrast: accept GL_RG in glReadPixels()</li>
+ <li>swrast: restructure some glReadPixels() code</li>
+ <li>mesa: make glGet*(GL_NONE) generate GL_INVALID_ENUM</li>
+ <li>mesa: remove unneeded cast</li>
+ <li>mesa: update comments, remove dead code</li>
+ <li>st/mesa: new comment about updating state vars</li>
+ <li>mesa: add error margin to clip mask debug/check code</li>
+ <li>gallium/util: minor formatting fixes</li>
+ <li>mesa/llvm: use llvm-config --cppflags</li>
+ <li>st/mesa: fix mipmap generation bug</li>
+ <li>mesa: test for cube map completeness in glGenerateMipmap()</li>
+ <li>mesa: set gl_texture_object::_Complete=FALSE in incomplete()</li>
+ <li>mesa: consolidate glTexImage1/2/3D() code</li>
+ <li>mesa: simplify proxy texture code in texture_error_check()</li>
+ <li>mesa: consolidate the glTexSubImage1/2/3D() functions</li>
+ <li>mesa: consolidate glCopyTexImage1/2D() code</li>
+ <li>mesa: consolidate glCopyTexSubImage1/2/3D() functions</li>
+ <li>mesa: consolidate glCompressedTexImage1/2/3D() functions</li>
+ <li>mesa: make _mesa_test_proxy_teximage() easier to read</li>
+ <li>configure: use llvm-config --cppflags instead of --cflags</li>
+ <li>mesa: revamp error checking for compressed texture images</li>
+ <li>mesa: simplify target checking for TexImage functions</li>
+ <li>draw/llvm: don't flush in vs_llvm_delete()</li>
+ <li>tnl: Initialize gl_program_machine memory in run_vp.</li>
+ <li>tnl: a better way to initialize the gl_program_machine memory</li>
+ <li>mesa, st/mesa: disable GL_ARB_geometry_shader4</li>
+ <li>mesa/meta: fix broken assertion, rename stack depth var</li>
+ <li>glsl: new glsl_strtod() wrapper to fix decimal point interpretation</li>
+ <li>st/mesa: fix renderbuffer pointer check in st_Clear()</li>
+</ul></p>
+
+<p>Brian Rogers (1):
+<ul>
+ <li>mesa: Add missing else in do_row_3D</li>
+</ul></p>
+
+<p>Chad Versace (25):
+<ul>
+ <li>intel_extensions: Add ability to set GLSL version via environment</li>
+ <li>glsl: Add glsl_type::uvecN_type for N=2,3</li>
+ <li>glsl: Add lexer rules for uint and uvecN (N=2..4)</li>
+ <li>glsl: Changes in generated file glsl_lexer.cpp</li>
+ <li>glsl: Add lexer rules for &lt&lt and &gt;&gt; in GLSL 1.30</li>
+ <li>glsl: Change generated file glsl_lexer.cpp</li>
+ <li>glsl: Implement ast-to-hir for binary shifts in GLSL 1.30</li>
+ <li>glsl: Implement constant expr evaluation for bitwise-not</li>
+ <li>glsl: Implement constant expr evaluation for bit-shift ops</li>
+ <li>glsl: Implement constant expr evaluation for bitwise logic ops</li>
+ <li>glsl: Fix ir validation for bit logic ops</li>
+ <li>glsl: Define shift_result_type() in ast_to_hir.cpp</li>
+ <li>glsl: Implement ast-to-hir for bit-shift-assignment</li>
+ <li>glsl: Define bit_logic_result_type() in ast_to_hir.cpp</li>
+ <li>glsl: Implement ast-to-hir for bit-logic ops</li>
+ <li>glsl: Fix lexer rule for ^=</li>
+ <li>glsl: Commit generated file glsl_lexer.cpp</li>
+ <li>glsl: Fix ast-to-hir for ARB_fragment_coord_conventions</li>
+ <li>mesa: Fix C++ includes in sampler.cpp</li>
+ <li>glsl: Fix ir_expression::constant_expression_value()</li>
+ <li>glsl: Fix erroneous cast in ast_jump_statement::hir()</li>
+ <li>glsl: Fix Doxygen tag file in recently renamed files</li>
+ <li>glsl: Improve usage message for glsl_compiler</li>
+ <li>glsl: Fix linker bug in cross_validate_globals()</li>
+ <li>glsl: In ast_to_hir, check sampler array indexing</li>
+</ul></p>
+
+<p>Chia-I Wu (149):
+<ul>
+ <li>glapi: Fix build errors for ES.</li>
+ <li>glapi: Fix ES build errors again.</li>
+ <li>mesa: Update ES APIspec.xml.</li>
+ <li>st/xlib: Notify the context when the front/back buffers are swapped.</li>
+ <li>targets/egl: Use C++ compiler to link GL/ES state trackers.</li>
+ <li>libgl-xlib: Remove unused st_api_create_OpenGL.</li>
+ <li>st/egl: Split modeset code support to modeset.c.</li>
+ <li>st/egl: Rename kms backend to drm.</li>
+ <li>st/egl: s/kms/drm/ on the drm backend.</li>
+ <li>egl: Enable drm platform by default.</li>
+ <li>egl: Check extensions.</li>
+ <li>st/egl: Skip single-buffered configs in EGL.</li>
+ <li>mapi: Fix compiler warnings.</li>
+ <li>st/egl: Drop context argument from egl_g3d_get_egl_image.</li>
+ <li>targets/egl: Fix linking with libdrm.</li>
+ <li>st/vega: Fix version check in context creation.</li>
+ <li>egl: Use attribute names as the _EGLConfig member names.</li>
+ <li>egl: Access config attributes directly.</li>
+ <li>st/egl: Access _EGLConfig directly.</li>
+ <li>st/egl: Do not finish a fence that is NULL.</li>
+ <li>mesa: Remove unused vtxfmt_tmp.h.</li>
+ <li>egl_dri2: Drop the use of _egl[SG]etConfigKey.</li>
+ <li>egl_glx: Drop the use of [SG]ET_CONFIG_ATTRIB.</li>
+ <li>egl_glx: Fix borken driver.</li>
+ <li>egl: Move attributes in _EGLImage to _EGLImageAttribs.</li>
+ <li>egl: Parse image attributes with _eglParseImageAttribList.</li>
+ <li>egl: Move fallback routines to eglfallbacks.c.</li>
+ <li>egl: Drop dpy argument from the link functions.</li>
+ <li>egl: Minor changes to the _EGLConfig interface.</li>
+ <li>egl: Minor changes to the _EGLScreen interface.</li>
+ <li>egl: Fix _eglModeLookup.</li>
+ <li>st/egl: Fix native_mode refresh mode.</li>
+ <li>egl: Add reference count for resources.</li>
+ <li>egl: Use reference counting to replace IsLinked or IsBound.</li>
+ <li>egl: Fix a false negative check in _eglCheckMakeCurrent.</li>
+ <li>st/egl: Use resource reference count for egl_g3d_sync.</li>
+ <li>egl_dri2: Fix a typo that make glFlush be called at wrong time.</li>
+ <li>glapi: Do not use glapidispatch.h.</li>
+ <li>glapi: Move glapidispatch.h to core mesa.</li>
+ <li>glapi: Do not use glapioffsets.h.</li>
+ <li>glapi: Merge glapioffsets.h into glapidispath.h.</li>
+ <li>vbo: Use CALL_* macros.</li>
+ <li>mesa: Remove unnecessary glapitable.h includes.</li>
+ <li>autoconf: Better client API selection.</li>
+ <li>docs: Update egl and openvg docs.</li>
+ <li>autoconf: Update configuration info.</li>
+ <li>Merge branch 'glapi-reorg'</li>
+ <li>targets: Add missing quotes to Makefile.xorg.</li>
+ <li>autoconf: st/vega requires --enable-openvg.</li>
+ <li>st/mesa: Unreference the sampler view in st_bind_surface.</li>
+ <li>autoconf: Tidy configure output for EGL.</li>
+ <li>targets/egl: Fix a warning with --disable-opengl build.</li>
+ <li>egl: Rework _eglGetSearchPath.</li>
+ <li>mesa: Select FEATURE_remap_table when multiple APIs are enabled.</li>
+ <li>mesa: Allow contexts of different APIs to coexist.</li>
+ <li>egl: Set up the pthread key even TLS is used.</li>
+ <li>st/egl: Add native_surface::present callback.</li>
+ <li>st/egl: Use native_surface::present callback.</li>
+ <li>d3d1x: Use native_surface::present.</li>
+ <li>st/egl: Remove flush_frontbuffer and swap_buffers.</li>
+ <li>st/egl: Add support for swap interval and swap behavior.</li>
+ <li>st/egl: Add support for EGL_MATCH_NATIVE_PIXMAP.</li>
+ <li>st/egl: Add extern "C" wrapper to native.h.</li>
+ <li>st/egl: Add native_display_buffer interface.</li>
+ <li>st/egl: Use native_display_buffer for EGL_MESA_drm_image.</li>
+ <li>autoconf: Add --enable-gallium-egl.</li>
+ <li>docs: Update egl docs.</li>
+ <li>st/dri: Add support for surfaceless current contexts.</li>
+ <li>egl_dri2: Fix __DRI_DRI2 version 1 support.</li>
+ <li>st/vega: Do not wait NULL fences.</li>
+ <li>gallium: Add st_api::name.</li>
+ <li>gallium: Add st_context_iface::share to st_api.</li>
+ <li>st/wgl: Use st_context_iface::share for DrvShareLists.</li>
+ <li>st/glx: Replace MESA_VERSION_STRING by xmesa_get_name.</li>
+ <li>mesa: Clean up core.h.</li>
+ <li>scons: Define IN_DRI_DRIVER.</li>
+ <li>tgsi: Add STENCIL to text parser.</li>
+ <li>st/vega: vegaLookupSingle should validate the state.</li>
+ <li>st/vega: Set wrap_r for mask and blend samplers.</li>
+ <li>st/vega: Fix vgReadPixels with a subrectangle.</li>
+ <li>egl_dri2: Fix one context, multiple surfaces.</li>
+ <li>auxiliary: util_blit_pixels_tex should restore the viewport.</li>
+ <li>st/vega: Fix a crash with empty paths.</li>
+ <li>st/vega: Masks and surfaces should share orientation.</li>
+ <li>st/vega: No flipping in vg_prepare_blend_surface.</li>
+ <li>st/vega: Fix a typo in EXTENDED_BLENDER_OVER_FUNC.</li>
+ <li>llvmpipe: Fix build errors on x86.</li>
+ <li>st/vega: Overhaul renderer with renderer states.</li>
+ <li>st/vega: Add DRAWTEX renderer state.</li>
+ <li>st/vega: Add SCISSOR renderer state.</li>
+ <li>st/vega: Add CLEAR renderer state for vgClear.</li>
+ <li>st/vega: Add FILTER renderer state for image filtering.</li>
+ <li>st/vega: Use the renderer for vgMask.</li>
+ <li>st/vega: Add POLYGON_STENCIL and POLYGON_FILL renderer state.</li>
+ <li>st/vega: Delay fb state update to vg_validate_state.</li>
+ <li>st/vega: Use st_framebuffer for fb width/height.</li>
+ <li>st/vega: Move g3d states to renderer.</li>
+ <li>st/vega: Make shader_bind call into the renderer.</li>
+ <li>st/vega: vg_manager should care about only the color buffer.</li>
+ <li>st/vega: Clean up vg_context fields and functions.</li>
+ <li>st/vega: Clean up renderer fields and functions.</li>
+ <li>st/vega: vg_copy_texture and vg_copy_surface should share code.</li>
+ <li>st/vega: Get rid of renderer_copy_texture.</li>
+ <li>st/vega: Update to latest headers.</li>
+ <li>st/vega: Fix image sampler views for alpha-only formats.</li>
+ <li>st/vega: Make path_render and path_stroke take a matrix.</li>
+ <li>st/vega: Make image_draw take a matrix.</li>
+ <li>st/vega: Add primitive text support.</li>
+ <li>st/vega: Revive mask layer support.</li>
+ <li>st/vega: More flexible shader selection.</li>
+ <li>st/vega: Add color transformation support.</li>
+ <li>st/vega: Bump version to 1.1.</li>
+ <li>st/vega: Fix paint coordinates transformations.</li>
+ <li>st/vega: Fix negated logic in image_draw.</li>
+ <li>st/vega: Fix degenerate paints.</li>
+ <li>st/vega: Simplify radial gradient.</li>
+ <li>st/vega: Remove st_inlines.h.</li>
+ <li>st/vega: Delay blend texture creation until needed.</li>
+ <li>st/vega: Create drawing surface mask as needed.</li>
+ <li>st/vega: Initialize pipe states with renderer.</li>
+ <li>st/vega: Avoid unnecessary constant bufer upload.</li>
+ <li>st/vega: Destroy the pipe context with vg_context.</li>
+ <li>st/vega: polygon_array requires a deep free.</li>
+ <li>st/egl: Set pipe_resource::array_size to 1.</li>
+ <li>st/vega: Set pipe_resource::array_size to 1.</li>
+ <li>st/vega: Move vertex transformation to shader.</li>
+ <li>st/vega: Add a missing break.</li>
+ <li>st/vega: Add some comments to pipeline shaders.</li>
+ <li>st/vega: Refactor blend shaders.</li>
+ <li>st/vega: Move masking after blending.</li>
+ <li>st/vega: Add support for per-channel alpha.</li>
+ <li>st/vega: Blending should use premultiplied alpha.</li>
+ <li>st/vega: Fix VG_BLEND_MULTIPLY.</li>
+ <li>st/vega: Add blend shaders for all blend modes.</li>
+ <li>st/vega: Fix pipe blend state for various blend modes.</li>
+ <li>egl: _eglFilterArray should not allocate.</li>
+ <li>mapi: Rewrite mapi_abi.py to get rid of preprocessor magic.</li>
+ <li>vbo: Drop second ATTR macro.</li>
+ <li>vbo: Fix GLES2 glVertexAttrib.</li>
+ <li>mesa: Do not advertise GL_OES_texture_3D.</li>
+ <li>mesa: Fix GL_FIXED arrays.</li>
+ <li>mesa: Fix glTexCoordPointer with type GL_FIXED.</li>
+ <li>st/egl: Plug pbuffer leaks.</li>
+ <li>st/egl: Fix eglCopyBuffers.</li>
+ <li>st/egl: Assorted fixes for dri2_display_get_configs.</li>
+ <li>docs/egl: Update egl.html.</li>
+ <li>st/egl: Fix eglChooseConfig when configs is NULL.</li>
+ <li>docs: Add an example for EGL_DRIVERS_PATH.</li>
+ <li>autoconf: Fix --with-driver=xlib --enable-openvg.</li>
+</ul></p>
+
+<p>Chris Wilson (2):
+<ul>
+ <li>i915g: Fix closure of full batch buffers</li>
+ <li>intel: Check for unsupported texture when finishing using as a render target</li>
+</ul></p>
+
+<p>Christoph Bumiller (80):
+<ul>
+ <li>nv50: import new compiler</li>
+ <li>nouveau: update nouveau_class.h</li>
+ <li>nv50: introduce the big formats table</li>
+ <li>nv50: don't produce MOV immediate to output reg in store opt</li>
+ <li>nv50: change back accidentally swapped UNORM,SNORM vertex type</li>
+ <li>nv50: add/fix some license headers</li>
+ <li>nv50: simple reload elimination and local CSE</li>
+ <li>nv50: fix constant_operand opt mul by 2 case</li>
+ <li>nv50: permit usage of undefined TGSI TEMPs</li>
+ <li>nv50: add missing 2nd source for POW multiplication</li>
+ <li>nv50: add signed RGTC1 to format table, allow 2_10_10_10 for vbufs</li>
+ <li>nv50: fix for empty BBs</li>
+ <li>nv50: insert MOVs also for PHI sources from dominating block</li>
+ <li>nv50: explicitly set src type for SET ops</li>
+ <li>nv50: fixes for nested IFs</li>
+ <li>nv50: don't eliminate loads to dedicated values</li>
+ <li>nv50: fix constbuf validation</li>
+ <li>nv50: build proper phi functions in the first place</li>
+ <li>nv50: fix reg count</li>
+ <li>nv50: begin implementing loops</li>
+ <li>nv50: more constant folding</li>
+ <li>nv50: loops part 2</li>
+ <li>nv50: flatten simple IF/ELSE/ENDIF constructs</li>
+ <li>nv50: fix thinko in store to output reg possible check</li>
+ <li>nv50: generate JOINs for outermost IF clauses</li>
+ <li>nv50: more TGSI opcodes (SIN, SCS, ARL, RET, KILP)</li>
+ <li>nv50: fix PSIZ and PRIMID mapping</li>
+ <li>nv50: check dst compatibility in CSE</li>
+ <li>nv50: initialize edgeflag input index</li>
+ <li>nv50: emit predicate for interp</li>
+ <li>Merge remote branch 'origin/master' into nv50-compiler</li>
+ <li>nv50: DP2, fix ARL</li>
+ <li>nv50: yet another case we need a nop.exit</li>
+ <li>nv50: fix check for sprite/point coord enable</li>
+ <li>nv50: handle TEXTURE_SWIZZLE and GEOMETRY_SHADER4 caps</li>
+ <li>nv50: set the FragDepth output index</li>
+ <li>nv50: turn off verbose debug output by default</li>
+ <li>nv50: attempt at making more complicated loops work</li>
+ <li>nv50: SSG</li>
+ <li>nv50: make FrontFacing -1 or +1</li>
+ <li>nv50: re-add proper TEXBIAS sequence</li>
+ <li>nv50: make use of TGSI immediate type</li>
+ <li>nv50: must join SELECT inputs before MOV inputs</li>
+ <li>nv50: fix XPD, was negated</li>
+ <li>nv50: fix find_dom_frontier</li>
+ <li>nv50: fix build-predicate function</li>
+ <li>Merge remote branch 'origin/master' into nv50-compiler</li>
+ <li>nv50: load address register before using it, not after</li>
+ <li>nv50: save tgsi instructions</li>
+ <li>nv50: prepare for having multiple functions</li>
+ <li>nv50: don't parse again in tgsi_2_nc</li>
+ <li>nv50: use actual loads/stores if TEMPs are accessed indirectly</li>
+ <li>nv50: create value references with the right type</li>
+ <li>nv50: duplicate interps in load_proj_tex_coords</li>
+ <li>nv50: address regs are 16 bit</li>
+ <li>nv50: fix can_load check for 3rd source</li>
+ <li>nv50: reduce bb_reachable_by runtime from pot to linear</li>
+ <li>nv50: minor compiler fixes and cleanups</li>
+ <li>nv50: cannot move from local mem to output reg directly</li>
+ <li>nv50: newlines in shader bincode printing</li>
+ <li>nv50: match TEMP limit with nv50 ir builder</li>
+ <li>nv50: handle TGSI EXP and LOG again</li>
+ <li>nv50: check for immediates when turning MUL ADD into MAD</li>
+ <li>nv50: interp cannot write flags reg</li>
+ <li>nv50: MOV TEMP[0], -CONST[0] must be float32 negation</li>
+ <li>nv50: fix indirect CONST access with large or negative offsets</li>
+ <li>nv50: fix TXP depth comparison value</li>
+ <li>nv50: consider address register in reload elimination</li>
+ <li>nv50: improve and fix modifier folding optimization</li>
+ <li>nv50: put low limit on REG_ALLOC_TEMP and FP_RESULT_COUNT</li>
+ <li>Merge remote branch 'origin/nv50-compiler'</li>
+ <li>nv50: don't segfault on shaders with 0 instructions</li>
+ <li>nv50: get shader fixups/relocations into working state</li>
+ <li>nv50: add relocs for stack and local mem buffers</li>
+ <li>nv50: emit constbuf relocs before uploading constants</li>
+ <li>nv50: fix typo in fifo packet length limit</li>
+ <li>nv50: use formats table in nv50_surface.c</li>
+ <li>nv50: use CLEAR_BUFFERS for surface fills</li>
+ <li>nv50: fix/handle a few more PIPE_CAPs</li>
+ <li>nv50: fix GP state bind and validate</li>
+</ul></p>
+
+<p>Corbin Simpson (8):
+<ul>
+ <li>r600g: Use align() instead of handrolled code.</li>
+ <li>r600g: Trivially deobfuscate r600_hw_states.</li>
+ <li>r600g: Deobfuscate and comment a few more functions in r600_hw_states.</li>
+ <li>r600g: Clean up some indentation and |= vs. | usage.</li>
+ <li>r600g: Fix false and true.</li>
+ <li>r600g: "tmp" is such a bad name for a texture.</li>
+ <li>r600g: Clean up PS setup.</li>
+ <li>r600g: Cleanup viewport floats.</li>
+</ul></p>
+
+<p>Daniel Lichtenberger (1):
+<ul>
+ <li>radeon: fix potential segfault in renderbuffer update</li>
+</ul></p>
+
+<p>Daniel Vetter (21):
+<ul>
+ <li>r200: revalidate after radeon_update_renderbuffers</li>
+ <li>i915g: rip out -&gt;sw_tiled</li>
+ <li>i915g: s/hw_tiled/tiling</li>
+ <li>i915g: add pineview pci ids</li>
+ <li>i915g: kill RGBA/X formats</li>
+ <li>i915g: kill buf-&gt;map_gtt</li>
+ <li>i915g: kill idws-&gt;pool</li>
+ <li>i915g: drop alignment parameter from iws-&gt;buffer_create</li>
+ <li>i915g: add winsys function to create tiled buffers</li>
+ <li>i915g: switch to tiled allocations, kill set_fence</li>
+ <li>i915g: prepare winsys/batchbuffer for execbuf2</li>
+ <li>i915g: return tiling in iws-&gt;buffer_from_handle</li>
+ <li>i915g: implement unfenced color&amp;depth buffer using tiling bits</li>
+ <li>i915g: implement unfenced relocs for textures using tiling bits</li>
+ <li>i915g: postpone mipmap/face offset calculation</li>
+ <li>i915g: don't pot-align stride for tiled buffers</li>
+ <li>i915g: enable X-tiling for textures</li>
+ <li>i915g: switch rendering to mipmapped textures to (x,y) offsets</li>
+ <li>i915g: enable x-tiling for render targets</li>
+ <li>i915g: assert(depth_surface-&gt;offset == 0)</li>
+ <li>i915g: track TODO items</li>
+</ul></p>
+
+<p>Dave Airlie (182):
+<ul>
+ <li>r300g: fix buffer reuse issue caused by previous commit</li>
+ <li>r600g: pull r600_draw struct out into header</li>
+ <li>r600g: use index min/max + index buffer offset.</li>
+ <li>r600g: add vgt dma src defines</li>
+ <li>r600g: fixup texture state on evergreen.</li>
+ <li>r600g: fix texture bos and avoid doing depth blit on evergreen</li>
+ <li>r600g: hide radeon_ctx inside winsys.</li>
+ <li>r600g: attempt to abstract kernel bos from pipe driver.</li>
+ <li>r600g: move constant buffer creation behind winsys abstraction.</li>
+ <li>r600g: use malloc bufmgr for constant buffers</li>
+ <li>r600g: add support for kernel bo</li>
+ <li>r600g: add winsys bo caching.</li>
+ <li>r600g: add upload manager support.</li>
+ <li>r600g: fixup map flushing.</li>
+ <li>r600g: use calloc for ctx bo allocations</li>
+ <li>r600g: oops got the use_mem_constant the wrong way around.</li>
+ <li>r600g; add uses waterfall to asm cf for r6xx.</li>
+ <li>r600g: only emit uses waterfall on r6xx hw.</li>
+ <li>util/r300g: split the r300 index buffer modifier functions out to util</li>
+ <li>r600g: modify index buffers for sizes the hw can't deal with.</li>
+ <li>r600g: send correct surface base update for multi-cbufs</li>
+ <li>r600g: fix fbo-drawbuffers-maxtargets</li>
+ <li>r600g: clean up valgrind issues on maxtargets test.</li>
+ <li>r600g: drop debugging that snuck in</li>
+ <li>r600g: fix tiling support for ddx supplied buffers</li>
+ <li>r600g: add z16 to color setup</li>
+ <li>r600g: add color/texture support for more depth formats.</li>
+ <li>r600g: fix r700 cube map sizing.</li>
+ <li>r600g: fixup r700 CB_SHADER_CONTROL register.</li>
+ <li>r600g: add missing BC_INST wrapper for evergreen</li>
+ <li>r600g: only flush for the correct colorbuffer, not all of them.</li>
+ <li>r600g: deal with overflow of VTX/TEX CF clauses.</li>
+ <li>r600g: set back to correct codepaths.</li>
+ <li>r600g: fixup evergreen miptree setup.</li>
+ <li>r600g: fix eg texture borders.</li>
+ <li>r600g: fix typo in struct member name</li>
+ <li>r600g: cleanup some of the DB blit code</li>
+ <li>r600g: make stencil readback work</li>
+ <li>r600g: disable dirty handling on texture from depth code.</li>
+ <li>r600g: use floats instead of hex for blit vbo</li>
+ <li>r600g: fix depth readback on rv610 and other quirky variants.</li>
+ <li>r600g: fix typo in evergreen register list</li>
+ <li>u_blitter: add a custom blitter call passing a dsa cso</li>
+ <li>r600g: use blitter to do db-&gt;cb flushing.</li>
+ <li>r600g: fix warnings since last commit.</li>
+ <li>egl: fix build since 17eace581d25a626a7d75d9d1205d012cbb14a6e</li>
+ <li>r300g: fix point sprite coord.</li>
+ <li>r600g: add vert support for 16/16 and 16/16/16 floats.</li>
+ <li>r600g: add some more vertex format support.</li>
+ <li>r600g: some more vertex formats</li>
+ <li>r600g: fix draw-elements and draw-elements-base-vertex</li>
+ <li>r600g: drop index_offset parameter to index buffer translate.</li>
+ <li>r600g: fixup tex wrapping.</li>
+ <li>r600g: fixup VP-&gt;FP output-&gt;input routing.</li>
+ <li>r600g: fix typo in r700 alu emit</li>
+ <li>r600g: fixup sprite coord enable.</li>
+ <li>r600g: fix polygon mode</li>
+ <li>mesa/mipmap: fix warning since 1acadebd6270d3604b026842b8a21360968618a0</li>
+ <li>r600g: add eg poly mode code.</li>
+ <li>r600g: make index bias fix for evergreen</li>
+ <li>r600g: add eg db count control register.</li>
+ <li>r300g: fix glsl-fs-pointcoord</li>
+ <li>r600g: add evergreen texture resource properly.</li>
+ <li>r600g: fix db flush breaking config state</li>
+ <li>r600g: on evergreen the centroid isn't set in this register.</li>
+ <li>r600g: add back evergreen name.</li>
+ <li>r600g: add evergreen texture border support to new path</li>
+ <li>r600g: move radeon.h members around to add back map flushing.</li>
+ <li>r600g: add initial vertex translate support.</li>
+ <li>r600g: remove old assert from new codepath</li>
+ <li>Revert "r600g: add initial vertex translate support."</li>
+ <li>r600g: port r300g fix for X* formats in texformat code</li>
+ <li>r600g: add L8A8 unorm.</li>
+ <li>r600g: clean up some code from move to new paths.</li>
+ <li>r600g: return string for chip family</li>
+ <li>r600g: use Elements macro instead of manual sizeofs</li>
+ <li>r600g: fix evergreen depth flushing.</li>
+ <li>r600g: add winsys support for CTL constants.</li>
+ <li>r600g: drop depth quirk on evergreen</li>
+ <li>r600g: add reloc for evergreen color attrib</li>
+ <li>r600g: realign evergreen code with r600 code.</li>
+ <li>r600g: add assembler support for other vtx fetch fields.</li>
+ <li>r600g: fixup vertex format picking.</li>
+ <li>r600g: sync vertex/texture cache on resources on evergreen</li>
+ <li>r600g: add cb flushing for extra buffers + depth buffer on r600/evergreen</li>
+ <li>r600g: fix evergreen draw-buffers</li>
+ <li>r600g: flush SH cache on constant change on evergreen</li>
+ <li>r600g: only set the Z export if shader exports it.</li>
+ <li>r600g: setup basic loop consts on r600 + evergreen.</li>
+ <li>mesa/st: initial attempt at RG support for gallium drivers</li>
+ <li>r600g: break out of search for reloc bo after finding it.</li>
+ <li>r600g: the code to check whether a new vertex shader is needed was wrong</li>
+ <li>r600g: fix wwarning in bo_map function</li>
+ <li>r600g: TODO domain management</li>
+ <li>r600g: add bo fenced list.</li>
+ <li>pb: don't keep checking buffers after first busy</li>
+ <li>r600g: add bo busy backoff.</li>
+ <li>r600g: drop mman allocator</li>
+ <li>r600g: drop use_mem_constant.</li>
+ <li>r600g: avoid unneeded bo wait</li>
+ <li>pb: fix numDelayed accounting</li>
+ <li>r600g: add evergreen stencil support.</li>
+ <li>r600g: use format from the sampler view not from the texture.</li>
+ <li>r600g: fix Z export enable bits.</li>
+ <li>r600g: add some RG texture format support.</li>
+ <li>r600g: drop width/height per level storage.</li>
+ <li>r600g: fix input/output Z export mixup for evergreen.</li>
+ <li>r600g: evergreen has no request size bit in texture word4</li>
+ <li>r600g: enable vertex samplers.</li>
+ <li>r600g: add TXL opcode support.</li>
+ <li>r600g: don't run with scissors.</li>
+ <li>r600g: fix typo in vertex sampling on r600</li>
+ <li>gallium/tgsi: add support for stencil writes.</li>
+ <li>gallium/format: add support for X24S8 and S8X24 formats.</li>
+ <li>gallium/format: add X32_S8X24_USCALED format.</li>
+ <li>gallium/util: add S8 tile sampling support.</li>
+ <li>mesa: add support for FRAG_RESULT_STENCIL.</li>
+ <li>mesa: improve texstore for 8/24 formats and add texstore for S8.</li>
+ <li>softpipe: add support for shader stencil export capability</li>
+ <li>st/mesa: add option to choose a texture format that we won't render to.</li>
+ <li>st/mesa: use shader stencil export to accelerate shader drawpixels.</li>
+ <li>r600g: add support for S8, X24S8 and S8X24 sampler formats.</li>
+ <li>r600g: add shader stencil export support.</li>
+ <li>glsl: add support for shader stencil export</li>
+ <li>st/mesa: enable stencil shader export extension if supported</li>
+ <li>r600g: fix depth0 setting</li>
+ <li>r600g: fix scissor/cliprect confusion</li>
+ <li>r600g: store samplers/views across blit when we need to modify them</li>
+ <li>r600g: reduce size of context structure.</li>
+ <li>r600g: the vs/ps const arrays weren't actually being used.</li>
+ <li>r600g: add copy into tiled texture</li>
+ <li>r600g: split out miptree setup like r300g</li>
+ <li>r600g: use common texture object create function</li>
+ <li>r600g: rename pitch in texture to pitch_in_bytes</li>
+ <li>r600g: remove bpt and start using pitch_in_bytes/pixels.</li>
+ <li>r600g: fix transfer stride.</li>
+ <li>r600g: drop all use of unsigned long</li>
+ <li>r600g: use blitter for hw copy region</li>
+ <li>r600g: evergreen add stencil export bit</li>
+ <li>r600g: add missing eg reg definition</li>
+ <li>r600g: fix stencil export for evergreen harder</li>
+ <li>r600g: drop unused context members</li>
+ <li>r600g: only pick centroid coordinate when asked.</li>
+ <li>r600g: fixup pos/face ena/address properly</li>
+ <li>r600g: fixup typo in macro name</li>
+ <li>r600g: select linear interpolate if tgsi input requests it</li>
+ <li>r300g: clean up warning due to unknown cap.</li>
+ <li>tgsi: add scanner support for centroid inputs</li>
+ <li>r600g: evergreen interpolation support.</li>
+ <li>r600g: add evergreen ARL support.</li>
+ <li>r600g: switch to a common formats.h file since they are in different regs</li>
+ <li>r600g: add defines for tiling</li>
+ <li>r600g: get tiling info from kernel</li>
+ <li>r600g: set tiling bits in hw state</li>
+ <li>r600g: do proper tracking of views/samplers.</li>
+ <li>r600g: fix typo in tiling setup cb code.</li>
+ <li>r600g: depth needs to bound to ds</li>
+ <li>r600g: attempt to cleanup depth blit</li>
+ <li>r600g: fix transfer function for tiling.</li>
+ <li>r600g: retrieve tiling info from kernel for shared buffers.</li>
+ <li>r600g: all non-0 mipmap levels need to be w/h aligned to POT.</li>
+ <li>r600g: move to per-miplevel array mode.</li>
+ <li>r600g: start adding hooks for aligning width/height for tiles.</li>
+ <li>r600g: add r600 surface to store the aligned height.</li>
+ <li>r600g: introduce a per-driver resource flag for transfers.</li>
+ <li>r600g: add texture tiling alignment support.</li>
+ <li>r600g: add texture tiling enable under a debug option.</li>
+ <li>r600g: initial translate state support</li>
+ <li>r600g: start splitting out common code from eg/r600.</li>
+ <li>r600g: not fatal if we can't get tiling info from kernel</li>
+ <li>r600g: merge more of the common r600/evergreen state handling</li>
+ <li>r600g: drop more common state handling code</li>
+ <li>r600g: fix magic 0x1 -&gt;flat shade ena</li>
+ <li>r600g: add assembler support for all the kcache fields.</li>
+ <li>gallium/noop: report GL 2.1</li>
+ <li>r600g: pick correct color swap for A8 fbos.</li>
+ <li>r300g/r600g: bump cache manager timeouts to 1s</li>
+ <li>r600g: it looks like r600 can handle dword offsets in the indices.</li>
+ <li>r300g: try and use all of vertex constant space</li>
+ <li>r300g: fixup rs690 tiling stride alignment calculations.</li>
+ <li>r600g: fix evergreen segfaults.</li>
+ <li>r600g: hack around property unknown issues.</li>
+</ul></p>
+
+<p>Eric Anholt (300):
+<ul>
+ <li>glsl: Add definition of gl_TextureMatrix inverse/transpose builtins.</li>
+ <li>i965: Share the KIL_NV implementation between glsl and non-glsl.</li>
+ <li>i965: Also enable CC statistics when doing OQs.</li>
+ <li>i965: Track the windowizer's dispatch for kill pixel, promoted, and OQ</li>
+ <li>glsl: Rework assignments with write_masks to have LHS chan count match RHS.</li>
+ <li>glsl: Fix copy'n'wasted ir_noop_swizzle conditions.</li>
+ <li>ir_to_mesa: Only compare vector_elements present for any_nequal/all_equal</li>
+ <li>i965: Fix the vector/expression splitting for the write_mask change.</li>
+ <li>i965: When splitting vector variable assignment, ignore unset channels.</li>
+ <li>i965: Update expression splitting for the vector-result change to compares.</li>
+ <li>i965: Warning fix for vector result any_nequal/all_equal change.</li>
+ <li>mesa: Remove the non-required ARB_imaging extension.</li>
+ <li>mesa: Remove EXT_histogram.</li>
+ <li>mesa: Remove SGI_color_table.</li>
+ <li>mesa: Remove SGI_color_matrix.</li>
+ <li>mesa: Remove EXT_convolution.</li>
+ <li>intel: Remove disabled stencil drawpixels acceleration.</li>
+ <li>intel: Remove unnecessary minimum pitch alignment to 32 bytes.</li>
+ <li>intel: Replace my intel_texture_bitmap code with _mesa_meta_Bitmap.</li>
+ <li>radeon: Remove copied minimum pitch alignment code.</li>
+ <li>unichrome: Mostly revert my convolution removal changes.</li>
+ <li>intel: Remove dead intelIsTextureResident().</li>
+ <li>i915: Remove a dead if (0) block.</li>
+ <li>intel: Dead comment removal.</li>
+ <li>intel: Corresponding FinishRenderTexture debug to BeginRenderTexture.</li>
+ <li>i965: Add support for rendering to SARGB8 FBOs.</li>
+ <li>intel: Fix segfault on INTEL_DEBUG=fbo with unsupported framebuffers.</li>
+ <li>intel: Add fallback debug to glGenerateMipmap.</li>
+ <li>intel: More reverting of the sw fallback for depth texture border color.</li>
+ <li>intel: Improve some of the miptree debugging.</li>
+ <li>mesa: Fix type typo in glGenerateMipmap handling of GL_UNSIGNED_INT data.</li>
+ <li>glsl: Fix broadcast_index of lower_variable_index_to_cond_assign.</li>
+ <li>glsl: Add validation that a swizzle only references valid channels.</li>
+ <li>i965: Fix up writemasked assignments in the new FS.</li>
+ <li>i965: Remove swizzling of assignment to vector-splitting single-channel LHS.</li>
+ <li>i965: Handle all_equal/any_nequal in the new FS.</li>
+ <li>i965: Fix vector splitting RHS channel selection with sparse writemasks.</li>
+ <li>i965: Add support for dFdx()/dFdy() to the FS backend.</li>
+ <li>i965: Add support for attribute interpolation on Sandybridge.</li>
+ <li>i965: Set up inputs to the fragment shader according to FP InputsRead.</li>
+ <li>i965: Add support for POW in gen6 FS.</li>
+ <li>i965: Fix negation in the new FS backend.</li>
+ <li>i965: Actually track the "if" depth in loop in the new FS backend.</li>
+ <li>i965: Apply the same set of lowering passes to new FS as to Mesa IR.</li>
+ <li>i965: Fix valgrind complaint about base_ir for new FS debugging.</li>
+ <li>i965: Fix up the FS backend for the variable array indexing pass.</li>
+ <li>i965: Set the variable type when dereferencing an array.</li>
+ <li>i965: Add support for dereferencing structs to the new FS backend.</li>
+ <li>i965: Add support for struct, array, and matrix uniforms to FS backend.</li>
+ <li>i965: Fix all non-snb regression in the snb attribute interpolation commit.</li>
+ <li>i965: Fix up part of my Sandybridge attributes support patch.</li>
+ <li>i965: Add support for gl_FrontFacing to the new FS backend.</li>
+ <li>i965: Subtract instead of adding when computing y delta in new FS backend.</li>
+ <li>mesa: Pull ir_to_mesa's sampler number fetcher out to shared code.</li>
+ <li>i965: Set up sampler numbers in the FS backend.</li>
+ <li>i965: Add support for non-color render target write data to new FS backend.</li>
+ <li>i965: Add support for MRT to the new FS backend.</li>
+ <li>i965: Add support for ir_loop counters to the new FS backend.</li>
+ <li>i965: Add support for ARB_fragment_coord_conventions to the new FS backend.</li>
+ <li>glsl: Also update implicit sizes of varyings at link time.</li>
+ <li>i965: Do interpolation for varying matrices and arrays in the FS backend.</li>
+ <li>i965: Don't try to emit interpolation for unused varying slots.</li>
+ <li>i965: Fix array indexing of arrays of matrices.</li>
+ <li>i965: Clean up obsolete FINISHME comment.</li>
+ <li>mesa: Move the list of builtin uniform info from ir_to_mesa to shared code.</li>
+ <li>i965: Add support for builtin uniforms to the new FS backend.</li>
+ <li>i965: Fix use of undefined mem_ctx in vector splitting.</li>
+ <li>i956: Make new FS discard do its work in a temp, not the null reg!</li>
+ <li>i965: Clean up the virtual GRF handling.</li>
+ <li>ra: First cut at a graph-coloring register allocator for mesa.</li>
+ <li>i965: First cut at register allocation using graph coloring.</li>
+ <li>i965: Add live interval analysis and hook it up to the register allocator.</li>
+ <li>i965: Remove my "safety counter" code from loops.</li>
+ <li>i965: Fix whole-structure/array assignment in new FS.</li>
+ <li>mesa: Don't reference a W component in setting up a vec3 uniform component.</li>
+ <li>i965: Fix new FS handling of builtin uniforms with packed scalars in structs.</li>
+ <li>glsl: Add a lowering pass for texture projection.</li>
+ <li>i965: Use the lowering pass for texture projection.</li>
+ <li>i965: Split the gen4 and gen5 sampler handling apart.</li>
+ <li>i965: Add gen6 attribute interpolation to new FS backend.</li>
+ <li>i965: Fix the gen6 jump size for BREAK/CONT in new FS.</li>
+ <li>i965: Also increment attribute location when skipping unused slots.</li>
+ <li>i965: Pre-gen6, map VS outputs (not FS inputs) to URB setup in the new FS.</li>
+ <li>i965: Add real support for pre-gen5 texture sampling to the new FS.</li>
+ <li>i965: Fix up copy'n'pasteo from moving coordinate setup around for gen4.</li>
+ <li>i965: Restore the forcing of aligned pairs for delta_xy on chips with PLN.</li>
+ <li>i965: When producing a single channel swizzle, don't make a temporary.</li>
+ <li>i965: Add a sanity check for register allocation sizes.</li>
+ <li>i965: Fix off-by-ones in handling the last members of register classes.</li>
+ <li>i965: Don't try to emit code if we failed register allocation.</li>
+ <li>i965: Add support for EXT_texture_swizzle to the new FS backend.</li>
+ <li>i965: Set up swizzling of shadow compare results for GL_DEPTH_TEXTURE_MODE.</li>
+ <li>i965: Fix glean/texSwizzle regression in previous commit.</li>
+ <li>i965: Be more conservative on live interval calculation.</li>
+ <li>i965: Add trivial dead code elimination in the new FS backend.</li>
+ <li>i965: Add initial folding of constants into operand immediate slots.</li>
+ <li>i965: In disasm, gen6 fb writes don't put msg reg # in destreg_conditionalmod.</li>
+ <li>i965: Add support for gen6 FB writes to the new FS.</li>
+ <li>i965: Enable the constant propagation code.</li>
+ <li>i965: Also do constant propagation for the second operand of CMP.</li>
+ <li>i965: Add back gen6 headerless FB writes to the new FS backend.</li>
+ <li>i965: Gen6 no longer has the IFF instruction; always use IF.</li>
+ <li>i965: Fix up IF/ELSE/ENDIF for gen6.</li>
+ <li>i965: Fix botch in the header_present case in the new FS.</li>
+ <li>i965: Add some clarification of the WECtrl field.</li>
+ <li>i965: Don't do 1/w multiplication in new FS for gen6</li>
+ <li>i965: Gen6's sampler messages are the same as Ironlake.</li>
+ <li>i965: Refactor gl_FrontFacing setup out of general variable setup.</li>
+ <li>i965: Add support for gl_FrontFacing on gen6.</li>
+ <li>i965: Don't assume that WPOS is always provided on gen6 in the new FS.</li>
+ <li>i965: Fix gen6 pointsize handling to match pre-gen6.</li>
+ <li>i965: Disable emitting if () statements on gen6 until we really fix them.</li>
+ <li>i965: Normalize cubemap coordinates like is done in the Mesa IR path.</li>
+ <li>mesa: Simplify a bit of _mesa_add_state_reference using memcmp.</li>
+ <li>i965: Drop the check for duplicate _mesa_add_state_reference.</li>
+ <li>i965: Drop the check for YUV constants in the param list.</li>
+ <li>i965: Handle swizzles in the addition of YUV texture constants.</li>
+ <li>i965: Fix gen6 WM push constants updates.</li>
+ <li>i965: Fix new FS gen6 interpolation for sparsely-populated arrays.</li>
+ <li>i965: Enable attribute swizzling (repositioning) in the gen6 SF.</li>
+ <li>i965: Add register coalescing to the new FS backend.</li>
+ <li>i965: Split FS_OPCODE_DISCARD into two steps.</li>
+ <li>i965: Reduce register interference checks for changed FS_OPCODE_DISCARD.</li>
+ <li>i965: Move FS backend structures to a header.</li>
+ <li>i965: Give the math opcodes information on base mrf/mrf len.</li>
+ <li>i965: Give the FB write and texture opcodes the info on base MRF, like math.</li>
+ <li>i965: Compute to MRF in the new FS backend.</li>
+ <li>i965: Don't consider gen6 math instructions to write to MRFs.</li>
+ <li>i965: Add a couple of checks for gen6 math instruction limits.</li>
+ <li>i965: Don't compute-to-MRF in gen6 math instructions.</li>
+ <li>i965: Expand uniform args to gen6 math to full registers to get hstride == 1.</li>
+ <li>i965: Don't compute-to-MRF in gen6 VS math.</li>
+ <li>i965: Fix gen6 pixel_[xy] setup to avoid mixing int and float src operands.</li>
+ <li>i965: Always use the new FS backend on gen6.</li>
+ <li>i965: Fix missing "break;" in i2b/f2b, and missing AND of CMP result.</li>
+ <li>intel: Allow CopyTexSubImage to InternalFormat 3/4 textures, like RGB/RGBA.</li>
+ <li>i965: Don't rebase the index buffer to min 0 if any arrays are in VBOs.</li>
+ <li>i965: Add support for rescaling GL_TEXTURE_RECTANGLE coords to new FS.</li>
+ <li>i965: Set class_sizes[] for the aligned reg pair class.</li>
+ <li>i965: Update the live interval when coalescing regs.</li>
+ <li>i965: Add a pass to the FS to split virtual GRFs to float channels.</li>
+ <li>i965: Add a function for handling the move of boolean values to flag regs.</li>
+ <li>i965: Add peepholing of conditional mod generation from expressions.</li>
+ <li>i965: Enable the new FS backend on pre-gen6 as well.</li>
+ <li>i965: Fix texturing on pre-gen5.</li>
+ <li>i965: Set the type of the null register to fix gen6 FS comparisons.</li>
+ <li>i965: Disable the debug printf I added for FS disasm.</li>
+ <li>i965: Fix a weirdness in NOT handling.</li>
+ <li>i965: Fix assertion failure on gen6 BufferSubData to busy BO.</li>
+ <li>i965: Assert out on gen6 VS constant buffer reads that hang the GPU for now.</li>
+ <li>i965: Fix scissor-offscreen on gen6 like we did pre-gen6.</li>
+ <li>i965: Avoid blits in BufferCopySubdata on gen6.</li>
+ <li>i965: Tell the shader compiler when we expect depth writes for gen6.</li>
+ <li>i965: Remove the gen6 emit_mi_flushes I sprinkled around the driver.</li>
+ <li>i965: Disable thread dispatch when the FS doesn't do any work.</li>
+ <li>i965: Add EU emit support for gen6's new IF instruction with comparison.</li>
+ <li>i965: Set the source operand types for gen6 if/else/endif to integer.</li>
+ <li>i965: Use the new style of IF statement with embedded comparison on gen6.</li>
+ <li>i965: Split register allocation out of the ever-growing brw_fs.cpp.</li>
+ <li>i965: Fix gl_FrontFacing emit on pre-gen6.</li>
+ <li>i965: Add support for register spilling.</li>
+ <li>i965: Don't emit register spill offsets directly into g0.</li>
+ <li>i965: Correct scratch space allocation.</li>
+ <li>i965: Be more aggressive in tracking live/dead intervals within loops.</li>
+ <li>i965: Move the FS disasm/annotation printout to codegen time.</li>
+ <li>i965: Add support for pull constants to the new FS backend.</li>
+ <li>i965: Add EU code for dword scattered reads (constant buffer array indexing).</li>
+ <li>i965: Clarify an XXX comment in FB writes with real info.</li>
+ <li>i965: Use SENDC on the first render target write on gen6.</li>
+ <li>i965: Clear some undefined fields of g0 when using them for gen6 FB writes.</li>
+ <li>i965: Add disasm for the flag register.</li>
+ <li>i965: Add support for discard instructions on gen6.</li>
+ <li>i965: Handle new ir_unop_round_even in channel expression splitting.</li>
+ <li>i965: Fix typo in comment about state flags.</li>
+ <li>i965: Set up the constant buffer on gen6 when it's needed.</li>
+ <li>i965: Add support for constant buffer loads on gen6.</li>
+ <li>i965: Drop the eot argument to read messages, which can never be set.</li>
+ <li>i965: Fix VS URB entry sizing.</li>
+ <li>i965: Disable register spilling on gen6 until it's fixed.</li>
+ <li>i965: Make FS uniforms be the actual type of the uniform at upload time.</li>
+ <li>i965: Add user clip planes support to gen6.</li>
+ <li>i965: Update gen6 SF state when point state (sprite or attenuation) changes.</li>
+ <li>i965: Upload required gen6 VS push constants even when using pull constants.</li>
+ <li>i965: Update the gen6 stencil ref state when stencil state changes.</li>
+ <li>mesa: Make metaops use program refcounts instead of names.</li>
+ <li>mesa: Don't compute an unused texture completeness debug string.</li>
+ <li>intel: For batch, use GTT mapping instead of writing to a malloc and copying.</li>
+ <li>intel: Annotate debug printout checks with unlikely().</li>
+ <li>intel: Remove the magic unaligned memcpy code.</li>
+ <li>i965: Remove dead intel_structs.h file.</li>
+ <li>intel: Avoid taking logbase2 of several things that we max.</li>
+ <li>intel: Remove duplicated teximage miptree to object miptree promotion.</li>
+ <li>intel: Remove leftover dri1 locking fields in the context.</li>
+ <li>mesa: Fix delayed state flagging for EXT_sso-related program changes.</li>
+ <li>intel: Fix the client-side swapbuffers throttling.</li>
+ <li>Revert "intel: Fix the client-side swapbuffers throttling."</li>
+ <li>i965: Allow OPCODE_SWZ to put immediates in the first arg.</li>
+ <li>i965: Add support for math on constants in gen6 brw_wm_glsl.c path.</li>
+ <li>i965: Work around strangeness in swizzling/masking of gen6 math.</li>
+ <li>i965: re-enable gen6 IF statements in the fragment shader.</li>
+ <li>glsl: Free the loop state context when we free the loop state.</li>
+ <li>i965: Fix gl_FragCoord inversion when drawing to an FBO.</li>
+ <li>i965: Shut up spurious gcc warning about GLSL_TYPE enums.</li>
+ <li>mesa: Don't spam the console in a debug build unless some spam is requested.</li>
+ <li>i965: Add state dumping for sampler state.</li>
+ <li>i965: Add dumping of the sampler default color.</li>
+ <li>i965: Fail on loops on gen6 for now until we write the EU emit code for it.</li>
+ <li>i965: Eliminate dead code more aggressively.</li>
+ <li>mesa: Include C++ files in the makedepend of DRI drivers.</li>
+ <li>i965: Fix compute_to_mrf to not move a MRF write up into another live range.</li>
+ <li>i965: Just use memset() to clear most members in FS constructors.</li>
+ <li>i965: Remove extra n at the end of every instruction in INTEL_DEBUG=wm.</li>
+ <li>i965: Fold constants into the second arg of BRW_SEL as well.</li>
+ <li>glsl: Add a helper function for determining if an rvalue could be a saturate.</li>
+ <li>i965: Recognize saturates and turn them into a saturated mov.</li>
+ <li>ir_to_mesa: Detect and emit MOV_SATs for saturate constructs.</li>
+ <li>i965: Improve compute-to-mrf.</li>
+ <li>i965: Remove duplicate MRF writes in the FS backend.</li>
+ <li>i965: Move gen4 blend constant color to the gen4 blending file.</li>
+ <li>i965: Don't upload polygon stipple unless required.</li>
+ <li>i965: Don't upload line stipple pattern unless we're stippling.</li>
+ <li>i965: Don't upload line smooth params unless we're line smoothing.</li>
+ <li>i965: Use the new embedded compare in SEL on gen6 for VS MIN and MAX opcodes.</li>
+ <li>i965: Fix type of gl_FragData[] dereference for FB write.</li>
+ <li>glsl: Make the symbol table's add_function just use the function's name.</li>
+ <li>glsl: Make the symbol table's add_variable just use the variable's name.</li>
+ <li>glsl: Add a helper constructor for expressions that works out result type.</li>
+ <li>glsl: Fix structure and array comparisions.</li>
+ <li>glsl: Quiet unreachable no-return-from-function warning.</li>
+ <li>i965: Dump the WHILE jump distance on gen6.</li>
+ <li>i965: Add support for gen6 DO/WHILE ISA emit.</li>
+ <li>i965: Add support for gen6 BREAK ISA emit.</li>
+ <li>i965: Add support for gen6 CONTINUE instruction emit.</li>
+ <li>i965: Enable IF statements in the VS.</li>
+ <li>i965: Add support for loops in the VS.</li>
+ <li>glsl: Mark the array access for whole-array comparisons.</li>
+ <li>glsl: Fix flipped return of has_value() for array constants.</li>
+ <li>mesa: Add getters for the rest of the supported draw buffers.</li>
+ <li>mesa: Add getters for ARB_copy_buffer's attachment points.</li>
+ <li>intel: Add an env var override to execute for a different GPU revision.</li>
+ <li>i965: Update gen6 WM state on compiled program change, not just FP change.</li>
+ <li>i965: Update gen6 SF state on fragment program change too.</li>
+ <li>i965: Fix compile warning about missing opcodes.</li>
+ <li>i965: Move payload reg setup to compile, not lookup time.</li>
+ <li>i965: Provide delta_xy reg to gen6 non-GLSL path PINTERP.</li>
+ <li>i965: Fix up 16-wide gen6 FB writes after various refactoring.</li>
+ <li>i965: Don't smash a group of coordinates doing gen6 16-wide sampler headers.</li>
+ <li>i965: Fix gen6 interpolation setup for 16-wide.</li>
+ <li>i965: Fix up gen6 samplers for their usage by brw_wm_emit.c</li>
+ <li>i965: Make the sampler's implied move on gen6 be a raw move.</li>
+ <li>i965: Align gen6 push constant size to dispatch width.</li>
+ <li>i965: Add support for the instruction compression bits on gen6.</li>
+ <li>i965: Nuke brw_wm_glsl.c.</li>
+ <li>i965: Remove INTEL_DEBUG=glsl_force now that there's no brw_wm_glsl.c</li>
+ <li>i965: Fix comment about gen6_wm_constants.</li>
+ <li>i965: Handle saturates on gen6 math instructions.</li>
+ <li>i965: Always hand the absolute value to RSQ.</li>
+ <li>i965: Add disabled debug code for dumping out the WM constant payload.</li>
+ <li>i965: Work around gen6 ignoring source modifiers on math instructions.</li>
+ <li>i965: Fix flipped value of the not-embedded-in-if on gen6.</li>
+ <li>i965: Don't try to store gen6 (float) blend constant color in bytes.</li>
+ <li>i965: Set up the color masking for the first drawbuffer on gen6.</li>
+ <li>i965: Set up the per-render-target blend state on gen6.</li>
+ <li>i965: Set the render target index in gen6 fixed-function/ARB_fp path.</li>
+ <li>i965: Use the new pixel mask location for gen6 ARB_fp KIL instructions.</li>
+ <li>i965: Drop KIL_NV from the ff/ARB_fp path since it was only used for GLSL.</li>
+ <li>i965: Drop push-mode reladdr constant loading and always use constant_map.</li>
+ <li>i965: Fix VS constants regression pre-gen6.</li>
+ <li>i965: Clean up VS constant buffer location setup.</li>
+ <li>i965: Set up the correct texture border color state struct for Ironlake.</li>
+ <li>i965: Set render_cache_read_write surface state bit on gen6 constant surfs.</li>
+ <li>i965: remove unused variable since brw_wm_glsl.c removal.</li>
+ <li>intel: Use plain R8 and RG8 for COMPRESSED_RED and COMPRESSED_RG.</li>
+ <li>intel: Set the swizzling for depth textures using the GL_RED depth mode.</li>
+ <li>glsl: Correct the marking of InputsRead/OutputsWritten on in/out matrices.</li>
+ <li>i965: Correct the dp_read message descriptor setup on g4x.</li>
+ <li>intel: Include stdbool so we can stop using GLboolean when we want to.</li>
+ <li>i965: Fix ARL to work on gen6.</li>
+ <li>i956: Fix the old FP path fragment position setup on gen6.</li>
+ <li>i965: Fix gl_FragCoord.z setup on gen6.</li>
+ <li>i965: Add support for using the BLT ring on gen6.</li>
+ <li>intel: Update renderbuffers before looking up CopyTexImage's read buffer.</li>
+ <li>intel: Drop commented intel_flush from copy_teximage.</li>
+ <li>intel: Try to sanely check that formats match for CopyTexImage.</li>
+ <li>intel: Support glCopyTexImage() from XRGB8888 to ARGB8888.</li>
+ <li>i965: Avoid using float type for raw moves, to work around SNB issue.</li>
+ <li>i965: Set the alternative floating point mode on gen6 VS and WM.</li>
+ <li>i965: Add support for gen6 constant-index constant loading.</li>
+ <li>i965: Add support for gen6 reladdr VS constant loading.</li>
+ <li>i965: Improve the hacks for ARB_fp scalar^scalar POW on gen6.</li>
+ <li>i965: Factor out the ir comparision to BRW_CONDITIONAL_* code.</li>
+ <li>i965: Fix regression in FS comparisons on original gen4 due to gen6 changes.</li>
+ <li>i965: Do lowering of array indexing of a vector in the FS.</li>
+ <li>intel: Only do frame throttling at glFlush time when using frontbuffer.</li>
+ <li>intel: Handle forced swrast clears before other clear bits.</li>
+ <li>intel: Use tri clears when we don't know how to blit clear the format.</li>
+ <li>intel: Add spans code for the ARB_texture_rg support.</li>
+ <li>intel: Add a couple of helper functions to reduce rb code duplication.</li>
+ <li>intel: Fix segfaults from trying to use _ColorDrawBuffers in FBO validation.</li>
+ <li>intel: When validating an FBO's combined depth/stencil, use the given FBO.</li>
+</ul></p>
+
+<p>Fabian Bieler (2):
+<ul>
+ <li>r600g: set address of pop instructions to next instruction</li>
+ <li>glsl: fix lowering conditional returns in subroutines</li>
+</ul></p>
+
+<p>Francisco Jerez (51):
+<ul>
+ <li>dri/nv04: Fix PGRAPH_ERRORs when running OA.</li>
+ <li>dri/nv04: Mipmapping fixes.</li>
+ <li>dri/nv04: Align SIFM transfer dimensions.</li>
+ <li>dri/nv04: Fix up color mask.</li>
+ <li>dri/nv04: Fix maximum texture size.</li>
+ <li>dri/nv04: Fix provoking vertex.</li>
+ <li>dri/nouveau: Update nouveau_class.h.</li>
+ <li>dri/nouveau: Add some more extensions.</li>
+ <li>dri/nouveau: Fix glRenderbufferStorage with DEPTH_COMPONENT as internal format.</li>
+ <li>dri/nouveau: Don't request a fake front unnecessarily.</li>
+ <li>dri/nouveau: Don't reemit the BO state in nouveau_state_emit().</li>
+ <li>dri/nouveau: Cleanup references to the old FBOs on glMakeCurrent().</li>
+ <li>meta: Don't bind the created texture object in init_temp_texture().</li>
+ <li>dri/nv10: Fix the CLAMP texture wrap mode.</li>
+ <li>dri/nv04: Use nvgl_wrap_mode().</li>
+ <li>dri/nouveau: Remove unnecessary assertion.</li>
+ <li>dri/nouveau: Cleanup more references to old FBOs and VBOs.</li>
+ <li>dri/nv10-nv20: Fix texturing in some cases after a base level change.</li>
+ <li>dri/nouveau: Fix software mipmap generation on 1x1 textures.</li>
+ <li>dri/nouveau: Have a smaller amount of larger scratch buffers.</li>
+ <li>dri/nouveau: Remove unnecessary flush.</li>
+ <li>dri/nv10: Use fast Z clears.</li>
+ <li>dri/nouveau: Minor cleanup.</li>
+ <li>dri/nv10: Fake fast Z clears for pre-nv17 cards.</li>
+ <li>dri/nouveau: Initialize tile_flags when allocating a render target.</li>
+ <li>nouveau: Get larger push buffers.</li>
+ <li>dri/nouveau: Force a "slow" Z clear if we're getting a new depth buffer.</li>
+ <li>dri/nv20: Clear with the 3D engine.</li>
+ <li>dri/nouveau: Don't assert(0) on compressed internal formats.</li>
+ <li>dri/nv25: Bind a hierarchical depth buffer.</li>
+ <li>dri/nouveau: Call _mesa_update_state() after framebuffer invalidation.</li>
+ <li>dri/nouveau: Honor the access flags in nouveau_bufferobj_map_range.</li>
+ <li>dri/nouveau: Tell the vbo module we want real hardware BOs.</li>
+ <li>dri/nouveau: Split out the scratch helpers to a separate file.</li>
+ <li>dri/nouveau: Avoid recursion in nouveau_bo_context_reset().</li>
+ <li>dri/nouveau: Use a macro to iterate over the bound vertex attributes.</li>
+ <li>dri/nouveau: Split out array handling to its own file.</li>
+ <li>dri/nouveau: Optimize VBO binding re-emission.</li>
+ <li>dri/nouveau: Keep small DYNAMIC_DRAW vertex buffers in system ram.</li>
+ <li>dri/nouveau: Pipeline glTexSubImage texture transfers.</li>
+ <li>dri/nouveau: Fix type promotion issue on 32bit platforms.</li>
+ <li>dri/nouveau: Validate the framebuffer state on read buffer changes.</li>
+ <li>dri/nouveau: Re-emit the BO state when coming back from a software fallback.</li>
+ <li>meta: Don't leak alpha function/reference value changes.</li>
+ <li>meta: Fix incorrect rendering of the bitmap alpha component.</li>
+ <li>vbo: Avoid unnecessary copy to/from current in vertex format upgrade.</li>
+ <li>meta: Don't try to disable cube maps if the driver doesn't expose the extension.</li>
+ <li>meta: Handle bitmaps with alpha test enabled.</li>
+ <li>dri/nouveau: Split hardware/software TNL instantiation more cleanly.</li>
+ <li>dri/nouveau: Fix typo.</li>
+ <li>dri/nouveau: Kill a bunch of ternary operators.</li>
+</ul></p>
+
+<p>Fredrik Höglund (2):
+<ul>
+ <li>r600g: Fix texture sampling with swizzled coords</li>
+ <li>r600g: fix pow(0, 0) evaluating to NaN</li>
+</ul></p>
+
+<p>Guillermo S. Romero (1):
+<ul>
+ <li>r300g: Do not use buf param before checking for NULL.</li>
+</ul></p>
+
+<p>Henri Verbeet (19):
+<ul>
+ <li>r600g: Flush upload buffers before draws instead of before flushes.</li>
+ <li>r600g: Check for other references before checking for existing mappings in radeon_bo_pb_map_internal().</li>
+ <li>r600g: Remove a redundant flush in r600_texture_transfer_map().</li>
+ <li>r600g: Buffer object maps imply a wait.</li>
+ <li>r600g: Respect PB_USAGE_UNSYNCHRONIZED in radeon_bo_pb_map_internal().</li>
+ <li>Revert "r600g: Flush upload buffers before draws instead of before flushes."</li>
+ <li>r600g: fix exports_ps to export a number not a mask.</li>
+ <li>r600g: Mention AMD in the renderer string.</li>
+ <li>r600g: Cleanup the fenced_bo list in r600_context_fini().</li>
+ <li>r600g: Evergreen has two extra frac_bits for the sampler LOD state.</li>
+ <li>r600: Evergreen has two extra frac_bits for the sampler LOD state.</li>
+ <li>r600g: Add PIPE_FORMAT_L8A8_UNORM for Evergreen as well.</li>
+ <li>r600g: Swizzle vertex data only once.</li>
+ <li>r600g: Synchronize supported color formats between Evergreen and r600/r700.</li>
+ <li>r600g: Fix the PIPE_FORMAT_L8A8_UNORM color swaps.</li>
+ <li>r600g: Fix the PIPE_FORMAT_A8_UNORM color swap for Evergreen as well.</li>
+ <li>r600g: Cleanup block bo references in r600_context_fini().</li>
+ <li>r600g: Cleanup fetch shader resources in r600_pipe_shader_destroy().</li>
+ <li>st/mesa: Handle wrapped depth buffers in st_copy_texsubimage().</li>
+</ul></p>
+
+<p>Hui Qi Tay (10):
+<ul>
+ <li>llvmpipe: minor changes in llvm coefficient calcs</li>
+ <li>draw: cliptest and viewport done in a single loop in vertex shader</li>
+ <li>draw: added viewport and cliptest flags</li>
+ <li>draw: sanitize llvm variant key</li>
+ <li>draw: corrections for w coordinate</li>
+ <li>draw: corrections to allow for different cliptest cases</li>
+ <li>llvmpipe: Moved draw pipeline twoside function to llvm setup code</li>
+ <li>llvmpipe: added llvm offset setup code</li>
+ <li>llvmpipe: clean up polygon offset function in lp setup code</li>
+ <li>llvmpipe: fix such that offset/twoside function only does in-place modification</li>
+</ul></p>
+
+<p>Ian Romanick (102):
+<ul>
+ <li>glsl2: Refactor testing for whether a deref is of a matrix or array</li>
+ <li>glsl2: Add flags to enable variable index lowering</li>
+ <li>glsl: Add doxygen comments</li>
+ <li>EGL DRI2: Silence piles of 'unused variable' warnings</li>
+ <li>EGL DRI2: Silence 'missing initializer' warnings</li>
+ <li>egl_glx: Silence piles of 'unused variable' warnings</li>
+ <li>egl: Fix several 'comparison between signed and unsigned integer' warnings</li>
+ <li>dri: Ensure that DRI driver cpp files are in tarballs</li>
+ <li>mesa: Force GL_ARB_copy_buffer to always be enabled</li>
+ <li>mesa: Force GL_SGIS_generate_mipmap to always be enabled</li>
+ <li>Remove GL_MESA_packed_depth_stencil</li>
+ <li>Remove GL_EXT_cull_vertex</li>
+ <li>Regenerate files changed by previous commit</li>
+ <li>Remove unnescessary initializations of UpdateTexturePalette</li>
+ <li>ARB_texture_rg: Add GLX protocol support</li>
+ <li>ARB_texture_rg: Correct some errors in RED / RG internal format handling</li>
+ <li>ARB_texture_rg: Add GL_TEXTURE_{RED,GREEN}_SIZE query support</li>
+ <li>ARB_texture_rg: Add GL_RED as a valid GL_DEPTH_TEXTURE_MODE</li>
+ <li>ARB_texture_rg: Handle RED and RG the same as RGB for tex env</li>
+ <li>ARB_texture_rg: Add R8, R16, RG88, and RG1616 internal formats</li>
+ <li>ARB_texture_rg: Allow RED and RG textures as FBO color buffer attachments</li>
+ <li>mesa: Enable GL_ARB_texture_rg in software paths</li>
+ <li>i965: Enable GL_ARB_texture_rg</li>
+ <li>mesa: Add ARB_texture_compression_rgtc as an alias for EXT_texture_compression_rgtc</li>
+ <li>ARB_texture_rg: Add GL_COMPRESSED_{RED,RG} cases in _mesa_is_color_format</li>
+ <li>mesa: Fix misplaced #endif</li>
+ <li>mesa: Trivial correction to comment</li>
+ <li>rgtc: Detect RGTC formats as color formats and as compressed formats</li>
+ <li>docs: Add list of bugs fixed in 7.9</li>
+ <li>docs: Import 7.9 release notes from 7.9 branch.</li>
+ <li>docs: Import 7.8.x release notes from 7.8 branch.</li>
+ <li>docs: download.html does not need to be updated for each release</li>
+ <li>docs: Update mailing lines from sf.net to freedesktop.org</li>
+ <li>docs: Import news updates from 7.9 branch</li>
+ <li>docs: added news item for 7.9 release</li>
+ <li>glsl: Fail linking if assign_attribute_locations fails</li>
+ <li>glsl: Refactor 'layout' grammar to match GLSL 1.60 spec grammar</li>
+ <li>glsl: Slight refactor of error / warning checking for ARB_fcc layout</li>
+ <li>glsl: Clear type_qualifier using memset</li>
+ <li>glsl: Wrap ast_type_qualifier contents in a struct in a union</li>
+ <li>glsl: Regenerate files modified by previous commits</li>
+ <li>glcpp: Add the define for ARB_explicit_attrib_location when present</li>
+ <li>glcpp: Regenerate files changes by previous commit</li>
+ <li>glsl: Add parser support for GL_ARB_explicit_attrib_location layouts</li>
+ <li>glsl: Regenerate files changes by previous commit</li>
+ <li>glsl: Track explicit location in AST to IR translation</li>
+ <li>glsl: Add linker support for explicit attribute locations</li>
+ <li>main: Enable GL_ARB_explicit_attrib_location for swrast</li>
+ <li>intel: Enable GL_ARB_explicit_attrib_location</li>
+ <li>glsl: Remove const decoration from inlined function parameters</li>
+ <li>docs: skeleton for 7.10 release notes</li>
+ <li>docs: Update status of GL 3.x related extensions</li>
+ <li>mesa: Validate assembly shaders when GLSL shaders are used</li>
+ <li>glsl: Fix incorrect assertion</li>
+ <li>linker: Reject shaders that have unresolved function calls</li>
+ <li>mesa: Silence unused variable warning</li>
+ <li>mesa: Refactor validation of shader targets</li>
+ <li>mesa: Clean up two 'comparison between signed and unsigned' warnings</li>
+ <li>mesa: Clean up various 'unused parameter' warnings in shaderapi</li>
+ <li>glsl: Slightly change the semantic of _LinkedShaders</li>
+ <li>linker: Trivial indention fix</li>
+ <li>i965: Fix indentation after commit 3322fbaf</li>
+ <li>linker: Improve handling of unread/unwritten shader inputs/outputs</li>
+ <li>glapi: Add GL_EXT_separate_shader_objects</li>
+ <li>glapi: Commit files changed by previous commit</li>
+ <li>mesa: Add infrastructure to track GL_EXT_separate_shader_objects</li>
+ <li>mesa: Skeletal support for GL_EXT_separate_shader_objects</li>
+ <li>mesa: Add display list support for GL_EXT_separate_shader_objects functions</li>
+ <li>mesa: Track an ActiveProgram distinct from CurrentProgram</li>
+ <li>Track separate programs for each stage</li>
+ <li>swrast: Enable GL_EXT_separate_shader_objects in software paths</li>
+ <li>intel: Enable GL_EXT_separate_shader_objects in Intel drivers</li>
+ <li>docs: add GL_EXT_separate_shader_objects to release notes</li>
+ <li>glsl: Fix incorrect gl_type of sampler2DArray and sampler1DArrayShadow</li>
+ <li>ir_to_mesa: Refactor code for emitting DP instructions</li>
+ <li>mesa: Allow query of MAX_SAMPLES with EXT_framebuffer_multisample</li>
+ <li>glsl: Refactor is_vec_{zero,one} to be methods of ir_constant</li>
+ <li>glsl: Simplify generation of swizzle for vector constructors</li>
+ <li>glsl: Make is_zero and is_one virtual methods of ir_rvalue</li>
+ <li>ir_to_mesa: Generate smarter code for some conditional moves</li>
+ <li>glsl: Add ir_unop_sin_reduced and ir_unop_cos_reduced</li>
+ <li>glsl: Eliminate assumptions about size of ir_expression::operands</li>
+ <li>glsl: Add ir_rvalue::is_negative_one predicate</li>
+ <li>glsl: Add unary ir_expression constructor</li>
+ <li>glsl: Add ir_quadop_vector expression</li>
+ <li>glsl: Fix matrix constructors with vector parameters</li>
+ <li>i915: Disallow alpha, red, RG, and sRGB as render targets</li>
+ <li>glsl: Use M_LOG2E constant instead of calling log2</li>
+ <li>glsl: Lower ir_binop_pow to a sequence of EXP2 and LOG2</li>
+ <li>i915: Request that POW instructions be lowered</li>
+ <li>i915: Correctly generate unconditional KIL instructions</li>
+ <li>glsl: Ensure that equality comparisons don't return a NULL IR tree</li>
+ <li>i965: Correctly emit constants for aggregate types (array, matrix, struct)</li>
+ <li>glsl: Inherrit type of declared variable from initializer</li>
+ <li>linker: Ensure that unsized arrays have a size after linking</li>
+ <li>linker: Fix regressions caused by previous commit</li>
+ <li>glsl: Inherrit type of declared variable from initializer after processing assignment</li>
+ <li>linker: Allow built-in arrays to have different sizes between shader stages</li>
+ <li>ir_to_mesa: Don't generate swizzles for record derefs of non-scalar/vectors</li>
+ <li>Refresh autogenerated file builtin_function.cpp.</li>
+ <li>glsl: Allow less restrictive uses of sampler array indexing in GLSL &lt= 1.20</li>
+ <li>docs: Import 7.9.1 release notes from 7.9 branch</li>
+</ul></p>
+
+<p>Jakob Bornecrantz (27):
+<ul>
+ <li>rbug: Cast opcode to corrent int size</li>
+ <li>rbug: Add function to get opcode name string</li>
+ <li>scons: Link against talloc in the Gallium DRI drivers</li>
+ <li>i915g: Link with wrapper sw winsys with scons</li>
+ <li>tgsi: Actually care what check_soa_dependencies says</li>
+ <li>tgsi: Fix missing test before check</li>
+ <li>llvmpipe: Move makefile include to before targets</li>
+ <li>wrapper: Fix spelling</li>
+ <li>wrapper: Add a way to dewrap a pipe screen without destroying it</li>
+ <li>egl: Remove unnecessary headers</li>
+ <li>target-helpers: Remove per target software wrapper check</li>
+ <li>graw: Tidy graw xlib scons file a bit</li>
+ <li>scons: Remove old pipebuffer SConscript</li>
+ <li>scons: Detabify</li>
+ <li>scons: Check for pkg-config before trying to use it</li>
+ <li>scons: Check for libdrm_[intel|radeon] as well</li>
+ <li>scons: Move dependancy checks to the main gallium scons file</li>
+ <li>scons: Unify state tracker SConscripts</li>
+ <li>galahad: Correct the name of the scons library</li>
+ <li>graw: Use inline sw helper instead of roll your own loader</li>
+ <li>libgl-xlib: Use sw helper instead of roll your own</li>
+ <li>libgl-xlib: Use inline debug helper instead of non-inline version</li>
+ <li>graw: Use inline debug helper instead of non-inline version</li>
+ <li>gallium: Remove redundant sw and debug target helpers</li>
+ <li>i915g: Improve debug printing for textures</li>
+ <li>i915g: Make sure that new vbo gets updated</li>
+ <li>st/mesa: Unbind all constant buffers</li>
+</ul></p>
+
+<p>Jerome Glisse (75):
+<ul>
+ <li>r600g: alternative command stream building from context</li>
+ <li>r600g: move chip class to radeon common structure</li>
+ <li>r600g: use pipe context for flushing inside map</li>
+ <li>r600g: add back reference check when mapping buffer</li>
+ <li>r600g: directly allocate bo for user buffer</li>
+ <li>r600g: fix multi buffer rendering</li>
+ <li>r600g: occlusion query for new design</li>
+ <li>r600g: flush color buffer after draw command</li>
+ <li>r600g: disable shader rebuild optimization &amp; account cb flush packet</li>
+ <li>r600g: fix multiple occlusion query on same id</li>
+ <li>r600g: initial evergreen support in new path</li>
+ <li>r600g: fix typo in evergreen define (resource are in x range)</li>
+ <li>r600g: move use_mem_constants flags for new designs structure alignment</li>
+ <li>r600g: evergreen fix for new design</li>
+ <li>r600g: fix compilation after change to evergreend.h</li>
+ <li>r600g: fixup some evergreen register definitions</li>
+ <li>r600g: fix evergreen new path</li>
+ <li>r600g: fix reg definition</li>
+ <li>r600g: fix evergreen new path</li>
+ <li>r600g: bring over fix from old path to new path</li>
+ <li>r600g: fix vertex resource &amp; polygon offset</li>
+ <li>r600g: disable early cull optimization when occlusion query running</li>
+ <li>r600g: move around variables to share depth uncompression code</li>
+ <li>r600g: use depth decompression in new path</li>
+ <li>r600g: fix index buffer drawing</li>
+ <li>r600g: build packet header once</li>
+ <li>r600g: fix pointsprite &amp; resource unbinding</li>
+ <li>r600g: fix routing btw vertex &amp; pixel shader</li>
+ <li>r600g: fix occlusion query after change to block structure</li>
+ <li>r600g: use ptr for blit depth uncompress function</li>
+ <li>r600g: fix remaining piglit issue in new design</li>
+ <li>r600g: switch to new design</li>
+ <li>r600g: suspend/resume occlusion query around clear/copy</li>
+ <li>r600g: avoid rebuilding the vertex shader if no change to input format</li>
+ <li>r600g: use a hash table instead of group</li>
+ <li>r600g: delete old path</li>
+ <li>r600g: cleanup</li>
+ <li>r600g: more cleanup</li>
+ <li>r600g: use constant buffer instead of register for constant</li>
+ <li>r600g: fix constant &amp; literal src splitting, also fix mplayer gl2 shader</li>
+ <li>evergreeng: avoid overlapping border color btw VS &amp; PS</li>
+ <li>r600g: indentation fixes</li>
+ <li>r600g: rename radeon_ws_bo to r600_bo</li>
+ <li>r600g: allow r600_bo to be a sub allocation of a big bo</li>
+ <li>r600g: use r600_bo for relocation argument, simplify code</li>
+ <li>r600g: rename radeon_ws_bo to r600_bo</li>
+ <li>r600g: remove dead label &amp; fix indentation</li>
+ <li>r600g: store reloc information in bo structure</li>
+ <li>r600g: improve bo flushing</li>
+ <li>r600g: simplify block relocation</li>
+ <li>r600g: userspace fence to avoid kernel call for testing bo busy status</li>
+ <li>r600g: avoid segfault due to unintialized list pointer</li>
+ <li>r600g: fix dirty state handling</li>
+ <li>r600g: allow driver to work without submitting cmd to GPU</li>
+ <li>gallium/noop: no operation gallium driver</li>
+ <li>r600g: code cleanup (indent, trailing space, empty line ...)</li>
+ <li>r600g: fix occlusion query on evergreen (avoid lockup)</li>
+ <li>r600g: add fetch shader capabilities</li>
+ <li>r600g: dump raw shader output for debugging</li>
+ <li>r600g: update polygon offset only when rasterizer or zbuffer change</li>
+ <li>r600g: indentation fix</li>
+ <li>r600g: more indentation fix + warning silencing + dead code removal</li>
+ <li>r600g: build fetch shader from vertex elements</li>
+ <li>r600g: avoid useless shader rebuild at draw call</li>
+ <li>r600g: remove useless flush map</li>
+ <li>r600g: remove dead code</li>
+ <li>r600g: fix userspace fence against lastest kernel</li>
+ <li>r600g: avoid using pb* helper we are loosing previous cpu cycle with it</li>
+ <li>r600g: specialized upload manager</li>
+ <li>r600g: indentation cleanup</li>
+ <li>r600g: fix bo size when creating bo from handle</li>
+ <li>r600g: fix segfault when translating vertex buffer</li>
+ <li>r600g: need to reference upload buffer as the might still live accross flush</li>
+ <li>r600g: properly unset vertex buffer</li>
+ <li>r600g: avoid segfault</li>
+</ul></p>
+
+<p>Joakim Sindholt (3):
+<ul>
+ <li>util/u_blitter: fix leak</li>
+ <li>radeong: fix leaks</li>
+ <li>r300g: silence guard band cap errors</li>
+</ul></p>
+
+<p>Johann Rudloff (3):
+<ul>
+ <li>radeon: Implement EGL_MESA_no_surface_extension</li>
+ <li>radeon: Implement __DRI_IMAGE and EGL_MESA_image_drm</li>
+ <li>radeon: Implement GL_OES_EGL_image</li>
+</ul></p>
+
+<p>John Doe (3):
+<ul>
+ <li>r600g: misc cleanup</li>
+ <li>r600g: don't double count dirty block</li>
+ <li>r600g: keep a mapping around for each bo</li>
+</ul></p>
+
+<p>Jon TURNEY (1):
+<ul>
+ <li>Ensure -L$(TOP)/$(LIB_DIR) appears in link line before any -L in $LDFLAGS</li>
+</ul></p>
+
+<p>José Fonseca (128):
+<ul>
+ <li>gallivm: Fix address register swizzle.</li>
+ <li>gallivm: Start collecting bitwise arithmetic helpers in a new module.</li>
+ <li>gallivm: Clamp indirect register indices to file_max.</li>
+ <li>util: linearized sRGB values don't fit into 8bits</li>
+ <li>llvmpipe: Default to no threading on single processor systems.</li>
+ <li>tgsi: Don't ignore indirect registers in tgsi_check_soa_dependencies</li>
+ <li>llvmpipe: Describe how to profile llvmpipe.</li>
+ <li>llvmpipe: When failing free fs shader too.</li>
+ <li>util: Flush stdout on util_format.</li>
+ <li>gallivm: Add unorm support to lp_build_lerp()</li>
+ <li>llvmpipe: Special case complementary and identify blend factors in SoA.</li>
+ <li>llvmpipe: Make rgb/alpha bland func/factors match, when there is no alpha.</li>
+ <li>draw: Prevent clipped vertices overflow.</li>
+ <li>draw: Fullfil the new min_lod/max_lod/lod_bias/border_color dynamic state</li>
+ <li>gallivm: Fetch the lod from the dynamic state when min_lod == max_lod.</li>
+ <li>gallivm: Remove dead experimental code.</li>
+ <li>llvmpipe: Decouple sampler view and sampler state updates.</li>
+ <li>scons: New build= option, with support for checked builds.</li>
+ <li>scons: New build= option, with support for checked builds.</li>
+ <li>trace: Fix set_index_buffer and draw_vbo tracing.</li>
+ <li>python/retrace: Handle set_index_buffer and draw_vbo.</li>
+ <li>gallivm: Use SSE4.1's ROUNDSS/ROUNDSD for scalar rounding.</li>
+ <li>gallivm: More comprehensive border usage logic.</li>
+ <li>retrace: Handle clear_render_target and clear_depth_stencil.</li>
+ <li>llvmpipe: Dump a few missing shader key flags.</li>
+ <li>llvmpipe: Fix perspective interpolation for point sprites.</li>
+ <li>llvmpipe: Fix sprite coord perspective interpolation of Q.</li>
+ <li>gallivm: Take the type signedness in consideration in round/ceil/floor.</li>
+ <li>gallivm: Use a faster (and less accurate) log2 in lod computation.</li>
+ <li>gallivm: Fast implementation of iround(log2(x))</li>
+ <li>gallivm: Combined ifloor &amp; fract helper.</li>
+ <li>gallivm: Only apply min/max_lod when necessary.</li>
+ <li>gallivm: Compute lod as integer whenever possible.</li>
+ <li>util: Cleanup util_pack_z_stencil and friends.</li>
+ <li>llvmpipe: Cleanup depth-stencil clears.</li>
+ <li>gallivm: Vectorize the rho computation.</li>
+ <li>gallivm: Do not do mipfiltering when magnifying.</li>
+ <li>gallivm: Simplify lp_build_mipmap_level_sizes' interface.</li>
+ <li>gallivm: Don't compute the second mipmap level when frac(lod) == 0</li>
+ <li>gallivm: Use lp_build_ifloor_fract for lod computation.</li>
+ <li>gallivm: Clamp mipmap level and zero mip weight simultaneously.</li>
+ <li>gallivm: Fix copy'n'paste typo in previous commit.</li>
+ <li>gallivm: Implement brilinear filtering.</li>
+ <li>gallivm: Use the wrappers for SSE pack intrinsics.</li>
+ <li>gallivm: Avoid control flow for two-sided stencil test.</li>
+ <li>gallivm: Warn when doing inefficient integer comparisons.</li>
+ <li>gallivm: Move into the as much of the second level code as possible.</li>
+ <li>llvmpipe: First minify the texture size, then broadcast.</li>
+ <li>gallivm: Help for combined extraction and broadcasting.</li>
+ <li>gallivm: Do size computations simultanously for all dimensions (AoS).</li>
+ <li>llvmpipe: Prevent z &gt; 1.0</li>
+ <li>llvmpipe: Fix MSVC build. Enable the new SSE2 code on non SSE3 systems.</li>
+ <li>gallivm: Handle code have ret correctly.</li>
+ <li>util: Defined M_SQRT2 when not available.</li>
+ <li>gallivm: Less code duplication in log computation.</li>
+ <li>gallivm: Special bri-linear computation path for unmodified rho.</li>
+ <li>gallivm: Don't generate Phis for execution mask.</li>
+ <li>gallivm: Use varilables instead of Phis for cubemap selection.</li>
+ <li>gallivm: Remove support for Phi generation.</li>
+ <li>gallivm: Factor out the SI-&gt;FP texture size conversion for SoA path too</li>
+ <li>gallivm: Simplify if/then/else implementation.</li>
+ <li>gallivm: Cleanup the rest of the flow module.</li>
+ <li>gallivm: Fix a long standing bug with nested if-then-else emission.</li>
+ <li>gallivm: Allow to disable bri-linear filtering with GALLIVM_DEBUG=no_brilinear runtime option</li>
+ <li>gallivm: Use variables instead of Phis in loops.</li>
+ <li>gallivm: Pass texture coords derivates as scalars.</li>
+ <li>llvmpipe: Remove outdated comment about stencil testing.</li>
+ <li>gallivm: Eliminate unsigned integer arithmetic from texture coordinates.</li>
+ <li>gallium: Define C99 restrict keyword where absent.</li>
+ <li>tgsi: Export some names for some tgsi enums.</li>
+ <li>gallivm: More detailed analysis of tgsi shaders.</li>
+ <li>llvmpipe: Use lp_tgsi_info.</li>
+ <li>llvmpipe: Do not dispose the execution engine.</li>
+ <li>llvmpipe: Fix MSVC build.</li>
+ <li>llmvpipe: improve mm_mullo_epi32</li>
+ <li>gallivm: Name anonymous union.</li>
+ <li>llvmpipe: Unbreak Z32_FLOAT.</li>
+ <li>gallivm: More accurate float -&gt; 24bit &amp; 32bit unorm conversion.</li>
+ <li>llvmpipe: Generalize the x8z24 fast path to all depth formats.</li>
+ <li>llvmpipe: Fix depth-stencil regression.</li>
+ <li>llvmpipe: Ensure z_shift and z_width is initialized.</li>
+ <li>gallivm: Fix SoA cubemap derivative computation.</li>
+ <li>llvmpipe: Fix bad refactoring.</li>
+ <li>llvmpipe: Initialize bld ctx via lp_build_context_init instead of ad-hoc and broken code.</li>
+ <li>gallivm: Comment lp_build_insert_new_block().</li>
+ <li>gallivm: Add a note about SSE4.1's nearest mode rounding.</li>
+ <li>llvmpipe: Don't test rounding of x.5 numbers.</li>
+ <li>gallium: Avoid using __doc__ in python scripts.</li>
+ <li>gallivm: always enable LLVMAddInstructionCombiningPass()</li>
+ <li>gallivm: Remove the EMMS opcodes.</li>
+ <li>mesa: Fix windows build (uint -&gt; GLuint).</li>
+ <li>scons: Revamp how to specify targets to build.</li>
+ <li>scons: Fix MinGW cross-compilation.</li>
+ <li>scons: Some pipe drivers are not portable for MSVC</li>
+ <li>scons: Restore x11 tool behavior for backwards compatability.</li>
+ <li>scons: Disable python state tracker when swig is not present.</li>
+ <li>r600g: List recently added files in SConscript.</li>
+ <li>scons: Add aliases for several pipe drivers.</li>
+ <li>scons: i915 can't build on MSVC either.</li>
+ <li>scons: Propagate installation targets.</li>
+ <li>xorg/vmwgfx: Add missing source file to SConscript.</li>
+ <li>st/xorg: Add missing n to error message.</li>
+ <li>st/xorg: Detect libkms with scons too.</li>
+ <li>xorg/vmwgfx: Link libkms when available.</li>
+ <li>r600g: Swap the util_blitter_destroy call order.</li>
+ <li>gallivm: Allocate TEMP/OUT arrays only once.</li>
+ <li>libgl-gdi: Allow to pick softpipe/llvmpipe on runtime.</li>
+ <li>scons: Use inline wrap helpers more consistently.</li>
+ <li>svga: Use consistent hexadecimal representation on debug output.</li>
+ <li>scons: Alias for svga</li>
+ <li>wgl: Stub WGL_ARB_pbuffer support.</li>
+ <li>wgl: More complete WGL_ARB_pbuffer support.</li>
+ <li>svga: Silence debug printf.</li>
+ <li>scons: Move MSVS_VERSION option to common module.</li>
+ <li>vega: Remove extraneous ;</li>
+ <li>retrace: Some fixes.</li>
+ <li>util: C++ safe.</li>
+ <li>wgl: Fix double free. Remove dead code.</li>
+ <li>util: Plug leaks in util_destroy_gen_mipmap.</li>
+ <li>util: __builtin_frame_address() doesn't work on mingw.</li>
+ <li>util: Don't try to use imagehlp on mingw.</li>
+ <li>wgl: Unreference the current framebuffer after the make_current call.</li>
+ <li>WIN32_THREADS -&gt; WIN32</li>
+ <li>mapi: Hack to avoid vgCreateFont being generated as vgCreateFontA.</li>
+ <li>wgl: Fix visual's buffer_mask configuration.</li>
+ <li>mesa: Temporary hack to prevent stack overflow on windows</li>
+ <li>mesa: Bump the number of bits in the register index.</li>
+ <li>llvmpipe: Plug fence leaks.</li>
+</ul></p>
+
+<p>Julien Cristau (1):
+<ul>
+ <li>Makefile: don't include the same files twice in the tarball</li>
+</ul></p>
+
+<p>Keith Whitwell (89):
+<ul>
+ <li>llvmpipe: brackets around macro arg</li>
+ <li>llvmpipe: remove duplicate code</li>
+ <li>llvmpipe: return zero from floor_pot(zero)</li>
+ <li>gallivm: make lp_build_sample_nop public</li>
+ <li>llvmpipe: add LP_PERF flag to disable various aspects of rasterization</li>
+ <li>llvmpipe: add DEBUG_FS to dump variant information</li>
+ <li>llvmpipe: use llvm for attribute interpolant calculation</li>
+ <li>graw: add frag-face shader</li>
+ <li>llvmpipe: fix flatshading in new line code</li>
+ <li>draw: don't apply flatshading to clipped tris with &lt3 verts</li>
+ <li>llvmpipe: handle FACING interpolants in line and point setup</li>
+ <li>llvmpipe: handle up to 8 planes in triangle binner</li>
+ <li>llvmpipe: make debug_fs_variant respect variant-&gt;nr_samplers</li>
+ <li>gallivm: don't apply zero lod_bias</li>
+ <li>llvmpipe: fail gracefully on oom in scene creation</li>
+ <li>llvmpipe: avoid overflow in triangle culling</li>
+ <li>gallivm: special case conversion 4x4f to 1x16ub</li>
+ <li>gallivm: round rather than truncate in new 4x4f-&gt;1x16ub conversion path</li>
+ <li>llvmpipe: clean up setup_tri a little</li>
+ <li>llvmpipe: add rast_tri_4_16 for small lines and points</li>
+ <li>llvmpipe: fix off-by-one in tri_16</li>
+ <li>llvmpipe: defer attribute interpolation until after mask and ztest</li>
+ <li>llvmpipe: use alloca for fs color outputs</li>
+ <li>llvmpipe: store zero into all alloca'd values</li>
+ <li>llvmpipe: dump fragment shader ir and asm when LP_DEBUG=fs</li>
+ <li>gallivm: specialized x8z24 depthtest path</li>
+ <li>gallivm: prefer blendvb for integer arguments</li>
+ <li>gallivm: simpler uint8-&gt;float conversions</li>
+ <li>llvmpipe: try to be sensible about whether to branch after mask updates</li>
+ <li>llvmpipe: clean up shader pre/postamble, try to catch more early-z</li>
+ <li>llvmpipe: simplified SSE2 swz/unswz routines</li>
+ <li>llvmpipe: try to do more of rast_tri_3_16 with intrinsics</li>
+ <li>llvmpipe: add debug helpers for epi32 etc</li>
+ <li>llvmpipe: try to keep plane c values small</li>
+ <li>llvmpipe: fix typo in last commit</li>
+ <li>gallium: move sse intrinsics debug helpers to u_sse.h</li>
+ <li>r600g: add missing file to sconscript</li>
+ <li>gallivm: don't branch on KILLs near end of shader</li>
+ <li>Revert "llvmpipe: try to keep plane c values small"</li>
+ <li>llvmpipe: make sure intrinsics code is guarded with PIPE_ARCH_SSE</li>
+ <li>llvmpipe: don't try to emit non-existent color outputs</li>
+ <li>r600/drm: fix segfaults in winsys create failure path</li>
+ <li>r600g: emit hardware linewidth</li>
+ <li>r600g: handle absolute modifier in shader translator</li>
+ <li>llvmpipe: reintroduce SET_STATE binner command</li>
+ <li>llvmpipe: don't pass frontfacing as a float</li>
+ <li>llvmpipe: slightly shrink the size of a binned triangle</li>
+ <li>llvmpipe: don't store plane.ei value in binned data</li>
+ <li>gallium: move some intrinsics helpers to u_sse.h</li>
+ <li>llvmpipe: do plane calculations with intrinsics</li>
+ <li>llvmpipe: use aligned loads/stores for plane values</li>
+ <li>llvmpipe: fix non-sse build after recent changes</li>
+ <li>llvmpipe: check shader outputs are non-null before using</li>
+ <li>llvmpipe: validate color outputs against key-&gt;nr_cbufs</li>
+ <li>llvmpipe: clean up fields in draw_llvm_variant_key</li>
+ <li>llvmpipe: remove setup fallback path</li>
+ <li>llvmpipe: fail cleanly on malloc failure in lp_setup_alloc_triangle</li>
+ <li>Merge remote branch 'origin/master' into lp-setup-llvm</li>
+ <li>llvmpipe: remove unused file</li>
+ <li>llvmpipe: remove unused arg from jit_setup_tri function</li>
+ <li>Merge branch 'llvm-cliptest-viewport'</li>
+ <li>draw: make sure viewport gets updated in draw llvm shader</li>
+ <li>llvmpipe: turn off draw offset/twoside when we can handle it</li>
+ <li>llvmpipe: avoid generating tri_16 for tris which extend past tile bounds</li>
+ <li>llvmpipe: guard against NULL task-&gt;query pointer</li>
+ <li>st/mesa: unbind constant buffer when not in use</li>
+ <li>r600g: propagate usage flags in texture transfers</li>
+ <li>r600g: propogate resource usage flags to winsys, use to choose bo domains</li>
+ <li>r600g: use a buffer in GTT as intermediate on texture up and downloads</li>
+ <li>r600g: remove unused flink, domain fields from r600_resource</li>
+ <li>r600g: set hardware pixel centers according to gl_rasterization_rules</li>
+ <li>evergreeng: protect against null constant buffers</li>
+ <li>r600g: don't call debug_get_bool_option for tiling more than once</li>
+ <li>evergreeng: respect linewidth state, use integer widths only</li>
+ <li>evergreeng: set hardware pixelcenters according to gl_rasterization_rules</li>
+ <li>r600g: avoid recursion with staged uploads</li>
+ <li>r600g: attempt to turn on DXTn formats</li>
+ <li>r600g: translate ARR instruction</li>
+ <li>r600: fix my pessimism about PIPE_TRANSFER_x flags</li>
+ <li>ws/r600: match bo_busy shared/fence logic in bo_wait</li>
+ <li>r600g: guard experimental s3tc code with R600_ENABLE_S3TC</li>
+ <li>r600g: do not try to use staging resource for depth textures</li>
+ <li>r600g: enforce minimum stride on render target texture images</li>
+ <li>llvmpipe: fix up twoside after recent changes</li>
+ <li>llvmpipe: twoside for specular color also</li>
+ <li>Merge branch 'lp-offset-twoside'</li>
+ <li>llvmpipe: raise dirty flag on transfers to bound constbuf</li>
+ <li>llvmpipe: remove misleading debug string</li>
+ <li>llvmpipe: shortcircuit some calls to set_scene_state</li>
+</ul></p>
+
+<p>Kenneth Graunke (94):
+<ul>
+ <li>glsl: Change from has_builtin_signature to has_user_signature.</li>
+ <li>glsl: Don't print blank (function ...) headers for built-ins.</li>
+ <li>glsl: Properly handle nested structure types.</li>
+ <li>glsl/builtins: Fix equal and notEqual builtins.</li>
+ <li>glsl/builtins: Switch comparison functions to just return an expression.</li>
+ <li>glsl: Add comments to clarify the types of comparison binops.</li>
+ <li>glsl: Fix broken handling of ir_binop_equal and ir_binop_nequal.</li>
+ <li>glsl: "Copyright", not "Constantright"</li>
+ <li>i965: Fix incorrect batchbuffer size in gen6 clip state command.</li>
+ <li>i965: Use logical-not when emitting ir_unop_ceil.</li>
+ <li>glsl: Add front-end support for the "trunc" built-in.</li>
+ <li>glsl: Refresh autogenerated file builtin_function.cpp.</li>
+ <li>i965: Use RNDZ for ir_unop_trunc in the new FS.</li>
+ <li>i965: Correctly emit the RNDZ instruction.</li>
+ <li>i965: Clean up a warning in the old fragment backend.</li>
+ <li>glsl: Add a new ir_unop_round_even opcode for GLSL 1.30's roundEven.</li>
+ <li>glsl: Add front-end support for GLSL 1.30's roundEven built-in.</li>
+ <li>i965: Add support for ir_unop_round_even via the RNDE instruction.</li>
+ <li>glsl: Add support for the 1.30 round() built-in.</li>
+ <li>glsl: Refresh autogenerated file builtin_function.cpp.</li>
+ <li>glsl: Don't return NULL IR for erroneous bit-shift operators.</li>
+ <li>i965: Add missing "break" statement.</li>
+ <li>glsl: Fix copy and paste error in ast_bit_and node creation.</li>
+ <li>glsl: Regenerate parser files.</li>
+ <li>i965: Remove unused variable.</li>
+ <li>glsl: Remove useless ir_shader enumeration value.</li>
+ <li>mesa: Remove FEATURE_ARB_shading_language_120 macro.</li>
+ <li>glcpp: Return NEWLINE token for newlines inside multi-line comments.</li>
+ <li>glcpp: Refresh autogenerated lexer file.</li>
+ <li>glsl: Add support for GLSL 1.30's modf built-in.</li>
+ <li>glsl: Refresh autogenerated file builtin_function.cpp.</li>
+ <li>generate_builtins.py: Output large strings as arrays of characters.</li>
+ <li>Refresh autogenerated file builtin_function.cpp.</li>
+ <li>glsl: Fix constant component count in vector constructor emitting.</li>
+ <li>Fix build on systems where "python" is python 3.</li>
+ <li>i965: Add bit operation support to the fragment shader backend.</li>
+ <li>glsl: Remove unused ARRAY_SIZE macro.</li>
+ <li>glsl/builtins: Rename 'x' to 'y_over_x' in atan(float) implementation.</li>
+ <li>glsl/builtins: Clean up some ugly autogenerated code in atan.</li>
+ <li>Refresh autogenerated file builtin_function.cpp.</li>
+ <li>glsl: Don't print a useless space at the end of an S-Expression list.</li>
+ <li>ir_reader: Return a specific ir_dereference variant.</li>
+ <li>ir_reader: Remove useless error check.</li>
+ <li>ir_reader: Fix some potential NULL pointer dereferences.</li>
+ <li>ir_dead_functions: Actually free dead functions and signatures.</li>
+ <li>glsl: Remove unnecessary "unused variable" warning suppression.</li>
+ <li>glsl: Remove GLSL_TYPE_FUNCTION define.</li>
+ <li>glsl: Convert glsl_type::base_type from #define'd constants to an enum.</li>
+ <li>glsl: Rework reserved word/keyword handling in the lexer.</li>
+ <li>glsl: Add new keywords and reserved words for GLSL 1.30.</li>
+ <li>glsl: Add support for the 'u' and 'U' unsigned integer suffixes.</li>
+ <li>glsl: Refresh autogenerated lexer and parser files.</li>
+ <li>generate_builtins.py: Fix inconsistent use of tabs and spaces warning.</li>
+ <li>glsl: Implement the asinh, acosh, and atanh built-in functions.</li>
+ <li>glsl: Refresh autogenerated file builtin_function.cpp.</li>
+ <li>glsl: Add constant expression handling for asinh, acosh, and atanh.</li>
+ <li>glsl: Remove unused and out of date Makefile.am.</li>
+ <li>glsl: Rename various ir_* files to lower_* and opt_*.</li>
+ <li>glcpp: Define GL_FRAGMENT_PRECISION_HIGH if GLSL version &gt;= 1.30.</li>
+ <li>Refresh autogenerated glcpp parser.</li>
+ <li>glsl: Fix constant expression handling for &lt, &gt;, &lt=, &gt;= on vectors.</li>
+ <li>glsl: Unconditionally define GL_FRAGMENT_PRECISION_HIGH in ES2 shaders.</li>
+ <li>Regenerate glcpp parser.</li>
+ <li>glsl: Reimplement the "cross" built-in without ir_binop_cross.</li>
+ <li>Refresh autogenerated file builtin_function.cpp.</li>
+ <li>glsl: Remove the ir_binop_cross opcode.</li>
+ <li>glsl: Refactor get_num_operands.</li>
+ <li>glsl: Simplify a type check by using type-&gt;is_integer().</li>
+ <li>glsl: Combine many instruction lowering passes into one.</li>
+ <li>mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.</li>
+ <li>glsl: Don't inline function prototypes.</li>
+ <li>glsl: Use do_common_optimization in the standalone compiler.</li>
+ <li>glsl: Add a virtual as_discard() method.</li>
+ <li>glsl: Refactor out cloning of function prototypes.</li>
+ <li>glsl: Lazily import built-in function prototypes.</li>
+ <li>glsl: Remove anti-built-in hacks from the print visitor.</li>
+ <li>glsl/linker: Free any IR discarded by optimization passes.</li>
+ <li>glsl: Add an optimization pass to simplify discards.</li>
+ <li>glsl: Add a lowering pass to move discards out of if-statements.</li>
+ <li>glsl: Remove "discard" support from lower_jumps.</li>
+ <li>glsl: Add comments to lower_jumps (from the commit message).</li>
+ <li>ir_print_visitor: Print out constant structure values.</li>
+ <li>glsl: Factor out code which emits a new function into the IR stream.</li>
+ <li>symbol_table: Add support for adding a symbol at top-level/global scope.</li>
+ <li>glsl: Properly add functions during lazy built-in prototype importing.</li>
+ <li>glcpp: Don't emit SPACE tokens in conditional_tokens production.</li>
+ <li>Refresh autogenerated glcpp parser.</li>
+ <li>glsl: Clean up code by adding a new is_break() function.</li>
+ <li>glsl: Consider the "else" branch when looking for loop breaks.</li>
+ <li>Remove OES_compressed_paletted_texture from the ES2 extension list.</li>
+ <li>glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).</li>
+ <li>glsl: Support if-flattening beyond a given maximum nesting depth.</li>
+ <li>i965: Flatten if-statements beyond depth 16 on pre-gen6.</li>
+ <li>i965: Internally enable GL_NV_blend_square on ES2.</li>
+</ul></p>
+
+<p>Kristian Høgsberg (16):
+<ul>
+ <li>glx: Hold on to drawables if we're just switching to another context</li>
+ <li>intel: Fix GL_ARB_shading_language_120 commit</li>
+ <li>dri2: Make createImageFromName() take a __DRIscreen instead of __DRIcontext</li>
+ <li>glx: Invalidate buffers after binding a drawable</li>
+ <li>dri: Pass the __DRIscreen and the __DRIscreen private back to image lookup</li>
+ <li>glx: Only remove drawables from the hash when we actually delete them</li>
+ <li>gles2: Add GL_EXT_texture_format_BGRA8888 support</li>
+ <li>Get rid of GL/internal/glcore.h</li>
+ <li>gl: Remove unused GLcontextModes fields</li>
+ <li>Rename GLvisual and __GLcontextModes to struct gl_config</li>
+ <li>Drop GLframebuffer typedef and just use struct gl_framebuffer</li>
+ <li>Drop GLcontext typedef and use struct gl_context instead</li>
+ <li>Drop the "neutral" tnl module</li>
+ <li>Only install vtxfmt tables for OpenGL</li>
+ <li>i965: Don't write mrf assignment for pointsize output</li>
+ <li>docs: Fix MESA_drm_image typo</li>
+</ul></p>
+
+<p>Krzysztof Smiechowicz (1):
+<ul>
+ <li>nvfx: Pair os_malloc_aligned() with os_free_aligned().</li>
+</ul></p>
+
+<p>Luca Barbieri (84):
+<ul>
+ <li>auxiliary: fix unintended fallthrough</li>
+ <li>glsl: add pass to lower variable array indexing to conditional assignments</li>
+ <li>auxiliary: fix depth-only and stencil-only clears</li>
+ <li>gallium: avoid the C++ keyword "template" in sw_winsys.h</li>
+ <li>softpipe: make z/s test always pass if no zsbuf, instead of crashing</li>
+ <li>tgsi: add switch/case opcodes to tgsi_opcode_tmp.h</li>
+ <li>softpipe: fix whitespace</li>
+ <li>d3d1x: add new Direct3D 10/11 COM state tracker for Gallium</li>
+ <li>d3d1x: add blob and signature extraction APIs</li>
+ <li>d3d1x: fix compilation with recent Wine versions installed</li>
+ <li>d3d1x: add missing file</li>
+ <li>d3d1x: actually enable and fix blob apis</li>
+ <li>d3d1x: fix build with compilers other than GCC 4.5</li>
+ <li>d3d1x: add template parameters to base class ctor calls for GCC 4.4</li>
+ <li>d3d1x: fix GCC 4.1/4.2 build</li>
+ <li>d3d1x: ignore errors while building docs</li>
+ <li>d3d1x: attempt to fix/workaround bug #30322</li>
+ <li>nvfx: remove gl_PointCoord hack</li>
+ <li>glx: decouple dri2.c and GLX, fixing Gallium EGL and d3d1x build</li>
+ <li>winsys: automatically build sw winsys needed by EGL and d3d1x</li>
+ <li>d3d1x: don't build progs automatically</li>
+ <li>d3d1x: add missing memory barrier</li>
+ <li>d3d1x: link with CXXFLAGS</li>
+ <li>d3d1x: fix cf analysis</li>
+ <li>d3d1x: fix warning</li>
+ <li>d3d1x: fix segfault when hashing</li>
+ <li>d3d1x: destroy native_display on adapter destruction</li>
+ <li>d3d1x: fix GUID declarations</li>
+ <li>d3d1x: redesign the HWND resolver interface</li>
+ <li>d3d1x: fix API name</li>
+ <li>d3d1x: define GUIDs in the normal way</li>
+ <li>d3d1x: add Wine dlls (tri, tex working, but no other testing)</li>
+ <li>d3d1x: properly reference count the backend</li>
+ <li>d3d1x: fix deadlocks on non-recursive mutex</li>
+ <li>d3d1x: bind NULL CSOs before destroying default CSOs on context dtor</li>
+ <li>d3d1x: initialize the mutex</li>
+ <li>d3d1x: autogenerate shader enums and text from def files</li>
+ <li>d3d1x: s/tpf/sm4/g</li>
+ <li>d3d1x: normalize whitespace</li>
+ <li>d3d1x: remove specstrings</li>
+ <li>d3d1x: minifix</li>
+ <li>d3d1x: rename context params</li>
+ <li>d3d11: rename screen params</li>
+ <li>d3d1x: rename params in misc and objects</li>
+ <li>d3d1x: rename parameters in dxgi</li>
+ <li>d3d11: obliterate IDL parameter names</li>
+ <li>d3d1x: remove specstrings.h include</li>
+ <li>d3d1x: flush the pipe context when presenting</li>
+ <li>d3d1x: remove another include specstrings.h</li>
+ <li>d3d1x: flush properly</li>
+ <li>d3d1x: add missing guid.cpp</li>
+ <li>d3d1x: fix build without system EGL/egl.h</li>
+ <li>d3d1x: add autogenerated files as prerequisites, so make builds them</li>
+ <li>d3d1x: obliterate IDL parameter names from d3d10.idl from Wine too</li>
+ <li>d3d1x: add shader dumping</li>
+ <li>d3d1x: add untested support for geometry shader translation</li>
+ <li>d3d1x: don't assert on unsupported resource types</li>
+ <li>d3d1x: fix CheckMultisampleQualityLevels</li>
+ <li>d3d1x: draw to the correct buffer</li>
+ <li>d3d1x: fix linking of dxbc2tgsi</li>
+ <li>nvfx: allow setting NULL constant buffers</li>
+ <li>nvfx: add RGB framebuffer format support in addition to BGR</li>
+ <li>d3d1x: don't crash on drivers not supporting vertex or geometry sampling</li>
+ <li>d3d1x: assert if X visual is not among enumerated visuals</li>
+ <li>d3d1x: stop using GLX in demos, just use the default visual</li>
+ <li>d3d1x: CRLF -&gt; LF in progs</li>
+ <li>mesa: make makedepend an hard requirement</li>
+ <li>gallium: add $(PROGS_DEPS) as dependencies for $(PROGS)</li>
+ <li>d3d1x: fix parallel build</li>
+ <li>d3d1x: add private gitignore file</li>
+ <li>d3d1x: fix progs linking if not all EGL platforms are enabled</li>
+ <li>d3d1x: link progs with CXXFLAGS</li>
+ <li>d3d11: advertise IDXGIDevice1, not just IDXGIDevice</li>
+ <li>d3d11: ignore StructureByteStride</li>
+ <li>d3d1x: link to libdrm for X11 platform too</li>
+ <li>ureg: support centroid interpolation</li>
+ <li>d3d1x: support centroid interpolation</li>
+ <li>d3d1x: properly support specifying MipLevels as 0</li>
+ <li>d3d1x: put proper calling convention in headers, fixes 64-bit builds</li>
+ <li>d3d1x: rework DXGI for occlusion testing and default width/height</li>
+ <li>d3d1x: fix Map</li>
+ <li>d3d11: fix reference counting so devices get freed</li>
+ <li>d3d1x: work around crash in widl</li>
+ <li>glsl: Unroll loops with conditional breaks anywhere (not just the end)</li>
+</ul></p>
+
+<p>Lucas Stach (1):
+<ul>
+ <li>nvfx: fill PIPE_CAP_PRIMITIVE_RESTART and PIPE_CAP_SHADER_STENCIL_EXPORT</li>
+</ul></p>
+
+<p>Marek Olšák (100):
+<ul>
+ <li>r300g: prevent creating multiple winsys BOs for the same handle</li>
+ <li>r300g/swtcl: fix CS overrun</li>
+ <li>st/mesa: fix assertion failure in GetTexImage for cubemaps</li>
+ <li>util: make calling remove_from_list multiple times in a row safe</li>
+ <li>r300g: fixup long-lived BO maps being incorrectly unmapped when flushing</li>
+ <li>r300g: make accessing map_list and buffer_handles thread-safe</li>
+ <li>r300g: fix a copy-paste typo for logging</li>
+ <li>r300g: fix the border color for every format other than PIPE_FORMAT_B8G8R8A8</li>
+ <li>Build r300g by default</li>
+ <li>util: fix util_pack_color for B4G4R4A4</li>
+ <li>r300g: fix macrotiling on R350</li>
+ <li>r300g: code cleanups</li>
+ <li>r300/compiler: fix projective mapping of 2D NPOT textures</li>
+ <li>r300/compiler: do not use copy propagation if SaturateMode is used</li>
+ <li>r300/compiler: fix shadow sampling with swizzled coords</li>
+ <li>r300g: add support for 3D NPOT textures without mipmapping</li>
+ <li>r300g: fix swizzling of texture border color</li>
+ <li>configure.ac: look for libdrm_radeon before building gallium/r300,r600</li>
+ <li>configure.ac: do not build xorg-r300g by default</li>
+ <li>Makefile: ensure Gallium's Makefile.xorg and SConscript.dri are in the tarball</li>
+ <li>r300g: add support for formats beginning with X, like X8R8G8B8</li>
+ <li>r300g: fix conditional rendering in non-wait path</li>
+ <li>r300g: add support for R8G8 colorbuffers</li>
+ <li>r300g: add support for L8A8 colorbuffers</li>
+ <li>update release notes for Gallium</li>
+ <li>r300g: fix microtiling for 16-bits-per-channel formats</li>
+ <li>r300g: do not print get_param errors in non-debug build</li>
+ <li>r300g: say no to PIPE_CAP_STREAM_OUTPUT and PIPE_CAP_PRIMITIVE_RESTART</li>
+ <li>mesa: allow FBO attachments of formats LUMINANCE, LUMINANCE_ALPHA, and INTENSITY</li>
+ <li>r300g: fix texture border for 16-bits-per-channel formats</li>
+ <li>st/mesa: support RGBA16 and use it for RGBA12 as well</li>
+ <li>r300g: add a default channel ordering of texture border for unhandled formats</li>
+ <li>r300g: mention ATI in the renderer string</li>
+ <li>r300g: rename has_hyperz -&gt; can_hyperz</li>
+ <li>r300g: turn magic numbers into names in the hyperz code</li>
+ <li>gallium: add CAPs for indirect addressing and lower it in st/mesa when needed</li>
+ <li>tgsi: fill out CAPs for indirect addressing</li>
+ <li>i915g: fill out CAPs for indirect addressing</li>
+ <li>i965g: fill out CAPs for indirect addressing</li>
+ <li>nv50: fill out CAPs for indirect addressing</li>
+ <li>nvfx: fill out CAPs for indirect addressing</li>
+ <li>r300g: fill out CAPs for indirect addressing</li>
+ <li>r600g: fill out CAPs for indirect addressing</li>
+ <li>svga: fill out CAPs for indirect addressing</li>
+ <li>r300g: fix texture border color for all texture formats</li>
+ <li>r300g: clean up redundancy in draw functions</li>
+ <li>r300g: return shader caps from Draw for SWTCL vertex shaders</li>
+ <li>r300g: remove the hack with OPCODE_RET</li>
+ <li>r300g: print FS inputs uninitialized due to hardware limits to stderr</li>
+ <li>r300g: fix rendering with no vertex elements</li>
+ <li>st/mesa: enable ARB_explicit_attrib_location and EXT_separate_shader_objects</li>
+ <li>docs: add GL 4.1 status</li>
+ <li>gallium: add PIPE_SHADER_CAP_SUBROUTINES</li>
+ <li>st/mesa: set MaxUniformComponents</li>
+ <li>u_blitter: use PIPE_TRANSFER_DISCARD to prevent cpu/gpu stall</li>
+ <li>r300/compiler: fix rc_rewrite_depth_out for it to work with any instruction</li>
+ <li>r300/compiler: remove duplicate function rc_mask_to_swz</li>
+ <li>r300/compiler: add a function for swizzling a mask</li>
+ <li>r300/compiler: move util functions to radeon_compiler_util</li>
+ <li>u_blitter: interpolate clear color using a GENERIC varying instead of COLOR</li>
+ <li>st/mesa: fix texture border color for RED and RG base formats</li>
+ <li>util: rename u_mempool -&gt; u_slab</li>
+ <li>r300g: fix texture border color once again</li>
+ <li>r300/compiler: implement and lower OPCODE_CLAMP</li>
+ <li>ir_to_mesa: Add support for conditional discards.</li>
+ <li>r300g: fix texture swizzling with compressed textures on r400-r500</li>
+ <li>r300g: disable ARB_texture_swizzle if S3TC is enabled on r3xx-only</li>
+ <li>r300g: fix up cubemap texture offset computation</li>
+ <li>r300/compiler: disable the swizzle lowering pass in vertex shaders</li>
+ <li>r300g: fix build</li>
+ <li>r300g: use internal BO handle for add_buffer and write_reloc</li>
+ <li>r300g: implement simple transfer_inline_write for buffers</li>
+ <li>mesa, st/mesa: fix gl_FragCoord with FBOs in Gallium</li>
+ <li>r300g: fix pointer arithmetic with void* in transfer_inline_write</li>
+ <li>r300g: do not remove unused constants if we are not near the limit</li>
+ <li>r300g: add capability bit index_bias_supported</li>
+ <li>r300g: one more r500_index_bias_supported leftover</li>
+ <li>r300g: do not use the index parameter in set_constant_buffer</li>
+ <li>r300g: cleanup winsys</li>
+ <li>r300g: optimize looping over atoms</li>
+ <li>st/mesa: initialize key in st_vp_varient</li>
+ <li>u_blitter: use util_is_format_compatible in the assert</li>
+ <li>r300g: cache packet dwords of 3D_LOAD_VBPNTR in a command buffer if possible</li>
+ <li>r300g: validate buffers only if any of bound buffers is changed</li>
+ <li>r300g: also revalidate the SWTCL vertex buffer after its reallocation</li>
+ <li>r300/compiler: don't terminate regalloc if we surpass max temps limit</li>
+ <li>r300/compiler: add a function to query program stats (alu, tex, temps..)</li>
+ <li>r300/compiler: cleanup rc_run_compiler</li>
+ <li>r300/compiler: do not print pair/tex/presub program stats for vertex shaders</li>
+ <li>r300/compiler: handle DPH and XPD in rc_compute_sources_for_writemask</li>
+ <li>r300/compiler: make lowering passes possibly use up to two less temps</li>
+ <li>r300/compiler: remove at least unused immediates if externals cannot be removed</li>
+ <li>r300/compiler: fix LIT in VS</li>
+ <li>r300/compiler: fix swizzle lowering with a presubtract source operand</li>
+ <li>r300g: fix rendering with a vertex attrib having a zero stride</li>
+ <li>r300g: finally fix the texture corruption on r3xx-r4xx</li>
+ <li>r300g/swtcl: re-enable LLVM</li>
+ <li>r300g: mark vertex arrays as dirty after a buffer_offset change</li>
+ <li>mesa: fix texel store functions for some float formats</li>
+ <li>r300/compiler: disable the rename_regs pass for loops</li>
+</ul></p>
+
+<p>Mario Kleiner (1):
+<ul>
+ <li>mesa/r300classic: Fix dri2Invalidate/radeon_prepare_render for page flipping.</li>
+</ul></p>
+
+<p>Mathias Fröhlich (3):
+<ul>
+ <li>r300g: Avoid returning values in a static array, fixing a potential race</li>
+ <li>r600g: Only compare active vertex elements</li>
+ <li>st/mesa: Set PIPE_TRANSFER_DISCARD for GL_MAP_INVALIDATE_RANGE/BUFFFER_BIT</li>
+</ul></p>
+
+<p>Michal Krol (10):
+<ul>
+ <li>svga: Fix relative addressing translation for pixel shaders.</li>
+ <li>svga: Integer constant register file has a separate namespace.</li>
+ <li>tgsi/exec: Cleanup the remaining arithmetic instructions.</li>
+ <li>tgsi/exec: Get rid of obsolete condition codes.</li>
+ <li>tgsi/build: Reduce interface clutter.</li>
+ <li>graw/gdi: Initial commit.</li>
+ <li>scons: Hook-up graw-gdi target.</li>
+ <li>graw/gdi: Fix window dimensions.</li>
+ <li>os: Open file streams in binary mode.</li>
+ <li>graw: Export graw_save_surface_to_file().</li>
+</ul></p>
+
+<p>Nicolas Kaiser (26):
+<ul>
+ <li>swrast: remove duplicated include</li>
+ <li>egl: remove duplicated include</li>
+ <li>gallium/rtasm: remove duplicated include</li>
+ <li>gallium/util: remove duplicated include</li>
+ <li>gallium/i915: remove duplicated include</li>
+ <li>gallium/llvmpipe: remove duplicated include</li>
+ <li>gallium/softpipe: remove duplicated include</li>
+ <li>gallium/st: remove duplicated includes</li>
+ <li>gallium/winsys: remove duplicated include</li>
+ <li>glx: remove duplicated include</li>
+ <li>dri/common: remove duplicated include</li>
+ <li>dri/i810: remove duplicated include</li>
+ <li>dri/i915: remove duplicated include</li>
+ <li>dri/i965: remove duplicated include</li>
+ <li>dri/intel: remove duplicated include</li>
+ <li>dri/mga: remove duplicated include</li>
+ <li>dri/r128: remove duplicated include</li>
+ <li>dri/r300: remove duplicated include</li>
+ <li>dri/r600: remove duplicated include</li>
+ <li>dri/radeon: remove duplicated includes</li>
+ <li>dri/savage: remove duplicated include</li>
+ <li>main: remove duplicated includes</li>
+ <li>math: remove duplicated includes</li>
+ <li>st: remove duplicated include</li>
+ <li>i965g: use Elements macro instead of manual sizeofs</li>
+ <li>nv50: fix always true conditional in shader optimization</li>
+</ul></p>
+
+<p>Orion Poplawski (1):
+<ul>
+ <li>osmesa: link against libtalloc</li>
+</ul></p>
+
+<p>Owen W. Taylor (1):
+<ul>
+ <li>r600g: Fix location for clip plane registers</li>
+</ul></p>
+
+<p>Peter Clifton (3):
+<ul>
+ <li>intel: Fix emit_linear_blit to use DWORD aligned width blits</li>
+ <li>intel: Add assert check for blitting alignment.</li>
+ <li>meta: Mask Stencil.Clear against stencilMax in _mesa_meta_Clear</li>
+</ul></p>
+
+<p>Robert Hooker (2):
+<ul>
+ <li>intel: Add a new B43 pci id.</li>
+ <li>egl_dri2: Add missing intel chip ids.</li>
+</ul></p>
+
+<p>Roland Scheidegger (16):
+<ul>
+ <li>gallivm: fix copy&amp;paste bug</li>
+ <li>gallivm: don't use URem/UDiv when calculating offsets for blocks</li>
+ <li>gallivm: optimize yuv decoding</li>
+ <li>gallivm: fix trunc/itrunc comment</li>
+ <li>gallivm: faster iround implementation for sse2</li>
+ <li>gallivm: replace sub/floor/ifloor combo with ifloor_fract</li>
+ <li>gallivm: optimize some tex wrap mode calculations a bit</li>
+ <li>gallivm: more linear tex wrap mode calculation simplification</li>
+ <li>gallivm: avoid unnecessary URem in linear wrap repeat case</li>
+ <li>gallivm: optimize soa linear clamp to edge wrap mode a bit</li>
+ <li>gallivm: make use of new iround code in lp_bld_conv.</li>
+ <li>gallivm: fix different handling of [non]normalized coords in linear soa path</li>
+ <li>gallivm: only use lp_build_conv 4x4f -&gt; 1x16 ub fastpath with sse2</li>
+ <li>r200: fix r200 large points</li>
+ <li>mesa: remove unneeded DD_POINT_SIZE and DD_LINE_WIDTH tricaps</li>
+ <li>gallium: support for array textures and related changes</li>
+</ul></p>
+
+<p>Shuang He (1):
+<ul>
+ <li>mesa: allow GLfixed arrays for OpenGL ES 2.0</li>
+</ul></p>
+
+<p>Stephan Schmid (1):
+<ul>
+ <li>r600g: fix relative addressing when splitting constant accesses</li>
+</ul></p>
+
+<p>Thomas Hellstrom (21):
+<ul>
+ <li>st/xorg: Don't try to use option values before processing options</li>
+ <li>xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers</li>
+ <li>st/xorg: Add a customizer option to get rid of annoying cursor update flicker</li>
+ <li>xorg/vmwgfx: Don't hide HW cursors when updating them</li>
+ <li>st/xorg: Don't try to remove invalid fbs</li>
+ <li>st/xorg: Fix typo</li>
+ <li>st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments</li>
+ <li>st/xorg: Fix compilation errors for Xservers compiled without Composite</li>
+ <li>st/xorg: Don't use deprecated x*alloc / xfree functions</li>
+ <li>xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions</li>
+ <li>st/xorg: Fix compilation for Xservers &gt;= 1.10</li>
+ <li>mesa: Make sure we have the talloc cflags when using the talloc headers</li>
+ <li>egl: Add an include for size_t</li>
+ <li>mesa: Add talloc includes for gles</li>
+ <li>st/egl: Fix build for include files in nonstandard places</li>
+ <li>svga/drm: Optionally resolve calls to powf during link-time</li>
+ <li>gallium/targets: Trivial crosscompiling fix</li>
+ <li>st/xorg: Add a function to flush pending rendering and damage</li>
+ <li>gallium/targets/xorg-vmwgfx: Xv fixes</li>
+ <li>xorg/vmwgfx: Flush even if we don't autopaint the color key</li>
+ <li>xorg/vmwgfx: Don't clip video to viewport</li>
+</ul></p>
+
+<p>Tilman Sauerbeck (35):
+<ul>
+ <li>r600g: Fixed a bo leak in r600_blit_state_ps_shader().</li>
+ <li>r600g: Use clamped math for RCP and RSQ.</li>
+ <li>r600g: Formatting fixes.</li>
+ <li>r600g: Added DB_SHADER_CONTROL defines.</li>
+ <li>r600g: Only set PA_SC_EDGERULE on rv770 and greater.</li>
+ <li>r600g: Enable PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED.</li>
+ <li>r600g: Fixed the shift in S_02880C_KILL_ENABLE.</li>
+ <li>glsl2: Empty functions can be inlined.</li>
+ <li>glsl2: Fixed cloning of ir_call error instructions.</li>
+ <li>r600g: Added support for TGSI_SEMANTIC_FACE.</li>
+ <li>gallium/docs: Fixed a typo in the SCS opcode description.</li>
+ <li>r600g: Honour destination operand's writemask in the SCS implementation.</li>
+ <li>r600g: Implemented the Z and W component write for the SCS opcode.</li>
+ <li>python/tests: Fixed tri.py for API and TGSI syntax changes.</li>
+ <li>r600g: Removed debug code.</li>
+ <li>gallium/docs: The RET opcode may appear anywhere in a subroutine.</li>
+ <li>r600g: Destroy the blitter.</li>
+ <li>r600g: Fixed two texture surface leaks in r600_blit_uncompress_depth().</li>
+ <li>r600g: Cleaned up index buffer reference handling in the draw module.</li>
+ <li>r600g: Fixed r600_vertex_element leak.</li>
+ <li>r600g: Added r600_pipe_shader_destroy().</li>
+ <li>r600g: Also clear bc data when we're destroying a shader.</li>
+ <li>r600g: In radeon_bo(), call LIST_INITHEAD early.</li>
+ <li>r600g: Destroy the blitter.</li>
+ <li>r600g: Removed unused 'ptr' argument from radeon_bo().</li>
+ <li>r600g: Made radeon_bo_pb_map_internal() actually call radeon_bo_map().</li>
+ <li>r600g: Fixed unmap condition in radeon_bo_pb_destroy().</li>
+ <li>r600g: Made radeon_bo::map_count signed.</li>
+ <li>r600g: We don't support PIPE_CAP_PRIMITIVE_RESTART.</li>
+ <li>r600g: Delete custom_dsa_flush on shutdown.</li>
+ <li>r600g: Fixed two memory leaks in winsys.</li>
+ <li>r600g: Destroy the winsys in r600_destroy_screen().</li>
+ <li>st/mesa: Reset the index buffer before destroying the pipe context.</li>
+ <li>st/mesa: Reset the constant buffers before destroying the pipe context.</li>
+ <li>r600g: Removed duplicated call to tgsi_split_literal_constant().</li>
+</ul></p>
+
+<p>Timo Wiren (1):
+<ul>
+ <li>Fix typos in comments and debug output strings.</li>
+</ul></p>
+
+<p>Tom Fogal (3):
+<ul>
+ <li>Implement x86_64 atomics for compilers w/o intrinsics.</li>
+ <li>Prefer intrinsics to handrolled atomic ops.</li>
+ <li>Revert "Prefer intrinsics to handrolled atomic ops."</li>
+</ul></p>
+
+<p>Tom Stellard (32):
+<ul>
+ <li>r300/compiler: Refactor the pair instruction data structures</li>
+ <li>r300g: Always try to build libr300compiler.a</li>
+ <li>r300/compiler: Fix two mistakes in the presubtract optimization pass.</li>
+ <li>r300/compiler: Add more helper functions for iterating through sources</li>
+ <li>r300/compiler: Print immediate values after "dead constants" pass</li>
+ <li>r300/compiler: radeon_remove_constants.c: fix indentation</li>
+ <li>r300/compiler: Use rc_for_all_reads_src() in "dead constants" pass</li>
+ <li>r300/compiler: Fix segfault in error path</li>
+ <li>r300/compiler: Don't use rc_error() unless the error is unrecoverable</li>
+ <li>r300/compiler: Don't merge instructions that write output regs and ALU result</li>
+ <li>r300/compiler: Create a helper function for merging presubtract sources</li>
+ <li>r300/compiler: Fix incorrect assumption</li>
+ <li>r300/compiler: Clear empty registers after constant folding</li>
+ <li>r300/compiler: Add a new function for more efficient dataflow analysis</li>
+ <li>r300g: Add new debug option for logging vertex/fragment program stats</li>
+ <li>r300/compiler: Use rc_get_readers_normal() for presubtract optimizations</li>
+ <li>r300/compiler: Don't clobber presubtract sources during optimizations</li>
+ <li>r300/compiler: Don't track readers into an IF block.</li>
+ <li>r300/compiler: Make sure presubtract sources use supported swizzles</li>
+ <li>r300/compiler: Fix register allocator's handling of loops</li>
+ <li>r300/compiler: Fix instruction scheduling within IF blocks</li>
+ <li>r300/compiler: Use zero as the register index for unused sources</li>
+ <li>r300/compiler: Ignore alpha dest register when replicating the result</li>
+ <li>r300/compiler: Add rc_get_readers()</li>
+ <li>r300/compiler: Handle BREAK and CONTINUE in rc_get_readers()</li>
+ <li>r300/compiler: Track readers through branches in rc_get_readers()</li>
+ <li>r300/compiler: Convert RGB to alpha in the scheduler</li>
+ <li>r300/compiler: Use presubtract operations as much as possible</li>
+ <li>r300/compiler: Enable rename_reg pass for r500 cards</li>
+ <li>r300/compiler: Add a more efficient version of rc_find_free_temporary()</li>
+ <li>r300/compiler: Don't allow presubtract sources to be remapped twice</li>
+ <li>r300/compiler: Fix black terrain in Civ4</li>
+</ul></p>
+
+<p>Victor Tseng (1):
+<ul>
+ <li>egl/i965: include inline_wrapper_sw_helper.h</li>
+</ul></p>
+
+<p>Viktor Novotný (6):
+<ul>
+ <li>dri/nouveau: Import headers from rules-ng-ng</li>
+ <li>dri/nouveau: nv04: Use rules-ng-ng headers</li>
+ <li>dri/nouveau: nv10: Use rules-ng-ng headers</li>
+ <li>dri/nouveau nv20: Use rules-ng-ng headers</li>
+ <li>dri/nouveau: Remove nouveau_class.h, finishing switch to rules-ng-ng headers</li>
+ <li>dri/nouveau: Clean up magic numbers in get_rt_format</li>
+</ul></p>
+
+<p>Vinson Lee (214):
+<ul>
+ <li>llvmpipe: Remove unnecessary header.</li>
+ <li>r600g: Remove unnecessary headers.</li>
+ <li>mesa: Include missing header in program.h.</li>
+ <li>glsl: Fix 'format not a string literal and no format arguments' warning.</li>
+ <li>r600g: Silence uninitialized variable warning.</li>
+ <li>r600g: Silence uninitialized variable warning.</li>
+ <li>nvfx: Silence uninitialized variable warnings.</li>
+ <li>r600g: Silence uninitialized variable warning.</li>
+ <li>r600g: Silence uninitialized variable warning.</li>
+ <li>r600g: Silence uninitialized variable warning.</li>
+ <li>r600g: Silence unused variable warning.</li>
+ <li>nv50: Update files in SConscript to match Makefile.</li>
+ <li>nv50: Remove unnecessary headers.</li>
+ <li>nv50: Silence uninitialized variable warning.</li>
+ <li>nv50: Silence uninitialized variable warning.</li>
+ <li>nv50: Silence uninitialized variable warning.</li>
+ <li>gallivm: Remove unnecessary headers.</li>
+ <li>draw: Remove unnecessary header.</li>
+ <li>nv50: Silence uninitialized variable warnings.</li>
+ <li>nv50: Fix 'control reaches end of non-void function' warning.</li>
+ <li>mesa/st: Silence uninitialized variable warning.</li>
+ <li>gallivm: Remove unnecessary header.</li>
+ <li>r600g: Remove unnecessary header.</li>
+ <li>r600g: Remove unnecessary headers.</li>
+ <li>r600g: Fix implicit declaration warning.</li>
+ <li>r600g: Fix memory leak on error path.</li>
+ <li>r600g: Silence uninitialized variable warning.</li>
+ <li>r600g: Silence unused variable warnings.</li>
+ <li>mesa: bump version to 7.10</li>
+ <li>ir_to_mesa: Remove unused member array_indexed from struct statevar_element.</li>
+ <li>mesa: Silence "'valid_texture_object' defined but not used" warning.</li>
+ <li>x86: Silence unused variable warning on Mac OS X.</li>
+ <li>glsl: Fix 'control reaches end of non-void function' warning.</li>
+ <li>nvfx: Remove const qualifer from nvfx_vertprog_translate.</li>
+ <li>nvfx: Silence uninitialized variable warnings.</li>
+ <li>r600g: Remove unused variable.</li>
+ <li>nv50: Silence missing initializer warning.</li>
+ <li>nv50: Remove dead initialization.</li>
+ <li>nv50: Remove dead initialization.</li>
+ <li>tgsi: Remove duplicate case value.</li>
+ <li>glut: Define markWindowHidden for non-Windows only.</li>
+ <li>glut: Define eventParser for non-Windows only.</li>
+ <li>r300g: Silence uninitialized variable warning.</li>
+ <li>intel: Fix implicit declaration of function '_mesa_meta_Bitmap' warning.</li>
+ <li>mesa: Remove unnecessary headers.</li>
+ <li>r600g: Remove unnecessary header.</li>
+ <li>unichrome: Remove unnecessary header.</li>
+ <li>intel: Remove unnecessary headers.</li>
+ <li>r600g: Remove unused variable.</li>
+ <li>r600g: Disable unused variables.</li>
+ <li>r600g: Remove unused variable.</li>
+ <li>r600g: Silence 'control reaches end of non-void function' warning.</li>
+ <li>r600g: Remove unused variable.</li>
+ <li>r600g: Remove unused variable.</li>
+ <li>r600g: Disable unused variables.</li>
+ <li>intel: Remove unnecessary header.</li>
+ <li>st/dri: Remove unnecessary header.</li>
+ <li>r600g: Remove unused variable.</li>
+ <li>r300g: Remove unused variable.</li>
+ <li>r600g: Don't return a value in function returning void.</li>
+ <li>r600g: Remove unused variables.</li>
+ <li>r600g: Include p_compiler.h instead of malloc.h.</li>
+ <li>r600g: Silence uninitialized variable warnings.</li>
+ <li>scons: Add MinGW-w64 prefixes for MinGW build.</li>
+ <li>dri: Add GET_PROGRAM_NAME definition for Mac OS X.</li>
+ <li>scons: Add program/sampler.cpp to SCons build.</li>
+ <li>mesa: Fix printf format warning.</li>
+ <li>mesa: Fix printf format warning.</li>
+ <li>mesa: Fix printf format warning.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r600g: Update SConscript.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r600g: Update SConscript.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r600g: Update SConscript.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r600g: Fix SCons build.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r300/compiler: Remove declaration before code.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>glsl: Remove unnecessary header.</li>
+ <li>savage: Remove unnecessary header.</li>
+ <li>r600g: Remove unused variable.</li>
+ <li>r600g: Remove unnecessary headers.</li>
+ <li>r600g: Fix SCons build.</li>
+ <li>r600g: Remove unnecessary header.</li>
+ <li>gallivm: Remove unnecessary header.</li>
+ <li>r600g: Silence uninitialized variable warning.</li>
+ <li>r600g: Silence uninitialized variable warning.</li>
+ <li>r600g: Silence uninitialized variable warning.</li>
+ <li>i915: Silence unused variable warning in non-debug builds.</li>
+ <li>i915: Silence unused variable warning in non-debug builds.</li>
+ <li>i965: Silence unused variable warning on non-debug builds.</li>
+ <li>i965: Silence unused variable warning on non-debug builds.</li>
+ <li>i965: Initialize member variables.</li>
+ <li>r300: Silence uninitialized variable warning.</li>
+ <li>tdfx: Silence unused variable warning on non-debug builds.</li>
+ <li>gallivm: Remove unnecessary header.</li>
+ <li>glsl: Initialize variable in ir_derefence_array::constant_expression_value</li>
+ <li>mesa: Add missing header to shaderobj.h.</li>
+ <li>llvmpipe: Return non-zero exit code for lp_test_round failures.</li>
+ <li>r300/compiler: Remove unused variable.</li>
+ <li>st/xorg: Fix memory leak on error path.</li>
+ <li>llvmpipe: Initialize state variable in debug_bin function.</li>
+ <li>llvmpipe: Initialize variable.</li>
+ <li>draw: Move loop variable declaration outside for loop.</li>
+ <li>r600g: Ensure r600_src is initialized in tgsi_exp function.</li>
+ <li>glsl: Add assert for unhandled ir_shader case.</li>
+ <li>swrast: Print out format on unexpected failure in _swrast_DrawPixels.</li>
+ <li>llvmpipe: Remove unnecessary header.</li>
+ <li>draw: Remove unnecessary header.</li>
+ <li>gallivm: Silence uninitialized variable warnings.</li>
+ <li>gallivm: Silence uninitialized variable warnings.</li>
+ <li>gallivm: Silence uninitialized variable warning.</li>
+ <li>r300g: Silence uninitialized variable warning.</li>
+ <li>mesa: Remove unnecessary headers.</li>
+ <li>r600g: Silence uninitialized variable warnings.</li>
+ <li>st/mesa: Remove unnecessary header.</li>
+ <li>mesa: Remove unnecessary header.</li>
+ <li>egl: Remove unnecessary headers.</li>
+ <li>swrast: Print out format on unexpected failure in _swrast_ReadPixels.</li>
+ <li>st/mesa: Silence uninitialized variable warning.</li>
+ <li>savage: Remove unnecessary header.</li>
+ <li>st/vega: Remove unnecessary headers.</li>
+ <li>dri/nouveau: Silence uninitialized variable warning.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>i965: Silence uninitialized variable warning.</li>
+ <li>i965: Silence uninitialized variable warning.</li>
+ <li>mesa: Clean up header file inclusion in accum.h.</li>
+ <li>mesa: Clean up header file inclusion in version.h.</li>
+ <li>mesa: Clean up header file inclusion in api_loopback.h.</li>
+ <li>mesa: Clean up header file inclusion in api_validate.h.</li>
+ <li>mesa: Include mfeatures.h in api_loopback for FEATURE_beginend.</li>
+ <li>mesa: Include mfeatures.h in api_validate.c for FEATURE_* symbols.</li>
+ <li>mesa: Clean up header file inclusion in arrayobj.h.</li>
+ <li>mesa: Clean up header file inclusion in atifragshader.h.</li>
+ <li>mesa: Clean up header file inclusion in attrib.h.</li>
+ <li>mesa: Clean up header file inclusion in blend.h.</li>
+ <li>mesa: Clean up header file inclusion in buffers.h.</li>
+ <li>mesa: Clean up header file inclusion in colortab.h.</li>
+ <li>mesa: Clean up header file inclusion in convolve.h.</li>
+ <li>mesa: Clean up header file inclusion in debug.h.</li>
+ <li>mesa: Clean up header file inclusion in depth.h.</li>
+ <li>mesa: Clean up header file inclusion in depthstencil.h.</li>
+ <li>mesa: Clean up header file inclusion in drawpix.h.</li>
+ <li>mesa: Clean up header file inclusion in drawtex.h.</li>
+ <li>mesa: Clean up header file inclusion in enable.h.</li>
+ <li>mesa: Clean up header file inclusion in extensions.h.</li>
+ <li>graw: Add struct pipe_surface forward declaration.</li>
+ <li>mesa: Clean up header file inclusion in fbobject.h.</li>
+ <li>mesa: Clean up header file inclusion in ffvertex_prog.h.</li>
+ <li>mesa: Clean up header file inclusion in fog.h.</li>
+ <li>mesa: Clean up header file inclusion in framebuffer.h.</li>
+ <li>mesa: Clean up header file inclusion in hint.h.</li>
+ <li>mesa: Clean up header file inclusion in histogram.h.</li>
+ <li>mesa: Clean up header file inclusion in image.h.</li>
+ <li>mesa: Add missing header and forward declarations in dd.h.</li>
+ <li>mesa: Clean up header file inclusion in light.h.</li>
+ <li>mesa: Clean up header file inclusion in lines.h.</li>
+ <li>mesa: Clean up header file inclusion in matrix.h.</li>
+ <li>mesa: Clean up header file inclusion in multisample.h.</li>
+ <li>mesa: Clean up header file inclusion in nvprogram.h.</li>
+ <li>winsys/xlib: Add cygwin to SConscript.</li>
+ <li>mesa: Clean up header file inclusion in pixel.h.</li>
+ <li>mesa: Clean up header file inclusion in pixelstore.h.</li>
+ <li>mesa: Fix printf format warnings.</li>
+ <li>mesa: Clean up header file inclusion in points.h.</li>
+ <li>i965: Silence uninitialized variable warning.</li>
+ <li>glsl: Add ir_constant_expression.cpp to SConscript.</li>
+ <li>mesa: Add definitions for inverse hyperbolic function on MSVC.</li>
+ <li>glsl: Fix 'control reaches end of non-void function' warning.</li>
+ <li>glsl: Add lower_vector.cpp to SConscript.</li>
+ <li>glsl: Fix type of label 'default' in switch statement.</li>
+ <li>st/mesa: Remove unnecessary headers.</li>
+ <li>swrast: Remove unnecessary header.</li>
+ <li>r600: Remove unnecesary header.</li>
+ <li>intel: Remove unnecessary header.</li>
+ <li>mesa: Clean up header file inclusion in polygon.h.</li>
+ <li>mesa: Clean up header file inclusion in rastpos.h.</li>
+ <li>mesa: Clean up header file inclusion in readpix.h.</li>
+ <li>mesa: Clean up header file inclusion in renderbuffer.h.</li>
+ <li>mesa: Clean up header file inclusion in scissor.h.</li>
+ <li>mesa: Clean up header file inclusion in shaderapi.h.</li>
+ <li>mesa: Clean up header file inclusion in shared.h.</li>
+ <li>mesa: Clean up header file inclusion in stencil.h.</li>
+ <li>r600: Remove unnecessary header.</li>
+ <li>llvmpipe: Remove unnecessary headers.</li>
+ <li>mesa: Clean up header file inclusion in syncobj.h.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>r300/compiler: Move declaration before code.</li>
+ <li>mesa: Clean up header file inclusion in texcompress.h.</li>
+ <li>st/vega: Silence uninitialized variable warning.</li>
+ <li>mesa: Clean up header file inclusion in texcompress_s3tc.h.</li>
+ <li>mesa: Clean up header file inclusion in texenvprogram.h.</li>
+ <li>mesa: Clean up header file inclusion in texformat.h.</li>
+ <li>mesa: Clean up header file inclusion in texgetimage.h.</li>
+ <li>mesa: Clean up header file inclusion in texobj.h.</li>
+ <li>gallium/noop: Add prototype for noop_init_state_functions.</li>
+ <li>mesa: Clean up header file inclusion in texrender.h.</li>
+ <li>mesa: Clean up header file inclusion in transformfeedback.h.</li>
+ <li>mesa: Clean up header file inclusion in varray.h.</li>
+ <li>mesa: Clean up header file inclusion in viewport.h.</li>
+ <li>r200: Silence uninitialized variable warning.</li>
+ <li>r600g: Fix SCons build.</li>
+ <li>i965: Silence uninitialized variable warning.</li>
+</ul></p>
+
+<p>Xavier Chantry (8):
+<ul>
+ <li>nv50: fix size of outputs_written array</li>
+ <li>nv50: apply layout_mask to tile_flags</li>
+ <li>nvfx: only expose one rt on nv30</li>
+ <li>nvfx: fb-&gt;nr_cbufs &lt= 1 on nv30</li>
+ <li>nvfx: reset nvfx-&gt;hw_zeta</li>
+ <li>nvfx: fixes after array textures merge</li>
+ <li>init ps-&gt;context with util_surfaces_get and do_get</li>
+ <li>gallium/trace: check bind_vertex_sampler_states and set_vertex_sampler_views</li>
+</ul></p>
+
+<p>Xiang, Haihao (10):
+<ul>
+ <li>mesa: fix regression from b4bb6680200b5a898583392f4c831c02f41e63f7</li>
+ <li>i965: add support for polygon mode on Sandybridge.</li>
+ <li>i965: fix for flat shading on Sandybridge</li>
+ <li>i965: set minimum/maximum Point Width on Sandybridge</li>
+ <li>meta: allow nested meta operations</li>
+ <li>i965: support for two-sided lighting on Sandybridge</li>
+ <li>i965: fix register region description</li>
+ <li>i965: use align1 access mode for instructions with execSize=1 in VS</li>
+ <li>i965: don't spawn GS thread for LINELOOP on Sandybridge</li>
+ <li>i965: use BLT to clear buffer if possible on Sandybridge</li>
+</ul></p>
+
+<p>Zack Rusin (8):
+<ul>
+ <li>rbug: fix rbug when contexts are being destroyed</li>
+ <li>llvmpipe: fix rasterization of vertical lines on pixel boundaries</li>
+ <li>scons: build the xorg state trackers only when env includes drm</li>
+ <li>gallivm: implement indirect addressing of the output registers</li>
+ <li>gallivm: implement indirect addressing over inputs</li>
+ <li>gallivm: fix storing of the addr register</li>
+ <li>scons: add alias for identity</li>
+ <li>gallium/util: add states relevant to geometry shaders</li>
+</ul></p>
+
+<p>Zhenyu Wang (40):
+<ul>
+ <li>i965: disasm quarter and write enable instruction control on sandybridge</li>
+ <li>i965: new state dump for sandybridge</li>
+ <li>i965: enable accumulator update in PS kernel too on sandybridge</li>
+ <li>i965: Fix color interpolation on sandybridge</li>
+ <li>i965: force zero in clipper to ignore RTAIndex on sandybridge</li>
+ <li>i965: fix point size setting in header on sandybridge</li>
+ <li>i965: ff sync message change for sandybridge</li>
+ <li>i965: ignore quads for GS kernel on sandybridge</li>
+ <li>i965: add sandybridge viewport state bo into validation list</li>
+ <li>i965: VS use SPF mode on sandybridge for now</li>
+ <li>i965: fix jump count on sandybridge</li>
+ <li>i965: Fix sampler on sandybridge</li>
+ <li>i965: fix const register count for sandybridge</li>
+ <li>i965: Add all device ids for sandybridge</li>
+ <li>i965: sandybridge pipe control workaround before write cache flush</li>
+ <li>i965: only allow SIMD8 kernel on sandybridge now</li>
+ <li>i965: don't do calculation for delta_xy on sandybridge</li>
+ <li>i965: fix pixel w interpolation on sandybridge</li>
+ <li>i965: enable polygon offset on sandybridge</li>
+ <li>i965: fix scissor state on sandybridge</li>
+ <li>i965: fix point sprite on sandybridge</li>
+ <li>i965: fix occlusion query on sandybridge</li>
+ <li>i965: fallback bitmap operation on sandybridge</li>
+ <li>i965: Always set tiling for depth buffer on sandybridge</li>
+ <li>i965: fallback lineloop on sandybridge for now</li>
+ <li>Revert "i965: Always set tiling for depth buffer on sandybridge"</li>
+ <li>i965: always set tiling for fbo depth buffer on sandybridge</li>
+ <li>i965: Fix GS hang on Sandybridge</li>
+ <li>Revert "i965: fallback lineloop on sandybridge for now"</li>
+ <li>i965: refresh wm push constant also for BRW_NEW_FRAMENT_PROGRAM on gen6</li>
+ <li>i965: fix dest type of 'endif' on sandybridge</li>
+ <li>Revert "i965: VS use SPF mode on sandybridge for now"</li>
+ <li>i965: also using align1 mode for math2 on sandybridge</li>
+ <li>i965: Fix GS state uploading on Sandybridge</li>
+ <li>i965: upload WM state for _NEW_POLYGON on sandybridge</li>
+ <li>i965: Use MI_FLUSH_DW for blt ring flush on sandybridge</li>
+ <li>i965: explicit tell header present for fb write on sandybridge</li>
+ <li>i965: Fix occlusion query on sandybridge</li>
+ <li>i965: Use last vertex convention for quad provoking vertex on sandybridge</li>
+ <li>i965: Fix provoking vertex select in clip state for sandybridge</li>
+</ul></p>
+
+<p>Zou Nan hai (1):
+<ul>
+ <li>i965: skip too small size mipmap</li>
+</ul></p>
+
+<p>delphi (2):
+<ul>
+ <li>draw: added userclip planes and updated variant_key</li>
+ <li>draw: some changes to allow for runtime changes to userclip planes</li>
+</ul></p>
+
+<p>nobled (3):
+<ul>
+ <li>r300g: Abort if atom allocations fail</li>
+ <li>r300g: Abort if draw_create() fails</li>
+ <li>r300g: Drop unnecessary cast</li>
+</ul></p>
+
+<p>pontus lidman (1):
+<ul>
+ <li>mesa: check for posix_memalign() errors</li>
+</ul></p>
+
+<p>richard (2):
+<ul>
+ <li>evergreen : fix z format setting, enable stencil.</li>
+ <li>r600c : inline vertex format is not updated in an app, switch to use vfetch constants. For the 7.9 and 7.10 branches as well.</li>
+</ul></p>
+
+</body>
+</html>
diff --git a/mesalib/docs/relnotes-7.8.2.html b/mesalib/docs/relnotes-7.8.2.html
index 5ee7e12d2..1393b2ede 100644
--- a/mesalib/docs/relnotes-7.8.2.html
+++ b/mesalib/docs/relnotes-7.8.2.html
@@ -1,146 +1,146 @@
-<HTML>
-
-<TITLE>Mesa Release Notes</TITLE>
-
-<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
-
-<BODY>
-
-<body bgcolor="#eeeeee">
-
-<H1>Mesa 7.8.2 Release Notes / (date tbd)</H1>
-
-<p>
-Mesa 7.8.2 is a bug fix release which fixes bugs found since the 7.8.1 release.
-</p>
-<p>
-Mesa 7.8.2 implements the OpenGL 2.1 API, but the version reported by
-glGetString(GL_VERSION) depends on the particular driver being used.
-Some drivers don't support all the features required in OpenGL 2.1.
-</p>
-<p>
-See the <a href="install.html">Compiling/Installing page</a> for prerequisites
-for DRI hardware acceleration.
-</p>
-
-
-<h2>MD5 checksums</h2>
-<pre>
-c89b63d253605ed40e8ac370d25a833c MesaLib-7.8.2.tar.gz
-6be2d343a0089bfd395ce02aaf8adb57 MesaLib-7.8.2.tar.bz2
-a04ad3b06ac5ff3969a003fa7bbf7d5b MesaLib-7.8.2.zip
-7c213f92efeb471f0331670d5079d4c0 MesaDemos-7.8.2.tar.gz
-757d9e2e06f48b1a52848be9b0307ced MesaDemos-7.8.2.tar.bz2
-8d0e5cfe68b8ebf90265d350ae2c48b1 MesaDemos-7.8.2.zip
-b74482e3f44f35ed395c4aada4fd8240 MesaGLUT-7.8.2.tar.gz
-a471807b65e49c325808ba4551be93ed MesaGLUT-7.8.2.tar.bz2
-9f190268c42be582ef66e47365ee61e3 MesaGLUT-7.8.2.zip
-</pre>
-
-
-<h2>New features</h2>
-<p>None.</p>
-
-
-<h2>Changes</h2>
-<ul>
-<li>Upgraded glext.h to version 61, and upgraded glxext.h
-</ul>
-
-
-<h2>Bug fixes</h2>
-<ul>
-<li>Fixed Gallium glDrawPixels(GL_DEPTH_COMPONENT).
-<li>Fixed Gallium Cell driver to buildable, runable state
-<li>Fixed bad error checking for glFramebufferRenderbuffer(attachment=GL_DEPTH_STENCIL_ATTACHMENT).
-<li>Fixed incorrect Z coordinate handling in "meta" glDraw/CopyPixels.
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=23670">Bug
- #23670</a>.</li>
-
-<li>Assorted i965 driver fixes.
- Including but not limited to:
- <ul>
- <li>Fix scissoring when width or height is
- 0. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27643">Bug
- #27643</a>.
- <li>Fix bit allocation for number of color regions for
- ARB_draw_buffers.</li>
- <li>Set the correct provoking vertex for clipped first-mode
- trifans. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=24470">Bug
- #24470</a>.</li>
- <li>Use <code>R16G16B16A16_FLOAT</code> for 3-component half-float.</li>
- <li>Fix assertion for surface tile offset usage on Ironlake.</li>
- <li>Fix cube map layouts on Ironlake.</li>
- <li>When an RB gets a new region, clear the old from the state
- cache. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=24119">Bug
- #24119</a>.</li>
- <li>Reject shaders with uninlined function calls instead of hanging.</li>
- </ul>
-</li>
-
-<li>Assorted i915 driver fixes. Including but not limited to:
- <ul>
- <li>Fixed texture LOD clamping in i915 driver.
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=24846">Bug
- #24846</a>.</li>
- <li>Fix off-by-one for drawing rectangle.
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27408">Bug
- #27408</a>.</li>
- </ul>
-</li>
-
-<li>Fixed hangs in etracer on 830 and 845
- chipsets. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=26557">Bug
- #26557</a>.</li>
-<li>Fixed tiling of small textures on all Intel drivers.</li>
-<li>Fixed crash in Savage driver when using <code>_mesa_CopyTexImage2D</code>.
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27652">Bug
- #27652</a>.</li>
-
-<li>Assorted GLX fixes. Including but not limited to:
- <ul>
- <li>Fixed <code>__glXInitializeVisualConfigFromTags</code>'s handling of
- unrecognized fbconfig tags.</li>
- <li>Fixed regression with <code>GLX_USE_GL</code>.
- <li>Fixed config chooser logic for 'mask' matching.</li>
- <li>Report swap events correctly in direct rendered case (DRI2)</li>
- <li>Fixed build with dri2proto which doesn't define
- <code>X_DRI2SwapInterval</code>.</li>
- <li>Get <code>GLX_SCREEN</code> first in <code>__glXQueryContextInfo</code>.
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=14245">Bug
- #14245</a>.</li>
- </ul>
-</li>
-
-<li>Assorted GLSL fixes. Including but not limited to:
- <ul>
- <li>Change variable declared assertion into conditional in GLSL
- compiler. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27921">Bug
- #27921</a>.</li>
- <li>Fix instruction indexing
- bugs. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27566">Bug
- #27566</a>.</li>
- <li>Updated uniform location / offset encoding to be more like
- other implementations.</li>
- <li>Don't overwrite a driver's shader infolog with generic failure
- message.</li>
- </ul>
-</li>
-
-<li>Fixed OSMesa build for 16 and 32-bit color channel depth.
-<li>Fixed OSMesa build with hidden symbol visibility. libOSMesa no longer links to libGL.
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=28305">Bug
- #28305</a>.
-<li>Fixed handling of multiple render targets in fixed-function
- texture envrionmnent programs.</li>
-<li>Fixed conversion errors in <code>signed_rgba8888[rev]</code> texel
- fetch.</li>
-<li>Don't set srcLevel on <code>GL_TEXTURE_RECTANGLE_ARB</code> targets.</li>
-<li>Various build fixes for OpenBSD.</li>
-<li>Various build fixes for OS X.</li>
-<li>Various build fixes for GCC 3.3.</li>
-</ul>
-
-
-</body>
-</html>
+<HTML>
+
+<TITLE>Mesa Release Notes</TITLE>
+
+<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<body bgcolor="#eeeeee">
+
+<H1>Mesa 7.8.2 Release Notes / (date tbd)</H1>
+
+<p>
+Mesa 7.8.2 is a bug fix release which fixes bugs found since the 7.8.1 release.
+</p>
+<p>
+Mesa 7.8.2 implements the OpenGL 2.1 API, but the version reported by
+glGetString(GL_VERSION) depends on the particular driver being used.
+Some drivers don't support all the features required in OpenGL 2.1.
+</p>
+<p>
+See the <a href="install.html">Compiling/Installing page</a> for prerequisites
+for DRI hardware acceleration.
+</p>
+
+
+<h2>MD5 checksums</h2>
+<pre>
+c89b63d253605ed40e8ac370d25a833c MesaLib-7.8.2.tar.gz
+6be2d343a0089bfd395ce02aaf8adb57 MesaLib-7.8.2.tar.bz2
+a04ad3b06ac5ff3969a003fa7bbf7d5b MesaLib-7.8.2.zip
+7c213f92efeb471f0331670d5079d4c0 MesaDemos-7.8.2.tar.gz
+757d9e2e06f48b1a52848be9b0307ced MesaDemos-7.8.2.tar.bz2
+8d0e5cfe68b8ebf90265d350ae2c48b1 MesaDemos-7.8.2.zip
+b74482e3f44f35ed395c4aada4fd8240 MesaGLUT-7.8.2.tar.gz
+a471807b65e49c325808ba4551be93ed MesaGLUT-7.8.2.tar.bz2
+9f190268c42be582ef66e47365ee61e3 MesaGLUT-7.8.2.zip
+</pre>
+
+
+<h2>New features</h2>
+<p>None.</p>
+
+
+<h2>Changes</h2>
+<ul>
+<li>Upgraded glext.h to version 61, and upgraded glxext.h
+</ul>
+
+
+<h2>Bug fixes</h2>
+<ul>
+<li>Fixed Gallium glDrawPixels(GL_DEPTH_COMPONENT).
+<li>Fixed Gallium Cell driver to buildable, runable state
+<li>Fixed bad error checking for glFramebufferRenderbuffer(attachment=GL_DEPTH_STENCIL_ATTACHMENT).
+<li>Fixed incorrect Z coordinate handling in "meta" glDraw/CopyPixels.
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=23670">Bug
+ #23670</a>.</li>
+
+<li>Assorted i965 driver fixes.
+ Including but not limited to:
+ <ul>
+ <li>Fix scissoring when width or height is
+ 0. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27643">Bug
+ #27643</a>.
+ <li>Fix bit allocation for number of color regions for
+ ARB_draw_buffers.</li>
+ <li>Set the correct provoking vertex for clipped first-mode
+ trifans. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=24470">Bug
+ #24470</a>.</li>
+ <li>Use <code>R16G16B16A16_FLOAT</code> for 3-component half-float.</li>
+ <li>Fix assertion for surface tile offset usage on Ironlake.</li>
+ <li>Fix cube map layouts on Ironlake.</li>
+ <li>When an RB gets a new region, clear the old from the state
+ cache. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=24119">Bug
+ #24119</a>.</li>
+ <li>Reject shaders with uninlined function calls instead of hanging.</li>
+ </ul>
+</li>
+
+<li>Assorted i915 driver fixes. Including but not limited to:
+ <ul>
+ <li>Fixed texture LOD clamping in i915 driver.
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=24846">Bug
+ #24846</a>.</li>
+ <li>Fix off-by-one for drawing rectangle.
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27408">Bug
+ #27408</a>.</li>
+ </ul>
+</li>
+
+<li>Fixed hangs in etracer on 830 and 845
+ chipsets. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=26557">Bug
+ #26557</a>.</li>
+<li>Fixed tiling of small textures on all Intel drivers.</li>
+<li>Fixed crash in Savage driver when using <code>_mesa_CopyTexImage2D</code>.
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27652">Bug
+ #27652</a>.</li>
+
+<li>Assorted GLX fixes. Including but not limited to:
+ <ul>
+ <li>Fixed <code>__glXInitializeVisualConfigFromTags</code>'s handling of
+ unrecognized fbconfig tags.</li>
+ <li>Fixed regression with <code>GLX_USE_GL</code>.
+ <li>Fixed config chooser logic for 'mask' matching.</li>
+ <li>Report swap events correctly in direct rendered case (DRI2)</li>
+ <li>Fixed build with dri2proto which doesn't define
+ <code>X_DRI2SwapInterval</code>.</li>
+ <li>Get <code>GLX_SCREEN</code> first in <code>__glXQueryContextInfo</code>.
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=14245">Bug
+ #14245</a>.</li>
+ </ul>
+</li>
+
+<li>Assorted GLSL fixes. Including but not limited to:
+ <ul>
+ <li>Change variable declared assertion into conditional in GLSL
+ compiler. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27921">Bug
+ #27921</a>.</li>
+ <li>Fix instruction indexing
+ bugs. <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27566">Bug
+ #27566</a>.</li>
+ <li>Updated uniform location / offset encoding to be more like
+ other implementations.</li>
+ <li>Don't overwrite a driver's shader infolog with generic failure
+ message.</li>
+ </ul>
+</li>
+
+<li>Fixed OSMesa build for 16 and 32-bit color channel depth.
+<li>Fixed OSMesa build with hidden symbol visibility. libOSMesa no longer links to libGL.
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=28305">Bug
+ #28305</a>.
+<li>Fixed handling of multiple render targets in fixed-function
+ texture envrionmnent programs.</li>
+<li>Fixed conversion errors in <code>signed_rgba8888[rev]</code> texel
+ fetch.</li>
+<li>Don't set srcLevel on <code>GL_TEXTURE_RECTANGLE_ARB</code> targets.</li>
+<li>Various build fixes for OpenBSD.</li>
+<li>Various build fixes for OS X.</li>
+<li>Various build fixes for GCC 3.3.</li>
+</ul>
+
+
+</body>
+</html>
diff --git a/mesalib/docs/relnotes-7.8.3.html b/mesalib/docs/relnotes-7.8.3.html
index e729ee820..1e9f43313 100644
--- a/mesalib/docs/relnotes-7.8.3.html
+++ b/mesalib/docs/relnotes-7.8.3.html
@@ -1,89 +1,89 @@
-<HTML>
-
-<TITLE>Mesa Release Notes</TITLE>
-
-<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
-
-<BODY>
-
-<body bgcolor="#eeeeee">
-
-<H1>Mesa 7.8.3 Release Notes / (date tbd)</H1>
-
-<p>
-Mesa 7.8.3 is a bug fix release which fixes bugs found since the 7.8.2 release.
-</p>
-<p>
-Mesa 7.8.3 implements the OpenGL 2.1 API, but the version reported by
-glGetString(GL_VERSION) depends on the particular driver being used.
-Some drivers don't support all the features required in OpenGL 2.1.
-</p>
-<p>
-See the <a href="install.html">Compiling/Installing page</a> for prerequisites
-for DRI hardware acceleration.
-</p>
-
-
-<h2>MD5 checksums</h2>
-<pre>
-x MesaLib-7.8.3.tar.gz
-x MesaLib-7.8.3.tar.bz2
-x MesaLib-7.8.3.zip
-x MesaDemos-7.8.3.tar.gz
-x MesaDemos-7.8.3.tar.bz2
-x MesaDemos-7.8.3.zip
-x MesaGLUT-7.8.3.tar.gz
-x MesaGLUT-7.8.3.tar.bz2
-x MesaGLUT-7.8.3.zip
-</pre>
-
-
-<h2>New features</h2>
-<p>None.</p>
-
-
-<h2>Changes</h2>
-<ul>
-<li>The radeon driver should use less memory when searching for a valid mip
-image.</li>
-</ul>
-
-
-<h2>Bug fixes</h2>
-<ul>
-<li>Fix unsupported FB with D24S8 (bug
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=23670">29116</a>)</li>
-<li>Fix ReadPixels crash when reading depth/stencil from an FBO</li>
-<li>Fixed a bug rendering to 16-bit buffers using swrast.</li>
-<li>Fixed a state tracker/TGSI bug that caused crashes when using Windows'
- memory debugging features.</li>
-<li>Fixed an issue rendering to 32-bit channels with swrast (bug
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=29487">29487</a>)</li>
-<li>GLSL: fix indirect <TT>gl_TextureMatrix</TT> addressing (bug
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=28967">28967</a>)</li>
-<li>GLSL: fix for bug
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27216">27216</a></li>
-<li>GLSL: fix zw fragcoord entries in some cases (bug
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=29183">29183</a>)</li>
-<li>Fix texture env generation in some cases (bug
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=28169">28169</a>)</li>
-<li>osmesa: a fix for calling <TT>OSMesaMakeCurrent</TT> twice was applied (bug
- <a href="https://bugs.freedesktop.org/show_bug.cgi?id=10966">10966</a></li>
-<li>A bug was fixed which could cause Mesa to ignore the
- <TT>MESA_EXTENSION_OVERRIDE</TT> environment variable.</li>
-<li>A bug related to specular highlights on backfaces was fixed.</li>
-<li>A radeon-specific issue with <TT>glCopyTex(Sub)Image</TT> was
- corrected.</li>
-<li>radeon/wine: flush command stream in more cases, fixing wine d3d9
- tests.</li>
-<li>r600: fix sin+cos normalization.</li>
-<li>r600: (properly) ignore <TT>GL_COORD_REPLACE</TT> when point sprites are
- disabled.</li>
-<li>radeon: avoid flushing when the context is not current.</li>
-<li>r300c: a bug affecting unaligned BOs was fixed.</li>
-<li>r300c: a hardlock caused by ARB_half_float_vertex incorrectly advertised on some chipsets.</li>
-</ul>
-
-
-</body>
-</html>
+<HTML>
+
+<TITLE>Mesa Release Notes</TITLE>
+
+<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<body bgcolor="#eeeeee">
+
+<H1>Mesa 7.8.3 Release Notes / (date tbd)</H1>
+
+<p>
+Mesa 7.8.3 is a bug fix release which fixes bugs found since the 7.8.2 release.
+</p>
+<p>
+Mesa 7.8.3 implements the OpenGL 2.1 API, but the version reported by
+glGetString(GL_VERSION) depends on the particular driver being used.
+Some drivers don't support all the features required in OpenGL 2.1.
+</p>
+<p>
+See the <a href="install.html">Compiling/Installing page</a> for prerequisites
+for DRI hardware acceleration.
+</p>
+
+
+<h2>MD5 checksums</h2>
+<pre>
+x MesaLib-7.8.3.tar.gz
+x MesaLib-7.8.3.tar.bz2
+x MesaLib-7.8.3.zip
+x MesaDemos-7.8.3.tar.gz
+x MesaDemos-7.8.3.tar.bz2
+x MesaDemos-7.8.3.zip
+x MesaGLUT-7.8.3.tar.gz
+x MesaGLUT-7.8.3.tar.bz2
+x MesaGLUT-7.8.3.zip
+</pre>
+
+
+<h2>New features</h2>
+<p>None.</p>
+
+
+<h2>Changes</h2>
+<ul>
+<li>The radeon driver should use less memory when searching for a valid mip
+image.</li>
+</ul>
+
+
+<h2>Bug fixes</h2>
+<ul>
+<li>Fix unsupported FB with D24S8 (bug
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=23670">29116</a>)</li>
+<li>Fix ReadPixels crash when reading depth/stencil from an FBO</li>
+<li>Fixed a bug rendering to 16-bit buffers using swrast.</li>
+<li>Fixed a state tracker/TGSI bug that caused crashes when using Windows'
+ memory debugging features.</li>
+<li>Fixed an issue rendering to 32-bit channels with swrast (bug
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=29487">29487</a>)</li>
+<li>GLSL: fix indirect <TT>gl_TextureMatrix</TT> addressing (bug
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=28967">28967</a>)</li>
+<li>GLSL: fix for bug
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27216">27216</a></li>
+<li>GLSL: fix zw fragcoord entries in some cases (bug
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=29183">29183</a>)</li>
+<li>Fix texture env generation in some cases (bug
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=28169">28169</a>)</li>
+<li>osmesa: a fix for calling <TT>OSMesaMakeCurrent</TT> twice was applied (bug
+ <a href="https://bugs.freedesktop.org/show_bug.cgi?id=10966">10966</a></li>
+<li>A bug was fixed which could cause Mesa to ignore the
+ <TT>MESA_EXTENSION_OVERRIDE</TT> environment variable.</li>
+<li>A bug related to specular highlights on backfaces was fixed.</li>
+<li>A radeon-specific issue with <TT>glCopyTex(Sub)Image</TT> was
+ corrected.</li>
+<li>radeon/wine: flush command stream in more cases, fixing wine d3d9
+ tests.</li>
+<li>r600: fix sin+cos normalization.</li>
+<li>r600: (properly) ignore <TT>GL_COORD_REPLACE</TT> when point sprites are
+ disabled.</li>
+<li>radeon: avoid flushing when the context is not current.</li>
+<li>r300c: a bug affecting unaligned BOs was fixed.</li>
+<li>r300c: a hardlock caused by ARB_half_float_vertex incorrectly advertised on some chipsets.</li>
+</ul>
+
+
+</body>
+</html>
diff --git a/mesalib/docs/relnotes-7.9.1.html b/mesalib/docs/relnotes-7.9.1.html
index c12db4a50..bef4ef1dd 100644
--- a/mesalib/docs/relnotes-7.9.1.html
+++ b/mesalib/docs/relnotes-7.9.1.html
@@ -1,406 +1,406 @@
-<HTML>
-
-<head>
-<TITLE>Mesa Release Notes</TITLE>
-<link rel="stylesheet" type="text/css" href="mesa.css">
-<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-</head>
-
-<BODY>
-
-<body bgcolor="#eeeeee">
-
-<H1>Mesa 7.9.1 Release Notes / January 7, 2011</H1>
-
-<p>
-Mesa 7.9.1 is a bug fix release which fixes bugs found since the 7.9 release.
-</p>
-<p>
-Mesa 7.9.1 implements the OpenGL 2.1 API, but the version reported by
-glGetString(GL_VERSION) depends on the particular driver being used.
-Some drivers don't support all the features required in OpenGL 2.1.
-</p>
-<p>
-See the <a href="install.html">Compiling/Installing page</a> for prerequisites
-for DRI hardware acceleration.
-</p>
-
-
-<h2>MD5 checksums</h2>
-<pre>
-78422843ea875ad4eac35b9b8584032b MesaLib-7.9.1.tar.gz
-07dc6cfb5928840b8b9df5bd1b3ae434 MesaLib-7.9.1.tar.bz2
-c8eaea5b3c3d6dee784bd8c2db91c80f MesaLib-7.9.1.zip
-ee9ecae4ca56fbb2d14dc15e3a0a7640 MesaGLUT-7.9.1.tar.gz
-41fc477d524e7dc5c84da8ef22422bea MesaGLUT-7.9.1.tar.bz2
-90b287229afdf19317aa989d19462e7a MesaGLUT-7.9.1.zip
-</pre>
-
-
-<h2>New features</h2>
-<p>None.</p>
-
-<h2>Bug fixes</h2>
-<p>This list is likely incomplete.</p>
-<ul>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28800">Bug 28800</a> - [r300c, r300g] Texture corruption with World of Warcraft</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29420">Bug 29420</a> - Amnesia / HPL2 RendererFeatTest - not rendering correctly</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29946">Bug 29946</a> - [swrast] piglit valgrind glsl-array-bounds-04 fails</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30261">Bug 30261</a> - [GLSL 1.20] allowing inconsistent invariant declaration between two vertex shaders</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30632">Bug 30632</a> - [softpipe] state_tracker/st_manager.c:489: st_context_notify_invalid_framebuffer: Assertion `stfb &amp;&amp; stfb-&gt;iface == stfbi' failed.</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30694">Bug 30694</a> - wincopy will crash on Gallium drivers when going to front buffer</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30787">Bug 30787</a> - Invalid asm shader does not generate draw-time error when used with GLSL shader</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30993">Bug 30993</a> - getFramebufferAttachmentParameteriv wrongly generates error</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31101">Bug 31101</a> - [glsl2] abort() in ir_validate::visit_enter(ir_assignment *ir)</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31193">Bug 31193</a> - [regression] aa43176e break water reflections</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31194">Bug 31194</a> - The mesa meta save/restore code doesn't ref the current GLSL program</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31371">Bug 31371</a> - glslparsertest: ir.cpp:358: ir_constant::ir_constant(const glsl_type*, const ir_constant_data*): Assertion `(type->base_type &gt;= 0) &amp;&amp; (type->base_type &lt;= 3)' failed.</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31439">Bug 31439</a> - Crash in glBufferSubData() with size == 0</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31495">Bug 31495</a> - [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31514">Bug 31514</a> - isBuffer returns true for unbound buffers</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31560">Bug 31560</a> - [tdfx] tdfx_tex.c:702: error: ‘const struct gl_color_table’ has no member named ‘Format’</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31617">Bug 31617</a> - Radeon/Compiz: 'failed to attach dri2 front buffer', error case not handled</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31648">Bug 31648</a> - [GLSL] array-struct-array gets assertion: `(size &gt;= 1) && (size &lt;= 4)' failed.</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31650">Bug 31650</a> - [GLSL] varying gl_TexCoord fails to be re-declared to different size in the second shader</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31673">Bug 31673</a> - GL_FRAGMENT_PRECISION_HIGH preprocessor macro undefined in GLSL ES</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31690">Bug 31690</a> - i915 shader compiler fails to flatten if in Aquarium webgl demo.</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31832">Bug 31832</a> - [i915] Bad renderbuffer format: 21</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31841">Bug 31841</a> - [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31894">Bug 31894</a> - Writing to gl_PointSize with GLES2 corrupts other varyings</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31909">Bug 31909</a> - [i965] brw_fs.cpp:1461: void fs_visitor::emit_bool_to_cond_code(ir_rvalue*): Assertion `expr-&gt;operands[i]-&gt;type-&gt;is_scalar()' failed.</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31934">Bug 31934</a> - [gallium] Mapping empty buffer object causes SIGSEGV</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31983">Bug 31983</a> - [i915 gles2] "if (expression with builtin/varying variables) discard" breaks linkage</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31985">Bug 31985</a> - [GLSL 1.20] initialized uniform array considered as "unsized"</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31987">Bug 31987</a> - [gles2] if input a wrong pname(GL_NONE) to glGetBoolean, it will not case GL_INVALID_ENUM</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32035">Bug 32035</a> - [GLSL bisected] comparing unsized array gets segfault</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32070">Bug 32070</a> - llvmpipe renders stencil demo incorrectly</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32273">Bug 32273</a> - assertion fails when starting vdrift 2010 release with shaders enabled</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32287">Bug 32287</a> - [bisected GLSL] float-int failure</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32311">Bug 32311</a> - [965 bisected] Array look-ups broken on GM45</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32520">Bug 32520</a> - [gles2] glBlendFunc(GL_ZERO, GL_DST_COLOR) will result in GL_INVALID_ENUM</li>
-
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32825">Bug 32825</a> - egl_glx driver completely broken in 7.9 branch [fix in master]</li>
-</ul>
-
-
-<h2>Changes</h2>
-<p>The full set of changes can be viewed by using the following GIT command:</p>
-
-<pre>
- git log mesa-7.9..mesa-7.9.1
-</pre>
-
-<p>Alex Deucher (5):
-<ul>
- <li>r100: revalidate after radeon_update_renderbuffers</li>
- <li>r600c: add missing radeon_prepare_render() call on evergreen</li>
- <li>r600c: properly align mipmaps to group size</li>
- <li>gallium/egl: fix r300 vs r600 loading</li>
- <li>r600c: fix some opcodes on evergreen</li>
-</ul></p>
-
-<p>Aras Pranckevicius (2):
-<ul>
- <li>glsl: fix crash in loop analysis when some controls can't be determined</li>
- <li>glsl: fix matrix type check in ir_algebraic</li>
-</ul></p>
-
-<p>Brian Paul (27):
-<ul>
- <li>swrast: fix choose_depth_texture_level() to respect mipmap filtering state</li>
- <li>st/mesa: replace assertion w/ conditional in framebuffer invalidation</li>
- <li>egl/i965: include inline_wrapper_sw_helper.h</li>
- <li>mesa: Add missing else in do_row_3D</li>
- <li>mesa: add missing formats in _mesa_format_to_type_and_comps()</li>
- <li>mesa: handle more pixel types in mipmap generation code</li>
- <li>mesa: make glIsBuffer() return false for never bound buffers</li>
- <li>mesa: fix glDeleteBuffers() regression</li>
- <li>swrast: init alpha value to 1.0 in opt_sample_rgb_2d()</li>
- <li>meta: Mask Stencil.Clear against stencilMax in _mesa_meta_Clear</li>
- <li>st/mesa: fix mapping of zero-sized buffer objects</li>
- <li>mesa: check for posix_memalign() errors</li>
- <li>llvmpipe: fix broken stencil writemask</li>
- <li>mesa: fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME query</li>
- <li>mesa: return GL_FRAMEBUFFER_DEFAULT as FBO attachment type</li>
- <li>mesa: make glGet*(GL_NONE) generate GL_INVALID_ENUM</li>
- <li>mesa: test for cube map completeness in glGenerateMipmap()</li>
- <li>tnl: Initialize gl_program_machine memory in run_vp.</li>
- <li>tnl: a better way to initialize the gl_program_machine memory</li>
- <li>mesa, st/mesa: disable GL_ARB_geometry_shader4</li>
- <li>glsl: fix off by one in register index assertion</li>
- <li>st/mesa: fix mipmap generation bug</li>
- <li>glsl: new glsl_strtod() wrapper to fix decimal point interpretation</li>
- <li>mesa: no-op glBufferSubData() on size==0</li>
- <li>tdfx: s/Format/_BaseFormat/</li>
- <li>st/mesa: fix renderbuffer pointer check in st_Clear()</li>
- <li>mesa: Bump the number of bits in the register index.</li>
-</ul></p>
-
-<p>Chad Versace (5):
-<ul>
- <li>glsl: Fix lexer rule for ^=</li>
- <li>glsl: Fix ast-to-hir for ARB_fragment_coord_conventions</li>
- <li>glsl: Fix ir_expression::constant_expression_value()</li>
- <li>glsl: Fix erroneous cast in ast_jump_statement::hir()</li>
- <li>glsl: Fix linker bug in cross_validate_globals()</li>
-</ul></p>
-
-<p>Chia-I Wu (10):
-<ul>
- <li>targets/egl: Fix linking with libdrm.</li>
- <li>st/vega: Fix version check in context creation.</li>
- <li>st/egl: Do not finish a fence that is NULL.</li>
- <li>egl: Fix a false negative check in _eglCheckMakeCurrent.</li>
- <li>st/mesa: Unreference the sampler view in st_bind_surface.</li>
- <li>egl_dri2: Fix __DRI_DRI2 version 1 support.</li>
- <li>st/vega: Do not wait NULL fences.</li>
- <li>mesa: Do not advertise GL_OES_texture_3D.</li>
- <li>egl_glx: Fix borken driver.</li>
- <li>egl: Check extensions.</li>
-</ul></p>
-
-<p>Daniel Lichtenberger (1):
-<ul>
- <li>radeon: fix potential segfault in renderbuffer update</li>
-</ul></p>
-
-<p>Daniel Vetter (1):
-<ul>
- <li>r200: revalidate after radeon_update_renderbuffers</li>
-</ul></p>
-
-<p>Dave Airlie (1):
-<ul>
- <li>r300g: fixup rs690 tiling stride alignment calculations.</li>
-</ul></p>
-
-<p>Eric Anholt (13):
-<ul>
- <li>intel: Allow CopyTexSubImage to InternalFormat 3/4 textures, like RGB/RGBA.</li>
- <li>glsl: Free the loop state context when we free the loop state.</li>
- <li>i965: Allow OPCODE_SWZ to put immediates in the first arg.</li>
- <li>i965: Add support for rendering to SARGB8 FBOs.</li>
- <li>glsl: Add a helper constructor for expressions that works out result type.</li>
- <li>glsl: Fix structure and array comparisions.</li>
- <li>glsl: Quiet unreachable no-return-from-function warning.</li>
- <li>glsl: Mark the array access for whole-array comparisons.</li>
- <li>glsl: Fix flipped return of has_value() for array constants.</li>
- <li>mesa: Add getters for the rest of the supported draw buffers.</li>
- <li>mesa: Add getters for ARB_copy_buffer's attachment points.</li>
- <li>i965: Correct the dp_read message descriptor setup on g4x.</li>
- <li>glsl: Correct the marking of InputsRead/OutputsWritten on in/out matrices.</li>
-</ul></p>
-
-<p>Fabian Bieler (1):
-<ul>
- <li>glsl: fix lowering conditional returns in subroutines</li>
-</ul></p>
-
-<p>Francisco Jerez (3):
-<ul>
- <li>meta: Don't leak alpha function/reference value changes.</li>
- <li>meta: Fix incorrect rendering of the bitmap alpha component.</li>
- <li>meta: Don't try to disable cube maps if the driver doesn't expose the extension.</li>
-</ul></p>
-
-<p>Henri Verbeet (2):
-<ul>
- <li>r600: Evergreen has two extra frac_bits for the sampler LOD state.</li>
- <li>st/mesa: Handle wrapped depth buffers in st_copy_texsubimage().</li>
-</ul></p>
-
-<p>Ian Romanick (33):
-<ul>
- <li>Add 7.9 md5sums</li>
- <li>docs: Import 7.8.x release notes from 7.8 branch.</li>
- <li>docs: download.html does not need to be updated for each release</li>
- <li>docs: Update mailing lines from sf.net to freedesktop.org</li>
- <li>docs: added news item for 7.9 release</li>
- <li>mesa: Validate assembly shaders when GLSL shaders are used</li>
- <li>linker: Reject shaders that have unresolved function calls</li>
- <li>mesa: Refactor validation of shader targets</li>
- <li>glsl: Slightly change the semantic of _LinkedShaders</li>
- <li>linker: Improve handling of unread/unwritten shader inputs/outputs</li>
- <li>glsl: Commit lexer files changed by previous cherry picking</li>
- <li>mesa: Make metaops use program refcounts instead of names.</li>
- <li>glsl: Fix incorrect gl_type of sampler2DArray and sampler1DArrayShadow</li>
- <li>mesa: Allow query of MAX_SAMPLES with EXT_framebuffer_multisample</li>
- <li>glsl: better handling of linker failures</li>
- <li>mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.</li>
- <li>i915: Disallow alpha, red, RG, and sRGB as render targets</li>
- <li>glsl/linker: Free any IR discarded by optimization passes.</li>
- <li>glsl: Add an optimization pass to simplify discards.</li>
- <li>glsl: Add a lowering pass to move discards out of if-statements.</li>
- <li>i915: Correctly generate unconditional KIL instructions</li>
- <li>glsl: Add unary ir_expression constructor</li>
- <li>glsl: Ensure that equality comparisons don't return a NULL IR tree</li>
- <li>glcpp: Commit changes in generated files cause by previous commit</li>
- <li>glsl: Inherrit type of declared variable from initializer</li>
- <li>glsl: Inherrit type of declared variable from initializer after processing assignment</li>
- <li>linker: Ensure that unsized arrays have a size after linking</li>
- <li>linker: Fix regressions caused by previous commit</li>
- <li>linker: Allow built-in arrays to have different sizes between shader stages</li>
- <li>ir_to_mesa: Don't generate swizzles for record derefs of non-scalar/vectors</li>
- <li>Refresh autogenerated file builtin_function.cpp.</li>
- <li>docs: Initial set of release notes for 7.9.1</li>
- <li>mesa: set version string to 7.9.1</li>
-</ul></p>
-
-<p>Julien Cristau (1):
-<ul>
- <li>Makefile: don't include the same files twice in the tarball</li>
-</ul></p>
-
-<p>Kenneth Graunke (19):
-<ul>
- <li>glcpp: Return NEWLINE token for newlines inside multi-line comments.</li>
- <li>generate_builtins.py: Output large strings as arrays of characters.</li>
- <li>glsl: Fix constant component count in vector constructor emitting.</li>
- <li>ir_dead_functions: Actually free dead functions and signatures.</li>
- <li>glcpp: Define GL_FRAGMENT_PRECISION_HIGH if GLSL version &gt;= 1.30.</li>
- <li>glsl: Unconditionally define GL_FRAGMENT_PRECISION_HIGH in ES2 shaders.</li>
- <li>glsl: Fix constant expression handling for &lt, &gt;, &lt=, &gt;= on vectors.</li>
- <li>glsl: Use do_common_optimization in the standalone compiler.</li>
- <li>glsl: Don't inline function prototypes.</li>
- <li>glsl: Add a virtual as_discard() method.</li>
- <li>glsl: Remove "discard" support from lower_jumps.</li>
- <li>glsl: Refactor get_num_operands.</li>
- <li>glcpp: Don't emit SPACE tokens in conditional_tokens production.</li>
- <li>glsl: Clean up code by adding a new is_break() function.</li>
- <li>glsl: Consider the "else" branch when looking for loop breaks.</li>
- <li>Remove OES_compressed_paletted_texture from the ES2 extension list.</li>
- <li>glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).</li>
- <li>Fix build on systems where "python" is python 3.</li>
- <li>i965: Internally enable GL_NV_blend_square on ES2.</li>
-</ul></p>
-
-<p>Kristian Høgsberg (1):
-<ul>
- <li>i965: Don't write mrf assignment for pointsize output</li>
-</ul></p>
-
-<p>Luca Barbieri (1):
-<ul>
- <li>glsl: Unroll loops with conditional breaks anywhere (not just the end)</li>
-</ul></p>
-
-<p>Marek Olšák (17):
-<ul>
- <li>r300g: fix microtiling for 16-bits-per-channel formats</li>
- <li>r300g: fix texture border for 16-bits-per-channel formats</li>
- <li>r300g: add a default channel ordering of texture border for unhandled formats</li>
- <li>r300g: fix texture border color for all texture formats</li>
- <li>r300g: fix rendering with no vertex elements</li>
- <li>r300/compiler: fix rc_rewrite_depth_out for it to work with any instruction</li>
- <li>r300g: fix texture border color once again</li>
- <li>r300g: fix texture swizzling with compressed textures on r400-r500</li>
- <li>r300g: disable ARB_texture_swizzle if S3TC is enabled on r3xx-only</li>
- <li>mesa, st/mesa: fix gl_FragCoord with FBOs in Gallium</li>
- <li>st/mesa: initialize key in st_vp_varient</li>
- <li>r300/compiler: fix swizzle lowering with a presubtract source operand</li>
- <li>r300g: fix rendering with a vertex attrib having a zero stride</li>
- <li>ir_to_mesa: Add support for conditional discards.</li>
- <li>r300g: finally fix the texture corruption on r3xx-r4xx</li>
- <li>mesa: fix texel store functions for some float formats</li>
- <li>r300/compiler: disable the rename_regs pass for loops</li>
-</ul></p>
-
-<p>Mario Kleiner (1):
-<ul>
- <li>mesa/r300classic: Fix dri2Invalidate/radeon_prepare_render for page flipping.</li>
-</ul></p>
-
-<p>Peter Clifton (1):
-<ul>
- <li>intel: Fix emit_linear_blit to use DWORD aligned width blits</li>
-</ul></p>
-
-<p>Robert Hooker (2):
-<ul>
- <li>intel: Add a new B43 pci id.</li>
- <li>egl_dri2: Add missing intel chip ids.</li>
-</ul></p>
-
-<p>Roland Scheidegger (1):
-<ul>
- <li>r200: fix r200 large points</li>
-</ul></p>
-
-<p>Thomas Hellstrom (17):
-<ul>
- <li>st/xorg: Don't try to use option values before processing options</li>
- <li>xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers</li>
- <li>st/xorg: Add a customizer option to get rid of annoying cursor update flicker</li>
- <li>xorg/vmwgfx: Don't hide HW cursors when updating them</li>
- <li>st/xorg: Don't try to remove invalid fbs</li>
- <li>st/xorg: Fix typo</li>
- <li>st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments</li>
- <li>st/xorg: Fix compilation errors for Xservers compiled without Composite</li>
- <li>st/xorg: Don't use deprecated x*alloc / xfree functions</li>
- <li>xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions</li>
- <li>st/xorg: Fix compilation for Xservers &gt;= 1.10</li>
- <li>mesa: Make sure we have the talloc cflags when using the talloc headers</li>
- <li>egl: Add an include for size_t</li>
- <li>mesa: Add talloc includes for gles</li>
- <li>st/egl: Fix build for include files in nonstandard places</li>
- <li>svga/drm: Optionally resolve calls to powf during link-time</li>
- <li>gallium/targets: Trivial crosscompiling fix</li>
-</ul></p>
-
-<p>Tom Stellard (7):
-<ul>
- <li>r300/compiler: Make sure presubtract sources use supported swizzles</li>
- <li>r300/compiler: Fix register allocator's handling of loops</li>
- <li>r300/compiler: Fix instruction scheduling within IF blocks</li>
- <li>r300/compiler: Use zero as the register index for unused sources</li>
- <li>r300/compiler: Ignore alpha dest register when replicating the result</li>
- <li>r300/compiler: Use correct swizzles for all presubtract sources</li>
- <li>r300/compiler: Don't allow presubtract sources to be remapped twice</li>
-</ul></p>
-
-<p>Vinson Lee (1):
-<ul>
- <li>glsl: Fix 'control reaches end of non-void function' warning.</li>
-</ul></p>
-
-<p>richard (1):
-<ul>
- <li>r600c : inline vertex format is not updated in an app, switch to use vfetch constants. For the 7.9 and 7.10 branches as well.</li>
-</ul></p>
-
-</body>
-</html>
+<HTML>
+
+<head>
+<TITLE>Mesa Release Notes</TITLE>
+<link rel="stylesheet" type="text/css" href="mesa.css">
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+</head>
+
+<BODY>
+
+<body bgcolor="#eeeeee">
+
+<H1>Mesa 7.9.1 Release Notes / January 7, 2011</H1>
+
+<p>
+Mesa 7.9.1 is a bug fix release which fixes bugs found since the 7.9 release.
+</p>
+<p>
+Mesa 7.9.1 implements the OpenGL 2.1 API, but the version reported by
+glGetString(GL_VERSION) depends on the particular driver being used.
+Some drivers don't support all the features required in OpenGL 2.1.
+</p>
+<p>
+See the <a href="install.html">Compiling/Installing page</a> for prerequisites
+for DRI hardware acceleration.
+</p>
+
+
+<h2>MD5 checksums</h2>
+<pre>
+78422843ea875ad4eac35b9b8584032b MesaLib-7.9.1.tar.gz
+07dc6cfb5928840b8b9df5bd1b3ae434 MesaLib-7.9.1.tar.bz2
+c8eaea5b3c3d6dee784bd8c2db91c80f MesaLib-7.9.1.zip
+ee9ecae4ca56fbb2d14dc15e3a0a7640 MesaGLUT-7.9.1.tar.gz
+41fc477d524e7dc5c84da8ef22422bea MesaGLUT-7.9.1.tar.bz2
+90b287229afdf19317aa989d19462e7a MesaGLUT-7.9.1.zip
+</pre>
+
+
+<h2>New features</h2>
+<p>None.</p>
+
+<h2>Bug fixes</h2>
+<p>This list is likely incomplete.</p>
+<ul>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28800">Bug 28800</a> - [r300c, r300g] Texture corruption with World of Warcraft</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29420">Bug 29420</a> - Amnesia / HPL2 RendererFeatTest - not rendering correctly</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29946">Bug 29946</a> - [swrast] piglit valgrind glsl-array-bounds-04 fails</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30261">Bug 30261</a> - [GLSL 1.20] allowing inconsistent invariant declaration between two vertex shaders</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30632">Bug 30632</a> - [softpipe] state_tracker/st_manager.c:489: st_context_notify_invalid_framebuffer: Assertion `stfb &amp;&amp; stfb-&gt;iface == stfbi' failed.</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30694">Bug 30694</a> - wincopy will crash on Gallium drivers when going to front buffer</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30787">Bug 30787</a> - Invalid asm shader does not generate draw-time error when used with GLSL shader</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30993">Bug 30993</a> - getFramebufferAttachmentParameteriv wrongly generates error</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31101">Bug 31101</a> - [glsl2] abort() in ir_validate::visit_enter(ir_assignment *ir)</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31193">Bug 31193</a> - [regression] aa43176e break water reflections</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31194">Bug 31194</a> - The mesa meta save/restore code doesn't ref the current GLSL program</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31371">Bug 31371</a> - glslparsertest: ir.cpp:358: ir_constant::ir_constant(const glsl_type*, const ir_constant_data*): Assertion `(type->base_type &gt;= 0) &amp;&amp; (type->base_type &lt;= 3)' failed.</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31439">Bug 31439</a> - Crash in glBufferSubData() with size == 0</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31495">Bug 31495</a> - [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31514">Bug 31514</a> - isBuffer returns true for unbound buffers</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31560">Bug 31560</a> - [tdfx] tdfx_tex.c:702: error: ‘const struct gl_color_table’ has no member named ‘Format’</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31617">Bug 31617</a> - Radeon/Compiz: 'failed to attach dri2 front buffer', error case not handled</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31648">Bug 31648</a> - [GLSL] array-struct-array gets assertion: `(size &gt;= 1) && (size &lt;= 4)' failed.</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31650">Bug 31650</a> - [GLSL] varying gl_TexCoord fails to be re-declared to different size in the second shader</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31673">Bug 31673</a> - GL_FRAGMENT_PRECISION_HIGH preprocessor macro undefined in GLSL ES</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31690">Bug 31690</a> - i915 shader compiler fails to flatten if in Aquarium webgl demo.</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31832">Bug 31832</a> - [i915] Bad renderbuffer format: 21</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31841">Bug 31841</a> - [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31894">Bug 31894</a> - Writing to gl_PointSize with GLES2 corrupts other varyings</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31909">Bug 31909</a> - [i965] brw_fs.cpp:1461: void fs_visitor::emit_bool_to_cond_code(ir_rvalue*): Assertion `expr-&gt;operands[i]-&gt;type-&gt;is_scalar()' failed.</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31934">Bug 31934</a> - [gallium] Mapping empty buffer object causes SIGSEGV</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31983">Bug 31983</a> - [i915 gles2] "if (expression with builtin/varying variables) discard" breaks linkage</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31985">Bug 31985</a> - [GLSL 1.20] initialized uniform array considered as "unsized"</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31987">Bug 31987</a> - [gles2] if input a wrong pname(GL_NONE) to glGetBoolean, it will not case GL_INVALID_ENUM</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32035">Bug 32035</a> - [GLSL bisected] comparing unsized array gets segfault</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32070">Bug 32070</a> - llvmpipe renders stencil demo incorrectly</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32273">Bug 32273</a> - assertion fails when starting vdrift 2010 release with shaders enabled</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32287">Bug 32287</a> - [bisected GLSL] float-int failure</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32311">Bug 32311</a> - [965 bisected] Array look-ups broken on GM45</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32520">Bug 32520</a> - [gles2] glBlendFunc(GL_ZERO, GL_DST_COLOR) will result in GL_INVALID_ENUM</li>
+
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32825">Bug 32825</a> - egl_glx driver completely broken in 7.9 branch [fix in master]</li>
+</ul>
+
+
+<h2>Changes</h2>
+<p>The full set of changes can be viewed by using the following GIT command:</p>
+
+<pre>
+ git log mesa-7.9..mesa-7.9.1
+</pre>
+
+<p>Alex Deucher (5):
+<ul>
+ <li>r100: revalidate after radeon_update_renderbuffers</li>
+ <li>r600c: add missing radeon_prepare_render() call on evergreen</li>
+ <li>r600c: properly align mipmaps to group size</li>
+ <li>gallium/egl: fix r300 vs r600 loading</li>
+ <li>r600c: fix some opcodes on evergreen</li>
+</ul></p>
+
+<p>Aras Pranckevicius (2):
+<ul>
+ <li>glsl: fix crash in loop analysis when some controls can't be determined</li>
+ <li>glsl: fix matrix type check in ir_algebraic</li>
+</ul></p>
+
+<p>Brian Paul (27):
+<ul>
+ <li>swrast: fix choose_depth_texture_level() to respect mipmap filtering state</li>
+ <li>st/mesa: replace assertion w/ conditional in framebuffer invalidation</li>
+ <li>egl/i965: include inline_wrapper_sw_helper.h</li>
+ <li>mesa: Add missing else in do_row_3D</li>
+ <li>mesa: add missing formats in _mesa_format_to_type_and_comps()</li>
+ <li>mesa: handle more pixel types in mipmap generation code</li>
+ <li>mesa: make glIsBuffer() return false for never bound buffers</li>
+ <li>mesa: fix glDeleteBuffers() regression</li>
+ <li>swrast: init alpha value to 1.0 in opt_sample_rgb_2d()</li>
+ <li>meta: Mask Stencil.Clear against stencilMax in _mesa_meta_Clear</li>
+ <li>st/mesa: fix mapping of zero-sized buffer objects</li>
+ <li>mesa: check for posix_memalign() errors</li>
+ <li>llvmpipe: fix broken stencil writemask</li>
+ <li>mesa: fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME query</li>
+ <li>mesa: return GL_FRAMEBUFFER_DEFAULT as FBO attachment type</li>
+ <li>mesa: make glGet*(GL_NONE) generate GL_INVALID_ENUM</li>
+ <li>mesa: test for cube map completeness in glGenerateMipmap()</li>
+ <li>tnl: Initialize gl_program_machine memory in run_vp.</li>
+ <li>tnl: a better way to initialize the gl_program_machine memory</li>
+ <li>mesa, st/mesa: disable GL_ARB_geometry_shader4</li>
+ <li>glsl: fix off by one in register index assertion</li>
+ <li>st/mesa: fix mipmap generation bug</li>
+ <li>glsl: new glsl_strtod() wrapper to fix decimal point interpretation</li>
+ <li>mesa: no-op glBufferSubData() on size==0</li>
+ <li>tdfx: s/Format/_BaseFormat/</li>
+ <li>st/mesa: fix renderbuffer pointer check in st_Clear()</li>
+ <li>mesa: Bump the number of bits in the register index.</li>
+</ul></p>
+
+<p>Chad Versace (5):
+<ul>
+ <li>glsl: Fix lexer rule for ^=</li>
+ <li>glsl: Fix ast-to-hir for ARB_fragment_coord_conventions</li>
+ <li>glsl: Fix ir_expression::constant_expression_value()</li>
+ <li>glsl: Fix erroneous cast in ast_jump_statement::hir()</li>
+ <li>glsl: Fix linker bug in cross_validate_globals()</li>
+</ul></p>
+
+<p>Chia-I Wu (10):
+<ul>
+ <li>targets/egl: Fix linking with libdrm.</li>
+ <li>st/vega: Fix version check in context creation.</li>
+ <li>st/egl: Do not finish a fence that is NULL.</li>
+ <li>egl: Fix a false negative check in _eglCheckMakeCurrent.</li>
+ <li>st/mesa: Unreference the sampler view in st_bind_surface.</li>
+ <li>egl_dri2: Fix __DRI_DRI2 version 1 support.</li>
+ <li>st/vega: Do not wait NULL fences.</li>
+ <li>mesa: Do not advertise GL_OES_texture_3D.</li>
+ <li>egl_glx: Fix borken driver.</li>
+ <li>egl: Check extensions.</li>
+</ul></p>
+
+<p>Daniel Lichtenberger (1):
+<ul>
+ <li>radeon: fix potential segfault in renderbuffer update</li>
+</ul></p>
+
+<p>Daniel Vetter (1):
+<ul>
+ <li>r200: revalidate after radeon_update_renderbuffers</li>
+</ul></p>
+
+<p>Dave Airlie (1):
+<ul>
+ <li>r300g: fixup rs690 tiling stride alignment calculations.</li>
+</ul></p>
+
+<p>Eric Anholt (13):
+<ul>
+ <li>intel: Allow CopyTexSubImage to InternalFormat 3/4 textures, like RGB/RGBA.</li>
+ <li>glsl: Free the loop state context when we free the loop state.</li>
+ <li>i965: Allow OPCODE_SWZ to put immediates in the first arg.</li>
+ <li>i965: Add support for rendering to SARGB8 FBOs.</li>
+ <li>glsl: Add a helper constructor for expressions that works out result type.</li>
+ <li>glsl: Fix structure and array comparisions.</li>
+ <li>glsl: Quiet unreachable no-return-from-function warning.</li>
+ <li>glsl: Mark the array access for whole-array comparisons.</li>
+ <li>glsl: Fix flipped return of has_value() for array constants.</li>
+ <li>mesa: Add getters for the rest of the supported draw buffers.</li>
+ <li>mesa: Add getters for ARB_copy_buffer's attachment points.</li>
+ <li>i965: Correct the dp_read message descriptor setup on g4x.</li>
+ <li>glsl: Correct the marking of InputsRead/OutputsWritten on in/out matrices.</li>
+</ul></p>
+
+<p>Fabian Bieler (1):
+<ul>
+ <li>glsl: fix lowering conditional returns in subroutines</li>
+</ul></p>
+
+<p>Francisco Jerez (3):
+<ul>
+ <li>meta: Don't leak alpha function/reference value changes.</li>
+ <li>meta: Fix incorrect rendering of the bitmap alpha component.</li>
+ <li>meta: Don't try to disable cube maps if the driver doesn't expose the extension.</li>
+</ul></p>
+
+<p>Henri Verbeet (2):
+<ul>
+ <li>r600: Evergreen has two extra frac_bits for the sampler LOD state.</li>
+ <li>st/mesa: Handle wrapped depth buffers in st_copy_texsubimage().</li>
+</ul></p>
+
+<p>Ian Romanick (33):
+<ul>
+ <li>Add 7.9 md5sums</li>
+ <li>docs: Import 7.8.x release notes from 7.8 branch.</li>
+ <li>docs: download.html does not need to be updated for each release</li>
+ <li>docs: Update mailing lines from sf.net to freedesktop.org</li>
+ <li>docs: added news item for 7.9 release</li>
+ <li>mesa: Validate assembly shaders when GLSL shaders are used</li>
+ <li>linker: Reject shaders that have unresolved function calls</li>
+ <li>mesa: Refactor validation of shader targets</li>
+ <li>glsl: Slightly change the semantic of _LinkedShaders</li>
+ <li>linker: Improve handling of unread/unwritten shader inputs/outputs</li>
+ <li>glsl: Commit lexer files changed by previous cherry picking</li>
+ <li>mesa: Make metaops use program refcounts instead of names.</li>
+ <li>glsl: Fix incorrect gl_type of sampler2DArray and sampler1DArrayShadow</li>
+ <li>mesa: Allow query of MAX_SAMPLES with EXT_framebuffer_multisample</li>
+ <li>glsl: better handling of linker failures</li>
+ <li>mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.</li>
+ <li>i915: Disallow alpha, red, RG, and sRGB as render targets</li>
+ <li>glsl/linker: Free any IR discarded by optimization passes.</li>
+ <li>glsl: Add an optimization pass to simplify discards.</li>
+ <li>glsl: Add a lowering pass to move discards out of if-statements.</li>
+ <li>i915: Correctly generate unconditional KIL instructions</li>
+ <li>glsl: Add unary ir_expression constructor</li>
+ <li>glsl: Ensure that equality comparisons don't return a NULL IR tree</li>
+ <li>glcpp: Commit changes in generated files cause by previous commit</li>
+ <li>glsl: Inherrit type of declared variable from initializer</li>
+ <li>glsl: Inherrit type of declared variable from initializer after processing assignment</li>
+ <li>linker: Ensure that unsized arrays have a size after linking</li>
+ <li>linker: Fix regressions caused by previous commit</li>
+ <li>linker: Allow built-in arrays to have different sizes between shader stages</li>
+ <li>ir_to_mesa: Don't generate swizzles for record derefs of non-scalar/vectors</li>
+ <li>Refresh autogenerated file builtin_function.cpp.</li>
+ <li>docs: Initial set of release notes for 7.9.1</li>
+ <li>mesa: set version string to 7.9.1</li>
+</ul></p>
+
+<p>Julien Cristau (1):
+<ul>
+ <li>Makefile: don't include the same files twice in the tarball</li>
+</ul></p>
+
+<p>Kenneth Graunke (19):
+<ul>
+ <li>glcpp: Return NEWLINE token for newlines inside multi-line comments.</li>
+ <li>generate_builtins.py: Output large strings as arrays of characters.</li>
+ <li>glsl: Fix constant component count in vector constructor emitting.</li>
+ <li>ir_dead_functions: Actually free dead functions and signatures.</li>
+ <li>glcpp: Define GL_FRAGMENT_PRECISION_HIGH if GLSL version &gt;= 1.30.</li>
+ <li>glsl: Unconditionally define GL_FRAGMENT_PRECISION_HIGH in ES2 shaders.</li>
+ <li>glsl: Fix constant expression handling for &lt, &gt;, &lt=, &gt;= on vectors.</li>
+ <li>glsl: Use do_common_optimization in the standalone compiler.</li>
+ <li>glsl: Don't inline function prototypes.</li>
+ <li>glsl: Add a virtual as_discard() method.</li>
+ <li>glsl: Remove "discard" support from lower_jumps.</li>
+ <li>glsl: Refactor get_num_operands.</li>
+ <li>glcpp: Don't emit SPACE tokens in conditional_tokens production.</li>
+ <li>glsl: Clean up code by adding a new is_break() function.</li>
+ <li>glsl: Consider the "else" branch when looking for loop breaks.</li>
+ <li>Remove OES_compressed_paletted_texture from the ES2 extension list.</li>
+ <li>glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).</li>
+ <li>Fix build on systems where "python" is python 3.</li>
+ <li>i965: Internally enable GL_NV_blend_square on ES2.</li>
+</ul></p>
+
+<p>Kristian Høgsberg (1):
+<ul>
+ <li>i965: Don't write mrf assignment for pointsize output</li>
+</ul></p>
+
+<p>Luca Barbieri (1):
+<ul>
+ <li>glsl: Unroll loops with conditional breaks anywhere (not just the end)</li>
+</ul></p>
+
+<p>Marek Olšák (17):
+<ul>
+ <li>r300g: fix microtiling for 16-bits-per-channel formats</li>
+ <li>r300g: fix texture border for 16-bits-per-channel formats</li>
+ <li>r300g: add a default channel ordering of texture border for unhandled formats</li>
+ <li>r300g: fix texture border color for all texture formats</li>
+ <li>r300g: fix rendering with no vertex elements</li>
+ <li>r300/compiler: fix rc_rewrite_depth_out for it to work with any instruction</li>
+ <li>r300g: fix texture border color once again</li>
+ <li>r300g: fix texture swizzling with compressed textures on r400-r500</li>
+ <li>r300g: disable ARB_texture_swizzle if S3TC is enabled on r3xx-only</li>
+ <li>mesa, st/mesa: fix gl_FragCoord with FBOs in Gallium</li>
+ <li>st/mesa: initialize key in st_vp_varient</li>
+ <li>r300/compiler: fix swizzle lowering with a presubtract source operand</li>
+ <li>r300g: fix rendering with a vertex attrib having a zero stride</li>
+ <li>ir_to_mesa: Add support for conditional discards.</li>
+ <li>r300g: finally fix the texture corruption on r3xx-r4xx</li>
+ <li>mesa: fix texel store functions for some float formats</li>
+ <li>r300/compiler: disable the rename_regs pass for loops</li>
+</ul></p>
+
+<p>Mario Kleiner (1):
+<ul>
+ <li>mesa/r300classic: Fix dri2Invalidate/radeon_prepare_render for page flipping.</li>
+</ul></p>
+
+<p>Peter Clifton (1):
+<ul>
+ <li>intel: Fix emit_linear_blit to use DWORD aligned width blits</li>
+</ul></p>
+
+<p>Robert Hooker (2):
+<ul>
+ <li>intel: Add a new B43 pci id.</li>
+ <li>egl_dri2: Add missing intel chip ids.</li>
+</ul></p>
+
+<p>Roland Scheidegger (1):
+<ul>
+ <li>r200: fix r200 large points</li>
+</ul></p>
+
+<p>Thomas Hellstrom (17):
+<ul>
+ <li>st/xorg: Don't try to use option values before processing options</li>
+ <li>xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers</li>
+ <li>st/xorg: Add a customizer option to get rid of annoying cursor update flicker</li>
+ <li>xorg/vmwgfx: Don't hide HW cursors when updating them</li>
+ <li>st/xorg: Don't try to remove invalid fbs</li>
+ <li>st/xorg: Fix typo</li>
+ <li>st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments</li>
+ <li>st/xorg: Fix compilation errors for Xservers compiled without Composite</li>
+ <li>st/xorg: Don't use deprecated x*alloc / xfree functions</li>
+ <li>xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions</li>
+ <li>st/xorg: Fix compilation for Xservers &gt;= 1.10</li>
+ <li>mesa: Make sure we have the talloc cflags when using the talloc headers</li>
+ <li>egl: Add an include for size_t</li>
+ <li>mesa: Add talloc includes for gles</li>
+ <li>st/egl: Fix build for include files in nonstandard places</li>
+ <li>svga/drm: Optionally resolve calls to powf during link-time</li>
+ <li>gallium/targets: Trivial crosscompiling fix</li>
+</ul></p>
+
+<p>Tom Stellard (7):
+<ul>
+ <li>r300/compiler: Make sure presubtract sources use supported swizzles</li>
+ <li>r300/compiler: Fix register allocator's handling of loops</li>
+ <li>r300/compiler: Fix instruction scheduling within IF blocks</li>
+ <li>r300/compiler: Use zero as the register index for unused sources</li>
+ <li>r300/compiler: Ignore alpha dest register when replicating the result</li>
+ <li>r300/compiler: Use correct swizzles for all presubtract sources</li>
+ <li>r300/compiler: Don't allow presubtract sources to be remapped twice</li>
+</ul></p>
+
+<p>Vinson Lee (1):
+<ul>
+ <li>glsl: Fix 'control reaches end of non-void function' warning.</li>
+</ul></p>
+
+<p>richard (1):
+<ul>
+ <li>r600c : inline vertex format is not updated in an app, switch to use vfetch constants. For the 7.9 and 7.10 branches as well.</li>
+</ul></p>
+
+</body>
+</html>
diff --git a/mesalib/docs/relnotes-7.9.html b/mesalib/docs/relnotes-7.9.html
index c94ebeef5..fe1fd5e41 100644
--- a/mesalib/docs/relnotes-7.9.html
+++ b/mesalib/docs/relnotes-7.9.html
@@ -1,137 +1,137 @@
-<HTML>
-
-<TITLE>Mesa Release Notes</TITLE>
-
-<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
-
-<BODY>
-
-<body bgcolor="#eeeeee">
-
-<H1>Mesa 7.9 Release Notes / October 4, 2010</H1>
-
-<p>
-Mesa 7.9 is a new development release.
-People who are concerned with stability and reliability should stick
-with a previous release or wait for Mesa 7.9.1.
-</p>
-<p>
-Mesa 7.9 implements the OpenGL 2.1 API, but the version reported by
-glGetString(GL_VERSION) depends on the particular driver being used.
-Some drivers don't support all the features required in OpenGL 2.1.
-</p>
-<p>
-See the <a href="install.html">Compiling/Installing page</a> for prerequisites
-for DRI hardware acceleration.
-</p>
-
-
-<h2>MD5 checksums</h2>
-<pre>
-ed65ab425b25895c7f473d0a5e6e64f8 MesaLib-7.9.tar.gz
-82c740c49d572baa6da2b1a1eee90bca MesaLib-7.9.tar.bz2
-cd2b6ecec759b0457475e94bbb38fedb MesaLib-7.9.zip
-7b54af9fb9b1f6a1a65db2520f50848f MesaGLUT-7.9.tar.gz
-20d07419d1929f833fdb36bced290ad5 MesaGLUT-7.9.tar.bz2
-62a7edecd7c92675cd6029b05217eb0a MesaGLUT-7.9.zip
-</pre>
-
-
-<h2>New features</h2>
-<ul>
-<li>New, improved GLSL compiler written by Intel.
- See the <a href="shading.html"> Shading Language</a> page for
- more information.
-<li>New, very experimental Gallium driver for R600-R700 Radeons.
-<li>Support for AMD Evergreen-based Radeons (HD 5xxx)
-<li>GL_EXT_timer_query extension (i965 driver and softpipe only)
-<li>GL_EXT_framebuffer_multisample extension (intel drivers, MAX_SAMPLES = 1)
-<li>GL_ARB_texture_swizzle extension (alias of GL_EXT_texture_swizzle)
-<li>GL_ARB_draw_elements_base_vertex, GL_ARB_fragment_program_shadow,
- GL_ARB_window_pos, GL_EXT_gpu_program_parameters,
- GL_ATI_texture_env_combine3, GL_MESA_pack_invert, and GL_OES_EGL_image
- extensions in Gallium drivers
-<li>GL_ARB_depth_clamp and GL_NV_depth_clamp extensions (in nv50 and r600
- Gallium drivers)
-<li>GL_ARB_half_float_vertex extension (in nvfx, r300, r600, softpipe,
- and llvmpipe Gallium drivers)
-<li>GL_EXT_draw_buffers2 (in nv50, r600, softpipe, and llvmpipe Gallium
- drivers)
-<li>GL_EXT_texture_swizzle (in nvfx, r300, r600, softpipe, and llvmpipe
- Gallium drivers)
-<li>GL_ATI_texture_mirror_once (in nvfx, nv50, r300, r600, softpipe, and
- llvmpipe Gallium drivers)
-<li>GL_NV_conditional_render (in r300 Gallium driver)
-<li>Initial "signs of life" support for Sandybridge hardware in i965 DRI
- driver.
-</ul>
-
-
-<h2>Bug fixes</h2>
-<p>This list is likely incomplete.</p>
-<ul>
-<li>Massive improvements to the Gallium driver for R300-R500 Radeons; this
- driver is now considered stable for use as a DRI (OpenGL) driver.
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=10908">Bug 10908</a> - GLSL: gl_FogParamaters gl_Fog built-in uniform not functioning</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=13753">Bug 13753</a> - Numerous bugs in GLSL uniform handling</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=16854">Bug 16854</a> - GLSL function call at global scope causes SEGV</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=16856">Bug 16856</a> - GLSL indexing of unsized array results in assertion failure</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=18659">Bug 18659</a> - Crash in shader/slang/slang_codegen.c _slang_gen_function_call_name()</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=19089">Bug 19089</a> - [GLSL] glsl1/shadow2D() cases fail</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=22622">Bug 22622</a> - [GM965 GLSL] noise*() cause GPU lockup</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=23743">Bug 23743</a> - For loop from 0 to 0 not optimized out</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=24553">Bug 24553</a> - shader compilation times explode when using more () pairs</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25664">Bug 25664</a> - [GLSL] re-declaring an empty array fails to compile</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25769">Bug 25769</a> - [GLSL] "float" can be implicitly converted to "int"</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25808">Bug 25808</a> - [GLSL] const variable is modified successfully</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25826">Bug 25826</a> - [GLSL] declaring an unsized array then re-declaring with a size fails</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25827">Bug 25827</a> - [GLSL] vector constructor accepts too many arguments successfully</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25829">Bug 25829</a> - [GLSL] allowing non-void function without returning value</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25830">Bug 25830</a> - [GLSL] allowing non-constant-expression as const declaration initializer</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25877">Bug 25877</a> - [GLSL 1.10] implicit conversion from "int" to "float" should not be allowed</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25878">Bug 25878</a> - [GLSL] sampler is converted to int successfully</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25994">Bug 25994</a> - [GM45][GLSL] 'return' statement in vertex shader unsupported</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25999">Bug 25999</a> - [GLSL] embedded structure constructor fails to compile</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26000">Bug 26000</a> - [GLSL] allowing different parameter qualifier between the function definition and declaration</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26001">Bug 26001</a> - [GLSL 1.10] constructing matrix from matrix succeeds</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26224">Bug 26224</a> - [GLSL] Cannot get location of a uniform struct member</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26990">Bug 26990</a> - [GLSL] variable declaration in "while" fails to compile</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27004">Bug 27004</a> - [GLSL] allowing macro redefinition</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27060">Bug 27060</a> - [965] piglit glsl-fs-raytrace failure due to lack of function calls.</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27216">Bug 27216</a> - Assignment with a function call in an if statement causes an assertion failure</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27261">Bug 27261</a> - GLSL Compiler fails on the following vertex shader</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27265">Bug 27265</a> - GLSL Compiler doesnt link the attached vertex shader</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27388">Bug 27388</a> - [i965] piglit glsl-vs-arrays failure</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27403">Bug 27403</a> - GLSL struct causing "Invalid src register file ..." error</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27914">Bug 27914</a> - GLSL compiler uses MUL+ADD where it could use MAD</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28055">Bug 28055</a> - glsl-texcoord-array fails GLSL compilation</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28374">Bug 28374</a> - SIGSEGV shader/slang/slang_typeinfo.c:534</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28748">Bug 28748</a> - [i965] uninlined function calls support</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28833">Bug 28833</a> - piglit/shaders/glsl-texcoord-array fail</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28834">Bug 28834</a> - Add support for system fpclassify to GL_OES_query_matrix function for OpenBSD / NetBSD</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28837">Bug 28837</a> - varying vec4 index support</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28845">Bug 28845</a> - The GLU tesselator code has some warnings</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28889">Bug 28889</a> - [regression] wine game crash</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28894">Bug 28894</a> - slang build fails if absolute path contains spaces</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28913">Bug 28913</a> - [GLSL] allowing two version statements</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28931">Bug 28931</a> - Floating Point Exception in Warzone2100 Trunk version</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28966">Bug 28966</a> - [r300g] Dynamic branching 3 demo does not run</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28967">Bug 28967</a> - slang/slang_emit.c:350: storage_to_src_reg: Assertion `index &gt;= 0' failed.</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29013">Bug 29013</a> - [r300g] translate_rgb_op: unknown opcode ILLEGAL OPCODE</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29020">Bug 29020</a> - [r300g] Wine d3d9 tests hardlock</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29910">Bug 29910</a> - Mesa advertises bogus GL_ARB_shading_language_120</li>
-<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30196">Bug 30196</a> - [GLSL] gl_TextureMatrix{Inverse,Transpose,InverseTranspose} unsupported</li>
-</ul>
-
-
-<h2>Changes</h2>
-<ul>
-<li>The Mesa demo/test programs have been moved into a separate git
-repository.
-<li>GL/glext.h file upgraded to version 64
-<li>GL/glxext.h file upgraded to version 32
-<li>GL/wglext.h file upgraded to version 22
-</ul>
-
-</body>
-</html>
+<HTML>
+
+<TITLE>Mesa Release Notes</TITLE>
+
+<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<body bgcolor="#eeeeee">
+
+<H1>Mesa 7.9 Release Notes / October 4, 2010</H1>
+
+<p>
+Mesa 7.9 is a new development release.
+People who are concerned with stability and reliability should stick
+with a previous release or wait for Mesa 7.9.1.
+</p>
+<p>
+Mesa 7.9 implements the OpenGL 2.1 API, but the version reported by
+glGetString(GL_VERSION) depends on the particular driver being used.
+Some drivers don't support all the features required in OpenGL 2.1.
+</p>
+<p>
+See the <a href="install.html">Compiling/Installing page</a> for prerequisites
+for DRI hardware acceleration.
+</p>
+
+
+<h2>MD5 checksums</h2>
+<pre>
+ed65ab425b25895c7f473d0a5e6e64f8 MesaLib-7.9.tar.gz
+82c740c49d572baa6da2b1a1eee90bca MesaLib-7.9.tar.bz2
+cd2b6ecec759b0457475e94bbb38fedb MesaLib-7.9.zip
+7b54af9fb9b1f6a1a65db2520f50848f MesaGLUT-7.9.tar.gz
+20d07419d1929f833fdb36bced290ad5 MesaGLUT-7.9.tar.bz2
+62a7edecd7c92675cd6029b05217eb0a MesaGLUT-7.9.zip
+</pre>
+
+
+<h2>New features</h2>
+<ul>
+<li>New, improved GLSL compiler written by Intel.
+ See the <a href="shading.html"> Shading Language</a> page for
+ more information.
+<li>New, very experimental Gallium driver for R600-R700 Radeons.
+<li>Support for AMD Evergreen-based Radeons (HD 5xxx)
+<li>GL_EXT_timer_query extension (i965 driver and softpipe only)
+<li>GL_EXT_framebuffer_multisample extension (intel drivers, MAX_SAMPLES = 1)
+<li>GL_ARB_texture_swizzle extension (alias of GL_EXT_texture_swizzle)
+<li>GL_ARB_draw_elements_base_vertex, GL_ARB_fragment_program_shadow,
+ GL_ARB_window_pos, GL_EXT_gpu_program_parameters,
+ GL_ATI_texture_env_combine3, GL_MESA_pack_invert, and GL_OES_EGL_image
+ extensions in Gallium drivers
+<li>GL_ARB_depth_clamp and GL_NV_depth_clamp extensions (in nv50 and r600
+ Gallium drivers)
+<li>GL_ARB_half_float_vertex extension (in nvfx, r300, r600, softpipe,
+ and llvmpipe Gallium drivers)
+<li>GL_EXT_draw_buffers2 (in nv50, r600, softpipe, and llvmpipe Gallium
+ drivers)
+<li>GL_EXT_texture_swizzle (in nvfx, r300, r600, softpipe, and llvmpipe
+ Gallium drivers)
+<li>GL_ATI_texture_mirror_once (in nvfx, nv50, r300, r600, softpipe, and
+ llvmpipe Gallium drivers)
+<li>GL_NV_conditional_render (in r300 Gallium driver)
+<li>Initial "signs of life" support for Sandybridge hardware in i965 DRI
+ driver.
+</ul>
+
+
+<h2>Bug fixes</h2>
+<p>This list is likely incomplete.</p>
+<ul>
+<li>Massive improvements to the Gallium driver for R300-R500 Radeons; this
+ driver is now considered stable for use as a DRI (OpenGL) driver.
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=10908">Bug 10908</a> - GLSL: gl_FogParamaters gl_Fog built-in uniform not functioning</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=13753">Bug 13753</a> - Numerous bugs in GLSL uniform handling</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=16854">Bug 16854</a> - GLSL function call at global scope causes SEGV</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=16856">Bug 16856</a> - GLSL indexing of unsized array results in assertion failure</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=18659">Bug 18659</a> - Crash in shader/slang/slang_codegen.c _slang_gen_function_call_name()</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=19089">Bug 19089</a> - [GLSL] glsl1/shadow2D() cases fail</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=22622">Bug 22622</a> - [GM965 GLSL] noise*() cause GPU lockup</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=23743">Bug 23743</a> - For loop from 0 to 0 not optimized out</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=24553">Bug 24553</a> - shader compilation times explode when using more () pairs</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25664">Bug 25664</a> - [GLSL] re-declaring an empty array fails to compile</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25769">Bug 25769</a> - [GLSL] "float" can be implicitly converted to "int"</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25808">Bug 25808</a> - [GLSL] const variable is modified successfully</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25826">Bug 25826</a> - [GLSL] declaring an unsized array then re-declaring with a size fails</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25827">Bug 25827</a> - [GLSL] vector constructor accepts too many arguments successfully</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25829">Bug 25829</a> - [GLSL] allowing non-void function without returning value</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25830">Bug 25830</a> - [GLSL] allowing non-constant-expression as const declaration initializer</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25877">Bug 25877</a> - [GLSL 1.10] implicit conversion from "int" to "float" should not be allowed</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25878">Bug 25878</a> - [GLSL] sampler is converted to int successfully</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25994">Bug 25994</a> - [GM45][GLSL] 'return' statement in vertex shader unsupported</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25999">Bug 25999</a> - [GLSL] embedded structure constructor fails to compile</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26000">Bug 26000</a> - [GLSL] allowing different parameter qualifier between the function definition and declaration</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26001">Bug 26001</a> - [GLSL 1.10] constructing matrix from matrix succeeds</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26224">Bug 26224</a> - [GLSL] Cannot get location of a uniform struct member</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26990">Bug 26990</a> - [GLSL] variable declaration in "while" fails to compile</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27004">Bug 27004</a> - [GLSL] allowing macro redefinition</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27060">Bug 27060</a> - [965] piglit glsl-fs-raytrace failure due to lack of function calls.</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27216">Bug 27216</a> - Assignment with a function call in an if statement causes an assertion failure</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27261">Bug 27261</a> - GLSL Compiler fails on the following vertex shader</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27265">Bug 27265</a> - GLSL Compiler doesnt link the attached vertex shader</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27388">Bug 27388</a> - [i965] piglit glsl-vs-arrays failure</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27403">Bug 27403</a> - GLSL struct causing "Invalid src register file ..." error</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27914">Bug 27914</a> - GLSL compiler uses MUL+ADD where it could use MAD</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28055">Bug 28055</a> - glsl-texcoord-array fails GLSL compilation</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28374">Bug 28374</a> - SIGSEGV shader/slang/slang_typeinfo.c:534</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28748">Bug 28748</a> - [i965] uninlined function calls support</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28833">Bug 28833</a> - piglit/shaders/glsl-texcoord-array fail</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28834">Bug 28834</a> - Add support for system fpclassify to GL_OES_query_matrix function for OpenBSD / NetBSD</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28837">Bug 28837</a> - varying vec4 index support</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28845">Bug 28845</a> - The GLU tesselator code has some warnings</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28889">Bug 28889</a> - [regression] wine game crash</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28894">Bug 28894</a> - slang build fails if absolute path contains spaces</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28913">Bug 28913</a> - [GLSL] allowing two version statements</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28931">Bug 28931</a> - Floating Point Exception in Warzone2100 Trunk version</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28966">Bug 28966</a> - [r300g] Dynamic branching 3 demo does not run</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28967">Bug 28967</a> - slang/slang_emit.c:350: storage_to_src_reg: Assertion `index &gt;= 0' failed.</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29013">Bug 29013</a> - [r300g] translate_rgb_op: unknown opcode ILLEGAL OPCODE</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29020">Bug 29020</a> - [r300g] Wine d3d9 tests hardlock</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29910">Bug 29910</a> - Mesa advertises bogus GL_ARB_shading_language_120</li>
+<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30196">Bug 30196</a> - [GLSL] gl_TextureMatrix{Inverse,Transpose,InverseTranspose} unsupported</li>
+</ul>
+
+
+<h2>Changes</h2>
+<ul>
+<li>The Mesa demo/test programs have been moved into a separate git
+repository.
+<li>GL/glext.h file upgraded to version 64
+<li>GL/glxext.h file upgraded to version 32
+<li>GL/wglext.h file upgraded to version 22
+</ul>
+
+</body>
+</html>
diff --git a/mesalib/docs/shading.html b/mesalib/docs/shading.html
index cc1f9f1ec..aba395974 100644
--- a/mesalib/docs/shading.html
+++ b/mesalib/docs/shading.html
@@ -1,268 +1,268 @@
-<HTML>
-
-<TITLE>Shading Language Support</TITLE>
-
-<link rel="stylesheet" type="text/css" href="mesa.css"></head>
-
-<BODY>
-
-<H1>Shading Language Support</H1>
-
-<p>
-This page describes the features and status of Mesa's support for the
-<a href="http://opengl.org/documentation/glsl/" target="_parent">
-OpenGL Shading Language</a>.
-</p>
-
-<p>
-Contents
-</p>
-<ul>
-<li><a href="#envvars">Environment variables</a>
-<li><a href="#120">GLSL 1.20 support</a>
-<li><a href="#unsup">Unsupported Features</a>
-<li><a href="#notes">Implementation Notes</a>
-<li><a href="#hints">Programming Hints</a>
-<li><a href="#standalone">Stand-alone GLSL Compiler</a>
-<li><a href="#implementation">Compiler Implementation</a>
-<li><a href="#validation">Compiler Validation</a>
-</ul>
-
-
-
-<a name="envvars">
-<h2>Environment Variables</h2>
-
-<p>
-The <b>MESA_GLSL</b> environment variable can be set to a comma-separated
-list of keywords to control some aspects of the GLSL compiler and shader
-execution. These are generally used for debugging.
-</p>
-<ul>
-<li><b>dump</b> - print GLSL shader code to stdout at link time
-<li><b>log</b> - log all GLSL shaders to files.
- The filenames will be "shader_X.vert" or "shader_X.frag" where X
- the shader ID.
-<li><b>nopt</b> - disable compiler optimizations
-<li><b>opt</b> - force compiler optimizations
-<li><b>uniform</b> - print message to stdout when glUniform is called
-<li><b>nopvert</b> - force vertex shaders to be a simple shader that just transforms
- the vertex position with ftransform() and passes through the color and
- texcoord[0] attributes.
-<li><b>nopfrag</b> - force fragment shader to be a simple shader that passes
- through the color attribute.
-<li><b>useprog</b> - log glUseProgram calls to stderr
-</ul>
-<p>
-Example: export MESA_GLSL=dump,nopt
-</p>
-
-
-<a name="120">
-<h2>GLSL Version</h2>
-
-<p>
-The GLSL compiler currently supports version 1.20 of the shading language.
-</p>
-
-<p>
-Several GLSL extensions are also supported:
-</p>
-<ul>
-<li>GL_ARB_draw_buffers
-<li>GL_ARB_texture_rectangle
-<li>GL_ARB_fragment_coord_conventions
-<li>GL_EXT_texture_array
-</ul>
-
-
-<a name="unsup">
-<h2>Unsupported Features</h2>
-
-<p>XXX update this section</p>
-
-<p>
-The following features of the shading language are not yet fully supported
-in Mesa:
-</p>
-
-<ul>
-<li>Linking of multiple shaders does not always work. Currently, linking
- is implemented through shader concatenation and re-compiling. This
- doesn't always work because of some #pragma and preprocessor issues.
-<li>gl_ClipVertex
-<li>The gl_Color and gl_SecondaryColor varying vars are interpolated
- without perspective correction
-</ul>
-
-<p>
-All other major features of the shading language should function.
-</p>
-
-
-<a name="notes">
-<h2>Implementation Notes</h2>
-
-<ul>
-<li>Shading language programs are compiled into low-level programs
- very similar to those of GL_ARB_vertex/fragment_program.
-<li>All vector types (vec2, vec3, vec4, bvec2, etc) currently occupy full
- float[4] registers.
-<li>Float constants and variables are packed so that up to four floats
- can occupy one program parameter/register.
-<li>All function calls are inlined.
-<li>Shaders which use too many registers will not compile.
-<li>The quality of generated code is pretty good, register usage is fair.
-<li>Shader error detection and reporting of errors (InfoLog) is not
- very good yet.
-<li>The ftransform() function doesn't necessarily match the results of
- fixed-function transformation.
-</ul>
-
-<p>
-These issues will be addressed/resolved in the future.
-</p>
-
-
-<a name="hints">
-<h2>Programming Hints</h2>
-
-<ul>
-<li>Use the built-in library functions whenever possible.
- For example, instead of writing this:
-<pre>
- float x = 1.0 / sqrt(y);
-</pre>
- Write this:
-<pre>
- float x = inversesqrt(y);
-</pre>
-</li>
-</ul>
-
-
-<a name="standalone">
-<h2>Stand-alone GLSL Compiler</h2>
-
-<p>
-The stand-alone GLSL compiler program can be used to compile GLSL shaders
-into low-level GPU code.
-</p>
-
-<p>
-This tool is useful for:
-<p>
-<ul>
-<li>Inspecting GPU code to gain insight into compilation
-<li>Generating initial GPU code for subsequent hand-tuning
-<li>Debugging the GLSL compiler itself
-</ul>
-
-<p>
-After building Mesa, the compiler can be found at src/glsl/glsl_compiler
-</p>
-
-<p>
-Here's an example of using the compiler to compile a vertex shader and
-emit GL_ARB_vertex_program-style instructions:
-</p>
-<pre>
- src/glsl/glsl_compiler --dump-ast myshader.vert
-</pre>
-
-Options include
-<ul>
-<li><b>--dump-ast</b> - dump GPU code
-<li><b>--dump-hir</b> - dump high-level IR code
-<li><b>--dump-lir</b> - dump low-level IR code
-<li><b>--link</b> - ???
-</ul>
-
-
-
-
-<a name="implementation">
-<h2>Compiler Implementation</h2>
-
-<p>
-The source code for Mesa's shading language compiler is in the
-<code>src/glsl/</code> directory.
-</p>
-
-<p>
-XXX provide some info about the compiler....
-</p>
-
-<p>
-The final vertex and fragment programs may be interpreted in software
-(see prog_execute.c) or translated into a specific hardware architecture
-(see drivers/dri/i915/i915_fragprog.c for example).
-</p>
-
-<h3>Code Generation Options</h3>
-
-<p>
-Internally, there are several options that control the compiler's code
-generation and instruction selection.
-These options are seen in the gl_shader_state struct and may be set
-by the device driver to indicate its preferences:
-
-<pre>
-struct gl_shader_state
-{
- ...
- /** Driver-selectable options: */
- GLboolean EmitHighLevelInstructions;
- GLboolean EmitCondCodes;
- GLboolean EmitComments;
-};
-</pre>
-
-<ul>
-<li>EmitHighLevelInstructions
-<br>
-This option controls instruction selection for loops and conditionals.
-If the option is set high-level IF/ELSE/ENDIF, LOOP/ENDLOOP, CONT/BRK
-instructions will be emitted.
-Otherwise, those constructs will be implemented with BRA instructions.
-</li>
-
-<li>EmitCondCodes
-<br>
-If set, condition codes (ala GL_NV_fragment_program) will be used for
-branching and looping.
-Otherwise, ordinary registers will be used (the IF instruction will
-examine the first operand's X component and do the if-part if non-zero).
-This option is only relevant if EmitHighLevelInstructions is set.
-</li>
-
-<li>EmitComments
-<br>
-If set, instructions will be annoted with comments to help with debugging.
-Extra NOP instructions will also be inserted.
-</br>
-
-</ul>
-
-
-<a name="validation">
-<h2>Compiler Validation</h2>
-
-<p>
-Developers working on the GLSL compiler should test frequently to avoid
-regressions.
-</p>
-
-<p>
-The <a href="http://people.freedesktop.org/~nh/piglit/">Piglit</a> project
-has many GLSL tests and the
-<a href="http://glean.sf.net" target="_parent">Glean</a> glsl1 test
-tests GLSL features.
-</p>
-
-<p>
-The Mesa demos repository also has some good GLSL tests.
-</p>
-
-</BODY>
-</HTML>
+<HTML>
+
+<TITLE>Shading Language Support</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Shading Language Support</H1>
+
+<p>
+This page describes the features and status of Mesa's support for the
+<a href="http://opengl.org/documentation/glsl/" target="_parent">
+OpenGL Shading Language</a>.
+</p>
+
+<p>
+Contents
+</p>
+<ul>
+<li><a href="#envvars">Environment variables</a>
+<li><a href="#120">GLSL 1.20 support</a>
+<li><a href="#unsup">Unsupported Features</a>
+<li><a href="#notes">Implementation Notes</a>
+<li><a href="#hints">Programming Hints</a>
+<li><a href="#standalone">Stand-alone GLSL Compiler</a>
+<li><a href="#implementation">Compiler Implementation</a>
+<li><a href="#validation">Compiler Validation</a>
+</ul>
+
+
+
+<a name="envvars">
+<h2>Environment Variables</h2>
+
+<p>
+The <b>MESA_GLSL</b> environment variable can be set to a comma-separated
+list of keywords to control some aspects of the GLSL compiler and shader
+execution. These are generally used for debugging.
+</p>
+<ul>
+<li><b>dump</b> - print GLSL shader code to stdout at link time
+<li><b>log</b> - log all GLSL shaders to files.
+ The filenames will be "shader_X.vert" or "shader_X.frag" where X
+ the shader ID.
+<li><b>nopt</b> - disable compiler optimizations
+<li><b>opt</b> - force compiler optimizations
+<li><b>uniform</b> - print message to stdout when glUniform is called
+<li><b>nopvert</b> - force vertex shaders to be a simple shader that just transforms
+ the vertex position with ftransform() and passes through the color and
+ texcoord[0] attributes.
+<li><b>nopfrag</b> - force fragment shader to be a simple shader that passes
+ through the color attribute.
+<li><b>useprog</b> - log glUseProgram calls to stderr
+</ul>
+<p>
+Example: export MESA_GLSL=dump,nopt
+</p>
+
+
+<a name="120">
+<h2>GLSL Version</h2>
+
+<p>
+The GLSL compiler currently supports version 1.20 of the shading language.
+</p>
+
+<p>
+Several GLSL extensions are also supported:
+</p>
+<ul>
+<li>GL_ARB_draw_buffers
+<li>GL_ARB_texture_rectangle
+<li>GL_ARB_fragment_coord_conventions
+<li>GL_EXT_texture_array
+</ul>
+
+
+<a name="unsup">
+<h2>Unsupported Features</h2>
+
+<p>XXX update this section</p>
+
+<p>
+The following features of the shading language are not yet fully supported
+in Mesa:
+</p>
+
+<ul>
+<li>Linking of multiple shaders does not always work. Currently, linking
+ is implemented through shader concatenation and re-compiling. This
+ doesn't always work because of some #pragma and preprocessor issues.
+<li>gl_ClipVertex
+<li>The gl_Color and gl_SecondaryColor varying vars are interpolated
+ without perspective correction
+</ul>
+
+<p>
+All other major features of the shading language should function.
+</p>
+
+
+<a name="notes">
+<h2>Implementation Notes</h2>
+
+<ul>
+<li>Shading language programs are compiled into low-level programs
+ very similar to those of GL_ARB_vertex/fragment_program.
+<li>All vector types (vec2, vec3, vec4, bvec2, etc) currently occupy full
+ float[4] registers.
+<li>Float constants and variables are packed so that up to four floats
+ can occupy one program parameter/register.
+<li>All function calls are inlined.
+<li>Shaders which use too many registers will not compile.
+<li>The quality of generated code is pretty good, register usage is fair.
+<li>Shader error detection and reporting of errors (InfoLog) is not
+ very good yet.
+<li>The ftransform() function doesn't necessarily match the results of
+ fixed-function transformation.
+</ul>
+
+<p>
+These issues will be addressed/resolved in the future.
+</p>
+
+
+<a name="hints">
+<h2>Programming Hints</h2>
+
+<ul>
+<li>Use the built-in library functions whenever possible.
+ For example, instead of writing this:
+<pre>
+ float x = 1.0 / sqrt(y);
+</pre>
+ Write this:
+<pre>
+ float x = inversesqrt(y);
+</pre>
+</li>
+</ul>
+
+
+<a name="standalone">
+<h2>Stand-alone GLSL Compiler</h2>
+
+<p>
+The stand-alone GLSL compiler program can be used to compile GLSL shaders
+into low-level GPU code.
+</p>
+
+<p>
+This tool is useful for:
+<p>
+<ul>
+<li>Inspecting GPU code to gain insight into compilation
+<li>Generating initial GPU code for subsequent hand-tuning
+<li>Debugging the GLSL compiler itself
+</ul>
+
+<p>
+After building Mesa, the compiler can be found at src/glsl/glsl_compiler
+</p>
+
+<p>
+Here's an example of using the compiler to compile a vertex shader and
+emit GL_ARB_vertex_program-style instructions:
+</p>
+<pre>
+ src/glsl/glsl_compiler --dump-ast myshader.vert
+</pre>
+
+Options include
+<ul>
+<li><b>--dump-ast</b> - dump GPU code
+<li><b>--dump-hir</b> - dump high-level IR code
+<li><b>--dump-lir</b> - dump low-level IR code
+<li><b>--link</b> - ???
+</ul>
+
+
+
+
+<a name="implementation">
+<h2>Compiler Implementation</h2>
+
+<p>
+The source code for Mesa's shading language compiler is in the
+<code>src/glsl/</code> directory.
+</p>
+
+<p>
+XXX provide some info about the compiler....
+</p>
+
+<p>
+The final vertex and fragment programs may be interpreted in software
+(see prog_execute.c) or translated into a specific hardware architecture
+(see drivers/dri/i915/i915_fragprog.c for example).
+</p>
+
+<h3>Code Generation Options</h3>
+
+<p>
+Internally, there are several options that control the compiler's code
+generation and instruction selection.
+These options are seen in the gl_shader_state struct and may be set
+by the device driver to indicate its preferences:
+
+<pre>
+struct gl_shader_state
+{
+ ...
+ /** Driver-selectable options: */
+ GLboolean EmitHighLevelInstructions;
+ GLboolean EmitCondCodes;
+ GLboolean EmitComments;
+};
+</pre>
+
+<ul>
+<li>EmitHighLevelInstructions
+<br>
+This option controls instruction selection for loops and conditionals.
+If the option is set high-level IF/ELSE/ENDIF, LOOP/ENDLOOP, CONT/BRK
+instructions will be emitted.
+Otherwise, those constructs will be implemented with BRA instructions.
+</li>
+
+<li>EmitCondCodes
+<br>
+If set, condition codes (ala GL_NV_fragment_program) will be used for
+branching and looping.
+Otherwise, ordinary registers will be used (the IF instruction will
+examine the first operand's X component and do the if-part if non-zero).
+This option is only relevant if EmitHighLevelInstructions is set.
+</li>
+
+<li>EmitComments
+<br>
+If set, instructions will be annoted with comments to help with debugging.
+Extra NOP instructions will also be inserted.
+</br>
+
+</ul>
+
+
+<a name="validation">
+<h2>Compiler Validation</h2>
+
+<p>
+Developers working on the GLSL compiler should test frequently to avoid
+regressions.
+</p>
+
+<p>
+The <a href="http://people.freedesktop.org/~nh/piglit/">Piglit</a> project
+has many GLSL tests and the
+<a href="http://glean.sf.net" target="_parent">Glean</a> glsl1 test
+tests GLSL features.
+</p>
+
+<p>
+The Mesa demos repository also has some good GLSL tests.
+</p>
+
+</BODY>
+</HTML>
diff --git a/mesalib/include/GL/gl_mangle.h b/mesalib/include/GL/gl_mangle.h
index 9047ee6ff..368480338 100644
--- a/mesalib/include/GL/gl_mangle.h
+++ b/mesalib/include/GL/gl_mangle.h
@@ -1,2311 +1,2311 @@
-#if 0
-#define GL_MANGLE_C1 "DO NOT EDIT!!! - TO REGENERATE from gl.h, EXECUTE THIS FILE IN SHELL (/bin/sh) and save the output"
-#define GL_MANGLE_C2 "This file is used to create GL function protypes and aliases for the function names"
- files="gl.h glext.h"
-#define GL_MANGLE_C3 "get regeneration header - copy everything in this file above the 'REGENERATE_TO_END' line"
- awk '!done; /^\/\*REGENERATE_TO_END/ {done=1}' $0
- echo ""
-#define GL_MANGLE_C4 get aliases
- grep '^GLAPI' $files | sed -e 's/.*ENTRY gl\([^( ]*\).*$/#define gl\1 MANGLE(\1)/' | sort | uniq
- echo ""
- echo "#endif /* GL_MANGLE_H */"
- exit
-#endif /* REGENERATION */
-
-/*
- * If you compile Mesa with USE_MGL_NAMESPACE defined then you can link
- * your application both with OpenGL and Mesa. The Mesa functions will
- * be redefined so they are prefixed with "mgl" instead of "gl".
- * Mgl contributed by Randy Frank (rfrank@rsinc.com)
- * Regneration code contributed by Ray Tice (rayt@ma.ultra.net)
- */
-
-#ifndef GL_MANGLE_H
-#define GL_MANGLE_H
-
-#ifndef MANGLE
-#define MANGLE(x) mgl##x
-#endif /*MANGLE*/
-
-/*REGENERATE_TO_END-----------ALL LINES BELOW HERE GET REPLACED ON REGENERATION */
-
-#define glAccum MANGLE(Accum)
-#define glActiveProgramEXT MANGLE(ActiveProgramEXT)
-#define glActiveShaderProgram MANGLE(ActiveShaderProgram)
-#define glActiveStencilFaceEXT MANGLE(ActiveStencilFaceEXT)
-#define glActiveTextureARB MANGLE(ActiveTextureARB)
-#define glActiveTexture MANGLE(ActiveTexture)
-#define glActiveVaryingNV MANGLE(ActiveVaryingNV)
-#define glAlphaFragmentOp1ATI MANGLE(AlphaFragmentOp1ATI)
-#define glAlphaFragmentOp2ATI MANGLE(AlphaFragmentOp2ATI)
-#define glAlphaFragmentOp3ATI MANGLE(AlphaFragmentOp3ATI)
-#define glAlphaFunc MANGLE(AlphaFunc)
-#define glApplyTextureEXT MANGLE(ApplyTextureEXT)
-#define glAreProgramsResidentNV MANGLE(AreProgramsResidentNV)
-#define glAreTexturesResidentEXT MANGLE(AreTexturesResidentEXT)
-#define glAreTexturesResident MANGLE(AreTexturesResident)
-#define glArrayElementEXT MANGLE(ArrayElementEXT)
-#define glArrayElement MANGLE(ArrayElement)
-#define glArrayObjectATI MANGLE(ArrayObjectATI)
-#define glAsyncMarkerSGIX MANGLE(AsyncMarkerSGIX)
-#define glAttachObjectARB MANGLE(AttachObjectARB)
-#define glAttachShader MANGLE(AttachShader)
-#define glBeginConditionalRender MANGLE(BeginConditionalRender)
-#define glBeginConditionalRenderNV MANGLE(BeginConditionalRenderNV)
-#define glBeginFragmentShaderATI MANGLE(BeginFragmentShaderATI)
-#define glBegin MANGLE(Begin)
-#define glBeginOcclusionQueryNV MANGLE(BeginOcclusionQueryNV)
-#define glBeginPerfMonitorAMD MANGLE(BeginPerfMonitorAMD)
-#define glBeginQueryARB MANGLE(BeginQueryARB)
-#define glBeginQueryIndexed MANGLE(BeginQueryIndexed)
-#define glBeginQuery MANGLE(BeginQuery)
-#define glBeginTransformFeedbackEXT MANGLE(BeginTransformFeedbackEXT)
-#define glBeginTransformFeedback MANGLE(BeginTransformFeedback)
-#define glBeginTransformFeedbackNV MANGLE(BeginTransformFeedbackNV)
-#define glBeginVertexShaderEXT MANGLE(BeginVertexShaderEXT)
-#define glBeginVideoCaptureNV MANGLE(BeginVideoCaptureNV)
-#define glBindAttribLocationARB MANGLE(BindAttribLocationARB)
-#define glBindAttribLocation MANGLE(BindAttribLocation)
-#define glBindBufferARB MANGLE(BindBufferARB)
-#define glBindBufferBaseEXT MANGLE(BindBufferBaseEXT)
-#define glBindBufferBase MANGLE(BindBufferBase)
-#define glBindBufferBaseNV MANGLE(BindBufferBaseNV)
-#define glBindBuffer MANGLE(BindBuffer)
-#define glBindBufferOffsetEXT MANGLE(BindBufferOffsetEXT)
-#define glBindBufferOffsetNV MANGLE(BindBufferOffsetNV)
-#define glBindBufferRangeEXT MANGLE(BindBufferRangeEXT)
-#define glBindBufferRange MANGLE(BindBufferRange)
-#define glBindBufferRangeNV MANGLE(BindBufferRangeNV)
-#define glBindFragDataLocationEXT MANGLE(BindFragDataLocationEXT)
-#define glBindFragDataLocationIndexed MANGLE(BindFragDataLocationIndexed)
-#define glBindFragDataLocation MANGLE(BindFragDataLocation)
-#define glBindFragmentShaderATI MANGLE(BindFragmentShaderATI)
-#define glBindFramebufferEXT MANGLE(BindFramebufferEXT)
-#define glBindFramebuffer MANGLE(BindFramebuffer)
-#define glBindImageTextureEXT MANGLE(BindImageTextureEXT)
-#define glBindLightParameterEXT MANGLE(BindLightParameterEXT)
-#define glBindMaterialParameterEXT MANGLE(BindMaterialParameterEXT)
-#define glBindMultiTextureEXT MANGLE(BindMultiTextureEXT)
-#define glBindParameterEXT MANGLE(BindParameterEXT)
-#define glBindProgramARB MANGLE(BindProgramARB)
-#define glBindProgramNV MANGLE(BindProgramNV)
-#define glBindProgramPipeline MANGLE(BindProgramPipeline)
-#define glBindRenderbufferEXT MANGLE(BindRenderbufferEXT)
-#define glBindRenderbuffer MANGLE(BindRenderbuffer)
-#define glBindSampler MANGLE(BindSampler)
-#define glBindTexGenParameterEXT MANGLE(BindTexGenParameterEXT)
-#define glBindTextureEXT MANGLE(BindTextureEXT)
-#define glBindTexture MANGLE(BindTexture)
-#define glBindTextureUnitParameterEXT MANGLE(BindTextureUnitParameterEXT)
-#define glBindTransformFeedback MANGLE(BindTransformFeedback)
-#define glBindTransformFeedbackNV MANGLE(BindTransformFeedbackNV)
-#define glBindVertexArrayAPPLE MANGLE(BindVertexArrayAPPLE)
-#define glBindVertexArray MANGLE(BindVertexArray)
-#define glBindVertexShaderEXT MANGLE(BindVertexShaderEXT)
-#define glBindVideoCaptureStreamBufferNV MANGLE(BindVideoCaptureStreamBufferNV)
-#define glBindVideoCaptureStreamTextureNV MANGLE(BindVideoCaptureStreamTextureNV)
-#define glBinormal3bEXT MANGLE(Binormal3bEXT)
-#define glBinormal3bvEXT MANGLE(Binormal3bvEXT)
-#define glBinormal3dEXT MANGLE(Binormal3dEXT)
-#define glBinormal3dvEXT MANGLE(Binormal3dvEXT)
-#define glBinormal3fEXT MANGLE(Binormal3fEXT)
-#define glBinormal3fvEXT MANGLE(Binormal3fvEXT)
-#define glBinormal3iEXT MANGLE(Binormal3iEXT)
-#define glBinormal3ivEXT MANGLE(Binormal3ivEXT)
-#define glBinormal3sEXT MANGLE(Binormal3sEXT)
-#define glBinormal3svEXT MANGLE(Binormal3svEXT)
-#define glBinormalPointerEXT MANGLE(BinormalPointerEXT)
-#define glBitmap MANGLE(Bitmap)
-#define glBlendColorEXT MANGLE(BlendColorEXT)
-#define glBlendColor MANGLE(BlendColor)
-#define glBlendEquationEXT MANGLE(BlendEquationEXT)
-#define glBlendEquationiARB MANGLE(BlendEquationiARB)
-#define glBlendEquationi MANGLE(BlendEquationi)
-#define glBlendEquationIndexedAMD MANGLE(BlendEquationIndexedAMD)
-#define glBlendEquation MANGLE(BlendEquation)
-#define glBlendEquationSeparateATI MANGLE(BlendEquationSeparateATI)
-#define glBlendEquationSeparateEXT MANGLE(BlendEquationSeparateEXT)
-#define glBlendEquationSeparateiARB MANGLE(BlendEquationSeparateiARB)
-#define glBlendEquationSeparatei MANGLE(BlendEquationSeparatei)
-#define glBlendEquationSeparateIndexedAMD MANGLE(BlendEquationSeparateIndexedAMD)
-#define glBlendEquationSeparate MANGLE(BlendEquationSeparate)
-#define glBlendFunciARB MANGLE(BlendFunciARB)
-#define glBlendFunci MANGLE(BlendFunci)
-#define glBlendFuncIndexedAMD MANGLE(BlendFuncIndexedAMD)
-#define glBlendFunc MANGLE(BlendFunc)
-#define glBlendFuncSeparateEXT MANGLE(BlendFuncSeparateEXT)
-#define glBlendFuncSeparateiARB MANGLE(BlendFuncSeparateiARB)
-#define glBlendFuncSeparatei MANGLE(BlendFuncSeparatei)
-#define glBlendFuncSeparateIndexedAMD MANGLE(BlendFuncSeparateIndexedAMD)
-#define glBlendFuncSeparateINGR MANGLE(BlendFuncSeparateINGR)
-#define glBlendFuncSeparate MANGLE(BlendFuncSeparate)
-#define glBlitFramebufferEXT MANGLE(BlitFramebufferEXT)
-#define glBlitFramebuffer MANGLE(BlitFramebuffer)
-#define glBufferAddressRangeNV MANGLE(BufferAddressRangeNV)
-#define glBufferDataARB MANGLE(BufferDataARB)
-#define glBufferData MANGLE(BufferData)
-#define glBufferParameteriAPPLE MANGLE(BufferParameteriAPPLE)
-#define glBufferSubDataARB MANGLE(BufferSubDataARB)
-#define glBufferSubData MANGLE(BufferSubData)
-#define glCallList MANGLE(CallList)
-#define glCallLists MANGLE(CallLists)
-#define glCheckFramebufferStatusEXT MANGLE(CheckFramebufferStatusEXT)
-#define glCheckFramebufferStatus MANGLE(CheckFramebufferStatus)
-#define glCheckNamedFramebufferStatusEXT MANGLE(CheckNamedFramebufferStatusEXT)
-#define glClampColorARB MANGLE(ClampColorARB)
-#define glClampColor MANGLE(ClampColor)
-#define glClearAccum MANGLE(ClearAccum)
-#define glClearBufferfi MANGLE(ClearBufferfi)
-#define glClearBufferfv MANGLE(ClearBufferfv)
-#define glClearBufferiv MANGLE(ClearBufferiv)
-#define glClearBufferuiv MANGLE(ClearBufferuiv)
-#define glClearColorIiEXT MANGLE(ClearColorIiEXT)
-#define glClearColorIuiEXT MANGLE(ClearColorIuiEXT)
-#define glClearColor MANGLE(ClearColor)
-#define glClearDebugLogMESA MANGLE(ClearDebugLogMESA)
-#define glClearDepthdNV MANGLE(ClearDepthdNV)
-#define glClearDepthf MANGLE(ClearDepthf)
-#define glClearDepth MANGLE(ClearDepth)
-#define glClearIndex MANGLE(ClearIndex)
-#define glClear MANGLE(Clear)
-#define glClearStencil MANGLE(ClearStencil)
-#define glClientActiveTextureARB MANGLE(ClientActiveTextureARB)
-#define glClientActiveTexture MANGLE(ClientActiveTexture)
-#define glClientActiveVertexStreamATI MANGLE(ClientActiveVertexStreamATI)
-#define glClientAttribDefaultEXT MANGLE(ClientAttribDefaultEXT)
-#define glClientWaitSync MANGLE(ClientWaitSync)
-#define glClipPlane MANGLE(ClipPlane)
-#define glColor3b MANGLE(Color3b)
-#define glColor3bv MANGLE(Color3bv)
-#define glColor3d MANGLE(Color3d)
-#define glColor3dv MANGLE(Color3dv)
-#define glColor3f MANGLE(Color3f)
-#define glColor3fVertex3fSUN MANGLE(Color3fVertex3fSUN)
-#define glColor3fVertex3fvSUN MANGLE(Color3fVertex3fvSUN)
-#define glColor3fv MANGLE(Color3fv)
-#define glColor3hNV MANGLE(Color3hNV)
-#define glColor3hvNV MANGLE(Color3hvNV)
-#define glColor3i MANGLE(Color3i)
-#define glColor3iv MANGLE(Color3iv)
-#define glColor3s MANGLE(Color3s)
-#define glColor3sv MANGLE(Color3sv)
-#define glColor3ub MANGLE(Color3ub)
-#define glColor3ubv MANGLE(Color3ubv)
-#define glColor3ui MANGLE(Color3ui)
-#define glColor3uiv MANGLE(Color3uiv)
-#define glColor3us MANGLE(Color3us)
-#define glColor3usv MANGLE(Color3usv)
-#define glColor4b MANGLE(Color4b)
-#define glColor4bv MANGLE(Color4bv)
-#define glColor4d MANGLE(Color4d)
-#define glColor4dv MANGLE(Color4dv)
-#define glColor4f MANGLE(Color4f)
-#define glColor4fNormal3fVertex3fSUN MANGLE(Color4fNormal3fVertex3fSUN)
-#define glColor4fNormal3fVertex3fvSUN MANGLE(Color4fNormal3fVertex3fvSUN)
-#define glColor4fv MANGLE(Color4fv)
-#define glColor4hNV MANGLE(Color4hNV)
-#define glColor4hvNV MANGLE(Color4hvNV)
-#define glColor4i MANGLE(Color4i)
-#define glColor4iv MANGLE(Color4iv)
-#define glColor4s MANGLE(Color4s)
-#define glColor4sv MANGLE(Color4sv)
-#define glColor4ub MANGLE(Color4ub)
-#define glColor4ubVertex2fSUN MANGLE(Color4ubVertex2fSUN)
-#define glColor4ubVertex2fvSUN MANGLE(Color4ubVertex2fvSUN)
-#define glColor4ubVertex3fSUN MANGLE(Color4ubVertex3fSUN)
-#define glColor4ubVertex3fvSUN MANGLE(Color4ubVertex3fvSUN)
-#define glColor4ubv MANGLE(Color4ubv)
-#define glColor4ui MANGLE(Color4ui)
-#define glColor4uiv MANGLE(Color4uiv)
-#define glColor4us MANGLE(Color4us)
-#define glColor4usv MANGLE(Color4usv)
-#define glColorFormatNV MANGLE(ColorFormatNV)
-#define glColorFragmentOp1ATI MANGLE(ColorFragmentOp1ATI)
-#define glColorFragmentOp2ATI MANGLE(ColorFragmentOp2ATI)
-#define glColorFragmentOp3ATI MANGLE(ColorFragmentOp3ATI)
-#define glColorMaski MANGLE(ColorMaski)
-#define glColorMaskIndexedEXT MANGLE(ColorMaskIndexedEXT)
-#define glColorMask MANGLE(ColorMask)
-#define glColorMaterial MANGLE(ColorMaterial)
-#define glColorP3ui MANGLE(ColorP3ui)
-#define glColorP3uiv MANGLE(ColorP3uiv)
-#define glColorP4ui MANGLE(ColorP4ui)
-#define glColorP4uiv MANGLE(ColorP4uiv)
-#define glColorPointerEXT MANGLE(ColorPointerEXT)
-#define glColorPointerListIBM MANGLE(ColorPointerListIBM)
-#define glColorPointer MANGLE(ColorPointer)
-#define glColorPointervINTEL MANGLE(ColorPointervINTEL)
-#define glColorSubTableEXT MANGLE(ColorSubTableEXT)
-#define glColorSubTable MANGLE(ColorSubTable)
-#define glColorTableEXT MANGLE(ColorTableEXT)
-#define glColorTable MANGLE(ColorTable)
-#define glColorTableParameterfv MANGLE(ColorTableParameterfv)
-#define glColorTableParameterfvSGI MANGLE(ColorTableParameterfvSGI)
-#define glColorTableParameteriv MANGLE(ColorTableParameteriv)
-#define glColorTableParameterivSGI MANGLE(ColorTableParameterivSGI)
-#define glColorTableSGI MANGLE(ColorTableSGI)
-#define glCombinerInputNV MANGLE(CombinerInputNV)
-#define glCombinerOutputNV MANGLE(CombinerOutputNV)
-#define glCombinerParameterfNV MANGLE(CombinerParameterfNV)
-#define glCombinerParameterfvNV MANGLE(CombinerParameterfvNV)
-#define glCombinerParameteriNV MANGLE(CombinerParameteriNV)
-#define glCombinerParameterivNV MANGLE(CombinerParameterivNV)
-#define glCombinerStageParameterfvNV MANGLE(CombinerStageParameterfvNV)
-#define glCompileShaderARB MANGLE(CompileShaderARB)
-#define glCompileShaderIncludeARB MANGLE(CompileShaderIncludeARB)
-#define glCompileShader MANGLE(CompileShader)
-#define glCompressedMultiTexImage1DEXT MANGLE(CompressedMultiTexImage1DEXT)
-#define glCompressedMultiTexImage2DEXT MANGLE(CompressedMultiTexImage2DEXT)
-#define glCompressedMultiTexImage3DEXT MANGLE(CompressedMultiTexImage3DEXT)
-#define glCompressedMultiTexSubImage1DEXT MANGLE(CompressedMultiTexSubImage1DEXT)
-#define glCompressedMultiTexSubImage2DEXT MANGLE(CompressedMultiTexSubImage2DEXT)
-#define glCompressedMultiTexSubImage3DEXT MANGLE(CompressedMultiTexSubImage3DEXT)
-#define glCompressedTexImage1DARB MANGLE(CompressedTexImage1DARB)
-#define glCompressedTexImage1D MANGLE(CompressedTexImage1D)
-#define glCompressedTexImage2DARB MANGLE(CompressedTexImage2DARB)
-#define glCompressedTexImage2D MANGLE(CompressedTexImage2D)
-#define glCompressedTexImage3DARB MANGLE(CompressedTexImage3DARB)
-#define glCompressedTexImage3D MANGLE(CompressedTexImage3D)
-#define glCompressedTexSubImage1DARB MANGLE(CompressedTexSubImage1DARB)
-#define glCompressedTexSubImage1D MANGLE(CompressedTexSubImage1D)
-#define glCompressedTexSubImage2DARB MANGLE(CompressedTexSubImage2DARB)
-#define glCompressedTexSubImage2D MANGLE(CompressedTexSubImage2D)
-#define glCompressedTexSubImage3DARB MANGLE(CompressedTexSubImage3DARB)
-#define glCompressedTexSubImage3D MANGLE(CompressedTexSubImage3D)
-#define glCompressedTextureImage1DEXT MANGLE(CompressedTextureImage1DEXT)
-#define glCompressedTextureImage2DEXT MANGLE(CompressedTextureImage2DEXT)
-#define glCompressedTextureImage3DEXT MANGLE(CompressedTextureImage3DEXT)
-#define glCompressedTextureSubImage1DEXT MANGLE(CompressedTextureSubImage1DEXT)
-#define glCompressedTextureSubImage2DEXT MANGLE(CompressedTextureSubImage2DEXT)
-#define glCompressedTextureSubImage3DEXT MANGLE(CompressedTextureSubImage3DEXT)
-#define glConvolutionFilter1DEXT MANGLE(ConvolutionFilter1DEXT)
-#define glConvolutionFilter1D MANGLE(ConvolutionFilter1D)
-#define glConvolutionFilter2DEXT MANGLE(ConvolutionFilter2DEXT)
-#define glConvolutionFilter2D MANGLE(ConvolutionFilter2D)
-#define glConvolutionParameterfEXT MANGLE(ConvolutionParameterfEXT)
-#define glConvolutionParameterf MANGLE(ConvolutionParameterf)
-#define glConvolutionParameterfvEXT MANGLE(ConvolutionParameterfvEXT)
-#define glConvolutionParameterfv MANGLE(ConvolutionParameterfv)
-#define glConvolutionParameteriEXT MANGLE(ConvolutionParameteriEXT)
-#define glConvolutionParameteri MANGLE(ConvolutionParameteri)
-#define glConvolutionParameterivEXT MANGLE(ConvolutionParameterivEXT)
-#define glConvolutionParameteriv MANGLE(ConvolutionParameteriv)
-#define glCopyBufferSubData MANGLE(CopyBufferSubData)
-#define glCopyColorSubTableEXT MANGLE(CopyColorSubTableEXT)
-#define glCopyColorSubTable MANGLE(CopyColorSubTable)
-#define glCopyColorTable MANGLE(CopyColorTable)
-#define glCopyColorTableSGI MANGLE(CopyColorTableSGI)
-#define glCopyConvolutionFilter1DEXT MANGLE(CopyConvolutionFilter1DEXT)
-#define glCopyConvolutionFilter1D MANGLE(CopyConvolutionFilter1D)
-#define glCopyConvolutionFilter2DEXT MANGLE(CopyConvolutionFilter2DEXT)
-#define glCopyConvolutionFilter2D MANGLE(CopyConvolutionFilter2D)
-#define glCopyImageSubDataNV MANGLE(CopyImageSubDataNV)
-#define glCopyMultiTexImage1DEXT MANGLE(CopyMultiTexImage1DEXT)
-#define glCopyMultiTexImage2DEXT MANGLE(CopyMultiTexImage2DEXT)
-#define glCopyMultiTexSubImage1DEXT MANGLE(CopyMultiTexSubImage1DEXT)
-#define glCopyMultiTexSubImage2DEXT MANGLE(CopyMultiTexSubImage2DEXT)
-#define glCopyMultiTexSubImage3DEXT MANGLE(CopyMultiTexSubImage3DEXT)
-#define glCopyPixels MANGLE(CopyPixels)
-#define glCopyTexImage1DEXT MANGLE(CopyTexImage1DEXT)
-#define glCopyTexImage1D MANGLE(CopyTexImage1D)
-#define glCopyTexImage2DEXT MANGLE(CopyTexImage2DEXT)
-#define glCopyTexImage2D MANGLE(CopyTexImage2D)
-#define glCopyTexSubImage1DEXT MANGLE(CopyTexSubImage1DEXT)
-#define glCopyTexSubImage1D MANGLE(CopyTexSubImage1D)
-#define glCopyTexSubImage2DEXT MANGLE(CopyTexSubImage2DEXT)
-#define glCopyTexSubImage2D MANGLE(CopyTexSubImage2D)
-#define glCopyTexSubImage3DEXT MANGLE(CopyTexSubImage3DEXT)
-#define glCopyTexSubImage3D MANGLE(CopyTexSubImage3D)
-#define glCopyTextureImage1DEXT MANGLE(CopyTextureImage1DEXT)
-#define glCopyTextureImage2DEXT MANGLE(CopyTextureImage2DEXT)
-#define glCopyTextureSubImage1DEXT MANGLE(CopyTextureSubImage1DEXT)
-#define glCopyTextureSubImage2DEXT MANGLE(CopyTextureSubImage2DEXT)
-#define glCopyTextureSubImage3DEXT MANGLE(CopyTextureSubImage3DEXT)
-#define glCreateDebugObjectMESA MANGLE(CreateDebugObjectMESA)
-#define glCreateProgram MANGLE(CreateProgram)
-#define glCreateProgramObjectARB MANGLE(CreateProgramObjectARB)
-#define glCreateShader MANGLE(CreateShader)
-#define glCreateShaderObjectARB MANGLE(CreateShaderObjectARB)
-#define glCreateShaderProgramEXT MANGLE(CreateShaderProgramEXT)
-#define glCreateShaderProgramv MANGLE(CreateShaderProgramv)
-#define glCreateSyncFromCLeventARB MANGLE(CreateSyncFromCLeventARB)
-#define glCullFace MANGLE(CullFace)
-#define glCullParameterdvEXT MANGLE(CullParameterdvEXT)
-#define glCullParameterfvEXT MANGLE(CullParameterfvEXT)
-#define glCurrentPaletteMatrixARB MANGLE(CurrentPaletteMatrixARB)
-#define glDebugMessageCallbackAMD MANGLE(DebugMessageCallbackAMD)
-#define glDebugMessageCallbackARB MANGLE(DebugMessageCallbackARB)
-#define glDebugMessageControlARB MANGLE(DebugMessageControlARB)
-#define glDebugMessageEnableAMD MANGLE(DebugMessageEnableAMD)
-#define glDebugMessageInsertAMD MANGLE(DebugMessageInsertAMD)
-#define glDebugMessageInsertARB MANGLE(DebugMessageInsertARB)
-#define glDeformationMap3dSGIX MANGLE(DeformationMap3dSGIX)
-#define glDeformationMap3fSGIX MANGLE(DeformationMap3fSGIX)
-#define glDeformSGIX MANGLE(DeformSGIX)
-#define glDeleteAsyncMarkersSGIX MANGLE(DeleteAsyncMarkersSGIX)
-#define glDeleteBuffersARB MANGLE(DeleteBuffersARB)
-#define glDeleteBuffers MANGLE(DeleteBuffers)
-#define glDeleteFencesAPPLE MANGLE(DeleteFencesAPPLE)
-#define glDeleteFencesNV MANGLE(DeleteFencesNV)
-#define glDeleteFragmentShaderATI MANGLE(DeleteFragmentShaderATI)
-#define glDeleteFramebuffersEXT MANGLE(DeleteFramebuffersEXT)
-#define glDeleteFramebuffers MANGLE(DeleteFramebuffers)
-#define glDeleteLists MANGLE(DeleteLists)
-#define glDeleteNamedStringARB MANGLE(DeleteNamedStringARB)
-#define glDeleteNamesAMD MANGLE(DeleteNamesAMD)
-#define glDeleteObjectARB MANGLE(DeleteObjectARB)
-#define glDeleteOcclusionQueriesNV MANGLE(DeleteOcclusionQueriesNV)
-#define glDeletePerfMonitorsAMD MANGLE(DeletePerfMonitorsAMD)
-#define glDeleteProgram MANGLE(DeleteProgram)
-#define glDeleteProgramPipelines MANGLE(DeleteProgramPipelines)
-#define glDeleteProgramsARB MANGLE(DeleteProgramsARB)
-#define glDeleteProgramsNV MANGLE(DeleteProgramsNV)
-#define glDeleteQueriesARB MANGLE(DeleteQueriesARB)
-#define glDeleteQueries MANGLE(DeleteQueries)
-#define glDeleteRenderbuffersEXT MANGLE(DeleteRenderbuffersEXT)
-#define glDeleteRenderbuffers MANGLE(DeleteRenderbuffers)
-#define glDeleteSamplers MANGLE(DeleteSamplers)
-#define glDeleteShader MANGLE(DeleteShader)
-#define glDeleteSync MANGLE(DeleteSync)
-#define glDeleteTexturesEXT MANGLE(DeleteTexturesEXT)
-#define glDeleteTextures MANGLE(DeleteTextures)
-#define glDeleteTransformFeedbacks MANGLE(DeleteTransformFeedbacks)
-#define glDeleteTransformFeedbacksNV MANGLE(DeleteTransformFeedbacksNV)
-#define glDeleteVertexArraysAPPLE MANGLE(DeleteVertexArraysAPPLE)
-#define glDeleteVertexArrays MANGLE(DeleteVertexArrays)
-#define glDeleteVertexShaderEXT MANGLE(DeleteVertexShaderEXT)
-#define glDepthBoundsdNV MANGLE(DepthBoundsdNV)
-#define glDepthBoundsEXT MANGLE(DepthBoundsEXT)
-#define glDepthFunc MANGLE(DepthFunc)
-#define glDepthMask MANGLE(DepthMask)
-#define glDepthRangeArrayv MANGLE(DepthRangeArrayv)
-#define glDepthRangedNV MANGLE(DepthRangedNV)
-#define glDepthRangef MANGLE(DepthRangef)
-#define glDepthRangeIndexed MANGLE(DepthRangeIndexed)
-#define glDepthRange MANGLE(DepthRange)
-#define glDetachObjectARB MANGLE(DetachObjectARB)
-#define glDetachShader MANGLE(DetachShader)
-#define glDetailTexFuncSGIS MANGLE(DetailTexFuncSGIS)
-#define glDisableClientStateIndexedEXT MANGLE(DisableClientStateIndexedEXT)
-#define glDisableClientState MANGLE(DisableClientState)
-#define glDisablei MANGLE(Disablei)
-#define glDisableIndexedEXT MANGLE(DisableIndexedEXT)
-#define glDisable MANGLE(Disable)
-#define glDisableVariantClientStateEXT MANGLE(DisableVariantClientStateEXT)
-#define glDisableVertexAttribAPPLE MANGLE(DisableVertexAttribAPPLE)
-#define glDisableVertexAttribArrayARB MANGLE(DisableVertexAttribArrayARB)
-#define glDisableVertexAttribArray MANGLE(DisableVertexAttribArray)
-#define glDrawArraysEXT MANGLE(DrawArraysEXT)
-#define glDrawArraysIndirect MANGLE(DrawArraysIndirect)
-#define glDrawArraysInstancedARB MANGLE(DrawArraysInstancedARB)
-#define glDrawArraysInstancedEXT MANGLE(DrawArraysInstancedEXT)
-#define glDrawArraysInstanced MANGLE(DrawArraysInstanced)
-#define glDrawArrays MANGLE(DrawArrays)
-#define glDrawBuffer MANGLE(DrawBuffer)
-#define glDrawBuffersARB MANGLE(DrawBuffersARB)
-#define glDrawBuffersATI MANGLE(DrawBuffersATI)
-#define glDrawBuffers MANGLE(DrawBuffers)
-#define glDrawElementArrayAPPLE MANGLE(DrawElementArrayAPPLE)
-#define glDrawElementArrayATI MANGLE(DrawElementArrayATI)
-#define glDrawElementsBaseVertex MANGLE(DrawElementsBaseVertex)
-#define glDrawElementsIndirect MANGLE(DrawElementsIndirect)
-#define glDrawElementsInstancedARB MANGLE(DrawElementsInstancedARB)
-#define glDrawElementsInstancedBaseVertex MANGLE(DrawElementsInstancedBaseVertex)
-#define glDrawElementsInstancedEXT MANGLE(DrawElementsInstancedEXT)
-#define glDrawElementsInstanced MANGLE(DrawElementsInstanced)
-#define glDrawElements MANGLE(DrawElements)
-#define glDrawMeshArraysSUN MANGLE(DrawMeshArraysSUN)
-#define glDrawPixels MANGLE(DrawPixels)
-#define glDrawRangeElementArrayAPPLE MANGLE(DrawRangeElementArrayAPPLE)
-#define glDrawRangeElementArrayATI MANGLE(DrawRangeElementArrayATI)
-#define glDrawRangeElementsBaseVertex MANGLE(DrawRangeElementsBaseVertex)
-#define glDrawRangeElementsEXT MANGLE(DrawRangeElementsEXT)
-#define glDrawRangeElements MANGLE(DrawRangeElements)
-#define glDrawTransformFeedback MANGLE(DrawTransformFeedback)
-#define glDrawTransformFeedbackNV MANGLE(DrawTransformFeedbackNV)
-#define glDrawTransformFeedbackStream MANGLE(DrawTransformFeedbackStream)
-#define glEdgeFlagFormatNV MANGLE(EdgeFlagFormatNV)
-#define glEdgeFlag MANGLE(EdgeFlag)
-#define glEdgeFlagPointerEXT MANGLE(EdgeFlagPointerEXT)
-#define glEdgeFlagPointerListIBM MANGLE(EdgeFlagPointerListIBM)
-#define glEdgeFlagPointer MANGLE(EdgeFlagPointer)
-#define glEdgeFlagv MANGLE(EdgeFlagv)
-#define glEGLImageTargetRenderbufferStorageOES MANGLE(EGLImageTargetRenderbufferStorageOES)
-#define glEGLImageTargetTexture2DOES MANGLE(EGLImageTargetTexture2DOES)
-#define glElementPointerAPPLE MANGLE(ElementPointerAPPLE)
-#define glElementPointerATI MANGLE(ElementPointerATI)
-#define glEnableClientStateIndexedEXT MANGLE(EnableClientStateIndexedEXT)
-#define glEnableClientState MANGLE(EnableClientState)
-#define glEnablei MANGLE(Enablei)
-#define glEnableIndexedEXT MANGLE(EnableIndexedEXT)
-#define glEnable MANGLE(Enable)
-#define glEnableVariantClientStateEXT MANGLE(EnableVariantClientStateEXT)
-#define glEnableVertexAttribAPPLE MANGLE(EnableVertexAttribAPPLE)
-#define glEnableVertexAttribArrayARB MANGLE(EnableVertexAttribArrayARB)
-#define glEnableVertexAttribArray MANGLE(EnableVertexAttribArray)
-#define glEndConditionalRender MANGLE(EndConditionalRender)
-#define glEndConditionalRenderNV MANGLE(EndConditionalRenderNV)
-#define glEndFragmentShaderATI MANGLE(EndFragmentShaderATI)
-#define glEndList MANGLE(EndList)
-#define glEnd MANGLE(End)
-#define glEndOcclusionQueryNV MANGLE(EndOcclusionQueryNV)
-#define glEndPerfMonitorAMD MANGLE(EndPerfMonitorAMD)
-#define glEndQueryARB MANGLE(EndQueryARB)
-#define glEndQueryIndexed MANGLE(EndQueryIndexed)
-#define glEndQuery MANGLE(EndQuery)
-#define glEndTransformFeedbackEXT MANGLE(EndTransformFeedbackEXT)
-#define glEndTransformFeedback MANGLE(EndTransformFeedback)
-#define glEndTransformFeedbackNV MANGLE(EndTransformFeedbackNV)
-#define glEndVertexShaderEXT MANGLE(EndVertexShaderEXT)
-#define glEndVideoCaptureNV MANGLE(EndVideoCaptureNV)
-#define glEvalCoord1d MANGLE(EvalCoord1d)
-#define glEvalCoord1dv MANGLE(EvalCoord1dv)
-#define glEvalCoord1f MANGLE(EvalCoord1f)
-#define glEvalCoord1fv MANGLE(EvalCoord1fv)
-#define glEvalCoord2d MANGLE(EvalCoord2d)
-#define glEvalCoord2dv MANGLE(EvalCoord2dv)
-#define glEvalCoord2f MANGLE(EvalCoord2f)
-#define glEvalCoord2fv MANGLE(EvalCoord2fv)
-#define glEvalMapsNV MANGLE(EvalMapsNV)
-#define glEvalMesh1 MANGLE(EvalMesh1)
-#define glEvalMesh2 MANGLE(EvalMesh2)
-#define glEvalPoint1 MANGLE(EvalPoint1)
-#define glEvalPoint2 MANGLE(EvalPoint2)
-#define glExecuteProgramNV MANGLE(ExecuteProgramNV)
-#define glExtractComponentEXT MANGLE(ExtractComponentEXT)
-#define glFeedbackBuffer MANGLE(FeedbackBuffer)
-#define glFenceSync MANGLE(FenceSync)
-#define glFinalCombinerInputNV MANGLE(FinalCombinerInputNV)
-#define glFinishAsyncSGIX MANGLE(FinishAsyncSGIX)
-#define glFinishFenceAPPLE MANGLE(FinishFenceAPPLE)
-#define glFinishFenceNV MANGLE(FinishFenceNV)
-#define glFinish MANGLE(Finish)
-#define glFinishObjectAPPLE MANGLE(FinishObjectAPPLE)
-#define glFinishTextureSUNX MANGLE(FinishTextureSUNX)
-#define glFlush MANGLE(Flush)
-#define glFlushMappedBufferRangeAPPLE MANGLE(FlushMappedBufferRangeAPPLE)
-#define glFlushMappedBufferRange MANGLE(FlushMappedBufferRange)
-#define glFlushMappedNamedBufferRangeEXT MANGLE(FlushMappedNamedBufferRangeEXT)
-#define glFlushPixelDataRangeNV MANGLE(FlushPixelDataRangeNV)
-#define glFlushRasterSGIX MANGLE(FlushRasterSGIX)
-#define glFlushVertexArrayRangeAPPLE MANGLE(FlushVertexArrayRangeAPPLE)
-#define glFlushVertexArrayRangeNV MANGLE(FlushVertexArrayRangeNV)
-#define glFogCoorddEXT MANGLE(FogCoorddEXT)
-#define glFogCoordd MANGLE(FogCoordd)
-#define glFogCoorddvEXT MANGLE(FogCoorddvEXT)
-#define glFogCoorddv MANGLE(FogCoorddv)
-#define glFogCoordfEXT MANGLE(FogCoordfEXT)
-#define glFogCoordf MANGLE(FogCoordf)
-#define glFogCoordFormatNV MANGLE(FogCoordFormatNV)
-#define glFogCoordfvEXT MANGLE(FogCoordfvEXT)
-#define glFogCoordfv MANGLE(FogCoordfv)
-#define glFogCoordhNV MANGLE(FogCoordhNV)
-#define glFogCoordhvNV MANGLE(FogCoordhvNV)
-#define glFogCoordPointerEXT MANGLE(FogCoordPointerEXT)
-#define glFogCoordPointerListIBM MANGLE(FogCoordPointerListIBM)
-#define glFogCoordPointer MANGLE(FogCoordPointer)
-#define glFogf MANGLE(Fogf)
-#define glFogFuncSGIS MANGLE(FogFuncSGIS)
-#define glFogfv MANGLE(Fogfv)
-#define glFogi MANGLE(Fogi)
-#define glFogiv MANGLE(Fogiv)
-#define glFragmentColorMaterialSGIX MANGLE(FragmentColorMaterialSGIX)
-#define glFragmentLightfSGIX MANGLE(FragmentLightfSGIX)
-#define glFragmentLightfvSGIX MANGLE(FragmentLightfvSGIX)
-#define glFragmentLightiSGIX MANGLE(FragmentLightiSGIX)
-#define glFragmentLightivSGIX MANGLE(FragmentLightivSGIX)
-#define glFragmentLightModelfSGIX MANGLE(FragmentLightModelfSGIX)
-#define glFragmentLightModelfvSGIX MANGLE(FragmentLightModelfvSGIX)
-#define glFragmentLightModeliSGIX MANGLE(FragmentLightModeliSGIX)
-#define glFragmentLightModelivSGIX MANGLE(FragmentLightModelivSGIX)
-#define glFragmentMaterialfSGIX MANGLE(FragmentMaterialfSGIX)
-#define glFragmentMaterialfvSGIX MANGLE(FragmentMaterialfvSGIX)
-#define glFragmentMaterialiSGIX MANGLE(FragmentMaterialiSGIX)
-#define glFragmentMaterialivSGIX MANGLE(FragmentMaterialivSGIX)
-#define glFramebufferDrawBufferEXT MANGLE(FramebufferDrawBufferEXT)
-#define glFramebufferDrawBuffersEXT MANGLE(FramebufferDrawBuffersEXT)
-#define glFramebufferReadBufferEXT MANGLE(FramebufferReadBufferEXT)
-#define glFramebufferRenderbufferEXT MANGLE(FramebufferRenderbufferEXT)
-#define glFramebufferRenderbuffer MANGLE(FramebufferRenderbuffer)
-#define glFramebufferTexture1DEXT MANGLE(FramebufferTexture1DEXT)
-#define glFramebufferTexture1D MANGLE(FramebufferTexture1D)
-#define glFramebufferTexture2DEXT MANGLE(FramebufferTexture2DEXT)
-#define glFramebufferTexture2D MANGLE(FramebufferTexture2D)
-#define glFramebufferTexture3DEXT MANGLE(FramebufferTexture3DEXT)
-#define glFramebufferTexture3D MANGLE(FramebufferTexture3D)
-#define glFramebufferTextureARB MANGLE(FramebufferTextureARB)
-#define glFramebufferTextureEXT MANGLE(FramebufferTextureEXT)
-#define glFramebufferTextureFaceARB MANGLE(FramebufferTextureFaceARB)
-#define glFramebufferTextureFaceEXT MANGLE(FramebufferTextureFaceEXT)
-#define glFramebufferTextureLayerARB MANGLE(FramebufferTextureLayerARB)
-#define glFramebufferTextureLayerEXT MANGLE(FramebufferTextureLayerEXT)
-#define glFramebufferTextureLayer MANGLE(FramebufferTextureLayer)
-#define glFramebufferTexture MANGLE(FramebufferTexture)
-#define glFrameTerminatorGREMEDY MANGLE(FrameTerminatorGREMEDY)
-#define glFrameZoomSGIX MANGLE(FrameZoomSGIX)
-#define glFreeObjectBufferATI MANGLE(FreeObjectBufferATI)
-#define glFrontFace MANGLE(FrontFace)
-#define glFrustum MANGLE(Frustum)
-#define glGenAsyncMarkersSGIX MANGLE(GenAsyncMarkersSGIX)
-#define glGenBuffersARB MANGLE(GenBuffersARB)
-#define glGenBuffers MANGLE(GenBuffers)
-#define glGenerateMipmapEXT MANGLE(GenerateMipmapEXT)
-#define glGenerateMipmap MANGLE(GenerateMipmap)
-#define glGenerateMultiTexMipmapEXT MANGLE(GenerateMultiTexMipmapEXT)
-#define glGenerateTextureMipmapEXT MANGLE(GenerateTextureMipmapEXT)
-#define glGenFencesAPPLE MANGLE(GenFencesAPPLE)
-#define glGenFencesNV MANGLE(GenFencesNV)
-#define glGenFragmentShadersATI MANGLE(GenFragmentShadersATI)
-#define glGenFramebuffersEXT MANGLE(GenFramebuffersEXT)
-#define glGenFramebuffers MANGLE(GenFramebuffers)
-#define glGenLists MANGLE(GenLists)
-#define glGenNamesAMD MANGLE(GenNamesAMD)
-#define glGenOcclusionQueriesNV MANGLE(GenOcclusionQueriesNV)
-#define glGenPerfMonitorsAMD MANGLE(GenPerfMonitorsAMD)
-#define glGenProgramPipelines MANGLE(GenProgramPipelines)
-#define glGenProgramsARB MANGLE(GenProgramsARB)
-#define glGenProgramsNV MANGLE(GenProgramsNV)
-#define glGenQueriesARB MANGLE(GenQueriesARB)
-#define glGenQueries MANGLE(GenQueries)
-#define glGenRenderbuffersEXT MANGLE(GenRenderbuffersEXT)
-#define glGenRenderbuffers MANGLE(GenRenderbuffers)
-#define glGenSamplers MANGLE(GenSamplers)
-#define glGenSymbolsEXT MANGLE(GenSymbolsEXT)
-#define glGenTexturesEXT MANGLE(GenTexturesEXT)
-#define glGenTextures MANGLE(GenTextures)
-#define glGenTransformFeedbacks MANGLE(GenTransformFeedbacks)
-#define glGenTransformFeedbacksNV MANGLE(GenTransformFeedbacksNV)
-#define glGenVertexArraysAPPLE MANGLE(GenVertexArraysAPPLE)
-#define glGenVertexArrays MANGLE(GenVertexArrays)
-#define glGenVertexShadersEXT MANGLE(GenVertexShadersEXT)
-#define glGetActiveAttribARB MANGLE(GetActiveAttribARB)
-#define glGetActiveAttrib MANGLE(GetActiveAttrib)
-#define glGetActiveSubroutineName MANGLE(GetActiveSubroutineName)
-#define glGetActiveSubroutineUniformiv MANGLE(GetActiveSubroutineUniformiv)
-#define glGetActiveSubroutineUniformName MANGLE(GetActiveSubroutineUniformName)
-#define glGetActiveUniformARB MANGLE(GetActiveUniformARB)
-#define glGetActiveUniformBlockiv MANGLE(GetActiveUniformBlockiv)
-#define glGetActiveUniformBlockName MANGLE(GetActiveUniformBlockName)
-#define glGetActiveUniform MANGLE(GetActiveUniform)
-#define glGetActiveUniformName MANGLE(GetActiveUniformName)
-#define glGetActiveUniformsiv MANGLE(GetActiveUniformsiv)
-#define glGetActiveVaryingNV MANGLE(GetActiveVaryingNV)
-#define glGetArrayObjectfvATI MANGLE(GetArrayObjectfvATI)
-#define glGetArrayObjectivATI MANGLE(GetArrayObjectivATI)
-#define glGetAttachedObjectsARB MANGLE(GetAttachedObjectsARB)
-#define glGetAttachedShaders MANGLE(GetAttachedShaders)
-#define glGetAttribLocationARB MANGLE(GetAttribLocationARB)
-#define glGetAttribLocation MANGLE(GetAttribLocation)
-#define glGetBooleanIndexedvEXT MANGLE(GetBooleanIndexedvEXT)
-#define glGetBooleani_v MANGLE(GetBooleani_v)
-#define glGetBooleanv MANGLE(GetBooleanv)
-#define glGetBufferParameteri64v MANGLE(GetBufferParameteri64v)
-#define glGetBufferParameterivARB MANGLE(GetBufferParameterivARB)
-#define glGetBufferParameteriv MANGLE(GetBufferParameteriv)
-#define glGetBufferParameterui64vNV MANGLE(GetBufferParameterui64vNV)
-#define glGetBufferPointervARB MANGLE(GetBufferPointervARB)
-#define glGetBufferPointerv MANGLE(GetBufferPointerv)
-#define glGetBufferSubDataARB MANGLE(GetBufferSubDataARB)
-#define glGetBufferSubData MANGLE(GetBufferSubData)
-#define glGetClipPlane MANGLE(GetClipPlane)
-#define glGetColorTableEXT MANGLE(GetColorTableEXT)
-#define glGetColorTable MANGLE(GetColorTable)
-#define glGetColorTableParameterfvEXT MANGLE(GetColorTableParameterfvEXT)
-#define glGetColorTableParameterfv MANGLE(GetColorTableParameterfv)
-#define glGetColorTableParameterfvSGI MANGLE(GetColorTableParameterfvSGI)
-#define glGetColorTableParameterivEXT MANGLE(GetColorTableParameterivEXT)
-#define glGetColorTableParameteriv MANGLE(GetColorTableParameteriv)
-#define glGetColorTableParameterivSGI MANGLE(GetColorTableParameterivSGI)
-#define glGetColorTableSGI MANGLE(GetColorTableSGI)
-#define glGetCombinerInputParameterfvNV MANGLE(GetCombinerInputParameterfvNV)
-#define glGetCombinerInputParameterivNV MANGLE(GetCombinerInputParameterivNV)
-#define glGetCombinerOutputParameterfvNV MANGLE(GetCombinerOutputParameterfvNV)
-#define glGetCombinerOutputParameterivNV MANGLE(GetCombinerOutputParameterivNV)
-#define glGetCombinerStageParameterfvNV MANGLE(GetCombinerStageParameterfvNV)
-#define glGetCompressedMultiTexImageEXT MANGLE(GetCompressedMultiTexImageEXT)
-#define glGetCompressedTexImageARB MANGLE(GetCompressedTexImageARB)
-#define glGetCompressedTexImage MANGLE(GetCompressedTexImage)
-#define glGetCompressedTextureImageEXT MANGLE(GetCompressedTextureImageEXT)
-#define glGetConvolutionFilterEXT MANGLE(GetConvolutionFilterEXT)
-#define glGetConvolutionFilter MANGLE(GetConvolutionFilter)
-#define glGetConvolutionParameterfvEXT MANGLE(GetConvolutionParameterfvEXT)
-#define glGetConvolutionParameterfv MANGLE(GetConvolutionParameterfv)
-#define glGetConvolutionParameterivEXT MANGLE(GetConvolutionParameterivEXT)
-#define glGetConvolutionParameteriv MANGLE(GetConvolutionParameteriv)
-#define glGetDebugLogLengthMESA MANGLE(GetDebugLogLengthMESA)
-#define glGetDebugLogMESA MANGLE(GetDebugLogMESA)
-#define glGetDebugMessageLogAMD MANGLE(GetDebugMessageLogAMD)
-#define glGetDebugMessageLogARB MANGLE(GetDebugMessageLogARB)
-#define glGetDetailTexFuncSGIS MANGLE(GetDetailTexFuncSGIS)
-#define glGetDoubleIndexedvEXT MANGLE(GetDoubleIndexedvEXT)
-#define glGetDoublei_v MANGLE(GetDoublei_v)
-#define glGetDoublev MANGLE(GetDoublev)
-#define glGetError MANGLE(GetError)
-#define glGetFenceivNV MANGLE(GetFenceivNV)
-#define glGetFinalCombinerInputParameterfvNV MANGLE(GetFinalCombinerInputParameterfvNV)
-#define glGetFinalCombinerInputParameterivNV MANGLE(GetFinalCombinerInputParameterivNV)
-#define glGetFloatIndexedvEXT MANGLE(GetFloatIndexedvEXT)
-#define glGetFloati_v MANGLE(GetFloati_v)
-#define glGetFloatv MANGLE(GetFloatv)
-#define glGetFogFuncSGIS MANGLE(GetFogFuncSGIS)
-#define glGetFragDataIndex MANGLE(GetFragDataIndex)
-#define glGetFragDataLocationEXT MANGLE(GetFragDataLocationEXT)
-#define glGetFragDataLocation MANGLE(GetFragDataLocation)
-#define glGetFragmentLightfvSGIX MANGLE(GetFragmentLightfvSGIX)
-#define glGetFragmentLightivSGIX MANGLE(GetFragmentLightivSGIX)
-#define glGetFragmentMaterialfvSGIX MANGLE(GetFragmentMaterialfvSGIX)
-#define glGetFragmentMaterialivSGIX MANGLE(GetFragmentMaterialivSGIX)
-#define glGetFramebufferAttachmentParameterivEXT MANGLE(GetFramebufferAttachmentParameterivEXT)
-#define glGetFramebufferAttachmentParameteriv MANGLE(GetFramebufferAttachmentParameteriv)
-#define glGetFramebufferParameterivEXT MANGLE(GetFramebufferParameterivEXT)
-#define glGetGraphicsResetStatusARB MANGLE(GetGraphicsResetStatusARB)
-#define glGetHandleARB MANGLE(GetHandleARB)
-#define glGetHistogramEXT MANGLE(GetHistogramEXT)
-#define glGetHistogram MANGLE(GetHistogram)
-#define glGetHistogramParameterfvEXT MANGLE(GetHistogramParameterfvEXT)
-#define glGetHistogramParameterfv MANGLE(GetHistogramParameterfv)
-#define glGetHistogramParameterivEXT MANGLE(GetHistogramParameterivEXT)
-#define glGetHistogramParameteriv MANGLE(GetHistogramParameteriv)
-#define glGetImageTransformParameterfvHP MANGLE(GetImageTransformParameterfvHP)
-#define glGetImageTransformParameterivHP MANGLE(GetImageTransformParameterivHP)
-#define glGetInfoLogARB MANGLE(GetInfoLogARB)
-#define glGetInstrumentsSGIX MANGLE(GetInstrumentsSGIX)
-#define glGetInteger64i_v MANGLE(GetInteger64i_v)
-#define glGetInteger64v MANGLE(GetInteger64v)
-#define glGetIntegerIndexedvEXT MANGLE(GetIntegerIndexedvEXT)
-#define glGetIntegeri_v MANGLE(GetIntegeri_v)
-#define glGetIntegerui64i_vNV MANGLE(GetIntegerui64i_vNV)
-#define glGetIntegerui64vNV MANGLE(GetIntegerui64vNV)
-#define glGetIntegerv MANGLE(GetIntegerv)
-#define glGetInvariantBooleanvEXT MANGLE(GetInvariantBooleanvEXT)
-#define glGetInvariantFloatvEXT MANGLE(GetInvariantFloatvEXT)
-#define glGetInvariantIntegervEXT MANGLE(GetInvariantIntegervEXT)
-#define glGetLightfv MANGLE(GetLightfv)
-#define glGetLightiv MANGLE(GetLightiv)
-#define glGetListParameterfvSGIX MANGLE(GetListParameterfvSGIX)
-#define glGetListParameterivSGIX MANGLE(GetListParameterivSGIX)
-#define glGetLocalConstantBooleanvEXT MANGLE(GetLocalConstantBooleanvEXT)
-#define glGetLocalConstantFloatvEXT MANGLE(GetLocalConstantFloatvEXT)
-#define glGetLocalConstantIntegervEXT MANGLE(GetLocalConstantIntegervEXT)
-#define glGetMapAttribParameterfvNV MANGLE(GetMapAttribParameterfvNV)
-#define glGetMapAttribParameterivNV MANGLE(GetMapAttribParameterivNV)
-#define glGetMapControlPointsNV MANGLE(GetMapControlPointsNV)
-#define glGetMapdv MANGLE(GetMapdv)
-#define glGetMapfv MANGLE(GetMapfv)
-#define glGetMapiv MANGLE(GetMapiv)
-#define glGetMapParameterfvNV MANGLE(GetMapParameterfvNV)
-#define glGetMapParameterivNV MANGLE(GetMapParameterivNV)
-#define glGetMaterialfv MANGLE(GetMaterialfv)
-#define glGetMaterialiv MANGLE(GetMaterialiv)
-#define glGetMinmaxEXT MANGLE(GetMinmaxEXT)
-#define glGetMinmax MANGLE(GetMinmax)
-#define glGetMinmaxParameterfvEXT MANGLE(GetMinmaxParameterfvEXT)
-#define glGetMinmaxParameterfv MANGLE(GetMinmaxParameterfv)
-#define glGetMinmaxParameterivEXT MANGLE(GetMinmaxParameterivEXT)
-#define glGetMinmaxParameteriv MANGLE(GetMinmaxParameteriv)
-#define glGetMultisamplefv MANGLE(GetMultisamplefv)
-#define glGetMultisamplefvNV MANGLE(GetMultisamplefvNV)
-#define glGetMultiTexEnvfvEXT MANGLE(GetMultiTexEnvfvEXT)
-#define glGetMultiTexEnvivEXT MANGLE(GetMultiTexEnvivEXT)
-#define glGetMultiTexGendvEXT MANGLE(GetMultiTexGendvEXT)
-#define glGetMultiTexGenfvEXT MANGLE(GetMultiTexGenfvEXT)
-#define glGetMultiTexGenivEXT MANGLE(GetMultiTexGenivEXT)
-#define glGetMultiTexImageEXT MANGLE(GetMultiTexImageEXT)
-#define glGetMultiTexLevelParameterfvEXT MANGLE(GetMultiTexLevelParameterfvEXT)
-#define glGetMultiTexLevelParameterivEXT MANGLE(GetMultiTexLevelParameterivEXT)
-#define glGetMultiTexParameterfvEXT MANGLE(GetMultiTexParameterfvEXT)
-#define glGetMultiTexParameterIivEXT MANGLE(GetMultiTexParameterIivEXT)
-#define glGetMultiTexParameterIuivEXT MANGLE(GetMultiTexParameterIuivEXT)
-#define glGetMultiTexParameterivEXT MANGLE(GetMultiTexParameterivEXT)
-#define glGetNamedBufferParameterivEXT MANGLE(GetNamedBufferParameterivEXT)
-#define glGetNamedBufferParameterui64vNV MANGLE(GetNamedBufferParameterui64vNV)
-#define glGetNamedBufferPointervEXT MANGLE(GetNamedBufferPointervEXT)
-#define glGetNamedBufferSubDataEXT MANGLE(GetNamedBufferSubDataEXT)
-#define glGetNamedFramebufferAttachmentParameterivEXT MANGLE(GetNamedFramebufferAttachmentParameterivEXT)
-#define glGetNamedProgramivEXT MANGLE(GetNamedProgramivEXT)
-#define glGetNamedProgramLocalParameterdvEXT MANGLE(GetNamedProgramLocalParameterdvEXT)
-#define glGetNamedProgramLocalParameterfvEXT MANGLE(GetNamedProgramLocalParameterfvEXT)
-#define glGetNamedProgramLocalParameterIivEXT MANGLE(GetNamedProgramLocalParameterIivEXT)
-#define glGetNamedProgramLocalParameterIuivEXT MANGLE(GetNamedProgramLocalParameterIuivEXT)
-#define glGetNamedProgramStringEXT MANGLE(GetNamedProgramStringEXT)
-#define glGetNamedRenderbufferParameterivEXT MANGLE(GetNamedRenderbufferParameterivEXT)
-#define glGetNamedStringARB MANGLE(GetNamedStringARB)
-#define glGetNamedStringivARB MANGLE(GetNamedStringivARB)
-#define glGetnColorTableARB MANGLE(GetnColorTableARB)
-#define glGetnCompressedTexImageARB MANGLE(GetnCompressedTexImageARB)
-#define glGetnConvolutionFilterARB MANGLE(GetnConvolutionFilterARB)
-#define glGetnHistogramARB MANGLE(GetnHistogramARB)
-#define glGetnMapdvARB MANGLE(GetnMapdvARB)
-#define glGetnMapfvARB MANGLE(GetnMapfvARB)
-#define glGetnMapivARB MANGLE(GetnMapivARB)
-#define glGetnMinmaxARB MANGLE(GetnMinmaxARB)
-#define glGetnPixelMapfvARB MANGLE(GetnPixelMapfvARB)
-#define glGetnPixelMapuivARB MANGLE(GetnPixelMapuivARB)
-#define glGetnPixelMapusvARB MANGLE(GetnPixelMapusvARB)
-#define glGetnPolygonStippleARB MANGLE(GetnPolygonStippleARB)
-#define glGetnSeparableFilterARB MANGLE(GetnSeparableFilterARB)
-#define glGetnTexImageARB MANGLE(GetnTexImageARB)
-#define glGetnUniformdvARB MANGLE(GetnUniformdvARB)
-#define glGetnUniformfvARB MANGLE(GetnUniformfvARB)
-#define glGetnUniformivARB MANGLE(GetnUniformivARB)
-#define glGetnUniformuivARB MANGLE(GetnUniformuivARB)
-#define glGetObjectBufferfvATI MANGLE(GetObjectBufferfvATI)
-#define glGetObjectBufferivATI MANGLE(GetObjectBufferivATI)
-#define glGetObjectParameterfvARB MANGLE(GetObjectParameterfvARB)
-#define glGetObjectParameterivAPPLE MANGLE(GetObjectParameterivAPPLE)
-#define glGetObjectParameterivARB MANGLE(GetObjectParameterivARB)
-#define glGetOcclusionQueryivNV MANGLE(GetOcclusionQueryivNV)
-#define glGetOcclusionQueryuivNV MANGLE(GetOcclusionQueryuivNV)
-#define glGetPerfMonitorCounterDataAMD MANGLE(GetPerfMonitorCounterDataAMD)
-#define glGetPerfMonitorCounterInfoAMD MANGLE(GetPerfMonitorCounterInfoAMD)
-#define glGetPerfMonitorCountersAMD MANGLE(GetPerfMonitorCountersAMD)
-#define glGetPerfMonitorCounterStringAMD MANGLE(GetPerfMonitorCounterStringAMD)
-#define glGetPerfMonitorGroupsAMD MANGLE(GetPerfMonitorGroupsAMD)
-#define glGetPerfMonitorGroupStringAMD MANGLE(GetPerfMonitorGroupStringAMD)
-#define glGetPixelMapfv MANGLE(GetPixelMapfv)
-#define glGetPixelMapuiv MANGLE(GetPixelMapuiv)
-#define glGetPixelMapusv MANGLE(GetPixelMapusv)
-#define glGetPixelTexGenParameterfvSGIS MANGLE(GetPixelTexGenParameterfvSGIS)
-#define glGetPixelTexGenParameterivSGIS MANGLE(GetPixelTexGenParameterivSGIS)
-#define glGetPointerIndexedvEXT MANGLE(GetPointerIndexedvEXT)
-#define glGetPointervEXT MANGLE(GetPointervEXT)
-#define glGetPointerv MANGLE(GetPointerv)
-#define glGetPolygonStipple MANGLE(GetPolygonStipple)
-#define glGetProgramBinary MANGLE(GetProgramBinary)
-#define glGetProgramEnvParameterdvARB MANGLE(GetProgramEnvParameterdvARB)
-#define glGetProgramEnvParameterfvARB MANGLE(GetProgramEnvParameterfvARB)
-#define glGetProgramEnvParameterIivNV MANGLE(GetProgramEnvParameterIivNV)
-#define glGetProgramEnvParameterIuivNV MANGLE(GetProgramEnvParameterIuivNV)
-#define glGetProgramInfoLog MANGLE(GetProgramInfoLog)
-#define glGetProgramivARB MANGLE(GetProgramivARB)
-#define glGetProgramiv MANGLE(GetProgramiv)
-#define glGetProgramivNV MANGLE(GetProgramivNV)
-#define glGetProgramLocalParameterdvARB MANGLE(GetProgramLocalParameterdvARB)
-#define glGetProgramLocalParameterfvARB MANGLE(GetProgramLocalParameterfvARB)
-#define glGetProgramLocalParameterIivNV MANGLE(GetProgramLocalParameterIivNV)
-#define glGetProgramLocalParameterIuivNV MANGLE(GetProgramLocalParameterIuivNV)
-#define glGetProgramNamedParameterdvNV MANGLE(GetProgramNamedParameterdvNV)
-#define glGetProgramNamedParameterfvNV MANGLE(GetProgramNamedParameterfvNV)
-#define glGetProgramParameterdvNV MANGLE(GetProgramParameterdvNV)
-#define glGetProgramParameterfvNV MANGLE(GetProgramParameterfvNV)
-#define glGetProgramPipelineInfoLog MANGLE(GetProgramPipelineInfoLog)
-#define glGetProgramPipelineiv MANGLE(GetProgramPipelineiv)
-#define glGetProgramRegisterfvMESA MANGLE(GetProgramRegisterfvMESA)
-#define glGetProgramStageiv MANGLE(GetProgramStageiv)
-#define glGetProgramStringARB MANGLE(GetProgramStringARB)
-#define glGetProgramStringNV MANGLE(GetProgramStringNV)
-#define glGetProgramSubroutineParameteruivNV MANGLE(GetProgramSubroutineParameteruivNV)
-#define glGetQueryIndexediv MANGLE(GetQueryIndexediv)
-#define glGetQueryivARB MANGLE(GetQueryivARB)
-#define glGetQueryiv MANGLE(GetQueryiv)
-#define glGetQueryObjecti64vEXT MANGLE(GetQueryObjecti64vEXT)
-#define glGetQueryObjecti64v MANGLE(GetQueryObjecti64v)
-#define glGetQueryObjectivARB MANGLE(GetQueryObjectivARB)
-#define glGetQueryObjectiv MANGLE(GetQueryObjectiv)
-#define glGetQueryObjectui64vEXT MANGLE(GetQueryObjectui64vEXT)
-#define glGetQueryObjectui64v MANGLE(GetQueryObjectui64v)
-#define glGetQueryObjectuivARB MANGLE(GetQueryObjectuivARB)
-#define glGetQueryObjectuiv MANGLE(GetQueryObjectuiv)
-#define glGetRenderbufferParameterivEXT MANGLE(GetRenderbufferParameterivEXT)
-#define glGetRenderbufferParameteriv MANGLE(GetRenderbufferParameteriv)
-#define glGetSamplerParameterfv MANGLE(GetSamplerParameterfv)
-#define glGetSamplerParameterIiv MANGLE(GetSamplerParameterIiv)
-#define glGetSamplerParameterIuiv MANGLE(GetSamplerParameterIuiv)
-#define glGetSamplerParameteriv MANGLE(GetSamplerParameteriv)
-#define glGetSeparableFilterEXT MANGLE(GetSeparableFilterEXT)
-#define glGetSeparableFilter MANGLE(GetSeparableFilter)
-#define glGetShaderInfoLog MANGLE(GetShaderInfoLog)
-#define glGetShaderiv MANGLE(GetShaderiv)
-#define glGetShaderPrecisionFormat MANGLE(GetShaderPrecisionFormat)
-#define glGetShaderSourceARB MANGLE(GetShaderSourceARB)
-#define glGetShaderSource MANGLE(GetShaderSource)
-#define glGetSharpenTexFuncSGIS MANGLE(GetSharpenTexFuncSGIS)
-#define glGetStringi MANGLE(GetStringi)
-#define glGetString MANGLE(GetString)
-#define glGetSubroutineIndex MANGLE(GetSubroutineIndex)
-#define glGetSubroutineUniformLocation MANGLE(GetSubroutineUniformLocation)
-#define glGetSynciv MANGLE(GetSynciv)
-#define glGetTexBumpParameterfvATI MANGLE(GetTexBumpParameterfvATI)
-#define glGetTexBumpParameterivATI MANGLE(GetTexBumpParameterivATI)
-#define glGetTexEnvfv MANGLE(GetTexEnvfv)
-#define glGetTexEnviv MANGLE(GetTexEnviv)
-#define glGetTexFilterFuncSGIS MANGLE(GetTexFilterFuncSGIS)
-#define glGetTexGendv MANGLE(GetTexGendv)
-#define glGetTexGenfv MANGLE(GetTexGenfv)
-#define glGetTexGeniv MANGLE(GetTexGeniv)
-#define glGetTexImage MANGLE(GetTexImage)
-#define glGetTexLevelParameterfv MANGLE(GetTexLevelParameterfv)
-#define glGetTexLevelParameteriv MANGLE(GetTexLevelParameteriv)
-#define glGetTexParameterfv MANGLE(GetTexParameterfv)
-#define glGetTexParameterIivEXT MANGLE(GetTexParameterIivEXT)
-#define glGetTexParameterIiv MANGLE(GetTexParameterIiv)
-#define glGetTexParameterIuivEXT MANGLE(GetTexParameterIuivEXT)
-#define glGetTexParameterIuiv MANGLE(GetTexParameterIuiv)
-#define glGetTexParameteriv MANGLE(GetTexParameteriv)
-#define glGetTexParameterPointervAPPLE MANGLE(GetTexParameterPointervAPPLE)
-#define glGetTextureImageEXT MANGLE(GetTextureImageEXT)
-#define glGetTextureLevelParameterfvEXT MANGLE(GetTextureLevelParameterfvEXT)
-#define glGetTextureLevelParameterivEXT MANGLE(GetTextureLevelParameterivEXT)
-#define glGetTextureParameterfvEXT MANGLE(GetTextureParameterfvEXT)
-#define glGetTextureParameterIivEXT MANGLE(GetTextureParameterIivEXT)
-#define glGetTextureParameterIuivEXT MANGLE(GetTextureParameterIuivEXT)
-#define glGetTextureParameterivEXT MANGLE(GetTextureParameterivEXT)
-#define glGetTrackMatrixivNV MANGLE(GetTrackMatrixivNV)
-#define glGetTransformFeedbackVaryingEXT MANGLE(GetTransformFeedbackVaryingEXT)
-#define glGetTransformFeedbackVarying MANGLE(GetTransformFeedbackVarying)
-#define glGetTransformFeedbackVaryingNV MANGLE(GetTransformFeedbackVaryingNV)
-#define glGetUniformBlockIndex MANGLE(GetUniformBlockIndex)
-#define glGetUniformBufferSizeEXT MANGLE(GetUniformBufferSizeEXT)
-#define glGetUniformdv MANGLE(GetUniformdv)
-#define glGetUniformfvARB MANGLE(GetUniformfvARB)
-#define glGetUniformfv MANGLE(GetUniformfv)
-#define glGetUniformi64vNV MANGLE(GetUniformi64vNV)
-#define glGetUniformIndices MANGLE(GetUniformIndices)
-#define glGetUniformivARB MANGLE(GetUniformivARB)
-#define glGetUniformiv MANGLE(GetUniformiv)
-#define glGetUniformLocationARB MANGLE(GetUniformLocationARB)
-#define glGetUniformLocation MANGLE(GetUniformLocation)
-#define glGetUniformOffsetEXT MANGLE(GetUniformOffsetEXT)
-#define glGetUniformSubroutineuiv MANGLE(GetUniformSubroutineuiv)
-#define glGetUniformui64vNV MANGLE(GetUniformui64vNV)
-#define glGetUniformuivEXT MANGLE(GetUniformuivEXT)
-#define glGetUniformuiv MANGLE(GetUniformuiv)
-#define glGetVariantArrayObjectfvATI MANGLE(GetVariantArrayObjectfvATI)
-#define glGetVariantArrayObjectivATI MANGLE(GetVariantArrayObjectivATI)
-#define glGetVariantBooleanvEXT MANGLE(GetVariantBooleanvEXT)
-#define glGetVariantFloatvEXT MANGLE(GetVariantFloatvEXT)
-#define glGetVariantIntegervEXT MANGLE(GetVariantIntegervEXT)
-#define glGetVariantPointervEXT MANGLE(GetVariantPointervEXT)
-#define glGetVaryingLocationNV MANGLE(GetVaryingLocationNV)
-#define glGetVertexAttribArrayObjectfvATI MANGLE(GetVertexAttribArrayObjectfvATI)
-#define glGetVertexAttribArrayObjectivATI MANGLE(GetVertexAttribArrayObjectivATI)
-#define glGetVertexAttribdvARB MANGLE(GetVertexAttribdvARB)
-#define glGetVertexAttribdv MANGLE(GetVertexAttribdv)
-#define glGetVertexAttribdvNV MANGLE(GetVertexAttribdvNV)
-#define glGetVertexAttribfvARB MANGLE(GetVertexAttribfvARB)
-#define glGetVertexAttribfv MANGLE(GetVertexAttribfv)
-#define glGetVertexAttribfvNV MANGLE(GetVertexAttribfvNV)
-#define glGetVertexAttribIivEXT MANGLE(GetVertexAttribIivEXT)
-#define glGetVertexAttribIiv MANGLE(GetVertexAttribIiv)
-#define glGetVertexAttribIuivEXT MANGLE(GetVertexAttribIuivEXT)
-#define glGetVertexAttribIuiv MANGLE(GetVertexAttribIuiv)
-#define glGetVertexAttribivARB MANGLE(GetVertexAttribivARB)
-#define glGetVertexAttribiv MANGLE(GetVertexAttribiv)
-#define glGetVertexAttribivNV MANGLE(GetVertexAttribivNV)
-#define glGetVertexAttribLdvEXT MANGLE(GetVertexAttribLdvEXT)
-#define glGetVertexAttribLdv MANGLE(GetVertexAttribLdv)
-#define glGetVertexAttribLi64vNV MANGLE(GetVertexAttribLi64vNV)
-#define glGetVertexAttribLui64vNV MANGLE(GetVertexAttribLui64vNV)
-#define glGetVertexAttribPointervARB MANGLE(GetVertexAttribPointervARB)
-#define glGetVertexAttribPointerv MANGLE(GetVertexAttribPointerv)
-#define glGetVertexAttribPointervNV MANGLE(GetVertexAttribPointervNV)
-#define glGetVideoCaptureivNV MANGLE(GetVideoCaptureivNV)
-#define glGetVideoCaptureStreamdvNV MANGLE(GetVideoCaptureStreamdvNV)
-#define glGetVideoCaptureStreamfvNV MANGLE(GetVideoCaptureStreamfvNV)
-#define glGetVideoCaptureStreamivNV MANGLE(GetVideoCaptureStreamivNV)
-#define glGetVideoi64vNV MANGLE(GetVideoi64vNV)
-#define glGetVideoivNV MANGLE(GetVideoivNV)
-#define glGetVideoui64vNV MANGLE(GetVideoui64vNV)
-#define glGetVideouivNV MANGLE(GetVideouivNV)
-#define glGlobalAlphaFactorbSUN MANGLE(GlobalAlphaFactorbSUN)
-#define glGlobalAlphaFactordSUN MANGLE(GlobalAlphaFactordSUN)
-#define glGlobalAlphaFactorfSUN MANGLE(GlobalAlphaFactorfSUN)
-#define glGlobalAlphaFactoriSUN MANGLE(GlobalAlphaFactoriSUN)
-#define glGlobalAlphaFactorsSUN MANGLE(GlobalAlphaFactorsSUN)
-#define glGlobalAlphaFactorubSUN MANGLE(GlobalAlphaFactorubSUN)
-#define glGlobalAlphaFactoruiSUN MANGLE(GlobalAlphaFactoruiSUN)
-#define glGlobalAlphaFactorusSUN MANGLE(GlobalAlphaFactorusSUN)
-#define glHint MANGLE(Hint)
-#define glHintPGI MANGLE(HintPGI)
-#define glHistogramEXT MANGLE(HistogramEXT)
-#define glHistogram MANGLE(Histogram)
-#define glIglooInterfaceSGIX MANGLE(IglooInterfaceSGIX)
-#define glImageTransformParameterfHP MANGLE(ImageTransformParameterfHP)
-#define glImageTransformParameterfvHP MANGLE(ImageTransformParameterfvHP)
-#define glImageTransformParameteriHP MANGLE(ImageTransformParameteriHP)
-#define glImageTransformParameterivHP MANGLE(ImageTransformParameterivHP)
-#define glIndexd MANGLE(Indexd)
-#define glIndexdv MANGLE(Indexdv)
-#define glIndexf MANGLE(Indexf)
-#define glIndexFormatNV MANGLE(IndexFormatNV)
-#define glIndexFuncEXT MANGLE(IndexFuncEXT)
-#define glIndexfv MANGLE(Indexfv)
-#define glIndexi MANGLE(Indexi)
-#define glIndexiv MANGLE(Indexiv)
-#define glIndexMask MANGLE(IndexMask)
-#define glIndexMaterialEXT MANGLE(IndexMaterialEXT)
-#define glIndexPointerEXT MANGLE(IndexPointerEXT)
-#define glIndexPointerListIBM MANGLE(IndexPointerListIBM)
-#define glIndexPointer MANGLE(IndexPointer)
-#define glIndexs MANGLE(Indexs)
-#define glIndexsv MANGLE(Indexsv)
-#define glIndexub MANGLE(Indexub)
-#define glIndexubv MANGLE(Indexubv)
-#define glInitNames MANGLE(InitNames)
-#define glInsertComponentEXT MANGLE(InsertComponentEXT)
-#define glInstrumentsBufferSGIX MANGLE(InstrumentsBufferSGIX)
-#define glInterleavedArrays MANGLE(InterleavedArrays)
-#define glIsAsyncMarkerSGIX MANGLE(IsAsyncMarkerSGIX)
-#define glIsBufferARB MANGLE(IsBufferARB)
-#define glIsBuffer MANGLE(IsBuffer)
-#define glIsBufferResidentNV MANGLE(IsBufferResidentNV)
-#define glIsEnabledi MANGLE(IsEnabledi)
-#define glIsEnabledIndexedEXT MANGLE(IsEnabledIndexedEXT)
-#define glIsEnabled MANGLE(IsEnabled)
-#define glIsFenceAPPLE MANGLE(IsFenceAPPLE)
-#define glIsFenceNV MANGLE(IsFenceNV)
-#define glIsFramebufferEXT MANGLE(IsFramebufferEXT)
-#define glIsFramebuffer MANGLE(IsFramebuffer)
-#define glIsList MANGLE(IsList)
-#define glIsNameAMD MANGLE(IsNameAMD)
-#define glIsNamedBufferResidentNV MANGLE(IsNamedBufferResidentNV)
-#define glIsNamedStringARB MANGLE(IsNamedStringARB)
-#define glIsObjectBufferATI MANGLE(IsObjectBufferATI)
-#define glIsOcclusionQueryNV MANGLE(IsOcclusionQueryNV)
-#define glIsProgramARB MANGLE(IsProgramARB)
-#define glIsProgram MANGLE(IsProgram)
-#define glIsProgramNV MANGLE(IsProgramNV)
-#define glIsProgramPipeline MANGLE(IsProgramPipeline)
-#define glIsQueryARB MANGLE(IsQueryARB)
-#define glIsQuery MANGLE(IsQuery)
-#define glIsRenderbufferEXT MANGLE(IsRenderbufferEXT)
-#define glIsRenderbuffer MANGLE(IsRenderbuffer)
-#define glIsSampler MANGLE(IsSampler)
-#define glIsShader MANGLE(IsShader)
-#define glIsSync MANGLE(IsSync)
-#define glIsTextureEXT MANGLE(IsTextureEXT)
-#define glIsTexture MANGLE(IsTexture)
-#define glIsTransformFeedback MANGLE(IsTransformFeedback)
-#define glIsTransformFeedbackNV MANGLE(IsTransformFeedbackNV)
-#define glIsVariantEnabledEXT MANGLE(IsVariantEnabledEXT)
-#define glIsVertexArrayAPPLE MANGLE(IsVertexArrayAPPLE)
-#define glIsVertexArray MANGLE(IsVertexArray)
-#define glIsVertexAttribEnabledAPPLE MANGLE(IsVertexAttribEnabledAPPLE)
-#define glLightEnviSGIX MANGLE(LightEnviSGIX)
-#define glLightf MANGLE(Lightf)
-#define glLightfv MANGLE(Lightfv)
-#define glLighti MANGLE(Lighti)
-#define glLightiv MANGLE(Lightiv)
-#define glLightModelf MANGLE(LightModelf)
-#define glLightModelfv MANGLE(LightModelfv)
-#define glLightModeli MANGLE(LightModeli)
-#define glLightModeliv MANGLE(LightModeliv)
-#define glLineStipple MANGLE(LineStipple)
-#define glLineWidth MANGLE(LineWidth)
-#define glLinkProgramARB MANGLE(LinkProgramARB)
-#define glLinkProgram MANGLE(LinkProgram)
-#define glListBase MANGLE(ListBase)
-#define glListParameterfSGIX MANGLE(ListParameterfSGIX)
-#define glListParameterfvSGIX MANGLE(ListParameterfvSGIX)
-#define glListParameteriSGIX MANGLE(ListParameteriSGIX)
-#define glListParameterivSGIX MANGLE(ListParameterivSGIX)
-#define glLoadIdentityDeformationMapSGIX MANGLE(LoadIdentityDeformationMapSGIX)
-#define glLoadIdentity MANGLE(LoadIdentity)
-#define glLoadMatrixd MANGLE(LoadMatrixd)
-#define glLoadMatrixf MANGLE(LoadMatrixf)
-#define glLoadName MANGLE(LoadName)
-#define glLoadProgramNV MANGLE(LoadProgramNV)
-#define glLoadTransposeMatrixdARB MANGLE(LoadTransposeMatrixdARB)
-#define glLoadTransposeMatrixd MANGLE(LoadTransposeMatrixd)
-#define glLoadTransposeMatrixfARB MANGLE(LoadTransposeMatrixfARB)
-#define glLoadTransposeMatrixf MANGLE(LoadTransposeMatrixf)
-#define glLockArraysEXT MANGLE(LockArraysEXT)
-#define glLogicOp MANGLE(LogicOp)
-#define glMakeBufferNonResidentNV MANGLE(MakeBufferNonResidentNV)
-#define glMakeBufferResidentNV MANGLE(MakeBufferResidentNV)
-#define glMakeNamedBufferNonResidentNV MANGLE(MakeNamedBufferNonResidentNV)
-#define glMakeNamedBufferResidentNV MANGLE(MakeNamedBufferResidentNV)
-#define glMap1d MANGLE(Map1d)
-#define glMap1f MANGLE(Map1f)
-#define glMap2d MANGLE(Map2d)
-#define glMap2f MANGLE(Map2f)
-#define glMapBufferARB MANGLE(MapBufferARB)
-#define glMapBuffer MANGLE(MapBuffer)
-#define glMapBufferRange MANGLE(MapBufferRange)
-#define glMapControlPointsNV MANGLE(MapControlPointsNV)
-#define glMapGrid1d MANGLE(MapGrid1d)
-#define glMapGrid1f MANGLE(MapGrid1f)
-#define glMapGrid2d MANGLE(MapGrid2d)
-#define glMapGrid2f MANGLE(MapGrid2f)
-#define glMapNamedBufferEXT MANGLE(MapNamedBufferEXT)
-#define glMapNamedBufferRangeEXT MANGLE(MapNamedBufferRangeEXT)
-#define glMapObjectBufferATI MANGLE(MapObjectBufferATI)
-#define glMapParameterfvNV MANGLE(MapParameterfvNV)
-#define glMapParameterivNV MANGLE(MapParameterivNV)
-#define glMapVertexAttrib1dAPPLE MANGLE(MapVertexAttrib1dAPPLE)
-#define glMapVertexAttrib1fAPPLE MANGLE(MapVertexAttrib1fAPPLE)
-#define glMapVertexAttrib2dAPPLE MANGLE(MapVertexAttrib2dAPPLE)
-#define glMapVertexAttrib2fAPPLE MANGLE(MapVertexAttrib2fAPPLE)
-#define glMaterialf MANGLE(Materialf)
-#define glMaterialfv MANGLE(Materialfv)
-#define glMateriali MANGLE(Materiali)
-#define glMaterialiv MANGLE(Materialiv)
-#define glMatrixFrustumEXT MANGLE(MatrixFrustumEXT)
-#define glMatrixIndexPointerARB MANGLE(MatrixIndexPointerARB)
-#define glMatrixIndexubvARB MANGLE(MatrixIndexubvARB)
-#define glMatrixIndexuivARB MANGLE(MatrixIndexuivARB)
-#define glMatrixIndexusvARB MANGLE(MatrixIndexusvARB)
-#define glMatrixLoaddEXT MANGLE(MatrixLoaddEXT)
-#define glMatrixLoadfEXT MANGLE(MatrixLoadfEXT)
-#define glMatrixLoadIdentityEXT MANGLE(MatrixLoadIdentityEXT)
-#define glMatrixLoadTransposedEXT MANGLE(MatrixLoadTransposedEXT)
-#define glMatrixLoadTransposefEXT MANGLE(MatrixLoadTransposefEXT)
-#define glMatrixMode MANGLE(MatrixMode)
-#define glMatrixMultdEXT MANGLE(MatrixMultdEXT)
-#define glMatrixMultfEXT MANGLE(MatrixMultfEXT)
-#define glMatrixMultTransposedEXT MANGLE(MatrixMultTransposedEXT)
-#define glMatrixMultTransposefEXT MANGLE(MatrixMultTransposefEXT)
-#define glMatrixOrthoEXT MANGLE(MatrixOrthoEXT)
-#define glMatrixPopEXT MANGLE(MatrixPopEXT)
-#define glMatrixPushEXT MANGLE(MatrixPushEXT)
-#define glMatrixRotatedEXT MANGLE(MatrixRotatedEXT)
-#define glMatrixRotatefEXT MANGLE(MatrixRotatefEXT)
-#define glMatrixScaledEXT MANGLE(MatrixScaledEXT)
-#define glMatrixScalefEXT MANGLE(MatrixScalefEXT)
-#define glMatrixTranslatedEXT MANGLE(MatrixTranslatedEXT)
-#define glMatrixTranslatefEXT MANGLE(MatrixTranslatefEXT)
-#define glMemoryBarrierEXT MANGLE(MemoryBarrierEXT)
-#define glMinmaxEXT MANGLE(MinmaxEXT)
-#define glMinmax MANGLE(Minmax)
-#define glMinSampleShadingARB MANGLE(MinSampleShadingARB)
-#define glMinSampleShading MANGLE(MinSampleShading)
-#define glMultiDrawArraysEXT MANGLE(MultiDrawArraysEXT)
-#define glMultiDrawArrays MANGLE(MultiDrawArrays)
-#define glMultiDrawElementArrayAPPLE MANGLE(MultiDrawElementArrayAPPLE)
-#define glMultiDrawElementsBaseVertex MANGLE(MultiDrawElementsBaseVertex)
-#define glMultiDrawElementsEXT MANGLE(MultiDrawElementsEXT)
-#define glMultiDrawElements MANGLE(MultiDrawElements)
-#define glMultiDrawRangeElementArrayAPPLE MANGLE(MultiDrawRangeElementArrayAPPLE)
-#define glMultiModeDrawArraysIBM MANGLE(MultiModeDrawArraysIBM)
-#define glMultiModeDrawElementsIBM MANGLE(MultiModeDrawElementsIBM)
-#define glMultiTexBufferEXT MANGLE(MultiTexBufferEXT)
-#define glMultiTexCoord1dARB MANGLE(MultiTexCoord1dARB)
-#define glMultiTexCoord1d MANGLE(MultiTexCoord1d)
-#define glMultiTexCoord1dvARB MANGLE(MultiTexCoord1dvARB)
-#define glMultiTexCoord1dv MANGLE(MultiTexCoord1dv)
-#define glMultiTexCoord1fARB MANGLE(MultiTexCoord1fARB)
-#define glMultiTexCoord1f MANGLE(MultiTexCoord1f)
-#define glMultiTexCoord1fvARB MANGLE(MultiTexCoord1fvARB)
-#define glMultiTexCoord1fv MANGLE(MultiTexCoord1fv)
-#define glMultiTexCoord1hNV MANGLE(MultiTexCoord1hNV)
-#define glMultiTexCoord1hvNV MANGLE(MultiTexCoord1hvNV)
-#define glMultiTexCoord1iARB MANGLE(MultiTexCoord1iARB)
-#define glMultiTexCoord1i MANGLE(MultiTexCoord1i)
-#define glMultiTexCoord1ivARB MANGLE(MultiTexCoord1ivARB)
-#define glMultiTexCoord1iv MANGLE(MultiTexCoord1iv)
-#define glMultiTexCoord1sARB MANGLE(MultiTexCoord1sARB)
-#define glMultiTexCoord1s MANGLE(MultiTexCoord1s)
-#define glMultiTexCoord1svARB MANGLE(MultiTexCoord1svARB)
-#define glMultiTexCoord1sv MANGLE(MultiTexCoord1sv)
-#define glMultiTexCoord2dARB MANGLE(MultiTexCoord2dARB)
-#define glMultiTexCoord2d MANGLE(MultiTexCoord2d)
-#define glMultiTexCoord2dvARB MANGLE(MultiTexCoord2dvARB)
-#define glMultiTexCoord2dv MANGLE(MultiTexCoord2dv)
-#define glMultiTexCoord2fARB MANGLE(MultiTexCoord2fARB)
-#define glMultiTexCoord2f MANGLE(MultiTexCoord2f)
-#define glMultiTexCoord2fvARB MANGLE(MultiTexCoord2fvARB)
-#define glMultiTexCoord2fv MANGLE(MultiTexCoord2fv)
-#define glMultiTexCoord2hNV MANGLE(MultiTexCoord2hNV)
-#define glMultiTexCoord2hvNV MANGLE(MultiTexCoord2hvNV)
-#define glMultiTexCoord2iARB MANGLE(MultiTexCoord2iARB)
-#define glMultiTexCoord2i MANGLE(MultiTexCoord2i)
-#define glMultiTexCoord2ivARB MANGLE(MultiTexCoord2ivARB)
-#define glMultiTexCoord2iv MANGLE(MultiTexCoord2iv)
-#define glMultiTexCoord2sARB MANGLE(MultiTexCoord2sARB)
-#define glMultiTexCoord2s MANGLE(MultiTexCoord2s)
-#define glMultiTexCoord2svARB MANGLE(MultiTexCoord2svARB)
-#define glMultiTexCoord2sv MANGLE(MultiTexCoord2sv)
-#define glMultiTexCoord3dARB MANGLE(MultiTexCoord3dARB)
-#define glMultiTexCoord3d MANGLE(MultiTexCoord3d)
-#define glMultiTexCoord3dvARB MANGLE(MultiTexCoord3dvARB)
-#define glMultiTexCoord3dv MANGLE(MultiTexCoord3dv)
-#define glMultiTexCoord3fARB MANGLE(MultiTexCoord3fARB)
-#define glMultiTexCoord3f MANGLE(MultiTexCoord3f)
-#define glMultiTexCoord3fvARB MANGLE(MultiTexCoord3fvARB)
-#define glMultiTexCoord3fv MANGLE(MultiTexCoord3fv)
-#define glMultiTexCoord3hNV MANGLE(MultiTexCoord3hNV)
-#define glMultiTexCoord3hvNV MANGLE(MultiTexCoord3hvNV)
-#define glMultiTexCoord3iARB MANGLE(MultiTexCoord3iARB)
-#define glMultiTexCoord3i MANGLE(MultiTexCoord3i)
-#define glMultiTexCoord3ivARB MANGLE(MultiTexCoord3ivARB)
-#define glMultiTexCoord3iv MANGLE(MultiTexCoord3iv)
-#define glMultiTexCoord3sARB MANGLE(MultiTexCoord3sARB)
-#define glMultiTexCoord3s MANGLE(MultiTexCoord3s)
-#define glMultiTexCoord3svARB MANGLE(MultiTexCoord3svARB)
-#define glMultiTexCoord3sv MANGLE(MultiTexCoord3sv)
-#define glMultiTexCoord4dARB MANGLE(MultiTexCoord4dARB)
-#define glMultiTexCoord4d MANGLE(MultiTexCoord4d)
-#define glMultiTexCoord4dvARB MANGLE(MultiTexCoord4dvARB)
-#define glMultiTexCoord4dv MANGLE(MultiTexCoord4dv)
-#define glMultiTexCoord4fARB MANGLE(MultiTexCoord4fARB)
-#define glMultiTexCoord4f MANGLE(MultiTexCoord4f)
-#define glMultiTexCoord4fvARB MANGLE(MultiTexCoord4fvARB)
-#define glMultiTexCoord4fv MANGLE(MultiTexCoord4fv)
-#define glMultiTexCoord4hNV MANGLE(MultiTexCoord4hNV)
-#define glMultiTexCoord4hvNV MANGLE(MultiTexCoord4hvNV)
-#define glMultiTexCoord4iARB MANGLE(MultiTexCoord4iARB)
-#define glMultiTexCoord4i MANGLE(MultiTexCoord4i)
-#define glMultiTexCoord4ivARB MANGLE(MultiTexCoord4ivARB)
-#define glMultiTexCoord4iv MANGLE(MultiTexCoord4iv)
-#define glMultiTexCoord4sARB MANGLE(MultiTexCoord4sARB)
-#define glMultiTexCoord4s MANGLE(MultiTexCoord4s)
-#define glMultiTexCoord4svARB MANGLE(MultiTexCoord4svARB)
-#define glMultiTexCoord4sv MANGLE(MultiTexCoord4sv)
-#define glMultiTexCoordP1ui MANGLE(MultiTexCoordP1ui)
-#define glMultiTexCoordP1uiv MANGLE(MultiTexCoordP1uiv)
-#define glMultiTexCoordP2ui MANGLE(MultiTexCoordP2ui)
-#define glMultiTexCoordP2uiv MANGLE(MultiTexCoordP2uiv)
-#define glMultiTexCoordP3ui MANGLE(MultiTexCoordP3ui)
-#define glMultiTexCoordP3uiv MANGLE(MultiTexCoordP3uiv)
-#define glMultiTexCoordP4ui MANGLE(MultiTexCoordP4ui)
-#define glMultiTexCoordP4uiv MANGLE(MultiTexCoordP4uiv)
-#define glMultiTexCoordPointerEXT MANGLE(MultiTexCoordPointerEXT)
-#define glMultiTexEnvfEXT MANGLE(MultiTexEnvfEXT)
-#define glMultiTexEnvfvEXT MANGLE(MultiTexEnvfvEXT)
-#define glMultiTexEnviEXT MANGLE(MultiTexEnviEXT)
-#define glMultiTexEnvivEXT MANGLE(MultiTexEnvivEXT)
-#define glMultiTexGendEXT MANGLE(MultiTexGendEXT)
-#define glMultiTexGendvEXT MANGLE(MultiTexGendvEXT)
-#define glMultiTexGenfEXT MANGLE(MultiTexGenfEXT)
-#define glMultiTexGenfvEXT MANGLE(MultiTexGenfvEXT)
-#define glMultiTexGeniEXT MANGLE(MultiTexGeniEXT)
-#define glMultiTexGenivEXT MANGLE(MultiTexGenivEXT)
-#define glMultiTexImage1DEXT MANGLE(MultiTexImage1DEXT)
-#define glMultiTexImage2DEXT MANGLE(MultiTexImage2DEXT)
-#define glMultiTexImage3DEXT MANGLE(MultiTexImage3DEXT)
-#define glMultiTexParameterfEXT MANGLE(MultiTexParameterfEXT)
-#define glMultiTexParameterfvEXT MANGLE(MultiTexParameterfvEXT)
-#define glMultiTexParameteriEXT MANGLE(MultiTexParameteriEXT)
-#define glMultiTexParameterIivEXT MANGLE(MultiTexParameterIivEXT)
-#define glMultiTexParameterIuivEXT MANGLE(MultiTexParameterIuivEXT)
-#define glMultiTexParameterivEXT MANGLE(MultiTexParameterivEXT)
-#define glMultiTexRenderbufferEXT MANGLE(MultiTexRenderbufferEXT)
-#define glMultiTexSubImage1DEXT MANGLE(MultiTexSubImage1DEXT)
-#define glMultiTexSubImage2DEXT MANGLE(MultiTexSubImage2DEXT)
-#define glMultiTexSubImage3DEXT MANGLE(MultiTexSubImage3DEXT)
-#define glMultMatrixd MANGLE(MultMatrixd)
-#define glMultMatrixf MANGLE(MultMatrixf)
-#define glMultTransposeMatrixdARB MANGLE(MultTransposeMatrixdARB)
-#define glMultTransposeMatrixd MANGLE(MultTransposeMatrixd)
-#define glMultTransposeMatrixfARB MANGLE(MultTransposeMatrixfARB)
-#define glMultTransposeMatrixf MANGLE(MultTransposeMatrixf)
-#define glNamedBufferDataEXT MANGLE(NamedBufferDataEXT)
-#define glNamedBufferSubDataEXT MANGLE(NamedBufferSubDataEXT)
-#define glNamedCopyBufferSubDataEXT MANGLE(NamedCopyBufferSubDataEXT)
-#define glNamedFramebufferRenderbufferEXT MANGLE(NamedFramebufferRenderbufferEXT)
-#define glNamedFramebufferTexture1DEXT MANGLE(NamedFramebufferTexture1DEXT)
-#define glNamedFramebufferTexture2DEXT MANGLE(NamedFramebufferTexture2DEXT)
-#define glNamedFramebufferTexture3DEXT MANGLE(NamedFramebufferTexture3DEXT)
-#define glNamedFramebufferTextureEXT MANGLE(NamedFramebufferTextureEXT)
-#define glNamedFramebufferTextureFaceEXT MANGLE(NamedFramebufferTextureFaceEXT)
-#define glNamedFramebufferTextureLayerEXT MANGLE(NamedFramebufferTextureLayerEXT)
-#define glNamedProgramLocalParameter4dEXT MANGLE(NamedProgramLocalParameter4dEXT)
-#define glNamedProgramLocalParameter4dvEXT MANGLE(NamedProgramLocalParameter4dvEXT)
-#define glNamedProgramLocalParameter4fEXT MANGLE(NamedProgramLocalParameter4fEXT)
-#define glNamedProgramLocalParameter4fvEXT MANGLE(NamedProgramLocalParameter4fvEXT)
-#define glNamedProgramLocalParameterI4iEXT MANGLE(NamedProgramLocalParameterI4iEXT)
-#define glNamedProgramLocalParameterI4ivEXT MANGLE(NamedProgramLocalParameterI4ivEXT)
-#define glNamedProgramLocalParameterI4uiEXT MANGLE(NamedProgramLocalParameterI4uiEXT)
-#define glNamedProgramLocalParameterI4uivEXT MANGLE(NamedProgramLocalParameterI4uivEXT)
-#define glNamedProgramLocalParameters4fvEXT MANGLE(NamedProgramLocalParameters4fvEXT)
-#define glNamedProgramLocalParametersI4ivEXT MANGLE(NamedProgramLocalParametersI4ivEXT)
-#define glNamedProgramLocalParametersI4uivEXT MANGLE(NamedProgramLocalParametersI4uivEXT)
-#define glNamedProgramStringEXT MANGLE(NamedProgramStringEXT)
-#define glNamedRenderbufferStorageEXT MANGLE(NamedRenderbufferStorageEXT)
-#define glNamedRenderbufferStorageMultisampleCoverageEXT MANGLE(NamedRenderbufferStorageMultisampleCoverageEXT)
-#define glNamedRenderbufferStorageMultisampleEXT MANGLE(NamedRenderbufferStorageMultisampleEXT)
-#define glNamedStringARB MANGLE(NamedStringARB)
-#define glNewList MANGLE(NewList)
-#define glNewObjectBufferATI MANGLE(NewObjectBufferATI)
-#define glNormal3b MANGLE(Normal3b)
-#define glNormal3bv MANGLE(Normal3bv)
-#define glNormal3d MANGLE(Normal3d)
-#define glNormal3dv MANGLE(Normal3dv)
-#define glNormal3f MANGLE(Normal3f)
-#define glNormal3fVertex3fSUN MANGLE(Normal3fVertex3fSUN)
-#define glNormal3fVertex3fvSUN MANGLE(Normal3fVertex3fvSUN)
-#define glNormal3fv MANGLE(Normal3fv)
-#define glNormal3hNV MANGLE(Normal3hNV)
-#define glNormal3hvNV MANGLE(Normal3hvNV)
-#define glNormal3i MANGLE(Normal3i)
-#define glNormal3iv MANGLE(Normal3iv)
-#define glNormal3s MANGLE(Normal3s)
-#define glNormal3sv MANGLE(Normal3sv)
-#define glNormalFormatNV MANGLE(NormalFormatNV)
-#define glNormalP3ui MANGLE(NormalP3ui)
-#define glNormalP3uiv MANGLE(NormalP3uiv)
-#define glNormalPointerEXT MANGLE(NormalPointerEXT)
-#define glNormalPointerListIBM MANGLE(NormalPointerListIBM)
-#define glNormalPointer MANGLE(NormalPointer)
-#define glNormalPointervINTEL MANGLE(NormalPointervINTEL)
-#define glNormalStream3bATI MANGLE(NormalStream3bATI)
-#define glNormalStream3bvATI MANGLE(NormalStream3bvATI)
-#define glNormalStream3dATI MANGLE(NormalStream3dATI)
-#define glNormalStream3dvATI MANGLE(NormalStream3dvATI)
-#define glNormalStream3fATI MANGLE(NormalStream3fATI)
-#define glNormalStream3fvATI MANGLE(NormalStream3fvATI)
-#define glNormalStream3iATI MANGLE(NormalStream3iATI)
-#define glNormalStream3ivATI MANGLE(NormalStream3ivATI)
-#define glNormalStream3sATI MANGLE(NormalStream3sATI)
-#define glNormalStream3svATI MANGLE(NormalStream3svATI)
-#define glObjectPurgeableAPPLE MANGLE(ObjectPurgeableAPPLE)
-#define glObjectUnpurgeableAPPLE MANGLE(ObjectUnpurgeableAPPLE)
-#define glOrtho MANGLE(Ortho)
-#define glPassTexCoordATI MANGLE(PassTexCoordATI)
-#define glPassThrough MANGLE(PassThrough)
-#define glPatchParameterfv MANGLE(PatchParameterfv)
-#define glPatchParameteri MANGLE(PatchParameteri)
-#define glPauseTransformFeedback MANGLE(PauseTransformFeedback)
-#define glPauseTransformFeedbackNV MANGLE(PauseTransformFeedbackNV)
-#define glPixelDataRangeNV MANGLE(PixelDataRangeNV)
-#define glPixelMapfv MANGLE(PixelMapfv)
-#define glPixelMapuiv MANGLE(PixelMapuiv)
-#define glPixelMapusv MANGLE(PixelMapusv)
-#define glPixelStoref MANGLE(PixelStoref)
-#define glPixelStorei MANGLE(PixelStorei)
-#define glPixelTexGenParameterfSGIS MANGLE(PixelTexGenParameterfSGIS)
-#define glPixelTexGenParameterfvSGIS MANGLE(PixelTexGenParameterfvSGIS)
-#define glPixelTexGenParameteriSGIS MANGLE(PixelTexGenParameteriSGIS)
-#define glPixelTexGenParameterivSGIS MANGLE(PixelTexGenParameterivSGIS)
-#define glPixelTexGenSGIX MANGLE(PixelTexGenSGIX)
-#define glPixelTransferf MANGLE(PixelTransferf)
-#define glPixelTransferi MANGLE(PixelTransferi)
-#define glPixelTransformParameterfEXT MANGLE(PixelTransformParameterfEXT)
-#define glPixelTransformParameterfvEXT MANGLE(PixelTransformParameterfvEXT)
-#define glPixelTransformParameteriEXT MANGLE(PixelTransformParameteriEXT)
-#define glPixelTransformParameterivEXT MANGLE(PixelTransformParameterivEXT)
-#define glPixelZoom MANGLE(PixelZoom)
-#define glPNTrianglesfATI MANGLE(PNTrianglesfATI)
-#define glPNTrianglesiATI MANGLE(PNTrianglesiATI)
-#define glPointParameterfARB MANGLE(PointParameterfARB)
-#define glPointParameterfEXT MANGLE(PointParameterfEXT)
-#define glPointParameterf MANGLE(PointParameterf)
-#define glPointParameterfSGIS MANGLE(PointParameterfSGIS)
-#define glPointParameterfvARB MANGLE(PointParameterfvARB)
-#define glPointParameterfvEXT MANGLE(PointParameterfvEXT)
-#define glPointParameterfv MANGLE(PointParameterfv)
-#define glPointParameterfvSGIS MANGLE(PointParameterfvSGIS)
-#define glPointParameteri MANGLE(PointParameteri)
-#define glPointParameteriNV MANGLE(PointParameteriNV)
-#define glPointParameteriv MANGLE(PointParameteriv)
-#define glPointParameterivNV MANGLE(PointParameterivNV)
-#define glPointSize MANGLE(PointSize)
-#define glPollAsyncSGIX MANGLE(PollAsyncSGIX)
-#define glPollInstrumentsSGIX MANGLE(PollInstrumentsSGIX)
-#define glPolygonMode MANGLE(PolygonMode)
-#define glPolygonOffsetEXT MANGLE(PolygonOffsetEXT)
-#define glPolygonOffset MANGLE(PolygonOffset)
-#define glPolygonStipple MANGLE(PolygonStipple)
-#define glPopAttrib MANGLE(PopAttrib)
-#define glPopClientAttrib MANGLE(PopClientAttrib)
-#define glPopMatrix MANGLE(PopMatrix)
-#define glPopName MANGLE(PopName)
-#define glPresentFrameDualFillNV MANGLE(PresentFrameDualFillNV)
-#define glPresentFrameKeyedNV MANGLE(PresentFrameKeyedNV)
-#define glPrimitiveRestartIndex MANGLE(PrimitiveRestartIndex)
-#define glPrimitiveRestartIndexNV MANGLE(PrimitiveRestartIndexNV)
-#define glPrimitiveRestartNV MANGLE(PrimitiveRestartNV)
-#define glPrioritizeTexturesEXT MANGLE(PrioritizeTexturesEXT)
-#define glPrioritizeTextures MANGLE(PrioritizeTextures)
-#define glProgramBinary MANGLE(ProgramBinary)
-#define glProgramBufferParametersfvNV MANGLE(ProgramBufferParametersfvNV)
-#define glProgramBufferParametersIivNV MANGLE(ProgramBufferParametersIivNV)
-#define glProgramBufferParametersIuivNV MANGLE(ProgramBufferParametersIuivNV)
-#define glProgramCallbackMESA MANGLE(ProgramCallbackMESA)
-#define glProgramEnvParameter4dARB MANGLE(ProgramEnvParameter4dARB)
-#define glProgramEnvParameter4dvARB MANGLE(ProgramEnvParameter4dvARB)
-#define glProgramEnvParameter4fARB MANGLE(ProgramEnvParameter4fARB)
-#define glProgramEnvParameter4fvARB MANGLE(ProgramEnvParameter4fvARB)
-#define glProgramEnvParameterI4iNV MANGLE(ProgramEnvParameterI4iNV)
-#define glProgramEnvParameterI4ivNV MANGLE(ProgramEnvParameterI4ivNV)
-#define glProgramEnvParameterI4uiNV MANGLE(ProgramEnvParameterI4uiNV)
-#define glProgramEnvParameterI4uivNV MANGLE(ProgramEnvParameterI4uivNV)
-#define glProgramEnvParameters4fvEXT MANGLE(ProgramEnvParameters4fvEXT)
-#define glProgramEnvParametersI4ivNV MANGLE(ProgramEnvParametersI4ivNV)
-#define glProgramEnvParametersI4uivNV MANGLE(ProgramEnvParametersI4uivNV)
-#define glProgramLocalParameter4dARB MANGLE(ProgramLocalParameter4dARB)
-#define glProgramLocalParameter4dvARB MANGLE(ProgramLocalParameter4dvARB)
-#define glProgramLocalParameter4fARB MANGLE(ProgramLocalParameter4fARB)
-#define glProgramLocalParameter4fvARB MANGLE(ProgramLocalParameter4fvARB)
-#define glProgramLocalParameterI4iNV MANGLE(ProgramLocalParameterI4iNV)
-#define glProgramLocalParameterI4ivNV MANGLE(ProgramLocalParameterI4ivNV)
-#define glProgramLocalParameterI4uiNV MANGLE(ProgramLocalParameterI4uiNV)
-#define glProgramLocalParameterI4uivNV MANGLE(ProgramLocalParameterI4uivNV)
-#define glProgramLocalParameters4fvEXT MANGLE(ProgramLocalParameters4fvEXT)
-#define glProgramLocalParametersI4ivNV MANGLE(ProgramLocalParametersI4ivNV)
-#define glProgramLocalParametersI4uivNV MANGLE(ProgramLocalParametersI4uivNV)
-#define glProgramNamedParameter4dNV MANGLE(ProgramNamedParameter4dNV)
-#define glProgramNamedParameter4dvNV MANGLE(ProgramNamedParameter4dvNV)
-#define glProgramNamedParameter4fNV MANGLE(ProgramNamedParameter4fNV)
-#define glProgramNamedParameter4fvNV MANGLE(ProgramNamedParameter4fvNV)
-#define glProgramParameter4dNV MANGLE(ProgramParameter4dNV)
-#define glProgramParameter4dvNV MANGLE(ProgramParameter4dvNV)
-#define glProgramParameter4fNV MANGLE(ProgramParameter4fNV)
-#define glProgramParameter4fvNV MANGLE(ProgramParameter4fvNV)
-#define glProgramParameteriARB MANGLE(ProgramParameteriARB)
-#define glProgramParameteriEXT MANGLE(ProgramParameteriEXT)
-#define glProgramParameteri MANGLE(ProgramParameteri)
-#define glProgramParameters4dvNV MANGLE(ProgramParameters4dvNV)
-#define glProgramParameters4fvNV MANGLE(ProgramParameters4fvNV)
-#define glProgramStringARB MANGLE(ProgramStringARB)
-#define glProgramSubroutineParametersuivNV MANGLE(ProgramSubroutineParametersuivNV)
-#define glProgramUniform1dEXT MANGLE(ProgramUniform1dEXT)
-#define glProgramUniform1d MANGLE(ProgramUniform1d)
-#define glProgramUniform1dvEXT MANGLE(ProgramUniform1dvEXT)
-#define glProgramUniform1dv MANGLE(ProgramUniform1dv)
-#define glProgramUniform1fEXT MANGLE(ProgramUniform1fEXT)
-#define glProgramUniform1f MANGLE(ProgramUniform1f)
-#define glProgramUniform1fvEXT MANGLE(ProgramUniform1fvEXT)
-#define glProgramUniform1fv MANGLE(ProgramUniform1fv)
-#define glProgramUniform1i64NV MANGLE(ProgramUniform1i64NV)
-#define glProgramUniform1i64vNV MANGLE(ProgramUniform1i64vNV)
-#define glProgramUniform1iEXT MANGLE(ProgramUniform1iEXT)
-#define glProgramUniform1i MANGLE(ProgramUniform1i)
-#define glProgramUniform1ivEXT MANGLE(ProgramUniform1ivEXT)
-#define glProgramUniform1iv MANGLE(ProgramUniform1iv)
-#define glProgramUniform1ui64NV MANGLE(ProgramUniform1ui64NV)
-#define glProgramUniform1ui64vNV MANGLE(ProgramUniform1ui64vNV)
-#define glProgramUniform1uiEXT MANGLE(ProgramUniform1uiEXT)
-#define glProgramUniform1ui MANGLE(ProgramUniform1ui)
-#define glProgramUniform1uivEXT MANGLE(ProgramUniform1uivEXT)
-#define glProgramUniform1uiv MANGLE(ProgramUniform1uiv)
-#define glProgramUniform2dEXT MANGLE(ProgramUniform2dEXT)
-#define glProgramUniform2d MANGLE(ProgramUniform2d)
-#define glProgramUniform2dvEXT MANGLE(ProgramUniform2dvEXT)
-#define glProgramUniform2dv MANGLE(ProgramUniform2dv)
-#define glProgramUniform2fEXT MANGLE(ProgramUniform2fEXT)
-#define glProgramUniform2f MANGLE(ProgramUniform2f)
-#define glProgramUniform2fvEXT MANGLE(ProgramUniform2fvEXT)
-#define glProgramUniform2fv MANGLE(ProgramUniform2fv)
-#define glProgramUniform2i64NV MANGLE(ProgramUniform2i64NV)
-#define glProgramUniform2i64vNV MANGLE(ProgramUniform2i64vNV)
-#define glProgramUniform2iEXT MANGLE(ProgramUniform2iEXT)
-#define glProgramUniform2i MANGLE(ProgramUniform2i)
-#define glProgramUniform2ivEXT MANGLE(ProgramUniform2ivEXT)
-#define glProgramUniform2iv MANGLE(ProgramUniform2iv)
-#define glProgramUniform2ui64NV MANGLE(ProgramUniform2ui64NV)
-#define glProgramUniform2ui64vNV MANGLE(ProgramUniform2ui64vNV)
-#define glProgramUniform2uiEXT MANGLE(ProgramUniform2uiEXT)
-#define glProgramUniform2ui MANGLE(ProgramUniform2ui)
-#define glProgramUniform2uivEXT MANGLE(ProgramUniform2uivEXT)
-#define glProgramUniform2uiv MANGLE(ProgramUniform2uiv)
-#define glProgramUniform3dEXT MANGLE(ProgramUniform3dEXT)
-#define glProgramUniform3d MANGLE(ProgramUniform3d)
-#define glProgramUniform3dvEXT MANGLE(ProgramUniform3dvEXT)
-#define glProgramUniform3dv MANGLE(ProgramUniform3dv)
-#define glProgramUniform3fEXT MANGLE(ProgramUniform3fEXT)
-#define glProgramUniform3f MANGLE(ProgramUniform3f)
-#define glProgramUniform3fvEXT MANGLE(ProgramUniform3fvEXT)
-#define glProgramUniform3fv MANGLE(ProgramUniform3fv)
-#define glProgramUniform3i64NV MANGLE(ProgramUniform3i64NV)
-#define glProgramUniform3i64vNV MANGLE(ProgramUniform3i64vNV)
-#define glProgramUniform3iEXT MANGLE(ProgramUniform3iEXT)
-#define glProgramUniform3i MANGLE(ProgramUniform3i)
-#define glProgramUniform3ivEXT MANGLE(ProgramUniform3ivEXT)
-#define glProgramUniform3iv MANGLE(ProgramUniform3iv)
-#define glProgramUniform3ui64NV MANGLE(ProgramUniform3ui64NV)
-#define glProgramUniform3ui64vNV MANGLE(ProgramUniform3ui64vNV)
-#define glProgramUniform3uiEXT MANGLE(ProgramUniform3uiEXT)
-#define glProgramUniform3ui MANGLE(ProgramUniform3ui)
-#define glProgramUniform3uivEXT MANGLE(ProgramUniform3uivEXT)
-#define glProgramUniform3uiv MANGLE(ProgramUniform3uiv)
-#define glProgramUniform4dEXT MANGLE(ProgramUniform4dEXT)
-#define glProgramUniform4d MANGLE(ProgramUniform4d)
-#define glProgramUniform4dvEXT MANGLE(ProgramUniform4dvEXT)
-#define glProgramUniform4dv MANGLE(ProgramUniform4dv)
-#define glProgramUniform4fEXT MANGLE(ProgramUniform4fEXT)
-#define glProgramUniform4f MANGLE(ProgramUniform4f)
-#define glProgramUniform4fvEXT MANGLE(ProgramUniform4fvEXT)
-#define glProgramUniform4fv MANGLE(ProgramUniform4fv)
-#define glProgramUniform4i64NV MANGLE(ProgramUniform4i64NV)
-#define glProgramUniform4i64vNV MANGLE(ProgramUniform4i64vNV)
-#define glProgramUniform4iEXT MANGLE(ProgramUniform4iEXT)
-#define glProgramUniform4i MANGLE(ProgramUniform4i)
-#define glProgramUniform4ivEXT MANGLE(ProgramUniform4ivEXT)
-#define glProgramUniform4iv MANGLE(ProgramUniform4iv)
-#define glProgramUniform4ui64NV MANGLE(ProgramUniform4ui64NV)
-#define glProgramUniform4ui64vNV MANGLE(ProgramUniform4ui64vNV)
-#define glProgramUniform4uiEXT MANGLE(ProgramUniform4uiEXT)
-#define glProgramUniform4ui MANGLE(ProgramUniform4ui)
-#define glProgramUniform4uivEXT MANGLE(ProgramUniform4uivEXT)
-#define glProgramUniform4uiv MANGLE(ProgramUniform4uiv)
-#define glProgramUniformMatrix2dvEXT MANGLE(ProgramUniformMatrix2dvEXT)
-#define glProgramUniformMatrix2dv MANGLE(ProgramUniformMatrix2dv)
-#define glProgramUniformMatrix2fvEXT MANGLE(ProgramUniformMatrix2fvEXT)
-#define glProgramUniformMatrix2fv MANGLE(ProgramUniformMatrix2fv)
-#define glProgramUniformMatrix2x3dvEXT MANGLE(ProgramUniformMatrix2x3dvEXT)
-#define glProgramUniformMatrix2x3dv MANGLE(ProgramUniformMatrix2x3dv)
-#define glProgramUniformMatrix2x3fvEXT MANGLE(ProgramUniformMatrix2x3fvEXT)
-#define glProgramUniformMatrix2x3fv MANGLE(ProgramUniformMatrix2x3fv)
-#define glProgramUniformMatrix2x4dvEXT MANGLE(ProgramUniformMatrix2x4dvEXT)
-#define glProgramUniformMatrix2x4dv MANGLE(ProgramUniformMatrix2x4dv)
-#define glProgramUniformMatrix2x4fvEXT MANGLE(ProgramUniformMatrix2x4fvEXT)
-#define glProgramUniformMatrix2x4fv MANGLE(ProgramUniformMatrix2x4fv)
-#define glProgramUniformMatrix3dvEXT MANGLE(ProgramUniformMatrix3dvEXT)
-#define glProgramUniformMatrix3dv MANGLE(ProgramUniformMatrix3dv)
-#define glProgramUniformMatrix3fvEXT MANGLE(ProgramUniformMatrix3fvEXT)
-#define glProgramUniformMatrix3fv MANGLE(ProgramUniformMatrix3fv)
-#define glProgramUniformMatrix3x2dvEXT MANGLE(ProgramUniformMatrix3x2dvEXT)
-#define glProgramUniformMatrix3x2dv MANGLE(ProgramUniformMatrix3x2dv)
-#define glProgramUniformMatrix3x2fvEXT MANGLE(ProgramUniformMatrix3x2fvEXT)
-#define glProgramUniformMatrix3x2fv MANGLE(ProgramUniformMatrix3x2fv)
-#define glProgramUniformMatrix3x4dvEXT MANGLE(ProgramUniformMatrix3x4dvEXT)
-#define glProgramUniformMatrix3x4dv MANGLE(ProgramUniformMatrix3x4dv)
-#define glProgramUniformMatrix3x4fvEXT MANGLE(ProgramUniformMatrix3x4fvEXT)
-#define glProgramUniformMatrix3x4fv MANGLE(ProgramUniformMatrix3x4fv)
-#define glProgramUniformMatrix4dvEXT MANGLE(ProgramUniformMatrix4dvEXT)
-#define glProgramUniformMatrix4dv MANGLE(ProgramUniformMatrix4dv)
-#define glProgramUniformMatrix4fvEXT MANGLE(ProgramUniformMatrix4fvEXT)
-#define glProgramUniformMatrix4fv MANGLE(ProgramUniformMatrix4fv)
-#define glProgramUniformMatrix4x2dvEXT MANGLE(ProgramUniformMatrix4x2dvEXT)
-#define glProgramUniformMatrix4x2dv MANGLE(ProgramUniformMatrix4x2dv)
-#define glProgramUniformMatrix4x2fvEXT MANGLE(ProgramUniformMatrix4x2fvEXT)
-#define glProgramUniformMatrix4x2fv MANGLE(ProgramUniformMatrix4x2fv)
-#define glProgramUniformMatrix4x3dvEXT MANGLE(ProgramUniformMatrix4x3dvEXT)
-#define glProgramUniformMatrix4x3dv MANGLE(ProgramUniformMatrix4x3dv)
-#define glProgramUniformMatrix4x3fvEXT MANGLE(ProgramUniformMatrix4x3fvEXT)
-#define glProgramUniformMatrix4x3fv MANGLE(ProgramUniformMatrix4x3fv)
-#define glProgramUniformui64NV MANGLE(ProgramUniformui64NV)
-#define glProgramUniformui64vNV MANGLE(ProgramUniformui64vNV)
-#define glProgramVertexLimitNV MANGLE(ProgramVertexLimitNV)
-#define glProvokingVertexEXT MANGLE(ProvokingVertexEXT)
-#define glProvokingVertex MANGLE(ProvokingVertex)
-#define glPushAttrib MANGLE(PushAttrib)
-#define glPushClientAttribDefaultEXT MANGLE(PushClientAttribDefaultEXT)
-#define glPushClientAttrib MANGLE(PushClientAttrib)
-#define glPushMatrix MANGLE(PushMatrix)
-#define glPushName MANGLE(PushName)
-#define glQueryCounter MANGLE(QueryCounter)
-#define glRasterPos2d MANGLE(RasterPos2d)
-#define glRasterPos2dv MANGLE(RasterPos2dv)
-#define glRasterPos2f MANGLE(RasterPos2f)
-#define glRasterPos2fv MANGLE(RasterPos2fv)
-#define glRasterPos2i MANGLE(RasterPos2i)
-#define glRasterPos2iv MANGLE(RasterPos2iv)
-#define glRasterPos2s MANGLE(RasterPos2s)
-#define glRasterPos2sv MANGLE(RasterPos2sv)
-#define glRasterPos3d MANGLE(RasterPos3d)
-#define glRasterPos3dv MANGLE(RasterPos3dv)
-#define glRasterPos3f MANGLE(RasterPos3f)
-#define glRasterPos3fv MANGLE(RasterPos3fv)
-#define glRasterPos3i MANGLE(RasterPos3i)
-#define glRasterPos3iv MANGLE(RasterPos3iv)
-#define glRasterPos3s MANGLE(RasterPos3s)
-#define glRasterPos3sv MANGLE(RasterPos3sv)
-#define glRasterPos4d MANGLE(RasterPos4d)
-#define glRasterPos4dv MANGLE(RasterPos4dv)
-#define glRasterPos4f MANGLE(RasterPos4f)
-#define glRasterPos4fv MANGLE(RasterPos4fv)
-#define glRasterPos4i MANGLE(RasterPos4i)
-#define glRasterPos4iv MANGLE(RasterPos4iv)
-#define glRasterPos4s MANGLE(RasterPos4s)
-#define glRasterPos4sv MANGLE(RasterPos4sv)
-#define glReadBuffer MANGLE(ReadBuffer)
-#define glReadInstrumentsSGIX MANGLE(ReadInstrumentsSGIX)
-#define glReadnPixelsARB MANGLE(ReadnPixelsARB)
-#define glReadPixels MANGLE(ReadPixels)
-#define glRectd MANGLE(Rectd)
-#define glRectdv MANGLE(Rectdv)
-#define glRectf MANGLE(Rectf)
-#define glRectfv MANGLE(Rectfv)
-#define glRecti MANGLE(Recti)
-#define glRectiv MANGLE(Rectiv)
-#define glRects MANGLE(Rects)
-#define glRectsv MANGLE(Rectsv)
-#define glReferencePlaneSGIX MANGLE(ReferencePlaneSGIX)
-#define glReleaseShaderCompiler MANGLE(ReleaseShaderCompiler)
-#define glRenderbufferStorageEXT MANGLE(RenderbufferStorageEXT)
-#define glRenderbufferStorage MANGLE(RenderbufferStorage)
-#define glRenderbufferStorageMultisampleCoverageNV MANGLE(RenderbufferStorageMultisampleCoverageNV)
-#define glRenderbufferStorageMultisampleEXT MANGLE(RenderbufferStorageMultisampleEXT)
-#define glRenderbufferStorageMultisample MANGLE(RenderbufferStorageMultisample)
-#define glRenderMode MANGLE(RenderMode)
-#define glReplacementCodePointerSUN MANGLE(ReplacementCodePointerSUN)
-#define glReplacementCodeubSUN MANGLE(ReplacementCodeubSUN)
-#define glReplacementCodeubvSUN MANGLE(ReplacementCodeubvSUN)
-#define glReplacementCodeuiColor3fVertex3fSUN MANGLE(ReplacementCodeuiColor3fVertex3fSUN)
-#define glReplacementCodeuiColor3fVertex3fvSUN MANGLE(ReplacementCodeuiColor3fVertex3fvSUN)
-#define glReplacementCodeuiColor4fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiColor4fNormal3fVertex3fSUN)
-#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiColor4fNormal3fVertex3fvSUN)
-#define glReplacementCodeuiColor4ubVertex3fSUN MANGLE(ReplacementCodeuiColor4ubVertex3fSUN)
-#define glReplacementCodeuiColor4ubVertex3fvSUN MANGLE(ReplacementCodeuiColor4ubVertex3fvSUN)
-#define glReplacementCodeuiNormal3fVertex3fSUN MANGLE(ReplacementCodeuiNormal3fVertex3fSUN)
-#define glReplacementCodeuiNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiNormal3fVertex3fvSUN)
-#define glReplacementCodeuiSUN MANGLE(ReplacementCodeuiSUN)
-#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN)
-#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN)
-#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN)
-#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN)
-#define glReplacementCodeuiTexCoord2fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fVertex3fSUN)
-#define glReplacementCodeuiTexCoord2fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fVertex3fvSUN)
-#define glReplacementCodeuiVertex3fSUN MANGLE(ReplacementCodeuiVertex3fSUN)
-#define glReplacementCodeuiVertex3fvSUN MANGLE(ReplacementCodeuiVertex3fvSUN)
-#define glReplacementCodeuivSUN MANGLE(ReplacementCodeuivSUN)
-#define glReplacementCodeusSUN MANGLE(ReplacementCodeusSUN)
-#define glReplacementCodeusvSUN MANGLE(ReplacementCodeusvSUN)
-#define glRequestResidentProgramsNV MANGLE(RequestResidentProgramsNV)
-#define glResetHistogramEXT MANGLE(ResetHistogramEXT)
-#define glResetHistogram MANGLE(ResetHistogram)
-#define glResetMinmaxEXT MANGLE(ResetMinmaxEXT)
-#define glResetMinmax MANGLE(ResetMinmax)
-#define glResizeBuffersMESA MANGLE(ResizeBuffersMESA)
-#define glResumeTransformFeedback MANGLE(ResumeTransformFeedback)
-#define glResumeTransformFeedbackNV MANGLE(ResumeTransformFeedbackNV)
-#define glRotated MANGLE(Rotated)
-#define glRotatef MANGLE(Rotatef)
-#define glSampleCoverageARB MANGLE(SampleCoverageARB)
-#define glSampleCoverage MANGLE(SampleCoverage)
-#define glSampleMapATI MANGLE(SampleMapATI)
-#define glSampleMaskEXT MANGLE(SampleMaskEXT)
-#define glSampleMaski MANGLE(SampleMaski)
-#define glSampleMaskIndexedNV MANGLE(SampleMaskIndexedNV)
-#define glSampleMaskSGIS MANGLE(SampleMaskSGIS)
-#define glSamplePatternEXT MANGLE(SamplePatternEXT)
-#define glSamplePatternSGIS MANGLE(SamplePatternSGIS)
-#define glSamplerParameterf MANGLE(SamplerParameterf)
-#define glSamplerParameterfv MANGLE(SamplerParameterfv)
-#define glSamplerParameterIiv MANGLE(SamplerParameterIiv)
-#define glSamplerParameteri MANGLE(SamplerParameteri)
-#define glSamplerParameterIuiv MANGLE(SamplerParameterIuiv)
-#define glSamplerParameteriv MANGLE(SamplerParameteriv)
-#define glScaled MANGLE(Scaled)
-#define glScalef MANGLE(Scalef)
-#define glScissorArrayv MANGLE(ScissorArrayv)
-#define glScissorIndexed MANGLE(ScissorIndexed)
-#define glScissorIndexedv MANGLE(ScissorIndexedv)
-#define glScissor MANGLE(Scissor)
-#define glSecondaryColor3bEXT MANGLE(SecondaryColor3bEXT)
-#define glSecondaryColor3b MANGLE(SecondaryColor3b)
-#define glSecondaryColor3bvEXT MANGLE(SecondaryColor3bvEXT)
-#define glSecondaryColor3bv MANGLE(SecondaryColor3bv)
-#define glSecondaryColor3dEXT MANGLE(SecondaryColor3dEXT)
-#define glSecondaryColor3d MANGLE(SecondaryColor3d)
-#define glSecondaryColor3dvEXT MANGLE(SecondaryColor3dvEXT)
-#define glSecondaryColor3dv MANGLE(SecondaryColor3dv)
-#define glSecondaryColor3fEXT MANGLE(SecondaryColor3fEXT)
-#define glSecondaryColor3f MANGLE(SecondaryColor3f)
-#define glSecondaryColor3fvEXT MANGLE(SecondaryColor3fvEXT)
-#define glSecondaryColor3fv MANGLE(SecondaryColor3fv)
-#define glSecondaryColor3hNV MANGLE(SecondaryColor3hNV)
-#define glSecondaryColor3hvNV MANGLE(SecondaryColor3hvNV)
-#define glSecondaryColor3iEXT MANGLE(SecondaryColor3iEXT)
-#define glSecondaryColor3i MANGLE(SecondaryColor3i)
-#define glSecondaryColor3ivEXT MANGLE(SecondaryColor3ivEXT)
-#define glSecondaryColor3iv MANGLE(SecondaryColor3iv)
-#define glSecondaryColor3sEXT MANGLE(SecondaryColor3sEXT)
-#define glSecondaryColor3s MANGLE(SecondaryColor3s)
-#define glSecondaryColor3svEXT MANGLE(SecondaryColor3svEXT)
-#define glSecondaryColor3sv MANGLE(SecondaryColor3sv)
-#define glSecondaryColor3ubEXT MANGLE(SecondaryColor3ubEXT)
-#define glSecondaryColor3ub MANGLE(SecondaryColor3ub)
-#define glSecondaryColor3ubvEXT MANGLE(SecondaryColor3ubvEXT)
-#define glSecondaryColor3ubv MANGLE(SecondaryColor3ubv)
-#define glSecondaryColor3uiEXT MANGLE(SecondaryColor3uiEXT)
-#define glSecondaryColor3ui MANGLE(SecondaryColor3ui)
-#define glSecondaryColor3uivEXT MANGLE(SecondaryColor3uivEXT)
-#define glSecondaryColor3uiv MANGLE(SecondaryColor3uiv)
-#define glSecondaryColor3usEXT MANGLE(SecondaryColor3usEXT)
-#define glSecondaryColor3us MANGLE(SecondaryColor3us)
-#define glSecondaryColor3usvEXT MANGLE(SecondaryColor3usvEXT)
-#define glSecondaryColor3usv MANGLE(SecondaryColor3usv)
-#define glSecondaryColorFormatNV MANGLE(SecondaryColorFormatNV)
-#define glSecondaryColorP3ui MANGLE(SecondaryColorP3ui)
-#define glSecondaryColorP3uiv MANGLE(SecondaryColorP3uiv)
-#define glSecondaryColorPointerEXT MANGLE(SecondaryColorPointerEXT)
-#define glSecondaryColorPointerListIBM MANGLE(SecondaryColorPointerListIBM)
-#define glSecondaryColorPointer MANGLE(SecondaryColorPointer)
-#define glSelectBuffer MANGLE(SelectBuffer)
-#define glSelectPerfMonitorCountersAMD MANGLE(SelectPerfMonitorCountersAMD)
-#define glSeparableFilter2DEXT MANGLE(SeparableFilter2DEXT)
-#define glSeparableFilter2D MANGLE(SeparableFilter2D)
-#define glSetFenceAPPLE MANGLE(SetFenceAPPLE)
-#define glSetFenceNV MANGLE(SetFenceNV)
-#define glSetFragmentShaderConstantATI MANGLE(SetFragmentShaderConstantATI)
-#define glSetInvariantEXT MANGLE(SetInvariantEXT)
-#define glSetLocalConstantEXT MANGLE(SetLocalConstantEXT)
-#define glShadeModel MANGLE(ShadeModel)
-#define glShaderBinary MANGLE(ShaderBinary)
-#define glShaderOp1EXT MANGLE(ShaderOp1EXT)
-#define glShaderOp2EXT MANGLE(ShaderOp2EXT)
-#define glShaderOp3EXT MANGLE(ShaderOp3EXT)
-#define glShaderSourceARB MANGLE(ShaderSourceARB)
-#define glShaderSource MANGLE(ShaderSource)
-#define glSharpenTexFuncSGIS MANGLE(SharpenTexFuncSGIS)
-#define glSpriteParameterfSGIX MANGLE(SpriteParameterfSGIX)
-#define glSpriteParameterfvSGIX MANGLE(SpriteParameterfvSGIX)
-#define glSpriteParameteriSGIX MANGLE(SpriteParameteriSGIX)
-#define glSpriteParameterivSGIX MANGLE(SpriteParameterivSGIX)
-#define glStartInstrumentsSGIX MANGLE(StartInstrumentsSGIX)
-#define glStencilClearTagEXT MANGLE(StencilClearTagEXT)
-#define glStencilFunc MANGLE(StencilFunc)
-#define glStencilFuncSeparateATI MANGLE(StencilFuncSeparateATI)
-#define glStencilFuncSeparate MANGLE(StencilFuncSeparate)
-#define glStencilMask MANGLE(StencilMask)
-#define glStencilMaskSeparate MANGLE(StencilMaskSeparate)
-#define glStencilOp MANGLE(StencilOp)
-#define glStencilOpSeparateATI MANGLE(StencilOpSeparateATI)
-#define glStencilOpSeparate MANGLE(StencilOpSeparate)
-#define glStopInstrumentsSGIX MANGLE(StopInstrumentsSGIX)
-#define glStringMarkerGREMEDY MANGLE(StringMarkerGREMEDY)
-#define glSwizzleEXT MANGLE(SwizzleEXT)
-#define glTagSampleBufferSGIX MANGLE(TagSampleBufferSGIX)
-#define glTangent3bEXT MANGLE(Tangent3bEXT)
-#define glTangent3bvEXT MANGLE(Tangent3bvEXT)
-#define glTangent3dEXT MANGLE(Tangent3dEXT)
-#define glTangent3dvEXT MANGLE(Tangent3dvEXT)
-#define glTangent3fEXT MANGLE(Tangent3fEXT)
-#define glTangent3fvEXT MANGLE(Tangent3fvEXT)
-#define glTangent3iEXT MANGLE(Tangent3iEXT)
-#define glTangent3ivEXT MANGLE(Tangent3ivEXT)
-#define glTangent3sEXT MANGLE(Tangent3sEXT)
-#define glTangent3svEXT MANGLE(Tangent3svEXT)
-#define glTangentPointerEXT MANGLE(TangentPointerEXT)
-#define glTbufferMask3DFX MANGLE(TbufferMask3DFX)
-#define glTessellationFactorAMD MANGLE(TessellationFactorAMD)
-#define glTessellationModeAMD MANGLE(TessellationModeAMD)
-#define glTestFenceAPPLE MANGLE(TestFenceAPPLE)
-#define glTestFenceNV MANGLE(TestFenceNV)
-#define glTestObjectAPPLE MANGLE(TestObjectAPPLE)
-#define glTexBufferARB MANGLE(TexBufferARB)
-#define glTexBufferEXT MANGLE(TexBufferEXT)
-#define glTexBuffer MANGLE(TexBuffer)
-#define glTexBumpParameterfvATI MANGLE(TexBumpParameterfvATI)
-#define glTexBumpParameterivATI MANGLE(TexBumpParameterivATI)
-#define glTexCoord1d MANGLE(TexCoord1d)
-#define glTexCoord1dv MANGLE(TexCoord1dv)
-#define glTexCoord1f MANGLE(TexCoord1f)
-#define glTexCoord1fv MANGLE(TexCoord1fv)
-#define glTexCoord1hNV MANGLE(TexCoord1hNV)
-#define glTexCoord1hvNV MANGLE(TexCoord1hvNV)
-#define glTexCoord1i MANGLE(TexCoord1i)
-#define glTexCoord1iv MANGLE(TexCoord1iv)
-#define glTexCoord1s MANGLE(TexCoord1s)
-#define glTexCoord1sv MANGLE(TexCoord1sv)
-#define glTexCoord2d MANGLE(TexCoord2d)
-#define glTexCoord2dv MANGLE(TexCoord2dv)
-#define glTexCoord2fColor3fVertex3fSUN MANGLE(TexCoord2fColor3fVertex3fSUN)
-#define glTexCoord2fColor3fVertex3fvSUN MANGLE(TexCoord2fColor3fVertex3fvSUN)
-#define glTexCoord2fColor4fNormal3fVertex3fSUN MANGLE(TexCoord2fColor4fNormal3fVertex3fSUN)
-#define glTexCoord2fColor4fNormal3fVertex3fvSUN MANGLE(TexCoord2fColor4fNormal3fVertex3fvSUN)
-#define glTexCoord2fColor4ubVertex3fSUN MANGLE(TexCoord2fColor4ubVertex3fSUN)
-#define glTexCoord2fColor4ubVertex3fvSUN MANGLE(TexCoord2fColor4ubVertex3fvSUN)
-#define glTexCoord2f MANGLE(TexCoord2f)
-#define glTexCoord2fNormal3fVertex3fSUN MANGLE(TexCoord2fNormal3fVertex3fSUN)
-#define glTexCoord2fNormal3fVertex3fvSUN MANGLE(TexCoord2fNormal3fVertex3fvSUN)
-#define glTexCoord2fVertex3fSUN MANGLE(TexCoord2fVertex3fSUN)
-#define glTexCoord2fVertex3fvSUN MANGLE(TexCoord2fVertex3fvSUN)
-#define glTexCoord2fv MANGLE(TexCoord2fv)
-#define glTexCoord2hNV MANGLE(TexCoord2hNV)
-#define glTexCoord2hvNV MANGLE(TexCoord2hvNV)
-#define glTexCoord2i MANGLE(TexCoord2i)
-#define glTexCoord2iv MANGLE(TexCoord2iv)
-#define glTexCoord2s MANGLE(TexCoord2s)
-#define glTexCoord2sv MANGLE(TexCoord2sv)
-#define glTexCoord3d MANGLE(TexCoord3d)
-#define glTexCoord3dv MANGLE(TexCoord3dv)
-#define glTexCoord3f MANGLE(TexCoord3f)
-#define glTexCoord3fv MANGLE(TexCoord3fv)
-#define glTexCoord3hNV MANGLE(TexCoord3hNV)
-#define glTexCoord3hvNV MANGLE(TexCoord3hvNV)
-#define glTexCoord3i MANGLE(TexCoord3i)
-#define glTexCoord3iv MANGLE(TexCoord3iv)
-#define glTexCoord3s MANGLE(TexCoord3s)
-#define glTexCoord3sv MANGLE(TexCoord3sv)
-#define glTexCoord4d MANGLE(TexCoord4d)
-#define glTexCoord4dv MANGLE(TexCoord4dv)
-#define glTexCoord4fColor4fNormal3fVertex4fSUN MANGLE(TexCoord4fColor4fNormal3fVertex4fSUN)
-#define glTexCoord4fColor4fNormal3fVertex4fvSUN MANGLE(TexCoord4fColor4fNormal3fVertex4fvSUN)
-#define glTexCoord4f MANGLE(TexCoord4f)
-#define glTexCoord4fVertex4fSUN MANGLE(TexCoord4fVertex4fSUN)
-#define glTexCoord4fVertex4fvSUN MANGLE(TexCoord4fVertex4fvSUN)
-#define glTexCoord4fv MANGLE(TexCoord4fv)
-#define glTexCoord4hNV MANGLE(TexCoord4hNV)
-#define glTexCoord4hvNV MANGLE(TexCoord4hvNV)
-#define glTexCoord4i MANGLE(TexCoord4i)
-#define glTexCoord4iv MANGLE(TexCoord4iv)
-#define glTexCoord4s MANGLE(TexCoord4s)
-#define glTexCoord4sv MANGLE(TexCoord4sv)
-#define glTexCoordFormatNV MANGLE(TexCoordFormatNV)
-#define glTexCoordP1ui MANGLE(TexCoordP1ui)
-#define glTexCoordP1uiv MANGLE(TexCoordP1uiv)
-#define glTexCoordP2ui MANGLE(TexCoordP2ui)
-#define glTexCoordP2uiv MANGLE(TexCoordP2uiv)
-#define glTexCoordP3ui MANGLE(TexCoordP3ui)
-#define glTexCoordP3uiv MANGLE(TexCoordP3uiv)
-#define glTexCoordP4ui MANGLE(TexCoordP4ui)
-#define glTexCoordP4uiv MANGLE(TexCoordP4uiv)
-#define glTexCoordPointerEXT MANGLE(TexCoordPointerEXT)
-#define glTexCoordPointerListIBM MANGLE(TexCoordPointerListIBM)
-#define glTexCoordPointer MANGLE(TexCoordPointer)
-#define glTexCoordPointervINTEL MANGLE(TexCoordPointervINTEL)
-#define glTexEnvf MANGLE(TexEnvf)
-#define glTexEnvfv MANGLE(TexEnvfv)
-#define glTexEnvi MANGLE(TexEnvi)
-#define glTexEnviv MANGLE(TexEnviv)
-#define glTexFilterFuncSGIS MANGLE(TexFilterFuncSGIS)
-#define glTexGend MANGLE(TexGend)
-#define glTexGendv MANGLE(TexGendv)
-#define glTexGenf MANGLE(TexGenf)
-#define glTexGenfv MANGLE(TexGenfv)
-#define glTexGeni MANGLE(TexGeni)
-#define glTexGeniv MANGLE(TexGeniv)
-#define glTexImage1D MANGLE(TexImage1D)
-#define glTexImage2D MANGLE(TexImage2D)
-#define glTexImage2DMultisample MANGLE(TexImage2DMultisample)
-#define glTexImage3DEXT MANGLE(TexImage3DEXT)
-#define glTexImage3D MANGLE(TexImage3D)
-#define glTexImage3DMultisample MANGLE(TexImage3DMultisample)
-#define glTexImage4DSGIS MANGLE(TexImage4DSGIS)
-#define glTexParameterf MANGLE(TexParameterf)
-#define glTexParameterfv MANGLE(TexParameterfv)
-#define glTexParameterIivEXT MANGLE(TexParameterIivEXT)
-#define glTexParameterIiv MANGLE(TexParameterIiv)
-#define glTexParameteri MANGLE(TexParameteri)
-#define glTexParameterIuivEXT MANGLE(TexParameterIuivEXT)
-#define glTexParameterIuiv MANGLE(TexParameterIuiv)
-#define glTexParameteriv MANGLE(TexParameteriv)
-#define glTexRenderbufferNV MANGLE(TexRenderbufferNV)
-#define glTexSubImage1DEXT MANGLE(TexSubImage1DEXT)
-#define glTexSubImage1D MANGLE(TexSubImage1D)
-#define glTexSubImage2DEXT MANGLE(TexSubImage2DEXT)
-#define glTexSubImage2D MANGLE(TexSubImage2D)
-#define glTexSubImage3DEXT MANGLE(TexSubImage3DEXT)
-#define glTexSubImage3D MANGLE(TexSubImage3D)
-#define glTexSubImage4DSGIS MANGLE(TexSubImage4DSGIS)
-#define glTextureBarrierNV MANGLE(TextureBarrierNV)
-#define glTextureBufferEXT MANGLE(TextureBufferEXT)
-#define glTextureColorMaskSGIS MANGLE(TextureColorMaskSGIS)
-#define glTextureImage1DEXT MANGLE(TextureImage1DEXT)
-#define glTextureImage2DEXT MANGLE(TextureImage2DEXT)
-#define glTextureImage3DEXT MANGLE(TextureImage3DEXT)
-#define glTextureLightEXT MANGLE(TextureLightEXT)
-#define glTextureMaterialEXT MANGLE(TextureMaterialEXT)
-#define glTextureNormalEXT MANGLE(TextureNormalEXT)
-#define glTextureParameterfEXT MANGLE(TextureParameterfEXT)
-#define glTextureParameterfvEXT MANGLE(TextureParameterfvEXT)
-#define glTextureParameteriEXT MANGLE(TextureParameteriEXT)
-#define glTextureParameterIivEXT MANGLE(TextureParameterIivEXT)
-#define glTextureParameterIuivEXT MANGLE(TextureParameterIuivEXT)
-#define glTextureParameterivEXT MANGLE(TextureParameterivEXT)
-#define glTextureRangeAPPLE MANGLE(TextureRangeAPPLE)
-#define glTextureRenderbufferEXT MANGLE(TextureRenderbufferEXT)
-#define glTextureSubImage1DEXT MANGLE(TextureSubImage1DEXT)
-#define glTextureSubImage2DEXT MANGLE(TextureSubImage2DEXT)
-#define glTextureSubImage3DEXT MANGLE(TextureSubImage3DEXT)
-#define glTrackMatrixNV MANGLE(TrackMatrixNV)
-#define glTransformFeedbackAttribsNV MANGLE(TransformFeedbackAttribsNV)
-#define glTransformFeedbackStreamAttribsNV MANGLE(TransformFeedbackStreamAttribsNV)
-#define glTransformFeedbackVaryingsEXT MANGLE(TransformFeedbackVaryingsEXT)
-#define glTransformFeedbackVaryings MANGLE(TransformFeedbackVaryings)
-#define glTransformFeedbackVaryingsNV MANGLE(TransformFeedbackVaryingsNV)
-#define glTranslated MANGLE(Translated)
-#define glTranslatef MANGLE(Translatef)
-#define glUniform1d MANGLE(Uniform1d)
-#define glUniform1dv MANGLE(Uniform1dv)
-#define glUniform1fARB MANGLE(Uniform1fARB)
-#define glUniform1f MANGLE(Uniform1f)
-#define glUniform1fvARB MANGLE(Uniform1fvARB)
-#define glUniform1fv MANGLE(Uniform1fv)
-#define glUniform1i64NV MANGLE(Uniform1i64NV)
-#define glUniform1i64vNV MANGLE(Uniform1i64vNV)
-#define glUniform1iARB MANGLE(Uniform1iARB)
-#define glUniform1i MANGLE(Uniform1i)
-#define glUniform1ivARB MANGLE(Uniform1ivARB)
-#define glUniform1iv MANGLE(Uniform1iv)
-#define glUniform1ui64NV MANGLE(Uniform1ui64NV)
-#define glUniform1ui64vNV MANGLE(Uniform1ui64vNV)
-#define glUniform1uiEXT MANGLE(Uniform1uiEXT)
-#define glUniform1ui MANGLE(Uniform1ui)
-#define glUniform1uivEXT MANGLE(Uniform1uivEXT)
-#define glUniform1uiv MANGLE(Uniform1uiv)
-#define glUniform2d MANGLE(Uniform2d)
-#define glUniform2dv MANGLE(Uniform2dv)
-#define glUniform2fARB MANGLE(Uniform2fARB)
-#define glUniform2f MANGLE(Uniform2f)
-#define glUniform2fvARB MANGLE(Uniform2fvARB)
-#define glUniform2fv MANGLE(Uniform2fv)
-#define glUniform2i64NV MANGLE(Uniform2i64NV)
-#define glUniform2i64vNV MANGLE(Uniform2i64vNV)
-#define glUniform2iARB MANGLE(Uniform2iARB)
-#define glUniform2i MANGLE(Uniform2i)
-#define glUniform2ivARB MANGLE(Uniform2ivARB)
-#define glUniform2iv MANGLE(Uniform2iv)
-#define glUniform2ui64NV MANGLE(Uniform2ui64NV)
-#define glUniform2ui64vNV MANGLE(Uniform2ui64vNV)
-#define glUniform2uiEXT MANGLE(Uniform2uiEXT)
-#define glUniform2ui MANGLE(Uniform2ui)
-#define glUniform2uivEXT MANGLE(Uniform2uivEXT)
-#define glUniform2uiv MANGLE(Uniform2uiv)
-#define glUniform3d MANGLE(Uniform3d)
-#define glUniform3dv MANGLE(Uniform3dv)
-#define glUniform3fARB MANGLE(Uniform3fARB)
-#define glUniform3f MANGLE(Uniform3f)
-#define glUniform3fvARB MANGLE(Uniform3fvARB)
-#define glUniform3fv MANGLE(Uniform3fv)
-#define glUniform3i64NV MANGLE(Uniform3i64NV)
-#define glUniform3i64vNV MANGLE(Uniform3i64vNV)
-#define glUniform3iARB MANGLE(Uniform3iARB)
-#define glUniform3i MANGLE(Uniform3i)
-#define glUniform3ivARB MANGLE(Uniform3ivARB)
-#define glUniform3iv MANGLE(Uniform3iv)
-#define glUniform3ui64NV MANGLE(Uniform3ui64NV)
-#define glUniform3ui64vNV MANGLE(Uniform3ui64vNV)
-#define glUniform3uiEXT MANGLE(Uniform3uiEXT)
-#define glUniform3ui MANGLE(Uniform3ui)
-#define glUniform3uivEXT MANGLE(Uniform3uivEXT)
-#define glUniform3uiv MANGLE(Uniform3uiv)
-#define glUniform4d MANGLE(Uniform4d)
-#define glUniform4dv MANGLE(Uniform4dv)
-#define glUniform4fARB MANGLE(Uniform4fARB)
-#define glUniform4f MANGLE(Uniform4f)
-#define glUniform4fvARB MANGLE(Uniform4fvARB)
-#define glUniform4fv MANGLE(Uniform4fv)
-#define glUniform4i64NV MANGLE(Uniform4i64NV)
-#define glUniform4i64vNV MANGLE(Uniform4i64vNV)
-#define glUniform4iARB MANGLE(Uniform4iARB)
-#define glUniform4i MANGLE(Uniform4i)
-#define glUniform4ivARB MANGLE(Uniform4ivARB)
-#define glUniform4iv MANGLE(Uniform4iv)
-#define glUniform4ui64NV MANGLE(Uniform4ui64NV)
-#define glUniform4ui64vNV MANGLE(Uniform4ui64vNV)
-#define glUniform4uiEXT MANGLE(Uniform4uiEXT)
-#define glUniform4ui MANGLE(Uniform4ui)
-#define glUniform4uivEXT MANGLE(Uniform4uivEXT)
-#define glUniform4uiv MANGLE(Uniform4uiv)
-#define glUniformBlockBinding MANGLE(UniformBlockBinding)
-#define glUniformBufferEXT MANGLE(UniformBufferEXT)
-#define glUniformMatrix2dv MANGLE(UniformMatrix2dv)
-#define glUniformMatrix2fvARB MANGLE(UniformMatrix2fvARB)
-#define glUniformMatrix2fv MANGLE(UniformMatrix2fv)
-#define glUniformMatrix2x3dv MANGLE(UniformMatrix2x3dv)
-#define glUniformMatrix2x3fv MANGLE(UniformMatrix2x3fv)
-#define glUniformMatrix2x4dv MANGLE(UniformMatrix2x4dv)
-#define glUniformMatrix2x4fv MANGLE(UniformMatrix2x4fv)
-#define glUniformMatrix3dv MANGLE(UniformMatrix3dv)
-#define glUniformMatrix3fvARB MANGLE(UniformMatrix3fvARB)
-#define glUniformMatrix3fv MANGLE(UniformMatrix3fv)
-#define glUniformMatrix3x2dv MANGLE(UniformMatrix3x2dv)
-#define glUniformMatrix3x2fv MANGLE(UniformMatrix3x2fv)
-#define glUniformMatrix3x4dv MANGLE(UniformMatrix3x4dv)
-#define glUniformMatrix3x4fv MANGLE(UniformMatrix3x4fv)
-#define glUniformMatrix4dv MANGLE(UniformMatrix4dv)
-#define glUniformMatrix4fvARB MANGLE(UniformMatrix4fvARB)
-#define glUniformMatrix4fv MANGLE(UniformMatrix4fv)
-#define glUniformMatrix4x2dv MANGLE(UniformMatrix4x2dv)
-#define glUniformMatrix4x2fv MANGLE(UniformMatrix4x2fv)
-#define glUniformMatrix4x3dv MANGLE(UniformMatrix4x3dv)
-#define glUniformMatrix4x3fv MANGLE(UniformMatrix4x3fv)
-#define glUniformSubroutinesuiv MANGLE(UniformSubroutinesuiv)
-#define glUniformui64NV MANGLE(Uniformui64NV)
-#define glUniformui64vNV MANGLE(Uniformui64vNV)
-#define glUnlockArraysEXT MANGLE(UnlockArraysEXT)
-#define glUnmapBufferARB MANGLE(UnmapBufferARB)
-#define glUnmapBuffer MANGLE(UnmapBuffer)
-#define glUnmapNamedBufferEXT MANGLE(UnmapNamedBufferEXT)
-#define glUnmapObjectBufferATI MANGLE(UnmapObjectBufferATI)
-#define glUpdateObjectBufferATI MANGLE(UpdateObjectBufferATI)
-#define glUseProgram MANGLE(UseProgram)
-#define glUseProgramObjectARB MANGLE(UseProgramObjectARB)
-#define glUseProgramStages MANGLE(UseProgramStages)
-#define glUseShaderProgramEXT MANGLE(UseShaderProgramEXT)
-#define glValidateProgramARB MANGLE(ValidateProgramARB)
-#define glValidateProgram MANGLE(ValidateProgram)
-#define glValidateProgramPipeline MANGLE(ValidateProgramPipeline)
-#define glVariantArrayObjectATI MANGLE(VariantArrayObjectATI)
-#define glVariantbvEXT MANGLE(VariantbvEXT)
-#define glVariantdvEXT MANGLE(VariantdvEXT)
-#define glVariantfvEXT MANGLE(VariantfvEXT)
-#define glVariantivEXT MANGLE(VariantivEXT)
-#define glVariantPointerEXT MANGLE(VariantPointerEXT)
-#define glVariantsvEXT MANGLE(VariantsvEXT)
-#define glVariantubvEXT MANGLE(VariantubvEXT)
-#define glVariantuivEXT MANGLE(VariantuivEXT)
-#define glVariantusvEXT MANGLE(VariantusvEXT)
-#define glVDPAUFiniNV MANGLE(VDPAUFiniNV)
-#define glVDPAUGetSurfaceivNV MANGLE(VDPAUGetSurfaceivNV)
-#define glVDPAUInitNV MANGLE(VDPAUInitNV)
-#define glVDPAUIsSurfaceNV MANGLE(VDPAUIsSurfaceNV)
-#define glVDPAUMapSurfacesNV MANGLE(VDPAUMapSurfacesNV)
-#define glVDPAURegisterOutputSurfaceNV MANGLE(VDPAURegisterOutputSurfaceNV)
-#define glVDPAURegisterVideoSurfaceNV MANGLE(VDPAURegisterVideoSurfaceNV)
-#define glVDPAUSurfaceAccessNV MANGLE(VDPAUSurfaceAccessNV)
-#define glVDPAUUnmapSurfacesNV MANGLE(VDPAUUnmapSurfacesNV)
-#define glVDPAUUnregisterSurfaceNV MANGLE(VDPAUUnregisterSurfaceNV)
-#define glVertex2d MANGLE(Vertex2d)
-#define glVertex2dv MANGLE(Vertex2dv)
-#define glVertex2f MANGLE(Vertex2f)
-#define glVertex2fv MANGLE(Vertex2fv)
-#define glVertex2hNV MANGLE(Vertex2hNV)
-#define glVertex2hvNV MANGLE(Vertex2hvNV)
-#define glVertex2i MANGLE(Vertex2i)
-#define glVertex2iv MANGLE(Vertex2iv)
-#define glVertex2s MANGLE(Vertex2s)
-#define glVertex2sv MANGLE(Vertex2sv)
-#define glVertex3d MANGLE(Vertex3d)
-#define glVertex3dv MANGLE(Vertex3dv)
-#define glVertex3f MANGLE(Vertex3f)
-#define glVertex3fv MANGLE(Vertex3fv)
-#define glVertex3hNV MANGLE(Vertex3hNV)
-#define glVertex3hvNV MANGLE(Vertex3hvNV)
-#define glVertex3i MANGLE(Vertex3i)
-#define glVertex3iv MANGLE(Vertex3iv)
-#define glVertex3s MANGLE(Vertex3s)
-#define glVertex3sv MANGLE(Vertex3sv)
-#define glVertex4d MANGLE(Vertex4d)
-#define glVertex4dv MANGLE(Vertex4dv)
-#define glVertex4f MANGLE(Vertex4f)
-#define glVertex4fv MANGLE(Vertex4fv)
-#define glVertex4hNV MANGLE(Vertex4hNV)
-#define glVertex4hvNV MANGLE(Vertex4hvNV)
-#define glVertex4i MANGLE(Vertex4i)
-#define glVertex4iv MANGLE(Vertex4iv)
-#define glVertex4s MANGLE(Vertex4s)
-#define glVertex4sv MANGLE(Vertex4sv)
-#define glVertexArrayParameteriAPPLE MANGLE(VertexArrayParameteriAPPLE)
-#define glVertexArrayRangeAPPLE MANGLE(VertexArrayRangeAPPLE)
-#define glVertexArrayRangeNV MANGLE(VertexArrayRangeNV)
-#define glVertexArrayVertexAttribLOffsetEXT MANGLE(VertexArrayVertexAttribLOffsetEXT)
-#define glVertexAttrib1dARB MANGLE(VertexAttrib1dARB)
-#define glVertexAttrib1d MANGLE(VertexAttrib1d)
-#define glVertexAttrib1dNV MANGLE(VertexAttrib1dNV)
-#define glVertexAttrib1dvARB MANGLE(VertexAttrib1dvARB)
-#define glVertexAttrib1dv MANGLE(VertexAttrib1dv)
-#define glVertexAttrib1dvNV MANGLE(VertexAttrib1dvNV)
-#define glVertexAttrib1fARB MANGLE(VertexAttrib1fARB)
-#define glVertexAttrib1f MANGLE(VertexAttrib1f)
-#define glVertexAttrib1fNV MANGLE(VertexAttrib1fNV)
-#define glVertexAttrib1fvARB MANGLE(VertexAttrib1fvARB)
-#define glVertexAttrib1fv MANGLE(VertexAttrib1fv)
-#define glVertexAttrib1fvNV MANGLE(VertexAttrib1fvNV)
-#define glVertexAttrib1hNV MANGLE(VertexAttrib1hNV)
-#define glVertexAttrib1hvNV MANGLE(VertexAttrib1hvNV)
-#define glVertexAttrib1sARB MANGLE(VertexAttrib1sARB)
-#define glVertexAttrib1s MANGLE(VertexAttrib1s)
-#define glVertexAttrib1sNV MANGLE(VertexAttrib1sNV)
-#define glVertexAttrib1svARB MANGLE(VertexAttrib1svARB)
-#define glVertexAttrib1sv MANGLE(VertexAttrib1sv)
-#define glVertexAttrib1svNV MANGLE(VertexAttrib1svNV)
-#define glVertexAttrib2dARB MANGLE(VertexAttrib2dARB)
-#define glVertexAttrib2d MANGLE(VertexAttrib2d)
-#define glVertexAttrib2dNV MANGLE(VertexAttrib2dNV)
-#define glVertexAttrib2dvARB MANGLE(VertexAttrib2dvARB)
-#define glVertexAttrib2dv MANGLE(VertexAttrib2dv)
-#define glVertexAttrib2dvNV MANGLE(VertexAttrib2dvNV)
-#define glVertexAttrib2fARB MANGLE(VertexAttrib2fARB)
-#define glVertexAttrib2f MANGLE(VertexAttrib2f)
-#define glVertexAttrib2fNV MANGLE(VertexAttrib2fNV)
-#define glVertexAttrib2fvARB MANGLE(VertexAttrib2fvARB)
-#define glVertexAttrib2fv MANGLE(VertexAttrib2fv)
-#define glVertexAttrib2fvNV MANGLE(VertexAttrib2fvNV)
-#define glVertexAttrib2hNV MANGLE(VertexAttrib2hNV)
-#define glVertexAttrib2hvNV MANGLE(VertexAttrib2hvNV)
-#define glVertexAttrib2sARB MANGLE(VertexAttrib2sARB)
-#define glVertexAttrib2s MANGLE(VertexAttrib2s)
-#define glVertexAttrib2sNV MANGLE(VertexAttrib2sNV)
-#define glVertexAttrib2svARB MANGLE(VertexAttrib2svARB)
-#define glVertexAttrib2sv MANGLE(VertexAttrib2sv)
-#define glVertexAttrib2svNV MANGLE(VertexAttrib2svNV)
-#define glVertexAttrib3dARB MANGLE(VertexAttrib3dARB)
-#define glVertexAttrib3d MANGLE(VertexAttrib3d)
-#define glVertexAttrib3dNV MANGLE(VertexAttrib3dNV)
-#define glVertexAttrib3dvARB MANGLE(VertexAttrib3dvARB)
-#define glVertexAttrib3dv MANGLE(VertexAttrib3dv)
-#define glVertexAttrib3dvNV MANGLE(VertexAttrib3dvNV)
-#define glVertexAttrib3fARB MANGLE(VertexAttrib3fARB)
-#define glVertexAttrib3f MANGLE(VertexAttrib3f)
-#define glVertexAttrib3fNV MANGLE(VertexAttrib3fNV)
-#define glVertexAttrib3fvARB MANGLE(VertexAttrib3fvARB)
-#define glVertexAttrib3fv MANGLE(VertexAttrib3fv)
-#define glVertexAttrib3fvNV MANGLE(VertexAttrib3fvNV)
-#define glVertexAttrib3hNV MANGLE(VertexAttrib3hNV)
-#define glVertexAttrib3hvNV MANGLE(VertexAttrib3hvNV)
-#define glVertexAttrib3sARB MANGLE(VertexAttrib3sARB)
-#define glVertexAttrib3s MANGLE(VertexAttrib3s)
-#define glVertexAttrib3sNV MANGLE(VertexAttrib3sNV)
-#define glVertexAttrib3svARB MANGLE(VertexAttrib3svARB)
-#define glVertexAttrib3sv MANGLE(VertexAttrib3sv)
-#define glVertexAttrib3svNV MANGLE(VertexAttrib3svNV)
-#define glVertexAttrib4bvARB MANGLE(VertexAttrib4bvARB)
-#define glVertexAttrib4bv MANGLE(VertexAttrib4bv)
-#define glVertexAttrib4dARB MANGLE(VertexAttrib4dARB)
-#define glVertexAttrib4d MANGLE(VertexAttrib4d)
-#define glVertexAttrib4dNV MANGLE(VertexAttrib4dNV)
-#define glVertexAttrib4dvARB MANGLE(VertexAttrib4dvARB)
-#define glVertexAttrib4dv MANGLE(VertexAttrib4dv)
-#define glVertexAttrib4dvNV MANGLE(VertexAttrib4dvNV)
-#define glVertexAttrib4fARB MANGLE(VertexAttrib4fARB)
-#define glVertexAttrib4f MANGLE(VertexAttrib4f)
-#define glVertexAttrib4fNV MANGLE(VertexAttrib4fNV)
-#define glVertexAttrib4fvARB MANGLE(VertexAttrib4fvARB)
-#define glVertexAttrib4fv MANGLE(VertexAttrib4fv)
-#define glVertexAttrib4fvNV MANGLE(VertexAttrib4fvNV)
-#define glVertexAttrib4hNV MANGLE(VertexAttrib4hNV)
-#define glVertexAttrib4hvNV MANGLE(VertexAttrib4hvNV)
-#define glVertexAttrib4ivARB MANGLE(VertexAttrib4ivARB)
-#define glVertexAttrib4iv MANGLE(VertexAttrib4iv)
-#define glVertexAttrib4NbvARB MANGLE(VertexAttrib4NbvARB)
-#define glVertexAttrib4Nbv MANGLE(VertexAttrib4Nbv)
-#define glVertexAttrib4NivARB MANGLE(VertexAttrib4NivARB)
-#define glVertexAttrib4Niv MANGLE(VertexAttrib4Niv)
-#define glVertexAttrib4NsvARB MANGLE(VertexAttrib4NsvARB)
-#define glVertexAttrib4Nsv MANGLE(VertexAttrib4Nsv)
-#define glVertexAttrib4NubARB MANGLE(VertexAttrib4NubARB)
-#define glVertexAttrib4Nub MANGLE(VertexAttrib4Nub)
-#define glVertexAttrib4NubvARB MANGLE(VertexAttrib4NubvARB)
-#define glVertexAttrib4Nubv MANGLE(VertexAttrib4Nubv)
-#define glVertexAttrib4NuivARB MANGLE(VertexAttrib4NuivARB)
-#define glVertexAttrib4Nuiv MANGLE(VertexAttrib4Nuiv)
-#define glVertexAttrib4NusvARB MANGLE(VertexAttrib4NusvARB)
-#define glVertexAttrib4Nusv MANGLE(VertexAttrib4Nusv)
-#define glVertexAttrib4sARB MANGLE(VertexAttrib4sARB)
-#define glVertexAttrib4s MANGLE(VertexAttrib4s)
-#define glVertexAttrib4sNV MANGLE(VertexAttrib4sNV)
-#define glVertexAttrib4svARB MANGLE(VertexAttrib4svARB)
-#define glVertexAttrib4sv MANGLE(VertexAttrib4sv)
-#define glVertexAttrib4svNV MANGLE(VertexAttrib4svNV)
-#define glVertexAttrib4ubNV MANGLE(VertexAttrib4ubNV)
-#define glVertexAttrib4ubvARB MANGLE(VertexAttrib4ubvARB)
-#define glVertexAttrib4ubv MANGLE(VertexAttrib4ubv)
-#define glVertexAttrib4ubvNV MANGLE(VertexAttrib4ubvNV)
-#define glVertexAttrib4uivARB MANGLE(VertexAttrib4uivARB)
-#define glVertexAttrib4uiv MANGLE(VertexAttrib4uiv)
-#define glVertexAttrib4usvARB MANGLE(VertexAttrib4usvARB)
-#define glVertexAttrib4usv MANGLE(VertexAttrib4usv)
-#define glVertexAttribArrayObjectATI MANGLE(VertexAttribArrayObjectATI)
-#define glVertexAttribDivisorARB MANGLE(VertexAttribDivisorARB)
-#define glVertexAttribDivisor MANGLE(VertexAttribDivisor)
-#define glVertexAttribFormatNV MANGLE(VertexAttribFormatNV)
-#define glVertexAttribI1iEXT MANGLE(VertexAttribI1iEXT)
-#define glVertexAttribI1i MANGLE(VertexAttribI1i)
-#define glVertexAttribI1ivEXT MANGLE(VertexAttribI1ivEXT)
-#define glVertexAttribI1iv MANGLE(VertexAttribI1iv)
-#define glVertexAttribI1uiEXT MANGLE(VertexAttribI1uiEXT)
-#define glVertexAttribI1ui MANGLE(VertexAttribI1ui)
-#define glVertexAttribI1uivEXT MANGLE(VertexAttribI1uivEXT)
-#define glVertexAttribI1uiv MANGLE(VertexAttribI1uiv)
-#define glVertexAttribI2iEXT MANGLE(VertexAttribI2iEXT)
-#define glVertexAttribI2i MANGLE(VertexAttribI2i)
-#define glVertexAttribI2ivEXT MANGLE(VertexAttribI2ivEXT)
-#define glVertexAttribI2iv MANGLE(VertexAttribI2iv)
-#define glVertexAttribI2uiEXT MANGLE(VertexAttribI2uiEXT)
-#define glVertexAttribI2ui MANGLE(VertexAttribI2ui)
-#define glVertexAttribI2uivEXT MANGLE(VertexAttribI2uivEXT)
-#define glVertexAttribI2uiv MANGLE(VertexAttribI2uiv)
-#define glVertexAttribI3iEXT MANGLE(VertexAttribI3iEXT)
-#define glVertexAttribI3i MANGLE(VertexAttribI3i)
-#define glVertexAttribI3ivEXT MANGLE(VertexAttribI3ivEXT)
-#define glVertexAttribI3iv MANGLE(VertexAttribI3iv)
-#define glVertexAttribI3uiEXT MANGLE(VertexAttribI3uiEXT)
-#define glVertexAttribI3ui MANGLE(VertexAttribI3ui)
-#define glVertexAttribI3uivEXT MANGLE(VertexAttribI3uivEXT)
-#define glVertexAttribI3uiv MANGLE(VertexAttribI3uiv)
-#define glVertexAttribI4bvEXT MANGLE(VertexAttribI4bvEXT)
-#define glVertexAttribI4bv MANGLE(VertexAttribI4bv)
-#define glVertexAttribI4iEXT MANGLE(VertexAttribI4iEXT)
-#define glVertexAttribI4i MANGLE(VertexAttribI4i)
-#define glVertexAttribI4ivEXT MANGLE(VertexAttribI4ivEXT)
-#define glVertexAttribI4iv MANGLE(VertexAttribI4iv)
-#define glVertexAttribI4svEXT MANGLE(VertexAttribI4svEXT)
-#define glVertexAttribI4sv MANGLE(VertexAttribI4sv)
-#define glVertexAttribI4ubvEXT MANGLE(VertexAttribI4ubvEXT)
-#define glVertexAttribI4ubv MANGLE(VertexAttribI4ubv)
-#define glVertexAttribI4uiEXT MANGLE(VertexAttribI4uiEXT)
-#define glVertexAttribI4ui MANGLE(VertexAttribI4ui)
-#define glVertexAttribI4uivEXT MANGLE(VertexAttribI4uivEXT)
-#define glVertexAttribI4uiv MANGLE(VertexAttribI4uiv)
-#define glVertexAttribI4usvEXT MANGLE(VertexAttribI4usvEXT)
-#define glVertexAttribI4usv MANGLE(VertexAttribI4usv)
-#define glVertexAttribIFormatNV MANGLE(VertexAttribIFormatNV)
-#define glVertexAttribIPointerEXT MANGLE(VertexAttribIPointerEXT)
-#define glVertexAttribIPointer MANGLE(VertexAttribIPointer)
-#define glVertexAttribL1dEXT MANGLE(VertexAttribL1dEXT)
-#define glVertexAttribL1d MANGLE(VertexAttribL1d)
-#define glVertexAttribL1dvEXT MANGLE(VertexAttribL1dvEXT)
-#define glVertexAttribL1dv MANGLE(VertexAttribL1dv)
-#define glVertexAttribL1i64NV MANGLE(VertexAttribL1i64NV)
-#define glVertexAttribL1i64vNV MANGLE(VertexAttribL1i64vNV)
-#define glVertexAttribL1ui64NV MANGLE(VertexAttribL1ui64NV)
-#define glVertexAttribL1ui64vNV MANGLE(VertexAttribL1ui64vNV)
-#define glVertexAttribL2dEXT MANGLE(VertexAttribL2dEXT)
-#define glVertexAttribL2d MANGLE(VertexAttribL2d)
-#define glVertexAttribL2dvEXT MANGLE(VertexAttribL2dvEXT)
-#define glVertexAttribL2dv MANGLE(VertexAttribL2dv)
-#define glVertexAttribL2i64NV MANGLE(VertexAttribL2i64NV)
-#define glVertexAttribL2i64vNV MANGLE(VertexAttribL2i64vNV)
-#define glVertexAttribL2ui64NV MANGLE(VertexAttribL2ui64NV)
-#define glVertexAttribL2ui64vNV MANGLE(VertexAttribL2ui64vNV)
-#define glVertexAttribL3dEXT MANGLE(VertexAttribL3dEXT)
-#define glVertexAttribL3d MANGLE(VertexAttribL3d)
-#define glVertexAttribL3dvEXT MANGLE(VertexAttribL3dvEXT)
-#define glVertexAttribL3dv MANGLE(VertexAttribL3dv)
-#define glVertexAttribL3i64NV MANGLE(VertexAttribL3i64NV)
-#define glVertexAttribL3i64vNV MANGLE(VertexAttribL3i64vNV)
-#define glVertexAttribL3ui64NV MANGLE(VertexAttribL3ui64NV)
-#define glVertexAttribL3ui64vNV MANGLE(VertexAttribL3ui64vNV)
-#define glVertexAttribL4dEXT MANGLE(VertexAttribL4dEXT)
-#define glVertexAttribL4d MANGLE(VertexAttribL4d)
-#define glVertexAttribL4dvEXT MANGLE(VertexAttribL4dvEXT)
-#define glVertexAttribL4dv MANGLE(VertexAttribL4dv)
-#define glVertexAttribL4i64NV MANGLE(VertexAttribL4i64NV)
-#define glVertexAttribL4i64vNV MANGLE(VertexAttribL4i64vNV)
-#define glVertexAttribL4ui64NV MANGLE(VertexAttribL4ui64NV)
-#define glVertexAttribL4ui64vNV MANGLE(VertexAttribL4ui64vNV)
-#define glVertexAttribLFormatNV MANGLE(VertexAttribLFormatNV)
-#define glVertexAttribLPointerEXT MANGLE(VertexAttribLPointerEXT)
-#define glVertexAttribLPointer MANGLE(VertexAttribLPointer)
-#define glVertexAttribP1ui MANGLE(VertexAttribP1ui)
-#define glVertexAttribP1uiv MANGLE(VertexAttribP1uiv)
-#define glVertexAttribP2ui MANGLE(VertexAttribP2ui)
-#define glVertexAttribP2uiv MANGLE(VertexAttribP2uiv)
-#define glVertexAttribP3ui MANGLE(VertexAttribP3ui)
-#define glVertexAttribP3uiv MANGLE(VertexAttribP3uiv)
-#define glVertexAttribP4ui MANGLE(VertexAttribP4ui)
-#define glVertexAttribP4uiv MANGLE(VertexAttribP4uiv)
-#define glVertexAttribPointerARB MANGLE(VertexAttribPointerARB)
-#define glVertexAttribPointer MANGLE(VertexAttribPointer)
-#define glVertexAttribPointerNV MANGLE(VertexAttribPointerNV)
-#define glVertexAttribs1dvNV MANGLE(VertexAttribs1dvNV)
-#define glVertexAttribs1fvNV MANGLE(VertexAttribs1fvNV)
-#define glVertexAttribs1hvNV MANGLE(VertexAttribs1hvNV)
-#define glVertexAttribs1svNV MANGLE(VertexAttribs1svNV)
-#define glVertexAttribs2dvNV MANGLE(VertexAttribs2dvNV)
-#define glVertexAttribs2fvNV MANGLE(VertexAttribs2fvNV)
-#define glVertexAttribs2hvNV MANGLE(VertexAttribs2hvNV)
-#define glVertexAttribs2svNV MANGLE(VertexAttribs2svNV)
-#define glVertexAttribs3dvNV MANGLE(VertexAttribs3dvNV)
-#define glVertexAttribs3fvNV MANGLE(VertexAttribs3fvNV)
-#define glVertexAttribs3hvNV MANGLE(VertexAttribs3hvNV)
-#define glVertexAttribs3svNV MANGLE(VertexAttribs3svNV)
-#define glVertexAttribs4dvNV MANGLE(VertexAttribs4dvNV)
-#define glVertexAttribs4fvNV MANGLE(VertexAttribs4fvNV)
-#define glVertexAttribs4hvNV MANGLE(VertexAttribs4hvNV)
-#define glVertexAttribs4svNV MANGLE(VertexAttribs4svNV)
-#define glVertexAttribs4ubvNV MANGLE(VertexAttribs4ubvNV)
-#define glVertexBlendARB MANGLE(VertexBlendARB)
-#define glVertexBlendEnvfATI MANGLE(VertexBlendEnvfATI)
-#define glVertexBlendEnviATI MANGLE(VertexBlendEnviATI)
-#define glVertexFormatNV MANGLE(VertexFormatNV)
-#define glVertexP2ui MANGLE(VertexP2ui)
-#define glVertexP2uiv MANGLE(VertexP2uiv)
-#define glVertexP3ui MANGLE(VertexP3ui)
-#define glVertexP3uiv MANGLE(VertexP3uiv)
-#define glVertexP4ui MANGLE(VertexP4ui)
-#define glVertexP4uiv MANGLE(VertexP4uiv)
-#define glVertexPointerEXT MANGLE(VertexPointerEXT)
-#define glVertexPointerListIBM MANGLE(VertexPointerListIBM)
-#define glVertexPointer MANGLE(VertexPointer)
-#define glVertexPointervINTEL MANGLE(VertexPointervINTEL)
-#define glVertexStream1dATI MANGLE(VertexStream1dATI)
-#define glVertexStream1dvATI MANGLE(VertexStream1dvATI)
-#define glVertexStream1fATI MANGLE(VertexStream1fATI)
-#define glVertexStream1fvATI MANGLE(VertexStream1fvATI)
-#define glVertexStream1iATI MANGLE(VertexStream1iATI)
-#define glVertexStream1ivATI MANGLE(VertexStream1ivATI)
-#define glVertexStream1sATI MANGLE(VertexStream1sATI)
-#define glVertexStream1svATI MANGLE(VertexStream1svATI)
-#define glVertexStream2dATI MANGLE(VertexStream2dATI)
-#define glVertexStream2dvATI MANGLE(VertexStream2dvATI)
-#define glVertexStream2fATI MANGLE(VertexStream2fATI)
-#define glVertexStream2fvATI MANGLE(VertexStream2fvATI)
-#define glVertexStream2iATI MANGLE(VertexStream2iATI)
-#define glVertexStream2ivATI MANGLE(VertexStream2ivATI)
-#define glVertexStream2sATI MANGLE(VertexStream2sATI)
-#define glVertexStream2svATI MANGLE(VertexStream2svATI)
-#define glVertexStream3dATI MANGLE(VertexStream3dATI)
-#define glVertexStream3dvATI MANGLE(VertexStream3dvATI)
-#define glVertexStream3fATI MANGLE(VertexStream3fATI)
-#define glVertexStream3fvATI MANGLE(VertexStream3fvATI)
-#define glVertexStream3iATI MANGLE(VertexStream3iATI)
-#define glVertexStream3ivATI MANGLE(VertexStream3ivATI)
-#define glVertexStream3sATI MANGLE(VertexStream3sATI)
-#define glVertexStream3svATI MANGLE(VertexStream3svATI)
-#define glVertexStream4dATI MANGLE(VertexStream4dATI)
-#define glVertexStream4dvATI MANGLE(VertexStream4dvATI)
-#define glVertexStream4fATI MANGLE(VertexStream4fATI)
-#define glVertexStream4fvATI MANGLE(VertexStream4fvATI)
-#define glVertexStream4iATI MANGLE(VertexStream4iATI)
-#define glVertexStream4ivATI MANGLE(VertexStream4ivATI)
-#define glVertexStream4sATI MANGLE(VertexStream4sATI)
-#define glVertexStream4svATI MANGLE(VertexStream4svATI)
-#define glVertexWeightfEXT MANGLE(VertexWeightfEXT)
-#define glVertexWeightfvEXT MANGLE(VertexWeightfvEXT)
-#define glVertexWeighthNV MANGLE(VertexWeighthNV)
-#define glVertexWeighthvNV MANGLE(VertexWeighthvNV)
-#define glVertexWeightPointerEXT MANGLE(VertexWeightPointerEXT)
-#define glVideoCaptureNV MANGLE(VideoCaptureNV)
-#define glVideoCaptureStreamParameterdvNV MANGLE(VideoCaptureStreamParameterdvNV)
-#define glVideoCaptureStreamParameterfvNV MANGLE(VideoCaptureStreamParameterfvNV)
-#define glVideoCaptureStreamParameterivNV MANGLE(VideoCaptureStreamParameterivNV)
-#define glViewportArrayv MANGLE(ViewportArrayv)
-#define glViewportIndexedf MANGLE(ViewportIndexedf)
-#define glViewportIndexedfv MANGLE(ViewportIndexedfv)
-#define glViewport MANGLE(Viewport)
-#define glWaitSync MANGLE(WaitSync)
-#define glWeightbvARB MANGLE(WeightbvARB)
-#define glWeightdvARB MANGLE(WeightdvARB)
-#define glWeightfvARB MANGLE(WeightfvARB)
-#define glWeightivARB MANGLE(WeightivARB)
-#define glWeightPointerARB MANGLE(WeightPointerARB)
-#define glWeightsvARB MANGLE(WeightsvARB)
-#define glWeightubvARB MANGLE(WeightubvARB)
-#define glWeightuivARB MANGLE(WeightuivARB)
-#define glWeightusvARB MANGLE(WeightusvARB)
-#define glWindowPos2dARB MANGLE(WindowPos2dARB)
-#define glWindowPos2d MANGLE(WindowPos2d)
-#define glWindowPos2dMESA MANGLE(WindowPos2dMESA)
-#define glWindowPos2dvARB MANGLE(WindowPos2dvARB)
-#define glWindowPos2dv MANGLE(WindowPos2dv)
-#define glWindowPos2dvMESA MANGLE(WindowPos2dvMESA)
-#define glWindowPos2fARB MANGLE(WindowPos2fARB)
-#define glWindowPos2f MANGLE(WindowPos2f)
-#define glWindowPos2fMESA MANGLE(WindowPos2fMESA)
-#define glWindowPos2fvARB MANGLE(WindowPos2fvARB)
-#define glWindowPos2fv MANGLE(WindowPos2fv)
-#define glWindowPos2fvMESA MANGLE(WindowPos2fvMESA)
-#define glWindowPos2iARB MANGLE(WindowPos2iARB)
-#define glWindowPos2i MANGLE(WindowPos2i)
-#define glWindowPos2iMESA MANGLE(WindowPos2iMESA)
-#define glWindowPos2ivARB MANGLE(WindowPos2ivARB)
-#define glWindowPos2iv MANGLE(WindowPos2iv)
-#define glWindowPos2ivMESA MANGLE(WindowPos2ivMESA)
-#define glWindowPos2sARB MANGLE(WindowPos2sARB)
-#define glWindowPos2s MANGLE(WindowPos2s)
-#define glWindowPos2sMESA MANGLE(WindowPos2sMESA)
-#define glWindowPos2svARB MANGLE(WindowPos2svARB)
-#define glWindowPos2sv MANGLE(WindowPos2sv)
-#define glWindowPos2svMESA MANGLE(WindowPos2svMESA)
-#define glWindowPos3dARB MANGLE(WindowPos3dARB)
-#define glWindowPos3d MANGLE(WindowPos3d)
-#define glWindowPos3dMESA MANGLE(WindowPos3dMESA)
-#define glWindowPos3dvARB MANGLE(WindowPos3dvARB)
-#define glWindowPos3dv MANGLE(WindowPos3dv)
-#define glWindowPos3dvMESA MANGLE(WindowPos3dvMESA)
-#define glWindowPos3fARB MANGLE(WindowPos3fARB)
-#define glWindowPos3f MANGLE(WindowPos3f)
-#define glWindowPos3fMESA MANGLE(WindowPos3fMESA)
-#define glWindowPos3fvARB MANGLE(WindowPos3fvARB)
-#define glWindowPos3fv MANGLE(WindowPos3fv)
-#define glWindowPos3fvMESA MANGLE(WindowPos3fvMESA)
-#define glWindowPos3iARB MANGLE(WindowPos3iARB)
-#define glWindowPos3i MANGLE(WindowPos3i)
-#define glWindowPos3iMESA MANGLE(WindowPos3iMESA)
-#define glWindowPos3ivARB MANGLE(WindowPos3ivARB)
-#define glWindowPos3iv MANGLE(WindowPos3iv)
-#define glWindowPos3ivMESA MANGLE(WindowPos3ivMESA)
-#define glWindowPos3sARB MANGLE(WindowPos3sARB)
-#define glWindowPos3s MANGLE(WindowPos3s)
-#define glWindowPos3sMESA MANGLE(WindowPos3sMESA)
-#define glWindowPos3svARB MANGLE(WindowPos3svARB)
-#define glWindowPos3sv MANGLE(WindowPos3sv)
-#define glWindowPos3svMESA MANGLE(WindowPos3svMESA)
-#define glWindowPos4dMESA MANGLE(WindowPos4dMESA)
-#define glWindowPos4dvMESA MANGLE(WindowPos4dvMESA)
-#define glWindowPos4fMESA MANGLE(WindowPos4fMESA)
-#define glWindowPos4fvMESA MANGLE(WindowPos4fvMESA)
-#define glWindowPos4iMESA MANGLE(WindowPos4iMESA)
-#define glWindowPos4ivMESA MANGLE(WindowPos4ivMESA)
-#define glWindowPos4sMESA MANGLE(WindowPos4sMESA)
-#define glWindowPos4svMESA MANGLE(WindowPos4svMESA)
-#define glWriteMaskEXT MANGLE(WriteMaskEXT)
-
-#endif /* GL_MANGLE_H */
+#if 0
+#define GL_MANGLE_C1 "DO NOT EDIT!!! - TO REGENERATE from gl.h, EXECUTE THIS FILE IN SHELL (/bin/sh) and save the output"
+#define GL_MANGLE_C2 "This file is used to create GL function protypes and aliases for the function names"
+ files="gl.h glext.h"
+#define GL_MANGLE_C3 "get regeneration header - copy everything in this file above the 'REGENERATE_TO_END' line"
+ awk '!done; /^\/\*REGENERATE_TO_END/ {done=1}' $0
+ echo ""
+#define GL_MANGLE_C4 get aliases
+ grep '^GLAPI' $files | sed -e 's/.*ENTRY gl\([^( ]*\).*$/#define gl\1 MANGLE(\1)/' | sort | uniq
+ echo ""
+ echo "#endif /* GL_MANGLE_H */"
+ exit
+#endif /* REGENERATION */
+
+/*
+ * If you compile Mesa with USE_MGL_NAMESPACE defined then you can link
+ * your application both with OpenGL and Mesa. The Mesa functions will
+ * be redefined so they are prefixed with "mgl" instead of "gl".
+ * Mgl contributed by Randy Frank (rfrank@rsinc.com)
+ * Regneration code contributed by Ray Tice (rayt@ma.ultra.net)
+ */
+
+#ifndef GL_MANGLE_H
+#define GL_MANGLE_H
+
+#ifndef MANGLE
+#define MANGLE(x) mgl##x
+#endif /*MANGLE*/
+
+/*REGENERATE_TO_END-----------ALL LINES BELOW HERE GET REPLACED ON REGENERATION */
+
+#define glAccum MANGLE(Accum)
+#define glActiveProgramEXT MANGLE(ActiveProgramEXT)
+#define glActiveShaderProgram MANGLE(ActiveShaderProgram)
+#define glActiveStencilFaceEXT MANGLE(ActiveStencilFaceEXT)
+#define glActiveTextureARB MANGLE(ActiveTextureARB)
+#define glActiveTexture MANGLE(ActiveTexture)
+#define glActiveVaryingNV MANGLE(ActiveVaryingNV)
+#define glAlphaFragmentOp1ATI MANGLE(AlphaFragmentOp1ATI)
+#define glAlphaFragmentOp2ATI MANGLE(AlphaFragmentOp2ATI)
+#define glAlphaFragmentOp3ATI MANGLE(AlphaFragmentOp3ATI)
+#define glAlphaFunc MANGLE(AlphaFunc)
+#define glApplyTextureEXT MANGLE(ApplyTextureEXT)
+#define glAreProgramsResidentNV MANGLE(AreProgramsResidentNV)
+#define glAreTexturesResidentEXT MANGLE(AreTexturesResidentEXT)
+#define glAreTexturesResident MANGLE(AreTexturesResident)
+#define glArrayElementEXT MANGLE(ArrayElementEXT)
+#define glArrayElement MANGLE(ArrayElement)
+#define glArrayObjectATI MANGLE(ArrayObjectATI)
+#define glAsyncMarkerSGIX MANGLE(AsyncMarkerSGIX)
+#define glAttachObjectARB MANGLE(AttachObjectARB)
+#define glAttachShader MANGLE(AttachShader)
+#define glBeginConditionalRender MANGLE(BeginConditionalRender)
+#define glBeginConditionalRenderNV MANGLE(BeginConditionalRenderNV)
+#define glBeginFragmentShaderATI MANGLE(BeginFragmentShaderATI)
+#define glBegin MANGLE(Begin)
+#define glBeginOcclusionQueryNV MANGLE(BeginOcclusionQueryNV)
+#define glBeginPerfMonitorAMD MANGLE(BeginPerfMonitorAMD)
+#define glBeginQueryARB MANGLE(BeginQueryARB)
+#define glBeginQueryIndexed MANGLE(BeginQueryIndexed)
+#define glBeginQuery MANGLE(BeginQuery)
+#define glBeginTransformFeedbackEXT MANGLE(BeginTransformFeedbackEXT)
+#define glBeginTransformFeedback MANGLE(BeginTransformFeedback)
+#define glBeginTransformFeedbackNV MANGLE(BeginTransformFeedbackNV)
+#define glBeginVertexShaderEXT MANGLE(BeginVertexShaderEXT)
+#define glBeginVideoCaptureNV MANGLE(BeginVideoCaptureNV)
+#define glBindAttribLocationARB MANGLE(BindAttribLocationARB)
+#define glBindAttribLocation MANGLE(BindAttribLocation)
+#define glBindBufferARB MANGLE(BindBufferARB)
+#define glBindBufferBaseEXT MANGLE(BindBufferBaseEXT)
+#define glBindBufferBase MANGLE(BindBufferBase)
+#define glBindBufferBaseNV MANGLE(BindBufferBaseNV)
+#define glBindBuffer MANGLE(BindBuffer)
+#define glBindBufferOffsetEXT MANGLE(BindBufferOffsetEXT)
+#define glBindBufferOffsetNV MANGLE(BindBufferOffsetNV)
+#define glBindBufferRangeEXT MANGLE(BindBufferRangeEXT)
+#define glBindBufferRange MANGLE(BindBufferRange)
+#define glBindBufferRangeNV MANGLE(BindBufferRangeNV)
+#define glBindFragDataLocationEXT MANGLE(BindFragDataLocationEXT)
+#define glBindFragDataLocationIndexed MANGLE(BindFragDataLocationIndexed)
+#define glBindFragDataLocation MANGLE(BindFragDataLocation)
+#define glBindFragmentShaderATI MANGLE(BindFragmentShaderATI)
+#define glBindFramebufferEXT MANGLE(BindFramebufferEXT)
+#define glBindFramebuffer MANGLE(BindFramebuffer)
+#define glBindImageTextureEXT MANGLE(BindImageTextureEXT)
+#define glBindLightParameterEXT MANGLE(BindLightParameterEXT)
+#define glBindMaterialParameterEXT MANGLE(BindMaterialParameterEXT)
+#define glBindMultiTextureEXT MANGLE(BindMultiTextureEXT)
+#define glBindParameterEXT MANGLE(BindParameterEXT)
+#define glBindProgramARB MANGLE(BindProgramARB)
+#define glBindProgramNV MANGLE(BindProgramNV)
+#define glBindProgramPipeline MANGLE(BindProgramPipeline)
+#define glBindRenderbufferEXT MANGLE(BindRenderbufferEXT)
+#define glBindRenderbuffer MANGLE(BindRenderbuffer)
+#define glBindSampler MANGLE(BindSampler)
+#define glBindTexGenParameterEXT MANGLE(BindTexGenParameterEXT)
+#define glBindTextureEXT MANGLE(BindTextureEXT)
+#define glBindTexture MANGLE(BindTexture)
+#define glBindTextureUnitParameterEXT MANGLE(BindTextureUnitParameterEXT)
+#define glBindTransformFeedback MANGLE(BindTransformFeedback)
+#define glBindTransformFeedbackNV MANGLE(BindTransformFeedbackNV)
+#define glBindVertexArrayAPPLE MANGLE(BindVertexArrayAPPLE)
+#define glBindVertexArray MANGLE(BindVertexArray)
+#define glBindVertexShaderEXT MANGLE(BindVertexShaderEXT)
+#define glBindVideoCaptureStreamBufferNV MANGLE(BindVideoCaptureStreamBufferNV)
+#define glBindVideoCaptureStreamTextureNV MANGLE(BindVideoCaptureStreamTextureNV)
+#define glBinormal3bEXT MANGLE(Binormal3bEXT)
+#define glBinormal3bvEXT MANGLE(Binormal3bvEXT)
+#define glBinormal3dEXT MANGLE(Binormal3dEXT)
+#define glBinormal3dvEXT MANGLE(Binormal3dvEXT)
+#define glBinormal3fEXT MANGLE(Binormal3fEXT)
+#define glBinormal3fvEXT MANGLE(Binormal3fvEXT)
+#define glBinormal3iEXT MANGLE(Binormal3iEXT)
+#define glBinormal3ivEXT MANGLE(Binormal3ivEXT)
+#define glBinormal3sEXT MANGLE(Binormal3sEXT)
+#define glBinormal3svEXT MANGLE(Binormal3svEXT)
+#define glBinormalPointerEXT MANGLE(BinormalPointerEXT)
+#define glBitmap MANGLE(Bitmap)
+#define glBlendColorEXT MANGLE(BlendColorEXT)
+#define glBlendColor MANGLE(BlendColor)
+#define glBlendEquationEXT MANGLE(BlendEquationEXT)
+#define glBlendEquationiARB MANGLE(BlendEquationiARB)
+#define glBlendEquationi MANGLE(BlendEquationi)
+#define glBlendEquationIndexedAMD MANGLE(BlendEquationIndexedAMD)
+#define glBlendEquation MANGLE(BlendEquation)
+#define glBlendEquationSeparateATI MANGLE(BlendEquationSeparateATI)
+#define glBlendEquationSeparateEXT MANGLE(BlendEquationSeparateEXT)
+#define glBlendEquationSeparateiARB MANGLE(BlendEquationSeparateiARB)
+#define glBlendEquationSeparatei MANGLE(BlendEquationSeparatei)
+#define glBlendEquationSeparateIndexedAMD MANGLE(BlendEquationSeparateIndexedAMD)
+#define glBlendEquationSeparate MANGLE(BlendEquationSeparate)
+#define glBlendFunciARB MANGLE(BlendFunciARB)
+#define glBlendFunci MANGLE(BlendFunci)
+#define glBlendFuncIndexedAMD MANGLE(BlendFuncIndexedAMD)
+#define glBlendFunc MANGLE(BlendFunc)
+#define glBlendFuncSeparateEXT MANGLE(BlendFuncSeparateEXT)
+#define glBlendFuncSeparateiARB MANGLE(BlendFuncSeparateiARB)
+#define glBlendFuncSeparatei MANGLE(BlendFuncSeparatei)
+#define glBlendFuncSeparateIndexedAMD MANGLE(BlendFuncSeparateIndexedAMD)
+#define glBlendFuncSeparateINGR MANGLE(BlendFuncSeparateINGR)
+#define glBlendFuncSeparate MANGLE(BlendFuncSeparate)
+#define glBlitFramebufferEXT MANGLE(BlitFramebufferEXT)
+#define glBlitFramebuffer MANGLE(BlitFramebuffer)
+#define glBufferAddressRangeNV MANGLE(BufferAddressRangeNV)
+#define glBufferDataARB MANGLE(BufferDataARB)
+#define glBufferData MANGLE(BufferData)
+#define glBufferParameteriAPPLE MANGLE(BufferParameteriAPPLE)
+#define glBufferSubDataARB MANGLE(BufferSubDataARB)
+#define glBufferSubData MANGLE(BufferSubData)
+#define glCallList MANGLE(CallList)
+#define glCallLists MANGLE(CallLists)
+#define glCheckFramebufferStatusEXT MANGLE(CheckFramebufferStatusEXT)
+#define glCheckFramebufferStatus MANGLE(CheckFramebufferStatus)
+#define glCheckNamedFramebufferStatusEXT MANGLE(CheckNamedFramebufferStatusEXT)
+#define glClampColorARB MANGLE(ClampColorARB)
+#define glClampColor MANGLE(ClampColor)
+#define glClearAccum MANGLE(ClearAccum)
+#define glClearBufferfi MANGLE(ClearBufferfi)
+#define glClearBufferfv MANGLE(ClearBufferfv)
+#define glClearBufferiv MANGLE(ClearBufferiv)
+#define glClearBufferuiv MANGLE(ClearBufferuiv)
+#define glClearColorIiEXT MANGLE(ClearColorIiEXT)
+#define glClearColorIuiEXT MANGLE(ClearColorIuiEXT)
+#define glClearColor MANGLE(ClearColor)
+#define glClearDebugLogMESA MANGLE(ClearDebugLogMESA)
+#define glClearDepthdNV MANGLE(ClearDepthdNV)
+#define glClearDepthf MANGLE(ClearDepthf)
+#define glClearDepth MANGLE(ClearDepth)
+#define glClearIndex MANGLE(ClearIndex)
+#define glClear MANGLE(Clear)
+#define glClearStencil MANGLE(ClearStencil)
+#define glClientActiveTextureARB MANGLE(ClientActiveTextureARB)
+#define glClientActiveTexture MANGLE(ClientActiveTexture)
+#define glClientActiveVertexStreamATI MANGLE(ClientActiveVertexStreamATI)
+#define glClientAttribDefaultEXT MANGLE(ClientAttribDefaultEXT)
+#define glClientWaitSync MANGLE(ClientWaitSync)
+#define glClipPlane MANGLE(ClipPlane)
+#define glColor3b MANGLE(Color3b)
+#define glColor3bv MANGLE(Color3bv)
+#define glColor3d MANGLE(Color3d)
+#define glColor3dv MANGLE(Color3dv)
+#define glColor3f MANGLE(Color3f)
+#define glColor3fVertex3fSUN MANGLE(Color3fVertex3fSUN)
+#define glColor3fVertex3fvSUN MANGLE(Color3fVertex3fvSUN)
+#define glColor3fv MANGLE(Color3fv)
+#define glColor3hNV MANGLE(Color3hNV)
+#define glColor3hvNV MANGLE(Color3hvNV)
+#define glColor3i MANGLE(Color3i)
+#define glColor3iv MANGLE(Color3iv)
+#define glColor3s MANGLE(Color3s)
+#define glColor3sv MANGLE(Color3sv)
+#define glColor3ub MANGLE(Color3ub)
+#define glColor3ubv MANGLE(Color3ubv)
+#define glColor3ui MANGLE(Color3ui)
+#define glColor3uiv MANGLE(Color3uiv)
+#define glColor3us MANGLE(Color3us)
+#define glColor3usv MANGLE(Color3usv)
+#define glColor4b MANGLE(Color4b)
+#define glColor4bv MANGLE(Color4bv)
+#define glColor4d MANGLE(Color4d)
+#define glColor4dv MANGLE(Color4dv)
+#define glColor4f MANGLE(Color4f)
+#define glColor4fNormal3fVertex3fSUN MANGLE(Color4fNormal3fVertex3fSUN)
+#define glColor4fNormal3fVertex3fvSUN MANGLE(Color4fNormal3fVertex3fvSUN)
+#define glColor4fv MANGLE(Color4fv)
+#define glColor4hNV MANGLE(Color4hNV)
+#define glColor4hvNV MANGLE(Color4hvNV)
+#define glColor4i MANGLE(Color4i)
+#define glColor4iv MANGLE(Color4iv)
+#define glColor4s MANGLE(Color4s)
+#define glColor4sv MANGLE(Color4sv)
+#define glColor4ub MANGLE(Color4ub)
+#define glColor4ubVertex2fSUN MANGLE(Color4ubVertex2fSUN)
+#define glColor4ubVertex2fvSUN MANGLE(Color4ubVertex2fvSUN)
+#define glColor4ubVertex3fSUN MANGLE(Color4ubVertex3fSUN)
+#define glColor4ubVertex3fvSUN MANGLE(Color4ubVertex3fvSUN)
+#define glColor4ubv MANGLE(Color4ubv)
+#define glColor4ui MANGLE(Color4ui)
+#define glColor4uiv MANGLE(Color4uiv)
+#define glColor4us MANGLE(Color4us)
+#define glColor4usv MANGLE(Color4usv)
+#define glColorFormatNV MANGLE(ColorFormatNV)
+#define glColorFragmentOp1ATI MANGLE(ColorFragmentOp1ATI)
+#define glColorFragmentOp2ATI MANGLE(ColorFragmentOp2ATI)
+#define glColorFragmentOp3ATI MANGLE(ColorFragmentOp3ATI)
+#define glColorMaski MANGLE(ColorMaski)
+#define glColorMaskIndexedEXT MANGLE(ColorMaskIndexedEXT)
+#define glColorMask MANGLE(ColorMask)
+#define glColorMaterial MANGLE(ColorMaterial)
+#define glColorP3ui MANGLE(ColorP3ui)
+#define glColorP3uiv MANGLE(ColorP3uiv)
+#define glColorP4ui MANGLE(ColorP4ui)
+#define glColorP4uiv MANGLE(ColorP4uiv)
+#define glColorPointerEXT MANGLE(ColorPointerEXT)
+#define glColorPointerListIBM MANGLE(ColorPointerListIBM)
+#define glColorPointer MANGLE(ColorPointer)
+#define glColorPointervINTEL MANGLE(ColorPointervINTEL)
+#define glColorSubTableEXT MANGLE(ColorSubTableEXT)
+#define glColorSubTable MANGLE(ColorSubTable)
+#define glColorTableEXT MANGLE(ColorTableEXT)
+#define glColorTable MANGLE(ColorTable)
+#define glColorTableParameterfv MANGLE(ColorTableParameterfv)
+#define glColorTableParameterfvSGI MANGLE(ColorTableParameterfvSGI)
+#define glColorTableParameteriv MANGLE(ColorTableParameteriv)
+#define glColorTableParameterivSGI MANGLE(ColorTableParameterivSGI)
+#define glColorTableSGI MANGLE(ColorTableSGI)
+#define glCombinerInputNV MANGLE(CombinerInputNV)
+#define glCombinerOutputNV MANGLE(CombinerOutputNV)
+#define glCombinerParameterfNV MANGLE(CombinerParameterfNV)
+#define glCombinerParameterfvNV MANGLE(CombinerParameterfvNV)
+#define glCombinerParameteriNV MANGLE(CombinerParameteriNV)
+#define glCombinerParameterivNV MANGLE(CombinerParameterivNV)
+#define glCombinerStageParameterfvNV MANGLE(CombinerStageParameterfvNV)
+#define glCompileShaderARB MANGLE(CompileShaderARB)
+#define glCompileShaderIncludeARB MANGLE(CompileShaderIncludeARB)
+#define glCompileShader MANGLE(CompileShader)
+#define glCompressedMultiTexImage1DEXT MANGLE(CompressedMultiTexImage1DEXT)
+#define glCompressedMultiTexImage2DEXT MANGLE(CompressedMultiTexImage2DEXT)
+#define glCompressedMultiTexImage3DEXT MANGLE(CompressedMultiTexImage3DEXT)
+#define glCompressedMultiTexSubImage1DEXT MANGLE(CompressedMultiTexSubImage1DEXT)
+#define glCompressedMultiTexSubImage2DEXT MANGLE(CompressedMultiTexSubImage2DEXT)
+#define glCompressedMultiTexSubImage3DEXT MANGLE(CompressedMultiTexSubImage3DEXT)
+#define glCompressedTexImage1DARB MANGLE(CompressedTexImage1DARB)
+#define glCompressedTexImage1D MANGLE(CompressedTexImage1D)
+#define glCompressedTexImage2DARB MANGLE(CompressedTexImage2DARB)
+#define glCompressedTexImage2D MANGLE(CompressedTexImage2D)
+#define glCompressedTexImage3DARB MANGLE(CompressedTexImage3DARB)
+#define glCompressedTexImage3D MANGLE(CompressedTexImage3D)
+#define glCompressedTexSubImage1DARB MANGLE(CompressedTexSubImage1DARB)
+#define glCompressedTexSubImage1D MANGLE(CompressedTexSubImage1D)
+#define glCompressedTexSubImage2DARB MANGLE(CompressedTexSubImage2DARB)
+#define glCompressedTexSubImage2D MANGLE(CompressedTexSubImage2D)
+#define glCompressedTexSubImage3DARB MANGLE(CompressedTexSubImage3DARB)
+#define glCompressedTexSubImage3D MANGLE(CompressedTexSubImage3D)
+#define glCompressedTextureImage1DEXT MANGLE(CompressedTextureImage1DEXT)
+#define glCompressedTextureImage2DEXT MANGLE(CompressedTextureImage2DEXT)
+#define glCompressedTextureImage3DEXT MANGLE(CompressedTextureImage3DEXT)
+#define glCompressedTextureSubImage1DEXT MANGLE(CompressedTextureSubImage1DEXT)
+#define glCompressedTextureSubImage2DEXT MANGLE(CompressedTextureSubImage2DEXT)
+#define glCompressedTextureSubImage3DEXT MANGLE(CompressedTextureSubImage3DEXT)
+#define glConvolutionFilter1DEXT MANGLE(ConvolutionFilter1DEXT)
+#define glConvolutionFilter1D MANGLE(ConvolutionFilter1D)
+#define glConvolutionFilter2DEXT MANGLE(ConvolutionFilter2DEXT)
+#define glConvolutionFilter2D MANGLE(ConvolutionFilter2D)
+#define glConvolutionParameterfEXT MANGLE(ConvolutionParameterfEXT)
+#define glConvolutionParameterf MANGLE(ConvolutionParameterf)
+#define glConvolutionParameterfvEXT MANGLE(ConvolutionParameterfvEXT)
+#define glConvolutionParameterfv MANGLE(ConvolutionParameterfv)
+#define glConvolutionParameteriEXT MANGLE(ConvolutionParameteriEXT)
+#define glConvolutionParameteri MANGLE(ConvolutionParameteri)
+#define glConvolutionParameterivEXT MANGLE(ConvolutionParameterivEXT)
+#define glConvolutionParameteriv MANGLE(ConvolutionParameteriv)
+#define glCopyBufferSubData MANGLE(CopyBufferSubData)
+#define glCopyColorSubTableEXT MANGLE(CopyColorSubTableEXT)
+#define glCopyColorSubTable MANGLE(CopyColorSubTable)
+#define glCopyColorTable MANGLE(CopyColorTable)
+#define glCopyColorTableSGI MANGLE(CopyColorTableSGI)
+#define glCopyConvolutionFilter1DEXT MANGLE(CopyConvolutionFilter1DEXT)
+#define glCopyConvolutionFilter1D MANGLE(CopyConvolutionFilter1D)
+#define glCopyConvolutionFilter2DEXT MANGLE(CopyConvolutionFilter2DEXT)
+#define glCopyConvolutionFilter2D MANGLE(CopyConvolutionFilter2D)
+#define glCopyImageSubDataNV MANGLE(CopyImageSubDataNV)
+#define glCopyMultiTexImage1DEXT MANGLE(CopyMultiTexImage1DEXT)
+#define glCopyMultiTexImage2DEXT MANGLE(CopyMultiTexImage2DEXT)
+#define glCopyMultiTexSubImage1DEXT MANGLE(CopyMultiTexSubImage1DEXT)
+#define glCopyMultiTexSubImage2DEXT MANGLE(CopyMultiTexSubImage2DEXT)
+#define glCopyMultiTexSubImage3DEXT MANGLE(CopyMultiTexSubImage3DEXT)
+#define glCopyPixels MANGLE(CopyPixels)
+#define glCopyTexImage1DEXT MANGLE(CopyTexImage1DEXT)
+#define glCopyTexImage1D MANGLE(CopyTexImage1D)
+#define glCopyTexImage2DEXT MANGLE(CopyTexImage2DEXT)
+#define glCopyTexImage2D MANGLE(CopyTexImage2D)
+#define glCopyTexSubImage1DEXT MANGLE(CopyTexSubImage1DEXT)
+#define glCopyTexSubImage1D MANGLE(CopyTexSubImage1D)
+#define glCopyTexSubImage2DEXT MANGLE(CopyTexSubImage2DEXT)
+#define glCopyTexSubImage2D MANGLE(CopyTexSubImage2D)
+#define glCopyTexSubImage3DEXT MANGLE(CopyTexSubImage3DEXT)
+#define glCopyTexSubImage3D MANGLE(CopyTexSubImage3D)
+#define glCopyTextureImage1DEXT MANGLE(CopyTextureImage1DEXT)
+#define glCopyTextureImage2DEXT MANGLE(CopyTextureImage2DEXT)
+#define glCopyTextureSubImage1DEXT MANGLE(CopyTextureSubImage1DEXT)
+#define glCopyTextureSubImage2DEXT MANGLE(CopyTextureSubImage2DEXT)
+#define glCopyTextureSubImage3DEXT MANGLE(CopyTextureSubImage3DEXT)
+#define glCreateDebugObjectMESA MANGLE(CreateDebugObjectMESA)
+#define glCreateProgram MANGLE(CreateProgram)
+#define glCreateProgramObjectARB MANGLE(CreateProgramObjectARB)
+#define glCreateShader MANGLE(CreateShader)
+#define glCreateShaderObjectARB MANGLE(CreateShaderObjectARB)
+#define glCreateShaderProgramEXT MANGLE(CreateShaderProgramEXT)
+#define glCreateShaderProgramv MANGLE(CreateShaderProgramv)
+#define glCreateSyncFromCLeventARB MANGLE(CreateSyncFromCLeventARB)
+#define glCullFace MANGLE(CullFace)
+#define glCullParameterdvEXT MANGLE(CullParameterdvEXT)
+#define glCullParameterfvEXT MANGLE(CullParameterfvEXT)
+#define glCurrentPaletteMatrixARB MANGLE(CurrentPaletteMatrixARB)
+#define glDebugMessageCallbackAMD MANGLE(DebugMessageCallbackAMD)
+#define glDebugMessageCallbackARB MANGLE(DebugMessageCallbackARB)
+#define glDebugMessageControlARB MANGLE(DebugMessageControlARB)
+#define glDebugMessageEnableAMD MANGLE(DebugMessageEnableAMD)
+#define glDebugMessageInsertAMD MANGLE(DebugMessageInsertAMD)
+#define glDebugMessageInsertARB MANGLE(DebugMessageInsertARB)
+#define glDeformationMap3dSGIX MANGLE(DeformationMap3dSGIX)
+#define glDeformationMap3fSGIX MANGLE(DeformationMap3fSGIX)
+#define glDeformSGIX MANGLE(DeformSGIX)
+#define glDeleteAsyncMarkersSGIX MANGLE(DeleteAsyncMarkersSGIX)
+#define glDeleteBuffersARB MANGLE(DeleteBuffersARB)
+#define glDeleteBuffers MANGLE(DeleteBuffers)
+#define glDeleteFencesAPPLE MANGLE(DeleteFencesAPPLE)
+#define glDeleteFencesNV MANGLE(DeleteFencesNV)
+#define glDeleteFragmentShaderATI MANGLE(DeleteFragmentShaderATI)
+#define glDeleteFramebuffersEXT MANGLE(DeleteFramebuffersEXT)
+#define glDeleteFramebuffers MANGLE(DeleteFramebuffers)
+#define glDeleteLists MANGLE(DeleteLists)
+#define glDeleteNamedStringARB MANGLE(DeleteNamedStringARB)
+#define glDeleteNamesAMD MANGLE(DeleteNamesAMD)
+#define glDeleteObjectARB MANGLE(DeleteObjectARB)
+#define glDeleteOcclusionQueriesNV MANGLE(DeleteOcclusionQueriesNV)
+#define glDeletePerfMonitorsAMD MANGLE(DeletePerfMonitorsAMD)
+#define glDeleteProgram MANGLE(DeleteProgram)
+#define glDeleteProgramPipelines MANGLE(DeleteProgramPipelines)
+#define glDeleteProgramsARB MANGLE(DeleteProgramsARB)
+#define glDeleteProgramsNV MANGLE(DeleteProgramsNV)
+#define glDeleteQueriesARB MANGLE(DeleteQueriesARB)
+#define glDeleteQueries MANGLE(DeleteQueries)
+#define glDeleteRenderbuffersEXT MANGLE(DeleteRenderbuffersEXT)
+#define glDeleteRenderbuffers MANGLE(DeleteRenderbuffers)
+#define glDeleteSamplers MANGLE(DeleteSamplers)
+#define glDeleteShader MANGLE(DeleteShader)
+#define glDeleteSync MANGLE(DeleteSync)
+#define glDeleteTexturesEXT MANGLE(DeleteTexturesEXT)
+#define glDeleteTextures MANGLE(DeleteTextures)
+#define glDeleteTransformFeedbacks MANGLE(DeleteTransformFeedbacks)
+#define glDeleteTransformFeedbacksNV MANGLE(DeleteTransformFeedbacksNV)
+#define glDeleteVertexArraysAPPLE MANGLE(DeleteVertexArraysAPPLE)
+#define glDeleteVertexArrays MANGLE(DeleteVertexArrays)
+#define glDeleteVertexShaderEXT MANGLE(DeleteVertexShaderEXT)
+#define glDepthBoundsdNV MANGLE(DepthBoundsdNV)
+#define glDepthBoundsEXT MANGLE(DepthBoundsEXT)
+#define glDepthFunc MANGLE(DepthFunc)
+#define glDepthMask MANGLE(DepthMask)
+#define glDepthRangeArrayv MANGLE(DepthRangeArrayv)
+#define glDepthRangedNV MANGLE(DepthRangedNV)
+#define glDepthRangef MANGLE(DepthRangef)
+#define glDepthRangeIndexed MANGLE(DepthRangeIndexed)
+#define glDepthRange MANGLE(DepthRange)
+#define glDetachObjectARB MANGLE(DetachObjectARB)
+#define glDetachShader MANGLE(DetachShader)
+#define glDetailTexFuncSGIS MANGLE(DetailTexFuncSGIS)
+#define glDisableClientStateIndexedEXT MANGLE(DisableClientStateIndexedEXT)
+#define glDisableClientState MANGLE(DisableClientState)
+#define glDisablei MANGLE(Disablei)
+#define glDisableIndexedEXT MANGLE(DisableIndexedEXT)
+#define glDisable MANGLE(Disable)
+#define glDisableVariantClientStateEXT MANGLE(DisableVariantClientStateEXT)
+#define glDisableVertexAttribAPPLE MANGLE(DisableVertexAttribAPPLE)
+#define glDisableVertexAttribArrayARB MANGLE(DisableVertexAttribArrayARB)
+#define glDisableVertexAttribArray MANGLE(DisableVertexAttribArray)
+#define glDrawArraysEXT MANGLE(DrawArraysEXT)
+#define glDrawArraysIndirect MANGLE(DrawArraysIndirect)
+#define glDrawArraysInstancedARB MANGLE(DrawArraysInstancedARB)
+#define glDrawArraysInstancedEXT MANGLE(DrawArraysInstancedEXT)
+#define glDrawArraysInstanced MANGLE(DrawArraysInstanced)
+#define glDrawArrays MANGLE(DrawArrays)
+#define glDrawBuffer MANGLE(DrawBuffer)
+#define glDrawBuffersARB MANGLE(DrawBuffersARB)
+#define glDrawBuffersATI MANGLE(DrawBuffersATI)
+#define glDrawBuffers MANGLE(DrawBuffers)
+#define glDrawElementArrayAPPLE MANGLE(DrawElementArrayAPPLE)
+#define glDrawElementArrayATI MANGLE(DrawElementArrayATI)
+#define glDrawElementsBaseVertex MANGLE(DrawElementsBaseVertex)
+#define glDrawElementsIndirect MANGLE(DrawElementsIndirect)
+#define glDrawElementsInstancedARB MANGLE(DrawElementsInstancedARB)
+#define glDrawElementsInstancedBaseVertex MANGLE(DrawElementsInstancedBaseVertex)
+#define glDrawElementsInstancedEXT MANGLE(DrawElementsInstancedEXT)
+#define glDrawElementsInstanced MANGLE(DrawElementsInstanced)
+#define glDrawElements MANGLE(DrawElements)
+#define glDrawMeshArraysSUN MANGLE(DrawMeshArraysSUN)
+#define glDrawPixels MANGLE(DrawPixels)
+#define glDrawRangeElementArrayAPPLE MANGLE(DrawRangeElementArrayAPPLE)
+#define glDrawRangeElementArrayATI MANGLE(DrawRangeElementArrayATI)
+#define glDrawRangeElementsBaseVertex MANGLE(DrawRangeElementsBaseVertex)
+#define glDrawRangeElementsEXT MANGLE(DrawRangeElementsEXT)
+#define glDrawRangeElements MANGLE(DrawRangeElements)
+#define glDrawTransformFeedback MANGLE(DrawTransformFeedback)
+#define glDrawTransformFeedbackNV MANGLE(DrawTransformFeedbackNV)
+#define glDrawTransformFeedbackStream MANGLE(DrawTransformFeedbackStream)
+#define glEdgeFlagFormatNV MANGLE(EdgeFlagFormatNV)
+#define glEdgeFlag MANGLE(EdgeFlag)
+#define glEdgeFlagPointerEXT MANGLE(EdgeFlagPointerEXT)
+#define glEdgeFlagPointerListIBM MANGLE(EdgeFlagPointerListIBM)
+#define glEdgeFlagPointer MANGLE(EdgeFlagPointer)
+#define glEdgeFlagv MANGLE(EdgeFlagv)
+#define glEGLImageTargetRenderbufferStorageOES MANGLE(EGLImageTargetRenderbufferStorageOES)
+#define glEGLImageTargetTexture2DOES MANGLE(EGLImageTargetTexture2DOES)
+#define glElementPointerAPPLE MANGLE(ElementPointerAPPLE)
+#define glElementPointerATI MANGLE(ElementPointerATI)
+#define glEnableClientStateIndexedEXT MANGLE(EnableClientStateIndexedEXT)
+#define glEnableClientState MANGLE(EnableClientState)
+#define glEnablei MANGLE(Enablei)
+#define glEnableIndexedEXT MANGLE(EnableIndexedEXT)
+#define glEnable MANGLE(Enable)
+#define glEnableVariantClientStateEXT MANGLE(EnableVariantClientStateEXT)
+#define glEnableVertexAttribAPPLE MANGLE(EnableVertexAttribAPPLE)
+#define glEnableVertexAttribArrayARB MANGLE(EnableVertexAttribArrayARB)
+#define glEnableVertexAttribArray MANGLE(EnableVertexAttribArray)
+#define glEndConditionalRender MANGLE(EndConditionalRender)
+#define glEndConditionalRenderNV MANGLE(EndConditionalRenderNV)
+#define glEndFragmentShaderATI MANGLE(EndFragmentShaderATI)
+#define glEndList MANGLE(EndList)
+#define glEnd MANGLE(End)
+#define glEndOcclusionQueryNV MANGLE(EndOcclusionQueryNV)
+#define glEndPerfMonitorAMD MANGLE(EndPerfMonitorAMD)
+#define glEndQueryARB MANGLE(EndQueryARB)
+#define glEndQueryIndexed MANGLE(EndQueryIndexed)
+#define glEndQuery MANGLE(EndQuery)
+#define glEndTransformFeedbackEXT MANGLE(EndTransformFeedbackEXT)
+#define glEndTransformFeedback MANGLE(EndTransformFeedback)
+#define glEndTransformFeedbackNV MANGLE(EndTransformFeedbackNV)
+#define glEndVertexShaderEXT MANGLE(EndVertexShaderEXT)
+#define glEndVideoCaptureNV MANGLE(EndVideoCaptureNV)
+#define glEvalCoord1d MANGLE(EvalCoord1d)
+#define glEvalCoord1dv MANGLE(EvalCoord1dv)
+#define glEvalCoord1f MANGLE(EvalCoord1f)
+#define glEvalCoord1fv MANGLE(EvalCoord1fv)
+#define glEvalCoord2d MANGLE(EvalCoord2d)
+#define glEvalCoord2dv MANGLE(EvalCoord2dv)
+#define glEvalCoord2f MANGLE(EvalCoord2f)
+#define glEvalCoord2fv MANGLE(EvalCoord2fv)
+#define glEvalMapsNV MANGLE(EvalMapsNV)
+#define glEvalMesh1 MANGLE(EvalMesh1)
+#define glEvalMesh2 MANGLE(EvalMesh2)
+#define glEvalPoint1 MANGLE(EvalPoint1)
+#define glEvalPoint2 MANGLE(EvalPoint2)
+#define glExecuteProgramNV MANGLE(ExecuteProgramNV)
+#define glExtractComponentEXT MANGLE(ExtractComponentEXT)
+#define glFeedbackBuffer MANGLE(FeedbackBuffer)
+#define glFenceSync MANGLE(FenceSync)
+#define glFinalCombinerInputNV MANGLE(FinalCombinerInputNV)
+#define glFinishAsyncSGIX MANGLE(FinishAsyncSGIX)
+#define glFinishFenceAPPLE MANGLE(FinishFenceAPPLE)
+#define glFinishFenceNV MANGLE(FinishFenceNV)
+#define glFinish MANGLE(Finish)
+#define glFinishObjectAPPLE MANGLE(FinishObjectAPPLE)
+#define glFinishTextureSUNX MANGLE(FinishTextureSUNX)
+#define glFlush MANGLE(Flush)
+#define glFlushMappedBufferRangeAPPLE MANGLE(FlushMappedBufferRangeAPPLE)
+#define glFlushMappedBufferRange MANGLE(FlushMappedBufferRange)
+#define glFlushMappedNamedBufferRangeEXT MANGLE(FlushMappedNamedBufferRangeEXT)
+#define glFlushPixelDataRangeNV MANGLE(FlushPixelDataRangeNV)
+#define glFlushRasterSGIX MANGLE(FlushRasterSGIX)
+#define glFlushVertexArrayRangeAPPLE MANGLE(FlushVertexArrayRangeAPPLE)
+#define glFlushVertexArrayRangeNV MANGLE(FlushVertexArrayRangeNV)
+#define glFogCoorddEXT MANGLE(FogCoorddEXT)
+#define glFogCoordd MANGLE(FogCoordd)
+#define glFogCoorddvEXT MANGLE(FogCoorddvEXT)
+#define glFogCoorddv MANGLE(FogCoorddv)
+#define glFogCoordfEXT MANGLE(FogCoordfEXT)
+#define glFogCoordf MANGLE(FogCoordf)
+#define glFogCoordFormatNV MANGLE(FogCoordFormatNV)
+#define glFogCoordfvEXT MANGLE(FogCoordfvEXT)
+#define glFogCoordfv MANGLE(FogCoordfv)
+#define glFogCoordhNV MANGLE(FogCoordhNV)
+#define glFogCoordhvNV MANGLE(FogCoordhvNV)
+#define glFogCoordPointerEXT MANGLE(FogCoordPointerEXT)
+#define glFogCoordPointerListIBM MANGLE(FogCoordPointerListIBM)
+#define glFogCoordPointer MANGLE(FogCoordPointer)
+#define glFogf MANGLE(Fogf)
+#define glFogFuncSGIS MANGLE(FogFuncSGIS)
+#define glFogfv MANGLE(Fogfv)
+#define glFogi MANGLE(Fogi)
+#define glFogiv MANGLE(Fogiv)
+#define glFragmentColorMaterialSGIX MANGLE(FragmentColorMaterialSGIX)
+#define glFragmentLightfSGIX MANGLE(FragmentLightfSGIX)
+#define glFragmentLightfvSGIX MANGLE(FragmentLightfvSGIX)
+#define glFragmentLightiSGIX MANGLE(FragmentLightiSGIX)
+#define glFragmentLightivSGIX MANGLE(FragmentLightivSGIX)
+#define glFragmentLightModelfSGIX MANGLE(FragmentLightModelfSGIX)
+#define glFragmentLightModelfvSGIX MANGLE(FragmentLightModelfvSGIX)
+#define glFragmentLightModeliSGIX MANGLE(FragmentLightModeliSGIX)
+#define glFragmentLightModelivSGIX MANGLE(FragmentLightModelivSGIX)
+#define glFragmentMaterialfSGIX MANGLE(FragmentMaterialfSGIX)
+#define glFragmentMaterialfvSGIX MANGLE(FragmentMaterialfvSGIX)
+#define glFragmentMaterialiSGIX MANGLE(FragmentMaterialiSGIX)
+#define glFragmentMaterialivSGIX MANGLE(FragmentMaterialivSGIX)
+#define glFramebufferDrawBufferEXT MANGLE(FramebufferDrawBufferEXT)
+#define glFramebufferDrawBuffersEXT MANGLE(FramebufferDrawBuffersEXT)
+#define glFramebufferReadBufferEXT MANGLE(FramebufferReadBufferEXT)
+#define glFramebufferRenderbufferEXT MANGLE(FramebufferRenderbufferEXT)
+#define glFramebufferRenderbuffer MANGLE(FramebufferRenderbuffer)
+#define glFramebufferTexture1DEXT MANGLE(FramebufferTexture1DEXT)
+#define glFramebufferTexture1D MANGLE(FramebufferTexture1D)
+#define glFramebufferTexture2DEXT MANGLE(FramebufferTexture2DEXT)
+#define glFramebufferTexture2D MANGLE(FramebufferTexture2D)
+#define glFramebufferTexture3DEXT MANGLE(FramebufferTexture3DEXT)
+#define glFramebufferTexture3D MANGLE(FramebufferTexture3D)
+#define glFramebufferTextureARB MANGLE(FramebufferTextureARB)
+#define glFramebufferTextureEXT MANGLE(FramebufferTextureEXT)
+#define glFramebufferTextureFaceARB MANGLE(FramebufferTextureFaceARB)
+#define glFramebufferTextureFaceEXT MANGLE(FramebufferTextureFaceEXT)
+#define glFramebufferTextureLayerARB MANGLE(FramebufferTextureLayerARB)
+#define glFramebufferTextureLayerEXT MANGLE(FramebufferTextureLayerEXT)
+#define glFramebufferTextureLayer MANGLE(FramebufferTextureLayer)
+#define glFramebufferTexture MANGLE(FramebufferTexture)
+#define glFrameTerminatorGREMEDY MANGLE(FrameTerminatorGREMEDY)
+#define glFrameZoomSGIX MANGLE(FrameZoomSGIX)
+#define glFreeObjectBufferATI MANGLE(FreeObjectBufferATI)
+#define glFrontFace MANGLE(FrontFace)
+#define glFrustum MANGLE(Frustum)
+#define glGenAsyncMarkersSGIX MANGLE(GenAsyncMarkersSGIX)
+#define glGenBuffersARB MANGLE(GenBuffersARB)
+#define glGenBuffers MANGLE(GenBuffers)
+#define glGenerateMipmapEXT MANGLE(GenerateMipmapEXT)
+#define glGenerateMipmap MANGLE(GenerateMipmap)
+#define glGenerateMultiTexMipmapEXT MANGLE(GenerateMultiTexMipmapEXT)
+#define glGenerateTextureMipmapEXT MANGLE(GenerateTextureMipmapEXT)
+#define glGenFencesAPPLE MANGLE(GenFencesAPPLE)
+#define glGenFencesNV MANGLE(GenFencesNV)
+#define glGenFragmentShadersATI MANGLE(GenFragmentShadersATI)
+#define glGenFramebuffersEXT MANGLE(GenFramebuffersEXT)
+#define glGenFramebuffers MANGLE(GenFramebuffers)
+#define glGenLists MANGLE(GenLists)
+#define glGenNamesAMD MANGLE(GenNamesAMD)
+#define glGenOcclusionQueriesNV MANGLE(GenOcclusionQueriesNV)
+#define glGenPerfMonitorsAMD MANGLE(GenPerfMonitorsAMD)
+#define glGenProgramPipelines MANGLE(GenProgramPipelines)
+#define glGenProgramsARB MANGLE(GenProgramsARB)
+#define glGenProgramsNV MANGLE(GenProgramsNV)
+#define glGenQueriesARB MANGLE(GenQueriesARB)
+#define glGenQueries MANGLE(GenQueries)
+#define glGenRenderbuffersEXT MANGLE(GenRenderbuffersEXT)
+#define glGenRenderbuffers MANGLE(GenRenderbuffers)
+#define glGenSamplers MANGLE(GenSamplers)
+#define glGenSymbolsEXT MANGLE(GenSymbolsEXT)
+#define glGenTexturesEXT MANGLE(GenTexturesEXT)
+#define glGenTextures MANGLE(GenTextures)
+#define glGenTransformFeedbacks MANGLE(GenTransformFeedbacks)
+#define glGenTransformFeedbacksNV MANGLE(GenTransformFeedbacksNV)
+#define glGenVertexArraysAPPLE MANGLE(GenVertexArraysAPPLE)
+#define glGenVertexArrays MANGLE(GenVertexArrays)
+#define glGenVertexShadersEXT MANGLE(GenVertexShadersEXT)
+#define glGetActiveAttribARB MANGLE(GetActiveAttribARB)
+#define glGetActiveAttrib MANGLE(GetActiveAttrib)
+#define glGetActiveSubroutineName MANGLE(GetActiveSubroutineName)
+#define glGetActiveSubroutineUniformiv MANGLE(GetActiveSubroutineUniformiv)
+#define glGetActiveSubroutineUniformName MANGLE(GetActiveSubroutineUniformName)
+#define glGetActiveUniformARB MANGLE(GetActiveUniformARB)
+#define glGetActiveUniformBlockiv MANGLE(GetActiveUniformBlockiv)
+#define glGetActiveUniformBlockName MANGLE(GetActiveUniformBlockName)
+#define glGetActiveUniform MANGLE(GetActiveUniform)
+#define glGetActiveUniformName MANGLE(GetActiveUniformName)
+#define glGetActiveUniformsiv MANGLE(GetActiveUniformsiv)
+#define glGetActiveVaryingNV MANGLE(GetActiveVaryingNV)
+#define glGetArrayObjectfvATI MANGLE(GetArrayObjectfvATI)
+#define glGetArrayObjectivATI MANGLE(GetArrayObjectivATI)
+#define glGetAttachedObjectsARB MANGLE(GetAttachedObjectsARB)
+#define glGetAttachedShaders MANGLE(GetAttachedShaders)
+#define glGetAttribLocationARB MANGLE(GetAttribLocationARB)
+#define glGetAttribLocation MANGLE(GetAttribLocation)
+#define glGetBooleanIndexedvEXT MANGLE(GetBooleanIndexedvEXT)
+#define glGetBooleani_v MANGLE(GetBooleani_v)
+#define glGetBooleanv MANGLE(GetBooleanv)
+#define glGetBufferParameteri64v MANGLE(GetBufferParameteri64v)
+#define glGetBufferParameterivARB MANGLE(GetBufferParameterivARB)
+#define glGetBufferParameteriv MANGLE(GetBufferParameteriv)
+#define glGetBufferParameterui64vNV MANGLE(GetBufferParameterui64vNV)
+#define glGetBufferPointervARB MANGLE(GetBufferPointervARB)
+#define glGetBufferPointerv MANGLE(GetBufferPointerv)
+#define glGetBufferSubDataARB MANGLE(GetBufferSubDataARB)
+#define glGetBufferSubData MANGLE(GetBufferSubData)
+#define glGetClipPlane MANGLE(GetClipPlane)
+#define glGetColorTableEXT MANGLE(GetColorTableEXT)
+#define glGetColorTable MANGLE(GetColorTable)
+#define glGetColorTableParameterfvEXT MANGLE(GetColorTableParameterfvEXT)
+#define glGetColorTableParameterfv MANGLE(GetColorTableParameterfv)
+#define glGetColorTableParameterfvSGI MANGLE(GetColorTableParameterfvSGI)
+#define glGetColorTableParameterivEXT MANGLE(GetColorTableParameterivEXT)
+#define glGetColorTableParameteriv MANGLE(GetColorTableParameteriv)
+#define glGetColorTableParameterivSGI MANGLE(GetColorTableParameterivSGI)
+#define glGetColorTableSGI MANGLE(GetColorTableSGI)
+#define glGetCombinerInputParameterfvNV MANGLE(GetCombinerInputParameterfvNV)
+#define glGetCombinerInputParameterivNV MANGLE(GetCombinerInputParameterivNV)
+#define glGetCombinerOutputParameterfvNV MANGLE(GetCombinerOutputParameterfvNV)
+#define glGetCombinerOutputParameterivNV MANGLE(GetCombinerOutputParameterivNV)
+#define glGetCombinerStageParameterfvNV MANGLE(GetCombinerStageParameterfvNV)
+#define glGetCompressedMultiTexImageEXT MANGLE(GetCompressedMultiTexImageEXT)
+#define glGetCompressedTexImageARB MANGLE(GetCompressedTexImageARB)
+#define glGetCompressedTexImage MANGLE(GetCompressedTexImage)
+#define glGetCompressedTextureImageEXT MANGLE(GetCompressedTextureImageEXT)
+#define glGetConvolutionFilterEXT MANGLE(GetConvolutionFilterEXT)
+#define glGetConvolutionFilter MANGLE(GetConvolutionFilter)
+#define glGetConvolutionParameterfvEXT MANGLE(GetConvolutionParameterfvEXT)
+#define glGetConvolutionParameterfv MANGLE(GetConvolutionParameterfv)
+#define glGetConvolutionParameterivEXT MANGLE(GetConvolutionParameterivEXT)
+#define glGetConvolutionParameteriv MANGLE(GetConvolutionParameteriv)
+#define glGetDebugLogLengthMESA MANGLE(GetDebugLogLengthMESA)
+#define glGetDebugLogMESA MANGLE(GetDebugLogMESA)
+#define glGetDebugMessageLogAMD MANGLE(GetDebugMessageLogAMD)
+#define glGetDebugMessageLogARB MANGLE(GetDebugMessageLogARB)
+#define glGetDetailTexFuncSGIS MANGLE(GetDetailTexFuncSGIS)
+#define glGetDoubleIndexedvEXT MANGLE(GetDoubleIndexedvEXT)
+#define glGetDoublei_v MANGLE(GetDoublei_v)
+#define glGetDoublev MANGLE(GetDoublev)
+#define glGetError MANGLE(GetError)
+#define glGetFenceivNV MANGLE(GetFenceivNV)
+#define glGetFinalCombinerInputParameterfvNV MANGLE(GetFinalCombinerInputParameterfvNV)
+#define glGetFinalCombinerInputParameterivNV MANGLE(GetFinalCombinerInputParameterivNV)
+#define glGetFloatIndexedvEXT MANGLE(GetFloatIndexedvEXT)
+#define glGetFloati_v MANGLE(GetFloati_v)
+#define glGetFloatv MANGLE(GetFloatv)
+#define glGetFogFuncSGIS MANGLE(GetFogFuncSGIS)
+#define glGetFragDataIndex MANGLE(GetFragDataIndex)
+#define glGetFragDataLocationEXT MANGLE(GetFragDataLocationEXT)
+#define glGetFragDataLocation MANGLE(GetFragDataLocation)
+#define glGetFragmentLightfvSGIX MANGLE(GetFragmentLightfvSGIX)
+#define glGetFragmentLightivSGIX MANGLE(GetFragmentLightivSGIX)
+#define glGetFragmentMaterialfvSGIX MANGLE(GetFragmentMaterialfvSGIX)
+#define glGetFragmentMaterialivSGIX MANGLE(GetFragmentMaterialivSGIX)
+#define glGetFramebufferAttachmentParameterivEXT MANGLE(GetFramebufferAttachmentParameterivEXT)
+#define glGetFramebufferAttachmentParameteriv MANGLE(GetFramebufferAttachmentParameteriv)
+#define glGetFramebufferParameterivEXT MANGLE(GetFramebufferParameterivEXT)
+#define glGetGraphicsResetStatusARB MANGLE(GetGraphicsResetStatusARB)
+#define glGetHandleARB MANGLE(GetHandleARB)
+#define glGetHistogramEXT MANGLE(GetHistogramEXT)
+#define glGetHistogram MANGLE(GetHistogram)
+#define glGetHistogramParameterfvEXT MANGLE(GetHistogramParameterfvEXT)
+#define glGetHistogramParameterfv MANGLE(GetHistogramParameterfv)
+#define glGetHistogramParameterivEXT MANGLE(GetHistogramParameterivEXT)
+#define glGetHistogramParameteriv MANGLE(GetHistogramParameteriv)
+#define glGetImageTransformParameterfvHP MANGLE(GetImageTransformParameterfvHP)
+#define glGetImageTransformParameterivHP MANGLE(GetImageTransformParameterivHP)
+#define glGetInfoLogARB MANGLE(GetInfoLogARB)
+#define glGetInstrumentsSGIX MANGLE(GetInstrumentsSGIX)
+#define glGetInteger64i_v MANGLE(GetInteger64i_v)
+#define glGetInteger64v MANGLE(GetInteger64v)
+#define glGetIntegerIndexedvEXT MANGLE(GetIntegerIndexedvEXT)
+#define glGetIntegeri_v MANGLE(GetIntegeri_v)
+#define glGetIntegerui64i_vNV MANGLE(GetIntegerui64i_vNV)
+#define glGetIntegerui64vNV MANGLE(GetIntegerui64vNV)
+#define glGetIntegerv MANGLE(GetIntegerv)
+#define glGetInvariantBooleanvEXT MANGLE(GetInvariantBooleanvEXT)
+#define glGetInvariantFloatvEXT MANGLE(GetInvariantFloatvEXT)
+#define glGetInvariantIntegervEXT MANGLE(GetInvariantIntegervEXT)
+#define glGetLightfv MANGLE(GetLightfv)
+#define glGetLightiv MANGLE(GetLightiv)
+#define glGetListParameterfvSGIX MANGLE(GetListParameterfvSGIX)
+#define glGetListParameterivSGIX MANGLE(GetListParameterivSGIX)
+#define glGetLocalConstantBooleanvEXT MANGLE(GetLocalConstantBooleanvEXT)
+#define glGetLocalConstantFloatvEXT MANGLE(GetLocalConstantFloatvEXT)
+#define glGetLocalConstantIntegervEXT MANGLE(GetLocalConstantIntegervEXT)
+#define glGetMapAttribParameterfvNV MANGLE(GetMapAttribParameterfvNV)
+#define glGetMapAttribParameterivNV MANGLE(GetMapAttribParameterivNV)
+#define glGetMapControlPointsNV MANGLE(GetMapControlPointsNV)
+#define glGetMapdv MANGLE(GetMapdv)
+#define glGetMapfv MANGLE(GetMapfv)
+#define glGetMapiv MANGLE(GetMapiv)
+#define glGetMapParameterfvNV MANGLE(GetMapParameterfvNV)
+#define glGetMapParameterivNV MANGLE(GetMapParameterivNV)
+#define glGetMaterialfv MANGLE(GetMaterialfv)
+#define glGetMaterialiv MANGLE(GetMaterialiv)
+#define glGetMinmaxEXT MANGLE(GetMinmaxEXT)
+#define glGetMinmax MANGLE(GetMinmax)
+#define glGetMinmaxParameterfvEXT MANGLE(GetMinmaxParameterfvEXT)
+#define glGetMinmaxParameterfv MANGLE(GetMinmaxParameterfv)
+#define glGetMinmaxParameterivEXT MANGLE(GetMinmaxParameterivEXT)
+#define glGetMinmaxParameteriv MANGLE(GetMinmaxParameteriv)
+#define glGetMultisamplefv MANGLE(GetMultisamplefv)
+#define glGetMultisamplefvNV MANGLE(GetMultisamplefvNV)
+#define glGetMultiTexEnvfvEXT MANGLE(GetMultiTexEnvfvEXT)
+#define glGetMultiTexEnvivEXT MANGLE(GetMultiTexEnvivEXT)
+#define glGetMultiTexGendvEXT MANGLE(GetMultiTexGendvEXT)
+#define glGetMultiTexGenfvEXT MANGLE(GetMultiTexGenfvEXT)
+#define glGetMultiTexGenivEXT MANGLE(GetMultiTexGenivEXT)
+#define glGetMultiTexImageEXT MANGLE(GetMultiTexImageEXT)
+#define glGetMultiTexLevelParameterfvEXT MANGLE(GetMultiTexLevelParameterfvEXT)
+#define glGetMultiTexLevelParameterivEXT MANGLE(GetMultiTexLevelParameterivEXT)
+#define glGetMultiTexParameterfvEXT MANGLE(GetMultiTexParameterfvEXT)
+#define glGetMultiTexParameterIivEXT MANGLE(GetMultiTexParameterIivEXT)
+#define glGetMultiTexParameterIuivEXT MANGLE(GetMultiTexParameterIuivEXT)
+#define glGetMultiTexParameterivEXT MANGLE(GetMultiTexParameterivEXT)
+#define glGetNamedBufferParameterivEXT MANGLE(GetNamedBufferParameterivEXT)
+#define glGetNamedBufferParameterui64vNV MANGLE(GetNamedBufferParameterui64vNV)
+#define glGetNamedBufferPointervEXT MANGLE(GetNamedBufferPointervEXT)
+#define glGetNamedBufferSubDataEXT MANGLE(GetNamedBufferSubDataEXT)
+#define glGetNamedFramebufferAttachmentParameterivEXT MANGLE(GetNamedFramebufferAttachmentParameterivEXT)
+#define glGetNamedProgramivEXT MANGLE(GetNamedProgramivEXT)
+#define glGetNamedProgramLocalParameterdvEXT MANGLE(GetNamedProgramLocalParameterdvEXT)
+#define glGetNamedProgramLocalParameterfvEXT MANGLE(GetNamedProgramLocalParameterfvEXT)
+#define glGetNamedProgramLocalParameterIivEXT MANGLE(GetNamedProgramLocalParameterIivEXT)
+#define glGetNamedProgramLocalParameterIuivEXT MANGLE(GetNamedProgramLocalParameterIuivEXT)
+#define glGetNamedProgramStringEXT MANGLE(GetNamedProgramStringEXT)
+#define glGetNamedRenderbufferParameterivEXT MANGLE(GetNamedRenderbufferParameterivEXT)
+#define glGetNamedStringARB MANGLE(GetNamedStringARB)
+#define glGetNamedStringivARB MANGLE(GetNamedStringivARB)
+#define glGetnColorTableARB MANGLE(GetnColorTableARB)
+#define glGetnCompressedTexImageARB MANGLE(GetnCompressedTexImageARB)
+#define glGetnConvolutionFilterARB MANGLE(GetnConvolutionFilterARB)
+#define glGetnHistogramARB MANGLE(GetnHistogramARB)
+#define glGetnMapdvARB MANGLE(GetnMapdvARB)
+#define glGetnMapfvARB MANGLE(GetnMapfvARB)
+#define glGetnMapivARB MANGLE(GetnMapivARB)
+#define glGetnMinmaxARB MANGLE(GetnMinmaxARB)
+#define glGetnPixelMapfvARB MANGLE(GetnPixelMapfvARB)
+#define glGetnPixelMapuivARB MANGLE(GetnPixelMapuivARB)
+#define glGetnPixelMapusvARB MANGLE(GetnPixelMapusvARB)
+#define glGetnPolygonStippleARB MANGLE(GetnPolygonStippleARB)
+#define glGetnSeparableFilterARB MANGLE(GetnSeparableFilterARB)
+#define glGetnTexImageARB MANGLE(GetnTexImageARB)
+#define glGetnUniformdvARB MANGLE(GetnUniformdvARB)
+#define glGetnUniformfvARB MANGLE(GetnUniformfvARB)
+#define glGetnUniformivARB MANGLE(GetnUniformivARB)
+#define glGetnUniformuivARB MANGLE(GetnUniformuivARB)
+#define glGetObjectBufferfvATI MANGLE(GetObjectBufferfvATI)
+#define glGetObjectBufferivATI MANGLE(GetObjectBufferivATI)
+#define glGetObjectParameterfvARB MANGLE(GetObjectParameterfvARB)
+#define glGetObjectParameterivAPPLE MANGLE(GetObjectParameterivAPPLE)
+#define glGetObjectParameterivARB MANGLE(GetObjectParameterivARB)
+#define glGetOcclusionQueryivNV MANGLE(GetOcclusionQueryivNV)
+#define glGetOcclusionQueryuivNV MANGLE(GetOcclusionQueryuivNV)
+#define glGetPerfMonitorCounterDataAMD MANGLE(GetPerfMonitorCounterDataAMD)
+#define glGetPerfMonitorCounterInfoAMD MANGLE(GetPerfMonitorCounterInfoAMD)
+#define glGetPerfMonitorCountersAMD MANGLE(GetPerfMonitorCountersAMD)
+#define glGetPerfMonitorCounterStringAMD MANGLE(GetPerfMonitorCounterStringAMD)
+#define glGetPerfMonitorGroupsAMD MANGLE(GetPerfMonitorGroupsAMD)
+#define glGetPerfMonitorGroupStringAMD MANGLE(GetPerfMonitorGroupStringAMD)
+#define glGetPixelMapfv MANGLE(GetPixelMapfv)
+#define glGetPixelMapuiv MANGLE(GetPixelMapuiv)
+#define glGetPixelMapusv MANGLE(GetPixelMapusv)
+#define glGetPixelTexGenParameterfvSGIS MANGLE(GetPixelTexGenParameterfvSGIS)
+#define glGetPixelTexGenParameterivSGIS MANGLE(GetPixelTexGenParameterivSGIS)
+#define glGetPointerIndexedvEXT MANGLE(GetPointerIndexedvEXT)
+#define glGetPointervEXT MANGLE(GetPointervEXT)
+#define glGetPointerv MANGLE(GetPointerv)
+#define glGetPolygonStipple MANGLE(GetPolygonStipple)
+#define glGetProgramBinary MANGLE(GetProgramBinary)
+#define glGetProgramEnvParameterdvARB MANGLE(GetProgramEnvParameterdvARB)
+#define glGetProgramEnvParameterfvARB MANGLE(GetProgramEnvParameterfvARB)
+#define glGetProgramEnvParameterIivNV MANGLE(GetProgramEnvParameterIivNV)
+#define glGetProgramEnvParameterIuivNV MANGLE(GetProgramEnvParameterIuivNV)
+#define glGetProgramInfoLog MANGLE(GetProgramInfoLog)
+#define glGetProgramivARB MANGLE(GetProgramivARB)
+#define glGetProgramiv MANGLE(GetProgramiv)
+#define glGetProgramivNV MANGLE(GetProgramivNV)
+#define glGetProgramLocalParameterdvARB MANGLE(GetProgramLocalParameterdvARB)
+#define glGetProgramLocalParameterfvARB MANGLE(GetProgramLocalParameterfvARB)
+#define glGetProgramLocalParameterIivNV MANGLE(GetProgramLocalParameterIivNV)
+#define glGetProgramLocalParameterIuivNV MANGLE(GetProgramLocalParameterIuivNV)
+#define glGetProgramNamedParameterdvNV MANGLE(GetProgramNamedParameterdvNV)
+#define glGetProgramNamedParameterfvNV MANGLE(GetProgramNamedParameterfvNV)
+#define glGetProgramParameterdvNV MANGLE(GetProgramParameterdvNV)
+#define glGetProgramParameterfvNV MANGLE(GetProgramParameterfvNV)
+#define glGetProgramPipelineInfoLog MANGLE(GetProgramPipelineInfoLog)
+#define glGetProgramPipelineiv MANGLE(GetProgramPipelineiv)
+#define glGetProgramRegisterfvMESA MANGLE(GetProgramRegisterfvMESA)
+#define glGetProgramStageiv MANGLE(GetProgramStageiv)
+#define glGetProgramStringARB MANGLE(GetProgramStringARB)
+#define glGetProgramStringNV MANGLE(GetProgramStringNV)
+#define glGetProgramSubroutineParameteruivNV MANGLE(GetProgramSubroutineParameteruivNV)
+#define glGetQueryIndexediv MANGLE(GetQueryIndexediv)
+#define glGetQueryivARB MANGLE(GetQueryivARB)
+#define glGetQueryiv MANGLE(GetQueryiv)
+#define glGetQueryObjecti64vEXT MANGLE(GetQueryObjecti64vEXT)
+#define glGetQueryObjecti64v MANGLE(GetQueryObjecti64v)
+#define glGetQueryObjectivARB MANGLE(GetQueryObjectivARB)
+#define glGetQueryObjectiv MANGLE(GetQueryObjectiv)
+#define glGetQueryObjectui64vEXT MANGLE(GetQueryObjectui64vEXT)
+#define glGetQueryObjectui64v MANGLE(GetQueryObjectui64v)
+#define glGetQueryObjectuivARB MANGLE(GetQueryObjectuivARB)
+#define glGetQueryObjectuiv MANGLE(GetQueryObjectuiv)
+#define glGetRenderbufferParameterivEXT MANGLE(GetRenderbufferParameterivEXT)
+#define glGetRenderbufferParameteriv MANGLE(GetRenderbufferParameteriv)
+#define glGetSamplerParameterfv MANGLE(GetSamplerParameterfv)
+#define glGetSamplerParameterIiv MANGLE(GetSamplerParameterIiv)
+#define glGetSamplerParameterIuiv MANGLE(GetSamplerParameterIuiv)
+#define glGetSamplerParameteriv MANGLE(GetSamplerParameteriv)
+#define glGetSeparableFilterEXT MANGLE(GetSeparableFilterEXT)
+#define glGetSeparableFilter MANGLE(GetSeparableFilter)
+#define glGetShaderInfoLog MANGLE(GetShaderInfoLog)
+#define glGetShaderiv MANGLE(GetShaderiv)
+#define glGetShaderPrecisionFormat MANGLE(GetShaderPrecisionFormat)
+#define glGetShaderSourceARB MANGLE(GetShaderSourceARB)
+#define glGetShaderSource MANGLE(GetShaderSource)
+#define glGetSharpenTexFuncSGIS MANGLE(GetSharpenTexFuncSGIS)
+#define glGetStringi MANGLE(GetStringi)
+#define glGetString MANGLE(GetString)
+#define glGetSubroutineIndex MANGLE(GetSubroutineIndex)
+#define glGetSubroutineUniformLocation MANGLE(GetSubroutineUniformLocation)
+#define glGetSynciv MANGLE(GetSynciv)
+#define glGetTexBumpParameterfvATI MANGLE(GetTexBumpParameterfvATI)
+#define glGetTexBumpParameterivATI MANGLE(GetTexBumpParameterivATI)
+#define glGetTexEnvfv MANGLE(GetTexEnvfv)
+#define glGetTexEnviv MANGLE(GetTexEnviv)
+#define glGetTexFilterFuncSGIS MANGLE(GetTexFilterFuncSGIS)
+#define glGetTexGendv MANGLE(GetTexGendv)
+#define glGetTexGenfv MANGLE(GetTexGenfv)
+#define glGetTexGeniv MANGLE(GetTexGeniv)
+#define glGetTexImage MANGLE(GetTexImage)
+#define glGetTexLevelParameterfv MANGLE(GetTexLevelParameterfv)
+#define glGetTexLevelParameteriv MANGLE(GetTexLevelParameteriv)
+#define glGetTexParameterfv MANGLE(GetTexParameterfv)
+#define glGetTexParameterIivEXT MANGLE(GetTexParameterIivEXT)
+#define glGetTexParameterIiv MANGLE(GetTexParameterIiv)
+#define glGetTexParameterIuivEXT MANGLE(GetTexParameterIuivEXT)
+#define glGetTexParameterIuiv MANGLE(GetTexParameterIuiv)
+#define glGetTexParameteriv MANGLE(GetTexParameteriv)
+#define glGetTexParameterPointervAPPLE MANGLE(GetTexParameterPointervAPPLE)
+#define glGetTextureImageEXT MANGLE(GetTextureImageEXT)
+#define glGetTextureLevelParameterfvEXT MANGLE(GetTextureLevelParameterfvEXT)
+#define glGetTextureLevelParameterivEXT MANGLE(GetTextureLevelParameterivEXT)
+#define glGetTextureParameterfvEXT MANGLE(GetTextureParameterfvEXT)
+#define glGetTextureParameterIivEXT MANGLE(GetTextureParameterIivEXT)
+#define glGetTextureParameterIuivEXT MANGLE(GetTextureParameterIuivEXT)
+#define glGetTextureParameterivEXT MANGLE(GetTextureParameterivEXT)
+#define glGetTrackMatrixivNV MANGLE(GetTrackMatrixivNV)
+#define glGetTransformFeedbackVaryingEXT MANGLE(GetTransformFeedbackVaryingEXT)
+#define glGetTransformFeedbackVarying MANGLE(GetTransformFeedbackVarying)
+#define glGetTransformFeedbackVaryingNV MANGLE(GetTransformFeedbackVaryingNV)
+#define glGetUniformBlockIndex MANGLE(GetUniformBlockIndex)
+#define glGetUniformBufferSizeEXT MANGLE(GetUniformBufferSizeEXT)
+#define glGetUniformdv MANGLE(GetUniformdv)
+#define glGetUniformfvARB MANGLE(GetUniformfvARB)
+#define glGetUniformfv MANGLE(GetUniformfv)
+#define glGetUniformi64vNV MANGLE(GetUniformi64vNV)
+#define glGetUniformIndices MANGLE(GetUniformIndices)
+#define glGetUniformivARB MANGLE(GetUniformivARB)
+#define glGetUniformiv MANGLE(GetUniformiv)
+#define glGetUniformLocationARB MANGLE(GetUniformLocationARB)
+#define glGetUniformLocation MANGLE(GetUniformLocation)
+#define glGetUniformOffsetEXT MANGLE(GetUniformOffsetEXT)
+#define glGetUniformSubroutineuiv MANGLE(GetUniformSubroutineuiv)
+#define glGetUniformui64vNV MANGLE(GetUniformui64vNV)
+#define glGetUniformuivEXT MANGLE(GetUniformuivEXT)
+#define glGetUniformuiv MANGLE(GetUniformuiv)
+#define glGetVariantArrayObjectfvATI MANGLE(GetVariantArrayObjectfvATI)
+#define glGetVariantArrayObjectivATI MANGLE(GetVariantArrayObjectivATI)
+#define glGetVariantBooleanvEXT MANGLE(GetVariantBooleanvEXT)
+#define glGetVariantFloatvEXT MANGLE(GetVariantFloatvEXT)
+#define glGetVariantIntegervEXT MANGLE(GetVariantIntegervEXT)
+#define glGetVariantPointervEXT MANGLE(GetVariantPointervEXT)
+#define glGetVaryingLocationNV MANGLE(GetVaryingLocationNV)
+#define glGetVertexAttribArrayObjectfvATI MANGLE(GetVertexAttribArrayObjectfvATI)
+#define glGetVertexAttribArrayObjectivATI MANGLE(GetVertexAttribArrayObjectivATI)
+#define glGetVertexAttribdvARB MANGLE(GetVertexAttribdvARB)
+#define glGetVertexAttribdv MANGLE(GetVertexAttribdv)
+#define glGetVertexAttribdvNV MANGLE(GetVertexAttribdvNV)
+#define glGetVertexAttribfvARB MANGLE(GetVertexAttribfvARB)
+#define glGetVertexAttribfv MANGLE(GetVertexAttribfv)
+#define glGetVertexAttribfvNV MANGLE(GetVertexAttribfvNV)
+#define glGetVertexAttribIivEXT MANGLE(GetVertexAttribIivEXT)
+#define glGetVertexAttribIiv MANGLE(GetVertexAttribIiv)
+#define glGetVertexAttribIuivEXT MANGLE(GetVertexAttribIuivEXT)
+#define glGetVertexAttribIuiv MANGLE(GetVertexAttribIuiv)
+#define glGetVertexAttribivARB MANGLE(GetVertexAttribivARB)
+#define glGetVertexAttribiv MANGLE(GetVertexAttribiv)
+#define glGetVertexAttribivNV MANGLE(GetVertexAttribivNV)
+#define glGetVertexAttribLdvEXT MANGLE(GetVertexAttribLdvEXT)
+#define glGetVertexAttribLdv MANGLE(GetVertexAttribLdv)
+#define glGetVertexAttribLi64vNV MANGLE(GetVertexAttribLi64vNV)
+#define glGetVertexAttribLui64vNV MANGLE(GetVertexAttribLui64vNV)
+#define glGetVertexAttribPointervARB MANGLE(GetVertexAttribPointervARB)
+#define glGetVertexAttribPointerv MANGLE(GetVertexAttribPointerv)
+#define glGetVertexAttribPointervNV MANGLE(GetVertexAttribPointervNV)
+#define glGetVideoCaptureivNV MANGLE(GetVideoCaptureivNV)
+#define glGetVideoCaptureStreamdvNV MANGLE(GetVideoCaptureStreamdvNV)
+#define glGetVideoCaptureStreamfvNV MANGLE(GetVideoCaptureStreamfvNV)
+#define glGetVideoCaptureStreamivNV MANGLE(GetVideoCaptureStreamivNV)
+#define glGetVideoi64vNV MANGLE(GetVideoi64vNV)
+#define glGetVideoivNV MANGLE(GetVideoivNV)
+#define glGetVideoui64vNV MANGLE(GetVideoui64vNV)
+#define glGetVideouivNV MANGLE(GetVideouivNV)
+#define glGlobalAlphaFactorbSUN MANGLE(GlobalAlphaFactorbSUN)
+#define glGlobalAlphaFactordSUN MANGLE(GlobalAlphaFactordSUN)
+#define glGlobalAlphaFactorfSUN MANGLE(GlobalAlphaFactorfSUN)
+#define glGlobalAlphaFactoriSUN MANGLE(GlobalAlphaFactoriSUN)
+#define glGlobalAlphaFactorsSUN MANGLE(GlobalAlphaFactorsSUN)
+#define glGlobalAlphaFactorubSUN MANGLE(GlobalAlphaFactorubSUN)
+#define glGlobalAlphaFactoruiSUN MANGLE(GlobalAlphaFactoruiSUN)
+#define glGlobalAlphaFactorusSUN MANGLE(GlobalAlphaFactorusSUN)
+#define glHint MANGLE(Hint)
+#define glHintPGI MANGLE(HintPGI)
+#define glHistogramEXT MANGLE(HistogramEXT)
+#define glHistogram MANGLE(Histogram)
+#define glIglooInterfaceSGIX MANGLE(IglooInterfaceSGIX)
+#define glImageTransformParameterfHP MANGLE(ImageTransformParameterfHP)
+#define glImageTransformParameterfvHP MANGLE(ImageTransformParameterfvHP)
+#define glImageTransformParameteriHP MANGLE(ImageTransformParameteriHP)
+#define glImageTransformParameterivHP MANGLE(ImageTransformParameterivHP)
+#define glIndexd MANGLE(Indexd)
+#define glIndexdv MANGLE(Indexdv)
+#define glIndexf MANGLE(Indexf)
+#define glIndexFormatNV MANGLE(IndexFormatNV)
+#define glIndexFuncEXT MANGLE(IndexFuncEXT)
+#define glIndexfv MANGLE(Indexfv)
+#define glIndexi MANGLE(Indexi)
+#define glIndexiv MANGLE(Indexiv)
+#define glIndexMask MANGLE(IndexMask)
+#define glIndexMaterialEXT MANGLE(IndexMaterialEXT)
+#define glIndexPointerEXT MANGLE(IndexPointerEXT)
+#define glIndexPointerListIBM MANGLE(IndexPointerListIBM)
+#define glIndexPointer MANGLE(IndexPointer)
+#define glIndexs MANGLE(Indexs)
+#define glIndexsv MANGLE(Indexsv)
+#define glIndexub MANGLE(Indexub)
+#define glIndexubv MANGLE(Indexubv)
+#define glInitNames MANGLE(InitNames)
+#define glInsertComponentEXT MANGLE(InsertComponentEXT)
+#define glInstrumentsBufferSGIX MANGLE(InstrumentsBufferSGIX)
+#define glInterleavedArrays MANGLE(InterleavedArrays)
+#define glIsAsyncMarkerSGIX MANGLE(IsAsyncMarkerSGIX)
+#define glIsBufferARB MANGLE(IsBufferARB)
+#define glIsBuffer MANGLE(IsBuffer)
+#define glIsBufferResidentNV MANGLE(IsBufferResidentNV)
+#define glIsEnabledi MANGLE(IsEnabledi)
+#define glIsEnabledIndexedEXT MANGLE(IsEnabledIndexedEXT)
+#define glIsEnabled MANGLE(IsEnabled)
+#define glIsFenceAPPLE MANGLE(IsFenceAPPLE)
+#define glIsFenceNV MANGLE(IsFenceNV)
+#define glIsFramebufferEXT MANGLE(IsFramebufferEXT)
+#define glIsFramebuffer MANGLE(IsFramebuffer)
+#define glIsList MANGLE(IsList)
+#define glIsNameAMD MANGLE(IsNameAMD)
+#define glIsNamedBufferResidentNV MANGLE(IsNamedBufferResidentNV)
+#define glIsNamedStringARB MANGLE(IsNamedStringARB)
+#define glIsObjectBufferATI MANGLE(IsObjectBufferATI)
+#define glIsOcclusionQueryNV MANGLE(IsOcclusionQueryNV)
+#define glIsProgramARB MANGLE(IsProgramARB)
+#define glIsProgram MANGLE(IsProgram)
+#define glIsProgramNV MANGLE(IsProgramNV)
+#define glIsProgramPipeline MANGLE(IsProgramPipeline)
+#define glIsQueryARB MANGLE(IsQueryARB)
+#define glIsQuery MANGLE(IsQuery)
+#define glIsRenderbufferEXT MANGLE(IsRenderbufferEXT)
+#define glIsRenderbuffer MANGLE(IsRenderbuffer)
+#define glIsSampler MANGLE(IsSampler)
+#define glIsShader MANGLE(IsShader)
+#define glIsSync MANGLE(IsSync)
+#define glIsTextureEXT MANGLE(IsTextureEXT)
+#define glIsTexture MANGLE(IsTexture)
+#define glIsTransformFeedback MANGLE(IsTransformFeedback)
+#define glIsTransformFeedbackNV MANGLE(IsTransformFeedbackNV)
+#define glIsVariantEnabledEXT MANGLE(IsVariantEnabledEXT)
+#define glIsVertexArrayAPPLE MANGLE(IsVertexArrayAPPLE)
+#define glIsVertexArray MANGLE(IsVertexArray)
+#define glIsVertexAttribEnabledAPPLE MANGLE(IsVertexAttribEnabledAPPLE)
+#define glLightEnviSGIX MANGLE(LightEnviSGIX)
+#define glLightf MANGLE(Lightf)
+#define glLightfv MANGLE(Lightfv)
+#define glLighti MANGLE(Lighti)
+#define glLightiv MANGLE(Lightiv)
+#define glLightModelf MANGLE(LightModelf)
+#define glLightModelfv MANGLE(LightModelfv)
+#define glLightModeli MANGLE(LightModeli)
+#define glLightModeliv MANGLE(LightModeliv)
+#define glLineStipple MANGLE(LineStipple)
+#define glLineWidth MANGLE(LineWidth)
+#define glLinkProgramARB MANGLE(LinkProgramARB)
+#define glLinkProgram MANGLE(LinkProgram)
+#define glListBase MANGLE(ListBase)
+#define glListParameterfSGIX MANGLE(ListParameterfSGIX)
+#define glListParameterfvSGIX MANGLE(ListParameterfvSGIX)
+#define glListParameteriSGIX MANGLE(ListParameteriSGIX)
+#define glListParameterivSGIX MANGLE(ListParameterivSGIX)
+#define glLoadIdentityDeformationMapSGIX MANGLE(LoadIdentityDeformationMapSGIX)
+#define glLoadIdentity MANGLE(LoadIdentity)
+#define glLoadMatrixd MANGLE(LoadMatrixd)
+#define glLoadMatrixf MANGLE(LoadMatrixf)
+#define glLoadName MANGLE(LoadName)
+#define glLoadProgramNV MANGLE(LoadProgramNV)
+#define glLoadTransposeMatrixdARB MANGLE(LoadTransposeMatrixdARB)
+#define glLoadTransposeMatrixd MANGLE(LoadTransposeMatrixd)
+#define glLoadTransposeMatrixfARB MANGLE(LoadTransposeMatrixfARB)
+#define glLoadTransposeMatrixf MANGLE(LoadTransposeMatrixf)
+#define glLockArraysEXT MANGLE(LockArraysEXT)
+#define glLogicOp MANGLE(LogicOp)
+#define glMakeBufferNonResidentNV MANGLE(MakeBufferNonResidentNV)
+#define glMakeBufferResidentNV MANGLE(MakeBufferResidentNV)
+#define glMakeNamedBufferNonResidentNV MANGLE(MakeNamedBufferNonResidentNV)
+#define glMakeNamedBufferResidentNV MANGLE(MakeNamedBufferResidentNV)
+#define glMap1d MANGLE(Map1d)
+#define glMap1f MANGLE(Map1f)
+#define glMap2d MANGLE(Map2d)
+#define glMap2f MANGLE(Map2f)
+#define glMapBufferARB MANGLE(MapBufferARB)
+#define glMapBuffer MANGLE(MapBuffer)
+#define glMapBufferRange MANGLE(MapBufferRange)
+#define glMapControlPointsNV MANGLE(MapControlPointsNV)
+#define glMapGrid1d MANGLE(MapGrid1d)
+#define glMapGrid1f MANGLE(MapGrid1f)
+#define glMapGrid2d MANGLE(MapGrid2d)
+#define glMapGrid2f MANGLE(MapGrid2f)
+#define glMapNamedBufferEXT MANGLE(MapNamedBufferEXT)
+#define glMapNamedBufferRangeEXT MANGLE(MapNamedBufferRangeEXT)
+#define glMapObjectBufferATI MANGLE(MapObjectBufferATI)
+#define glMapParameterfvNV MANGLE(MapParameterfvNV)
+#define glMapParameterivNV MANGLE(MapParameterivNV)
+#define glMapVertexAttrib1dAPPLE MANGLE(MapVertexAttrib1dAPPLE)
+#define glMapVertexAttrib1fAPPLE MANGLE(MapVertexAttrib1fAPPLE)
+#define glMapVertexAttrib2dAPPLE MANGLE(MapVertexAttrib2dAPPLE)
+#define glMapVertexAttrib2fAPPLE MANGLE(MapVertexAttrib2fAPPLE)
+#define glMaterialf MANGLE(Materialf)
+#define glMaterialfv MANGLE(Materialfv)
+#define glMateriali MANGLE(Materiali)
+#define glMaterialiv MANGLE(Materialiv)
+#define glMatrixFrustumEXT MANGLE(MatrixFrustumEXT)
+#define glMatrixIndexPointerARB MANGLE(MatrixIndexPointerARB)
+#define glMatrixIndexubvARB MANGLE(MatrixIndexubvARB)
+#define glMatrixIndexuivARB MANGLE(MatrixIndexuivARB)
+#define glMatrixIndexusvARB MANGLE(MatrixIndexusvARB)
+#define glMatrixLoaddEXT MANGLE(MatrixLoaddEXT)
+#define glMatrixLoadfEXT MANGLE(MatrixLoadfEXT)
+#define glMatrixLoadIdentityEXT MANGLE(MatrixLoadIdentityEXT)
+#define glMatrixLoadTransposedEXT MANGLE(MatrixLoadTransposedEXT)
+#define glMatrixLoadTransposefEXT MANGLE(MatrixLoadTransposefEXT)
+#define glMatrixMode MANGLE(MatrixMode)
+#define glMatrixMultdEXT MANGLE(MatrixMultdEXT)
+#define glMatrixMultfEXT MANGLE(MatrixMultfEXT)
+#define glMatrixMultTransposedEXT MANGLE(MatrixMultTransposedEXT)
+#define glMatrixMultTransposefEXT MANGLE(MatrixMultTransposefEXT)
+#define glMatrixOrthoEXT MANGLE(MatrixOrthoEXT)
+#define glMatrixPopEXT MANGLE(MatrixPopEXT)
+#define glMatrixPushEXT MANGLE(MatrixPushEXT)
+#define glMatrixRotatedEXT MANGLE(MatrixRotatedEXT)
+#define glMatrixRotatefEXT MANGLE(MatrixRotatefEXT)
+#define glMatrixScaledEXT MANGLE(MatrixScaledEXT)
+#define glMatrixScalefEXT MANGLE(MatrixScalefEXT)
+#define glMatrixTranslatedEXT MANGLE(MatrixTranslatedEXT)
+#define glMatrixTranslatefEXT MANGLE(MatrixTranslatefEXT)
+#define glMemoryBarrierEXT MANGLE(MemoryBarrierEXT)
+#define glMinmaxEXT MANGLE(MinmaxEXT)
+#define glMinmax MANGLE(Minmax)
+#define glMinSampleShadingARB MANGLE(MinSampleShadingARB)
+#define glMinSampleShading MANGLE(MinSampleShading)
+#define glMultiDrawArraysEXT MANGLE(MultiDrawArraysEXT)
+#define glMultiDrawArrays MANGLE(MultiDrawArrays)
+#define glMultiDrawElementArrayAPPLE MANGLE(MultiDrawElementArrayAPPLE)
+#define glMultiDrawElementsBaseVertex MANGLE(MultiDrawElementsBaseVertex)
+#define glMultiDrawElementsEXT MANGLE(MultiDrawElementsEXT)
+#define glMultiDrawElements MANGLE(MultiDrawElements)
+#define glMultiDrawRangeElementArrayAPPLE MANGLE(MultiDrawRangeElementArrayAPPLE)
+#define glMultiModeDrawArraysIBM MANGLE(MultiModeDrawArraysIBM)
+#define glMultiModeDrawElementsIBM MANGLE(MultiModeDrawElementsIBM)
+#define glMultiTexBufferEXT MANGLE(MultiTexBufferEXT)
+#define glMultiTexCoord1dARB MANGLE(MultiTexCoord1dARB)
+#define glMultiTexCoord1d MANGLE(MultiTexCoord1d)
+#define glMultiTexCoord1dvARB MANGLE(MultiTexCoord1dvARB)
+#define glMultiTexCoord1dv MANGLE(MultiTexCoord1dv)
+#define glMultiTexCoord1fARB MANGLE(MultiTexCoord1fARB)
+#define glMultiTexCoord1f MANGLE(MultiTexCoord1f)
+#define glMultiTexCoord1fvARB MANGLE(MultiTexCoord1fvARB)
+#define glMultiTexCoord1fv MANGLE(MultiTexCoord1fv)
+#define glMultiTexCoord1hNV MANGLE(MultiTexCoord1hNV)
+#define glMultiTexCoord1hvNV MANGLE(MultiTexCoord1hvNV)
+#define glMultiTexCoord1iARB MANGLE(MultiTexCoord1iARB)
+#define glMultiTexCoord1i MANGLE(MultiTexCoord1i)
+#define glMultiTexCoord1ivARB MANGLE(MultiTexCoord1ivARB)
+#define glMultiTexCoord1iv MANGLE(MultiTexCoord1iv)
+#define glMultiTexCoord1sARB MANGLE(MultiTexCoord1sARB)
+#define glMultiTexCoord1s MANGLE(MultiTexCoord1s)
+#define glMultiTexCoord1svARB MANGLE(MultiTexCoord1svARB)
+#define glMultiTexCoord1sv MANGLE(MultiTexCoord1sv)
+#define glMultiTexCoord2dARB MANGLE(MultiTexCoord2dARB)
+#define glMultiTexCoord2d MANGLE(MultiTexCoord2d)
+#define glMultiTexCoord2dvARB MANGLE(MultiTexCoord2dvARB)
+#define glMultiTexCoord2dv MANGLE(MultiTexCoord2dv)
+#define glMultiTexCoord2fARB MANGLE(MultiTexCoord2fARB)
+#define glMultiTexCoord2f MANGLE(MultiTexCoord2f)
+#define glMultiTexCoord2fvARB MANGLE(MultiTexCoord2fvARB)
+#define glMultiTexCoord2fv MANGLE(MultiTexCoord2fv)
+#define glMultiTexCoord2hNV MANGLE(MultiTexCoord2hNV)
+#define glMultiTexCoord2hvNV MANGLE(MultiTexCoord2hvNV)
+#define glMultiTexCoord2iARB MANGLE(MultiTexCoord2iARB)
+#define glMultiTexCoord2i MANGLE(MultiTexCoord2i)
+#define glMultiTexCoord2ivARB MANGLE(MultiTexCoord2ivARB)
+#define glMultiTexCoord2iv MANGLE(MultiTexCoord2iv)
+#define glMultiTexCoord2sARB MANGLE(MultiTexCoord2sARB)
+#define glMultiTexCoord2s MANGLE(MultiTexCoord2s)
+#define glMultiTexCoord2svARB MANGLE(MultiTexCoord2svARB)
+#define glMultiTexCoord2sv MANGLE(MultiTexCoord2sv)
+#define glMultiTexCoord3dARB MANGLE(MultiTexCoord3dARB)
+#define glMultiTexCoord3d MANGLE(MultiTexCoord3d)
+#define glMultiTexCoord3dvARB MANGLE(MultiTexCoord3dvARB)
+#define glMultiTexCoord3dv MANGLE(MultiTexCoord3dv)
+#define glMultiTexCoord3fARB MANGLE(MultiTexCoord3fARB)
+#define glMultiTexCoord3f MANGLE(MultiTexCoord3f)
+#define glMultiTexCoord3fvARB MANGLE(MultiTexCoord3fvARB)
+#define glMultiTexCoord3fv MANGLE(MultiTexCoord3fv)
+#define glMultiTexCoord3hNV MANGLE(MultiTexCoord3hNV)
+#define glMultiTexCoord3hvNV MANGLE(MultiTexCoord3hvNV)
+#define glMultiTexCoord3iARB MANGLE(MultiTexCoord3iARB)
+#define glMultiTexCoord3i MANGLE(MultiTexCoord3i)
+#define glMultiTexCoord3ivARB MANGLE(MultiTexCoord3ivARB)
+#define glMultiTexCoord3iv MANGLE(MultiTexCoord3iv)
+#define glMultiTexCoord3sARB MANGLE(MultiTexCoord3sARB)
+#define glMultiTexCoord3s MANGLE(MultiTexCoord3s)
+#define glMultiTexCoord3svARB MANGLE(MultiTexCoord3svARB)
+#define glMultiTexCoord3sv MANGLE(MultiTexCoord3sv)
+#define glMultiTexCoord4dARB MANGLE(MultiTexCoord4dARB)
+#define glMultiTexCoord4d MANGLE(MultiTexCoord4d)
+#define glMultiTexCoord4dvARB MANGLE(MultiTexCoord4dvARB)
+#define glMultiTexCoord4dv MANGLE(MultiTexCoord4dv)
+#define glMultiTexCoord4fARB MANGLE(MultiTexCoord4fARB)
+#define glMultiTexCoord4f MANGLE(MultiTexCoord4f)
+#define glMultiTexCoord4fvARB MANGLE(MultiTexCoord4fvARB)
+#define glMultiTexCoord4fv MANGLE(MultiTexCoord4fv)
+#define glMultiTexCoord4hNV MANGLE(MultiTexCoord4hNV)
+#define glMultiTexCoord4hvNV MANGLE(MultiTexCoord4hvNV)
+#define glMultiTexCoord4iARB MANGLE(MultiTexCoord4iARB)
+#define glMultiTexCoord4i MANGLE(MultiTexCoord4i)
+#define glMultiTexCoord4ivARB MANGLE(MultiTexCoord4ivARB)
+#define glMultiTexCoord4iv MANGLE(MultiTexCoord4iv)
+#define glMultiTexCoord4sARB MANGLE(MultiTexCoord4sARB)
+#define glMultiTexCoord4s MANGLE(MultiTexCoord4s)
+#define glMultiTexCoord4svARB MANGLE(MultiTexCoord4svARB)
+#define glMultiTexCoord4sv MANGLE(MultiTexCoord4sv)
+#define glMultiTexCoordP1ui MANGLE(MultiTexCoordP1ui)
+#define glMultiTexCoordP1uiv MANGLE(MultiTexCoordP1uiv)
+#define glMultiTexCoordP2ui MANGLE(MultiTexCoordP2ui)
+#define glMultiTexCoordP2uiv MANGLE(MultiTexCoordP2uiv)
+#define glMultiTexCoordP3ui MANGLE(MultiTexCoordP3ui)
+#define glMultiTexCoordP3uiv MANGLE(MultiTexCoordP3uiv)
+#define glMultiTexCoordP4ui MANGLE(MultiTexCoordP4ui)
+#define glMultiTexCoordP4uiv MANGLE(MultiTexCoordP4uiv)
+#define glMultiTexCoordPointerEXT MANGLE(MultiTexCoordPointerEXT)
+#define glMultiTexEnvfEXT MANGLE(MultiTexEnvfEXT)
+#define glMultiTexEnvfvEXT MANGLE(MultiTexEnvfvEXT)
+#define glMultiTexEnviEXT MANGLE(MultiTexEnviEXT)
+#define glMultiTexEnvivEXT MANGLE(MultiTexEnvivEXT)
+#define glMultiTexGendEXT MANGLE(MultiTexGendEXT)
+#define glMultiTexGendvEXT MANGLE(MultiTexGendvEXT)
+#define glMultiTexGenfEXT MANGLE(MultiTexGenfEXT)
+#define glMultiTexGenfvEXT MANGLE(MultiTexGenfvEXT)
+#define glMultiTexGeniEXT MANGLE(MultiTexGeniEXT)
+#define glMultiTexGenivEXT MANGLE(MultiTexGenivEXT)
+#define glMultiTexImage1DEXT MANGLE(MultiTexImage1DEXT)
+#define glMultiTexImage2DEXT MANGLE(MultiTexImage2DEXT)
+#define glMultiTexImage3DEXT MANGLE(MultiTexImage3DEXT)
+#define glMultiTexParameterfEXT MANGLE(MultiTexParameterfEXT)
+#define glMultiTexParameterfvEXT MANGLE(MultiTexParameterfvEXT)
+#define glMultiTexParameteriEXT MANGLE(MultiTexParameteriEXT)
+#define glMultiTexParameterIivEXT MANGLE(MultiTexParameterIivEXT)
+#define glMultiTexParameterIuivEXT MANGLE(MultiTexParameterIuivEXT)
+#define glMultiTexParameterivEXT MANGLE(MultiTexParameterivEXT)
+#define glMultiTexRenderbufferEXT MANGLE(MultiTexRenderbufferEXT)
+#define glMultiTexSubImage1DEXT MANGLE(MultiTexSubImage1DEXT)
+#define glMultiTexSubImage2DEXT MANGLE(MultiTexSubImage2DEXT)
+#define glMultiTexSubImage3DEXT MANGLE(MultiTexSubImage3DEXT)
+#define glMultMatrixd MANGLE(MultMatrixd)
+#define glMultMatrixf MANGLE(MultMatrixf)
+#define glMultTransposeMatrixdARB MANGLE(MultTransposeMatrixdARB)
+#define glMultTransposeMatrixd MANGLE(MultTransposeMatrixd)
+#define glMultTransposeMatrixfARB MANGLE(MultTransposeMatrixfARB)
+#define glMultTransposeMatrixf MANGLE(MultTransposeMatrixf)
+#define glNamedBufferDataEXT MANGLE(NamedBufferDataEXT)
+#define glNamedBufferSubDataEXT MANGLE(NamedBufferSubDataEXT)
+#define glNamedCopyBufferSubDataEXT MANGLE(NamedCopyBufferSubDataEXT)
+#define glNamedFramebufferRenderbufferEXT MANGLE(NamedFramebufferRenderbufferEXT)
+#define glNamedFramebufferTexture1DEXT MANGLE(NamedFramebufferTexture1DEXT)
+#define glNamedFramebufferTexture2DEXT MANGLE(NamedFramebufferTexture2DEXT)
+#define glNamedFramebufferTexture3DEXT MANGLE(NamedFramebufferTexture3DEXT)
+#define glNamedFramebufferTextureEXT MANGLE(NamedFramebufferTextureEXT)
+#define glNamedFramebufferTextureFaceEXT MANGLE(NamedFramebufferTextureFaceEXT)
+#define glNamedFramebufferTextureLayerEXT MANGLE(NamedFramebufferTextureLayerEXT)
+#define glNamedProgramLocalParameter4dEXT MANGLE(NamedProgramLocalParameter4dEXT)
+#define glNamedProgramLocalParameter4dvEXT MANGLE(NamedProgramLocalParameter4dvEXT)
+#define glNamedProgramLocalParameter4fEXT MANGLE(NamedProgramLocalParameter4fEXT)
+#define glNamedProgramLocalParameter4fvEXT MANGLE(NamedProgramLocalParameter4fvEXT)
+#define glNamedProgramLocalParameterI4iEXT MANGLE(NamedProgramLocalParameterI4iEXT)
+#define glNamedProgramLocalParameterI4ivEXT MANGLE(NamedProgramLocalParameterI4ivEXT)
+#define glNamedProgramLocalParameterI4uiEXT MANGLE(NamedProgramLocalParameterI4uiEXT)
+#define glNamedProgramLocalParameterI4uivEXT MANGLE(NamedProgramLocalParameterI4uivEXT)
+#define glNamedProgramLocalParameters4fvEXT MANGLE(NamedProgramLocalParameters4fvEXT)
+#define glNamedProgramLocalParametersI4ivEXT MANGLE(NamedProgramLocalParametersI4ivEXT)
+#define glNamedProgramLocalParametersI4uivEXT MANGLE(NamedProgramLocalParametersI4uivEXT)
+#define glNamedProgramStringEXT MANGLE(NamedProgramStringEXT)
+#define glNamedRenderbufferStorageEXT MANGLE(NamedRenderbufferStorageEXT)
+#define glNamedRenderbufferStorageMultisampleCoverageEXT MANGLE(NamedRenderbufferStorageMultisampleCoverageEXT)
+#define glNamedRenderbufferStorageMultisampleEXT MANGLE(NamedRenderbufferStorageMultisampleEXT)
+#define glNamedStringARB MANGLE(NamedStringARB)
+#define glNewList MANGLE(NewList)
+#define glNewObjectBufferATI MANGLE(NewObjectBufferATI)
+#define glNormal3b MANGLE(Normal3b)
+#define glNormal3bv MANGLE(Normal3bv)
+#define glNormal3d MANGLE(Normal3d)
+#define glNormal3dv MANGLE(Normal3dv)
+#define glNormal3f MANGLE(Normal3f)
+#define glNormal3fVertex3fSUN MANGLE(Normal3fVertex3fSUN)
+#define glNormal3fVertex3fvSUN MANGLE(Normal3fVertex3fvSUN)
+#define glNormal3fv MANGLE(Normal3fv)
+#define glNormal3hNV MANGLE(Normal3hNV)
+#define glNormal3hvNV MANGLE(Normal3hvNV)
+#define glNormal3i MANGLE(Normal3i)
+#define glNormal3iv MANGLE(Normal3iv)
+#define glNormal3s MANGLE(Normal3s)
+#define glNormal3sv MANGLE(Normal3sv)
+#define glNormalFormatNV MANGLE(NormalFormatNV)
+#define glNormalP3ui MANGLE(NormalP3ui)
+#define glNormalP3uiv MANGLE(NormalP3uiv)
+#define glNormalPointerEXT MANGLE(NormalPointerEXT)
+#define glNormalPointerListIBM MANGLE(NormalPointerListIBM)
+#define glNormalPointer MANGLE(NormalPointer)
+#define glNormalPointervINTEL MANGLE(NormalPointervINTEL)
+#define glNormalStream3bATI MANGLE(NormalStream3bATI)
+#define glNormalStream3bvATI MANGLE(NormalStream3bvATI)
+#define glNormalStream3dATI MANGLE(NormalStream3dATI)
+#define glNormalStream3dvATI MANGLE(NormalStream3dvATI)
+#define glNormalStream3fATI MANGLE(NormalStream3fATI)
+#define glNormalStream3fvATI MANGLE(NormalStream3fvATI)
+#define glNormalStream3iATI MANGLE(NormalStream3iATI)
+#define glNormalStream3ivATI MANGLE(NormalStream3ivATI)
+#define glNormalStream3sATI MANGLE(NormalStream3sATI)
+#define glNormalStream3svATI MANGLE(NormalStream3svATI)
+#define glObjectPurgeableAPPLE MANGLE(ObjectPurgeableAPPLE)
+#define glObjectUnpurgeableAPPLE MANGLE(ObjectUnpurgeableAPPLE)
+#define glOrtho MANGLE(Ortho)
+#define glPassTexCoordATI MANGLE(PassTexCoordATI)
+#define glPassThrough MANGLE(PassThrough)
+#define glPatchParameterfv MANGLE(PatchParameterfv)
+#define glPatchParameteri MANGLE(PatchParameteri)
+#define glPauseTransformFeedback MANGLE(PauseTransformFeedback)
+#define glPauseTransformFeedbackNV MANGLE(PauseTransformFeedbackNV)
+#define glPixelDataRangeNV MANGLE(PixelDataRangeNV)
+#define glPixelMapfv MANGLE(PixelMapfv)
+#define glPixelMapuiv MANGLE(PixelMapuiv)
+#define glPixelMapusv MANGLE(PixelMapusv)
+#define glPixelStoref MANGLE(PixelStoref)
+#define glPixelStorei MANGLE(PixelStorei)
+#define glPixelTexGenParameterfSGIS MANGLE(PixelTexGenParameterfSGIS)
+#define glPixelTexGenParameterfvSGIS MANGLE(PixelTexGenParameterfvSGIS)
+#define glPixelTexGenParameteriSGIS MANGLE(PixelTexGenParameteriSGIS)
+#define glPixelTexGenParameterivSGIS MANGLE(PixelTexGenParameterivSGIS)
+#define glPixelTexGenSGIX MANGLE(PixelTexGenSGIX)
+#define glPixelTransferf MANGLE(PixelTransferf)
+#define glPixelTransferi MANGLE(PixelTransferi)
+#define glPixelTransformParameterfEXT MANGLE(PixelTransformParameterfEXT)
+#define glPixelTransformParameterfvEXT MANGLE(PixelTransformParameterfvEXT)
+#define glPixelTransformParameteriEXT MANGLE(PixelTransformParameteriEXT)
+#define glPixelTransformParameterivEXT MANGLE(PixelTransformParameterivEXT)
+#define glPixelZoom MANGLE(PixelZoom)
+#define glPNTrianglesfATI MANGLE(PNTrianglesfATI)
+#define glPNTrianglesiATI MANGLE(PNTrianglesiATI)
+#define glPointParameterfARB MANGLE(PointParameterfARB)
+#define glPointParameterfEXT MANGLE(PointParameterfEXT)
+#define glPointParameterf MANGLE(PointParameterf)
+#define glPointParameterfSGIS MANGLE(PointParameterfSGIS)
+#define glPointParameterfvARB MANGLE(PointParameterfvARB)
+#define glPointParameterfvEXT MANGLE(PointParameterfvEXT)
+#define glPointParameterfv MANGLE(PointParameterfv)
+#define glPointParameterfvSGIS MANGLE(PointParameterfvSGIS)
+#define glPointParameteri MANGLE(PointParameteri)
+#define glPointParameteriNV MANGLE(PointParameteriNV)
+#define glPointParameteriv MANGLE(PointParameteriv)
+#define glPointParameterivNV MANGLE(PointParameterivNV)
+#define glPointSize MANGLE(PointSize)
+#define glPollAsyncSGIX MANGLE(PollAsyncSGIX)
+#define glPollInstrumentsSGIX MANGLE(PollInstrumentsSGIX)
+#define glPolygonMode MANGLE(PolygonMode)
+#define glPolygonOffsetEXT MANGLE(PolygonOffsetEXT)
+#define glPolygonOffset MANGLE(PolygonOffset)
+#define glPolygonStipple MANGLE(PolygonStipple)
+#define glPopAttrib MANGLE(PopAttrib)
+#define glPopClientAttrib MANGLE(PopClientAttrib)
+#define glPopMatrix MANGLE(PopMatrix)
+#define glPopName MANGLE(PopName)
+#define glPresentFrameDualFillNV MANGLE(PresentFrameDualFillNV)
+#define glPresentFrameKeyedNV MANGLE(PresentFrameKeyedNV)
+#define glPrimitiveRestartIndex MANGLE(PrimitiveRestartIndex)
+#define glPrimitiveRestartIndexNV MANGLE(PrimitiveRestartIndexNV)
+#define glPrimitiveRestartNV MANGLE(PrimitiveRestartNV)
+#define glPrioritizeTexturesEXT MANGLE(PrioritizeTexturesEXT)
+#define glPrioritizeTextures MANGLE(PrioritizeTextures)
+#define glProgramBinary MANGLE(ProgramBinary)
+#define glProgramBufferParametersfvNV MANGLE(ProgramBufferParametersfvNV)
+#define glProgramBufferParametersIivNV MANGLE(ProgramBufferParametersIivNV)
+#define glProgramBufferParametersIuivNV MANGLE(ProgramBufferParametersIuivNV)
+#define glProgramCallbackMESA MANGLE(ProgramCallbackMESA)
+#define glProgramEnvParameter4dARB MANGLE(ProgramEnvParameter4dARB)
+#define glProgramEnvParameter4dvARB MANGLE(ProgramEnvParameter4dvARB)
+#define glProgramEnvParameter4fARB MANGLE(ProgramEnvParameter4fARB)
+#define glProgramEnvParameter4fvARB MANGLE(ProgramEnvParameter4fvARB)
+#define glProgramEnvParameterI4iNV MANGLE(ProgramEnvParameterI4iNV)
+#define glProgramEnvParameterI4ivNV MANGLE(ProgramEnvParameterI4ivNV)
+#define glProgramEnvParameterI4uiNV MANGLE(ProgramEnvParameterI4uiNV)
+#define glProgramEnvParameterI4uivNV MANGLE(ProgramEnvParameterI4uivNV)
+#define glProgramEnvParameters4fvEXT MANGLE(ProgramEnvParameters4fvEXT)
+#define glProgramEnvParametersI4ivNV MANGLE(ProgramEnvParametersI4ivNV)
+#define glProgramEnvParametersI4uivNV MANGLE(ProgramEnvParametersI4uivNV)
+#define glProgramLocalParameter4dARB MANGLE(ProgramLocalParameter4dARB)
+#define glProgramLocalParameter4dvARB MANGLE(ProgramLocalParameter4dvARB)
+#define glProgramLocalParameter4fARB MANGLE(ProgramLocalParameter4fARB)
+#define glProgramLocalParameter4fvARB MANGLE(ProgramLocalParameter4fvARB)
+#define glProgramLocalParameterI4iNV MANGLE(ProgramLocalParameterI4iNV)
+#define glProgramLocalParameterI4ivNV MANGLE(ProgramLocalParameterI4ivNV)
+#define glProgramLocalParameterI4uiNV MANGLE(ProgramLocalParameterI4uiNV)
+#define glProgramLocalParameterI4uivNV MANGLE(ProgramLocalParameterI4uivNV)
+#define glProgramLocalParameters4fvEXT MANGLE(ProgramLocalParameters4fvEXT)
+#define glProgramLocalParametersI4ivNV MANGLE(ProgramLocalParametersI4ivNV)
+#define glProgramLocalParametersI4uivNV MANGLE(ProgramLocalParametersI4uivNV)
+#define glProgramNamedParameter4dNV MANGLE(ProgramNamedParameter4dNV)
+#define glProgramNamedParameter4dvNV MANGLE(ProgramNamedParameter4dvNV)
+#define glProgramNamedParameter4fNV MANGLE(ProgramNamedParameter4fNV)
+#define glProgramNamedParameter4fvNV MANGLE(ProgramNamedParameter4fvNV)
+#define glProgramParameter4dNV MANGLE(ProgramParameter4dNV)
+#define glProgramParameter4dvNV MANGLE(ProgramParameter4dvNV)
+#define glProgramParameter4fNV MANGLE(ProgramParameter4fNV)
+#define glProgramParameter4fvNV MANGLE(ProgramParameter4fvNV)
+#define glProgramParameteriARB MANGLE(ProgramParameteriARB)
+#define glProgramParameteriEXT MANGLE(ProgramParameteriEXT)
+#define glProgramParameteri MANGLE(ProgramParameteri)
+#define glProgramParameters4dvNV MANGLE(ProgramParameters4dvNV)
+#define glProgramParameters4fvNV MANGLE(ProgramParameters4fvNV)
+#define glProgramStringARB MANGLE(ProgramStringARB)
+#define glProgramSubroutineParametersuivNV MANGLE(ProgramSubroutineParametersuivNV)
+#define glProgramUniform1dEXT MANGLE(ProgramUniform1dEXT)
+#define glProgramUniform1d MANGLE(ProgramUniform1d)
+#define glProgramUniform1dvEXT MANGLE(ProgramUniform1dvEXT)
+#define glProgramUniform1dv MANGLE(ProgramUniform1dv)
+#define glProgramUniform1fEXT MANGLE(ProgramUniform1fEXT)
+#define glProgramUniform1f MANGLE(ProgramUniform1f)
+#define glProgramUniform1fvEXT MANGLE(ProgramUniform1fvEXT)
+#define glProgramUniform1fv MANGLE(ProgramUniform1fv)
+#define glProgramUniform1i64NV MANGLE(ProgramUniform1i64NV)
+#define glProgramUniform1i64vNV MANGLE(ProgramUniform1i64vNV)
+#define glProgramUniform1iEXT MANGLE(ProgramUniform1iEXT)
+#define glProgramUniform1i MANGLE(ProgramUniform1i)
+#define glProgramUniform1ivEXT MANGLE(ProgramUniform1ivEXT)
+#define glProgramUniform1iv MANGLE(ProgramUniform1iv)
+#define glProgramUniform1ui64NV MANGLE(ProgramUniform1ui64NV)
+#define glProgramUniform1ui64vNV MANGLE(ProgramUniform1ui64vNV)
+#define glProgramUniform1uiEXT MANGLE(ProgramUniform1uiEXT)
+#define glProgramUniform1ui MANGLE(ProgramUniform1ui)
+#define glProgramUniform1uivEXT MANGLE(ProgramUniform1uivEXT)
+#define glProgramUniform1uiv MANGLE(ProgramUniform1uiv)
+#define glProgramUniform2dEXT MANGLE(ProgramUniform2dEXT)
+#define glProgramUniform2d MANGLE(ProgramUniform2d)
+#define glProgramUniform2dvEXT MANGLE(ProgramUniform2dvEXT)
+#define glProgramUniform2dv MANGLE(ProgramUniform2dv)
+#define glProgramUniform2fEXT MANGLE(ProgramUniform2fEXT)
+#define glProgramUniform2f MANGLE(ProgramUniform2f)
+#define glProgramUniform2fvEXT MANGLE(ProgramUniform2fvEXT)
+#define glProgramUniform2fv MANGLE(ProgramUniform2fv)
+#define glProgramUniform2i64NV MANGLE(ProgramUniform2i64NV)
+#define glProgramUniform2i64vNV MANGLE(ProgramUniform2i64vNV)
+#define glProgramUniform2iEXT MANGLE(ProgramUniform2iEXT)
+#define glProgramUniform2i MANGLE(ProgramUniform2i)
+#define glProgramUniform2ivEXT MANGLE(ProgramUniform2ivEXT)
+#define glProgramUniform2iv MANGLE(ProgramUniform2iv)
+#define glProgramUniform2ui64NV MANGLE(ProgramUniform2ui64NV)
+#define glProgramUniform2ui64vNV MANGLE(ProgramUniform2ui64vNV)
+#define glProgramUniform2uiEXT MANGLE(ProgramUniform2uiEXT)
+#define glProgramUniform2ui MANGLE(ProgramUniform2ui)
+#define glProgramUniform2uivEXT MANGLE(ProgramUniform2uivEXT)
+#define glProgramUniform2uiv MANGLE(ProgramUniform2uiv)
+#define glProgramUniform3dEXT MANGLE(ProgramUniform3dEXT)
+#define glProgramUniform3d MANGLE(ProgramUniform3d)
+#define glProgramUniform3dvEXT MANGLE(ProgramUniform3dvEXT)
+#define glProgramUniform3dv MANGLE(ProgramUniform3dv)
+#define glProgramUniform3fEXT MANGLE(ProgramUniform3fEXT)
+#define glProgramUniform3f MANGLE(ProgramUniform3f)
+#define glProgramUniform3fvEXT MANGLE(ProgramUniform3fvEXT)
+#define glProgramUniform3fv MANGLE(ProgramUniform3fv)
+#define glProgramUniform3i64NV MANGLE(ProgramUniform3i64NV)
+#define glProgramUniform3i64vNV MANGLE(ProgramUniform3i64vNV)
+#define glProgramUniform3iEXT MANGLE(ProgramUniform3iEXT)
+#define glProgramUniform3i MANGLE(ProgramUniform3i)
+#define glProgramUniform3ivEXT MANGLE(ProgramUniform3ivEXT)
+#define glProgramUniform3iv MANGLE(ProgramUniform3iv)
+#define glProgramUniform3ui64NV MANGLE(ProgramUniform3ui64NV)
+#define glProgramUniform3ui64vNV MANGLE(ProgramUniform3ui64vNV)
+#define glProgramUniform3uiEXT MANGLE(ProgramUniform3uiEXT)
+#define glProgramUniform3ui MANGLE(ProgramUniform3ui)
+#define glProgramUniform3uivEXT MANGLE(ProgramUniform3uivEXT)
+#define glProgramUniform3uiv MANGLE(ProgramUniform3uiv)
+#define glProgramUniform4dEXT MANGLE(ProgramUniform4dEXT)
+#define glProgramUniform4d MANGLE(ProgramUniform4d)
+#define glProgramUniform4dvEXT MANGLE(ProgramUniform4dvEXT)
+#define glProgramUniform4dv MANGLE(ProgramUniform4dv)
+#define glProgramUniform4fEXT MANGLE(ProgramUniform4fEXT)
+#define glProgramUniform4f MANGLE(ProgramUniform4f)
+#define glProgramUniform4fvEXT MANGLE(ProgramUniform4fvEXT)
+#define glProgramUniform4fv MANGLE(ProgramUniform4fv)
+#define glProgramUniform4i64NV MANGLE(ProgramUniform4i64NV)
+#define glProgramUniform4i64vNV MANGLE(ProgramUniform4i64vNV)
+#define glProgramUniform4iEXT MANGLE(ProgramUniform4iEXT)
+#define glProgramUniform4i MANGLE(ProgramUniform4i)
+#define glProgramUniform4ivEXT MANGLE(ProgramUniform4ivEXT)
+#define glProgramUniform4iv MANGLE(ProgramUniform4iv)
+#define glProgramUniform4ui64NV MANGLE(ProgramUniform4ui64NV)
+#define glProgramUniform4ui64vNV MANGLE(ProgramUniform4ui64vNV)
+#define glProgramUniform4uiEXT MANGLE(ProgramUniform4uiEXT)
+#define glProgramUniform4ui MANGLE(ProgramUniform4ui)
+#define glProgramUniform4uivEXT MANGLE(ProgramUniform4uivEXT)
+#define glProgramUniform4uiv MANGLE(ProgramUniform4uiv)
+#define glProgramUniformMatrix2dvEXT MANGLE(ProgramUniformMatrix2dvEXT)
+#define glProgramUniformMatrix2dv MANGLE(ProgramUniformMatrix2dv)
+#define glProgramUniformMatrix2fvEXT MANGLE(ProgramUniformMatrix2fvEXT)
+#define glProgramUniformMatrix2fv MANGLE(ProgramUniformMatrix2fv)
+#define glProgramUniformMatrix2x3dvEXT MANGLE(ProgramUniformMatrix2x3dvEXT)
+#define glProgramUniformMatrix2x3dv MANGLE(ProgramUniformMatrix2x3dv)
+#define glProgramUniformMatrix2x3fvEXT MANGLE(ProgramUniformMatrix2x3fvEXT)
+#define glProgramUniformMatrix2x3fv MANGLE(ProgramUniformMatrix2x3fv)
+#define glProgramUniformMatrix2x4dvEXT MANGLE(ProgramUniformMatrix2x4dvEXT)
+#define glProgramUniformMatrix2x4dv MANGLE(ProgramUniformMatrix2x4dv)
+#define glProgramUniformMatrix2x4fvEXT MANGLE(ProgramUniformMatrix2x4fvEXT)
+#define glProgramUniformMatrix2x4fv MANGLE(ProgramUniformMatrix2x4fv)
+#define glProgramUniformMatrix3dvEXT MANGLE(ProgramUniformMatrix3dvEXT)
+#define glProgramUniformMatrix3dv MANGLE(ProgramUniformMatrix3dv)
+#define glProgramUniformMatrix3fvEXT MANGLE(ProgramUniformMatrix3fvEXT)
+#define glProgramUniformMatrix3fv MANGLE(ProgramUniformMatrix3fv)
+#define glProgramUniformMatrix3x2dvEXT MANGLE(ProgramUniformMatrix3x2dvEXT)
+#define glProgramUniformMatrix3x2dv MANGLE(ProgramUniformMatrix3x2dv)
+#define glProgramUniformMatrix3x2fvEXT MANGLE(ProgramUniformMatrix3x2fvEXT)
+#define glProgramUniformMatrix3x2fv MANGLE(ProgramUniformMatrix3x2fv)
+#define glProgramUniformMatrix3x4dvEXT MANGLE(ProgramUniformMatrix3x4dvEXT)
+#define glProgramUniformMatrix3x4dv MANGLE(ProgramUniformMatrix3x4dv)
+#define glProgramUniformMatrix3x4fvEXT MANGLE(ProgramUniformMatrix3x4fvEXT)
+#define glProgramUniformMatrix3x4fv MANGLE(ProgramUniformMatrix3x4fv)
+#define glProgramUniformMatrix4dvEXT MANGLE(ProgramUniformMatrix4dvEXT)
+#define glProgramUniformMatrix4dv MANGLE(ProgramUniformMatrix4dv)
+#define glProgramUniformMatrix4fvEXT MANGLE(ProgramUniformMatrix4fvEXT)
+#define glProgramUniformMatrix4fv MANGLE(ProgramUniformMatrix4fv)
+#define glProgramUniformMatrix4x2dvEXT MANGLE(ProgramUniformMatrix4x2dvEXT)
+#define glProgramUniformMatrix4x2dv MANGLE(ProgramUniformMatrix4x2dv)
+#define glProgramUniformMatrix4x2fvEXT MANGLE(ProgramUniformMatrix4x2fvEXT)
+#define glProgramUniformMatrix4x2fv MANGLE(ProgramUniformMatrix4x2fv)
+#define glProgramUniformMatrix4x3dvEXT MANGLE(ProgramUniformMatrix4x3dvEXT)
+#define glProgramUniformMatrix4x3dv MANGLE(ProgramUniformMatrix4x3dv)
+#define glProgramUniformMatrix4x3fvEXT MANGLE(ProgramUniformMatrix4x3fvEXT)
+#define glProgramUniformMatrix4x3fv MANGLE(ProgramUniformMatrix4x3fv)
+#define glProgramUniformui64NV MANGLE(ProgramUniformui64NV)
+#define glProgramUniformui64vNV MANGLE(ProgramUniformui64vNV)
+#define glProgramVertexLimitNV MANGLE(ProgramVertexLimitNV)
+#define glProvokingVertexEXT MANGLE(ProvokingVertexEXT)
+#define glProvokingVertex MANGLE(ProvokingVertex)
+#define glPushAttrib MANGLE(PushAttrib)
+#define glPushClientAttribDefaultEXT MANGLE(PushClientAttribDefaultEXT)
+#define glPushClientAttrib MANGLE(PushClientAttrib)
+#define glPushMatrix MANGLE(PushMatrix)
+#define glPushName MANGLE(PushName)
+#define glQueryCounter MANGLE(QueryCounter)
+#define glRasterPos2d MANGLE(RasterPos2d)
+#define glRasterPos2dv MANGLE(RasterPos2dv)
+#define glRasterPos2f MANGLE(RasterPos2f)
+#define glRasterPos2fv MANGLE(RasterPos2fv)
+#define glRasterPos2i MANGLE(RasterPos2i)
+#define glRasterPos2iv MANGLE(RasterPos2iv)
+#define glRasterPos2s MANGLE(RasterPos2s)
+#define glRasterPos2sv MANGLE(RasterPos2sv)
+#define glRasterPos3d MANGLE(RasterPos3d)
+#define glRasterPos3dv MANGLE(RasterPos3dv)
+#define glRasterPos3f MANGLE(RasterPos3f)
+#define glRasterPos3fv MANGLE(RasterPos3fv)
+#define glRasterPos3i MANGLE(RasterPos3i)
+#define glRasterPos3iv MANGLE(RasterPos3iv)
+#define glRasterPos3s MANGLE(RasterPos3s)
+#define glRasterPos3sv MANGLE(RasterPos3sv)
+#define glRasterPos4d MANGLE(RasterPos4d)
+#define glRasterPos4dv MANGLE(RasterPos4dv)
+#define glRasterPos4f MANGLE(RasterPos4f)
+#define glRasterPos4fv MANGLE(RasterPos4fv)
+#define glRasterPos4i MANGLE(RasterPos4i)
+#define glRasterPos4iv MANGLE(RasterPos4iv)
+#define glRasterPos4s MANGLE(RasterPos4s)
+#define glRasterPos4sv MANGLE(RasterPos4sv)
+#define glReadBuffer MANGLE(ReadBuffer)
+#define glReadInstrumentsSGIX MANGLE(ReadInstrumentsSGIX)
+#define glReadnPixelsARB MANGLE(ReadnPixelsARB)
+#define glReadPixels MANGLE(ReadPixels)
+#define glRectd MANGLE(Rectd)
+#define glRectdv MANGLE(Rectdv)
+#define glRectf MANGLE(Rectf)
+#define glRectfv MANGLE(Rectfv)
+#define glRecti MANGLE(Recti)
+#define glRectiv MANGLE(Rectiv)
+#define glRects MANGLE(Rects)
+#define glRectsv MANGLE(Rectsv)
+#define glReferencePlaneSGIX MANGLE(ReferencePlaneSGIX)
+#define glReleaseShaderCompiler MANGLE(ReleaseShaderCompiler)
+#define glRenderbufferStorageEXT MANGLE(RenderbufferStorageEXT)
+#define glRenderbufferStorage MANGLE(RenderbufferStorage)
+#define glRenderbufferStorageMultisampleCoverageNV MANGLE(RenderbufferStorageMultisampleCoverageNV)
+#define glRenderbufferStorageMultisampleEXT MANGLE(RenderbufferStorageMultisampleEXT)
+#define glRenderbufferStorageMultisample MANGLE(RenderbufferStorageMultisample)
+#define glRenderMode MANGLE(RenderMode)
+#define glReplacementCodePointerSUN MANGLE(ReplacementCodePointerSUN)
+#define glReplacementCodeubSUN MANGLE(ReplacementCodeubSUN)
+#define glReplacementCodeubvSUN MANGLE(ReplacementCodeubvSUN)
+#define glReplacementCodeuiColor3fVertex3fSUN MANGLE(ReplacementCodeuiColor3fVertex3fSUN)
+#define glReplacementCodeuiColor3fVertex3fvSUN MANGLE(ReplacementCodeuiColor3fVertex3fvSUN)
+#define glReplacementCodeuiColor4fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiColor4fNormal3fVertex3fSUN)
+#define glReplacementCodeuiColor4fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiColor4fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiColor4ubVertex3fSUN MANGLE(ReplacementCodeuiColor4ubVertex3fSUN)
+#define glReplacementCodeuiColor4ubVertex3fvSUN MANGLE(ReplacementCodeuiColor4ubVertex3fvSUN)
+#define glReplacementCodeuiNormal3fVertex3fSUN MANGLE(ReplacementCodeuiNormal3fVertex3fSUN)
+#define glReplacementCodeuiNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiNormal3fVertex3fvSUN)
+#define glReplacementCodeuiSUN MANGLE(ReplacementCodeuiSUN)
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN)
+#define glReplacementCodeuiTexCoord2fVertex3fSUN MANGLE(ReplacementCodeuiTexCoord2fVertex3fSUN)
+#define glReplacementCodeuiTexCoord2fVertex3fvSUN MANGLE(ReplacementCodeuiTexCoord2fVertex3fvSUN)
+#define glReplacementCodeuiVertex3fSUN MANGLE(ReplacementCodeuiVertex3fSUN)
+#define glReplacementCodeuiVertex3fvSUN MANGLE(ReplacementCodeuiVertex3fvSUN)
+#define glReplacementCodeuivSUN MANGLE(ReplacementCodeuivSUN)
+#define glReplacementCodeusSUN MANGLE(ReplacementCodeusSUN)
+#define glReplacementCodeusvSUN MANGLE(ReplacementCodeusvSUN)
+#define glRequestResidentProgramsNV MANGLE(RequestResidentProgramsNV)
+#define glResetHistogramEXT MANGLE(ResetHistogramEXT)
+#define glResetHistogram MANGLE(ResetHistogram)
+#define glResetMinmaxEXT MANGLE(ResetMinmaxEXT)
+#define glResetMinmax MANGLE(ResetMinmax)
+#define glResizeBuffersMESA MANGLE(ResizeBuffersMESA)
+#define glResumeTransformFeedback MANGLE(ResumeTransformFeedback)
+#define glResumeTransformFeedbackNV MANGLE(ResumeTransformFeedbackNV)
+#define glRotated MANGLE(Rotated)
+#define glRotatef MANGLE(Rotatef)
+#define glSampleCoverageARB MANGLE(SampleCoverageARB)
+#define glSampleCoverage MANGLE(SampleCoverage)
+#define glSampleMapATI MANGLE(SampleMapATI)
+#define glSampleMaskEXT MANGLE(SampleMaskEXT)
+#define glSampleMaski MANGLE(SampleMaski)
+#define glSampleMaskIndexedNV MANGLE(SampleMaskIndexedNV)
+#define glSampleMaskSGIS MANGLE(SampleMaskSGIS)
+#define glSamplePatternEXT MANGLE(SamplePatternEXT)
+#define glSamplePatternSGIS MANGLE(SamplePatternSGIS)
+#define glSamplerParameterf MANGLE(SamplerParameterf)
+#define glSamplerParameterfv MANGLE(SamplerParameterfv)
+#define glSamplerParameterIiv MANGLE(SamplerParameterIiv)
+#define glSamplerParameteri MANGLE(SamplerParameteri)
+#define glSamplerParameterIuiv MANGLE(SamplerParameterIuiv)
+#define glSamplerParameteriv MANGLE(SamplerParameteriv)
+#define glScaled MANGLE(Scaled)
+#define glScalef MANGLE(Scalef)
+#define glScissorArrayv MANGLE(ScissorArrayv)
+#define glScissorIndexed MANGLE(ScissorIndexed)
+#define glScissorIndexedv MANGLE(ScissorIndexedv)
+#define glScissor MANGLE(Scissor)
+#define glSecondaryColor3bEXT MANGLE(SecondaryColor3bEXT)
+#define glSecondaryColor3b MANGLE(SecondaryColor3b)
+#define glSecondaryColor3bvEXT MANGLE(SecondaryColor3bvEXT)
+#define glSecondaryColor3bv MANGLE(SecondaryColor3bv)
+#define glSecondaryColor3dEXT MANGLE(SecondaryColor3dEXT)
+#define glSecondaryColor3d MANGLE(SecondaryColor3d)
+#define glSecondaryColor3dvEXT MANGLE(SecondaryColor3dvEXT)
+#define glSecondaryColor3dv MANGLE(SecondaryColor3dv)
+#define glSecondaryColor3fEXT MANGLE(SecondaryColor3fEXT)
+#define glSecondaryColor3f MANGLE(SecondaryColor3f)
+#define glSecondaryColor3fvEXT MANGLE(SecondaryColor3fvEXT)
+#define glSecondaryColor3fv MANGLE(SecondaryColor3fv)
+#define glSecondaryColor3hNV MANGLE(SecondaryColor3hNV)
+#define glSecondaryColor3hvNV MANGLE(SecondaryColor3hvNV)
+#define glSecondaryColor3iEXT MANGLE(SecondaryColor3iEXT)
+#define glSecondaryColor3i MANGLE(SecondaryColor3i)
+#define glSecondaryColor3ivEXT MANGLE(SecondaryColor3ivEXT)
+#define glSecondaryColor3iv MANGLE(SecondaryColor3iv)
+#define glSecondaryColor3sEXT MANGLE(SecondaryColor3sEXT)
+#define glSecondaryColor3s MANGLE(SecondaryColor3s)
+#define glSecondaryColor3svEXT MANGLE(SecondaryColor3svEXT)
+#define glSecondaryColor3sv MANGLE(SecondaryColor3sv)
+#define glSecondaryColor3ubEXT MANGLE(SecondaryColor3ubEXT)
+#define glSecondaryColor3ub MANGLE(SecondaryColor3ub)
+#define glSecondaryColor3ubvEXT MANGLE(SecondaryColor3ubvEXT)
+#define glSecondaryColor3ubv MANGLE(SecondaryColor3ubv)
+#define glSecondaryColor3uiEXT MANGLE(SecondaryColor3uiEXT)
+#define glSecondaryColor3ui MANGLE(SecondaryColor3ui)
+#define glSecondaryColor3uivEXT MANGLE(SecondaryColor3uivEXT)
+#define glSecondaryColor3uiv MANGLE(SecondaryColor3uiv)
+#define glSecondaryColor3usEXT MANGLE(SecondaryColor3usEXT)
+#define glSecondaryColor3us MANGLE(SecondaryColor3us)
+#define glSecondaryColor3usvEXT MANGLE(SecondaryColor3usvEXT)
+#define glSecondaryColor3usv MANGLE(SecondaryColor3usv)
+#define glSecondaryColorFormatNV MANGLE(SecondaryColorFormatNV)
+#define glSecondaryColorP3ui MANGLE(SecondaryColorP3ui)
+#define glSecondaryColorP3uiv MANGLE(SecondaryColorP3uiv)
+#define glSecondaryColorPointerEXT MANGLE(SecondaryColorPointerEXT)
+#define glSecondaryColorPointerListIBM MANGLE(SecondaryColorPointerListIBM)
+#define glSecondaryColorPointer MANGLE(SecondaryColorPointer)
+#define glSelectBuffer MANGLE(SelectBuffer)
+#define glSelectPerfMonitorCountersAMD MANGLE(SelectPerfMonitorCountersAMD)
+#define glSeparableFilter2DEXT MANGLE(SeparableFilter2DEXT)
+#define glSeparableFilter2D MANGLE(SeparableFilter2D)
+#define glSetFenceAPPLE MANGLE(SetFenceAPPLE)
+#define glSetFenceNV MANGLE(SetFenceNV)
+#define glSetFragmentShaderConstantATI MANGLE(SetFragmentShaderConstantATI)
+#define glSetInvariantEXT MANGLE(SetInvariantEXT)
+#define glSetLocalConstantEXT MANGLE(SetLocalConstantEXT)
+#define glShadeModel MANGLE(ShadeModel)
+#define glShaderBinary MANGLE(ShaderBinary)
+#define glShaderOp1EXT MANGLE(ShaderOp1EXT)
+#define glShaderOp2EXT MANGLE(ShaderOp2EXT)
+#define glShaderOp3EXT MANGLE(ShaderOp3EXT)
+#define glShaderSourceARB MANGLE(ShaderSourceARB)
+#define glShaderSource MANGLE(ShaderSource)
+#define glSharpenTexFuncSGIS MANGLE(SharpenTexFuncSGIS)
+#define glSpriteParameterfSGIX MANGLE(SpriteParameterfSGIX)
+#define glSpriteParameterfvSGIX MANGLE(SpriteParameterfvSGIX)
+#define glSpriteParameteriSGIX MANGLE(SpriteParameteriSGIX)
+#define glSpriteParameterivSGIX MANGLE(SpriteParameterivSGIX)
+#define glStartInstrumentsSGIX MANGLE(StartInstrumentsSGIX)
+#define glStencilClearTagEXT MANGLE(StencilClearTagEXT)
+#define glStencilFunc MANGLE(StencilFunc)
+#define glStencilFuncSeparateATI MANGLE(StencilFuncSeparateATI)
+#define glStencilFuncSeparate MANGLE(StencilFuncSeparate)
+#define glStencilMask MANGLE(StencilMask)
+#define glStencilMaskSeparate MANGLE(StencilMaskSeparate)
+#define glStencilOp MANGLE(StencilOp)
+#define glStencilOpSeparateATI MANGLE(StencilOpSeparateATI)
+#define glStencilOpSeparate MANGLE(StencilOpSeparate)
+#define glStopInstrumentsSGIX MANGLE(StopInstrumentsSGIX)
+#define glStringMarkerGREMEDY MANGLE(StringMarkerGREMEDY)
+#define glSwizzleEXT MANGLE(SwizzleEXT)
+#define glTagSampleBufferSGIX MANGLE(TagSampleBufferSGIX)
+#define glTangent3bEXT MANGLE(Tangent3bEXT)
+#define glTangent3bvEXT MANGLE(Tangent3bvEXT)
+#define glTangent3dEXT MANGLE(Tangent3dEXT)
+#define glTangent3dvEXT MANGLE(Tangent3dvEXT)
+#define glTangent3fEXT MANGLE(Tangent3fEXT)
+#define glTangent3fvEXT MANGLE(Tangent3fvEXT)
+#define glTangent3iEXT MANGLE(Tangent3iEXT)
+#define glTangent3ivEXT MANGLE(Tangent3ivEXT)
+#define glTangent3sEXT MANGLE(Tangent3sEXT)
+#define glTangent3svEXT MANGLE(Tangent3svEXT)
+#define glTangentPointerEXT MANGLE(TangentPointerEXT)
+#define glTbufferMask3DFX MANGLE(TbufferMask3DFX)
+#define glTessellationFactorAMD MANGLE(TessellationFactorAMD)
+#define glTessellationModeAMD MANGLE(TessellationModeAMD)
+#define glTestFenceAPPLE MANGLE(TestFenceAPPLE)
+#define glTestFenceNV MANGLE(TestFenceNV)
+#define glTestObjectAPPLE MANGLE(TestObjectAPPLE)
+#define glTexBufferARB MANGLE(TexBufferARB)
+#define glTexBufferEXT MANGLE(TexBufferEXT)
+#define glTexBuffer MANGLE(TexBuffer)
+#define glTexBumpParameterfvATI MANGLE(TexBumpParameterfvATI)
+#define glTexBumpParameterivATI MANGLE(TexBumpParameterivATI)
+#define glTexCoord1d MANGLE(TexCoord1d)
+#define glTexCoord1dv MANGLE(TexCoord1dv)
+#define glTexCoord1f MANGLE(TexCoord1f)
+#define glTexCoord1fv MANGLE(TexCoord1fv)
+#define glTexCoord1hNV MANGLE(TexCoord1hNV)
+#define glTexCoord1hvNV MANGLE(TexCoord1hvNV)
+#define glTexCoord1i MANGLE(TexCoord1i)
+#define glTexCoord1iv MANGLE(TexCoord1iv)
+#define glTexCoord1s MANGLE(TexCoord1s)
+#define glTexCoord1sv MANGLE(TexCoord1sv)
+#define glTexCoord2d MANGLE(TexCoord2d)
+#define glTexCoord2dv MANGLE(TexCoord2dv)
+#define glTexCoord2fColor3fVertex3fSUN MANGLE(TexCoord2fColor3fVertex3fSUN)
+#define glTexCoord2fColor3fVertex3fvSUN MANGLE(TexCoord2fColor3fVertex3fvSUN)
+#define glTexCoord2fColor4fNormal3fVertex3fSUN MANGLE(TexCoord2fColor4fNormal3fVertex3fSUN)
+#define glTexCoord2fColor4fNormal3fVertex3fvSUN MANGLE(TexCoord2fColor4fNormal3fVertex3fvSUN)
+#define glTexCoord2fColor4ubVertex3fSUN MANGLE(TexCoord2fColor4ubVertex3fSUN)
+#define glTexCoord2fColor4ubVertex3fvSUN MANGLE(TexCoord2fColor4ubVertex3fvSUN)
+#define glTexCoord2f MANGLE(TexCoord2f)
+#define glTexCoord2fNormal3fVertex3fSUN MANGLE(TexCoord2fNormal3fVertex3fSUN)
+#define glTexCoord2fNormal3fVertex3fvSUN MANGLE(TexCoord2fNormal3fVertex3fvSUN)
+#define glTexCoord2fVertex3fSUN MANGLE(TexCoord2fVertex3fSUN)
+#define glTexCoord2fVertex3fvSUN MANGLE(TexCoord2fVertex3fvSUN)
+#define glTexCoord2fv MANGLE(TexCoord2fv)
+#define glTexCoord2hNV MANGLE(TexCoord2hNV)
+#define glTexCoord2hvNV MANGLE(TexCoord2hvNV)
+#define glTexCoord2i MANGLE(TexCoord2i)
+#define glTexCoord2iv MANGLE(TexCoord2iv)
+#define glTexCoord2s MANGLE(TexCoord2s)
+#define glTexCoord2sv MANGLE(TexCoord2sv)
+#define glTexCoord3d MANGLE(TexCoord3d)
+#define glTexCoord3dv MANGLE(TexCoord3dv)
+#define glTexCoord3f MANGLE(TexCoord3f)
+#define glTexCoord3fv MANGLE(TexCoord3fv)
+#define glTexCoord3hNV MANGLE(TexCoord3hNV)
+#define glTexCoord3hvNV MANGLE(TexCoord3hvNV)
+#define glTexCoord3i MANGLE(TexCoord3i)
+#define glTexCoord3iv MANGLE(TexCoord3iv)
+#define glTexCoord3s MANGLE(TexCoord3s)
+#define glTexCoord3sv MANGLE(TexCoord3sv)
+#define glTexCoord4d MANGLE(TexCoord4d)
+#define glTexCoord4dv MANGLE(TexCoord4dv)
+#define glTexCoord4fColor4fNormal3fVertex4fSUN MANGLE(TexCoord4fColor4fNormal3fVertex4fSUN)
+#define glTexCoord4fColor4fNormal3fVertex4fvSUN MANGLE(TexCoord4fColor4fNormal3fVertex4fvSUN)
+#define glTexCoord4f MANGLE(TexCoord4f)
+#define glTexCoord4fVertex4fSUN MANGLE(TexCoord4fVertex4fSUN)
+#define glTexCoord4fVertex4fvSUN MANGLE(TexCoord4fVertex4fvSUN)
+#define glTexCoord4fv MANGLE(TexCoord4fv)
+#define glTexCoord4hNV MANGLE(TexCoord4hNV)
+#define glTexCoord4hvNV MANGLE(TexCoord4hvNV)
+#define glTexCoord4i MANGLE(TexCoord4i)
+#define glTexCoord4iv MANGLE(TexCoord4iv)
+#define glTexCoord4s MANGLE(TexCoord4s)
+#define glTexCoord4sv MANGLE(TexCoord4sv)
+#define glTexCoordFormatNV MANGLE(TexCoordFormatNV)
+#define glTexCoordP1ui MANGLE(TexCoordP1ui)
+#define glTexCoordP1uiv MANGLE(TexCoordP1uiv)
+#define glTexCoordP2ui MANGLE(TexCoordP2ui)
+#define glTexCoordP2uiv MANGLE(TexCoordP2uiv)
+#define glTexCoordP3ui MANGLE(TexCoordP3ui)
+#define glTexCoordP3uiv MANGLE(TexCoordP3uiv)
+#define glTexCoordP4ui MANGLE(TexCoordP4ui)
+#define glTexCoordP4uiv MANGLE(TexCoordP4uiv)
+#define glTexCoordPointerEXT MANGLE(TexCoordPointerEXT)
+#define glTexCoordPointerListIBM MANGLE(TexCoordPointerListIBM)
+#define glTexCoordPointer MANGLE(TexCoordPointer)
+#define glTexCoordPointervINTEL MANGLE(TexCoordPointervINTEL)
+#define glTexEnvf MANGLE(TexEnvf)
+#define glTexEnvfv MANGLE(TexEnvfv)
+#define glTexEnvi MANGLE(TexEnvi)
+#define glTexEnviv MANGLE(TexEnviv)
+#define glTexFilterFuncSGIS MANGLE(TexFilterFuncSGIS)
+#define glTexGend MANGLE(TexGend)
+#define glTexGendv MANGLE(TexGendv)
+#define glTexGenf MANGLE(TexGenf)
+#define glTexGenfv MANGLE(TexGenfv)
+#define glTexGeni MANGLE(TexGeni)
+#define glTexGeniv MANGLE(TexGeniv)
+#define glTexImage1D MANGLE(TexImage1D)
+#define glTexImage2D MANGLE(TexImage2D)
+#define glTexImage2DMultisample MANGLE(TexImage2DMultisample)
+#define glTexImage3DEXT MANGLE(TexImage3DEXT)
+#define glTexImage3D MANGLE(TexImage3D)
+#define glTexImage3DMultisample MANGLE(TexImage3DMultisample)
+#define glTexImage4DSGIS MANGLE(TexImage4DSGIS)
+#define glTexParameterf MANGLE(TexParameterf)
+#define glTexParameterfv MANGLE(TexParameterfv)
+#define glTexParameterIivEXT MANGLE(TexParameterIivEXT)
+#define glTexParameterIiv MANGLE(TexParameterIiv)
+#define glTexParameteri MANGLE(TexParameteri)
+#define glTexParameterIuivEXT MANGLE(TexParameterIuivEXT)
+#define glTexParameterIuiv MANGLE(TexParameterIuiv)
+#define glTexParameteriv MANGLE(TexParameteriv)
+#define glTexRenderbufferNV MANGLE(TexRenderbufferNV)
+#define glTexSubImage1DEXT MANGLE(TexSubImage1DEXT)
+#define glTexSubImage1D MANGLE(TexSubImage1D)
+#define glTexSubImage2DEXT MANGLE(TexSubImage2DEXT)
+#define glTexSubImage2D MANGLE(TexSubImage2D)
+#define glTexSubImage3DEXT MANGLE(TexSubImage3DEXT)
+#define glTexSubImage3D MANGLE(TexSubImage3D)
+#define glTexSubImage4DSGIS MANGLE(TexSubImage4DSGIS)
+#define glTextureBarrierNV MANGLE(TextureBarrierNV)
+#define glTextureBufferEXT MANGLE(TextureBufferEXT)
+#define glTextureColorMaskSGIS MANGLE(TextureColorMaskSGIS)
+#define glTextureImage1DEXT MANGLE(TextureImage1DEXT)
+#define glTextureImage2DEXT MANGLE(TextureImage2DEXT)
+#define glTextureImage3DEXT MANGLE(TextureImage3DEXT)
+#define glTextureLightEXT MANGLE(TextureLightEXT)
+#define glTextureMaterialEXT MANGLE(TextureMaterialEXT)
+#define glTextureNormalEXT MANGLE(TextureNormalEXT)
+#define glTextureParameterfEXT MANGLE(TextureParameterfEXT)
+#define glTextureParameterfvEXT MANGLE(TextureParameterfvEXT)
+#define glTextureParameteriEXT MANGLE(TextureParameteriEXT)
+#define glTextureParameterIivEXT MANGLE(TextureParameterIivEXT)
+#define glTextureParameterIuivEXT MANGLE(TextureParameterIuivEXT)
+#define glTextureParameterivEXT MANGLE(TextureParameterivEXT)
+#define glTextureRangeAPPLE MANGLE(TextureRangeAPPLE)
+#define glTextureRenderbufferEXT MANGLE(TextureRenderbufferEXT)
+#define glTextureSubImage1DEXT MANGLE(TextureSubImage1DEXT)
+#define glTextureSubImage2DEXT MANGLE(TextureSubImage2DEXT)
+#define glTextureSubImage3DEXT MANGLE(TextureSubImage3DEXT)
+#define glTrackMatrixNV MANGLE(TrackMatrixNV)
+#define glTransformFeedbackAttribsNV MANGLE(TransformFeedbackAttribsNV)
+#define glTransformFeedbackStreamAttribsNV MANGLE(TransformFeedbackStreamAttribsNV)
+#define glTransformFeedbackVaryingsEXT MANGLE(TransformFeedbackVaryingsEXT)
+#define glTransformFeedbackVaryings MANGLE(TransformFeedbackVaryings)
+#define glTransformFeedbackVaryingsNV MANGLE(TransformFeedbackVaryingsNV)
+#define glTranslated MANGLE(Translated)
+#define glTranslatef MANGLE(Translatef)
+#define glUniform1d MANGLE(Uniform1d)
+#define glUniform1dv MANGLE(Uniform1dv)
+#define glUniform1fARB MANGLE(Uniform1fARB)
+#define glUniform1f MANGLE(Uniform1f)
+#define glUniform1fvARB MANGLE(Uniform1fvARB)
+#define glUniform1fv MANGLE(Uniform1fv)
+#define glUniform1i64NV MANGLE(Uniform1i64NV)
+#define glUniform1i64vNV MANGLE(Uniform1i64vNV)
+#define glUniform1iARB MANGLE(Uniform1iARB)
+#define glUniform1i MANGLE(Uniform1i)
+#define glUniform1ivARB MANGLE(Uniform1ivARB)
+#define glUniform1iv MANGLE(Uniform1iv)
+#define glUniform1ui64NV MANGLE(Uniform1ui64NV)
+#define glUniform1ui64vNV MANGLE(Uniform1ui64vNV)
+#define glUniform1uiEXT MANGLE(Uniform1uiEXT)
+#define glUniform1ui MANGLE(Uniform1ui)
+#define glUniform1uivEXT MANGLE(Uniform1uivEXT)
+#define glUniform1uiv MANGLE(Uniform1uiv)
+#define glUniform2d MANGLE(Uniform2d)
+#define glUniform2dv MANGLE(Uniform2dv)
+#define glUniform2fARB MANGLE(Uniform2fARB)
+#define glUniform2f MANGLE(Uniform2f)
+#define glUniform2fvARB MANGLE(Uniform2fvARB)
+#define glUniform2fv MANGLE(Uniform2fv)
+#define glUniform2i64NV MANGLE(Uniform2i64NV)
+#define glUniform2i64vNV MANGLE(Uniform2i64vNV)
+#define glUniform2iARB MANGLE(Uniform2iARB)
+#define glUniform2i MANGLE(Uniform2i)
+#define glUniform2ivARB MANGLE(Uniform2ivARB)
+#define glUniform2iv MANGLE(Uniform2iv)
+#define glUniform2ui64NV MANGLE(Uniform2ui64NV)
+#define glUniform2ui64vNV MANGLE(Uniform2ui64vNV)
+#define glUniform2uiEXT MANGLE(Uniform2uiEXT)
+#define glUniform2ui MANGLE(Uniform2ui)
+#define glUniform2uivEXT MANGLE(Uniform2uivEXT)
+#define glUniform2uiv MANGLE(Uniform2uiv)
+#define glUniform3d MANGLE(Uniform3d)
+#define glUniform3dv MANGLE(Uniform3dv)
+#define glUniform3fARB MANGLE(Uniform3fARB)
+#define glUniform3f MANGLE(Uniform3f)
+#define glUniform3fvARB MANGLE(Uniform3fvARB)
+#define glUniform3fv MANGLE(Uniform3fv)
+#define glUniform3i64NV MANGLE(Uniform3i64NV)
+#define glUniform3i64vNV MANGLE(Uniform3i64vNV)
+#define glUniform3iARB MANGLE(Uniform3iARB)
+#define glUniform3i MANGLE(Uniform3i)
+#define glUniform3ivARB MANGLE(Uniform3ivARB)
+#define glUniform3iv MANGLE(Uniform3iv)
+#define glUniform3ui64NV MANGLE(Uniform3ui64NV)
+#define glUniform3ui64vNV MANGLE(Uniform3ui64vNV)
+#define glUniform3uiEXT MANGLE(Uniform3uiEXT)
+#define glUniform3ui MANGLE(Uniform3ui)
+#define glUniform3uivEXT MANGLE(Uniform3uivEXT)
+#define glUniform3uiv MANGLE(Uniform3uiv)
+#define glUniform4d MANGLE(Uniform4d)
+#define glUniform4dv MANGLE(Uniform4dv)
+#define glUniform4fARB MANGLE(Uniform4fARB)
+#define glUniform4f MANGLE(Uniform4f)
+#define glUniform4fvARB MANGLE(Uniform4fvARB)
+#define glUniform4fv MANGLE(Uniform4fv)
+#define glUniform4i64NV MANGLE(Uniform4i64NV)
+#define glUniform4i64vNV MANGLE(Uniform4i64vNV)
+#define glUniform4iARB MANGLE(Uniform4iARB)
+#define glUniform4i MANGLE(Uniform4i)
+#define glUniform4ivARB MANGLE(Uniform4ivARB)
+#define glUniform4iv MANGLE(Uniform4iv)
+#define glUniform4ui64NV MANGLE(Uniform4ui64NV)
+#define glUniform4ui64vNV MANGLE(Uniform4ui64vNV)
+#define glUniform4uiEXT MANGLE(Uniform4uiEXT)
+#define glUniform4ui MANGLE(Uniform4ui)
+#define glUniform4uivEXT MANGLE(Uniform4uivEXT)
+#define glUniform4uiv MANGLE(Uniform4uiv)
+#define glUniformBlockBinding MANGLE(UniformBlockBinding)
+#define glUniformBufferEXT MANGLE(UniformBufferEXT)
+#define glUniformMatrix2dv MANGLE(UniformMatrix2dv)
+#define glUniformMatrix2fvARB MANGLE(UniformMatrix2fvARB)
+#define glUniformMatrix2fv MANGLE(UniformMatrix2fv)
+#define glUniformMatrix2x3dv MANGLE(UniformMatrix2x3dv)
+#define glUniformMatrix2x3fv MANGLE(UniformMatrix2x3fv)
+#define glUniformMatrix2x4dv MANGLE(UniformMatrix2x4dv)
+#define glUniformMatrix2x4fv MANGLE(UniformMatrix2x4fv)
+#define glUniformMatrix3dv MANGLE(UniformMatrix3dv)
+#define glUniformMatrix3fvARB MANGLE(UniformMatrix3fvARB)
+#define glUniformMatrix3fv MANGLE(UniformMatrix3fv)
+#define glUniformMatrix3x2dv MANGLE(UniformMatrix3x2dv)
+#define glUniformMatrix3x2fv MANGLE(UniformMatrix3x2fv)
+#define glUniformMatrix3x4dv MANGLE(UniformMatrix3x4dv)
+#define glUniformMatrix3x4fv MANGLE(UniformMatrix3x4fv)
+#define glUniformMatrix4dv MANGLE(UniformMatrix4dv)
+#define glUniformMatrix4fvARB MANGLE(UniformMatrix4fvARB)
+#define glUniformMatrix4fv MANGLE(UniformMatrix4fv)
+#define glUniformMatrix4x2dv MANGLE(UniformMatrix4x2dv)
+#define glUniformMatrix4x2fv MANGLE(UniformMatrix4x2fv)
+#define glUniformMatrix4x3dv MANGLE(UniformMatrix4x3dv)
+#define glUniformMatrix4x3fv MANGLE(UniformMatrix4x3fv)
+#define glUniformSubroutinesuiv MANGLE(UniformSubroutinesuiv)
+#define glUniformui64NV MANGLE(Uniformui64NV)
+#define glUniformui64vNV MANGLE(Uniformui64vNV)
+#define glUnlockArraysEXT MANGLE(UnlockArraysEXT)
+#define glUnmapBufferARB MANGLE(UnmapBufferARB)
+#define glUnmapBuffer MANGLE(UnmapBuffer)
+#define glUnmapNamedBufferEXT MANGLE(UnmapNamedBufferEXT)
+#define glUnmapObjectBufferATI MANGLE(UnmapObjectBufferATI)
+#define glUpdateObjectBufferATI MANGLE(UpdateObjectBufferATI)
+#define glUseProgram MANGLE(UseProgram)
+#define glUseProgramObjectARB MANGLE(UseProgramObjectARB)
+#define glUseProgramStages MANGLE(UseProgramStages)
+#define glUseShaderProgramEXT MANGLE(UseShaderProgramEXT)
+#define glValidateProgramARB MANGLE(ValidateProgramARB)
+#define glValidateProgram MANGLE(ValidateProgram)
+#define glValidateProgramPipeline MANGLE(ValidateProgramPipeline)
+#define glVariantArrayObjectATI MANGLE(VariantArrayObjectATI)
+#define glVariantbvEXT MANGLE(VariantbvEXT)
+#define glVariantdvEXT MANGLE(VariantdvEXT)
+#define glVariantfvEXT MANGLE(VariantfvEXT)
+#define glVariantivEXT MANGLE(VariantivEXT)
+#define glVariantPointerEXT MANGLE(VariantPointerEXT)
+#define glVariantsvEXT MANGLE(VariantsvEXT)
+#define glVariantubvEXT MANGLE(VariantubvEXT)
+#define glVariantuivEXT MANGLE(VariantuivEXT)
+#define glVariantusvEXT MANGLE(VariantusvEXT)
+#define glVDPAUFiniNV MANGLE(VDPAUFiniNV)
+#define glVDPAUGetSurfaceivNV MANGLE(VDPAUGetSurfaceivNV)
+#define glVDPAUInitNV MANGLE(VDPAUInitNV)
+#define glVDPAUIsSurfaceNV MANGLE(VDPAUIsSurfaceNV)
+#define glVDPAUMapSurfacesNV MANGLE(VDPAUMapSurfacesNV)
+#define glVDPAURegisterOutputSurfaceNV MANGLE(VDPAURegisterOutputSurfaceNV)
+#define glVDPAURegisterVideoSurfaceNV MANGLE(VDPAURegisterVideoSurfaceNV)
+#define glVDPAUSurfaceAccessNV MANGLE(VDPAUSurfaceAccessNV)
+#define glVDPAUUnmapSurfacesNV MANGLE(VDPAUUnmapSurfacesNV)
+#define glVDPAUUnregisterSurfaceNV MANGLE(VDPAUUnregisterSurfaceNV)
+#define glVertex2d MANGLE(Vertex2d)
+#define glVertex2dv MANGLE(Vertex2dv)
+#define glVertex2f MANGLE(Vertex2f)
+#define glVertex2fv MANGLE(Vertex2fv)
+#define glVertex2hNV MANGLE(Vertex2hNV)
+#define glVertex2hvNV MANGLE(Vertex2hvNV)
+#define glVertex2i MANGLE(Vertex2i)
+#define glVertex2iv MANGLE(Vertex2iv)
+#define glVertex2s MANGLE(Vertex2s)
+#define glVertex2sv MANGLE(Vertex2sv)
+#define glVertex3d MANGLE(Vertex3d)
+#define glVertex3dv MANGLE(Vertex3dv)
+#define glVertex3f MANGLE(Vertex3f)
+#define glVertex3fv MANGLE(Vertex3fv)
+#define glVertex3hNV MANGLE(Vertex3hNV)
+#define glVertex3hvNV MANGLE(Vertex3hvNV)
+#define glVertex3i MANGLE(Vertex3i)
+#define glVertex3iv MANGLE(Vertex3iv)
+#define glVertex3s MANGLE(Vertex3s)
+#define glVertex3sv MANGLE(Vertex3sv)
+#define glVertex4d MANGLE(Vertex4d)
+#define glVertex4dv MANGLE(Vertex4dv)
+#define glVertex4f MANGLE(Vertex4f)
+#define glVertex4fv MANGLE(Vertex4fv)
+#define glVertex4hNV MANGLE(Vertex4hNV)
+#define glVertex4hvNV MANGLE(Vertex4hvNV)
+#define glVertex4i MANGLE(Vertex4i)
+#define glVertex4iv MANGLE(Vertex4iv)
+#define glVertex4s MANGLE(Vertex4s)
+#define glVertex4sv MANGLE(Vertex4sv)
+#define glVertexArrayParameteriAPPLE MANGLE(VertexArrayParameteriAPPLE)
+#define glVertexArrayRangeAPPLE MANGLE(VertexArrayRangeAPPLE)
+#define glVertexArrayRangeNV MANGLE(VertexArrayRangeNV)
+#define glVertexArrayVertexAttribLOffsetEXT MANGLE(VertexArrayVertexAttribLOffsetEXT)
+#define glVertexAttrib1dARB MANGLE(VertexAttrib1dARB)
+#define glVertexAttrib1d MANGLE(VertexAttrib1d)
+#define glVertexAttrib1dNV MANGLE(VertexAttrib1dNV)
+#define glVertexAttrib1dvARB MANGLE(VertexAttrib1dvARB)
+#define glVertexAttrib1dv MANGLE(VertexAttrib1dv)
+#define glVertexAttrib1dvNV MANGLE(VertexAttrib1dvNV)
+#define glVertexAttrib1fARB MANGLE(VertexAttrib1fARB)
+#define glVertexAttrib1f MANGLE(VertexAttrib1f)
+#define glVertexAttrib1fNV MANGLE(VertexAttrib1fNV)
+#define glVertexAttrib1fvARB MANGLE(VertexAttrib1fvARB)
+#define glVertexAttrib1fv MANGLE(VertexAttrib1fv)
+#define glVertexAttrib1fvNV MANGLE(VertexAttrib1fvNV)
+#define glVertexAttrib1hNV MANGLE(VertexAttrib1hNV)
+#define glVertexAttrib1hvNV MANGLE(VertexAttrib1hvNV)
+#define glVertexAttrib1sARB MANGLE(VertexAttrib1sARB)
+#define glVertexAttrib1s MANGLE(VertexAttrib1s)
+#define glVertexAttrib1sNV MANGLE(VertexAttrib1sNV)
+#define glVertexAttrib1svARB MANGLE(VertexAttrib1svARB)
+#define glVertexAttrib1sv MANGLE(VertexAttrib1sv)
+#define glVertexAttrib1svNV MANGLE(VertexAttrib1svNV)
+#define glVertexAttrib2dARB MANGLE(VertexAttrib2dARB)
+#define glVertexAttrib2d MANGLE(VertexAttrib2d)
+#define glVertexAttrib2dNV MANGLE(VertexAttrib2dNV)
+#define glVertexAttrib2dvARB MANGLE(VertexAttrib2dvARB)
+#define glVertexAttrib2dv MANGLE(VertexAttrib2dv)
+#define glVertexAttrib2dvNV MANGLE(VertexAttrib2dvNV)
+#define glVertexAttrib2fARB MANGLE(VertexAttrib2fARB)
+#define glVertexAttrib2f MANGLE(VertexAttrib2f)
+#define glVertexAttrib2fNV MANGLE(VertexAttrib2fNV)
+#define glVertexAttrib2fvARB MANGLE(VertexAttrib2fvARB)
+#define glVertexAttrib2fv MANGLE(VertexAttrib2fv)
+#define glVertexAttrib2fvNV MANGLE(VertexAttrib2fvNV)
+#define glVertexAttrib2hNV MANGLE(VertexAttrib2hNV)
+#define glVertexAttrib2hvNV MANGLE(VertexAttrib2hvNV)
+#define glVertexAttrib2sARB MANGLE(VertexAttrib2sARB)
+#define glVertexAttrib2s MANGLE(VertexAttrib2s)
+#define glVertexAttrib2sNV MANGLE(VertexAttrib2sNV)
+#define glVertexAttrib2svARB MANGLE(VertexAttrib2svARB)
+#define glVertexAttrib2sv MANGLE(VertexAttrib2sv)
+#define glVertexAttrib2svNV MANGLE(VertexAttrib2svNV)
+#define glVertexAttrib3dARB MANGLE(VertexAttrib3dARB)
+#define glVertexAttrib3d MANGLE(VertexAttrib3d)
+#define glVertexAttrib3dNV MANGLE(VertexAttrib3dNV)
+#define glVertexAttrib3dvARB MANGLE(VertexAttrib3dvARB)
+#define glVertexAttrib3dv MANGLE(VertexAttrib3dv)
+#define glVertexAttrib3dvNV MANGLE(VertexAttrib3dvNV)
+#define glVertexAttrib3fARB MANGLE(VertexAttrib3fARB)
+#define glVertexAttrib3f MANGLE(VertexAttrib3f)
+#define glVertexAttrib3fNV MANGLE(VertexAttrib3fNV)
+#define glVertexAttrib3fvARB MANGLE(VertexAttrib3fvARB)
+#define glVertexAttrib3fv MANGLE(VertexAttrib3fv)
+#define glVertexAttrib3fvNV MANGLE(VertexAttrib3fvNV)
+#define glVertexAttrib3hNV MANGLE(VertexAttrib3hNV)
+#define glVertexAttrib3hvNV MANGLE(VertexAttrib3hvNV)
+#define glVertexAttrib3sARB MANGLE(VertexAttrib3sARB)
+#define glVertexAttrib3s MANGLE(VertexAttrib3s)
+#define glVertexAttrib3sNV MANGLE(VertexAttrib3sNV)
+#define glVertexAttrib3svARB MANGLE(VertexAttrib3svARB)
+#define glVertexAttrib3sv MANGLE(VertexAttrib3sv)
+#define glVertexAttrib3svNV MANGLE(VertexAttrib3svNV)
+#define glVertexAttrib4bvARB MANGLE(VertexAttrib4bvARB)
+#define glVertexAttrib4bv MANGLE(VertexAttrib4bv)
+#define glVertexAttrib4dARB MANGLE(VertexAttrib4dARB)
+#define glVertexAttrib4d MANGLE(VertexAttrib4d)
+#define glVertexAttrib4dNV MANGLE(VertexAttrib4dNV)
+#define glVertexAttrib4dvARB MANGLE(VertexAttrib4dvARB)
+#define glVertexAttrib4dv MANGLE(VertexAttrib4dv)
+#define glVertexAttrib4dvNV MANGLE(VertexAttrib4dvNV)
+#define glVertexAttrib4fARB MANGLE(VertexAttrib4fARB)
+#define glVertexAttrib4f MANGLE(VertexAttrib4f)
+#define glVertexAttrib4fNV MANGLE(VertexAttrib4fNV)
+#define glVertexAttrib4fvARB MANGLE(VertexAttrib4fvARB)
+#define glVertexAttrib4fv MANGLE(VertexAttrib4fv)
+#define glVertexAttrib4fvNV MANGLE(VertexAttrib4fvNV)
+#define glVertexAttrib4hNV MANGLE(VertexAttrib4hNV)
+#define glVertexAttrib4hvNV MANGLE(VertexAttrib4hvNV)
+#define glVertexAttrib4ivARB MANGLE(VertexAttrib4ivARB)
+#define glVertexAttrib4iv MANGLE(VertexAttrib4iv)
+#define glVertexAttrib4NbvARB MANGLE(VertexAttrib4NbvARB)
+#define glVertexAttrib4Nbv MANGLE(VertexAttrib4Nbv)
+#define glVertexAttrib4NivARB MANGLE(VertexAttrib4NivARB)
+#define glVertexAttrib4Niv MANGLE(VertexAttrib4Niv)
+#define glVertexAttrib4NsvARB MANGLE(VertexAttrib4NsvARB)
+#define glVertexAttrib4Nsv MANGLE(VertexAttrib4Nsv)
+#define glVertexAttrib4NubARB MANGLE(VertexAttrib4NubARB)
+#define glVertexAttrib4Nub MANGLE(VertexAttrib4Nub)
+#define glVertexAttrib4NubvARB MANGLE(VertexAttrib4NubvARB)
+#define glVertexAttrib4Nubv MANGLE(VertexAttrib4Nubv)
+#define glVertexAttrib4NuivARB MANGLE(VertexAttrib4NuivARB)
+#define glVertexAttrib4Nuiv MANGLE(VertexAttrib4Nuiv)
+#define glVertexAttrib4NusvARB MANGLE(VertexAttrib4NusvARB)
+#define glVertexAttrib4Nusv MANGLE(VertexAttrib4Nusv)
+#define glVertexAttrib4sARB MANGLE(VertexAttrib4sARB)
+#define glVertexAttrib4s MANGLE(VertexAttrib4s)
+#define glVertexAttrib4sNV MANGLE(VertexAttrib4sNV)
+#define glVertexAttrib4svARB MANGLE(VertexAttrib4svARB)
+#define glVertexAttrib4sv MANGLE(VertexAttrib4sv)
+#define glVertexAttrib4svNV MANGLE(VertexAttrib4svNV)
+#define glVertexAttrib4ubNV MANGLE(VertexAttrib4ubNV)
+#define glVertexAttrib4ubvARB MANGLE(VertexAttrib4ubvARB)
+#define glVertexAttrib4ubv MANGLE(VertexAttrib4ubv)
+#define glVertexAttrib4ubvNV MANGLE(VertexAttrib4ubvNV)
+#define glVertexAttrib4uivARB MANGLE(VertexAttrib4uivARB)
+#define glVertexAttrib4uiv MANGLE(VertexAttrib4uiv)
+#define glVertexAttrib4usvARB MANGLE(VertexAttrib4usvARB)
+#define glVertexAttrib4usv MANGLE(VertexAttrib4usv)
+#define glVertexAttribArrayObjectATI MANGLE(VertexAttribArrayObjectATI)
+#define glVertexAttribDivisorARB MANGLE(VertexAttribDivisorARB)
+#define glVertexAttribDivisor MANGLE(VertexAttribDivisor)
+#define glVertexAttribFormatNV MANGLE(VertexAttribFormatNV)
+#define glVertexAttribI1iEXT MANGLE(VertexAttribI1iEXT)
+#define glVertexAttribI1i MANGLE(VertexAttribI1i)
+#define glVertexAttribI1ivEXT MANGLE(VertexAttribI1ivEXT)
+#define glVertexAttribI1iv MANGLE(VertexAttribI1iv)
+#define glVertexAttribI1uiEXT MANGLE(VertexAttribI1uiEXT)
+#define glVertexAttribI1ui MANGLE(VertexAttribI1ui)
+#define glVertexAttribI1uivEXT MANGLE(VertexAttribI1uivEXT)
+#define glVertexAttribI1uiv MANGLE(VertexAttribI1uiv)
+#define glVertexAttribI2iEXT MANGLE(VertexAttribI2iEXT)
+#define glVertexAttribI2i MANGLE(VertexAttribI2i)
+#define glVertexAttribI2ivEXT MANGLE(VertexAttribI2ivEXT)
+#define glVertexAttribI2iv MANGLE(VertexAttribI2iv)
+#define glVertexAttribI2uiEXT MANGLE(VertexAttribI2uiEXT)
+#define glVertexAttribI2ui MANGLE(VertexAttribI2ui)
+#define glVertexAttribI2uivEXT MANGLE(VertexAttribI2uivEXT)
+#define glVertexAttribI2uiv MANGLE(VertexAttribI2uiv)
+#define glVertexAttribI3iEXT MANGLE(VertexAttribI3iEXT)
+#define glVertexAttribI3i MANGLE(VertexAttribI3i)
+#define glVertexAttribI3ivEXT MANGLE(VertexAttribI3ivEXT)
+#define glVertexAttribI3iv MANGLE(VertexAttribI3iv)
+#define glVertexAttribI3uiEXT MANGLE(VertexAttribI3uiEXT)
+#define glVertexAttribI3ui MANGLE(VertexAttribI3ui)
+#define glVertexAttribI3uivEXT MANGLE(VertexAttribI3uivEXT)
+#define glVertexAttribI3uiv MANGLE(VertexAttribI3uiv)
+#define glVertexAttribI4bvEXT MANGLE(VertexAttribI4bvEXT)
+#define glVertexAttribI4bv MANGLE(VertexAttribI4bv)
+#define glVertexAttribI4iEXT MANGLE(VertexAttribI4iEXT)
+#define glVertexAttribI4i MANGLE(VertexAttribI4i)
+#define glVertexAttribI4ivEXT MANGLE(VertexAttribI4ivEXT)
+#define glVertexAttribI4iv MANGLE(VertexAttribI4iv)
+#define glVertexAttribI4svEXT MANGLE(VertexAttribI4svEXT)
+#define glVertexAttribI4sv MANGLE(VertexAttribI4sv)
+#define glVertexAttribI4ubvEXT MANGLE(VertexAttribI4ubvEXT)
+#define glVertexAttribI4ubv MANGLE(VertexAttribI4ubv)
+#define glVertexAttribI4uiEXT MANGLE(VertexAttribI4uiEXT)
+#define glVertexAttribI4ui MANGLE(VertexAttribI4ui)
+#define glVertexAttribI4uivEXT MANGLE(VertexAttribI4uivEXT)
+#define glVertexAttribI4uiv MANGLE(VertexAttribI4uiv)
+#define glVertexAttribI4usvEXT MANGLE(VertexAttribI4usvEXT)
+#define glVertexAttribI4usv MANGLE(VertexAttribI4usv)
+#define glVertexAttribIFormatNV MANGLE(VertexAttribIFormatNV)
+#define glVertexAttribIPointerEXT MANGLE(VertexAttribIPointerEXT)
+#define glVertexAttribIPointer MANGLE(VertexAttribIPointer)
+#define glVertexAttribL1dEXT MANGLE(VertexAttribL1dEXT)
+#define glVertexAttribL1d MANGLE(VertexAttribL1d)
+#define glVertexAttribL1dvEXT MANGLE(VertexAttribL1dvEXT)
+#define glVertexAttribL1dv MANGLE(VertexAttribL1dv)
+#define glVertexAttribL1i64NV MANGLE(VertexAttribL1i64NV)
+#define glVertexAttribL1i64vNV MANGLE(VertexAttribL1i64vNV)
+#define glVertexAttribL1ui64NV MANGLE(VertexAttribL1ui64NV)
+#define glVertexAttribL1ui64vNV MANGLE(VertexAttribL1ui64vNV)
+#define glVertexAttribL2dEXT MANGLE(VertexAttribL2dEXT)
+#define glVertexAttribL2d MANGLE(VertexAttribL2d)
+#define glVertexAttribL2dvEXT MANGLE(VertexAttribL2dvEXT)
+#define glVertexAttribL2dv MANGLE(VertexAttribL2dv)
+#define glVertexAttribL2i64NV MANGLE(VertexAttribL2i64NV)
+#define glVertexAttribL2i64vNV MANGLE(VertexAttribL2i64vNV)
+#define glVertexAttribL2ui64NV MANGLE(VertexAttribL2ui64NV)
+#define glVertexAttribL2ui64vNV MANGLE(VertexAttribL2ui64vNV)
+#define glVertexAttribL3dEXT MANGLE(VertexAttribL3dEXT)
+#define glVertexAttribL3d MANGLE(VertexAttribL3d)
+#define glVertexAttribL3dvEXT MANGLE(VertexAttribL3dvEXT)
+#define glVertexAttribL3dv MANGLE(VertexAttribL3dv)
+#define glVertexAttribL3i64NV MANGLE(VertexAttribL3i64NV)
+#define glVertexAttribL3i64vNV MANGLE(VertexAttribL3i64vNV)
+#define glVertexAttribL3ui64NV MANGLE(VertexAttribL3ui64NV)
+#define glVertexAttribL3ui64vNV MANGLE(VertexAttribL3ui64vNV)
+#define glVertexAttribL4dEXT MANGLE(VertexAttribL4dEXT)
+#define glVertexAttribL4d MANGLE(VertexAttribL4d)
+#define glVertexAttribL4dvEXT MANGLE(VertexAttribL4dvEXT)
+#define glVertexAttribL4dv MANGLE(VertexAttribL4dv)
+#define glVertexAttribL4i64NV MANGLE(VertexAttribL4i64NV)
+#define glVertexAttribL4i64vNV MANGLE(VertexAttribL4i64vNV)
+#define glVertexAttribL4ui64NV MANGLE(VertexAttribL4ui64NV)
+#define glVertexAttribL4ui64vNV MANGLE(VertexAttribL4ui64vNV)
+#define glVertexAttribLFormatNV MANGLE(VertexAttribLFormatNV)
+#define glVertexAttribLPointerEXT MANGLE(VertexAttribLPointerEXT)
+#define glVertexAttribLPointer MANGLE(VertexAttribLPointer)
+#define glVertexAttribP1ui MANGLE(VertexAttribP1ui)
+#define glVertexAttribP1uiv MANGLE(VertexAttribP1uiv)
+#define glVertexAttribP2ui MANGLE(VertexAttribP2ui)
+#define glVertexAttribP2uiv MANGLE(VertexAttribP2uiv)
+#define glVertexAttribP3ui MANGLE(VertexAttribP3ui)
+#define glVertexAttribP3uiv MANGLE(VertexAttribP3uiv)
+#define glVertexAttribP4ui MANGLE(VertexAttribP4ui)
+#define glVertexAttribP4uiv MANGLE(VertexAttribP4uiv)
+#define glVertexAttribPointerARB MANGLE(VertexAttribPointerARB)
+#define glVertexAttribPointer MANGLE(VertexAttribPointer)
+#define glVertexAttribPointerNV MANGLE(VertexAttribPointerNV)
+#define glVertexAttribs1dvNV MANGLE(VertexAttribs1dvNV)
+#define glVertexAttribs1fvNV MANGLE(VertexAttribs1fvNV)
+#define glVertexAttribs1hvNV MANGLE(VertexAttribs1hvNV)
+#define glVertexAttribs1svNV MANGLE(VertexAttribs1svNV)
+#define glVertexAttribs2dvNV MANGLE(VertexAttribs2dvNV)
+#define glVertexAttribs2fvNV MANGLE(VertexAttribs2fvNV)
+#define glVertexAttribs2hvNV MANGLE(VertexAttribs2hvNV)
+#define glVertexAttribs2svNV MANGLE(VertexAttribs2svNV)
+#define glVertexAttribs3dvNV MANGLE(VertexAttribs3dvNV)
+#define glVertexAttribs3fvNV MANGLE(VertexAttribs3fvNV)
+#define glVertexAttribs3hvNV MANGLE(VertexAttribs3hvNV)
+#define glVertexAttribs3svNV MANGLE(VertexAttribs3svNV)
+#define glVertexAttribs4dvNV MANGLE(VertexAttribs4dvNV)
+#define glVertexAttribs4fvNV MANGLE(VertexAttribs4fvNV)
+#define glVertexAttribs4hvNV MANGLE(VertexAttribs4hvNV)
+#define glVertexAttribs4svNV MANGLE(VertexAttribs4svNV)
+#define glVertexAttribs4ubvNV MANGLE(VertexAttribs4ubvNV)
+#define glVertexBlendARB MANGLE(VertexBlendARB)
+#define glVertexBlendEnvfATI MANGLE(VertexBlendEnvfATI)
+#define glVertexBlendEnviATI MANGLE(VertexBlendEnviATI)
+#define glVertexFormatNV MANGLE(VertexFormatNV)
+#define glVertexP2ui MANGLE(VertexP2ui)
+#define glVertexP2uiv MANGLE(VertexP2uiv)
+#define glVertexP3ui MANGLE(VertexP3ui)
+#define glVertexP3uiv MANGLE(VertexP3uiv)
+#define glVertexP4ui MANGLE(VertexP4ui)
+#define glVertexP4uiv MANGLE(VertexP4uiv)
+#define glVertexPointerEXT MANGLE(VertexPointerEXT)
+#define glVertexPointerListIBM MANGLE(VertexPointerListIBM)
+#define glVertexPointer MANGLE(VertexPointer)
+#define glVertexPointervINTEL MANGLE(VertexPointervINTEL)
+#define glVertexStream1dATI MANGLE(VertexStream1dATI)
+#define glVertexStream1dvATI MANGLE(VertexStream1dvATI)
+#define glVertexStream1fATI MANGLE(VertexStream1fATI)
+#define glVertexStream1fvATI MANGLE(VertexStream1fvATI)
+#define glVertexStream1iATI MANGLE(VertexStream1iATI)
+#define glVertexStream1ivATI MANGLE(VertexStream1ivATI)
+#define glVertexStream1sATI MANGLE(VertexStream1sATI)
+#define glVertexStream1svATI MANGLE(VertexStream1svATI)
+#define glVertexStream2dATI MANGLE(VertexStream2dATI)
+#define glVertexStream2dvATI MANGLE(VertexStream2dvATI)
+#define glVertexStream2fATI MANGLE(VertexStream2fATI)
+#define glVertexStream2fvATI MANGLE(VertexStream2fvATI)
+#define glVertexStream2iATI MANGLE(VertexStream2iATI)
+#define glVertexStream2ivATI MANGLE(VertexStream2ivATI)
+#define glVertexStream2sATI MANGLE(VertexStream2sATI)
+#define glVertexStream2svATI MANGLE(VertexStream2svATI)
+#define glVertexStream3dATI MANGLE(VertexStream3dATI)
+#define glVertexStream3dvATI MANGLE(VertexStream3dvATI)
+#define glVertexStream3fATI MANGLE(VertexStream3fATI)
+#define glVertexStream3fvATI MANGLE(VertexStream3fvATI)
+#define glVertexStream3iATI MANGLE(VertexStream3iATI)
+#define glVertexStream3ivATI MANGLE(VertexStream3ivATI)
+#define glVertexStream3sATI MANGLE(VertexStream3sATI)
+#define glVertexStream3svATI MANGLE(VertexStream3svATI)
+#define glVertexStream4dATI MANGLE(VertexStream4dATI)
+#define glVertexStream4dvATI MANGLE(VertexStream4dvATI)
+#define glVertexStream4fATI MANGLE(VertexStream4fATI)
+#define glVertexStream4fvATI MANGLE(VertexStream4fvATI)
+#define glVertexStream4iATI MANGLE(VertexStream4iATI)
+#define glVertexStream4ivATI MANGLE(VertexStream4ivATI)
+#define glVertexStream4sATI MANGLE(VertexStream4sATI)
+#define glVertexStream4svATI MANGLE(VertexStream4svATI)
+#define glVertexWeightfEXT MANGLE(VertexWeightfEXT)
+#define glVertexWeightfvEXT MANGLE(VertexWeightfvEXT)
+#define glVertexWeighthNV MANGLE(VertexWeighthNV)
+#define glVertexWeighthvNV MANGLE(VertexWeighthvNV)
+#define glVertexWeightPointerEXT MANGLE(VertexWeightPointerEXT)
+#define glVideoCaptureNV MANGLE(VideoCaptureNV)
+#define glVideoCaptureStreamParameterdvNV MANGLE(VideoCaptureStreamParameterdvNV)
+#define glVideoCaptureStreamParameterfvNV MANGLE(VideoCaptureStreamParameterfvNV)
+#define glVideoCaptureStreamParameterivNV MANGLE(VideoCaptureStreamParameterivNV)
+#define glViewportArrayv MANGLE(ViewportArrayv)
+#define glViewportIndexedf MANGLE(ViewportIndexedf)
+#define glViewportIndexedfv MANGLE(ViewportIndexedfv)
+#define glViewport MANGLE(Viewport)
+#define glWaitSync MANGLE(WaitSync)
+#define glWeightbvARB MANGLE(WeightbvARB)
+#define glWeightdvARB MANGLE(WeightdvARB)
+#define glWeightfvARB MANGLE(WeightfvARB)
+#define glWeightivARB MANGLE(WeightivARB)
+#define glWeightPointerARB MANGLE(WeightPointerARB)
+#define glWeightsvARB MANGLE(WeightsvARB)
+#define glWeightubvARB MANGLE(WeightubvARB)
+#define glWeightuivARB MANGLE(WeightuivARB)
+#define glWeightusvARB MANGLE(WeightusvARB)
+#define glWindowPos2dARB MANGLE(WindowPos2dARB)
+#define glWindowPos2d MANGLE(WindowPos2d)
+#define glWindowPos2dMESA MANGLE(WindowPos2dMESA)
+#define glWindowPos2dvARB MANGLE(WindowPos2dvARB)
+#define glWindowPos2dv MANGLE(WindowPos2dv)
+#define glWindowPos2dvMESA MANGLE(WindowPos2dvMESA)
+#define glWindowPos2fARB MANGLE(WindowPos2fARB)
+#define glWindowPos2f MANGLE(WindowPos2f)
+#define glWindowPos2fMESA MANGLE(WindowPos2fMESA)
+#define glWindowPos2fvARB MANGLE(WindowPos2fvARB)
+#define glWindowPos2fv MANGLE(WindowPos2fv)
+#define glWindowPos2fvMESA MANGLE(WindowPos2fvMESA)
+#define glWindowPos2iARB MANGLE(WindowPos2iARB)
+#define glWindowPos2i MANGLE(WindowPos2i)
+#define glWindowPos2iMESA MANGLE(WindowPos2iMESA)
+#define glWindowPos2ivARB MANGLE(WindowPos2ivARB)
+#define glWindowPos2iv MANGLE(WindowPos2iv)
+#define glWindowPos2ivMESA MANGLE(WindowPos2ivMESA)
+#define glWindowPos2sARB MANGLE(WindowPos2sARB)
+#define glWindowPos2s MANGLE(WindowPos2s)
+#define glWindowPos2sMESA MANGLE(WindowPos2sMESA)
+#define glWindowPos2svARB MANGLE(WindowPos2svARB)
+#define glWindowPos2sv MANGLE(WindowPos2sv)
+#define glWindowPos2svMESA MANGLE(WindowPos2svMESA)
+#define glWindowPos3dARB MANGLE(WindowPos3dARB)
+#define glWindowPos3d MANGLE(WindowPos3d)
+#define glWindowPos3dMESA MANGLE(WindowPos3dMESA)
+#define glWindowPos3dvARB MANGLE(WindowPos3dvARB)
+#define glWindowPos3dv MANGLE(WindowPos3dv)
+#define glWindowPos3dvMESA MANGLE(WindowPos3dvMESA)
+#define glWindowPos3fARB MANGLE(WindowPos3fARB)
+#define glWindowPos3f MANGLE(WindowPos3f)
+#define glWindowPos3fMESA MANGLE(WindowPos3fMESA)
+#define glWindowPos3fvARB MANGLE(WindowPos3fvARB)
+#define glWindowPos3fv MANGLE(WindowPos3fv)
+#define glWindowPos3fvMESA MANGLE(WindowPos3fvMESA)
+#define glWindowPos3iARB MANGLE(WindowPos3iARB)
+#define glWindowPos3i MANGLE(WindowPos3i)
+#define glWindowPos3iMESA MANGLE(WindowPos3iMESA)
+#define glWindowPos3ivARB MANGLE(WindowPos3ivARB)
+#define glWindowPos3iv MANGLE(WindowPos3iv)
+#define glWindowPos3ivMESA MANGLE(WindowPos3ivMESA)
+#define glWindowPos3sARB MANGLE(WindowPos3sARB)
+#define glWindowPos3s MANGLE(WindowPos3s)
+#define glWindowPos3sMESA MANGLE(WindowPos3sMESA)
+#define glWindowPos3svARB MANGLE(WindowPos3svARB)
+#define glWindowPos3sv MANGLE(WindowPos3sv)
+#define glWindowPos3svMESA MANGLE(WindowPos3svMESA)
+#define glWindowPos4dMESA MANGLE(WindowPos4dMESA)
+#define glWindowPos4dvMESA MANGLE(WindowPos4dvMESA)
+#define glWindowPos4fMESA MANGLE(WindowPos4fMESA)
+#define glWindowPos4fvMESA MANGLE(WindowPos4fvMESA)
+#define glWindowPos4iMESA MANGLE(WindowPos4iMESA)
+#define glWindowPos4ivMESA MANGLE(WindowPos4ivMESA)
+#define glWindowPos4sMESA MANGLE(WindowPos4sMESA)
+#define glWindowPos4svMESA MANGLE(WindowPos4svMESA)
+#define glWriteMaskEXT MANGLE(WriteMaskEXT)
+
+#endif /* GL_MANGLE_H */
diff --git a/mesalib/scons/dxsdk.py b/mesalib/scons/dxsdk.py
index 4671763d3..920cc2f68 100644
--- a/mesalib/scons/dxsdk.py
+++ b/mesalib/scons/dxsdk.py
@@ -1,73 +1,73 @@
-"""dxsdk
-
-Tool-specific initialization for Microsoft DirectX SDK
-
-"""
-
-#
-# Copyright (c) 2009 VMware, Inc.
-#
-# 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-
-import os
-import os.path
-
-import SCons.Errors
-import SCons.Util
-
-
-def get_dxsdk_root(env):
- try:
- return os.environ['DXSDK_DIR']
- except KeyError:
- return None
-
-def generate(env):
- dxsdk_root = get_dxsdk_root(env)
- if dxsdk_root is None:
- # DirectX SDK not found
- return
-
- if env['machine'] in ('generic', 'x86'):
- target_cpu = 'x86'
- elif env['machine'] == 'x86_64':
- target_cpu = 'x64'
- else:
- raise SCons.Errors.InternalError, "Unsupported target machine"
-
- include_dir = os.path.join(dxsdk_root, 'Include')
- lib_dir = os.path.join(dxsdk_root, 'Lib', target_cpu)
-
- env.Append(CPPDEFINES = [('HAVE_DXSDK', '1')])
-
- gcc = 'gcc' in os.path.basename(env['CC']).split('-')
- if gcc:
- # Make GCC more forgiving towards Microsoft's headers
- env.Prepend(CPPFLAGS = ['-isystem', include_dir])
- else:
- env.Prepend(CPPPATH = [include_dir])
-
- env.Prepend(LIBPATH = [lib_dir])
-
-def exists(env):
- return get_dxsdk_root(env) is not None
-
-# vim:set ts=4 sw=4 et:
+"""dxsdk
+
+Tool-specific initialization for Microsoft DirectX SDK
+
+"""
+
+#
+# Copyright (c) 2009 VMware, Inc.
+#
+# 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+
+import os
+import os.path
+
+import SCons.Errors
+import SCons.Util
+
+
+def get_dxsdk_root(env):
+ try:
+ return os.environ['DXSDK_DIR']
+ except KeyError:
+ return None
+
+def generate(env):
+ dxsdk_root = get_dxsdk_root(env)
+ if dxsdk_root is None:
+ # DirectX SDK not found
+ return
+
+ if env['machine'] in ('generic', 'x86'):
+ target_cpu = 'x86'
+ elif env['machine'] == 'x86_64':
+ target_cpu = 'x64'
+ else:
+ raise SCons.Errors.InternalError, "Unsupported target machine"
+
+ include_dir = os.path.join(dxsdk_root, 'Include')
+ lib_dir = os.path.join(dxsdk_root, 'Lib', target_cpu)
+
+ env.Append(CPPDEFINES = [('HAVE_DXSDK', '1')])
+
+ gcc = 'gcc' in os.path.basename(env['CC']).split('-')
+ if gcc:
+ # Make GCC more forgiving towards Microsoft's headers
+ env.Prepend(CPPFLAGS = ['-isystem', include_dir])
+ else:
+ env.Prepend(CPPPATH = [include_dir])
+
+ env.Prepend(LIBPATH = [lib_dir])
+
+def exists(env):
+ return get_dxsdk_root(env) is not None
+
+# vim:set ts=4 sw=4 et:
diff --git a/mesalib/scons/fixes.py b/mesalib/scons/fixes.py
index 5946106ab..714cccf61 100644
--- a/mesalib/scons/fixes.py
+++ b/mesalib/scons/fixes.py
@@ -1,27 +1,27 @@
-import sys
-
-# Monkey patch os.spawnve on windows to become thread safe
-if sys.platform == 'win32':
- import os
- import threading
- from os import spawnve as old_spawnve
-
- spawn_lock = threading.Lock()
-
- def new_spawnve(mode, file, args, env):
- spawn_lock.acquire()
- try:
- if mode == os.P_WAIT:
- ret = old_spawnve(os.P_NOWAIT, file, args, env)
- else:
- ret = old_spawnve(mode, file, args, env)
- finally:
- spawn_lock.release()
- if mode == os.P_WAIT:
- pid, status = os.waitpid(ret, 0)
- ret = status >> 8
- return ret
-
- os.spawnve = new_spawnve
-
-
+import sys
+
+# Monkey patch os.spawnve on windows to become thread safe
+if sys.platform == 'win32':
+ import os
+ import threading
+ from os import spawnve as old_spawnve
+
+ spawn_lock = threading.Lock()
+
+ def new_spawnve(mode, file, args, env):
+ spawn_lock.acquire()
+ try:
+ if mode == os.P_WAIT:
+ ret = old_spawnve(os.P_NOWAIT, file, args, env)
+ else:
+ ret = old_spawnve(mode, file, args, env)
+ finally:
+ spawn_lock.release()
+ if mode == os.P_WAIT:
+ pid, status = os.waitpid(ret, 0)
+ ret = status >> 8
+ return ret
+
+ os.spawnve = new_spawnve
+
+
diff --git a/mesalib/scons/x11.py b/mesalib/scons/x11.py
index 86f090e37..99bf07962 100644
--- a/mesalib/scons/x11.py
+++ b/mesalib/scons/x11.py
@@ -1,52 +1,52 @@
-"""x11
-
-Tool-specific initialization for X11
-
-"""
-
-#
-# Copyright (c) 2010 VMware, Inc.
-#
-# 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-#
-
-
-def generate(env):
- env.Append(CPPPATH = ['/usr/X11R6/include'])
- env.Append(LIBPATH = ['/usr/X11R6/lib'])
-
- env.Append(LIBS = [
- 'X11',
- 'Xext',
- 'Xxf86vm',
- 'Xdamage',
- 'Xfixes',
- ])
-
-
-def exists(env):
- # TODO: actually detect the presence of the headers
- if env['platform'] in ('linux', 'freebsd', 'darwin'):
- return True
- else:
- return False
-
-
-# vim:set ts=4 sw=4 et:
+"""x11
+
+Tool-specific initialization for X11
+
+"""
+
+#
+# Copyright (c) 2010 VMware, Inc.
+#
+# 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+#
+
+
+def generate(env):
+ env.Append(CPPPATH = ['/usr/X11R6/include'])
+ env.Append(LIBPATH = ['/usr/X11R6/lib'])
+
+ env.Append(LIBS = [
+ 'X11',
+ 'Xext',
+ 'Xxf86vm',
+ 'Xdamage',
+ 'Xfixes',
+ ])
+
+
+def exists(env):
+ # TODO: actually detect the presence of the headers
+ if env['platform'] in ('linux', 'freebsd', 'darwin'):
+ return True
+ else:
+ return False
+
+
+# vim:set ts=4 sw=4 et:
diff --git a/mesalib/src/gallium/Android.common.mk b/mesalib/src/gallium/Android.common.mk
new file mode 100644
index 000000000..782510ff0
--- /dev/null
+++ b/mesalib/src/gallium/Android.common.mk
@@ -0,0 +1,32 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
+# Copyright (C) 2010-2011 LunarG Inc.
+#
+# 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+
+# src/gallium/Android.common.mk
+
+LOCAL_C_INCLUDES += \
+ $(GALLIUM_TOP)/include \
+ $(GALLIUM_TOP)/auxiliary \
+ $(GALLIUM_TOP)/winsys \
+ $(GALLIUM_TOP)/drivers
+
+include $(MESA_COMMON_MK)
diff --git a/mesalib/src/gallium/Android.mk b/mesalib/src/gallium/Android.mk
new file mode 100644
index 000000000..1d002d053
--- /dev/null
+++ b/mesalib/src/gallium/Android.mk
@@ -0,0 +1,72 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
+# Copyright (C) 2010-2011 LunarG Inc.
+#
+# 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+
+# src/gallium/Android.mk
+
+GALLIUM_TOP := $(call my-dir)
+GALLIUM_COMMON_MK := $(GALLIUM_TOP)/Android.common.mk
+
+SUBDIRS := \
+ targets/egl-static \
+ state_trackers/egl \
+ auxiliary
+
+# swrast
+SUBDIRS += winsys/sw/android drivers/softpipe
+
+# i915g
+ifneq ($(filter i915g, $(MESA_GPU_DRIVERS)),)
+SUBDIRS += winsys/i915/drm drivers/i915
+endif
+
+# nouveau
+ifneq ($(filter nouveau, $(MESA_GPU_DRIVERS)),)
+SUBDIRS += \
+ winsys/nouveau/drm \
+ drivers/nouveau \
+ drivers/nvfx \
+ drivers/nv50 \
+ drivers/nvc0
+endif
+
+# r300g/r600g/radeonsi
+ifneq ($(filter r300g r600g radeonsi, $(MESA_GPU_DRIVERS)),)
+SUBDIRS += winsys/radeon/drm
+ifneq ($(filter r300g, $(MESA_GPU_DRIVERS)),)
+SUBDIRS += drivers/r300
+endif
+ifneq ($(filter r600g, $(MESA_GPU_DRIVERS)),)
+SUBDIRS += drivers/r600
+endif
+ifneq ($(filter radeonsi, $(MESA_GPU_DRIVERS)),)
+SUBDIRS += drivers/radeonsi
+endif
+endif
+
+# vmwgfx
+ifneq ($(filter vmwgfx, $(MESA_GPU_DRIVERS)),)
+SUBDIRS += winsys/svga/drm drivers/svga
+endif
+
+mkfiles := $(patsubst %,$(GALLIUM_TOP)/%/Android.mk,$(SUBDIRS))
+include $(mkfiles)
diff --git a/mesalib/src/gallium/Makefile b/mesalib/src/gallium/Makefile
new file mode 100644
index 000000000..79ca767f7
--- /dev/null
+++ b/mesalib/src/gallium/Makefile
@@ -0,0 +1,12 @@
+# src/gallium/Makefile
+TOP = ../..
+include $(TOP)/configs/current
+
+SUBDIRS = $(GALLIUM_DIRS)
+
+default install clean:
+ @for dir in $(SUBDIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) $@) || exit 1; \
+ fi \
+ done
diff --git a/mesalib/src/gallium/Makefile.template b/mesalib/src/gallium/Makefile.template
new file mode 100644
index 000000000..036c11986
--- /dev/null
+++ b/mesalib/src/gallium/Makefile.template
@@ -0,0 +1,73 @@
+# src/gallium/Makefile.template
+
+# Template makefile for gallium libraries.
+#
+# Usage:
+# The minimum that the including makefile needs to define
+# is TOP, LIBNAME and one of of the *_SOURCES.
+#
+# Optional defines:
+# LIBRARY_INCLUDES are appended to the list of includes directories.
+# LIBRARY_DEFINES is not used for makedepend, but for compilation.
+
+### Basic defines ###
+
+OBJECTS = $(C_SOURCES:.c=.o) \
+ $(CPP_SOURCES:.cpp=.o) \
+ $(ASM_SOURCES:.S=.o)
+
+INCLUDES = \
+ -I. \
+ -I$(TOP)/src/gallium/include \
+ -I$(TOP)/src/gallium/auxiliary \
+ -I$(TOP)/src/gallium/drivers \
+ $(LIBRARY_INCLUDES)
+
+ifeq ($(MESA_LLVM),1)
+LIBRARY_DEFINES += $(LLVM_CFLAGS)
+endif
+
+
+##### TARGETS #####
+
+default: depend lib$(LIBNAME).a $(PROGS)
+
+lib$(LIBNAME).a: $(OBJECTS) $(EXTRA_OBJECTS) Makefile $(TOP)/src/gallium/Makefile.template
+ $(MKLIB) -o $(LIBNAME) -static $(OBJECTS) $(EXTRA_OBJECTS)
+
+depend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(SYMLINKS) $(GENERATED_SOURCES)
+ rm -f depend
+ touch depend
+ $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(GENERATED_SOURCES) 2> /dev/null
+
+$(PROGS): % : %.o $(PROGS_DEPS)
+ $(LD) $(LDFLAGS) $(filter %.o,$^) -o $@ -Wl,--start-group $(LIBS) -Wl,--end-group
+
+# Emacs tags
+tags:
+ etags `find . -name \*.[ch]` `find $(TOP)/src/gallium/include -name \*.h`
+
+# Remove .o and backup files
+clean:
+ rm -f $(OBJECTS) $(GENERATED_SOURCES) $(PROGS) lib$(LIBNAME).a depend depend.bak $(CLEAN_EXTRA)
+
+# Dummy target
+install:
+ @echo -n ""
+
+##### RULES #####
+
+%.s: %.c
+ $(CC) -S $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
+
+%.o: %.c
+ $(CC) -c $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
+
+%.o: %.cpp
+ $(CXX) -c $(INCLUDES) $(CXXFLAGS) $(LIBRARY_DEFINES) $< -o $@
+
+%.o: %.S
+ $(CC) -c $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@
+
+
+sinclude depend
diff --git a/mesalib/src/gallium/README.portability b/mesalib/src/gallium/README.portability
new file mode 100644
index 000000000..adecf4bb7
--- /dev/null
+++ b/mesalib/src/gallium/README.portability
@@ -0,0 +1,109 @@
+ CROSS-PLATFORM PORTABILITY GUIDELINES FOR GALLIUM3D
+
+
+= General Considerations =
+
+The state tracker and winsys driver support a rather limited number of
+platforms. However, the pipe drivers are meant to run in a wide number of
+platforms. Hence the pipe drivers, the auxiliary modules, and all public
+headers in general, should strictly follow these guidelines to ensure
+
+
+= Compiler Support =
+
+* Include the p_compiler.h.
+
+* Don't use the 'inline' keyword, use the INLINE macro in p_compiler.h instead.
+
+* Cast explicitly when converting to integer types of smaller sizes.
+
+* Cast explicitly when converting between float, double and integral types.
+
+* Don't use named struct initializers.
+
+* Don't use variable number of macro arguments. Use static inline functions
+instead.
+
+* Don't use C99 features.
+
+= Standard Library =
+
+* Avoid including standard library headers. Most standard library functions are
+not available in Windows Kernel Mode. Use the appropriate p_*.h include.
+
+== Memory Allocation ==
+
+* Use MALLOC, CALLOC, FREE instead of the malloc, calloc, free functions.
+
+* Use align_pointer() function defined in u_memory.h for aligning pointers
+ in a portable way.
+
+== Debugging ==
+
+* Use the functions/macros in p_debug.h.
+
+* Don't include assert.h, call abort, printf, etc.
+
+
+= Code Style =
+
+== Inherantice in C ==
+
+The main thing we do is mimic inheritance by structure containment.
+
+Here's a silly made-up example:
+
+/* base class */
+struct buffer
+{
+ int size;
+ void (*validate)(struct buffer *buf);
+};
+
+/* sub-class of bufffer */
+struct texture_buffer
+{
+ struct buffer base; /* the base class, MUST COME FIRST! */
+ int format;
+ int width, height;
+};
+
+
+Then, we'll typically have cast-wrapper functions to convert base-class
+pointers to sub-class pointers where needed:
+
+static inline struct vertex_buffer *vertex_buffer(struct buffer *buf)
+{
+ return (struct vertex_buffer *) buf;
+}
+
+
+To create/init a sub-classed object:
+
+struct buffer *create_texture_buffer(int w, int h, int format)
+{
+ struct texture_buffer *t = malloc(sizeof(*t));
+ t->format = format;
+ t->width = w;
+ t->height = h;
+ t->base.size = w * h;
+ t->base.validate = tex_validate;
+ return &t->base;
+}
+
+Example sub-class method:
+
+void tex_validate(struct buffer *buf)
+{
+ struct texture_buffer *tb = texture_buffer(buf);
+ assert(tb->format);
+ assert(tb->width);
+ assert(tb->height);
+}
+
+
+Note that we typically do not use typedefs to make "class names"; we use
+'struct whatever' everywhere.
+
+Gallium's pipe_context and the subclassed psb_context, etc are prime examples
+of this. There's also many examples in Mesa and the Mesa state tracker.
diff --git a/mesalib/src/gallium/SConscript b/mesalib/src/gallium/SConscript
new file mode 100644
index 000000000..f281f4c65
--- /dev/null
+++ b/mesalib/src/gallium/SConscript
@@ -0,0 +1,179 @@
+Import('env')
+
+#
+# Auxiliary modules
+#
+
+SConscript('auxiliary/SConscript')
+
+#
+# Drivers
+#
+
+# These are common and work across all platforms
+SConscript([
+ 'drivers/galahad/SConscript',
+ 'drivers/identity/SConscript',
+ 'drivers/llvmpipe/SConscript',
+ 'drivers/rbug/SConscript',
+ 'drivers/softpipe/SConscript',
+ 'drivers/svga/SConscript',
+ 'drivers/trace/SConscript',
+])
+
+if not env['msvc']:
+ # These drivers do not build on MSVC compilers
+ SConscript([
+ 'drivers/i915/SConscript',
+ ])
+
+if env['drm']:
+ # These drivers depend on drm headers
+ if env['drm_radeon']:
+ SConscript([
+ 'drivers/r300/SConscript',
+ 'drivers/r600/SConscript',
+ ])
+ if env['llvm']:
+ SConscript([
+ 'drivers/radeonsi/SConscript',
+ ])
+ # XXX: nouveau drivers have a tight dependency on libdrm, so to enable
+ # we need some version logic before we enable them. Also, ATM there is
+ # no nouveau target in scons
+ # if env['drm_nouveau']:
+ # SConscript([
+ # 'drivers/nouveau/SConscript',
+ # 'drivers/nv50/SConscript',
+ # 'drivers/nvc0/SConscript',
+ # 'drivers/nvfx/SConscript',
+ # ])
+
+#
+# State trackers
+#
+
+# Needed by some state trackers
+SConscript('winsys/sw/null/SConscript')
+
+if not env['embedded']:
+ SConscript('state_trackers/vega/SConscript')
+ if env['platform'] not in ('cygwin', 'darwin', 'haiku', 'sunos'):
+ SConscript('state_trackers/egl/SConscript')
+
+ if env['x11']:
+ SConscript('state_trackers/glx/xlib/SConscript')
+
+ if env['dri']:
+ SConscript('state_trackers/dri/SConscript')
+
+ if env['dri'] and env['xorg']:
+ SConscript('state_trackers/xorg/SConscript')
+
+ if env['platform'] == 'windows':
+ SConscript('state_trackers/wgl/SConscript')
+
+#
+# Winsys
+#
+
+SConscript([
+ 'winsys/sw/wrapper/SConscript',
+])
+
+if env['x11']:
+ SConscript([
+ 'winsys/sw/xlib/SConscript',
+ ])
+
+if env['platform'] == 'windows':
+ SConscript([
+ 'winsys/sw/gdi/SConscript',
+ ])
+
+if not env['msvc']:
+ SConscript([
+ 'winsys/i915/sw/SConscript',
+ ])
+
+if env['dri']:
+ SConscript([
+ 'winsys/sw/dri/SConscript',
+ ])
+
+ SConscript([
+ 'winsys/svga/drm/SConscript',
+ ])
+
+ if env['drm_intel']:
+ SConscript([
+ 'winsys/i915/drm/SConscript',
+ ])
+
+ if env['drm_radeon']:
+ SConscript([
+ 'winsys/radeon/drm/SConscript',
+ ])
+
+#
+# Targets
+#
+
+SConscript([
+ 'targets/graw-null/SConscript',
+])
+
+if not env['embedded']:
+ if env['platform'] not in ('cygwin', 'darwin', 'freebsd', 'haiku', 'sunos'):
+ SConscript([
+ 'targets/egl-static/SConscript'
+ ])
+
+ if env['x11']:
+ SConscript([
+ 'targets/graw-xlib/SConscript',
+ 'targets/libgl-xlib/SConscript',
+ ])
+
+ if env['platform'] == 'windows':
+ SConscript([
+ 'targets/graw-gdi/SConscript',
+ 'targets/libgl-gdi/SConscript',
+ ])
+
+ if env['dri']:
+ SConscript([
+ 'targets/SConscript.dri',
+ 'targets/dri-swrast/SConscript',
+ 'targets/dri-vmwgfx/SConscript',
+ #'targets/dri-nouveau/SConscript',
+ ])
+ if env['drm_intel']:
+ SConscript([
+ 'targets/dri-i915/SConscript',
+ ])
+ if env['drm_radeon']:
+ SConscript([
+ 'targets/dri-r300/SConscript',
+ 'targets/dri-r600/SConscript',
+ ])
+ if env['llvm']:
+ SConscript([
+ 'targets/dri-radeonsi/SConscript',
+ ])
+
+ if env['xorg'] and env['drm']:
+ SConscript([
+ #'targets/xorg-i915/SConscript',
+ #'targets/xorg-nouveau/SConscript',
+ #'targets/xorg-radeon/SConscript',
+ ])
+
+
+#
+# Unit tests & tools
+#
+
+if not env['embedded']:
+ SConscript('tests/unit/SConscript')
+ SConscript('tests/graw/SConscript')
diff --git a/mesalib/src/gallium/auxiliary/Android.mk b/mesalib/src/gallium/auxiliary/Android.mk
new file mode 100644
index 000000000..0c37dd31a
--- /dev/null
+++ b/mesalib/src/gallium/auxiliary/Android.mk
@@ -0,0 +1,55 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
+# Copyright (C) 2010-2011 LunarG Inc.
+#
+# 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+
+LOCAL_PATH := $(call my-dir)
+
+# get C_SOURCES and GENERATED_SOURCES
+include $(LOCAL_PATH)/Makefile.sources
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(C_SOURCES)
+
+LOCAL_C_INCLUDES := $(GALLIUM_TOP)/auxiliary/util
+
+LOCAL_MODULE := libmesa_gallium
+
+# generate sources
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+intermediates := $(call local-intermediates-dir)
+LOCAL_GENERATED_SOURCES := $(addprefix $(intermediates)/, $(GENERATED_SOURCES))
+
+$(LOCAL_GENERATED_SOURCES): PRIVATE_PYTHON := $(MESA_PYTHON2)
+$(LOCAL_GENERATED_SOURCES): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PYTHON) $^ > $@
+
+$(intermediates)/indices/u_indices_gen.c \
+$(intermediates)/indices/u_unfilled_gen.c \
+$(intermediates)/util/u_format_srgb.c \
+$(intermediates)/util/u_half.c: $(intermediates)/%.c: $(LOCAL_PATH)/%.py
+ $(transform-generated-source)
+
+$(intermediates)/util/u_format_table.c: $(intermediates)/%.c: $(LOCAL_PATH)/%.py $(LOCAL_PATH)/util/u_format.csv
+ $(transform-generated-source)
+
+include $(GALLIUM_COMMON_MK)
+include $(BUILD_STATIC_LIBRARY)
diff --git a/mesalib/src/gallium/auxiliary/Makefile b/mesalib/src/gallium/auxiliary/Makefile
new file mode 100644
index 000000000..a70ae7384
--- /dev/null
+++ b/mesalib/src/gallium/auxiliary/Makefile
@@ -0,0 +1,44 @@
+TOP = ../../..
+include $(TOP)/configs/current
+
+LIBNAME = gallium
+
+# get source lists
+include Makefile.sources
+
+C_SOURCES += $(GENERATED_SOURCES)
+
+ifeq ($(MESA_LLVM),1)
+C_SOURCES += \
+ $(GALLIVM_SOURCES)
+CPP_SOURCES += \
+ $(GALLIVM_CPP_SOURCES)
+endif
+
+
+include ../Makefile.template
+
+default install clean: %: subdirs-%
+
+subdirs-%:
+ @for dir in $(SUBDIRS) ; do \
+ if [ -d $$dir ] ; then \
+ (cd $$dir && $(MAKE) $*) || exit 1; \
+ fi \
+ done
+
+indices/u_indices_gen.c: indices/u_indices_gen.py
+ $(PYTHON2) $< > $@
+
+indices/u_unfilled_gen.c: indices/u_unfilled_gen.py
+ $(PYTHON2) $< > $@
+
+util/u_format_srgb.c: util/u_format_srgb.py
+ $(PYTHON2) $< > $@
+
+util/u_format_table.c: util/u_format_table.py util/u_format_pack.py util/u_format_parse.py util/u_format.csv
+ $(PYTHON2) util/u_format_table.py util/u_format.csv > $@
+
+util/u_half.c: util/u_half.py
+ $(PYTHON2) util/u_half.py > $@
+# DO NOT DELETE
diff --git a/mesalib/src/gallium/auxiliary/Makefile.sources b/mesalib/src/gallium/auxiliary/Makefile.sources
new file mode 100644
index 000000000..277428b38
--- /dev/null
+++ b/mesalib/src/gallium/auxiliary/Makefile.sources
@@ -0,0 +1,197 @@
+SUBDIRS := pipe-loader
+
+C_SOURCES := \
+ cso_cache/cso_cache.c \
+ cso_cache/cso_context.c \
+ cso_cache/cso_hash.c \
+ draw/draw_context.c \
+ draw/draw_fs.c \
+ draw/draw_gs.c \
+ draw/draw_pipe.c \
+ draw/draw_pipe_aaline.c \
+ draw/draw_pipe_aapoint.c \
+ draw/draw_pipe_clip.c \
+ draw/draw_pipe_cull.c \
+ draw/draw_pipe_flatshade.c \
+ draw/draw_pipe_offset.c \
+ draw/draw_pipe_pstipple.c \
+ draw/draw_pipe_stipple.c \
+ draw/draw_pipe_twoside.c \
+ draw/draw_pipe_unfilled.c \
+ draw/draw_pipe_util.c \
+ draw/draw_pipe_validate.c \
+ draw/draw_pipe_vbuf.c \
+ draw/draw_pipe_wide_line.c \
+ draw/draw_pipe_wide_point.c \
+ draw/draw_pt.c \
+ draw/draw_pt_emit.c \
+ draw/draw_pt_fetch.c \
+ draw/draw_pt_fetch_emit.c \
+ draw/draw_pt_fetch_shade_emit.c \
+ draw/draw_pt_fetch_shade_pipeline.c \
+ draw/draw_pt_post_vs.c \
+ draw/draw_pt_so_emit.c \
+ draw/draw_pt_util.c \
+ draw/draw_pt_vsplit.c \
+ draw/draw_vertex.c \
+ draw/draw_vs.c \
+ draw/draw_vs_exec.c \
+ draw/draw_vs_ppc.c \
+ draw/draw_vs_variant.c \
+ os/os_misc.c \
+ os/os_time.c \
+ pipebuffer/pb_buffer_fenced.c \
+ pipebuffer/pb_buffer_malloc.c \
+ pipebuffer/pb_bufmgr_alt.c \
+ pipebuffer/pb_bufmgr_cache.c \
+ pipebuffer/pb_bufmgr_debug.c \
+ pipebuffer/pb_bufmgr_mm.c \
+ pipebuffer/pb_bufmgr_ondemand.c \
+ pipebuffer/pb_bufmgr_pool.c \
+ pipebuffer/pb_bufmgr_slab.c \
+ pipebuffer/pb_validate.c \
+ postprocess/pp_celshade.c \
+ postprocess/pp_colors.c \
+ postprocess/pp_init.c \
+ postprocess/pp_mlaa.c \
+ postprocess/pp_run.c \
+ postprocess/pp_program.c \
+ rbug/rbug_connection.c \
+ rbug/rbug_context.c \
+ rbug/rbug_core.c \
+ rbug/rbug_demarshal.c \
+ rbug/rbug_texture.c \
+ rbug/rbug_shader.c \
+ rtasm/rtasm_cpu.c \
+ rtasm/rtasm_execmem.c \
+ rtasm/rtasm_ppc.c \
+ rtasm/rtasm_x86sse.c \
+ tgsi/tgsi_build.c \
+ tgsi/tgsi_dump.c \
+ tgsi/tgsi_exec.c \
+ tgsi/tgsi_info.c \
+ tgsi/tgsi_iterate.c \
+ tgsi/tgsi_parse.c \
+ tgsi/tgsi_ppc.c \
+ tgsi/tgsi_sanity.c \
+ tgsi/tgsi_scan.c \
+ tgsi/tgsi_strings.c \
+ tgsi/tgsi_text.c \
+ tgsi/tgsi_transform.c \
+ tgsi/tgsi_ureg.c \
+ tgsi/tgsi_util.c \
+ translate/translate.c \
+ translate/translate_cache.c \
+ translate/translate_generic.c \
+ translate/translate_sse.c \
+ util/u_debug.c \
+ util/u_debug_describe.c \
+ util/u_debug_memory.c \
+ util/u_debug_refcnt.c \
+ util/u_debug_stack.c \
+ util/u_debug_symbol.c \
+ util/u_dump_defines.c \
+ util/u_dump_state.c \
+ util/u_bitmask.c \
+ util/u_blit.c \
+ util/u_blitter.c \
+ util/u_cache.c \
+ util/u_caps.c \
+ util/u_cpu_detect.c \
+ util/u_dl.c \
+ util/u_draw.c \
+ util/u_draw_quad.c \
+ util/u_format.c \
+ util/u_format_other.c \
+ util/u_format_latc.c \
+ util/u_format_s3tc.c \
+ util/u_format_rgtc.c \
+ util/u_format_etc.c \
+ util/u_format_tests.c \
+ util/u_format_yuv.c \
+ util/u_format_zs.c \
+ util/u_framebuffer.c \
+ util/u_gen_mipmap.c \
+ util/u_handle_table.c \
+ util/u_hash.c \
+ util/u_hash_table.c \
+ util/u_index_modify.c \
+ util/u_keymap.c \
+ util/u_linear.c \
+ util/u_linkage.c \
+ util/u_network.c \
+ util/u_math.c \
+ util/u_mm.c \
+ util/u_pstipple.c \
+ util/u_rect.c \
+ util/u_ringbuffer.c \
+ util/u_sampler.c \
+ util/u_simple_shaders.c \
+ util/u_slab.c \
+ util/u_snprintf.c \
+ util/u_staging.c \
+ util/u_surface.c \
+ util/u_surfaces.c \
+ util/u_texture.c \
+ util/u_tile.c \
+ util/u_transfer.c \
+ util/u_resource.c \
+ util/u_upload_mgr.c \
+ util/u_vbuf.c \
+ vl/vl_csc.c \
+ vl/vl_compositor.c \
+ vl/vl_matrix_filter.c \
+ vl/vl_median_filter.c \
+ vl/vl_decoder.c \
+ vl/vl_mpeg12_decoder.c \
+ vl/vl_mpeg12_bitstream.c \
+ vl/vl_zscan.c \
+ vl/vl_idct.c \
+ vl/vl_mc.c \
+ vl/vl_vertex_buffers.c \
+ vl/vl_video_buffer.c
+
+GENERATED_SOURCES := \
+ indices/u_indices_gen.c \
+ indices/u_unfilled_gen.c \
+ util/u_format_srgb.c \
+ util/u_format_table.c \
+ util/u_half.c
+
+GALLIVM_SOURCES := \
+ gallivm/lp_bld_arit.c \
+ gallivm/lp_bld_assert.c \
+ gallivm/lp_bld_bitarit.c \
+ gallivm/lp_bld_const.c \
+ gallivm/lp_bld_conv.c \
+ gallivm/lp_bld_flow.c \
+ gallivm/lp_bld_format_aos.c \
+ gallivm/lp_bld_format_soa.c \
+ gallivm/lp_bld_format_yuv.c \
+ gallivm/lp_bld_gather.c \
+ gallivm/lp_bld_init.c \
+ gallivm/lp_bld_intr.c \
+ gallivm/lp_bld_logic.c \
+ gallivm/lp_bld_pack.c \
+ gallivm/lp_bld_printf.c \
+ gallivm/lp_bld_quad.c \
+ gallivm/lp_bld_sample.c \
+ gallivm/lp_bld_sample_aos.c \
+ gallivm/lp_bld_sample_soa.c \
+ gallivm/lp_bld_struct.c \
+ gallivm/lp_bld_swizzle.c \
+ gallivm/lp_bld_tgsi.c \
+ gallivm/lp_bld_tgsi_action.c \
+ gallivm/lp_bld_tgsi_aos.c \
+ gallivm/lp_bld_tgsi_info.c \
+ gallivm/lp_bld_tgsi_soa.c \
+ gallivm/lp_bld_type.c \
+ draw/draw_llvm.c \
+ draw/draw_llvm_sample.c \
+ draw/draw_llvm_translate.c \
+ draw/draw_vs_llvm.c \
+ draw/draw_pt_fetch_shade_pipeline_llvm.c
+
+GALLIVM_CPP_SOURCES := \
+ gallivm/lp_bld_debug.cpp \
+ gallivm/lp_bld_misc.cpp
diff --git a/mesalib/src/gallium/auxiliary/SConscript b/mesalib/src/gallium/auxiliary/SConscript
new file mode 100644
index 000000000..07c420e13
--- /dev/null
+++ b/mesalib/src/gallium/auxiliary/SConscript
@@ -0,0 +1,72 @@
+Import('*')
+
+from sys import executable as python_cmd
+
+env.Append(CPPPATH = [
+ 'indices',
+ 'util',
+])
+
+env.CodeGenerate(
+ target = 'indices/u_indices_gen.c',
+ script = 'indices/u_indices_gen.py',
+ source = [],
+ command = python_cmd + ' $SCRIPT > $TARGET'
+)
+
+env.CodeGenerate(
+ target = 'indices/u_unfilled_gen.c',
+ script = 'indices/u_unfilled_gen.py',
+ source = [],
+ command = python_cmd + ' $SCRIPT > $TARGET'
+)
+
+env.CodeGenerate(
+ target = 'util/u_format_srgb.c',
+ script = 'util/u_format_srgb.py',
+ source = [],
+ command = python_cmd + ' $SCRIPT > $TARGET'
+)
+
+env.CodeGenerate(
+ target = 'util/u_format_table.c',
+ script = '#src/gallium/auxiliary/util/u_format_table.py',
+ source = ['#src/gallium/auxiliary/util/u_format.csv'],
+ command = python_cmd + ' $SCRIPT $SOURCE > $TARGET'
+)
+
+env.CodeGenerate(
+ target = 'util/u_half.c',
+ script = 'util/u_half.py',
+ source = [],
+ command = python_cmd + ' $SCRIPT > $TARGET'
+)
+
+env.Depends('util/u_format_table.c', [
+ '#src/gallium/auxiliary/util/u_format_parse.py',
+ 'util/u_format_pack.py',
+])
+
+source = env.ParseSourceList('Makefile.sources', [
+ 'C_SOURCES',
+ 'GENERATED_SOURCES'
+])
+
+if env['llvm']:
+ source += env.ParseSourceList('Makefile.sources', [
+ 'GALLIVM_SOURCES',
+ 'GALLIVM_CPP_SOURCES'
+ ])
+
+ if env['toolchain'] == 'crossmingw':
+ # compile lp_bld_misc.cpp without -gstabs option
+ source = env.compile_without_gstabs(source, "gallivm/lp_bld_misc.cpp")
+
+gallium = env.ConvenienceLibrary(
+ target = 'gallium',
+ source = source,
+)
+
+env.Alias('gallium', gallium)
+
+Export('gallium')
diff --git a/mesalib/src/gallium/auxiliary/util/.gitignore b/mesalib/src/gallium/auxiliary/util/.gitignore
new file mode 100644
index 000000000..5dd0408ef
--- /dev/null
+++ b/mesalib/src/gallium/auxiliary/util/.gitignore
@@ -0,0 +1,3 @@
+u_format_srgb.c
+u_format_table.c
+u_half.c
diff --git a/mesalib/src/gallium/auxiliary/util/dbghelp.h b/mesalib/src/gallium/auxiliary/util/dbghelp.h
index da5e3ad08..bc7c53cf9 100644
--- a/mesalib/src/gallium/auxiliary/util/dbghelp.h
+++ b/mesalib/src/gallium/auxiliary/util/dbghelp.h
@@ -1,1265 +1,1265 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the w64 mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _DBGHELP_
-#define _DBGHELP_
-
-#ifdef _WIN64
-#ifndef _IMAGEHLP64
-#define _IMAGEHLP64
-#endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define IMAGEAPI DECLSPEC_IMPORT WINAPI
-#define DBHLP_DEPRECIATED __declspec(deprecated)
-
-#define DBHLPAPI IMAGEAPI
-
-#define IMAGE_SEPARATION (64*1024)
-
- typedef struct _LOADED_IMAGE {
- PSTR ModuleName;
- HANDLE hFile;
- PUCHAR MappedAddress;
-#ifdef _IMAGEHLP64
- PIMAGE_NT_HEADERS64 FileHeader;
-#else
- PIMAGE_NT_HEADERS32 FileHeader;
-#endif
- PIMAGE_SECTION_HEADER LastRvaSection;
- ULONG NumberOfSections;
- PIMAGE_SECTION_HEADER Sections;
- ULONG Characteristics;
- BOOLEAN fSystemImage;
- BOOLEAN fDOSImage;
- LIST_ENTRY Links;
- ULONG SizeOfImage;
- } LOADED_IMAGE,*PLOADED_IMAGE;
-
-#define MAX_SYM_NAME 2000
-
- typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE FileHandle,PSTR FileName,PVOID CallerData);
- typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PSTR filename,PVOID context);
- typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE FileHandle,PSTR FileName,PVOID CallerData);
-
- typedef BOOL (WINAPI *PSYMBOLSERVERPROC)(LPCSTR,LPCSTR,PVOID,DWORD,DWORD,LPSTR);
- typedef BOOL (WINAPI *PSYMBOLSERVEROPENPROC)(VOID);
- typedef BOOL (WINAPI *PSYMBOLSERVERCLOSEPROC)(VOID);
- typedef BOOL (WINAPI *PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR,ULONG64);
- typedef BOOL (CALLBACK WINAPI *PSYMBOLSERVERCALLBACKPROC)(UINT_PTR action,ULONG64 data,ULONG64 context);
- typedef UINT_PTR (WINAPI *PSYMBOLSERVERGETOPTIONSPROC)();
- typedef BOOL (WINAPI *PSYMBOLSERVERPINGPROC)(LPCSTR);
-
- HANDLE IMAGEAPI FindDebugInfoFile(PSTR FileName,PSTR SymbolPath,PSTR DebugFilePath);
- HANDLE IMAGEAPI FindDebugInfoFileEx(PSTR FileName,PSTR SymbolPath,PSTR DebugFilePath,PFIND_DEBUG_FILE_CALLBACK Callback,PVOID CallerData);
- BOOL IMAGEAPI SymFindFileInPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FoundFile,PFINDFILEINPATHCALLBACK callback,PVOID context);
- HANDLE IMAGEAPI FindExecutableImage(PSTR FileName,PSTR SymbolPath,PSTR ImageFilePath);
- HANDLE IMAGEAPI FindExecutableImageEx(PSTR FileName,PSTR SymbolPath,PSTR ImageFilePath,PFIND_EXE_FILE_CALLBACK Callback,PVOID CallerData);
- PIMAGE_NT_HEADERS IMAGEAPI ImageNtHeader(PVOID Base);
- PVOID IMAGEAPI ImageDirectoryEntryToDataEx(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size,PIMAGE_SECTION_HEADER *FoundHeader);
- PVOID IMAGEAPI ImageDirectoryEntryToData(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size);
- PIMAGE_SECTION_HEADER IMAGEAPI ImageRvaToSection(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva);
- PVOID IMAGEAPI ImageRvaToVa(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva,PIMAGE_SECTION_HEADER *LastRvaSection);
-
-#define SSRVOPT_CALLBACK 0x0001
-#define SSRVOPT_DWORD 0x0002
-#define SSRVOPT_DWORDPTR 0x0004
-#define SSRVOPT_GUIDPTR 0x0008
-#define SSRVOPT_OLDGUIDPTR 0x0010
-#define SSRVOPT_UNATTENDED 0x0020
-#define SSRVOPT_NOCOPY 0x0040
-#define SSRVOPT_PARENTWIN 0x0080
-#define SSRVOPT_PARAMTYPE 0x0100
-#define SSRVOPT_SECURE 0x0200
-#define SSRVOPT_TRACE 0x0400
-#define SSRVOPT_SETCONTEXT 0x0800
-#define SSRVOPT_PROXY 0x1000
-#define SSRVOPT_DOWNSTREAM_STORE 0x2000
-#define SSRVOPT_RESET ((ULONG_PTR)-1)
-
-#define SSRVACTION_TRACE 1
-#define SSRVACTION_QUERYCANCEL 2
-#define SSRVACTION_EVENT 3
-
-#ifndef _WIN64
-
- typedef struct _IMAGE_DEBUG_INFORMATION {
- LIST_ENTRY List;
- DWORD ReservedSize;
- PVOID ReservedMappedBase;
- USHORT ReservedMachine;
- USHORT ReservedCharacteristics;
- DWORD ReservedCheckSum;
- DWORD ImageBase;
- DWORD SizeOfImage;
- DWORD ReservedNumberOfSections;
- PIMAGE_SECTION_HEADER ReservedSections;
- DWORD ReservedExportedNamesSize;
- PSTR ReservedExportedNames;
- DWORD ReservedNumberOfFunctionTableEntries;
- PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries;
- DWORD ReservedLowestFunctionStartingAddress;
- DWORD ReservedHighestFunctionEndingAddress;
- DWORD ReservedNumberOfFpoTableEntries;
- PFPO_DATA ReservedFpoTableEntries;
- DWORD SizeOfCoffSymbols;
- PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
- DWORD ReservedSizeOfCodeViewSymbols;
- PVOID ReservedCodeViewSymbols;
- PSTR ImageFilePath;
- PSTR ImageFileName;
- PSTR ReservedDebugFilePath;
- DWORD ReservedTimeDateStamp;
- BOOL ReservedRomImage;
- PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory;
- DWORD ReservedNumberOfDebugDirectories;
- DWORD ReservedOriginalFunctionTableBaseAddress;
- DWORD Reserved[2 ];
- } IMAGE_DEBUG_INFORMATION,*PIMAGE_DEBUG_INFORMATION;
-
- PIMAGE_DEBUG_INFORMATION IMAGEAPI MapDebugInformation(HANDLE FileHandle,PSTR FileName,PSTR SymbolPath,DWORD ImageBase);
- BOOL IMAGEAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION DebugInfo);
-#endif
-
- typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(LPCSTR FilePath,PVOID CallerData);
-
- BOOL IMAGEAPI SearchTreeForFile(PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer);
- BOOL IMAGEAPI EnumDirTree(HANDLE hProcess,PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer,PENUMDIRTREE_CALLBACK Callback,PVOID CallbackData);
- BOOL IMAGEAPI MakeSureDirectoryPathExists(PCSTR DirPath);
-
-#define UNDNAME_COMPLETE (0x0000)
-#define UNDNAME_NO_LEADING_UNDERSCORES (0x0001)
-#define UNDNAME_NO_MS_KEYWORDS (0x0002)
-#define UNDNAME_NO_FUNCTION_RETURNS (0x0004)
-#define UNDNAME_NO_ALLOCATION_MODEL (0x0008)
-#define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010)
-#define UNDNAME_NO_MS_THISTYPE (0x0020)
-#define UNDNAME_NO_CV_THISTYPE (0x0040)
-#define UNDNAME_NO_THISTYPE (0x0060)
-#define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080)
-#define UNDNAME_NO_THROW_SIGNATURES (0x0100)
-#define UNDNAME_NO_MEMBER_TYPE (0x0200)
-#define UNDNAME_NO_RETURN_UDT_MODEL (0x0400)
-#define UNDNAME_32_BIT_DECODE (0x0800)
-#define UNDNAME_NAME_ONLY (0x1000)
-#define UNDNAME_NO_ARGUMENTS (0x2000)
-#define UNDNAME_NO_SPECIAL_SYMS (0x4000)
-
- DWORD IMAGEAPI WINAPI UnDecorateSymbolName(PCSTR DecoratedName,PSTR UnDecoratedName,DWORD UndecoratedLength,DWORD Flags);
-
-#define DBHHEADER_DEBUGDIRS 0x1
-
- typedef struct _MODLOAD_DATA {
- DWORD ssize;
- DWORD ssig;
- PVOID data;
- DWORD size;
- DWORD flags;
- } MODLOAD_DATA,*PMODLOAD_DATA;
-
- typedef enum {
- AddrMode1616,AddrMode1632,AddrModeReal,AddrModeFlat
- } ADDRESS_MODE;
-
- typedef struct _tagADDRESS64 {
- DWORD64 Offset;
- WORD Segment;
- ADDRESS_MODE Mode;
- } ADDRESS64,*LPADDRESS64;
-
-#ifdef _IMAGEHLP64
-#define ADDRESS ADDRESS64
-#define LPADDRESS LPADDRESS64
-#else
- typedef struct _tagADDRESS {
- DWORD Offset;
- WORD Segment;
- ADDRESS_MODE Mode;
- } ADDRESS,*LPADDRESS;
-
- static __inline void Address32To64(LPADDRESS a32,LPADDRESS64 a64) {
- a64->Offset = (ULONG64)(LONG64)(LONG)a32->Offset;
- a64->Segment = a32->Segment;
- a64->Mode = a32->Mode;
- }
-
- static __inline void Address64To32(LPADDRESS64 a64,LPADDRESS a32) {
- a32->Offset = (ULONG)a64->Offset;
- a32->Segment = a64->Segment;
- a32->Mode = a64->Mode;
- }
-#endif
-
- typedef struct _KDHELP64 {
- DWORD64 Thread;
- DWORD ThCallbackStack;
- DWORD ThCallbackBStore;
- DWORD NextCallback;
- DWORD FramePointer;
- DWORD64 KiCallUserMode;
- DWORD64 KeUserCallbackDispatcher;
- DWORD64 SystemRangeStart;
- DWORD64 Reserved[8];
- } KDHELP64,*PKDHELP64;
-
-#ifdef _IMAGEHLP64
-#define KDHELP KDHELP64
-#define PKDHELP PKDHELP64
-#else
- typedef struct _KDHELP {
- DWORD Thread;
- DWORD ThCallbackStack;
- DWORD NextCallback;
- DWORD FramePointer;
- DWORD KiCallUserMode;
- DWORD KeUserCallbackDispatcher;
- DWORD SystemRangeStart;
- DWORD ThCallbackBStore;
- DWORD Reserved[8];
- } KDHELP,*PKDHELP;
-
- static __inline void KdHelp32To64(PKDHELP p32,PKDHELP64 p64) {
- p64->Thread = p32->Thread;
- p64->ThCallbackStack = p32->ThCallbackStack;
- p64->NextCallback = p32->NextCallback;
- p64->FramePointer = p32->FramePointer;
- p64->KiCallUserMode = p32->KiCallUserMode;
- p64->KeUserCallbackDispatcher = p32->KeUserCallbackDispatcher;
- p64->SystemRangeStart = p32->SystemRangeStart;
- }
-#endif
-
- typedef struct _tagSTACKFRAME64 {
- ADDRESS64 AddrPC;
- ADDRESS64 AddrReturn;
- ADDRESS64 AddrFrame;
- ADDRESS64 AddrStack;
- ADDRESS64 AddrBStore;
- PVOID FuncTableEntry;
- DWORD64 Params[4];
- BOOL Far;
- BOOL Virtual;
- DWORD64 Reserved[3];
- KDHELP64 KdHelp;
- } STACKFRAME64,*LPSTACKFRAME64;
-
-#ifdef _IMAGEHLP64
-#define STACKFRAME STACKFRAME64
-#define LPSTACKFRAME LPSTACKFRAME64
-#else
- typedef struct _tagSTACKFRAME {
- ADDRESS AddrPC;
- ADDRESS AddrReturn;
- ADDRESS AddrFrame;
- ADDRESS AddrStack;
- PVOID FuncTableEntry;
- DWORD Params[4];
- BOOL Far;
- BOOL Virtual;
- DWORD Reserved[3];
- KDHELP KdHelp;
- ADDRESS AddrBStore;
- } STACKFRAME,*LPSTACKFRAME;
-#endif
-
- typedef BOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE64)(HANDLE hProcess,DWORD64 qwBaseAddress,PVOID lpBuffer,DWORD nSize,LPDWORD lpNumberOfBytesRead);
- typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE hProcess,DWORD64 AddrBase);
- typedef DWORD64 (WINAPI *PGET_MODULE_BASE_ROUTINE64)(HANDLE hProcess,DWORD64 Address);
- typedef DWORD64 (WINAPI *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE hProcess,HANDLE hThread,LPADDRESS64 lpaddr);
-
- BOOL IMAGEAPI StackWalk64(DWORD MachineType,HANDLE hProcess,HANDLE hThread,LPSTACKFRAME64 StackFrame,PVOID ContextRecord,PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress);
-
-#ifdef _IMAGEHLP64
-#define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64
-#define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64
-#define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64
-#define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64
-#define StackWalk StackWalk64
-#else
- typedef BOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE hProcess,DWORD lpBaseAddress,PVOID lpBuffer,DWORD nSize,PDWORD lpNumberOfBytesRead);
- typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE hProcess,DWORD AddrBase);
- typedef DWORD (WINAPI *PGET_MODULE_BASE_ROUTINE)(HANDLE hProcess,DWORD Address);
- typedef DWORD (WINAPI *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE hProcess,HANDLE hThread,LPADDRESS lpaddr);
-
- BOOL IMAGEAPI StackWalk(DWORD MachineType,HANDLE hProcess,HANDLE hThread,LPSTACKFRAME StackFrame,PVOID ContextRecord,PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,PTRANSLATE_ADDRESS_ROUTINE TranslateAddress);
-#endif
-
-#define API_VERSION_NUMBER 9
-
- typedef struct API_VERSION {
- USHORT MajorVersion;
- USHORT MinorVersion;
- USHORT Revision;
- USHORT Reserved;
- } API_VERSION,*LPAPI_VERSION;
-
- LPAPI_VERSION IMAGEAPI ImagehlpApiVersion(VOID);
- LPAPI_VERSION IMAGEAPI ImagehlpApiVersionEx(LPAPI_VERSION AppVersion);
- DWORD IMAGEAPI GetTimestampForLoadedLibrary(HMODULE Module);
-
- typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PSTR ModuleName,DWORD64 BaseOfDll,PVOID UserContext);
- typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext);
- typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PWSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext);
- typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PSTR ModuleName,DWORD64 ModuleBase,ULONG ModuleSize,PVOID UserContext);
- typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE hProcess,ULONG ActionCode,ULONG64 CallbackData,ULONG64 UserContext);
- typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE hProcess,DWORD AddrBase,PVOID UserContext);
- typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE hProcess,ULONG64 AddrBase,ULONG64 UserContext);
-
-#ifdef _IMAGEHLP64
-#define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64
-#define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64
-#define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACK64W
-#define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64
-#define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64
-#define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64
-#else
- typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PSTR ModuleName,ULONG BaseOfDll,PVOID UserContext);
- typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext);
- typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PWSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext);
- typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PSTR ModuleName,ULONG ModuleBase,ULONG ModuleSize,PVOID UserContext);
- typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE hProcess,ULONG ActionCode,PVOID CallbackData,PVOID UserContext);
-#endif
-
-#define SYMFLAG_VALUEPRESENT 0x00000001
-#define SYMFLAG_REGISTER 0x00000008
-#define SYMFLAG_REGREL 0x00000010
-#define SYMFLAG_FRAMEREL 0x00000020
-#define SYMFLAG_PARAMETER 0x00000040
-#define SYMFLAG_LOCAL 0x00000080
-#define SYMFLAG_CONSTANT 0x00000100
-#define SYMFLAG_EXPORT 0x00000200
-#define SYMFLAG_FORWARDER 0x00000400
-#define SYMFLAG_FUNCTION 0x00000800
-#define SYMFLAG_VIRTUAL 0x00001000
-#define SYMFLAG_THUNK 0x00002000
-#define SYMFLAG_TLSREL 0x00004000
-
- typedef enum {
- SymNone = 0,SymCoff,SymCv,SymPdb,SymExport,SymDeferred,SymSym,SymDia,SymVirtual,NumSymTypes
- } SYM_TYPE;
-
- typedef struct _IMAGEHLP_SYMBOL64 {
- DWORD SizeOfStruct;
- DWORD64 Address;
- DWORD Size;
- DWORD Flags;
- DWORD MaxNameLength;
- CHAR Name[1];
- } IMAGEHLP_SYMBOL64,*PIMAGEHLP_SYMBOL64;
-
- typedef struct _IMAGEHLP_SYMBOL64_PACKAGE {
- IMAGEHLP_SYMBOL64 sym;
- CHAR name[MAX_SYM_NAME + 1];
- } IMAGEHLP_SYMBOL64_PACKAGE,*PIMAGEHLP_SYMBOL64_PACKAGE;
-
-#ifdef _IMAGEHLP64
-
-#define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64
-#define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64
-#define IMAGEHLP_SYMBOL_PACKAGE IMAGEHLP_SYMBOL64_PACKAGE
-#define PIMAGEHLP_SYMBOL_PACKAGE PIMAGEHLP_SYMBOL64_PACKAGE
-#else
-
- typedef struct _IMAGEHLP_SYMBOL {
- DWORD SizeOfStruct;
- DWORD Address;
- DWORD Size;
- DWORD Flags;
- DWORD MaxNameLength;
- CHAR Name[1];
- } IMAGEHLP_SYMBOL,*PIMAGEHLP_SYMBOL;
-
- typedef struct _IMAGEHLP_SYMBOL_PACKAGE {
- IMAGEHLP_SYMBOL sym;
- CHAR name[MAX_SYM_NAME + 1];
- } IMAGEHLP_SYMBOL_PACKAGE,*PIMAGEHLP_SYMBOL_PACKAGE;
-#endif
-
- typedef struct _IMAGEHLP_MODULE64 {
- DWORD SizeOfStruct;
- DWORD64 BaseOfImage;
- DWORD ImageSize;
- DWORD TimeDateStamp;
- DWORD CheckSum;
- DWORD NumSyms;
- SYM_TYPE SymType;
- CHAR ModuleName[32];
- CHAR ImageName[256];
- CHAR LoadedImageName[256];
- CHAR LoadedPdbName[256];
- DWORD CVSig;
- CHAR CVData[MAX_PATH*3];
- DWORD PdbSig;
- GUID PdbSig70;
- DWORD PdbAge;
- BOOL PdbUnmatched;
- BOOL DbgUnmatched;
- BOOL LineNumbers;
- BOOL GlobalSymbols;
- BOOL TypeInfo;
- } IMAGEHLP_MODULE64,*PIMAGEHLP_MODULE64;
-
- typedef struct _IMAGEHLP_MODULE64W {
- DWORD SizeOfStruct;
- DWORD64 BaseOfImage;
- DWORD ImageSize;
- DWORD TimeDateStamp;
- DWORD CheckSum;
- DWORD NumSyms;
- SYM_TYPE SymType;
- WCHAR ModuleName[32];
- WCHAR ImageName[256];
- WCHAR LoadedImageName[256];
- WCHAR LoadedPdbName[256];
- DWORD CVSig;
- WCHAR CVData[MAX_PATH*3];
- DWORD PdbSig;
- GUID PdbSig70;
- DWORD PdbAge;
- BOOL PdbUnmatched;
- BOOL DbgUnmatched;
- BOOL LineNumbers;
- BOOL GlobalSymbols;
- BOOL TypeInfo;
- } IMAGEHLP_MODULEW64,*PIMAGEHLP_MODULEW64;
-
-#ifdef _IMAGEHLP64
-#define IMAGEHLP_MODULE IMAGEHLP_MODULE64
-#define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64
-#define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64
-#define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64
-#else
- typedef struct _IMAGEHLP_MODULE {
- DWORD SizeOfStruct;
- DWORD BaseOfImage;
- DWORD ImageSize;
- DWORD TimeDateStamp;
- DWORD CheckSum;
- DWORD NumSyms;
- SYM_TYPE SymType;
- CHAR ModuleName[32];
- CHAR ImageName[256];
- CHAR LoadedImageName[256];
- } IMAGEHLP_MODULE,*PIMAGEHLP_MODULE;
-
- typedef struct _IMAGEHLP_MODULEW {
- DWORD SizeOfStruct;
- DWORD BaseOfImage;
- DWORD ImageSize;
- DWORD TimeDateStamp;
- DWORD CheckSum;
- DWORD NumSyms;
- SYM_TYPE SymType;
- WCHAR ModuleName[32];
- WCHAR ImageName[256];
- WCHAR LoadedImageName[256];
- } IMAGEHLP_MODULEW,*PIMAGEHLP_MODULEW;
-#endif
-
- typedef struct _IMAGEHLP_LINE64 {
- DWORD SizeOfStruct;
- PVOID Key;
- DWORD LineNumber;
- PCHAR FileName;
- DWORD64 Address;
- } IMAGEHLP_LINE64,*PIMAGEHLP_LINE64;
-
-#ifdef _IMAGEHLP64
-#define IMAGEHLP_LINE IMAGEHLP_LINE64
-#define PIMAGEHLP_LINE PIMAGEHLP_LINE64
-#else
- typedef struct _IMAGEHLP_LINE {
- DWORD SizeOfStruct;
- PVOID Key;
- DWORD LineNumber;
- PCHAR FileName;
- DWORD Address;
- } IMAGEHLP_LINE,*PIMAGEHLP_LINE;
-#endif
-
- typedef struct _SOURCEFILE {
- DWORD64 ModBase;
- PCHAR FileName;
- } SOURCEFILE,*PSOURCEFILE;
-
-#define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
-#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
-#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
-#define CBA_SYMBOLS_UNLOADED 0x00000004
-#define CBA_DUPLICATE_SYMBOL 0x00000005
-#define CBA_READ_MEMORY 0x00000006
-#define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007
-#define CBA_SET_OPTIONS 0x00000008
-#define CBA_EVENT 0x00000010
-#define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020
-#define CBA_DEBUG_INFO 0x10000000
-
- typedef struct _IMAGEHLP_CBA_READ_MEMORY {
- DWORD64 addr;
- PVOID buf;
- DWORD bytes;
- DWORD *bytesread;
- } IMAGEHLP_CBA_READ_MEMORY,*PIMAGEHLP_CBA_READ_MEMORY;
-
- enum {
- sevInfo = 0,sevProblem,sevAttn,sevFatal,sevMax
- };
-
- typedef struct _IMAGEHLP_CBA_EVENT {
- DWORD severity;
- DWORD code;
- PCHAR desc;
- PVOID object;
- } IMAGEHLP_CBA_EVENT,*PIMAGEHLP_CBA_EVENT;
-
- typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 {
- DWORD SizeOfStruct;
- DWORD64 BaseOfImage;
- DWORD CheckSum;
- DWORD TimeDateStamp;
- CHAR FileName[MAX_PATH];
- BOOLEAN Reparse;
- HANDLE hFile;
- DWORD Flags;
- } IMAGEHLP_DEFERRED_SYMBOL_LOAD64,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
-
-#define DSLFLAG_MISMATCHED_PDB 0x1
-#define DSLFLAG_MISMATCHED_DBG 0x2
-
-#ifdef _IMAGEHLP64
-#define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64
-#define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
-#else
- typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
- DWORD SizeOfStruct;
- DWORD BaseOfImage;
- DWORD CheckSum;
- DWORD TimeDateStamp;
- CHAR FileName[MAX_PATH];
- BOOLEAN Reparse;
- HANDLE hFile;
- } IMAGEHLP_DEFERRED_SYMBOL_LOAD,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
-#endif
-
- typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 {
- DWORD SizeOfStruct;
- DWORD NumberOfDups;
- PIMAGEHLP_SYMBOL64 Symbol;
- DWORD SelectedSymbol;
- } IMAGEHLP_DUPLICATE_SYMBOL64,*PIMAGEHLP_DUPLICATE_SYMBOL64;
-
-#ifdef _IMAGEHLP64
-#define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64
-#define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64
-#else
- typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
- DWORD SizeOfStruct;
- DWORD NumberOfDups;
- PIMAGEHLP_SYMBOL Symbol;
- DWORD SelectedSymbol;
- } IMAGEHLP_DUPLICATE_SYMBOL,*PIMAGEHLP_DUPLICATE_SYMBOL;
-#endif
-
- BOOL IMAGEAPI SymSetParentWindow(HWND hwnd);
- PCHAR IMAGEAPI SymSetHomeDirectory(PCSTR dir);
- PCHAR IMAGEAPI SymGetHomeDirectory(DWORD type,PSTR dir,size_t size);
-
- enum {
- hdBase = 0,hdSym,hdSrc,hdMax
- };
-
-#define SYMOPT_CASE_INSENSITIVE 0x00000001
-#define SYMOPT_UNDNAME 0x00000002
-#define SYMOPT_DEFERRED_LOADS 0x00000004
-#define SYMOPT_NO_CPP 0x00000008
-#define SYMOPT_LOAD_LINES 0x00000010
-#define SYMOPT_OMAP_FIND_NEAREST 0x00000020
-#define SYMOPT_LOAD_ANYTHING 0x00000040
-#define SYMOPT_IGNORE_CVREC 0x00000080
-#define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100
-#define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200
-#define SYMOPT_EXACT_SYMBOLS 0x00000400
-#define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800
-#define SYMOPT_IGNORE_NT_SYMPATH 0x00001000
-#define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000
-#define SYMOPT_PUBLICS_ONLY 0x00004000
-#define SYMOPT_NO_PUBLICS 0x00008000
-#define SYMOPT_AUTO_PUBLICS 0x00010000
-#define SYMOPT_NO_IMAGE_SEARCH 0x00020000
-#define SYMOPT_SECURE 0x00040000
-#define SYMOPT_NO_PROMPTS 0x00080000
-
-#define SYMOPT_DEBUG 0x80000000
-
- DWORD IMAGEAPI SymSetOptions(DWORD SymOptions);
- DWORD IMAGEAPI SymGetOptions(VOID);
- BOOL IMAGEAPI SymCleanup(HANDLE hProcess);
- BOOL IMAGEAPI SymMatchString(LPSTR string,LPSTR expression,BOOL fCase);
-
- typedef BOOL (CALLBACK *PSYM_ENUMSOURCFILES_CALLBACK)(PSOURCEFILE pSourceFile,PVOID UserContext);
-
- BOOL IMAGEAPI SymEnumSourceFiles(HANDLE hProcess,ULONG64 ModBase,LPSTR Mask,PSYM_ENUMSOURCFILES_CALLBACK cbSrcFiles,PVOID UserContext);
- BOOL IMAGEAPI SymEnumerateModules64(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback,PVOID UserContext);
-
-#ifdef _IMAGEHLP64
-#define SymEnumerateModules SymEnumerateModules64
-#else
- BOOL IMAGEAPI SymEnumerateModules(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,PVOID UserContext);
-#endif
-
- BOOL IMAGEAPI SymEnumerateSymbols64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback,PVOID UserContext);
- BOOL IMAGEAPI SymEnumerateSymbolsW64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback,PVOID UserContext);
-
-#ifdef _IMAGEHLP64
-#define SymEnumerateSymbols SymEnumerateSymbols64
-#define SymEnumerateSymbolsW SymEnumerateSymbolsW64
-#else
- BOOL IMAGEAPI SymEnumerateSymbols(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
- BOOL IMAGEAPI SymEnumerateSymbolsW(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext);
-#endif
-
- BOOL IMAGEAPI EnumerateLoadedModules64(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback,PVOID UserContext);
-#ifdef _IMAGEHLP64
-#define EnumerateLoadedModules EnumerateLoadedModules64
-#else
- BOOL IMAGEAPI EnumerateLoadedModules(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,PVOID UserContext);
-#endif
-
- PVOID IMAGEAPI SymFunctionTableAccess64(HANDLE hProcess,DWORD64 AddrBase);
-
-#ifdef _IMAGEHLP64
-#define SymFunctionTableAccess SymFunctionTableAccess64
-#else
- PVOID IMAGEAPI SymFunctionTableAccess(HANDLE hProcess,DWORD AddrBase);
-#endif
-
- BOOL IMAGEAPI SymGetModuleInfo64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULE64 ModuleInfo);
- BOOL IMAGEAPI SymGetModuleInfoW64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULEW64 ModuleInfo);
-
-#ifdef _IMAGEHLP64
-#define SymGetModuleInfo SymGetModuleInfo64
-#define SymGetModuleInfoW SymGetModuleInfoW64
-#else
- BOOL IMAGEAPI SymGetModuleInfo(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULE ModuleInfo);
- BOOL IMAGEAPI SymGetModuleInfoW(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULEW ModuleInfo);
-#endif
-
- DWORD64 IMAGEAPI SymGetModuleBase64(HANDLE hProcess,DWORD64 qwAddr);
-
-#ifdef _IMAGEHLP64
-#define SymGetModuleBase SymGetModuleBase64
-#else
- DWORD IMAGEAPI SymGetModuleBase(HANDLE hProcess,DWORD dwAddr);
-#endif
-
- BOOL IMAGEAPI SymGetSymNext64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol);
-
-#ifdef _IMAGEHLP64
-#define SymGetSymNext SymGetSymNext64
-#else
- BOOL IMAGEAPI SymGetSymNext(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol);
-#endif
-
- BOOL IMAGEAPI SymGetSymPrev64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol);
-
-#ifdef _IMAGEHLP64
-#define SymGetSymPrev SymGetSymPrev64
-#else
- BOOL IMAGEAPI SymGetSymPrev(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol);
-#endif
-
- typedef struct _SRCCODEINFO {
- DWORD SizeOfStruct;
- PVOID Key;
- DWORD64 ModBase;
- CHAR Obj[MAX_PATH + 1];
- CHAR FileName[MAX_PATH + 1];
- DWORD LineNumber;
- DWORD64 Address;
- } SRCCODEINFO,*PSRCCODEINFO;
-
- typedef BOOL (CALLBACK *PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO LineInfo,PVOID UserContext);
-
- BOOL IMAGEAPI SymEnumLines(HANDLE hProcess,ULONG64 Base,PCSTR Obj,PCSTR File,PSYM_ENUMLINES_CALLBACK EnumLinesCallback,PVOID UserContext);
- BOOL IMAGEAPI SymGetLineFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE64 Line64);
-
-#ifdef _IMAGEHLP64
-#define SymGetLineFromAddr SymGetLineFromAddr64
-#else
- BOOL IMAGEAPI SymGetLineFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE Line);
-#endif
-
- BOOL IMAGEAPI SymGetLineFromName64(HANDLE hProcess,PSTR ModuleName,PSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE64 Line);
-
-#ifdef _IMAGEHLP64
-#define SymGetLineFromName SymGetLineFromName64
-#else
- BOOL IMAGEAPI SymGetLineFromName(HANDLE hProcess,PSTR ModuleName,PSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE Line);
-#endif
-
- BOOL IMAGEAPI SymGetLineNext64(HANDLE hProcess,PIMAGEHLP_LINE64 Line);
-
-#ifdef _IMAGEHLP64
-#define SymGetLineNext SymGetLineNext64
-#else
- BOOL IMAGEAPI SymGetLineNext(HANDLE hProcess,PIMAGEHLP_LINE Line);
-#endif
-
- BOOL IMAGEAPI SymGetLinePrev64(HANDLE hProcess,PIMAGEHLP_LINE64 Line);
-
-#ifdef _IMAGEHLP64
-#define SymGetLinePrev SymGetLinePrev64
-#else
- BOOL IMAGEAPI SymGetLinePrev(HANDLE hProcess,PIMAGEHLP_LINE Line);
-#endif
-
- BOOL IMAGEAPI SymMatchFileName(PSTR FileName,PSTR Match,PSTR *FileNameStop,PSTR *MatchStop);
- BOOL IMAGEAPI SymInitialize(HANDLE hProcess,PSTR UserSearchPath,BOOL fInvadeProcess);
- BOOL IMAGEAPI SymGetSearchPath(HANDLE hProcess,PSTR SearchPath,DWORD SearchPathLength);
- BOOL IMAGEAPI SymSetSearchPath(HANDLE hProcess,PSTR SearchPath);
- DWORD64 IMAGEAPI SymLoadModule64(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD64 BaseOfDll,DWORD SizeOfDll);
-
-#define SLMFLAG_VIRTUAL 0x1
-
- DWORD64 IMAGEAPI SymLoadModuleEx(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD64 BaseOfDll,DWORD DllSize,PMODLOAD_DATA Data,DWORD Flags);
-
-#ifdef _IMAGEHLP64
-#define SymLoadModule SymLoadModule64
-#else
- DWORD IMAGEAPI SymLoadModule(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD BaseOfDll,DWORD SizeOfDll);
-#endif
-
- BOOL IMAGEAPI SymUnloadModule64(HANDLE hProcess,DWORD64 BaseOfDll);
-
-#ifdef _IMAGEHLP64
-#define SymUnloadModule SymUnloadModule64
-#else
- BOOL IMAGEAPI SymUnloadModule(HANDLE hProcess,DWORD BaseOfDll);
-#endif
-
- BOOL IMAGEAPI SymUnDName64(PIMAGEHLP_SYMBOL64 sym,PSTR UnDecName,DWORD UnDecNameLength);
-
-#ifdef _IMAGEHLP64
-#define SymUnDName SymUnDName64
-#else
- BOOL IMAGEAPI SymUnDName(PIMAGEHLP_SYMBOL sym,PSTR UnDecName,DWORD UnDecNameLength);
-#endif
-
- BOOL IMAGEAPI SymRegisterCallback64(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction,ULONG64 UserContext);
-
- BOOL IMAGEAPI SymRegisterFunctionEntryCallback64(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction,ULONG64 UserContext);
-
-#ifdef _IMAGEHLP64
-#define SymRegisterCallback SymRegisterCallback64
-#define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64
-#else
- BOOL IMAGEAPI SymRegisterCallback(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK CallbackFunction,PVOID UserContext);
- BOOL IMAGEAPI SymRegisterFunctionEntryCallback(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction,PVOID UserContext);
-#endif
-
- typedef struct _IMAGEHLP_SYMBOL_SRC {
- DWORD sizeofstruct;
- DWORD type;
- char file[MAX_PATH];
- } IMAGEHLP_SYMBOL_SRC,*PIMAGEHLP_SYMBOL_SRC;
-
- typedef struct _MODULE_TYPE_INFO {
- USHORT dataLength;
- USHORT leaf;
- BYTE data[1];
- } MODULE_TYPE_INFO,*PMODULE_TYPE_INFO;
-
- typedef struct _SYMBOL_INFO {
- ULONG SizeOfStruct;
- ULONG TypeIndex;
- ULONG64 Reserved[2];
- ULONG info;
- ULONG Size;
- ULONG64 ModBase;
- ULONG Flags;
- ULONG64 Value;
- ULONG64 Address;
- ULONG Register;
- ULONG Scope;
- ULONG Tag;
- ULONG NameLen;
- ULONG MaxNameLen;
- CHAR Name[1];
- } SYMBOL_INFO,*PSYMBOL_INFO;
-
- typedef struct _SYMBOL_INFO_PACKAGE {
- SYMBOL_INFO si;
- CHAR name[MAX_SYM_NAME + 1];
- } SYMBOL_INFO_PACKAGE,*PSYMBOL_INFO_PACKAGE;
-
- typedef struct _IMAGEHLP_STACK_FRAME
- {
- ULONG64 InstructionOffset;
- ULONG64 ReturnOffset;
- ULONG64 FrameOffset;
- ULONG64 StackOffset;
- ULONG64 BackingStoreOffset;
- ULONG64 FuncTableEntry;
- ULONG64 Params[4];
- ULONG64 Reserved[5];
- BOOL Virtual;
- ULONG Reserved2;
- } IMAGEHLP_STACK_FRAME,*PIMAGEHLP_STACK_FRAME;
-
- typedef VOID IMAGEHLP_CONTEXT,*PIMAGEHLP_CONTEXT;
-
- BOOL IMAGEAPI SymSetContext(HANDLE hProcess,PIMAGEHLP_STACK_FRAME StackFrame,PIMAGEHLP_CONTEXT Context);
- BOOL IMAGEAPI SymFromAddr(HANDLE hProcess,DWORD64 Address,PDWORD64 Displacement,PSYMBOL_INFO Symbol);
- BOOL IMAGEAPI SymFromToken(HANDLE hProcess,DWORD64 Base,DWORD Token,PSYMBOL_INFO Symbol);
- BOOL IMAGEAPI SymFromName(HANDLE hProcess,LPSTR Name,PSYMBOL_INFO Symbol);
-
- typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO pSymInfo,ULONG SymbolSize,PVOID UserContext);
-
- BOOL IMAGEAPI SymEnumSymbols(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Mask,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
- BOOL IMAGEAPI SymEnumSymbolsForAddr(HANDLE hProcess,DWORD64 Address,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
-
-#define SYMENUMFLAG_FULLSRCH 1
-#define SYMENUMFLAG_SPEEDSRCH 2
-
- typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO {
- TI_GET_SYMTAG,TI_GET_SYMNAME,TI_GET_LENGTH,TI_GET_TYPE,TI_GET_TYPEID,TI_GET_BASETYPE,TI_GET_ARRAYINDEXTYPEID,TI_FINDCHILDREN,
- TI_GET_DATAKIND,TI_GET_ADDRESSOFFSET,TI_GET_OFFSET,TI_GET_VALUE,TI_GET_COUNT,TI_GET_CHILDRENCOUNT,TI_GET_BITPOSITION,TI_GET_VIRTUALBASECLASS,
- TI_GET_VIRTUALTABLESHAPEID,TI_GET_VIRTUALBASEPOINTEROFFSET,TI_GET_CLASSPARENTID,TI_GET_NESTED,TI_GET_SYMINDEX,TI_GET_LEXICALPARENT,
- TI_GET_ADDRESS,TI_GET_THISADJUST,TI_GET_UDTKIND,TI_IS_EQUIV_TO,TI_GET_CALLING_CONVENTION
- } IMAGEHLP_SYMBOL_TYPE_INFO;
-
- typedef struct _TI_FINDCHILDREN_PARAMS {
- ULONG Count;
- ULONG Start;
- ULONG ChildId[1];
- } TI_FINDCHILDREN_PARAMS;
-
- BOOL IMAGEAPI SymGetTypeInfo(HANDLE hProcess,DWORD64 ModBase,ULONG TypeId,IMAGEHLP_SYMBOL_TYPE_INFO GetType,PVOID pInfo);
- BOOL IMAGEAPI SymEnumTypes(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
- BOOL IMAGEAPI SymGetTypeFromName(HANDLE hProcess,ULONG64 BaseOfDll,LPSTR Name,PSYMBOL_INFO Symbol);
- BOOL IMAGEAPI SymAddSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Size,DWORD Flags);
- BOOL IMAGEAPI SymDeleteSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Flags);
-
- typedef BOOL (WINAPI *PDBGHELP_CREATE_USER_DUMP_CALLBACK)(DWORD DataType,PVOID *Data,LPDWORD DataLength,PVOID UserData);
-
- BOOL WINAPI DbgHelpCreateUserDump(LPSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData);
- BOOL WINAPI DbgHelpCreateUserDumpW(LPWSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData);
- BOOL IMAGEAPI SymGetSymFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD64 pdwDisplacement,PIMAGEHLP_SYMBOL64 Symbol);
-
-#ifdef _IMAGEHLP64
-#define SymGetSymFromAddr SymGetSymFromAddr64
-#else
- BOOL IMAGEAPI SymGetSymFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_SYMBOL Symbol);
-#endif
-
- BOOL IMAGEAPI SymGetSymFromName64(HANDLE hProcess,PSTR Name,PIMAGEHLP_SYMBOL64 Symbol);
-
-#ifdef _IMAGEHLP64
-#define SymGetSymFromName SymGetSymFromName64
-#else
- BOOL IMAGEAPI SymGetSymFromName(HANDLE hProcess,PSTR Name,PIMAGEHLP_SYMBOL Symbol);
-#endif
-
- DBHLP_DEPRECIATED BOOL IMAGEAPI FindFileInPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FilePath);
- DBHLP_DEPRECIATED BOOL IMAGEAPI FindFileInSearchPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,DWORD one,DWORD two,DWORD three,LPSTR FilePath);
- DBHLP_DEPRECIATED BOOL IMAGEAPI SymEnumSym(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
-
-#define SYMF_OMAP_GENERATED 0x00000001
-#define SYMF_OMAP_MODIFIED 0x00000002
-#define SYMF_REGISTER 0x00000008
-#define SYMF_REGREL 0x00000010
-#define SYMF_FRAMEREL 0x00000020
-#define SYMF_PARAMETER 0x00000040
-#define SYMF_LOCAL 0x00000080
-#define SYMF_CONSTANT 0x00000100
-#define SYMF_EXPORT 0x00000200
-#define SYMF_FORWARDER 0x00000400
-#define SYMF_FUNCTION 0x00000800
-#define SYMF_VIRTUAL 0x00001000
-#define SYMF_THUNK 0x00002000
-#define SYMF_TLSREL 0x00004000
-
-#define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1
-#define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER
-#define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL
-#define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL
-#define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER
-#define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL
-#define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT
-#define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION
-#define IMAGEHLP_SYMBOL_VIRTUAL SYMF_VIRTUAL
-#define IMAGEHLP_SYMBOL_THUNK SYMF_THUNK
-#define IMAGEHLP_SYMBOL_INFO_TLSRELATIVE SYMF_TLSREL
-
-#include <pshpack4.h>
-
-#define MINIDUMP_SIGNATURE ('PMDM')
-#define MINIDUMP_VERSION (42899)
- typedef DWORD RVA;
- typedef ULONG64 RVA64;
-
- typedef struct _MINIDUMP_LOCATION_DESCRIPTOR {
- ULONG32 DataSize;
- RVA Rva;
- } MINIDUMP_LOCATION_DESCRIPTOR;
-
- typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64 {
- ULONG64 DataSize;
- RVA64 Rva;
- } MINIDUMP_LOCATION_DESCRIPTOR64;
-
- typedef struct _MINIDUMP_MEMORY_DESCRIPTOR {
- ULONG64 StartOfMemoryRange;
- MINIDUMP_LOCATION_DESCRIPTOR Memory;
- } MINIDUMP_MEMORY_DESCRIPTOR,*PMINIDUMP_MEMORY_DESCRIPTOR;
-
- typedef struct _MINIDUMP_MEMORY_DESCRIPTOR64 {
- ULONG64 StartOfMemoryRange;
- ULONG64 DataSize;
- } MINIDUMP_MEMORY_DESCRIPTOR64,*PMINIDUMP_MEMORY_DESCRIPTOR64;
-
- typedef struct _MINIDUMP_HEADER {
- ULONG32 Signature;
- ULONG32 Version;
- ULONG32 NumberOfStreams;
- RVA StreamDirectoryRva;
- ULONG32 CheckSum;
- union {
- ULONG32 Reserved;
- ULONG32 TimeDateStamp;
- } DUMMYUNIONNAME;
- ULONG64 Flags;
- } MINIDUMP_HEADER,*PMINIDUMP_HEADER;
-
- typedef struct _MINIDUMP_DIRECTORY {
- ULONG32 StreamType;
- MINIDUMP_LOCATION_DESCRIPTOR Location;
- } MINIDUMP_DIRECTORY,*PMINIDUMP_DIRECTORY;
-
- typedef struct _MINIDUMP_STRING {
- ULONG32 Length;
- WCHAR Buffer [0];
- } MINIDUMP_STRING,*PMINIDUMP_STRING;
-
- typedef enum _MINIDUMP_STREAM_TYPE {
- UnusedStream = 0,ReservedStream0 = 1,ReservedStream1 = 2,ThreadListStream = 3,ModuleListStream = 4,MemoryListStream = 5,
- ExceptionStream = 6,SystemInfoStream = 7,ThreadExListStream = 8,Memory64ListStream = 9,CommentStreamA = 10,CommentStreamW = 11,
- HandleDataStream = 12,FunctionTableStream = 13,UnloadedModuleListStream = 14,MiscInfoStream = 15,LastReservedStream = 0xffff
- } MINIDUMP_STREAM_TYPE;
-
- typedef union _CPU_INFORMATION {
- struct {
- ULONG32 VendorId [3 ];
- ULONG32 VersionInformation;
- ULONG32 FeatureInformation;
- ULONG32 AMDExtendedCpuFeatures;
- } X86CpuInfo;
- struct {
- ULONG64 ProcessorFeatures [2 ];
- } OtherCpuInfo;
- } CPU_INFORMATION,*PCPU_INFORMATION;
-
- typedef struct _MINIDUMP_SYSTEM_INFO {
- USHORT ProcessorArchitecture;
- USHORT ProcessorLevel;
- USHORT ProcessorRevision;
- union {
- USHORT Reserved0;
- struct {
- UCHAR NumberOfProcessors;
- UCHAR ProductType;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- ULONG32 MajorVersion;
- ULONG32 MinorVersion;
- ULONG32 BuildNumber;
- ULONG32 PlatformId;
- RVA CSDVersionRva;
- union {
- ULONG32 Reserved1;
- struct {
- USHORT SuiteMask;
- USHORT Reserved2;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME1;
- CPU_INFORMATION Cpu;
- } MINIDUMP_SYSTEM_INFO,*PMINIDUMP_SYSTEM_INFO;
-
- C_ASSERT (sizeof (((PPROCESS_INFORMATION)0)->dwThreadId)==4);
-
- typedef struct _MINIDUMP_THREAD {
- ULONG32 ThreadId;
- ULONG32 SuspendCount;
- ULONG32 PriorityClass;
- ULONG32 Priority;
- ULONG64 Teb;
- MINIDUMP_MEMORY_DESCRIPTOR Stack;
- MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
- } MINIDUMP_THREAD,*PMINIDUMP_THREAD;
-
- typedef struct _MINIDUMP_THREAD_LIST {
- ULONG32 NumberOfThreads;
- MINIDUMP_THREAD Threads [0];
- } MINIDUMP_THREAD_LIST,*PMINIDUMP_THREAD_LIST;
-
- typedef struct _MINIDUMP_THREAD_EX {
- ULONG32 ThreadId;
- ULONG32 SuspendCount;
- ULONG32 PriorityClass;
- ULONG32 Priority;
- ULONG64 Teb;
- MINIDUMP_MEMORY_DESCRIPTOR Stack;
- MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
- MINIDUMP_MEMORY_DESCRIPTOR BackingStore;
- } MINIDUMP_THREAD_EX,*PMINIDUMP_THREAD_EX;
-
- typedef struct _MINIDUMP_THREAD_EX_LIST {
- ULONG32 NumberOfThreads;
- MINIDUMP_THREAD_EX Threads [0];
- } MINIDUMP_THREAD_EX_LIST,*PMINIDUMP_THREAD_EX_LIST;
-
- typedef struct _MINIDUMP_EXCEPTION {
- ULONG32 ExceptionCode;
- ULONG32 ExceptionFlags;
- ULONG64 ExceptionRecord;
- ULONG64 ExceptionAddress;
- ULONG32 NumberParameters;
- ULONG32 __unusedAlignment;
- ULONG64 ExceptionInformation [EXCEPTION_MAXIMUM_PARAMETERS ];
- } MINIDUMP_EXCEPTION,*PMINIDUMP_EXCEPTION;
-
- typedef struct MINIDUMP_EXCEPTION_STREAM {
- ULONG32 ThreadId;
- ULONG32 __alignment;
- MINIDUMP_EXCEPTION ExceptionRecord;
- MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
- } MINIDUMP_EXCEPTION_STREAM,*PMINIDUMP_EXCEPTION_STREAM;
-
- typedef struct _MINIDUMP_MODULE {
- ULONG64 BaseOfImage;
- ULONG32 SizeOfImage;
- ULONG32 CheckSum;
- ULONG32 TimeDateStamp;
- RVA ModuleNameRva;
- VS_FIXEDFILEINFO VersionInfo;
- MINIDUMP_LOCATION_DESCRIPTOR CvRecord;
- MINIDUMP_LOCATION_DESCRIPTOR MiscRecord;
- ULONG64 Reserved0;
- ULONG64 Reserved1;
- } MINIDUMP_MODULE,*PMINIDUMP_MODULE;
-
- typedef struct _MINIDUMP_MODULE_LIST {
- ULONG32 NumberOfModules;
- MINIDUMP_MODULE Modules [0 ];
- } MINIDUMP_MODULE_LIST,*PMINIDUMP_MODULE_LIST;
-
- typedef struct _MINIDUMP_MEMORY_LIST {
- ULONG32 NumberOfMemoryRanges;
- MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges [0];
- } MINIDUMP_MEMORY_LIST,*PMINIDUMP_MEMORY_LIST;
-
- typedef struct _MINIDUMP_MEMORY64_LIST {
- ULONG64 NumberOfMemoryRanges;
- RVA64 BaseRva;
- MINIDUMP_MEMORY_DESCRIPTOR64 MemoryRanges [0];
- } MINIDUMP_MEMORY64_LIST,*PMINIDUMP_MEMORY64_LIST;
-
- typedef struct _MINIDUMP_EXCEPTION_INFORMATION {
- DWORD ThreadId;
- PEXCEPTION_POINTERS ExceptionPointers;
- BOOL ClientPointers;
- } MINIDUMP_EXCEPTION_INFORMATION,*PMINIDUMP_EXCEPTION_INFORMATION;
-
- typedef struct _MINIDUMP_EXCEPTION_INFORMATION64 {
- DWORD ThreadId;
- ULONG64 ExceptionRecord;
- ULONG64 ContextRecord;
- BOOL ClientPointers;
- } MINIDUMP_EXCEPTION_INFORMATION64,*PMINIDUMP_EXCEPTION_INFORMATION64;
-
- typedef struct _MINIDUMP_HANDLE_DESCRIPTOR {
- ULONG64 Handle;
- RVA TypeNameRva;
- RVA ObjectNameRva;
- ULONG32 Attributes;
- ULONG32 GrantedAccess;
- ULONG32 HandleCount;
- ULONG32 PointerCount;
- } MINIDUMP_HANDLE_DESCRIPTOR,*PMINIDUMP_HANDLE_DESCRIPTOR;
-
- typedef struct _MINIDUMP_HANDLE_DATA_STREAM {
- ULONG32 SizeOfHeader;
- ULONG32 SizeOfDescriptor;
- ULONG32 NumberOfDescriptors;
- ULONG32 Reserved;
- } MINIDUMP_HANDLE_DATA_STREAM,*PMINIDUMP_HANDLE_DATA_STREAM;
-
- typedef struct _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR {
- ULONG64 MinimumAddress;
- ULONG64 MaximumAddress;
- ULONG64 BaseAddress;
- ULONG32 EntryCount;
- ULONG32 SizeOfAlignPad;
- } MINIDUMP_FUNCTION_TABLE_DESCRIPTOR,*PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
-
- typedef struct _MINIDUMP_FUNCTION_TABLE_STREAM {
- ULONG32 SizeOfHeader;
- ULONG32 SizeOfDescriptor;
- ULONG32 SizeOfNativeDescriptor;
- ULONG32 SizeOfFunctionEntry;
- ULONG32 NumberOfDescriptors;
- ULONG32 SizeOfAlignPad;
- } MINIDUMP_FUNCTION_TABLE_STREAM,*PMINIDUMP_FUNCTION_TABLE_STREAM;
-
- typedef struct _MINIDUMP_UNLOADED_MODULE {
- ULONG64 BaseOfImage;
- ULONG32 SizeOfImage;
- ULONG32 CheckSum;
- ULONG32 TimeDateStamp;
- RVA ModuleNameRva;
- } MINIDUMP_UNLOADED_MODULE,*PMINIDUMP_UNLOADED_MODULE;
-
- typedef struct _MINIDUMP_UNLOADED_MODULE_LIST {
- ULONG32 SizeOfHeader;
- ULONG32 SizeOfEntry;
- ULONG32 NumberOfEntries;
- } MINIDUMP_UNLOADED_MODULE_LIST,*PMINIDUMP_UNLOADED_MODULE_LIST;
-
-#define MINIDUMP_MISC1_PROCESS_ID 0x00000001
-#define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002
-
- typedef struct _MINIDUMP_MISC_INFO {
- ULONG32 SizeOfInfo;
- ULONG32 Flags1;
- ULONG32 ProcessId;
- ULONG32 ProcessCreateTime;
- ULONG32 ProcessUserTime;
- ULONG32 ProcessKernelTime;
- } MINIDUMP_MISC_INFO,*PMINIDUMP_MISC_INFO;
-
- typedef struct _MINIDUMP_USER_RECORD {
- ULONG32 Type;
- MINIDUMP_LOCATION_DESCRIPTOR Memory;
- } MINIDUMP_USER_RECORD,*PMINIDUMP_USER_RECORD;
-
- typedef struct _MINIDUMP_USER_STREAM {
- ULONG32 Type;
- ULONG BufferSize;
- PVOID Buffer;
- } MINIDUMP_USER_STREAM,*PMINIDUMP_USER_STREAM;
-
- typedef struct _MINIDUMP_USER_STREAM_INFORMATION {
- ULONG UserStreamCount;
- PMINIDUMP_USER_STREAM UserStreamArray;
- } MINIDUMP_USER_STREAM_INFORMATION,*PMINIDUMP_USER_STREAM_INFORMATION;
-
- typedef enum _MINIDUMP_CALLBACK_TYPE {
- ModuleCallback,ThreadCallback,ThreadExCallback,IncludeThreadCallback,IncludeModuleCallback,MemoryCallback
- } MINIDUMP_CALLBACK_TYPE;
-
- typedef struct _MINIDUMP_THREAD_CALLBACK {
- ULONG ThreadId;
- HANDLE ThreadHandle;
- CONTEXT Context;
- ULONG SizeOfContext;
- ULONG64 StackBase;
- ULONG64 StackEnd;
- } MINIDUMP_THREAD_CALLBACK,*PMINIDUMP_THREAD_CALLBACK;
-
- typedef struct _MINIDUMP_THREAD_EX_CALLBACK {
- ULONG ThreadId;
- HANDLE ThreadHandle;
- CONTEXT Context;
- ULONG SizeOfContext;
- ULONG64 StackBase;
- ULONG64 StackEnd;
- ULONG64 BackingStoreBase;
- ULONG64 BackingStoreEnd;
- } MINIDUMP_THREAD_EX_CALLBACK,*PMINIDUMP_THREAD_EX_CALLBACK;
-
- typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK {
- ULONG ThreadId;
- } MINIDUMP_INCLUDE_THREAD_CALLBACK,*PMINIDUMP_INCLUDE_THREAD_CALLBACK;
-
- typedef enum _THREAD_WRITE_FLAGS {
- ThreadWriteThread = 0x0001,ThreadWriteStack = 0x0002,ThreadWriteContext = 0x0004,ThreadWriteBackingStore = 0x0008,
- ThreadWriteInstructionWindow = 0x0010,ThreadWriteThreadData = 0x0020
- } THREAD_WRITE_FLAGS;
-
- typedef struct _MINIDUMP_MODULE_CALLBACK {
- PWCHAR FullPath;
- ULONG64 BaseOfImage;
- ULONG SizeOfImage;
- ULONG CheckSum;
- ULONG TimeDateStamp;
- VS_FIXEDFILEINFO VersionInfo;
- PVOID CvRecord;
- ULONG SizeOfCvRecord;
- PVOID MiscRecord;
- ULONG SizeOfMiscRecord;
- } MINIDUMP_MODULE_CALLBACK,*PMINIDUMP_MODULE_CALLBACK;
-
- typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK {
- ULONG64 BaseOfImage;
- } MINIDUMP_INCLUDE_MODULE_CALLBACK,*PMINIDUMP_INCLUDE_MODULE_CALLBACK;
-
- typedef enum _MODULE_WRITE_FLAGS {
- ModuleWriteModule = 0x0001,ModuleWriteDataSeg = 0x0002,ModuleWriteMiscRecord = 0x0004,ModuleWriteCvRecord = 0x0008,
- ModuleReferencedByMemory = 0x0010
- } MODULE_WRITE_FLAGS;
-
- typedef struct _MINIDUMP_CALLBACK_INPUT {
- ULONG ProcessId;
- HANDLE ProcessHandle;
- ULONG CallbackType;
- union {
- MINIDUMP_THREAD_CALLBACK Thread;
- MINIDUMP_THREAD_EX_CALLBACK ThreadEx;
- MINIDUMP_MODULE_CALLBACK Module;
- MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread;
- MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule;
- } DUMMYUNIONNAME;
- } MINIDUMP_CALLBACK_INPUT,*PMINIDUMP_CALLBACK_INPUT;
-
- typedef struct _MINIDUMP_CALLBACK_OUTPUT {
- union {
- ULONG ModuleWriteFlags;
- ULONG ThreadWriteFlags;
- struct {
- ULONG64 MemoryBase;
- ULONG MemorySize;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- } MINIDUMP_CALLBACK_OUTPUT,*PMINIDUMP_CALLBACK_OUTPUT;
-
- typedef enum _MINIDUMP_TYPE {
- MiniDumpNormal = 0x0000,MiniDumpWithDataSegs = 0x0001,MiniDumpWithFullMemory = 0x0002,MiniDumpWithHandleData = 0x0004,
- MiniDumpFilterMemory = 0x0008,MiniDumpScanMemory = 0x0010,MiniDumpWithUnloadedModules = 0x0020,MiniDumpWithIndirectlyReferencedMemory = 0x0040,
- MiniDumpFilterModulePaths = 0x0080,MiniDumpWithProcessThreadData = 0x0100,MiniDumpWithPrivateReadWriteMemory = 0x0200,
- MiniDumpWithoutOptionalData = 0x0400
- } MINIDUMP_TYPE;
-
- typedef BOOL (WINAPI *MINIDUMP_CALLBACK_ROUTINE)(PVOID CallbackParam,CONST PMINIDUMP_CALLBACK_INPUT CallbackInput,PMINIDUMP_CALLBACK_OUTPUT CallbackOutput);
-
- typedef struct _MINIDUMP_CALLBACK_INFORMATION {
- MINIDUMP_CALLBACK_ROUTINE CallbackRoutine;
- PVOID CallbackParam;
- } MINIDUMP_CALLBACK_INFORMATION,*PMINIDUMP_CALLBACK_INFORMATION;
-
-#define RVA_TO_ADDR(Mapping,Rva) ((PVOID)(((ULONG_PTR) (Mapping)) + (Rva)))
-
- BOOL WINAPI MiniDumpWriteDump(HANDLE hProcess,DWORD ProcessId,HANDLE hFile,MINIDUMP_TYPE DumpType,CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
- BOOL WINAPI MiniDumpReadDumpStream(PVOID BaseOfDump,ULONG StreamNumber,PMINIDUMP_DIRECTORY *Dir,PVOID *StreamPointer,ULONG *StreamSize);
-
-#include <poppack.h>
-
-#ifdef __cplusplus
-}
-#endif
-#endif
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+#ifndef _DBGHELP_
+#define _DBGHELP_
+
+#ifdef _WIN64
+#ifndef _IMAGEHLP64
+#define _IMAGEHLP64
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IMAGEAPI DECLSPEC_IMPORT WINAPI
+#define DBHLP_DEPRECIATED __declspec(deprecated)
+
+#define DBHLPAPI IMAGEAPI
+
+#define IMAGE_SEPARATION (64*1024)
+
+ typedef struct _LOADED_IMAGE {
+ PSTR ModuleName;
+ HANDLE hFile;
+ PUCHAR MappedAddress;
+#ifdef _IMAGEHLP64
+ PIMAGE_NT_HEADERS64 FileHeader;
+#else
+ PIMAGE_NT_HEADERS32 FileHeader;
+#endif
+ PIMAGE_SECTION_HEADER LastRvaSection;
+ ULONG NumberOfSections;
+ PIMAGE_SECTION_HEADER Sections;
+ ULONG Characteristics;
+ BOOLEAN fSystemImage;
+ BOOLEAN fDOSImage;
+ LIST_ENTRY Links;
+ ULONG SizeOfImage;
+ } LOADED_IMAGE,*PLOADED_IMAGE;
+
+#define MAX_SYM_NAME 2000
+
+ typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE FileHandle,PSTR FileName,PVOID CallerData);
+ typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PSTR filename,PVOID context);
+ typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE FileHandle,PSTR FileName,PVOID CallerData);
+
+ typedef BOOL (WINAPI *PSYMBOLSERVERPROC)(LPCSTR,LPCSTR,PVOID,DWORD,DWORD,LPSTR);
+ typedef BOOL (WINAPI *PSYMBOLSERVEROPENPROC)(VOID);
+ typedef BOOL (WINAPI *PSYMBOLSERVERCLOSEPROC)(VOID);
+ typedef BOOL (WINAPI *PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR,ULONG64);
+ typedef BOOL (CALLBACK WINAPI *PSYMBOLSERVERCALLBACKPROC)(UINT_PTR action,ULONG64 data,ULONG64 context);
+ typedef UINT_PTR (WINAPI *PSYMBOLSERVERGETOPTIONSPROC)();
+ typedef BOOL (WINAPI *PSYMBOLSERVERPINGPROC)(LPCSTR);
+
+ HANDLE IMAGEAPI FindDebugInfoFile(PSTR FileName,PSTR SymbolPath,PSTR DebugFilePath);
+ HANDLE IMAGEAPI FindDebugInfoFileEx(PSTR FileName,PSTR SymbolPath,PSTR DebugFilePath,PFIND_DEBUG_FILE_CALLBACK Callback,PVOID CallerData);
+ BOOL IMAGEAPI SymFindFileInPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FoundFile,PFINDFILEINPATHCALLBACK callback,PVOID context);
+ HANDLE IMAGEAPI FindExecutableImage(PSTR FileName,PSTR SymbolPath,PSTR ImageFilePath);
+ HANDLE IMAGEAPI FindExecutableImageEx(PSTR FileName,PSTR SymbolPath,PSTR ImageFilePath,PFIND_EXE_FILE_CALLBACK Callback,PVOID CallerData);
+ PIMAGE_NT_HEADERS IMAGEAPI ImageNtHeader(PVOID Base);
+ PVOID IMAGEAPI ImageDirectoryEntryToDataEx(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size,PIMAGE_SECTION_HEADER *FoundHeader);
+ PVOID IMAGEAPI ImageDirectoryEntryToData(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size);
+ PIMAGE_SECTION_HEADER IMAGEAPI ImageRvaToSection(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva);
+ PVOID IMAGEAPI ImageRvaToVa(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva,PIMAGE_SECTION_HEADER *LastRvaSection);
+
+#define SSRVOPT_CALLBACK 0x0001
+#define SSRVOPT_DWORD 0x0002
+#define SSRVOPT_DWORDPTR 0x0004
+#define SSRVOPT_GUIDPTR 0x0008
+#define SSRVOPT_OLDGUIDPTR 0x0010
+#define SSRVOPT_UNATTENDED 0x0020
+#define SSRVOPT_NOCOPY 0x0040
+#define SSRVOPT_PARENTWIN 0x0080
+#define SSRVOPT_PARAMTYPE 0x0100
+#define SSRVOPT_SECURE 0x0200
+#define SSRVOPT_TRACE 0x0400
+#define SSRVOPT_SETCONTEXT 0x0800
+#define SSRVOPT_PROXY 0x1000
+#define SSRVOPT_DOWNSTREAM_STORE 0x2000
+#define SSRVOPT_RESET ((ULONG_PTR)-1)
+
+#define SSRVACTION_TRACE 1
+#define SSRVACTION_QUERYCANCEL 2
+#define SSRVACTION_EVENT 3
+
+#ifndef _WIN64
+
+ typedef struct _IMAGE_DEBUG_INFORMATION {
+ LIST_ENTRY List;
+ DWORD ReservedSize;
+ PVOID ReservedMappedBase;
+ USHORT ReservedMachine;
+ USHORT ReservedCharacteristics;
+ DWORD ReservedCheckSum;
+ DWORD ImageBase;
+ DWORD SizeOfImage;
+ DWORD ReservedNumberOfSections;
+ PIMAGE_SECTION_HEADER ReservedSections;
+ DWORD ReservedExportedNamesSize;
+ PSTR ReservedExportedNames;
+ DWORD ReservedNumberOfFunctionTableEntries;
+ PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries;
+ DWORD ReservedLowestFunctionStartingAddress;
+ DWORD ReservedHighestFunctionEndingAddress;
+ DWORD ReservedNumberOfFpoTableEntries;
+ PFPO_DATA ReservedFpoTableEntries;
+ DWORD SizeOfCoffSymbols;
+ PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
+ DWORD ReservedSizeOfCodeViewSymbols;
+ PVOID ReservedCodeViewSymbols;
+ PSTR ImageFilePath;
+ PSTR ImageFileName;
+ PSTR ReservedDebugFilePath;
+ DWORD ReservedTimeDateStamp;
+ BOOL ReservedRomImage;
+ PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory;
+ DWORD ReservedNumberOfDebugDirectories;
+ DWORD ReservedOriginalFunctionTableBaseAddress;
+ DWORD Reserved[2 ];
+ } IMAGE_DEBUG_INFORMATION,*PIMAGE_DEBUG_INFORMATION;
+
+ PIMAGE_DEBUG_INFORMATION IMAGEAPI MapDebugInformation(HANDLE FileHandle,PSTR FileName,PSTR SymbolPath,DWORD ImageBase);
+ BOOL IMAGEAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION DebugInfo);
+#endif
+
+ typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(LPCSTR FilePath,PVOID CallerData);
+
+ BOOL IMAGEAPI SearchTreeForFile(PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer);
+ BOOL IMAGEAPI EnumDirTree(HANDLE hProcess,PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer,PENUMDIRTREE_CALLBACK Callback,PVOID CallbackData);
+ BOOL IMAGEAPI MakeSureDirectoryPathExists(PCSTR DirPath);
+
+#define UNDNAME_COMPLETE (0x0000)
+#define UNDNAME_NO_LEADING_UNDERSCORES (0x0001)
+#define UNDNAME_NO_MS_KEYWORDS (0x0002)
+#define UNDNAME_NO_FUNCTION_RETURNS (0x0004)
+#define UNDNAME_NO_ALLOCATION_MODEL (0x0008)
+#define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010)
+#define UNDNAME_NO_MS_THISTYPE (0x0020)
+#define UNDNAME_NO_CV_THISTYPE (0x0040)
+#define UNDNAME_NO_THISTYPE (0x0060)
+#define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080)
+#define UNDNAME_NO_THROW_SIGNATURES (0x0100)
+#define UNDNAME_NO_MEMBER_TYPE (0x0200)
+#define UNDNAME_NO_RETURN_UDT_MODEL (0x0400)
+#define UNDNAME_32_BIT_DECODE (0x0800)
+#define UNDNAME_NAME_ONLY (0x1000)
+#define UNDNAME_NO_ARGUMENTS (0x2000)
+#define UNDNAME_NO_SPECIAL_SYMS (0x4000)
+
+ DWORD IMAGEAPI WINAPI UnDecorateSymbolName(PCSTR DecoratedName,PSTR UnDecoratedName,DWORD UndecoratedLength,DWORD Flags);
+
+#define DBHHEADER_DEBUGDIRS 0x1
+
+ typedef struct _MODLOAD_DATA {
+ DWORD ssize;
+ DWORD ssig;
+ PVOID data;
+ DWORD size;
+ DWORD flags;
+ } MODLOAD_DATA,*PMODLOAD_DATA;
+
+ typedef enum {
+ AddrMode1616,AddrMode1632,AddrModeReal,AddrModeFlat
+ } ADDRESS_MODE;
+
+ typedef struct _tagADDRESS64 {
+ DWORD64 Offset;
+ WORD Segment;
+ ADDRESS_MODE Mode;
+ } ADDRESS64,*LPADDRESS64;
+
+#ifdef _IMAGEHLP64
+#define ADDRESS ADDRESS64
+#define LPADDRESS LPADDRESS64
+#else
+ typedef struct _tagADDRESS {
+ DWORD Offset;
+ WORD Segment;
+ ADDRESS_MODE Mode;
+ } ADDRESS,*LPADDRESS;
+
+ static __inline void Address32To64(LPADDRESS a32,LPADDRESS64 a64) {
+ a64->Offset = (ULONG64)(LONG64)(LONG)a32->Offset;
+ a64->Segment = a32->Segment;
+ a64->Mode = a32->Mode;
+ }
+
+ static __inline void Address64To32(LPADDRESS64 a64,LPADDRESS a32) {
+ a32->Offset = (ULONG)a64->Offset;
+ a32->Segment = a64->Segment;
+ a32->Mode = a64->Mode;
+ }
+#endif
+
+ typedef struct _KDHELP64 {
+ DWORD64 Thread;
+ DWORD ThCallbackStack;
+ DWORD ThCallbackBStore;
+ DWORD NextCallback;
+ DWORD FramePointer;
+ DWORD64 KiCallUserMode;
+ DWORD64 KeUserCallbackDispatcher;
+ DWORD64 SystemRangeStart;
+ DWORD64 Reserved[8];
+ } KDHELP64,*PKDHELP64;
+
+#ifdef _IMAGEHLP64
+#define KDHELP KDHELP64
+#define PKDHELP PKDHELP64
+#else
+ typedef struct _KDHELP {
+ DWORD Thread;
+ DWORD ThCallbackStack;
+ DWORD NextCallback;
+ DWORD FramePointer;
+ DWORD KiCallUserMode;
+ DWORD KeUserCallbackDispatcher;
+ DWORD SystemRangeStart;
+ DWORD ThCallbackBStore;
+ DWORD Reserved[8];
+ } KDHELP,*PKDHELP;
+
+ static __inline void KdHelp32To64(PKDHELP p32,PKDHELP64 p64) {
+ p64->Thread = p32->Thread;
+ p64->ThCallbackStack = p32->ThCallbackStack;
+ p64->NextCallback = p32->NextCallback;
+ p64->FramePointer = p32->FramePointer;
+ p64->KiCallUserMode = p32->KiCallUserMode;
+ p64->KeUserCallbackDispatcher = p32->KeUserCallbackDispatcher;
+ p64->SystemRangeStart = p32->SystemRangeStart;
+ }
+#endif
+
+ typedef struct _tagSTACKFRAME64 {
+ ADDRESS64 AddrPC;
+ ADDRESS64 AddrReturn;
+ ADDRESS64 AddrFrame;
+ ADDRESS64 AddrStack;
+ ADDRESS64 AddrBStore;
+ PVOID FuncTableEntry;
+ DWORD64 Params[4];
+ BOOL Far;
+ BOOL Virtual;
+ DWORD64 Reserved[3];
+ KDHELP64 KdHelp;
+ } STACKFRAME64,*LPSTACKFRAME64;
+
+#ifdef _IMAGEHLP64
+#define STACKFRAME STACKFRAME64
+#define LPSTACKFRAME LPSTACKFRAME64
+#else
+ typedef struct _tagSTACKFRAME {
+ ADDRESS AddrPC;
+ ADDRESS AddrReturn;
+ ADDRESS AddrFrame;
+ ADDRESS AddrStack;
+ PVOID FuncTableEntry;
+ DWORD Params[4];
+ BOOL Far;
+ BOOL Virtual;
+ DWORD Reserved[3];
+ KDHELP KdHelp;
+ ADDRESS AddrBStore;
+ } STACKFRAME,*LPSTACKFRAME;
+#endif
+
+ typedef BOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE64)(HANDLE hProcess,DWORD64 qwBaseAddress,PVOID lpBuffer,DWORD nSize,LPDWORD lpNumberOfBytesRead);
+ typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE hProcess,DWORD64 AddrBase);
+ typedef DWORD64 (WINAPI *PGET_MODULE_BASE_ROUTINE64)(HANDLE hProcess,DWORD64 Address);
+ typedef DWORD64 (WINAPI *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE hProcess,HANDLE hThread,LPADDRESS64 lpaddr);
+
+ BOOL IMAGEAPI StackWalk64(DWORD MachineType,HANDLE hProcess,HANDLE hThread,LPSTACKFRAME64 StackFrame,PVOID ContextRecord,PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress);
+
+#ifdef _IMAGEHLP64
+#define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64
+#define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64
+#define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64
+#define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64
+#define StackWalk StackWalk64
+#else
+ typedef BOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE hProcess,DWORD lpBaseAddress,PVOID lpBuffer,DWORD nSize,PDWORD lpNumberOfBytesRead);
+ typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE hProcess,DWORD AddrBase);
+ typedef DWORD (WINAPI *PGET_MODULE_BASE_ROUTINE)(HANDLE hProcess,DWORD Address);
+ typedef DWORD (WINAPI *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE hProcess,HANDLE hThread,LPADDRESS lpaddr);
+
+ BOOL IMAGEAPI StackWalk(DWORD MachineType,HANDLE hProcess,HANDLE hThread,LPSTACKFRAME StackFrame,PVOID ContextRecord,PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,PTRANSLATE_ADDRESS_ROUTINE TranslateAddress);
+#endif
+
+#define API_VERSION_NUMBER 9
+
+ typedef struct API_VERSION {
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ USHORT Revision;
+ USHORT Reserved;
+ } API_VERSION,*LPAPI_VERSION;
+
+ LPAPI_VERSION IMAGEAPI ImagehlpApiVersion(VOID);
+ LPAPI_VERSION IMAGEAPI ImagehlpApiVersionEx(LPAPI_VERSION AppVersion);
+ DWORD IMAGEAPI GetTimestampForLoadedLibrary(HMODULE Module);
+
+ typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PSTR ModuleName,DWORD64 BaseOfDll,PVOID UserContext);
+ typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext);
+ typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PWSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext);
+ typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PSTR ModuleName,DWORD64 ModuleBase,ULONG ModuleSize,PVOID UserContext);
+ typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE hProcess,ULONG ActionCode,ULONG64 CallbackData,ULONG64 UserContext);
+ typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE hProcess,DWORD AddrBase,PVOID UserContext);
+ typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE hProcess,ULONG64 AddrBase,ULONG64 UserContext);
+
+#ifdef _IMAGEHLP64
+#define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64
+#define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64
+#define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACK64W
+#define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64
+#define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64
+#define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64
+#else
+ typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PSTR ModuleName,ULONG BaseOfDll,PVOID UserContext);
+ typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext);
+ typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PWSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext);
+ typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PSTR ModuleName,ULONG ModuleBase,ULONG ModuleSize,PVOID UserContext);
+ typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE hProcess,ULONG ActionCode,PVOID CallbackData,PVOID UserContext);
+#endif
+
+#define SYMFLAG_VALUEPRESENT 0x00000001
+#define SYMFLAG_REGISTER 0x00000008
+#define SYMFLAG_REGREL 0x00000010
+#define SYMFLAG_FRAMEREL 0x00000020
+#define SYMFLAG_PARAMETER 0x00000040
+#define SYMFLAG_LOCAL 0x00000080
+#define SYMFLAG_CONSTANT 0x00000100
+#define SYMFLAG_EXPORT 0x00000200
+#define SYMFLAG_FORWARDER 0x00000400
+#define SYMFLAG_FUNCTION 0x00000800
+#define SYMFLAG_VIRTUAL 0x00001000
+#define SYMFLAG_THUNK 0x00002000
+#define SYMFLAG_TLSREL 0x00004000
+
+ typedef enum {
+ SymNone = 0,SymCoff,SymCv,SymPdb,SymExport,SymDeferred,SymSym,SymDia,SymVirtual,NumSymTypes
+ } SYM_TYPE;
+
+ typedef struct _IMAGEHLP_SYMBOL64 {
+ DWORD SizeOfStruct;
+ DWORD64 Address;
+ DWORD Size;
+ DWORD Flags;
+ DWORD MaxNameLength;
+ CHAR Name[1];
+ } IMAGEHLP_SYMBOL64,*PIMAGEHLP_SYMBOL64;
+
+ typedef struct _IMAGEHLP_SYMBOL64_PACKAGE {
+ IMAGEHLP_SYMBOL64 sym;
+ CHAR name[MAX_SYM_NAME + 1];
+ } IMAGEHLP_SYMBOL64_PACKAGE,*PIMAGEHLP_SYMBOL64_PACKAGE;
+
+#ifdef _IMAGEHLP64
+
+#define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64
+#define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64
+#define IMAGEHLP_SYMBOL_PACKAGE IMAGEHLP_SYMBOL64_PACKAGE
+#define PIMAGEHLP_SYMBOL_PACKAGE PIMAGEHLP_SYMBOL64_PACKAGE
+#else
+
+ typedef struct _IMAGEHLP_SYMBOL {
+ DWORD SizeOfStruct;
+ DWORD Address;
+ DWORD Size;
+ DWORD Flags;
+ DWORD MaxNameLength;
+ CHAR Name[1];
+ } IMAGEHLP_SYMBOL,*PIMAGEHLP_SYMBOL;
+
+ typedef struct _IMAGEHLP_SYMBOL_PACKAGE {
+ IMAGEHLP_SYMBOL sym;
+ CHAR name[MAX_SYM_NAME + 1];
+ } IMAGEHLP_SYMBOL_PACKAGE,*PIMAGEHLP_SYMBOL_PACKAGE;
+#endif
+
+ typedef struct _IMAGEHLP_MODULE64 {
+ DWORD SizeOfStruct;
+ DWORD64 BaseOfImage;
+ DWORD ImageSize;
+ DWORD TimeDateStamp;
+ DWORD CheckSum;
+ DWORD NumSyms;
+ SYM_TYPE SymType;
+ CHAR ModuleName[32];
+ CHAR ImageName[256];
+ CHAR LoadedImageName[256];
+ CHAR LoadedPdbName[256];
+ DWORD CVSig;
+ CHAR CVData[MAX_PATH*3];
+ DWORD PdbSig;
+ GUID PdbSig70;
+ DWORD PdbAge;
+ BOOL PdbUnmatched;
+ BOOL DbgUnmatched;
+ BOOL LineNumbers;
+ BOOL GlobalSymbols;
+ BOOL TypeInfo;
+ } IMAGEHLP_MODULE64,*PIMAGEHLP_MODULE64;
+
+ typedef struct _IMAGEHLP_MODULE64W {
+ DWORD SizeOfStruct;
+ DWORD64 BaseOfImage;
+ DWORD ImageSize;
+ DWORD TimeDateStamp;
+ DWORD CheckSum;
+ DWORD NumSyms;
+ SYM_TYPE SymType;
+ WCHAR ModuleName[32];
+ WCHAR ImageName[256];
+ WCHAR LoadedImageName[256];
+ WCHAR LoadedPdbName[256];
+ DWORD CVSig;
+ WCHAR CVData[MAX_PATH*3];
+ DWORD PdbSig;
+ GUID PdbSig70;
+ DWORD PdbAge;
+ BOOL PdbUnmatched;
+ BOOL DbgUnmatched;
+ BOOL LineNumbers;
+ BOOL GlobalSymbols;
+ BOOL TypeInfo;
+ } IMAGEHLP_MODULEW64,*PIMAGEHLP_MODULEW64;
+
+#ifdef _IMAGEHLP64
+#define IMAGEHLP_MODULE IMAGEHLP_MODULE64
+#define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64
+#define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64
+#define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64
+#else
+ typedef struct _IMAGEHLP_MODULE {
+ DWORD SizeOfStruct;
+ DWORD BaseOfImage;
+ DWORD ImageSize;
+ DWORD TimeDateStamp;
+ DWORD CheckSum;
+ DWORD NumSyms;
+ SYM_TYPE SymType;
+ CHAR ModuleName[32];
+ CHAR ImageName[256];
+ CHAR LoadedImageName[256];
+ } IMAGEHLP_MODULE,*PIMAGEHLP_MODULE;
+
+ typedef struct _IMAGEHLP_MODULEW {
+ DWORD SizeOfStruct;
+ DWORD BaseOfImage;
+ DWORD ImageSize;
+ DWORD TimeDateStamp;
+ DWORD CheckSum;
+ DWORD NumSyms;
+ SYM_TYPE SymType;
+ WCHAR ModuleName[32];
+ WCHAR ImageName[256];
+ WCHAR LoadedImageName[256];
+ } IMAGEHLP_MODULEW,*PIMAGEHLP_MODULEW;
+#endif
+
+ typedef struct _IMAGEHLP_LINE64 {
+ DWORD SizeOfStruct;
+ PVOID Key;
+ DWORD LineNumber;
+ PCHAR FileName;
+ DWORD64 Address;
+ } IMAGEHLP_LINE64,*PIMAGEHLP_LINE64;
+
+#ifdef _IMAGEHLP64
+#define IMAGEHLP_LINE IMAGEHLP_LINE64
+#define PIMAGEHLP_LINE PIMAGEHLP_LINE64
+#else
+ typedef struct _IMAGEHLP_LINE {
+ DWORD SizeOfStruct;
+ PVOID Key;
+ DWORD LineNumber;
+ PCHAR FileName;
+ DWORD Address;
+ } IMAGEHLP_LINE,*PIMAGEHLP_LINE;
+#endif
+
+ typedef struct _SOURCEFILE {
+ DWORD64 ModBase;
+ PCHAR FileName;
+ } SOURCEFILE,*PSOURCEFILE;
+
+#define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
+#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
+#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
+#define CBA_SYMBOLS_UNLOADED 0x00000004
+#define CBA_DUPLICATE_SYMBOL 0x00000005
+#define CBA_READ_MEMORY 0x00000006
+#define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007
+#define CBA_SET_OPTIONS 0x00000008
+#define CBA_EVENT 0x00000010
+#define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020
+#define CBA_DEBUG_INFO 0x10000000
+
+ typedef struct _IMAGEHLP_CBA_READ_MEMORY {
+ DWORD64 addr;
+ PVOID buf;
+ DWORD bytes;
+ DWORD *bytesread;
+ } IMAGEHLP_CBA_READ_MEMORY,*PIMAGEHLP_CBA_READ_MEMORY;
+
+ enum {
+ sevInfo = 0,sevProblem,sevAttn,sevFatal,sevMax
+ };
+
+ typedef struct _IMAGEHLP_CBA_EVENT {
+ DWORD severity;
+ DWORD code;
+ PCHAR desc;
+ PVOID object;
+ } IMAGEHLP_CBA_EVENT,*PIMAGEHLP_CBA_EVENT;
+
+ typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 {
+ DWORD SizeOfStruct;
+ DWORD64 BaseOfImage;
+ DWORD CheckSum;
+ DWORD TimeDateStamp;
+ CHAR FileName[MAX_PATH];
+ BOOLEAN Reparse;
+ HANDLE hFile;
+ DWORD Flags;
+ } IMAGEHLP_DEFERRED_SYMBOL_LOAD64,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
+
+#define DSLFLAG_MISMATCHED_PDB 0x1
+#define DSLFLAG_MISMATCHED_DBG 0x2
+
+#ifdef _IMAGEHLP64
+#define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64
+#define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
+#else
+ typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
+ DWORD SizeOfStruct;
+ DWORD BaseOfImage;
+ DWORD CheckSum;
+ DWORD TimeDateStamp;
+ CHAR FileName[MAX_PATH];
+ BOOLEAN Reparse;
+ HANDLE hFile;
+ } IMAGEHLP_DEFERRED_SYMBOL_LOAD,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
+#endif
+
+ typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 {
+ DWORD SizeOfStruct;
+ DWORD NumberOfDups;
+ PIMAGEHLP_SYMBOL64 Symbol;
+ DWORD SelectedSymbol;
+ } IMAGEHLP_DUPLICATE_SYMBOL64,*PIMAGEHLP_DUPLICATE_SYMBOL64;
+
+#ifdef _IMAGEHLP64
+#define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64
+#define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64
+#else
+ typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
+ DWORD SizeOfStruct;
+ DWORD NumberOfDups;
+ PIMAGEHLP_SYMBOL Symbol;
+ DWORD SelectedSymbol;
+ } IMAGEHLP_DUPLICATE_SYMBOL,*PIMAGEHLP_DUPLICATE_SYMBOL;
+#endif
+
+ BOOL IMAGEAPI SymSetParentWindow(HWND hwnd);
+ PCHAR IMAGEAPI SymSetHomeDirectory(PCSTR dir);
+ PCHAR IMAGEAPI SymGetHomeDirectory(DWORD type,PSTR dir,size_t size);
+
+ enum {
+ hdBase = 0,hdSym,hdSrc,hdMax
+ };
+
+#define SYMOPT_CASE_INSENSITIVE 0x00000001
+#define SYMOPT_UNDNAME 0x00000002
+#define SYMOPT_DEFERRED_LOADS 0x00000004
+#define SYMOPT_NO_CPP 0x00000008
+#define SYMOPT_LOAD_LINES 0x00000010
+#define SYMOPT_OMAP_FIND_NEAREST 0x00000020
+#define SYMOPT_LOAD_ANYTHING 0x00000040
+#define SYMOPT_IGNORE_CVREC 0x00000080
+#define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100
+#define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200
+#define SYMOPT_EXACT_SYMBOLS 0x00000400
+#define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800
+#define SYMOPT_IGNORE_NT_SYMPATH 0x00001000
+#define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000
+#define SYMOPT_PUBLICS_ONLY 0x00004000
+#define SYMOPT_NO_PUBLICS 0x00008000
+#define SYMOPT_AUTO_PUBLICS 0x00010000
+#define SYMOPT_NO_IMAGE_SEARCH 0x00020000
+#define SYMOPT_SECURE 0x00040000
+#define SYMOPT_NO_PROMPTS 0x00080000
+
+#define SYMOPT_DEBUG 0x80000000
+
+ DWORD IMAGEAPI SymSetOptions(DWORD SymOptions);
+ DWORD IMAGEAPI SymGetOptions(VOID);
+ BOOL IMAGEAPI SymCleanup(HANDLE hProcess);
+ BOOL IMAGEAPI SymMatchString(LPSTR string,LPSTR expression,BOOL fCase);
+
+ typedef BOOL (CALLBACK *PSYM_ENUMSOURCFILES_CALLBACK)(PSOURCEFILE pSourceFile,PVOID UserContext);
+
+ BOOL IMAGEAPI SymEnumSourceFiles(HANDLE hProcess,ULONG64 ModBase,LPSTR Mask,PSYM_ENUMSOURCFILES_CALLBACK cbSrcFiles,PVOID UserContext);
+ BOOL IMAGEAPI SymEnumerateModules64(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback,PVOID UserContext);
+
+#ifdef _IMAGEHLP64
+#define SymEnumerateModules SymEnumerateModules64
+#else
+ BOOL IMAGEAPI SymEnumerateModules(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,PVOID UserContext);
+#endif
+
+ BOOL IMAGEAPI SymEnumerateSymbols64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback,PVOID UserContext);
+ BOOL IMAGEAPI SymEnumerateSymbolsW64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback,PVOID UserContext);
+
+#ifdef _IMAGEHLP64
+#define SymEnumerateSymbols SymEnumerateSymbols64
+#define SymEnumerateSymbolsW SymEnumerateSymbolsW64
+#else
+ BOOL IMAGEAPI SymEnumerateSymbols(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
+ BOOL IMAGEAPI SymEnumerateSymbolsW(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext);
+#endif
+
+ BOOL IMAGEAPI EnumerateLoadedModules64(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback,PVOID UserContext);
+#ifdef _IMAGEHLP64
+#define EnumerateLoadedModules EnumerateLoadedModules64
+#else
+ BOOL IMAGEAPI EnumerateLoadedModules(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,PVOID UserContext);
+#endif
+
+ PVOID IMAGEAPI SymFunctionTableAccess64(HANDLE hProcess,DWORD64 AddrBase);
+
+#ifdef _IMAGEHLP64
+#define SymFunctionTableAccess SymFunctionTableAccess64
+#else
+ PVOID IMAGEAPI SymFunctionTableAccess(HANDLE hProcess,DWORD AddrBase);
+#endif
+
+ BOOL IMAGEAPI SymGetModuleInfo64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULE64 ModuleInfo);
+ BOOL IMAGEAPI SymGetModuleInfoW64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULEW64 ModuleInfo);
+
+#ifdef _IMAGEHLP64
+#define SymGetModuleInfo SymGetModuleInfo64
+#define SymGetModuleInfoW SymGetModuleInfoW64
+#else
+ BOOL IMAGEAPI SymGetModuleInfo(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULE ModuleInfo);
+ BOOL IMAGEAPI SymGetModuleInfoW(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULEW ModuleInfo);
+#endif
+
+ DWORD64 IMAGEAPI SymGetModuleBase64(HANDLE hProcess,DWORD64 qwAddr);
+
+#ifdef _IMAGEHLP64
+#define SymGetModuleBase SymGetModuleBase64
+#else
+ DWORD IMAGEAPI SymGetModuleBase(HANDLE hProcess,DWORD dwAddr);
+#endif
+
+ BOOL IMAGEAPI SymGetSymNext64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol);
+
+#ifdef _IMAGEHLP64
+#define SymGetSymNext SymGetSymNext64
+#else
+ BOOL IMAGEAPI SymGetSymNext(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol);
+#endif
+
+ BOOL IMAGEAPI SymGetSymPrev64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol);
+
+#ifdef _IMAGEHLP64
+#define SymGetSymPrev SymGetSymPrev64
+#else
+ BOOL IMAGEAPI SymGetSymPrev(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol);
+#endif
+
+ typedef struct _SRCCODEINFO {
+ DWORD SizeOfStruct;
+ PVOID Key;
+ DWORD64 ModBase;
+ CHAR Obj[MAX_PATH + 1];
+ CHAR FileName[MAX_PATH + 1];
+ DWORD LineNumber;
+ DWORD64 Address;
+ } SRCCODEINFO,*PSRCCODEINFO;
+
+ typedef BOOL (CALLBACK *PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO LineInfo,PVOID UserContext);
+
+ BOOL IMAGEAPI SymEnumLines(HANDLE hProcess,ULONG64 Base,PCSTR Obj,PCSTR File,PSYM_ENUMLINES_CALLBACK EnumLinesCallback,PVOID UserContext);
+ BOOL IMAGEAPI SymGetLineFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE64 Line64);
+
+#ifdef _IMAGEHLP64
+#define SymGetLineFromAddr SymGetLineFromAddr64
+#else
+ BOOL IMAGEAPI SymGetLineFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE Line);
+#endif
+
+ BOOL IMAGEAPI SymGetLineFromName64(HANDLE hProcess,PSTR ModuleName,PSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE64 Line);
+
+#ifdef _IMAGEHLP64
+#define SymGetLineFromName SymGetLineFromName64
+#else
+ BOOL IMAGEAPI SymGetLineFromName(HANDLE hProcess,PSTR ModuleName,PSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE Line);
+#endif
+
+ BOOL IMAGEAPI SymGetLineNext64(HANDLE hProcess,PIMAGEHLP_LINE64 Line);
+
+#ifdef _IMAGEHLP64
+#define SymGetLineNext SymGetLineNext64
+#else
+ BOOL IMAGEAPI SymGetLineNext(HANDLE hProcess,PIMAGEHLP_LINE Line);
+#endif
+
+ BOOL IMAGEAPI SymGetLinePrev64(HANDLE hProcess,PIMAGEHLP_LINE64 Line);
+
+#ifdef _IMAGEHLP64
+#define SymGetLinePrev SymGetLinePrev64
+#else
+ BOOL IMAGEAPI SymGetLinePrev(HANDLE hProcess,PIMAGEHLP_LINE Line);
+#endif
+
+ BOOL IMAGEAPI SymMatchFileName(PSTR FileName,PSTR Match,PSTR *FileNameStop,PSTR *MatchStop);
+ BOOL IMAGEAPI SymInitialize(HANDLE hProcess,PSTR UserSearchPath,BOOL fInvadeProcess);
+ BOOL IMAGEAPI SymGetSearchPath(HANDLE hProcess,PSTR SearchPath,DWORD SearchPathLength);
+ BOOL IMAGEAPI SymSetSearchPath(HANDLE hProcess,PSTR SearchPath);
+ DWORD64 IMAGEAPI SymLoadModule64(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD64 BaseOfDll,DWORD SizeOfDll);
+
+#define SLMFLAG_VIRTUAL 0x1
+
+ DWORD64 IMAGEAPI SymLoadModuleEx(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD64 BaseOfDll,DWORD DllSize,PMODLOAD_DATA Data,DWORD Flags);
+
+#ifdef _IMAGEHLP64
+#define SymLoadModule SymLoadModule64
+#else
+ DWORD IMAGEAPI SymLoadModule(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD BaseOfDll,DWORD SizeOfDll);
+#endif
+
+ BOOL IMAGEAPI SymUnloadModule64(HANDLE hProcess,DWORD64 BaseOfDll);
+
+#ifdef _IMAGEHLP64
+#define SymUnloadModule SymUnloadModule64
+#else
+ BOOL IMAGEAPI SymUnloadModule(HANDLE hProcess,DWORD BaseOfDll);
+#endif
+
+ BOOL IMAGEAPI SymUnDName64(PIMAGEHLP_SYMBOL64 sym,PSTR UnDecName,DWORD UnDecNameLength);
+
+#ifdef _IMAGEHLP64
+#define SymUnDName SymUnDName64
+#else
+ BOOL IMAGEAPI SymUnDName(PIMAGEHLP_SYMBOL sym,PSTR UnDecName,DWORD UnDecNameLength);
+#endif
+
+ BOOL IMAGEAPI SymRegisterCallback64(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction,ULONG64 UserContext);
+
+ BOOL IMAGEAPI SymRegisterFunctionEntryCallback64(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction,ULONG64 UserContext);
+
+#ifdef _IMAGEHLP64
+#define SymRegisterCallback SymRegisterCallback64
+#define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64
+#else
+ BOOL IMAGEAPI SymRegisterCallback(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK CallbackFunction,PVOID UserContext);
+ BOOL IMAGEAPI SymRegisterFunctionEntryCallback(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction,PVOID UserContext);
+#endif
+
+ typedef struct _IMAGEHLP_SYMBOL_SRC {
+ DWORD sizeofstruct;
+ DWORD type;
+ char file[MAX_PATH];
+ } IMAGEHLP_SYMBOL_SRC,*PIMAGEHLP_SYMBOL_SRC;
+
+ typedef struct _MODULE_TYPE_INFO {
+ USHORT dataLength;
+ USHORT leaf;
+ BYTE data[1];
+ } MODULE_TYPE_INFO,*PMODULE_TYPE_INFO;
+
+ typedef struct _SYMBOL_INFO {
+ ULONG SizeOfStruct;
+ ULONG TypeIndex;
+ ULONG64 Reserved[2];
+ ULONG info;
+ ULONG Size;
+ ULONG64 ModBase;
+ ULONG Flags;
+ ULONG64 Value;
+ ULONG64 Address;
+ ULONG Register;
+ ULONG Scope;
+ ULONG Tag;
+ ULONG NameLen;
+ ULONG MaxNameLen;
+ CHAR Name[1];
+ } SYMBOL_INFO,*PSYMBOL_INFO;
+
+ typedef struct _SYMBOL_INFO_PACKAGE {
+ SYMBOL_INFO si;
+ CHAR name[MAX_SYM_NAME + 1];
+ } SYMBOL_INFO_PACKAGE,*PSYMBOL_INFO_PACKAGE;
+
+ typedef struct _IMAGEHLP_STACK_FRAME
+ {
+ ULONG64 InstructionOffset;
+ ULONG64 ReturnOffset;
+ ULONG64 FrameOffset;
+ ULONG64 StackOffset;
+ ULONG64 BackingStoreOffset;
+ ULONG64 FuncTableEntry;
+ ULONG64 Params[4];
+ ULONG64 Reserved[5];
+ BOOL Virtual;
+ ULONG Reserved2;
+ } IMAGEHLP_STACK_FRAME,*PIMAGEHLP_STACK_FRAME;
+
+ typedef VOID IMAGEHLP_CONTEXT,*PIMAGEHLP_CONTEXT;
+
+ BOOL IMAGEAPI SymSetContext(HANDLE hProcess,PIMAGEHLP_STACK_FRAME StackFrame,PIMAGEHLP_CONTEXT Context);
+ BOOL IMAGEAPI SymFromAddr(HANDLE hProcess,DWORD64 Address,PDWORD64 Displacement,PSYMBOL_INFO Symbol);
+ BOOL IMAGEAPI SymFromToken(HANDLE hProcess,DWORD64 Base,DWORD Token,PSYMBOL_INFO Symbol);
+ BOOL IMAGEAPI SymFromName(HANDLE hProcess,LPSTR Name,PSYMBOL_INFO Symbol);
+
+ typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO pSymInfo,ULONG SymbolSize,PVOID UserContext);
+
+ BOOL IMAGEAPI SymEnumSymbols(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Mask,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
+ BOOL IMAGEAPI SymEnumSymbolsForAddr(HANDLE hProcess,DWORD64 Address,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
+
+#define SYMENUMFLAG_FULLSRCH 1
+#define SYMENUMFLAG_SPEEDSRCH 2
+
+ typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO {
+ TI_GET_SYMTAG,TI_GET_SYMNAME,TI_GET_LENGTH,TI_GET_TYPE,TI_GET_TYPEID,TI_GET_BASETYPE,TI_GET_ARRAYINDEXTYPEID,TI_FINDCHILDREN,
+ TI_GET_DATAKIND,TI_GET_ADDRESSOFFSET,TI_GET_OFFSET,TI_GET_VALUE,TI_GET_COUNT,TI_GET_CHILDRENCOUNT,TI_GET_BITPOSITION,TI_GET_VIRTUALBASECLASS,
+ TI_GET_VIRTUALTABLESHAPEID,TI_GET_VIRTUALBASEPOINTEROFFSET,TI_GET_CLASSPARENTID,TI_GET_NESTED,TI_GET_SYMINDEX,TI_GET_LEXICALPARENT,
+ TI_GET_ADDRESS,TI_GET_THISADJUST,TI_GET_UDTKIND,TI_IS_EQUIV_TO,TI_GET_CALLING_CONVENTION
+ } IMAGEHLP_SYMBOL_TYPE_INFO;
+
+ typedef struct _TI_FINDCHILDREN_PARAMS {
+ ULONG Count;
+ ULONG Start;
+ ULONG ChildId[1];
+ } TI_FINDCHILDREN_PARAMS;
+
+ BOOL IMAGEAPI SymGetTypeInfo(HANDLE hProcess,DWORD64 ModBase,ULONG TypeId,IMAGEHLP_SYMBOL_TYPE_INFO GetType,PVOID pInfo);
+ BOOL IMAGEAPI SymEnumTypes(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
+ BOOL IMAGEAPI SymGetTypeFromName(HANDLE hProcess,ULONG64 BaseOfDll,LPSTR Name,PSYMBOL_INFO Symbol);
+ BOOL IMAGEAPI SymAddSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Size,DWORD Flags);
+ BOOL IMAGEAPI SymDeleteSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Flags);
+
+ typedef BOOL (WINAPI *PDBGHELP_CREATE_USER_DUMP_CALLBACK)(DWORD DataType,PVOID *Data,LPDWORD DataLength,PVOID UserData);
+
+ BOOL WINAPI DbgHelpCreateUserDump(LPSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData);
+ BOOL WINAPI DbgHelpCreateUserDumpW(LPWSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData);
+ BOOL IMAGEAPI SymGetSymFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD64 pdwDisplacement,PIMAGEHLP_SYMBOL64 Symbol);
+
+#ifdef _IMAGEHLP64
+#define SymGetSymFromAddr SymGetSymFromAddr64
+#else
+ BOOL IMAGEAPI SymGetSymFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_SYMBOL Symbol);
+#endif
+
+ BOOL IMAGEAPI SymGetSymFromName64(HANDLE hProcess,PSTR Name,PIMAGEHLP_SYMBOL64 Symbol);
+
+#ifdef _IMAGEHLP64
+#define SymGetSymFromName SymGetSymFromName64
+#else
+ BOOL IMAGEAPI SymGetSymFromName(HANDLE hProcess,PSTR Name,PIMAGEHLP_SYMBOL Symbol);
+#endif
+
+ DBHLP_DEPRECIATED BOOL IMAGEAPI FindFileInPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FilePath);
+ DBHLP_DEPRECIATED BOOL IMAGEAPI FindFileInSearchPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,DWORD one,DWORD two,DWORD three,LPSTR FilePath);
+ DBHLP_DEPRECIATED BOOL IMAGEAPI SymEnumSym(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
+
+#define SYMF_OMAP_GENERATED 0x00000001
+#define SYMF_OMAP_MODIFIED 0x00000002
+#define SYMF_REGISTER 0x00000008
+#define SYMF_REGREL 0x00000010
+#define SYMF_FRAMEREL 0x00000020
+#define SYMF_PARAMETER 0x00000040
+#define SYMF_LOCAL 0x00000080
+#define SYMF_CONSTANT 0x00000100
+#define SYMF_EXPORT 0x00000200
+#define SYMF_FORWARDER 0x00000400
+#define SYMF_FUNCTION 0x00000800
+#define SYMF_VIRTUAL 0x00001000
+#define SYMF_THUNK 0x00002000
+#define SYMF_TLSREL 0x00004000
+
+#define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1
+#define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER
+#define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL
+#define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL
+#define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER
+#define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL
+#define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT
+#define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION
+#define IMAGEHLP_SYMBOL_VIRTUAL SYMF_VIRTUAL
+#define IMAGEHLP_SYMBOL_THUNK SYMF_THUNK
+#define IMAGEHLP_SYMBOL_INFO_TLSRELATIVE SYMF_TLSREL
+
+#include <pshpack4.h>
+
+#define MINIDUMP_SIGNATURE ('PMDM')
+#define MINIDUMP_VERSION (42899)
+ typedef DWORD RVA;
+ typedef ULONG64 RVA64;
+
+ typedef struct _MINIDUMP_LOCATION_DESCRIPTOR {
+ ULONG32 DataSize;
+ RVA Rva;
+ } MINIDUMP_LOCATION_DESCRIPTOR;
+
+ typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64 {
+ ULONG64 DataSize;
+ RVA64 Rva;
+ } MINIDUMP_LOCATION_DESCRIPTOR64;
+
+ typedef struct _MINIDUMP_MEMORY_DESCRIPTOR {
+ ULONG64 StartOfMemoryRange;
+ MINIDUMP_LOCATION_DESCRIPTOR Memory;
+ } MINIDUMP_MEMORY_DESCRIPTOR,*PMINIDUMP_MEMORY_DESCRIPTOR;
+
+ typedef struct _MINIDUMP_MEMORY_DESCRIPTOR64 {
+ ULONG64 StartOfMemoryRange;
+ ULONG64 DataSize;
+ } MINIDUMP_MEMORY_DESCRIPTOR64,*PMINIDUMP_MEMORY_DESCRIPTOR64;
+
+ typedef struct _MINIDUMP_HEADER {
+ ULONG32 Signature;
+ ULONG32 Version;
+ ULONG32 NumberOfStreams;
+ RVA StreamDirectoryRva;
+ ULONG32 CheckSum;
+ union {
+ ULONG32 Reserved;
+ ULONG32 TimeDateStamp;
+ } DUMMYUNIONNAME;
+ ULONG64 Flags;
+ } MINIDUMP_HEADER,*PMINIDUMP_HEADER;
+
+ typedef struct _MINIDUMP_DIRECTORY {
+ ULONG32 StreamType;
+ MINIDUMP_LOCATION_DESCRIPTOR Location;
+ } MINIDUMP_DIRECTORY,*PMINIDUMP_DIRECTORY;
+
+ typedef struct _MINIDUMP_STRING {
+ ULONG32 Length;
+ WCHAR Buffer [0];
+ } MINIDUMP_STRING,*PMINIDUMP_STRING;
+
+ typedef enum _MINIDUMP_STREAM_TYPE {
+ UnusedStream = 0,ReservedStream0 = 1,ReservedStream1 = 2,ThreadListStream = 3,ModuleListStream = 4,MemoryListStream = 5,
+ ExceptionStream = 6,SystemInfoStream = 7,ThreadExListStream = 8,Memory64ListStream = 9,CommentStreamA = 10,CommentStreamW = 11,
+ HandleDataStream = 12,FunctionTableStream = 13,UnloadedModuleListStream = 14,MiscInfoStream = 15,LastReservedStream = 0xffff
+ } MINIDUMP_STREAM_TYPE;
+
+ typedef union _CPU_INFORMATION {
+ struct {
+ ULONG32 VendorId [3 ];
+ ULONG32 VersionInformation;
+ ULONG32 FeatureInformation;
+ ULONG32 AMDExtendedCpuFeatures;
+ } X86CpuInfo;
+ struct {
+ ULONG64 ProcessorFeatures [2 ];
+ } OtherCpuInfo;
+ } CPU_INFORMATION,*PCPU_INFORMATION;
+
+ typedef struct _MINIDUMP_SYSTEM_INFO {
+ USHORT ProcessorArchitecture;
+ USHORT ProcessorLevel;
+ USHORT ProcessorRevision;
+ union {
+ USHORT Reserved0;
+ struct {
+ UCHAR NumberOfProcessors;
+ UCHAR ProductType;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+ ULONG32 MajorVersion;
+ ULONG32 MinorVersion;
+ ULONG32 BuildNumber;
+ ULONG32 PlatformId;
+ RVA CSDVersionRva;
+ union {
+ ULONG32 Reserved1;
+ struct {
+ USHORT SuiteMask;
+ USHORT Reserved2;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME1;
+ CPU_INFORMATION Cpu;
+ } MINIDUMP_SYSTEM_INFO,*PMINIDUMP_SYSTEM_INFO;
+
+ C_ASSERT (sizeof (((PPROCESS_INFORMATION)0)->dwThreadId)==4);
+
+ typedef struct _MINIDUMP_THREAD {
+ ULONG32 ThreadId;
+ ULONG32 SuspendCount;
+ ULONG32 PriorityClass;
+ ULONG32 Priority;
+ ULONG64 Teb;
+ MINIDUMP_MEMORY_DESCRIPTOR Stack;
+ MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
+ } MINIDUMP_THREAD,*PMINIDUMP_THREAD;
+
+ typedef struct _MINIDUMP_THREAD_LIST {
+ ULONG32 NumberOfThreads;
+ MINIDUMP_THREAD Threads [0];
+ } MINIDUMP_THREAD_LIST,*PMINIDUMP_THREAD_LIST;
+
+ typedef struct _MINIDUMP_THREAD_EX {
+ ULONG32 ThreadId;
+ ULONG32 SuspendCount;
+ ULONG32 PriorityClass;
+ ULONG32 Priority;
+ ULONG64 Teb;
+ MINIDUMP_MEMORY_DESCRIPTOR Stack;
+ MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
+ MINIDUMP_MEMORY_DESCRIPTOR BackingStore;
+ } MINIDUMP_THREAD_EX,*PMINIDUMP_THREAD_EX;
+
+ typedef struct _MINIDUMP_THREAD_EX_LIST {
+ ULONG32 NumberOfThreads;
+ MINIDUMP_THREAD_EX Threads [0];
+ } MINIDUMP_THREAD_EX_LIST,*PMINIDUMP_THREAD_EX_LIST;
+
+ typedef struct _MINIDUMP_EXCEPTION {
+ ULONG32 ExceptionCode;
+ ULONG32 ExceptionFlags;
+ ULONG64 ExceptionRecord;
+ ULONG64 ExceptionAddress;
+ ULONG32 NumberParameters;
+ ULONG32 __unusedAlignment;
+ ULONG64 ExceptionInformation [EXCEPTION_MAXIMUM_PARAMETERS ];
+ } MINIDUMP_EXCEPTION,*PMINIDUMP_EXCEPTION;
+
+ typedef struct MINIDUMP_EXCEPTION_STREAM {
+ ULONG32 ThreadId;
+ ULONG32 __alignment;
+ MINIDUMP_EXCEPTION ExceptionRecord;
+ MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
+ } MINIDUMP_EXCEPTION_STREAM,*PMINIDUMP_EXCEPTION_STREAM;
+
+ typedef struct _MINIDUMP_MODULE {
+ ULONG64 BaseOfImage;
+ ULONG32 SizeOfImage;
+ ULONG32 CheckSum;
+ ULONG32 TimeDateStamp;
+ RVA ModuleNameRva;
+ VS_FIXEDFILEINFO VersionInfo;
+ MINIDUMP_LOCATION_DESCRIPTOR CvRecord;
+ MINIDUMP_LOCATION_DESCRIPTOR MiscRecord;
+ ULONG64 Reserved0;
+ ULONG64 Reserved1;
+ } MINIDUMP_MODULE,*PMINIDUMP_MODULE;
+
+ typedef struct _MINIDUMP_MODULE_LIST {
+ ULONG32 NumberOfModules;
+ MINIDUMP_MODULE Modules [0 ];
+ } MINIDUMP_MODULE_LIST,*PMINIDUMP_MODULE_LIST;
+
+ typedef struct _MINIDUMP_MEMORY_LIST {
+ ULONG32 NumberOfMemoryRanges;
+ MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges [0];
+ } MINIDUMP_MEMORY_LIST,*PMINIDUMP_MEMORY_LIST;
+
+ typedef struct _MINIDUMP_MEMORY64_LIST {
+ ULONG64 NumberOfMemoryRanges;
+ RVA64 BaseRva;
+ MINIDUMP_MEMORY_DESCRIPTOR64 MemoryRanges [0];
+ } MINIDUMP_MEMORY64_LIST,*PMINIDUMP_MEMORY64_LIST;
+
+ typedef struct _MINIDUMP_EXCEPTION_INFORMATION {
+ DWORD ThreadId;
+ PEXCEPTION_POINTERS ExceptionPointers;
+ BOOL ClientPointers;
+ } MINIDUMP_EXCEPTION_INFORMATION,*PMINIDUMP_EXCEPTION_INFORMATION;
+
+ typedef struct _MINIDUMP_EXCEPTION_INFORMATION64 {
+ DWORD ThreadId;
+ ULONG64 ExceptionRecord;
+ ULONG64 ContextRecord;
+ BOOL ClientPointers;
+ } MINIDUMP_EXCEPTION_INFORMATION64,*PMINIDUMP_EXCEPTION_INFORMATION64;
+
+ typedef struct _MINIDUMP_HANDLE_DESCRIPTOR {
+ ULONG64 Handle;
+ RVA TypeNameRva;
+ RVA ObjectNameRva;
+ ULONG32 Attributes;
+ ULONG32 GrantedAccess;
+ ULONG32 HandleCount;
+ ULONG32 PointerCount;
+ } MINIDUMP_HANDLE_DESCRIPTOR,*PMINIDUMP_HANDLE_DESCRIPTOR;
+
+ typedef struct _MINIDUMP_HANDLE_DATA_STREAM {
+ ULONG32 SizeOfHeader;
+ ULONG32 SizeOfDescriptor;
+ ULONG32 NumberOfDescriptors;
+ ULONG32 Reserved;
+ } MINIDUMP_HANDLE_DATA_STREAM,*PMINIDUMP_HANDLE_DATA_STREAM;
+
+ typedef struct _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR {
+ ULONG64 MinimumAddress;
+ ULONG64 MaximumAddress;
+ ULONG64 BaseAddress;
+ ULONG32 EntryCount;
+ ULONG32 SizeOfAlignPad;
+ } MINIDUMP_FUNCTION_TABLE_DESCRIPTOR,*PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
+
+ typedef struct _MINIDUMP_FUNCTION_TABLE_STREAM {
+ ULONG32 SizeOfHeader;
+ ULONG32 SizeOfDescriptor;
+ ULONG32 SizeOfNativeDescriptor;
+ ULONG32 SizeOfFunctionEntry;
+ ULONG32 NumberOfDescriptors;
+ ULONG32 SizeOfAlignPad;
+ } MINIDUMP_FUNCTION_TABLE_STREAM,*PMINIDUMP_FUNCTION_TABLE_STREAM;
+
+ typedef struct _MINIDUMP_UNLOADED_MODULE {
+ ULONG64 BaseOfImage;
+ ULONG32 SizeOfImage;
+ ULONG32 CheckSum;
+ ULONG32 TimeDateStamp;
+ RVA ModuleNameRva;
+ } MINIDUMP_UNLOADED_MODULE,*PMINIDUMP_UNLOADED_MODULE;
+
+ typedef struct _MINIDUMP_UNLOADED_MODULE_LIST {
+ ULONG32 SizeOfHeader;
+ ULONG32 SizeOfEntry;
+ ULONG32 NumberOfEntries;
+ } MINIDUMP_UNLOADED_MODULE_LIST,*PMINIDUMP_UNLOADED_MODULE_LIST;
+
+#define MINIDUMP_MISC1_PROCESS_ID 0x00000001
+#define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002
+
+ typedef struct _MINIDUMP_MISC_INFO {
+ ULONG32 SizeOfInfo;
+ ULONG32 Flags1;
+ ULONG32 ProcessId;
+ ULONG32 ProcessCreateTime;
+ ULONG32 ProcessUserTime;
+ ULONG32 ProcessKernelTime;
+ } MINIDUMP_MISC_INFO,*PMINIDUMP_MISC_INFO;
+
+ typedef struct _MINIDUMP_USER_RECORD {
+ ULONG32 Type;
+ MINIDUMP_LOCATION_DESCRIPTOR Memory;
+ } MINIDUMP_USER_RECORD,*PMINIDUMP_USER_RECORD;
+
+ typedef struct _MINIDUMP_USER_STREAM {
+ ULONG32 Type;
+ ULONG BufferSize;
+ PVOID Buffer;
+ } MINIDUMP_USER_STREAM,*PMINIDUMP_USER_STREAM;
+
+ typedef struct _MINIDUMP_USER_STREAM_INFORMATION {
+ ULONG UserStreamCount;
+ PMINIDUMP_USER_STREAM UserStreamArray;
+ } MINIDUMP_USER_STREAM_INFORMATION,*PMINIDUMP_USER_STREAM_INFORMATION;
+
+ typedef enum _MINIDUMP_CALLBACK_TYPE {
+ ModuleCallback,ThreadCallback,ThreadExCallback,IncludeThreadCallback,IncludeModuleCallback,MemoryCallback
+ } MINIDUMP_CALLBACK_TYPE;
+
+ typedef struct _MINIDUMP_THREAD_CALLBACK {
+ ULONG ThreadId;
+ HANDLE ThreadHandle;
+ CONTEXT Context;
+ ULONG SizeOfContext;
+ ULONG64 StackBase;
+ ULONG64 StackEnd;
+ } MINIDUMP_THREAD_CALLBACK,*PMINIDUMP_THREAD_CALLBACK;
+
+ typedef struct _MINIDUMP_THREAD_EX_CALLBACK {
+ ULONG ThreadId;
+ HANDLE ThreadHandle;
+ CONTEXT Context;
+ ULONG SizeOfContext;
+ ULONG64 StackBase;
+ ULONG64 StackEnd;
+ ULONG64 BackingStoreBase;
+ ULONG64 BackingStoreEnd;
+ } MINIDUMP_THREAD_EX_CALLBACK,*PMINIDUMP_THREAD_EX_CALLBACK;
+
+ typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK {
+ ULONG ThreadId;
+ } MINIDUMP_INCLUDE_THREAD_CALLBACK,*PMINIDUMP_INCLUDE_THREAD_CALLBACK;
+
+ typedef enum _THREAD_WRITE_FLAGS {
+ ThreadWriteThread = 0x0001,ThreadWriteStack = 0x0002,ThreadWriteContext = 0x0004,ThreadWriteBackingStore = 0x0008,
+ ThreadWriteInstructionWindow = 0x0010,ThreadWriteThreadData = 0x0020
+ } THREAD_WRITE_FLAGS;
+
+ typedef struct _MINIDUMP_MODULE_CALLBACK {
+ PWCHAR FullPath;
+ ULONG64 BaseOfImage;
+ ULONG SizeOfImage;
+ ULONG CheckSum;
+ ULONG TimeDateStamp;
+ VS_FIXEDFILEINFO VersionInfo;
+ PVOID CvRecord;
+ ULONG SizeOfCvRecord;
+ PVOID MiscRecord;
+ ULONG SizeOfMiscRecord;
+ } MINIDUMP_MODULE_CALLBACK,*PMINIDUMP_MODULE_CALLBACK;
+
+ typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK {
+ ULONG64 BaseOfImage;
+ } MINIDUMP_INCLUDE_MODULE_CALLBACK,*PMINIDUMP_INCLUDE_MODULE_CALLBACK;
+
+ typedef enum _MODULE_WRITE_FLAGS {
+ ModuleWriteModule = 0x0001,ModuleWriteDataSeg = 0x0002,ModuleWriteMiscRecord = 0x0004,ModuleWriteCvRecord = 0x0008,
+ ModuleReferencedByMemory = 0x0010
+ } MODULE_WRITE_FLAGS;
+
+ typedef struct _MINIDUMP_CALLBACK_INPUT {
+ ULONG ProcessId;
+ HANDLE ProcessHandle;
+ ULONG CallbackType;
+ union {
+ MINIDUMP_THREAD_CALLBACK Thread;
+ MINIDUMP_THREAD_EX_CALLBACK ThreadEx;
+ MINIDUMP_MODULE_CALLBACK Module;
+ MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread;
+ MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule;
+ } DUMMYUNIONNAME;
+ } MINIDUMP_CALLBACK_INPUT,*PMINIDUMP_CALLBACK_INPUT;
+
+ typedef struct _MINIDUMP_CALLBACK_OUTPUT {
+ union {
+ ULONG ModuleWriteFlags;
+ ULONG ThreadWriteFlags;
+ struct {
+ ULONG64 MemoryBase;
+ ULONG MemorySize;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+ } MINIDUMP_CALLBACK_OUTPUT,*PMINIDUMP_CALLBACK_OUTPUT;
+
+ typedef enum _MINIDUMP_TYPE {
+ MiniDumpNormal = 0x0000,MiniDumpWithDataSegs = 0x0001,MiniDumpWithFullMemory = 0x0002,MiniDumpWithHandleData = 0x0004,
+ MiniDumpFilterMemory = 0x0008,MiniDumpScanMemory = 0x0010,MiniDumpWithUnloadedModules = 0x0020,MiniDumpWithIndirectlyReferencedMemory = 0x0040,
+ MiniDumpFilterModulePaths = 0x0080,MiniDumpWithProcessThreadData = 0x0100,MiniDumpWithPrivateReadWriteMemory = 0x0200,
+ MiniDumpWithoutOptionalData = 0x0400
+ } MINIDUMP_TYPE;
+
+ typedef BOOL (WINAPI *MINIDUMP_CALLBACK_ROUTINE)(PVOID CallbackParam,CONST PMINIDUMP_CALLBACK_INPUT CallbackInput,PMINIDUMP_CALLBACK_OUTPUT CallbackOutput);
+
+ typedef struct _MINIDUMP_CALLBACK_INFORMATION {
+ MINIDUMP_CALLBACK_ROUTINE CallbackRoutine;
+ PVOID CallbackParam;
+ } MINIDUMP_CALLBACK_INFORMATION,*PMINIDUMP_CALLBACK_INFORMATION;
+
+#define RVA_TO_ADDR(Mapping,Rva) ((PVOID)(((ULONG_PTR) (Mapping)) + (Rva)))
+
+ BOOL WINAPI MiniDumpWriteDump(HANDLE hProcess,DWORD ProcessId,HANDLE hFile,MINIDUMP_TYPE DumpType,CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
+ BOOL WINAPI MiniDumpReadDumpStream(PVOID BaseOfDump,ULONG StreamNumber,PMINIDUMP_DIRECTORY *Dir,PVOID *StreamPointer,ULONG *StreamSize);
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_bitmask.c b/mesalib/src/gallium/auxiliary/util/u_bitmask.c
index c2952a30d..23c93a3eb 100644
--- a/mesalib/src/gallium/auxiliary/util/u_bitmask.c
+++ b/mesalib/src/gallium/auxiliary/util/u_bitmask.c
@@ -1,328 +1,328 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * Generic bitmask implementation.
- *
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-
-#include "util/u_memory.h"
-#include "util/u_bitmask.h"
-
-
-typedef uint32_t util_bitmask_word;
-
-
-#define UTIL_BITMASK_INITIAL_WORDS 16
-#define UTIL_BITMASK_BITS_PER_BYTE 8
-#define UTIL_BITMASK_BITS_PER_WORD (sizeof(util_bitmask_word) * UTIL_BITMASK_BITS_PER_BYTE)
-
-
-struct util_bitmask
-{
- util_bitmask_word *words;
-
- /** Number of bits we can currently hold */
- unsigned size;
-
- /** Number of consecutive bits set at the start of the bitmask */
- unsigned filled;
-};
-
-
-struct util_bitmask *
-util_bitmask_create(void)
-{
- struct util_bitmask *bm;
-
- bm = MALLOC_STRUCT(util_bitmask);
- if(!bm)
- return NULL;
-
- bm->words = (util_bitmask_word *)CALLOC(UTIL_BITMASK_INITIAL_WORDS, sizeof(util_bitmask_word));
- if(!bm->words) {
- FREE(bm);
- return NULL;
- }
-
- bm->size = UTIL_BITMASK_INITIAL_WORDS * UTIL_BITMASK_BITS_PER_WORD;
- bm->filled = 0;
-
- return bm;
-}
-
-
-/**
- * Resize the bitmask if necessary
- */
-static INLINE boolean
-util_bitmask_resize(struct util_bitmask *bm,
- unsigned minimum_index)
-{
- unsigned minimum_size = minimum_index + 1;
- unsigned new_size;
- util_bitmask_word *new_words;
-
- /* Check integer overflow */
- if(!minimum_size)
- return FALSE;
-
- if(bm->size >= minimum_size)
- return TRUE;
-
- assert(bm->size % UTIL_BITMASK_BITS_PER_WORD == 0);
- new_size = bm->size;
- while(new_size < minimum_size) {
- new_size *= 2;
- /* Check integer overflow */
- if(new_size < bm->size)
- return FALSE;
- }
- assert(new_size);
- assert(new_size % UTIL_BITMASK_BITS_PER_WORD == 0);
-
- new_words = (util_bitmask_word *)REALLOC((void *)bm->words,
- bm->size / UTIL_BITMASK_BITS_PER_BYTE,
- new_size / UTIL_BITMASK_BITS_PER_BYTE);
- if(!new_words)
- return FALSE;
-
- memset(new_words + bm->size/UTIL_BITMASK_BITS_PER_WORD,
- 0,
- (new_size - bm->size)/UTIL_BITMASK_BITS_PER_BYTE);
-
- bm->size = new_size;
- bm->words = new_words;
-
- return TRUE;
-}
-
-
-/**
- * Lazily update the filled.
- */
-static INLINE void
-util_bitmask_filled_set(struct util_bitmask *bm,
- unsigned index)
-{
- assert(bm->filled <= bm->size);
- assert(index < bm->size);
-
- if(index == bm->filled) {
- ++bm->filled;
- assert(bm->filled <= bm->size);
- }
-}
-
-static INLINE void
-util_bitmask_filled_unset(struct util_bitmask *bm,
- unsigned index)
-{
- assert(bm->filled <= bm->size);
- assert(index < bm->size);
-
- if(index < bm->filled)
- bm->filled = index;
-}
-
-
-unsigned
-util_bitmask_add(struct util_bitmask *bm)
-{
- unsigned word;
- unsigned bit;
- util_bitmask_word mask;
-
- assert(bm);
-
- /* linear search for an empty index */
- word = bm->filled / UTIL_BITMASK_BITS_PER_WORD;
- bit = bm->filled % UTIL_BITMASK_BITS_PER_WORD;
- mask = 1 << bit;
- while(word < bm->size / UTIL_BITMASK_BITS_PER_WORD) {
- while(bit < UTIL_BITMASK_BITS_PER_WORD) {
- if(!(bm->words[word] & mask))
- goto found;
- ++bm->filled;
- ++bit;
- mask <<= 1;
- }
- ++word;
- bit = 0;
- mask = 1;
- }
-found:
-
- /* grow the bitmask if necessary */
- if(!util_bitmask_resize(bm, bm->filled))
- return UTIL_BITMASK_INVALID_INDEX;
-
- assert(!(bm->words[word] & mask));
- bm->words[word] |= mask;
-
- return bm->filled++;
-}
-
-
-unsigned
-util_bitmask_set(struct util_bitmask *bm,
- unsigned index)
-{
- unsigned word;
- unsigned bit;
- util_bitmask_word mask;
-
- assert(bm);
-
- /* grow the bitmask if necessary */
- if(!util_bitmask_resize(bm, index))
- return UTIL_BITMASK_INVALID_INDEX;
-
- word = index / UTIL_BITMASK_BITS_PER_WORD;
- bit = index % UTIL_BITMASK_BITS_PER_WORD;
- mask = 1 << bit;
-
- bm->words[word] |= mask;
-
- util_bitmask_filled_set(bm, index);
-
- return index;
-}
-
-
-void
-util_bitmask_clear(struct util_bitmask *bm,
- unsigned index)
-{
- unsigned word;
- unsigned bit;
- util_bitmask_word mask;
-
- assert(bm);
-
- if(index >= bm->size)
- return;
-
- word = index / UTIL_BITMASK_BITS_PER_WORD;
- bit = index % UTIL_BITMASK_BITS_PER_WORD;
- mask = 1 << bit;
-
- bm->words[word] &= ~mask;
-
- util_bitmask_filled_unset(bm, index);
-}
-
-
-boolean
-util_bitmask_get(struct util_bitmask *bm,
- unsigned index)
-{
- unsigned word = index / UTIL_BITMASK_BITS_PER_WORD;
- unsigned bit = index % UTIL_BITMASK_BITS_PER_WORD;
- util_bitmask_word mask = 1 << bit;
-
- assert(bm);
-
- if(index < bm->filled) {
- assert(bm->words[word] & mask);
- return TRUE;
- }
-
- if(index >= bm->size)
- return FALSE;
-
- if(bm->words[word] & mask) {
- util_bitmask_filled_set(bm, index);
- return TRUE;
- }
- else
- return FALSE;
-}
-
-
-unsigned
-util_bitmask_get_next_index(struct util_bitmask *bm,
- unsigned index)
-{
- unsigned word = index / UTIL_BITMASK_BITS_PER_WORD;
- unsigned bit = index % UTIL_BITMASK_BITS_PER_WORD;
- util_bitmask_word mask = 1 << bit;
-
- if(index < bm->filled) {
- assert(bm->words[word] & mask);
- return index;
- }
-
- if(index >= bm->size) {
- return UTIL_BITMASK_INVALID_INDEX;
- }
-
- /* Do a linear search */
- while(word < bm->size / UTIL_BITMASK_BITS_PER_WORD) {
- while(bit < UTIL_BITMASK_BITS_PER_WORD) {
- if(bm->words[word] & mask) {
- if(index == bm->filled) {
- ++bm->filled;
- assert(bm->filled <= bm->size);
- }
- return index;
- }
- ++index;
- ++bit;
- mask <<= 1;
- }
- ++word;
- bit = 0;
- mask = 1;
- }
-
- return UTIL_BITMASK_INVALID_INDEX;
-}
-
-
-unsigned
-util_bitmask_get_first_index(struct util_bitmask *bm)
-{
- return util_bitmask_get_next_index(bm, 0);
-}
-
-
-void
-util_bitmask_destroy(struct util_bitmask *bm)
-{
- assert(bm);
-
- FREE(bm->words);
- FREE(bm);
-}
-
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Generic bitmask implementation.
+ *
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+
+
+#include "pipe/p_compiler.h"
+#include "util/u_debug.h"
+
+#include "util/u_memory.h"
+#include "util/u_bitmask.h"
+
+
+typedef uint32_t util_bitmask_word;
+
+
+#define UTIL_BITMASK_INITIAL_WORDS 16
+#define UTIL_BITMASK_BITS_PER_BYTE 8
+#define UTIL_BITMASK_BITS_PER_WORD (sizeof(util_bitmask_word) * UTIL_BITMASK_BITS_PER_BYTE)
+
+
+struct util_bitmask
+{
+ util_bitmask_word *words;
+
+ /** Number of bits we can currently hold */
+ unsigned size;
+
+ /** Number of consecutive bits set at the start of the bitmask */
+ unsigned filled;
+};
+
+
+struct util_bitmask *
+util_bitmask_create(void)
+{
+ struct util_bitmask *bm;
+
+ bm = MALLOC_STRUCT(util_bitmask);
+ if(!bm)
+ return NULL;
+
+ bm->words = (util_bitmask_word *)CALLOC(UTIL_BITMASK_INITIAL_WORDS, sizeof(util_bitmask_word));
+ if(!bm->words) {
+ FREE(bm);
+ return NULL;
+ }
+
+ bm->size = UTIL_BITMASK_INITIAL_WORDS * UTIL_BITMASK_BITS_PER_WORD;
+ bm->filled = 0;
+
+ return bm;
+}
+
+
+/**
+ * Resize the bitmask if necessary
+ */
+static INLINE boolean
+util_bitmask_resize(struct util_bitmask *bm,
+ unsigned minimum_index)
+{
+ unsigned minimum_size = minimum_index + 1;
+ unsigned new_size;
+ util_bitmask_word *new_words;
+
+ /* Check integer overflow */
+ if(!minimum_size)
+ return FALSE;
+
+ if(bm->size >= minimum_size)
+ return TRUE;
+
+ assert(bm->size % UTIL_BITMASK_BITS_PER_WORD == 0);
+ new_size = bm->size;
+ while(new_size < minimum_size) {
+ new_size *= 2;
+ /* Check integer overflow */
+ if(new_size < bm->size)
+ return FALSE;
+ }
+ assert(new_size);
+ assert(new_size % UTIL_BITMASK_BITS_PER_WORD == 0);
+
+ new_words = (util_bitmask_word *)REALLOC((void *)bm->words,
+ bm->size / UTIL_BITMASK_BITS_PER_BYTE,
+ new_size / UTIL_BITMASK_BITS_PER_BYTE);
+ if(!new_words)
+ return FALSE;
+
+ memset(new_words + bm->size/UTIL_BITMASK_BITS_PER_WORD,
+ 0,
+ (new_size - bm->size)/UTIL_BITMASK_BITS_PER_BYTE);
+
+ bm->size = new_size;
+ bm->words = new_words;
+
+ return TRUE;
+}
+
+
+/**
+ * Lazily update the filled.
+ */
+static INLINE void
+util_bitmask_filled_set(struct util_bitmask *bm,
+ unsigned index)
+{
+ assert(bm->filled <= bm->size);
+ assert(index < bm->size);
+
+ if(index == bm->filled) {
+ ++bm->filled;
+ assert(bm->filled <= bm->size);
+ }
+}
+
+static INLINE void
+util_bitmask_filled_unset(struct util_bitmask *bm,
+ unsigned index)
+{
+ assert(bm->filled <= bm->size);
+ assert(index < bm->size);
+
+ if(index < bm->filled)
+ bm->filled = index;
+}
+
+
+unsigned
+util_bitmask_add(struct util_bitmask *bm)
+{
+ unsigned word;
+ unsigned bit;
+ util_bitmask_word mask;
+
+ assert(bm);
+
+ /* linear search for an empty index */
+ word = bm->filled / UTIL_BITMASK_BITS_PER_WORD;
+ bit = bm->filled % UTIL_BITMASK_BITS_PER_WORD;
+ mask = 1 << bit;
+ while(word < bm->size / UTIL_BITMASK_BITS_PER_WORD) {
+ while(bit < UTIL_BITMASK_BITS_PER_WORD) {
+ if(!(bm->words[word] & mask))
+ goto found;
+ ++bm->filled;
+ ++bit;
+ mask <<= 1;
+ }
+ ++word;
+ bit = 0;
+ mask = 1;
+ }
+found:
+
+ /* grow the bitmask if necessary */
+ if(!util_bitmask_resize(bm, bm->filled))
+ return UTIL_BITMASK_INVALID_INDEX;
+
+ assert(!(bm->words[word] & mask));
+ bm->words[word] |= mask;
+
+ return bm->filled++;
+}
+
+
+unsigned
+util_bitmask_set(struct util_bitmask *bm,
+ unsigned index)
+{
+ unsigned word;
+ unsigned bit;
+ util_bitmask_word mask;
+
+ assert(bm);
+
+ /* grow the bitmask if necessary */
+ if(!util_bitmask_resize(bm, index))
+ return UTIL_BITMASK_INVALID_INDEX;
+
+ word = index / UTIL_BITMASK_BITS_PER_WORD;
+ bit = index % UTIL_BITMASK_BITS_PER_WORD;
+ mask = 1 << bit;
+
+ bm->words[word] |= mask;
+
+ util_bitmask_filled_set(bm, index);
+
+ return index;
+}
+
+
+void
+util_bitmask_clear(struct util_bitmask *bm,
+ unsigned index)
+{
+ unsigned word;
+ unsigned bit;
+ util_bitmask_word mask;
+
+ assert(bm);
+
+ if(index >= bm->size)
+ return;
+
+ word = index / UTIL_BITMASK_BITS_PER_WORD;
+ bit = index % UTIL_BITMASK_BITS_PER_WORD;
+ mask = 1 << bit;
+
+ bm->words[word] &= ~mask;
+
+ util_bitmask_filled_unset(bm, index);
+}
+
+
+boolean
+util_bitmask_get(struct util_bitmask *bm,
+ unsigned index)
+{
+ unsigned word = index / UTIL_BITMASK_BITS_PER_WORD;
+ unsigned bit = index % UTIL_BITMASK_BITS_PER_WORD;
+ util_bitmask_word mask = 1 << bit;
+
+ assert(bm);
+
+ if(index < bm->filled) {
+ assert(bm->words[word] & mask);
+ return TRUE;
+ }
+
+ if(index >= bm->size)
+ return FALSE;
+
+ if(bm->words[word] & mask) {
+ util_bitmask_filled_set(bm, index);
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+
+unsigned
+util_bitmask_get_next_index(struct util_bitmask *bm,
+ unsigned index)
+{
+ unsigned word = index / UTIL_BITMASK_BITS_PER_WORD;
+ unsigned bit = index % UTIL_BITMASK_BITS_PER_WORD;
+ util_bitmask_word mask = 1 << bit;
+
+ if(index < bm->filled) {
+ assert(bm->words[word] & mask);
+ return index;
+ }
+
+ if(index >= bm->size) {
+ return UTIL_BITMASK_INVALID_INDEX;
+ }
+
+ /* Do a linear search */
+ while(word < bm->size / UTIL_BITMASK_BITS_PER_WORD) {
+ while(bit < UTIL_BITMASK_BITS_PER_WORD) {
+ if(bm->words[word] & mask) {
+ if(index == bm->filled) {
+ ++bm->filled;
+ assert(bm->filled <= bm->size);
+ }
+ return index;
+ }
+ ++index;
+ ++bit;
+ mask <<= 1;
+ }
+ ++word;
+ bit = 0;
+ mask = 1;
+ }
+
+ return UTIL_BITMASK_INVALID_INDEX;
+}
+
+
+unsigned
+util_bitmask_get_first_index(struct util_bitmask *bm)
+{
+ return util_bitmask_get_next_index(bm, 0);
+}
+
+
+void
+util_bitmask_destroy(struct util_bitmask *bm)
+{
+ assert(bm);
+
+ FREE(bm->words);
+ FREE(bm);
+}
+
diff --git a/mesalib/src/gallium/auxiliary/util/u_bitmask.h b/mesalib/src/gallium/auxiliary/util/u_bitmask.h
index 179328ae9..98b85ddec 100644
--- a/mesalib/src/gallium/auxiliary/util/u_bitmask.h
+++ b/mesalib/src/gallium/auxiliary/util/u_bitmask.h
@@ -1,117 +1,117 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * Generic bitmask.
- *
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-#ifndef U_HANDLE_BITMASK_H_
-#define U_HANDLE_BITMASK_H_
-
-
-#include "pipe/p_compiler.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define UTIL_BITMASK_INVALID_INDEX (~0U)
-
-
-/**
- * Abstract data type to represent arbitrary set of bits.
- */
-struct util_bitmask;
-
-
-struct util_bitmask *
-util_bitmask_create(void);
-
-
-/**
- * Search a cleared bit and set it.
- *
- * It searches for the first cleared bit.
- *
- * Returns the bit index on success, or UTIL_BITMASK_INVALID_INDEX on out of
- * memory growing the bitmask.
- */
-unsigned
-util_bitmask_add(struct util_bitmask *bm);
-
-/**
- * Set a bit.
- *
- * Returns the input index on success, or UTIL_BITMASK_INVALID_INDEX on out of
- * memory growing the bitmask.
- */
-unsigned
-util_bitmask_set(struct util_bitmask *bm,
- unsigned index);
-
-void
-util_bitmask_clear(struct util_bitmask *bm,
- unsigned index);
-
-boolean
-util_bitmask_get(struct util_bitmask *bm,
- unsigned index);
-
-
-void
-util_bitmask_destroy(struct util_bitmask *bm);
-
-
-/**
- * Search for the first set bit.
- *
- * Returns UTIL_BITMASK_INVALID_INDEX if a set bit cannot be found.
- */
-unsigned
-util_bitmask_get_first_index(struct util_bitmask *bm);
-
-
-/**
- * Search for the first set bit, starting from the giving index.
- *
- * Returns UTIL_BITMASK_INVALID_INDEX if a set bit cannot be found.
- */
-unsigned
-util_bitmask_get_next_index(struct util_bitmask *bm,
- unsigned index);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* U_HANDLE_BITMASK_H_ */
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Generic bitmask.
+ *
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+
+#ifndef U_HANDLE_BITMASK_H_
+#define U_HANDLE_BITMASK_H_
+
+
+#include "pipe/p_compiler.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define UTIL_BITMASK_INVALID_INDEX (~0U)
+
+
+/**
+ * Abstract data type to represent arbitrary set of bits.
+ */
+struct util_bitmask;
+
+
+struct util_bitmask *
+util_bitmask_create(void);
+
+
+/**
+ * Search a cleared bit and set it.
+ *
+ * It searches for the first cleared bit.
+ *
+ * Returns the bit index on success, or UTIL_BITMASK_INVALID_INDEX on out of
+ * memory growing the bitmask.
+ */
+unsigned
+util_bitmask_add(struct util_bitmask *bm);
+
+/**
+ * Set a bit.
+ *
+ * Returns the input index on success, or UTIL_BITMASK_INVALID_INDEX on out of
+ * memory growing the bitmask.
+ */
+unsigned
+util_bitmask_set(struct util_bitmask *bm,
+ unsigned index);
+
+void
+util_bitmask_clear(struct util_bitmask *bm,
+ unsigned index);
+
+boolean
+util_bitmask_get(struct util_bitmask *bm,
+ unsigned index);
+
+
+void
+util_bitmask_destroy(struct util_bitmask *bm);
+
+
+/**
+ * Search for the first set bit.
+ *
+ * Returns UTIL_BITMASK_INVALID_INDEX if a set bit cannot be found.
+ */
+unsigned
+util_bitmask_get_first_index(struct util_bitmask *bm);
+
+
+/**
+ * Search for the first set bit, starting from the giving index.
+ *
+ * Returns UTIL_BITMASK_INVALID_INDEX if a set bit cannot be found.
+ */
+unsigned
+util_bitmask_get_next_index(struct util_bitmask *bm,
+ unsigned index);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* U_HANDLE_BITMASK_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_box.h b/mesalib/src/gallium/auxiliary/util/u_box.h
index f2f0829b5..0b28d0f12 100644
--- a/mesalib/src/gallium/auxiliary/util/u_box.h
+++ b/mesalib/src/gallium/auxiliary/util/u_box.h
@@ -1,80 +1,80 @@
-#ifndef UTIL_BOX_INLINES_H
-#define UTIL_BOX_INLINES_H
-
-#include "pipe/p_state.h"
-
-static INLINE
-void u_box_1d( unsigned x,
- unsigned w,
- struct pipe_box *box )
-{
- box->x = x;
- box->y = 0;
- box->z = 0;
- box->width = w;
- box->height = 1;
- box->depth = 1;
-}
-
-static INLINE
-void u_box_2d( unsigned x,
- unsigned y,
- unsigned w,
- unsigned h,
- struct pipe_box *box )
-{
- box->x = x;
- box->y = y;
- box->z = 0;
- box->width = w;
- box->height = h;
- box->depth = 1;
-}
-
-static INLINE
-void u_box_origin_2d( unsigned w,
- unsigned h,
- struct pipe_box *box )
-{
- box->x = 0;
- box->y = 0;
- box->z = 0;
- box->width = w;
- box->height = h;
- box->depth = 1;
-}
-
-static INLINE
-void u_box_2d_zslice( unsigned x,
- unsigned y,
- unsigned z,
- unsigned w,
- unsigned h,
- struct pipe_box *box )
-{
- box->x = x;
- box->y = y;
- box->z = z;
- box->width = w;
- box->height = h;
- box->depth = 1;
-}
-
-static INLINE
-void u_box_3d( unsigned x,
- unsigned y,
- unsigned z,
- unsigned w,
- unsigned h,
- unsigned d,
- struct pipe_box *box )
-{
- box->x = x;
- box->y = y;
- box->z = z;
- box->width = w;
- box->height = h;
- box->depth = d;
-}
-
-#endif
+#ifndef UTIL_BOX_INLINES_H
+#define UTIL_BOX_INLINES_H
+
+#include "pipe/p_state.h"
+
+static INLINE
+void u_box_1d( unsigned x,
+ unsigned w,
+ struct pipe_box *box )
+{
+ box->x = x;
+ box->y = 0;
+ box->z = 0;
+ box->width = w;
+ box->height = 1;
+ box->depth = 1;
+}
+
+static INLINE
+void u_box_2d( unsigned x,
+ unsigned y,
+ unsigned w,
+ unsigned h,
+ struct pipe_box *box )
+{
+ box->x = x;
+ box->y = y;
+ box->z = 0;
+ box->width = w;
+ box->height = h;
+ box->depth = 1;
+}
+
+static INLINE
+void u_box_origin_2d( unsigned w,
+ unsigned h,
+ struct pipe_box *box )
+{
+ box->x = 0;
+ box->y = 0;
+ box->z = 0;
+ box->width = w;
+ box->height = h;
+ box->depth = 1;
+}
+
+static INLINE
+void u_box_2d_zslice( unsigned x,
+ unsigned y,
+ unsigned z,
+ unsigned w,
+ unsigned h,
+ struct pipe_box *box )
+{
+ box->x = x;
+ box->y = y;
+ box->z = z;
+ box->width = w;
+ box->height = h;
+ box->depth = 1;
+}
+
+static INLINE
+void u_box_3d( unsigned x,
+ unsigned y,
+ unsigned z,
+ unsigned w,
+ unsigned h,
+ unsigned d,
+ struct pipe_box *box )
+{
+ box->x = x;
+ box->y = y;
+ box->z = z;
+ box->width = w;
+ box->height = h;
+ box->depth = d;
+}
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_cache.c b/mesalib/src/gallium/auxiliary/util/u_cache.c
index 215236818..df08ec302 100644
--- a/mesalib/src/gallium/auxiliary/util/u_cache.c
+++ b/mesalib/src/gallium/auxiliary/util/u_cache.c
@@ -1,351 +1,351 @@
-/**************************************************************************
- *
- * Copyright 2008 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * Improved cache implementation.
- *
- * Fixed size array with linear probing on collision and LRU eviction
- * on full.
- *
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-
-#include "util/u_math.h"
-#include "util/u_memory.h"
-#include "util/u_cache.h"
-#include "util/u_simple_list.h"
-
-
-struct util_cache_entry
-{
- enum { EMPTY = 0, FILLED, DELETED } state;
- uint32_t hash;
-
- struct util_cache_entry *next;
- struct util_cache_entry *prev;
-
- void *key;
- void *value;
-
-#ifdef DEBUG
- unsigned count;
-#endif
-};
-
-
-struct util_cache
-{
- /** Hash function */
- uint32_t (*hash)(const void *key);
-
- /** Compare two keys */
- int (*compare)(const void *key1, const void *key2);
-
- /** Destroy a (key, value) pair */
- void (*destroy)(void *key, void *value);
-
- uint32_t size;
-
- struct util_cache_entry *entries;
-
- unsigned count;
- struct util_cache_entry lru;
-};
-
-static void
-ensure_sanity(const struct util_cache *cache);
-
-#define CACHE_DEFAULT_ALPHA 2
-
-struct util_cache *
-util_cache_create(uint32_t (*hash)(const void *key),
- int (*compare)(const void *key1, const void *key2),
- void (*destroy)(void *key, void *value),
- uint32_t size)
-{
- struct util_cache *cache;
-
- cache = CALLOC_STRUCT(util_cache);
- if(!cache)
- return NULL;
-
- cache->hash = hash;
- cache->compare = compare;
- cache->destroy = destroy;
-
- make_empty_list(&cache->lru);
-
- size *= CACHE_DEFAULT_ALPHA;
- cache->size = size;
-
- cache->entries = CALLOC(size, sizeof(struct util_cache_entry));
- if(!cache->entries) {
- FREE(cache);
- return NULL;
- }
-
- ensure_sanity(cache);
- return cache;
-}
-
-
-static struct util_cache_entry *
-util_cache_entry_get(struct util_cache *cache,
- uint32_t hash,
- const void *key)
-{
- struct util_cache_entry *first_unfilled = NULL;
- uint32_t index = hash % cache->size;
- uint32_t probe;
-
- /* Probe until we find either a matching FILLED entry or an EMPTY
- * slot (which has never been occupied).
- *
- * Deleted or non-matching slots are not indicative of completion
- * as a previous linear probe for the same key could have continued
- * past this point.
- */
- for (probe = 0; probe < cache->size; probe++) {
- uint32_t i = (index + probe) % cache->size;
- struct util_cache_entry *current = &cache->entries[i];
-
- if (current->state == FILLED) {
- if (current->hash == hash &&
- cache->compare(key, current->key) == 0)
- return current;
- }
- else {
- if (!first_unfilled)
- first_unfilled = current;
-
- if (current->state == EMPTY)
- return first_unfilled;
- }
- }
-
- return NULL;
-}
-
-static INLINE void
-util_cache_entry_destroy(struct util_cache *cache,
- struct util_cache_entry *entry)
-{
- void *key = entry->key;
- void *value = entry->value;
-
- entry->key = NULL;
- entry->value = NULL;
-
- if (entry->state == FILLED) {
- remove_from_list(entry);
- cache->count--;
-
- if(cache->destroy)
- cache->destroy(key, value);
-
- entry->state = DELETED;
- }
-}
-
-
-void
-util_cache_set(struct util_cache *cache,
- void *key,
- void *value)
-{
- struct util_cache_entry *entry;
- uint32_t hash = cache->hash(key);
-
- assert(cache);
- if (!cache)
- return;
-
- entry = util_cache_entry_get(cache, hash, key);
- if (!entry)
- entry = cache->lru.prev;
-
- if (cache->count >= cache->size / CACHE_DEFAULT_ALPHA)
- util_cache_entry_destroy(cache, cache->lru.prev);
-
- util_cache_entry_destroy(cache, entry);
-
-#ifdef DEBUG
- ++entry->count;
-#endif
-
- entry->key = key;
- entry->hash = hash;
- entry->value = value;
- entry->state = FILLED;
- insert_at_head(&cache->lru, entry);
- cache->count++;
-
- ensure_sanity(cache);
-}
-
-
-void *
-util_cache_get(struct util_cache *cache,
- const void *key)
-{
- struct util_cache_entry *entry;
- uint32_t hash = cache->hash(key);
-
- assert(cache);
- if (!cache)
- return NULL;
-
- entry = util_cache_entry_get(cache, hash, key);
- if (!entry)
- return NULL;
-
- if (entry->state == FILLED)
- move_to_head(&cache->lru, entry);
-
- return entry->value;
-}
-
-
-void
-util_cache_clear(struct util_cache *cache)
-{
- uint32_t i;
-
- assert(cache);
- if (!cache)
- return;
-
- for(i = 0; i < cache->size; ++i) {
- util_cache_entry_destroy(cache, &cache->entries[i]);
- cache->entries[i].state = EMPTY;
- }
-
- assert(cache->count == 0);
- assert(is_empty_list(&cache->lru));
- ensure_sanity(cache);
-}
-
-
-void
-util_cache_destroy(struct util_cache *cache)
-{
- assert(cache);
- if (!cache)
- return;
-
-#ifdef DEBUG
- if(cache->count >= 20*cache->size) {
- /* Normal approximation of the Poisson distribution */
- double mean = (double)cache->count/(double)cache->size;
- double stddev = sqrt(mean);
- unsigned i;
- for(i = 0; i < cache->size; ++i) {
- double z = fabs(cache->entries[i].count - mean)/stddev;
- /* This assert should not fail 99.9999998027% of the times, unless
- * the hash function is a poor one */
- assert(z <= 6.0);
- }
- }
-#endif
-
- util_cache_clear(cache);
-
- FREE(cache->entries);
- FREE(cache);
-}
-
-
-void
-util_cache_remove(struct util_cache *cache,
- const void *key)
-{
- struct util_cache_entry *entry;
- uint32_t hash;
-
- assert(cache);
- if (!cache)
- return;
-
- hash = cache->hash(key);
-
- entry = util_cache_entry_get(cache, hash, key);
- if (!entry)
- return;
-
- if (entry->state == FILLED)
- util_cache_entry_destroy(cache, entry);
-
- ensure_sanity(cache);
-}
-
-
-static void
-ensure_sanity(const struct util_cache *cache)
-{
-#ifdef DEBUG
- unsigned i, cnt = 0;
-
- assert(cache);
- for (i = 0; i < cache->size; i++) {
- struct util_cache_entry *header = &cache->entries[i];
-
- assert(header);
- assert(header->state == FILLED ||
- header->state == EMPTY ||
- header->state == DELETED);
- if (header->state == FILLED) {
- cnt++;
- assert(header->hash == cache->hash(header->key));
- }
- }
-
- assert(cnt == cache->count);
- assert(cache->size >= cnt);
-
- if (cache->count == 0) {
- assert (is_empty_list(&cache->lru));
- }
- else {
- struct util_cache_entry *header = cache->lru.next;
-
- assert (header);
- assert (!is_empty_list(&cache->lru));
-
- for (i = 0; i < cache->count; i++)
- header = header->next;
-
- assert(header == &cache->lru);
- }
-#endif
-
- (void)cache;
-}
+/**************************************************************************
+ *
+ * Copyright 2008 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Improved cache implementation.
+ *
+ * Fixed size array with linear probing on collision and LRU eviction
+ * on full.
+ *
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+
+
+#include "pipe/p_compiler.h"
+#include "util/u_debug.h"
+
+#include "util/u_math.h"
+#include "util/u_memory.h"
+#include "util/u_cache.h"
+#include "util/u_simple_list.h"
+
+
+struct util_cache_entry
+{
+ enum { EMPTY = 0, FILLED, DELETED } state;
+ uint32_t hash;
+
+ struct util_cache_entry *next;
+ struct util_cache_entry *prev;
+
+ void *key;
+ void *value;
+
+#ifdef DEBUG
+ unsigned count;
+#endif
+};
+
+
+struct util_cache
+{
+ /** Hash function */
+ uint32_t (*hash)(const void *key);
+
+ /** Compare two keys */
+ int (*compare)(const void *key1, const void *key2);
+
+ /** Destroy a (key, value) pair */
+ void (*destroy)(void *key, void *value);
+
+ uint32_t size;
+
+ struct util_cache_entry *entries;
+
+ unsigned count;
+ struct util_cache_entry lru;
+};
+
+static void
+ensure_sanity(const struct util_cache *cache);
+
+#define CACHE_DEFAULT_ALPHA 2
+
+struct util_cache *
+util_cache_create(uint32_t (*hash)(const void *key),
+ int (*compare)(const void *key1, const void *key2),
+ void (*destroy)(void *key, void *value),
+ uint32_t size)
+{
+ struct util_cache *cache;
+
+ cache = CALLOC_STRUCT(util_cache);
+ if(!cache)
+ return NULL;
+
+ cache->hash = hash;
+ cache->compare = compare;
+ cache->destroy = destroy;
+
+ make_empty_list(&cache->lru);
+
+ size *= CACHE_DEFAULT_ALPHA;
+ cache->size = size;
+
+ cache->entries = CALLOC(size, sizeof(struct util_cache_entry));
+ if(!cache->entries) {
+ FREE(cache);
+ return NULL;
+ }
+
+ ensure_sanity(cache);
+ return cache;
+}
+
+
+static struct util_cache_entry *
+util_cache_entry_get(struct util_cache *cache,
+ uint32_t hash,
+ const void *key)
+{
+ struct util_cache_entry *first_unfilled = NULL;
+ uint32_t index = hash % cache->size;
+ uint32_t probe;
+
+ /* Probe until we find either a matching FILLED entry or an EMPTY
+ * slot (which has never been occupied).
+ *
+ * Deleted or non-matching slots are not indicative of completion
+ * as a previous linear probe for the same key could have continued
+ * past this point.
+ */
+ for (probe = 0; probe < cache->size; probe++) {
+ uint32_t i = (index + probe) % cache->size;
+ struct util_cache_entry *current = &cache->entries[i];
+
+ if (current->state == FILLED) {
+ if (current->hash == hash &&
+ cache->compare(key, current->key) == 0)
+ return current;
+ }
+ else {
+ if (!first_unfilled)
+ first_unfilled = current;
+
+ if (current->state == EMPTY)
+ return first_unfilled;
+ }
+ }
+
+ return NULL;
+}
+
+static INLINE void
+util_cache_entry_destroy(struct util_cache *cache,
+ struct util_cache_entry *entry)
+{
+ void *key = entry->key;
+ void *value = entry->value;
+
+ entry->key = NULL;
+ entry->value = NULL;
+
+ if (entry->state == FILLED) {
+ remove_from_list(entry);
+ cache->count--;
+
+ if(cache->destroy)
+ cache->destroy(key, value);
+
+ entry->state = DELETED;
+ }
+}
+
+
+void
+util_cache_set(struct util_cache *cache,
+ void *key,
+ void *value)
+{
+ struct util_cache_entry *entry;
+ uint32_t hash = cache->hash(key);
+
+ assert(cache);
+ if (!cache)
+ return;
+
+ entry = util_cache_entry_get(cache, hash, key);
+ if (!entry)
+ entry = cache->lru.prev;
+
+ if (cache->count >= cache->size / CACHE_DEFAULT_ALPHA)
+ util_cache_entry_destroy(cache, cache->lru.prev);
+
+ util_cache_entry_destroy(cache, entry);
+
+#ifdef DEBUG
+ ++entry->count;
+#endif
+
+ entry->key = key;
+ entry->hash = hash;
+ entry->value = value;
+ entry->state = FILLED;
+ insert_at_head(&cache->lru, entry);
+ cache->count++;
+
+ ensure_sanity(cache);
+}
+
+
+void *
+util_cache_get(struct util_cache *cache,
+ const void *key)
+{
+ struct util_cache_entry *entry;
+ uint32_t hash = cache->hash(key);
+
+ assert(cache);
+ if (!cache)
+ return NULL;
+
+ entry = util_cache_entry_get(cache, hash, key);
+ if (!entry)
+ return NULL;
+
+ if (entry->state == FILLED)
+ move_to_head(&cache->lru, entry);
+
+ return entry->value;
+}
+
+
+void
+util_cache_clear(struct util_cache *cache)
+{
+ uint32_t i;
+
+ assert(cache);
+ if (!cache)
+ return;
+
+ for(i = 0; i < cache->size; ++i) {
+ util_cache_entry_destroy(cache, &cache->entries[i]);
+ cache->entries[i].state = EMPTY;
+ }
+
+ assert(cache->count == 0);
+ assert(is_empty_list(&cache->lru));
+ ensure_sanity(cache);
+}
+
+
+void
+util_cache_destroy(struct util_cache *cache)
+{
+ assert(cache);
+ if (!cache)
+ return;
+
+#ifdef DEBUG
+ if(cache->count >= 20*cache->size) {
+ /* Normal approximation of the Poisson distribution */
+ double mean = (double)cache->count/(double)cache->size;
+ double stddev = sqrt(mean);
+ unsigned i;
+ for(i = 0; i < cache->size; ++i) {
+ double z = fabs(cache->entries[i].count - mean)/stddev;
+ /* This assert should not fail 99.9999998027% of the times, unless
+ * the hash function is a poor one */
+ assert(z <= 6.0);
+ }
+ }
+#endif
+
+ util_cache_clear(cache);
+
+ FREE(cache->entries);
+ FREE(cache);
+}
+
+
+void
+util_cache_remove(struct util_cache *cache,
+ const void *key)
+{
+ struct util_cache_entry *entry;
+ uint32_t hash;
+
+ assert(cache);
+ if (!cache)
+ return;
+
+ hash = cache->hash(key);
+
+ entry = util_cache_entry_get(cache, hash, key);
+ if (!entry)
+ return;
+
+ if (entry->state == FILLED)
+ util_cache_entry_destroy(cache, entry);
+
+ ensure_sanity(cache);
+}
+
+
+static void
+ensure_sanity(const struct util_cache *cache)
+{
+#ifdef DEBUG
+ unsigned i, cnt = 0;
+
+ assert(cache);
+ for (i = 0; i < cache->size; i++) {
+ struct util_cache_entry *header = &cache->entries[i];
+
+ assert(header);
+ assert(header->state == FILLED ||
+ header->state == EMPTY ||
+ header->state == DELETED);
+ if (header->state == FILLED) {
+ cnt++;
+ assert(header->hash == cache->hash(header->key));
+ }
+ }
+
+ assert(cnt == cache->count);
+ assert(cache->size >= cnt);
+
+ if (cache->count == 0) {
+ assert (is_empty_list(&cache->lru));
+ }
+ else {
+ struct util_cache_entry *header = cache->lru.next;
+
+ assert (header);
+ assert (!is_empty_list(&cache->lru));
+
+ for (i = 0; i < cache->count; i++)
+ header = header->next;
+
+ assert(header == &cache->lru);
+ }
+#endif
+
+ (void)cache;
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_cache.h b/mesalib/src/gallium/auxiliary/util/u_cache.h
index f88ccb2b2..be3631b72 100644
--- a/mesalib/src/gallium/auxiliary/util/u_cache.h
+++ b/mesalib/src/gallium/auxiliary/util/u_cache.h
@@ -1,91 +1,91 @@
-/**************************************************************************
- *
- * Copyright 2008 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * Simple cache.
- *
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-#ifndef U_CACHE_H_
-#define U_CACHE_H_
-
-
-#include "pipe/p_compiler.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- * Least Recently Used (LRU) cache.
- */
-struct util_cache;
-
-
-/**
- * Create a cache.
- *
- * @param hash hash function
- * @param compare should return 0 for two equal keys
- * @param destroy destruction callback (optional)
- * @param size maximum number of entries
- */
-struct util_cache *
-util_cache_create(uint32_t (*hash)(const void *key),
- int (*compare)(const void *key1, const void *key2),
- void (*destroy)(void *key, void *value),
- uint32_t size);
-
-void
-util_cache_set(struct util_cache *cache,
- void *key,
- void *value);
-
-void *
-util_cache_get(struct util_cache *cache,
- const void *key);
-
-void
-util_cache_clear(struct util_cache *cache);
-
-void
-util_cache_destroy(struct util_cache *cache);
-
-void
-util_cache_remove(struct util_cache *cache,
- const void *key);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* U_CACHE_H_ */
+/**************************************************************************
+ *
+ * Copyright 2008 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Simple cache.
+ *
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+
+#ifndef U_CACHE_H_
+#define U_CACHE_H_
+
+
+#include "pipe/p_compiler.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * Least Recently Used (LRU) cache.
+ */
+struct util_cache;
+
+
+/**
+ * Create a cache.
+ *
+ * @param hash hash function
+ * @param compare should return 0 for two equal keys
+ * @param destroy destruction callback (optional)
+ * @param size maximum number of entries
+ */
+struct util_cache *
+util_cache_create(uint32_t (*hash)(const void *key),
+ int (*compare)(const void *key1, const void *key2),
+ void (*destroy)(void *key, void *value),
+ uint32_t size);
+
+void
+util_cache_set(struct util_cache *cache,
+ void *key,
+ void *value);
+
+void *
+util_cache_get(struct util_cache *cache,
+ const void *key);
+
+void
+util_cache_clear(struct util_cache *cache);
+
+void
+util_cache_destroy(struct util_cache *cache);
+
+void
+util_cache_remove(struct util_cache *cache,
+ const void *key);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* U_CACHE_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_cpu_detect.c b/mesalib/src/gallium/auxiliary/util/u_cpu_detect.c
index 28929d174..e0c8f73c7 100644
--- a/mesalib/src/gallium/auxiliary/util/u_cpu_detect.c
+++ b/mesalib/src/gallium/auxiliary/util/u_cpu_detect.c
@@ -1,343 +1,343 @@
-/**************************************************************************
- *
- * Copyright 2008 Dennis Smit
- * All Rights Reserved.
- *
- * 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
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, 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 (including the next
- * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
- * AUTHORS, COPYRIGHT HOLDERS, AND/OR THEIR SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * CPU feature detection.
- *
- * @author Dennis Smit
- * @author Based on the work of Eric Anholt <anholt@FreeBSD.org>
- */
-
-#include "pipe/p_config.h"
-
-#include "u_debug.h"
-#include "u_cpu_detect.h"
-
-#if defined(PIPE_ARCH_PPC)
-#if defined(PIPE_OS_APPLE)
-#include <sys/sysctl.h>
-#else
-#include <signal.h>
-#include <setjmp.h>
-#endif
-#endif
-
-#if defined(PIPE_OS_NETBSD) || defined(PIPE_OS_OPENBSD)
-#include <sys/param.h>
-#include <sys/sysctl.h>
-#include <machine/cpu.h>
-#endif
-
-#if defined(PIPE_OS_FREEBSD)
-#include <sys/types.h>
-#include <sys/sysctl.h>
-#endif
-
-#if defined(PIPE_OS_LINUX)
-#include <signal.h>
-#endif
-
-#ifdef PIPE_OS_UNIX
-#include <unistd.h>
-#endif
-
-#if defined(PIPE_OS_WINDOWS)
-#include <windows.h>
-#if defined(MSVC)
-#include <intrin.h>
-#endif
-#endif
-
-
-#ifdef DEBUG
-DEBUG_GET_ONCE_BOOL_OPTION(dump_cpu, "GALLIUM_DUMP_CPU", FALSE)
-#endif
-
-
-struct util_cpu_caps util_cpu_caps;
-
-#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)
-static int has_cpuid(void);
-#endif
-
-
-#if defined(PIPE_ARCH_PPC) && !defined(PIPE_OS_APPLE)
-static jmp_buf __lv_powerpc_jmpbuf;
-static volatile sig_atomic_t __lv_powerpc_canjump = 0;
-
-static void
-sigill_handler(int sig)
-{
- if (!__lv_powerpc_canjump) {
- signal (sig, SIG_DFL);
- raise (sig);
- }
-
- __lv_powerpc_canjump = 0;
- longjmp(__lv_powerpc_jmpbuf, 1);
-}
-#endif
-
-#if defined(PIPE_ARCH_PPC)
-static void
-check_os_altivec_support(void)
-{
-#if defined(PIPE_OS_APPLE)
- int sels[2] = {CTL_HW, HW_VECTORUNIT};
- int has_vu = 0;
- int len = sizeof (has_vu);
- int err;
-
- err = sysctl(sels, 2, &has_vu, &len, NULL, 0);
-
- if (err == 0) {
- if (has_vu != 0) {
- util_cpu_caps.has_altivec = 1;
- }
- }
-#else /* !PIPE_OS_APPLE */
- /* not on Apple/Darwin, do it the brute-force way */
- /* this is borrowed from the libmpeg2 library */
- signal(SIGILL, sigill_handler);
- if (setjmp(__lv_powerpc_jmpbuf)) {
- signal(SIGILL, SIG_DFL);
- } else {
- __lv_powerpc_canjump = 1;
-
- __asm __volatile
- ("mtspr 256, %0\n\t"
- "vand %%v0, %%v0, %%v0"
- :
- : "r" (-1));
-
- signal(SIGILL, SIG_DFL);
- util_cpu_caps.has_altivec = 1;
- }
-#endif /* !PIPE_OS_APPLE */
-}
-#endif /* PIPE_ARCH_PPC */
-
-
-#if defined(PIPE_ARCH_X86) || defined (PIPE_ARCH_X86_64)
-static int has_cpuid(void)
-{
-#if defined(PIPE_ARCH_X86)
-#if defined(PIPE_OS_GCC)
- int a, c;
-
- __asm __volatile
- ("pushf\n"
- "popl %0\n"
- "movl %0, %1\n"
- "xorl $0x200000, %0\n"
- "push %0\n"
- "popf\n"
- "pushf\n"
- "popl %0\n"
- : "=a" (a), "=c" (c)
- :
- : "cc");
-
- return a != c;
-#else
- /* FIXME */
- return 1;
-#endif
-#elif defined(PIPE_ARCH_X86_64)
- return 1;
-#else
- return 0;
-#endif
-}
-
-
-/**
- * @sa cpuid.h included in gcc-4.3 onwards.
- * @sa http://msdn.microsoft.com/en-us/library/hskdteyh.aspx
- */
-static INLINE void
-cpuid(uint32_t ax, uint32_t *p)
-{
-#if defined(PIPE_CC_GCC) && defined(PIPE_ARCH_X86)
- __asm __volatile (
- "xchgl %%ebx, %1\n\t"
- "cpuid\n\t"
- "xchgl %%ebx, %1"
- : "=a" (p[0]),
- "=S" (p[1]),
- "=c" (p[2]),
- "=d" (p[3])
- : "0" (ax)
- );
-#elif defined(PIPE_CC_GCC) && defined(PIPE_ARCH_X86_64)
- __asm __volatile (
- "cpuid\n\t"
- : "=a" (p[0]),
- "=b" (p[1]),
- "=c" (p[2]),
- "=d" (p[3])
- : "0" (ax)
- );
-#elif defined(PIPE_CC_MSVC)
- __cpuid(p, ax);
-#else
- p[0] = 0;
- p[1] = 0;
- p[2] = 0;
- p[3] = 0;
-#endif
-}
-#endif /* X86 or X86_64 */
-
-void
-util_cpu_detect(void)
-{
- static boolean util_cpu_detect_initialized = FALSE;
-
- if(util_cpu_detect_initialized)
- return;
-
- memset(&util_cpu_caps, 0, sizeof util_cpu_caps);
-
- /* Count the number of CPUs in system */
-#if defined(PIPE_OS_WINDOWS)
- {
- SYSTEM_INFO system_info;
- GetSystemInfo(&system_info);
- util_cpu_caps.nr_cpus = system_info.dwNumberOfProcessors;
- }
-#elif defined(PIPE_OS_UNIX) && defined(_SC_NPROCESSORS_ONLN)
- util_cpu_caps.nr_cpus = sysconf(_SC_NPROCESSORS_ONLN);
- if (util_cpu_caps.nr_cpus == -1)
- util_cpu_caps.nr_cpus = 1;
-#elif defined(PIPE_OS_BSD)
- {
- int mib[2], ncpu;
- int len;
-
- mib[0] = CTL_HW;
- mib[1] = HW_NCPU;
-
- len = sizeof (ncpu);
- sysctl(mib, 2, &ncpu, &len, NULL, 0);
- util_cpu_caps.nr_cpus = ncpu;
- }
-#else
- util_cpu_caps.nr_cpus = 1;
-#endif
-
-#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)
- if (has_cpuid()) {
- uint32_t regs[4];
- uint32_t regs2[4];
-
- util_cpu_caps.cacheline = 32;
-
- /* Get max cpuid level */
- cpuid(0x00000000, regs);
-
- if (regs[0] >= 0x00000001) {
- unsigned int cacheline;
-
- cpuid (0x00000001, regs2);
-
- util_cpu_caps.x86_cpu_type = (regs2[0] >> 8) & 0xf;
- if (util_cpu_caps.x86_cpu_type == 0xf)
- util_cpu_caps.x86_cpu_type = 8 + ((regs2[0] >> 20) & 255); /* use extended family (P4, IA64) */
-
- /* general feature flags */
- util_cpu_caps.has_tsc = (regs2[3] >> 8) & 1; /* 0x0000010 */
- util_cpu_caps.has_mmx = (regs2[3] >> 23) & 1; /* 0x0800000 */
- util_cpu_caps.has_sse = (regs2[3] >> 25) & 1; /* 0x2000000 */
- util_cpu_caps.has_sse2 = (regs2[3] >> 26) & 1; /* 0x4000000 */
- util_cpu_caps.has_sse3 = (regs2[2] >> 0) & 1; /* 0x0000001 */
- util_cpu_caps.has_ssse3 = (regs2[2] >> 9) & 1; /* 0x0000020 */
- util_cpu_caps.has_sse4_1 = (regs2[2] >> 19) & 1;
- util_cpu_caps.has_sse4_2 = (regs2[2] >> 20) & 1;
- util_cpu_caps.has_avx = (regs2[2] >> 28) & 1;
- util_cpu_caps.has_mmx2 = util_cpu_caps.has_sse; /* SSE cpus supports mmxext too */
-
- cacheline = ((regs2[1] >> 8) & 0xFF) * 8;
- if (cacheline > 0)
- util_cpu_caps.cacheline = cacheline;
- }
-
- cpuid(0x80000000, regs);
-
- if (regs[0] >= 0x80000001) {
-
- cpuid(0x80000001, regs2);
-
- util_cpu_caps.has_mmx |= (regs2[3] >> 23) & 1;
- util_cpu_caps.has_mmx2 |= (regs2[3] >> 22) & 1;
- util_cpu_caps.has_3dnow = (regs2[3] >> 31) & 1;
- util_cpu_caps.has_3dnow_ext = (regs2[3] >> 30) & 1;
- }
-
- if (regs[0] >= 0x80000006) {
- cpuid(0x80000006, regs2);
- util_cpu_caps.cacheline = regs2[2] & 0xFF;
- }
-
- if (!util_cpu_caps.has_sse) {
- util_cpu_caps.has_sse2 = 0;
- util_cpu_caps.has_sse3 = 0;
- util_cpu_caps.has_ssse3 = 0;
- util_cpu_caps.has_sse4_1 = 0;
- }
- }
-#endif /* PIPE_ARCH_X86 || PIPE_ARCH_X86_64 */
-
-#if defined(PIPE_ARCH_PPC)
- check_os_altivec_support();
-#endif /* PIPE_ARCH_PPC */
-
-#ifdef DEBUG
- if (debug_get_option_dump_cpu()) {
- debug_printf("util_cpu_caps.nr_cpus = %u\n", util_cpu_caps.nr_cpus);
-
- debug_printf("util_cpu_caps.x86_cpu_type = %u\n", util_cpu_caps.x86_cpu_type);
- debug_printf("util_cpu_caps.cacheline = %u\n", util_cpu_caps.cacheline);
-
- debug_printf("util_cpu_caps.has_tsc = %u\n", util_cpu_caps.has_tsc);
- debug_printf("util_cpu_caps.has_mmx = %u\n", util_cpu_caps.has_mmx);
- debug_printf("util_cpu_caps.has_mmx2 = %u\n", util_cpu_caps.has_mmx2);
- debug_printf("util_cpu_caps.has_sse = %u\n", util_cpu_caps.has_sse);
- debug_printf("util_cpu_caps.has_sse2 = %u\n", util_cpu_caps.has_sse2);
- debug_printf("util_cpu_caps.has_sse3 = %u\n", util_cpu_caps.has_sse3);
- debug_printf("util_cpu_caps.has_ssse3 = %u\n", util_cpu_caps.has_ssse3);
- debug_printf("util_cpu_caps.has_sse4_1 = %u\n", util_cpu_caps.has_sse4_1);
- debug_printf("util_cpu_caps.has_sse4_2 = %u\n", util_cpu_caps.has_sse4_2);
- debug_printf("util_cpu_caps.has_avx = %u\n", util_cpu_caps.has_avx);
- debug_printf("util_cpu_caps.has_3dnow = %u\n", util_cpu_caps.has_3dnow);
- debug_printf("util_cpu_caps.has_3dnow_ext = %u\n", util_cpu_caps.has_3dnow_ext);
- debug_printf("util_cpu_caps.has_altivec = %u\n", util_cpu_caps.has_altivec);
- }
-#endif
-
- util_cpu_detect_initialized = TRUE;
-}
+/**************************************************************************
+ *
+ * Copyright 2008 Dennis Smit
+ * All Rights Reserved.
+ *
+ * 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
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, 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 (including the next
+ * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+ * AUTHORS, COPYRIGHT HOLDERS, AND/OR THEIR SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * CPU feature detection.
+ *
+ * @author Dennis Smit
+ * @author Based on the work of Eric Anholt <anholt@FreeBSD.org>
+ */
+
+#include "pipe/p_config.h"
+
+#include "u_debug.h"
+#include "u_cpu_detect.h"
+
+#if defined(PIPE_ARCH_PPC)
+#if defined(PIPE_OS_APPLE)
+#include <sys/sysctl.h>
+#else
+#include <signal.h>
+#include <setjmp.h>
+#endif
+#endif
+
+#if defined(PIPE_OS_NETBSD) || defined(PIPE_OS_OPENBSD)
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <machine/cpu.h>
+#endif
+
+#if defined(PIPE_OS_FREEBSD)
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#endif
+
+#if defined(PIPE_OS_LINUX)
+#include <signal.h>
+#endif
+
+#ifdef PIPE_OS_UNIX
+#include <unistd.h>
+#endif
+
+#if defined(PIPE_OS_WINDOWS)
+#include <windows.h>
+#if defined(MSVC)
+#include <intrin.h>
+#endif
+#endif
+
+
+#ifdef DEBUG
+DEBUG_GET_ONCE_BOOL_OPTION(dump_cpu, "GALLIUM_DUMP_CPU", FALSE)
+#endif
+
+
+struct util_cpu_caps util_cpu_caps;
+
+#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)
+static int has_cpuid(void);
+#endif
+
+
+#if defined(PIPE_ARCH_PPC) && !defined(PIPE_OS_APPLE)
+static jmp_buf __lv_powerpc_jmpbuf;
+static volatile sig_atomic_t __lv_powerpc_canjump = 0;
+
+static void
+sigill_handler(int sig)
+{
+ if (!__lv_powerpc_canjump) {
+ signal (sig, SIG_DFL);
+ raise (sig);
+ }
+
+ __lv_powerpc_canjump = 0;
+ longjmp(__lv_powerpc_jmpbuf, 1);
+}
+#endif
+
+#if defined(PIPE_ARCH_PPC)
+static void
+check_os_altivec_support(void)
+{
+#if defined(PIPE_OS_APPLE)
+ int sels[2] = {CTL_HW, HW_VECTORUNIT};
+ int has_vu = 0;
+ int len = sizeof (has_vu);
+ int err;
+
+ err = sysctl(sels, 2, &has_vu, &len, NULL, 0);
+
+ if (err == 0) {
+ if (has_vu != 0) {
+ util_cpu_caps.has_altivec = 1;
+ }
+ }
+#else /* !PIPE_OS_APPLE */
+ /* not on Apple/Darwin, do it the brute-force way */
+ /* this is borrowed from the libmpeg2 library */
+ signal(SIGILL, sigill_handler);
+ if (setjmp(__lv_powerpc_jmpbuf)) {
+ signal(SIGILL, SIG_DFL);
+ } else {
+ __lv_powerpc_canjump = 1;
+
+ __asm __volatile
+ ("mtspr 256, %0\n\t"
+ "vand %%v0, %%v0, %%v0"
+ :
+ : "r" (-1));
+
+ signal(SIGILL, SIG_DFL);
+ util_cpu_caps.has_altivec = 1;
+ }
+#endif /* !PIPE_OS_APPLE */
+}
+#endif /* PIPE_ARCH_PPC */
+
+
+#if defined(PIPE_ARCH_X86) || defined (PIPE_ARCH_X86_64)
+static int has_cpuid(void)
+{
+#if defined(PIPE_ARCH_X86)
+#if defined(PIPE_OS_GCC)
+ int a, c;
+
+ __asm __volatile
+ ("pushf\n"
+ "popl %0\n"
+ "movl %0, %1\n"
+ "xorl $0x200000, %0\n"
+ "push %0\n"
+ "popf\n"
+ "pushf\n"
+ "popl %0\n"
+ : "=a" (a), "=c" (c)
+ :
+ : "cc");
+
+ return a != c;
+#else
+ /* FIXME */
+ return 1;
+#endif
+#elif defined(PIPE_ARCH_X86_64)
+ return 1;
+#else
+ return 0;
+#endif
+}
+
+
+/**
+ * @sa cpuid.h included in gcc-4.3 onwards.
+ * @sa http://msdn.microsoft.com/en-us/library/hskdteyh.aspx
+ */
+static INLINE void
+cpuid(uint32_t ax, uint32_t *p)
+{
+#if defined(PIPE_CC_GCC) && defined(PIPE_ARCH_X86)
+ __asm __volatile (
+ "xchgl %%ebx, %1\n\t"
+ "cpuid\n\t"
+ "xchgl %%ebx, %1"
+ : "=a" (p[0]),
+ "=S" (p[1]),
+ "=c" (p[2]),
+ "=d" (p[3])
+ : "0" (ax)
+ );
+#elif defined(PIPE_CC_GCC) && defined(PIPE_ARCH_X86_64)
+ __asm __volatile (
+ "cpuid\n\t"
+ : "=a" (p[0]),
+ "=b" (p[1]),
+ "=c" (p[2]),
+ "=d" (p[3])
+ : "0" (ax)
+ );
+#elif defined(PIPE_CC_MSVC)
+ __cpuid(p, ax);
+#else
+ p[0] = 0;
+ p[1] = 0;
+ p[2] = 0;
+ p[3] = 0;
+#endif
+}
+#endif /* X86 or X86_64 */
+
+void
+util_cpu_detect(void)
+{
+ static boolean util_cpu_detect_initialized = FALSE;
+
+ if(util_cpu_detect_initialized)
+ return;
+
+ memset(&util_cpu_caps, 0, sizeof util_cpu_caps);
+
+ /* Count the number of CPUs in system */
+#if defined(PIPE_OS_WINDOWS)
+ {
+ SYSTEM_INFO system_info;
+ GetSystemInfo(&system_info);
+ util_cpu_caps.nr_cpus = system_info.dwNumberOfProcessors;
+ }
+#elif defined(PIPE_OS_UNIX) && defined(_SC_NPROCESSORS_ONLN)
+ util_cpu_caps.nr_cpus = sysconf(_SC_NPROCESSORS_ONLN);
+ if (util_cpu_caps.nr_cpus == -1)
+ util_cpu_caps.nr_cpus = 1;
+#elif defined(PIPE_OS_BSD)
+ {
+ int mib[2], ncpu;
+ int len;
+
+ mib[0] = CTL_HW;
+ mib[1] = HW_NCPU;
+
+ len = sizeof (ncpu);
+ sysctl(mib, 2, &ncpu, &len, NULL, 0);
+ util_cpu_caps.nr_cpus = ncpu;
+ }
+#else
+ util_cpu_caps.nr_cpus = 1;
+#endif
+
+#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)
+ if (has_cpuid()) {
+ uint32_t regs[4];
+ uint32_t regs2[4];
+
+ util_cpu_caps.cacheline = 32;
+
+ /* Get max cpuid level */
+ cpuid(0x00000000, regs);
+
+ if (regs[0] >= 0x00000001) {
+ unsigned int cacheline;
+
+ cpuid (0x00000001, regs2);
+
+ util_cpu_caps.x86_cpu_type = (regs2[0] >> 8) & 0xf;
+ if (util_cpu_caps.x86_cpu_type == 0xf)
+ util_cpu_caps.x86_cpu_type = 8 + ((regs2[0] >> 20) & 255); /* use extended family (P4, IA64) */
+
+ /* general feature flags */
+ util_cpu_caps.has_tsc = (regs2[3] >> 8) & 1; /* 0x0000010 */
+ util_cpu_caps.has_mmx = (regs2[3] >> 23) & 1; /* 0x0800000 */
+ util_cpu_caps.has_sse = (regs2[3] >> 25) & 1; /* 0x2000000 */
+ util_cpu_caps.has_sse2 = (regs2[3] >> 26) & 1; /* 0x4000000 */
+ util_cpu_caps.has_sse3 = (regs2[2] >> 0) & 1; /* 0x0000001 */
+ util_cpu_caps.has_ssse3 = (regs2[2] >> 9) & 1; /* 0x0000020 */
+ util_cpu_caps.has_sse4_1 = (regs2[2] >> 19) & 1;
+ util_cpu_caps.has_sse4_2 = (regs2[2] >> 20) & 1;
+ util_cpu_caps.has_avx = (regs2[2] >> 28) & 1;
+ util_cpu_caps.has_mmx2 = util_cpu_caps.has_sse; /* SSE cpus supports mmxext too */
+
+ cacheline = ((regs2[1] >> 8) & 0xFF) * 8;
+ if (cacheline > 0)
+ util_cpu_caps.cacheline = cacheline;
+ }
+
+ cpuid(0x80000000, regs);
+
+ if (regs[0] >= 0x80000001) {
+
+ cpuid(0x80000001, regs2);
+
+ util_cpu_caps.has_mmx |= (regs2[3] >> 23) & 1;
+ util_cpu_caps.has_mmx2 |= (regs2[3] >> 22) & 1;
+ util_cpu_caps.has_3dnow = (regs2[3] >> 31) & 1;
+ util_cpu_caps.has_3dnow_ext = (regs2[3] >> 30) & 1;
+ }
+
+ if (regs[0] >= 0x80000006) {
+ cpuid(0x80000006, regs2);
+ util_cpu_caps.cacheline = regs2[2] & 0xFF;
+ }
+
+ if (!util_cpu_caps.has_sse) {
+ util_cpu_caps.has_sse2 = 0;
+ util_cpu_caps.has_sse3 = 0;
+ util_cpu_caps.has_ssse3 = 0;
+ util_cpu_caps.has_sse4_1 = 0;
+ }
+ }
+#endif /* PIPE_ARCH_X86 || PIPE_ARCH_X86_64 */
+
+#if defined(PIPE_ARCH_PPC)
+ check_os_altivec_support();
+#endif /* PIPE_ARCH_PPC */
+
+#ifdef DEBUG
+ if (debug_get_option_dump_cpu()) {
+ debug_printf("util_cpu_caps.nr_cpus = %u\n", util_cpu_caps.nr_cpus);
+
+ debug_printf("util_cpu_caps.x86_cpu_type = %u\n", util_cpu_caps.x86_cpu_type);
+ debug_printf("util_cpu_caps.cacheline = %u\n", util_cpu_caps.cacheline);
+
+ debug_printf("util_cpu_caps.has_tsc = %u\n", util_cpu_caps.has_tsc);
+ debug_printf("util_cpu_caps.has_mmx = %u\n", util_cpu_caps.has_mmx);
+ debug_printf("util_cpu_caps.has_mmx2 = %u\n", util_cpu_caps.has_mmx2);
+ debug_printf("util_cpu_caps.has_sse = %u\n", util_cpu_caps.has_sse);
+ debug_printf("util_cpu_caps.has_sse2 = %u\n", util_cpu_caps.has_sse2);
+ debug_printf("util_cpu_caps.has_sse3 = %u\n", util_cpu_caps.has_sse3);
+ debug_printf("util_cpu_caps.has_ssse3 = %u\n", util_cpu_caps.has_ssse3);
+ debug_printf("util_cpu_caps.has_sse4_1 = %u\n", util_cpu_caps.has_sse4_1);
+ debug_printf("util_cpu_caps.has_sse4_2 = %u\n", util_cpu_caps.has_sse4_2);
+ debug_printf("util_cpu_caps.has_avx = %u\n", util_cpu_caps.has_avx);
+ debug_printf("util_cpu_caps.has_3dnow = %u\n", util_cpu_caps.has_3dnow);
+ debug_printf("util_cpu_caps.has_3dnow_ext = %u\n", util_cpu_caps.has_3dnow_ext);
+ debug_printf("util_cpu_caps.has_altivec = %u\n", util_cpu_caps.has_altivec);
+ }
+#endif
+
+ util_cpu_detect_initialized = TRUE;
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_cpu_detect.h b/mesalib/src/gallium/auxiliary/util/u_cpu_detect.h
index fa2f769ae..856e8d7a0 100644
--- a/mesalib/src/gallium/auxiliary/util/u_cpu_detect.h
+++ b/mesalib/src/gallium/auxiliary/util/u_cpu_detect.h
@@ -1,69 +1,69 @@
-/**************************************************************************
- *
- * Copyright 2008 Dennis Smit
- * All Rights Reserved.
- *
- * 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
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, 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 (including the next
- * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
- * AUTHORS, COPYRIGHT HOLDERS, AND/OR THEIR SUPPLIERS 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.
- *
- ***************************************************************************/
-
-/**
- * @file
- * CPU feature detection.
- *
- * @author Dennis Smit
- * @author Based on the work of Eric Anholt <anholt@FreeBSD.org>
- */
-
-#ifndef _UTIL_CPU_DETECT_H
-#define _UTIL_CPU_DETECT_H
-
-#include "pipe/p_compiler.h"
-#include "pipe/p_config.h"
-
-struct util_cpu_caps {
- unsigned nr_cpus;
-
- /* Feature flags */
- int x86_cpu_type;
- unsigned cacheline;
-
- unsigned has_tsc:1;
- unsigned has_mmx:1;
- unsigned has_mmx2:1;
- unsigned has_sse:1;
- unsigned has_sse2:1;
- unsigned has_sse3:1;
- unsigned has_ssse3:1;
- unsigned has_sse4_1:1;
- unsigned has_sse4_2:1;
- unsigned has_avx:1;
- unsigned has_3dnow:1;
- unsigned has_3dnow_ext:1;
- unsigned has_altivec:1;
-};
-
-extern struct util_cpu_caps
-util_cpu_caps;
-
-void util_cpu_detect(void);
-
-
-#endif /* _UTIL_CPU_DETECT_H */
+/**************************************************************************
+ *
+ * Copyright 2008 Dennis Smit
+ * All Rights Reserved.
+ *
+ * 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
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, 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 (including the next
+ * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+ * AUTHORS, COPYRIGHT HOLDERS, AND/OR THEIR SUPPLIERS 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.
+ *
+ ***************************************************************************/
+
+/**
+ * @file
+ * CPU feature detection.
+ *
+ * @author Dennis Smit
+ * @author Based on the work of Eric Anholt <anholt@FreeBSD.org>
+ */
+
+#ifndef _UTIL_CPU_DETECT_H
+#define _UTIL_CPU_DETECT_H
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_config.h"
+
+struct util_cpu_caps {
+ unsigned nr_cpus;
+
+ /* Feature flags */
+ int x86_cpu_type;
+ unsigned cacheline;
+
+ unsigned has_tsc:1;
+ unsigned has_mmx:1;
+ unsigned has_mmx2:1;
+ unsigned has_sse:1;
+ unsigned has_sse2:1;
+ unsigned has_sse3:1;
+ unsigned has_ssse3:1;
+ unsigned has_sse4_1:1;
+ unsigned has_sse4_2:1;
+ unsigned has_avx:1;
+ unsigned has_3dnow:1;
+ unsigned has_3dnow_ext:1;
+ unsigned has_altivec:1;
+};
+
+extern struct util_cpu_caps
+util_cpu_caps;
+
+void util_cpu_detect(void);
+
+
+#endif /* _UTIL_CPU_DETECT_H */
diff --git a/mesalib/src/gallium/auxiliary/util/u_debug_stack.h b/mesalib/src/gallium/auxiliary/util/u_debug_stack.h
index 1d9a4a843..f50f04e0f 100644
--- a/mesalib/src/gallium/auxiliary/util/u_debug_stack.h
+++ b/mesalib/src/gallium/auxiliary/util/u_debug_stack.h
@@ -1,65 +1,65 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef U_DEBUG_STACK_H_
-#define U_DEBUG_STACK_H_
-
-
-/**
- * @file
- * Stack backtracing.
- *
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-struct debug_stack_frame
-{
- const void *function;
-};
-
-
-void
-debug_backtrace_capture(struct debug_stack_frame *backtrace,
- unsigned start_frame,
- unsigned nr_frames);
-
-void
-debug_backtrace_dump(const struct debug_stack_frame *backtrace,
- unsigned nr_frames);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* U_DEBUG_STACK_H_ */
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef U_DEBUG_STACK_H_
+#define U_DEBUG_STACK_H_
+
+
+/**
+ * @file
+ * Stack backtracing.
+ *
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+struct debug_stack_frame
+{
+ const void *function;
+};
+
+
+void
+debug_backtrace_capture(struct debug_stack_frame *backtrace,
+ unsigned start_frame,
+ unsigned nr_frames);
+
+void
+debug_backtrace_dump(const struct debug_stack_frame *backtrace,
+ unsigned nr_frames);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* U_DEBUG_STACK_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_debug_symbol.c b/mesalib/src/gallium/auxiliary/util/u_debug_symbol.c
index b2f762c66..bae9be87a 100644
--- a/mesalib/src/gallium/auxiliary/util/u_debug_symbol.c
+++ b/mesalib/src/gallium/auxiliary/util/u_debug_symbol.c
@@ -1,243 +1,243 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * Symbol lookup.
- *
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-#include "pipe/p_compiler.h"
-#include "os/os_thread.h"
-#include "u_string.h"
-
-#include "u_debug.h"
-#include "u_debug_symbol.h"
-#include "u_hash_table.h"
-
-#if defined(PIPE_OS_WINDOWS) && defined(PIPE_ARCH_X86)
-
-#include <windows.h>
-#include <stddef.h>
-
-#include "dbghelp.h"
-
-
-static BOOL bSymInitialized = FALSE;
-
-static HMODULE hModule_Dbghelp = NULL;
-
-
-static
-FARPROC WINAPI __GetProcAddress(LPCSTR lpProcName)
-{
-#ifdef PIPE_CC_GCC
- if (!hModule_Dbghelp) {
- /*
- * bfdhelp.dll is a dbghelp.dll look-alike replacement, which is able to
- * understand MinGW symbols using BFD library. It is available from
- * http://people.freedesktop.org/~jrfonseca/bfdhelp/ for now.
- */
- hModule_Dbghelp = LoadLibraryA("bfdhelp.dll");
- }
-#endif
-
- if (!hModule_Dbghelp) {
- hModule_Dbghelp = LoadLibraryA("dbghelp.dll");
- if (!hModule_Dbghelp) {
- return NULL;
- }
- }
-
- return GetProcAddress(hModule_Dbghelp, lpProcName);
-}
-
-
-typedef BOOL (WINAPI *PFNSYMINITIALIZE)(HANDLE, LPSTR, BOOL);
-static PFNSYMINITIALIZE pfnSymInitialize = NULL;
-
-static
-BOOL WINAPI j_SymInitialize(HANDLE hProcess, PSTR UserSearchPath, BOOL fInvadeProcess)
-{
- if(
- (pfnSymInitialize || (pfnSymInitialize = (PFNSYMINITIALIZE) __GetProcAddress("SymInitialize")))
- )
- return pfnSymInitialize(hProcess, UserSearchPath, fInvadeProcess);
- else
- return FALSE;
-}
-
-typedef DWORD (WINAPI *PFNSYMSETOPTIONS)(DWORD);
-static PFNSYMSETOPTIONS pfnSymSetOptions = NULL;
-
-static
-DWORD WINAPI j_SymSetOptions(DWORD SymOptions)
-{
- if(
- (pfnSymSetOptions || (pfnSymSetOptions = (PFNSYMSETOPTIONS) __GetProcAddress("SymSetOptions")))
- )
- return pfnSymSetOptions(SymOptions);
- else
- return FALSE;
-}
-
-typedef BOOL (WINAPI *PFNSYMGETSYMFROMADDR)(HANDLE, DWORD64, PDWORD64, PSYMBOL_INFO);
-static PFNSYMGETSYMFROMADDR pfnSymFromAddr = NULL;
-
-static
-BOOL WINAPI j_SymFromAddr(HANDLE hProcess, DWORD64 Address, PDWORD64 Displacement, PSYMBOL_INFO Symbol)
-{
- if(
- (pfnSymFromAddr || (pfnSymFromAddr = (PFNSYMGETSYMFROMADDR) __GetProcAddress("SymFromAddr")))
- )
- return pfnSymFromAddr(hProcess, Address, Displacement, Symbol);
- else
- return FALSE;
-}
-
-
-static INLINE void
-debug_symbol_name_dbghelp(const void *addr, char* buf, unsigned size)
-{
- HANDLE hProcess;
- BYTE symbolBuffer[1024];
- PSYMBOL_INFO pSymbol = (PSYMBOL_INFO) symbolBuffer;
- DWORD64 dwDisplacement = 0; /* Displacement of the input address, relative to the start of the symbol */
-
- hProcess = GetCurrentProcess();
-
- memset(pSymbol, 0, sizeof *pSymbol);
- pSymbol->SizeOfStruct = sizeof(symbolBuffer);
- pSymbol->MaxNameLen = sizeof(symbolBuffer) - offsetof(SYMBOL_INFO, Name);
-
- if(!bSymInitialized) {
- j_SymSetOptions(/* SYMOPT_UNDNAME | */ SYMOPT_LOAD_LINES);
- if(j_SymInitialize(hProcess, NULL, TRUE))
- bSymInitialized = TRUE;
- }
-
- if(!j_SymFromAddr(hProcess, (DWORD64)(uintptr_t)addr, &dwDisplacement, pSymbol))
- buf[0] = 0;
- else
- {
- strncpy(buf, pSymbol->Name, size);
- buf[size - 1] = 0;
- }
-}
-#endif
-
-#ifdef __GLIBC__
-#include <execinfo.h>
-
-/* This can only provide dynamic symbols, or binary offsets into a file.
- *
- * To fix this, post-process the output with tools/addr2line.sh
- */
-static INLINE void
-debug_symbol_name_glibc(const void *addr, char* buf, unsigned size)
-{
- char** syms = backtrace_symbols((void**)&addr, 1);
- strncpy(buf, syms[0], size);
- buf[size - 1] = 0;
- free(syms);
-}
-#endif
-
-void
-debug_symbol_name(const void *addr, char* buf, unsigned size)
-{
-#if defined(PIPE_OS_WINDOWS) && defined(PIPE_ARCH_X86)
- debug_symbol_name_dbghelp(addr, buf, size);
- if(buf[0])
- return;
-#endif
-
-#ifdef __GLIBC__
- debug_symbol_name_glibc(addr, buf, size);
- if(buf[0])
- return;
-#endif
-
- util_snprintf(buf, size, "%p", addr);
- buf[size - 1] = 0;
-}
-
-void
-debug_symbol_print(const void *addr)
-{
- char buf[1024];
- debug_symbol_name(addr, buf, sizeof(buf));
- debug_printf("\t%s\n", buf);
-}
-
-struct util_hash_table* symbols_hash;
-pipe_static_mutex(symbols_mutex);
-
-static unsigned hash_ptr(void* p)
-{
- return (unsigned)(uintptr_t)p;
-}
-
-static int compare_ptr(void* a, void* b)
-{
- if(a == b)
- return 0;
- else if(a < b)
- return -1;
- else
- return 1;
-}
-
-const char*
-debug_symbol_name_cached(const void *addr)
-{
- const char* name;
-#ifdef PIPE_SUBSYSTEM_WINDOWS_USER
- static boolean first = TRUE;
-
- if (first) {
- pipe_mutex_init(symbols_mutex);
- first = FALSE;
- }
-#endif
-
- pipe_mutex_lock(symbols_mutex);
- if(!symbols_hash)
- symbols_hash = util_hash_table_create(hash_ptr, compare_ptr);
- name = util_hash_table_get(symbols_hash, (void*)addr);
- if(!name)
- {
- char buf[1024];
- debug_symbol_name(addr, buf, sizeof(buf));
- name = strdup(buf);
-
- util_hash_table_set(symbols_hash, (void*)addr, (void*)name);
- }
- pipe_mutex_unlock(symbols_mutex);
- return name;
-}
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Symbol lookup.
+ *
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+
+#include "pipe/p_compiler.h"
+#include "os/os_thread.h"
+#include "u_string.h"
+
+#include "u_debug.h"
+#include "u_debug_symbol.h"
+#include "u_hash_table.h"
+
+#if defined(PIPE_OS_WINDOWS) && defined(PIPE_ARCH_X86)
+
+#include <windows.h>
+#include <stddef.h>
+
+#include "dbghelp.h"
+
+
+static BOOL bSymInitialized = FALSE;
+
+static HMODULE hModule_Dbghelp = NULL;
+
+
+static
+FARPROC WINAPI __GetProcAddress(LPCSTR lpProcName)
+{
+#ifdef PIPE_CC_GCC
+ if (!hModule_Dbghelp) {
+ /*
+ * bfdhelp.dll is a dbghelp.dll look-alike replacement, which is able to
+ * understand MinGW symbols using BFD library. It is available from
+ * http://people.freedesktop.org/~jrfonseca/bfdhelp/ for now.
+ */
+ hModule_Dbghelp = LoadLibraryA("bfdhelp.dll");
+ }
+#endif
+
+ if (!hModule_Dbghelp) {
+ hModule_Dbghelp = LoadLibraryA("dbghelp.dll");
+ if (!hModule_Dbghelp) {
+ return NULL;
+ }
+ }
+
+ return GetProcAddress(hModule_Dbghelp, lpProcName);
+}
+
+
+typedef BOOL (WINAPI *PFNSYMINITIALIZE)(HANDLE, LPSTR, BOOL);
+static PFNSYMINITIALIZE pfnSymInitialize = NULL;
+
+static
+BOOL WINAPI j_SymInitialize(HANDLE hProcess, PSTR UserSearchPath, BOOL fInvadeProcess)
+{
+ if(
+ (pfnSymInitialize || (pfnSymInitialize = (PFNSYMINITIALIZE) __GetProcAddress("SymInitialize")))
+ )
+ return pfnSymInitialize(hProcess, UserSearchPath, fInvadeProcess);
+ else
+ return FALSE;
+}
+
+typedef DWORD (WINAPI *PFNSYMSETOPTIONS)(DWORD);
+static PFNSYMSETOPTIONS pfnSymSetOptions = NULL;
+
+static
+DWORD WINAPI j_SymSetOptions(DWORD SymOptions)
+{
+ if(
+ (pfnSymSetOptions || (pfnSymSetOptions = (PFNSYMSETOPTIONS) __GetProcAddress("SymSetOptions")))
+ )
+ return pfnSymSetOptions(SymOptions);
+ else
+ return FALSE;
+}
+
+typedef BOOL (WINAPI *PFNSYMGETSYMFROMADDR)(HANDLE, DWORD64, PDWORD64, PSYMBOL_INFO);
+static PFNSYMGETSYMFROMADDR pfnSymFromAddr = NULL;
+
+static
+BOOL WINAPI j_SymFromAddr(HANDLE hProcess, DWORD64 Address, PDWORD64 Displacement, PSYMBOL_INFO Symbol)
+{
+ if(
+ (pfnSymFromAddr || (pfnSymFromAddr = (PFNSYMGETSYMFROMADDR) __GetProcAddress("SymFromAddr")))
+ )
+ return pfnSymFromAddr(hProcess, Address, Displacement, Symbol);
+ else
+ return FALSE;
+}
+
+
+static INLINE void
+debug_symbol_name_dbghelp(const void *addr, char* buf, unsigned size)
+{
+ HANDLE hProcess;
+ BYTE symbolBuffer[1024];
+ PSYMBOL_INFO pSymbol = (PSYMBOL_INFO) symbolBuffer;
+ DWORD64 dwDisplacement = 0; /* Displacement of the input address, relative to the start of the symbol */
+
+ hProcess = GetCurrentProcess();
+
+ memset(pSymbol, 0, sizeof *pSymbol);
+ pSymbol->SizeOfStruct = sizeof(symbolBuffer);
+ pSymbol->MaxNameLen = sizeof(symbolBuffer) - offsetof(SYMBOL_INFO, Name);
+
+ if(!bSymInitialized) {
+ j_SymSetOptions(/* SYMOPT_UNDNAME | */ SYMOPT_LOAD_LINES);
+ if(j_SymInitialize(hProcess, NULL, TRUE))
+ bSymInitialized = TRUE;
+ }
+
+ if(!j_SymFromAddr(hProcess, (DWORD64)(uintptr_t)addr, &dwDisplacement, pSymbol))
+ buf[0] = 0;
+ else
+ {
+ strncpy(buf, pSymbol->Name, size);
+ buf[size - 1] = 0;
+ }
+}
+#endif
+
+#ifdef __GLIBC__
+#include <execinfo.h>
+
+/* This can only provide dynamic symbols, or binary offsets into a file.
+ *
+ * To fix this, post-process the output with tools/addr2line.sh
+ */
+static INLINE void
+debug_symbol_name_glibc(const void *addr, char* buf, unsigned size)
+{
+ char** syms = backtrace_symbols((void**)&addr, 1);
+ strncpy(buf, syms[0], size);
+ buf[size - 1] = 0;
+ free(syms);
+}
+#endif
+
+void
+debug_symbol_name(const void *addr, char* buf, unsigned size)
+{
+#if defined(PIPE_OS_WINDOWS) && defined(PIPE_ARCH_X86)
+ debug_symbol_name_dbghelp(addr, buf, size);
+ if(buf[0])
+ return;
+#endif
+
+#ifdef __GLIBC__
+ debug_symbol_name_glibc(addr, buf, size);
+ if(buf[0])
+ return;
+#endif
+
+ util_snprintf(buf, size, "%p", addr);
+ buf[size - 1] = 0;
+}
+
+void
+debug_symbol_print(const void *addr)
+{
+ char buf[1024];
+ debug_symbol_name(addr, buf, sizeof(buf));
+ debug_printf("\t%s\n", buf);
+}
+
+struct util_hash_table* symbols_hash;
+pipe_static_mutex(symbols_mutex);
+
+static unsigned hash_ptr(void* p)
+{
+ return (unsigned)(uintptr_t)p;
+}
+
+static int compare_ptr(void* a, void* b)
+{
+ if(a == b)
+ return 0;
+ else if(a < b)
+ return -1;
+ else
+ return 1;
+}
+
+const char*
+debug_symbol_name_cached(const void *addr)
+{
+ const char* name;
+#ifdef PIPE_SUBSYSTEM_WINDOWS_USER
+ static boolean first = TRUE;
+
+ if (first) {
+ pipe_mutex_init(symbols_mutex);
+ first = FALSE;
+ }
+#endif
+
+ pipe_mutex_lock(symbols_mutex);
+ if(!symbols_hash)
+ symbols_hash = util_hash_table_create(hash_ptr, compare_ptr);
+ name = util_hash_table_get(symbols_hash, (void*)addr);
+ if(!name)
+ {
+ char buf[1024];
+ debug_symbol_name(addr, buf, sizeof(buf));
+ name = strdup(buf);
+
+ util_hash_table_set(symbols_hash, (void*)addr, (void*)name);
+ }
+ pipe_mutex_unlock(symbols_mutex);
+ return name;
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_debug_symbol.h b/mesalib/src/gallium/auxiliary/util/u_debug_symbol.h
index 74285e064..b247706c2 100644
--- a/mesalib/src/gallium/auxiliary/util/u_debug_symbol.h
+++ b/mesalib/src/gallium/auxiliary/util/u_debug_symbol.h
@@ -1,58 +1,58 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef U_DEBUG_SYMBOL_H_
-#define U_DEBUG_SYMBOL_H_
-
-
-/**
- * @file
- * Symbol lookup.
- *
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-void
-debug_symbol_name(const void *addr, char* buf, unsigned size);
-
-const char*
-debug_symbol_name_cached(const void *addr);
-
-void
-debug_symbol_print(const void *addr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* U_DEBUG_SYMBOL_H_ */
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef U_DEBUG_SYMBOL_H_
+#define U_DEBUG_SYMBOL_H_
+
+
+/**
+ * @file
+ * Symbol lookup.
+ *
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void
+debug_symbol_name(const void *addr, char* buf, unsigned size);
+
+const char*
+debug_symbol_name_cached(const void *addr);
+
+void
+debug_symbol_print(const void *addr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* U_DEBUG_SYMBOL_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_dirty_flags.h b/mesalib/src/gallium/auxiliary/util/u_dirty_flags.h
index 9b509d591..40539f0b0 100644
--- a/mesalib/src/gallium/auxiliary/util/u_dirty_flags.h
+++ b/mesalib/src/gallium/auxiliary/util/u_dirty_flags.h
@@ -1,32 +1,32 @@
-#ifndef U_DIRTY_FLAGS_H
-#define U_DIRTY_FLAGS_H
-
-/* Here's a convenient list of dirty flags to use in a driver. Either
- * include it directly or use it as a starting point for your own
- * list.
- */
-#define U_NEW_VIEWPORT 0x1
-#define U_NEW_RASTERIZER 0x2
-#define U_NEW_FS 0x4
-#define U_NEW_FS_CONSTANTS 0x8
-#define U_NEW_FS_SAMPLER_VIEW 0x10
-#define U_NEW_FS_SAMPLER_STATES 0x20
-#define U_NEW_VS 0x40
-#define U_NEW_VS_CONSTANTS 0x80
-#define U_NEW_VS_SAMPLER_VIEW 0x100
-#define U_NEW_VS_SAMPLER_STATES 0x200
-#define U_NEW_BLEND 0x400
-#define U_NEW_CLIP 0x800
-#define U_NEW_SCISSOR 0x1000
-#define U_NEW_POLYGON_STIPPLE 0x2000
-#define U_NEW_FRAMEBUFFER 0x4000
-#define U_NEW_VERTEX_ELEMENTS 0x8000
-#define U_NEW_VERTEX_BUFFER 0x10000
-#define U_NEW_QUERY 0x20000
-#define U_NEW_DEPTH_STENCIL 0x40000
-#define U_NEW_GS 0x80000
-#define U_NEW_GS_CONSTANTS 0x100000
-#define U_NEW_GS_SAMPLER_VIEW 0x200000
-#define U_NEW_GS_SAMPLER_STATES 0x400000
-
-#endif
+#ifndef U_DIRTY_FLAGS_H
+#define U_DIRTY_FLAGS_H
+
+/* Here's a convenient list of dirty flags to use in a driver. Either
+ * include it directly or use it as a starting point for your own
+ * list.
+ */
+#define U_NEW_VIEWPORT 0x1
+#define U_NEW_RASTERIZER 0x2
+#define U_NEW_FS 0x4
+#define U_NEW_FS_CONSTANTS 0x8
+#define U_NEW_FS_SAMPLER_VIEW 0x10
+#define U_NEW_FS_SAMPLER_STATES 0x20
+#define U_NEW_VS 0x40
+#define U_NEW_VS_CONSTANTS 0x80
+#define U_NEW_VS_SAMPLER_VIEW 0x100
+#define U_NEW_VS_SAMPLER_STATES 0x200
+#define U_NEW_BLEND 0x400
+#define U_NEW_CLIP 0x800
+#define U_NEW_SCISSOR 0x1000
+#define U_NEW_POLYGON_STIPPLE 0x2000
+#define U_NEW_FRAMEBUFFER 0x4000
+#define U_NEW_VERTEX_ELEMENTS 0x8000
+#define U_NEW_VERTEX_BUFFER 0x10000
+#define U_NEW_QUERY 0x20000
+#define U_NEW_DEPTH_STENCIL 0x40000
+#define U_NEW_GS 0x80000
+#define U_NEW_GS_CONSTANTS 0x100000
+#define U_NEW_GS_SAMPLER_VIEW 0x200000
+#define U_NEW_GS_SAMPLER_STATES 0x400000
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_dirty_surfaces.h b/mesalib/src/gallium/auxiliary/util/u_dirty_surfaces.h
index bbc3179f0..f3618d9be 100644
--- a/mesalib/src/gallium/auxiliary/util/u_dirty_surfaces.h
+++ b/mesalib/src/gallium/auxiliary/util/u_dirty_surfaces.h
@@ -1,119 +1,119 @@
-/**************************************************************************
- *
- * Copyright 2010 Luca Barbieri
- *
- * 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 (including the
- * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef U_DIRTY_SURFACES_H_
-#define U_DIRTY_SURFACES_H_
-
-#include "pipe/p_state.h"
-
-#include "util/u_double_list.h"
-#include "util/u_math.h"
-
-struct pipe_context;
-
-typedef void (*util_dirty_surface_flush_t) (struct pipe_context *, struct pipe_surface *);
-
-struct util_dirty_surfaces
-{
- struct list_head dirty_list;
-};
-
-struct util_dirty_surface
-{
- struct pipe_surface base;
- struct list_head dirty_list;
-};
-
-static INLINE void
-util_dirty_surfaces_init(struct util_dirty_surfaces *ds)
-{
- LIST_INITHEAD(&ds->dirty_list);
-}
-
-static INLINE void
-util_dirty_surfaces_use_for_sampling(struct pipe_context *pipe, struct util_dirty_surfaces *dss, util_dirty_surface_flush_t flush)
-{
- struct list_head *p, *next;
- for(p = dss->dirty_list.next; p != &dss->dirty_list; p = next)
- {
- struct util_dirty_surface *ds = LIST_ENTRY(struct util_dirty_surface, p, dirty_list);
- next = p->next;
-
- flush(pipe, &ds->base);
- }
-}
-
-static INLINE void
-util_dirty_surfaces_use_levels_for_sampling(struct pipe_context *pipe, struct util_dirty_surfaces *dss, unsigned first, unsigned last, util_dirty_surface_flush_t flush)
-{
- struct list_head *p, *next;
- if(first > last)
- return;
- for(p = dss->dirty_list.next; p != &dss->dirty_list; p = next)
- {
- struct util_dirty_surface *ds = LIST_ENTRY(struct util_dirty_surface, p, dirty_list);
- next = p->next;
-
- if(ds->base.u.tex.level >= first && ds->base.u.tex.level <= last)
- flush(pipe, &ds->base);
- }
-}
-
-static INLINE void
-util_dirty_surfaces_use_for_sampling_with(struct pipe_context *pipe, struct util_dirty_surfaces *dss, struct pipe_sampler_view *psv, struct pipe_sampler_state *pss, util_dirty_surface_flush_t flush)
-{
- if(!LIST_IS_EMPTY(&dss->dirty_list))
- util_dirty_surfaces_use_levels_for_sampling(pipe, dss, (unsigned)pss->min_lod + psv->u.tex.first_level,
- MIN2((unsigned)ceilf(pss->max_lod) + psv->u.tex.first_level, psv->u.tex.last_level), flush);
-}
-
-static INLINE void
-util_dirty_surface_init(struct util_dirty_surface *ds)
-{
- LIST_INITHEAD(&ds->dirty_list);
-}
-
-static INLINE boolean
-util_dirty_surface_is_dirty(struct util_dirty_surface *ds)
-{
- return !LIST_IS_EMPTY(&ds->dirty_list);
-}
-
-static INLINE void
-util_dirty_surface_set_dirty(struct util_dirty_surfaces *dss, struct util_dirty_surface *ds)
-{
- if(LIST_IS_EMPTY(&ds->dirty_list))
- LIST_ADDTAIL(&ds->dirty_list, &dss->dirty_list);
-}
-
-static INLINE void
-util_dirty_surface_set_clean(struct util_dirty_surfaces *dss, struct util_dirty_surface *ds)
-{
- if(!LIST_IS_EMPTY(&ds->dirty_list))
- LIST_DELINIT(&ds->dirty_list);
-}
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2010 Luca Barbieri
+ *
+ * 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 (including the
+ * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef U_DIRTY_SURFACES_H_
+#define U_DIRTY_SURFACES_H_
+
+#include "pipe/p_state.h"
+
+#include "util/u_double_list.h"
+#include "util/u_math.h"
+
+struct pipe_context;
+
+typedef void (*util_dirty_surface_flush_t) (struct pipe_context *, struct pipe_surface *);
+
+struct util_dirty_surfaces
+{
+ struct list_head dirty_list;
+};
+
+struct util_dirty_surface
+{
+ struct pipe_surface base;
+ struct list_head dirty_list;
+};
+
+static INLINE void
+util_dirty_surfaces_init(struct util_dirty_surfaces *ds)
+{
+ LIST_INITHEAD(&ds->dirty_list);
+}
+
+static INLINE void
+util_dirty_surfaces_use_for_sampling(struct pipe_context *pipe, struct util_dirty_surfaces *dss, util_dirty_surface_flush_t flush)
+{
+ struct list_head *p, *next;
+ for(p = dss->dirty_list.next; p != &dss->dirty_list; p = next)
+ {
+ struct util_dirty_surface *ds = LIST_ENTRY(struct util_dirty_surface, p, dirty_list);
+ next = p->next;
+
+ flush(pipe, &ds->base);
+ }
+}
+
+static INLINE void
+util_dirty_surfaces_use_levels_for_sampling(struct pipe_context *pipe, struct util_dirty_surfaces *dss, unsigned first, unsigned last, util_dirty_surface_flush_t flush)
+{
+ struct list_head *p, *next;
+ if(first > last)
+ return;
+ for(p = dss->dirty_list.next; p != &dss->dirty_list; p = next)
+ {
+ struct util_dirty_surface *ds = LIST_ENTRY(struct util_dirty_surface, p, dirty_list);
+ next = p->next;
+
+ if(ds->base.u.tex.level >= first && ds->base.u.tex.level <= last)
+ flush(pipe, &ds->base);
+ }
+}
+
+static INLINE void
+util_dirty_surfaces_use_for_sampling_with(struct pipe_context *pipe, struct util_dirty_surfaces *dss, struct pipe_sampler_view *psv, struct pipe_sampler_state *pss, util_dirty_surface_flush_t flush)
+{
+ if(!LIST_IS_EMPTY(&dss->dirty_list))
+ util_dirty_surfaces_use_levels_for_sampling(pipe, dss, (unsigned)pss->min_lod + psv->u.tex.first_level,
+ MIN2((unsigned)ceilf(pss->max_lod) + psv->u.tex.first_level, psv->u.tex.last_level), flush);
+}
+
+static INLINE void
+util_dirty_surface_init(struct util_dirty_surface *ds)
+{
+ LIST_INITHEAD(&ds->dirty_list);
+}
+
+static INLINE boolean
+util_dirty_surface_is_dirty(struct util_dirty_surface *ds)
+{
+ return !LIST_IS_EMPTY(&ds->dirty_list);
+}
+
+static INLINE void
+util_dirty_surface_set_dirty(struct util_dirty_surfaces *dss, struct util_dirty_surface *ds)
+{
+ if(LIST_IS_EMPTY(&ds->dirty_list))
+ LIST_ADDTAIL(&ds->dirty_list, &dss->dirty_list);
+}
+
+static INLINE void
+util_dirty_surface_set_clean(struct util_dirty_surfaces *dss, struct util_dirty_surface *ds)
+{
+ if(!LIST_IS_EMPTY(&ds->dirty_list))
+ LIST_DELINIT(&ds->dirty_list);
+}
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_dl.c b/mesalib/src/gallium/auxiliary/util/u_dl.c
index dcdb7ebdd..aca435d6c 100644
--- a/mesalib/src/gallium/auxiliary/util/u_dl.c
+++ b/mesalib/src/gallium/auxiliary/util/u_dl.c
@@ -1,94 +1,94 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * Copyright 1999-2008 Brian Paul
- * All Rights Reserved.
- *
- * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- **************************************************************************/
-
-
-#include "pipe/p_config.h"
-#include "pipe/p_compiler.h"
-
-#if defined(PIPE_OS_UNIX)
-#include <dlfcn.h>
-#endif
-#if defined(PIPE_OS_WINDOWS)
-#include <windows.h>
-#endif
-
-#include "u_dl.h"
-#include "u_pointer.h"
-
-
-struct util_dl_library *
-util_dl_open(const char *filename)
-{
-#if defined(PIPE_OS_UNIX)
- return (struct util_dl_library *)dlopen(filename, RTLD_LAZY | RTLD_GLOBAL);
-#elif defined(PIPE_OS_WINDOWS)
- return (struct util_dl_library *)LoadLibraryA(filename);
-#else
- return NULL;
-#endif
-}
-
-
-util_dl_proc
-util_dl_get_proc_address(struct util_dl_library *library,
- const char *procname)
-{
-#if defined(PIPE_OS_UNIX)
- return (util_dl_proc) pointer_to_func(dlsym((void *)library, procname));
-#elif defined(PIPE_OS_WINDOWS)
- return (util_dl_proc)GetProcAddress((HMODULE)library, procname);
-#else
- return (util_dl_proc)NULL;
-#endif
-}
-
-
-void
-util_dl_close(struct util_dl_library *library)
-{
-#if defined(PIPE_OS_UNIX)
- dlclose((void *)library);
-#elif defined(PIPE_OS_WINDOWS)
- FreeLibrary((HMODULE)library);
-#else
- (void)library;
-#endif
-}
-
-
-const char *
-util_dl_error(void)
-{
-#if defined(PIPE_OS_UNIX)
- return dlerror();
-#elif defined(PIPE_OS_WINDOWS)
- return "unknown error";
-#else
- return "unknown error";
-#endif
-}
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * Copyright 1999-2008 Brian Paul
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ **************************************************************************/
+
+
+#include "pipe/p_config.h"
+#include "pipe/p_compiler.h"
+
+#if defined(PIPE_OS_UNIX)
+#include <dlfcn.h>
+#endif
+#if defined(PIPE_OS_WINDOWS)
+#include <windows.h>
+#endif
+
+#include "u_dl.h"
+#include "u_pointer.h"
+
+
+struct util_dl_library *
+util_dl_open(const char *filename)
+{
+#if defined(PIPE_OS_UNIX)
+ return (struct util_dl_library *)dlopen(filename, RTLD_LAZY | RTLD_GLOBAL);
+#elif defined(PIPE_OS_WINDOWS)
+ return (struct util_dl_library *)LoadLibraryA(filename);
+#else
+ return NULL;
+#endif
+}
+
+
+util_dl_proc
+util_dl_get_proc_address(struct util_dl_library *library,
+ const char *procname)
+{
+#if defined(PIPE_OS_UNIX)
+ return (util_dl_proc) pointer_to_func(dlsym((void *)library, procname));
+#elif defined(PIPE_OS_WINDOWS)
+ return (util_dl_proc)GetProcAddress((HMODULE)library, procname);
+#else
+ return (util_dl_proc)NULL;
+#endif
+}
+
+
+void
+util_dl_close(struct util_dl_library *library)
+{
+#if defined(PIPE_OS_UNIX)
+ dlclose((void *)library);
+#elif defined(PIPE_OS_WINDOWS)
+ FreeLibrary((HMODULE)library);
+#else
+ (void)library;
+#endif
+}
+
+
+const char *
+util_dl_error(void)
+{
+#if defined(PIPE_OS_UNIX)
+ return dlerror();
+#elif defined(PIPE_OS_WINDOWS)
+ return "unknown error";
+#else
+ return "unknown error";
+#endif
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_dl.h b/mesalib/src/gallium/auxiliary/util/u_dl.h
index b24183494..80a00ed67 100644
--- a/mesalib/src/gallium/auxiliary/util/u_dl.h
+++ b/mesalib/src/gallium/auxiliary/util/u_dl.h
@@ -1,83 +1,83 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- **************************************************************************/
-
-
-#ifndef U_DL_H_
-#define U_DL_H_
-
-
-#include "pipe/p_config.h"
-
-
-#if defined(PIPE_OS_WINDOWS)
-# define UTIL_DL_EXT ".dll"
-# define UTIL_DL_PREFIX ""
-#elif defined(PIPE_OS_APPLE)
-# define UTIL_DL_EXT ".dylib"
-# define UTIL_DL_PREFIX "lib"
-#else
-# define UTIL_DL_EXT ".so"
-# define UTIL_DL_PREFIX "lib"
-#endif
-
-
-struct util_dl_library;
-
-
-typedef void (*util_dl_proc)(void);
-
-
-/**
- * Open a library dynamically.
- */
-struct util_dl_library *
-util_dl_open(const char *filename);
-
-
-/**
- * Lookup a function in a library.
- */
-util_dl_proc
-util_dl_get_proc_address(struct util_dl_library *library,
- const char *procname);
-
-
-/**
- * Close a library.
- */
-void
-util_dl_close(struct util_dl_library *library);
-
-
-/**
- * Return most recent error message.
- */
-const char *
-util_dl_error(void);
-
-
-#endif /* U_DL_H_ */
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ **************************************************************************/
+
+
+#ifndef U_DL_H_
+#define U_DL_H_
+
+
+#include "pipe/p_config.h"
+
+
+#if defined(PIPE_OS_WINDOWS)
+# define UTIL_DL_EXT ".dll"
+# define UTIL_DL_PREFIX ""
+#elif defined(PIPE_OS_APPLE)
+# define UTIL_DL_EXT ".dylib"
+# define UTIL_DL_PREFIX "lib"
+#else
+# define UTIL_DL_EXT ".so"
+# define UTIL_DL_PREFIX "lib"
+#endif
+
+
+struct util_dl_library;
+
+
+typedef void (*util_dl_proc)(void);
+
+
+/**
+ * Open a library dynamically.
+ */
+struct util_dl_library *
+util_dl_open(const char *filename);
+
+
+/**
+ * Lookup a function in a library.
+ */
+util_dl_proc
+util_dl_get_proc_address(struct util_dl_library *library,
+ const char *procname);
+
+
+/**
+ * Close a library.
+ */
+void
+util_dl_close(struct util_dl_library *library);
+
+
+/**
+ * Return most recent error message.
+ */
+const char *
+util_dl_error(void);
+
+
+#endif /* U_DL_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_dump_defines.c b/mesalib/src/gallium/auxiliary/util/u_dump_defines.c
index 0a00195aa..692d4447c 100644
--- a/mesalib/src/gallium/auxiliary/util/u_dump_defines.c
+++ b/mesalib/src/gallium/auxiliary/util/u_dump_defines.c
@@ -1,336 +1,336 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#include "util/u_memory.h"
-#include "util/u_debug.h"
-#include "util/u_dump.h"
-
-
-#if 0
-static const char *
-util_dump_strip_prefix(const char *name,
- const char *prefix)
-{
- const char *stripped;
- assert(name);
- assert(prefix);
- stripped = name;
- while(*prefix) {
- if(*stripped != *prefix)
- return name;
-
- ++stripped;
- ++prefix;
- }
- return stripped;
-}
-#endif
-
-static const char *
-util_dump_enum_continuous(unsigned value,
- unsigned num_names,
- const char **names)
-{
- if (value >= num_names)
- return UTIL_DUMP_INVALID_NAME;
- return names[value];
-}
-
-
-#define DEFINE_UTIL_DUMP_CONTINUOUS(_name) \
- const char * \
- util_dump_##_name(unsigned value, boolean shortened) \
- { \
- if(shortened) \
- return util_dump_enum_continuous(value, Elements(util_dump_##_name##_short_names), util_dump_##_name##_short_names); \
- else \
- return util_dump_enum_continuous(value, Elements(util_dump_##_name##_names), util_dump_##_name##_names); \
- }
-
-
-static const char *
-util_dump_blend_factor_names[] = {
- UTIL_DUMP_INVALID_NAME, /* 0x0 */
- "PIPE_BLENDFACTOR_ONE",
- "PIPE_BLENDFACTOR_SRC_COLOR",
- "PIPE_BLENDFACTOR_SRC_ALPHA",
- "PIPE_BLENDFACTOR_DST_ALPHA",
- "PIPE_BLENDFACTOR_DST_COLOR",
- "PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE",
- "PIPE_BLENDFACTOR_CONST_COLOR",
- "PIPE_BLENDFACTOR_CONST_ALPHA",
- "PIPE_BLENDFACTOR_SRC1_COLOR",
- "PIPE_BLENDFACTOR_SRC1_ALPHA",
- UTIL_DUMP_INVALID_NAME, /* 0x0b */
- UTIL_DUMP_INVALID_NAME, /* 0x0c */
- UTIL_DUMP_INVALID_NAME, /* 0x0d */
- UTIL_DUMP_INVALID_NAME, /* 0x0e */
- UTIL_DUMP_INVALID_NAME, /* 0x0f */
- UTIL_DUMP_INVALID_NAME, /* 0x10 */
- "PIPE_BLENDFACTOR_ZERO",
- "PIPE_BLENDFACTOR_INV_SRC_COLOR",
- "PIPE_BLENDFACTOR_INV_SRC_ALPHA",
- "PIPE_BLENDFACTOR_INV_DST_ALPHA",
- "PIPE_BLENDFACTOR_INV_DST_COLOR",
- UTIL_DUMP_INVALID_NAME, /* 0x16 */
- "PIPE_BLENDFACTOR_INV_CONST_COLOR",
- "PIPE_BLENDFACTOR_INV_CONST_ALPHA",
- "PIPE_BLENDFACTOR_INV_SRC1_COLOR",
- "PIPE_BLENDFACTOR_INV_SRC1_ALPHA"
-};
-
-static const char *
-util_dump_blend_factor_short_names[] = {
- UTIL_DUMP_INVALID_NAME, /* 0x0 */
- "one",
- "src_color",
- "src_alpha",
- "dst_alpha",
- "dst_color",
- "src_alpha_saturate",
- "const_color",
- "const_alpha",
- "src1_color",
- "src1_alpha",
- UTIL_DUMP_INVALID_NAME, /* 0x0b */
- UTIL_DUMP_INVALID_NAME, /* 0x0c */
- UTIL_DUMP_INVALID_NAME, /* 0x0d */
- UTIL_DUMP_INVALID_NAME, /* 0x0e */
- UTIL_DUMP_INVALID_NAME, /* 0x0f */
- UTIL_DUMP_INVALID_NAME, /* 0x10 */
- "zero",
- "inv_src_color",
- "inv_src_alpha",
- "inv_dst_alpha",
- "inv_dst_color",
- UTIL_DUMP_INVALID_NAME, /* 0x16 */
- "inv_const_color",
- "inv_const_alpha",
- "inv_src1_color",
- "inv_src1_alpha"
-};
-
-DEFINE_UTIL_DUMP_CONTINUOUS(blend_factor)
-
-
-static const char *
-util_dump_blend_func_names[] = {
- "PIPE_BLEND_ADD",
- "PIPE_BLEND_SUBTRACT",
- "PIPE_BLEND_REVERSE_SUBTRACT",
- "PIPE_BLEND_MIN",
- "PIPE_BLEND_MAX"
-};
-
-static const char *
-util_dump_blend_func_short_names[] = {
- "add",
- "sub",
- "rev_sub",
- "min",
- "max"
-};
-
-DEFINE_UTIL_DUMP_CONTINUOUS(blend_func)
-
-
-static const char *
-util_dump_logicop_names[] = {
- "PIPE_LOGICOP_CLEAR",
- "PIPE_LOGICOP_NOR",
- "PIPE_LOGICOP_AND_INVERTED",
- "PIPE_LOGICOP_COPY_INVERTED",
- "PIPE_LOGICOP_AND_REVERSE",
- "PIPE_LOGICOP_INVERT",
- "PIPE_LOGICOP_XOR",
- "PIPE_LOGICOP_NAND",
- "PIPE_LOGICOP_AND",
- "PIPE_LOGICOP_EQUIV",
- "PIPE_LOGICOP_NOOP",
- "PIPE_LOGICOP_OR_INVERTED",
- "PIPE_LOGICOP_COPY",
- "PIPE_LOGICOP_OR_REVERSE",
- "PIPE_LOGICOP_OR",
- "PIPE_LOGICOP_SET"
-};
-
-static const char *
-util_dump_logicop_short_names[] = {
- "clear",
- "nor",
- "and_inverted",
- "copy_inverted",
- "and_reverse",
- "invert",
- "xor",
- "nand",
- "and",
- "equiv",
- "noop",
- "or_inverted",
- "copy",
- "or_reverse",
- "or",
- "set"
-};
-
-DEFINE_UTIL_DUMP_CONTINUOUS(logicop)
-
-
-static const char *
-util_dump_func_names[] = {
- "PIPE_FUNC_NEVER",
- "PIPE_FUNC_LESS",
- "PIPE_FUNC_EQUAL",
- "PIPE_FUNC_LEQUAL",
- "PIPE_FUNC_GREATER",
- "PIPE_FUNC_NOTEQUAL",
- "PIPE_FUNC_GEQUAL",
- "PIPE_FUNC_ALWAYS"
-};
-
-static const char *
-util_dump_func_short_names[] = {
- "never",
- "less",
- "equal",
- "less_equal",
- "greater",
- "not_equal",
- "greater_equal",
- "always"
-};
-
-DEFINE_UTIL_DUMP_CONTINUOUS(func)
-
-
-static const char *
-util_dump_stencil_op_names[] = {
- "PIPE_STENCIL_OP_KEEP",
- "PIPE_STENCIL_OP_ZERO",
- "PIPE_STENCIL_OP_REPLACE",
- "PIPE_STENCIL_OP_INCR",
- "PIPE_STENCIL_OP_DECR",
- "PIPE_STENCIL_OP_INCR_WRAP",
- "PIPE_STENCIL_OP_DECR_WRAP",
- "PIPE_STENCIL_OP_INVERT"
-};
-
-static const char *
-util_dump_stencil_op_short_names[] = {
- "keep",
- "zero",
- "replace",
- "incr",
- "decr",
- "incr_wrap",
- "decr_wrap",
- "invert"
-};
-
-DEFINE_UTIL_DUMP_CONTINUOUS(stencil_op)
-
-
-static const char *
-util_dump_tex_target_names[] = {
- "PIPE_BUFFER",
- "PIPE_TEXTURE_1D",
- "PIPE_TEXTURE_2D",
- "PIPE_TEXTURE_3D",
- "PIPE_TEXTURE_CUBE"
-};
-
-static const char *
-util_dump_tex_target_short_names[] = {
- "buffer",
- "1d",
- "2d",
- "3d",
- "cube"
-};
-
-DEFINE_UTIL_DUMP_CONTINUOUS(tex_target)
-
-
-static const char *
-util_dump_tex_wrap_names[] = {
- "PIPE_TEX_WRAP_REPEAT",
- "PIPE_TEX_WRAP_CLAMP",
- "PIPE_TEX_WRAP_CLAMP_TO_EDGE",
- "PIPE_TEX_WRAP_CLAMP_TO_BORDER",
- "PIPE_TEX_WRAP_MIRROR_REPEAT",
- "PIPE_TEX_WRAP_MIRROR_CLAMP",
- "PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE",
- "PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER"
-};
-
-static const char *
-util_dump_tex_wrap_short_names[] = {
- "repeat",
- "clamp",
- "clamp_to_edge",
- "clamp_to_border",
- "mirror_repeat",
- "mirror_clamp",
- "mirror_clamp_to_edge",
- "mirror_clamp_to_border"
-};
-
-DEFINE_UTIL_DUMP_CONTINUOUS(tex_wrap)
-
-
-static const char *
-util_dump_tex_mipfilter_names[] = {
- "PIPE_TEX_MIPFILTER_NEAREST",
- "PIPE_TEX_MIPFILTER_LINEAR",
- "PIPE_TEX_MIPFILTER_NONE"
-};
-
-static const char *
-util_dump_tex_mipfilter_short_names[] = {
- "nearest",
- "linear",
- "none"
-};
-
-DEFINE_UTIL_DUMP_CONTINUOUS(tex_mipfilter)
-
-
-static const char *
-util_dump_tex_filter_names[] = {
- "PIPE_TEX_FILTER_NEAREST",
- "PIPE_TEX_FILTER_LINEAR"
-};
-
-static const char *
-util_dump_tex_filter_short_names[] = {
- "nearest",
- "linear"
-};
-
-DEFINE_UTIL_DUMP_CONTINUOUS(tex_filter)
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#include "util/u_memory.h"
+#include "util/u_debug.h"
+#include "util/u_dump.h"
+
+
+#if 0
+static const char *
+util_dump_strip_prefix(const char *name,
+ const char *prefix)
+{
+ const char *stripped;
+ assert(name);
+ assert(prefix);
+ stripped = name;
+ while(*prefix) {
+ if(*stripped != *prefix)
+ return name;
+
+ ++stripped;
+ ++prefix;
+ }
+ return stripped;
+}
+#endif
+
+static const char *
+util_dump_enum_continuous(unsigned value,
+ unsigned num_names,
+ const char **names)
+{
+ if (value >= num_names)
+ return UTIL_DUMP_INVALID_NAME;
+ return names[value];
+}
+
+
+#define DEFINE_UTIL_DUMP_CONTINUOUS(_name) \
+ const char * \
+ util_dump_##_name(unsigned value, boolean shortened) \
+ { \
+ if(shortened) \
+ return util_dump_enum_continuous(value, Elements(util_dump_##_name##_short_names), util_dump_##_name##_short_names); \
+ else \
+ return util_dump_enum_continuous(value, Elements(util_dump_##_name##_names), util_dump_##_name##_names); \
+ }
+
+
+static const char *
+util_dump_blend_factor_names[] = {
+ UTIL_DUMP_INVALID_NAME, /* 0x0 */
+ "PIPE_BLENDFACTOR_ONE",
+ "PIPE_BLENDFACTOR_SRC_COLOR",
+ "PIPE_BLENDFACTOR_SRC_ALPHA",
+ "PIPE_BLENDFACTOR_DST_ALPHA",
+ "PIPE_BLENDFACTOR_DST_COLOR",
+ "PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE",
+ "PIPE_BLENDFACTOR_CONST_COLOR",
+ "PIPE_BLENDFACTOR_CONST_ALPHA",
+ "PIPE_BLENDFACTOR_SRC1_COLOR",
+ "PIPE_BLENDFACTOR_SRC1_ALPHA",
+ UTIL_DUMP_INVALID_NAME, /* 0x0b */
+ UTIL_DUMP_INVALID_NAME, /* 0x0c */
+ UTIL_DUMP_INVALID_NAME, /* 0x0d */
+ UTIL_DUMP_INVALID_NAME, /* 0x0e */
+ UTIL_DUMP_INVALID_NAME, /* 0x0f */
+ UTIL_DUMP_INVALID_NAME, /* 0x10 */
+ "PIPE_BLENDFACTOR_ZERO",
+ "PIPE_BLENDFACTOR_INV_SRC_COLOR",
+ "PIPE_BLENDFACTOR_INV_SRC_ALPHA",
+ "PIPE_BLENDFACTOR_INV_DST_ALPHA",
+ "PIPE_BLENDFACTOR_INV_DST_COLOR",
+ UTIL_DUMP_INVALID_NAME, /* 0x16 */
+ "PIPE_BLENDFACTOR_INV_CONST_COLOR",
+ "PIPE_BLENDFACTOR_INV_CONST_ALPHA",
+ "PIPE_BLENDFACTOR_INV_SRC1_COLOR",
+ "PIPE_BLENDFACTOR_INV_SRC1_ALPHA"
+};
+
+static const char *
+util_dump_blend_factor_short_names[] = {
+ UTIL_DUMP_INVALID_NAME, /* 0x0 */
+ "one",
+ "src_color",
+ "src_alpha",
+ "dst_alpha",
+ "dst_color",
+ "src_alpha_saturate",
+ "const_color",
+ "const_alpha",
+ "src1_color",
+ "src1_alpha",
+ UTIL_DUMP_INVALID_NAME, /* 0x0b */
+ UTIL_DUMP_INVALID_NAME, /* 0x0c */
+ UTIL_DUMP_INVALID_NAME, /* 0x0d */
+ UTIL_DUMP_INVALID_NAME, /* 0x0e */
+ UTIL_DUMP_INVALID_NAME, /* 0x0f */
+ UTIL_DUMP_INVALID_NAME, /* 0x10 */
+ "zero",
+ "inv_src_color",
+ "inv_src_alpha",
+ "inv_dst_alpha",
+ "inv_dst_color",
+ UTIL_DUMP_INVALID_NAME, /* 0x16 */
+ "inv_const_color",
+ "inv_const_alpha",
+ "inv_src1_color",
+ "inv_src1_alpha"
+};
+
+DEFINE_UTIL_DUMP_CONTINUOUS(blend_factor)
+
+
+static const char *
+util_dump_blend_func_names[] = {
+ "PIPE_BLEND_ADD",
+ "PIPE_BLEND_SUBTRACT",
+ "PIPE_BLEND_REVERSE_SUBTRACT",
+ "PIPE_BLEND_MIN",
+ "PIPE_BLEND_MAX"
+};
+
+static const char *
+util_dump_blend_func_short_names[] = {
+ "add",
+ "sub",
+ "rev_sub",
+ "min",
+ "max"
+};
+
+DEFINE_UTIL_DUMP_CONTINUOUS(blend_func)
+
+
+static const char *
+util_dump_logicop_names[] = {
+ "PIPE_LOGICOP_CLEAR",
+ "PIPE_LOGICOP_NOR",
+ "PIPE_LOGICOP_AND_INVERTED",
+ "PIPE_LOGICOP_COPY_INVERTED",
+ "PIPE_LOGICOP_AND_REVERSE",
+ "PIPE_LOGICOP_INVERT",
+ "PIPE_LOGICOP_XOR",
+ "PIPE_LOGICOP_NAND",
+ "PIPE_LOGICOP_AND",
+ "PIPE_LOGICOP_EQUIV",
+ "PIPE_LOGICOP_NOOP",
+ "PIPE_LOGICOP_OR_INVERTED",
+ "PIPE_LOGICOP_COPY",
+ "PIPE_LOGICOP_OR_REVERSE",
+ "PIPE_LOGICOP_OR",
+ "PIPE_LOGICOP_SET"
+};
+
+static const char *
+util_dump_logicop_short_names[] = {
+ "clear",
+ "nor",
+ "and_inverted",
+ "copy_inverted",
+ "and_reverse",
+ "invert",
+ "xor",
+ "nand",
+ "and",
+ "equiv",
+ "noop",
+ "or_inverted",
+ "copy",
+ "or_reverse",
+ "or",
+ "set"
+};
+
+DEFINE_UTIL_DUMP_CONTINUOUS(logicop)
+
+
+static const char *
+util_dump_func_names[] = {
+ "PIPE_FUNC_NEVER",
+ "PIPE_FUNC_LESS",
+ "PIPE_FUNC_EQUAL",
+ "PIPE_FUNC_LEQUAL",
+ "PIPE_FUNC_GREATER",
+ "PIPE_FUNC_NOTEQUAL",
+ "PIPE_FUNC_GEQUAL",
+ "PIPE_FUNC_ALWAYS"
+};
+
+static const char *
+util_dump_func_short_names[] = {
+ "never",
+ "less",
+ "equal",
+ "less_equal",
+ "greater",
+ "not_equal",
+ "greater_equal",
+ "always"
+};
+
+DEFINE_UTIL_DUMP_CONTINUOUS(func)
+
+
+static const char *
+util_dump_stencil_op_names[] = {
+ "PIPE_STENCIL_OP_KEEP",
+ "PIPE_STENCIL_OP_ZERO",
+ "PIPE_STENCIL_OP_REPLACE",
+ "PIPE_STENCIL_OP_INCR",
+ "PIPE_STENCIL_OP_DECR",
+ "PIPE_STENCIL_OP_INCR_WRAP",
+ "PIPE_STENCIL_OP_DECR_WRAP",
+ "PIPE_STENCIL_OP_INVERT"
+};
+
+static const char *
+util_dump_stencil_op_short_names[] = {
+ "keep",
+ "zero",
+ "replace",
+ "incr",
+ "decr",
+ "incr_wrap",
+ "decr_wrap",
+ "invert"
+};
+
+DEFINE_UTIL_DUMP_CONTINUOUS(stencil_op)
+
+
+static const char *
+util_dump_tex_target_names[] = {
+ "PIPE_BUFFER",
+ "PIPE_TEXTURE_1D",
+ "PIPE_TEXTURE_2D",
+ "PIPE_TEXTURE_3D",
+ "PIPE_TEXTURE_CUBE"
+};
+
+static const char *
+util_dump_tex_target_short_names[] = {
+ "buffer",
+ "1d",
+ "2d",
+ "3d",
+ "cube"
+};
+
+DEFINE_UTIL_DUMP_CONTINUOUS(tex_target)
+
+
+static const char *
+util_dump_tex_wrap_names[] = {
+ "PIPE_TEX_WRAP_REPEAT",
+ "PIPE_TEX_WRAP_CLAMP",
+ "PIPE_TEX_WRAP_CLAMP_TO_EDGE",
+ "PIPE_TEX_WRAP_CLAMP_TO_BORDER",
+ "PIPE_TEX_WRAP_MIRROR_REPEAT",
+ "PIPE_TEX_WRAP_MIRROR_CLAMP",
+ "PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE",
+ "PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER"
+};
+
+static const char *
+util_dump_tex_wrap_short_names[] = {
+ "repeat",
+ "clamp",
+ "clamp_to_edge",
+ "clamp_to_border",
+ "mirror_repeat",
+ "mirror_clamp",
+ "mirror_clamp_to_edge",
+ "mirror_clamp_to_border"
+};
+
+DEFINE_UTIL_DUMP_CONTINUOUS(tex_wrap)
+
+
+static const char *
+util_dump_tex_mipfilter_names[] = {
+ "PIPE_TEX_MIPFILTER_NEAREST",
+ "PIPE_TEX_MIPFILTER_LINEAR",
+ "PIPE_TEX_MIPFILTER_NONE"
+};
+
+static const char *
+util_dump_tex_mipfilter_short_names[] = {
+ "nearest",
+ "linear",
+ "none"
+};
+
+DEFINE_UTIL_DUMP_CONTINUOUS(tex_mipfilter)
+
+
+static const char *
+util_dump_tex_filter_names[] = {
+ "PIPE_TEX_FILTER_NEAREST",
+ "PIPE_TEX_FILTER_LINEAR"
+};
+
+static const char *
+util_dump_tex_filter_short_names[] = {
+ "nearest",
+ "linear"
+};
+
+DEFINE_UTIL_DUMP_CONTINUOUS(tex_filter)
diff --git a/mesalib/src/gallium/auxiliary/util/u_dynarray.h b/mesalib/src/gallium/auxiliary/util/u_dynarray.h
index 4dd6c3eaa..980cadf22 100644
--- a/mesalib/src/gallium/auxiliary/util/u_dynarray.h
+++ b/mesalib/src/gallium/auxiliary/util/u_dynarray.h
@@ -1,114 +1,114 @@
-/**************************************************************************
- *
- * Copyright 2010 Luca Barbieri
- *
- * 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 (including the
- * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef U_DYNARRAY_H
-#define U_DYNARRAY_H
-
-#include "pipe/p_compiler.h"
-#include "util/u_memory.h"
-
-/* A zero-initialized version of this is guaranteed to represent an
- * empty array.
- *
- * Also, size <= capacity and data != 0 if and only if capacity != 0
- * capacity will always be the allocation size of data
- */
-struct util_dynarray
-{
- void *data;
- unsigned size;
- unsigned capacity;
-};
-
-static INLINE void
-util_dynarray_init(struct util_dynarray *buf)
-{
- memset(buf, 0, sizeof(*buf));
-}
-
-static INLINE void
-util_dynarray_fini(struct util_dynarray *buf)
-{
- if(buf->data)
- {
- FREE(buf->data);
- util_dynarray_init(buf);
- }
-}
-
-/* use util_dynarray_trim to reduce the allocated storage */
-static INLINE void *
-util_dynarray_resize(struct util_dynarray *buf, unsigned newsize)
-{
- char *p;
- if(newsize > buf->capacity)
- {
- unsigned newcap = buf->capacity << 1;
- if(newsize > newcap)
- newcap = newsize;
- buf->data = REALLOC(buf->data, buf->capacity, newcap);
- buf->capacity = newcap;
- }
-
- p = (char *)buf->data + buf->size;
- buf->size = newsize;
- return p;
-}
-
-static INLINE void *
-util_dynarray_grow(struct util_dynarray *buf, int diff)
-{
- return util_dynarray_resize(buf, buf->size + diff);
-}
-
-static INLINE void
-util_dynarray_trim(struct util_dynarray *buf)
-{
- if (buf->size != buf->capacity) {
- if (buf->size) {
- buf->data = REALLOC(buf->data, buf->capacity, buf->size);
- buf->capacity = buf->size;
- }
- else {
- FREE(buf->data);
- buf->data = 0;
- buf->capacity = 0;
- }
- }
-}
-
-#define util_dynarray_append(buf, type, v) do {type __v = (v); memcpy(util_dynarray_grow((buf), sizeof(type)), &__v, sizeof(type));} while(0)
-#define util_dynarray_top_ptr(buf, type) (type*)((char*)(buf)->data + (buf)->size - sizeof(type))
-#define util_dynarray_top(buf, type) *util_dynarray_top_ptr(buf, type)
-#define util_dynarray_pop_ptr(buf, type) (type*)((char*)(buf)->data + ((buf)->size -= sizeof(type)))
-#define util_dynarray_pop(buf, type) *util_dynarray_pop_ptr(buf, type)
-#define util_dynarray_contains(buf, type) ((buf)->size >= sizeof(type))
-#define util_dynarray_element(buf, type, idx) ((type*)(buf)->data + (idx))
-#define util_dynarray_begin(buf) ((buf)->data)
-#define util_dynarray_end(buf) ((void*)util_dynarray_element((buf), char, (buf)->size))
-
-#endif /* U_DYNARRAY_H */
-
+/**************************************************************************
+ *
+ * Copyright 2010 Luca Barbieri
+ *
+ * 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 (including the
+ * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef U_DYNARRAY_H
+#define U_DYNARRAY_H
+
+#include "pipe/p_compiler.h"
+#include "util/u_memory.h"
+
+/* A zero-initialized version of this is guaranteed to represent an
+ * empty array.
+ *
+ * Also, size <= capacity and data != 0 if and only if capacity != 0
+ * capacity will always be the allocation size of data
+ */
+struct util_dynarray
+{
+ void *data;
+ unsigned size;
+ unsigned capacity;
+};
+
+static INLINE void
+util_dynarray_init(struct util_dynarray *buf)
+{
+ memset(buf, 0, sizeof(*buf));
+}
+
+static INLINE void
+util_dynarray_fini(struct util_dynarray *buf)
+{
+ if(buf->data)
+ {
+ FREE(buf->data);
+ util_dynarray_init(buf);
+ }
+}
+
+/* use util_dynarray_trim to reduce the allocated storage */
+static INLINE void *
+util_dynarray_resize(struct util_dynarray *buf, unsigned newsize)
+{
+ char *p;
+ if(newsize > buf->capacity)
+ {
+ unsigned newcap = buf->capacity << 1;
+ if(newsize > newcap)
+ newcap = newsize;
+ buf->data = REALLOC(buf->data, buf->capacity, newcap);
+ buf->capacity = newcap;
+ }
+
+ p = (char *)buf->data + buf->size;
+ buf->size = newsize;
+ return p;
+}
+
+static INLINE void *
+util_dynarray_grow(struct util_dynarray *buf, int diff)
+{
+ return util_dynarray_resize(buf, buf->size + diff);
+}
+
+static INLINE void
+util_dynarray_trim(struct util_dynarray *buf)
+{
+ if (buf->size != buf->capacity) {
+ if (buf->size) {
+ buf->data = REALLOC(buf->data, buf->capacity, buf->size);
+ buf->capacity = buf->size;
+ }
+ else {
+ FREE(buf->data);
+ buf->data = 0;
+ buf->capacity = 0;
+ }
+ }
+}
+
+#define util_dynarray_append(buf, type, v) do {type __v = (v); memcpy(util_dynarray_grow((buf), sizeof(type)), &__v, sizeof(type));} while(0)
+#define util_dynarray_top_ptr(buf, type) (type*)((char*)(buf)->data + (buf)->size - sizeof(type))
+#define util_dynarray_top(buf, type) *util_dynarray_top_ptr(buf, type)
+#define util_dynarray_pop_ptr(buf, type) (type*)((char*)(buf)->data + ((buf)->size -= sizeof(type)))
+#define util_dynarray_pop(buf, type) *util_dynarray_pop_ptr(buf, type)
+#define util_dynarray_contains(buf, type) ((buf)->size >= sizeof(type))
+#define util_dynarray_element(buf, type, idx) ((type*)(buf)->data + (idx))
+#define util_dynarray_begin(buf) ((buf)->data)
+#define util_dynarray_end(buf) ((void*)util_dynarray_element((buf), char, (buf)->size))
+
+#endif /* U_DYNARRAY_H */
+
diff --git a/mesalib/src/gallium/auxiliary/util/u_fifo.h b/mesalib/src/gallium/auxiliary/util/u_fifo.h
index 7c13f119e..9e007de1a 100644
--- a/mesalib/src/gallium/auxiliary/util/u_fifo.h
+++ b/mesalib/src/gallium/auxiliary/util/u_fifo.h
@@ -1,94 +1,94 @@
-/**************************************************************************
- *
- * Copyright © 2009 Jakob Bornecrantz
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- **************************************************************************/
-
-#ifndef U_FIFO_H
-#define U_FIFO_H
-
-#include "util/u_memory.h"
-
-struct util_fifo
-{
- size_t head;
- size_t tail;
- size_t num;
- size_t size;
-};
-
-static INLINE struct util_fifo *
-u_fifo_create(size_t size)
-{
- struct util_fifo *fifo;
- fifo = MALLOC(sizeof(*fifo) + size * sizeof(void*));
-
- fifo->head = 0;
- fifo->tail = 0;
- fifo->num = 0;
- fifo->size = size;
-
- return fifo;
-}
-
-static INLINE boolean
-u_fifo_add(struct util_fifo *fifo, void *ptr)
-{
- void **array = (void**)&fifo[1];
- if (fifo->num >= fifo->size)
- return FALSE;
-
- if (++fifo->head >= fifo->size)
- fifo->head = 0;
-
- array[fifo->head] = ptr;
-
- ++fifo->num;
-
- return TRUE;
-}
-
-static INLINE boolean
-u_fifo_pop(struct util_fifo *fifo, void **ptr)
-{
- void **array = (void**)&fifo[1];
-
- if (!fifo->num)
- return FALSE;
-
- if (++fifo->tail >= fifo->size)
- fifo->tail = 0;
-
- *ptr = array[fifo->tail];
-
- ++fifo->num;
-
- return TRUE;
-}
-
-static INLINE void
-u_fifo_destroy(struct util_fifo *fifo)
-{
- FREE(fifo);
-}
-
-#endif
+/**************************************************************************
+ *
+ * Copyright © 2009 Jakob Bornecrantz
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ **************************************************************************/
+
+#ifndef U_FIFO_H
+#define U_FIFO_H
+
+#include "util/u_memory.h"
+
+struct util_fifo
+{
+ size_t head;
+ size_t tail;
+ size_t num;
+ size_t size;
+};
+
+static INLINE struct util_fifo *
+u_fifo_create(size_t size)
+{
+ struct util_fifo *fifo;
+ fifo = MALLOC(sizeof(*fifo) + size * sizeof(void*));
+
+ fifo->head = 0;
+ fifo->tail = 0;
+ fifo->num = 0;
+ fifo->size = size;
+
+ return fifo;
+}
+
+static INLINE boolean
+u_fifo_add(struct util_fifo *fifo, void *ptr)
+{
+ void **array = (void**)&fifo[1];
+ if (fifo->num >= fifo->size)
+ return FALSE;
+
+ if (++fifo->head >= fifo->size)
+ fifo->head = 0;
+
+ array[fifo->head] = ptr;
+
+ ++fifo->num;
+
+ return TRUE;
+}
+
+static INLINE boolean
+u_fifo_pop(struct util_fifo *fifo, void **ptr)
+{
+ void **array = (void**)&fifo[1];
+
+ if (!fifo->num)
+ return FALSE;
+
+ if (++fifo->tail >= fifo->size)
+ fifo->tail = 0;
+
+ *ptr = array[fifo->tail];
+
+ ++fifo->num;
+
+ return TRUE;
+}
+
+static INLINE void
+u_fifo_destroy(struct util_fifo *fifo)
+{
+ FREE(fifo);
+}
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_latc.h b/mesalib/src/gallium/auxiliary/util/u_format_latc.h
index 324717215..1f0888753 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format_latc.h
+++ b/mesalib/src/gallium/auxiliary/util/u_format_latc.h
@@ -1,108 +1,108 @@
-/**************************************************************************
- *
- * Copyright 2011 Red Hat Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- **************************************************************************/
-
-#ifndef U_FORMAT_LATC_H_
-#define U_FORMAT_LATC_H_
-
-void
-util_format_latc1_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_latc1_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc1_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc1_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc1_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc1_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-
-
-void
-util_format_latc1_snorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_latc1_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc1_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc1_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc1_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc1_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-
-void
-util_format_latc2_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_latc2_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc2_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc2_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc2_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc2_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-
-void
-util_format_latc2_snorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_latc2_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc2_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc2_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc2_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_latc2_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2011 Red Hat Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ **************************************************************************/
+
+#ifndef U_FORMAT_LATC_H_
+#define U_FORMAT_LATC_H_
+
+void
+util_format_latc1_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_latc1_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc1_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc1_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc1_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc1_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+
+
+void
+util_format_latc1_snorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_latc1_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc1_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc1_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc1_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc1_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+
+void
+util_format_latc2_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_latc2_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc2_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc2_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc2_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc2_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+
+void
+util_format_latc2_snorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_latc2_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc2_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc2_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc2_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_latc2_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_other.c b/mesalib/src/gallium/auxiliary/util/u_format_other.c
index b6173a12e..c23f4ee4a 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format_other.c
+++ b/mesalib/src/gallium/auxiliary/util/u_format_other.c
@@ -1,472 +1,472 @@
-/**************************************************************************
- *
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- **************************************************************************/
-
-
-#include "u_math.h"
-#include "u_format_other.h"
-#include "u_format_rgb9e5.h"
-#include "u_format_r11g11b10f.h"
-
-
-void
-util_format_r9g9b9e5_float_unpack_rgba_float(float *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
- for(y = 0; y < height; y += 1) {
- float *dst = dst_row;
- const uint8_t *src = src_row;
- for(x = 0; x < width; x += 1) {
- uint32_t value = *(const uint32_t *)src;
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
- rgb9e5_to_float3(value, dst);
- dst[3] = 1; /* a */
- src += 4;
- dst += 4;
- }
- src_row += src_stride;
- dst_row += dst_stride/sizeof(*dst_row);
- }
-}
-
-void
-util_format_r9g9b9e5_float_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
- const float *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
- for(y = 0; y < height; y += 1) {
- const float *src = src_row;
- uint8_t *dst = dst_row;
- for(x = 0; x < width; x += 1) {
- uint32_t value = float3_to_rgb9e5(src);
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
- *(uint32_t *)dst = value;
- src += 4;
- dst += 4;
- }
- dst_row += dst_stride;
- src_row += src_stride/sizeof(*src_row);
- }
-}
-
-void
-util_format_r9g9b9e5_float_fetch_rgba_float(float *dst, const uint8_t *src,
- unsigned i, unsigned j)
-{
- uint32_t value = *(const uint32_t *)src;
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
- rgb9e5_to_float3(value, dst);
- dst[3] = 1; /* a */
-}
-
-
-void
-util_format_r9g9b9e5_float_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
- float p[3];
- for(y = 0; y < height; y += 1) {
- uint8_t *dst = dst_row;
- const uint8_t *src = src_row;
- for(x = 0; x < width; x += 1) {
- uint32_t value = *(const uint32_t *)src;
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
- rgb9e5_to_float3(value, p);
- dst[0] = float_to_ubyte(p[0]); /* r */
- dst[1] = float_to_ubyte(p[1]); /* g */
- dst[2] = float_to_ubyte(p[2]); /* b */
- dst[3] = 255; /* a */
- src += 4;
- dst += 4;
- }
- src_row += src_stride;
- dst_row += dst_stride/sizeof(*dst_row);
- }
-}
-
-
-void
-util_format_r9g9b9e5_float_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
- float p[3];
- for(y = 0; y < height; y += 1) {
- const uint8_t *src = src_row;
- uint8_t *dst = dst_row;
- for(x = 0; x < width; x += 1) {
- uint32_t value;
- p[0] = ubyte_to_float(src[0]);
- p[1] = ubyte_to_float(src[1]);
- p[2] = ubyte_to_float(src[2]);
- value = float3_to_rgb9e5(p);
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
- *(uint32_t *)dst = value;
- src += 4;
- dst += 4;
- }
- dst_row += dst_stride;
- src_row += src_stride/sizeof(*src_row);
- }
-}
-
-
-void
-util_format_r11g11b10_float_unpack_rgba_float(float *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
- for(y = 0; y < height; y += 1) {
- float *dst = dst_row;
- const uint8_t *src = src_row;
- for(x = 0; x < width; x += 1) {
- uint32_t value = *(const uint32_t *)src;
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
- r11g11b10f_to_float3(value, dst);
- dst[3] = 1; /* a */
- src += 4;
- dst += 4;
- }
- src_row += src_stride;
- dst_row += dst_stride/sizeof(*dst_row);
- }
-}
-
-void
-util_format_r11g11b10_float_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
- const float *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
- for(y = 0; y < height; y += 1) {
- const float *src = src_row;
- uint8_t *dst = dst_row;
- for(x = 0; x < width; x += 1) {
- uint32_t value = float3_to_r11g11b10f(src);
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
- *(uint32_t *)dst = value;
- src += 4;
- dst += 4;
- }
- dst_row += dst_stride;
- src_row += src_stride/sizeof(*src_row);
- }
-}
-
-void
-util_format_r11g11b10_float_fetch_rgba_float(float *dst, const uint8_t *src,
- unsigned i, unsigned j)
-{
- uint32_t value = *(const uint32_t *)src;
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
- r11g11b10f_to_float3(value, dst);
- dst[3] = 1; /* a */
-}
-
-
-void
-util_format_r11g11b10_float_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
- float p[3];
- for(y = 0; y < height; y += 1) {
- uint8_t *dst = dst_row;
- const uint8_t *src = src_row;
- for(x = 0; x < width; x += 1) {
- uint32_t value = *(const uint32_t *)src;
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
- r11g11b10f_to_float3(value, p);
- dst[0] = float_to_ubyte(p[0]); /* r */
- dst[1] = float_to_ubyte(p[1]); /* g */
- dst[2] = float_to_ubyte(p[2]); /* b */
- dst[3] = 255; /* a */
- src += 4;
- dst += 4;
- }
- src_row += src_stride;
- dst_row += dst_stride/sizeof(*dst_row);
- }
-}
-
-
-void
-util_format_r11g11b10_float_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
- float p[3];
- for(y = 0; y < height; y += 1) {
- const uint8_t *src = src_row;
- uint8_t *dst = dst_row;
- for(x = 0; x < width; x += 1) {
- uint32_t value;
- p[0] = ubyte_to_float(src[0]);
- p[1] = ubyte_to_float(src[1]);
- p[2] = ubyte_to_float(src[2]);
- value = float3_to_r11g11b10f(p);
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
- *(uint32_t *)dst = value;
- src += 4;
- dst += 4;
- }
- dst_row += dst_stride;
- src_row += src_stride/sizeof(*src_row);
- }
-}
-
-
-void
-util_format_r1_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
-
-}
-
-
-void
-util_format_r1_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
- const float *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
-
-}
-
-
-void
-util_format_r1_unorm_fetch_rgba_float(float *dst, const uint8_t *src,
- unsigned i, unsigned j)
-{
-
-}
-
-
-void
-util_format_r1_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
-
-}
-
-
-void
-util_format_r1_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
-}
-
-
-/*
- * PIPE_FORMAT_R8G8Bx_SNORM
- *
- * A.k.a. D3DFMT_CxV8U8
- */
-
-static uint8_t
-r8g8bx_derive(int16_t r, int16_t g)
-{
- /* Derive blue from red and green components.
- * Apparently, we must always use integers to perform calculations,
- * otherwise the results won't match D3D's CxV8U8 definition.
- */
- return (uint8_t)sqrtf(0x7f * 0x7f - r * r - g * g) * 0xff / 0x7f;
-}
-
-void
-util_format_r8g8bx_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
-
- for(y = 0; y < height; y += 1) {
- float *dst = dst_row;
- const uint16_t *src = (const uint16_t *)src_row;
- for(x = 0; x < width; x += 1) {
- uint16_t value = *src++;
- int16_t r, g;
-
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
-
- r = ((int16_t)(value << 8)) >> 8;
- g = ((int16_t)(value << 0)) >> 8;
-
- dst[0] = (float)(r * (1.0f/0x7f)); /* r */
- dst[1] = (float)(g * (1.0f/0x7f)); /* g */
- dst[2] = r8g8bx_derive(r, g) * (1.0f/0xff); /* b */
- dst[3] = 1.0f; /* a */
- dst += 4;
- }
- src_row += src_stride;
- dst_row += dst_stride/sizeof(*dst_row);
- }
-}
-
-
-void
-util_format_r8g8bx_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
- for(y = 0; y < height; y += 1) {
- uint8_t *dst = dst_row;
- const uint16_t *src = (const uint16_t *)src_row;
- for(x = 0; x < width; x += 1) {
- uint16_t value = *src++;
- int16_t r, g;
-
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
-
- r = ((int16_t)(value << 8)) >> 8;
- g = ((int16_t)(value << 0)) >> 8;
-
- dst[0] = (uint8_t)(((uint16_t)MAX2(r, 0)) * 0xff / 0x7f); /* r */
- dst[1] = (uint8_t)(((uint16_t)MAX2(g, 0)) * 0xff / 0x7f); /* g */
- dst[2] = r8g8bx_derive(r, g); /* b */
- dst[3] = 255; /* a */
- dst += 4;
- }
- src_row += src_stride;
- dst_row += dst_stride/sizeof(*dst_row);
- }
-}
-
-
-void
-util_format_r8g8bx_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
- const float *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
- for(y = 0; y < height; y += 1) {
- const float *src = src_row;
- uint16_t *dst = (uint16_t *)dst_row;
- for(x = 0; x < width; x += 1) {
- uint16_t value = 0;
-
- value |= (uint16_t)(((int8_t)(CLAMP(src[0], -1, 1) * 0x7f)) & 0xff) ;
- value |= (uint16_t)((((int8_t)(CLAMP(src[1], -1, 1) * 0x7f)) & 0xff) << 8) ;
-
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
-
- *dst++ = value;
-
- src += 4;
- }
- dst_row += dst_stride;
- src_row += src_stride/sizeof(*src_row);
- }
-}
-
-
-void
-util_format_r8g8bx_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height)
-{
- unsigned x, y;
-
- for(y = 0; y < height; y += 1) {
- const uint8_t *src = src_row;
- uint16_t *dst = (uint16_t *)dst_row;
- for(x = 0; x < width; x += 1) {
- uint16_t value = 0;
-
- value |= src[0] >> 1;
- value |= (src[1] >> 1) << 8;
-
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
-
- *dst++ = value;
-
- src += 4;
- }
- dst_row += dst_stride;
- src_row += src_stride/sizeof(*src_row);
- }
-}
-
-
-void
-util_format_r8g8bx_snorm_fetch_rgba_float(float *dst, const uint8_t *src,
- unsigned i, unsigned j)
-{
- uint16_t value = *(const uint16_t *)src;
- int16_t r, g;
-
-#ifdef PIPE_ARCH_BIG_ENDIAN
- value = util_bswap32(value);
-#endif
-
- r = ((int16_t)(value << 8)) >> 8;
- g = ((int16_t)(value << 0)) >> 8;
-
- dst[0] = r * (1.0f/0x7f); /* r */
- dst[1] = g * (1.0f/0x7f); /* g */
- dst[2] = r8g8bx_derive(r, g) * (1.0f/0xff); /* b */
- dst[3] = 1.0f; /* a */
-}
+/**************************************************************************
+ *
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ **************************************************************************/
+
+
+#include "u_math.h"
+#include "u_format_other.h"
+#include "u_format_rgb9e5.h"
+#include "u_format_r11g11b10f.h"
+
+
+void
+util_format_r9g9b9e5_float_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+ for(y = 0; y < height; y += 1) {
+ float *dst = dst_row;
+ const uint8_t *src = src_row;
+ for(x = 0; x < width; x += 1) {
+ uint32_t value = *(const uint32_t *)src;
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+ rgb9e5_to_float3(value, dst);
+ dst[3] = 1; /* a */
+ src += 4;
+ dst += 4;
+ }
+ src_row += src_stride;
+ dst_row += dst_stride/sizeof(*dst_row);
+ }
+}
+
+void
+util_format_r9g9b9e5_float_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+ for(y = 0; y < height; y += 1) {
+ const float *src = src_row;
+ uint8_t *dst = dst_row;
+ for(x = 0; x < width; x += 1) {
+ uint32_t value = float3_to_rgb9e5(src);
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+ *(uint32_t *)dst = value;
+ src += 4;
+ dst += 4;
+ }
+ dst_row += dst_stride;
+ src_row += src_stride/sizeof(*src_row);
+ }
+}
+
+void
+util_format_r9g9b9e5_float_fetch_rgba_float(float *dst, const uint8_t *src,
+ unsigned i, unsigned j)
+{
+ uint32_t value = *(const uint32_t *)src;
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+ rgb9e5_to_float3(value, dst);
+ dst[3] = 1; /* a */
+}
+
+
+void
+util_format_r9g9b9e5_float_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+ float p[3];
+ for(y = 0; y < height; y += 1) {
+ uint8_t *dst = dst_row;
+ const uint8_t *src = src_row;
+ for(x = 0; x < width; x += 1) {
+ uint32_t value = *(const uint32_t *)src;
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+ rgb9e5_to_float3(value, p);
+ dst[0] = float_to_ubyte(p[0]); /* r */
+ dst[1] = float_to_ubyte(p[1]); /* g */
+ dst[2] = float_to_ubyte(p[2]); /* b */
+ dst[3] = 255; /* a */
+ src += 4;
+ dst += 4;
+ }
+ src_row += src_stride;
+ dst_row += dst_stride/sizeof(*dst_row);
+ }
+}
+
+
+void
+util_format_r9g9b9e5_float_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+ float p[3];
+ for(y = 0; y < height; y += 1) {
+ const uint8_t *src = src_row;
+ uint8_t *dst = dst_row;
+ for(x = 0; x < width; x += 1) {
+ uint32_t value;
+ p[0] = ubyte_to_float(src[0]);
+ p[1] = ubyte_to_float(src[1]);
+ p[2] = ubyte_to_float(src[2]);
+ value = float3_to_rgb9e5(p);
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+ *(uint32_t *)dst = value;
+ src += 4;
+ dst += 4;
+ }
+ dst_row += dst_stride;
+ src_row += src_stride/sizeof(*src_row);
+ }
+}
+
+
+void
+util_format_r11g11b10_float_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+ for(y = 0; y < height; y += 1) {
+ float *dst = dst_row;
+ const uint8_t *src = src_row;
+ for(x = 0; x < width; x += 1) {
+ uint32_t value = *(const uint32_t *)src;
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+ r11g11b10f_to_float3(value, dst);
+ dst[3] = 1; /* a */
+ src += 4;
+ dst += 4;
+ }
+ src_row += src_stride;
+ dst_row += dst_stride/sizeof(*dst_row);
+ }
+}
+
+void
+util_format_r11g11b10_float_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+ for(y = 0; y < height; y += 1) {
+ const float *src = src_row;
+ uint8_t *dst = dst_row;
+ for(x = 0; x < width; x += 1) {
+ uint32_t value = float3_to_r11g11b10f(src);
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+ *(uint32_t *)dst = value;
+ src += 4;
+ dst += 4;
+ }
+ dst_row += dst_stride;
+ src_row += src_stride/sizeof(*src_row);
+ }
+}
+
+void
+util_format_r11g11b10_float_fetch_rgba_float(float *dst, const uint8_t *src,
+ unsigned i, unsigned j)
+{
+ uint32_t value = *(const uint32_t *)src;
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+ r11g11b10f_to_float3(value, dst);
+ dst[3] = 1; /* a */
+}
+
+
+void
+util_format_r11g11b10_float_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+ float p[3];
+ for(y = 0; y < height; y += 1) {
+ uint8_t *dst = dst_row;
+ const uint8_t *src = src_row;
+ for(x = 0; x < width; x += 1) {
+ uint32_t value = *(const uint32_t *)src;
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+ r11g11b10f_to_float3(value, p);
+ dst[0] = float_to_ubyte(p[0]); /* r */
+ dst[1] = float_to_ubyte(p[1]); /* g */
+ dst[2] = float_to_ubyte(p[2]); /* b */
+ dst[3] = 255; /* a */
+ src += 4;
+ dst += 4;
+ }
+ src_row += src_stride;
+ dst_row += dst_stride/sizeof(*dst_row);
+ }
+}
+
+
+void
+util_format_r11g11b10_float_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+ float p[3];
+ for(y = 0; y < height; y += 1) {
+ const uint8_t *src = src_row;
+ uint8_t *dst = dst_row;
+ for(x = 0; x < width; x += 1) {
+ uint32_t value;
+ p[0] = ubyte_to_float(src[0]);
+ p[1] = ubyte_to_float(src[1]);
+ p[2] = ubyte_to_float(src[2]);
+ value = float3_to_r11g11b10f(p);
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+ *(uint32_t *)dst = value;
+ src += 4;
+ dst += 4;
+ }
+ dst_row += dst_stride;
+ src_row += src_stride/sizeof(*src_row);
+ }
+}
+
+
+void
+util_format_r1_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+
+}
+
+
+void
+util_format_r1_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+
+}
+
+
+void
+util_format_r1_unorm_fetch_rgba_float(float *dst, const uint8_t *src,
+ unsigned i, unsigned j)
+{
+
+}
+
+
+void
+util_format_r1_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+
+}
+
+
+void
+util_format_r1_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+}
+
+
+/*
+ * PIPE_FORMAT_R8G8Bx_SNORM
+ *
+ * A.k.a. D3DFMT_CxV8U8
+ */
+
+static uint8_t
+r8g8bx_derive(int16_t r, int16_t g)
+{
+ /* Derive blue from red and green components.
+ * Apparently, we must always use integers to perform calculations,
+ * otherwise the results won't match D3D's CxV8U8 definition.
+ */
+ return (uint8_t)sqrtf(0x7f * 0x7f - r * r - g * g) * 0xff / 0x7f;
+}
+
+void
+util_format_r8g8bx_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+
+ for(y = 0; y < height; y += 1) {
+ float *dst = dst_row;
+ const uint16_t *src = (const uint16_t *)src_row;
+ for(x = 0; x < width; x += 1) {
+ uint16_t value = *src++;
+ int16_t r, g;
+
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+
+ r = ((int16_t)(value << 8)) >> 8;
+ g = ((int16_t)(value << 0)) >> 8;
+
+ dst[0] = (float)(r * (1.0f/0x7f)); /* r */
+ dst[1] = (float)(g * (1.0f/0x7f)); /* g */
+ dst[2] = r8g8bx_derive(r, g) * (1.0f/0xff); /* b */
+ dst[3] = 1.0f; /* a */
+ dst += 4;
+ }
+ src_row += src_stride;
+ dst_row += dst_stride/sizeof(*dst_row);
+ }
+}
+
+
+void
+util_format_r8g8bx_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+ for(y = 0; y < height; y += 1) {
+ uint8_t *dst = dst_row;
+ const uint16_t *src = (const uint16_t *)src_row;
+ for(x = 0; x < width; x += 1) {
+ uint16_t value = *src++;
+ int16_t r, g;
+
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+
+ r = ((int16_t)(value << 8)) >> 8;
+ g = ((int16_t)(value << 0)) >> 8;
+
+ dst[0] = (uint8_t)(((uint16_t)MAX2(r, 0)) * 0xff / 0x7f); /* r */
+ dst[1] = (uint8_t)(((uint16_t)MAX2(g, 0)) * 0xff / 0x7f); /* g */
+ dst[2] = r8g8bx_derive(r, g); /* b */
+ dst[3] = 255; /* a */
+ dst += 4;
+ }
+ src_row += src_stride;
+ dst_row += dst_stride/sizeof(*dst_row);
+ }
+}
+
+
+void
+util_format_r8g8bx_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+ for(y = 0; y < height; y += 1) {
+ const float *src = src_row;
+ uint16_t *dst = (uint16_t *)dst_row;
+ for(x = 0; x < width; x += 1) {
+ uint16_t value = 0;
+
+ value |= (uint16_t)(((int8_t)(CLAMP(src[0], -1, 1) * 0x7f)) & 0xff) ;
+ value |= (uint16_t)((((int8_t)(CLAMP(src[1], -1, 1) * 0x7f)) & 0xff) << 8) ;
+
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+
+ *dst++ = value;
+
+ src += 4;
+ }
+ dst_row += dst_stride;
+ src_row += src_stride/sizeof(*src_row);
+ }
+}
+
+
+void
+util_format_r8g8bx_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ unsigned x, y;
+
+ for(y = 0; y < height; y += 1) {
+ const uint8_t *src = src_row;
+ uint16_t *dst = (uint16_t *)dst_row;
+ for(x = 0; x < width; x += 1) {
+ uint16_t value = 0;
+
+ value |= src[0] >> 1;
+ value |= (src[1] >> 1) << 8;
+
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+
+ *dst++ = value;
+
+ src += 4;
+ }
+ dst_row += dst_stride;
+ src_row += src_stride/sizeof(*src_row);
+ }
+}
+
+
+void
+util_format_r8g8bx_snorm_fetch_rgba_float(float *dst, const uint8_t *src,
+ unsigned i, unsigned j)
+{
+ uint16_t value = *(const uint16_t *)src;
+ int16_t r, g;
+
+#ifdef PIPE_ARCH_BIG_ENDIAN
+ value = util_bswap32(value);
+#endif
+
+ r = ((int16_t)(value << 8)) >> 8;
+ g = ((int16_t)(value << 0)) >> 8;
+
+ dst[0] = r * (1.0f/0x7f); /* r */
+ dst[1] = g * (1.0f/0x7f); /* g */
+ dst[2] = r8g8bx_derive(r, g) * (1.0f/0xff); /* b */
+ dst[3] = 1.0f; /* a */
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_other.h b/mesalib/src/gallium/auxiliary/util/u_format_other.h
index d8237da5e..2f6a908bb 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format_other.h
+++ b/mesalib/src/gallium/auxiliary/util/u_format_other.h
@@ -1,134 +1,134 @@
-/**************************************************************************
- *
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- **************************************************************************/
-
-
-#ifndef U_FORMAT_OTHER_H_
-#define U_FORMAT_OTHER_H_
-
-
-#include "pipe/p_compiler.h"
-
-
-void
-util_format_r9g9b9e5_float_unpack_rgba_float(float *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r9g9b9e5_float_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
- const float *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r9g9b9e5_float_fetch_rgba_float(float *dst, const uint8_t *src,
- unsigned i, unsigned j);
-
-void
-util_format_r9g9b9e5_float_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r9g9b9e5_float_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-
-void
-util_format_r11g11b10_float_unpack_rgba_float(float *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r11g11b10_float_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
- const float *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r11g11b10_float_fetch_rgba_float(float *dst, const uint8_t *src,
- unsigned i, unsigned j);
-
-void
-util_format_r11g11b10_float_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r11g11b10_float_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-
-void
-util_format_r1_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r1_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
- const float *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r1_unorm_fetch_rgba_float(float *dst, const uint8_t *src,
- unsigned i, unsigned j);
-
-void
-util_format_r1_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r1_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r8g8bx_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r8g8bx_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
- const float *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r8g8bx_snorm_fetch_rgba_float(float *dst, const uint8_t *src,
- unsigned i, unsigned j);
-
-void
-util_format_r8g8bx_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-void
-util_format_r8g8bx_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
- const uint8_t *src_row, unsigned src_stride,
- unsigned width, unsigned height);
-
-#endif /* U_FORMAT_OTHER_H_ */
+/**************************************************************************
+ *
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ **************************************************************************/
+
+
+#ifndef U_FORMAT_OTHER_H_
+#define U_FORMAT_OTHER_H_
+
+
+#include "pipe/p_compiler.h"
+
+
+void
+util_format_r9g9b9e5_float_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r9g9b9e5_float_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r9g9b9e5_float_fetch_rgba_float(float *dst, const uint8_t *src,
+ unsigned i, unsigned j);
+
+void
+util_format_r9g9b9e5_float_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r9g9b9e5_float_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+
+void
+util_format_r11g11b10_float_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r11g11b10_float_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r11g11b10_float_fetch_rgba_float(float *dst, const uint8_t *src,
+ unsigned i, unsigned j);
+
+void
+util_format_r11g11b10_float_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r11g11b10_float_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+
+void
+util_format_r1_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r1_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r1_unorm_fetch_rgba_float(float *dst, const uint8_t *src,
+ unsigned i, unsigned j);
+
+void
+util_format_r1_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r1_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r8g8bx_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r8g8bx_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r8g8bx_snorm_fetch_rgba_float(float *dst, const uint8_t *src,
+ unsigned i, unsigned j);
+
+void
+util_format_r8g8bx_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+void
+util_format_r8g8bx_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height);
+
+#endif /* U_FORMAT_OTHER_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_rgb9e5.h b/mesalib/src/gallium/auxiliary/util/u_format_rgb9e5.h
index 01f4e2108..c2a3f6f3e 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format_rgb9e5.h
+++ b/mesalib/src/gallium/auxiliary/util/u_format_rgb9e5.h
@@ -1,164 +1,164 @@
-/*
- * Copyright (C) 2011 Marek Olšák <maraeo@gmail.com>
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-/* Copied from EXT_texture_shared_exponent and edited. */
-
-#ifndef RGB9E5_H
-#define RGB9E5_H
-
-#include <math.h>
-#include <assert.h>
-
-#define RGB9E5_EXPONENT_BITS 5
-#define RGB9E5_MANTISSA_BITS 9
-#define RGB9E5_EXP_BIAS 15
-#define RGB9E5_MAX_VALID_BIASED_EXP 31
-
-#define MAX_RGB9E5_EXP (RGB9E5_MAX_VALID_BIASED_EXP - RGB9E5_EXP_BIAS)
-#define RGB9E5_MANTISSA_VALUES (1<<RGB9E5_MANTISSA_BITS)
-#define MAX_RGB9E5_MANTISSA (RGB9E5_MANTISSA_VALUES-1)
-#define MAX_RGB9E5 (((float)MAX_RGB9E5_MANTISSA)/RGB9E5_MANTISSA_VALUES * (1<<MAX_RGB9E5_EXP))
-#define EPSILON_RGB9E5 ((1.0/RGB9E5_MANTISSA_VALUES) / (1<<RGB9E5_EXP_BIAS))
-
-typedef union {
- unsigned int raw;
- float value;
- struct {
-#if defined(MESA_BIG_ENDIAN) || defined(PIPE_ARCH_BIG_ENDIAN)
- unsigned int negative:1;
- unsigned int biasedexponent:8;
- unsigned int mantissa:23;
-#else
- unsigned int mantissa:23;
- unsigned int biasedexponent:8;
- unsigned int negative:1;
-#endif
- } field;
-} float754;
-
-typedef union {
- unsigned int raw;
- struct {
-#if defined(MESA_BIG_ENDIAN) || defined(PIPE_ARCH_BIG_ENDIAN)
- unsigned int biasedexponent:RGB9E5_EXPONENT_BITS;
- unsigned int b:RGB9E5_MANTISSA_BITS;
- unsigned int g:RGB9E5_MANTISSA_BITS;
- unsigned int r:RGB9E5_MANTISSA_BITS;
-#else
- unsigned int r:RGB9E5_MANTISSA_BITS;
- unsigned int g:RGB9E5_MANTISSA_BITS;
- unsigned int b:RGB9E5_MANTISSA_BITS;
- unsigned int biasedexponent:RGB9E5_EXPONENT_BITS;
-#endif
- } field;
-} rgb9e5;
-
-static INLINE float rgb9e5_ClampRange(float x)
-{
- if (x > 0.0) {
- if (x >= MAX_RGB9E5) {
- return MAX_RGB9E5;
- } else {
- return x;
- }
- } else {
- /* NaN gets here too since comparisons with NaN always fail! */
- return 0.0;
- }
-}
-
-/* Ok, FloorLog2 is not correct for the denorm and zero values, but we
- are going to do a max of this value with the minimum rgb9e5 exponent
- that will hide these problem cases. */
-static INLINE int rgb9e5_FloorLog2(float x)
-{
- float754 f;
-
- f.value = x;
- return (f.field.biasedexponent - 127);
-}
-
-static INLINE unsigned float3_to_rgb9e5(const float rgb[3])
-{
- rgb9e5 retval;
- float maxrgb;
- int rm, gm, bm;
- float rc, gc, bc;
- int exp_shared, maxm;
- double denom;
-
- rc = rgb9e5_ClampRange(rgb[0]);
- gc = rgb9e5_ClampRange(rgb[1]);
- bc = rgb9e5_ClampRange(rgb[2]);
-
- maxrgb = MAX3(rc, gc, bc);
- exp_shared = MAX2(-RGB9E5_EXP_BIAS-1, rgb9e5_FloorLog2(maxrgb)) + 1 + RGB9E5_EXP_BIAS;
- assert(exp_shared <= RGB9E5_MAX_VALID_BIASED_EXP);
- assert(exp_shared >= 0);
- /* This pow function could be replaced by a table. */
- denom = pow(2, exp_shared - RGB9E5_EXP_BIAS - RGB9E5_MANTISSA_BITS);
-
- maxm = (int) floor(maxrgb / denom + 0.5);
- if (maxm == MAX_RGB9E5_MANTISSA+1) {
- denom *= 2;
- exp_shared += 1;
- assert(exp_shared <= RGB9E5_MAX_VALID_BIASED_EXP);
- } else {
- assert(maxm <= MAX_RGB9E5_MANTISSA);
- }
-
- rm = (int) floor(rc / denom + 0.5);
- gm = (int) floor(gc / denom + 0.5);
- bm = (int) floor(bc / denom + 0.5);
-
- assert(rm <= MAX_RGB9E5_MANTISSA);
- assert(gm <= MAX_RGB9E5_MANTISSA);
- assert(bm <= MAX_RGB9E5_MANTISSA);
- assert(rm >= 0);
- assert(gm >= 0);
- assert(bm >= 0);
-
- retval.field.r = rm;
- retval.field.g = gm;
- retval.field.b = bm;
- retval.field.biasedexponent = exp_shared;
-
- return retval.raw;
-}
-
-static INLINE void rgb9e5_to_float3(unsigned rgb, float retval[3])
-{
- rgb9e5 v;
- int exponent;
- float scale;
-
- v.raw = rgb;
- exponent = v.field.biasedexponent - RGB9E5_EXP_BIAS - RGB9E5_MANTISSA_BITS;
- scale = (float) pow(2, exponent);
-
- retval[0] = v.field.r * scale;
- retval[1] = v.field.g * scale;
- retval[2] = v.field.b * scale;
-}
-
-#endif
+/*
+ * Copyright (C) 2011 Marek Olšák <maraeo@gmail.com>
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+/* Copied from EXT_texture_shared_exponent and edited. */
+
+#ifndef RGB9E5_H
+#define RGB9E5_H
+
+#include <math.h>
+#include <assert.h>
+
+#define RGB9E5_EXPONENT_BITS 5
+#define RGB9E5_MANTISSA_BITS 9
+#define RGB9E5_EXP_BIAS 15
+#define RGB9E5_MAX_VALID_BIASED_EXP 31
+
+#define MAX_RGB9E5_EXP (RGB9E5_MAX_VALID_BIASED_EXP - RGB9E5_EXP_BIAS)
+#define RGB9E5_MANTISSA_VALUES (1<<RGB9E5_MANTISSA_BITS)
+#define MAX_RGB9E5_MANTISSA (RGB9E5_MANTISSA_VALUES-1)
+#define MAX_RGB9E5 (((float)MAX_RGB9E5_MANTISSA)/RGB9E5_MANTISSA_VALUES * (1<<MAX_RGB9E5_EXP))
+#define EPSILON_RGB9E5 ((1.0/RGB9E5_MANTISSA_VALUES) / (1<<RGB9E5_EXP_BIAS))
+
+typedef union {
+ unsigned int raw;
+ float value;
+ struct {
+#if defined(MESA_BIG_ENDIAN) || defined(PIPE_ARCH_BIG_ENDIAN)
+ unsigned int negative:1;
+ unsigned int biasedexponent:8;
+ unsigned int mantissa:23;
+#else
+ unsigned int mantissa:23;
+ unsigned int biasedexponent:8;
+ unsigned int negative:1;
+#endif
+ } field;
+} float754;
+
+typedef union {
+ unsigned int raw;
+ struct {
+#if defined(MESA_BIG_ENDIAN) || defined(PIPE_ARCH_BIG_ENDIAN)
+ unsigned int biasedexponent:RGB9E5_EXPONENT_BITS;
+ unsigned int b:RGB9E5_MANTISSA_BITS;
+ unsigned int g:RGB9E5_MANTISSA_BITS;
+ unsigned int r:RGB9E5_MANTISSA_BITS;
+#else
+ unsigned int r:RGB9E5_MANTISSA_BITS;
+ unsigned int g:RGB9E5_MANTISSA_BITS;
+ unsigned int b:RGB9E5_MANTISSA_BITS;
+ unsigned int biasedexponent:RGB9E5_EXPONENT_BITS;
+#endif
+ } field;
+} rgb9e5;
+
+static INLINE float rgb9e5_ClampRange(float x)
+{
+ if (x > 0.0) {
+ if (x >= MAX_RGB9E5) {
+ return MAX_RGB9E5;
+ } else {
+ return x;
+ }
+ } else {
+ /* NaN gets here too since comparisons with NaN always fail! */
+ return 0.0;
+ }
+}
+
+/* Ok, FloorLog2 is not correct for the denorm and zero values, but we
+ are going to do a max of this value with the minimum rgb9e5 exponent
+ that will hide these problem cases. */
+static INLINE int rgb9e5_FloorLog2(float x)
+{
+ float754 f;
+
+ f.value = x;
+ return (f.field.biasedexponent - 127);
+}
+
+static INLINE unsigned float3_to_rgb9e5(const float rgb[3])
+{
+ rgb9e5 retval;
+ float maxrgb;
+ int rm, gm, bm;
+ float rc, gc, bc;
+ int exp_shared, maxm;
+ double denom;
+
+ rc = rgb9e5_ClampRange(rgb[0]);
+ gc = rgb9e5_ClampRange(rgb[1]);
+ bc = rgb9e5_ClampRange(rgb[2]);
+
+ maxrgb = MAX3(rc, gc, bc);
+ exp_shared = MAX2(-RGB9E5_EXP_BIAS-1, rgb9e5_FloorLog2(maxrgb)) + 1 + RGB9E5_EXP_BIAS;
+ assert(exp_shared <= RGB9E5_MAX_VALID_BIASED_EXP);
+ assert(exp_shared >= 0);
+ /* This pow function could be replaced by a table. */
+ denom = pow(2, exp_shared - RGB9E5_EXP_BIAS - RGB9E5_MANTISSA_BITS);
+
+ maxm = (int) floor(maxrgb / denom + 0.5);
+ if (maxm == MAX_RGB9E5_MANTISSA+1) {
+ denom *= 2;
+ exp_shared += 1;
+ assert(exp_shared <= RGB9E5_MAX_VALID_BIASED_EXP);
+ } else {
+ assert(maxm <= MAX_RGB9E5_MANTISSA);
+ }
+
+ rm = (int) floor(rc / denom + 0.5);
+ gm = (int) floor(gc / denom + 0.5);
+ bm = (int) floor(bc / denom + 0.5);
+
+ assert(rm <= MAX_RGB9E5_MANTISSA);
+ assert(gm <= MAX_RGB9E5_MANTISSA);
+ assert(bm <= MAX_RGB9E5_MANTISSA);
+ assert(rm >= 0);
+ assert(gm >= 0);
+ assert(bm >= 0);
+
+ retval.field.r = rm;
+ retval.field.g = gm;
+ retval.field.b = bm;
+ retval.field.biasedexponent = exp_shared;
+
+ return retval.raw;
+}
+
+static INLINE void rgb9e5_to_float3(unsigned rgb, float retval[3])
+{
+ rgb9e5 v;
+ int exponent;
+ float scale;
+
+ v.raw = rgb;
+ exponent = v.field.biasedexponent - RGB9E5_EXP_BIAS - RGB9E5_MANTISSA_BITS;
+ scale = (float) pow(2, exponent);
+
+ retval[0] = v.field.r * scale;
+ retval[1] = v.field.g * scale;
+ retval[2] = v.field.b * scale;
+}
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_rgtc.h b/mesalib/src/gallium/auxiliary/util/u_format_rgtc.h
index 723c9c89a..67ac4728e 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format_rgtc.h
+++ b/mesalib/src/gallium/auxiliary/util/u_format_rgtc.h
@@ -1,114 +1,114 @@
-/**************************************************************************
- *
- * Copyright 2011 Red Hat Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- **************************************************************************/
-
-#ifndef U_FORMAT_RGTC_H_
-#define U_FORMAT_RGTC_H_
-
-void
-util_format_rgtc1_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_rgtc1_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc1_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc1_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc1_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc1_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-
-
-void
-util_format_rgtc1_snorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_rgtc1_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc1_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc1_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc1_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc1_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-
-void
-util_format_rgtc2_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_rgtc2_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc2_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rxtc2_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height, unsigned chan2off);
-
-void
-util_format_rgtc2_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc2_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc2_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-
-void
-util_format_rgtc2_snorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_rgtc2_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc2_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc2_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rxtc2_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height, unsigned chan2off);
-
-void
-util_format_rgtc2_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_rgtc2_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2011 Red Hat Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ **************************************************************************/
+
+#ifndef U_FORMAT_RGTC_H_
+#define U_FORMAT_RGTC_H_
+
+void
+util_format_rgtc1_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_rgtc1_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc1_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc1_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc1_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc1_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+
+
+void
+util_format_rgtc1_snorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_rgtc1_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc1_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc1_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc1_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc1_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+
+void
+util_format_rgtc2_unorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_rgtc2_unorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc2_unorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rxtc2_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height, unsigned chan2off);
+
+void
+util_format_rgtc2_unorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc2_unorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc2_unorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+
+void
+util_format_rgtc2_snorm_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_rgtc2_snorm_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc2_snorm_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc2_snorm_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rxtc2_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height, unsigned chan2off);
+
+void
+util_format_rgtc2_snorm_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_rgtc2_snorm_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_s3tc.h b/mesalib/src/gallium/auxiliary/util/u_format_s3tc.h
index 887d11079..97770abd4 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format_s3tc.h
+++ b/mesalib/src/gallium/auxiliary/util/u_format_s3tc.h
@@ -1,218 +1,218 @@
-/**************************************************************************
- *
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- **************************************************************************/
-
-
-#ifndef U_FORMAT_S3TC_H_
-#define U_FORMAT_S3TC_H_
-
-
-#include "pipe/p_compiler.h"
-
-
-enum util_format_dxtn {
- UTIL_FORMAT_DXT1_RGB = 0x83F0,
- UTIL_FORMAT_DXT1_RGBA = 0x83F1,
- UTIL_FORMAT_DXT3_RGBA = 0x83F2,
- UTIL_FORMAT_DXT5_RGBA = 0x83F3
-};
-
-
-typedef void
-(*util_format_dxtn_fetch_t)( int src_stride,
- const uint8_t *src,
- int col, int row,
- uint8_t *dst );
-
-typedef void
-(*util_format_dxtn_pack_t)( int src_comps,
- int width, int height,
- const uint8_t *src,
- enum util_format_dxtn dst_format,
- uint8_t *dst,
- int dst_stride);
-
-extern boolean util_format_s3tc_enabled;
-
-extern util_format_dxtn_fetch_t util_format_dxt1_rgb_fetch;
-extern util_format_dxtn_fetch_t util_format_dxt1_rgba_fetch;
-extern util_format_dxtn_fetch_t util_format_dxt3_rgba_fetch;
-extern util_format_dxtn_fetch_t util_format_dxt5_rgba_fetch;
-
-extern util_format_dxtn_pack_t util_format_dxtn_pack;
-
-
-void
-util_format_s3tc_init(void);
-
-
-void
-util_format_dxt1_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_rgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_rgb_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt1_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_rgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt3_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt3_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt3_rgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt5_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt5_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt5_rgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt1_srgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_srgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_srgb_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt1_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt3_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt3_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt3_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt5_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt5_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt5_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
-
-
-void
-util_format_dxt1_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_rgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_rgb_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt1_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_rgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt3_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt3_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt3_rgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt5_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt5_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt5_rgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt1_srgb_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_srgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_srgb_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt1_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt1_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt3_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt3_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt3_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-void
-util_format_dxt5_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt5_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
-
-void
-util_format_dxt5_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
-
-
-#endif /* U_FORMAT_S3TC_H_ */
+/**************************************************************************
+ *
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ **************************************************************************/
+
+
+#ifndef U_FORMAT_S3TC_H_
+#define U_FORMAT_S3TC_H_
+
+
+#include "pipe/p_compiler.h"
+
+
+enum util_format_dxtn {
+ UTIL_FORMAT_DXT1_RGB = 0x83F0,
+ UTIL_FORMAT_DXT1_RGBA = 0x83F1,
+ UTIL_FORMAT_DXT3_RGBA = 0x83F2,
+ UTIL_FORMAT_DXT5_RGBA = 0x83F3
+};
+
+
+typedef void
+(*util_format_dxtn_fetch_t)( int src_stride,
+ const uint8_t *src,
+ int col, int row,
+ uint8_t *dst );
+
+typedef void
+(*util_format_dxtn_pack_t)( int src_comps,
+ int width, int height,
+ const uint8_t *src,
+ enum util_format_dxtn dst_format,
+ uint8_t *dst,
+ int dst_stride);
+
+extern boolean util_format_s3tc_enabled;
+
+extern util_format_dxtn_fetch_t util_format_dxt1_rgb_fetch;
+extern util_format_dxtn_fetch_t util_format_dxt1_rgba_fetch;
+extern util_format_dxtn_fetch_t util_format_dxt3_rgba_fetch;
+extern util_format_dxtn_fetch_t util_format_dxt5_rgba_fetch;
+
+extern util_format_dxtn_pack_t util_format_dxtn_pack;
+
+
+void
+util_format_s3tc_init(void);
+
+
+void
+util_format_dxt1_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_rgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_rgb_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt1_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_rgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt3_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt3_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt3_rgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt5_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt5_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt5_rgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt1_srgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_srgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_srgb_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt1_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt3_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt3_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt3_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt5_srgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt5_srgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt5_srgba_fetch_rgba_8unorm(uint8_t *dst, const uint8_t *src, unsigned i, unsigned j);
+
+
+void
+util_format_dxt1_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_rgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_rgb_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt1_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_rgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt3_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt3_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt3_rgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt5_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt5_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt5_rgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt1_srgb_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_srgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_srgb_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt1_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt1_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt3_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt3_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt3_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+void
+util_format_dxt5_srgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt5_srgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height);
+
+void
+util_format_dxt5_srgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned i, unsigned j);
+
+
+#endif /* U_FORMAT_S3TC_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_srgb.h b/mesalib/src/gallium/auxiliary/util/u_format_srgb.h
index a1b12e9de..43213fbeb 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format_srgb.h
+++ b/mesalib/src/gallium/auxiliary/util/u_format_srgb.h
@@ -1,106 +1,106 @@
-/**************************************************************************
- *
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- **************************************************************************/
-
-/**
- * @file
- * SRGB translation.
- *
- * @author Brian Paul <brianp@vmware.com>
- * @author Michal Krol <michal@vmware.com>
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-#ifndef U_FORMAT_SRGB_H_
-#define U_FORMAT_SRGB_H_
-
-
-#include "pipe/p_compiler.h"
-#include "u_math.h"
-
-
-extern const float
-util_format_srgb_8unorm_to_linear_float_table[256];
-
-extern const uint8_t
-util_format_srgb_to_linear_8unorm_table[256];
-
-extern const uint8_t
-util_format_linear_to_srgb_8unorm_table[256];
-
-
-/**
- * Convert a unclamped linear float to srgb value in the [0,255].
- * XXX this hasn't been tested (render to srgb surface).
- * XXX this needs optimization.
- */
-static INLINE uint8_t
-util_format_linear_float_to_srgb_8unorm(float x)
-{
- if (x >= 1.0f)
- return 255;
- else if (x >= 0.0031308f)
- return float_to_ubyte(1.055f * powf(x, 0.41666f) - 0.055f);
- else if (x > 0.0f)
- return float_to_ubyte(12.92f * x);
- else
- return 0;
-}
-
-
-/**
- * Convert an 8-bit sRGB value from non-linear space to a
- * linear RGB value in [0, 1].
- * Implemented with a 256-entry lookup table.
- */
-static INLINE float
-util_format_srgb_8unorm_to_linear_float(uint8_t x)
-{
- return util_format_srgb_8unorm_to_linear_float_table[x];
-}
-
-
-/**
- * Convert a 8bit normalized value from linear to srgb.
- */
-static INLINE uint8_t
-util_format_linear_to_srgb_8unorm(uint8_t x)
-{
- return util_format_linear_to_srgb_8unorm_table[x];
-}
-
-
-/**
- * Convert a 8bit normalized value from srgb to linear.
- */
-static INLINE uint8_t
-util_format_srgb_to_linear_8unorm(uint8_t x)
-{
- return util_format_srgb_to_linear_8unorm_table[x];
-}
-
-
-#endif /* U_FORMAT_SRGB_H_ */
+/**************************************************************************
+ *
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * SRGB translation.
+ *
+ * @author Brian Paul <brianp@vmware.com>
+ * @author Michal Krol <michal@vmware.com>
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+
+#ifndef U_FORMAT_SRGB_H_
+#define U_FORMAT_SRGB_H_
+
+
+#include "pipe/p_compiler.h"
+#include "u_math.h"
+
+
+extern const float
+util_format_srgb_8unorm_to_linear_float_table[256];
+
+extern const uint8_t
+util_format_srgb_to_linear_8unorm_table[256];
+
+extern const uint8_t
+util_format_linear_to_srgb_8unorm_table[256];
+
+
+/**
+ * Convert a unclamped linear float to srgb value in the [0,255].
+ * XXX this hasn't been tested (render to srgb surface).
+ * XXX this needs optimization.
+ */
+static INLINE uint8_t
+util_format_linear_float_to_srgb_8unorm(float x)
+{
+ if (x >= 1.0f)
+ return 255;
+ else if (x >= 0.0031308f)
+ return float_to_ubyte(1.055f * powf(x, 0.41666f) - 0.055f);
+ else if (x > 0.0f)
+ return float_to_ubyte(12.92f * x);
+ else
+ return 0;
+}
+
+
+/**
+ * Convert an 8-bit sRGB value from non-linear space to a
+ * linear RGB value in [0, 1].
+ * Implemented with a 256-entry lookup table.
+ */
+static INLINE float
+util_format_srgb_8unorm_to_linear_float(uint8_t x)
+{
+ return util_format_srgb_8unorm_to_linear_float_table[x];
+}
+
+
+/**
+ * Convert a 8bit normalized value from linear to srgb.
+ */
+static INLINE uint8_t
+util_format_linear_to_srgb_8unorm(uint8_t x)
+{
+ return util_format_linear_to_srgb_8unorm_table[x];
+}
+
+
+/**
+ * Convert a 8bit normalized value from srgb to linear.
+ */
+static INLINE uint8_t
+util_format_srgb_to_linear_8unorm(uint8_t x)
+{
+ return util_format_srgb_to_linear_8unorm_table[x];
+}
+
+
+#endif /* U_FORMAT_SRGB_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_srgb.py b/mesalib/src/gallium/auxiliary/util/u_format_srgb.py
index c7b0464d4..cd63ae789 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format_srgb.py
+++ b/mesalib/src/gallium/auxiliary/util/u_format_srgb.py
@@ -1,100 +1,100 @@
-#!/usr/bin/env python
-
-CopyRight = '''
-/**************************************************************************
- *
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * SRGB translation.
- *
- * @author Brian Paul <brianp@vmware.com>
- * @author Michal Krol <michal@vmware.com>
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-'''
-
-
-import math
-
-
-def srgb_to_linear(x):
- if x <= 0.04045:
- return x / 12.92
- else:
- return math.pow((x + 0.055) / 1.055, 2.4)
-
-
-def linear_to_srgb(x):
- if x >= 0.0031308:
- return 1.055 * math.pow(x, 0.41666) - 0.055
- else:
- return 12.92 * x
-
-def generate_srgb_tables():
- print 'const float'
- print 'util_format_srgb_8unorm_to_linear_float_table[256] = {'
- for j in range(0, 256, 4):
- print ' ',
- for i in range(j, j + 4):
- print '%.7e,' % (srgb_to_linear(i / 255.0),),
- print
- print '};'
- print
- print 'const uint8_t'
- print 'util_format_srgb_to_linear_8unorm_table[256] = {'
- for j in range(0, 256, 16):
- print ' ',
- for i in range(j, j + 16):
- print '%3u,' % (int(srgb_to_linear(i / 255.0) * 255.0 + 0.5),),
- print
- print '};'
- print
- print 'const uint8_t'
- print 'util_format_linear_to_srgb_8unorm_table[256] = {'
- for j in range(0, 256, 16):
- print ' ',
- for i in range(j, j + 16):
- print '%3u,' % (int(linear_to_srgb(i / 255.0) * 255.0 + 0.5),),
- print
- print '};'
- print
-
-
-def main():
- print '/* This file is autogenerated by u_format_srgb.py. Do not edit directly. */'
- print
- # This will print the copyright message on the top of this file
- print CopyRight.strip()
- print
- print '#include "u_format_srgb.h"'
- print
- generate_srgb_tables()
-
-
-if __name__ == '__main__':
- main()
+#!/usr/bin/env python
+
+CopyRight = '''
+/**************************************************************************
+ *
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * SRGB translation.
+ *
+ * @author Brian Paul <brianp@vmware.com>
+ * @author Michal Krol <michal@vmware.com>
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+'''
+
+
+import math
+
+
+def srgb_to_linear(x):
+ if x <= 0.04045:
+ return x / 12.92
+ else:
+ return math.pow((x + 0.055) / 1.055, 2.4)
+
+
+def linear_to_srgb(x):
+ if x >= 0.0031308:
+ return 1.055 * math.pow(x, 0.41666) - 0.055
+ else:
+ return 12.92 * x
+
+def generate_srgb_tables():
+ print 'const float'
+ print 'util_format_srgb_8unorm_to_linear_float_table[256] = {'
+ for j in range(0, 256, 4):
+ print ' ',
+ for i in range(j, j + 4):
+ print '%.7e,' % (srgb_to_linear(i / 255.0),),
+ print
+ print '};'
+ print
+ print 'const uint8_t'
+ print 'util_format_srgb_to_linear_8unorm_table[256] = {'
+ for j in range(0, 256, 16):
+ print ' ',
+ for i in range(j, j + 16):
+ print '%3u,' % (int(srgb_to_linear(i / 255.0) * 255.0 + 0.5),),
+ print
+ print '};'
+ print
+ print 'const uint8_t'
+ print 'util_format_linear_to_srgb_8unorm_table[256] = {'
+ for j in range(0, 256, 16):
+ print ' ',
+ for i in range(j, j + 16):
+ print '%3u,' % (int(linear_to_srgb(i / 255.0) * 255.0 + 0.5),),
+ print
+ print '};'
+ print
+
+
+def main():
+ print '/* This file is autogenerated by u_format_srgb.py. Do not edit directly. */'
+ print
+ # This will print the copyright message on the top of this file
+ print CopyRight.strip()
+ print
+ print '#include "u_format_srgb.h"'
+ print
+ generate_srgb_tables()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/mesalib/src/gallium/auxiliary/util/u_format_tests.h b/mesalib/src/gallium/auxiliary/util/u_format_tests.h
index 5de1cb237..f59563f4f 100644
--- a/mesalib/src/gallium/auxiliary/util/u_format_tests.h
+++ b/mesalib/src/gallium/auxiliary/util/u_format_tests.h
@@ -1,71 +1,71 @@
-/**************************************************************************
- *
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- **************************************************************************/
-
-
-#ifndef U_FORMAT_TESTS_H_
-#define U_FORMAT_TESTS_H_
-
-
-#include "pipe/p_compiler.h"
-#include "pipe/p_format.h"
-
-
-#define UTIL_FORMAT_MAX_PACKED_BYTES 16
-#define UTIL_FORMAT_MAX_UNPACKED_WIDTH 4
-#define UTIL_FORMAT_MAX_UNPACKED_HEIGHT 4
-
-
-/**
- * A (packed, unpacked) color pair.
- */
-struct util_format_test_case
-{
- enum pipe_format format;
-
- /**
- * Mask of the bits that actually meaningful data. Used to mask out the
- * "X" channels.
- */
- uint8_t mask[UTIL_FORMAT_MAX_PACKED_BYTES];
-
- uint8_t packed[UTIL_FORMAT_MAX_PACKED_BYTES];
-
- /**
- * RGBA.
- */
- double unpacked[UTIL_FORMAT_MAX_UNPACKED_HEIGHT][UTIL_FORMAT_MAX_UNPACKED_WIDTH][4];
-};
-
-
-extern const struct util_format_test_case
-util_format_test_cases[];
-
-
-extern const unsigned util_format_nr_test_cases;
-
-
-#endif /* U_FORMAT_TESTS_H_ */
+/**************************************************************************
+ *
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 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 COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ **************************************************************************/
+
+
+#ifndef U_FORMAT_TESTS_H_
+#define U_FORMAT_TESTS_H_
+
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_format.h"
+
+
+#define UTIL_FORMAT_MAX_PACKED_BYTES 16
+#define UTIL_FORMAT_MAX_UNPACKED_WIDTH 4
+#define UTIL_FORMAT_MAX_UNPACKED_HEIGHT 4
+
+
+/**
+ * A (packed, unpacked) color pair.
+ */
+struct util_format_test_case
+{
+ enum pipe_format format;
+
+ /**
+ * Mask of the bits that actually meaningful data. Used to mask out the
+ * "X" channels.
+ */
+ uint8_t mask[UTIL_FORMAT_MAX_PACKED_BYTES];
+
+ uint8_t packed[UTIL_FORMAT_MAX_PACKED_BYTES];
+
+ /**
+ * RGBA.
+ */
+ double unpacked[UTIL_FORMAT_MAX_UNPACKED_HEIGHT][UTIL_FORMAT_MAX_UNPACKED_WIDTH][4];
+};
+
+
+extern const struct util_format_test_case
+util_format_test_cases[];
+
+
+extern const unsigned util_format_nr_test_cases;
+
+
+#endif /* U_FORMAT_TESTS_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_framebuffer.c b/mesalib/src/gallium/auxiliary/util/u_framebuffer.c
index 8d89c81c7..7803ec6a8 100644
--- a/mesalib/src/gallium/auxiliary/util/u_framebuffer.c
+++ b/mesalib/src/gallium/auxiliary/util/u_framebuffer.c
@@ -1,148 +1,148 @@
-/**************************************************************************
- *
- * Copyright 2009-2010 VMware, Inc. All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * Framebuffer utility functions.
- *
- * @author Brian Paul
- */
-
-
-#include "pipe/p_screen.h"
-#include "pipe/p_state.h"
-#include "pipe/p_defines.h"
-#include "util/u_inlines.h"
-
-#include "util/u_memory.h"
-#include "util/u_framebuffer.h"
-
-
-/**
- * Compare pipe_framebuffer_state objects.
- * \return TRUE if same, FALSE if different
- */
-boolean
-util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst,
- const struct pipe_framebuffer_state *src)
-{
- unsigned i;
-
- if (dst->width != src->width ||
- dst->height != src->height)
- return FALSE;
-
- for (i = 0; i < Elements(src->cbufs); i++) {
- if (dst->cbufs[i] != src->cbufs[i]) {
- return FALSE;
- }
- }
-
- if (dst->nr_cbufs != src->nr_cbufs) {
- return FALSE;
- }
-
- if (dst->zsbuf != src->zsbuf) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-/**
- * Copy framebuffer state from src to dst, updating refcounts.
- */
-void
-util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
- const struct pipe_framebuffer_state *src)
-{
- unsigned i;
-
- dst->width = src->width;
- dst->height = src->height;
-
- for (i = 0; i < src->nr_cbufs; i++)
- pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]);
-
- for (i = src->nr_cbufs; i < dst->nr_cbufs; i++)
- pipe_surface_reference(&dst->cbufs[i], NULL);
-
- dst->nr_cbufs = src->nr_cbufs;
-
- pipe_surface_reference(&dst->zsbuf, src->zsbuf);
-}
-
-
-void
-util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb)
-{
- unsigned i;
-
- for (i = 0; i < fb->nr_cbufs; i++) {
- pipe_surface_reference(&fb->cbufs[i], NULL);
- }
-
- pipe_surface_reference(&fb->zsbuf, NULL);
-
- fb->width = fb->height = 0;
- fb->nr_cbufs = 0;
-}
-
-
-/* Where multiple sizes are allowed for framebuffer surfaces, find the
- * minimum width and height of all bound surfaces.
- */
-boolean
-util_framebuffer_min_size(const struct pipe_framebuffer_state *fb,
- unsigned *width,
- unsigned *height)
-{
- unsigned w = ~0;
- unsigned h = ~0;
- unsigned i;
-
- for (i = 0; i < fb->nr_cbufs; i++) {
- w = MIN2(w, fb->cbufs[i]->width);
- h = MIN2(h, fb->cbufs[i]->height);
- }
-
- if (fb->zsbuf) {
- w = MIN2(w, fb->zsbuf->width);
- h = MIN2(h, fb->zsbuf->height);
- }
-
- if (w == ~0) {
- *width = 0;
- *height = 0;
- return FALSE;
- }
- else {
- *width = w;
- *height = h;
- return TRUE;
- }
-}
+/**************************************************************************
+ *
+ * Copyright 2009-2010 VMware, Inc. All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Framebuffer utility functions.
+ *
+ * @author Brian Paul
+ */
+
+
+#include "pipe/p_screen.h"
+#include "pipe/p_state.h"
+#include "pipe/p_defines.h"
+#include "util/u_inlines.h"
+
+#include "util/u_memory.h"
+#include "util/u_framebuffer.h"
+
+
+/**
+ * Compare pipe_framebuffer_state objects.
+ * \return TRUE if same, FALSE if different
+ */
+boolean
+util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst,
+ const struct pipe_framebuffer_state *src)
+{
+ unsigned i;
+
+ if (dst->width != src->width ||
+ dst->height != src->height)
+ return FALSE;
+
+ for (i = 0; i < Elements(src->cbufs); i++) {
+ if (dst->cbufs[i] != src->cbufs[i]) {
+ return FALSE;
+ }
+ }
+
+ if (dst->nr_cbufs != src->nr_cbufs) {
+ return FALSE;
+ }
+
+ if (dst->zsbuf != src->zsbuf) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+/**
+ * Copy framebuffer state from src to dst, updating refcounts.
+ */
+void
+util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
+ const struct pipe_framebuffer_state *src)
+{
+ unsigned i;
+
+ dst->width = src->width;
+ dst->height = src->height;
+
+ for (i = 0; i < src->nr_cbufs; i++)
+ pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]);
+
+ for (i = src->nr_cbufs; i < dst->nr_cbufs; i++)
+ pipe_surface_reference(&dst->cbufs[i], NULL);
+
+ dst->nr_cbufs = src->nr_cbufs;
+
+ pipe_surface_reference(&dst->zsbuf, src->zsbuf);
+}
+
+
+void
+util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb)
+{
+ unsigned i;
+
+ for (i = 0; i < fb->nr_cbufs; i++) {
+ pipe_surface_reference(&fb->cbufs[i], NULL);
+ }
+
+ pipe_surface_reference(&fb->zsbuf, NULL);
+
+ fb->width = fb->height = 0;
+ fb->nr_cbufs = 0;
+}
+
+
+/* Where multiple sizes are allowed for framebuffer surfaces, find the
+ * minimum width and height of all bound surfaces.
+ */
+boolean
+util_framebuffer_min_size(const struct pipe_framebuffer_state *fb,
+ unsigned *width,
+ unsigned *height)
+{
+ unsigned w = ~0;
+ unsigned h = ~0;
+ unsigned i;
+
+ for (i = 0; i < fb->nr_cbufs; i++) {
+ w = MIN2(w, fb->cbufs[i]->width);
+ h = MIN2(h, fb->cbufs[i]->height);
+ }
+
+ if (fb->zsbuf) {
+ w = MIN2(w, fb->zsbuf->width);
+ h = MIN2(h, fb->zsbuf->height);
+ }
+
+ if (w == ~0) {
+ *width = 0;
+ *height = 0;
+ return FALSE;
+ }
+ else {
+ *width = w;
+ *height = h;
+ return TRUE;
+ }
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_framebuffer.h b/mesalib/src/gallium/auxiliary/util/u_framebuffer.h
index 346672bc7..e7dc1e9e4 100644
--- a/mesalib/src/gallium/auxiliary/util/u_framebuffer.h
+++ b/mesalib/src/gallium/auxiliary/util/u_framebuffer.h
@@ -1,54 +1,54 @@
-/**************************************************************************
- *
- * Copyright 2009-2010 VMware, Inc. All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef U_FRAMEBUFFER_H
-#define U_FRAMEBUFFER_H
-
-
-#include "pipe/p_compiler.h"
-#include "pipe/p_state.h"
-
-
-extern boolean
-util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst,
- const struct pipe_framebuffer_state *src);
-
-extern void
-util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
- const struct pipe_framebuffer_state *src);
-
-
-extern void
-util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb);
-
-
-extern boolean
-util_framebuffer_min_size(const struct pipe_framebuffer_state *fb,
- unsigned *width,
- unsigned *height);
-
-#endif /* U_FRAMEBUFFER_H */
+/**************************************************************************
+ *
+ * Copyright 2009-2010 VMware, Inc. All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef U_FRAMEBUFFER_H
+#define U_FRAMEBUFFER_H
+
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_state.h"
+
+
+extern boolean
+util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst,
+ const struct pipe_framebuffer_state *src);
+
+extern void
+util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
+ const struct pipe_framebuffer_state *src);
+
+
+extern void
+util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb);
+
+
+extern boolean
+util_framebuffer_min_size(const struct pipe_framebuffer_state *fb,
+ unsigned *width,
+ unsigned *height);
+
+#endif /* U_FRAMEBUFFER_H */
diff --git a/mesalib/src/gallium/auxiliary/util/u_half.h b/mesalib/src/gallium/auxiliary/util/u_half.h
index b19527981..ad030e90c 100644
--- a/mesalib/src/gallium/auxiliary/util/u_half.h
+++ b/mesalib/src/gallium/auxiliary/util/u_half.h
@@ -1,90 +1,90 @@
-/**************************************************************************
- *
- * Copyright 2010 Luca Barbieri
- *
- * 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 (including the
- * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef U_HALF_H
-#define U_HALF_H
-
-#include "pipe/p_compiler.h"
-#include "util/u_math.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern const uint32_t util_half_to_float_mantissa_table[2048];
-extern const uint32_t util_half_to_float_exponent_table[64];
-extern const uint32_t util_half_to_float_offset_table[64];
-extern const uint16_t util_float_to_half_base_table[512];
-extern const uint8_t util_float_to_half_shift_table[512];
-
-/*
- * Note that if the half float is a signaling NaN, the x87 FPU will turn
- * it into a quiet NaN immediately upon loading into a float.
- *
- * Additionally, denormals may be flushed to zero.
- *
- * To avoid this, use the floatui functions instead of the float ones
- * when just doing conversion rather than computation on the resulting
- * floats.
- */
-
-static INLINE uint32_t
-util_half_to_floatui(uint16_t h)
-{
- unsigned exp = h >> 10;
- return util_half_to_float_mantissa_table[util_half_to_float_offset_table[exp] + (h & 0x3ff)] + util_half_to_float_exponent_table[exp];
-}
-
-static INLINE float
-util_half_to_float(uint16_t h)
-{
- union fi r;
- r.ui = util_half_to_floatui(h);
- return r.f;
-}
-
-static INLINE uint16_t
-util_floatui_to_half(uint32_t v)
-{
- unsigned signexp = v >> 23;
- return util_float_to_half_base_table[signexp] + ((v & 0x007fffff) >> util_float_to_half_shift_table[signexp]);
-}
-
-static INLINE uint16_t
-util_float_to_half(float f)
-{
- union fi i;
- i.f = f;
- return util_floatui_to_half(i.ui);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* U_HALF_H */
-
+/**************************************************************************
+ *
+ * Copyright 2010 Luca Barbieri
+ *
+ * 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 (including the
+ * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef U_HALF_H
+#define U_HALF_H
+
+#include "pipe/p_compiler.h"
+#include "util/u_math.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern const uint32_t util_half_to_float_mantissa_table[2048];
+extern const uint32_t util_half_to_float_exponent_table[64];
+extern const uint32_t util_half_to_float_offset_table[64];
+extern const uint16_t util_float_to_half_base_table[512];
+extern const uint8_t util_float_to_half_shift_table[512];
+
+/*
+ * Note that if the half float is a signaling NaN, the x87 FPU will turn
+ * it into a quiet NaN immediately upon loading into a float.
+ *
+ * Additionally, denormals may be flushed to zero.
+ *
+ * To avoid this, use the floatui functions instead of the float ones
+ * when just doing conversion rather than computation on the resulting
+ * floats.
+ */
+
+static INLINE uint32_t
+util_half_to_floatui(uint16_t h)
+{
+ unsigned exp = h >> 10;
+ return util_half_to_float_mantissa_table[util_half_to_float_offset_table[exp] + (h & 0x3ff)] + util_half_to_float_exponent_table[exp];
+}
+
+static INLINE float
+util_half_to_float(uint16_t h)
+{
+ union fi r;
+ r.ui = util_half_to_floatui(h);
+ return r.f;
+}
+
+static INLINE uint16_t
+util_floatui_to_half(uint32_t v)
+{
+ unsigned signexp = v >> 23;
+ return util_float_to_half_base_table[signexp] + ((v & 0x007fffff) >> util_float_to_half_shift_table[signexp]);
+}
+
+static INLINE uint16_t
+util_float_to_half(float f)
+{
+ union fi i;
+ i.f = f;
+ return util_floatui_to_half(i.ui);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* U_HALF_H */
+
diff --git a/mesalib/src/gallium/auxiliary/util/u_half.py b/mesalib/src/gallium/auxiliary/util/u_half.py
index 88ee43c25..915cf3b92 100644
--- a/mesalib/src/gallium/auxiliary/util/u_half.py
+++ b/mesalib/src/gallium/auxiliary/util/u_half.py
@@ -1,179 +1,179 @@
-# Copyright 2010 Luca Barbieri
-#
-# 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 (including the
-# next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
-#
-# *************************************************************************
-
-# The code is a reimplementation of the algorithm in
-# www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf
-# "Fast Half Float Conversions" by Jeroen van der Zijp, Nov 2008
-#
-# The table contents have been slightly changed so that the exponent
-# bias is now in the exponent table instead of the mantissa table (mostly
-# for cosmetic reasons, and because it theoretically allows a variant
-# that flushes denormal to zero but uses a mantissa table with 24-bit
-# entries).
-#
-# The tables are also constructed slightly differently.
-#
-
-# Note that using a 64K * 4 table is a terrible idea since it will not fit
-# in the L1 cache and will massively pollute the L2 cache as well
-#
-# These should instead fit in the L1 cache.
-#
-# TODO: we could use a denormal bias table instead of the mantissa/offset
-# tables: this would reduce the L1 cache usage from 8704 to 2304 bytes
-# but would involve more computation
-#
-# Note however that if denormals are never encountered, the L1 cache usage
-# is only about 4608 bytes anyway.
-
-table_index = None
-table_length = None
-
-def begin(t, n, l):
- global table_length
- global table_index
- table_index = 0
- table_length = l
- print
- print "const " + t + " " + n + "[" + str(l) + "] = {"
-
-def value(v):
- global table_index
- table_index += 1
- print "\t" + hex(v) + ","
-
-def end():
- global table_length
- global table_index
- print "};"
- assert table_index == table_length
-
-print "/* This file is autogenerated by u_half.py. Do not edit directly. */"
-print "#include \"util/u_half.h\""
-
-begin("uint32_t", "util_half_to_float_mantissa_table", 2048)
-# zero
-value(0)
-
-# denormals
-for i in xrange(1, 1024):
- m = i << 13
- e = 0
-
- # normalize number
- while (m & 0x00800000) == 0:
- e -= 0x00800000
- m <<= 1
-
- m &= ~0x00800000
- e += 0x38800000
- value(m | e)
-
-# normals
-for i in xrange(1024, 2048):
- value((i - 1024) << 13)
-end()
-
-begin("uint32_t", "util_half_to_float_exponent_table", 64)
-# positive zero or denormals
-value(0)
-
-# positive numbers
-for i in xrange(1, 31):
- value(0x38000000 + (i << 23))
-
-# positive infinity/NaN
-value(0x7f800000)
-
-# negative zero or denormals
-value(0x80000000)
-
-# negative numbers
-for i in range(33, 63):
- value(0xb8000000 + ((i - 32) << 23))
-
-# negative infinity/NaN
-value(0xff800000)
-end()
-
-begin("uint32_t", "util_half_to_float_offset_table", 64)
-# positive zero or denormals
-value(0)
-
-# positive normals
-for i in range(1, 32):
- value(1024)
-
-# negative zero or denormals
-value(0)
-
-# negative normals
-for i in xrange(33, 64):
- value(1024)
-end()
-
-begin("uint16_t", "util_float_to_half_base_table", 512)
-for sign in (0, 0x8000):
- # very small numbers mapping to zero
- for i in xrange(-127, -24):
- value(sign | 0)
-
- # small numbers mapping to denormals
- for i in xrange(-24, -14):
- value(sign | (0x400 >> (-14 -i)))
-
- # normal numbers
- for i in xrange(-14, 16):
- value(sign | ((i + 15) << 10))
-
- # large numbers mapping to infinity
- for i in xrange(16, 128):
- value(sign | 0x7c00)
-
- # infinity and NaNs
- value(sign | 0x7c00)
-end()
-
-begin("uint8_t", "util_float_to_half_shift_table", 512)
-for sign in (0, 0x8000):
- # very small numbers mapping to zero
- for i in xrange(-127, -24):
- value(24)
-
- # small numbers mapping to denormals
- for i in xrange(-24, -14):
- value(-1 - i)
-
- # normal numbers
- for i in xrange(-14, 16):
- value(13)
-
- # large numbers mapping to infinity
- for i in xrange(16, 128):
- value(24)
-
- # infinity and NaNs
- value(13)
-end()
-
+# Copyright 2010 Luca Barbieri
+#
+# 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 (including the
+# next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
+#
+# *************************************************************************
+
+# The code is a reimplementation of the algorithm in
+# www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf
+# "Fast Half Float Conversions" by Jeroen van der Zijp, Nov 2008
+#
+# The table contents have been slightly changed so that the exponent
+# bias is now in the exponent table instead of the mantissa table (mostly
+# for cosmetic reasons, and because it theoretically allows a variant
+# that flushes denormal to zero but uses a mantissa table with 24-bit
+# entries).
+#
+# The tables are also constructed slightly differently.
+#
+
+# Note that using a 64K * 4 table is a terrible idea since it will not fit
+# in the L1 cache and will massively pollute the L2 cache as well
+#
+# These should instead fit in the L1 cache.
+#
+# TODO: we could use a denormal bias table instead of the mantissa/offset
+# tables: this would reduce the L1 cache usage from 8704 to 2304 bytes
+# but would involve more computation
+#
+# Note however that if denormals are never encountered, the L1 cache usage
+# is only about 4608 bytes anyway.
+
+table_index = None
+table_length = None
+
+def begin(t, n, l):
+ global table_length
+ global table_index
+ table_index = 0
+ table_length = l
+ print
+ print "const " + t + " " + n + "[" + str(l) + "] = {"
+
+def value(v):
+ global table_index
+ table_index += 1
+ print "\t" + hex(v) + ","
+
+def end():
+ global table_length
+ global table_index
+ print "};"
+ assert table_index == table_length
+
+print "/* This file is autogenerated by u_half.py. Do not edit directly. */"
+print "#include \"util/u_half.h\""
+
+begin("uint32_t", "util_half_to_float_mantissa_table", 2048)
+# zero
+value(0)
+
+# denormals
+for i in xrange(1, 1024):
+ m = i << 13
+ e = 0
+
+ # normalize number
+ while (m & 0x00800000) == 0:
+ e -= 0x00800000
+ m <<= 1
+
+ m &= ~0x00800000
+ e += 0x38800000
+ value(m | e)
+
+# normals
+for i in xrange(1024, 2048):
+ value((i - 1024) << 13)
+end()
+
+begin("uint32_t", "util_half_to_float_exponent_table", 64)
+# positive zero or denormals
+value(0)
+
+# positive numbers
+for i in xrange(1, 31):
+ value(0x38000000 + (i << 23))
+
+# positive infinity/NaN
+value(0x7f800000)
+
+# negative zero or denormals
+value(0x80000000)
+
+# negative numbers
+for i in range(33, 63):
+ value(0xb8000000 + ((i - 32) << 23))
+
+# negative infinity/NaN
+value(0xff800000)
+end()
+
+begin("uint32_t", "util_half_to_float_offset_table", 64)
+# positive zero or denormals
+value(0)
+
+# positive normals
+for i in range(1, 32):
+ value(1024)
+
+# negative zero or denormals
+value(0)
+
+# negative normals
+for i in xrange(33, 64):
+ value(1024)
+end()
+
+begin("uint16_t", "util_float_to_half_base_table", 512)
+for sign in (0, 0x8000):
+ # very small numbers mapping to zero
+ for i in xrange(-127, -24):
+ value(sign | 0)
+
+ # small numbers mapping to denormals
+ for i in xrange(-24, -14):
+ value(sign | (0x400 >> (-14 -i)))
+
+ # normal numbers
+ for i in xrange(-14, 16):
+ value(sign | ((i + 15) << 10))
+
+ # large numbers mapping to infinity
+ for i in xrange(16, 128):
+ value(sign | 0x7c00)
+
+ # infinity and NaNs
+ value(sign | 0x7c00)
+end()
+
+begin("uint8_t", "util_float_to_half_shift_table", 512)
+for sign in (0, 0x8000):
+ # very small numbers mapping to zero
+ for i in xrange(-127, -24):
+ value(24)
+
+ # small numbers mapping to denormals
+ for i in xrange(-24, -14):
+ value(-1 - i)
+
+ # normal numbers
+ for i in xrange(-14, 16):
+ value(13)
+
+ # large numbers mapping to infinity
+ for i in xrange(16, 128):
+ value(24)
+
+ # infinity and NaNs
+ value(13)
+end()
+
diff --git a/mesalib/src/gallium/auxiliary/util/u_handle_table.c b/mesalib/src/gallium/auxiliary/util/u_handle_table.c
index 532d1ea6c..3703718a6 100644
--- a/mesalib/src/gallium/auxiliary/util/u_handle_table.c
+++ b/mesalib/src/gallium/auxiliary/util/u_handle_table.c
@@ -1,298 +1,298 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * Generic handle table implementation.
- *
- * @author José Fonseca <jrfonseca@tungstengraphics.com>
- */
-
-
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-
-#include "util/u_memory.h"
-#include "util/u_handle_table.h"
-
-
-#define HANDLE_TABLE_INITIAL_SIZE 16
-
-
-struct handle_table
-{
- /** Object array. Empty handles have a null object */
- void **objects;
-
- /** Number of objects the handle can currently hold */
- unsigned size;
- /** Number of consecutive objects allocated at the start of the table */
- unsigned filled;
-
- /** Optional object destructor */
- void (*destroy)(void *object);
-};
-
-
-struct handle_table *
-handle_table_create(void)
-{
- struct handle_table *ht;
-
- ht = MALLOC_STRUCT(handle_table);
- if(!ht)
- return NULL;
-
- ht->objects = (void **)CALLOC(HANDLE_TABLE_INITIAL_SIZE, sizeof(void *));
- if(!ht->objects) {
- FREE(ht);
- return NULL;
- }
-
- ht->size = HANDLE_TABLE_INITIAL_SIZE;
- ht->filled = 0;
-
- ht->destroy = NULL;
-
- return ht;
-}
-
-
-void
-handle_table_set_destroy(struct handle_table *ht,
- void (*destroy)(void *object))
-{
- assert(ht);
- if (!ht)
- return;
- ht->destroy = destroy;
-}
-
-
-/**
- * Resize the table if necessary
- */
-static INLINE int
-handle_table_resize(struct handle_table *ht,
- unsigned minimum_size)
-{
- unsigned new_size;
- void **new_objects;
-
- if(ht->size > minimum_size)
- return ht->size;
-
- new_size = ht->size;
- while(!(new_size > minimum_size))
- new_size *= 2;
- assert(new_size);
-
- new_objects = (void **)REALLOC((void *)ht->objects,
- ht->size*sizeof(void *),
- new_size*sizeof(void *));
- if(!new_objects)
- return 0;
-
- memset(new_objects + ht->size, 0, (new_size - ht->size)*sizeof(void *));
-
- ht->size = new_size;
- ht->objects = new_objects;
-
- return ht->size;
-}
-
-
-static INLINE void
-handle_table_clear(struct handle_table *ht,
- unsigned index)
-{
- void *object;
-
- /* The order here is important so that the object being destroyed is not
- * present in the table when seen by the destroy callback, because the
- * destroy callback may directly or indirectly call the other functions in
- * this module.
- */
-
- object = ht->objects[index];
- if(object) {
- ht->objects[index] = NULL;
-
- if(ht->destroy)
- ht->destroy(object);
- }
-}
-
-
-unsigned
-handle_table_add(struct handle_table *ht,
- void *object)
-{
- unsigned index;
- unsigned handle;
-
- assert(ht);
- assert(object);
- if(!object || !ht)
- return 0;
-
- /* linear search for an empty handle */
- while(ht->filled < ht->size) {
- if(!ht->objects[ht->filled])
- break;
- ++ht->filled;
- }
-
- index = ht->filled;
- handle = index + 1;
-
- /* check integer overflow */
- if(!handle)
- return 0;
-
- /* grow the table if necessary */
- if(!handle_table_resize(ht, index))
- return 0;
-
- assert(!ht->objects[index]);
- ht->objects[index] = object;
- ++ht->filled;
-
- return handle;
-}
-
-
-unsigned
-handle_table_set(struct handle_table *ht,
- unsigned handle,
- void *object)
-{
- unsigned index;
-
- assert(ht);
- assert(handle);
- if(!handle || !ht)
- return 0;
-
- assert(object);
- if(!object)
- return 0;
-
- index = handle - 1;
-
- /* grow the table if necessary */
- if(!handle_table_resize(ht, index))
- return 0;
-
- handle_table_clear(ht, index);
-
- ht->objects[index] = object;
-
- return handle;
-}
-
-
-void *
-handle_table_get(struct handle_table *ht,
- unsigned handle)
-{
- void *object;
-
- assert(ht);
- assert(handle);
- if(!handle || !ht || handle > ht->size)
- return NULL;
-
- object = ht->objects[handle - 1];
-
- return object;
-}
-
-
-void
-handle_table_remove(struct handle_table *ht,
- unsigned handle)
-{
- void *object;
- unsigned index;
-
- assert(ht);
- assert(handle);
- if(!handle || !ht || handle > ht->size)
- return;
-
- index = handle - 1;
- object = ht->objects[index];
- if(!object)
- return;
-
- handle_table_clear(ht, index);
-
- if(index < ht->filled)
- ht->filled = index;
-}
-
-
-unsigned
-handle_table_get_next_handle(struct handle_table *ht,
- unsigned handle)
-{
- unsigned index;
-
- for(index = handle; index < ht->size; ++index) {
- if(ht->objects[index])
- return index + 1;
- }
-
- return 0;
-}
-
-
-unsigned
-handle_table_get_first_handle(struct handle_table *ht)
-{
- return handle_table_get_next_handle(ht, 0);
-}
-
-
-void
-handle_table_destroy(struct handle_table *ht)
-{
- unsigned index;
- assert(ht);
-
- if (!ht)
- return;
-
- if(ht->destroy)
- for(index = 0; index < ht->size; ++index)
- handle_table_clear(ht, index);
-
- FREE(ht->objects);
- FREE(ht);
-}
-
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Generic handle table implementation.
+ *
+ * @author José Fonseca <jrfonseca@tungstengraphics.com>
+ */
+
+
+#include "pipe/p_compiler.h"
+#include "util/u_debug.h"
+
+#include "util/u_memory.h"
+#include "util/u_handle_table.h"
+
+
+#define HANDLE_TABLE_INITIAL_SIZE 16
+
+
+struct handle_table
+{
+ /** Object array. Empty handles have a null object */
+ void **objects;
+
+ /** Number of objects the handle can currently hold */
+ unsigned size;
+ /** Number of consecutive objects allocated at the start of the table */
+ unsigned filled;
+
+ /** Optional object destructor */
+ void (*destroy)(void *object);
+};
+
+
+struct handle_table *
+handle_table_create(void)
+{
+ struct handle_table *ht;
+
+ ht = MALLOC_STRUCT(handle_table);
+ if(!ht)
+ return NULL;
+
+ ht->objects = (void **)CALLOC(HANDLE_TABLE_INITIAL_SIZE, sizeof(void *));
+ if(!ht->objects) {
+ FREE(ht);
+ return NULL;
+ }
+
+ ht->size = HANDLE_TABLE_INITIAL_SIZE;
+ ht->filled = 0;
+
+ ht->destroy = NULL;
+
+ return ht;
+}
+
+
+void
+handle_table_set_destroy(struct handle_table *ht,
+ void (*destroy)(void *object))
+{
+ assert(ht);
+ if (!ht)
+ return;
+ ht->destroy = destroy;
+}
+
+
+/**
+ * Resize the table if necessary
+ */
+static INLINE int
+handle_table_resize(struct handle_table *ht,
+ unsigned minimum_size)
+{
+ unsigned new_size;
+ void **new_objects;
+
+ if(ht->size > minimum_size)
+ return ht->size;
+
+ new_size = ht->size;
+ while(!(new_size > minimum_size))
+ new_size *= 2;
+ assert(new_size);
+
+ new_objects = (void **)REALLOC((void *)ht->objects,
+ ht->size*sizeof(void *),
+ new_size*sizeof(void *));
+ if(!new_objects)
+ return 0;
+
+ memset(new_objects + ht->size, 0, (new_size - ht->size)*sizeof(void *));
+
+ ht->size = new_size;
+ ht->objects = new_objects;
+
+ return ht->size;
+}
+
+
+static INLINE void
+handle_table_clear(struct handle_table *ht,
+ unsigned index)
+{
+ void *object;
+
+ /* The order here is important so that the object being destroyed is not
+ * present in the table when seen by the destroy callback, because the
+ * destroy callback may directly or indirectly call the other functions in
+ * this module.
+ */
+
+ object = ht->objects[index];
+ if(object) {
+ ht->objects[index] = NULL;
+
+ if(ht->destroy)
+ ht->destroy(object);
+ }
+}
+
+
+unsigned
+handle_table_add(struct handle_table *ht,
+ void *object)
+{
+ unsigned index;
+ unsigned handle;
+
+ assert(ht);
+ assert(object);
+ if(!object || !ht)
+ return 0;
+
+ /* linear search for an empty handle */
+ while(ht->filled < ht->size) {
+ if(!ht->objects[ht->filled])
+ break;
+ ++ht->filled;
+ }
+
+ index = ht->filled;
+ handle = index + 1;
+
+ /* check integer overflow */
+ if(!handle)
+ return 0;
+
+ /* grow the table if necessary */
+ if(!handle_table_resize(ht, index))
+ return 0;
+
+ assert(!ht->objects[index]);
+ ht->objects[index] = object;
+ ++ht->filled;
+
+ return handle;
+}
+
+
+unsigned
+handle_table_set(struct handle_table *ht,
+ unsigned handle,
+ void *object)
+{
+ unsigned index;
+
+ assert(ht);
+ assert(handle);
+ if(!handle || !ht)
+ return 0;
+
+ assert(object);
+ if(!object)
+ return 0;
+
+ index = handle - 1;
+
+ /* grow the table if necessary */
+ if(!handle_table_resize(ht, index))
+ return 0;
+
+ handle_table_clear(ht, index);
+
+ ht->objects[index] = object;
+
+ return handle;
+}
+
+
+void *
+handle_table_get(struct handle_table *ht,
+ unsigned handle)
+{
+ void *object;
+
+ assert(ht);
+ assert(handle);
+ if(!handle || !ht || handle > ht->size)
+ return NULL;
+
+ object = ht->objects[handle - 1];
+
+ return object;
+}
+
+
+void
+handle_table_remove(struct handle_table *ht,
+ unsigned handle)
+{
+ void *object;
+ unsigned index;
+
+ assert(ht);
+ assert(handle);
+ if(!handle || !ht || handle > ht->size)
+ return;
+
+ index = handle - 1;
+ object = ht->objects[index];
+ if(!object)
+ return;
+
+ handle_table_clear(ht, index);
+
+ if(index < ht->filled)
+ ht->filled = index;
+}
+
+
+unsigned
+handle_table_get_next_handle(struct handle_table *ht,
+ unsigned handle)
+{
+ unsigned index;
+
+ for(index = handle; index < ht->size; ++index) {
+ if(ht->objects[index])
+ return index + 1;
+ }
+
+ return 0;
+}
+
+
+unsigned
+handle_table_get_first_handle(struct handle_table *ht)
+{
+ return handle_table_get_next_handle(ht, 0);
+}
+
+
+void
+handle_table_destroy(struct handle_table *ht)
+{
+ unsigned index;
+ assert(ht);
+
+ if (!ht)
+ return;
+
+ if(ht->destroy)
+ for(index = 0; index < ht->size; ++index)
+ handle_table_clear(ht, index);
+
+ FREE(ht->objects);
+ FREE(ht);
+}
+
diff --git a/mesalib/src/gallium/auxiliary/util/u_handle_table.h b/mesalib/src/gallium/auxiliary/util/u_handle_table.h
index a7320830e..d080135c9 100644
--- a/mesalib/src/gallium/auxiliary/util/u_handle_table.h
+++ b/mesalib/src/gallium/auxiliary/util/u_handle_table.h
@@ -1,116 +1,116 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * Generic handle table.
- *
- * @author José Fonseca <jrfonseca@tungstengraphics.com>
- */
-
-#ifndef U_HANDLE_TABLE_H_
-#define U_HANDLE_TABLE_H_
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- * Abstract data type to map integer handles to objects.
- *
- * Also referred as "pointer array".
- */
-struct handle_table;
-
-
-struct handle_table *
-handle_table_create(void);
-
-
-/**
- * Set an optional destructor callback.
- *
- * If set, it will be called during handle_table_remove and
- * handle_table_destroy calls.
- */
-void
-handle_table_set_destroy(struct handle_table *ht,
- void (*destroy)(void *object));
-
-
-/**
- * Add a new object.
- *
- * Returns a zero handle on failure (out of memory).
- */
-unsigned
-handle_table_add(struct handle_table *ht,
- void *object);
-
-/**
- * Returns zero on failure (out of memory).
- */
-unsigned
-handle_table_set(struct handle_table *ht,
- unsigned handle,
- void *object);
-
-/**
- * Fetch an existing object.
- *
- * Returns NULL for an invalid handle.
- */
-void *
-handle_table_get(struct handle_table *ht,
- unsigned handle);
-
-
-void
-handle_table_remove(struct handle_table *ht,
- unsigned handle);
-
-
-void
-handle_table_destroy(struct handle_table *ht);
-
-
-unsigned
-handle_table_get_first_handle(struct handle_table *ht);
-
-
-unsigned
-handle_table_get_next_handle(struct handle_table *ht,
- unsigned handle);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* U_HANDLE_TABLE_H_ */
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Generic handle table.
+ *
+ * @author José Fonseca <jrfonseca@tungstengraphics.com>
+ */
+
+#ifndef U_HANDLE_TABLE_H_
+#define U_HANDLE_TABLE_H_
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * Abstract data type to map integer handles to objects.
+ *
+ * Also referred as "pointer array".
+ */
+struct handle_table;
+
+
+struct handle_table *
+handle_table_create(void);
+
+
+/**
+ * Set an optional destructor callback.
+ *
+ * If set, it will be called during handle_table_remove and
+ * handle_table_destroy calls.
+ */
+void
+handle_table_set_destroy(struct handle_table *ht,
+ void (*destroy)(void *object));
+
+
+/**
+ * Add a new object.
+ *
+ * Returns a zero handle on failure (out of memory).
+ */
+unsigned
+handle_table_add(struct handle_table *ht,
+ void *object);
+
+/**
+ * Returns zero on failure (out of memory).
+ */
+unsigned
+handle_table_set(struct handle_table *ht,
+ unsigned handle,
+ void *object);
+
+/**
+ * Fetch an existing object.
+ *
+ * Returns NULL for an invalid handle.
+ */
+void *
+handle_table_get(struct handle_table *ht,
+ unsigned handle);
+
+
+void
+handle_table_remove(struct handle_table *ht,
+ unsigned handle);
+
+
+void
+handle_table_destroy(struct handle_table *ht);
+
+
+unsigned
+handle_table_get_first_handle(struct handle_table *ht);
+
+
+unsigned
+handle_table_get_next_handle(struct handle_table *ht,
+ unsigned handle);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* U_HANDLE_TABLE_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_hash.c b/mesalib/src/gallium/auxiliary/util/u_hash.c
index e0400c277..b67653ec7 100644
--- a/mesalib/src/gallium/auxiliary/util/u_hash.c
+++ b/mesalib/src/gallium/auxiliary/util/u_hash.c
@@ -1,121 +1,121 @@
-/**************************************************************************
- *
- * Copyright 2008 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * Hash functions implementation.
- *
- * @author Jose Fonseca
- */
-
-
-#include "u_hash.h"
-
-
-static const uint32_t
-util_crc32_table[256] = {
- 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
- 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
- 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
- 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
- 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
- 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
- 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
- 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
- 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
- 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
- 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
- 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
- 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
- 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
- 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
- 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
- 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
- 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
- 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
- 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
- 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
- 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
- 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
- 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
- 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
- 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
- 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
- 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
- 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
- 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
- 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
- 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
- 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
- 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
- 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
- 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
- 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
- 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
- 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
- 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
- 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
- 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
- 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
- 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
- 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
- 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
- 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
- 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
- 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
- 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
- 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
- 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
- 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
- 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
- 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
- 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
- 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
- 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
- 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
- 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
- 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
- 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
- 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
- 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
-};
-
-
-/**
- * @sa http://www.w3.org/TR/PNG/#D-CRCAppendix
- */
-uint32_t
-util_hash_crc32(const void *data, size_t size)
-{
- uint8_t *p = (uint8_t *)data;
- uint32_t crc = 0xffffffff;
-
- while (size--)
- crc = util_crc32_table[(crc ^ *p++) & 0xff] ^ (crc >> 8);
-
- return crc;
-}
+/**************************************************************************
+ *
+ * Copyright 2008 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Hash functions implementation.
+ *
+ * @author Jose Fonseca
+ */
+
+
+#include "u_hash.h"
+
+
+static const uint32_t
+util_crc32_table[256] = {
+ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
+ 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
+ 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
+ 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
+ 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+ 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
+ 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
+ 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
+ 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
+ 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+ 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
+ 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
+ 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
+ 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
+ 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+ 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
+ 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
+ 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
+ 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c,
+ 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+ 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
+ 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
+ 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
+ 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086,
+ 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4,
+ 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
+ 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
+ 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
+ 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+ 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe,
+ 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
+ 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
+ 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252,
+ 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+ 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60,
+ 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
+ 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
+ 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04,
+ 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+ 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a,
+ 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
+ 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
+ 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e,
+ 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+ 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
+ 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
+ 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
+ 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0,
+ 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6,
+ 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
+ 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
+ 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
+};
+
+
+/**
+ * @sa http://www.w3.org/TR/PNG/#D-CRCAppendix
+ */
+uint32_t
+util_hash_crc32(const void *data, size_t size)
+{
+ uint8_t *p = (uint8_t *)data;
+ uint32_t crc = 0xffffffff;
+
+ while (size--)
+ crc = util_crc32_table[(crc ^ *p++) & 0xff] ^ (crc >> 8);
+
+ return crc;
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_hash.h b/mesalib/src/gallium/auxiliary/util/u_hash.h
index feda08217..8d92b07c8 100644
--- a/mesalib/src/gallium/auxiliary/util/u_hash.h
+++ b/mesalib/src/gallium/auxiliary/util/u_hash.h
@@ -1,55 +1,55 @@
-/**************************************************************************
- *
- * Copyright 2008 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * Hash functions.
- *
- * @author Jose Fonseca <jfonseca@vmware.com>
- */
-
-#ifndef U_HASH_H_
-#define U_HASH_H_
-
-
-#include "pipe/p_compiler.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-uint32_t
-util_hash_crc32(const void *data, size_t size);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* U_HASH_H_ */
+/**************************************************************************
+ *
+ * Copyright 2008 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Hash functions.
+ *
+ * @author Jose Fonseca <jfonseca@vmware.com>
+ */
+
+#ifndef U_HASH_H_
+#define U_HASH_H_
+
+
+#include "pipe/p_compiler.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+uint32_t
+util_hash_crc32(const void *data, size_t size);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* U_HASH_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_hash_table.c b/mesalib/src/gallium/auxiliary/util/u_hash_table.c
index 417cc15be..5604e3ac3 100644
--- a/mesalib/src/gallium/auxiliary/util/u_hash_table.c
+++ b/mesalib/src/gallium/auxiliary/util/u_hash_table.c
@@ -1,293 +1,293 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * General purpose hash table implementation.
- *
- * Just uses the cso_hash for now, but it might be better switch to a linear
- * probing hash table implementation at some point -- as it is said they have
- * better lookup and cache performance and it appears to be possible to write
- * a lock-free implementation of such hash tables .
- *
- * @author José Fonseca <jrfonseca@tungstengraphics.com>
- */
-
-
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-
-#include "cso_cache/cso_hash.h"
-
-#include "util/u_memory.h"
-#include "util/u_hash_table.h"
-
-
-struct util_hash_table
-{
- struct cso_hash *cso;
-
- /** Hash function */
- unsigned (*hash)(void *key);
-
- /** Compare two keys */
- int (*compare)(void *key1, void *key2);
-
- /* TODO: key, value destructors? */
-};
-
-
-struct util_hash_table_item
-{
- void *key;
- void *value;
-};
-
-
-static INLINE struct util_hash_table_item *
-util_hash_table_item(struct cso_hash_iter iter)
-{
- return (struct util_hash_table_item *)cso_hash_iter_data(iter);
-}
-
-
-struct util_hash_table *
-util_hash_table_create(unsigned (*hash)(void *key),
- int (*compare)(void *key1, void *key2))
-{
- struct util_hash_table *ht;
-
- ht = MALLOC_STRUCT(util_hash_table);
- if(!ht)
- return NULL;
-
- ht->cso = cso_hash_create();
- if(!ht->cso) {
- FREE(ht);
- return NULL;
- }
-
- ht->hash = hash;
- ht->compare = compare;
-
- return ht;
-}
-
-
-static INLINE struct cso_hash_iter
-util_hash_table_find_iter(struct util_hash_table *ht,
- void *key,
- unsigned key_hash)
-{
- struct cso_hash_iter iter;
- struct util_hash_table_item *item;
-
- iter = cso_hash_find(ht->cso, key_hash);
- while (!cso_hash_iter_is_null(iter)) {
- item = (struct util_hash_table_item *)cso_hash_iter_data(iter);
- if (!ht->compare(item->key, key))
- break;
- iter = cso_hash_iter_next(iter);
- }
-
- return iter;
-}
-
-
-static INLINE struct util_hash_table_item *
-util_hash_table_find_item(struct util_hash_table *ht,
- void *key,
- unsigned key_hash)
-{
- struct cso_hash_iter iter;
- struct util_hash_table_item *item;
-
- iter = cso_hash_find(ht->cso, key_hash);
- while (!cso_hash_iter_is_null(iter)) {
- item = (struct util_hash_table_item *)cso_hash_iter_data(iter);
- if (!ht->compare(item->key, key))
- return item;
- iter = cso_hash_iter_next(iter);
- }
-
- return NULL;
-}
-
-
-enum pipe_error
-util_hash_table_set(struct util_hash_table *ht,
- void *key,
- void *value)
-{
- unsigned key_hash;
- struct util_hash_table_item *item;
- struct cso_hash_iter iter;
-
- assert(ht);
- if (!ht)
- return PIPE_ERROR_BAD_INPUT;
-
- key_hash = ht->hash(key);
-
- item = util_hash_table_find_item(ht, key, key_hash);
- if(item) {
- /* TODO: key/value destruction? */
- item->value = value;
- return PIPE_OK;
- }
-
- item = MALLOC_STRUCT(util_hash_table_item);
- if(!item)
- return PIPE_ERROR_OUT_OF_MEMORY;
-
- item->key = key;
- item->value = value;
-
- iter = cso_hash_insert(ht->cso, key_hash, item);
- if(cso_hash_iter_is_null(iter)) {
- FREE(item);
- return PIPE_ERROR_OUT_OF_MEMORY;
- }
-
- return PIPE_OK;
-}
-
-
-void *
-util_hash_table_get(struct util_hash_table *ht,
- void *key)
-{
- unsigned key_hash;
- struct util_hash_table_item *item;
-
- assert(ht);
- if (!ht)
- return NULL;
-
- key_hash = ht->hash(key);
-
- item = util_hash_table_find_item(ht, key, key_hash);
- if(!item)
- return NULL;
-
- return item->value;
-}
-
-
-void
-util_hash_table_remove(struct util_hash_table *ht,
- void *key)
-{
- unsigned key_hash;
- struct cso_hash_iter iter;
- struct util_hash_table_item *item;
-
- assert(ht);
- if (!ht)
- return;
-
- key_hash = ht->hash(key);
-
- iter = util_hash_table_find_iter(ht, key, key_hash);
- if(cso_hash_iter_is_null(iter))
- return;
-
- item = util_hash_table_item(iter);
- assert(item);
- FREE(item);
-
- cso_hash_erase(ht->cso, iter);
-}
-
-
-void
-util_hash_table_clear(struct util_hash_table *ht)
-{
- struct cso_hash_iter iter;
- struct util_hash_table_item *item;
-
- assert(ht);
- if (!ht)
- return;
-
- iter = cso_hash_first_node(ht->cso);
- while (!cso_hash_iter_is_null(iter)) {
- item = (struct util_hash_table_item *)cso_hash_take(ht->cso, cso_hash_iter_key(iter));
- FREE(item);
- iter = cso_hash_first_node(ht->cso);
- }
-}
-
-
-enum pipe_error
-util_hash_table_foreach(struct util_hash_table *ht,
- enum pipe_error (*callback)
- (void *key, void *value, void *data),
- void *data)
-{
- struct cso_hash_iter iter;
- struct util_hash_table_item *item;
- enum pipe_error result;
-
- assert(ht);
- if (!ht)
- return PIPE_ERROR_BAD_INPUT;
-
- iter = cso_hash_first_node(ht->cso);
- while (!cso_hash_iter_is_null(iter)) {
- item = (struct util_hash_table_item *)cso_hash_iter_data(iter);
- result = callback(item->key, item->value, data);
- if(result != PIPE_OK)
- return result;
- iter = cso_hash_iter_next(iter);
- }
-
- return PIPE_OK;
-}
-
-
-void
-util_hash_table_destroy(struct util_hash_table *ht)
-{
- struct cso_hash_iter iter;
- struct util_hash_table_item *item;
-
- assert(ht);
- if (!ht)
- return;
-
- iter = cso_hash_first_node(ht->cso);
- while (!cso_hash_iter_is_null(iter)) {
- item = (struct util_hash_table_item *)cso_hash_iter_data(iter);
- FREE(item);
- iter = cso_hash_iter_next(iter);
- }
-
- cso_hash_delete(ht->cso);
-
- FREE(ht);
-}
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * General purpose hash table implementation.
+ *
+ * Just uses the cso_hash for now, but it might be better switch to a linear
+ * probing hash table implementation at some point -- as it is said they have
+ * better lookup and cache performance and it appears to be possible to write
+ * a lock-free implementation of such hash tables .
+ *
+ * @author José Fonseca <jrfonseca@tungstengraphics.com>
+ */
+
+
+#include "pipe/p_compiler.h"
+#include "util/u_debug.h"
+
+#include "cso_cache/cso_hash.h"
+
+#include "util/u_memory.h"
+#include "util/u_hash_table.h"
+
+
+struct util_hash_table
+{
+ struct cso_hash *cso;
+
+ /** Hash function */
+ unsigned (*hash)(void *key);
+
+ /** Compare two keys */
+ int (*compare)(void *key1, void *key2);
+
+ /* TODO: key, value destructors? */
+};
+
+
+struct util_hash_table_item
+{
+ void *key;
+ void *value;
+};
+
+
+static INLINE struct util_hash_table_item *
+util_hash_table_item(struct cso_hash_iter iter)
+{
+ return (struct util_hash_table_item *)cso_hash_iter_data(iter);
+}
+
+
+struct util_hash_table *
+util_hash_table_create(unsigned (*hash)(void *key),
+ int (*compare)(void *key1, void *key2))
+{
+ struct util_hash_table *ht;
+
+ ht = MALLOC_STRUCT(util_hash_table);
+ if(!ht)
+ return NULL;
+
+ ht->cso = cso_hash_create();
+ if(!ht->cso) {
+ FREE(ht);
+ return NULL;
+ }
+
+ ht->hash = hash;
+ ht->compare = compare;
+
+ return ht;
+}
+
+
+static INLINE struct cso_hash_iter
+util_hash_table_find_iter(struct util_hash_table *ht,
+ void *key,
+ unsigned key_hash)
+{
+ struct cso_hash_iter iter;
+ struct util_hash_table_item *item;
+
+ iter = cso_hash_find(ht->cso, key_hash);
+ while (!cso_hash_iter_is_null(iter)) {
+ item = (struct util_hash_table_item *)cso_hash_iter_data(iter);
+ if (!ht->compare(item->key, key))
+ break;
+ iter = cso_hash_iter_next(iter);
+ }
+
+ return iter;
+}
+
+
+static INLINE struct util_hash_table_item *
+util_hash_table_find_item(struct util_hash_table *ht,
+ void *key,
+ unsigned key_hash)
+{
+ struct cso_hash_iter iter;
+ struct util_hash_table_item *item;
+
+ iter = cso_hash_find(ht->cso, key_hash);
+ while (!cso_hash_iter_is_null(iter)) {
+ item = (struct util_hash_table_item *)cso_hash_iter_data(iter);
+ if (!ht->compare(item->key, key))
+ return item;
+ iter = cso_hash_iter_next(iter);
+ }
+
+ return NULL;
+}
+
+
+enum pipe_error
+util_hash_table_set(struct util_hash_table *ht,
+ void *key,
+ void *value)
+{
+ unsigned key_hash;
+ struct util_hash_table_item *item;
+ struct cso_hash_iter iter;
+
+ assert(ht);
+ if (!ht)
+ return PIPE_ERROR_BAD_INPUT;
+
+ key_hash = ht->hash(key);
+
+ item = util_hash_table_find_item(ht, key, key_hash);
+ if(item) {
+ /* TODO: key/value destruction? */
+ item->value = value;
+ return PIPE_OK;
+ }
+
+ item = MALLOC_STRUCT(util_hash_table_item);
+ if(!item)
+ return PIPE_ERROR_OUT_OF_MEMORY;
+
+ item->key = key;
+ item->value = value;
+
+ iter = cso_hash_insert(ht->cso, key_hash, item);
+ if(cso_hash_iter_is_null(iter)) {
+ FREE(item);
+ return PIPE_ERROR_OUT_OF_MEMORY;
+ }
+
+ return PIPE_OK;
+}
+
+
+void *
+util_hash_table_get(struct util_hash_table *ht,
+ void *key)
+{
+ unsigned key_hash;
+ struct util_hash_table_item *item;
+
+ assert(ht);
+ if (!ht)
+ return NULL;
+
+ key_hash = ht->hash(key);
+
+ item = util_hash_table_find_item(ht, key, key_hash);
+ if(!item)
+ return NULL;
+
+ return item->value;
+}
+
+
+void
+util_hash_table_remove(struct util_hash_table *ht,
+ void *key)
+{
+ unsigned key_hash;
+ struct cso_hash_iter iter;
+ struct util_hash_table_item *item;
+
+ assert(ht);
+ if (!ht)
+ return;
+
+ key_hash = ht->hash(key);
+
+ iter = util_hash_table_find_iter(ht, key, key_hash);
+ if(cso_hash_iter_is_null(iter))
+ return;
+
+ item = util_hash_table_item(iter);
+ assert(item);
+ FREE(item);
+
+ cso_hash_erase(ht->cso, iter);
+}
+
+
+void
+util_hash_table_clear(struct util_hash_table *ht)
+{
+ struct cso_hash_iter iter;
+ struct util_hash_table_item *item;
+
+ assert(ht);
+ if (!ht)
+ return;
+
+ iter = cso_hash_first_node(ht->cso);
+ while (!cso_hash_iter_is_null(iter)) {
+ item = (struct util_hash_table_item *)cso_hash_take(ht->cso, cso_hash_iter_key(iter));
+ FREE(item);
+ iter = cso_hash_first_node(ht->cso);
+ }
+}
+
+
+enum pipe_error
+util_hash_table_foreach(struct util_hash_table *ht,
+ enum pipe_error (*callback)
+ (void *key, void *value, void *data),
+ void *data)
+{
+ struct cso_hash_iter iter;
+ struct util_hash_table_item *item;
+ enum pipe_error result;
+
+ assert(ht);
+ if (!ht)
+ return PIPE_ERROR_BAD_INPUT;
+
+ iter = cso_hash_first_node(ht->cso);
+ while (!cso_hash_iter_is_null(iter)) {
+ item = (struct util_hash_table_item *)cso_hash_iter_data(iter);
+ result = callback(item->key, item->value, data);
+ if(result != PIPE_OK)
+ return result;
+ iter = cso_hash_iter_next(iter);
+ }
+
+ return PIPE_OK;
+}
+
+
+void
+util_hash_table_destroy(struct util_hash_table *ht)
+{
+ struct cso_hash_iter iter;
+ struct util_hash_table_item *item;
+
+ assert(ht);
+ if (!ht)
+ return;
+
+ iter = cso_hash_first_node(ht->cso);
+ while (!cso_hash_iter_is_null(iter)) {
+ item = (struct util_hash_table_item *)cso_hash_iter_data(iter);
+ FREE(item);
+ iter = cso_hash_iter_next(iter);
+ }
+
+ cso_hash_delete(ht->cso);
+
+ FREE(ht);
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_hash_table.h b/mesalib/src/gallium/auxiliary/util/u_hash_table.h
index 5b14ff72d..51ec10a80 100644
--- a/mesalib/src/gallium/auxiliary/util/u_hash_table.h
+++ b/mesalib/src/gallium/auxiliary/util/u_hash_table.h
@@ -1,96 +1,96 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * General purpose hash table.
- *
- * @author José Fonseca <jrfonseca@tungstengraphics.com>
- */
-
-#ifndef U_HASH_TABLE_H_
-#define U_HASH_TABLE_H_
-
-
-#include "pipe/p_defines.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- * Generic purpose hash table.
- */
-struct util_hash_table;
-
-
-/**
- * Create an hash table.
- *
- * @param hash hash function
- * @param compare should return 0 for two equal keys.
- */
-struct util_hash_table *
-util_hash_table_create(unsigned (*hash)(void *key),
- int (*compare)(void *key1, void *key2));
-
-
-enum pipe_error
-util_hash_table_set(struct util_hash_table *ht,
- void *key,
- void *value);
-
-void *
-util_hash_table_get(struct util_hash_table *ht,
- void *key);
-
-
-void
-util_hash_table_remove(struct util_hash_table *ht,
- void *key);
-
-
-void
-util_hash_table_clear(struct util_hash_table *ht);
-
-
-enum pipe_error
-util_hash_table_foreach(struct util_hash_table *ht,
- enum pipe_error (*callback)
- (void *key, void *value, void *data),
- void *data);
-
-void
-util_hash_table_destroy(struct util_hash_table *ht);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* U_HASH_TABLE_H_ */
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * General purpose hash table.
+ *
+ * @author José Fonseca <jrfonseca@tungstengraphics.com>
+ */
+
+#ifndef U_HASH_TABLE_H_
+#define U_HASH_TABLE_H_
+
+
+#include "pipe/p_defines.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * Generic purpose hash table.
+ */
+struct util_hash_table;
+
+
+/**
+ * Create an hash table.
+ *
+ * @param hash hash function
+ * @param compare should return 0 for two equal keys.
+ */
+struct util_hash_table *
+util_hash_table_create(unsigned (*hash)(void *key),
+ int (*compare)(void *key1, void *key2));
+
+
+enum pipe_error
+util_hash_table_set(struct util_hash_table *ht,
+ void *key,
+ void *value);
+
+void *
+util_hash_table_get(struct util_hash_table *ht,
+ void *key);
+
+
+void
+util_hash_table_remove(struct util_hash_table *ht,
+ void *key);
+
+
+void
+util_hash_table_clear(struct util_hash_table *ht);
+
+
+enum pipe_error
+util_hash_table_foreach(struct util_hash_table *ht,
+ enum pipe_error (*callback)
+ (void *key, void *value, void *data),
+ void *data);
+
+void
+util_hash_table_destroy(struct util_hash_table *ht);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* U_HASH_TABLE_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_init.h b/mesalib/src/gallium/auxiliary/util/u_init.h
index a1d4f1b04..7bc356a79 100644
--- a/mesalib/src/gallium/auxiliary/util/u_init.h
+++ b/mesalib/src/gallium/auxiliary/util/u_init.h
@@ -1,52 +1,52 @@
-/*
- * Copyright 2010 Luca Barbieri
- *
- * 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 (including the
- * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef U_INIT_H
-#define U_INIT_H
-
-/* Use UTIL_INIT(f) to have f called at program initialization.
- Note that it is only guaranteed to be called if any symbol in the
- .c file it is in sis referenced by the program.
-
- UTIL_INIT functions are called in arbitrary order.
-*/
-
-#ifdef __cplusplus
-/* use a C++ global constructor */
-#define UTIL_INIT(f) struct f##__gctor_t {f##__gctor_t() {x();}} f##__gctor;
-#elif defined(_MSC_VER)
-/* add a pointer to the section where MSVC stores global constructor pointers */
-/* see http://blogs.msdn.com/vcblog/archive/2006/10/20/crt-initialization.aspx and
- http://stackoverflow.com/questions/1113409/attribute-constructor-equivalent-in-vc */
-#pragma section(".CRT$XCU",read)
-#define UTIL_INIT(f) static void __cdecl f##__init(void) {f();}; __declspec(allocate(".CRT$XCU")) void (__cdecl* f##__xcu)(void) = f##__init;
-#elif defined(__GNUC__)
-#define UTIL_INIT(f) static void f##__init(void) __attribute__((constructor)); static void f##__init(void) {f();}
-#else
-#error Unsupported compiler: please find out how to implement global initializers in C on it
-#endif
-
-#endif
-
+/*
+ * Copyright 2010 Luca Barbieri
+ *
+ * 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 (including the
+ * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef U_INIT_H
+#define U_INIT_H
+
+/* Use UTIL_INIT(f) to have f called at program initialization.
+ Note that it is only guaranteed to be called if any symbol in the
+ .c file it is in sis referenced by the program.
+
+ UTIL_INIT functions are called in arbitrary order.
+*/
+
+#ifdef __cplusplus
+/* use a C++ global constructor */
+#define UTIL_INIT(f) struct f##__gctor_t {f##__gctor_t() {x();}} f##__gctor;
+#elif defined(_MSC_VER)
+/* add a pointer to the section where MSVC stores global constructor pointers */
+/* see http://blogs.msdn.com/vcblog/archive/2006/10/20/crt-initialization.aspx and
+ http://stackoverflow.com/questions/1113409/attribute-constructor-equivalent-in-vc */
+#pragma section(".CRT$XCU",read)
+#define UTIL_INIT(f) static void __cdecl f##__init(void) {f();}; __declspec(allocate(".CRT$XCU")) void (__cdecl* f##__xcu)(void) = f##__init;
+#elif defined(__GNUC__)
+#define UTIL_INIT(f) static void f##__init(void) __attribute__((constructor)); static void f##__init(void) {f();}
+#else
+#error Unsupported compiler: please find out how to implement global initializers in C on it
+#endif
+
+#endif
+
diff --git a/mesalib/src/gallium/auxiliary/util/u_keymap.c b/mesalib/src/gallium/auxiliary/util/u_keymap.c
index a06478b21..e161ccd88 100644
--- a/mesalib/src/gallium/auxiliary/util/u_keymap.c
+++ b/mesalib/src/gallium/auxiliary/util/u_keymap.c
@@ -1,318 +1,318 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * Key lookup/associative container.
- *
- * Like Jose's util_hash_table, based on CSO cache code for now.
- *
- * Author: Brian Paul
- */
-
-
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-
-#include "cso_cache/cso_hash.h"
-
-#include "util/u_memory.h"
-#include "util/u_keymap.h"
-
-
-struct keymap
-{
- struct cso_hash *cso;
- unsigned key_size;
- unsigned max_entries; /* XXX not obeyed net */
- unsigned num_entries;
- keymap_delete_func delete_func;
-};
-
-
-struct keymap_item
-{
- void *key, *value;
-};
-
-
-/**
- * This the default key-delete function used when the client doesn't
- * provide one.
- */
-static void
-default_delete_func(const struct keymap *map,
- const void *key, void *data, void *user)
-{
- FREE((void*) data);
-}
-
-
-static INLINE struct keymap_item *
-hash_table_item(struct cso_hash_iter iter)
-{
- return (struct keymap_item *) cso_hash_iter_data(iter);
-}
-
-
-/**
- * Return 4-byte hash key for a block of bytes.
- */
-static unsigned
-hash(const void *key, unsigned keySize)
-{
- unsigned i, hash;
-
- keySize /= 4; /* convert from bytes to uints */
-
- hash = 0;
- for (i = 0; i < keySize; i++) {
- hash ^= (i + 1) * ((const unsigned *) key)[i];
- }
-
- /*hash = hash ^ (hash >> 11) ^ (hash >> 22);*/
-
- return hash;
-}
-
-
-/**
- * Create a new map.
- * \param keySize size of the keys in bytes
- * \param maxEntries max number of entries to allow (~0 = infinity)
- * \param deleteFunc optional callback to call when entries
- * are deleted/replaced
- */
-struct keymap *
-util_new_keymap(unsigned keySize, unsigned maxEntries,
- keymap_delete_func deleteFunc)
-{
- struct keymap *map = MALLOC_STRUCT(keymap);
- if (!map)
- return NULL;
-
- map->cso = cso_hash_create();
- if (!map->cso) {
- FREE(map);
- return NULL;
- }
-
- map->max_entries = maxEntries;
- map->num_entries = 0;
- map->key_size = keySize;
- map->delete_func = deleteFunc ? deleteFunc : default_delete_func;
-
- return map;
-}
-
-
-/**
- * Delete/free a keymap and all entries. The deleteFunc that was given at
- * create time will be called for each entry.
- * \param user user-provided pointer passed through to the delete callback
- */
-void
-util_delete_keymap(struct keymap *map, void *user)
-{
- util_keymap_remove_all(map, user);
- cso_hash_delete(map->cso);
- FREE(map);
-}
-
-
-static INLINE struct cso_hash_iter
-hash_table_find_iter(const struct keymap *map, const void *key,
- unsigned key_hash)
-{
- struct cso_hash_iter iter;
- struct keymap_item *item;
-
- iter = cso_hash_find(map->cso, key_hash);
- while (!cso_hash_iter_is_null(iter)) {
- item = (struct keymap_item *) cso_hash_iter_data(iter);
- if (!memcmp(item->key, key, map->key_size))
- break;
- iter = cso_hash_iter_next(iter);
- }
-
- return iter;
-}
-
-
-static INLINE struct keymap_item *
-hash_table_find_item(const struct keymap *map, const void *key,
- unsigned key_hash)
-{
- struct cso_hash_iter iter = hash_table_find_iter(map, key, key_hash);
- if (cso_hash_iter_is_null(iter)) {
- return NULL;
- }
- else {
- return hash_table_item(iter);
- }
-}
-
-
-/**
- * Insert a new key + data pointer into the table.
- * Note: we create a copy of the key, but not the data!
- * If the key is already present in the table, replace the existing
- * entry (calling the delete callback on the previous entry).
- * If the maximum capacity of the map is reached an old entry
- * will be deleted (the delete callback will be called).
- */
-boolean
-util_keymap_insert(struct keymap *map, const void *key,
- const void *data, void *user)
-{
- unsigned key_hash;
- struct keymap_item *item;
- struct cso_hash_iter iter;
-
- assert(map);
- if (!map)
- return FALSE;
-
- key_hash = hash(key, map->key_size);
-
- item = hash_table_find_item(map, key, key_hash);
- if (item) {
- /* call delete callback for old entry/item */
- map->delete_func(map, item->key, item->value, user);
- item->value = (void *) data;
- return TRUE;
- }
-
- item = MALLOC_STRUCT(keymap_item);
- if (!item)
- return FALSE;
-
- item->key = mem_dup(key, map->key_size);
- item->value = (void *) data;
-
- iter = cso_hash_insert(map->cso, key_hash, item);
- if (cso_hash_iter_is_null(iter)) {
- FREE(item);
- return FALSE;
- }
-
- map->num_entries++;
-
- return TRUE;
-}
-
-
-/**
- * Look up a key in the map and return the associated data pointer.
- */
-const void *
-util_keymap_lookup(const struct keymap *map, const void *key)
-{
- unsigned key_hash;
- struct keymap_item *item;
-
- assert(map);
- if (!map)
- return NULL;
-
- key_hash = hash(key, map->key_size);
-
- item = hash_table_find_item(map, key, key_hash);
- if (!item)
- return NULL;
-
- return item->value;
-}
-
-
-/**
- * Remove an entry from the map.
- * The delete callback will be called if the given key/entry is found.
- * \param user passed to the delete callback as the last param.
- */
-void
-util_keymap_remove(struct keymap *map, const void *key, void *user)
-{
- unsigned key_hash;
- struct cso_hash_iter iter;
- struct keymap_item *item;
-
- assert(map);
- if (!map)
- return;
-
- key_hash = hash(key, map->key_size);
-
- iter = hash_table_find_iter(map, key, key_hash);
- if (cso_hash_iter_is_null(iter))
- return;
-
- item = hash_table_item(iter);
- assert(item);
- if (!item)
- return;
- map->delete_func(map, item->key, item->value, user);
- FREE(item->key);
- FREE(item);
-
- map->num_entries--;
-
- cso_hash_erase(map->cso, iter);
-}
-
-
-/**
- * Remove all entries from the map, calling the delete callback for each.
- * \param user passed to the delete callback as the last param.
- */
-void
-util_keymap_remove_all(struct keymap *map, void *user)
-{
- struct cso_hash_iter iter;
- struct keymap_item *item;
-
- assert(map);
- if (!map)
- return;
-
- iter = cso_hash_first_node(map->cso);
- while (!cso_hash_iter_is_null(iter)) {
- item = (struct keymap_item *)
- cso_hash_take(map->cso, cso_hash_iter_key(iter));
- map->delete_func(map, item->key, item->value, user);
- FREE(item->key);
- FREE(item);
- iter = cso_hash_first_node(map->cso);
- }
-}
-
-
-extern void
-util_keymap_info(const struct keymap *map)
-{
- debug_printf("Keymap %p: %u of max %u entries\n",
- (void *) map, map->num_entries, map->max_entries);
-}
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * Key lookup/associative container.
+ *
+ * Like Jose's util_hash_table, based on CSO cache code for now.
+ *
+ * Author: Brian Paul
+ */
+
+
+#include "pipe/p_compiler.h"
+#include "util/u_debug.h"
+
+#include "cso_cache/cso_hash.h"
+
+#include "util/u_memory.h"
+#include "util/u_keymap.h"
+
+
+struct keymap
+{
+ struct cso_hash *cso;
+ unsigned key_size;
+ unsigned max_entries; /* XXX not obeyed net */
+ unsigned num_entries;
+ keymap_delete_func delete_func;
+};
+
+
+struct keymap_item
+{
+ void *key, *value;
+};
+
+
+/**
+ * This the default key-delete function used when the client doesn't
+ * provide one.
+ */
+static void
+default_delete_func(const struct keymap *map,
+ const void *key, void *data, void *user)
+{
+ FREE((void*) data);
+}
+
+
+static INLINE struct keymap_item *
+hash_table_item(struct cso_hash_iter iter)
+{
+ return (struct keymap_item *) cso_hash_iter_data(iter);
+}
+
+
+/**
+ * Return 4-byte hash key for a block of bytes.
+ */
+static unsigned
+hash(const void *key, unsigned keySize)
+{
+ unsigned i, hash;
+
+ keySize /= 4; /* convert from bytes to uints */
+
+ hash = 0;
+ for (i = 0; i < keySize; i++) {
+ hash ^= (i + 1) * ((const unsigned *) key)[i];
+ }
+
+ /*hash = hash ^ (hash >> 11) ^ (hash >> 22);*/
+
+ return hash;
+}
+
+
+/**
+ * Create a new map.
+ * \param keySize size of the keys in bytes
+ * \param maxEntries max number of entries to allow (~0 = infinity)
+ * \param deleteFunc optional callback to call when entries
+ * are deleted/replaced
+ */
+struct keymap *
+util_new_keymap(unsigned keySize, unsigned maxEntries,
+ keymap_delete_func deleteFunc)
+{
+ struct keymap *map = MALLOC_STRUCT(keymap);
+ if (!map)
+ return NULL;
+
+ map->cso = cso_hash_create();
+ if (!map->cso) {
+ FREE(map);
+ return NULL;
+ }
+
+ map->max_entries = maxEntries;
+ map->num_entries = 0;
+ map->key_size = keySize;
+ map->delete_func = deleteFunc ? deleteFunc : default_delete_func;
+
+ return map;
+}
+
+
+/**
+ * Delete/free a keymap and all entries. The deleteFunc that was given at
+ * create time will be called for each entry.
+ * \param user user-provided pointer passed through to the delete callback
+ */
+void
+util_delete_keymap(struct keymap *map, void *user)
+{
+ util_keymap_remove_all(map, user);
+ cso_hash_delete(map->cso);
+ FREE(map);
+}
+
+
+static INLINE struct cso_hash_iter
+hash_table_find_iter(const struct keymap *map, const void *key,
+ unsigned key_hash)
+{
+ struct cso_hash_iter iter;
+ struct keymap_item *item;
+
+ iter = cso_hash_find(map->cso, key_hash);
+ while (!cso_hash_iter_is_null(iter)) {
+ item = (struct keymap_item *) cso_hash_iter_data(iter);
+ if (!memcmp(item->key, key, map->key_size))
+ break;
+ iter = cso_hash_iter_next(iter);
+ }
+
+ return iter;
+}
+
+
+static INLINE struct keymap_item *
+hash_table_find_item(const struct keymap *map, const void *key,
+ unsigned key_hash)
+{
+ struct cso_hash_iter iter = hash_table_find_iter(map, key, key_hash);
+ if (cso_hash_iter_is_null(iter)) {
+ return NULL;
+ }
+ else {
+ return hash_table_item(iter);
+ }
+}
+
+
+/**
+ * Insert a new key + data pointer into the table.
+ * Note: we create a copy of the key, but not the data!
+ * If the key is already present in the table, replace the existing
+ * entry (calling the delete callback on the previous entry).
+ * If the maximum capacity of the map is reached an old entry
+ * will be deleted (the delete callback will be called).
+ */
+boolean
+util_keymap_insert(struct keymap *map, const void *key,
+ const void *data, void *user)
+{
+ unsigned key_hash;
+ struct keymap_item *item;
+ struct cso_hash_iter iter;
+
+ assert(map);
+ if (!map)
+ return FALSE;
+
+ key_hash = hash(key, map->key_size);
+
+ item = hash_table_find_item(map, key, key_hash);
+ if (item) {
+ /* call delete callback for old entry/item */
+ map->delete_func(map, item->key, item->value, user);
+ item->value = (void *) data;
+ return TRUE;
+ }
+
+ item = MALLOC_STRUCT(keymap_item);
+ if (!item)
+ return FALSE;
+
+ item->key = mem_dup(key, map->key_size);
+ item->value = (void *) data;
+
+ iter = cso_hash_insert(map->cso, key_hash, item);
+ if (cso_hash_iter_is_null(iter)) {
+ FREE(item);
+ return FALSE;
+ }
+
+ map->num_entries++;
+
+ return TRUE;
+}
+
+
+/**
+ * Look up a key in the map and return the associated data pointer.
+ */
+const void *
+util_keymap_lookup(const struct keymap *map, const void *key)
+{
+ unsigned key_hash;
+ struct keymap_item *item;
+
+ assert(map);
+ if (!map)
+ return NULL;
+
+ key_hash = hash(key, map->key_size);
+
+ item = hash_table_find_item(map, key, key_hash);
+ if (!item)
+ return NULL;
+
+ return item->value;
+}
+
+
+/**
+ * Remove an entry from the map.
+ * The delete callback will be called if the given key/entry is found.
+ * \param user passed to the delete callback as the last param.
+ */
+void
+util_keymap_remove(struct keymap *map, const void *key, void *user)
+{
+ unsigned key_hash;
+ struct cso_hash_iter iter;
+ struct keymap_item *item;
+
+ assert(map);
+ if (!map)
+ return;
+
+ key_hash = hash(key, map->key_size);
+
+ iter = hash_table_find_iter(map, key, key_hash);
+ if (cso_hash_iter_is_null(iter))
+ return;
+
+ item = hash_table_item(iter);
+ assert(item);
+ if (!item)
+ return;
+ map->delete_func(map, item->key, item->value, user);
+ FREE(item->key);
+ FREE(item);
+
+ map->num_entries--;
+
+ cso_hash_erase(map->cso, iter);
+}
+
+
+/**
+ * Remove all entries from the map, calling the delete callback for each.
+ * \param user passed to the delete callback as the last param.
+ */
+void
+util_keymap_remove_all(struct keymap *map, void *user)
+{
+ struct cso_hash_iter iter;
+ struct keymap_item *item;
+
+ assert(map);
+ if (!map)
+ return;
+
+ iter = cso_hash_first_node(map->cso);
+ while (!cso_hash_iter_is_null(iter)) {
+ item = (struct keymap_item *)
+ cso_hash_take(map->cso, cso_hash_iter_key(iter));
+ map->delete_func(map, item->key, item->value, user);
+ FREE(item->key);
+ FREE(item);
+ iter = cso_hash_first_node(map->cso);
+ }
+}
+
+
+extern void
+util_keymap_info(const struct keymap *map)
+{
+ debug_printf("Keymap %p: %u of max %u entries\n",
+ (void *) map, map->num_entries, map->max_entries);
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_keymap.h b/mesalib/src/gallium/auxiliary/util/u_keymap.h
index e38e6fec6..8d60a76fc 100644
--- a/mesalib/src/gallium/auxiliary/util/u_keymap.h
+++ b/mesalib/src/gallium/auxiliary/util/u_keymap.h
@@ -1,68 +1,68 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef U_KEYMAP_H
-#define U_KEYMAP_H
-
-#include "pipe/p_compiler.h"
-
-
-/** opaque keymap type */
-struct keymap;
-
-
-/** Delete/callback function type */
-typedef void (*keymap_delete_func)(const struct keymap *map,
- const void *key, void *data,
- void *user);
-
-
-extern struct keymap *
-util_new_keymap(unsigned keySize, unsigned maxEntries,
- keymap_delete_func deleteFunc);
-
-extern void
-util_delete_keymap(struct keymap *map, void *user);
-
-extern boolean
-util_keymap_insert(struct keymap *map, const void *key,
- const void *data, void *user);
-
-extern const void *
-util_keymap_lookup(const struct keymap *map, const void *key);
-
-extern void
-util_keymap_remove(struct keymap *map, const void *key, void *user);
-
-extern void
-util_keymap_remove_all(struct keymap *map, void *user);
-
-extern void
-util_keymap_info(const struct keymap *map);
-
-
-#endif /* U_KEYMAP_H */
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef U_KEYMAP_H
+#define U_KEYMAP_H
+
+#include "pipe/p_compiler.h"
+
+
+/** opaque keymap type */
+struct keymap;
+
+
+/** Delete/callback function type */
+typedef void (*keymap_delete_func)(const struct keymap *map,
+ const void *key, void *data,
+ void *user);
+
+
+extern struct keymap *
+util_new_keymap(unsigned keySize, unsigned maxEntries,
+ keymap_delete_func deleteFunc);
+
+extern void
+util_delete_keymap(struct keymap *map, void *user);
+
+extern boolean
+util_keymap_insert(struct keymap *map, const void *key,
+ const void *data, void *user);
+
+extern const void *
+util_keymap_lookup(const struct keymap *map, const void *key);
+
+extern void
+util_keymap_remove(struct keymap *map, const void *key, void *user);
+
+extern void
+util_keymap_remove_all(struct keymap *map, void *user);
+
+extern void
+util_keymap_info(const struct keymap *map);
+
+
+#endif /* U_KEYMAP_H */
diff --git a/mesalib/src/gallium/auxiliary/util/u_linear.c b/mesalib/src/gallium/auxiliary/util/u_linear.c
index 8f8935d8a..f1aef2167 100644
--- a/mesalib/src/gallium/auxiliary/util/u_linear.c
+++ b/mesalib/src/gallium/auxiliary/util/u_linear.c
@@ -1,101 +1,101 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * Functions for converting tiled data to linear and vice versa.
- */
-
-
-#include "util/u_debug.h"
-#include "u_linear.h"
-
-void
-pipe_linear_to_tile(size_t src_stride, const void *src_ptr,
- struct pipe_tile_info *t, void *dst_ptr)
-{
- int x, y, z;
- char *ptr;
- size_t bytes = t->cols * t->block.size;
- char *dst_ptr2 = (char *) dst_ptr;
-
- assert(pipe_linear_check_tile(t));
-
- /* lets write lineary to the tiled buffer */
- for (y = 0; y < t->tiles_y; y++) {
- for (x = 0; x < t->tiles_x; x++) {
- /* this inner loop could be replace with SSE magic */
- ptr = (char*)src_ptr + src_stride * t->rows * y + bytes * x;
- for (z = 0; z < t->rows; z++) {
- memcpy(dst_ptr2, ptr, bytes);
- dst_ptr2 += bytes;
- ptr += src_stride;
- }
- }
- }
-}
-
-void pipe_linear_from_tile(struct pipe_tile_info *t, const void *src_ptr,
- size_t dst_stride, void *dst_ptr)
-{
- int x, y, z;
- char *ptr;
- size_t bytes = t->cols * t->block.size;
- const char *src_ptr2 = (const char *) src_ptr;
-
- /* lets read lineary from the tiled buffer */
- for (y = 0; y < t->tiles_y; y++) {
- for (x = 0; x < t->tiles_x; x++) {
- /* this inner loop could be replace with SSE magic */
- ptr = (char*)dst_ptr + dst_stride * t->rows * y + bytes * x;
- for (z = 0; z < t->rows; z++) {
- memcpy(ptr, src_ptr2, bytes);
- src_ptr2 += bytes;
- ptr += dst_stride;
- }
- }
- }
-}
-
-void
-pipe_linear_fill_info(struct pipe_tile_info *t,
- const struct u_linear_format_block *block,
- unsigned tile_width, unsigned tile_height,
- unsigned tiles_x, unsigned tiles_y)
-{
- t->block = *block;
-
- t->tile.width = tile_width;
- t->tile.height = tile_height;
- t->cols = t->tile.width / t->block.width;
- t->rows = t->tile.height / t->block.height;
- t->tile.size = t->cols * t->rows * t->block.size;
-
- t->tiles_x = tiles_x;
- t->tiles_y = tiles_y;
- t->stride = t->cols * t->tiles_x * t->block.size;
- t->size = t->tiles_x * t->tiles_y * t->tile.size;
-}
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * Functions for converting tiled data to linear and vice versa.
+ */
+
+
+#include "util/u_debug.h"
+#include "u_linear.h"
+
+void
+pipe_linear_to_tile(size_t src_stride, const void *src_ptr,
+ struct pipe_tile_info *t, void *dst_ptr)
+{
+ int x, y, z;
+ char *ptr;
+ size_t bytes = t->cols * t->block.size;
+ char *dst_ptr2 = (char *) dst_ptr;
+
+ assert(pipe_linear_check_tile(t));
+
+ /* lets write lineary to the tiled buffer */
+ for (y = 0; y < t->tiles_y; y++) {
+ for (x = 0; x < t->tiles_x; x++) {
+ /* this inner loop could be replace with SSE magic */
+ ptr = (char*)src_ptr + src_stride * t->rows * y + bytes * x;
+ for (z = 0; z < t->rows; z++) {
+ memcpy(dst_ptr2, ptr, bytes);
+ dst_ptr2 += bytes;
+ ptr += src_stride;
+ }
+ }
+ }
+}
+
+void pipe_linear_from_tile(struct pipe_tile_info *t, const void *src_ptr,
+ size_t dst_stride, void *dst_ptr)
+{
+ int x, y, z;
+ char *ptr;
+ size_t bytes = t->cols * t->block.size;
+ const char *src_ptr2 = (const char *) src_ptr;
+
+ /* lets read lineary from the tiled buffer */
+ for (y = 0; y < t->tiles_y; y++) {
+ for (x = 0; x < t->tiles_x; x++) {
+ /* this inner loop could be replace with SSE magic */
+ ptr = (char*)dst_ptr + dst_stride * t->rows * y + bytes * x;
+ for (z = 0; z < t->rows; z++) {
+ memcpy(ptr, src_ptr2, bytes);
+ src_ptr2 += bytes;
+ ptr += dst_stride;
+ }
+ }
+ }
+}
+
+void
+pipe_linear_fill_info(struct pipe_tile_info *t,
+ const struct u_linear_format_block *block,
+ unsigned tile_width, unsigned tile_height,
+ unsigned tiles_x, unsigned tiles_y)
+{
+ t->block = *block;
+
+ t->tile.width = tile_width;
+ t->tile.height = tile_height;
+ t->cols = t->tile.width / t->block.width;
+ t->rows = t->tile.height / t->block.height;
+ t->tile.size = t->cols * t->rows * t->block.size;
+
+ t->tiles_x = tiles_x;
+ t->tiles_y = tiles_y;
+ t->stride = t->cols * t->tiles_x * t->block.size;
+ t->size = t->tiles_x * t->tiles_y * t->tile.size;
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_linear.h b/mesalib/src/gallium/auxiliary/util/u_linear.h
index 38a790e3f..81ffc9fb2 100644
--- a/mesalib/src/gallium/auxiliary/util/u_linear.h
+++ b/mesalib/src/gallium/auxiliary/util/u_linear.h
@@ -1,106 +1,106 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * Functions for converting tiled data to linear and vice versa.
- */
-
-
-#ifndef U_LINEAR_H
-#define U_LINEAR_H
-
-#include "pipe/p_compiler.h"
-#include "pipe/p_format.h"
-
-struct u_linear_format_block
-{
- /** Block size in bytes */
- unsigned size;
-
- /** Block width in pixels */
- unsigned width;
-
- /** Block height in pixels */
- unsigned height;
-};
-
-
-struct pipe_tile_info
-{
- unsigned size;
- unsigned stride;
-
- /* The number of tiles */
- unsigned tiles_x;
- unsigned tiles_y;
-
- /* size of each tile expressed in blocks */
- unsigned cols;
- unsigned rows;
-
- /* Describe the tile in pixels */
- struct u_linear_format_block tile;
-
- /* Describe each block within the tile */
- struct u_linear_format_block block;
-};
-
-void pipe_linear_to_tile(size_t src_stride, const void *src_ptr,
- struct pipe_tile_info *t, void *dst_ptr);
-
-void pipe_linear_from_tile(struct pipe_tile_info *t, const void *src_ptr,
- size_t dst_stride, void *dst_ptr);
-
-/**
- * Convenience function to fillout a pipe_tile_info struct.
- * @t info to fill out.
- * @block block info about pixel layout
- * @tile_width the width of the tile in pixels
- * @tile_height the height of the tile in pixels
- * @tiles_x number of tiles in x axis
- * @tiles_y number of tiles in y axis
- */
-void pipe_linear_fill_info(struct pipe_tile_info *t,
- const struct u_linear_format_block *block,
- unsigned tile_width, unsigned tile_height,
- unsigned tiles_x, unsigned tiles_y);
-
-static INLINE boolean pipe_linear_check_tile(const struct pipe_tile_info *t)
-{
- if (t->tile.size != t->block.size * t->cols * t->rows)
- return FALSE;
-
- if (t->stride != t->block.size * t->cols * t->tiles_x)
- return FALSE;
-
- if (t->size < t->stride * t->rows * t->tiles_y)
- return FALSE;
-
- return TRUE;
-}
-
-#endif /* U_LINEAR_H */
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * Functions for converting tiled data to linear and vice versa.
+ */
+
+
+#ifndef U_LINEAR_H
+#define U_LINEAR_H
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_format.h"
+
+struct u_linear_format_block
+{
+ /** Block size in bytes */
+ unsigned size;
+
+ /** Block width in pixels */
+ unsigned width;
+
+ /** Block height in pixels */
+ unsigned height;
+};
+
+
+struct pipe_tile_info
+{
+ unsigned size;
+ unsigned stride;
+
+ /* The number of tiles */
+ unsigned tiles_x;
+ unsigned tiles_y;
+
+ /* size of each tile expressed in blocks */
+ unsigned cols;
+ unsigned rows;
+
+ /* Describe the tile in pixels */
+ struct u_linear_format_block tile;
+
+ /* Describe each block within the tile */
+ struct u_linear_format_block block;
+};
+
+void pipe_linear_to_tile(size_t src_stride, const void *src_ptr,
+ struct pipe_tile_info *t, void *dst_ptr);
+
+void pipe_linear_from_tile(struct pipe_tile_info *t, const void *src_ptr,
+ size_t dst_stride, void *dst_ptr);
+
+/**
+ * Convenience function to fillout a pipe_tile_info struct.
+ * @t info to fill out.
+ * @block block info about pixel layout
+ * @tile_width the width of the tile in pixels
+ * @tile_height the height of the tile in pixels
+ * @tiles_x number of tiles in x axis
+ * @tiles_y number of tiles in y axis
+ */
+void pipe_linear_fill_info(struct pipe_tile_info *t,
+ const struct u_linear_format_block *block,
+ unsigned tile_width, unsigned tile_height,
+ unsigned tiles_x, unsigned tiles_y);
+
+static INLINE boolean pipe_linear_check_tile(const struct pipe_tile_info *t)
+{
+ if (t->tile.size != t->block.size * t->cols * t->rows)
+ return FALSE;
+
+ if (t->stride != t->block.size * t->cols * t->tiles_x)
+ return FALSE;
+
+ if (t->size < t->stride * t->rows * t->tiles_y)
+ return FALSE;
+
+ return TRUE;
+}
+
+#endif /* U_LINEAR_H */
diff --git a/mesalib/src/gallium/auxiliary/util/u_linkage.c b/mesalib/src/gallium/auxiliary/util/u_linkage.c
index 89d67accc..2f6f41ba8 100644
--- a/mesalib/src/gallium/auxiliary/util/u_linkage.c
+++ b/mesalib/src/gallium/auxiliary/util/u_linkage.c
@@ -1,149 +1,149 @@
-/**************************************************************************
- *
- * Copyright 2010 Luca Barbieri
- *
- * 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 (including the
- * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#include "util/u_debug.h"
-#include "pipe/p_shader_tokens.h"
-#include "tgsi/tgsi_parse.h"
-#include "tgsi/tgsi_scan.h"
-#include "util/u_linkage.h"
-
-/* we must only record the registers that are actually used, not just declared */
-static INLINE boolean
-util_semantic_set_test_and_set(struct util_semantic_set *set, unsigned value)
-{
- unsigned mask = 1 << (value % (sizeof(long) * 8));
- unsigned long *p = &set->masks[value / (sizeof(long) * 8)];
- unsigned long v = *p & mask;
- *p |= mask;
- return !!v;
-}
-
-unsigned
-util_semantic_set_from_program_file(struct util_semantic_set *set, const struct tgsi_token *tokens, enum tgsi_file_type file)
-{
- struct tgsi_shader_info info;
- struct tgsi_parse_context parse;
- unsigned count = 0;
- ubyte *semantic_name;
- ubyte *semantic_index;
-
- tgsi_scan_shader(tokens, &info);
-
- if(file == TGSI_FILE_INPUT)
- {
- semantic_name = info.input_semantic_name;
- semantic_index = info.input_semantic_index;
- }
- else if(file == TGSI_FILE_OUTPUT)
- {
- semantic_name = info.output_semantic_name;
- semantic_index = info.output_semantic_index;
- }
- else
- {
- assert(0);
- semantic_name = NULL;
- semantic_index = NULL;
- }
-
- tgsi_parse_init(&parse, tokens);
-
- memset(set->masks, 0, sizeof(set->masks));
- while(!tgsi_parse_end_of_tokens(&parse))
- {
- tgsi_parse_token(&parse);
-
- if(parse.FullToken.Token.Type == TGSI_TOKEN_TYPE_INSTRUCTION)
- {
- const struct tgsi_full_instruction *finst = &parse.FullToken.FullInstruction;
- unsigned i;
- for(i = 0; i < finst->Instruction.NumDstRegs; ++i)
- {
- if(finst->Dst[i].Register.File == file)
- {
- unsigned idx = finst->Dst[i].Register.Index;
- if(semantic_name[idx] == TGSI_SEMANTIC_GENERIC)
- {
- if(!util_semantic_set_test_and_set(set, semantic_index[idx]))
- ++count;
- }
- }
- }
-
- for(i = 0; i < finst->Instruction.NumSrcRegs; ++i)
- {
- if(finst->Src[i].Register.File == file)
- {
- unsigned idx = finst->Src[i].Register.Index;
- if(semantic_name[idx] == TGSI_SEMANTIC_GENERIC)
- {
- if(!util_semantic_set_test_and_set(set, semantic_index[idx]))
- ++count;
- }
- }
- }
- }
- }
- tgsi_parse_free(&parse);
-
- return count;
-}
-
-#define UTIL_SEMANTIC_SET_FOR_EACH(i, set) for(i = 0; i < 256; ++i) if(set->masks[i / (sizeof(long) * 8)] & (1 << (i % (sizeof(long) * 8))))
-
-void
-util_semantic_layout_from_set(unsigned char *layout, const struct util_semantic_set *set, unsigned efficient_slots, unsigned num_slots)
-{
- int first = -1;
- int last = -1;
- unsigned i;
-
- memset(layout, 0xff, num_slots);
-
- UTIL_SEMANTIC_SET_FOR_EACH(i, set)
- {
- if(first < 0)
- first = i;
- last = i;
- }
-
- if(last < efficient_slots)
- {
- UTIL_SEMANTIC_SET_FOR_EACH(i, set)
- layout[i] = i;
- }
- else if((last - first) < efficient_slots)
- {
- UTIL_SEMANTIC_SET_FOR_EACH(i, set)
- layout[i - first] = i;
- }
- else
- {
- unsigned idx = 0;
- UTIL_SEMANTIC_SET_FOR_EACH(i, set)
- layout[idx++] = i;
- }
-}
+/**************************************************************************
+ *
+ * Copyright 2010 Luca Barbieri
+ *
+ * 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 (including the
+ * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#include "util/u_debug.h"
+#include "pipe/p_shader_tokens.h"
+#include "tgsi/tgsi_parse.h"
+#include "tgsi/tgsi_scan.h"
+#include "util/u_linkage.h"
+
+/* we must only record the registers that are actually used, not just declared */
+static INLINE boolean
+util_semantic_set_test_and_set(struct util_semantic_set *set, unsigned value)
+{
+ unsigned mask = 1 << (value % (sizeof(long) * 8));
+ unsigned long *p = &set->masks[value / (sizeof(long) * 8)];
+ unsigned long v = *p & mask;
+ *p |= mask;
+ return !!v;
+}
+
+unsigned
+util_semantic_set_from_program_file(struct util_semantic_set *set, const struct tgsi_token *tokens, enum tgsi_file_type file)
+{
+ struct tgsi_shader_info info;
+ struct tgsi_parse_context parse;
+ unsigned count = 0;
+ ubyte *semantic_name;
+ ubyte *semantic_index;
+
+ tgsi_scan_shader(tokens, &info);
+
+ if(file == TGSI_FILE_INPUT)
+ {
+ semantic_name = info.input_semantic_name;
+ semantic_index = info.input_semantic_index;
+ }
+ else if(file == TGSI_FILE_OUTPUT)
+ {
+ semantic_name = info.output_semantic_name;
+ semantic_index = info.output_semantic_index;
+ }
+ else
+ {
+ assert(0);
+ semantic_name = NULL;
+ semantic_index = NULL;
+ }
+
+ tgsi_parse_init(&parse, tokens);
+
+ memset(set->masks, 0, sizeof(set->masks));
+ while(!tgsi_parse_end_of_tokens(&parse))
+ {
+ tgsi_parse_token(&parse);
+
+ if(parse.FullToken.Token.Type == TGSI_TOKEN_TYPE_INSTRUCTION)
+ {
+ const struct tgsi_full_instruction *finst = &parse.FullToken.FullInstruction;
+ unsigned i;
+ for(i = 0; i < finst->Instruction.NumDstRegs; ++i)
+ {
+ if(finst->Dst[i].Register.File == file)
+ {
+ unsigned idx = finst->Dst[i].Register.Index;
+ if(semantic_name[idx] == TGSI_SEMANTIC_GENERIC)
+ {
+ if(!util_semantic_set_test_and_set(set, semantic_index[idx]))
+ ++count;
+ }
+ }
+ }
+
+ for(i = 0; i < finst->Instruction.NumSrcRegs; ++i)
+ {
+ if(finst->Src[i].Register.File == file)
+ {
+ unsigned idx = finst->Src[i].Register.Index;
+ if(semantic_name[idx] == TGSI_SEMANTIC_GENERIC)
+ {
+ if(!util_semantic_set_test_and_set(set, semantic_index[idx]))
+ ++count;
+ }
+ }
+ }
+ }
+ }
+ tgsi_parse_free(&parse);
+
+ return count;
+}
+
+#define UTIL_SEMANTIC_SET_FOR_EACH(i, set) for(i = 0; i < 256; ++i) if(set->masks[i / (sizeof(long) * 8)] & (1 << (i % (sizeof(long) * 8))))
+
+void
+util_semantic_layout_from_set(unsigned char *layout, const struct util_semantic_set *set, unsigned efficient_slots, unsigned num_slots)
+{
+ int first = -1;
+ int last = -1;
+ unsigned i;
+
+ memset(layout, 0xff, num_slots);
+
+ UTIL_SEMANTIC_SET_FOR_EACH(i, set)
+ {
+ if(first < 0)
+ first = i;
+ last = i;
+ }
+
+ if(last < efficient_slots)
+ {
+ UTIL_SEMANTIC_SET_FOR_EACH(i, set)
+ layout[i] = i;
+ }
+ else if((last - first) < efficient_slots)
+ {
+ UTIL_SEMANTIC_SET_FOR_EACH(i, set)
+ layout[i - first] = i;
+ }
+ else
+ {
+ unsigned idx = 0;
+ UTIL_SEMANTIC_SET_FOR_EACH(i, set)
+ layout[idx++] = i;
+ }
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_math.c b/mesalib/src/gallium/auxiliary/util/u_math.c
index 3044f5da8..2811475fa 100644
--- a/mesalib/src/gallium/auxiliary/util/u_math.c
+++ b/mesalib/src/gallium/auxiliary/util/u_math.c
@@ -1,73 +1,73 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-
-#include "util/u_math.h"
-
-
-/** 2^x, for x in [-1.0, 1.0) */
-float pow2_table[POW2_TABLE_SIZE];
-
-
-static void
-init_pow2_table(void)
-{
- int i;
- for (i = 0; i < POW2_TABLE_SIZE; i++)
- pow2_table[i] = (float) pow(2.0, (i - POW2_TABLE_OFFSET) / POW2_TABLE_SCALE);
-}
-
-
-/** log2(x), for x in [1.0, 2.0) */
-float log2_table[LOG2_TABLE_SIZE];
-
-
-static void
-init_log2_table(void)
-{
- unsigned i;
- for (i = 0; i < LOG2_TABLE_SIZE; i++)
- log2_table[i] = (float) log2(1.0 + i * (1.0 / LOG2_TABLE_SCALE));
-}
-
-
-/**
- * One time init for math utilities.
- */
-void
-util_init_math(void)
-{
- static boolean initialized = FALSE;
- if (!initialized) {
- init_pow2_table();
- init_log2_table();
- initialized = TRUE;
- }
-}
-
-
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+
+#include "util/u_math.h"
+
+
+/** 2^x, for x in [-1.0, 1.0) */
+float pow2_table[POW2_TABLE_SIZE];
+
+
+static void
+init_pow2_table(void)
+{
+ int i;
+ for (i = 0; i < POW2_TABLE_SIZE; i++)
+ pow2_table[i] = (float) pow(2.0, (i - POW2_TABLE_OFFSET) / POW2_TABLE_SCALE);
+}
+
+
+/** log2(x), for x in [1.0, 2.0) */
+float log2_table[LOG2_TABLE_SIZE];
+
+
+static void
+init_log2_table(void)
+{
+ unsigned i;
+ for (i = 0; i < LOG2_TABLE_SIZE; i++)
+ log2_table[i] = (float) log2(1.0 + i * (1.0 / LOG2_TABLE_SCALE));
+}
+
+
+/**
+ * One time init for math utilities.
+ */
+void
+util_init_math(void)
+{
+ static boolean initialized = FALSE;
+ if (!initialized) {
+ init_pow2_table();
+ init_log2_table();
+ initialized = TRUE;
+ }
+}
+
+
diff --git a/mesalib/src/gallium/auxiliary/util/u_memory.h b/mesalib/src/gallium/auxiliary/util/u_memory.h
index 4eb798469..53d56599f 100644
--- a/mesalib/src/gallium/auxiliary/util/u_memory.h
+++ b/mesalib/src/gallium/auxiliary/util/u_memory.h
@@ -1,100 +1,100 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-/*
- * Memory functions
- */
-
-
-#ifndef U_MEMORY_H
-#define U_MEMORY_H
-
-
-#include "util/u_pointer.h"
-#include "util/u_debug.h"
-#include "os/os_memory.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define MALLOC(_size) os_malloc(_size)
-
-#define CALLOC(_count, _size) os_calloc(_count, _size)
-
-#define FREE(_ptr ) os_free(_ptr)
-
-#define REALLOC(_ptr, _old_size, _size) os_realloc(_ptr, _old_size, _size)
-
-#define MALLOC_STRUCT(T) (struct T *) MALLOC(sizeof(struct T))
-
-#define CALLOC_STRUCT(T) (struct T *) CALLOC(1, sizeof(struct T))
-
-#define CALLOC_VARIANT_LENGTH_STRUCT(T,more_size) ((struct T *) CALLOC(1, sizeof(struct T) + more_size))
-
-
-#define align_malloc(_size, _alignment) os_malloc_aligned(_size, _alignment)
-#define align_free(_ptr) os_free_aligned(_ptr)
-
-
-/**
- * Duplicate a block of memory.
- */
-static INLINE void *
-mem_dup(const void *src, uint size)
-{
- void *dup = MALLOC(size);
- if (dup)
- memcpy(dup, src, size);
- return dup;
-}
-
-
-/**
- * Number of elements in an array.
- */
-#ifndef Elements
-#define Elements(x) (sizeof(x)/sizeof((x)[0]))
-#endif
-
-
-/**
- * Offset of a field in a struct, in bytes.
- */
-#define Offset(TYPE, MEMBER) ((uintptr_t)&(((TYPE *)NULL)->MEMBER))
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* U_MEMORY_H */
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+/*
+ * Memory functions
+ */
+
+
+#ifndef U_MEMORY_H
+#define U_MEMORY_H
+
+
+#include "util/u_pointer.h"
+#include "util/u_debug.h"
+#include "os/os_memory.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define MALLOC(_size) os_malloc(_size)
+
+#define CALLOC(_count, _size) os_calloc(_count, _size)
+
+#define FREE(_ptr ) os_free(_ptr)
+
+#define REALLOC(_ptr, _old_size, _size) os_realloc(_ptr, _old_size, _size)
+
+#define MALLOC_STRUCT(T) (struct T *) MALLOC(sizeof(struct T))
+
+#define CALLOC_STRUCT(T) (struct T *) CALLOC(1, sizeof(struct T))
+
+#define CALLOC_VARIANT_LENGTH_STRUCT(T,more_size) ((struct T *) CALLOC(1, sizeof(struct T) + more_size))
+
+
+#define align_malloc(_size, _alignment) os_malloc_aligned(_size, _alignment)
+#define align_free(_ptr) os_free_aligned(_ptr)
+
+
+/**
+ * Duplicate a block of memory.
+ */
+static INLINE void *
+mem_dup(const void *src, uint size)
+{
+ void *dup = MALLOC(size);
+ if (dup)
+ memcpy(dup, src, size);
+ return dup;
+}
+
+
+/**
+ * Number of elements in an array.
+ */
+#ifndef Elements
+#define Elements(x) (sizeof(x)/sizeof((x)[0]))
+#endif
+
+
+/**
+ * Offset of a field in a struct, in bytes.
+ */
+#define Offset(TYPE, MEMBER) ((uintptr_t)&(((TYPE *)NULL)->MEMBER))
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* U_MEMORY_H */
diff --git a/mesalib/src/gallium/auxiliary/util/u_mm.c b/mesalib/src/gallium/auxiliary/util/u_mm.c
index 874f1f40f..82f83702d 100644
--- a/mesalib/src/gallium/auxiliary/util/u_mm.c
+++ b/mesalib/src/gallium/auxiliary/util/u_mm.c
@@ -1,296 +1,296 @@
-/**************************************************************************
- *
- * Copyright (C) 1999 Wittawat Yamwong
- *
- * 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
- * WITTAWAT YAMWONG, OR ANY OTHER CONTRIBUTORS 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.
- *
- **************************************************************************/
-
-
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-
-#include "util/u_memory.h"
-#include "util/u_mm.h"
-
-
-void
-u_mmDumpMemInfo(const struct mem_block *heap)
-{
- debug_printf("Memory heap %p:\n", (void *) heap);
- if (heap == 0) {
- debug_printf(" heap == 0\n");
- }
- else {
- const struct mem_block *p;
- int total_used = 0, total_free = 0;
-
- for (p = heap->next; p != heap; p = p->next) {
- debug_printf(" Offset:%08x, Size:%08x, %c%c\n", p->ofs, p->size,
- p->free ? 'F':'.',
- p->reserved ? 'R':'.');
- if (p->free)
- total_free += p->size;
- else
- total_used += p->size;
- }
-
- debug_printf("'\nMemory stats: total = %d, used = %d, free = %d\n",
- total_used + total_free, total_used, total_free);
- debug_printf("\nFree list:\n");
-
- for (p = heap->next_free; p != heap; p = p->next_free) {
- debug_printf(" FREE Offset:%08x, Size:%08x, %c%c\n", p->ofs, p->size,
- p->free ? 'F':'.',
- p->reserved ? 'R':'.');
- }
-
- }
- debug_printf("End of memory blocks\n");
-}
-
-
-struct mem_block *
-u_mmInit(int ofs, int size)
-{
- struct mem_block *heap, *block;
-
- if (size <= 0)
- return NULL;
-
- heap = CALLOC_STRUCT(mem_block);
- if (!heap)
- return NULL;
-
- block = CALLOC_STRUCT(mem_block);
- if (!block) {
- FREE(heap);
- return NULL;
- }
-
- heap->next = block;
- heap->prev = block;
- heap->next_free = block;
- heap->prev_free = block;
-
- block->heap = heap;
- block->next = heap;
- block->prev = heap;
- block->next_free = heap;
- block->prev_free = heap;
-
- block->ofs = ofs;
- block->size = size;
- block->free = 1;
-
- return heap;
-}
-
-
-static struct mem_block *
-SliceBlock(struct mem_block *p,
- int startofs, int size,
- int reserved, int alignment)
-{
- struct mem_block *newblock;
-
- /* break left [p, newblock, p->next], then p = newblock */
- if (startofs > p->ofs) {
- newblock = CALLOC_STRUCT(mem_block);
- if (!newblock)
- return NULL;
- newblock->ofs = startofs;
- newblock->size = p->size - (startofs - p->ofs);
- newblock->free = 1;
- newblock->heap = p->heap;
-
- newblock->next = p->next;
- newblock->prev = p;
- p->next->prev = newblock;
- p->next = newblock;
-
- newblock->next_free = p->next_free;
- newblock->prev_free = p;
- p->next_free->prev_free = newblock;
- p->next_free = newblock;
-
- p->size -= newblock->size;
- p = newblock;
- }
-
- /* break right, also [p, newblock, p->next] */
- if (size < p->size) {
- newblock = CALLOC_STRUCT(mem_block);
- if (!newblock)
- return NULL;
- newblock->ofs = startofs + size;
- newblock->size = p->size - size;
- newblock->free = 1;
- newblock->heap = p->heap;
-
- newblock->next = p->next;
- newblock->prev = p;
- p->next->prev = newblock;
- p->next = newblock;
-
- newblock->next_free = p->next_free;
- newblock->prev_free = p;
- p->next_free->prev_free = newblock;
- p->next_free = newblock;
-
- p->size = size;
- }
-
- /* p = middle block */
- p->free = 0;
-
- /* Remove p from the free list:
- */
- p->next_free->prev_free = p->prev_free;
- p->prev_free->next_free = p->next_free;
-
- p->next_free = 0;
- p->prev_free = 0;
-
- p->reserved = reserved;
- return p;
-}
-
-
-struct mem_block *
-u_mmAllocMem(struct mem_block *heap, int size, int align2, int startSearch)
-{
- struct mem_block *p;
- const int mask = (1 << align2)-1;
- int startofs = 0;
- int endofs;
-
- assert(size >= 0);
- assert(align2 >= 0);
- assert(align2 <= 12); /* sanity check, 2^12 (4KB) enough? */
-
- if (!heap || align2 < 0 || size <= 0)
- return NULL;
-
- for (p = heap->next_free; p != heap; p = p->next_free) {
- assert(p->free);
-
- startofs = (p->ofs + mask) & ~mask;
- if ( startofs < startSearch ) {
- startofs = startSearch;
- }
- endofs = startofs+size;
- if (endofs <= (p->ofs+p->size))
- break;
- }
-
- if (p == heap)
- return NULL;
-
- assert(p->free);
- p = SliceBlock(p,startofs,size,0,mask+1);
-
- return p;
-}
-
-
-struct mem_block *
-u_mmFindBlock(struct mem_block *heap, int start)
-{
- struct mem_block *p;
-
- for (p = heap->next; p != heap; p = p->next) {
- if (p->ofs == start)
- return p;
- }
-
- return NULL;
-}
-
-
-static INLINE int
-Join2Blocks(struct mem_block *p)
-{
- /* XXX there should be some assertions here */
-
- /* NOTE: heap->free == 0 */
-
- if (p->free && p->next->free) {
- struct mem_block *q = p->next;
-
- assert(p->ofs + p->size == q->ofs);
- p->size += q->size;
-
- p->next = q->next;
- q->next->prev = p;
-
- q->next_free->prev_free = q->prev_free;
- q->prev_free->next_free = q->next_free;
-
- FREE(q);
- return 1;
- }
- return 0;
-}
-
-int
-u_mmFreeMem(struct mem_block *b)
-{
- if (!b)
- return 0;
-
- if (b->free) {
- debug_printf("block already free\n");
- return -1;
- }
- if (b->reserved) {
- debug_printf("block is reserved\n");
- return -1;
- }
-
- b->free = 1;
- b->next_free = b->heap->next_free;
- b->prev_free = b->heap;
- b->next_free->prev_free = b;
- b->prev_free->next_free = b;
-
- Join2Blocks(b);
- if (b->prev != b->heap)
- Join2Blocks(b->prev);
-
- return 0;
-}
-
-
-void
-u_mmDestroy(struct mem_block *heap)
-{
- struct mem_block *p;
-
- if (!heap)
- return;
-
- for (p = heap->next; p != heap; ) {
- struct mem_block *next = p->next;
- FREE(p);
- p = next;
- }
-
- FREE(heap);
-}
+/**************************************************************************
+ *
+ * Copyright (C) 1999 Wittawat Yamwong
+ *
+ * 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
+ * WITTAWAT YAMWONG, OR ANY OTHER CONTRIBUTORS 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.
+ *
+ **************************************************************************/
+
+
+#include "pipe/p_compiler.h"
+#include "util/u_debug.h"
+
+#include "util/u_memory.h"
+#include "util/u_mm.h"
+
+
+void
+u_mmDumpMemInfo(const struct mem_block *heap)
+{
+ debug_printf("Memory heap %p:\n", (void *) heap);
+ if (heap == 0) {
+ debug_printf(" heap == 0\n");
+ }
+ else {
+ const struct mem_block *p;
+ int total_used = 0, total_free = 0;
+
+ for (p = heap->next; p != heap; p = p->next) {
+ debug_printf(" Offset:%08x, Size:%08x, %c%c\n", p->ofs, p->size,
+ p->free ? 'F':'.',
+ p->reserved ? 'R':'.');
+ if (p->free)
+ total_free += p->size;
+ else
+ total_used += p->size;
+ }
+
+ debug_printf("'\nMemory stats: total = %d, used = %d, free = %d\n",
+ total_used + total_free, total_used, total_free);
+ debug_printf("\nFree list:\n");
+
+ for (p = heap->next_free; p != heap; p = p->next_free) {
+ debug_printf(" FREE Offset:%08x, Size:%08x, %c%c\n", p->ofs, p->size,
+ p->free ? 'F':'.',
+ p->reserved ? 'R':'.');
+ }
+
+ }
+ debug_printf("End of memory blocks\n");
+}
+
+
+struct mem_block *
+u_mmInit(int ofs, int size)
+{
+ struct mem_block *heap, *block;
+
+ if (size <= 0)
+ return NULL;
+
+ heap = CALLOC_STRUCT(mem_block);
+ if (!heap)
+ return NULL;
+
+ block = CALLOC_STRUCT(mem_block);
+ if (!block) {
+ FREE(heap);
+ return NULL;
+ }
+
+ heap->next = block;
+ heap->prev = block;
+ heap->next_free = block;
+ heap->prev_free = block;
+
+ block->heap = heap;
+ block->next = heap;
+ block->prev = heap;
+ block->next_free = heap;
+ block->prev_free = heap;
+
+ block->ofs = ofs;
+ block->size = size;
+ block->free = 1;
+
+ return heap;
+}
+
+
+static struct mem_block *
+SliceBlock(struct mem_block *p,
+ int startofs, int size,
+ int reserved, int alignment)
+{
+ struct mem_block *newblock;
+
+ /* break left [p, newblock, p->next], then p = newblock */
+ if (startofs > p->ofs) {
+ newblock = CALLOC_STRUCT(mem_block);
+ if (!newblock)
+ return NULL;
+ newblock->ofs = startofs;
+ newblock->size = p->size - (startofs - p->ofs);
+ newblock->free = 1;
+ newblock->heap = p->heap;
+
+ newblock->next = p->next;
+ newblock->prev = p;
+ p->next->prev = newblock;
+ p->next = newblock;
+
+ newblock->next_free = p->next_free;
+ newblock->prev_free = p;
+ p->next_free->prev_free = newblock;
+ p->next_free = newblock;
+
+ p->size -= newblock->size;
+ p = newblock;
+ }
+
+ /* break right, also [p, newblock, p->next] */
+ if (size < p->size) {
+ newblock = CALLOC_STRUCT(mem_block);
+ if (!newblock)
+ return NULL;
+ newblock->ofs = startofs + size;
+ newblock->size = p->size - size;
+ newblock->free = 1;
+ newblock->heap = p->heap;
+
+ newblock->next = p->next;
+ newblock->prev = p;
+ p->next->prev = newblock;
+ p->next = newblock;
+
+ newblock->next_free = p->next_free;
+ newblock->prev_free = p;
+ p->next_free->prev_free = newblock;
+ p->next_free = newblock;
+
+ p->size = size;
+ }
+
+ /* p = middle block */
+ p->free = 0;
+
+ /* Remove p from the free list:
+ */
+ p->next_free->prev_free = p->prev_free;
+ p->prev_free->next_free = p->next_free;
+
+ p->next_free = 0;
+ p->prev_free = 0;
+
+ p->reserved = reserved;
+ return p;
+}
+
+
+struct mem_block *
+u_mmAllocMem(struct mem_block *heap, int size, int align2, int startSearch)
+{
+ struct mem_block *p;
+ const int mask = (1 << align2)-1;
+ int startofs = 0;
+ int endofs;
+
+ assert(size >= 0);
+ assert(align2 >= 0);
+ assert(align2 <= 12); /* sanity check, 2^12 (4KB) enough? */
+
+ if (!heap || align2 < 0 || size <= 0)
+ return NULL;
+
+ for (p = heap->next_free; p != heap; p = p->next_free) {
+ assert(p->free);
+
+ startofs = (p->ofs + mask) & ~mask;
+ if ( startofs < startSearch ) {
+ startofs = startSearch;
+ }
+ endofs = startofs+size;
+ if (endofs <= (p->ofs+p->size))
+ break;
+ }
+
+ if (p == heap)
+ return NULL;
+
+ assert(p->free);
+ p = SliceBlock(p,startofs,size,0,mask+1);
+
+ return p;
+}
+
+
+struct mem_block *
+u_mmFindBlock(struct mem_block *heap, int start)
+{
+ struct mem_block *p;
+
+ for (p = heap->next; p != heap; p = p->next) {
+ if (p->ofs == start)
+ return p;
+ }
+
+ return NULL;
+}
+
+
+static INLINE int
+Join2Blocks(struct mem_block *p)
+{
+ /* XXX there should be some assertions here */
+
+ /* NOTE: heap->free == 0 */
+
+ if (p->free && p->next->free) {
+ struct mem_block *q = p->next;
+
+ assert(p->ofs + p->size == q->ofs);
+ p->size += q->size;
+
+ p->next = q->next;
+ q->next->prev = p;
+
+ q->next_free->prev_free = q->prev_free;
+ q->prev_free->next_free = q->next_free;
+
+ FREE(q);
+ return 1;
+ }
+ return 0;
+}
+
+int
+u_mmFreeMem(struct mem_block *b)
+{
+ if (!b)
+ return 0;
+
+ if (b->free) {
+ debug_printf("block already free\n");
+ return -1;
+ }
+ if (b->reserved) {
+ debug_printf("block is reserved\n");
+ return -1;
+ }
+
+ b->free = 1;
+ b->next_free = b->heap->next_free;
+ b->prev_free = b->heap;
+ b->next_free->prev_free = b;
+ b->prev_free->next_free = b;
+
+ Join2Blocks(b);
+ if (b->prev != b->heap)
+ Join2Blocks(b->prev);
+
+ return 0;
+}
+
+
+void
+u_mmDestroy(struct mem_block *heap)
+{
+ struct mem_block *p;
+
+ if (!heap)
+ return;
+
+ for (p = heap->next; p != heap; ) {
+ struct mem_block *next = p->next;
+ FREE(p);
+ p = next;
+ }
+
+ FREE(heap);
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_mm.h b/mesalib/src/gallium/auxiliary/util/u_mm.h
index 3818181db..6b158aae6 100644
--- a/mesalib/src/gallium/auxiliary/util/u_mm.h
+++ b/mesalib/src/gallium/auxiliary/util/u_mm.h
@@ -1,91 +1,91 @@
-/**************************************************************************
- *
- * Copyright (C) 1999 Wittawat Yamwong
- *
- * 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
- * KEITH WHITWELL, OR ANY OTHER CONTRIBUTORS 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.
- *
- **************************************************************************/
-
-
-/**
- * @file
- * Memory manager code. Primarily used by device drivers to manage texture
- * heaps, etc.
- */
-
-
-#ifndef _U_MM_H_
-#define _U_MM_H_
-
-
-struct mem_block {
- struct mem_block *next, *prev;
- struct mem_block *next_free, *prev_free;
- struct mem_block *heap;
- int ofs,size;
- unsigned int free:1;
- unsigned int reserved:1;
-};
-
-
-
-/**
- * input: total size in bytes
- * return: a heap pointer if OK, NULL if error
- */
-extern struct mem_block *u_mmInit(int ofs, int size);
-
-/**
- * Allocate 'size' bytes with 2^align2 bytes alignment,
- * restrict the search to free memory after 'startSearch'
- * depth and back buffers should be in different 4mb banks
- * to get better page hits if possible
- * input: size = size of block
- * align2 = 2^align2 bytes alignment
- * startSearch = linear offset from start of heap to begin search
- * return: pointer to the allocated block, 0 if error
- */
-extern struct mem_block *u_mmAllocMem(struct mem_block *heap, int size, int align2,
- int startSearch);
-
-/**
- * Free block starts at offset
- * input: pointer to a block
- * return: 0 if OK, -1 if error
- */
-extern int u_mmFreeMem(struct mem_block *b);
-
-/**
- * Free block starts at offset
- * input: pointer to a heap, start offset
- * return: pointer to a block
- */
-extern struct mem_block *u_mmFindBlock(struct mem_block *heap, int start);
-
-/**
- * destroy MM
- */
-extern void u_mmDestroy(struct mem_block *mmInit);
-
-/**
- * For debugging purposes.
- */
-extern void u_mmDumpMemInfo(const struct mem_block *mmInit);
-
-#endif
+/**************************************************************************
+ *
+ * Copyright (C) 1999 Wittawat Yamwong
+ *
+ * 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
+ * KEITH WHITWELL, OR ANY OTHER CONTRIBUTORS 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.
+ *
+ **************************************************************************/
+
+
+/**
+ * @file
+ * Memory manager code. Primarily used by device drivers to manage texture
+ * heaps, etc.
+ */
+
+
+#ifndef _U_MM_H_
+#define _U_MM_H_
+
+
+struct mem_block {
+ struct mem_block *next, *prev;
+ struct mem_block *next_free, *prev_free;
+ struct mem_block *heap;
+ int ofs,size;
+ unsigned int free:1;
+ unsigned int reserved:1;
+};
+
+
+
+/**
+ * input: total size in bytes
+ * return: a heap pointer if OK, NULL if error
+ */
+extern struct mem_block *u_mmInit(int ofs, int size);
+
+/**
+ * Allocate 'size' bytes with 2^align2 bytes alignment,
+ * restrict the search to free memory after 'startSearch'
+ * depth and back buffers should be in different 4mb banks
+ * to get better page hits if possible
+ * input: size = size of block
+ * align2 = 2^align2 bytes alignment
+ * startSearch = linear offset from start of heap to begin search
+ * return: pointer to the allocated block, 0 if error
+ */
+extern struct mem_block *u_mmAllocMem(struct mem_block *heap, int size, int align2,
+ int startSearch);
+
+/**
+ * Free block starts at offset
+ * input: pointer to a block
+ * return: 0 if OK, -1 if error
+ */
+extern int u_mmFreeMem(struct mem_block *b);
+
+/**
+ * Free block starts at offset
+ * input: pointer to a heap, start offset
+ * return: pointer to a block
+ */
+extern struct mem_block *u_mmFindBlock(struct mem_block *heap, int start);
+
+/**
+ * destroy MM
+ */
+extern void u_mmDestroy(struct mem_block *mmInit);
+
+/**
+ * For debugging purposes.
+ */
+extern void u_mmDumpMemInfo(const struct mem_block *mmInit);
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_pointer.h b/mesalib/src/gallium/auxiliary/util/u_pointer.h
index f75ce012b..cce0c7430 100644
--- a/mesalib/src/gallium/auxiliary/util/u_pointer.h
+++ b/mesalib/src/gallium/auxiliary/util/u_pointer.h
@@ -1,130 +1,130 @@
-/**************************************************************************
- *
- * Copyright 2007-2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef U_POINTER_H
-#define U_POINTER_H
-
-#include "pipe/p_compiler.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static INLINE intptr_t
-pointer_to_intptr( const void *p )
-{
- union {
- const void *p;
- intptr_t i;
- } pi;
- pi.p = p;
- return pi.i;
-}
-
-static INLINE void *
-intptr_to_pointer( intptr_t i )
-{
- union {
- void *p;
- intptr_t i;
- } pi;
- pi.i = i;
- return pi.p;
-}
-
-static INLINE uintptr_t
-pointer_to_uintptr( const void *ptr )
-{
- union {
- const void *p;
- uintptr_t u;
- } pu;
- pu.p = ptr;
- return pu.u;
-}
-
-static INLINE void *
-uintptr_to_pointer( uintptr_t u )
-{
- union {
- void *p;
- uintptr_t u;
- } pu;
- pu.u = u;
- return pu.p;
-}
-
-/**
- * Return a pointer aligned to next multiple of N bytes.
- */
-static INLINE void *
-align_pointer( const void *unaligned, uintptr_t alignment )
-{
- uintptr_t aligned = (pointer_to_uintptr( unaligned ) + alignment - 1) & ~(alignment - 1);
- return uintptr_to_pointer( aligned );
-}
-
-
-/**
- * Return a pointer aligned to next multiple of 16 bytes.
- */
-static INLINE void *
-align16( void *unaligned )
-{
- return align_pointer( unaligned, 16 );
-}
-
-typedef void (*func_pointer)(void);
-
-static INLINE func_pointer
-pointer_to_func( void *p )
-{
- union {
- void *p;
- func_pointer f;
- } pf;
- pf.p = p;
- return pf.f;
-}
-
-static INLINE void *
-func_to_pointer( func_pointer f )
-{
- union {
- void *p;
- func_pointer f;
- } pf;
- pf.f = f;
- return pf.p;
-}
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* U_POINTER_H */
+/**************************************************************************
+ *
+ * Copyright 2007-2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef U_POINTER_H
+#define U_POINTER_H
+
+#include "pipe/p_compiler.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+static INLINE intptr_t
+pointer_to_intptr( const void *p )
+{
+ union {
+ const void *p;
+ intptr_t i;
+ } pi;
+ pi.p = p;
+ return pi.i;
+}
+
+static INLINE void *
+intptr_to_pointer( intptr_t i )
+{
+ union {
+ void *p;
+ intptr_t i;
+ } pi;
+ pi.i = i;
+ return pi.p;
+}
+
+static INLINE uintptr_t
+pointer_to_uintptr( const void *ptr )
+{
+ union {
+ const void *p;
+ uintptr_t u;
+ } pu;
+ pu.p = ptr;
+ return pu.u;
+}
+
+static INLINE void *
+uintptr_to_pointer( uintptr_t u )
+{
+ union {
+ void *p;
+ uintptr_t u;
+ } pu;
+ pu.u = u;
+ return pu.p;
+}
+
+/**
+ * Return a pointer aligned to next multiple of N bytes.
+ */
+static INLINE void *
+align_pointer( const void *unaligned, uintptr_t alignment )
+{
+ uintptr_t aligned = (pointer_to_uintptr( unaligned ) + alignment - 1) & ~(alignment - 1);
+ return uintptr_to_pointer( aligned );
+}
+
+
+/**
+ * Return a pointer aligned to next multiple of 16 bytes.
+ */
+static INLINE void *
+align16( void *unaligned )
+{
+ return align_pointer( unaligned, 16 );
+}
+
+typedef void (*func_pointer)(void);
+
+static INLINE func_pointer
+pointer_to_func( void *p )
+{
+ union {
+ void *p;
+ func_pointer f;
+ } pf;
+ pf.p = p;
+ return pf.f;
+}
+
+static INLINE void *
+func_to_pointer( func_pointer f )
+{
+ union {
+ void *p;
+ func_pointer f;
+ } pf;
+ pf.f = f;
+ return pf.p;
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* U_POINTER_H */
diff --git a/mesalib/src/gallium/auxiliary/util/u_pstipple.h b/mesalib/src/gallium/auxiliary/util/u_pstipple.h
index 451e37417..1c2f5f48a 100644
--- a/mesalib/src/gallium/auxiliary/util/u_pstipple.h
+++ b/mesalib/src/gallium/auxiliary/util/u_pstipple.h
@@ -1,56 +1,56 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef U_PSTIPPLE_H
-#define U_PSTIPPLE_H
-
-#include "pipe/p_compiler.h"
-
-struct pipe_context;
-struct pipe_resource;
-struct pipe_shader_state;
-
-
-extern struct pipe_resource *
-util_pstipple_create_stipple_texture(struct pipe_context *pipe,
- const uint32_t pattern[32]);
-
-extern struct pipe_sampler_view *
-util_pstipple_create_sampler_view(struct pipe_context *pipe,
- struct pipe_resource *tex);
-
-extern void *
-util_pstipple_create_sampler(struct pipe_context *pipe);
-
-extern struct pipe_shader_state *
-util_pstipple_create_fragment_shader(struct pipe_context *pipe,
- struct pipe_shader_state *fs,
- unsigned *samplerUnitOut);
-
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef U_PSTIPPLE_H
+#define U_PSTIPPLE_H
+
+#include "pipe/p_compiler.h"
+
+struct pipe_context;
+struct pipe_resource;
+struct pipe_shader_state;
+
+
+extern struct pipe_resource *
+util_pstipple_create_stipple_texture(struct pipe_context *pipe,
+ const uint32_t pattern[32]);
+
+extern struct pipe_sampler_view *
+util_pstipple_create_sampler_view(struct pipe_context *pipe,
+ struct pipe_resource *tex);
+
+extern void *
+util_pstipple_create_sampler(struct pipe_context *pipe);
+
+extern struct pipe_shader_state *
+util_pstipple_create_fragment_shader(struct pipe_context *pipe,
+ struct pipe_shader_state *fs,
+ unsigned *samplerUnitOut);
+
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_rect.h b/mesalib/src/gallium/auxiliary/util/u_rect.h
index d16f106bf..4cb90d3c3 100644
--- a/mesalib/src/gallium/auxiliary/util/u_rect.h
+++ b/mesalib/src/gallium/auxiliary/util/u_rect.h
@@ -1,103 +1,103 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef U_RECT_H
-#define U_RECT_H
-
-#include "pipe/p_compiler.h"
-
-struct u_rect {
- int x0, x1;
- int y0, y1;
-};
-
-/* Do two rectangles intersect?
- */
-static INLINE boolean
-u_rect_test_intersection(const struct u_rect *a,
- const struct u_rect *b)
-{
- return (!(a->x1 < b->x0 ||
- b->x1 < a->x0 ||
- a->y1 < b->y0 ||
- b->y1 < a->y0));
-}
-
-/* Find the intersection of two rectangles known to intersect.
- */
-static INLINE void
-u_rect_find_intersection(const struct u_rect *a,
- struct u_rect *b)
-{
- /* Caller should verify intersection exists before calling.
- */
- if (b->x0 < a->x0) b->x0 = a->x0;
- if (b->x1 > a->x1) b->x1 = a->x1;
- if (b->y0 < a->y0) b->y0 = a->y0;
- if (b->y1 > a->y1) b->y1 = a->y1;
-}
-
-
-static INLINE void
-u_rect_possible_intersection(const struct u_rect *a,
- struct u_rect *b)
-{
- if (u_rect_test_intersection(a,b)) {
- u_rect_find_intersection(a,b);
- }
- else {
- b->x0 = b->x1 = b->y0 = b->y1 = 0;
- }
-}
-
-#include "pipe/p_format.h"
-#include "util/u_pack_color.h"
-
-
-
-/**********************************************************************
- * Pipe copy/fill rect helpers.
- */
-
-/* These really should move to a different file:
- */
-#include "pipe/p_format.h"
-
-extern void
-util_copy_rect(ubyte * dst, enum pipe_format format,
- unsigned dst_stride, unsigned dst_x, unsigned dst_y,
- unsigned width, unsigned height, const ubyte * src,
- int src_stride, unsigned src_x, unsigned src_y);
-
-extern void
-util_fill_rect(ubyte * dst, enum pipe_format format,
- unsigned dst_stride, unsigned dst_x, unsigned dst_y,
- unsigned width, unsigned height, union util_color *uc);
-
-
-#endif /* U_RECT_H */
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef U_RECT_H
+#define U_RECT_H
+
+#include "pipe/p_compiler.h"
+
+struct u_rect {
+ int x0, x1;
+ int y0, y1;
+};
+
+/* Do two rectangles intersect?
+ */
+static INLINE boolean
+u_rect_test_intersection(const struct u_rect *a,
+ const struct u_rect *b)
+{
+ return (!(a->x1 < b->x0 ||
+ b->x1 < a->x0 ||
+ a->y1 < b->y0 ||
+ b->y1 < a->y0));
+}
+
+/* Find the intersection of two rectangles known to intersect.
+ */
+static INLINE void
+u_rect_find_intersection(const struct u_rect *a,
+ struct u_rect *b)
+{
+ /* Caller should verify intersection exists before calling.
+ */
+ if (b->x0 < a->x0) b->x0 = a->x0;
+ if (b->x1 > a->x1) b->x1 = a->x1;
+ if (b->y0 < a->y0) b->y0 = a->y0;
+ if (b->y1 > a->y1) b->y1 = a->y1;
+}
+
+
+static INLINE void
+u_rect_possible_intersection(const struct u_rect *a,
+ struct u_rect *b)
+{
+ if (u_rect_test_intersection(a,b)) {
+ u_rect_find_intersection(a,b);
+ }
+ else {
+ b->x0 = b->x1 = b->y0 = b->y1 = 0;
+ }
+}
+
+#include "pipe/p_format.h"
+#include "util/u_pack_color.h"
+
+
+
+/**********************************************************************
+ * Pipe copy/fill rect helpers.
+ */
+
+/* These really should move to a different file:
+ */
+#include "pipe/p_format.h"
+
+extern void
+util_copy_rect(ubyte * dst, enum pipe_format format,
+ unsigned dst_stride, unsigned dst_x, unsigned dst_y,
+ unsigned width, unsigned height, const ubyte * src,
+ int src_stride, unsigned src_x, unsigned src_y);
+
+extern void
+util_fill_rect(ubyte * dst, enum pipe_format format,
+ unsigned dst_stride, unsigned dst_x, unsigned dst_y,
+ unsigned width, unsigned height, union util_color *uc);
+
+
+#endif /* U_RECT_H */
diff --git a/mesalib/src/gallium/auxiliary/util/u_resource.c b/mesalib/src/gallium/auxiliary/util/u_resource.c
index 7efedef07..50a7cd4d5 100644
--- a/mesalib/src/gallium/auxiliary/util/u_resource.c
+++ b/mesalib/src/gallium/auxiliary/util/u_resource.c
@@ -1,88 +1,88 @@
-
-
-#include "util/u_inlines.h"
-#include "util/u_transfer.h"
-
-static INLINE struct u_resource *
-u_resource( struct pipe_resource *res )
-{
- return (struct u_resource *)res;
-}
-
-boolean u_resource_get_handle_vtbl(struct pipe_screen *screen,
- struct pipe_resource *resource,
- struct winsys_handle *handle)
-{
- struct u_resource *ur = u_resource(resource);
- return ur->vtbl->resource_get_handle(screen, resource, handle);
-}
-
-void u_resource_destroy_vtbl(struct pipe_screen *screen,
- struct pipe_resource *resource)
-{
- struct u_resource *ur = u_resource(resource);
- ur->vtbl->resource_destroy(screen, resource);
-}
-
-struct pipe_transfer *u_get_transfer_vtbl(struct pipe_context *context,
- struct pipe_resource *resource,
- unsigned level,
- unsigned usage,
- const struct pipe_box *box)
-{
- struct u_resource *ur = u_resource(resource);
- return ur->vtbl->get_transfer(context, resource, level, usage, box);
-}
-
-void u_transfer_destroy_vtbl(struct pipe_context *pipe,
- struct pipe_transfer *transfer)
-{
- struct u_resource *ur = u_resource(transfer->resource);
- ur->vtbl->transfer_destroy(pipe, transfer);
-}
-
-void *u_transfer_map_vtbl( struct pipe_context *pipe,
- struct pipe_transfer *transfer )
-{
- struct u_resource *ur = u_resource(transfer->resource);
- return ur->vtbl->transfer_map(pipe, transfer);
-}
-
-void u_transfer_flush_region_vtbl( struct pipe_context *pipe,
- struct pipe_transfer *transfer,
- const struct pipe_box *box)
-{
- struct u_resource *ur = u_resource(transfer->resource);
- ur->vtbl->transfer_flush_region(pipe, transfer, box);
-}
-
-void u_transfer_unmap_vtbl( struct pipe_context *pipe,
- struct pipe_transfer *transfer )
-{
- struct u_resource *ur = u_resource(transfer->resource);
- ur->vtbl->transfer_unmap(pipe, transfer);
-}
-
-void u_transfer_inline_write_vtbl( struct pipe_context *pipe,
- struct pipe_resource *resource,
- unsigned level,
- unsigned usage,
- const struct pipe_box *box,
- const void *data,
- unsigned stride,
- unsigned layer_stride)
-{
- struct u_resource *ur = u_resource(resource);
- ur->vtbl->transfer_inline_write(pipe,
- resource,
- level,
- usage,
- box,
- data,
- stride,
- layer_stride);
-}
-
-
-
-
+
+
+#include "util/u_inlines.h"
+#include "util/u_transfer.h"
+
+static INLINE struct u_resource *
+u_resource( struct pipe_resource *res )
+{
+ return (struct u_resource *)res;
+}
+
+boolean u_resource_get_handle_vtbl(struct pipe_screen *screen,
+ struct pipe_resource *resource,
+ struct winsys_handle *handle)
+{
+ struct u_resource *ur = u_resource(resource);
+ return ur->vtbl->resource_get_handle(screen, resource, handle);
+}
+
+void u_resource_destroy_vtbl(struct pipe_screen *screen,
+ struct pipe_resource *resource)
+{
+ struct u_resource *ur = u_resource(resource);
+ ur->vtbl->resource_destroy(screen, resource);
+}
+
+struct pipe_transfer *u_get_transfer_vtbl(struct pipe_context *context,
+ struct pipe_resource *resource,
+ unsigned level,
+ unsigned usage,
+ const struct pipe_box *box)
+{
+ struct u_resource *ur = u_resource(resource);
+ return ur->vtbl->get_transfer(context, resource, level, usage, box);
+}
+
+void u_transfer_destroy_vtbl(struct pipe_context *pipe,
+ struct pipe_transfer *transfer)
+{
+ struct u_resource *ur = u_resource(transfer->resource);
+ ur->vtbl->transfer_destroy(pipe, transfer);
+}
+
+void *u_transfer_map_vtbl( struct pipe_context *pipe,
+ struct pipe_transfer *transfer )
+{
+ struct u_resource *ur = u_resource(transfer->resource);
+ return ur->vtbl->transfer_map(pipe, transfer);
+}
+
+void u_transfer_flush_region_vtbl( struct pipe_context *pipe,
+ struct pipe_transfer *transfer,
+ const struct pipe_box *box)
+{
+ struct u_resource *ur = u_resource(transfer->resource);
+ ur->vtbl->transfer_flush_region(pipe, transfer, box);
+}
+
+void u_transfer_unmap_vtbl( struct pipe_context *pipe,
+ struct pipe_transfer *transfer )
+{
+ struct u_resource *ur = u_resource(transfer->resource);
+ ur->vtbl->transfer_unmap(pipe, transfer);
+}
+
+void u_transfer_inline_write_vtbl( struct pipe_context *pipe,
+ struct pipe_resource *resource,
+ unsigned level,
+ unsigned usage,
+ const struct pipe_box *box,
+ const void *data,
+ unsigned stride,
+ unsigned layer_stride)
+{
+ struct u_resource *ur = u_resource(resource);
+ ur->vtbl->transfer_inline_write(pipe,
+ resource,
+ level,
+ usage,
+ box,
+ data,
+ stride,
+ layer_stride);
+}
+
+
+
+
diff --git a/mesalib/src/gallium/auxiliary/util/u_ringbuffer.c b/mesalib/src/gallium/auxiliary/util/u_ringbuffer.c
index ad4066aa1..648b105b1 100644
--- a/mesalib/src/gallium/auxiliary/util/u_ringbuffer.c
+++ b/mesalib/src/gallium/auxiliary/util/u_ringbuffer.c
@@ -1,160 +1,160 @@
-
-#include "os/os_thread.h"
-#include "pipe/p_defines.h"
-#include "util/u_ringbuffer.h"
-#include "util/u_math.h"
-#include "util/u_memory.h"
-
-/* Generic ringbuffer:
- */
-struct util_ringbuffer
-{
- struct util_packet *buf;
- unsigned mask;
-
- /* Can this be done with atomic variables??
- */
- unsigned head;
- unsigned tail;
- pipe_condvar change;
- pipe_mutex mutex;
-};
-
-
-struct util_ringbuffer *util_ringbuffer_create( unsigned dwords )
-{
- struct util_ringbuffer *ring = CALLOC_STRUCT(util_ringbuffer);
- if (ring == NULL)
- return NULL;
-
- assert(util_is_power_of_two(dwords));
-
- ring->buf = MALLOC( dwords * sizeof(unsigned) );
- if (ring->buf == NULL)
- goto fail;
-
- ring->mask = dwords - 1;
-
- pipe_condvar_init(ring->change);
- pipe_mutex_init(ring->mutex);
- return ring;
-
-fail:
- FREE(ring->buf);
- FREE(ring);
- return NULL;
-}
-
-void util_ringbuffer_destroy( struct util_ringbuffer *ring )
-{
- pipe_condvar_destroy(ring->change);
- pipe_mutex_destroy(ring->mutex);
- FREE(ring->buf);
- FREE(ring);
-}
-
-/**
- * Return number of free entries in the ring
- */
-static INLINE unsigned util_ringbuffer_space( const struct util_ringbuffer *ring )
-{
- return (ring->tail - (ring->head + 1)) & ring->mask;
-}
-
-/**
- * Is the ring buffer empty?
- */
-static INLINE boolean util_ringbuffer_empty( const struct util_ringbuffer *ring )
-{
- return util_ringbuffer_space(ring) == ring->mask;
-}
-
-void util_ringbuffer_enqueue( struct util_ringbuffer *ring,
- const struct util_packet *packet )
-{
- unsigned i;
-
- /* XXX: over-reliance on mutexes, etc:
- */
- pipe_mutex_lock(ring->mutex);
-
- /* make sure we don't request an impossible amount of space
- */
- assert(packet->dwords <= ring->mask);
-
- /* Wait for free space:
- */
- while (util_ringbuffer_space(ring) < packet->dwords)
- pipe_condvar_wait(ring->change, ring->mutex);
-
- /* Copy data to ring:
- */
- for (i = 0; i < packet->dwords; i++) {
-
- /* Copy all dwords of the packet. Note we're abusing the
- * typesystem a little - we're being passed a pointer to
- * something, but probably not an array of packet structs:
- */
- ring->buf[ring->head] = packet[i];
- ring->head++;
- ring->head &= ring->mask;
- }
-
- /* Signal change:
- */
- pipe_condvar_signal(ring->change);
- pipe_mutex_unlock(ring->mutex);
-}
-
-enum pipe_error util_ringbuffer_dequeue( struct util_ringbuffer *ring,
- struct util_packet *packet,
- unsigned max_dwords,
- boolean wait )
-{
- const struct util_packet *ring_packet;
- unsigned i;
- int ret = PIPE_OK;
-
- /* XXX: over-reliance on mutexes, etc:
- */
- pipe_mutex_lock(ring->mutex);
-
- /* Get next ring entry:
- */
- if (wait) {
- while (util_ringbuffer_empty(ring))
- pipe_condvar_wait(ring->change, ring->mutex);
- }
- else {
- if (util_ringbuffer_empty(ring)) {
- ret = PIPE_ERROR_OUT_OF_MEMORY;
- goto out;
- }
- }
-
- ring_packet = &ring->buf[ring->tail];
-
- /* Both of these are considered bugs. Raise an assert on debug builds.
- */
- if (ring_packet->dwords > ring->mask + 1 - util_ringbuffer_space(ring) ||
- ring_packet->dwords > max_dwords) {
- assert(0);
- ret = PIPE_ERROR_BAD_INPUT;
- goto out;
- }
-
- /* Copy data from ring:
- */
- for (i = 0; i < ring_packet->dwords; i++) {
- packet[i] = ring->buf[ring->tail];
- ring->tail++;
- ring->tail &= ring->mask;
- }
-
-out:
- /* Signal change:
- */
- pipe_condvar_signal(ring->change);
- pipe_mutex_unlock(ring->mutex);
- return ret;
-}
+
+#include "os/os_thread.h"
+#include "pipe/p_defines.h"
+#include "util/u_ringbuffer.h"
+#include "util/u_math.h"
+#include "util/u_memory.h"
+
+/* Generic ringbuffer:
+ */
+struct util_ringbuffer
+{
+ struct util_packet *buf;
+ unsigned mask;
+
+ /* Can this be done with atomic variables??
+ */
+ unsigned head;
+ unsigned tail;
+ pipe_condvar change;
+ pipe_mutex mutex;
+};
+
+
+struct util_ringbuffer *util_ringbuffer_create( unsigned dwords )
+{
+ struct util_ringbuffer *ring = CALLOC_STRUCT(util_ringbuffer);
+ if (ring == NULL)
+ return NULL;
+
+ assert(util_is_power_of_two(dwords));
+
+ ring->buf = MALLOC( dwords * sizeof(unsigned) );
+ if (ring->buf == NULL)
+ goto fail;
+
+ ring->mask = dwords - 1;
+
+ pipe_condvar_init(ring->change);
+ pipe_mutex_init(ring->mutex);
+ return ring;
+
+fail:
+ FREE(ring->buf);
+ FREE(ring);
+ return NULL;
+}
+
+void util_ringbuffer_destroy( struct util_ringbuffer *ring )
+{
+ pipe_condvar_destroy(ring->change);
+ pipe_mutex_destroy(ring->mutex);
+ FREE(ring->buf);
+ FREE(ring);
+}
+
+/**
+ * Return number of free entries in the ring
+ */
+static INLINE unsigned util_ringbuffer_space( const struct util_ringbuffer *ring )
+{
+ return (ring->tail - (ring->head + 1)) & ring->mask;
+}
+
+/**
+ * Is the ring buffer empty?
+ */
+static INLINE boolean util_ringbuffer_empty( const struct util_ringbuffer *ring )
+{
+ return util_ringbuffer_space(ring) == ring->mask;
+}
+
+void util_ringbuffer_enqueue( struct util_ringbuffer *ring,
+ const struct util_packet *packet )
+{
+ unsigned i;
+
+ /* XXX: over-reliance on mutexes, etc:
+ */
+ pipe_mutex_lock(ring->mutex);
+
+ /* make sure we don't request an impossible amount of space
+ */
+ assert(packet->dwords <= ring->mask);
+
+ /* Wait for free space:
+ */
+ while (util_ringbuffer_space(ring) < packet->dwords)
+ pipe_condvar_wait(ring->change, ring->mutex);
+
+ /* Copy data to ring:
+ */
+ for (i = 0; i < packet->dwords; i++) {
+
+ /* Copy all dwords of the packet. Note we're abusing the
+ * typesystem a little - we're being passed a pointer to
+ * something, but probably not an array of packet structs:
+ */
+ ring->buf[ring->head] = packet[i];
+ ring->head++;
+ ring->head &= ring->mask;
+ }
+
+ /* Signal change:
+ */
+ pipe_condvar_signal(ring->change);
+ pipe_mutex_unlock(ring->mutex);
+}
+
+enum pipe_error util_ringbuffer_dequeue( struct util_ringbuffer *ring,
+ struct util_packet *packet,
+ unsigned max_dwords,
+ boolean wait )
+{
+ const struct util_packet *ring_packet;
+ unsigned i;
+ int ret = PIPE_OK;
+
+ /* XXX: over-reliance on mutexes, etc:
+ */
+ pipe_mutex_lock(ring->mutex);
+
+ /* Get next ring entry:
+ */
+ if (wait) {
+ while (util_ringbuffer_empty(ring))
+ pipe_condvar_wait(ring->change, ring->mutex);
+ }
+ else {
+ if (util_ringbuffer_empty(ring)) {
+ ret = PIPE_ERROR_OUT_OF_MEMORY;
+ goto out;
+ }
+ }
+
+ ring_packet = &ring->buf[ring->tail];
+
+ /* Both of these are considered bugs. Raise an assert on debug builds.
+ */
+ if (ring_packet->dwords > ring->mask + 1 - util_ringbuffer_space(ring) ||
+ ring_packet->dwords > max_dwords) {
+ assert(0);
+ ret = PIPE_ERROR_BAD_INPUT;
+ goto out;
+ }
+
+ /* Copy data from ring:
+ */
+ for (i = 0; i < ring_packet->dwords; i++) {
+ packet[i] = ring->buf[ring->tail];
+ ring->tail++;
+ ring->tail &= ring->mask;
+ }
+
+out:
+ /* Signal change:
+ */
+ pipe_condvar_signal(ring->change);
+ pipe_mutex_unlock(ring->mutex);
+ return ret;
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_ringbuffer.h b/mesalib/src/gallium/auxiliary/util/u_ringbuffer.h
index 177199e94..85f0ad6c1 100644
--- a/mesalib/src/gallium/auxiliary/util/u_ringbuffer.h
+++ b/mesalib/src/gallium/auxiliary/util/u_ringbuffer.h
@@ -1,29 +1,29 @@
-
-#ifndef UTIL_RINGBUFFER_H
-#define UTIL_RINGBUFFER_H
-
-#include "pipe/p_compiler.h"
-#include "pipe/p_defines.h" /* only for pipe_error! */
-
-/* Generic header
- */
-struct util_packet {
- unsigned dwords:8;
- unsigned data24:24;
-};
-
-struct util_ringbuffer;
-
-struct util_ringbuffer *util_ringbuffer_create( unsigned dwords );
-
-void util_ringbuffer_destroy( struct util_ringbuffer *ring );
-
-void util_ringbuffer_enqueue( struct util_ringbuffer *ring,
- const struct util_packet *packet );
-
-enum pipe_error util_ringbuffer_dequeue( struct util_ringbuffer *ring,
- struct util_packet *packet,
- unsigned max_dwords,
- boolean wait );
-
-#endif
+
+#ifndef UTIL_RINGBUFFER_H
+#define UTIL_RINGBUFFER_H
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_defines.h" /* only for pipe_error! */
+
+/* Generic header
+ */
+struct util_packet {
+ unsigned dwords:8;
+ unsigned data24:24;
+};
+
+struct util_ringbuffer;
+
+struct util_ringbuffer *util_ringbuffer_create( unsigned dwords );
+
+void util_ringbuffer_destroy( struct util_ringbuffer *ring );
+
+void util_ringbuffer_enqueue( struct util_ringbuffer *ring,
+ const struct util_packet *packet );
+
+enum pipe_error util_ringbuffer_dequeue( struct util_ringbuffer *ring,
+ struct util_packet *packet,
+ unsigned max_dwords,
+ boolean wait );
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_sampler.h b/mesalib/src/gallium/auxiliary/util/u_sampler.h
index c7dc03c2f..f3dad7417 100644
--- a/mesalib/src/gallium/auxiliary/util/u_sampler.h
+++ b/mesalib/src/gallium/auxiliary/util/u_sampler.h
@@ -1,57 +1,57 @@
-/**************************************************************************
- *
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef U_SAMPLER_H
-#define U_SAMPLER_H
-
-
-#include "pipe/p_defines.h"
-#include "pipe/p_format.h"
-#include "pipe/p_state.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-void
-u_sampler_view_default_template(struct pipe_sampler_view *view,
- const struct pipe_resource *texture,
- enum pipe_format format);
-
-void
-u_sampler_view_default_dx9_template(struct pipe_sampler_view *view,
- const struct pipe_resource *texture,
- enum pipe_format format);
-
-
-#ifdef __cplusplus
-} /* extern "C" { */
-#endif
-
-#endif /* U_SAMPLER_H */
+/**************************************************************************
+ *
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef U_SAMPLER_H
+#define U_SAMPLER_H
+
+
+#include "pipe/p_defines.h"
+#include "pipe/p_format.h"
+#include "pipe/p_state.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void
+u_sampler_view_default_template(struct pipe_sampler_view *view,
+ const struct pipe_resource *texture,
+ enum pipe_format format);
+
+void
+u_sampler_view_default_dx9_template(struct pipe_sampler_view *view,
+ const struct pipe_resource *texture,
+ enum pipe_format format);
+
+
+#ifdef __cplusplus
+} /* extern "C" { */
+#endif
+
+#endif /* U_SAMPLER_H */
diff --git a/mesalib/src/gallium/auxiliary/util/u_simple_list.h b/mesalib/src/gallium/auxiliary/util/u_simple_list.h
index e8d12cced..fe5977137 100644
--- a/mesalib/src/gallium/auxiliary/util/u_simple_list.h
+++ b/mesalib/src/gallium/auxiliary/util/u_simple_list.h
@@ -1,199 +1,199 @@
-/**
- * \file simple_list.h
- * Simple macros for type-safe, intrusive lists.
- *
- * Intended to work with a list sentinal which is created as an empty
- * list. Insert & delete are O(1).
- *
- * \author
- * (C) 1997, Keith Whitwell
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef _U_SIMPLE_LIST_H_
-#define _U_SIMPLE_LIST_H_
-
-/**
- * Remove an element from list.
- *
- * \param elem element to remove.
- */
-#define remove_from_list(elem) \
-do { \
- (elem)->next->prev = (elem)->prev; \
- (elem)->prev->next = (elem)->next; \
- (elem)->next = elem; \
- (elem)->prev = elem; \
-} while (0)
-
-/**
- * Insert an element to the list head.
- *
- * \param list list.
- * \param elem element to insert.
- */
-#define insert_at_head(list, elem) \
-do { \
- (elem)->prev = list; \
- (elem)->next = (list)->next; \
- (list)->next->prev = elem; \
- (list)->next = elem; \
-} while(0)
-
-/**
- * Insert an element to the list tail.
- *
- * \param list list.
- * \param elem element to insert.
- */
-#define insert_at_tail(list, elem) \
-do { \
- (elem)->next = list; \
- (elem)->prev = (list)->prev; \
- (list)->prev->next = elem; \
- (list)->prev = elem; \
-} while(0)
-
-/**
- * Move an element to the list head.
- *
- * \param list list.
- * \param elem element to move.
- */
-#define move_to_head(list, elem) \
-do { \
- remove_from_list(elem); \
- insert_at_head(list, elem); \
-} while (0)
-
-/**
- * Move an element to the list tail.
- *
- * \param list list.
- * \param elem element to move.
- */
-#define move_to_tail(list, elem) \
-do { \
- remove_from_list(elem); \
- insert_at_tail(list, elem); \
-} while (0)
-
-/**
- * Make a empty list empty.
- *
- * \param sentinal list (sentinal element).
- */
-#define make_empty_list(sentinal) \
-do { \
- (sentinal)->next = sentinal; \
- (sentinal)->prev = sentinal; \
-} while (0)
-
-/**
- * Get list first element.
- *
- * \param list list.
- *
- * \return pointer to first element.
- */
-#define first_elem(list) ((list)->next)
-
-/**
- * Get list last element.
- *
- * \param list list.
- *
- * \return pointer to last element.
- */
-#define last_elem(list) ((list)->prev)
-
-/**
- * Get next element.
- *
- * \param elem element.
- *
- * \return pointer to next element.
- */
-#define next_elem(elem) ((elem)->next)
-
-/**
- * Get previous element.
- *
- * \param elem element.
- *
- * \return pointer to previous element.
- */
-#define prev_elem(elem) ((elem)->prev)
-
-/**
- * Test whether element is at end of the list.
- *
- * \param list list.
- * \param elem element.
- *
- * \return non-zero if element is at end of list, or zero otherwise.
- */
-#define at_end(list, elem) ((elem) == (list))
-
-/**
- * Test if a list is empty.
- *
- * \param list list.
- *
- * \return non-zero if list empty, or zero otherwise.
- */
-#define is_empty_list(list) ((list)->next == (list))
-
-/**
- * Walk through the elements of a list.
- *
- * \param ptr pointer to the current element.
- * \param list list.
- *
- * \note It should be followed by a { } block or a single statement, as in a \c
- * for loop.
- */
-#define foreach(ptr, list) \
- for( ptr=(list)->next ; ptr!=list ; ptr=(ptr)->next )
-
-/**
- * Walk through the elements of a list.
- *
- * Same as #foreach but lets you unlink the current value during a list
- * traversal. Useful for freeing a list, element by element.
- *
- * \param ptr pointer to the current element.
- * \param t temporary pointer.
- * \param list list.
- *
- * \note It should be followed by a { } block or a single statement, as in a \c
- * for loop.
- */
-#define foreach_s(ptr, t, list) \
- for(ptr=(list)->next,t=(ptr)->next; list != ptr; ptr=t, t=(t)->next)
-
-#endif /* _U_SIMPLE_LIST_H_ */
+/**
+ * \file simple_list.h
+ * Simple macros for type-safe, intrusive lists.
+ *
+ * Intended to work with a list sentinal which is created as an empty
+ * list. Insert & delete are O(1).
+ *
+ * \author
+ * (C) 1997, Keith Whitwell
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef _U_SIMPLE_LIST_H_
+#define _U_SIMPLE_LIST_H_
+
+/**
+ * Remove an element from list.
+ *
+ * \param elem element to remove.
+ */
+#define remove_from_list(elem) \
+do { \
+ (elem)->next->prev = (elem)->prev; \
+ (elem)->prev->next = (elem)->next; \
+ (elem)->next = elem; \
+ (elem)->prev = elem; \
+} while (0)
+
+/**
+ * Insert an element to the list head.
+ *
+ * \param list list.
+ * \param elem element to insert.
+ */
+#define insert_at_head(list, elem) \
+do { \
+ (elem)->prev = list; \
+ (elem)->next = (list)->next; \
+ (list)->next->prev = elem; \
+ (list)->next = elem; \
+} while(0)
+
+/**
+ * Insert an element to the list tail.
+ *
+ * \param list list.
+ * \param elem element to insert.
+ */
+#define insert_at_tail(list, elem) \
+do { \
+ (elem)->next = list; \
+ (elem)->prev = (list)->prev; \
+ (list)->prev->next = elem; \
+ (list)->prev = elem; \
+} while(0)
+
+/**
+ * Move an element to the list head.
+ *
+ * \param list list.
+ * \param elem element to move.
+ */
+#define move_to_head(list, elem) \
+do { \
+ remove_from_list(elem); \
+ insert_at_head(list, elem); \
+} while (0)
+
+/**
+ * Move an element to the list tail.
+ *
+ * \param list list.
+ * \param elem element to move.
+ */
+#define move_to_tail(list, elem) \
+do { \
+ remove_from_list(elem); \
+ insert_at_tail(list, elem); \
+} while (0)
+
+/**
+ * Make a empty list empty.
+ *
+ * \param sentinal list (sentinal element).
+ */
+#define make_empty_list(sentinal) \
+do { \
+ (sentinal)->next = sentinal; \
+ (sentinal)->prev = sentinal; \
+} while (0)
+
+/**
+ * Get list first element.
+ *
+ * \param list list.
+ *
+ * \return pointer to first element.
+ */
+#define first_elem(list) ((list)->next)
+
+/**
+ * Get list last element.
+ *
+ * \param list list.
+ *
+ * \return pointer to last element.
+ */
+#define last_elem(list) ((list)->prev)
+
+/**
+ * Get next element.
+ *
+ * \param elem element.
+ *
+ * \return pointer to next element.
+ */
+#define next_elem(elem) ((elem)->next)
+
+/**
+ * Get previous element.
+ *
+ * \param elem element.
+ *
+ * \return pointer to previous element.
+ */
+#define prev_elem(elem) ((elem)->prev)
+
+/**
+ * Test whether element is at end of the list.
+ *
+ * \param list list.
+ * \param elem element.
+ *
+ * \return non-zero if element is at end of list, or zero otherwise.
+ */
+#define at_end(list, elem) ((elem) == (list))
+
+/**
+ * Test if a list is empty.
+ *
+ * \param list list.
+ *
+ * \return non-zero if list empty, or zero otherwise.
+ */
+#define is_empty_list(list) ((list)->next == (list))
+
+/**
+ * Walk through the elements of a list.
+ *
+ * \param ptr pointer to the current element.
+ * \param list list.
+ *
+ * \note It should be followed by a { } block or a single statement, as in a \c
+ * for loop.
+ */
+#define foreach(ptr, list) \
+ for( ptr=(list)->next ; ptr!=list ; ptr=(ptr)->next )
+
+/**
+ * Walk through the elements of a list.
+ *
+ * Same as #foreach but lets you unlink the current value during a list
+ * traversal. Useful for freeing a list, element by element.
+ *
+ * \param ptr pointer to the current element.
+ * \param t temporary pointer.
+ * \param list list.
+ *
+ * \note It should be followed by a { } block or a single statement, as in a \c
+ * for loop.
+ */
+#define foreach_s(ptr, t, list) \
+ for(ptr=(list)->next,t=(ptr)->next; list != ptr; ptr=t, t=(t)->next)
+
+#endif /* _U_SIMPLE_LIST_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_split_prim.h b/mesalib/src/gallium/auxiliary/util/u_split_prim.h
index 9c83d6461..7f80fc127 100644
--- a/mesalib/src/gallium/auxiliary/util/u_split_prim.h
+++ b/mesalib/src/gallium/auxiliary/util/u_split_prim.h
@@ -1,114 +1,114 @@
-/* Originally written by Ben Skeggs for the nv50 driver*/
-
-#ifndef U_SPLIT_PRIM_H
-#define U_SPLIT_PRIM_H
-
-#include "pipe/p_defines.h"
-#include "pipe/p_compiler.h"
-
-#include "util/u_debug.h"
-
-struct util_split_prim {
- void *priv;
- void (*emit)(void *priv, unsigned start, unsigned count);
- void (*edge)(void *priv, boolean enabled);
-
- unsigned mode;
- unsigned start;
- unsigned p_start;
- unsigned p_end;
-
- uint repeat_first:1;
- uint close_first:1;
- uint edgeflag_off:1;
-};
-
-static INLINE void
-util_split_prim_init(struct util_split_prim *s,
- unsigned mode, unsigned start, unsigned count)
-{
- if (mode == PIPE_PRIM_LINE_LOOP) {
- s->mode = PIPE_PRIM_LINE_STRIP;
- s->close_first = 1;
- } else {
- s->mode = mode;
- s->close_first = 0;
- }
- s->start = start;
- s->p_start = start;
- s->p_end = start + count;
- s->edgeflag_off = 0;
- s->repeat_first = 0;
-}
-
-static INLINE boolean
-util_split_prim_next(struct util_split_prim *s, unsigned max_verts)
-{
- int repeat = 0;
-
- if (s->repeat_first) {
- s->emit(s->priv, s->start, 1);
- max_verts--;
- if (s->edgeflag_off) {
- s->edge(s->priv, TRUE);
- s->edgeflag_off = FALSE;
- }
- }
-
- if ((s->p_end - s->p_start) + s->close_first <= max_verts) {
- s->emit(s->priv, s->p_start, s->p_end - s->p_start);
- if (s->close_first)
- s->emit(s->priv, s->start, 1);
- return TRUE;
- }
-
- switch (s->mode) {
- case PIPE_PRIM_LINES:
- max_verts &= ~1;
- break;
- case PIPE_PRIM_LINE_STRIP:
- repeat = 1;
- break;
- case PIPE_PRIM_POLYGON:
- max_verts--;
- s->emit(s->priv, s->p_start, max_verts);
- s->edge(s->priv, FALSE);
- s->emit(s->priv, s->p_start + max_verts, 1);
- s->p_start += max_verts;
- s->repeat_first = TRUE;
- s->edgeflag_off = TRUE;
- return FALSE;
- case PIPE_PRIM_TRIANGLES:
- max_verts = max_verts - (max_verts % 3);
- break;
- case PIPE_PRIM_TRIANGLE_STRIP:
- /* to ensure winding stays correct, always split
- * on an even number of generated triangles
- */
- max_verts = max_verts & ~1;
- repeat = 2;
- break;
- case PIPE_PRIM_TRIANGLE_FAN:
- s->repeat_first = TRUE;
- repeat = 1;
- break;
- case PIPE_PRIM_QUADS:
- max_verts &= ~3;
- break;
- case PIPE_PRIM_QUAD_STRIP:
- max_verts &= ~1;
- repeat = 2;
- break;
- case PIPE_PRIM_POINTS:
- break;
- default:
- /* TODO: implement adjacency primitives */
- assert(0);
- }
-
- s->emit (s->priv, s->p_start, max_verts);
- s->p_start += (max_verts - repeat);
- return FALSE;
-}
-
-#endif /* U_SPLIT_PRIM_H */
+/* Originally written by Ben Skeggs for the nv50 driver*/
+
+#ifndef U_SPLIT_PRIM_H
+#define U_SPLIT_PRIM_H
+
+#include "pipe/p_defines.h"
+#include "pipe/p_compiler.h"
+
+#include "util/u_debug.h"
+
+struct util_split_prim {
+ void *priv;
+ void (*emit)(void *priv, unsigned start, unsigned count);
+ void (*edge)(void *priv, boolean enabled);
+
+ unsigned mode;
+ unsigned start;
+ unsigned p_start;
+ unsigned p_end;
+
+ uint repeat_first:1;
+ uint close_first:1;
+ uint edgeflag_off:1;
+};
+
+static INLINE void
+util_split_prim_init(struct util_split_prim *s,
+ unsigned mode, unsigned start, unsigned count)
+{
+ if (mode == PIPE_PRIM_LINE_LOOP) {
+ s->mode = PIPE_PRIM_LINE_STRIP;
+ s->close_first = 1;
+ } else {
+ s->mode = mode;
+ s->close_first = 0;
+ }
+ s->start = start;
+ s->p_start = start;
+ s->p_end = start + count;
+ s->edgeflag_off = 0;
+ s->repeat_first = 0;
+}
+
+static INLINE boolean
+util_split_prim_next(struct util_split_prim *s, unsigned max_verts)
+{
+ int repeat = 0;
+
+ if (s->repeat_first) {
+ s->emit(s->priv, s->start, 1);
+ max_verts--;
+ if (s->edgeflag_off) {
+ s->edge(s->priv, TRUE);
+ s->edgeflag_off = FALSE;
+ }
+ }
+
+ if ((s->p_end - s->p_start) + s->close_first <= max_verts) {
+ s->emit(s->priv, s->p_start, s->p_end - s->p_start);
+ if (s->close_first)
+ s->emit(s->priv, s->start, 1);
+ return TRUE;
+ }
+
+ switch (s->mode) {
+ case PIPE_PRIM_LINES:
+ max_verts &= ~1;
+ break;
+ case PIPE_PRIM_LINE_STRIP:
+ repeat = 1;
+ break;
+ case PIPE_PRIM_POLYGON:
+ max_verts--;
+ s->emit(s->priv, s->p_start, max_verts);
+ s->edge(s->priv, FALSE);
+ s->emit(s->priv, s->p_start + max_verts, 1);
+ s->p_start += max_verts;
+ s->repeat_first = TRUE;
+ s->edgeflag_off = TRUE;
+ return FALSE;
+ case PIPE_PRIM_TRIANGLES:
+ max_verts = max_verts - (max_verts % 3);
+ break;
+ case PIPE_PRIM_TRIANGLE_STRIP:
+ /* to ensure winding stays correct, always split
+ * on an even number of generated triangles
+ */
+ max_verts = max_verts & ~1;
+ repeat = 2;
+ break;
+ case PIPE_PRIM_TRIANGLE_FAN:
+ s->repeat_first = TRUE;
+ repeat = 1;
+ break;
+ case PIPE_PRIM_QUADS:
+ max_verts &= ~3;
+ break;
+ case PIPE_PRIM_QUAD_STRIP:
+ max_verts &= ~1;
+ repeat = 2;
+ break;
+ case PIPE_PRIM_POINTS:
+ break;
+ default:
+ /* TODO: implement adjacency primitives */
+ assert(0);
+ }
+
+ s->emit (s->priv, s->p_start, max_verts);
+ s->p_start += (max_verts - repeat);
+ return FALSE;
+}
+
+#endif /* U_SPLIT_PRIM_H */
diff --git a/mesalib/src/gallium/auxiliary/util/u_sse.h b/mesalib/src/gallium/auxiliary/util/u_sse.h
index d000c0fd7..1df6c8726 100644
--- a/mesalib/src/gallium/auxiliary/util/u_sse.h
+++ b/mesalib/src/gallium/auxiliary/util/u_sse.h
@@ -1,255 +1,255 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * SSE intrinsics portability header.
- *
- * Although the SSE intrinsics are support by all modern x86 and x86-64
- * compilers, there are some intrisincs missing in some implementations
- * (especially older MSVC versions). This header abstracts that away.
- */
-
-#ifndef U_SSE_H_
-#define U_SSE_H_
-
-#include "pipe/p_config.h"
-
-#if defined(PIPE_ARCH_SSE)
-
-#include <emmintrin.h>
-
-
-/* MSVC before VC8 does not support the _mm_castxxx_yyy */
-#if defined(_MSC_VER) && _MSC_VER < 1500
-
-union __declspec(align(16)) m128_types {
- __m128 m128;
- __m128i m128i;
- __m128d m128d;
-};
-
-static __inline __m128
-_mm_castsi128_ps(__m128i a)
-{
- union m128_types u;
- u.m128i = a;
- return u.m128;
-}
-
-static __inline __m128i
-_mm_castps_si128(__m128 a)
-{
- union m128_types u;
- u.m128 = a;
- return u.m128i;
-}
-
-#endif /* defined(_MSC_VER) && _MSC_VER < 1500 */
-
-union m128i {
- __m128i m;
- ubyte ub[16];
- ushort us[8];
- uint ui[4];
-};
-
-static INLINE void u_print_epi8(const char *name, __m128i r)
-{
- union { __m128i m; ubyte ub[16]; } u;
- u.m = r;
-
- debug_printf("%s: "
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x/"
- "%02x\n",
- name,
- u.ub[0], u.ub[1], u.ub[2], u.ub[3],
- u.ub[4], u.ub[5], u.ub[6], u.ub[7],
- u.ub[8], u.ub[9], u.ub[10], u.ub[11],
- u.ub[12], u.ub[13], u.ub[14], u.ub[15]);
-}
-
-static INLINE void u_print_epi16(const char *name, __m128i r)
-{
- union { __m128i m; ushort us[8]; } u;
- u.m = r;
-
- debug_printf("%s: "
- "%04x/"
- "%04x/"
- "%04x/"
- "%04x/"
- "%04x/"
- "%04x/"
- "%04x/"
- "%04x\n",
- name,
- u.us[0], u.us[1], u.us[2], u.us[3],
- u.us[4], u.us[5], u.us[6], u.us[7]);
-}
-
-static INLINE void u_print_epi32(const char *name, __m128i r)
-{
- union { __m128i m; uint ui[4]; } u;
- u.m = r;
-
- debug_printf("%s: "
- "%08x/"
- "%08x/"
- "%08x/"
- "%08x\n",
- name,
- u.ui[0], u.ui[1], u.ui[2], u.ui[3]);
-}
-
-static INLINE void u_print_ps(const char *name, __m128 r)
-{
- union { __m128 m; float f[4]; } u;
- u.m = r;
-
- debug_printf("%s: "
- "%f/"
- "%f/"
- "%f/"
- "%f\n",
- name,
- u.f[0], u.f[1], u.f[2], u.f[3]);
-}
-
-
-#define U_DUMP_EPI32(a) u_print_epi32(#a, a)
-#define U_DUMP_EPI16(a) u_print_epi16(#a, a)
-#define U_DUMP_EPI8(a) u_print_epi8(#a, a)
-#define U_DUMP_PS(a) u_print_ps(#a, a)
-
-
-
-#if defined(PIPE_ARCH_SSSE3)
-
-#include <tmmintrin.h>
-
-#else /* !PIPE_ARCH_SSSE3 */
-
-/**
- * Describe _mm_shuffle_epi8() with gcc extended inline assembly, for cases
- * where -mssse3 is not supported/enabled.
- *
- * MSVC will never get in here as its intrinsics support do not rely on
- * compiler command line options.
- */
-static __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-_mm_shuffle_epi8(__m128i a, __m128i mask)
-{
- __m128i result;
- __asm__("pshufb %1, %0"
- : "=x" (result)
- : "xm" (mask), "0" (a));
- return result;
-}
-
-#endif /* !PIPE_ARCH_SSSE3 */
-
-
-
-
-/* Provide an SSE2 implementation of _mm_mullo_epi32() in terms of
- * _mm_mul_epu32().
- *
- * I suspect this works fine for us because one of our operands is
- * always positive, but not sure that this can be used for general
- * signed integer multiplication.
- *
- * This seems close enough to the speed of SSE4 and the real
- * _mm_mullo_epi32() intrinsic as to not justify adding an sse4
- * dependency at this point.
- */
-static INLINE __m128i mm_mullo_epi32(const __m128i a, const __m128i b)
-{
- __m128i a4 = _mm_srli_epi64(a, 32); /* shift by one dword */
- __m128i b4 = _mm_srli_epi64(b, 32); /* shift by one dword */
- __m128i ba = _mm_mul_epu32(b, a); /* multply dwords 0, 2 */
- __m128i b4a4 = _mm_mul_epu32(b4, a4); /* multiply dwords 1, 3 */
-
- /* Interleave the results, either with shuffles or (slightly
- * faster) direct bit operations:
- */
-#if 0
- __m128i ba8 = _mm_shuffle_epi32(ba, 8);
- __m128i b4a48 = _mm_shuffle_epi32(b4a4, 8);
- __m128i result = _mm_unpacklo_epi32(ba8, b4a48);
-#else
- __m128i mask = _mm_setr_epi32(~0,0,~0,0);
- __m128i ba_mask = _mm_and_si128(ba, mask);
- __m128i b4a4_mask_shift = _mm_slli_epi64(b4a4, 32);
- __m128i result = _mm_or_si128(ba_mask, b4a4_mask_shift);
-#endif
-
- return result;
-}
-
-
-static INLINE void
-transpose4_epi32(const __m128i * restrict a,
- const __m128i * restrict b,
- const __m128i * restrict c,
- const __m128i * restrict d,
- __m128i * restrict o,
- __m128i * restrict p,
- __m128i * restrict q,
- __m128i * restrict r)
-{
- __m128i t0 = _mm_unpacklo_epi32(*a, *b);
- __m128i t1 = _mm_unpacklo_epi32(*c, *d);
- __m128i t2 = _mm_unpackhi_epi32(*a, *b);
- __m128i t3 = _mm_unpackhi_epi32(*c, *d);
-
- *o = _mm_unpacklo_epi64(t0, t1);
- *p = _mm_unpackhi_epi64(t0, t1);
- *q = _mm_unpacklo_epi64(t2, t3);
- *r = _mm_unpackhi_epi64(t2, t3);
-}
-
-#define SCALAR_EPI32(m, i) _mm_shuffle_epi32((m), _MM_SHUFFLE(i,i,i,i))
-
-
-#endif /* PIPE_ARCH_SSE */
-
-#endif /* U_SSE_H_ */
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * SSE intrinsics portability header.
+ *
+ * Although the SSE intrinsics are support by all modern x86 and x86-64
+ * compilers, there are some intrisincs missing in some implementations
+ * (especially older MSVC versions). This header abstracts that away.
+ */
+
+#ifndef U_SSE_H_
+#define U_SSE_H_
+
+#include "pipe/p_config.h"
+
+#if defined(PIPE_ARCH_SSE)
+
+#include <emmintrin.h>
+
+
+/* MSVC before VC8 does not support the _mm_castxxx_yyy */
+#if defined(_MSC_VER) && _MSC_VER < 1500
+
+union __declspec(align(16)) m128_types {
+ __m128 m128;
+ __m128i m128i;
+ __m128d m128d;
+};
+
+static __inline __m128
+_mm_castsi128_ps(__m128i a)
+{
+ union m128_types u;
+ u.m128i = a;
+ return u.m128;
+}
+
+static __inline __m128i
+_mm_castps_si128(__m128 a)
+{
+ union m128_types u;
+ u.m128 = a;
+ return u.m128i;
+}
+
+#endif /* defined(_MSC_VER) && _MSC_VER < 1500 */
+
+union m128i {
+ __m128i m;
+ ubyte ub[16];
+ ushort us[8];
+ uint ui[4];
+};
+
+static INLINE void u_print_epi8(const char *name, __m128i r)
+{
+ union { __m128i m; ubyte ub[16]; } u;
+ u.m = r;
+
+ debug_printf("%s: "
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x/"
+ "%02x\n",
+ name,
+ u.ub[0], u.ub[1], u.ub[2], u.ub[3],
+ u.ub[4], u.ub[5], u.ub[6], u.ub[7],
+ u.ub[8], u.ub[9], u.ub[10], u.ub[11],
+ u.ub[12], u.ub[13], u.ub[14], u.ub[15]);
+}
+
+static INLINE void u_print_epi16(const char *name, __m128i r)
+{
+ union { __m128i m; ushort us[8]; } u;
+ u.m = r;
+
+ debug_printf("%s: "
+ "%04x/"
+ "%04x/"
+ "%04x/"
+ "%04x/"
+ "%04x/"
+ "%04x/"
+ "%04x/"
+ "%04x\n",
+ name,
+ u.us[0], u.us[1], u.us[2], u.us[3],
+ u.us[4], u.us[5], u.us[6], u.us[7]);
+}
+
+static INLINE void u_print_epi32(const char *name, __m128i r)
+{
+ union { __m128i m; uint ui[4]; } u;
+ u.m = r;
+
+ debug_printf("%s: "
+ "%08x/"
+ "%08x/"
+ "%08x/"
+ "%08x\n",
+ name,
+ u.ui[0], u.ui[1], u.ui[2], u.ui[3]);
+}
+
+static INLINE void u_print_ps(const char *name, __m128 r)
+{
+ union { __m128 m; float f[4]; } u;
+ u.m = r;
+
+ debug_printf("%s: "
+ "%f/"
+ "%f/"
+ "%f/"
+ "%f\n",
+ name,
+ u.f[0], u.f[1], u.f[2], u.f[3]);
+}
+
+
+#define U_DUMP_EPI32(a) u_print_epi32(#a, a)
+#define U_DUMP_EPI16(a) u_print_epi16(#a, a)
+#define U_DUMP_EPI8(a) u_print_epi8(#a, a)
+#define U_DUMP_PS(a) u_print_ps(#a, a)
+
+
+
+#if defined(PIPE_ARCH_SSSE3)
+
+#include <tmmintrin.h>
+
+#else /* !PIPE_ARCH_SSSE3 */
+
+/**
+ * Describe _mm_shuffle_epi8() with gcc extended inline assembly, for cases
+ * where -mssse3 is not supported/enabled.
+ *
+ * MSVC will never get in here as its intrinsics support do not rely on
+ * compiler command line options.
+ */
+static __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_shuffle_epi8(__m128i a, __m128i mask)
+{
+ __m128i result;
+ __asm__("pshufb %1, %0"
+ : "=x" (result)
+ : "xm" (mask), "0" (a));
+ return result;
+}
+
+#endif /* !PIPE_ARCH_SSSE3 */
+
+
+
+
+/* Provide an SSE2 implementation of _mm_mullo_epi32() in terms of
+ * _mm_mul_epu32().
+ *
+ * I suspect this works fine for us because one of our operands is
+ * always positive, but not sure that this can be used for general
+ * signed integer multiplication.
+ *
+ * This seems close enough to the speed of SSE4 and the real
+ * _mm_mullo_epi32() intrinsic as to not justify adding an sse4
+ * dependency at this point.
+ */
+static INLINE __m128i mm_mullo_epi32(const __m128i a, const __m128i b)
+{
+ __m128i a4 = _mm_srli_epi64(a, 32); /* shift by one dword */
+ __m128i b4 = _mm_srli_epi64(b, 32); /* shift by one dword */
+ __m128i ba = _mm_mul_epu32(b, a); /* multply dwords 0, 2 */
+ __m128i b4a4 = _mm_mul_epu32(b4, a4); /* multiply dwords 1, 3 */
+
+ /* Interleave the results, either with shuffles or (slightly
+ * faster) direct bit operations:
+ */
+#if 0
+ __m128i ba8 = _mm_shuffle_epi32(ba, 8);
+ __m128i b4a48 = _mm_shuffle_epi32(b4a4, 8);
+ __m128i result = _mm_unpacklo_epi32(ba8, b4a48);
+#else
+ __m128i mask = _mm_setr_epi32(~0,0,~0,0);
+ __m128i ba_mask = _mm_and_si128(ba, mask);
+ __m128i b4a4_mask_shift = _mm_slli_epi64(b4a4, 32);
+ __m128i result = _mm_or_si128(ba_mask, b4a4_mask_shift);
+#endif
+
+ return result;
+}
+
+
+static INLINE void
+transpose4_epi32(const __m128i * restrict a,
+ const __m128i * restrict b,
+ const __m128i * restrict c,
+ const __m128i * restrict d,
+ __m128i * restrict o,
+ __m128i * restrict p,
+ __m128i * restrict q,
+ __m128i * restrict r)
+{
+ __m128i t0 = _mm_unpacklo_epi32(*a, *b);
+ __m128i t1 = _mm_unpacklo_epi32(*c, *d);
+ __m128i t2 = _mm_unpackhi_epi32(*a, *b);
+ __m128i t3 = _mm_unpackhi_epi32(*c, *d);
+
+ *o = _mm_unpacklo_epi64(t0, t1);
+ *p = _mm_unpackhi_epi64(t0, t1);
+ *q = _mm_unpacklo_epi64(t2, t3);
+ *r = _mm_unpackhi_epi64(t2, t3);
+}
+
+#define SCALAR_EPI32(m, i) _mm_shuffle_epi32((m), _MM_SHUFFLE(i,i,i,i))
+
+
+#endif /* PIPE_ARCH_SSE */
+
+#endif /* U_SSE_H_ */
diff --git a/mesalib/src/gallium/auxiliary/util/u_surfaces.c b/mesalib/src/gallium/auxiliary/util/u_surfaces.c
index 9a42c9d29..b0cfec2a8 100644
--- a/mesalib/src/gallium/auxiliary/util/u_surfaces.c
+++ b/mesalib/src/gallium/auxiliary/util/u_surfaces.c
@@ -1,124 +1,124 @@
-/**************************************************************************
- *
- * Copyright 2010 Luca Barbieri
- *
- * 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 (including the
- * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#include "u_surfaces.h"
-#include "util/u_hash_table.h"
-#include "util/u_inlines.h"
-#include "util/u_memory.h"
-
-boolean
-util_surfaces_do_get(struct util_surfaces *us, unsigned surface_struct_size,
- struct pipe_context *ctx, struct pipe_resource *pt,
- unsigned level, unsigned layer, unsigned flags,
- struct pipe_surface **res)
-{
- struct pipe_surface *ps;
-
- if(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE)
- { /* or 2D array */
- if(!us->u.hash)
- us->u.hash = cso_hash_create();
-
- ps = cso_hash_iter_data(cso_hash_find(us->u.hash, (layer << 8) | level));
- }
- else
- {
- if(!us->u.array)
- us->u.array = CALLOC(pt->last_level + 1, sizeof(struct pipe_surface *));
- ps = us->u.array[level];
- }
-
- if(ps && ps->context == ctx)
- {
- p_atomic_inc(&ps->reference.count);
- *res = ps;
- return FALSE;
- }
-
- ps = (struct pipe_surface *)CALLOC(1, surface_struct_size);
- if(!ps)
- {
- *res = NULL;
- return FALSE;
- }
-
- pipe_surface_init(ctx, ps, pt, level, layer, flags);
-
- if(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE)
- cso_hash_insert(us->u.hash, (layer << 8) | level, ps);
- else
- us->u.array[level] = ps;
-
- *res = ps;
- return TRUE;
-}
-
-void
-util_surfaces_do_detach(struct util_surfaces *us, struct pipe_surface *ps)
-{
- struct pipe_resource *pt = ps->texture;
- if(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE)
- { /* or 2D array */
- cso_hash_erase(us->u.hash, cso_hash_find(us->u.hash, (ps->u.tex.first_layer << 8) | ps->u.tex.level));
- }
- else
- us->u.array[ps->u.tex.level] = 0;
-}
-
-void
-util_surfaces_destroy(struct util_surfaces *us, struct pipe_resource *pt, void (*destroy_surface) (struct pipe_surface *))
-{
- if(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE)
- { /* or 2D array */
- if(us->u.hash)
- {
- struct cso_hash_iter iter;
- iter = cso_hash_first_node(us->u.hash);
- while (!cso_hash_iter_is_null(iter)) {
- destroy_surface(cso_hash_iter_data(iter));
- iter = cso_hash_iter_next(iter);
- }
-
- cso_hash_delete(us->u.hash);
- us->u.hash = NULL;
- }
- }
- else
- {
- if(us->u.array)
- {
- unsigned i;
- for(i = 0; i <= pt->last_level; ++i)
- {
- struct pipe_surface *ps = us->u.array[i];
- if(ps)
- destroy_surface(ps);
- }
- FREE(us->u.array);
- us->u.array = NULL;
- }
- }
-}
+/**************************************************************************
+ *
+ * Copyright 2010 Luca Barbieri
+ *
+ * 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 (including the
+ * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#include "u_surfaces.h"
+#include "util/u_hash_table.h"
+#include "util/u_inlines.h"
+#include "util/u_memory.h"
+
+boolean
+util_surfaces_do_get(struct util_surfaces *us, unsigned surface_struct_size,
+ struct pipe_context *ctx, struct pipe_resource *pt,
+ unsigned level, unsigned layer, unsigned flags,
+ struct pipe_surface **res)
+{
+ struct pipe_surface *ps;
+
+ if(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE)
+ { /* or 2D array */
+ if(!us->u.hash)
+ us->u.hash = cso_hash_create();
+
+ ps = cso_hash_iter_data(cso_hash_find(us->u.hash, (layer << 8) | level));
+ }
+ else
+ {
+ if(!us->u.array)
+ us->u.array = CALLOC(pt->last_level + 1, sizeof(struct pipe_surface *));
+ ps = us->u.array[level];
+ }
+
+ if(ps && ps->context == ctx)
+ {
+ p_atomic_inc(&ps->reference.count);
+ *res = ps;
+ return FALSE;
+ }
+
+ ps = (struct pipe_surface *)CALLOC(1, surface_struct_size);
+ if(!ps)
+ {
+ *res = NULL;
+ return FALSE;
+ }
+
+ pipe_surface_init(ctx, ps, pt, level, layer, flags);
+
+ if(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE)
+ cso_hash_insert(us->u.hash, (layer << 8) | level, ps);
+ else
+ us->u.array[level] = ps;
+
+ *res = ps;
+ return TRUE;
+}
+
+void
+util_surfaces_do_detach(struct util_surfaces *us, struct pipe_surface *ps)
+{
+ struct pipe_resource *pt = ps->texture;
+ if(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE)
+ { /* or 2D array */
+ cso_hash_erase(us->u.hash, cso_hash_find(us->u.hash, (ps->u.tex.first_layer << 8) | ps->u.tex.level));
+ }
+ else
+ us->u.array[ps->u.tex.level] = 0;
+}
+
+void
+util_surfaces_destroy(struct util_surfaces *us, struct pipe_resource *pt, void (*destroy_surface) (struct pipe_surface *))
+{
+ if(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE)
+ { /* or 2D array */
+ if(us->u.hash)
+ {
+ struct cso_hash_iter iter;
+ iter = cso_hash_first_node(us->u.hash);
+ while (!cso_hash_iter_is_null(iter)) {
+ destroy_surface(cso_hash_iter_data(iter));
+ iter = cso_hash_iter_next(iter);
+ }
+
+ cso_hash_delete(us->u.hash);
+ us->u.hash = NULL;
+ }
+ }
+ else
+ {
+ if(us->u.array)
+ {
+ unsigned i;
+ for(i = 0; i <= pt->last_level; ++i)
+ {
+ struct pipe_surface *ps = us->u.array[i];
+ if(ps)
+ destroy_surface(ps);
+ }
+ FREE(us->u.array);
+ us->u.array = NULL;
+ }
+ }
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_surfaces.h b/mesalib/src/gallium/auxiliary/util/u_surfaces.h
index 2402e8841..9581feda7 100644
--- a/mesalib/src/gallium/auxiliary/util/u_surfaces.h
+++ b/mesalib/src/gallium/auxiliary/util/u_surfaces.h
@@ -1,101 +1,101 @@
-/**************************************************************************
- *
- * Copyright 2010 Luca Barbieri
- *
- * 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 (including the
- * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef U_SURFACES_H_
-#define U_SURFACES_H_
-
-#include "pipe/p_compiler.h"
-#include "pipe/p_state.h"
-#include "util/u_atomic.h"
-#include "cso_cache/cso_hash.h"
-
-struct util_surfaces
-{
- union
- {
- struct cso_hash *hash;
- struct pipe_surface **array;
- void* pv;
- } u;
-};
-
-/* Return value indicates if the pipe surface result is new */
-boolean
-util_surfaces_do_get(struct util_surfaces *us, unsigned surface_struct_size,
- struct pipe_context *ctx, struct pipe_resource *pt,
- unsigned level, unsigned layer, unsigned flags,
- struct pipe_surface **res);
-
-/* fast inline path for the very common case */
-static INLINE boolean
-util_surfaces_get(struct util_surfaces *us, unsigned surface_struct_size,
- struct pipe_context *ctx, struct pipe_resource *pt,
- unsigned level, unsigned layer, unsigned flags,
- struct pipe_surface **res)
-{
- if(likely((pt->target == PIPE_TEXTURE_2D || pt->target == PIPE_TEXTURE_RECT) && us->u.array))
- {
- struct pipe_surface *ps = us->u.array[level];
- if(ps && ps->context == ctx)
- {
- p_atomic_inc(&ps->reference.count);
- *res = ps;
- return FALSE;
- }
- }
-
- return util_surfaces_do_get(us, surface_struct_size, ctx, pt, level, layer, flags, res);
-}
-
-static INLINE struct pipe_surface *
-util_surfaces_peek(struct util_surfaces *us, struct pipe_resource *pt, unsigned level, unsigned layer)
-{
- if(!us->u.pv)
- return 0;
-
- if(unlikely(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE))
- return cso_hash_iter_data(cso_hash_find(us->u.hash, (layer << 8) | level));
- else
- return us->u.array[level];
-}
-
-void util_surfaces_do_detach(struct util_surfaces *us, struct pipe_surface *ps);
-
-static INLINE void
-util_surfaces_detach(struct util_surfaces *us, struct pipe_surface *ps)
-{
- if(likely(ps->texture->target == PIPE_TEXTURE_2D || ps->texture->target == PIPE_TEXTURE_RECT))
- {
- us->u.array[ps->u.tex.level] = 0;
- return;
- }
-
- util_surfaces_do_detach(us, ps);
-}
-
-void util_surfaces_destroy(struct util_surfaces *us, struct pipe_resource *pt, void (*destroy_surface) (struct pipe_surface *));
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2010 Luca Barbieri
+ *
+ * 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 (including the
+ * next paragraph) 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 COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef U_SURFACES_H_
+#define U_SURFACES_H_
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_state.h"
+#include "util/u_atomic.h"
+#include "cso_cache/cso_hash.h"
+
+struct util_surfaces
+{
+ union
+ {
+ struct cso_hash *hash;
+ struct pipe_surface **array;
+ void* pv;
+ } u;
+};
+
+/* Return value indicates if the pipe surface result is new */
+boolean
+util_surfaces_do_get(struct util_surfaces *us, unsigned surface_struct_size,
+ struct pipe_context *ctx, struct pipe_resource *pt,
+ unsigned level, unsigned layer, unsigned flags,
+ struct pipe_surface **res);
+
+/* fast inline path for the very common case */
+static INLINE boolean
+util_surfaces_get(struct util_surfaces *us, unsigned surface_struct_size,
+ struct pipe_context *ctx, struct pipe_resource *pt,
+ unsigned level, unsigned layer, unsigned flags,
+ struct pipe_surface **res)
+{
+ if(likely((pt->target == PIPE_TEXTURE_2D || pt->target == PIPE_TEXTURE_RECT) && us->u.array))
+ {
+ struct pipe_surface *ps = us->u.array[level];
+ if(ps && ps->context == ctx)
+ {
+ p_atomic_inc(&ps->reference.count);
+ *res = ps;
+ return FALSE;
+ }
+ }
+
+ return util_surfaces_do_get(us, surface_struct_size, ctx, pt, level, layer, flags, res);
+}
+
+static INLINE struct pipe_surface *
+util_surfaces_peek(struct util_surfaces *us, struct pipe_resource *pt, unsigned level, unsigned layer)
+{
+ if(!us->u.pv)
+ return 0;
+
+ if(unlikely(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE))
+ return cso_hash_iter_data(cso_hash_find(us->u.hash, (layer << 8) | level));
+ else
+ return us->u.array[level];
+}
+
+void util_surfaces_do_detach(struct util_surfaces *us, struct pipe_surface *ps);
+
+static INLINE void
+util_surfaces_detach(struct util_surfaces *us, struct pipe_surface *ps)
+{
+ if(likely(ps->texture->target == PIPE_TEXTURE_2D || ps->texture->target == PIPE_TEXTURE_RECT))
+ {
+ us->u.array[ps->u.tex.level] = 0;
+ return;
+ }
+
+ util_surfaces_do_detach(us, ps);
+}
+
+void util_surfaces_destroy(struct util_surfaces *us, struct pipe_resource *pt, void (*destroy_surface) (struct pipe_surface *));
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_texture.c b/mesalib/src/gallium/auxiliary/util/u_texture.c
index 1e72843f0..d97e57a79 100644
--- a/mesalib/src/gallium/auxiliary/util/u_texture.c
+++ b/mesalib/src/gallium/auxiliary/util/u_texture.c
@@ -1,103 +1,103 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- * Copyright 2008 VMware, Inc. All rights reserved.
- * Copyright 2009 Marek Olšák <maraeo@gmail.com>
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * Texture mapping utility functions.
- *
- * @author Brian Paul
- * Marek Olšák
- */
-
-#include "pipe/p_defines.h"
-
-#include "util/u_debug.h"
-#include "util/u_texture.h"
-
-void util_map_texcoords2d_onto_cubemap(unsigned face,
- const float *in_st, unsigned in_stride,
- float *out_str, unsigned out_stride)
-{
- int i;
- float rx, ry, rz;
-
- /* loop over quad verts */
- for (i = 0; i < 4; i++) {
- /* Compute sc = +/-scale and tc = +/-scale.
- * Not +/-1 to avoid cube face selection ambiguity near the edges,
- * though that can still sometimes happen with this scale factor...
- */
- const float scale = 0.9999f;
- const float sc = (2 * in_st[0] - 1) * scale;
- const float tc = (2 * in_st[1] - 1) * scale;
-
- switch (face) {
- case PIPE_TEX_FACE_POS_X:
- rx = 1;
- ry = -tc;
- rz = -sc;
- break;
- case PIPE_TEX_FACE_NEG_X:
- rx = -1;
- ry = -tc;
- rz = sc;
- break;
- case PIPE_TEX_FACE_POS_Y:
- rx = sc;
- ry = 1;
- rz = tc;
- break;
- case PIPE_TEX_FACE_NEG_Y:
- rx = sc;
- ry = -1;
- rz = -tc;
- break;
- case PIPE_TEX_FACE_POS_Z:
- rx = sc;
- ry = -tc;
- rz = 1;
- break;
- case PIPE_TEX_FACE_NEG_Z:
- rx = -sc;
- ry = -tc;
- rz = -1;
- break;
- default:
- rx = ry = rz = 0;
- assert(0);
- }
-
- out_str[0] = rx; /*s*/
- out_str[1] = ry; /*t*/
- out_str[2] = rz; /*r*/
-
- in_st += in_stride;
- out_str += out_stride;
- }
-}
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ * Copyright 2008 VMware, Inc. All rights reserved.
+ * Copyright 2009 Marek Olšák <maraeo@gmail.com>
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Texture mapping utility functions.
+ *
+ * @author Brian Paul
+ * Marek Olšák
+ */
+
+#include "pipe/p_defines.h"
+
+#include "util/u_debug.h"
+#include "util/u_texture.h"
+
+void util_map_texcoords2d_onto_cubemap(unsigned face,
+ const float *in_st, unsigned in_stride,
+ float *out_str, unsigned out_stride)
+{
+ int i;
+ float rx, ry, rz;
+
+ /* loop over quad verts */
+ for (i = 0; i < 4; i++) {
+ /* Compute sc = +/-scale and tc = +/-scale.
+ * Not +/-1 to avoid cube face selection ambiguity near the edges,
+ * though that can still sometimes happen with this scale factor...
+ */
+ const float scale = 0.9999f;
+ const float sc = (2 * in_st[0] - 1) * scale;
+ const float tc = (2 * in_st[1] - 1) * scale;
+
+ switch (face) {
+ case PIPE_TEX_FACE_POS_X:
+ rx = 1;
+ ry = -tc;
+ rz = -sc;
+ break;
+ case PIPE_TEX_FACE_NEG_X:
+ rx = -1;
+ ry = -tc;
+ rz = sc;
+ break;
+ case PIPE_TEX_FACE_POS_Y:
+ rx = sc;
+ ry = 1;
+ rz = tc;
+ break;
+ case PIPE_TEX_FACE_NEG_Y:
+ rx = sc;
+ ry = -1;
+ rz = -tc;
+ break;
+ case PIPE_TEX_FACE_POS_Z:
+ rx = sc;
+ ry = -tc;
+ rz = 1;
+ break;
+ case PIPE_TEX_FACE_NEG_Z:
+ rx = -sc;
+ ry = -tc;
+ rz = -1;
+ break;
+ default:
+ rx = ry = rz = 0;
+ assert(0);
+ }
+
+ out_str[0] = rx; /*s*/
+ out_str[1] = ry; /*t*/
+ out_str[2] = rz; /*r*/
+
+ in_st += in_stride;
+ out_str += out_stride;
+ }
+}
diff --git a/mesalib/src/gallium/auxiliary/util/u_texture.h b/mesalib/src/gallium/auxiliary/util/u_texture.h
index 3e03911ec..93b2f1e4c 100644
--- a/mesalib/src/gallium/auxiliary/util/u_texture.h
+++ b/mesalib/src/gallium/auxiliary/util/u_texture.h
@@ -1,54 +1,54 @@
-/**************************************************************************
- *
- * Copyright 2009 Marek Olšák <maraeo@gmail.com>
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef U_TEXTURE_H
-#define U_TEXTURE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Convert 2D texture coordinates of 4 vertices into cubemap coordinates
- * in the given face.
- * Coordinates must be in the range [0,1].
- *
- * \param face Cubemap face.
- * \param in_st 4 pairs of 2D texture coordinates to convert.
- * \param in_stride Stride of in_st in floats.
- * \param out_str STR cubemap texture coordinates to compute.
- * \param out_stride Stride of out_str in floats.
- */
-void util_map_texcoords2d_onto_cubemap(unsigned face,
- const float *in_st, unsigned in_stride,
- float *out_str, unsigned out_stride);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2009 Marek Olšák <maraeo@gmail.com>
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef U_TEXTURE_H
+#define U_TEXTURE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Convert 2D texture coordinates of 4 vertices into cubemap coordinates
+ * in the given face.
+ * Coordinates must be in the range [0,1].
+ *
+ * \param face Cubemap face.
+ * \param in_st 4 pairs of 2D texture coordinates to convert.
+ * \param in_stride Stride of in_st in floats.
+ * \param out_str STR cubemap texture coordinates to compute.
+ * \param out_stride Stride of out_str in floats.
+ */
+void util_map_texcoords2d_onto_cubemap(unsigned face,
+ const float *in_st, unsigned in_stride,
+ float *out_str, unsigned out_stride);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_time.h b/mesalib/src/gallium/auxiliary/util/u_time.h
index a65cd59fe..15899c2c8 100644
--- a/mesalib/src/gallium/auxiliary/util/u_time.h
+++ b/mesalib/src/gallium/auxiliary/util/u_time.h
@@ -1,150 +1,150 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * @file
- * OS independent time-manipulation functions.
- *
- * @author Jose Fonseca <jrfonseca@tungstengraphics.com>
- */
-
-#ifndef U_TIME_H_
-#define U_TIME_H_
-
-
-#include "pipe/p_config.h"
-
-#include "os/os_time.h"
-
-#include "pipe/p_compiler.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/**
- * Time abstraction.
- *
- * Do not access this structure directly. Use the provided function instead.
- */
-struct util_time
-{
- int64_t counter;
-};
-
-
-PIPE_DEPRECATED
-static INLINE void
-util_time_get(struct util_time *t)
-{
- t->counter = os_time_get();
-}
-
-
-/**
- * Return t2 = t1 + usecs
- */
-PIPE_DEPRECATED
-static INLINE void
-util_time_add(const struct util_time *t1,
- int64_t usecs,
- struct util_time *t2)
-{
- t2->counter = t1->counter + usecs;
-}
-
-
-/**
- * Return difference between times, in microseconds
- */
-PIPE_DEPRECATED
-static INLINE int64_t
-util_time_diff(const struct util_time *t1,
- const struct util_time *t2)
-{
- return t2->counter - t1->counter;
-}
-
-
-/**
- * Compare two time values.
- *
- * Not publicly available because it does not take in account wrap-arounds.
- * Use util_time_timeout instead.
- */
-static INLINE int
-_util_time_compare(const struct util_time *t1,
- const struct util_time *t2)
-{
- if (t1->counter < t2->counter)
- return -1;
- else if(t1->counter > t2->counter)
- return 1;
- else
- return 0;
-}
-
-
-/**
- * Returns non-zero when the timeout expires.
- */
-PIPE_DEPRECATED
-static INLINE boolean
-util_time_timeout(const struct util_time *start,
- const struct util_time *end,
- const struct util_time *curr)
-{
- return os_time_timeout(start->counter, end->counter, curr->counter);
-}
-
-
-/**
- * Return current time in microseconds
- */
-PIPE_DEPRECATED
-static INLINE int64_t
-util_time_micros(void)
-{
- return os_time_get();
-}
-
-
-PIPE_DEPRECATED
-static INLINE void
-util_time_sleep(int64_t usecs)
-{
- os_time_sleep(usecs);
-}
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* U_TIME_H_ */
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * OS independent time-manipulation functions.
+ *
+ * @author Jose Fonseca <jrfonseca@tungstengraphics.com>
+ */
+
+#ifndef U_TIME_H_
+#define U_TIME_H_
+
+
+#include "pipe/p_config.h"
+
+#include "os/os_time.h"
+
+#include "pipe/p_compiler.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * Time abstraction.
+ *
+ * Do not access this structure directly. Use the provided function instead.
+ */
+struct util_time
+{
+ int64_t counter;
+};
+
+
+PIPE_DEPRECATED
+static INLINE void
+util_time_get(struct util_time *t)
+{
+ t->counter = os_time_get();
+}
+
+
+/**
+ * Return t2 = t1 + usecs
+ */
+PIPE_DEPRECATED
+static INLINE void
+util_time_add(const struct util_time *t1,
+ int64_t usecs,
+ struct util_time *t2)
+{
+ t2->counter = t1->counter + usecs;
+}
+
+
+/**
+ * Return difference between times, in microseconds
+ */
+PIPE_DEPRECATED
+static INLINE int64_t
+util_time_diff(const struct util_time *t1,
+ const struct util_time *t2)
+{
+ return t2->counter - t1->counter;
+}
+
+
+/**
+ * Compare two time values.
+ *
+ * Not publicly available because it does not take in account wrap-arounds.
+ * Use util_time_timeout instead.
+ */
+static INLINE int
+_util_time_compare(const struct util_time *t1,
+ const struct util_time *t2)
+{
+ if (t1->counter < t2->counter)
+ return -1;
+ else if(t1->counter > t2->counter)
+ return 1;
+ else
+ return 0;
+}
+
+
+/**
+ * Returns non-zero when the timeout expires.
+ */
+PIPE_DEPRECATED
+static INLINE boolean
+util_time_timeout(const struct util_time *start,
+ const struct util_time *end,
+ const struct util_time *curr)
+{
+ return os_time_timeout(start->counter, end->counter, curr->counter);
+}
+
+
+/**
+ * Return current time in microseconds
+ */
+PIPE_DEPRECATED
+static INLINE int64_t
+util_time_micros(void)
+{
+ return os_time_get();
+}
+
+
+PIPE_DEPRECATED
+static INLINE void
+util_time_sleep(int64_t usecs)
+{
+ os_time_sleep(usecs);
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* U_TIME_H_ */
diff --git a/mesalib/src/glsl/.gitignore b/mesalib/src/glsl/.gitignore
index 564de6e0e..afe68a0f1 100644
--- a/mesalib/src/glsl/.gitignore
+++ b/mesalib/src/glsl/.gitignore
@@ -1,4 +1,8 @@
+glsl_compiler
glsl_lexer.cpp
glsl_parser.cpp
glsl_parser.h
-glsl_parser.output \ No newline at end of file
+glsl_parser.output
+builtin_function.cpp
+builtin_compiler
+glsl_test
diff --git a/mesalib/src/glsl/glcpp/.gitignore b/mesalib/src/glsl/glcpp/.gitignore
index 117a6715c..af1f899e9 100644
--- a/mesalib/src/glsl/glcpp/.gitignore
+++ b/mesalib/src/glsl/glcpp/.gitignore
@@ -1,4 +1,9 @@
+glcpp
glcpp-lex.c
+glcpp-parse.output
glcpp-parse.c
glcpp-parse.h
-glcpp-parse.output \ No newline at end of file
+*.o
+*.lo
+*~
+tests/*.out
diff --git a/mesalib/src/glsl/glcpp/README b/mesalib/src/glsl/glcpp/README
index 735b27d44..0b5ef508c 100644
--- a/mesalib/src/glsl/glcpp/README
+++ b/mesalib/src/glsl/glcpp/README
@@ -1,32 +1,32 @@
-glcpp -- GLSL "C" preprocessor
-
-This is a simple preprocessor designed to provide the preprocessing
-needs of the GLSL language. The requirements for this preprocessor are
-specified in the GLSL 1.30 specification availble from:
-
-http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.30.10.pdf
-
-This specification is not precise on some semantics, (for example,
-#define and #if), defining these merely "as is standard for C++
-preprocessors". To fill in these details, I've been using a draft of
-the C99 standard as available from:
-
-http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
-
-Any downstream compiler accepting output from glcpp should be prepared
-to encounter and deal with the following preprocessor macros:
-
- #line
- #pragma
- #extension
-
-All other macros will be handles according to the GLSL specification
-and will not appear in the output.
-
-Known limitations
------------------
-The __LINE__ and __FILE__ macros are not yet supported.
-
-A file that ends with a function-like macro name as the last
-non-whitespace token will result in a parse error, (where it should be
+glcpp -- GLSL "C" preprocessor
+
+This is a simple preprocessor designed to provide the preprocessing
+needs of the GLSL language. The requirements for this preprocessor are
+specified in the GLSL 1.30 specification availble from:
+
+http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.30.10.pdf
+
+This specification is not precise on some semantics, (for example,
+#define and #if), defining these merely "as is standard for C++
+preprocessors". To fill in these details, I've been using a draft of
+the C99 standard as available from:
+
+http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
+
+Any downstream compiler accepting output from glcpp should be prepared
+to encounter and deal with the following preprocessor macros:
+
+ #line
+ #pragma
+ #extension
+
+All other macros will be handles according to the GLSL specification
+and will not appear in the output.
+
+Known limitations
+-----------------
+The __LINE__ and __FILE__ macros are not yet supported.
+
+A file that ends with a function-like macro name as the last
+non-whitespace token will result in a parse error, (where it should be
passed through as is). \ No newline at end of file
diff --git a/mesalib/src/glsl/glcpp/glcpp-parse.y b/mesalib/src/glsl/glcpp/glcpp-parse.y
index 47ba54ddf..9e8f9b2d6 100644
--- a/mesalib/src/glsl/glcpp/glcpp-parse.y
+++ b/mesalib/src/glsl/glcpp/glcpp-parse.y
@@ -1141,6 +1141,9 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api)
if (extensions->OES_EGL_image_external)
add_builtin_define(parser, "GL_OES_EGL_image_external", 1);
+
+ if (extensions->ARB_shader_bit_encoding)
+ add_builtin_define(parser, "GL_ARB_shader_bit_encoding", 1);
}
language_version = 110;
diff --git a/mesalib/src/glsl/glsl_parser_extras.cpp b/mesalib/src/glsl/glsl_parser_extras.cpp
index 46f21dd07..02c398616 100644
--- a/mesalib/src/glsl/glsl_parser_extras.cpp
+++ b/mesalib/src/glsl/glsl_parser_extras.cpp
@@ -295,6 +295,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
EXT(AMD_shader_stencil_export, false, false, true, true, false, ARB_shader_stencil_export),
EXT(OES_texture_3D, true, false, true, false, true, EXT_texture3D),
EXT(OES_EGL_image_external, true, false, true, false, true, OES_EGL_image_external),
+ EXT(ARB_shader_bit_encoding, true, true, true, true, false, ARB_shader_bit_encoding),
};
#undef EXT
diff --git a/mesalib/src/glsl/glsl_parser_extras.h b/mesalib/src/glsl/glsl_parser_extras.h
index 9c5d0a78f..b6dfbd07b 100644
--- a/mesalib/src/glsl/glsl_parser_extras.h
+++ b/mesalib/src/glsl/glsl_parser_extras.h
@@ -209,6 +209,8 @@ struct _mesa_glsl_parse_state {
bool OES_texture_3D_warn;
bool OES_EGL_image_external_enable;
bool OES_EGL_image_external_warn;
+ bool ARB_shader_bit_encoding_enable;
+ bool ARB_shader_bit_encoding_warn;
/*@}*/
/** Extensions supported by the OpenGL implementation. */
diff --git a/mesalib/src/glsl/ir.cpp b/mesalib/src/glsl/ir.cpp
index 970d8f3ba..69954998b 100644
--- a/mesalib/src/glsl/ir.cpp
+++ b/mesalib/src/glsl/ir.cpp
@@ -273,6 +273,7 @@ ir_expression::ir_expression(int op, ir_rvalue *op0)
case ir_unop_f2i:
case ir_unop_b2i:
case ir_unop_u2i:
+ case ir_unop_bitcast_f2i:
this->type = glsl_type::get_instance(GLSL_TYPE_INT,
op0->type->vector_elements, 1);
break;
@@ -280,6 +281,8 @@ ir_expression::ir_expression(int op, ir_rvalue *op0)
case ir_unop_b2f:
case ir_unop_i2f:
case ir_unop_u2f:
+ case ir_unop_bitcast_i2f:
+ case ir_unop_bitcast_u2f:
this->type = glsl_type::get_instance(GLSL_TYPE_FLOAT,
op0->type->vector_elements, 1);
break;
@@ -291,6 +294,7 @@ ir_expression::ir_expression(int op, ir_rvalue *op0)
break;
case ir_unop_i2u:
+ case ir_unop_bitcast_f2u:
this->type = glsl_type::get_instance(GLSL_TYPE_UINT,
op0->type->vector_elements, 1);
break;
@@ -427,6 +431,10 @@ static const char *const operator_strs[] = {
"u2f",
"i2u",
"u2i",
+ "bitcast_i2f",
+ "bitcast_f2i",
+ "bitcast_u2f",
+ "bitcast_f2u",
"any",
"trunc",
"ceil",
diff --git a/mesalib/src/glsl/ir.h b/mesalib/src/glsl/ir.h
index 9c7961ab9..2c4723627 100644
--- a/mesalib/src/glsl/ir.h
+++ b/mesalib/src/glsl/ir.h
@@ -864,19 +864,23 @@ enum ir_expression_operation {
ir_unop_rcp,
ir_unop_rsq,
ir_unop_sqrt,
- ir_unop_exp, /**< Log base e on gentype */
- ir_unop_log, /**< Natural log on gentype */
+ ir_unop_exp, /**< Log base e on gentype */
+ ir_unop_log, /**< Natural log on gentype */
ir_unop_exp2,
ir_unop_log2,
- ir_unop_f2i, /**< Float-to-integer conversion. */
- ir_unop_i2f, /**< Integer-to-float conversion. */
- ir_unop_f2b, /**< Float-to-boolean conversion */
- ir_unop_b2f, /**< Boolean-to-float conversion */
- ir_unop_i2b, /**< int-to-boolean conversion */
- ir_unop_b2i, /**< Boolean-to-int conversion */
- ir_unop_u2f, /**< Unsigned-to-float conversion. */
- ir_unop_i2u, /**< Integer-to-unsigned conversion. */
- ir_unop_u2i, /**< Unsigned-to-integer conversion. */
+ ir_unop_f2i, /**< Float-to-integer conversion. */
+ ir_unop_i2f, /**< Integer-to-float conversion. */
+ ir_unop_f2b, /**< Float-to-boolean conversion */
+ ir_unop_b2f, /**< Boolean-to-float conversion */
+ ir_unop_i2b, /**< int-to-boolean conversion */
+ ir_unop_b2i, /**< Boolean-to-int conversion */
+ ir_unop_u2f, /**< Unsigned-to-float conversion. */
+ ir_unop_i2u, /**< Integer-to-unsigned conversion. */
+ ir_unop_u2i, /**< Unsigned-to-integer conversion. */
+ ir_unop_bitcast_i2f, /**< Bit-identical int-to-float "conversion" */
+ ir_unop_bitcast_f2i, /**< Bit-identical float-to-int "conversion" */
+ ir_unop_bitcast_u2f, /**< Bit-identical uint-to-float "conversion" */
+ ir_unop_bitcast_f2u, /**< Bit-identical float-to-uint "conversion" */
ir_unop_any,
/**
diff --git a/mesalib/src/glsl/ir_constant_expression.cpp b/mesalib/src/glsl/ir_constant_expression.cpp
index 08a33285b..7a4d15f43 100644
--- a/mesalib/src/glsl/ir_constant_expression.cpp
+++ b/mesalib/src/glsl/ir_constant_expression.cpp
@@ -71,6 +71,29 @@ dot(ir_constant *op0, ir_constant *op1)
return result;
}
+/* This method is the only one supported by gcc. Unions in particular
+ * are iffy, and read-through-converted-pointer is killed by strict
+ * aliasing. OTOH, the compiler sees through the memcpy, so the
+ * resulting asm is reasonable.
+ */
+static float
+bitcast_u2f(unsigned int u)
+{
+ assert(sizeof(float) == sizeof(unsigned int));
+ float f;
+ memcpy(&f, &u, sizeof(f));
+ return f;
+}
+
+static unsigned int
+bitcast_f2u(float f)
+{
+ assert(sizeof(float) == sizeof(unsigned int));
+ unsigned int u;
+ memcpy(&u, &f, sizeof(f));
+ return u;
+}
+
ir_constant *
ir_rvalue::constant_expression_value(struct hash_table *variable_context)
{
@@ -207,6 +230,30 @@ ir_expression::constant_expression_value(struct hash_table *variable_context)
data.u[c] = op[0]->value.i[c];
}
break;
+ case ir_unop_bitcast_i2f:
+ assert(op[0]->type->base_type == GLSL_TYPE_INT);
+ for (unsigned c = 0; c < op[0]->type->components(); c++) {
+ data.f[c] = bitcast_u2f(op[0]->value.i[c]);
+ }
+ break;
+ case ir_unop_bitcast_f2i:
+ assert(op[0]->type->base_type == GLSL_TYPE_FLOAT);
+ for (unsigned c = 0; c < op[0]->type->components(); c++) {
+ data.i[c] = bitcast_f2u(op[0]->value.f[c]);
+ }
+ break;
+ case ir_unop_bitcast_u2f:
+ assert(op[0]->type->base_type == GLSL_TYPE_UINT);
+ for (unsigned c = 0; c < op[0]->type->components(); c++) {
+ data.f[c] = bitcast_u2f(op[0]->value.u[c]);
+ }
+ break;
+ case ir_unop_bitcast_f2u:
+ assert(op[0]->type->base_type == GLSL_TYPE_FLOAT);
+ for (unsigned c = 0; c < op[0]->type->components(); c++) {
+ data.u[c] = bitcast_f2u(op[0]->value.f[c]);
+ }
+ break;
case ir_unop_any:
assert(op[0]->type->is_boolean());
data.b[0] = false;
diff --git a/mesalib/src/glsl/ir_validate.cpp b/mesalib/src/glsl/ir_validate.cpp
index 7efb43477..5721717a5 100644
--- a/mesalib/src/glsl/ir_validate.cpp
+++ b/mesalib/src/glsl/ir_validate.cpp
@@ -288,6 +288,22 @@ ir_validate::visit_leave(ir_expression *ir)
assert(ir->operands[0]->type->base_type == GLSL_TYPE_UINT);
assert(ir->type->base_type == GLSL_TYPE_INT);
break;
+ case ir_unop_bitcast_i2f:
+ assert(ir->operands[0]->type->base_type == GLSL_TYPE_INT);
+ assert(ir->type->base_type == GLSL_TYPE_FLOAT);
+ break;
+ case ir_unop_bitcast_f2i:
+ assert(ir->operands[0]->type->base_type == GLSL_TYPE_FLOAT);
+ assert(ir->type->base_type == GLSL_TYPE_INT);
+ break;
+ case ir_unop_bitcast_u2f:
+ assert(ir->operands[0]->type->base_type == GLSL_TYPE_UINT);
+ assert(ir->type->base_type == GLSL_TYPE_FLOAT);
+ break;
+ case ir_unop_bitcast_f2u:
+ assert(ir->operands[0]->type->base_type == GLSL_TYPE_FLOAT);
+ assert(ir->type->base_type == GLSL_TYPE_UINT);
+ break;
case ir_unop_any:
assert(ir->operands[0]->type->base_type == GLSL_TYPE_BOOL);
diff --git a/mesalib/src/glsl/loop_analysis.h b/mesalib/src/glsl/loop_analysis.h
index 8bed1db02..05c982fc1 100644
--- a/mesalib/src/glsl/loop_analysis.h
+++ b/mesalib/src/glsl/loop_analysis.h
@@ -140,6 +140,23 @@ public:
{
hash_table_dtor(this->var_hash);
}
+
+ static void* operator new(size_t size, void *ctx)
+ {
+ void *lvs = ralloc_size(ctx, size);
+ assert(lvs != NULL);
+
+ ralloc_set_destructor(lvs, (void (*)(void*)) destructor);
+
+ return lvs;
+ }
+
+private:
+ static void
+ destructor(loop_variable_state *lvs)
+ {
+ lvs->~loop_variable_state();
+ }
};
diff --git a/mesalib/src/glsl/opt_noop_swizzle.cpp b/mesalib/src/glsl/opt_noop_swizzle.cpp
index c034d7339..0a906aaf1 100644
--- a/mesalib/src/glsl/opt_noop_swizzle.cpp
+++ b/mesalib/src/glsl/opt_noop_swizzle.cpp
@@ -1,80 +1,80 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-/**
- * \file opt_noop_swizzle.cpp
- *
- * If a swizzle doesn't change the order or count of components, then
- * remove the swizzle so that other optimization passes see the value
- * behind it.
- */
-
-#include "ir.h"
-#include "ir_visitor.h"
-#include "ir_rvalue_visitor.h"
-#include "ir_print_visitor.h"
-#include "glsl_types.h"
-
-class ir_noop_swizzle_visitor : public ir_rvalue_visitor {
-public:
- ir_noop_swizzle_visitor()
- {
- this->progress = false;
- }
-
- void handle_rvalue(ir_rvalue **rvalue);
- bool progress;
-};
-
-void
-ir_noop_swizzle_visitor::handle_rvalue(ir_rvalue **rvalue)
-{
- if (!*rvalue)
- return;
-
- ir_swizzle *swiz = (*rvalue)->as_swizzle();
- if (!swiz || swiz->type != swiz->val->type)
- return;
-
- int elems = swiz->val->type->vector_elements;
- if (swiz->mask.x != 0)
- return;
- if (elems >= 2 && swiz->mask.y != 1)
- return;
- if (elems >= 3 && swiz->mask.z != 2)
- return;
- if (elems >= 4 && swiz->mask.w != 3)
- return;
-
- this->progress = true;
- *rvalue = swiz->val;
-}
-
-bool
-do_noop_swizzle(exec_list *instructions)
-{
- ir_noop_swizzle_visitor v;
- visit_list_elements(&v, instructions);
-
- return v.progress;
-}
+/*
+ * Copyright © 2010 Intel Corporation
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+/**
+ * \file opt_noop_swizzle.cpp
+ *
+ * If a swizzle doesn't change the order or count of components, then
+ * remove the swizzle so that other optimization passes see the value
+ * behind it.
+ */
+
+#include "ir.h"
+#include "ir_visitor.h"
+#include "ir_rvalue_visitor.h"
+#include "ir_print_visitor.h"
+#include "glsl_types.h"
+
+class ir_noop_swizzle_visitor : public ir_rvalue_visitor {
+public:
+ ir_noop_swizzle_visitor()
+ {
+ this->progress = false;
+ }
+
+ void handle_rvalue(ir_rvalue **rvalue);
+ bool progress;
+};
+
+void
+ir_noop_swizzle_visitor::handle_rvalue(ir_rvalue **rvalue)
+{
+ if (!*rvalue)
+ return;
+
+ ir_swizzle *swiz = (*rvalue)->as_swizzle();
+ if (!swiz || swiz->type != swiz->val->type)
+ return;
+
+ int elems = swiz->val->type->vector_elements;
+ if (swiz->mask.x != 0)
+ return;
+ if (elems >= 2 && swiz->mask.y != 1)
+ return;
+ if (elems >= 3 && swiz->mask.z != 2)
+ return;
+ if (elems >= 4 && swiz->mask.w != 3)
+ return;
+
+ this->progress = true;
+ *rvalue = swiz->val;
+}
+
+bool
+do_noop_swizzle(exec_list *instructions)
+{
+ ir_noop_swizzle_visitor v;
+ visit_list_elements(&v, instructions);
+
+ return v.progress;
+}
diff --git a/mesalib/src/glsl/opt_redundant_jumps.cpp b/mesalib/src/glsl/opt_redundant_jumps.cpp
index eb60519e2..f350fa947 100644
--- a/mesalib/src/glsl/opt_redundant_jumps.cpp
+++ b/mesalib/src/glsl/opt_redundant_jumps.cpp
@@ -1,120 +1,120 @@
-/*
- * Copyright © 2010 Intel Corporation
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-/**
- * \file opt_redundant_jumps.cpp
- * Remove certain types of redundant jumps
- */
-
-#include "ir.h"
-
-class redundant_jumps_visitor : public ir_hierarchical_visitor {
-public:
- redundant_jumps_visitor()
- {
- this->progress = false;
- }
-
- virtual ir_visitor_status visit_leave(ir_if *);
- virtual ir_visitor_status visit_leave(ir_loop *);
- virtual ir_visitor_status visit_enter(ir_assignment *);
-
- bool progress;
-};
-
-/* We only care about the top level instructions, so don't descend
- * into expressions.
- */
-ir_visitor_status
-redundant_jumps_visitor::visit_enter(ir_assignment *ir)
-{
- return visit_continue_with_parent;
-}
-
-ir_visitor_status
-redundant_jumps_visitor::visit_leave(ir_if *ir)
-{
- /* If the last instruction in both branches is a 'break' or a 'continue',
- * pull it out of the branches and insert it after the if-statment. Note
- * that both must be the same type (either 'break' or 'continue').
- */
- ir_instruction *const last_then =
- (ir_instruction *) ir->then_instructions.get_tail();
- ir_instruction *const last_else =
- (ir_instruction *) ir->else_instructions.get_tail();
-
- if ((last_then == NULL) || (last_else == NULL))
- return visit_continue;
-
- if ((last_then->ir_type != ir_type_loop_jump)
- || (last_else->ir_type != ir_type_loop_jump))
- return visit_continue;
-
- ir_loop_jump *const then_jump = (ir_loop_jump *) last_then;
- ir_loop_jump *const else_jump = (ir_loop_jump *) last_else;
-
- if (then_jump->mode != else_jump->mode)
- return visit_continue;
-
- then_jump->remove();
- else_jump->remove();
- this->progress = true;
-
- ir->insert_after(then_jump);
-
- /* If both branchs of the if-statement are now empty, remove the
- * if-statement.
- */
- if (ir->then_instructions.is_empty() && ir->else_instructions.is_empty())
- ir->remove();
-
- return visit_continue;
-}
-
-
-ir_visitor_status
-redundant_jumps_visitor::visit_leave(ir_loop *ir)
-{
- /* If the last instruction of a loop body is a 'continue', remove it.
- */
- ir_instruction *const last =
- (ir_instruction *) ir->body_instructions.get_tail();
-
- if (last && (last->ir_type == ir_type_loop_jump)
- && (((ir_loop_jump *) last)->mode == ir_loop_jump::jump_continue)) {
- last->remove();
- this->progress = true;
- }
-
- return visit_continue;
-}
-
-
-bool
-optimize_redundant_jumps(exec_list *instructions)
-{
- redundant_jumps_visitor v;
-
- v.run(instructions);
- return v.progress;
-}
+/*
+ * Copyright © 2010 Intel Corporation
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+/**
+ * \file opt_redundant_jumps.cpp
+ * Remove certain types of redundant jumps
+ */
+
+#include "ir.h"
+
+class redundant_jumps_visitor : public ir_hierarchical_visitor {
+public:
+ redundant_jumps_visitor()
+ {
+ this->progress = false;
+ }
+
+ virtual ir_visitor_status visit_leave(ir_if *);
+ virtual ir_visitor_status visit_leave(ir_loop *);
+ virtual ir_visitor_status visit_enter(ir_assignment *);
+
+ bool progress;
+};
+
+/* We only care about the top level instructions, so don't descend
+ * into expressions.
+ */
+ir_visitor_status
+redundant_jumps_visitor::visit_enter(ir_assignment *ir)
+{
+ return visit_continue_with_parent;
+}
+
+ir_visitor_status
+redundant_jumps_visitor::visit_leave(ir_if *ir)
+{
+ /* If the last instruction in both branches is a 'break' or a 'continue',
+ * pull it out of the branches and insert it after the if-statment. Note
+ * that both must be the same type (either 'break' or 'continue').
+ */
+ ir_instruction *const last_then =
+ (ir_instruction *) ir->then_instructions.get_tail();
+ ir_instruction *const last_else =
+ (ir_instruction *) ir->else_instructions.get_tail();
+
+ if ((last_then == NULL) || (last_else == NULL))
+ return visit_continue;
+
+ if ((last_then->ir_type != ir_type_loop_jump)
+ || (last_else->ir_type != ir_type_loop_jump))
+ return visit_continue;
+
+ ir_loop_jump *const then_jump = (ir_loop_jump *) last_then;
+ ir_loop_jump *const else_jump = (ir_loop_jump *) last_else;
+
+ if (then_jump->mode != else_jump->mode)
+ return visit_continue;
+
+ then_jump->remove();
+ else_jump->remove();
+ this->progress = true;
+
+ ir->insert_after(then_jump);
+
+ /* If both branchs of the if-statement are now empty, remove the
+ * if-statement.
+ */
+ if (ir->then_instructions.is_empty() && ir->else_instructions.is_empty())
+ ir->remove();
+
+ return visit_continue;
+}
+
+
+ir_visitor_status
+redundant_jumps_visitor::visit_leave(ir_loop *ir)
+{
+ /* If the last instruction of a loop body is a 'continue', remove it.
+ */
+ ir_instruction *const last =
+ (ir_instruction *) ir->body_instructions.get_tail();
+
+ if (last && (last->ir_type == ir_type_loop_jump)
+ && (((ir_loop_jump *) last)->mode == ir_loop_jump::jump_continue)) {
+ last->remove();
+ this->progress = true;
+ }
+
+ return visit_continue;
+}
+
+
+bool
+optimize_redundant_jumps(exec_list *instructions)
+{
+ redundant_jumps_visitor v;
+
+ v.run(instructions);
+ return v.progress;
+}
diff --git a/mesalib/src/glsl/standalone_scaffolding.cpp b/mesalib/src/glsl/standalone_scaffolding.cpp
index f15f2d882..679714e38 100644
--- a/mesalib/src/glsl/standalone_scaffolding.cpp
+++ b/mesalib/src/glsl/standalone_scaffolding.cpp
@@ -79,6 +79,7 @@ void initialize_context_to_defaults(struct gl_context *ctx, gl_api api)
ctx->Extensions.NV_texture_rectangle = true;
ctx->Extensions.EXT_texture3D = true;
ctx->Extensions.OES_EGL_image_external = true;
+ ctx->Extensions.ARB_shader_bit_encoding = true;
ctx->Const.GLSLVersion = 120;
diff --git a/mesalib/src/glsl/strtod.h b/mesalib/src/glsl/strtod.h
index c9ff0a87f..0cf6409d4 100644
--- a/mesalib/src/glsl/strtod.h
+++ b/mesalib/src/glsl/strtod.h
@@ -1,43 +1,43 @@
-/*
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
- */
-
-
-#ifndef STRTOD_H
-#define STRTOD_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern double
-glsl_strtod(const char *s, char **end);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif
+/*
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
+ */
+
+
+#ifndef STRTOD_H
+#define STRTOD_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern double
+glsl_strtod(const char *s, char **end);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/mesalib/src/glu/.gitignore b/mesalib/src/glu/.gitignore
new file mode 100644
index 000000000..279ea7d43
--- /dev/null
+++ b/mesalib/src/glu/.gitignore
@@ -0,0 +1 @@
+exptmp
diff --git a/mesalib/src/glu/sgi/.gitignore b/mesalib/src/glu/sgi/.gitignore
new file mode 100644
index 000000000..279ea7d43
--- /dev/null
+++ b/mesalib/src/glu/sgi/.gitignore
@@ -0,0 +1 @@
+exptmp
diff --git a/mesalib/src/mapi/glapi/.gitignore b/mesalib/src/mapi/glapi/.gitignore
new file mode 100644
index 000000000..21edf4f58
--- /dev/null
+++ b/mesalib/src/mapi/glapi/.gitignore
@@ -0,0 +1,20 @@
+.cvsignore
+glX_proto_common.pyo
+glX_proto_common.pyc
+typeexpr.pyo
+typeexpr.pyc
+license.pyo
+license.pyc
+gl_XML.pyo
+gl_XML.pyc
+glX_XML.pyo
+glX_XML.pyc
+glapi_gentable.c
+glapi_gentable.h
+glapi_mapi_tmp.h
+glapi_sparc.S
+glapi_x86-64.S
+glapi_x86.S
+glapitable.h
+glapitemp.h
+glprocs.h
diff --git a/mesalib/src/mapi/glapi/gen/ARB_ES2_compatibility.xml b/mesalib/src/mapi/glapi/gen/ARB_ES2_compatibility.xml
index 5e348544a..d52a88c60 100644
--- a/mesalib/src/mapi/glapi/gen/ARB_ES2_compatibility.xml
+++ b/mesalib/src/mapi/glapi/gen/ARB_ES2_compatibility.xml
@@ -1,58 +1,58 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-
-<category name="GL_ARB_ES2_compatibility" number="95">
- <enum name="FIXED" count="1" value="0x140C"/>
- <enum name="LOW_FLOAT" value="0x8DF0"/>
- <enum name="MEDIUM_FLOAT" value="0x8DF1"/>
- <enum name="HIGH_FLOAT" value="0x8DF2"/>
- <enum name="LOW_INT" value="0x8DF3"/>
- <enum name="MEDIUM_INT" value="0x8DF4"/>
- <enum name="HIGH_INT" value="0x8DF5"/>
- <enum name="SHADER_BINARY_FORMATS" value="0x8DF8"/>
- <enum name="NUM_SHADER_BINARY_FORMATS" value="0x8DF9"/>
- <enum name="SHADER_COMPILER" value="0x8DFA"/>
- <enum name="MAX_VERTEX_UNIFORM_VECTORS" value="0x8DFB"/>
- <enum name="MAX_VARYING_VECTORS" value="0x8DFC"/>
- <enum name="MAX_FRAGMENT_UNIFORM_VECTORS" value="0x8DFD"/>
-
- <function name="GetShaderPrecisionFormat" offset="assign">
- <param name="shadertype" type="GLenum"/>
- <param name="precisiontype" type="GLenum"/>
- <param name="range" type="GLint *"/>
- <param name="precision" type="GLint *"/>
- </function>
-
- <function name="ReleaseShaderCompiler" offset="assign">
- </function>
-
- <function name="ShaderBinary" offset="assign">
- <param name="n" type="GLsizei"/>
- <param name="shaders" type="const GLuint *"/>
- <param name="binaryformat" type="GLenum"/>
- <param name="binary" type="const GLvoid *"/>
- <param name="length" type="GLsizei"/>
- </function>
-
- <!-- from GL_OES_fixed_point -->
- <enum name="FIXED" value="0x140C"/>
- <type name="fixed" size="4" />
-
- <!-- from GL_OES_read_format -->
- <enum name="IMPLEMENTATION_COLOR_READ_TYPE" value="0x8B9A"/>
- <enum name="IMPLEMENTATION_COLOR_READ_FORMAT" value="0x8B9B"/>
-
- <!-- from GL_OES_single_precision -->
- <function name="ClearDepthf" offset="assign">
- <param name="depth" type="GLclampf"/>
- </function>
-
- <function name="DepthRangef" offset="assign">
- <param name="zNear" type="GLclampf"/>
- <param name="zFar" type="GLclampf"/>
- </function>
-</category>
-
-</OpenGLAPI>
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_ARB_ES2_compatibility" number="95">
+ <enum name="FIXED" count="1" value="0x140C"/>
+ <enum name="LOW_FLOAT" value="0x8DF0"/>
+ <enum name="MEDIUM_FLOAT" value="0x8DF1"/>
+ <enum name="HIGH_FLOAT" value="0x8DF2"/>
+ <enum name="LOW_INT" value="0x8DF3"/>
+ <enum name="MEDIUM_INT" value="0x8DF4"/>
+ <enum name="HIGH_INT" value="0x8DF5"/>
+ <enum name="SHADER_BINARY_FORMATS" value="0x8DF8"/>
+ <enum name="NUM_SHADER_BINARY_FORMATS" value="0x8DF9"/>
+ <enum name="SHADER_COMPILER" value="0x8DFA"/>
+ <enum name="MAX_VERTEX_UNIFORM_VECTORS" value="0x8DFB"/>
+ <enum name="MAX_VARYING_VECTORS" value="0x8DFC"/>
+ <enum name="MAX_FRAGMENT_UNIFORM_VECTORS" value="0x8DFD"/>
+
+ <function name="GetShaderPrecisionFormat" offset="assign">
+ <param name="shadertype" type="GLenum"/>
+ <param name="precisiontype" type="GLenum"/>
+ <param name="range" type="GLint *"/>
+ <param name="precision" type="GLint *"/>
+ </function>
+
+ <function name="ReleaseShaderCompiler" offset="assign">
+ </function>
+
+ <function name="ShaderBinary" offset="assign">
+ <param name="n" type="GLsizei"/>
+ <param name="shaders" type="const GLuint *"/>
+ <param name="binaryformat" type="GLenum"/>
+ <param name="binary" type="const GLvoid *"/>
+ <param name="length" type="GLsizei"/>
+ </function>
+
+ <!-- from GL_OES_fixed_point -->
+ <enum name="FIXED" value="0x140C"/>
+ <type name="fixed" size="4" />
+
+ <!-- from GL_OES_read_format -->
+ <enum name="IMPLEMENTATION_COLOR_READ_TYPE" value="0x8B9A"/>
+ <enum name="IMPLEMENTATION_COLOR_READ_FORMAT" value="0x8B9B"/>
+
+ <!-- from GL_OES_single_precision -->
+ <function name="ClearDepthf" offset="assign">
+ <param name="depth" type="GLclampf"/>
+ </function>
+
+ <function name="DepthRangef" offset="assign">
+ <param name="zNear" type="GLclampf"/>
+ <param name="zFar" type="GLclampf"/>
+ </function>
+</category>
+
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/ARB_draw_buffers_blend.xml b/mesalib/src/mapi/glapi/gen/ARB_draw_buffers_blend.xml
index b65f26b3d..0b6947cc5 100644
--- a/mesalib/src/mapi/glapi/gen/ARB_draw_buffers_blend.xml
+++ b/mesalib/src/mapi/glapi/gen/ARB_draw_buffers_blend.xml
@@ -1,38 +1,38 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_ARB_draw_buffers_blend" number="69">
-
- <function name="BlendEquationiARB" offset="assign">
- <param name="buf" type="GLuint"/>
- <param name="mode" type="GLenum"/>
- </function>
-
- <function name="BlendEquationSeparateiARB" offset="assign">
- <param name="buf" type="GLuint"/>
- <param name="modeRGB" type="GLenum"/>
- <param name="modeA" type="GLenum"/>
- </function>
-
- <function name="BlendFunciARB" offset="assign">
- <param name="buf" type="GLuint"/>
- <param name="src" type="GLenum"/>
- <param name="dst" type="GLenum"/>
- </function>
-
- <function name="BlendFuncSeparateiARB" offset="assign">
- <param name="buf" type="GLuint"/>
- <param name="srcRGB" type="GLenum"/>
- <param name="dstRGB" type="GLenum"/>
- <param name="srcA" type="GLenum"/>
- <param name="dstA" type="GLenum"/>
- </function>
-
-</category>
-
-</OpenGLAPI>
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_ARB_draw_buffers_blend" number="69">
+
+ <function name="BlendEquationiARB" offset="assign">
+ <param name="buf" type="GLuint"/>
+ <param name="mode" type="GLenum"/>
+ </function>
+
+ <function name="BlendEquationSeparateiARB" offset="assign">
+ <param name="buf" type="GLuint"/>
+ <param name="modeRGB" type="GLenum"/>
+ <param name="modeA" type="GLenum"/>
+ </function>
+
+ <function name="BlendFunciARB" offset="assign">
+ <param name="buf" type="GLuint"/>
+ <param name="src" type="GLenum"/>
+ <param name="dst" type="GLenum"/>
+ </function>
+
+ <function name="BlendFuncSeparateiARB" offset="assign">
+ <param name="buf" type="GLuint"/>
+ <param name="srcRGB" type="GLenum"/>
+ <param name="dstRGB" type="GLenum"/>
+ <param name="srcA" type="GLenum"/>
+ <param name="dstA" type="GLenum"/>
+ </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/ARB_draw_instanced.xml b/mesalib/src/mapi/glapi/gen/ARB_draw_instanced.xml
index 016e64799..57bb776ac 100644
--- a/mesalib/src/mapi/glapi/gen/ARB_draw_instanced.xml
+++ b/mesalib/src/mapi/glapi/gen/ARB_draw_instanced.xml
@@ -1,49 +1,49 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_ARB_draw_instanced" number="44">
-
- <function name="DrawArraysInstancedARB" offset="assign">
- <param name="mode" type="GLenum"/>
- <param name="first" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="primcount" type="GLsizei"/>
- </function>
-
- <function name="DrawElementsInstancedARB" offset="assign">
- <param name="mode" type="GLenum"/>
- <param name="count" type="GLsizei"/>
- <param name="type" type="GLenum"/>
- <param name="indices" type="const GLvoid *"/>
- <param name="primcount" type="GLsizei"/>
- </function>
-
-</category>
-
-
-<category name="GL_EXT_draw_instanced" number="327">
-
- <function name="DrawArraysInstancedEXT" alias="DrawArraysInstancedARB">
- <param name="mode" type="GLenum"/>
- <param name="first" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="primcount" type="GLsizei"/>
- </function>
-
- <function name="DrawElementsInstancedEXT" alias="DrawElementsInstancedARB">
- <param name="mode" type="GLenum"/>
- <param name="count" type="GLsizei"/>
- <param name="type" type="GLenum"/>
- <param name="indices" type="const GLvoid *"/>
- <param name="primcount" type="GLsizei"/>
- </function>
-
-</category>
-
-
-</OpenGLAPI>
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_ARB_draw_instanced" number="44">
+
+ <function name="DrawArraysInstancedARB" offset="assign">
+ <param name="mode" type="GLenum"/>
+ <param name="first" type="GLint"/>
+ <param name="count" type="GLsizei"/>
+ <param name="primcount" type="GLsizei"/>
+ </function>
+
+ <function name="DrawElementsInstancedARB" offset="assign">
+ <param name="mode" type="GLenum"/>
+ <param name="count" type="GLsizei"/>
+ <param name="type" type="GLenum"/>
+ <param name="indices" type="const GLvoid *"/>
+ <param name="primcount" type="GLsizei"/>
+ </function>
+
+</category>
+
+
+<category name="GL_EXT_draw_instanced" number="327">
+
+ <function name="DrawArraysInstancedEXT" alias="DrawArraysInstancedARB">
+ <param name="mode" type="GLenum"/>
+ <param name="first" type="GLint"/>
+ <param name="count" type="GLsizei"/>
+ <param name="primcount" type="GLsizei"/>
+ </function>
+
+ <function name="DrawElementsInstancedEXT" alias="DrawElementsInstancedARB">
+ <param name="mode" type="GLenum"/>
+ <param name="count" type="GLsizei"/>
+ <param name="type" type="GLenum"/>
+ <param name="indices" type="const GLvoid *"/>
+ <param name="primcount" type="GLsizei"/>
+ </function>
+
+</category>
+
+
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/ARB_instanced_arrays.xml b/mesalib/src/mapi/glapi/gen/ARB_instanced_arrays.xml
index 86d78df0a..822f54374 100644
--- a/mesalib/src/mapi/glapi/gen/ARB_instanced_arrays.xml
+++ b/mesalib/src/mapi/glapi/gen/ARB_instanced_arrays.xml
@@ -1,21 +1,21 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_ARB_instanced_arrays" number="49">
-
- <enum name="VERTEX_ATTRIB_ARRAY_DIVISOR_ARB" value="0x88FE"/>
-
- <function name="VertexAttribDivisorARB" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="divisor" type="GLuint"/>
- </function>
-
-</category>
-
-
-</OpenGLAPI>
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_ARB_instanced_arrays" number="49">
+
+ <enum name="VERTEX_ATTRIB_ARRAY_DIVISOR_ARB" value="0x88FE"/>
+
+ <function name="VertexAttribDivisorARB" offset="assign">
+ <param name="index" type="GLuint"/>
+ <param name="divisor" type="GLuint"/>
+ </function>
+
+</category>
+
+
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/ARB_texture_buffer_object.xml b/mesalib/src/mapi/glapi/gen/ARB_texture_buffer_object.xml
index 82f0ec1dc..57680f553 100644
--- a/mesalib/src/mapi/glapi/gen/ARB_texture_buffer_object.xml
+++ b/mesalib/src/mapi/glapi/gen/ARB_texture_buffer_object.xml
@@ -1,22 +1,22 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-
-<category name="GL_ARB_texture_buffer_object" number="51">
-
- <enum name="TEXTURE_BUFFER_ARB" value="0x8C2A"/>
- <enum name="MAX_TEXTURE_BUFFER_SIZE_ARB" value="0x8C2B"/>
- <enum name="TEXTURE_BINDING_BUFFER_ARB" value="0x8C2C"/>
- <enum name="TEXTURE_BUFFER_DATA_STORE_BINDING_ARB" value="0x8C2D"/>
- <enum name="TEXTURE_BUFFER_FORMAT_ARB" value="0x8C2E"/>
-
- <function name="TexBufferARB" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="internalFormat" type="GLenum"/>
- <param name="buffer" type="GLuint"/>
- </function>
-
-</category>
-
-</OpenGLAPI>
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_ARB_texture_buffer_object" number="51">
+
+ <enum name="TEXTURE_BUFFER_ARB" value="0x8C2A"/>
+ <enum name="MAX_TEXTURE_BUFFER_SIZE_ARB" value="0x8C2B"/>
+ <enum name="TEXTURE_BINDING_BUFFER_ARB" value="0x8C2C"/>
+ <enum name="TEXTURE_BUFFER_DATA_STORE_BINDING_ARB" value="0x8C2D"/>
+ <enum name="TEXTURE_BUFFER_FORMAT_ARB" value="0x8C2E"/>
+
+ <function name="TexBufferARB" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="internalFormat" type="GLenum"/>
+ <param name="buffer" type="GLuint"/>
+ </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/EXT_separate_shader_objects.xml b/mesalib/src/mapi/glapi/gen/EXT_separate_shader_objects.xml
index f338aa3b6..6ec56157c 100644
--- a/mesalib/src/mapi/glapi/gen/EXT_separate_shader_objects.xml
+++ b/mesalib/src/mapi/glapi/gen/EXT_separate_shader_objects.xml
@@ -1,26 +1,26 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-<OpenGLAPI>
-<category name="GL_EXT_separate_shader_objects" number="377">
- <!-- Alias of CURRENT_PROGRAM -->
- <enum name="ACTIVE_PROGRAM_EXT" value="0x8B8D"/>
-
- <function name="UseShaderProgramEXT" offset="assign">
- <param name="type" type="GLenum"/>
- <param name="program" type="GLuint"/>
- </function>
-
- <function name="ActiveProgramEXT" offset="assign">
- <param name="program" type="GLuint"/>
- </function>
-
- <function name="CreateShaderProgramEXT" offset="assign">
- <param name="type" type="GLenum"/>
- <param name="string" type="const GLchar *"/>
- <return type="GLuint"/>
- </function>
-</category>
-</OpenGLAPI>
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+<OpenGLAPI>
+<category name="GL_EXT_separate_shader_objects" number="377">
+ <!-- Alias of CURRENT_PROGRAM -->
+ <enum name="ACTIVE_PROGRAM_EXT" value="0x8B8D"/>
+
+ <function name="UseShaderProgramEXT" offset="assign">
+ <param name="type" type="GLenum"/>
+ <param name="program" type="GLuint"/>
+ </function>
+
+ <function name="ActiveProgramEXT" offset="assign">
+ <param name="program" type="GLuint"/>
+ </function>
+
+ <function name="CreateShaderProgramEXT" offset="assign">
+ <param name="type" type="GLenum"/>
+ <param name="string" type="const GLchar *"/>
+ <return type="GLuint"/>
+ </function>
+</category>
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/EXT_texture_integer.xml b/mesalib/src/mapi/glapi/gen/EXT_texture_integer.xml
index c33c12d1d..7e5a8cbeb 100644
--- a/mesalib/src/mapi/glapi/gen/EXT_texture_integer.xml
+++ b/mesalib/src/mapi/glapi/gen/EXT_texture_integer.xml
@@ -1,98 +1,98 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-
-<category name="GL_EXT_texture_integer" number="343">
-
- <enum name="RGBA_INTEGER_MODE_EXT" value="0x8D9E">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="RGBA32UI_EXT" value="0x8D70"/>
- <enum name="RGB32UI_EXT" value="0x8D71"/>
- <enum name="ALPHA32UI_EXT" value="0x8D72"/>
- <enum name="INTENSITY32UI_EXT" value="0x8D73"/>
- <enum name="LUMINANCE32UI_EXT" value="0x8D74"/>
- <enum name="LUMINANCE_ALPHA32UI_EXT" value="0x8D75"/>
- <enum name="RGBA16UI_EXT" value="0x8D76"/>
- <enum name="RGB16UI_EXT" value="0x8D77"/>
- <enum name="ALPHA16UI_EXT" value="0x8D78"/>
- <enum name="INTENSITY16UI_EXT" value="0x8D79"/>
- <enum name="LUMINANCE16UI_EXT" value="0x8D7A"/>
- <enum name="LUMINANCE_ALPHA16UI_EXT" value="0x8D7B"/>
- <enum name="RGBA8UI_EXT" value="0x8D7C"/>
- <enum name="RGB8UI_EXT" value="0x8D7D"/>
- <enum name="ALPHA8UI_EXT" value="0x8D7E"/>
- <enum name="INTENSITY8UI_EXT" value="0x8D7F"/>
- <enum name="LUMINANCE8UI_EXT" value="0x8D80"/>
- <enum name="LUMINANCE_ALPHA8UI_EXT" value="0x8D81"/>
- <enum name="RGBA32I_EXT" value="0x8D82"/>
- <enum name="RGB32I_EXT" value="0x8D83"/>
- <enum name="ALPHA32I_EXT" value="0x8D84"/>
- <enum name="INTENSITY32I_EXT" value="0x8D85"/>
- <enum name="LUMINANCE32I_EXT" value="0x8D86"/>
- <enum name="LUMINANCE_ALPHA32I_EXT" value="0x8D87"/>
- <enum name="RGBA16I_EXT" value="0x8D88"/>
- <enum name="RGB16I_EXT" value="0x8D89"/>
- <enum name="ALPHA16I_EXT" value="0x8D8A"/>
- <enum name="INTENSITY16I_EXT" value="0x8D8B"/>
- <enum name="LUMINANCE16I_EXT" value="0x8D8C"/>
- <enum name="LUMINANCE_ALPHA16I_EXT" value="0x8D8D"/>
- <enum name="RGBA8I_EXT" value="0x8D8E"/>
- <enum name="RGB8I_EXT" value="0x8D8F"/>
- <enum name="ALPHA8I_EXT" value="0x8D90"/>
- <enum name="INTENSITY8I_EXT" value="0x8D91"/>
- <enum name="LUMINANCE8I_EXT" value="0x8D92"/>
- <enum name="LUMINANCE_ALPHA8I_EXT" value="0x8D93"/>
- <enum name="RED_INTEGER_EXT" value="0x8D94"/>
- <enum name="GREEN_INTEGER_EXT" value="0x8D95"/>
- <enum name="BLUE_INTEGER_EXT" value="0x8D96"/>
- <enum name="ALPHA_INTEGER_EXT" value="0x8D97"/>
- <enum name="RGB_INTEGER_EXT" value="0x8D98"/>
- <enum name="RGBA_INTEGER_EXT" value="0x8D99"/>
- <enum name="BGR_INTEGER_EXT" value="0x8D9A"/>
- <enum name="BGRA_INTEGER_EXT" value="0x8D9B"/>
- <enum name="LUMINANCE_INTEGER_EXT" value="0x8D9C"/>
- <enum name="LUMINANCE_ALPHA_INTEGER_EXT" value="0x8D9D"/>
-
- <function name="ClearColorIiEXT" offset="assign">
- <param name="r" type="GLint"/>
- <param name="g" type="GLint"/>
- <param name="b" type="GLint"/>
- <param name="a" type="GLint"/>
- </function>
-
- <function name="ClearColorIuiEXT" offset="assign">
- <param name="r" type="GLuint"/>
- <param name="g" type="GLuint"/>
- <param name="b" type="GLuint"/>
- <param name="a" type="GLuint"/>
- </function>
-
- <function name="TexParameterIivEXT" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *"/>
- </function>
-
- <function name="TexParameterIuivEXT" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLuint *"/>
- </function>
-
- <function name="GetTexParameterIivEXT" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *"/>
- </function>
-
- <function name="GetTexParameterIuivEXT" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLuint *"/>
- </function>
-
-</category>
-
-</OpenGLAPI>
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_EXT_texture_integer" number="343">
+
+ <enum name="RGBA_INTEGER_MODE_EXT" value="0x8D9E">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="RGBA32UI_EXT" value="0x8D70"/>
+ <enum name="RGB32UI_EXT" value="0x8D71"/>
+ <enum name="ALPHA32UI_EXT" value="0x8D72"/>
+ <enum name="INTENSITY32UI_EXT" value="0x8D73"/>
+ <enum name="LUMINANCE32UI_EXT" value="0x8D74"/>
+ <enum name="LUMINANCE_ALPHA32UI_EXT" value="0x8D75"/>
+ <enum name="RGBA16UI_EXT" value="0x8D76"/>
+ <enum name="RGB16UI_EXT" value="0x8D77"/>
+ <enum name="ALPHA16UI_EXT" value="0x8D78"/>
+ <enum name="INTENSITY16UI_EXT" value="0x8D79"/>
+ <enum name="LUMINANCE16UI_EXT" value="0x8D7A"/>
+ <enum name="LUMINANCE_ALPHA16UI_EXT" value="0x8D7B"/>
+ <enum name="RGBA8UI_EXT" value="0x8D7C"/>
+ <enum name="RGB8UI_EXT" value="0x8D7D"/>
+ <enum name="ALPHA8UI_EXT" value="0x8D7E"/>
+ <enum name="INTENSITY8UI_EXT" value="0x8D7F"/>
+ <enum name="LUMINANCE8UI_EXT" value="0x8D80"/>
+ <enum name="LUMINANCE_ALPHA8UI_EXT" value="0x8D81"/>
+ <enum name="RGBA32I_EXT" value="0x8D82"/>
+ <enum name="RGB32I_EXT" value="0x8D83"/>
+ <enum name="ALPHA32I_EXT" value="0x8D84"/>
+ <enum name="INTENSITY32I_EXT" value="0x8D85"/>
+ <enum name="LUMINANCE32I_EXT" value="0x8D86"/>
+ <enum name="LUMINANCE_ALPHA32I_EXT" value="0x8D87"/>
+ <enum name="RGBA16I_EXT" value="0x8D88"/>
+ <enum name="RGB16I_EXT" value="0x8D89"/>
+ <enum name="ALPHA16I_EXT" value="0x8D8A"/>
+ <enum name="INTENSITY16I_EXT" value="0x8D8B"/>
+ <enum name="LUMINANCE16I_EXT" value="0x8D8C"/>
+ <enum name="LUMINANCE_ALPHA16I_EXT" value="0x8D8D"/>
+ <enum name="RGBA8I_EXT" value="0x8D8E"/>
+ <enum name="RGB8I_EXT" value="0x8D8F"/>
+ <enum name="ALPHA8I_EXT" value="0x8D90"/>
+ <enum name="INTENSITY8I_EXT" value="0x8D91"/>
+ <enum name="LUMINANCE8I_EXT" value="0x8D92"/>
+ <enum name="LUMINANCE_ALPHA8I_EXT" value="0x8D93"/>
+ <enum name="RED_INTEGER_EXT" value="0x8D94"/>
+ <enum name="GREEN_INTEGER_EXT" value="0x8D95"/>
+ <enum name="BLUE_INTEGER_EXT" value="0x8D96"/>
+ <enum name="ALPHA_INTEGER_EXT" value="0x8D97"/>
+ <enum name="RGB_INTEGER_EXT" value="0x8D98"/>
+ <enum name="RGBA_INTEGER_EXT" value="0x8D99"/>
+ <enum name="BGR_INTEGER_EXT" value="0x8D9A"/>
+ <enum name="BGRA_INTEGER_EXT" value="0x8D9B"/>
+ <enum name="LUMINANCE_INTEGER_EXT" value="0x8D9C"/>
+ <enum name="LUMINANCE_ALPHA_INTEGER_EXT" value="0x8D9D"/>
+
+ <function name="ClearColorIiEXT" offset="assign">
+ <param name="r" type="GLint"/>
+ <param name="g" type="GLint"/>
+ <param name="b" type="GLint"/>
+ <param name="a" type="GLint"/>
+ </function>
+
+ <function name="ClearColorIuiEXT" offset="assign">
+ <param name="r" type="GLuint"/>
+ <param name="g" type="GLuint"/>
+ <param name="b" type="GLuint"/>
+ <param name="a" type="GLuint"/>
+ </function>
+
+ <function name="TexParameterIivEXT" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="pname" type="GLenum"/>
+ <param name="params" type="const GLint *"/>
+ </function>
+
+ <function name="TexParameterIuivEXT" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="pname" type="GLenum"/>
+ <param name="params" type="const GLuint *"/>
+ </function>
+
+ <function name="GetTexParameterIivEXT" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="pname" type="GLenum"/>
+ <param name="params" type="GLint *"/>
+ </function>
+
+ <function name="GetTexParameterIuivEXT" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="pname" type="GLenum"/>
+ <param name="params" type="GLuint *"/>
+ </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/EXT_transform_feedback.xml b/mesalib/src/mapi/glapi/gen/EXT_transform_feedback.xml
index bf9887a71..051f1e0cc 100644
--- a/mesalib/src/mapi/glapi/gen/EXT_transform_feedback.xml
+++ b/mesalib/src/mapi/glapi/gen/EXT_transform_feedback.xml
@@ -1,118 +1,118 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_EXT_transform_feedback" number="352">
-
- <enum name="TRANSFORM_FEEDBACK_BUFFER_EXT" value="0x8C8E"/>
- <enum name="TRANSFORM_FEEDBACK_BUFFER_START_EXT" value="0x8C84"/>
- <enum name="TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT" value="0x8C85"/>
- <enum name="TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT" value="0x8C8F"/>
- <enum name="INTERLEAVED_ATTRIBS_EXT" value="0x8C8C"/>
- <enum name="SEPARATE_ATTRIBS_EXT" value="0x8C8D"/>
- <enum name="PRIMITIVES_GENERATED_EXT" value="0x8C87"/>
- <enum name="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT" value="0x8C88"/>
- <enum name="RASTERIZER_DISCARD_EXT" value="0x8C89"/>
- <enum name="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT" value="0x8C8A"/>
- <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT" value="0x8C8B"/>
- <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT" value="0x8C80"/>
- <enum name="TRANSFORM_FEEDBACK_VARYINGS_EXT" value="0x8C83"/>
- <enum name="TRANSFORM_FEEDBACK_BUFFER_MODE_EXT" value="0x8C7F"/>
- <enum name="TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT" value="0x8C76"/>
-
- <function name="BindBufferRangeEXT" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="index" type="GLuint"/>
- <param name="buffer" type="GLuint"/>
- <param name="offset" type="GLintptr"/>
- <param name="size" type="GLsizeiptr"/>
- </function>
-
- <function name="BindBufferOffsetEXT" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="index" type="GLuint"/>
- <param name="buffer" type="GLuint"/>
- <param name="offset" type="GLintptr"/>
- </function>
-
- <function name="BindBufferBaseEXT" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="index" type="GLuint"/>
- <param name="buffer" type="GLuint"/>
- </function>
-
- <function name="BeginTransformFeedbackEXT" offset="assign">
- <param name="mode" type="GLenum"/>
- </function>
-
- <function name="EndTransformFeedbackEXT" offset="assign">
- </function>
-
- <function name="TransformFeedbackVaryingsEXT" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="count" type="GLsizei"/>
- <param name="varyings" type="const char **"/>
- <param name="bufferMode" type="GLenum"/>
- </function>
-
- <function name="GetTransformFeedbackVaryingEXT" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="index" type="GLuint"/>
- <param name="bufSize" type="GLsizei"/>
- <param name="length" type="GLsizei *"/>
- <param name="size" type="GLsizei *"/>
- <param name="type" type="GLenum *"/>
- <param name="name" type="GLchar *"/>
- </function>
-
- <!-- Note: the glGetIntegerIndexedvEXT() and glGetBooleanIndexedvEXT
- functions are defined in the EXT_draw_buffers2.xml file -->
-
-</category>
-
-
-<category name="GL_ARB_transform_feedback2" number="93">
-
- <enum name="TRANSFORM_FEEDBACK" value="0x8E22"/>
- <enum name="TRANSFORM_FEEDBACK_BUFFER_PAUSED" value="0x8E23"/>
- <enum name="TRANSFORM_FEEDBACK_BUFFER_ACTIVE" value="0x8E24"/>
- <enum name="TRANSFORM_FEEDBACK_BINDING" value="0x8E25"/>
-
- <function name="BindTransformFeedback" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="id" type="GLuint"/>
- </function>
-
- <function name="DeleteTransformFeedbacks" offset="assign">
- <param name="n" type="GLsizei"/>
- <param name="ids" type="const GLuint *"/>
- </function>
-
- <function name="GenTransformFeedbacks" offset="assign">
- <param name="n" type="GLsizei"/>
- <param name="ids" type="GLuint *"/>
- </function>
-
- <function name="IsTransformFeedback" offset="assign">
- <param name="id" type="GLuint"/>
- <return type="GLboolean"/>
- </function>
-
- <function name="PauseTransformFeedback" offset="assign">
- </function>
-
- <function name="ResumeTransformFeedback" offset="assign">
- </function>
-
- <function name="DrawTransformFeedback" offset="assign">
- <param name="mode" type="GLenum"/>
- <param name="id" type="GLuint"/>
- </function>
-
-</category>
-
-</OpenGLAPI>
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_EXT_transform_feedback" number="352">
+
+ <enum name="TRANSFORM_FEEDBACK_BUFFER_EXT" value="0x8C8E"/>
+ <enum name="TRANSFORM_FEEDBACK_BUFFER_START_EXT" value="0x8C84"/>
+ <enum name="TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT" value="0x8C85"/>
+ <enum name="TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT" value="0x8C8F"/>
+ <enum name="INTERLEAVED_ATTRIBS_EXT" value="0x8C8C"/>
+ <enum name="SEPARATE_ATTRIBS_EXT" value="0x8C8D"/>
+ <enum name="PRIMITIVES_GENERATED_EXT" value="0x8C87"/>
+ <enum name="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT" value="0x8C88"/>
+ <enum name="RASTERIZER_DISCARD_EXT" value="0x8C89"/>
+ <enum name="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT" value="0x8C8A"/>
+ <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT" value="0x8C8B"/>
+ <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT" value="0x8C80"/>
+ <enum name="TRANSFORM_FEEDBACK_VARYINGS_EXT" value="0x8C83"/>
+ <enum name="TRANSFORM_FEEDBACK_BUFFER_MODE_EXT" value="0x8C7F"/>
+ <enum name="TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT" value="0x8C76"/>
+
+ <function name="BindBufferRangeEXT" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="index" type="GLuint"/>
+ <param name="buffer" type="GLuint"/>
+ <param name="offset" type="GLintptr"/>
+ <param name="size" type="GLsizeiptr"/>
+ </function>
+
+ <function name="BindBufferOffsetEXT" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="index" type="GLuint"/>
+ <param name="buffer" type="GLuint"/>
+ <param name="offset" type="GLintptr"/>
+ </function>
+
+ <function name="BindBufferBaseEXT" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="index" type="GLuint"/>
+ <param name="buffer" type="GLuint"/>
+ </function>
+
+ <function name="BeginTransformFeedbackEXT" offset="assign">
+ <param name="mode" type="GLenum"/>
+ </function>
+
+ <function name="EndTransformFeedbackEXT" offset="assign">
+ </function>
+
+ <function name="TransformFeedbackVaryingsEXT" offset="assign">
+ <param name="program" type="GLuint"/>
+ <param name="count" type="GLsizei"/>
+ <param name="varyings" type="const char **"/>
+ <param name="bufferMode" type="GLenum"/>
+ </function>
+
+ <function name="GetTransformFeedbackVaryingEXT" offset="assign">
+ <param name="program" type="GLuint"/>
+ <param name="index" type="GLuint"/>
+ <param name="bufSize" type="GLsizei"/>
+ <param name="length" type="GLsizei *"/>
+ <param name="size" type="GLsizei *"/>
+ <param name="type" type="GLenum *"/>
+ <param name="name" type="GLchar *"/>
+ </function>
+
+ <!-- Note: the glGetIntegerIndexedvEXT() and glGetBooleanIndexedvEXT
+ functions are defined in the EXT_draw_buffers2.xml file -->
+
+</category>
+
+
+<category name="GL_ARB_transform_feedback2" number="93">
+
+ <enum name="TRANSFORM_FEEDBACK" value="0x8E22"/>
+ <enum name="TRANSFORM_FEEDBACK_BUFFER_PAUSED" value="0x8E23"/>
+ <enum name="TRANSFORM_FEEDBACK_BUFFER_ACTIVE" value="0x8E24"/>
+ <enum name="TRANSFORM_FEEDBACK_BINDING" value="0x8E25"/>
+
+ <function name="BindTransformFeedback" offset="assign">
+ <param name="target" type="GLenum"/>
+ <param name="id" type="GLuint"/>
+ </function>
+
+ <function name="DeleteTransformFeedbacks" offset="assign">
+ <param name="n" type="GLsizei"/>
+ <param name="ids" type="const GLuint *"/>
+ </function>
+
+ <function name="GenTransformFeedbacks" offset="assign">
+ <param name="n" type="GLsizei"/>
+ <param name="ids" type="GLuint *"/>
+ </function>
+
+ <function name="IsTransformFeedback" offset="assign">
+ <param name="id" type="GLuint"/>
+ <return type="GLboolean"/>
+ </function>
+
+ <function name="PauseTransformFeedback" offset="assign">
+ </function>
+
+ <function name="ResumeTransformFeedback" offset="assign">
+ </function>
+
+ <function name="DrawTransformFeedback" offset="assign">
+ <param name="mode" type="GLenum"/>
+ <param name="id" type="GLuint"/>
+ </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/NV_primitive_restart.xml b/mesalib/src/mapi/glapi/gen/NV_primitive_restart.xml
index 0b5588fd4..abe7dda00 100644
--- a/mesalib/src/mapi/glapi/gen/NV_primitive_restart.xml
+++ b/mesalib/src/mapi/glapi/gen/NV_primitive_restart.xml
@@ -1,23 +1,23 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_NV_primitive_restart" number="285">
-
- <enum name="PRIMITIVE_RESTART_NV" value="0x8558"/>
- <enum name="PRIMITIVE_RESTART_INDEX_NV" value="0x8559"/>
-
- <function name="PrimitiveRestartNV" offset="assign">
- </function>
-
- <function name="PrimitiveRestartIndexNV" offset="assign">
- <param name="index" type="GLuint"/>
- </function>
-
-</category>
-
-</OpenGLAPI>
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_NV_primitive_restart" number="285">
+
+ <enum name="PRIMITIVE_RESTART_NV" value="0x8558"/>
+ <enum name="PRIMITIVE_RESTART_INDEX_NV" value="0x8559"/>
+
+ <function name="PrimitiveRestartNV" offset="assign">
+ </function>
+
+ <function name="PrimitiveRestartIndexNV" offset="assign">
+ <param name="index" type="GLuint"/>
+ </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/NV_texture_barrier.xml b/mesalib/src/mapi/glapi/gen/NV_texture_barrier.xml
index dc707d0ab..52b1a3c08 100644
--- a/mesalib/src/mapi/glapi/gen/NV_texture_barrier.xml
+++ b/mesalib/src/mapi/glapi/gen/NV_texture_barrier.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_NV_texture_barrier" number="381">
- <function name="TextureBarrierNV" offset="assign" />
-</category>
-
-</OpenGLAPI>
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_NV_texture_barrier" number="381">
+ <function name="TextureBarrierNV" offset="assign" />
+</category>
+
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/glX_API.xml b/mesalib/src/mapi/glapi/gen/glX_API.xml
index ac2f4ace1..9e02aa498 100644
--- a/mesalib/src/mapi/glapi/gen/glX_API.xml
+++ b/mesalib/src/mapi/glapi/gen/glX_API.xml
@@ -1,220 +1,220 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-
-<!-- Right now this file is just used to generate the GLX protocol
- decode tables on the server. The only information that is needed
- for that purpose is the name of the function (or pseudo-function
- in the case of Render of VendorPrivate) and its opcode. Once
- this file is used for other purposes, additional information will
- need to be added.
- -->
-
-<category name="1.0" window_system="glX">
- <function name="Render">
- <glx sop="1"/>
- </function>
-
- <function name="RenderLarge">
- <glx sop="2"/>
- </function>
-
- <function name="CreateContext">
- <glx sop="3"/>
- </function>
-
- <function name="DestroyContext">
- <glx sop="4"/>
- </function>
-
- <function name="MakeCurrent">
- <glx sop="5"/>
- </function>
-
- <function name="IsDirect">
- <glx sop="6"/>
- </function>
-
- <function name="QueryVersion">
- <glx sop="7"/>
- </function>
-
- <function name="WaitGL">
- <glx sop="8"/>
- </function>
-
- <function name="WaitX">
- <glx sop="9"/>
- </function>
-
- <function name="CopyContext">
- <glx sop="10"/>
- </function>
-
- <function name="SwapBuffers">
- <glx sop="11"/>
- </function>
-
- <function name="UseXFont">
- <glx sop="12"/>
- </function>
-
- <function name="CreateGLXPixmap">
- <glx sop="13"/>
- </function>
-
- <function name="GetVisualConfigs">
- <glx sop="14"/>
- </function>
-
- <function name="DestroyGLXPixmap">
- <glx sop="15"/>
- </function>
-
- <function name="VendorPrivate">
- <glx sop="16"/>
- </function>
-
- <function name="VendorPrivateWithReply">
- <glx sop="17"/>
- </function>
-
- <function name="QueryExtensionsString">
- <glx sop="18"/>
- </function>
-</category>
-
-<category name="1.1" window_system="glX">
- <function name="QueryServerString">
- <glx sop="19"/>
- </function>
-
- <function name="ClientInfo">
- <glx sop="20"/>
- </function>
-</category>
-
-<category name="1.3" window_system="glX">
- <function name="GetFBConfigs">
- <glx sop="21"/>
- </function>
-
- <function name="CreatePixmap">
- <glx sop="22"/>
- </function>
-
- <function name="DestroyPixmap">
- <glx sop="23"/>
- </function>
-
- <function name="CreateNewContext">
- <glx sop="24"/>
- </function>
-
- <function name="QueryContext">
- <glx sop="25"/>
- </function>
-
- <function name="MakeContextCurrent">
- <glx sop="26"/>
- </function>
-
- <function name="CreatePbuffer">
- <glx sop="27"/>
- </function>
-
- <function name="DestroyPbuffer">
- <glx sop="28"/>
- </function>
-
- <function name="GetDrawableAttributes">
- <glx sop="29"/>
- </function>
-
- <function name="ChangeDrawableAttributes">
- <glx sop="30"/>
- </function>
-
- <function name="CreateWindow">
- <glx sop="31"/>
- </function>
-
- <function name="DestroyWindow">
- <glx sop="32"/>
- </function>
-</category>
-
-<category name="GLX_SGI_swap_control" number="40" window_system="glX">
- <function name="SwapIntervalSGI">
- <return type="int"/>
- <glx vendorpriv="65536"/>
- </function>
-</category>
-
-<category name="GLX_SGI_make_current_read" number="42" window_system="glX">
- <function name="MakeCurrentReadSGI">
-<!-- <param name="dpy" type="Display *"/>
- <param name="draw" type="GLXDrawable"/>
- <param name="read" type="GLXDrawable"/>
- <param name="ctx" type="GLXContext"/> -->
- <return type="Bool"/>
- <glx vendorpriv="65537"/>
- </function>
-</category>
-
-<category name="GLX_EXT_import_context" number="47" window_system="glX">
- <function name="QueryContextInfoEXT">
- <glx vendorpriv="1024"/>
- </function>
-</category>
-
-<category name="GLX_SGIX_fbconfig" number="49" window_system="glX">
- <function name="GetFBConfigsSGIX">
- <glx vendorpriv="65540"/>
- </function>
-
- <function name="CreateContextWithConfigSGIX">
- <glx vendorpriv="65541"/>
- </function>
-
- <function name="CreateGLXPixmapWithConfigSGIX">
- <glx vendorpriv="65542"/>
- </function>
-</category>
-
-<category name="GLX_SGIX_pbuffer" number="50" window_system="glX">
- <function name="CreateGLXPbufferSGIX">
- <glx vendorpriv="65543"/>
- </function>
-
- <function name="DestroyGLXPbufferSGIX">
- <glx vendorpriv="65544"/>
- </function>
-
- <function name="ChangeDrawableAttributesSGIX">
- <glx vendorpriv="65545"/>
- </function>
-
- <function name="GetDrawableAttributesSGIX">
- <glx vendorpriv="65546"/>
- </function>
-</category>
-
-<category name="GLX_MESA_copy_sub_buffer" number="215">
- <function name="CopySubBufferMESA">
- <glx vendorpriv="5154"/>
- </function>
-</category>
-
-<category name="GLX_EXT_texture_from_pixmap">
- <function name="BindTexImageEXT">
- <glx vendorpriv="1330"/>
- </function>
-
- <function name="ReleaseTexImageEXT">
- <glx vendorpriv="1331"/>
- </function>
-</category>
-
-</OpenGLAPI>
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<!-- Right now this file is just used to generate the GLX protocol
+ decode tables on the server. The only information that is needed
+ for that purpose is the name of the function (or pseudo-function
+ in the case of Render of VendorPrivate) and its opcode. Once
+ this file is used for other purposes, additional information will
+ need to be added.
+ -->
+
+<category name="1.0" window_system="glX">
+ <function name="Render">
+ <glx sop="1"/>
+ </function>
+
+ <function name="RenderLarge">
+ <glx sop="2"/>
+ </function>
+
+ <function name="CreateContext">
+ <glx sop="3"/>
+ </function>
+
+ <function name="DestroyContext">
+ <glx sop="4"/>
+ </function>
+
+ <function name="MakeCurrent">
+ <glx sop="5"/>
+ </function>
+
+ <function name="IsDirect">
+ <glx sop="6"/>
+ </function>
+
+ <function name="QueryVersion">
+ <glx sop="7"/>
+ </function>
+
+ <function name="WaitGL">
+ <glx sop="8"/>
+ </function>
+
+ <function name="WaitX">
+ <glx sop="9"/>
+ </function>
+
+ <function name="CopyContext">
+ <glx sop="10"/>
+ </function>
+
+ <function name="SwapBuffers">
+ <glx sop="11"/>
+ </function>
+
+ <function name="UseXFont">
+ <glx sop="12"/>
+ </function>
+
+ <function name="CreateGLXPixmap">
+ <glx sop="13"/>
+ </function>
+
+ <function name="GetVisualConfigs">
+ <glx sop="14"/>
+ </function>
+
+ <function name="DestroyGLXPixmap">
+ <glx sop="15"/>
+ </function>
+
+ <function name="VendorPrivate">
+ <glx sop="16"/>
+ </function>
+
+ <function name="VendorPrivateWithReply">
+ <glx sop="17"/>
+ </function>
+
+ <function name="QueryExtensionsString">
+ <glx sop="18"/>
+ </function>
+</category>
+
+<category name="1.1" window_system="glX">
+ <function name="QueryServerString">
+ <glx sop="19"/>
+ </function>
+
+ <function name="ClientInfo">
+ <glx sop="20"/>
+ </function>
+</category>
+
+<category name="1.3" window_system="glX">
+ <function name="GetFBConfigs">
+ <glx sop="21"/>
+ </function>
+
+ <function name="CreatePixmap">
+ <glx sop="22"/>
+ </function>
+
+ <function name="DestroyPixmap">
+ <glx sop="23"/>
+ </function>
+
+ <function name="CreateNewContext">
+ <glx sop="24"/>
+ </function>
+
+ <function name="QueryContext">
+ <glx sop="25"/>
+ </function>
+
+ <function name="MakeContextCurrent">
+ <glx sop="26"/>
+ </function>
+
+ <function name="CreatePbuffer">
+ <glx sop="27"/>
+ </function>
+
+ <function name="DestroyPbuffer">
+ <glx sop="28"/>
+ </function>
+
+ <function name="GetDrawableAttributes">
+ <glx sop="29"/>
+ </function>
+
+ <function name="ChangeDrawableAttributes">
+ <glx sop="30"/>
+ </function>
+
+ <function name="CreateWindow">
+ <glx sop="31"/>
+ </function>
+
+ <function name="DestroyWindow">
+ <glx sop="32"/>
+ </function>
+</category>
+
+<category name="GLX_SGI_swap_control" number="40" window_system="glX">
+ <function name="SwapIntervalSGI">
+ <return type="int"/>
+ <glx vendorpriv="65536"/>
+ </function>
+</category>
+
+<category name="GLX_SGI_make_current_read" number="42" window_system="glX">
+ <function name="MakeCurrentReadSGI">
+<!-- <param name="dpy" type="Display *"/>
+ <param name="draw" type="GLXDrawable"/>
+ <param name="read" type="GLXDrawable"/>
+ <param name="ctx" type="GLXContext"/> -->
+ <return type="Bool"/>
+ <glx vendorpriv="65537"/>
+ </function>
+</category>
+
+<category name="GLX_EXT_import_context" number="47" window_system="glX">
+ <function name="QueryContextInfoEXT">
+ <glx vendorpriv="1024"/>
+ </function>
+</category>
+
+<category name="GLX_SGIX_fbconfig" number="49" window_system="glX">
+ <function name="GetFBConfigsSGIX">
+ <glx vendorpriv="65540"/>
+ </function>
+
+ <function name="CreateContextWithConfigSGIX">
+ <glx vendorpriv="65541"/>
+ </function>
+
+ <function name="CreateGLXPixmapWithConfigSGIX">
+ <glx vendorpriv="65542"/>
+ </function>
+</category>
+
+<category name="GLX_SGIX_pbuffer" number="50" window_system="glX">
+ <function name="CreateGLXPbufferSGIX">
+ <glx vendorpriv="65543"/>
+ </function>
+
+ <function name="DestroyGLXPbufferSGIX">
+ <glx vendorpriv="65544"/>
+ </function>
+
+ <function name="ChangeDrawableAttributesSGIX">
+ <glx vendorpriv="65545"/>
+ </function>
+
+ <function name="GetDrawableAttributesSGIX">
+ <glx vendorpriv="65546"/>
+ </function>
+</category>
+
+<category name="GLX_MESA_copy_sub_buffer" number="215">
+ <function name="CopySubBufferMESA">
+ <glx vendorpriv="5154"/>
+ </function>
+</category>
+
+<category name="GLX_EXT_texture_from_pixmap">
+ <function name="BindTexImageEXT">
+ <glx vendorpriv="1330"/>
+ </function>
+
+ <function name="ReleaseTexImageEXT">
+ <glx vendorpriv="1331"/>
+ </function>
+</category>
+
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/gl_SPARC_asm.py b/mesalib/src/mapi/glapi/gen/gl_SPARC_asm.py
index bd904bee2..400e684da 100644
--- a/mesalib/src/mapi/glapi/gen/gl_SPARC_asm.py
+++ b/mesalib/src/mapi/glapi/gen/gl_SPARC_asm.py
@@ -1,273 +1,273 @@
-#!/usr/bin/env python
-
-# (C) Copyright IBM Corporation 2004
-# All Rights Reserved.
-#
-# 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
-# on the rights to use, copy, modify, merge, publish, distribute, sub
-# license, 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 (including the next
-# paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
-# IBM AND/OR ITS SUPPLIERS 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.
-#
-# Authors:
-# Ian Romanick <idr@us.ibm.com>
-
-import license
-import gl_XML, glX_XML
-import sys, getopt
-
-class PrintGenericStubs(gl_XML.gl_print_base):
- def __init__(self):
- gl_XML.gl_print_base.__init__(self)
- self.name = "gl_SPARC_asm.py (from Mesa)"
- self.license = license.bsd_license_template % ( \
-"""Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
-(C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
-
-
- def printRealHeader(self):
- print '#ifdef __arch64__'
- print '#define GL_OFF(N)\t((N) * 8)'
- print '#define GL_LL\t\tldx'
- print '#define GL_TIE_LD(SYM)\t%tie_ldx(SYM)'
- print '#define GL_STACK_SIZE\t128'
- print '#else'
- print '#define GL_OFF(N)\t((N) * 4)'
- print '#define GL_LL\t\tld'
- print '#define GL_TIE_LD(SYM)\t%tie_ld(SYM)'
- print '#define GL_STACK_SIZE\t64'
- print '#endif'
- print ''
- print '#define GLOBL_FN(x) .globl x ; .type x, @function'
- print '#define HIDDEN(x) .hidden x'
- print ''
- print '\t.register %g2, #scratch'
- print '\t.register %g3, #scratch'
- print ''
- print '\t.text'
- print ''
- print '\tGLOBL_FN(__glapi_sparc_icache_flush)'
- print '\tHIDDEN(__glapi_sparc_icache_flush)'
- print '\t.type\t__glapi_sparc_icache_flush, @function'
- print '__glapi_sparc_icache_flush: /* %o0 = insn_addr */'
- print '\tflush\t%o0'
- print '\tretl'
- print '\t nop'
- print ''
- print '\t.align\t32'
- print ''
- print '\t.type\t__glapi_sparc_get_pc, @function'
- print '__glapi_sparc_get_pc:'
- print '\tretl'
- print '\t add\t%o7, %g2, %g2'
- print '\t.size\t__glapi_sparc_get_pc, .-__glapi_sparc_get_pc'
- print ''
- print '#ifdef GLX_USE_TLS'
- print ''
- print '\tGLOBL_FN(__glapi_sparc_get_dispatch)'
- print '\tHIDDEN(__glapi_sparc_get_dispatch)'
- print '__glapi_sparc_get_dispatch:'
- print '\tmov\t%o7, %g1'
- print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
- print '\tcall\t__glapi_sparc_get_pc'
- print '\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
- print '\tmov\t%g1, %o7'
- print '\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1'
- print '\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1'
- print '\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)'
- print '\tretl'
- print '\t mov\t%g2, %o0'
- print ''
- print '\t.data'
- print '\t.align\t32'
- print ''
- print '\t/* --> sethi %hi(_glapi_tls_Dispatch), %g1 */'
- print '\t/* --> or %g1, %lo(_glapi_tls_Dispatch), %g1 */'
- print '\tGLOBL_FN(__glapi_sparc_tls_stub)'
- print '\tHIDDEN(__glapi_sparc_tls_stub)'
- print '__glapi_sparc_tls_stub: /* Call offset in %g3 */'
- print '\tmov\t%o7, %g1'
- print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
- print '\tcall\t__glapi_sparc_get_pc'
- print '\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
- print '\tmov\t%g1, %o7'
- print '\tsrl\t%g3, 10, %g3'
- print '\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1'
- print '\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1'
- print '\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)'
- print '\tGL_LL\t[%g7+%g2], %g1'
- print '\tGL_LL\t[%g1 + %g3], %g1'
- print '\tjmp\t%g1'
- print '\t nop'
- print '\t.size\t__glapi_sparc_tls_stub, .-__glapi_sparc_tls_stub'
- print ''
- print '#define GL_STUB(fn, off)\t\t\t\t\\'
- print '\tGLOBL_FN(fn);\t\t\t\t\t\\'
- print 'fn:\tba\t__glapi_sparc_tls_stub;\t\t\t\\'
- print '\t sethi\tGL_OFF(off), %g3;\t\t\t\\'
- print '\t.size\tfn,.-fn;'
- print ''
- print '#elif defined(PTHREADS)'
- print ''
- print '\t/* 64-bit 0x00 --> sethi %hh(_glapi_Dispatch), %g1 */'
- print '\t/* 64-bit 0x04 --> sethi %lm(_glapi_Dispatch), %g2 */'
- print '\t/* 64-bit 0x08 --> or %g1, %hm(_glapi_Dispatch), %g1 */'
- print '\t/* 64-bit 0x0c --> sllx %g1, 32, %g1 */'
- print '\t/* 64-bit 0x10 --> add %g1, %g2, %g1 */'
- print '\t/* 64-bit 0x14 --> ldx [%g1 + %lo(_glapi_Dispatch)], %g1 */'
- print ''
- print '\t/* 32-bit 0x00 --> sethi %hi(_glapi_Dispatch), %g1 */'
- print '\t/* 32-bit 0x04 --> ld [%g1 + %lo(_glapi_Dispatch)], %g1 */'
- print ''
- print '\t.data'
- print '\t.align\t32'
- print ''
- print '\tGLOBL_FN(__glapi_sparc_pthread_stub)'
- print '\tHIDDEN(__glapi_sparc_pthread_stub)'
- print '__glapi_sparc_pthread_stub: /* Call offset in %g3 */'
- print '\tmov\t%o7, %g1'
- print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
- print '\tcall\t__glapi_sparc_get_pc'
- print '\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
- print '\tmov\t%g1, %o7'
- print '\tsethi\t%hi(_glapi_Dispatch), %g1'
- print '\tor\t%g1, %lo(_glapi_Dispatch), %g1'
- print '\tsrl\t%g3, 10, %g3'
- print '\tGL_LL\t[%g2+%g1], %g2'
- print '\tGL_LL\t[%g2], %g1'
- print '\tcmp\t%g1, 0'
- print '\tbe\t2f'
- print '\t nop'
- print '1:\tGL_LL\t[%g1 + %g3], %g1'
- print '\tjmp\t%g1'
- print '\t nop'
- print '2:\tsave\t%sp, GL_STACK_SIZE, %sp'
- print '\tmov\t%g3, %l0'
- print '\tcall\t_glapi_get_dispatch'
- print '\t nop'
- print '\tmov\t%o0, %g1'
- print '\tmov\t%l0, %g3'
- print '\tba\t1b'
- print '\t restore %g0, %g0, %g0'
- print '\t.size\t__glapi_sparc_pthread_stub, .-__glapi_sparc_pthread_stub'
- print ''
- print '#define GL_STUB(fn, off)\t\t\t\\'
- print '\tGLOBL_FN(fn);\t\t\t\t\\'
- print 'fn:\tba\t__glapi_sparc_pthread_stub;\t\\'
- print '\t sethi\tGL_OFF(off), %g3;\t\t\\'
- print '\t.size\tfn,.-fn;'
- print ''
- print '#else /* Non-threaded version. */'
- print ''
- print '\t.type __glapi_sparc_nothread_stub, @function'
- print '__glapi_sparc_nothread_stub: /* Call offset in %g3 */'
- print '\tmov\t%o7, %g1'
- print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
- print '\tcall\t__glapi_sparc_get_pc'
- print '\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
- print '\tmov\t%g1, %o7'
- print '\tsrl\t%g3, 10, %g3'
- print '\tsethi\t%hi(_glapi_Dispatch), %g1'
- print '\tor\t%g1, %lo(_glapi_Dispatch), %g1'
- print '\tGL_LL\t[%g2+%g1], %g2'
- print '\tGL_LL\t[%g2], %g1'
- print '\tGL_LL\t[%g1 + %g3], %g1'
- print '\tjmp\t%g1'
- print '\t nop'
- print '\t.size\t__glapi_sparc_nothread_stub, .-__glapi_sparc_nothread_stub'
- print ''
- print '#define GL_STUB(fn, off)\t\t\t\\'
- print '\tGLOBL_FN(fn);\t\t\t\t\\'
- print 'fn:\tba\t__glapi_sparc_nothread_stub;\t\\'
- print '\t sethi\tGL_OFF(off), %g3;\t\t\\'
- print '\t.size\tfn,.-fn;'
- print ''
- print '#endif'
- print ''
- print '#define GL_STUB_ALIAS(fn, alias) \\'
- print ' .globl fn; \\'
- print ' .set fn, alias'
- print ''
- print '\t.text'
- print '\t.align\t32'
- print ''
- print '\t.globl\tgl_dispatch_functions_start'
- print '\tHIDDEN(gl_dispatch_functions_start)'
- print 'gl_dispatch_functions_start:'
- print ''
- return
-
- def printRealFooter(self):
- print ''
- print '\t.globl\tgl_dispatch_functions_end'
- print '\tHIDDEN(gl_dispatch_functions_end)'
- print 'gl_dispatch_functions_end:'
- return
-
- def printBody(self, api):
- for f in api.functionIterateByOffset():
- name = f.dispatch_name()
-
- print '\tGL_STUB(gl%s, %d)' % (name, f.offset)
-
- if not f.is_static_entry_point(f.name):
- print '\tHIDDEN(gl%s)' % (name)
-
- for f in api.functionIterateByOffset():
- name = f.dispatch_name()
-
- if f.is_static_entry_point(f.name):
- for n in f.entry_points:
- if n != f.name:
- text = '\tGL_STUB_ALIAS(gl%s, gl%s)' % (n, f.name)
-
- if f.has_different_protocol(n):
- print '#ifndef GLX_INDIRECT_RENDERING'
- print text
- print '#endif'
- else:
- print text
-
- return
-
-
-def show_usage():
- print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
- sys.exit(1)
-
-if __name__ == '__main__':
- file_name = "gl_API.xml"
- mode = "generic"
-
- try:
- (args, trail) = getopt.getopt(sys.argv[1:], "m:f:")
- except Exception,e:
- show_usage()
-
- for (arg,val) in args:
- if arg == '-m':
- mode = val
- elif arg == "-f":
- file_name = val
-
- if mode == "generic":
- printer = PrintGenericStubs()
- else:
- print "ERROR: Invalid mode \"%s\" specified." % mode
- show_usage()
-
- api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
- printer.Print(api)
+#!/usr/bin/env python
+
+# (C) Copyright IBM Corporation 2004
+# All Rights Reserved.
+#
+# 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
+# on the rights to use, copy, modify, merge, publish, distribute, sub
+# license, 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 (including the next
+# paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+# IBM AND/OR ITS SUPPLIERS 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.
+#
+# Authors:
+# Ian Romanick <idr@us.ibm.com>
+
+import license
+import gl_XML, glX_XML
+import sys, getopt
+
+class PrintGenericStubs(gl_XML.gl_print_base):
+ def __init__(self):
+ gl_XML.gl_print_base.__init__(self)
+ self.name = "gl_SPARC_asm.py (from Mesa)"
+ self.license = license.bsd_license_template % ( \
+"""Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+(C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
+
+
+ def printRealHeader(self):
+ print '#ifdef __arch64__'
+ print '#define GL_OFF(N)\t((N) * 8)'
+ print '#define GL_LL\t\tldx'
+ print '#define GL_TIE_LD(SYM)\t%tie_ldx(SYM)'
+ print '#define GL_STACK_SIZE\t128'
+ print '#else'
+ print '#define GL_OFF(N)\t((N) * 4)'
+ print '#define GL_LL\t\tld'
+ print '#define GL_TIE_LD(SYM)\t%tie_ld(SYM)'
+ print '#define GL_STACK_SIZE\t64'
+ print '#endif'
+ print ''
+ print '#define GLOBL_FN(x) .globl x ; .type x, @function'
+ print '#define HIDDEN(x) .hidden x'
+ print ''
+ print '\t.register %g2, #scratch'
+ print '\t.register %g3, #scratch'
+ print ''
+ print '\t.text'
+ print ''
+ print '\tGLOBL_FN(__glapi_sparc_icache_flush)'
+ print '\tHIDDEN(__glapi_sparc_icache_flush)'
+ print '\t.type\t__glapi_sparc_icache_flush, @function'
+ print '__glapi_sparc_icache_flush: /* %o0 = insn_addr */'
+ print '\tflush\t%o0'
+ print '\tretl'
+ print '\t nop'
+ print ''
+ print '\t.align\t32'
+ print ''
+ print '\t.type\t__glapi_sparc_get_pc, @function'
+ print '__glapi_sparc_get_pc:'
+ print '\tretl'
+ print '\t add\t%o7, %g2, %g2'
+ print '\t.size\t__glapi_sparc_get_pc, .-__glapi_sparc_get_pc'
+ print ''
+ print '#ifdef GLX_USE_TLS'
+ print ''
+ print '\tGLOBL_FN(__glapi_sparc_get_dispatch)'
+ print '\tHIDDEN(__glapi_sparc_get_dispatch)'
+ print '__glapi_sparc_get_dispatch:'
+ print '\tmov\t%o7, %g1'
+ print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
+ print '\tcall\t__glapi_sparc_get_pc'
+ print '\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
+ print '\tmov\t%g1, %o7'
+ print '\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1'
+ print '\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1'
+ print '\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)'
+ print '\tretl'
+ print '\t mov\t%g2, %o0'
+ print ''
+ print '\t.data'
+ print '\t.align\t32'
+ print ''
+ print '\t/* --> sethi %hi(_glapi_tls_Dispatch), %g1 */'
+ print '\t/* --> or %g1, %lo(_glapi_tls_Dispatch), %g1 */'
+ print '\tGLOBL_FN(__glapi_sparc_tls_stub)'
+ print '\tHIDDEN(__glapi_sparc_tls_stub)'
+ print '__glapi_sparc_tls_stub: /* Call offset in %g3 */'
+ print '\tmov\t%o7, %g1'
+ print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
+ print '\tcall\t__glapi_sparc_get_pc'
+ print '\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
+ print '\tmov\t%g1, %o7'
+ print '\tsrl\t%g3, 10, %g3'
+ print '\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1'
+ print '\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1'
+ print '\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)'
+ print '\tGL_LL\t[%g7+%g2], %g1'
+ print '\tGL_LL\t[%g1 + %g3], %g1'
+ print '\tjmp\t%g1'
+ print '\t nop'
+ print '\t.size\t__glapi_sparc_tls_stub, .-__glapi_sparc_tls_stub'
+ print ''
+ print '#define GL_STUB(fn, off)\t\t\t\t\\'
+ print '\tGLOBL_FN(fn);\t\t\t\t\t\\'
+ print 'fn:\tba\t__glapi_sparc_tls_stub;\t\t\t\\'
+ print '\t sethi\tGL_OFF(off), %g3;\t\t\t\\'
+ print '\t.size\tfn,.-fn;'
+ print ''
+ print '#elif defined(PTHREADS)'
+ print ''
+ print '\t/* 64-bit 0x00 --> sethi %hh(_glapi_Dispatch), %g1 */'
+ print '\t/* 64-bit 0x04 --> sethi %lm(_glapi_Dispatch), %g2 */'
+ print '\t/* 64-bit 0x08 --> or %g1, %hm(_glapi_Dispatch), %g1 */'
+ print '\t/* 64-bit 0x0c --> sllx %g1, 32, %g1 */'
+ print '\t/* 64-bit 0x10 --> add %g1, %g2, %g1 */'
+ print '\t/* 64-bit 0x14 --> ldx [%g1 + %lo(_glapi_Dispatch)], %g1 */'
+ print ''
+ print '\t/* 32-bit 0x00 --> sethi %hi(_glapi_Dispatch), %g1 */'
+ print '\t/* 32-bit 0x04 --> ld [%g1 + %lo(_glapi_Dispatch)], %g1 */'
+ print ''
+ print '\t.data'
+ print '\t.align\t32'
+ print ''
+ print '\tGLOBL_FN(__glapi_sparc_pthread_stub)'
+ print '\tHIDDEN(__glapi_sparc_pthread_stub)'
+ print '__glapi_sparc_pthread_stub: /* Call offset in %g3 */'
+ print '\tmov\t%o7, %g1'
+ print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
+ print '\tcall\t__glapi_sparc_get_pc'
+ print '\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
+ print '\tmov\t%g1, %o7'
+ print '\tsethi\t%hi(_glapi_Dispatch), %g1'
+ print '\tor\t%g1, %lo(_glapi_Dispatch), %g1'
+ print '\tsrl\t%g3, 10, %g3'
+ print '\tGL_LL\t[%g2+%g1], %g2'
+ print '\tGL_LL\t[%g2], %g1'
+ print '\tcmp\t%g1, 0'
+ print '\tbe\t2f'
+ print '\t nop'
+ print '1:\tGL_LL\t[%g1 + %g3], %g1'
+ print '\tjmp\t%g1'
+ print '\t nop'
+ print '2:\tsave\t%sp, GL_STACK_SIZE, %sp'
+ print '\tmov\t%g3, %l0'
+ print '\tcall\t_glapi_get_dispatch'
+ print '\t nop'
+ print '\tmov\t%o0, %g1'
+ print '\tmov\t%l0, %g3'
+ print '\tba\t1b'
+ print '\t restore %g0, %g0, %g0'
+ print '\t.size\t__glapi_sparc_pthread_stub, .-__glapi_sparc_pthread_stub'
+ print ''
+ print '#define GL_STUB(fn, off)\t\t\t\\'
+ print '\tGLOBL_FN(fn);\t\t\t\t\\'
+ print 'fn:\tba\t__glapi_sparc_pthread_stub;\t\\'
+ print '\t sethi\tGL_OFF(off), %g3;\t\t\\'
+ print '\t.size\tfn,.-fn;'
+ print ''
+ print '#else /* Non-threaded version. */'
+ print ''
+ print '\t.type __glapi_sparc_nothread_stub, @function'
+ print '__glapi_sparc_nothread_stub: /* Call offset in %g3 */'
+ print '\tmov\t%o7, %g1'
+ print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
+ print '\tcall\t__glapi_sparc_get_pc'
+ print '\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
+ print '\tmov\t%g1, %o7'
+ print '\tsrl\t%g3, 10, %g3'
+ print '\tsethi\t%hi(_glapi_Dispatch), %g1'
+ print '\tor\t%g1, %lo(_glapi_Dispatch), %g1'
+ print '\tGL_LL\t[%g2+%g1], %g2'
+ print '\tGL_LL\t[%g2], %g1'
+ print '\tGL_LL\t[%g1 + %g3], %g1'
+ print '\tjmp\t%g1'
+ print '\t nop'
+ print '\t.size\t__glapi_sparc_nothread_stub, .-__glapi_sparc_nothread_stub'
+ print ''
+ print '#define GL_STUB(fn, off)\t\t\t\\'
+ print '\tGLOBL_FN(fn);\t\t\t\t\\'
+ print 'fn:\tba\t__glapi_sparc_nothread_stub;\t\\'
+ print '\t sethi\tGL_OFF(off), %g3;\t\t\\'
+ print '\t.size\tfn,.-fn;'
+ print ''
+ print '#endif'
+ print ''
+ print '#define GL_STUB_ALIAS(fn, alias) \\'
+ print ' .globl fn; \\'
+ print ' .set fn, alias'
+ print ''
+ print '\t.text'
+ print '\t.align\t32'
+ print ''
+ print '\t.globl\tgl_dispatch_functions_start'
+ print '\tHIDDEN(gl_dispatch_functions_start)'
+ print 'gl_dispatch_functions_start:'
+ print ''
+ return
+
+ def printRealFooter(self):
+ print ''
+ print '\t.globl\tgl_dispatch_functions_end'
+ print '\tHIDDEN(gl_dispatch_functions_end)'
+ print 'gl_dispatch_functions_end:'
+ return
+
+ def printBody(self, api):
+ for f in api.functionIterateByOffset():
+ name = f.dispatch_name()
+
+ print '\tGL_STUB(gl%s, %d)' % (name, f.offset)
+
+ if not f.is_static_entry_point(f.name):
+ print '\tHIDDEN(gl%s)' % (name)
+
+ for f in api.functionIterateByOffset():
+ name = f.dispatch_name()
+
+ if f.is_static_entry_point(f.name):
+ for n in f.entry_points:
+ if n != f.name:
+ text = '\tGL_STUB_ALIAS(gl%s, gl%s)' % (n, f.name)
+
+ if f.has_different_protocol(n):
+ print '#ifndef GLX_INDIRECT_RENDERING'
+ print text
+ print '#endif'
+ else:
+ print text
+
+ return
+
+
+def show_usage():
+ print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
+ sys.exit(1)
+
+if __name__ == '__main__':
+ file_name = "gl_API.xml"
+ mode = "generic"
+
+ try:
+ (args, trail) = getopt.getopt(sys.argv[1:], "m:f:")
+ except Exception,e:
+ show_usage()
+
+ for (arg,val) in args:
+ if arg == '-m':
+ mode = val
+ elif arg == "-f":
+ file_name = val
+
+ if mode == "generic":
+ printer = PrintGenericStubs()
+ else:
+ print "ERROR: Invalid mode \"%s\" specified." % mode
+ show_usage()
+
+ api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
+ printer.Print(api)
diff --git a/mesalib/src/mapi/glapi/gen/gl_procs.py b/mesalib/src/mapi/glapi/gen/gl_procs.py
index f1522baec..a9ba48297 100644
--- a/mesalib/src/mapi/glapi/gen/gl_procs.py
+++ b/mesalib/src/mapi/glapi/gen/gl_procs.py
@@ -1,215 +1,215 @@
-#!/usr/bin/env python
-
-# (C) Copyright IBM Corporation 2004, 2005
-# All Rights Reserved.
-#
-# 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
-# on the rights to use, copy, modify, merge, publish, distribute, sub
-# license, 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 (including the next
-# paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
-# IBM AND/OR ITS SUPPLIERS 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.
-#
-# Authors:
-# Ian Romanick <idr@us.ibm.com>
-
-import license
-import gl_XML, glX_XML
-import sys, getopt
-
-class PrintGlProcs(gl_XML.gl_print_base):
- def __init__(self, long_strings, es=False):
- gl_XML.gl_print_base.__init__(self)
-
- self.es = es
- self.long_strings = long_strings
- self.name = "gl_procs.py (from Mesa)"
- self.license = license.bsd_license_template % ( \
-"""Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
-(C) Copyright IBM Corporation 2004, 2006""", "BRIAN PAUL, IBM")
-
-
- def printRealHeader(self):
- print """
-/* This file is only included by glapi.c and is used for
- * the GetProcAddress() function
- */
-
-typedef struct {
- GLint Name_offset;
-#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)
- _glapi_proc Address;
-#endif
- GLuint Offset;
-} glprocs_table_t;
-
-#if !defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
-# define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , o }
-#elif defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
-# define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f1 , o }
-#elif defined(NEED_FUNCTION_POINTER) && defined(GLX_INDIRECT_RENDERING)
-# define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f2 , o }
-#elif !defined(NEED_FUNCTION_POINTER) && defined(GLX_INDIRECT_RENDERING)
-# define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f3 , o }
-#endif
-
-"""
- return
-
- def printRealFooter(self):
- print ''
- print '#undef NAME_FUNC_OFFSET'
- return
-
- def printFunctionString(self, name):
- if self.long_strings:
- print ' "gl%s\\0"' % (name)
- else:
- print " 'g','l',",
- for c in name:
- print "'%s'," % (c),
-
- print "'\\0',"
-
-
- def printBody(self, api):
- print ''
- if self.long_strings:
- print 'static const char gl_string_table[] ='
- else:
- print 'static const char gl_string_table[] = {'
-
- base_offset = 0
- table = []
- for func in api.functionIterateByOffset():
- name = func.dispatch_name()
- self.printFunctionString(func.name)
- table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.offset))
-
- # The length of the function's name, plus 2 for "gl",
- # plus 1 for the NUL.
-
- base_offset += len(func.name) + 3
-
-
- for func in api.functionIterateByOffset():
- for n in func.entry_points:
- if n != func.name:
- name = func.dispatch_name()
- self.printFunctionString( n )
-
- if func.has_different_protocol(n):
- alt_name = "gl" + func.static_glx_name(n)
- table.append((base_offset, "gl" + name, alt_name, alt_name, func.offset))
- else:
- table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.offset))
-
- base_offset += len(n) + 3
-
-
- if self.long_strings:
- print ' ;'
- else:
- print '};'
-
- print ''
- print ''
- print "#ifdef USE_MGL_NAMESPACE"
- for func in api.functionIterateByOffset():
- for n in func.entry_points:
- if (not func.is_static_entry_point(func.name)) or (func.has_different_protocol(n) and not func.is_static_entry_point(n)):
- print '#define gl_dispatch_stub_%u mgl_dispatch_stub_%u' % (func.offset, func.offset)
- break
- print "#endif /* USE_MGL_NAMESPACE */"
- print ''
- print ''
- print '#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)'
- for func in api.functionIterateByOffset():
- for n in func.entry_points:
- if (not func.is_static_entry_point(func.name)) or (func.has_different_protocol(n) and not func.is_static_entry_point(n)):
- print '%s GLAPIENTRY gl_dispatch_stub_%u(%s);' % (func.return_type, func.offset, func.get_parameter_string())
- break
-
- if self.es:
- categories = {}
- for func in api.functionIterateByOffset():
- for n in func.entry_points:
- cat, num = api.get_category_for_name(n)
- if (cat.startswith("es") or cat.startswith("GL_OES")):
- if not categories.has_key(cat):
- categories[cat] = []
- proto = 'GLAPI %s GLAPIENTRY %s(%s);' \
- % (func.return_type, "gl" + n, func.get_parameter_string(n))
- categories[cat].append(proto)
- if categories:
- print ''
- print '/* OpenGL ES specific prototypes */'
- print ''
- keys = categories.keys()
- keys.sort()
- for key in keys:
- print '/* category %s */' % key
- print "\n".join(categories[key])
- print ''
-
- print '#endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */'
-
- print ''
- print 'static const glprocs_table_t static_functions[] = {'
-
- for info in table:
- print ' NAME_FUNC_OFFSET(%5u, %s, %s, %s, %d),' % info
-
- print ' NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)'
- print '};'
- return
-
-
-def show_usage():
- print "Usage: %s [-f input_file_name] [-m mode] [-c]" % sys.argv[0]
- print "-c Enable compatibility with OpenGL ES."
- print "-m mode mode can be one of:"
- print " long - Create code for compilers that can handle very"
- print " long string constants. (default)"
- print " short - Create code for compilers that can only handle"
- print " ANSI C89 string constants."
- sys.exit(1)
-
-if __name__ == '__main__':
- file_name = "gl_API.xml"
-
- try:
- (args, trail) = getopt.getopt(sys.argv[1:], "f:m:c")
- except Exception,e:
- show_usage()
-
- long_string = 1
- es = False
- for (arg,val) in args:
- if arg == "-f":
- file_name = val
- elif arg == "-m":
- if val == "short":
- long_string = 0
- elif val == "long":
- long_string = 1
- else:
- show_usage()
- elif arg == "-c":
- es = True
-
- api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
- printer = PrintGlProcs(long_string, es)
- printer.Print(api)
+#!/usr/bin/env python
+
+# (C) Copyright IBM Corporation 2004, 2005
+# All Rights Reserved.
+#
+# 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
+# on the rights to use, copy, modify, merge, publish, distribute, sub
+# license, 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 (including the next
+# paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+# IBM AND/OR ITS SUPPLIERS 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.
+#
+# Authors:
+# Ian Romanick <idr@us.ibm.com>
+
+import license
+import gl_XML, glX_XML
+import sys, getopt
+
+class PrintGlProcs(gl_XML.gl_print_base):
+ def __init__(self, long_strings, es=False):
+ gl_XML.gl_print_base.__init__(self)
+
+ self.es = es
+ self.long_strings = long_strings
+ self.name = "gl_procs.py (from Mesa)"
+ self.license = license.bsd_license_template % ( \
+"""Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+(C) Copyright IBM Corporation 2004, 2006""", "BRIAN PAUL, IBM")
+
+
+ def printRealHeader(self):
+ print """
+/* This file is only included by glapi.c and is used for
+ * the GetProcAddress() function
+ */
+
+typedef struct {
+ GLint Name_offset;
+#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)
+ _glapi_proc Address;
+#endif
+ GLuint Offset;
+} glprocs_table_t;
+
+#if !defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
+# define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , o }
+#elif defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
+# define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f1 , o }
+#elif defined(NEED_FUNCTION_POINTER) && defined(GLX_INDIRECT_RENDERING)
+# define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f2 , o }
+#elif !defined(NEED_FUNCTION_POINTER) && defined(GLX_INDIRECT_RENDERING)
+# define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f3 , o }
+#endif
+
+"""
+ return
+
+ def printRealFooter(self):
+ print ''
+ print '#undef NAME_FUNC_OFFSET'
+ return
+
+ def printFunctionString(self, name):
+ if self.long_strings:
+ print ' "gl%s\\0"' % (name)
+ else:
+ print " 'g','l',",
+ for c in name:
+ print "'%s'," % (c),
+
+ print "'\\0',"
+
+
+ def printBody(self, api):
+ print ''
+ if self.long_strings:
+ print 'static const char gl_string_table[] ='
+ else:
+ print 'static const char gl_string_table[] = {'
+
+ base_offset = 0
+ table = []
+ for func in api.functionIterateByOffset():
+ name = func.dispatch_name()
+ self.printFunctionString(func.name)
+ table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.offset))
+
+ # The length of the function's name, plus 2 for "gl",
+ # plus 1 for the NUL.
+
+ base_offset += len(func.name) + 3
+
+
+ for func in api.functionIterateByOffset():
+ for n in func.entry_points:
+ if n != func.name:
+ name = func.dispatch_name()
+ self.printFunctionString( n )
+
+ if func.has_different_protocol(n):
+ alt_name = "gl" + func.static_glx_name(n)
+ table.append((base_offset, "gl" + name, alt_name, alt_name, func.offset))
+ else:
+ table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.offset))
+
+ base_offset += len(n) + 3
+
+
+ if self.long_strings:
+ print ' ;'
+ else:
+ print '};'
+
+ print ''
+ print ''
+ print "#ifdef USE_MGL_NAMESPACE"
+ for func in api.functionIterateByOffset():
+ for n in func.entry_points:
+ if (not func.is_static_entry_point(func.name)) or (func.has_different_protocol(n) and not func.is_static_entry_point(n)):
+ print '#define gl_dispatch_stub_%u mgl_dispatch_stub_%u' % (func.offset, func.offset)
+ break
+ print "#endif /* USE_MGL_NAMESPACE */"
+ print ''
+ print ''
+ print '#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)'
+ for func in api.functionIterateByOffset():
+ for n in func.entry_points:
+ if (not func.is_static_entry_point(func.name)) or (func.has_different_protocol(n) and not func.is_static_entry_point(n)):
+ print '%s GLAPIENTRY gl_dispatch_stub_%u(%s);' % (func.return_type, func.offset, func.get_parameter_string())
+ break
+
+ if self.es:
+ categories = {}
+ for func in api.functionIterateByOffset():
+ for n in func.entry_points:
+ cat, num = api.get_category_for_name(n)
+ if (cat.startswith("es") or cat.startswith("GL_OES")):
+ if not categories.has_key(cat):
+ categories[cat] = []
+ proto = 'GLAPI %s GLAPIENTRY %s(%s);' \
+ % (func.return_type, "gl" + n, func.get_parameter_string(n))
+ categories[cat].append(proto)
+ if categories:
+ print ''
+ print '/* OpenGL ES specific prototypes */'
+ print ''
+ keys = categories.keys()
+ keys.sort()
+ for key in keys:
+ print '/* category %s */' % key
+ print "\n".join(categories[key])
+ print ''
+
+ print '#endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */'
+
+ print ''
+ print 'static const glprocs_table_t static_functions[] = {'
+
+ for info in table:
+ print ' NAME_FUNC_OFFSET(%5u, %s, %s, %s, %d),' % info
+
+ print ' NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)'
+ print '};'
+ return
+
+
+def show_usage():
+ print "Usage: %s [-f input_file_name] [-m mode] [-c]" % sys.argv[0]
+ print "-c Enable compatibility with OpenGL ES."
+ print "-m mode mode can be one of:"
+ print " long - Create code for compilers that can handle very"
+ print " long string constants. (default)"
+ print " short - Create code for compilers that can only handle"
+ print " ANSI C89 string constants."
+ sys.exit(1)
+
+if __name__ == '__main__':
+ file_name = "gl_API.xml"
+
+ try:
+ (args, trail) = getopt.getopt(sys.argv[1:], "f:m:c")
+ except Exception,e:
+ show_usage()
+
+ long_string = 1
+ es = False
+ for (arg,val) in args:
+ if arg == "-f":
+ file_name = val
+ elif arg == "-m":
+ if val == "short":
+ long_string = 0
+ elif val == "long":
+ long_string = 1
+ else:
+ show_usage()
+ elif arg == "-c":
+ es = True
+
+ api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
+ printer = PrintGlProcs(long_string, es)
+ printer.Print(api)
diff --git a/mesalib/src/mapi/glapi/gen/next_available_offset.sh b/mesalib/src/mapi/glapi/gen/next_available_offset.sh
index 20d45ec54..e7d6c2f4a 100644
--- a/mesalib/src/mapi/glapi/gen/next_available_offset.sh
+++ b/mesalib/src/mapi/glapi/gen/next_available_offset.sh
@@ -1,39 +1,39 @@
-#!/usr/bin/env bash
-#
-# (C) Copyright IBM Corporation 2004
-# All Rights Reserved.
-#
-# 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
-# on the rights to use, copy, modify, merge, publish, distribute, sub
-# license, 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 (including the next
-# paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
-# IBM AND/OR ITS SUPPLIERS 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.
-#
-# Authors:
-# Ian Romanick <idr@us.ibm.com>
-
-# Trivial shell script to search the API definition file and print out the
-# next numerically available API entry-point offset. This could probably
-# be made smarter, but it would be better to use the existin Python
-# framework to do that. This is just a quick-and-dirty hack.
-
-num=$(grep 'offset="' gl_API.xml |\
- sed 's/.\+ offset="//g;s/".*$//g' |\
- grep -v '?' |\
- sort -rn |\
- head -1)
-
-echo $((num + 1))
+#!/usr/bin/env bash
+#
+# (C) Copyright IBM Corporation 2004
+# All Rights Reserved.
+#
+# 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
+# on the rights to use, copy, modify, merge, publish, distribute, sub
+# license, 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 (including the next
+# paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+# IBM AND/OR ITS SUPPLIERS 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.
+#
+# Authors:
+# Ian Romanick <idr@us.ibm.com>
+
+# Trivial shell script to search the API definition file and print out the
+# next numerically available API entry-point offset. This could probably
+# be made smarter, but it would be better to use the existin Python
+# framework to do that. This is just a quick-and-dirty hack.
+
+num=$(grep 'offset="' gl_API.xml |\
+ sed 's/.\+ offset="//g;s/".*$//g' |\
+ grep -v '?' |\
+ sort -rn |\
+ head -1)
+
+echo $((num + 1))
diff --git a/mesalib/src/mapi/glapi/glapi.c b/mesalib/src/mapi/glapi/glapi.c
index 77f75faed..f7655c558 100644
--- a/mesalib/src/mapi/glapi/glapi.c
+++ b/mesalib/src/mapi/glapi/glapi.c
@@ -1,65 +1,65 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#include "glapi/glapi.h"
-#include "mapi/u_current.h"
-
-/*
- * Global variables, _glapi_get_context, and _glapi_get_dispatch are defined in
- * u_current.c.
- */
-
-#ifdef GLX_USE_TLS
-/* not used, but defined for compatibility */
-const struct _glapi_table *_glapi_Dispatch;
-const void *_glapi_Context;
-#endif /* GLX_USE_TLS */
-
-void
-_glapi_destroy_multithread(void)
-{
- u_current_destroy();
-}
-
-void
-_glapi_check_multithread(void)
-{
- u_current_init();
-}
-
-void
-_glapi_set_context(void *context)
-{
- u_current_set_user((const void *) context);
-}
-
-void
-_glapi_set_dispatch(struct _glapi_table *dispatch)
-{
- u_current_set((const struct mapi_table *) dispatch);
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.9
+ *
+ * Copyright (C) 2010 LunarG Inc.
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors:
+ * Chia-I Wu <olv@lunarg.com>
+ */
+
+#include "glapi/glapi.h"
+#include "mapi/u_current.h"
+
+/*
+ * Global variables, _glapi_get_context, and _glapi_get_dispatch are defined in
+ * u_current.c.
+ */
+
+#ifdef GLX_USE_TLS
+/* not used, but defined for compatibility */
+const struct _glapi_table *_glapi_Dispatch;
+const void *_glapi_Context;
+#endif /* GLX_USE_TLS */
+
+void
+_glapi_destroy_multithread(void)
+{
+ u_current_destroy();
+}
+
+void
+_glapi_check_multithread(void)
+{
+ u_current_init();
+}
+
+void
+_glapi_set_context(void *context)
+{
+ u_current_set_user((const void *) context);
+}
+
+void
+_glapi_set_dispatch(struct _glapi_table *dispatch)
+{
+ u_current_set((const struct mapi_table *) dispatch);
+}
diff --git a/mesalib/src/mapi/glapi/glapi_dispatch.c b/mesalib/src/mapi/glapi/glapi_dispatch.c
index be8c4e71d..989f4a3fc 100644
--- a/mesalib/src/mapi/glapi/glapi_dispatch.c
+++ b/mesalib/src/mapi/glapi/glapi_dispatch.c
@@ -1,92 +1,92 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.3
- *
- * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-/**
- * \file glapi_dispatch.c
- *
- * This file generates all the gl* function entrypoints. This code is not
- * used if optimized assembly stubs are available (e.g., using
- * glapi/glapi_x86.S on IA32 or glapi/glapi_sparc.S on SPARC).
- *
- * \note
- * This file is also used to build the client-side libGL that loads DRI-based
- * device drivers. At build-time it is symlinked to src/glx.
- *
- * \author Brian Paul <brian@precisioninsight.com>
- */
-
-#include "glapi/glapi_priv.h"
-#include "glapi/glapitable.h"
-
-
-#if !(defined(USE_X86_ASM) || defined(USE_X86_64_ASM) || defined(USE_SPARC_ASM))
-
-#if defined(WIN32)
-#define KEYWORD1 GLAPI
-#else
-#define KEYWORD1 PUBLIC
-#endif
-
-#define KEYWORD2 GLAPIENTRY
-
-#if defined(USE_MGL_NAMESPACE)
-#define NAME(func) mgl##func
-#else
-#define NAME(func) gl##func
-#endif
-
-#if 0 /* Use this to log GL calls to stdout (for DEBUG only!) */
-
-#define F stdout
-#define DISPATCH(FUNC, ARGS, MESSAGE) \
- fprintf MESSAGE; \
- GET_DISPATCH()->FUNC ARGS
-
-#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
- fprintf MESSAGE; \
- return GET_DISPATCH()->FUNC ARGS
-
-#else
-
-#define DISPATCH(FUNC, ARGS, MESSAGE) \
- GET_DISPATCH()->FUNC ARGS
-
-#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
- return GET_DISPATCH()->FUNC ARGS
-
-#endif /* logging */
-
-
-#ifndef GLAPIENTRY
-#define GLAPIENTRY
-#endif
-
-#ifdef GLX_INDIRECT_RENDERING
-/* those link to libglapi.a should provide the entry points */
-#define _GLAPI_SKIP_PROTO_ENTRY_POINTS
-#endif
-#include "glapi/glapitemp.h"
-
-#endif /* USE_X86_ASM */
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.3
+ *
+ * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+/**
+ * \file glapi_dispatch.c
+ *
+ * This file generates all the gl* function entrypoints. This code is not
+ * used if optimized assembly stubs are available (e.g., using
+ * glapi/glapi_x86.S on IA32 or glapi/glapi_sparc.S on SPARC).
+ *
+ * \note
+ * This file is also used to build the client-side libGL that loads DRI-based
+ * device drivers. At build-time it is symlinked to src/glx.
+ *
+ * \author Brian Paul <brian@precisioninsight.com>
+ */
+
+#include "glapi/glapi_priv.h"
+#include "glapi/glapitable.h"
+
+
+#if !(defined(USE_X86_ASM) || defined(USE_X86_64_ASM) || defined(USE_SPARC_ASM))
+
+#if defined(WIN32)
+#define KEYWORD1 GLAPI
+#else
+#define KEYWORD1 PUBLIC
+#endif
+
+#define KEYWORD2 GLAPIENTRY
+
+#if defined(USE_MGL_NAMESPACE)
+#define NAME(func) mgl##func
+#else
+#define NAME(func) gl##func
+#endif
+
+#if 0 /* Use this to log GL calls to stdout (for DEBUG only!) */
+
+#define F stdout
+#define DISPATCH(FUNC, ARGS, MESSAGE) \
+ fprintf MESSAGE; \
+ GET_DISPATCH()->FUNC ARGS
+
+#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
+ fprintf MESSAGE; \
+ return GET_DISPATCH()->FUNC ARGS
+
+#else
+
+#define DISPATCH(FUNC, ARGS, MESSAGE) \
+ GET_DISPATCH()->FUNC ARGS
+
+#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
+ return GET_DISPATCH()->FUNC ARGS
+
+#endif /* logging */
+
+
+#ifndef GLAPIENTRY
+#define GLAPIENTRY
+#endif
+
+#ifdef GLX_INDIRECT_RENDERING
+/* those link to libglapi.a should provide the entry points */
+#define _GLAPI_SKIP_PROTO_ENTRY_POINTS
+#endif
+#include "glapi/glapitemp.h"
+
+#endif /* USE_X86_ASM */
diff --git a/mesalib/src/mapi/glapi/glapi_getproc.c b/mesalib/src/mapi/glapi/glapi_getproc.c
index d5c72f29b..3dde59680 100644
--- a/mesalib/src/mapi/glapi/glapi_getproc.c
+++ b/mesalib/src/mapi/glapi/glapi_getproc.c
@@ -1,667 +1,667 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/**
- * \file glapi_getproc.c
- *
- * Code for implementing glXGetProcAddress(), etc.
- * This was originally in glapi.c but refactored out.
- */
-
-
-#include "glapi/glapi_priv.h"
-#include "glapi/glapitable.h"
-
-
-#define FIRST_DYNAMIC_OFFSET (sizeof(struct _glapi_table) / sizeof(void *))
-
-
-/**********************************************************************
- * Static function management.
- */
-
-
-#if !defined(DISPATCH_FUNCTION_SIZE)
-# define NEED_FUNCTION_POINTER
-#endif
-#include "glapi/glprocs.h"
-
-
-/**
- * Search the table of static entrypoint functions for the named function
- * and return the corresponding glprocs_table_t entry.
- */
-static const glprocs_table_t *
-get_static_proc( const char * n )
-{
- GLuint i;
- for (i = 0; static_functions[i].Name_offset >= 0; i++) {
- const char *testName = gl_string_table + static_functions[i].Name_offset;
-#ifdef MANGLE
- /* skip the prefix on the name */
- if (strcmp(testName, n + 1) == 0)
-#else
- if (strcmp(testName, n) == 0)
-#endif
- {
- return &static_functions[i];
- }
- }
- return NULL;
-}
-
-
-/**
- * Return dispatch table offset of the named static (built-in) function.
- * Return -1 if function not found.
- */
-static GLint
-get_static_proc_offset(const char *funcName)
-{
- const glprocs_table_t * const f = get_static_proc( funcName );
- if (f == NULL) {
- return -1;
- }
-
- return f->Offset;
-}
-
-
-
-/**
- * Return dispatch function address for the named static (built-in) function.
- * Return NULL if function not found.
- */
-static _glapi_proc
-get_static_proc_address(const char *funcName)
-{
- const glprocs_table_t * const f = get_static_proc( funcName );
- if (f == NULL) {
- return NULL;
- }
-
-#if defined(DISPATCH_FUNCTION_SIZE) && defined(GLX_INDIRECT_RENDERING)
- return (f->Address == NULL)
- ? get_entrypoint_address(f->Offset)
- : f->Address;
-#elif defined(DISPATCH_FUNCTION_SIZE)
- return get_entrypoint_address(f->Offset);
-#else
- return f->Address;
-#endif
-}
-
-
-
-/**
- * Return the name of the function at the given offset in the dispatch
- * table. For debugging only.
- */
-static const char *
-get_static_proc_name( GLuint offset )
-{
- GLuint i;
- for (i = 0; static_functions[i].Name_offset >= 0; i++) {
- if (static_functions[i].Offset == offset) {
- return gl_string_table + static_functions[i].Name_offset;
- }
- }
- return NULL;
-}
-
-
-
-/**********************************************************************
- * Extension function management.
- */
-
-
-/**
- * Track information about a function added to the GL API.
- */
-struct _glapi_function {
- /**
- * Name of the function.
- */
- const char * name;
-
-
- /**
- * Text string that describes the types of the parameters passed to the
- * named function. Parameter types are converted to characters using the
- * following rules:
- * - 'i' for \c GLint, \c GLuint, and \c GLenum
- * - 'p' for any pointer type
- * - 'f' for \c GLfloat and \c GLclampf
- * - 'd' for \c GLdouble and \c GLclampd
- */
- const char * parameter_signature;
-
-
- /**
- * Offset in the dispatch table where the pointer to the real function is
- * located. If the driver has not requested that the named function be
- * added to the dispatch table, this will have the value ~0.
- */
- unsigned dispatch_offset;
-
-
- /**
- * Pointer to the dispatch stub for the named function.
- *
- * \todo
- * The semantic of this field should be changed slightly. Currently, it
- * is always expected to be non-\c NULL. However, it would be better to
- * only allocate the entry-point stub when the application requests the
- * function via \c glXGetProcAddress. This would save memory for all the
- * functions that the driver exports but that the application never wants
- * to call.
- */
- _glapi_proc dispatch_stub;
-};
-
-
-static struct _glapi_function ExtEntryTable[MAX_EXTENSION_FUNCS];
-static GLuint NumExtEntryPoints = 0;
-
-
-static struct _glapi_function *
-get_extension_proc(const char *funcName)
-{
- GLuint i;
- for (i = 0; i < NumExtEntryPoints; i++) {
- if (strcmp(ExtEntryTable[i].name, funcName) == 0) {
- return & ExtEntryTable[i];
- }
- }
- return NULL;
-}
-
-
-static GLint
-get_extension_proc_offset(const char *funcName)
-{
- const struct _glapi_function * const f = get_extension_proc( funcName );
- if (f == NULL) {
- return -1;
- }
-
- return f->dispatch_offset;
-}
-
-
-static _glapi_proc
-get_extension_proc_address(const char *funcName)
-{
- const struct _glapi_function * const f = get_extension_proc( funcName );
- if (f == NULL) {
- return NULL;
- }
-
- return f->dispatch_stub;
-}
-
-
-static const char *
-get_extension_proc_name(GLuint offset)
-{
- GLuint i;
- for (i = 0; i < NumExtEntryPoints; i++) {
- if (ExtEntryTable[i].dispatch_offset == offset) {
- return ExtEntryTable[i].name;
- }
- }
- return NULL;
-}
-
-
-/**
- * strdup() is actually not a standard ANSI C or POSIX routine.
- * Irix will not define it if ANSI mode is in effect.
- */
-static char *
-str_dup(const char *str)
-{
- char *copy;
- copy = (char*) malloc(strlen(str) + 1);
- if (!copy)
- return NULL;
- strcpy(copy, str);
- return copy;
-}
-
-
-/**
- * Generate new entrypoint
- *
- * Use a temporary dispatch offset of ~0 (i.e. -1). Later, when the driver
- * calls \c _glapi_add_dispatch we'll put in the proper offset. If that
- * never happens, and the user calls this function, he'll segfault. That's
- * what you get when you try calling a GL function that doesn't really exist.
- *
- * \param funcName Name of the function to create an entry-point for.
- *
- * \sa _glapi_add_entrypoint
- */
-
-static struct _glapi_function *
-add_function_name( const char * funcName )
-{
- struct _glapi_function * entry = NULL;
- _glapi_proc entrypoint = NULL;
- char * name_dup = NULL;
-
- if (NumExtEntryPoints >= MAX_EXTENSION_FUNCS)
- return NULL;
-
- if (funcName == NULL)
- return NULL;
-
- name_dup = str_dup(funcName);
- if (name_dup == NULL)
- return NULL;
-
- entrypoint = generate_entrypoint(~0);
-
- if (entrypoint == NULL) {
- free(name_dup);
- return NULL;
- }
-
- entry = & ExtEntryTable[NumExtEntryPoints];
- NumExtEntryPoints++;
-
- entry->name = name_dup;
- entry->parameter_signature = NULL;
- entry->dispatch_offset = ~0;
- entry->dispatch_stub = entrypoint;
-
- return entry;
-}
-
-
-static struct _glapi_function *
-set_entry_info( struct _glapi_function * entry, const char * signature, unsigned offset )
-{
- char * sig_dup = NULL;
-
- if (signature == NULL)
- return NULL;
-
- sig_dup = str_dup(signature);
- if (sig_dup == NULL)
- return NULL;
-
- fill_in_entrypoint_offset(entry->dispatch_stub, offset);
-
- entry->parameter_signature = sig_dup;
- entry->dispatch_offset = offset;
-
- return entry;
-}
-
-
-/**
- * Fill-in the dispatch stub for the named function.
- *
- * This function is intended to be called by a hardware driver. When called,
- * a dispatch stub may be created created for the function. A pointer to this
- * dispatch function will be returned by glXGetProcAddress.
- *
- * \param function_names Array of pointers to function names that should
- * share a common dispatch offset.
- * \param parameter_signature String representing the types of the parameters
- * passed to the named function. Parameter types
- * are converted to characters using the following
- * rules:
- * - 'i' for \c GLint, \c GLuint, and \c GLenum
- * - 'p' for any pointer type
- * - 'f' for \c GLfloat and \c GLclampf
- * - 'd' for \c GLdouble and \c GLclampd
- *
- * \returns
- * The offset in the dispatch table of the named function. A pointer to the
- * driver's implementation of the named function should be stored at
- * \c dispatch_table[\c offset]. Return -1 if error/problem.
- *
- * \sa glXGetProcAddress
- *
- * \warning
- * This function can only handle up to 8 names at a time. As far as I know,
- * the maximum number of names ever associated with an existing GL function is
- * 4 (\c glPointParameterfSGIS, \c glPointParameterfEXT,
- * \c glPointParameterfARB, and \c glPointParameterf), so this should not be
- * too painful of a limitation.
- *
- * \todo
- * Determine whether or not \c parameter_signature should be allowed to be
- * \c NULL. It doesn't seem like much of a hardship for drivers to have to
- * pass in an empty string.
- *
- * \todo
- * Determine if code should be added to reject function names that start with
- * 'glX'.
- *
- * \bug
- * Add code to compare \c parameter_signature with the parameter signature of
- * a static function. In order to do that, we need to find a way to \b get
- * the parameter signature of a static function.
- */
-
-#ifndef INSERVER
-int
-_glapi_add_dispatch( const char * const * function_names,
- const char * parameter_signature )
-{
- static int next_dynamic_offset = FIRST_DYNAMIC_OFFSET;
- const char * const real_sig = (parameter_signature != NULL)
- ? parameter_signature : "";
- struct _glapi_function * entry[8];
- GLboolean is_static[8];
- unsigned i;
- int offset = ~0;
-
- init_glapi_relocs_once();
-
- (void) memset( is_static, 0, sizeof( is_static ) );
- (void) memset( entry, 0, sizeof( entry ) );
-
- /* Find the _single_ dispatch offset for all function names that already
- * exist (and have a dispatch offset).
- */
-
- for ( i = 0 ; function_names[i] != NULL ; i++ ) {
- const char * funcName = function_names[i];
- int static_offset;
- int extension_offset;
-
- if (funcName[0] != 'g' || funcName[1] != 'l')
- return -1;
-
- /* search built-in functions */
- static_offset = get_static_proc_offset(funcName);
-
- if (static_offset >= 0) {
-
- is_static[i] = GL_TRUE;
-
- /* FIXME: Make sure the parameter signatures match! How do we get
- * FIXME: the parameter signature for static functions?
- */
-
- if ( (offset != ~0) && (static_offset != offset) ) {
- return -1;
- }
-
- offset = static_offset;
-
- continue;
- }
-
- /* search added extension functions */
- entry[i] = get_extension_proc(funcName);
-
- if (entry[i] != NULL) {
- extension_offset = entry[i]->dispatch_offset;
-
- /* The offset may be ~0 if the function name was added by
- * glXGetProcAddress but never filled in by the driver.
- */
-
- if (extension_offset == ~0) {
- continue;
- }
-
- if (strcmp(real_sig, entry[i]->parameter_signature) != 0) {
- return -1;
- }
-
- if ( (offset != ~0) && (extension_offset != offset) ) {
- return -1;
- }
-
- offset = extension_offset;
- }
- }
-
- /* If all function names are either new (or with no dispatch offset),
- * allocate a new dispatch offset.
- */
-
- if (offset == ~0) {
- offset = next_dynamic_offset;
- next_dynamic_offset++;
- }
-
- /* Fill in the dispatch offset for the new function names (and those with
- * no dispatch offset).
- */
-
- for ( i = 0 ; function_names[i] != NULL ; i++ ) {
- if (is_static[i]) {
- continue;
- }
-
- /* generate entrypoints for new function names */
- if (entry[i] == NULL) {
- entry[i] = add_function_name( function_names[i] );
- if (entry[i] == NULL) {
- /* FIXME: Possible memory leak here. */
- return -1;
- }
- }
-
- if (entry[i]->dispatch_offset == ~0) {
- set_entry_info( entry[i], real_sig, offset );
- }
- }
-
- return offset;
-}
-#endif
-
-/**
- * Return offset of entrypoint for named function within dispatch table.
- */
-GLint _GLAPI_EXPORT
-_glapi_get_proc_offset(const char *funcName)
-{
- GLint offset;
-
- /* search extension functions first */
- offset = get_extension_proc_offset(funcName);
- if (offset >= 0)
- return offset;
-
- /* search static functions */
- return get_static_proc_offset(funcName);
-}
-
-
-
-/**
- * Return pointer to the named function. If the function name isn't found
- * in the name of static functions, try generating a new API entrypoint on
- * the fly with assembly language.
- */
-_glapi_proc _GLAPI_EXPORT
-_glapi_get_proc_address(const char *funcName)
-{
- _glapi_proc func;
- struct _glapi_function * entry;
-
- init_glapi_relocs_once();
-
-#ifdef MANGLE
- /* skip the prefix on the name */
- if (funcName[1] != 'g' || funcName[2] != 'l')
- return NULL;
-#else
- if (funcName[0] != 'g' || funcName[1] != 'l')
- return NULL;
-#endif
-
- /* search extension functions first */
- func = get_extension_proc_address(funcName);
- if (func)
- return func;
-
- /* search static functions */
- func = get_static_proc_address(funcName);
- if (func)
- return func;
-
- /* generate entrypoint, dispatch offset must be filled in by the driver */
- entry = add_function_name(funcName);
- if (entry == NULL)
- return NULL;
-
- return entry->dispatch_stub;
-}
-
-
-
-/**
- * Return the name of the function at the given dispatch offset.
- * This is only intended for debugging.
- */
-const char * _GLAPI_EXPORT
-_glapi_get_proc_name(GLuint offset)
-{
- const char * n;
-
- /* search built-in functions */
- n = get_static_proc_name(offset);
- if ( n != NULL ) {
- return n;
- }
-
- /* search added extension functions */
- return get_extension_proc_name(offset);
-}
-
-
-
-/**********************************************************************
- * GL API table functions.
- */
-
-
-/**
- * Return size of dispatch table struct as number of functions (or
- * slots).
- */
-GLuint _GLAPI_EXPORT
-_glapi_get_dispatch_table_size(void)
-{
- /*
- * The dispatch table size (number of entries) is the size of the
- * _glapi_table struct plus the number of dynamic entries we can add.
- * The extra slots can be filled in by DRI drivers that register new
- * extension functions.
- */
- return FIRST_DYNAMIC_OFFSET + MAX_EXTENSION_FUNCS;
-}
-
-
-/**
- * Make sure there are no NULL pointers in the given dispatch table.
- * Intended for debugging purposes.
- */
-void
-_glapi_check_table_not_null(const struct _glapi_table *table)
-{
-#ifdef EXTRA_DEBUG /* set to DEBUG for extra DEBUG */
- const GLuint entries = _glapi_get_dispatch_table_size();
- const void **tab = (const void **) table;
- GLuint i;
- for (i = 1; i < entries; i++) {
- assert(tab[i]);
- }
-#else
- (void) table;
-#endif
-}
-
-
-/**
- * Do some spot checks to be sure that the dispatch table
- * slots are assigned correctly. For debugging only.
- */
-void
-_glapi_check_table(const struct _glapi_table *table)
-{
-#ifdef EXTRA_DEBUG /* set to DEBUG for extra DEBUG */
- {
- GLuint BeginOffset = _glapi_get_proc_offset("glBegin");
- char *BeginFunc = (char*) &table->Begin;
- GLuint offset = (BeginFunc - (char *) table) / sizeof(void *);
- assert(BeginOffset == offset);
- }
- {
- GLuint viewportOffset = _glapi_get_proc_offset("glViewport");
- char *viewportFunc = (char*) &table->Viewport;
- GLuint offset = (viewportFunc - (char *) table) / sizeof(void *);
- assert(viewportOffset == offset);
- }
- {
- GLuint VertexPointerOffset = _glapi_get_proc_offset("glVertexPointer");
- char *VertexPointerFunc = (char*) &table->VertexPointer;
- GLuint offset = (VertexPointerFunc - (char *) table) / sizeof(void *);
- assert(VertexPointerOffset == offset);
- }
- {
- GLuint ResetMinMaxOffset = _glapi_get_proc_offset("glResetMinmax");
- char *ResetMinMaxFunc = (char*) &table->ResetMinmax;
- GLuint offset = (ResetMinMaxFunc - (char *) table) / sizeof(void *);
- assert(ResetMinMaxOffset == offset);
- }
- {
- GLuint blendColorOffset = _glapi_get_proc_offset("glBlendColor");
- char *blendColorFunc = (char*) &table->BlendColor;
- GLuint offset = (blendColorFunc - (char *) table) / sizeof(void *);
- assert(blendColorOffset == offset);
- }
- {
- GLuint secondaryColor3fOffset = _glapi_get_proc_offset("glSecondaryColor3fEXT");
- char *secondaryColor3fFunc = (char*) &table->SecondaryColor3fEXT;
- GLuint offset = (secondaryColor3fFunc - (char *) table) / sizeof(void *);
- assert(secondaryColor3fOffset == offset);
- }
- {
- GLuint pointParameterivOffset = _glapi_get_proc_offset("glPointParameterivNV");
- char *pointParameterivFunc = (char*) &table->PointParameterivNV;
- GLuint offset = (pointParameterivFunc - (char *) table) / sizeof(void *);
- assert(pointParameterivOffset == offset);
- }
- {
- GLuint setFenceOffset = _glapi_get_proc_offset("glSetFenceNV");
- char *setFenceFunc = (char*) &table->SetFenceNV;
- GLuint offset = (setFenceFunc - (char *) table) / sizeof(void *);
- assert(setFenceOffset == offset);
- }
-#else
- (void) table;
-#endif
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/**
+ * \file glapi_getproc.c
+ *
+ * Code for implementing glXGetProcAddress(), etc.
+ * This was originally in glapi.c but refactored out.
+ */
+
+
+#include "glapi/glapi_priv.h"
+#include "glapi/glapitable.h"
+
+
+#define FIRST_DYNAMIC_OFFSET (sizeof(struct _glapi_table) / sizeof(void *))
+
+
+/**********************************************************************
+ * Static function management.
+ */
+
+
+#if !defined(DISPATCH_FUNCTION_SIZE)
+# define NEED_FUNCTION_POINTER
+#endif
+#include "glapi/glprocs.h"
+
+
+/**
+ * Search the table of static entrypoint functions for the named function
+ * and return the corresponding glprocs_table_t entry.
+ */
+static const glprocs_table_t *
+get_static_proc( const char * n )
+{
+ GLuint i;
+ for (i = 0; static_functions[i].Name_offset >= 0; i++) {
+ const char *testName = gl_string_table + static_functions[i].Name_offset;
+#ifdef MANGLE
+ /* skip the prefix on the name */
+ if (strcmp(testName, n + 1) == 0)
+#else
+ if (strcmp(testName, n) == 0)
+#endif
+ {
+ return &static_functions[i];
+ }
+ }
+ return NULL;
+}
+
+
+/**
+ * Return dispatch table offset of the named static (built-in) function.
+ * Return -1 if function not found.
+ */
+static GLint
+get_static_proc_offset(const char *funcName)
+{
+ const glprocs_table_t * const f = get_static_proc( funcName );
+ if (f == NULL) {
+ return -1;
+ }
+
+ return f->Offset;
+}
+
+
+
+/**
+ * Return dispatch function address for the named static (built-in) function.
+ * Return NULL if function not found.
+ */
+static _glapi_proc
+get_static_proc_address(const char *funcName)
+{
+ const glprocs_table_t * const f = get_static_proc( funcName );
+ if (f == NULL) {
+ return NULL;
+ }
+
+#if defined(DISPATCH_FUNCTION_SIZE) && defined(GLX_INDIRECT_RENDERING)
+ return (f->Address == NULL)
+ ? get_entrypoint_address(f->Offset)
+ : f->Address;
+#elif defined(DISPATCH_FUNCTION_SIZE)
+ return get_entrypoint_address(f->Offset);
+#else
+ return f->Address;
+#endif
+}
+
+
+
+/**
+ * Return the name of the function at the given offset in the dispatch
+ * table. For debugging only.
+ */
+static const char *
+get_static_proc_name( GLuint offset )
+{
+ GLuint i;
+ for (i = 0; static_functions[i].Name_offset >= 0; i++) {
+ if (static_functions[i].Offset == offset) {
+ return gl_string_table + static_functions[i].Name_offset;
+ }
+ }
+ return NULL;
+}
+
+
+
+/**********************************************************************
+ * Extension function management.
+ */
+
+
+/**
+ * Track information about a function added to the GL API.
+ */
+struct _glapi_function {
+ /**
+ * Name of the function.
+ */
+ const char * name;
+
+
+ /**
+ * Text string that describes the types of the parameters passed to the
+ * named function. Parameter types are converted to characters using the
+ * following rules:
+ * - 'i' for \c GLint, \c GLuint, and \c GLenum
+ * - 'p' for any pointer type
+ * - 'f' for \c GLfloat and \c GLclampf
+ * - 'd' for \c GLdouble and \c GLclampd
+ */
+ const char * parameter_signature;
+
+
+ /**
+ * Offset in the dispatch table where the pointer to the real function is
+ * located. If the driver has not requested that the named function be
+ * added to the dispatch table, this will have the value ~0.
+ */
+ unsigned dispatch_offset;
+
+
+ /**
+ * Pointer to the dispatch stub for the named function.
+ *
+ * \todo
+ * The semantic of this field should be changed slightly. Currently, it
+ * is always expected to be non-\c NULL. However, it would be better to
+ * only allocate the entry-point stub when the application requests the
+ * function via \c glXGetProcAddress. This would save memory for all the
+ * functions that the driver exports but that the application never wants
+ * to call.
+ */
+ _glapi_proc dispatch_stub;
+};
+
+
+static struct _glapi_function ExtEntryTable[MAX_EXTENSION_FUNCS];
+static GLuint NumExtEntryPoints = 0;
+
+
+static struct _glapi_function *
+get_extension_proc(const char *funcName)
+{
+ GLuint i;
+ for (i = 0; i < NumExtEntryPoints; i++) {
+ if (strcmp(ExtEntryTable[i].name, funcName) == 0) {
+ return & ExtEntryTable[i];
+ }
+ }
+ return NULL;
+}
+
+
+static GLint
+get_extension_proc_offset(const char *funcName)
+{
+ const struct _glapi_function * const f = get_extension_proc( funcName );
+ if (f == NULL) {
+ return -1;
+ }
+
+ return f->dispatch_offset;
+}
+
+
+static _glapi_proc
+get_extension_proc_address(const char *funcName)
+{
+ const struct _glapi_function * const f = get_extension_proc( funcName );
+ if (f == NULL) {
+ return NULL;
+ }
+
+ return f->dispatch_stub;
+}
+
+
+static const char *
+get_extension_proc_name(GLuint offset)
+{
+ GLuint i;
+ for (i = 0; i < NumExtEntryPoints; i++) {
+ if (ExtEntryTable[i].dispatch_offset == offset) {
+ return ExtEntryTable[i].name;
+ }
+ }
+ return NULL;
+}
+
+
+/**
+ * strdup() is actually not a standard ANSI C or POSIX routine.
+ * Irix will not define it if ANSI mode is in effect.
+ */
+static char *
+str_dup(const char *str)
+{
+ char *copy;
+ copy = (char*) malloc(strlen(str) + 1);
+ if (!copy)
+ return NULL;
+ strcpy(copy, str);
+ return copy;
+}
+
+
+/**
+ * Generate new entrypoint
+ *
+ * Use a temporary dispatch offset of ~0 (i.e. -1). Later, when the driver
+ * calls \c _glapi_add_dispatch we'll put in the proper offset. If that
+ * never happens, and the user calls this function, he'll segfault. That's
+ * what you get when you try calling a GL function that doesn't really exist.
+ *
+ * \param funcName Name of the function to create an entry-point for.
+ *
+ * \sa _glapi_add_entrypoint
+ */
+
+static struct _glapi_function *
+add_function_name( const char * funcName )
+{
+ struct _glapi_function * entry = NULL;
+ _glapi_proc entrypoint = NULL;
+ char * name_dup = NULL;
+
+ if (NumExtEntryPoints >= MAX_EXTENSION_FUNCS)
+ return NULL;
+
+ if (funcName == NULL)
+ return NULL;
+
+ name_dup = str_dup(funcName);
+ if (name_dup == NULL)
+ return NULL;
+
+ entrypoint = generate_entrypoint(~0);
+
+ if (entrypoint == NULL) {
+ free(name_dup);
+ return NULL;
+ }
+
+ entry = & ExtEntryTable[NumExtEntryPoints];
+ NumExtEntryPoints++;
+
+ entry->name = name_dup;
+ entry->parameter_signature = NULL;
+ entry->dispatch_offset = ~0;
+ entry->dispatch_stub = entrypoint;
+
+ return entry;
+}
+
+
+static struct _glapi_function *
+set_entry_info( struct _glapi_function * entry, const char * signature, unsigned offset )
+{
+ char * sig_dup = NULL;
+
+ if (signature == NULL)
+ return NULL;
+
+ sig_dup = str_dup(signature);
+ if (sig_dup == NULL)
+ return NULL;
+
+ fill_in_entrypoint_offset(entry->dispatch_stub, offset);
+
+ entry->parameter_signature = sig_dup;
+ entry->dispatch_offset = offset;
+
+ return entry;
+}
+
+
+/**
+ * Fill-in the dispatch stub for the named function.
+ *
+ * This function is intended to be called by a hardware driver. When called,
+ * a dispatch stub may be created created for the function. A pointer to this
+ * dispatch function will be returned by glXGetProcAddress.
+ *
+ * \param function_names Array of pointers to function names that should
+ * share a common dispatch offset.
+ * \param parameter_signature String representing the types of the parameters
+ * passed to the named function. Parameter types
+ * are converted to characters using the following
+ * rules:
+ * - 'i' for \c GLint, \c GLuint, and \c GLenum
+ * - 'p' for any pointer type
+ * - 'f' for \c GLfloat and \c GLclampf
+ * - 'd' for \c GLdouble and \c GLclampd
+ *
+ * \returns
+ * The offset in the dispatch table of the named function. A pointer to the
+ * driver's implementation of the named function should be stored at
+ * \c dispatch_table[\c offset]. Return -1 if error/problem.
+ *
+ * \sa glXGetProcAddress
+ *
+ * \warning
+ * This function can only handle up to 8 names at a time. As far as I know,
+ * the maximum number of names ever associated with an existing GL function is
+ * 4 (\c glPointParameterfSGIS, \c glPointParameterfEXT,
+ * \c glPointParameterfARB, and \c glPointParameterf), so this should not be
+ * too painful of a limitation.
+ *
+ * \todo
+ * Determine whether or not \c parameter_signature should be allowed to be
+ * \c NULL. It doesn't seem like much of a hardship for drivers to have to
+ * pass in an empty string.
+ *
+ * \todo
+ * Determine if code should be added to reject function names that start with
+ * 'glX'.
+ *
+ * \bug
+ * Add code to compare \c parameter_signature with the parameter signature of
+ * a static function. In order to do that, we need to find a way to \b get
+ * the parameter signature of a static function.
+ */
+
+#ifndef INSERVER
+int
+_glapi_add_dispatch( const char * const * function_names,
+ const char * parameter_signature )
+{
+ static int next_dynamic_offset = FIRST_DYNAMIC_OFFSET;
+ const char * const real_sig = (parameter_signature != NULL)
+ ? parameter_signature : "";
+ struct _glapi_function * entry[8];
+ GLboolean is_static[8];
+ unsigned i;
+ int offset = ~0;
+
+ init_glapi_relocs_once();
+
+ (void) memset( is_static, 0, sizeof( is_static ) );
+ (void) memset( entry, 0, sizeof( entry ) );
+
+ /* Find the _single_ dispatch offset for all function names that already
+ * exist (and have a dispatch offset).
+ */
+
+ for ( i = 0 ; function_names[i] != NULL ; i++ ) {
+ const char * funcName = function_names[i];
+ int static_offset;
+ int extension_offset;
+
+ if (funcName[0] != 'g' || funcName[1] != 'l')
+ return -1;
+
+ /* search built-in functions */
+ static_offset = get_static_proc_offset(funcName);
+
+ if (static_offset >= 0) {
+
+ is_static[i] = GL_TRUE;
+
+ /* FIXME: Make sure the parameter signatures match! How do we get
+ * FIXME: the parameter signature for static functions?
+ */
+
+ if ( (offset != ~0) && (static_offset != offset) ) {
+ return -1;
+ }
+
+ offset = static_offset;
+
+ continue;
+ }
+
+ /* search added extension functions */
+ entry[i] = get_extension_proc(funcName);
+
+ if (entry[i] != NULL) {
+ extension_offset = entry[i]->dispatch_offset;
+
+ /* The offset may be ~0 if the function name was added by
+ * glXGetProcAddress but never filled in by the driver.
+ */
+
+ if (extension_offset == ~0) {
+ continue;
+ }
+
+ if (strcmp(real_sig, entry[i]->parameter_signature) != 0) {
+ return -1;
+ }
+
+ if ( (offset != ~0) && (extension_offset != offset) ) {
+ return -1;
+ }
+
+ offset = extension_offset;
+ }
+ }
+
+ /* If all function names are either new (or with no dispatch offset),
+ * allocate a new dispatch offset.
+ */
+
+ if (offset == ~0) {
+ offset = next_dynamic_offset;
+ next_dynamic_offset++;
+ }
+
+ /* Fill in the dispatch offset for the new function names (and those with
+ * no dispatch offset).
+ */
+
+ for ( i = 0 ; function_names[i] != NULL ; i++ ) {
+ if (is_static[i]) {
+ continue;
+ }
+
+ /* generate entrypoints for new function names */
+ if (entry[i] == NULL) {
+ entry[i] = add_function_name( function_names[i] );
+ if (entry[i] == NULL) {
+ /* FIXME: Possible memory leak here. */
+ return -1;
+ }
+ }
+
+ if (entry[i]->dispatch_offset == ~0) {
+ set_entry_info( entry[i], real_sig, offset );
+ }
+ }
+
+ return offset;
+}
+#endif
+
+/**
+ * Return offset of entrypoint for named function within dispatch table.
+ */
+GLint _GLAPI_EXPORT
+_glapi_get_proc_offset(const char *funcName)
+{
+ GLint offset;
+
+ /* search extension functions first */
+ offset = get_extension_proc_offset(funcName);
+ if (offset >= 0)
+ return offset;
+
+ /* search static functions */
+ return get_static_proc_offset(funcName);
+}
+
+
+
+/**
+ * Return pointer to the named function. If the function name isn't found
+ * in the name of static functions, try generating a new API entrypoint on
+ * the fly with assembly language.
+ */
+_glapi_proc _GLAPI_EXPORT
+_glapi_get_proc_address(const char *funcName)
+{
+ _glapi_proc func;
+ struct _glapi_function * entry;
+
+ init_glapi_relocs_once();
+
+#ifdef MANGLE
+ /* skip the prefix on the name */
+ if (funcName[1] != 'g' || funcName[2] != 'l')
+ return NULL;
+#else
+ if (funcName[0] != 'g' || funcName[1] != 'l')
+ return NULL;
+#endif
+
+ /* search extension functions first */
+ func = get_extension_proc_address(funcName);
+ if (func)
+ return func;
+
+ /* search static functions */
+ func = get_static_proc_address(funcName);
+ if (func)
+ return func;
+
+ /* generate entrypoint, dispatch offset must be filled in by the driver */
+ entry = add_function_name(funcName);
+ if (entry == NULL)
+ return NULL;
+
+ return entry->dispatch_stub;
+}
+
+
+
+/**
+ * Return the name of the function at the given dispatch offset.
+ * This is only intended for debugging.
+ */
+const char * _GLAPI_EXPORT
+_glapi_get_proc_name(GLuint offset)
+{
+ const char * n;
+
+ /* search built-in functions */
+ n = get_static_proc_name(offset);
+ if ( n != NULL ) {
+ return n;
+ }
+
+ /* search added extension functions */
+ return get_extension_proc_name(offset);
+}
+
+
+
+/**********************************************************************
+ * GL API table functions.
+ */
+
+
+/**
+ * Return size of dispatch table struct as number of functions (or
+ * slots).
+ */
+GLuint _GLAPI_EXPORT
+_glapi_get_dispatch_table_size(void)
+{
+ /*
+ * The dispatch table size (number of entries) is the size of the
+ * _glapi_table struct plus the number of dynamic entries we can add.
+ * The extra slots can be filled in by DRI drivers that register new
+ * extension functions.
+ */
+ return FIRST_DYNAMIC_OFFSET + MAX_EXTENSION_FUNCS;
+}
+
+
+/**
+ * Make sure there are no NULL pointers in the given dispatch table.
+ * Intended for debugging purposes.
+ */
+void
+_glapi_check_table_not_null(const struct _glapi_table *table)
+{
+#ifdef EXTRA_DEBUG /* set to DEBUG for extra DEBUG */
+ const GLuint entries = _glapi_get_dispatch_table_size();
+ const void **tab = (const void **) table;
+ GLuint i;
+ for (i = 1; i < entries; i++) {
+ assert(tab[i]);
+ }
+#else
+ (void) table;
+#endif
+}
+
+
+/**
+ * Do some spot checks to be sure that the dispatch table
+ * slots are assigned correctly. For debugging only.
+ */
+void
+_glapi_check_table(const struct _glapi_table *table)
+{
+#ifdef EXTRA_DEBUG /* set to DEBUG for extra DEBUG */
+ {
+ GLuint BeginOffset = _glapi_get_proc_offset("glBegin");
+ char *BeginFunc = (char*) &table->Begin;
+ GLuint offset = (BeginFunc - (char *) table) / sizeof(void *);
+ assert(BeginOffset == offset);
+ }
+ {
+ GLuint viewportOffset = _glapi_get_proc_offset("glViewport");
+ char *viewportFunc = (char*) &table->Viewport;
+ GLuint offset = (viewportFunc - (char *) table) / sizeof(void *);
+ assert(viewportOffset == offset);
+ }
+ {
+ GLuint VertexPointerOffset = _glapi_get_proc_offset("glVertexPointer");
+ char *VertexPointerFunc = (char*) &table->VertexPointer;
+ GLuint offset = (VertexPointerFunc - (char *) table) / sizeof(void *);
+ assert(VertexPointerOffset == offset);
+ }
+ {
+ GLuint ResetMinMaxOffset = _glapi_get_proc_offset("glResetMinmax");
+ char *ResetMinMaxFunc = (char*) &table->ResetMinmax;
+ GLuint offset = (ResetMinMaxFunc - (char *) table) / sizeof(void *);
+ assert(ResetMinMaxOffset == offset);
+ }
+ {
+ GLuint blendColorOffset = _glapi_get_proc_offset("glBlendColor");
+ char *blendColorFunc = (char*) &table->BlendColor;
+ GLuint offset = (blendColorFunc - (char *) table) / sizeof(void *);
+ assert(blendColorOffset == offset);
+ }
+ {
+ GLuint secondaryColor3fOffset = _glapi_get_proc_offset("glSecondaryColor3fEXT");
+ char *secondaryColor3fFunc = (char*) &table->SecondaryColor3fEXT;
+ GLuint offset = (secondaryColor3fFunc - (char *) table) / sizeof(void *);
+ assert(secondaryColor3fOffset == offset);
+ }
+ {
+ GLuint pointParameterivOffset = _glapi_get_proc_offset("glPointParameterivNV");
+ char *pointParameterivFunc = (char*) &table->PointParameterivNV;
+ GLuint offset = (pointParameterivFunc - (char *) table) / sizeof(void *);
+ assert(pointParameterivOffset == offset);
+ }
+ {
+ GLuint setFenceOffset = _glapi_get_proc_offset("glSetFenceNV");
+ char *setFenceFunc = (char*) &table->SetFenceNV;
+ GLuint offset = (setFenceFunc - (char *) table) / sizeof(void *);
+ assert(setFenceOffset == offset);
+ }
+#else
+ (void) table;
+#endif
+}
diff --git a/mesalib/src/mapi/mapi/entry.c b/mesalib/src/mapi/mapi/entry.c
index 410a68f2b..3d9168a72 100644
--- a/mesalib/src/mapi/mapi/entry.c
+++ b/mesalib/src/mapi/mapi/entry.c
@@ -1,98 +1,98 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#include "entry.h"
-#include "u_current.h"
-#include "u_macros.h"
-
-/* define macros for use by assembly dispatchers */
-#define ENTRY_CURRENT_TABLE U_STRINGIFY(u_current_table)
-
-/* in bridge mode, mapi is a user of glapi */
-#ifdef MAPI_MODE_BRIDGE
-#define ENTRY_CURRENT_TABLE_GET "_glapi_get_dispatch"
-#else
-#define ENTRY_CURRENT_TABLE_GET U_STRINGIFY(u_current_get_internal)
-#endif
-
-#if defined(USE_X86_ASM) && defined(__GNUC__)
-# ifdef GLX_USE_TLS
-# include "entry_x86_tls.h"
-# else
-# include "entry_x86_tsd.h"
-# endif
-#elif defined(USE_X86_64_ASM) && defined(__GNUC__) && defined(GLX_USE_TLS)
-# include "entry_x86-64_tls.h"
-#else
-
-#include <stdlib.h>
-
-static INLINE const struct mapi_table *
-entry_current_get(void)
-{
-#ifdef MAPI_MODE_BRIDGE
- return GET_DISPATCH();
-#else
- return u_current_get();
-#endif
-}
-
-/* C version of the public entries */
-#define MAPI_TMP_DEFINES
-#define MAPI_TMP_PUBLIC_DECLARES
-#define MAPI_TMP_PUBLIC_ENTRIES
-#include "mapi_tmp.h"
-
-#ifndef MAPI_MODE_BRIDGE
-
-void
-entry_patch_public(void)
-{
-}
-
-mapi_func
-entry_get_public(int slot)
-{
- /* pubic_entries are defined by MAPI_TMP_PUBLIC_ENTRIES */
- return public_entries[slot];
-}
-
-mapi_func
-entry_generate(int slot)
-{
- return NULL;
-}
-
-void
-entry_patch(mapi_func entry, int slot)
-{
-}
-
-#endif /* MAPI_MODE_BRIDGE */
-
-#endif /* asm */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.9
+ *
+ * Copyright (C) 2010 LunarG Inc.
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors:
+ * Chia-I Wu <olv@lunarg.com>
+ */
+
+#include "entry.h"
+#include "u_current.h"
+#include "u_macros.h"
+
+/* define macros for use by assembly dispatchers */
+#define ENTRY_CURRENT_TABLE U_STRINGIFY(u_current_table)
+
+/* in bridge mode, mapi is a user of glapi */
+#ifdef MAPI_MODE_BRIDGE
+#define ENTRY_CURRENT_TABLE_GET "_glapi_get_dispatch"
+#else
+#define ENTRY_CURRENT_TABLE_GET U_STRINGIFY(u_current_get_internal)
+#endif
+
+#if defined(USE_X86_ASM) && defined(__GNUC__)
+# ifdef GLX_USE_TLS
+# include "entry_x86_tls.h"
+# else
+# include "entry_x86_tsd.h"
+# endif
+#elif defined(USE_X86_64_ASM) && defined(__GNUC__) && defined(GLX_USE_TLS)
+# include "entry_x86-64_tls.h"
+#else
+
+#include <stdlib.h>
+
+static INLINE const struct mapi_table *
+entry_current_get(void)
+{
+#ifdef MAPI_MODE_BRIDGE
+ return GET_DISPATCH();
+#else
+ return u_current_get();
+#endif
+}
+
+/* C version of the public entries */
+#define MAPI_TMP_DEFINES
+#define MAPI_TMP_PUBLIC_DECLARES
+#define MAPI_TMP_PUBLIC_ENTRIES
+#include "mapi_tmp.h"
+
+#ifndef MAPI_MODE_BRIDGE
+
+void
+entry_patch_public(void)
+{
+}
+
+mapi_func
+entry_get_public(int slot)
+{
+ /* pubic_entries are defined by MAPI_TMP_PUBLIC_ENTRIES */
+ return public_entries[slot];
+}
+
+mapi_func
+entry_generate(int slot)
+{
+ return NULL;
+}
+
+void
+entry_patch(mapi_func entry, int slot)
+{
+}
+
+#endif /* MAPI_MODE_BRIDGE */
+
+#endif /* asm */
diff --git a/mesalib/src/mapi/mapi/entry.h b/mesalib/src/mapi/mapi/entry.h
index 3ef37deeb..9df810004 100644
--- a/mesalib/src/mapi/mapi/entry.h
+++ b/mesalib/src/mapi/mapi/entry.h
@@ -1,48 +1,48 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#ifndef _ENTRY_H_
-#define _ENTRY_H_
-
-#include "u_compiler.h"
-
-typedef void (*mapi_func)(void);
-
-void
-entry_patch_public(void);
-
-mapi_func
-entry_get_public(int slot);
-
-mapi_func
-entry_generate(int slot);
-
-void
-entry_patch(mapi_func entry, int slot);
-
-#endif /* _ENTRY_H_ */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.9
+ *
+ * Copyright (C) 2010 LunarG Inc.
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors:
+ * Chia-I Wu <olv@lunarg.com>
+ */
+
+#ifndef _ENTRY_H_
+#define _ENTRY_H_
+
+#include "u_compiler.h"
+
+typedef void (*mapi_func)(void);
+
+void
+entry_patch_public(void);
+
+mapi_func
+entry_get_public(int slot);
+
+mapi_func
+entry_generate(int slot);
+
+void
+entry_patch(mapi_func entry, int slot);
+
+#endif /* _ENTRY_H_ */
diff --git a/mesalib/src/mapi/mapi/mapi.c b/mesalib/src/mapi/mapi/mapi.c
index c9115b702..b471c40b1 100644
--- a/mesalib/src/mapi/mapi/mapi.c
+++ b/mesalib/src/mapi/mapi/mapi.c
@@ -1,191 +1,191 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "u_current.h"
-#include "u_thread.h"
-#include "mapi.h"
-#include "stub.h"
-#include "table.h"
-
-/* dynamic stubs will run out before this array */
-static const struct mapi_stub *mapi_stub_map[MAPI_TABLE_NUM_SLOTS];
-static int mapi_num_stubs;
-
-static const struct mapi_stub *
-get_stub(const char *name, const struct mapi_stub *alias)
-{
- const struct mapi_stub *stub;
-
- stub = stub_find_public(name);
- if (!stub) {
- struct mapi_stub *dyn = stub_find_dynamic(name, 1);
- if (dyn) {
- stub_fix_dynamic(dyn, alias);
- stub = dyn;
- }
- }
-
- return stub;
-}
-
-/**
- * Initialize mapi. spec consists of NULL-separated strings. The first string
- * denotes the version. It is followed by variable numbers of entries. Each
- * entry can have multiple names. An empty name terminates an entry. An empty
- * entry terminates the spec. A spec of two entries, Foo and Bar, is as
- * follows
- *
- * "1\0"
- * "Foo\0"
- * "FooEXT\0"
- * "\0"
- * "Bar\0"
- * "\0"
- */
-void
-mapi_init(const char *spec)
-{
- u_mutex_declare_static(mutex);
- const char *p;
- int ver, count;
-
- u_mutex_lock(mutex);
-
- /* already initialized */
- if (mapi_num_stubs) {
- u_mutex_unlock(mutex);
- return;
- }
-
- count = 0;
- p = spec;
-
- /* parse version string */
- ver = atoi(p);
- if (ver != 1) {
- u_mutex_unlock(mutex);
- return;
- }
- p += strlen(p) + 1;
-
- while (*p) {
- const struct mapi_stub *stub;
-
- stub = get_stub(p, NULL);
- /* out of dynamic entries */
- if (!stub)
- break;
- p += strlen(p) + 1;
-
- while (*p) {
- get_stub(p, stub);
- p += strlen(p) + 1;
- }
-
- mapi_stub_map[count++] = stub;
- p++;
- }
-
- mapi_num_stubs = count;
-
- u_mutex_unlock(mutex);
-}
-
-/**
- * Return the address of an entry. Optionally generate the entry if it does
- * not exist.
- */
-mapi_proc
-mapi_get_proc_address(const char *name)
-{
- const struct mapi_stub *stub;
-
- stub = stub_find_public(name);
- if (!stub)
- stub = stub_find_dynamic(name, 0);
-
- return (stub) ? (mapi_proc) stub_get_addr(stub) : NULL;
-}
-
-/**
- * Create a dispatch table.
- */
-struct mapi_table *
-mapi_table_create(void)
-{
- const struct mapi_table *noop = table_get_noop();
- struct mapi_table *tbl;
-
- tbl = malloc(MAPI_TABLE_SIZE);
- if (tbl)
- memcpy(tbl, noop, MAPI_TABLE_SIZE);
-
- return tbl;
-}
-
-/**
- * Destroy a dispatch table.
- */
-void
-mapi_table_destroy(struct mapi_table *tbl)
-{
- free(tbl);
-}
-
-/**
- * Fill a dispatch table. The order of the procs is determined when mapi_init
- * is called.
- */
-void
-mapi_table_fill(struct mapi_table *tbl, const mapi_proc *procs)
-{
- const struct mapi_table *noop = table_get_noop();
- int i;
-
- for (i = 0; i < mapi_num_stubs; i++) {
- const struct mapi_stub *stub = mapi_stub_map[i];
- int slot = stub_get_slot(stub);
- mapi_func func = (mapi_func) procs[i];
-
- if (!func)
- func = table_get_func(noop, slot);
- table_set_func(tbl, slot, func);
- }
-}
-
-/**
- * Make a dispatch table current.
- */
-void
-mapi_table_make_current(const struct mapi_table *tbl)
-{
- u_current_set(tbl);
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.9
+ *
+ * Copyright (C) 2010 LunarG Inc.
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors:
+ * Chia-I Wu <olv@lunarg.com>
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "u_current.h"
+#include "u_thread.h"
+#include "mapi.h"
+#include "stub.h"
+#include "table.h"
+
+/* dynamic stubs will run out before this array */
+static const struct mapi_stub *mapi_stub_map[MAPI_TABLE_NUM_SLOTS];
+static int mapi_num_stubs;
+
+static const struct mapi_stub *
+get_stub(const char *name, const struct mapi_stub *alias)
+{
+ const struct mapi_stub *stub;
+
+ stub = stub_find_public(name);
+ if (!stub) {
+ struct mapi_stub *dyn = stub_find_dynamic(name, 1);
+ if (dyn) {
+ stub_fix_dynamic(dyn, alias);
+ stub = dyn;
+ }
+ }
+
+ return stub;
+}
+
+/**
+ * Initialize mapi. spec consists of NULL-separated strings. The first string
+ * denotes the version. It is followed by variable numbers of entries. Each
+ * entry can have multiple names. An empty name terminates an entry. An empty
+ * entry terminates the spec. A spec of two entries, Foo and Bar, is as
+ * follows
+ *
+ * "1\0"
+ * "Foo\0"
+ * "FooEXT\0"
+ * "\0"
+ * "Bar\0"
+ * "\0"
+ */
+void
+mapi_init(const char *spec)
+{
+ u_mutex_declare_static(mutex);
+ const char *p;
+ int ver, count;
+
+ u_mutex_lock(mutex);
+
+ /* already initialized */
+ if (mapi_num_stubs) {
+ u_mutex_unlock(mutex);
+ return;
+ }
+
+ count = 0;
+ p = spec;
+
+ /* parse version string */
+ ver = atoi(p);
+ if (ver != 1) {
+ u_mutex_unlock(mutex);
+ return;
+ }
+ p += strlen(p) + 1;
+
+ while (*p) {
+ const struct mapi_stub *stub;
+
+ stub = get_stub(p, NULL);
+ /* out of dynamic entries */
+ if (!stub)
+ break;
+ p += strlen(p) + 1;
+
+ while (*p) {
+ get_stub(p, stub);
+ p += strlen(p) + 1;
+ }
+
+ mapi_stub_map[count++] = stub;
+ p++;
+ }
+
+ mapi_num_stubs = count;
+
+ u_mutex_unlock(mutex);
+}
+
+/**
+ * Return the address of an entry. Optionally generate the entry if it does
+ * not exist.
+ */
+mapi_proc
+mapi_get_proc_address(const char *name)
+{
+ const struct mapi_stub *stub;
+
+ stub = stub_find_public(name);
+ if (!stub)
+ stub = stub_find_dynamic(name, 0);
+
+ return (stub) ? (mapi_proc) stub_get_addr(stub) : NULL;
+}
+
+/**
+ * Create a dispatch table.
+ */
+struct mapi_table *
+mapi_table_create(void)
+{
+ const struct mapi_table *noop = table_get_noop();
+ struct mapi_table *tbl;
+
+ tbl = malloc(MAPI_TABLE_SIZE);
+ if (tbl)
+ memcpy(tbl, noop, MAPI_TABLE_SIZE);
+
+ return tbl;
+}
+
+/**
+ * Destroy a dispatch table.
+ */
+void
+mapi_table_destroy(struct mapi_table *tbl)
+{
+ free(tbl);
+}
+
+/**
+ * Fill a dispatch table. The order of the procs is determined when mapi_init
+ * is called.
+ */
+void
+mapi_table_fill(struct mapi_table *tbl, const mapi_proc *procs)
+{
+ const struct mapi_table *noop = table_get_noop();
+ int i;
+
+ for (i = 0; i < mapi_num_stubs; i++) {
+ const struct mapi_stub *stub = mapi_stub_map[i];
+ int slot = stub_get_slot(stub);
+ mapi_func func = (mapi_func) procs[i];
+
+ if (!func)
+ func = table_get_func(noop, slot);
+ table_set_func(tbl, slot, func);
+ }
+}
+
+/**
+ * Make a dispatch table current.
+ */
+void
+mapi_table_make_current(const struct mapi_table *tbl)
+{
+ u_current_set(tbl);
+}
diff --git a/mesalib/src/mapi/mapi/stub.c b/mesalib/src/mapi/mapi/stub.c
index 8d9eb4c8b..99b475a3b 100644
--- a/mesalib/src/mapi/mapi/stub.c
+++ b/mesalib/src/mapi/mapi/stub.c
@@ -1,207 +1,207 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include "u_current.h"
-#include "u_thread.h"
-#include "entry.h"
-#include "stub.h"
-#include "table.h"
-
-#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
-
-struct mapi_stub {
- const void *name;
- int slot;
- mapi_func addr;
-};
-
-/* define public_string_pool and public_stubs */
-#define MAPI_TMP_PUBLIC_STUBS
-#include "mapi_tmp.h"
-
-static struct mapi_stub dynamic_stubs[MAPI_TABLE_NUM_DYNAMIC];
-static int num_dynamic_stubs;
-static int next_dynamic_slot = MAPI_TABLE_NUM_STATIC;
-
-void
-stub_init_once(void)
-{
-#ifdef PTHREADS
- static pthread_once_t once = PTHREAD_ONCE_INIT;
- pthread_once(&once, entry_patch_public);
-#else
- static int first = 1;
- if (first) {
- first = 0;
- entry_patch_public();
- }
-#endif
-}
-
-static int
-stub_compare(const void *key, const void *elem)
-{
- const char *name = (const char *) key;
- const struct mapi_stub *stub = (const struct mapi_stub *) elem;
- const char *stub_name;
-
- stub_name = &public_string_pool[(unsigned long) stub->name];
-
- return strcmp(name, stub_name);
-}
-
-/**
- * Return the public stub with the given name.
- */
-const struct mapi_stub *
-stub_find_public(const char *name)
-{
- return (const struct mapi_stub *) bsearch(name, public_stubs,
- ARRAY_SIZE(public_stubs), sizeof(public_stubs[0]), stub_compare);
-}
-
-/**
- * Add a dynamic stub.
- */
-static struct mapi_stub *
-stub_add_dynamic(const char *name)
-{
- struct mapi_stub *stub;
- int idx;
-
- idx = num_dynamic_stubs;
- /* minus 1 to make sure we can never reach the last slot */
- if (idx >= MAPI_TABLE_NUM_DYNAMIC - 1)
- return NULL;
-
- stub = &dynamic_stubs[idx];
-
- /* dispatch to the last slot, which is reserved for no-op */
- stub->addr = entry_generate(
- MAPI_TABLE_NUM_STATIC + MAPI_TABLE_NUM_DYNAMIC - 1);
- if (!stub->addr)
- return NULL;
-
- stub->name = (const void *) name;
- /* to be fixed later */
- stub->slot = -1;
-
- num_dynamic_stubs = idx + 1;
-
- return stub;
-}
-
-/**
- * Return the dynamic stub with the given name. If no such stub exists and
- * generate is true, a new stub is generated.
- */
-struct mapi_stub *
-stub_find_dynamic(const char *name, int generate)
-{
- u_mutex_declare_static(dynamic_mutex);
- struct mapi_stub *stub = NULL;
- int count, i;
-
- u_mutex_lock(dynamic_mutex);
-
- if (generate)
- assert(!stub_find_public(name));
-
- count = num_dynamic_stubs;
- for (i = 0; i < count; i++) {
- if (strcmp(name, (const char *) dynamic_stubs[i].name) == 0) {
- stub = &dynamic_stubs[i];
- break;
- }
- }
-
- /* generate a dynamic stub */
- if (generate && !stub)
- stub = stub_add_dynamic(name);
-
- u_mutex_unlock(dynamic_mutex);
-
- return stub;
-}
-
-void
-stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias)
-{
- int slot;
-
- if (stub->slot >= 0)
- return;
-
- if (alias)
- slot = alias->slot;
- else
- slot = next_dynamic_slot++;
-
- entry_patch(stub->addr, slot);
- stub->slot = slot;
-}
-
-/**
- * Return the name of a stub.
- */
-const char *
-stub_get_name(const struct mapi_stub *stub)
-{
- const char *name;
-
- if (stub >= public_stubs &&
- stub < public_stubs + ARRAY_SIZE(public_stubs))
- name = &public_string_pool[(unsigned long) stub->name];
- else
- name = (const char *) stub->name;
-
- return name;
-}
-
-/**
- * Return the slot of a stub.
- */
-int
-stub_get_slot(const struct mapi_stub *stub)
-{
- return stub->slot;
-}
-
-/**
- * Return the address of a stub.
- */
-mapi_func
-stub_get_addr(const struct mapi_stub *stub)
-{
- assert(stub->addr || (unsigned int) stub->slot < MAPI_TABLE_NUM_STATIC);
- return (stub->addr) ? stub->addr : entry_get_public(stub->slot);
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.9
+ *
+ * Copyright (C) 2010 LunarG Inc.
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors:
+ * Chia-I Wu <olv@lunarg.com>
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "u_current.h"
+#include "u_thread.h"
+#include "entry.h"
+#include "stub.h"
+#include "table.h"
+
+#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
+
+struct mapi_stub {
+ const void *name;
+ int slot;
+ mapi_func addr;
+};
+
+/* define public_string_pool and public_stubs */
+#define MAPI_TMP_PUBLIC_STUBS
+#include "mapi_tmp.h"
+
+static struct mapi_stub dynamic_stubs[MAPI_TABLE_NUM_DYNAMIC];
+static int num_dynamic_stubs;
+static int next_dynamic_slot = MAPI_TABLE_NUM_STATIC;
+
+void
+stub_init_once(void)
+{
+#ifdef PTHREADS
+ static pthread_once_t once = PTHREAD_ONCE_INIT;
+ pthread_once(&once, entry_patch_public);
+#else
+ static int first = 1;
+ if (first) {
+ first = 0;
+ entry_patch_public();
+ }
+#endif
+}
+
+static int
+stub_compare(const void *key, const void *elem)
+{
+ const char *name = (const char *) key;
+ const struct mapi_stub *stub = (const struct mapi_stub *) elem;
+ const char *stub_name;
+
+ stub_name = &public_string_pool[(unsigned long) stub->name];
+
+ return strcmp(name, stub_name);
+}
+
+/**
+ * Return the public stub with the given name.
+ */
+const struct mapi_stub *
+stub_find_public(const char *name)
+{
+ return (const struct mapi_stub *) bsearch(name, public_stubs,
+ ARRAY_SIZE(public_stubs), sizeof(public_stubs[0]), stub_compare);
+}
+
+/**
+ * Add a dynamic stub.
+ */
+static struct mapi_stub *
+stub_add_dynamic(const char *name)
+{
+ struct mapi_stub *stub;
+ int idx;
+
+ idx = num_dynamic_stubs;
+ /* minus 1 to make sure we can never reach the last slot */
+ if (idx >= MAPI_TABLE_NUM_DYNAMIC - 1)
+ return NULL;
+
+ stub = &dynamic_stubs[idx];
+
+ /* dispatch to the last slot, which is reserved for no-op */
+ stub->addr = entry_generate(
+ MAPI_TABLE_NUM_STATIC + MAPI_TABLE_NUM_DYNAMIC - 1);
+ if (!stub->addr)
+ return NULL;
+
+ stub->name = (const void *) name;
+ /* to be fixed later */
+ stub->slot = -1;
+
+ num_dynamic_stubs = idx + 1;
+
+ return stub;
+}
+
+/**
+ * Return the dynamic stub with the given name. If no such stub exists and
+ * generate is true, a new stub is generated.
+ */
+struct mapi_stub *
+stub_find_dynamic(const char *name, int generate)
+{
+ u_mutex_declare_static(dynamic_mutex);
+ struct mapi_stub *stub = NULL;
+ int count, i;
+
+ u_mutex_lock(dynamic_mutex);
+
+ if (generate)
+ assert(!stub_find_public(name));
+
+ count = num_dynamic_stubs;
+ for (i = 0; i < count; i++) {
+ if (strcmp(name, (const char *) dynamic_stubs[i].name) == 0) {
+ stub = &dynamic_stubs[i];
+ break;
+ }
+ }
+
+ /* generate a dynamic stub */
+ if (generate && !stub)
+ stub = stub_add_dynamic(name);
+
+ u_mutex_unlock(dynamic_mutex);
+
+ return stub;
+}
+
+void
+stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias)
+{
+ int slot;
+
+ if (stub->slot >= 0)
+ return;
+
+ if (alias)
+ slot = alias->slot;
+ else
+ slot = next_dynamic_slot++;
+
+ entry_patch(stub->addr, slot);
+ stub->slot = slot;
+}
+
+/**
+ * Return the name of a stub.
+ */
+const char *
+stub_get_name(const struct mapi_stub *stub)
+{
+ const char *name;
+
+ if (stub >= public_stubs &&
+ stub < public_stubs + ARRAY_SIZE(public_stubs))
+ name = &public_string_pool[(unsigned long) stub->name];
+ else
+ name = (const char *) stub->name;
+
+ return name;
+}
+
+/**
+ * Return the slot of a stub.
+ */
+int
+stub_get_slot(const struct mapi_stub *stub)
+{
+ return stub->slot;
+}
+
+/**
+ * Return the address of a stub.
+ */
+mapi_func
+stub_get_addr(const struct mapi_stub *stub)
+{
+ assert(stub->addr || (unsigned int) stub->slot < MAPI_TABLE_NUM_STATIC);
+ return (stub->addr) ? stub->addr : entry_get_public(stub->slot);
+}
diff --git a/mesalib/src/mapi/mapi/stub.h b/mesalib/src/mapi/mapi/stub.h
index 6d45bdb5a..b2b6f1839 100644
--- a/mesalib/src/mapi/mapi/stub.h
+++ b/mesalib/src/mapi/mapi/stub.h
@@ -1,57 +1,57 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#ifndef _STUB_H_
-#define _STUB_H_
-
-#include "entry.h"
-
-struct mapi_stub;
-
-void
-stub_init_once(void);
-
-const struct mapi_stub *
-stub_find_public(const char *name);
-
-struct mapi_stub *
-stub_find_dynamic(const char *name, int generate);
-
-void
-stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias);
-
-const char *
-stub_get_name(const struct mapi_stub *stub);
-
-int
-stub_get_slot(const struct mapi_stub *stub);
-
-mapi_func
-stub_get_addr(const struct mapi_stub *stub);
-
-#endif /* _STUB_H_ */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.9
+ *
+ * Copyright (C) 2010 LunarG Inc.
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors:
+ * Chia-I Wu <olv@lunarg.com>
+ */
+
+#ifndef _STUB_H_
+#define _STUB_H_
+
+#include "entry.h"
+
+struct mapi_stub;
+
+void
+stub_init_once(void);
+
+const struct mapi_stub *
+stub_find_public(const char *name);
+
+struct mapi_stub *
+stub_find_dynamic(const char *name, int generate);
+
+void
+stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias);
+
+const char *
+stub_get_name(const struct mapi_stub *stub);
+
+int
+stub_get_slot(const struct mapi_stub *stub);
+
+mapi_func
+stub_get_addr(const struct mapi_stub *stub);
+
+#endif /* _STUB_H_ */
diff --git a/mesalib/src/mapi/mapi/table.c b/mesalib/src/mapi/mapi/table.c
index df2272c98..9bb9f654a 100644
--- a/mesalib/src/mapi/mapi/table.c
+++ b/mesalib/src/mapi/mapi/table.c
@@ -1,56 +1,56 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "table.h"
-
-static void
-noop_warn(const char *name)
-{
- static int debug = -1;
-
- if (debug < 0)
- debug = (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG"));
-
- if (debug)
- fprintf(stderr, "%s is no-op\n", name);
-}
-
-static int
-noop_generic(void)
-{
- noop_warn("function");
- return 0;
-}
-
-/* define noop_array */
-#define MAPI_TMP_DEFINES
-#define MAPI_TMP_NOOP_ARRAY
-#include "mapi_tmp.h"
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.9
+ *
+ * Copyright (C) 2010 LunarG Inc.
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors:
+ * Chia-I Wu <olv@lunarg.com>
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "table.h"
+
+static void
+noop_warn(const char *name)
+{
+ static int debug = -1;
+
+ if (debug < 0)
+ debug = (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG"));
+
+ if (debug)
+ fprintf(stderr, "%s is no-op\n", name);
+}
+
+static int
+noop_generic(void)
+{
+ noop_warn("function");
+ return 0;
+}
+
+/* define noop_array */
+#define MAPI_TMP_DEFINES
+#define MAPI_TMP_NOOP_ARRAY
+#include "mapi_tmp.h"
diff --git a/mesalib/src/mapi/mapi/table.h b/mesalib/src/mapi/mapi/table.h
index a77e1ab56..d84523f77 100644
--- a/mesalib/src/mapi/mapi/table.h
+++ b/mesalib/src/mapi/mapi/table.h
@@ -1,72 +1,72 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#ifndef _TABLE_H_
-#define _TABLE_H_
-
-#include "u_compiler.h"
-#include "entry.h"
-
-#define MAPI_TMP_TABLE
-#include "mapi_tmp.h"
-
-#define MAPI_TABLE_NUM_SLOTS (MAPI_TABLE_NUM_STATIC + MAPI_TABLE_NUM_DYNAMIC)
-#define MAPI_TABLE_SIZE (MAPI_TABLE_NUM_SLOTS * sizeof(mapi_func))
-
-extern const mapi_func table_noop_array[];
-
-/**
- * Get the no-op dispatch table.
- */
-static INLINE const struct mapi_table *
-table_get_noop(void)
-{
- return (const struct mapi_table *) table_noop_array;
-}
-
-/**
- * Set the function of a slot.
- */
-static INLINE void
-table_set_func(struct mapi_table *tbl, int slot, mapi_func func)
-{
- mapi_func *funcs = (mapi_func *) tbl;
- funcs[slot] = func;
-}
-
-/**
- * Return the function of a slot.
- */
-static INLINE mapi_func
-table_get_func(const struct mapi_table *tbl, int slot)
-{
- const mapi_func *funcs = (const mapi_func *) tbl;
- return funcs[slot];
-}
-
-#endif /* _TABLE_H_ */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.9
+ *
+ * Copyright (C) 2010 LunarG Inc.
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors:
+ * Chia-I Wu <olv@lunarg.com>
+ */
+
+#ifndef _TABLE_H_
+#define _TABLE_H_
+
+#include "u_compiler.h"
+#include "entry.h"
+
+#define MAPI_TMP_TABLE
+#include "mapi_tmp.h"
+
+#define MAPI_TABLE_NUM_SLOTS (MAPI_TABLE_NUM_STATIC + MAPI_TABLE_NUM_DYNAMIC)
+#define MAPI_TABLE_SIZE (MAPI_TABLE_NUM_SLOTS * sizeof(mapi_func))
+
+extern const mapi_func table_noop_array[];
+
+/**
+ * Get the no-op dispatch table.
+ */
+static INLINE const struct mapi_table *
+table_get_noop(void)
+{
+ return (const struct mapi_table *) table_noop_array;
+}
+
+/**
+ * Set the function of a slot.
+ */
+static INLINE void
+table_set_func(struct mapi_table *tbl, int slot, mapi_func func)
+{
+ mapi_func *funcs = (mapi_func *) tbl;
+ funcs[slot] = func;
+}
+
+/**
+ * Return the function of a slot.
+ */
+static INLINE mapi_func
+table_get_func(const struct mapi_table *tbl, int slot)
+{
+ const mapi_func *funcs = (const mapi_func *) tbl;
+ return funcs[slot];
+}
+
+#endif /* _TABLE_H_ */
diff --git a/mesalib/src/mesa/.gitignore b/mesalib/src/mesa/.gitignore
new file mode 100644
index 000000000..ce83eaf47
--- /dev/null
+++ b/mesalib/src/mesa/.gitignore
@@ -0,0 +1,5 @@
+*/gen_matypes
+*/matypes.h
+depend.es*
+depend.es*
+objs-es*
diff --git a/mesalib/src/mesa/drivers/common/driverfuncs.c b/mesalib/src/mesa/drivers/common/driverfuncs.c
index ca120578d..93fa3c745 100644
--- a/mesalib/src/mesa/drivers/common/driverfuncs.c
+++ b/mesalib/src/mesa/drivers/common/driverfuncs.c
@@ -91,24 +91,14 @@ _mesa_init_driver_functions(struct dd_function_table *driver)
/* Texture functions */
driver->ChooseTextureFormat = _mesa_choose_tex_format;
- driver->TexImage1D = _mesa_store_teximage1d;
- driver->TexImage2D = _mesa_store_teximage2d;
- driver->TexImage3D = _mesa_store_teximage3d;
- driver->TexSubImage1D = _mesa_store_texsubimage1d;
- driver->TexSubImage2D = _mesa_store_texsubimage2d;
- driver->TexSubImage3D = _mesa_store_texsubimage3d;
+ driver->TexImage = _mesa_store_teximage;
+ driver->TexSubImage = _mesa_store_texsubimage;
driver->GetTexImage = _mesa_meta_GetTexImage;
- driver->CopyTexSubImage1D = _mesa_meta_CopyTexSubImage1D;
- driver->CopyTexSubImage2D = _mesa_meta_CopyTexSubImage2D;
- driver->CopyTexSubImage3D = _mesa_meta_CopyTexSubImage3D;
+ driver->CopyTexSubImage = _mesa_meta_CopyTexSubImage;
driver->GenerateMipmap = _mesa_meta_GenerateMipmap;
driver->TestProxyTexImage = _mesa_test_proxy_teximage;
- driver->CompressedTexImage1D = _mesa_store_compressed_teximage1d;
- driver->CompressedTexImage2D = _mesa_store_compressed_teximage2d;
- driver->CompressedTexImage3D = _mesa_store_compressed_teximage3d;
- driver->CompressedTexSubImage1D = _mesa_store_compressed_texsubimage1d;
- driver->CompressedTexSubImage2D = _mesa_store_compressed_texsubimage2d;
- driver->CompressedTexSubImage3D = _mesa_store_compressed_texsubimage3d;
+ driver->CompressedTexImage = _mesa_store_compressed_teximage;
+ driver->CompressedTexSubImage = _mesa_store_compressed_texsubimage;
driver->GetCompressedTexImage = _mesa_get_compressed_teximage;
driver->BindTexture = NULL;
driver->NewTextureObject = _mesa_new_texture_object;
diff --git a/mesalib/src/mesa/drivers/common/driverfuncs.h b/mesalib/src/mesa/drivers/common/driverfuncs.h
index 31549f65a..212f30742 100644
--- a/mesalib/src/mesa/drivers/common/driverfuncs.h
+++ b/mesalib/src/mesa/drivers/common/driverfuncs.h
@@ -1,37 +1,37 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef DRIVERFUNCS_H
-#define DRIVERFUNCS_H
-
-extern void
-_mesa_init_driver_functions(struct dd_function_table *driver);
-
-
-extern void
-_mesa_init_driver_state(struct gl_context *ctx);
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef DRIVERFUNCS_H
+#define DRIVERFUNCS_H
+
+extern void
+_mesa_init_driver_functions(struct dd_function_table *driver);
+
+
+extern void
+_mesa_init_driver_state(struct gl_context *ctx);
+
+
+#endif
diff --git a/mesalib/src/mesa/drivers/common/meta.c b/mesalib/src/mesa/drivers/common/meta.c
index a20e41972..8d7e90126 100644
--- a/mesalib/src/mesa/drivers/common/meta.c
+++ b/mesalib/src/mesa/drivers/common/meta.c
@@ -3117,17 +3117,15 @@ get_temp_image_type(struct gl_context *ctx, GLenum baseFormat)
* Helper for _mesa_meta_CopyTexSubImage1/2/3D() functions.
* Have to be careful with locking and meta state for pixel transfer.
*/
-static void
-copy_tex_sub_image(struct gl_context *ctx,
- GLuint dims,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset, GLint zoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y,
- GLsizei width, GLsizei height)
+void
+_mesa_meta_CopyTexSubImage(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ struct gl_renderbuffer *rb,
+ GLint x, GLint y,
+ GLsizei width, GLsizei height)
{
struct gl_texture_object *texObj = texImage->TexObject;
- const GLenum target = texObj->Target;
GLenum format, type;
GLint bpp;
void *buf;
@@ -3152,7 +3150,7 @@ copy_tex_sub_image(struct gl_context *ctx,
type = get_temp_image_type(ctx, format);
bpp = _mesa_bytes_per_pixel(format, type);
if (bpp <= 0) {
- _mesa_problem(ctx, "Bad bpp in meta copy_tex_sub_image()");
+ _mesa_problem(ctx, "Bad bpp in _mesa_meta_CopyTexSubImage()");
return;
}
@@ -3181,21 +3179,11 @@ copy_tex_sub_image(struct gl_context *ctx,
* Store texture data (with pixel transfer ops)
*/
_mesa_meta_begin(ctx, MESA_META_PIXEL_STORE);
- if (target == GL_TEXTURE_1D) {
- ctx->Driver.TexSubImage1D(ctx, texImage,
- xoffset, width,
- format, type, buf, &ctx->Unpack);
- }
- else if (target == GL_TEXTURE_3D) {
- ctx->Driver.TexSubImage3D(ctx, texImage,
- xoffset, yoffset, zoffset, width, height, 1,
- format, type, buf, &ctx->Unpack);
- }
- else {
- ctx->Driver.TexSubImage2D(ctx, texImage,
- xoffset, yoffset, width, height,
- format, type, buf, &ctx->Unpack);
- }
+
+ ctx->Driver.TexSubImage(ctx, dims, texImage,
+ xoffset, yoffset, zoffset, width, height, 1,
+ format, type, buf, &ctx->Unpack);
+
_mesa_meta_end(ctx);
_mesa_lock_texture(ctx, texObj); /* re-lock */
@@ -3204,44 +3192,6 @@ copy_tex_sub_image(struct gl_context *ctx,
}
-void
-_mesa_meta_CopyTexSubImage1D(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y, GLsizei width)
-{
- copy_tex_sub_image(ctx, 1, texImage, xoffset, 0, 0,
- rb, x, y, width, 1);
-}
-
-
-void
-_mesa_meta_CopyTexSubImage2D(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y,
- GLsizei width, GLsizei height)
-{
- copy_tex_sub_image(ctx, 2, texImage, xoffset, yoffset, 0,
- rb, x, y, width, height);
-}
-
-
-void
-_mesa_meta_CopyTexSubImage3D(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset, GLint zoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y,
- GLsizei width, GLsizei height)
-{
- copy_tex_sub_image(ctx, 3, texImage, xoffset, yoffset, zoffset,
- rb, x, y, width, height);
-}
-
-
/**
* Decompress a texture image by drawing a quad with the compressed
* texture and reading the pixels out of the color buffer.
@@ -3269,6 +3219,7 @@ decompress_texture_image(struct gl_context *ctx,
};
struct vertex verts[4];
GLuint fboDrawSave, fboReadSave;
+ GLuint rbSave;
if (slice > 0) {
assert(target == GL_TEXTURE_3D ||
@@ -3285,6 +3236,7 @@ decompress_texture_image(struct gl_context *ctx,
/* save fbo bindings (not saved by _mesa_meta_begin()) */
fboDrawSave = ctx->DrawBuffer->Name;
fboReadSave = ctx->ReadBuffer->Name;
+ rbSave = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
_mesa_meta_begin(ctx, MESA_META_ALL & ~MESA_META_PIXEL_STORE);
@@ -3305,6 +3257,7 @@ decompress_texture_image(struct gl_context *ctx,
/* alloc dest surface */
if (width > decompress->Width || height > decompress->Height) {
+ _mesa_BindRenderbufferEXT(GL_RENDERBUFFER_EXT, decompress->RBO);
_mesa_RenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGBA,
width, height);
decompress->Width = width;
@@ -3437,6 +3390,7 @@ decompress_texture_image(struct gl_context *ctx,
_mesa_BindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, fboDrawSave);
_mesa_BindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, fboReadSave);
}
+ _mesa_BindRenderbufferEXT(GL_RENDERBUFFER_EXT, rbSave);
}
diff --git a/mesalib/src/mesa/drivers/common/meta.h b/mesalib/src/mesa/drivers/common/meta.h
index de039b575..7a80b1dde 100644
--- a/mesalib/src/mesa/drivers/common/meta.h
+++ b/mesalib/src/mesa/drivers/common/meta.h
@@ -111,27 +111,12 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
struct gl_texture_object *texObj);
extern void
-_mesa_meta_CopyTexSubImage1D(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y, GLsizei width);
-
-extern void
-_mesa_meta_CopyTexSubImage2D(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y,
- GLsizei width, GLsizei height);
-
-extern void
-_mesa_meta_CopyTexSubImage3D(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset, GLint zoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y,
- GLsizei width, GLsizei height);
+_mesa_meta_CopyTexSubImage(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ struct gl_renderbuffer *rb,
+ GLint x, GLint y,
+ GLsizei width, GLsizei height);
extern void
_mesa_meta_GetTexImage(struct gl_context *ctx,
diff --git a/mesalib/src/mesa/drivers/dri/.gitignore b/mesalib/src/mesa/drivers/dri/.gitignore
new file mode 100644
index 000000000..f3c7a7c5d
--- /dev/null
+++ b/mesalib/src/mesa/drivers/dri/.gitignore
@@ -0,0 +1 @@
+Makefile
diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/.gitignore b/mesalib/src/mesa/drivers/dri/common/xmlpool/.gitignore
new file mode 100644
index 000000000..a5a437849
--- /dev/null
+++ b/mesalib/src/mesa/drivers/dri/common/xmlpool/.gitignore
@@ -0,0 +1,5 @@
+de
+es
+fr
+nl
+sv
diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/Makefile b/mesalib/src/mesa/drivers/dri/common/xmlpool/Makefile
index ae3d89938..b71629e9f 100644
--- a/mesalib/src/mesa/drivers/dri/common/xmlpool/Makefile
+++ b/mesalib/src/mesa/drivers/dri/common/xmlpool/Makefile
@@ -1,96 +1,96 @@
-# Convenient makefile for managing translations.
-
-# Prerequisites:
-# - GNU gettext
-# - Python
-
-# Adding new translations
-# -----------------------
-
-# To start working on a new translation edit the POS=... line
-# below. If you want to add for example a french translation, add
-# fr.po.
-
-# Then run "make po" to generate a fresh .po file from translatable
-# strings in t_options.h. Now you can edit the new .po file (fr.po in
-# the example above) to translate the strings. Please make sure that
-# your editor encodes the file in UTF-8.
-
-# Updating existing translations
-# ------------------------------
-
-# Run "make po" to update .po files with new translatable strings from
-# t_options.h. Now you can edit the .po files you're interested
-# in. Please make sure that your editor encodes the file in UTF-8.
-
-# Updating options.h
-# ------------------
-
-# Finally run "make" to generate options.h from t_options.h with all
-# translations. Now you can rebuild the drivers. Any common options
-# used by the drivers will have option descriptions with the latest
-# translations.
-
-# Publishing translations
-# -----------------------
-
-# To get your translation(s) into Mesa CVS, please send me your
-# <lang>.po file.
-
-# More information:
-# - info gettext
-
-# The set of supported languages. Add languages as needed.
-POS=de.po es.po nl.po fr.po sv.po
-
-#
-# Don't change anything below, unless you know what you're doing.
-#
-LANGS=$(POS:%.po=%)
-MOS=$(POS:%.po=%/LC_MESSAGES/options.mo)
-POT=xmlpool.pot
-
-.PHONY: all clean pot po mo
-
-all: options.h
-
-# Only intermediate files are cleaned up. options.h is not deleted because
-# it's in CVS.
-clean:
- -rm -f $(POT) *~
- -rm -rf $(LANGS)
-
-# Default target options.h
-options.h: t_options.h mo
- $(PYTHON2) $(PYTHON_FLAGS) gen_xmlpool.py $(LANGS) > options.h
-
-# Update .mo files from the corresponding .po files.
-mo:
- @for mo in $(MOS); do \
- lang=$${mo%%/*}; \
- echo "Updating $$mo from $$lang.po."; \
- mkdir -p $${mo%/*}; \
- msgfmt -o $$mo $$lang.po; \
- done
-
-# Use this target to create or update .po files with new messages in
-# driconf.py.
-po: $(POS)
-
-pot: $(POT)
-
-# Extract message catalog from driconf.py.
-$(POT): t_options.h
- xgettext -L C --from-code utf-8 -o $(POT) t_options.h
-
-# Create or update a .po file for a specific language.
-%.po: $(POT)
- @if [ -f $@ ]; then \
- echo "Merging new strings from $(POT) into $@."; \
- mv $@ $@~; \
- msgmerge -o $@ $@~ $(POT); \
- else \
- echo "Initializing $@ from $(POT)."; \
- msginit -i $(POT) -o $@~ --locale=$*; \
- sed -e 's/charset=.*\\n/charset=UTF-8\\n/' $@~ > $@; \
- fi
+# Convenient makefile for managing translations.
+
+# Prerequisites:
+# - GNU gettext
+# - Python
+
+# Adding new translations
+# -----------------------
+
+# To start working on a new translation edit the POS=... line
+# below. If you want to add for example a french translation, add
+# fr.po.
+
+# Then run "make po" to generate a fresh .po file from translatable
+# strings in t_options.h. Now you can edit the new .po file (fr.po in
+# the example above) to translate the strings. Please make sure that
+# your editor encodes the file in UTF-8.
+
+# Updating existing translations
+# ------------------------------
+
+# Run "make po" to update .po files with new translatable strings from
+# t_options.h. Now you can edit the .po files you're interested
+# in. Please make sure that your editor encodes the file in UTF-8.
+
+# Updating options.h
+# ------------------
+
+# Finally run "make" to generate options.h from t_options.h with all
+# translations. Now you can rebuild the drivers. Any common options
+# used by the drivers will have option descriptions with the latest
+# translations.
+
+# Publishing translations
+# -----------------------
+
+# To get your translation(s) into Mesa CVS, please send me your
+# <lang>.po file.
+
+# More information:
+# - info gettext
+
+# The set of supported languages. Add languages as needed.
+POS=de.po es.po nl.po fr.po sv.po
+
+#
+# Don't change anything below, unless you know what you're doing.
+#
+LANGS=$(POS:%.po=%)
+MOS=$(POS:%.po=%/LC_MESSAGES/options.mo)
+POT=xmlpool.pot
+
+.PHONY: all clean pot po mo
+
+all: options.h
+
+# Only intermediate files are cleaned up. options.h is not deleted because
+# it's in CVS.
+clean:
+ -rm -f $(POT) *~
+ -rm -rf $(LANGS)
+
+# Default target options.h
+options.h: t_options.h mo
+ $(PYTHON2) $(PYTHON_FLAGS) gen_xmlpool.py $(LANGS) > options.h
+
+# Update .mo files from the corresponding .po files.
+mo:
+ @for mo in $(MOS); do \
+ lang=$${mo%%/*}; \
+ echo "Updating $$mo from $$lang.po."; \
+ mkdir -p $${mo%/*}; \
+ msgfmt -o $$mo $$lang.po; \
+ done
+
+# Use this target to create or update .po files with new messages in
+# driconf.py.
+po: $(POS)
+
+pot: $(POT)
+
+# Extract message catalog from driconf.py.
+$(POT): t_options.h
+ xgettext -L C --from-code utf-8 -o $(POT) t_options.h
+
+# Create or update a .po file for a specific language.
+%.po: $(POT)
+ @if [ -f $@ ]; then \
+ echo "Merging new strings from $(POT) into $@."; \
+ mv $@ $@~; \
+ msgmerge -o $@ $@~ $(POT); \
+ else \
+ echo "Initializing $@ from $(POT)."; \
+ msginit -i $(POT) -o $@~ --locale=$*; \
+ sed -e 's/charset=.*\\n/charset=UTF-8\\n/' $@~ > $@; \
+ fi
diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py b/mesalib/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py
index f5ac5e25b..7398c4cd0 100644
--- a/mesalib/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py
+++ b/mesalib/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py
@@ -1,191 +1,191 @@
-#!/usr/bin/python
-
-import sys
-import gettext
-import re
-
-# List of supported languages
-languages = sys.argv[1:]
-
-# Escape special characters in C strings
-def escapeCString (s):
- escapeSeqs = {'\a' : '\\a', '\b' : '\\b', '\f' : '\\f', '\n' : '\\n',
- '\r' : '\\r', '\t' : '\\t', '\v' : '\\v', '\\' : '\\\\'}
- # " -> '' is a hack. Quotes (") aren't possible in XML attributes.
- # Better use Unicode characters for typographic quotes in option
- # descriptions and translations.
- i = 0
- r = ''
- while i < len(s):
- # Special case: escape double quote with \u201c or \u201d, depending
- # on whether it's an open or close quote. This is needed because plain
- # double quotes are not possible in XML attributes.
- if s[i] == '"':
- if i == len(s)-1 or s[i+1].isspace():
- # close quote
- q = u'\u201c'
- else:
- # open quote
- q = u'\u201d'
- r = r + q
- elif escapeSeqs.has_key(s[i]):
- r = r + escapeSeqs[s[i]]
- else:
- r = r + s[i]
- i = i + 1
- return r
-
-# Expand escape sequences in C strings (needed for gettext lookup)
-def expandCString (s):
- escapeSeqs = {'a' : '\a', 'b' : '\b', 'f' : '\f', 'n' : '\n',
- 'r' : '\r', 't' : '\t', 'v' : '\v',
- '"' : '"', '\\' : '\\'}
- i = 0
- escape = False
- hexa = False
- octa = False
- num = 0
- digits = 0
- r = ''
- while i < len(s):
- if not escape:
- if s[i] == '\\':
- escape = True
- else:
- r = r + s[i]
- elif hexa:
- if (s[i] >= '0' and s[i] <= '9') or \
- (s[i] >= 'a' and s[i] <= 'f') or \
- (s[i] >= 'A' and s[i] <= 'F'):
- num = num * 16 + int(s[i],16)
- digits = digits + 1
- else:
- digits = 2
- if digits >= 2:
- hexa = False
- escape = False
- r = r + chr(num)
- elif octa:
- if s[i] >= '0' and s[i] <= '7':
- num = num * 8 + int(s[i],8)
- digits = digits + 1
- else:
- digits = 3
- if digits >= 3:
- octa = False
- escape = False
- r = r + chr(num)
- else:
- if escapeSeqs.has_key(s[i]):
- r = r + escapeSeqs[s[i]]
- escape = False
- elif s[i] >= '0' and s[i] <= '7':
- octa = True
- num = int(s[i],8)
- if num <= 3:
- digits = 1
- else:
- digits = 2
- elif s[i] == 'x' or s[i] == 'X':
- hexa = True
- num = 0
- digits = 0
- else:
- r = r + s[i]
- escape = False
- i = i + 1
- return r
-
-# Expand matches. The first match is always a DESC or DESC_BEGIN match.
-# Subsequent matches are ENUM matches.
-#
-# DESC, DESC_BEGIN format: \1 \2=<lang> \3 \4=gettext(" \5=<text> \6=") \7
-# ENUM format: \1 \2=gettext(" \3=<text> \4=") \5
-def expandMatches (matches, translations, end=None):
- assert len(matches) > 0
- nTranslations = len(translations)
- i = 0
- # Expand the description+enums for all translations
- for lang,trans in translations:
- i = i + 1
- # Make sure that all but the last line of a simple description
- # are extended with a backslash.
- suffix = ''
- if len(matches) == 1 and i < len(translations) and \
- not matches[0].expand (r'\7').endswith('\\'):
- suffix = ' \\'
- # Expand the description line. Need to use ugettext in order to allow
- # non-ascii unicode chars in the original English descriptions.
- text = escapeCString (trans.ugettext (unicode (expandCString (
- matches[0].expand (r'\5')), "utf-8"))).encode("utf-8")
- print matches[0].expand (r'\1' + lang + r'\3"' + text + r'"\7') + suffix
- # Expand any subsequent enum lines
- for match in matches[1:]:
- text = escapeCString (trans.ugettext (unicode (expandCString (
- match.expand (r'\3')), "utf-8"))).encode("utf-8")
- print match.expand (r'\1"' + text + r'"\5')
-
- # Expand description end
- if end:
- print end,
-
-# Compile a list of translation classes to all supported languages.
-# The first translation is always a NullTranslations.
-translations = [("en", gettext.NullTranslations())]
-for lang in languages:
- try:
- trans = gettext.translation ("options", ".", [lang])
- except IOError:
- sys.stderr.write ("Warning: language '%s' not found.\n" % lang)
- continue
- translations.append ((lang, trans))
-
-# Regular expressions:
-reLibintl_h = re.compile (r'#\s*include\s*<libintl.h>')
-reDESC = re.compile (r'(\s*DRI_CONF_DESC\s*\(\s*)([a-z]+)(\s*,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
-reDESC_BEGIN = re.compile (r'(\s*DRI_CONF_DESC_BEGIN\s*\(\s*)([a-z]+)(\s*,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
-reENUM = re.compile (r'(\s*DRI_CONF_ENUM\s*\([^,]+,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
-reDESC_END = re.compile (r'\s*DRI_CONF_DESC_END')
-
-# Print a header
-print \
-"/***********************************************************************\n" \
-" *** THIS FILE IS GENERATED AUTOMATICALLY. DON'T EDIT! ***\n" \
-" ***********************************************************************/"
-
-# Process the options template and generate options.h with all
-# translations.
-template = file ("t_options.h", "r")
-descMatches = []
-for line in template:
- if len(descMatches) > 0:
- matchENUM = reENUM .match (line)
- matchDESC_END = reDESC_END.match (line)
- if matchENUM:
- descMatches.append (matchENUM)
- elif matchDESC_END:
- expandMatches (descMatches, translations, line)
- descMatches = []
- else:
- sys.stderr.write (
- "Warning: unexpected line inside description dropped:\n%s\n" \
- % line)
- continue
- if reLibintl_h.search (line):
- # Ignore (comment out) #include <libintl.h>
- print "/* %s * commented out by gen_xmlpool.py */" % line
- continue
- matchDESC = reDESC .match (line)
- matchDESC_BEGIN = reDESC_BEGIN.match (line)
- if matchDESC:
- assert len(descMatches) == 0
- expandMatches ([matchDESC], translations)
- elif matchDESC_BEGIN:
- assert len(descMatches) == 0
- descMatches = [matchDESC_BEGIN]
- else:
- print line,
-
-if len(descMatches) > 0:
- sys.stderr.write ("Warning: unterminated description at end of file.\n")
- expandMatches (descMatches, translations)
+#!/usr/bin/python
+
+import sys
+import gettext
+import re
+
+# List of supported languages
+languages = sys.argv[1:]
+
+# Escape special characters in C strings
+def escapeCString (s):
+ escapeSeqs = {'\a' : '\\a', '\b' : '\\b', '\f' : '\\f', '\n' : '\\n',
+ '\r' : '\\r', '\t' : '\\t', '\v' : '\\v', '\\' : '\\\\'}
+ # " -> '' is a hack. Quotes (") aren't possible in XML attributes.
+ # Better use Unicode characters for typographic quotes in option
+ # descriptions and translations.
+ i = 0
+ r = ''
+ while i < len(s):
+ # Special case: escape double quote with \u201c or \u201d, depending
+ # on whether it's an open or close quote. This is needed because plain
+ # double quotes are not possible in XML attributes.
+ if s[i] == '"':
+ if i == len(s)-1 or s[i+1].isspace():
+ # close quote
+ q = u'\u201c'
+ else:
+ # open quote
+ q = u'\u201d'
+ r = r + q
+ elif escapeSeqs.has_key(s[i]):
+ r = r + escapeSeqs[s[i]]
+ else:
+ r = r + s[i]
+ i = i + 1
+ return r
+
+# Expand escape sequences in C strings (needed for gettext lookup)
+def expandCString (s):
+ escapeSeqs = {'a' : '\a', 'b' : '\b', 'f' : '\f', 'n' : '\n',
+ 'r' : '\r', 't' : '\t', 'v' : '\v',
+ '"' : '"', '\\' : '\\'}
+ i = 0
+ escape = False
+ hexa = False
+ octa = False
+ num = 0
+ digits = 0
+ r = ''
+ while i < len(s):
+ if not escape:
+ if s[i] == '\\':
+ escape = True
+ else:
+ r = r + s[i]
+ elif hexa:
+ if (s[i] >= '0' and s[i] <= '9') or \
+ (s[i] >= 'a' and s[i] <= 'f') or \
+ (s[i] >= 'A' and s[i] <= 'F'):
+ num = num * 16 + int(s[i],16)
+ digits = digits + 1
+ else:
+ digits = 2
+ if digits >= 2:
+ hexa = False
+ escape = False
+ r = r + chr(num)
+ elif octa:
+ if s[i] >= '0' and s[i] <= '7':
+ num = num * 8 + int(s[i],8)
+ digits = digits + 1
+ else:
+ digits = 3
+ if digits >= 3:
+ octa = False
+ escape = False
+ r = r + chr(num)
+ else:
+ if escapeSeqs.has_key(s[i]):
+ r = r + escapeSeqs[s[i]]
+ escape = False
+ elif s[i] >= '0' and s[i] <= '7':
+ octa = True
+ num = int(s[i],8)
+ if num <= 3:
+ digits = 1
+ else:
+ digits = 2
+ elif s[i] == 'x' or s[i] == 'X':
+ hexa = True
+ num = 0
+ digits = 0
+ else:
+ r = r + s[i]
+ escape = False
+ i = i + 1
+ return r
+
+# Expand matches. The first match is always a DESC or DESC_BEGIN match.
+# Subsequent matches are ENUM matches.
+#
+# DESC, DESC_BEGIN format: \1 \2=<lang> \3 \4=gettext(" \5=<text> \6=") \7
+# ENUM format: \1 \2=gettext(" \3=<text> \4=") \5
+def expandMatches (matches, translations, end=None):
+ assert len(matches) > 0
+ nTranslations = len(translations)
+ i = 0
+ # Expand the description+enums for all translations
+ for lang,trans in translations:
+ i = i + 1
+ # Make sure that all but the last line of a simple description
+ # are extended with a backslash.
+ suffix = ''
+ if len(matches) == 1 and i < len(translations) and \
+ not matches[0].expand (r'\7').endswith('\\'):
+ suffix = ' \\'
+ # Expand the description line. Need to use ugettext in order to allow
+ # non-ascii unicode chars in the original English descriptions.
+ text = escapeCString (trans.ugettext (unicode (expandCString (
+ matches[0].expand (r'\5')), "utf-8"))).encode("utf-8")
+ print matches[0].expand (r'\1' + lang + r'\3"' + text + r'"\7') + suffix
+ # Expand any subsequent enum lines
+ for match in matches[1:]:
+ text = escapeCString (trans.ugettext (unicode (expandCString (
+ match.expand (r'\3')), "utf-8"))).encode("utf-8")
+ print match.expand (r'\1"' + text + r'"\5')
+
+ # Expand description end
+ if end:
+ print end,
+
+# Compile a list of translation classes to all supported languages.
+# The first translation is always a NullTranslations.
+translations = [("en", gettext.NullTranslations())]
+for lang in languages:
+ try:
+ trans = gettext.translation ("options", ".", [lang])
+ except IOError:
+ sys.stderr.write ("Warning: language '%s' not found.\n" % lang)
+ continue
+ translations.append ((lang, trans))
+
+# Regular expressions:
+reLibintl_h = re.compile (r'#\s*include\s*<libintl.h>')
+reDESC = re.compile (r'(\s*DRI_CONF_DESC\s*\(\s*)([a-z]+)(\s*,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
+reDESC_BEGIN = re.compile (r'(\s*DRI_CONF_DESC_BEGIN\s*\(\s*)([a-z]+)(\s*,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
+reENUM = re.compile (r'(\s*DRI_CONF_ENUM\s*\([^,]+,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
+reDESC_END = re.compile (r'\s*DRI_CONF_DESC_END')
+
+# Print a header
+print \
+"/***********************************************************************\n" \
+" *** THIS FILE IS GENERATED AUTOMATICALLY. DON'T EDIT! ***\n" \
+" ***********************************************************************/"
+
+# Process the options template and generate options.h with all
+# translations.
+template = file ("t_options.h", "r")
+descMatches = []
+for line in template:
+ if len(descMatches) > 0:
+ matchENUM = reENUM .match (line)
+ matchDESC_END = reDESC_END.match (line)
+ if matchENUM:
+ descMatches.append (matchENUM)
+ elif matchDESC_END:
+ expandMatches (descMatches, translations, line)
+ descMatches = []
+ else:
+ sys.stderr.write (
+ "Warning: unexpected line inside description dropped:\n%s\n" \
+ % line)
+ continue
+ if reLibintl_h.search (line):
+ # Ignore (comment out) #include <libintl.h>
+ print "/* %s * commented out by gen_xmlpool.py */" % line
+ continue
+ matchDESC = reDESC .match (line)
+ matchDESC_BEGIN = reDESC_BEGIN.match (line)
+ if matchDESC:
+ assert len(descMatches) == 0
+ expandMatches ([matchDESC], translations)
+ elif matchDESC_BEGIN:
+ assert len(descMatches) == 0
+ descMatches = [matchDESC_BEGIN]
+ else:
+ print line,
+
+if len(descMatches) > 0:
+ sys.stderr.write ("Warning: unterminated description at end of file.\n")
+ expandMatches (descMatches, translations)
diff --git a/mesalib/src/mesa/drivers/dri/swrast/.gitignore b/mesalib/src/mesa/drivers/dri/swrast/.gitignore
new file mode 100644
index 000000000..f3c7a7c5d
--- /dev/null
+++ b/mesalib/src/mesa/drivers/dri/swrast/.gitignore
@@ -0,0 +1 @@
+Makefile
diff --git a/mesalib/src/mesa/gl.pc.in b/mesalib/src/mesa/gl.pc.in
index 616819063..2d3bc917e 100644
--- a/mesalib/src/mesa/gl.pc.in
+++ b/mesalib/src/mesa/gl.pc.in
@@ -1,13 +1,13 @@
-prefix=@INSTALL_DIR@
-exec_prefix=${prefix}
-libdir=@INSTALL_LIB_DIR@
-includedir=@INSTALL_INC_DIR@
-
-Name: gl
-Description: Mesa OpenGL library
-Requires.private: @GL_PC_REQ_PRIV@
-Version: @VERSION@
-Libs: -L${libdir} -l@GL_LIB@
-Libs.private: @GL_PC_LIB_PRIV@
-Cflags: -I${includedir} @GL_PC_CFLAGS@
-glx_tls: @GLX_TLS@
+prefix=@INSTALL_DIR@
+exec_prefix=${prefix}
+libdir=@INSTALL_LIB_DIR@
+includedir=@INSTALL_INC_DIR@
+
+Name: gl
+Description: Mesa OpenGL library
+Requires.private: @GL_PC_REQ_PRIV@
+Version: @VERSION@
+Libs: -L${libdir} -l@GL_LIB@
+Libs.private: @GL_PC_LIB_PRIV@
+Cflags: -I${includedir} @GL_PC_CFLAGS@
+glx_tls: @GLX_TLS@
diff --git a/mesalib/src/mesa/main/.gitignore b/mesalib/src/mesa/main/.gitignore
index cf1dd8b8b..6204321dd 100644
--- a/mesalib/src/mesa/main/.gitignore
+++ b/mesalib/src/mesa/main/.gitignore
@@ -1,3 +1,14 @@
+api_exec_es1.c
+api_exec_es2.c
dispatch.h
enums.c
+get_es1.c
+get_es2.c
+git_sha1.h
+git_sha1.h.tmp
+api_exec_es1_dispatch.h
+api_exec_es1_remap_helper.h
+api_exec_es2_dispatch.h
+api_exec_es2_remap_helper.h
+remap_helper.h
glapitable.h
diff --git a/mesalib/src/mesa/main/api_loopback.c b/mesalib/src/mesa/main/api_loopback.c
index fb9d781f7..c438307d8 100644
--- a/mesalib/src/mesa/main/api_loopback.c
+++ b/mesalib/src/mesa/main/api_loopback.c
@@ -1,1725 +1,1725 @@
-/**
- * \file api_loopback.c
- *
- * \author Keith Whitwell <keith@tungstengraphics.com>
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 6.3
- *
- * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#include "glheader.h"
-#include "macros.h"
-#include "api_loopback.h"
-#include "mtypes.h"
-#include "glapi/glapi.h"
-#include "glapi/glthread.h"
-#include "main/dispatch.h"
-#include "mfeatures.h"
-
-/* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
- * calls to a smaller set of driver-provided formats. Currently just
- * go back to dispatch to find these (eg. call glNormal3f directly),
- * hence 'loopback'.
- *
- * The driver must supply all of the remaining entry points, which are
- * listed in dd.h. The easiest way for a driver to do this is to
- * install the supplied software t&l module.
- */
-#define COLORF(r,g,b,a) CALL_Color4f(GET_DISPATCH(), (r,g,b,a))
-#define VERTEX2(x,y) CALL_Vertex2f(GET_DISPATCH(), (x,y))
-#define VERTEX3(x,y,z) CALL_Vertex3f(GET_DISPATCH(), (x,y,z))
-#define VERTEX4(x,y,z,w) CALL_Vertex4f(GET_DISPATCH(), (x,y,z,w))
-#define NORMAL(x,y,z) CALL_Normal3f(GET_DISPATCH(), (x,y,z))
-#define TEXCOORD1(s) CALL_TexCoord1f(GET_DISPATCH(), (s))
-#define TEXCOORD2(s,t) CALL_TexCoord2f(GET_DISPATCH(), (s,t))
-#define TEXCOORD3(s,t,u) CALL_TexCoord3f(GET_DISPATCH(), (s,t,u))
-#define TEXCOORD4(s,t,u,v) CALL_TexCoord4f(GET_DISPATCH(), (s,t,u,v))
-#define INDEX(c) CALL_Indexf(GET_DISPATCH(), (c))
-#define MULTI_TEXCOORD1(z,s) CALL_MultiTexCoord1fARB(GET_DISPATCH(), (z,s))
-#define MULTI_TEXCOORD2(z,s,t) CALL_MultiTexCoord2fARB(GET_DISPATCH(), (z,s,t))
-#define MULTI_TEXCOORD3(z,s,t,u) CALL_MultiTexCoord3fARB(GET_DISPATCH(), (z,s,t,u))
-#define MULTI_TEXCOORD4(z,s,t,u,v) CALL_MultiTexCoord4fARB(GET_DISPATCH(), (z,s,t,u,v))
-#define EVALCOORD1(x) CALL_EvalCoord1f(GET_DISPATCH(), (x))
-#define EVALCOORD2(x,y) CALL_EvalCoord2f(GET_DISPATCH(), (x,y))
-#define MATERIALFV(a,b,c) CALL_Materialfv(GET_DISPATCH(), (a,b,c))
-#define RECTF(a,b,c,d) CALL_Rectf(GET_DISPATCH(), (a,b,c,d))
-
-#define FOGCOORDF(x) CALL_FogCoordfEXT(GET_DISPATCH(), (x))
-#define SECONDARYCOLORF(a,b,c) CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c))
-
-#define ATTRIB1NV(index,x) CALL_VertexAttrib1fNV(GET_DISPATCH(), (index,x))
-#define ATTRIB2NV(index,x,y) CALL_VertexAttrib2fNV(GET_DISPATCH(), (index,x,y))
-#define ATTRIB3NV(index,x,y,z) CALL_VertexAttrib3fNV(GET_DISPATCH(), (index,x,y,z))
-#define ATTRIB4NV(index,x,y,z,w) CALL_VertexAttrib4fNV(GET_DISPATCH(), (index,x,y,z,w))
-
-#define ATTRIB1ARB(index,x) CALL_VertexAttrib1fARB(GET_DISPATCH(), (index,x))
-#define ATTRIB2ARB(index,x,y) CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,x,y))
-#define ATTRIB3ARB(index,x,y,z) CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,x,y,z))
-#define ATTRIB4ARB(index,x,y,z,w) CALL_VertexAttrib4fARB(GET_DISPATCH(), (index,x,y,z,w))
-
-#define ATTRIBI_1I(index,x) CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index,x))
-#define ATTRIBI_1UI(index,x) CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index,x))
-#define ATTRIBI_4I(index,x,y,z,w) CALL_VertexAttribI4iEXT(GET_DISPATCH(), (index,x,y,z,w))
-
-#define ATTRIBI_4UI(index,x,y,z,w) CALL_VertexAttribI4uiEXT(GET_DISPATCH(), (index,x,y,z,w))
-
-
-#if FEATURE_beginend
-
-
-static void GLAPIENTRY
-loopback_Color3b_f( GLbyte red, GLbyte green, GLbyte blue )
-{
- COLORF( BYTE_TO_FLOAT(red),
- BYTE_TO_FLOAT(green),
- BYTE_TO_FLOAT(blue),
- 1.0 );
-}
-
-static void GLAPIENTRY
-loopback_Color3d_f( GLdouble red, GLdouble green, GLdouble blue )
-{
- COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0 );
-}
-
-static void GLAPIENTRY
-loopback_Color3i_f( GLint red, GLint green, GLint blue )
-{
- COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
- INT_TO_FLOAT(blue), 1.0);
-}
-
-static void GLAPIENTRY
-loopback_Color3s_f( GLshort red, GLshort green, GLshort blue )
-{
- COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
- SHORT_TO_FLOAT(blue), 1.0);
-}
-
-static void GLAPIENTRY
-loopback_Color3ui_f( GLuint red, GLuint green, GLuint blue )
-{
- COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
- UINT_TO_FLOAT(blue), 1.0 );
-}
-
-static void GLAPIENTRY
-loopback_Color3us_f( GLushort red, GLushort green, GLushort blue )
-{
- COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
- USHORT_TO_FLOAT(blue), 1.0 );
-}
-
-static void GLAPIENTRY
-loopback_Color3ub_f( GLubyte red, GLubyte green, GLubyte blue )
-{
- COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
- UBYTE_TO_FLOAT(blue), 1.0 );
-}
-
-
-static void GLAPIENTRY
-loopback_Color3bv_f( const GLbyte *v )
-{
- COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
- BYTE_TO_FLOAT(v[2]), 1.0 );
-}
-
-static void GLAPIENTRY
-loopback_Color3dv_f( const GLdouble *v )
-{
- COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0 );
-}
-
-static void GLAPIENTRY
-loopback_Color3iv_f( const GLint *v )
-{
- COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
- INT_TO_FLOAT(v[2]), 1.0 );
-}
-
-static void GLAPIENTRY
-loopback_Color3sv_f( const GLshort *v )
-{
- COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
- SHORT_TO_FLOAT(v[2]), 1.0 );
-}
-
-static void GLAPIENTRY
-loopback_Color3uiv_f( const GLuint *v )
-{
- COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
- UINT_TO_FLOAT(v[2]), 1.0 );
-}
-
-static void GLAPIENTRY
-loopback_Color3usv_f( const GLushort *v )
-{
- COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
- USHORT_TO_FLOAT(v[2]), 1.0 );
-}
-
-static void GLAPIENTRY
-loopback_Color3ubv_f( const GLubyte *v )
-{
- COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
- UBYTE_TO_FLOAT(v[2]), 1.0 );
-}
-
-
-static void GLAPIENTRY
-loopback_Color4b_f( GLbyte red, GLbyte green, GLbyte blue,
- GLbyte alpha )
-{
- COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green),
- BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) );
-}
-
-static void GLAPIENTRY
-loopback_Color4d_f( GLdouble red, GLdouble green, GLdouble blue,
- GLdouble alpha )
-{
- COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha );
-}
-
-static void GLAPIENTRY
-loopback_Color4i_f( GLint red, GLint green, GLint blue, GLint alpha )
-{
- COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
- INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) );
-}
-
-static void GLAPIENTRY
-loopback_Color4s_f( GLshort red, GLshort green, GLshort blue,
- GLshort alpha )
-{
- COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
- SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) );
-}
-
-static void GLAPIENTRY
-loopback_Color4ui_f( GLuint red, GLuint green, GLuint blue, GLuint alpha )
-{
- COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
- UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) );
-}
-
-static void GLAPIENTRY
-loopback_Color4us_f( GLushort red, GLushort green, GLushort blue, GLushort alpha )
-{
- COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
- USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) );
-}
-
-static void GLAPIENTRY
-loopback_Color4ub_f( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha )
-{
- COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
- UBYTE_TO_FLOAT(blue), UBYTE_TO_FLOAT(alpha) );
-}
-
-
-static void GLAPIENTRY
-loopback_Color4iv_f( const GLint *v )
-{
- COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
- INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
-}
-
-
-static void GLAPIENTRY
-loopback_Color4bv_f( const GLbyte *v )
-{
- COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
- BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) );
-}
-
-static void GLAPIENTRY
-loopback_Color4dv_f( const GLdouble *v )
-{
- COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3] );
-}
-
-
-static void GLAPIENTRY
-loopback_Color4sv_f( const GLshort *v)
-{
- COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
- SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) );
-}
-
-
-static void GLAPIENTRY
-loopback_Color4uiv_f( const GLuint *v)
-{
- COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
- UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) );
-}
-
-static void GLAPIENTRY
-loopback_Color4usv_f( const GLushort *v)
-{
- COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
- USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) );
-}
-
-static void GLAPIENTRY
-loopback_Color4ubv_f( const GLubyte *v)
-{
- COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
- UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]) );
-}
-
-
-static void GLAPIENTRY
-loopback_FogCoorddEXT( GLdouble d )
-{
- FOGCOORDF( (GLfloat) d );
-}
-
-static void GLAPIENTRY
-loopback_FogCoorddvEXT( const GLdouble *v )
-{
- FOGCOORDF( (GLfloat) *v );
-}
-
-
-static void GLAPIENTRY
-loopback_Indexd( GLdouble c )
-{
- INDEX( (GLfloat) c );
-}
-
-static void GLAPIENTRY
-loopback_Indexi( GLint c )
-{
- INDEX( (GLfloat) c );
-}
-
-static void GLAPIENTRY
-loopback_Indexs( GLshort c )
-{
- INDEX( (GLfloat) c );
-}
-
-static void GLAPIENTRY
-loopback_Indexub( GLubyte c )
-{
- INDEX( (GLfloat) c );
-}
-
-static void GLAPIENTRY
-loopback_Indexdv( const GLdouble *c )
-{
- INDEX( (GLfloat) *c );
-}
-
-static void GLAPIENTRY
-loopback_Indexiv( const GLint *c )
-{
- INDEX( (GLfloat) *c );
-}
-
-static void GLAPIENTRY
-loopback_Indexsv( const GLshort *c )
-{
- INDEX( (GLfloat) *c );
-}
-
-static void GLAPIENTRY
-loopback_Indexubv( const GLubyte *c )
-{
- INDEX( (GLfloat) *c );
-}
-
-
-static void GLAPIENTRY
-loopback_EdgeFlagv(const GLboolean *flag)
-{
- CALL_EdgeFlag(GET_DISPATCH(), (*flag));
-}
-
-
-static void GLAPIENTRY
-loopback_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz )
-{
- NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) );
-}
-
-static void GLAPIENTRY
-loopback_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz )
-{
- NORMAL((GLfloat) nx, (GLfloat) ny, (GLfloat) nz);
-}
-
-static void GLAPIENTRY
-loopback_Normal3i( GLint nx, GLint ny, GLint nz )
-{
- NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) );
-}
-
-static void GLAPIENTRY
-loopback_Normal3s( GLshort nx, GLshort ny, GLshort nz )
-{
- NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) );
-}
-
-static void GLAPIENTRY
-loopback_Normal3bv( const GLbyte *v )
-{
- NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) );
-}
-
-static void GLAPIENTRY
-loopback_Normal3dv( const GLdouble *v )
-{
- NORMAL( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
-}
-
-static void GLAPIENTRY
-loopback_Normal3iv( const GLint *v )
-{
- NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) );
-}
-
-static void GLAPIENTRY
-loopback_Normal3sv( const GLshort *v )
-{
- NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) );
-}
-
-static void GLAPIENTRY
-loopback_TexCoord1d( GLdouble s )
-{
- TEXCOORD1((GLfloat) s);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord1i( GLint s )
-{
- TEXCOORD1((GLfloat) s);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord1s( GLshort s )
-{
- TEXCOORD1((GLfloat) s);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord2d( GLdouble s, GLdouble t )
-{
- TEXCOORD2((GLfloat) s,(GLfloat) t);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord2s( GLshort s, GLshort t )
-{
- TEXCOORD2((GLfloat) s,(GLfloat) t);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord2i( GLint s, GLint t )
-{
- TEXCOORD2((GLfloat) s,(GLfloat) t);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord3d( GLdouble s, GLdouble t, GLdouble r )
-{
- TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord3i( GLint s, GLint t, GLint r )
-{
- TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord3s( GLshort s, GLshort t, GLshort r )
-{
- TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q )
-{
- TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord4i( GLint s, GLint t, GLint r, GLint q )
-{
- TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q )
-{
- TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord1dv( const GLdouble *v )
-{
- TEXCOORD1((GLfloat) v[0]);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord1iv( const GLint *v )
-{
- TEXCOORD1((GLfloat) v[0]);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord1sv( const GLshort *v )
-{
- TEXCOORD1((GLfloat) v[0]);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord2dv( const GLdouble *v )
-{
- TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord2iv( const GLint *v )
-{
- TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord2sv( const GLshort *v )
-{
- TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord3dv( const GLdouble *v )
-{
- TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord3iv( const GLint *v )
-{
- TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord3sv( const GLshort *v )
-{
- TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord4dv( const GLdouble *v )
-{
- TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord4iv( const GLint *v )
-{
- TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-loopback_TexCoord4sv( const GLshort *v )
-{
- TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-loopback_Vertex2d( GLdouble x, GLdouble y )
-{
- VERTEX2( (GLfloat) x, (GLfloat) y );
-}
-
-static void GLAPIENTRY
-loopback_Vertex2i( GLint x, GLint y )
-{
- VERTEX2( (GLfloat) x, (GLfloat) y );
-}
-
-static void GLAPIENTRY
-loopback_Vertex2s( GLshort x, GLshort y )
-{
- VERTEX2( (GLfloat) x, (GLfloat) y );
-}
-
-static void GLAPIENTRY
-loopback_Vertex3d( GLdouble x, GLdouble y, GLdouble z )
-{
- VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
-}
-
-static void GLAPIENTRY
-loopback_Vertex3i( GLint x, GLint y, GLint z )
-{
- VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
-}
-
-static void GLAPIENTRY
-loopback_Vertex3s( GLshort x, GLshort y, GLshort z )
-{
- VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
-}
-
-static void GLAPIENTRY
-loopback_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )
-{
- VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
-}
-
-static void GLAPIENTRY
-loopback_Vertex4i( GLint x, GLint y, GLint z, GLint w )
-{
- VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
-}
-
-static void GLAPIENTRY
-loopback_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w )
-{
- VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
-}
-
-static void GLAPIENTRY
-loopback_Vertex2dv( const GLdouble *v )
-{
- VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
-}
-
-static void GLAPIENTRY
-loopback_Vertex2iv( const GLint *v )
-{
- VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
-}
-
-static void GLAPIENTRY
-loopback_Vertex2sv( const GLshort *v )
-{
- VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
-}
-
-static void GLAPIENTRY
-loopback_Vertex3dv( const GLdouble *v )
-{
- VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
-}
-
-static void GLAPIENTRY
-loopback_Vertex3iv( const GLint *v )
-{
- VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
-}
-
-static void GLAPIENTRY
-loopback_Vertex3sv( const GLshort *v )
-{
- VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
-}
-
-static void GLAPIENTRY
-loopback_Vertex4dv( const GLdouble *v )
-{
- VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3] );
-}
-
-static void GLAPIENTRY
-loopback_Vertex4iv( const GLint *v )
-{
- VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3] );
-}
-
-static void GLAPIENTRY
-loopback_Vertex4sv( const GLshort *v )
-{
- VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord1dARB(GLenum target, GLdouble s)
-{
- MULTI_TEXCOORD1( target, (GLfloat) s );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord1dvARB(GLenum target, const GLdouble *v)
-{
- MULTI_TEXCOORD1( target, (GLfloat) v[0] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord1iARB(GLenum target, GLint s)
-{
- MULTI_TEXCOORD1( target, (GLfloat) s );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord1ivARB(GLenum target, const GLint *v)
-{
- MULTI_TEXCOORD1( target, (GLfloat) v[0] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord1sARB(GLenum target, GLshort s)
-{
- MULTI_TEXCOORD1( target, (GLfloat) s );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord1svARB(GLenum target, const GLshort *v)
-{
- MULTI_TEXCOORD1( target, (GLfloat) v[0] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)
-{
- MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord2dvARB(GLenum target, const GLdouble *v)
-{
- MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord2iARB(GLenum target, GLint s, GLint t)
-{
- MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord2ivARB(GLenum target, const GLint *v)
-{
- MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)
-{
- MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord2svARB(GLenum target, const GLshort *v)
-{
- MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r)
-{
- MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord3dvARB(GLenum target, const GLdouble *v)
-{
- MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)
-{
- MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord3ivARB(GLenum target, const GLint *v)
-{
- MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r)
-{
- MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord3svARB(GLenum target, const GLshort *v)
-{
- MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
-{
- MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
- (GLfloat) r, (GLfloat) q );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord4dvARB(GLenum target, const GLdouble *v)
-{
- MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q)
-{
- MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
- (GLfloat) r, (GLfloat) q );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord4ivARB(GLenum target, const GLint *v)
-{
- MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3] );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
-{
- MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
- (GLfloat) r, (GLfloat) q );
-}
-
-static void GLAPIENTRY
-loopback_MultiTexCoord4svARB(GLenum target, const GLshort *v)
-{
- MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3] );
-}
-
-static void GLAPIENTRY
-loopback_EvalCoord2dv( const GLdouble *u )
-{
- EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] );
-}
-
-static void GLAPIENTRY
-loopback_EvalCoord2fv( const GLfloat *u )
-{
- EVALCOORD2( u[0], u[1] );
-}
-
-static void GLAPIENTRY
-loopback_EvalCoord2d( GLdouble u, GLdouble v )
-{
- EVALCOORD2( (GLfloat) u, (GLfloat) v );
-}
-
-static void GLAPIENTRY
-loopback_EvalCoord1dv( const GLdouble *u )
-{
- EVALCOORD1( (GLfloat) *u );
-}
-
-static void GLAPIENTRY
-loopback_EvalCoord1fv( const GLfloat *u )
-{
- EVALCOORD1( (GLfloat) *u );
-}
-
-static void GLAPIENTRY
-loopback_EvalCoord1d( GLdouble u )
-{
- EVALCOORD1( (GLfloat) u );
-}
-
-static void GLAPIENTRY
-loopback_Materialf( GLenum face, GLenum pname, GLfloat param )
-{
- GLfloat fparam[4];
- fparam[0] = param;
- MATERIALFV( face, pname, fparam );
-}
-
-static void GLAPIENTRY
-loopback_Materiali(GLenum face, GLenum pname, GLint param )
-{
- GLfloat p = (GLfloat) param;
- MATERIALFV(face, pname, &p);
-}
-
-static void GLAPIENTRY
-loopback_Materialiv(GLenum face, GLenum pname, const GLint *params )
-{
- GLfloat fparam[4];
- switch (pname) {
- case GL_AMBIENT:
- case GL_DIFFUSE:
- case GL_SPECULAR:
- case GL_EMISSION:
- case GL_AMBIENT_AND_DIFFUSE:
- fparam[0] = INT_TO_FLOAT( params[0] );
- fparam[1] = INT_TO_FLOAT( params[1] );
- fparam[2] = INT_TO_FLOAT( params[2] );
- fparam[3] = INT_TO_FLOAT( params[3] );
- break;
- case GL_SHININESS:
- fparam[0] = (GLfloat) params[0];
- break;
- case GL_COLOR_INDEXES:
- fparam[0] = (GLfloat) params[0];
- fparam[1] = (GLfloat) params[1];
- fparam[2] = (GLfloat) params[2];
- break;
- default:
- ;
- }
- MATERIALFV(face, pname, fparam);
-}
-
-
-static void GLAPIENTRY
-loopback_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
-{
- RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
-}
-
-static void GLAPIENTRY
-loopback_Rectdv(const GLdouble *v1, const GLdouble *v2)
-{
- RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
-}
-
-static void GLAPIENTRY
-loopback_Rectfv(const GLfloat *v1, const GLfloat *v2)
-{
- RECTF(v1[0], v1[1], v2[0], v2[1]);
-}
-
-static void GLAPIENTRY
-loopback_Recti(GLint x1, GLint y1, GLint x2, GLint y2)
-{
- RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
-}
-
-static void GLAPIENTRY
-loopback_Rectiv(const GLint *v1, const GLint *v2)
-{
- RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
-}
-
-static void GLAPIENTRY
-loopback_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
-{
- RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
-}
-
-static void GLAPIENTRY
-loopback_Rectsv(const GLshort *v1, const GLshort *v2)
-{
- RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3bEXT_f( GLbyte red, GLbyte green, GLbyte blue )
-{
- SECONDARYCOLORF( BYTE_TO_FLOAT(red),
- BYTE_TO_FLOAT(green),
- BYTE_TO_FLOAT(blue) );
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3dEXT_f( GLdouble red, GLdouble green, GLdouble blue )
-{
- SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue );
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3iEXT_f( GLint red, GLint green, GLint blue )
-{
- SECONDARYCOLORF( INT_TO_FLOAT(red),
- INT_TO_FLOAT(green),
- INT_TO_FLOAT(blue));
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3sEXT_f( GLshort red, GLshort green, GLshort blue )
-{
- SECONDARYCOLORF(SHORT_TO_FLOAT(red),
- SHORT_TO_FLOAT(green),
- SHORT_TO_FLOAT(blue));
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3uiEXT_f( GLuint red, GLuint green, GLuint blue )
-{
- SECONDARYCOLORF(UINT_TO_FLOAT(red),
- UINT_TO_FLOAT(green),
- UINT_TO_FLOAT(blue));
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3usEXT_f( GLushort red, GLushort green, GLushort blue )
-{
- SECONDARYCOLORF(USHORT_TO_FLOAT(red),
- USHORT_TO_FLOAT(green),
- USHORT_TO_FLOAT(blue));
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3ubEXT_f( GLubyte red, GLubyte green, GLubyte blue )
-{
- SECONDARYCOLORF(UBYTE_TO_FLOAT(red),
- UBYTE_TO_FLOAT(green),
- UBYTE_TO_FLOAT(blue));
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3bvEXT_f( const GLbyte *v )
-{
- SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]),
- BYTE_TO_FLOAT(v[1]),
- BYTE_TO_FLOAT(v[2]));
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3dvEXT_f( const GLdouble *v )
-{
- SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
-}
-static void GLAPIENTRY
-loopback_SecondaryColor3ivEXT_f( const GLint *v )
-{
- SECONDARYCOLORF(INT_TO_FLOAT(v[0]),
- INT_TO_FLOAT(v[1]),
- INT_TO_FLOAT(v[2]));
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3svEXT_f( const GLshort *v )
-{
- SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]),
- SHORT_TO_FLOAT(v[1]),
- SHORT_TO_FLOAT(v[2]));
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3uivEXT_f( const GLuint *v )
-{
- SECONDARYCOLORF(UINT_TO_FLOAT(v[0]),
- UINT_TO_FLOAT(v[1]),
- UINT_TO_FLOAT(v[2]));
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3usvEXT_f( const GLushort *v )
-{
- SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]),
- USHORT_TO_FLOAT(v[1]),
- USHORT_TO_FLOAT(v[2]));
-}
-
-static void GLAPIENTRY
-loopback_SecondaryColor3ubvEXT_f( const GLubyte *v )
-{
- SECONDARYCOLORF(UBYTE_TO_FLOAT(v[0]),
- UBYTE_TO_FLOAT(v[1]),
- UBYTE_TO_FLOAT(v[2]));
-}
-
-
-/*
- * GL_NV_vertex_program:
- * Always loop-back to one of the VertexAttrib[1234]f[v]NV functions.
- * Note that attribute indexes DO alias conventional vertex attributes.
- */
-
-static void GLAPIENTRY
-loopback_VertexAttrib1sNV(GLuint index, GLshort x)
-{
- ATTRIB1NV(index, (GLfloat) x);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib1dNV(GLuint index, GLdouble x)
-{
- ATTRIB1NV(index, (GLfloat) x);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y)
-{
- ATTRIB2NV(index, (GLfloat) x, y);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
-{
- ATTRIB2NV(index, (GLfloat) x, (GLfloat) y);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)
-{
- ATTRIB3NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)
-{
- ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
-{
- ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
- ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
-{
- ATTRIB4NV(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
- UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib1svNV(GLuint index, const GLshort *v)
-{
- ATTRIB1NV(index, (GLfloat) v[0]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib1dvNV(GLuint index, const GLdouble *v)
-{
- ATTRIB1NV(index, (GLfloat) v[0]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib2svNV(GLuint index, const GLshort *v)
-{
- ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib2dvNV(GLuint index, const GLdouble *v)
-{
- ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib3svNV(GLuint index, const GLshort *v)
-{
- ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib3dvNV(GLuint index, const GLdouble *v)
-{
- ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4svNV(GLuint index, const GLshort *v)
-{
- ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
- (GLfloat)v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4dvNV(GLuint index, const GLdouble *v)
-{
- ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
-{
- ATTRIB4NV(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
- UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
-}
-
-
-static void GLAPIENTRY
-loopback_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- loopback_VertexAttrib1svNV(index + i, v + i);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- ATTRIB1NV(index + i, v[i]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- loopback_VertexAttrib1dvNV(index + i, v + i);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- loopback_VertexAttrib2svNV(index + i, v + 2 * i);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- ATTRIB2NV(index + i, v[2 * i], v[2 * i + 1]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- loopback_VertexAttrib2dvNV(index + i, v + 2 * i);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- loopback_VertexAttrib3svNV(index + i, v + 3 * i);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- ATTRIB3NV(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- loopback_VertexAttrib3dvNV(index + i, v + 3 * i);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- loopback_VertexAttrib4svNV(index + i, v + 4 * i);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- ATTRIB4NV(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- loopback_VertexAttrib4dvNV(index + i, v + 4 * i);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
-{
- GLint i;
- for (i = n - 1; i >= 0; i--)
- loopback_VertexAttrib4ubvNV(index + i, v + 4 * i);
-}
-
-
-/*
- * GL_ARB_vertex_program
- * Always loop-back to one of the VertexAttrib[1234]f[v]ARB functions.
- * Note that attribute indexes do NOT alias conventional attributes.
- */
-
-static void GLAPIENTRY
-loopback_VertexAttrib1sARB(GLuint index, GLshort x)
-{
- ATTRIB1ARB(index, (GLfloat) x);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib1dARB(GLuint index, GLdouble x)
-{
- ATTRIB1ARB(index, (GLfloat) x);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib2sARB(GLuint index, GLshort x, GLshort y)
-{
- ATTRIB2ARB(index, (GLfloat) x, y);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y)
-{
- ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z)
-{
- ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z)
-{
- ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
-{
- ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
- ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib1svARB(GLuint index, const GLshort *v)
-{
- ATTRIB1ARB(index, (GLfloat) v[0]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib1dvARB(GLuint index, const GLdouble *v)
-{
- ATTRIB1ARB(index, (GLfloat) v[0]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib2svARB(GLuint index, const GLshort *v)
-{
- ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib2dvARB(GLuint index, const GLdouble *v)
-{
- ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib3svARB(GLuint index, const GLshort *v)
-{
- ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib3dvARB(GLuint index, const GLdouble *v)
-{
- ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4svARB(GLuint index, const GLshort *v)
-{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
- (GLfloat)v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4dvARB(GLuint index, const GLdouble *v)
-{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4bvARB(GLuint index, const GLbyte * v)
-{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4ivARB(GLuint index, const GLint * v)
-{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4ubvARB(GLuint index, const GLubyte * v)
-{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4usvARB(GLuint index, const GLushort * v)
-{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4uivARB(GLuint index, const GLuint * v)
-{
- ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4NbvARB(GLuint index, const GLbyte * v)
-{
- ATTRIB4ARB(index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
- BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4NsvARB(GLuint index, const GLshort * v)
-{
- ATTRIB4ARB(index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
- SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4NivARB(GLuint index, const GLint * v)
-{
- ATTRIB4ARB(index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
- INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
-{
- ATTRIB4ARB(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
- UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4NubvARB(GLuint index, const GLubyte * v)
-{
- ATTRIB4ARB(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
- UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4NusvARB(GLuint index, const GLushort * v)
-{
- ATTRIB4ARB(index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
- USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
-}
-
-static void GLAPIENTRY
-loopback_VertexAttrib4NuivARB(GLuint index, const GLuint * v)
-{
- ATTRIB4ARB(index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
- UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
-}
-
-
-
-/**
- * GL_EXT_gpu_shader / GL 3.0 signed/unsigned integer-valued attributes.
- * Note that attribute indexes do NOT alias conventional attributes.
- */
-
-static void GLAPIENTRY
-loopback_VertexAttribI1iv(GLuint index, const GLint *v)
-{
- ATTRIBI_1I(index, v[0]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI1uiv(GLuint index, const GLuint *v)
-{
- ATTRIBI_1UI(index, v[0]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4bv(GLuint index, const GLbyte *v)
-{
- ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4sv(GLuint index, const GLshort *v)
-{
- ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4ubv(GLuint index, const GLubyte *v)
-{
- ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
-}
-
-static void GLAPIENTRY
-loopback_VertexAttribI4usv(GLuint index, const GLushort *v)
-{
- ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
-}
-
-
-
-
-/*
- * This code never registers handlers for any of the entry points
- * listed in vtxfmt.h.
- */
-void
-_mesa_loopback_init_api_table( struct _glapi_table *dest )
-{
- SET_Color3b(dest, loopback_Color3b_f);
- SET_Color3d(dest, loopback_Color3d_f);
- SET_Color3i(dest, loopback_Color3i_f);
- SET_Color3s(dest, loopback_Color3s_f);
- SET_Color3ui(dest, loopback_Color3ui_f);
- SET_Color3us(dest, loopback_Color3us_f);
- SET_Color3ub(dest, loopback_Color3ub_f);
- SET_Color4b(dest, loopback_Color4b_f);
- SET_Color4d(dest, loopback_Color4d_f);
- SET_Color4i(dest, loopback_Color4i_f);
- SET_Color4s(dest, loopback_Color4s_f);
- SET_Color4ui(dest, loopback_Color4ui_f);
- SET_Color4us(dest, loopback_Color4us_f);
- SET_Color4ub(dest, loopback_Color4ub_f);
- SET_Color3bv(dest, loopback_Color3bv_f);
- SET_Color3dv(dest, loopback_Color3dv_f);
- SET_Color3iv(dest, loopback_Color3iv_f);
- SET_Color3sv(dest, loopback_Color3sv_f);
- SET_Color3uiv(dest, loopback_Color3uiv_f);
- SET_Color3usv(dest, loopback_Color3usv_f);
- SET_Color3ubv(dest, loopback_Color3ubv_f);
- SET_Color4bv(dest, loopback_Color4bv_f);
- SET_Color4dv(dest, loopback_Color4dv_f);
- SET_Color4iv(dest, loopback_Color4iv_f);
- SET_Color4sv(dest, loopback_Color4sv_f);
- SET_Color4uiv(dest, loopback_Color4uiv_f);
- SET_Color4usv(dest, loopback_Color4usv_f);
- SET_Color4ubv(dest, loopback_Color4ubv_f);
-
- SET_SecondaryColor3bEXT(dest, loopback_SecondaryColor3bEXT_f);
- SET_SecondaryColor3dEXT(dest, loopback_SecondaryColor3dEXT_f);
- SET_SecondaryColor3iEXT(dest, loopback_SecondaryColor3iEXT_f);
- SET_SecondaryColor3sEXT(dest, loopback_SecondaryColor3sEXT_f);
- SET_SecondaryColor3uiEXT(dest, loopback_SecondaryColor3uiEXT_f);
- SET_SecondaryColor3usEXT(dest, loopback_SecondaryColor3usEXT_f);
- SET_SecondaryColor3ubEXT(dest, loopback_SecondaryColor3ubEXT_f);
- SET_SecondaryColor3bvEXT(dest, loopback_SecondaryColor3bvEXT_f);
- SET_SecondaryColor3dvEXT(dest, loopback_SecondaryColor3dvEXT_f);
- SET_SecondaryColor3ivEXT(dest, loopback_SecondaryColor3ivEXT_f);
- SET_SecondaryColor3svEXT(dest, loopback_SecondaryColor3svEXT_f);
- SET_SecondaryColor3uivEXT(dest, loopback_SecondaryColor3uivEXT_f);
- SET_SecondaryColor3usvEXT(dest, loopback_SecondaryColor3usvEXT_f);
- SET_SecondaryColor3ubvEXT(dest, loopback_SecondaryColor3ubvEXT_f);
-
- SET_EdgeFlagv(dest, loopback_EdgeFlagv);
-
- SET_Indexd(dest, loopback_Indexd);
- SET_Indexi(dest, loopback_Indexi);
- SET_Indexs(dest, loopback_Indexs);
- SET_Indexub(dest, loopback_Indexub);
- SET_Indexdv(dest, loopback_Indexdv);
- SET_Indexiv(dest, loopback_Indexiv);
- SET_Indexsv(dest, loopback_Indexsv);
- SET_Indexubv(dest, loopback_Indexubv);
- SET_Normal3b(dest, loopback_Normal3b);
- SET_Normal3d(dest, loopback_Normal3d);
- SET_Normal3i(dest, loopback_Normal3i);
- SET_Normal3s(dest, loopback_Normal3s);
- SET_Normal3bv(dest, loopback_Normal3bv);
- SET_Normal3dv(dest, loopback_Normal3dv);
- SET_Normal3iv(dest, loopback_Normal3iv);
- SET_Normal3sv(dest, loopback_Normal3sv);
- SET_TexCoord1d(dest, loopback_TexCoord1d);
- SET_TexCoord1i(dest, loopback_TexCoord1i);
- SET_TexCoord1s(dest, loopback_TexCoord1s);
- SET_TexCoord2d(dest, loopback_TexCoord2d);
- SET_TexCoord2s(dest, loopback_TexCoord2s);
- SET_TexCoord2i(dest, loopback_TexCoord2i);
- SET_TexCoord3d(dest, loopback_TexCoord3d);
- SET_TexCoord3i(dest, loopback_TexCoord3i);
- SET_TexCoord3s(dest, loopback_TexCoord3s);
- SET_TexCoord4d(dest, loopback_TexCoord4d);
- SET_TexCoord4i(dest, loopback_TexCoord4i);
- SET_TexCoord4s(dest, loopback_TexCoord4s);
- SET_TexCoord1dv(dest, loopback_TexCoord1dv);
- SET_TexCoord1iv(dest, loopback_TexCoord1iv);
- SET_TexCoord1sv(dest, loopback_TexCoord1sv);
- SET_TexCoord2dv(dest, loopback_TexCoord2dv);
- SET_TexCoord2iv(dest, loopback_TexCoord2iv);
- SET_TexCoord2sv(dest, loopback_TexCoord2sv);
- SET_TexCoord3dv(dest, loopback_TexCoord3dv);
- SET_TexCoord3iv(dest, loopback_TexCoord3iv);
- SET_TexCoord3sv(dest, loopback_TexCoord3sv);
- SET_TexCoord4dv(dest, loopback_TexCoord4dv);
- SET_TexCoord4iv(dest, loopback_TexCoord4iv);
- SET_TexCoord4sv(dest, loopback_TexCoord4sv);
- SET_Vertex2d(dest, loopback_Vertex2d);
- SET_Vertex2i(dest, loopback_Vertex2i);
- SET_Vertex2s(dest, loopback_Vertex2s);
- SET_Vertex3d(dest, loopback_Vertex3d);
- SET_Vertex3i(dest, loopback_Vertex3i);
- SET_Vertex3s(dest, loopback_Vertex3s);
- SET_Vertex4d(dest, loopback_Vertex4d);
- SET_Vertex4i(dest, loopback_Vertex4i);
- SET_Vertex4s(dest, loopback_Vertex4s);
- SET_Vertex2dv(dest, loopback_Vertex2dv);
- SET_Vertex2iv(dest, loopback_Vertex2iv);
- SET_Vertex2sv(dest, loopback_Vertex2sv);
- SET_Vertex3dv(dest, loopback_Vertex3dv);
- SET_Vertex3iv(dest, loopback_Vertex3iv);
- SET_Vertex3sv(dest, loopback_Vertex3sv);
- SET_Vertex4dv(dest, loopback_Vertex4dv);
- SET_Vertex4iv(dest, loopback_Vertex4iv);
- SET_Vertex4sv(dest, loopback_Vertex4sv);
- SET_MultiTexCoord1dARB(dest, loopback_MultiTexCoord1dARB);
- SET_MultiTexCoord1dvARB(dest, loopback_MultiTexCoord1dvARB);
- SET_MultiTexCoord1iARB(dest, loopback_MultiTexCoord1iARB);
- SET_MultiTexCoord1ivARB(dest, loopback_MultiTexCoord1ivARB);
- SET_MultiTexCoord1sARB(dest, loopback_MultiTexCoord1sARB);
- SET_MultiTexCoord1svARB(dest, loopback_MultiTexCoord1svARB);
- SET_MultiTexCoord2dARB(dest, loopback_MultiTexCoord2dARB);
- SET_MultiTexCoord2dvARB(dest, loopback_MultiTexCoord2dvARB);
- SET_MultiTexCoord2iARB(dest, loopback_MultiTexCoord2iARB);
- SET_MultiTexCoord2ivARB(dest, loopback_MultiTexCoord2ivARB);
- SET_MultiTexCoord2sARB(dest, loopback_MultiTexCoord2sARB);
- SET_MultiTexCoord2svARB(dest, loopback_MultiTexCoord2svARB);
- SET_MultiTexCoord3dARB(dest, loopback_MultiTexCoord3dARB);
- SET_MultiTexCoord3dvARB(dest, loopback_MultiTexCoord3dvARB);
- SET_MultiTexCoord3iARB(dest, loopback_MultiTexCoord3iARB);
- SET_MultiTexCoord3ivARB(dest, loopback_MultiTexCoord3ivARB);
- SET_MultiTexCoord3sARB(dest, loopback_MultiTexCoord3sARB);
- SET_MultiTexCoord3svARB(dest, loopback_MultiTexCoord3svARB);
- SET_MultiTexCoord4dARB(dest, loopback_MultiTexCoord4dARB);
- SET_MultiTexCoord4dvARB(dest, loopback_MultiTexCoord4dvARB);
- SET_MultiTexCoord4iARB(dest, loopback_MultiTexCoord4iARB);
- SET_MultiTexCoord4ivARB(dest, loopback_MultiTexCoord4ivARB);
- SET_MultiTexCoord4sARB(dest, loopback_MultiTexCoord4sARB);
- SET_MultiTexCoord4svARB(dest, loopback_MultiTexCoord4svARB);
- SET_EvalCoord2dv(dest, loopback_EvalCoord2dv);
- SET_EvalCoord2fv(dest, loopback_EvalCoord2fv);
- SET_EvalCoord2d(dest, loopback_EvalCoord2d);
- SET_EvalCoord1dv(dest, loopback_EvalCoord1dv);
- SET_EvalCoord1fv(dest, loopback_EvalCoord1fv);
- SET_EvalCoord1d(dest, loopback_EvalCoord1d);
- SET_Materialf(dest, loopback_Materialf);
- SET_Materiali(dest, loopback_Materiali);
- SET_Materialiv(dest, loopback_Materialiv);
- SET_Rectd(dest, loopback_Rectd);
- SET_Rectdv(dest, loopback_Rectdv);
- SET_Rectfv(dest, loopback_Rectfv);
- SET_Recti(dest, loopback_Recti);
- SET_Rectiv(dest, loopback_Rectiv);
- SET_Rects(dest, loopback_Rects);
- SET_Rectsv(dest, loopback_Rectsv);
- SET_FogCoorddEXT(dest, loopback_FogCoorddEXT);
- SET_FogCoorddvEXT(dest, loopback_FogCoorddvEXT);
-
- SET_VertexAttrib1sNV(dest, loopback_VertexAttrib1sNV);
- SET_VertexAttrib1dNV(dest, loopback_VertexAttrib1dNV);
- SET_VertexAttrib2sNV(dest, loopback_VertexAttrib2sNV);
- SET_VertexAttrib2dNV(dest, loopback_VertexAttrib2dNV);
- SET_VertexAttrib3sNV(dest, loopback_VertexAttrib3sNV);
- SET_VertexAttrib3dNV(dest, loopback_VertexAttrib3dNV);
- SET_VertexAttrib4sNV(dest, loopback_VertexAttrib4sNV);
- SET_VertexAttrib4dNV(dest, loopback_VertexAttrib4dNV);
- SET_VertexAttrib4ubNV(dest, loopback_VertexAttrib4ubNV);
- SET_VertexAttrib1svNV(dest, loopback_VertexAttrib1svNV);
- SET_VertexAttrib1dvNV(dest, loopback_VertexAttrib1dvNV);
- SET_VertexAttrib2svNV(dest, loopback_VertexAttrib2svNV);
- SET_VertexAttrib2dvNV(dest, loopback_VertexAttrib2dvNV);
- SET_VertexAttrib3svNV(dest, loopback_VertexAttrib3svNV);
- SET_VertexAttrib3dvNV(dest, loopback_VertexAttrib3dvNV);
- SET_VertexAttrib4svNV(dest, loopback_VertexAttrib4svNV);
- SET_VertexAttrib4dvNV(dest, loopback_VertexAttrib4dvNV);
- SET_VertexAttrib4ubvNV(dest, loopback_VertexAttrib4ubvNV);
- SET_VertexAttribs1svNV(dest, loopback_VertexAttribs1svNV);
- SET_VertexAttribs1fvNV(dest, loopback_VertexAttribs1fvNV);
- SET_VertexAttribs1dvNV(dest, loopback_VertexAttribs1dvNV);
- SET_VertexAttribs2svNV(dest, loopback_VertexAttribs2svNV);
- SET_VertexAttribs2fvNV(dest, loopback_VertexAttribs2fvNV);
- SET_VertexAttribs2dvNV(dest, loopback_VertexAttribs2dvNV);
- SET_VertexAttribs3svNV(dest, loopback_VertexAttribs3svNV);
- SET_VertexAttribs3fvNV(dest, loopback_VertexAttribs3fvNV);
- SET_VertexAttribs3dvNV(dest, loopback_VertexAttribs3dvNV);
- SET_VertexAttribs4svNV(dest, loopback_VertexAttribs4svNV);
- SET_VertexAttribs4fvNV(dest, loopback_VertexAttribs4fvNV);
- SET_VertexAttribs4dvNV(dest, loopback_VertexAttribs4dvNV);
- SET_VertexAttribs4ubvNV(dest, loopback_VertexAttribs4ubvNV);
-
- SET_VertexAttrib1sARB(dest, loopback_VertexAttrib1sARB);
- SET_VertexAttrib1dARB(dest, loopback_VertexAttrib1dARB);
- SET_VertexAttrib2sARB(dest, loopback_VertexAttrib2sARB);
- SET_VertexAttrib2dARB(dest, loopback_VertexAttrib2dARB);
- SET_VertexAttrib3sARB(dest, loopback_VertexAttrib3sARB);
- SET_VertexAttrib3dARB(dest, loopback_VertexAttrib3dARB);
- SET_VertexAttrib4sARB(dest, loopback_VertexAttrib4sARB);
- SET_VertexAttrib4dARB(dest, loopback_VertexAttrib4dARB);
- SET_VertexAttrib1svARB(dest, loopback_VertexAttrib1svARB);
- SET_VertexAttrib1dvARB(dest, loopback_VertexAttrib1dvARB);
- SET_VertexAttrib2svARB(dest, loopback_VertexAttrib2svARB);
- SET_VertexAttrib2dvARB(dest, loopback_VertexAttrib2dvARB);
- SET_VertexAttrib3svARB(dest, loopback_VertexAttrib3svARB);
- SET_VertexAttrib3dvARB(dest, loopback_VertexAttrib3dvARB);
- SET_VertexAttrib4svARB(dest, loopback_VertexAttrib4svARB);
- SET_VertexAttrib4dvARB(dest, loopback_VertexAttrib4dvARB);
- SET_VertexAttrib4NubARB(dest, loopback_VertexAttrib4NubARB);
- SET_VertexAttrib4NubvARB(dest, loopback_VertexAttrib4NubvARB);
- SET_VertexAttrib4bvARB(dest, loopback_VertexAttrib4bvARB);
- SET_VertexAttrib4ivARB(dest, loopback_VertexAttrib4ivARB);
- SET_VertexAttrib4ubvARB(dest, loopback_VertexAttrib4ubvARB);
- SET_VertexAttrib4usvARB(dest, loopback_VertexAttrib4usvARB);
- SET_VertexAttrib4uivARB(dest, loopback_VertexAttrib4uivARB);
- SET_VertexAttrib4NbvARB(dest, loopback_VertexAttrib4NbvARB);
- SET_VertexAttrib4NsvARB(dest, loopback_VertexAttrib4NsvARB);
- SET_VertexAttrib4NivARB(dest, loopback_VertexAttrib4NivARB);
- SET_VertexAttrib4NusvARB(dest, loopback_VertexAttrib4NusvARB);
- SET_VertexAttrib4NuivARB(dest, loopback_VertexAttrib4NuivARB);
-
- /* GL_EXT_gpu_shader4, GL 3.0 */
- SET_VertexAttribI1ivEXT(dest, loopback_VertexAttribI1iv);
- SET_VertexAttribI1uivEXT(dest, loopback_VertexAttribI1uiv);
- SET_VertexAttribI4bvEXT(dest, loopback_VertexAttribI4bv);
- SET_VertexAttribI4svEXT(dest, loopback_VertexAttribI4sv);
- SET_VertexAttribI4ubvEXT(dest, loopback_VertexAttribI4ubv);
- SET_VertexAttribI4usvEXT(dest, loopback_VertexAttribI4usv);
-}
-
-
-#endif /* FEATURE_beginend */
+/**
+ * \file api_loopback.c
+ *
+ * \author Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.3
+ *
+ * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#include "glheader.h"
+#include "macros.h"
+#include "api_loopback.h"
+#include "mtypes.h"
+#include "glapi/glapi.h"
+#include "glapi/glthread.h"
+#include "main/dispatch.h"
+#include "mfeatures.h"
+
+/* KW: A set of functions to convert unusual Color/Normal/Vertex/etc
+ * calls to a smaller set of driver-provided formats. Currently just
+ * go back to dispatch to find these (eg. call glNormal3f directly),
+ * hence 'loopback'.
+ *
+ * The driver must supply all of the remaining entry points, which are
+ * listed in dd.h. The easiest way for a driver to do this is to
+ * install the supplied software t&l module.
+ */
+#define COLORF(r,g,b,a) CALL_Color4f(GET_DISPATCH(), (r,g,b,a))
+#define VERTEX2(x,y) CALL_Vertex2f(GET_DISPATCH(), (x,y))
+#define VERTEX3(x,y,z) CALL_Vertex3f(GET_DISPATCH(), (x,y,z))
+#define VERTEX4(x,y,z,w) CALL_Vertex4f(GET_DISPATCH(), (x,y,z,w))
+#define NORMAL(x,y,z) CALL_Normal3f(GET_DISPATCH(), (x,y,z))
+#define TEXCOORD1(s) CALL_TexCoord1f(GET_DISPATCH(), (s))
+#define TEXCOORD2(s,t) CALL_TexCoord2f(GET_DISPATCH(), (s,t))
+#define TEXCOORD3(s,t,u) CALL_TexCoord3f(GET_DISPATCH(), (s,t,u))
+#define TEXCOORD4(s,t,u,v) CALL_TexCoord4f(GET_DISPATCH(), (s,t,u,v))
+#define INDEX(c) CALL_Indexf(GET_DISPATCH(), (c))
+#define MULTI_TEXCOORD1(z,s) CALL_MultiTexCoord1fARB(GET_DISPATCH(), (z,s))
+#define MULTI_TEXCOORD2(z,s,t) CALL_MultiTexCoord2fARB(GET_DISPATCH(), (z,s,t))
+#define MULTI_TEXCOORD3(z,s,t,u) CALL_MultiTexCoord3fARB(GET_DISPATCH(), (z,s,t,u))
+#define MULTI_TEXCOORD4(z,s,t,u,v) CALL_MultiTexCoord4fARB(GET_DISPATCH(), (z,s,t,u,v))
+#define EVALCOORD1(x) CALL_EvalCoord1f(GET_DISPATCH(), (x))
+#define EVALCOORD2(x,y) CALL_EvalCoord2f(GET_DISPATCH(), (x,y))
+#define MATERIALFV(a,b,c) CALL_Materialfv(GET_DISPATCH(), (a,b,c))
+#define RECTF(a,b,c,d) CALL_Rectf(GET_DISPATCH(), (a,b,c,d))
+
+#define FOGCOORDF(x) CALL_FogCoordfEXT(GET_DISPATCH(), (x))
+#define SECONDARYCOLORF(a,b,c) CALL_SecondaryColor3fEXT(GET_DISPATCH(), (a,b,c))
+
+#define ATTRIB1NV(index,x) CALL_VertexAttrib1fNV(GET_DISPATCH(), (index,x))
+#define ATTRIB2NV(index,x,y) CALL_VertexAttrib2fNV(GET_DISPATCH(), (index,x,y))
+#define ATTRIB3NV(index,x,y,z) CALL_VertexAttrib3fNV(GET_DISPATCH(), (index,x,y,z))
+#define ATTRIB4NV(index,x,y,z,w) CALL_VertexAttrib4fNV(GET_DISPATCH(), (index,x,y,z,w))
+
+#define ATTRIB1ARB(index,x) CALL_VertexAttrib1fARB(GET_DISPATCH(), (index,x))
+#define ATTRIB2ARB(index,x,y) CALL_VertexAttrib2fARB(GET_DISPATCH(), (index,x,y))
+#define ATTRIB3ARB(index,x,y,z) CALL_VertexAttrib3fARB(GET_DISPATCH(), (index,x,y,z))
+#define ATTRIB4ARB(index,x,y,z,w) CALL_VertexAttrib4fARB(GET_DISPATCH(), (index,x,y,z,w))
+
+#define ATTRIBI_1I(index,x) CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index,x))
+#define ATTRIBI_1UI(index,x) CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index,x))
+#define ATTRIBI_4I(index,x,y,z,w) CALL_VertexAttribI4iEXT(GET_DISPATCH(), (index,x,y,z,w))
+
+#define ATTRIBI_4UI(index,x,y,z,w) CALL_VertexAttribI4uiEXT(GET_DISPATCH(), (index,x,y,z,w))
+
+
+#if FEATURE_beginend
+
+
+static void GLAPIENTRY
+loopback_Color3b_f( GLbyte red, GLbyte green, GLbyte blue )
+{
+ COLORF( BYTE_TO_FLOAT(red),
+ BYTE_TO_FLOAT(green),
+ BYTE_TO_FLOAT(blue),
+ 1.0 );
+}
+
+static void GLAPIENTRY
+loopback_Color3d_f( GLdouble red, GLdouble green, GLdouble blue )
+{
+ COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, 1.0 );
+}
+
+static void GLAPIENTRY
+loopback_Color3i_f( GLint red, GLint green, GLint blue )
+{
+ COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
+ INT_TO_FLOAT(blue), 1.0);
+}
+
+static void GLAPIENTRY
+loopback_Color3s_f( GLshort red, GLshort green, GLshort blue )
+{
+ COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
+ SHORT_TO_FLOAT(blue), 1.0);
+}
+
+static void GLAPIENTRY
+loopback_Color3ui_f( GLuint red, GLuint green, GLuint blue )
+{
+ COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
+ UINT_TO_FLOAT(blue), 1.0 );
+}
+
+static void GLAPIENTRY
+loopback_Color3us_f( GLushort red, GLushort green, GLushort blue )
+{
+ COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
+ USHORT_TO_FLOAT(blue), 1.0 );
+}
+
+static void GLAPIENTRY
+loopback_Color3ub_f( GLubyte red, GLubyte green, GLubyte blue )
+{
+ COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
+ UBYTE_TO_FLOAT(blue), 1.0 );
+}
+
+
+static void GLAPIENTRY
+loopback_Color3bv_f( const GLbyte *v )
+{
+ COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
+ BYTE_TO_FLOAT(v[2]), 1.0 );
+}
+
+static void GLAPIENTRY
+loopback_Color3dv_f( const GLdouble *v )
+{
+ COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0 );
+}
+
+static void GLAPIENTRY
+loopback_Color3iv_f( const GLint *v )
+{
+ COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
+ INT_TO_FLOAT(v[2]), 1.0 );
+}
+
+static void GLAPIENTRY
+loopback_Color3sv_f( const GLshort *v )
+{
+ COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
+ SHORT_TO_FLOAT(v[2]), 1.0 );
+}
+
+static void GLAPIENTRY
+loopback_Color3uiv_f( const GLuint *v )
+{
+ COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
+ UINT_TO_FLOAT(v[2]), 1.0 );
+}
+
+static void GLAPIENTRY
+loopback_Color3usv_f( const GLushort *v )
+{
+ COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
+ USHORT_TO_FLOAT(v[2]), 1.0 );
+}
+
+static void GLAPIENTRY
+loopback_Color3ubv_f( const GLubyte *v )
+{
+ COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
+ UBYTE_TO_FLOAT(v[2]), 1.0 );
+}
+
+
+static void GLAPIENTRY
+loopback_Color4b_f( GLbyte red, GLbyte green, GLbyte blue,
+ GLbyte alpha )
+{
+ COLORF( BYTE_TO_FLOAT(red), BYTE_TO_FLOAT(green),
+ BYTE_TO_FLOAT(blue), BYTE_TO_FLOAT(alpha) );
+}
+
+static void GLAPIENTRY
+loopback_Color4d_f( GLdouble red, GLdouble green, GLdouble blue,
+ GLdouble alpha )
+{
+ COLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue, (GLfloat) alpha );
+}
+
+static void GLAPIENTRY
+loopback_Color4i_f( GLint red, GLint green, GLint blue, GLint alpha )
+{
+ COLORF( INT_TO_FLOAT(red), INT_TO_FLOAT(green),
+ INT_TO_FLOAT(blue), INT_TO_FLOAT(alpha) );
+}
+
+static void GLAPIENTRY
+loopback_Color4s_f( GLshort red, GLshort green, GLshort blue,
+ GLshort alpha )
+{
+ COLORF( SHORT_TO_FLOAT(red), SHORT_TO_FLOAT(green),
+ SHORT_TO_FLOAT(blue), SHORT_TO_FLOAT(alpha) );
+}
+
+static void GLAPIENTRY
+loopback_Color4ui_f( GLuint red, GLuint green, GLuint blue, GLuint alpha )
+{
+ COLORF( UINT_TO_FLOAT(red), UINT_TO_FLOAT(green),
+ UINT_TO_FLOAT(blue), UINT_TO_FLOAT(alpha) );
+}
+
+static void GLAPIENTRY
+loopback_Color4us_f( GLushort red, GLushort green, GLushort blue, GLushort alpha )
+{
+ COLORF( USHORT_TO_FLOAT(red), USHORT_TO_FLOAT(green),
+ USHORT_TO_FLOAT(blue), USHORT_TO_FLOAT(alpha) );
+}
+
+static void GLAPIENTRY
+loopback_Color4ub_f( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha )
+{
+ COLORF( UBYTE_TO_FLOAT(red), UBYTE_TO_FLOAT(green),
+ UBYTE_TO_FLOAT(blue), UBYTE_TO_FLOAT(alpha) );
+}
+
+
+static void GLAPIENTRY
+loopback_Color4iv_f( const GLint *v )
+{
+ COLORF( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
+ INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]) );
+}
+
+
+static void GLAPIENTRY
+loopback_Color4bv_f( const GLbyte *v )
+{
+ COLORF( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
+ BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]) );
+}
+
+static void GLAPIENTRY
+loopback_Color4dv_f( const GLdouble *v )
+{
+ COLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3] );
+}
+
+
+static void GLAPIENTRY
+loopback_Color4sv_f( const GLshort *v)
+{
+ COLORF( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
+ SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]) );
+}
+
+
+static void GLAPIENTRY
+loopback_Color4uiv_f( const GLuint *v)
+{
+ COLORF( UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
+ UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]) );
+}
+
+static void GLAPIENTRY
+loopback_Color4usv_f( const GLushort *v)
+{
+ COLORF( USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
+ USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]) );
+}
+
+static void GLAPIENTRY
+loopback_Color4ubv_f( const GLubyte *v)
+{
+ COLORF( UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
+ UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]) );
+}
+
+
+static void GLAPIENTRY
+loopback_FogCoorddEXT( GLdouble d )
+{
+ FOGCOORDF( (GLfloat) d );
+}
+
+static void GLAPIENTRY
+loopback_FogCoorddvEXT( const GLdouble *v )
+{
+ FOGCOORDF( (GLfloat) *v );
+}
+
+
+static void GLAPIENTRY
+loopback_Indexd( GLdouble c )
+{
+ INDEX( (GLfloat) c );
+}
+
+static void GLAPIENTRY
+loopback_Indexi( GLint c )
+{
+ INDEX( (GLfloat) c );
+}
+
+static void GLAPIENTRY
+loopback_Indexs( GLshort c )
+{
+ INDEX( (GLfloat) c );
+}
+
+static void GLAPIENTRY
+loopback_Indexub( GLubyte c )
+{
+ INDEX( (GLfloat) c );
+}
+
+static void GLAPIENTRY
+loopback_Indexdv( const GLdouble *c )
+{
+ INDEX( (GLfloat) *c );
+}
+
+static void GLAPIENTRY
+loopback_Indexiv( const GLint *c )
+{
+ INDEX( (GLfloat) *c );
+}
+
+static void GLAPIENTRY
+loopback_Indexsv( const GLshort *c )
+{
+ INDEX( (GLfloat) *c );
+}
+
+static void GLAPIENTRY
+loopback_Indexubv( const GLubyte *c )
+{
+ INDEX( (GLfloat) *c );
+}
+
+
+static void GLAPIENTRY
+loopback_EdgeFlagv(const GLboolean *flag)
+{
+ CALL_EdgeFlag(GET_DISPATCH(), (*flag));
+}
+
+
+static void GLAPIENTRY
+loopback_Normal3b( GLbyte nx, GLbyte ny, GLbyte nz )
+{
+ NORMAL( BYTE_TO_FLOAT(nx), BYTE_TO_FLOAT(ny), BYTE_TO_FLOAT(nz) );
+}
+
+static void GLAPIENTRY
+loopback_Normal3d( GLdouble nx, GLdouble ny, GLdouble nz )
+{
+ NORMAL((GLfloat) nx, (GLfloat) ny, (GLfloat) nz);
+}
+
+static void GLAPIENTRY
+loopback_Normal3i( GLint nx, GLint ny, GLint nz )
+{
+ NORMAL( INT_TO_FLOAT(nx), INT_TO_FLOAT(ny), INT_TO_FLOAT(nz) );
+}
+
+static void GLAPIENTRY
+loopback_Normal3s( GLshort nx, GLshort ny, GLshort nz )
+{
+ NORMAL( SHORT_TO_FLOAT(nx), SHORT_TO_FLOAT(ny), SHORT_TO_FLOAT(nz) );
+}
+
+static void GLAPIENTRY
+loopback_Normal3bv( const GLbyte *v )
+{
+ NORMAL( BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]) );
+}
+
+static void GLAPIENTRY
+loopback_Normal3dv( const GLdouble *v )
+{
+ NORMAL( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
+}
+
+static void GLAPIENTRY
+loopback_Normal3iv( const GLint *v )
+{
+ NORMAL( INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]) );
+}
+
+static void GLAPIENTRY
+loopback_Normal3sv( const GLshort *v )
+{
+ NORMAL( SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]) );
+}
+
+static void GLAPIENTRY
+loopback_TexCoord1d( GLdouble s )
+{
+ TEXCOORD1((GLfloat) s);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord1i( GLint s )
+{
+ TEXCOORD1((GLfloat) s);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord1s( GLshort s )
+{
+ TEXCOORD1((GLfloat) s);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord2d( GLdouble s, GLdouble t )
+{
+ TEXCOORD2((GLfloat) s,(GLfloat) t);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord2s( GLshort s, GLshort t )
+{
+ TEXCOORD2((GLfloat) s,(GLfloat) t);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord2i( GLint s, GLint t )
+{
+ TEXCOORD2((GLfloat) s,(GLfloat) t);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord3d( GLdouble s, GLdouble t, GLdouble r )
+{
+ TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord3i( GLint s, GLint t, GLint r )
+{
+ TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord3s( GLshort s, GLshort t, GLshort r )
+{
+ TEXCOORD3((GLfloat) s,(GLfloat) t,(GLfloat) r);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q )
+{
+ TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord4i( GLint s, GLint t, GLint r, GLint q )
+{
+ TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q )
+{
+ TEXCOORD4((GLfloat) s,(GLfloat) t,(GLfloat) r,(GLfloat) q);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord1dv( const GLdouble *v )
+{
+ TEXCOORD1((GLfloat) v[0]);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord1iv( const GLint *v )
+{
+ TEXCOORD1((GLfloat) v[0]);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord1sv( const GLshort *v )
+{
+ TEXCOORD1((GLfloat) v[0]);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord2dv( const GLdouble *v )
+{
+ TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord2iv( const GLint *v )
+{
+ TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord2sv( const GLshort *v )
+{
+ TEXCOORD2((GLfloat) v[0],(GLfloat) v[1]);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord3dv( const GLdouble *v )
+{
+ TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord3iv( const GLint *v )
+{
+ TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord3sv( const GLshort *v )
+{
+ TEXCOORD3((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2]);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord4dv( const GLdouble *v )
+{
+ TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord4iv( const GLint *v )
+{
+ TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+loopback_TexCoord4sv( const GLshort *v )
+{
+ TEXCOORD4((GLfloat) v[0],(GLfloat) v[1],(GLfloat) v[2],(GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+loopback_Vertex2d( GLdouble x, GLdouble y )
+{
+ VERTEX2( (GLfloat) x, (GLfloat) y );
+}
+
+static void GLAPIENTRY
+loopback_Vertex2i( GLint x, GLint y )
+{
+ VERTEX2( (GLfloat) x, (GLfloat) y );
+}
+
+static void GLAPIENTRY
+loopback_Vertex2s( GLshort x, GLshort y )
+{
+ VERTEX2( (GLfloat) x, (GLfloat) y );
+}
+
+static void GLAPIENTRY
+loopback_Vertex3d( GLdouble x, GLdouble y, GLdouble z )
+{
+ VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
+}
+
+static void GLAPIENTRY
+loopback_Vertex3i( GLint x, GLint y, GLint z )
+{
+ VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
+}
+
+static void GLAPIENTRY
+loopback_Vertex3s( GLshort x, GLshort y, GLshort z )
+{
+ VERTEX3( (GLfloat) x, (GLfloat) y, (GLfloat) z );
+}
+
+static void GLAPIENTRY
+loopback_Vertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )
+{
+ VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
+}
+
+static void GLAPIENTRY
+loopback_Vertex4i( GLint x, GLint y, GLint z, GLint w )
+{
+ VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
+}
+
+static void GLAPIENTRY
+loopback_Vertex4s( GLshort x, GLshort y, GLshort z, GLshort w )
+{
+ VERTEX4( (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w );
+}
+
+static void GLAPIENTRY
+loopback_Vertex2dv( const GLdouble *v )
+{
+ VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
+}
+
+static void GLAPIENTRY
+loopback_Vertex2iv( const GLint *v )
+{
+ VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
+}
+
+static void GLAPIENTRY
+loopback_Vertex2sv( const GLshort *v )
+{
+ VERTEX2( (GLfloat) v[0], (GLfloat) v[1] );
+}
+
+static void GLAPIENTRY
+loopback_Vertex3dv( const GLdouble *v )
+{
+ VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
+}
+
+static void GLAPIENTRY
+loopback_Vertex3iv( const GLint *v )
+{
+ VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
+}
+
+static void GLAPIENTRY
+loopback_Vertex3sv( const GLshort *v )
+{
+ VERTEX3( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
+}
+
+static void GLAPIENTRY
+loopback_Vertex4dv( const GLdouble *v )
+{
+ VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
+ (GLfloat) v[2], (GLfloat) v[3] );
+}
+
+static void GLAPIENTRY
+loopback_Vertex4iv( const GLint *v )
+{
+ VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
+ (GLfloat) v[2], (GLfloat) v[3] );
+}
+
+static void GLAPIENTRY
+loopback_Vertex4sv( const GLshort *v )
+{
+ VERTEX4( (GLfloat) v[0], (GLfloat) v[1],
+ (GLfloat) v[2], (GLfloat) v[3] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord1dARB(GLenum target, GLdouble s)
+{
+ MULTI_TEXCOORD1( target, (GLfloat) s );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord1dvARB(GLenum target, const GLdouble *v)
+{
+ MULTI_TEXCOORD1( target, (GLfloat) v[0] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord1iARB(GLenum target, GLint s)
+{
+ MULTI_TEXCOORD1( target, (GLfloat) s );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord1ivARB(GLenum target, const GLint *v)
+{
+ MULTI_TEXCOORD1( target, (GLfloat) v[0] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord1sARB(GLenum target, GLshort s)
+{
+ MULTI_TEXCOORD1( target, (GLfloat) s );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord1svARB(GLenum target, const GLshort *v)
+{
+ MULTI_TEXCOORD1( target, (GLfloat) v[0] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)
+{
+ MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord2dvARB(GLenum target, const GLdouble *v)
+{
+ MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord2iARB(GLenum target, GLint s, GLint t)
+{
+ MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord2ivARB(GLenum target, const GLint *v)
+{
+ MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)
+{
+ MULTI_TEXCOORD2( target, (GLfloat) s, (GLfloat) t );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord2svARB(GLenum target, const GLshort *v)
+{
+ MULTI_TEXCOORD2( target, (GLfloat) v[0], (GLfloat) v[1] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r)
+{
+ MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord3dvARB(GLenum target, const GLdouble *v)
+{
+ MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)
+{
+ MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord3ivARB(GLenum target, const GLint *v)
+{
+ MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r)
+{
+ MULTI_TEXCOORD3( target, (GLfloat) s, (GLfloat) t, (GLfloat) r );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord3svARB(GLenum target, const GLshort *v)
+{
+ MULTI_TEXCOORD3( target, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
+{
+ MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
+ (GLfloat) r, (GLfloat) q );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord4dvARB(GLenum target, const GLdouble *v)
+{
+ MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
+ (GLfloat) v[2], (GLfloat) v[3] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q)
+{
+ MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
+ (GLfloat) r, (GLfloat) q );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord4ivARB(GLenum target, const GLint *v)
+{
+ MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
+ (GLfloat) v[2], (GLfloat) v[3] );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
+{
+ MULTI_TEXCOORD4( target, (GLfloat) s, (GLfloat) t,
+ (GLfloat) r, (GLfloat) q );
+}
+
+static void GLAPIENTRY
+loopback_MultiTexCoord4svARB(GLenum target, const GLshort *v)
+{
+ MULTI_TEXCOORD4( target, (GLfloat) v[0], (GLfloat) v[1],
+ (GLfloat) v[2], (GLfloat) v[3] );
+}
+
+static void GLAPIENTRY
+loopback_EvalCoord2dv( const GLdouble *u )
+{
+ EVALCOORD2( (GLfloat) u[0], (GLfloat) u[1] );
+}
+
+static void GLAPIENTRY
+loopback_EvalCoord2fv( const GLfloat *u )
+{
+ EVALCOORD2( u[0], u[1] );
+}
+
+static void GLAPIENTRY
+loopback_EvalCoord2d( GLdouble u, GLdouble v )
+{
+ EVALCOORD2( (GLfloat) u, (GLfloat) v );
+}
+
+static void GLAPIENTRY
+loopback_EvalCoord1dv( const GLdouble *u )
+{
+ EVALCOORD1( (GLfloat) *u );
+}
+
+static void GLAPIENTRY
+loopback_EvalCoord1fv( const GLfloat *u )
+{
+ EVALCOORD1( (GLfloat) *u );
+}
+
+static void GLAPIENTRY
+loopback_EvalCoord1d( GLdouble u )
+{
+ EVALCOORD1( (GLfloat) u );
+}
+
+static void GLAPIENTRY
+loopback_Materialf( GLenum face, GLenum pname, GLfloat param )
+{
+ GLfloat fparam[4];
+ fparam[0] = param;
+ MATERIALFV( face, pname, fparam );
+}
+
+static void GLAPIENTRY
+loopback_Materiali(GLenum face, GLenum pname, GLint param )
+{
+ GLfloat p = (GLfloat) param;
+ MATERIALFV(face, pname, &p);
+}
+
+static void GLAPIENTRY
+loopback_Materialiv(GLenum face, GLenum pname, const GLint *params )
+{
+ GLfloat fparam[4];
+ switch (pname) {
+ case GL_AMBIENT:
+ case GL_DIFFUSE:
+ case GL_SPECULAR:
+ case GL_EMISSION:
+ case GL_AMBIENT_AND_DIFFUSE:
+ fparam[0] = INT_TO_FLOAT( params[0] );
+ fparam[1] = INT_TO_FLOAT( params[1] );
+ fparam[2] = INT_TO_FLOAT( params[2] );
+ fparam[3] = INT_TO_FLOAT( params[3] );
+ break;
+ case GL_SHININESS:
+ fparam[0] = (GLfloat) params[0];
+ break;
+ case GL_COLOR_INDEXES:
+ fparam[0] = (GLfloat) params[0];
+ fparam[1] = (GLfloat) params[1];
+ fparam[2] = (GLfloat) params[2];
+ break;
+ default:
+ ;
+ }
+ MATERIALFV(face, pname, fparam);
+}
+
+
+static void GLAPIENTRY
+loopback_Rectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
+{
+ RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
+}
+
+static void GLAPIENTRY
+loopback_Rectdv(const GLdouble *v1, const GLdouble *v2)
+{
+ RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
+}
+
+static void GLAPIENTRY
+loopback_Rectfv(const GLfloat *v1, const GLfloat *v2)
+{
+ RECTF(v1[0], v1[1], v2[0], v2[1]);
+}
+
+static void GLAPIENTRY
+loopback_Recti(GLint x1, GLint y1, GLint x2, GLint y2)
+{
+ RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
+}
+
+static void GLAPIENTRY
+loopback_Rectiv(const GLint *v1, const GLint *v2)
+{
+ RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
+}
+
+static void GLAPIENTRY
+loopback_Rects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
+{
+ RECTF((GLfloat) x1, (GLfloat) y1, (GLfloat) x2, (GLfloat) y2);
+}
+
+static void GLAPIENTRY
+loopback_Rectsv(const GLshort *v1, const GLshort *v2)
+{
+ RECTF((GLfloat) v1[0], (GLfloat) v1[1], (GLfloat) v2[0], (GLfloat) v2[1]);
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3bEXT_f( GLbyte red, GLbyte green, GLbyte blue )
+{
+ SECONDARYCOLORF( BYTE_TO_FLOAT(red),
+ BYTE_TO_FLOAT(green),
+ BYTE_TO_FLOAT(blue) );
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3dEXT_f( GLdouble red, GLdouble green, GLdouble blue )
+{
+ SECONDARYCOLORF( (GLfloat) red, (GLfloat) green, (GLfloat) blue );
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3iEXT_f( GLint red, GLint green, GLint blue )
+{
+ SECONDARYCOLORF( INT_TO_FLOAT(red),
+ INT_TO_FLOAT(green),
+ INT_TO_FLOAT(blue));
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3sEXT_f( GLshort red, GLshort green, GLshort blue )
+{
+ SECONDARYCOLORF(SHORT_TO_FLOAT(red),
+ SHORT_TO_FLOAT(green),
+ SHORT_TO_FLOAT(blue));
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3uiEXT_f( GLuint red, GLuint green, GLuint blue )
+{
+ SECONDARYCOLORF(UINT_TO_FLOAT(red),
+ UINT_TO_FLOAT(green),
+ UINT_TO_FLOAT(blue));
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3usEXT_f( GLushort red, GLushort green, GLushort blue )
+{
+ SECONDARYCOLORF(USHORT_TO_FLOAT(red),
+ USHORT_TO_FLOAT(green),
+ USHORT_TO_FLOAT(blue));
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3ubEXT_f( GLubyte red, GLubyte green, GLubyte blue )
+{
+ SECONDARYCOLORF(UBYTE_TO_FLOAT(red),
+ UBYTE_TO_FLOAT(green),
+ UBYTE_TO_FLOAT(blue));
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3bvEXT_f( const GLbyte *v )
+{
+ SECONDARYCOLORF(BYTE_TO_FLOAT(v[0]),
+ BYTE_TO_FLOAT(v[1]),
+ BYTE_TO_FLOAT(v[2]));
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3dvEXT_f( const GLdouble *v )
+{
+ SECONDARYCOLORF( (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2] );
+}
+static void GLAPIENTRY
+loopback_SecondaryColor3ivEXT_f( const GLint *v )
+{
+ SECONDARYCOLORF(INT_TO_FLOAT(v[0]),
+ INT_TO_FLOAT(v[1]),
+ INT_TO_FLOAT(v[2]));
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3svEXT_f( const GLshort *v )
+{
+ SECONDARYCOLORF(SHORT_TO_FLOAT(v[0]),
+ SHORT_TO_FLOAT(v[1]),
+ SHORT_TO_FLOAT(v[2]));
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3uivEXT_f( const GLuint *v )
+{
+ SECONDARYCOLORF(UINT_TO_FLOAT(v[0]),
+ UINT_TO_FLOAT(v[1]),
+ UINT_TO_FLOAT(v[2]));
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3usvEXT_f( const GLushort *v )
+{
+ SECONDARYCOLORF(USHORT_TO_FLOAT(v[0]),
+ USHORT_TO_FLOAT(v[1]),
+ USHORT_TO_FLOAT(v[2]));
+}
+
+static void GLAPIENTRY
+loopback_SecondaryColor3ubvEXT_f( const GLubyte *v )
+{
+ SECONDARYCOLORF(UBYTE_TO_FLOAT(v[0]),
+ UBYTE_TO_FLOAT(v[1]),
+ UBYTE_TO_FLOAT(v[2]));
+}
+
+
+/*
+ * GL_NV_vertex_program:
+ * Always loop-back to one of the VertexAttrib[1234]f[v]NV functions.
+ * Note that attribute indexes DO alias conventional vertex attributes.
+ */
+
+static void GLAPIENTRY
+loopback_VertexAttrib1sNV(GLuint index, GLshort x)
+{
+ ATTRIB1NV(index, (GLfloat) x);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib1dNV(GLuint index, GLdouble x)
+{
+ ATTRIB1NV(index, (GLfloat) x);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y)
+{
+ ATTRIB2NV(index, (GLfloat) x, y);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
+{
+ ATTRIB2NV(index, (GLfloat) x, (GLfloat) y);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)
+{
+ ATTRIB3NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)
+{
+ ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+{
+ ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+ ATTRIB4NV(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+{
+ ATTRIB4NV(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
+ UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib1svNV(GLuint index, const GLshort *v)
+{
+ ATTRIB1NV(index, (GLfloat) v[0]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib1dvNV(GLuint index, const GLdouble *v)
+{
+ ATTRIB1NV(index, (GLfloat) v[0]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib2svNV(GLuint index, const GLshort *v)
+{
+ ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib2dvNV(GLuint index, const GLdouble *v)
+{
+ ATTRIB2NV(index, (GLfloat) v[0], (GLfloat) v[1]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib3svNV(GLuint index, const GLshort *v)
+{
+ ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib3dvNV(GLuint index, const GLdouble *v)
+{
+ ATTRIB3NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4svNV(GLuint index, const GLshort *v)
+{
+ ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
+ (GLfloat)v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4dvNV(GLuint index, const GLdouble *v)
+{
+ ATTRIB4NV(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
+{
+ ATTRIB4NV(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
+ UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
+}
+
+
+static void GLAPIENTRY
+loopback_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ loopback_VertexAttrib1svNV(index + i, v + i);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ ATTRIB1NV(index + i, v[i]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ loopback_VertexAttrib1dvNV(index + i, v + i);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ loopback_VertexAttrib2svNV(index + i, v + 2 * i);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ ATTRIB2NV(index + i, v[2 * i], v[2 * i + 1]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ loopback_VertexAttrib2dvNV(index + i, v + 2 * i);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ loopback_VertexAttrib3svNV(index + i, v + 3 * i);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ ATTRIB3NV(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ loopback_VertexAttrib3dvNV(index + i, v + 3 * i);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ loopback_VertexAttrib4svNV(index + i, v + 4 * i);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ ATTRIB4NV(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ loopback_VertexAttrib4dvNV(index + i, v + 4 * i);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
+{
+ GLint i;
+ for (i = n - 1; i >= 0; i--)
+ loopback_VertexAttrib4ubvNV(index + i, v + 4 * i);
+}
+
+
+/*
+ * GL_ARB_vertex_program
+ * Always loop-back to one of the VertexAttrib[1234]f[v]ARB functions.
+ * Note that attribute indexes do NOT alias conventional attributes.
+ */
+
+static void GLAPIENTRY
+loopback_VertexAttrib1sARB(GLuint index, GLshort x)
+{
+ ATTRIB1ARB(index, (GLfloat) x);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib1dARB(GLuint index, GLdouble x)
+{
+ ATTRIB1ARB(index, (GLfloat) x);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib2sARB(GLuint index, GLshort x, GLshort y)
+{
+ ATTRIB2ARB(index, (GLfloat) x, y);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y)
+{
+ ATTRIB2ARB(index, (GLfloat) x, (GLfloat) y);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z)
+{
+ ATTRIB3ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z)
+{
+ ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+{
+ ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+ ATTRIB4ARB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib1svARB(GLuint index, const GLshort *v)
+{
+ ATTRIB1ARB(index, (GLfloat) v[0]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib1dvARB(GLuint index, const GLdouble *v)
+{
+ ATTRIB1ARB(index, (GLfloat) v[0]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib2svARB(GLuint index, const GLshort *v)
+{
+ ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib2dvARB(GLuint index, const GLdouble *v)
+{
+ ATTRIB2ARB(index, (GLfloat) v[0], (GLfloat) v[1]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib3svARB(GLuint index, const GLshort *v)
+{
+ ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib3dvARB(GLuint index, const GLdouble *v)
+{
+ ATTRIB3ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4svARB(GLuint index, const GLshort *v)
+{
+ ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
+ (GLfloat)v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4dvARB(GLuint index, const GLdouble *v)
+{
+ ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4bvARB(GLuint index, const GLbyte * v)
+{
+ ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4ivARB(GLuint index, const GLint * v)
+{
+ ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4ubvARB(GLuint index, const GLubyte * v)
+{
+ ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4usvARB(GLuint index, const GLushort * v)
+{
+ ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4uivARB(GLuint index, const GLuint * v)
+{
+ ATTRIB4ARB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4NbvARB(GLuint index, const GLbyte * v)
+{
+ ATTRIB4ARB(index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]),
+ BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4NsvARB(GLuint index, const GLshort * v)
+{
+ ATTRIB4ARB(index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]),
+ SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4NivARB(GLuint index, const GLint * v)
+{
+ ATTRIB4ARB(index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]),
+ INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+{
+ ATTRIB4ARB(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
+ UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4NubvARB(GLuint index, const GLubyte * v)
+{
+ ATTRIB4ARB(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
+ UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4NusvARB(GLuint index, const GLushort * v)
+{
+ ATTRIB4ARB(index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]),
+ USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
+}
+
+static void GLAPIENTRY
+loopback_VertexAttrib4NuivARB(GLuint index, const GLuint * v)
+{
+ ATTRIB4ARB(index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]),
+ UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
+}
+
+
+
+/**
+ * GL_EXT_gpu_shader / GL 3.0 signed/unsigned integer-valued attributes.
+ * Note that attribute indexes do NOT alias conventional attributes.
+ */
+
+static void GLAPIENTRY
+loopback_VertexAttribI1iv(GLuint index, const GLint *v)
+{
+ ATTRIBI_1I(index, v[0]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribI1uiv(GLuint index, const GLuint *v)
+{
+ ATTRIBI_1UI(index, v[0]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribI4bv(GLuint index, const GLbyte *v)
+{
+ ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribI4sv(GLuint index, const GLshort *v)
+{
+ ATTRIBI_4I(index, v[0], v[1], v[2], v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribI4ubv(GLuint index, const GLubyte *v)
+{
+ ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
+}
+
+static void GLAPIENTRY
+loopback_VertexAttribI4usv(GLuint index, const GLushort *v)
+{
+ ATTRIBI_4UI(index, v[0], v[1], v[2], v[3]);
+}
+
+
+
+
+/*
+ * This code never registers handlers for any of the entry points
+ * listed in vtxfmt.h.
+ */
+void
+_mesa_loopback_init_api_table( struct _glapi_table *dest )
+{
+ SET_Color3b(dest, loopback_Color3b_f);
+ SET_Color3d(dest, loopback_Color3d_f);
+ SET_Color3i(dest, loopback_Color3i_f);
+ SET_Color3s(dest, loopback_Color3s_f);
+ SET_Color3ui(dest, loopback_Color3ui_f);
+ SET_Color3us(dest, loopback_Color3us_f);
+ SET_Color3ub(dest, loopback_Color3ub_f);
+ SET_Color4b(dest, loopback_Color4b_f);
+ SET_Color4d(dest, loopback_Color4d_f);
+ SET_Color4i(dest, loopback_Color4i_f);
+ SET_Color4s(dest, loopback_Color4s_f);
+ SET_Color4ui(dest, loopback_Color4ui_f);
+ SET_Color4us(dest, loopback_Color4us_f);
+ SET_Color4ub(dest, loopback_Color4ub_f);
+ SET_Color3bv(dest, loopback_Color3bv_f);
+ SET_Color3dv(dest, loopback_Color3dv_f);
+ SET_Color3iv(dest, loopback_Color3iv_f);
+ SET_Color3sv(dest, loopback_Color3sv_f);
+ SET_Color3uiv(dest, loopback_Color3uiv_f);
+ SET_Color3usv(dest, loopback_Color3usv_f);
+ SET_Color3ubv(dest, loopback_Color3ubv_f);
+ SET_Color4bv(dest, loopback_Color4bv_f);
+ SET_Color4dv(dest, loopback_Color4dv_f);
+ SET_Color4iv(dest, loopback_Color4iv_f);
+ SET_Color4sv(dest, loopback_Color4sv_f);
+ SET_Color4uiv(dest, loopback_Color4uiv_f);
+ SET_Color4usv(dest, loopback_Color4usv_f);
+ SET_Color4ubv(dest, loopback_Color4ubv_f);
+
+ SET_SecondaryColor3bEXT(dest, loopback_SecondaryColor3bEXT_f);
+ SET_SecondaryColor3dEXT(dest, loopback_SecondaryColor3dEXT_f);
+ SET_SecondaryColor3iEXT(dest, loopback_SecondaryColor3iEXT_f);
+ SET_SecondaryColor3sEXT(dest, loopback_SecondaryColor3sEXT_f);
+ SET_SecondaryColor3uiEXT(dest, loopback_SecondaryColor3uiEXT_f);
+ SET_SecondaryColor3usEXT(dest, loopback_SecondaryColor3usEXT_f);
+ SET_SecondaryColor3ubEXT(dest, loopback_SecondaryColor3ubEXT_f);
+ SET_SecondaryColor3bvEXT(dest, loopback_SecondaryColor3bvEXT_f);
+ SET_SecondaryColor3dvEXT(dest, loopback_SecondaryColor3dvEXT_f);
+ SET_SecondaryColor3ivEXT(dest, loopback_SecondaryColor3ivEXT_f);
+ SET_SecondaryColor3svEXT(dest, loopback_SecondaryColor3svEXT_f);
+ SET_SecondaryColor3uivEXT(dest, loopback_SecondaryColor3uivEXT_f);
+ SET_SecondaryColor3usvEXT(dest, loopback_SecondaryColor3usvEXT_f);
+ SET_SecondaryColor3ubvEXT(dest, loopback_SecondaryColor3ubvEXT_f);
+
+ SET_EdgeFlagv(dest, loopback_EdgeFlagv);
+
+ SET_Indexd(dest, loopback_Indexd);
+ SET_Indexi(dest, loopback_Indexi);
+ SET_Indexs(dest, loopback_Indexs);
+ SET_Indexub(dest, loopback_Indexub);
+ SET_Indexdv(dest, loopback_Indexdv);
+ SET_Indexiv(dest, loopback_Indexiv);
+ SET_Indexsv(dest, loopback_Indexsv);
+ SET_Indexubv(dest, loopback_Indexubv);
+ SET_Normal3b(dest, loopback_Normal3b);
+ SET_Normal3d(dest, loopback_Normal3d);
+ SET_Normal3i(dest, loopback_Normal3i);
+ SET_Normal3s(dest, loopback_Normal3s);
+ SET_Normal3bv(dest, loopback_Normal3bv);
+ SET_Normal3dv(dest, loopback_Normal3dv);
+ SET_Normal3iv(dest, loopback_Normal3iv);
+ SET_Normal3sv(dest, loopback_Normal3sv);
+ SET_TexCoord1d(dest, loopback_TexCoord1d);
+ SET_TexCoord1i(dest, loopback_TexCoord1i);
+ SET_TexCoord1s(dest, loopback_TexCoord1s);
+ SET_TexCoord2d(dest, loopback_TexCoord2d);
+ SET_TexCoord2s(dest, loopback_TexCoord2s);
+ SET_TexCoord2i(dest, loopback_TexCoord2i);
+ SET_TexCoord3d(dest, loopback_TexCoord3d);
+ SET_TexCoord3i(dest, loopback_TexCoord3i);
+ SET_TexCoord3s(dest, loopback_TexCoord3s);
+ SET_TexCoord4d(dest, loopback_TexCoord4d);
+ SET_TexCoord4i(dest, loopback_TexCoord4i);
+ SET_TexCoord4s(dest, loopback_TexCoord4s);
+ SET_TexCoord1dv(dest, loopback_TexCoord1dv);
+ SET_TexCoord1iv(dest, loopback_TexCoord1iv);
+ SET_TexCoord1sv(dest, loopback_TexCoord1sv);
+ SET_TexCoord2dv(dest, loopback_TexCoord2dv);
+ SET_TexCoord2iv(dest, loopback_TexCoord2iv);
+ SET_TexCoord2sv(dest, loopback_TexCoord2sv);
+ SET_TexCoord3dv(dest, loopback_TexCoord3dv);
+ SET_TexCoord3iv(dest, loopback_TexCoord3iv);
+ SET_TexCoord3sv(dest, loopback_TexCoord3sv);
+ SET_TexCoord4dv(dest, loopback_TexCoord4dv);
+ SET_TexCoord4iv(dest, loopback_TexCoord4iv);
+ SET_TexCoord4sv(dest, loopback_TexCoord4sv);
+ SET_Vertex2d(dest, loopback_Vertex2d);
+ SET_Vertex2i(dest, loopback_Vertex2i);
+ SET_Vertex2s(dest, loopback_Vertex2s);
+ SET_Vertex3d(dest, loopback_Vertex3d);
+ SET_Vertex3i(dest, loopback_Vertex3i);
+ SET_Vertex3s(dest, loopback_Vertex3s);
+ SET_Vertex4d(dest, loopback_Vertex4d);
+ SET_Vertex4i(dest, loopback_Vertex4i);
+ SET_Vertex4s(dest, loopback_Vertex4s);
+ SET_Vertex2dv(dest, loopback_Vertex2dv);
+ SET_Vertex2iv(dest, loopback_Vertex2iv);
+ SET_Vertex2sv(dest, loopback_Vertex2sv);
+ SET_Vertex3dv(dest, loopback_Vertex3dv);
+ SET_Vertex3iv(dest, loopback_Vertex3iv);
+ SET_Vertex3sv(dest, loopback_Vertex3sv);
+ SET_Vertex4dv(dest, loopback_Vertex4dv);
+ SET_Vertex4iv(dest, loopback_Vertex4iv);
+ SET_Vertex4sv(dest, loopback_Vertex4sv);
+ SET_MultiTexCoord1dARB(dest, loopback_MultiTexCoord1dARB);
+ SET_MultiTexCoord1dvARB(dest, loopback_MultiTexCoord1dvARB);
+ SET_MultiTexCoord1iARB(dest, loopback_MultiTexCoord1iARB);
+ SET_MultiTexCoord1ivARB(dest, loopback_MultiTexCoord1ivARB);
+ SET_MultiTexCoord1sARB(dest, loopback_MultiTexCoord1sARB);
+ SET_MultiTexCoord1svARB(dest, loopback_MultiTexCoord1svARB);
+ SET_MultiTexCoord2dARB(dest, loopback_MultiTexCoord2dARB);
+ SET_MultiTexCoord2dvARB(dest, loopback_MultiTexCoord2dvARB);
+ SET_MultiTexCoord2iARB(dest, loopback_MultiTexCoord2iARB);
+ SET_MultiTexCoord2ivARB(dest, loopback_MultiTexCoord2ivARB);
+ SET_MultiTexCoord2sARB(dest, loopback_MultiTexCoord2sARB);
+ SET_MultiTexCoord2svARB(dest, loopback_MultiTexCoord2svARB);
+ SET_MultiTexCoord3dARB(dest, loopback_MultiTexCoord3dARB);
+ SET_MultiTexCoord3dvARB(dest, loopback_MultiTexCoord3dvARB);
+ SET_MultiTexCoord3iARB(dest, loopback_MultiTexCoord3iARB);
+ SET_MultiTexCoord3ivARB(dest, loopback_MultiTexCoord3ivARB);
+ SET_MultiTexCoord3sARB(dest, loopback_MultiTexCoord3sARB);
+ SET_MultiTexCoord3svARB(dest, loopback_MultiTexCoord3svARB);
+ SET_MultiTexCoord4dARB(dest, loopback_MultiTexCoord4dARB);
+ SET_MultiTexCoord4dvARB(dest, loopback_MultiTexCoord4dvARB);
+ SET_MultiTexCoord4iARB(dest, loopback_MultiTexCoord4iARB);
+ SET_MultiTexCoord4ivARB(dest, loopback_MultiTexCoord4ivARB);
+ SET_MultiTexCoord4sARB(dest, loopback_MultiTexCoord4sARB);
+ SET_MultiTexCoord4svARB(dest, loopback_MultiTexCoord4svARB);
+ SET_EvalCoord2dv(dest, loopback_EvalCoord2dv);
+ SET_EvalCoord2fv(dest, loopback_EvalCoord2fv);
+ SET_EvalCoord2d(dest, loopback_EvalCoord2d);
+ SET_EvalCoord1dv(dest, loopback_EvalCoord1dv);
+ SET_EvalCoord1fv(dest, loopback_EvalCoord1fv);
+ SET_EvalCoord1d(dest, loopback_EvalCoord1d);
+ SET_Materialf(dest, loopback_Materialf);
+ SET_Materiali(dest, loopback_Materiali);
+ SET_Materialiv(dest, loopback_Materialiv);
+ SET_Rectd(dest, loopback_Rectd);
+ SET_Rectdv(dest, loopback_Rectdv);
+ SET_Rectfv(dest, loopback_Rectfv);
+ SET_Recti(dest, loopback_Recti);
+ SET_Rectiv(dest, loopback_Rectiv);
+ SET_Rects(dest, loopback_Rects);
+ SET_Rectsv(dest, loopback_Rectsv);
+ SET_FogCoorddEXT(dest, loopback_FogCoorddEXT);
+ SET_FogCoorddvEXT(dest, loopback_FogCoorddvEXT);
+
+ SET_VertexAttrib1sNV(dest, loopback_VertexAttrib1sNV);
+ SET_VertexAttrib1dNV(dest, loopback_VertexAttrib1dNV);
+ SET_VertexAttrib2sNV(dest, loopback_VertexAttrib2sNV);
+ SET_VertexAttrib2dNV(dest, loopback_VertexAttrib2dNV);
+ SET_VertexAttrib3sNV(dest, loopback_VertexAttrib3sNV);
+ SET_VertexAttrib3dNV(dest, loopback_VertexAttrib3dNV);
+ SET_VertexAttrib4sNV(dest, loopback_VertexAttrib4sNV);
+ SET_VertexAttrib4dNV(dest, loopback_VertexAttrib4dNV);
+ SET_VertexAttrib4ubNV(dest, loopback_VertexAttrib4ubNV);
+ SET_VertexAttrib1svNV(dest, loopback_VertexAttrib1svNV);
+ SET_VertexAttrib1dvNV(dest, loopback_VertexAttrib1dvNV);
+ SET_VertexAttrib2svNV(dest, loopback_VertexAttrib2svNV);
+ SET_VertexAttrib2dvNV(dest, loopback_VertexAttrib2dvNV);
+ SET_VertexAttrib3svNV(dest, loopback_VertexAttrib3svNV);
+ SET_VertexAttrib3dvNV(dest, loopback_VertexAttrib3dvNV);
+ SET_VertexAttrib4svNV(dest, loopback_VertexAttrib4svNV);
+ SET_VertexAttrib4dvNV(dest, loopback_VertexAttrib4dvNV);
+ SET_VertexAttrib4ubvNV(dest, loopback_VertexAttrib4ubvNV);
+ SET_VertexAttribs1svNV(dest, loopback_VertexAttribs1svNV);
+ SET_VertexAttribs1fvNV(dest, loopback_VertexAttribs1fvNV);
+ SET_VertexAttribs1dvNV(dest, loopback_VertexAttribs1dvNV);
+ SET_VertexAttribs2svNV(dest, loopback_VertexAttribs2svNV);
+ SET_VertexAttribs2fvNV(dest, loopback_VertexAttribs2fvNV);
+ SET_VertexAttribs2dvNV(dest, loopback_VertexAttribs2dvNV);
+ SET_VertexAttribs3svNV(dest, loopback_VertexAttribs3svNV);
+ SET_VertexAttribs3fvNV(dest, loopback_VertexAttribs3fvNV);
+ SET_VertexAttribs3dvNV(dest, loopback_VertexAttribs3dvNV);
+ SET_VertexAttribs4svNV(dest, loopback_VertexAttribs4svNV);
+ SET_VertexAttribs4fvNV(dest, loopback_VertexAttribs4fvNV);
+ SET_VertexAttribs4dvNV(dest, loopback_VertexAttribs4dvNV);
+ SET_VertexAttribs4ubvNV(dest, loopback_VertexAttribs4ubvNV);
+
+ SET_VertexAttrib1sARB(dest, loopback_VertexAttrib1sARB);
+ SET_VertexAttrib1dARB(dest, loopback_VertexAttrib1dARB);
+ SET_VertexAttrib2sARB(dest, loopback_VertexAttrib2sARB);
+ SET_VertexAttrib2dARB(dest, loopback_VertexAttrib2dARB);
+ SET_VertexAttrib3sARB(dest, loopback_VertexAttrib3sARB);
+ SET_VertexAttrib3dARB(dest, loopback_VertexAttrib3dARB);
+ SET_VertexAttrib4sARB(dest, loopback_VertexAttrib4sARB);
+ SET_VertexAttrib4dARB(dest, loopback_VertexAttrib4dARB);
+ SET_VertexAttrib1svARB(dest, loopback_VertexAttrib1svARB);
+ SET_VertexAttrib1dvARB(dest, loopback_VertexAttrib1dvARB);
+ SET_VertexAttrib2svARB(dest, loopback_VertexAttrib2svARB);
+ SET_VertexAttrib2dvARB(dest, loopback_VertexAttrib2dvARB);
+ SET_VertexAttrib3svARB(dest, loopback_VertexAttrib3svARB);
+ SET_VertexAttrib3dvARB(dest, loopback_VertexAttrib3dvARB);
+ SET_VertexAttrib4svARB(dest, loopback_VertexAttrib4svARB);
+ SET_VertexAttrib4dvARB(dest, loopback_VertexAttrib4dvARB);
+ SET_VertexAttrib4NubARB(dest, loopback_VertexAttrib4NubARB);
+ SET_VertexAttrib4NubvARB(dest, loopback_VertexAttrib4NubvARB);
+ SET_VertexAttrib4bvARB(dest, loopback_VertexAttrib4bvARB);
+ SET_VertexAttrib4ivARB(dest, loopback_VertexAttrib4ivARB);
+ SET_VertexAttrib4ubvARB(dest, loopback_VertexAttrib4ubvARB);
+ SET_VertexAttrib4usvARB(dest, loopback_VertexAttrib4usvARB);
+ SET_VertexAttrib4uivARB(dest, loopback_VertexAttrib4uivARB);
+ SET_VertexAttrib4NbvARB(dest, loopback_VertexAttrib4NbvARB);
+ SET_VertexAttrib4NsvARB(dest, loopback_VertexAttrib4NsvARB);
+ SET_VertexAttrib4NivARB(dest, loopback_VertexAttrib4NivARB);
+ SET_VertexAttrib4NusvARB(dest, loopback_VertexAttrib4NusvARB);
+ SET_VertexAttrib4NuivARB(dest, loopback_VertexAttrib4NuivARB);
+
+ /* GL_EXT_gpu_shader4, GL 3.0 */
+ SET_VertexAttribI1ivEXT(dest, loopback_VertexAttribI1iv);
+ SET_VertexAttribI1uivEXT(dest, loopback_VertexAttribI1uiv);
+ SET_VertexAttribI4bvEXT(dest, loopback_VertexAttribI4bv);
+ SET_VertexAttribI4svEXT(dest, loopback_VertexAttribI4sv);
+ SET_VertexAttribI4ubvEXT(dest, loopback_VertexAttribI4ubv);
+ SET_VertexAttribI4usvEXT(dest, loopback_VertexAttribI4usv);
+}
+
+
+#endif /* FEATURE_beginend */
diff --git a/mesalib/src/mesa/main/atifragshader.c b/mesalib/src/mesa/main/atifragshader.c
index ff7b042d2..c74c999f8 100644
--- a/mesalib/src/mesa/main/atifragshader.c
+++ b/mesalib/src/mesa/main/atifragshader.c
@@ -1,796 +1,796 @@
-/**
- * \file atifragshader.c
- * \author David Airlie
- * Copyright (C) 2004 David Airlie All Rights Reserved.
- *
- * 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
- * DAVID AIRLIE 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.
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/hash.h"
-#include "main/imports.h"
-#include "main/macros.h"
-#include "main/mfeatures.h"
-#include "main/enums.h"
-#include "main/mtypes.h"
-#include "main/dispatch.h"
-#include "main/atifragshader.h"
-
-#if FEATURE_ATI_fragment_shader
-
-#define MESA_DEBUG_ATI_FS 0
-
-static struct ati_fragment_shader DummyShader;
-
-
-void
-_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp)
-{
- SET_GenFragmentShadersATI(disp, _mesa_GenFragmentShadersATI);
- SET_BindFragmentShaderATI(disp, _mesa_BindFragmentShaderATI);
- SET_DeleteFragmentShaderATI(disp, _mesa_DeleteFragmentShaderATI);
- SET_BeginFragmentShaderATI(disp, _mesa_BeginFragmentShaderATI);
- SET_EndFragmentShaderATI(disp, _mesa_EndFragmentShaderATI);
- SET_PassTexCoordATI(disp, _mesa_PassTexCoordATI);
- SET_SampleMapATI(disp, _mesa_SampleMapATI);
- SET_ColorFragmentOp1ATI(disp, _mesa_ColorFragmentOp1ATI);
- SET_ColorFragmentOp2ATI(disp, _mesa_ColorFragmentOp2ATI);
- SET_ColorFragmentOp3ATI(disp, _mesa_ColorFragmentOp3ATI);
- SET_AlphaFragmentOp1ATI(disp, _mesa_AlphaFragmentOp1ATI);
- SET_AlphaFragmentOp2ATI(disp, _mesa_AlphaFragmentOp2ATI);
- SET_AlphaFragmentOp3ATI(disp, _mesa_AlphaFragmentOp3ATI);
- SET_SetFragmentShaderConstantATI(disp, _mesa_SetFragmentShaderConstantATI);
-}
-
-
-/**
- * Allocate and initialize a new ATI fragment shader object.
- */
-struct ati_fragment_shader *
-_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id)
-{
- struct ati_fragment_shader *s = CALLOC_STRUCT(ati_fragment_shader);
- (void) ctx;
- if (s) {
- s->Id = id;
- s->RefCount = 1;
- }
- return s;
-}
-
-
-/**
- * Delete the given ati fragment shader
- */
-void
-_mesa_delete_ati_fragment_shader(struct gl_context *ctx, struct ati_fragment_shader *s)
-{
- GLuint i;
- for (i = 0; i < MAX_NUM_PASSES_ATI; i++) {
- if (s->Instructions[i])
- free(s->Instructions[i]);
- if (s->SetupInst[i])
- free(s->SetupInst[i]);
- }
- free(s);
-}
-
-
-
-static void
-new_arith_inst(struct ati_fragment_shader *prog)
-{
-/* set "default" instruction as not all may get defined.
- there is no specified way to express a nop with ati fragment shaders we use
- GL_NONE as the op enum and just set some params to 0 - so nothing to do here */
- prog->numArithInstr[prog->cur_pass >> 1]++;
-}
-
-static void
-new_tex_inst(struct ati_fragment_shader *prog)
-{
-}
-
-static void match_pair_inst(struct ati_fragment_shader *curProg, GLuint optype)
-{
- if (optype == curProg->last_optype) {
- curProg->last_optype = 1;
- }
-}
-
-#if MESA_DEBUG_ATI_FS
-static char *
-create_dst_mod_str(GLuint mod)
-{
- static char ret_str[1024];
-
- memset(ret_str, 0, 1024);
- if (mod & GL_2X_BIT_ATI)
- strncat(ret_str, "|2X", 1024);
-
- if (mod & GL_4X_BIT_ATI)
- strncat(ret_str, "|4X", 1024);
-
- if (mod & GL_8X_BIT_ATI)
- strncat(ret_str, "|8X", 1024);
- if (mod & GL_HALF_BIT_ATI)
- strncat(ret_str, "|HA", 1024);
- if (mod & GL_QUARTER_BIT_ATI)
- strncat(ret_str, "|QU", 1024);
- if (mod & GL_EIGHTH_BIT_ATI)
- strncat(ret_str, "|EI", 1024);
-
- if (mod & GL_SATURATE_BIT_ATI)
- strncat(ret_str, "|SAT", 1024);
-
- if (strlen(ret_str) == 0)
- strncat(ret_str, "NONE", 1024);
- return ret_str;
-}
-
-static char *atifs_ops[] = {"ColorFragmentOp1ATI", "ColorFragmentOp2ATI", "ColorFragmentOp3ATI",
- "AlphaFragmentOp1ATI", "AlphaFragmentOp2ATI", "AlphaFragmentOp3ATI" };
-
-static void debug_op(GLint optype, GLuint arg_count, GLenum op, GLuint dst,
- GLuint dstMask, GLuint dstMod, GLuint arg1,
- GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
- GLuint arg2Rep, GLuint arg2Mod, GLuint arg3,
- GLuint arg3Rep, GLuint arg3Mod)
-{
- char *op_name;
-
- op_name = atifs_ops[(arg_count-1)+(optype?3:0)];
-
- fprintf(stderr, "%s(%s, %s", op_name, _mesa_lookup_enum_by_nr(op),
- _mesa_lookup_enum_by_nr(dst));
- if (!optype)
- fprintf(stderr, ", %d", dstMask);
-
- fprintf(stderr, ", %s", create_dst_mod_str(dstMod));
-
- fprintf(stderr, ", %s, %s, %d", _mesa_lookup_enum_by_nr(arg1),
- _mesa_lookup_enum_by_nr(arg1Rep), arg1Mod);
- if (arg_count>1)
- fprintf(stderr, ", %s, %s, %d", _mesa_lookup_enum_by_nr(arg2),
- _mesa_lookup_enum_by_nr(arg2Rep), arg2Mod);
- if (arg_count>2)
- fprintf(stderr, ", %s, %s, %d", _mesa_lookup_enum_by_nr(arg3),
- _mesa_lookup_enum_by_nr(arg3Rep), arg3Mod);
-
- fprintf(stderr,")\n");
-
-}
-#endif
-
-static int check_arith_arg(struct ati_fragment_shader *curProg,
- GLuint optype, GLuint arg, GLuint argRep)
-{
- GET_CURRENT_CONTEXT(ctx);
-
- if (((arg < GL_CON_0_ATI) || (arg > GL_CON_7_ATI)) &&
- ((arg < GL_REG_0_ATI) || (arg > GL_REG_5_ATI)) &&
- (arg != GL_ZERO) && (arg != GL_ONE) &&
- (arg != GL_PRIMARY_COLOR_ARB) && (arg != GL_SECONDARY_INTERPOLATOR_ATI)) {
- _mesa_error(ctx, GL_INVALID_ENUM, "C/AFragmentOpATI(arg)");
- return 0;
- }
- if ((arg == GL_SECONDARY_INTERPOLATOR_ATI) && (((optype == 0) && (argRep == GL_ALPHA)) ||
- ((optype == 1) && ((arg == GL_ALPHA) || (argRep == GL_NONE))))) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(sec_interp)");
- return 0;
- }
- if ((arg == GL_SECONDARY_INTERPOLATOR_ATI) && (((optype == 0) && (argRep == GL_ALPHA)) ||
- ((optype == 1) && ((arg == GL_ALPHA) || (argRep == GL_NONE))))) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(sec_interp)");
- return 0;
- }
- if ((curProg->cur_pass == 1) &&
- ((arg == GL_PRIMARY_COLOR_ARB) || (arg == GL_SECONDARY_INTERPOLATOR_ATI))) {
- curProg->interpinp1 = GL_TRUE;
- }
- return 1;
-}
-
-GLuint GLAPIENTRY
-_mesa_GenFragmentShadersATI(GLuint range)
-{
- GLuint first;
- GLuint i;
- GET_CURRENT_CONTEXT(ctx);
-
- if (range == 0) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glGenFragmentShadersATI(range)");
- return 0;
- }
-
- if (ctx->ATIFragmentShader.Compiling) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glGenFragmentShadersATI(insideShader)");
- return 0;
- }
-
- first = _mesa_HashFindFreeKeyBlock(ctx->Shared->ATIShaders, range);
- for (i = 0; i < range; i++) {
- _mesa_HashInsert(ctx->Shared->ATIShaders, first + i, &DummyShader);
- }
-
- return first;
-}
-
-void GLAPIENTRY
-_mesa_BindFragmentShaderATI(GLuint id)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
- struct ati_fragment_shader *newProg;
-
- if (ctx->ATIFragmentShader.Compiling) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glBindFragmentShaderATI(insideShader)");
- return;
- }
-
- FLUSH_VERTICES(ctx, _NEW_PROGRAM);
-
- if (curProg->Id == id) {
- return;
- }
-
- /* unbind current */
- if (curProg->Id != 0) {
- curProg->RefCount--;
- if (curProg->RefCount <= 0) {
- _mesa_HashRemove(ctx->Shared->ATIShaders, id);
- }
- }
-
- /* find new shader */
- if (id == 0) {
- newProg = ctx->Shared->DefaultFragmentShader;
- }
- else {
- newProg = (struct ati_fragment_shader *)
- _mesa_HashLookup(ctx->Shared->ATIShaders, id);
- if (!newProg || newProg == &DummyShader) {
- /* allocate a new program now */
- newProg = _mesa_new_ati_fragment_shader(ctx, id);
- if (!newProg) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindFragmentShaderATI");
- return;
- }
- _mesa_HashInsert(ctx->Shared->ATIShaders, id, newProg);
- }
-
- }
-
- /* do actual bind */
- ctx->ATIFragmentShader.Current = newProg;
-
- ASSERT(ctx->ATIFragmentShader.Current);
- if (newProg)
- newProg->RefCount++;
-
- /*if (ctx->Driver.BindProgram)
- ctx->Driver.BindProgram(ctx, target, prog); */
-}
-
-void GLAPIENTRY
-_mesa_DeleteFragmentShaderATI(GLuint id)
-{
- GET_CURRENT_CONTEXT(ctx);
-
- if (ctx->ATIFragmentShader.Compiling) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glDeleteFragmentShaderATI(insideShader)");
- return;
- }
-
- if (id != 0) {
- struct ati_fragment_shader *prog = (struct ati_fragment_shader *)
- _mesa_HashLookup(ctx->Shared->ATIShaders, id);
- if (prog == &DummyShader) {
- _mesa_HashRemove(ctx->Shared->ATIShaders, id);
- }
- else if (prog) {
- if (ctx->ATIFragmentShader.Current &&
- ctx->ATIFragmentShader.Current->Id == id) {
- FLUSH_VERTICES(ctx, _NEW_PROGRAM);
- _mesa_BindFragmentShaderATI(0);
- }
- }
-
- /* The ID is immediately available for re-use now */
- _mesa_HashRemove(ctx->Shared->ATIShaders, id);
- if (prog) {
- prog->RefCount--;
- if (prog->RefCount <= 0) {
- assert(prog != &DummyShader);
- free(prog);
- }
- }
- }
-}
-
-
-void GLAPIENTRY
-_mesa_BeginFragmentShaderATI(void)
-{
- GLint i;
- GET_CURRENT_CONTEXT(ctx);
-
- if (ctx->ATIFragmentShader.Compiling) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glBeginFragmentShaderATI(insideShader)");
- return;
- }
-
- FLUSH_VERTICES(ctx, _NEW_PROGRAM);
-
- /* if the shader was already defined free instructions and get new ones
- (or, could use the same mem but would need to reinitialize) */
- /* no idea if it's allowed to redefine a shader */
- for (i = 0; i < MAX_NUM_PASSES_ATI; i++) {
- if (ctx->ATIFragmentShader.Current->Instructions[i])
- free(ctx->ATIFragmentShader.Current->Instructions[i]);
- if (ctx->ATIFragmentShader.Current->SetupInst[i])
- free(ctx->ATIFragmentShader.Current->SetupInst[i]);
- }
-
- /* malloc the instructions here - not sure if the best place but its
- a start */
- for (i = 0; i < MAX_NUM_PASSES_ATI; i++) {
- ctx->ATIFragmentShader.Current->Instructions[i] =
- (struct atifs_instruction *)
- calloc(1, sizeof(struct atifs_instruction) *
- (MAX_NUM_INSTRUCTIONS_PER_PASS_ATI));
- ctx->ATIFragmentShader.Current->SetupInst[i] =
- (struct atifs_setupinst *)
- calloc(1, sizeof(struct atifs_setupinst) *
- (MAX_NUM_FRAGMENT_REGISTERS_ATI));
- }
-
-/* can't rely on calloc for initialization as it's possible to redefine a shader (?) */
- ctx->ATIFragmentShader.Current->LocalConstDef = 0;
- ctx->ATIFragmentShader.Current->numArithInstr[0] = 0;
- ctx->ATIFragmentShader.Current->numArithInstr[1] = 0;
- ctx->ATIFragmentShader.Current->regsAssigned[0] = 0;
- ctx->ATIFragmentShader.Current->regsAssigned[1] = 0;
- ctx->ATIFragmentShader.Current->NumPasses = 0;
- ctx->ATIFragmentShader.Current->cur_pass = 0;
- ctx->ATIFragmentShader.Current->last_optype = 0;
- ctx->ATIFragmentShader.Current->interpinp1 = GL_FALSE;
- ctx->ATIFragmentShader.Current->isValid = GL_FALSE;
- ctx->ATIFragmentShader.Current->swizzlerq = 0;
- ctx->ATIFragmentShader.Compiling = 1;
-}
-
-void GLAPIENTRY
-_mesa_EndFragmentShaderATI(void)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
-#if MESA_DEBUG_ATI_FS
- GLint i, j;
-#endif
-
- if (!ctx->ATIFragmentShader.Compiling) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glEndFragmentShaderATI(outsideShader)");
- return;
- }
- if (curProg->interpinp1 && (ctx->ATIFragmentShader.Current->cur_pass > 1)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glEndFragmentShaderATI(interpinfirstpass)");
- /* according to spec, DON'T return here */
- }
-
- match_pair_inst(curProg, 0);
- ctx->ATIFragmentShader.Compiling = 0;
- ctx->ATIFragmentShader.Current->isValid = GL_TRUE;
- if ((ctx->ATIFragmentShader.Current->cur_pass == 0) ||
- (ctx->ATIFragmentShader.Current->cur_pass == 2)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glEndFragmentShaderATI(noarithinst)");
- }
- if (ctx->ATIFragmentShader.Current->cur_pass > 1)
- ctx->ATIFragmentShader.Current->NumPasses = 2;
- else
- ctx->ATIFragmentShader.Current->NumPasses = 1;
-
- ctx->ATIFragmentShader.Current->cur_pass = 0;
-
-#if MESA_DEBUG_ATI_FS
- for (j = 0; j < MAX_NUM_PASSES_ATI; j++) {
- for (i = 0; i < MAX_NUM_FRAGMENT_REGISTERS_ATI; i++) {
- GLuint op = curProg->SetupInst[j][i].Opcode;
- const char *op_enum = op > 5 ? _mesa_lookup_enum_by_nr(op) : "0";
- GLuint src = curProg->SetupInst[j][i].src;
- GLuint swizzle = curProg->SetupInst[j][i].swizzle;
- fprintf(stderr, "%2d %04X %s %d %04X\n", i, op, op_enum, src,
- swizzle);
- }
- for (i = 0; i < curProg->numArithInstr[j]; i++) {
- GLuint op0 = curProg->Instructions[j][i].Opcode[0];
- GLuint op1 = curProg->Instructions[j][i].Opcode[1];
- const char *op0_enum = op0 > 5 ? _mesa_lookup_enum_by_nr(op0) : "0";
- const char *op1_enum = op1 > 5 ? _mesa_lookup_enum_by_nr(op1) : "0";
- GLuint count0 = curProg->Instructions[j][i].ArgCount[0];
- GLuint count1 = curProg->Instructions[j][i].ArgCount[1];
- fprintf(stderr, "%2d %04X %s %d %04X %s %d\n", i, op0, op0_enum, count0,
- op1, op1_enum, count1);
- }
- }
-#endif
-
- if (!ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_SHADER_ATI, NULL)) {
- ctx->ATIFragmentShader.Current->isValid = GL_FALSE;
- /* XXX is this the right error? */
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glEndFragmentShaderATI(driver rejected shader)");
- }
-}
-
-void GLAPIENTRY
-_mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
- struct atifs_setupinst *curI;
-
- if (!ctx->ATIFragmentShader.Compiling) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glPassTexCoordATI(outsideShader)");
- return;
- }
-
- if (curProg->cur_pass == 1) {
- match_pair_inst(curProg, 0);
- curProg->cur_pass = 2;
- }
- if ((curProg->cur_pass > 2) ||
- ((1 << (dst - GL_REG_0_ATI)) & curProg->regsAssigned[curProg->cur_pass >> 1])) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glPassTexCoord(pass)");
- return;
- }
- if ((dst < GL_REG_0_ATI) || (dst > GL_REG_5_ATI) ||
- ((dst - GL_REG_0_ATI) >= ctx->Const.MaxTextureUnits)) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glPassTexCoordATI(dst)");
- return;
- }
- if (((coord < GL_REG_0_ATI) || (coord > GL_REG_5_ATI)) &&
- ((coord < GL_TEXTURE0_ARB) || (coord > GL_TEXTURE7_ARB) ||
- ((coord - GL_TEXTURE0_ARB) >= ctx->Const.MaxTextureUnits))) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glPassTexCoordATI(coord)");
- return;
- }
- if ((curProg->cur_pass == 0) && (coord >= GL_REG_0_ATI)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glPassTexCoordATI(coord)");
- return;
- }
- if (!(swizzle >= GL_SWIZZLE_STR_ATI) && (swizzle <= GL_SWIZZLE_STQ_DQ_ATI)) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glPassTexCoordATI(swizzle)");
- return;
- }
- if ((swizzle & 1) && (coord >= GL_REG_0_ATI)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glPassTexCoordATI(swizzle)");
- return;
- }
- if (coord <= GL_TEXTURE7_ARB) {
- GLuint tmp = coord - GL_TEXTURE0_ARB;
- if ((((curProg->swizzlerq >> (tmp * 2)) & 3) != 0) &&
- (((swizzle & 1) + 1) != ((curProg->swizzlerq >> (tmp * 2)) & 3))) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glPassTexCoordATI(swizzle)");
- return;
- } else {
- curProg->swizzlerq |= (((swizzle & 1) + 1) << (tmp * 2));
- }
- }
-
- curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI);
- new_tex_inst(curProg);
-
- /* add the instructions */
- curI = &curProg->SetupInst[curProg->cur_pass >> 1][dst - GL_REG_0_ATI];
-
- curI->Opcode = ATI_FRAGMENT_SHADER_PASS_OP;
- curI->src = coord;
- curI->swizzle = swizzle;
-
-#if MESA_DEBUG_ATI_FS
- _mesa_debug(ctx, "%s(%s, %s, %s)\n", __FUNCTION__,
- _mesa_lookup_enum_by_nr(dst), _mesa_lookup_enum_by_nr(coord),
- _mesa_lookup_enum_by_nr(swizzle));
-#endif
-}
-
-void GLAPIENTRY
-_mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
- struct atifs_setupinst *curI;
-
- if (!ctx->ATIFragmentShader.Compiling) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glSampleMapATI(outsideShader)");
- return;
- }
-
- if (curProg->cur_pass == 1) {
- match_pair_inst(curProg, 0);
- curProg->cur_pass = 2;
- }
- if ((curProg->cur_pass > 2) ||
- ((1 << (dst - GL_REG_0_ATI)) & curProg->regsAssigned[curProg->cur_pass >> 1])) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glSampleMapATI(pass)");
- return;
- }
- if ((dst < GL_REG_0_ATI) || (dst > GL_REG_5_ATI) ||
- ((dst - GL_REG_0_ATI) >= ctx->Const.MaxTextureUnits)) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glSampleMapATI(dst)");
- return;
- }
- if (((interp < GL_REG_0_ATI) || (interp > GL_REG_5_ATI)) &&
- ((interp < GL_TEXTURE0_ARB) || (interp > GL_TEXTURE7_ARB) ||
- ((interp - GL_TEXTURE0_ARB) >= ctx->Const.MaxTextureUnits))) {
- /* is this texture5 or texture7? spec is a bit unclear there */
- _mesa_error(ctx, GL_INVALID_ENUM, "glSampleMapATI(interp)");
- return;
- }
- if ((curProg->cur_pass == 0) && (interp >= GL_REG_0_ATI)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glSampleMapATI(interp)");
- return;
- }
- if (!(swizzle >= GL_SWIZZLE_STR_ATI) && (swizzle <= GL_SWIZZLE_STQ_DQ_ATI)) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glSampleMapATI(swizzle)");
- return;
- }
- if ((swizzle & 1) && (interp >= GL_REG_0_ATI)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glSampleMapATI(swizzle)");
- return;
- }
- if (interp <= GL_TEXTURE7_ARB) {
- GLuint tmp = interp - GL_TEXTURE0_ARB;
- if ((((curProg->swizzlerq >> (tmp * 2)) & 3) != 0) &&
- (((swizzle & 1) + 1) != ((curProg->swizzlerq >> (tmp * 2)) & 3))) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glSampleMapATI(swizzle)");
- return;
- } else {
- curProg->swizzlerq |= (((swizzle & 1) + 1) << (tmp * 2));
- }
- }
-
- curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI);
- new_tex_inst(curProg);
-
- /* add the instructions */
- curI = &curProg->SetupInst[curProg->cur_pass >> 1][dst - GL_REG_0_ATI];
-
- curI->Opcode = ATI_FRAGMENT_SHADER_SAMPLE_OP;
- curI->src = interp;
- curI->swizzle = swizzle;
-
-#if MESA_DEBUG_ATI_FS
- _mesa_debug(ctx, "%s(%s, %s, %s)\n", __FUNCTION__,
- _mesa_lookup_enum_by_nr(dst), _mesa_lookup_enum_by_nr(interp),
- _mesa_lookup_enum_by_nr(swizzle));
-#endif
-}
-
-static void
-_mesa_FragmentOpXATI(GLint optype, GLuint arg_count, GLenum op, GLuint dst,
- GLuint dstMask, GLuint dstMod, GLuint arg1,
- GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
- GLuint arg2Rep, GLuint arg2Mod, GLuint arg3,
- GLuint arg3Rep, GLuint arg3Mod)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
- GLint ci;
- struct atifs_instruction *curI;
- GLuint modtemp = dstMod & ~GL_SATURATE_BIT_ATI;
-
- if (!ctx->ATIFragmentShader.Compiling) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(outsideShader)");
- return;
- }
-
- if (curProg->cur_pass==0)
- curProg->cur_pass=1;
-
- else if (curProg->cur_pass==2)
- curProg->cur_pass=3;
-
- /* decide whether this is a new instruction or not ... all color instructions are new,
- and alpha instructions might also be new if there was no preceding color inst */
- if ((optype == 0) || (curProg->last_optype == optype)) {
- if (curProg->numArithInstr[curProg->cur_pass >> 1] > 7) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(instrCount)");
- return;
- }
- /* easier to do that here slight side effect invalid instr will still be inserted as nops */
- match_pair_inst(curProg, optype);
- new_arith_inst(curProg);
- }
- curProg->last_optype = optype;
- ci = curProg->numArithInstr[curProg->cur_pass >> 1] - 1;
-
- /* add the instructions */
- curI = &curProg->Instructions[curProg->cur_pass >> 1][ci];
-
- /* error checking */
- if ((dst < GL_REG_0_ATI) || (dst > GL_REG_5_ATI)) {
- _mesa_error(ctx, GL_INVALID_ENUM, "C/AFragmentOpATI(dst)");
- return;
- }
- if ((modtemp != GL_NONE) && (modtemp != GL_2X_BIT_ATI) &&
- (modtemp != GL_4X_BIT_ATI) && (modtemp != GL_8X_BIT_ATI) &&
- (modtemp != GL_HALF_BIT_ATI) && !(modtemp != GL_QUARTER_BIT_ATI) &&
- (modtemp != GL_EIGHTH_BIT_ATI)) {
- _mesa_error(ctx, GL_INVALID_ENUM, "C/AFragmentOpATI(dstMod)%x", modtemp);
- return;
- }
- /* op checking? Actually looks like that's missing in the spec but we'll do it anyway */
- if (((op < GL_ADD_ATI) || (op > GL_DOT2_ADD_ATI)) && !(op == GL_MOV_ATI)) {
- _mesa_error(ctx, GL_INVALID_ENUM, "C/AFragmentOpATI(op)");
- return;
- }
- if (optype == 1) {
- if (((op == GL_DOT2_ADD_ATI) && (curI->Opcode[0] != GL_DOT2_ADD_ATI)) ||
- ((op == GL_DOT3_ATI) && (curI->Opcode[0] != GL_DOT3_ATI)) ||
- ((op == GL_DOT4_ATI) && (curI->Opcode[0] != GL_DOT4_ATI)) ||
- ((op != GL_DOT4_ATI) && (curI->Opcode[0] == GL_DOT4_ATI))) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "AFragmentOpATI(op)");
- return;
- }
- }
- if ((op == GL_DOT4_ATI) &&
- (((arg1 == GL_SECONDARY_INTERPOLATOR_ATI) && ((arg1Rep == GL_ALPHA) || (arg1Rep == GL_NONE))) ||
- (((arg2 == GL_SECONDARY_INTERPOLATOR_ATI) && ((arg2Rep == GL_ALPHA) || (arg2Rep == GL_NONE)))))) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(sec_interp)");
- }
-
- if (!check_arith_arg(curProg, optype, arg1, arg1Rep)) {
- return;
- }
- if (arg2) {
- if (!check_arith_arg(curProg, optype, arg2, arg2Rep)) {
- return;
- }
- }
- if (arg3) {
- if (!check_arith_arg(curProg, optype, arg3, arg3Rep)) {
- return;
- }
- if ((arg1 >= GL_CON_0_ATI) && (arg1 <= GL_CON_7_ATI) &&
- (arg2 >= GL_CON_0_ATI) && (arg2 <= GL_CON_7_ATI) &&
- (arg3 >= GL_CON_0_ATI) && (arg3 <= GL_CON_7_ATI) &&
- (arg1 != arg2) && (arg1 != arg3) && (arg2 != arg3)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(3Consts)");
- return;
- }
- }
-
- /* all ok - not all fully validated though (e.g. argNMod - spec doesn't say anything) */
-
- curI->Opcode[optype] = op;
- curI->SrcReg[optype][0].Index = arg1;
- curI->SrcReg[optype][0].argRep = arg1Rep;
- curI->SrcReg[optype][0].argMod = arg1Mod;
- curI->ArgCount[optype] = arg_count;
-
- if (arg2) {
- curI->SrcReg[optype][1].Index = arg2;
- curI->SrcReg[optype][1].argRep = arg2Rep;
- curI->SrcReg[optype][1].argMod = arg2Mod;
- }
-
- if (arg3) {
- curI->SrcReg[optype][2].Index = arg3;
- curI->SrcReg[optype][2].argRep = arg3Rep;
- curI->SrcReg[optype][2].argMod = arg3Mod;
- }
-
- curI->DstReg[optype].Index = dst;
- curI->DstReg[optype].dstMod = dstMod;
- curI->DstReg[optype].dstMask = dstMask;
-
-#if MESA_DEBUG_ATI_FS
- debug_op(optype, arg_count, op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod);
-#endif
-
-}
-
-void GLAPIENTRY
-_mesa_ColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask,
- GLuint dstMod, GLuint arg1, GLuint arg1Rep,
- GLuint arg1Mod)
-{
- _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_COLOR_OP, 1, op, dst, dstMask,
- dstMod, arg1, arg1Rep, arg1Mod, 0, 0, 0, 0, 0, 0);
-}
-
-void GLAPIENTRY
-_mesa_ColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask,
- GLuint dstMod, GLuint arg1, GLuint arg1Rep,
- GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
- GLuint arg2Mod)
-{
- _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_COLOR_OP, 2, op, dst, dstMask,
- dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep,
- arg2Mod, 0, 0, 0);
-}
-
-void GLAPIENTRY
-_mesa_ColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask,
- GLuint dstMod, GLuint arg1, GLuint arg1Rep,
- GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
- GLuint arg2Mod, GLuint arg3, GLuint arg3Rep,
- GLuint arg3Mod)
-{
- _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_COLOR_OP, 3, op, dst, dstMask,
- dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep,
- arg2Mod, arg3, arg3Rep, arg3Mod);
-}
-
-void GLAPIENTRY
-_mesa_AlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
- GLuint arg1Rep, GLuint arg1Mod)
-{
- _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_ALPHA_OP, 1, op, dst, 0, dstMod,
- arg1, arg1Rep, arg1Mod, 0, 0, 0, 0, 0, 0);
-}
-
-void GLAPIENTRY
-_mesa_AlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
- GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
- GLuint arg2Rep, GLuint arg2Mod)
-{
- _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_ALPHA_OP, 2, op, dst, 0, dstMod,
- arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, 0, 0,
- 0);
-}
-
-void GLAPIENTRY
-_mesa_AlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
- GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
- GLuint arg2Rep, GLuint arg2Mod, GLuint arg3,
- GLuint arg3Rep, GLuint arg3Mod)
-{
- _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_ALPHA_OP, 3, op, dst, 0, dstMod,
- arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3,
- arg3Rep, arg3Mod);
-}
-
-void GLAPIENTRY
-_mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value)
-{
- GLuint dstindex;
- GET_CURRENT_CONTEXT(ctx);
-
- if ((dst < GL_CON_0_ATI) || (dst > GL_CON_7_ATI)) {
- /* spec says nothing about what should happen here but we can't just segfault...*/
- _mesa_error(ctx, GL_INVALID_ENUM, "glSetFragmentShaderConstantATI(dst)");
- return;
- }
-
- dstindex = dst - GL_CON_0_ATI;
- if (ctx->ATIFragmentShader.Compiling) {
- struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
- COPY_4V(curProg->Constants[dstindex], value);
- curProg->LocalConstDef |= 1 << dstindex;
- }
- else {
- FLUSH_VERTICES(ctx, _NEW_PROGRAM);
- COPY_4V(ctx->ATIFragmentShader.GlobalConstants[dstindex], value);
- }
-}
-
-#endif /* FEATURE_ATI_fragment_shader */
+/**
+ * \file atifragshader.c
+ * \author David Airlie
+ * Copyright (C) 2004 David Airlie All Rights Reserved.
+ *
+ * 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
+ * DAVID AIRLIE 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.
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/hash.h"
+#include "main/imports.h"
+#include "main/macros.h"
+#include "main/mfeatures.h"
+#include "main/enums.h"
+#include "main/mtypes.h"
+#include "main/dispatch.h"
+#include "main/atifragshader.h"
+
+#if FEATURE_ATI_fragment_shader
+
+#define MESA_DEBUG_ATI_FS 0
+
+static struct ati_fragment_shader DummyShader;
+
+
+void
+_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp)
+{
+ SET_GenFragmentShadersATI(disp, _mesa_GenFragmentShadersATI);
+ SET_BindFragmentShaderATI(disp, _mesa_BindFragmentShaderATI);
+ SET_DeleteFragmentShaderATI(disp, _mesa_DeleteFragmentShaderATI);
+ SET_BeginFragmentShaderATI(disp, _mesa_BeginFragmentShaderATI);
+ SET_EndFragmentShaderATI(disp, _mesa_EndFragmentShaderATI);
+ SET_PassTexCoordATI(disp, _mesa_PassTexCoordATI);
+ SET_SampleMapATI(disp, _mesa_SampleMapATI);
+ SET_ColorFragmentOp1ATI(disp, _mesa_ColorFragmentOp1ATI);
+ SET_ColorFragmentOp2ATI(disp, _mesa_ColorFragmentOp2ATI);
+ SET_ColorFragmentOp3ATI(disp, _mesa_ColorFragmentOp3ATI);
+ SET_AlphaFragmentOp1ATI(disp, _mesa_AlphaFragmentOp1ATI);
+ SET_AlphaFragmentOp2ATI(disp, _mesa_AlphaFragmentOp2ATI);
+ SET_AlphaFragmentOp3ATI(disp, _mesa_AlphaFragmentOp3ATI);
+ SET_SetFragmentShaderConstantATI(disp, _mesa_SetFragmentShaderConstantATI);
+}
+
+
+/**
+ * Allocate and initialize a new ATI fragment shader object.
+ */
+struct ati_fragment_shader *
+_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id)
+{
+ struct ati_fragment_shader *s = CALLOC_STRUCT(ati_fragment_shader);
+ (void) ctx;
+ if (s) {
+ s->Id = id;
+ s->RefCount = 1;
+ }
+ return s;
+}
+
+
+/**
+ * Delete the given ati fragment shader
+ */
+void
+_mesa_delete_ati_fragment_shader(struct gl_context *ctx, struct ati_fragment_shader *s)
+{
+ GLuint i;
+ for (i = 0; i < MAX_NUM_PASSES_ATI; i++) {
+ if (s->Instructions[i])
+ free(s->Instructions[i]);
+ if (s->SetupInst[i])
+ free(s->SetupInst[i]);
+ }
+ free(s);
+}
+
+
+
+static void
+new_arith_inst(struct ati_fragment_shader *prog)
+{
+/* set "default" instruction as not all may get defined.
+ there is no specified way to express a nop with ati fragment shaders we use
+ GL_NONE as the op enum and just set some params to 0 - so nothing to do here */
+ prog->numArithInstr[prog->cur_pass >> 1]++;
+}
+
+static void
+new_tex_inst(struct ati_fragment_shader *prog)
+{
+}
+
+static void match_pair_inst(struct ati_fragment_shader *curProg, GLuint optype)
+{
+ if (optype == curProg->last_optype) {
+ curProg->last_optype = 1;
+ }
+}
+
+#if MESA_DEBUG_ATI_FS
+static char *
+create_dst_mod_str(GLuint mod)
+{
+ static char ret_str[1024];
+
+ memset(ret_str, 0, 1024);
+ if (mod & GL_2X_BIT_ATI)
+ strncat(ret_str, "|2X", 1024);
+
+ if (mod & GL_4X_BIT_ATI)
+ strncat(ret_str, "|4X", 1024);
+
+ if (mod & GL_8X_BIT_ATI)
+ strncat(ret_str, "|8X", 1024);
+ if (mod & GL_HALF_BIT_ATI)
+ strncat(ret_str, "|HA", 1024);
+ if (mod & GL_QUARTER_BIT_ATI)
+ strncat(ret_str, "|QU", 1024);
+ if (mod & GL_EIGHTH_BIT_ATI)
+ strncat(ret_str, "|EI", 1024);
+
+ if (mod & GL_SATURATE_BIT_ATI)
+ strncat(ret_str, "|SAT", 1024);
+
+ if (strlen(ret_str) == 0)
+ strncat(ret_str, "NONE", 1024);
+ return ret_str;
+}
+
+static char *atifs_ops[] = {"ColorFragmentOp1ATI", "ColorFragmentOp2ATI", "ColorFragmentOp3ATI",
+ "AlphaFragmentOp1ATI", "AlphaFragmentOp2ATI", "AlphaFragmentOp3ATI" };
+
+static void debug_op(GLint optype, GLuint arg_count, GLenum op, GLuint dst,
+ GLuint dstMask, GLuint dstMod, GLuint arg1,
+ GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
+ GLuint arg2Rep, GLuint arg2Mod, GLuint arg3,
+ GLuint arg3Rep, GLuint arg3Mod)
+{
+ char *op_name;
+
+ op_name = atifs_ops[(arg_count-1)+(optype?3:0)];
+
+ fprintf(stderr, "%s(%s, %s", op_name, _mesa_lookup_enum_by_nr(op),
+ _mesa_lookup_enum_by_nr(dst));
+ if (!optype)
+ fprintf(stderr, ", %d", dstMask);
+
+ fprintf(stderr, ", %s", create_dst_mod_str(dstMod));
+
+ fprintf(stderr, ", %s, %s, %d", _mesa_lookup_enum_by_nr(arg1),
+ _mesa_lookup_enum_by_nr(arg1Rep), arg1Mod);
+ if (arg_count>1)
+ fprintf(stderr, ", %s, %s, %d", _mesa_lookup_enum_by_nr(arg2),
+ _mesa_lookup_enum_by_nr(arg2Rep), arg2Mod);
+ if (arg_count>2)
+ fprintf(stderr, ", %s, %s, %d", _mesa_lookup_enum_by_nr(arg3),
+ _mesa_lookup_enum_by_nr(arg3Rep), arg3Mod);
+
+ fprintf(stderr,")\n");
+
+}
+#endif
+
+static int check_arith_arg(struct ati_fragment_shader *curProg,
+ GLuint optype, GLuint arg, GLuint argRep)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ if (((arg < GL_CON_0_ATI) || (arg > GL_CON_7_ATI)) &&
+ ((arg < GL_REG_0_ATI) || (arg > GL_REG_5_ATI)) &&
+ (arg != GL_ZERO) && (arg != GL_ONE) &&
+ (arg != GL_PRIMARY_COLOR_ARB) && (arg != GL_SECONDARY_INTERPOLATOR_ATI)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "C/AFragmentOpATI(arg)");
+ return 0;
+ }
+ if ((arg == GL_SECONDARY_INTERPOLATOR_ATI) && (((optype == 0) && (argRep == GL_ALPHA)) ||
+ ((optype == 1) && ((arg == GL_ALPHA) || (argRep == GL_NONE))))) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(sec_interp)");
+ return 0;
+ }
+ if ((arg == GL_SECONDARY_INTERPOLATOR_ATI) && (((optype == 0) && (argRep == GL_ALPHA)) ||
+ ((optype == 1) && ((arg == GL_ALPHA) || (argRep == GL_NONE))))) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(sec_interp)");
+ return 0;
+ }
+ if ((curProg->cur_pass == 1) &&
+ ((arg == GL_PRIMARY_COLOR_ARB) || (arg == GL_SECONDARY_INTERPOLATOR_ATI))) {
+ curProg->interpinp1 = GL_TRUE;
+ }
+ return 1;
+}
+
+GLuint GLAPIENTRY
+_mesa_GenFragmentShadersATI(GLuint range)
+{
+ GLuint first;
+ GLuint i;
+ GET_CURRENT_CONTEXT(ctx);
+
+ if (range == 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glGenFragmentShadersATI(range)");
+ return 0;
+ }
+
+ if (ctx->ATIFragmentShader.Compiling) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glGenFragmentShadersATI(insideShader)");
+ return 0;
+ }
+
+ first = _mesa_HashFindFreeKeyBlock(ctx->Shared->ATIShaders, range);
+ for (i = 0; i < range; i++) {
+ _mesa_HashInsert(ctx->Shared->ATIShaders, first + i, &DummyShader);
+ }
+
+ return first;
+}
+
+void GLAPIENTRY
+_mesa_BindFragmentShaderATI(GLuint id)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
+ struct ati_fragment_shader *newProg;
+
+ if (ctx->ATIFragmentShader.Compiling) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glBindFragmentShaderATI(insideShader)");
+ return;
+ }
+
+ FLUSH_VERTICES(ctx, _NEW_PROGRAM);
+
+ if (curProg->Id == id) {
+ return;
+ }
+
+ /* unbind current */
+ if (curProg->Id != 0) {
+ curProg->RefCount--;
+ if (curProg->RefCount <= 0) {
+ _mesa_HashRemove(ctx->Shared->ATIShaders, id);
+ }
+ }
+
+ /* find new shader */
+ if (id == 0) {
+ newProg = ctx->Shared->DefaultFragmentShader;
+ }
+ else {
+ newProg = (struct ati_fragment_shader *)
+ _mesa_HashLookup(ctx->Shared->ATIShaders, id);
+ if (!newProg || newProg == &DummyShader) {
+ /* allocate a new program now */
+ newProg = _mesa_new_ati_fragment_shader(ctx, id);
+ if (!newProg) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindFragmentShaderATI");
+ return;
+ }
+ _mesa_HashInsert(ctx->Shared->ATIShaders, id, newProg);
+ }
+
+ }
+
+ /* do actual bind */
+ ctx->ATIFragmentShader.Current = newProg;
+
+ ASSERT(ctx->ATIFragmentShader.Current);
+ if (newProg)
+ newProg->RefCount++;
+
+ /*if (ctx->Driver.BindProgram)
+ ctx->Driver.BindProgram(ctx, target, prog); */
+}
+
+void GLAPIENTRY
+_mesa_DeleteFragmentShaderATI(GLuint id)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ if (ctx->ATIFragmentShader.Compiling) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glDeleteFragmentShaderATI(insideShader)");
+ return;
+ }
+
+ if (id != 0) {
+ struct ati_fragment_shader *prog = (struct ati_fragment_shader *)
+ _mesa_HashLookup(ctx->Shared->ATIShaders, id);
+ if (prog == &DummyShader) {
+ _mesa_HashRemove(ctx->Shared->ATIShaders, id);
+ }
+ else if (prog) {
+ if (ctx->ATIFragmentShader.Current &&
+ ctx->ATIFragmentShader.Current->Id == id) {
+ FLUSH_VERTICES(ctx, _NEW_PROGRAM);
+ _mesa_BindFragmentShaderATI(0);
+ }
+ }
+
+ /* The ID is immediately available for re-use now */
+ _mesa_HashRemove(ctx->Shared->ATIShaders, id);
+ if (prog) {
+ prog->RefCount--;
+ if (prog->RefCount <= 0) {
+ assert(prog != &DummyShader);
+ free(prog);
+ }
+ }
+ }
+}
+
+
+void GLAPIENTRY
+_mesa_BeginFragmentShaderATI(void)
+{
+ GLint i;
+ GET_CURRENT_CONTEXT(ctx);
+
+ if (ctx->ATIFragmentShader.Compiling) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glBeginFragmentShaderATI(insideShader)");
+ return;
+ }
+
+ FLUSH_VERTICES(ctx, _NEW_PROGRAM);
+
+ /* if the shader was already defined free instructions and get new ones
+ (or, could use the same mem but would need to reinitialize) */
+ /* no idea if it's allowed to redefine a shader */
+ for (i = 0; i < MAX_NUM_PASSES_ATI; i++) {
+ if (ctx->ATIFragmentShader.Current->Instructions[i])
+ free(ctx->ATIFragmentShader.Current->Instructions[i]);
+ if (ctx->ATIFragmentShader.Current->SetupInst[i])
+ free(ctx->ATIFragmentShader.Current->SetupInst[i]);
+ }
+
+ /* malloc the instructions here - not sure if the best place but its
+ a start */
+ for (i = 0; i < MAX_NUM_PASSES_ATI; i++) {
+ ctx->ATIFragmentShader.Current->Instructions[i] =
+ (struct atifs_instruction *)
+ calloc(1, sizeof(struct atifs_instruction) *
+ (MAX_NUM_INSTRUCTIONS_PER_PASS_ATI));
+ ctx->ATIFragmentShader.Current->SetupInst[i] =
+ (struct atifs_setupinst *)
+ calloc(1, sizeof(struct atifs_setupinst) *
+ (MAX_NUM_FRAGMENT_REGISTERS_ATI));
+ }
+
+/* can't rely on calloc for initialization as it's possible to redefine a shader (?) */
+ ctx->ATIFragmentShader.Current->LocalConstDef = 0;
+ ctx->ATIFragmentShader.Current->numArithInstr[0] = 0;
+ ctx->ATIFragmentShader.Current->numArithInstr[1] = 0;
+ ctx->ATIFragmentShader.Current->regsAssigned[0] = 0;
+ ctx->ATIFragmentShader.Current->regsAssigned[1] = 0;
+ ctx->ATIFragmentShader.Current->NumPasses = 0;
+ ctx->ATIFragmentShader.Current->cur_pass = 0;
+ ctx->ATIFragmentShader.Current->last_optype = 0;
+ ctx->ATIFragmentShader.Current->interpinp1 = GL_FALSE;
+ ctx->ATIFragmentShader.Current->isValid = GL_FALSE;
+ ctx->ATIFragmentShader.Current->swizzlerq = 0;
+ ctx->ATIFragmentShader.Compiling = 1;
+}
+
+void GLAPIENTRY
+_mesa_EndFragmentShaderATI(void)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
+#if MESA_DEBUG_ATI_FS
+ GLint i, j;
+#endif
+
+ if (!ctx->ATIFragmentShader.Compiling) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glEndFragmentShaderATI(outsideShader)");
+ return;
+ }
+ if (curProg->interpinp1 && (ctx->ATIFragmentShader.Current->cur_pass > 1)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glEndFragmentShaderATI(interpinfirstpass)");
+ /* according to spec, DON'T return here */
+ }
+
+ match_pair_inst(curProg, 0);
+ ctx->ATIFragmentShader.Compiling = 0;
+ ctx->ATIFragmentShader.Current->isValid = GL_TRUE;
+ if ((ctx->ATIFragmentShader.Current->cur_pass == 0) ||
+ (ctx->ATIFragmentShader.Current->cur_pass == 2)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glEndFragmentShaderATI(noarithinst)");
+ }
+ if (ctx->ATIFragmentShader.Current->cur_pass > 1)
+ ctx->ATIFragmentShader.Current->NumPasses = 2;
+ else
+ ctx->ATIFragmentShader.Current->NumPasses = 1;
+
+ ctx->ATIFragmentShader.Current->cur_pass = 0;
+
+#if MESA_DEBUG_ATI_FS
+ for (j = 0; j < MAX_NUM_PASSES_ATI; j++) {
+ for (i = 0; i < MAX_NUM_FRAGMENT_REGISTERS_ATI; i++) {
+ GLuint op = curProg->SetupInst[j][i].Opcode;
+ const char *op_enum = op > 5 ? _mesa_lookup_enum_by_nr(op) : "0";
+ GLuint src = curProg->SetupInst[j][i].src;
+ GLuint swizzle = curProg->SetupInst[j][i].swizzle;
+ fprintf(stderr, "%2d %04X %s %d %04X\n", i, op, op_enum, src,
+ swizzle);
+ }
+ for (i = 0; i < curProg->numArithInstr[j]; i++) {
+ GLuint op0 = curProg->Instructions[j][i].Opcode[0];
+ GLuint op1 = curProg->Instructions[j][i].Opcode[1];
+ const char *op0_enum = op0 > 5 ? _mesa_lookup_enum_by_nr(op0) : "0";
+ const char *op1_enum = op1 > 5 ? _mesa_lookup_enum_by_nr(op1) : "0";
+ GLuint count0 = curProg->Instructions[j][i].ArgCount[0];
+ GLuint count1 = curProg->Instructions[j][i].ArgCount[1];
+ fprintf(stderr, "%2d %04X %s %d %04X %s %d\n", i, op0, op0_enum, count0,
+ op1, op1_enum, count1);
+ }
+ }
+#endif
+
+ if (!ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_SHADER_ATI, NULL)) {
+ ctx->ATIFragmentShader.Current->isValid = GL_FALSE;
+ /* XXX is this the right error? */
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glEndFragmentShaderATI(driver rejected shader)");
+ }
+}
+
+void GLAPIENTRY
+_mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
+ struct atifs_setupinst *curI;
+
+ if (!ctx->ATIFragmentShader.Compiling) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glPassTexCoordATI(outsideShader)");
+ return;
+ }
+
+ if (curProg->cur_pass == 1) {
+ match_pair_inst(curProg, 0);
+ curProg->cur_pass = 2;
+ }
+ if ((curProg->cur_pass > 2) ||
+ ((1 << (dst - GL_REG_0_ATI)) & curProg->regsAssigned[curProg->cur_pass >> 1])) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glPassTexCoord(pass)");
+ return;
+ }
+ if ((dst < GL_REG_0_ATI) || (dst > GL_REG_5_ATI) ||
+ ((dst - GL_REG_0_ATI) >= ctx->Const.MaxTextureUnits)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glPassTexCoordATI(dst)");
+ return;
+ }
+ if (((coord < GL_REG_0_ATI) || (coord > GL_REG_5_ATI)) &&
+ ((coord < GL_TEXTURE0_ARB) || (coord > GL_TEXTURE7_ARB) ||
+ ((coord - GL_TEXTURE0_ARB) >= ctx->Const.MaxTextureUnits))) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glPassTexCoordATI(coord)");
+ return;
+ }
+ if ((curProg->cur_pass == 0) && (coord >= GL_REG_0_ATI)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glPassTexCoordATI(coord)");
+ return;
+ }
+ if (!(swizzle >= GL_SWIZZLE_STR_ATI) && (swizzle <= GL_SWIZZLE_STQ_DQ_ATI)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glPassTexCoordATI(swizzle)");
+ return;
+ }
+ if ((swizzle & 1) && (coord >= GL_REG_0_ATI)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glPassTexCoordATI(swizzle)");
+ return;
+ }
+ if (coord <= GL_TEXTURE7_ARB) {
+ GLuint tmp = coord - GL_TEXTURE0_ARB;
+ if ((((curProg->swizzlerq >> (tmp * 2)) & 3) != 0) &&
+ (((swizzle & 1) + 1) != ((curProg->swizzlerq >> (tmp * 2)) & 3))) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glPassTexCoordATI(swizzle)");
+ return;
+ } else {
+ curProg->swizzlerq |= (((swizzle & 1) + 1) << (tmp * 2));
+ }
+ }
+
+ curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI);
+ new_tex_inst(curProg);
+
+ /* add the instructions */
+ curI = &curProg->SetupInst[curProg->cur_pass >> 1][dst - GL_REG_0_ATI];
+
+ curI->Opcode = ATI_FRAGMENT_SHADER_PASS_OP;
+ curI->src = coord;
+ curI->swizzle = swizzle;
+
+#if MESA_DEBUG_ATI_FS
+ _mesa_debug(ctx, "%s(%s, %s, %s)\n", __FUNCTION__,
+ _mesa_lookup_enum_by_nr(dst), _mesa_lookup_enum_by_nr(coord),
+ _mesa_lookup_enum_by_nr(swizzle));
+#endif
+}
+
+void GLAPIENTRY
+_mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
+ struct atifs_setupinst *curI;
+
+ if (!ctx->ATIFragmentShader.Compiling) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glSampleMapATI(outsideShader)");
+ return;
+ }
+
+ if (curProg->cur_pass == 1) {
+ match_pair_inst(curProg, 0);
+ curProg->cur_pass = 2;
+ }
+ if ((curProg->cur_pass > 2) ||
+ ((1 << (dst - GL_REG_0_ATI)) & curProg->regsAssigned[curProg->cur_pass >> 1])) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glSampleMapATI(pass)");
+ return;
+ }
+ if ((dst < GL_REG_0_ATI) || (dst > GL_REG_5_ATI) ||
+ ((dst - GL_REG_0_ATI) >= ctx->Const.MaxTextureUnits)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSampleMapATI(dst)");
+ return;
+ }
+ if (((interp < GL_REG_0_ATI) || (interp > GL_REG_5_ATI)) &&
+ ((interp < GL_TEXTURE0_ARB) || (interp > GL_TEXTURE7_ARB) ||
+ ((interp - GL_TEXTURE0_ARB) >= ctx->Const.MaxTextureUnits))) {
+ /* is this texture5 or texture7? spec is a bit unclear there */
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSampleMapATI(interp)");
+ return;
+ }
+ if ((curProg->cur_pass == 0) && (interp >= GL_REG_0_ATI)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glSampleMapATI(interp)");
+ return;
+ }
+ if (!(swizzle >= GL_SWIZZLE_STR_ATI) && (swizzle <= GL_SWIZZLE_STQ_DQ_ATI)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSampleMapATI(swizzle)");
+ return;
+ }
+ if ((swizzle & 1) && (interp >= GL_REG_0_ATI)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glSampleMapATI(swizzle)");
+ return;
+ }
+ if (interp <= GL_TEXTURE7_ARB) {
+ GLuint tmp = interp - GL_TEXTURE0_ARB;
+ if ((((curProg->swizzlerq >> (tmp * 2)) & 3) != 0) &&
+ (((swizzle & 1) + 1) != ((curProg->swizzlerq >> (tmp * 2)) & 3))) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glSampleMapATI(swizzle)");
+ return;
+ } else {
+ curProg->swizzlerq |= (((swizzle & 1) + 1) << (tmp * 2));
+ }
+ }
+
+ curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI);
+ new_tex_inst(curProg);
+
+ /* add the instructions */
+ curI = &curProg->SetupInst[curProg->cur_pass >> 1][dst - GL_REG_0_ATI];
+
+ curI->Opcode = ATI_FRAGMENT_SHADER_SAMPLE_OP;
+ curI->src = interp;
+ curI->swizzle = swizzle;
+
+#if MESA_DEBUG_ATI_FS
+ _mesa_debug(ctx, "%s(%s, %s, %s)\n", __FUNCTION__,
+ _mesa_lookup_enum_by_nr(dst), _mesa_lookup_enum_by_nr(interp),
+ _mesa_lookup_enum_by_nr(swizzle));
+#endif
+}
+
+static void
+_mesa_FragmentOpXATI(GLint optype, GLuint arg_count, GLenum op, GLuint dst,
+ GLuint dstMask, GLuint dstMod, GLuint arg1,
+ GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
+ GLuint arg2Rep, GLuint arg2Mod, GLuint arg3,
+ GLuint arg3Rep, GLuint arg3Mod)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
+ GLint ci;
+ struct atifs_instruction *curI;
+ GLuint modtemp = dstMod & ~GL_SATURATE_BIT_ATI;
+
+ if (!ctx->ATIFragmentShader.Compiling) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(outsideShader)");
+ return;
+ }
+
+ if (curProg->cur_pass==0)
+ curProg->cur_pass=1;
+
+ else if (curProg->cur_pass==2)
+ curProg->cur_pass=3;
+
+ /* decide whether this is a new instruction or not ... all color instructions are new,
+ and alpha instructions might also be new if there was no preceding color inst */
+ if ((optype == 0) || (curProg->last_optype == optype)) {
+ if (curProg->numArithInstr[curProg->cur_pass >> 1] > 7) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(instrCount)");
+ return;
+ }
+ /* easier to do that here slight side effect invalid instr will still be inserted as nops */
+ match_pair_inst(curProg, optype);
+ new_arith_inst(curProg);
+ }
+ curProg->last_optype = optype;
+ ci = curProg->numArithInstr[curProg->cur_pass >> 1] - 1;
+
+ /* add the instructions */
+ curI = &curProg->Instructions[curProg->cur_pass >> 1][ci];
+
+ /* error checking */
+ if ((dst < GL_REG_0_ATI) || (dst > GL_REG_5_ATI)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "C/AFragmentOpATI(dst)");
+ return;
+ }
+ if ((modtemp != GL_NONE) && (modtemp != GL_2X_BIT_ATI) &&
+ (modtemp != GL_4X_BIT_ATI) && (modtemp != GL_8X_BIT_ATI) &&
+ (modtemp != GL_HALF_BIT_ATI) && !(modtemp != GL_QUARTER_BIT_ATI) &&
+ (modtemp != GL_EIGHTH_BIT_ATI)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "C/AFragmentOpATI(dstMod)%x", modtemp);
+ return;
+ }
+ /* op checking? Actually looks like that's missing in the spec but we'll do it anyway */
+ if (((op < GL_ADD_ATI) || (op > GL_DOT2_ADD_ATI)) && !(op == GL_MOV_ATI)) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "C/AFragmentOpATI(op)");
+ return;
+ }
+ if (optype == 1) {
+ if (((op == GL_DOT2_ADD_ATI) && (curI->Opcode[0] != GL_DOT2_ADD_ATI)) ||
+ ((op == GL_DOT3_ATI) && (curI->Opcode[0] != GL_DOT3_ATI)) ||
+ ((op == GL_DOT4_ATI) && (curI->Opcode[0] != GL_DOT4_ATI)) ||
+ ((op != GL_DOT4_ATI) && (curI->Opcode[0] == GL_DOT4_ATI))) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "AFragmentOpATI(op)");
+ return;
+ }
+ }
+ if ((op == GL_DOT4_ATI) &&
+ (((arg1 == GL_SECONDARY_INTERPOLATOR_ATI) && ((arg1Rep == GL_ALPHA) || (arg1Rep == GL_NONE))) ||
+ (((arg2 == GL_SECONDARY_INTERPOLATOR_ATI) && ((arg2Rep == GL_ALPHA) || (arg2Rep == GL_NONE)))))) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(sec_interp)");
+ }
+
+ if (!check_arith_arg(curProg, optype, arg1, arg1Rep)) {
+ return;
+ }
+ if (arg2) {
+ if (!check_arith_arg(curProg, optype, arg2, arg2Rep)) {
+ return;
+ }
+ }
+ if (arg3) {
+ if (!check_arith_arg(curProg, optype, arg3, arg3Rep)) {
+ return;
+ }
+ if ((arg1 >= GL_CON_0_ATI) && (arg1 <= GL_CON_7_ATI) &&
+ (arg2 >= GL_CON_0_ATI) && (arg2 <= GL_CON_7_ATI) &&
+ (arg3 >= GL_CON_0_ATI) && (arg3 <= GL_CON_7_ATI) &&
+ (arg1 != arg2) && (arg1 != arg3) && (arg2 != arg3)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "C/AFragmentOpATI(3Consts)");
+ return;
+ }
+ }
+
+ /* all ok - not all fully validated though (e.g. argNMod - spec doesn't say anything) */
+
+ curI->Opcode[optype] = op;
+ curI->SrcReg[optype][0].Index = arg1;
+ curI->SrcReg[optype][0].argRep = arg1Rep;
+ curI->SrcReg[optype][0].argMod = arg1Mod;
+ curI->ArgCount[optype] = arg_count;
+
+ if (arg2) {
+ curI->SrcReg[optype][1].Index = arg2;
+ curI->SrcReg[optype][1].argRep = arg2Rep;
+ curI->SrcReg[optype][1].argMod = arg2Mod;
+ }
+
+ if (arg3) {
+ curI->SrcReg[optype][2].Index = arg3;
+ curI->SrcReg[optype][2].argRep = arg3Rep;
+ curI->SrcReg[optype][2].argMod = arg3Mod;
+ }
+
+ curI->DstReg[optype].Index = dst;
+ curI->DstReg[optype].dstMod = dstMod;
+ curI->DstReg[optype].dstMask = dstMask;
+
+#if MESA_DEBUG_ATI_FS
+ debug_op(optype, arg_count, op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod);
+#endif
+
+}
+
+void GLAPIENTRY
+_mesa_ColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask,
+ GLuint dstMod, GLuint arg1, GLuint arg1Rep,
+ GLuint arg1Mod)
+{
+ _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_COLOR_OP, 1, op, dst, dstMask,
+ dstMod, arg1, arg1Rep, arg1Mod, 0, 0, 0, 0, 0, 0);
+}
+
+void GLAPIENTRY
+_mesa_ColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask,
+ GLuint dstMod, GLuint arg1, GLuint arg1Rep,
+ GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
+ GLuint arg2Mod)
+{
+ _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_COLOR_OP, 2, op, dst, dstMask,
+ dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep,
+ arg2Mod, 0, 0, 0);
+}
+
+void GLAPIENTRY
+_mesa_ColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask,
+ GLuint dstMod, GLuint arg1, GLuint arg1Rep,
+ GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
+ GLuint arg2Mod, GLuint arg3, GLuint arg3Rep,
+ GLuint arg3Mod)
+{
+ _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_COLOR_OP, 3, op, dst, dstMask,
+ dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep,
+ arg2Mod, arg3, arg3Rep, arg3Mod);
+}
+
+void GLAPIENTRY
+_mesa_AlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
+ GLuint arg1Rep, GLuint arg1Mod)
+{
+ _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_ALPHA_OP, 1, op, dst, 0, dstMod,
+ arg1, arg1Rep, arg1Mod, 0, 0, 0, 0, 0, 0);
+}
+
+void GLAPIENTRY
+_mesa_AlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
+ GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
+ GLuint arg2Rep, GLuint arg2Mod)
+{
+ _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_ALPHA_OP, 2, op, dst, 0, dstMod,
+ arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, 0, 0,
+ 0);
+}
+
+void GLAPIENTRY
+_mesa_AlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
+ GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
+ GLuint arg2Rep, GLuint arg2Mod, GLuint arg3,
+ GLuint arg3Rep, GLuint arg3Mod)
+{
+ _mesa_FragmentOpXATI(ATI_FRAGMENT_SHADER_ALPHA_OP, 3, op, dst, 0, dstMod,
+ arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3,
+ arg3Rep, arg3Mod);
+}
+
+void GLAPIENTRY
+_mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value)
+{
+ GLuint dstindex;
+ GET_CURRENT_CONTEXT(ctx);
+
+ if ((dst < GL_CON_0_ATI) || (dst > GL_CON_7_ATI)) {
+ /* spec says nothing about what should happen here but we can't just segfault...*/
+ _mesa_error(ctx, GL_INVALID_ENUM, "glSetFragmentShaderConstantATI(dst)");
+ return;
+ }
+
+ dstindex = dst - GL_CON_0_ATI;
+ if (ctx->ATIFragmentShader.Compiling) {
+ struct ati_fragment_shader *curProg = ctx->ATIFragmentShader.Current;
+ COPY_4V(curProg->Constants[dstindex], value);
+ curProg->LocalConstDef |= 1 << dstindex;
+ }
+ else {
+ FLUSH_VERTICES(ctx, _NEW_PROGRAM);
+ COPY_4V(ctx->ATIFragmentShader.GlobalConstants[dstindex], value);
+ }
+}
+
+#endif /* FEATURE_ATI_fragment_shader */
diff --git a/mesalib/src/mesa/main/blend.h b/mesalib/src/mesa/main/blend.h
index b0a6b0135..d74f17ef1 100644
--- a/mesalib/src/mesa/main/blend.h
+++ b/mesalib/src/mesa/main/blend.h
@@ -1,106 +1,106 @@
-/**
- * \file blend.h
- * Blending functions operations.
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.2
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-
-#ifndef BLEND_H
-#define BLEND_H
-
-
-#include "glheader.h"
-
-struct gl_context;
-
-
-extern void GLAPIENTRY
-_mesa_BlendFunc( GLenum sfactor, GLenum dfactor );
-
-
-extern void GLAPIENTRY
-_mesa_BlendFuncSeparateEXT( GLenum sfactorRGB, GLenum dfactorRGB,
- GLenum sfactorA, GLenum dfactorA );
-
-
-extern void GLAPIENTRY
-_mesa_BlendFunci(GLuint buf, GLenum sfactor, GLenum dfactor);
-
-
-extern void GLAPIENTRY
-_mesa_BlendFuncSeparatei(GLuint buf, GLenum sfactorRGB, GLenum dfactorRGB,
- GLenum sfactorA, GLenum dfactorA);
-
-
-extern void GLAPIENTRY
-_mesa_BlendEquation( GLenum mode );
-
-
-extern void GLAPIENTRY
-_mesa_BlendEquationi(GLuint buf, GLenum mode);
-
-
-extern void GLAPIENTRY
-_mesa_BlendEquationSeparateEXT( GLenum modeRGB, GLenum modeA );
-
-
-extern void GLAPIENTRY
-_mesa_BlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeA);
-
-
-extern void GLAPIENTRY
-_mesa_BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-
-
-extern void GLAPIENTRY
-_mesa_AlphaFunc( GLenum func, GLclampf ref );
-
-
-extern void GLAPIENTRY
-_mesa_LogicOp( GLenum opcode );
-
-
-extern void GLAPIENTRY
-_mesa_IndexMask( GLuint mask );
-
-extern void GLAPIENTRY
-_mesa_ColorMask( GLboolean red, GLboolean green,
- GLboolean blue, GLboolean alpha );
-
-extern void GLAPIENTRY
-_mesa_ColorMaskIndexed( GLuint buf, GLboolean red, GLboolean green,
- GLboolean blue, GLboolean alpha );
-
-
-extern void GLAPIENTRY
-_mesa_ClampColorARB(GLenum target, GLenum clamp);
-
-
-extern void
-_mesa_init_color( struct gl_context * ctx );
-
-#endif
+/**
+ * \file blend.h
+ * Blending functions operations.
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.2
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+
+#ifndef BLEND_H
+#define BLEND_H
+
+
+#include "glheader.h"
+
+struct gl_context;
+
+
+extern void GLAPIENTRY
+_mesa_BlendFunc( GLenum sfactor, GLenum dfactor );
+
+
+extern void GLAPIENTRY
+_mesa_BlendFuncSeparateEXT( GLenum sfactorRGB, GLenum dfactorRGB,
+ GLenum sfactorA, GLenum dfactorA );
+
+
+extern void GLAPIENTRY
+_mesa_BlendFunci(GLuint buf, GLenum sfactor, GLenum dfactor);
+
+
+extern void GLAPIENTRY
+_mesa_BlendFuncSeparatei(GLuint buf, GLenum sfactorRGB, GLenum dfactorRGB,
+ GLenum sfactorA, GLenum dfactorA);
+
+
+extern void GLAPIENTRY
+_mesa_BlendEquation( GLenum mode );
+
+
+extern void GLAPIENTRY
+_mesa_BlendEquationi(GLuint buf, GLenum mode);
+
+
+extern void GLAPIENTRY
+_mesa_BlendEquationSeparateEXT( GLenum modeRGB, GLenum modeA );
+
+
+extern void GLAPIENTRY
+_mesa_BlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeA);
+
+
+extern void GLAPIENTRY
+_mesa_BlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+
+
+extern void GLAPIENTRY
+_mesa_AlphaFunc( GLenum func, GLclampf ref );
+
+
+extern void GLAPIENTRY
+_mesa_LogicOp( GLenum opcode );
+
+
+extern void GLAPIENTRY
+_mesa_IndexMask( GLuint mask );
+
+extern void GLAPIENTRY
+_mesa_ColorMask( GLboolean red, GLboolean green,
+ GLboolean blue, GLboolean alpha );
+
+extern void GLAPIENTRY
+_mesa_ColorMaskIndexed( GLuint buf, GLboolean red, GLboolean green,
+ GLboolean blue, GLboolean alpha );
+
+
+extern void GLAPIENTRY
+_mesa_ClampColorARB(GLenum target, GLenum clamp);
+
+
+extern void
+_mesa_init_color( struct gl_context * ctx );
+
+#endif
diff --git a/mesalib/src/mesa/main/bufferobj.c b/mesalib/src/mesa/main/bufferobj.c
index 33aa3b7dc..abb80287d 100644
--- a/mesalib/src/mesa/main/bufferobj.c
+++ b/mesalib/src/mesa/main/bufferobj.c
@@ -42,6 +42,7 @@
#include "mfeatures.h"
#include "mtypes.h"
#include "texobj.h"
+#include "transformfeedback.h"
/* Debug flags */
@@ -821,6 +822,24 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids)
_mesa_BindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, 0 );
}
+ /* unbind ARB_copy_buffer binding points */
+ if (ctx->CopyReadBuffer == bufObj) {
+ _mesa_BindBufferARB( GL_COPY_READ_BUFFER, 0 );
+ }
+ if (ctx->CopyWriteBuffer == bufObj) {
+ _mesa_BindBufferARB( GL_COPY_WRITE_BUFFER, 0 );
+ }
+
+ /* unbind transform feedback binding points */
+ if (ctx->TransformFeedback.CurrentBuffer == bufObj) {
+ _mesa_BindBufferARB( GL_TRANSFORM_FEEDBACK_BUFFER, 0 );
+ }
+ for (j = 0; j < MAX_FEEDBACK_ATTRIBS; j++) {
+ if (ctx->TransformFeedback.CurrentObject->Buffers[j] == bufObj) {
+ _mesa_BindBufferBase( GL_TRANSFORM_FEEDBACK_BUFFER, j, 0 );
+ }
+ }
+
/* unbind any pixel pack/unpack pointers bound to this buffer */
if (ctx->Pack.BufferObj == bufObj) {
_mesa_BindBufferARB( GL_PIXEL_PACK_BUFFER_EXT, 0 );
diff --git a/mesalib/src/mesa/main/clear.h b/mesalib/src/mesa/main/clear.h
index d3d64fd62..783271920 100644
--- a/mesalib/src/mesa/main/clear.h
+++ b/mesalib/src/mesa/main/clear.h
@@ -1,64 +1,64 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef CLEAR_H
-#define CLEAR_H
-
-
-#include "glheader.h"
-
-
-extern void GLAPIENTRY
-_mesa_ClearIndex( GLfloat c );
-
-extern void GLAPIENTRY
-_mesa_ClearColor( GLclampf red, GLclampf green,
- GLclampf blue, GLclampf alpha );
-
-extern void GLAPIENTRY
-_mesa_ClearColorIiEXT(GLint r, GLint g, GLint b, GLint a);
-
-extern void GLAPIENTRY
-_mesa_ClearColorIuiEXT(GLuint r, GLuint g, GLuint b, GLuint a);
-
-
-extern void GLAPIENTRY
-_mesa_Clear( GLbitfield mask );
-
-
-extern void GLAPIENTRY
-_mesa_ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value);
-
-extern void GLAPIENTRY
-_mesa_ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value);
-
-extern void GLAPIENTRY
-_mesa_ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value);
-
-extern void GLAPIENTRY
-_mesa_ClearBufferfi(GLenum buffer, GLint drawbuffer,
- GLfloat depth, GLint stencil);
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef CLEAR_H
+#define CLEAR_H
+
+
+#include "glheader.h"
+
+
+extern void GLAPIENTRY
+_mesa_ClearIndex( GLfloat c );
+
+extern void GLAPIENTRY
+_mesa_ClearColor( GLclampf red, GLclampf green,
+ GLclampf blue, GLclampf alpha );
+
+extern void GLAPIENTRY
+_mesa_ClearColorIiEXT(GLint r, GLint g, GLint b, GLint a);
+
+extern void GLAPIENTRY
+_mesa_ClearColorIuiEXT(GLuint r, GLuint g, GLuint b, GLuint a);
+
+
+extern void GLAPIENTRY
+_mesa_Clear( GLbitfield mask );
+
+
+extern void GLAPIENTRY
+_mesa_ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value);
+
+extern void GLAPIENTRY
+_mesa_ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value);
+
+extern void GLAPIENTRY
+_mesa_ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value);
+
+extern void GLAPIENTRY
+_mesa_ClearBufferfi(GLenum buffer, GLint drawbuffer,
+ GLfloat depth, GLint stencil);
+
+#endif
diff --git a/mesalib/src/mesa/main/clip.c b/mesalib/src/mesa/main/clip.c
index 6b9b3b58c..ba2028cf2 100644
--- a/mesalib/src/mesa/main/clip.c
+++ b/mesalib/src/mesa/main/clip.c
@@ -1,116 +1,116 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.3
- *
- * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#include "glheader.h"
-#include "clip.h"
-#include "context.h"
-#include "macros.h"
-#include "mtypes.h"
-
-#include "math/m_matrix.h"
-
-
-/**
- * Update derived clip plane state.
- */
-void
-_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane)
-{
- if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top))
- _math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
-
- /* Clip-Space Plane = Eye-Space Plane * Projection Matrix */
- _mesa_transform_vector(ctx->Transform._ClipUserPlane[plane],
- ctx->Transform.EyeUserPlane[plane],
- ctx->ProjectionMatrixStack.Top->inv);
-}
-
-
-void GLAPIENTRY
-_mesa_ClipPlane( GLenum plane, const GLdouble *eq )
-{
- GET_CURRENT_CONTEXT(ctx);
- GLint p;
- GLfloat equation[4];
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- p = (GLint) plane - (GLint) GL_CLIP_PLANE0;
- if (p < 0 || p >= (GLint) ctx->Const.MaxClipPlanes) {
- _mesa_error( ctx, GL_INVALID_ENUM, "glClipPlane" );
- return;
- }
-
- equation[0] = (GLfloat) eq[0];
- equation[1] = (GLfloat) eq[1];
- equation[2] = (GLfloat) eq[2];
- equation[3] = (GLfloat) eq[3];
-
- /*
- * The equation is transformed by the transpose of the inverse of the
- * current modelview matrix and stored in the resulting eye coordinates.
- *
- * KW: Eqn is then transformed to the current clip space, where user
- * clipping now takes place. The clip-space equations are recalculated
- * whenever the projection matrix changes.
- */
- if (_math_matrix_is_dirty(ctx->ModelviewMatrixStack.Top))
- _math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
-
- _mesa_transform_vector( equation, equation,
- ctx->ModelviewMatrixStack.Top->inv );
-
- if (TEST_EQ_4V(ctx->Transform.EyeUserPlane[p], equation))
- return;
-
- FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
- COPY_4FV(ctx->Transform.EyeUserPlane[p], equation);
-
- if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
- _mesa_update_clip_plane(ctx, p);
- }
-
- if (ctx->Driver.ClipPlane)
- ctx->Driver.ClipPlane( ctx, plane, equation );
-}
-
-
-void GLAPIENTRY
-_mesa_GetClipPlane( GLenum plane, GLdouble *equation )
-{
- GET_CURRENT_CONTEXT(ctx);
- GLint p;
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- p = (GLint) (plane - GL_CLIP_PLANE0);
- if (p < 0 || p >= (GLint) ctx->Const.MaxClipPlanes) {
- _mesa_error( ctx, GL_INVALID_ENUM, "glGetClipPlane" );
- return;
- }
-
- equation[0] = (GLdouble) ctx->Transform.EyeUserPlane[p][0];
- equation[1] = (GLdouble) ctx->Transform.EyeUserPlane[p][1];
- equation[2] = (GLdouble) ctx->Transform.EyeUserPlane[p][2];
- equation[3] = (GLdouble) ctx->Transform.EyeUserPlane[p][3];
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.3
+ *
+ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#include "glheader.h"
+#include "clip.h"
+#include "context.h"
+#include "macros.h"
+#include "mtypes.h"
+
+#include "math/m_matrix.h"
+
+
+/**
+ * Update derived clip plane state.
+ */
+void
+_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane)
+{
+ if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top))
+ _math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
+
+ /* Clip-Space Plane = Eye-Space Plane * Projection Matrix */
+ _mesa_transform_vector(ctx->Transform._ClipUserPlane[plane],
+ ctx->Transform.EyeUserPlane[plane],
+ ctx->ProjectionMatrixStack.Top->inv);
+}
+
+
+void GLAPIENTRY
+_mesa_ClipPlane( GLenum plane, const GLdouble *eq )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLint p;
+ GLfloat equation[4];
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ p = (GLint) plane - (GLint) GL_CLIP_PLANE0;
+ if (p < 0 || p >= (GLint) ctx->Const.MaxClipPlanes) {
+ _mesa_error( ctx, GL_INVALID_ENUM, "glClipPlane" );
+ return;
+ }
+
+ equation[0] = (GLfloat) eq[0];
+ equation[1] = (GLfloat) eq[1];
+ equation[2] = (GLfloat) eq[2];
+ equation[3] = (GLfloat) eq[3];
+
+ /*
+ * The equation is transformed by the transpose of the inverse of the
+ * current modelview matrix and stored in the resulting eye coordinates.
+ *
+ * KW: Eqn is then transformed to the current clip space, where user
+ * clipping now takes place. The clip-space equations are recalculated
+ * whenever the projection matrix changes.
+ */
+ if (_math_matrix_is_dirty(ctx->ModelviewMatrixStack.Top))
+ _math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
+
+ _mesa_transform_vector( equation, equation,
+ ctx->ModelviewMatrixStack.Top->inv );
+
+ if (TEST_EQ_4V(ctx->Transform.EyeUserPlane[p], equation))
+ return;
+
+ FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
+ COPY_4FV(ctx->Transform.EyeUserPlane[p], equation);
+
+ if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
+ _mesa_update_clip_plane(ctx, p);
+ }
+
+ if (ctx->Driver.ClipPlane)
+ ctx->Driver.ClipPlane( ctx, plane, equation );
+}
+
+
+void GLAPIENTRY
+_mesa_GetClipPlane( GLenum plane, GLdouble *equation )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLint p;
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ p = (GLint) (plane - GL_CLIP_PLANE0);
+ if (p < 0 || p >= (GLint) ctx->Const.MaxClipPlanes) {
+ _mesa_error( ctx, GL_INVALID_ENUM, "glGetClipPlane" );
+ return;
+ }
+
+ equation[0] = (GLdouble) ctx->Transform.EyeUserPlane[p][0];
+ equation[1] = (GLdouble) ctx->Transform.EyeUserPlane[p][1];
+ equation[2] = (GLdouble) ctx->Transform.EyeUserPlane[p][2];
+ equation[3] = (GLdouble) ctx->Transform.EyeUserPlane[p][3];
+}
diff --git a/mesalib/src/mesa/main/clip.h b/mesalib/src/mesa/main/clip.h
index 9a94542ec..a8e6d7687 100644
--- a/mesalib/src/mesa/main/clip.h
+++ b/mesalib/src/mesa/main/clip.h
@@ -1,47 +1,47 @@
-/**
- * \file clip.h
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-
-#ifndef CLIP_H
-#define CLIP_H
-
-#include "glheader.h"
-
-struct gl_context;
-
-extern void
-_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane);
-
-extern void GLAPIENTRY
-_mesa_ClipPlane( GLenum plane, const GLdouble *equation );
-
-extern void GLAPIENTRY
-_mesa_GetClipPlane( GLenum plane, GLdouble *equation );
-
-#endif
+/**
+ * \file clip.h
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+
+#ifndef CLIP_H
+#define CLIP_H
+
+#include "glheader.h"
+
+struct gl_context;
+
+extern void
+_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane);
+
+extern void GLAPIENTRY
+_mesa_ClipPlane( GLenum plane, const GLdouble *equation );
+
+extern void GLAPIENTRY
+_mesa_GetClipPlane( GLenum plane, GLdouble *equation );
+
+#endif
diff --git a/mesalib/src/mesa/main/condrender.h b/mesalib/src/mesa/main/condrender.h
index 49e9953be..cf6d4ca28 100644
--- a/mesalib/src/mesa/main/condrender.h
+++ b/mesalib/src/mesa/main/condrender.h
@@ -1,45 +1,45 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.8
- *
- * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-#ifndef CONDRENDER_H
-#define CONDRENDER_H
-
-
-#include "glheader.h"
-#include "context.h"
-
-
-extern void GLAPIENTRY
-_mesa_BeginConditionalRender(GLuint queryId, GLenum mode);
-
-extern void APIENTRY
-_mesa_EndConditionalRender(void);
-
-extern GLboolean
-_mesa_check_conditional_render(struct gl_context *ctx);
-
-
-#endif /* CONDRENDER_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.8
+ *
+ * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+#ifndef CONDRENDER_H
+#define CONDRENDER_H
+
+
+#include "glheader.h"
+#include "context.h"
+
+
+extern void GLAPIENTRY
+_mesa_BeginConditionalRender(GLuint queryId, GLenum mode);
+
+extern void APIENTRY
+_mesa_EndConditionalRender(void);
+
+extern GLboolean
+_mesa_check_conditional_render(struct gl_context *ctx);
+
+
+#endif /* CONDRENDER_H */
diff --git a/mesalib/src/mesa/main/dd.h b/mesalib/src/mesa/main/dd.h
index 582eb5d49..1582a8c81 100644
--- a/mesalib/src/mesa/main/dd.h
+++ b/mesalib/src/mesa/main/dd.h
@@ -198,81 +198,32 @@ struct dd_function_table {
GLenum srcFormat, GLenum srcType );
/**
- * Called by glTexImage1D(). Simply copy the source texture data into the
- * destination texture memory. The gl_texture_image fields, etc. will be
- * fully initialized.
- * The parameters are the same as glTexImage1D(), plus:
+ * Called by glTexImage[123]D() and glCopyTexImage[12]D()
+ * Allocate texture memory and copy the user's image to the buffer.
+ * The gl_texture_image fields, etc. will be fully initialized.
+ * The parameters are the same as glTexImage3D(), plus:
+ * \param dims 1, 2, or 3 indicating glTexImage1/2/3D()
* \param packing describes how to unpack the source data.
* \param texImage is the destination texture image.
*/
- void (*TexImage1D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint border,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
+ void (*TexImage)(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint internalFormat,
+ GLint width, GLint height, GLint depth, GLint border,
+ GLenum format, GLenum type, const GLvoid *pixels,
+ const struct gl_pixelstore_attrib *packing);
/**
- * Called by glTexImage2D().
- *
- * \sa dd_function_table::TexImage1D.
+ * Called by glTexSubImage[123]D().
+ * Replace a subset of the target texture with new texel data.
*/
- void (*TexImage2D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
-
- /**
- * Called by glTexImage3D().
- *
- * \sa dd_function_table::TexImage1D.
- */
- void (*TexImage3D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint depth, GLint border,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
-
- /**
- * Called by glTexSubImage1D(). Replace a subset of the target texture
- * with new texel data.
- * \sa dd_function_table::TexImage1D.
- */
- void (*TexSubImage1D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLsizei width,
- GLenum format, GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
-
- /**
- * Called by glTexSubImage2D().
- *
- * \sa dd_function_table::TexSubImage1D.
- */
- void (*TexSubImage2D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height,
- GLenum format, GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
-
- /**
- * Called by glTexSubImage3D().
- *
- * \sa dd_function_table::TexSubImage1D.
- */
- void (*TexSubImage3D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset, GLint zoffset,
- GLsizei width, GLsizei height, GLint depth,
- GLenum format, GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
+ void (*TexSubImage)(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ GLsizei width, GLsizei height, GLint depth,
+ GLenum format, GLenum type,
+ const GLvoid *pixels,
+ const struct gl_pixelstore_attrib *packing);
/**
@@ -283,33 +234,14 @@ struct dd_function_table {
struct gl_texture_image *texImage );
/**
- * Called by glCopyTexSubImage1D() and glCopyTexImage1D().
+ * Called by glCopyTex[Sub]Image[123]D().
*/
- void (*CopyTexSubImage1D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y, GLsizei width);
-
- /**
- * Called by glCopyTexSubImage2D() and glCopyTexImage2D().
- */
- void (*CopyTexSubImage2D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y,
- GLsizei width, GLsizei height);
-
- /**
- * Called by glCopyTexSubImage3D() and glCopyTexImage3D().
- */
- void (*CopyTexSubImage3D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset, GLint zoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y,
- GLsizei width, GLsizei height);
+ void (*CopyTexSubImage)(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ struct gl_renderbuffer *rb,
+ GLint x, GLint y,
+ GLsizei width, GLsizei height);
/**
* Called by glGenerateMipmap() or when GL_GENERATE_MIPMAP_SGIS is enabled.
@@ -337,66 +269,24 @@ struct dd_function_table {
/*@{*/
/**
- * Called by glCompressedTexImage1D().
- * The parameters are the same as for glCompressedTexImage1D(), plus a
- * pointer to the destination texure image.
- */
- void (*CompressedTexImage1D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLsizei width, GLint border,
- GLsizei imageSize, const GLvoid *data);
- /**
- * Called by glCompressedTexImage2D().
- *
- * \sa dd_function_table::CompressedTexImage1D.
- */
- void (*CompressedTexImage2D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLsizei width, GLsizei height, GLint border,
- GLsizei imageSize, const GLvoid *data);
-
- /**
- * Called by glCompressedTexImage3D().
- *
- * \sa dd_function_table::CompressedTexImage3D.
- */
- void (*CompressedTexImage3D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLsizei width, GLsizei height, GLsizei depth,
- GLint border,
- GLsizei imageSize, const GLvoid *data);
-
- /**
- * Called by glCompressedTexSubImage1D().
+ * Called by glCompressedTexImage[123]D().
*/
- void (*CompressedTexSubImage1D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLsizei width,
- GLenum format,
- GLsizei imageSize, const GLvoid *data);
+ void (*CompressedTexImage)(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint internalFormat,
+ GLsizei width, GLsizei height, GLsizei depth,
+ GLint border,
+ GLsizei imageSize, const GLvoid *data);
/**
- * Called by glCompressedTexSubImage2D().
+ * Called by glCompressedTexSubImage[123]D().
*/
- void (*CompressedTexSubImage2D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLint height,
- GLenum format,
- GLsizei imageSize, const GLvoid *data);
-
- /**
- * Called by glCompressedTexSubImage3D().
- */
- void (*CompressedTexSubImage3D)(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset, GLint zoffset,
- GLsizei width, GLint height, GLint depth,
- GLenum format,
- GLsizei imageSize, const GLvoid *data);
+ void (*CompressedTexSubImage)(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ GLsizei width, GLint height, GLint depth,
+ GLenum format,
+ GLsizei imageSize, const GLvoid *data);
/**
* Called by glGetCompressedTexImage.
diff --git a/mesalib/src/mesa/main/depth.h b/mesalib/src/mesa/main/depth.h
index b1ed1f3fd..2f428629f 100644
--- a/mesalib/src/mesa/main/depth.h
+++ b/mesalib/src/mesa/main/depth.h
@@ -1,68 +1,68 @@
-/**
- * \file depth.h
- * Depth buffer operations.
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 6.3
- *
- * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef DEPTH_H
-#define DEPTH_H
-
-
-#include "glheader.h"
-#include "mfeatures.h"
-
-struct gl_context;
-
-
-#if _HAVE_FULL_GL
-
-extern void GLAPIENTRY
-_mesa_ClearDepth( GLclampd depth );
-
-extern void GLAPIENTRY
-_mesa_ClearDepthf( GLclampf depth );
-
-extern void GLAPIENTRY
-_mesa_DepthFunc( GLenum func );
-
-extern void GLAPIENTRY
-_mesa_DepthMask( GLboolean flag );
-
-extern void GLAPIENTRY
-_mesa_DepthBoundsEXT( GLclampd zmin, GLclampd zmax );
-
-extern void
-_mesa_init_depth( struct gl_context * ctx );
-
-#else
-
-/** No-op */
-#define _mesa_init_depth( c ) ((void)0)
-
-#endif
-
-#endif
+/**
+ * \file depth.h
+ * Depth buffer operations.
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.3
+ *
+ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef DEPTH_H
+#define DEPTH_H
+
+
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct gl_context;
+
+
+#if _HAVE_FULL_GL
+
+extern void GLAPIENTRY
+_mesa_ClearDepth( GLclampd depth );
+
+extern void GLAPIENTRY
+_mesa_ClearDepthf( GLclampf depth );
+
+extern void GLAPIENTRY
+_mesa_DepthFunc( GLenum func );
+
+extern void GLAPIENTRY
+_mesa_DepthMask( GLboolean flag );
+
+extern void GLAPIENTRY
+_mesa_DepthBoundsEXT( GLclampd zmin, GLclampd zmax );
+
+extern void
+_mesa_init_depth( struct gl_context * ctx );
+
+#else
+
+/** No-op */
+#define _mesa_init_depth( c ) ((void)0)
+
+#endif
+
+#endif
diff --git a/mesalib/src/mesa/main/drawtex.h b/mesalib/src/mesa/main/drawtex.h
index 78bbd5b45..13ff6f97e 100644
--- a/mesalib/src/mesa/main/drawtex.h
+++ b/mesalib/src/mesa/main/drawtex.h
@@ -1,61 +1,61 @@
-/*
- * Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-#ifndef DRAWTEX_H
-#define DRAWTEX_H
-
-
-#include "glheader.h"
-#include "mfeatures.h"
-
-
-#if FEATURE_OES_draw_texture
-
-extern void GLAPIENTRY
-_mesa_DrawTexf(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
-
-extern void GLAPIENTRY
-_mesa_DrawTexfv(const GLfloat *coords);
-
-extern void GLAPIENTRY
-_mesa_DrawTexi(GLint x, GLint y, GLint z, GLint width, GLint height);
-
-extern void GLAPIENTRY
-_mesa_DrawTexiv(const GLint *coords);
-
-extern void GLAPIENTRY
-_mesa_DrawTexs(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
-
-extern void GLAPIENTRY
-_mesa_DrawTexsv(const GLshort *coords);
-
-extern void GLAPIENTRY
-_mesa_DrawTexx(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
-
-extern void GLAPIENTRY
-_mesa_DrawTexxv(const GLfixed *coords);
-
-#endif /* FEATURE_OES_draw_texture */
-
-
-#endif /* DRAWTEX_H */
+/*
+ * Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+#ifndef DRAWTEX_H
+#define DRAWTEX_H
+
+
+#include "glheader.h"
+#include "mfeatures.h"
+
+
+#if FEATURE_OES_draw_texture
+
+extern void GLAPIENTRY
+_mesa_DrawTexf(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
+
+extern void GLAPIENTRY
+_mesa_DrawTexfv(const GLfloat *coords);
+
+extern void GLAPIENTRY
+_mesa_DrawTexi(GLint x, GLint y, GLint z, GLint width, GLint height);
+
+extern void GLAPIENTRY
+_mesa_DrawTexiv(const GLint *coords);
+
+extern void GLAPIENTRY
+_mesa_DrawTexs(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
+
+extern void GLAPIENTRY
+_mesa_DrawTexsv(const GLshort *coords);
+
+extern void GLAPIENTRY
+_mesa_DrawTexx(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
+
+extern void GLAPIENTRY
+_mesa_DrawTexxv(const GLfixed *coords);
+
+#endif /* FEATURE_OES_draw_texture */
+
+
+#endif /* DRAWTEX_H */
diff --git a/mesalib/src/mesa/main/enable.h b/mesalib/src/mesa/main/enable.h
index 685e11d47..6d90c170c 100644
--- a/mesalib/src/mesa/main/enable.h
+++ b/mesalib/src/mesa/main/enable.h
@@ -1,71 +1,71 @@
-/**
- * \file enable.h
- * Enable/disable/query GL capabilities.
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef ENABLE_H
-#define ENABLE_H
-
-
-#include "glheader.h"
-
-struct gl_context;
-
-
-extern void
-_mesa_set_enable( struct gl_context* ctx, GLenum cap, GLboolean state );
-
-extern void GLAPIENTRY
-_mesa_Disable( GLenum cap );
-
-extern void GLAPIENTRY
-_mesa_Enable( GLenum cap );
-
-extern GLboolean GLAPIENTRY
-_mesa_IsEnabled( GLenum cap );
-
-extern void
-_mesa_set_enablei(struct gl_context *ctx, GLenum cap, GLuint index, GLboolean state);
-
-extern void GLAPIENTRY
-_mesa_DisableIndexed( GLenum cap, GLuint index );
-
-extern void GLAPIENTRY
-_mesa_EnableIndexed( GLenum cap, GLuint index );
-
-extern GLboolean GLAPIENTRY
-_mesa_IsEnabledIndexed( GLenum cap, GLuint index );
-
-extern void GLAPIENTRY
-_mesa_EnableClientState( GLenum cap );
-
-extern void GLAPIENTRY
-_mesa_DisableClientState( GLenum cap );
-
-
-#endif
+/**
+ * \file enable.h
+ * Enable/disable/query GL capabilities.
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef ENABLE_H
+#define ENABLE_H
+
+
+#include "glheader.h"
+
+struct gl_context;
+
+
+extern void
+_mesa_set_enable( struct gl_context* ctx, GLenum cap, GLboolean state );
+
+extern void GLAPIENTRY
+_mesa_Disable( GLenum cap );
+
+extern void GLAPIENTRY
+_mesa_Enable( GLenum cap );
+
+extern GLboolean GLAPIENTRY
+_mesa_IsEnabled( GLenum cap );
+
+extern void
+_mesa_set_enablei(struct gl_context *ctx, GLenum cap, GLuint index, GLboolean state);
+
+extern void GLAPIENTRY
+_mesa_DisableIndexed( GLenum cap, GLuint index );
+
+extern void GLAPIENTRY
+_mesa_EnableIndexed( GLenum cap, GLuint index );
+
+extern GLboolean GLAPIENTRY
+_mesa_IsEnabledIndexed( GLenum cap, GLuint index );
+
+extern void GLAPIENTRY
+_mesa_EnableClientState( GLenum cap );
+
+extern void GLAPIENTRY
+_mesa_DisableClientState( GLenum cap );
+
+
+#endif
diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c
index cd76eeb3d..2688f7ace 100644
--- a/mesalib/src/mesa/main/extensions.c
+++ b/mesalib/src/mesa/main/extensions.c
@@ -112,6 +112,7 @@ static const struct extension extension_table[] = {
{ "GL_ARB_robustness", o(dummy_true), GL, 2010 },
{ "GL_ARB_sampler_objects", o(ARB_sampler_objects), GL, 2009 },
{ "GL_ARB_seamless_cube_map", o(ARB_seamless_cube_map), GL, 2009 },
+ { "GL_ARB_shader_bit_encoding", o(ARB_shader_bit_encoding), GL, 2010 },
{ "GL_ARB_shader_objects", o(ARB_shader_objects), GL, 2002 },
{ "GL_ARB_shader_stencil_export", o(ARB_shader_stencil_export), GL, 2009 },
{ "GL_ARB_shader_texture_lod", o(ARB_shader_texture_lod), GL, 2009 },
diff --git a/mesalib/src/mesa/main/ffvertex_prog.h b/mesalib/src/mesa/main/ffvertex_prog.h
index 6d485bb2a..837a15efc 100644
--- a/mesalib/src/mesa/main/ffvertex_prog.h
+++ b/mesalib/src/mesa/main/ffvertex_prog.h
@@ -1,40 +1,40 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef FFVERTEX_PROG_H
-#define FFVERTEX_PROG_H
-
-
-struct gl_context;
-
-struct gl_vertex_program *
-_mesa_get_fixed_func_vertex_program(struct gl_context *ctx);
-
-
-
-#endif /* FFVERTEX_PROG_H */
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef FFVERTEX_PROG_H
+#define FFVERTEX_PROG_H
+
+
+struct gl_context;
+
+struct gl_vertex_program *
+_mesa_get_fixed_func_vertex_program(struct gl_context *ctx);
+
+
+
+#endif /* FFVERTEX_PROG_H */
diff --git a/mesalib/src/mesa/main/fog.h b/mesalib/src/mesa/main/fog.h
index 72a0657af..9191a4a54 100644
--- a/mesalib/src/mesa/main/fog.h
+++ b/mesalib/src/mesa/main/fog.h
@@ -1,69 +1,69 @@
-/**
- * \file fog.h
- * Fog operations.
- *
- * \if subset
- * (No-op)
- *
- * \endif
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef FOG_H
-#define FOG_H
-
-
-#include "glheader.h"
-#include "mfeatures.h"
-
-struct gl_context;
-
-
-#if _HAVE_FULL_GL
-
-extern void GLAPIENTRY
-_mesa_Fogf(GLenum pname, GLfloat param);
-
-extern void GLAPIENTRY
-_mesa_Fogi(GLenum pname, GLint param );
-
-extern void GLAPIENTRY
-_mesa_Fogfv(GLenum pname, const GLfloat *params );
-
-extern void GLAPIENTRY
-_mesa_Fogiv(GLenum pname, const GLint *params );
-
-extern void _mesa_init_fog( struct gl_context * ctx );
-
-#else
-
-/** No-op */
-#define _mesa_init_fog( c ) ((void)0)
-
-#endif
-
-#endif
+/**
+ * \file fog.h
+ * Fog operations.
+ *
+ * \if subset
+ * (No-op)
+ *
+ * \endif
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef FOG_H
+#define FOG_H
+
+
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct gl_context;
+
+
+#if _HAVE_FULL_GL
+
+extern void GLAPIENTRY
+_mesa_Fogf(GLenum pname, GLfloat param);
+
+extern void GLAPIENTRY
+_mesa_Fogi(GLenum pname, GLint param );
+
+extern void GLAPIENTRY
+_mesa_Fogfv(GLenum pname, const GLfloat *params );
+
+extern void GLAPIENTRY
+_mesa_Fogiv(GLenum pname, const GLint *params );
+
+extern void _mesa_init_fog( struct gl_context * ctx );
+
+#else
+
+/** No-op */
+#define _mesa_init_fog( c ) ((void)0)
+
+#endif
+
+#endif
diff --git a/mesalib/src/mesa/main/formats.c b/mesalib/src/mesa/main/formats.c
index cecb70c01..ccc0b1707 100644
--- a/mesalib/src/mesa/main/formats.c
+++ b/mesalib/src/mesa/main/formats.c
@@ -1319,7 +1319,7 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
"MESA_FORMAT_RED_RGTC1",
GL_RED,
GL_UNSIGNED_NORMALIZED,
- 4, 0, 0, 0,
+ 8, 0, 0, 0,
0, 0, 0, 0, 0,
4, 4, 8 /* 8 bytes per 4x4 block */
},
@@ -1328,7 +1328,7 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
"MESA_FORMAT_SIGNED_RED_RGTC1",
GL_RED,
GL_SIGNED_NORMALIZED,
- 4, 0, 0, 0,
+ 8, 0, 0, 0,
0, 0, 0, 0, 0,
4, 4, 8 /* 8 bytes per 4x4 block */
},
@@ -1337,7 +1337,7 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
"MESA_FORMAT_RG_RGTC2",
GL_RG,
GL_UNSIGNED_NORMALIZED,
- 4, 4, 0, 0,
+ 8, 8, 0, 0,
0, 0, 0, 0, 0,
4, 4, 16 /* 16 bytes per 4x4 block */
},
@@ -1346,7 +1346,7 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
"MESA_FORMAT_SIGNED_RG_RGTC2",
GL_RG,
GL_SIGNED_NORMALIZED,
- 4, 4, 0, 0,
+ 8, 8, 0, 0,
0, 0, 0, 0, 0,
4, 4, 16 /* 16 bytes per 4x4 block */
},
diff --git a/mesalib/src/mesa/main/hint.h b/mesalib/src/mesa/main/hint.h
index 3cdd2d650..6c6206874 100644
--- a/mesalib/src/mesa/main/hint.h
+++ b/mesalib/src/mesa/main/hint.h
@@ -1,59 +1,59 @@
-/**
- * \file hint.h
- * Hints operations.
- *
- * \if subset
- * (No-op)
- *
- * \endif
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 4.1
- *
- * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef HINT_H
-#define HINT_H
-
-#include "glheader.h"
-#include "mfeatures.h"
-
-struct gl_context;
-
-#if _HAVE_FULL_GL
-
-extern void GLAPIENTRY
-_mesa_Hint( GLenum target, GLenum mode );
-
-extern void
-_mesa_init_hint( struct gl_context * ctx );
-
-#else
-
-/** No-op */
-#define _mesa_init_hint( c ) ((void) 0)
-
-#endif
-
-#endif
+/**
+ * \file hint.h
+ * Hints operations.
+ *
+ * \if subset
+ * (No-op)
+ *
+ * \endif
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 4.1
+ *
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef HINT_H
+#define HINT_H
+
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct gl_context;
+
+#if _HAVE_FULL_GL
+
+extern void GLAPIENTRY
+_mesa_Hint( GLenum target, GLenum mode );
+
+extern void
+_mesa_init_hint( struct gl_context * ctx );
+
+#else
+
+/** No-op */
+#define _mesa_init_hint( c ) ((void) 0)
+
+#endif
+
+#endif
diff --git a/mesalib/src/mesa/main/lines.h b/mesalib/src/mesa/main/lines.h
index c882fc679..8e8b3f8d6 100644
--- a/mesalib/src/mesa/main/lines.h
+++ b/mesalib/src/mesa/main/lines.h
@@ -1,49 +1,49 @@
-/**
- * \file lines.h
- * Line operations.
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-
-#ifndef LINES_H
-#define LINES_H
-
-
-#include "glheader.h"
-
-struct gl_context;
-
-extern void GLAPIENTRY
-_mesa_LineWidth( GLfloat width );
-
-extern void GLAPIENTRY
-_mesa_LineStipple( GLint factor, GLushort pattern );
-
-extern void GLAPIENTRY
-_mesa_init_line( struct gl_context * ctx );
-
-#endif
+/**
+ * \file lines.h
+ * Line operations.
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+
+#ifndef LINES_H
+#define LINES_H
+
+
+#include "glheader.h"
+
+struct gl_context;
+
+extern void GLAPIENTRY
+_mesa_LineWidth( GLfloat width );
+
+extern void GLAPIENTRY
+_mesa_LineStipple( GLint factor, GLushort pattern );
+
+extern void GLAPIENTRY
+_mesa_init_line( struct gl_context * ctx );
+
+#endif
diff --git a/mesalib/src/mesa/main/matrix.h b/mesalib/src/mesa/main/matrix.h
index a4e7f7cfd..2878cc134 100644
--- a/mesalib/src/mesa/main/matrix.h
+++ b/mesalib/src/mesa/main/matrix.h
@@ -1,113 +1,113 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.5
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef MATRIX_H
-#define MATRIX_H
-
-
-#include "glheader.h"
-
-struct gl_context;
-
-extern void GLAPIENTRY
-_mesa_Frustum( GLdouble left, GLdouble right,
- GLdouble bottom, GLdouble top,
- GLdouble nearval, GLdouble farval );
-
-extern void GLAPIENTRY
-_mesa_Ortho( GLdouble left, GLdouble right,
- GLdouble bottom, GLdouble top,
- GLdouble nearval, GLdouble farval );
-
-extern void GLAPIENTRY
-_mesa_PushMatrix( void );
-
-extern void GLAPIENTRY
-_mesa_PopMatrix( void );
-
-extern void GLAPIENTRY
-_mesa_LoadIdentity( void );
-
-extern void GLAPIENTRY
-_mesa_LoadMatrixf( const GLfloat *m );
-
-extern void GLAPIENTRY
-_mesa_LoadMatrixd( const GLdouble *m );
-
-extern void GLAPIENTRY
-_mesa_MatrixMode( GLenum mode );
-
-extern void GLAPIENTRY
-_mesa_MultMatrixf( const GLfloat *m );
-
-extern void GLAPIENTRY
-_mesa_MultMatrixd( const GLdouble *m );
-
-extern void GLAPIENTRY
-_mesa_Rotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z );
-
-extern void GLAPIENTRY
-_mesa_Rotated( GLdouble angle, GLdouble x, GLdouble y, GLdouble z );
-
-extern void GLAPIENTRY
-_mesa_Scalef( GLfloat x, GLfloat y, GLfloat z );
-
-extern void GLAPIENTRY
-_mesa_Scaled( GLdouble x, GLdouble y, GLdouble z );
-
-extern void GLAPIENTRY
-_mesa_Translatef( GLfloat x, GLfloat y, GLfloat z );
-
-extern void GLAPIENTRY
-_mesa_Translated( GLdouble x, GLdouble y, GLdouble z );
-
-extern void GLAPIENTRY
-_mesa_LoadTransposeMatrixfARB( const GLfloat *m );
-
-extern void GLAPIENTRY
-_mesa_LoadTransposeMatrixdARB( const GLdouble *m );
-
-extern void GLAPIENTRY
-_mesa_MultTransposeMatrixfARB( const GLfloat *m );
-
-extern void GLAPIENTRY
-_mesa_MultTransposeMatrixdARB( const GLdouble *m );
-
-
-extern void
-_mesa_init_matrix( struct gl_context * ctx );
-
-extern void
-_mesa_init_transform( struct gl_context *ctx );
-
-extern void
-_mesa_free_matrix_data( struct gl_context *ctx );
-
-extern void
-_mesa_update_modelview_project( struct gl_context *ctx, GLuint newstate );
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.5
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef MATRIX_H
+#define MATRIX_H
+
+
+#include "glheader.h"
+
+struct gl_context;
+
+extern void GLAPIENTRY
+_mesa_Frustum( GLdouble left, GLdouble right,
+ GLdouble bottom, GLdouble top,
+ GLdouble nearval, GLdouble farval );
+
+extern void GLAPIENTRY
+_mesa_Ortho( GLdouble left, GLdouble right,
+ GLdouble bottom, GLdouble top,
+ GLdouble nearval, GLdouble farval );
+
+extern void GLAPIENTRY
+_mesa_PushMatrix( void );
+
+extern void GLAPIENTRY
+_mesa_PopMatrix( void );
+
+extern void GLAPIENTRY
+_mesa_LoadIdentity( void );
+
+extern void GLAPIENTRY
+_mesa_LoadMatrixf( const GLfloat *m );
+
+extern void GLAPIENTRY
+_mesa_LoadMatrixd( const GLdouble *m );
+
+extern void GLAPIENTRY
+_mesa_MatrixMode( GLenum mode );
+
+extern void GLAPIENTRY
+_mesa_MultMatrixf( const GLfloat *m );
+
+extern void GLAPIENTRY
+_mesa_MultMatrixd( const GLdouble *m );
+
+extern void GLAPIENTRY
+_mesa_Rotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z );
+
+extern void GLAPIENTRY
+_mesa_Rotated( GLdouble angle, GLdouble x, GLdouble y, GLdouble z );
+
+extern void GLAPIENTRY
+_mesa_Scalef( GLfloat x, GLfloat y, GLfloat z );
+
+extern void GLAPIENTRY
+_mesa_Scaled( GLdouble x, GLdouble y, GLdouble z );
+
+extern void GLAPIENTRY
+_mesa_Translatef( GLfloat x, GLfloat y, GLfloat z );
+
+extern void GLAPIENTRY
+_mesa_Translated( GLdouble x, GLdouble y, GLdouble z );
+
+extern void GLAPIENTRY
+_mesa_LoadTransposeMatrixfARB( const GLfloat *m );
+
+extern void GLAPIENTRY
+_mesa_LoadTransposeMatrixdARB( const GLdouble *m );
+
+extern void GLAPIENTRY
+_mesa_MultTransposeMatrixfARB( const GLfloat *m );
+
+extern void GLAPIENTRY
+_mesa_MultTransposeMatrixdARB( const GLdouble *m );
+
+
+extern void
+_mesa_init_matrix( struct gl_context * ctx );
+
+extern void
+_mesa_init_transform( struct gl_context *ctx );
+
+extern void
+_mesa_free_matrix_data( struct gl_context *ctx );
+
+extern void
+_mesa_update_modelview_project( struct gl_context *ctx, GLuint newstate );
+
+
+#endif
diff --git a/mesalib/src/mesa/main/mipmap.c b/mesalib/src/mesa/main/mipmap.c
index abd26b8d3..250d3c6dc 100644
--- a/mesalib/src/mesa/main/mipmap.c
+++ b/mesalib/src/mesa/main/mipmap.c
@@ -2133,10 +2133,10 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target,
}
/* The image space was allocated above so use glTexSubImage now */
- ctx->Driver.TexSubImage2D(ctx, dstImage,
- 0, 0, dstWidth, dstHeight,
- temp_base_format, temp_datatype,
- temp_dst, &ctx->DefaultPacking);
+ ctx->Driver.TexSubImage(ctx, 2, dstImage,
+ 0, 0, 0, dstWidth, dstHeight, 1,
+ temp_base_format, temp_datatype,
+ temp_dst, &ctx->DefaultPacking);
/* swap src and dest pointers */
{
diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h
index 3a8cac9c5..ea40ffc9c 100644
--- a/mesalib/src/mesa/main/mtypes.h
+++ b/mesalib/src/mesa/main/mtypes.h
@@ -2895,6 +2895,7 @@ struct gl_extensions
GLboolean ARB_point_sprite;
GLboolean ARB_sampler_objects;
GLboolean ARB_seamless_cube_map;
+ GLboolean ARB_shader_bit_encoding;
GLboolean ARB_shader_objects;
GLboolean ARB_shader_stencil_export;
GLboolean ARB_shader_texture_lod;
diff --git a/mesalib/src/mesa/main/multisample.c b/mesalib/src/mesa/main/multisample.c
index 4eb1ab3a3..67fdb8c9d 100644
--- a/mesalib/src/mesa/main/multisample.c
+++ b/mesalib/src/mesa/main/multisample.c
@@ -1,62 +1,62 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/macros.h"
-#include "main/multisample.h"
-#include "main/mtypes.h"
-
-
-/**
- * Called via glSampleCoverageARB
- */
-void GLAPIENTRY
-_mesa_SampleCoverageARB(GLclampf value, GLboolean invert)
-{
- GET_CURRENT_CONTEXT(ctx);
-
- ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH( ctx );
-
- ctx->Multisample.SampleCoverageValue = (GLfloat) CLAMP(value, 0.0, 1.0);
- ctx->Multisample.SampleCoverageInvert = invert;
- ctx->NewState |= _NEW_MULTISAMPLE;
-}
-
-
-/**
- * Initialize the context's multisample state.
- * \param ctx the GL context.
- */
-void
-_mesa_init_multisample(struct gl_context *ctx)
-{
- ctx->Multisample.Enabled = GL_TRUE;
- ctx->Multisample.SampleAlphaToCoverage = GL_FALSE;
- ctx->Multisample.SampleAlphaToOne = GL_FALSE;
- ctx->Multisample.SampleCoverage = GL_FALSE;
- ctx->Multisample.SampleCoverageValue = 1.0;
- ctx->Multisample.SampleCoverageInvert = GL_FALSE;
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/macros.h"
+#include "main/multisample.h"
+#include "main/mtypes.h"
+
+
+/**
+ * Called via glSampleCoverageARB
+ */
+void GLAPIENTRY
+_mesa_SampleCoverageARB(GLclampf value, GLboolean invert)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH( ctx );
+
+ ctx->Multisample.SampleCoverageValue = (GLfloat) CLAMP(value, 0.0, 1.0);
+ ctx->Multisample.SampleCoverageInvert = invert;
+ ctx->NewState |= _NEW_MULTISAMPLE;
+}
+
+
+/**
+ * Initialize the context's multisample state.
+ * \param ctx the GL context.
+ */
+void
+_mesa_init_multisample(struct gl_context *ctx)
+{
+ ctx->Multisample.Enabled = GL_TRUE;
+ ctx->Multisample.SampleAlphaToCoverage = GL_FALSE;
+ ctx->Multisample.SampleAlphaToOne = GL_FALSE;
+ ctx->Multisample.SampleCoverage = GL_FALSE;
+ ctx->Multisample.SampleCoverageValue = 1.0;
+ ctx->Multisample.SampleCoverageInvert = GL_FALSE;
+}
diff --git a/mesalib/src/mesa/main/multisample.h b/mesalib/src/mesa/main/multisample.h
index c1c967bbe..e86d4092b 100644
--- a/mesalib/src/mesa/main/multisample.h
+++ b/mesalib/src/mesa/main/multisample.h
@@ -1,41 +1,41 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef MULTISAMPLE_H
-#define MULTISAMPLE_H
-
-#include "glheader.h"
-
-struct gl_context;
-
-extern void GLAPIENTRY
-_mesa_SampleCoverageARB(GLclampf value, GLboolean invert);
-
-
-extern void
-_mesa_init_multisample(struct gl_context *ctx);
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef MULTISAMPLE_H
+#define MULTISAMPLE_H
+
+#include "glheader.h"
+
+struct gl_context;
+
+extern void GLAPIENTRY
+_mesa_SampleCoverageARB(GLclampf value, GLboolean invert);
+
+
+extern void
+_mesa_init_multisample(struct gl_context *ctx);
+
+
+#endif
diff --git a/mesalib/src/mesa/main/pixelstore.h b/mesalib/src/mesa/main/pixelstore.h
index 2995beb10..eb5081974 100644
--- a/mesalib/src/mesa/main/pixelstore.h
+++ b/mesalib/src/mesa/main/pixelstore.h
@@ -1,52 +1,52 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/**
- * \file pixelstore.h
- * glPixelStore functions.
- */
-
-
-#ifndef PIXELSTORE_H
-#define PIXELSTORE_H
-
-
-#include "glheader.h"
-
-struct gl_context;
-
-
-extern void GLAPIENTRY
-_mesa_PixelStorei( GLenum pname, GLint param );
-
-
-extern void GLAPIENTRY
-_mesa_PixelStoref( GLenum pname, GLfloat param );
-
-
-extern void
-_mesa_init_pixelstore( struct gl_context *ctx );
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/**
+ * \file pixelstore.h
+ * glPixelStore functions.
+ */
+
+
+#ifndef PIXELSTORE_H
+#define PIXELSTORE_H
+
+
+#include "glheader.h"
+
+struct gl_context;
+
+
+extern void GLAPIENTRY
+_mesa_PixelStorei( GLenum pname, GLint param );
+
+
+extern void GLAPIENTRY
+_mesa_PixelStoref( GLenum pname, GLfloat param );
+
+
+extern void
+_mesa_init_pixelstore( struct gl_context *ctx );
+
+
+#endif
diff --git a/mesalib/src/mesa/main/points.c b/mesalib/src/mesa/main/points.c
index 78d40f61c..87bfae27e 100644
--- a/mesalib/src/mesa/main/points.c
+++ b/mesalib/src/mesa/main/points.c
@@ -1,272 +1,272 @@
-/**
- * \file points.c
- * Point operations.
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#include "glheader.h"
-#include "context.h"
-#include "macros.h"
-#include "points.h"
-#include "mtypes.h"
-
-
-/**
- * Set current point size.
- * \param size point diameter in pixels
- * \sa glPointSize().
- */
-void GLAPIENTRY
-_mesa_PointSize( GLfloat size )
-{
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (size <= 0.0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glPointSize" );
- return;
- }
-
- if (ctx->Point.Size == size)
- return;
-
- FLUSH_VERTICES(ctx, _NEW_POINT);
- ctx->Point.Size = size;
-
- if (ctx->Driver.PointSize)
- ctx->Driver.PointSize(ctx, size);
-}
-
-
-#if _HAVE_FULL_GL
-
-
-void GLAPIENTRY
-_mesa_PointParameteri( GLenum pname, GLint param )
-{
- GLfloat p[3];
- p[0] = (GLfloat) param;
- p[1] = p[2] = 0.0F;
- _mesa_PointParameterfv(pname, p);
-}
-
-
-void GLAPIENTRY
-_mesa_PointParameteriv( GLenum pname, const GLint *params )
-{
- GLfloat p[3];
- p[0] = (GLfloat) params[0];
- if (pname == GL_DISTANCE_ATTENUATION_EXT) {
- p[1] = (GLfloat) params[1];
- p[2] = (GLfloat) params[2];
- }
- _mesa_PointParameterfv(pname, p);
-}
-
-
-void GLAPIENTRY
-_mesa_PointParameterf( GLenum pname, GLfloat param)
-{
- GLfloat p[3];
- p[0] = param;
- p[1] = p[2] = 0.0F;
- _mesa_PointParameterfv(pname, p);
-}
-
-
-void GLAPIENTRY
-_mesa_PointParameterfv( GLenum pname, const GLfloat *params)
-{
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- switch (pname) {
- case GL_DISTANCE_ATTENUATION_EXT:
- if (ctx->Extensions.EXT_point_parameters) {
- if (TEST_EQ_3V(ctx->Point.Params, params))
- return;
- FLUSH_VERTICES(ctx, _NEW_POINT);
- COPY_3V(ctx->Point.Params, params);
- ctx->Point._Attenuated = (ctx->Point.Params[0] != 1.0 ||
- ctx->Point.Params[1] != 0.0 ||
- ctx->Point.Params[2] != 0.0);
-
- if (ctx->Point._Attenuated)
- ctx->_TriangleCaps |= DD_POINT_ATTEN;
- else
- ctx->_TriangleCaps &= ~DD_POINT_ATTEN;
- }
- else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glPointParameterf[v]{EXT,ARB}(pname)");
- return;
- }
- break;
- case GL_POINT_SIZE_MIN_EXT:
- if (ctx->Extensions.EXT_point_parameters) {
- if (params[0] < 0.0F) {
- _mesa_error( ctx, GL_INVALID_VALUE,
- "glPointParameterf[v]{EXT,ARB}(param)" );
- return;
- }
- if (ctx->Point.MinSize == params[0])
- return;
- FLUSH_VERTICES(ctx, _NEW_POINT);
- ctx->Point.MinSize = params[0];
- }
- else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glPointParameterf[v]{EXT,ARB}(pname)");
- return;
- }
- break;
- case GL_POINT_SIZE_MAX_EXT:
- if (ctx->Extensions.EXT_point_parameters) {
- if (params[0] < 0.0F) {
- _mesa_error( ctx, GL_INVALID_VALUE,
- "glPointParameterf[v]{EXT,ARB}(param)" );
- return;
- }
- if (ctx->Point.MaxSize == params[0])
- return;
- FLUSH_VERTICES(ctx, _NEW_POINT);
- ctx->Point.MaxSize = params[0];
- }
- else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glPointParameterf[v]{EXT,ARB}(pname)");
- return;
- }
- break;
- case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
- if (ctx->Extensions.EXT_point_parameters) {
- if (params[0] < 0.0F) {
- _mesa_error( ctx, GL_INVALID_VALUE,
- "glPointParameterf[v]{EXT,ARB}(param)" );
- return;
- }
- if (ctx->Point.Threshold == params[0])
- return;
- FLUSH_VERTICES(ctx, _NEW_POINT);
- ctx->Point.Threshold = params[0];
- }
- else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glPointParameterf[v]{EXT,ARB}(pname)");
- return;
- }
- break;
- case GL_POINT_SPRITE_R_MODE_NV:
- /* This is one area where ARB_point_sprite and NV_point_sprite
- * differ. In ARB_point_sprite the POINT_SPRITE_R_MODE is
- * always ZERO. NV_point_sprite adds the S and R modes.
- */
- if (ctx->Extensions.NV_point_sprite) {
- GLenum value = (GLenum) params[0];
- if (value != GL_ZERO && value != GL_S && value != GL_R) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glPointParameterf[v]{EXT,ARB}(param)");
- return;
- }
- if (ctx->Point.SpriteRMode == value)
- return;
- FLUSH_VERTICES(ctx, _NEW_POINT);
- ctx->Point.SpriteRMode = value;
- }
- else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glPointParameterf[v]{EXT,ARB}(pname)");
- return;
- }
- break;
- case GL_POINT_SPRITE_COORD_ORIGIN:
- /* This is not completely correct. GL_POINT_SPRITE_COORD_ORIGIN was
- * added to point sprites when the extension was merged into OpenGL
- * 2.0. It is expected that an implementation supporting OpenGL 1.4
- * and GL_ARB_point_sprite will generate an error here.
- */
- if (ctx->Extensions.ARB_point_sprite) {
- GLenum value = (GLenum) params[0];
- if (value != GL_LOWER_LEFT && value != GL_UPPER_LEFT) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glPointParameterf[v]{EXT,ARB}(param)");
- return;
- }
- if (ctx->Point.SpriteOrigin == value)
- return;
- FLUSH_VERTICES(ctx, _NEW_POINT);
- ctx->Point.SpriteOrigin = value;
- }
- else {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glPointParameterf[v]{EXT,ARB}(pname)");
- return;
- }
- break;
- default:
- _mesa_error( ctx, GL_INVALID_ENUM,
- "glPointParameterf[v]{EXT,ARB}(pname)" );
- return;
- }
-
- if (ctx->Driver.PointParameterfv)
- (*ctx->Driver.PointParameterfv)(ctx, pname, params);
-}
-#endif
-
-
-
-/**
- * Initialize the context point state.
- *
- * \param ctx GL context.
- *
- * Initializes __struct gl_contextRec::Point and point related constants in
- * __struct gl_contextRec::Const.
- */
-void
-_mesa_init_point(struct gl_context *ctx)
-{
- GLuint i;
-
- ctx->Point.SmoothFlag = GL_FALSE;
- ctx->Point.Size = 1.0;
- ctx->Point.Params[0] = 1.0;
- ctx->Point.Params[1] = 0.0;
- ctx->Point.Params[2] = 0.0;
- ctx->Point._Attenuated = GL_FALSE;
- ctx->Point.MinSize = 0.0;
- ctx->Point.MaxSize
- = MAX2(ctx->Const.MaxPointSize, ctx->Const.MaxPointSizeAA);
- ctx->Point.Threshold = 1.0;
- ctx->Point.PointSprite = GL_FALSE; /* GL_ARB/NV_point_sprite */
- ctx->Point.SpriteRMode = GL_ZERO; /* GL_NV_point_sprite (only!) */
- ctx->Point.SpriteOrigin = GL_UPPER_LEFT; /* GL_ARB_point_sprite */
- for (i = 0; i < Elements(ctx->Point.CoordReplace); i++) {
- ctx->Point.CoordReplace[i] = GL_FALSE; /* GL_ARB/NV_point_sprite */
- }
-}
+/**
+ * \file points.c
+ * Point operations.
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#include "glheader.h"
+#include "context.h"
+#include "macros.h"
+#include "points.h"
+#include "mtypes.h"
+
+
+/**
+ * Set current point size.
+ * \param size point diameter in pixels
+ * \sa glPointSize().
+ */
+void GLAPIENTRY
+_mesa_PointSize( GLfloat size )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (size <= 0.0) {
+ _mesa_error( ctx, GL_INVALID_VALUE, "glPointSize" );
+ return;
+ }
+
+ if (ctx->Point.Size == size)
+ return;
+
+ FLUSH_VERTICES(ctx, _NEW_POINT);
+ ctx->Point.Size = size;
+
+ if (ctx->Driver.PointSize)
+ ctx->Driver.PointSize(ctx, size);
+}
+
+
+#if _HAVE_FULL_GL
+
+
+void GLAPIENTRY
+_mesa_PointParameteri( GLenum pname, GLint param )
+{
+ GLfloat p[3];
+ p[0] = (GLfloat) param;
+ p[1] = p[2] = 0.0F;
+ _mesa_PointParameterfv(pname, p);
+}
+
+
+void GLAPIENTRY
+_mesa_PointParameteriv( GLenum pname, const GLint *params )
+{
+ GLfloat p[3];
+ p[0] = (GLfloat) params[0];
+ if (pname == GL_DISTANCE_ATTENUATION_EXT) {
+ p[1] = (GLfloat) params[1];
+ p[2] = (GLfloat) params[2];
+ }
+ _mesa_PointParameterfv(pname, p);
+}
+
+
+void GLAPIENTRY
+_mesa_PointParameterf( GLenum pname, GLfloat param)
+{
+ GLfloat p[3];
+ p[0] = param;
+ p[1] = p[2] = 0.0F;
+ _mesa_PointParameterfv(pname, p);
+}
+
+
+void GLAPIENTRY
+_mesa_PointParameterfv( GLenum pname, const GLfloat *params)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ switch (pname) {
+ case GL_DISTANCE_ATTENUATION_EXT:
+ if (ctx->Extensions.EXT_point_parameters) {
+ if (TEST_EQ_3V(ctx->Point.Params, params))
+ return;
+ FLUSH_VERTICES(ctx, _NEW_POINT);
+ COPY_3V(ctx->Point.Params, params);
+ ctx->Point._Attenuated = (ctx->Point.Params[0] != 1.0 ||
+ ctx->Point.Params[1] != 0.0 ||
+ ctx->Point.Params[2] != 0.0);
+
+ if (ctx->Point._Attenuated)
+ ctx->_TriangleCaps |= DD_POINT_ATTEN;
+ else
+ ctx->_TriangleCaps &= ~DD_POINT_ATTEN;
+ }
+ else {
+ _mesa_error(ctx, GL_INVALID_ENUM,
+ "glPointParameterf[v]{EXT,ARB}(pname)");
+ return;
+ }
+ break;
+ case GL_POINT_SIZE_MIN_EXT:
+ if (ctx->Extensions.EXT_point_parameters) {
+ if (params[0] < 0.0F) {
+ _mesa_error( ctx, GL_INVALID_VALUE,
+ "glPointParameterf[v]{EXT,ARB}(param)" );
+ return;
+ }
+ if (ctx->Point.MinSize == params[0])
+ return;
+ FLUSH_VERTICES(ctx, _NEW_POINT);
+ ctx->Point.MinSize = params[0];
+ }
+ else {
+ _mesa_error(ctx, GL_INVALID_ENUM,
+ "glPointParameterf[v]{EXT,ARB}(pname)");
+ return;
+ }
+ break;
+ case GL_POINT_SIZE_MAX_EXT:
+ if (ctx->Extensions.EXT_point_parameters) {
+ if (params[0] < 0.0F) {
+ _mesa_error( ctx, GL_INVALID_VALUE,
+ "glPointParameterf[v]{EXT,ARB}(param)" );
+ return;
+ }
+ if (ctx->Point.MaxSize == params[0])
+ return;
+ FLUSH_VERTICES(ctx, _NEW_POINT);
+ ctx->Point.MaxSize = params[0];
+ }
+ else {
+ _mesa_error(ctx, GL_INVALID_ENUM,
+ "glPointParameterf[v]{EXT,ARB}(pname)");
+ return;
+ }
+ break;
+ case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
+ if (ctx->Extensions.EXT_point_parameters) {
+ if (params[0] < 0.0F) {
+ _mesa_error( ctx, GL_INVALID_VALUE,
+ "glPointParameterf[v]{EXT,ARB}(param)" );
+ return;
+ }
+ if (ctx->Point.Threshold == params[0])
+ return;
+ FLUSH_VERTICES(ctx, _NEW_POINT);
+ ctx->Point.Threshold = params[0];
+ }
+ else {
+ _mesa_error(ctx, GL_INVALID_ENUM,
+ "glPointParameterf[v]{EXT,ARB}(pname)");
+ return;
+ }
+ break;
+ case GL_POINT_SPRITE_R_MODE_NV:
+ /* This is one area where ARB_point_sprite and NV_point_sprite
+ * differ. In ARB_point_sprite the POINT_SPRITE_R_MODE is
+ * always ZERO. NV_point_sprite adds the S and R modes.
+ */
+ if (ctx->Extensions.NV_point_sprite) {
+ GLenum value = (GLenum) params[0];
+ if (value != GL_ZERO && value != GL_S && value != GL_R) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glPointParameterf[v]{EXT,ARB}(param)");
+ return;
+ }
+ if (ctx->Point.SpriteRMode == value)
+ return;
+ FLUSH_VERTICES(ctx, _NEW_POINT);
+ ctx->Point.SpriteRMode = value;
+ }
+ else {
+ _mesa_error(ctx, GL_INVALID_ENUM,
+ "glPointParameterf[v]{EXT,ARB}(pname)");
+ return;
+ }
+ break;
+ case GL_POINT_SPRITE_COORD_ORIGIN:
+ /* This is not completely correct. GL_POINT_SPRITE_COORD_ORIGIN was
+ * added to point sprites when the extension was merged into OpenGL
+ * 2.0. It is expected that an implementation supporting OpenGL 1.4
+ * and GL_ARB_point_sprite will generate an error here.
+ */
+ if (ctx->Extensions.ARB_point_sprite) {
+ GLenum value = (GLenum) params[0];
+ if (value != GL_LOWER_LEFT && value != GL_UPPER_LEFT) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glPointParameterf[v]{EXT,ARB}(param)");
+ return;
+ }
+ if (ctx->Point.SpriteOrigin == value)
+ return;
+ FLUSH_VERTICES(ctx, _NEW_POINT);
+ ctx->Point.SpriteOrigin = value;
+ }
+ else {
+ _mesa_error(ctx, GL_INVALID_ENUM,
+ "glPointParameterf[v]{EXT,ARB}(pname)");
+ return;
+ }
+ break;
+ default:
+ _mesa_error( ctx, GL_INVALID_ENUM,
+ "glPointParameterf[v]{EXT,ARB}(pname)" );
+ return;
+ }
+
+ if (ctx->Driver.PointParameterfv)
+ (*ctx->Driver.PointParameterfv)(ctx, pname, params);
+}
+#endif
+
+
+
+/**
+ * Initialize the context point state.
+ *
+ * \param ctx GL context.
+ *
+ * Initializes __struct gl_contextRec::Point and point related constants in
+ * __struct gl_contextRec::Const.
+ */
+void
+_mesa_init_point(struct gl_context *ctx)
+{
+ GLuint i;
+
+ ctx->Point.SmoothFlag = GL_FALSE;
+ ctx->Point.Size = 1.0;
+ ctx->Point.Params[0] = 1.0;
+ ctx->Point.Params[1] = 0.0;
+ ctx->Point.Params[2] = 0.0;
+ ctx->Point._Attenuated = GL_FALSE;
+ ctx->Point.MinSize = 0.0;
+ ctx->Point.MaxSize
+ = MAX2(ctx->Const.MaxPointSize, ctx->Const.MaxPointSizeAA);
+ ctx->Point.Threshold = 1.0;
+ ctx->Point.PointSprite = GL_FALSE; /* GL_ARB/NV_point_sprite */
+ ctx->Point.SpriteRMode = GL_ZERO; /* GL_NV_point_sprite (only!) */
+ ctx->Point.SpriteOrigin = GL_UPPER_LEFT; /* GL_ARB_point_sprite */
+ for (i = 0; i < Elements(ctx->Point.CoordReplace); i++) {
+ ctx->Point.CoordReplace[i] = GL_FALSE; /* GL_ARB/NV_point_sprite */
+ }
+}
diff --git a/mesalib/src/mesa/main/points.h b/mesalib/src/mesa/main/points.h
index 442053c8f..306a8a572 100644
--- a/mesalib/src/mesa/main/points.h
+++ b/mesalib/src/mesa/main/points.h
@@ -1,59 +1,59 @@
-/**
- * \file points.h
- * Point operations.
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef POINTS_H
-#define POINTS_H
-
-
-#include "glheader.h"
-
-struct gl_context;
-
-
-extern void GLAPIENTRY
-_mesa_PointSize( GLfloat size );
-
-extern void GLAPIENTRY
-_mesa_PointParameteri( GLenum pname, GLint param );
-
-extern void GLAPIENTRY
-_mesa_PointParameteriv( GLenum pname, const GLint *params );
-
-extern void GLAPIENTRY
-_mesa_PointParameterf( GLenum pname, GLfloat param );
-
-extern void GLAPIENTRY
-_mesa_PointParameterfv( GLenum pname, const GLfloat *params );
-
-extern void
-_mesa_init_point( struct gl_context * ctx );
-
-
-#endif
+/**
+ * \file points.h
+ * Point operations.
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef POINTS_H
+#define POINTS_H
+
+
+#include "glheader.h"
+
+struct gl_context;
+
+
+extern void GLAPIENTRY
+_mesa_PointSize( GLfloat size );
+
+extern void GLAPIENTRY
+_mesa_PointParameteri( GLenum pname, GLint param );
+
+extern void GLAPIENTRY
+_mesa_PointParameteriv( GLenum pname, const GLint *params );
+
+extern void GLAPIENTRY
+_mesa_PointParameterf( GLenum pname, GLfloat param );
+
+extern void GLAPIENTRY
+_mesa_PointParameterfv( GLenum pname, const GLfloat *params );
+
+extern void
+_mesa_init_point( struct gl_context * ctx );
+
+
+#endif
diff --git a/mesalib/src/mesa/main/rastpos.c b/mesalib/src/mesa/main/rastpos.c
index 70f67d398..a1f6f4234 100644
--- a/mesalib/src/mesa/main/rastpos.c
+++ b/mesalib/src/mesa/main/rastpos.c
@@ -1,566 +1,566 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.3
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-/**
- * \file rastpos.c
- * Raster position operations.
- */
-
-#include "glheader.h"
-#include "context.h"
-#include "feedback.h"
-#include "macros.h"
-#include "mfeatures.h"
-#include "mtypes.h"
-#include "rastpos.h"
-#include "state.h"
-#include "main/dispatch.h"
-
-
-#if FEATURE_rastpos
-
-
-/**
- * Helper function for all the RasterPos functions.
- */
-static void
-rasterpos(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
- GET_CURRENT_CONTEXT(ctx);
- GLfloat p[4];
-
- p[0] = x;
- p[1] = y;
- p[2] = z;
- p[3] = w;
-
- ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- FLUSH_CURRENT(ctx, 0);
-
- if (ctx->NewState)
- _mesa_update_state( ctx );
-
- ctx->Driver.RasterPos(ctx, p);
-}
-
-
-static void GLAPIENTRY
-_mesa_RasterPos2d(GLdouble x, GLdouble y)
-{
- rasterpos((GLfloat)x, (GLfloat)y, (GLfloat)0.0, (GLfloat)1.0);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos2f(GLfloat x, GLfloat y)
-{
- rasterpos(x, y, 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos2i(GLint x, GLint y)
-{
- rasterpos((GLfloat) x, (GLfloat) y, 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos2s(GLshort x, GLshort y)
-{
- rasterpos(x, y, 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos3d(GLdouble x, GLdouble y, GLdouble z)
-{
- rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos3f(GLfloat x, GLfloat y, GLfloat z)
-{
- rasterpos(x, y, z, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos3i(GLint x, GLint y, GLint z)
-{
- rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos3s(GLshort x, GLshort y, GLshort z)
-{
- rasterpos(x, y, z, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
- rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
- rasterpos(x, y, z, w);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos4i(GLint x, GLint y, GLint z, GLint w)
-{
- rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w)
-{
- rasterpos(x, y, z, w);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos2dv(const GLdouble *v)
-{
- rasterpos((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos2fv(const GLfloat *v)
-{
- rasterpos(v[0], v[1], 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos2iv(const GLint *v)
-{
- rasterpos((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos2sv(const GLshort *v)
-{
- rasterpos(v[0], v[1], 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos3dv(const GLdouble *v)
-{
- rasterpos((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos3fv(const GLfloat *v)
-{
- rasterpos(v[0], v[1], v[2], 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos3iv(const GLint *v)
-{
- rasterpos((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos3sv(const GLshort *v)
-{
- rasterpos(v[0], v[1], v[2], 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos4dv(const GLdouble *v)
-{
- rasterpos((GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos4fv(const GLfloat *v)
-{
- rasterpos(v[0], v[1], v[2], v[3]);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos4iv(const GLint *v)
-{
- rasterpos((GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-_mesa_RasterPos4sv(const GLshort *v)
-{
- rasterpos(v[0], v[1], v[2], v[3]);
-}
-
-
-/**********************************************************************/
-/*** GL_ARB_window_pos / GL_MESA_window_pos ***/
-/**********************************************************************/
-
-
-/**
- * All glWindowPosMESA and glWindowPosARB commands call this function to
- * update the current raster position.
- */
-static void
-window_pos3f(GLfloat x, GLfloat y, GLfloat z)
-{
- GET_CURRENT_CONTEXT(ctx);
- GLfloat z2;
-
- ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- FLUSH_CURRENT(ctx, 0);
-
- z2 = CLAMP(z, 0.0F, 1.0F) * (ctx->Viewport.Far - ctx->Viewport.Near)
- + ctx->Viewport.Near;
-
- /* set raster position */
- ctx->Current.RasterPos[0] = x;
- ctx->Current.RasterPos[1] = y;
- ctx->Current.RasterPos[2] = z2;
- ctx->Current.RasterPos[3] = 1.0F;
-
- ctx->Current.RasterPosValid = GL_TRUE;
-
- if (ctx->Fog.FogCoordinateSource == GL_FOG_COORDINATE_EXT)
- ctx->Current.RasterDistance = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
- else
- ctx->Current.RasterDistance = 0.0;
-
- /* raster color = current color or index */
- ctx->Current.RasterColor[0]
- = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0], 0.0F, 1.0F);
- ctx->Current.RasterColor[1]
- = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1], 0.0F, 1.0F);
- ctx->Current.RasterColor[2]
- = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2], 0.0F, 1.0F);
- ctx->Current.RasterColor[3]
- = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3], 0.0F, 1.0F);
- ctx->Current.RasterSecondaryColor[0]
- = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0], 0.0F, 1.0F);
- ctx->Current.RasterSecondaryColor[1]
- = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1], 0.0F, 1.0F);
- ctx->Current.RasterSecondaryColor[2]
- = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2], 0.0F, 1.0F);
- ctx->Current.RasterSecondaryColor[3]
- = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3], 0.0F, 1.0F);
-
- /* raster texcoord = current texcoord */
- {
- GLuint texSet;
- for (texSet = 0; texSet < ctx->Const.MaxTextureCoordUnits; texSet++) {
- assert(texSet < Elements(ctx->Current.RasterTexCoords));
- COPY_4FV( ctx->Current.RasterTexCoords[texSet],
- ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texSet] );
- }
- }
-
- if (ctx->RenderMode==GL_SELECT) {
- _mesa_update_hitflag( ctx, ctx->Current.RasterPos[2] );
- }
-}
-
-
-/* This is just to support the GL_MESA_window_pos version */
-static void
-window_pos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
- GET_CURRENT_CONTEXT(ctx);
- window_pos3f(x, y, z);
- ctx->Current.RasterPos[3] = w;
-}
-
-
-static void GLAPIENTRY
-_mesa_WindowPos2dMESA(GLdouble x, GLdouble y)
-{
- window_pos4f((GLfloat) x, (GLfloat) y, 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos2fMESA(GLfloat x, GLfloat y)
-{
- window_pos4f(x, y, 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos2iMESA(GLint x, GLint y)
-{
- window_pos4f((GLfloat) x, (GLfloat) y, 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos2sMESA(GLshort x, GLshort y)
-{
- window_pos4f(x, y, 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z)
-{
- window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z)
-{
- window_pos4f(x, y, z, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos3iMESA(GLint x, GLint y, GLint z)
-{
- window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos3sMESA(GLshort x, GLshort y, GLshort z)
-{
- window_pos4f(x, y, z, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
- window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
- window_pos4f(x, y, z, w);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos4iMESA(GLint x, GLint y, GLint z, GLint w)
-{
- window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w)
-{
- window_pos4f(x, y, z, w);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos2dvMESA(const GLdouble *v)
-{
- window_pos4f((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos2fvMESA(const GLfloat *v)
-{
- window_pos4f(v[0], v[1], 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos2ivMESA(const GLint *v)
-{
- window_pos4f((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos2svMESA(const GLshort *v)
-{
- window_pos4f(v[0], v[1], 0.0F, 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos3dvMESA(const GLdouble *v)
-{
- window_pos4f((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos3fvMESA(const GLfloat *v)
-{
- window_pos4f(v[0], v[1], v[2], 1.0);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos3ivMESA(const GLint *v)
-{
- window_pos4f((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos3svMESA(const GLshort *v)
-{
- window_pos4f(v[0], v[1], v[2], 1.0F);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos4dvMESA(const GLdouble *v)
-{
- window_pos4f((GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos4fvMESA(const GLfloat *v)
-{
- window_pos4f(v[0], v[1], v[2], v[3]);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos4ivMESA(const GLint *v)
-{
- window_pos4f((GLfloat) v[0], (GLfloat) v[1],
- (GLfloat) v[2], (GLfloat) v[3]);
-}
-
-static void GLAPIENTRY
-_mesa_WindowPos4svMESA(const GLshort *v)
-{
- window_pos4f(v[0], v[1], v[2], v[3]);
-}
-
-
-#if 0
-
-/*
- * OpenGL implementation of glWindowPos*MESA()
- */
-void glWindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
-{
- GLfloat fx, fy;
-
- /* Push current matrix mode and viewport attributes */
- glPushAttrib( GL_TRANSFORM_BIT | GL_VIEWPORT_BIT );
-
- /* Setup projection parameters */
- glMatrixMode( GL_PROJECTION );
- glPushMatrix();
- glLoadIdentity();
- glMatrixMode( GL_MODELVIEW );
- glPushMatrix();
- glLoadIdentity();
-
- glDepthRange( z, z );
- glViewport( (int) x - 1, (int) y - 1, 2, 2 );
-
- /* set the raster (window) position */
- fx = x - (int) x;
- fy = y - (int) y;
- glRasterPos4f( fx, fy, 0.0, w );
-
- /* restore matrices, viewport and matrix mode */
- glPopMatrix();
- glMatrixMode( GL_PROJECTION );
- glPopMatrix();
-
- glPopAttrib();
-}
-
-#endif
-
-
-void
-_mesa_init_rastpos_dispatch(struct _glapi_table *disp)
-{
- SET_RasterPos2f(disp, _mesa_RasterPos2f);
- SET_RasterPos2fv(disp, _mesa_RasterPos2fv);
- SET_RasterPos2i(disp, _mesa_RasterPos2i);
- SET_RasterPos2iv(disp, _mesa_RasterPos2iv);
- SET_RasterPos2d(disp, _mesa_RasterPos2d);
- SET_RasterPos2dv(disp, _mesa_RasterPos2dv);
- SET_RasterPos2s(disp, _mesa_RasterPos2s);
- SET_RasterPos2sv(disp, _mesa_RasterPos2sv);
- SET_RasterPos3d(disp, _mesa_RasterPos3d);
- SET_RasterPos3dv(disp, _mesa_RasterPos3dv);
- SET_RasterPos3f(disp, _mesa_RasterPos3f);
- SET_RasterPos3fv(disp, _mesa_RasterPos3fv);
- SET_RasterPos3i(disp, _mesa_RasterPos3i);
- SET_RasterPos3iv(disp, _mesa_RasterPos3iv);
- SET_RasterPos3s(disp, _mesa_RasterPos3s);
- SET_RasterPos3sv(disp, _mesa_RasterPos3sv);
- SET_RasterPos4d(disp, _mesa_RasterPos4d);
- SET_RasterPos4dv(disp, _mesa_RasterPos4dv);
- SET_RasterPos4f(disp, _mesa_RasterPos4f);
- SET_RasterPos4fv(disp, _mesa_RasterPos4fv);
- SET_RasterPos4i(disp, _mesa_RasterPos4i);
- SET_RasterPos4iv(disp, _mesa_RasterPos4iv);
- SET_RasterPos4s(disp, _mesa_RasterPos4s);
- SET_RasterPos4sv(disp, _mesa_RasterPos4sv);
-
- /* 197. GL_MESA_window_pos */
- SET_WindowPos2dMESA(disp, _mesa_WindowPos2dMESA);
- SET_WindowPos2dvMESA(disp, _mesa_WindowPos2dvMESA);
- SET_WindowPos2fMESA(disp, _mesa_WindowPos2fMESA);
- SET_WindowPos2fvMESA(disp, _mesa_WindowPos2fvMESA);
- SET_WindowPos2iMESA(disp, _mesa_WindowPos2iMESA);
- SET_WindowPos2ivMESA(disp, _mesa_WindowPos2ivMESA);
- SET_WindowPos2sMESA(disp, _mesa_WindowPos2sMESA);
- SET_WindowPos2svMESA(disp, _mesa_WindowPos2svMESA);
- SET_WindowPos3dMESA(disp, _mesa_WindowPos3dMESA);
- SET_WindowPos3dvMESA(disp, _mesa_WindowPos3dvMESA);
- SET_WindowPos3fMESA(disp, _mesa_WindowPos3fMESA);
- SET_WindowPos3fvMESA(disp, _mesa_WindowPos3fvMESA);
- SET_WindowPos3iMESA(disp, _mesa_WindowPos3iMESA);
- SET_WindowPos3ivMESA(disp, _mesa_WindowPos3ivMESA);
- SET_WindowPos3sMESA(disp, _mesa_WindowPos3sMESA);
- SET_WindowPos3svMESA(disp, _mesa_WindowPos3svMESA);
- SET_WindowPos4dMESA(disp, _mesa_WindowPos4dMESA);
- SET_WindowPos4dvMESA(disp, _mesa_WindowPos4dvMESA);
- SET_WindowPos4fMESA(disp, _mesa_WindowPos4fMESA);
- SET_WindowPos4fvMESA(disp, _mesa_WindowPos4fvMESA);
- SET_WindowPos4iMESA(disp, _mesa_WindowPos4iMESA);
- SET_WindowPos4ivMESA(disp, _mesa_WindowPos4ivMESA);
- SET_WindowPos4sMESA(disp, _mesa_WindowPos4sMESA);
- SET_WindowPos4svMESA(disp, _mesa_WindowPos4svMESA);
-}
-
-
-#endif /* FEATURE_rastpos */
-
-
-/**********************************************************************/
-/** \name Initialization */
-/**********************************************************************/
-/*@{*/
-
-/**
- * Initialize the context current raster position information.
- *
- * \param ctx GL context.
- *
- * Initialize the current raster position information in
- * __struct gl_contextRec::Current, and adds the extension entry points to the
- * dispatcher.
- */
-void _mesa_init_rastpos( struct gl_context * ctx )
-{
- int i;
-
- ASSIGN_4V( ctx->Current.RasterPos, 0.0, 0.0, 0.0, 1.0 );
- ctx->Current.RasterDistance = 0.0;
- ASSIGN_4V( ctx->Current.RasterColor, 1.0, 1.0, 1.0, 1.0 );
- ASSIGN_4V( ctx->Current.RasterSecondaryColor, 0.0, 0.0, 0.0, 1.0 );
- for (i = 0; i < Elements(ctx->Current.RasterTexCoords); i++)
- ASSIGN_4V( ctx->Current.RasterTexCoords[i], 0.0, 0.0, 0.0, 1.0 );
- ctx->Current.RasterPosValid = GL_TRUE;
-}
-
-/*@}*/
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.3
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+/**
+ * \file rastpos.c
+ * Raster position operations.
+ */
+
+#include "glheader.h"
+#include "context.h"
+#include "feedback.h"
+#include "macros.h"
+#include "mfeatures.h"
+#include "mtypes.h"
+#include "rastpos.h"
+#include "state.h"
+#include "main/dispatch.h"
+
+
+#if FEATURE_rastpos
+
+
+/**
+ * Helper function for all the RasterPos functions.
+ */
+static void
+rasterpos(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLfloat p[4];
+
+ p[0] = x;
+ p[1] = y;
+ p[2] = z;
+ p[3] = w;
+
+ ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+ FLUSH_CURRENT(ctx, 0);
+
+ if (ctx->NewState)
+ _mesa_update_state( ctx );
+
+ ctx->Driver.RasterPos(ctx, p);
+}
+
+
+static void GLAPIENTRY
+_mesa_RasterPos2d(GLdouble x, GLdouble y)
+{
+ rasterpos((GLfloat)x, (GLfloat)y, (GLfloat)0.0, (GLfloat)1.0);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos2f(GLfloat x, GLfloat y)
+{
+ rasterpos(x, y, 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos2i(GLint x, GLint y)
+{
+ rasterpos((GLfloat) x, (GLfloat) y, 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos2s(GLshort x, GLshort y)
+{
+ rasterpos(x, y, 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos3d(GLdouble x, GLdouble y, GLdouble z)
+{
+ rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos3f(GLfloat x, GLfloat y, GLfloat z)
+{
+ rasterpos(x, y, z, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos3i(GLint x, GLint y, GLint z)
+{
+ rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos3s(GLshort x, GLshort y, GLshort z)
+{
+ rasterpos(x, y, z, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+ rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+ rasterpos(x, y, z, w);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos4i(GLint x, GLint y, GLint z, GLint w)
+{
+ rasterpos((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w)
+{
+ rasterpos(x, y, z, w);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos2dv(const GLdouble *v)
+{
+ rasterpos((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos2fv(const GLfloat *v)
+{
+ rasterpos(v[0], v[1], 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos2iv(const GLint *v)
+{
+ rasterpos((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos2sv(const GLshort *v)
+{
+ rasterpos(v[0], v[1], 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos3dv(const GLdouble *v)
+{
+ rasterpos((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos3fv(const GLfloat *v)
+{
+ rasterpos(v[0], v[1], v[2], 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos3iv(const GLint *v)
+{
+ rasterpos((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos3sv(const GLshort *v)
+{
+ rasterpos(v[0], v[1], v[2], 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos4dv(const GLdouble *v)
+{
+ rasterpos((GLfloat) v[0], (GLfloat) v[1],
+ (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos4fv(const GLfloat *v)
+{
+ rasterpos(v[0], v[1], v[2], v[3]);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos4iv(const GLint *v)
+{
+ rasterpos((GLfloat) v[0], (GLfloat) v[1],
+ (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+_mesa_RasterPos4sv(const GLshort *v)
+{
+ rasterpos(v[0], v[1], v[2], v[3]);
+}
+
+
+/**********************************************************************/
+/*** GL_ARB_window_pos / GL_MESA_window_pos ***/
+/**********************************************************************/
+
+
+/**
+ * All glWindowPosMESA and glWindowPosARB commands call this function to
+ * update the current raster position.
+ */
+static void
+window_pos3f(GLfloat x, GLfloat y, GLfloat z)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLfloat z2;
+
+ ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+ FLUSH_CURRENT(ctx, 0);
+
+ z2 = CLAMP(z, 0.0F, 1.0F) * (ctx->Viewport.Far - ctx->Viewport.Near)
+ + ctx->Viewport.Near;
+
+ /* set raster position */
+ ctx->Current.RasterPos[0] = x;
+ ctx->Current.RasterPos[1] = y;
+ ctx->Current.RasterPos[2] = z2;
+ ctx->Current.RasterPos[3] = 1.0F;
+
+ ctx->Current.RasterPosValid = GL_TRUE;
+
+ if (ctx->Fog.FogCoordinateSource == GL_FOG_COORDINATE_EXT)
+ ctx->Current.RasterDistance = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
+ else
+ ctx->Current.RasterDistance = 0.0;
+
+ /* raster color = current color or index */
+ ctx->Current.RasterColor[0]
+ = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0], 0.0F, 1.0F);
+ ctx->Current.RasterColor[1]
+ = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1], 0.0F, 1.0F);
+ ctx->Current.RasterColor[2]
+ = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2], 0.0F, 1.0F);
+ ctx->Current.RasterColor[3]
+ = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3], 0.0F, 1.0F);
+ ctx->Current.RasterSecondaryColor[0]
+ = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0], 0.0F, 1.0F);
+ ctx->Current.RasterSecondaryColor[1]
+ = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1], 0.0F, 1.0F);
+ ctx->Current.RasterSecondaryColor[2]
+ = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2], 0.0F, 1.0F);
+ ctx->Current.RasterSecondaryColor[3]
+ = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3], 0.0F, 1.0F);
+
+ /* raster texcoord = current texcoord */
+ {
+ GLuint texSet;
+ for (texSet = 0; texSet < ctx->Const.MaxTextureCoordUnits; texSet++) {
+ assert(texSet < Elements(ctx->Current.RasterTexCoords));
+ COPY_4FV( ctx->Current.RasterTexCoords[texSet],
+ ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texSet] );
+ }
+ }
+
+ if (ctx->RenderMode==GL_SELECT) {
+ _mesa_update_hitflag( ctx, ctx->Current.RasterPos[2] );
+ }
+}
+
+
+/* This is just to support the GL_MESA_window_pos version */
+static void
+window_pos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ window_pos3f(x, y, z);
+ ctx->Current.RasterPos[3] = w;
+}
+
+
+static void GLAPIENTRY
+_mesa_WindowPos2dMESA(GLdouble x, GLdouble y)
+{
+ window_pos4f((GLfloat) x, (GLfloat) y, 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos2fMESA(GLfloat x, GLfloat y)
+{
+ window_pos4f(x, y, 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos2iMESA(GLint x, GLint y)
+{
+ window_pos4f((GLfloat) x, (GLfloat) y, 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos2sMESA(GLshort x, GLshort y)
+{
+ window_pos4f(x, y, 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z)
+{
+ window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z)
+{
+ window_pos4f(x, y, z, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos3iMESA(GLint x, GLint y, GLint z)
+{
+ window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos3sMESA(GLshort x, GLshort y, GLshort z)
+{
+ window_pos4f(x, y, z, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+ window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+ window_pos4f(x, y, z, w);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos4iMESA(GLint x, GLint y, GLint z, GLint w)
+{
+ window_pos4f((GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w)
+{
+ window_pos4f(x, y, z, w);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos2dvMESA(const GLdouble *v)
+{
+ window_pos4f((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos2fvMESA(const GLfloat *v)
+{
+ window_pos4f(v[0], v[1], 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos2ivMESA(const GLint *v)
+{
+ window_pos4f((GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos2svMESA(const GLshort *v)
+{
+ window_pos4f(v[0], v[1], 0.0F, 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos3dvMESA(const GLdouble *v)
+{
+ window_pos4f((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos3fvMESA(const GLfloat *v)
+{
+ window_pos4f(v[0], v[1], v[2], 1.0);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos3ivMESA(const GLint *v)
+{
+ window_pos4f((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos3svMESA(const GLshort *v)
+{
+ window_pos4f(v[0], v[1], v[2], 1.0F);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos4dvMESA(const GLdouble *v)
+{
+ window_pos4f((GLfloat) v[0], (GLfloat) v[1],
+ (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos4fvMESA(const GLfloat *v)
+{
+ window_pos4f(v[0], v[1], v[2], v[3]);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos4ivMESA(const GLint *v)
+{
+ window_pos4f((GLfloat) v[0], (GLfloat) v[1],
+ (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void GLAPIENTRY
+_mesa_WindowPos4svMESA(const GLshort *v)
+{
+ window_pos4f(v[0], v[1], v[2], v[3]);
+}
+
+
+#if 0
+
+/*
+ * OpenGL implementation of glWindowPos*MESA()
+ */
+void glWindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+{
+ GLfloat fx, fy;
+
+ /* Push current matrix mode and viewport attributes */
+ glPushAttrib( GL_TRANSFORM_BIT | GL_VIEWPORT_BIT );
+
+ /* Setup projection parameters */
+ glMatrixMode( GL_PROJECTION );
+ glPushMatrix();
+ glLoadIdentity();
+ glMatrixMode( GL_MODELVIEW );
+ glPushMatrix();
+ glLoadIdentity();
+
+ glDepthRange( z, z );
+ glViewport( (int) x - 1, (int) y - 1, 2, 2 );
+
+ /* set the raster (window) position */
+ fx = x - (int) x;
+ fy = y - (int) y;
+ glRasterPos4f( fx, fy, 0.0, w );
+
+ /* restore matrices, viewport and matrix mode */
+ glPopMatrix();
+ glMatrixMode( GL_PROJECTION );
+ glPopMatrix();
+
+ glPopAttrib();
+}
+
+#endif
+
+
+void
+_mesa_init_rastpos_dispatch(struct _glapi_table *disp)
+{
+ SET_RasterPos2f(disp, _mesa_RasterPos2f);
+ SET_RasterPos2fv(disp, _mesa_RasterPos2fv);
+ SET_RasterPos2i(disp, _mesa_RasterPos2i);
+ SET_RasterPos2iv(disp, _mesa_RasterPos2iv);
+ SET_RasterPos2d(disp, _mesa_RasterPos2d);
+ SET_RasterPos2dv(disp, _mesa_RasterPos2dv);
+ SET_RasterPos2s(disp, _mesa_RasterPos2s);
+ SET_RasterPos2sv(disp, _mesa_RasterPos2sv);
+ SET_RasterPos3d(disp, _mesa_RasterPos3d);
+ SET_RasterPos3dv(disp, _mesa_RasterPos3dv);
+ SET_RasterPos3f(disp, _mesa_RasterPos3f);
+ SET_RasterPos3fv(disp, _mesa_RasterPos3fv);
+ SET_RasterPos3i(disp, _mesa_RasterPos3i);
+ SET_RasterPos3iv(disp, _mesa_RasterPos3iv);
+ SET_RasterPos3s(disp, _mesa_RasterPos3s);
+ SET_RasterPos3sv(disp, _mesa_RasterPos3sv);
+ SET_RasterPos4d(disp, _mesa_RasterPos4d);
+ SET_RasterPos4dv(disp, _mesa_RasterPos4dv);
+ SET_RasterPos4f(disp, _mesa_RasterPos4f);
+ SET_RasterPos4fv(disp, _mesa_RasterPos4fv);
+ SET_RasterPos4i(disp, _mesa_RasterPos4i);
+ SET_RasterPos4iv(disp, _mesa_RasterPos4iv);
+ SET_RasterPos4s(disp, _mesa_RasterPos4s);
+ SET_RasterPos4sv(disp, _mesa_RasterPos4sv);
+
+ /* 197. GL_MESA_window_pos */
+ SET_WindowPos2dMESA(disp, _mesa_WindowPos2dMESA);
+ SET_WindowPos2dvMESA(disp, _mesa_WindowPos2dvMESA);
+ SET_WindowPos2fMESA(disp, _mesa_WindowPos2fMESA);
+ SET_WindowPos2fvMESA(disp, _mesa_WindowPos2fvMESA);
+ SET_WindowPos2iMESA(disp, _mesa_WindowPos2iMESA);
+ SET_WindowPos2ivMESA(disp, _mesa_WindowPos2ivMESA);
+ SET_WindowPos2sMESA(disp, _mesa_WindowPos2sMESA);
+ SET_WindowPos2svMESA(disp, _mesa_WindowPos2svMESA);
+ SET_WindowPos3dMESA(disp, _mesa_WindowPos3dMESA);
+ SET_WindowPos3dvMESA(disp, _mesa_WindowPos3dvMESA);
+ SET_WindowPos3fMESA(disp, _mesa_WindowPos3fMESA);
+ SET_WindowPos3fvMESA(disp, _mesa_WindowPos3fvMESA);
+ SET_WindowPos3iMESA(disp, _mesa_WindowPos3iMESA);
+ SET_WindowPos3ivMESA(disp, _mesa_WindowPos3ivMESA);
+ SET_WindowPos3sMESA(disp, _mesa_WindowPos3sMESA);
+ SET_WindowPos3svMESA(disp, _mesa_WindowPos3svMESA);
+ SET_WindowPos4dMESA(disp, _mesa_WindowPos4dMESA);
+ SET_WindowPos4dvMESA(disp, _mesa_WindowPos4dvMESA);
+ SET_WindowPos4fMESA(disp, _mesa_WindowPos4fMESA);
+ SET_WindowPos4fvMESA(disp, _mesa_WindowPos4fvMESA);
+ SET_WindowPos4iMESA(disp, _mesa_WindowPos4iMESA);
+ SET_WindowPos4ivMESA(disp, _mesa_WindowPos4ivMESA);
+ SET_WindowPos4sMESA(disp, _mesa_WindowPos4sMESA);
+ SET_WindowPos4svMESA(disp, _mesa_WindowPos4svMESA);
+}
+
+
+#endif /* FEATURE_rastpos */
+
+
+/**********************************************************************/
+/** \name Initialization */
+/**********************************************************************/
+/*@{*/
+
+/**
+ * Initialize the context current raster position information.
+ *
+ * \param ctx GL context.
+ *
+ * Initialize the current raster position information in
+ * __struct gl_contextRec::Current, and adds the extension entry points to the
+ * dispatcher.
+ */
+void _mesa_init_rastpos( struct gl_context * ctx )
+{
+ int i;
+
+ ASSIGN_4V( ctx->Current.RasterPos, 0.0, 0.0, 0.0, 1.0 );
+ ctx->Current.RasterDistance = 0.0;
+ ASSIGN_4V( ctx->Current.RasterColor, 1.0, 1.0, 1.0, 1.0 );
+ ASSIGN_4V( ctx->Current.RasterSecondaryColor, 0.0, 0.0, 0.0, 1.0 );
+ for (i = 0; i < Elements(ctx->Current.RasterTexCoords); i++)
+ ASSIGN_4V( ctx->Current.RasterTexCoords[i], 0.0, 0.0, 0.0, 1.0 );
+ ctx->Current.RasterPosValid = GL_TRUE;
+}
+
+/*@}*/
diff --git a/mesalib/src/mesa/main/remap.c b/mesalib/src/mesa/main/remap.c
index 6da31deb3..c89fba453 100644
--- a/mesalib/src/mesa/main/remap.c
+++ b/mesalib/src/mesa/main/remap.c
@@ -1,226 +1,226 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.7
- *
- * Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-
-/**
- * \file remap.c
- * Remap table management.
- *
- * Entries in the dispatch table are either static or dynamic. The
- * dispatch table is shared by mesa core and glapi. When they are
- * built separately, it is possible that a static entry in mesa core
- * is dynamic, or assigned a different static offset, in glapi. The
- * remap table is in charge of mapping a static entry in mesa core to
- * a dynamic entry, or the corresponding static entry, in glapi.
- */
-
-#include "mfeatures.h"
-
-#if FEATURE_remap_table
-
-#include "remap.h"
-#include "imports.h"
-#include "glapi/glapi.h"
-
-#define MAX_ENTRY_POINTS 16
-
-#define need_MESA_remap_table
-#include "main/remap_helper.h"
-
-
-/* this is global for quick access */
-int driDispatchRemapTable[driDispatchRemapTable_size];
-
-
-/**
- * Return the spec string associated with the given function index.
- * The index is available from including remap_helper.h.
- *
- * \param func_index an opaque function index.
- *
- * \return the spec string associated with the function index, or NULL.
- */
-const char *
-_mesa_get_function_spec(GLint func_index)
-{
- if (func_index < Elements(_mesa_function_pool))
- return _mesa_function_pool + func_index;
- else
- return NULL;
-}
-
-
-/**
- * Map a function by its spec. The function will be added to glapi,
- * and the dispatch offset will be returned.
- *
- * \param spec a '\0'-separated string array specifying a function.
- * It begins with the parameter signature of the function,
- * followed by the names of the entry points. An empty entry
- * point name terminates the array.
- *
- * \return the offset of the (re-)mapped function in the dispatch
- * table, or -1.
- */
-GLint
-_mesa_map_function_spec(const char *spec)
-{
- const char *signature;
- const char *names[MAX_ENTRY_POINTS + 1];
- GLint num_names = 0;
-
- if (!spec)
- return -1;
-
- signature = spec;
- spec += strlen(spec) + 1;
-
- /* spec is terminated by an empty string */
- while (*spec) {
- names[num_names] = spec;
- num_names++;
- if (num_names >= MAX_ENTRY_POINTS)
- break;
- spec += strlen(spec) + 1;
- }
- if (!num_names)
- return -1;
-
- names[num_names] = NULL;
-
- /* add the entry points to the dispatch table */
- return _glapi_add_dispatch(names, signature);
-}
-
-
-/**
- * Map an array of functions. This is a convenient function for
- * use with arrays available from including remap_helper.h.
- *
- * Note that the dispatch offsets of the functions are not returned.
- * If they are needed, _mesa_map_function_spec() should be used.
- *
- * \param func_array an array of function remaps.
- */
-void
-_mesa_map_function_array(const struct gl_function_remap *func_array)
-{
- GLint i;
-
- if (!func_array)
- return;
-
- for (i = 0; func_array[i].func_index != -1; i++) {
- const char *spec;
- GLint offset;
-
- spec = _mesa_get_function_spec(func_array[i].func_index);
- if (!spec) {
- _mesa_problem(NULL, "invalid function index %d",
- func_array[i].func_index);
- continue;
- }
-
- offset = _mesa_map_function_spec(spec);
- /* error checks */
- if (offset < 0) {
- const char *name = spec + strlen(spec) + 1;
- _mesa_warning(NULL, "failed to remap %s", name);
- }
- else if (func_array[i].dispatch_offset >= 0 &&
- offset != func_array[i].dispatch_offset) {
- const char *name = spec + strlen(spec) + 1;
- _mesa_problem(NULL, "%s should be mapped to %d, not %d",
- name, func_array[i].dispatch_offset, offset);
- }
- }
-}
-
-
-/**
- * Map the functions which are already static.
- *
- * When a extension function are incorporated into the ABI, the
- * extension suffix is usually stripped. Mapping such functions
- * makes sure the alternative names are available.
- *
- * Note that functions mapped by _mesa_init_remap_table() are
- * excluded.
- */
-void
-_mesa_map_static_functions(void)
-{
- /* Remap static functions which have alternative names and are in the ABI.
- * This is to be on the safe side. glapi should have defined those names.
- */
- _mesa_map_function_array(MESA_alt_functions);
-}
-
-
-/**
- * Initialize the remap table. This is called in one_time_init().
- * The remap table needs to be initialized before calling the
- * CALL/GET/SET macros defined in main/dispatch.h.
- */
-static void
-_mesa_do_init_remap_table(const char *pool,
- int size,
- const struct gl_function_pool_remap *remap)
-{
- static GLboolean initialized = GL_FALSE;
- GLint i;
-
- if (initialized)
- return;
- initialized = GL_TRUE;
-
- /* initialize the remap table */
- for (i = 0; i < size; i++) {
- GLint offset;
- const char *spec;
-
- /* sanity check */
- ASSERT(i == remap[i].remap_index);
- spec = _mesa_function_pool + remap[i].pool_index;
-
- offset = _mesa_map_function_spec(spec);
- /* store the dispatch offset in the remap table */
- driDispatchRemapTable[i] = offset;
- if (offset < 0)
- _mesa_warning(NULL, "failed to remap index %d", i);
- }
-}
-
-
-void
-_mesa_init_remap_table(void)
-{
- _mesa_do_init_remap_table(_mesa_function_pool,
- driDispatchRemapTable_size,
- MESA_remap_table_functions);
-}
-
-
-#endif /* FEATURE_remap_table */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.7
+ *
+ * Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+
+/**
+ * \file remap.c
+ * Remap table management.
+ *
+ * Entries in the dispatch table are either static or dynamic. The
+ * dispatch table is shared by mesa core and glapi. When they are
+ * built separately, it is possible that a static entry in mesa core
+ * is dynamic, or assigned a different static offset, in glapi. The
+ * remap table is in charge of mapping a static entry in mesa core to
+ * a dynamic entry, or the corresponding static entry, in glapi.
+ */
+
+#include "mfeatures.h"
+
+#if FEATURE_remap_table
+
+#include "remap.h"
+#include "imports.h"
+#include "glapi/glapi.h"
+
+#define MAX_ENTRY_POINTS 16
+
+#define need_MESA_remap_table
+#include "main/remap_helper.h"
+
+
+/* this is global for quick access */
+int driDispatchRemapTable[driDispatchRemapTable_size];
+
+
+/**
+ * Return the spec string associated with the given function index.
+ * The index is available from including remap_helper.h.
+ *
+ * \param func_index an opaque function index.
+ *
+ * \return the spec string associated with the function index, or NULL.
+ */
+const char *
+_mesa_get_function_spec(GLint func_index)
+{
+ if (func_index < Elements(_mesa_function_pool))
+ return _mesa_function_pool + func_index;
+ else
+ return NULL;
+}
+
+
+/**
+ * Map a function by its spec. The function will be added to glapi,
+ * and the dispatch offset will be returned.
+ *
+ * \param spec a '\0'-separated string array specifying a function.
+ * It begins with the parameter signature of the function,
+ * followed by the names of the entry points. An empty entry
+ * point name terminates the array.
+ *
+ * \return the offset of the (re-)mapped function in the dispatch
+ * table, or -1.
+ */
+GLint
+_mesa_map_function_spec(const char *spec)
+{
+ const char *signature;
+ const char *names[MAX_ENTRY_POINTS + 1];
+ GLint num_names = 0;
+
+ if (!spec)
+ return -1;
+
+ signature = spec;
+ spec += strlen(spec) + 1;
+
+ /* spec is terminated by an empty string */
+ while (*spec) {
+ names[num_names] = spec;
+ num_names++;
+ if (num_names >= MAX_ENTRY_POINTS)
+ break;
+ spec += strlen(spec) + 1;
+ }
+ if (!num_names)
+ return -1;
+
+ names[num_names] = NULL;
+
+ /* add the entry points to the dispatch table */
+ return _glapi_add_dispatch(names, signature);
+}
+
+
+/**
+ * Map an array of functions. This is a convenient function for
+ * use with arrays available from including remap_helper.h.
+ *
+ * Note that the dispatch offsets of the functions are not returned.
+ * If they are needed, _mesa_map_function_spec() should be used.
+ *
+ * \param func_array an array of function remaps.
+ */
+void
+_mesa_map_function_array(const struct gl_function_remap *func_array)
+{
+ GLint i;
+
+ if (!func_array)
+ return;
+
+ for (i = 0; func_array[i].func_index != -1; i++) {
+ const char *spec;
+ GLint offset;
+
+ spec = _mesa_get_function_spec(func_array[i].func_index);
+ if (!spec) {
+ _mesa_problem(NULL, "invalid function index %d",
+ func_array[i].func_index);
+ continue;
+ }
+
+ offset = _mesa_map_function_spec(spec);
+ /* error checks */
+ if (offset < 0) {
+ const char *name = spec + strlen(spec) + 1;
+ _mesa_warning(NULL, "failed to remap %s", name);
+ }
+ else if (func_array[i].dispatch_offset >= 0 &&
+ offset != func_array[i].dispatch_offset) {
+ const char *name = spec + strlen(spec) + 1;
+ _mesa_problem(NULL, "%s should be mapped to %d, not %d",
+ name, func_array[i].dispatch_offset, offset);
+ }
+ }
+}
+
+
+/**
+ * Map the functions which are already static.
+ *
+ * When a extension function are incorporated into the ABI, the
+ * extension suffix is usually stripped. Mapping such functions
+ * makes sure the alternative names are available.
+ *
+ * Note that functions mapped by _mesa_init_remap_table() are
+ * excluded.
+ */
+void
+_mesa_map_static_functions(void)
+{
+ /* Remap static functions which have alternative names and are in the ABI.
+ * This is to be on the safe side. glapi should have defined those names.
+ */
+ _mesa_map_function_array(MESA_alt_functions);
+}
+
+
+/**
+ * Initialize the remap table. This is called in one_time_init().
+ * The remap table needs to be initialized before calling the
+ * CALL/GET/SET macros defined in main/dispatch.h.
+ */
+static void
+_mesa_do_init_remap_table(const char *pool,
+ int size,
+ const struct gl_function_pool_remap *remap)
+{
+ static GLboolean initialized = GL_FALSE;
+ GLint i;
+
+ if (initialized)
+ return;
+ initialized = GL_TRUE;
+
+ /* initialize the remap table */
+ for (i = 0; i < size; i++) {
+ GLint offset;
+ const char *spec;
+
+ /* sanity check */
+ ASSERT(i == remap[i].remap_index);
+ spec = _mesa_function_pool + remap[i].pool_index;
+
+ offset = _mesa_map_function_spec(spec);
+ /* store the dispatch offset in the remap table */
+ driDispatchRemapTable[i] = offset;
+ if (offset < 0)
+ _mesa_warning(NULL, "failed to remap index %d", i);
+ }
+}
+
+
+void
+_mesa_init_remap_table(void)
+{
+ _mesa_do_init_remap_table(_mesa_function_pool,
+ driDispatchRemapTable_size,
+ MESA_remap_table_functions);
+}
+
+
+#endif /* FEATURE_remap_table */
diff --git a/mesalib/src/mesa/main/scissor.c b/mesalib/src/mesa/main/scissor.c
index 16e8438c5..df665994a 100644
--- a/mesalib/src/mesa/main/scissor.c
+++ b/mesalib/src/mesa/main/scissor.c
@@ -1,100 +1,100 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/mtypes.h"
-#include "main/scissor.h"
-
-
-/**
- * Called via glScissor
- */
-void GLAPIENTRY
-_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height )
-{
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (MESA_VERBOSE & VERBOSE_API)
- _mesa_debug(ctx, "glScissor %d %d %d %d\n", x, y, width, height);
-
- if (width < 0 || height < 0) {
- _mesa_error( ctx, GL_INVALID_VALUE, "glScissor" );
- return;
- }
-
- _mesa_set_scissor(ctx, x, y, width, height);
-}
-
-
-/**
- * Define the scissor box.
- *
- * \param x, y coordinates of the scissor box lower-left corner.
- * \param width width of the scissor box.
- * \param height height of the scissor box.
- *
- * \sa glScissor().
- *
- * Verifies the parameters and updates __struct gl_contextRec::Scissor. On a
- * change flushes the vertices and notifies the driver via
- * the dd_function_table::Scissor callback.
- */
-void
-_mesa_set_scissor(struct gl_context *ctx,
- GLint x, GLint y, GLsizei width, GLsizei height)
-{
- if (x == ctx->Scissor.X &&
- y == ctx->Scissor.Y &&
- width == ctx->Scissor.Width &&
- height == ctx->Scissor.Height)
- return;
-
- FLUSH_VERTICES(ctx, _NEW_SCISSOR);
- ctx->Scissor.X = x;
- ctx->Scissor.Y = y;
- ctx->Scissor.Width = width;
- ctx->Scissor.Height = height;
-
- if (ctx->Driver.Scissor)
- ctx->Driver.Scissor( ctx, x, y, width, height );
-}
-
-
-/**
- * Initialize the context's scissor state.
- * \param ctx the GL context.
- */
-void
-_mesa_init_scissor(struct gl_context *ctx)
-{
- /* Scissor group */
- ctx->Scissor.Enabled = GL_FALSE;
- ctx->Scissor.X = 0;
- ctx->Scissor.Y = 0;
- ctx->Scissor.Width = 0;
- ctx->Scissor.Height = 0;
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/mtypes.h"
+#include "main/scissor.h"
+
+
+/**
+ * Called via glScissor
+ */
+void GLAPIENTRY
+_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (MESA_VERBOSE & VERBOSE_API)
+ _mesa_debug(ctx, "glScissor %d %d %d %d\n", x, y, width, height);
+
+ if (width < 0 || height < 0) {
+ _mesa_error( ctx, GL_INVALID_VALUE, "glScissor" );
+ return;
+ }
+
+ _mesa_set_scissor(ctx, x, y, width, height);
+}
+
+
+/**
+ * Define the scissor box.
+ *
+ * \param x, y coordinates of the scissor box lower-left corner.
+ * \param width width of the scissor box.
+ * \param height height of the scissor box.
+ *
+ * \sa glScissor().
+ *
+ * Verifies the parameters and updates __struct gl_contextRec::Scissor. On a
+ * change flushes the vertices and notifies the driver via
+ * the dd_function_table::Scissor callback.
+ */
+void
+_mesa_set_scissor(struct gl_context *ctx,
+ GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ if (x == ctx->Scissor.X &&
+ y == ctx->Scissor.Y &&
+ width == ctx->Scissor.Width &&
+ height == ctx->Scissor.Height)
+ return;
+
+ FLUSH_VERTICES(ctx, _NEW_SCISSOR);
+ ctx->Scissor.X = x;
+ ctx->Scissor.Y = y;
+ ctx->Scissor.Width = width;
+ ctx->Scissor.Height = height;
+
+ if (ctx->Driver.Scissor)
+ ctx->Driver.Scissor( ctx, x, y, width, height );
+}
+
+
+/**
+ * Initialize the context's scissor state.
+ * \param ctx the GL context.
+ */
+void
+_mesa_init_scissor(struct gl_context *ctx)
+{
+ /* Scissor group */
+ ctx->Scissor.Enabled = GL_FALSE;
+ ctx->Scissor.X = 0;
+ ctx->Scissor.Y = 0;
+ ctx->Scissor.Width = 0;
+ ctx->Scissor.Height = 0;
+}
diff --git a/mesalib/src/mesa/main/scissor.h b/mesalib/src/mesa/main/scissor.h
index 8735ec0cd..da9385e2b 100644
--- a/mesalib/src/mesa/main/scissor.h
+++ b/mesalib/src/mesa/main/scissor.h
@@ -1,47 +1,47 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef SCISSOR_H
-#define SCISSOR_H
-
-
-#include "glheader.h"
-
-struct gl_context;
-
-extern void GLAPIENTRY
-_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height );
-
-
-extern void
-_mesa_set_scissor(struct gl_context *ctx,
- GLint x, GLint y, GLsizei width, GLsizei height);
-
-
-extern void
-_mesa_init_scissor(struct gl_context *ctx);
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef SCISSOR_H
+#define SCISSOR_H
+
+
+#include "glheader.h"
+
+struct gl_context;
+
+extern void GLAPIENTRY
+_mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height );
+
+
+extern void
+_mesa_set_scissor(struct gl_context *ctx,
+ GLint x, GLint y, GLsizei width, GLsizei height);
+
+
+extern void
+_mesa_init_scissor(struct gl_context *ctx);
+
+
+#endif
diff --git a/mesalib/src/mesa/main/stencil.h b/mesalib/src/mesa/main/stencil.h
index f3a33db70..b772bfd6e 100644
--- a/mesalib/src/mesa/main/stencil.h
+++ b/mesalib/src/mesa/main/stencil.h
@@ -1,81 +1,81 @@
-/**
- * \file stencil.h
- * Stencil operations.
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef STENCIL_H
-#define STENCIL_H
-
-
-#include "glheader.h"
-
-struct gl_context;
-
-extern void GLAPIENTRY
-_mesa_ClearStencil( GLint s );
-
-
-extern void GLAPIENTRY
-_mesa_StencilFunc( GLenum func, GLint ref, GLuint mask );
-
-
-extern void GLAPIENTRY
-_mesa_StencilMask( GLuint mask );
-
-
-extern void GLAPIENTRY
-_mesa_StencilOp( GLenum fail, GLenum zfail, GLenum zpass );
-
-
-extern void GLAPIENTRY
-_mesa_ActiveStencilFaceEXT(GLenum face);
-
-
-extern void GLAPIENTRY
-_mesa_StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
-
-
-extern void GLAPIENTRY
-_mesa_StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
-
-
-extern void GLAPIENTRY
-_mesa_StencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-
-extern void GLAPIENTRY
-_mesa_StencilMaskSeparate(GLenum face, GLuint mask);
-
-
-extern void
-_mesa_update_stencil(struct gl_context *ctx);
-
-
-extern void
-_mesa_init_stencil( struct gl_context * ctx );
-
-#endif
+/**
+ * \file stencil.h
+ * Stencil operations.
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef STENCIL_H
+#define STENCIL_H
+
+
+#include "glheader.h"
+
+struct gl_context;
+
+extern void GLAPIENTRY
+_mesa_ClearStencil( GLint s );
+
+
+extern void GLAPIENTRY
+_mesa_StencilFunc( GLenum func, GLint ref, GLuint mask );
+
+
+extern void GLAPIENTRY
+_mesa_StencilMask( GLuint mask );
+
+
+extern void GLAPIENTRY
+_mesa_StencilOp( GLenum fail, GLenum zfail, GLenum zpass );
+
+
+extern void GLAPIENTRY
+_mesa_ActiveStencilFaceEXT(GLenum face);
+
+
+extern void GLAPIENTRY
+_mesa_StencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
+
+
+extern void GLAPIENTRY
+_mesa_StencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
+
+
+extern void GLAPIENTRY
+_mesa_StencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+
+extern void GLAPIENTRY
+_mesa_StencilMaskSeparate(GLenum face, GLuint mask);
+
+
+extern void
+_mesa_update_stencil(struct gl_context *ctx);
+
+
+extern void
+_mesa_init_stencil( struct gl_context * ctx );
+
+#endif
diff --git a/mesalib/src/mesa/main/syncobj.c b/mesalib/src/mesa/main/syncobj.c
index 25307a17c..85dd41aac 100644
--- a/mesalib/src/mesa/main/syncobj.c
+++ b/mesalib/src/mesa/main/syncobj.c
@@ -1,426 +1,426 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-/**
- * \file syncobj.c
- * Sync object management.
- *
- * Unlike textures and other objects that are shared between contexts, sync
- * objects are not bound to the context. As a result, the reference counting
- * and delete behavior of sync objects is slightly different. References to
- * sync objects are added:
- *
- * - By \c glFencSynce. This sets the initial reference count to 1.
- * - At the start of \c glClientWaitSync. The reference is held for the
- * duration of the wait call.
- *
- * References are removed:
- *
- * - By \c glDeleteSync.
- * - At the end of \c glClientWaitSync.
- *
- * Additionally, drivers may call \c _mesa_ref_sync_object and
- * \c _mesa_unref_sync_object as needed to implement \c ServerWaitSync.
- *
- * As with shader objects, sync object names become invalid as soon as
- * \c glDeleteSync is called. For this reason \c glDeleteSync sets the
- * \c DeletePending flag. All functions validate object handles by testing
- * this flag.
- *
- * \note
- * Only \c GL_ARB_sync objects are shared between contexts. If support is ever
- * added for either \c GL_NV_fence or \c GL_APPLE_fence different semantics
- * will need to be implemented.
- *
- * \author Ian Romanick <ian.d.romanick@intel.com>
- */
-
-#include "glheader.h"
-#include "imports.h"
-#include "context.h"
-#include "macros.h"
-#include "mfeatures.h"
-#include "get.h"
-#include "dispatch.h"
-#include "mtypes.h"
-
-#if FEATURE_ARB_sync
-#include "syncobj.h"
-
-static struct gl_sync_object *
-_mesa_new_sync_object(struct gl_context *ctx, GLenum type)
-{
- struct gl_sync_object *s = MALLOC_STRUCT(gl_sync_object);
- (void) ctx;
- (void) type;
-
- return s;
-}
-
-
-static void
-_mesa_delete_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
-{
- (void) ctx;
- free(syncObj);
-}
-
-
-static void
-_mesa_fence_sync(struct gl_context *ctx, struct gl_sync_object *syncObj,
- GLenum condition, GLbitfield flags)
-{
- (void) ctx;
- (void) condition;
- (void) flags;
-
- syncObj->StatusFlag = 1;
-}
-
-
-static void
-_mesa_check_sync(struct gl_context *ctx, struct gl_sync_object *syncObj)
-{
- (void) ctx;
- (void) syncObj;
-
- /* No-op for software rendering. Hardware drivers will need to determine
- * whether the state of the sync object has changed.
- */
-}
-
-
-static void
-_mesa_wait_sync(struct gl_context *ctx, struct gl_sync_object *syncObj,
- GLbitfield flags, GLuint64 timeout)
-{
- (void) ctx;
- (void) syncObj;
- (void) flags;
- (void) timeout;
-
- /* No-op for software rendering. Hardware drivers will need to wait until
- * the state of the sync object changes or the timeout expires.
- */
-}
-
-
-void GLAPIENTRY
-_mesa_init_sync_object_functions(struct dd_function_table *driver)
-{
- driver->NewSyncObject = _mesa_new_sync_object;
- driver->FenceSync = _mesa_fence_sync;
- driver->DeleteSyncObject = _mesa_delete_sync_object;
- driver->CheckSync = _mesa_check_sync;
-
- /* Use the same no-op wait function for both.
- */
- driver->ClientWaitSync = _mesa_wait_sync;
- driver->ServerWaitSync = _mesa_wait_sync;
-}
-
-
-void GLAPIENTRY
-_mesa_init_sync_dispatch(struct _glapi_table *disp)
-{
- SET_IsSync(disp, _mesa_IsSync);
- SET_DeleteSync(disp, _mesa_DeleteSync);
- SET_FenceSync(disp, _mesa_FenceSync);
- SET_ClientWaitSync(disp, _mesa_ClientWaitSync);
- SET_WaitSync(disp, _mesa_WaitSync);
- SET_GetInteger64v(disp, _mesa_GetInteger64v);
- SET_GetSynciv(disp, _mesa_GetSynciv);
-}
-
-
-/**
- * Allocate/init the context state related to sync objects.
- */
-void GLAPIENTRY
-_mesa_init_sync(struct gl_context *ctx)
-{
- (void) ctx;
-}
-
-
-/**
- * Free the context state related to sync objects.
- */
-void GLAPIENTRY
-_mesa_free_sync_data(struct gl_context *ctx)
-{
- (void) ctx;
-}
-
-
-static int
-_mesa_validate_sync(struct gl_sync_object *syncObj)
-{
- return (syncObj != NULL)
- && (syncObj->Type == GL_SYNC_FENCE)
- && !syncObj->DeletePending;
-}
-
-
-void GLAPIENTRY
-_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
-{
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
- syncObj->RefCount++;
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
-}
-
-
-void GLAPIENTRY
-_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
-{
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
- syncObj->RefCount--;
- if (syncObj->RefCount == 0) {
- remove_from_list(& syncObj->link);
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
-
- ctx->Driver.DeleteSyncObject(ctx, syncObj);
- } else {
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
- }
-}
-
-
-GLboolean GLAPIENTRY
-_mesa_IsSync(GLsync sync)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct gl_sync_object *const syncObj = (struct gl_sync_object *) sync;
- ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
-
- return _mesa_validate_sync(syncObj) ? GL_TRUE : GL_FALSE;
-}
-
-
-void GLAPIENTRY
-_mesa_DeleteSync(GLsync sync)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct gl_sync_object *const syncObj = (struct gl_sync_object *) sync;
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- /* From the GL_ARB_sync spec:
- *
- * DeleteSync will silently ignore a <sync> value of zero. An
- * INVALID_VALUE error is generated if <sync> is neither zero nor the
- * name of a sync object.
- */
- if (sync == 0) {
- return;
- }
-
- if (!_mesa_validate_sync(syncObj)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glDeleteSync");
- return;
- }
-
- /* If there are no client-waits or server-waits pending on this sync, delete
- * the underlying object.
- */
- syncObj->DeletePending = GL_TRUE;
- _mesa_unref_sync_object(ctx, syncObj);
-}
-
-
-GLsync GLAPIENTRY
-_mesa_FenceSync(GLenum condition, GLbitfield flags)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct gl_sync_object *syncObj;
- ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0);
-
- if (condition != GL_SYNC_GPU_COMMANDS_COMPLETE) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glFenceSync(condition=0x%x)",
- condition);
- return 0;
- }
-
- if (flags != 0) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glFenceSync(flags=0x%x)",
- condition);
- return 0;
- }
-
- syncObj = ctx->Driver.NewSyncObject(ctx, GL_SYNC_FENCE);
- if (syncObj != NULL) {
- syncObj->Type = GL_SYNC_FENCE;
- /* The name is not currently used, and it is never visible to
- * applications. If sync support is extended to provide support for
- * NV_fence, this field will be used. We'll also need to add an object
- * ID hashtable.
- */
- syncObj->Name = 1;
- syncObj->RefCount = 1;
- syncObj->DeletePending = GL_FALSE;
- syncObj->SyncCondition = condition;
- syncObj->Flags = flags;
- syncObj->StatusFlag = 0;
-
- ctx->Driver.FenceSync(ctx, syncObj, condition, flags);
-
- _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
- insert_at_tail(& ctx->Shared->SyncObjects, & syncObj->link);
- _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
-
- return (GLsync) syncObj;
- }
-
- return NULL;
-}
-
-
-GLenum GLAPIENTRY
-_mesa_ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct gl_sync_object *const syncObj = (struct gl_sync_object *) sync;
- GLenum ret;
- ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_WAIT_FAILED);
-
- if (!_mesa_validate_sync(syncObj)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glClientWaitSync");
- return GL_WAIT_FAILED;
- }
-
- if ((flags & ~GL_SYNC_FLUSH_COMMANDS_BIT) != 0) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glClientWaitSync(flags=0x%x)", flags);
- return GL_WAIT_FAILED;
- }
-
- _mesa_ref_sync_object(ctx, syncObj);
-
- /* From the GL_ARB_sync spec:
- *
- * ClientWaitSync returns one of four status values. A return value of
- * ALREADY_SIGNALED indicates that <sync> was signaled at the time
- * ClientWaitSync was called. ALREADY_SIGNALED will always be returned
- * if <sync> was signaled, even if the value of <timeout> is zero.
- */
- ctx->Driver.CheckSync(ctx, syncObj);
- if (syncObj->StatusFlag) {
- ret = GL_ALREADY_SIGNALED;
- } else {
- ctx->Driver.ClientWaitSync(ctx, syncObj, flags, timeout);
-
- ret = syncObj->StatusFlag ? GL_CONDITION_SATISFIED : GL_TIMEOUT_EXPIRED;
- }
-
- _mesa_unref_sync_object(ctx, syncObj);
- return ret;
-}
-
-
-void GLAPIENTRY
-_mesa_WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct gl_sync_object *const syncObj = (struct gl_sync_object *) sync;
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (!_mesa_validate_sync(syncObj)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glWaitSync");
- return;
- }
-
- if (flags != 0) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glWaitSync(flags=0x%x)", flags);
- return;
- }
-
- /* From the GL_ARB_sync spec:
- *
- * If the value of <timeout> is zero, then WaitSync does nothing.
- */
- if (timeout == 0) {
- return;
- }
-
- ctx->Driver.ServerWaitSync(ctx, syncObj, flags, timeout);
-}
-
-
-void GLAPIENTRY
-_mesa_GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length,
- GLint *values)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct gl_sync_object *const syncObj = (struct gl_sync_object *) sync;
- GLsizei size = 0;
- GLint v[1];
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (!_mesa_validate_sync(syncObj)) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glGetSynciv");
- return;
- }
-
- switch (pname) {
- case GL_OBJECT_TYPE:
- v[0] = syncObj->Type;
- size = 1;
- break;
-
- case GL_SYNC_CONDITION:
- v[0] = syncObj->SyncCondition;
- size = 1;
- break;
-
- case GL_SYNC_STATUS:
- /* Update the state of the sync by dipping into the driver. Note that
- * this call won't block. It just updates state in the common object
- * data from the current driver state.
- */
- ctx->Driver.CheckSync(ctx, syncObj);
-
- v[0] = (syncObj->StatusFlag) ? GL_SIGNALED : GL_UNSIGNALED;
- size = 1;
- break;
-
- case GL_SYNC_FLAGS:
- v[0] = syncObj->Flags;
- size = 1;
- break;
-
- default:
- _mesa_error(ctx, GL_INVALID_ENUM, "glGetSynciv(pname=0x%x)\n", pname);
- return;
- }
-
- if (size > 0) {
- const GLsizei copy_count = MIN2(size, bufSize);
-
- memcpy(values, v, sizeof(GLint) * copy_count);
- }
-
- if (length != NULL) {
- *length = size;
- }
-}
-
-#endif /* FEATURE_ARB_sync */
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+/**
+ * \file syncobj.c
+ * Sync object management.
+ *
+ * Unlike textures and other objects that are shared between contexts, sync
+ * objects are not bound to the context. As a result, the reference counting
+ * and delete behavior of sync objects is slightly different. References to
+ * sync objects are added:
+ *
+ * - By \c glFencSynce. This sets the initial reference count to 1.
+ * - At the start of \c glClientWaitSync. The reference is held for the
+ * duration of the wait call.
+ *
+ * References are removed:
+ *
+ * - By \c glDeleteSync.
+ * - At the end of \c glClientWaitSync.
+ *
+ * Additionally, drivers may call \c _mesa_ref_sync_object and
+ * \c _mesa_unref_sync_object as needed to implement \c ServerWaitSync.
+ *
+ * As with shader objects, sync object names become invalid as soon as
+ * \c glDeleteSync is called. For this reason \c glDeleteSync sets the
+ * \c DeletePending flag. All functions validate object handles by testing
+ * this flag.
+ *
+ * \note
+ * Only \c GL_ARB_sync objects are shared between contexts. If support is ever
+ * added for either \c GL_NV_fence or \c GL_APPLE_fence different semantics
+ * will need to be implemented.
+ *
+ * \author Ian Romanick <ian.d.romanick@intel.com>
+ */
+
+#include "glheader.h"
+#include "imports.h"
+#include "context.h"
+#include "macros.h"
+#include "mfeatures.h"
+#include "get.h"
+#include "dispatch.h"
+#include "mtypes.h"
+
+#if FEATURE_ARB_sync
+#include "syncobj.h"
+
+static struct gl_sync_object *
+_mesa_new_sync_object(struct gl_context *ctx, GLenum type)
+{
+ struct gl_sync_object *s = MALLOC_STRUCT(gl_sync_object);
+ (void) ctx;
+ (void) type;
+
+ return s;
+}
+
+
+static void
+_mesa_delete_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
+{
+ (void) ctx;
+ free(syncObj);
+}
+
+
+static void
+_mesa_fence_sync(struct gl_context *ctx, struct gl_sync_object *syncObj,
+ GLenum condition, GLbitfield flags)
+{
+ (void) ctx;
+ (void) condition;
+ (void) flags;
+
+ syncObj->StatusFlag = 1;
+}
+
+
+static void
+_mesa_check_sync(struct gl_context *ctx, struct gl_sync_object *syncObj)
+{
+ (void) ctx;
+ (void) syncObj;
+
+ /* No-op for software rendering. Hardware drivers will need to determine
+ * whether the state of the sync object has changed.
+ */
+}
+
+
+static void
+_mesa_wait_sync(struct gl_context *ctx, struct gl_sync_object *syncObj,
+ GLbitfield flags, GLuint64 timeout)
+{
+ (void) ctx;
+ (void) syncObj;
+ (void) flags;
+ (void) timeout;
+
+ /* No-op for software rendering. Hardware drivers will need to wait until
+ * the state of the sync object changes or the timeout expires.
+ */
+}
+
+
+void GLAPIENTRY
+_mesa_init_sync_object_functions(struct dd_function_table *driver)
+{
+ driver->NewSyncObject = _mesa_new_sync_object;
+ driver->FenceSync = _mesa_fence_sync;
+ driver->DeleteSyncObject = _mesa_delete_sync_object;
+ driver->CheckSync = _mesa_check_sync;
+
+ /* Use the same no-op wait function for both.
+ */
+ driver->ClientWaitSync = _mesa_wait_sync;
+ driver->ServerWaitSync = _mesa_wait_sync;
+}
+
+
+void GLAPIENTRY
+_mesa_init_sync_dispatch(struct _glapi_table *disp)
+{
+ SET_IsSync(disp, _mesa_IsSync);
+ SET_DeleteSync(disp, _mesa_DeleteSync);
+ SET_FenceSync(disp, _mesa_FenceSync);
+ SET_ClientWaitSync(disp, _mesa_ClientWaitSync);
+ SET_WaitSync(disp, _mesa_WaitSync);
+ SET_GetInteger64v(disp, _mesa_GetInteger64v);
+ SET_GetSynciv(disp, _mesa_GetSynciv);
+}
+
+
+/**
+ * Allocate/init the context state related to sync objects.
+ */
+void GLAPIENTRY
+_mesa_init_sync(struct gl_context *ctx)
+{
+ (void) ctx;
+}
+
+
+/**
+ * Free the context state related to sync objects.
+ */
+void GLAPIENTRY
+_mesa_free_sync_data(struct gl_context *ctx)
+{
+ (void) ctx;
+}
+
+
+static int
+_mesa_validate_sync(struct gl_sync_object *syncObj)
+{
+ return (syncObj != NULL)
+ && (syncObj->Type == GL_SYNC_FENCE)
+ && !syncObj->DeletePending;
+}
+
+
+void GLAPIENTRY
+_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
+{
+ _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ syncObj->RefCount++;
+ _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+}
+
+
+void GLAPIENTRY
+_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
+{
+ _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ syncObj->RefCount--;
+ if (syncObj->RefCount == 0) {
+ remove_from_list(& syncObj->link);
+ _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+
+ ctx->Driver.DeleteSyncObject(ctx, syncObj);
+ } else {
+ _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+ }
+}
+
+
+GLboolean GLAPIENTRY
+_mesa_IsSync(GLsync sync)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_sync_object *const syncObj = (struct gl_sync_object *) sync;
+ ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
+
+ return _mesa_validate_sync(syncObj) ? GL_TRUE : GL_FALSE;
+}
+
+
+void GLAPIENTRY
+_mesa_DeleteSync(GLsync sync)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_sync_object *const syncObj = (struct gl_sync_object *) sync;
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ /* From the GL_ARB_sync spec:
+ *
+ * DeleteSync will silently ignore a <sync> value of zero. An
+ * INVALID_VALUE error is generated if <sync> is neither zero nor the
+ * name of a sync object.
+ */
+ if (sync == 0) {
+ return;
+ }
+
+ if (!_mesa_validate_sync(syncObj)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glDeleteSync");
+ return;
+ }
+
+ /* If there are no client-waits or server-waits pending on this sync, delete
+ * the underlying object.
+ */
+ syncObj->DeletePending = GL_TRUE;
+ _mesa_unref_sync_object(ctx, syncObj);
+}
+
+
+GLsync GLAPIENTRY
+_mesa_FenceSync(GLenum condition, GLbitfield flags)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_sync_object *syncObj;
+ ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, 0);
+
+ if (condition != GL_SYNC_GPU_COMMANDS_COMPLETE) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glFenceSync(condition=0x%x)",
+ condition);
+ return 0;
+ }
+
+ if (flags != 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glFenceSync(flags=0x%x)",
+ condition);
+ return 0;
+ }
+
+ syncObj = ctx->Driver.NewSyncObject(ctx, GL_SYNC_FENCE);
+ if (syncObj != NULL) {
+ syncObj->Type = GL_SYNC_FENCE;
+ /* The name is not currently used, and it is never visible to
+ * applications. If sync support is extended to provide support for
+ * NV_fence, this field will be used. We'll also need to add an object
+ * ID hashtable.
+ */
+ syncObj->Name = 1;
+ syncObj->RefCount = 1;
+ syncObj->DeletePending = GL_FALSE;
+ syncObj->SyncCondition = condition;
+ syncObj->Flags = flags;
+ syncObj->StatusFlag = 0;
+
+ ctx->Driver.FenceSync(ctx, syncObj, condition, flags);
+
+ _glthread_LOCK_MUTEX(ctx->Shared->Mutex);
+ insert_at_tail(& ctx->Shared->SyncObjects, & syncObj->link);
+ _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex);
+
+ return (GLsync) syncObj;
+ }
+
+ return NULL;
+}
+
+
+GLenum GLAPIENTRY
+_mesa_ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_sync_object *const syncObj = (struct gl_sync_object *) sync;
+ GLenum ret;
+ ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_WAIT_FAILED);
+
+ if (!_mesa_validate_sync(syncObj)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glClientWaitSync");
+ return GL_WAIT_FAILED;
+ }
+
+ if ((flags & ~GL_SYNC_FLUSH_COMMANDS_BIT) != 0) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glClientWaitSync(flags=0x%x)", flags);
+ return GL_WAIT_FAILED;
+ }
+
+ _mesa_ref_sync_object(ctx, syncObj);
+
+ /* From the GL_ARB_sync spec:
+ *
+ * ClientWaitSync returns one of four status values. A return value of
+ * ALREADY_SIGNALED indicates that <sync> was signaled at the time
+ * ClientWaitSync was called. ALREADY_SIGNALED will always be returned
+ * if <sync> was signaled, even if the value of <timeout> is zero.
+ */
+ ctx->Driver.CheckSync(ctx, syncObj);
+ if (syncObj->StatusFlag) {
+ ret = GL_ALREADY_SIGNALED;
+ } else {
+ ctx->Driver.ClientWaitSync(ctx, syncObj, flags, timeout);
+
+ ret = syncObj->StatusFlag ? GL_CONDITION_SATISFIED : GL_TIMEOUT_EXPIRED;
+ }
+
+ _mesa_unref_sync_object(ctx, syncObj);
+ return ret;
+}
+
+
+void GLAPIENTRY
+_mesa_WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_sync_object *const syncObj = (struct gl_sync_object *) sync;
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (!_mesa_validate_sync(syncObj)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glWaitSync");
+ return;
+ }
+
+ if (flags != 0) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glWaitSync(flags=0x%x)", flags);
+ return;
+ }
+
+ /* From the GL_ARB_sync spec:
+ *
+ * If the value of <timeout> is zero, then WaitSync does nothing.
+ */
+ if (timeout == 0) {
+ return;
+ }
+
+ ctx->Driver.ServerWaitSync(ctx, syncObj, flags, timeout);
+}
+
+
+void GLAPIENTRY
+_mesa_GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length,
+ GLint *values)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_sync_object *const syncObj = (struct gl_sync_object *) sync;
+ GLsizei size = 0;
+ GLint v[1];
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (!_mesa_validate_sync(syncObj)) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glGetSynciv");
+ return;
+ }
+
+ switch (pname) {
+ case GL_OBJECT_TYPE:
+ v[0] = syncObj->Type;
+ size = 1;
+ break;
+
+ case GL_SYNC_CONDITION:
+ v[0] = syncObj->SyncCondition;
+ size = 1;
+ break;
+
+ case GL_SYNC_STATUS:
+ /* Update the state of the sync by dipping into the driver. Note that
+ * this call won't block. It just updates state in the common object
+ * data from the current driver state.
+ */
+ ctx->Driver.CheckSync(ctx, syncObj);
+
+ v[0] = (syncObj->StatusFlag) ? GL_SIGNALED : GL_UNSIGNALED;
+ size = 1;
+ break;
+
+ case GL_SYNC_FLAGS:
+ v[0] = syncObj->Flags;
+ size = 1;
+ break;
+
+ default:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetSynciv(pname=0x%x)\n", pname);
+ return;
+ }
+
+ if (size > 0) {
+ const GLsizei copy_count = MIN2(size, bufSize);
+
+ memcpy(values, v, sizeof(GLint) * copy_count);
+ }
+
+ if (length != NULL) {
+ *length = size;
+ }
+}
+
+#endif /* FEATURE_ARB_sync */
diff --git a/mesalib/src/mesa/main/texformat.h b/mesalib/src/mesa/main/texformat.h
index b84117995..3cf09213a 100644
--- a/mesalib/src/mesa/main/texformat.h
+++ b/mesalib/src/mesa/main/texformat.h
@@ -1,39 +1,39 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.75
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- * Copyright (c) 2008-2009 VMware, Inc.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-#ifndef TEXFORMAT_H
-#define TEXFORMAT_H
-
-
-#include "formats.h"
-
-struct gl_context;
-
-extern gl_format
-_mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
- GLenum format, GLenum type );
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.75
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (c) 2008-2009 VMware, Inc.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+#ifndef TEXFORMAT_H
+#define TEXFORMAT_H
+
+
+#include "formats.h"
+
+struct gl_context;
+
+extern gl_format
+_mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
+ GLenum format, GLenum type );
+
+
+#endif
diff --git a/mesalib/src/mesa/main/texgen.c b/mesalib/src/mesa/main/texgen.c
index 10eaa89ad..0ace0b936 100644
--- a/mesalib/src/mesa/main/texgen.c
+++ b/mesalib/src/mesa/main/texgen.c
@@ -1,401 +1,401 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.5
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/**
- * \file texgen.c
- *
- * glTexGen-related functions
- */
-
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/enums.h"
-#include "main/macros.h"
-#include "main/mfeatures.h"
-#include "main/texgen.h"
-#include "main/texstate.h"
-#include "math/m_matrix.h"
-#include "main/dispatch.h"
-
-
-#if FEATURE_texgen
-
-
-/**
- * Return texgen state for given coordinate
- */
-static struct gl_texgen *
-get_texgen(struct gl_texture_unit *texUnit, GLenum coord)
-{
- switch (coord) {
- case GL_S:
- return &texUnit->GenS;
- case GL_T:
- return &texUnit->GenT;
- case GL_R:
- return &texUnit->GenR;
- case GL_Q:
- return &texUnit->GenQ;
- default:
- return NULL;
- }
-}
-
-
-void GLAPIENTRY
-_mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params )
-{
- struct gl_texture_unit *texUnit;
- struct gl_texgen *texgen;
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (MESA_VERBOSE&(VERBOSE_API|VERBOSE_TEXTURE))
- _mesa_debug(ctx, "glTexGen %s %s %.1f(%s)...\n",
- _mesa_lookup_enum_by_nr(coord),
- _mesa_lookup_enum_by_nr(pname),
- *params,
- _mesa_lookup_enum_by_nr((GLenum) (GLint) *params));
-
- if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glTexGen(current unit)");
- return;
- }
-
- texUnit = _mesa_get_current_tex_unit(ctx);
-
- texgen = get_texgen(texUnit, coord);
- if (!texgen) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glTexGen(coord)");
- return;
- }
-
- switch (pname) {
- case GL_TEXTURE_GEN_MODE:
- {
- GLenum mode = (GLenum) (GLint) params[0];
- GLbitfield bit = 0x0;
- if (texgen->Mode == mode)
- return;
- switch (mode) {
- case GL_OBJECT_LINEAR:
- bit = TEXGEN_OBJ_LINEAR;
- break;
- case GL_EYE_LINEAR:
- bit = TEXGEN_EYE_LINEAR;
- break;
- case GL_SPHERE_MAP:
- if (coord == GL_S || coord == GL_T)
- bit = TEXGEN_SPHERE_MAP;
- break;
- case GL_REFLECTION_MAP_NV:
- if (coord != GL_Q)
- bit = TEXGEN_REFLECTION_MAP_NV;
- break;
- case GL_NORMAL_MAP_NV:
- if (coord != GL_Q)
- bit = TEXGEN_NORMAL_MAP_NV;
- break;
- default:
- ; /* nop */
- }
- if (!bit) {
- _mesa_error( ctx, GL_INVALID_ENUM, "glTexGenfv(param)" );
- return;
- }
- FLUSH_VERTICES(ctx, _NEW_TEXTURE);
- texgen->Mode = mode;
- texgen->_ModeBit = bit;
- }
- break;
-
- case GL_OBJECT_PLANE:
- {
- if (TEST_EQ_4V(texgen->ObjectPlane, params))
- return;
- FLUSH_VERTICES(ctx, _NEW_TEXTURE);
- COPY_4FV(texgen->ObjectPlane, params);
- }
- break;
-
- case GL_EYE_PLANE:
- {
- GLfloat tmp[4];
- /* Transform plane equation by the inverse modelview matrix */
- if (_math_matrix_is_dirty(ctx->ModelviewMatrixStack.Top)) {
- _math_matrix_analyse(ctx->ModelviewMatrixStack.Top);
- }
- _mesa_transform_vector(tmp, params,
- ctx->ModelviewMatrixStack.Top->inv);
- if (TEST_EQ_4V(texgen->EyePlane, tmp))
- return;
- FLUSH_VERTICES(ctx, _NEW_TEXTURE);
- COPY_4FV(texgen->EyePlane, tmp);
- }
- break;
-
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glTexGenfv(pname)" );
- return;
- }
-
- if (ctx->Driver.TexGen)
- ctx->Driver.TexGen( ctx, coord, pname, params );
-}
-
-
-static void GLAPIENTRY
-_mesa_TexGeniv(GLenum coord, GLenum pname, const GLint *params )
-{
- GLfloat p[4];
- p[0] = (GLfloat) params[0];
- if (pname == GL_TEXTURE_GEN_MODE) {
- p[1] = p[2] = p[3] = 0.0F;
- }
- else {
- p[1] = (GLfloat) params[1];
- p[2] = (GLfloat) params[2];
- p[3] = (GLfloat) params[3];
- }
- _mesa_TexGenfv(coord, pname, p);
-}
-
-
-static void GLAPIENTRY
-_mesa_TexGend(GLenum coord, GLenum pname, GLdouble param )
-{
- GLfloat p[4];
- p[0] = (GLfloat) param;
- p[1] = p[2] = p[3] = 0.0F;
- _mesa_TexGenfv( coord, pname, p );
-}
-
-#if FEATURE_ES1
-
-void GLAPIENTRY
-_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)
-{
- ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
- _mesa_GetTexGenfv(GL_S, pname, params);
-}
-
-
-void GLAPIENTRY
-_es_TexGenf(GLenum coord, GLenum pname, GLfloat param)
-{
- ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
- /* set S, T, and R at the same time */
- _mesa_TexGenf(GL_S, pname, param);
- _mesa_TexGenf(GL_T, pname, param);
- _mesa_TexGenf(GL_R, pname, param);
-}
-
-
-void GLAPIENTRY
-_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params)
-{
- ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
- /* set S, T, and R at the same time */
- _mesa_TexGenfv(GL_S, pname, params);
- _mesa_TexGenfv(GL_T, pname, params);
- _mesa_TexGenfv(GL_R, pname, params);
-}
-
-#endif
-
-static void GLAPIENTRY
-_mesa_TexGendv(GLenum coord, GLenum pname, const GLdouble *params )
-{
- GLfloat p[4];
- p[0] = (GLfloat) params[0];
- if (pname == GL_TEXTURE_GEN_MODE) {
- p[1] = p[2] = p[3] = 0.0F;
- }
- else {
- p[1] = (GLfloat) params[1];
- p[2] = (GLfloat) params[2];
- p[3] = (GLfloat) params[3];
- }
- _mesa_TexGenfv( coord, pname, p );
-}
-
-
-void GLAPIENTRY
-_mesa_TexGenf( GLenum coord, GLenum pname, GLfloat param )
-{
- GLfloat p[4];
- p[0] = param;
- p[1] = p[2] = p[3] = 0.0F;
- _mesa_TexGenfv(coord, pname, p);
-}
-
-
-void GLAPIENTRY
-_mesa_TexGeni( GLenum coord, GLenum pname, GLint param )
-{
- GLint p[4];
- p[0] = param;
- p[1] = p[2] = p[3] = 0;
- _mesa_TexGeniv( coord, pname, p );
-}
-
-
-
-static void GLAPIENTRY
-_mesa_GetTexGendv( GLenum coord, GLenum pname, GLdouble *params )
-{
- struct gl_texture_unit *texUnit;
- struct gl_texgen *texgen;
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexGendv(current unit)");
- return;
- }
-
- texUnit = _mesa_get_current_tex_unit(ctx);
-
- texgen = get_texgen(texUnit, coord);
- if (!texgen) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexGendv(coord)");
- return;
- }
-
- switch (pname) {
- case GL_TEXTURE_GEN_MODE:
- params[0] = ENUM_TO_DOUBLE(texgen->Mode);
- break;
- case GL_OBJECT_PLANE:
- COPY_4V(params, texgen->ObjectPlane);
- break;
- case GL_EYE_PLANE:
- COPY_4V(params, texgen->EyePlane);
- break;
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" );
- }
-}
-
-
-
-void GLAPIENTRY
-_mesa_GetTexGenfv( GLenum coord, GLenum pname, GLfloat *params )
-{
- struct gl_texture_unit *texUnit;
- struct gl_texgen *texgen;
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexGenfv(current unit)");
- return;
- }
-
- texUnit = _mesa_get_current_tex_unit(ctx);
-
- texgen = get_texgen(texUnit, coord);
- if (!texgen) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexGenfv(coord)");
- return;
- }
-
- switch (pname) {
- case GL_TEXTURE_GEN_MODE:
- params[0] = ENUM_TO_FLOAT(texgen->Mode);
- break;
- case GL_OBJECT_PLANE:
- COPY_4V(params, texgen->ObjectPlane);
- break;
- case GL_EYE_PLANE:
- COPY_4V(params, texgen->EyePlane);
- break;
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(pname)" );
- }
-}
-
-
-
-static void GLAPIENTRY
-_mesa_GetTexGeniv( GLenum coord, GLenum pname, GLint *params )
-{
- struct gl_texture_unit *texUnit;
- struct gl_texgen *texgen;
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexGeniv(current unit)");
- return;
- }
-
- texUnit = _mesa_get_current_tex_unit(ctx);
-
- texgen = get_texgen(texUnit, coord);
- if (!texgen) {
- _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexGeniv(coord)");
- return;
- }
-
- switch (pname) {
- case GL_TEXTURE_GEN_MODE:
- params[0] = texgen->Mode;
- break;
- case GL_OBJECT_PLANE:
- params[0] = (GLint) texgen->ObjectPlane[0];
- params[1] = (GLint) texgen->ObjectPlane[1];
- params[2] = (GLint) texgen->ObjectPlane[2];
- params[3] = (GLint) texgen->ObjectPlane[3];
- break;
- case GL_EYE_PLANE:
- params[0] = (GLint) texgen->EyePlane[0];
- params[1] = (GLint) texgen->EyePlane[1];
- params[2] = (GLint) texgen->EyePlane[2];
- params[3] = (GLint) texgen->EyePlane[3];
- break;
- default:
- _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(pname)" );
- }
-}
-
-
-void
-_mesa_init_texgen_dispatch(struct _glapi_table *disp)
-{
- SET_GetTexGendv(disp, _mesa_GetTexGendv);
- SET_GetTexGenfv(disp, _mesa_GetTexGenfv);
- SET_GetTexGeniv(disp, _mesa_GetTexGeniv);
- SET_TexGend(disp, _mesa_TexGend);
- SET_TexGendv(disp, _mesa_TexGendv);
- SET_TexGenf(disp, _mesa_TexGenf);
- SET_TexGenfv(disp, _mesa_TexGenfv);
- SET_TexGeni(disp, _mesa_TexGeni);
- SET_TexGeniv(disp, _mesa_TexGeniv);
-}
-
-
-#endif /* FEATURE_texgen */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.5
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/**
+ * \file texgen.c
+ *
+ * glTexGen-related functions
+ */
+
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/enums.h"
+#include "main/macros.h"
+#include "main/mfeatures.h"
+#include "main/texgen.h"
+#include "main/texstate.h"
+#include "math/m_matrix.h"
+#include "main/dispatch.h"
+
+
+#if FEATURE_texgen
+
+
+/**
+ * Return texgen state for given coordinate
+ */
+static struct gl_texgen *
+get_texgen(struct gl_texture_unit *texUnit, GLenum coord)
+{
+ switch (coord) {
+ case GL_S:
+ return &texUnit->GenS;
+ case GL_T:
+ return &texUnit->GenT;
+ case GL_R:
+ return &texUnit->GenR;
+ case GL_Q:
+ return &texUnit->GenQ;
+ default:
+ return NULL;
+ }
+}
+
+
+void GLAPIENTRY
+_mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params )
+{
+ struct gl_texture_unit *texUnit;
+ struct gl_texgen *texgen;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (MESA_VERBOSE&(VERBOSE_API|VERBOSE_TEXTURE))
+ _mesa_debug(ctx, "glTexGen %s %s %.1f(%s)...\n",
+ _mesa_lookup_enum_by_nr(coord),
+ _mesa_lookup_enum_by_nr(pname),
+ *params,
+ _mesa_lookup_enum_by_nr((GLenum) (GLint) *params));
+
+ if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glTexGen(current unit)");
+ return;
+ }
+
+ texUnit = _mesa_get_current_tex_unit(ctx);
+
+ texgen = get_texgen(texUnit, coord);
+ if (!texgen) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glTexGen(coord)");
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_GEN_MODE:
+ {
+ GLenum mode = (GLenum) (GLint) params[0];
+ GLbitfield bit = 0x0;
+ if (texgen->Mode == mode)
+ return;
+ switch (mode) {
+ case GL_OBJECT_LINEAR:
+ bit = TEXGEN_OBJ_LINEAR;
+ break;
+ case GL_EYE_LINEAR:
+ bit = TEXGEN_EYE_LINEAR;
+ break;
+ case GL_SPHERE_MAP:
+ if (coord == GL_S || coord == GL_T)
+ bit = TEXGEN_SPHERE_MAP;
+ break;
+ case GL_REFLECTION_MAP_NV:
+ if (coord != GL_Q)
+ bit = TEXGEN_REFLECTION_MAP_NV;
+ break;
+ case GL_NORMAL_MAP_NV:
+ if (coord != GL_Q)
+ bit = TEXGEN_NORMAL_MAP_NV;
+ break;
+ default:
+ ; /* nop */
+ }
+ if (!bit) {
+ _mesa_error( ctx, GL_INVALID_ENUM, "glTexGenfv(param)" );
+ return;
+ }
+ FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+ texgen->Mode = mode;
+ texgen->_ModeBit = bit;
+ }
+ break;
+
+ case GL_OBJECT_PLANE:
+ {
+ if (TEST_EQ_4V(texgen->ObjectPlane, params))
+ return;
+ FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+ COPY_4FV(texgen->ObjectPlane, params);
+ }
+ break;
+
+ case GL_EYE_PLANE:
+ {
+ GLfloat tmp[4];
+ /* Transform plane equation by the inverse modelview matrix */
+ if (_math_matrix_is_dirty(ctx->ModelviewMatrixStack.Top)) {
+ _math_matrix_analyse(ctx->ModelviewMatrixStack.Top);
+ }
+ _mesa_transform_vector(tmp, params,
+ ctx->ModelviewMatrixStack.Top->inv);
+ if (TEST_EQ_4V(texgen->EyePlane, tmp))
+ return;
+ FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+ COPY_4FV(texgen->EyePlane, tmp);
+ }
+ break;
+
+ default:
+ _mesa_error( ctx, GL_INVALID_ENUM, "glTexGenfv(pname)" );
+ return;
+ }
+
+ if (ctx->Driver.TexGen)
+ ctx->Driver.TexGen( ctx, coord, pname, params );
+}
+
+
+static void GLAPIENTRY
+_mesa_TexGeniv(GLenum coord, GLenum pname, const GLint *params )
+{
+ GLfloat p[4];
+ p[0] = (GLfloat) params[0];
+ if (pname == GL_TEXTURE_GEN_MODE) {
+ p[1] = p[2] = p[3] = 0.0F;
+ }
+ else {
+ p[1] = (GLfloat) params[1];
+ p[2] = (GLfloat) params[2];
+ p[3] = (GLfloat) params[3];
+ }
+ _mesa_TexGenfv(coord, pname, p);
+}
+
+
+static void GLAPIENTRY
+_mesa_TexGend(GLenum coord, GLenum pname, GLdouble param )
+{
+ GLfloat p[4];
+ p[0] = (GLfloat) param;
+ p[1] = p[2] = p[3] = 0.0F;
+ _mesa_TexGenfv( coord, pname, p );
+}
+
+#if FEATURE_ES1
+
+void GLAPIENTRY
+_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)
+{
+ ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
+ _mesa_GetTexGenfv(GL_S, pname, params);
+}
+
+
+void GLAPIENTRY
+_es_TexGenf(GLenum coord, GLenum pname, GLfloat param)
+{
+ ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
+ /* set S, T, and R at the same time */
+ _mesa_TexGenf(GL_S, pname, param);
+ _mesa_TexGenf(GL_T, pname, param);
+ _mesa_TexGenf(GL_R, pname, param);
+}
+
+
+void GLAPIENTRY
+_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params)
+{
+ ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
+ /* set S, T, and R at the same time */
+ _mesa_TexGenfv(GL_S, pname, params);
+ _mesa_TexGenfv(GL_T, pname, params);
+ _mesa_TexGenfv(GL_R, pname, params);
+}
+
+#endif
+
+static void GLAPIENTRY
+_mesa_TexGendv(GLenum coord, GLenum pname, const GLdouble *params )
+{
+ GLfloat p[4];
+ p[0] = (GLfloat) params[0];
+ if (pname == GL_TEXTURE_GEN_MODE) {
+ p[1] = p[2] = p[3] = 0.0F;
+ }
+ else {
+ p[1] = (GLfloat) params[1];
+ p[2] = (GLfloat) params[2];
+ p[3] = (GLfloat) params[3];
+ }
+ _mesa_TexGenfv( coord, pname, p );
+}
+
+
+void GLAPIENTRY
+_mesa_TexGenf( GLenum coord, GLenum pname, GLfloat param )
+{
+ GLfloat p[4];
+ p[0] = param;
+ p[1] = p[2] = p[3] = 0.0F;
+ _mesa_TexGenfv(coord, pname, p);
+}
+
+
+void GLAPIENTRY
+_mesa_TexGeni( GLenum coord, GLenum pname, GLint param )
+{
+ GLint p[4];
+ p[0] = param;
+ p[1] = p[2] = p[3] = 0;
+ _mesa_TexGeniv( coord, pname, p );
+}
+
+
+
+static void GLAPIENTRY
+_mesa_GetTexGendv( GLenum coord, GLenum pname, GLdouble *params )
+{
+ struct gl_texture_unit *texUnit;
+ struct gl_texgen *texgen;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexGendv(current unit)");
+ return;
+ }
+
+ texUnit = _mesa_get_current_tex_unit(ctx);
+
+ texgen = get_texgen(texUnit, coord);
+ if (!texgen) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexGendv(coord)");
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_GEN_MODE:
+ params[0] = ENUM_TO_DOUBLE(texgen->Mode);
+ break;
+ case GL_OBJECT_PLANE:
+ COPY_4V(params, texgen->ObjectPlane);
+ break;
+ case GL_EYE_PLANE:
+ COPY_4V(params, texgen->EyePlane);
+ break;
+ default:
+ _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" );
+ }
+}
+
+
+
+void GLAPIENTRY
+_mesa_GetTexGenfv( GLenum coord, GLenum pname, GLfloat *params )
+{
+ struct gl_texture_unit *texUnit;
+ struct gl_texgen *texgen;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexGenfv(current unit)");
+ return;
+ }
+
+ texUnit = _mesa_get_current_tex_unit(ctx);
+
+ texgen = get_texgen(texUnit, coord);
+ if (!texgen) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexGenfv(coord)");
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_GEN_MODE:
+ params[0] = ENUM_TO_FLOAT(texgen->Mode);
+ break;
+ case GL_OBJECT_PLANE:
+ COPY_4V(params, texgen->ObjectPlane);
+ break;
+ case GL_EYE_PLANE:
+ COPY_4V(params, texgen->EyePlane);
+ break;
+ default:
+ _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(pname)" );
+ }
+}
+
+
+
+static void GLAPIENTRY
+_mesa_GetTexGeniv( GLenum coord, GLenum pname, GLint *params )
+{
+ struct gl_texture_unit *texUnit;
+ struct gl_texgen *texgen;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexGeniv(current unit)");
+ return;
+ }
+
+ texUnit = _mesa_get_current_tex_unit(ctx);
+
+ texgen = get_texgen(texUnit, coord);
+ if (!texgen) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexGeniv(coord)");
+ return;
+ }
+
+ switch (pname) {
+ case GL_TEXTURE_GEN_MODE:
+ params[0] = texgen->Mode;
+ break;
+ case GL_OBJECT_PLANE:
+ params[0] = (GLint) texgen->ObjectPlane[0];
+ params[1] = (GLint) texgen->ObjectPlane[1];
+ params[2] = (GLint) texgen->ObjectPlane[2];
+ params[3] = (GLint) texgen->ObjectPlane[3];
+ break;
+ case GL_EYE_PLANE:
+ params[0] = (GLint) texgen->EyePlane[0];
+ params[1] = (GLint) texgen->EyePlane[1];
+ params[2] = (GLint) texgen->EyePlane[2];
+ params[3] = (GLint) texgen->EyePlane[3];
+ break;
+ default:
+ _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(pname)" );
+ }
+}
+
+
+void
+_mesa_init_texgen_dispatch(struct _glapi_table *disp)
+{
+ SET_GetTexGendv(disp, _mesa_GetTexGendv);
+ SET_GetTexGenfv(disp, _mesa_GetTexGenfv);
+ SET_GetTexGeniv(disp, _mesa_GetTexGeniv);
+ SET_TexGend(disp, _mesa_TexGend);
+ SET_TexGendv(disp, _mesa_TexGendv);
+ SET_TexGenf(disp, _mesa_TexGenf);
+ SET_TexGenfv(disp, _mesa_TexGenfv);
+ SET_TexGeni(disp, _mesa_TexGeni);
+ SET_TexGeniv(disp, _mesa_TexGeniv);
+}
+
+
+#endif /* FEATURE_texgen */
diff --git a/mesalib/src/mesa/main/teximage.c b/mesalib/src/mesa/main/teximage.c
index 694f6fa00..b16baaf91 100644
--- a/mesalib/src/mesa/main/teximage.c
+++ b/mesalib/src/mesa/main/teximage.c
@@ -2606,26 +2606,9 @@ teximage(struct gl_context *ctx, GLuint dims,
border, internalFormat, texFormat);
/* Give the texture to the driver. <pixels> may be null. */
- ASSERT(ctx->Driver.TexImage3D);
- switch (dims) {
- case 1:
- ctx->Driver.TexImage1D(ctx, texImage, internalFormat,
- width, border, format,
- type, pixels, unpack);
- break;
- case 2:
- ctx->Driver.TexImage2D(ctx, texImage, internalFormat,
- width, height, border, format,
- type, pixels, unpack);
- break;
- case 3:
- ctx->Driver.TexImage3D(ctx, texImage, internalFormat,
- width, height, depth, border, format,
- type, pixels, unpack);
- break;
- default:
- _mesa_problem(ctx, "invalid dims=%u in teximage()", dims);
- }
+ ctx->Driver.TexImage(ctx, dims, texImage, internalFormat,
+ width, height, depth, border, format,
+ type, pixels, unpack);
check_gen_mipmap(ctx, target, texObj, level);
@@ -2809,26 +2792,10 @@ texsubimage(struct gl_context *ctx, GLuint dims, GLenum target, GLint level,
xoffset += texImage->Border;
}
- switch (dims) {
- case 1:
- ctx->Driver.TexSubImage1D(ctx, texImage,
- xoffset, width,
- format, type, pixels, &ctx->Unpack);
- break;
- case 2:
- ctx->Driver.TexSubImage2D(ctx, texImage,
- xoffset, yoffset, width, height,
- format, type, pixels, &ctx->Unpack);
- break;
- case 3:
- ctx->Driver.TexSubImage3D(ctx, texImage,
- xoffset, yoffset, zoffset,
- width, height, depth,
- format, type, pixels, &ctx->Unpack);
- break;
- default:
- _mesa_problem(ctx, "unexpected dims in subteximage()");
- }
+ ctx->Driver.TexSubImage(ctx, dims, texImage,
+ xoffset, yoffset, zoffset,
+ width, height, depth,
+ format, type, pixels, &ctx->Unpack);
check_gen_mipmap(ctx, target, texObj, level);
@@ -2959,7 +2926,7 @@ copyteximage(struct gl_context *ctx, GLuint dims,
GL_NONE, GL_NONE);
if (legal_texture_size(ctx, texFormat, width, height, 1)) {
- GLint srcX = x, srcY = y, dstX = 0, dstY = 0;
+ GLint srcX = x, srcY = y, dstX = 0, dstY = 0, dstZ = 0;
/* Free old texture image */
ctx->Driver.FreeTextureImageBuffer(ctx, texImage);
@@ -2968,29 +2935,17 @@ copyteximage(struct gl_context *ctx, GLuint dims,
border, internalFormat, texFormat);
/* Allocate texture memory (no pixel data yet) */
- if (dims == 1) {
- ctx->Driver.TexImage1D(ctx, texImage, internalFormat,
- width, border, GL_NONE, GL_NONE, NULL,
- &ctx->Unpack);
- }
- else {
- ctx->Driver.TexImage2D(ctx, texImage, internalFormat,
- width, height, border, GL_NONE, GL_NONE,
- NULL, &ctx->Unpack);
- }
+ ctx->Driver.TexImage(ctx, dims, texImage, internalFormat,
+ width, height, 1, border, GL_NONE, GL_NONE,
+ NULL, &ctx->Unpack);
if (_mesa_clip_copytexsubimage(ctx, &dstX, &dstY, &srcX, &srcY,
&width, &height)) {
struct gl_renderbuffer *srcRb =
get_copy_tex_image_source(ctx, texImage->TexFormat);
- if (dims == 1)
- ctx->Driver.CopyTexSubImage1D(ctx, texImage, dstX,
- srcRb, srcX, srcY, width);
-
- else
- ctx->Driver.CopyTexSubImage2D(ctx, texImage, dstX, dstY,
- srcRb, srcX, srcY, width, height);
+ ctx->Driver.CopyTexSubImage(ctx, dims, texImage, dstX, dstY, dstZ,
+ srcRb, srcX, srcY, width, height);
}
check_gen_mipmap(ctx, target, texObj, level);
@@ -3089,23 +3044,9 @@ copytexsubimage(struct gl_context *ctx, GLuint dims, GLenum target, GLint level,
struct gl_renderbuffer *srcRb =
get_copy_tex_image_source(ctx, texImage->TexFormat);
- switch (dims) {
- case 1:
- ctx->Driver.CopyTexSubImage1D(ctx, texImage, xoffset,
- srcRb, x, y, width);
- break;
- case 2:
- ctx->Driver.CopyTexSubImage2D(ctx, texImage, xoffset, yoffset,
- srcRb, x, y, width, height);
- break;
- case 3:
- ctx->Driver.CopyTexSubImage3D(ctx, texImage,
- xoffset, yoffset, zoffset,
- srcRb, x, y, width, height);
- break;
- default:
- _mesa_problem(ctx, "bad dims in copytexsubimage()");
- }
+ ctx->Driver.CopyTexSubImage(ctx, dims, texImage,
+ xoffset, yoffset, zoffset,
+ srcRb, x, y, width, height);
check_gen_mipmap(ctx, target, texObj, level);
@@ -3600,31 +3541,10 @@ compressedteximage(struct gl_context *ctx, GLuint dims,
width, height, depth,
border, internalFormat, texFormat);
- switch (dims) {
- case 1:
- ASSERT(ctx->Driver.CompressedTexImage1D);
- ctx->Driver.CompressedTexImage1D(ctx, texImage,
- internalFormat,
- width,
- border, imageSize, data);
- break;
- case 2:
- ASSERT(ctx->Driver.CompressedTexImage2D);
- ctx->Driver.CompressedTexImage2D(ctx, texImage,
- internalFormat,
- width, height,
- border, imageSize, data);
- break;
- case 3:
- ASSERT(ctx->Driver.CompressedTexImage3D);
- ctx->Driver.CompressedTexImage3D(ctx, texImage,
- internalFormat,
- width, height, depth,
- border, imageSize, data);
- break;
- default:
- _mesa_problem(ctx, "bad dims in compressedteximage");
- }
+ ctx->Driver.CompressedTexImage(ctx, dims, texImage,
+ internalFormat,
+ width, height, depth,
+ border, imageSize, data);
check_gen_mipmap(ctx, target, texObj, level);
@@ -3713,33 +3633,10 @@ compressed_tex_sub_image(GLuint dims, GLenum target, GLint level,
/* error was recorded */
}
else if (width > 0 && height > 0 && depth > 0) {
- switch (dims) {
- case 1:
- if (ctx->Driver.CompressedTexSubImage1D) {
- ctx->Driver.CompressedTexSubImage1D(ctx, texImage,
- xoffset, width,
- format, imageSize, data);
- }
- break;
- case 2:
- if (ctx->Driver.CompressedTexSubImage2D) {
- ctx->Driver.CompressedTexSubImage2D(ctx, texImage,
- xoffset, yoffset,
- width, height,
- format, imageSize, data);
- }
- break;
- case 3:
- if (ctx->Driver.CompressedTexSubImage3D) {
- ctx->Driver.CompressedTexSubImage3D(ctx, texImage,
- xoffset, yoffset, zoffset,
- width, height, depth,
- format, imageSize, data);
- }
- break;
- default:
- ;
- }
+ ctx->Driver.CompressedTexSubImage(ctx, dims, texImage,
+ xoffset, yoffset, zoffset,
+ width, height, depth,
+ format, imageSize, data);
check_gen_mipmap(ctx, target, texObj, level);
diff --git a/mesalib/src/mesa/main/texobj.c b/mesalib/src/mesa/main/texobj.c
index a471bad22..e0494c940 100644
--- a/mesalib/src/mesa/main/texobj.c
+++ b/mesalib/src/mesa/main/texobj.c
@@ -807,30 +807,10 @@ _mesa_get_fallback_texture(struct gl_context *ctx, gl_texture_index tex)
0, /* border */
GL_RGBA, texFormat);
- switch (dims) {
- case 0:
- break;
- case 1:
- ctx->Driver.TexImage1D(ctx, texImage, GL_RGBA,
- width, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, texel,
- &ctx->DefaultPacking);
- break;
- case 2:
- ctx->Driver.TexImage2D(ctx, texImage, GL_RGBA,
- width, height, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, texel,
- &ctx->DefaultPacking);
- break;
- case 3:
- ctx->Driver.TexImage3D(ctx, texImage, GL_RGBA,
- width, height, depth, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, texel,
- &ctx->DefaultPacking);
- break;
- default:
- _mesa_problem(ctx, "bad dims in _mesa_get_fallback_texture()");
- }
+ ctx->Driver.TexImage(ctx, dims, texImage, GL_RGBA,
+ width, height, depth, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE, texel,
+ &ctx->DefaultPacking);
}
_mesa_test_texobj_completeness(ctx, texObj);
diff --git a/mesalib/src/mesa/main/texstore.c b/mesalib/src/mesa/main/texstore.c
index d368b1868..1ced8aac9 100644
--- a/mesalib/src/mesa/main/texstore.c
+++ b/mesalib/src/mesa/main/texstore.c
@@ -4261,170 +4261,71 @@ store_texsubimage(struct gl_context *ctx,
/**
- * This is the fallback for Driver.TexImage1D().
+ * Fallback code for ctx->Driver.TexImage().
+ * Basically, allocate storage for the texture image, then copy the
+ * user's image into it.
*/
void
-_mesa_store_teximage1d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint border,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing)
+_mesa_store_teximage(struct gl_context *ctx,
+ GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint internalFormat,
+ GLint width, GLint height, GLint depth, GLint border,
+ GLenum format, GLenum type, const GLvoid *pixels,
+ const struct gl_pixelstore_attrib *packing)
{
- if (width == 0)
- return;
-
- /* allocate storage for texture data */
- if (!ctx->Driver.AllocTextureImageBuffer(ctx, texImage, texImage->TexFormat,
- width, 1, 1)) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage1D");
- return;
- }
-
- store_texsubimage(ctx, texImage,
- 0, 0, 0, width, 1, 1,
- format, type, pixels, packing, "glTexImage1D");
-}
-
-
-/**
- * This is the fallback for Driver.TexImage2D().
- */
-void
-_mesa_store_teximage2d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *packing)
-{
- if (width == 0 || height == 0)
- return;
-
- /* allocate storage for texture data */
- if (!ctx->Driver.AllocTextureImageBuffer(ctx, texImage, texImage->TexFormat,
- width, height, 1)) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
- return;
- }
-
- store_texsubimage(ctx, texImage,
- 0, 0, 0, width, height, 1,
- format, type, pixels, packing, "glTexImage2D");
-}
-
+ assert(dims == 1 || dims == 2 || dims == 3);
-
-/**
- * This is the fallback for Driver.TexImage3D().
- */
-void
-_mesa_store_teximage3d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint depth, GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *packing)
-{
if (width == 0 || height == 0 || depth == 0)
return;
/* allocate storage for texture data */
if (!ctx->Driver.AllocTextureImageBuffer(ctx, texImage, texImage->TexFormat,
width, height, depth)) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D");
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage%uD", dims);
return;
}
store_texsubimage(ctx, texImage,
0, 0, 0, width, height, depth,
- format, type, pixels, packing, "glTexImage3D");
+ format, type, pixels, packing, "glTexImage");
}
-
-
/*
- * This is the fallback for Driver.TexSubImage1D().
+ * Fallback for Driver.TexSubImage().
*/
void
-_mesa_store_texsubimage1d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint width,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *packing)
-{
- store_texsubimage(ctx, texImage,
- xoffset, 0, 0, width, 1, 1,
- format, type, pixels, packing, "glTexSubImage1D");
-}
-
-
-
-/**
- * This is the fallback for Driver.TexSubImage2D().
- */
-void
-_mesa_store_texsubimage2d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset,
- GLint width, GLint height,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *packing)
-{
- store_texsubimage(ctx, texImage,
- xoffset, yoffset, 0, width, height, 1,
- format, type, pixels, packing, "glTexSubImage2D");
-}
-
-
-/*
- * This is the fallback for Driver.TexSubImage3D().
- */
-void
-_mesa_store_texsubimage3d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset, GLint zoffset,
- GLint width, GLint height, GLint depth,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *packing)
+_mesa_store_texsubimage(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ GLint width, GLint height, GLint depth,
+ GLenum format, GLenum type, const void *pixels,
+ const struct gl_pixelstore_attrib *packing)
{
store_texsubimage(ctx, texImage,
xoffset, yoffset, zoffset, width, height, depth,
- format, type, pixels, packing, "glTexSubImage3D");
-}
-
-
-/*
- * Fallback for Driver.CompressedTexImage1D()
- */
-void
-_mesa_store_compressed_teximage1d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint border,
- GLsizei imageSize, const GLvoid *data)
-{
- /* no compressed 1D image formats at this time */
- (void) ctx;
- (void) internalFormat;
- (void) width; (void) border;
- (void) imageSize; (void) data;
- (void) texImage;
+ format, type, pixels, packing, "glTexSubImage");
}
-
/**
- * Fallback for Driver.CompressedTexImage2D()
+ * Fallback for Driver.CompressedTexImage()
*/
void
-_mesa_store_compressed_teximage2d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLsizei imageSize, const GLvoid *data)
+_mesa_store_compressed_teximage(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint internalFormat,
+ GLint width, GLint height, GLint depth,
+ GLint border,
+ GLsizei imageSize, const GLvoid *data)
{
+ /* only 2D compressed images are supported at this time */
+ if (dims != 2) {
+ _mesa_problem(ctx, "Unexpected glCompressedTexImage1D/3D call");
+ return;
+ }
+
/* This is pretty simple, because unlike the general texstore path we don't
* have to worry about the usual image unpacking or image transfer
* operations.
@@ -4441,66 +4342,24 @@ _mesa_store_compressed_teximage2d(struct gl_context *ctx,
return;
}
- _mesa_store_compressed_texsubimage2d(ctx, texImage,
- 0, 0,
- width, height,
- texImage->TexFormat,
- imageSize, data);
-}
-
-
-
-/*
- * Fallback for Driver.CompressedTexImage3D()
- */
-void
-_mesa_store_compressed_teximage3d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint depth,
- GLint border,
- GLsizei imageSize, const GLvoid *data)
-{
- /* this space intentionally left blank */
- (void) ctx;
- (void) internalFormat;
- (void) width; (void) height; (void) depth;
- (void) border;
- (void) imageSize; (void) data;
- (void) texImage;
-}
-
-
-
-/**
- * Fallback for Driver.CompressedTexSubImage1D()
- */
-void
-_mesa_store_compressed_texsubimage1d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLsizei width,
- GLenum format,
- GLsizei imageSize, const GLvoid *data)
-{
- /* there are no compressed 1D texture formats yet */
- (void) ctx;
- (void) xoffset; (void) width;
- (void) format;
- (void) imageSize; (void) data;
- (void) texImage;
+ _mesa_store_compressed_texsubimage(ctx, dims, texImage,
+ 0, 0, 0,
+ width, height, depth,
+ texImage->TexFormat,
+ imageSize, data);
}
/**
- * Fallback for Driver.CompressedTexSubImage2D()
+ * Fallback for Driver.CompressedTexSubImage()
*/
void
-_mesa_store_compressed_texsubimage2d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height,
- GLenum format,
- GLsizei imageSize, const GLvoid *data)
+_mesa_store_compressed_texsubimage(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ GLsizei width, GLsizei height, GLsizei depth,
+ GLenum format,
+ GLsizei imageSize, const GLvoid *data)
{
GLint bytesPerRow, dstRowStride, srcRowStride;
GLint i, rows;
@@ -4509,6 +4368,11 @@ _mesa_store_compressed_texsubimage2d(struct gl_context *ctx,
const gl_format texFormat = texImage->TexFormat;
GLuint bw, bh;
+ if (dims != 2) {
+ _mesa_problem(ctx, "Unexpected 1D/3D compressed texsubimage call");
+ return;
+ }
+
_mesa_get_format_block_size(texFormat, &bw, &bh);
/* these should have been caught sooner */
@@ -4552,24 +4416,3 @@ _mesa_store_compressed_texsubimage2d(struct gl_context *ctx,
_mesa_unmap_teximage_pbo(ctx, &ctx->Unpack);
}
-
-
-/**
- * Fallback for Driver.CompressedTexSubImage3D()
- */
-void
-_mesa_store_compressed_texsubimage3d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset, GLint zoffset,
- GLsizei width, GLsizei height, GLsizei depth,
- GLenum format,
- GLsizei imageSize, const GLvoid *data)
-{
- /* there are no compressed 3D texture formats yet */
- (void) ctx;
- (void) xoffset; (void) yoffset; (void) zoffset;
- (void) width; (void) height; (void) depth;
- (void) format;
- (void) imageSize; (void) data;
- (void) texImage;
-}
diff --git a/mesalib/src/mesa/main/texstore.h b/mesalib/src/mesa/main/texstore.h
index 85e33b0fe..5a1c01423 100644
--- a/mesalib/src/mesa/main/texstore.h
+++ b/mesalib/src/mesa/main/texstore.h
@@ -90,103 +90,40 @@ _mesa_make_temp_float_image(struct gl_context *ctx, GLuint dims,
GLbitfield transferOps);
extern void
-_mesa_store_teximage1d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint border,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
+_mesa_store_teximage(struct gl_context *ctx,
+ GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint internalFormat,
+ GLint width, GLint height, GLint depth, GLint border,
+ GLenum format, GLenum type, const GLvoid *pixels,
+ const struct gl_pixelstore_attrib *packing);
extern void
-_mesa_store_teximage2d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
+_mesa_store_texsubimage(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ GLint width, GLint height, GLint depth,
+ GLenum format, GLenum type, const GLvoid *pixels,
+ const struct gl_pixelstore_attrib *packing);
extern void
-_mesa_store_teximage3d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint depth, GLint border,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
+_mesa_store_compressed_teximage(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint internalFormat,
+ GLint width, GLint height, GLint depth,
+ GLint border,
+ GLsizei imageSize, const GLvoid *data);
extern void
-_mesa_store_texsubimage1d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint width,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
-
-
-extern void
-_mesa_store_texsubimage2d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset,
- GLint width, GLint height,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
-
-
-extern void
-_mesa_store_texsubimage3d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset, GLint zoffset,
- GLint width, GLint height, GLint depth,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing);
-
-
-extern void
-_mesa_store_compressed_teximage1d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint border,
- GLsizei imageSize, const GLvoid *data);
-
-extern void
-_mesa_store_compressed_teximage2d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLsizei imageSize, const GLvoid *data);
-
-extern void
-_mesa_store_compressed_teximage3d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint depth,
- GLint border,
- GLsizei imageSize, const GLvoid *data);
-
-
-extern void
-_mesa_store_compressed_texsubimage1d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLsizei width,
- GLenum format,
- GLsizei imageSize, const GLvoid *data);
-
-extern void
-_mesa_store_compressed_texsubimage2d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height,
- GLenum format,
- GLsizei imageSize, const GLvoid *data);
-
-extern void
-_mesa_store_compressed_texsubimage3d(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset, GLint zoffset,
- GLsizei width, GLsizei height, GLsizei depth,
- GLenum format,
- GLsizei imageSize, const GLvoid *data);
+_mesa_store_compressed_texsubimage(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint xoffset, GLint yoffset, GLint zoffset,
+ GLsizei width, GLsizei height, GLsizei depth,
+ GLenum format,
+ GLsizei imageSize, const GLvoid *data);
#endif
diff --git a/mesalib/src/mesa/main/texturebarrier.c b/mesalib/src/mesa/main/texturebarrier.c
index ef4bd45e6..56cc8718c 100644
--- a/mesalib/src/mesa/main/texturebarrier.c
+++ b/mesalib/src/mesa/main/texturebarrier.c
@@ -1,54 +1,54 @@
-/*
- * Copyright © 2011 Marek Olšák <maraeo@gmail.com>
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-/**
- * \file texturebarrier.c
- * Implementation of glTextureBarrierNV.
- *
- * \author Marek Olšák <maraeo@gmail.com>
- */
-
-#include "context.h"
-#include "texturebarrier.h"
-
-
-static void
-_mesa_texture_barrier(struct gl_context *ctx)
-{
- /* no-op */
-}
-
-void
-_mesa_init_texture_barrier_functions(struct dd_function_table *driver)
-{
- driver->TextureBarrier = _mesa_texture_barrier;
-}
-
-void GLAPIENTRY
-_mesa_TextureBarrierNV(void)
-{
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- ctx->Driver.TextureBarrier(ctx);
-}
+/*
+ * Copyright © 2011 Marek Olšák <maraeo@gmail.com>
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+/**
+ * \file texturebarrier.c
+ * Implementation of glTextureBarrierNV.
+ *
+ * \author Marek Olšák <maraeo@gmail.com>
+ */
+
+#include "context.h"
+#include "texturebarrier.h"
+
+
+static void
+_mesa_texture_barrier(struct gl_context *ctx)
+{
+ /* no-op */
+}
+
+void
+_mesa_init_texture_barrier_functions(struct dd_function_table *driver)
+{
+ driver->TextureBarrier = _mesa_texture_barrier;
+}
+
+void GLAPIENTRY
+_mesa_TextureBarrierNV(void)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ ctx->Driver.TextureBarrier(ctx);
+}
diff --git a/mesalib/src/mesa/main/texturebarrier.h b/mesalib/src/mesa/main/texturebarrier.h
index ef35989b4..a84a85b21 100644
--- a/mesalib/src/mesa/main/texturebarrier.h
+++ b/mesalib/src/mesa/main/texturebarrier.h
@@ -1,44 +1,44 @@
-/*
- * Copyright © 2011 Marek Olšák <maraeo@gmail.com>
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-/**
- * \file texturebarrier.h
- * GL_NV_texture_barrier
- *
- * \author Marek Olšák <maraeo@gmail.com>
- */
-
-#ifndef TEXTUREBARRIER_H
-#define TEXTUREBARRIER_H
-
-#include "glheader.h"
-
-struct dd_function_table;
-
-extern void
-_mesa_init_texture_barrier_functions(struct dd_function_table *driver);
-
-extern void GLAPIENTRY
-_mesa_TextureBarrierNV(void);
-
-#endif /* TEXTUREBARRIER_H */
+/*
+ * Copyright © 2011 Marek Olšák <maraeo@gmail.com>
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+/**
+ * \file texturebarrier.h
+ * GL_NV_texture_barrier
+ *
+ * \author Marek Olšák <maraeo@gmail.com>
+ */
+
+#ifndef TEXTUREBARRIER_H
+#define TEXTUREBARRIER_H
+
+#include "glheader.h"
+
+struct dd_function_table;
+
+extern void
+_mesa_init_texture_barrier_functions(struct dd_function_table *driver);
+
+extern void GLAPIENTRY
+_mesa_TextureBarrierNV(void);
+
+#endif /* TEXTUREBARRIER_H */
diff --git a/mesalib/src/mesa/main/transformfeedback.c b/mesalib/src/mesa/main/transformfeedback.c
index f2c1435d9..1bd76d130 100644
--- a/mesalib/src/mesa/main/transformfeedback.c
+++ b/mesalib/src/mesa/main/transformfeedback.c
@@ -470,7 +470,12 @@ _mesa_BindBufferRange(GLenum target, GLuint index,
return;
}
- bufObj = _mesa_lookup_bufferobj(ctx, buffer);
+ if (buffer == 0) {
+ bufObj = ctx->Shared->NullBufferObj;
+ } else {
+ bufObj = _mesa_lookup_bufferobj(ctx, buffer);
+ }
+
if (!bufObj) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glBindBufferRange(invalid buffer=%u)", buffer);
@@ -518,7 +523,12 @@ _mesa_BindBufferBase(GLenum target, GLuint index, GLuint buffer)
return;
}
- bufObj = _mesa_lookup_bufferobj(ctx, buffer);
+ if (buffer == 0) {
+ bufObj = ctx->Shared->NullBufferObj;
+ } else {
+ bufObj = _mesa_lookup_bufferobj(ctx, buffer);
+ }
+
if (!bufObj) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glBindBufferBase(invalid buffer=%u)", buffer);
@@ -574,7 +584,12 @@ _mesa_BindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer,
return;
}
- bufObj = _mesa_lookup_bufferobj(ctx, buffer);
+ if (buffer == 0) {
+ bufObj = ctx->Shared->NullBufferObj;
+ } else {
+ bufObj = _mesa_lookup_bufferobj(ctx, buffer);
+ }
+
if (!bufObj) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glBindBufferOffsetEXT(invalid buffer=%u)", buffer);
diff --git a/mesalib/src/mesa/main/version.c b/mesalib/src/mesa/main/version.c
index d2e34ca1e..38d2b3398 100644
--- a/mesalib/src/mesa/main/version.c
+++ b/mesalib/src/mesa/main/version.c
@@ -171,6 +171,7 @@ compute_version(struct gl_context *ctx)
ctx->Extensions.ARB_instanced_arrays &&
ctx->Extensions.ARB_occlusion_query2 &&
ctx->Extensions.ARB_sampler_objects &&
+ ctx->Extensions.ARB_shader_bit_encoding &&
ctx->Extensions.ARB_texture_rgb10_a2ui &&
ctx->Extensions.ARB_timer_query &&
ctx->Extensions.ARB_vertex_type_2_10_10_10_rev &&
diff --git a/mesalib/src/mesa/main/viewport.c b/mesalib/src/mesa/main/viewport.c
index 9186d1bb8..a58697ab3 100644
--- a/mesalib/src/mesa/main/viewport.c
+++ b/mesalib/src/mesa/main/viewport.c
@@ -1,185 +1,185 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.5
- *
- * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-/**
- * \file viewport.c
- * glViewport and glDepthRange functions.
- */
-
-
-#include "context.h"
-#include "macros.h"
-#include "mtypes.h"
-#include "viewport.h"
-
-
-/**
- * Set the viewport.
- * \sa Called via glViewport() or display list execution.
- *
- * Flushes the vertices and calls _mesa_set_viewport() with the given
- * parameters.
- */
-void GLAPIENTRY
-_mesa_Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
-{
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
- _mesa_set_viewport(ctx, x, y, width, height);
-}
-
-
-/**
- * Set new viewport parameters and update derived state (the _WindowMap
- * matrix). Usually called from _mesa_Viewport().
- *
- * \param ctx GL context.
- * \param x, y coordinates of the lower left corner of the viewport rectangle.
- * \param width width of the viewport rectangle.
- * \param height height of the viewport rectangle.
- */
-void
-_mesa_set_viewport(struct gl_context *ctx, GLint x, GLint y,
- GLsizei width, GLsizei height)
-{
- if (MESA_VERBOSE & VERBOSE_API)
- _mesa_debug(ctx, "glViewport %d %d %d %d\n", x, y, width, height);
-
- if (width < 0 || height < 0) {
- _mesa_error(ctx, GL_INVALID_VALUE,
- "glViewport(%d, %d, %d, %d)", x, y, width, height);
- return;
- }
-
- /* clamp width and height to the implementation dependent range */
- width = MIN2(width, (GLsizei) ctx->Const.MaxViewportWidth);
- height = MIN2(height, (GLsizei) ctx->Const.MaxViewportHeight);
-
- ctx->Viewport.X = x;
- ctx->Viewport.Width = width;
- ctx->Viewport.Y = y;
- ctx->Viewport.Height = height;
- ctx->NewState |= _NEW_VIEWPORT;
-
-#if 1
- /* XXX remove this someday. Currently the DRI drivers rely on
- * the WindowMap matrix being up to date in the driver's Viewport
- * and DepthRange functions.
- */
- _math_matrix_viewport(&ctx->Viewport._WindowMap,
- ctx->Viewport.X, ctx->Viewport.Y,
- ctx->Viewport.Width, ctx->Viewport.Height,
- ctx->Viewport.Near, ctx->Viewport.Far,
- ctx->DrawBuffer->_DepthMaxF);
-#endif
-
- if (ctx->Driver.Viewport) {
- /* Many drivers will use this call to check for window size changes
- * and reallocate the z/stencil/accum/etc buffers if needed.
- */
- ctx->Driver.Viewport(ctx, x, y, width, height);
- }
-}
-
-
-/**
- * Called by glDepthRange
- *
- * \param nearval specifies the Z buffer value which should correspond to
- * the near clip plane
- * \param farval specifies the Z buffer value which should correspond to
- * the far clip plane
- */
-void GLAPIENTRY
-_mesa_DepthRange(GLclampd nearval, GLclampd farval)
-{
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
-
- if (MESA_VERBOSE&VERBOSE_API)
- _mesa_debug(ctx, "glDepthRange %f %f\n", nearval, farval);
-
- if (ctx->Viewport.Near == nearval &&
- ctx->Viewport.Far == farval)
- return;
-
- ctx->Viewport.Near = (GLfloat) CLAMP(nearval, 0.0, 1.0);
- ctx->Viewport.Far = (GLfloat) CLAMP(farval, 0.0, 1.0);
- ctx->NewState |= _NEW_VIEWPORT;
-
-#if 1
- /* XXX remove this someday. Currently the DRI drivers rely on
- * the WindowMap matrix being up to date in the driver's Viewport
- * and DepthRange functions.
- */
- _math_matrix_viewport(&ctx->Viewport._WindowMap,
- ctx->Viewport.X, ctx->Viewport.Y,
- ctx->Viewport.Width, ctx->Viewport.Height,
- ctx->Viewport.Near, ctx->Viewport.Far,
- ctx->DrawBuffer->_DepthMaxF);
-#endif
-
- if (ctx->Driver.DepthRange) {
- ctx->Driver.DepthRange(ctx, nearval, farval);
- }
-}
-
-void GLAPIENTRY
-_mesa_DepthRangef(GLclampf nearval, GLclampf farval)
-{
- _mesa_DepthRange(nearval, farval);
-}
-
-/**
- * Initialize the context viewport attribute group.
- * \param ctx the GL context.
- */
-void _mesa_init_viewport(struct gl_context *ctx)
-{
- GLfloat depthMax = 65535.0F; /* sorf of arbitrary */
-
- /* Viewport group */
- ctx->Viewport.X = 0;
- ctx->Viewport.Y = 0;
- ctx->Viewport.Width = 0;
- ctx->Viewport.Height = 0;
- ctx->Viewport.Near = 0.0;
- ctx->Viewport.Far = 1.0;
- _math_matrix_ctr(&ctx->Viewport._WindowMap);
-
- _math_matrix_viewport(&ctx->Viewport._WindowMap, 0, 0, 0, 0,
- 0.0F, 1.0F, depthMax);
-}
-
-
-/**
- * Free the context viewport attribute group data.
- * \param ctx the GL context.
- */
-void _mesa_free_viewport_data(struct gl_context *ctx)
-{
- _math_matrix_dtr(&ctx->Viewport._WindowMap);
-}
-
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.5
+ *
+ * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+/**
+ * \file viewport.c
+ * glViewport and glDepthRange functions.
+ */
+
+
+#include "context.h"
+#include "macros.h"
+#include "mtypes.h"
+#include "viewport.h"
+
+
+/**
+ * Set the viewport.
+ * \sa Called via glViewport() or display list execution.
+ *
+ * Flushes the vertices and calls _mesa_set_viewport() with the given
+ * parameters.
+ */
+void GLAPIENTRY
+_mesa_Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+ _mesa_set_viewport(ctx, x, y, width, height);
+}
+
+
+/**
+ * Set new viewport parameters and update derived state (the _WindowMap
+ * matrix). Usually called from _mesa_Viewport().
+ *
+ * \param ctx GL context.
+ * \param x, y coordinates of the lower left corner of the viewport rectangle.
+ * \param width width of the viewport rectangle.
+ * \param height height of the viewport rectangle.
+ */
+void
+_mesa_set_viewport(struct gl_context *ctx, GLint x, GLint y,
+ GLsizei width, GLsizei height)
+{
+ if (MESA_VERBOSE & VERBOSE_API)
+ _mesa_debug(ctx, "glViewport %d %d %d %d\n", x, y, width, height);
+
+ if (width < 0 || height < 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glViewport(%d, %d, %d, %d)", x, y, width, height);
+ return;
+ }
+
+ /* clamp width and height to the implementation dependent range */
+ width = MIN2(width, (GLsizei) ctx->Const.MaxViewportWidth);
+ height = MIN2(height, (GLsizei) ctx->Const.MaxViewportHeight);
+
+ ctx->Viewport.X = x;
+ ctx->Viewport.Width = width;
+ ctx->Viewport.Y = y;
+ ctx->Viewport.Height = height;
+ ctx->NewState |= _NEW_VIEWPORT;
+
+#if 1
+ /* XXX remove this someday. Currently the DRI drivers rely on
+ * the WindowMap matrix being up to date in the driver's Viewport
+ * and DepthRange functions.
+ */
+ _math_matrix_viewport(&ctx->Viewport._WindowMap,
+ ctx->Viewport.X, ctx->Viewport.Y,
+ ctx->Viewport.Width, ctx->Viewport.Height,
+ ctx->Viewport.Near, ctx->Viewport.Far,
+ ctx->DrawBuffer->_DepthMaxF);
+#endif
+
+ if (ctx->Driver.Viewport) {
+ /* Many drivers will use this call to check for window size changes
+ * and reallocate the z/stencil/accum/etc buffers if needed.
+ */
+ ctx->Driver.Viewport(ctx, x, y, width, height);
+ }
+}
+
+
+/**
+ * Called by glDepthRange
+ *
+ * \param nearval specifies the Z buffer value which should correspond to
+ * the near clip plane
+ * \param farval specifies the Z buffer value which should correspond to
+ * the far clip plane
+ */
+void GLAPIENTRY
+_mesa_DepthRange(GLclampd nearval, GLclampd farval)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+
+ if (MESA_VERBOSE&VERBOSE_API)
+ _mesa_debug(ctx, "glDepthRange %f %f\n", nearval, farval);
+
+ if (ctx->Viewport.Near == nearval &&
+ ctx->Viewport.Far == farval)
+ return;
+
+ ctx->Viewport.Near = (GLfloat) CLAMP(nearval, 0.0, 1.0);
+ ctx->Viewport.Far = (GLfloat) CLAMP(farval, 0.0, 1.0);
+ ctx->NewState |= _NEW_VIEWPORT;
+
+#if 1
+ /* XXX remove this someday. Currently the DRI drivers rely on
+ * the WindowMap matrix being up to date in the driver's Viewport
+ * and DepthRange functions.
+ */
+ _math_matrix_viewport(&ctx->Viewport._WindowMap,
+ ctx->Viewport.X, ctx->Viewport.Y,
+ ctx->Viewport.Width, ctx->Viewport.Height,
+ ctx->Viewport.Near, ctx->Viewport.Far,
+ ctx->DrawBuffer->_DepthMaxF);
+#endif
+
+ if (ctx->Driver.DepthRange) {
+ ctx->Driver.DepthRange(ctx, nearval, farval);
+ }
+}
+
+void GLAPIENTRY
+_mesa_DepthRangef(GLclampf nearval, GLclampf farval)
+{
+ _mesa_DepthRange(nearval, farval);
+}
+
+/**
+ * Initialize the context viewport attribute group.
+ * \param ctx the GL context.
+ */
+void _mesa_init_viewport(struct gl_context *ctx)
+{
+ GLfloat depthMax = 65535.0F; /* sorf of arbitrary */
+
+ /* Viewport group */
+ ctx->Viewport.X = 0;
+ ctx->Viewport.Y = 0;
+ ctx->Viewport.Width = 0;
+ ctx->Viewport.Height = 0;
+ ctx->Viewport.Near = 0.0;
+ ctx->Viewport.Far = 1.0;
+ _math_matrix_ctr(&ctx->Viewport._WindowMap);
+
+ _math_matrix_viewport(&ctx->Viewport._WindowMap, 0, 0, 0, 0,
+ 0.0F, 1.0F, depthMax);
+}
+
+
+/**
+ * Free the context viewport attribute group data.
+ * \param ctx the GL context.
+ */
+void _mesa_free_viewport_data(struct gl_context *ctx)
+{
+ _math_matrix_dtr(&ctx->Viewport._WindowMap);
+}
+
diff --git a/mesalib/src/mesa/main/viewport.h b/mesalib/src/mesa/main/viewport.h
index 2f66c6a67..db4507bea 100644
--- a/mesalib/src/mesa/main/viewport.h
+++ b/mesalib/src/mesa/main/viewport.h
@@ -1,58 +1,58 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.5
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef VIEWPORT_H
-#define VIEWPORT_H
-
-#include "glheader.h"
-
-struct gl_context;
-
-extern void GLAPIENTRY
-_mesa_Viewport(GLint x, GLint y, GLsizei width, GLsizei height);
-
-
-extern void
-_mesa_set_viewport(struct gl_context *ctx, GLint x, GLint y,
- GLsizei width, GLsizei height);
-
-
-extern void GLAPIENTRY
-_mesa_DepthRange(GLclampd nearval, GLclampd farval);
-
-extern void GLAPIENTRY
-_mesa_DepthRangef(GLclampf nearval, GLclampf farval);
-
-
-extern void
-_mesa_init_viewport(struct gl_context *ctx);
-
-
-extern void
-_mesa_free_viewport_data(struct gl_context *ctx);
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.5
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef VIEWPORT_H
+#define VIEWPORT_H
+
+#include "glheader.h"
+
+struct gl_context;
+
+extern void GLAPIENTRY
+_mesa_Viewport(GLint x, GLint y, GLsizei width, GLsizei height);
+
+
+extern void
+_mesa_set_viewport(struct gl_context *ctx, GLint x, GLint y,
+ GLsizei width, GLsizei height);
+
+
+extern void GLAPIENTRY
+_mesa_DepthRange(GLclampd nearval, GLclampd farval);
+
+extern void GLAPIENTRY
+_mesa_DepthRangef(GLclampf nearval, GLclampf farval);
+
+
+extern void
+_mesa_init_viewport(struct gl_context *ctx);
+
+
+extern void
+_mesa_free_viewport_data(struct gl_context *ctx);
+
+
+#endif
diff --git a/mesalib/src/mesa/math/m_debug_clip.c b/mesalib/src/mesa/math/m_debug_clip.c
index 36d2a9e64..bbad6ef02 100644
--- a/mesalib/src/mesa/math/m_debug_clip.c
+++ b/mesalib/src/mesa/math/m_debug_clip.c
@@ -1,409 +1,409 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.1
- *
- * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Gareth Hughes
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/macros.h"
-#include "main/imports.h"
-
-#include "m_matrix.h"
-#include "m_xform.h"
-
-#include "m_debug.h"
-#include "m_debug_util.h"
-
-#ifdef __UNIXOS2__
-/* The linker doesn't like empty files */
-static char dummy;
-#endif
-
-#ifdef DEBUG_MATH /* This code only used for debugging */
-
-static clip_func *clip_tab[2] = {
- _mesa_clip_tab,
- _mesa_clip_np_tab
-};
-static char *cnames[2] = {
- "_mesa_clip_tab",
- "_mesa_clip_np_tab"
-};
-#ifdef RUN_DEBUG_BENCHMARK
-static char *cstrings[2] = {
- "clip, perspective divide",
- "clip, no divide"
-};
-#endif
-
-
-/* =============================================================
- * Reference cliptests
- */
-
-static GLvector4f *ref_cliptest_points4( GLvector4f *clip_vec,
- GLvector4f *proj_vec,
- GLubyte clipMask[],
- GLubyte *orMask,
- GLubyte *andMask,
- GLboolean viewport_z_clip )
-{
- const GLuint stride = clip_vec->stride;
- const GLuint count = clip_vec->count;
- const GLfloat *from = (GLfloat *)clip_vec->start;
- GLuint c = 0;
- GLfloat (*vProj)[4] = (GLfloat (*)[4])proj_vec->start;
- GLubyte tmpAndMask = *andMask;
- GLubyte tmpOrMask = *orMask;
- GLuint i;
- for ( i = 0 ; i < count ; i++, STRIDE_F(from, stride) ) {
- const GLfloat cx = from[0];
- const GLfloat cy = from[1];
- const GLfloat cz = from[2];
- const GLfloat cw = from[3];
- GLubyte mask = 0;
- if ( -cx + cw < 0 ) mask |= CLIP_RIGHT_BIT;
- if ( cx + cw < 0 ) mask |= CLIP_LEFT_BIT;
- if ( -cy + cw < 0 ) mask |= CLIP_TOP_BIT;
- if ( cy + cw < 0 ) mask |= CLIP_BOTTOM_BIT;
- if (viewport_z_clip) {
- if ( -cz + cw < 0 ) mask |= CLIP_FAR_BIT;
- if ( cz + cw < 0 ) mask |= CLIP_NEAR_BIT;
- }
- clipMask[i] = mask;
- if ( mask ) {
- c++;
- tmpAndMask &= mask;
- tmpOrMask |= mask;
- vProj[i][0] = 0;
- vProj[i][1] = 0;
- vProj[i][2] = 0;
- vProj[i][3] = 1;
- } else {
- GLfloat oow = 1.0F / cw;
- vProj[i][0] = cx * oow;
- vProj[i][1] = cy * oow;
- vProj[i][2] = cz * oow;
- vProj[i][3] = oow;
- }
- }
-
- *orMask = tmpOrMask;
- *andMask = (GLubyte) (c < count ? 0 : tmpAndMask);
-
- proj_vec->flags |= VEC_SIZE_4;
- proj_vec->size = 4;
- proj_vec->count = clip_vec->count;
- return proj_vec;
-}
-
-/* Keep these here for now, even though we don't use them...
- */
-static GLvector4f *ref_cliptest_points3( GLvector4f *clip_vec,
- GLvector4f *proj_vec,
- GLubyte clipMask[],
- GLubyte *orMask,
- GLubyte *andMask,
- GLboolean viewport_z_clip )
-{
- const GLuint stride = clip_vec->stride;
- const GLuint count = clip_vec->count;
- const GLfloat *from = (GLfloat *)clip_vec->start;
-
- GLubyte tmpOrMask = *orMask;
- GLubyte tmpAndMask = *andMask;
- GLuint i;
- for ( i = 0 ; i < count ; i++, STRIDE_F(from, stride) ) {
- const GLfloat cx = from[0], cy = from[1], cz = from[2];
- GLubyte mask = 0;
- if ( cx > 1.0 ) mask |= CLIP_RIGHT_BIT;
- else if ( cx < -1.0 ) mask |= CLIP_LEFT_BIT;
- if ( cy > 1.0 ) mask |= CLIP_TOP_BIT;
- else if ( cy < -1.0 ) mask |= CLIP_BOTTOM_BIT;
- if (viewport_z_clip) {
- if ( cz > 1.0 ) mask |= CLIP_FAR_BIT;
- else if ( cz < -1.0 ) mask |= CLIP_NEAR_BIT;
- }
- clipMask[i] = mask;
- tmpOrMask |= mask;
- tmpAndMask &= mask;
- }
-
- *orMask = tmpOrMask;
- *andMask = tmpAndMask;
- return clip_vec;
-}
-
-static GLvector4f * ref_cliptest_points2( GLvector4f *clip_vec,
- GLvector4f *proj_vec,
- GLubyte clipMask[],
- GLubyte *orMask,
- GLubyte *andMask,
- GLboolean viewport_z_clip )
-{
- const GLuint stride = clip_vec->stride;
- const GLuint count = clip_vec->count;
- const GLfloat *from = (GLfloat *)clip_vec->start;
-
- GLubyte tmpOrMask = *orMask;
- GLubyte tmpAndMask = *andMask;
- GLuint i;
-
- (void) viewport_z_clip;
-
- for ( i = 0 ; i < count ; i++, STRIDE_F(from, stride) ) {
- const GLfloat cx = from[0], cy = from[1];
- GLubyte mask = 0;
- if ( cx > 1.0 ) mask |= CLIP_RIGHT_BIT;
- else if ( cx < -1.0 ) mask |= CLIP_LEFT_BIT;
- if ( cy > 1.0 ) mask |= CLIP_TOP_BIT;
- else if ( cy < -1.0 ) mask |= CLIP_BOTTOM_BIT;
- clipMask[i] = mask;
- tmpOrMask |= mask;
- tmpAndMask &= mask;
- }
-
- *orMask = tmpOrMask;
- *andMask = tmpAndMask;
- return clip_vec;
-}
-
-static clip_func ref_cliptest[5] = {
- 0,
- 0,
- ref_cliptest_points2,
- ref_cliptest_points3,
- ref_cliptest_points4
-};
-
-
-/* =============================================================
- * Cliptest tests
- */
-
-ALIGN16(static GLfloat, s[TEST_COUNT][4]);
-ALIGN16(static GLfloat, d[TEST_COUNT][4]);
-ALIGN16(static GLfloat, r[TEST_COUNT][4]);
-
-
-/**
- * Check if X, Y or Z component of the coordinate is close to W, in terms
- * of the clip test.
- */
-static GLboolean
-xyz_close_to_w(const GLfloat c[4])
-{
- float k = 0.0001;
- return (fabs(c[0] - c[3]) < k ||
- fabs(c[1] - c[3]) < k ||
- fabs(c[2] - c[3]) < k ||
- fabs(-c[0] - c[3]) < k ||
- fabs(-c[1] - c[3]) < k ||
- fabs(-c[2] - c[3]) < k);
-}
-
-
-
-static int test_cliptest_function( clip_func func, int np,
- int psize, long *cycles )
-{
- GLvector4f source[1], dest[1], ref[1];
- GLubyte dm[TEST_COUNT], dco, dca;
- GLubyte rm[TEST_COUNT], rco, rca;
- int i, j;
-#ifdef RUN_DEBUG_BENCHMARK
- int cycle_i; /* the counter for the benchmarks we run */
-#endif
- GLboolean viewport_z_clip = GL_TRUE;
-
- (void) cycles;
-
- if ( psize > 4 ) {
- _mesa_problem( NULL, "test_cliptest_function called with psize > 4\n" );
- return 0;
- }
-
- for ( i = 0 ; i < TEST_COUNT ; i++) {
- ASSIGN_4V( d[i], 0.0, 0.0, 0.0, 1.0 );
- ASSIGN_4V( s[i], 0.0, 0.0, 0.0, 1.0 );
- for ( j = 0 ; j < psize ; j++ )
- s[i][j] = rnd();
- }
-
- source->data = (GLfloat(*)[4])s;
- source->start = (GLfloat *)s;
- source->count = TEST_COUNT;
- source->stride = sizeof(s[0]);
- source->size = 4;
- source->flags = 0;
-
- dest->data = (GLfloat(*)[4])d;
- dest->start = (GLfloat *)d;
- dest->count = TEST_COUNT;
- dest->stride = sizeof(float[4]);
- dest->size = 0;
- dest->flags = 0;
-
- ref->data = (GLfloat(*)[4])r;
- ref->start = (GLfloat *)r;
- ref->count = TEST_COUNT;
- ref->stride = sizeof(float[4]);
- ref->size = 0;
- ref->flags = 0;
-
- dco = rco = 0;
- dca = rca = CLIP_FRUSTUM_BITS;
-
- ref_cliptest[psize]( source, ref, rm, &rco, &rca, viewport_z_clip );
-
- if ( mesa_profile ) {
- BEGIN_RACE( *cycles );
- func( source, dest, dm, &dco, &dca, viewport_z_clip );
- END_RACE( *cycles );
- }
- else {
- func( source, dest, dm, &dco, &dca, viewport_z_clip );
- }
-
- if ( dco != rco ) {
- printf( "\n-----------------------------\n" );
- printf( "dco = 0x%02x rco = 0x%02x\n", dco, rco );
- return 0;
- }
- if ( dca != rca ) {
- printf( "\n-----------------------------\n" );
- printf( "dca = 0x%02x rca = 0x%02x\n", dca, rca );
- return 0;
- }
- for ( i = 0 ; i < TEST_COUNT ; i++ ) {
- if ( dm[i] != rm[i] ) {
- GLfloat *c = source->start;
- STRIDE_F(c, source->stride * i);
- if (psize == 4 && xyz_close_to_w(c)) {
- /* The coordinate is very close to the clip plane. The clipmask
- * may vary depending on code path, but that's OK.
- */
- continue;
- }
- printf( "\n-----------------------------\n" );
- printf( "mask[%d] = 0x%02x ref mask[%d] = 0x%02x\n", i, dm[i], i,rm[i] );
- printf(" coord = %f, %f, %f, %f\n",
- c[0], c[1], c[2], c[3]);
- return 0;
- }
- }
-
- /* Only verify output on projected points4 case. FIXME: Do we need
- * to test other cases?
- */
- if ( np || psize < 4 )
- return 1;
-
- for ( i = 0 ; i < TEST_COUNT ; i++ ) {
- for ( j = 0 ; j < 4 ; j++ ) {
- if ( significand_match( d[i][j], r[i][j] ) < REQUIRED_PRECISION ) {
- printf( "\n-----------------------------\n" );
- printf( "(i = %i, j = %i) dm = 0x%02x rm = 0x%02x\n",
- i, j, dm[i], rm[i] );
- printf( "%f \t %f \t [diff = %e - %i bit missed]\n",
- d[i][0], r[i][0], r[i][0]-d[i][0],
- MAX_PRECISION - significand_match( d[i][0], r[i][0] ) );
- printf( "%f \t %f \t [diff = %e - %i bit missed]\n",
- d[i][1], r[i][1], r[i][1]-d[i][1],
- MAX_PRECISION - significand_match( d[i][1], r[i][1] ) );
- printf( "%f \t %f \t [diff = %e - %i bit missed]\n",
- d[i][2], r[i][2], r[i][2]-d[i][2],
- MAX_PRECISION - significand_match( d[i][2], r[i][2] ) );
- printf( "%f \t %f \t [diff = %e - %i bit missed]\n",
- d[i][3], r[i][3], r[i][3]-d[i][3],
- MAX_PRECISION - significand_match( d[i][3], r[i][3] ) );
- return 0;
- }
- }
- }
-
- return 1;
-}
-
-void _math_test_all_cliptest_functions( char *description )
-{
- int np, psize;
- long benchmark_tab[2][4];
- static int first_time = 1;
-
- if ( first_time ) {
- first_time = 0;
- mesa_profile = _mesa_getenv( "MESA_PROFILE" );
- }
-
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile ) {
- if ( !counter_overhead ) {
- INIT_COUNTER();
- printf( "counter overhead: %ld cycles\n\n", counter_overhead );
- }
- printf( "cliptest results after hooking in %s functions:\n", description );
- }
-#endif
-
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile ) {
- printf( "\n\t" );
- for ( psize = 2 ; psize <= 4 ; psize++ ) {
- printf( " p%d\t", psize );
- }
- printf( "\n--------------------------------------------------------\n\t" );
- }
-#endif
-
- for ( np = 0 ; np < 2 ; np++ ) {
- for ( psize = 2 ; psize <= 4 ; psize++ ) {
- clip_func func = clip_tab[np][psize];
- long *cycles = &(benchmark_tab[np][psize-1]);
-
- if ( test_cliptest_function( func, np, psize, cycles ) == 0 ) {
- char buf[100];
- sprintf( buf, "%s[%d] failed test (%s)",
- cnames[np], psize, description );
- _mesa_problem( NULL, "%s", buf );
- }
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile )
- printf( " %li\t", benchmark_tab[np][psize-1] );
-#endif
- }
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile )
- printf( " | [%s]\n\t", cstrings[np] );
-#endif
- }
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile )
- printf( "\n" );
-#endif
-}
-
-
-#endif /* DEBUG_MATH */
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.1
+ *
+ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Gareth Hughes
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/macros.h"
+#include "main/imports.h"
+
+#include "m_matrix.h"
+#include "m_xform.h"
+
+#include "m_debug.h"
+#include "m_debug_util.h"
+
+#ifdef __UNIXOS2__
+/* The linker doesn't like empty files */
+static char dummy;
+#endif
+
+#ifdef DEBUG_MATH /* This code only used for debugging */
+
+static clip_func *clip_tab[2] = {
+ _mesa_clip_tab,
+ _mesa_clip_np_tab
+};
+static char *cnames[2] = {
+ "_mesa_clip_tab",
+ "_mesa_clip_np_tab"
+};
+#ifdef RUN_DEBUG_BENCHMARK
+static char *cstrings[2] = {
+ "clip, perspective divide",
+ "clip, no divide"
+};
+#endif
+
+
+/* =============================================================
+ * Reference cliptests
+ */
+
+static GLvector4f *ref_cliptest_points4( GLvector4f *clip_vec,
+ GLvector4f *proj_vec,
+ GLubyte clipMask[],
+ GLubyte *orMask,
+ GLubyte *andMask,
+ GLboolean viewport_z_clip )
+{
+ const GLuint stride = clip_vec->stride;
+ const GLuint count = clip_vec->count;
+ const GLfloat *from = (GLfloat *)clip_vec->start;
+ GLuint c = 0;
+ GLfloat (*vProj)[4] = (GLfloat (*)[4])proj_vec->start;
+ GLubyte tmpAndMask = *andMask;
+ GLubyte tmpOrMask = *orMask;
+ GLuint i;
+ for ( i = 0 ; i < count ; i++, STRIDE_F(from, stride) ) {
+ const GLfloat cx = from[0];
+ const GLfloat cy = from[1];
+ const GLfloat cz = from[2];
+ const GLfloat cw = from[3];
+ GLubyte mask = 0;
+ if ( -cx + cw < 0 ) mask |= CLIP_RIGHT_BIT;
+ if ( cx + cw < 0 ) mask |= CLIP_LEFT_BIT;
+ if ( -cy + cw < 0 ) mask |= CLIP_TOP_BIT;
+ if ( cy + cw < 0 ) mask |= CLIP_BOTTOM_BIT;
+ if (viewport_z_clip) {
+ if ( -cz + cw < 0 ) mask |= CLIP_FAR_BIT;
+ if ( cz + cw < 0 ) mask |= CLIP_NEAR_BIT;
+ }
+ clipMask[i] = mask;
+ if ( mask ) {
+ c++;
+ tmpAndMask &= mask;
+ tmpOrMask |= mask;
+ vProj[i][0] = 0;
+ vProj[i][1] = 0;
+ vProj[i][2] = 0;
+ vProj[i][3] = 1;
+ } else {
+ GLfloat oow = 1.0F / cw;
+ vProj[i][0] = cx * oow;
+ vProj[i][1] = cy * oow;
+ vProj[i][2] = cz * oow;
+ vProj[i][3] = oow;
+ }
+ }
+
+ *orMask = tmpOrMask;
+ *andMask = (GLubyte) (c < count ? 0 : tmpAndMask);
+
+ proj_vec->flags |= VEC_SIZE_4;
+ proj_vec->size = 4;
+ proj_vec->count = clip_vec->count;
+ return proj_vec;
+}
+
+/* Keep these here for now, even though we don't use them...
+ */
+static GLvector4f *ref_cliptest_points3( GLvector4f *clip_vec,
+ GLvector4f *proj_vec,
+ GLubyte clipMask[],
+ GLubyte *orMask,
+ GLubyte *andMask,
+ GLboolean viewport_z_clip )
+{
+ const GLuint stride = clip_vec->stride;
+ const GLuint count = clip_vec->count;
+ const GLfloat *from = (GLfloat *)clip_vec->start;
+
+ GLubyte tmpOrMask = *orMask;
+ GLubyte tmpAndMask = *andMask;
+ GLuint i;
+ for ( i = 0 ; i < count ; i++, STRIDE_F(from, stride) ) {
+ const GLfloat cx = from[0], cy = from[1], cz = from[2];
+ GLubyte mask = 0;
+ if ( cx > 1.0 ) mask |= CLIP_RIGHT_BIT;
+ else if ( cx < -1.0 ) mask |= CLIP_LEFT_BIT;
+ if ( cy > 1.0 ) mask |= CLIP_TOP_BIT;
+ else if ( cy < -1.0 ) mask |= CLIP_BOTTOM_BIT;
+ if (viewport_z_clip) {
+ if ( cz > 1.0 ) mask |= CLIP_FAR_BIT;
+ else if ( cz < -1.0 ) mask |= CLIP_NEAR_BIT;
+ }
+ clipMask[i] = mask;
+ tmpOrMask |= mask;
+ tmpAndMask &= mask;
+ }
+
+ *orMask = tmpOrMask;
+ *andMask = tmpAndMask;
+ return clip_vec;
+}
+
+static GLvector4f * ref_cliptest_points2( GLvector4f *clip_vec,
+ GLvector4f *proj_vec,
+ GLubyte clipMask[],
+ GLubyte *orMask,
+ GLubyte *andMask,
+ GLboolean viewport_z_clip )
+{
+ const GLuint stride = clip_vec->stride;
+ const GLuint count = clip_vec->count;
+ const GLfloat *from = (GLfloat *)clip_vec->start;
+
+ GLubyte tmpOrMask = *orMask;
+ GLubyte tmpAndMask = *andMask;
+ GLuint i;
+
+ (void) viewport_z_clip;
+
+ for ( i = 0 ; i < count ; i++, STRIDE_F(from, stride) ) {
+ const GLfloat cx = from[0], cy = from[1];
+ GLubyte mask = 0;
+ if ( cx > 1.0 ) mask |= CLIP_RIGHT_BIT;
+ else if ( cx < -1.0 ) mask |= CLIP_LEFT_BIT;
+ if ( cy > 1.0 ) mask |= CLIP_TOP_BIT;
+ else if ( cy < -1.0 ) mask |= CLIP_BOTTOM_BIT;
+ clipMask[i] = mask;
+ tmpOrMask |= mask;
+ tmpAndMask &= mask;
+ }
+
+ *orMask = tmpOrMask;
+ *andMask = tmpAndMask;
+ return clip_vec;
+}
+
+static clip_func ref_cliptest[5] = {
+ 0,
+ 0,
+ ref_cliptest_points2,
+ ref_cliptest_points3,
+ ref_cliptest_points4
+};
+
+
+/* =============================================================
+ * Cliptest tests
+ */
+
+ALIGN16(static GLfloat, s[TEST_COUNT][4]);
+ALIGN16(static GLfloat, d[TEST_COUNT][4]);
+ALIGN16(static GLfloat, r[TEST_COUNT][4]);
+
+
+/**
+ * Check if X, Y or Z component of the coordinate is close to W, in terms
+ * of the clip test.
+ */
+static GLboolean
+xyz_close_to_w(const GLfloat c[4])
+{
+ float k = 0.0001;
+ return (fabs(c[0] - c[3]) < k ||
+ fabs(c[1] - c[3]) < k ||
+ fabs(c[2] - c[3]) < k ||
+ fabs(-c[0] - c[3]) < k ||
+ fabs(-c[1] - c[3]) < k ||
+ fabs(-c[2] - c[3]) < k);
+}
+
+
+
+static int test_cliptest_function( clip_func func, int np,
+ int psize, long *cycles )
+{
+ GLvector4f source[1], dest[1], ref[1];
+ GLubyte dm[TEST_COUNT], dco, dca;
+ GLubyte rm[TEST_COUNT], rco, rca;
+ int i, j;
+#ifdef RUN_DEBUG_BENCHMARK
+ int cycle_i; /* the counter for the benchmarks we run */
+#endif
+ GLboolean viewport_z_clip = GL_TRUE;
+
+ (void) cycles;
+
+ if ( psize > 4 ) {
+ _mesa_problem( NULL, "test_cliptest_function called with psize > 4\n" );
+ return 0;
+ }
+
+ for ( i = 0 ; i < TEST_COUNT ; i++) {
+ ASSIGN_4V( d[i], 0.0, 0.0, 0.0, 1.0 );
+ ASSIGN_4V( s[i], 0.0, 0.0, 0.0, 1.0 );
+ for ( j = 0 ; j < psize ; j++ )
+ s[i][j] = rnd();
+ }
+
+ source->data = (GLfloat(*)[4])s;
+ source->start = (GLfloat *)s;
+ source->count = TEST_COUNT;
+ source->stride = sizeof(s[0]);
+ source->size = 4;
+ source->flags = 0;
+
+ dest->data = (GLfloat(*)[4])d;
+ dest->start = (GLfloat *)d;
+ dest->count = TEST_COUNT;
+ dest->stride = sizeof(float[4]);
+ dest->size = 0;
+ dest->flags = 0;
+
+ ref->data = (GLfloat(*)[4])r;
+ ref->start = (GLfloat *)r;
+ ref->count = TEST_COUNT;
+ ref->stride = sizeof(float[4]);
+ ref->size = 0;
+ ref->flags = 0;
+
+ dco = rco = 0;
+ dca = rca = CLIP_FRUSTUM_BITS;
+
+ ref_cliptest[psize]( source, ref, rm, &rco, &rca, viewport_z_clip );
+
+ if ( mesa_profile ) {
+ BEGIN_RACE( *cycles );
+ func( source, dest, dm, &dco, &dca, viewport_z_clip );
+ END_RACE( *cycles );
+ }
+ else {
+ func( source, dest, dm, &dco, &dca, viewport_z_clip );
+ }
+
+ if ( dco != rco ) {
+ printf( "\n-----------------------------\n" );
+ printf( "dco = 0x%02x rco = 0x%02x\n", dco, rco );
+ return 0;
+ }
+ if ( dca != rca ) {
+ printf( "\n-----------------------------\n" );
+ printf( "dca = 0x%02x rca = 0x%02x\n", dca, rca );
+ return 0;
+ }
+ for ( i = 0 ; i < TEST_COUNT ; i++ ) {
+ if ( dm[i] != rm[i] ) {
+ GLfloat *c = source->start;
+ STRIDE_F(c, source->stride * i);
+ if (psize == 4 && xyz_close_to_w(c)) {
+ /* The coordinate is very close to the clip plane. The clipmask
+ * may vary depending on code path, but that's OK.
+ */
+ continue;
+ }
+ printf( "\n-----------------------------\n" );
+ printf( "mask[%d] = 0x%02x ref mask[%d] = 0x%02x\n", i, dm[i], i,rm[i] );
+ printf(" coord = %f, %f, %f, %f\n",
+ c[0], c[1], c[2], c[3]);
+ return 0;
+ }
+ }
+
+ /* Only verify output on projected points4 case. FIXME: Do we need
+ * to test other cases?
+ */
+ if ( np || psize < 4 )
+ return 1;
+
+ for ( i = 0 ; i < TEST_COUNT ; i++ ) {
+ for ( j = 0 ; j < 4 ; j++ ) {
+ if ( significand_match( d[i][j], r[i][j] ) < REQUIRED_PRECISION ) {
+ printf( "\n-----------------------------\n" );
+ printf( "(i = %i, j = %i) dm = 0x%02x rm = 0x%02x\n",
+ i, j, dm[i], rm[i] );
+ printf( "%f \t %f \t [diff = %e - %i bit missed]\n",
+ d[i][0], r[i][0], r[i][0]-d[i][0],
+ MAX_PRECISION - significand_match( d[i][0], r[i][0] ) );
+ printf( "%f \t %f \t [diff = %e - %i bit missed]\n",
+ d[i][1], r[i][1], r[i][1]-d[i][1],
+ MAX_PRECISION - significand_match( d[i][1], r[i][1] ) );
+ printf( "%f \t %f \t [diff = %e - %i bit missed]\n",
+ d[i][2], r[i][2], r[i][2]-d[i][2],
+ MAX_PRECISION - significand_match( d[i][2], r[i][2] ) );
+ printf( "%f \t %f \t [diff = %e - %i bit missed]\n",
+ d[i][3], r[i][3], r[i][3]-d[i][3],
+ MAX_PRECISION - significand_match( d[i][3], r[i][3] ) );
+ return 0;
+ }
+ }
+ }
+
+ return 1;
+}
+
+void _math_test_all_cliptest_functions( char *description )
+{
+ int np, psize;
+ long benchmark_tab[2][4];
+ static int first_time = 1;
+
+ if ( first_time ) {
+ first_time = 0;
+ mesa_profile = _mesa_getenv( "MESA_PROFILE" );
+ }
+
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile ) {
+ if ( !counter_overhead ) {
+ INIT_COUNTER();
+ printf( "counter overhead: %ld cycles\n\n", counter_overhead );
+ }
+ printf( "cliptest results after hooking in %s functions:\n", description );
+ }
+#endif
+
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile ) {
+ printf( "\n\t" );
+ for ( psize = 2 ; psize <= 4 ; psize++ ) {
+ printf( " p%d\t", psize );
+ }
+ printf( "\n--------------------------------------------------------\n\t" );
+ }
+#endif
+
+ for ( np = 0 ; np < 2 ; np++ ) {
+ for ( psize = 2 ; psize <= 4 ; psize++ ) {
+ clip_func func = clip_tab[np][psize];
+ long *cycles = &(benchmark_tab[np][psize-1]);
+
+ if ( test_cliptest_function( func, np, psize, cycles ) == 0 ) {
+ char buf[100];
+ sprintf( buf, "%s[%d] failed test (%s)",
+ cnames[np], psize, description );
+ _mesa_problem( NULL, "%s", buf );
+ }
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile )
+ printf( " %li\t", benchmark_tab[np][psize-1] );
+#endif
+ }
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile )
+ printf( " | [%s]\n\t", cstrings[np] );
+#endif
+ }
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile )
+ printf( "\n" );
+#endif
+}
+
+
+#endif /* DEBUG_MATH */
diff --git a/mesalib/src/mesa/math/m_debug_norm.c b/mesalib/src/mesa/math/m_debug_norm.c
index eae37c225..02eb1f989 100644
--- a/mesalib/src/mesa/math/m_debug_norm.c
+++ b/mesalib/src/mesa/math/m_debug_norm.c
@@ -1,383 +1,383 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 5.1
- *
- * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Gareth Hughes
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/macros.h"
-#include "main/imports.h"
-
-#include "m_matrix.h"
-#include "m_xform.h"
-
-#include "m_debug.h"
-#include "m_debug_util.h"
-
-
-#ifdef __UNIXOS2__
-/* The linker doesn't like empty files */
-static char dummy;
-#endif
-
-#ifdef DEBUG_MATH /* This code only used for debugging */
-
-
-static int m_norm_identity[16] = {
- ONE, NIL, NIL, NIL,
- NIL, ONE, NIL, NIL,
- NIL, NIL, ONE, NIL,
- NIL, NIL, NIL, NIL
-};
-static int m_norm_general[16] = {
- VAR, VAR, VAR, NIL,
- VAR, VAR, VAR, NIL,
- VAR, VAR, VAR, NIL,
- NIL, NIL, NIL, NIL
-};
-static int m_norm_no_rot[16] = {
- VAR, NIL, NIL, NIL,
- NIL, VAR, NIL, NIL,
- NIL, NIL, VAR, NIL,
- NIL, NIL, NIL, NIL
-};
-static int *norm_templates[8] = {
- m_norm_no_rot,
- m_norm_no_rot,
- m_norm_no_rot,
- m_norm_general,
- m_norm_general,
- m_norm_general,
- m_norm_identity,
- m_norm_identity
-};
-static int norm_types[8] = {
- NORM_TRANSFORM_NO_ROT,
- NORM_TRANSFORM_NO_ROT | NORM_RESCALE,
- NORM_TRANSFORM_NO_ROT | NORM_NORMALIZE,
- NORM_TRANSFORM,
- NORM_TRANSFORM | NORM_RESCALE,
- NORM_TRANSFORM | NORM_NORMALIZE,
- NORM_RESCALE,
- NORM_NORMALIZE
-};
-static int norm_scale_types[8] = { /* rescale factor */
- NIL, /* NIL disables rescaling */
- VAR,
- NIL,
- NIL,
- VAR,
- NIL,
- VAR,
- NIL
-};
-static int norm_normalize_types[8] = { /* normalizing ?? (no = 0) */
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 1
-};
-static char *norm_strings[8] = {
- "NORM_TRANSFORM_NO_ROT",
- "NORM_TRANSFORM_NO_ROT | NORM_RESCALE",
- "NORM_TRANSFORM_NO_ROT | NORM_NORMALIZE",
- "NORM_TRANSFORM",
- "NORM_TRANSFORM | NORM_RESCALE",
- "NORM_TRANSFORM | NORM_NORMALIZE",
- "NORM_RESCALE",
- "NORM_NORMALIZE"
-};
-
-
-/* =============================================================
- * Reference transformations
- */
-
-static void ref_norm_transform_rescale( const GLmatrix *mat,
- GLfloat scale,
- const GLvector4f *in,
- const GLfloat *lengths,
- GLvector4f *dest )
-{
- GLuint i;
- const GLfloat *s = in->start;
- const GLfloat *m = mat->inv;
- GLfloat (*out)[4] = (GLfloat (*)[4]) dest->start;
-
- (void) lengths;
-
- for ( i = 0 ; i < in->count ; i++ ) {
- GLfloat t[3];
-
- TRANSFORM_NORMAL( t, s, m );
- SCALE_SCALAR_3V( out[i], scale, t );
-
- s = (GLfloat *)((char *)s + in->stride);
- }
-}
-
-static void ref_norm_transform_normalize( const GLmatrix *mat,
- GLfloat scale,
- const GLvector4f *in,
- const GLfloat *lengths,
- GLvector4f *dest )
-{
- GLuint i;
- const GLfloat *s = in->start;
- const GLfloat *m = mat->inv;
- GLfloat (*out)[4] = (GLfloat (*)[4]) dest->start;
-
- for ( i = 0 ; i < in->count ; i++ ) {
- GLfloat t[3];
-
- TRANSFORM_NORMAL( t, s, m );
-
- if ( !lengths ) {
- GLfloat len = LEN_SQUARED_3FV( t );
- if ( len > 1e-20 ) {
- /* Hmmm, don't know how we could test the precalculated
- * length case...
- */
- scale = 1.0 / SQRTF( len );
- SCALE_SCALAR_3V( out[i], scale, t );
- } else {
- out[i][0] = out[i][1] = out[i][2] = 0;
- }
- } else {
- scale = lengths[i];;
- SCALE_SCALAR_3V( out[i], scale, t );
- }
-
- s = (GLfloat *)((char *)s + in->stride);
- }
-}
-
-
-/* =============================================================
- * Normal transformation tests
- */
-
-static void init_matrix( GLfloat *m )
-{
- m[0] = 63.0; m[4] = 43.0; m[ 8] = 29.0; m[12] = 43.0;
- m[1] = 55.0; m[5] = 17.0; m[ 9] = 31.0; m[13] = 7.0;
- m[2] = 44.0; m[6] = 9.0; m[10] = 7.0; m[14] = 3.0;
- m[3] = 11.0; m[7] = 23.0; m[11] = 91.0; m[15] = 9.0;
-}
-
-
-static int test_norm_function( normal_func func, int mtype, long *cycles )
-{
- GLvector4f source[1], dest[1], dest2[1], ref[1], ref2[1];
- GLmatrix mat[1];
- GLfloat s[TEST_COUNT][5], d[TEST_COUNT][4], r[TEST_COUNT][4];
- GLfloat d2[TEST_COUNT][4], r2[TEST_COUNT][4], length[TEST_COUNT];
- GLfloat scale;
- GLfloat *m;
- int i, j;
-#ifdef RUN_DEBUG_BENCHMARK
- int cycle_i; /* the counter for the benchmarks we run */
-#endif
-
- (void) cycles;
-
- mat->m = (GLfloat *) _mesa_align_malloc( 16 * sizeof(GLfloat), 16 );
- mat->inv = m = mat->m;
-
- init_matrix( m );
-
- scale = 1.0F + rnd () * norm_scale_types[mtype];
-
- for ( i = 0 ; i < 4 ; i++ ) {
- for ( j = 0 ; j < 4 ; j++ ) {
- switch ( norm_templates[mtype][i * 4 + j] ) {
- case NIL:
- m[j * 4 + i] = 0.0;
- break;
- case ONE:
- m[j * 4 + i] = 1.0;
- break;
- case NEG:
- m[j * 4 + i] = -1.0;
- break;
- case VAR:
- break;
- default:
- exit(1);
- }
- }
- }
-
- for ( i = 0 ; i < TEST_COUNT ; i++ ) {
- ASSIGN_3V( d[i], 0.0, 0.0, 0.0 );
- ASSIGN_3V( s[i], 0.0, 0.0, 0.0 );
- ASSIGN_3V( d2[i], 0.0, 0.0, 0.0 );
- for ( j = 0 ; j < 3 ; j++ )
- s[i][j] = rnd();
- length[i] = 1 / SQRTF( LEN_SQUARED_3FV( s[i] ) );
- }
-
- source->data = (GLfloat(*)[4]) s;
- source->start = (GLfloat *) s;
- source->count = TEST_COUNT;
- source->stride = sizeof(s[0]);
- source->flags = 0;
-
- dest->data = d;
- dest->start = (GLfloat *) d;
- dest->count = TEST_COUNT;
- dest->stride = sizeof(float[4]);
- dest->flags = 0;
-
- dest2->data = d2;
- dest2->start = (GLfloat *) d2;
- dest2->count = TEST_COUNT;
- dest2->stride = sizeof(float[4]);
- dest2->flags = 0;
-
- ref->data = r;
- ref->start = (GLfloat *) r;
- ref->count = TEST_COUNT;
- ref->stride = sizeof(float[4]);
- ref->flags = 0;
-
- ref2->data = r2;
- ref2->start = (GLfloat *) r2;
- ref2->count = TEST_COUNT;
- ref2->stride = sizeof(float[4]);
- ref2->flags = 0;
-
- if ( norm_normalize_types[mtype] == 0 ) {
- ref_norm_transform_rescale( mat, scale, source, NULL, ref );
- } else {
- ref_norm_transform_normalize( mat, scale, source, NULL, ref );
- ref_norm_transform_normalize( mat, scale, source, length, ref2 );
- }
-
- if ( mesa_profile ) {
- BEGIN_RACE( *cycles );
- func( mat, scale, source, NULL, dest );
- END_RACE( *cycles );
- func( mat, scale, source, length, dest2 );
- } else {
- func( mat, scale, source, NULL, dest );
- func( mat, scale, source, length, dest2 );
- }
-
- for ( i = 0 ; i < TEST_COUNT ; i++ ) {
- for ( j = 0 ; j < 3 ; j++ ) {
- if ( significand_match( d[i][j], r[i][j] ) < REQUIRED_PRECISION ) {
- printf( "-----------------------------\n" );
- printf( "(i = %i, j = %i)\n", i, j );
- printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
- d[i][0], r[i][0], r[i][0]/d[i][0],
- MAX_PRECISION - significand_match( d[i][0], r[i][0] ) );
- printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
- d[i][1], r[i][1], r[i][1]/d[i][1],
- MAX_PRECISION - significand_match( d[i][1], r[i][1] ) );
- printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
- d[i][2], r[i][2], r[i][2]/d[i][2],
- MAX_PRECISION - significand_match( d[i][2], r[i][2] ) );
- return 0;
- }
-
- if ( norm_normalize_types[mtype] != 0 ) {
- if ( significand_match( d2[i][j], r2[i][j] ) < REQUIRED_PRECISION ) {
- printf( "------------------- precalculated length case ------\n" );
- printf( "(i = %i, j = %i)\n", i, j );
- printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
- d2[i][0], r2[i][0], r2[i][0]/d2[i][0],
- MAX_PRECISION - significand_match( d2[i][0], r2[i][0] ) );
- printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
- d2[i][1], r2[i][1], r2[i][1]/d2[i][1],
- MAX_PRECISION - significand_match( d2[i][1], r2[i][1] ) );
- printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
- d2[i][2], r2[i][2], r2[i][2]/d2[i][2],
- MAX_PRECISION - significand_match( d2[i][2], r2[i][2] ) );
- return 0;
- }
- }
- }
- }
-
- _mesa_align_free( mat->m );
- return 1;
-}
-
-void _math_test_all_normal_transform_functions( char *description )
-{
- int mtype;
- long benchmark_tab[0xf];
- static int first_time = 1;
-
- if ( first_time ) {
- first_time = 0;
- mesa_profile = _mesa_getenv( "MESA_PROFILE" );
- }
-
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile ) {
- if ( !counter_overhead ) {
- INIT_COUNTER();
- printf( "counter overhead: %ld cycles\n\n", counter_overhead );
- }
- printf( "normal transform results after hooking in %s functions:\n",
- description );
- printf( "\n-------------------------------------------------------\n" );
- }
-#endif
-
- for ( mtype = 0 ; mtype < 8 ; mtype++ ) {
- normal_func func = _mesa_normal_tab[norm_types[mtype]];
- long *cycles = &benchmark_tab[mtype];
-
- if ( test_norm_function( func, mtype, cycles ) == 0 ) {
- char buf[100];
- sprintf( buf, "_mesa_normal_tab[0][%s] failed test (%s)",
- norm_strings[mtype], description );
- _mesa_problem( NULL, "%s", buf );
- }
-
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile ) {
- printf( " %li\t", benchmark_tab[mtype] );
- printf( " | [%s]\n", norm_strings[mtype] );
- }
-#endif
- }
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile ) {
- printf( "\n" );
- }
-#endif
-}
-
-
-#endif /* DEBUG_MATH */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 5.1
+ *
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Gareth Hughes
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/macros.h"
+#include "main/imports.h"
+
+#include "m_matrix.h"
+#include "m_xform.h"
+
+#include "m_debug.h"
+#include "m_debug_util.h"
+
+
+#ifdef __UNIXOS2__
+/* The linker doesn't like empty files */
+static char dummy;
+#endif
+
+#ifdef DEBUG_MATH /* This code only used for debugging */
+
+
+static int m_norm_identity[16] = {
+ ONE, NIL, NIL, NIL,
+ NIL, ONE, NIL, NIL,
+ NIL, NIL, ONE, NIL,
+ NIL, NIL, NIL, NIL
+};
+static int m_norm_general[16] = {
+ VAR, VAR, VAR, NIL,
+ VAR, VAR, VAR, NIL,
+ VAR, VAR, VAR, NIL,
+ NIL, NIL, NIL, NIL
+};
+static int m_norm_no_rot[16] = {
+ VAR, NIL, NIL, NIL,
+ NIL, VAR, NIL, NIL,
+ NIL, NIL, VAR, NIL,
+ NIL, NIL, NIL, NIL
+};
+static int *norm_templates[8] = {
+ m_norm_no_rot,
+ m_norm_no_rot,
+ m_norm_no_rot,
+ m_norm_general,
+ m_norm_general,
+ m_norm_general,
+ m_norm_identity,
+ m_norm_identity
+};
+static int norm_types[8] = {
+ NORM_TRANSFORM_NO_ROT,
+ NORM_TRANSFORM_NO_ROT | NORM_RESCALE,
+ NORM_TRANSFORM_NO_ROT | NORM_NORMALIZE,
+ NORM_TRANSFORM,
+ NORM_TRANSFORM | NORM_RESCALE,
+ NORM_TRANSFORM | NORM_NORMALIZE,
+ NORM_RESCALE,
+ NORM_NORMALIZE
+};
+static int norm_scale_types[8] = { /* rescale factor */
+ NIL, /* NIL disables rescaling */
+ VAR,
+ NIL,
+ NIL,
+ VAR,
+ NIL,
+ VAR,
+ NIL
+};
+static int norm_normalize_types[8] = { /* normalizing ?? (no = 0) */
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 1
+};
+static char *norm_strings[8] = {
+ "NORM_TRANSFORM_NO_ROT",
+ "NORM_TRANSFORM_NO_ROT | NORM_RESCALE",
+ "NORM_TRANSFORM_NO_ROT | NORM_NORMALIZE",
+ "NORM_TRANSFORM",
+ "NORM_TRANSFORM | NORM_RESCALE",
+ "NORM_TRANSFORM | NORM_NORMALIZE",
+ "NORM_RESCALE",
+ "NORM_NORMALIZE"
+};
+
+
+/* =============================================================
+ * Reference transformations
+ */
+
+static void ref_norm_transform_rescale( const GLmatrix *mat,
+ GLfloat scale,
+ const GLvector4f *in,
+ const GLfloat *lengths,
+ GLvector4f *dest )
+{
+ GLuint i;
+ const GLfloat *s = in->start;
+ const GLfloat *m = mat->inv;
+ GLfloat (*out)[4] = (GLfloat (*)[4]) dest->start;
+
+ (void) lengths;
+
+ for ( i = 0 ; i < in->count ; i++ ) {
+ GLfloat t[3];
+
+ TRANSFORM_NORMAL( t, s, m );
+ SCALE_SCALAR_3V( out[i], scale, t );
+
+ s = (GLfloat *)((char *)s + in->stride);
+ }
+}
+
+static void ref_norm_transform_normalize( const GLmatrix *mat,
+ GLfloat scale,
+ const GLvector4f *in,
+ const GLfloat *lengths,
+ GLvector4f *dest )
+{
+ GLuint i;
+ const GLfloat *s = in->start;
+ const GLfloat *m = mat->inv;
+ GLfloat (*out)[4] = (GLfloat (*)[4]) dest->start;
+
+ for ( i = 0 ; i < in->count ; i++ ) {
+ GLfloat t[3];
+
+ TRANSFORM_NORMAL( t, s, m );
+
+ if ( !lengths ) {
+ GLfloat len = LEN_SQUARED_3FV( t );
+ if ( len > 1e-20 ) {
+ /* Hmmm, don't know how we could test the precalculated
+ * length case...
+ */
+ scale = 1.0 / SQRTF( len );
+ SCALE_SCALAR_3V( out[i], scale, t );
+ } else {
+ out[i][0] = out[i][1] = out[i][2] = 0;
+ }
+ } else {
+ scale = lengths[i];;
+ SCALE_SCALAR_3V( out[i], scale, t );
+ }
+
+ s = (GLfloat *)((char *)s + in->stride);
+ }
+}
+
+
+/* =============================================================
+ * Normal transformation tests
+ */
+
+static void init_matrix( GLfloat *m )
+{
+ m[0] = 63.0; m[4] = 43.0; m[ 8] = 29.0; m[12] = 43.0;
+ m[1] = 55.0; m[5] = 17.0; m[ 9] = 31.0; m[13] = 7.0;
+ m[2] = 44.0; m[6] = 9.0; m[10] = 7.0; m[14] = 3.0;
+ m[3] = 11.0; m[7] = 23.0; m[11] = 91.0; m[15] = 9.0;
+}
+
+
+static int test_norm_function( normal_func func, int mtype, long *cycles )
+{
+ GLvector4f source[1], dest[1], dest2[1], ref[1], ref2[1];
+ GLmatrix mat[1];
+ GLfloat s[TEST_COUNT][5], d[TEST_COUNT][4], r[TEST_COUNT][4];
+ GLfloat d2[TEST_COUNT][4], r2[TEST_COUNT][4], length[TEST_COUNT];
+ GLfloat scale;
+ GLfloat *m;
+ int i, j;
+#ifdef RUN_DEBUG_BENCHMARK
+ int cycle_i; /* the counter for the benchmarks we run */
+#endif
+
+ (void) cycles;
+
+ mat->m = (GLfloat *) _mesa_align_malloc( 16 * sizeof(GLfloat), 16 );
+ mat->inv = m = mat->m;
+
+ init_matrix( m );
+
+ scale = 1.0F + rnd () * norm_scale_types[mtype];
+
+ for ( i = 0 ; i < 4 ; i++ ) {
+ for ( j = 0 ; j < 4 ; j++ ) {
+ switch ( norm_templates[mtype][i * 4 + j] ) {
+ case NIL:
+ m[j * 4 + i] = 0.0;
+ break;
+ case ONE:
+ m[j * 4 + i] = 1.0;
+ break;
+ case NEG:
+ m[j * 4 + i] = -1.0;
+ break;
+ case VAR:
+ break;
+ default:
+ exit(1);
+ }
+ }
+ }
+
+ for ( i = 0 ; i < TEST_COUNT ; i++ ) {
+ ASSIGN_3V( d[i], 0.0, 0.0, 0.0 );
+ ASSIGN_3V( s[i], 0.0, 0.0, 0.0 );
+ ASSIGN_3V( d2[i], 0.0, 0.0, 0.0 );
+ for ( j = 0 ; j < 3 ; j++ )
+ s[i][j] = rnd();
+ length[i] = 1 / SQRTF( LEN_SQUARED_3FV( s[i] ) );
+ }
+
+ source->data = (GLfloat(*)[4]) s;
+ source->start = (GLfloat *) s;
+ source->count = TEST_COUNT;
+ source->stride = sizeof(s[0]);
+ source->flags = 0;
+
+ dest->data = d;
+ dest->start = (GLfloat *) d;
+ dest->count = TEST_COUNT;
+ dest->stride = sizeof(float[4]);
+ dest->flags = 0;
+
+ dest2->data = d2;
+ dest2->start = (GLfloat *) d2;
+ dest2->count = TEST_COUNT;
+ dest2->stride = sizeof(float[4]);
+ dest2->flags = 0;
+
+ ref->data = r;
+ ref->start = (GLfloat *) r;
+ ref->count = TEST_COUNT;
+ ref->stride = sizeof(float[4]);
+ ref->flags = 0;
+
+ ref2->data = r2;
+ ref2->start = (GLfloat *) r2;
+ ref2->count = TEST_COUNT;
+ ref2->stride = sizeof(float[4]);
+ ref2->flags = 0;
+
+ if ( norm_normalize_types[mtype] == 0 ) {
+ ref_norm_transform_rescale( mat, scale, source, NULL, ref );
+ } else {
+ ref_norm_transform_normalize( mat, scale, source, NULL, ref );
+ ref_norm_transform_normalize( mat, scale, source, length, ref2 );
+ }
+
+ if ( mesa_profile ) {
+ BEGIN_RACE( *cycles );
+ func( mat, scale, source, NULL, dest );
+ END_RACE( *cycles );
+ func( mat, scale, source, length, dest2 );
+ } else {
+ func( mat, scale, source, NULL, dest );
+ func( mat, scale, source, length, dest2 );
+ }
+
+ for ( i = 0 ; i < TEST_COUNT ; i++ ) {
+ for ( j = 0 ; j < 3 ; j++ ) {
+ if ( significand_match( d[i][j], r[i][j] ) < REQUIRED_PRECISION ) {
+ printf( "-----------------------------\n" );
+ printf( "(i = %i, j = %i)\n", i, j );
+ printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
+ d[i][0], r[i][0], r[i][0]/d[i][0],
+ MAX_PRECISION - significand_match( d[i][0], r[i][0] ) );
+ printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
+ d[i][1], r[i][1], r[i][1]/d[i][1],
+ MAX_PRECISION - significand_match( d[i][1], r[i][1] ) );
+ printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
+ d[i][2], r[i][2], r[i][2]/d[i][2],
+ MAX_PRECISION - significand_match( d[i][2], r[i][2] ) );
+ return 0;
+ }
+
+ if ( norm_normalize_types[mtype] != 0 ) {
+ if ( significand_match( d2[i][j], r2[i][j] ) < REQUIRED_PRECISION ) {
+ printf( "------------------- precalculated length case ------\n" );
+ printf( "(i = %i, j = %i)\n", i, j );
+ printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
+ d2[i][0], r2[i][0], r2[i][0]/d2[i][0],
+ MAX_PRECISION - significand_match( d2[i][0], r2[i][0] ) );
+ printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
+ d2[i][1], r2[i][1], r2[i][1]/d2[i][1],
+ MAX_PRECISION - significand_match( d2[i][1], r2[i][1] ) );
+ printf( "%f \t %f \t [ratio = %e - %i bit missed]\n",
+ d2[i][2], r2[i][2], r2[i][2]/d2[i][2],
+ MAX_PRECISION - significand_match( d2[i][2], r2[i][2] ) );
+ return 0;
+ }
+ }
+ }
+ }
+
+ _mesa_align_free( mat->m );
+ return 1;
+}
+
+void _math_test_all_normal_transform_functions( char *description )
+{
+ int mtype;
+ long benchmark_tab[0xf];
+ static int first_time = 1;
+
+ if ( first_time ) {
+ first_time = 0;
+ mesa_profile = _mesa_getenv( "MESA_PROFILE" );
+ }
+
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile ) {
+ if ( !counter_overhead ) {
+ INIT_COUNTER();
+ printf( "counter overhead: %ld cycles\n\n", counter_overhead );
+ }
+ printf( "normal transform results after hooking in %s functions:\n",
+ description );
+ printf( "\n-------------------------------------------------------\n" );
+ }
+#endif
+
+ for ( mtype = 0 ; mtype < 8 ; mtype++ ) {
+ normal_func func = _mesa_normal_tab[norm_types[mtype]];
+ long *cycles = &benchmark_tab[mtype];
+
+ if ( test_norm_function( func, mtype, cycles ) == 0 ) {
+ char buf[100];
+ sprintf( buf, "_mesa_normal_tab[0][%s] failed test (%s)",
+ norm_strings[mtype], description );
+ _mesa_problem( NULL, "%s", buf );
+ }
+
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile ) {
+ printf( " %li\t", benchmark_tab[mtype] );
+ printf( " | [%s]\n", norm_strings[mtype] );
+ }
+#endif
+ }
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile ) {
+ printf( "\n" );
+ }
+#endif
+}
+
+
+#endif /* DEBUG_MATH */
diff --git a/mesalib/src/mesa/math/m_debug_xform.c b/mesalib/src/mesa/math/m_debug_xform.c
index 0de43195c..7d815664a 100644
--- a/mesalib/src/mesa/math/m_debug_xform.c
+++ b/mesalib/src/mesa/math/m_debug_xform.c
@@ -1,339 +1,339 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.1
- *
- * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * Updated for P6 architecture by Gareth Hughes.
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/macros.h"
-#include "main/imports.h"
-
-#include "m_matrix.h"
-#include "m_xform.h"
-
-#include "m_debug.h"
-#include "m_debug_util.h"
-
-#ifdef __UNIXOS2__
-/* The linker doesn't like empty files */
-static char dummy;
-#endif
-
-#ifdef DEBUG_MATH /* This code only used for debugging */
-
-
-/* Overhead of profiling counter in cycles. Automatically adjusted to
- * your machine at run time - counter initialization should give very
- * consistent results.
- */
-long counter_overhead = 0;
-
-/* This is the value of the environment variable MESA_PROFILE, and is
- * used to determine if we should benchmark the functions as well as
- * verify their correctness.
- */
-char *mesa_profile = NULL;
-
-
-static int m_general[16] = {
- VAR, VAR, VAR, VAR,
- VAR, VAR, VAR, VAR,
- VAR, VAR, VAR, VAR,
- VAR, VAR, VAR, VAR
-};
-static int m_identity[16] = {
- ONE, NIL, NIL, NIL,
- NIL, ONE, NIL, NIL,
- NIL, NIL, ONE, NIL,
- NIL, NIL, NIL, ONE
-};
-static int m_2d[16] = {
- VAR, VAR, NIL, VAR,
- VAR, VAR, NIL, VAR,
- NIL, NIL, ONE, NIL,
- NIL, NIL, NIL, ONE
-};
-static int m_2d_no_rot[16] = {
- VAR, NIL, NIL, VAR,
- NIL, VAR, NIL, VAR,
- NIL, NIL, ONE, NIL,
- NIL, NIL, NIL, ONE
-};
-static int m_3d[16] = {
- VAR, VAR, VAR, VAR,
- VAR, VAR, VAR, VAR,
- VAR, VAR, VAR, VAR,
- NIL, NIL, NIL, ONE
-};
-static int m_3d_no_rot[16] = {
- VAR, NIL, NIL, VAR,
- NIL, VAR, NIL, VAR,
- NIL, NIL, VAR, VAR,
- NIL, NIL, NIL, ONE
-};
-static int m_perspective[16] = {
- VAR, NIL, VAR, NIL,
- NIL, VAR, VAR, NIL,
- NIL, NIL, VAR, VAR,
- NIL, NIL, NEG, NIL
-};
-static int *templates[7] = {
- m_general,
- m_identity,
- m_3d_no_rot,
- m_perspective,
- m_2d,
- m_2d_no_rot,
- m_3d
-};
-static enum GLmatrixtype mtypes[7] = {
- MATRIX_GENERAL,
- MATRIX_IDENTITY,
- MATRIX_3D_NO_ROT,
- MATRIX_PERSPECTIVE,
- MATRIX_2D,
- MATRIX_2D_NO_ROT,
- MATRIX_3D
-};
-static char *mstrings[7] = {
- "MATRIX_GENERAL",
- "MATRIX_IDENTITY",
- "MATRIX_3D_NO_ROT",
- "MATRIX_PERSPECTIVE",
- "MATRIX_2D",
- "MATRIX_2D_NO_ROT",
- "MATRIX_3D"
-};
-
-
-/* =============================================================
- * Reference transformations
- */
-
-static void ref_transform( GLvector4f *dst,
- const GLmatrix *mat,
- const GLvector4f *src )
-{
- GLuint i;
- GLfloat *s = (GLfloat *)src->start;
- GLfloat (*d)[4] = (GLfloat (*)[4])dst->start;
- const GLfloat *m = mat->m;
-
- for ( i = 0 ; i < src->count ; i++ ) {
- TRANSFORM_POINT( d[i], m, s );
- s = (GLfloat *)((char *)s + src->stride);
- }
-}
-
-
-/* =============================================================
- * Vertex transformation tests
- */
-
-static void init_matrix( GLfloat *m )
-{
- m[0] = 63.0; m[4] = 43.0; m[ 8] = 29.0; m[12] = 43.0;
- m[1] = 55.0; m[5] = 17.0; m[ 9] = 31.0; m[13] = 7.0;
- m[2] = 44.0; m[6] = 9.0; m[10] = 7.0; m[14] = 3.0;
- m[3] = 11.0; m[7] = 23.0; m[11] = 91.0; m[15] = 9.0;
-}
-
-ALIGN16(static GLfloat, s[TEST_COUNT][4]);
-ALIGN16(static GLfloat, d[TEST_COUNT][4]);
-ALIGN16(static GLfloat, r[TEST_COUNT][4]);
-
-static int test_transform_function( transform_func func, int psize,
- int mtype, unsigned long *cycles )
-{
- GLvector4f source[1], dest[1], ref[1];
- GLmatrix mat[1];
- GLfloat *m;
- int i, j;
-#ifdef RUN_DEBUG_BENCHMARK
- int cycle_i; /* the counter for the benchmarks we run */
-#endif
-
- (void) cycles;
-
- if ( psize > 4 ) {
- _mesa_problem( NULL, "test_transform_function called with psize > 4\n" );
- return 0;
- }
-
- mat->m = (GLfloat *) _mesa_align_malloc( 16 * sizeof(GLfloat), 16 );
- mat->type = mtypes[mtype];
-
- m = mat->m;
- ASSERT( ((long)m & 15) == 0 );
-
- init_matrix( m );
-
- for ( i = 0 ; i < 4 ; i++ ) {
- for ( j = 0 ; j < 4 ; j++ ) {
- switch ( templates[mtype][i * 4 + j] ) {
- case NIL:
- m[j * 4 + i] = 0.0;
- break;
- case ONE:
- m[j * 4 + i] = 1.0;
- break;
- case NEG:
- m[j * 4 + i] = -1.0;
- break;
- case VAR:
- break;
- default:
- ASSERT(0);
- return 0;
- }
- }
- }
-
- for ( i = 0 ; i < TEST_COUNT ; i++) {
- ASSIGN_4V( d[i], 0.0, 0.0, 0.0, 1.0 );
- ASSIGN_4V( s[i], 0.0, 0.0, 0.0, 1.0 );
- for ( j = 0 ; j < psize ; j++ )
- s[i][j] = rnd();
- }
-
- source->data = (GLfloat(*)[4])s;
- source->start = (GLfloat *)s;
- source->count = TEST_COUNT;
- source->stride = sizeof(s[0]);
- source->size = 4;
- source->flags = 0;
-
- dest->data = (GLfloat(*)[4])d;
- dest->start = (GLfloat *)d;
- dest->count = TEST_COUNT;
- dest->stride = sizeof(float[4]);
- dest->size = 0;
- dest->flags = 0;
-
- ref->data = (GLfloat(*)[4])r;
- ref->start = (GLfloat *)r;
- ref->count = TEST_COUNT;
- ref->stride = sizeof(float[4]);
- ref->size = 0;
- ref->flags = 0;
-
- ref_transform( ref, mat, source );
-
- if ( mesa_profile ) {
- BEGIN_RACE( *cycles );
- func( dest, mat->m, source );
- END_RACE( *cycles );
- }
- else {
- func( dest, mat->m, source );
- }
-
- for ( i = 0 ; i < TEST_COUNT ; i++ ) {
- for ( j = 0 ; j < 4 ; j++ ) {
- if ( significand_match( d[i][j], r[i][j] ) < REQUIRED_PRECISION ) {
- printf("-----------------------------\n" );
- printf("(i = %i, j = %i)\n", i, j );
- printf("%f \t %f \t [diff = %e - %i bit missed]\n",
- d[i][0], r[i][0], r[i][0]-d[i][0],
- MAX_PRECISION - significand_match( d[i][0], r[i][0] ) );
- printf("%f \t %f \t [diff = %e - %i bit missed]\n",
- d[i][1], r[i][1], r[i][1]-d[i][1],
- MAX_PRECISION - significand_match( d[i][1], r[i][1] ) );
- printf("%f \t %f \t [diff = %e - %i bit missed]\n",
- d[i][2], r[i][2], r[i][2]-d[i][2],
- MAX_PRECISION - significand_match( d[i][2], r[i][2] ) );
- printf("%f \t %f \t [diff = %e - %i bit missed]\n",
- d[i][3], r[i][3], r[i][3]-d[i][3],
- MAX_PRECISION - significand_match( d[i][3], r[i][3] ) );
- return 0;
- }
- }
- }
-
- _mesa_align_free( mat->m );
- return 1;
-}
-
-void _math_test_all_transform_functions( char *description )
-{
- int psize, mtype;
- unsigned long benchmark_tab[4][7];
- static int first_time = 1;
-
- if ( first_time ) {
- first_time = 0;
- mesa_profile = _mesa_getenv( "MESA_PROFILE" );
- }
-
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile ) {
- if ( !counter_overhead ) {
- INIT_COUNTER();
- printf("counter overhead: %lu cycles\n\n", counter_overhead );
- }
- printf("transform results after hooking in %s functions:\n", description );
- }
-#endif
-
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile ) {
- printf("\n" );
- for ( psize = 1 ; psize <= 4 ; psize++ ) {
- printf(" p%d\t", psize );
- }
- printf("\n--------------------------------------------------------\n" );
- }
-#endif
-
- for ( mtype = 0 ; mtype < 7 ; mtype++ ) {
- for ( psize = 1 ; psize <= 4 ; psize++ ) {
- transform_func func = _mesa_transform_tab[psize][mtypes[mtype]];
- unsigned long *cycles = &(benchmark_tab[psize-1][mtype]);
-
- if ( test_transform_function( func, psize, mtype, cycles ) == 0 ) {
- char buf[100];
- sprintf(buf, "_mesa_transform_tab[0][%d][%s] failed test (%s)",
- psize, mstrings[mtype], description );
- _mesa_problem( NULL, "%s", buf );
- }
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile )
- printf(" %li\t", benchmark_tab[psize-1][mtype] );
-#endif
- }
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile )
- printf(" | [%s]\n", mstrings[mtype] );
-#endif
- }
-#ifdef RUN_DEBUG_BENCHMARK
- if ( mesa_profile )
- printf( "\n" );
-#endif
-}
-
-
-#endif /* DEBUG_MATH */
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.1
+ *
+ * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * Updated for P6 architecture by Gareth Hughes.
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/macros.h"
+#include "main/imports.h"
+
+#include "m_matrix.h"
+#include "m_xform.h"
+
+#include "m_debug.h"
+#include "m_debug_util.h"
+
+#ifdef __UNIXOS2__
+/* The linker doesn't like empty files */
+static char dummy;
+#endif
+
+#ifdef DEBUG_MATH /* This code only used for debugging */
+
+
+/* Overhead of profiling counter in cycles. Automatically adjusted to
+ * your machine at run time - counter initialization should give very
+ * consistent results.
+ */
+long counter_overhead = 0;
+
+/* This is the value of the environment variable MESA_PROFILE, and is
+ * used to determine if we should benchmark the functions as well as
+ * verify their correctness.
+ */
+char *mesa_profile = NULL;
+
+
+static int m_general[16] = {
+ VAR, VAR, VAR, VAR,
+ VAR, VAR, VAR, VAR,
+ VAR, VAR, VAR, VAR,
+ VAR, VAR, VAR, VAR
+};
+static int m_identity[16] = {
+ ONE, NIL, NIL, NIL,
+ NIL, ONE, NIL, NIL,
+ NIL, NIL, ONE, NIL,
+ NIL, NIL, NIL, ONE
+};
+static int m_2d[16] = {
+ VAR, VAR, NIL, VAR,
+ VAR, VAR, NIL, VAR,
+ NIL, NIL, ONE, NIL,
+ NIL, NIL, NIL, ONE
+};
+static int m_2d_no_rot[16] = {
+ VAR, NIL, NIL, VAR,
+ NIL, VAR, NIL, VAR,
+ NIL, NIL, ONE, NIL,
+ NIL, NIL, NIL, ONE
+};
+static int m_3d[16] = {
+ VAR, VAR, VAR, VAR,
+ VAR, VAR, VAR, VAR,
+ VAR, VAR, VAR, VAR,
+ NIL, NIL, NIL, ONE
+};
+static int m_3d_no_rot[16] = {
+ VAR, NIL, NIL, VAR,
+ NIL, VAR, NIL, VAR,
+ NIL, NIL, VAR, VAR,
+ NIL, NIL, NIL, ONE
+};
+static int m_perspective[16] = {
+ VAR, NIL, VAR, NIL,
+ NIL, VAR, VAR, NIL,
+ NIL, NIL, VAR, VAR,
+ NIL, NIL, NEG, NIL
+};
+static int *templates[7] = {
+ m_general,
+ m_identity,
+ m_3d_no_rot,
+ m_perspective,
+ m_2d,
+ m_2d_no_rot,
+ m_3d
+};
+static enum GLmatrixtype mtypes[7] = {
+ MATRIX_GENERAL,
+ MATRIX_IDENTITY,
+ MATRIX_3D_NO_ROT,
+ MATRIX_PERSPECTIVE,
+ MATRIX_2D,
+ MATRIX_2D_NO_ROT,
+ MATRIX_3D
+};
+static char *mstrings[7] = {
+ "MATRIX_GENERAL",
+ "MATRIX_IDENTITY",
+ "MATRIX_3D_NO_ROT",
+ "MATRIX_PERSPECTIVE",
+ "MATRIX_2D",
+ "MATRIX_2D_NO_ROT",
+ "MATRIX_3D"
+};
+
+
+/* =============================================================
+ * Reference transformations
+ */
+
+static void ref_transform( GLvector4f *dst,
+ const GLmatrix *mat,
+ const GLvector4f *src )
+{
+ GLuint i;
+ GLfloat *s = (GLfloat *)src->start;
+ GLfloat (*d)[4] = (GLfloat (*)[4])dst->start;
+ const GLfloat *m = mat->m;
+
+ for ( i = 0 ; i < src->count ; i++ ) {
+ TRANSFORM_POINT( d[i], m, s );
+ s = (GLfloat *)((char *)s + src->stride);
+ }
+}
+
+
+/* =============================================================
+ * Vertex transformation tests
+ */
+
+static void init_matrix( GLfloat *m )
+{
+ m[0] = 63.0; m[4] = 43.0; m[ 8] = 29.0; m[12] = 43.0;
+ m[1] = 55.0; m[5] = 17.0; m[ 9] = 31.0; m[13] = 7.0;
+ m[2] = 44.0; m[6] = 9.0; m[10] = 7.0; m[14] = 3.0;
+ m[3] = 11.0; m[7] = 23.0; m[11] = 91.0; m[15] = 9.0;
+}
+
+ALIGN16(static GLfloat, s[TEST_COUNT][4]);
+ALIGN16(static GLfloat, d[TEST_COUNT][4]);
+ALIGN16(static GLfloat, r[TEST_COUNT][4]);
+
+static int test_transform_function( transform_func func, int psize,
+ int mtype, unsigned long *cycles )
+{
+ GLvector4f source[1], dest[1], ref[1];
+ GLmatrix mat[1];
+ GLfloat *m;
+ int i, j;
+#ifdef RUN_DEBUG_BENCHMARK
+ int cycle_i; /* the counter for the benchmarks we run */
+#endif
+
+ (void) cycles;
+
+ if ( psize > 4 ) {
+ _mesa_problem( NULL, "test_transform_function called with psize > 4\n" );
+ return 0;
+ }
+
+ mat->m = (GLfloat *) _mesa_align_malloc( 16 * sizeof(GLfloat), 16 );
+ mat->type = mtypes[mtype];
+
+ m = mat->m;
+ ASSERT( ((long)m & 15) == 0 );
+
+ init_matrix( m );
+
+ for ( i = 0 ; i < 4 ; i++ ) {
+ for ( j = 0 ; j < 4 ; j++ ) {
+ switch ( templates[mtype][i * 4 + j] ) {
+ case NIL:
+ m[j * 4 + i] = 0.0;
+ break;
+ case ONE:
+ m[j * 4 + i] = 1.0;
+ break;
+ case NEG:
+ m[j * 4 + i] = -1.0;
+ break;
+ case VAR:
+ break;
+ default:
+ ASSERT(0);
+ return 0;
+ }
+ }
+ }
+
+ for ( i = 0 ; i < TEST_COUNT ; i++) {
+ ASSIGN_4V( d[i], 0.0, 0.0, 0.0, 1.0 );
+ ASSIGN_4V( s[i], 0.0, 0.0, 0.0, 1.0 );
+ for ( j = 0 ; j < psize ; j++ )
+ s[i][j] = rnd();
+ }
+
+ source->data = (GLfloat(*)[4])s;
+ source->start = (GLfloat *)s;
+ source->count = TEST_COUNT;
+ source->stride = sizeof(s[0]);
+ source->size = 4;
+ source->flags = 0;
+
+ dest->data = (GLfloat(*)[4])d;
+ dest->start = (GLfloat *)d;
+ dest->count = TEST_COUNT;
+ dest->stride = sizeof(float[4]);
+ dest->size = 0;
+ dest->flags = 0;
+
+ ref->data = (GLfloat(*)[4])r;
+ ref->start = (GLfloat *)r;
+ ref->count = TEST_COUNT;
+ ref->stride = sizeof(float[4]);
+ ref->size = 0;
+ ref->flags = 0;
+
+ ref_transform( ref, mat, source );
+
+ if ( mesa_profile ) {
+ BEGIN_RACE( *cycles );
+ func( dest, mat->m, source );
+ END_RACE( *cycles );
+ }
+ else {
+ func( dest, mat->m, source );
+ }
+
+ for ( i = 0 ; i < TEST_COUNT ; i++ ) {
+ for ( j = 0 ; j < 4 ; j++ ) {
+ if ( significand_match( d[i][j], r[i][j] ) < REQUIRED_PRECISION ) {
+ printf("-----------------------------\n" );
+ printf("(i = %i, j = %i)\n", i, j );
+ printf("%f \t %f \t [diff = %e - %i bit missed]\n",
+ d[i][0], r[i][0], r[i][0]-d[i][0],
+ MAX_PRECISION - significand_match( d[i][0], r[i][0] ) );
+ printf("%f \t %f \t [diff = %e - %i bit missed]\n",
+ d[i][1], r[i][1], r[i][1]-d[i][1],
+ MAX_PRECISION - significand_match( d[i][1], r[i][1] ) );
+ printf("%f \t %f \t [diff = %e - %i bit missed]\n",
+ d[i][2], r[i][2], r[i][2]-d[i][2],
+ MAX_PRECISION - significand_match( d[i][2], r[i][2] ) );
+ printf("%f \t %f \t [diff = %e - %i bit missed]\n",
+ d[i][3], r[i][3], r[i][3]-d[i][3],
+ MAX_PRECISION - significand_match( d[i][3], r[i][3] ) );
+ return 0;
+ }
+ }
+ }
+
+ _mesa_align_free( mat->m );
+ return 1;
+}
+
+void _math_test_all_transform_functions( char *description )
+{
+ int psize, mtype;
+ unsigned long benchmark_tab[4][7];
+ static int first_time = 1;
+
+ if ( first_time ) {
+ first_time = 0;
+ mesa_profile = _mesa_getenv( "MESA_PROFILE" );
+ }
+
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile ) {
+ if ( !counter_overhead ) {
+ INIT_COUNTER();
+ printf("counter overhead: %lu cycles\n\n", counter_overhead );
+ }
+ printf("transform results after hooking in %s functions:\n", description );
+ }
+#endif
+
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile ) {
+ printf("\n" );
+ for ( psize = 1 ; psize <= 4 ; psize++ ) {
+ printf(" p%d\t", psize );
+ }
+ printf("\n--------------------------------------------------------\n" );
+ }
+#endif
+
+ for ( mtype = 0 ; mtype < 7 ; mtype++ ) {
+ for ( psize = 1 ; psize <= 4 ; psize++ ) {
+ transform_func func = _mesa_transform_tab[psize][mtypes[mtype]];
+ unsigned long *cycles = &(benchmark_tab[psize-1][mtype]);
+
+ if ( test_transform_function( func, psize, mtype, cycles ) == 0 ) {
+ char buf[100];
+ sprintf(buf, "_mesa_transform_tab[0][%d][%s] failed test (%s)",
+ psize, mstrings[mtype], description );
+ _mesa_problem( NULL, "%s", buf );
+ }
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile )
+ printf(" %li\t", benchmark_tab[psize-1][mtype] );
+#endif
+ }
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile )
+ printf(" | [%s]\n", mstrings[mtype] );
+#endif
+ }
+#ifdef RUN_DEBUG_BENCHMARK
+ if ( mesa_profile )
+ printf( "\n" );
+#endif
+}
+
+
+#endif /* DEBUG_MATH */
diff --git a/mesalib/src/mesa/math/m_matrix.c b/mesalib/src/mesa/math/m_matrix.c
index 83eb787c7..02aedbad8 100644
--- a/mesalib/src/mesa/math/m_matrix.c
+++ b/mesalib/src/mesa/math/m_matrix.c
@@ -1,1641 +1,1641 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.3
- *
- * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-/**
- * \file m_matrix.c
- * Matrix operations.
- *
- * \note
- * -# 4x4 transformation matrices are stored in memory in column major order.
- * -# Points/vertices are to be thought of as column vectors.
- * -# Transformation of a point p by a matrix M is: p' = M * p
- */
-
-
-#include "main/glheader.h"
-#include "main/imports.h"
-#include "main/macros.h"
-
-#include "m_matrix.h"
-
-
-/**
- * \defgroup MatFlags MAT_FLAG_XXX-flags
- *
- * Bitmasks to indicate different kinds of 4x4 matrices in GLmatrix::flags
- * It would be nice to make all these flags private to m_matrix.c
- */
-/*@{*/
-#define MAT_FLAG_IDENTITY 0 /**< is an identity matrix flag.
- * (Not actually used - the identity
- * matrix is identified by the absense
- * of all other flags.)
- */
-#define MAT_FLAG_GENERAL 0x1 /**< is a general matrix flag */
-#define MAT_FLAG_ROTATION 0x2 /**< is a rotation matrix flag */
-#define MAT_FLAG_TRANSLATION 0x4 /**< is a translation matrix flag */
-#define MAT_FLAG_UNIFORM_SCALE 0x8 /**< is an uniform scaling matrix flag */
-#define MAT_FLAG_GENERAL_SCALE 0x10 /**< is a general scaling matrix flag */
-#define MAT_FLAG_GENERAL_3D 0x20 /**< general 3D matrix flag */
-#define MAT_FLAG_PERSPECTIVE 0x40 /**< is a perspective proj matrix flag */
-#define MAT_FLAG_SINGULAR 0x80 /**< is a singular matrix flag */
-#define MAT_DIRTY_TYPE 0x100 /**< matrix type is dirty */
-#define MAT_DIRTY_FLAGS 0x200 /**< matrix flags are dirty */
-#define MAT_DIRTY_INVERSE 0x400 /**< matrix inverse is dirty */
-
-/** angle preserving matrix flags mask */
-#define MAT_FLAGS_ANGLE_PRESERVING (MAT_FLAG_ROTATION | \
- MAT_FLAG_TRANSLATION | \
- MAT_FLAG_UNIFORM_SCALE)
-
-/** geometry related matrix flags mask */
-#define MAT_FLAGS_GEOMETRY (MAT_FLAG_GENERAL | \
- MAT_FLAG_ROTATION | \
- MAT_FLAG_TRANSLATION | \
- MAT_FLAG_UNIFORM_SCALE | \
- MAT_FLAG_GENERAL_SCALE | \
- MAT_FLAG_GENERAL_3D | \
- MAT_FLAG_PERSPECTIVE | \
- MAT_FLAG_SINGULAR)
-
-/** length preserving matrix flags mask */
-#define MAT_FLAGS_LENGTH_PRESERVING (MAT_FLAG_ROTATION | \
- MAT_FLAG_TRANSLATION)
-
-
-/** 3D (non-perspective) matrix flags mask */
-#define MAT_FLAGS_3D (MAT_FLAG_ROTATION | \
- MAT_FLAG_TRANSLATION | \
- MAT_FLAG_UNIFORM_SCALE | \
- MAT_FLAG_GENERAL_SCALE | \
- MAT_FLAG_GENERAL_3D)
-
-/** dirty matrix flags mask */
-#define MAT_DIRTY (MAT_DIRTY_TYPE | \
- MAT_DIRTY_FLAGS | \
- MAT_DIRTY_INVERSE)
-
-/*@}*/
-
-
-/**
- * Test geometry related matrix flags.
- *
- * \param mat a pointer to a GLmatrix structure.
- * \param a flags mask.
- *
- * \returns non-zero if all geometry related matrix flags are contained within
- * the mask, or zero otherwise.
- */
-#define TEST_MAT_FLAGS(mat, a) \
- ((MAT_FLAGS_GEOMETRY & (~(a)) & ((mat)->flags) ) == 0)
-
-
-
-/**
- * Names of the corresponding GLmatrixtype values.
- */
-static const char *types[] = {
- "MATRIX_GENERAL",
- "MATRIX_IDENTITY",
- "MATRIX_3D_NO_ROT",
- "MATRIX_PERSPECTIVE",
- "MATRIX_2D",
- "MATRIX_2D_NO_ROT",
- "MATRIX_3D"
-};
-
-
-/**
- * Identity matrix.
- */
-static GLfloat Identity[16] = {
- 1.0, 0.0, 0.0, 0.0,
- 0.0, 1.0, 0.0, 0.0,
- 0.0, 0.0, 1.0, 0.0,
- 0.0, 0.0, 0.0, 1.0
-};
-
-
-
-/**********************************************************************/
-/** \name Matrix multiplication */
-/*@{*/
-
-#define A(row,col) a[(col<<2)+row]
-#define B(row,col) b[(col<<2)+row]
-#define P(row,col) product[(col<<2)+row]
-
-/**
- * Perform a full 4x4 matrix multiplication.
- *
- * \param a matrix.
- * \param b matrix.
- * \param product will receive the product of \p a and \p b.
- *
- * \warning Is assumed that \p product != \p b. \p product == \p a is allowed.
- *
- * \note KW: 4*16 = 64 multiplications
- *
- * \author This \c matmul was contributed by Thomas Malik
- */
-static void matmul4( GLfloat *product, const GLfloat *a, const GLfloat *b )
-{
- GLint i;
- for (i = 0; i < 4; i++) {
- const GLfloat ai0=A(i,0), ai1=A(i,1), ai2=A(i,2), ai3=A(i,3);
- P(i,0) = ai0 * B(0,0) + ai1 * B(1,0) + ai2 * B(2,0) + ai3 * B(3,0);
- P(i,1) = ai0 * B(0,1) + ai1 * B(1,1) + ai2 * B(2,1) + ai3 * B(3,1);
- P(i,2) = ai0 * B(0,2) + ai1 * B(1,2) + ai2 * B(2,2) + ai3 * B(3,2);
- P(i,3) = ai0 * B(0,3) + ai1 * B(1,3) + ai2 * B(2,3) + ai3 * B(3,3);
- }
-}
-
-/**
- * Multiply two matrices known to occupy only the top three rows, such
- * as typical model matrices, and orthogonal matrices.
- *
- * \param a matrix.
- * \param b matrix.
- * \param product will receive the product of \p a and \p b.
- */
-static void matmul34( GLfloat *product, const GLfloat *a, const GLfloat *b )
-{
- GLint i;
- for (i = 0; i < 3; i++) {
- const GLfloat ai0=A(i,0), ai1=A(i,1), ai2=A(i,2), ai3=A(i,3);
- P(i,0) = ai0 * B(0,0) + ai1 * B(1,0) + ai2 * B(2,0);
- P(i,1) = ai0 * B(0,1) + ai1 * B(1,1) + ai2 * B(2,1);
- P(i,2) = ai0 * B(0,2) + ai1 * B(1,2) + ai2 * B(2,2);
- P(i,3) = ai0 * B(0,3) + ai1 * B(1,3) + ai2 * B(2,3) + ai3;
- }
- P(3,0) = 0;
- P(3,1) = 0;
- P(3,2) = 0;
- P(3,3) = 1;
-}
-
-#undef A
-#undef B
-#undef P
-
-/**
- * Multiply a matrix by an array of floats with known properties.
- *
- * \param mat pointer to a GLmatrix structure containing the left multiplication
- * matrix, and that will receive the product result.
- * \param m right multiplication matrix array.
- * \param flags flags of the matrix \p m.
- *
- * Joins both flags and marks the type and inverse as dirty. Calls matmul34()
- * if both matrices are 3D, or matmul4() otherwise.
- */
-static void matrix_multf( GLmatrix *mat, const GLfloat *m, GLuint flags )
-{
- mat->flags |= (flags | MAT_DIRTY_TYPE | MAT_DIRTY_INVERSE);
-
- if (TEST_MAT_FLAGS(mat, MAT_FLAGS_3D))
- matmul34( mat->m, mat->m, m );
- else
- matmul4( mat->m, mat->m, m );
-}
-
-/**
- * Matrix multiplication.
- *
- * \param dest destination matrix.
- * \param a left matrix.
- * \param b right matrix.
- *
- * Joins both flags and marks the type and inverse as dirty. Calls matmul34()
- * if both matrices are 3D, or matmul4() otherwise.
- */
-void
-_math_matrix_mul_matrix( GLmatrix *dest, const GLmatrix *a, const GLmatrix *b )
-{
- dest->flags = (a->flags |
- b->flags |
- MAT_DIRTY_TYPE |
- MAT_DIRTY_INVERSE);
-
- if (TEST_MAT_FLAGS(dest, MAT_FLAGS_3D))
- matmul34( dest->m, a->m, b->m );
- else
- matmul4( dest->m, a->m, b->m );
-}
-
-/**
- * Matrix multiplication.
- *
- * \param dest left and destination matrix.
- * \param m right matrix array.
- *
- * Marks the matrix flags with general flag, and type and inverse dirty flags.
- * Calls matmul4() for the multiplication.
- */
-void
-_math_matrix_mul_floats( GLmatrix *dest, const GLfloat *m )
-{
- dest->flags |= (MAT_FLAG_GENERAL |
- MAT_DIRTY_TYPE |
- MAT_DIRTY_INVERSE |
- MAT_DIRTY_FLAGS);
-
- matmul4( dest->m, dest->m, m );
-}
-
-/*@}*/
-
-
-/**********************************************************************/
-/** \name Matrix output */
-/*@{*/
-
-/**
- * Print a matrix array.
- *
- * \param m matrix array.
- *
- * Called by _math_matrix_print() to print a matrix or its inverse.
- */
-static void print_matrix_floats( const GLfloat m[16] )
-{
- int i;
- for (i=0;i<4;i++) {
- _mesa_debug(NULL,"\t%f %f %f %f\n", m[i], m[4+i], m[8+i], m[12+i] );
- }
-}
-
-/**
- * Dumps the contents of a GLmatrix structure.
- *
- * \param m pointer to the GLmatrix structure.
- */
-void
-_math_matrix_print( const GLmatrix *m )
-{
- _mesa_debug(NULL, "Matrix type: %s, flags: %x\n", types[m->type], m->flags);
- print_matrix_floats(m->m);
- _mesa_debug(NULL, "Inverse: \n");
- if (m->inv) {
- GLfloat prod[16];
- print_matrix_floats(m->inv);
- matmul4(prod, m->m, m->inv);
- _mesa_debug(NULL, "Mat * Inverse:\n");
- print_matrix_floats(prod);
- }
- else {
- _mesa_debug(NULL, " - not available\n");
- }
-}
-
-/*@}*/
-
-
-/**
- * References an element of 4x4 matrix.
- *
- * \param m matrix array.
- * \param c column of the desired element.
- * \param r row of the desired element.
- *
- * \return value of the desired element.
- *
- * Calculate the linear storage index of the element and references it.
- */
-#define MAT(m,r,c) (m)[(c)*4+(r)]
-
-
-/**********************************************************************/
-/** \name Matrix inversion */
-/*@{*/
-
-/**
- * Swaps the values of two floating pointer variables.
- *
- * Used by invert_matrix_general() to swap the row pointers.
- */
-#define SWAP_ROWS(a, b) { GLfloat *_tmp = a; (a)=(b); (b)=_tmp; }
-
-/**
- * Compute inverse of 4x4 transformation matrix.
- *
- * \param mat pointer to a GLmatrix structure. The matrix inverse will be
- * stored in the GLmatrix::inv attribute.
- *
- * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
- *
- * \author
- * Code contributed by Jacques Leroy jle@star.be
- *
- * Calculates the inverse matrix by performing the gaussian matrix reduction
- * with partial pivoting followed by back/substitution with the loops manually
- * unrolled.
- */
-static GLboolean invert_matrix_general( GLmatrix *mat )
-{
- const GLfloat *m = mat->m;
- GLfloat *out = mat->inv;
- GLfloat wtmp[4][8];
- GLfloat m0, m1, m2, m3, s;
- GLfloat *r0, *r1, *r2, *r3;
-
- r0 = wtmp[0], r1 = wtmp[1], r2 = wtmp[2], r3 = wtmp[3];
-
- r0[0] = MAT(m,0,0), r0[1] = MAT(m,0,1),
- r0[2] = MAT(m,0,2), r0[3] = MAT(m,0,3),
- r0[4] = 1.0, r0[5] = r0[6] = r0[7] = 0.0,
-
- r1[0] = MAT(m,1,0), r1[1] = MAT(m,1,1),
- r1[2] = MAT(m,1,2), r1[3] = MAT(m,1,3),
- r1[5] = 1.0, r1[4] = r1[6] = r1[7] = 0.0,
-
- r2[0] = MAT(m,2,0), r2[1] = MAT(m,2,1),
- r2[2] = MAT(m,2,2), r2[3] = MAT(m,2,3),
- r2[6] = 1.0, r2[4] = r2[5] = r2[7] = 0.0,
-
- r3[0] = MAT(m,3,0), r3[1] = MAT(m,3,1),
- r3[2] = MAT(m,3,2), r3[3] = MAT(m,3,3),
- r3[7] = 1.0, r3[4] = r3[5] = r3[6] = 0.0;
-
- /* choose pivot - or die */
- if (FABSF(r3[0])>FABSF(r2[0])) SWAP_ROWS(r3, r2);
- if (FABSF(r2[0])>FABSF(r1[0])) SWAP_ROWS(r2, r1);
- if (FABSF(r1[0])>FABSF(r0[0])) SWAP_ROWS(r1, r0);
- if (0.0 == r0[0]) return GL_FALSE;
-
- /* eliminate first variable */
- m1 = r1[0]/r0[0]; m2 = r2[0]/r0[0]; m3 = r3[0]/r0[0];
- s = r0[1]; r1[1] -= m1 * s; r2[1] -= m2 * s; r3[1] -= m3 * s;
- s = r0[2]; r1[2] -= m1 * s; r2[2] -= m2 * s; r3[2] -= m3 * s;
- s = r0[3]; r1[3] -= m1 * s; r2[3] -= m2 * s; r3[3] -= m3 * s;
- s = r0[4];
- if (s != 0.0) { r1[4] -= m1 * s; r2[4] -= m2 * s; r3[4] -= m3 * s; }
- s = r0[5];
- if (s != 0.0) { r1[5] -= m1 * s; r2[5] -= m2 * s; r3[5] -= m3 * s; }
- s = r0[6];
- if (s != 0.0) { r1[6] -= m1 * s; r2[6] -= m2 * s; r3[6] -= m3 * s; }
- s = r0[7];
- if (s != 0.0) { r1[7] -= m1 * s; r2[7] -= m2 * s; r3[7] -= m3 * s; }
-
- /* choose pivot - or die */
- if (FABSF(r3[1])>FABSF(r2[1])) SWAP_ROWS(r3, r2);
- if (FABSF(r2[1])>FABSF(r1[1])) SWAP_ROWS(r2, r1);
- if (0.0 == r1[1]) return GL_FALSE;
-
- /* eliminate second variable */
- m2 = r2[1]/r1[1]; m3 = r3[1]/r1[1];
- r2[2] -= m2 * r1[2]; r3[2] -= m3 * r1[2];
- r2[3] -= m2 * r1[3]; r3[3] -= m3 * r1[3];
- s = r1[4]; if (0.0 != s) { r2[4] -= m2 * s; r3[4] -= m3 * s; }
- s = r1[5]; if (0.0 != s) { r2[5] -= m2 * s; r3[5] -= m3 * s; }
- s = r1[6]; if (0.0 != s) { r2[6] -= m2 * s; r3[6] -= m3 * s; }
- s = r1[7]; if (0.0 != s) { r2[7] -= m2 * s; r3[7] -= m3 * s; }
-
- /* choose pivot - or die */
- if (FABSF(r3[2])>FABSF(r2[2])) SWAP_ROWS(r3, r2);
- if (0.0 == r2[2]) return GL_FALSE;
-
- /* eliminate third variable */
- m3 = r3[2]/r2[2];
- r3[3] -= m3 * r2[3], r3[4] -= m3 * r2[4],
- r3[5] -= m3 * r2[5], r3[6] -= m3 * r2[6],
- r3[7] -= m3 * r2[7];
-
- /* last check */
- if (0.0 == r3[3]) return GL_FALSE;
-
- s = 1.0F/r3[3]; /* now back substitute row 3 */
- r3[4] *= s; r3[5] *= s; r3[6] *= s; r3[7] *= s;
-
- m2 = r2[3]; /* now back substitute row 2 */
- s = 1.0F/r2[2];
- r2[4] = s * (r2[4] - r3[4] * m2), r2[5] = s * (r2[5] - r3[5] * m2),
- r2[6] = s * (r2[6] - r3[6] * m2), r2[7] = s * (r2[7] - r3[7] * m2);
- m1 = r1[3];
- r1[4] -= r3[4] * m1, r1[5] -= r3[5] * m1,
- r1[6] -= r3[6] * m1, r1[7] -= r3[7] * m1;
- m0 = r0[3];
- r0[4] -= r3[4] * m0, r0[5] -= r3[5] * m0,
- r0[6] -= r3[6] * m0, r0[7] -= r3[7] * m0;
-
- m1 = r1[2]; /* now back substitute row 1 */
- s = 1.0F/r1[1];
- r1[4] = s * (r1[4] - r2[4] * m1), r1[5] = s * (r1[5] - r2[5] * m1),
- r1[6] = s * (r1[6] - r2[6] * m1), r1[7] = s * (r1[7] - r2[7] * m1);
- m0 = r0[2];
- r0[4] -= r2[4] * m0, r0[5] -= r2[5] * m0,
- r0[6] -= r2[6] * m0, r0[7] -= r2[7] * m0;
-
- m0 = r0[1]; /* now back substitute row 0 */
- s = 1.0F/r0[0];
- r0[4] = s * (r0[4] - r1[4] * m0), r0[5] = s * (r0[5] - r1[5] * m0),
- r0[6] = s * (r0[6] - r1[6] * m0), r0[7] = s * (r0[7] - r1[7] * m0);
-
- MAT(out,0,0) = r0[4]; MAT(out,0,1) = r0[5],
- MAT(out,0,2) = r0[6]; MAT(out,0,3) = r0[7],
- MAT(out,1,0) = r1[4]; MAT(out,1,1) = r1[5],
- MAT(out,1,2) = r1[6]; MAT(out,1,3) = r1[7],
- MAT(out,2,0) = r2[4]; MAT(out,2,1) = r2[5],
- MAT(out,2,2) = r2[6]; MAT(out,2,3) = r2[7],
- MAT(out,3,0) = r3[4]; MAT(out,3,1) = r3[5],
- MAT(out,3,2) = r3[6]; MAT(out,3,3) = r3[7];
-
- return GL_TRUE;
-}
-#undef SWAP_ROWS
-
-/**
- * Compute inverse of a general 3d transformation matrix.
- *
- * \param mat pointer to a GLmatrix structure. The matrix inverse will be
- * stored in the GLmatrix::inv attribute.
- *
- * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
- *
- * \author Adapted from graphics gems II.
- *
- * Calculates the inverse of the upper left by first calculating its
- * determinant and multiplying it to the symmetric adjust matrix of each
- * element. Finally deals with the translation part by transforming the
- * original translation vector using by the calculated submatrix inverse.
- */
-static GLboolean invert_matrix_3d_general( GLmatrix *mat )
-{
- const GLfloat *in = mat->m;
- GLfloat *out = mat->inv;
- GLfloat pos, neg, t;
- GLfloat det;
-
- /* Calculate the determinant of upper left 3x3 submatrix and
- * determine if the matrix is singular.
- */
- pos = neg = 0.0;
- t = MAT(in,0,0) * MAT(in,1,1) * MAT(in,2,2);
- if (t >= 0.0) pos += t; else neg += t;
-
- t = MAT(in,1,0) * MAT(in,2,1) * MAT(in,0,2);
- if (t >= 0.0) pos += t; else neg += t;
-
- t = MAT(in,2,0) * MAT(in,0,1) * MAT(in,1,2);
- if (t >= 0.0) pos += t; else neg += t;
-
- t = -MAT(in,2,0) * MAT(in,1,1) * MAT(in,0,2);
- if (t >= 0.0) pos += t; else neg += t;
-
- t = -MAT(in,1,0) * MAT(in,0,1) * MAT(in,2,2);
- if (t >= 0.0) pos += t; else neg += t;
-
- t = -MAT(in,0,0) * MAT(in,2,1) * MAT(in,1,2);
- if (t >= 0.0) pos += t; else neg += t;
-
- det = pos + neg;
-
- if (det*det < 1e-25)
- return GL_FALSE;
-
- det = 1.0F / det;
- MAT(out,0,0) = ( (MAT(in,1,1)*MAT(in,2,2) - MAT(in,2,1)*MAT(in,1,2) )*det);
- MAT(out,0,1) = (- (MAT(in,0,1)*MAT(in,2,2) - MAT(in,2,1)*MAT(in,0,2) )*det);
- MAT(out,0,2) = ( (MAT(in,0,1)*MAT(in,1,2) - MAT(in,1,1)*MAT(in,0,2) )*det);
- MAT(out,1,0) = (- (MAT(in,1,0)*MAT(in,2,2) - MAT(in,2,0)*MAT(in,1,2) )*det);
- MAT(out,1,1) = ( (MAT(in,0,0)*MAT(in,2,2) - MAT(in,2,0)*MAT(in,0,2) )*det);
- MAT(out,1,2) = (- (MAT(in,0,0)*MAT(in,1,2) - MAT(in,1,0)*MAT(in,0,2) )*det);
- MAT(out,2,0) = ( (MAT(in,1,0)*MAT(in,2,1) - MAT(in,2,0)*MAT(in,1,1) )*det);
- MAT(out,2,1) = (- (MAT(in,0,0)*MAT(in,2,1) - MAT(in,2,0)*MAT(in,0,1) )*det);
- MAT(out,2,2) = ( (MAT(in,0,0)*MAT(in,1,1) - MAT(in,1,0)*MAT(in,0,1) )*det);
-
- /* Do the translation part */
- MAT(out,0,3) = - (MAT(in,0,3) * MAT(out,0,0) +
- MAT(in,1,3) * MAT(out,0,1) +
- MAT(in,2,3) * MAT(out,0,2) );
- MAT(out,1,3) = - (MAT(in,0,3) * MAT(out,1,0) +
- MAT(in,1,3) * MAT(out,1,1) +
- MAT(in,2,3) * MAT(out,1,2) );
- MAT(out,2,3) = - (MAT(in,0,3) * MAT(out,2,0) +
- MAT(in,1,3) * MAT(out,2,1) +
- MAT(in,2,3) * MAT(out,2,2) );
-
- return GL_TRUE;
-}
-
-/**
- * Compute inverse of a 3d transformation matrix.
- *
- * \param mat pointer to a GLmatrix structure. The matrix inverse will be
- * stored in the GLmatrix::inv attribute.
- *
- * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
- *
- * If the matrix is not an angle preserving matrix then calls
- * invert_matrix_3d_general for the actual calculation. Otherwise calculates
- * the inverse matrix analyzing and inverting each of the scaling, rotation and
- * translation parts.
- */
-static GLboolean invert_matrix_3d( GLmatrix *mat )
-{
- const GLfloat *in = mat->m;
- GLfloat *out = mat->inv;
-
- if (!TEST_MAT_FLAGS(mat, MAT_FLAGS_ANGLE_PRESERVING)) {
- return invert_matrix_3d_general( mat );
- }
-
- if (mat->flags & MAT_FLAG_UNIFORM_SCALE) {
- GLfloat scale = (MAT(in,0,0) * MAT(in,0,0) +
- MAT(in,0,1) * MAT(in,0,1) +
- MAT(in,0,2) * MAT(in,0,2));
-
- if (scale == 0.0)
- return GL_FALSE;
-
- scale = 1.0F / scale;
-
- /* Transpose and scale the 3 by 3 upper-left submatrix. */
- MAT(out,0,0) = scale * MAT(in,0,0);
- MAT(out,1,0) = scale * MAT(in,0,1);
- MAT(out,2,0) = scale * MAT(in,0,2);
- MAT(out,0,1) = scale * MAT(in,1,0);
- MAT(out,1,1) = scale * MAT(in,1,1);
- MAT(out,2,1) = scale * MAT(in,1,2);
- MAT(out,0,2) = scale * MAT(in,2,0);
- MAT(out,1,2) = scale * MAT(in,2,1);
- MAT(out,2,2) = scale * MAT(in,2,2);
- }
- else if (mat->flags & MAT_FLAG_ROTATION) {
- /* Transpose the 3 by 3 upper-left submatrix. */
- MAT(out,0,0) = MAT(in,0,0);
- MAT(out,1,0) = MAT(in,0,1);
- MAT(out,2,0) = MAT(in,0,2);
- MAT(out,0,1) = MAT(in,1,0);
- MAT(out,1,1) = MAT(in,1,1);
- MAT(out,2,1) = MAT(in,1,2);
- MAT(out,0,2) = MAT(in,2,0);
- MAT(out,1,2) = MAT(in,2,1);
- MAT(out,2,2) = MAT(in,2,2);
- }
- else {
- /* pure translation */
- memcpy( out, Identity, sizeof(Identity) );
- MAT(out,0,3) = - MAT(in,0,3);
- MAT(out,1,3) = - MAT(in,1,3);
- MAT(out,2,3) = - MAT(in,2,3);
- return GL_TRUE;
- }
-
- if (mat->flags & MAT_FLAG_TRANSLATION) {
- /* Do the translation part */
- MAT(out,0,3) = - (MAT(in,0,3) * MAT(out,0,0) +
- MAT(in,1,3) * MAT(out,0,1) +
- MAT(in,2,3) * MAT(out,0,2) );
- MAT(out,1,3) = - (MAT(in,0,3) * MAT(out,1,0) +
- MAT(in,1,3) * MAT(out,1,1) +
- MAT(in,2,3) * MAT(out,1,2) );
- MAT(out,2,3) = - (MAT(in,0,3) * MAT(out,2,0) +
- MAT(in,1,3) * MAT(out,2,1) +
- MAT(in,2,3) * MAT(out,2,2) );
- }
- else {
- MAT(out,0,3) = MAT(out,1,3) = MAT(out,2,3) = 0.0;
- }
-
- return GL_TRUE;
-}
-
-/**
- * Compute inverse of an identity transformation matrix.
- *
- * \param mat pointer to a GLmatrix structure. The matrix inverse will be
- * stored in the GLmatrix::inv attribute.
- *
- * \return always GL_TRUE.
- *
- * Simply copies Identity into GLmatrix::inv.
- */
-static GLboolean invert_matrix_identity( GLmatrix *mat )
-{
- memcpy( mat->inv, Identity, sizeof(Identity) );
- return GL_TRUE;
-}
-
-/**
- * Compute inverse of a no-rotation 3d transformation matrix.
- *
- * \param mat pointer to a GLmatrix structure. The matrix inverse will be
- * stored in the GLmatrix::inv attribute.
- *
- * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
- *
- * Calculates the
- */
-static GLboolean invert_matrix_3d_no_rot( GLmatrix *mat )
-{
- const GLfloat *in = mat->m;
- GLfloat *out = mat->inv;
-
- if (MAT(in,0,0) == 0 || MAT(in,1,1) == 0 || MAT(in,2,2) == 0 )
- return GL_FALSE;
-
- memcpy( out, Identity, 16 * sizeof(GLfloat) );
- MAT(out,0,0) = 1.0F / MAT(in,0,0);
- MAT(out,1,1) = 1.0F / MAT(in,1,1);
- MAT(out,2,2) = 1.0F / MAT(in,2,2);
-
- if (mat->flags & MAT_FLAG_TRANSLATION) {
- MAT(out,0,3) = - (MAT(in,0,3) * MAT(out,0,0));
- MAT(out,1,3) = - (MAT(in,1,3) * MAT(out,1,1));
- MAT(out,2,3) = - (MAT(in,2,3) * MAT(out,2,2));
- }
-
- return GL_TRUE;
-}
-
-/**
- * Compute inverse of a no-rotation 2d transformation matrix.
- *
- * \param mat pointer to a GLmatrix structure. The matrix inverse will be
- * stored in the GLmatrix::inv attribute.
- *
- * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
- *
- * Calculates the inverse matrix by applying the inverse scaling and
- * translation to the identity matrix.
- */
-static GLboolean invert_matrix_2d_no_rot( GLmatrix *mat )
-{
- const GLfloat *in = mat->m;
- GLfloat *out = mat->inv;
-
- if (MAT(in,0,0) == 0 || MAT(in,1,1) == 0)
- return GL_FALSE;
-
- memcpy( out, Identity, 16 * sizeof(GLfloat) );
- MAT(out,0,0) = 1.0F / MAT(in,0,0);
- MAT(out,1,1) = 1.0F / MAT(in,1,1);
-
- if (mat->flags & MAT_FLAG_TRANSLATION) {
- MAT(out,0,3) = - (MAT(in,0,3) * MAT(out,0,0));
- MAT(out,1,3) = - (MAT(in,1,3) * MAT(out,1,1));
- }
-
- return GL_TRUE;
-}
-
-#if 0
-/* broken */
-static GLboolean invert_matrix_perspective( GLmatrix *mat )
-{
- const GLfloat *in = mat->m;
- GLfloat *out = mat->inv;
-
- if (MAT(in,2,3) == 0)
- return GL_FALSE;
-
- memcpy( out, Identity, 16 * sizeof(GLfloat) );
-
- MAT(out,0,0) = 1.0F / MAT(in,0,0);
- MAT(out,1,1) = 1.0F / MAT(in,1,1);
-
- MAT(out,0,3) = MAT(in,0,2);
- MAT(out,1,3) = MAT(in,1,2);
-
- MAT(out,2,2) = 0;
- MAT(out,2,3) = -1;
-
- MAT(out,3,2) = 1.0F / MAT(in,2,3);
- MAT(out,3,3) = MAT(in,2,2) * MAT(out,3,2);
-
- return GL_TRUE;
-}
-#endif
-
-/**
- * Matrix inversion function pointer type.
- */
-typedef GLboolean (*inv_mat_func)( GLmatrix *mat );
-
-/**
- * Table of the matrix inversion functions according to the matrix type.
- */
-static inv_mat_func inv_mat_tab[7] = {
- invert_matrix_general,
- invert_matrix_identity,
- invert_matrix_3d_no_rot,
-#if 0
- /* Don't use this function for now - it fails when the projection matrix
- * is premultiplied by a translation (ala Chromium's tilesort SPU).
- */
- invert_matrix_perspective,
-#else
- invert_matrix_general,
-#endif
- invert_matrix_3d, /* lazy! */
- invert_matrix_2d_no_rot,
- invert_matrix_3d
-};
-
-/**
- * Compute inverse of a transformation matrix.
- *
- * \param mat pointer to a GLmatrix structure. The matrix inverse will be
- * stored in the GLmatrix::inv attribute.
- *
- * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
- *
- * Calls the matrix inversion function in inv_mat_tab corresponding to the
- * given matrix type. In case of failure, updates the MAT_FLAG_SINGULAR flag,
- * and copies the identity matrix into GLmatrix::inv.
- */
-static GLboolean matrix_invert( GLmatrix *mat )
-{
- if (inv_mat_tab[mat->type](mat)) {
- mat->flags &= ~MAT_FLAG_SINGULAR;
- return GL_TRUE;
- } else {
- mat->flags |= MAT_FLAG_SINGULAR;
- memcpy( mat->inv, Identity, sizeof(Identity) );
- return GL_FALSE;
- }
-}
-
-/*@}*/
-
-
-/**********************************************************************/
-/** \name Matrix generation */
-/*@{*/
-
-/**
- * Generate a 4x4 transformation matrix from glRotate parameters, and
- * post-multiply the input matrix by it.
- *
- * \author
- * This function was contributed by Erich Boleyn (erich@uruk.org).
- * Optimizations contributed by Rudolf Opalla (rudi@khm.de).
- */
-void
-_math_matrix_rotate( GLmatrix *mat,
- GLfloat angle, GLfloat x, GLfloat y, GLfloat z )
-{
- GLfloat xx, yy, zz, xy, yz, zx, xs, ys, zs, one_c, s, c;
- GLfloat m[16];
- GLboolean optimized;
-
- s = (GLfloat) sin( angle * DEG2RAD );
- c = (GLfloat) cos( angle * DEG2RAD );
-
- memcpy(m, Identity, sizeof(GLfloat)*16);
- optimized = GL_FALSE;
-
-#define M(row,col) m[col*4+row]
-
- if (x == 0.0F) {
- if (y == 0.0F) {
- if (z != 0.0F) {
- optimized = GL_TRUE;
- /* rotate only around z-axis */
- M(0,0) = c;
- M(1,1) = c;
- if (z < 0.0F) {
- M(0,1) = s;
- M(1,0) = -s;
- }
- else {
- M(0,1) = -s;
- M(1,0) = s;
- }
- }
- }
- else if (z == 0.0F) {
- optimized = GL_TRUE;
- /* rotate only around y-axis */
- M(0,0) = c;
- M(2,2) = c;
- if (y < 0.0F) {
- M(0,2) = -s;
- M(2,0) = s;
- }
- else {
- M(0,2) = s;
- M(2,0) = -s;
- }
- }
- }
- else if (y == 0.0F) {
- if (z == 0.0F) {
- optimized = GL_TRUE;
- /* rotate only around x-axis */
- M(1,1) = c;
- M(2,2) = c;
- if (x < 0.0F) {
- M(1,2) = s;
- M(2,1) = -s;
- }
- else {
- M(1,2) = -s;
- M(2,1) = s;
- }
- }
- }
-
- if (!optimized) {
- const GLfloat mag = SQRTF(x * x + y * y + z * z);
-
- if (mag <= 1.0e-4) {
- /* no rotation, leave mat as-is */
- return;
- }
-
- x /= mag;
- y /= mag;
- z /= mag;
-
-
- /*
- * Arbitrary axis rotation matrix.
- *
- * This is composed of 5 matrices, Rz, Ry, T, Ry', Rz', multiplied
- * like so: Rz * Ry * T * Ry' * Rz'. T is the final rotation
- * (which is about the X-axis), and the two composite transforms
- * Ry' * Rz' and Rz * Ry are (respectively) the rotations necessary
- * from the arbitrary axis to the X-axis then back. They are
- * all elementary rotations.
- *
- * Rz' is a rotation about the Z-axis, to bring the axis vector
- * into the x-z plane. Then Ry' is applied, rotating about the
- * Y-axis to bring the axis vector parallel with the X-axis. The
- * rotation about the X-axis is then performed. Ry and Rz are
- * simply the respective inverse transforms to bring the arbitrary
- * axis back to its original orientation. The first transforms
- * Rz' and Ry' are considered inverses, since the data from the
- * arbitrary axis gives you info on how to get to it, not how
- * to get away from it, and an inverse must be applied.
- *
- * The basic calculation used is to recognize that the arbitrary
- * axis vector (x, y, z), since it is of unit length, actually
- * represents the sines and cosines of the angles to rotate the
- * X-axis to the same orientation, with theta being the angle about
- * Z and phi the angle about Y (in the order described above)
- * as follows:
- *
- * cos ( theta ) = x / sqrt ( 1 - z^2 )
- * sin ( theta ) = y / sqrt ( 1 - z^2 )
- *
- * cos ( phi ) = sqrt ( 1 - z^2 )
- * sin ( phi ) = z
- *
- * Note that cos ( phi ) can further be inserted to the above
- * formulas:
- *
- * cos ( theta ) = x / cos ( phi )
- * sin ( theta ) = y / sin ( phi )
- *
- * ...etc. Because of those relations and the standard trigonometric
- * relations, it is pssible to reduce the transforms down to what
- * is used below. It may be that any primary axis chosen will give the
- * same results (modulo a sign convention) using thie method.
- *
- * Particularly nice is to notice that all divisions that might
- * have caused trouble when parallel to certain planes or
- * axis go away with care paid to reducing the expressions.
- * After checking, it does perform correctly under all cases, since
- * in all the cases of division where the denominator would have
- * been zero, the numerator would have been zero as well, giving
- * the expected result.
- */
-
- xx = x * x;
- yy = y * y;
- zz = z * z;
- xy = x * y;
- yz = y * z;
- zx = z * x;
- xs = x * s;
- ys = y * s;
- zs = z * s;
- one_c = 1.0F - c;
-
- /* We already hold the identity-matrix so we can skip some statements */
- M(0,0) = (one_c * xx) + c;
- M(0,1) = (one_c * xy) - zs;
- M(0,2) = (one_c * zx) + ys;
-/* M(0,3) = 0.0F; */
-
- M(1,0) = (one_c * xy) + zs;
- M(1,1) = (one_c * yy) + c;
- M(1,2) = (one_c * yz) - xs;
-/* M(1,3) = 0.0F; */
-
- M(2,0) = (one_c * zx) - ys;
- M(2,1) = (one_c * yz) + xs;
- M(2,2) = (one_c * zz) + c;
-/* M(2,3) = 0.0F; */
-
-/*
- M(3,0) = 0.0F;
- M(3,1) = 0.0F;
- M(3,2) = 0.0F;
- M(3,3) = 1.0F;
-*/
- }
-#undef M
-
- matrix_multf( mat, m, MAT_FLAG_ROTATION );
-}
-
-/**
- * Apply a perspective projection matrix.
- *
- * \param mat matrix to apply the projection.
- * \param left left clipping plane coordinate.
- * \param right right clipping plane coordinate.
- * \param bottom bottom clipping plane coordinate.
- * \param top top clipping plane coordinate.
- * \param nearval distance to the near clipping plane.
- * \param farval distance to the far clipping plane.
- *
- * Creates the projection matrix and multiplies it with \p mat, marking the
- * MAT_FLAG_PERSPECTIVE flag.
- */
-void
-_math_matrix_frustum( GLmatrix *mat,
- GLfloat left, GLfloat right,
- GLfloat bottom, GLfloat top,
- GLfloat nearval, GLfloat farval )
-{
- GLfloat x, y, a, b, c, d;
- GLfloat m[16];
-
- x = (2.0F*nearval) / (right-left);
- y = (2.0F*nearval) / (top-bottom);
- a = (right+left) / (right-left);
- b = (top+bottom) / (top-bottom);
- c = -(farval+nearval) / ( farval-nearval);
- d = -(2.0F*farval*nearval) / (farval-nearval); /* error? */
-
-#define M(row,col) m[col*4+row]
- M(0,0) = x; M(0,1) = 0.0F; M(0,2) = a; M(0,3) = 0.0F;
- M(1,0) = 0.0F; M(1,1) = y; M(1,2) = b; M(1,3) = 0.0F;
- M(2,0) = 0.0F; M(2,1) = 0.0F; M(2,2) = c; M(2,3) = d;
- M(3,0) = 0.0F; M(3,1) = 0.0F; M(3,2) = -1.0F; M(3,3) = 0.0F;
-#undef M
-
- matrix_multf( mat, m, MAT_FLAG_PERSPECTIVE );
-}
-
-/**
- * Apply an orthographic projection matrix.
- *
- * \param mat matrix to apply the projection.
- * \param left left clipping plane coordinate.
- * \param right right clipping plane coordinate.
- * \param bottom bottom clipping plane coordinate.
- * \param top top clipping plane coordinate.
- * \param nearval distance to the near clipping plane.
- * \param farval distance to the far clipping plane.
- *
- * Creates the projection matrix and multiplies it with \p mat, marking the
- * MAT_FLAG_GENERAL_SCALE and MAT_FLAG_TRANSLATION flags.
- */
-void
-_math_matrix_ortho( GLmatrix *mat,
- GLfloat left, GLfloat right,
- GLfloat bottom, GLfloat top,
- GLfloat nearval, GLfloat farval )
-{
- GLfloat m[16];
-
-#define M(row,col) m[col*4+row]
- M(0,0) = 2.0F / (right-left);
- M(0,1) = 0.0F;
- M(0,2) = 0.0F;
- M(0,3) = -(right+left) / (right-left);
-
- M(1,0) = 0.0F;
- M(1,1) = 2.0F / (top-bottom);
- M(1,2) = 0.0F;
- M(1,3) = -(top+bottom) / (top-bottom);
-
- M(2,0) = 0.0F;
- M(2,1) = 0.0F;
- M(2,2) = -2.0F / (farval-nearval);
- M(2,3) = -(farval+nearval) / (farval-nearval);
-
- M(3,0) = 0.0F;
- M(3,1) = 0.0F;
- M(3,2) = 0.0F;
- M(3,3) = 1.0F;
-#undef M
-
- matrix_multf( mat, m, (MAT_FLAG_GENERAL_SCALE|MAT_FLAG_TRANSLATION));
-}
-
-/**
- * Multiply a matrix with a general scaling matrix.
- *
- * \param mat matrix.
- * \param x x axis scale factor.
- * \param y y axis scale factor.
- * \param z z axis scale factor.
- *
- * Multiplies in-place the elements of \p mat by the scale factors. Checks if
- * the scales factors are roughly the same, marking the MAT_FLAG_UNIFORM_SCALE
- * flag, or MAT_FLAG_GENERAL_SCALE. Marks the MAT_DIRTY_TYPE and
- * MAT_DIRTY_INVERSE dirty flags.
- */
-void
-_math_matrix_scale( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
-{
- GLfloat *m = mat->m;
- m[0] *= x; m[4] *= y; m[8] *= z;
- m[1] *= x; m[5] *= y; m[9] *= z;
- m[2] *= x; m[6] *= y; m[10] *= z;
- m[3] *= x; m[7] *= y; m[11] *= z;
-
- if (FABSF(x - y) < 1e-8 && FABSF(x - z) < 1e-8)
- mat->flags |= MAT_FLAG_UNIFORM_SCALE;
- else
- mat->flags |= MAT_FLAG_GENERAL_SCALE;
-
- mat->flags |= (MAT_DIRTY_TYPE |
- MAT_DIRTY_INVERSE);
-}
-
-/**
- * Multiply a matrix with a translation matrix.
- *
- * \param mat matrix.
- * \param x translation vector x coordinate.
- * \param y translation vector y coordinate.
- * \param z translation vector z coordinate.
- *
- * Adds the translation coordinates to the elements of \p mat in-place. Marks
- * the MAT_FLAG_TRANSLATION flag, and the MAT_DIRTY_TYPE and MAT_DIRTY_INVERSE
- * dirty flags.
- */
-void
-_math_matrix_translate( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
-{
- GLfloat *m = mat->m;
- m[12] = m[0] * x + m[4] * y + m[8] * z + m[12];
- m[13] = m[1] * x + m[5] * y + m[9] * z + m[13];
- m[14] = m[2] * x + m[6] * y + m[10] * z + m[14];
- m[15] = m[3] * x + m[7] * y + m[11] * z + m[15];
-
- mat->flags |= (MAT_FLAG_TRANSLATION |
- MAT_DIRTY_TYPE |
- MAT_DIRTY_INVERSE);
-}
-
-
-/**
- * Set matrix to do viewport and depthrange mapping.
- * Transforms Normalized Device Coords to window/Z values.
- */
-void
-_math_matrix_viewport(GLmatrix *m, GLint x, GLint y, GLint width, GLint height,
- GLfloat zNear, GLfloat zFar, GLfloat depthMax)
-{
- m->m[MAT_SX] = (GLfloat) width / 2.0F;
- m->m[MAT_TX] = m->m[MAT_SX] + x;
- m->m[MAT_SY] = (GLfloat) height / 2.0F;
- m->m[MAT_TY] = m->m[MAT_SY] + y;
- m->m[MAT_SZ] = depthMax * ((zFar - zNear) / 2.0F);
- m->m[MAT_TZ] = depthMax * ((zFar - zNear) / 2.0F + zNear);
- m->flags = MAT_FLAG_GENERAL_SCALE | MAT_FLAG_TRANSLATION;
- m->type = MATRIX_3D_NO_ROT;
-}
-
-
-/**
- * Set a matrix to the identity matrix.
- *
- * \param mat matrix.
- *
- * Copies ::Identity into \p GLmatrix::m, and into GLmatrix::inv if not NULL.
- * Sets the matrix type to identity, and clear the dirty flags.
- */
-void
-_math_matrix_set_identity( GLmatrix *mat )
-{
- memcpy( mat->m, Identity, 16*sizeof(GLfloat) );
-
- if (mat->inv)
- memcpy( mat->inv, Identity, 16*sizeof(GLfloat) );
-
- mat->type = MATRIX_IDENTITY;
- mat->flags &= ~(MAT_DIRTY_FLAGS|
- MAT_DIRTY_TYPE|
- MAT_DIRTY_INVERSE);
-}
-
-/*@}*/
-
-
-/**********************************************************************/
-/** \name Matrix analysis */
-/*@{*/
-
-#define ZERO(x) (1<<x)
-#define ONE(x) (1<<(x+16))
-
-#define MASK_NO_TRX (ZERO(12) | ZERO(13) | ZERO(14))
-#define MASK_NO_2D_SCALE ( ONE(0) | ONE(5))
-
-#define MASK_IDENTITY ( ONE(0) | ZERO(4) | ZERO(8) | ZERO(12) |\
- ZERO(1) | ONE(5) | ZERO(9) | ZERO(13) |\
- ZERO(2) | ZERO(6) | ONE(10) | ZERO(14) |\
- ZERO(3) | ZERO(7) | ZERO(11) | ONE(15) )
-
-#define MASK_2D_NO_ROT ( ZERO(4) | ZERO(8) | \
- ZERO(1) | ZERO(9) | \
- ZERO(2) | ZERO(6) | ONE(10) | ZERO(14) |\
- ZERO(3) | ZERO(7) | ZERO(11) | ONE(15) )
-
-#define MASK_2D ( ZERO(8) | \
- ZERO(9) | \
- ZERO(2) | ZERO(6) | ONE(10) | ZERO(14) |\
- ZERO(3) | ZERO(7) | ZERO(11) | ONE(15) )
-
-
-#define MASK_3D_NO_ROT ( ZERO(4) | ZERO(8) | \
- ZERO(1) | ZERO(9) | \
- ZERO(2) | ZERO(6) | \
- ZERO(3) | ZERO(7) | ZERO(11) | ONE(15) )
-
-#define MASK_3D ( \
- \
- \
- ZERO(3) | ZERO(7) | ZERO(11) | ONE(15) )
-
-
-#define MASK_PERSPECTIVE ( ZERO(4) | ZERO(12) |\
- ZERO(1) | ZERO(13) |\
- ZERO(2) | ZERO(6) | \
- ZERO(3) | ZERO(7) | ZERO(15) )
-
-#define SQ(x) ((x)*(x))
-
-/**
- * Determine type and flags from scratch.
- *
- * \param mat matrix.
- *
- * This is expensive enough to only want to do it once.
- */
-static void analyse_from_scratch( GLmatrix *mat )
-{
- const GLfloat *m = mat->m;
- GLuint mask = 0;
- GLuint i;
-
- for (i = 0 ; i < 16 ; i++) {
- if (m[i] == 0.0) mask |= (1<<i);
- }
-
- if (m[0] == 1.0F) mask |= (1<<16);
- if (m[5] == 1.0F) mask |= (1<<21);
- if (m[10] == 1.0F) mask |= (1<<26);
- if (m[15] == 1.0F) mask |= (1<<31);
-
- mat->flags &= ~MAT_FLAGS_GEOMETRY;
-
- /* Check for translation - no-one really cares
- */
- if ((mask & MASK_NO_TRX) != MASK_NO_TRX)
- mat->flags |= MAT_FLAG_TRANSLATION;
-
- /* Do the real work
- */
- if (mask == (GLuint) MASK_IDENTITY) {
- mat->type = MATRIX_IDENTITY;
- }
- else if ((mask & MASK_2D_NO_ROT) == (GLuint) MASK_2D_NO_ROT) {
- mat->type = MATRIX_2D_NO_ROT;
-
- if ((mask & MASK_NO_2D_SCALE) != MASK_NO_2D_SCALE)
- mat->flags |= MAT_FLAG_GENERAL_SCALE;
- }
- else if ((mask & MASK_2D) == (GLuint) MASK_2D) {
- GLfloat mm = DOT2(m, m);
- GLfloat m4m4 = DOT2(m+4,m+4);
- GLfloat mm4 = DOT2(m,m+4);
-
- mat->type = MATRIX_2D;
-
- /* Check for scale */
- if (SQ(mm-1) > SQ(1e-6) ||
- SQ(m4m4-1) > SQ(1e-6))
- mat->flags |= MAT_FLAG_GENERAL_SCALE;
-
- /* Check for rotation */
- if (SQ(mm4) > SQ(1e-6))
- mat->flags |= MAT_FLAG_GENERAL_3D;
- else
- mat->flags |= MAT_FLAG_ROTATION;
-
- }
- else if ((mask & MASK_3D_NO_ROT) == (GLuint) MASK_3D_NO_ROT) {
- mat->type = MATRIX_3D_NO_ROT;
-
- /* Check for scale */
- if (SQ(m[0]-m[5]) < SQ(1e-6) &&
- SQ(m[0]-m[10]) < SQ(1e-6)) {
- if (SQ(m[0]-1.0) > SQ(1e-6)) {
- mat->flags |= MAT_FLAG_UNIFORM_SCALE;
- }
- }
- else {
- mat->flags |= MAT_FLAG_GENERAL_SCALE;
- }
- }
- else if ((mask & MASK_3D) == (GLuint) MASK_3D) {
- GLfloat c1 = DOT3(m,m);
- GLfloat c2 = DOT3(m+4,m+4);
- GLfloat c3 = DOT3(m+8,m+8);
- GLfloat d1 = DOT3(m, m+4);
- GLfloat cp[3];
-
- mat->type = MATRIX_3D;
-
- /* Check for scale */
- if (SQ(c1-c2) < SQ(1e-6) && SQ(c1-c3) < SQ(1e-6)) {
- if (SQ(c1-1.0) > SQ(1e-6))
- mat->flags |= MAT_FLAG_UNIFORM_SCALE;
- /* else no scale at all */
- }
- else {
- mat->flags |= MAT_FLAG_GENERAL_SCALE;
- }
-
- /* Check for rotation */
- if (SQ(d1) < SQ(1e-6)) {
- CROSS3( cp, m, m+4 );
- SUB_3V( cp, cp, (m+8) );
- if (LEN_SQUARED_3FV(cp) < SQ(1e-6))
- mat->flags |= MAT_FLAG_ROTATION;
- else
- mat->flags |= MAT_FLAG_GENERAL_3D;
- }
- else {
- mat->flags |= MAT_FLAG_GENERAL_3D; /* shear, etc */
- }
- }
- else if ((mask & MASK_PERSPECTIVE) == MASK_PERSPECTIVE && m[11]==-1.0F) {
- mat->type = MATRIX_PERSPECTIVE;
- mat->flags |= MAT_FLAG_GENERAL;
- }
- else {
- mat->type = MATRIX_GENERAL;
- mat->flags |= MAT_FLAG_GENERAL;
- }
-}
-
-/**
- * Analyze a matrix given that its flags are accurate.
- *
- * This is the more common operation, hopefully.
- */
-static void analyse_from_flags( GLmatrix *mat )
-{
- const GLfloat *m = mat->m;
-
- if (TEST_MAT_FLAGS(mat, 0)) {
- mat->type = MATRIX_IDENTITY;
- }
- else if (TEST_MAT_FLAGS(mat, (MAT_FLAG_TRANSLATION |
- MAT_FLAG_UNIFORM_SCALE |
- MAT_FLAG_GENERAL_SCALE))) {
- if ( m[10]==1.0F && m[14]==0.0F ) {
- mat->type = MATRIX_2D_NO_ROT;
- }
- else {
- mat->type = MATRIX_3D_NO_ROT;
- }
- }
- else if (TEST_MAT_FLAGS(mat, MAT_FLAGS_3D)) {
- if ( m[ 8]==0.0F
- && m[ 9]==0.0F
- && m[2]==0.0F && m[6]==0.0F && m[10]==1.0F && m[14]==0.0F) {
- mat->type = MATRIX_2D;
- }
- else {
- mat->type = MATRIX_3D;
- }
- }
- else if ( m[4]==0.0F && m[12]==0.0F
- && m[1]==0.0F && m[13]==0.0F
- && m[2]==0.0F && m[6]==0.0F
- && m[3]==0.0F && m[7]==0.0F && m[11]==-1.0F && m[15]==0.0F) {
- mat->type = MATRIX_PERSPECTIVE;
- }
- else {
- mat->type = MATRIX_GENERAL;
- }
-}
-
-/**
- * Analyze and update a matrix.
- *
- * \param mat matrix.
- *
- * If the matrix type is dirty then calls either analyse_from_scratch() or
- * analyse_from_flags() to determine its type, according to whether the flags
- * are dirty or not, respectively. If the matrix has an inverse and it's dirty
- * then calls matrix_invert(). Finally clears the dirty flags.
- */
-void
-_math_matrix_analyse( GLmatrix *mat )
-{
- if (mat->flags & MAT_DIRTY_TYPE) {
- if (mat->flags & MAT_DIRTY_FLAGS)
- analyse_from_scratch( mat );
- else
- analyse_from_flags( mat );
- }
-
- if (mat->inv && (mat->flags & MAT_DIRTY_INVERSE)) {
- matrix_invert( mat );
- mat->flags &= ~MAT_DIRTY_INVERSE;
- }
-
- mat->flags &= ~(MAT_DIRTY_FLAGS | MAT_DIRTY_TYPE);
-}
-
-/*@}*/
-
-
-/**
- * Test if the given matrix preserves vector lengths.
- */
-GLboolean
-_math_matrix_is_length_preserving( const GLmatrix *m )
-{
- return TEST_MAT_FLAGS( m, MAT_FLAGS_LENGTH_PRESERVING);
-}
-
-
-/**
- * Test if the given matrix does any rotation.
- * (or perhaps if the upper-left 3x3 is non-identity)
- */
-GLboolean
-_math_matrix_has_rotation( const GLmatrix *m )
-{
- if (m->flags & (MAT_FLAG_GENERAL |
- MAT_FLAG_ROTATION |
- MAT_FLAG_GENERAL_3D |
- MAT_FLAG_PERSPECTIVE))
- return GL_TRUE;
- else
- return GL_FALSE;
-}
-
-
-GLboolean
-_math_matrix_is_general_scale( const GLmatrix *m )
-{
- return (m->flags & MAT_FLAG_GENERAL_SCALE) ? GL_TRUE : GL_FALSE;
-}
-
-
-GLboolean
-_math_matrix_is_dirty( const GLmatrix *m )
-{
- return (m->flags & MAT_DIRTY) ? GL_TRUE : GL_FALSE;
-}
-
-
-/**********************************************************************/
-/** \name Matrix setup */
-/*@{*/
-
-/**
- * Copy a matrix.
- *
- * \param to destination matrix.
- * \param from source matrix.
- *
- * Copies all fields in GLmatrix, creating an inverse array if necessary.
- */
-void
-_math_matrix_copy( GLmatrix *to, const GLmatrix *from )
-{
- memcpy( to->m, from->m, sizeof(Identity) );
- to->flags = from->flags;
- to->type = from->type;
-
- if (to->inv != 0) {
- if (from->inv == 0) {
- matrix_invert( to );
- }
- else {
- memcpy(to->inv, from->inv, sizeof(GLfloat)*16);
- }
- }
-}
-
-/**
- * Loads a matrix array into GLmatrix.
- *
- * \param m matrix array.
- * \param mat matrix.
- *
- * Copies \p m into GLmatrix::m and marks the MAT_FLAG_GENERAL and MAT_DIRTY
- * flags.
- */
-void
-_math_matrix_loadf( GLmatrix *mat, const GLfloat *m )
-{
- memcpy( mat->m, m, 16*sizeof(GLfloat) );
- mat->flags = (MAT_FLAG_GENERAL | MAT_DIRTY);
-}
-
-/**
- * Matrix constructor.
- *
- * \param m matrix.
- *
- * Initialize the GLmatrix fields.
- */
-void
-_math_matrix_ctr( GLmatrix *m )
-{
- m->m = (GLfloat *) _mesa_align_malloc( 16 * sizeof(GLfloat), 16 );
- if (m->m)
- memcpy( m->m, Identity, sizeof(Identity) );
- m->inv = NULL;
- m->type = MATRIX_IDENTITY;
- m->flags = 0;
-}
-
-/**
- * Matrix destructor.
- *
- * \param m matrix.
- *
- * Frees the data in a GLmatrix.
- */
-void
-_math_matrix_dtr( GLmatrix *m )
-{
- if (m->m) {
- _mesa_align_free( m->m );
- m->m = NULL;
- }
- if (m->inv) {
- _mesa_align_free( m->inv );
- m->inv = NULL;
- }
-}
-
-/**
- * Allocate a matrix inverse.
- *
- * \param m matrix.
- *
- * Allocates the matrix inverse, GLmatrix::inv, and sets it to Identity.
- */
-void
-_math_matrix_alloc_inv( GLmatrix *m )
-{
- if (!m->inv) {
- m->inv = (GLfloat *) _mesa_align_malloc( 16 * sizeof(GLfloat), 16 );
- if (m->inv)
- memcpy( m->inv, Identity, 16 * sizeof(GLfloat) );
- }
-}
-
-/*@}*/
-
-
-/**********************************************************************/
-/** \name Matrix transpose */
-/*@{*/
-
-/**
- * Transpose a GLfloat matrix.
- *
- * \param to destination array.
- * \param from source array.
- */
-void
-_math_transposef( GLfloat to[16], const GLfloat from[16] )
-{
- to[0] = from[0];
- to[1] = from[4];
- to[2] = from[8];
- to[3] = from[12];
- to[4] = from[1];
- to[5] = from[5];
- to[6] = from[9];
- to[7] = from[13];
- to[8] = from[2];
- to[9] = from[6];
- to[10] = from[10];
- to[11] = from[14];
- to[12] = from[3];
- to[13] = from[7];
- to[14] = from[11];
- to[15] = from[15];
-}
-
-/**
- * Transpose a GLdouble matrix.
- *
- * \param to destination array.
- * \param from source array.
- */
-void
-_math_transposed( GLdouble to[16], const GLdouble from[16] )
-{
- to[0] = from[0];
- to[1] = from[4];
- to[2] = from[8];
- to[3] = from[12];
- to[4] = from[1];
- to[5] = from[5];
- to[6] = from[9];
- to[7] = from[13];
- to[8] = from[2];
- to[9] = from[6];
- to[10] = from[10];
- to[11] = from[14];
- to[12] = from[3];
- to[13] = from[7];
- to[14] = from[11];
- to[15] = from[15];
-}
-
-/**
- * Transpose a GLdouble matrix and convert to GLfloat.
- *
- * \param to destination array.
- * \param from source array.
- */
-void
-_math_transposefd( GLfloat to[16], const GLdouble from[16] )
-{
- to[0] = (GLfloat) from[0];
- to[1] = (GLfloat) from[4];
- to[2] = (GLfloat) from[8];
- to[3] = (GLfloat) from[12];
- to[4] = (GLfloat) from[1];
- to[5] = (GLfloat) from[5];
- to[6] = (GLfloat) from[9];
- to[7] = (GLfloat) from[13];
- to[8] = (GLfloat) from[2];
- to[9] = (GLfloat) from[6];
- to[10] = (GLfloat) from[10];
- to[11] = (GLfloat) from[14];
- to[12] = (GLfloat) from[3];
- to[13] = (GLfloat) from[7];
- to[14] = (GLfloat) from[11];
- to[15] = (GLfloat) from[15];
-}
-
-/*@}*/
-
-
-/**
- * Transform a 4-element row vector (1x4 matrix) by a 4x4 matrix. This
- * function is used for transforming clipping plane equations and spotlight
- * directions.
- * Mathematically, u = v * m.
- * Input: v - input vector
- * m - transformation matrix
- * Output: u - transformed vector
- */
-void
-_mesa_transform_vector( GLfloat u[4], const GLfloat v[4], const GLfloat m[16] )
-{
- const GLfloat v0 = v[0], v1 = v[1], v2 = v[2], v3 = v[3];
-#define M(row,col) m[row + col*4]
- u[0] = v0 * M(0,0) + v1 * M(1,0) + v2 * M(2,0) + v3 * M(3,0);
- u[1] = v0 * M(0,1) + v1 * M(1,1) + v2 * M(2,1) + v3 * M(3,1);
- u[2] = v0 * M(0,2) + v1 * M(1,2) + v2 * M(2,2) + v3 * M(3,2);
- u[3] = v0 * M(0,3) + v1 * M(1,3) + v2 * M(2,3) + v3 * M(3,3);
-#undef M
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.3
+ *
+ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+/**
+ * \file m_matrix.c
+ * Matrix operations.
+ *
+ * \note
+ * -# 4x4 transformation matrices are stored in memory in column major order.
+ * -# Points/vertices are to be thought of as column vectors.
+ * -# Transformation of a point p by a matrix M is: p' = M * p
+ */
+
+
+#include "main/glheader.h"
+#include "main/imports.h"
+#include "main/macros.h"
+
+#include "m_matrix.h"
+
+
+/**
+ * \defgroup MatFlags MAT_FLAG_XXX-flags
+ *
+ * Bitmasks to indicate different kinds of 4x4 matrices in GLmatrix::flags
+ * It would be nice to make all these flags private to m_matrix.c
+ */
+/*@{*/
+#define MAT_FLAG_IDENTITY 0 /**< is an identity matrix flag.
+ * (Not actually used - the identity
+ * matrix is identified by the absense
+ * of all other flags.)
+ */
+#define MAT_FLAG_GENERAL 0x1 /**< is a general matrix flag */
+#define MAT_FLAG_ROTATION 0x2 /**< is a rotation matrix flag */
+#define MAT_FLAG_TRANSLATION 0x4 /**< is a translation matrix flag */
+#define MAT_FLAG_UNIFORM_SCALE 0x8 /**< is an uniform scaling matrix flag */
+#define MAT_FLAG_GENERAL_SCALE 0x10 /**< is a general scaling matrix flag */
+#define MAT_FLAG_GENERAL_3D 0x20 /**< general 3D matrix flag */
+#define MAT_FLAG_PERSPECTIVE 0x40 /**< is a perspective proj matrix flag */
+#define MAT_FLAG_SINGULAR 0x80 /**< is a singular matrix flag */
+#define MAT_DIRTY_TYPE 0x100 /**< matrix type is dirty */
+#define MAT_DIRTY_FLAGS 0x200 /**< matrix flags are dirty */
+#define MAT_DIRTY_INVERSE 0x400 /**< matrix inverse is dirty */
+
+/** angle preserving matrix flags mask */
+#define MAT_FLAGS_ANGLE_PRESERVING (MAT_FLAG_ROTATION | \
+ MAT_FLAG_TRANSLATION | \
+ MAT_FLAG_UNIFORM_SCALE)
+
+/** geometry related matrix flags mask */
+#define MAT_FLAGS_GEOMETRY (MAT_FLAG_GENERAL | \
+ MAT_FLAG_ROTATION | \
+ MAT_FLAG_TRANSLATION | \
+ MAT_FLAG_UNIFORM_SCALE | \
+ MAT_FLAG_GENERAL_SCALE | \
+ MAT_FLAG_GENERAL_3D | \
+ MAT_FLAG_PERSPECTIVE | \
+ MAT_FLAG_SINGULAR)
+
+/** length preserving matrix flags mask */
+#define MAT_FLAGS_LENGTH_PRESERVING (MAT_FLAG_ROTATION | \
+ MAT_FLAG_TRANSLATION)
+
+
+/** 3D (non-perspective) matrix flags mask */
+#define MAT_FLAGS_3D (MAT_FLAG_ROTATION | \
+ MAT_FLAG_TRANSLATION | \
+ MAT_FLAG_UNIFORM_SCALE | \
+ MAT_FLAG_GENERAL_SCALE | \
+ MAT_FLAG_GENERAL_3D)
+
+/** dirty matrix flags mask */
+#define MAT_DIRTY (MAT_DIRTY_TYPE | \
+ MAT_DIRTY_FLAGS | \
+ MAT_DIRTY_INVERSE)
+
+/*@}*/
+
+
+/**
+ * Test geometry related matrix flags.
+ *
+ * \param mat a pointer to a GLmatrix structure.
+ * \param a flags mask.
+ *
+ * \returns non-zero if all geometry related matrix flags are contained within
+ * the mask, or zero otherwise.
+ */
+#define TEST_MAT_FLAGS(mat, a) \
+ ((MAT_FLAGS_GEOMETRY & (~(a)) & ((mat)->flags) ) == 0)
+
+
+
+/**
+ * Names of the corresponding GLmatrixtype values.
+ */
+static const char *types[] = {
+ "MATRIX_GENERAL",
+ "MATRIX_IDENTITY",
+ "MATRIX_3D_NO_ROT",
+ "MATRIX_PERSPECTIVE",
+ "MATRIX_2D",
+ "MATRIX_2D_NO_ROT",
+ "MATRIX_3D"
+};
+
+
+/**
+ * Identity matrix.
+ */
+static GLfloat Identity[16] = {
+ 1.0, 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0, 0.0,
+ 0.0, 0.0, 1.0, 0.0,
+ 0.0, 0.0, 0.0, 1.0
+};
+
+
+
+/**********************************************************************/
+/** \name Matrix multiplication */
+/*@{*/
+
+#define A(row,col) a[(col<<2)+row]
+#define B(row,col) b[(col<<2)+row]
+#define P(row,col) product[(col<<2)+row]
+
+/**
+ * Perform a full 4x4 matrix multiplication.
+ *
+ * \param a matrix.
+ * \param b matrix.
+ * \param product will receive the product of \p a and \p b.
+ *
+ * \warning Is assumed that \p product != \p b. \p product == \p a is allowed.
+ *
+ * \note KW: 4*16 = 64 multiplications
+ *
+ * \author This \c matmul was contributed by Thomas Malik
+ */
+static void matmul4( GLfloat *product, const GLfloat *a, const GLfloat *b )
+{
+ GLint i;
+ for (i = 0; i < 4; i++) {
+ const GLfloat ai0=A(i,0), ai1=A(i,1), ai2=A(i,2), ai3=A(i,3);
+ P(i,0) = ai0 * B(0,0) + ai1 * B(1,0) + ai2 * B(2,0) + ai3 * B(3,0);
+ P(i,1) = ai0 * B(0,1) + ai1 * B(1,1) + ai2 * B(2,1) + ai3 * B(3,1);
+ P(i,2) = ai0 * B(0,2) + ai1 * B(1,2) + ai2 * B(2,2) + ai3 * B(3,2);
+ P(i,3) = ai0 * B(0,3) + ai1 * B(1,3) + ai2 * B(2,3) + ai3 * B(3,3);
+ }
+}
+
+/**
+ * Multiply two matrices known to occupy only the top three rows, such
+ * as typical model matrices, and orthogonal matrices.
+ *
+ * \param a matrix.
+ * \param b matrix.
+ * \param product will receive the product of \p a and \p b.
+ */
+static void matmul34( GLfloat *product, const GLfloat *a, const GLfloat *b )
+{
+ GLint i;
+ for (i = 0; i < 3; i++) {
+ const GLfloat ai0=A(i,0), ai1=A(i,1), ai2=A(i,2), ai3=A(i,3);
+ P(i,0) = ai0 * B(0,0) + ai1 * B(1,0) + ai2 * B(2,0);
+ P(i,1) = ai0 * B(0,1) + ai1 * B(1,1) + ai2 * B(2,1);
+ P(i,2) = ai0 * B(0,2) + ai1 * B(1,2) + ai2 * B(2,2);
+ P(i,3) = ai0 * B(0,3) + ai1 * B(1,3) + ai2 * B(2,3) + ai3;
+ }
+ P(3,0) = 0;
+ P(3,1) = 0;
+ P(3,2) = 0;
+ P(3,3) = 1;
+}
+
+#undef A
+#undef B
+#undef P
+
+/**
+ * Multiply a matrix by an array of floats with known properties.
+ *
+ * \param mat pointer to a GLmatrix structure containing the left multiplication
+ * matrix, and that will receive the product result.
+ * \param m right multiplication matrix array.
+ * \param flags flags of the matrix \p m.
+ *
+ * Joins both flags and marks the type and inverse as dirty. Calls matmul34()
+ * if both matrices are 3D, or matmul4() otherwise.
+ */
+static void matrix_multf( GLmatrix *mat, const GLfloat *m, GLuint flags )
+{
+ mat->flags |= (flags | MAT_DIRTY_TYPE | MAT_DIRTY_INVERSE);
+
+ if (TEST_MAT_FLAGS(mat, MAT_FLAGS_3D))
+ matmul34( mat->m, mat->m, m );
+ else
+ matmul4( mat->m, mat->m, m );
+}
+
+/**
+ * Matrix multiplication.
+ *
+ * \param dest destination matrix.
+ * \param a left matrix.
+ * \param b right matrix.
+ *
+ * Joins both flags and marks the type and inverse as dirty. Calls matmul34()
+ * if both matrices are 3D, or matmul4() otherwise.
+ */
+void
+_math_matrix_mul_matrix( GLmatrix *dest, const GLmatrix *a, const GLmatrix *b )
+{
+ dest->flags = (a->flags |
+ b->flags |
+ MAT_DIRTY_TYPE |
+ MAT_DIRTY_INVERSE);
+
+ if (TEST_MAT_FLAGS(dest, MAT_FLAGS_3D))
+ matmul34( dest->m, a->m, b->m );
+ else
+ matmul4( dest->m, a->m, b->m );
+}
+
+/**
+ * Matrix multiplication.
+ *
+ * \param dest left and destination matrix.
+ * \param m right matrix array.
+ *
+ * Marks the matrix flags with general flag, and type and inverse dirty flags.
+ * Calls matmul4() for the multiplication.
+ */
+void
+_math_matrix_mul_floats( GLmatrix *dest, const GLfloat *m )
+{
+ dest->flags |= (MAT_FLAG_GENERAL |
+ MAT_DIRTY_TYPE |
+ MAT_DIRTY_INVERSE |
+ MAT_DIRTY_FLAGS);
+
+ matmul4( dest->m, dest->m, m );
+}
+
+/*@}*/
+
+
+/**********************************************************************/
+/** \name Matrix output */
+/*@{*/
+
+/**
+ * Print a matrix array.
+ *
+ * \param m matrix array.
+ *
+ * Called by _math_matrix_print() to print a matrix or its inverse.
+ */
+static void print_matrix_floats( const GLfloat m[16] )
+{
+ int i;
+ for (i=0;i<4;i++) {
+ _mesa_debug(NULL,"\t%f %f %f %f\n", m[i], m[4+i], m[8+i], m[12+i] );
+ }
+}
+
+/**
+ * Dumps the contents of a GLmatrix structure.
+ *
+ * \param m pointer to the GLmatrix structure.
+ */
+void
+_math_matrix_print( const GLmatrix *m )
+{
+ _mesa_debug(NULL, "Matrix type: %s, flags: %x\n", types[m->type], m->flags);
+ print_matrix_floats(m->m);
+ _mesa_debug(NULL, "Inverse: \n");
+ if (m->inv) {
+ GLfloat prod[16];
+ print_matrix_floats(m->inv);
+ matmul4(prod, m->m, m->inv);
+ _mesa_debug(NULL, "Mat * Inverse:\n");
+ print_matrix_floats(prod);
+ }
+ else {
+ _mesa_debug(NULL, " - not available\n");
+ }
+}
+
+/*@}*/
+
+
+/**
+ * References an element of 4x4 matrix.
+ *
+ * \param m matrix array.
+ * \param c column of the desired element.
+ * \param r row of the desired element.
+ *
+ * \return value of the desired element.
+ *
+ * Calculate the linear storage index of the element and references it.
+ */
+#define MAT(m,r,c) (m)[(c)*4+(r)]
+
+
+/**********************************************************************/
+/** \name Matrix inversion */
+/*@{*/
+
+/**
+ * Swaps the values of two floating pointer variables.
+ *
+ * Used by invert_matrix_general() to swap the row pointers.
+ */
+#define SWAP_ROWS(a, b) { GLfloat *_tmp = a; (a)=(b); (b)=_tmp; }
+
+/**
+ * Compute inverse of 4x4 transformation matrix.
+ *
+ * \param mat pointer to a GLmatrix structure. The matrix inverse will be
+ * stored in the GLmatrix::inv attribute.
+ *
+ * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
+ *
+ * \author
+ * Code contributed by Jacques Leroy jle@star.be
+ *
+ * Calculates the inverse matrix by performing the gaussian matrix reduction
+ * with partial pivoting followed by back/substitution with the loops manually
+ * unrolled.
+ */
+static GLboolean invert_matrix_general( GLmatrix *mat )
+{
+ const GLfloat *m = mat->m;
+ GLfloat *out = mat->inv;
+ GLfloat wtmp[4][8];
+ GLfloat m0, m1, m2, m3, s;
+ GLfloat *r0, *r1, *r2, *r3;
+
+ r0 = wtmp[0], r1 = wtmp[1], r2 = wtmp[2], r3 = wtmp[3];
+
+ r0[0] = MAT(m,0,0), r0[1] = MAT(m,0,1),
+ r0[2] = MAT(m,0,2), r0[3] = MAT(m,0,3),
+ r0[4] = 1.0, r0[5] = r0[6] = r0[7] = 0.0,
+
+ r1[0] = MAT(m,1,0), r1[1] = MAT(m,1,1),
+ r1[2] = MAT(m,1,2), r1[3] = MAT(m,1,3),
+ r1[5] = 1.0, r1[4] = r1[6] = r1[7] = 0.0,
+
+ r2[0] = MAT(m,2,0), r2[1] = MAT(m,2,1),
+ r2[2] = MAT(m,2,2), r2[3] = MAT(m,2,3),
+ r2[6] = 1.0, r2[4] = r2[5] = r2[7] = 0.0,
+
+ r3[0] = MAT(m,3,0), r3[1] = MAT(m,3,1),
+ r3[2] = MAT(m,3,2), r3[3] = MAT(m,3,3),
+ r3[7] = 1.0, r3[4] = r3[5] = r3[6] = 0.0;
+
+ /* choose pivot - or die */
+ if (FABSF(r3[0])>FABSF(r2[0])) SWAP_ROWS(r3, r2);
+ if (FABSF(r2[0])>FABSF(r1[0])) SWAP_ROWS(r2, r1);
+ if (FABSF(r1[0])>FABSF(r0[0])) SWAP_ROWS(r1, r0);
+ if (0.0 == r0[0]) return GL_FALSE;
+
+ /* eliminate first variable */
+ m1 = r1[0]/r0[0]; m2 = r2[0]/r0[0]; m3 = r3[0]/r0[0];
+ s = r0[1]; r1[1] -= m1 * s; r2[1] -= m2 * s; r3[1] -= m3 * s;
+ s = r0[2]; r1[2] -= m1 * s; r2[2] -= m2 * s; r3[2] -= m3 * s;
+ s = r0[3]; r1[3] -= m1 * s; r2[3] -= m2 * s; r3[3] -= m3 * s;
+ s = r0[4];
+ if (s != 0.0) { r1[4] -= m1 * s; r2[4] -= m2 * s; r3[4] -= m3 * s; }
+ s = r0[5];
+ if (s != 0.0) { r1[5] -= m1 * s; r2[5] -= m2 * s; r3[5] -= m3 * s; }
+ s = r0[6];
+ if (s != 0.0) { r1[6] -= m1 * s; r2[6] -= m2 * s; r3[6] -= m3 * s; }
+ s = r0[7];
+ if (s != 0.0) { r1[7] -= m1 * s; r2[7] -= m2 * s; r3[7] -= m3 * s; }
+
+ /* choose pivot - or die */
+ if (FABSF(r3[1])>FABSF(r2[1])) SWAP_ROWS(r3, r2);
+ if (FABSF(r2[1])>FABSF(r1[1])) SWAP_ROWS(r2, r1);
+ if (0.0 == r1[1]) return GL_FALSE;
+
+ /* eliminate second variable */
+ m2 = r2[1]/r1[1]; m3 = r3[1]/r1[1];
+ r2[2] -= m2 * r1[2]; r3[2] -= m3 * r1[2];
+ r2[3] -= m2 * r1[3]; r3[3] -= m3 * r1[3];
+ s = r1[4]; if (0.0 != s) { r2[4] -= m2 * s; r3[4] -= m3 * s; }
+ s = r1[5]; if (0.0 != s) { r2[5] -= m2 * s; r3[5] -= m3 * s; }
+ s = r1[6]; if (0.0 != s) { r2[6] -= m2 * s; r3[6] -= m3 * s; }
+ s = r1[7]; if (0.0 != s) { r2[7] -= m2 * s; r3[7] -= m3 * s; }
+
+ /* choose pivot - or die */
+ if (FABSF(r3[2])>FABSF(r2[2])) SWAP_ROWS(r3, r2);
+ if (0.0 == r2[2]) return GL_FALSE;
+
+ /* eliminate third variable */
+ m3 = r3[2]/r2[2];
+ r3[3] -= m3 * r2[3], r3[4] -= m3 * r2[4],
+ r3[5] -= m3 * r2[5], r3[6] -= m3 * r2[6],
+ r3[7] -= m3 * r2[7];
+
+ /* last check */
+ if (0.0 == r3[3]) return GL_FALSE;
+
+ s = 1.0F/r3[3]; /* now back substitute row 3 */
+ r3[4] *= s; r3[5] *= s; r3[6] *= s; r3[7] *= s;
+
+ m2 = r2[3]; /* now back substitute row 2 */
+ s = 1.0F/r2[2];
+ r2[4] = s * (r2[4] - r3[4] * m2), r2[5] = s * (r2[5] - r3[5] * m2),
+ r2[6] = s * (r2[6] - r3[6] * m2), r2[7] = s * (r2[7] - r3[7] * m2);
+ m1 = r1[3];
+ r1[4] -= r3[4] * m1, r1[5] -= r3[5] * m1,
+ r1[6] -= r3[6] * m1, r1[7] -= r3[7] * m1;
+ m0 = r0[3];
+ r0[4] -= r3[4] * m0, r0[5] -= r3[5] * m0,
+ r0[6] -= r3[6] * m0, r0[7] -= r3[7] * m0;
+
+ m1 = r1[2]; /* now back substitute row 1 */
+ s = 1.0F/r1[1];
+ r1[4] = s * (r1[4] - r2[4] * m1), r1[5] = s * (r1[5] - r2[5] * m1),
+ r1[6] = s * (r1[6] - r2[6] * m1), r1[7] = s * (r1[7] - r2[7] * m1);
+ m0 = r0[2];
+ r0[4] -= r2[4] * m0, r0[5] -= r2[5] * m0,
+ r0[6] -= r2[6] * m0, r0[7] -= r2[7] * m0;
+
+ m0 = r0[1]; /* now back substitute row 0 */
+ s = 1.0F/r0[0];
+ r0[4] = s * (r0[4] - r1[4] * m0), r0[5] = s * (r0[5] - r1[5] * m0),
+ r0[6] = s * (r0[6] - r1[6] * m0), r0[7] = s * (r0[7] - r1[7] * m0);
+
+ MAT(out,0,0) = r0[4]; MAT(out,0,1) = r0[5],
+ MAT(out,0,2) = r0[6]; MAT(out,0,3) = r0[7],
+ MAT(out,1,0) = r1[4]; MAT(out,1,1) = r1[5],
+ MAT(out,1,2) = r1[6]; MAT(out,1,3) = r1[7],
+ MAT(out,2,0) = r2[4]; MAT(out,2,1) = r2[5],
+ MAT(out,2,2) = r2[6]; MAT(out,2,3) = r2[7],
+ MAT(out,3,0) = r3[4]; MAT(out,3,1) = r3[5],
+ MAT(out,3,2) = r3[6]; MAT(out,3,3) = r3[7];
+
+ return GL_TRUE;
+}
+#undef SWAP_ROWS
+
+/**
+ * Compute inverse of a general 3d transformation matrix.
+ *
+ * \param mat pointer to a GLmatrix structure. The matrix inverse will be
+ * stored in the GLmatrix::inv attribute.
+ *
+ * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
+ *
+ * \author Adapted from graphics gems II.
+ *
+ * Calculates the inverse of the upper left by first calculating its
+ * determinant and multiplying it to the symmetric adjust matrix of each
+ * element. Finally deals with the translation part by transforming the
+ * original translation vector using by the calculated submatrix inverse.
+ */
+static GLboolean invert_matrix_3d_general( GLmatrix *mat )
+{
+ const GLfloat *in = mat->m;
+ GLfloat *out = mat->inv;
+ GLfloat pos, neg, t;
+ GLfloat det;
+
+ /* Calculate the determinant of upper left 3x3 submatrix and
+ * determine if the matrix is singular.
+ */
+ pos = neg = 0.0;
+ t = MAT(in,0,0) * MAT(in,1,1) * MAT(in,2,2);
+ if (t >= 0.0) pos += t; else neg += t;
+
+ t = MAT(in,1,0) * MAT(in,2,1) * MAT(in,0,2);
+ if (t >= 0.0) pos += t; else neg += t;
+
+ t = MAT(in,2,0) * MAT(in,0,1) * MAT(in,1,2);
+ if (t >= 0.0) pos += t; else neg += t;
+
+ t = -MAT(in,2,0) * MAT(in,1,1) * MAT(in,0,2);
+ if (t >= 0.0) pos += t; else neg += t;
+
+ t = -MAT(in,1,0) * MAT(in,0,1) * MAT(in,2,2);
+ if (t >= 0.0) pos += t; else neg += t;
+
+ t = -MAT(in,0,0) * MAT(in,2,1) * MAT(in,1,2);
+ if (t >= 0.0) pos += t; else neg += t;
+
+ det = pos + neg;
+
+ if (det*det < 1e-25)
+ return GL_FALSE;
+
+ det = 1.0F / det;
+ MAT(out,0,0) = ( (MAT(in,1,1)*MAT(in,2,2) - MAT(in,2,1)*MAT(in,1,2) )*det);
+ MAT(out,0,1) = (- (MAT(in,0,1)*MAT(in,2,2) - MAT(in,2,1)*MAT(in,0,2) )*det);
+ MAT(out,0,2) = ( (MAT(in,0,1)*MAT(in,1,2) - MAT(in,1,1)*MAT(in,0,2) )*det);
+ MAT(out,1,0) = (- (MAT(in,1,0)*MAT(in,2,2) - MAT(in,2,0)*MAT(in,1,2) )*det);
+ MAT(out,1,1) = ( (MAT(in,0,0)*MAT(in,2,2) - MAT(in,2,0)*MAT(in,0,2) )*det);
+ MAT(out,1,2) = (- (MAT(in,0,0)*MAT(in,1,2) - MAT(in,1,0)*MAT(in,0,2) )*det);
+ MAT(out,2,0) = ( (MAT(in,1,0)*MAT(in,2,1) - MAT(in,2,0)*MAT(in,1,1) )*det);
+ MAT(out,2,1) = (- (MAT(in,0,0)*MAT(in,2,1) - MAT(in,2,0)*MAT(in,0,1) )*det);
+ MAT(out,2,2) = ( (MAT(in,0,0)*MAT(in,1,1) - MAT(in,1,0)*MAT(in,0,1) )*det);
+
+ /* Do the translation part */
+ MAT(out,0,3) = - (MAT(in,0,3) * MAT(out,0,0) +
+ MAT(in,1,3) * MAT(out,0,1) +
+ MAT(in,2,3) * MAT(out,0,2) );
+ MAT(out,1,3) = - (MAT(in,0,3) * MAT(out,1,0) +
+ MAT(in,1,3) * MAT(out,1,1) +
+ MAT(in,2,3) * MAT(out,1,2) );
+ MAT(out,2,3) = - (MAT(in,0,3) * MAT(out,2,0) +
+ MAT(in,1,3) * MAT(out,2,1) +
+ MAT(in,2,3) * MAT(out,2,2) );
+
+ return GL_TRUE;
+}
+
+/**
+ * Compute inverse of a 3d transformation matrix.
+ *
+ * \param mat pointer to a GLmatrix structure. The matrix inverse will be
+ * stored in the GLmatrix::inv attribute.
+ *
+ * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
+ *
+ * If the matrix is not an angle preserving matrix then calls
+ * invert_matrix_3d_general for the actual calculation. Otherwise calculates
+ * the inverse matrix analyzing and inverting each of the scaling, rotation and
+ * translation parts.
+ */
+static GLboolean invert_matrix_3d( GLmatrix *mat )
+{
+ const GLfloat *in = mat->m;
+ GLfloat *out = mat->inv;
+
+ if (!TEST_MAT_FLAGS(mat, MAT_FLAGS_ANGLE_PRESERVING)) {
+ return invert_matrix_3d_general( mat );
+ }
+
+ if (mat->flags & MAT_FLAG_UNIFORM_SCALE) {
+ GLfloat scale = (MAT(in,0,0) * MAT(in,0,0) +
+ MAT(in,0,1) * MAT(in,0,1) +
+ MAT(in,0,2) * MAT(in,0,2));
+
+ if (scale == 0.0)
+ return GL_FALSE;
+
+ scale = 1.0F / scale;
+
+ /* Transpose and scale the 3 by 3 upper-left submatrix. */
+ MAT(out,0,0) = scale * MAT(in,0,0);
+ MAT(out,1,0) = scale * MAT(in,0,1);
+ MAT(out,2,0) = scale * MAT(in,0,2);
+ MAT(out,0,1) = scale * MAT(in,1,0);
+ MAT(out,1,1) = scale * MAT(in,1,1);
+ MAT(out,2,1) = scale * MAT(in,1,2);
+ MAT(out,0,2) = scale * MAT(in,2,0);
+ MAT(out,1,2) = scale * MAT(in,2,1);
+ MAT(out,2,2) = scale * MAT(in,2,2);
+ }
+ else if (mat->flags & MAT_FLAG_ROTATION) {
+ /* Transpose the 3 by 3 upper-left submatrix. */
+ MAT(out,0,0) = MAT(in,0,0);
+ MAT(out,1,0) = MAT(in,0,1);
+ MAT(out,2,0) = MAT(in,0,2);
+ MAT(out,0,1) = MAT(in,1,0);
+ MAT(out,1,1) = MAT(in,1,1);
+ MAT(out,2,1) = MAT(in,1,2);
+ MAT(out,0,2) = MAT(in,2,0);
+ MAT(out,1,2) = MAT(in,2,1);
+ MAT(out,2,2) = MAT(in,2,2);
+ }
+ else {
+ /* pure translation */
+ memcpy( out, Identity, sizeof(Identity) );
+ MAT(out,0,3) = - MAT(in,0,3);
+ MAT(out,1,3) = - MAT(in,1,3);
+ MAT(out,2,3) = - MAT(in,2,3);
+ return GL_TRUE;
+ }
+
+ if (mat->flags & MAT_FLAG_TRANSLATION) {
+ /* Do the translation part */
+ MAT(out,0,3) = - (MAT(in,0,3) * MAT(out,0,0) +
+ MAT(in,1,3) * MAT(out,0,1) +
+ MAT(in,2,3) * MAT(out,0,2) );
+ MAT(out,1,3) = - (MAT(in,0,3) * MAT(out,1,0) +
+ MAT(in,1,3) * MAT(out,1,1) +
+ MAT(in,2,3) * MAT(out,1,2) );
+ MAT(out,2,3) = - (MAT(in,0,3) * MAT(out,2,0) +
+ MAT(in,1,3) * MAT(out,2,1) +
+ MAT(in,2,3) * MAT(out,2,2) );
+ }
+ else {
+ MAT(out,0,3) = MAT(out,1,3) = MAT(out,2,3) = 0.0;
+ }
+
+ return GL_TRUE;
+}
+
+/**
+ * Compute inverse of an identity transformation matrix.
+ *
+ * \param mat pointer to a GLmatrix structure. The matrix inverse will be
+ * stored in the GLmatrix::inv attribute.
+ *
+ * \return always GL_TRUE.
+ *
+ * Simply copies Identity into GLmatrix::inv.
+ */
+static GLboolean invert_matrix_identity( GLmatrix *mat )
+{
+ memcpy( mat->inv, Identity, sizeof(Identity) );
+ return GL_TRUE;
+}
+
+/**
+ * Compute inverse of a no-rotation 3d transformation matrix.
+ *
+ * \param mat pointer to a GLmatrix structure. The matrix inverse will be
+ * stored in the GLmatrix::inv attribute.
+ *
+ * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
+ *
+ * Calculates the
+ */
+static GLboolean invert_matrix_3d_no_rot( GLmatrix *mat )
+{
+ const GLfloat *in = mat->m;
+ GLfloat *out = mat->inv;
+
+ if (MAT(in,0,0) == 0 || MAT(in,1,1) == 0 || MAT(in,2,2) == 0 )
+ return GL_FALSE;
+
+ memcpy( out, Identity, 16 * sizeof(GLfloat) );
+ MAT(out,0,0) = 1.0F / MAT(in,0,0);
+ MAT(out,1,1) = 1.0F / MAT(in,1,1);
+ MAT(out,2,2) = 1.0F / MAT(in,2,2);
+
+ if (mat->flags & MAT_FLAG_TRANSLATION) {
+ MAT(out,0,3) = - (MAT(in,0,3) * MAT(out,0,0));
+ MAT(out,1,3) = - (MAT(in,1,3) * MAT(out,1,1));
+ MAT(out,2,3) = - (MAT(in,2,3) * MAT(out,2,2));
+ }
+
+ return GL_TRUE;
+}
+
+/**
+ * Compute inverse of a no-rotation 2d transformation matrix.
+ *
+ * \param mat pointer to a GLmatrix structure. The matrix inverse will be
+ * stored in the GLmatrix::inv attribute.
+ *
+ * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
+ *
+ * Calculates the inverse matrix by applying the inverse scaling and
+ * translation to the identity matrix.
+ */
+static GLboolean invert_matrix_2d_no_rot( GLmatrix *mat )
+{
+ const GLfloat *in = mat->m;
+ GLfloat *out = mat->inv;
+
+ if (MAT(in,0,0) == 0 || MAT(in,1,1) == 0)
+ return GL_FALSE;
+
+ memcpy( out, Identity, 16 * sizeof(GLfloat) );
+ MAT(out,0,0) = 1.0F / MAT(in,0,0);
+ MAT(out,1,1) = 1.0F / MAT(in,1,1);
+
+ if (mat->flags & MAT_FLAG_TRANSLATION) {
+ MAT(out,0,3) = - (MAT(in,0,3) * MAT(out,0,0));
+ MAT(out,1,3) = - (MAT(in,1,3) * MAT(out,1,1));
+ }
+
+ return GL_TRUE;
+}
+
+#if 0
+/* broken */
+static GLboolean invert_matrix_perspective( GLmatrix *mat )
+{
+ const GLfloat *in = mat->m;
+ GLfloat *out = mat->inv;
+
+ if (MAT(in,2,3) == 0)
+ return GL_FALSE;
+
+ memcpy( out, Identity, 16 * sizeof(GLfloat) );
+
+ MAT(out,0,0) = 1.0F / MAT(in,0,0);
+ MAT(out,1,1) = 1.0F / MAT(in,1,1);
+
+ MAT(out,0,3) = MAT(in,0,2);
+ MAT(out,1,3) = MAT(in,1,2);
+
+ MAT(out,2,2) = 0;
+ MAT(out,2,3) = -1;
+
+ MAT(out,3,2) = 1.0F / MAT(in,2,3);
+ MAT(out,3,3) = MAT(in,2,2) * MAT(out,3,2);
+
+ return GL_TRUE;
+}
+#endif
+
+/**
+ * Matrix inversion function pointer type.
+ */
+typedef GLboolean (*inv_mat_func)( GLmatrix *mat );
+
+/**
+ * Table of the matrix inversion functions according to the matrix type.
+ */
+static inv_mat_func inv_mat_tab[7] = {
+ invert_matrix_general,
+ invert_matrix_identity,
+ invert_matrix_3d_no_rot,
+#if 0
+ /* Don't use this function for now - it fails when the projection matrix
+ * is premultiplied by a translation (ala Chromium's tilesort SPU).
+ */
+ invert_matrix_perspective,
+#else
+ invert_matrix_general,
+#endif
+ invert_matrix_3d, /* lazy! */
+ invert_matrix_2d_no_rot,
+ invert_matrix_3d
+};
+
+/**
+ * Compute inverse of a transformation matrix.
+ *
+ * \param mat pointer to a GLmatrix structure. The matrix inverse will be
+ * stored in the GLmatrix::inv attribute.
+ *
+ * \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
+ *
+ * Calls the matrix inversion function in inv_mat_tab corresponding to the
+ * given matrix type. In case of failure, updates the MAT_FLAG_SINGULAR flag,
+ * and copies the identity matrix into GLmatrix::inv.
+ */
+static GLboolean matrix_invert( GLmatrix *mat )
+{
+ if (inv_mat_tab[mat->type](mat)) {
+ mat->flags &= ~MAT_FLAG_SINGULAR;
+ return GL_TRUE;
+ } else {
+ mat->flags |= MAT_FLAG_SINGULAR;
+ memcpy( mat->inv, Identity, sizeof(Identity) );
+ return GL_FALSE;
+ }
+}
+
+/*@}*/
+
+
+/**********************************************************************/
+/** \name Matrix generation */
+/*@{*/
+
+/**
+ * Generate a 4x4 transformation matrix from glRotate parameters, and
+ * post-multiply the input matrix by it.
+ *
+ * \author
+ * This function was contributed by Erich Boleyn (erich@uruk.org).
+ * Optimizations contributed by Rudolf Opalla (rudi@khm.de).
+ */
+void
+_math_matrix_rotate( GLmatrix *mat,
+ GLfloat angle, GLfloat x, GLfloat y, GLfloat z )
+{
+ GLfloat xx, yy, zz, xy, yz, zx, xs, ys, zs, one_c, s, c;
+ GLfloat m[16];
+ GLboolean optimized;
+
+ s = (GLfloat) sin( angle * DEG2RAD );
+ c = (GLfloat) cos( angle * DEG2RAD );
+
+ memcpy(m, Identity, sizeof(GLfloat)*16);
+ optimized = GL_FALSE;
+
+#define M(row,col) m[col*4+row]
+
+ if (x == 0.0F) {
+ if (y == 0.0F) {
+ if (z != 0.0F) {
+ optimized = GL_TRUE;
+ /* rotate only around z-axis */
+ M(0,0) = c;
+ M(1,1) = c;
+ if (z < 0.0F) {
+ M(0,1) = s;
+ M(1,0) = -s;
+ }
+ else {
+ M(0,1) = -s;
+ M(1,0) = s;
+ }
+ }
+ }
+ else if (z == 0.0F) {
+ optimized = GL_TRUE;
+ /* rotate only around y-axis */
+ M(0,0) = c;
+ M(2,2) = c;
+ if (y < 0.0F) {
+ M(0,2) = -s;
+ M(2,0) = s;
+ }
+ else {
+ M(0,2) = s;
+ M(2,0) = -s;
+ }
+ }
+ }
+ else if (y == 0.0F) {
+ if (z == 0.0F) {
+ optimized = GL_TRUE;
+ /* rotate only around x-axis */
+ M(1,1) = c;
+ M(2,2) = c;
+ if (x < 0.0F) {
+ M(1,2) = s;
+ M(2,1) = -s;
+ }
+ else {
+ M(1,2) = -s;
+ M(2,1) = s;
+ }
+ }
+ }
+
+ if (!optimized) {
+ const GLfloat mag = SQRTF(x * x + y * y + z * z);
+
+ if (mag <= 1.0e-4) {
+ /* no rotation, leave mat as-is */
+ return;
+ }
+
+ x /= mag;
+ y /= mag;
+ z /= mag;
+
+
+ /*
+ * Arbitrary axis rotation matrix.
+ *
+ * This is composed of 5 matrices, Rz, Ry, T, Ry', Rz', multiplied
+ * like so: Rz * Ry * T * Ry' * Rz'. T is the final rotation
+ * (which is about the X-axis), and the two composite transforms
+ * Ry' * Rz' and Rz * Ry are (respectively) the rotations necessary
+ * from the arbitrary axis to the X-axis then back. They are
+ * all elementary rotations.
+ *
+ * Rz' is a rotation about the Z-axis, to bring the axis vector
+ * into the x-z plane. Then Ry' is applied, rotating about the
+ * Y-axis to bring the axis vector parallel with the X-axis. The
+ * rotation about the X-axis is then performed. Ry and Rz are
+ * simply the respective inverse transforms to bring the arbitrary
+ * axis back to its original orientation. The first transforms
+ * Rz' and Ry' are considered inverses, since the data from the
+ * arbitrary axis gives you info on how to get to it, not how
+ * to get away from it, and an inverse must be applied.
+ *
+ * The basic calculation used is to recognize that the arbitrary
+ * axis vector (x, y, z), since it is of unit length, actually
+ * represents the sines and cosines of the angles to rotate the
+ * X-axis to the same orientation, with theta being the angle about
+ * Z and phi the angle about Y (in the order described above)
+ * as follows:
+ *
+ * cos ( theta ) = x / sqrt ( 1 - z^2 )
+ * sin ( theta ) = y / sqrt ( 1 - z^2 )
+ *
+ * cos ( phi ) = sqrt ( 1 - z^2 )
+ * sin ( phi ) = z
+ *
+ * Note that cos ( phi ) can further be inserted to the above
+ * formulas:
+ *
+ * cos ( theta ) = x / cos ( phi )
+ * sin ( theta ) = y / sin ( phi )
+ *
+ * ...etc. Because of those relations and the standard trigonometric
+ * relations, it is pssible to reduce the transforms down to what
+ * is used below. It may be that any primary axis chosen will give the
+ * same results (modulo a sign convention) using thie method.
+ *
+ * Particularly nice is to notice that all divisions that might
+ * have caused trouble when parallel to certain planes or
+ * axis go away with care paid to reducing the expressions.
+ * After checking, it does perform correctly under all cases, since
+ * in all the cases of division where the denominator would have
+ * been zero, the numerator would have been zero as well, giving
+ * the expected result.
+ */
+
+ xx = x * x;
+ yy = y * y;
+ zz = z * z;
+ xy = x * y;
+ yz = y * z;
+ zx = z * x;
+ xs = x * s;
+ ys = y * s;
+ zs = z * s;
+ one_c = 1.0F - c;
+
+ /* We already hold the identity-matrix so we can skip some statements */
+ M(0,0) = (one_c * xx) + c;
+ M(0,1) = (one_c * xy) - zs;
+ M(0,2) = (one_c * zx) + ys;
+/* M(0,3) = 0.0F; */
+
+ M(1,0) = (one_c * xy) + zs;
+ M(1,1) = (one_c * yy) + c;
+ M(1,2) = (one_c * yz) - xs;
+/* M(1,3) = 0.0F; */
+
+ M(2,0) = (one_c * zx) - ys;
+ M(2,1) = (one_c * yz) + xs;
+ M(2,2) = (one_c * zz) + c;
+/* M(2,3) = 0.0F; */
+
+/*
+ M(3,0) = 0.0F;
+ M(3,1) = 0.0F;
+ M(3,2) = 0.0F;
+ M(3,3) = 1.0F;
+*/
+ }
+#undef M
+
+ matrix_multf( mat, m, MAT_FLAG_ROTATION );
+}
+
+/**
+ * Apply a perspective projection matrix.
+ *
+ * \param mat matrix to apply the projection.
+ * \param left left clipping plane coordinate.
+ * \param right right clipping plane coordinate.
+ * \param bottom bottom clipping plane coordinate.
+ * \param top top clipping plane coordinate.
+ * \param nearval distance to the near clipping plane.
+ * \param farval distance to the far clipping plane.
+ *
+ * Creates the projection matrix and multiplies it with \p mat, marking the
+ * MAT_FLAG_PERSPECTIVE flag.
+ */
+void
+_math_matrix_frustum( GLmatrix *mat,
+ GLfloat left, GLfloat right,
+ GLfloat bottom, GLfloat top,
+ GLfloat nearval, GLfloat farval )
+{
+ GLfloat x, y, a, b, c, d;
+ GLfloat m[16];
+
+ x = (2.0F*nearval) / (right-left);
+ y = (2.0F*nearval) / (top-bottom);
+ a = (right+left) / (right-left);
+ b = (top+bottom) / (top-bottom);
+ c = -(farval+nearval) / ( farval-nearval);
+ d = -(2.0F*farval*nearval) / (farval-nearval); /* error? */
+
+#define M(row,col) m[col*4+row]
+ M(0,0) = x; M(0,1) = 0.0F; M(0,2) = a; M(0,3) = 0.0F;
+ M(1,0) = 0.0F; M(1,1) = y; M(1,2) = b; M(1,3) = 0.0F;
+ M(2,0) = 0.0F; M(2,1) = 0.0F; M(2,2) = c; M(2,3) = d;
+ M(3,0) = 0.0F; M(3,1) = 0.0F; M(3,2) = -1.0F; M(3,3) = 0.0F;
+#undef M
+
+ matrix_multf( mat, m, MAT_FLAG_PERSPECTIVE );
+}
+
+/**
+ * Apply an orthographic projection matrix.
+ *
+ * \param mat matrix to apply the projection.
+ * \param left left clipping plane coordinate.
+ * \param right right clipping plane coordinate.
+ * \param bottom bottom clipping plane coordinate.
+ * \param top top clipping plane coordinate.
+ * \param nearval distance to the near clipping plane.
+ * \param farval distance to the far clipping plane.
+ *
+ * Creates the projection matrix and multiplies it with \p mat, marking the
+ * MAT_FLAG_GENERAL_SCALE and MAT_FLAG_TRANSLATION flags.
+ */
+void
+_math_matrix_ortho( GLmatrix *mat,
+ GLfloat left, GLfloat right,
+ GLfloat bottom, GLfloat top,
+ GLfloat nearval, GLfloat farval )
+{
+ GLfloat m[16];
+
+#define M(row,col) m[col*4+row]
+ M(0,0) = 2.0F / (right-left);
+ M(0,1) = 0.0F;
+ M(0,2) = 0.0F;
+ M(0,3) = -(right+left) / (right-left);
+
+ M(1,0) = 0.0F;
+ M(1,1) = 2.0F / (top-bottom);
+ M(1,2) = 0.0F;
+ M(1,3) = -(top+bottom) / (top-bottom);
+
+ M(2,0) = 0.0F;
+ M(2,1) = 0.0F;
+ M(2,2) = -2.0F / (farval-nearval);
+ M(2,3) = -(farval+nearval) / (farval-nearval);
+
+ M(3,0) = 0.0F;
+ M(3,1) = 0.0F;
+ M(3,2) = 0.0F;
+ M(3,3) = 1.0F;
+#undef M
+
+ matrix_multf( mat, m, (MAT_FLAG_GENERAL_SCALE|MAT_FLAG_TRANSLATION));
+}
+
+/**
+ * Multiply a matrix with a general scaling matrix.
+ *
+ * \param mat matrix.
+ * \param x x axis scale factor.
+ * \param y y axis scale factor.
+ * \param z z axis scale factor.
+ *
+ * Multiplies in-place the elements of \p mat by the scale factors. Checks if
+ * the scales factors are roughly the same, marking the MAT_FLAG_UNIFORM_SCALE
+ * flag, or MAT_FLAG_GENERAL_SCALE. Marks the MAT_DIRTY_TYPE and
+ * MAT_DIRTY_INVERSE dirty flags.
+ */
+void
+_math_matrix_scale( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
+{
+ GLfloat *m = mat->m;
+ m[0] *= x; m[4] *= y; m[8] *= z;
+ m[1] *= x; m[5] *= y; m[9] *= z;
+ m[2] *= x; m[6] *= y; m[10] *= z;
+ m[3] *= x; m[7] *= y; m[11] *= z;
+
+ if (FABSF(x - y) < 1e-8 && FABSF(x - z) < 1e-8)
+ mat->flags |= MAT_FLAG_UNIFORM_SCALE;
+ else
+ mat->flags |= MAT_FLAG_GENERAL_SCALE;
+
+ mat->flags |= (MAT_DIRTY_TYPE |
+ MAT_DIRTY_INVERSE);
+}
+
+/**
+ * Multiply a matrix with a translation matrix.
+ *
+ * \param mat matrix.
+ * \param x translation vector x coordinate.
+ * \param y translation vector y coordinate.
+ * \param z translation vector z coordinate.
+ *
+ * Adds the translation coordinates to the elements of \p mat in-place. Marks
+ * the MAT_FLAG_TRANSLATION flag, and the MAT_DIRTY_TYPE and MAT_DIRTY_INVERSE
+ * dirty flags.
+ */
+void
+_math_matrix_translate( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
+{
+ GLfloat *m = mat->m;
+ m[12] = m[0] * x + m[4] * y + m[8] * z + m[12];
+ m[13] = m[1] * x + m[5] * y + m[9] * z + m[13];
+ m[14] = m[2] * x + m[6] * y + m[10] * z + m[14];
+ m[15] = m[3] * x + m[7] * y + m[11] * z + m[15];
+
+ mat->flags |= (MAT_FLAG_TRANSLATION |
+ MAT_DIRTY_TYPE |
+ MAT_DIRTY_INVERSE);
+}
+
+
+/**
+ * Set matrix to do viewport and depthrange mapping.
+ * Transforms Normalized Device Coords to window/Z values.
+ */
+void
+_math_matrix_viewport(GLmatrix *m, GLint x, GLint y, GLint width, GLint height,
+ GLfloat zNear, GLfloat zFar, GLfloat depthMax)
+{
+ m->m[MAT_SX] = (GLfloat) width / 2.0F;
+ m->m[MAT_TX] = m->m[MAT_SX] + x;
+ m->m[MAT_SY] = (GLfloat) height / 2.0F;
+ m->m[MAT_TY] = m->m[MAT_SY] + y;
+ m->m[MAT_SZ] = depthMax * ((zFar - zNear) / 2.0F);
+ m->m[MAT_TZ] = depthMax * ((zFar - zNear) / 2.0F + zNear);
+ m->flags = MAT_FLAG_GENERAL_SCALE | MAT_FLAG_TRANSLATION;
+ m->type = MATRIX_3D_NO_ROT;
+}
+
+
+/**
+ * Set a matrix to the identity matrix.
+ *
+ * \param mat matrix.
+ *
+ * Copies ::Identity into \p GLmatrix::m, and into GLmatrix::inv if not NULL.
+ * Sets the matrix type to identity, and clear the dirty flags.
+ */
+void
+_math_matrix_set_identity( GLmatrix *mat )
+{
+ memcpy( mat->m, Identity, 16*sizeof(GLfloat) );
+
+ if (mat->inv)
+ memcpy( mat->inv, Identity, 16*sizeof(GLfloat) );
+
+ mat->type = MATRIX_IDENTITY;
+ mat->flags &= ~(MAT_DIRTY_FLAGS|
+ MAT_DIRTY_TYPE|
+ MAT_DIRTY_INVERSE);
+}
+
+/*@}*/
+
+
+/**********************************************************************/
+/** \name Matrix analysis */
+/*@{*/
+
+#define ZERO(x) (1<<x)
+#define ONE(x) (1<<(x+16))
+
+#define MASK_NO_TRX (ZERO(12) | ZERO(13) | ZERO(14))
+#define MASK_NO_2D_SCALE ( ONE(0) | ONE(5))
+
+#define MASK_IDENTITY ( ONE(0) | ZERO(4) | ZERO(8) | ZERO(12) |\
+ ZERO(1) | ONE(5) | ZERO(9) | ZERO(13) |\
+ ZERO(2) | ZERO(6) | ONE(10) | ZERO(14) |\
+ ZERO(3) | ZERO(7) | ZERO(11) | ONE(15) )
+
+#define MASK_2D_NO_ROT ( ZERO(4) | ZERO(8) | \
+ ZERO(1) | ZERO(9) | \
+ ZERO(2) | ZERO(6) | ONE(10) | ZERO(14) |\
+ ZERO(3) | ZERO(7) | ZERO(11) | ONE(15) )
+
+#define MASK_2D ( ZERO(8) | \
+ ZERO(9) | \
+ ZERO(2) | ZERO(6) | ONE(10) | ZERO(14) |\
+ ZERO(3) | ZERO(7) | ZERO(11) | ONE(15) )
+
+
+#define MASK_3D_NO_ROT ( ZERO(4) | ZERO(8) | \
+ ZERO(1) | ZERO(9) | \
+ ZERO(2) | ZERO(6) | \
+ ZERO(3) | ZERO(7) | ZERO(11) | ONE(15) )
+
+#define MASK_3D ( \
+ \
+ \
+ ZERO(3) | ZERO(7) | ZERO(11) | ONE(15) )
+
+
+#define MASK_PERSPECTIVE ( ZERO(4) | ZERO(12) |\
+ ZERO(1) | ZERO(13) |\
+ ZERO(2) | ZERO(6) | \
+ ZERO(3) | ZERO(7) | ZERO(15) )
+
+#define SQ(x) ((x)*(x))
+
+/**
+ * Determine type and flags from scratch.
+ *
+ * \param mat matrix.
+ *
+ * This is expensive enough to only want to do it once.
+ */
+static void analyse_from_scratch( GLmatrix *mat )
+{
+ const GLfloat *m = mat->m;
+ GLuint mask = 0;
+ GLuint i;
+
+ for (i = 0 ; i < 16 ; i++) {
+ if (m[i] == 0.0) mask |= (1<<i);
+ }
+
+ if (m[0] == 1.0F) mask |= (1<<16);
+ if (m[5] == 1.0F) mask |= (1<<21);
+ if (m[10] == 1.0F) mask |= (1<<26);
+ if (m[15] == 1.0F) mask |= (1<<31);
+
+ mat->flags &= ~MAT_FLAGS_GEOMETRY;
+
+ /* Check for translation - no-one really cares
+ */
+ if ((mask & MASK_NO_TRX) != MASK_NO_TRX)
+ mat->flags |= MAT_FLAG_TRANSLATION;
+
+ /* Do the real work
+ */
+ if (mask == (GLuint) MASK_IDENTITY) {
+ mat->type = MATRIX_IDENTITY;
+ }
+ else if ((mask & MASK_2D_NO_ROT) == (GLuint) MASK_2D_NO_ROT) {
+ mat->type = MATRIX_2D_NO_ROT;
+
+ if ((mask & MASK_NO_2D_SCALE) != MASK_NO_2D_SCALE)
+ mat->flags |= MAT_FLAG_GENERAL_SCALE;
+ }
+ else if ((mask & MASK_2D) == (GLuint) MASK_2D) {
+ GLfloat mm = DOT2(m, m);
+ GLfloat m4m4 = DOT2(m+4,m+4);
+ GLfloat mm4 = DOT2(m,m+4);
+
+ mat->type = MATRIX_2D;
+
+ /* Check for scale */
+ if (SQ(mm-1) > SQ(1e-6) ||
+ SQ(m4m4-1) > SQ(1e-6))
+ mat->flags |= MAT_FLAG_GENERAL_SCALE;
+
+ /* Check for rotation */
+ if (SQ(mm4) > SQ(1e-6))
+ mat->flags |= MAT_FLAG_GENERAL_3D;
+ else
+ mat->flags |= MAT_FLAG_ROTATION;
+
+ }
+ else if ((mask & MASK_3D_NO_ROT) == (GLuint) MASK_3D_NO_ROT) {
+ mat->type = MATRIX_3D_NO_ROT;
+
+ /* Check for scale */
+ if (SQ(m[0]-m[5]) < SQ(1e-6) &&
+ SQ(m[0]-m[10]) < SQ(1e-6)) {
+ if (SQ(m[0]-1.0) > SQ(1e-6)) {
+ mat->flags |= MAT_FLAG_UNIFORM_SCALE;
+ }
+ }
+ else {
+ mat->flags |= MAT_FLAG_GENERAL_SCALE;
+ }
+ }
+ else if ((mask & MASK_3D) == (GLuint) MASK_3D) {
+ GLfloat c1 = DOT3(m,m);
+ GLfloat c2 = DOT3(m+4,m+4);
+ GLfloat c3 = DOT3(m+8,m+8);
+ GLfloat d1 = DOT3(m, m+4);
+ GLfloat cp[3];
+
+ mat->type = MATRIX_3D;
+
+ /* Check for scale */
+ if (SQ(c1-c2) < SQ(1e-6) && SQ(c1-c3) < SQ(1e-6)) {
+ if (SQ(c1-1.0) > SQ(1e-6))
+ mat->flags |= MAT_FLAG_UNIFORM_SCALE;
+ /* else no scale at all */
+ }
+ else {
+ mat->flags |= MAT_FLAG_GENERAL_SCALE;
+ }
+
+ /* Check for rotation */
+ if (SQ(d1) < SQ(1e-6)) {
+ CROSS3( cp, m, m+4 );
+ SUB_3V( cp, cp, (m+8) );
+ if (LEN_SQUARED_3FV(cp) < SQ(1e-6))
+ mat->flags |= MAT_FLAG_ROTATION;
+ else
+ mat->flags |= MAT_FLAG_GENERAL_3D;
+ }
+ else {
+ mat->flags |= MAT_FLAG_GENERAL_3D; /* shear, etc */
+ }
+ }
+ else if ((mask & MASK_PERSPECTIVE) == MASK_PERSPECTIVE && m[11]==-1.0F) {
+ mat->type = MATRIX_PERSPECTIVE;
+ mat->flags |= MAT_FLAG_GENERAL;
+ }
+ else {
+ mat->type = MATRIX_GENERAL;
+ mat->flags |= MAT_FLAG_GENERAL;
+ }
+}
+
+/**
+ * Analyze a matrix given that its flags are accurate.
+ *
+ * This is the more common operation, hopefully.
+ */
+static void analyse_from_flags( GLmatrix *mat )
+{
+ const GLfloat *m = mat->m;
+
+ if (TEST_MAT_FLAGS(mat, 0)) {
+ mat->type = MATRIX_IDENTITY;
+ }
+ else if (TEST_MAT_FLAGS(mat, (MAT_FLAG_TRANSLATION |
+ MAT_FLAG_UNIFORM_SCALE |
+ MAT_FLAG_GENERAL_SCALE))) {
+ if ( m[10]==1.0F && m[14]==0.0F ) {
+ mat->type = MATRIX_2D_NO_ROT;
+ }
+ else {
+ mat->type = MATRIX_3D_NO_ROT;
+ }
+ }
+ else if (TEST_MAT_FLAGS(mat, MAT_FLAGS_3D)) {
+ if ( m[ 8]==0.0F
+ && m[ 9]==0.0F
+ && m[2]==0.0F && m[6]==0.0F && m[10]==1.0F && m[14]==0.0F) {
+ mat->type = MATRIX_2D;
+ }
+ else {
+ mat->type = MATRIX_3D;
+ }
+ }
+ else if ( m[4]==0.0F && m[12]==0.0F
+ && m[1]==0.0F && m[13]==0.0F
+ && m[2]==0.0F && m[6]==0.0F
+ && m[3]==0.0F && m[7]==0.0F && m[11]==-1.0F && m[15]==0.0F) {
+ mat->type = MATRIX_PERSPECTIVE;
+ }
+ else {
+ mat->type = MATRIX_GENERAL;
+ }
+}
+
+/**
+ * Analyze and update a matrix.
+ *
+ * \param mat matrix.
+ *
+ * If the matrix type is dirty then calls either analyse_from_scratch() or
+ * analyse_from_flags() to determine its type, according to whether the flags
+ * are dirty or not, respectively. If the matrix has an inverse and it's dirty
+ * then calls matrix_invert(). Finally clears the dirty flags.
+ */
+void
+_math_matrix_analyse( GLmatrix *mat )
+{
+ if (mat->flags & MAT_DIRTY_TYPE) {
+ if (mat->flags & MAT_DIRTY_FLAGS)
+ analyse_from_scratch( mat );
+ else
+ analyse_from_flags( mat );
+ }
+
+ if (mat->inv && (mat->flags & MAT_DIRTY_INVERSE)) {
+ matrix_invert( mat );
+ mat->flags &= ~MAT_DIRTY_INVERSE;
+ }
+
+ mat->flags &= ~(MAT_DIRTY_FLAGS | MAT_DIRTY_TYPE);
+}
+
+/*@}*/
+
+
+/**
+ * Test if the given matrix preserves vector lengths.
+ */
+GLboolean
+_math_matrix_is_length_preserving( const GLmatrix *m )
+{
+ return TEST_MAT_FLAGS( m, MAT_FLAGS_LENGTH_PRESERVING);
+}
+
+
+/**
+ * Test if the given matrix does any rotation.
+ * (or perhaps if the upper-left 3x3 is non-identity)
+ */
+GLboolean
+_math_matrix_has_rotation( const GLmatrix *m )
+{
+ if (m->flags & (MAT_FLAG_GENERAL |
+ MAT_FLAG_ROTATION |
+ MAT_FLAG_GENERAL_3D |
+ MAT_FLAG_PERSPECTIVE))
+ return GL_TRUE;
+ else
+ return GL_FALSE;
+}
+
+
+GLboolean
+_math_matrix_is_general_scale( const GLmatrix *m )
+{
+ return (m->flags & MAT_FLAG_GENERAL_SCALE) ? GL_TRUE : GL_FALSE;
+}
+
+
+GLboolean
+_math_matrix_is_dirty( const GLmatrix *m )
+{
+ return (m->flags & MAT_DIRTY) ? GL_TRUE : GL_FALSE;
+}
+
+
+/**********************************************************************/
+/** \name Matrix setup */
+/*@{*/
+
+/**
+ * Copy a matrix.
+ *
+ * \param to destination matrix.
+ * \param from source matrix.
+ *
+ * Copies all fields in GLmatrix, creating an inverse array if necessary.
+ */
+void
+_math_matrix_copy( GLmatrix *to, const GLmatrix *from )
+{
+ memcpy( to->m, from->m, sizeof(Identity) );
+ to->flags = from->flags;
+ to->type = from->type;
+
+ if (to->inv != 0) {
+ if (from->inv == 0) {
+ matrix_invert( to );
+ }
+ else {
+ memcpy(to->inv, from->inv, sizeof(GLfloat)*16);
+ }
+ }
+}
+
+/**
+ * Loads a matrix array into GLmatrix.
+ *
+ * \param m matrix array.
+ * \param mat matrix.
+ *
+ * Copies \p m into GLmatrix::m and marks the MAT_FLAG_GENERAL and MAT_DIRTY
+ * flags.
+ */
+void
+_math_matrix_loadf( GLmatrix *mat, const GLfloat *m )
+{
+ memcpy( mat->m, m, 16*sizeof(GLfloat) );
+ mat->flags = (MAT_FLAG_GENERAL | MAT_DIRTY);
+}
+
+/**
+ * Matrix constructor.
+ *
+ * \param m matrix.
+ *
+ * Initialize the GLmatrix fields.
+ */
+void
+_math_matrix_ctr( GLmatrix *m )
+{
+ m->m = (GLfloat *) _mesa_align_malloc( 16 * sizeof(GLfloat), 16 );
+ if (m->m)
+ memcpy( m->m, Identity, sizeof(Identity) );
+ m->inv = NULL;
+ m->type = MATRIX_IDENTITY;
+ m->flags = 0;
+}
+
+/**
+ * Matrix destructor.
+ *
+ * \param m matrix.
+ *
+ * Frees the data in a GLmatrix.
+ */
+void
+_math_matrix_dtr( GLmatrix *m )
+{
+ if (m->m) {
+ _mesa_align_free( m->m );
+ m->m = NULL;
+ }
+ if (m->inv) {
+ _mesa_align_free( m->inv );
+ m->inv = NULL;
+ }
+}
+
+/**
+ * Allocate a matrix inverse.
+ *
+ * \param m matrix.
+ *
+ * Allocates the matrix inverse, GLmatrix::inv, and sets it to Identity.
+ */
+void
+_math_matrix_alloc_inv( GLmatrix *m )
+{
+ if (!m->inv) {
+ m->inv = (GLfloat *) _mesa_align_malloc( 16 * sizeof(GLfloat), 16 );
+ if (m->inv)
+ memcpy( m->inv, Identity, 16 * sizeof(GLfloat) );
+ }
+}
+
+/*@}*/
+
+
+/**********************************************************************/
+/** \name Matrix transpose */
+/*@{*/
+
+/**
+ * Transpose a GLfloat matrix.
+ *
+ * \param to destination array.
+ * \param from source array.
+ */
+void
+_math_transposef( GLfloat to[16], const GLfloat from[16] )
+{
+ to[0] = from[0];
+ to[1] = from[4];
+ to[2] = from[8];
+ to[3] = from[12];
+ to[4] = from[1];
+ to[5] = from[5];
+ to[6] = from[9];
+ to[7] = from[13];
+ to[8] = from[2];
+ to[9] = from[6];
+ to[10] = from[10];
+ to[11] = from[14];
+ to[12] = from[3];
+ to[13] = from[7];
+ to[14] = from[11];
+ to[15] = from[15];
+}
+
+/**
+ * Transpose a GLdouble matrix.
+ *
+ * \param to destination array.
+ * \param from source array.
+ */
+void
+_math_transposed( GLdouble to[16], const GLdouble from[16] )
+{
+ to[0] = from[0];
+ to[1] = from[4];
+ to[2] = from[8];
+ to[3] = from[12];
+ to[4] = from[1];
+ to[5] = from[5];
+ to[6] = from[9];
+ to[7] = from[13];
+ to[8] = from[2];
+ to[9] = from[6];
+ to[10] = from[10];
+ to[11] = from[14];
+ to[12] = from[3];
+ to[13] = from[7];
+ to[14] = from[11];
+ to[15] = from[15];
+}
+
+/**
+ * Transpose a GLdouble matrix and convert to GLfloat.
+ *
+ * \param to destination array.
+ * \param from source array.
+ */
+void
+_math_transposefd( GLfloat to[16], const GLdouble from[16] )
+{
+ to[0] = (GLfloat) from[0];
+ to[1] = (GLfloat) from[4];
+ to[2] = (GLfloat) from[8];
+ to[3] = (GLfloat) from[12];
+ to[4] = (GLfloat) from[1];
+ to[5] = (GLfloat) from[5];
+ to[6] = (GLfloat) from[9];
+ to[7] = (GLfloat) from[13];
+ to[8] = (GLfloat) from[2];
+ to[9] = (GLfloat) from[6];
+ to[10] = (GLfloat) from[10];
+ to[11] = (GLfloat) from[14];
+ to[12] = (GLfloat) from[3];
+ to[13] = (GLfloat) from[7];
+ to[14] = (GLfloat) from[11];
+ to[15] = (GLfloat) from[15];
+}
+
+/*@}*/
+
+
+/**
+ * Transform a 4-element row vector (1x4 matrix) by a 4x4 matrix. This
+ * function is used for transforming clipping plane equations and spotlight
+ * directions.
+ * Mathematically, u = v * m.
+ * Input: v - input vector
+ * m - transformation matrix
+ * Output: u - transformed vector
+ */
+void
+_mesa_transform_vector( GLfloat u[4], const GLfloat v[4], const GLfloat m[16] )
+{
+ const GLfloat v0 = v[0], v1 = v[1], v2 = v[2], v3 = v[3];
+#define M(row,col) m[row + col*4]
+ u[0] = v0 * M(0,0) + v1 * M(1,0) + v2 * M(2,0) + v3 * M(3,0);
+ u[1] = v0 * M(0,1) + v1 * M(1,1) + v2 * M(2,1) + v3 * M(3,1);
+ u[2] = v0 * M(0,2) + v1 * M(1,2) + v2 * M(2,2) + v3 * M(3,2);
+ u[3] = v0 * M(0,3) + v1 * M(1,3) + v2 * M(2,3) + v3 * M(3,3);
+#undef M
+}
diff --git a/mesalib/src/mesa/math/m_vector.c b/mesalib/src/mesa/math/m_vector.c
index 7ca08f4c0..4bded31e0 100644
--- a/mesalib/src/mesa/math/m_vector.c
+++ b/mesalib/src/mesa/math/m_vector.c
@@ -1,184 +1,184 @@
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * New (3.1) transformation code written by Keith Whitwell.
- */
-
-
-#include "main/glheader.h"
-#include "main/imports.h"
-#include "main/macros.h"
-
-#include "m_vector.h"
-
-
-
-/**
- * Given a vector [count][4] of floats, set all the [][elt] values
- * to 0 (if elt = 0, 1, 2) or 1.0 (if elt = 3).
- */
-void
-_mesa_vector4f_clean_elem( GLvector4f *vec, GLuint count, GLuint elt )
-{
- static const GLubyte elem_bits[4] = {
- VEC_DIRTY_0,
- VEC_DIRTY_1,
- VEC_DIRTY_2,
- VEC_DIRTY_3
- };
- static const GLfloat clean[4] = { 0, 0, 0, 1 };
- const GLfloat v = clean[elt];
- GLfloat (*data)[4] = (GLfloat (*)[4])vec->start;
- GLuint i;
-
- for (i = 0; i < count; i++)
- data[i][elt] = v;
-
- vec->flags &= ~elem_bits[elt];
-}
-
-
-static const GLubyte size_bits[5] = {
- 0,
- VEC_SIZE_1,
- VEC_SIZE_2,
- VEC_SIZE_3,
- VEC_SIZE_4,
-};
-
-
-/**
- * Initialize GLvector objects.
- * \param v the vector object to initialize.
- * \param flags bitwise-OR of VEC_* flags
- * \param storage pointer to storage for the vector's data
- */
-void
-_mesa_vector4f_init( GLvector4f *v, GLbitfield flags, GLfloat (*storage)[4] )
-{
- v->stride = 4 * sizeof(GLfloat);
- v->size = 2; /* may change: 2-4 for vertices and 1-4 for texcoords */
- v->data = storage;
- v->start = (GLfloat *) storage;
- v->count = 0;
- v->flags = size_bits[4] | flags;
-}
-
-
-/**
- * Initialize GLvector objects and allocate storage.
- * \param v the vector object
- * \param flags bitwise-OR of VEC_* flags
- * \param count number of elements to allocate in vector
- * \param alignment desired memory alignment for the data (in bytes)
- */
-void
-_mesa_vector4f_alloc( GLvector4f *v, GLbitfield flags, GLuint count,
- GLuint alignment )
-{
- v->stride = 4 * sizeof(GLfloat);
- v->size = 2;
- v->storage = _mesa_align_malloc( count * 4 * sizeof(GLfloat), alignment );
- v->storage_count = count;
- v->start = (GLfloat *) v->storage;
- v->data = (GLfloat (*)[4]) v->storage;
- v->count = 0;
- v->flags = size_bits[4] | flags | VEC_MALLOC;
-}
-
-
-/**
- * Vector deallocation. Free whatever memory is pointed to by the
- * vector's storage field if the VEC_MALLOC flag is set.
- * DO NOT free the GLvector object itself, though.
- */
-void
-_mesa_vector4f_free( GLvector4f *v )
-{
- if (v->flags & VEC_MALLOC) {
- _mesa_align_free( v->storage );
- v->data = NULL;
- v->start = NULL;
- v->storage = NULL;
- v->flags &= ~VEC_MALLOC;
- }
-}
-
-
-/**
- * For debugging
- */
-void
-_mesa_vector4f_print( const GLvector4f *v, const GLubyte *cullmask,
- GLboolean culling )
-{
- static const GLfloat c[4] = { 0, 0, 0, 1 };
- static const char *templates[5] = {
- "%d:\t0, 0, 0, 1\n",
- "%d:\t%f, 0, 0, 1\n",
- "%d:\t%f, %f, 0, 1\n",
- "%d:\t%f, %f, %f, 1\n",
- "%d:\t%f, %f, %f, %f\n"
- };
-
- const char *t = templates[v->size];
- GLfloat *d = (GLfloat *)v->data;
- GLuint j, i = 0, count;
-
- printf("data-start\n");
- for (; d != v->start; STRIDE_F(d, v->stride), i++)
- printf(t, i, d[0], d[1], d[2], d[3]);
-
- printf("start-count(%u)\n", v->count);
- count = i + v->count;
-
- if (culling) {
- for (; i < count; STRIDE_F(d, v->stride), i++)
- if (cullmask[i])
- printf(t, i, d[0], d[1], d[2], d[3]);
- }
- else {
- for (; i < count; STRIDE_F(d, v->stride), i++)
- printf(t, i, d[0], d[1], d[2], d[3]);
- }
-
- for (j = v->size; j < 4; j++) {
- if ((v->flags & (1<<j)) == 0) {
-
- printf("checking col %u is clean as advertised ", j);
-
- for (i = 0, d = (GLfloat *) v->data;
- i < count && d[j] == c[j];
- i++, STRIDE_F(d, v->stride)) {
- /* no-op */
- }
-
- if (i == count)
- printf(" --> ok\n");
- else
- printf(" --> Failed at %u ******\n", i);
- }
- }
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * New (3.1) transformation code written by Keith Whitwell.
+ */
+
+
+#include "main/glheader.h"
+#include "main/imports.h"
+#include "main/macros.h"
+
+#include "m_vector.h"
+
+
+
+/**
+ * Given a vector [count][4] of floats, set all the [][elt] values
+ * to 0 (if elt = 0, 1, 2) or 1.0 (if elt = 3).
+ */
+void
+_mesa_vector4f_clean_elem( GLvector4f *vec, GLuint count, GLuint elt )
+{
+ static const GLubyte elem_bits[4] = {
+ VEC_DIRTY_0,
+ VEC_DIRTY_1,
+ VEC_DIRTY_2,
+ VEC_DIRTY_3
+ };
+ static const GLfloat clean[4] = { 0, 0, 0, 1 };
+ const GLfloat v = clean[elt];
+ GLfloat (*data)[4] = (GLfloat (*)[4])vec->start;
+ GLuint i;
+
+ for (i = 0; i < count; i++)
+ data[i][elt] = v;
+
+ vec->flags &= ~elem_bits[elt];
+}
+
+
+static const GLubyte size_bits[5] = {
+ 0,
+ VEC_SIZE_1,
+ VEC_SIZE_2,
+ VEC_SIZE_3,
+ VEC_SIZE_4,
+};
+
+
+/**
+ * Initialize GLvector objects.
+ * \param v the vector object to initialize.
+ * \param flags bitwise-OR of VEC_* flags
+ * \param storage pointer to storage for the vector's data
+ */
+void
+_mesa_vector4f_init( GLvector4f *v, GLbitfield flags, GLfloat (*storage)[4] )
+{
+ v->stride = 4 * sizeof(GLfloat);
+ v->size = 2; /* may change: 2-4 for vertices and 1-4 for texcoords */
+ v->data = storage;
+ v->start = (GLfloat *) storage;
+ v->count = 0;
+ v->flags = size_bits[4] | flags;
+}
+
+
+/**
+ * Initialize GLvector objects and allocate storage.
+ * \param v the vector object
+ * \param flags bitwise-OR of VEC_* flags
+ * \param count number of elements to allocate in vector
+ * \param alignment desired memory alignment for the data (in bytes)
+ */
+void
+_mesa_vector4f_alloc( GLvector4f *v, GLbitfield flags, GLuint count,
+ GLuint alignment )
+{
+ v->stride = 4 * sizeof(GLfloat);
+ v->size = 2;
+ v->storage = _mesa_align_malloc( count * 4 * sizeof(GLfloat), alignment );
+ v->storage_count = count;
+ v->start = (GLfloat *) v->storage;
+ v->data = (GLfloat (*)[4]) v->storage;
+ v->count = 0;
+ v->flags = size_bits[4] | flags | VEC_MALLOC;
+}
+
+
+/**
+ * Vector deallocation. Free whatever memory is pointed to by the
+ * vector's storage field if the VEC_MALLOC flag is set.
+ * DO NOT free the GLvector object itself, though.
+ */
+void
+_mesa_vector4f_free( GLvector4f *v )
+{
+ if (v->flags & VEC_MALLOC) {
+ _mesa_align_free( v->storage );
+ v->data = NULL;
+ v->start = NULL;
+ v->storage = NULL;
+ v->flags &= ~VEC_MALLOC;
+ }
+}
+
+
+/**
+ * For debugging
+ */
+void
+_mesa_vector4f_print( const GLvector4f *v, const GLubyte *cullmask,
+ GLboolean culling )
+{
+ static const GLfloat c[4] = { 0, 0, 0, 1 };
+ static const char *templates[5] = {
+ "%d:\t0, 0, 0, 1\n",
+ "%d:\t%f, 0, 0, 1\n",
+ "%d:\t%f, %f, 0, 1\n",
+ "%d:\t%f, %f, %f, 1\n",
+ "%d:\t%f, %f, %f, %f\n"
+ };
+
+ const char *t = templates[v->size];
+ GLfloat *d = (GLfloat *)v->data;
+ GLuint j, i = 0, count;
+
+ printf("data-start\n");
+ for (; d != v->start; STRIDE_F(d, v->stride), i++)
+ printf(t, i, d[0], d[1], d[2], d[3]);
+
+ printf("start-count(%u)\n", v->count);
+ count = i + v->count;
+
+ if (culling) {
+ for (; i < count; STRIDE_F(d, v->stride), i++)
+ if (cullmask[i])
+ printf(t, i, d[0], d[1], d[2], d[3]);
+ }
+ else {
+ for (; i < count; STRIDE_F(d, v->stride), i++)
+ printf(t, i, d[0], d[1], d[2], d[3]);
+ }
+
+ for (j = v->size; j < 4; j++) {
+ if ((v->flags & (1<<j)) == 0) {
+
+ printf("checking col %u is clean as advertised ", j);
+
+ for (i = 0, d = (GLfloat *) v->data;
+ i < count && d[j] == c[j];
+ i++, STRIDE_F(d, v->stride)) {
+ /* no-op */
+ }
+
+ if (i == count)
+ printf(" --> ok\n");
+ else
+ printf(" --> Failed at %u ******\n", i);
+ }
+ }
+}
diff --git a/mesalib/src/mesa/program/arbprogparse.h b/mesalib/src/mesa/program/arbprogparse.h
index a9fe1e941..4c0c30072 100644
--- a/mesalib/src/mesa/program/arbprogparse.h
+++ b/mesalib/src/mesa/program/arbprogparse.h
@@ -1,45 +1,45 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef ARBPROGPARSE_H
-#define ARBPROGPARSE_H
-
-#include "main/glheader.h"
-
-struct gl_context;
-struct gl_fragment_program;
-struct gl_vertex_program;
-
-extern void
-_mesa_parse_arb_vertex_program(struct gl_context *ctx, GLenum target,
- const GLvoid *str, GLsizei len,
- struct gl_vertex_program *program);
-
-extern void
-_mesa_parse_arb_fragment_program(struct gl_context *ctx, GLenum target,
- const GLvoid *str, GLsizei len,
- struct gl_fragment_program *program);
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef ARBPROGPARSE_H
+#define ARBPROGPARSE_H
+
+#include "main/glheader.h"
+
+struct gl_context;
+struct gl_fragment_program;
+struct gl_vertex_program;
+
+extern void
+_mesa_parse_arb_vertex_program(struct gl_context *ctx, GLenum target,
+ const GLvoid *str, GLsizei len,
+ struct gl_vertex_program *program);
+
+extern void
+_mesa_parse_arb_fragment_program(struct gl_context *ctx, GLenum target,
+ const GLvoid *str, GLsizei len,
+ struct gl_fragment_program *program);
+
+#endif
diff --git a/mesalib/src/mesa/program/ir_to_mesa.cpp b/mesalib/src/mesa/program/ir_to_mesa.cpp
index c021c6956..224540005 100644
--- a/mesalib/src/mesa/program/ir_to_mesa.cpp
+++ b/mesalib/src/mesa/program/ir_to_mesa.cpp
@@ -1407,6 +1407,11 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
emit(ir, OPCODE_SNE, result_dst,
op[0], src_reg_for_float(0.0));
break;
+ case ir_unop_bitcast_f2i: // Ignore these 4, they can't happen here anyway
+ case ir_unop_bitcast_f2u:
+ case ir_unop_bitcast_i2f:
+ case ir_unop_bitcast_u2f:
+ break;
case ir_unop_trunc:
emit(ir, OPCODE_TRUNC, result_dst, op[0]);
break;
diff --git a/mesalib/src/mesa/program/nvfragparse.h b/mesalib/src/mesa/program/nvfragparse.h
index a8ab8d6fe..088e7527d 100644
--- a/mesalib/src/mesa/program/nvfragparse.h
+++ b/mesalib/src/mesa/program/nvfragparse.h
@@ -1,47 +1,47 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 5.1
- *
- * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Brian Paul
- */
-
-
-#ifndef NVFRAGPARSE_H
-#define NVFRAGPARSE_H
-
-#include "main/glheader.h"
-
-struct gl_context;
-struct gl_fragment_program;
-
-extern void
-_mesa_parse_nv_fragment_program(struct gl_context *ctx, GLenum target,
- const GLubyte *str, GLsizei len,
- struct gl_fragment_program *program);
-
-
-extern const char *
-_mesa_nv_fragment_input_register_name(GLuint i);
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 5.1
+ *
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Brian Paul
+ */
+
+
+#ifndef NVFRAGPARSE_H
+#define NVFRAGPARSE_H
+
+#include "main/glheader.h"
+
+struct gl_context;
+struct gl_fragment_program;
+
+extern void
+_mesa_parse_nv_fragment_program(struct gl_context *ctx, GLenum target,
+ const GLubyte *str, GLsizei len,
+ struct gl_fragment_program *program);
+
+
+extern const char *
+_mesa_nv_fragment_input_register_name(GLuint i);
+
+#endif
diff --git a/mesalib/src/mesa/program/nvvertparse.h b/mesalib/src/mesa/program/nvvertparse.h
index bee6dea3c..7318e1494 100644
--- a/mesalib/src/mesa/program/nvvertparse.h
+++ b/mesalib/src/mesa/program/nvvertparse.h
@@ -1,49 +1,49 @@
-/*
- * Mesa 3-D graphics library
- * Version: 5.1
- *
- * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Brian Paul
- */
-
-
-#ifndef NVVERTPARSE_H
-#define NVVERTPARSE_H
-
-#include "main/glheader.h"
-
-struct gl_context;
-struct gl_vertex_program;
-
-extern void
-_mesa_parse_nv_vertex_program(struct gl_context *ctx, GLenum target,
- const GLubyte *str, GLsizei len,
- struct gl_vertex_program *program);
-
-
-extern const char *
-_mesa_nv_vertex_input_register_name(GLuint i);
-
-extern const char *
-_mesa_nv_vertex_output_register_name(GLuint i);
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 5.1
+ *
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Brian Paul
+ */
+
+
+#ifndef NVVERTPARSE_H
+#define NVVERTPARSE_H
+
+#include "main/glheader.h"
+
+struct gl_context;
+struct gl_vertex_program;
+
+extern void
+_mesa_parse_nv_vertex_program(struct gl_context *ctx, GLenum target,
+ const GLubyte *str, GLsizei len,
+ struct gl_vertex_program *program);
+
+
+extern const char *
+_mesa_nv_vertex_input_register_name(GLuint i);
+
+extern const char *
+_mesa_nv_vertex_output_register_name(GLuint i);
+
+#endif
diff --git a/mesalib/src/mesa/program/prog_cache.c b/mesalib/src/mesa/program/prog_cache.c
index 398cd5e6d..2ccedb5d7 100644
--- a/mesalib/src/mesa/program/prog_cache.c
+++ b/mesalib/src/mesa/program/prog_cache.c
@@ -1,251 +1,251 @@
-/**************************************************************************
- *
- * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#include "main/glheader.h"
-#include "main/mtypes.h"
-#include "main/imports.h"
-#include "main/shaderobj.h"
-#include "program/prog_cache.h"
-#include "program/program.h"
-
-
-struct cache_item
-{
- GLuint hash;
- void *key;
- struct gl_program *program;
- struct cache_item *next;
-};
-
-struct gl_program_cache
-{
- struct cache_item **items;
- struct cache_item *last;
- GLuint size, n_items;
-};
-
-
-
-/**
- * Compute hash index from state key.
- */
-static GLuint
-hash_key(const void *key, GLuint key_size)
-{
- const GLuint *ikey = (const GLuint *) key;
- GLuint hash = 0, i;
-
- assert(key_size >= 4);
-
- /* Make a slightly better attempt at a hash function:
- */
- for (i = 0; i < key_size / sizeof(*ikey); i++)
- {
- hash += ikey[i];
- hash += (hash << 10);
- hash ^= (hash >> 6);
- }
-
- return hash;
-}
-
-
-/**
- * Rebuild/expand the hash table to accomodate more entries
- */
-static void
-rehash(struct gl_program_cache *cache)
-{
- struct cache_item **items;
- struct cache_item *c, *next;
- GLuint size, i;
-
- cache->last = NULL;
-
- size = cache->size * 3;
- items = (struct cache_item**) malloc(size * sizeof(*items));
- memset(items, 0, size * sizeof(*items));
-
- for (i = 0; i < cache->size; i++)
- for (c = cache->items[i]; c; c = next) {
- next = c->next;
- c->next = items[c->hash % size];
- items[c->hash % size] = c;
- }
-
- free(cache->items);
- cache->items = items;
- cache->size = size;
-}
-
-
-static void
-clear_cache(struct gl_context *ctx, struct gl_program_cache *cache,
- GLboolean shader)
-{
- struct cache_item *c, *next;
- GLuint i;
-
- cache->last = NULL;
-
- for (i = 0; i < cache->size; i++) {
- for (c = cache->items[i]; c; c = next) {
- next = c->next;
- free(c->key);
- if (shader) {
- _mesa_reference_shader_program(ctx,
- (struct gl_shader_program **)&c->program,
- NULL);
- } else {
- _mesa_reference_program(ctx, &c->program, NULL);
- }
- free(c);
- }
- cache->items[i] = NULL;
- }
-
-
- cache->n_items = 0;
-}
-
-
-
-struct gl_program_cache *
-_mesa_new_program_cache(void)
-{
- struct gl_program_cache *cache = CALLOC_STRUCT(gl_program_cache);
- if (cache) {
- cache->size = 17;
- cache->items = (struct cache_item **)
- calloc(1, cache->size * sizeof(struct cache_item));
- if (!cache->items) {
- free(cache);
- return NULL;
- }
- }
- return cache;
-}
-
-
-void
-_mesa_delete_program_cache(struct gl_context *ctx, struct gl_program_cache *cache)
-{
- clear_cache(ctx, cache, GL_FALSE);
- free(cache->items);
- free(cache);
-}
-
-void
-_mesa_delete_shader_cache(struct gl_context *ctx,
- struct gl_program_cache *cache)
-{
- clear_cache(ctx, cache, GL_TRUE);
- free(cache->items);
- free(cache);
-}
-
-
-struct gl_program *
-_mesa_search_program_cache(struct gl_program_cache *cache,
- const void *key, GLuint keysize)
-{
- if (cache->last &&
- memcmp(cache->last->key, key, keysize) == 0) {
- return cache->last->program;
- }
- else {
- const GLuint hash = hash_key(key, keysize);
- struct cache_item *c;
-
- for (c = cache->items[hash % cache->size]; c; c = c->next) {
- if (c->hash == hash && memcmp(c->key, key, keysize) == 0) {
- cache->last = c;
- return c->program;
- }
- }
-
- return NULL;
- }
-}
-
-
-void
-_mesa_program_cache_insert(struct gl_context *ctx,
- struct gl_program_cache *cache,
- const void *key, GLuint keysize,
- struct gl_program *program)
-{
- const GLuint hash = hash_key(key, keysize);
- struct cache_item *c = CALLOC_STRUCT(cache_item);
-
- c->hash = hash;
-
- c->key = malloc(keysize);
- memcpy(c->key, key, keysize);
-
- c->program = program; /* no refcount change */
-
- if (cache->n_items > cache->size * 1.5) {
- if (cache->size < 1000)
- rehash(cache);
- else
- clear_cache(ctx, cache, GL_FALSE);
- }
-
- cache->n_items++;
- c->next = cache->items[hash % cache->size];
- cache->items[hash % cache->size] = c;
-}
-
-void
-_mesa_shader_cache_insert(struct gl_context *ctx,
- struct gl_program_cache *cache,
- const void *key, GLuint keysize,
- struct gl_shader_program *program)
-{
- const GLuint hash = hash_key(key, keysize);
- struct cache_item *c = CALLOC_STRUCT(cache_item);
-
- c->hash = hash;
-
- c->key = malloc(keysize);
- memcpy(c->key, key, keysize);
-
- c->program = (struct gl_program *)program; /* no refcount change */
-
- if (cache->n_items > cache->size * 1.5) {
- if (cache->size < 1000)
- rehash(cache);
- else
- clear_cache(ctx, cache, GL_TRUE);
- }
-
- cache->n_items++;
- c->next = cache->items[hash % cache->size];
- cache->items[hash % cache->size] = c;
-}
+/**************************************************************************
+ *
+ * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#include "main/glheader.h"
+#include "main/mtypes.h"
+#include "main/imports.h"
+#include "main/shaderobj.h"
+#include "program/prog_cache.h"
+#include "program/program.h"
+
+
+struct cache_item
+{
+ GLuint hash;
+ void *key;
+ struct gl_program *program;
+ struct cache_item *next;
+};
+
+struct gl_program_cache
+{
+ struct cache_item **items;
+ struct cache_item *last;
+ GLuint size, n_items;
+};
+
+
+
+/**
+ * Compute hash index from state key.
+ */
+static GLuint
+hash_key(const void *key, GLuint key_size)
+{
+ const GLuint *ikey = (const GLuint *) key;
+ GLuint hash = 0, i;
+
+ assert(key_size >= 4);
+
+ /* Make a slightly better attempt at a hash function:
+ */
+ for (i = 0; i < key_size / sizeof(*ikey); i++)
+ {
+ hash += ikey[i];
+ hash += (hash << 10);
+ hash ^= (hash >> 6);
+ }
+
+ return hash;
+}
+
+
+/**
+ * Rebuild/expand the hash table to accomodate more entries
+ */
+static void
+rehash(struct gl_program_cache *cache)
+{
+ struct cache_item **items;
+ struct cache_item *c, *next;
+ GLuint size, i;
+
+ cache->last = NULL;
+
+ size = cache->size * 3;
+ items = (struct cache_item**) malloc(size * sizeof(*items));
+ memset(items, 0, size * sizeof(*items));
+
+ for (i = 0; i < cache->size; i++)
+ for (c = cache->items[i]; c; c = next) {
+ next = c->next;
+ c->next = items[c->hash % size];
+ items[c->hash % size] = c;
+ }
+
+ free(cache->items);
+ cache->items = items;
+ cache->size = size;
+}
+
+
+static void
+clear_cache(struct gl_context *ctx, struct gl_program_cache *cache,
+ GLboolean shader)
+{
+ struct cache_item *c, *next;
+ GLuint i;
+
+ cache->last = NULL;
+
+ for (i = 0; i < cache->size; i++) {
+ for (c = cache->items[i]; c; c = next) {
+ next = c->next;
+ free(c->key);
+ if (shader) {
+ _mesa_reference_shader_program(ctx,
+ (struct gl_shader_program **)&c->program,
+ NULL);
+ } else {
+ _mesa_reference_program(ctx, &c->program, NULL);
+ }
+ free(c);
+ }
+ cache->items[i] = NULL;
+ }
+
+
+ cache->n_items = 0;
+}
+
+
+
+struct gl_program_cache *
+_mesa_new_program_cache(void)
+{
+ struct gl_program_cache *cache = CALLOC_STRUCT(gl_program_cache);
+ if (cache) {
+ cache->size = 17;
+ cache->items = (struct cache_item **)
+ calloc(1, cache->size * sizeof(struct cache_item));
+ if (!cache->items) {
+ free(cache);
+ return NULL;
+ }
+ }
+ return cache;
+}
+
+
+void
+_mesa_delete_program_cache(struct gl_context *ctx, struct gl_program_cache *cache)
+{
+ clear_cache(ctx, cache, GL_FALSE);
+ free(cache->items);
+ free(cache);
+}
+
+void
+_mesa_delete_shader_cache(struct gl_context *ctx,
+ struct gl_program_cache *cache)
+{
+ clear_cache(ctx, cache, GL_TRUE);
+ free(cache->items);
+ free(cache);
+}
+
+
+struct gl_program *
+_mesa_search_program_cache(struct gl_program_cache *cache,
+ const void *key, GLuint keysize)
+{
+ if (cache->last &&
+ memcmp(cache->last->key, key, keysize) == 0) {
+ return cache->last->program;
+ }
+ else {
+ const GLuint hash = hash_key(key, keysize);
+ struct cache_item *c;
+
+ for (c = cache->items[hash % cache->size]; c; c = c->next) {
+ if (c->hash == hash && memcmp(c->key, key, keysize) == 0) {
+ cache->last = c;
+ return c->program;
+ }
+ }
+
+ return NULL;
+ }
+}
+
+
+void
+_mesa_program_cache_insert(struct gl_context *ctx,
+ struct gl_program_cache *cache,
+ const void *key, GLuint keysize,
+ struct gl_program *program)
+{
+ const GLuint hash = hash_key(key, keysize);
+ struct cache_item *c = CALLOC_STRUCT(cache_item);
+
+ c->hash = hash;
+
+ c->key = malloc(keysize);
+ memcpy(c->key, key, keysize);
+
+ c->program = program; /* no refcount change */
+
+ if (cache->n_items > cache->size * 1.5) {
+ if (cache->size < 1000)
+ rehash(cache);
+ else
+ clear_cache(ctx, cache, GL_FALSE);
+ }
+
+ cache->n_items++;
+ c->next = cache->items[hash % cache->size];
+ cache->items[hash % cache->size] = c;
+}
+
+void
+_mesa_shader_cache_insert(struct gl_context *ctx,
+ struct gl_program_cache *cache,
+ const void *key, GLuint keysize,
+ struct gl_shader_program *program)
+{
+ const GLuint hash = hash_key(key, keysize);
+ struct cache_item *c = CALLOC_STRUCT(cache_item);
+
+ c->hash = hash;
+
+ c->key = malloc(keysize);
+ memcpy(c->key, key, keysize);
+
+ c->program = (struct gl_program *)program; /* no refcount change */
+
+ if (cache->n_items > cache->size * 1.5) {
+ if (cache->size < 1000)
+ rehash(cache);
+ else
+ clear_cache(ctx, cache, GL_TRUE);
+ }
+
+ cache->n_items++;
+ c->next = cache->items[hash % cache->size];
+ cache->items[hash % cache->size] = c;
+}
diff --git a/mesalib/src/mesa/program/prog_cache.h b/mesalib/src/mesa/program/prog_cache.h
index e7ec8d39a..5d46bfc5c 100644
--- a/mesalib/src/mesa/program/prog_cache.h
+++ b/mesalib/src/mesa/program/prog_cache.h
@@ -1,68 +1,68 @@
-/**************************************************************************
- *
- * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef PROG_CACHE_H
-#define PROG_CACHE_H
-
-
-#include "main/glheader.h"
-
-struct gl_context;
-
-/** Opaque type */
-struct gl_program_cache;
-
-
-extern struct gl_program_cache *
-_mesa_new_program_cache(void);
-
-extern void
-_mesa_delete_program_cache(struct gl_context *ctx, struct gl_program_cache *pc);
-
-extern void
-_mesa_delete_shader_cache(struct gl_context *ctx,
- struct gl_program_cache *cache);
-
-extern struct gl_program *
-_mesa_search_program_cache(struct gl_program_cache *cache,
- const void *key, GLuint keysize);
-
-extern void
-_mesa_program_cache_insert(struct gl_context *ctx,
- struct gl_program_cache *cache,
- const void *key, GLuint keysize,
- struct gl_program *program);
-
-void
-_mesa_shader_cache_insert(struct gl_context *ctx,
- struct gl_program_cache *cache,
- const void *key, GLuint keysize,
- struct gl_shader_program *program);
-
-
-#endif /* PROG_CACHE_H */
+/**************************************************************************
+ *
+ * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef PROG_CACHE_H
+#define PROG_CACHE_H
+
+
+#include "main/glheader.h"
+
+struct gl_context;
+
+/** Opaque type */
+struct gl_program_cache;
+
+
+extern struct gl_program_cache *
+_mesa_new_program_cache(void);
+
+extern void
+_mesa_delete_program_cache(struct gl_context *ctx, struct gl_program_cache *pc);
+
+extern void
+_mesa_delete_shader_cache(struct gl_context *ctx,
+ struct gl_program_cache *cache);
+
+extern struct gl_program *
+_mesa_search_program_cache(struct gl_program_cache *cache,
+ const void *key, GLuint keysize);
+
+extern void
+_mesa_program_cache_insert(struct gl_context *ctx,
+ struct gl_program_cache *cache,
+ const void *key, GLuint keysize,
+ struct gl_program *program);
+
+void
+_mesa_shader_cache_insert(struct gl_context *ctx,
+ struct gl_program_cache *cache,
+ const void *key, GLuint keysize,
+ struct gl_shader_program *program);
+
+
+#endif /* PROG_CACHE_H */
diff --git a/mesalib/src/mesa/program/sampler.h b/mesalib/src/mesa/program/sampler.h
index c76d7077b..22467e990 100644
--- a/mesalib/src/mesa/program/sampler.h
+++ b/mesalib/src/mesa/program/sampler.h
@@ -1,29 +1,29 @@
-/*
- * Copyright (C) 2005-2007 Brian Paul All Rights Reserved.
- * Copyright (C) 2008 VMware, Inc. All Rights Reserved.
- * Copyright © 2010 Intel Corporation
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-int
-_mesa_get_sampler_uniform_value(class ir_dereference *sampler,
- struct gl_shader_program *shader_program,
- const struct gl_program *prog);
+/*
+ * Copyright (C) 2005-2007 Brian Paul All Rights Reserved.
+ * Copyright (C) 2008 VMware, Inc. All Rights Reserved.
+ * Copyright © 2010 Intel Corporation
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+int
+_mesa_get_sampler_uniform_value(class ir_dereference *sampler,
+ struct gl_shader_program *shader_program,
+ const struct gl_program *prog);
diff --git a/mesalib/src/mesa/program/symbol_table.h b/mesalib/src/mesa/program/symbol_table.h
index 1de29a8f0..f9d91649b 100644
--- a/mesalib/src/mesa/program/symbol_table.h
+++ b/mesalib/src/mesa/program/symbol_table.h
@@ -1,62 +1,62 @@
-/*
- * Copyright © 2008 Intel Corporation
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-#ifndef MESA_SYMBOL_TABLE_H
-#define MESA_SYMBOL_TABLE_H
-
-struct _mesa_symbol_table;
-struct _mesa_symbol_table_iterator;
-
-extern void _mesa_symbol_table_push_scope(struct _mesa_symbol_table *table);
-
-extern void _mesa_symbol_table_pop_scope(struct _mesa_symbol_table *table);
-
-extern int _mesa_symbol_table_add_symbol(struct _mesa_symbol_table *symtab,
- int name_space, const char *name, void *declaration);
-
-extern int _mesa_symbol_table_add_global_symbol(
- struct _mesa_symbol_table *symtab, int name_space, const char *name,
- void *declaration);
-
-extern int _mesa_symbol_table_symbol_scope(struct _mesa_symbol_table *table,
- int name_space, const char *name);
-
-extern void *_mesa_symbol_table_find_symbol(
- struct _mesa_symbol_table *symtab, int name_space, const char *name);
-
-extern struct _mesa_symbol_table *_mesa_symbol_table_ctor(void);
-
-extern void _mesa_symbol_table_dtor(struct _mesa_symbol_table *);
-
-extern struct _mesa_symbol_table_iterator *_mesa_symbol_table_iterator_ctor(
- struct _mesa_symbol_table *table, int name_space, const char *name);
-
-extern void _mesa_symbol_table_iterator_dtor(
- struct _mesa_symbol_table_iterator *);
-
-extern void *_mesa_symbol_table_iterator_get(
- struct _mesa_symbol_table_iterator *iter);
-
-extern int _mesa_symbol_table_iterator_next(
- struct _mesa_symbol_table_iterator *iter);
-
-#endif /* MESA_SYMBOL_TABLE_H */
+/*
+ * Copyright © 2008 Intel Corporation
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+#ifndef MESA_SYMBOL_TABLE_H
+#define MESA_SYMBOL_TABLE_H
+
+struct _mesa_symbol_table;
+struct _mesa_symbol_table_iterator;
+
+extern void _mesa_symbol_table_push_scope(struct _mesa_symbol_table *table);
+
+extern void _mesa_symbol_table_pop_scope(struct _mesa_symbol_table *table);
+
+extern int _mesa_symbol_table_add_symbol(struct _mesa_symbol_table *symtab,
+ int name_space, const char *name, void *declaration);
+
+extern int _mesa_symbol_table_add_global_symbol(
+ struct _mesa_symbol_table *symtab, int name_space, const char *name,
+ void *declaration);
+
+extern int _mesa_symbol_table_symbol_scope(struct _mesa_symbol_table *table,
+ int name_space, const char *name);
+
+extern void *_mesa_symbol_table_find_symbol(
+ struct _mesa_symbol_table *symtab, int name_space, const char *name);
+
+extern struct _mesa_symbol_table *_mesa_symbol_table_ctor(void);
+
+extern void _mesa_symbol_table_dtor(struct _mesa_symbol_table *);
+
+extern struct _mesa_symbol_table_iterator *_mesa_symbol_table_iterator_ctor(
+ struct _mesa_symbol_table *table, int name_space, const char *name);
+
+extern void _mesa_symbol_table_iterator_dtor(
+ struct _mesa_symbol_table_iterator *);
+
+extern void *_mesa_symbol_table_iterator_get(
+ struct _mesa_symbol_table_iterator *iter);
+
+extern int _mesa_symbol_table_iterator_next(
+ struct _mesa_symbol_table_iterator *iter);
+
+#endif /* MESA_SYMBOL_TABLE_H */
diff --git a/mesalib/src/mesa/state_tracker/Makefile b/mesalib/src/mesa/state_tracker/Makefile
index 4a38ca8f1..0ab1dc6e6 100644
--- a/mesalib/src/mesa/state_tracker/Makefile
+++ b/mesalib/src/mesa/state_tracker/Makefile
@@ -1,2 +1,2 @@
-default:
+default:
cd ../.. ; make \ No newline at end of file
diff --git a/mesalib/src/mesa/state_tracker/st_atom.h b/mesalib/src/mesa/state_tracker/st_atom.h
index b5f837f78..930a08444 100644
--- a/mesalib/src/mesa/state_tracker/st_atom.h
+++ b/mesalib/src/mesa/state_tracker/st_atom.h
@@ -1,73 +1,73 @@
-/**************************************************************************
- *
- * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
- /*
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-
-#ifndef ST_ATOM_H
-#define ST_ATOM_H
-
-#include "main/glheader.h"
-
-struct st_context;
-struct st_tracked_state;
-
-void st_init_atoms( struct st_context *st );
-void st_destroy_atoms( struct st_context *st );
-
-
-void st_validate_state( struct st_context *st );
-
-
-extern const struct st_tracked_state st_update_framebuffer;
-extern const struct st_tracked_state st_update_clip;
-extern const struct st_tracked_state st_update_depth_stencil_alpha;
-extern const struct st_tracked_state st_update_fp;
-extern const struct st_tracked_state st_update_gp;
-extern const struct st_tracked_state st_update_vp;
-extern const struct st_tracked_state st_update_rasterizer;
-extern const struct st_tracked_state st_update_polygon_stipple;
-extern const struct st_tracked_state st_update_viewport;
-extern const struct st_tracked_state st_update_scissor;
-extern const struct st_tracked_state st_update_blend;
-extern const struct st_tracked_state st_update_msaa;
-extern const struct st_tracked_state st_update_sampler;
-extern const struct st_tracked_state st_update_texture;
-extern const struct st_tracked_state st_update_vertex_texture;
-extern const struct st_tracked_state st_finalize_textures;
-extern const struct st_tracked_state st_update_fs_constants;
-extern const struct st_tracked_state st_update_gs_constants;
-extern const struct st_tracked_state st_update_vs_constants;
-extern const struct st_tracked_state st_update_pixel_transfer;
-
-
-GLuint st_compare_func_to_pipe(GLenum func);
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+ /*
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+
+#ifndef ST_ATOM_H
+#define ST_ATOM_H
+
+#include "main/glheader.h"
+
+struct st_context;
+struct st_tracked_state;
+
+void st_init_atoms( struct st_context *st );
+void st_destroy_atoms( struct st_context *st );
+
+
+void st_validate_state( struct st_context *st );
+
+
+extern const struct st_tracked_state st_update_framebuffer;
+extern const struct st_tracked_state st_update_clip;
+extern const struct st_tracked_state st_update_depth_stencil_alpha;
+extern const struct st_tracked_state st_update_fp;
+extern const struct st_tracked_state st_update_gp;
+extern const struct st_tracked_state st_update_vp;
+extern const struct st_tracked_state st_update_rasterizer;
+extern const struct st_tracked_state st_update_polygon_stipple;
+extern const struct st_tracked_state st_update_viewport;
+extern const struct st_tracked_state st_update_scissor;
+extern const struct st_tracked_state st_update_blend;
+extern const struct st_tracked_state st_update_msaa;
+extern const struct st_tracked_state st_update_sampler;
+extern const struct st_tracked_state st_update_texture;
+extern const struct st_tracked_state st_update_vertex_texture;
+extern const struct st_tracked_state st_finalize_textures;
+extern const struct st_tracked_state st_update_fs_constants;
+extern const struct st_tracked_state st_update_gs_constants;
+extern const struct st_tracked_state st_update_vs_constants;
+extern const struct st_tracked_state st_update_pixel_transfer;
+
+
+GLuint st_compare_func_to_pipe(GLenum func);
+
+#endif
diff --git a/mesalib/src/mesa/state_tracker/st_atom_constbuf.h b/mesalib/src/mesa/state_tracker/st_atom_constbuf.h
index d53654ee6..97b076629 100644
--- a/mesalib/src/mesa/state_tracker/st_atom_constbuf.h
+++ b/mesalib/src/mesa/state_tracker/st_atom_constbuf.h
@@ -1,41 +1,41 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef ST_ATOM_CONSTBUF_H
-#define ST_ATOM_CONSTBUF_H
-
-struct gl_program_parameter_list;
-struct st_context;
-
-
-void st_upload_constants( struct st_context *st,
- struct gl_program_parameter_list *params,
- unsigned id);
-
-
-#endif /* ST_ATOM_CONSTBUF_H */
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef ST_ATOM_CONSTBUF_H
+#define ST_ATOM_CONSTBUF_H
+
+struct gl_program_parameter_list;
+struct st_context;
+
+
+void st_upload_constants( struct st_context *st,
+ struct gl_program_parameter_list *params,
+ unsigned id);
+
+
+#endif /* ST_ATOM_CONSTBUF_H */
diff --git a/mesalib/src/mesa/state_tracker/st_atom_msaa.c b/mesalib/src/mesa/state_tracker/st_atom_msaa.c
index 73f0ff160..ea9eb9a6d 100644
--- a/mesalib/src/mesa/state_tracker/st_atom_msaa.c
+++ b/mesalib/src/mesa/state_tracker/st_atom_msaa.c
@@ -1,83 +1,83 @@
-/**************************************************************************
- *
- * Copyright 2010 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#include "st_context.h"
-#include "pipe/p_context.h"
-#include "st_atom.h"
-
-#include "cso_cache/cso_context.h"
-
-
-/* Second state atom for user clip planes:
- */
-static void update_sample_mask( struct st_context *st )
-{
- unsigned sample_mask = 0xffffffff;
- unsigned sample_count = 1;
- struct pipe_framebuffer_state *framebuffer = &st->state.framebuffer;
-
- /* dependency here on bound surface (or rather, sample count) is worrying */
- if (framebuffer->zsbuf)
- sample_count = framebuffer->zsbuf->texture->nr_samples;
- else if (framebuffer->cbufs[0])
- sample_count = framebuffer->cbufs[0]->texture->nr_samples;
-
- if (st->ctx->Multisample.Enabled && sample_count > 1) {
- /* unlike in gallium/d3d10 the mask is only active if msaa is enabled */
- if (st->ctx->Multisample.SampleCoverage) {
- unsigned nr_bits;
- nr_bits = st->ctx->Multisample.SampleCoverageValue * (float)sample_count;
- /* there's lot of ways how to do this. We just use first few bits,
- since we have no knowledge of sample positions here. When
- app-supplied mask though is used too might need to be smarter.
- Also, there's a interface restriction here in theory it is
- encouraged this mask not be the same at each pixel. */
- sample_mask = (1 << nr_bits) - 1;
- if (st->ctx->Multisample.SampleCoverageInvert)
- sample_mask = ~sample_mask;
- }
- /* TODO merge with app-supplied sample mask */
- }
-
- /* mask off unused bits or don't care? */
-
- if (sample_mask != st->state.sample_mask) {
- st->state.sample_mask = sample_mask;
- cso_set_sample_mask(st->cso_context, sample_mask);
- }
-}
-
-
-const struct st_tracked_state st_update_msaa = {
- "st_update_msaa", /* name */
- { /* dirty */
- (_NEW_MULTISAMPLE | _NEW_BUFFERS), /* mesa */
- ST_NEW_FRAMEBUFFER, /* st */
- },
- update_sample_mask /* update */
-};
+/**************************************************************************
+ *
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#include "st_context.h"
+#include "pipe/p_context.h"
+#include "st_atom.h"
+
+#include "cso_cache/cso_context.h"
+
+
+/* Second state atom for user clip planes:
+ */
+static void update_sample_mask( struct st_context *st )
+{
+ unsigned sample_mask = 0xffffffff;
+ unsigned sample_count = 1;
+ struct pipe_framebuffer_state *framebuffer = &st->state.framebuffer;
+
+ /* dependency here on bound surface (or rather, sample count) is worrying */
+ if (framebuffer->zsbuf)
+ sample_count = framebuffer->zsbuf->texture->nr_samples;
+ else if (framebuffer->cbufs[0])
+ sample_count = framebuffer->cbufs[0]->texture->nr_samples;
+
+ if (st->ctx->Multisample.Enabled && sample_count > 1) {
+ /* unlike in gallium/d3d10 the mask is only active if msaa is enabled */
+ if (st->ctx->Multisample.SampleCoverage) {
+ unsigned nr_bits;
+ nr_bits = st->ctx->Multisample.SampleCoverageValue * (float)sample_count;
+ /* there's lot of ways how to do this. We just use first few bits,
+ since we have no knowledge of sample positions here. When
+ app-supplied mask though is used too might need to be smarter.
+ Also, there's a interface restriction here in theory it is
+ encouraged this mask not be the same at each pixel. */
+ sample_mask = (1 << nr_bits) - 1;
+ if (st->ctx->Multisample.SampleCoverageInvert)
+ sample_mask = ~sample_mask;
+ }
+ /* TODO merge with app-supplied sample mask */
+ }
+
+ /* mask off unused bits or don't care? */
+
+ if (sample_mask != st->state.sample_mask) {
+ st->state.sample_mask = sample_mask;
+ cso_set_sample_mask(st->cso_context, sample_mask);
+ }
+}
+
+
+const struct st_tracked_state st_update_msaa = {
+ "st_update_msaa", /* name */
+ { /* dirty */
+ (_NEW_MULTISAMPLE | _NEW_BUFFERS), /* mesa */
+ ST_NEW_FRAMEBUFFER, /* st */
+ },
+ update_sample_mask /* update */
+};
diff --git a/mesalib/src/mesa/state_tracker/st_atom_shader.h b/mesalib/src/mesa/state_tracker/st_atom_shader.h
index fbb3a4137..56d4c68f4 100644
--- a/mesalib/src/mesa/state_tracker/st_atom_shader.h
+++ b/mesalib/src/mesa/state_tracker/st_atom_shader.h
@@ -1,41 +1,41 @@
-/**************************************************************************
- *
- * Copyright 2007-2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef ST_ATOM_SHADER_H
-#define ST_ATOM_SHADER_H
-
-
-struct st_context;
-struct translated_vertex_program;
-
-extern void
-st_free_translated_vertex_programs(struct st_context *st,
- struct translated_vertex_program *xvp);
-
-
-#endif /* ST_ATOM_SHADER_H */
+/**************************************************************************
+ *
+ * Copyright 2007-2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef ST_ATOM_SHADER_H
+#define ST_ATOM_SHADER_H
+
+
+struct st_context;
+struct translated_vertex_program;
+
+extern void
+st_free_translated_vertex_programs(struct st_context *st,
+ struct translated_vertex_program *xvp);
+
+
+#endif /* ST_ATOM_SHADER_H */
diff --git a/mesalib/src/mesa/state_tracker/st_atom_viewport.c b/mesalib/src/mesa/state_tracker/st_atom_viewport.c
index df26fb4a6..133cc49ea 100644
--- a/mesalib/src/mesa/state_tracker/st_atom_viewport.c
+++ b/mesalib/src/mesa/state_tracker/st_atom_viewport.c
@@ -1,94 +1,94 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#include "main/context.h"
-#include "st_context.h"
-#include "st_atom.h"
-#include "pipe/p_context.h"
-#include "cso_cache/cso_context.h"
-
-/**
- * Update the viewport transformation matrix. Depends on:
- * - viewport pos/size
- * - depthrange
- * - window pos/size or FBO size
- */
-static void
-update_viewport( struct st_context *st )
-{
- struct gl_context *ctx = st->ctx;
- GLfloat yScale, yBias;
-
- /* _NEW_BUFFERS
- */
- if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP) {
- /* Drawing to a window. The corresponding gallium surface uses
- * Y=0=TOP but OpenGL is Y=0=BOTTOM. So we need to invert the viewport.
- */
- yScale = -1;
- yBias = (GLfloat)ctx->DrawBuffer->Height;
- }
- else {
- /* Drawing to an FBO where Y=0=BOTTOM, like OpenGL - don't invert */
- yScale = 1.0;
- yBias = 0.0;
- }
-
- /* _NEW_VIEWPORT
- */
- {
- GLfloat x = (GLfloat)ctx->Viewport.X;
- GLfloat y = (GLfloat)ctx->Viewport.Y;
- GLfloat z = ctx->Viewport.Near;
- GLfloat half_width = (GLfloat)ctx->Viewport.Width * 0.5f;
- GLfloat half_height = (GLfloat)ctx->Viewport.Height * 0.5f;
- GLfloat half_depth = (GLfloat)(ctx->Viewport.Far - ctx->Viewport.Near) * 0.5f;
-
- st->state.viewport.scale[0] = half_width;
- st->state.viewport.scale[1] = half_height * yScale;
- st->state.viewport.scale[2] = half_depth;
- st->state.viewport.scale[3] = 1.0;
-
- st->state.viewport.translate[0] = half_width + x;
- st->state.viewport.translate[1] = (half_height + y) * yScale + yBias;
- st->state.viewport.translate[2] = half_depth + z;
- st->state.viewport.translate[3] = 0.0;
-
- cso_set_viewport(st->cso_context, &st->state.viewport);
- }
-}
-
-
-const struct st_tracked_state st_update_viewport = {
- "st_update_viewport", /* name */
- { /* dirty */
- _NEW_BUFFERS | _NEW_VIEWPORT, /* mesa */
- 0, /* st */
- },
- update_viewport /* update */
-};
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#include "main/context.h"
+#include "st_context.h"
+#include "st_atom.h"
+#include "pipe/p_context.h"
+#include "cso_cache/cso_context.h"
+
+/**
+ * Update the viewport transformation matrix. Depends on:
+ * - viewport pos/size
+ * - depthrange
+ * - window pos/size or FBO size
+ */
+static void
+update_viewport( struct st_context *st )
+{
+ struct gl_context *ctx = st->ctx;
+ GLfloat yScale, yBias;
+
+ /* _NEW_BUFFERS
+ */
+ if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP) {
+ /* Drawing to a window. The corresponding gallium surface uses
+ * Y=0=TOP but OpenGL is Y=0=BOTTOM. So we need to invert the viewport.
+ */
+ yScale = -1;
+ yBias = (GLfloat)ctx->DrawBuffer->Height;
+ }
+ else {
+ /* Drawing to an FBO where Y=0=BOTTOM, like OpenGL - don't invert */
+ yScale = 1.0;
+ yBias = 0.0;
+ }
+
+ /* _NEW_VIEWPORT
+ */
+ {
+ GLfloat x = (GLfloat)ctx->Viewport.X;
+ GLfloat y = (GLfloat)ctx->Viewport.Y;
+ GLfloat z = ctx->Viewport.Near;
+ GLfloat half_width = (GLfloat)ctx->Viewport.Width * 0.5f;
+ GLfloat half_height = (GLfloat)ctx->Viewport.Height * 0.5f;
+ GLfloat half_depth = (GLfloat)(ctx->Viewport.Far - ctx->Viewport.Near) * 0.5f;
+
+ st->state.viewport.scale[0] = half_width;
+ st->state.viewport.scale[1] = half_height * yScale;
+ st->state.viewport.scale[2] = half_depth;
+ st->state.viewport.scale[3] = 1.0;
+
+ st->state.viewport.translate[0] = half_width + x;
+ st->state.viewport.translate[1] = (half_height + y) * yScale + yBias;
+ st->state.viewport.translate[2] = half_depth + z;
+ st->state.viewport.translate[3] = 0.0;
+
+ cso_set_viewport(st->cso_context, &st->state.viewport);
+ }
+}
+
+
+const struct st_tracked_state st_update_viewport = {
+ "st_update_viewport", /* name */
+ { /* dirty */
+ _NEW_BUFFERS | _NEW_VIEWPORT, /* mesa */
+ 0, /* st */
+ },
+ update_viewport /* update */
+};
diff --git a/mesalib/src/mesa/state_tracker/st_cache.h b/mesalib/src/mesa/state_tracker/st_cache.h
index 52c1b378d..6d5de7b13 100644
--- a/mesalib/src/mesa/state_tracker/st_cache.h
+++ b/mesalib/src/mesa/state_tracker/st_cache.h
@@ -1,69 +1,69 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
- /*
- * Authors:
- * Zack Rusin <zack@tungstengraphics.com>
- */
-
-#ifndef ST_CACHE_H
-#define ST_CACHE_H
-
-struct pipe_blend_state;
-struct pipe_depth_stencil_alpha_state;
-struct pipe_rasterizer_state;
-struct pipe_sampler_state;
-struct pipe_shader_state;
-struct st_context;
-
-
-const struct cso_blend *
-st_cached_blend_state(struct st_context *st,
- const struct pipe_blend_state *blend);
-
-const struct cso_sampler *
-st_cached_sampler_state(struct st_context *st,
- const struct pipe_sampler_state *sampler);
-
-const struct cso_depth_stencil_alpha *
-st_cached_depth_stencil_alpha_state(struct st_context *st,
- const struct pipe_depth_stencil_alpha_state *depth_stencil);
-
-const struct cso_rasterizer *
-st_cached_rasterizer_state(struct st_context *st,
- const struct pipe_rasterizer_state *raster);
-
-const struct cso_fragment_shader *
-st_cached_fs_state(struct st_context *st,
- const struct pipe_shader_state *templ);
-
-
-const struct cso_vertex_shader *
-st_cached_vs_state(struct st_context *st,
- const struct pipe_shader_state *templ);
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+ /*
+ * Authors:
+ * Zack Rusin <zack@tungstengraphics.com>
+ */
+
+#ifndef ST_CACHE_H
+#define ST_CACHE_H
+
+struct pipe_blend_state;
+struct pipe_depth_stencil_alpha_state;
+struct pipe_rasterizer_state;
+struct pipe_sampler_state;
+struct pipe_shader_state;
+struct st_context;
+
+
+const struct cso_blend *
+st_cached_blend_state(struct st_context *st,
+ const struct pipe_blend_state *blend);
+
+const struct cso_sampler *
+st_cached_sampler_state(struct st_context *st,
+ const struct pipe_sampler_state *sampler);
+
+const struct cso_depth_stencil_alpha *
+st_cached_depth_stencil_alpha_state(struct st_context *st,
+ const struct pipe_depth_stencil_alpha_state *depth_stencil);
+
+const struct cso_rasterizer *
+st_cached_rasterizer_state(struct st_context *st,
+ const struct pipe_rasterizer_state *raster);
+
+const struct cso_fragment_shader *
+st_cached_fs_state(struct st_context *st,
+ const struct pipe_shader_state *templ);
+
+
+const struct cso_vertex_shader *
+st_cached_vs_state(struct st_context *st,
+ const struct pipe_shader_state *templ);
+
+#endif
diff --git a/mesalib/src/mesa/state_tracker/st_cb_bitmap.h b/mesalib/src/mesa/state_tracker/st_cb_bitmap.h
index cc6d82391..ed1415803 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_bitmap.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_bitmap.h
@@ -1,96 +1,96 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef ST_CB_BITMAP_H
-#define ST_CB_BITMAP_H
-
-
-#include "main/compiler.h"
-#include "main/mfeatures.h"
-
-struct dd_function_table;
-struct st_context;
-struct gl_fragment_program;
-struct st_fragment_program;
-
-#if FEATURE_drawpix
-
-extern void
-st_init_bitmap_functions(struct dd_function_table *functions);
-
-extern void
-st_init_bitmap(struct st_context *st);
-
-extern void
-st_destroy_bitmap(struct st_context *st);
-
-extern void
-st_make_bitmap_fragment_program(struct st_context *st,
- struct gl_fragment_program *fpIn,
- struct gl_fragment_program **fpOut,
- GLuint *bitmap_sampler);
-
-extern void
-st_flush_bitmap_cache(struct st_context *st);
-
-/* Flush bitmap cache and release vertex buffer. Needed at end of
- * frame to avoid synchronous rendering.
- */
-extern void
-st_flush_bitmap(struct st_context *st);
-
-#else
-
-static INLINE void
-st_init_bitmap_functions(struct dd_function_table *functions)
-{
-}
-
-static INLINE void
-st_init_bitmap(struct st_context *st)
-{
-}
-
-static INLINE void
-st_destroy_bitmap(struct st_context *st)
-{
-}
-
-static INLINE void
-st_flush_bitmap_cache(struct st_context *st)
-{
-}
-
-static INLINE void
-st_flush_bitmap(struct st_context *st)
-{
-}
-
-#endif /* FEATURE_drawpix */
-
-#endif /* ST_CB_BITMAP_H */
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef ST_CB_BITMAP_H
+#define ST_CB_BITMAP_H
+
+
+#include "main/compiler.h"
+#include "main/mfeatures.h"
+
+struct dd_function_table;
+struct st_context;
+struct gl_fragment_program;
+struct st_fragment_program;
+
+#if FEATURE_drawpix
+
+extern void
+st_init_bitmap_functions(struct dd_function_table *functions);
+
+extern void
+st_init_bitmap(struct st_context *st);
+
+extern void
+st_destroy_bitmap(struct st_context *st);
+
+extern void
+st_make_bitmap_fragment_program(struct st_context *st,
+ struct gl_fragment_program *fpIn,
+ struct gl_fragment_program **fpOut,
+ GLuint *bitmap_sampler);
+
+extern void
+st_flush_bitmap_cache(struct st_context *st);
+
+/* Flush bitmap cache and release vertex buffer. Needed at end of
+ * frame to avoid synchronous rendering.
+ */
+extern void
+st_flush_bitmap(struct st_context *st);
+
+#else
+
+static INLINE void
+st_init_bitmap_functions(struct dd_function_table *functions)
+{
+}
+
+static INLINE void
+st_init_bitmap(struct st_context *st)
+{
+}
+
+static INLINE void
+st_destroy_bitmap(struct st_context *st)
+{
+}
+
+static INLINE void
+st_flush_bitmap_cache(struct st_context *st)
+{
+}
+
+static INLINE void
+st_flush_bitmap(struct st_context *st)
+{
+}
+
+#endif /* FEATURE_drawpix */
+
+#endif /* ST_CB_BITMAP_H */
diff --git a/mesalib/src/mesa/state_tracker/st_cb_blit.h b/mesalib/src/mesa/state_tracker/st_cb_blit.h
index e378e6789..c6d9a3679 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_blit.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_blit.h
@@ -1,59 +1,59 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef ST_CB_BLIT_H
-#define ST_CB_BLIT_H
-
-
-#include "main/compiler.h"
-#include "main/mfeatures.h"
-
-struct dd_function_table;
-struct st_context;
-
-
-extern void
-st_init_blit(struct st_context *st);
-
-extern void
-st_destroy_blit(struct st_context *st);
-
-#if FEATURE_EXT_framebuffer_blit
-
-extern void
-st_init_blit_functions(struct dd_function_table *functions);
-
-#else
-
-static INLINE void
-st_init_blit_functions(struct dd_function_table *functions)
-{
-}
-
-#endif /* FEATURE_EXT_framebuffer_blit */
-
-#endif /* ST_CB_BLIT_H */
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef ST_CB_BLIT_H
+#define ST_CB_BLIT_H
+
+
+#include "main/compiler.h"
+#include "main/mfeatures.h"
+
+struct dd_function_table;
+struct st_context;
+
+
+extern void
+st_init_blit(struct st_context *st);
+
+extern void
+st_destroy_blit(struct st_context *st);
+
+#if FEATURE_EXT_framebuffer_blit
+
+extern void
+st_init_blit_functions(struct dd_function_table *functions);
+
+#else
+
+static INLINE void
+st_init_blit_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_EXT_framebuffer_blit */
+
+#endif /* ST_CB_BLIT_H */
diff --git a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h
index 16abaa856..1c991d208 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h
@@ -1,68 +1,68 @@
-/**************************************************************************
- *
- * Copyright 2005 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef ST_CB_BUFFEROBJECTS_H
-#define ST_CB_BUFFEROBJECTS_H
-
-#include "main/compiler.h"
-#include "main/mtypes.h"
-
-struct dd_function_table;
-struct pipe_resource;
-struct st_context;
-
-/**
- * State_tracker vertex/pixel buffer object, derived from Mesa's
- * gl_buffer_object.
- */
-struct st_buffer_object
-{
- struct gl_buffer_object Base;
- struct pipe_resource *buffer; /* GPU storage */
- struct pipe_transfer *transfer; /* In-progress map information */
-};
-
-
-/** cast wrapper */
-static INLINE struct st_buffer_object *
-st_buffer_object(struct gl_buffer_object *obj)
-{
- return (struct st_buffer_object *) obj;
-}
-
-
-extern void
-st_bufferobj_validate_usage(struct st_context *st,
- struct st_buffer_object *obj,
- unsigned usage);
-
-
-extern void
-st_init_bufferobject_functions(struct dd_function_table *functions);
-
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2005 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef ST_CB_BUFFEROBJECTS_H
+#define ST_CB_BUFFEROBJECTS_H
+
+#include "main/compiler.h"
+#include "main/mtypes.h"
+
+struct dd_function_table;
+struct pipe_resource;
+struct st_context;
+
+/**
+ * State_tracker vertex/pixel buffer object, derived from Mesa's
+ * gl_buffer_object.
+ */
+struct st_buffer_object
+{
+ struct gl_buffer_object Base;
+ struct pipe_resource *buffer; /* GPU storage */
+ struct pipe_transfer *transfer; /* In-progress map information */
+};
+
+
+/** cast wrapper */
+static INLINE struct st_buffer_object *
+st_buffer_object(struct gl_buffer_object *obj)
+{
+ return (struct st_buffer_object *) obj;
+}
+
+
+extern void
+st_bufferobj_validate_usage(struct st_context *st,
+ struct st_buffer_object *obj,
+ unsigned usage);
+
+
+extern void
+st_init_bufferobject_functions(struct dd_function_table *functions);
+
+
+#endif
diff --git a/mesalib/src/mesa/state_tracker/st_cb_condrender.h b/mesalib/src/mesa/state_tracker/st_cb_condrender.h
index 24eb09258..79d0db8d0 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_condrender.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_condrender.h
@@ -1,37 +1,37 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef ST_CB_CONDRENDER_H
-#define ST_CB_CONDRENDER_H
-
-
-struct dd_function_table;
-
-extern void st_init_cond_render_functions(struct dd_function_table *functions);
-
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef ST_CB_CONDRENDER_H
+#define ST_CB_CONDRENDER_H
+
+
+struct dd_function_table;
+
+extern void st_init_cond_render_functions(struct dd_function_table *functions);
+
+
+#endif
diff --git a/mesalib/src/mesa/state_tracker/st_cb_drawpixels.h b/mesalib/src/mesa/state_tracker/st_cb_drawpixels.h
index 9c02263ea..44d7f5ed1 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_drawpixels.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_drawpixels.h
@@ -1,70 +1,70 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef ST_CB_DRAWPIXELS_H
-#define ST_CB_DRAWPIXELS_H
-
-
-#include "main/compiler.h"
-#include "main/mfeatures.h"
-
-struct dd_function_table;
-struct st_context;
-
-#if FEATURE_drawpix
-
-extern void st_init_drawpixels_functions(struct dd_function_table *functions);
-
-extern void
-st_destroy_drawpix(struct st_context *st);
-
-extern void
-st_make_drawpix_fragment_program(struct st_context *st,
- struct gl_fragment_program *fpIn,
- struct gl_fragment_program **fpOut);
-
-extern struct gl_fragment_program *
-st_make_drawpix_z_stencil_program(struct st_context *st,
- GLboolean write_depth,
- GLboolean write_stencil);
-
-#else
-
-static INLINE void
-st_init_drawpixels_functions(struct dd_function_table *functions)
-{
-}
-
-static INLINE void
-st_destroy_drawpix(struct st_context *st)
-{
-}
-
-#endif /* FEATURE_drawpix */
-
-#endif /* ST_CB_DRAWPIXELS_H */
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef ST_CB_DRAWPIXELS_H
+#define ST_CB_DRAWPIXELS_H
+
+
+#include "main/compiler.h"
+#include "main/mfeatures.h"
+
+struct dd_function_table;
+struct st_context;
+
+#if FEATURE_drawpix
+
+extern void st_init_drawpixels_functions(struct dd_function_table *functions);
+
+extern void
+st_destroy_drawpix(struct st_context *st);
+
+extern void
+st_make_drawpix_fragment_program(struct st_context *st,
+ struct gl_fragment_program *fpIn,
+ struct gl_fragment_program **fpOut);
+
+extern struct gl_fragment_program *
+st_make_drawpix_z_stencil_program(struct st_context *st,
+ GLboolean write_depth,
+ GLboolean write_stencil);
+
+#else
+
+static INLINE void
+st_init_drawpixels_functions(struct dd_function_table *functions)
+{
+}
+
+static INLINE void
+st_destroy_drawpix(struct st_context *st)
+{
+}
+
+#endif /* FEATURE_drawpix */
+
+#endif /* ST_CB_DRAWPIXELS_H */
diff --git a/mesalib/src/mesa/state_tracker/st_cb_drawtex.h b/mesalib/src/mesa/state_tracker/st_cb_drawtex.h
index 0937b48f8..455da04e6 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_drawtex.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_drawtex.h
@@ -1,41 +1,41 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- **************************************************************************/
-
-
-#ifndef ST_CB_DRAWTEX_H
-#define ST_CB_DRAWTEX_H
-
-
-#include "main/compiler.h"
-#include "main/mfeatures.h"
-
-struct dd_function_table;
-struct st_context;
-
-#if FEATURE_OES_draw_texture
-
-extern void
-st_init_drawtex_functions(struct dd_function_table *functions);
-
-extern void
-st_destroy_drawtex(struct st_context *st);
-
-#else
-
-static INLINE void
-st_init_drawtex_functions(struct dd_function_table *functions)
-{
-}
-
-static INLINE void
-st_destroy_drawtex(struct st_context *st)
-{
-}
-
-#endif /* FEATURE_OES_draw_texture */
-
-#endif /* ST_CB_DRAWTEX_H */
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ **************************************************************************/
+
+
+#ifndef ST_CB_DRAWTEX_H
+#define ST_CB_DRAWTEX_H
+
+
+#include "main/compiler.h"
+#include "main/mfeatures.h"
+
+struct dd_function_table;
+struct st_context;
+
+#if FEATURE_OES_draw_texture
+
+extern void
+st_init_drawtex_functions(struct dd_function_table *functions);
+
+extern void
+st_destroy_drawtex(struct st_context *st);
+
+#else
+
+static INLINE void
+st_init_drawtex_functions(struct dd_function_table *functions)
+{
+}
+
+static INLINE void
+st_destroy_drawtex(struct st_context *st)
+{
+}
+
+#endif /* FEATURE_OES_draw_texture */
+
+#endif /* ST_CB_DRAWTEX_H */
diff --git a/mesalib/src/mesa/state_tracker/st_cb_eglimage.h b/mesalib/src/mesa/state_tracker/st_cb_eglimage.h
index b325b0608..48567ed9d 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_eglimage.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_eglimage.h
@@ -1,51 +1,51 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#ifndef ST_CB_EGLIMAGE_H
-#define ST_CB_EGLIMAGE_H
-
-#include "main/compiler.h"
-#include "main/mfeatures.h"
-
-struct dd_function_table;
-
-#if FEATURE_OES_EGL_image
-
-extern void
-st_init_eglimage_functions(struct dd_function_table *functions);
-
-#else
-
-static INLINE void
-st_init_eglimage_functions(struct dd_function_table *functions)
-{
-}
-
-#endif
-
-#endif /* ST_CB_EGLIMAGE_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.9
+ *
+ * Copyright (C) 2010 LunarG Inc.
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors:
+ * Chia-I Wu <olv@lunarg.com>
+ */
+
+#ifndef ST_CB_EGLIMAGE_H
+#define ST_CB_EGLIMAGE_H
+
+#include "main/compiler.h"
+#include "main/mfeatures.h"
+
+struct dd_function_table;
+
+#if FEATURE_OES_EGL_image
+
+extern void
+st_init_eglimage_functions(struct dd_function_table *functions);
+
+#else
+
+static INLINE void
+st_init_eglimage_functions(struct dd_function_table *functions)
+{
+}
+
+#endif
+
+#endif /* ST_CB_EGLIMAGE_H */
diff --git a/mesalib/src/mesa/state_tracker/st_cb_feedback.c b/mesalib/src/mesa/state_tracker/st_cb_feedback.c
index d390ba192..9b85a39be 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_feedback.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_feedback.c
@@ -1,309 +1,309 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-/**
- * GL_SELECT and GL_FEEDBACK render modes.
- * Basically, we use a private instance of the 'draw' module for doing
- * selection/feedback. It would be nice to use the transform_feedback
- * hardware feature, but it's defined as happening pre-clip and we want
- * post-clipped primitives. Also, there's concerns about the efficiency
- * of using the hardware for this anyway.
- *
- * Authors:
- * Brian Paul
- */
-
-#include "main/imports.h"
-#include "main/context.h"
-#include "main/feedback.h"
-#include "main/mfeatures.h"
-
-#include "vbo/vbo.h"
-
-#include "st_context.h"
-#include "st_draw.h"
-#include "st_cb_feedback.h"
-
-#include "pipe/p_context.h"
-#include "pipe/p_defines.h"
-
-#include "draw/draw_context.h"
-#include "draw/draw_pipe.h"
-
-
-#if FEATURE_feedback
-
-/**
- * This is actually used for both feedback and selection.
- */
-struct feedback_stage
-{
- struct draw_stage stage; /**< Base class */
- struct gl_context *ctx; /**< Rendering context */
- GLboolean reset_stipple_counter;
-};
-
-
-/**********************************************************************
- * GL Feedback functions
- **********************************************************************/
-
-static INLINE struct feedback_stage *
-feedback_stage( struct draw_stage *stage )
-{
- return (struct feedback_stage *)stage;
-}
-
-
-static void
-feedback_vertex(struct gl_context *ctx, const struct draw_context *draw,
- const struct vertex_header *v)
-{
- const struct st_context *st = st_context(ctx);
- GLfloat win[4];
- const GLfloat *color, *texcoord;
- GLuint slot;
-
- /* Recall that Y=0=Top of window for Gallium wincoords */
- win[0] = v->data[0][0];
- win[1] = ctx->DrawBuffer->Height - v->data[0][1];
- win[2] = v->data[0][2];
- win[3] = 1.0F / v->data[0][3];
-
- /* XXX
- * When we compute vertex layout, save info about position of the
- * color and texcoord attribs to use here.
- */
-
- slot = st->vertex_result_to_slot[VERT_RESULT_COL0];
- if (slot != ~0U)
- color = v->data[slot];
- else
- color = ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
-
- slot = st->vertex_result_to_slot[VERT_RESULT_TEX0];
- if (slot != ~0U)
- texcoord = v->data[slot];
- else
- texcoord = ctx->Current.Attrib[VERT_ATTRIB_TEX0];
-
- _mesa_feedback_vertex(ctx, win, color, texcoord);
-}
-
-
-static void
-feedback_tri( struct draw_stage *stage, struct prim_header *prim )
-{
- struct feedback_stage *fs = feedback_stage(stage);
- struct draw_context *draw = stage->draw;
- _mesa_feedback_token(fs->ctx, (GLfloat) GL_POLYGON_TOKEN);
- _mesa_feedback_token(fs->ctx, (GLfloat) 3); /* three vertices */
- feedback_vertex(fs->ctx, draw, prim->v[0]);
- feedback_vertex(fs->ctx, draw, prim->v[1]);
- feedback_vertex(fs->ctx, draw, prim->v[2]);
-}
-
-
-static void
-feedback_line( struct draw_stage *stage, struct prim_header *prim )
-{
- struct feedback_stage *fs = feedback_stage(stage);
- struct draw_context *draw = stage->draw;
- if (fs->reset_stipple_counter) {
- _mesa_feedback_token(fs->ctx, (GLfloat) GL_LINE_RESET_TOKEN);
- fs->reset_stipple_counter = GL_FALSE;
- }
- else {
- _mesa_feedback_token(fs->ctx, (GLfloat) GL_LINE_TOKEN);
- }
- feedback_vertex(fs->ctx, draw, prim->v[0]);
- feedback_vertex(fs->ctx, draw, prim->v[1]);
-}
-
-
-static void
-feedback_point( struct draw_stage *stage, struct prim_header *prim )
-{
- struct feedback_stage *fs = feedback_stage(stage);
- struct draw_context *draw = stage->draw;
- _mesa_feedback_token(fs->ctx, (GLfloat) GL_POINT_TOKEN);
- feedback_vertex(fs->ctx, draw, prim->v[0]);
-}
-
-
-static void
-feedback_flush( struct draw_stage *stage, unsigned flags )
-{
- /* no-op */
-}
-
-
-static void
-feedback_reset_stipple_counter( struct draw_stage *stage )
-{
- struct feedback_stage *fs = feedback_stage(stage);
- fs->reset_stipple_counter = GL_TRUE;
-}
-
-
-static void
-feedback_destroy( struct draw_stage *stage )
-{
- /* no-op */
-}
-
-/**
- * Create GL feedback drawing stage.
- */
-static struct draw_stage *
-draw_glfeedback_stage(struct gl_context *ctx, struct draw_context *draw)
-{
- struct feedback_stage *fs = ST_CALLOC_STRUCT(feedback_stage);
-
- fs->stage.draw = draw;
- fs->stage.next = NULL;
- fs->stage.point = feedback_point;
- fs->stage.line = feedback_line;
- fs->stage.tri = feedback_tri;
- fs->stage.flush = feedback_flush;
- fs->stage.reset_stipple_counter = feedback_reset_stipple_counter;
- fs->stage.destroy = feedback_destroy;
- fs->ctx = ctx;
-
- return &fs->stage;
-}
-
-
-
-/**********************************************************************
- * GL Selection functions
- **********************************************************************/
-
-static void
-select_tri( struct draw_stage *stage, struct prim_header *prim )
-{
- struct feedback_stage *fs = feedback_stage(stage);
- _mesa_update_hitflag( fs->ctx, prim->v[0]->data[0][2] );
- _mesa_update_hitflag( fs->ctx, prim->v[1]->data[0][2] );
- _mesa_update_hitflag( fs->ctx, prim->v[2]->data[0][2] );
-}
-
-static void
-select_line( struct draw_stage *stage, struct prim_header *prim )
-{
- struct feedback_stage *fs = feedback_stage(stage);
- _mesa_update_hitflag( fs->ctx, prim->v[0]->data[0][2] );
- _mesa_update_hitflag( fs->ctx, prim->v[1]->data[0][2] );
-}
-
-
-static void
-select_point( struct draw_stage *stage, struct prim_header *prim )
-{
- struct feedback_stage *fs = feedback_stage(stage);
- _mesa_update_hitflag( fs->ctx, prim->v[0]->data[0][2] );
-}
-
-
-static void
-select_flush( struct draw_stage *stage, unsigned flags )
-{
- /* no-op */
-}
-
-
-static void
-select_reset_stipple_counter( struct draw_stage *stage )
-{
- /* no-op */
-}
-
-static void
-select_destroy( struct draw_stage *stage )
-{
- /* no-op */
-}
-
-
-/**
- * Create GL selection mode drawing stage.
- */
-static struct draw_stage *
-draw_glselect_stage(struct gl_context *ctx, struct draw_context *draw)
-{
- struct feedback_stage *fs = ST_CALLOC_STRUCT(feedback_stage);
-
- fs->stage.draw = draw;
- fs->stage.next = NULL;
- fs->stage.point = select_point;
- fs->stage.line = select_line;
- fs->stage.tri = select_tri;
- fs->stage.flush = select_flush;
- fs->stage.reset_stipple_counter = select_reset_stipple_counter;
- fs->stage.destroy = select_destroy;
- fs->ctx = ctx;
-
- return &fs->stage;
-}
-
-
-static void
-st_RenderMode(struct gl_context *ctx, GLenum newMode )
-{
- struct st_context *st = st_context(ctx);
- struct draw_context *draw = st->draw;
-
- if (newMode == GL_RENDER) {
- /* restore normal VBO draw function */
- vbo_set_draw_func(ctx, st_draw_vbo);
- }
- else if (newMode == GL_SELECT) {
- if (!st->selection_stage)
- st->selection_stage = draw_glselect_stage(ctx, draw);
- draw_set_rasterize_stage(draw, st->selection_stage);
- /* Plug in new vbo draw function */
- vbo_set_draw_func(ctx, st_feedback_draw_vbo);
- }
- else {
- if (!st->feedback_stage)
- st->feedback_stage = draw_glfeedback_stage(ctx, draw);
- draw_set_rasterize_stage(draw, st->feedback_stage);
- /* Plug in new vbo draw function */
- vbo_set_draw_func(ctx, st_feedback_draw_vbo);
- /* need to generate/use a vertex program that emits pos/color/tex */
- st->dirty.st |= ST_NEW_VERTEX_PROGRAM;
- }
-}
-
-
-
-void st_init_feedback_functions(struct dd_function_table *functions)
-{
- functions->RenderMode = st_RenderMode;
-}
-
-#endif /* FEATURE_feedback */
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+/**
+ * GL_SELECT and GL_FEEDBACK render modes.
+ * Basically, we use a private instance of the 'draw' module for doing
+ * selection/feedback. It would be nice to use the transform_feedback
+ * hardware feature, but it's defined as happening pre-clip and we want
+ * post-clipped primitives. Also, there's concerns about the efficiency
+ * of using the hardware for this anyway.
+ *
+ * Authors:
+ * Brian Paul
+ */
+
+#include "main/imports.h"
+#include "main/context.h"
+#include "main/feedback.h"
+#include "main/mfeatures.h"
+
+#include "vbo/vbo.h"
+
+#include "st_context.h"
+#include "st_draw.h"
+#include "st_cb_feedback.h"
+
+#include "pipe/p_context.h"
+#include "pipe/p_defines.h"
+
+#include "draw/draw_context.h"
+#include "draw/draw_pipe.h"
+
+
+#if FEATURE_feedback
+
+/**
+ * This is actually used for both feedback and selection.
+ */
+struct feedback_stage
+{
+ struct draw_stage stage; /**< Base class */
+ struct gl_context *ctx; /**< Rendering context */
+ GLboolean reset_stipple_counter;
+};
+
+
+/**********************************************************************
+ * GL Feedback functions
+ **********************************************************************/
+
+static INLINE struct feedback_stage *
+feedback_stage( struct draw_stage *stage )
+{
+ return (struct feedback_stage *)stage;
+}
+
+
+static void
+feedback_vertex(struct gl_context *ctx, const struct draw_context *draw,
+ const struct vertex_header *v)
+{
+ const struct st_context *st = st_context(ctx);
+ GLfloat win[4];
+ const GLfloat *color, *texcoord;
+ GLuint slot;
+
+ /* Recall that Y=0=Top of window for Gallium wincoords */
+ win[0] = v->data[0][0];
+ win[1] = ctx->DrawBuffer->Height - v->data[0][1];
+ win[2] = v->data[0][2];
+ win[3] = 1.0F / v->data[0][3];
+
+ /* XXX
+ * When we compute vertex layout, save info about position of the
+ * color and texcoord attribs to use here.
+ */
+
+ slot = st->vertex_result_to_slot[VERT_RESULT_COL0];
+ if (slot != ~0U)
+ color = v->data[slot];
+ else
+ color = ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
+
+ slot = st->vertex_result_to_slot[VERT_RESULT_TEX0];
+ if (slot != ~0U)
+ texcoord = v->data[slot];
+ else
+ texcoord = ctx->Current.Attrib[VERT_ATTRIB_TEX0];
+
+ _mesa_feedback_vertex(ctx, win, color, texcoord);
+}
+
+
+static void
+feedback_tri( struct draw_stage *stage, struct prim_header *prim )
+{
+ struct feedback_stage *fs = feedback_stage(stage);
+ struct draw_context *draw = stage->draw;
+ _mesa_feedback_token(fs->ctx, (GLfloat) GL_POLYGON_TOKEN);
+ _mesa_feedback_token(fs->ctx, (GLfloat) 3); /* three vertices */
+ feedback_vertex(fs->ctx, draw, prim->v[0]);
+ feedback_vertex(fs->ctx, draw, prim->v[1]);
+ feedback_vertex(fs->ctx, draw, prim->v[2]);
+}
+
+
+static void
+feedback_line( struct draw_stage *stage, struct prim_header *prim )
+{
+ struct feedback_stage *fs = feedback_stage(stage);
+ struct draw_context *draw = stage->draw;
+ if (fs->reset_stipple_counter) {
+ _mesa_feedback_token(fs->ctx, (GLfloat) GL_LINE_RESET_TOKEN);
+ fs->reset_stipple_counter = GL_FALSE;
+ }
+ else {
+ _mesa_feedback_token(fs->ctx, (GLfloat) GL_LINE_TOKEN);
+ }
+ feedback_vertex(fs->ctx, draw, prim->v[0]);
+ feedback_vertex(fs->ctx, draw, prim->v[1]);
+}
+
+
+static void
+feedback_point( struct draw_stage *stage, struct prim_header *prim )
+{
+ struct feedback_stage *fs = feedback_stage(stage);
+ struct draw_context *draw = stage->draw;
+ _mesa_feedback_token(fs->ctx, (GLfloat) GL_POINT_TOKEN);
+ feedback_vertex(fs->ctx, draw, prim->v[0]);
+}
+
+
+static void
+feedback_flush( struct draw_stage *stage, unsigned flags )
+{
+ /* no-op */
+}
+
+
+static void
+feedback_reset_stipple_counter( struct draw_stage *stage )
+{
+ struct feedback_stage *fs = feedback_stage(stage);
+ fs->reset_stipple_counter = GL_TRUE;
+}
+
+
+static void
+feedback_destroy( struct draw_stage *stage )
+{
+ /* no-op */
+}
+
+/**
+ * Create GL feedback drawing stage.
+ */
+static struct draw_stage *
+draw_glfeedback_stage(struct gl_context *ctx, struct draw_context *draw)
+{
+ struct feedback_stage *fs = ST_CALLOC_STRUCT(feedback_stage);
+
+ fs->stage.draw = draw;
+ fs->stage.next = NULL;
+ fs->stage.point = feedback_point;
+ fs->stage.line = feedback_line;
+ fs->stage.tri = feedback_tri;
+ fs->stage.flush = feedback_flush;
+ fs->stage.reset_stipple_counter = feedback_reset_stipple_counter;
+ fs->stage.destroy = feedback_destroy;
+ fs->ctx = ctx;
+
+ return &fs->stage;
+}
+
+
+
+/**********************************************************************
+ * GL Selection functions
+ **********************************************************************/
+
+static void
+select_tri( struct draw_stage *stage, struct prim_header *prim )
+{
+ struct feedback_stage *fs = feedback_stage(stage);
+ _mesa_update_hitflag( fs->ctx, prim->v[0]->data[0][2] );
+ _mesa_update_hitflag( fs->ctx, prim->v[1]->data[0][2] );
+ _mesa_update_hitflag( fs->ctx, prim->v[2]->data[0][2] );
+}
+
+static void
+select_line( struct draw_stage *stage, struct prim_header *prim )
+{
+ struct feedback_stage *fs = feedback_stage(stage);
+ _mesa_update_hitflag( fs->ctx, prim->v[0]->data[0][2] );
+ _mesa_update_hitflag( fs->ctx, prim->v[1]->data[0][2] );
+}
+
+
+static void
+select_point( struct draw_stage *stage, struct prim_header *prim )
+{
+ struct feedback_stage *fs = feedback_stage(stage);
+ _mesa_update_hitflag( fs->ctx, prim->v[0]->data[0][2] );
+}
+
+
+static void
+select_flush( struct draw_stage *stage, unsigned flags )
+{
+ /* no-op */
+}
+
+
+static void
+select_reset_stipple_counter( struct draw_stage *stage )
+{
+ /* no-op */
+}
+
+static void
+select_destroy( struct draw_stage *stage )
+{
+ /* no-op */
+}
+
+
+/**
+ * Create GL selection mode drawing stage.
+ */
+static struct draw_stage *
+draw_glselect_stage(struct gl_context *ctx, struct draw_context *draw)
+{
+ struct feedback_stage *fs = ST_CALLOC_STRUCT(feedback_stage);
+
+ fs->stage.draw = draw;
+ fs->stage.next = NULL;
+ fs->stage.point = select_point;
+ fs->stage.line = select_line;
+ fs->stage.tri = select_tri;
+ fs->stage.flush = select_flush;
+ fs->stage.reset_stipple_counter = select_reset_stipple_counter;
+ fs->stage.destroy = select_destroy;
+ fs->ctx = ctx;
+
+ return &fs->stage;
+}
+
+
+static void
+st_RenderMode(struct gl_context *ctx, GLenum newMode )
+{
+ struct st_context *st = st_context(ctx);
+ struct draw_context *draw = st->draw;
+
+ if (newMode == GL_RENDER) {
+ /* restore normal VBO draw function */
+ vbo_set_draw_func(ctx, st_draw_vbo);
+ }
+ else if (newMode == GL_SELECT) {
+ if (!st->selection_stage)
+ st->selection_stage = draw_glselect_stage(ctx, draw);
+ draw_set_rasterize_stage(draw, st->selection_stage);
+ /* Plug in new vbo draw function */
+ vbo_set_draw_func(ctx, st_feedback_draw_vbo);
+ }
+ else {
+ if (!st->feedback_stage)
+ st->feedback_stage = draw_glfeedback_stage(ctx, draw);
+ draw_set_rasterize_stage(draw, st->feedback_stage);
+ /* Plug in new vbo draw function */
+ vbo_set_draw_func(ctx, st_feedback_draw_vbo);
+ /* need to generate/use a vertex program that emits pos/color/tex */
+ st->dirty.st |= ST_NEW_VERTEX_PROGRAM;
+ }
+}
+
+
+
+void st_init_feedback_functions(struct dd_function_table *functions)
+{
+ functions->RenderMode = st_RenderMode;
+}
+
+#endif /* FEATURE_feedback */
diff --git a/mesalib/src/mesa/state_tracker/st_cb_feedback.h b/mesalib/src/mesa/state_tracker/st_cb_feedback.h
index 3acb5b5b3..02e34e402 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_feedback.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_feedback.h
@@ -1,52 +1,52 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef ST_CB_FEEDBACK_H
-#define ST_CB_FEEDBACK_H
-
-
-#include "main/compiler.h"
-#include "main/mfeatures.h"
-
-struct dd_function_table;
-
-#if FEATURE_feedback
-
-extern void
-st_init_feedback_functions(struct dd_function_table *functions);
-
-#else
-
-static INLINE void
-st_init_feedback_functions(struct dd_function_table *functions)
-{
-}
-
-#endif /* FEATURE_feedback */
-
-#endif /* ST_CB_FEEDBACK_H */
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef ST_CB_FEEDBACK_H
+#define ST_CB_FEEDBACK_H
+
+
+#include "main/compiler.h"
+#include "main/mfeatures.h"
+
+struct dd_function_table;
+
+#if FEATURE_feedback
+
+extern void
+st_init_feedback_functions(struct dd_function_table *functions);
+
+#else
+
+static INLINE void
+st_init_feedback_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_feedback */
+
+#endif /* ST_CB_FEEDBACK_H */
diff --git a/mesalib/src/mesa/state_tracker/st_cb_flush.h b/mesalib/src/mesa/state_tracker/st_cb_flush.h
index 1fd0c56d7..598536ba0 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_flush.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_flush.h
@@ -1,51 +1,51 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef ST_CB_FLUSH_H
-#define ST_CB_FLUSH_H
-
-
-#include "pipe/p_compiler.h"
-
-struct dd_function_table;
-struct pipe_fence_handle;
-struct st_context;
-
-extern void
-st_init_flush_functions(struct dd_function_table *functions);
-
-extern void
-st_flush(struct st_context *st,
- struct pipe_fence_handle **fence);
-
-extern void
-st_finish(struct st_context *st);
-
-
-#endif /* ST_CB_FLUSH_H */
-
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef ST_CB_FLUSH_H
+#define ST_CB_FLUSH_H
+
+
+#include "pipe/p_compiler.h"
+
+struct dd_function_table;
+struct pipe_fence_handle;
+struct st_context;
+
+extern void
+st_init_flush_functions(struct dd_function_table *functions);
+
+extern void
+st_flush(struct st_context *st,
+ struct pipe_fence_handle **fence);
+
+extern void
+st_finish(struct st_context *st);
+
+
+#endif /* ST_CB_FLUSH_H */
+
diff --git a/mesalib/src/mesa/state_tracker/st_cb_program.h b/mesalib/src/mesa/state_tracker/st_cb_program.h
index 05d03e1e6..091a4439c 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_program.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_program.h
@@ -1,38 +1,38 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef ST_CB_PROGRAM_H
-#define ST_CB_PROGRAM_H
-
-
-struct dd_function_table;
-
-extern void
-st_init_program_functions(struct dd_function_table *functions);
-
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef ST_CB_PROGRAM_H
+#define ST_CB_PROGRAM_H
+
+
+struct dd_function_table;
+
+extern void
+st_init_program_functions(struct dd_function_table *functions);
+
+
+#endif
diff --git a/mesalib/src/mesa/state_tracker/st_cb_queryobj.h b/mesalib/src/mesa/state_tracker/st_cb_queryobj.h
index 638dba9ec..03f0be837 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_queryobj.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_queryobj.h
@@ -1,70 +1,70 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef ST_CB_QUERYOBJ_H
-#define ST_CB_QUERYOBJ_H
-
-
-#include "main/mfeatures.h"
-#include "main/mtypes.h"
-
-/**
- * Subclass of gl_query_object
- */
-struct st_query_object
-{
- struct gl_query_object base;
- struct pipe_query *pq;
- unsigned type; /**< PIPE_QUERY_x */
-};
-
-
-/**
- * Cast wrapper
- */
-static INLINE struct st_query_object *
-st_query_object(struct gl_query_object *q)
-{
- return (struct st_query_object *) q;
-}
-
-
-#if FEATURE_queryobj
-
-extern void
-st_init_query_functions(struct dd_function_table *functions);
-
-#else
-
-static INLINE void
-st_init_query_functions(struct dd_function_table *functions)
-{
-}
-
-#endif /* FEATURE_queryobj */
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef ST_CB_QUERYOBJ_H
+#define ST_CB_QUERYOBJ_H
+
+
+#include "main/mfeatures.h"
+#include "main/mtypes.h"
+
+/**
+ * Subclass of gl_query_object
+ */
+struct st_query_object
+{
+ struct gl_query_object base;
+ struct pipe_query *pq;
+ unsigned type; /**< PIPE_QUERY_x */
+};
+
+
+/**
+ * Cast wrapper
+ */
+static INLINE struct st_query_object *
+st_query_object(struct gl_query_object *q)
+{
+ return (struct st_query_object *) q;
+}
+
+
+#if FEATURE_queryobj
+
+extern void
+st_init_query_functions(struct dd_function_table *functions);
+
+#else
+
+static INLINE void
+st_init_query_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_queryobj */
+
+#endif
diff --git a/mesalib/src/mesa/state_tracker/st_cb_rasterpos.h b/mesalib/src/mesa/state_tracker/st_cb_rasterpos.h
index c8fe9d135..b61411bd2 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_rasterpos.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_rasterpos.h
@@ -1,50 +1,50 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef ST_CB_RASTERPOS_H
-#define ST_CB_RASTERPOS_H
-
-
-#include "main/compiler.h"
-#include "main/mfeatures.h"
-
-struct dd_function_table;
-
-#if FEATURE_rastpos
-
-extern void st_init_rasterpos_functions(struct dd_function_table *functions);
-
-#else
-
-static INLINE void
-st_init_rasterpos_functions(struct dd_function_table *functions)
-{
-}
-
-#endif /* FEATURE_rastpos */
-
-#endif /* ST_CB_RASTERPOS_H */
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef ST_CB_RASTERPOS_H
+#define ST_CB_RASTERPOS_H
+
+
+#include "main/compiler.h"
+#include "main/mfeatures.h"
+
+struct dd_function_table;
+
+#if FEATURE_rastpos
+
+extern void st_init_rasterpos_functions(struct dd_function_table *functions);
+
+#else
+
+static INLINE void
+st_init_rasterpos_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_rastpos */
+
+#endif /* ST_CB_RASTERPOS_H */
diff --git a/mesalib/src/mesa/state_tracker/st_cb_strings.c b/mesalib/src/mesa/state_tracker/st_cb_strings.c
index b382273ea..21323798f 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_strings.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_strings.c
@@ -1,73 +1,73 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
- /*
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- * Brian Paul
- */
-
-#include "main/glheader.h"
-#include "main/macros.h"
-#include "pipe/p_context.h"
-#include "pipe/p_screen.h"
-#include "util/u_string.h"
-#include "st_context.h"
-#include "st_cb_strings.h"
-
-#define ST_VERSION_STRING "0.4"
-
-static const GLubyte *
-st_get_string(struct gl_context * ctx, GLenum name)
-{
- struct st_context *st = st_context(ctx);
- struct pipe_screen *screen = st->pipe->screen;
-
- switch (name) {
- case GL_VENDOR: {
- const char *vendor = screen->get_vendor( screen );
- util_snprintf(st->vendor, sizeof(st->vendor), "%s", vendor);
- return (GLubyte *) st->vendor;
- }
-
- case GL_RENDERER:
- util_snprintf(st->renderer, sizeof(st->renderer), "Gallium %s on %s",
- ST_VERSION_STRING,
- screen->get_name( screen ));
-
- return (GLubyte *) st->renderer;
-
- default:
- return NULL;
- }
-}
-
-
-void st_init_string_functions(struct dd_function_table *functions)
-{
- functions->GetString = st_get_string;
-}
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+ /*
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ * Brian Paul
+ */
+
+#include "main/glheader.h"
+#include "main/macros.h"
+#include "pipe/p_context.h"
+#include "pipe/p_screen.h"
+#include "util/u_string.h"
+#include "st_context.h"
+#include "st_cb_strings.h"
+
+#define ST_VERSION_STRING "0.4"
+
+static const GLubyte *
+st_get_string(struct gl_context * ctx, GLenum name)
+{
+ struct st_context *st = st_context(ctx);
+ struct pipe_screen *screen = st->pipe->screen;
+
+ switch (name) {
+ case GL_VENDOR: {
+ const char *vendor = screen->get_vendor( screen );
+ util_snprintf(st->vendor, sizeof(st->vendor), "%s", vendor);
+ return (GLubyte *) st->vendor;
+ }
+
+ case GL_RENDERER:
+ util_snprintf(st->renderer, sizeof(st->renderer), "Gallium %s on %s",
+ ST_VERSION_STRING,
+ screen->get_name( screen ));
+
+ return (GLubyte *) st->renderer;
+
+ default:
+ return NULL;
+ }
+}
+
+
+void st_init_string_functions(struct dd_function_table *functions)
+{
+ functions->GetString = st_get_string;
+}
diff --git a/mesalib/src/mesa/state_tracker/st_cb_strings.h b/mesalib/src/mesa/state_tracker/st_cb_strings.h
index 5b4fc2a72..92d5d2d9b 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_strings.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_strings.h
@@ -1,40 +1,40 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef ST_CB_STRINGS_H
-#define ST_CB_STRINGS_H
-
-
-struct dd_function_table;
-
-extern void
-st_init_string_functions(struct dd_function_table *functions);
-
-
-#endif /* ST_CB_CLEAR_H */
-
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef ST_CB_STRINGS_H
+#define ST_CB_STRINGS_H
+
+
+struct dd_function_table;
+
+extern void
+st_init_string_functions(struct dd_function_table *functions);
+
+
+#endif /* ST_CB_CLEAR_H */
+
diff --git a/mesalib/src/mesa/state_tracker/st_cb_syncobj.c b/mesalib/src/mesa/state_tracker/st_cb_syncobj.c
index 7e243561a..d575a8497 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_syncobj.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_syncobj.c
@@ -1,122 +1,122 @@
-/**************************************************************************
- *
- * Copyright 2011 Marek Olšák <maraeo@gmail.com>
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
- /*
- * Authors:
- * Marek Olšák <maraeo@gmail.com>
- */
-
-#include "main/glheader.h"
-#include "main/macros.h"
-#include "pipe/p_context.h"
-#include "pipe/p_screen.h"
-#include "st_context.h"
-#include "st_cb_syncobj.h"
-
-struct st_sync_object {
- struct gl_sync_object b;
-
- struct pipe_fence_handle *fence;
-};
-
-
-static struct gl_sync_object * st_new_sync_object(struct gl_context *ctx,
- GLenum type)
-{
- if (type == GL_SYNC_FENCE)
- return (struct gl_sync_object*)CALLOC_STRUCT(st_sync_object);
- else
- return NULL;
-}
-
-static void st_delete_sync_object(struct gl_context *ctx,
- struct gl_sync_object *obj)
-{
- struct pipe_screen *screen = st_context(ctx)->pipe->screen;
- struct st_sync_object *so = (struct st_sync_object*)obj;
-
- screen->fence_reference(screen, &so->fence, NULL);
- FREE(so);
-}
-
-static void st_fence_sync(struct gl_context *ctx, struct gl_sync_object *obj,
- GLenum condition, GLbitfield flags)
-{
- struct pipe_context *pipe = st_context(ctx)->pipe;
- struct st_sync_object *so = (struct st_sync_object*)obj;
-
- assert(condition == GL_SYNC_GPU_COMMANDS_COMPLETE && flags == 0);
- assert(so->fence == NULL);
-
- pipe->flush(pipe, &so->fence);
-}
-
-static void st_check_sync(struct gl_context *ctx, struct gl_sync_object *obj)
-{
- struct pipe_screen *screen = st_context(ctx)->pipe->screen;
- struct st_sync_object *so = (struct st_sync_object*)obj;
-
- if (so->fence && screen->fence_signalled(screen, so->fence)) {
- screen->fence_reference(screen, &so->fence, NULL);
- so->b.StatusFlag = GL_TRUE;
- }
-}
-
-static void st_client_wait_sync(struct gl_context *ctx,
- struct gl_sync_object *obj,
- GLbitfield flags, GLuint64 timeout)
-{
- struct pipe_screen *screen = st_context(ctx)->pipe->screen;
- struct st_sync_object *so = (struct st_sync_object*)obj;
-
- /* We don't care about GL_SYNC_FLUSH_COMMANDS_BIT, because flush is
- * already called when creating a fence. */
-
- if (so->fence &&
- screen->fence_finish(screen, so->fence, timeout)) {
- screen->fence_reference(screen, &so->fence, NULL);
- so->b.StatusFlag = GL_TRUE;
- }
-}
-
-static void st_server_wait_sync(struct gl_context *ctx,
- struct gl_sync_object *obj,
- GLbitfield flags, GLuint64 timeout)
-{
- /* NO-OP.
- * Neither Gallium nor DRM interfaces support blocking on the GPU. */
-}
-
-void st_init_syncobj_functions(struct dd_function_table *functions)
-{
- functions->NewSyncObject = st_new_sync_object;
- functions->FenceSync = st_fence_sync;
- functions->DeleteSyncObject = st_delete_sync_object;
- functions->CheckSync = st_check_sync;
- functions->ClientWaitSync = st_client_wait_sync;
- functions->ServerWaitSync = st_server_wait_sync;
-}
+/**************************************************************************
+ *
+ * Copyright 2011 Marek Olšák <maraeo@gmail.com>
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+ /*
+ * Authors:
+ * Marek Olšák <maraeo@gmail.com>
+ */
+
+#include "main/glheader.h"
+#include "main/macros.h"
+#include "pipe/p_context.h"
+#include "pipe/p_screen.h"
+#include "st_context.h"
+#include "st_cb_syncobj.h"
+
+struct st_sync_object {
+ struct gl_sync_object b;
+
+ struct pipe_fence_handle *fence;
+};
+
+
+static struct gl_sync_object * st_new_sync_object(struct gl_context *ctx,
+ GLenum type)
+{
+ if (type == GL_SYNC_FENCE)
+ return (struct gl_sync_object*)CALLOC_STRUCT(st_sync_object);
+ else
+ return NULL;
+}
+
+static void st_delete_sync_object(struct gl_context *ctx,
+ struct gl_sync_object *obj)
+{
+ struct pipe_screen *screen = st_context(ctx)->pipe->screen;
+ struct st_sync_object *so = (struct st_sync_object*)obj;
+
+ screen->fence_reference(screen, &so->fence, NULL);
+ FREE(so);
+}
+
+static void st_fence_sync(struct gl_context *ctx, struct gl_sync_object *obj,
+ GLenum condition, GLbitfield flags)
+{
+ struct pipe_context *pipe = st_context(ctx)->pipe;
+ struct st_sync_object *so = (struct st_sync_object*)obj;
+
+ assert(condition == GL_SYNC_GPU_COMMANDS_COMPLETE && flags == 0);
+ assert(so->fence == NULL);
+
+ pipe->flush(pipe, &so->fence);
+}
+
+static void st_check_sync(struct gl_context *ctx, struct gl_sync_object *obj)
+{
+ struct pipe_screen *screen = st_context(ctx)->pipe->screen;
+ struct st_sync_object *so = (struct st_sync_object*)obj;
+
+ if (so->fence && screen->fence_signalled(screen, so->fence)) {
+ screen->fence_reference(screen, &so->fence, NULL);
+ so->b.StatusFlag = GL_TRUE;
+ }
+}
+
+static void st_client_wait_sync(struct gl_context *ctx,
+ struct gl_sync_object *obj,
+ GLbitfield flags, GLuint64 timeout)
+{
+ struct pipe_screen *screen = st_context(ctx)->pipe->screen;
+ struct st_sync_object *so = (struct st_sync_object*)obj;
+
+ /* We don't care about GL_SYNC_FLUSH_COMMANDS_BIT, because flush is
+ * already called when creating a fence. */
+
+ if (so->fence &&
+ screen->fence_finish(screen, so->fence, timeout)) {
+ screen->fence_reference(screen, &so->fence, NULL);
+ so->b.StatusFlag = GL_TRUE;
+ }
+}
+
+static void st_server_wait_sync(struct gl_context *ctx,
+ struct gl_sync_object *obj,
+ GLbitfield flags, GLuint64 timeout)
+{
+ /* NO-OP.
+ * Neither Gallium nor DRM interfaces support blocking on the GPU. */
+}
+
+void st_init_syncobj_functions(struct dd_function_table *functions)
+{
+ functions->NewSyncObject = st_new_sync_object;
+ functions->FenceSync = st_fence_sync;
+ functions->DeleteSyncObject = st_delete_sync_object;
+ functions->CheckSync = st_check_sync;
+ functions->ClientWaitSync = st_client_wait_sync;
+ functions->ServerWaitSync = st_server_wait_sync;
+}
diff --git a/mesalib/src/mesa/state_tracker/st_cb_texture.c b/mesalib/src/mesa/state_tracker/st_cb_texture.c
index b24f9a1ce..9d1b7f672 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_texture.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_texture.c
@@ -530,62 +530,31 @@ prep_teximage(struct gl_context *ctx, struct gl_texture_image *texImage,
static void
-st_TexImage3D(struct gl_context * ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint depth,
- GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *unpack)
+st_TexImage(struct gl_context * ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint internalFormat,
+ GLint width, GLint height, GLint depth, GLint border,
+ GLenum format, GLenum type, const void *pixels,
+ const struct gl_pixelstore_attrib *unpack)
{
prep_teximage(ctx, texImage, internalFormat, width, height, depth, border,
format, type);
- _mesa_store_teximage3d(ctx, texImage, internalFormat, width, height, depth,
- border, format, type, pixels, unpack);
-}
-
-
-static void
-st_TexImage2D(struct gl_context * ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *unpack)
-{
- prep_teximage(ctx, texImage, internalFormat, width, height, 1, border,
- format, type);
- _mesa_store_teximage2d(ctx, texImage, internalFormat, width, height,
- border, format, type, pixels, unpack);
-}
-
-
-static void
-st_TexImage1D(struct gl_context * ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint border,
- GLenum format, GLenum type, const void *pixels,
- const struct gl_pixelstore_attrib *unpack)
-{
- prep_teximage(ctx, texImage, internalFormat, width, 1, 1, border,
- format, type);
- _mesa_store_teximage1d(ctx, texImage, internalFormat, width,
- border, format, type, pixels, unpack);
+ _mesa_store_teximage(ctx, dims, texImage, internalFormat, width, height, depth,
+ border, format, type, pixels, unpack);
}
static void
-st_CompressedTexImage2D(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint internalFormat,
- GLint width, GLint height, GLint border,
- GLsizei imageSize, const GLvoid *data)
+st_CompressedTexImage(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint internalFormat,
+ GLint width, GLint height, GLint border, GLint depth,
+ GLsizei imageSize, const GLvoid *data)
{
- prep_teximage(ctx, texImage, internalFormat, width, 1, 1, border,
+ prep_teximage(ctx, texImage, internalFormat, width, height, depth, border,
GL_NONE, GL_NONE);
- _mesa_store_compressed_teximage2d(ctx, texImage, internalFormat, width,
- height, border, imageSize, data);
+ _mesa_store_compressed_teximage(ctx, dims, texImage, internalFormat, width,
+ height, depth, border, imageSize, data);
}
@@ -959,12 +928,11 @@ compatible_src_dst_formats(struct gl_context *ctx,
* Note: srcY=0=Bottom of renderbuffer (GL convention)
*/
static void
-st_copy_texsubimage(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint destX, GLint destY, GLint destZ,
- struct gl_renderbuffer *rb,
- GLint srcX, GLint srcY,
- GLsizei width, GLsizei height)
+st_CopyTexSubImage(struct gl_context *ctx, GLuint dims,
+ struct gl_texture_image *texImage,
+ GLint destX, GLint destY, GLint destZ,
+ struct gl_renderbuffer *rb,
+ GLint srcX, GLint srcY, GLsizei width, GLsizei height)
{
struct st_texture_image *stImage = st_texture_image(texImage);
const GLenum texBaseFormat = texImage->_BaseFormat;
@@ -1127,49 +1095,6 @@ fallback:
}
-
-static void
-st_CopyTexSubImage1D(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y, GLsizei width)
-{
- const GLint yoffset = 0, zoffset = 0;
- const GLsizei height = 1;
- st_copy_texsubimage(ctx, texImage,
- xoffset, yoffset, zoffset, /* destX,Y,Z */
- rb, x, y, width, height); /* src X, Y, size */
-}
-
-
-static void
-st_CopyTexSubImage2D(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y, GLsizei width, GLsizei height)
-{
- const GLint zoffset = 0;
- st_copy_texsubimage(ctx, texImage,
- xoffset, yoffset, zoffset, /* destX,Y,Z */
- rb, x, y, width, height); /* src X, Y, size */
-}
-
-
-static void
-st_CopyTexSubImage3D(struct gl_context *ctx,
- struct gl_texture_image *texImage,
- GLint xoffset, GLint yoffset, GLint zoffset,
- struct gl_renderbuffer *rb,
- GLint x, GLint y, GLsizei width, GLsizei height)
-{
- st_copy_texsubimage(ctx, texImage,
- xoffset, yoffset, zoffset, /* destX,Y,Z */
- rb, x, y, width, height); /* src X, Y, size */
-}
-
-
/**
* Copy image data from stImage into the texture object 'stObj' at level
* 'dstLevel'.
@@ -1427,24 +1352,16 @@ void
st_init_texture_functions(struct dd_function_table *functions)
{
functions->ChooseTextureFormat = st_ChooseTextureFormat;
- functions->TexImage1D = st_TexImage1D;
- functions->TexImage2D = st_TexImage2D;
- functions->TexImage3D = st_TexImage3D;
- functions->TexSubImage1D = _mesa_store_texsubimage1d;
- functions->TexSubImage2D = _mesa_store_texsubimage2d;
- functions->TexSubImage3D = _mesa_store_texsubimage3d;
- functions->CompressedTexSubImage1D = _mesa_store_compressed_texsubimage1d;
- functions->CompressedTexSubImage2D = _mesa_store_compressed_texsubimage2d;
- functions->CompressedTexSubImage3D = _mesa_store_compressed_texsubimage3d;
- functions->CopyTexSubImage1D = st_CopyTexSubImage1D;
- functions->CopyTexSubImage2D = st_CopyTexSubImage2D;
- functions->CopyTexSubImage3D = st_CopyTexSubImage3D;
+ functions->TexImage = st_TexImage;
+ functions->TexSubImage = _mesa_store_texsubimage;
+ functions->CompressedTexSubImage = _mesa_store_compressed_texsubimage;
+ functions->CopyTexSubImage = st_CopyTexSubImage;
functions->GenerateMipmap = st_generate_mipmap;
functions->GetTexImage = st_GetTexImage;
/* compressed texture functions */
- functions->CompressedTexImage2D = st_CompressedTexImage2D;
+ functions->CompressedTexImage = st_CompressedTexImage;
functions->GetCompressedTexImage = _mesa_get_compressed_teximage;
functions->NewTextureObject = st_NewTextureObject;
diff --git a/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c b/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c
index 36668d343..2f1a22b58 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c
@@ -1,60 +1,60 @@
-/**************************************************************************
- *
- * Copyright 2011 Marek Olšák <maraeo@gmail.com>
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-/**
- * glTextureBarrierNV function
- *
- * \author Marek Olšák
- */
-
-
-#include "main/imports.h"
-#include "main/context.h"
-
-#include "pipe/p_context.h"
-#include "pipe/p_defines.h"
-#include "st_context.h"
-#include "st_cb_texturebarrier.h"
-
-
-/**
- * Called via ctx->Driver.TextureBarrier()
- */
-static void
-st_TextureBarrier(struct gl_context *ctx)
-{
- struct pipe_context *pipe = st_context(ctx)->pipe;
-
- pipe->texture_barrier(pipe);
-}
-
-
-void st_init_texture_barrier_functions(struct dd_function_table *functions)
-{
- functions->TextureBarrier = st_TextureBarrier;
-}
+/**************************************************************************
+ *
+ * Copyright 2011 Marek Olšák <maraeo@gmail.com>
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+/**
+ * glTextureBarrierNV function
+ *
+ * \author Marek Olšák
+ */
+
+
+#include "main/imports.h"
+#include "main/context.h"
+
+#include "pipe/p_context.h"
+#include "pipe/p_defines.h"
+#include "st_context.h"
+#include "st_cb_texturebarrier.h"
+
+
+/**
+ * Called via ctx->Driver.TextureBarrier()
+ */
+static void
+st_TextureBarrier(struct gl_context *ctx)
+{
+ struct pipe_context *pipe = st_context(ctx)->pipe;
+
+ pipe->texture_barrier(pipe);
+}
+
+
+void st_init_texture_barrier_functions(struct dd_function_table *functions)
+{
+ functions->TextureBarrier = st_TextureBarrier;
+}
diff --git a/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.h b/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.h
index dc94cc443..3b7d3776f 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.h
@@ -1,37 +1,37 @@
-/**************************************************************************
- *
- * Copyright 2011 Marek Olšák <maraeo@gmail.com>
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef ST_CB_TEXTUREBARRIER_H
-#define ST_CB_TEXTUREBARRIER_H
-
-
-struct dd_function_table;
-
-extern void st_init_texture_barrier_functions(struct dd_function_table *functions);
-
-
-#endif
+/**************************************************************************
+ *
+ * Copyright 2011 Marek Olšák <maraeo@gmail.com>
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef ST_CB_TEXTUREBARRIER_H
+#define ST_CB_TEXTUREBARRIER_H
+
+
+struct dd_function_table;
+
+extern void st_init_texture_barrier_functions(struct dd_function_table *functions);
+
+
+#endif
diff --git a/mesalib/src/mesa/state_tracker/st_cb_viewport.h b/mesalib/src/mesa/state_tracker/st_cb_viewport.h
index 7307aba1b..bcfd7cb68 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_viewport.h
+++ b/mesalib/src/mesa/state_tracker/st_cb_viewport.h
@@ -1,36 +1,36 @@
-/**************************************************************************
- *
- * Copyright 2009 VMware, Inc.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#ifndef ST_CB_VIEWPORT_H
-#define ST_CB_VIEWPORT_H
-
-struct dd_function_table;
-
-extern void
-st_init_viewport_functions(struct dd_function_table *functions);
-
-#endif /* ST_CB_VIEW_PORT_H */
+/**************************************************************************
+ *
+ * Copyright 2009 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#ifndef ST_CB_VIEWPORT_H
+#define ST_CB_VIEWPORT_H
+
+struct dd_function_table;
+
+extern void
+st_init_viewport_functions(struct dd_function_table *functions);
+
+#endif /* ST_CB_VIEW_PORT_H */
diff --git a/mesalib/src/mesa/state_tracker/st_debug.h b/mesalib/src/mesa/state_tracker/st_debug.h
index 07864845f..4a060d775 100644
--- a/mesalib/src/mesa/state_tracker/st_debug.h
+++ b/mesalib/src/mesa/state_tracker/st_debug.h
@@ -1,72 +1,72 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef ST_DEBUG_H
-#define ST_DEBUG_H
-
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-
-extern void
-st_print_current(void);
-
-
-#define DEBUG_MESA 0x1
-#define DEBUG_TGSI 0x2
-#define DEBUG_CONSTANTS 0x4
-#define DEBUG_PIPE 0x8
-#define DEBUG_TEX 0x10
-#define DEBUG_FALLBACK 0x20
-#define DEBUG_QUERY 0x40
-#define DEBUG_SCREEN 0x80
-
-#ifdef DEBUG
-extern int ST_DEBUG;
-#define DBSTR(x) x
-#else
-#define ST_DEBUG 0
-#define DBSTR(x) ""
-#endif
-
-void st_debug_init( void );
-
-static INLINE void
-ST_DBG( unsigned flag, const char *fmt, ... )
-{
- if (ST_DEBUG & flag)
- {
- va_list args;
-
- va_start( args, fmt );
- debug_vprintf( fmt, args );
- va_end( args );
- }
-}
-
-
-#endif /* ST_DEBUG_H */
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef ST_DEBUG_H
+#define ST_DEBUG_H
+
+#include "pipe/p_compiler.h"
+#include "util/u_debug.h"
+
+extern void
+st_print_current(void);
+
+
+#define DEBUG_MESA 0x1
+#define DEBUG_TGSI 0x2
+#define DEBUG_CONSTANTS 0x4
+#define DEBUG_PIPE 0x8
+#define DEBUG_TEX 0x10
+#define DEBUG_FALLBACK 0x20
+#define DEBUG_QUERY 0x40
+#define DEBUG_SCREEN 0x80
+
+#ifdef DEBUG
+extern int ST_DEBUG;
+#define DBSTR(x) x
+#else
+#define ST_DEBUG 0
+#define DBSTR(x) ""
+#endif
+
+void st_debug_init( void );
+
+static INLINE void
+ST_DBG( unsigned flag, const char *fmt, ... )
+{
+ if (ST_DEBUG & flag)
+ {
+ va_list args;
+
+ va_start( args, fmt );
+ debug_vprintf( fmt, args );
+ va_end( args );
+ }
+}
+
+
+#endif /* ST_DEBUG_H */
diff --git a/mesalib/src/mesa/state_tracker/st_extensions.c b/mesalib/src/mesa/state_tracker/st_extensions.c
index 953155f36..a9071f58c 100644
--- a/mesalib/src/mesa/state_tracker/st_extensions.c
+++ b/mesalib/src/mesa/state_tracker/st_extensions.c
@@ -592,6 +592,10 @@ void st_init_extensions(struct st_context *st)
ctx->Extensions.S3_s3tc = GL_FALSE;
}
+ if (ctx->Const.NativeIntegers) {
+ ctx->Extensions.ARB_shader_bit_encoding = GL_TRUE;
+ }
+
if (screen->get_shader_param(screen, PIPE_SHADER_GEOMETRY,
PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0) {
#if 0 /* XXX re-enable when GLSL compiler again supports geometry shaders */
diff --git a/mesalib/src/mesa/state_tracker/st_extensions.h b/mesalib/src/mesa/state_tracker/st_extensions.h
index f29f9e1cf..aa9b2b2b9 100644
--- a/mesalib/src/mesa/state_tracker/st_extensions.h
+++ b/mesalib/src/mesa/state_tracker/st_extensions.h
@@ -1,40 +1,40 @@
-/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef ST_EXTENSIONS_H
-#define ST_EXTENSIONS_H
-
-
-struct st_context;
-
-extern void st_init_limits(struct st_context *st);
-
-extern void st_init_extensions(struct st_context *st);
-
-
-#endif /* ST_EXTENSIONS_H */
+/**************************************************************************
+ *
+ * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef ST_EXTENSIONS_H
+#define ST_EXTENSIONS_H
+
+
+struct st_context;
+
+extern void st_init_limits(struct st_context *st);
+
+extern void st_init_extensions(struct st_context *st);
+
+
+#endif /* ST_EXTENSIONS_H */
diff --git a/mesalib/src/mesa/state_tracker/st_gen_mipmap.h b/mesalib/src/mesa/state_tracker/st_gen_mipmap.h
index 8a361a1f6..815c6a516 100644
--- a/mesalib/src/mesa/state_tracker/st_gen_mipmap.h
+++ b/mesalib/src/mesa/state_tracker/st_gen_mipmap.h
@@ -1,52 +1,52 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-#ifndef ST_GEN_MIPMAP_H
-#define ST_GEN_MIPMAP_H
-
-
-#include "main/glheader.h"
-
-struct gl_context;
-struct gl_texture_object;
-struct st_context;
-
-extern void
-st_init_generate_mipmap(struct st_context *st);
-
-
-extern void
-st_destroy_generate_mipmap(struct st_context *st);
-
-
-extern void
-st_generate_mipmap(struct gl_context *ctx, GLenum target,
- struct gl_texture_object *texObj);
-
-
-#endif /* ST_GEN_MIPMAP_H */
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+
+#ifndef ST_GEN_MIPMAP_H
+#define ST_GEN_MIPMAP_H
+
+
+#include "main/glheader.h"
+
+struct gl_context;
+struct gl_texture_object;
+struct st_context;
+
+extern void
+st_init_generate_mipmap(struct st_context *st);
+
+
+extern void
+st_destroy_generate_mipmap(struct st_context *st);
+
+
+extern void
+st_generate_mipmap(struct gl_context *ctx, GLenum target,
+ struct gl_texture_object *texObj);
+
+
+#endif /* ST_GEN_MIPMAP_H */
diff --git a/mesalib/src/mesa/state_tracker/st_gl_api.h b/mesalib/src/mesa/state_tracker/st_gl_api.h
index 59782d0d5..55ad778c9 100644
--- a/mesalib/src/mesa/state_tracker/st_gl_api.h
+++ b/mesalib/src/mesa/state_tracker/st_gl_api.h
@@ -1,7 +1,7 @@
-
-#ifndef ST_GL_API_H
-#define ST_GL_API_H
-
-struct st_api *st_gl_api_create(void);
-
-#endif
+
+#ifndef ST_GL_API_H
+#define ST_GL_API_H
+
+struct st_api *st_gl_api_create(void);
+
+#endif
diff --git a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index e8d60f80d..347a22f19 100644
--- a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -1762,6 +1762,12 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
else
emit(ir, TGSI_OPCODE_TRUNC, result_dst, op[0]);
break;
+ case ir_unop_bitcast_f2i:
+ case ir_unop_bitcast_f2u:
+ case ir_unop_bitcast_i2f:
+ case ir_unop_bitcast_u2f:
+ result_src = op[0];
+ break;
case ir_unop_f2b:
emit(ir, TGSI_OPCODE_SNE, result_dst, op[0], st_src_reg_for_float(0.0));
break;
diff --git a/mesalib/src/mesa/state_tracker/st_manager.h b/mesalib/src/mesa/state_tracker/st_manager.h
index ffe394cc4..6a9497839 100644
--- a/mesalib/src/mesa/state_tracker/st_manager.h
+++ b/mesalib/src/mesa/state_tracker/st_manager.h
@@ -1,52 +1,52 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#ifndef ST_MANAGER_H
-#define ST_MANAGER_H
-
-#include "main/mtypes.h"
-
-#include "pipe/p_compiler.h"
-
-struct st_context;
-
-struct pipe_surface *
-st_manager_get_egl_image_surface(struct st_context *st,
- void *eglimg, unsigned usage);
-
-void
-st_manager_flush_frontbuffer(struct st_context *st);
-
-void
-st_manager_validate_framebuffers(struct st_context *st);
-
-boolean
-st_manager_add_color_renderbuffer(struct st_context *st, struct gl_framebuffer *fb,
- gl_buffer_index idx);
-
-#endif /* ST_MANAGER_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.9
+ *
+ * Copyright (C) 2010 LunarG Inc.
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Authors:
+ * Chia-I Wu <olv@lunarg.com>
+ */
+
+#ifndef ST_MANAGER_H
+#define ST_MANAGER_H
+
+#include "main/mtypes.h"
+
+#include "pipe/p_compiler.h"
+
+struct st_context;
+
+struct pipe_surface *
+st_manager_get_egl_image_surface(struct st_context *st,
+ void *eglimg, unsigned usage);
+
+void
+st_manager_flush_frontbuffer(struct st_context *st);
+
+void
+st_manager_validate_framebuffers(struct st_context *st);
+
+boolean
+st_manager_add_color_renderbuffer(struct st_context *st, struct gl_framebuffer *fb,
+ gl_buffer_index idx);
+
+#endif /* ST_MANAGER_H */
diff --git a/mesalib/src/mesa/swrast/NOTES b/mesalib/src/mesa/swrast/NOTES
index d6f991ee8..ea373aa12 100644
--- a/mesalib/src/mesa/swrast/NOTES
+++ b/mesalib/src/mesa/swrast/NOTES
@@ -1,55 +1,55 @@
-INTRODUCTION
-
-Mesa's native software rasterizer. This module provides the fallback
-paths for rasterization operations and states that aren't accelerated
-in hardware drivers, and as the full rasterization engine in software
-drivers.
-
-The swrast module 'stands alone', relying only on interfaces to core
-mesa and it's own driver interface. It knows nothing about the tnl or
-other modules, allowing it to be used for fallback paths in future tnl
-schemes without modification.
-
-As well as providing triangle/line/point rasterization functionality,
-the module provides implementations of the pixel operations
-(ReadPixels, etc), and texture operations (CopyTexSubImage) which may
-be plugged in to the core Mesa driver interface where accelerated
-versions of these operations are unavailable.
-
-
-STATE
-
-To create and destroy the module:
-
- GLboolean _swrast_CreateContext( struct gl_context *ctx );
- void _swrast_DestroyContext( struct gl_context *ctx );
-
-This module tracks state changes internally and maintains derived
-values based on the current state. For this to work, the driver
-ensure the following funciton is called whenever the state changes and
-the swsetup module is 'awake':
-
- void _swrast_InvalidateState( struct gl_context *ctx, GLuint new_state );
-
-There is no explicit call to put the swrast module to sleep.
-
-
-CUSTOMIZATION
-
- void (*choose_point)( struct gl_context * );
- void (*choose_line)( struct gl_context * );
- void (*choose_triangle)( struct gl_context * );
-
-Drivers may add additional triangle/line/point functions to swrast by
-overriding these functions. It is necessary for the driver to be very
-careful that it doesn't return an inappropriate function, eg a
-rasterization function in feedback mode. See the X11 driver for
-examples.
-
-DRIVER INTERFACE
-
-The swrast device driver provides swrast primarily with span- and
-pixel- level interfaces to a framebuffer, with a few additional hooks
-for locking and setting the read buffer.
-
+INTRODUCTION
+
+Mesa's native software rasterizer. This module provides the fallback
+paths for rasterization operations and states that aren't accelerated
+in hardware drivers, and as the full rasterization engine in software
+drivers.
+
+The swrast module 'stands alone', relying only on interfaces to core
+mesa and it's own driver interface. It knows nothing about the tnl or
+other modules, allowing it to be used for fallback paths in future tnl
+schemes without modification.
+
+As well as providing triangle/line/point rasterization functionality,
+the module provides implementations of the pixel operations
+(ReadPixels, etc), and texture operations (CopyTexSubImage) which may
+be plugged in to the core Mesa driver interface where accelerated
+versions of these operations are unavailable.
+
+
+STATE
+
+To create and destroy the module:
+
+ GLboolean _swrast_CreateContext( struct gl_context *ctx );
+ void _swrast_DestroyContext( struct gl_context *ctx );
+
+This module tracks state changes internally and maintains derived
+values based on the current state. For this to work, the driver
+ensure the following funciton is called whenever the state changes and
+the swsetup module is 'awake':
+
+ void _swrast_InvalidateState( struct gl_context *ctx, GLuint new_state );
+
+There is no explicit call to put the swrast module to sleep.
+
+
+CUSTOMIZATION
+
+ void (*choose_point)( struct gl_context * );
+ void (*choose_line)( struct gl_context * );
+ void (*choose_triangle)( struct gl_context * );
+
+Drivers may add additional triangle/line/point functions to swrast by
+overriding these functions. It is necessary for the driver to be very
+careful that it doesn't return an inappropriate function, eg a
+rasterization function in feedback mode. See the X11 driver for
+examples.
+
+DRIVER INTERFACE
+
+The swrast device driver provides swrast primarily with span- and
+pixel- level interfaces to a framebuffer, with a few additional hooks
+for locking and setting the read buffer.
+
See the definition of struct swrast_device_driver in swrast.h. \ No newline at end of file
diff --git a/mesalib/src/mesa/swrast/s_aaline.h b/mesalib/src/mesa/swrast/s_aaline.h
index 993c12eab..74d5518e1 100644
--- a/mesalib/src/mesa/swrast/s_aaline.h
+++ b/mesalib/src/mesa/swrast/s_aaline.h
@@ -1,38 +1,38 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_AALINE_H
-#define S_AALINE_H
-
-
-struct gl_context;
-
-
-extern void
-_swrast_choose_aa_line_function(struct gl_context *ctx);
-
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_AALINE_H
+#define S_AALINE_H
+
+
+struct gl_context;
+
+
+extern void
+_swrast_choose_aa_line_function(struct gl_context *ctx);
+
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_aatriangle.h b/mesalib/src/mesa/swrast/s_aatriangle.h
index dec637920..e40efb198 100644
--- a/mesalib/src/mesa/swrast/s_aatriangle.h
+++ b/mesalib/src/mesa/swrast/s_aatriangle.h
@@ -1,38 +1,38 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_AATRIANGLE_H
-#define S_AATRIANGLE_H
-
-
-struct gl_context;
-
-
-extern void
-_swrast_set_aa_triangle_function(struct gl_context *ctx);
-
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_AATRIANGLE_H
+#define S_AATRIANGLE_H
+
+
+struct gl_context;
+
+
+extern void
+_swrast_set_aa_triangle_function(struct gl_context *ctx);
+
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_alpha.c b/mesalib/src/mesa/swrast/s_alpha.c
index 798b506e4..df2181ba9 100644
--- a/mesalib/src/mesa/swrast/s_alpha.c
+++ b/mesalib/src/mesa/swrast/s_alpha.c
@@ -1,160 +1,160 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.2
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/**
- * \file swrast/s_alpha.c
- * \brief Functions to apply alpha test.
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-
-#include "s_alpha.h"
-#include "s_context.h"
-
-
-#define ALPHA_TEST(ALPHA, LOOP_CODE) \
-do { \
- switch (ctx->Color.AlphaFunc) { \
- case GL_LESS: \
- for (i = 0; i < n; i++) { \
- mask[i] &= (ALPHA < ref); \
- LOOP_CODE; \
- } \
- break; \
- case GL_LEQUAL: \
- for (i = 0; i < n; i++) { \
- mask[i] &= (ALPHA <= ref); \
- LOOP_CODE; \
- } \
- break; \
- case GL_GEQUAL: \
- for (i = 0; i < n; i++) { \
- mask[i] &= (ALPHA >= ref); \
- LOOP_CODE; \
- } \
- break; \
- case GL_GREATER: \
- for (i = 0; i < n; i++) { \
- mask[i] &= (ALPHA > ref); \
- LOOP_CODE; \
- } \
- break; \
- case GL_NOTEQUAL: \
- for (i = 0; i < n; i++) { \
- mask[i] &= (ALPHA != ref); \
- LOOP_CODE; \
- } \
- break; \
- case GL_EQUAL: \
- for (i = 0; i < n; i++) { \
- mask[i] &= (ALPHA == ref); \
- LOOP_CODE; \
- } \
- break; \
- default: \
- _mesa_problem(ctx, "Invalid alpha test in _swrast_alpha_test" ); \
- return 0; \
- } \
-} while (0)
-
-
-
-/**
- * Perform the alpha test for an array of pixels.
- * For pixels that fail the test, mask[i] will be set to 0.
- * \return 0 if all pixels in the span failed the alpha test,
- * 1 if one or more pixels passed the alpha test.
- */
-GLint
-_swrast_alpha_test(const struct gl_context *ctx, SWspan *span)
-{
- const GLuint n = span->end;
- GLubyte *mask = span->array->mask;
- GLuint i;
-
- if (ctx->Color.AlphaFunc == GL_ALWAYS) {
- /* do nothing */
- return 1;
- }
- else if (ctx->Color.AlphaFunc == GL_NEVER) {
- /* All pixels failed - caller should check for this return value and
- * act accordingly.
- */
- span->writeAll = GL_FALSE;
- return 0;
- }
-
- if (span->arrayMask & SPAN_RGBA) {
- /* Use array's alpha values */
- if (span->array->ChanType == GL_UNSIGNED_BYTE) {
- GLubyte (*rgba)[4] = span->array->rgba8;
- GLubyte ref;
- CLAMPED_FLOAT_TO_UBYTE(ref, ctx->Color.AlphaRef);
- ALPHA_TEST(rgba[i][ACOMP], ;);
- }
- else if (span->array->ChanType == GL_UNSIGNED_SHORT) {
- GLushort (*rgba)[4] = span->array->rgba16;
- GLushort ref;
- CLAMPED_FLOAT_TO_USHORT(ref, ctx->Color.AlphaRef);
- ALPHA_TEST(rgba[i][ACOMP], ;);
- }
- else {
- GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL0];
- const GLfloat ref = ctx->Color.AlphaRef;
- ALPHA_TEST(rgba[i][ACOMP], ;);
- }
- }
- else {
- /* Interpolate alpha values */
- ASSERT(span->interpMask & SPAN_RGBA);
- if (span->array->ChanType == GL_UNSIGNED_BYTE) {
- const GLfixed alphaStep = span->alphaStep;
- GLfixed alpha = span->alpha;
- GLubyte ref;
- CLAMPED_FLOAT_TO_UBYTE(ref, ctx->Color.AlphaRef);
- ALPHA_TEST(FixedToInt(alpha), alpha += alphaStep);
- }
- else if (span->array->ChanType == GL_UNSIGNED_SHORT) {
- const GLfixed alphaStep = span->alphaStep;
- GLfixed alpha = span->alpha;
- GLushort ref;
- CLAMPED_FLOAT_TO_USHORT(ref, ctx->Color.AlphaRef);
- ALPHA_TEST(FixedToInt(alpha), alpha += alphaStep);
- }
- else {
- const GLfloat alphaStep = FixedToFloat(span->alphaStep);
- GLfloat alpha = FixedToFloat(span->alpha);
- const GLfloat ref = ctx->Color.AlphaRef;
- ALPHA_TEST(alpha, alpha += alphaStep);
- }
- }
-
- span->writeAll = GL_FALSE;
-
- /* XXX examine mask[] values? */
- return 1;
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.2
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/**
+ * \file swrast/s_alpha.c
+ * \brief Functions to apply alpha test.
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/colormac.h"
+#include "main/macros.h"
+
+#include "s_alpha.h"
+#include "s_context.h"
+
+
+#define ALPHA_TEST(ALPHA, LOOP_CODE) \
+do { \
+ switch (ctx->Color.AlphaFunc) { \
+ case GL_LESS: \
+ for (i = 0; i < n; i++) { \
+ mask[i] &= (ALPHA < ref); \
+ LOOP_CODE; \
+ } \
+ break; \
+ case GL_LEQUAL: \
+ for (i = 0; i < n; i++) { \
+ mask[i] &= (ALPHA <= ref); \
+ LOOP_CODE; \
+ } \
+ break; \
+ case GL_GEQUAL: \
+ for (i = 0; i < n; i++) { \
+ mask[i] &= (ALPHA >= ref); \
+ LOOP_CODE; \
+ } \
+ break; \
+ case GL_GREATER: \
+ for (i = 0; i < n; i++) { \
+ mask[i] &= (ALPHA > ref); \
+ LOOP_CODE; \
+ } \
+ break; \
+ case GL_NOTEQUAL: \
+ for (i = 0; i < n; i++) { \
+ mask[i] &= (ALPHA != ref); \
+ LOOP_CODE; \
+ } \
+ break; \
+ case GL_EQUAL: \
+ for (i = 0; i < n; i++) { \
+ mask[i] &= (ALPHA == ref); \
+ LOOP_CODE; \
+ } \
+ break; \
+ default: \
+ _mesa_problem(ctx, "Invalid alpha test in _swrast_alpha_test" ); \
+ return 0; \
+ } \
+} while (0)
+
+
+
+/**
+ * Perform the alpha test for an array of pixels.
+ * For pixels that fail the test, mask[i] will be set to 0.
+ * \return 0 if all pixels in the span failed the alpha test,
+ * 1 if one or more pixels passed the alpha test.
+ */
+GLint
+_swrast_alpha_test(const struct gl_context *ctx, SWspan *span)
+{
+ const GLuint n = span->end;
+ GLubyte *mask = span->array->mask;
+ GLuint i;
+
+ if (ctx->Color.AlphaFunc == GL_ALWAYS) {
+ /* do nothing */
+ return 1;
+ }
+ else if (ctx->Color.AlphaFunc == GL_NEVER) {
+ /* All pixels failed - caller should check for this return value and
+ * act accordingly.
+ */
+ span->writeAll = GL_FALSE;
+ return 0;
+ }
+
+ if (span->arrayMask & SPAN_RGBA) {
+ /* Use array's alpha values */
+ if (span->array->ChanType == GL_UNSIGNED_BYTE) {
+ GLubyte (*rgba)[4] = span->array->rgba8;
+ GLubyte ref;
+ CLAMPED_FLOAT_TO_UBYTE(ref, ctx->Color.AlphaRef);
+ ALPHA_TEST(rgba[i][ACOMP], ;);
+ }
+ else if (span->array->ChanType == GL_UNSIGNED_SHORT) {
+ GLushort (*rgba)[4] = span->array->rgba16;
+ GLushort ref;
+ CLAMPED_FLOAT_TO_USHORT(ref, ctx->Color.AlphaRef);
+ ALPHA_TEST(rgba[i][ACOMP], ;);
+ }
+ else {
+ GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL0];
+ const GLfloat ref = ctx->Color.AlphaRef;
+ ALPHA_TEST(rgba[i][ACOMP], ;);
+ }
+ }
+ else {
+ /* Interpolate alpha values */
+ ASSERT(span->interpMask & SPAN_RGBA);
+ if (span->array->ChanType == GL_UNSIGNED_BYTE) {
+ const GLfixed alphaStep = span->alphaStep;
+ GLfixed alpha = span->alpha;
+ GLubyte ref;
+ CLAMPED_FLOAT_TO_UBYTE(ref, ctx->Color.AlphaRef);
+ ALPHA_TEST(FixedToInt(alpha), alpha += alphaStep);
+ }
+ else if (span->array->ChanType == GL_UNSIGNED_SHORT) {
+ const GLfixed alphaStep = span->alphaStep;
+ GLfixed alpha = span->alpha;
+ GLushort ref;
+ CLAMPED_FLOAT_TO_USHORT(ref, ctx->Color.AlphaRef);
+ ALPHA_TEST(FixedToInt(alpha), alpha += alphaStep);
+ }
+ else {
+ const GLfloat alphaStep = FixedToFloat(span->alphaStep);
+ GLfloat alpha = FixedToFloat(span->alpha);
+ const GLfloat ref = ctx->Color.AlphaRef;
+ ALPHA_TEST(alpha, alpha += alphaStep);
+ }
+ }
+
+ span->writeAll = GL_FALSE;
+
+ /* XXX examine mask[] values? */
+ return 1;
+}
diff --git a/mesalib/src/mesa/swrast/s_alpha.h b/mesalib/src/mesa/swrast/s_alpha.h
index ac5cd8dab..fca209a44 100644
--- a/mesalib/src/mesa/swrast/s_alpha.h
+++ b/mesalib/src/mesa/swrast/s_alpha.h
@@ -1,39 +1,39 @@
-/*
- * Mesa 3-D graphics library
- * Version: 4.1
- *
- * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_ALPHA_H
-#define S_ALPHA_H
-
-
-#include "main/glheader.h"
-#include "s_span.h"
-
-struct gl_context;
-
-extern GLint
-_swrast_alpha_test( const struct gl_context *ctx, SWspan *span );
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 4.1
+ *
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_ALPHA_H
+#define S_ALPHA_H
+
+
+#include "main/glheader.h"
+#include "s_span.h"
+
+struct gl_context;
+
+extern GLint
+_swrast_alpha_test( const struct gl_context *ctx, SWspan *span );
+
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_atifragshader.c b/mesalib/src/mesa/swrast/s_atifragshader.c
index 6019eea5e..1eb026e00 100644
--- a/mesalib/src/mesa/swrast/s_atifragshader.c
+++ b/mesalib/src/mesa/swrast/s_atifragshader.c
@@ -1,604 +1,604 @@
-/*
- * Copyright (C) 2004 David Airlie All Rights Reserved.
- *
- * 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
- * DAVID AIRLIE 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.
- */
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/atifragshader.h"
-#include "swrast/s_atifragshader.h"
-#include "swrast/s_context.h"
-
-
-/**
- * State for executing ATI fragment shader.
- */
-struct atifs_machine
-{
- GLfloat Registers[6][4]; /** six temporary registers */
- GLfloat PrevPassRegisters[6][4];
- GLfloat Inputs[2][4]; /** Primary, secondary input colors */
-};
-
-
-
-/**
- * Fetch a texel.
- */
-static void
-fetch_texel(struct gl_context * ctx, const GLfloat texcoord[4], GLfloat lambda,
- GLuint unit, GLfloat color[4])
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
-
- /* XXX use a float-valued TextureSample routine here!!! */
- swrast->TextureSample[unit](ctx, ctx->Texture.Unit[unit]._Current,
- 1, (const GLfloat(*)[4]) texcoord,
- &lambda, (GLfloat (*)[4]) color);
-}
-
-static void
-apply_swizzle(GLfloat values[4], GLuint swizzle)
-{
- GLfloat s, t, r, q;
-
- s = values[0];
- t = values[1];
- r = values[2];
- q = values[3];
-
- switch (swizzle) {
- case GL_SWIZZLE_STR_ATI:
- values[0] = s;
- values[1] = t;
- values[2] = r;
- break;
- case GL_SWIZZLE_STQ_ATI:
- values[0] = s;
- values[1] = t;
- values[2] = q;
- break;
- case GL_SWIZZLE_STR_DR_ATI:
- values[0] = s / r;
- values[1] = t / r;
- values[2] = 1 / r;
- break;
- case GL_SWIZZLE_STQ_DQ_ATI:
-/* make sure q is not 0 to avoid problems later with infinite values (texture lookup)? */
- if (q == 0.0F)
- q = 0.000000001F;
- values[0] = s / q;
- values[1] = t / q;
- values[2] = 1.0F / q;
- break;
- }
- values[3] = 0.0;
-}
-
-static void
-apply_src_rep(GLint optype, GLuint rep, GLfloat * val)
-{
- GLint i;
- GLint start, end;
- if (!rep)
- return;
-
- start = optype ? 3 : 0;
- end = 4;
-
- for (i = start; i < end; i++) {
- switch (rep) {
- case GL_RED:
- val[i] = val[0];
- break;
- case GL_GREEN:
- val[i] = val[1];
- break;
- case GL_BLUE:
- val[i] = val[2];
- break;
- case GL_ALPHA:
- val[i] = val[3];
- break;
- }
- }
-}
-
-static void
-apply_src_mod(GLint optype, GLuint mod, GLfloat * val)
-{
- GLint i;
- GLint start, end;
-
- if (!mod)
- return;
-
- start = optype ? 3 : 0;
- end = 4;
-
- for (i = start; i < end; i++) {
- if (mod & GL_COMP_BIT_ATI)
- val[i] = 1 - val[i];
-
- if (mod & GL_BIAS_BIT_ATI)
- val[i] = val[i] - 0.5F;
-
- if (mod & GL_2X_BIT_ATI)
- val[i] = 2 * val[i];
-
- if (mod & GL_NEGATE_BIT_ATI)
- val[i] = -val[i];
- }
-}
-
-static void
-apply_dst_mod(GLuint optype, GLuint mod, GLfloat * val)
-{
- GLint i;
- GLint has_sat = mod & GL_SATURATE_BIT_ATI;
- GLint start, end;
-
- mod &= ~GL_SATURATE_BIT_ATI;
-
- start = optype ? 3 : 0;
- end = optype ? 4 : 3;
-
- for (i = start; i < end; i++) {
- switch (mod) {
- case GL_2X_BIT_ATI:
- val[i] = 2 * val[i];
- break;
- case GL_4X_BIT_ATI:
- val[i] = 4 * val[i];
- break;
- case GL_8X_BIT_ATI:
- val[i] = 8 * val[i];
- break;
- case GL_HALF_BIT_ATI:
- val[i] = val[i] * 0.5F;
- break;
- case GL_QUARTER_BIT_ATI:
- val[i] = val[i] * 0.25F;
- break;
- case GL_EIGHTH_BIT_ATI:
- val[i] = val[i] * 0.125F;
- break;
- }
-
- if (has_sat) {
- if (val[i] < 0.0F)
- val[i] = 0.0F;
- else if (val[i] > 1.0F)
- val[i] = 1.0F;
- }
- else {
- if (val[i] < -8.0F)
- val[i] = -8.0F;
- else if (val[i] > 8.0F)
- val[i] = 8.0F;
- }
- }
-}
-
-
-static void
-write_dst_addr(GLuint optype, GLuint mod, GLuint mask, GLfloat * src,
- GLfloat * dst)
-{
- GLint i;
- apply_dst_mod(optype, mod, src);
-
- if (optype == ATI_FRAGMENT_SHADER_COLOR_OP) {
- if (mask) {
- if (mask & GL_RED_BIT_ATI)
- dst[0] = src[0];
-
- if (mask & GL_GREEN_BIT_ATI)
- dst[1] = src[1];
-
- if (mask & GL_BLUE_BIT_ATI)
- dst[2] = src[2];
- }
- else {
- for (i = 0; i < 3; i++)
- dst[i] = src[i];
- }
- }
- else
- dst[3] = src[3];
-}
-
-static void
-finish_pass(struct atifs_machine *machine)
-{
- GLint i;
-
- for (i = 0; i < 6; i++) {
- COPY_4V(machine->PrevPassRegisters[i], machine->Registers[i]);
- }
-}
-
-struct ati_fs_opcode_st ati_fs_opcodes[] = {
- {GL_ADD_ATI, 2},
- {GL_SUB_ATI, 2},
- {GL_MUL_ATI, 2},
- {GL_MAD_ATI, 3},
- {GL_LERP_ATI, 3},
- {GL_MOV_ATI, 1},
- {GL_CND_ATI, 3},
- {GL_CND0_ATI, 3},
- {GL_DOT2_ADD_ATI, 3},
- {GL_DOT3_ATI, 2},
- {GL_DOT4_ATI, 2}
-};
-
-
-
-static void
-handle_pass_op(struct atifs_machine *machine, struct atifs_setupinst *texinst,
- const SWspan *span, GLuint column, GLuint idx)
-{
- GLuint swizzle = texinst->swizzle;
- GLuint pass_tex = texinst->src;
-
- if (pass_tex >= GL_TEXTURE0_ARB && pass_tex <= GL_TEXTURE7_ARB) {
- pass_tex -= GL_TEXTURE0_ARB;
- COPY_4V(machine->Registers[idx],
- span->array->attribs[FRAG_ATTRIB_TEX0 + pass_tex][column]);
- }
- else if (pass_tex >= GL_REG_0_ATI && pass_tex <= GL_REG_5_ATI) {
- pass_tex -= GL_REG_0_ATI;
- COPY_4V(machine->Registers[idx], machine->PrevPassRegisters[pass_tex]);
- }
- apply_swizzle(machine->Registers[idx], swizzle);
-
-}
-
-static void
-handle_sample_op(struct gl_context * ctx, struct atifs_machine *machine,
- struct atifs_setupinst *texinst, const SWspan *span,
- GLuint column, GLuint idx)
-{
-/* sample from unit idx using texinst->src as coords */
- GLuint swizzle = texinst->swizzle;
- GLuint coord_source = texinst->src;
- GLfloat tex_coords[4] = { 0 };
-
- if (coord_source >= GL_TEXTURE0_ARB && coord_source <= GL_TEXTURE7_ARB) {
- coord_source -= GL_TEXTURE0_ARB;
- COPY_4V(tex_coords,
- span->array->attribs[FRAG_ATTRIB_TEX0 + coord_source][column]);
- }
- else if (coord_source >= GL_REG_0_ATI && coord_source <= GL_REG_5_ATI) {
- coord_source -= GL_REG_0_ATI;
- COPY_4V(tex_coords, machine->PrevPassRegisters[coord_source]);
- }
- apply_swizzle(tex_coords, swizzle);
- fetch_texel(ctx, tex_coords, 0.0F, idx, machine->Registers[idx]);
-}
-
-#define SETUP_SRC_REG(optype, i, x) \
-do { \
- COPY_4V(src[optype][i], x); \
-} while (0)
-
-
-
-/**
- * Execute the given fragment shader.
- * NOTE: we do everything in single-precision floating point
- * \param ctx - rendering context
- * \param shader - the shader to execute
- * \param machine - virtual machine state
- * \param span - the SWspan we're operating on
- * \param column - which pixel [i] we're operating on in the span
- */
-static void
-execute_shader(struct gl_context *ctx, const struct ati_fragment_shader *shader,
- struct atifs_machine *machine, const SWspan *span,
- GLuint column)
-{
- GLuint pc;
- struct atifs_instruction *inst;
- struct atifs_setupinst *texinst;
- GLint optype;
- GLuint i;
- GLint j, pass;
- GLint dstreg;
- GLfloat src[2][3][4];
- GLfloat zeros[4] = { 0.0, 0.0, 0.0, 0.0 };
- GLfloat ones[4] = { 1.0, 1.0, 1.0, 1.0 };
- GLfloat dst[2][4], *dstp;
-
- for (pass = 0; pass < shader->NumPasses; pass++) {
- if (pass > 0)
- finish_pass(machine);
- for (j = 0; j < MAX_NUM_FRAGMENT_REGISTERS_ATI; j++) {
- texinst = &shader->SetupInst[pass][j];
- if (texinst->Opcode == ATI_FRAGMENT_SHADER_PASS_OP)
- handle_pass_op(machine, texinst, span, column, j);
- else if (texinst->Opcode == ATI_FRAGMENT_SHADER_SAMPLE_OP)
- handle_sample_op(ctx, machine, texinst, span, column, j);
- }
-
- for (pc = 0; pc < shader->numArithInstr[pass]; pc++) {
- inst = &shader->Instructions[pass][pc];
-
- /* setup the source registers for color and alpha ops */
- for (optype = 0; optype < 2; optype++) {
- for (i = 0; i < inst->ArgCount[optype]; i++) {
- GLint index = inst->SrcReg[optype][i].Index;
-
- if (index >= GL_REG_0_ATI && index <= GL_REG_5_ATI)
- SETUP_SRC_REG(optype, i,
- machine->Registers[index - GL_REG_0_ATI]);
- else if (index >= GL_CON_0_ATI && index <= GL_CON_7_ATI) {
- if (shader->LocalConstDef & (1 << (index - GL_CON_0_ATI))) {
- SETUP_SRC_REG(optype, i,
- shader->Constants[index - GL_CON_0_ATI]);
- } else {
- SETUP_SRC_REG(optype, i,
- ctx->ATIFragmentShader.GlobalConstants[index - GL_CON_0_ATI]);
- }
- }
- else if (index == GL_ONE)
- SETUP_SRC_REG(optype, i, ones);
- else if (index == GL_ZERO)
- SETUP_SRC_REG(optype, i, zeros);
- else if (index == GL_PRIMARY_COLOR_EXT)
- SETUP_SRC_REG(optype, i,
- machine->Inputs[ATI_FS_INPUT_PRIMARY]);
- else if (index == GL_SECONDARY_INTERPOLATOR_ATI)
- SETUP_SRC_REG(optype, i,
- machine->Inputs[ATI_FS_INPUT_SECONDARY]);
-
- apply_src_rep(optype, inst->SrcReg[optype][i].argRep,
- src[optype][i]);
- apply_src_mod(optype, inst->SrcReg[optype][i].argMod,
- src[optype][i]);
- }
- }
-
- /* Execute the operations - color then alpha */
- for (optype = 0; optype < 2; optype++) {
- if (inst->Opcode[optype]) {
- switch (inst->Opcode[optype]) {
- case GL_ADD_ATI:
- if (!optype)
- for (i = 0; i < 3; i++) {
- dst[optype][i] =
- src[optype][0][i] + src[optype][1][i];
- }
- else
- dst[optype][3] = src[optype][0][3] + src[optype][1][3];
- break;
- case GL_SUB_ATI:
- if (!optype)
- for (i = 0; i < 3; i++) {
- dst[optype][i] =
- src[optype][0][i] - src[optype][1][i];
- }
- else
- dst[optype][3] = src[optype][0][3] - src[optype][1][3];
- break;
- case GL_MUL_ATI:
- if (!optype)
- for (i = 0; i < 3; i++) {
- dst[optype][i] =
- src[optype][0][i] * src[optype][1][i];
- }
- else
- dst[optype][3] = src[optype][0][3] * src[optype][1][3];
- break;
- case GL_MAD_ATI:
- if (!optype)
- for (i = 0; i < 3; i++) {
- dst[optype][i] =
- src[optype][0][i] * src[optype][1][i] +
- src[optype][2][i];
- }
- else
- dst[optype][3] =
- src[optype][0][3] * src[optype][1][3] +
- src[optype][2][3];
- break;
- case GL_LERP_ATI:
- if (!optype)
- for (i = 0; i < 3; i++) {
- dst[optype][i] =
- src[optype][0][i] * src[optype][1][i] + (1 -
- src
- [optype]
- [0][i]) *
- src[optype][2][i];
- }
- else
- dst[optype][3] =
- src[optype][0][3] * src[optype][1][3] + (1 -
- src[optype]
- [0][3]) *
- src[optype][2][3];
- break;
-
- case GL_MOV_ATI:
- if (!optype)
- for (i = 0; i < 3; i++) {
- dst[optype][i] = src[optype][0][i];
- }
- else
- dst[optype][3] = src[optype][0][3];
- break;
- case GL_CND_ATI:
- if (!optype) {
- for (i = 0; i < 3; i++) {
- dst[optype][i] =
- (src[optype][2][i] >
- 0.5) ? src[optype][0][i] : src[optype][1][i];
- }
- }
- else {
- dst[optype][3] =
- (src[optype][2][3] >
- 0.5) ? src[optype][0][3] : src[optype][1][3];
- }
- break;
-
- case GL_CND0_ATI:
- if (!optype)
- for (i = 0; i < 3; i++) {
- dst[optype][i] =
- (src[optype][2][i] >=
- 0) ? src[optype][0][i] : src[optype][1][i];
- }
- else {
- dst[optype][3] =
- (src[optype][2][3] >=
- 0) ? src[optype][0][3] : src[optype][1][3];
- }
- break;
- case GL_DOT2_ADD_ATI:
- {
- GLfloat result;
-
- /* DOT 2 always uses the source from the color op */
- /* could save recalculation of dot products for alpha inst */
- result = src[0][0][0] * src[0][1][0] +
- src[0][0][1] * src[0][1][1] + src[0][2][2];
- if (!optype) {
- for (i = 0; i < 3; i++) {
- dst[optype][i] = result;
- }
- }
- else
- dst[optype][3] = result;
- }
- break;
- case GL_DOT3_ATI:
- {
- GLfloat result;
-
- /* DOT 3 always uses the source from the color op */
- result = src[0][0][0] * src[0][1][0] +
- src[0][0][1] * src[0][1][1] +
- src[0][0][2] * src[0][1][2];
-
- if (!optype) {
- for (i = 0; i < 3; i++) {
- dst[optype][i] = result;
- }
- }
- else
- dst[optype][3] = result;
- }
- break;
- case GL_DOT4_ATI:
- {
- GLfloat result;
-
- /* DOT 4 always uses the source from the color op */
- result = src[0][0][0] * src[0][1][0] +
- src[0][0][1] * src[0][1][1] +
- src[0][0][2] * src[0][1][2] +
- src[0][0][3] * src[0][1][3];
- if (!optype) {
- for (i = 0; i < 3; i++) {
- dst[optype][i] = result;
- }
- }
- else
- dst[optype][3] = result;
- }
- break;
-
- }
- }
- }
-
- /* write out the destination registers */
- for (optype = 0; optype < 2; optype++) {
- if (inst->Opcode[optype]) {
- dstreg = inst->DstReg[optype].Index;
- dstp = machine->Registers[dstreg - GL_REG_0_ATI];
-
- if ((optype == 0) || ((inst->Opcode[1] != GL_DOT2_ADD_ATI) &&
- (inst->Opcode[1] != GL_DOT3_ATI) && (inst->Opcode[1] != GL_DOT4_ATI)))
- write_dst_addr(optype, inst->DstReg[optype].dstMod,
- inst->DstReg[optype].dstMask, dst[optype],
- dstp);
- else
- write_dst_addr(1, inst->DstReg[0].dstMod, 0, dst[1], dstp);
- }
- }
- }
- }
-}
-
-
-/**
- * Init fragment shader virtual machine state.
- */
-static void
-init_machine(struct gl_context * ctx, struct atifs_machine *machine,
- const struct ati_fragment_shader *shader,
- const SWspan *span, GLuint col)
-{
- GLfloat (*inputs)[4] = machine->Inputs;
- GLint i, j;
-
- for (i = 0; i < 6; i++) {
- for (j = 0; j < 4; j++)
- machine->Registers[i][j] = 0.0;
- }
-
- COPY_4V(inputs[ATI_FS_INPUT_PRIMARY], span->array->attribs[FRAG_ATTRIB_COL0][col]);
- COPY_4V(inputs[ATI_FS_INPUT_SECONDARY], span->array->attribs[FRAG_ATTRIB_COL1][col]);
-}
-
-
-
-/**
- * Execute the current ATI shader program, operating on the given span.
- */
-void
-_swrast_exec_fragment_shader(struct gl_context * ctx, SWspan *span)
-{
- const struct ati_fragment_shader *shader = ctx->ATIFragmentShader.Current;
- struct atifs_machine machine;
- GLuint i;
-
- /* incoming colors should be floats */
- ASSERT(span->array->ChanType == GL_FLOAT);
-
- for (i = 0; i < span->end; i++) {
- if (span->array->mask[i]) {
- init_machine(ctx, &machine, shader, span, i);
-
- execute_shader(ctx, shader, &machine, span, i);
-
- /* store result color */
- {
- const GLfloat *colOut = machine.Registers[0];
- /*fprintf(stderr,"outputs %f %f %f %f\n",
- colOut[0], colOut[1], colOut[2], colOut[3]); */
- COPY_4V(span->array->attribs[FRAG_ATTRIB_COL0][i], colOut);
- }
- }
- }
-}
+/*
+ * Copyright (C) 2004 David Airlie All Rights Reserved.
+ *
+ * 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
+ * DAVID AIRLIE 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.
+ */
+
+#include "main/glheader.h"
+#include "main/colormac.h"
+#include "main/macros.h"
+#include "main/atifragshader.h"
+#include "swrast/s_atifragshader.h"
+#include "swrast/s_context.h"
+
+
+/**
+ * State for executing ATI fragment shader.
+ */
+struct atifs_machine
+{
+ GLfloat Registers[6][4]; /** six temporary registers */
+ GLfloat PrevPassRegisters[6][4];
+ GLfloat Inputs[2][4]; /** Primary, secondary input colors */
+};
+
+
+
+/**
+ * Fetch a texel.
+ */
+static void
+fetch_texel(struct gl_context * ctx, const GLfloat texcoord[4], GLfloat lambda,
+ GLuint unit, GLfloat color[4])
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+
+ /* XXX use a float-valued TextureSample routine here!!! */
+ swrast->TextureSample[unit](ctx, ctx->Texture.Unit[unit]._Current,
+ 1, (const GLfloat(*)[4]) texcoord,
+ &lambda, (GLfloat (*)[4]) color);
+}
+
+static void
+apply_swizzle(GLfloat values[4], GLuint swizzle)
+{
+ GLfloat s, t, r, q;
+
+ s = values[0];
+ t = values[1];
+ r = values[2];
+ q = values[3];
+
+ switch (swizzle) {
+ case GL_SWIZZLE_STR_ATI:
+ values[0] = s;
+ values[1] = t;
+ values[2] = r;
+ break;
+ case GL_SWIZZLE_STQ_ATI:
+ values[0] = s;
+ values[1] = t;
+ values[2] = q;
+ break;
+ case GL_SWIZZLE_STR_DR_ATI:
+ values[0] = s / r;
+ values[1] = t / r;
+ values[2] = 1 / r;
+ break;
+ case GL_SWIZZLE_STQ_DQ_ATI:
+/* make sure q is not 0 to avoid problems later with infinite values (texture lookup)? */
+ if (q == 0.0F)
+ q = 0.000000001F;
+ values[0] = s / q;
+ values[1] = t / q;
+ values[2] = 1.0F / q;
+ break;
+ }
+ values[3] = 0.0;
+}
+
+static void
+apply_src_rep(GLint optype, GLuint rep, GLfloat * val)
+{
+ GLint i;
+ GLint start, end;
+ if (!rep)
+ return;
+
+ start = optype ? 3 : 0;
+ end = 4;
+
+ for (i = start; i < end; i++) {
+ switch (rep) {
+ case GL_RED:
+ val[i] = val[0];
+ break;
+ case GL_GREEN:
+ val[i] = val[1];
+ break;
+ case GL_BLUE:
+ val[i] = val[2];
+ break;
+ case GL_ALPHA:
+ val[i] = val[3];
+ break;
+ }
+ }
+}
+
+static void
+apply_src_mod(GLint optype, GLuint mod, GLfloat * val)
+{
+ GLint i;
+ GLint start, end;
+
+ if (!mod)
+ return;
+
+ start = optype ? 3 : 0;
+ end = 4;
+
+ for (i = start; i < end; i++) {
+ if (mod & GL_COMP_BIT_ATI)
+ val[i] = 1 - val[i];
+
+ if (mod & GL_BIAS_BIT_ATI)
+ val[i] = val[i] - 0.5F;
+
+ if (mod & GL_2X_BIT_ATI)
+ val[i] = 2 * val[i];
+
+ if (mod & GL_NEGATE_BIT_ATI)
+ val[i] = -val[i];
+ }
+}
+
+static void
+apply_dst_mod(GLuint optype, GLuint mod, GLfloat * val)
+{
+ GLint i;
+ GLint has_sat = mod & GL_SATURATE_BIT_ATI;
+ GLint start, end;
+
+ mod &= ~GL_SATURATE_BIT_ATI;
+
+ start = optype ? 3 : 0;
+ end = optype ? 4 : 3;
+
+ for (i = start; i < end; i++) {
+ switch (mod) {
+ case GL_2X_BIT_ATI:
+ val[i] = 2 * val[i];
+ break;
+ case GL_4X_BIT_ATI:
+ val[i] = 4 * val[i];
+ break;
+ case GL_8X_BIT_ATI:
+ val[i] = 8 * val[i];
+ break;
+ case GL_HALF_BIT_ATI:
+ val[i] = val[i] * 0.5F;
+ break;
+ case GL_QUARTER_BIT_ATI:
+ val[i] = val[i] * 0.25F;
+ break;
+ case GL_EIGHTH_BIT_ATI:
+ val[i] = val[i] * 0.125F;
+ break;
+ }
+
+ if (has_sat) {
+ if (val[i] < 0.0F)
+ val[i] = 0.0F;
+ else if (val[i] > 1.0F)
+ val[i] = 1.0F;
+ }
+ else {
+ if (val[i] < -8.0F)
+ val[i] = -8.0F;
+ else if (val[i] > 8.0F)
+ val[i] = 8.0F;
+ }
+ }
+}
+
+
+static void
+write_dst_addr(GLuint optype, GLuint mod, GLuint mask, GLfloat * src,
+ GLfloat * dst)
+{
+ GLint i;
+ apply_dst_mod(optype, mod, src);
+
+ if (optype == ATI_FRAGMENT_SHADER_COLOR_OP) {
+ if (mask) {
+ if (mask & GL_RED_BIT_ATI)
+ dst[0] = src[0];
+
+ if (mask & GL_GREEN_BIT_ATI)
+ dst[1] = src[1];
+
+ if (mask & GL_BLUE_BIT_ATI)
+ dst[2] = src[2];
+ }
+ else {
+ for (i = 0; i < 3; i++)
+ dst[i] = src[i];
+ }
+ }
+ else
+ dst[3] = src[3];
+}
+
+static void
+finish_pass(struct atifs_machine *machine)
+{
+ GLint i;
+
+ for (i = 0; i < 6; i++) {
+ COPY_4V(machine->PrevPassRegisters[i], machine->Registers[i]);
+ }
+}
+
+struct ati_fs_opcode_st ati_fs_opcodes[] = {
+ {GL_ADD_ATI, 2},
+ {GL_SUB_ATI, 2},
+ {GL_MUL_ATI, 2},
+ {GL_MAD_ATI, 3},
+ {GL_LERP_ATI, 3},
+ {GL_MOV_ATI, 1},
+ {GL_CND_ATI, 3},
+ {GL_CND0_ATI, 3},
+ {GL_DOT2_ADD_ATI, 3},
+ {GL_DOT3_ATI, 2},
+ {GL_DOT4_ATI, 2}
+};
+
+
+
+static void
+handle_pass_op(struct atifs_machine *machine, struct atifs_setupinst *texinst,
+ const SWspan *span, GLuint column, GLuint idx)
+{
+ GLuint swizzle = texinst->swizzle;
+ GLuint pass_tex = texinst->src;
+
+ if (pass_tex >= GL_TEXTURE0_ARB && pass_tex <= GL_TEXTURE7_ARB) {
+ pass_tex -= GL_TEXTURE0_ARB;
+ COPY_4V(machine->Registers[idx],
+ span->array->attribs[FRAG_ATTRIB_TEX0 + pass_tex][column]);
+ }
+ else if (pass_tex >= GL_REG_0_ATI && pass_tex <= GL_REG_5_ATI) {
+ pass_tex -= GL_REG_0_ATI;
+ COPY_4V(machine->Registers[idx], machine->PrevPassRegisters[pass_tex]);
+ }
+ apply_swizzle(machine->Registers[idx], swizzle);
+
+}
+
+static void
+handle_sample_op(struct gl_context * ctx, struct atifs_machine *machine,
+ struct atifs_setupinst *texinst, const SWspan *span,
+ GLuint column, GLuint idx)
+{
+/* sample from unit idx using texinst->src as coords */
+ GLuint swizzle = texinst->swizzle;
+ GLuint coord_source = texinst->src;
+ GLfloat tex_coords[4] = { 0 };
+
+ if (coord_source >= GL_TEXTURE0_ARB && coord_source <= GL_TEXTURE7_ARB) {
+ coord_source -= GL_TEXTURE0_ARB;
+ COPY_4V(tex_coords,
+ span->array->attribs[FRAG_ATTRIB_TEX0 + coord_source][column]);
+ }
+ else if (coord_source >= GL_REG_0_ATI && coord_source <= GL_REG_5_ATI) {
+ coord_source -= GL_REG_0_ATI;
+ COPY_4V(tex_coords, machine->PrevPassRegisters[coord_source]);
+ }
+ apply_swizzle(tex_coords, swizzle);
+ fetch_texel(ctx, tex_coords, 0.0F, idx, machine->Registers[idx]);
+}
+
+#define SETUP_SRC_REG(optype, i, x) \
+do { \
+ COPY_4V(src[optype][i], x); \
+} while (0)
+
+
+
+/**
+ * Execute the given fragment shader.
+ * NOTE: we do everything in single-precision floating point
+ * \param ctx - rendering context
+ * \param shader - the shader to execute
+ * \param machine - virtual machine state
+ * \param span - the SWspan we're operating on
+ * \param column - which pixel [i] we're operating on in the span
+ */
+static void
+execute_shader(struct gl_context *ctx, const struct ati_fragment_shader *shader,
+ struct atifs_machine *machine, const SWspan *span,
+ GLuint column)
+{
+ GLuint pc;
+ struct atifs_instruction *inst;
+ struct atifs_setupinst *texinst;
+ GLint optype;
+ GLuint i;
+ GLint j, pass;
+ GLint dstreg;
+ GLfloat src[2][3][4];
+ GLfloat zeros[4] = { 0.0, 0.0, 0.0, 0.0 };
+ GLfloat ones[4] = { 1.0, 1.0, 1.0, 1.0 };
+ GLfloat dst[2][4], *dstp;
+
+ for (pass = 0; pass < shader->NumPasses; pass++) {
+ if (pass > 0)
+ finish_pass(machine);
+ for (j = 0; j < MAX_NUM_FRAGMENT_REGISTERS_ATI; j++) {
+ texinst = &shader->SetupInst[pass][j];
+ if (texinst->Opcode == ATI_FRAGMENT_SHADER_PASS_OP)
+ handle_pass_op(machine, texinst, span, column, j);
+ else if (texinst->Opcode == ATI_FRAGMENT_SHADER_SAMPLE_OP)
+ handle_sample_op(ctx, machine, texinst, span, column, j);
+ }
+
+ for (pc = 0; pc < shader->numArithInstr[pass]; pc++) {
+ inst = &shader->Instructions[pass][pc];
+
+ /* setup the source registers for color and alpha ops */
+ for (optype = 0; optype < 2; optype++) {
+ for (i = 0; i < inst->ArgCount[optype]; i++) {
+ GLint index = inst->SrcReg[optype][i].Index;
+
+ if (index >= GL_REG_0_ATI && index <= GL_REG_5_ATI)
+ SETUP_SRC_REG(optype, i,
+ machine->Registers[index - GL_REG_0_ATI]);
+ else if (index >= GL_CON_0_ATI && index <= GL_CON_7_ATI) {
+ if (shader->LocalConstDef & (1 << (index - GL_CON_0_ATI))) {
+ SETUP_SRC_REG(optype, i,
+ shader->Constants[index - GL_CON_0_ATI]);
+ } else {
+ SETUP_SRC_REG(optype, i,
+ ctx->ATIFragmentShader.GlobalConstants[index - GL_CON_0_ATI]);
+ }
+ }
+ else if (index == GL_ONE)
+ SETUP_SRC_REG(optype, i, ones);
+ else if (index == GL_ZERO)
+ SETUP_SRC_REG(optype, i, zeros);
+ else if (index == GL_PRIMARY_COLOR_EXT)
+ SETUP_SRC_REG(optype, i,
+ machine->Inputs[ATI_FS_INPUT_PRIMARY]);
+ else if (index == GL_SECONDARY_INTERPOLATOR_ATI)
+ SETUP_SRC_REG(optype, i,
+ machine->Inputs[ATI_FS_INPUT_SECONDARY]);
+
+ apply_src_rep(optype, inst->SrcReg[optype][i].argRep,
+ src[optype][i]);
+ apply_src_mod(optype, inst->SrcReg[optype][i].argMod,
+ src[optype][i]);
+ }
+ }
+
+ /* Execute the operations - color then alpha */
+ for (optype = 0; optype < 2; optype++) {
+ if (inst->Opcode[optype]) {
+ switch (inst->Opcode[optype]) {
+ case GL_ADD_ATI:
+ if (!optype)
+ for (i = 0; i < 3; i++) {
+ dst[optype][i] =
+ src[optype][0][i] + src[optype][1][i];
+ }
+ else
+ dst[optype][3] = src[optype][0][3] + src[optype][1][3];
+ break;
+ case GL_SUB_ATI:
+ if (!optype)
+ for (i = 0; i < 3; i++) {
+ dst[optype][i] =
+ src[optype][0][i] - src[optype][1][i];
+ }
+ else
+ dst[optype][3] = src[optype][0][3] - src[optype][1][3];
+ break;
+ case GL_MUL_ATI:
+ if (!optype)
+ for (i = 0; i < 3; i++) {
+ dst[optype][i] =
+ src[optype][0][i] * src[optype][1][i];
+ }
+ else
+ dst[optype][3] = src[optype][0][3] * src[optype][1][3];
+ break;
+ case GL_MAD_ATI:
+ if (!optype)
+ for (i = 0; i < 3; i++) {
+ dst[optype][i] =
+ src[optype][0][i] * src[optype][1][i] +
+ src[optype][2][i];
+ }
+ else
+ dst[optype][3] =
+ src[optype][0][3] * src[optype][1][3] +
+ src[optype][2][3];
+ break;
+ case GL_LERP_ATI:
+ if (!optype)
+ for (i = 0; i < 3; i++) {
+ dst[optype][i] =
+ src[optype][0][i] * src[optype][1][i] + (1 -
+ src
+ [optype]
+ [0][i]) *
+ src[optype][2][i];
+ }
+ else
+ dst[optype][3] =
+ src[optype][0][3] * src[optype][1][3] + (1 -
+ src[optype]
+ [0][3]) *
+ src[optype][2][3];
+ break;
+
+ case GL_MOV_ATI:
+ if (!optype)
+ for (i = 0; i < 3; i++) {
+ dst[optype][i] = src[optype][0][i];
+ }
+ else
+ dst[optype][3] = src[optype][0][3];
+ break;
+ case GL_CND_ATI:
+ if (!optype) {
+ for (i = 0; i < 3; i++) {
+ dst[optype][i] =
+ (src[optype][2][i] >
+ 0.5) ? src[optype][0][i] : src[optype][1][i];
+ }
+ }
+ else {
+ dst[optype][3] =
+ (src[optype][2][3] >
+ 0.5) ? src[optype][0][3] : src[optype][1][3];
+ }
+ break;
+
+ case GL_CND0_ATI:
+ if (!optype)
+ for (i = 0; i < 3; i++) {
+ dst[optype][i] =
+ (src[optype][2][i] >=
+ 0) ? src[optype][0][i] : src[optype][1][i];
+ }
+ else {
+ dst[optype][3] =
+ (src[optype][2][3] >=
+ 0) ? src[optype][0][3] : src[optype][1][3];
+ }
+ break;
+ case GL_DOT2_ADD_ATI:
+ {
+ GLfloat result;
+
+ /* DOT 2 always uses the source from the color op */
+ /* could save recalculation of dot products for alpha inst */
+ result = src[0][0][0] * src[0][1][0] +
+ src[0][0][1] * src[0][1][1] + src[0][2][2];
+ if (!optype) {
+ for (i = 0; i < 3; i++) {
+ dst[optype][i] = result;
+ }
+ }
+ else
+ dst[optype][3] = result;
+ }
+ break;
+ case GL_DOT3_ATI:
+ {
+ GLfloat result;
+
+ /* DOT 3 always uses the source from the color op */
+ result = src[0][0][0] * src[0][1][0] +
+ src[0][0][1] * src[0][1][1] +
+ src[0][0][2] * src[0][1][2];
+
+ if (!optype) {
+ for (i = 0; i < 3; i++) {
+ dst[optype][i] = result;
+ }
+ }
+ else
+ dst[optype][3] = result;
+ }
+ break;
+ case GL_DOT4_ATI:
+ {
+ GLfloat result;
+
+ /* DOT 4 always uses the source from the color op */
+ result = src[0][0][0] * src[0][1][0] +
+ src[0][0][1] * src[0][1][1] +
+ src[0][0][2] * src[0][1][2] +
+ src[0][0][3] * src[0][1][3];
+ if (!optype) {
+ for (i = 0; i < 3; i++) {
+ dst[optype][i] = result;
+ }
+ }
+ else
+ dst[optype][3] = result;
+ }
+ break;
+
+ }
+ }
+ }
+
+ /* write out the destination registers */
+ for (optype = 0; optype < 2; optype++) {
+ if (inst->Opcode[optype]) {
+ dstreg = inst->DstReg[optype].Index;
+ dstp = machine->Registers[dstreg - GL_REG_0_ATI];
+
+ if ((optype == 0) || ((inst->Opcode[1] != GL_DOT2_ADD_ATI) &&
+ (inst->Opcode[1] != GL_DOT3_ATI) && (inst->Opcode[1] != GL_DOT4_ATI)))
+ write_dst_addr(optype, inst->DstReg[optype].dstMod,
+ inst->DstReg[optype].dstMask, dst[optype],
+ dstp);
+ else
+ write_dst_addr(1, inst->DstReg[0].dstMod, 0, dst[1], dstp);
+ }
+ }
+ }
+ }
+}
+
+
+/**
+ * Init fragment shader virtual machine state.
+ */
+static void
+init_machine(struct gl_context * ctx, struct atifs_machine *machine,
+ const struct ati_fragment_shader *shader,
+ const SWspan *span, GLuint col)
+{
+ GLfloat (*inputs)[4] = machine->Inputs;
+ GLint i, j;
+
+ for (i = 0; i < 6; i++) {
+ for (j = 0; j < 4; j++)
+ machine->Registers[i][j] = 0.0;
+ }
+
+ COPY_4V(inputs[ATI_FS_INPUT_PRIMARY], span->array->attribs[FRAG_ATTRIB_COL0][col]);
+ COPY_4V(inputs[ATI_FS_INPUT_SECONDARY], span->array->attribs[FRAG_ATTRIB_COL1][col]);
+}
+
+
+
+/**
+ * Execute the current ATI shader program, operating on the given span.
+ */
+void
+_swrast_exec_fragment_shader(struct gl_context * ctx, SWspan *span)
+{
+ const struct ati_fragment_shader *shader = ctx->ATIFragmentShader.Current;
+ struct atifs_machine machine;
+ GLuint i;
+
+ /* incoming colors should be floats */
+ ASSERT(span->array->ChanType == GL_FLOAT);
+
+ for (i = 0; i < span->end; i++) {
+ if (span->array->mask[i]) {
+ init_machine(ctx, &machine, shader, span, i);
+
+ execute_shader(ctx, shader, &machine, span, i);
+
+ /* store result color */
+ {
+ const GLfloat *colOut = machine.Registers[0];
+ /*fprintf(stderr,"outputs %f %f %f %f\n",
+ colOut[0], colOut[1], colOut[2], colOut[3]); */
+ COPY_4V(span->array->attribs[FRAG_ATTRIB_COL0][i], colOut);
+ }
+ }
+ }
+}
diff --git a/mesalib/src/mesa/swrast/s_atifragshader.h b/mesalib/src/mesa/swrast/s_atifragshader.h
index 16ed86fd7..10aaaa592 100644
--- a/mesalib/src/mesa/swrast/s_atifragshader.h
+++ b/mesalib/src/mesa/swrast/s_atifragshader.h
@@ -1,38 +1,38 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.1
- *
- * Copyright (C) 1999-2003 David Airlie All Rights Reserved.
- *
- * 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
- * DAVID AIRLIE 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.
- */
-
-
-#ifndef S_ATIFRAGSHADER_H
-#define S_ATIFRAGSHADER_H
-
-
-#include "s_span.h"
-
-struct gl_context;
-
-extern void
-_swrast_exec_fragment_shader( struct gl_context *ctx, SWspan *span );
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.1
+ *
+ * Copyright (C) 1999-2003 David Airlie All Rights Reserved.
+ *
+ * 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
+ * DAVID AIRLIE 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.
+ */
+
+
+#ifndef S_ATIFRAGSHADER_H
+#define S_ATIFRAGSHADER_H
+
+
+#include "s_span.h"
+
+struct gl_context;
+
+extern void
+_swrast_exec_fragment_shader( struct gl_context *ctx, SWspan *span );
+
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_blend.h b/mesalib/src/mesa/swrast/s_blend.h
index 8ecff52cf..69cd89e7a 100644
--- a/mesalib/src/mesa/swrast/s_blend.h
+++ b/mesalib/src/mesa/swrast/s_blend.h
@@ -1,45 +1,45 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.2
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_BLEND_H
-#define S_BLEND_H
-
-
-#include "main/glheader.h"
-#include "s_span.h"
-
-struct gl_context;
-struct gl_renderbuffer;
-
-
-extern void
-_swrast_blend_span(struct gl_context *ctx, struct gl_renderbuffer *rb, SWspan *span);
-
-
-extern void
-_swrast_choose_blend_func(struct gl_context *ctx, GLenum chanType);
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.2
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_BLEND_H
+#define S_BLEND_H
+
+
+#include "main/glheader.h"
+#include "s_span.h"
+
+struct gl_context;
+struct gl_renderbuffer;
+
+
+extern void
+_swrast_blend_span(struct gl_context *ctx, struct gl_renderbuffer *rb, SWspan *span);
+
+
+extern void
+_swrast_choose_blend_func(struct gl_context *ctx, GLenum chanType);
+
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_feedback.c b/mesalib/src/mesa/swrast/s_feedback.c
index e548bf9c3..00f92d463 100644
--- a/mesalib/src/mesa/swrast/s_feedback.c
+++ b/mesalib/src/mesa/swrast/s_feedback.c
@@ -1,138 +1,138 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.0
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/feedback.h"
-#include "main/macros.h"
-
-#include "s_context.h"
-#include "s_feedback.h"
-#include "s_triangle.h"
-
-
-
-static void
-feedback_vertex(struct gl_context * ctx, const SWvertex * v, const SWvertex * pv)
-{
- GLfloat win[4];
- const GLfloat *vtc = v->attrib[FRAG_ATTRIB_TEX0];
- const GLfloat *color = v->attrib[FRAG_ATTRIB_COL0];
-
- win[0] = v->attrib[FRAG_ATTRIB_WPOS][0];
- win[1] = v->attrib[FRAG_ATTRIB_WPOS][1];
- win[2] = v->attrib[FRAG_ATTRIB_WPOS][2] / ctx->DrawBuffer->_DepthMaxF;
- win[3] = 1.0F / v->attrib[FRAG_ATTRIB_WPOS][3];
-
- _mesa_feedback_vertex(ctx, win, color, vtc);
-}
-
-
-/*
- * Put triangle in feedback buffer.
- */
-void
-_swrast_feedback_triangle(struct gl_context *ctx, const SWvertex *v0,
- const SWvertex *v1, const SWvertex *v2)
-{
- if (!_swrast_culltriangle(ctx, v0, v1, v2)) {
- _mesa_feedback_token(ctx, (GLfloat) (GLint) GL_POLYGON_TOKEN);
- _mesa_feedback_token(ctx, (GLfloat) 3); /* three vertices */
-
- if (ctx->Light.ShadeModel == GL_SMOOTH) {
- feedback_vertex(ctx, v0, v0);
- feedback_vertex(ctx, v1, v1);
- feedback_vertex(ctx, v2, v2);
- }
- else {
- feedback_vertex(ctx, v0, v2);
- feedback_vertex(ctx, v1, v2);
- feedback_vertex(ctx, v2, v2);
- }
- }
-}
-
-
-void
-_swrast_feedback_line(struct gl_context *ctx, const SWvertex *v0,
- const SWvertex *v1)
-{
- GLenum token = GL_LINE_TOKEN;
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
-
- if (swrast->StippleCounter == 0)
- token = GL_LINE_RESET_TOKEN;
-
- _mesa_feedback_token(ctx, (GLfloat) (GLint) token);
-
- if (ctx->Light.ShadeModel == GL_SMOOTH) {
- feedback_vertex(ctx, v0, v0);
- feedback_vertex(ctx, v1, v1);
- }
- else {
- feedback_vertex(ctx, v0, v1);
- feedback_vertex(ctx, v1, v1);
- }
-
- swrast->StippleCounter++;
-}
-
-
-void
-_swrast_feedback_point(struct gl_context *ctx, const SWvertex *v)
-{
- _mesa_feedback_token(ctx, (GLfloat) (GLint) GL_POINT_TOKEN);
- feedback_vertex(ctx, v, v);
-}
-
-
-void
-_swrast_select_triangle(struct gl_context *ctx, const SWvertex *v0,
- const SWvertex *v1, const SWvertex *v2)
-{
- if (!_swrast_culltriangle(ctx, v0, v1, v2)) {
- const GLfloat zs = 1.0F / ctx->DrawBuffer->_DepthMaxF;
-
- _mesa_update_hitflag( ctx, v0->attrib[FRAG_ATTRIB_WPOS][2] * zs );
- _mesa_update_hitflag( ctx, v1->attrib[FRAG_ATTRIB_WPOS][2] * zs );
- _mesa_update_hitflag( ctx, v2->attrib[FRAG_ATTRIB_WPOS][2] * zs );
- }
-}
-
-
-void
-_swrast_select_line(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1)
-{
- const GLfloat zs = 1.0F / ctx->DrawBuffer->_DepthMaxF;
- _mesa_update_hitflag( ctx, v0->attrib[FRAG_ATTRIB_WPOS][2] * zs );
- _mesa_update_hitflag( ctx, v1->attrib[FRAG_ATTRIB_WPOS][2] * zs );
-}
-
-
-void
-_swrast_select_point(struct gl_context *ctx, const SWvertex *v)
-{
- const GLfloat zs = 1.0F / ctx->DrawBuffer->_DepthMaxF;
- _mesa_update_hitflag( ctx, v->attrib[FRAG_ATTRIB_WPOS][2] * zs );
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+#include "main/glheader.h"
+#include "main/colormac.h"
+#include "main/feedback.h"
+#include "main/macros.h"
+
+#include "s_context.h"
+#include "s_feedback.h"
+#include "s_triangle.h"
+
+
+
+static void
+feedback_vertex(struct gl_context * ctx, const SWvertex * v, const SWvertex * pv)
+{
+ GLfloat win[4];
+ const GLfloat *vtc = v->attrib[FRAG_ATTRIB_TEX0];
+ const GLfloat *color = v->attrib[FRAG_ATTRIB_COL0];
+
+ win[0] = v->attrib[FRAG_ATTRIB_WPOS][0];
+ win[1] = v->attrib[FRAG_ATTRIB_WPOS][1];
+ win[2] = v->attrib[FRAG_ATTRIB_WPOS][2] / ctx->DrawBuffer->_DepthMaxF;
+ win[3] = 1.0F / v->attrib[FRAG_ATTRIB_WPOS][3];
+
+ _mesa_feedback_vertex(ctx, win, color, vtc);
+}
+
+
+/*
+ * Put triangle in feedback buffer.
+ */
+void
+_swrast_feedback_triangle(struct gl_context *ctx, const SWvertex *v0,
+ const SWvertex *v1, const SWvertex *v2)
+{
+ if (!_swrast_culltriangle(ctx, v0, v1, v2)) {
+ _mesa_feedback_token(ctx, (GLfloat) (GLint) GL_POLYGON_TOKEN);
+ _mesa_feedback_token(ctx, (GLfloat) 3); /* three vertices */
+
+ if (ctx->Light.ShadeModel == GL_SMOOTH) {
+ feedback_vertex(ctx, v0, v0);
+ feedback_vertex(ctx, v1, v1);
+ feedback_vertex(ctx, v2, v2);
+ }
+ else {
+ feedback_vertex(ctx, v0, v2);
+ feedback_vertex(ctx, v1, v2);
+ feedback_vertex(ctx, v2, v2);
+ }
+ }
+}
+
+
+void
+_swrast_feedback_line(struct gl_context *ctx, const SWvertex *v0,
+ const SWvertex *v1)
+{
+ GLenum token = GL_LINE_TOKEN;
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+
+ if (swrast->StippleCounter == 0)
+ token = GL_LINE_RESET_TOKEN;
+
+ _mesa_feedback_token(ctx, (GLfloat) (GLint) token);
+
+ if (ctx->Light.ShadeModel == GL_SMOOTH) {
+ feedback_vertex(ctx, v0, v0);
+ feedback_vertex(ctx, v1, v1);
+ }
+ else {
+ feedback_vertex(ctx, v0, v1);
+ feedback_vertex(ctx, v1, v1);
+ }
+
+ swrast->StippleCounter++;
+}
+
+
+void
+_swrast_feedback_point(struct gl_context *ctx, const SWvertex *v)
+{
+ _mesa_feedback_token(ctx, (GLfloat) (GLint) GL_POINT_TOKEN);
+ feedback_vertex(ctx, v, v);
+}
+
+
+void
+_swrast_select_triangle(struct gl_context *ctx, const SWvertex *v0,
+ const SWvertex *v1, const SWvertex *v2)
+{
+ if (!_swrast_culltriangle(ctx, v0, v1, v2)) {
+ const GLfloat zs = 1.0F / ctx->DrawBuffer->_DepthMaxF;
+
+ _mesa_update_hitflag( ctx, v0->attrib[FRAG_ATTRIB_WPOS][2] * zs );
+ _mesa_update_hitflag( ctx, v1->attrib[FRAG_ATTRIB_WPOS][2] * zs );
+ _mesa_update_hitflag( ctx, v2->attrib[FRAG_ATTRIB_WPOS][2] * zs );
+ }
+}
+
+
+void
+_swrast_select_line(struct gl_context *ctx, const SWvertex *v0, const SWvertex *v1)
+{
+ const GLfloat zs = 1.0F / ctx->DrawBuffer->_DepthMaxF;
+ _mesa_update_hitflag( ctx, v0->attrib[FRAG_ATTRIB_WPOS][2] * zs );
+ _mesa_update_hitflag( ctx, v1->attrib[FRAG_ATTRIB_WPOS][2] * zs );
+}
+
+
+void
+_swrast_select_point(struct gl_context *ctx, const SWvertex *v)
+{
+ const GLfloat zs = 1.0F / ctx->DrawBuffer->_DepthMaxF;
+ _mesa_update_hitflag( ctx, v->attrib[FRAG_ATTRIB_WPOS][2] * zs );
+}
diff --git a/mesalib/src/mesa/swrast/s_feedback.h b/mesalib/src/mesa/swrast/s_feedback.h
index f0ca2c0e6..6bfd49735 100644
--- a/mesalib/src/mesa/swrast/s_feedback.h
+++ b/mesalib/src/mesa/swrast/s_feedback.h
@@ -1,50 +1,50 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_FEEDBACK_H
-#define S_FEEDBACK_H
-
-
-#include "swrast.h"
-
-
-extern void _swrast_feedback_point( struct gl_context *ctx, const SWvertex *v );
-
-extern void _swrast_feedback_line( struct gl_context *ctx,
- const SWvertex *v1, const SWvertex *v2 );
-
-extern void _swrast_feedback_triangle( struct gl_context *ctx, const SWvertex *v0,
- const SWvertex *v1, const SWvertex *v2 );
-
-extern void _swrast_select_point( struct gl_context *ctx, const SWvertex *v );
-
-extern void _swrast_select_line( struct gl_context *ctx,
- const SWvertex *v1, const SWvertex *v2 );
-
-extern void _swrast_select_triangle( struct gl_context *ctx, const SWvertex *v0,
- const SWvertex *v1, const SWvertex *v2 );
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_FEEDBACK_H
+#define S_FEEDBACK_H
+
+
+#include "swrast.h"
+
+
+extern void _swrast_feedback_point( struct gl_context *ctx, const SWvertex *v );
+
+extern void _swrast_feedback_line( struct gl_context *ctx,
+ const SWvertex *v1, const SWvertex *v2 );
+
+extern void _swrast_feedback_triangle( struct gl_context *ctx, const SWvertex *v0,
+ const SWvertex *v1, const SWvertex *v2 );
+
+extern void _swrast_select_point( struct gl_context *ctx, const SWvertex *v );
+
+extern void _swrast_select_line( struct gl_context *ctx,
+ const SWvertex *v1, const SWvertex *v2 );
+
+extern void _swrast_select_triangle( struct gl_context *ctx, const SWvertex *v0,
+ const SWvertex *v1, const SWvertex *v2 );
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_fog.h b/mesalib/src/mesa/swrast/s_fog.h
index eed9b8bdd..9f93b7050 100644
--- a/mesalib/src/mesa/swrast/s_fog.h
+++ b/mesalib/src/mesa/swrast/s_fog.h
@@ -1,42 +1,42 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 4.1
- *
- * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_FOG_H
-#define S_FOG_H
-
-
-#include "main/glheader.h"
-#include "s_span.h"
-
-struct gl_context;
-
-extern GLfloat
-_swrast_z_to_fogfactor(struct gl_context *ctx, GLfloat z);
-
-extern void
-_swrast_fog_rgba_span( const struct gl_context *ctx, SWspan *span );
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 4.1
+ *
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_FOG_H
+#define S_FOG_H
+
+
+#include "main/glheader.h"
+#include "s_span.h"
+
+struct gl_context;
+
+extern GLfloat
+_swrast_z_to_fogfactor(struct gl_context *ctx, GLfloat z);
+
+extern void
+_swrast_fog_rgba_span( const struct gl_context *ctx, SWspan *span );
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_lines.h b/mesalib/src/mesa/swrast/s_lines.h
index 0f95eecab..a4c98a855 100644
--- a/mesalib/src/mesa/swrast/s_lines.h
+++ b/mesalib/src/mesa/swrast/s_lines.h
@@ -1,41 +1,41 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_LINES_H
-#define S_LINES_H
-
-#include "swrast.h"
-
-void
-_swrast_choose_line( struct gl_context *ctx );
-
-void
-_swrast_add_spec_terms_line( struct gl_context *ctx,
- const SWvertex *v0,
- const SWvertex *v1 );
-
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_LINES_H
+#define S_LINES_H
+
+#include "swrast.h"
+
+void
+_swrast_choose_line( struct gl_context *ctx );
+
+void
+_swrast_add_spec_terms_line( struct gl_context *ctx,
+ const SWvertex *v0,
+ const SWvertex *v1 );
+
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_logic.h b/mesalib/src/mesa/swrast/s_logic.h
index 39713b990..0a3adfca5 100644
--- a/mesalib/src/mesa/swrast/s_logic.h
+++ b/mesalib/src/mesa/swrast/s_logic.h
@@ -1,40 +1,40 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.2
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_LOGIC_H
-#define S_LOGIC_H
-
-
-#include "s_span.h"
-
-struct gl_context;
-struct gl_renderbuffer;
-
-extern void
-_swrast_logicop_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb,
- SWspan *span);
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.2
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_LOGIC_H
+#define S_LOGIC_H
+
+
+#include "s_span.h"
+
+struct gl_context;
+struct gl_renderbuffer;
+
+extern void
+_swrast_logicop_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ SWspan *span);
+
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_masking.h b/mesalib/src/mesa/swrast/s_masking.h
index 7ab02cc7a..5124509a0 100644
--- a/mesalib/src/mesa/swrast/s_masking.h
+++ b/mesalib/src/mesa/swrast/s_masking.h
@@ -1,41 +1,41 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.2
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_MASKING_H
-#define S_MASKING_H
-
-
-#include "main/glheader.h"
-#include "s_span.h"
-
-struct gl_context;
-struct gl_renderbuffer;
-
-
-extern void
-_swrast_mask_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb,
- SWspan *span, GLuint buf);
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.2
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_MASKING_H
+#define S_MASKING_H
+
+
+#include "main/glheader.h"
+#include "s_span.h"
+
+struct gl_context;
+struct gl_renderbuffer;
+
+
+extern void
+_swrast_mask_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ SWspan *span, GLuint buf);
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_points.h b/mesalib/src/mesa/swrast/s_points.h
index d99470bfe..0b6550e80 100644
--- a/mesalib/src/mesa/swrast/s_points.h
+++ b/mesalib/src/mesa/swrast/s_points.h
@@ -1,39 +1,39 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_POINTS_H
-#define S_POINTS_H
-
-#include "swrast.h"
-
-extern void
-_swrast_choose_point( struct gl_context *ctx );
-
-extern void
-_swrast_add_spec_terms_point( struct gl_context *ctx,
- const SWvertex *v0 );
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_POINTS_H
+#define S_POINTS_H
+
+#include "swrast.h"
+
+extern void
+_swrast_choose_point( struct gl_context *ctx );
+
+extern void
+_swrast_add_spec_terms_point( struct gl_context *ctx,
+ const SWvertex *v0 );
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_texcombine.h b/mesalib/src/mesa/swrast/s_texcombine.h
index 3897acd69..11049d86b 100644
--- a/mesalib/src/mesa/swrast/s_texcombine.h
+++ b/mesalib/src/mesa/swrast/s_texcombine.h
@@ -1,37 +1,37 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_TEXCOMBINE_H
-#define S_TEXCOMBINE_H
-
-
-#include "s_span.h"
-
-struct gl_context;
-
-extern void
-_swrast_texture_span( struct gl_context *ctx, SWspan *span );
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_TEXCOMBINE_H
+#define S_TEXCOMBINE_H
+
+
+#include "s_span.h"
+
+struct gl_context;
+
+extern void
+_swrast_texture_span( struct gl_context *ctx, SWspan *span );
+
+#endif
diff --git a/mesalib/src/mesa/swrast/s_triangle.h b/mesalib/src/mesa/swrast/s_triangle.h
index bde5dd58b..46e23d420 100644
--- a/mesalib/src/mesa/swrast/s_triangle.h
+++ b/mesalib/src/mesa/swrast/s_triangle.h
@@ -1,50 +1,50 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 5.1
- *
- * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef S_TRIANGLES_H
-#define S_TRIANGLES_H
-
-
-#include "swrast.h"
-
-
-extern GLboolean
-_swrast_culltriangle( struct gl_context *ctx,
- const SWvertex *v0,
- const SWvertex *v1,
- const SWvertex *v2);
-
-extern void
-_swrast_choose_triangle( struct gl_context *ctx );
-
-extern void
-_swrast_add_spec_terms_triangle( struct gl_context *ctx,
- const SWvertex *v0,
- const SWvertex *v1,
- const SWvertex *v2 );
-
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 5.1
+ *
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef S_TRIANGLES_H
+#define S_TRIANGLES_H
+
+
+#include "swrast.h"
+
+
+extern GLboolean
+_swrast_culltriangle( struct gl_context *ctx,
+ const SWvertex *v0,
+ const SWvertex *v1,
+ const SWvertex *v2);
+
+extern void
+_swrast_choose_triangle( struct gl_context *ctx );
+
+extern void
+_swrast_add_spec_terms_triangle( struct gl_context *ctx,
+ const SWvertex *v0,
+ const SWvertex *v1,
+ const SWvertex *v2 );
+
+
+#endif
diff --git a/mesalib/src/mesa/swrast_setup/NOTES b/mesalib/src/mesa/swrast_setup/NOTES
index b5d2c503e..bdf57c39e 100644
--- a/mesalib/src/mesa/swrast_setup/NOTES
+++ b/mesalib/src/mesa/swrast_setup/NOTES
@@ -1,65 +1,65 @@
-INTRODUCTION
-
-A helper module which provides glue to bind the software rasterizer to
-the software t&l module. The main task of this module is to build
-swrast vertices from the t&l vertex_buffer structs, and to use them to
-perform triangle setup functions not implemented in the software
-rasterizer.
-
-The module implements a full set of functions to plug into the
-t_vb_render.c driver interface (tnl->Driver.Render.*).
-
-There are strong advantages to decoupling the software rasterizer from
-the t&l module, primarily allowing hardware drivers better control
-over fallbacks, the removal of implicit knowledge about the software
-rasterizer in the t&l module, allowing the two modules to evolve
-independently and allowing either to be substituted with equivalent
-functionality from another codebase.
-
-This module implements triangle/quad setup for offset, unfilled and
-twoside-lit triangles. The software rasterizer doesn't handle these
-primitives directly.
-
-Hardware rasterization drivers typically use this module in situations
-where no hardware rasterization is possible, ie during total
-fallbacks.
-
-STATE
-
-To create and destroy the module:
-
- GLboolean _swsetup_CreateContext( struct gl_context *ctx );
- void _swsetup_DestroyContext( struct gl_context *ctx );
-
-The module is not active by default, and must be installed by calling
-_swrast_Wakeup(). This function installs internal swrast_setup
-functions into all the tnl->Driver.Render driver hooks, thus taking
-over the task of rasterization entirely:
-
- void _swrast_Wakeup( struct gl_context *ctx );
-
-
-This module tracks state changes internally and maintains derived
-values based on the current state. For this to work, the driver
-ensure the following funciton is called whenever the state changes and
-the swsetup module is 'awake':
-
- void _swsetup_InvalidateState( struct gl_context *ctx, GLuint new_state );
-
-There is no explicit call to put the swsetup module to sleep. Simply
-install other function pointers into all the tnl->Driver.Render.*
-hooks, and (optionally) cease calling _swsetup_InvalidateState().
-
-DRIVER INTERFACE
-
-The module offers a minimal driver interface:
-
- void (*Start)( struct gl_context *ctx );
- void (*Finish)( struct gl_context *ctx );
-
-These are called before and after the completion of all swrast drawing
-activity. As swrast doesn't call callbacks during triangle, line or
-point rasterization, these are necessary to provide locking hooks for
-some drivers. They may otherwise be left null.
-
-
+INTRODUCTION
+
+A helper module which provides glue to bind the software rasterizer to
+the software t&l module. The main task of this module is to build
+swrast vertices from the t&l vertex_buffer structs, and to use them to
+perform triangle setup functions not implemented in the software
+rasterizer.
+
+The module implements a full set of functions to plug into the
+t_vb_render.c driver interface (tnl->Driver.Render.*).
+
+There are strong advantages to decoupling the software rasterizer from
+the t&l module, primarily allowing hardware drivers better control
+over fallbacks, the removal of implicit knowledge about the software
+rasterizer in the t&l module, allowing the two modules to evolve
+independently and allowing either to be substituted with equivalent
+functionality from another codebase.
+
+This module implements triangle/quad setup for offset, unfilled and
+twoside-lit triangles. The software rasterizer doesn't handle these
+primitives directly.
+
+Hardware rasterization drivers typically use this module in situations
+where no hardware rasterization is possible, ie during total
+fallbacks.
+
+STATE
+
+To create and destroy the module:
+
+ GLboolean _swsetup_CreateContext( struct gl_context *ctx );
+ void _swsetup_DestroyContext( struct gl_context *ctx );
+
+The module is not active by default, and must be installed by calling
+_swrast_Wakeup(). This function installs internal swrast_setup
+functions into all the tnl->Driver.Render driver hooks, thus taking
+over the task of rasterization entirely:
+
+ void _swrast_Wakeup( struct gl_context *ctx );
+
+
+This module tracks state changes internally and maintains derived
+values based on the current state. For this to work, the driver
+ensure the following funciton is called whenever the state changes and
+the swsetup module is 'awake':
+
+ void _swsetup_InvalidateState( struct gl_context *ctx, GLuint new_state );
+
+There is no explicit call to put the swsetup module to sleep. Simply
+install other function pointers into all the tnl->Driver.Render.*
+hooks, and (optionally) cease calling _swsetup_InvalidateState().
+
+DRIVER INTERFACE
+
+The module offers a minimal driver interface:
+
+ void (*Start)( struct gl_context *ctx );
+ void (*Finish)( struct gl_context *ctx );
+
+These are called before and after the completion of all swrast drawing
+activity. As swrast doesn't call callbacks during triangle, line or
+point rasterization, these are necessary to provide locking hooks for
+some drivers. They may otherwise be left null.
+
+
diff --git a/mesalib/src/mesa/swrast_setup/ss_triangle.c b/mesalib/src/mesa/swrast_setup/ss_triangle.c
index 4fc9a0756..5d1c70e94 100644
--- a/mesalib/src/mesa/swrast_setup/ss_triangle.c
+++ b/mesalib/src/mesa/swrast_setup/ss_triangle.c
@@ -1,265 +1,265 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/mtypes.h"
-
-#include "tnl/t_context.h"
-
-#include "ss_triangle.h"
-#include "ss_context.h"
-
-#define SS_OFFSET_BIT 0x1
-#define SS_TWOSIDE_BIT 0x2
-#define SS_UNFILLED_BIT 0x4
-#define SS_MAX_TRIFUNC 0x8
-
-static tnl_triangle_func tri_tab[SS_MAX_TRIFUNC];
-static tnl_quad_func quad_tab[SS_MAX_TRIFUNC];
-
-
-/*
- * Render a triangle respecting edge flags.
- */
-typedef void (* swsetup_edge_render_prim_tri)(struct gl_context *ctx,
- const GLubyte *ef,
- GLuint e0,
- GLuint e1,
- GLuint e2,
- const SWvertex *v0,
- const SWvertex *v1,
- const SWvertex *v2);
-
-/*
- * Render a triangle using lines and respecting edge flags.
- */
-static void
-_swsetup_edge_render_line_tri(struct gl_context *ctx,
- const GLubyte *ef,
- GLuint e0,
- GLuint e1,
- GLuint e2,
- const SWvertex *v0,
- const SWvertex *v1,
- const SWvertex *v2)
-{
- SScontext *swsetup = SWSETUP_CONTEXT(ctx);
-
- if (swsetup->render_prim == GL_POLYGON) {
- if (ef[e2]) _swrast_Line( ctx, v2, v0 );
- if (ef[e0]) _swrast_Line( ctx, v0, v1 );
- if (ef[e1]) _swrast_Line( ctx, v1, v2 );
- } else {
- if (ef[e0]) _swrast_Line( ctx, v0, v1 );
- if (ef[e1]) _swrast_Line( ctx, v1, v2 );
- if (ef[e2]) _swrast_Line( ctx, v2, v0 );
- }
-}
-
-/*
- * Render a triangle using points and respecting edge flags.
- */
-static void
-_swsetup_edge_render_point_tri(struct gl_context *ctx,
- const GLubyte *ef,
- GLuint e0,
- GLuint e1,
- GLuint e2,
- const SWvertex *v0,
- const SWvertex *v1,
- const SWvertex *v2)
-{
- if (ef[e0]) _swrast_Point( ctx, v0 );
- if (ef[e1]) _swrast_Point( ctx, v1 );
- if (ef[e2]) _swrast_Point( ctx, v2 );
-
- _swrast_flush(ctx);
-}
-
-/*
- * Render a triangle respecting cull and shade model.
- */
-static void _swsetup_render_tri(struct gl_context *ctx,
- GLuint e0,
- GLuint e1,
- GLuint e2,
- GLuint facing,
- swsetup_edge_render_prim_tri render)
-{
- SScontext *swsetup = SWSETUP_CONTEXT(ctx);
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- GLubyte *ef = VB->EdgeFlag;
- SWvertex *verts = swsetup->verts;
- SWvertex *v0 = &verts[e0];
- SWvertex *v1 = &verts[e1];
- SWvertex *v2 = &verts[e2];
-
- /* cull testing */
- if (ctx->Polygon.CullFlag) {
- if (facing == 1 && ctx->Polygon.CullFaceMode != GL_FRONT)
- return;
- if (facing == 0 && ctx->Polygon.CullFaceMode != GL_BACK)
- return;
- }
-
- _swrast_SetFacing(ctx, facing);
-
- if (ctx->Light.ShadeModel == GL_FLAT) {
- GLchan c[2][4];
- GLfloat s[2][4];
-
- /* save colors/indexes for v0, v1 vertices */
- COPY_CHAN4(c[0], v0->color);
- COPY_CHAN4(c[1], v1->color);
- COPY_4V(s[0], v0->attrib[FRAG_ATTRIB_COL1]);
- COPY_4V(s[1], v1->attrib[FRAG_ATTRIB_COL1]);
-
- /* copy v2 color/indexes to v0, v1 indexes */
- COPY_CHAN4(v0->color, v2->color);
- COPY_CHAN4(v1->color, v2->color);
- COPY_4V(v0->attrib[FRAG_ATTRIB_COL1], v2->attrib[FRAG_ATTRIB_COL1]);
- COPY_4V(v1->attrib[FRAG_ATTRIB_COL1], v2->attrib[FRAG_ATTRIB_COL1]);
-
- render(ctx, ef, e0, e1, e2, v0, v1, v2);
-
- COPY_CHAN4(v0->color, c[0]);
- COPY_CHAN4(v1->color, c[1]);
- COPY_4V(v0->attrib[FRAG_ATTRIB_COL1], s[0]);
- COPY_4V(v1->attrib[FRAG_ATTRIB_COL1], s[1]);
- }
- else {
- render(ctx, ef, e0, e1, e2, v0, v1, v2);
- }
-}
-
-#define SS_COLOR(a,b) UNCLAMPED_FLOAT_TO_RGBA_CHAN(a,b)
-#define SS_SPEC(a,b) COPY_4V(a,b)
-#define SS_IND(a,b) (a = b)
-
-#define IND (0)
-#define TAG(x) x##_rgba
-#include "ss_tritmp.h"
-
-#define IND (SS_OFFSET_BIT)
-#define TAG(x) x##_offset_rgba
-#include "ss_tritmp.h"
-
-#define IND (SS_TWOSIDE_BIT)
-#define TAG(x) x##_twoside_rgba
-#include "ss_tritmp.h"
-
-#define IND (SS_OFFSET_BIT|SS_TWOSIDE_BIT)
-#define TAG(x) x##_offset_twoside_rgba
-#include "ss_tritmp.h"
-
-#define IND (SS_UNFILLED_BIT)
-#define TAG(x) x##_unfilled_rgba
-#include "ss_tritmp.h"
-
-#define IND (SS_OFFSET_BIT|SS_UNFILLED_BIT)
-#define TAG(x) x##_offset_unfilled_rgba
-#include "ss_tritmp.h"
-
-#define IND (SS_TWOSIDE_BIT|SS_UNFILLED_BIT)
-#define TAG(x) x##_twoside_unfilled_rgba
-#include "ss_tritmp.h"
-
-#define IND (SS_OFFSET_BIT|SS_TWOSIDE_BIT|SS_UNFILLED_BIT)
-#define TAG(x) x##_offset_twoside_unfilled_rgba
-#include "ss_tritmp.h"
-
-
-void _swsetup_trifuncs_init( struct gl_context *ctx )
-{
- (void) ctx;
-
- init_rgba();
- init_offset_rgba();
- init_twoside_rgba();
- init_offset_twoside_rgba();
- init_unfilled_rgba();
- init_offset_unfilled_rgba();
- init_twoside_unfilled_rgba();
- init_offset_twoside_unfilled_rgba();
-}
-
-
-static void swsetup_points( struct gl_context *ctx, GLuint first, GLuint last )
-{
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- SWvertex *verts = SWSETUP_CONTEXT(ctx)->verts;
- GLuint i;
-
- if (VB->Elts) {
- for (i = first; i < last; i++)
- if (VB->ClipMask[VB->Elts[i]] == 0)
- _swrast_Point( ctx, &verts[VB->Elts[i]] );
- }
- else {
- for (i = first; i < last; i++)
- if (VB->ClipMask[i] == 0)
- _swrast_Point( ctx, &verts[i] );
- }
-}
-
-static void swsetup_line( struct gl_context *ctx, GLuint v0, GLuint v1 )
-{
- SWvertex *verts = SWSETUP_CONTEXT(ctx)->verts;
- _swrast_Line( ctx, &verts[v0], &verts[v1] );
-}
-
-
-
-void _swsetup_choose_trifuncs( struct gl_context *ctx )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint ind = 0;
-
- if (ctx->Polygon.OffsetPoint ||
- ctx->Polygon.OffsetLine ||
- ctx->Polygon.OffsetFill)
- ind |= SS_OFFSET_BIT;
-
- if ((ctx->Light.Enabled && ctx->Light.Model.TwoSide) ||
- (ctx->VertexProgram._Current && ctx->VertexProgram.TwoSideEnabled))
- ind |= SS_TWOSIDE_BIT;
-
- /* We piggyback the two-sided stencil front/back determination on the
- * unfilled triangle path.
- */
- if (ctx->Polygon.FrontMode != GL_FILL ||
- ctx->Polygon.BackMode != GL_FILL ||
- (ctx->Stencil.Enabled && ctx->Stencil._TestTwoSide))
- ind |= SS_UNFILLED_BIT;
-
- tnl->Driver.Render.Triangle = tri_tab[ind];
- tnl->Driver.Render.Quad = quad_tab[ind];
- tnl->Driver.Render.Line = swsetup_line;
- tnl->Driver.Render.Points = swsetup_points;
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+#include "main/glheader.h"
+#include "main/colormac.h"
+#include "main/macros.h"
+#include "main/mtypes.h"
+
+#include "tnl/t_context.h"
+
+#include "ss_triangle.h"
+#include "ss_context.h"
+
+#define SS_OFFSET_BIT 0x1
+#define SS_TWOSIDE_BIT 0x2
+#define SS_UNFILLED_BIT 0x4
+#define SS_MAX_TRIFUNC 0x8
+
+static tnl_triangle_func tri_tab[SS_MAX_TRIFUNC];
+static tnl_quad_func quad_tab[SS_MAX_TRIFUNC];
+
+
+/*
+ * Render a triangle respecting edge flags.
+ */
+typedef void (* swsetup_edge_render_prim_tri)(struct gl_context *ctx,
+ const GLubyte *ef,
+ GLuint e0,
+ GLuint e1,
+ GLuint e2,
+ const SWvertex *v0,
+ const SWvertex *v1,
+ const SWvertex *v2);
+
+/*
+ * Render a triangle using lines and respecting edge flags.
+ */
+static void
+_swsetup_edge_render_line_tri(struct gl_context *ctx,
+ const GLubyte *ef,
+ GLuint e0,
+ GLuint e1,
+ GLuint e2,
+ const SWvertex *v0,
+ const SWvertex *v1,
+ const SWvertex *v2)
+{
+ SScontext *swsetup = SWSETUP_CONTEXT(ctx);
+
+ if (swsetup->render_prim == GL_POLYGON) {
+ if (ef[e2]) _swrast_Line( ctx, v2, v0 );
+ if (ef[e0]) _swrast_Line( ctx, v0, v1 );
+ if (ef[e1]) _swrast_Line( ctx, v1, v2 );
+ } else {
+ if (ef[e0]) _swrast_Line( ctx, v0, v1 );
+ if (ef[e1]) _swrast_Line( ctx, v1, v2 );
+ if (ef[e2]) _swrast_Line( ctx, v2, v0 );
+ }
+}
+
+/*
+ * Render a triangle using points and respecting edge flags.
+ */
+static void
+_swsetup_edge_render_point_tri(struct gl_context *ctx,
+ const GLubyte *ef,
+ GLuint e0,
+ GLuint e1,
+ GLuint e2,
+ const SWvertex *v0,
+ const SWvertex *v1,
+ const SWvertex *v2)
+{
+ if (ef[e0]) _swrast_Point( ctx, v0 );
+ if (ef[e1]) _swrast_Point( ctx, v1 );
+ if (ef[e2]) _swrast_Point( ctx, v2 );
+
+ _swrast_flush(ctx);
+}
+
+/*
+ * Render a triangle respecting cull and shade model.
+ */
+static void _swsetup_render_tri(struct gl_context *ctx,
+ GLuint e0,
+ GLuint e1,
+ GLuint e2,
+ GLuint facing,
+ swsetup_edge_render_prim_tri render)
+{
+ SScontext *swsetup = SWSETUP_CONTEXT(ctx);
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ GLubyte *ef = VB->EdgeFlag;
+ SWvertex *verts = swsetup->verts;
+ SWvertex *v0 = &verts[e0];
+ SWvertex *v1 = &verts[e1];
+ SWvertex *v2 = &verts[e2];
+
+ /* cull testing */
+ if (ctx->Polygon.CullFlag) {
+ if (facing == 1 && ctx->Polygon.CullFaceMode != GL_FRONT)
+ return;
+ if (facing == 0 && ctx->Polygon.CullFaceMode != GL_BACK)
+ return;
+ }
+
+ _swrast_SetFacing(ctx, facing);
+
+ if (ctx->Light.ShadeModel == GL_FLAT) {
+ GLchan c[2][4];
+ GLfloat s[2][4];
+
+ /* save colors/indexes for v0, v1 vertices */
+ COPY_CHAN4(c[0], v0->color);
+ COPY_CHAN4(c[1], v1->color);
+ COPY_4V(s[0], v0->attrib[FRAG_ATTRIB_COL1]);
+ COPY_4V(s[1], v1->attrib[FRAG_ATTRIB_COL1]);
+
+ /* copy v2 color/indexes to v0, v1 indexes */
+ COPY_CHAN4(v0->color, v2->color);
+ COPY_CHAN4(v1->color, v2->color);
+ COPY_4V(v0->attrib[FRAG_ATTRIB_COL1], v2->attrib[FRAG_ATTRIB_COL1]);
+ COPY_4V(v1->attrib[FRAG_ATTRIB_COL1], v2->attrib[FRAG_ATTRIB_COL1]);
+
+ render(ctx, ef, e0, e1, e2, v0, v1, v2);
+
+ COPY_CHAN4(v0->color, c[0]);
+ COPY_CHAN4(v1->color, c[1]);
+ COPY_4V(v0->attrib[FRAG_ATTRIB_COL1], s[0]);
+ COPY_4V(v1->attrib[FRAG_ATTRIB_COL1], s[1]);
+ }
+ else {
+ render(ctx, ef, e0, e1, e2, v0, v1, v2);
+ }
+}
+
+#define SS_COLOR(a,b) UNCLAMPED_FLOAT_TO_RGBA_CHAN(a,b)
+#define SS_SPEC(a,b) COPY_4V(a,b)
+#define SS_IND(a,b) (a = b)
+
+#define IND (0)
+#define TAG(x) x##_rgba
+#include "ss_tritmp.h"
+
+#define IND (SS_OFFSET_BIT)
+#define TAG(x) x##_offset_rgba
+#include "ss_tritmp.h"
+
+#define IND (SS_TWOSIDE_BIT)
+#define TAG(x) x##_twoside_rgba
+#include "ss_tritmp.h"
+
+#define IND (SS_OFFSET_BIT|SS_TWOSIDE_BIT)
+#define TAG(x) x##_offset_twoside_rgba
+#include "ss_tritmp.h"
+
+#define IND (SS_UNFILLED_BIT)
+#define TAG(x) x##_unfilled_rgba
+#include "ss_tritmp.h"
+
+#define IND (SS_OFFSET_BIT|SS_UNFILLED_BIT)
+#define TAG(x) x##_offset_unfilled_rgba
+#include "ss_tritmp.h"
+
+#define IND (SS_TWOSIDE_BIT|SS_UNFILLED_BIT)
+#define TAG(x) x##_twoside_unfilled_rgba
+#include "ss_tritmp.h"
+
+#define IND (SS_OFFSET_BIT|SS_TWOSIDE_BIT|SS_UNFILLED_BIT)
+#define TAG(x) x##_offset_twoside_unfilled_rgba
+#include "ss_tritmp.h"
+
+
+void _swsetup_trifuncs_init( struct gl_context *ctx )
+{
+ (void) ctx;
+
+ init_rgba();
+ init_offset_rgba();
+ init_twoside_rgba();
+ init_offset_twoside_rgba();
+ init_unfilled_rgba();
+ init_offset_unfilled_rgba();
+ init_twoside_unfilled_rgba();
+ init_offset_twoside_unfilled_rgba();
+}
+
+
+static void swsetup_points( struct gl_context *ctx, GLuint first, GLuint last )
+{
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ SWvertex *verts = SWSETUP_CONTEXT(ctx)->verts;
+ GLuint i;
+
+ if (VB->Elts) {
+ for (i = first; i < last; i++)
+ if (VB->ClipMask[VB->Elts[i]] == 0)
+ _swrast_Point( ctx, &verts[VB->Elts[i]] );
+ }
+ else {
+ for (i = first; i < last; i++)
+ if (VB->ClipMask[i] == 0)
+ _swrast_Point( ctx, &verts[i] );
+ }
+}
+
+static void swsetup_line( struct gl_context *ctx, GLuint v0, GLuint v1 )
+{
+ SWvertex *verts = SWSETUP_CONTEXT(ctx)->verts;
+ _swrast_Line( ctx, &verts[v0], &verts[v1] );
+}
+
+
+
+void _swsetup_choose_trifuncs( struct gl_context *ctx )
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ GLuint ind = 0;
+
+ if (ctx->Polygon.OffsetPoint ||
+ ctx->Polygon.OffsetLine ||
+ ctx->Polygon.OffsetFill)
+ ind |= SS_OFFSET_BIT;
+
+ if ((ctx->Light.Enabled && ctx->Light.Model.TwoSide) ||
+ (ctx->VertexProgram._Current && ctx->VertexProgram.TwoSideEnabled))
+ ind |= SS_TWOSIDE_BIT;
+
+ /* We piggyback the two-sided stencil front/back determination on the
+ * unfilled triangle path.
+ */
+ if (ctx->Polygon.FrontMode != GL_FILL ||
+ ctx->Polygon.BackMode != GL_FILL ||
+ (ctx->Stencil.Enabled && ctx->Stencil._TestTwoSide))
+ ind |= SS_UNFILLED_BIT;
+
+ tnl->Driver.Render.Triangle = tri_tab[ind];
+ tnl->Driver.Render.Quad = quad_tab[ind];
+ tnl->Driver.Render.Line = swsetup_line;
+ tnl->Driver.Render.Points = swsetup_points;
+}
diff --git a/mesalib/src/mesa/swrast_setup/ss_triangle.h b/mesalib/src/mesa/swrast_setup/ss_triangle.h
index e21a9749a..a027f4826 100644
--- a/mesalib/src/mesa/swrast_setup/ss_triangle.h
+++ b/mesalib/src/mesa/swrast_setup/ss_triangle.h
@@ -1,38 +1,38 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-#ifndef SS_TRIANGLE_H
-#define SS_TRIANGLE_H
-
-struct gl_context;
-
-
-void _swsetup_trifuncs_init( struct gl_context *ctx );
-void _swsetup_choose_trifuncs( struct gl_context *ctx );
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+#ifndef SS_TRIANGLE_H
+#define SS_TRIANGLE_H
+
+struct gl_context;
+
+
+void _swsetup_trifuncs_init( struct gl_context *ctx );
+void _swsetup_choose_trifuncs( struct gl_context *ctx );
+
+#endif
diff --git a/mesalib/src/mesa/swrast_setup/ss_tritmp.h b/mesalib/src/mesa/swrast_setup/ss_tritmp.h
index 9b2b7cf6a..5844ad594 100644
--- a/mesalib/src/mesa/swrast_setup/ss_tritmp.h
+++ b/mesalib/src/mesa/swrast_setup/ss_tritmp.h
@@ -1,248 +1,248 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-
-/**
- * This is where we handle assigning vertex colors based on front/back
- * facing, compute polygon offset and handle glPolygonMode().
- */
-static void TAG(triangle)(struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e2 )
-{
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- SScontext *swsetup = SWSETUP_CONTEXT(ctx);
- SWvertex *verts = SWSETUP_CONTEXT(ctx)->verts;
- SWvertex *v[3];
- GLfloat z[3];
- GLfloat offset, oz0, oz1, oz2;
- GLenum mode = GL_FILL;
- GLuint facing = 0;
- GLchan saved_color[3][4] = { { 0 } };
- GLfloat saved_col0[3][4] = { { 0 } };
- GLfloat saved_spec[3][4] = { { 0 } };
-
- v[0] = &verts[e0];
- v[1] = &verts[e1];
- v[2] = &verts[e2];
-
- if (IND & (SS_TWOSIDE_BIT | SS_OFFSET_BIT | SS_UNFILLED_BIT))
- {
- GLfloat ex = v[0]->attrib[FRAG_ATTRIB_WPOS][0] - v[2]->attrib[FRAG_ATTRIB_WPOS][0];
- GLfloat ey = v[0]->attrib[FRAG_ATTRIB_WPOS][1] - v[2]->attrib[FRAG_ATTRIB_WPOS][1];
- GLfloat fx = v[1]->attrib[FRAG_ATTRIB_WPOS][0] - v[2]->attrib[FRAG_ATTRIB_WPOS][0];
- GLfloat fy = v[1]->attrib[FRAG_ATTRIB_WPOS][1] - v[2]->attrib[FRAG_ATTRIB_WPOS][1];
- GLfloat cc = ex*fy - ey*fx;
-
- if (IND & (SS_TWOSIDE_BIT | SS_UNFILLED_BIT))
- {
- facing = (cc < 0.0) ^ ctx->Polygon._FrontBit;
-
- if (IND & SS_UNFILLED_BIT)
- mode = facing ? ctx->Polygon.BackMode : ctx->Polygon.FrontMode;
-
- if (facing == 1) {
- if (IND & SS_TWOSIDE_BIT) {
- if (VB->BackfaceColorPtr) {
- GLfloat (*vbcolor)[4] = VB->BackfaceColorPtr->data;
-
- if (swsetup->intColors) {
- COPY_CHAN4(saved_color[0], v[0]->color);
- COPY_CHAN4(saved_color[1], v[1]->color);
- COPY_CHAN4(saved_color[2], v[2]->color);
- }
- else {
- COPY_4V(saved_col0[0], v[0]->attrib[FRAG_ATTRIB_COL0]);
- COPY_4V(saved_col0[1], v[1]->attrib[FRAG_ATTRIB_COL0]);
- COPY_4V(saved_col0[2], v[2]->attrib[FRAG_ATTRIB_COL0]);
- }
-
- if (VB->BackfaceColorPtr->stride) {
- if (swsetup->intColors) {
- SS_COLOR(v[0]->color, vbcolor[e0]);
- SS_COLOR(v[1]->color, vbcolor[e1]);
- SS_COLOR(v[2]->color, vbcolor[e2]);
- }
- else {
- COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL0], vbcolor[e0]);
- COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL0], vbcolor[e1]);
- COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL0], vbcolor[e2]);
- }
- }
- else {
- /* flat shade */
- if (swsetup->intColors) {
- SS_COLOR(v[0]->color, vbcolor[0]);
- SS_COLOR(v[1]->color, vbcolor[0]);
- SS_COLOR(v[2]->color, vbcolor[0]);
- }
- else {
- COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL0], vbcolor[0]);
- COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL0], vbcolor[0]);
- COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL0], vbcolor[0]);
- }
- }
- }
-
- if (VB->BackfaceSecondaryColorPtr) {
- GLfloat (*vbspec)[4] = VB->BackfaceSecondaryColorPtr->data;
-
- COPY_4V(saved_spec[0], v[0]->attrib[FRAG_ATTRIB_COL1]);
- COPY_4V(saved_spec[1], v[1]->attrib[FRAG_ATTRIB_COL1]);
- COPY_4V(saved_spec[2], v[2]->attrib[FRAG_ATTRIB_COL1]);
-
- if (VB->BackfaceSecondaryColorPtr->stride) {
- SS_SPEC(v[0]->attrib[FRAG_ATTRIB_COL1], vbspec[e0]);
- SS_SPEC(v[1]->attrib[FRAG_ATTRIB_COL1], vbspec[e1]);
- SS_SPEC(v[2]->attrib[FRAG_ATTRIB_COL1], vbspec[e2]);
- }
- else {
- SS_SPEC(v[0]->attrib[FRAG_ATTRIB_COL1], vbspec[0]);
- SS_SPEC(v[1]->attrib[FRAG_ATTRIB_COL1], vbspec[0]);
- SS_SPEC(v[2]->attrib[FRAG_ATTRIB_COL1], vbspec[0]);
- }
- }
- }
- }
- }
-
- if (IND & SS_OFFSET_BIT) {
- const GLfloat max = ctx->DrawBuffer->_DepthMaxF;
- /* save original Z values (restored later) */
- z[0] = v[0]->attrib[FRAG_ATTRIB_WPOS][2];
- z[1] = v[1]->attrib[FRAG_ATTRIB_WPOS][2];
- z[2] = v[2]->attrib[FRAG_ATTRIB_WPOS][2];
- /* Note that Z values are already scaled to [0,65535] (for example)
- * so no MRD value is used here.
- */
- offset = ctx->Polygon.OffsetUnits;
- if (cc * cc > 1e-16) {
- const GLfloat ez = z[0] - z[2];
- const GLfloat fz = z[1] - z[2];
- const GLfloat oneOverArea = 1.0F / cc;
- const GLfloat dzdx = FABSF((ey * fz - ez * fy) * oneOverArea);
- const GLfloat dzdy = FABSF((ez * fx - ex * fz) * oneOverArea);
- offset += MAX2(dzdx, dzdy) * ctx->Polygon.OffsetFactor;
- }
- /* new Z values */
- oz0 = CLAMP(v[0]->attrib[FRAG_ATTRIB_WPOS][2] + offset, 0.0F, max);
- oz1 = CLAMP(v[1]->attrib[FRAG_ATTRIB_WPOS][2] + offset, 0.0F, max);
- oz2 = CLAMP(v[2]->attrib[FRAG_ATTRIB_WPOS][2] + offset, 0.0F, max);
- }
- }
-
- if (mode == GL_POINT) {
- if ((IND & SS_OFFSET_BIT) && ctx->Polygon.OffsetPoint) {
- v[0]->attrib[FRAG_ATTRIB_WPOS][2] = oz0;
- v[1]->attrib[FRAG_ATTRIB_WPOS][2] = oz1;
- v[2]->attrib[FRAG_ATTRIB_WPOS][2] = oz2;
- }
- _swsetup_render_tri(ctx, e0, e1, e2, facing, _swsetup_edge_render_point_tri);
- } else if (mode == GL_LINE) {
- if ((IND & SS_OFFSET_BIT) && ctx->Polygon.OffsetLine) {
- v[0]->attrib[FRAG_ATTRIB_WPOS][2] = oz0;
- v[1]->attrib[FRAG_ATTRIB_WPOS][2] = oz1;
- v[2]->attrib[FRAG_ATTRIB_WPOS][2] = oz2;
- }
- _swsetup_render_tri(ctx, e0, e1, e2, facing, _swsetup_edge_render_line_tri);
- } else {
- if ((IND & SS_OFFSET_BIT) && ctx->Polygon.OffsetFill) {
- v[0]->attrib[FRAG_ATTRIB_WPOS][2] = oz0;
- v[1]->attrib[FRAG_ATTRIB_WPOS][2] = oz1;
- v[2]->attrib[FRAG_ATTRIB_WPOS][2] = oz2;
- }
- _swrast_Triangle( ctx, v[0], v[1], v[2] );
- }
-
- /*
- * Restore original vertex colors, etc.
- */
- if (IND & SS_OFFSET_BIT) {
- v[0]->attrib[FRAG_ATTRIB_WPOS][2] = z[0];
- v[1]->attrib[FRAG_ATTRIB_WPOS][2] = z[1];
- v[2]->attrib[FRAG_ATTRIB_WPOS][2] = z[2];
- }
-
- if (IND & SS_TWOSIDE_BIT) {
- if (facing == 1) {
- if (VB->BackfaceColorPtr) {
- if (swsetup->intColors) {
- COPY_CHAN4(v[0]->color, saved_color[0]);
- COPY_CHAN4(v[1]->color, saved_color[1]);
- COPY_CHAN4(v[2]->color, saved_color[2]);
- }
- else {
- COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL0], saved_col0[0]);
- COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL0], saved_col0[1]);
- COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL0], saved_col0[2]);
- }
- }
-
- if (VB->BackfaceSecondaryColorPtr) {
- COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL1], saved_spec[0]);
- COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL1], saved_spec[1]);
- COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL1], saved_spec[2]);
- }
- }
- }
-}
-
-
-
-/* Need to fixup edgeflags when decomposing to triangles:
- */
-static void TAG(quadfunc)( struct gl_context *ctx, GLuint v0,
- GLuint v1, GLuint v2, GLuint v3 )
-{
- if (IND & SS_UNFILLED_BIT) {
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- if (VB->EdgeFlag) { /* XXX this test shouldn't be needed (bug 12614) */
- GLubyte ef1 = VB->EdgeFlag[v1];
- GLubyte ef3 = VB->EdgeFlag[v3];
- VB->EdgeFlag[v1] = 0;
- TAG(triangle)( ctx, v0, v1, v3 );
- VB->EdgeFlag[v1] = ef1;
- VB->EdgeFlag[v3] = 0;
- TAG(triangle)( ctx, v1, v2, v3 );
- VB->EdgeFlag[v3] = ef3;
- }
- } else {
- TAG(triangle)( ctx, v0, v1, v3 );
- TAG(triangle)( ctx, v1, v2, v3 );
- }
-}
-
-
-
-
-static void TAG(init)( void )
-{
- tri_tab[IND] = TAG(triangle);
- quad_tab[IND] = TAG(quadfunc);
-}
-
-
-#undef IND
-#undef TAG
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+
+/**
+ * This is where we handle assigning vertex colors based on front/back
+ * facing, compute polygon offset and handle glPolygonMode().
+ */
+static void TAG(triangle)(struct gl_context *ctx, GLuint e0, GLuint e1, GLuint e2 )
+{
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ SScontext *swsetup = SWSETUP_CONTEXT(ctx);
+ SWvertex *verts = SWSETUP_CONTEXT(ctx)->verts;
+ SWvertex *v[3];
+ GLfloat z[3];
+ GLfloat offset, oz0, oz1, oz2;
+ GLenum mode = GL_FILL;
+ GLuint facing = 0;
+ GLchan saved_color[3][4] = { { 0 } };
+ GLfloat saved_col0[3][4] = { { 0 } };
+ GLfloat saved_spec[3][4] = { { 0 } };
+
+ v[0] = &verts[e0];
+ v[1] = &verts[e1];
+ v[2] = &verts[e2];
+
+ if (IND & (SS_TWOSIDE_BIT | SS_OFFSET_BIT | SS_UNFILLED_BIT))
+ {
+ GLfloat ex = v[0]->attrib[FRAG_ATTRIB_WPOS][0] - v[2]->attrib[FRAG_ATTRIB_WPOS][0];
+ GLfloat ey = v[0]->attrib[FRAG_ATTRIB_WPOS][1] - v[2]->attrib[FRAG_ATTRIB_WPOS][1];
+ GLfloat fx = v[1]->attrib[FRAG_ATTRIB_WPOS][0] - v[2]->attrib[FRAG_ATTRIB_WPOS][0];
+ GLfloat fy = v[1]->attrib[FRAG_ATTRIB_WPOS][1] - v[2]->attrib[FRAG_ATTRIB_WPOS][1];
+ GLfloat cc = ex*fy - ey*fx;
+
+ if (IND & (SS_TWOSIDE_BIT | SS_UNFILLED_BIT))
+ {
+ facing = (cc < 0.0) ^ ctx->Polygon._FrontBit;
+
+ if (IND & SS_UNFILLED_BIT)
+ mode = facing ? ctx->Polygon.BackMode : ctx->Polygon.FrontMode;
+
+ if (facing == 1) {
+ if (IND & SS_TWOSIDE_BIT) {
+ if (VB->BackfaceColorPtr) {
+ GLfloat (*vbcolor)[4] = VB->BackfaceColorPtr->data;
+
+ if (swsetup->intColors) {
+ COPY_CHAN4(saved_color[0], v[0]->color);
+ COPY_CHAN4(saved_color[1], v[1]->color);
+ COPY_CHAN4(saved_color[2], v[2]->color);
+ }
+ else {
+ COPY_4V(saved_col0[0], v[0]->attrib[FRAG_ATTRIB_COL0]);
+ COPY_4V(saved_col0[1], v[1]->attrib[FRAG_ATTRIB_COL0]);
+ COPY_4V(saved_col0[2], v[2]->attrib[FRAG_ATTRIB_COL0]);
+ }
+
+ if (VB->BackfaceColorPtr->stride) {
+ if (swsetup->intColors) {
+ SS_COLOR(v[0]->color, vbcolor[e0]);
+ SS_COLOR(v[1]->color, vbcolor[e1]);
+ SS_COLOR(v[2]->color, vbcolor[e2]);
+ }
+ else {
+ COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL0], vbcolor[e0]);
+ COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL0], vbcolor[e1]);
+ COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL0], vbcolor[e2]);
+ }
+ }
+ else {
+ /* flat shade */
+ if (swsetup->intColors) {
+ SS_COLOR(v[0]->color, vbcolor[0]);
+ SS_COLOR(v[1]->color, vbcolor[0]);
+ SS_COLOR(v[2]->color, vbcolor[0]);
+ }
+ else {
+ COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL0], vbcolor[0]);
+ COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL0], vbcolor[0]);
+ COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL0], vbcolor[0]);
+ }
+ }
+ }
+
+ if (VB->BackfaceSecondaryColorPtr) {
+ GLfloat (*vbspec)[4] = VB->BackfaceSecondaryColorPtr->data;
+
+ COPY_4V(saved_spec[0], v[0]->attrib[FRAG_ATTRIB_COL1]);
+ COPY_4V(saved_spec[1], v[1]->attrib[FRAG_ATTRIB_COL1]);
+ COPY_4V(saved_spec[2], v[2]->attrib[FRAG_ATTRIB_COL1]);
+
+ if (VB->BackfaceSecondaryColorPtr->stride) {
+ SS_SPEC(v[0]->attrib[FRAG_ATTRIB_COL1], vbspec[e0]);
+ SS_SPEC(v[1]->attrib[FRAG_ATTRIB_COL1], vbspec[e1]);
+ SS_SPEC(v[2]->attrib[FRAG_ATTRIB_COL1], vbspec[e2]);
+ }
+ else {
+ SS_SPEC(v[0]->attrib[FRAG_ATTRIB_COL1], vbspec[0]);
+ SS_SPEC(v[1]->attrib[FRAG_ATTRIB_COL1], vbspec[0]);
+ SS_SPEC(v[2]->attrib[FRAG_ATTRIB_COL1], vbspec[0]);
+ }
+ }
+ }
+ }
+ }
+
+ if (IND & SS_OFFSET_BIT) {
+ const GLfloat max = ctx->DrawBuffer->_DepthMaxF;
+ /* save original Z values (restored later) */
+ z[0] = v[0]->attrib[FRAG_ATTRIB_WPOS][2];
+ z[1] = v[1]->attrib[FRAG_ATTRIB_WPOS][2];
+ z[2] = v[2]->attrib[FRAG_ATTRIB_WPOS][2];
+ /* Note that Z values are already scaled to [0,65535] (for example)
+ * so no MRD value is used here.
+ */
+ offset = ctx->Polygon.OffsetUnits;
+ if (cc * cc > 1e-16) {
+ const GLfloat ez = z[0] - z[2];
+ const GLfloat fz = z[1] - z[2];
+ const GLfloat oneOverArea = 1.0F / cc;
+ const GLfloat dzdx = FABSF((ey * fz - ez * fy) * oneOverArea);
+ const GLfloat dzdy = FABSF((ez * fx - ex * fz) * oneOverArea);
+ offset += MAX2(dzdx, dzdy) * ctx->Polygon.OffsetFactor;
+ }
+ /* new Z values */
+ oz0 = CLAMP(v[0]->attrib[FRAG_ATTRIB_WPOS][2] + offset, 0.0F, max);
+ oz1 = CLAMP(v[1]->attrib[FRAG_ATTRIB_WPOS][2] + offset, 0.0F, max);
+ oz2 = CLAMP(v[2]->attrib[FRAG_ATTRIB_WPOS][2] + offset, 0.0F, max);
+ }
+ }
+
+ if (mode == GL_POINT) {
+ if ((IND & SS_OFFSET_BIT) && ctx->Polygon.OffsetPoint) {
+ v[0]->attrib[FRAG_ATTRIB_WPOS][2] = oz0;
+ v[1]->attrib[FRAG_ATTRIB_WPOS][2] = oz1;
+ v[2]->attrib[FRAG_ATTRIB_WPOS][2] = oz2;
+ }
+ _swsetup_render_tri(ctx, e0, e1, e2, facing, _swsetup_edge_render_point_tri);
+ } else if (mode == GL_LINE) {
+ if ((IND & SS_OFFSET_BIT) && ctx->Polygon.OffsetLine) {
+ v[0]->attrib[FRAG_ATTRIB_WPOS][2] = oz0;
+ v[1]->attrib[FRAG_ATTRIB_WPOS][2] = oz1;
+ v[2]->attrib[FRAG_ATTRIB_WPOS][2] = oz2;
+ }
+ _swsetup_render_tri(ctx, e0, e1, e2, facing, _swsetup_edge_render_line_tri);
+ } else {
+ if ((IND & SS_OFFSET_BIT) && ctx->Polygon.OffsetFill) {
+ v[0]->attrib[FRAG_ATTRIB_WPOS][2] = oz0;
+ v[1]->attrib[FRAG_ATTRIB_WPOS][2] = oz1;
+ v[2]->attrib[FRAG_ATTRIB_WPOS][2] = oz2;
+ }
+ _swrast_Triangle( ctx, v[0], v[1], v[2] );
+ }
+
+ /*
+ * Restore original vertex colors, etc.
+ */
+ if (IND & SS_OFFSET_BIT) {
+ v[0]->attrib[FRAG_ATTRIB_WPOS][2] = z[0];
+ v[1]->attrib[FRAG_ATTRIB_WPOS][2] = z[1];
+ v[2]->attrib[FRAG_ATTRIB_WPOS][2] = z[2];
+ }
+
+ if (IND & SS_TWOSIDE_BIT) {
+ if (facing == 1) {
+ if (VB->BackfaceColorPtr) {
+ if (swsetup->intColors) {
+ COPY_CHAN4(v[0]->color, saved_color[0]);
+ COPY_CHAN4(v[1]->color, saved_color[1]);
+ COPY_CHAN4(v[2]->color, saved_color[2]);
+ }
+ else {
+ COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL0], saved_col0[0]);
+ COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL0], saved_col0[1]);
+ COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL0], saved_col0[2]);
+ }
+ }
+
+ if (VB->BackfaceSecondaryColorPtr) {
+ COPY_4V(v[0]->attrib[FRAG_ATTRIB_COL1], saved_spec[0]);
+ COPY_4V(v[1]->attrib[FRAG_ATTRIB_COL1], saved_spec[1]);
+ COPY_4V(v[2]->attrib[FRAG_ATTRIB_COL1], saved_spec[2]);
+ }
+ }
+ }
+}
+
+
+
+/* Need to fixup edgeflags when decomposing to triangles:
+ */
+static void TAG(quadfunc)( struct gl_context *ctx, GLuint v0,
+ GLuint v1, GLuint v2, GLuint v3 )
+{
+ if (IND & SS_UNFILLED_BIT) {
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ if (VB->EdgeFlag) { /* XXX this test shouldn't be needed (bug 12614) */
+ GLubyte ef1 = VB->EdgeFlag[v1];
+ GLubyte ef3 = VB->EdgeFlag[v3];
+ VB->EdgeFlag[v1] = 0;
+ TAG(triangle)( ctx, v0, v1, v3 );
+ VB->EdgeFlag[v1] = ef1;
+ VB->EdgeFlag[v3] = 0;
+ TAG(triangle)( ctx, v1, v2, v3 );
+ VB->EdgeFlag[v3] = ef3;
+ }
+ } else {
+ TAG(triangle)( ctx, v0, v1, v3 );
+ TAG(triangle)( ctx, v1, v2, v3 );
+ }
+}
+
+
+
+
+static void TAG(init)( void )
+{
+ tri_tab[IND] = TAG(triangle);
+ quad_tab[IND] = TAG(quadfunc);
+}
+
+
+#undef IND
+#undef TAG
diff --git a/mesalib/src/mesa/swrast_setup/ss_vb.h b/mesalib/src/mesa/swrast_setup/ss_vb.h
index 35d5da6f7..05e665b5c 100644
--- a/mesalib/src/mesa/swrast_setup/ss_vb.h
+++ b/mesalib/src/mesa/swrast_setup/ss_vb.h
@@ -1,37 +1,37 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-#ifndef SS_VB_H
-#define SS_VB_H
-
-struct gl_context;
-
-void _swsetup_vb_init( struct gl_context *ctx );
-void _swsetup_choose_rastersetup_func( struct gl_context *ctx );
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+#ifndef SS_VB_H
+#define SS_VB_H
+
+struct gl_context;
+
+void _swsetup_vb_init( struct gl_context *ctx );
+void _swsetup_choose_rastersetup_func( struct gl_context *ctx );
+
+#endif
diff --git a/mesalib/src/mesa/swrast_setup/swrast_setup.h b/mesalib/src/mesa/swrast_setup/swrast_setup.h
index 6d82ef58f..1d87ec108 100644
--- a/mesalib/src/mesa/swrast_setup/swrast_setup.h
+++ b/mesalib/src/mesa/swrast_setup/swrast_setup.h
@@ -1,61 +1,61 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-/* Public interface to the swrast_setup module. This module provides
- * an implementation of the driver interface to t_vb_render.c, and uses
- * the software rasterizer (swrast) to perform actual rasterization.
- *
- * The internals of the implementation are private, but can be hooked
- * into tnl at any time (except between RenderStart/RenderEnd) by
- * calling _swsetup_Wakeup().
- */
-
-#ifndef SWRAST_SETUP_H
-#define SWRAST_SETUP_H
-
-#include "swrast/swrast.h"
-
-extern GLboolean
-_swsetup_CreateContext( struct gl_context *ctx );
-
-extern void
-_swsetup_DestroyContext( struct gl_context *ctx );
-
-extern void
-_swsetup_InvalidateState( struct gl_context *ctx, GLuint new_state );
-
-extern void
-_swsetup_Wakeup( struct gl_context *ctx );
-
-/* Helper function to translate a hardware vertex (as understood by
- * the tnl/t_vertex.c code) to a swrast vertex.
- */
-extern void
-_swsetup_Translate( struct gl_context *ctx, const void *vertex, SWvertex *dest );
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+/* Public interface to the swrast_setup module. This module provides
+ * an implementation of the driver interface to t_vb_render.c, and uses
+ * the software rasterizer (swrast) to perform actual rasterization.
+ *
+ * The internals of the implementation are private, but can be hooked
+ * into tnl at any time (except between RenderStart/RenderEnd) by
+ * calling _swsetup_Wakeup().
+ */
+
+#ifndef SWRAST_SETUP_H
+#define SWRAST_SETUP_H
+
+#include "swrast/swrast.h"
+
+extern GLboolean
+_swsetup_CreateContext( struct gl_context *ctx );
+
+extern void
+_swsetup_DestroyContext( struct gl_context *ctx );
+
+extern void
+_swsetup_InvalidateState( struct gl_context *ctx, GLuint new_state );
+
+extern void
+_swsetup_Wakeup( struct gl_context *ctx );
+
+/* Helper function to translate a hardware vertex (as understood by
+ * the tnl/t_vertex.c code) to a swrast vertex.
+ */
+extern void
+_swsetup_Translate( struct gl_context *ctx, const void *vertex, SWvertex *dest );
+
+#endif
diff --git a/mesalib/src/mesa/tnl/t_pipeline.h b/mesalib/src/mesa/tnl/t_pipeline.h
index 579207889..0eb03395c 100644
--- a/mesalib/src/mesa/tnl/t_pipeline.h
+++ b/mesalib/src/mesa/tnl/t_pipeline.h
@@ -1,73 +1,73 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.3
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-
-
-#ifndef _T_PIPELINE_H_
-#define _T_PIPELINE_H_
-
-#include "main/mtypes.h"
-#include "t_context.h"
-
-extern void _tnl_run_pipeline( struct gl_context *ctx );
-
-extern void _tnl_destroy_pipeline( struct gl_context *ctx );
-
-extern void _tnl_install_pipeline( struct gl_context *ctx,
- const struct tnl_pipeline_stage **stages );
-
-
-/* These are implemented in the t_vb_*.c files:
- */
-extern const struct tnl_pipeline_stage _tnl_vertex_transform_stage;
-extern const struct tnl_pipeline_stage _tnl_normal_transform_stage;
-extern const struct tnl_pipeline_stage _tnl_lighting_stage;
-extern const struct tnl_pipeline_stage _tnl_fog_coordinate_stage;
-extern const struct tnl_pipeline_stage _tnl_texgen_stage;
-extern const struct tnl_pipeline_stage _tnl_texture_transform_stage;
-extern const struct tnl_pipeline_stage _tnl_point_attenuation_stage;
-extern const struct tnl_pipeline_stage _tnl_vertex_program_stage;
-extern const struct tnl_pipeline_stage _tnl_render_stage;
-
-/* Shorthand to plug in the default pipeline:
- */
-extern const struct tnl_pipeline_stage *_tnl_default_pipeline[];
-extern const struct tnl_pipeline_stage *_tnl_vp_pipeline[];
-
-
-/* Convenience routines provided by t_vb_render.c:
- */
-extern tnl_render_func _tnl_render_tab_elts[];
-extern tnl_render_func _tnl_render_tab_verts[];
-
-extern void _tnl_RenderClippedPolygon( struct gl_context *ctx,
- const GLuint *elts, GLuint n );
-
-extern void _tnl_RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj );
-
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.3
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+
+
+#ifndef _T_PIPELINE_H_
+#define _T_PIPELINE_H_
+
+#include "main/mtypes.h"
+#include "t_context.h"
+
+extern void _tnl_run_pipeline( struct gl_context *ctx );
+
+extern void _tnl_destroy_pipeline( struct gl_context *ctx );
+
+extern void _tnl_install_pipeline( struct gl_context *ctx,
+ const struct tnl_pipeline_stage **stages );
+
+
+/* These are implemented in the t_vb_*.c files:
+ */
+extern const struct tnl_pipeline_stage _tnl_vertex_transform_stage;
+extern const struct tnl_pipeline_stage _tnl_normal_transform_stage;
+extern const struct tnl_pipeline_stage _tnl_lighting_stage;
+extern const struct tnl_pipeline_stage _tnl_fog_coordinate_stage;
+extern const struct tnl_pipeline_stage _tnl_texgen_stage;
+extern const struct tnl_pipeline_stage _tnl_texture_transform_stage;
+extern const struct tnl_pipeline_stage _tnl_point_attenuation_stage;
+extern const struct tnl_pipeline_stage _tnl_vertex_program_stage;
+extern const struct tnl_pipeline_stage _tnl_render_stage;
+
+/* Shorthand to plug in the default pipeline:
+ */
+extern const struct tnl_pipeline_stage *_tnl_default_pipeline[];
+extern const struct tnl_pipeline_stage *_tnl_vp_pipeline[];
+
+
+/* Convenience routines provided by t_vb_render.c:
+ */
+extern tnl_render_func _tnl_render_tab_elts[];
+extern tnl_render_func _tnl_render_tab_verts[];
+
+extern void _tnl_RenderClippedPolygon( struct gl_context *ctx,
+ const GLuint *elts, GLuint n );
+
+extern void _tnl_RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj );
+
+
+#endif
diff --git a/mesalib/src/mesa/tnl/t_vb_fog.c b/mesalib/src/mesa/tnl/t_vb_fog.c
index 3e5c99735..cbd8dfc96 100644
--- a/mesalib/src/mesa/tnl/t_vb_fog.c
+++ b/mesalib/src/mesa/tnl/t_vb_fog.c
@@ -1,276 +1,276 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/imports.h"
-#include "main/mtypes.h"
-
-#include "math/m_xform.h"
-
-#include "t_context.h"
-#include "t_pipeline.h"
-
-
-struct fog_stage_data {
- GLvector4f fogcoord; /* has actual storage allocated */
-};
-
-#define FOG_STAGE_DATA(stage) ((struct fog_stage_data *)stage->privatePtr)
-
-#define FOG_EXP_TABLE_SIZE 256
-#define FOG_MAX (10.0)
-#define EXP_FOG_MAX .0006595
-#define FOG_INCR (FOG_MAX/FOG_EXP_TABLE_SIZE)
-static GLfloat exp_table[FOG_EXP_TABLE_SIZE];
-static GLfloat inited = 0;
-
-#if 1
-#define NEG_EXP( result, narg ) \
-do { \
- GLfloat f = (GLfloat) (narg * (1.0/FOG_INCR)); \
- GLint k = (GLint) f; \
- if (k > FOG_EXP_TABLE_SIZE-2) \
- result = (GLfloat) EXP_FOG_MAX; \
- else \
- result = exp_table[k] + (f-k)*(exp_table[k+1]-exp_table[k]); \
-} while (0)
-#else
-#define NEG_EXP( result, narg ) \
-do { \
- result = exp(-narg); \
-} while (0)
-#endif
-
-
-/**
- * Initialize the exp_table[] lookup table for approximating exp().
- */
-static void
-init_static_data( void )
-{
- GLfloat f = 0.0F;
- GLint i = 0;
- for ( ; i < FOG_EXP_TABLE_SIZE ; i++, f += FOG_INCR) {
- exp_table[i] = EXPF(-f);
- }
- inited = 1;
-}
-
-
-/**
- * Compute per-vertex fog blend factors from fog coordinates by
- * evaluating the GL_LINEAR, GL_EXP or GL_EXP2 fog function.
- * Fog coordinates are distances from the eye (typically between the
- * near and far clip plane distances).
- * Note that fogcoords may be negative, if eye z is source absolute
- * value must be taken earlier.
- * Fog blend factors are in the range [0,1].
- */
-static void
-compute_fog_blend_factors(struct gl_context *ctx, GLvector4f *out, const GLvector4f *in)
-{
- GLfloat end = ctx->Fog.End;
- GLfloat *v = in->start;
- GLuint stride = in->stride;
- GLuint n = in->count;
- GLfloat (*data)[4] = out->data;
- GLfloat d;
- GLuint i;
-
- out->count = in->count;
-
- switch (ctx->Fog.Mode) {
- case GL_LINEAR:
- if (ctx->Fog.Start == ctx->Fog.End)
- d = 1.0F;
- else
- d = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
- for ( i = 0 ; i < n ; i++, STRIDE_F(v, stride)) {
- const GLfloat z = *v;
- GLfloat f = (end - z) * d;
- data[i][0] = CLAMP(f, 0.0F, 1.0F);
- }
- break;
- case GL_EXP:
- d = ctx->Fog.Density;
- for ( i = 0 ; i < n ; i++, STRIDE_F(v,stride)) {
- const GLfloat z = *v;
- NEG_EXP( data[i][0], d * z );
- }
- break;
- case GL_EXP2:
- d = ctx->Fog.Density*ctx->Fog.Density;
- for ( i = 0 ; i < n ; i++, STRIDE_F(v, stride)) {
- const GLfloat z = *v;
- NEG_EXP( data[i][0], d * z * z );
- }
- break;
- default:
- _mesa_problem(ctx, "Bad fog mode in make_fog_coord");
- return;
- }
-}
-
-
-static GLboolean
-run_fog_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
- struct fog_stage_data *store = FOG_STAGE_DATA(stage);
- GLvector4f *input;
-
-
- if (!ctx->Fog.Enabled)
- return GL_TRUE;
-
- if (ctx->Fog.FogCoordinateSource == GL_FRAGMENT_DEPTH_EXT && !ctx->VertexProgram._Current) {
- GLuint i;
- GLfloat *coord;
- /* Fog is computed from vertex or fragment Z values */
- /* source = VB->AttribPtr[_TNL_ATTRIB_POS] or VB->EyePtr coords */
- /* dest = VB->AttribPtr[_TNL_ATTRIB_FOG] = fog stage private storage */
- VB->AttribPtr[_TNL_ATTRIB_FOG] = &store->fogcoord;
-
- if (!ctx->_NeedEyeCoords) {
- /* compute fog coords from object coords */
- const GLfloat *m = ctx->ModelviewMatrixStack.Top->m;
- GLfloat plane[4];
-
- /* Use this to store calculated eye z values:
- */
- input = &store->fogcoord;
-
- plane[0] = m[2];
- plane[1] = m[6];
- plane[2] = m[10];
- plane[3] = m[14];
- /* Full eye coords weren't required, just calculate the
- * eye Z values.
- */
- _mesa_dotprod_tab[VB->AttribPtr[_TNL_ATTRIB_POS]->size]
- ( (GLfloat *) input->data,
- 4 * sizeof(GLfloat),
- VB->AttribPtr[_TNL_ATTRIB_POS], plane );
-
- input->count = VB->AttribPtr[_TNL_ATTRIB_POS]->count;
-
- /* make sure coords are really positive
- NOTE should avoid going through array twice */
- coord = input->start;
- for (i = 0; i < input->count; i++) {
- *coord = FABSF(*coord);
- STRIDE_F(coord, input->stride);
- }
- }
- else {
- /* fog coordinates = eye Z coordinates - need to copy for ABS */
- input = &store->fogcoord;
-
- if (VB->EyePtr->size < 2)
- _mesa_vector4f_clean_elem( VB->EyePtr, VB->Count, 2 );
-
- input->stride = 4 * sizeof(GLfloat);
- input->count = VB->EyePtr->count;
- coord = VB->EyePtr->start;
- for (i = 0 ; i < VB->EyePtr->count; i++) {
- input->data[i][0] = FABSF(coord[2]);
- STRIDE_F(coord, VB->EyePtr->stride);
- }
- }
- }
- else {
- /* use glFogCoord() coordinates */
- input = VB->AttribPtr[_TNL_ATTRIB_FOG]; /* source data */
-
- /* input->count may be one if glFogCoord was only called once
- * before glBegin. But we need to compute fog for all vertices.
- */
- input->count = VB->AttribPtr[_TNL_ATTRIB_POS]->count;
-
- VB->AttribPtr[_TNL_ATTRIB_FOG] = &store->fogcoord; /* dest data */
- }
-
- if (tnl->_DoVertexFog) {
- /* compute blend factors from fog coordinates */
- compute_fog_blend_factors( ctx, VB->AttribPtr[_TNL_ATTRIB_FOG], input );
- }
- else {
- /* results = incoming fog coords (compute fog per-fragment later) */
- VB->AttribPtr[_TNL_ATTRIB_FOG] = input;
- }
-
- return GL_TRUE;
-}
-
-
-
-/* Called the first time stage->run() is invoked.
- */
-static GLboolean
-alloc_fog_data(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct fog_stage_data *store;
- stage->privatePtr = MALLOC(sizeof(*store));
- store = FOG_STAGE_DATA(stage);
- if (!store)
- return GL_FALSE;
-
- _mesa_vector4f_alloc( &store->fogcoord, 0, tnl->vb.Size, 32 );
-
- if (!inited)
- init_static_data();
-
- return GL_TRUE;
-}
-
-
-static void
-free_fog_data(struct tnl_pipeline_stage *stage)
-{
- struct fog_stage_data *store = FOG_STAGE_DATA(stage);
- if (store) {
- _mesa_vector4f_free( &store->fogcoord );
- FREE( store );
- stage->privatePtr = NULL;
- }
-}
-
-
-const struct tnl_pipeline_stage _tnl_fog_coordinate_stage =
-{
- "build fog coordinates", /* name */
- NULL, /* private_data */
- alloc_fog_data, /* dtr */
- free_fog_data, /* dtr */
- NULL, /* check */
- run_fog_stage /* run -- initially set to init. */
-};
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+
+#include "main/glheader.h"
+#include "main/colormac.h"
+#include "main/macros.h"
+#include "main/imports.h"
+#include "main/mtypes.h"
+
+#include "math/m_xform.h"
+
+#include "t_context.h"
+#include "t_pipeline.h"
+
+
+struct fog_stage_data {
+ GLvector4f fogcoord; /* has actual storage allocated */
+};
+
+#define FOG_STAGE_DATA(stage) ((struct fog_stage_data *)stage->privatePtr)
+
+#define FOG_EXP_TABLE_SIZE 256
+#define FOG_MAX (10.0)
+#define EXP_FOG_MAX .0006595
+#define FOG_INCR (FOG_MAX/FOG_EXP_TABLE_SIZE)
+static GLfloat exp_table[FOG_EXP_TABLE_SIZE];
+static GLfloat inited = 0;
+
+#if 1
+#define NEG_EXP( result, narg ) \
+do { \
+ GLfloat f = (GLfloat) (narg * (1.0/FOG_INCR)); \
+ GLint k = (GLint) f; \
+ if (k > FOG_EXP_TABLE_SIZE-2) \
+ result = (GLfloat) EXP_FOG_MAX; \
+ else \
+ result = exp_table[k] + (f-k)*(exp_table[k+1]-exp_table[k]); \
+} while (0)
+#else
+#define NEG_EXP( result, narg ) \
+do { \
+ result = exp(-narg); \
+} while (0)
+#endif
+
+
+/**
+ * Initialize the exp_table[] lookup table for approximating exp().
+ */
+static void
+init_static_data( void )
+{
+ GLfloat f = 0.0F;
+ GLint i = 0;
+ for ( ; i < FOG_EXP_TABLE_SIZE ; i++, f += FOG_INCR) {
+ exp_table[i] = EXPF(-f);
+ }
+ inited = 1;
+}
+
+
+/**
+ * Compute per-vertex fog blend factors from fog coordinates by
+ * evaluating the GL_LINEAR, GL_EXP or GL_EXP2 fog function.
+ * Fog coordinates are distances from the eye (typically between the
+ * near and far clip plane distances).
+ * Note that fogcoords may be negative, if eye z is source absolute
+ * value must be taken earlier.
+ * Fog blend factors are in the range [0,1].
+ */
+static void
+compute_fog_blend_factors(struct gl_context *ctx, GLvector4f *out, const GLvector4f *in)
+{
+ GLfloat end = ctx->Fog.End;
+ GLfloat *v = in->start;
+ GLuint stride = in->stride;
+ GLuint n = in->count;
+ GLfloat (*data)[4] = out->data;
+ GLfloat d;
+ GLuint i;
+
+ out->count = in->count;
+
+ switch (ctx->Fog.Mode) {
+ case GL_LINEAR:
+ if (ctx->Fog.Start == ctx->Fog.End)
+ d = 1.0F;
+ else
+ d = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
+ for ( i = 0 ; i < n ; i++, STRIDE_F(v, stride)) {
+ const GLfloat z = *v;
+ GLfloat f = (end - z) * d;
+ data[i][0] = CLAMP(f, 0.0F, 1.0F);
+ }
+ break;
+ case GL_EXP:
+ d = ctx->Fog.Density;
+ for ( i = 0 ; i < n ; i++, STRIDE_F(v,stride)) {
+ const GLfloat z = *v;
+ NEG_EXP( data[i][0], d * z );
+ }
+ break;
+ case GL_EXP2:
+ d = ctx->Fog.Density*ctx->Fog.Density;
+ for ( i = 0 ; i < n ; i++, STRIDE_F(v, stride)) {
+ const GLfloat z = *v;
+ NEG_EXP( data[i][0], d * z * z );
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "Bad fog mode in make_fog_coord");
+ return;
+ }
+}
+
+
+static GLboolean
+run_fog_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ struct vertex_buffer *VB = &tnl->vb;
+ struct fog_stage_data *store = FOG_STAGE_DATA(stage);
+ GLvector4f *input;
+
+
+ if (!ctx->Fog.Enabled)
+ return GL_TRUE;
+
+ if (ctx->Fog.FogCoordinateSource == GL_FRAGMENT_DEPTH_EXT && !ctx->VertexProgram._Current) {
+ GLuint i;
+ GLfloat *coord;
+ /* Fog is computed from vertex or fragment Z values */
+ /* source = VB->AttribPtr[_TNL_ATTRIB_POS] or VB->EyePtr coords */
+ /* dest = VB->AttribPtr[_TNL_ATTRIB_FOG] = fog stage private storage */
+ VB->AttribPtr[_TNL_ATTRIB_FOG] = &store->fogcoord;
+
+ if (!ctx->_NeedEyeCoords) {
+ /* compute fog coords from object coords */
+ const GLfloat *m = ctx->ModelviewMatrixStack.Top->m;
+ GLfloat plane[4];
+
+ /* Use this to store calculated eye z values:
+ */
+ input = &store->fogcoord;
+
+ plane[0] = m[2];
+ plane[1] = m[6];
+ plane[2] = m[10];
+ plane[3] = m[14];
+ /* Full eye coords weren't required, just calculate the
+ * eye Z values.
+ */
+ _mesa_dotprod_tab[VB->AttribPtr[_TNL_ATTRIB_POS]->size]
+ ( (GLfloat *) input->data,
+ 4 * sizeof(GLfloat),
+ VB->AttribPtr[_TNL_ATTRIB_POS], plane );
+
+ input->count = VB->AttribPtr[_TNL_ATTRIB_POS]->count;
+
+ /* make sure coords are really positive
+ NOTE should avoid going through array twice */
+ coord = input->start;
+ for (i = 0; i < input->count; i++) {
+ *coord = FABSF(*coord);
+ STRIDE_F(coord, input->stride);
+ }
+ }
+ else {
+ /* fog coordinates = eye Z coordinates - need to copy for ABS */
+ input = &store->fogcoord;
+
+ if (VB->EyePtr->size < 2)
+ _mesa_vector4f_clean_elem( VB->EyePtr, VB->Count, 2 );
+
+ input->stride = 4 * sizeof(GLfloat);
+ input->count = VB->EyePtr->count;
+ coord = VB->EyePtr->start;
+ for (i = 0 ; i < VB->EyePtr->count; i++) {
+ input->data[i][0] = FABSF(coord[2]);
+ STRIDE_F(coord, VB->EyePtr->stride);
+ }
+ }
+ }
+ else {
+ /* use glFogCoord() coordinates */
+ input = VB->AttribPtr[_TNL_ATTRIB_FOG]; /* source data */
+
+ /* input->count may be one if glFogCoord was only called once
+ * before glBegin. But we need to compute fog for all vertices.
+ */
+ input->count = VB->AttribPtr[_TNL_ATTRIB_POS]->count;
+
+ VB->AttribPtr[_TNL_ATTRIB_FOG] = &store->fogcoord; /* dest data */
+ }
+
+ if (tnl->_DoVertexFog) {
+ /* compute blend factors from fog coordinates */
+ compute_fog_blend_factors( ctx, VB->AttribPtr[_TNL_ATTRIB_FOG], input );
+ }
+ else {
+ /* results = incoming fog coords (compute fog per-fragment later) */
+ VB->AttribPtr[_TNL_ATTRIB_FOG] = input;
+ }
+
+ return GL_TRUE;
+}
+
+
+
+/* Called the first time stage->run() is invoked.
+ */
+static GLboolean
+alloc_fog_data(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ struct fog_stage_data *store;
+ stage->privatePtr = MALLOC(sizeof(*store));
+ store = FOG_STAGE_DATA(stage);
+ if (!store)
+ return GL_FALSE;
+
+ _mesa_vector4f_alloc( &store->fogcoord, 0, tnl->vb.Size, 32 );
+
+ if (!inited)
+ init_static_data();
+
+ return GL_TRUE;
+}
+
+
+static void
+free_fog_data(struct tnl_pipeline_stage *stage)
+{
+ struct fog_stage_data *store = FOG_STAGE_DATA(stage);
+ if (store) {
+ _mesa_vector4f_free( &store->fogcoord );
+ FREE( store );
+ stage->privatePtr = NULL;
+ }
+}
+
+
+const struct tnl_pipeline_stage _tnl_fog_coordinate_stage =
+{
+ "build fog coordinates", /* name */
+ NULL, /* private_data */
+ alloc_fog_data, /* dtr */
+ free_fog_data, /* dtr */
+ NULL, /* check */
+ run_fog_stage /* run -- initially set to init. */
+};
diff --git a/mesalib/src/mesa/tnl/t_vb_normals.c b/mesalib/src/mesa/tnl/t_vb_normals.c
index 94e8d0ab5..c19b48e51 100644
--- a/mesalib/src/mesa/tnl/t_vb_normals.c
+++ b/mesalib/src/mesa/tnl/t_vb_normals.c
@@ -1,187 +1,187 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/imports.h"
-#include "main/mtypes.h"
-
-#include "math/m_xform.h"
-
-#include "t_context.h"
-#include "t_pipeline.h"
-
-
-struct normal_stage_data {
- normal_func NormalTransform;
- GLvector4f normal;
-};
-
-#define NORMAL_STAGE_DATA(stage) ((struct normal_stage_data *)stage->privatePtr)
-
-
-static GLboolean
-run_normal_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
-{
- struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- const GLfloat *lengths;
-
- if (!store->NormalTransform)
- return GL_TRUE;
-
- /* We can only use the display list's saved normal lengths if we've
- * got a transformation matrix with uniform scaling.
- */
- if (_math_matrix_is_general_scale(ctx->ModelviewMatrixStack.Top))
- lengths = NULL;
- else
- lengths = VB->NormalLengthPtr;
-
- store->NormalTransform( ctx->ModelviewMatrixStack.Top,
- ctx->_ModelViewInvScale,
- VB->AttribPtr[_TNL_ATTRIB_NORMAL], /* input normals */
- lengths,
- &store->normal ); /* resulting normals */
-
- if (VB->AttribPtr[_TNL_ATTRIB_NORMAL]->count > 1) {
- store->normal.stride = 4 * sizeof(GLfloat);
- }
- else {
- store->normal.stride = 0;
- }
-
- VB->AttribPtr[_TNL_ATTRIB_NORMAL] = &store->normal;
-
- VB->NormalLengthPtr = NULL; /* no longer valid */
- return GL_TRUE;
-}
-
-
-/**
- * Examine current GL state and set the store->NormalTransform pointer
- * to point to the appropriate normal transformation routine.
- */
-static void
-validate_normal_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
-{
- struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
-
- if (ctx->VertexProgram._Current ||
- (!ctx->Light.Enabled &&
- !(ctx->Texture._GenFlags & TEXGEN_NEED_NORMALS))) {
- store->NormalTransform = NULL;
- return;
- }
-
- if (ctx->_NeedEyeCoords) {
- /* Eye coordinates are needed, for whatever reasons.
- * Do lighting in eye coordinates, as the GL spec says.
- */
- GLuint transform = NORM_TRANSFORM_NO_ROT;
-
- if (_math_matrix_has_rotation(ctx->ModelviewMatrixStack.Top)) {
- /* need to do full (3x3) matrix transform */
- transform = NORM_TRANSFORM;
- }
-
- if (ctx->Transform.Normalize) {
- store->NormalTransform = _mesa_normal_tab[transform | NORM_NORMALIZE];
- }
- else if (ctx->Transform.RescaleNormals &&
- ctx->_ModelViewInvScale != 1.0) {
- store->NormalTransform = _mesa_normal_tab[transform | NORM_RESCALE];
- }
- else {
- store->NormalTransform = _mesa_normal_tab[transform];
- }
- }
- else {
- /* We don't need eye coordinates.
- * Do lighting in object coordinates. Thus, we don't need to fully
- * transform normal vectors (just leave them in object coordinates)
- * but we still need to do normalization/rescaling if enabled.
- */
- if (ctx->Transform.Normalize) {
- store->NormalTransform = _mesa_normal_tab[NORM_NORMALIZE];
- }
- else if (!ctx->Transform.RescaleNormals &&
- ctx->_ModelViewInvScale != 1.0) {
- store->NormalTransform = _mesa_normal_tab[NORM_RESCALE];
- }
- else {
- store->NormalTransform = NULL;
- }
- }
-}
-
-
-/**
- * Allocate stage's private data (storage for transformed normals).
- */
-static GLboolean
-alloc_normal_data(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct normal_stage_data *store;
-
- stage->privatePtr = malloc(sizeof(*store));
- store = NORMAL_STAGE_DATA(stage);
- if (!store)
- return GL_FALSE;
-
- _mesa_vector4f_alloc( &store->normal, 0, tnl->vb.Size, 32 );
- return GL_TRUE;
-}
-
-
-/**
- * Free stage's private data.
- */
-static void
-free_normal_data(struct tnl_pipeline_stage *stage)
-{
- struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
- if (store) {
- _mesa_vector4f_free( &store->normal );
- free( store );
- stage->privatePtr = NULL;
- }
-}
-
-
-const struct tnl_pipeline_stage _tnl_normal_transform_stage =
-{
- "normal transform", /* name */
- NULL, /* privatePtr */
- alloc_normal_data, /* create */
- free_normal_data, /* destroy */
- validate_normal_stage, /* validate */
- run_normal_stage /* run */
-};
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+
+#include "main/glheader.h"
+#include "main/colormac.h"
+#include "main/macros.h"
+#include "main/imports.h"
+#include "main/mtypes.h"
+
+#include "math/m_xform.h"
+
+#include "t_context.h"
+#include "t_pipeline.h"
+
+
+struct normal_stage_data {
+ normal_func NormalTransform;
+ GLvector4f normal;
+};
+
+#define NORMAL_STAGE_DATA(stage) ((struct normal_stage_data *)stage->privatePtr)
+
+
+static GLboolean
+run_normal_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
+{
+ struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ const GLfloat *lengths;
+
+ if (!store->NormalTransform)
+ return GL_TRUE;
+
+ /* We can only use the display list's saved normal lengths if we've
+ * got a transformation matrix with uniform scaling.
+ */
+ if (_math_matrix_is_general_scale(ctx->ModelviewMatrixStack.Top))
+ lengths = NULL;
+ else
+ lengths = VB->NormalLengthPtr;
+
+ store->NormalTransform( ctx->ModelviewMatrixStack.Top,
+ ctx->_ModelViewInvScale,
+ VB->AttribPtr[_TNL_ATTRIB_NORMAL], /* input normals */
+ lengths,
+ &store->normal ); /* resulting normals */
+
+ if (VB->AttribPtr[_TNL_ATTRIB_NORMAL]->count > 1) {
+ store->normal.stride = 4 * sizeof(GLfloat);
+ }
+ else {
+ store->normal.stride = 0;
+ }
+
+ VB->AttribPtr[_TNL_ATTRIB_NORMAL] = &store->normal;
+
+ VB->NormalLengthPtr = NULL; /* no longer valid */
+ return GL_TRUE;
+}
+
+
+/**
+ * Examine current GL state and set the store->NormalTransform pointer
+ * to point to the appropriate normal transformation routine.
+ */
+static void
+validate_normal_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
+{
+ struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
+
+ if (ctx->VertexProgram._Current ||
+ (!ctx->Light.Enabled &&
+ !(ctx->Texture._GenFlags & TEXGEN_NEED_NORMALS))) {
+ store->NormalTransform = NULL;
+ return;
+ }
+
+ if (ctx->_NeedEyeCoords) {
+ /* Eye coordinates are needed, for whatever reasons.
+ * Do lighting in eye coordinates, as the GL spec says.
+ */
+ GLuint transform = NORM_TRANSFORM_NO_ROT;
+
+ if (_math_matrix_has_rotation(ctx->ModelviewMatrixStack.Top)) {
+ /* need to do full (3x3) matrix transform */
+ transform = NORM_TRANSFORM;
+ }
+
+ if (ctx->Transform.Normalize) {
+ store->NormalTransform = _mesa_normal_tab[transform | NORM_NORMALIZE];
+ }
+ else if (ctx->Transform.RescaleNormals &&
+ ctx->_ModelViewInvScale != 1.0) {
+ store->NormalTransform = _mesa_normal_tab[transform | NORM_RESCALE];
+ }
+ else {
+ store->NormalTransform = _mesa_normal_tab[transform];
+ }
+ }
+ else {
+ /* We don't need eye coordinates.
+ * Do lighting in object coordinates. Thus, we don't need to fully
+ * transform normal vectors (just leave them in object coordinates)
+ * but we still need to do normalization/rescaling if enabled.
+ */
+ if (ctx->Transform.Normalize) {
+ store->NormalTransform = _mesa_normal_tab[NORM_NORMALIZE];
+ }
+ else if (!ctx->Transform.RescaleNormals &&
+ ctx->_ModelViewInvScale != 1.0) {
+ store->NormalTransform = _mesa_normal_tab[NORM_RESCALE];
+ }
+ else {
+ store->NormalTransform = NULL;
+ }
+ }
+}
+
+
+/**
+ * Allocate stage's private data (storage for transformed normals).
+ */
+static GLboolean
+alloc_normal_data(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ struct normal_stage_data *store;
+
+ stage->privatePtr = malloc(sizeof(*store));
+ store = NORMAL_STAGE_DATA(stage);
+ if (!store)
+ return GL_FALSE;
+
+ _mesa_vector4f_alloc( &store->normal, 0, tnl->vb.Size, 32 );
+ return GL_TRUE;
+}
+
+
+/**
+ * Free stage's private data.
+ */
+static void
+free_normal_data(struct tnl_pipeline_stage *stage)
+{
+ struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
+ if (store) {
+ _mesa_vector4f_free( &store->normal );
+ free( store );
+ stage->privatePtr = NULL;
+ }
+}
+
+
+const struct tnl_pipeline_stage _tnl_normal_transform_stage =
+{
+ "normal transform", /* name */
+ NULL, /* privatePtr */
+ alloc_normal_data, /* create */
+ free_normal_data, /* destroy */
+ validate_normal_stage, /* validate */
+ run_normal_stage /* run */
+};
diff --git a/mesalib/src/mesa/tnl/t_vb_points.c b/mesalib/src/mesa/tnl/t_vb_points.c
index 1bf961a6d..9edbbc708 100644
--- a/mesalib/src/mesa/tnl/t_vb_points.c
+++ b/mesalib/src/mesa/tnl/t_vb_points.c
@@ -1,114 +1,114 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.0
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Brian Paul
- */
-
-#include "main/glheader.h"
-#include "main/mtypes.h"
-#include "main/dd.h"
-#include "main/imports.h"
-#include "t_context.h"
-#include "t_pipeline.h"
-
-
-struct point_stage_data {
- GLvector4f PointSize;
-};
-
-#define POINT_STAGE_DATA(stage) ((struct point_stage_data *)stage->privatePtr)
-
-
-/**
- * Compute point size for each vertex from the vertex eye-space Z
- * coordinate and the point size attenuation factors.
- * Only done when point size attenuation is enabled and vertex program is
- * disabled.
- */
-static GLboolean
-run_point_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
-{
- if (ctx->Point._Attenuated && !ctx->VertexProgram._Current) {
- struct point_stage_data *store = POINT_STAGE_DATA(stage);
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- const GLfloat *eyeCoord = (GLfloat *) VB->EyePtr->data + 2;
- const GLint eyeCoordStride = VB->EyePtr->stride / sizeof(GLfloat);
- const GLfloat p0 = ctx->Point.Params[0];
- const GLfloat p1 = ctx->Point.Params[1];
- const GLfloat p2 = ctx->Point.Params[2];
- const GLfloat pointSize = ctx->Point.Size;
- GLfloat (*size)[4] = store->PointSize.data;
- GLuint i;
-
- for (i = 0; i < VB->Count; i++) {
- const GLfloat dist = FABSF(*eyeCoord);
- const GLfloat q = p0 + dist * (p1 + dist * p2);
- const GLfloat atten = (q != 0.0F) ? SQRTF(1.0F / q) : 1.0F;
- size[i][0] = pointSize * atten; /* clamping done in rasterization */
- eyeCoord += eyeCoordStride;
- }
-
- VB->AttribPtr[_TNL_ATTRIB_POINTSIZE] = &store->PointSize;
- }
-
- return GL_TRUE;
-}
-
-
-static GLboolean
-alloc_point_data(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
-{
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- struct point_stage_data *store;
- stage->privatePtr = malloc(sizeof(*store));
- store = POINT_STAGE_DATA(stage);
- if (!store)
- return GL_FALSE;
-
- _mesa_vector4f_alloc( &store->PointSize, 0, VB->Size, 32 );
- return GL_TRUE;
-}
-
-
-static void
-free_point_data(struct tnl_pipeline_stage *stage)
-{
- struct point_stage_data *store = POINT_STAGE_DATA(stage);
- if (store) {
- _mesa_vector4f_free( &store->PointSize );
- free( store );
- stage->privatePtr = NULL;
- }
-}
-
-
-const struct tnl_pipeline_stage _tnl_point_attenuation_stage =
-{
- "point size attenuation", /* name */
- NULL, /* stage private data */
- alloc_point_data, /* alloc data */
- free_point_data, /* destructor */
- NULL,
- run_point_stage /* run */
-};
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Brian Paul
+ */
+
+#include "main/glheader.h"
+#include "main/mtypes.h"
+#include "main/dd.h"
+#include "main/imports.h"
+#include "t_context.h"
+#include "t_pipeline.h"
+
+
+struct point_stage_data {
+ GLvector4f PointSize;
+};
+
+#define POINT_STAGE_DATA(stage) ((struct point_stage_data *)stage->privatePtr)
+
+
+/**
+ * Compute point size for each vertex from the vertex eye-space Z
+ * coordinate and the point size attenuation factors.
+ * Only done when point size attenuation is enabled and vertex program is
+ * disabled.
+ */
+static GLboolean
+run_point_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
+{
+ if (ctx->Point._Attenuated && !ctx->VertexProgram._Current) {
+ struct point_stage_data *store = POINT_STAGE_DATA(stage);
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ const GLfloat *eyeCoord = (GLfloat *) VB->EyePtr->data + 2;
+ const GLint eyeCoordStride = VB->EyePtr->stride / sizeof(GLfloat);
+ const GLfloat p0 = ctx->Point.Params[0];
+ const GLfloat p1 = ctx->Point.Params[1];
+ const GLfloat p2 = ctx->Point.Params[2];
+ const GLfloat pointSize = ctx->Point.Size;
+ GLfloat (*size)[4] = store->PointSize.data;
+ GLuint i;
+
+ for (i = 0; i < VB->Count; i++) {
+ const GLfloat dist = FABSF(*eyeCoord);
+ const GLfloat q = p0 + dist * (p1 + dist * p2);
+ const GLfloat atten = (q != 0.0F) ? SQRTF(1.0F / q) : 1.0F;
+ size[i][0] = pointSize * atten; /* clamping done in rasterization */
+ eyeCoord += eyeCoordStride;
+ }
+
+ VB->AttribPtr[_TNL_ATTRIB_POINTSIZE] = &store->PointSize;
+ }
+
+ return GL_TRUE;
+}
+
+
+static GLboolean
+alloc_point_data(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
+{
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ struct point_stage_data *store;
+ stage->privatePtr = malloc(sizeof(*store));
+ store = POINT_STAGE_DATA(stage);
+ if (!store)
+ return GL_FALSE;
+
+ _mesa_vector4f_alloc( &store->PointSize, 0, VB->Size, 32 );
+ return GL_TRUE;
+}
+
+
+static void
+free_point_data(struct tnl_pipeline_stage *stage)
+{
+ struct point_stage_data *store = POINT_STAGE_DATA(stage);
+ if (store) {
+ _mesa_vector4f_free( &store->PointSize );
+ free( store );
+ stage->privatePtr = NULL;
+ }
+}
+
+
+const struct tnl_pipeline_stage _tnl_point_attenuation_stage =
+{
+ "point size attenuation", /* name */
+ NULL, /* stage private data */
+ alloc_point_data, /* alloc data */
+ free_point_data, /* destructor */
+ NULL,
+ run_point_stage /* run */
+};
diff --git a/mesalib/src/mesa/tnl/t_vb_render.c b/mesalib/src/mesa/tnl/t_vb_render.c
index 64dabca98..cb3192132 100644
--- a/mesalib/src/mesa/tnl/t_vb_render.c
+++ b/mesalib/src/mesa/tnl/t_vb_render.c
@@ -1,348 +1,348 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-
-/*
- * Render whole vertex buffers, including projection of vertices from
- * clip space and clipping of primitives.
- *
- * This file makes calls to project vertices and to the point, line
- * and triangle rasterizers via the function pointers:
- *
- * context->Driver.Render.*
- *
- */
-
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/enums.h"
-#include "main/macros.h"
-#include "main/imports.h"
-#include "main/mtypes.h"
-#include "math/m_xform.h"
-
-#include "t_pipeline.h"
-
-
-
-/**********************************************************************/
-/* Clip single primitives */
-/**********************************************************************/
-
-
-#define W(i) coord[i][3]
-#define Z(i) coord[i][2]
-#define Y(i) coord[i][1]
-#define X(i) coord[i][0]
-#define SIZE 4
-#define TAG(x) x##_4
-#include "t_vb_cliptmp.h"
-
-
-
-/**********************************************************************/
-/* Clip and render whole begin/end objects */
-/**********************************************************************/
-
-#define NEED_EDGEFLAG_SETUP (ctx->Polygon.FrontMode != GL_FILL || ctx->Polygon.BackMode != GL_FILL)
-#define EDGEFLAG_GET(idx) VB->EdgeFlag[idx]
-#define EDGEFLAG_SET(idx, val) VB->EdgeFlag[idx] = val
-
-
-/* This does NOT include the CLIP_USER_BIT! */
-#define CLIPMASK (CLIP_FRUSTUM_BITS | CLIP_CULL_BIT)
-
-
-/* Vertices, with the possibility of clipping.
- */
-#define RENDER_POINTS( start, count ) \
- tnl->Driver.Render.Points( ctx, start, count )
-
-#define RENDER_LINE( v1, v2 ) \
-do { \
- GLubyte c1 = mask[v1], c2 = mask[v2]; \
- GLubyte ormask = c1|c2; \
- if (!ormask) \
- LineFunc( ctx, v1, v2 ); \
- else if (!(c1 & c2 & CLIPMASK)) \
- clip_line_4( ctx, v1, v2, ormask ); \
-} while (0)
-
-#define RENDER_TRI( v1, v2, v3 ) \
-do { \
- GLubyte c1 = mask[v1], c2 = mask[v2], c3 = mask[v3]; \
- GLubyte ormask = c1|c2|c3; \
- if (!ormask) \
- TriangleFunc( ctx, v1, v2, v3 ); \
- else if (!(c1 & c2 & c3 & CLIPMASK)) \
- clip_tri_4( ctx, v1, v2, v3, ormask ); \
-} while (0)
-
-#define RENDER_QUAD( v1, v2, v3, v4 ) \
-do { \
- GLubyte c1 = mask[v1], c2 = mask[v2]; \
- GLubyte c3 = mask[v3], c4 = mask[v4]; \
- GLubyte ormask = c1|c2|c3|c4; \
- if (!ormask) \
- QuadFunc( ctx, v1, v2, v3, v4 ); \
- else if (!(c1 & c2 & c3 & c4 & CLIPMASK)) \
- clip_quad_4( ctx, v1, v2, v3, v4, ormask ); \
-} while (0)
-
-
-#define LOCAL_VARS \
- TNLcontext *tnl = TNL_CONTEXT(ctx); \
- struct vertex_buffer *VB = &tnl->vb; \
- const GLuint * const elt = VB->Elts; \
- const GLubyte *mask = VB->ClipMask; \
- const GLuint sz = VB->ClipPtr->size; \
- const tnl_line_func LineFunc = tnl->Driver.Render.Line; \
- const tnl_triangle_func TriangleFunc = tnl->Driver.Render.Triangle; \
- const tnl_quad_func QuadFunc = tnl->Driver.Render.Quad; \
- const GLboolean stipple = ctx->Line.StippleFlag; \
- (void) (LineFunc && TriangleFunc && QuadFunc); \
- (void) elt; (void) mask; (void) sz; (void) stipple;
-
-#define TAG(x) clip_##x##_verts
-#define INIT(x) tnl->Driver.Render.PrimitiveNotify( ctx, x )
-#define RESET_STIPPLE if (stipple) tnl->Driver.Render.ResetLineStipple( ctx )
-#define PRESERVE_VB_DEFS
-#include "t_vb_rendertmp.h"
-
-
-
-/* Elts, with the possibility of clipping.
- */
-#undef ELT
-#undef TAG
-#define ELT(x) elt[x]
-#define TAG(x) clip_##x##_elts
-#include "t_vb_rendertmp.h"
-
-/* TODO: do this for all primitives, verts and elts:
- */
-static void clip_elt_triangles( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- tnl_render_func render_tris = tnl->Driver.Render.PrimTabElts[GL_TRIANGLES];
- struct vertex_buffer *VB = &tnl->vb;
- const GLuint * const elt = VB->Elts;
- GLubyte *mask = VB->ClipMask;
- GLuint last = count-2;
- GLuint j;
- (void) flags;
-
- tnl->Driver.Render.PrimitiveNotify( ctx, GL_TRIANGLES );
-
- for (j=start; j < last; j+=3 ) {
- GLubyte c1 = mask[elt[j]];
- GLubyte c2 = mask[elt[j+1]];
- GLubyte c3 = mask[elt[j+2]];
- GLubyte ormask = c1|c2|c3;
- if (ormask) {
- if (start < j)
- render_tris( ctx, start, j, 0 );
- if (!(c1&c2&c3&CLIPMASK))
- clip_tri_4( ctx, elt[j], elt[j+1], elt[j+2], ormask );
- start = j+3;
- }
- }
-
- if (start < j)
- render_tris( ctx, start, j, 0 );
-}
-
-/**********************************************************************/
-/* Render whole begin/end objects */
-/**********************************************************************/
-
-#define NEED_EDGEFLAG_SETUP (ctx->Polygon.FrontMode != GL_FILL || ctx->Polygon.BackMode != GL_FILL)
-#define EDGEFLAG_GET(idx) VB->EdgeFlag[idx]
-#define EDGEFLAG_SET(idx, val) VB->EdgeFlag[idx] = val
-
-
-/* Vertices, no clipping.
- */
-#define RENDER_POINTS( start, count ) \
- tnl->Driver.Render.Points( ctx, start, count )
-
-#define RENDER_LINE( v1, v2 ) \
- LineFunc( ctx, v1, v2 )
-
-#define RENDER_TRI( v1, v2, v3 ) \
- TriangleFunc( ctx, v1, v2, v3 )
-
-#define RENDER_QUAD( v1, v2, v3, v4 ) \
- QuadFunc( ctx, v1, v2, v3, v4 )
-
-#define TAG(x) _tnl_##x##_verts
-
-#define LOCAL_VARS \
- TNLcontext *tnl = TNL_CONTEXT(ctx); \
- struct vertex_buffer *VB = &tnl->vb; \
- const GLuint * const elt = VB->Elts; \
- const tnl_line_func LineFunc = tnl->Driver.Render.Line; \
- const tnl_triangle_func TriangleFunc = tnl->Driver.Render.Triangle; \
- const tnl_quad_func QuadFunc = tnl->Driver.Render.Quad; \
- const GLboolean stipple = ctx->Line.StippleFlag; \
- (void) (LineFunc && TriangleFunc && QuadFunc); \
- (void) elt; (void) stipple
-
-#define RESET_STIPPLE if (stipple) tnl->Driver.Render.ResetLineStipple( ctx )
-#define INIT(x) tnl->Driver.Render.PrimitiveNotify( ctx, x )
-#define RENDER_TAB_QUALIFIER
-#define PRESERVE_VB_DEFS
-#include "t_vb_rendertmp.h"
-
-
-/* Elts, no clipping.
- */
-#undef ELT
-#define TAG(x) _tnl_##x##_elts
-#define ELT(x) elt[x]
-#include "t_vb_rendertmp.h"
-
-
-/**********************************************************************/
-/* Helper functions for drivers */
-/**********************************************************************/
-
-void _tnl_RenderClippedPolygon( struct gl_context *ctx, const GLuint *elts, GLuint n )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
- GLuint *tmp = VB->Elts;
-
- VB->Elts = (GLuint *)elts;
- tnl->Driver.Render.PrimTabElts[GL_POLYGON]( ctx, 0, n, PRIM_BEGIN|PRIM_END );
- VB->Elts = tmp;
-}
-
-void _tnl_RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- tnl->Driver.Render.Line( ctx, ii, jj );
-}
-
-
-
-/**********************************************************************/
-/* Clip and render whole vertex buffers */
-/**********************************************************************/
-
-
-static GLboolean run_render( struct gl_context *ctx,
- struct tnl_pipeline_stage *stage )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
- tnl_render_func *tab;
- GLint pass = 0;
-
- /* Allow the drivers to lock before projected verts are built so
- * that window coordinates are guarenteed not to change before
- * rendering.
- */
- ASSERT(tnl->Driver.Render.Start);
-
- tnl->Driver.Render.Start( ctx );
-
- ASSERT(tnl->Driver.Render.BuildVertices);
- ASSERT(tnl->Driver.Render.PrimitiveNotify);
- ASSERT(tnl->Driver.Render.Points);
- ASSERT(tnl->Driver.Render.Line);
- ASSERT(tnl->Driver.Render.Triangle);
- ASSERT(tnl->Driver.Render.Quad);
- ASSERT(tnl->Driver.Render.ResetLineStipple);
- ASSERT(tnl->Driver.Render.Interp);
- ASSERT(tnl->Driver.Render.CopyPV);
- ASSERT(tnl->Driver.Render.ClippedLine);
- ASSERT(tnl->Driver.Render.ClippedPolygon);
- ASSERT(tnl->Driver.Render.Finish);
-
- tnl->Driver.Render.BuildVertices( ctx, 0, VB->Count, ~0 );
-
- if (VB->ClipOrMask) {
- tab = VB->Elts ? clip_render_tab_elts : clip_render_tab_verts;
- clip_render_tab_elts[GL_TRIANGLES] = clip_elt_triangles;
- }
- else {
- tab = (VB->Elts ?
- tnl->Driver.Render.PrimTabElts :
- tnl->Driver.Render.PrimTabVerts);
- }
-
- do
- {
- GLuint i;
-
- for (i = 0 ; i < VB->PrimitiveCount ; i++)
- {
- GLuint prim = _tnl_translate_prim(&VB->Primitive[i]);
- GLuint start = VB->Primitive[i].start;
- GLuint length = VB->Primitive[i].count;
-
- assert((prim & PRIM_MODE_MASK) <= GL_POLYGON);
-
- if (MESA_VERBOSE & VERBOSE_PRIMS)
- _mesa_debug(NULL, "MESA prim %s %d..%d\n",
- _mesa_lookup_enum_by_nr(prim & PRIM_MODE_MASK),
- start, start+length);
-
- if (length)
- tab[prim & PRIM_MODE_MASK]( ctx, start, start + length, prim );
- }
- } while (tnl->Driver.Render.Multipass &&
- tnl->Driver.Render.Multipass( ctx, ++pass ));
-
- tnl->Driver.Render.Finish( ctx );
-
- return GL_FALSE; /* finished the pipe */
-}
-
-
-/**********************************************************************/
-/* Render pipeline stage */
-/**********************************************************************/
-
-
-
-
-
-const struct tnl_pipeline_stage _tnl_render_stage =
-{
- "render", /* name */
- NULL, /* private data */
- NULL, /* creator */
- NULL, /* destructor */
- NULL, /* validate */
- run_render /* run */
-};
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+
+/*
+ * Render whole vertex buffers, including projection of vertices from
+ * clip space and clipping of primitives.
+ *
+ * This file makes calls to project vertices and to the point, line
+ * and triangle rasterizers via the function pointers:
+ *
+ * context->Driver.Render.*
+ *
+ */
+
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/enums.h"
+#include "main/macros.h"
+#include "main/imports.h"
+#include "main/mtypes.h"
+#include "math/m_xform.h"
+
+#include "t_pipeline.h"
+
+
+
+/**********************************************************************/
+/* Clip single primitives */
+/**********************************************************************/
+
+
+#define W(i) coord[i][3]
+#define Z(i) coord[i][2]
+#define Y(i) coord[i][1]
+#define X(i) coord[i][0]
+#define SIZE 4
+#define TAG(x) x##_4
+#include "t_vb_cliptmp.h"
+
+
+
+/**********************************************************************/
+/* Clip and render whole begin/end objects */
+/**********************************************************************/
+
+#define NEED_EDGEFLAG_SETUP (ctx->Polygon.FrontMode != GL_FILL || ctx->Polygon.BackMode != GL_FILL)
+#define EDGEFLAG_GET(idx) VB->EdgeFlag[idx]
+#define EDGEFLAG_SET(idx, val) VB->EdgeFlag[idx] = val
+
+
+/* This does NOT include the CLIP_USER_BIT! */
+#define CLIPMASK (CLIP_FRUSTUM_BITS | CLIP_CULL_BIT)
+
+
+/* Vertices, with the possibility of clipping.
+ */
+#define RENDER_POINTS( start, count ) \
+ tnl->Driver.Render.Points( ctx, start, count )
+
+#define RENDER_LINE( v1, v2 ) \
+do { \
+ GLubyte c1 = mask[v1], c2 = mask[v2]; \
+ GLubyte ormask = c1|c2; \
+ if (!ormask) \
+ LineFunc( ctx, v1, v2 ); \
+ else if (!(c1 & c2 & CLIPMASK)) \
+ clip_line_4( ctx, v1, v2, ormask ); \
+} while (0)
+
+#define RENDER_TRI( v1, v2, v3 ) \
+do { \
+ GLubyte c1 = mask[v1], c2 = mask[v2], c3 = mask[v3]; \
+ GLubyte ormask = c1|c2|c3; \
+ if (!ormask) \
+ TriangleFunc( ctx, v1, v2, v3 ); \
+ else if (!(c1 & c2 & c3 & CLIPMASK)) \
+ clip_tri_4( ctx, v1, v2, v3, ormask ); \
+} while (0)
+
+#define RENDER_QUAD( v1, v2, v3, v4 ) \
+do { \
+ GLubyte c1 = mask[v1], c2 = mask[v2]; \
+ GLubyte c3 = mask[v3], c4 = mask[v4]; \
+ GLubyte ormask = c1|c2|c3|c4; \
+ if (!ormask) \
+ QuadFunc( ctx, v1, v2, v3, v4 ); \
+ else if (!(c1 & c2 & c3 & c4 & CLIPMASK)) \
+ clip_quad_4( ctx, v1, v2, v3, v4, ormask ); \
+} while (0)
+
+
+#define LOCAL_VARS \
+ TNLcontext *tnl = TNL_CONTEXT(ctx); \
+ struct vertex_buffer *VB = &tnl->vb; \
+ const GLuint * const elt = VB->Elts; \
+ const GLubyte *mask = VB->ClipMask; \
+ const GLuint sz = VB->ClipPtr->size; \
+ const tnl_line_func LineFunc = tnl->Driver.Render.Line; \
+ const tnl_triangle_func TriangleFunc = tnl->Driver.Render.Triangle; \
+ const tnl_quad_func QuadFunc = tnl->Driver.Render.Quad; \
+ const GLboolean stipple = ctx->Line.StippleFlag; \
+ (void) (LineFunc && TriangleFunc && QuadFunc); \
+ (void) elt; (void) mask; (void) sz; (void) stipple;
+
+#define TAG(x) clip_##x##_verts
+#define INIT(x) tnl->Driver.Render.PrimitiveNotify( ctx, x )
+#define RESET_STIPPLE if (stipple) tnl->Driver.Render.ResetLineStipple( ctx )
+#define PRESERVE_VB_DEFS
+#include "t_vb_rendertmp.h"
+
+
+
+/* Elts, with the possibility of clipping.
+ */
+#undef ELT
+#undef TAG
+#define ELT(x) elt[x]
+#define TAG(x) clip_##x##_elts
+#include "t_vb_rendertmp.h"
+
+/* TODO: do this for all primitives, verts and elts:
+ */
+static void clip_elt_triangles( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ tnl_render_func render_tris = tnl->Driver.Render.PrimTabElts[GL_TRIANGLES];
+ struct vertex_buffer *VB = &tnl->vb;
+ const GLuint * const elt = VB->Elts;
+ GLubyte *mask = VB->ClipMask;
+ GLuint last = count-2;
+ GLuint j;
+ (void) flags;
+
+ tnl->Driver.Render.PrimitiveNotify( ctx, GL_TRIANGLES );
+
+ for (j=start; j < last; j+=3 ) {
+ GLubyte c1 = mask[elt[j]];
+ GLubyte c2 = mask[elt[j+1]];
+ GLubyte c3 = mask[elt[j+2]];
+ GLubyte ormask = c1|c2|c3;
+ if (ormask) {
+ if (start < j)
+ render_tris( ctx, start, j, 0 );
+ if (!(c1&c2&c3&CLIPMASK))
+ clip_tri_4( ctx, elt[j], elt[j+1], elt[j+2], ormask );
+ start = j+3;
+ }
+ }
+
+ if (start < j)
+ render_tris( ctx, start, j, 0 );
+}
+
+/**********************************************************************/
+/* Render whole begin/end objects */
+/**********************************************************************/
+
+#define NEED_EDGEFLAG_SETUP (ctx->Polygon.FrontMode != GL_FILL || ctx->Polygon.BackMode != GL_FILL)
+#define EDGEFLAG_GET(idx) VB->EdgeFlag[idx]
+#define EDGEFLAG_SET(idx, val) VB->EdgeFlag[idx] = val
+
+
+/* Vertices, no clipping.
+ */
+#define RENDER_POINTS( start, count ) \
+ tnl->Driver.Render.Points( ctx, start, count )
+
+#define RENDER_LINE( v1, v2 ) \
+ LineFunc( ctx, v1, v2 )
+
+#define RENDER_TRI( v1, v2, v3 ) \
+ TriangleFunc( ctx, v1, v2, v3 )
+
+#define RENDER_QUAD( v1, v2, v3, v4 ) \
+ QuadFunc( ctx, v1, v2, v3, v4 )
+
+#define TAG(x) _tnl_##x##_verts
+
+#define LOCAL_VARS \
+ TNLcontext *tnl = TNL_CONTEXT(ctx); \
+ struct vertex_buffer *VB = &tnl->vb; \
+ const GLuint * const elt = VB->Elts; \
+ const tnl_line_func LineFunc = tnl->Driver.Render.Line; \
+ const tnl_triangle_func TriangleFunc = tnl->Driver.Render.Triangle; \
+ const tnl_quad_func QuadFunc = tnl->Driver.Render.Quad; \
+ const GLboolean stipple = ctx->Line.StippleFlag; \
+ (void) (LineFunc && TriangleFunc && QuadFunc); \
+ (void) elt; (void) stipple
+
+#define RESET_STIPPLE if (stipple) tnl->Driver.Render.ResetLineStipple( ctx )
+#define INIT(x) tnl->Driver.Render.PrimitiveNotify( ctx, x )
+#define RENDER_TAB_QUALIFIER
+#define PRESERVE_VB_DEFS
+#include "t_vb_rendertmp.h"
+
+
+/* Elts, no clipping.
+ */
+#undef ELT
+#define TAG(x) _tnl_##x##_elts
+#define ELT(x) elt[x]
+#include "t_vb_rendertmp.h"
+
+
+/**********************************************************************/
+/* Helper functions for drivers */
+/**********************************************************************/
+
+void _tnl_RenderClippedPolygon( struct gl_context *ctx, const GLuint *elts, GLuint n )
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ struct vertex_buffer *VB = &tnl->vb;
+ GLuint *tmp = VB->Elts;
+
+ VB->Elts = (GLuint *)elts;
+ tnl->Driver.Render.PrimTabElts[GL_POLYGON]( ctx, 0, n, PRIM_BEGIN|PRIM_END );
+ VB->Elts = tmp;
+}
+
+void _tnl_RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj )
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ tnl->Driver.Render.Line( ctx, ii, jj );
+}
+
+
+
+/**********************************************************************/
+/* Clip and render whole vertex buffers */
+/**********************************************************************/
+
+
+static GLboolean run_render( struct gl_context *ctx,
+ struct tnl_pipeline_stage *stage )
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ struct vertex_buffer *VB = &tnl->vb;
+ tnl_render_func *tab;
+ GLint pass = 0;
+
+ /* Allow the drivers to lock before projected verts are built so
+ * that window coordinates are guarenteed not to change before
+ * rendering.
+ */
+ ASSERT(tnl->Driver.Render.Start);
+
+ tnl->Driver.Render.Start( ctx );
+
+ ASSERT(tnl->Driver.Render.BuildVertices);
+ ASSERT(tnl->Driver.Render.PrimitiveNotify);
+ ASSERT(tnl->Driver.Render.Points);
+ ASSERT(tnl->Driver.Render.Line);
+ ASSERT(tnl->Driver.Render.Triangle);
+ ASSERT(tnl->Driver.Render.Quad);
+ ASSERT(tnl->Driver.Render.ResetLineStipple);
+ ASSERT(tnl->Driver.Render.Interp);
+ ASSERT(tnl->Driver.Render.CopyPV);
+ ASSERT(tnl->Driver.Render.ClippedLine);
+ ASSERT(tnl->Driver.Render.ClippedPolygon);
+ ASSERT(tnl->Driver.Render.Finish);
+
+ tnl->Driver.Render.BuildVertices( ctx, 0, VB->Count, ~0 );
+
+ if (VB->ClipOrMask) {
+ tab = VB->Elts ? clip_render_tab_elts : clip_render_tab_verts;
+ clip_render_tab_elts[GL_TRIANGLES] = clip_elt_triangles;
+ }
+ else {
+ tab = (VB->Elts ?
+ tnl->Driver.Render.PrimTabElts :
+ tnl->Driver.Render.PrimTabVerts);
+ }
+
+ do
+ {
+ GLuint i;
+
+ for (i = 0 ; i < VB->PrimitiveCount ; i++)
+ {
+ GLuint prim = _tnl_translate_prim(&VB->Primitive[i]);
+ GLuint start = VB->Primitive[i].start;
+ GLuint length = VB->Primitive[i].count;
+
+ assert((prim & PRIM_MODE_MASK) <= GL_POLYGON);
+
+ if (MESA_VERBOSE & VERBOSE_PRIMS)
+ _mesa_debug(NULL, "MESA prim %s %d..%d\n",
+ _mesa_lookup_enum_by_nr(prim & PRIM_MODE_MASK),
+ start, start+length);
+
+ if (length)
+ tab[prim & PRIM_MODE_MASK]( ctx, start, start + length, prim );
+ }
+ } while (tnl->Driver.Render.Multipass &&
+ tnl->Driver.Render.Multipass( ctx, ++pass ));
+
+ tnl->Driver.Render.Finish( ctx );
+
+ return GL_FALSE; /* finished the pipe */
+}
+
+
+/**********************************************************************/
+/* Render pipeline stage */
+/**********************************************************************/
+
+
+
+
+
+const struct tnl_pipeline_stage _tnl_render_stage =
+{
+ "render", /* name */
+ NULL, /* private data */
+ NULL, /* creator */
+ NULL, /* destructor */
+ NULL, /* validate */
+ run_render /* run */
+};
diff --git a/mesalib/src/mesa/tnl/t_vb_rendertmp.h b/mesalib/src/mesa/tnl/t_vb_rendertmp.h
index 92dbf219d..4ed485a7b 100644
--- a/mesalib/src/mesa/tnl/t_vb_rendertmp.h
+++ b/mesalib/src/mesa/tnl/t_vb_rendertmp.h
@@ -1,486 +1,486 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-
-#ifndef POSTFIX
-#define POSTFIX
-#endif
-
-#ifndef INIT
-#define INIT(x)
-#endif
-
-#ifndef NEED_EDGEFLAG_SETUP
-#define NEED_EDGEFLAG_SETUP 0
-#define EDGEFLAG_GET(a) 0
-#define EDGEFLAG_SET(a,b) (void)b
-#endif
-
-#ifndef RESET_STIPPLE
-#define RESET_STIPPLE
-#endif
-
-#ifndef TEST_PRIM_END
-#define TEST_PRIM_END(prim) (flags & PRIM_END)
-#define TEST_PRIM_BEGIN(prim) (flags & PRIM_BEGIN)
-#endif
-
-#ifndef ELT
-#define ELT(x) x
-#endif
-
-#ifndef RENDER_TAB_QUALIFIER
-#define RENDER_TAB_QUALIFIER static
-#endif
-
-static void TAG(render_points)( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- LOCAL_VARS;
- (void) flags;
-
- INIT(GL_POINTS);
- RENDER_POINTS( start, count );
- POSTFIX;
-}
-
-static void TAG(render_lines)( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- GLuint j;
- LOCAL_VARS;
- (void) flags;
-
- INIT(GL_LINES);
- for (j=start+1; j<count; j+=2 ) {
- RESET_STIPPLE;
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
- RENDER_LINE( ELT(j-1), ELT(j) );
- else
- RENDER_LINE( ELT(j), ELT(j-1) );
- }
- POSTFIX;
-}
-
-
-static void TAG(render_line_strip)( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- GLuint j;
- LOCAL_VARS;
- (void) flags;
-
- INIT(GL_LINE_STRIP);
-
- if (TEST_PRIM_BEGIN(flags)) {
- RESET_STIPPLE;
- }
-
- for (j=start+1; j<count; j++ ) {
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
- RENDER_LINE( ELT(j-1), ELT(j) );
- else
- RENDER_LINE( ELT(j), ELT(j-1) );
- }
- POSTFIX;
-}
-
-
-static void TAG(render_line_loop)( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- GLuint i;
- LOCAL_VARS;
-
- (void) flags;
-
- INIT(GL_LINE_LOOP);
-
- if (start+1 < count) {
- if (TEST_PRIM_BEGIN(flags)) {
- RESET_STIPPLE;
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
- RENDER_LINE( ELT(start), ELT(start+1) );
- else
- RENDER_LINE( ELT(start+1), ELT(start) );
- }
-
- for ( i = start+2 ; i < count ; i++) {
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
- RENDER_LINE( ELT(i-1), ELT(i) );
- else
- RENDER_LINE( ELT(i), ELT(i-1) );
- }
-
- if ( TEST_PRIM_END(flags)) {
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
- RENDER_LINE( ELT(count-1), ELT(start) );
- else
- RENDER_LINE( ELT(start), ELT(count-1) );
- }
- }
-
- POSTFIX;
-}
-
-
-static void TAG(render_triangles)( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- GLuint j;
- LOCAL_VARS;
- (void) flags;
-
- INIT(GL_TRIANGLES);
- if (NEED_EDGEFLAG_SETUP) {
- for (j=start+2; j<count; j+=3) {
- /* Leave the edgeflags as supplied by the user.
- */
- RESET_STIPPLE;
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
- RENDER_TRI( ELT(j-2), ELT(j-1), ELT(j) );
- else
- RENDER_TRI( ELT(j-1), ELT(j), ELT(j-2) );
- }
- } else {
- for (j=start+2; j<count; j+=3) {
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
- RENDER_TRI( ELT(j-2), ELT(j-1), ELT(j) );
- else
- RENDER_TRI( ELT(j-1), ELT(j), ELT(j-2) );
- }
- }
- POSTFIX;
-}
-
-
-
-static void TAG(render_tri_strip)( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- GLuint j;
- GLuint parity = 0;
- LOCAL_VARS;
-
- INIT(GL_TRIANGLE_STRIP);
- if (NEED_EDGEFLAG_SETUP) {
- for (j=start+2;j<count;j++,parity^=1) {
- GLuint ej2, ej1, ej;
- GLboolean ef2, ef1, ef;
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT) {
- ej2 = ELT(j-2+parity);
- ej1 = ELT(j-1-parity);
- ej = ELT(j);
- }
- else {
- ej2 = ELT(j-1+parity);
- ej1 = ELT(j-parity);
- ej = ELT(j-2);
- }
- ef2 = EDGEFLAG_GET( ej2 );
- ef1 = EDGEFLAG_GET( ej1 );
- ef = EDGEFLAG_GET( ej );
- if (TEST_PRIM_BEGIN(flags)) {
- RESET_STIPPLE;
- }
- EDGEFLAG_SET( ej2, GL_TRUE );
- EDGEFLAG_SET( ej1, GL_TRUE );
- EDGEFLAG_SET( ej, GL_TRUE );
- RENDER_TRI( ej2, ej1, ej );
- EDGEFLAG_SET( ej2, ef2 );
- EDGEFLAG_SET( ej1, ef1 );
- EDGEFLAG_SET( ej, ef );
- }
- } else {
- for (j=start+2; j<count ; j++, parity^=1) {
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
- RENDER_TRI( ELT(j-2+parity), ELT(j-1-parity), ELT(j) );
- else
- RENDER_TRI( ELT(j-1+parity), ELT(j-parity), ELT(j-2) );
- }
- }
- POSTFIX;
-}
-
-
-static void TAG(render_tri_fan)( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- GLuint j;
- LOCAL_VARS;
- (void) flags;
-
- INIT(GL_TRIANGLE_FAN);
- if (NEED_EDGEFLAG_SETUP) {
- for (j=start+2;j<count;j++) {
- /* For trifans, all edges are boundary.
- */
- GLuint ejs = ELT(start);
- GLuint ej1 = ELT(j-1);
- GLuint ej = ELT(j);
- GLboolean efs = EDGEFLAG_GET( ejs );
- GLboolean ef1 = EDGEFLAG_GET( ej1 );
- GLboolean ef = EDGEFLAG_GET( ej );
- if (TEST_PRIM_BEGIN(flags)) {
- RESET_STIPPLE;
- }
- EDGEFLAG_SET( ejs, GL_TRUE );
- EDGEFLAG_SET( ej1, GL_TRUE );
- EDGEFLAG_SET( ej, GL_TRUE );
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
- RENDER_TRI( ejs, ej1, ej);
- else
- RENDER_TRI( ej, ejs, ej1);
- EDGEFLAG_SET( ejs, efs );
- EDGEFLAG_SET( ej1, ef1 );
- EDGEFLAG_SET( ej, ef );
- }
- } else {
- for (j=start+2;j<count;j++) {
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
- RENDER_TRI( ELT(start), ELT(j-1), ELT(j) );
- else
- RENDER_TRI( ELT(j), ELT(start), ELT(j-1) );
- }
- }
-
- POSTFIX;
-}
-
-
-static void TAG(render_poly)( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- GLuint j = start+2;
- LOCAL_VARS;
- (void) flags;
-
- INIT(GL_POLYGON);
- if (NEED_EDGEFLAG_SETUP) {
- GLboolean efstart = EDGEFLAG_GET( ELT(start) );
- GLboolean efcount = EDGEFLAG_GET( ELT(count-1) );
-
- /* If the primitive does not begin here, the first edge
- * is non-boundary.
- */
- if (!TEST_PRIM_BEGIN(flags))
- EDGEFLAG_SET( ELT(start), GL_FALSE );
- else {
- RESET_STIPPLE;
- }
-
- /* If the primitive does not end here, the final edge is
- * non-boundary.
- */
- if (!TEST_PRIM_END(flags))
- EDGEFLAG_SET( ELT(count-1), GL_FALSE );
-
- /* Draw the first triangles (possibly zero)
- */
- if (j+1<count) {
- GLboolean ef = EDGEFLAG_GET( ELT(j) );
- EDGEFLAG_SET( ELT(j), GL_FALSE );
- RENDER_TRI( ELT(j-1), ELT(j), ELT(start) );
- EDGEFLAG_SET( ELT(j), ef );
- j++;
-
- /* Don't render the first edge again:
- */
- EDGEFLAG_SET( ELT(start), GL_FALSE );
-
- for (;j+1<count;j++) {
- GLboolean efj = EDGEFLAG_GET( ELT(j) );
- EDGEFLAG_SET( ELT(j), GL_FALSE );
- RENDER_TRI( ELT(j-1), ELT(j), ELT(start) );
- EDGEFLAG_SET( ELT(j), efj );
- }
- }
-
- /* Draw the last or only triangle
- */
- if (j < count)
- RENDER_TRI( ELT(j-1), ELT(j), ELT(start) );
-
- /* Restore the first and last edgeflags:
- */
- EDGEFLAG_SET( ELT(count-1), efcount );
- EDGEFLAG_SET( ELT(start), efstart );
-
- }
- else {
- for (j=start+2;j<count;j++) {
- RENDER_TRI( ELT(j-1), ELT(j), ELT(start) );
- }
- }
- POSTFIX;
-}
-
-static void TAG(render_quads)( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- GLuint j;
- LOCAL_VARS;
- (void) flags;
-
- INIT(GL_QUADS);
- if (NEED_EDGEFLAG_SETUP) {
- for (j=start+3; j<count; j+=4) {
- /* Use user-specified edgeflags for quads.
- */
- RESET_STIPPLE;
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
- !ctx->Const.QuadsFollowProvokingVertexConvention)
- RENDER_QUAD( ELT(j-3), ELT(j-2), ELT(j-1), ELT(j) );
- else
- RENDER_QUAD( ELT(j-2), ELT(j-1), ELT(j), ELT(j-3) );
- }
- } else {
- for (j=start+3; j<count; j+=4) {
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
- !ctx->Const.QuadsFollowProvokingVertexConvention)
- RENDER_QUAD( ELT(j-3), ELT(j-2), ELT(j-1), ELT(j) );
- else
- RENDER_QUAD( ELT(j-2), ELT(j-1), ELT(j), ELT(j-3) );
- }
- }
- POSTFIX;
-}
-
-static void TAG(render_quad_strip)( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- GLuint j;
- LOCAL_VARS;
- (void) flags;
-
- INIT(GL_QUAD_STRIP);
- if (NEED_EDGEFLAG_SETUP) {
- for (j=start+3;j<count;j+=2) {
- /* All edges are boundary. Set edgeflags to 1, draw the
- * quad, and restore them to the original values.
- */
- GLboolean ef3 = EDGEFLAG_GET( ELT(j-3) );
- GLboolean ef2 = EDGEFLAG_GET( ELT(j-2) );
- GLboolean ef1 = EDGEFLAG_GET( ELT(j-1) );
- GLboolean ef = EDGEFLAG_GET( ELT(j) );
- if (TEST_PRIM_BEGIN(flags)) {
- RESET_STIPPLE;
- }
- EDGEFLAG_SET( ELT(j-3), GL_TRUE );
- EDGEFLAG_SET( ELT(j-2), GL_TRUE );
- EDGEFLAG_SET( ELT(j-1), GL_TRUE );
- EDGEFLAG_SET( ELT(j), GL_TRUE );
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
- !ctx->Const.QuadsFollowProvokingVertexConvention)
- RENDER_QUAD( ELT(j-1), ELT(j-3), ELT(j-2), ELT(j) );
- else
- RENDER_QUAD( ELT(j-2), ELT(j), ELT(j-1), ELT(j-3) );
- EDGEFLAG_SET( ELT(j-3), ef3 );
- EDGEFLAG_SET( ELT(j-2), ef2 );
- EDGEFLAG_SET( ELT(j-1), ef1 );
- EDGEFLAG_SET( ELT(j), ef );
- }
- } else {
- for (j=start+3;j<count;j+=2) {
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
- !ctx->Const.QuadsFollowProvokingVertexConvention)
- RENDER_QUAD( ELT(j-1), ELT(j-3), ELT(j-2), ELT(j) );
- else
- RENDER_QUAD( ELT(j-2), ELT(j), ELT(j-1), ELT(j-3) );
- }
- }
- POSTFIX;
-}
-
-static void TAG(render_noop)( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- (void)(ctx && start && count && flags);
-}
-
-RENDER_TAB_QUALIFIER void (*TAG(render_tab)[GL_POLYGON+2])(struct gl_context *,
- GLuint,
- GLuint,
- GLuint) =
-{
- TAG(render_points),
- TAG(render_lines),
- TAG(render_line_loop),
- TAG(render_line_strip),
- TAG(render_triangles),
- TAG(render_tri_strip),
- TAG(render_tri_fan),
- TAG(render_quads),
- TAG(render_quad_strip),
- TAG(render_poly),
- TAG(render_noop),
-};
-
-
-
-#ifndef PRESERVE_VB_DEFS
-#undef RENDER_TRI
-#undef RENDER_QUAD
-#undef RENDER_LINE
-#undef RENDER_POINTS
-#undef LOCAL_VARS
-#undef INIT
-#undef POSTFIX
-#undef RESET_STIPPLE
-#undef DBG
-#undef ELT
-#undef RENDER_TAB_QUALIFIER
-#endif
-
-#ifndef PRESERVE_TAG
-#undef TAG
-#endif
-
-#undef PRESERVE_VB_DEFS
-#undef PRESERVE_TAG
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+
+#ifndef POSTFIX
+#define POSTFIX
+#endif
+
+#ifndef INIT
+#define INIT(x)
+#endif
+
+#ifndef NEED_EDGEFLAG_SETUP
+#define NEED_EDGEFLAG_SETUP 0
+#define EDGEFLAG_GET(a) 0
+#define EDGEFLAG_SET(a,b) (void)b
+#endif
+
+#ifndef RESET_STIPPLE
+#define RESET_STIPPLE
+#endif
+
+#ifndef TEST_PRIM_END
+#define TEST_PRIM_END(prim) (flags & PRIM_END)
+#define TEST_PRIM_BEGIN(prim) (flags & PRIM_BEGIN)
+#endif
+
+#ifndef ELT
+#define ELT(x) x
+#endif
+
+#ifndef RENDER_TAB_QUALIFIER
+#define RENDER_TAB_QUALIFIER static
+#endif
+
+static void TAG(render_points)( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ LOCAL_VARS;
+ (void) flags;
+
+ INIT(GL_POINTS);
+ RENDER_POINTS( start, count );
+ POSTFIX;
+}
+
+static void TAG(render_lines)( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ GLuint j;
+ LOCAL_VARS;
+ (void) flags;
+
+ INIT(GL_LINES);
+ for (j=start+1; j<count; j+=2 ) {
+ RESET_STIPPLE;
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
+ RENDER_LINE( ELT(j-1), ELT(j) );
+ else
+ RENDER_LINE( ELT(j), ELT(j-1) );
+ }
+ POSTFIX;
+}
+
+
+static void TAG(render_line_strip)( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ GLuint j;
+ LOCAL_VARS;
+ (void) flags;
+
+ INIT(GL_LINE_STRIP);
+
+ if (TEST_PRIM_BEGIN(flags)) {
+ RESET_STIPPLE;
+ }
+
+ for (j=start+1; j<count; j++ ) {
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
+ RENDER_LINE( ELT(j-1), ELT(j) );
+ else
+ RENDER_LINE( ELT(j), ELT(j-1) );
+ }
+ POSTFIX;
+}
+
+
+static void TAG(render_line_loop)( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ GLuint i;
+ LOCAL_VARS;
+
+ (void) flags;
+
+ INIT(GL_LINE_LOOP);
+
+ if (start+1 < count) {
+ if (TEST_PRIM_BEGIN(flags)) {
+ RESET_STIPPLE;
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
+ RENDER_LINE( ELT(start), ELT(start+1) );
+ else
+ RENDER_LINE( ELT(start+1), ELT(start) );
+ }
+
+ for ( i = start+2 ; i < count ; i++) {
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
+ RENDER_LINE( ELT(i-1), ELT(i) );
+ else
+ RENDER_LINE( ELT(i), ELT(i-1) );
+ }
+
+ if ( TEST_PRIM_END(flags)) {
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
+ RENDER_LINE( ELT(count-1), ELT(start) );
+ else
+ RENDER_LINE( ELT(start), ELT(count-1) );
+ }
+ }
+
+ POSTFIX;
+}
+
+
+static void TAG(render_triangles)( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ GLuint j;
+ LOCAL_VARS;
+ (void) flags;
+
+ INIT(GL_TRIANGLES);
+ if (NEED_EDGEFLAG_SETUP) {
+ for (j=start+2; j<count; j+=3) {
+ /* Leave the edgeflags as supplied by the user.
+ */
+ RESET_STIPPLE;
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
+ RENDER_TRI( ELT(j-2), ELT(j-1), ELT(j) );
+ else
+ RENDER_TRI( ELT(j-1), ELT(j), ELT(j-2) );
+ }
+ } else {
+ for (j=start+2; j<count; j+=3) {
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
+ RENDER_TRI( ELT(j-2), ELT(j-1), ELT(j) );
+ else
+ RENDER_TRI( ELT(j-1), ELT(j), ELT(j-2) );
+ }
+ }
+ POSTFIX;
+}
+
+
+
+static void TAG(render_tri_strip)( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ GLuint j;
+ GLuint parity = 0;
+ LOCAL_VARS;
+
+ INIT(GL_TRIANGLE_STRIP);
+ if (NEED_EDGEFLAG_SETUP) {
+ for (j=start+2;j<count;j++,parity^=1) {
+ GLuint ej2, ej1, ej;
+ GLboolean ef2, ef1, ef;
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT) {
+ ej2 = ELT(j-2+parity);
+ ej1 = ELT(j-1-parity);
+ ej = ELT(j);
+ }
+ else {
+ ej2 = ELT(j-1+parity);
+ ej1 = ELT(j-parity);
+ ej = ELT(j-2);
+ }
+ ef2 = EDGEFLAG_GET( ej2 );
+ ef1 = EDGEFLAG_GET( ej1 );
+ ef = EDGEFLAG_GET( ej );
+ if (TEST_PRIM_BEGIN(flags)) {
+ RESET_STIPPLE;
+ }
+ EDGEFLAG_SET( ej2, GL_TRUE );
+ EDGEFLAG_SET( ej1, GL_TRUE );
+ EDGEFLAG_SET( ej, GL_TRUE );
+ RENDER_TRI( ej2, ej1, ej );
+ EDGEFLAG_SET( ej2, ef2 );
+ EDGEFLAG_SET( ej1, ef1 );
+ EDGEFLAG_SET( ej, ef );
+ }
+ } else {
+ for (j=start+2; j<count ; j++, parity^=1) {
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
+ RENDER_TRI( ELT(j-2+parity), ELT(j-1-parity), ELT(j) );
+ else
+ RENDER_TRI( ELT(j-1+parity), ELT(j-parity), ELT(j-2) );
+ }
+ }
+ POSTFIX;
+}
+
+
+static void TAG(render_tri_fan)( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ GLuint j;
+ LOCAL_VARS;
+ (void) flags;
+
+ INIT(GL_TRIANGLE_FAN);
+ if (NEED_EDGEFLAG_SETUP) {
+ for (j=start+2;j<count;j++) {
+ /* For trifans, all edges are boundary.
+ */
+ GLuint ejs = ELT(start);
+ GLuint ej1 = ELT(j-1);
+ GLuint ej = ELT(j);
+ GLboolean efs = EDGEFLAG_GET( ejs );
+ GLboolean ef1 = EDGEFLAG_GET( ej1 );
+ GLboolean ef = EDGEFLAG_GET( ej );
+ if (TEST_PRIM_BEGIN(flags)) {
+ RESET_STIPPLE;
+ }
+ EDGEFLAG_SET( ejs, GL_TRUE );
+ EDGEFLAG_SET( ej1, GL_TRUE );
+ EDGEFLAG_SET( ej, GL_TRUE );
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
+ RENDER_TRI( ejs, ej1, ej);
+ else
+ RENDER_TRI( ej, ejs, ej1);
+ EDGEFLAG_SET( ejs, efs );
+ EDGEFLAG_SET( ej1, ef1 );
+ EDGEFLAG_SET( ej, ef );
+ }
+ } else {
+ for (j=start+2;j<count;j++) {
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
+ RENDER_TRI( ELT(start), ELT(j-1), ELT(j) );
+ else
+ RENDER_TRI( ELT(j), ELT(start), ELT(j-1) );
+ }
+ }
+
+ POSTFIX;
+}
+
+
+static void TAG(render_poly)( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ GLuint j = start+2;
+ LOCAL_VARS;
+ (void) flags;
+
+ INIT(GL_POLYGON);
+ if (NEED_EDGEFLAG_SETUP) {
+ GLboolean efstart = EDGEFLAG_GET( ELT(start) );
+ GLboolean efcount = EDGEFLAG_GET( ELT(count-1) );
+
+ /* If the primitive does not begin here, the first edge
+ * is non-boundary.
+ */
+ if (!TEST_PRIM_BEGIN(flags))
+ EDGEFLAG_SET( ELT(start), GL_FALSE );
+ else {
+ RESET_STIPPLE;
+ }
+
+ /* If the primitive does not end here, the final edge is
+ * non-boundary.
+ */
+ if (!TEST_PRIM_END(flags))
+ EDGEFLAG_SET( ELT(count-1), GL_FALSE );
+
+ /* Draw the first triangles (possibly zero)
+ */
+ if (j+1<count) {
+ GLboolean ef = EDGEFLAG_GET( ELT(j) );
+ EDGEFLAG_SET( ELT(j), GL_FALSE );
+ RENDER_TRI( ELT(j-1), ELT(j), ELT(start) );
+ EDGEFLAG_SET( ELT(j), ef );
+ j++;
+
+ /* Don't render the first edge again:
+ */
+ EDGEFLAG_SET( ELT(start), GL_FALSE );
+
+ for (;j+1<count;j++) {
+ GLboolean efj = EDGEFLAG_GET( ELT(j) );
+ EDGEFLAG_SET( ELT(j), GL_FALSE );
+ RENDER_TRI( ELT(j-1), ELT(j), ELT(start) );
+ EDGEFLAG_SET( ELT(j), efj );
+ }
+ }
+
+ /* Draw the last or only triangle
+ */
+ if (j < count)
+ RENDER_TRI( ELT(j-1), ELT(j), ELT(start) );
+
+ /* Restore the first and last edgeflags:
+ */
+ EDGEFLAG_SET( ELT(count-1), efcount );
+ EDGEFLAG_SET( ELT(start), efstart );
+
+ }
+ else {
+ for (j=start+2;j<count;j++) {
+ RENDER_TRI( ELT(j-1), ELT(j), ELT(start) );
+ }
+ }
+ POSTFIX;
+}
+
+static void TAG(render_quads)( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ GLuint j;
+ LOCAL_VARS;
+ (void) flags;
+
+ INIT(GL_QUADS);
+ if (NEED_EDGEFLAG_SETUP) {
+ for (j=start+3; j<count; j+=4) {
+ /* Use user-specified edgeflags for quads.
+ */
+ RESET_STIPPLE;
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
+ !ctx->Const.QuadsFollowProvokingVertexConvention)
+ RENDER_QUAD( ELT(j-3), ELT(j-2), ELT(j-1), ELT(j) );
+ else
+ RENDER_QUAD( ELT(j-2), ELT(j-1), ELT(j), ELT(j-3) );
+ }
+ } else {
+ for (j=start+3; j<count; j+=4) {
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
+ !ctx->Const.QuadsFollowProvokingVertexConvention)
+ RENDER_QUAD( ELT(j-3), ELT(j-2), ELT(j-1), ELT(j) );
+ else
+ RENDER_QUAD( ELT(j-2), ELT(j-1), ELT(j), ELT(j-3) );
+ }
+ }
+ POSTFIX;
+}
+
+static void TAG(render_quad_strip)( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ GLuint j;
+ LOCAL_VARS;
+ (void) flags;
+
+ INIT(GL_QUAD_STRIP);
+ if (NEED_EDGEFLAG_SETUP) {
+ for (j=start+3;j<count;j+=2) {
+ /* All edges are boundary. Set edgeflags to 1, draw the
+ * quad, and restore them to the original values.
+ */
+ GLboolean ef3 = EDGEFLAG_GET( ELT(j-3) );
+ GLboolean ef2 = EDGEFLAG_GET( ELT(j-2) );
+ GLboolean ef1 = EDGEFLAG_GET( ELT(j-1) );
+ GLboolean ef = EDGEFLAG_GET( ELT(j) );
+ if (TEST_PRIM_BEGIN(flags)) {
+ RESET_STIPPLE;
+ }
+ EDGEFLAG_SET( ELT(j-3), GL_TRUE );
+ EDGEFLAG_SET( ELT(j-2), GL_TRUE );
+ EDGEFLAG_SET( ELT(j-1), GL_TRUE );
+ EDGEFLAG_SET( ELT(j), GL_TRUE );
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
+ !ctx->Const.QuadsFollowProvokingVertexConvention)
+ RENDER_QUAD( ELT(j-1), ELT(j-3), ELT(j-2), ELT(j) );
+ else
+ RENDER_QUAD( ELT(j-2), ELT(j), ELT(j-1), ELT(j-3) );
+ EDGEFLAG_SET( ELT(j-3), ef3 );
+ EDGEFLAG_SET( ELT(j-2), ef2 );
+ EDGEFLAG_SET( ELT(j-1), ef1 );
+ EDGEFLAG_SET( ELT(j), ef );
+ }
+ } else {
+ for (j=start+3;j<count;j+=2) {
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT ||
+ !ctx->Const.QuadsFollowProvokingVertexConvention)
+ RENDER_QUAD( ELT(j-1), ELT(j-3), ELT(j-2), ELT(j) );
+ else
+ RENDER_QUAD( ELT(j-2), ELT(j), ELT(j-1), ELT(j-3) );
+ }
+ }
+ POSTFIX;
+}
+
+static void TAG(render_noop)( struct gl_context *ctx,
+ GLuint start,
+ GLuint count,
+ GLuint flags )
+{
+ (void)(ctx && start && count && flags);
+}
+
+RENDER_TAB_QUALIFIER void (*TAG(render_tab)[GL_POLYGON+2])(struct gl_context *,
+ GLuint,
+ GLuint,
+ GLuint) =
+{
+ TAG(render_points),
+ TAG(render_lines),
+ TAG(render_line_loop),
+ TAG(render_line_strip),
+ TAG(render_triangles),
+ TAG(render_tri_strip),
+ TAG(render_tri_fan),
+ TAG(render_quads),
+ TAG(render_quad_strip),
+ TAG(render_poly),
+ TAG(render_noop),
+};
+
+
+
+#ifndef PRESERVE_VB_DEFS
+#undef RENDER_TRI
+#undef RENDER_QUAD
+#undef RENDER_LINE
+#undef RENDER_POINTS
+#undef LOCAL_VARS
+#undef INIT
+#undef POSTFIX
+#undef RESET_STIPPLE
+#undef DBG
+#undef ELT
+#undef RENDER_TAB_QUALIFIER
+#endif
+
+#ifndef PRESERVE_TAG
+#undef TAG
+#endif
+
+#undef PRESERVE_VB_DEFS
+#undef PRESERVE_TAG
diff --git a/mesalib/src/mesa/tnl/t_vb_texgen.c b/mesalib/src/mesa/tnl/t_vb_texgen.c
index 228808461..61430c396 100644
--- a/mesalib/src/mesa/tnl/t_vb_texgen.c
+++ b/mesalib/src/mesa/tnl/t_vb_texgen.c
@@ -1,609 +1,609 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Brian Paul
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-/*
- * Regarding GL_NV_texgen_reflection:
- *
- * Portions of this software may use or implement intellectual
- * property owned and licensed by NVIDIA Corporation. NVIDIA disclaims
- * any and all warranties with respect to such intellectual property,
- * including any use thereof or modifications thereto.
- */
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/imports.h"
-#include "main/mtypes.h"
-
-#include "math/m_xform.h"
-
-#include "t_context.h"
-#include "t_pipeline.h"
-
-
-/***********************************************************************
- * Automatic texture coordinate generation (texgen) code.
- */
-
-
-struct texgen_stage_data;
-
-typedef void (*texgen_func)( struct gl_context *ctx,
- struct texgen_stage_data *store,
- GLuint unit);
-
-
-struct texgen_stage_data {
-
- /* Per-texunit derived state.
- */
- GLuint TexgenSize[MAX_TEXTURE_COORD_UNITS];
- texgen_func TexgenFunc[MAX_TEXTURE_COORD_UNITS];
-
- /* Temporary values used in texgen.
- */
- GLfloat (*tmp_f)[3];
- GLfloat *tmp_m;
-
- /* Buffered outputs of the stage.
- */
- GLvector4f texcoord[MAX_TEXTURE_COORD_UNITS];
-};
-
-
-#define TEXGEN_STAGE_DATA(stage) ((struct texgen_stage_data *)stage->privatePtr)
-
-
-
-static GLuint all_bits[5] = {
- 0,
- VEC_SIZE_1,
- VEC_SIZE_2,
- VEC_SIZE_3,
- VEC_SIZE_4,
-};
-
-#define VEC_SIZE_FLAGS (VEC_SIZE_1|VEC_SIZE_2|VEC_SIZE_3|VEC_SIZE_4)
-
-#define TEXGEN_NEED_M (TEXGEN_SPHERE_MAP)
-#define TEXGEN_NEED_F (TEXGEN_SPHERE_MAP | \
- TEXGEN_REFLECTION_MAP_NV)
-
-
-
-static void build_m3( GLfloat f[][3], GLfloat m[],
- const GLvector4f *normal,
- const GLvector4f *eye )
-{
- GLuint stride = eye->stride;
- GLfloat *coord = (GLfloat *)eye->start;
- GLuint count = eye->count;
- const GLfloat *norm = normal->start;
- GLuint i;
-
- for (i=0;i<count;i++,STRIDE_F(coord,stride),STRIDE_F(norm,normal->stride)) {
- GLfloat u[3], two_nu, fx, fy, fz;
- COPY_3V( u, coord );
- NORMALIZE_3FV( u );
- two_nu = 2.0F * DOT3(norm,u);
- fx = f[i][0] = u[0] - norm[0] * two_nu;
- fy = f[i][1] = u[1] - norm[1] * two_nu;
- fz = f[i][2] = u[2] - norm[2] * two_nu;
- m[i] = fx * fx + fy * fy + (fz + 1.0F) * (fz + 1.0F);
- if (m[i] != 0.0F) {
- m[i] = 0.5F * _mesa_inv_sqrtf(m[i]);
- }
- }
-}
-
-
-
-static void build_m2( GLfloat f[][3], GLfloat m[],
- const GLvector4f *normal,
- const GLvector4f *eye )
-{
- GLuint stride = eye->stride;
- GLfloat *coord = eye->start;
- GLuint count = eye->count;
-
- GLfloat *norm = normal->start;
- GLuint i;
-
- for (i=0;i<count;i++,STRIDE_F(coord,stride),STRIDE_F(norm,normal->stride)) {
- GLfloat u[3], two_nu, fx, fy, fz;
- COPY_2V( u, coord );
- u[2] = 0;
- NORMALIZE_3FV( u );
- two_nu = 2.0F * DOT3(norm,u);
- fx = f[i][0] = u[0] - norm[0] * two_nu;
- fy = f[i][1] = u[1] - norm[1] * two_nu;
- fz = f[i][2] = u[2] - norm[2] * two_nu;
- m[i] = fx * fx + fy * fy + (fz + 1.0F) * (fz + 1.0F);
- if (m[i] != 0.0F) {
- m[i] = 0.5F * _mesa_inv_sqrtf(m[i]);
- }
- }
-}
-
-
-
-typedef void (*build_m_func)( GLfloat f[][3],
- GLfloat m[],
- const GLvector4f *normal,
- const GLvector4f *eye );
-
-
-static build_m_func build_m_tab[5] = {
- NULL,
- NULL,
- build_m2,
- build_m3,
- build_m3
-};
-
-
-/* This is unusual in that we respect the stride of the output vector
- * (f). This allows us to pass in either a texcoord vector4f, or a
- * temporary vector3f.
- */
-static void build_f3( GLfloat *f,
- GLuint fstride,
- const GLvector4f *normal,
- const GLvector4f *eye )
-{
- GLuint stride = eye->stride;
- GLfloat *coord = eye->start;
- GLuint count = eye->count;
-
- GLfloat *norm = normal->start;
- GLuint i;
-
- for (i=0;i<count;i++) {
- GLfloat u[3], two_nu;
- COPY_3V( u, coord );
- NORMALIZE_3FV( u );
- two_nu = 2.0F * DOT3(norm,u);
- f[0] = u[0] - norm[0] * two_nu;
- f[1] = u[1] - norm[1] * two_nu;
- f[2] = u[2] - norm[2] * two_nu;
- STRIDE_F(coord,stride);
- STRIDE_F(f,fstride);
- STRIDE_F(norm, normal->stride);
- }
-}
-
-
-static void build_f2( GLfloat *f,
- GLuint fstride,
- const GLvector4f *normal,
- const GLvector4f *eye )
-{
- GLuint stride = eye->stride;
- GLfloat *coord = eye->start;
- GLuint count = eye->count;
- GLfloat *norm = normal->start;
- GLuint i;
-
- for (i=0;i<count;i++) {
-
- GLfloat u[3], two_nu;
- COPY_2V( u, coord );
- u[2] = 0;
- NORMALIZE_3FV( u );
- two_nu = 2.0F * DOT3(norm,u);
- f[0] = u[0] - norm[0] * two_nu;
- f[1] = u[1] - norm[1] * two_nu;
- f[2] = u[2] - norm[2] * two_nu;
-
- STRIDE_F(coord,stride);
- STRIDE_F(f,fstride);
- STRIDE_F(norm, normal->stride);
- }
-}
-
-typedef void (*build_f_func)( GLfloat *f,
- GLuint fstride,
- const GLvector4f *normal_vec,
- const GLvector4f *eye );
-
-
-
-/* Just treat 4-vectors as 3-vectors.
- */
-static build_f_func build_f_tab[5] = {
- NULL,
- NULL,
- build_f2,
- build_f3,
- build_f3
-};
-
-
-
-/* Special case texgen functions.
- */
-static void texgen_reflection_map_nv( struct gl_context *ctx,
- struct texgen_stage_data *store,
- GLuint unit )
-{
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- GLvector4f *in = VB->AttribPtr[VERT_ATTRIB_TEX0 + unit];
- GLvector4f *out = &store->texcoord[unit];
-
- build_f_tab[VB->EyePtr->size]( out->start,
- out->stride,
- VB->AttribPtr[_TNL_ATTRIB_NORMAL],
- VB->EyePtr );
-
- out->flags |= (in->flags & VEC_SIZE_FLAGS) | VEC_SIZE_3;
- out->count = VB->Count;
- out->size = MAX2(in->size, 3);
- if (in->size == 4)
- _mesa_copy_tab[0x8]( out, in );
-}
-
-
-
-static void texgen_normal_map_nv( struct gl_context *ctx,
- struct texgen_stage_data *store,
- GLuint unit )
-{
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- GLvector4f *in = VB->AttribPtr[VERT_ATTRIB_TEX0 + unit];
- GLvector4f *out = &store->texcoord[unit];
- GLvector4f *normal = VB->AttribPtr[_TNL_ATTRIB_NORMAL];
- GLfloat (*texcoord)[4] = (GLfloat (*)[4])out->start;
- GLuint count = VB->Count;
- GLuint i;
- const GLfloat *norm = normal->start;
-
- for (i=0;i<count;i++, STRIDE_F(norm, normal->stride)) {
- texcoord[i][0] = norm[0];
- texcoord[i][1] = norm[1];
- texcoord[i][2] = norm[2];
- }
-
-
- out->flags |= (in->flags & VEC_SIZE_FLAGS) | VEC_SIZE_3;
- out->count = count;
- out->size = MAX2(in->size, 3);
- if (in->size == 4)
- _mesa_copy_tab[0x8]( out, in );
-}
-
-
-static void texgen_sphere_map( struct gl_context *ctx,
- struct texgen_stage_data *store,
- GLuint unit )
-{
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- GLvector4f *in = VB->AttribPtr[VERT_ATTRIB_TEX0 + unit];
- GLvector4f *out = &store->texcoord[unit];
- GLfloat (*texcoord)[4] = (GLfloat (*)[4]) out->start;
- GLuint count = VB->Count;
- GLuint i;
- GLfloat (*f)[3] = store->tmp_f;
- GLfloat *m = store->tmp_m;
-
- (build_m_tab[VB->EyePtr->size])( store->tmp_f,
- store->tmp_m,
- VB->AttribPtr[_TNL_ATTRIB_NORMAL],
- VB->EyePtr );
-
- out->size = MAX2(in->size,2);
-
- for (i=0;i<count;i++) {
- texcoord[i][0] = f[i][0] * m[i] + 0.5F;
- texcoord[i][1] = f[i][1] * m[i] + 0.5F;
- }
-
- out->count = count;
- out->flags |= (in->flags & VEC_SIZE_FLAGS) | VEC_SIZE_2;
- if (in->size > 2)
- _mesa_copy_tab[all_bits[in->size] & ~0x3]( out, in );
-}
-
-
-
-static void texgen( struct gl_context *ctx,
- struct texgen_stage_data *store,
- GLuint unit )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
- GLvector4f *in = VB->AttribPtr[VERT_ATTRIB_TEX0 + unit];
- GLvector4f *out = &store->texcoord[unit];
- const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
- const GLvector4f *obj = VB->AttribPtr[_TNL_ATTRIB_POS];
- const GLvector4f *eye = VB->EyePtr;
- const GLvector4f *normal = VB->AttribPtr[_TNL_ATTRIB_NORMAL];
- const GLfloat *m = store->tmp_m;
- const GLuint count = VB->Count;
- GLfloat (*texcoord)[4] = (GLfloat (*)[4])out->data;
- GLfloat (*f)[3] = store->tmp_f;
- GLuint copy;
-
- if (texUnit->_GenFlags & TEXGEN_NEED_M) {
- build_m_tab[eye->size]( store->tmp_f, store->tmp_m, normal, eye );
- } else if (texUnit->_GenFlags & TEXGEN_NEED_F) {
- build_f_tab[eye->size]( (GLfloat *)store->tmp_f, 3, normal, eye );
- }
-
-
- out->size = MAX2(in->size, store->TexgenSize[unit]);
- out->flags |= (in->flags & VEC_SIZE_FLAGS) | texUnit->TexGenEnabled;
- out->count = count;
-
- copy = (all_bits[in->size] & ~texUnit->TexGenEnabled);
- if (copy)
- _mesa_copy_tab[copy]( out, in );
-
- if (texUnit->TexGenEnabled & S_BIT) {
- GLuint i;
- switch (texUnit->GenS.Mode) {
- case GL_OBJECT_LINEAR:
- _mesa_dotprod_tab[obj->size]( (GLfloat *)out->data,
- sizeof(out->data[0]), obj,
- texUnit->GenS.ObjectPlane );
- break;
- case GL_EYE_LINEAR:
- _mesa_dotprod_tab[eye->size]( (GLfloat *)out->data,
- sizeof(out->data[0]), eye,
- texUnit->GenS.EyePlane );
- break;
- case GL_SPHERE_MAP:
- for (i = 0; i < count; i++)
- texcoord[i][0] = f[i][0] * m[i] + 0.5F;
- break;
- case GL_REFLECTION_MAP_NV:
- for (i=0;i<count;i++)
- texcoord[i][0] = f[i][0];
- break;
- case GL_NORMAL_MAP_NV: {
- const GLfloat *norm = normal->start;
- for (i=0;i<count;i++, STRIDE_F(norm, normal->stride)) {
- texcoord[i][0] = norm[0];
- }
- break;
- }
- default:
- _mesa_problem(ctx, "Bad S texgen");
- }
- }
-
- if (texUnit->TexGenEnabled & T_BIT) {
- GLuint i;
- switch (texUnit->GenT.Mode) {
- case GL_OBJECT_LINEAR:
- _mesa_dotprod_tab[obj->size]( &(out->data[0][1]),
- sizeof(out->data[0]), obj,
- texUnit->GenT.ObjectPlane );
- break;
- case GL_EYE_LINEAR:
- _mesa_dotprod_tab[eye->size]( &(out->data[0][1]),
- sizeof(out->data[0]), eye,
- texUnit->GenT.EyePlane );
- break;
- case GL_SPHERE_MAP:
- for (i = 0; i < count; i++)
- texcoord[i][1] = f[i][1] * m[i] + 0.5F;
- break;
- case GL_REFLECTION_MAP_NV:
- for (i=0;i<count;i++)
- texcoord[i][1] = f[i][1];
- break;
- case GL_NORMAL_MAP_NV: {
- const GLfloat *norm = normal->start;
- for (i=0;i<count;i++, STRIDE_F(norm, normal->stride)) {
- texcoord[i][1] = norm[1];
- }
- break;
- }
- default:
- _mesa_problem(ctx, "Bad T texgen");
- }
- }
-
- if (texUnit->TexGenEnabled & R_BIT) {
- GLuint i;
- switch (texUnit->GenR.Mode) {
- case GL_OBJECT_LINEAR:
- _mesa_dotprod_tab[obj->size]( &(out->data[0][2]),
- sizeof(out->data[0]), obj,
- texUnit->GenR.ObjectPlane );
- break;
- case GL_EYE_LINEAR:
- _mesa_dotprod_tab[eye->size]( &(out->data[0][2]),
- sizeof(out->data[0]), eye,
- texUnit->GenR.EyePlane );
- break;
- case GL_REFLECTION_MAP_NV:
- for (i=0;i<count;i++)
- texcoord[i][2] = f[i][2];
- break;
- case GL_NORMAL_MAP_NV: {
- const GLfloat *norm = normal->start;
- for (i=0;i<count;i++,STRIDE_F(norm, normal->stride)) {
- texcoord[i][2] = norm[2];
- }
- break;
- }
- default:
- _mesa_problem(ctx, "Bad R texgen");
- }
- }
-
- if (texUnit->TexGenEnabled & Q_BIT) {
- switch (texUnit->GenQ.Mode) {
- case GL_OBJECT_LINEAR:
- _mesa_dotprod_tab[obj->size]( &(out->data[0][3]),
- sizeof(out->data[0]), obj,
- texUnit->GenQ.ObjectPlane );
- break;
- case GL_EYE_LINEAR:
- _mesa_dotprod_tab[eye->size]( &(out->data[0][3]),
- sizeof(out->data[0]), eye,
- texUnit->GenQ.EyePlane );
- break;
- default:
- _mesa_problem(ctx, "Bad Q texgen");
- }
- }
-}
-
-
-
-
-static GLboolean run_texgen_stage( struct gl_context *ctx,
- struct tnl_pipeline_stage *stage )
-{
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- struct texgen_stage_data *store = TEXGEN_STAGE_DATA(stage);
- GLuint i;
-
- if (!ctx->Texture._TexGenEnabled || ctx->VertexProgram._Current)
- return GL_TRUE;
-
- for (i = 0 ; i < ctx->Const.MaxTextureCoordUnits ; i++) {
- struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i];
-
- if (texUnit->TexGenEnabled) {
-
- store->TexgenFunc[i]( ctx, store, i );
-
- VB->AttribPtr[VERT_ATTRIB_TEX0 + i] = &store->texcoord[i];
- }
- }
-
- return GL_TRUE;
-}
-
-
-static void validate_texgen_stage( struct gl_context *ctx,
- struct tnl_pipeline_stage *stage )
-{
- struct texgen_stage_data *store = TEXGEN_STAGE_DATA(stage);
- GLuint i;
-
- if (!ctx->Texture._TexGenEnabled || ctx->VertexProgram._Current)
- return;
-
- for (i = 0 ; i < ctx->Const.MaxTextureCoordUnits ; i++) {
- struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i];
-
- if (texUnit->TexGenEnabled) {
- GLuint sz;
-
- if (texUnit->TexGenEnabled & Q_BIT)
- sz = 4;
- else if (texUnit->TexGenEnabled & R_BIT)
- sz = 3;
- else if (texUnit->TexGenEnabled & T_BIT)
- sz = 2;
- else
- sz = 1;
-
- store->TexgenSize[i] = sz;
- store->TexgenFunc[i] = texgen; /* general solution */
-
- /* look for special texgen cases */
- if (texUnit->TexGenEnabled == (S_BIT|T_BIT|R_BIT)) {
- if (texUnit->_GenFlags == TEXGEN_REFLECTION_MAP_NV) {
- store->TexgenFunc[i] = texgen_reflection_map_nv;
- }
- else if (texUnit->_GenFlags == TEXGEN_NORMAL_MAP_NV) {
- store->TexgenFunc[i] = texgen_normal_map_nv;
- }
- }
- else if (texUnit->TexGenEnabled == (S_BIT|T_BIT) &&
- texUnit->_GenFlags == TEXGEN_SPHERE_MAP) {
- store->TexgenFunc[i] = texgen_sphere_map;
- }
- }
- }
-}
-
-
-
-
-
-/* Called the first time stage->run() is invoked.
- */
-static GLboolean alloc_texgen_data( struct gl_context *ctx,
- struct tnl_pipeline_stage *stage )
-{
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- struct texgen_stage_data *store;
- GLuint i;
-
- stage->privatePtr = CALLOC(sizeof(*store));
- store = TEXGEN_STAGE_DATA(stage);
- if (!store)
- return GL_FALSE;
-
- for (i = 0 ; i < ctx->Const.MaxTextureCoordUnits ; i++)
- _mesa_vector4f_alloc( &store->texcoord[i], 0, VB->Size, 32 );
-
- store->tmp_f = (GLfloat (*)[3]) MALLOC(VB->Size * sizeof(GLfloat) * 3);
- store->tmp_m = (GLfloat *) MALLOC(VB->Size * sizeof(GLfloat));
-
- return GL_TRUE;
-}
-
-
-static void free_texgen_data( struct tnl_pipeline_stage *stage )
-
-{
- struct texgen_stage_data *store = TEXGEN_STAGE_DATA(stage);
- GLuint i;
-
- if (store) {
- for (i = 0 ; i < MAX_TEXTURE_COORD_UNITS ; i++)
- if (store->texcoord[i].data)
- _mesa_vector4f_free( &store->texcoord[i] );
-
-
- if (store->tmp_f) FREE( store->tmp_f );
- if (store->tmp_m) FREE( store->tmp_m );
- FREE( store );
- stage->privatePtr = NULL;
- }
-}
-
-
-
-const struct tnl_pipeline_stage _tnl_texgen_stage =
-{
- "texgen", /* name */
- NULL, /* private data */
- alloc_texgen_data, /* destructor */
- free_texgen_data, /* destructor */
- validate_texgen_stage, /* check */
- run_texgen_stage /* run -- initially set to alloc data */
-};
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Brian Paul
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+/*
+ * Regarding GL_NV_texgen_reflection:
+ *
+ * Portions of this software may use or implement intellectual
+ * property owned and licensed by NVIDIA Corporation. NVIDIA disclaims
+ * any and all warranties with respect to such intellectual property,
+ * including any use thereof or modifications thereto.
+ */
+
+#include "main/glheader.h"
+#include "main/colormac.h"
+#include "main/macros.h"
+#include "main/imports.h"
+#include "main/mtypes.h"
+
+#include "math/m_xform.h"
+
+#include "t_context.h"
+#include "t_pipeline.h"
+
+
+/***********************************************************************
+ * Automatic texture coordinate generation (texgen) code.
+ */
+
+
+struct texgen_stage_data;
+
+typedef void (*texgen_func)( struct gl_context *ctx,
+ struct texgen_stage_data *store,
+ GLuint unit);
+
+
+struct texgen_stage_data {
+
+ /* Per-texunit derived state.
+ */
+ GLuint TexgenSize[MAX_TEXTURE_COORD_UNITS];
+ texgen_func TexgenFunc[MAX_TEXTURE_COORD_UNITS];
+
+ /* Temporary values used in texgen.
+ */
+ GLfloat (*tmp_f)[3];
+ GLfloat *tmp_m;
+
+ /* Buffered outputs of the stage.
+ */
+ GLvector4f texcoord[MAX_TEXTURE_COORD_UNITS];
+};
+
+
+#define TEXGEN_STAGE_DATA(stage) ((struct texgen_stage_data *)stage->privatePtr)
+
+
+
+static GLuint all_bits[5] = {
+ 0,
+ VEC_SIZE_1,
+ VEC_SIZE_2,
+ VEC_SIZE_3,
+ VEC_SIZE_4,
+};
+
+#define VEC_SIZE_FLAGS (VEC_SIZE_1|VEC_SIZE_2|VEC_SIZE_3|VEC_SIZE_4)
+
+#define TEXGEN_NEED_M (TEXGEN_SPHERE_MAP)
+#define TEXGEN_NEED_F (TEXGEN_SPHERE_MAP | \
+ TEXGEN_REFLECTION_MAP_NV)
+
+
+
+static void build_m3( GLfloat f[][3], GLfloat m[],
+ const GLvector4f *normal,
+ const GLvector4f *eye )
+{
+ GLuint stride = eye->stride;
+ GLfloat *coord = (GLfloat *)eye->start;
+ GLuint count = eye->count;
+ const GLfloat *norm = normal->start;
+ GLuint i;
+
+ for (i=0;i<count;i++,STRIDE_F(coord,stride),STRIDE_F(norm,normal->stride)) {
+ GLfloat u[3], two_nu, fx, fy, fz;
+ COPY_3V( u, coord );
+ NORMALIZE_3FV( u );
+ two_nu = 2.0F * DOT3(norm,u);
+ fx = f[i][0] = u[0] - norm[0] * two_nu;
+ fy = f[i][1] = u[1] - norm[1] * two_nu;
+ fz = f[i][2] = u[2] - norm[2] * two_nu;
+ m[i] = fx * fx + fy * fy + (fz + 1.0F) * (fz + 1.0F);
+ if (m[i] != 0.0F) {
+ m[i] = 0.5F * _mesa_inv_sqrtf(m[i]);
+ }
+ }
+}
+
+
+
+static void build_m2( GLfloat f[][3], GLfloat m[],
+ const GLvector4f *normal,
+ const GLvector4f *eye )
+{
+ GLuint stride = eye->stride;
+ GLfloat *coord = eye->start;
+ GLuint count = eye->count;
+
+ GLfloat *norm = normal->start;
+ GLuint i;
+
+ for (i=0;i<count;i++,STRIDE_F(coord,stride),STRIDE_F(norm,normal->stride)) {
+ GLfloat u[3], two_nu, fx, fy, fz;
+ COPY_2V( u, coord );
+ u[2] = 0;
+ NORMALIZE_3FV( u );
+ two_nu = 2.0F * DOT3(norm,u);
+ fx = f[i][0] = u[0] - norm[0] * two_nu;
+ fy = f[i][1] = u[1] - norm[1] * two_nu;
+ fz = f[i][2] = u[2] - norm[2] * two_nu;
+ m[i] = fx * fx + fy * fy + (fz + 1.0F) * (fz + 1.0F);
+ if (m[i] != 0.0F) {
+ m[i] = 0.5F * _mesa_inv_sqrtf(m[i]);
+ }
+ }
+}
+
+
+
+typedef void (*build_m_func)( GLfloat f[][3],
+ GLfloat m[],
+ const GLvector4f *normal,
+ const GLvector4f *eye );
+
+
+static build_m_func build_m_tab[5] = {
+ NULL,
+ NULL,
+ build_m2,
+ build_m3,
+ build_m3
+};
+
+
+/* This is unusual in that we respect the stride of the output vector
+ * (f). This allows us to pass in either a texcoord vector4f, or a
+ * temporary vector3f.
+ */
+static void build_f3( GLfloat *f,
+ GLuint fstride,
+ const GLvector4f *normal,
+ const GLvector4f *eye )
+{
+ GLuint stride = eye->stride;
+ GLfloat *coord = eye->start;
+ GLuint count = eye->count;
+
+ GLfloat *norm = normal->start;
+ GLuint i;
+
+ for (i=0;i<count;i++) {
+ GLfloat u[3], two_nu;
+ COPY_3V( u, coord );
+ NORMALIZE_3FV( u );
+ two_nu = 2.0F * DOT3(norm,u);
+ f[0] = u[0] - norm[0] * two_nu;
+ f[1] = u[1] - norm[1] * two_nu;
+ f[2] = u[2] - norm[2] * two_nu;
+ STRIDE_F(coord,stride);
+ STRIDE_F(f,fstride);
+ STRIDE_F(norm, normal->stride);
+ }
+}
+
+
+static void build_f2( GLfloat *f,
+ GLuint fstride,
+ const GLvector4f *normal,
+ const GLvector4f *eye )
+{
+ GLuint stride = eye->stride;
+ GLfloat *coord = eye->start;
+ GLuint count = eye->count;
+ GLfloat *norm = normal->start;
+ GLuint i;
+
+ for (i=0;i<count;i++) {
+
+ GLfloat u[3], two_nu;
+ COPY_2V( u, coord );
+ u[2] = 0;
+ NORMALIZE_3FV( u );
+ two_nu = 2.0F * DOT3(norm,u);
+ f[0] = u[0] - norm[0] * two_nu;
+ f[1] = u[1] - norm[1] * two_nu;
+ f[2] = u[2] - norm[2] * two_nu;
+
+ STRIDE_F(coord,stride);
+ STRIDE_F(f,fstride);
+ STRIDE_F(norm, normal->stride);
+ }
+}
+
+typedef void (*build_f_func)( GLfloat *f,
+ GLuint fstride,
+ const GLvector4f *normal_vec,
+ const GLvector4f *eye );
+
+
+
+/* Just treat 4-vectors as 3-vectors.
+ */
+static build_f_func build_f_tab[5] = {
+ NULL,
+ NULL,
+ build_f2,
+ build_f3,
+ build_f3
+};
+
+
+
+/* Special case texgen functions.
+ */
+static void texgen_reflection_map_nv( struct gl_context *ctx,
+ struct texgen_stage_data *store,
+ GLuint unit )
+{
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ GLvector4f *in = VB->AttribPtr[VERT_ATTRIB_TEX0 + unit];
+ GLvector4f *out = &store->texcoord[unit];
+
+ build_f_tab[VB->EyePtr->size]( out->start,
+ out->stride,
+ VB->AttribPtr[_TNL_ATTRIB_NORMAL],
+ VB->EyePtr );
+
+ out->flags |= (in->flags & VEC_SIZE_FLAGS) | VEC_SIZE_3;
+ out->count = VB->Count;
+ out->size = MAX2(in->size, 3);
+ if (in->size == 4)
+ _mesa_copy_tab[0x8]( out, in );
+}
+
+
+
+static void texgen_normal_map_nv( struct gl_context *ctx,
+ struct texgen_stage_data *store,
+ GLuint unit )
+{
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ GLvector4f *in = VB->AttribPtr[VERT_ATTRIB_TEX0 + unit];
+ GLvector4f *out = &store->texcoord[unit];
+ GLvector4f *normal = VB->AttribPtr[_TNL_ATTRIB_NORMAL];
+ GLfloat (*texcoord)[4] = (GLfloat (*)[4])out->start;
+ GLuint count = VB->Count;
+ GLuint i;
+ const GLfloat *norm = normal->start;
+
+ for (i=0;i<count;i++, STRIDE_F(norm, normal->stride)) {
+ texcoord[i][0] = norm[0];
+ texcoord[i][1] = norm[1];
+ texcoord[i][2] = norm[2];
+ }
+
+
+ out->flags |= (in->flags & VEC_SIZE_FLAGS) | VEC_SIZE_3;
+ out->count = count;
+ out->size = MAX2(in->size, 3);
+ if (in->size == 4)
+ _mesa_copy_tab[0x8]( out, in );
+}
+
+
+static void texgen_sphere_map( struct gl_context *ctx,
+ struct texgen_stage_data *store,
+ GLuint unit )
+{
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ GLvector4f *in = VB->AttribPtr[VERT_ATTRIB_TEX0 + unit];
+ GLvector4f *out = &store->texcoord[unit];
+ GLfloat (*texcoord)[4] = (GLfloat (*)[4]) out->start;
+ GLuint count = VB->Count;
+ GLuint i;
+ GLfloat (*f)[3] = store->tmp_f;
+ GLfloat *m = store->tmp_m;
+
+ (build_m_tab[VB->EyePtr->size])( store->tmp_f,
+ store->tmp_m,
+ VB->AttribPtr[_TNL_ATTRIB_NORMAL],
+ VB->EyePtr );
+
+ out->size = MAX2(in->size,2);
+
+ for (i=0;i<count;i++) {
+ texcoord[i][0] = f[i][0] * m[i] + 0.5F;
+ texcoord[i][1] = f[i][1] * m[i] + 0.5F;
+ }
+
+ out->count = count;
+ out->flags |= (in->flags & VEC_SIZE_FLAGS) | VEC_SIZE_2;
+ if (in->size > 2)
+ _mesa_copy_tab[all_bits[in->size] & ~0x3]( out, in );
+}
+
+
+
+static void texgen( struct gl_context *ctx,
+ struct texgen_stage_data *store,
+ GLuint unit )
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ struct vertex_buffer *VB = &tnl->vb;
+ GLvector4f *in = VB->AttribPtr[VERT_ATTRIB_TEX0 + unit];
+ GLvector4f *out = &store->texcoord[unit];
+ const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
+ const GLvector4f *obj = VB->AttribPtr[_TNL_ATTRIB_POS];
+ const GLvector4f *eye = VB->EyePtr;
+ const GLvector4f *normal = VB->AttribPtr[_TNL_ATTRIB_NORMAL];
+ const GLfloat *m = store->tmp_m;
+ const GLuint count = VB->Count;
+ GLfloat (*texcoord)[4] = (GLfloat (*)[4])out->data;
+ GLfloat (*f)[3] = store->tmp_f;
+ GLuint copy;
+
+ if (texUnit->_GenFlags & TEXGEN_NEED_M) {
+ build_m_tab[eye->size]( store->tmp_f, store->tmp_m, normal, eye );
+ } else if (texUnit->_GenFlags & TEXGEN_NEED_F) {
+ build_f_tab[eye->size]( (GLfloat *)store->tmp_f, 3, normal, eye );
+ }
+
+
+ out->size = MAX2(in->size, store->TexgenSize[unit]);
+ out->flags |= (in->flags & VEC_SIZE_FLAGS) | texUnit->TexGenEnabled;
+ out->count = count;
+
+ copy = (all_bits[in->size] & ~texUnit->TexGenEnabled);
+ if (copy)
+ _mesa_copy_tab[copy]( out, in );
+
+ if (texUnit->TexGenEnabled & S_BIT) {
+ GLuint i;
+ switch (texUnit->GenS.Mode) {
+ case GL_OBJECT_LINEAR:
+ _mesa_dotprod_tab[obj->size]( (GLfloat *)out->data,
+ sizeof(out->data[0]), obj,
+ texUnit->GenS.ObjectPlane );
+ break;
+ case GL_EYE_LINEAR:
+ _mesa_dotprod_tab[eye->size]( (GLfloat *)out->data,
+ sizeof(out->data[0]), eye,
+ texUnit->GenS.EyePlane );
+ break;
+ case GL_SPHERE_MAP:
+ for (i = 0; i < count; i++)
+ texcoord[i][0] = f[i][0] * m[i] + 0.5F;
+ break;
+ case GL_REFLECTION_MAP_NV:
+ for (i=0;i<count;i++)
+ texcoord[i][0] = f[i][0];
+ break;
+ case GL_NORMAL_MAP_NV: {
+ const GLfloat *norm = normal->start;
+ for (i=0;i<count;i++, STRIDE_F(norm, normal->stride)) {
+ texcoord[i][0] = norm[0];
+ }
+ break;
+ }
+ default:
+ _mesa_problem(ctx, "Bad S texgen");
+ }
+ }
+
+ if (texUnit->TexGenEnabled & T_BIT) {
+ GLuint i;
+ switch (texUnit->GenT.Mode) {
+ case GL_OBJECT_LINEAR:
+ _mesa_dotprod_tab[obj->size]( &(out->data[0][1]),
+ sizeof(out->data[0]), obj,
+ texUnit->GenT.ObjectPlane );
+ break;
+ case GL_EYE_LINEAR:
+ _mesa_dotprod_tab[eye->size]( &(out->data[0][1]),
+ sizeof(out->data[0]), eye,
+ texUnit->GenT.EyePlane );
+ break;
+ case GL_SPHERE_MAP:
+ for (i = 0; i < count; i++)
+ texcoord[i][1] = f[i][1] * m[i] + 0.5F;
+ break;
+ case GL_REFLECTION_MAP_NV:
+ for (i=0;i<count;i++)
+ texcoord[i][1] = f[i][1];
+ break;
+ case GL_NORMAL_MAP_NV: {
+ const GLfloat *norm = normal->start;
+ for (i=0;i<count;i++, STRIDE_F(norm, normal->stride)) {
+ texcoord[i][1] = norm[1];
+ }
+ break;
+ }
+ default:
+ _mesa_problem(ctx, "Bad T texgen");
+ }
+ }
+
+ if (texUnit->TexGenEnabled & R_BIT) {
+ GLuint i;
+ switch (texUnit->GenR.Mode) {
+ case GL_OBJECT_LINEAR:
+ _mesa_dotprod_tab[obj->size]( &(out->data[0][2]),
+ sizeof(out->data[0]), obj,
+ texUnit->GenR.ObjectPlane );
+ break;
+ case GL_EYE_LINEAR:
+ _mesa_dotprod_tab[eye->size]( &(out->data[0][2]),
+ sizeof(out->data[0]), eye,
+ texUnit->GenR.EyePlane );
+ break;
+ case GL_REFLECTION_MAP_NV:
+ for (i=0;i<count;i++)
+ texcoord[i][2] = f[i][2];
+ break;
+ case GL_NORMAL_MAP_NV: {
+ const GLfloat *norm = normal->start;
+ for (i=0;i<count;i++,STRIDE_F(norm, normal->stride)) {
+ texcoord[i][2] = norm[2];
+ }
+ break;
+ }
+ default:
+ _mesa_problem(ctx, "Bad R texgen");
+ }
+ }
+
+ if (texUnit->TexGenEnabled & Q_BIT) {
+ switch (texUnit->GenQ.Mode) {
+ case GL_OBJECT_LINEAR:
+ _mesa_dotprod_tab[obj->size]( &(out->data[0][3]),
+ sizeof(out->data[0]), obj,
+ texUnit->GenQ.ObjectPlane );
+ break;
+ case GL_EYE_LINEAR:
+ _mesa_dotprod_tab[eye->size]( &(out->data[0][3]),
+ sizeof(out->data[0]), eye,
+ texUnit->GenQ.EyePlane );
+ break;
+ default:
+ _mesa_problem(ctx, "Bad Q texgen");
+ }
+ }
+}
+
+
+
+
+static GLboolean run_texgen_stage( struct gl_context *ctx,
+ struct tnl_pipeline_stage *stage )
+{
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ struct texgen_stage_data *store = TEXGEN_STAGE_DATA(stage);
+ GLuint i;
+
+ if (!ctx->Texture._TexGenEnabled || ctx->VertexProgram._Current)
+ return GL_TRUE;
+
+ for (i = 0 ; i < ctx->Const.MaxTextureCoordUnits ; i++) {
+ struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i];
+
+ if (texUnit->TexGenEnabled) {
+
+ store->TexgenFunc[i]( ctx, store, i );
+
+ VB->AttribPtr[VERT_ATTRIB_TEX0 + i] = &store->texcoord[i];
+ }
+ }
+
+ return GL_TRUE;
+}
+
+
+static void validate_texgen_stage( struct gl_context *ctx,
+ struct tnl_pipeline_stage *stage )
+{
+ struct texgen_stage_data *store = TEXGEN_STAGE_DATA(stage);
+ GLuint i;
+
+ if (!ctx->Texture._TexGenEnabled || ctx->VertexProgram._Current)
+ return;
+
+ for (i = 0 ; i < ctx->Const.MaxTextureCoordUnits ; i++) {
+ struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i];
+
+ if (texUnit->TexGenEnabled) {
+ GLuint sz;
+
+ if (texUnit->TexGenEnabled & Q_BIT)
+ sz = 4;
+ else if (texUnit->TexGenEnabled & R_BIT)
+ sz = 3;
+ else if (texUnit->TexGenEnabled & T_BIT)
+ sz = 2;
+ else
+ sz = 1;
+
+ store->TexgenSize[i] = sz;
+ store->TexgenFunc[i] = texgen; /* general solution */
+
+ /* look for special texgen cases */
+ if (texUnit->TexGenEnabled == (S_BIT|T_BIT|R_BIT)) {
+ if (texUnit->_GenFlags == TEXGEN_REFLECTION_MAP_NV) {
+ store->TexgenFunc[i] = texgen_reflection_map_nv;
+ }
+ else if (texUnit->_GenFlags == TEXGEN_NORMAL_MAP_NV) {
+ store->TexgenFunc[i] = texgen_normal_map_nv;
+ }
+ }
+ else if (texUnit->TexGenEnabled == (S_BIT|T_BIT) &&
+ texUnit->_GenFlags == TEXGEN_SPHERE_MAP) {
+ store->TexgenFunc[i] = texgen_sphere_map;
+ }
+ }
+ }
+}
+
+
+
+
+
+/* Called the first time stage->run() is invoked.
+ */
+static GLboolean alloc_texgen_data( struct gl_context *ctx,
+ struct tnl_pipeline_stage *stage )
+{
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ struct texgen_stage_data *store;
+ GLuint i;
+
+ stage->privatePtr = CALLOC(sizeof(*store));
+ store = TEXGEN_STAGE_DATA(stage);
+ if (!store)
+ return GL_FALSE;
+
+ for (i = 0 ; i < ctx->Const.MaxTextureCoordUnits ; i++)
+ _mesa_vector4f_alloc( &store->texcoord[i], 0, VB->Size, 32 );
+
+ store->tmp_f = (GLfloat (*)[3]) MALLOC(VB->Size * sizeof(GLfloat) * 3);
+ store->tmp_m = (GLfloat *) MALLOC(VB->Size * sizeof(GLfloat));
+
+ return GL_TRUE;
+}
+
+
+static void free_texgen_data( struct tnl_pipeline_stage *stage )
+
+{
+ struct texgen_stage_data *store = TEXGEN_STAGE_DATA(stage);
+ GLuint i;
+
+ if (store) {
+ for (i = 0 ; i < MAX_TEXTURE_COORD_UNITS ; i++)
+ if (store->texcoord[i].data)
+ _mesa_vector4f_free( &store->texcoord[i] );
+
+
+ if (store->tmp_f) FREE( store->tmp_f );
+ if (store->tmp_m) FREE( store->tmp_m );
+ FREE( store );
+ stage->privatePtr = NULL;
+ }
+}
+
+
+
+const struct tnl_pipeline_stage _tnl_texgen_stage =
+{
+ "texgen", /* name */
+ NULL, /* private data */
+ alloc_texgen_data, /* destructor */
+ free_texgen_data, /* destructor */
+ validate_texgen_stage, /* check */
+ run_texgen_stage /* run -- initially set to alloc data */
+};
diff --git a/mesalib/src/mesa/tnl/t_vb_texmat.c b/mesalib/src/mesa/tnl/t_vb_texmat.c
index 7b30946c8..38aa51fc4 100644
--- a/mesalib/src/mesa/tnl/t_vb_texmat.c
+++ b/mesalib/src/mesa/tnl/t_vb_texmat.c
@@ -1,128 +1,128 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/imports.h"
-#include "main/mtypes.h"
-
-#include "math/m_xform.h"
-
-#include "t_context.h"
-#include "t_pipeline.h"
-
-/* Is there any real benefit seperating texmat from texgen? It means
- * we need two lots of intermediate storage. Any changes to
- * _NEW_TEXTURE will invalidate both sets -- it's only on changes to
- * *only* _NEW_TEXTURE_MATRIX that texgen survives but texmat doesn't.
- *
- * However, the seperation of this code from the complex texgen stuff
- * is very appealing.
- */
-struct texmat_stage_data {
- GLvector4f texcoord[MAX_TEXTURE_COORD_UNITS];
-};
-
-#define TEXMAT_STAGE_DATA(stage) ((struct texmat_stage_data *)stage->privatePtr)
-
-
-
-static GLboolean run_texmat_stage( struct gl_context *ctx,
- struct tnl_pipeline_stage *stage )
-{
- struct texmat_stage_data *store = TEXMAT_STAGE_DATA(stage);
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- GLuint i;
-
- if (!ctx->Texture._TexMatEnabled || ctx->VertexProgram._Current)
- return GL_TRUE;
-
- /* ENABLE_TEXMAT implies that the texture matrix is not the
- * identity, so we don't have to check that here.
- */
- for (i = 0 ; i < ctx->Const.MaxTextureCoordUnits ; i++) {
- if (ctx->Texture._TexMatEnabled & ENABLE_TEXMAT(i)) {
- (void) TransformRaw( &store->texcoord[i],
- ctx->TextureMatrixStack[i].Top,
- VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]);
-
- VB->AttribPtr[VERT_ATTRIB_TEX0+i] = &store->texcoord[i];
- }
- }
-
- return GL_TRUE;
-}
-
-
-/* Called the first time stage->run() is invoked.
- */
-static GLboolean alloc_texmat_data( struct gl_context *ctx,
- struct tnl_pipeline_stage *stage )
-{
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- struct texmat_stage_data *store;
- GLuint i;
-
- stage->privatePtr = CALLOC(sizeof(*store));
- store = TEXMAT_STAGE_DATA(stage);
- if (!store)
- return GL_FALSE;
-
- for (i = 0 ; i < ctx->Const.MaxTextureCoordUnits ; i++)
- _mesa_vector4f_alloc( &store->texcoord[i], 0, VB->Size, 32 );
-
- return GL_TRUE;
-}
-
-
-static void free_texmat_data( struct tnl_pipeline_stage *stage )
-{
- struct texmat_stage_data *store = TEXMAT_STAGE_DATA(stage);
- GLuint i;
-
- if (store) {
- for (i = 0; i < MAX_TEXTURE_COORD_UNITS; i++)
- if (store->texcoord[i].data)
- _mesa_vector4f_free( &store->texcoord[i] );
- FREE( store );
- stage->privatePtr = NULL;
- }
-}
-
-
-
-const struct tnl_pipeline_stage _tnl_texture_transform_stage =
-{
- "texture transform", /* name */
- NULL, /* private data */
- alloc_texmat_data,
- free_texmat_data, /* destructor */
- NULL,
- run_texmat_stage,
-};
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+
+#include "main/glheader.h"
+#include "main/colormac.h"
+#include "main/macros.h"
+#include "main/imports.h"
+#include "main/mtypes.h"
+
+#include "math/m_xform.h"
+
+#include "t_context.h"
+#include "t_pipeline.h"
+
+/* Is there any real benefit seperating texmat from texgen? It means
+ * we need two lots of intermediate storage. Any changes to
+ * _NEW_TEXTURE will invalidate both sets -- it's only on changes to
+ * *only* _NEW_TEXTURE_MATRIX that texgen survives but texmat doesn't.
+ *
+ * However, the seperation of this code from the complex texgen stuff
+ * is very appealing.
+ */
+struct texmat_stage_data {
+ GLvector4f texcoord[MAX_TEXTURE_COORD_UNITS];
+};
+
+#define TEXMAT_STAGE_DATA(stage) ((struct texmat_stage_data *)stage->privatePtr)
+
+
+
+static GLboolean run_texmat_stage( struct gl_context *ctx,
+ struct tnl_pipeline_stage *stage )
+{
+ struct texmat_stage_data *store = TEXMAT_STAGE_DATA(stage);
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ GLuint i;
+
+ if (!ctx->Texture._TexMatEnabled || ctx->VertexProgram._Current)
+ return GL_TRUE;
+
+ /* ENABLE_TEXMAT implies that the texture matrix is not the
+ * identity, so we don't have to check that here.
+ */
+ for (i = 0 ; i < ctx->Const.MaxTextureCoordUnits ; i++) {
+ if (ctx->Texture._TexMatEnabled & ENABLE_TEXMAT(i)) {
+ (void) TransformRaw( &store->texcoord[i],
+ ctx->TextureMatrixStack[i].Top,
+ VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]);
+
+ VB->AttribPtr[VERT_ATTRIB_TEX0+i] = &store->texcoord[i];
+ }
+ }
+
+ return GL_TRUE;
+}
+
+
+/* Called the first time stage->run() is invoked.
+ */
+static GLboolean alloc_texmat_data( struct gl_context *ctx,
+ struct tnl_pipeline_stage *stage )
+{
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ struct texmat_stage_data *store;
+ GLuint i;
+
+ stage->privatePtr = CALLOC(sizeof(*store));
+ store = TEXMAT_STAGE_DATA(stage);
+ if (!store)
+ return GL_FALSE;
+
+ for (i = 0 ; i < ctx->Const.MaxTextureCoordUnits ; i++)
+ _mesa_vector4f_alloc( &store->texcoord[i], 0, VB->Size, 32 );
+
+ return GL_TRUE;
+}
+
+
+static void free_texmat_data( struct tnl_pipeline_stage *stage )
+{
+ struct texmat_stage_data *store = TEXMAT_STAGE_DATA(stage);
+ GLuint i;
+
+ if (store) {
+ for (i = 0; i < MAX_TEXTURE_COORD_UNITS; i++)
+ if (store->texcoord[i].data)
+ _mesa_vector4f_free( &store->texcoord[i] );
+ FREE( store );
+ stage->privatePtr = NULL;
+ }
+}
+
+
+
+const struct tnl_pipeline_stage _tnl_texture_transform_stage =
+{
+ "texture transform", /* name */
+ NULL, /* private data */
+ alloc_texmat_data,
+ free_texmat_data, /* destructor */
+ NULL,
+ run_texmat_stage,
+};
diff --git a/mesalib/src/mesa/tnl/t_vb_vertex.c b/mesalib/src/mesa/tnl/t_vb_vertex.c
index a77959410..26e8ae065 100644
--- a/mesalib/src/mesa/tnl/t_vb_vertex.c
+++ b/mesalib/src/mesa/tnl/t_vb_vertex.c
@@ -1,283 +1,283 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/imports.h"
-#include "main/mtypes.h"
-
-#include "math/m_xform.h"
-
-#include "t_context.h"
-#include "t_pipeline.h"
-
-
-
-struct vertex_stage_data {
- GLvector4f eye;
- GLvector4f clip;
- GLvector4f proj;
- GLubyte *clipmask;
- GLubyte ormask;
- GLubyte andmask;
-};
-
-#define VERTEX_STAGE_DATA(stage) ((struct vertex_stage_data *)stage->privatePtr)
-
-
-
-
-/* This function implements cliptesting for user-defined clip planes.
- * The clipping of primitives to these planes is implemented in
- * t_render_clip.h.
- */
-#define USER_CLIPTEST(NAME, SZ) \
-static void NAME( struct gl_context *ctx, \
- GLvector4f *clip, \
- GLubyte *clipmask, \
- GLubyte *clipormask, \
- GLubyte *clipandmask ) \
-{ \
- GLuint p; \
- \
- for (p = 0; p < ctx->Const.MaxClipPlanes; p++) \
- if (ctx->Transform.ClipPlanesEnabled & (1 << p)) { \
- GLuint nr, i; \
- const GLfloat a = ctx->Transform._ClipUserPlane[p][0]; \
- const GLfloat b = ctx->Transform._ClipUserPlane[p][1]; \
- const GLfloat c = ctx->Transform._ClipUserPlane[p][2]; \
- const GLfloat d = ctx->Transform._ClipUserPlane[p][3]; \
- GLfloat *coord = (GLfloat *)clip->data; \
- GLuint stride = clip->stride; \
- GLuint count = clip->count; \
- \
- for (nr = 0, i = 0 ; i < count ; i++) { \
- GLfloat dp = coord[0] * a + coord[1] * b; \
- if (SZ > 2) dp += coord[2] * c; \
- if (SZ > 3) dp += coord[3] * d; else dp += d; \
- \
- if (dp < 0) { \
- nr++; \
- clipmask[i] |= CLIP_USER_BIT; \
- } \
- \
- STRIDE_F(coord, stride); \
- } \
- \
- if (nr > 0) { \
- *clipormask |= CLIP_USER_BIT; \
- if (nr == count) { \
- *clipandmask |= CLIP_USER_BIT; \
- return; \
- } \
- } \
- } \
-}
-
-
-USER_CLIPTEST(userclip2, 2)
-USER_CLIPTEST(userclip3, 3)
-USER_CLIPTEST(userclip4, 4)
-
-static void (*(usercliptab[5]))( struct gl_context *,
- GLvector4f *, GLubyte *,
- GLubyte *, GLubyte * ) =
-{
- NULL,
- NULL,
- userclip2,
- userclip3,
- userclip4
-};
-
-
-void
-tnl_clip_prepare(struct gl_context *ctx)
-{
- /* Neither the x86 nor sparc asm cliptest functions have been updated
- * for ARB_depth_clamp, so force the C paths.
- */
- if (ctx->Transform.DepthClamp) {
- static GLboolean c_funcs_installed = GL_FALSE;
- if (!c_funcs_installed) {
- init_c_cliptest();
- c_funcs_installed = GL_TRUE;
- }
- }
-}
-
-
-
-static GLboolean run_vertex_stage( struct gl_context *ctx,
- struct tnl_pipeline_stage *stage )
-{
- struct vertex_stage_data *store = (struct vertex_stage_data *)stage->privatePtr;
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
-
- if (ctx->VertexProgram._Current)
- return GL_TRUE;
-
- tnl_clip_prepare(ctx);
-
- if (ctx->_NeedEyeCoords) {
- /* Separate modelview transformation:
- * Use combined ModelProject to avoid some depth artifacts
- */
- if (ctx->ModelviewMatrixStack.Top->type == MATRIX_IDENTITY)
- VB->EyePtr = VB->AttribPtr[_TNL_ATTRIB_POS];
- else
- VB->EyePtr = TransformRaw( &store->eye,
- ctx->ModelviewMatrixStack.Top,
- VB->AttribPtr[_TNL_ATTRIB_POS]);
- }
-
- VB->ClipPtr = TransformRaw( &store->clip,
- &ctx->_ModelProjectMatrix,
- VB->AttribPtr[_TNL_ATTRIB_POS] );
-
- /* Drivers expect this to be clean to element 4...
- */
- switch (VB->ClipPtr->size) {
- case 1:
- /* impossible */
- case 2:
- _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 2 );
- /* fall-through */
- case 3:
- _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 3 );
- /* fall-through */
- case 4:
- break;
- }
-
-
- /* Cliptest and perspective divide. Clip functions must clear
- * the clipmask.
- */
- store->ormask = 0;
- store->andmask = CLIP_FRUSTUM_BITS;
-
- if (tnl->NeedNdcCoords) {
- VB->NdcPtr =
- _mesa_clip_tab[VB->ClipPtr->size]( VB->ClipPtr,
- &store->proj,
- store->clipmask,
- &store->ormask,
- &store->andmask,
- !ctx->Transform.DepthClamp );
- }
- else {
- VB->NdcPtr = NULL;
- _mesa_clip_np_tab[VB->ClipPtr->size]( VB->ClipPtr,
- NULL,
- store->clipmask,
- &store->ormask,
- &store->andmask,
- !ctx->Transform.DepthClamp );
- }
-
- if (store->andmask)
- return GL_FALSE;
-
-
- /* Test userclip planes. This contributes to VB->ClipMask, so
- * is essentially required to be in this stage.
- */
- if (ctx->Transform.ClipPlanesEnabled) {
- usercliptab[VB->ClipPtr->size]( ctx,
- VB->ClipPtr,
- store->clipmask,
- &store->ormask,
- &store->andmask );
-
- if (store->andmask)
- return GL_FALSE;
- }
-
- VB->ClipAndMask = store->andmask;
- VB->ClipOrMask = store->ormask;
- VB->ClipMask = store->clipmask;
-
- return GL_TRUE;
-}
-
-
-static GLboolean init_vertex_stage( struct gl_context *ctx,
- struct tnl_pipeline_stage *stage )
-{
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- struct vertex_stage_data *store;
- GLuint size = VB->Size;
-
- stage->privatePtr = CALLOC(sizeof(*store));
- store = VERTEX_STAGE_DATA(stage);
- if (!store)
- return GL_FALSE;
-
- _mesa_vector4f_alloc( &store->eye, 0, size, 32 );
- _mesa_vector4f_alloc( &store->clip, 0, size, 32 );
- _mesa_vector4f_alloc( &store->proj, 0, size, 32 );
-
- store->clipmask = (GLubyte *) _mesa_align_malloc(sizeof(GLubyte)*size, 32 );
-
- if (!store->clipmask ||
- !store->eye.data ||
- !store->clip.data ||
- !store->proj.data)
- return GL_FALSE;
-
- return GL_TRUE;
-}
-
-static void dtr( struct tnl_pipeline_stage *stage )
-{
- struct vertex_stage_data *store = VERTEX_STAGE_DATA(stage);
-
- if (store) {
- _mesa_vector4f_free( &store->eye );
- _mesa_vector4f_free( &store->clip );
- _mesa_vector4f_free( &store->proj );
- _mesa_align_free( store->clipmask );
- FREE(store);
- stage->privatePtr = NULL;
- stage->run = init_vertex_stage;
- }
-}
-
-
-const struct tnl_pipeline_stage _tnl_vertex_transform_stage =
-{
- "modelview/project/cliptest/divide",
- NULL, /* private data */
- init_vertex_stage,
- dtr, /* destructor */
- NULL,
- run_vertex_stage /* run -- initially set to init */
-};
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+
+#include "main/glheader.h"
+#include "main/colormac.h"
+#include "main/macros.h"
+#include "main/imports.h"
+#include "main/mtypes.h"
+
+#include "math/m_xform.h"
+
+#include "t_context.h"
+#include "t_pipeline.h"
+
+
+
+struct vertex_stage_data {
+ GLvector4f eye;
+ GLvector4f clip;
+ GLvector4f proj;
+ GLubyte *clipmask;
+ GLubyte ormask;
+ GLubyte andmask;
+};
+
+#define VERTEX_STAGE_DATA(stage) ((struct vertex_stage_data *)stage->privatePtr)
+
+
+
+
+/* This function implements cliptesting for user-defined clip planes.
+ * The clipping of primitives to these planes is implemented in
+ * t_render_clip.h.
+ */
+#define USER_CLIPTEST(NAME, SZ) \
+static void NAME( struct gl_context *ctx, \
+ GLvector4f *clip, \
+ GLubyte *clipmask, \
+ GLubyte *clipormask, \
+ GLubyte *clipandmask ) \
+{ \
+ GLuint p; \
+ \
+ for (p = 0; p < ctx->Const.MaxClipPlanes; p++) \
+ if (ctx->Transform.ClipPlanesEnabled & (1 << p)) { \
+ GLuint nr, i; \
+ const GLfloat a = ctx->Transform._ClipUserPlane[p][0]; \
+ const GLfloat b = ctx->Transform._ClipUserPlane[p][1]; \
+ const GLfloat c = ctx->Transform._ClipUserPlane[p][2]; \
+ const GLfloat d = ctx->Transform._ClipUserPlane[p][3]; \
+ GLfloat *coord = (GLfloat *)clip->data; \
+ GLuint stride = clip->stride; \
+ GLuint count = clip->count; \
+ \
+ for (nr = 0, i = 0 ; i < count ; i++) { \
+ GLfloat dp = coord[0] * a + coord[1] * b; \
+ if (SZ > 2) dp += coord[2] * c; \
+ if (SZ > 3) dp += coord[3] * d; else dp += d; \
+ \
+ if (dp < 0) { \
+ nr++; \
+ clipmask[i] |= CLIP_USER_BIT; \
+ } \
+ \
+ STRIDE_F(coord, stride); \
+ } \
+ \
+ if (nr > 0) { \
+ *clipormask |= CLIP_USER_BIT; \
+ if (nr == count) { \
+ *clipandmask |= CLIP_USER_BIT; \
+ return; \
+ } \
+ } \
+ } \
+}
+
+
+USER_CLIPTEST(userclip2, 2)
+USER_CLIPTEST(userclip3, 3)
+USER_CLIPTEST(userclip4, 4)
+
+static void (*(usercliptab[5]))( struct gl_context *,
+ GLvector4f *, GLubyte *,
+ GLubyte *, GLubyte * ) =
+{
+ NULL,
+ NULL,
+ userclip2,
+ userclip3,
+ userclip4
+};
+
+
+void
+tnl_clip_prepare(struct gl_context *ctx)
+{
+ /* Neither the x86 nor sparc asm cliptest functions have been updated
+ * for ARB_depth_clamp, so force the C paths.
+ */
+ if (ctx->Transform.DepthClamp) {
+ static GLboolean c_funcs_installed = GL_FALSE;
+ if (!c_funcs_installed) {
+ init_c_cliptest();
+ c_funcs_installed = GL_TRUE;
+ }
+ }
+}
+
+
+
+static GLboolean run_vertex_stage( struct gl_context *ctx,
+ struct tnl_pipeline_stage *stage )
+{
+ struct vertex_stage_data *store = (struct vertex_stage_data *)stage->privatePtr;
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ struct vertex_buffer *VB = &tnl->vb;
+
+ if (ctx->VertexProgram._Current)
+ return GL_TRUE;
+
+ tnl_clip_prepare(ctx);
+
+ if (ctx->_NeedEyeCoords) {
+ /* Separate modelview transformation:
+ * Use combined ModelProject to avoid some depth artifacts
+ */
+ if (ctx->ModelviewMatrixStack.Top->type == MATRIX_IDENTITY)
+ VB->EyePtr = VB->AttribPtr[_TNL_ATTRIB_POS];
+ else
+ VB->EyePtr = TransformRaw( &store->eye,
+ ctx->ModelviewMatrixStack.Top,
+ VB->AttribPtr[_TNL_ATTRIB_POS]);
+ }
+
+ VB->ClipPtr = TransformRaw( &store->clip,
+ &ctx->_ModelProjectMatrix,
+ VB->AttribPtr[_TNL_ATTRIB_POS] );
+
+ /* Drivers expect this to be clean to element 4...
+ */
+ switch (VB->ClipPtr->size) {
+ case 1:
+ /* impossible */
+ case 2:
+ _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 2 );
+ /* fall-through */
+ case 3:
+ _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 3 );
+ /* fall-through */
+ case 4:
+ break;
+ }
+
+
+ /* Cliptest and perspective divide. Clip functions must clear
+ * the clipmask.
+ */
+ store->ormask = 0;
+ store->andmask = CLIP_FRUSTUM_BITS;
+
+ if (tnl->NeedNdcCoords) {
+ VB->NdcPtr =
+ _mesa_clip_tab[VB->ClipPtr->size]( VB->ClipPtr,
+ &store->proj,
+ store->clipmask,
+ &store->ormask,
+ &store->andmask,
+ !ctx->Transform.DepthClamp );
+ }
+ else {
+ VB->NdcPtr = NULL;
+ _mesa_clip_np_tab[VB->ClipPtr->size]( VB->ClipPtr,
+ NULL,
+ store->clipmask,
+ &store->ormask,
+ &store->andmask,
+ !ctx->Transform.DepthClamp );
+ }
+
+ if (store->andmask)
+ return GL_FALSE;
+
+
+ /* Test userclip planes. This contributes to VB->ClipMask, so
+ * is essentially required to be in this stage.
+ */
+ if (ctx->Transform.ClipPlanesEnabled) {
+ usercliptab[VB->ClipPtr->size]( ctx,
+ VB->ClipPtr,
+ store->clipmask,
+ &store->ormask,
+ &store->andmask );
+
+ if (store->andmask)
+ return GL_FALSE;
+ }
+
+ VB->ClipAndMask = store->andmask;
+ VB->ClipOrMask = store->ormask;
+ VB->ClipMask = store->clipmask;
+
+ return GL_TRUE;
+}
+
+
+static GLboolean init_vertex_stage( struct gl_context *ctx,
+ struct tnl_pipeline_stage *stage )
+{
+ struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
+ struct vertex_stage_data *store;
+ GLuint size = VB->Size;
+
+ stage->privatePtr = CALLOC(sizeof(*store));
+ store = VERTEX_STAGE_DATA(stage);
+ if (!store)
+ return GL_FALSE;
+
+ _mesa_vector4f_alloc( &store->eye, 0, size, 32 );
+ _mesa_vector4f_alloc( &store->clip, 0, size, 32 );
+ _mesa_vector4f_alloc( &store->proj, 0, size, 32 );
+
+ store->clipmask = (GLubyte *) _mesa_align_malloc(sizeof(GLubyte)*size, 32 );
+
+ if (!store->clipmask ||
+ !store->eye.data ||
+ !store->clip.data ||
+ !store->proj.data)
+ return GL_FALSE;
+
+ return GL_TRUE;
+}
+
+static void dtr( struct tnl_pipeline_stage *stage )
+{
+ struct vertex_stage_data *store = VERTEX_STAGE_DATA(stage);
+
+ if (store) {
+ _mesa_vector4f_free( &store->eye );
+ _mesa_vector4f_free( &store->clip );
+ _mesa_vector4f_free( &store->proj );
+ _mesa_align_free( store->clipmask );
+ FREE(store);
+ stage->privatePtr = NULL;
+ stage->run = init_vertex_stage;
+ }
+}
+
+
+const struct tnl_pipeline_stage _tnl_vertex_transform_stage =
+{
+ "modelview/project/cliptest/divide",
+ NULL, /* private data */
+ init_vertex_stage,
+ dtr, /* destructor */
+ NULL,
+ run_vertex_stage /* run -- initially set to init */
+};
diff --git a/mesalib/src/mesa/tnl/t_vertex.h b/mesalib/src/mesa/tnl/t_vertex.h
index bdbc88aff..83b0dbceb 100644
--- a/mesalib/src/mesa/tnl/t_vertex.h
+++ b/mesalib/src/mesa/tnl/t_vertex.h
@@ -1,184 +1,184 @@
-/*
- * Copyright 2003 Tungsten Graphics, inc.
- * All Rights Reserved.
- *
- * 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
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, 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 (including the next
- * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS 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.
- *
- * Authors:
- * Keith Whitwell <keithw@tungstengraphics.com>
- */
-
-#ifndef _TNL_VERTEX_H
-#define _TNL_VERTEX_H
-
-#include "main/glheader.h"
-#include "t_context.h"
-
-struct gl_context;
-struct tnl_clipspace;
-
-/* New mechanism to specify hardware vertices so that tnl can build
- * and manipulate them directly.
- */
-
-
-/* It will probably be necessary to allow drivers to specify new
- * emit-styles to cover all the wierd and wacky things out there.
- */
-enum tnl_attr_format {
- EMIT_1F,
- EMIT_2F,
- EMIT_3F,
- EMIT_4F,
- EMIT_2F_VIEWPORT, /* do viewport transform and emit */
- EMIT_3F_VIEWPORT, /* do viewport transform and emit */
- EMIT_4F_VIEWPORT, /* do viewport transform and emit */
- EMIT_3F_XYW, /* for projective texture */
- EMIT_1UB_1F, /* for fog coordinate */
- EMIT_3UB_3F_RGB, /* for specular color */
- EMIT_3UB_3F_BGR, /* for specular color */
- EMIT_4UB_4F_RGBA, /* for color */
- EMIT_4UB_4F_BGRA, /* for color */
- EMIT_4UB_4F_ARGB, /* for color */
- EMIT_4UB_4F_ABGR, /* for color */
- EMIT_4CHAN_4F_RGBA, /* for swrast color */
- EMIT_PAD, /* leave a hole of 'offset' bytes */
- EMIT_MAX
-};
-
-struct tnl_attr_map {
- GLuint attrib; /* _TNL_ATTRIB_ enum */
- enum tnl_attr_format format;
- GLuint offset;
-};
-
-struct tnl_format_info {
- const char *name;
- tnl_extract_func extract;
- tnl_insert_func insert[4];
- const GLuint attrsize;
-};
-
-extern const struct tnl_format_info _tnl_format_info[EMIT_MAX];
-
-
-/* Interpolate between two vertices to produce a third:
- */
-extern void _tnl_interp( struct gl_context *ctx,
- GLfloat t,
- GLuint edst, GLuint eout, GLuint ein,
- GLboolean force_boundary );
-
-/* Copy colors from one vertex to another:
- */
-extern void _tnl_copy_pv( struct gl_context *ctx, GLuint edst, GLuint esrc );
-
-
-/* Extract a named attribute from a hardware vertex. Will have to
- * reverse any viewport transformation, swizzling or other conversions
- * which may have been applied:
- */
-extern void _tnl_get_attr( struct gl_context *ctx, const void *vertex, GLenum attrib,
- GLfloat *dest );
-
-/* Complementary to the above.
- */
-extern void _tnl_set_attr( struct gl_context *ctx, void *vout, GLenum attrib,
- const GLfloat *src );
-
-
-extern void *_tnl_get_vertex( struct gl_context *ctx, GLuint nr );
-
-extern GLuint _tnl_install_attrs( struct gl_context *ctx,
- const struct tnl_attr_map *map,
- GLuint nr, const GLfloat *vp,
- GLuint unpacked_size );
-
-extern void _tnl_free_vertices( struct gl_context *ctx );
-
-extern void _tnl_init_vertices( struct gl_context *ctx,
- GLuint vb_size,
- GLuint max_vertex_size );
-
-extern void *_tnl_emit_vertices_to_buffer( struct gl_context *ctx,
- GLuint start,
- GLuint end,
- void *dest );
-
-/* This function isn't optimal. Check out
- * gallium/auxilary/translate for a more comprehensive implementation of
- * the same functionality.
- */
-
-extern void *_tnl_emit_indexed_vertices_to_buffer( struct gl_context *ctx,
- const GLuint *elts,
- GLuint start,
- GLuint end,
- void *dest );
-
-
-extern void _tnl_build_vertices( struct gl_context *ctx,
- GLuint start,
- GLuint end,
- GLuint newinputs );
-
-extern void _tnl_invalidate_vertices( struct gl_context *ctx, GLuint newinputs );
-
-extern void _tnl_invalidate_vertex_state( struct gl_context *ctx, GLuint new_state );
-
-extern void _tnl_notify_pipeline_output_change( struct gl_context *ctx );
-
-
-#define GET_VERTEX_STATE(ctx) &(TNL_CONTEXT(ctx)->clipspace)
-
-/* Internal function:
- */
-void _tnl_register_fastpath( struct tnl_clipspace *vtx,
- GLboolean match_strides );
-
-
-/* t_vertex_generic.c -- Internal functions for t_vertex.c
- */
-void _tnl_generic_copy_pv_extras( struct gl_context *ctx,
- GLuint dst, GLuint src );
-
-void _tnl_generic_interp_extras( struct gl_context *ctx,
- GLfloat t,
- GLuint dst, GLuint out, GLuint in,
- GLboolean force_boundary );
-
-void _tnl_generic_copy_pv( struct gl_context *ctx, GLuint edst, GLuint esrc );
-
-void _tnl_generic_interp( struct gl_context *ctx,
- GLfloat t,
- GLuint edst, GLuint eout, GLuint ein,
- GLboolean force_boundary );
-
-void _tnl_generic_emit( struct gl_context *ctx,
- GLuint count,
- GLubyte *v );
-
-void _tnl_generate_hardwired_emit( struct gl_context *ctx );
-
-/* t_vertex_sse.c -- Internal functions for t_vertex.c
- */
-void _tnl_generate_sse_emit( struct gl_context *ctx );
-
-#endif
+/*
+ * Copyright 2003 Tungsten Graphics, inc.
+ * All Rights Reserved.
+ *
+ * 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
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, 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 (including the next
+ * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+ * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS 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.
+ *
+ * Authors:
+ * Keith Whitwell <keithw@tungstengraphics.com>
+ */
+
+#ifndef _TNL_VERTEX_H
+#define _TNL_VERTEX_H
+
+#include "main/glheader.h"
+#include "t_context.h"
+
+struct gl_context;
+struct tnl_clipspace;
+
+/* New mechanism to specify hardware vertices so that tnl can build
+ * and manipulate them directly.
+ */
+
+
+/* It will probably be necessary to allow drivers to specify new
+ * emit-styles to cover all the wierd and wacky things out there.
+ */
+enum tnl_attr_format {
+ EMIT_1F,
+ EMIT_2F,
+ EMIT_3F,
+ EMIT_4F,
+ EMIT_2F_VIEWPORT, /* do viewport transform and emit */
+ EMIT_3F_VIEWPORT, /* do viewport transform and emit */
+ EMIT_4F_VIEWPORT, /* do viewport transform and emit */
+ EMIT_3F_XYW, /* for projective texture */
+ EMIT_1UB_1F, /* for fog coordinate */
+ EMIT_3UB_3F_RGB, /* for specular color */
+ EMIT_3UB_3F_BGR, /* for specular color */
+ EMIT_4UB_4F_RGBA, /* for color */
+ EMIT_4UB_4F_BGRA, /* for color */
+ EMIT_4UB_4F_ARGB, /* for color */
+ EMIT_4UB_4F_ABGR, /* for color */
+ EMIT_4CHAN_4F_RGBA, /* for swrast color */
+ EMIT_PAD, /* leave a hole of 'offset' bytes */
+ EMIT_MAX
+};
+
+struct tnl_attr_map {
+ GLuint attrib; /* _TNL_ATTRIB_ enum */
+ enum tnl_attr_format format;
+ GLuint offset;
+};
+
+struct tnl_format_info {
+ const char *name;
+ tnl_extract_func extract;
+ tnl_insert_func insert[4];
+ const GLuint attrsize;
+};
+
+extern const struct tnl_format_info _tnl_format_info[EMIT_MAX];
+
+
+/* Interpolate between two vertices to produce a third:
+ */
+extern void _tnl_interp( struct gl_context *ctx,
+ GLfloat t,
+ GLuint edst, GLuint eout, GLuint ein,
+ GLboolean force_boundary );
+
+/* Copy colors from one vertex to another:
+ */
+extern void _tnl_copy_pv( struct gl_context *ctx, GLuint edst, GLuint esrc );
+
+
+/* Extract a named attribute from a hardware vertex. Will have to
+ * reverse any viewport transformation, swizzling or other conversions
+ * which may have been applied:
+ */
+extern void _tnl_get_attr( struct gl_context *ctx, const void *vertex, GLenum attrib,
+ GLfloat *dest );
+
+/* Complementary to the above.
+ */
+extern void _tnl_set_attr( struct gl_context *ctx, void *vout, GLenum attrib,
+ const GLfloat *src );
+
+
+extern void *_tnl_get_vertex( struct gl_context *ctx, GLuint nr );
+
+extern GLuint _tnl_install_attrs( struct gl_context *ctx,
+ const struct tnl_attr_map *map,
+ GLuint nr, const GLfloat *vp,
+ GLuint unpacked_size );
+
+extern void _tnl_free_vertices( struct gl_context *ctx );
+
+extern void _tnl_init_vertices( struct gl_context *ctx,
+ GLuint vb_size,
+ GLuint max_vertex_size );
+
+extern void *_tnl_emit_vertices_to_buffer( struct gl_context *ctx,
+ GLuint start,
+ GLuint end,
+ void *dest );
+
+/* This function isn't optimal. Check out
+ * gallium/auxilary/translate for a more comprehensive implementation of
+ * the same functionality.
+ */
+
+extern void *_tnl_emit_indexed_vertices_to_buffer( struct gl_context *ctx,
+ const GLuint *elts,
+ GLuint start,
+ GLuint end,
+ void *dest );
+
+
+extern void _tnl_build_vertices( struct gl_context *ctx,
+ GLuint start,
+ GLuint end,
+ GLuint newinputs );
+
+extern void _tnl_invalidate_vertices( struct gl_context *ctx, GLuint newinputs );
+
+extern void _tnl_invalidate_vertex_state( struct gl_context *ctx, GLuint new_state );
+
+extern void _tnl_notify_pipeline_output_change( struct gl_context *ctx );
+
+
+#define GET_VERTEX_STATE(ctx) &(TNL_CONTEXT(ctx)->clipspace)
+
+/* Internal function:
+ */
+void _tnl_register_fastpath( struct tnl_clipspace *vtx,
+ GLboolean match_strides );
+
+
+/* t_vertex_generic.c -- Internal functions for t_vertex.c
+ */
+void _tnl_generic_copy_pv_extras( struct gl_context *ctx,
+ GLuint dst, GLuint src );
+
+void _tnl_generic_interp_extras( struct gl_context *ctx,
+ GLfloat t,
+ GLuint dst, GLuint out, GLuint in,
+ GLboolean force_boundary );
+
+void _tnl_generic_copy_pv( struct gl_context *ctx, GLuint edst, GLuint esrc );
+
+void _tnl_generic_interp( struct gl_context *ctx,
+ GLfloat t,
+ GLuint edst, GLuint eout, GLuint ein,
+ GLboolean force_boundary );
+
+void _tnl_generic_emit( struct gl_context *ctx,
+ GLuint count,
+ GLubyte *v );
+
+void _tnl_generate_hardwired_emit( struct gl_context *ctx );
+
+/* t_vertex_sse.c -- Internal functions for t_vertex.c
+ */
+void _tnl_generate_sse_emit( struct gl_context *ctx );
+
+#endif
diff --git a/mesalib/src/mesa/tnl/t_vp_build.c b/mesalib/src/mesa/tnl/t_vp_build.c
index 913cba676..70492a435 100644
--- a/mesalib/src/mesa/tnl/t_vp_build.c
+++ b/mesalib/src/mesa/tnl/t_vp_build.c
@@ -1,60 +1,60 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 2007 Tungsten Graphics All Rights Reserved.
- *
- * 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
- * TUNGSTEN GRAPHICS 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.
- */
-
-/**
- * \file t_vp_build.c
- * Create a vertex program to execute the current fixed function T&L pipeline.
- * \author Keith Whitwell
- */
-
-
-#include "main/glheader.h"
-#include "main/ffvertex_prog.h"
-#include "main/mtypes.h"
-#include "t_vp_build.h"
-
-
-/**
- * XXX This should go away someday, but still referenced by some drivers...
- */
-void _tnl_UpdateFixedFunctionProgram( struct gl_context *ctx )
-{
- const struct gl_vertex_program *prev = ctx->VertexProgram._Current;
-
- if (!ctx->VertexProgram._Current ||
- ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram) {
- ctx->VertexProgram._Current
- = ctx->VertexProgram._TnlProgram
- = _mesa_get_fixed_func_vertex_program(ctx);
- }
-
- /* Tell the driver about the change. Could define a new target for
- * this?
- */
- if (ctx->VertexProgram._Current != prev && ctx->Driver.BindProgram) {
- ctx->Driver.BindProgram(ctx, GL_VERTEX_PROGRAM_ARB,
- (struct gl_program *) ctx->VertexProgram._Current);
- }
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 2007 Tungsten Graphics All Rights Reserved.
+ *
+ * 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
+ * TUNGSTEN GRAPHICS 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.
+ */
+
+/**
+ * \file t_vp_build.c
+ * Create a vertex program to execute the current fixed function T&L pipeline.
+ * \author Keith Whitwell
+ */
+
+
+#include "main/glheader.h"
+#include "main/ffvertex_prog.h"
+#include "main/mtypes.h"
+#include "t_vp_build.h"
+
+
+/**
+ * XXX This should go away someday, but still referenced by some drivers...
+ */
+void _tnl_UpdateFixedFunctionProgram( struct gl_context *ctx )
+{
+ const struct gl_vertex_program *prev = ctx->VertexProgram._Current;
+
+ if (!ctx->VertexProgram._Current ||
+ ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram) {
+ ctx->VertexProgram._Current
+ = ctx->VertexProgram._TnlProgram
+ = _mesa_get_fixed_func_vertex_program(ctx);
+ }
+
+ /* Tell the driver about the change. Could define a new target for
+ * this?
+ */
+ if (ctx->VertexProgram._Current != prev && ctx->Driver.BindProgram) {
+ ctx->Driver.BindProgram(ctx, GL_VERTEX_PROGRAM_ARB,
+ (struct gl_program *) ctx->VertexProgram._Current);
+ }
+}
diff --git a/mesalib/src/mesa/tnl/t_vp_build.h b/mesalib/src/mesa/tnl/t_vp_build.h
index 6cba2ce5a..e9f6de5a9 100644
--- a/mesalib/src/mesa/tnl/t_vp_build.h
+++ b/mesalib/src/mesa/tnl/t_vp_build.h
@@ -1,42 +1,42 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.3
- *
- * Copyright (C) 2005 Tungsten Graphics All Rights Reserved.
- *
- * 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
- * TUNGSTEN GRAPHICS 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.
- */
-
-
-#ifndef T_VP_BUILD_H
-#define T_VP_BUILD_H
-
-struct gl_context;
-
-#define TNL_FIXED_FUNCTION_STATE_FLAGS (_NEW_PROGRAM | \
- _NEW_LIGHT | \
- _NEW_TEXTURE | \
- _NEW_TEXTURE_MATRIX | \
- _NEW_TRANSFORM | \
- _NEW_FOG | \
- _NEW_POINT)
-
-extern void _tnl_UpdateFixedFunctionProgram( struct gl_context *ctx );
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.3
+ *
+ * Copyright (C) 2005 Tungsten Graphics All Rights Reserved.
+ *
+ * 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
+ * TUNGSTEN GRAPHICS 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.
+ */
+
+
+#ifndef T_VP_BUILD_H
+#define T_VP_BUILD_H
+
+struct gl_context;
+
+#define TNL_FIXED_FUNCTION_STATE_FLAGS (_NEW_PROGRAM | \
+ _NEW_LIGHT | \
+ _NEW_TEXTURE | \
+ _NEW_TEXTURE_MATRIX | \
+ _NEW_TRANSFORM | \
+ _NEW_FOG | \
+ _NEW_POINT)
+
+extern void _tnl_UpdateFixedFunctionProgram( struct gl_context *ctx );
+
+#endif
diff --git a/mesalib/src/mesa/vbo/vbo_exec_eval.c b/mesalib/src/mesa/vbo/vbo_exec_eval.c
index 0aff01b25..1e8c3c45b 100644
--- a/mesalib/src/mesa/vbo/vbo_exec_eval.c
+++ b/mesalib/src/mesa/vbo/vbo_exec_eval.c
@@ -1,263 +1,263 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.1
- *
- * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/macros.h"
-#include "math/m_eval.h"
-#include "main/dispatch.h"
-#include "vbo_exec.h"
-
-
-static void clear_active_eval1( struct vbo_exec_context *exec, GLuint attr )
-{
- assert(attr < Elements(exec->eval.map1));
- exec->eval.map1[attr].map = NULL;
-}
-
-static void clear_active_eval2( struct vbo_exec_context *exec, GLuint attr )
-{
- assert(attr < Elements(exec->eval.map2));
- exec->eval.map2[attr].map = NULL;
-}
-
-static void set_active_eval1( struct vbo_exec_context *exec, GLuint attr, GLuint dim,
- struct gl_1d_map *map )
-{
- assert(attr < Elements(exec->eval.map1));
- if (!exec->eval.map1[attr].map) {
- exec->eval.map1[attr].map = map;
- exec->eval.map1[attr].sz = dim;
- }
-}
-
-static void set_active_eval2( struct vbo_exec_context *exec, GLuint attr, GLuint dim,
- struct gl_2d_map *map )
-{
- assert(attr < Elements(exec->eval.map2));
- if (!exec->eval.map2[attr].map) {
- exec->eval.map2[attr].map = map;
- exec->eval.map2[attr].sz = dim;
- }
-}
-
-void vbo_exec_eval_update( struct vbo_exec_context *exec )
-{
- struct gl_context *ctx = exec->ctx;
- GLuint attr;
-
- /* Vertex program maps have priority over conventional attribs */
-
- for (attr = 0; attr < VBO_ATTRIB_FIRST_MATERIAL; attr++) {
- clear_active_eval1( exec, attr );
- clear_active_eval2( exec, attr );
- }
-
- if (ctx->Eval.Map1Color4)
- set_active_eval1( exec, VBO_ATTRIB_COLOR0, 4, &ctx->EvalMap.Map1Color4 );
-
- if (ctx->Eval.Map2Color4)
- set_active_eval2( exec, VBO_ATTRIB_COLOR0, 4, &ctx->EvalMap.Map2Color4 );
-
- if (ctx->Eval.Map1TextureCoord4)
- set_active_eval1( exec, VBO_ATTRIB_TEX0, 4, &ctx->EvalMap.Map1Texture4 );
- else if (ctx->Eval.Map1TextureCoord3)
- set_active_eval1( exec, VBO_ATTRIB_TEX0, 3, &ctx->EvalMap.Map1Texture3 );
- else if (ctx->Eval.Map1TextureCoord2)
- set_active_eval1( exec, VBO_ATTRIB_TEX0, 2, &ctx->EvalMap.Map1Texture2 );
- else if (ctx->Eval.Map1TextureCoord1)
- set_active_eval1( exec, VBO_ATTRIB_TEX0, 1, &ctx->EvalMap.Map1Texture1 );
-
- if (ctx->Eval.Map2TextureCoord4)
- set_active_eval2( exec, VBO_ATTRIB_TEX0, 4, &ctx->EvalMap.Map2Texture4 );
- else if (ctx->Eval.Map2TextureCoord3)
- set_active_eval2( exec, VBO_ATTRIB_TEX0, 3, &ctx->EvalMap.Map2Texture3 );
- else if (ctx->Eval.Map2TextureCoord2)
- set_active_eval2( exec, VBO_ATTRIB_TEX0, 2, &ctx->EvalMap.Map2Texture2 );
- else if (ctx->Eval.Map2TextureCoord1)
- set_active_eval2( exec, VBO_ATTRIB_TEX0, 1, &ctx->EvalMap.Map2Texture1 );
-
- if (ctx->Eval.Map1Normal)
- set_active_eval1( exec, VBO_ATTRIB_NORMAL, 3, &ctx->EvalMap.Map1Normal );
-
- if (ctx->Eval.Map2Normal)
- set_active_eval2( exec, VBO_ATTRIB_NORMAL, 3, &ctx->EvalMap.Map2Normal );
-
- if (ctx->Eval.Map1Vertex4)
- set_active_eval1( exec, VBO_ATTRIB_POS, 4, &ctx->EvalMap.Map1Vertex4 );
- else if (ctx->Eval.Map1Vertex3)
- set_active_eval1( exec, VBO_ATTRIB_POS, 3, &ctx->EvalMap.Map1Vertex3 );
-
- if (ctx->Eval.Map2Vertex4)
- set_active_eval2( exec, VBO_ATTRIB_POS, 4, &ctx->EvalMap.Map2Vertex4 );
- else if (ctx->Eval.Map2Vertex3)
- set_active_eval2( exec, VBO_ATTRIB_POS, 3, &ctx->EvalMap.Map2Vertex3 );
-
- /* _NEW_PROGRAM */
- if (ctx->VertexProgram._Enabled) {
- /* These are the 16 evaluators which GL_NV_vertex_program defines.
- * They alias and override the conventional vertex attributs.
- */
- for (attr = 0; attr < 16; attr++) {
- /* _NEW_EVAL */
- assert(attr < Elements(ctx->Eval.Map1Attrib));
- if (ctx->Eval.Map1Attrib[attr])
- set_active_eval1( exec, attr, 4, &ctx->EvalMap.Map1Attrib[attr] );
-
- assert(attr < Elements(ctx->Eval.Map2Attrib));
- if (ctx->Eval.Map2Attrib[attr])
- set_active_eval2( exec, attr, 4, &ctx->EvalMap.Map2Attrib[attr] );
- }
- }
-
- exec->eval.recalculate_maps = 0;
-}
-
-
-
-void vbo_exec_do_EvalCoord1f(struct vbo_exec_context *exec, GLfloat u)
-{
- GLuint attr;
-
- for (attr = 1; attr <= VBO_ATTRIB_TEX7; attr++) {
- struct gl_1d_map *map = exec->eval.map1[attr].map;
- if (map) {
- GLfloat uu = (u - map->u1) * map->du;
- GLfloat data[4];
-
- ASSIGN_4V(data, 0, 0, 0, 1);
-
- _math_horner_bezier_curve(map->Points, data, uu,
- exec->eval.map1[attr].sz,
- map->Order);
-
- COPY_SZ_4V( exec->vtx.attrptr[attr],
- exec->vtx.attrsz[attr],
- data );
- }
- }
-
- /** Vertex -- EvalCoord1f is a noop if this map not enabled:
- **/
- if (exec->eval.map1[0].map) {
- struct gl_1d_map *map = exec->eval.map1[0].map;
- GLfloat uu = (u - map->u1) * map->du;
- GLfloat vertex[4];
-
- ASSIGN_4V(vertex, 0, 0, 0, 1);
-
- _math_horner_bezier_curve(map->Points, vertex, uu,
- exec->eval.map1[0].sz,
- map->Order);
-
- if (exec->eval.map1[0].sz == 4)
- CALL_Vertex4fv(GET_DISPATCH(), ( vertex ));
- else
- CALL_Vertex3fv(GET_DISPATCH(), ( vertex ));
- }
-}
-
-
-
-void vbo_exec_do_EvalCoord2f( struct vbo_exec_context *exec,
- GLfloat u, GLfloat v )
-{
- GLuint attr;
-
- for (attr = 1; attr <= VBO_ATTRIB_TEX7; attr++) {
- struct gl_2d_map *map = exec->eval.map2[attr].map;
- if (map) {
- GLfloat uu = (u - map->u1) * map->du;
- GLfloat vv = (v - map->v1) * map->dv;
- GLfloat data[4];
-
- ASSIGN_4V(data, 0, 0, 0, 1);
-
- _math_horner_bezier_surf(map->Points,
- data,
- uu, vv,
- exec->eval.map2[attr].sz,
- map->Uorder, map->Vorder);
-
- COPY_SZ_4V( exec->vtx.attrptr[attr],
- exec->vtx.attrsz[attr],
- data );
- }
- }
-
- /** Vertex -- EvalCoord2f is a noop if this map not enabled:
- **/
- if (exec->eval.map2[0].map) {
- struct gl_2d_map *map = exec->eval.map2[0].map;
- GLfloat uu = (u - map->u1) * map->du;
- GLfloat vv = (v - map->v1) * map->dv;
- GLfloat vertex[4];
-
- ASSIGN_4V(vertex, 0, 0, 0, 1);
-
- if (exec->ctx->Eval.AutoNormal) {
- GLfloat normal[4];
- GLfloat du[4], dv[4];
-
- _math_de_casteljau_surf(map->Points, vertex, du, dv, uu, vv,
- exec->eval.map2[0].sz,
- map->Uorder, map->Vorder);
-
- if (exec->eval.map2[0].sz == 4) {
- du[0] = du[0]*vertex[3] - du[3]*vertex[0];
- du[1] = du[1]*vertex[3] - du[3]*vertex[1];
- du[2] = du[2]*vertex[3] - du[3]*vertex[2];
-
- dv[0] = dv[0]*vertex[3] - dv[3]*vertex[0];
- dv[1] = dv[1]*vertex[3] - dv[3]*vertex[1];
- dv[2] = dv[2]*vertex[3] - dv[3]*vertex[2];
- }
-
-
- CROSS3(normal, du, dv);
- NORMALIZE_3FV(normal);
- normal[3] = 1.0;
-
- COPY_SZ_4V( exec->vtx.attrptr[VBO_ATTRIB_NORMAL],
- exec->vtx.attrsz[VBO_ATTRIB_NORMAL],
- normal );
-
- }
- else {
- _math_horner_bezier_surf(map->Points, vertex, uu, vv,
- exec->eval.map2[0].sz,
- map->Uorder, map->Vorder);
- }
-
- if (exec->vtx.attrsz[0] == 4)
- CALL_Vertex4fv(GET_DISPATCH(), ( vertex ));
- else
- CALL_Vertex3fv(GET_DISPATCH(), ( vertex ));
- }
-}
-
-
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.1
+ *
+ * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/macros.h"
+#include "math/m_eval.h"
+#include "main/dispatch.h"
+#include "vbo_exec.h"
+
+
+static void clear_active_eval1( struct vbo_exec_context *exec, GLuint attr )
+{
+ assert(attr < Elements(exec->eval.map1));
+ exec->eval.map1[attr].map = NULL;
+}
+
+static void clear_active_eval2( struct vbo_exec_context *exec, GLuint attr )
+{
+ assert(attr < Elements(exec->eval.map2));
+ exec->eval.map2[attr].map = NULL;
+}
+
+static void set_active_eval1( struct vbo_exec_context *exec, GLuint attr, GLuint dim,
+ struct gl_1d_map *map )
+{
+ assert(attr < Elements(exec->eval.map1));
+ if (!exec->eval.map1[attr].map) {
+ exec->eval.map1[attr].map = map;
+ exec->eval.map1[attr].sz = dim;
+ }
+}
+
+static void set_active_eval2( struct vbo_exec_context *exec, GLuint attr, GLuint dim,
+ struct gl_2d_map *map )
+{
+ assert(attr < Elements(exec->eval.map2));
+ if (!exec->eval.map2[attr].map) {
+ exec->eval.map2[attr].map = map;
+ exec->eval.map2[attr].sz = dim;
+ }
+}
+
+void vbo_exec_eval_update( struct vbo_exec_context *exec )
+{
+ struct gl_context *ctx = exec->ctx;
+ GLuint attr;
+
+ /* Vertex program maps have priority over conventional attribs */
+
+ for (attr = 0; attr < VBO_ATTRIB_FIRST_MATERIAL; attr++) {
+ clear_active_eval1( exec, attr );
+ clear_active_eval2( exec, attr );
+ }
+
+ if (ctx->Eval.Map1Color4)
+ set_active_eval1( exec, VBO_ATTRIB_COLOR0, 4, &ctx->EvalMap.Map1Color4 );
+
+ if (ctx->Eval.Map2Color4)
+ set_active_eval2( exec, VBO_ATTRIB_COLOR0, 4, &ctx->EvalMap.Map2Color4 );
+
+ if (ctx->Eval.Map1TextureCoord4)
+ set_active_eval1( exec, VBO_ATTRIB_TEX0, 4, &ctx->EvalMap.Map1Texture4 );
+ else if (ctx->Eval.Map1TextureCoord3)
+ set_active_eval1( exec, VBO_ATTRIB_TEX0, 3, &ctx->EvalMap.Map1Texture3 );
+ else if (ctx->Eval.Map1TextureCoord2)
+ set_active_eval1( exec, VBO_ATTRIB_TEX0, 2, &ctx->EvalMap.Map1Texture2 );
+ else if (ctx->Eval.Map1TextureCoord1)
+ set_active_eval1( exec, VBO_ATTRIB_TEX0, 1, &ctx->EvalMap.Map1Texture1 );
+
+ if (ctx->Eval.Map2TextureCoord4)
+ set_active_eval2( exec, VBO_ATTRIB_TEX0, 4, &ctx->EvalMap.Map2Texture4 );
+ else if (ctx->Eval.Map2TextureCoord3)
+ set_active_eval2( exec, VBO_ATTRIB_TEX0, 3, &ctx->EvalMap.Map2Texture3 );
+ else if (ctx->Eval.Map2TextureCoord2)
+ set_active_eval2( exec, VBO_ATTRIB_TEX0, 2, &ctx->EvalMap.Map2Texture2 );
+ else if (ctx->Eval.Map2TextureCoord1)
+ set_active_eval2( exec, VBO_ATTRIB_TEX0, 1, &ctx->EvalMap.Map2Texture1 );
+
+ if (ctx->Eval.Map1Normal)
+ set_active_eval1( exec, VBO_ATTRIB_NORMAL, 3, &ctx->EvalMap.Map1Normal );
+
+ if (ctx->Eval.Map2Normal)
+ set_active_eval2( exec, VBO_ATTRIB_NORMAL, 3, &ctx->EvalMap.Map2Normal );
+
+ if (ctx->Eval.Map1Vertex4)
+ set_active_eval1( exec, VBO_ATTRIB_POS, 4, &ctx->EvalMap.Map1Vertex4 );
+ else if (ctx->Eval.Map1Vertex3)
+ set_active_eval1( exec, VBO_ATTRIB_POS, 3, &ctx->EvalMap.Map1Vertex3 );
+
+ if (ctx->Eval.Map2Vertex4)
+ set_active_eval2( exec, VBO_ATTRIB_POS, 4, &ctx->EvalMap.Map2Vertex4 );
+ else if (ctx->Eval.Map2Vertex3)
+ set_active_eval2( exec, VBO_ATTRIB_POS, 3, &ctx->EvalMap.Map2Vertex3 );
+
+ /* _NEW_PROGRAM */
+ if (ctx->VertexProgram._Enabled) {
+ /* These are the 16 evaluators which GL_NV_vertex_program defines.
+ * They alias and override the conventional vertex attributs.
+ */
+ for (attr = 0; attr < 16; attr++) {
+ /* _NEW_EVAL */
+ assert(attr < Elements(ctx->Eval.Map1Attrib));
+ if (ctx->Eval.Map1Attrib[attr])
+ set_active_eval1( exec, attr, 4, &ctx->EvalMap.Map1Attrib[attr] );
+
+ assert(attr < Elements(ctx->Eval.Map2Attrib));
+ if (ctx->Eval.Map2Attrib[attr])
+ set_active_eval2( exec, attr, 4, &ctx->EvalMap.Map2Attrib[attr] );
+ }
+ }
+
+ exec->eval.recalculate_maps = 0;
+}
+
+
+
+void vbo_exec_do_EvalCoord1f(struct vbo_exec_context *exec, GLfloat u)
+{
+ GLuint attr;
+
+ for (attr = 1; attr <= VBO_ATTRIB_TEX7; attr++) {
+ struct gl_1d_map *map = exec->eval.map1[attr].map;
+ if (map) {
+ GLfloat uu = (u - map->u1) * map->du;
+ GLfloat data[4];
+
+ ASSIGN_4V(data, 0, 0, 0, 1);
+
+ _math_horner_bezier_curve(map->Points, data, uu,
+ exec->eval.map1[attr].sz,
+ map->Order);
+
+ COPY_SZ_4V( exec->vtx.attrptr[attr],
+ exec->vtx.attrsz[attr],
+ data );
+ }
+ }
+
+ /** Vertex -- EvalCoord1f is a noop if this map not enabled:
+ **/
+ if (exec->eval.map1[0].map) {
+ struct gl_1d_map *map = exec->eval.map1[0].map;
+ GLfloat uu = (u - map->u1) * map->du;
+ GLfloat vertex[4];
+
+ ASSIGN_4V(vertex, 0, 0, 0, 1);
+
+ _math_horner_bezier_curve(map->Points, vertex, uu,
+ exec->eval.map1[0].sz,
+ map->Order);
+
+ if (exec->eval.map1[0].sz == 4)
+ CALL_Vertex4fv(GET_DISPATCH(), ( vertex ));
+ else
+ CALL_Vertex3fv(GET_DISPATCH(), ( vertex ));
+ }
+}
+
+
+
+void vbo_exec_do_EvalCoord2f( struct vbo_exec_context *exec,
+ GLfloat u, GLfloat v )
+{
+ GLuint attr;
+
+ for (attr = 1; attr <= VBO_ATTRIB_TEX7; attr++) {
+ struct gl_2d_map *map = exec->eval.map2[attr].map;
+ if (map) {
+ GLfloat uu = (u - map->u1) * map->du;
+ GLfloat vv = (v - map->v1) * map->dv;
+ GLfloat data[4];
+
+ ASSIGN_4V(data, 0, 0, 0, 1);
+
+ _math_horner_bezier_surf(map->Points,
+ data,
+ uu, vv,
+ exec->eval.map2[attr].sz,
+ map->Uorder, map->Vorder);
+
+ COPY_SZ_4V( exec->vtx.attrptr[attr],
+ exec->vtx.attrsz[attr],
+ data );
+ }
+ }
+
+ /** Vertex -- EvalCoord2f is a noop if this map not enabled:
+ **/
+ if (exec->eval.map2[0].map) {
+ struct gl_2d_map *map = exec->eval.map2[0].map;
+ GLfloat uu = (u - map->u1) * map->du;
+ GLfloat vv = (v - map->v1) * map->dv;
+ GLfloat vertex[4];
+
+ ASSIGN_4V(vertex, 0, 0, 0, 1);
+
+ if (exec->ctx->Eval.AutoNormal) {
+ GLfloat normal[4];
+ GLfloat du[4], dv[4];
+
+ _math_de_casteljau_surf(map->Points, vertex, du, dv, uu, vv,
+ exec->eval.map2[0].sz,
+ map->Uorder, map->Vorder);
+
+ if (exec->eval.map2[0].sz == 4) {
+ du[0] = du[0]*vertex[3] - du[3]*vertex[0];
+ du[1] = du[1]*vertex[3] - du[3]*vertex[1];
+ du[2] = du[2]*vertex[3] - du[3]*vertex[2];
+
+ dv[0] = dv[0]*vertex[3] - dv[3]*vertex[0];
+ dv[1] = dv[1]*vertex[3] - dv[3]*vertex[1];
+ dv[2] = dv[2]*vertex[3] - dv[3]*vertex[2];
+ }
+
+
+ CROSS3(normal, du, dv);
+ NORMALIZE_3FV(normal);
+ normal[3] = 1.0;
+
+ COPY_SZ_4V( exec->vtx.attrptr[VBO_ATTRIB_NORMAL],
+ exec->vtx.attrsz[VBO_ATTRIB_NORMAL],
+ normal );
+
+ }
+ else {
+ _math_horner_bezier_surf(map->Points, vertex, uu, vv,
+ exec->eval.map2[0].sz,
+ map->Uorder, map->Vorder);
+ }
+
+ if (exec->vtx.attrsz[0] == 4)
+ CALL_Vertex4fv(GET_DISPATCH(), ( vertex ));
+ else
+ CALL_Vertex3fv(GET_DISPATCH(), ( vertex ));
+ }
+}
+
+
diff --git a/mesalib/src/mesa/vbo/vbo_save_loopback.c b/mesalib/src/mesa/vbo/vbo_save_loopback.c
index 6a8860c78..51e598e7e 100644
--- a/mesalib/src/mesa/vbo/vbo_save_loopback.c
+++ b/mesalib/src/mesa/vbo/vbo_save_loopback.c
@@ -1,196 +1,196 @@
-/**************************************************************************
- *
- * Copyright 2005 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * 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, sub license, 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 (including the
- * next paragraph) 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 NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-#include "main/context.h"
-#include "main/glheader.h"
-#include "main/enums.h"
-#include "main/imports.h"
-#include "main/mfeatures.h"
-#include "main/mtypes.h"
-#include "main/dispatch.h"
-#include "glapi/glapi.h"
-
-#include "vbo_context.h"
-
-
-#if FEATURE_dlist
-
-
-typedef void (*attr_func)( struct gl_context *ctx, GLint target, const GLfloat * );
-
-
-/* This file makes heavy use of the aliasing of NV vertex attributes
- * with the legacy attributes, and also with ARB and Material
- * attributes as currently implemented.
- */
-static void VertexAttrib1fvNV(struct gl_context *ctx, GLint target, const GLfloat *v)
-{
- CALL_VertexAttrib1fvNV(ctx->Exec, (target, v));
-}
-
-static void VertexAttrib2fvNV(struct gl_context *ctx, GLint target, const GLfloat *v)
-{
- CALL_VertexAttrib2fvNV(ctx->Exec, (target, v));
-}
-
-static void VertexAttrib3fvNV(struct gl_context *ctx, GLint target, const GLfloat *v)
-{
- CALL_VertexAttrib3fvNV(ctx->Exec, (target, v));
-}
-
-static void VertexAttrib4fvNV(struct gl_context *ctx, GLint target, const GLfloat *v)
-{
- CALL_VertexAttrib4fvNV(ctx->Exec, (target, v));
-}
-
-static attr_func vert_attrfunc[4] = {
- VertexAttrib1fvNV,
- VertexAttrib2fvNV,
- VertexAttrib3fvNV,
- VertexAttrib4fvNV
-};
-
-struct loopback_attr {
- GLint target;
- GLint sz;
- attr_func func;
-};
-
-/* Don't emit ends and begins on wrapped primitives. Don't replay
- * wrapped vertices. If we get here, it's probably because the
- * precalculated wrapping is wrong.
- */
-static void loopback_prim( struct gl_context *ctx,
- const GLfloat *buffer,
- const struct _mesa_prim *prim,
- GLuint wrap_count,
- GLuint vertex_size,
- const struct loopback_attr *la, GLuint nr )
-{
- GLint start = prim->start;
- GLint end = start + prim->count;
- const GLfloat *data;
- GLint j;
- GLuint k;
-
- if (0)
- printf("loopback prim %s(%s,%s) verts %d..%d\n",
- _mesa_lookup_prim_by_nr(prim->mode),
- prim->begin ? "begin" : "..",
- prim->end ? "end" : "..",
- start,
- end);
-
- if (prim->begin) {
- CALL_Begin(GET_DISPATCH(), ( prim->mode ));
- }
- else {
- assert(start == 0);
- start += wrap_count;
- }
-
- data = buffer + start * vertex_size;
-
- for (j = start ; j < end ; j++) {
- const GLfloat *tmp = data + la[0].sz;
-
- for (k = 1 ; k < nr ; k++) {
- la[k].func( ctx, la[k].target, tmp );
- tmp += la[k].sz;
- }
-
- /* Fire the vertex
- */
- la[0].func( ctx, VBO_ATTRIB_POS, data );
- data = tmp;
- }
-
- if (prim->end) {
- CALL_End(GET_DISPATCH(), ());
- }
-}
-
-/* Primitives generated by DrawArrays/DrawElements/Rectf may be
- * caught here. If there is no primitive in progress, execute them
- * normally, otherwise need to track and discard the generated
- * primitives.
- */
-static void loopback_weak_prim( struct gl_context *ctx,
- const struct _mesa_prim *prim )
-{
- /* Use the prim_weak flag to ensure that if this primitive
- * wraps, we don't mistake future vertex_lists for part of the
- * surrounding primitive.
- *
- * While this flag is set, we are simply disposing of data
- * generated by an operation now known to be a noop.
- */
- if (prim->begin)
- ctx->Driver.CurrentExecPrimitive |= VBO_SAVE_PRIM_WEAK;
- if (prim->end)
- ctx->Driver.CurrentExecPrimitive &= ~VBO_SAVE_PRIM_WEAK;
-}
-
-
-void vbo_loopback_vertex_list( struct gl_context *ctx,
- const GLfloat *buffer,
- const GLubyte *attrsz,
- const struct _mesa_prim *prim,
- GLuint prim_count,
- GLuint wrap_count,
- GLuint vertex_size)
-{
- struct loopback_attr la[VBO_ATTRIB_MAX];
- GLuint i, nr = 0;
-
- /* All Legacy, NV, ARB and Material attributes are routed through
- * the NV attributes entrypoints:
- */
- for (i = 0 ; i < VBO_ATTRIB_MAX ; i++) {
- if (attrsz[i]) {
- la[nr].target = i;
- la[nr].sz = attrsz[i];
- la[nr].func = vert_attrfunc[attrsz[i]-1];
- nr++;
- }
- }
-
- for (i = 0 ; i < prim_count ; i++) {
- if ((prim[i].mode & VBO_SAVE_PRIM_WEAK) &&
- (ctx->Driver.CurrentExecPrimitive != PRIM_OUTSIDE_BEGIN_END))
- {
- loopback_weak_prim( ctx, &prim[i] );
- }
- else
- {
- loopback_prim( ctx, buffer, &prim[i], wrap_count, vertex_size, la, nr );
- }
- }
-}
-
-
-#endif /* FEATURE_dlist */
+/**************************************************************************
+ *
+ * Copyright 2005 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * 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, sub license, 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 (including the
+ * next paragraph) 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 NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
+ *
+ **************************************************************************/
+
+#include "main/context.h"
+#include "main/glheader.h"
+#include "main/enums.h"
+#include "main/imports.h"
+#include "main/mfeatures.h"
+#include "main/mtypes.h"
+#include "main/dispatch.h"
+#include "glapi/glapi.h"
+
+#include "vbo_context.h"
+
+
+#if FEATURE_dlist
+
+
+typedef void (*attr_func)( struct gl_context *ctx, GLint target, const GLfloat * );
+
+
+/* This file makes heavy use of the aliasing of NV vertex attributes
+ * with the legacy attributes, and also with ARB and Material
+ * attributes as currently implemented.
+ */
+static void VertexAttrib1fvNV(struct gl_context *ctx, GLint target, const GLfloat *v)
+{
+ CALL_VertexAttrib1fvNV(ctx->Exec, (target, v));
+}
+
+static void VertexAttrib2fvNV(struct gl_context *ctx, GLint target, const GLfloat *v)
+{
+ CALL_VertexAttrib2fvNV(ctx->Exec, (target, v));
+}
+
+static void VertexAttrib3fvNV(struct gl_context *ctx, GLint target, const GLfloat *v)
+{
+ CALL_VertexAttrib3fvNV(ctx->Exec, (target, v));
+}
+
+static void VertexAttrib4fvNV(struct gl_context *ctx, GLint target, const GLfloat *v)
+{
+ CALL_VertexAttrib4fvNV(ctx->Exec, (target, v));
+}
+
+static attr_func vert_attrfunc[4] = {
+ VertexAttrib1fvNV,
+ VertexAttrib2fvNV,
+ VertexAttrib3fvNV,
+ VertexAttrib4fvNV
+};
+
+struct loopback_attr {
+ GLint target;
+ GLint sz;
+ attr_func func;
+};
+
+/* Don't emit ends and begins on wrapped primitives. Don't replay
+ * wrapped vertices. If we get here, it's probably because the
+ * precalculated wrapping is wrong.
+ */
+static void loopback_prim( struct gl_context *ctx,
+ const GLfloat *buffer,
+ const struct _mesa_prim *prim,
+ GLuint wrap_count,
+ GLuint vertex_size,
+ const struct loopback_attr *la, GLuint nr )
+{
+ GLint start = prim->start;
+ GLint end = start + prim->count;
+ const GLfloat *data;
+ GLint j;
+ GLuint k;
+
+ if (0)
+ printf("loopback prim %s(%s,%s) verts %d..%d\n",
+ _mesa_lookup_prim_by_nr(prim->mode),
+ prim->begin ? "begin" : "..",
+ prim->end ? "end" : "..",
+ start,
+ end);
+
+ if (prim->begin) {
+ CALL_Begin(GET_DISPATCH(), ( prim->mode ));
+ }
+ else {
+ assert(start == 0);
+ start += wrap_count;
+ }
+
+ data = buffer + start * vertex_size;
+
+ for (j = start ; j < end ; j++) {
+ const GLfloat *tmp = data + la[0].sz;
+
+ for (k = 1 ; k < nr ; k++) {
+ la[k].func( ctx, la[k].target, tmp );
+ tmp += la[k].sz;
+ }
+
+ /* Fire the vertex
+ */
+ la[0].func( ctx, VBO_ATTRIB_POS, data );
+ data = tmp;
+ }
+
+ if (prim->end) {
+ CALL_End(GET_DISPATCH(), ());
+ }
+}
+
+/* Primitives generated by DrawArrays/DrawElements/Rectf may be
+ * caught here. If there is no primitive in progress, execute them
+ * normally, otherwise need to track and discard the generated
+ * primitives.
+ */
+static void loopback_weak_prim( struct gl_context *ctx,
+ const struct _mesa_prim *prim )
+{
+ /* Use the prim_weak flag to ensure that if this primitive
+ * wraps, we don't mistake future vertex_lists for part of the
+ * surrounding primitive.
+ *
+ * While this flag is set, we are simply disposing of data
+ * generated by an operation now known to be a noop.
+ */
+ if (prim->begin)
+ ctx->Driver.CurrentExecPrimitive |= VBO_SAVE_PRIM_WEAK;
+ if (prim->end)
+ ctx->Driver.CurrentExecPrimitive &= ~VBO_SAVE_PRIM_WEAK;
+}
+
+
+void vbo_loopback_vertex_list( struct gl_context *ctx,
+ const GLfloat *buffer,
+ const GLubyte *attrsz,
+ const struct _mesa_prim *prim,
+ GLuint prim_count,
+ GLuint wrap_count,
+ GLuint vertex_size)
+{
+ struct loopback_attr la[VBO_ATTRIB_MAX];
+ GLuint i, nr = 0;
+
+ /* All Legacy, NV, ARB and Material attributes are routed through
+ * the NV attributes entrypoints:
+ */
+ for (i = 0 ; i < VBO_ATTRIB_MAX ; i++) {
+ if (attrsz[i]) {
+ la[nr].target = i;
+ la[nr].sz = attrsz[i];
+ la[nr].func = vert_attrfunc[attrsz[i]-1];
+ nr++;
+ }
+ }
+
+ for (i = 0 ; i < prim_count ; i++) {
+ if ((prim[i].mode & VBO_SAVE_PRIM_WEAK) &&
+ (ctx->Driver.CurrentExecPrimitive != PRIM_OUTSIDE_BEGIN_END))
+ {
+ loopback_weak_prim( ctx, &prim[i] );
+ }
+ else
+ {
+ loopback_prim( ctx, buffer, &prim[i], wrap_count, vertex_size, la, nr );
+ }
+ }
+}
+
+
+#endif /* FEATURE_dlist */
diff --git a/mesalib/src/mesa/vbo/vbo_split.h b/mesalib/src/mesa/vbo/vbo_split.h
index 14cf9e49c..b7f0a9c57 100644
--- a/mesalib/src/mesa/vbo/vbo_split.h
+++ b/mesalib/src/mesa/vbo/vbo_split.h
@@ -1,72 +1,72 @@
-/*
- * mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/**
- * \file vbo_context.h
- * \brief VBO builder module datatypes and definitions.
- * \author Keith Whitwell
- */
-
-
-/**
- * \mainpage The VBO splitter
- *
- * This is the private data used internally to the vbo_split_prims()
- * helper function. Nobody outside the vbo_split* files needs to
- * include or know about this structure.
- */
-
-
-#ifndef _VBO_SPLIT_H
-#define _VBO_SPLIT_H
-
-#include "vbo.h"
-
-
-/* True if a primitive can be split without copying of vertices, false
- * otherwise.
- */
-GLboolean split_prim_inplace(GLenum mode, GLuint *first, GLuint *incr);
-
-void vbo_split_inplace( struct gl_context *ctx,
- const struct gl_client_array *arrays[],
- const struct _mesa_prim *prim,
- GLuint nr_prims,
- const struct _mesa_index_buffer *ib,
- GLuint min_index,
- GLuint max_index,
- vbo_draw_func draw,
- const struct split_limits *limits );
-
-/* Requires ib != NULL:
- */
-void vbo_split_copy( struct gl_context *ctx,
- const struct gl_client_array *arrays[],
- const struct _mesa_prim *prim,
- GLuint nr_prims,
- const struct _mesa_index_buffer *ib,
- vbo_draw_func draw,
- const struct split_limits *limits );
-
-#endif
+/*
+ * mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/**
+ * \file vbo_context.h
+ * \brief VBO builder module datatypes and definitions.
+ * \author Keith Whitwell
+ */
+
+
+/**
+ * \mainpage The VBO splitter
+ *
+ * This is the private data used internally to the vbo_split_prims()
+ * helper function. Nobody outside the vbo_split* files needs to
+ * include or know about this structure.
+ */
+
+
+#ifndef _VBO_SPLIT_H
+#define _VBO_SPLIT_H
+
+#include "vbo.h"
+
+
+/* True if a primitive can be split without copying of vertices, false
+ * otherwise.
+ */
+GLboolean split_prim_inplace(GLenum mode, GLuint *first, GLuint *incr);
+
+void vbo_split_inplace( struct gl_context *ctx,
+ const struct gl_client_array *arrays[],
+ const struct _mesa_prim *prim,
+ GLuint nr_prims,
+ const struct _mesa_index_buffer *ib,
+ GLuint min_index,
+ GLuint max_index,
+ vbo_draw_func draw,
+ const struct split_limits *limits );
+
+/* Requires ib != NULL:
+ */
+void vbo_split_copy( struct gl_context *ctx,
+ const struct gl_client_array *arrays[],
+ const struct _mesa_prim *prim,
+ GLuint nr_prims,
+ const struct _mesa_index_buffer *ib,
+ vbo_draw_func draw,
+ const struct split_limits *limits );
+
+#endif
diff --git a/mesalib/src/mesa/x86/3dnow.c b/mesalib/src/mesa/x86/3dnow.c
index 549157c50..de2fb1e2a 100644
--- a/mesalib/src/mesa/x86/3dnow.c
+++ b/mesalib/src/mesa/x86/3dnow.c
@@ -1,91 +1,91 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 5.0.1
- *
- * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * 3DNow! optimizations contributed by
- * Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "math/m_xform.h"
-#include "tnl/t_context.h"
-
-#include "3dnow.h"
-#include "x86_xform.h"
-
-#ifdef DEBUG_MATH
-#include "math/m_debug.h"
-#endif
-
-
-#ifdef USE_3DNOW_ASM
-DECLARE_XFORM_GROUP( 3dnow, 2 )
-DECLARE_XFORM_GROUP( 3dnow, 3 )
-DECLARE_XFORM_GROUP( 3dnow, 4 )
-
-DECLARE_NORM_GROUP( 3dnow )
-
-
-extern void _ASMAPI
-_mesa_v16_3dnow_general_xform( GLfloat *first_vert,
- const GLfloat *m,
- const GLfloat *src,
- GLuint src_stride,
- GLuint count );
-
-extern void _ASMAPI
-_mesa_3dnow_project_vertices( GLfloat *first,
- GLfloat *last,
- const GLfloat *m,
- GLuint stride );
-
-extern void _ASMAPI
-_mesa_3dnow_project_clipped_vertices( GLfloat *first,
- GLfloat *last,
- const GLfloat *m,
- GLuint stride,
- const GLubyte *clipmask );
-#endif
-
-
-void _mesa_init_3dnow_transform_asm( void )
-{
-#ifdef USE_3DNOW_ASM
- ASSIGN_XFORM_GROUP( 3dnow, 2 );
- ASSIGN_XFORM_GROUP( 3dnow, 3 );
- ASSIGN_XFORM_GROUP( 3dnow, 4 );
-
- /* There's a bug somewhere in the 3dnow_normal.S file that causes
- * bad shading. Disable for now.
- ASSIGN_NORM_GROUP( 3dnow );
- */
-
-#ifdef DEBUG_MATH
- _math_test_all_transform_functions( "3DNow!" );
- _math_test_all_normal_transform_functions( "3DNow!" );
-#endif
-#endif
-}
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 5.0.1
+ *
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * 3DNow! optimizations contributed by
+ * Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "math/m_xform.h"
+#include "tnl/t_context.h"
+
+#include "3dnow.h"
+#include "x86_xform.h"
+
+#ifdef DEBUG_MATH
+#include "math/m_debug.h"
+#endif
+
+
+#ifdef USE_3DNOW_ASM
+DECLARE_XFORM_GROUP( 3dnow, 2 )
+DECLARE_XFORM_GROUP( 3dnow, 3 )
+DECLARE_XFORM_GROUP( 3dnow, 4 )
+
+DECLARE_NORM_GROUP( 3dnow )
+
+
+extern void _ASMAPI
+_mesa_v16_3dnow_general_xform( GLfloat *first_vert,
+ const GLfloat *m,
+ const GLfloat *src,
+ GLuint src_stride,
+ GLuint count );
+
+extern void _ASMAPI
+_mesa_3dnow_project_vertices( GLfloat *first,
+ GLfloat *last,
+ const GLfloat *m,
+ GLuint stride );
+
+extern void _ASMAPI
+_mesa_3dnow_project_clipped_vertices( GLfloat *first,
+ GLfloat *last,
+ const GLfloat *m,
+ GLuint stride,
+ const GLubyte *clipmask );
+#endif
+
+
+void _mesa_init_3dnow_transform_asm( void )
+{
+#ifdef USE_3DNOW_ASM
+ ASSIGN_XFORM_GROUP( 3dnow, 2 );
+ ASSIGN_XFORM_GROUP( 3dnow, 3 );
+ ASSIGN_XFORM_GROUP( 3dnow, 4 );
+
+ /* There's a bug somewhere in the 3dnow_normal.S file that causes
+ * bad shading. Disable for now.
+ ASSIGN_NORM_GROUP( 3dnow );
+ */
+
+#ifdef DEBUG_MATH
+ _math_test_all_transform_functions( "3DNow!" );
+ _math_test_all_normal_transform_functions( "3DNow!" );
+#endif
+#endif
+}
diff --git a/mesalib/src/mesa/x86/3dnow.h b/mesalib/src/mesa/x86/3dnow.h
index 067f8f721..1c1fedcd4 100644
--- a/mesalib/src/mesa/x86/3dnow.h
+++ b/mesalib/src/mesa/x86/3dnow.h
@@ -1,36 +1,36 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * 3DNow! optimizations contributed by
- * Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
- */
-
-#ifndef __3DNOW_H__
-#define __3DNOW_H__
-
-void _mesa_init_3dnow_transform_asm( void );
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * 3DNow! optimizations contributed by
+ * Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
+ */
+
+#ifndef __3DNOW_H__
+#define __3DNOW_H__
+
+void _mesa_init_3dnow_transform_asm( void );
+
+#endif
diff --git a/mesalib/src/mesa/x86/3dnow_normal.S b/mesalib/src/mesa/x86/3dnow_normal.S
index bfa316588..7f5f6b357 100644
--- a/mesalib/src/mesa/x86/3dnow_normal.S
+++ b/mesalib/src/mesa/x86/3dnow_normal.S
@@ -1,852 +1,852 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 5.1
- *
- * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * 3Dnow assembly code by Holger Waechtler
- */
-
-#ifdef USE_3DNOW_ASM
-
-#include "assyntax.h"
-#include "matypes.h"
-#include "norm_args.h"
-
- SEG_TEXT
-
-#define M(i) REGOFF(i * 4, ECX)
-#define STRIDE REGOFF(12, ESI)
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_3dnow_transform_normalize_normals)
-HIDDEN(_mesa_3dnow_transform_normalize_normals)
-GLNAME(_mesa_3dnow_transform_normalize_normals):
-
-#define FRAME_OFFSET 12
-
- PUSH_L ( EDI )
- PUSH_L ( ESI )
- PUSH_L ( EBP )
-
- MOV_L ( ARG_LENGTHS, EDI )
- MOV_L ( ARG_IN, ESI )
- MOV_L ( ARG_DEST, EAX )
- MOV_L ( REGOFF(V4F_COUNT, ESI), EBP ) /* dest->count = in->count */
- MOV_L ( EBP, REGOFF(V4F_COUNT, EAX) )
- MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
- MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
- MOV_L ( ARG_MAT, ECX )
- MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
-
- CMP_L ( CONST(0), EBP ) /* count > 0 ?? */
- JE ( LLBL (G3TN_end) )
-
- MOV_L ( REGOFF (V4F_COUNT, ESI), EBP )
- FEMMS
-
- PUSH_L ( EBP )
- PUSH_L ( EAX )
- PUSH_L ( EDX ) /* save counter & pointer for */
- /* the normalize pass */
-#undef FRAME_OFFSET
-#define FRAME_OFFSET 24
-
- MOVQ ( M(0), MM3 ) /* m1 | m0 */
- MOVQ ( M(4), MM4 ) /* m5 | m4 */
-
- MOVD ( M(2), MM5 ) /* | m2 */
- PUNPCKLDQ ( M(6), MM5 ) /* m6 | m2 */
-
- MOVQ ( M(8), MM6 ) /* m9 | m8 */
- MOVQ ( M(10), MM7 ) /* | m10 */
-
- CMP_L ( CONST(0), EDI ) /* lengths == 0 ? */
- JNE ( LLBL (G3TN_scale_end ) )
-
- MOVD ( ARG_SCALE, MM0 ) /* | scale */
- PUNPCKLDQ ( MM0, MM0 ) /* scale | scale */
-
- PFMUL ( MM0, MM3 ) /* scale * m1 | scale * m0 */
- PFMUL ( MM0, MM4 ) /* scale * m5 | scale * m4 */
- PFMUL ( MM0, MM5 ) /* scale * m6 | scale * m2 */
- PFMUL ( MM0, MM6 ) /* scale * m9 | scale * m8 */
- PFMUL ( MM0, MM7 ) /* | scale * m10 */
-
-ALIGNTEXT32
-LLBL (G3TN_scale_end):
-LLBL (G3TN_transform):
- MOVQ ( REGIND (EDX), MM0 ) /* x1 | x0 */
- MOVD ( REGOFF (8, EDX), MM2 ) /* | x2 */
-
- MOVQ ( MM0, MM1 ) /* x1 | x0 */
- PUNPCKLDQ ( MM2, MM2 ) /* x2 | x2 */
-
- PFMUL ( MM3, MM0 ) /* x1*m1 | x0*m0 */
- ADD_L ( CONST(16), EAX ) /* next r */
-
- PREFETCHW ( REGIND(EAX) )
-
- PFMUL ( MM4, MM1 ) /* x1*m5 | x0*m4 */
- PFACC ( MM1, MM0 ) /* x0*m4+x1*m5 | x0*m0+x1*m1 */
-
- PFMUL ( MM5, MM2 ) /* x2*m6 | x2*m2 */
- PFADD ( MM2, MM0 ) /* x0*m4+x1*m5+x2*m6| x0*m0+...+x2**/
-
- MOVQ ( REGIND (EDX), MM1 ) /* x1 | x0 */
- MOVQ ( MM0, REGOFF(-16, EAX) ) /* write r0, r1 */
-
- PFMUL ( MM6, MM1 ) /* x1*m9 | x0*m8 */
- MOVD ( REGOFF (8, EDX), MM2 ) /* | x2 */
-
- PFMUL ( MM7, MM2 ) /* | x2*m10 */
- PFACC ( MM1, MM1 ) /* *not used* | x0*m8+x1*m9 */
-
- PFADD ( MM2, MM1 ) /* *not used* | x0*m8+x1*m9+x2*m*/
- ADD_L ( STRIDE, EDX ) /* next normal */
-
- PREFETCH ( REGIND(EDX) )
-
- MOVD ( MM1, REGOFF(-8, EAX) ) /* write r2 */
- SUB_L ( CONST(1), EBP ) /* decrement normal counter */
- JNZ ( LLBL (G3TN_transform) )
-
-
- POP_L ( EDX ) /* end of transform --- */
- POP_L ( EAX ) /* now normalizing ... */
- POP_L ( EBP )
-
- CMP_L ( CONST(0), EDI ) /* lengths == 0 ? */
- JE ( LLBL (G3TN_norm ) ) /* calculate lengths */
-
-
-ALIGNTEXT32
-LLBL (G3TN_norm_w_lengths):
-
- PREFETCHW ( REGOFF(12,EAX) )
-
- MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */
-
- MOVD ( REGIND (EDI), MM3 ) /* | length (x) */
- PFMUL ( MM3, MM1 ) /* | x2 (normalize*/
-
- PUNPCKLDQ ( MM3, MM3 ) /* length (x) | length (x) */
- PFMUL ( MM3, MM0 ) /* x1 (normalized) | x0 (normalize*/
-
- ADD_L ( STRIDE, EDX ) /* next normal */
- ADD_L ( CONST(4), EDI ) /* next length */
-
- PREFETCH ( REGIND(EDI) )
-
- MOVQ ( MM0, REGIND(EAX) ) /* write new x0, x1 */
- MOVD ( MM1, REGOFF(8, EAX) ) /* write new x2 */
-
- ADD_L ( CONST(16), EAX ) /* next r */
- SUB_L ( CONST(1), EBP ) /* decrement normal counter */
-
- JNZ ( LLBL (G3TN_norm_w_lengths) )
- JMP ( LLBL (G3TN_exit_3dnow) )
-
-ALIGNTEXT32
-LLBL (G3TN_norm):
-
- PREFETCHW ( REGIND(EAX) )
-
- MOVQ ( REGIND (EAX), MM0 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */
-
- MOVQ ( MM0, MM3 ) /* x1 | x0 */
- MOVQ ( MM1, MM4 ) /* | x2 */
-
- PFMUL ( MM0, MM3 ) /* x1*x1 | x0*x0 */
- ADD_L ( CONST(16), EAX ) /* next r */
-
- PFMUL ( MM1, MM4 ) /* | x2*x2 */
- PFADD ( MM4, MM3 ) /* | x0*x0+x2*x2 */
-
- PFACC ( MM3, MM3 ) /* **not used** | x0*x0+x1*x1+x2**/
- PFRSQRT ( MM3, MM5 ) /* 1/sqrt (x0*x0+x1*x1+x2*x2) */
-
- MOVQ ( MM5, MM4 )
- PUNPCKLDQ ( MM3, MM3 )
-
- SUB_L ( CONST(1), EBP ) /* decrement normal counter */
- PFMUL ( MM5, MM5 )
-
- PFRSQIT1 ( MM3, MM5 )
- PFRCPIT2 ( MM4, MM5 )
-
- PFMUL ( MM5, MM0 ) /* x1 (normalized) | x0 (normalize*/
-
- MOVQ ( MM0, REGOFF(-16, EAX) ) /* write new x0, x1 */
- PFMUL ( MM5, MM1 ) /* | x2 (normalize*/
-
- MOVD ( MM1, REGOFF(-8, EAX) ) /* write new x2 */
- JNZ ( LLBL (G3TN_norm) )
-
-LLBL (G3TN_exit_3dnow):
- FEMMS
-
-LLBL (G3TN_end):
- POP_L ( EBP )
- POP_L ( ESI )
- POP_L ( EDI )
- RET
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_3dnow_transform_normalize_normals_no_rot)
-HIDDEN(_mesa_3dnow_transform_normalize_normals_no_rot)
-GLNAME(_mesa_3dnow_transform_normalize_normals_no_rot):
-
-#undef FRAME_OFFSET
-#define FRAME_OFFSET 12
-
- PUSH_L ( EDI )
- PUSH_L ( ESI )
- PUSH_L ( EBP )
-
- MOV_L ( ARG_LENGTHS, EDI )
- MOV_L ( ARG_IN, ESI )
- MOV_L ( ARG_DEST, EAX )
- MOV_L ( REGOFF(V4F_COUNT, ESI), EBP ) /* dest->count = in->count */
- MOV_L ( EBP, REGOFF(V4F_COUNT, EAX) )
- MOV_L ( ARG_MAT, ECX )
- MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
- MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
- MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
-
- CMP_L ( CONST(0), EBP ) /* count > 0 ?? */
- JE ( LLBL (G3TNNR_end) )
-
- FEMMS
-
- MOVD ( M(0), MM0 ) /* | m0 */
- PUNPCKLDQ ( M(5), MM0 ) /* m5 | m0 */
-
- MOVD ( M(10), MM2 ) /* | m10 */
- PUNPCKLDQ ( MM2, MM2 ) /* m10 | m10 */
-
- CMP_L ( CONST(0), EDI ) /* lengths == 0 ? */
- JNE ( LLBL (G3TNNR_scale_end ) )
-
- MOVD ( ARG_SCALE, MM7 ) /* | scale */
- PUNPCKLDQ ( MM7, MM7 ) /* scale | scale */
-
- PFMUL ( MM7, MM0 ) /* scale * m5 | scale * m0 */
- PFMUL ( MM7, MM2 ) /* scale * m10 | scale * m10 */
-
-ALIGNTEXT32
-LLBL (G3TNNR_scale_end):
- CMP_L ( CONST(0), EDI ) /* lengths == 0 ? */
- JE ( LLBL (G3TNNR_norm) ) /* need to calculate lengths */
-
- MOVD ( REGIND(EDI), MM3 ) /* | length (x) */
-
-
-ALIGNTEXT32
-LLBL (G3TNNR_norm_w_lengths): /* use precalculated lengths */
-
- PREFETCHW ( REGIND(EAX) )
-
- MOVQ ( REGIND(EDX), MM6 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EDX), MM7 ) /* | x2 */
-
- PFMUL ( MM0, MM6 ) /* x1*m5 | x0*m0 */
- ADD_L ( STRIDE, EDX ) /* next normal */
-
- PREFETCH ( REGIND(EDX) )
-
- PFMUL ( MM2, MM7 ) /* | x2*m10 */
- ADD_L ( CONST(16), EAX ) /* next r */
-
- PFMUL ( MM3, MM7 ) /* | x2 (normalized) */
- PUNPCKLDQ ( MM3, MM3 ) /* length (x) | length (x) */
-
- ADD_L ( CONST(4), EDI ) /* next length */
- PFMUL ( MM3, MM6 ) /* x1 (normalized) | x0 (normalized) */
-
- SUB_L ( CONST(1), EBP ) /* decrement normal counter */
- MOVQ ( MM6, REGOFF(-16, EAX) ) /* write r0, r1 */
-
- MOVD ( MM7, REGOFF(-8, EAX) ) /* write r2 */
- MOVD ( REGIND(EDI), MM3 ) /* | length (x) */
-
- JNZ ( LLBL (G3TNNR_norm_w_lengths) )
- JMP ( LLBL (G3TNNR_exit_3dnow) )
-
-ALIGNTEXT32
-LLBL (G3TNNR_norm): /* need to calculate lengths */
-
- PREFETCHW ( REGIND(EAX) )
-
- MOVQ ( REGIND(EDX), MM6 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EDX), MM7 ) /* | x2 */
-
- PFMUL ( MM0, MM6 ) /* x1*m5 | x0*m0 */
- ADD_L ( CONST(16), EAX ) /* next r */
-
- PFMUL ( MM2, MM7 ) /* | x2*m10 */
- MOVQ ( MM6, MM3 ) /* x1 (transformed)| x0 (transformed) */
-
- MOVQ ( MM7, MM4 ) /* | x2 (transformed) */
- PFMUL ( MM6, MM3 ) /* x1*x1 | x0*x0 */
-
-
- PFMUL ( MM7, MM4 ) /* | x2*x2 */
- PFACC ( MM3, MM3 ) /* **not used** | x0*x0+x1*x1 */
-
- PFADD ( MM4, MM3 ) /* | x0*x0+x1*x1+x2*x2*/
- ADD_L ( STRIDE, EDX ) /* next normal */
-
- PREFETCH ( REGIND(EDX) )
-
- PFRSQRT ( MM3, MM5 ) /* 1/sqrt (x0*x0+x1*x1+x2*x2) */
- MOVQ ( MM5, MM4 )
-
- PUNPCKLDQ ( MM3, MM3 )
- PFMUL ( MM5, MM5 )
-
- PFRSQIT1 ( MM3, MM5 )
- SUB_L ( CONST(1), EBP ) /* decrement normal counter */
-
- PFRCPIT2 ( MM4, MM5 )
- PFMUL ( MM5, MM6 ) /* x1 (normalized) | x0 (normalized) */
-
- MOVQ ( MM6, REGOFF(-16, EAX) ) /* write r0, r1 */
- PFMUL ( MM5, MM7 ) /* | x2 (normalized) */
-
- MOVD ( MM7, REGOFF(-8, EAX) ) /* write r2 */
- JNZ ( LLBL (G3TNNR_norm) )
-
-
-LLBL (G3TNNR_exit_3dnow):
- FEMMS
-
-LLBL (G3TNNR_end):
- POP_L ( EBP )
- POP_L ( ESI )
- POP_L ( EDI )
- RET
-
-
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_3dnow_transform_rescale_normals_no_rot)
-HIDDEN(_mesa_3dnow_transform_rescale_normals_no_rot)
-GLNAME(_mesa_3dnow_transform_rescale_normals_no_rot):
-
-#undef FRAME_OFFSET
-#define FRAME_OFFSET 12
-
- PUSH_L ( EDI )
- PUSH_L ( ESI )
- PUSH_L ( EBP )
-
- MOV_L ( ARG_IN, EAX )
- MOV_L ( ARG_DEST, EDX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EBP ) /* dest->count = in->count */
- MOV_L ( EBP, REGOFF(V4F_COUNT, EDX) )
- MOV_L ( ARG_IN, ESI )
- MOV_L ( ARG_MAT, ECX )
- MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
- MOV_L ( REGOFF(V4F_START, EDX), EAX ) /* dest->start */
- MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
-
- CMP_L ( CONST(0), EBP )
- JE ( LLBL (G3TRNR_end) )
-
- FEMMS
-
- MOVD ( ARG_SCALE, MM6 ) /* | scale */
- PUNPCKLDQ ( MM6, MM6 ) /* scale | scale */
-
- MOVD ( REGIND(ECX), MM0 ) /* | m0 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m5 | m0 */
-
- PFMUL ( MM6, MM0 ) /* scale*m5 | scale*m0 */
- MOVD ( REGOFF(40, ECX), MM2 ) /* | m10 */
-
- PFMUL ( MM6, MM2 ) /* | scale*m10 */
-
-ALIGNTEXT32
-LLBL (G3TRNR_rescale):
-
- PREFETCHW ( REGIND(EAX) )
-
- MOVQ ( REGIND(EDX), MM4 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EDX), MM5 ) /* | x2 */
-
- PFMUL ( MM0, MM4 ) /* x1*m5 | x0*m0 */
- ADD_L ( STRIDE, EDX ) /* next normal */
-
- PREFETCH ( REGIND(EDX) )
-
- PFMUL ( MM2, MM5 ) /* | x2*m10 */
- ADD_L ( CONST(16), EAX ) /* next r */
-
- SUB_L ( CONST(1), EBP ) /* decrement normal counter */
- MOVQ ( MM4, REGOFF(-16, EAX) ) /* write r0, r1 */
-
- MOVD ( MM5, REGOFF(-8, EAX) ) /* write r2 */
- JNZ ( LLBL (G3TRNR_rescale) ) /* cnt > 0 ? -> process next normal */
-
- FEMMS
-
-LLBL (G3TRNR_end):
- POP_L ( EBP )
- POP_L ( ESI )
- POP_L ( EDI )
- RET
-
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_3dnow_transform_rescale_normals)
-HIDDEN(_mesa_3dnow_transform_rescale_normals)
-GLNAME(_mesa_3dnow_transform_rescale_normals):
-
-#undef FRAME_OFFSET
-#define FRAME_OFFSET 8
-
- PUSH_L ( EDI )
- PUSH_L ( ESI )
-
- MOV_L ( ARG_IN, ESI )
- MOV_L ( ARG_DEST, EAX )
- MOV_L ( ARG_MAT, ECX )
- MOV_L ( REGOFF(V4F_COUNT, ESI), EDI ) /* dest->count = in->count */
- MOV_L ( EDI, REGOFF(V4F_COUNT, EAX) )
- MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
- MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
- MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
-
- CMP_L ( CONST(0), EDI )
- JE ( LLBL (G3TR_end) )
-
- FEMMS
-
- MOVQ ( REGIND(ECX), MM3 ) /* m1 | m0 */
-
- MOVQ ( REGOFF(16,ECX), MM4 ) /* m5 | m4 */
- MOVD ( ARG_SCALE, MM0 ) /* scale */
-
- MOVD ( REGOFF(8,ECX), MM5 ) /* | m2 */
- PUNPCKLDQ ( MM0, MM0 ) /* scale | scale */
-
- PUNPCKLDQ ( REGOFF(24, ECX), MM5 )
- PFMUL ( MM0, MM3 ) /* scale*m1 | scale*m0 */
-
- MOVQ ( REGOFF(32, ECX), MM6 ) /* m9 | m8*/
- PFMUL ( MM0, MM4 ) /* scale*m5 | scale*m4 */
-
- MOVD ( REGOFF(40, ECX), MM7 ) /* | m10 */
- PFMUL ( MM0, MM5 ) /* scale*m6 | scale*m2 */
-
- PFMUL ( MM0, MM6 ) /* scale*m9 | scale*m8 */
-
- PFMUL ( MM0, MM7 ) /* | scale*m10 */
-
-ALIGNTEXT32
-LLBL (G3TR_rescale):
-
- PREFETCHW ( REGIND(EAX) )
-
- MOVQ ( REGIND(EDX), MM0 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */
-
- MOVQ ( MM0, MM1 ) /* x1 | x0 */
- PUNPCKLDQ ( MM2, MM2 ) /* x2 | x2 */
-
- PFMUL ( MM3, MM0 ) /* x1*m1 | x0*m0 */
- ADD_L ( CONST(16), EAX ) /* next r */
-
- PFMUL ( MM4, MM1 ) /* x1*m5 | x0*m4 */
- PFACC ( MM1, MM0 ) /* x0*m4+x1*m5 | x0*m0+x1*m1 */
-
- MOVQ ( REGIND(EDX), MM1 ) /* x1 | x0 */
-
- PFMUL ( MM5, MM2 ) /* x2*m6 | x2*m2 */
- PFADD ( MM2, MM0 ) /* x0*m4...+x2*m6| x0*m0+x1*m1+x2*m2 */
-
- MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */
- ADD_L ( STRIDE, EDX ) /* next normal */
-
- PREFETCH ( REGIND(EDX) )
-
- MOVQ ( MM0, REGOFF(-16, EAX) ) /* write r0, r1 */
- PFMUL ( MM6, MM1 ) /* x1*m9 | x0*m8 */
-
- PFMUL ( MM7, MM2 ) /* | x2*m10 */
- PFACC ( MM1, MM1 ) /* *not used* | x0*m8+x1*m9 */
-
- PFADD ( MM2, MM1 ) /* *not used* | x0*m8+x1*m9+x2*m10 */
- MOVD ( MM1, REGOFF(-8, EAX) ) /* write r2 */
-
- SUB_L ( CONST(1), EDI ) /* decrement normal counter */
- JNZ ( LLBL (G3TR_rescale) )
-
- FEMMS
-
-LLBL (G3TR_end):
- POP_L ( ESI )
- POP_L ( EDI )
- RET
-
-
-
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_3dnow_transform_normals_no_rot)
-HIDDEN(_mesa_3dnow_transform_normals_no_rot)
-GLNAME(_mesa_3dnow_transform_normals_no_rot):
-
-#undef FRAME_OFFSET
-#define FRAME_OFFSET 8
-
- PUSH_L ( EDI )
- PUSH_L ( ESI )
-
- MOV_L ( ARG_IN, ESI )
- MOV_L ( ARG_DEST, EAX )
- MOV_L ( ARG_MAT, ECX )
- MOV_L ( REGOFF(V4F_COUNT, ESI), EDI ) /* dest->count = in->count */
- MOV_L ( EDI, REGOFF(V4F_COUNT, EAX) )
- MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
- MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
- MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
-
- CMP_L ( CONST(0), EDI )
- JE ( LLBL (G3TNR_end) )
-
- FEMMS
-
- MOVD ( REGIND(ECX), MM0 ) /* | m0 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m5 | m0 */
-
- MOVD ( REGOFF(40, ECX), MM2 ) /* | m10 */
- PUNPCKLDQ ( MM2, MM2 ) /* m10 | m10 */
-
-ALIGNTEXT32
-LLBL (G3TNR_transform):
-
- PREFETCHW ( REGIND(EAX) )
-
- MOVQ ( REGIND(EDX), MM4 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EDX), MM5 ) /* | x2 */
-
- PFMUL ( MM0, MM4 ) /* x1*m5 | x0*m0 */
- ADD_L ( STRIDE, EDX) /* next normal */
-
- PREFETCH ( REGIND(EDX) )
-
- PFMUL ( MM2, MM5 ) /* | x2*m10 */
- ADD_L ( CONST(16), EAX ) /* next r */
-
- SUB_L ( CONST(1), EDI ) /* decrement normal counter */
- MOVQ ( MM4, REGOFF(-16, EAX) ) /* write r0, r1 */
-
- MOVD ( MM5, REGOFF(-8, EAX) ) /* write r2 */
- JNZ ( LLBL (G3TNR_transform) )
-
- FEMMS
-
-LLBL (G3TNR_end):
- POP_L ( ESI )
- POP_L ( EDI )
- RET
-
-
-
-
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_3dnow_transform_normals)
-HIDDEN(_mesa_3dnow_transform_normals)
-GLNAME(_mesa_3dnow_transform_normals):
-
-#undef FRAME_OFFSET
-#define FRAME_OFFSET 8
-
- PUSH_L ( EDI )
- PUSH_L ( ESI )
-
- MOV_L ( ARG_IN, ESI )
- MOV_L ( ARG_DEST, EAX )
- MOV_L ( ARG_MAT, ECX )
- MOV_L ( REGOFF(V4F_COUNT, ESI), EDI ) /* dest->count = in->count */
- MOV_L ( EDI, REGOFF(V4F_COUNT, EAX) )
- MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
- MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
- MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
-
- CMP_L ( CONST(0), EDI ) /* count > 0 ?? */
- JE ( LLBL (G3T_end) )
-
- FEMMS
-
- MOVQ ( REGIND(ECX), MM3 ) /* m1 | m0 */
- MOVQ ( REGOFF(16, ECX), MM4 ) /* m5 | m4 */
-
- MOVD ( REGOFF(8, ECX), MM5 ) /* | m2 */
- PUNPCKLDQ ( REGOFF(24, ECX), MM5 ) /* m6 | m2 */
-
- MOVQ ( REGOFF(32, ECX), MM6 ) /* m9 | m8 */
- MOVD ( REGOFF(40, ECX), MM7 ) /* | m10 */
-
-ALIGNTEXT32
-LLBL (G3T_transform):
-
- PREFETCHW ( REGIND(EAX) )
-
- MOVQ ( REGIND(EDX), MM0 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */
-
- MOVQ ( MM0, MM1 ) /* x1 | x0 */
- PUNPCKLDQ ( MM2, MM2 ) /* x2 | x2 */
-
- PFMUL ( MM3, MM0 ) /* x1*m1 | x0*m0 */
- ADD_L ( CONST(16), EAX ) /* next r */
-
- PFMUL ( MM4, MM1 ) /* x1*m5 | x0*m4 */
- PFACC ( MM1, MM0 ) /* x0*m4+x1*m5 | x0*m0+x1*m1 */
-
- PFMUL ( MM5, MM2 ) /* x2*m6 | x2*m2 */
- PFADD ( MM2, MM0 ) /* x0*m4...+x2*m6| x0*m0+x1*m1+x2*m2 */
-
- MOVQ ( REGIND(EDX), MM1 ) /* x1 | x0 */
- MOVQ ( MM0, REGOFF(-16, EAX) ) /* write r0, r1 */
-
- PFMUL ( MM6, MM1 ) /* x1*m9 | x0*m8 */
- MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */
-
- PFMUL ( MM7, MM2 ) /* | x2*m10 */
- ADD_L ( STRIDE, EDX ) /* next normal */
-
- PREFETCH ( REGIND(EDX) )
-
- PFACC ( MM1, MM1 ) /* *not used* | x0*m8+x1*m9 */
- PFADD ( MM2, MM1 ) /* *not used* | x0*m8+x1*m9+x2*m10 */
-
- MOVD ( MM1, REGOFF(-8, EAX) ) /* write r2 */
- SUB_L ( CONST(1), EDI ) /* decrement normal counter */
-
- JNZ ( LLBL (G3T_transform) )
-
- FEMMS
-
-LLBL (G3T_end):
- POP_L ( ESI )
- POP_L ( EDI )
- RET
-
-
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_3dnow_normalize_normals)
-HIDDEN(_mesa_3dnow_normalize_normals)
-GLNAME(_mesa_3dnow_normalize_normals):
-
-#undef FRAME_OFFSET
-#define FRAME_OFFSET 12
-
- PUSH_L ( EDI )
- PUSH_L ( ESI )
- PUSH_L ( EBP )
-
- MOV_L ( ARG_IN, ESI )
- MOV_L ( ARG_DEST, EAX )
- MOV_L ( REGOFF(V4F_COUNT, ESI), EBP ) /* dest->count = in->count */
- MOV_L ( EBP, REGOFF(V4F_COUNT, EAX) )
- MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
- MOV_L ( REGOFF(V4F_START, ESI), ECX ) /* in->start */
- MOV_L ( ARG_LENGTHS, EDX )
-
- CMP_L ( CONST(0), EBP ) /* count > 0 ?? */
- JE ( LLBL (G3N_end) )
-
- FEMMS
-
- CMP_L ( CONST(0), EDX ) /* lengths == 0 ? */
- JE ( LLBL (G3N_norm2) ) /* calculate lengths */
-
-ALIGNTEXT32
-LLBL (G3N_norm1): /* use precalculated lengths */
-
- PREFETCH ( REGIND(EAX) )
-
- MOVQ ( REGIND(ECX), MM0 ) /* x1 | x0 */
- MOVD ( REGOFF(8, ECX), MM1 ) /* | x2 */
-
- MOVD ( REGIND(EDX), MM3 ) /* | length (x) */
- PFMUL ( MM3, MM1 ) /* | x2 (normalized) */
-
- PUNPCKLDQ ( MM3, MM3 ) /* length (x) | length (x) */
- ADD_L ( STRIDE, ECX ) /* next normal */
-
- PREFETCH ( REGIND(ECX) )
-
- PFMUL ( MM3, MM0 ) /* x1 (normalized) | x0 (normalized) */
- MOVQ ( MM0, REGIND(EAX) ) /* write new x0, x1 */
-
- MOVD ( MM1, REGOFF(8, EAX) ) /* write new x2 */
- ADD_L ( CONST(16), EAX ) /* next r */
-
- ADD_L ( CONST(4), EDX ) /* next length */
- SUB_L ( CONST(1), EBP ) /* decrement normal counter */
-
- JNZ ( LLBL (G3N_norm1) )
-
- JMP ( LLBL (G3N_end1) )
-
-ALIGNTEXT32
-LLBL (G3N_norm2): /* need to calculate lengths */
-
- PREFETCHW ( REGIND(EAX) )
-
- PREFETCH ( REGIND(ECX) )
-
- MOVQ ( REGIND(ECX), MM0 ) /* x1 | x0 */
- MOVD ( REGOFF(8, ECX), MM1 ) /* | x2 */
-
- MOVQ ( MM0, MM3 ) /* x1 | x0 */
- ADD_L ( STRIDE, ECX ) /* next normal */
-
- PFMUL ( MM0, MM3 ) /* x1*x1 | x0*x0 */
- MOVQ ( MM1, MM4 ) /* | x2 */
-
- ADD_L ( CONST(16), EAX ) /* next r */
- PFMUL ( MM1, MM4 ) /* | x2*x2 */
-
- PFADD ( MM4, MM3 ) /* | x0*x0+x2*x2 */
- PFACC ( MM3, MM3 ) /* x0*x0+...+x2*x2 | x0*x0+x1*x1+x2*x2*/
-
- PFRSQRT ( MM3, MM5 ) /* 1/sqrt (x0*x0+x1*x1+x2*x2) */
- MOVQ ( MM5, MM4 )
-
- PUNPCKLDQ ( MM3, MM3 )
- PFMUL ( MM5, MM5 )
-
- PFRSQIT1 ( MM3, MM5 )
- SUB_L ( CONST(1), EBP ) /* decrement normal counter */
-
- PFRCPIT2 ( MM4, MM5 )
-
- PFMUL ( MM5, MM0 ) /* x1 (normalized) | x0 (normalized) */
- MOVQ ( MM0, REGOFF(-16, EAX) ) /* write new x0, x1 */
-
- PFMUL ( MM5, MM1 ) /* | x2 (normalized) */
- MOVD ( MM1, REGOFF(-8, EAX) ) /* write new x2 */
-
- JNZ ( LLBL (G3N_norm2) )
-
-LLBL (G3N_end1):
- FEMMS
-
-LLBL (G3N_end):
- POP_L ( EBP )
- POP_L ( ESI )
- POP_L ( EDI )
- RET
-
-
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_3dnow_rescale_normals)
-HIDDEN(_mesa_3dnow_rescale_normals)
-GLNAME(_mesa_3dnow_rescale_normals):
-
-#undef FRAME_OFFSET
-#define FRAME_OFFSET 8
- PUSH_L ( EDI )
- PUSH_L ( ESI )
-
- MOV_L ( ARG_IN, ESI )
- MOV_L ( ARG_DEST, EAX )
- MOV_L ( REGOFF(V4F_COUNT, ESI), EDX ) /* dest->count = in->count */
- MOV_L ( EDX, REGOFF(V4F_COUNT, EAX) )
- MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
- MOV_L ( REGOFF(V4F_START, ESI), ECX ) /* in->start */
-
- CMP_L ( CONST(0), EDX )
- JE ( LLBL (G3R_end) )
-
- FEMMS
-
- MOVD ( ARG_SCALE, MM0 ) /* scale */
- PUNPCKLDQ ( MM0, MM0 )
-
-ALIGNTEXT32
-LLBL (G3R_rescale):
-
- PREFETCHW ( REGIND(EAX) )
-
- MOVQ ( REGIND(ECX), MM1 ) /* x1 | x0 */
- MOVD ( REGOFF(8, ECX), MM2 ) /* | x2 */
-
- PFMUL ( MM0, MM1 ) /* x1*scale | x0*scale */
- ADD_L ( STRIDE, ECX ) /* next normal */
-
- PREFETCH ( REGIND(ECX) )
-
- PFMUL ( MM0, MM2 ) /* | x2*scale */
- ADD_L ( CONST(16), EAX ) /* next r */
-
- MOVQ ( MM1, REGOFF(-16, EAX) ) /* write r0, r1 */
- MOVD ( MM2, REGOFF(-8, EAX) ) /* write r2 */
-
- SUB_L ( CONST(1), EDX ) /* decrement normal counter */
- JNZ ( LLBL (G3R_rescale) )
-
- FEMMS
-
-LLBL (G3R_end):
- POP_L ( ESI )
- POP_L ( EDI )
- RET
-
-#endif
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 5.1
+ *
+ * Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * 3Dnow assembly code by Holger Waechtler
+ */
+
+#ifdef USE_3DNOW_ASM
+
+#include "assyntax.h"
+#include "matypes.h"
+#include "norm_args.h"
+
+ SEG_TEXT
+
+#define M(i) REGOFF(i * 4, ECX)
+#define STRIDE REGOFF(12, ESI)
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_3dnow_transform_normalize_normals)
+HIDDEN(_mesa_3dnow_transform_normalize_normals)
+GLNAME(_mesa_3dnow_transform_normalize_normals):
+
+#define FRAME_OFFSET 12
+
+ PUSH_L ( EDI )
+ PUSH_L ( ESI )
+ PUSH_L ( EBP )
+
+ MOV_L ( ARG_LENGTHS, EDI )
+ MOV_L ( ARG_IN, ESI )
+ MOV_L ( ARG_DEST, EAX )
+ MOV_L ( REGOFF(V4F_COUNT, ESI), EBP ) /* dest->count = in->count */
+ MOV_L ( EBP, REGOFF(V4F_COUNT, EAX) )
+ MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
+ MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
+ MOV_L ( ARG_MAT, ECX )
+ MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
+
+ CMP_L ( CONST(0), EBP ) /* count > 0 ?? */
+ JE ( LLBL (G3TN_end) )
+
+ MOV_L ( REGOFF (V4F_COUNT, ESI), EBP )
+ FEMMS
+
+ PUSH_L ( EBP )
+ PUSH_L ( EAX )
+ PUSH_L ( EDX ) /* save counter & pointer for */
+ /* the normalize pass */
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 24
+
+ MOVQ ( M(0), MM3 ) /* m1 | m0 */
+ MOVQ ( M(4), MM4 ) /* m5 | m4 */
+
+ MOVD ( M(2), MM5 ) /* | m2 */
+ PUNPCKLDQ ( M(6), MM5 ) /* m6 | m2 */
+
+ MOVQ ( M(8), MM6 ) /* m9 | m8 */
+ MOVQ ( M(10), MM7 ) /* | m10 */
+
+ CMP_L ( CONST(0), EDI ) /* lengths == 0 ? */
+ JNE ( LLBL (G3TN_scale_end ) )
+
+ MOVD ( ARG_SCALE, MM0 ) /* | scale */
+ PUNPCKLDQ ( MM0, MM0 ) /* scale | scale */
+
+ PFMUL ( MM0, MM3 ) /* scale * m1 | scale * m0 */
+ PFMUL ( MM0, MM4 ) /* scale * m5 | scale * m4 */
+ PFMUL ( MM0, MM5 ) /* scale * m6 | scale * m2 */
+ PFMUL ( MM0, MM6 ) /* scale * m9 | scale * m8 */
+ PFMUL ( MM0, MM7 ) /* | scale * m10 */
+
+ALIGNTEXT32
+LLBL (G3TN_scale_end):
+LLBL (G3TN_transform):
+ MOVQ ( REGIND (EDX), MM0 ) /* x1 | x0 */
+ MOVD ( REGOFF (8, EDX), MM2 ) /* | x2 */
+
+ MOVQ ( MM0, MM1 ) /* x1 | x0 */
+ PUNPCKLDQ ( MM2, MM2 ) /* x2 | x2 */
+
+ PFMUL ( MM3, MM0 ) /* x1*m1 | x0*m0 */
+ ADD_L ( CONST(16), EAX ) /* next r */
+
+ PREFETCHW ( REGIND(EAX) )
+
+ PFMUL ( MM4, MM1 ) /* x1*m5 | x0*m4 */
+ PFACC ( MM1, MM0 ) /* x0*m4+x1*m5 | x0*m0+x1*m1 */
+
+ PFMUL ( MM5, MM2 ) /* x2*m6 | x2*m2 */
+ PFADD ( MM2, MM0 ) /* x0*m4+x1*m5+x2*m6| x0*m0+...+x2**/
+
+ MOVQ ( REGIND (EDX), MM1 ) /* x1 | x0 */
+ MOVQ ( MM0, REGOFF(-16, EAX) ) /* write r0, r1 */
+
+ PFMUL ( MM6, MM1 ) /* x1*m9 | x0*m8 */
+ MOVD ( REGOFF (8, EDX), MM2 ) /* | x2 */
+
+ PFMUL ( MM7, MM2 ) /* | x2*m10 */
+ PFACC ( MM1, MM1 ) /* *not used* | x0*m8+x1*m9 */
+
+ PFADD ( MM2, MM1 ) /* *not used* | x0*m8+x1*m9+x2*m*/
+ ADD_L ( STRIDE, EDX ) /* next normal */
+
+ PREFETCH ( REGIND(EDX) )
+
+ MOVD ( MM1, REGOFF(-8, EAX) ) /* write r2 */
+ SUB_L ( CONST(1), EBP ) /* decrement normal counter */
+ JNZ ( LLBL (G3TN_transform) )
+
+
+ POP_L ( EDX ) /* end of transform --- */
+ POP_L ( EAX ) /* now normalizing ... */
+ POP_L ( EBP )
+
+ CMP_L ( CONST(0), EDI ) /* lengths == 0 ? */
+ JE ( LLBL (G3TN_norm ) ) /* calculate lengths */
+
+
+ALIGNTEXT32
+LLBL (G3TN_norm_w_lengths):
+
+ PREFETCHW ( REGOFF(12,EAX) )
+
+ MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */
+
+ MOVD ( REGIND (EDI), MM3 ) /* | length (x) */
+ PFMUL ( MM3, MM1 ) /* | x2 (normalize*/
+
+ PUNPCKLDQ ( MM3, MM3 ) /* length (x) | length (x) */
+ PFMUL ( MM3, MM0 ) /* x1 (normalized) | x0 (normalize*/
+
+ ADD_L ( STRIDE, EDX ) /* next normal */
+ ADD_L ( CONST(4), EDI ) /* next length */
+
+ PREFETCH ( REGIND(EDI) )
+
+ MOVQ ( MM0, REGIND(EAX) ) /* write new x0, x1 */
+ MOVD ( MM1, REGOFF(8, EAX) ) /* write new x2 */
+
+ ADD_L ( CONST(16), EAX ) /* next r */
+ SUB_L ( CONST(1), EBP ) /* decrement normal counter */
+
+ JNZ ( LLBL (G3TN_norm_w_lengths) )
+ JMP ( LLBL (G3TN_exit_3dnow) )
+
+ALIGNTEXT32
+LLBL (G3TN_norm):
+
+ PREFETCHW ( REGIND(EAX) )
+
+ MOVQ ( REGIND (EAX), MM0 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */
+
+ MOVQ ( MM0, MM3 ) /* x1 | x0 */
+ MOVQ ( MM1, MM4 ) /* | x2 */
+
+ PFMUL ( MM0, MM3 ) /* x1*x1 | x0*x0 */
+ ADD_L ( CONST(16), EAX ) /* next r */
+
+ PFMUL ( MM1, MM4 ) /* | x2*x2 */
+ PFADD ( MM4, MM3 ) /* | x0*x0+x2*x2 */
+
+ PFACC ( MM3, MM3 ) /* **not used** | x0*x0+x1*x1+x2**/
+ PFRSQRT ( MM3, MM5 ) /* 1/sqrt (x0*x0+x1*x1+x2*x2) */
+
+ MOVQ ( MM5, MM4 )
+ PUNPCKLDQ ( MM3, MM3 )
+
+ SUB_L ( CONST(1), EBP ) /* decrement normal counter */
+ PFMUL ( MM5, MM5 )
+
+ PFRSQIT1 ( MM3, MM5 )
+ PFRCPIT2 ( MM4, MM5 )
+
+ PFMUL ( MM5, MM0 ) /* x1 (normalized) | x0 (normalize*/
+
+ MOVQ ( MM0, REGOFF(-16, EAX) ) /* write new x0, x1 */
+ PFMUL ( MM5, MM1 ) /* | x2 (normalize*/
+
+ MOVD ( MM1, REGOFF(-8, EAX) ) /* write new x2 */
+ JNZ ( LLBL (G3TN_norm) )
+
+LLBL (G3TN_exit_3dnow):
+ FEMMS
+
+LLBL (G3TN_end):
+ POP_L ( EBP )
+ POP_L ( ESI )
+ POP_L ( EDI )
+ RET
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_3dnow_transform_normalize_normals_no_rot)
+HIDDEN(_mesa_3dnow_transform_normalize_normals_no_rot)
+GLNAME(_mesa_3dnow_transform_normalize_normals_no_rot):
+
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 12
+
+ PUSH_L ( EDI )
+ PUSH_L ( ESI )
+ PUSH_L ( EBP )
+
+ MOV_L ( ARG_LENGTHS, EDI )
+ MOV_L ( ARG_IN, ESI )
+ MOV_L ( ARG_DEST, EAX )
+ MOV_L ( REGOFF(V4F_COUNT, ESI), EBP ) /* dest->count = in->count */
+ MOV_L ( EBP, REGOFF(V4F_COUNT, EAX) )
+ MOV_L ( ARG_MAT, ECX )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
+ MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
+ MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
+
+ CMP_L ( CONST(0), EBP ) /* count > 0 ?? */
+ JE ( LLBL (G3TNNR_end) )
+
+ FEMMS
+
+ MOVD ( M(0), MM0 ) /* | m0 */
+ PUNPCKLDQ ( M(5), MM0 ) /* m5 | m0 */
+
+ MOVD ( M(10), MM2 ) /* | m10 */
+ PUNPCKLDQ ( MM2, MM2 ) /* m10 | m10 */
+
+ CMP_L ( CONST(0), EDI ) /* lengths == 0 ? */
+ JNE ( LLBL (G3TNNR_scale_end ) )
+
+ MOVD ( ARG_SCALE, MM7 ) /* | scale */
+ PUNPCKLDQ ( MM7, MM7 ) /* scale | scale */
+
+ PFMUL ( MM7, MM0 ) /* scale * m5 | scale * m0 */
+ PFMUL ( MM7, MM2 ) /* scale * m10 | scale * m10 */
+
+ALIGNTEXT32
+LLBL (G3TNNR_scale_end):
+ CMP_L ( CONST(0), EDI ) /* lengths == 0 ? */
+ JE ( LLBL (G3TNNR_norm) ) /* need to calculate lengths */
+
+ MOVD ( REGIND(EDI), MM3 ) /* | length (x) */
+
+
+ALIGNTEXT32
+LLBL (G3TNNR_norm_w_lengths): /* use precalculated lengths */
+
+ PREFETCHW ( REGIND(EAX) )
+
+ MOVQ ( REGIND(EDX), MM6 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EDX), MM7 ) /* | x2 */
+
+ PFMUL ( MM0, MM6 ) /* x1*m5 | x0*m0 */
+ ADD_L ( STRIDE, EDX ) /* next normal */
+
+ PREFETCH ( REGIND(EDX) )
+
+ PFMUL ( MM2, MM7 ) /* | x2*m10 */
+ ADD_L ( CONST(16), EAX ) /* next r */
+
+ PFMUL ( MM3, MM7 ) /* | x2 (normalized) */
+ PUNPCKLDQ ( MM3, MM3 ) /* length (x) | length (x) */
+
+ ADD_L ( CONST(4), EDI ) /* next length */
+ PFMUL ( MM3, MM6 ) /* x1 (normalized) | x0 (normalized) */
+
+ SUB_L ( CONST(1), EBP ) /* decrement normal counter */
+ MOVQ ( MM6, REGOFF(-16, EAX) ) /* write r0, r1 */
+
+ MOVD ( MM7, REGOFF(-8, EAX) ) /* write r2 */
+ MOVD ( REGIND(EDI), MM3 ) /* | length (x) */
+
+ JNZ ( LLBL (G3TNNR_norm_w_lengths) )
+ JMP ( LLBL (G3TNNR_exit_3dnow) )
+
+ALIGNTEXT32
+LLBL (G3TNNR_norm): /* need to calculate lengths */
+
+ PREFETCHW ( REGIND(EAX) )
+
+ MOVQ ( REGIND(EDX), MM6 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EDX), MM7 ) /* | x2 */
+
+ PFMUL ( MM0, MM6 ) /* x1*m5 | x0*m0 */
+ ADD_L ( CONST(16), EAX ) /* next r */
+
+ PFMUL ( MM2, MM7 ) /* | x2*m10 */
+ MOVQ ( MM6, MM3 ) /* x1 (transformed)| x0 (transformed) */
+
+ MOVQ ( MM7, MM4 ) /* | x2 (transformed) */
+ PFMUL ( MM6, MM3 ) /* x1*x1 | x0*x0 */
+
+
+ PFMUL ( MM7, MM4 ) /* | x2*x2 */
+ PFACC ( MM3, MM3 ) /* **not used** | x0*x0+x1*x1 */
+
+ PFADD ( MM4, MM3 ) /* | x0*x0+x1*x1+x2*x2*/
+ ADD_L ( STRIDE, EDX ) /* next normal */
+
+ PREFETCH ( REGIND(EDX) )
+
+ PFRSQRT ( MM3, MM5 ) /* 1/sqrt (x0*x0+x1*x1+x2*x2) */
+ MOVQ ( MM5, MM4 )
+
+ PUNPCKLDQ ( MM3, MM3 )
+ PFMUL ( MM5, MM5 )
+
+ PFRSQIT1 ( MM3, MM5 )
+ SUB_L ( CONST(1), EBP ) /* decrement normal counter */
+
+ PFRCPIT2 ( MM4, MM5 )
+ PFMUL ( MM5, MM6 ) /* x1 (normalized) | x0 (normalized) */
+
+ MOVQ ( MM6, REGOFF(-16, EAX) ) /* write r0, r1 */
+ PFMUL ( MM5, MM7 ) /* | x2 (normalized) */
+
+ MOVD ( MM7, REGOFF(-8, EAX) ) /* write r2 */
+ JNZ ( LLBL (G3TNNR_norm) )
+
+
+LLBL (G3TNNR_exit_3dnow):
+ FEMMS
+
+LLBL (G3TNNR_end):
+ POP_L ( EBP )
+ POP_L ( ESI )
+ POP_L ( EDI )
+ RET
+
+
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_3dnow_transform_rescale_normals_no_rot)
+HIDDEN(_mesa_3dnow_transform_rescale_normals_no_rot)
+GLNAME(_mesa_3dnow_transform_rescale_normals_no_rot):
+
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 12
+
+ PUSH_L ( EDI )
+ PUSH_L ( ESI )
+ PUSH_L ( EBP )
+
+ MOV_L ( ARG_IN, EAX )
+ MOV_L ( ARG_DEST, EDX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EBP ) /* dest->count = in->count */
+ MOV_L ( EBP, REGOFF(V4F_COUNT, EDX) )
+ MOV_L ( ARG_IN, ESI )
+ MOV_L ( ARG_MAT, ECX )
+ MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
+ MOV_L ( REGOFF(V4F_START, EDX), EAX ) /* dest->start */
+ MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
+
+ CMP_L ( CONST(0), EBP )
+ JE ( LLBL (G3TRNR_end) )
+
+ FEMMS
+
+ MOVD ( ARG_SCALE, MM6 ) /* | scale */
+ PUNPCKLDQ ( MM6, MM6 ) /* scale | scale */
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m0 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m5 | m0 */
+
+ PFMUL ( MM6, MM0 ) /* scale*m5 | scale*m0 */
+ MOVD ( REGOFF(40, ECX), MM2 ) /* | m10 */
+
+ PFMUL ( MM6, MM2 ) /* | scale*m10 */
+
+ALIGNTEXT32
+LLBL (G3TRNR_rescale):
+
+ PREFETCHW ( REGIND(EAX) )
+
+ MOVQ ( REGIND(EDX), MM4 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EDX), MM5 ) /* | x2 */
+
+ PFMUL ( MM0, MM4 ) /* x1*m5 | x0*m0 */
+ ADD_L ( STRIDE, EDX ) /* next normal */
+
+ PREFETCH ( REGIND(EDX) )
+
+ PFMUL ( MM2, MM5 ) /* | x2*m10 */
+ ADD_L ( CONST(16), EAX ) /* next r */
+
+ SUB_L ( CONST(1), EBP ) /* decrement normal counter */
+ MOVQ ( MM4, REGOFF(-16, EAX) ) /* write r0, r1 */
+
+ MOVD ( MM5, REGOFF(-8, EAX) ) /* write r2 */
+ JNZ ( LLBL (G3TRNR_rescale) ) /* cnt > 0 ? -> process next normal */
+
+ FEMMS
+
+LLBL (G3TRNR_end):
+ POP_L ( EBP )
+ POP_L ( ESI )
+ POP_L ( EDI )
+ RET
+
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_3dnow_transform_rescale_normals)
+HIDDEN(_mesa_3dnow_transform_rescale_normals)
+GLNAME(_mesa_3dnow_transform_rescale_normals):
+
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 8
+
+ PUSH_L ( EDI )
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_IN, ESI )
+ MOV_L ( ARG_DEST, EAX )
+ MOV_L ( ARG_MAT, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, ESI), EDI ) /* dest->count = in->count */
+ MOV_L ( EDI, REGOFF(V4F_COUNT, EAX) )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
+ MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
+ MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
+
+ CMP_L ( CONST(0), EDI )
+ JE ( LLBL (G3TR_end) )
+
+ FEMMS
+
+ MOVQ ( REGIND(ECX), MM3 ) /* m1 | m0 */
+
+ MOVQ ( REGOFF(16,ECX), MM4 ) /* m5 | m4 */
+ MOVD ( ARG_SCALE, MM0 ) /* scale */
+
+ MOVD ( REGOFF(8,ECX), MM5 ) /* | m2 */
+ PUNPCKLDQ ( MM0, MM0 ) /* scale | scale */
+
+ PUNPCKLDQ ( REGOFF(24, ECX), MM5 )
+ PFMUL ( MM0, MM3 ) /* scale*m1 | scale*m0 */
+
+ MOVQ ( REGOFF(32, ECX), MM6 ) /* m9 | m8*/
+ PFMUL ( MM0, MM4 ) /* scale*m5 | scale*m4 */
+
+ MOVD ( REGOFF(40, ECX), MM7 ) /* | m10 */
+ PFMUL ( MM0, MM5 ) /* scale*m6 | scale*m2 */
+
+ PFMUL ( MM0, MM6 ) /* scale*m9 | scale*m8 */
+
+ PFMUL ( MM0, MM7 ) /* | scale*m10 */
+
+ALIGNTEXT32
+LLBL (G3TR_rescale):
+
+ PREFETCHW ( REGIND(EAX) )
+
+ MOVQ ( REGIND(EDX), MM0 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */
+
+ MOVQ ( MM0, MM1 ) /* x1 | x0 */
+ PUNPCKLDQ ( MM2, MM2 ) /* x2 | x2 */
+
+ PFMUL ( MM3, MM0 ) /* x1*m1 | x0*m0 */
+ ADD_L ( CONST(16), EAX ) /* next r */
+
+ PFMUL ( MM4, MM1 ) /* x1*m5 | x0*m4 */
+ PFACC ( MM1, MM0 ) /* x0*m4+x1*m5 | x0*m0+x1*m1 */
+
+ MOVQ ( REGIND(EDX), MM1 ) /* x1 | x0 */
+
+ PFMUL ( MM5, MM2 ) /* x2*m6 | x2*m2 */
+ PFADD ( MM2, MM0 ) /* x0*m4...+x2*m6| x0*m0+x1*m1+x2*m2 */
+
+ MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */
+ ADD_L ( STRIDE, EDX ) /* next normal */
+
+ PREFETCH ( REGIND(EDX) )
+
+ MOVQ ( MM0, REGOFF(-16, EAX) ) /* write r0, r1 */
+ PFMUL ( MM6, MM1 ) /* x1*m9 | x0*m8 */
+
+ PFMUL ( MM7, MM2 ) /* | x2*m10 */
+ PFACC ( MM1, MM1 ) /* *not used* | x0*m8+x1*m9 */
+
+ PFADD ( MM2, MM1 ) /* *not used* | x0*m8+x1*m9+x2*m10 */
+ MOVD ( MM1, REGOFF(-8, EAX) ) /* write r2 */
+
+ SUB_L ( CONST(1), EDI ) /* decrement normal counter */
+ JNZ ( LLBL (G3TR_rescale) )
+
+ FEMMS
+
+LLBL (G3TR_end):
+ POP_L ( ESI )
+ POP_L ( EDI )
+ RET
+
+
+
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_3dnow_transform_normals_no_rot)
+HIDDEN(_mesa_3dnow_transform_normals_no_rot)
+GLNAME(_mesa_3dnow_transform_normals_no_rot):
+
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 8
+
+ PUSH_L ( EDI )
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_IN, ESI )
+ MOV_L ( ARG_DEST, EAX )
+ MOV_L ( ARG_MAT, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, ESI), EDI ) /* dest->count = in->count */
+ MOV_L ( EDI, REGOFF(V4F_COUNT, EAX) )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
+ MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
+ MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
+
+ CMP_L ( CONST(0), EDI )
+ JE ( LLBL (G3TNR_end) )
+
+ FEMMS
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m0 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m5 | m0 */
+
+ MOVD ( REGOFF(40, ECX), MM2 ) /* | m10 */
+ PUNPCKLDQ ( MM2, MM2 ) /* m10 | m10 */
+
+ALIGNTEXT32
+LLBL (G3TNR_transform):
+
+ PREFETCHW ( REGIND(EAX) )
+
+ MOVQ ( REGIND(EDX), MM4 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EDX), MM5 ) /* | x2 */
+
+ PFMUL ( MM0, MM4 ) /* x1*m5 | x0*m0 */
+ ADD_L ( STRIDE, EDX) /* next normal */
+
+ PREFETCH ( REGIND(EDX) )
+
+ PFMUL ( MM2, MM5 ) /* | x2*m10 */
+ ADD_L ( CONST(16), EAX ) /* next r */
+
+ SUB_L ( CONST(1), EDI ) /* decrement normal counter */
+ MOVQ ( MM4, REGOFF(-16, EAX) ) /* write r0, r1 */
+
+ MOVD ( MM5, REGOFF(-8, EAX) ) /* write r2 */
+ JNZ ( LLBL (G3TNR_transform) )
+
+ FEMMS
+
+LLBL (G3TNR_end):
+ POP_L ( ESI )
+ POP_L ( EDI )
+ RET
+
+
+
+
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_3dnow_transform_normals)
+HIDDEN(_mesa_3dnow_transform_normals)
+GLNAME(_mesa_3dnow_transform_normals):
+
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 8
+
+ PUSH_L ( EDI )
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_IN, ESI )
+ MOV_L ( ARG_DEST, EAX )
+ MOV_L ( ARG_MAT, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, ESI), EDI ) /* dest->count = in->count */
+ MOV_L ( EDI, REGOFF(V4F_COUNT, EAX) )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
+ MOV_L ( REGOFF(V4F_START, ESI), EDX ) /* in->start */
+ MOV_L ( REGOFF(MATRIX_INV, ECX), ECX ) /* mat->inv */
+
+ CMP_L ( CONST(0), EDI ) /* count > 0 ?? */
+ JE ( LLBL (G3T_end) )
+
+ FEMMS
+
+ MOVQ ( REGIND(ECX), MM3 ) /* m1 | m0 */
+ MOVQ ( REGOFF(16, ECX), MM4 ) /* m5 | m4 */
+
+ MOVD ( REGOFF(8, ECX), MM5 ) /* | m2 */
+ PUNPCKLDQ ( REGOFF(24, ECX), MM5 ) /* m6 | m2 */
+
+ MOVQ ( REGOFF(32, ECX), MM6 ) /* m9 | m8 */
+ MOVD ( REGOFF(40, ECX), MM7 ) /* | m10 */
+
+ALIGNTEXT32
+LLBL (G3T_transform):
+
+ PREFETCHW ( REGIND(EAX) )
+
+ MOVQ ( REGIND(EDX), MM0 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */
+
+ MOVQ ( MM0, MM1 ) /* x1 | x0 */
+ PUNPCKLDQ ( MM2, MM2 ) /* x2 | x2 */
+
+ PFMUL ( MM3, MM0 ) /* x1*m1 | x0*m0 */
+ ADD_L ( CONST(16), EAX ) /* next r */
+
+ PFMUL ( MM4, MM1 ) /* x1*m5 | x0*m4 */
+ PFACC ( MM1, MM0 ) /* x0*m4+x1*m5 | x0*m0+x1*m1 */
+
+ PFMUL ( MM5, MM2 ) /* x2*m6 | x2*m2 */
+ PFADD ( MM2, MM0 ) /* x0*m4...+x2*m6| x0*m0+x1*m1+x2*m2 */
+
+ MOVQ ( REGIND(EDX), MM1 ) /* x1 | x0 */
+ MOVQ ( MM0, REGOFF(-16, EAX) ) /* write r0, r1 */
+
+ PFMUL ( MM6, MM1 ) /* x1*m9 | x0*m8 */
+ MOVD ( REGOFF(8, EDX), MM2 ) /* | x2 */
+
+ PFMUL ( MM7, MM2 ) /* | x2*m10 */
+ ADD_L ( STRIDE, EDX ) /* next normal */
+
+ PREFETCH ( REGIND(EDX) )
+
+ PFACC ( MM1, MM1 ) /* *not used* | x0*m8+x1*m9 */
+ PFADD ( MM2, MM1 ) /* *not used* | x0*m8+x1*m9+x2*m10 */
+
+ MOVD ( MM1, REGOFF(-8, EAX) ) /* write r2 */
+ SUB_L ( CONST(1), EDI ) /* decrement normal counter */
+
+ JNZ ( LLBL (G3T_transform) )
+
+ FEMMS
+
+LLBL (G3T_end):
+ POP_L ( ESI )
+ POP_L ( EDI )
+ RET
+
+
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_3dnow_normalize_normals)
+HIDDEN(_mesa_3dnow_normalize_normals)
+GLNAME(_mesa_3dnow_normalize_normals):
+
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 12
+
+ PUSH_L ( EDI )
+ PUSH_L ( ESI )
+ PUSH_L ( EBP )
+
+ MOV_L ( ARG_IN, ESI )
+ MOV_L ( ARG_DEST, EAX )
+ MOV_L ( REGOFF(V4F_COUNT, ESI), EBP ) /* dest->count = in->count */
+ MOV_L ( EBP, REGOFF(V4F_COUNT, EAX) )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
+ MOV_L ( REGOFF(V4F_START, ESI), ECX ) /* in->start */
+ MOV_L ( ARG_LENGTHS, EDX )
+
+ CMP_L ( CONST(0), EBP ) /* count > 0 ?? */
+ JE ( LLBL (G3N_end) )
+
+ FEMMS
+
+ CMP_L ( CONST(0), EDX ) /* lengths == 0 ? */
+ JE ( LLBL (G3N_norm2) ) /* calculate lengths */
+
+ALIGNTEXT32
+LLBL (G3N_norm1): /* use precalculated lengths */
+
+ PREFETCH ( REGIND(EAX) )
+
+ MOVQ ( REGIND(ECX), MM0 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, ECX), MM1 ) /* | x2 */
+
+ MOVD ( REGIND(EDX), MM3 ) /* | length (x) */
+ PFMUL ( MM3, MM1 ) /* | x2 (normalized) */
+
+ PUNPCKLDQ ( MM3, MM3 ) /* length (x) | length (x) */
+ ADD_L ( STRIDE, ECX ) /* next normal */
+
+ PREFETCH ( REGIND(ECX) )
+
+ PFMUL ( MM3, MM0 ) /* x1 (normalized) | x0 (normalized) */
+ MOVQ ( MM0, REGIND(EAX) ) /* write new x0, x1 */
+
+ MOVD ( MM1, REGOFF(8, EAX) ) /* write new x2 */
+ ADD_L ( CONST(16), EAX ) /* next r */
+
+ ADD_L ( CONST(4), EDX ) /* next length */
+ SUB_L ( CONST(1), EBP ) /* decrement normal counter */
+
+ JNZ ( LLBL (G3N_norm1) )
+
+ JMP ( LLBL (G3N_end1) )
+
+ALIGNTEXT32
+LLBL (G3N_norm2): /* need to calculate lengths */
+
+ PREFETCHW ( REGIND(EAX) )
+
+ PREFETCH ( REGIND(ECX) )
+
+ MOVQ ( REGIND(ECX), MM0 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, ECX), MM1 ) /* | x2 */
+
+ MOVQ ( MM0, MM3 ) /* x1 | x0 */
+ ADD_L ( STRIDE, ECX ) /* next normal */
+
+ PFMUL ( MM0, MM3 ) /* x1*x1 | x0*x0 */
+ MOVQ ( MM1, MM4 ) /* | x2 */
+
+ ADD_L ( CONST(16), EAX ) /* next r */
+ PFMUL ( MM1, MM4 ) /* | x2*x2 */
+
+ PFADD ( MM4, MM3 ) /* | x0*x0+x2*x2 */
+ PFACC ( MM3, MM3 ) /* x0*x0+...+x2*x2 | x0*x0+x1*x1+x2*x2*/
+
+ PFRSQRT ( MM3, MM5 ) /* 1/sqrt (x0*x0+x1*x1+x2*x2) */
+ MOVQ ( MM5, MM4 )
+
+ PUNPCKLDQ ( MM3, MM3 )
+ PFMUL ( MM5, MM5 )
+
+ PFRSQIT1 ( MM3, MM5 )
+ SUB_L ( CONST(1), EBP ) /* decrement normal counter */
+
+ PFRCPIT2 ( MM4, MM5 )
+
+ PFMUL ( MM5, MM0 ) /* x1 (normalized) | x0 (normalized) */
+ MOVQ ( MM0, REGOFF(-16, EAX) ) /* write new x0, x1 */
+
+ PFMUL ( MM5, MM1 ) /* | x2 (normalized) */
+ MOVD ( MM1, REGOFF(-8, EAX) ) /* write new x2 */
+
+ JNZ ( LLBL (G3N_norm2) )
+
+LLBL (G3N_end1):
+ FEMMS
+
+LLBL (G3N_end):
+ POP_L ( EBP )
+ POP_L ( ESI )
+ POP_L ( EDI )
+ RET
+
+
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_3dnow_rescale_normals)
+HIDDEN(_mesa_3dnow_rescale_normals)
+GLNAME(_mesa_3dnow_rescale_normals):
+
+#undef FRAME_OFFSET
+#define FRAME_OFFSET 8
+ PUSH_L ( EDI )
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_IN, ESI )
+ MOV_L ( ARG_DEST, EAX )
+ MOV_L ( REGOFF(V4F_COUNT, ESI), EDX ) /* dest->count = in->count */
+ MOV_L ( EDX, REGOFF(V4F_COUNT, EAX) )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX ) /* dest->start */
+ MOV_L ( REGOFF(V4F_START, ESI), ECX ) /* in->start */
+
+ CMP_L ( CONST(0), EDX )
+ JE ( LLBL (G3R_end) )
+
+ FEMMS
+
+ MOVD ( ARG_SCALE, MM0 ) /* scale */
+ PUNPCKLDQ ( MM0, MM0 )
+
+ALIGNTEXT32
+LLBL (G3R_rescale):
+
+ PREFETCHW ( REGIND(EAX) )
+
+ MOVQ ( REGIND(ECX), MM1 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, ECX), MM2 ) /* | x2 */
+
+ PFMUL ( MM0, MM1 ) /* x1*scale | x0*scale */
+ ADD_L ( STRIDE, ECX ) /* next normal */
+
+ PREFETCH ( REGIND(ECX) )
+
+ PFMUL ( MM0, MM2 ) /* | x2*scale */
+ ADD_L ( CONST(16), EAX ) /* next r */
+
+ MOVQ ( MM1, REGOFF(-16, EAX) ) /* write r0, r1 */
+ MOVD ( MM2, REGOFF(-8, EAX) ) /* write r2 */
+
+ SUB_L ( CONST(1), EDX ) /* decrement normal counter */
+ JNZ ( LLBL (G3R_rescale) )
+
+ FEMMS
+
+LLBL (G3R_end):
+ POP_L ( ESI )
+ POP_L ( EDI )
+ RET
+
+#endif
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/3dnow_xform1.S b/mesalib/src/mesa/x86/3dnow_xform1.S
index 9719ba2c1..a73301a8d 100644
--- a/mesalib/src/mesa/x86/3dnow_xform1.S
+++ b/mesalib/src/mesa/x86/3dnow_xform1.S
@@ -1,437 +1,437 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-#ifdef USE_3DNOW_ASM
-#include "assyntax.h"
-#include "matypes.h"
-#include "xform_args.h"
-
- SEG_TEXT
-
-#define FRAME_OFFSET 4
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points1_general )
-HIDDEN(_mesa_3dnow_transform_points1_general)
-GLNAME( _mesa_3dnow_transform_points1_general ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(4, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPGR_3 ) )
-
- MOVQ ( REGIND(ECX), MM0 ) /* m01 | m00 */
- MOVQ ( REGOFF(8, ECX), MM1 ) /* m03 | m02 */
-
- MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
- MOVQ ( REGOFF(56, ECX), MM3 ) /* m33 | m32 */
-
-ALIGNTEXT16
-LLBL( G3TPGR_2 ):
-
- MOVD ( REGIND(EAX), MM4 ) /* | x0 */
- PUNPCKLDQ ( MM4, MM4 ) /* x0 | x0 */
-
- MOVQ ( MM4, MM5 ) /* x0 | x0 */
- PFMUL ( MM0, MM4 ) /* x0*m01 | x0*m00 */
-
- PFMUL ( MM1, MM5 ) /* x0*m03 | x0*m02 */
- PFADD ( MM2, MM4 ) /* x0*m01+m31 | x0*m00+m30 */
-
- PFADD ( MM3, MM5 ) /* x0*m03+m33 | x0*m02+m32 */
- MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
-
- MOVQ ( MM5, REGOFF(8, EDX) ) /* write r3, r2 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- ADD_L ( CONST(16), EDX ) /* next r */
- DEC_L ( ESI ) /* decrement vertex counter */
-
- JNZ ( LLBL( G3TPGR_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPGR_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points1_identity )
-HIDDEN(_mesa_3dnow_transform_points1_identity)
-GLNAME( _mesa_3dnow_transform_points1_identity ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(1), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_1), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(4, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPIR_4) )
-
-ALIGNTEXT16
-LLBL( G3TPIR_3 ):
-
- MOVD ( REGIND(EAX), MM0 ) /* | x0 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- MOVD ( MM0, REGIND(EDX) ) /* | r0 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TPIR_3 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPIR_4 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points1_3d_no_rot )
-HIDDEN(_mesa_3dnow_transform_points1_3d_no_rot)
-GLNAME( _mesa_3dnow_transform_points1_3d_no_rot ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(4, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP3NRR_3 ) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
-
- MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
-
-ALIGNTEXT16
-LLBL( G3TP3NRR_2 ):
-
- MOVD ( REGIND(EAX), MM4 ) /* | x0 */
- PFMUL ( MM0, MM4 ) /* | x0*m00 */
-
- PFADD ( MM2, MM4 ) /* m31 | x0*m00+m30 */
- MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
-
- MOVD ( MM3, REGOFF(8, EDX) ) /* write r2 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- ADD_L ( CONST(16), EDX ) /* next r */
- DEC_L ( ESI ) /* decrement vertex counter */
-
- JNZ ( LLBL( G3TP3NRR_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP3NRR_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points1_perspective )
-HIDDEN(_mesa_3dnow_transform_points1_perspective)
-GLNAME( _mesa_3dnow_transform_points1_perspective ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(4, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPPR_3 ) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
-
-ALIGNTEXT16
-LLBL( G3TPPR_2 ):
-
- MOVD ( REGIND(EAX), MM4 ) /* 0 | x0 */
- PFMUL ( MM0, MM4 ) /* 0 | x0*m00 */
-
- MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
- MOVQ ( MM3, REGOFF(8, EDX) ) /* write r2 (=m32), r3 (=0) */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TPPR_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPPR_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points1_2d )
-HIDDEN(_mesa_3dnow_transform_points1_2d)
-GLNAME( _mesa_3dnow_transform_points1_2d ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(2), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(4, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP2R_3 ) )
-
- MOVQ ( REGIND(ECX), MM0 ) /* m01 | m00 */
- MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
-
-ALIGNTEXT16
-LLBL( G3TP2R_2 ):
-
- MOVD ( REGIND(EAX), MM4 ) /* | x0 */
- PUNPCKLDQ ( MM4, MM4 ) /* x0 | x0 */
-
- PFMUL ( MM0, MM4 ) /* x0*m01 | x0*m00 */
- PFADD ( MM2, MM4 ) /* x0*m01+m31 | x0*m00+m30 */
-
- MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- ADD_L ( CONST(16), EDX ) /* next r */
- DEC_L ( ESI ) /* decrement vertex counter */
-
- JNZ ( LLBL( G3TP2R_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP2R_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points1_2d_no_rot )
-HIDDEN(_mesa_3dnow_transform_points1_2d_no_rot)
-GLNAME( _mesa_3dnow_transform_points1_2d_no_rot ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(2), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(4, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP2NRR_3 ) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
-
-ALIGNTEXT16
-LLBL( G3TP2NRR_2 ):
-
- MOVD ( REGIND(EAX), MM4 ) /* | x0 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- PFMUL ( MM0, MM4 ) /* | x0*m00 */
- PFADD ( MM2, MM4 ) /* m31 | x0*m00+m30 */
-
- MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TP2NRR_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP2NRR_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points1_3d )
-HIDDEN(_mesa_3dnow_transform_points1_3d)
-GLNAME( _mesa_3dnow_transform_points1_3d ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(4, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP3R_3 ) )
-
- MOVQ ( REGIND(ECX), MM0 ) /* m01 | m00 */
- MOVD ( REGOFF(8, ECX), MM1 ) /* | m02 */
-
- MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
- MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
-
-ALIGNTEXT16
-LLBL( G3TP3R_2 ):
-
- MOVD ( REGIND(EAX), MM4 ) /* | x0 */
- PUNPCKLDQ ( MM4, MM4 ) /* x0 | x0 */
-
- MOVQ ( MM4, MM5 ) /* | x0 */
- PFMUL ( MM0, MM4 ) /* x0*m01 | x0*m00 */
-
- PFMUL ( MM1, MM5 ) /* | x0*m02 */
- PFADD ( MM2, MM4 ) /* x0*m01+m31 | x0*m00+m30 */
-
- PFADD ( MM3, MM5 ) /* | x0*m02+m32 */
- MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
-
- MOVD ( MM5, REGOFF(8, EDX) ) /* write r2 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- ADD_L ( CONST(16), EDX ) /* next r */
- DEC_L ( ESI ) /* decrement vertex counter */
-
- JNZ ( LLBL( G3TP3R_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP3R_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-#endif
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+#ifdef USE_3DNOW_ASM
+#include "assyntax.h"
+#include "matypes.h"
+#include "xform_args.h"
+
+ SEG_TEXT
+
+#define FRAME_OFFSET 4
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points1_general )
+HIDDEN(_mesa_3dnow_transform_points1_general)
+GLNAME( _mesa_3dnow_transform_points1_general ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(4, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPGR_3 ) )
+
+ MOVQ ( REGIND(ECX), MM0 ) /* m01 | m00 */
+ MOVQ ( REGOFF(8, ECX), MM1 ) /* m03 | m02 */
+
+ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
+ MOVQ ( REGOFF(56, ECX), MM3 ) /* m33 | m32 */
+
+ALIGNTEXT16
+LLBL( G3TPGR_2 ):
+
+ MOVD ( REGIND(EAX), MM4 ) /* | x0 */
+ PUNPCKLDQ ( MM4, MM4 ) /* x0 | x0 */
+
+ MOVQ ( MM4, MM5 ) /* x0 | x0 */
+ PFMUL ( MM0, MM4 ) /* x0*m01 | x0*m00 */
+
+ PFMUL ( MM1, MM5 ) /* x0*m03 | x0*m02 */
+ PFADD ( MM2, MM4 ) /* x0*m01+m31 | x0*m00+m30 */
+
+ PFADD ( MM3, MM5 ) /* x0*m03+m33 | x0*m02+m32 */
+ MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
+
+ MOVQ ( MM5, REGOFF(8, EDX) ) /* write r3, r2 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ DEC_L ( ESI ) /* decrement vertex counter */
+
+ JNZ ( LLBL( G3TPGR_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPGR_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points1_identity )
+HIDDEN(_mesa_3dnow_transform_points1_identity)
+GLNAME( _mesa_3dnow_transform_points1_identity ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(1), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_1), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(4, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPIR_4) )
+
+ALIGNTEXT16
+LLBL( G3TPIR_3 ):
+
+ MOVD ( REGIND(EAX), MM0 ) /* | x0 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ MOVD ( MM0, REGIND(EDX) ) /* | r0 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TPIR_3 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPIR_4 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points1_3d_no_rot )
+HIDDEN(_mesa_3dnow_transform_points1_3d_no_rot)
+GLNAME( _mesa_3dnow_transform_points1_3d_no_rot ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(4, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP3NRR_3 ) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
+
+ MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
+
+ALIGNTEXT16
+LLBL( G3TP3NRR_2 ):
+
+ MOVD ( REGIND(EAX), MM4 ) /* | x0 */
+ PFMUL ( MM0, MM4 ) /* | x0*m00 */
+
+ PFADD ( MM2, MM4 ) /* m31 | x0*m00+m30 */
+ MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
+
+ MOVD ( MM3, REGOFF(8, EDX) ) /* write r2 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ DEC_L ( ESI ) /* decrement vertex counter */
+
+ JNZ ( LLBL( G3TP3NRR_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP3NRR_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points1_perspective )
+HIDDEN(_mesa_3dnow_transform_points1_perspective)
+GLNAME( _mesa_3dnow_transform_points1_perspective ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(4, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPPR_3 ) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
+
+ALIGNTEXT16
+LLBL( G3TPPR_2 ):
+
+ MOVD ( REGIND(EAX), MM4 ) /* 0 | x0 */
+ PFMUL ( MM0, MM4 ) /* 0 | x0*m00 */
+
+ MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
+ MOVQ ( MM3, REGOFF(8, EDX) ) /* write r2 (=m32), r3 (=0) */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TPPR_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPPR_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points1_2d )
+HIDDEN(_mesa_3dnow_transform_points1_2d)
+GLNAME( _mesa_3dnow_transform_points1_2d ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(2), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(4, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP2R_3 ) )
+
+ MOVQ ( REGIND(ECX), MM0 ) /* m01 | m00 */
+ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
+
+ALIGNTEXT16
+LLBL( G3TP2R_2 ):
+
+ MOVD ( REGIND(EAX), MM4 ) /* | x0 */
+ PUNPCKLDQ ( MM4, MM4 ) /* x0 | x0 */
+
+ PFMUL ( MM0, MM4 ) /* x0*m01 | x0*m00 */
+ PFADD ( MM2, MM4 ) /* x0*m01+m31 | x0*m00+m30 */
+
+ MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ DEC_L ( ESI ) /* decrement vertex counter */
+
+ JNZ ( LLBL( G3TP2R_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP2R_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points1_2d_no_rot )
+HIDDEN(_mesa_3dnow_transform_points1_2d_no_rot)
+GLNAME( _mesa_3dnow_transform_points1_2d_no_rot ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(2), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(4, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP2NRR_3 ) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
+
+ALIGNTEXT16
+LLBL( G3TP2NRR_2 ):
+
+ MOVD ( REGIND(EAX), MM4 ) /* | x0 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ PFMUL ( MM0, MM4 ) /* | x0*m00 */
+ PFADD ( MM2, MM4 ) /* m31 | x0*m00+m30 */
+
+ MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TP2NRR_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP2NRR_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points1_3d )
+HIDDEN(_mesa_3dnow_transform_points1_3d)
+GLNAME( _mesa_3dnow_transform_points1_3d ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(4, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP3R_3 ) )
+
+ MOVQ ( REGIND(ECX), MM0 ) /* m01 | m00 */
+ MOVD ( REGOFF(8, ECX), MM1 ) /* | m02 */
+
+ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
+ MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
+
+ALIGNTEXT16
+LLBL( G3TP3R_2 ):
+
+ MOVD ( REGIND(EAX), MM4 ) /* | x0 */
+ PUNPCKLDQ ( MM4, MM4 ) /* x0 | x0 */
+
+ MOVQ ( MM4, MM5 ) /* | x0 */
+ PFMUL ( MM0, MM4 ) /* x0*m01 | x0*m00 */
+
+ PFMUL ( MM1, MM5 ) /* | x0*m02 */
+ PFADD ( MM2, MM4 ) /* x0*m01+m31 | x0*m00+m30 */
+
+ PFADD ( MM3, MM5 ) /* | x0*m02+m32 */
+ MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
+
+ MOVD ( MM5, REGOFF(8, EDX) ) /* write r2 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ DEC_L ( ESI ) /* decrement vertex counter */
+
+ JNZ ( LLBL( G3TP3R_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP3R_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+#endif
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/3dnow_xform2.S b/mesalib/src/mesa/x86/3dnow_xform2.S
index 8c706074a..2988fb7bf 100644
--- a/mesalib/src/mesa/x86/3dnow_xform2.S
+++ b/mesalib/src/mesa/x86/3dnow_xform2.S
@@ -1,477 +1,477 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-#ifdef USE_3DNOW_ASM
-#include "assyntax.h"
-#include "matypes.h"
-#include "xform_args.h"
-
- SEG_TEXT
-
-#define FRAME_OFFSET 4
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points2_general )
-HIDDEN(_mesa_3dnow_transform_points2_general)
-GLNAME( _mesa_3dnow_transform_points2_general ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPGR_3 ) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(16, ECX), MM0 ) /* m10 | m00 */
-
- MOVD ( REGOFF(4, ECX), MM1 ) /* | m01 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM1 ) /* m11 | m01 */
-
- MOVD ( REGOFF(8, ECX), MM2 ) /* | m02 */
- PUNPCKLDQ ( REGOFF(24, ECX), MM2 ) /* m12 | m02 */
-
- MOVD ( REGOFF(12, ECX), MM3 ) /* | m03 */
- PUNPCKLDQ ( REGOFF(28, ECX), MM3 ) /* m13 | m03 */
-
- MOVQ ( REGOFF(48, ECX), MM4 ) /* m31 | m30 */
- MOVQ ( REGOFF(56, ECX), MM5 ) /* m33 | m32 */
-
-ALIGNTEXT16
-LLBL( G3TPGR_2 ):
-
- MOVQ ( REGIND(EAX), MM6 ) /* x1 | x0 */
- MOVQ ( MM6, MM7 ) /* x1 | x0 */
-
- PFMUL ( MM0, MM6 ) /* x1*m10 | x0*m00 */
- PFMUL ( MM1, MM7 ) /* x1*m11 | x0*m01 */
-
- PFACC ( MM7, MM6 ) /* x0*m01+x1*m11 | x0*x00+x1*m10 */
- PFADD ( MM4, MM6 ) /* x0*...*m11+m31 | x0*...*m10+m30 */
-
- MOVQ ( MM6, REGIND(EDX) ) /* write r1, r0 */
- MOVQ ( REGIND(EAX), MM6 ) /* x1 | x0 */
-
- MOVQ ( MM6, MM7 ) /* x1 | x0 */
- PFMUL ( MM2, MM6 ) /* x1*m12 | x0*m02 */
-
- PFMUL ( MM3, MM7 ) /* x1*m13 | x0*m03 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- PFACC ( MM7, MM6 ) /* x0*m03+x1*m13 | x0*x02+x1*m12 */
- PFADD ( MM5, MM6 ) /* x0*...*m13+m33 | x0*...*m12+m32 */
-
- MOVQ ( MM6, REGOFF(8, EDX) ) /* write r3, r2 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TPGR_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPGR_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points2_perspective )
-HIDDEN(_mesa_3dnow_transform_points2_perspective)
-GLNAME( _mesa_3dnow_transform_points2_perspective ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPPR_3 ) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
-
- MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
-
-ALIGNTEXT16
-LLBL( G3TPPR_2 ):
-
- MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
- PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
-
- MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
- MOVQ ( MM3, REGOFF(8, EDX) ) /* write r2 (=m32), r3 (=0) */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TPPR_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPPR_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points2_3d )
-HIDDEN(_mesa_3dnow_transform_points2_3d)
-GLNAME( _mesa_3dnow_transform_points2_3d ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_3 ), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP3R_3 ) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(16, ECX), MM0 ) /* m10 | m00 */
-
- MOVD ( REGOFF(4, ECX), MM1 ) /* | m01 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM1 ) /* m11 | m01 */
-
- MOVD ( REGOFF(8, ECX), MM2 ) /* | m02 */
- PUNPCKLDQ ( REGOFF(24, ECX), MM2 ) /* m12 | m02 */
-
- MOVQ ( REGOFF(48, ECX), MM4 ) /* m31 | m30 */
- MOVD ( REGOFF(56, ECX), MM5 ) /* | m32 */
-
-ALIGNTEXT16
-LLBL( G3TP3R_2 ):
-
- MOVQ ( REGIND(EAX), MM6 ) /* x1 | x0 */
- MOVQ ( MM6, MM7 ) /* x1 | x0 */
-
- PFMUL ( MM0, MM6 ) /* x1*m10 | x0*m00 */
- PFMUL ( MM1, MM7 ) /* x1*m11 | x0*m01 */
-
- PFACC ( MM7, MM6 ) /* x0*m01+x1*m11 | x0*x00+x1*m10 */
- PFADD ( MM4, MM6 ) /* x0*...*m11+m31 | x0*...*m10+m30 */
-
- MOVQ ( MM6, REGIND(EDX) ) /* write r1, r0 */
- MOVQ ( REGIND(EAX), MM6 ) /* x1 | x0 */
-
- MOVQ ( MM6, MM7 ) /* x1 | x0 */
- PFMUL ( MM2, MM6 ) /* x1*m12 | x0*m02 */
-
- PFACC ( MM7, MM6 ) /* ***trash*** | x0*x02+x1*m12 */
- PFADD ( MM5, MM6 ) /* ***trash*** | x0*...*m12+m32 */
-
- MOVD ( MM6, REGOFF(8, EDX) ) /* write r2 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- ADD_L ( CONST(16), EDX ) /* next r */
- DEC_L ( ESI ) /* decrement vertex counter */
-
- JNZ ( LLBL( G3TP3R_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP3R_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points2_3d_no_rot )
-HIDDEN(_mesa_3dnow_transform_points2_3d_no_rot)
-GLNAME( _mesa_3dnow_transform_points2_3d_no_rot ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_3 ), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP3NRR_3 ) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
-
- MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
- MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
-
-ALIGNTEXT16
-LLBL( G3TP3NRR_2 ):
-
- MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
- PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
-
- PFADD ( MM2, MM4 ) /* x1*m11+m31 | x0*m00+m30 */
- MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
-
- MOVD ( MM3, REGOFF(8, EDX) ) /* write r2 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- ADD_L ( CONST(16), EDX ) /* next r */
- DEC_L ( ESI ) /* decrement vertex counter */
-
- JNZ ( LLBL( G3TP3NRR_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP3NRR_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points2_2d )
-HIDDEN(_mesa_3dnow_transform_points2_2d)
-GLNAME( _mesa_3dnow_transform_points2_2d ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(2), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP2R_3 ) )
-
- MOVQ ( REGIND(ECX), MM0 ) /* m01 | m00 */
- MOVQ ( REGOFF(16, ECX), MM1 ) /* m11 | m10 */
-
- MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
-
-ALIGNTEXT16
-LLBL( G3TP2R_2 ):
-
- MOVD ( REGIND(EAX), MM4 ) /* | x0 */
- MOVD ( REGOFF(4, EAX), MM5 ) /* | x1 */
-
- PUNPCKLDQ ( MM4, MM4 ) /* x0 | x0 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- PFMUL ( MM0, MM4 ) /* x0*m01 | x0*m00 */
- PUNPCKLDQ ( MM5, MM5 ) /* x1 | x1 */
-
- PFMUL ( MM1, MM5 ) /* x1*m11 | x1*m10 */
- PFADD ( MM2, MM4 ) /* x...x1*m11+31 | x0*..*m10+m30 */
-
- PFADD ( MM5, MM4 ) /* x0*m01+x1*m11 | x0*m00+x1*m10 */
- MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
-
- ADD_L ( CONST(16), EDX ) /* next r */
- DEC_L ( ESI ) /* decrement vertex counter */
-
- JNZ ( LLBL( G3TP2R_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP2R_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points2_2d_no_rot )
-HIDDEN(_mesa_3dnow_transform_points2_2d_no_rot)
-GLNAME( _mesa_3dnow_transform_points2_2d_no_rot ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(2), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP2NRR_3 ) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
-
- MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
-
-ALIGNTEXT16
-LLBL( G3TP2NRR_2 ):
-
- MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
- PFADD ( MM2, MM4 ) /* m31 | x0*m00+m30 */
-
- MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TP2NRR_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP2NRR_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points2_identity )
-HIDDEN(_mesa_3dnow_transform_points2_identity)
-GLNAME( _mesa_3dnow_transform_points2_identity ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(2), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPIR_3 ) )
-
-ALIGNTEXT16
-LLBL( G3TPIR_3 ):
-
- MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
- ADD_L ( EDI, EAX ) /* next vertex */
-
- MOVQ ( MM0, REGIND(EDX) ) /* r1 | r0 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TPIR_3 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPIR_4 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#endif
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+#ifdef USE_3DNOW_ASM
+#include "assyntax.h"
+#include "matypes.h"
+#include "xform_args.h"
+
+ SEG_TEXT
+
+#define FRAME_OFFSET 4
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points2_general )
+HIDDEN(_mesa_3dnow_transform_points2_general)
+GLNAME( _mesa_3dnow_transform_points2_general ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPGR_3 ) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(16, ECX), MM0 ) /* m10 | m00 */
+
+ MOVD ( REGOFF(4, ECX), MM1 ) /* | m01 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM1 ) /* m11 | m01 */
+
+ MOVD ( REGOFF(8, ECX), MM2 ) /* | m02 */
+ PUNPCKLDQ ( REGOFF(24, ECX), MM2 ) /* m12 | m02 */
+
+ MOVD ( REGOFF(12, ECX), MM3 ) /* | m03 */
+ PUNPCKLDQ ( REGOFF(28, ECX), MM3 ) /* m13 | m03 */
+
+ MOVQ ( REGOFF(48, ECX), MM4 ) /* m31 | m30 */
+ MOVQ ( REGOFF(56, ECX), MM5 ) /* m33 | m32 */
+
+ALIGNTEXT16
+LLBL( G3TPGR_2 ):
+
+ MOVQ ( REGIND(EAX), MM6 ) /* x1 | x0 */
+ MOVQ ( MM6, MM7 ) /* x1 | x0 */
+
+ PFMUL ( MM0, MM6 ) /* x1*m10 | x0*m00 */
+ PFMUL ( MM1, MM7 ) /* x1*m11 | x0*m01 */
+
+ PFACC ( MM7, MM6 ) /* x0*m01+x1*m11 | x0*x00+x1*m10 */
+ PFADD ( MM4, MM6 ) /* x0*...*m11+m31 | x0*...*m10+m30 */
+
+ MOVQ ( MM6, REGIND(EDX) ) /* write r1, r0 */
+ MOVQ ( REGIND(EAX), MM6 ) /* x1 | x0 */
+
+ MOVQ ( MM6, MM7 ) /* x1 | x0 */
+ PFMUL ( MM2, MM6 ) /* x1*m12 | x0*m02 */
+
+ PFMUL ( MM3, MM7 ) /* x1*m13 | x0*m03 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ PFACC ( MM7, MM6 ) /* x0*m03+x1*m13 | x0*x02+x1*m12 */
+ PFADD ( MM5, MM6 ) /* x0*...*m13+m33 | x0*...*m12+m32 */
+
+ MOVQ ( MM6, REGOFF(8, EDX) ) /* write r3, r2 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TPGR_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPGR_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points2_perspective )
+HIDDEN(_mesa_3dnow_transform_points2_perspective)
+GLNAME( _mesa_3dnow_transform_points2_perspective ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPPR_3 ) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
+
+ MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
+
+ALIGNTEXT16
+LLBL( G3TPPR_2 ):
+
+ MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
+ PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
+
+ MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
+ MOVQ ( MM3, REGOFF(8, EDX) ) /* write r2 (=m32), r3 (=0) */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TPPR_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPPR_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points2_3d )
+HIDDEN(_mesa_3dnow_transform_points2_3d)
+GLNAME( _mesa_3dnow_transform_points2_3d ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_3 ), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP3R_3 ) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(16, ECX), MM0 ) /* m10 | m00 */
+
+ MOVD ( REGOFF(4, ECX), MM1 ) /* | m01 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM1 ) /* m11 | m01 */
+
+ MOVD ( REGOFF(8, ECX), MM2 ) /* | m02 */
+ PUNPCKLDQ ( REGOFF(24, ECX), MM2 ) /* m12 | m02 */
+
+ MOVQ ( REGOFF(48, ECX), MM4 ) /* m31 | m30 */
+ MOVD ( REGOFF(56, ECX), MM5 ) /* | m32 */
+
+ALIGNTEXT16
+LLBL( G3TP3R_2 ):
+
+ MOVQ ( REGIND(EAX), MM6 ) /* x1 | x0 */
+ MOVQ ( MM6, MM7 ) /* x1 | x0 */
+
+ PFMUL ( MM0, MM6 ) /* x1*m10 | x0*m00 */
+ PFMUL ( MM1, MM7 ) /* x1*m11 | x0*m01 */
+
+ PFACC ( MM7, MM6 ) /* x0*m01+x1*m11 | x0*x00+x1*m10 */
+ PFADD ( MM4, MM6 ) /* x0*...*m11+m31 | x0*...*m10+m30 */
+
+ MOVQ ( MM6, REGIND(EDX) ) /* write r1, r0 */
+ MOVQ ( REGIND(EAX), MM6 ) /* x1 | x0 */
+
+ MOVQ ( MM6, MM7 ) /* x1 | x0 */
+ PFMUL ( MM2, MM6 ) /* x1*m12 | x0*m02 */
+
+ PFACC ( MM7, MM6 ) /* ***trash*** | x0*x02+x1*m12 */
+ PFADD ( MM5, MM6 ) /* ***trash*** | x0*...*m12+m32 */
+
+ MOVD ( MM6, REGOFF(8, EDX) ) /* write r2 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ DEC_L ( ESI ) /* decrement vertex counter */
+
+ JNZ ( LLBL( G3TP3R_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP3R_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points2_3d_no_rot )
+HIDDEN(_mesa_3dnow_transform_points2_3d_no_rot)
+GLNAME( _mesa_3dnow_transform_points2_3d_no_rot ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_3 ), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP3NRR_3 ) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
+
+ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
+ MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
+
+ALIGNTEXT16
+LLBL( G3TP3NRR_2 ):
+
+ MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
+ PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
+
+ PFADD ( MM2, MM4 ) /* x1*m11+m31 | x0*m00+m30 */
+ MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
+
+ MOVD ( MM3, REGOFF(8, EDX) ) /* write r2 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ DEC_L ( ESI ) /* decrement vertex counter */
+
+ JNZ ( LLBL( G3TP3NRR_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP3NRR_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points2_2d )
+HIDDEN(_mesa_3dnow_transform_points2_2d)
+GLNAME( _mesa_3dnow_transform_points2_2d ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(2), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP2R_3 ) )
+
+ MOVQ ( REGIND(ECX), MM0 ) /* m01 | m00 */
+ MOVQ ( REGOFF(16, ECX), MM1 ) /* m11 | m10 */
+
+ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
+
+ALIGNTEXT16
+LLBL( G3TP2R_2 ):
+
+ MOVD ( REGIND(EAX), MM4 ) /* | x0 */
+ MOVD ( REGOFF(4, EAX), MM5 ) /* | x1 */
+
+ PUNPCKLDQ ( MM4, MM4 ) /* x0 | x0 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ PFMUL ( MM0, MM4 ) /* x0*m01 | x0*m00 */
+ PUNPCKLDQ ( MM5, MM5 ) /* x1 | x1 */
+
+ PFMUL ( MM1, MM5 ) /* x1*m11 | x1*m10 */
+ PFADD ( MM2, MM4 ) /* x...x1*m11+31 | x0*..*m10+m30 */
+
+ PFADD ( MM5, MM4 ) /* x0*m01+x1*m11 | x0*m00+x1*m10 */
+ MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ DEC_L ( ESI ) /* decrement vertex counter */
+
+ JNZ ( LLBL( G3TP2R_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP2R_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points2_2d_no_rot )
+HIDDEN(_mesa_3dnow_transform_points2_2d_no_rot)
+GLNAME( _mesa_3dnow_transform_points2_2d_no_rot ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(2), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP2NRR_3 ) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
+
+ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
+
+ALIGNTEXT16
+LLBL( G3TP2NRR_2 ):
+
+ MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
+ PFADD ( MM2, MM4 ) /* m31 | x0*m00+m30 */
+
+ MOVQ ( MM4, REGIND(EDX) ) /* write r1, r0 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TP2NRR_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP2NRR_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points2_identity )
+HIDDEN(_mesa_3dnow_transform_points2_identity)
+GLNAME( _mesa_3dnow_transform_points2_identity ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(2), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPIR_3 ) )
+
+ALIGNTEXT16
+LLBL( G3TPIR_3 ):
+
+ MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
+ ADD_L ( EDI, EAX ) /* next vertex */
+
+ MOVQ ( MM0, REGIND(EDX) ) /* r1 | r0 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TPIR_3 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPIR_4 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#endif
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/3dnow_xform3.S b/mesalib/src/mesa/x86/3dnow_xform3.S
index d119fe821..a356aaee7 100644
--- a/mesalib/src/mesa/x86/3dnow_xform3.S
+++ b/mesalib/src/mesa/x86/3dnow_xform3.S
@@ -1,561 +1,561 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-#ifdef USE_3DNOW_ASM
-#include "assyntax.h"
-#include "matypes.h"
-#include "xform_args.h"
-
- SEG_TEXT
-
-#define FRAME_OFFSET 4
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points3_general )
-HIDDEN(_mesa_3dnow_transform_points3_general)
-GLNAME( _mesa_3dnow_transform_points3_general ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPGR_2 ) )
-
- PREFETCHW ( REGIND(EDX) )
-
-ALIGNTEXT16
-LLBL( G3TPGR_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EAX), MM2 ) /* | x2 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCH ( REGIND(EAX) )
-
- MOVQ ( MM0, MM1 ) /* x1 | x0 */
- PUNPCKLDQ ( MM2, MM2 ) /* x2 | x2 */
-
- PUNPCKLDQ ( MM0, MM0 ) /* x0 | x0 */
- MOVQ ( MM2, MM5 ) /* x2 | x2 */
-
- PUNPCKHDQ ( MM1, MM1 ) /* x1 | x1 */
- PFMUL ( REGOFF(32, ECX), MM2 ) /* x2*m9 | x2*m8 */
-
- MOVQ ( MM0, MM3 ) /* x0 | x0 */
- PFMUL ( REGOFF(40, ECX), MM5 ) /* x2*m11 | x2*m10 */
-
- MOVQ ( MM1, MM4 ) /* x1 | x1 */
- PFMUL ( REGIND(ECX), MM0 ) /* x0*m1 | x0*m0 */
-
- PFADD ( REGOFF(48, ECX), MM2 ) /* x2*m9+m13 | x2*m8+m12 */
- PFMUL ( REGOFF(16, ECX), MM1 ) /* x1*m5 | x1*m4 */
-
- PFADD ( REGOFF(56, ECX), MM5 ) /* x2*m11+m15 | x2*m10+m14 */
- PFADD ( MM0, MM1 ) /* x0*m1+x1*m5 | x0*m0+x1*m4 */
-
- PFMUL ( REGOFF(8, ECX), MM3 ) /* x0*m3 | x0*m2 */
- PFADD ( MM1, MM2 ) /* r1 | r0 */
-
- PFMUL ( REGOFF(24, ECX), MM4 ) /* x1*m7 | x1*m6 */
- ADD_L ( CONST(16), EDX ) /* next output vertex */
-
- PFADD ( MM3, MM4 ) /* x0*m3+x1*m7 | x0*m2+x1*m6 */
- MOVQ ( MM2, REGOFF(-16, EDX) ) /* write r0, r1 */
-
- PFADD ( MM4, MM5 ) /* r3 | r2 */
- MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TPGR_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPGR_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points3_perspective )
-HIDDEN(_mesa_3dnow_transform_points3_perspective)
-GLNAME( _mesa_3dnow_transform_points3_perspective ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPPR_2 ) )
-
- PREFETCH ( REGIND(EAX) )
- PREFETCHW ( REGIND(EDX) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
-
- MOVQ ( REGOFF(32, ECX), MM1 ) /* m21 | m20 */
- MOVD ( REGOFF(40, ECX), MM2 ) /* | m22 */
-
- MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
-
-ALIGNTEXT16
-LLBL( G3TPPR_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */
- MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCH ( REGIND(EAX) )
-
- PXOR ( MM7, MM7 ) /* 0 | 0 */
- MOVQ ( MM5, MM6 ) /* | x2 */
-
- PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
- PFSUB ( MM5, MM7 ) /* | -x2 */
-
- PFMUL ( MM2, MM6 ) /* | x2*m22 */
- PUNPCKLDQ ( MM5, MM5 ) /* x2 | x2 */
-
- ADD_L ( CONST(16), EDX ) /* next r */
- PFMUL ( MM1, MM5 ) /* x2*m21 | x2*m20 */
-
- PFADD ( MM3, MM6 ) /* | x2*m22+m32 */
- PFADD ( MM4, MM5 ) /* x1*m11+x2*m21 | x0*m00+x2*m20 */
-
- MOVQ ( MM5, REGOFF(-16, EDX) ) /* write r0, r1 */
- MOVD ( MM6, REGOFF(-8, EDX) ) /* write r2 */
-
- MOVD ( MM7, REGOFF(-4, EDX) ) /* write r3 */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TPPR_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPPR_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points3_3d )
-HIDDEN(_mesa_3dnow_transform_points3_3d)
-GLNAME( _mesa_3dnow_transform_points3_3d ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP3R_2 ) )
-
- PREFETCH ( REGIND(EAX) )
- PREFETCH ( REGIND(EDX) )
-
- MOVD ( REGOFF(8, ECX), MM7 ) /* | m2 */
- PUNPCKLDQ ( REGOFF(24, ECX), MM7 ) /* m6 | m2 */
-
-
-ALIGNTEXT16
-LLBL( G3TP3R_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCH ( REGIND(EAX) )
-
- MOVQ ( MM0, MM2 ) /* x1 | x0 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- PUNPCKLDQ ( MM2, MM2 ) /* x0 | x0 */
- MOVQ ( MM0, MM3 ) /* x1 | x0 */
-
- PFMUL ( REGIND(ECX), MM2 ) /* x0*m1 | x0*m0 */
- PUNPCKHDQ ( MM3, MM3 ) /* x1 | x1 */
-
- MOVQ ( MM1, MM4 ) /* | x2 */
- PFMUL ( REGOFF(16, ECX), MM3 ) /* x1*m5 | x1*m4 */
-
- PUNPCKLDQ ( MM4, MM4 ) /* x2 | x2 */
- PFADD ( MM2, MM3 ) /* x0*m1+x1*m5 | x0*m0+x1*m4 */
-
- PFMUL ( REGOFF(32, ECX), MM4 ) /* x2*m9 | x2*m8 */
- PFADD ( REGOFF(48, ECX), MM3 ) /* x0*m1+...+m11 | x0*m0+x1*m4+m12 */
-
- PFMUL ( MM7, MM0 ) /* x1*m6 | x0*m2 */
- PFADD ( MM4, MM3 ) /* r1 | r0 */
-
- PFMUL ( REGOFF(40, ECX), MM1 ) /* | x2*m10 */
- PUNPCKLDQ ( REGOFF(56, ECX), MM1 ) /* m14 | x2*m10 */
-
- PFACC ( MM0, MM1 )
-
- MOVQ ( MM3, REGOFF(-16, EDX) ) /* write r0, r1 */
- PFACC ( MM1, MM1 ) /* | r2 */
-
- MOVD ( MM1, REGOFF(-8, EDX) ) /* write r2 */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TP3R_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP3R_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points3_3d_no_rot )
-HIDDEN(_mesa_3dnow_transform_points3_3d_no_rot)
-GLNAME( _mesa_3dnow_transform_points3_3d_no_rot ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP3NRR_2 ) )
-
- PREFETCH ( REGIND(EAX) )
- PREFETCHW ( REGIND(EDX) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
-
- MOVD ( REGOFF(40, ECX), MM2 ) /* | m22 */
- PUNPCKLDQ ( MM2, MM2 ) /* m22 | m22 */
-
- MOVQ ( REGOFF(48, ECX), MM1 ) /* m31 | m30 */
- MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
-
- PUNPCKLDQ ( MM3, MM3 ) /* m32 | m32 */
-
-
-ALIGNTEXT16
-LLBL( G3TP3NRR_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCHW ( REGIND(EAX) )
-
- PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
-
- PFADD ( MM1, MM4 ) /* x1*m11+m31 | x0*m00+m30 */
- PFMUL ( MM2, MM5 ) /* | x2*m22 */
-
- PFADD ( MM3, MM5 ) /* | x2*m22+m32 */
- MOVQ ( MM4, REGIND(EDX) ) /* write r0, r1 */
-
- ADD_L ( CONST(16), EDX ) /* next r */
- DEC_L ( ESI ) /* decrement vertex counter */
-
- MOVD ( MM5, REGOFF(-8, EDX) ) /* write r2 */
- JNZ ( LLBL( G3TP3NRR_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP3NRR_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points3_2d )
-HIDDEN(_mesa_3dnow_transform_points3_2d)
-GLNAME( _mesa_3dnow_transform_points3_2d ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP2R_3) )
-
- PREFETCH ( REGIND(EAX) )
- PREFETCHW ( REGIND(EDX) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(16, ECX), MM0 ) /* m10 | m00 */
-
- MOVD ( REGOFF(4, ECX), MM1 ) /* | m01 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM1 ) /* m11 | m01 */
-
- MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
-
-ALIGNTEXT16
-LLBL( G3TP2R_2 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVQ ( REGIND(EAX), MM3 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCH ( REGIND(EAX) )
-
- MOVQ ( MM3, MM4 ) /* x1 | x0 */
- PFMUL ( MM0, MM3 ) /* x1*m10 | x0*m00 */
-
- ADD_L ( CONST(16), EDX ) /* next r */
- PFMUL ( MM1, MM4 ) /* x1*m11 | x0*m01 */
-
- PFACC ( MM4, MM3 ) /* x0*m00+x1*m10 | x0*m01+x1*m11 */
- MOVD ( MM5, REGOFF(-8, EDX) ) /* write r2 (=x2) */
-
- PFADD ( MM2, MM3 ) /* x0*...*m10+m30 | x0*...*m11+m31 */
- MOVQ ( MM3, REGOFF(-16, EDX) ) /* write r0, r1 */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TP2R_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP2R_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points3_2d_no_rot )
-HIDDEN(_mesa_3dnow_transform_points3_2d_no_rot)
-GLNAME( _mesa_3dnow_transform_points3_2d_no_rot ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP2NRR_2 ) )
-
- PREFETCH ( REGIND(EAX) )
- PREFETCHW ( REGIND(EDX) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
-
- MOVQ ( REGOFF(48, ECX), MM1 ) /* m31 | m30 */
-
-
-ALIGNTEXT16
-LLBL( G3TP2NRR_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCH ( REGIND(EAX) )
-
- PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- PFADD ( MM1, MM4 ) /* x1*m11+m31 | x0*m00+m30 */
-
- MOVQ ( MM4, REGOFF(-16, EDX) ) /* write r0, r1 */
- MOVD ( MM5, REGOFF(-8, EDX) ) /* write r2 (=x2) */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TP2NRR_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP2NRR_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points3_identity )
-HIDDEN(_mesa_3dnow_transform_points3_identity)
-GLNAME( _mesa_3dnow_transform_points3_identity ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPIR_2 ) )
-
- PREFETCHW ( REGIND(EDX) )
-
-ALIGNTEXT16
-LLBL( G3TPIR_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) )
-
- MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
- MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- MOVQ ( MM0, REGOFF(-16, EDX) ) /* r1 | r0 */
-
- MOVD ( MM1, REGOFF(-8, EDX) ) /* | r2 */
- JNZ ( LLBL( G3TPIR_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPIR_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#endif
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+#ifdef USE_3DNOW_ASM
+#include "assyntax.h"
+#include "matypes.h"
+#include "xform_args.h"
+
+ SEG_TEXT
+
+#define FRAME_OFFSET 4
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points3_general )
+HIDDEN(_mesa_3dnow_transform_points3_general)
+GLNAME( _mesa_3dnow_transform_points3_general ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPGR_2 ) )
+
+ PREFETCHW ( REGIND(EDX) )
+
+ALIGNTEXT16
+LLBL( G3TPGR_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EAX), MM2 ) /* | x2 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCH ( REGIND(EAX) )
+
+ MOVQ ( MM0, MM1 ) /* x1 | x0 */
+ PUNPCKLDQ ( MM2, MM2 ) /* x2 | x2 */
+
+ PUNPCKLDQ ( MM0, MM0 ) /* x0 | x0 */
+ MOVQ ( MM2, MM5 ) /* x2 | x2 */
+
+ PUNPCKHDQ ( MM1, MM1 ) /* x1 | x1 */
+ PFMUL ( REGOFF(32, ECX), MM2 ) /* x2*m9 | x2*m8 */
+
+ MOVQ ( MM0, MM3 ) /* x0 | x0 */
+ PFMUL ( REGOFF(40, ECX), MM5 ) /* x2*m11 | x2*m10 */
+
+ MOVQ ( MM1, MM4 ) /* x1 | x1 */
+ PFMUL ( REGIND(ECX), MM0 ) /* x0*m1 | x0*m0 */
+
+ PFADD ( REGOFF(48, ECX), MM2 ) /* x2*m9+m13 | x2*m8+m12 */
+ PFMUL ( REGOFF(16, ECX), MM1 ) /* x1*m5 | x1*m4 */
+
+ PFADD ( REGOFF(56, ECX), MM5 ) /* x2*m11+m15 | x2*m10+m14 */
+ PFADD ( MM0, MM1 ) /* x0*m1+x1*m5 | x0*m0+x1*m4 */
+
+ PFMUL ( REGOFF(8, ECX), MM3 ) /* x0*m3 | x0*m2 */
+ PFADD ( MM1, MM2 ) /* r1 | r0 */
+
+ PFMUL ( REGOFF(24, ECX), MM4 ) /* x1*m7 | x1*m6 */
+ ADD_L ( CONST(16), EDX ) /* next output vertex */
+
+ PFADD ( MM3, MM4 ) /* x0*m3+x1*m7 | x0*m2+x1*m6 */
+ MOVQ ( MM2, REGOFF(-16, EDX) ) /* write r0, r1 */
+
+ PFADD ( MM4, MM5 ) /* r3 | r2 */
+ MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TPGR_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPGR_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points3_perspective )
+HIDDEN(_mesa_3dnow_transform_points3_perspective)
+GLNAME( _mesa_3dnow_transform_points3_perspective ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPPR_2 ) )
+
+ PREFETCH ( REGIND(EAX) )
+ PREFETCHW ( REGIND(EDX) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
+
+ MOVQ ( REGOFF(32, ECX), MM1 ) /* m21 | m20 */
+ MOVD ( REGOFF(40, ECX), MM2 ) /* | m22 */
+
+ MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
+
+ALIGNTEXT16
+LLBL( G3TPPR_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */
+ MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCH ( REGIND(EAX) )
+
+ PXOR ( MM7, MM7 ) /* 0 | 0 */
+ MOVQ ( MM5, MM6 ) /* | x2 */
+
+ PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
+ PFSUB ( MM5, MM7 ) /* | -x2 */
+
+ PFMUL ( MM2, MM6 ) /* | x2*m22 */
+ PUNPCKLDQ ( MM5, MM5 ) /* x2 | x2 */
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ PFMUL ( MM1, MM5 ) /* x2*m21 | x2*m20 */
+
+ PFADD ( MM3, MM6 ) /* | x2*m22+m32 */
+ PFADD ( MM4, MM5 ) /* x1*m11+x2*m21 | x0*m00+x2*m20 */
+
+ MOVQ ( MM5, REGOFF(-16, EDX) ) /* write r0, r1 */
+ MOVD ( MM6, REGOFF(-8, EDX) ) /* write r2 */
+
+ MOVD ( MM7, REGOFF(-4, EDX) ) /* write r3 */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TPPR_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPPR_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points3_3d )
+HIDDEN(_mesa_3dnow_transform_points3_3d)
+GLNAME( _mesa_3dnow_transform_points3_3d ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP3R_2 ) )
+
+ PREFETCH ( REGIND(EAX) )
+ PREFETCH ( REGIND(EDX) )
+
+ MOVD ( REGOFF(8, ECX), MM7 ) /* | m2 */
+ PUNPCKLDQ ( REGOFF(24, ECX), MM7 ) /* m6 | m2 */
+
+
+ALIGNTEXT16
+LLBL( G3TP3R_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCH ( REGIND(EAX) )
+
+ MOVQ ( MM0, MM2 ) /* x1 | x0 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ PUNPCKLDQ ( MM2, MM2 ) /* x0 | x0 */
+ MOVQ ( MM0, MM3 ) /* x1 | x0 */
+
+ PFMUL ( REGIND(ECX), MM2 ) /* x0*m1 | x0*m0 */
+ PUNPCKHDQ ( MM3, MM3 ) /* x1 | x1 */
+
+ MOVQ ( MM1, MM4 ) /* | x2 */
+ PFMUL ( REGOFF(16, ECX), MM3 ) /* x1*m5 | x1*m4 */
+
+ PUNPCKLDQ ( MM4, MM4 ) /* x2 | x2 */
+ PFADD ( MM2, MM3 ) /* x0*m1+x1*m5 | x0*m0+x1*m4 */
+
+ PFMUL ( REGOFF(32, ECX), MM4 ) /* x2*m9 | x2*m8 */
+ PFADD ( REGOFF(48, ECX), MM3 ) /* x0*m1+...+m11 | x0*m0+x1*m4+m12 */
+
+ PFMUL ( MM7, MM0 ) /* x1*m6 | x0*m2 */
+ PFADD ( MM4, MM3 ) /* r1 | r0 */
+
+ PFMUL ( REGOFF(40, ECX), MM1 ) /* | x2*m10 */
+ PUNPCKLDQ ( REGOFF(56, ECX), MM1 ) /* m14 | x2*m10 */
+
+ PFACC ( MM0, MM1 )
+
+ MOVQ ( MM3, REGOFF(-16, EDX) ) /* write r0, r1 */
+ PFACC ( MM1, MM1 ) /* | r2 */
+
+ MOVD ( MM1, REGOFF(-8, EDX) ) /* write r2 */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TP3R_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP3R_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points3_3d_no_rot )
+HIDDEN(_mesa_3dnow_transform_points3_3d_no_rot)
+GLNAME( _mesa_3dnow_transform_points3_3d_no_rot ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP3NRR_2 ) )
+
+ PREFETCH ( REGIND(EAX) )
+ PREFETCHW ( REGIND(EDX) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
+
+ MOVD ( REGOFF(40, ECX), MM2 ) /* | m22 */
+ PUNPCKLDQ ( MM2, MM2 ) /* m22 | m22 */
+
+ MOVQ ( REGOFF(48, ECX), MM1 ) /* m31 | m30 */
+ MOVD ( REGOFF(56, ECX), MM3 ) /* | m32 */
+
+ PUNPCKLDQ ( MM3, MM3 ) /* m32 | m32 */
+
+
+ALIGNTEXT16
+LLBL( G3TP3NRR_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCHW ( REGIND(EAX) )
+
+ PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
+
+ PFADD ( MM1, MM4 ) /* x1*m11+m31 | x0*m00+m30 */
+ PFMUL ( MM2, MM5 ) /* | x2*m22 */
+
+ PFADD ( MM3, MM5 ) /* | x2*m22+m32 */
+ MOVQ ( MM4, REGIND(EDX) ) /* write r0, r1 */
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ DEC_L ( ESI ) /* decrement vertex counter */
+
+ MOVD ( MM5, REGOFF(-8, EDX) ) /* write r2 */
+ JNZ ( LLBL( G3TP3NRR_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP3NRR_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points3_2d )
+HIDDEN(_mesa_3dnow_transform_points3_2d)
+GLNAME( _mesa_3dnow_transform_points3_2d ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP2R_3) )
+
+ PREFETCH ( REGIND(EAX) )
+ PREFETCHW ( REGIND(EDX) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(16, ECX), MM0 ) /* m10 | m00 */
+
+ MOVD ( REGOFF(4, ECX), MM1 ) /* | m01 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM1 ) /* m11 | m01 */
+
+ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
+
+ALIGNTEXT16
+LLBL( G3TP2R_2 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVQ ( REGIND(EAX), MM3 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCH ( REGIND(EAX) )
+
+ MOVQ ( MM3, MM4 ) /* x1 | x0 */
+ PFMUL ( MM0, MM3 ) /* x1*m10 | x0*m00 */
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ PFMUL ( MM1, MM4 ) /* x1*m11 | x0*m01 */
+
+ PFACC ( MM4, MM3 ) /* x0*m00+x1*m10 | x0*m01+x1*m11 */
+ MOVD ( MM5, REGOFF(-8, EDX) ) /* write r2 (=x2) */
+
+ PFADD ( MM2, MM3 ) /* x0*...*m10+m30 | x0*...*m11+m31 */
+ MOVQ ( MM3, REGOFF(-16, EDX) ) /* write r0, r1 */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TP2R_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP2R_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points3_2d_no_rot )
+HIDDEN(_mesa_3dnow_transform_points3_2d_no_rot)
+GLNAME( _mesa_3dnow_transform_points3_2d_no_rot ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP2NRR_2 ) )
+
+ PREFETCH ( REGIND(EAX) )
+ PREFETCHW ( REGIND(EDX) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
+
+ MOVQ ( REGOFF(48, ECX), MM1 ) /* m31 | m30 */
+
+
+ALIGNTEXT16
+LLBL( G3TP2NRR_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EAX), MM5 ) /* | x2 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCH ( REGIND(EAX) )
+
+ PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ PFADD ( MM1, MM4 ) /* x1*m11+m31 | x0*m00+m30 */
+
+ MOVQ ( MM4, REGOFF(-16, EDX) ) /* write r0, r1 */
+ MOVD ( MM5, REGOFF(-8, EDX) ) /* write r2 (=x2) */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TP2NRR_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP2NRR_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points3_identity )
+HIDDEN(_mesa_3dnow_transform_points3_identity)
+GLNAME( _mesa_3dnow_transform_points3_identity ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(3), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPIR_2 ) )
+
+ PREFETCHW ( REGIND(EDX) )
+
+ALIGNTEXT16
+LLBL( G3TPIR_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) )
+
+ MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
+ MOVD ( REGOFF(8, EAX), MM1 ) /* | x2 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ MOVQ ( MM0, REGOFF(-16, EDX) ) /* r1 | r0 */
+
+ MOVD ( MM1, REGOFF(-8, EDX) ) /* | r2 */
+ JNZ ( LLBL( G3TPIR_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPIR_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#endif
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/3dnow_xform4.S b/mesalib/src/mesa/x86/3dnow_xform4.S
index 3a9b97160..b2b7c64f2 100644
--- a/mesalib/src/mesa/x86/3dnow_xform4.S
+++ b/mesalib/src/mesa/x86/3dnow_xform4.S
@@ -1,570 +1,570 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-#ifdef USE_3DNOW_ASM
-#include "assyntax.h"
-#include "matypes.h"
-#include "xform_args.h"
-
- SEG_TEXT
-
-#define FRAME_OFFSET 4
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points4_general )
-HIDDEN(_mesa_3dnow_transform_points4_general)
-GLNAME( _mesa_3dnow_transform_points4_general ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPGR_2 ) )
-
- PREFETCHW ( REGIND(EDX) )
-
-ALIGNTEXT16
-LLBL( G3TPGR_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
- MOVQ ( REGOFF(8, EAX), MM4 ) /* x3 | x2 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCH ( REGIND(EAX) )
-
- MOVQ ( MM0, MM2 ) /* x1 | x0 */
- MOVQ ( MM4, MM6 ) /* x3 | x2 */
-
- PUNPCKLDQ ( MM0, MM0 ) /* x0 | x0 */
- PUNPCKHDQ ( MM2, MM2 ) /* x1 | x1 */
-
- MOVQ ( MM0, MM1 ) /* x0 | x0 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- PFMUL ( REGIND(ECX), MM0 ) /* x0*m1 | x0*m0 */
- MOVQ ( MM2, MM3 ) /* x1 | x1 */
-
- PFMUL ( REGOFF(8, ECX), MM1 ) /* x0*m3 | x0*m2 */
- PUNPCKLDQ ( MM4, MM4 ) /* x2 | x2 */
-
- PFMUL ( REGOFF(16, ECX), MM2 ) /* x1*m5 | x1*m4 */
- MOVQ ( MM4, MM5 ) /* x2 | x2 */
-
- PFMUL ( REGOFF(24, ECX), MM3 ) /* x1*m7 | x1*m6 */
- PUNPCKHDQ ( MM6, MM6 ) /* x3 | x3 */
-
- PFMUL ( REGOFF(32, ECX), MM4 ) /* x2*m9 | x2*m8 */
- MOVQ ( MM6, MM7 ) /* x3 | x3 */
-
- PFMUL ( REGOFF(40, ECX), MM5 ) /* x2*m11 | x2*m10 */
- PFADD ( MM0, MM2 )
-
- PFMUL ( REGOFF(48, ECX), MM6 ) /* x3*m13 | x3*m12 */
- PFADD ( MM1, MM3 )
-
- PFMUL ( REGOFF(56, ECX), MM7 ) /* x3*m15 | x3*m14 */
- PFADD ( MM4, MM6 )
-
- PFADD ( MM5, MM7 )
- PFADD ( MM2, MM6 )
-
- PFADD ( MM3, MM7 )
- MOVQ ( MM6, REGOFF(-16, EDX) )
-
- MOVQ ( MM7, REGOFF(-8, EDX) )
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TPGR_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPGR_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points4_perspective )
-HIDDEN(_mesa_3dnow_transform_points4_perspective)
-GLNAME( _mesa_3dnow_transform_points4_perspective ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPPR_2 ) )
-
- PREFETCH ( REGIND(EAX) )
- PREFETCHW ( REGIND(EDX) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
-
- MOVD ( REGOFF(40, ECX), MM1 ) /* | m22 */
- PUNPCKLDQ ( REGOFF(56, ECX), MM1 ) /* m32 | m22 */
-
- MOVQ ( REGOFF(32, ECX), MM2 ) /* m21 | m20 */
- PXOR ( MM7, MM7 ) /* 0 | 0 */
-
-ALIGNTEXT16
-LLBL( G3TPPR_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
- MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */
- MOVD ( REGOFF(8, EAX), MM3 ) /* | x2 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCH ( REGOFF(32, EAX) ) /* hopefully stride is zero */
-
- MOVQ ( MM5, MM6 ) /* x3 | x2 */
- PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
-
- PUNPCKLDQ ( MM5, MM5 ) /* x2 | x2 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- PFMUL ( MM2, MM5 ) /* x2*m21 | x2*m20 */
- PFSUBR ( MM7, MM3 ) /* | -x2 */
-
- PFMUL ( MM1, MM6 ) /* x3*m32 | x2*m22 */
- PFADD ( MM4, MM5 ) /* x1*m11+x2*m21 | x0*m00+x2*m20 */
-
- PFACC ( MM3, MM6 ) /* -x2 | x2*m22+x3*m32 */
- MOVQ ( MM5, REGOFF(-16, EDX) ) /* write r0, r1 */
-
- MOVQ ( MM6, REGOFF(-8, EDX) ) /* write r2, r3 */
- DEC_L ( ESI ) /* decrement vertex counter */
-
- JNZ ( LLBL( G3TPPR_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPPR_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points4_3d )
-HIDDEN(_mesa_3dnow_transform_points4_3d)
-GLNAME( _mesa_3dnow_transform_points4_3d ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP3R_2 ) )
-
- MOVD ( REGOFF(8, ECX), MM6 ) /* | m2 */
- PUNPCKLDQ ( REGOFF(24, ECX), MM6 ) /* m6 | m2 */
-
- MOVD ( REGOFF(40, ECX), MM7 ) /* | m10 */
- PUNPCKLDQ ( REGOFF(56, ECX), MM7 ) /* m14 | m10 */
-
-ALIGNTEXT16
-LLBL( G3TP3R_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
- PREFETCH ( REGOFF(32, EAX) ) /* hopefully array is tightly packed */
-
- MOVQ ( REGIND(EAX), MM2 ) /* x1 | x0 */
- MOVQ ( REGOFF(8, EAX), MM3 ) /* x3 | x2 */
-
- MOVQ ( MM2, MM0 ) /* x1 | x0 */
- MOVQ ( MM3, MM4 ) /* x3 | x2 */
-
- MOVQ ( MM0, MM1 ) /* x1 | x0 */
- MOVQ ( MM4, MM5 ) /* x3 | x2 */
-
- PUNPCKLDQ ( MM0, MM0 ) /* x0 | x0 */
- PUNPCKHDQ ( MM1, MM1 ) /* x1 | x1 */
-
- PFMUL ( REGIND(ECX), MM0 ) /* x0*m1 | x0*m0 */
- PUNPCKLDQ ( MM3, MM3 ) /* x2 | x2 */
-
- PFMUL ( REGOFF(16, ECX), MM1 ) /* x1*m5 | x1*m4 */
- PUNPCKHDQ ( MM4, MM4 ) /* x3 | x3 */
-
- PFMUL ( MM6, MM2 ) /* x1*m6 | x0*m2 */
- PFADD ( MM0, MM1 ) /* x0*m1+x1*m5 | x0*m0+x1*m4 */
-
- PFMUL ( REGOFF(32, ECX), MM3 ) /* x2*m9 | x2*m8 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- PFMUL ( REGOFF(48, ECX), MM4 ) /* x3*m13 | x3*m12 */
- PFADD ( MM1, MM3 ) /* x0*m1+..+x2*m9 | x0*m0+...+x2*m8 */
-
- PFMUL ( MM7, MM5 ) /* x3*m14 | x2*m10 */
- PFADD ( MM3, MM4 ) /* r1 | r0 */
-
- PFACC ( MM2, MM5 ) /* x0*m2+x1*m6 | x2*m10+x3*m14 */
- MOVD ( REGOFF(12, EAX), MM0 ) /* | x3 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PFACC ( MM0, MM5 ) /* r3 | r2 */
-
- MOVQ ( MM4, REGOFF(-16, EDX) ) /* write r0, r1 */
- MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TP3R_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP3R_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points4_3d_no_rot )
-HIDDEN(_mesa_3dnow_transform_points4_3d_no_rot)
-GLNAME( _mesa_3dnow_transform_points4_3d_no_rot ):
-
- PUSH_L ( ESI )
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP3NRR_2 ) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
-
- MOVD ( REGOFF(40, ECX), MM2 ) /* | m22 */
- PUNPCKLDQ ( REGOFF(56, ECX), MM2 ) /* m32 | m22 */
-
- MOVQ ( REGOFF(48, ECX), MM1 ) /* m31 | m30 */
-
-ALIGNTEXT16
-LLBL( G3TP3NRR_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
- MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */
- MOVD ( REGOFF(12, EAX), MM7 ) /* | x3 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCH ( REGOFF(32, EAX) ) /* hopefully stride is zero */
-
- MOVQ ( MM5, MM6 ) /* x3 | x2 */
- PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
-
- PUNPCKHDQ ( MM6, MM6 ) /* x3 | x3 */
- PFMUL ( MM2, MM5 ) /* x3*m32 | x2*m22 */
-
- PFMUL ( MM1, MM6 ) /* x3*m31 | x3*m30 */
- PFACC ( MM7, MM5 ) /* x3 | x2*m22+x3*m32 */
-
- PFADD ( MM6, MM4 ) /* x1*m11+x3*m31 | x0*m00+x3*m30 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- MOVQ ( MM4, REGOFF(-16, EDX) ) /* write r0, r1 */
- MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TP3NRR_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP3NRR_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points4_2d )
-HIDDEN(_mesa_3dnow_transform_points4_2d)
-GLNAME( _mesa_3dnow_transform_points4_2d ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP2R_2 ) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(16, ECX), MM0 ) /* m10 | m00 */
-
- MOVD ( REGOFF(4, ECX), MM1 ) /* | m01 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM1 ) /* m11 | m01 */
-
- MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
-
-ALIGNTEXT16
-LLBL( G3TP2R_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVQ ( REGIND(EAX), MM3 ) /* x1 | x0 */
- MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCH ( REGIND(EAX) )
-
- MOVQ ( MM3, MM4 ) /* x1 | x0 */
- MOVQ ( MM5, MM6 ) /* x3 | x2 */
-
- PFMUL ( MM1, MM4 ) /* x1*m11 | x0*m01 */
- PUNPCKHDQ ( MM6, MM6 ) /* x3 | x3 */
-
- PFMUL ( MM0, MM3 ) /* x1*m10 | x0*m00 */
- ADD_L ( CONST(16), EDX ) /* next r */
-
- PFACC ( MM4, MM3 ) /* x0*m01+x1*m11 | x0*m00+x1*m10 */
- PFMUL ( MM2, MM6 ) /* x3*m31 | x3*m30 */
-
- PFADD ( MM6, MM3 ) /* r1 | r0 */
- MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */
-
- MOVQ ( MM3, REGOFF(-16, EDX) ) /* write r0, r1 */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TP2R_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP2R_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points4_2d_no_rot )
-HIDDEN(_mesa_3dnow_transform_points4_2d_no_rot)
-GLNAME( _mesa_3dnow_transform_points4_2d_no_rot ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TP2NRR_3 ) )
-
- MOVD ( REGIND(ECX), MM0 ) /* | m00 */
- PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
-
- MOVQ ( REGOFF(48, ECX), MM1 ) /* m31 | m30 */
-
-ALIGNTEXT16
-LLBL( G3TP2NRR_2 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
- MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCH ( REGIND(EAX) )
-
- PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
- MOVQ ( MM5, MM6 ) /* x3 | x2 */
-
- ADD_L ( CONST(16), EDX ) /* next r */
- PUNPCKHDQ ( MM6, MM6 ) /* x3 | x3 */
-
- PFMUL ( MM1, MM6 ) /* x3*m31 | x3*m30 */
- PFADD ( MM4, MM6 ) /* x1*m11+x3*m31 | x0*m00+x3*m30 */
-
- MOVQ ( MM6, REGOFF(-16, EDX) ) /* write r0, r1 */
- MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */
-
- DEC_L ( ESI ) /* decrement vertex counter */
-
- JNZ ( LLBL( G3TP2NRR_2 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TP2NRR_3 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_3dnow_transform_points4_identity )
-HIDDEN(_mesa_3dnow_transform_points4_identity)
-GLNAME( _mesa_3dnow_transform_points4_identity ):
-
- PUSH_L ( ESI )
-
- MOV_L ( ARG_DEST, ECX )
- MOV_L ( ARG_MATRIX, ESI )
- MOV_L ( ARG_SOURCE, EAX )
- MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
- OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
- MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
- MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
-
- PUSH_L ( EDI )
-
- MOV_L ( REGOFF(V4F_START, ECX), EDX )
- MOV_L ( ESI, ECX )
- MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
- MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
- MOV_L ( REGOFF(V4F_START, EAX), EAX )
-
- TEST_L ( ESI, ESI )
- JZ ( LLBL( G3TPIR_2 ) )
-
-ALIGNTEXT16
-LLBL( G3TPIR_1 ):
-
- PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
-
- MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
- MOVQ ( REGOFF(8, EAX), MM1 ) /* x3 | x2 */
-
- ADD_L ( EDI, EAX ) /* next vertex */
- PREFETCH ( REGIND(EAX) )
-
- ADD_L ( CONST(16), EDX ) /* next r */
- MOVQ ( MM0, REGOFF(-16, EDX) ) /* r1 | r0 */
-
- MOVQ ( MM1, REGOFF(-8, EDX) ) /* r3 | r2 */
-
- DEC_L ( ESI ) /* decrement vertex counter */
- JNZ ( LLBL( G3TPIR_1 ) ) /* cnt > 0 ? -> process next vertex */
-
-LLBL( G3TPIR_2 ):
-
- FEMMS
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#endif
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+#ifdef USE_3DNOW_ASM
+#include "assyntax.h"
+#include "matypes.h"
+#include "xform_args.h"
+
+ SEG_TEXT
+
+#define FRAME_OFFSET 4
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points4_general )
+HIDDEN(_mesa_3dnow_transform_points4_general)
+GLNAME( _mesa_3dnow_transform_points4_general ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPGR_2 ) )
+
+ PREFETCHW ( REGIND(EDX) )
+
+ALIGNTEXT16
+LLBL( G3TPGR_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
+ MOVQ ( REGOFF(8, EAX), MM4 ) /* x3 | x2 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCH ( REGIND(EAX) )
+
+ MOVQ ( MM0, MM2 ) /* x1 | x0 */
+ MOVQ ( MM4, MM6 ) /* x3 | x2 */
+
+ PUNPCKLDQ ( MM0, MM0 ) /* x0 | x0 */
+ PUNPCKHDQ ( MM2, MM2 ) /* x1 | x1 */
+
+ MOVQ ( MM0, MM1 ) /* x0 | x0 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ PFMUL ( REGIND(ECX), MM0 ) /* x0*m1 | x0*m0 */
+ MOVQ ( MM2, MM3 ) /* x1 | x1 */
+
+ PFMUL ( REGOFF(8, ECX), MM1 ) /* x0*m3 | x0*m2 */
+ PUNPCKLDQ ( MM4, MM4 ) /* x2 | x2 */
+
+ PFMUL ( REGOFF(16, ECX), MM2 ) /* x1*m5 | x1*m4 */
+ MOVQ ( MM4, MM5 ) /* x2 | x2 */
+
+ PFMUL ( REGOFF(24, ECX), MM3 ) /* x1*m7 | x1*m6 */
+ PUNPCKHDQ ( MM6, MM6 ) /* x3 | x3 */
+
+ PFMUL ( REGOFF(32, ECX), MM4 ) /* x2*m9 | x2*m8 */
+ MOVQ ( MM6, MM7 ) /* x3 | x3 */
+
+ PFMUL ( REGOFF(40, ECX), MM5 ) /* x2*m11 | x2*m10 */
+ PFADD ( MM0, MM2 )
+
+ PFMUL ( REGOFF(48, ECX), MM6 ) /* x3*m13 | x3*m12 */
+ PFADD ( MM1, MM3 )
+
+ PFMUL ( REGOFF(56, ECX), MM7 ) /* x3*m15 | x3*m14 */
+ PFADD ( MM4, MM6 )
+
+ PFADD ( MM5, MM7 )
+ PFADD ( MM2, MM6 )
+
+ PFADD ( MM3, MM7 )
+ MOVQ ( MM6, REGOFF(-16, EDX) )
+
+ MOVQ ( MM7, REGOFF(-8, EDX) )
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TPGR_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPGR_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points4_perspective )
+HIDDEN(_mesa_3dnow_transform_points4_perspective)
+GLNAME( _mesa_3dnow_transform_points4_perspective ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPPR_2 ) )
+
+ PREFETCH ( REGIND(EAX) )
+ PREFETCHW ( REGIND(EDX) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
+
+ MOVD ( REGOFF(40, ECX), MM1 ) /* | m22 */
+ PUNPCKLDQ ( REGOFF(56, ECX), MM1 ) /* m32 | m22 */
+
+ MOVQ ( REGOFF(32, ECX), MM2 ) /* m21 | m20 */
+ PXOR ( MM7, MM7 ) /* 0 | 0 */
+
+ALIGNTEXT16
+LLBL( G3TPPR_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
+ MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */
+ MOVD ( REGOFF(8, EAX), MM3 ) /* | x2 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCH ( REGOFF(32, EAX) ) /* hopefully stride is zero */
+
+ MOVQ ( MM5, MM6 ) /* x3 | x2 */
+ PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
+
+ PUNPCKLDQ ( MM5, MM5 ) /* x2 | x2 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ PFMUL ( MM2, MM5 ) /* x2*m21 | x2*m20 */
+ PFSUBR ( MM7, MM3 ) /* | -x2 */
+
+ PFMUL ( MM1, MM6 ) /* x3*m32 | x2*m22 */
+ PFADD ( MM4, MM5 ) /* x1*m11+x2*m21 | x0*m00+x2*m20 */
+
+ PFACC ( MM3, MM6 ) /* -x2 | x2*m22+x3*m32 */
+ MOVQ ( MM5, REGOFF(-16, EDX) ) /* write r0, r1 */
+
+ MOVQ ( MM6, REGOFF(-8, EDX) ) /* write r2, r3 */
+ DEC_L ( ESI ) /* decrement vertex counter */
+
+ JNZ ( LLBL( G3TPPR_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPPR_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points4_3d )
+HIDDEN(_mesa_3dnow_transform_points4_3d)
+GLNAME( _mesa_3dnow_transform_points4_3d ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP3R_2 ) )
+
+ MOVD ( REGOFF(8, ECX), MM6 ) /* | m2 */
+ PUNPCKLDQ ( REGOFF(24, ECX), MM6 ) /* m6 | m2 */
+
+ MOVD ( REGOFF(40, ECX), MM7 ) /* | m10 */
+ PUNPCKLDQ ( REGOFF(56, ECX), MM7 ) /* m14 | m10 */
+
+ALIGNTEXT16
+LLBL( G3TP3R_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+ PREFETCH ( REGOFF(32, EAX) ) /* hopefully array is tightly packed */
+
+ MOVQ ( REGIND(EAX), MM2 ) /* x1 | x0 */
+ MOVQ ( REGOFF(8, EAX), MM3 ) /* x3 | x2 */
+
+ MOVQ ( MM2, MM0 ) /* x1 | x0 */
+ MOVQ ( MM3, MM4 ) /* x3 | x2 */
+
+ MOVQ ( MM0, MM1 ) /* x1 | x0 */
+ MOVQ ( MM4, MM5 ) /* x3 | x2 */
+
+ PUNPCKLDQ ( MM0, MM0 ) /* x0 | x0 */
+ PUNPCKHDQ ( MM1, MM1 ) /* x1 | x1 */
+
+ PFMUL ( REGIND(ECX), MM0 ) /* x0*m1 | x0*m0 */
+ PUNPCKLDQ ( MM3, MM3 ) /* x2 | x2 */
+
+ PFMUL ( REGOFF(16, ECX), MM1 ) /* x1*m5 | x1*m4 */
+ PUNPCKHDQ ( MM4, MM4 ) /* x3 | x3 */
+
+ PFMUL ( MM6, MM2 ) /* x1*m6 | x0*m2 */
+ PFADD ( MM0, MM1 ) /* x0*m1+x1*m5 | x0*m0+x1*m4 */
+
+ PFMUL ( REGOFF(32, ECX), MM3 ) /* x2*m9 | x2*m8 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ PFMUL ( REGOFF(48, ECX), MM4 ) /* x3*m13 | x3*m12 */
+ PFADD ( MM1, MM3 ) /* x0*m1+..+x2*m9 | x0*m0+...+x2*m8 */
+
+ PFMUL ( MM7, MM5 ) /* x3*m14 | x2*m10 */
+ PFADD ( MM3, MM4 ) /* r1 | r0 */
+
+ PFACC ( MM2, MM5 ) /* x0*m2+x1*m6 | x2*m10+x3*m14 */
+ MOVD ( REGOFF(12, EAX), MM0 ) /* | x3 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PFACC ( MM0, MM5 ) /* r3 | r2 */
+
+ MOVQ ( MM4, REGOFF(-16, EDX) ) /* write r0, r1 */
+ MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TP3R_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP3R_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points4_3d_no_rot )
+HIDDEN(_mesa_3dnow_transform_points4_3d_no_rot)
+GLNAME( _mesa_3dnow_transform_points4_3d_no_rot ):
+
+ PUSH_L ( ESI )
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP3NRR_2 ) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
+
+ MOVD ( REGOFF(40, ECX), MM2 ) /* | m22 */
+ PUNPCKLDQ ( REGOFF(56, ECX), MM2 ) /* m32 | m22 */
+
+ MOVQ ( REGOFF(48, ECX), MM1 ) /* m31 | m30 */
+
+ALIGNTEXT16
+LLBL( G3TP3NRR_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
+ MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */
+ MOVD ( REGOFF(12, EAX), MM7 ) /* | x3 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCH ( REGOFF(32, EAX) ) /* hopefully stride is zero */
+
+ MOVQ ( MM5, MM6 ) /* x3 | x2 */
+ PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
+
+ PUNPCKHDQ ( MM6, MM6 ) /* x3 | x3 */
+ PFMUL ( MM2, MM5 ) /* x3*m32 | x2*m22 */
+
+ PFMUL ( MM1, MM6 ) /* x3*m31 | x3*m30 */
+ PFACC ( MM7, MM5 ) /* x3 | x2*m22+x3*m32 */
+
+ PFADD ( MM6, MM4 ) /* x1*m11+x3*m31 | x0*m00+x3*m30 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ MOVQ ( MM4, REGOFF(-16, EDX) ) /* write r0, r1 */
+ MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TP3NRR_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP3NRR_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points4_2d )
+HIDDEN(_mesa_3dnow_transform_points4_2d)
+GLNAME( _mesa_3dnow_transform_points4_2d ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP2R_2 ) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(16, ECX), MM0 ) /* m10 | m00 */
+
+ MOVD ( REGOFF(4, ECX), MM1 ) /* | m01 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM1 ) /* m11 | m01 */
+
+ MOVQ ( REGOFF(48, ECX), MM2 ) /* m31 | m30 */
+
+ALIGNTEXT16
+LLBL( G3TP2R_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVQ ( REGIND(EAX), MM3 ) /* x1 | x0 */
+ MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCH ( REGIND(EAX) )
+
+ MOVQ ( MM3, MM4 ) /* x1 | x0 */
+ MOVQ ( MM5, MM6 ) /* x3 | x2 */
+
+ PFMUL ( MM1, MM4 ) /* x1*m11 | x0*m01 */
+ PUNPCKHDQ ( MM6, MM6 ) /* x3 | x3 */
+
+ PFMUL ( MM0, MM3 ) /* x1*m10 | x0*m00 */
+ ADD_L ( CONST(16), EDX ) /* next r */
+
+ PFACC ( MM4, MM3 ) /* x0*m01+x1*m11 | x0*m00+x1*m10 */
+ PFMUL ( MM2, MM6 ) /* x3*m31 | x3*m30 */
+
+ PFADD ( MM6, MM3 ) /* r1 | r0 */
+ MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */
+
+ MOVQ ( MM3, REGOFF(-16, EDX) ) /* write r0, r1 */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TP2R_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP2R_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points4_2d_no_rot )
+HIDDEN(_mesa_3dnow_transform_points4_2d_no_rot)
+GLNAME( _mesa_3dnow_transform_points4_2d_no_rot ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TP2NRR_3 ) )
+
+ MOVD ( REGIND(ECX), MM0 ) /* | m00 */
+ PUNPCKLDQ ( REGOFF(20, ECX), MM0 ) /* m11 | m00 */
+
+ MOVQ ( REGOFF(48, ECX), MM1 ) /* m31 | m30 */
+
+ALIGNTEXT16
+LLBL( G3TP2NRR_2 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVQ ( REGIND(EAX), MM4 ) /* x1 | x0 */
+ MOVQ ( REGOFF(8, EAX), MM5 ) /* x3 | x2 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCH ( REGIND(EAX) )
+
+ PFMUL ( MM0, MM4 ) /* x1*m11 | x0*m00 */
+ MOVQ ( MM5, MM6 ) /* x3 | x2 */
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ PUNPCKHDQ ( MM6, MM6 ) /* x3 | x3 */
+
+ PFMUL ( MM1, MM6 ) /* x3*m31 | x3*m30 */
+ PFADD ( MM4, MM6 ) /* x1*m11+x3*m31 | x0*m00+x3*m30 */
+
+ MOVQ ( MM6, REGOFF(-16, EDX) ) /* write r0, r1 */
+ MOVQ ( MM5, REGOFF(-8, EDX) ) /* write r2, r3 */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+
+ JNZ ( LLBL( G3TP2NRR_2 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TP2NRR_3 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_3dnow_transform_points4_identity )
+HIDDEN(_mesa_3dnow_transform_points4_identity)
+GLNAME( _mesa_3dnow_transform_points4_identity ):
+
+ PUSH_L ( ESI )
+
+ MOV_L ( ARG_DEST, ECX )
+ MOV_L ( ARG_MATRIX, ESI )
+ MOV_L ( ARG_SOURCE, EAX )
+ MOV_L ( CONST(4), REGOFF(V4F_SIZE, ECX) )
+ OR_B ( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, ECX) )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), EDX )
+ MOV_L ( EDX, REGOFF(V4F_COUNT, ECX) )
+
+ PUSH_L ( EDI )
+
+ MOV_L ( REGOFF(V4F_START, ECX), EDX )
+ MOV_L ( ESI, ECX )
+ MOV_L ( REGOFF(V4F_COUNT, EAX), ESI )
+ MOV_L ( REGOFF(V4F_STRIDE, EAX), EDI )
+ MOV_L ( REGOFF(V4F_START, EAX), EAX )
+
+ TEST_L ( ESI, ESI )
+ JZ ( LLBL( G3TPIR_2 ) )
+
+ALIGNTEXT16
+LLBL( G3TPIR_1 ):
+
+ PREFETCHW ( REGOFF(32, EDX) ) /* prefetch 2 vertices ahead */
+
+ MOVQ ( REGIND(EAX), MM0 ) /* x1 | x0 */
+ MOVQ ( REGOFF(8, EAX), MM1 ) /* x3 | x2 */
+
+ ADD_L ( EDI, EAX ) /* next vertex */
+ PREFETCH ( REGIND(EAX) )
+
+ ADD_L ( CONST(16), EDX ) /* next r */
+ MOVQ ( MM0, REGOFF(-16, EDX) ) /* r1 | r0 */
+
+ MOVQ ( MM1, REGOFF(-8, EDX) ) /* r3 | r2 */
+
+ DEC_L ( ESI ) /* decrement vertex counter */
+ JNZ ( LLBL( G3TPIR_1 ) ) /* cnt > 0 ? -> process next vertex */
+
+LLBL( G3TPIR_2 ):
+
+ FEMMS
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#endif
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/Makefile b/mesalib/src/mesa/x86/Makefile
index 8cbe26015..9716dc27f 100644
--- a/mesalib/src/mesa/x86/Makefile
+++ b/mesalib/src/mesa/x86/Makefile
@@ -1,46 +1,46 @@
-# src/mesa/x86/Makefile
-
-TOP = ../../..
-include $(TOP)/configs/current
-
-
-INCLUDE_DIRS = \
- -I$(TOP)/include/GL \
- -I$(TOP)/include \
- -I$(TOP)/src/mapi \
- -I.. \
- -I../main \
- -I../math \
- -I../tnl
-
-
-default: gen_matypes matypes.h
-
-clean:
- -rm -f matypes.h gen_matypes
-
-
-gen_matypes: gen_matypes.c
- $(HOST_CC) $(ARCH_FLAGS) $(INCLUDE_DIRS) $(HOST_CFLAGS) gen_matypes.c -o gen_matypes
-
-# need some special rules here, unfortunately
-matypes.h: ../main/mtypes.h ../tnl/t_context.h gen_matypes
- ./gen_matypes > matypes.h
-
-common_x86_asm.o: matypes.h
-3dnow_normal.o: matypes.h
-3dnow_xform1.o: matypes.h
-3dnow_xform2.o: matypes.h
-3dnow_xform3.o: matypes.h
-3dnow_xform4.o: matypes.h
-mmx_blend.o: matypes.h
-sse_normal.o: matypes.h
-sse_xform1.o: matypes.h
-sse_xform2.o: matypes.h
-sse_xform3.o: matypes.h
-sse_xform4.o: matypes.h
-x86_cliptest.o: matypes.h
-x86_xform2.o: matypes.h
-x86_xform3.o: matypes.h
-x86_xform4.o: matypes.h
-
+# src/mesa/x86/Makefile
+
+TOP = ../../..
+include $(TOP)/configs/current
+
+
+INCLUDE_DIRS = \
+ -I$(TOP)/include/GL \
+ -I$(TOP)/include \
+ -I$(TOP)/src/mapi \
+ -I.. \
+ -I../main \
+ -I../math \
+ -I../tnl
+
+
+default: gen_matypes matypes.h
+
+clean:
+ -rm -f matypes.h gen_matypes
+
+
+gen_matypes: gen_matypes.c
+ $(HOST_CC) $(ARCH_FLAGS) $(INCLUDE_DIRS) $(HOST_CFLAGS) gen_matypes.c -o gen_matypes
+
+# need some special rules here, unfortunately
+matypes.h: ../main/mtypes.h ../tnl/t_context.h gen_matypes
+ ./gen_matypes > matypes.h
+
+common_x86_asm.o: matypes.h
+3dnow_normal.o: matypes.h
+3dnow_xform1.o: matypes.h
+3dnow_xform2.o: matypes.h
+3dnow_xform3.o: matypes.h
+3dnow_xform4.o: matypes.h
+mmx_blend.o: matypes.h
+sse_normal.o: matypes.h
+sse_xform1.o: matypes.h
+sse_xform2.o: matypes.h
+sse_xform3.o: matypes.h
+sse_xform4.o: matypes.h
+x86_cliptest.o: matypes.h
+x86_xform2.o: matypes.h
+x86_xform3.o: matypes.h
+x86_xform4.o: matypes.h
+
diff --git a/mesalib/src/mesa/x86/assyntax.h b/mesalib/src/mesa/x86/assyntax.h
index 1e3ea66e2..4a41812f6 100644
--- a/mesalib/src/mesa/x86/assyntax.h
+++ b/mesalib/src/mesa/x86/assyntax.h
@@ -1,1747 +1,1747 @@
-
-#ifndef __ASSYNTAX_H__
-#define __ASSYNTAX_H__
-
-/*
- * Copyright 1992 Vrije Universiteit, The Netherlands
- *
- * 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 of the Vrije Universiteit not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. The Vrije Universiteit makes no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * The Vrije Universiteit DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
- * IN NO EVENT SHALL The Vrije Universiteit 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.
- */
-
-/*
- * assyntax.h
- *
- * Select the syntax appropriate to the 386 assembler being used
- * To add support for more assemblers add more columns to the CHOICE
- * macro. Note that register names must also have uppercase names
- * to avoid macro recursion. e.g., #define ah %ah recurses!
- *
- * NB 1. Some of the macros for certain assemblers imply that the code is to
- * run in protected mode!! Caveat emptor.
- *
- * NB 2. 486 specific instructions are not included. This is to discourage
- * their accidental use in code that is intended to run on 386 and 486
- * systems.
- *
- * Supported assemblers:
- *
- * (a) AT&T SysVr4 as(1): define ATT_ASSEMBLER
- * (b) GNU Assembler gas: define GNU_ASSEMBLER (default)
- * (c) Amsterdam Compiler kit: define ACK_ASSEMBLER
- * (d) The Netwide Assembler: define NASM_ASSEMBLER
- * (e) Microsoft Assembler: define MASM_ASSEMBLER (UNTESTED!)
- *
- * The following naming conventions have been used to identify the various
- * data types:
- * _SR = segment register version
- * Integer:
- * _Q = quadword = 64 bits
- * _L = long = 32 bits
- * _W = short = 16 bits
- * _B = byte = 8 bits
- * Floating-point:
- * _X = m80real = 80 bits
- * _D = double = 64 bits
- * _S = single = 32 bits
- *
- * Author: Gregory J. Sharp, Sept 1992
- * Vrije Universiteit, Amsterdam, The Netherlands
- *
- * [support for Intel syntax added by Josh Vanderhoof, 1999]
- */
-
-#if !(defined(NASM_ASSEMBLER) || defined(MASM_ASSEMBLER))
-
-/* Default to ATT_ASSEMBLER when SVR4 or SYSV are defined */
-#if (defined(SVR4) || defined(SYSV)) && !defined(GNU_ASSEMBLER)
-#define ATT_ASSEMBLER
-#endif
-
-#if !defined(ATT_ASSEMBLER) && !defined(GNU_ASSEMBLER) && !defined(ACK_ASSEMBLER)
-#define GNU_ASSEMBLER
-#endif
-
-#if (defined(__STDC__) && !defined(UNIXCPP)) || (defined (sun) && defined (i386) && defined (SVR4) && defined (__STDC__) && !defined (__GNUC__))
-#define CONCAT(x, y) x ## y
-#define CONCAT3(x, y, z) x ## y ## z
-#else
-#define CONCAT(x, y) x/**/y
-#define CONCAT3(x, y, z) x/**/y/**/z
-#endif
-
-#ifdef ACK_ASSEMBLER
-
-/* Assume we write code for 32-bit protected mode! */
-
-/* Redefine register names for GAS & AT&T assemblers */
-#define AL al
-#define AH ah
-#define AX ax
-#define EAX ax
-#define BL bl
-#define BH bh
-#define BX bx
-#define EBX bx
-#define CL cl
-#define CH ch
-#define CX cx
-#define ECX cx
-#define DL dl
-#define DH dh
-#define DX dx
-#define EDX dx
-#define BP bp
-#define EBP bp
-#define SI si
-#define ESI si
-#define DI di
-#define EDI di
-#define SP sp
-#define ESP sp
-#define CS cs
-#define SS ss
-#define DS ds
-#define ES es
-#define FS fs
-#define GS gs
-/* Control Registers */
-#define CR0 cr0
-#define CR1 cr1
-#define CR2 cr2
-#define CR3 cr3
-/* Debug Registers */
-#define DR0 dr0
-#define DR1 dr1
-#define DR2 dr2
-#define DR3 dr3
-#define DR4 dr4
-#define DR5 dr5
-#define DR6 dr6
-#define DR7 dr7
-/* Floating-point Stack */
-#define ST st
-
-#define AS_BEGIN .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
-
-
-#define _WTOG o16 /* word toggle for _W instructions */
-#define _LTOG /* long toggle for _L instructions */
-#define ADDR_TOGGLE a16
-#define OPSZ_TOGGLE o16
-#define USE16 .use16
-#define USE32 .use32
-
-#define CHOICE(a,b,c) c
-
-#else /* AT&T or GAS */
-
-/* Redefine register names for GAS & AT&T assemblers */
-#define AL %al
-#define AH %ah
-#define AX %ax
-#define EAX %eax
-#define BL %bl
-#define BH %bh
-#define BX %bx
-#define EBX %ebx
-#define CL %cl
-#define CH %ch
-#define CX %cx
-#define ECX %ecx
-#define DL %dl
-#define DH %dh
-#define DX %dx
-#define EDX %edx
-#define BP %bp
-#define EBP %ebp
-#define SI %si
-#define ESI %esi
-#define DI %di
-#define EDI %edi
-#define SP %sp
-#define ESP %esp
-#define CS %cs
-#define SS %ss
-#define DS %ds
-#define ES %es
-#define FS %fs
-#define GS %gs
-/* Control Registers */
-#define CR0 %cr0
-#define CR1 %cr1
-#define CR2 %cr2
-#define CR3 %cr3
-/* Debug Registers */
-#define DR0 %db0
-#define DR1 %db1
-#define DR2 %db2
-#define DR3 %db3
-#define DR4 %db4
-#define DR5 %db5
-#define DR6 %db6
-#define DR7 %db7
-/* Floating-point Stack */
-#define _STX0 %st(0)
-#define _STX1 %st(1)
-#define _STX2 %st(2)
-#define _STX3 %st(3)
-#define _STX4 %st(4)
-#define _STX5 %st(5)
-#define _STX6 %st(6)
-#define _STX7 %st(7)
-#define ST(x) CONCAT(_STX,x)
-#ifdef GNU_ASSEMBLER
-#define ST0 %st(0)
-#else
-#define ST0 %st
-#endif
-/* MMX Registers */
-#define MM0 %mm0
-#define MM1 %mm1
-#define MM2 %mm2
-#define MM3 %mm3
-#define MM4 %mm4
-#define MM5 %mm5
-#define MM6 %mm6
-#define MM7 %mm7
-/* SSE Registers */
-#define XMM0 %xmm0
-#define XMM1 %xmm1
-#define XMM2 %xmm2
-#define XMM3 %xmm3
-#define XMM4 %xmm4
-#define XMM5 %xmm5
-#define XMM6 %xmm6
-#define XMM7 %xmm7
-
-#define AS_BEGIN
-#define USE16
-#define USE32
-
-#ifdef GNU_ASSEMBLER
-
-#define ADDR_TOGGLE aword
-#define OPSZ_TOGGLE word
-
-#define CHOICE(a,b,c) b
-
-#else
-/*
- * AT&T ASSEMBLER SYNTAX
- * *********************
- */
-#define CHOICE(a,b,c) a
-
-#define ADDR_TOGGLE addr16
-#define OPSZ_TOGGLE data16
-
-#endif /* GNU_ASSEMBLER */
-#endif /* ACK_ASSEMBLER */
-
-
-#if defined(__QNX__) || defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || defined(__ELF__) || defined(__GNU__) || defined(__GNUC__) && !defined(__DJGPP__) && !defined(__MINGW32__)
-#define GLNAME(a) a
-#else
-#define GLNAME(a) CONCAT(_,a)
-#endif
-
-
- /****************************************/
- /* */
- /* Select the various choices */
- /* */
- /****************************************/
-
-
-/* Redefine assembler directives */
-/*********************************/
-#define GLOBL CHOICE(.globl, .globl, .extern)
-#define GLOBAL GLOBL
-#define EXTERN GLOBL
-#ifndef __AOUT__
-#define ALIGNTEXT32 CHOICE(.align 32, .balign 32, .align 32)
-#define ALIGNTEXT16 CHOICE(.align 16, .balign 16, .align 16)
-#define ALIGNTEXT8 CHOICE(.align 8, .balign 8, .align 8)
-#define ALIGNTEXT4 CHOICE(.align 4, .balign 4, .align 4)
-#define ALIGNTEXT2 CHOICE(.align 2, .balign 2, .align 2)
-/* ALIGNTEXT4ifNOP is the same as ALIGNTEXT4, but only if the space is
- * guaranteed to be filled with NOPs. Otherwise it does nothing.
- */
-#define ALIGNTEXT32ifNOP CHOICE(.align 32, .balign ARG2(32,0x90), /*can't do it*/)
-#define ALIGNTEXT16ifNOP CHOICE(.align 16, .balign ARG2(16,0x90), /*can't do it*/)
-#define ALIGNTEXT8ifNOP CHOICE(.align 8, .balign ARG2(8,0x90), /*can't do it*/)
-#define ALIGNTEXT4ifNOP CHOICE(.align 4, .balign ARG2(4,0x90), /*can't do it*/)
-#define ALIGNDATA32 CHOICE(.align 32, .balign ARG2(32,0x0), .align 32)
-#define ALIGNDATA16 CHOICE(.align 16, .balign ARG2(16,0x0), .align 16)
-#define ALIGNDATA8 CHOICE(.align 8, .balign ARG2(8,0x0), .align 8)
-#define ALIGNDATA4 CHOICE(.align 4, .balign ARG2(4,0x0), .align 4)
-#define ALIGNDATA2 CHOICE(.align 2, .balign ARG2(2,0x0), .align 2)
-#else
-/* 'as -aout' on FreeBSD doesn't have .balign */
-#define ALIGNTEXT32 CHOICE(.align 32, .align ARG2(5,0x90), .align 32)
-#define ALIGNTEXT16 CHOICE(.align 16, .align ARG2(4,0x90), .align 16)
-#define ALIGNTEXT8 CHOICE(.align 8, .align ARG2(3,0x90), .align 8)
-#define ALIGNTEXT4 CHOICE(.align 4, .align ARG2(2,0x90), .align 4)
-#define ALIGNTEXT2 CHOICE(.align 2, .align ARG2(1,0x90), .align 2)
-/* ALIGNTEXT4ifNOP is the same as ALIGNTEXT4, but only if the space is
- * guaranteed to be filled with NOPs. Otherwise it does nothing.
- */
-#define ALIGNTEXT32ifNOP CHOICE(.align 32, .align ARG2(5,0x90), /*can't do it*/)
-#define ALIGNTEXT16ifNOP CHOICE(.align 16, .align ARG2(4,0x90), /*can't do it*/)
-#define ALIGNTEXT8ifNOP CHOICE(.align 8, .align ARG2(3,0x90), /*can't do it*/)
-#define ALIGNTEXT4ifNOP CHOICE(.align 4, .align ARG2(2,0x90), /*can't do it*/)
-#define ALIGNDATA32 CHOICE(.align 32, .align ARG2(5,0x0), .align 32)
-#define ALIGNDATA16 CHOICE(.align 16, .align ARG2(4,0x0), .align 16)
-#define ALIGNDATA8 CHOICE(.align 8, .align ARG2(3,0x0), .align 8)
-#define ALIGNDATA4 CHOICE(.align 4, .align ARG2(2,0x0), .align 4)
-#define ALIGNDATA2 CHOICE(.align 2, .align ARG2(1,0x0), .align 2)
-#endif /* __AOUT__ */
-#define FILE(s) CHOICE(.file s, .file s, .file s)
-#define STRING(s) CHOICE(.string s, .asciz s, .asciz s)
-#define D_LONG CHOICE(.long, .long, .data4)
-#define D_WORD CHOICE(.value, .short, .data2)
-#define D_BYTE CHOICE(.byte, .byte, .data1)
-#define SPACE CHOICE(.comm, .space, .space)
-#define COMM CHOICE(.comm, .comm, .comm)
-#define SEG_DATA CHOICE(.data, .data, .sect .data)
-#define SEG_TEXT CHOICE(.text, .text, .sect .text)
-#define SEG_BSS CHOICE(.bss, .bss, .sect .bss)
-
-#ifdef GNU_ASSEMBLER
-#define D_SPACE(n) . = . + n
-#else
-#define D_SPACE(n) .space n
-#endif
-
-/* Addressing Modes */
-/* Immediate Mode */
-#define ADDR(a) CHOICE(CONCAT($,a), $a, a)
-#define CONST(a) CHOICE(CONCAT($,a), $a, a)
-
-/* Indirect Mode */
-#define CONTENT(a) CHOICE(a, a, (a)) /* take contents of variable */
-#define REGIND(a) CHOICE((a), (a), (a)) /* Register a indirect */
-/* Register b indirect plus displacement a */
-#define REGOFF(a, b) CHOICE(a(b), a(b), a(b))
-/* Reg indirect Base + Index + Displacement - this is mainly for 16-bit mode
- * which has no scaling
- */
-#define REGBID(b,i,d) CHOICE(d(b,i), d(b,i), d(b)(i))
-/* Reg indirect Base + (Index * Scale) */
-#define REGBIS(b,i,s) CHOICE((b,i,s), (b,i,s), (b)(i*s))
-/* Reg indirect Base + (Index * Scale) + Displacement */
-#define REGBISD(b,i,s,d) CHOICE(d(b,i,s), d(b,i,s), d(b)(i*s))
-/* Displaced Scaled Index: */
-#define REGDIS(d,i,s) CHOICE(d(,i,s), d(,i,s), d(i * s))
-/* Indexed Base: */
-#define REGBI(b,i) CHOICE((b,i), (b,i), (b)(i))
-/* Displaced Base: */
-#define REGDB(d,b) CHOICE(d(b), d(b), d(b))
-/* Variable indirect: */
-#define VARINDIRECT(var) CHOICE(*var, *var, (var))
-/* Use register contents as jump/call target: */
-#define CODEPTR(reg) CHOICE(*reg, *reg, reg)
-
-/* For expressions requiring bracketing
- * eg. (CRT0_PM | CRT_EM)
- */
-
-#define EXPR(a) CHOICE([a], (a), [a])
-#define ENOT(a) CHOICE(0!a, ~a, ~a)
-#define EMUL(a,b) CHOICE(a\*b, a*b, a*b)
-#define EDIV(a,b) CHOICE(a\/b, a/b, a/b)
-
-/*
- * We have to beat the problem of commas within arguments to choice.
- * eg. choice (add a,b, add b,a) will get argument mismatch. Luckily ANSI
- * and other known cpp definitions evaluate arguments before substitution
- * so the following works.
- */
-#define ARG2(a, b) a,b
-#define ARG3(a,b,c) a,b,c
-
-/* Redefine assembler commands */
-#define AAA CHOICE(aaa, aaa, aaa)
-#define AAD CHOICE(aad, aad, aad)
-#define AAM CHOICE(aam, aam, aam)
-#define AAS CHOICE(aas, aas, aas)
-#define ADC_L(a, b) CHOICE(adcl ARG2(a,b), adcl ARG2(a,b), _LTOG adc ARG2(b,a))
-#define ADC_W(a, b) CHOICE(adcw ARG2(a,b), adcw ARG2(a,b), _WTOG adc ARG2(b,a))
-#define ADC_B(a, b) CHOICE(adcb ARG2(a,b), adcb ARG2(a,b), adcb ARG2(b,a))
-#define ADD_L(a, b) CHOICE(addl ARG2(a,b), addl ARG2(a,b), _LTOG add ARG2(b,a))
-#define ADD_W(a, b) CHOICE(addw ARG2(a,b), addw ARG2(a,b), _WTOG add ARG2(b,a))
-#define ADD_B(a, b) CHOICE(addb ARG2(a,b), addb ARG2(a,b), addb ARG2(b,a))
-#define AND_L(a, b) CHOICE(andl ARG2(a,b), andl ARG2(a,b), _LTOG and ARG2(b,a))
-#define AND_W(a, b) CHOICE(andw ARG2(a,b), andw ARG2(a,b), _WTOG and ARG2(b,a))
-#define AND_B(a, b) CHOICE(andb ARG2(a,b), andb ARG2(a,b), andb ARG2(b,a))
-#define ARPL(a,b) CHOICE(arpl ARG2(a,b), arpl ARG2(a,b), arpl ARG2(b,a))
-#define BOUND_L(a, b) CHOICE(boundl ARG2(a,b), boundl ARG2(b,a), _LTOG bound ARG2(b,a))
-#define BOUND_W(a, b) CHOICE(boundw ARG2(a,b), boundw ARG2(b,a), _WTOG bound ARG2(b,a))
-#define BSF_L(a, b) CHOICE(bsfl ARG2(a,b), bsfl ARG2(a,b), _LTOG bsf ARG2(b,a))
-#define BSF_W(a, b) CHOICE(bsfw ARG2(a,b), bsfw ARG2(a,b), _WTOG bsf ARG2(b,a))
-#define BSR_L(a, b) CHOICE(bsrl ARG2(a,b), bsrl ARG2(a,b), _LTOG bsr ARG2(b,a))
-#define BSR_W(a, b) CHOICE(bsrw ARG2(a,b), bsrw ARG2(a,b), _WTOG bsr ARG2(b,a))
-#define BT_L(a, b) CHOICE(btl ARG2(a,b), btl ARG2(a,b), _LTOG bt ARG2(b,a))
-#define BT_W(a, b) CHOICE(btw ARG2(a,b), btw ARG2(a,b), _WTOG bt ARG2(b,a))
-#define BTC_L(a, b) CHOICE(btcl ARG2(a,b), btcl ARG2(a,b), _LTOG btc ARG2(b,a))
-#define BTC_W(a, b) CHOICE(btcw ARG2(a,b), btcw ARG2(a,b), _WTOG btc ARG2(b,a))
-#define BTR_L(a, b) CHOICE(btrl ARG2(a,b), btrl ARG2(a,b), _LTOG btr ARG2(b,a))
-#define BTR_W(a, b) CHOICE(btrw ARG2(a,b), btrw ARG2(a,b), _WTOG btr ARG2(b,a))
-#define BTS_L(a, b) CHOICE(btsl ARG2(a,b), btsl ARG2(a,b), _LTOG bts ARG2(b,a))
-#define BTS_W(a, b) CHOICE(btsw ARG2(a,b), btsw ARG2(a,b), _WTOG bts ARG2(b,a))
-#define CALL(a) CHOICE(call a, call a, call a)
-#define CALLF(s,a) CHOICE(lcall ARG2(s,a), lcall ARG2(s,a), callf s:a)
-#define CBW CHOICE(cbtw, cbw, cbw)
-#define CWDE CHOICE(cwtd, cwde, cwde)
-#define CLC CHOICE(clc, clc, clc)
-#define CLD CHOICE(cld, cld, cld)
-#define CLI CHOICE(cli, cli, cli)
-#define CLTS CHOICE(clts, clts, clts)
-#define CMC CHOICE(cmc, cmc, cmc)
-#define CMP_L(a, b) CHOICE(cmpl ARG2(a,b), cmpl ARG2(a,b), _LTOG cmp ARG2(b,a))
-#define CMP_W(a, b) CHOICE(cmpw ARG2(a,b), cmpw ARG2(a,b), _WTOG cmp ARG2(b,a))
-#define CMP_B(a, b) CHOICE(cmpb ARG2(a,b), cmpb ARG2(a,b), cmpb ARG2(b,a))
-#define CMPS_L CHOICE(cmpsl, cmpsl, _LTOG cmps)
-#define CMPS_W CHOICE(cmpsw, cmpsw, _WTOG cmps)
-#define CMPS_B CHOICE(cmpsb, cmpsb, cmpsb)
-#define CWD CHOICE(cwtl, cwd, cwd)
-#define CDQ CHOICE(cltd, cdq, cdq)
-#define DAA CHOICE(daa, daa, daa)
-#define DAS CHOICE(das, das, das)
-#define DEC_L(a) CHOICE(decl a, decl a, _LTOG dec a)
-#define DEC_W(a) CHOICE(decw a, decw a, _WTOG dec a)
-#define DEC_B(a) CHOICE(decb a, decb a, decb a)
-#define DIV_L(a) CHOICE(divl a, divl a, div a)
-#define DIV_W(a) CHOICE(divw a, divw a, div a)
-#define DIV_B(a) CHOICE(divb a, divb a, divb a)
-#define ENTER(a,b) CHOICE(enter ARG2(a,b), enter ARG2(a,b), enter ARG2(b,a))
-#define HLT CHOICE(hlt, hlt, hlt)
-#define IDIV_L(a) CHOICE(idivl a, idivl a, _LTOG idiv a)
-#define IDIV_W(a) CHOICE(idivw a, idivw a, _WTOG idiv a)
-#define IDIV_B(a) CHOICE(idivb a, idivb a, idivb a)
-/* More forms than this for imul!! */
-#define IMUL_L(a, b) CHOICE(imull ARG2(a,b), imull ARG2(a,b), _LTOG imul ARG2(b,a))
-#define IMUL_W(a, b) CHOICE(imulw ARG2(a,b), imulw ARG2(a,b), _WTOG imul ARG2(b,a))
-#define IMUL_B(a) CHOICE(imulb a, imulb a, imulb a)
-#define IN_L CHOICE(inl (DX), inl ARG2(DX,EAX), _LTOG in DX)
-#define IN_W CHOICE(inw (DX), inw ARG2(DX,AX), _WTOG in DX)
-#define IN_B CHOICE(inb (DX), inb ARG2(DX,AL), inb DX)
-/* Please AS code writer: use the following ONLY, if you refer to ports<256
- * directly, but not in IN1_W(DX), for instance, even if IN1_ looks nicer
- */
-#if defined (sun)
-#define IN1_L(a) CHOICE(inl (a), inl ARG2(a,EAX), _LTOG in a)
-#define IN1_W(a) CHOICE(inw (a), inw ARG2(a,AX), _WTOG in a)
-#define IN1_B(a) CHOICE(inb (a), inb ARG2(a,AL), inb a)
-#else
-#define IN1_L(a) CHOICE(inl a, inl ARG2(a,EAX), _LTOG in a)
-#define IN1_W(a) CHOICE(inw a, inw ARG2(a,AX), _WTOG in a)
-#define IN1_B(a) CHOICE(inb a, inb ARG2(a,AL), inb a)
-#endif
-#define INC_L(a) CHOICE(incl a, incl a, _LTOG inc a)
-#define INC_W(a) CHOICE(incw a, incw a, _WTOG inc a)
-#define INC_B(a) CHOICE(incb a, incb a, incb a)
-#define INS_L CHOICE(insl, insl, _LTOG ins)
-#define INS_W CHOICE(insw, insw, _WTOG ins)
-#define INS_B CHOICE(insb, insb, insb)
-#define INT(a) CHOICE(int a, int a, int a)
-#define INT3 CHOICE(int CONST(3), int3, int CONST(3))
-#define INTO CHOICE(into, into, into)
-#define IRET CHOICE(iret, iret, iret)
-#define IRETD CHOICE(iret, iret, iretd)
-#define JA(a) CHOICE(ja a, ja a, ja a)
-#define JAE(a) CHOICE(jae a, jae a, jae a)
-#define JB(a) CHOICE(jb a, jb a, jb a)
-#define JBE(a) CHOICE(jbe a, jbe a, jbe a)
-#define JC(a) CHOICE(jc a, jc a, jc a)
-#define JE(a) CHOICE(je a, je a, je a)
-#define JG(a) CHOICE(jg a, jg a, jg a)
-#define JGE(a) CHOICE(jge a, jge a, jge a)
-#define JL(a) CHOICE(jl a, jl a, jl a)
-#define JLE(a) CHOICE(jle a, jle a, jle a)
-#define JNA(a) CHOICE(jna a, jna a, jna a)
-#define JNAE(a) CHOICE(jnae a, jnae a, jnae a)
-#define JNB(a) CHOICE(jnb a, jnb a, jnb a)
-#define JNBE(a) CHOICE(jnbe a, jnbe a, jnbe a)
-#define JNC(a) CHOICE(jnc a, jnc a, jnc a)
-#define JNE(a) CHOICE(jne a, jne a, jne a)
-#define JNG(a) CHOICE(jng a, jng a, jng a)
-#define JNGE(a) CHOICE(jnge a, jnge a, jnge a)
-#define JNL(a) CHOICE(jnl a, jnl a, jnl a)
-#define JNLE(a) CHOICE(jnle a, jnle a, jnle a)
-#define JNO(a) CHOICE(jno a, jno a, jno a)
-#define JNP(a) CHOICE(jnp a, jnp a, jnp a)
-#define JNS(a) CHOICE(jns a, jns a, jns a)
-#define JNZ(a) CHOICE(jnz a, jnz a, jnz a)
-#define JO(a) CHOICE(jo a, jo a, jo a)
-#define JP(a) CHOICE(jp a, jp a, jp a)
-#define JPE(a) CHOICE(jpe a, jpe a, jpe a)
-#define JPO(a) CHOICE(jpo a, jpo a, jpo a)
-#define JS(a) CHOICE(js a, js a, js a)
-#define JZ(a) CHOICE(jz a, jz a, jz a)
-#define JMP(a) CHOICE(jmp a, jmp a, jmp a)
-#define JMPF(s,a) CHOICE(ljmp ARG2(s,a), ljmp ARG2(s,a), jmpf s:a)
-#define LAHF CHOICE(lahf, lahf, lahf)
-#if !defined(_REAL_MODE) && !defined(_V86_MODE)
-#define LAR(a, b) CHOICE(lar ARG2(a, b), lar ARG2(a, b), lar ARG2(b, a))
-#endif
-#define LEA_L(a, b) CHOICE(leal ARG2(a,b), leal ARG2(a,b), _LTOG lea ARG2(b,a))
-#define LEA_W(a, b) CHOICE(leaw ARG2(a,b), leaw ARG2(a,b), _WTOG lea ARG2(b,a))
-#define LEAVE CHOICE(leave, leave, leave)
-#define LGDT(a) CHOICE(lgdt a, lgdt a, lgdt a)
-#define LIDT(a) CHOICE(lidt a, lidt a, lidt a)
-#define LDS(a, b) CHOICE(ldsl ARG2(a,b), lds ARG2(a,b), lds ARG2(b,a))
-#define LES(a, b) CHOICE(lesl ARG2(a,b), les ARG2(a,b), les ARG2(b,a))
-#define LFS(a, b) CHOICE(lfsl ARG2(a,b), lfs ARG2(a,b), lfs ARG2(b,a))
-#define LGS(a, b) CHOICE(lgsl ARG2(a,b), lgs ARG2(a,b), lgs ARG2(b,a))
-#define LSS(a, b) CHOICE(lssl ARG2(a,b), lss ARG2(a,b), lss ARG2(b,a))
-#define LLDT(a) CHOICE(lldt a, lldt a, lldt a)
-#define LMSW(a) CHOICE(lmsw a, lmsw a, lmsw a)
-#define LOCK CHOICE(lock, lock, lock)
-#define LODS_L CHOICE(lodsl, lodsl, _LTOG lods)
-#define LODS_W CHOICE(lodsw, lodsw, _WTOG lods)
-#define LODS_B CHOICE(lodsb, lodsb, lodsb)
-#define LOOP(a) CHOICE(loop a, loop a, loop a)
-#define LOOPE(a) CHOICE(loope a, loope a, loope a)
-#define LOOPZ(a) CHOICE(loopz a, loopz a, loopz a)
-#define LOOPNE(a) CHOICE(loopne a, loopne a, loopne a)
-#define LOOPNZ(a) CHOICE(loopnz a, loopnz a, loopnz a)
-#if !defined(_REAL_MODE) && !defined(_V86_MODE)
-#define LSL(a, b) CHOICE(lsl ARG2(a,b), lsl ARG2(a,b), lsl ARG2(b,a))
-#endif
-#define LTR(a) CHOICE(ltr a, ltr a, ltr a)
-#define MOV_SR(a, b) CHOICE(movw ARG2(a,b), mov ARG2(a,b), mov ARG2(b,a))
-#define MOV_L(a, b) CHOICE(movl ARG2(a,b), movl ARG2(a,b), _LTOG mov ARG2(b,a))
-#define MOV_W(a, b) CHOICE(movw ARG2(a,b), movw ARG2(a,b), _WTOG mov ARG2(b,a))
-#define MOV_B(a, b) CHOICE(movb ARG2(a,b), movb ARG2(a,b), movb ARG2(b,a))
-#define MOVS_L CHOICE(movsl, movsl, _LTOG movs)
-#define MOVS_W CHOICE(movsw, movsw, _WTOG movs)
-#define MOVS_B CHOICE(movsb, movsb, movsb)
-#define MOVSX_BL(a, b) CHOICE(movsbl ARG2(a,b), movsbl ARG2(a,b), movsx ARG2(b,a))
-#define MOVSX_BW(a, b) CHOICE(movsbw ARG2(a,b), movsbw ARG2(a,b), movsx ARG2(b,a))
-#define MOVSX_WL(a, b) CHOICE(movswl ARG2(a,b), movswl ARG2(a,b), movsx ARG2(b,a))
-#define MOVZX_BL(a, b) CHOICE(movzbl ARG2(a,b), movzbl ARG2(a,b), movzx ARG2(b,a))
-#define MOVZX_BW(a, b) CHOICE(movzbw ARG2(a,b), movzbw ARG2(a,b), movzx ARG2(b,a))
-#define MOVZX_WL(a, b) CHOICE(movzwl ARG2(a,b), movzwl ARG2(a,b), movzx ARG2(b,a))
-#define MUL_L(a) CHOICE(mull a, mull a, _LTOG mul a)
-#define MUL_W(a) CHOICE(mulw a, mulw a, _WTOG mul a)
-#define MUL_B(a) CHOICE(mulb a, mulb a, mulb a)
-#define NEG_L(a) CHOICE(negl a, negl a, _LTOG neg a)
-#define NEG_W(a) CHOICE(negw a, negw a, _WTOG neg a)
-#define NEG_B(a) CHOICE(negb a, negb a, negb a)
-#define NOP CHOICE(nop, nop, nop)
-#define NOT_L(a) CHOICE(notl a, notl a, _LTOG not a)
-#define NOT_W(a) CHOICE(notw a, notw a, _WTOG not a)
-#define NOT_B(a) CHOICE(notb a, notb a, notb a)
-#define OR_L(a,b) CHOICE(orl ARG2(a,b), orl ARG2(a,b), _LTOG or ARG2(b,a))
-#define OR_W(a,b) CHOICE(orw ARG2(a,b), orw ARG2(a,b), _WTOG or ARG2(b,a))
-#define OR_B(a,b) CHOICE(orb ARG2(a,b), orb ARG2(a,b), orb ARG2(b,a))
-#define OUT_L CHOICE(outl (DX), outl ARG2(EAX,DX), _LTOG out DX)
-#define OUT_W CHOICE(outw (DX), outw ARG2(AX,DX), _WTOG out DX)
-#define OUT_B CHOICE(outb (DX), outb ARG2(AL,DX), outb DX)
-/* Please AS code writer: use the following ONLY, if you refer to ports<256
- * directly, but not in OUT1_W(DX), for instance, even if OUT1_ looks nicer
- */
-#define OUT1_L(a) CHOICE(outl (a), outl ARG2(EAX,a), _LTOG out a)
-#define OUT1_W(a) CHOICE(outw (a), outw ARG2(AX,a), _WTOG out a)
-#define OUT1_B(a) CHOICE(outb (a), outb ARG2(AL,a), outb a)
-#define OUTS_L CHOICE(outsl, outsl, _LTOG outs)
-#define OUTS_W CHOICE(outsw, outsw, _WTOG outs)
-#define OUTS_B CHOICE(outsb, outsb, outsb)
-#define POP_SR(a) CHOICE(pop a, pop a, pop a)
-#define POP_L(a) CHOICE(popl a, popl a, _LTOG pop a)
-#define POP_W(a) CHOICE(popw a, popw a, _WTOG pop a)
-#define POPA_L CHOICE(popal, popal, _LTOG popa)
-#define POPA_W CHOICE(popaw, popaw, _WTOG popa)
-#define POPF_L CHOICE(popfl, popfl, _LTOG popf)
-#define POPF_W CHOICE(popfw, popfw, _WTOG popf)
-#define PUSH_SR(a) CHOICE(push a, push a, push a)
-#define PUSH_L(a) CHOICE(pushl a, pushl a, _LTOG push a)
-#define PUSH_W(a) CHOICE(pushw a, pushw a, _WTOG push a)
-#define PUSH_B(a) CHOICE(push a, pushb a, push a)
-#define PUSHA_L CHOICE(pushal, pushal, _LTOG pusha)
-#define PUSHA_W CHOICE(pushaw, pushaw, _WTOG pusha)
-#define PUSHF_L CHOICE(pushfl, pushfl, _LTOG pushf)
-#define PUSHF_W CHOICE(pushfw, pushfw, _WTOG pushf)
-#define RCL_L(a, b) CHOICE(rcll ARG2(a,b), rcll ARG2(a,b), _LTOG rcl ARG2(b,a))
-#define RCL_W(a, b) CHOICE(rclw ARG2(a,b), rclw ARG2(a,b), _WTOG rcl ARG2(b,a))
-#define RCL_B(a, b) CHOICE(rclb ARG2(a,b), rclb ARG2(a,b), rclb ARG2(b,a))
-#define RCR_L(a, b) CHOICE(rcrl ARG2(a,b), rcrl ARG2(a,b), _LTOG rcr ARG2(b,a))
-#define RCR_W(a, b) CHOICE(rcrw ARG2(a,b), rcrw ARG2(a,b), _WTOG rcr ARG2(b,a))
-#define RCR_B(a, b) CHOICE(rcrb ARG2(a,b), rcrb ARG2(a,b), rcrb ARG2(b,a))
-#define ROL_L(a, b) CHOICE(roll ARG2(a,b), roll ARG2(a,b), _LTOG rol ARG2(b,a))
-#define ROL_W(a, b) CHOICE(rolw ARG2(a,b), rolw ARG2(a,b), _WTOG rol ARG2(b,a))
-#define ROL_B(a, b) CHOICE(rolb ARG2(a,b), rolb ARG2(a,b), rolb ARG2(b,a))
-#define ROR_L(a, b) CHOICE(rorl ARG2(a,b), rorl ARG2(a,b), _LTOG ror ARG2(b,a))
-#define ROR_W(a, b) CHOICE(rorw ARG2(a,b), rorw ARG2(a,b), _WTOG ror ARG2(b,a))
-#define ROR_B(a, b) CHOICE(rorb ARG2(a,b), rorb ARG2(a,b), rorb ARG2(b,a))
-#define REP CHOICE(rep ;, rep ;, repe)
-#define REPE CHOICE(repz ;, repe ;, repe)
-#define REPNE CHOICE(repnz ;, repne ;, repne)
-#define REPNZ REPNE
-#define REPZ REPE
-#define RET CHOICE(ret, ret, ret)
-#define SAHF CHOICE(sahf, sahf, sahf)
-#define SAL_L(a, b) CHOICE(sall ARG2(a,b), sall ARG2(a,b), _LTOG sal ARG2(b,a))
-#define SAL_W(a, b) CHOICE(salw ARG2(a,b), salw ARG2(a,b), _WTOG sal ARG2(b,a))
-#define SAL_B(a, b) CHOICE(salb ARG2(a,b), salb ARG2(a,b), salb ARG2(b,a))
-#define SAR_L(a, b) CHOICE(sarl ARG2(a,b), sarl ARG2(a,b), _LTOG sar ARG2(b,a))
-#define SAR_W(a, b) CHOICE(sarw ARG2(a,b), sarw ARG2(a,b), _WTOG sar ARG2(b,a))
-#define SAR_B(a, b) CHOICE(sarb ARG2(a,b), sarb ARG2(a,b), sarb ARG2(b,a))
-#define SBB_L(a, b) CHOICE(sbbl ARG2(a,b), sbbl ARG2(a,b), _LTOG sbb ARG2(b,a))
-#define SBB_W(a, b) CHOICE(sbbw ARG2(a,b), sbbw ARG2(a,b), _WTOG sbb ARG2(b,a))
-#define SBB_B(a, b) CHOICE(sbbb ARG2(a,b), sbbb ARG2(a,b), sbbb ARG2(b,a))
-#define SCAS_L CHOICE(scasl, scasl, _LTOG scas)
-#define SCAS_W CHOICE(scasw, scasw, _WTOG scas)
-#define SCAS_B CHOICE(scasb, scasb, scasb)
-#define SETA(a) CHOICE(seta a, seta a, seta a)
-#define SETAE(a) CHOICE(setae a, setae a, setae a)
-#define SETB(a) CHOICE(setb a, setb a, setb a)
-#define SETBE(a) CHOICE(setbe a, setbe a, setbe a)
-#define SETC(a) CHOICE(setc a, setb a, setb a)
-#define SETE(a) CHOICE(sete a, sete a, sete a)
-#define SETG(a) CHOICE(setg a, setg a, setg a)
-#define SETGE(a) CHOICE(setge a, setge a, setge a)
-#define SETL(a) CHOICE(setl a, setl a, setl a)
-#define SETLE(a) CHOICE(setle a, setle a, setle a)
-#define SETNA(a) CHOICE(setna a, setna a, setna a)
-#define SETNAE(a) CHOICE(setnae a, setnae a, setnae a)
-#define SETNB(a) CHOICE(setnb a, setnb a, setnb a)
-#define SETNBE(a) CHOICE(setnbe a, setnbe a, setnbe a)
-#define SETNC(a) CHOICE(setnc a, setnb a, setnb a)
-#define SETNE(a) CHOICE(setne a, setne a, setne a)
-#define SETNG(a) CHOICE(setng a, setng a, setng a)
-#define SETNGE(a) CHOICE(setnge a, setnge a, setnge a)
-#define SETNL(a) CHOICE(setnl a, setnl a, setnl a)
-#define SETNLE(a) CHOICE(setnle a, setnle a, setnle a)
-#define SETNO(a) CHOICE(setno a, setno a, setno a)
-#define SETNP(a) CHOICE(setnp a, setnp a, setnp a)
-#define SETNS(a) CHOICE(setns a, setns a, setna a)
-#define SETNZ(a) CHOICE(setnz a, setnz a, setnz a)
-#define SETO(a) CHOICE(seto a, seto a, seto a)
-#define SETP(a) CHOICE(setp a, setp a, setp a)
-#define SETPE(a) CHOICE(setpe a, setpe a, setpe a)
-#define SETPO(a) CHOICE(setpo a, setpo a, setpo a)
-#define SETS(a) CHOICE(sets a, sets a, seta a)
-#define SETZ(a) CHOICE(setz a, setz a, setz a)
-#define SGDT(a) CHOICE(sgdt a, sgdt a, sgdt a)
-#define SIDT(a) CHOICE(sidt a, sidt a, sidt a)
-#define SHL_L(a, b) CHOICE(shll ARG2(a,b), shll ARG2(a,b), _LTOG shl ARG2(b,a))
-#define SHL_W(a, b) CHOICE(shlw ARG2(a,b), shlw ARG2(a,b), _WTOG shl ARG2(b,a))
-#define SHL_B(a, b) CHOICE(shlb ARG2(a,b), shlb ARG2(a,b), shlb ARG2(b,a))
-#define SHLD_L(a,b,c) CHOICE(shldl ARG3(a,b,c), shldl ARG3(a,b,c), _LTOG shld ARG3(c,b,a))
-#define SHLD2_L(a,b) CHOICE(shldl ARG2(a,b), shldl ARG3(CL,a,b), _LTOG shld ARG3(b,a,CL))
-#define SHLD_W(a,b,c) CHOICE(shldw ARG3(a,b,c), shldw ARG3(a,b,c), _WTOG shld ARG3(c,b,a))
-#define SHLD2_W(a,b) CHOICE(shldw ARG2(a,b), shldw ARG3(CL,a,b), _WTOG shld ARG3(b,a,CL))
-#define SHR_L(a, b) CHOICE(shrl ARG2(a,b), shrl ARG2(a,b), _LTOG shr ARG2(b,a))
-#define SHR_W(a, b) CHOICE(shrw ARG2(a,b), shrw ARG2(a,b), _WTOG shr ARG2(b,a))
-#define SHR_B(a, b) CHOICE(shrb ARG2(a,b), shrb ARG2(a,b), shrb ARG2(b,a))
-#define SHRD_L(a,b,c) CHOICE(shrdl ARG3(a,b,c), shrdl ARG3(a,b,c), _LTOG shrd ARG3(c,b,a))
-#define SHRD2_L(a,b) CHOICE(shrdl ARG2(a,b), shrdl ARG3(CL,a,b), _LTOG shrd ARG3(b,a,CL))
-#define SHRD_W(a,b,c) CHOICE(shrdw ARG3(a,b,c), shrdw ARG3(a,b,c), _WTOG shrd ARG3(c,b,a))
-#define SHRD2_W(a,b) CHOICE(shrdw ARG2(a,b), shrdw ARG3(CL,a,b), _WTOG shrd ARG3(b,a,CL))
-#define SLDT(a) CHOICE(sldt a, sldt a, sldt a)
-#define SMSW(a) CHOICE(smsw a, smsw a, smsw a)
-#define STC CHOICE(stc, stc, stc)
-#define STD CHOICE(std, std, std)
-#define STI CHOICE(sti, sti, sti)
-#define STOS_L CHOICE(stosl, stosl, _LTOG stos)
-#define STOS_W CHOICE(stosw, stosw, _WTOG stos)
-#define STOS_B CHOICE(stosb, stosb, stosb)
-#define STR(a) CHOICE(str a, str a, str a)
-#define SUB_L(a, b) CHOICE(subl ARG2(a,b), subl ARG2(a,b), _LTOG sub ARG2(b,a))
-#define SUB_W(a, b) CHOICE(subw ARG2(a,b), subw ARG2(a,b), _WTOG sub ARG2(b,a))
-#define SUB_B(a, b) CHOICE(subb ARG2(a,b), subb ARG2(a,b), subb ARG2(b,a))
-#define TEST_L(a, b) CHOICE(testl ARG2(a,b), testl ARG2(a,b), _LTOG test ARG2(b,a))
-#define TEST_W(a, b) CHOICE(testw ARG2(a,b), testw ARG2(a,b), _WTOG test ARG2(b,a))
-#define TEST_B(a, b) CHOICE(testb ARG2(a,b), testb ARG2(a,b), testb ARG2(b,a))
-#define VERR(a) CHOICE(verr a, verr a, verr a)
-#define VERW(a) CHOICE(verw a, verw a, verw a)
-#define WAIT CHOICE(wait, wait, wait)
-#define XCHG_L(a, b) CHOICE(xchgl ARG2(a,b), xchgl ARG2(a,b), _LTOG xchg ARG2(b,a))
-#define XCHG_W(a, b) CHOICE(xchgw ARG2(a,b), xchgw ARG2(a,b), _WTOG xchg ARG2(b,a))
-#define XCHG_B(a, b) CHOICE(xchgb ARG2(a,b), xchgb ARG2(a,b), xchgb ARG2(b,a))
-#define XLAT CHOICE(xlat, xlat, xlat)
-#define XOR_L(a, b) CHOICE(xorl ARG2(a,b), xorl ARG2(a,b), _LTOG xor ARG2(b,a))
-#define XOR_W(a, b) CHOICE(xorw ARG2(a,b), xorw ARG2(a,b), _WTOG xor ARG2(b,a))
-#define XOR_B(a, b) CHOICE(xorb ARG2(a,b), xorb ARG2(a,b), xorb ARG2(b,a))
-
-
-/* Floating Point Instructions */
-#define F2XM1 CHOICE(f2xm1, f2xm1, f2xm1)
-#define FABS CHOICE(fabs, fabs, fabs)
-#define FADD_D(a) CHOICE(faddl a, faddl a, faddd a)
-#define FADD_S(a) CHOICE(fadds a, fadds a, fadds a)
-#define FADD2(a, b) CHOICE(fadd ARG2(a,b), fadd ARG2(a,b), fadd ARG2(b,a))
-#define FADDP(a, b) CHOICE(faddp ARG2(a,b), faddp ARG2(a,b), faddp ARG2(b,a))
-#define FIADD_L(a) CHOICE(fiaddl a, fiaddl a, fiaddl a)
-#define FIADD_W(a) CHOICE(fiadd a, fiadds a, fiadds a)
-#define FBLD(a) CHOICE(fbld a, fbld a, fbld a)
-#define FBSTP(a) CHOICE(fbstp a, fbstp a, fbstp a)
-#define FCHS CHOICE(fchs, fchs, fchs)
-#define FCLEX CHOICE(fclex, wait; fnclex, wait; fclex)
-#define FNCLEX CHOICE(fnclex, fnclex, fclex)
-#define FCOM(a) CHOICE(fcom a, fcom a, fcom a)
-#define FCOM_D(a) CHOICE(fcoml a, fcoml a, fcomd a)
-#define FCOM_S(a) CHOICE(fcoms a, fcoms a, fcoms a)
-#define FCOMP(a) CHOICE(fcomp a, fcomp a, fcomp a)
-#define FCOMP_D(a) CHOICE(fcompl a, fcompl a, fcompd a)
-#define FCOMP_S(a) CHOICE(fcomps a, fcomps a, fcomps a)
-#define FCOMPP CHOICE(fcompp, fcompp, fcompp)
-#define FCOS CHOICE(fcos, fcos, fcos)
-#define FDECSTP CHOICE(fdecstp, fdecstp, fdecstp)
-#define FDIV_D(a) CHOICE(fdivl a, fdivl a, fdivd a)
-#define FDIV_S(a) CHOICE(fdivs a, fdivs a, fdivs a)
-#define FDIV2(a, b) CHOICE(fdiv ARG2(a,b), fdiv ARG2(a,b), fdiv ARG2(b,a))
-#define FDIVP(a, b) CHOICE(fdivp ARG2(a,b), fdivp ARG2(a,b), fdivp ARG2(b,a))
-#define FIDIV_L(a) CHOICE(fidivl a, fidivl a, fidivl a)
-#define FIDIV_W(a) CHOICE(fidiv a, fidivs a, fidivs a)
-#define FDIVR_D(a) CHOICE(fdivrl a, fdivrl a, fdivrd a)
-#define FDIVR_S(a) CHOICE(fdivrs a, fdivrs a, fdivrs a)
-#define FDIVR2(a, b) CHOICE(fdivr ARG2(a,b), fdivr ARG2(a,b), fdivr ARG2(b,a))
-#define FDIVRP(a, b) CHOICE(fdivrp ARG2(a,b), fdivrp ARG2(a,b), fdivrp ARG2(b,a))
-#define FIDIVR_L(a) CHOICE(fidivrl a, fidivrl a, fidivrl a)
-#define FIDIVR_W(a) CHOICE(fidivr a, fidivrs a, fidivrs a)
-#define FFREE(a) CHOICE(ffree a, ffree a, ffree a)
-#define FICOM_L(a) CHOICE(ficoml a, ficoml a, ficoml a)
-#define FICOM_W(a) CHOICE(ficom a, ficoms a, ficoms a)
-#define FICOMP_L(a) CHOICE(ficompl a, ficompl a, ficompl a)
-#define FICOMP_W(a) CHOICE(ficomp a, ficomps a, ficomps a)
-#define FILD_Q(a) CHOICE(fildll a, fildq a, fildq a)
-#define FILD_L(a) CHOICE(fildl a, fildl a, fildl a)
-#define FILD_W(a) CHOICE(fild a, filds a, filds a)
-#define FINCSTP CHOICE(fincstp, fincstp, fincstp)
-#define FINIT CHOICE(finit, wait; fninit, wait; finit)
-#define FNINIT CHOICE(fninit, fninit, finit)
-#define FIST_L(a) CHOICE(fistl a, fistl a, fistl a)
-#define FIST_W(a) CHOICE(fist a, fists a, fists a)
-#define FISTP_Q(a) CHOICE(fistpll a, fistpq a, fistpq a)
-#define FISTP_L(a) CHOICE(fistpl a, fistpl a, fistpl a)
-#define FISTP_W(a) CHOICE(fistp a, fistps a, fistps a)
-#define FLD_X(a) CHOICE(fldt a, fldt a, fldx a) /* 80 bit data type! */
-#define FLD_D(a) CHOICE(fldl a, fldl a, fldd a)
-#define FLD_S(a) CHOICE(flds a, flds a, flds a)
-#define FLD1 CHOICE(fld1, fld1, fld1)
-#define FLDL2T CHOICE(fldl2t, fldl2t, fldl2t)
-#define FLDL2E CHOICE(fldl2e, fldl2e, fldl2e)
-#define FLDPI CHOICE(fldpi, fldpi, fldpi)
-#define FLDLG2 CHOICE(fldlg2, fldlg2, fldlg2)
-#define FLDLN2 CHOICE(fldln2, fldln2, fldln2)
-#define FLDZ CHOICE(fldz, fldz, fldz)
-#define FLDCW(a) CHOICE(fldcw a, fldcw a, fldcw a)
-#define FLDENV(a) CHOICE(fldenv a, fldenv a, fldenv a)
-#define FMUL_S(a) CHOICE(fmuls a, fmuls a, fmuls a)
-#define FMUL_D(a) CHOICE(fmull a, fmull a, fmuld a)
-#define FMUL2(a, b) CHOICE(fmul ARG2(a,b), fmul ARG2(a,b), fmul ARG2(b,a))
-#define FMULP(a, b) CHOICE(fmulp ARG2(a,b), fmulp ARG2(a,b), fmulp ARG2(b,a))
-#define FIMUL_L(a) CHOICE(fimull a, fimull a, fimull a)
-#define FIMUL_W(a) CHOICE(fimul a, fimuls a, fimuls a)
-#define FNOP CHOICE(fnop, fnop, fnop)
-#define FPATAN CHOICE(fpatan, fpatan, fpatan)
-#define FPREM CHOICE(fprem, fprem, fprem)
-#define FPREM1 CHOICE(fprem1, fprem1, fprem1)
-#define FPTAN CHOICE(fptan, fptan, fptan)
-#define FRNDINT CHOICE(frndint, frndint, frndint)
-#define FRSTOR(a) CHOICE(frstor a, frstor a, frstor a)
-#define FSAVE(a) CHOICE(fsave a, wait; fnsave a, wait; fsave a)
-#define FNSAVE(a) CHOICE(fnsave a, fnsave a, fsave a)
-#define FSCALE CHOICE(fscale, fscale, fscale)
-#define FSIN CHOICE(fsin, fsin, fsin)
-#define FSINCOS CHOICE(fsincos, fsincos, fsincos)
-#define FSQRT CHOICE(fsqrt, fsqrt, fsqrt)
-#define FST_D(a) CHOICE(fstl a, fstl a, fstd a)
-#define FST_S(a) CHOICE(fsts a, fsts a, fsts a)
-#define FSTP_X(a) CHOICE(fstpt a, fstpt a, fstpx a)
-#define FSTP_D(a) CHOICE(fstpl a, fstpl a, fstpd a)
-#define FSTP_S(a) CHOICE(fstps a, fstps a, fstps a)
-#define FSTP(a) CHOICE(fstp a, fstp a, fstp a)
-#define FSTCW(a) CHOICE(fstcw a, wait; fnstcw a, wait; fstcw a)
-#define FNSTCW(a) CHOICE(fnstcw a, fnstcw a, fstcw a)
-#define FSTENV(a) CHOICE(fstenv a, wait; fnstenv a, fstenv a)
-#define FNSTENV(a) CHOICE(fnstenv a, fnstenv a, fstenv a)
-#define FSTSW(a) CHOICE(fstsw a, wait; fnstsw a, wait; fstsw a)
-#define FNSTSW(a) CHOICE(fnstsw a, fnstsw a, fstsw a)
-#define FSUB_S(a) CHOICE(fsubs a, fsubs a, fsubs a)
-#define FSUB_D(a) CHOICE(fsubl a, fsubl a, fsubd a)
-#define FSUB2(a, b) CHOICE(fsub ARG2(a,b), fsub ARG2(a,b), fsub ARG2(b,a))
-#define FSUBP(a, b) CHOICE(fsubp ARG2(a,b), fsubp ARG2(a,b), fsubp ARG2(b,a))
-#define FISUB_L(a) CHOICE(fisubl a, fisubl a, fisubl a)
-#define FISUB_W(a) CHOICE(fisub a, fisubs a, fisubs a)
-#define FSUBR_S(a) CHOICE(fsubrs a, fsubrs a, fsubrs a)
-#define FSUBR_D(a) CHOICE(fsubrl a, fsubrl a, fsubrd a)
-#define FSUBR2(a, b) CHOICE(fsubr ARG2(a,b), fsubr ARG2(a,b), fsubr ARG2(b,a))
-#define FSUBRP(a, b) CHOICE(fsubrp ARG2(a,b), fsubrp ARG2(a,b), fsubrp ARG2(b,a))
-#define FISUBR_L(a) CHOICE(fisubrl a, fisubrl a, fisubrl a)
-#define FISUBR_W(a) CHOICE(fisubr a, fisubrs a, fisubrs a)
-#define FTST CHOICE(ftst, ftst, ftst)
-#define FUCOM(a) CHOICE(fucom a, fucom a, fucom a)
-#define FUCOMP(a) CHOICE(fucomp a, fucomp a, fucomp a)
-#define FUCOMPP CHOICE(fucompp, fucompp, fucompp)
-#define FWAIT CHOICE(wait, wait, wait)
-#define FXAM CHOICE(fxam, fxam, fxam)
-#define FXCH(a) CHOICE(fxch a, fxch a, fxch a)
-#define FXTRACT CHOICE(fxtract, fxtract, fxtract)
-#define FYL2X CHOICE(fyl2x, fyl2x, fyl2x)
-#define FYL2XP1 CHOICE(fyl2xp1, fyl2xp1, fyl2xp1)
-
-/* New instructions */
-#define CPUID CHOICE(D_BYTE ARG2(15, 162), cpuid, D_BYTE ARG2(15, 162))
-#define RDTSC CHOICE(D_BYTE ARG2(15, 49), rdtsc, D_BYTE ARG2(15, 49))
-
-#else /* NASM_ASSEMBLER || MASM_ASSEMBLER is defined */
-
- /****************************************/
- /* */
- /* Intel style assemblers. */
- /* (NASM and MASM) */
- /* */
- /****************************************/
-
-#define P_EAX EAX
-#define L_EAX EAX
-#define W_AX AX
-#define B_AH AH
-#define B_AL AL
-
-#define P_EBX EBX
-#define L_EBX EBX
-#define W_BX BX
-#define B_BH BH
-#define B_BL BL
-
-#define P_ECX ECX
-#define L_ECX ECX
-#define W_CX CX
-#define B_CH CH
-#define B_CL CL
-
-#define P_EDX EDX
-#define L_EDX EDX
-#define W_DX DX
-#define B_DH DH
-#define B_DL DL
-
-#define P_EBP EBP
-#define L_EBP EBP
-#define W_BP BP
-
-#define P_ESI ESI
-#define L_ESI ESI
-#define W_SI SI
-
-#define P_EDI EDI
-#define L_EDI EDI
-#define W_DI DI
-
-#define P_ESP ESP
-#define L_ESP ESP
-#define W_SP SP
-
-#define W_CS CS
-#define W_SS SS
-#define W_DS DS
-#define W_ES ES
-#define W_FS FS
-#define W_GS GS
-
-#define X_ST ST
-#define D_ST ST
-#define L_ST ST
-
-#define P_MM0 mm0
-#define P_MM1 mm1
-#define P_MM2 mm2
-#define P_MM3 mm3
-#define P_MM4 mm4
-#define P_MM5 mm5
-#define P_MM6 mm6
-#define P_MM7 mm7
-
-#define P_XMM0 xmm0
-#define P_XMM1 xmm1
-#define P_XMM2 xmm2
-#define P_XMM3 xmm3
-#define P_XMM4 xmm4
-#define P_XMM5 xmm5
-#define P_XMM6 xmm6
-#define P_XMM7 xmm7
-
-#define CONCAT(x, y) x ## y
-#define CONCAT3(x, y, z) x ## y ## z
-
-#if defined(NASM_ASSEMBLER)
-
-#define ST(n) st ## n
-#define ST0 st0
-
-#define TBYTE_PTR tword
-#define QWORD_PTR qword
-#define DWORD_PTR dword
-#define WORD_PTR word
-#define BYTE_PTR byte
-
-#define OFFSET
-
-#define GLOBL GLOBAL
-#define ALIGNTEXT32 ALIGN 32
-#define ALIGNTEXT16 ALIGN 16
-#define ALIGNTEXT8 ALIGN 8
-#define ALIGNTEXT4 ALIGN 4
-#define ALIGNTEXT2 ALIGN 2
-#define ALIGNTEXT32ifNOP ALIGN 32
-#define ALIGNTEXT16ifNOP ALIGN 16
-#define ALIGNTEXT8ifNOP ALIGN 8
-#define ALIGNTEXT4ifNOP ALIGN 4
-#define ALIGNDATA32 ALIGN 32
-#define ALIGNDATA16 ALIGN 16
-#define ALIGNDATA8 ALIGN 8
-#define ALIGNDATA4 ALIGN 4
-#define ALIGNDATA2 ALIGN 2
-#define FILE(s)
-#define STRING(s) db s
-#define D_LONG dd
-#define D_WORD dw
-#define D_BYTE db
-/* #define SPACE */
-/* #define COMM */
-#if defined(__WATCOMC__)
-SECTION _TEXT public align=16 class=CODE use32 flat
-SECTION _DATA public align=16 class=DATA use32 flat
-#define SEG_TEXT SECTION _TEXT
-#define SEG_DATA SECTION _DATA
-#define SEG_BSS SECTION .bss
-#else
-#define SEG_DATA SECTION .data
-#define SEG_TEXT SECTION .text
-#define SEG_BSS SECTION .bss
-#endif
-
-#define D_SPACE(n) db n REP 0
-
-#define AS_BEGIN
-
-/* Jcc's should be handled better than this... */
-#define NEAR near
-
-#else /* MASM */
-
-#define TBYTE_PTR tbyte ptr
-#define QWORD_PTR qword ptr
-#define DWORD_PTR dword ptr
-#define WORD_PTR word ptr
-#define BYTE_PTR byte ptr
-
-#define OFFSET offset
-
-#define GLOBL GLOBAL
-#define ALIGNTEXT32 ALIGN 32
-#define ALIGNTEXT16 ALIGN 16
-#define ALIGNTEXT8 ALIGN 8
-#define ALIGNTEXT4 ALIGN 4
-#define ALIGNTEXT2 ALIGN 2
-#define ALIGNTEXT32ifNOP ALIGN 32
-#define ALIGNTEXT16ifNOP ALIGN 16
-#define ALIGNTEXT8ifNOP ALIGN 8
-#define ALIGNTEXT4ifNOP ALIGN 4
-#define ALIGNDATA32 ALIGN 32
-#define ALIGNDATA16 ALIGN 16
-#define ALIGNDATA8 ALIGN 8
-#define ALIGNDATA4 ALIGN 4
-#define ALIGNDATA2 ALIGN 2
-#define FILE(s)
-#define STRING(s) db s
-#define D_LONG dd
-#define D_WORD dw
-#define D_BYTE db
-/* #define SPACE */
-/* #define COMM */
-#define SEG_DATA .DATA
-#define SEG_TEXT .CODE
-#define SEG_BSS .DATA
-
-#define D_SPACE(n) db n REP 0
-
-#define AS_BEGIN
-
-#define NEAR
-
-#endif
-
-#if defined(Lynx) || (defined(SYSV) || defined(SVR4)) \
- || (defined(__linux__) || defined(__OS2ELF__)) && defined(__ELF__) \
- || (defined(__FreeBSD__) && __FreeBSD__ >= 3) \
- || (defined(__NetBSD__) && defined(__ELF__))
-#define GLNAME(a) a
-#else
-#define GLNAME(a) CONCAT(_, a)
-#endif
-
-/*
- * Addressing Modes
- */
-
-/* Immediate Mode */
-#define P_ADDR(a) OFFSET a
-#define X_ADDR(a) OFFSET a
-#define D_ADDR(a) OFFSET a
-#define L_ADDR(a) OFFSET a
-#define W_ADDR(a) OFFSET a
-#define B_ADDR(a) OFFSET a
-
-#define P_CONST(a) a
-#define X_CONST(a) a
-#define D_CONST(a) a
-#define L_CONST(a) a
-#define W_CONST(a) a
-#define B_CONST(a) a
-
-/* Indirect Mode */
-#ifdef NASM_ASSEMBLER
-#define P_CONTENT(a) [a]
-#define X_CONTENT(a) TBYTE_PTR [a]
-#define D_CONTENT(a) QWORD_PTR [a]
-#define L_CONTENT(a) DWORD_PTR [a]
-#define W_CONTENT(a) WORD_PTR [a]
-#define B_CONTENT(a) BYTE_PTR [a]
-#else
-#define P_CONTENT(a) a
-#define X_CONTENT(a) TBYTE_PTR a
-#define D_CONTENT(a) QWORD_PTR a
-#define L_CONTENT(a) DWORD_PTR a
-#define W_CONTENT(a) WORD_PTR a
-#define B_CONTENT(a) BYTE_PTR a
-#endif
-
-/* Register a indirect */
-#define P_REGIND(a) [a]
-#define X_REGIND(a) TBYTE_PTR [a]
-#define D_REGIND(a) QWORD_PTR [a]
-#define L_REGIND(a) DWORD_PTR [a]
-#define W_REGIND(a) WORD_PTR [a]
-#define B_REGIND(a) BYTE_PTR [a]
-
-/* Register b indirect plus displacement a */
-#define P_REGOFF(a, b) [b + a]
-#define X_REGOFF(a, b) TBYTE_PTR [b + a]
-#define D_REGOFF(a, b) QWORD_PTR [b + a]
-#define L_REGOFF(a, b) DWORD_PTR [b + a]
-#define W_REGOFF(a, b) WORD_PTR [b + a]
-#define B_REGOFF(a, b) BYTE_PTR [b + a]
-
-/* Reg indirect Base + Index + Displacement - this is mainly for 16-bit mode
- * which has no scaling
- */
-#define P_REGBID(b, i, d) [b + i + d]
-#define X_REGBID(b, i, d) TBYTE_PTR [b + i + d]
-#define D_REGBID(b, i, d) QWORD_PTR [b + i + d]
-#define L_REGBID(b, i, d) DWORD_PTR [b + i + d]
-#define W_REGBID(b, i, d) WORD_PTR [b + i + d]
-#define B_REGBID(b, i, d) BYTE_PTR [b + i + d]
-
-/* Reg indirect Base + (Index * Scale) */
-#define P_REGBIS(b, i, s) [b + i * s]
-#define X_REGBIS(b, i, s) TBYTE_PTR [b + i * s]
-#define D_REGBIS(b, i, s) QWORD_PTR [b + i * s]
-#define L_REGBIS(b, i, s) DWORD_PTR [b + i * s]
-#define W_REGBIS(b, i, s) WORD_PTR [b + i * s]
-#define B_REGBIS(b, i, s) BYTE_PTR [b + i * s]
-
-/* Reg indirect Base + (Index * Scale) + Displacement */
-#define P_REGBISD(b, i, s, d) [b + i * s + d]
-#define X_REGBISD(b, i, s, d) TBYTE_PTR [b + i * s + d]
-#define D_REGBISD(b, i, s, d) QWORD_PTR [b + i * s + d]
-#define L_REGBISD(b, i, s, d) DWORD_PTR [b + i * s + d]
-#define W_REGBISD(b, i, s, d) WORD_PTR [b + i * s + d]
-#define B_REGBISD(b, i, s, d) BYTE_PTR [b + i * s + d]
-
-/* Displaced Scaled Index: */
-#define P_REGDIS(d, i, s) [i * s + d]
-#define X_REGDIS(d, i, s) TBYTE_PTR [i * s + d]
-#define D_REGDIS(d, i, s) QWORD_PTR [i * s + d]
-#define L_REGDIS(d, i, s) DWORD_PTR [i * s + d]
-#define W_REGDIS(d, i, s) WORD_PTR [i * s + d]
-#define B_REGDIS(d, i, s) BYTE_PTR [i * s + d]
-
-/* Indexed Base: */
-#define P_REGBI(b, i) [b + i]
-#define X_REGBI(b, i) TBYTE_PTR [b + i]
-#define D_REGBI(b, i) QWORD_PTR [b + i]
-#define L_REGBI(b, i) DWORD_PTR [b + i]
-#define W_REGBI(b, i) WORD_PTR [b + i]
-#define B_REGBI(b, i) BYTE_PTR [b + i]
-
-/* Displaced Base: */
-#define P_REGDB(d, b) [b + d]
-#define X_REGDB(d, b) TBYTE_PTR [b + d]
-#define D_REGDB(d, b) QWORD_PTR [b + d]
-#define L_REGDB(d, b) DWORD_PTR [b + d]
-#define W_REGDB(d, b) WORD_PTR [b + d]
-#define B_REGDB(d, b) BYTE_PTR [b + d]
-
-/* Variable indirect: */
-#define VARINDIRECT(var) [var]
-
-/* Use register contents as jump/call target: */
-#define CODEPTR(reg) P_(reg)
-
-/*
- * Redefine assembler commands
- */
-
-#define P_(a) P_ ## a
-#define X_(a) X_ ## a
-#define D_(a) D_ ## a
-#define SR_(a) W_ ## a
-#define S_(a) L_ ## a
-#define L_(a) L_ ## a
-#define W_(a) W_ ## a
-#define B_(a) B_ ## a
-
-#define AAA aaa
-#define AAD aad
-#define AAM aam
-#define AAS aas
-#define ADC_L(a, b) adc L_(b), L_(a)
-#define ADC_W(a, b) adc W_(b), W_(a)
-#define ADC_B(a, b) adc B_(b), B_(a)
-#define ADD_L(a, b) add L_(b), L_(a)
-#define ADD_W(a, b) add W_(b), W_(a)
-#define ADD_B(a, b) add B_(b), B_(a)
-#define AND_L(a, b) and L_(b), L_(a)
-#define AND_W(a, b) and W_(b), W_(a)
-#define AND_B(a, b) and B_(b), B_(a)
-#define ARPL(a,b) arpl W_(b), a
-#define BOUND_L(a, b) bound L_(b), L_(a)
-#define BOUND_W(a, b) bound W_(b), W_(a)
-#define BSF_L(a, b) bsf L_(b), L_(a)
-#define BSF_W(a, b) bsf W_(b), W_(a)
-#define BSR_L(a, b) bsr L_(b), L_(a)
-#define BSR_W(a, b) bsr W_(b), W_(a)
-#define BT_L(a, b) bt L_(b), L_(a)
-#define BT_W(a, b) bt W_(b), W_(a)
-#define BTC_L(a, b) btc L_(b), L_(a)
-#define BTC_W(a, b) btc W_(b), W_(a)
-#define BTR_L(a, b) btr L_(b), L_(a)
-#define BTR_W(a, b) btr W_(b), W_(a)
-#define BTS_L(a, b) bts L_(b), L_(a)
-#define BTS_W(a, b) bts W_(b), W_(a)
-#define CALL(a) call a
-#define CALLF(s,a) call far s:a
-#define CBW cbw
-#define CWDE cwde
-#define CLC clc
-#define CLD cld
-#define CLI cli
-#define CLTS clts
-#define CMC cmc
-#define CMP_L(a, b) cmp L_(b), L_(a)
-#define CMP_W(a, b) cmp W_(b), W_(a)
-#define CMP_B(a, b) cmp B_(b), B_(a)
-#define CMPS_L cmpsd
-#define CMPS_W cmpsw
-#define CMPS_B cmpsb
-#define CPUID cpuid
-#define CWD cwd
-#define CDQ cdq
-#define DAA daa
-#define DAS das
-#define DEC_L(a) dec L_(a)
-#define DEC_W(a) dec W_(a)
-#define DEC_B(a) dec B_(a)
-#define DIV_L(a) div L_(a)
-#define DIV_W(a) div W_(a)
-#define DIV_B(a) div B_(a)
-#define ENTER(a,b) enter b, a
-#define HLT hlt
-#define IDIV_L(a) idiv L_(a)
-#define IDIV_W(a) idiv W_(a)
-#define IDIV_B(a) idiv B_(a)
-#define IMUL_L(a, b) imul L_(b), L_(a)
-#define IMUL_W(a, b) imul W_(b), W_(a)
-#define IMUL_B(a) imul B_(a)
-#define IN_L in EAX, DX
-#define IN_W in AX, DX
-#define IN_B in AL, DX
-#define IN1_L(a) in1 L_(a)
-#define IN1_W(a) in1 W_(a)
-#define IN1_B(a) in1 B_(a)
-#define INC_L(a) inc L_(a)
-#define INC_W(a) inc W_(a)
-#define INC_B(a) inc B_(a)
-#define INS_L ins
-#define INS_W ins
-#define INS_B ins
-#define INT(a) int B_(a)
-#define INT3 int3
-#define INTO into
-#define IRET iret
-#define IRETD iretd
-#define JA(a) ja NEAR a
-#define JAE(a) jae NEAR a
-#define JB(a) jb NEAR a
-#define JBE(a) jbe NEAR a
-#define JC(a) jc NEAR a
-#define JE(a) je NEAR a
-#define JG(a) jg NEAR a
-#define JGE(a) jge NEAR a
-#define JL(a) jl NEAR a
-#define JLE(a) jle NEAR a
-#define JNA(a) jna NEAR a
-#define JNAE(a) jnae NEAR a
-#define JNB(a) jnb NEAR a
-#define JNBE(a) jnbe NEAR a
-#define JNC(a) jnc NEAR a
-#define JNE(a) jne NEAR a
-#define JNG(a) jng NEAR a
-#define JNGE(a) jnge NEAR a
-#define JNL(a) jnl NEAR a
-#define JNLE(a) jnle NEAR a
-#define JNO(a) jno NEAR a
-#define JNP(a) jnp NEAR a
-#define JNS(a) jns NEAR a
-#define JNZ(a) jnz NEAR a
-#define JO(a) jo NEAR a
-#define JP(a) jp NEAR a
-#define JPE(a) jpe NEAR a
-#define JPO(a) jpo NEAR a
-#define JS(a) js NEAR a
-#define JZ(a) jz NEAR a
-#define JMP(a) jmp a
-#define JMPF(s,a) jmp far s:a
-#define LAHF lahf
-#define LAR(a, b) lar b, a
-#define LEA_L(a, b) lea P_(b), P_(a)
-#define LEA_W(a, b) lea P_(b), P_(a)
-#define LEAVE leave
-#define LGDT(a) lgdt a
-#define LIDT(a) lidt a
-#define LDS(a, b) lds b, P_(a)
-#define LES(a, b) les b, P_(a)
-#define LFS(a, b) lfs b, P_(a)
-#define LGS(a, b) lgs b, P_(a)
-#define LSS(a, b) lss b, P_(a)
-#define LLDT(a) lldt a
-#define LMSW(a) lmsw a
-#define LOCK lock
-#define LODS_L lodsd
-#define LODS_W lodsw
-#define LODS_B lodsb
-#define LOOP(a) loop a
-#define LOOPE(a) loope a
-#define LOOPZ(a) loopz a
-#define LOOPNE(a) loopne a
-#define LOOPNZ(a) loopnz a
-#define LSL(a, b) lsl b, a
-#define LTR(a) ltr a
-#define MOV_SR(a, b) mov SR_(b), SR_(a)
-#define MOV_L(a, b) mov L_(b), L_(a)
-#define MOV_W(a, b) mov W_(b), W_(a)
-#define MOV_B(a, b) mov B_(b), B_(a)
-#define MOVS_L movsd
-#define MOVS_W movsw
-#define MOVS_B movsb
-#define MOVSX_BL(a, b) movsx B_(b), B_(a)
-#define MOVSX_BW(a, b) movsx B_(b), B_(a)
-#define MOVSX_WL(a, b) movsx W_(b), W_(a)
-#define MOVZX_BL(a, b) movzx B_(b), B_(a)
-#define MOVZX_BW(a, b) movzx B_(b), B_(a)
-#define MOVZX_WL(a, b) movzx W_(b), W_(a)
-#define MUL_L(a) mul L_(a)
-#define MUL_W(a) mul W_(a)
-#define MUL_B(a) mul B_(a)
-#define NEG_L(a) neg L_(a)
-#define NEG_W(a) neg W_(a)
-#define NEG_B(a) neg B_(a)
-#define NOP nop
-#define NOT_L(a) not L_(a)
-#define NOT_W(a) not W_(a)
-#define NOT_B(a) not B_(a)
-#define OR_L(a,b) or L_(b), L_(a)
-#define OR_W(a,b) or W_(b), W_(a)
-#define OR_B(a,b) or B_(b), B_(a)
-#define OUT_L out DX, EAX
-#define OUT_W out DX, AX
-#define OUT_B out DX, AL
-#define OUT1_L(a) out1 L_(a)
-#define OUT1_W(a) out1 W_(a)
-#define OUT1_B(a) out1 B_(a)
-#define OUTS_L outsd
-#define OUTS_W outsw
-#define OUTS_B outsb
-#define POP_SR(a) pop SR_(a)
-#define POP_L(a) pop L_(a)
-#define POP_W(a) pop W_(a)
-#define POPA_L popad
-#define POPA_W popa
-#define POPF_L popfd
-#define POPF_W popf
-#define PUSH_SR(a) push SR_(a)
-#define PUSH_L(a) push L_(a)
-#define PUSH_W(a) push W_(a)
-#define PUSH_B(a) push B_(a)
-#define PUSHA_L pushad
-#define PUSHA_W pusha
-#define PUSHF_L pushfd
-#define PUSHF_W pushf
-#define RCL_L(a, b) rcl L_(b), L_(a)
-#define RCL_W(a, b) rcl W_(b), W_(a)
-#define RCL_B(a, b) rcl B_(b), B_(a)
-#define RCR_L(a, b) rcr L_(b), L_(a)
-#define RCR_W(a, b) rcr W_(b), W_(a)
-#define RCR_B(a, b) rcr B_(b), B_(a)
-#define RDTSC rdtsc
-#define ROL_L(a, b) rol L_(b), L_(a)
-#define ROL_W(a, b) rol W_(b), W_(a)
-#define ROL_B(a, b) rol B_(b), B_(a)
-#define ROR_L(a, b) ror L_(b), L_(a)
-#define ROR_W(a, b) ror W_(b), W_(a)
-#define ROR_B(a, b) ror B_(b), B_(a)
-#define REP rep
-#define REPE repe
-#define REPNE repne
-#define REPNZ REPNE
-#define REPZ REPE
-#define RET ret
-#define SAHF sahf
-#define SAL_L(a, b) sal L_(b), B_(a)
-#define SAL_W(a, b) sal W_(b), B_(a)
-#define SAL_B(a, b) sal B_(b), B_(a)
-#define SAR_L(a, b) sar L_(b), B_(a)
-#define SAR_W(a, b) sar W_(b), B_(a)
-#define SAR_B(a, b) sar B_(b), B_(a)
-#define SBB_L(a, b) sbb L_(b), L_(a)
-#define SBB_W(a, b) sbb W_(b), W_(a)
-#define SBB_B(a, b) sbb B_(b), B_(a)
-#define SCAS_L scas
-#define SCAS_W scas
-#define SCAS_B scas
-#define SETA(a) seta a
-#define SETAE(a) setae a
-#define SETB(a) setb a
-#define SETBE(a) setbe a
-#define SETC(a) setc a
-#define SETE(a) sete a
-#define SETG(a) setg a
-#define SETGE(a) setge a
-#define SETL(a) setl a
-#define SETLE(a) setle a
-#define SETNA(a) setna a
-#define SETNAE(a) setnae a
-#define SETNB(a) setnb a
-#define SETNBE(a) setnbe a
-#define SETNC(a) setnc a
-#define SETNE(a) setne a
-#define SETNG(a) setng a
-#define SETNGE(a) setnge a
-#define SETNL(a) setnl a
-#define SETNLE(a) setnle a
-#define SETNO(a) setno a
-#define SETNP(a) setnp a
-#define SETNS(a) setns a
-#define SETNZ(a) setnz a
-#define SETO(a) seto a
-#define SETP(a) setp a
-#define SETPE(a) setpe a
-#define SETPO(a) setpo a
-#define SETS(a) sets a
-#define SETZ(a) setz a
-#define SGDT(a) sgdt a
-#define SIDT(a) sidt a
-#define SHL_L(a, b) shl L_(b), B_(a)
-#define SHL_W(a, b) shl W_(b), B_(a)
-#define SHL_B(a, b) shl B_(b), B_(a)
-#define SHLD_L(a,b,c) shld
-#define SHLD2_L(a,b) shld L_(b), L_(a)
-#define SHLD_W(a,b,c) shld
-#define SHLD2_W(a,b) shld W_(b), W_(a)
-#define SHR_L(a, b) shr L_(b), B_(a)
-#define SHR_W(a, b) shr W_(b), B_(a)
-#define SHR_B(a, b) shr B_(b), B_(a)
-#define SHRD_L(a,b,c) shrd
-#define SHRD2_L(a,b) shrd L_(b), L_(a)
-#define SHRD_W(a,b,c) shrd
-#define SHRD2_W(a,b) shrd W_(b), W_(a)
-#define SLDT(a) sldt a
-#define SMSW(a) smsw a
-#define STC stc
-#define STD std
-#define STI sti
-#define STOS_L stosd
-#define STOS_W stosw
-#define STOS_B stosb
-#define STR(a) str a
-#define SUB_L(a, b) sub L_(b), L_(a)
-#define SUB_W(a, b) sub W_(b), W_(a)
-#define SUB_B(a, b) sub B_(b), B_(a)
-#define TEST_L(a, b) test L_(b), L_(a)
-#define TEST_W(a, b) test W_(b), W_(a)
-#define TEST_B(a, b) test B_(b), B_(a)
-#define VERR(a) verr a
-#define VERW(a) verw a
-#define WAIT wait
-#define XCHG_L(a, b) xchg L_(b), L_(a)
-#define XCHG_W(a, b) xchg W_(b), W_(a)
-#define XCHG_B(a, b) xchg B_(b), B_(a)
-#define XLAT xlat
-#define XOR_L(a, b) xor L_(b), L_(a)
-#define XOR_W(a, b) xor W_(b), W_(a)
-#define XOR_B(a, b) xor B_(b), B_(a)
-
-
-/* Floating Point Instructions */
-#define F2XM1 f2xm1
-#define FABS fabs
-#define FADD_D(a) fadd D_(a)
-#define FADD_S(a) fadd S_(a)
-#define FADD2(a, b) fadd b, a
-#define FADDP(a, b) faddp b, a
-#define FIADD_L(a) fiadd L_(a)
-#define FIADD_W(a) fiadd W_(a)
-#define FBLD(a) fbld a
-#define FBSTP(a) fbstp a
-#define FCHS fchs
-#define FCLEX fclex
-#define FNCLEX fnclex
-#define FCOM(a) fcom a
-#define FCOM_D(a) fcom D_(a)
-#define FCOM_S(a) fcom S_(a)
-#define FCOMP(a) fcomp a
-#define FCOMP_D(a) fcomp D_(a)
-#define FCOMP_S(a) fcomp S_(a)
-#define FCOMPP fcompp
-#define FCOS fcos
-#define FDECSTP fdecstp
-#define FDIV_D(a) fdiv D_(a)
-#define FDIV_S(a) fdiv S_(a)
-#define FDIV2(a, b) fdiv b, a
-#define FDIVP(a, b) fdivp b, a
-#define FIDIV_L(a) fidiv L_(a)
-#define FIDIV_W(a) fidiv W_(a)
-#define FDIVR_D(a) fdivr D_(a)
-#define FDIVR_S(a) fdivr S_(a)
-#define FDIVR2(a, b) fdivr b, a
-#define FDIVRP(a, b) fdivrp b, a
-#define FIDIVR_L(a) fidivr L_(a)
-#define FIDIVR_W(a) fidivr W_(a)
-#define FFREE(a) ffree a
-#define FICOM_L(a) ficom L_(a)
-#define FICOM_W(a) ficom W_(a)
-#define FICOMP_L(a) ficomp L_(a)
-#define FICOMP_W(a) ficomp W_(a)
-#define FILD_Q(a) fild D_(a)
-#define FILD_L(a) fild L_(a)
-#define FILD_W(a) fild W_(a)
-#define FINCSTP fincstp
-#define FINIT finit
-#define FNINIT fninit
-#define FIST_L(a) fist L_(a)
-#define FIST_W(a) fist W_(a)
-#define FISTP_Q(a) fistp D_(a)
-#define FISTP_L(a) fistp L_(a)
-#define FISTP_W(a) fistp W_(a)
-#define FLD_X(a) fld X_(a)
-#define FLD_D(a) fld D_(a)
-#define FLD_S(a) fld S_(a)
-#define FLD1 fld1
-#define FLDL2T fldl2t
-#define FLDL2E fldl2e
-#define FLDPI fldpi
-#define FLDLG2 fldlg2
-#define FLDLN2 fldln2
-#define FLDZ fldz
-#define FLDCW(a) fldcw a
-#define FLDENV(a) fldenv a
-#define FMUL_S(a) fmul S_(a)
-#define FMUL_D(a) fmul D_(a)
-#define FMUL2(a, b) fmul b, a
-#define FMULP(a, b) fmulp b, a
-#define FIMUL_L(a) fimul L_(a)
-#define FIMUL_W(a) fimul W_(a)
-#define FNOP fnop
-#define FPATAN fpatan
-#define FPREM fprem
-#define FPREM1 fprem1
-#define FPTAN fptan
-#define FRNDINT frndint
-#define FRSTOR(a) frstor a
-#define FSAVE(a) fsave a
-#define FNSAVE(a) fnsave a
-#define FSCALE fscale
-#define FSIN fsin
-#define FSINCOS fsincos
-#define FSQRT fsqrt
-#define FST_D(a) fst D_(a)
-#define FST_S(a) fst S_(a)
-#define FSTP_X(a) fstp X_(a)
-#define FSTP_D(a) fstp D_(a)
-#define FSTP_S(a) fstp S_(a)
-#define FSTP(a) fstp a
-#define FSTCW(a) fstcw a
-#define FNSTCW(a) fnstcw a
-#define FSTENV(a) fstenv a
-#define FNSTENV(a) fnstenv a
-#define FSTSW(a) fstsw a
-#define FNSTSW(a) fnstsw a
-#define FSUB_S(a) fsub S_(a)
-#define FSUB_D(a) fsub D_(a)
-#define FSUB2(a, b) fsub b, a
-#define FSUBP(a, b) fsubp b, a
-#define FISUB_L(a) fisub L_(a)
-#define FISUB_W(a) fisub W_(a)
-#define FSUBR_S(a) fsubr S_(a)
-#define FSUBR_D(a) fsubr D_(a)
-#define FSUBR2(a, b) fsubr b, a
-#define FSUBRP(a, b) fsubrp b, a
-#define FISUBR_L(a) fisubr L_(a)
-#define FISUBR_W(a) fisubr W_(a)
-#define FTST ftst
-#define FUCOM(a) fucom a
-#define FUCOMP(a) fucomp a
-#define FUCOMPP fucompp
-#define FWAIT fwait
-#define FXAM fxam
-#define FXCH(a) fxch a
-#define FXTRACT fxtract
-#define FYL2X fyl2x
-#define FYL2XP1 fyl2xp1
-
-#endif /* NASM_ASSEMBLER, MASM_ASSEMBLER */
-
- /****************************************/
- /* */
- /* Extensions to x86 insn set - */
- /* MMX, 3DNow! */
- /* */
- /****************************************/
-
-#if defined(NASM_ASSEMBLER) || defined(MASM_ASSEMBLER)
-#define P_ARG1(a) P_ ## a
-#define P_ARG2(a, b) P_ ## b, P_ ## a
-#define P_ARG3(a, b, c) P_ ## c, P_ ## b, P_ ## a
-#else
-#define P_ARG1(a) a
-#define P_ARG2(a, b) a, b
-#define P_ARG3(a, b, c) a, b, c
-#endif
-
-/* MMX */
-#define MOVD(a, b) movd P_ARG2(a, b)
-#define MOVQ(a, b) movq P_ARG2(a, b)
-
-#define PADDB(a, b) paddb P_ARG2(a, b)
-#define PADDW(a, b) paddw P_ARG2(a, b)
-#define PADDD(a, b) paddd P_ARG2(a, b)
-
-#define PADDSB(a, b) paddsb P_ARG2(a, b)
-#define PADDSW(a, b) paddsw P_ARG2(a, b)
-
-#define PADDUSB(a, b) paddusb P_ARG2(a, b)
-#define PADDUSW(a, b) paddusw P_ARG2(a, b)
-
-#define PSUBB(a, b) psubb P_ARG2(a, b)
-#define PSUBW(a, b) psubw P_ARG2(a, b)
-#define PSUBD(a, b) psubd P_ARG2(a, b)
-
-#define PSUBSB(a, b) psubsb P_ARG2(a, b)
-#define PSUBSW(a, b) psubsw P_ARG2(a, b)
-
-#define PSUBUSB(a, b) psubusb P_ARG2(a, b)
-#define PSUBUSW(a, b) psubusw P_ARG2(a, b)
-
-#define PCMPEQB(a, b) pcmpeqb P_ARG2(a, b)
-#define PCMPEQW(a, b) pcmpeqw P_ARG2(a, b)
-#define PCMPEQD(a, b) pcmpeqd P_ARG2(a, b)
-
-#define PCMPGTB(a, b) pcmpgtb P_ARG2(a, b)
-#define PCMPGTW(a, b) pcmpgtw P_ARG2(a, b)
-#define PCMPGTD(a, b) pcmpgtd P_ARG2(a, b)
-
-#define PMULHW(a, b) pmulhw P_ARG2(a, b)
-#define PMULLW(a, b) pmullw P_ARG2(a, b)
-
-#define PMADDWD(a, b) pmaddwd P_ARG2(a, b)
-
-#define PAND(a, b) pand P_ARG2(a, b)
-
-#define PANDN(a, b) pandn P_ARG2(a, b)
-
-#define POR(a, b) por P_ARG2(a, b)
-
-#define PXOR(a, b) pxor P_ARG2(a, b)
-
-#define PSRAW(a, b) psraw P_ARG2(a, b)
-#define PSRAD(a, b) psrad P_ARG2(a, b)
-
-#define PSRLW(a, b) psrlw P_ARG2(a, b)
-#define PSRLD(a, b) psrld P_ARG2(a, b)
-#define PSRLQ(a, b) psrlq P_ARG2(a, b)
-
-#define PSLLW(a, b) psllw P_ARG2(a, b)
-#define PSLLD(a, b) pslld P_ARG2(a, b)
-#define PSLLQ(a, b) psllq P_ARG2(a, b)
-
-#define PACKSSWB(a, b) packsswb P_ARG2(a, b)
-#define PACKSSDW(a, b) packssdw P_ARG2(a, b)
-#define PACKUSWB(a, b) packuswb P_ARG2(a, b)
-
-#define PUNPCKHBW(a, b) punpckhbw P_ARG2(a, b)
-#define PUNPCKHWD(a, b) punpckhwd P_ARG2(a, b)
-#define PUNPCKHDQ(a, b) punpckhdq P_ARG2(a, b)
-#define PUNPCKLBW(a, b) punpcklbw P_ARG2(a, b)
-#define PUNPCKLWD(a, b) punpcklwd P_ARG2(a, b)
-#define PUNPCKLDQ(a, b) punpckldq P_ARG2(a, b)
-
-#define EMMS emms
-
-/* AMD 3DNow! */
-#define PAVGUSB(a, b) pavgusb P_ARG2(a, b)
-#define PFADD(a, b) pfadd P_ARG2(a, b)
-#define PFSUB(a, b) pfsub P_ARG2(a, b)
-#define PFSUBR(a, b) pfsubr P_ARG2(a, b)
-#define PFACC(a, b) pfacc P_ARG2(a, b)
-#define PFCMPGE(a, b) pfcmpge P_ARG2(a, b)
-#define PFCMPGT(a, b) pfcmpgt P_ARG2(a, b)
-#define PFCMPEQ(a, b) pfcmpeq P_ARG2(a, b)
-#define PFMIN(a, b) pfmin P_ARG2(a, b)
-#define PFMAX(a, b) pfmax P_ARG2(a, b)
-#define PI2FD(a, b) pi2fd P_ARG2(a, b)
-#define PF2ID(a, b) pf2id P_ARG2(a, b)
-#define PFRCP(a, b) pfrcp P_ARG2(a, b)
-#define PFRSQRT(a, b) pfrsqrt P_ARG2(a, b)
-#define PFMUL(a, b) pfmul P_ARG2(a, b)
-#define PFRCPIT1(a, b) pfrcpit1 P_ARG2(a, b)
-#define PFRSQIT1(a, b) pfrsqit1 P_ARG2(a, b)
-#define PFRCPIT2(a, b) pfrcpit2 P_ARG2(a, b)
-#define PMULHRW(a, b) pmulhrw P_ARG2(a, b)
-
-#define FEMMS femms
-#define PREFETCH(a) prefetch P_ARG1(a)
-#define PREFETCHW(a) prefetchw P_ARG1(a)
-
-/* Intel SSE */
-#define ADDPS(a, b) addps P_ARG2(a, b)
-#define ADDSS(a, b) addss P_ARG2(a, b)
-#define ANDNPS(a, b) andnps P_ARG2(a, b)
-#define ANDPS(a, b) andps P_ARG2(a, b)
-/* NASM only knows the pseudo ops for these.
-#define CMPPS(a, b, c) cmpps P_ARG3(a, b, c)
-#define CMPSS(a, b, c) cmpss P_ARG3(a, b, c)
-*/
-#define CMPEQPS(a, b) cmpeqps P_ARG2(a, b)
-#define CMPLTPS(a, b) cmpltps P_ARG2(a, b)
-#define CMPLEPS(a, b) cmpleps P_ARG2(a, b)
-#define CMPUNORDPS(a, b) cmpunordps P_ARG2(a, b)
-#define CMPNEQPS(a, b) cmpneqps P_ARG2(a, b)
-#define CMPNLTPS(a, b) cmpnltps P_ARG2(a, b)
-#define CMPNLEPS(a, b) cmpnleps P_ARG2(a, b)
-#define CMPORDPS(a, b) cmpordps P_ARG2(a, b)
-#define CMPEQSS(a, b) cmpeqss P_ARG2(a, b)
-#define CMPLTSS(a, b) cmpltss P_ARG2(a, b)
-#define CMPLESS(a, b) cmpless P_ARG2(a, b)
-#define CMPUNORDSS(a, b) cmpunordss P_ARG2(a, b)
-#define CMPNEQSS(a, b) cmpneqss P_ARG2(a, b)
-#define CMPNLTSS(a, b) cmpnltss P_ARG2(a, b)
-#define CMPNLESS(a, b) cmpnless P_ARG2(a, b)
-#define CMPORDSS(a, b) cmpordss P_ARG2(a, b)
-#define COMISS(a, b) comiss P_ARG2(a, b)
-#define CVTPI2PS(a, b) cvtpi2ps P_ARG2(a, b)
-#define CVTPS2PI(a, b) cvtps2pi P_ARG2(a, b)
-#define CVTSI2SS(a, b) cvtsi2ss P_ARG2(a, b)
-#define CVTSS2SI(a, b) cvtss2si P_ARG2(a, b)
-#define CVTTPS2PI(a, b) cvttps2pi P_ARG2(a, b)
-#define CVTTSS2SI(a, b) cvttss2si P_ARG2(a, b)
-#define DIVPS(a, b) divps P_ARG2(a, b)
-#define DIVSS(a, b) divss P_ARG2(a, b)
-#define FXRSTOR(a) fxrstor P_ARG1(a)
-#define FXSAVE(a) fxsave P_ARG1(a)
-#define LDMXCSR(a) ldmxcsr P_ARG1(a)
-#define MAXPS(a, b) maxps P_ARG2(a, b)
-#define MAXSS(a, b) maxss P_ARG2(a, b)
-#define MINPS(a, b) minps P_ARG2(a, b)
-#define MINSS(a, b) minss P_ARG2(a, b)
-#define MOVAPS(a, b) movaps P_ARG2(a, b)
-#define MOVHLPS(a, b) movhlps P_ARG2(a, b)
-#define MOVHPS(a, b) movhps P_ARG2(a, b)
-#define MOVLHPS(a, b) movlhps P_ARG2(a, b)
-#define MOVLPS(a, b) movlps P_ARG2(a, b)
-#define MOVMSKPS(a, b) movmskps P_ARG2(a, b)
-#define MOVNTPS(a, b) movntps P_ARG2(a, b)
-#define MOVNTQ(a, b) movntq P_ARG2(a, b)
-#define MOVSS(a, b) movss P_ARG2(a, b)
-#define MOVUPS(a, b) movups P_ARG2(a, b)
-#define MULPS(a, b) mulps P_ARG2(a, b)
-#define MULSS(a, b) mulss P_ARG2(a, b)
-#define ORPS(a, b) orps P_ARG2(a, b)
-#define RCPPS(a, b) rcpps P_ARG2(a, b)
-#define RCPSS(a, b) rcpss P_ARG2(a, b)
-#define RSQRTPS(a, b) rsqrtps P_ARG2(a, b)
-#define RSQRTSS(a, b) rsqrtss P_ARG2(a, b)
-#define SHUFPS(a, b, c) shufps P_ARG3(a, b, c)
-#define SQRTPS(a, b) sqrtps P_ARG2(a, b)
-#define SQRTSS(a, b) sqrtss P_ARG2(a, b)
-#define STMXCSR(a) stmxcsr P_ARG1(a)
-#define SUBPS(a, b) subps P_ARG2(a, b)
-#define UCOMISS(a, b) ucomiss P_ARG2(a, b)
-#define UNPCKHPS(a, b) unpckhps P_ARG2(a, b)
-#define UNPCKLPS(a, b) unpcklps P_ARG2(a, b)
-#define XORPS(a, b) xorps P_ARG2(a, b)
-
-#define PREFETCHNTA(a) prefetchnta P_ARG1(a)
-#define PREFETCHT0(a) prefetcht0 P_ARG1(a)
-#define PREFETCHT1(a) prefetcht1 P_ARG1(a)
-#define PREFETCHT2(a) prefetcht2 P_ARG1(a)
-#define SFENCE sfence
-
-/* Added by BrianP for FreeBSD (per David Dawes) */
-#if !defined(NASM_ASSEMBLER) && !defined(MASM_ASSEMBLER) && !defined(__bsdi__)
-#define LLBL(a) CONCAT(.L,a)
-#define LLBL2(a,b) CONCAT3(.L,a,b)
-#else
-#define LLBL(a) a
-#define LLBL2(a,b) CONCAT(a,b)
-#endif
-
-/* Segment overrides */
-#define SEGCS D_BYTE 46
-#define SEGDS D_BYTE 62
-#define SEGES D_BYTE 38
-#define SEGFS D_BYTE 100
-#define SEGGS D_BYTE 101
-
-/* Temporary labels: valid until next non-local label */
-#ifdef NASM_ASSEMBLER
-#define TLBL(a) CONCAT(.,a)
-#else
-#define TLBL(a) CONCAT(a,$)
-#endif
-
-/* Hidden symbol visibility support.
- * If we build with gcc's -fvisibility=hidden flag, we'll need to change
- * the symbol visibility mode to 'default'.
- */
-#if defined(GNU_ASSEMBLER) && !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__)
-# define HIDDEN(x) .hidden x
-#elif defined(__GNUC__) && !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__)
-# pragma GCC visibility push(default)
-# define HIDDEN(x) .hidden x
-#else
-# define HIDDEN(x)
-#endif
-
-#endif /* __ASSYNTAX_H__ */
+
+#ifndef __ASSYNTAX_H__
+#define __ASSYNTAX_H__
+
+/*
+ * Copyright 1992 Vrije Universiteit, The Netherlands
+ *
+ * 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 of the Vrije Universiteit not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. The Vrije Universiteit makes no
+ * representations about the suitability of this software for any purpose.
+ * It is provided "as is" without express or implied warranty.
+ *
+ * The Vrije Universiteit DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
+ * IN NO EVENT SHALL The Vrije Universiteit 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.
+ */
+
+/*
+ * assyntax.h
+ *
+ * Select the syntax appropriate to the 386 assembler being used
+ * To add support for more assemblers add more columns to the CHOICE
+ * macro. Note that register names must also have uppercase names
+ * to avoid macro recursion. e.g., #define ah %ah recurses!
+ *
+ * NB 1. Some of the macros for certain assemblers imply that the code is to
+ * run in protected mode!! Caveat emptor.
+ *
+ * NB 2. 486 specific instructions are not included. This is to discourage
+ * their accidental use in code that is intended to run on 386 and 486
+ * systems.
+ *
+ * Supported assemblers:
+ *
+ * (a) AT&T SysVr4 as(1): define ATT_ASSEMBLER
+ * (b) GNU Assembler gas: define GNU_ASSEMBLER (default)
+ * (c) Amsterdam Compiler kit: define ACK_ASSEMBLER
+ * (d) The Netwide Assembler: define NASM_ASSEMBLER
+ * (e) Microsoft Assembler: define MASM_ASSEMBLER (UNTESTED!)
+ *
+ * The following naming conventions have been used to identify the various
+ * data types:
+ * _SR = segment register version
+ * Integer:
+ * _Q = quadword = 64 bits
+ * _L = long = 32 bits
+ * _W = short = 16 bits
+ * _B = byte = 8 bits
+ * Floating-point:
+ * _X = m80real = 80 bits
+ * _D = double = 64 bits
+ * _S = single = 32 bits
+ *
+ * Author: Gregory J. Sharp, Sept 1992
+ * Vrije Universiteit, Amsterdam, The Netherlands
+ *
+ * [support for Intel syntax added by Josh Vanderhoof, 1999]
+ */
+
+#if !(defined(NASM_ASSEMBLER) || defined(MASM_ASSEMBLER))
+
+/* Default to ATT_ASSEMBLER when SVR4 or SYSV are defined */
+#if (defined(SVR4) || defined(SYSV)) && !defined(GNU_ASSEMBLER)
+#define ATT_ASSEMBLER
+#endif
+
+#if !defined(ATT_ASSEMBLER) && !defined(GNU_ASSEMBLER) && !defined(ACK_ASSEMBLER)
+#define GNU_ASSEMBLER
+#endif
+
+#if (defined(__STDC__) && !defined(UNIXCPP)) || (defined (sun) && defined (i386) && defined (SVR4) && defined (__STDC__) && !defined (__GNUC__))
+#define CONCAT(x, y) x ## y
+#define CONCAT3(x, y, z) x ## y ## z
+#else
+#define CONCAT(x, y) x/**/y
+#define CONCAT3(x, y, z) x/**/y/**/z
+#endif
+
+#ifdef ACK_ASSEMBLER
+
+/* Assume we write code for 32-bit protected mode! */
+
+/* Redefine register names for GAS & AT&T assemblers */
+#define AL al
+#define AH ah
+#define AX ax
+#define EAX ax
+#define BL bl
+#define BH bh
+#define BX bx
+#define EBX bx
+#define CL cl
+#define CH ch
+#define CX cx
+#define ECX cx
+#define DL dl
+#define DH dh
+#define DX dx
+#define EDX dx
+#define BP bp
+#define EBP bp
+#define SI si
+#define ESI si
+#define DI di
+#define EDI di
+#define SP sp
+#define ESP sp
+#define CS cs
+#define SS ss
+#define DS ds
+#define ES es
+#define FS fs
+#define GS gs
+/* Control Registers */
+#define CR0 cr0
+#define CR1 cr1
+#define CR2 cr2
+#define CR3 cr3
+/* Debug Registers */
+#define DR0 dr0
+#define DR1 dr1
+#define DR2 dr2
+#define DR3 dr3
+#define DR4 dr4
+#define DR5 dr5
+#define DR6 dr6
+#define DR7 dr7
+/* Floating-point Stack */
+#define ST st
+
+#define AS_BEGIN .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
+
+
+#define _WTOG o16 /* word toggle for _W instructions */
+#define _LTOG /* long toggle for _L instructions */
+#define ADDR_TOGGLE a16
+#define OPSZ_TOGGLE o16
+#define USE16 .use16
+#define USE32 .use32
+
+#define CHOICE(a,b,c) c
+
+#else /* AT&T or GAS */
+
+/* Redefine register names for GAS & AT&T assemblers */
+#define AL %al
+#define AH %ah
+#define AX %ax
+#define EAX %eax
+#define BL %bl
+#define BH %bh
+#define BX %bx
+#define EBX %ebx
+#define CL %cl
+#define CH %ch
+#define CX %cx
+#define ECX %ecx
+#define DL %dl
+#define DH %dh
+#define DX %dx
+#define EDX %edx
+#define BP %bp
+#define EBP %ebp
+#define SI %si
+#define ESI %esi
+#define DI %di
+#define EDI %edi
+#define SP %sp
+#define ESP %esp
+#define CS %cs
+#define SS %ss
+#define DS %ds
+#define ES %es
+#define FS %fs
+#define GS %gs
+/* Control Registers */
+#define CR0 %cr0
+#define CR1 %cr1
+#define CR2 %cr2
+#define CR3 %cr3
+/* Debug Registers */
+#define DR0 %db0
+#define DR1 %db1
+#define DR2 %db2
+#define DR3 %db3
+#define DR4 %db4
+#define DR5 %db5
+#define DR6 %db6
+#define DR7 %db7
+/* Floating-point Stack */
+#define _STX0 %st(0)
+#define _STX1 %st(1)
+#define _STX2 %st(2)
+#define _STX3 %st(3)
+#define _STX4 %st(4)
+#define _STX5 %st(5)
+#define _STX6 %st(6)
+#define _STX7 %st(7)
+#define ST(x) CONCAT(_STX,x)
+#ifdef GNU_ASSEMBLER
+#define ST0 %st(0)
+#else
+#define ST0 %st
+#endif
+/* MMX Registers */
+#define MM0 %mm0
+#define MM1 %mm1
+#define MM2 %mm2
+#define MM3 %mm3
+#define MM4 %mm4
+#define MM5 %mm5
+#define MM6 %mm6
+#define MM7 %mm7
+/* SSE Registers */
+#define XMM0 %xmm0
+#define XMM1 %xmm1
+#define XMM2 %xmm2
+#define XMM3 %xmm3
+#define XMM4 %xmm4
+#define XMM5 %xmm5
+#define XMM6 %xmm6
+#define XMM7 %xmm7
+
+#define AS_BEGIN
+#define USE16
+#define USE32
+
+#ifdef GNU_ASSEMBLER
+
+#define ADDR_TOGGLE aword
+#define OPSZ_TOGGLE word
+
+#define CHOICE(a,b,c) b
+
+#else
+/*
+ * AT&T ASSEMBLER SYNTAX
+ * *********************
+ */
+#define CHOICE(a,b,c) a
+
+#define ADDR_TOGGLE addr16
+#define OPSZ_TOGGLE data16
+
+#endif /* GNU_ASSEMBLER */
+#endif /* ACK_ASSEMBLER */
+
+
+#if defined(__QNX__) || defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || defined(__ELF__) || defined(__GNU__) || defined(__GNUC__) && !defined(__DJGPP__) && !defined(__MINGW32__)
+#define GLNAME(a) a
+#else
+#define GLNAME(a) CONCAT(_,a)
+#endif
+
+
+ /****************************************/
+ /* */
+ /* Select the various choices */
+ /* */
+ /****************************************/
+
+
+/* Redefine assembler directives */
+/*********************************/
+#define GLOBL CHOICE(.globl, .globl, .extern)
+#define GLOBAL GLOBL
+#define EXTERN GLOBL
+#ifndef __AOUT__
+#define ALIGNTEXT32 CHOICE(.align 32, .balign 32, .align 32)
+#define ALIGNTEXT16 CHOICE(.align 16, .balign 16, .align 16)
+#define ALIGNTEXT8 CHOICE(.align 8, .balign 8, .align 8)
+#define ALIGNTEXT4 CHOICE(.align 4, .balign 4, .align 4)
+#define ALIGNTEXT2 CHOICE(.align 2, .balign 2, .align 2)
+/* ALIGNTEXT4ifNOP is the same as ALIGNTEXT4, but only if the space is
+ * guaranteed to be filled with NOPs. Otherwise it does nothing.
+ */
+#define ALIGNTEXT32ifNOP CHOICE(.align 32, .balign ARG2(32,0x90), /*can't do it*/)
+#define ALIGNTEXT16ifNOP CHOICE(.align 16, .balign ARG2(16,0x90), /*can't do it*/)
+#define ALIGNTEXT8ifNOP CHOICE(.align 8, .balign ARG2(8,0x90), /*can't do it*/)
+#define ALIGNTEXT4ifNOP CHOICE(.align 4, .balign ARG2(4,0x90), /*can't do it*/)
+#define ALIGNDATA32 CHOICE(.align 32, .balign ARG2(32,0x0), .align 32)
+#define ALIGNDATA16 CHOICE(.align 16, .balign ARG2(16,0x0), .align 16)
+#define ALIGNDATA8 CHOICE(.align 8, .balign ARG2(8,0x0), .align 8)
+#define ALIGNDATA4 CHOICE(.align 4, .balign ARG2(4,0x0), .align 4)
+#define ALIGNDATA2 CHOICE(.align 2, .balign ARG2(2,0x0), .align 2)
+#else
+/* 'as -aout' on FreeBSD doesn't have .balign */
+#define ALIGNTEXT32 CHOICE(.align 32, .align ARG2(5,0x90), .align 32)
+#define ALIGNTEXT16 CHOICE(.align 16, .align ARG2(4,0x90), .align 16)
+#define ALIGNTEXT8 CHOICE(.align 8, .align ARG2(3,0x90), .align 8)
+#define ALIGNTEXT4 CHOICE(.align 4, .align ARG2(2,0x90), .align 4)
+#define ALIGNTEXT2 CHOICE(.align 2, .align ARG2(1,0x90), .align 2)
+/* ALIGNTEXT4ifNOP is the same as ALIGNTEXT4, but only if the space is
+ * guaranteed to be filled with NOPs. Otherwise it does nothing.
+ */
+#define ALIGNTEXT32ifNOP CHOICE(.align 32, .align ARG2(5,0x90), /*can't do it*/)
+#define ALIGNTEXT16ifNOP CHOICE(.align 16, .align ARG2(4,0x90), /*can't do it*/)
+#define ALIGNTEXT8ifNOP CHOICE(.align 8, .align ARG2(3,0x90), /*can't do it*/)
+#define ALIGNTEXT4ifNOP CHOICE(.align 4, .align ARG2(2,0x90), /*can't do it*/)
+#define ALIGNDATA32 CHOICE(.align 32, .align ARG2(5,0x0), .align 32)
+#define ALIGNDATA16 CHOICE(.align 16, .align ARG2(4,0x0), .align 16)
+#define ALIGNDATA8 CHOICE(.align 8, .align ARG2(3,0x0), .align 8)
+#define ALIGNDATA4 CHOICE(.align 4, .align ARG2(2,0x0), .align 4)
+#define ALIGNDATA2 CHOICE(.align 2, .align ARG2(1,0x0), .align 2)
+#endif /* __AOUT__ */
+#define FILE(s) CHOICE(.file s, .file s, .file s)
+#define STRING(s) CHOICE(.string s, .asciz s, .asciz s)
+#define D_LONG CHOICE(.long, .long, .data4)
+#define D_WORD CHOICE(.value, .short, .data2)
+#define D_BYTE CHOICE(.byte, .byte, .data1)
+#define SPACE CHOICE(.comm, .space, .space)
+#define COMM CHOICE(.comm, .comm, .comm)
+#define SEG_DATA CHOICE(.data, .data, .sect .data)
+#define SEG_TEXT CHOICE(.text, .text, .sect .text)
+#define SEG_BSS CHOICE(.bss, .bss, .sect .bss)
+
+#ifdef GNU_ASSEMBLER
+#define D_SPACE(n) . = . + n
+#else
+#define D_SPACE(n) .space n
+#endif
+
+/* Addressing Modes */
+/* Immediate Mode */
+#define ADDR(a) CHOICE(CONCAT($,a), $a, a)
+#define CONST(a) CHOICE(CONCAT($,a), $a, a)
+
+/* Indirect Mode */
+#define CONTENT(a) CHOICE(a, a, (a)) /* take contents of variable */
+#define REGIND(a) CHOICE((a), (a), (a)) /* Register a indirect */
+/* Register b indirect plus displacement a */
+#define REGOFF(a, b) CHOICE(a(b), a(b), a(b))
+/* Reg indirect Base + Index + Displacement - this is mainly for 16-bit mode
+ * which has no scaling
+ */
+#define REGBID(b,i,d) CHOICE(d(b,i), d(b,i), d(b)(i))
+/* Reg indirect Base + (Index * Scale) */
+#define REGBIS(b,i,s) CHOICE((b,i,s), (b,i,s), (b)(i*s))
+/* Reg indirect Base + (Index * Scale) + Displacement */
+#define REGBISD(b,i,s,d) CHOICE(d(b,i,s), d(b,i,s), d(b)(i*s))
+/* Displaced Scaled Index: */
+#define REGDIS(d,i,s) CHOICE(d(,i,s), d(,i,s), d(i * s))
+/* Indexed Base: */
+#define REGBI(b,i) CHOICE((b,i), (b,i), (b)(i))
+/* Displaced Base: */
+#define REGDB(d,b) CHOICE(d(b), d(b), d(b))
+/* Variable indirect: */
+#define VARINDIRECT(var) CHOICE(*var, *var, (var))
+/* Use register contents as jump/call target: */
+#define CODEPTR(reg) CHOICE(*reg, *reg, reg)
+
+/* For expressions requiring bracketing
+ * eg. (CRT0_PM | CRT_EM)
+ */
+
+#define EXPR(a) CHOICE([a], (a), [a])
+#define ENOT(a) CHOICE(0!a, ~a, ~a)
+#define EMUL(a,b) CHOICE(a\*b, a*b, a*b)
+#define EDIV(a,b) CHOICE(a\/b, a/b, a/b)
+
+/*
+ * We have to beat the problem of commas within arguments to choice.
+ * eg. choice (add a,b, add b,a) will get argument mismatch. Luckily ANSI
+ * and other known cpp definitions evaluate arguments before substitution
+ * so the following works.
+ */
+#define ARG2(a, b) a,b
+#define ARG3(a,b,c) a,b,c
+
+/* Redefine assembler commands */
+#define AAA CHOICE(aaa, aaa, aaa)
+#define AAD CHOICE(aad, aad, aad)
+#define AAM CHOICE(aam, aam, aam)
+#define AAS CHOICE(aas, aas, aas)
+#define ADC_L(a, b) CHOICE(adcl ARG2(a,b), adcl ARG2(a,b), _LTOG adc ARG2(b,a))
+#define ADC_W(a, b) CHOICE(adcw ARG2(a,b), adcw ARG2(a,b), _WTOG adc ARG2(b,a))
+#define ADC_B(a, b) CHOICE(adcb ARG2(a,b), adcb ARG2(a,b), adcb ARG2(b,a))
+#define ADD_L(a, b) CHOICE(addl ARG2(a,b), addl ARG2(a,b), _LTOG add ARG2(b,a))
+#define ADD_W(a, b) CHOICE(addw ARG2(a,b), addw ARG2(a,b), _WTOG add ARG2(b,a))
+#define ADD_B(a, b) CHOICE(addb ARG2(a,b), addb ARG2(a,b), addb ARG2(b,a))
+#define AND_L(a, b) CHOICE(andl ARG2(a,b), andl ARG2(a,b), _LTOG and ARG2(b,a))
+#define AND_W(a, b) CHOICE(andw ARG2(a,b), andw ARG2(a,b), _WTOG and ARG2(b,a))
+#define AND_B(a, b) CHOICE(andb ARG2(a,b), andb ARG2(a,b), andb ARG2(b,a))
+#define ARPL(a,b) CHOICE(arpl ARG2(a,b), arpl ARG2(a,b), arpl ARG2(b,a))
+#define BOUND_L(a, b) CHOICE(boundl ARG2(a,b), boundl ARG2(b,a), _LTOG bound ARG2(b,a))
+#define BOUND_W(a, b) CHOICE(boundw ARG2(a,b), boundw ARG2(b,a), _WTOG bound ARG2(b,a))
+#define BSF_L(a, b) CHOICE(bsfl ARG2(a,b), bsfl ARG2(a,b), _LTOG bsf ARG2(b,a))
+#define BSF_W(a, b) CHOICE(bsfw ARG2(a,b), bsfw ARG2(a,b), _WTOG bsf ARG2(b,a))
+#define BSR_L(a, b) CHOICE(bsrl ARG2(a,b), bsrl ARG2(a,b), _LTOG bsr ARG2(b,a))
+#define BSR_W(a, b) CHOICE(bsrw ARG2(a,b), bsrw ARG2(a,b), _WTOG bsr ARG2(b,a))
+#define BT_L(a, b) CHOICE(btl ARG2(a,b), btl ARG2(a,b), _LTOG bt ARG2(b,a))
+#define BT_W(a, b) CHOICE(btw ARG2(a,b), btw ARG2(a,b), _WTOG bt ARG2(b,a))
+#define BTC_L(a, b) CHOICE(btcl ARG2(a,b), btcl ARG2(a,b), _LTOG btc ARG2(b,a))
+#define BTC_W(a, b) CHOICE(btcw ARG2(a,b), btcw ARG2(a,b), _WTOG btc ARG2(b,a))
+#define BTR_L(a, b) CHOICE(btrl ARG2(a,b), btrl ARG2(a,b), _LTOG btr ARG2(b,a))
+#define BTR_W(a, b) CHOICE(btrw ARG2(a,b), btrw ARG2(a,b), _WTOG btr ARG2(b,a))
+#define BTS_L(a, b) CHOICE(btsl ARG2(a,b), btsl ARG2(a,b), _LTOG bts ARG2(b,a))
+#define BTS_W(a, b) CHOICE(btsw ARG2(a,b), btsw ARG2(a,b), _WTOG bts ARG2(b,a))
+#define CALL(a) CHOICE(call a, call a, call a)
+#define CALLF(s,a) CHOICE(lcall ARG2(s,a), lcall ARG2(s,a), callf s:a)
+#define CBW CHOICE(cbtw, cbw, cbw)
+#define CWDE CHOICE(cwtd, cwde, cwde)
+#define CLC CHOICE(clc, clc, clc)
+#define CLD CHOICE(cld, cld, cld)
+#define CLI CHOICE(cli, cli, cli)
+#define CLTS CHOICE(clts, clts, clts)
+#define CMC CHOICE(cmc, cmc, cmc)
+#define CMP_L(a, b) CHOICE(cmpl ARG2(a,b), cmpl ARG2(a,b), _LTOG cmp ARG2(b,a))
+#define CMP_W(a, b) CHOICE(cmpw ARG2(a,b), cmpw ARG2(a,b), _WTOG cmp ARG2(b,a))
+#define CMP_B(a, b) CHOICE(cmpb ARG2(a,b), cmpb ARG2(a,b), cmpb ARG2(b,a))
+#define CMPS_L CHOICE(cmpsl, cmpsl, _LTOG cmps)
+#define CMPS_W CHOICE(cmpsw, cmpsw, _WTOG cmps)
+#define CMPS_B CHOICE(cmpsb, cmpsb, cmpsb)
+#define CWD CHOICE(cwtl, cwd, cwd)
+#define CDQ CHOICE(cltd, cdq, cdq)
+#define DAA CHOICE(daa, daa, daa)
+#define DAS CHOICE(das, das, das)
+#define DEC_L(a) CHOICE(decl a, decl a, _LTOG dec a)
+#define DEC_W(a) CHOICE(decw a, decw a, _WTOG dec a)
+#define DEC_B(a) CHOICE(decb a, decb a, decb a)
+#define DIV_L(a) CHOICE(divl a, divl a, div a)
+#define DIV_W(a) CHOICE(divw a, divw a, div a)
+#define DIV_B(a) CHOICE(divb a, divb a, divb a)
+#define ENTER(a,b) CHOICE(enter ARG2(a,b), enter ARG2(a,b), enter ARG2(b,a))
+#define HLT CHOICE(hlt, hlt, hlt)
+#define IDIV_L(a) CHOICE(idivl a, idivl a, _LTOG idiv a)
+#define IDIV_W(a) CHOICE(idivw a, idivw a, _WTOG idiv a)
+#define IDIV_B(a) CHOICE(idivb a, idivb a, idivb a)
+/* More forms than this for imul!! */
+#define IMUL_L(a, b) CHOICE(imull ARG2(a,b), imull ARG2(a,b), _LTOG imul ARG2(b,a))
+#define IMUL_W(a, b) CHOICE(imulw ARG2(a,b), imulw ARG2(a,b), _WTOG imul ARG2(b,a))
+#define IMUL_B(a) CHOICE(imulb a, imulb a, imulb a)
+#define IN_L CHOICE(inl (DX), inl ARG2(DX,EAX), _LTOG in DX)
+#define IN_W CHOICE(inw (DX), inw ARG2(DX,AX), _WTOG in DX)
+#define IN_B CHOICE(inb (DX), inb ARG2(DX,AL), inb DX)
+/* Please AS code writer: use the following ONLY, if you refer to ports<256
+ * directly, but not in IN1_W(DX), for instance, even if IN1_ looks nicer
+ */
+#if defined (sun)
+#define IN1_L(a) CHOICE(inl (a), inl ARG2(a,EAX), _LTOG in a)
+#define IN1_W(a) CHOICE(inw (a), inw ARG2(a,AX), _WTOG in a)
+#define IN1_B(a) CHOICE(inb (a), inb ARG2(a,AL), inb a)
+#else
+#define IN1_L(a) CHOICE(inl a, inl ARG2(a,EAX), _LTOG in a)
+#define IN1_W(a) CHOICE(inw a, inw ARG2(a,AX), _WTOG in a)
+#define IN1_B(a) CHOICE(inb a, inb ARG2(a,AL), inb a)
+#endif
+#define INC_L(a) CHOICE(incl a, incl a, _LTOG inc a)
+#define INC_W(a) CHOICE(incw a, incw a, _WTOG inc a)
+#define INC_B(a) CHOICE(incb a, incb a, incb a)
+#define INS_L CHOICE(insl, insl, _LTOG ins)
+#define INS_W CHOICE(insw, insw, _WTOG ins)
+#define INS_B CHOICE(insb, insb, insb)
+#define INT(a) CHOICE(int a, int a, int a)
+#define INT3 CHOICE(int CONST(3), int3, int CONST(3))
+#define INTO CHOICE(into, into, into)
+#define IRET CHOICE(iret, iret, iret)
+#define IRETD CHOICE(iret, iret, iretd)
+#define JA(a) CHOICE(ja a, ja a, ja a)
+#define JAE(a) CHOICE(jae a, jae a, jae a)
+#define JB(a) CHOICE(jb a, jb a, jb a)
+#define JBE(a) CHOICE(jbe a, jbe a, jbe a)
+#define JC(a) CHOICE(jc a, jc a, jc a)
+#define JE(a) CHOICE(je a, je a, je a)
+#define JG(a) CHOICE(jg a, jg a, jg a)
+#define JGE(a) CHOICE(jge a, jge a, jge a)
+#define JL(a) CHOICE(jl a, jl a, jl a)
+#define JLE(a) CHOICE(jle a, jle a, jle a)
+#define JNA(a) CHOICE(jna a, jna a, jna a)
+#define JNAE(a) CHOICE(jnae a, jnae a, jnae a)
+#define JNB(a) CHOICE(jnb a, jnb a, jnb a)
+#define JNBE(a) CHOICE(jnbe a, jnbe a, jnbe a)
+#define JNC(a) CHOICE(jnc a, jnc a, jnc a)
+#define JNE(a) CHOICE(jne a, jne a, jne a)
+#define JNG(a) CHOICE(jng a, jng a, jng a)
+#define JNGE(a) CHOICE(jnge a, jnge a, jnge a)
+#define JNL(a) CHOICE(jnl a, jnl a, jnl a)
+#define JNLE(a) CHOICE(jnle a, jnle a, jnle a)
+#define JNO(a) CHOICE(jno a, jno a, jno a)
+#define JNP(a) CHOICE(jnp a, jnp a, jnp a)
+#define JNS(a) CHOICE(jns a, jns a, jns a)
+#define JNZ(a) CHOICE(jnz a, jnz a, jnz a)
+#define JO(a) CHOICE(jo a, jo a, jo a)
+#define JP(a) CHOICE(jp a, jp a, jp a)
+#define JPE(a) CHOICE(jpe a, jpe a, jpe a)
+#define JPO(a) CHOICE(jpo a, jpo a, jpo a)
+#define JS(a) CHOICE(js a, js a, js a)
+#define JZ(a) CHOICE(jz a, jz a, jz a)
+#define JMP(a) CHOICE(jmp a, jmp a, jmp a)
+#define JMPF(s,a) CHOICE(ljmp ARG2(s,a), ljmp ARG2(s,a), jmpf s:a)
+#define LAHF CHOICE(lahf, lahf, lahf)
+#if !defined(_REAL_MODE) && !defined(_V86_MODE)
+#define LAR(a, b) CHOICE(lar ARG2(a, b), lar ARG2(a, b), lar ARG2(b, a))
+#endif
+#define LEA_L(a, b) CHOICE(leal ARG2(a,b), leal ARG2(a,b), _LTOG lea ARG2(b,a))
+#define LEA_W(a, b) CHOICE(leaw ARG2(a,b), leaw ARG2(a,b), _WTOG lea ARG2(b,a))
+#define LEAVE CHOICE(leave, leave, leave)
+#define LGDT(a) CHOICE(lgdt a, lgdt a, lgdt a)
+#define LIDT(a) CHOICE(lidt a, lidt a, lidt a)
+#define LDS(a, b) CHOICE(ldsl ARG2(a,b), lds ARG2(a,b), lds ARG2(b,a))
+#define LES(a, b) CHOICE(lesl ARG2(a,b), les ARG2(a,b), les ARG2(b,a))
+#define LFS(a, b) CHOICE(lfsl ARG2(a,b), lfs ARG2(a,b), lfs ARG2(b,a))
+#define LGS(a, b) CHOICE(lgsl ARG2(a,b), lgs ARG2(a,b), lgs ARG2(b,a))
+#define LSS(a, b) CHOICE(lssl ARG2(a,b), lss ARG2(a,b), lss ARG2(b,a))
+#define LLDT(a) CHOICE(lldt a, lldt a, lldt a)
+#define LMSW(a) CHOICE(lmsw a, lmsw a, lmsw a)
+#define LOCK CHOICE(lock, lock, lock)
+#define LODS_L CHOICE(lodsl, lodsl, _LTOG lods)
+#define LODS_W CHOICE(lodsw, lodsw, _WTOG lods)
+#define LODS_B CHOICE(lodsb, lodsb, lodsb)
+#define LOOP(a) CHOICE(loop a, loop a, loop a)
+#define LOOPE(a) CHOICE(loope a, loope a, loope a)
+#define LOOPZ(a) CHOICE(loopz a, loopz a, loopz a)
+#define LOOPNE(a) CHOICE(loopne a, loopne a, loopne a)
+#define LOOPNZ(a) CHOICE(loopnz a, loopnz a, loopnz a)
+#if !defined(_REAL_MODE) && !defined(_V86_MODE)
+#define LSL(a, b) CHOICE(lsl ARG2(a,b), lsl ARG2(a,b), lsl ARG2(b,a))
+#endif
+#define LTR(a) CHOICE(ltr a, ltr a, ltr a)
+#define MOV_SR(a, b) CHOICE(movw ARG2(a,b), mov ARG2(a,b), mov ARG2(b,a))
+#define MOV_L(a, b) CHOICE(movl ARG2(a,b), movl ARG2(a,b), _LTOG mov ARG2(b,a))
+#define MOV_W(a, b) CHOICE(movw ARG2(a,b), movw ARG2(a,b), _WTOG mov ARG2(b,a))
+#define MOV_B(a, b) CHOICE(movb ARG2(a,b), movb ARG2(a,b), movb ARG2(b,a))
+#define MOVS_L CHOICE(movsl, movsl, _LTOG movs)
+#define MOVS_W CHOICE(movsw, movsw, _WTOG movs)
+#define MOVS_B CHOICE(movsb, movsb, movsb)
+#define MOVSX_BL(a, b) CHOICE(movsbl ARG2(a,b), movsbl ARG2(a,b), movsx ARG2(b,a))
+#define MOVSX_BW(a, b) CHOICE(movsbw ARG2(a,b), movsbw ARG2(a,b), movsx ARG2(b,a))
+#define MOVSX_WL(a, b) CHOICE(movswl ARG2(a,b), movswl ARG2(a,b), movsx ARG2(b,a))
+#define MOVZX_BL(a, b) CHOICE(movzbl ARG2(a,b), movzbl ARG2(a,b), movzx ARG2(b,a))
+#define MOVZX_BW(a, b) CHOICE(movzbw ARG2(a,b), movzbw ARG2(a,b), movzx ARG2(b,a))
+#define MOVZX_WL(a, b) CHOICE(movzwl ARG2(a,b), movzwl ARG2(a,b), movzx ARG2(b,a))
+#define MUL_L(a) CHOICE(mull a, mull a, _LTOG mul a)
+#define MUL_W(a) CHOICE(mulw a, mulw a, _WTOG mul a)
+#define MUL_B(a) CHOICE(mulb a, mulb a, mulb a)
+#define NEG_L(a) CHOICE(negl a, negl a, _LTOG neg a)
+#define NEG_W(a) CHOICE(negw a, negw a, _WTOG neg a)
+#define NEG_B(a) CHOICE(negb a, negb a, negb a)
+#define NOP CHOICE(nop, nop, nop)
+#define NOT_L(a) CHOICE(notl a, notl a, _LTOG not a)
+#define NOT_W(a) CHOICE(notw a, notw a, _WTOG not a)
+#define NOT_B(a) CHOICE(notb a, notb a, notb a)
+#define OR_L(a,b) CHOICE(orl ARG2(a,b), orl ARG2(a,b), _LTOG or ARG2(b,a))
+#define OR_W(a,b) CHOICE(orw ARG2(a,b), orw ARG2(a,b), _WTOG or ARG2(b,a))
+#define OR_B(a,b) CHOICE(orb ARG2(a,b), orb ARG2(a,b), orb ARG2(b,a))
+#define OUT_L CHOICE(outl (DX), outl ARG2(EAX,DX), _LTOG out DX)
+#define OUT_W CHOICE(outw (DX), outw ARG2(AX,DX), _WTOG out DX)
+#define OUT_B CHOICE(outb (DX), outb ARG2(AL,DX), outb DX)
+/* Please AS code writer: use the following ONLY, if you refer to ports<256
+ * directly, but not in OUT1_W(DX), for instance, even if OUT1_ looks nicer
+ */
+#define OUT1_L(a) CHOICE(outl (a), outl ARG2(EAX,a), _LTOG out a)
+#define OUT1_W(a) CHOICE(outw (a), outw ARG2(AX,a), _WTOG out a)
+#define OUT1_B(a) CHOICE(outb (a), outb ARG2(AL,a), outb a)
+#define OUTS_L CHOICE(outsl, outsl, _LTOG outs)
+#define OUTS_W CHOICE(outsw, outsw, _WTOG outs)
+#define OUTS_B CHOICE(outsb, outsb, outsb)
+#define POP_SR(a) CHOICE(pop a, pop a, pop a)
+#define POP_L(a) CHOICE(popl a, popl a, _LTOG pop a)
+#define POP_W(a) CHOICE(popw a, popw a, _WTOG pop a)
+#define POPA_L CHOICE(popal, popal, _LTOG popa)
+#define POPA_W CHOICE(popaw, popaw, _WTOG popa)
+#define POPF_L CHOICE(popfl, popfl, _LTOG popf)
+#define POPF_W CHOICE(popfw, popfw, _WTOG popf)
+#define PUSH_SR(a) CHOICE(push a, push a, push a)
+#define PUSH_L(a) CHOICE(pushl a, pushl a, _LTOG push a)
+#define PUSH_W(a) CHOICE(pushw a, pushw a, _WTOG push a)
+#define PUSH_B(a) CHOICE(push a, pushb a, push a)
+#define PUSHA_L CHOICE(pushal, pushal, _LTOG pusha)
+#define PUSHA_W CHOICE(pushaw, pushaw, _WTOG pusha)
+#define PUSHF_L CHOICE(pushfl, pushfl, _LTOG pushf)
+#define PUSHF_W CHOICE(pushfw, pushfw, _WTOG pushf)
+#define RCL_L(a, b) CHOICE(rcll ARG2(a,b), rcll ARG2(a,b), _LTOG rcl ARG2(b,a))
+#define RCL_W(a, b) CHOICE(rclw ARG2(a,b), rclw ARG2(a,b), _WTOG rcl ARG2(b,a))
+#define RCL_B(a, b) CHOICE(rclb ARG2(a,b), rclb ARG2(a,b), rclb ARG2(b,a))
+#define RCR_L(a, b) CHOICE(rcrl ARG2(a,b), rcrl ARG2(a,b), _LTOG rcr ARG2(b,a))
+#define RCR_W(a, b) CHOICE(rcrw ARG2(a,b), rcrw ARG2(a,b), _WTOG rcr ARG2(b,a))
+#define RCR_B(a, b) CHOICE(rcrb ARG2(a,b), rcrb ARG2(a,b), rcrb ARG2(b,a))
+#define ROL_L(a, b) CHOICE(roll ARG2(a,b), roll ARG2(a,b), _LTOG rol ARG2(b,a))
+#define ROL_W(a, b) CHOICE(rolw ARG2(a,b), rolw ARG2(a,b), _WTOG rol ARG2(b,a))
+#define ROL_B(a, b) CHOICE(rolb ARG2(a,b), rolb ARG2(a,b), rolb ARG2(b,a))
+#define ROR_L(a, b) CHOICE(rorl ARG2(a,b), rorl ARG2(a,b), _LTOG ror ARG2(b,a))
+#define ROR_W(a, b) CHOICE(rorw ARG2(a,b), rorw ARG2(a,b), _WTOG ror ARG2(b,a))
+#define ROR_B(a, b) CHOICE(rorb ARG2(a,b), rorb ARG2(a,b), rorb ARG2(b,a))
+#define REP CHOICE(rep ;, rep ;, repe)
+#define REPE CHOICE(repz ;, repe ;, repe)
+#define REPNE CHOICE(repnz ;, repne ;, repne)
+#define REPNZ REPNE
+#define REPZ REPE
+#define RET CHOICE(ret, ret, ret)
+#define SAHF CHOICE(sahf, sahf, sahf)
+#define SAL_L(a, b) CHOICE(sall ARG2(a,b), sall ARG2(a,b), _LTOG sal ARG2(b,a))
+#define SAL_W(a, b) CHOICE(salw ARG2(a,b), salw ARG2(a,b), _WTOG sal ARG2(b,a))
+#define SAL_B(a, b) CHOICE(salb ARG2(a,b), salb ARG2(a,b), salb ARG2(b,a))
+#define SAR_L(a, b) CHOICE(sarl ARG2(a,b), sarl ARG2(a,b), _LTOG sar ARG2(b,a))
+#define SAR_W(a, b) CHOICE(sarw ARG2(a,b), sarw ARG2(a,b), _WTOG sar ARG2(b,a))
+#define SAR_B(a, b) CHOICE(sarb ARG2(a,b), sarb ARG2(a,b), sarb ARG2(b,a))
+#define SBB_L(a, b) CHOICE(sbbl ARG2(a,b), sbbl ARG2(a,b), _LTOG sbb ARG2(b,a))
+#define SBB_W(a, b) CHOICE(sbbw ARG2(a,b), sbbw ARG2(a,b), _WTOG sbb ARG2(b,a))
+#define SBB_B(a, b) CHOICE(sbbb ARG2(a,b), sbbb ARG2(a,b), sbbb ARG2(b,a))
+#define SCAS_L CHOICE(scasl, scasl, _LTOG scas)
+#define SCAS_W CHOICE(scasw, scasw, _WTOG scas)
+#define SCAS_B CHOICE(scasb, scasb, scasb)
+#define SETA(a) CHOICE(seta a, seta a, seta a)
+#define SETAE(a) CHOICE(setae a, setae a, setae a)
+#define SETB(a) CHOICE(setb a, setb a, setb a)
+#define SETBE(a) CHOICE(setbe a, setbe a, setbe a)
+#define SETC(a) CHOICE(setc a, setb a, setb a)
+#define SETE(a) CHOICE(sete a, sete a, sete a)
+#define SETG(a) CHOICE(setg a, setg a, setg a)
+#define SETGE(a) CHOICE(setge a, setge a, setge a)
+#define SETL(a) CHOICE(setl a, setl a, setl a)
+#define SETLE(a) CHOICE(setle a, setle a, setle a)
+#define SETNA(a) CHOICE(setna a, setna a, setna a)
+#define SETNAE(a) CHOICE(setnae a, setnae a, setnae a)
+#define SETNB(a) CHOICE(setnb a, setnb a, setnb a)
+#define SETNBE(a) CHOICE(setnbe a, setnbe a, setnbe a)
+#define SETNC(a) CHOICE(setnc a, setnb a, setnb a)
+#define SETNE(a) CHOICE(setne a, setne a, setne a)
+#define SETNG(a) CHOICE(setng a, setng a, setng a)
+#define SETNGE(a) CHOICE(setnge a, setnge a, setnge a)
+#define SETNL(a) CHOICE(setnl a, setnl a, setnl a)
+#define SETNLE(a) CHOICE(setnle a, setnle a, setnle a)
+#define SETNO(a) CHOICE(setno a, setno a, setno a)
+#define SETNP(a) CHOICE(setnp a, setnp a, setnp a)
+#define SETNS(a) CHOICE(setns a, setns a, setna a)
+#define SETNZ(a) CHOICE(setnz a, setnz a, setnz a)
+#define SETO(a) CHOICE(seto a, seto a, seto a)
+#define SETP(a) CHOICE(setp a, setp a, setp a)
+#define SETPE(a) CHOICE(setpe a, setpe a, setpe a)
+#define SETPO(a) CHOICE(setpo a, setpo a, setpo a)
+#define SETS(a) CHOICE(sets a, sets a, seta a)
+#define SETZ(a) CHOICE(setz a, setz a, setz a)
+#define SGDT(a) CHOICE(sgdt a, sgdt a, sgdt a)
+#define SIDT(a) CHOICE(sidt a, sidt a, sidt a)
+#define SHL_L(a, b) CHOICE(shll ARG2(a,b), shll ARG2(a,b), _LTOG shl ARG2(b,a))
+#define SHL_W(a, b) CHOICE(shlw ARG2(a,b), shlw ARG2(a,b), _WTOG shl ARG2(b,a))
+#define SHL_B(a, b) CHOICE(shlb ARG2(a,b), shlb ARG2(a,b), shlb ARG2(b,a))
+#define SHLD_L(a,b,c) CHOICE(shldl ARG3(a,b,c), shldl ARG3(a,b,c), _LTOG shld ARG3(c,b,a))
+#define SHLD2_L(a,b) CHOICE(shldl ARG2(a,b), shldl ARG3(CL,a,b), _LTOG shld ARG3(b,a,CL))
+#define SHLD_W(a,b,c) CHOICE(shldw ARG3(a,b,c), shldw ARG3(a,b,c), _WTOG shld ARG3(c,b,a))
+#define SHLD2_W(a,b) CHOICE(shldw ARG2(a,b), shldw ARG3(CL,a,b), _WTOG shld ARG3(b,a,CL))
+#define SHR_L(a, b) CHOICE(shrl ARG2(a,b), shrl ARG2(a,b), _LTOG shr ARG2(b,a))
+#define SHR_W(a, b) CHOICE(shrw ARG2(a,b), shrw ARG2(a,b), _WTOG shr ARG2(b,a))
+#define SHR_B(a, b) CHOICE(shrb ARG2(a,b), shrb ARG2(a,b), shrb ARG2(b,a))
+#define SHRD_L(a,b,c) CHOICE(shrdl ARG3(a,b,c), shrdl ARG3(a,b,c), _LTOG shrd ARG3(c,b,a))
+#define SHRD2_L(a,b) CHOICE(shrdl ARG2(a,b), shrdl ARG3(CL,a,b), _LTOG shrd ARG3(b,a,CL))
+#define SHRD_W(a,b,c) CHOICE(shrdw ARG3(a,b,c), shrdw ARG3(a,b,c), _WTOG shrd ARG3(c,b,a))
+#define SHRD2_W(a,b) CHOICE(shrdw ARG2(a,b), shrdw ARG3(CL,a,b), _WTOG shrd ARG3(b,a,CL))
+#define SLDT(a) CHOICE(sldt a, sldt a, sldt a)
+#define SMSW(a) CHOICE(smsw a, smsw a, smsw a)
+#define STC CHOICE(stc, stc, stc)
+#define STD CHOICE(std, std, std)
+#define STI CHOICE(sti, sti, sti)
+#define STOS_L CHOICE(stosl, stosl, _LTOG stos)
+#define STOS_W CHOICE(stosw, stosw, _WTOG stos)
+#define STOS_B CHOICE(stosb, stosb, stosb)
+#define STR(a) CHOICE(str a, str a, str a)
+#define SUB_L(a, b) CHOICE(subl ARG2(a,b), subl ARG2(a,b), _LTOG sub ARG2(b,a))
+#define SUB_W(a, b) CHOICE(subw ARG2(a,b), subw ARG2(a,b), _WTOG sub ARG2(b,a))
+#define SUB_B(a, b) CHOICE(subb ARG2(a,b), subb ARG2(a,b), subb ARG2(b,a))
+#define TEST_L(a, b) CHOICE(testl ARG2(a,b), testl ARG2(a,b), _LTOG test ARG2(b,a))
+#define TEST_W(a, b) CHOICE(testw ARG2(a,b), testw ARG2(a,b), _WTOG test ARG2(b,a))
+#define TEST_B(a, b) CHOICE(testb ARG2(a,b), testb ARG2(a,b), testb ARG2(b,a))
+#define VERR(a) CHOICE(verr a, verr a, verr a)
+#define VERW(a) CHOICE(verw a, verw a, verw a)
+#define WAIT CHOICE(wait, wait, wait)
+#define XCHG_L(a, b) CHOICE(xchgl ARG2(a,b), xchgl ARG2(a,b), _LTOG xchg ARG2(b,a))
+#define XCHG_W(a, b) CHOICE(xchgw ARG2(a,b), xchgw ARG2(a,b), _WTOG xchg ARG2(b,a))
+#define XCHG_B(a, b) CHOICE(xchgb ARG2(a,b), xchgb ARG2(a,b), xchgb ARG2(b,a))
+#define XLAT CHOICE(xlat, xlat, xlat)
+#define XOR_L(a, b) CHOICE(xorl ARG2(a,b), xorl ARG2(a,b), _LTOG xor ARG2(b,a))
+#define XOR_W(a, b) CHOICE(xorw ARG2(a,b), xorw ARG2(a,b), _WTOG xor ARG2(b,a))
+#define XOR_B(a, b) CHOICE(xorb ARG2(a,b), xorb ARG2(a,b), xorb ARG2(b,a))
+
+
+/* Floating Point Instructions */
+#define F2XM1 CHOICE(f2xm1, f2xm1, f2xm1)
+#define FABS CHOICE(fabs, fabs, fabs)
+#define FADD_D(a) CHOICE(faddl a, faddl a, faddd a)
+#define FADD_S(a) CHOICE(fadds a, fadds a, fadds a)
+#define FADD2(a, b) CHOICE(fadd ARG2(a,b), fadd ARG2(a,b), fadd ARG2(b,a))
+#define FADDP(a, b) CHOICE(faddp ARG2(a,b), faddp ARG2(a,b), faddp ARG2(b,a))
+#define FIADD_L(a) CHOICE(fiaddl a, fiaddl a, fiaddl a)
+#define FIADD_W(a) CHOICE(fiadd a, fiadds a, fiadds a)
+#define FBLD(a) CHOICE(fbld a, fbld a, fbld a)
+#define FBSTP(a) CHOICE(fbstp a, fbstp a, fbstp a)
+#define FCHS CHOICE(fchs, fchs, fchs)
+#define FCLEX CHOICE(fclex, wait; fnclex, wait; fclex)
+#define FNCLEX CHOICE(fnclex, fnclex, fclex)
+#define FCOM(a) CHOICE(fcom a, fcom a, fcom a)
+#define FCOM_D(a) CHOICE(fcoml a, fcoml a, fcomd a)
+#define FCOM_S(a) CHOICE(fcoms a, fcoms a, fcoms a)
+#define FCOMP(a) CHOICE(fcomp a, fcomp a, fcomp a)
+#define FCOMP_D(a) CHOICE(fcompl a, fcompl a, fcompd a)
+#define FCOMP_S(a) CHOICE(fcomps a, fcomps a, fcomps a)
+#define FCOMPP CHOICE(fcompp, fcompp, fcompp)
+#define FCOS CHOICE(fcos, fcos, fcos)
+#define FDECSTP CHOICE(fdecstp, fdecstp, fdecstp)
+#define FDIV_D(a) CHOICE(fdivl a, fdivl a, fdivd a)
+#define FDIV_S(a) CHOICE(fdivs a, fdivs a, fdivs a)
+#define FDIV2(a, b) CHOICE(fdiv ARG2(a,b), fdiv ARG2(a,b), fdiv ARG2(b,a))
+#define FDIVP(a, b) CHOICE(fdivp ARG2(a,b), fdivp ARG2(a,b), fdivp ARG2(b,a))
+#define FIDIV_L(a) CHOICE(fidivl a, fidivl a, fidivl a)
+#define FIDIV_W(a) CHOICE(fidiv a, fidivs a, fidivs a)
+#define FDIVR_D(a) CHOICE(fdivrl a, fdivrl a, fdivrd a)
+#define FDIVR_S(a) CHOICE(fdivrs a, fdivrs a, fdivrs a)
+#define FDIVR2(a, b) CHOICE(fdivr ARG2(a,b), fdivr ARG2(a,b), fdivr ARG2(b,a))
+#define FDIVRP(a, b) CHOICE(fdivrp ARG2(a,b), fdivrp ARG2(a,b), fdivrp ARG2(b,a))
+#define FIDIVR_L(a) CHOICE(fidivrl a, fidivrl a, fidivrl a)
+#define FIDIVR_W(a) CHOICE(fidivr a, fidivrs a, fidivrs a)
+#define FFREE(a) CHOICE(ffree a, ffree a, ffree a)
+#define FICOM_L(a) CHOICE(ficoml a, ficoml a, ficoml a)
+#define FICOM_W(a) CHOICE(ficom a, ficoms a, ficoms a)
+#define FICOMP_L(a) CHOICE(ficompl a, ficompl a, ficompl a)
+#define FICOMP_W(a) CHOICE(ficomp a, ficomps a, ficomps a)
+#define FILD_Q(a) CHOICE(fildll a, fildq a, fildq a)
+#define FILD_L(a) CHOICE(fildl a, fildl a, fildl a)
+#define FILD_W(a) CHOICE(fild a, filds a, filds a)
+#define FINCSTP CHOICE(fincstp, fincstp, fincstp)
+#define FINIT CHOICE(finit, wait; fninit, wait; finit)
+#define FNINIT CHOICE(fninit, fninit, finit)
+#define FIST_L(a) CHOICE(fistl a, fistl a, fistl a)
+#define FIST_W(a) CHOICE(fist a, fists a, fists a)
+#define FISTP_Q(a) CHOICE(fistpll a, fistpq a, fistpq a)
+#define FISTP_L(a) CHOICE(fistpl a, fistpl a, fistpl a)
+#define FISTP_W(a) CHOICE(fistp a, fistps a, fistps a)
+#define FLD_X(a) CHOICE(fldt a, fldt a, fldx a) /* 80 bit data type! */
+#define FLD_D(a) CHOICE(fldl a, fldl a, fldd a)
+#define FLD_S(a) CHOICE(flds a, flds a, flds a)
+#define FLD1 CHOICE(fld1, fld1, fld1)
+#define FLDL2T CHOICE(fldl2t, fldl2t, fldl2t)
+#define FLDL2E CHOICE(fldl2e, fldl2e, fldl2e)
+#define FLDPI CHOICE(fldpi, fldpi, fldpi)
+#define FLDLG2 CHOICE(fldlg2, fldlg2, fldlg2)
+#define FLDLN2 CHOICE(fldln2, fldln2, fldln2)
+#define FLDZ CHOICE(fldz, fldz, fldz)
+#define FLDCW(a) CHOICE(fldcw a, fldcw a, fldcw a)
+#define FLDENV(a) CHOICE(fldenv a, fldenv a, fldenv a)
+#define FMUL_S(a) CHOICE(fmuls a, fmuls a, fmuls a)
+#define FMUL_D(a) CHOICE(fmull a, fmull a, fmuld a)
+#define FMUL2(a, b) CHOICE(fmul ARG2(a,b), fmul ARG2(a,b), fmul ARG2(b,a))
+#define FMULP(a, b) CHOICE(fmulp ARG2(a,b), fmulp ARG2(a,b), fmulp ARG2(b,a))
+#define FIMUL_L(a) CHOICE(fimull a, fimull a, fimull a)
+#define FIMUL_W(a) CHOICE(fimul a, fimuls a, fimuls a)
+#define FNOP CHOICE(fnop, fnop, fnop)
+#define FPATAN CHOICE(fpatan, fpatan, fpatan)
+#define FPREM CHOICE(fprem, fprem, fprem)
+#define FPREM1 CHOICE(fprem1, fprem1, fprem1)
+#define FPTAN CHOICE(fptan, fptan, fptan)
+#define FRNDINT CHOICE(frndint, frndint, frndint)
+#define FRSTOR(a) CHOICE(frstor a, frstor a, frstor a)
+#define FSAVE(a) CHOICE(fsave a, wait; fnsave a, wait; fsave a)
+#define FNSAVE(a) CHOICE(fnsave a, fnsave a, fsave a)
+#define FSCALE CHOICE(fscale, fscale, fscale)
+#define FSIN CHOICE(fsin, fsin, fsin)
+#define FSINCOS CHOICE(fsincos, fsincos, fsincos)
+#define FSQRT CHOICE(fsqrt, fsqrt, fsqrt)
+#define FST_D(a) CHOICE(fstl a, fstl a, fstd a)
+#define FST_S(a) CHOICE(fsts a, fsts a, fsts a)
+#define FSTP_X(a) CHOICE(fstpt a, fstpt a, fstpx a)
+#define FSTP_D(a) CHOICE(fstpl a, fstpl a, fstpd a)
+#define FSTP_S(a) CHOICE(fstps a, fstps a, fstps a)
+#define FSTP(a) CHOICE(fstp a, fstp a, fstp a)
+#define FSTCW(a) CHOICE(fstcw a, wait; fnstcw a, wait; fstcw a)
+#define FNSTCW(a) CHOICE(fnstcw a, fnstcw a, fstcw a)
+#define FSTENV(a) CHOICE(fstenv a, wait; fnstenv a, fstenv a)
+#define FNSTENV(a) CHOICE(fnstenv a, fnstenv a, fstenv a)
+#define FSTSW(a) CHOICE(fstsw a, wait; fnstsw a, wait; fstsw a)
+#define FNSTSW(a) CHOICE(fnstsw a, fnstsw a, fstsw a)
+#define FSUB_S(a) CHOICE(fsubs a, fsubs a, fsubs a)
+#define FSUB_D(a) CHOICE(fsubl a, fsubl a, fsubd a)
+#define FSUB2(a, b) CHOICE(fsub ARG2(a,b), fsub ARG2(a,b), fsub ARG2(b,a))
+#define FSUBP(a, b) CHOICE(fsubp ARG2(a,b), fsubp ARG2(a,b), fsubp ARG2(b,a))
+#define FISUB_L(a) CHOICE(fisubl a, fisubl a, fisubl a)
+#define FISUB_W(a) CHOICE(fisub a, fisubs a, fisubs a)
+#define FSUBR_S(a) CHOICE(fsubrs a, fsubrs a, fsubrs a)
+#define FSUBR_D(a) CHOICE(fsubrl a, fsubrl a, fsubrd a)
+#define FSUBR2(a, b) CHOICE(fsubr ARG2(a,b), fsubr ARG2(a,b), fsubr ARG2(b,a))
+#define FSUBRP(a, b) CHOICE(fsubrp ARG2(a,b), fsubrp ARG2(a,b), fsubrp ARG2(b,a))
+#define FISUBR_L(a) CHOICE(fisubrl a, fisubrl a, fisubrl a)
+#define FISUBR_W(a) CHOICE(fisubr a, fisubrs a, fisubrs a)
+#define FTST CHOICE(ftst, ftst, ftst)
+#define FUCOM(a) CHOICE(fucom a, fucom a, fucom a)
+#define FUCOMP(a) CHOICE(fucomp a, fucomp a, fucomp a)
+#define FUCOMPP CHOICE(fucompp, fucompp, fucompp)
+#define FWAIT CHOICE(wait, wait, wait)
+#define FXAM CHOICE(fxam, fxam, fxam)
+#define FXCH(a) CHOICE(fxch a, fxch a, fxch a)
+#define FXTRACT CHOICE(fxtract, fxtract, fxtract)
+#define FYL2X CHOICE(fyl2x, fyl2x, fyl2x)
+#define FYL2XP1 CHOICE(fyl2xp1, fyl2xp1, fyl2xp1)
+
+/* New instructions */
+#define CPUID CHOICE(D_BYTE ARG2(15, 162), cpuid, D_BYTE ARG2(15, 162))
+#define RDTSC CHOICE(D_BYTE ARG2(15, 49), rdtsc, D_BYTE ARG2(15, 49))
+
+#else /* NASM_ASSEMBLER || MASM_ASSEMBLER is defined */
+
+ /****************************************/
+ /* */
+ /* Intel style assemblers. */
+ /* (NASM and MASM) */
+ /* */
+ /****************************************/
+
+#define P_EAX EAX
+#define L_EAX EAX
+#define W_AX AX
+#define B_AH AH
+#define B_AL AL
+
+#define P_EBX EBX
+#define L_EBX EBX
+#define W_BX BX
+#define B_BH BH
+#define B_BL BL
+
+#define P_ECX ECX
+#define L_ECX ECX
+#define W_CX CX
+#define B_CH CH
+#define B_CL CL
+
+#define P_EDX EDX
+#define L_EDX EDX
+#define W_DX DX
+#define B_DH DH
+#define B_DL DL
+
+#define P_EBP EBP
+#define L_EBP EBP
+#define W_BP BP
+
+#define P_ESI ESI
+#define L_ESI ESI
+#define W_SI SI
+
+#define P_EDI EDI
+#define L_EDI EDI
+#define W_DI DI
+
+#define P_ESP ESP
+#define L_ESP ESP
+#define W_SP SP
+
+#define W_CS CS
+#define W_SS SS
+#define W_DS DS
+#define W_ES ES
+#define W_FS FS
+#define W_GS GS
+
+#define X_ST ST
+#define D_ST ST
+#define L_ST ST
+
+#define P_MM0 mm0
+#define P_MM1 mm1
+#define P_MM2 mm2
+#define P_MM3 mm3
+#define P_MM4 mm4
+#define P_MM5 mm5
+#define P_MM6 mm6
+#define P_MM7 mm7
+
+#define P_XMM0 xmm0
+#define P_XMM1 xmm1
+#define P_XMM2 xmm2
+#define P_XMM3 xmm3
+#define P_XMM4 xmm4
+#define P_XMM5 xmm5
+#define P_XMM6 xmm6
+#define P_XMM7 xmm7
+
+#define CONCAT(x, y) x ## y
+#define CONCAT3(x, y, z) x ## y ## z
+
+#if defined(NASM_ASSEMBLER)
+
+#define ST(n) st ## n
+#define ST0 st0
+
+#define TBYTE_PTR tword
+#define QWORD_PTR qword
+#define DWORD_PTR dword
+#define WORD_PTR word
+#define BYTE_PTR byte
+
+#define OFFSET
+
+#define GLOBL GLOBAL
+#define ALIGNTEXT32 ALIGN 32
+#define ALIGNTEXT16 ALIGN 16
+#define ALIGNTEXT8 ALIGN 8
+#define ALIGNTEXT4 ALIGN 4
+#define ALIGNTEXT2 ALIGN 2
+#define ALIGNTEXT32ifNOP ALIGN 32
+#define ALIGNTEXT16ifNOP ALIGN 16
+#define ALIGNTEXT8ifNOP ALIGN 8
+#define ALIGNTEXT4ifNOP ALIGN 4
+#define ALIGNDATA32 ALIGN 32
+#define ALIGNDATA16 ALIGN 16
+#define ALIGNDATA8 ALIGN 8
+#define ALIGNDATA4 ALIGN 4
+#define ALIGNDATA2 ALIGN 2
+#define FILE(s)
+#define STRING(s) db s
+#define D_LONG dd
+#define D_WORD dw
+#define D_BYTE db
+/* #define SPACE */
+/* #define COMM */
+#if defined(__WATCOMC__)
+SECTION _TEXT public align=16 class=CODE use32 flat
+SECTION _DATA public align=16 class=DATA use32 flat
+#define SEG_TEXT SECTION _TEXT
+#define SEG_DATA SECTION _DATA
+#define SEG_BSS SECTION .bss
+#else
+#define SEG_DATA SECTION .data
+#define SEG_TEXT SECTION .text
+#define SEG_BSS SECTION .bss
+#endif
+
+#define D_SPACE(n) db n REP 0
+
+#define AS_BEGIN
+
+/* Jcc's should be handled better than this... */
+#define NEAR near
+
+#else /* MASM */
+
+#define TBYTE_PTR tbyte ptr
+#define QWORD_PTR qword ptr
+#define DWORD_PTR dword ptr
+#define WORD_PTR word ptr
+#define BYTE_PTR byte ptr
+
+#define OFFSET offset
+
+#define GLOBL GLOBAL
+#define ALIGNTEXT32 ALIGN 32
+#define ALIGNTEXT16 ALIGN 16
+#define ALIGNTEXT8 ALIGN 8
+#define ALIGNTEXT4 ALIGN 4
+#define ALIGNTEXT2 ALIGN 2
+#define ALIGNTEXT32ifNOP ALIGN 32
+#define ALIGNTEXT16ifNOP ALIGN 16
+#define ALIGNTEXT8ifNOP ALIGN 8
+#define ALIGNTEXT4ifNOP ALIGN 4
+#define ALIGNDATA32 ALIGN 32
+#define ALIGNDATA16 ALIGN 16
+#define ALIGNDATA8 ALIGN 8
+#define ALIGNDATA4 ALIGN 4
+#define ALIGNDATA2 ALIGN 2
+#define FILE(s)
+#define STRING(s) db s
+#define D_LONG dd
+#define D_WORD dw
+#define D_BYTE db
+/* #define SPACE */
+/* #define COMM */
+#define SEG_DATA .DATA
+#define SEG_TEXT .CODE
+#define SEG_BSS .DATA
+
+#define D_SPACE(n) db n REP 0
+
+#define AS_BEGIN
+
+#define NEAR
+
+#endif
+
+#if defined(Lynx) || (defined(SYSV) || defined(SVR4)) \
+ || (defined(__linux__) || defined(__OS2ELF__)) && defined(__ELF__) \
+ || (defined(__FreeBSD__) && __FreeBSD__ >= 3) \
+ || (defined(__NetBSD__) && defined(__ELF__))
+#define GLNAME(a) a
+#else
+#define GLNAME(a) CONCAT(_, a)
+#endif
+
+/*
+ * Addressing Modes
+ */
+
+/* Immediate Mode */
+#define P_ADDR(a) OFFSET a
+#define X_ADDR(a) OFFSET a
+#define D_ADDR(a) OFFSET a
+#define L_ADDR(a) OFFSET a
+#define W_ADDR(a) OFFSET a
+#define B_ADDR(a) OFFSET a
+
+#define P_CONST(a) a
+#define X_CONST(a) a
+#define D_CONST(a) a
+#define L_CONST(a) a
+#define W_CONST(a) a
+#define B_CONST(a) a
+
+/* Indirect Mode */
+#ifdef NASM_ASSEMBLER
+#define P_CONTENT(a) [a]
+#define X_CONTENT(a) TBYTE_PTR [a]
+#define D_CONTENT(a) QWORD_PTR [a]
+#define L_CONTENT(a) DWORD_PTR [a]
+#define W_CONTENT(a) WORD_PTR [a]
+#define B_CONTENT(a) BYTE_PTR [a]
+#else
+#define P_CONTENT(a) a
+#define X_CONTENT(a) TBYTE_PTR a
+#define D_CONTENT(a) QWORD_PTR a
+#define L_CONTENT(a) DWORD_PTR a
+#define W_CONTENT(a) WORD_PTR a
+#define B_CONTENT(a) BYTE_PTR a
+#endif
+
+/* Register a indirect */
+#define P_REGIND(a) [a]
+#define X_REGIND(a) TBYTE_PTR [a]
+#define D_REGIND(a) QWORD_PTR [a]
+#define L_REGIND(a) DWORD_PTR [a]
+#define W_REGIND(a) WORD_PTR [a]
+#define B_REGIND(a) BYTE_PTR [a]
+
+/* Register b indirect plus displacement a */
+#define P_REGOFF(a, b) [b + a]
+#define X_REGOFF(a, b) TBYTE_PTR [b + a]
+#define D_REGOFF(a, b) QWORD_PTR [b + a]
+#define L_REGOFF(a, b) DWORD_PTR [b + a]
+#define W_REGOFF(a, b) WORD_PTR [b + a]
+#define B_REGOFF(a, b) BYTE_PTR [b + a]
+
+/* Reg indirect Base + Index + Displacement - this is mainly for 16-bit mode
+ * which has no scaling
+ */
+#define P_REGBID(b, i, d) [b + i + d]
+#define X_REGBID(b, i, d) TBYTE_PTR [b + i + d]
+#define D_REGBID(b, i, d) QWORD_PTR [b + i + d]
+#define L_REGBID(b, i, d) DWORD_PTR [b + i + d]
+#define W_REGBID(b, i, d) WORD_PTR [b + i + d]
+#define B_REGBID(b, i, d) BYTE_PTR [b + i + d]
+
+/* Reg indirect Base + (Index * Scale) */
+#define P_REGBIS(b, i, s) [b + i * s]
+#define X_REGBIS(b, i, s) TBYTE_PTR [b + i * s]
+#define D_REGBIS(b, i, s) QWORD_PTR [b + i * s]
+#define L_REGBIS(b, i, s) DWORD_PTR [b + i * s]
+#define W_REGBIS(b, i, s) WORD_PTR [b + i * s]
+#define B_REGBIS(b, i, s) BYTE_PTR [b + i * s]
+
+/* Reg indirect Base + (Index * Scale) + Displacement */
+#define P_REGBISD(b, i, s, d) [b + i * s + d]
+#define X_REGBISD(b, i, s, d) TBYTE_PTR [b + i * s + d]
+#define D_REGBISD(b, i, s, d) QWORD_PTR [b + i * s + d]
+#define L_REGBISD(b, i, s, d) DWORD_PTR [b + i * s + d]
+#define W_REGBISD(b, i, s, d) WORD_PTR [b + i * s + d]
+#define B_REGBISD(b, i, s, d) BYTE_PTR [b + i * s + d]
+
+/* Displaced Scaled Index: */
+#define P_REGDIS(d, i, s) [i * s + d]
+#define X_REGDIS(d, i, s) TBYTE_PTR [i * s + d]
+#define D_REGDIS(d, i, s) QWORD_PTR [i * s + d]
+#define L_REGDIS(d, i, s) DWORD_PTR [i * s + d]
+#define W_REGDIS(d, i, s) WORD_PTR [i * s + d]
+#define B_REGDIS(d, i, s) BYTE_PTR [i * s + d]
+
+/* Indexed Base: */
+#define P_REGBI(b, i) [b + i]
+#define X_REGBI(b, i) TBYTE_PTR [b + i]
+#define D_REGBI(b, i) QWORD_PTR [b + i]
+#define L_REGBI(b, i) DWORD_PTR [b + i]
+#define W_REGBI(b, i) WORD_PTR [b + i]
+#define B_REGBI(b, i) BYTE_PTR [b + i]
+
+/* Displaced Base: */
+#define P_REGDB(d, b) [b + d]
+#define X_REGDB(d, b) TBYTE_PTR [b + d]
+#define D_REGDB(d, b) QWORD_PTR [b + d]
+#define L_REGDB(d, b) DWORD_PTR [b + d]
+#define W_REGDB(d, b) WORD_PTR [b + d]
+#define B_REGDB(d, b) BYTE_PTR [b + d]
+
+/* Variable indirect: */
+#define VARINDIRECT(var) [var]
+
+/* Use register contents as jump/call target: */
+#define CODEPTR(reg) P_(reg)
+
+/*
+ * Redefine assembler commands
+ */
+
+#define P_(a) P_ ## a
+#define X_(a) X_ ## a
+#define D_(a) D_ ## a
+#define SR_(a) W_ ## a
+#define S_(a) L_ ## a
+#define L_(a) L_ ## a
+#define W_(a) W_ ## a
+#define B_(a) B_ ## a
+
+#define AAA aaa
+#define AAD aad
+#define AAM aam
+#define AAS aas
+#define ADC_L(a, b) adc L_(b), L_(a)
+#define ADC_W(a, b) adc W_(b), W_(a)
+#define ADC_B(a, b) adc B_(b), B_(a)
+#define ADD_L(a, b) add L_(b), L_(a)
+#define ADD_W(a, b) add W_(b), W_(a)
+#define ADD_B(a, b) add B_(b), B_(a)
+#define AND_L(a, b) and L_(b), L_(a)
+#define AND_W(a, b) and W_(b), W_(a)
+#define AND_B(a, b) and B_(b), B_(a)
+#define ARPL(a,b) arpl W_(b), a
+#define BOUND_L(a, b) bound L_(b), L_(a)
+#define BOUND_W(a, b) bound W_(b), W_(a)
+#define BSF_L(a, b) bsf L_(b), L_(a)
+#define BSF_W(a, b) bsf W_(b), W_(a)
+#define BSR_L(a, b) bsr L_(b), L_(a)
+#define BSR_W(a, b) bsr W_(b), W_(a)
+#define BT_L(a, b) bt L_(b), L_(a)
+#define BT_W(a, b) bt W_(b), W_(a)
+#define BTC_L(a, b) btc L_(b), L_(a)
+#define BTC_W(a, b) btc W_(b), W_(a)
+#define BTR_L(a, b) btr L_(b), L_(a)
+#define BTR_W(a, b) btr W_(b), W_(a)
+#define BTS_L(a, b) bts L_(b), L_(a)
+#define BTS_W(a, b) bts W_(b), W_(a)
+#define CALL(a) call a
+#define CALLF(s,a) call far s:a
+#define CBW cbw
+#define CWDE cwde
+#define CLC clc
+#define CLD cld
+#define CLI cli
+#define CLTS clts
+#define CMC cmc
+#define CMP_L(a, b) cmp L_(b), L_(a)
+#define CMP_W(a, b) cmp W_(b), W_(a)
+#define CMP_B(a, b) cmp B_(b), B_(a)
+#define CMPS_L cmpsd
+#define CMPS_W cmpsw
+#define CMPS_B cmpsb
+#define CPUID cpuid
+#define CWD cwd
+#define CDQ cdq
+#define DAA daa
+#define DAS das
+#define DEC_L(a) dec L_(a)
+#define DEC_W(a) dec W_(a)
+#define DEC_B(a) dec B_(a)
+#define DIV_L(a) div L_(a)
+#define DIV_W(a) div W_(a)
+#define DIV_B(a) div B_(a)
+#define ENTER(a,b) enter b, a
+#define HLT hlt
+#define IDIV_L(a) idiv L_(a)
+#define IDIV_W(a) idiv W_(a)
+#define IDIV_B(a) idiv B_(a)
+#define IMUL_L(a, b) imul L_(b), L_(a)
+#define IMUL_W(a, b) imul W_(b), W_(a)
+#define IMUL_B(a) imul B_(a)
+#define IN_L in EAX, DX
+#define IN_W in AX, DX
+#define IN_B in AL, DX
+#define IN1_L(a) in1 L_(a)
+#define IN1_W(a) in1 W_(a)
+#define IN1_B(a) in1 B_(a)
+#define INC_L(a) inc L_(a)
+#define INC_W(a) inc W_(a)
+#define INC_B(a) inc B_(a)
+#define INS_L ins
+#define INS_W ins
+#define INS_B ins
+#define INT(a) int B_(a)
+#define INT3 int3
+#define INTO into
+#define IRET iret
+#define IRETD iretd
+#define JA(a) ja NEAR a
+#define JAE(a) jae NEAR a
+#define JB(a) jb NEAR a
+#define JBE(a) jbe NEAR a
+#define JC(a) jc NEAR a
+#define JE(a) je NEAR a
+#define JG(a) jg NEAR a
+#define JGE(a) jge NEAR a
+#define JL(a) jl NEAR a
+#define JLE(a) jle NEAR a
+#define JNA(a) jna NEAR a
+#define JNAE(a) jnae NEAR a
+#define JNB(a) jnb NEAR a
+#define JNBE(a) jnbe NEAR a
+#define JNC(a) jnc NEAR a
+#define JNE(a) jne NEAR a
+#define JNG(a) jng NEAR a
+#define JNGE(a) jnge NEAR a
+#define JNL(a) jnl NEAR a
+#define JNLE(a) jnle NEAR a
+#define JNO(a) jno NEAR a
+#define JNP(a) jnp NEAR a
+#define JNS(a) jns NEAR a
+#define JNZ(a) jnz NEAR a
+#define JO(a) jo NEAR a
+#define JP(a) jp NEAR a
+#define JPE(a) jpe NEAR a
+#define JPO(a) jpo NEAR a
+#define JS(a) js NEAR a
+#define JZ(a) jz NEAR a
+#define JMP(a) jmp a
+#define JMPF(s,a) jmp far s:a
+#define LAHF lahf
+#define LAR(a, b) lar b, a
+#define LEA_L(a, b) lea P_(b), P_(a)
+#define LEA_W(a, b) lea P_(b), P_(a)
+#define LEAVE leave
+#define LGDT(a) lgdt a
+#define LIDT(a) lidt a
+#define LDS(a, b) lds b, P_(a)
+#define LES(a, b) les b, P_(a)
+#define LFS(a, b) lfs b, P_(a)
+#define LGS(a, b) lgs b, P_(a)
+#define LSS(a, b) lss b, P_(a)
+#define LLDT(a) lldt a
+#define LMSW(a) lmsw a
+#define LOCK lock
+#define LODS_L lodsd
+#define LODS_W lodsw
+#define LODS_B lodsb
+#define LOOP(a) loop a
+#define LOOPE(a) loope a
+#define LOOPZ(a) loopz a
+#define LOOPNE(a) loopne a
+#define LOOPNZ(a) loopnz a
+#define LSL(a, b) lsl b, a
+#define LTR(a) ltr a
+#define MOV_SR(a, b) mov SR_(b), SR_(a)
+#define MOV_L(a, b) mov L_(b), L_(a)
+#define MOV_W(a, b) mov W_(b), W_(a)
+#define MOV_B(a, b) mov B_(b), B_(a)
+#define MOVS_L movsd
+#define MOVS_W movsw
+#define MOVS_B movsb
+#define MOVSX_BL(a, b) movsx B_(b), B_(a)
+#define MOVSX_BW(a, b) movsx B_(b), B_(a)
+#define MOVSX_WL(a, b) movsx W_(b), W_(a)
+#define MOVZX_BL(a, b) movzx B_(b), B_(a)
+#define MOVZX_BW(a, b) movzx B_(b), B_(a)
+#define MOVZX_WL(a, b) movzx W_(b), W_(a)
+#define MUL_L(a) mul L_(a)
+#define MUL_W(a) mul W_(a)
+#define MUL_B(a) mul B_(a)
+#define NEG_L(a) neg L_(a)
+#define NEG_W(a) neg W_(a)
+#define NEG_B(a) neg B_(a)
+#define NOP nop
+#define NOT_L(a) not L_(a)
+#define NOT_W(a) not W_(a)
+#define NOT_B(a) not B_(a)
+#define OR_L(a,b) or L_(b), L_(a)
+#define OR_W(a,b) or W_(b), W_(a)
+#define OR_B(a,b) or B_(b), B_(a)
+#define OUT_L out DX, EAX
+#define OUT_W out DX, AX
+#define OUT_B out DX, AL
+#define OUT1_L(a) out1 L_(a)
+#define OUT1_W(a) out1 W_(a)
+#define OUT1_B(a) out1 B_(a)
+#define OUTS_L outsd
+#define OUTS_W outsw
+#define OUTS_B outsb
+#define POP_SR(a) pop SR_(a)
+#define POP_L(a) pop L_(a)
+#define POP_W(a) pop W_(a)
+#define POPA_L popad
+#define POPA_W popa
+#define POPF_L popfd
+#define POPF_W popf
+#define PUSH_SR(a) push SR_(a)
+#define PUSH_L(a) push L_(a)
+#define PUSH_W(a) push W_(a)
+#define PUSH_B(a) push B_(a)
+#define PUSHA_L pushad
+#define PUSHA_W pusha
+#define PUSHF_L pushfd
+#define PUSHF_W pushf
+#define RCL_L(a, b) rcl L_(b), L_(a)
+#define RCL_W(a, b) rcl W_(b), W_(a)
+#define RCL_B(a, b) rcl B_(b), B_(a)
+#define RCR_L(a, b) rcr L_(b), L_(a)
+#define RCR_W(a, b) rcr W_(b), W_(a)
+#define RCR_B(a, b) rcr B_(b), B_(a)
+#define RDTSC rdtsc
+#define ROL_L(a, b) rol L_(b), L_(a)
+#define ROL_W(a, b) rol W_(b), W_(a)
+#define ROL_B(a, b) rol B_(b), B_(a)
+#define ROR_L(a, b) ror L_(b), L_(a)
+#define ROR_W(a, b) ror W_(b), W_(a)
+#define ROR_B(a, b) ror B_(b), B_(a)
+#define REP rep
+#define REPE repe
+#define REPNE repne
+#define REPNZ REPNE
+#define REPZ REPE
+#define RET ret
+#define SAHF sahf
+#define SAL_L(a, b) sal L_(b), B_(a)
+#define SAL_W(a, b) sal W_(b), B_(a)
+#define SAL_B(a, b) sal B_(b), B_(a)
+#define SAR_L(a, b) sar L_(b), B_(a)
+#define SAR_W(a, b) sar W_(b), B_(a)
+#define SAR_B(a, b) sar B_(b), B_(a)
+#define SBB_L(a, b) sbb L_(b), L_(a)
+#define SBB_W(a, b) sbb W_(b), W_(a)
+#define SBB_B(a, b) sbb B_(b), B_(a)
+#define SCAS_L scas
+#define SCAS_W scas
+#define SCAS_B scas
+#define SETA(a) seta a
+#define SETAE(a) setae a
+#define SETB(a) setb a
+#define SETBE(a) setbe a
+#define SETC(a) setc a
+#define SETE(a) sete a
+#define SETG(a) setg a
+#define SETGE(a) setge a
+#define SETL(a) setl a
+#define SETLE(a) setle a
+#define SETNA(a) setna a
+#define SETNAE(a) setnae a
+#define SETNB(a) setnb a
+#define SETNBE(a) setnbe a
+#define SETNC(a) setnc a
+#define SETNE(a) setne a
+#define SETNG(a) setng a
+#define SETNGE(a) setnge a
+#define SETNL(a) setnl a
+#define SETNLE(a) setnle a
+#define SETNO(a) setno a
+#define SETNP(a) setnp a
+#define SETNS(a) setns a
+#define SETNZ(a) setnz a
+#define SETO(a) seto a
+#define SETP(a) setp a
+#define SETPE(a) setpe a
+#define SETPO(a) setpo a
+#define SETS(a) sets a
+#define SETZ(a) setz a
+#define SGDT(a) sgdt a
+#define SIDT(a) sidt a
+#define SHL_L(a, b) shl L_(b), B_(a)
+#define SHL_W(a, b) shl W_(b), B_(a)
+#define SHL_B(a, b) shl B_(b), B_(a)
+#define SHLD_L(a,b,c) shld
+#define SHLD2_L(a,b) shld L_(b), L_(a)
+#define SHLD_W(a,b,c) shld
+#define SHLD2_W(a,b) shld W_(b), W_(a)
+#define SHR_L(a, b) shr L_(b), B_(a)
+#define SHR_W(a, b) shr W_(b), B_(a)
+#define SHR_B(a, b) shr B_(b), B_(a)
+#define SHRD_L(a,b,c) shrd
+#define SHRD2_L(a,b) shrd L_(b), L_(a)
+#define SHRD_W(a,b,c) shrd
+#define SHRD2_W(a,b) shrd W_(b), W_(a)
+#define SLDT(a) sldt a
+#define SMSW(a) smsw a
+#define STC stc
+#define STD std
+#define STI sti
+#define STOS_L stosd
+#define STOS_W stosw
+#define STOS_B stosb
+#define STR(a) str a
+#define SUB_L(a, b) sub L_(b), L_(a)
+#define SUB_W(a, b) sub W_(b), W_(a)
+#define SUB_B(a, b) sub B_(b), B_(a)
+#define TEST_L(a, b) test L_(b), L_(a)
+#define TEST_W(a, b) test W_(b), W_(a)
+#define TEST_B(a, b) test B_(b), B_(a)
+#define VERR(a) verr a
+#define VERW(a) verw a
+#define WAIT wait
+#define XCHG_L(a, b) xchg L_(b), L_(a)
+#define XCHG_W(a, b) xchg W_(b), W_(a)
+#define XCHG_B(a, b) xchg B_(b), B_(a)
+#define XLAT xlat
+#define XOR_L(a, b) xor L_(b), L_(a)
+#define XOR_W(a, b) xor W_(b), W_(a)
+#define XOR_B(a, b) xor B_(b), B_(a)
+
+
+/* Floating Point Instructions */
+#define F2XM1 f2xm1
+#define FABS fabs
+#define FADD_D(a) fadd D_(a)
+#define FADD_S(a) fadd S_(a)
+#define FADD2(a, b) fadd b, a
+#define FADDP(a, b) faddp b, a
+#define FIADD_L(a) fiadd L_(a)
+#define FIADD_W(a) fiadd W_(a)
+#define FBLD(a) fbld a
+#define FBSTP(a) fbstp a
+#define FCHS fchs
+#define FCLEX fclex
+#define FNCLEX fnclex
+#define FCOM(a) fcom a
+#define FCOM_D(a) fcom D_(a)
+#define FCOM_S(a) fcom S_(a)
+#define FCOMP(a) fcomp a
+#define FCOMP_D(a) fcomp D_(a)
+#define FCOMP_S(a) fcomp S_(a)
+#define FCOMPP fcompp
+#define FCOS fcos
+#define FDECSTP fdecstp
+#define FDIV_D(a) fdiv D_(a)
+#define FDIV_S(a) fdiv S_(a)
+#define FDIV2(a, b) fdiv b, a
+#define FDIVP(a, b) fdivp b, a
+#define FIDIV_L(a) fidiv L_(a)
+#define FIDIV_W(a) fidiv W_(a)
+#define FDIVR_D(a) fdivr D_(a)
+#define FDIVR_S(a) fdivr S_(a)
+#define FDIVR2(a, b) fdivr b, a
+#define FDIVRP(a, b) fdivrp b, a
+#define FIDIVR_L(a) fidivr L_(a)
+#define FIDIVR_W(a) fidivr W_(a)
+#define FFREE(a) ffree a
+#define FICOM_L(a) ficom L_(a)
+#define FICOM_W(a) ficom W_(a)
+#define FICOMP_L(a) ficomp L_(a)
+#define FICOMP_W(a) ficomp W_(a)
+#define FILD_Q(a) fild D_(a)
+#define FILD_L(a) fild L_(a)
+#define FILD_W(a) fild W_(a)
+#define FINCSTP fincstp
+#define FINIT finit
+#define FNINIT fninit
+#define FIST_L(a) fist L_(a)
+#define FIST_W(a) fist W_(a)
+#define FISTP_Q(a) fistp D_(a)
+#define FISTP_L(a) fistp L_(a)
+#define FISTP_W(a) fistp W_(a)
+#define FLD_X(a) fld X_(a)
+#define FLD_D(a) fld D_(a)
+#define FLD_S(a) fld S_(a)
+#define FLD1 fld1
+#define FLDL2T fldl2t
+#define FLDL2E fldl2e
+#define FLDPI fldpi
+#define FLDLG2 fldlg2
+#define FLDLN2 fldln2
+#define FLDZ fldz
+#define FLDCW(a) fldcw a
+#define FLDENV(a) fldenv a
+#define FMUL_S(a) fmul S_(a)
+#define FMUL_D(a) fmul D_(a)
+#define FMUL2(a, b) fmul b, a
+#define FMULP(a, b) fmulp b, a
+#define FIMUL_L(a) fimul L_(a)
+#define FIMUL_W(a) fimul W_(a)
+#define FNOP fnop
+#define FPATAN fpatan
+#define FPREM fprem
+#define FPREM1 fprem1
+#define FPTAN fptan
+#define FRNDINT frndint
+#define FRSTOR(a) frstor a
+#define FSAVE(a) fsave a
+#define FNSAVE(a) fnsave a
+#define FSCALE fscale
+#define FSIN fsin
+#define FSINCOS fsincos
+#define FSQRT fsqrt
+#define FST_D(a) fst D_(a)
+#define FST_S(a) fst S_(a)
+#define FSTP_X(a) fstp X_(a)
+#define FSTP_D(a) fstp D_(a)
+#define FSTP_S(a) fstp S_(a)
+#define FSTP(a) fstp a
+#define FSTCW(a) fstcw a
+#define FNSTCW(a) fnstcw a
+#define FSTENV(a) fstenv a
+#define FNSTENV(a) fnstenv a
+#define FSTSW(a) fstsw a
+#define FNSTSW(a) fnstsw a
+#define FSUB_S(a) fsub S_(a)
+#define FSUB_D(a) fsub D_(a)
+#define FSUB2(a, b) fsub b, a
+#define FSUBP(a, b) fsubp b, a
+#define FISUB_L(a) fisub L_(a)
+#define FISUB_W(a) fisub W_(a)
+#define FSUBR_S(a) fsubr S_(a)
+#define FSUBR_D(a) fsubr D_(a)
+#define FSUBR2(a, b) fsubr b, a
+#define FSUBRP(a, b) fsubrp b, a
+#define FISUBR_L(a) fisubr L_(a)
+#define FISUBR_W(a) fisubr W_(a)
+#define FTST ftst
+#define FUCOM(a) fucom a
+#define FUCOMP(a) fucomp a
+#define FUCOMPP fucompp
+#define FWAIT fwait
+#define FXAM fxam
+#define FXCH(a) fxch a
+#define FXTRACT fxtract
+#define FYL2X fyl2x
+#define FYL2XP1 fyl2xp1
+
+#endif /* NASM_ASSEMBLER, MASM_ASSEMBLER */
+
+ /****************************************/
+ /* */
+ /* Extensions to x86 insn set - */
+ /* MMX, 3DNow! */
+ /* */
+ /****************************************/
+
+#if defined(NASM_ASSEMBLER) || defined(MASM_ASSEMBLER)
+#define P_ARG1(a) P_ ## a
+#define P_ARG2(a, b) P_ ## b, P_ ## a
+#define P_ARG3(a, b, c) P_ ## c, P_ ## b, P_ ## a
+#else
+#define P_ARG1(a) a
+#define P_ARG2(a, b) a, b
+#define P_ARG3(a, b, c) a, b, c
+#endif
+
+/* MMX */
+#define MOVD(a, b) movd P_ARG2(a, b)
+#define MOVQ(a, b) movq P_ARG2(a, b)
+
+#define PADDB(a, b) paddb P_ARG2(a, b)
+#define PADDW(a, b) paddw P_ARG2(a, b)
+#define PADDD(a, b) paddd P_ARG2(a, b)
+
+#define PADDSB(a, b) paddsb P_ARG2(a, b)
+#define PADDSW(a, b) paddsw P_ARG2(a, b)
+
+#define PADDUSB(a, b) paddusb P_ARG2(a, b)
+#define PADDUSW(a, b) paddusw P_ARG2(a, b)
+
+#define PSUBB(a, b) psubb P_ARG2(a, b)
+#define PSUBW(a, b) psubw P_ARG2(a, b)
+#define PSUBD(a, b) psubd P_ARG2(a, b)
+
+#define PSUBSB(a, b) psubsb P_ARG2(a, b)
+#define PSUBSW(a, b) psubsw P_ARG2(a, b)
+
+#define PSUBUSB(a, b) psubusb P_ARG2(a, b)
+#define PSUBUSW(a, b) psubusw P_ARG2(a, b)
+
+#define PCMPEQB(a, b) pcmpeqb P_ARG2(a, b)
+#define PCMPEQW(a, b) pcmpeqw P_ARG2(a, b)
+#define PCMPEQD(a, b) pcmpeqd P_ARG2(a, b)
+
+#define PCMPGTB(a, b) pcmpgtb P_ARG2(a, b)
+#define PCMPGTW(a, b) pcmpgtw P_ARG2(a, b)
+#define PCMPGTD(a, b) pcmpgtd P_ARG2(a, b)
+
+#define PMULHW(a, b) pmulhw P_ARG2(a, b)
+#define PMULLW(a, b) pmullw P_ARG2(a, b)
+
+#define PMADDWD(a, b) pmaddwd P_ARG2(a, b)
+
+#define PAND(a, b) pand P_ARG2(a, b)
+
+#define PANDN(a, b) pandn P_ARG2(a, b)
+
+#define POR(a, b) por P_ARG2(a, b)
+
+#define PXOR(a, b) pxor P_ARG2(a, b)
+
+#define PSRAW(a, b) psraw P_ARG2(a, b)
+#define PSRAD(a, b) psrad P_ARG2(a, b)
+
+#define PSRLW(a, b) psrlw P_ARG2(a, b)
+#define PSRLD(a, b) psrld P_ARG2(a, b)
+#define PSRLQ(a, b) psrlq P_ARG2(a, b)
+
+#define PSLLW(a, b) psllw P_ARG2(a, b)
+#define PSLLD(a, b) pslld P_ARG2(a, b)
+#define PSLLQ(a, b) psllq P_ARG2(a, b)
+
+#define PACKSSWB(a, b) packsswb P_ARG2(a, b)
+#define PACKSSDW(a, b) packssdw P_ARG2(a, b)
+#define PACKUSWB(a, b) packuswb P_ARG2(a, b)
+
+#define PUNPCKHBW(a, b) punpckhbw P_ARG2(a, b)
+#define PUNPCKHWD(a, b) punpckhwd P_ARG2(a, b)
+#define PUNPCKHDQ(a, b) punpckhdq P_ARG2(a, b)
+#define PUNPCKLBW(a, b) punpcklbw P_ARG2(a, b)
+#define PUNPCKLWD(a, b) punpcklwd P_ARG2(a, b)
+#define PUNPCKLDQ(a, b) punpckldq P_ARG2(a, b)
+
+#define EMMS emms
+
+/* AMD 3DNow! */
+#define PAVGUSB(a, b) pavgusb P_ARG2(a, b)
+#define PFADD(a, b) pfadd P_ARG2(a, b)
+#define PFSUB(a, b) pfsub P_ARG2(a, b)
+#define PFSUBR(a, b) pfsubr P_ARG2(a, b)
+#define PFACC(a, b) pfacc P_ARG2(a, b)
+#define PFCMPGE(a, b) pfcmpge P_ARG2(a, b)
+#define PFCMPGT(a, b) pfcmpgt P_ARG2(a, b)
+#define PFCMPEQ(a, b) pfcmpeq P_ARG2(a, b)
+#define PFMIN(a, b) pfmin P_ARG2(a, b)
+#define PFMAX(a, b) pfmax P_ARG2(a, b)
+#define PI2FD(a, b) pi2fd P_ARG2(a, b)
+#define PF2ID(a, b) pf2id P_ARG2(a, b)
+#define PFRCP(a, b) pfrcp P_ARG2(a, b)
+#define PFRSQRT(a, b) pfrsqrt P_ARG2(a, b)
+#define PFMUL(a, b) pfmul P_ARG2(a, b)
+#define PFRCPIT1(a, b) pfrcpit1 P_ARG2(a, b)
+#define PFRSQIT1(a, b) pfrsqit1 P_ARG2(a, b)
+#define PFRCPIT2(a, b) pfrcpit2 P_ARG2(a, b)
+#define PMULHRW(a, b) pmulhrw P_ARG2(a, b)
+
+#define FEMMS femms
+#define PREFETCH(a) prefetch P_ARG1(a)
+#define PREFETCHW(a) prefetchw P_ARG1(a)
+
+/* Intel SSE */
+#define ADDPS(a, b) addps P_ARG2(a, b)
+#define ADDSS(a, b) addss P_ARG2(a, b)
+#define ANDNPS(a, b) andnps P_ARG2(a, b)
+#define ANDPS(a, b) andps P_ARG2(a, b)
+/* NASM only knows the pseudo ops for these.
+#define CMPPS(a, b, c) cmpps P_ARG3(a, b, c)
+#define CMPSS(a, b, c) cmpss P_ARG3(a, b, c)
+*/
+#define CMPEQPS(a, b) cmpeqps P_ARG2(a, b)
+#define CMPLTPS(a, b) cmpltps P_ARG2(a, b)
+#define CMPLEPS(a, b) cmpleps P_ARG2(a, b)
+#define CMPUNORDPS(a, b) cmpunordps P_ARG2(a, b)
+#define CMPNEQPS(a, b) cmpneqps P_ARG2(a, b)
+#define CMPNLTPS(a, b) cmpnltps P_ARG2(a, b)
+#define CMPNLEPS(a, b) cmpnleps P_ARG2(a, b)
+#define CMPORDPS(a, b) cmpordps P_ARG2(a, b)
+#define CMPEQSS(a, b) cmpeqss P_ARG2(a, b)
+#define CMPLTSS(a, b) cmpltss P_ARG2(a, b)
+#define CMPLESS(a, b) cmpless P_ARG2(a, b)
+#define CMPUNORDSS(a, b) cmpunordss P_ARG2(a, b)
+#define CMPNEQSS(a, b) cmpneqss P_ARG2(a, b)
+#define CMPNLTSS(a, b) cmpnltss P_ARG2(a, b)
+#define CMPNLESS(a, b) cmpnless P_ARG2(a, b)
+#define CMPORDSS(a, b) cmpordss P_ARG2(a, b)
+#define COMISS(a, b) comiss P_ARG2(a, b)
+#define CVTPI2PS(a, b) cvtpi2ps P_ARG2(a, b)
+#define CVTPS2PI(a, b) cvtps2pi P_ARG2(a, b)
+#define CVTSI2SS(a, b) cvtsi2ss P_ARG2(a, b)
+#define CVTSS2SI(a, b) cvtss2si P_ARG2(a, b)
+#define CVTTPS2PI(a, b) cvttps2pi P_ARG2(a, b)
+#define CVTTSS2SI(a, b) cvttss2si P_ARG2(a, b)
+#define DIVPS(a, b) divps P_ARG2(a, b)
+#define DIVSS(a, b) divss P_ARG2(a, b)
+#define FXRSTOR(a) fxrstor P_ARG1(a)
+#define FXSAVE(a) fxsave P_ARG1(a)
+#define LDMXCSR(a) ldmxcsr P_ARG1(a)
+#define MAXPS(a, b) maxps P_ARG2(a, b)
+#define MAXSS(a, b) maxss P_ARG2(a, b)
+#define MINPS(a, b) minps P_ARG2(a, b)
+#define MINSS(a, b) minss P_ARG2(a, b)
+#define MOVAPS(a, b) movaps P_ARG2(a, b)
+#define MOVHLPS(a, b) movhlps P_ARG2(a, b)
+#define MOVHPS(a, b) movhps P_ARG2(a, b)
+#define MOVLHPS(a, b) movlhps P_ARG2(a, b)
+#define MOVLPS(a, b) movlps P_ARG2(a, b)
+#define MOVMSKPS(a, b) movmskps P_ARG2(a, b)
+#define MOVNTPS(a, b) movntps P_ARG2(a, b)
+#define MOVNTQ(a, b) movntq P_ARG2(a, b)
+#define MOVSS(a, b) movss P_ARG2(a, b)
+#define MOVUPS(a, b) movups P_ARG2(a, b)
+#define MULPS(a, b) mulps P_ARG2(a, b)
+#define MULSS(a, b) mulss P_ARG2(a, b)
+#define ORPS(a, b) orps P_ARG2(a, b)
+#define RCPPS(a, b) rcpps P_ARG2(a, b)
+#define RCPSS(a, b) rcpss P_ARG2(a, b)
+#define RSQRTPS(a, b) rsqrtps P_ARG2(a, b)
+#define RSQRTSS(a, b) rsqrtss P_ARG2(a, b)
+#define SHUFPS(a, b, c) shufps P_ARG3(a, b, c)
+#define SQRTPS(a, b) sqrtps P_ARG2(a, b)
+#define SQRTSS(a, b) sqrtss P_ARG2(a, b)
+#define STMXCSR(a) stmxcsr P_ARG1(a)
+#define SUBPS(a, b) subps P_ARG2(a, b)
+#define UCOMISS(a, b) ucomiss P_ARG2(a, b)
+#define UNPCKHPS(a, b) unpckhps P_ARG2(a, b)
+#define UNPCKLPS(a, b) unpcklps P_ARG2(a, b)
+#define XORPS(a, b) xorps P_ARG2(a, b)
+
+#define PREFETCHNTA(a) prefetchnta P_ARG1(a)
+#define PREFETCHT0(a) prefetcht0 P_ARG1(a)
+#define PREFETCHT1(a) prefetcht1 P_ARG1(a)
+#define PREFETCHT2(a) prefetcht2 P_ARG1(a)
+#define SFENCE sfence
+
+/* Added by BrianP for FreeBSD (per David Dawes) */
+#if !defined(NASM_ASSEMBLER) && !defined(MASM_ASSEMBLER) && !defined(__bsdi__)
+#define LLBL(a) CONCAT(.L,a)
+#define LLBL2(a,b) CONCAT3(.L,a,b)
+#else
+#define LLBL(a) a
+#define LLBL2(a,b) CONCAT(a,b)
+#endif
+
+/* Segment overrides */
+#define SEGCS D_BYTE 46
+#define SEGDS D_BYTE 62
+#define SEGES D_BYTE 38
+#define SEGFS D_BYTE 100
+#define SEGGS D_BYTE 101
+
+/* Temporary labels: valid until next non-local label */
+#ifdef NASM_ASSEMBLER
+#define TLBL(a) CONCAT(.,a)
+#else
+#define TLBL(a) CONCAT(a,$)
+#endif
+
+/* Hidden symbol visibility support.
+ * If we build with gcc's -fvisibility=hidden flag, we'll need to change
+ * the symbol visibility mode to 'default'.
+ */
+#if defined(GNU_ASSEMBLER) && !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__)
+# define HIDDEN(x) .hidden x
+#elif defined(__GNUC__) && !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__)
+# pragma GCC visibility push(default)
+# define HIDDEN(x) .hidden x
+#else
+# define HIDDEN(x)
+#endif
+
+#endif /* __ASSYNTAX_H__ */
diff --git a/mesalib/src/mesa/x86/clip_args.h b/mesalib/src/mesa/x86/clip_args.h
index faa3c6f87..796611fbf 100644
--- a/mesalib/src/mesa/x86/clip_args.h
+++ b/mesalib/src/mesa/x86/clip_args.h
@@ -1,59 +1,59 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * Clip test function interface for assembly code. Simply define
- * FRAME_OFFSET to the number of bytes pushed onto the stack before
- * using the ARG_* argument macros.
- *
- * Gareth Hughes
- */
-
-#ifndef __CLIP_ARGS_H__
-#define __CLIP_ARGS_H__
-
-/*
- * Offsets for clip_func arguments
- *
- * typedef GLvector4f *(*clip_func)( GLvector4f *clip_vec,
- * GLvector4f *proj_vec,
- * GLubyte clipMask[],
- * GLubyte *orMask,
- * GLubyte *andMask );
- */
-
-#define OFFSET_SOURCE 4
-#define OFFSET_DEST 8
-#define OFFSET_CLIP 12
-#define OFFSET_OR 16
-#define OFFSET_AND 20
-
-#define ARG_SOURCE REGOFF(FRAME_OFFSET+OFFSET_SOURCE, ESP)
-#define ARG_DEST REGOFF(FRAME_OFFSET+OFFSET_DEST, ESP)
-#define ARG_CLIP REGOFF(FRAME_OFFSET+OFFSET_CLIP, ESP)
-#define ARG_OR REGOFF(FRAME_OFFSET+OFFSET_OR, ESP)
-#define ARG_AND REGOFF(FRAME_OFFSET+OFFSET_AND, ESP)
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * Clip test function interface for assembly code. Simply define
+ * FRAME_OFFSET to the number of bytes pushed onto the stack before
+ * using the ARG_* argument macros.
+ *
+ * Gareth Hughes
+ */
+
+#ifndef __CLIP_ARGS_H__
+#define __CLIP_ARGS_H__
+
+/*
+ * Offsets for clip_func arguments
+ *
+ * typedef GLvector4f *(*clip_func)( GLvector4f *clip_vec,
+ * GLvector4f *proj_vec,
+ * GLubyte clipMask[],
+ * GLubyte *orMask,
+ * GLubyte *andMask );
+ */
+
+#define OFFSET_SOURCE 4
+#define OFFSET_DEST 8
+#define OFFSET_CLIP 12
+#define OFFSET_OR 16
+#define OFFSET_AND 20
+
+#define ARG_SOURCE REGOFF(FRAME_OFFSET+OFFSET_SOURCE, ESP)
+#define ARG_DEST REGOFF(FRAME_OFFSET+OFFSET_DEST, ESP)
+#define ARG_CLIP REGOFF(FRAME_OFFSET+OFFSET_CLIP, ESP)
+#define ARG_OR REGOFF(FRAME_OFFSET+OFFSET_OR, ESP)
+#define ARG_AND REGOFF(FRAME_OFFSET+OFFSET_AND, ESP)
+
+#endif
diff --git a/mesalib/src/mesa/x86/common_x86.c b/mesalib/src/mesa/x86/common_x86.c
index f5b9357cc..b70ee5084 100644
--- a/mesalib/src/mesa/x86/common_x86.c
+++ b/mesalib/src/mesa/x86/common_x86.c
@@ -1,336 +1,336 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.1
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/**
- * \file common_x86.c
- *
- * Check CPU capabilities & initialize optimized funtions for this particular
- * processor.
- *
- * Changed by Andre Werthmann for using the new SSE functions.
- *
- * \author Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
- * \author Andre Werthmann <wertmann@cs.uni-potsdam.de>
- */
-
-/* XXX these includes should probably go into imports.h or glheader.h */
-#if defined(USE_SSE_ASM) && defined(__linux__)
-#include <linux/version.h>
-#endif
-#if defined(USE_SSE_ASM) && defined(__FreeBSD__)
-#include <sys/types.h>
-#include <sys/sysctl.h>
-#endif
-#if defined(USE_SSE_ASM) && defined(__OpenBSD__)
-#include <sys/param.h>
-#include <sys/sysctl.h>
-#include <machine/cpu.h>
-#endif
-
-#include "main/imports.h"
-#include "common_x86_asm.h"
-
-
-/** Bitmask of X86_FEATURE_x bits */
-int _mesa_x86_cpu_features = 0x0;
-
-static int detection_debug = GL_FALSE;
-
-/* No reason for this to be public.
- */
-extern GLuint _ASMAPI _mesa_x86_has_cpuid(void);
-extern void _ASMAPI _mesa_x86_cpuid(GLuint op, GLuint *reg_eax, GLuint *reg_ebx, GLuint *reg_ecx, GLuint *reg_edx);
-extern GLuint _ASMAPI _mesa_x86_cpuid_eax(GLuint op);
-extern GLuint _ASMAPI _mesa_x86_cpuid_ebx(GLuint op);
-extern GLuint _ASMAPI _mesa_x86_cpuid_ecx(GLuint op);
-extern GLuint _ASMAPI _mesa_x86_cpuid_edx(GLuint op);
-
-
-#if defined(USE_SSE_ASM)
-/*
- * We must verify that the Streaming SIMD Extensions are truly supported
- * on this processor before we go ahead and hook out the optimized code.
- *
- * However, I have been told by Alan Cox that all 2.4 (and later) Linux
- * kernels provide full SSE support on all processors that expose SSE via
- * the CPUID mechanism.
- */
-
-/* These are assembly functions: */
-extern void _mesa_test_os_sse_support( void );
-extern void _mesa_test_os_sse_exception_support( void );
-
-
-#if defined(WIN32)
-#ifndef STATUS_FLOAT_MULTIPLE_TRAPS
-# define STATUS_FLOAT_MULTIPLE_TRAPS (0xC00002B5L)
-#endif
-static LONG WINAPI ExceptionFilter(LPEXCEPTION_POINTERS exp)
-{
- PEXCEPTION_RECORD rec = exp->ExceptionRecord;
- PCONTEXT ctx = exp->ContextRecord;
-
- if ( rec->ExceptionCode == EXCEPTION_ILLEGAL_INSTRUCTION ) {
- _mesa_debug(NULL, "EXCEPTION_ILLEGAL_INSTRUCTION\n" );
- _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
- } else if ( rec->ExceptionCode == STATUS_FLOAT_MULTIPLE_TRAPS ) {
- _mesa_debug(NULL, "STATUS_FLOAT_MULTIPLE_TRAPS\n");
- /* Windows seems to clear the exception flag itself, we just have to increment Eip */
- } else {
- _mesa_debug(NULL, "UNEXPECTED EXCEPTION (0x%08x), terminating!\n" );
- return EXCEPTION_EXECUTE_HANDLER;
- }
-
- if ( (ctx->ContextFlags & CONTEXT_CONTROL) != CONTEXT_CONTROL ) {
- _mesa_debug(NULL, "Context does not contain control registers, terminating!\n");
- return EXCEPTION_EXECUTE_HANDLER;
- }
- ctx->Eip += 3;
-
- return EXCEPTION_CONTINUE_EXECUTION;
-}
-#endif /* WIN32 */
-
-
-/**
- * Check if SSE is supported.
- * If not, turn off the X86_FEATURE_XMM flag in _mesa_x86_cpu_features.
- */
-void _mesa_check_os_sse_support( void )
-{
-#if defined(__FreeBSD__)
- {
- int ret, enabled;
- unsigned int len;
- len = sizeof(enabled);
- ret = sysctlbyname("hw.instruction_sse", &enabled, &len, NULL, 0);
- if (ret || !enabled)
- _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
- }
-#elif defined (__NetBSD__)
- {
- int ret, enabled;
- size_t len = sizeof(enabled);
- ret = sysctlbyname("machdep.sse", &enabled, &len, (void *)NULL, 0);
- if (ret || !enabled)
- _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
- }
-#elif defined(__OpenBSD__)
- {
- int mib[2];
- int ret, enabled;
- size_t len = sizeof(enabled);
-
- mib[0] = CTL_MACHDEP;
- mib[1] = CPU_SSE;
-
- ret = sysctl(mib, 2, &enabled, &len, NULL, 0);
- if (ret || !enabled)
- _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
- }
-#elif defined(WIN32)
- LPTOP_LEVEL_EXCEPTION_FILTER oldFilter;
-
- /* Install our ExceptionFilter */
- oldFilter = SetUnhandledExceptionFilter( ExceptionFilter );
-
- if ( cpu_has_xmm ) {
- _mesa_debug(NULL, "Testing OS support for SSE...\n");
-
- _mesa_test_os_sse_support();
-
- if ( cpu_has_xmm ) {
- _mesa_debug(NULL, "Yes.\n");
- } else {
- _mesa_debug(NULL, "No!\n");
- }
- }
-
- if ( cpu_has_xmm ) {
- _mesa_debug(NULL, "Testing OS support for SSE unmasked exceptions...\n");
-
- _mesa_test_os_sse_exception_support();
-
- if ( cpu_has_xmm ) {
- _mesa_debug(NULL, "Yes.\n");
- } else {
- _mesa_debug(NULL, "No!\n");
- }
- }
-
- /* Restore previous exception filter */
- SetUnhandledExceptionFilter( oldFilter );
-
- if ( cpu_has_xmm ) {
- _mesa_debug(NULL, "Tests of OS support for SSE passed.\n");
- } else {
- _mesa_debug(NULL, "Tests of OS support for SSE failed!\n");
- }
-#else
- /* Do nothing on other platforms for now.
- */
- if (detection_debug)
- _mesa_debug(NULL, "Not testing OS support for SSE, leaving enabled.\n");
-#endif /* __FreeBSD__ */
-}
-
-#endif /* USE_SSE_ASM */
-
-
-/**
- * Initialize the _mesa_x86_cpu_features bitfield.
- * This is a no-op if called more than once.
- */
-void
-_mesa_get_x86_features(void)
-{
- static int called = 0;
-
- if (called)
- return;
-
- called = 1;
-
-#ifdef USE_X86_ASM
- _mesa_x86_cpu_features = 0x0;
-
- if (_mesa_getenv( "MESA_NO_ASM")) {
- return;
- }
-
- if (!_mesa_x86_has_cpuid()) {
- _mesa_debug(NULL, "CPUID not detected\n");
- }
- else {
- GLuint cpu_features;
- GLuint cpu_ext_features;
- GLuint cpu_ext_info;
- char cpu_vendor[13];
- GLuint result;
-
- /* get vendor name */
- _mesa_x86_cpuid(0, &result, (GLuint *)(cpu_vendor + 0), (GLuint *)(cpu_vendor + 8), (GLuint *)(cpu_vendor + 4));
- cpu_vendor[12] = '\0';
-
- if (detection_debug)
- _mesa_debug(NULL, "CPU vendor: %s\n", cpu_vendor);
-
- /* get cpu features */
- cpu_features = _mesa_x86_cpuid_edx(1);
-
- if (cpu_features & X86_CPU_FPU)
- _mesa_x86_cpu_features |= X86_FEATURE_FPU;
- if (cpu_features & X86_CPU_CMOV)
- _mesa_x86_cpu_features |= X86_FEATURE_CMOV;
-
-#ifdef USE_MMX_ASM
- if (cpu_features & X86_CPU_MMX)
- _mesa_x86_cpu_features |= X86_FEATURE_MMX;
-#endif
-
-#ifdef USE_SSE_ASM
- if (cpu_features & X86_CPU_XMM)
- _mesa_x86_cpu_features |= X86_FEATURE_XMM;
- if (cpu_features & X86_CPU_XMM2)
- _mesa_x86_cpu_features |= X86_FEATURE_XMM2;
-#endif
-
- /* query extended cpu features */
- if ((cpu_ext_info = _mesa_x86_cpuid_eax(0x80000000)) > 0x80000000) {
- if (cpu_ext_info >= 0x80000001) {
-
- cpu_ext_features = _mesa_x86_cpuid_edx(0x80000001);
-
- if (cpu_features & X86_CPU_MMX) {
-
-#ifdef USE_3DNOW_ASM
- if (cpu_ext_features & X86_CPUEXT_3DNOW)
- _mesa_x86_cpu_features |= X86_FEATURE_3DNOW;
- if (cpu_ext_features & X86_CPUEXT_3DNOW_EXT)
- _mesa_x86_cpu_features |= X86_FEATURE_3DNOWEXT;
-#endif
-
-#ifdef USE_MMX_ASM
- if (cpu_ext_features & X86_CPUEXT_MMX_EXT)
- _mesa_x86_cpu_features |= X86_FEATURE_MMXEXT;
-#endif
- }
- }
-
- /* query cpu name */
- if (cpu_ext_info >= 0x80000002) {
- GLuint ofs;
- char cpu_name[49];
- for (ofs = 0; ofs < 3; ofs++)
- _mesa_x86_cpuid(0x80000002+ofs, (GLuint *)(cpu_name + (16*ofs)+0), (GLuint *)(cpu_name + (16*ofs)+4), (GLuint *)(cpu_name + (16*ofs)+8), (GLuint *)(cpu_name + (16*ofs)+12));
- cpu_name[48] = '\0'; /* the name should be NULL terminated, but just to be sure */
-
- if (detection_debug)
- _mesa_debug(NULL, "CPU name: %s\n", cpu_name);
- }
- }
-
- }
-
-#ifdef USE_MMX_ASM
- if ( cpu_has_mmx ) {
- if ( _mesa_getenv( "MESA_NO_MMX" ) == 0 ) {
- if (detection_debug)
- _mesa_debug(NULL, "MMX cpu detected.\n");
- } else {
- _mesa_x86_cpu_features &= ~(X86_FEATURE_MMX);
- }
- }
-#endif
-
-#ifdef USE_3DNOW_ASM
- if ( cpu_has_3dnow ) {
- if ( _mesa_getenv( "MESA_NO_3DNOW" ) == 0 ) {
- if (detection_debug)
- _mesa_debug(NULL, "3DNow! cpu detected.\n");
- } else {
- _mesa_x86_cpu_features &= ~(X86_FEATURE_3DNOW);
- }
- }
-#endif
-
-#ifdef USE_SSE_ASM
- if ( cpu_has_xmm ) {
- if ( _mesa_getenv( "MESA_NO_SSE" ) == 0 ) {
- if (detection_debug)
- _mesa_debug(NULL, "SSE cpu detected.\n");
- if ( _mesa_getenv( "MESA_FORCE_SSE" ) == 0 ) {
- _mesa_check_os_sse_support();
- }
- } else {
- _mesa_debug(NULL, "SSE cpu detected, but switched off by user.\n");
- _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
- }
- }
-#endif
-
-#endif /* USE_X86_ASM */
-
- (void) detection_debug;
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.1
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/**
+ * \file common_x86.c
+ *
+ * Check CPU capabilities & initialize optimized funtions for this particular
+ * processor.
+ *
+ * Changed by Andre Werthmann for using the new SSE functions.
+ *
+ * \author Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
+ * \author Andre Werthmann <wertmann@cs.uni-potsdam.de>
+ */
+
+/* XXX these includes should probably go into imports.h or glheader.h */
+#if defined(USE_SSE_ASM) && defined(__linux__)
+#include <linux/version.h>
+#endif
+#if defined(USE_SSE_ASM) && defined(__FreeBSD__)
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#endif
+#if defined(USE_SSE_ASM) && defined(__OpenBSD__)
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <machine/cpu.h>
+#endif
+
+#include "main/imports.h"
+#include "common_x86_asm.h"
+
+
+/** Bitmask of X86_FEATURE_x bits */
+int _mesa_x86_cpu_features = 0x0;
+
+static int detection_debug = GL_FALSE;
+
+/* No reason for this to be public.
+ */
+extern GLuint _ASMAPI _mesa_x86_has_cpuid(void);
+extern void _ASMAPI _mesa_x86_cpuid(GLuint op, GLuint *reg_eax, GLuint *reg_ebx, GLuint *reg_ecx, GLuint *reg_edx);
+extern GLuint _ASMAPI _mesa_x86_cpuid_eax(GLuint op);
+extern GLuint _ASMAPI _mesa_x86_cpuid_ebx(GLuint op);
+extern GLuint _ASMAPI _mesa_x86_cpuid_ecx(GLuint op);
+extern GLuint _ASMAPI _mesa_x86_cpuid_edx(GLuint op);
+
+
+#if defined(USE_SSE_ASM)
+/*
+ * We must verify that the Streaming SIMD Extensions are truly supported
+ * on this processor before we go ahead and hook out the optimized code.
+ *
+ * However, I have been told by Alan Cox that all 2.4 (and later) Linux
+ * kernels provide full SSE support on all processors that expose SSE via
+ * the CPUID mechanism.
+ */
+
+/* These are assembly functions: */
+extern void _mesa_test_os_sse_support( void );
+extern void _mesa_test_os_sse_exception_support( void );
+
+
+#if defined(WIN32)
+#ifndef STATUS_FLOAT_MULTIPLE_TRAPS
+# define STATUS_FLOAT_MULTIPLE_TRAPS (0xC00002B5L)
+#endif
+static LONG WINAPI ExceptionFilter(LPEXCEPTION_POINTERS exp)
+{
+ PEXCEPTION_RECORD rec = exp->ExceptionRecord;
+ PCONTEXT ctx = exp->ContextRecord;
+
+ if ( rec->ExceptionCode == EXCEPTION_ILLEGAL_INSTRUCTION ) {
+ _mesa_debug(NULL, "EXCEPTION_ILLEGAL_INSTRUCTION\n" );
+ _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
+ } else if ( rec->ExceptionCode == STATUS_FLOAT_MULTIPLE_TRAPS ) {
+ _mesa_debug(NULL, "STATUS_FLOAT_MULTIPLE_TRAPS\n");
+ /* Windows seems to clear the exception flag itself, we just have to increment Eip */
+ } else {
+ _mesa_debug(NULL, "UNEXPECTED EXCEPTION (0x%08x), terminating!\n" );
+ return EXCEPTION_EXECUTE_HANDLER;
+ }
+
+ if ( (ctx->ContextFlags & CONTEXT_CONTROL) != CONTEXT_CONTROL ) {
+ _mesa_debug(NULL, "Context does not contain control registers, terminating!\n");
+ return EXCEPTION_EXECUTE_HANDLER;
+ }
+ ctx->Eip += 3;
+
+ return EXCEPTION_CONTINUE_EXECUTION;
+}
+#endif /* WIN32 */
+
+
+/**
+ * Check if SSE is supported.
+ * If not, turn off the X86_FEATURE_XMM flag in _mesa_x86_cpu_features.
+ */
+void _mesa_check_os_sse_support( void )
+{
+#if defined(__FreeBSD__)
+ {
+ int ret, enabled;
+ unsigned int len;
+ len = sizeof(enabled);
+ ret = sysctlbyname("hw.instruction_sse", &enabled, &len, NULL, 0);
+ if (ret || !enabled)
+ _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
+ }
+#elif defined (__NetBSD__)
+ {
+ int ret, enabled;
+ size_t len = sizeof(enabled);
+ ret = sysctlbyname("machdep.sse", &enabled, &len, (void *)NULL, 0);
+ if (ret || !enabled)
+ _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
+ }
+#elif defined(__OpenBSD__)
+ {
+ int mib[2];
+ int ret, enabled;
+ size_t len = sizeof(enabled);
+
+ mib[0] = CTL_MACHDEP;
+ mib[1] = CPU_SSE;
+
+ ret = sysctl(mib, 2, &enabled, &len, NULL, 0);
+ if (ret || !enabled)
+ _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
+ }
+#elif defined(WIN32)
+ LPTOP_LEVEL_EXCEPTION_FILTER oldFilter;
+
+ /* Install our ExceptionFilter */
+ oldFilter = SetUnhandledExceptionFilter( ExceptionFilter );
+
+ if ( cpu_has_xmm ) {
+ _mesa_debug(NULL, "Testing OS support for SSE...\n");
+
+ _mesa_test_os_sse_support();
+
+ if ( cpu_has_xmm ) {
+ _mesa_debug(NULL, "Yes.\n");
+ } else {
+ _mesa_debug(NULL, "No!\n");
+ }
+ }
+
+ if ( cpu_has_xmm ) {
+ _mesa_debug(NULL, "Testing OS support for SSE unmasked exceptions...\n");
+
+ _mesa_test_os_sse_exception_support();
+
+ if ( cpu_has_xmm ) {
+ _mesa_debug(NULL, "Yes.\n");
+ } else {
+ _mesa_debug(NULL, "No!\n");
+ }
+ }
+
+ /* Restore previous exception filter */
+ SetUnhandledExceptionFilter( oldFilter );
+
+ if ( cpu_has_xmm ) {
+ _mesa_debug(NULL, "Tests of OS support for SSE passed.\n");
+ } else {
+ _mesa_debug(NULL, "Tests of OS support for SSE failed!\n");
+ }
+#else
+ /* Do nothing on other platforms for now.
+ */
+ if (detection_debug)
+ _mesa_debug(NULL, "Not testing OS support for SSE, leaving enabled.\n");
+#endif /* __FreeBSD__ */
+}
+
+#endif /* USE_SSE_ASM */
+
+
+/**
+ * Initialize the _mesa_x86_cpu_features bitfield.
+ * This is a no-op if called more than once.
+ */
+void
+_mesa_get_x86_features(void)
+{
+ static int called = 0;
+
+ if (called)
+ return;
+
+ called = 1;
+
+#ifdef USE_X86_ASM
+ _mesa_x86_cpu_features = 0x0;
+
+ if (_mesa_getenv( "MESA_NO_ASM")) {
+ return;
+ }
+
+ if (!_mesa_x86_has_cpuid()) {
+ _mesa_debug(NULL, "CPUID not detected\n");
+ }
+ else {
+ GLuint cpu_features;
+ GLuint cpu_ext_features;
+ GLuint cpu_ext_info;
+ char cpu_vendor[13];
+ GLuint result;
+
+ /* get vendor name */
+ _mesa_x86_cpuid(0, &result, (GLuint *)(cpu_vendor + 0), (GLuint *)(cpu_vendor + 8), (GLuint *)(cpu_vendor + 4));
+ cpu_vendor[12] = '\0';
+
+ if (detection_debug)
+ _mesa_debug(NULL, "CPU vendor: %s\n", cpu_vendor);
+
+ /* get cpu features */
+ cpu_features = _mesa_x86_cpuid_edx(1);
+
+ if (cpu_features & X86_CPU_FPU)
+ _mesa_x86_cpu_features |= X86_FEATURE_FPU;
+ if (cpu_features & X86_CPU_CMOV)
+ _mesa_x86_cpu_features |= X86_FEATURE_CMOV;
+
+#ifdef USE_MMX_ASM
+ if (cpu_features & X86_CPU_MMX)
+ _mesa_x86_cpu_features |= X86_FEATURE_MMX;
+#endif
+
+#ifdef USE_SSE_ASM
+ if (cpu_features & X86_CPU_XMM)
+ _mesa_x86_cpu_features |= X86_FEATURE_XMM;
+ if (cpu_features & X86_CPU_XMM2)
+ _mesa_x86_cpu_features |= X86_FEATURE_XMM2;
+#endif
+
+ /* query extended cpu features */
+ if ((cpu_ext_info = _mesa_x86_cpuid_eax(0x80000000)) > 0x80000000) {
+ if (cpu_ext_info >= 0x80000001) {
+
+ cpu_ext_features = _mesa_x86_cpuid_edx(0x80000001);
+
+ if (cpu_features & X86_CPU_MMX) {
+
+#ifdef USE_3DNOW_ASM
+ if (cpu_ext_features & X86_CPUEXT_3DNOW)
+ _mesa_x86_cpu_features |= X86_FEATURE_3DNOW;
+ if (cpu_ext_features & X86_CPUEXT_3DNOW_EXT)
+ _mesa_x86_cpu_features |= X86_FEATURE_3DNOWEXT;
+#endif
+
+#ifdef USE_MMX_ASM
+ if (cpu_ext_features & X86_CPUEXT_MMX_EXT)
+ _mesa_x86_cpu_features |= X86_FEATURE_MMXEXT;
+#endif
+ }
+ }
+
+ /* query cpu name */
+ if (cpu_ext_info >= 0x80000002) {
+ GLuint ofs;
+ char cpu_name[49];
+ for (ofs = 0; ofs < 3; ofs++)
+ _mesa_x86_cpuid(0x80000002+ofs, (GLuint *)(cpu_name + (16*ofs)+0), (GLuint *)(cpu_name + (16*ofs)+4), (GLuint *)(cpu_name + (16*ofs)+8), (GLuint *)(cpu_name + (16*ofs)+12));
+ cpu_name[48] = '\0'; /* the name should be NULL terminated, but just to be sure */
+
+ if (detection_debug)
+ _mesa_debug(NULL, "CPU name: %s\n", cpu_name);
+ }
+ }
+
+ }
+
+#ifdef USE_MMX_ASM
+ if ( cpu_has_mmx ) {
+ if ( _mesa_getenv( "MESA_NO_MMX" ) == 0 ) {
+ if (detection_debug)
+ _mesa_debug(NULL, "MMX cpu detected.\n");
+ } else {
+ _mesa_x86_cpu_features &= ~(X86_FEATURE_MMX);
+ }
+ }
+#endif
+
+#ifdef USE_3DNOW_ASM
+ if ( cpu_has_3dnow ) {
+ if ( _mesa_getenv( "MESA_NO_3DNOW" ) == 0 ) {
+ if (detection_debug)
+ _mesa_debug(NULL, "3DNow! cpu detected.\n");
+ } else {
+ _mesa_x86_cpu_features &= ~(X86_FEATURE_3DNOW);
+ }
+ }
+#endif
+
+#ifdef USE_SSE_ASM
+ if ( cpu_has_xmm ) {
+ if ( _mesa_getenv( "MESA_NO_SSE" ) == 0 ) {
+ if (detection_debug)
+ _mesa_debug(NULL, "SSE cpu detected.\n");
+ if ( _mesa_getenv( "MESA_FORCE_SSE" ) == 0 ) {
+ _mesa_check_os_sse_support();
+ }
+ } else {
+ _mesa_debug(NULL, "SSE cpu detected, but switched off by user.\n");
+ _mesa_x86_cpu_features &= ~(X86_FEATURE_XMM);
+ }
+ }
+#endif
+
+#endif /* USE_X86_ASM */
+
+ (void) detection_debug;
+}
diff --git a/mesalib/src/mesa/x86/common_x86_asm.S b/mesalib/src/mesa/x86/common_x86_asm.S
index 1d61bde58..ea4047a0e 100644
--- a/mesalib/src/mesa/x86/common_x86_asm.S
+++ b/mesalib/src/mesa/x86/common_x86_asm.S
@@ -1,220 +1,220 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.3
- *
- * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * Check extended CPU capabilities. Now justs returns the raw CPUID
- * feature information, allowing the higher level code to interpret the
- * results.
- *
- * Written by Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
- *
- * Cleaned up and simplified by Gareth Hughes <gareth@valinux.com>
- *
- */
-
-/*
- * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
- * with macros like CONST, LLBL that expand to CONCAT(...). Putting spaces
- * in there will break the build on some platforms.
- */
-
-#include "matypes.h"
-#include "assyntax.h"
-#include "common_x86_features.h"
-
- SEG_TEXT
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_x86_has_cpuid)
-HIDDEN(_mesa_x86_has_cpuid)
-GLNAME(_mesa_x86_has_cpuid):
-
- /* Test for the CPUID command. If the ID Flag bit in EFLAGS
- * (bit 21) is writable, the CPUID command is present */
- PUSHF_L
- POP_L (EAX)
- MOV_L (EAX, ECX)
- XOR_L (CONST(0x00200000), EAX)
- PUSH_L (EAX)
- POPF_L
- PUSHF_L
- POP_L (EAX)
-
- /* Verify the ID Flag bit has been written. */
- CMP_L (ECX, EAX)
- SETNE (AL)
- XOR_L (CONST(0xff), EAX)
-
- RET
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_x86_cpuid)
-HIDDEN(_mesa_x86_cpuid)
-GLNAME(_mesa_x86_cpuid):
-
- MOV_L (REGOFF(4, ESP), EAX) /* cpuid op */
- PUSH_L (EDI)
- PUSH_L (EBX)
-
- CPUID
-
- MOV_L (REGOFF(16, ESP), EDI) /* *eax */
- MOV_L (EAX, REGIND(EDI))
- MOV_L (REGOFF(20, ESP), EDI) /* *ebx */
- MOV_L (EBX, REGIND(EDI))
- MOV_L (REGOFF(24, ESP), EDI) /* *ecx */
- MOV_L (ECX, REGIND(EDI))
- MOV_L (REGOFF(28, ESP), EDI) /* *edx */
- MOV_L (EDX, REGIND(EDI))
-
- POP_L (EBX)
- POP_L (EDI)
- RET
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_x86_cpuid_eax)
-HIDDEN(_mesa_x86_cpuid_eax)
-GLNAME(_mesa_x86_cpuid_eax):
-
- MOV_L (REGOFF(4, ESP), EAX) /* cpuid op */
- PUSH_L (EBX)
-
- CPUID
-
- POP_L (EBX)
- RET
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_x86_cpuid_ebx)
-HIDDEN(_mesa_x86_cpuid_ebx)
-GLNAME(_mesa_x86_cpuid_ebx):
-
- MOV_L (REGOFF(4, ESP), EAX) /* cpuid op */
- PUSH_L (EBX)
-
- CPUID
- MOV_L (EBX, EAX) /* return EBX */
-
- POP_L (EBX)
- RET
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_x86_cpuid_ecx)
-HIDDEN(_mesa_x86_cpuid_ecx)
-GLNAME(_mesa_x86_cpuid_ecx):
-
- MOV_L (REGOFF(4, ESP), EAX) /* cpuid op */
- PUSH_L (EBX)
-
- CPUID
- MOV_L (ECX, EAX) /* return ECX */
-
- POP_L (EBX)
- RET
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_x86_cpuid_edx)
-HIDDEN(_mesa_x86_cpuid_edx)
-GLNAME(_mesa_x86_cpuid_edx):
-
- MOV_L (REGOFF(4, ESP), EAX) /* cpuid op */
- PUSH_L (EBX)
-
- CPUID
- MOV_L (EDX, EAX) /* return EDX */
-
- POP_L (EBX)
- RET
-
-#ifdef USE_SSE_ASM
-/* Execute an SSE instruction to see if the operating system correctly
- * supports SSE. A signal handler for SIGILL should have been set
- * before calling this function, otherwise this could kill the client
- * application.
- *
- * -----> !!!! ATTENTION DEVELOPERS !!!! <-----
- *
- * If you're debugging with gdb and you get stopped in this function,
- * just type 'continue'! Execution will proceed normally.
- * See freedesktop.org bug #1709 for more info.
- */
-ALIGNTEXT4
-GLOBL GLNAME( _mesa_test_os_sse_support )
-HIDDEN(_mesa_test_os_sse_support)
-GLNAME( _mesa_test_os_sse_support ):
-
- XORPS ( XMM0, XMM0 )
-
- RET
-
-
-/* Perform an SSE divide-by-zero to see if the operating system
- * correctly supports unmasked SIMD FPU exceptions. Signal handlers for
- * SIGILL and SIGFPE should have been set before calling this function,
- * otherwise this could kill the client application.
- */
-ALIGNTEXT4
-GLOBL GLNAME( _mesa_test_os_sse_exception_support )
-HIDDEN(_mesa_test_os_sse_exception_support)
-GLNAME( _mesa_test_os_sse_exception_support ):
-
- PUSH_L ( EBP )
- MOV_L ( ESP, EBP )
- SUB_L ( CONST( 8 ), ESP )
-
- /* Save the original MXCSR register value.
- */
- STMXCSR ( REGOFF( -4, EBP ) )
-
- /* Unmask the divide-by-zero exception and perform one.
- */
- STMXCSR ( REGOFF( -8, EBP ) )
- AND_L ( CONST( 0xfffffdff ), REGOFF( -8, EBP ) )
- LDMXCSR ( REGOFF( -8, EBP ) )
-
- XORPS ( XMM0, XMM0 )
-
- PUSH_L ( CONST( 0x3f800000 ) )
- PUSH_L ( CONST( 0x3f800000 ) )
- PUSH_L ( CONST( 0x3f800000 ) )
- PUSH_L ( CONST( 0x3f800000 ) )
-
- MOVUPS ( REGIND( ESP ), XMM1 )
-
- DIVPS ( XMM0, XMM1 )
-
- /* Restore the original MXCSR register value.
- */
- LDMXCSR ( REGOFF( -4, EBP ) )
-
- LEAVE
- RET
-
-#endif
-
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.3
+ *
+ * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * Check extended CPU capabilities. Now justs returns the raw CPUID
+ * feature information, allowing the higher level code to interpret the
+ * results.
+ *
+ * Written by Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
+ *
+ * Cleaned up and simplified by Gareth Hughes <gareth@valinux.com>
+ *
+ */
+
+/*
+ * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
+ * with macros like CONST, LLBL that expand to CONCAT(...). Putting spaces
+ * in there will break the build on some platforms.
+ */
+
+#include "matypes.h"
+#include "assyntax.h"
+#include "common_x86_features.h"
+
+ SEG_TEXT
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_x86_has_cpuid)
+HIDDEN(_mesa_x86_has_cpuid)
+GLNAME(_mesa_x86_has_cpuid):
+
+ /* Test for the CPUID command. If the ID Flag bit in EFLAGS
+ * (bit 21) is writable, the CPUID command is present */
+ PUSHF_L
+ POP_L (EAX)
+ MOV_L (EAX, ECX)
+ XOR_L (CONST(0x00200000), EAX)
+ PUSH_L (EAX)
+ POPF_L
+ PUSHF_L
+ POP_L (EAX)
+
+ /* Verify the ID Flag bit has been written. */
+ CMP_L (ECX, EAX)
+ SETNE (AL)
+ XOR_L (CONST(0xff), EAX)
+
+ RET
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_x86_cpuid)
+HIDDEN(_mesa_x86_cpuid)
+GLNAME(_mesa_x86_cpuid):
+
+ MOV_L (REGOFF(4, ESP), EAX) /* cpuid op */
+ PUSH_L (EDI)
+ PUSH_L (EBX)
+
+ CPUID
+
+ MOV_L (REGOFF(16, ESP), EDI) /* *eax */
+ MOV_L (EAX, REGIND(EDI))
+ MOV_L (REGOFF(20, ESP), EDI) /* *ebx */
+ MOV_L (EBX, REGIND(EDI))
+ MOV_L (REGOFF(24, ESP), EDI) /* *ecx */
+ MOV_L (ECX, REGIND(EDI))
+ MOV_L (REGOFF(28, ESP), EDI) /* *edx */
+ MOV_L (EDX, REGIND(EDI))
+
+ POP_L (EBX)
+ POP_L (EDI)
+ RET
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_x86_cpuid_eax)
+HIDDEN(_mesa_x86_cpuid_eax)
+GLNAME(_mesa_x86_cpuid_eax):
+
+ MOV_L (REGOFF(4, ESP), EAX) /* cpuid op */
+ PUSH_L (EBX)
+
+ CPUID
+
+ POP_L (EBX)
+ RET
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_x86_cpuid_ebx)
+HIDDEN(_mesa_x86_cpuid_ebx)
+GLNAME(_mesa_x86_cpuid_ebx):
+
+ MOV_L (REGOFF(4, ESP), EAX) /* cpuid op */
+ PUSH_L (EBX)
+
+ CPUID
+ MOV_L (EBX, EAX) /* return EBX */
+
+ POP_L (EBX)
+ RET
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_x86_cpuid_ecx)
+HIDDEN(_mesa_x86_cpuid_ecx)
+GLNAME(_mesa_x86_cpuid_ecx):
+
+ MOV_L (REGOFF(4, ESP), EAX) /* cpuid op */
+ PUSH_L (EBX)
+
+ CPUID
+ MOV_L (ECX, EAX) /* return ECX */
+
+ POP_L (EBX)
+ RET
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_x86_cpuid_edx)
+HIDDEN(_mesa_x86_cpuid_edx)
+GLNAME(_mesa_x86_cpuid_edx):
+
+ MOV_L (REGOFF(4, ESP), EAX) /* cpuid op */
+ PUSH_L (EBX)
+
+ CPUID
+ MOV_L (EDX, EAX) /* return EDX */
+
+ POP_L (EBX)
+ RET
+
+#ifdef USE_SSE_ASM
+/* Execute an SSE instruction to see if the operating system correctly
+ * supports SSE. A signal handler for SIGILL should have been set
+ * before calling this function, otherwise this could kill the client
+ * application.
+ *
+ * -----> !!!! ATTENTION DEVELOPERS !!!! <-----
+ *
+ * If you're debugging with gdb and you get stopped in this function,
+ * just type 'continue'! Execution will proceed normally.
+ * See freedesktop.org bug #1709 for more info.
+ */
+ALIGNTEXT4
+GLOBL GLNAME( _mesa_test_os_sse_support )
+HIDDEN(_mesa_test_os_sse_support)
+GLNAME( _mesa_test_os_sse_support ):
+
+ XORPS ( XMM0, XMM0 )
+
+ RET
+
+
+/* Perform an SSE divide-by-zero to see if the operating system
+ * correctly supports unmasked SIMD FPU exceptions. Signal handlers for
+ * SIGILL and SIGFPE should have been set before calling this function,
+ * otherwise this could kill the client application.
+ */
+ALIGNTEXT4
+GLOBL GLNAME( _mesa_test_os_sse_exception_support )
+HIDDEN(_mesa_test_os_sse_exception_support)
+GLNAME( _mesa_test_os_sse_exception_support ):
+
+ PUSH_L ( EBP )
+ MOV_L ( ESP, EBP )
+ SUB_L ( CONST( 8 ), ESP )
+
+ /* Save the original MXCSR register value.
+ */
+ STMXCSR ( REGOFF( -4, EBP ) )
+
+ /* Unmask the divide-by-zero exception and perform one.
+ */
+ STMXCSR ( REGOFF( -8, EBP ) )
+ AND_L ( CONST( 0xfffffdff ), REGOFF( -8, EBP ) )
+ LDMXCSR ( REGOFF( -8, EBP ) )
+
+ XORPS ( XMM0, XMM0 )
+
+ PUSH_L ( CONST( 0x3f800000 ) )
+ PUSH_L ( CONST( 0x3f800000 ) )
+ PUSH_L ( CONST( 0x3f800000 ) )
+ PUSH_L ( CONST( 0x3f800000 ) )
+
+ MOVUPS ( REGIND( ESP ), XMM1 )
+
+ DIVPS ( XMM0, XMM1 )
+
+ /* Restore the original MXCSR register value.
+ */
+ LDMXCSR ( REGOFF( -4, EBP ) )
+
+ LEAVE
+ RET
+
+#endif
+
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/common_x86_asm.h b/mesalib/src/mesa/x86/common_x86_asm.h
index efda4a0c8..0d39e3d23 100644
--- a/mesalib/src/mesa/x86/common_x86_asm.h
+++ b/mesalib/src/mesa/x86/common_x86_asm.h
@@ -1,53 +1,53 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * Check CPU capabilities & initialize optimized funtions for this particular
- * processor.
- *
- * Written by Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
- * Changed by Andre Werthmann <wertmann@cs.uni-potsdam.de> for using the
- * new SSE functions
- *
- * Reimplemented by Gareth Hughes in a more
- * future-proof manner, based on code in the Linux kernel.
- */
-
-#ifndef __COMMON_X86_ASM_H__
-#define __COMMON_X86_ASM_H__
-
-/* Do not reference mtypes.h from this file.
- */
-#include "common_x86_features.h"
-
-extern int _mesa_x86_cpu_features;
-
-extern void _mesa_get_x86_features(void);
-
-extern void _mesa_check_os_sse_support(void);
-
-extern void _mesa_init_all_x86_transform_asm( void );
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * Check CPU capabilities & initialize optimized funtions for this particular
+ * processor.
+ *
+ * Written by Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
+ * Changed by Andre Werthmann <wertmann@cs.uni-potsdam.de> for using the
+ * new SSE functions
+ *
+ * Reimplemented by Gareth Hughes in a more
+ * future-proof manner, based on code in the Linux kernel.
+ */
+
+#ifndef __COMMON_X86_ASM_H__
+#define __COMMON_X86_ASM_H__
+
+/* Do not reference mtypes.h from this file.
+ */
+#include "common_x86_features.h"
+
+extern int _mesa_x86_cpu_features;
+
+extern void _mesa_get_x86_features(void);
+
+extern void _mesa_check_os_sse_support(void);
+
+extern void _mesa_init_all_x86_transform_asm( void );
+
+#endif
diff --git a/mesalib/src/mesa/x86/common_x86_features.h b/mesalib/src/mesa/x86/common_x86_features.h
index 2482d00ab..676af8c1f 100644
--- a/mesalib/src/mesa/x86/common_x86_features.h
+++ b/mesalib/src/mesa/x86/common_x86_features.h
@@ -1,67 +1,67 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 5.1
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * x86 CPUID feature information. The raw data is returned by
- * _mesa_identify_x86_cpu_features() and interpreted with the cpu_has_*
- * helper macros.
- *
- * Gareth Hughes
- */
-
-#ifndef __COMMON_X86_FEATURES_H__
-#define __COMMON_X86_FEATURES_H__
-
-#define X86_FEATURE_FPU (1<<0)
-#define X86_FEATURE_CMOV (1<<1)
-#define X86_FEATURE_MMXEXT (1<<2)
-#define X86_FEATURE_MMX (1<<3)
-#define X86_FEATURE_FXSR (1<<4)
-#define X86_FEATURE_XMM (1<<5)
-#define X86_FEATURE_XMM2 (1<<6)
-#define X86_FEATURE_3DNOWEXT (1<<7)
-#define X86_FEATURE_3DNOW (1<<8)
-
-/* standard X86 CPU features */
-#define X86_CPU_FPU (1<<0)
-#define X86_CPU_CMOV (1<<15)
-#define X86_CPU_MMX (1<<23)
-#define X86_CPU_XMM (1<<25)
-#define X86_CPU_XMM2 (1<<26)
-
-/* extended X86 CPU features */
-#define X86_CPUEXT_MMX_EXT (1<<22)
-#define X86_CPUEXT_3DNOW_EXT (1<<30)
-#define X86_CPUEXT_3DNOW (1<<31)
-
-#define cpu_has_mmx (_mesa_x86_cpu_features & X86_FEATURE_MMX)
-#define cpu_has_mmxext (_mesa_x86_cpu_features & X86_FEATURE_MMXEXT)
-#define cpu_has_xmm (_mesa_x86_cpu_features & X86_FEATURE_XMM)
-#define cpu_has_xmm2 (_mesa_x86_cpu_features & X86_FEATURE_XMM2)
-#define cpu_has_3dnow (_mesa_x86_cpu_features & X86_FEATURE_3DNOW)
-#define cpu_has_3dnowext (_mesa_x86_cpu_features & X86_FEATURE_3DNOWEXT)
-
-#endif
-
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 5.1
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * x86 CPUID feature information. The raw data is returned by
+ * _mesa_identify_x86_cpu_features() and interpreted with the cpu_has_*
+ * helper macros.
+ *
+ * Gareth Hughes
+ */
+
+#ifndef __COMMON_X86_FEATURES_H__
+#define __COMMON_X86_FEATURES_H__
+
+#define X86_FEATURE_FPU (1<<0)
+#define X86_FEATURE_CMOV (1<<1)
+#define X86_FEATURE_MMXEXT (1<<2)
+#define X86_FEATURE_MMX (1<<3)
+#define X86_FEATURE_FXSR (1<<4)
+#define X86_FEATURE_XMM (1<<5)
+#define X86_FEATURE_XMM2 (1<<6)
+#define X86_FEATURE_3DNOWEXT (1<<7)
+#define X86_FEATURE_3DNOW (1<<8)
+
+/* standard X86 CPU features */
+#define X86_CPU_FPU (1<<0)
+#define X86_CPU_CMOV (1<<15)
+#define X86_CPU_MMX (1<<23)
+#define X86_CPU_XMM (1<<25)
+#define X86_CPU_XMM2 (1<<26)
+
+/* extended X86 CPU features */
+#define X86_CPUEXT_MMX_EXT (1<<22)
+#define X86_CPUEXT_3DNOW_EXT (1<<30)
+#define X86_CPUEXT_3DNOW (1<<31)
+
+#define cpu_has_mmx (_mesa_x86_cpu_features & X86_FEATURE_MMX)
+#define cpu_has_mmxext (_mesa_x86_cpu_features & X86_FEATURE_MMXEXT)
+#define cpu_has_xmm (_mesa_x86_cpu_features & X86_FEATURE_XMM)
+#define cpu_has_xmm2 (_mesa_x86_cpu_features & X86_FEATURE_XMM2)
+#define cpu_has_3dnow (_mesa_x86_cpu_features & X86_FEATURE_3DNOW)
+#define cpu_has_3dnowext (_mesa_x86_cpu_features & X86_FEATURE_3DNOWEXT)
+
+#endif
+
diff --git a/mesalib/src/mesa/x86/mmx.h b/mesalib/src/mesa/x86/mmx.h
index 28a43d18d..74e9979d3 100644
--- a/mesalib/src/mesa/x86/mmx.h
+++ b/mesalib/src/mesa/x86/mmx.h
@@ -1,59 +1,59 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.2
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-
-#ifndef ASM_MMX_H
-#define ASM_MMX_H
-
-#include "main/compiler.h"
-#include "main/glheader.h"
-
-struct gl_context;
-
-extern void _ASMAPI
-_mesa_mmx_blend_transparency( struct gl_context *ctx, GLuint n, const GLubyte mask[],
- GLvoid *rgba, const GLvoid *dest,
- GLenum chanType );
-
-extern void _ASMAPI
-_mesa_mmx_blend_add( struct gl_context *ctx, GLuint n, const GLubyte mask[],
- GLvoid *rgba, const GLvoid *dest,
- GLenum chanType );
-
-extern void _ASMAPI
-_mesa_mmx_blend_min( struct gl_context *ctx, GLuint n, const GLubyte mask[],
- GLvoid *rgba, const GLvoid *dest,
- GLenum chanType );
-
-extern void _ASMAPI
-_mesa_mmx_blend_max( struct gl_context *ctx, GLuint n, const GLubyte mask[],
- GLvoid *rgba, const GLvoid *dest,
- GLenum chanType );
-
-extern void _ASMAPI
-_mesa_mmx_blend_modulate( struct gl_context *ctx, GLuint n, const GLubyte mask[],
- GLvoid *rgba, const GLvoid *dest,
- GLenum chanType );
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.2
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+
+#ifndef ASM_MMX_H
+#define ASM_MMX_H
+
+#include "main/compiler.h"
+#include "main/glheader.h"
+
+struct gl_context;
+
+extern void _ASMAPI
+_mesa_mmx_blend_transparency( struct gl_context *ctx, GLuint n, const GLubyte mask[],
+ GLvoid *rgba, const GLvoid *dest,
+ GLenum chanType );
+
+extern void _ASMAPI
+_mesa_mmx_blend_add( struct gl_context *ctx, GLuint n, const GLubyte mask[],
+ GLvoid *rgba, const GLvoid *dest,
+ GLenum chanType );
+
+extern void _ASMAPI
+_mesa_mmx_blend_min( struct gl_context *ctx, GLuint n, const GLubyte mask[],
+ GLvoid *rgba, const GLvoid *dest,
+ GLenum chanType );
+
+extern void _ASMAPI
+_mesa_mmx_blend_max( struct gl_context *ctx, GLuint n, const GLubyte mask[],
+ GLvoid *rgba, const GLvoid *dest,
+ GLenum chanType );
+
+extern void _ASMAPI
+_mesa_mmx_blend_modulate( struct gl_context *ctx, GLuint n, const GLubyte mask[],
+ GLvoid *rgba, const GLvoid *dest,
+ GLenum chanType );
+
+#endif
diff --git a/mesalib/src/mesa/x86/mmx_blend.S b/mesalib/src/mesa/x86/mmx_blend.S
index 1e3954730..eeaf43ea9 100644
--- a/mesalib/src/mesa/x86/mmx_blend.S
+++ b/mesalib/src/mesa/x86/mmx_blend.S
@@ -1,402 +1,402 @@
- ;
-/*
- * Written by Jos� Fonseca <j_r_fonseca@yahoo.co.uk>
- */
-
-
-#ifdef USE_MMX_ASM
-#include "assyntax.h"
-#include "matypes.h"
-
-/* integer multiplication - alpha plus one
- *
- * makes the following approximation to the division (Sree)
- *
- * rgb*a/255 ~= (rgb*(a+1)) >> 256
- *
- * which is the fastest method that satisfies the following OpenGL criteria
- *
- * 0*0 = 0 and 255*255 = 255
- *
- * note that MX1 is a register with 0xffffffffffffffff constant which can be easily obtained making
- *
- * PCMPEQW ( MX1, MX1 )
- */
-#define GMB_MULT_AP1( MP1, MA1, MP2, MA2, MX1 ) \
- PSUBW ( MX1, MA1 ) /* a1 + 1 | a1 + 1 | a1 + 1 | a1 + 1 */ ;\
- PMULLW ( MP1, MA1 ) /* t1 = p1*a1 */ ;\
- ;\
-TWO(PSUBW ( MX1, MA2 )) /* a2 + 1 | a2 + 1 | a2 + 1 | a2 + 1 */ ;\
-TWO(PMULLW ( MP2, MA2 )) /* t2 = p2*a2 */ ;\
- ;\
- PSRLW ( CONST(8), MA1 ) /* t1 >> 8 ~= t1/255 */ ;\
-TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 ~= t2/255 */
-
-
-/* integer multiplication - geometric series
- *
- * takes the geometric series approximation to the division
- *
- * t/255 = (t >> 8) + (t >> 16) + (t >> 24) ..
- *
- * in this case just the first two terms to fit in 16bit arithmetic
- *
- * t/255 ~= (t + (t >> 8)) >> 8
- *
- * note that just by itself it doesn't satisfies the OpenGL criteria, as 255*255 = 254,
- * so the special case a = 255 must be accounted or roundoff must be used
- */
-#define GMB_MULT_GS( MP1, MA1, MP2, MA2 ) \
- PMULLW ( MP1, MA1 ) /* t1 = p1*a1 */ ;\
-TWO(PMULLW ( MP2, MA2 )) /* t2 = p2*a2 */ ;\
- ;\
- MOVQ ( MA1, MP1 ) ;\
- PSRLW ( CONST(8), MA1 ) /* t1 >> 8 */ ;\
- ;\
-TWO(MOVQ ( MA2, MP2 )) ;\
-TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 */ ;\
- ;\
- PADDW ( MP1, MA1 ) /* t1 + (t1 >> 8) ~= (t1/255) << 8 */ ;\
- PSRLW ( CONST(8), MA1 ) /* sa1 | sb1 | sg1 | sr1 */ ;\
- ;\
-TWO(PADDW ( MP2, MA2 )) /* t2 + (t2 >> 8) ~= (t2/255) << 8 */ ;\
-TWO(PSRLW ( CONST(8), MA2 )) /* sa2 | sb2 | sg2 | sr2 */
-
-
-/* integer multiplication - geometric series plus rounding
- *
- * when using a geometric series division instead of truncating the result
- * use roundoff in the approximation (Jim Blinn)
- *
- * t = rgb*a + 0x80
- *
- * achieving the exact results
- *
- * note that M80 is register with the 0x0080008000800080 constant
- */
-#define GMB_MULT_GSR( MP1, MA1, MP2, MA2, M80 ) \
- PMULLW ( MP1, MA1 ) /* t1 = p1*a1 */ ;\
- PADDW ( M80, MA1 ) /* t1 += 0x80 */ ;\
- ;\
-TWO(PMULLW ( MP2, MA2 )) /* t2 = p2*a2 */ ;\
-TWO(PADDW ( M80, MA2 )) /* t2 += 0x80 */ ;\
- ;\
- MOVQ ( MA1, MP1 ) ;\
- PSRLW ( CONST(8), MA1 ) /* t1 >> 8 */ ;\
- ;\
-TWO(MOVQ ( MA2, MP2 )) ;\
-TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 */ ;\
- ;\
- PADDW ( MP1, MA1 ) /* t1 + (t1 >> 8) ~= (t1/255) << 8 */ ;\
- PSRLW ( CONST(8), MA1 ) /* sa1 | sb1 | sg1 | sr1 */ ;\
- ;\
-TWO(PADDW ( MP2, MA2 )) /* t2 + (t2 >> 8) ~= (t2/255) << 8 */ ;\
-TWO(PSRLW ( CONST(8), MA2 )) /* sa2 | sb2 | sg2 | sr2 */
-
-
-/* linear interpolation - geometric series
- */
-#define GMB_LERP_GS( MP1, MQ1, MA1, MP2, MQ2, MA2) \
- PSUBW ( MQ1, MP1 ) /* pa1 - qa1 | pb1 - qb1 | pg1 - qg1 | pr1 - qr1 */ ;\
- PSLLW ( CONST(8), MQ1 ) /* q1 << 8 */ ;\
- PMULLW ( MP1, MA1 ) /* t1 = (q1 - p1)*pa1 */ ;\
- ;\
-TWO(PSUBW ( MQ2, MP2 )) /* pa2 - qa2 | pb2 - qb2 | pg2 - qg2 | pr2 - qr2 */ ;\
-TWO(PSLLW ( CONST(8), MQ2 )) /* q2 << 8 */ ;\
-TWO(PMULLW ( MP2, MA2 )) /* t2 = (q2 - p2)*pa2 */ ;\
- ;\
- MOVQ ( MA1, MP1 ) ;\
- PSRLW ( CONST(8), MA1 ) /* t1 >> 8 */ ;\
- ;\
-TWO(MOVQ ( MA2, MP2 )) ;\
-TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 */ ;\
- ;\
- PADDW ( MP1, MA1 ) /* t1 + (t1 >> 8) ~= (t1/255) << 8 */ ;\
-TWO(PADDW ( MP2, MA2 )) /* t2 + (t2 >> 8) ~= (t2/255) << 8 */ ;\
- ;\
- PADDW ( MQ1, MA1 ) /* (t1/255 + q1) << 8 */ ;\
-TWO(PADDW ( MQ2, MA2 )) /* (t2/255 + q2) << 8 */ ;\
- ;\
- PSRLW ( CONST(8), MA1 ) /* sa1 | sb1 | sg1 | sr1 */ ;\
-TWO(PSRLW ( CONST(8), MA2 )) /* sa2 | sb2 | sg2 | sr2 */
-
-
-/* linear interpolation - geometric series with roundoff
- *
- * this is a generalization of Blinn's formula to signed arithmetic
- *
- * note that M80 is a register with the 0x0080008000800080 constant
- */
-#define GMB_LERP_GSR( MP1, MQ1, MA1, MP2, MQ2, MA2, M80) \
- PSUBW ( MQ1, MP1 ) /* pa1 - qa1 | pb1 - qb1 | pg1 - qg1 | pr1 - qr1 */ ;\
- PSLLW ( CONST(8), MQ1 ) /* q1 << 8 */ ;\
- PMULLW ( MP1, MA1 ) /* t1 = (q1 - p1)*pa1 */ ;\
- ;\
-TWO(PSUBW ( MQ2, MP2 )) /* pa2 - qa2 | pb2 - qb2 | pg2 - qg2 | pr2 - qr2 */ ;\
-TWO(PSLLW ( CONST(8), MQ2 )) /* q2 << 8 */ ;\
-TWO(PMULLW ( MP2, MA2 )) /* t2 = (q2 - p2)*pa2 */ ;\
- ;\
- PSRLW ( CONST(15), MP1 ) /* q1 > p1 ? 1 : 0 */ ;\
-TWO(PSRLW ( CONST(15), MP2 )) /* q2 > q2 ? 1 : 0 */ ;\
- ;\
- PSLLW ( CONST(8), MP1 ) /* q1 > p1 ? 0x100 : 0 */ ;\
-TWO(PSLLW ( CONST(8), MP2 )) /* q2 > q2 ? 0x100 : 0 */ ;\
- ;\
- PSUBW ( MP1, MA1 ) /* t1 -=? 0x100 */ ;\
-TWO(PSUBW ( MP2, MA2 )) /* t2 -=? 0x100 */ ;\
- ;\
- PADDW ( M80, MA1 ) /* t1 += 0x80 */ ;\
-TWO(PADDW ( M80, MA2 )) /* t2 += 0x80 */ ;\
- ;\
- MOVQ ( MA1, MP1 ) ;\
- PSRLW ( CONST(8), MA1 ) /* t1 >> 8 */ ;\
- ;\
-TWO(MOVQ ( MA2, MP2 )) ;\
-TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 */ ;\
- ;\
- PADDW ( MP1, MA1 ) /* t1 + (t1 >> 8) ~= (t1/255) << 8 */ ;\
-TWO(PADDW ( MP2, MA2 )) /* t2 + (t2 >> 8) ~= (t2/255) << 8 */ ;\
- ;\
- PADDW ( MQ1, MA1 ) /* (t1/255 + q1) << 8 */ ;\
-TWO(PADDW ( MQ2, MA2 )) /* (t2/255 + q2) << 8 */ ;\
- ;\
- PSRLW ( CONST(8), MA1 ) /* sa1 | sb1 | sg1 | sr1 */ ;\
-TWO(PSRLW ( CONST(8), MA2 )) /* sa2 | sb2 | sg2 | sr2 */
-
-
-/* linear interpolation - geometric series with correction
- *
- * instead of the roundoff this adds a small correction to satisfy the OpenGL criteria
- *
- * t/255 ~= (t + (t >> 8) + (t >> 15)) >> 8
- *
- * note that although is faster than rounding off it doesn't give always the exact results
- */
-#define GMB_LERP_GSC( MP1, MQ1, MA1, MP2, MQ2, MA2) \
- PSUBW ( MQ1, MP1 ) /* pa1 - qa1 | pb1 - qb1 | pg1 - qg1 | pr1 - qr1 */ ;\
- PSLLW ( CONST(8), MQ1 ) /* q1 << 8 */ ;\
- PMULLW ( MP1, MA1 ) /* t1 = (q1 - p1)*pa1 */ ;\
- ;\
-TWO(PSUBW ( MQ2, MP2 )) /* pa2 - qa2 | pb2 - qb2 | pg2 - qg2 | pr2 - qr2 */ ;\
-TWO(PSLLW ( CONST(8), MQ2 )) /* q2 << 8 */ ;\
-TWO(PMULLW ( MP2, MA2 )) /* t2 = (q2 - p2)*pa2 */ ;\
- ;\
- MOVQ ( MA1, MP1 ) ;\
- PSRLW ( CONST(8), MA1 ) /* t1 >> 8 */ ;\
- ;\
-TWO(MOVQ ( MA2, MP2 )) ;\
-TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 */ ;\
- ;\
- PADDW ( MA1, MP1 ) /* t1 + (t1 >> 8) ~= (t1/255) << 8 */ ;\
- PSRLW ( CONST(7), MA1 ) /* t1 >> 15 */ ;\
- ;\
-TWO(PADDW ( MA2, MP2 )) /* t2 + (t2 >> 8) ~= (t2/255) << 8 */ ;\
-TWO(PSRLW ( CONST(7), MA2 )) /* t2 >> 15 */ ;\
- ;\
- PADDW ( MP1, MA1 ) /* t1 + (t1 >> 8) + (t1 >>15) ~= (t1/255) << 8 */ ;\
-TWO(PADDW ( MP2, MA2 )) /* t2 + (t2 >> 8) + (t2 >>15) ~= (t2/255) << 8 */ ;\
- ;\
- PADDW ( MQ1, MA1 ) /* (t1/255 + q1) << 8 */ ;\
-TWO(PADDW ( MQ2, MA2 )) /* (t2/255 + q2) << 8 */ ;\
- ;\
- PSRLW ( CONST(8), MA1 ) /* sa1 | sb1 | sg1 | sr1 */ ;\
-TWO(PSRLW ( CONST(8), MA2 )) /* sa2 | sb2 | sg2 | sr2 */
-
-
-/* common blending setup code
- *
- * note that M00 is a register with 0x0000000000000000 constant which can be easily obtained making
- *
- * PXOR ( M00, M00 )
- */
-#define GMB_LOAD(rgba, dest, MPP, MQQ) \
-ONE(MOVD ( REGIND(rgba), MPP )) /* | | | | qa1 | qb1 | qg1 | qr1 */ ;\
-ONE(MOVD ( REGIND(dest), MQQ )) /* | | | | pa1 | pb1 | pg1 | pr1 */ ;\
- ;\
-TWO(MOVQ ( REGIND(rgba), MPP )) /* qa2 | qb2 | qg2 | qr2 | qa1 | qb1 | qg1 | qr1 */ ;\
-TWO(MOVQ ( REGIND(dest), MQQ )) /* pa2 | pb2 | pg2 | pr2 | pa1 | pb1 | pg1 | pr1 */
-
-#define GMB_UNPACK(MP1, MQ1, MP2, MQ2, M00) \
-TWO(MOVQ ( MP1, MP2 )) ;\
-TWO(MOVQ ( MQ1, MQ2 )) ;\
- ;\
- PUNPCKLBW ( M00, MQ1 ) /* qa1 | qb1 | qg1 | qr1 */ ;\
-TWO(PUNPCKHBW ( M00, MQ2 )) /* qa2 | qb2 | qg2 | qr2 */ ;\
- PUNPCKLBW ( M00, MP1 ) /* pa1 | pb1 | pg1 | pr1 */ ;\
-TWO(PUNPCKHBW ( M00, MP2 )) /* pa2 | pb2 | pg2 | pr2 */
-
-#define GMB_ALPHA(MP1, MA1, MP2, MA2) \
- MOVQ ( MP1, MA1 ) ;\
-TWO(MOVQ ( MP2, MA2 )) ;\
- ;\
- PUNPCKHWD ( MA1, MA1 ) /* pa1 | pa1 | | */ ;\
-TWO(PUNPCKHWD ( MA2, MA2 )) /* pa2 | pa2 | | */ ;\
- PUNPCKHDQ ( MA1, MA1 ) /* pa1 | pa1 | pa1 | pa1 */ ;\
-TWO(PUNPCKHDQ ( MA2, MA2 )) /* pa2 | pa2 | pa2 | pa2 */
-
-#define GMB_PACK( MS1, MS2 ) \
- PACKUSWB ( MS2, MS1 ) /* sa2 | sb2 | sg2 | sr2 | sa1 | sb1 | sg1 | sr1 */ ;\
-
-#define GMB_STORE(rgba, MSS ) \
-ONE(MOVD ( MSS, REGIND(rgba) )) /* | | | | sa1 | sb1 | sg1 | sr1 */ ;\
-TWO(MOVQ ( MSS, REGIND(rgba) )) /* sa2 | sb2 | sg2 | sr2 | sa1 | sb1 | sg1 | sr1 */
-
-/* Kevin F. Quinn <kevquinn@gentoo.org> 2 July 2006
- * Replace data segment constants with text-segment
- * constants (via pushl/movq)
- SEG_DATA
-
-ALIGNDATA8
-const_0080:
- D_LONG 0x00800080, 0x00800080
-
-const_80:
- D_LONG 0x80808080, 0x80808080
-*/
-#define const_0080_l 0x00800080
-#define const_0080_h 0x00800080
-#define const_80_l 0x80808080
-#define const_80_h 0x80808080
-
- SEG_TEXT
-
-
-/* Blend transparency function
- */
-
-#define TAG(x) CONCAT(x,_transparency)
-#define LLTAG(x) LLBL2(x,_transparency)
-
-#define INIT \
- PXOR ( MM0, MM0 ) /* 0x0000 | 0x0000 | 0x0000 | 0x0000 */
-
-#define MAIN( rgba, dest ) \
- GMB_LOAD( rgba, dest, MM1, MM2 ) ;\
- GMB_UNPACK( MM1, MM2, MM4, MM5, MM0 ) ;\
- GMB_ALPHA( MM1, MM3, MM4, MM6 ) ;\
- GMB_LERP_GSC( MM1, MM2, MM3, MM4, MM5, MM6 ) ;\
- GMB_PACK( MM3, MM6 ) ;\
- GMB_STORE( rgba, MM3 )
-
-#include "mmx_blendtmp.h"
-
-
-/* Blend add function
- *
- * FIXME: Add some loop unrolling here...
- */
-
-#define TAG(x) CONCAT(x,_add)
-#define LLTAG(x) LLBL2(x,_add)
-
-#define INIT
-
-#define MAIN( rgba, dest ) \
-ONE(MOVD ( REGIND(rgba), MM1 )) /* | | | | qa1 | qb1 | qg1 | qr1 */ ;\
-ONE(MOVD ( REGIND(dest), MM2 )) /* | | | | pa1 | pb1 | pg1 | pr1 */ ;\
-ONE(PADDUSB ( MM2, MM1 )) ;\
-ONE(MOVD ( MM1, REGIND(rgba) )) /* | | | | sa1 | sb1 | sg1 | sr1 */ ;\
- ;\
-TWO(MOVQ ( REGIND(rgba), MM1 )) /* qa2 | qb2 | qg2 | qr2 | qa1 | qb1 | qg1 | qr1 */ ;\
-TWO(PADDUSB ( REGIND(dest), MM1 )) /* sa2 | sb2 | sg2 | sr2 | sa1 | sb1 | sg1 | sr1 */ ;\
-TWO(MOVQ ( MM1, REGIND(rgba) ))
-
-#include "mmx_blendtmp.h"
-
-
-/* Blend min function
- */
-
-#define TAG(x) CONCAT(x,_min)
-#define LLTAG(x) LLBL2(x,_min)
-
-/* Kevin F. Quinn 2nd July 2006
- * Replace data segment constants with text-segment instructions
-#define INIT \
- MOVQ ( CONTENT(const_80), MM7 )
- */
-#define INIT \
- PUSH_L ( CONST(const_80_h) ) /* 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80*/ ;\
- PUSH_L ( CONST(const_80_l) ) ;\
- MOVQ ( REGIND(ESP), MM7 ) ;\
- ADD_L ( CONST(8), ESP)
-
-#define MAIN( rgba, dest ) \
- GMB_LOAD( rgba, dest, MM1, MM2 ) ;\
- MOVQ ( MM1, MM3 ) ;\
- MOVQ ( MM2, MM4 ) ;\
- PXOR ( MM7, MM3 ) /* unsigned -> signed */ ;\
- PXOR ( MM7, MM4 ) /* unsigned -> signed */ ;\
- PCMPGTB ( MM3, MM4 ) /* q > p ? 0xff : 0x00 */ ;\
- PAND ( MM4, MM1 ) /* q > p ? p : 0 */ ;\
- PANDN ( MM2, MM4 ) /* q > p ? 0 : q */ ;\
- POR ( MM1, MM4 ) /* q > p ? p : q */ ;\
- GMB_STORE( rgba, MM4 )
-
-#include "mmx_blendtmp.h"
-
-
-/* Blend max function
- */
-
-#define TAG(x) CONCAT(x,_max)
-#define LLTAG(x) LLBL2(x,_max)
-
-/* Kevin F. Quinn 2nd July 2006
- * Replace data segment constants with text-segment instructions
-#define INIT \
- MOVQ ( CONTENT(const_80), MM7 )
- */
-#define INIT \
- PUSH_L ( CONST(const_80_l) ) /* 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80*/ ;\
- PUSH_L ( CONST(const_80_h) ) ;\
- MOVQ ( REGIND(ESP), MM7 ) ;\
- ADD_L ( CONST(8), ESP)
-
-#define MAIN( rgba, dest ) \
- GMB_LOAD( rgba, dest, MM1, MM2 ) ;\
- MOVQ ( MM1, MM3 ) ;\
- MOVQ ( MM2, MM4 ) ;\
- PXOR ( MM7, MM3 ) /* unsigned -> signed */ ;\
- PXOR ( MM7, MM4 ) /* unsigned -> signed */ ;\
- PCMPGTB ( MM3, MM4 ) /* q > p ? 0xff : 0x00 */ ;\
- PAND ( MM4, MM2 ) /* q > p ? q : 0 */ ;\
- PANDN ( MM1, MM4 ) /* q > p ? 0 : p */ ;\
- POR ( MM2, MM4 ) /* q > p ? p : q */ ;\
- GMB_STORE( rgba, MM4 )
-
-#include "mmx_blendtmp.h"
-
-
-/* Blend modulate function
- */
-
-#define TAG(x) CONCAT(x,_modulate)
-#define LLTAG(x) LLBL2(x,_modulate)
-
-/* Kevin F. Quinn 2nd July 2006
- * Replace data segment constants with text-segment instructions
-#define INIT \
- MOVQ ( CONTENT(const_0080), MM7 )
- */
-#define INIT \
- PXOR ( MM0, MM0 ) /* 0x0000 | 0x0000 | 0x0000 | 0x0000 */ ;\
- PUSH_L ( CONST(const_0080_l) ) /* 0x0080 | 0x0080 | 0x0080 | 0x0080 */ ;\
- PUSH_L ( CONST(const_0080_h) ) ;\
- MOVQ ( REGIND(ESP), MM7 ) ;\
- ADD_L ( CONST(8), ESP)
-
-#define MAIN( rgba, dest ) \
- GMB_LOAD( rgba, dest, MM1, MM2 ) ;\
- GMB_UNPACK( MM1, MM2, MM4, MM5, MM0 ) ;\
- GMB_MULT_GSR( MM1, MM2, MM4, MM5, MM7 ) ;\
- GMB_PACK( MM2, MM5 ) ;\
- GMB_STORE( rgba, MM2 )
-
-#include "mmx_blendtmp.h"
-
-#endif
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+ ;
+/*
+ * Written by Jos� Fonseca <j_r_fonseca@yahoo.co.uk>
+ */
+
+
+#ifdef USE_MMX_ASM
+#include "assyntax.h"
+#include "matypes.h"
+
+/* integer multiplication - alpha plus one
+ *
+ * makes the following approximation to the division (Sree)
+ *
+ * rgb*a/255 ~= (rgb*(a+1)) >> 256
+ *
+ * which is the fastest method that satisfies the following OpenGL criteria
+ *
+ * 0*0 = 0 and 255*255 = 255
+ *
+ * note that MX1 is a register with 0xffffffffffffffff constant which can be easily obtained making
+ *
+ * PCMPEQW ( MX1, MX1 )
+ */
+#define GMB_MULT_AP1( MP1, MA1, MP2, MA2, MX1 ) \
+ PSUBW ( MX1, MA1 ) /* a1 + 1 | a1 + 1 | a1 + 1 | a1 + 1 */ ;\
+ PMULLW ( MP1, MA1 ) /* t1 = p1*a1 */ ;\
+ ;\
+TWO(PSUBW ( MX1, MA2 )) /* a2 + 1 | a2 + 1 | a2 + 1 | a2 + 1 */ ;\
+TWO(PMULLW ( MP2, MA2 )) /* t2 = p2*a2 */ ;\
+ ;\
+ PSRLW ( CONST(8), MA1 ) /* t1 >> 8 ~= t1/255 */ ;\
+TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 ~= t2/255 */
+
+
+/* integer multiplication - geometric series
+ *
+ * takes the geometric series approximation to the division
+ *
+ * t/255 = (t >> 8) + (t >> 16) + (t >> 24) ..
+ *
+ * in this case just the first two terms to fit in 16bit arithmetic
+ *
+ * t/255 ~= (t + (t >> 8)) >> 8
+ *
+ * note that just by itself it doesn't satisfies the OpenGL criteria, as 255*255 = 254,
+ * so the special case a = 255 must be accounted or roundoff must be used
+ */
+#define GMB_MULT_GS( MP1, MA1, MP2, MA2 ) \
+ PMULLW ( MP1, MA1 ) /* t1 = p1*a1 */ ;\
+TWO(PMULLW ( MP2, MA2 )) /* t2 = p2*a2 */ ;\
+ ;\
+ MOVQ ( MA1, MP1 ) ;\
+ PSRLW ( CONST(8), MA1 ) /* t1 >> 8 */ ;\
+ ;\
+TWO(MOVQ ( MA2, MP2 )) ;\
+TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 */ ;\
+ ;\
+ PADDW ( MP1, MA1 ) /* t1 + (t1 >> 8) ~= (t1/255) << 8 */ ;\
+ PSRLW ( CONST(8), MA1 ) /* sa1 | sb1 | sg1 | sr1 */ ;\
+ ;\
+TWO(PADDW ( MP2, MA2 )) /* t2 + (t2 >> 8) ~= (t2/255) << 8 */ ;\
+TWO(PSRLW ( CONST(8), MA2 )) /* sa2 | sb2 | sg2 | sr2 */
+
+
+/* integer multiplication - geometric series plus rounding
+ *
+ * when using a geometric series division instead of truncating the result
+ * use roundoff in the approximation (Jim Blinn)
+ *
+ * t = rgb*a + 0x80
+ *
+ * achieving the exact results
+ *
+ * note that M80 is register with the 0x0080008000800080 constant
+ */
+#define GMB_MULT_GSR( MP1, MA1, MP2, MA2, M80 ) \
+ PMULLW ( MP1, MA1 ) /* t1 = p1*a1 */ ;\
+ PADDW ( M80, MA1 ) /* t1 += 0x80 */ ;\
+ ;\
+TWO(PMULLW ( MP2, MA2 )) /* t2 = p2*a2 */ ;\
+TWO(PADDW ( M80, MA2 )) /* t2 += 0x80 */ ;\
+ ;\
+ MOVQ ( MA1, MP1 ) ;\
+ PSRLW ( CONST(8), MA1 ) /* t1 >> 8 */ ;\
+ ;\
+TWO(MOVQ ( MA2, MP2 )) ;\
+TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 */ ;\
+ ;\
+ PADDW ( MP1, MA1 ) /* t1 + (t1 >> 8) ~= (t1/255) << 8 */ ;\
+ PSRLW ( CONST(8), MA1 ) /* sa1 | sb1 | sg1 | sr1 */ ;\
+ ;\
+TWO(PADDW ( MP2, MA2 )) /* t2 + (t2 >> 8) ~= (t2/255) << 8 */ ;\
+TWO(PSRLW ( CONST(8), MA2 )) /* sa2 | sb2 | sg2 | sr2 */
+
+
+/* linear interpolation - geometric series
+ */
+#define GMB_LERP_GS( MP1, MQ1, MA1, MP2, MQ2, MA2) \
+ PSUBW ( MQ1, MP1 ) /* pa1 - qa1 | pb1 - qb1 | pg1 - qg1 | pr1 - qr1 */ ;\
+ PSLLW ( CONST(8), MQ1 ) /* q1 << 8 */ ;\
+ PMULLW ( MP1, MA1 ) /* t1 = (q1 - p1)*pa1 */ ;\
+ ;\
+TWO(PSUBW ( MQ2, MP2 )) /* pa2 - qa2 | pb2 - qb2 | pg2 - qg2 | pr2 - qr2 */ ;\
+TWO(PSLLW ( CONST(8), MQ2 )) /* q2 << 8 */ ;\
+TWO(PMULLW ( MP2, MA2 )) /* t2 = (q2 - p2)*pa2 */ ;\
+ ;\
+ MOVQ ( MA1, MP1 ) ;\
+ PSRLW ( CONST(8), MA1 ) /* t1 >> 8 */ ;\
+ ;\
+TWO(MOVQ ( MA2, MP2 )) ;\
+TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 */ ;\
+ ;\
+ PADDW ( MP1, MA1 ) /* t1 + (t1 >> 8) ~= (t1/255) << 8 */ ;\
+TWO(PADDW ( MP2, MA2 )) /* t2 + (t2 >> 8) ~= (t2/255) << 8 */ ;\
+ ;\
+ PADDW ( MQ1, MA1 ) /* (t1/255 + q1) << 8 */ ;\
+TWO(PADDW ( MQ2, MA2 )) /* (t2/255 + q2) << 8 */ ;\
+ ;\
+ PSRLW ( CONST(8), MA1 ) /* sa1 | sb1 | sg1 | sr1 */ ;\
+TWO(PSRLW ( CONST(8), MA2 )) /* sa2 | sb2 | sg2 | sr2 */
+
+
+/* linear interpolation - geometric series with roundoff
+ *
+ * this is a generalization of Blinn's formula to signed arithmetic
+ *
+ * note that M80 is a register with the 0x0080008000800080 constant
+ */
+#define GMB_LERP_GSR( MP1, MQ1, MA1, MP2, MQ2, MA2, M80) \
+ PSUBW ( MQ1, MP1 ) /* pa1 - qa1 | pb1 - qb1 | pg1 - qg1 | pr1 - qr1 */ ;\
+ PSLLW ( CONST(8), MQ1 ) /* q1 << 8 */ ;\
+ PMULLW ( MP1, MA1 ) /* t1 = (q1 - p1)*pa1 */ ;\
+ ;\
+TWO(PSUBW ( MQ2, MP2 )) /* pa2 - qa2 | pb2 - qb2 | pg2 - qg2 | pr2 - qr2 */ ;\
+TWO(PSLLW ( CONST(8), MQ2 )) /* q2 << 8 */ ;\
+TWO(PMULLW ( MP2, MA2 )) /* t2 = (q2 - p2)*pa2 */ ;\
+ ;\
+ PSRLW ( CONST(15), MP1 ) /* q1 > p1 ? 1 : 0 */ ;\
+TWO(PSRLW ( CONST(15), MP2 )) /* q2 > q2 ? 1 : 0 */ ;\
+ ;\
+ PSLLW ( CONST(8), MP1 ) /* q1 > p1 ? 0x100 : 0 */ ;\
+TWO(PSLLW ( CONST(8), MP2 )) /* q2 > q2 ? 0x100 : 0 */ ;\
+ ;\
+ PSUBW ( MP1, MA1 ) /* t1 -=? 0x100 */ ;\
+TWO(PSUBW ( MP2, MA2 )) /* t2 -=? 0x100 */ ;\
+ ;\
+ PADDW ( M80, MA1 ) /* t1 += 0x80 */ ;\
+TWO(PADDW ( M80, MA2 )) /* t2 += 0x80 */ ;\
+ ;\
+ MOVQ ( MA1, MP1 ) ;\
+ PSRLW ( CONST(8), MA1 ) /* t1 >> 8 */ ;\
+ ;\
+TWO(MOVQ ( MA2, MP2 )) ;\
+TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 */ ;\
+ ;\
+ PADDW ( MP1, MA1 ) /* t1 + (t1 >> 8) ~= (t1/255) << 8 */ ;\
+TWO(PADDW ( MP2, MA2 )) /* t2 + (t2 >> 8) ~= (t2/255) << 8 */ ;\
+ ;\
+ PADDW ( MQ1, MA1 ) /* (t1/255 + q1) << 8 */ ;\
+TWO(PADDW ( MQ2, MA2 )) /* (t2/255 + q2) << 8 */ ;\
+ ;\
+ PSRLW ( CONST(8), MA1 ) /* sa1 | sb1 | sg1 | sr1 */ ;\
+TWO(PSRLW ( CONST(8), MA2 )) /* sa2 | sb2 | sg2 | sr2 */
+
+
+/* linear interpolation - geometric series with correction
+ *
+ * instead of the roundoff this adds a small correction to satisfy the OpenGL criteria
+ *
+ * t/255 ~= (t + (t >> 8) + (t >> 15)) >> 8
+ *
+ * note that although is faster than rounding off it doesn't give always the exact results
+ */
+#define GMB_LERP_GSC( MP1, MQ1, MA1, MP2, MQ2, MA2) \
+ PSUBW ( MQ1, MP1 ) /* pa1 - qa1 | pb1 - qb1 | pg1 - qg1 | pr1 - qr1 */ ;\
+ PSLLW ( CONST(8), MQ1 ) /* q1 << 8 */ ;\
+ PMULLW ( MP1, MA1 ) /* t1 = (q1 - p1)*pa1 */ ;\
+ ;\
+TWO(PSUBW ( MQ2, MP2 )) /* pa2 - qa2 | pb2 - qb2 | pg2 - qg2 | pr2 - qr2 */ ;\
+TWO(PSLLW ( CONST(8), MQ2 )) /* q2 << 8 */ ;\
+TWO(PMULLW ( MP2, MA2 )) /* t2 = (q2 - p2)*pa2 */ ;\
+ ;\
+ MOVQ ( MA1, MP1 ) ;\
+ PSRLW ( CONST(8), MA1 ) /* t1 >> 8 */ ;\
+ ;\
+TWO(MOVQ ( MA2, MP2 )) ;\
+TWO(PSRLW ( CONST(8), MA2 )) /* t2 >> 8 */ ;\
+ ;\
+ PADDW ( MA1, MP1 ) /* t1 + (t1 >> 8) ~= (t1/255) << 8 */ ;\
+ PSRLW ( CONST(7), MA1 ) /* t1 >> 15 */ ;\
+ ;\
+TWO(PADDW ( MA2, MP2 )) /* t2 + (t2 >> 8) ~= (t2/255) << 8 */ ;\
+TWO(PSRLW ( CONST(7), MA2 )) /* t2 >> 15 */ ;\
+ ;\
+ PADDW ( MP1, MA1 ) /* t1 + (t1 >> 8) + (t1 >>15) ~= (t1/255) << 8 */ ;\
+TWO(PADDW ( MP2, MA2 )) /* t2 + (t2 >> 8) + (t2 >>15) ~= (t2/255) << 8 */ ;\
+ ;\
+ PADDW ( MQ1, MA1 ) /* (t1/255 + q1) << 8 */ ;\
+TWO(PADDW ( MQ2, MA2 )) /* (t2/255 + q2) << 8 */ ;\
+ ;\
+ PSRLW ( CONST(8), MA1 ) /* sa1 | sb1 | sg1 | sr1 */ ;\
+TWO(PSRLW ( CONST(8), MA2 )) /* sa2 | sb2 | sg2 | sr2 */
+
+
+/* common blending setup code
+ *
+ * note that M00 is a register with 0x0000000000000000 constant which can be easily obtained making
+ *
+ * PXOR ( M00, M00 )
+ */
+#define GMB_LOAD(rgba, dest, MPP, MQQ) \
+ONE(MOVD ( REGIND(rgba), MPP )) /* | | | | qa1 | qb1 | qg1 | qr1 */ ;\
+ONE(MOVD ( REGIND(dest), MQQ )) /* | | | | pa1 | pb1 | pg1 | pr1 */ ;\
+ ;\
+TWO(MOVQ ( REGIND(rgba), MPP )) /* qa2 | qb2 | qg2 | qr2 | qa1 | qb1 | qg1 | qr1 */ ;\
+TWO(MOVQ ( REGIND(dest), MQQ )) /* pa2 | pb2 | pg2 | pr2 | pa1 | pb1 | pg1 | pr1 */
+
+#define GMB_UNPACK(MP1, MQ1, MP2, MQ2, M00) \
+TWO(MOVQ ( MP1, MP2 )) ;\
+TWO(MOVQ ( MQ1, MQ2 )) ;\
+ ;\
+ PUNPCKLBW ( M00, MQ1 ) /* qa1 | qb1 | qg1 | qr1 */ ;\
+TWO(PUNPCKHBW ( M00, MQ2 )) /* qa2 | qb2 | qg2 | qr2 */ ;\
+ PUNPCKLBW ( M00, MP1 ) /* pa1 | pb1 | pg1 | pr1 */ ;\
+TWO(PUNPCKHBW ( M00, MP2 )) /* pa2 | pb2 | pg2 | pr2 */
+
+#define GMB_ALPHA(MP1, MA1, MP2, MA2) \
+ MOVQ ( MP1, MA1 ) ;\
+TWO(MOVQ ( MP2, MA2 )) ;\
+ ;\
+ PUNPCKHWD ( MA1, MA1 ) /* pa1 | pa1 | | */ ;\
+TWO(PUNPCKHWD ( MA2, MA2 )) /* pa2 | pa2 | | */ ;\
+ PUNPCKHDQ ( MA1, MA1 ) /* pa1 | pa1 | pa1 | pa1 */ ;\
+TWO(PUNPCKHDQ ( MA2, MA2 )) /* pa2 | pa2 | pa2 | pa2 */
+
+#define GMB_PACK( MS1, MS2 ) \
+ PACKUSWB ( MS2, MS1 ) /* sa2 | sb2 | sg2 | sr2 | sa1 | sb1 | sg1 | sr1 */ ;\
+
+#define GMB_STORE(rgba, MSS ) \
+ONE(MOVD ( MSS, REGIND(rgba) )) /* | | | | sa1 | sb1 | sg1 | sr1 */ ;\
+TWO(MOVQ ( MSS, REGIND(rgba) )) /* sa2 | sb2 | sg2 | sr2 | sa1 | sb1 | sg1 | sr1 */
+
+/* Kevin F. Quinn <kevquinn@gentoo.org> 2 July 2006
+ * Replace data segment constants with text-segment
+ * constants (via pushl/movq)
+ SEG_DATA
+
+ALIGNDATA8
+const_0080:
+ D_LONG 0x00800080, 0x00800080
+
+const_80:
+ D_LONG 0x80808080, 0x80808080
+*/
+#define const_0080_l 0x00800080
+#define const_0080_h 0x00800080
+#define const_80_l 0x80808080
+#define const_80_h 0x80808080
+
+ SEG_TEXT
+
+
+/* Blend transparency function
+ */
+
+#define TAG(x) CONCAT(x,_transparency)
+#define LLTAG(x) LLBL2(x,_transparency)
+
+#define INIT \
+ PXOR ( MM0, MM0 ) /* 0x0000 | 0x0000 | 0x0000 | 0x0000 */
+
+#define MAIN( rgba, dest ) \
+ GMB_LOAD( rgba, dest, MM1, MM2 ) ;\
+ GMB_UNPACK( MM1, MM2, MM4, MM5, MM0 ) ;\
+ GMB_ALPHA( MM1, MM3, MM4, MM6 ) ;\
+ GMB_LERP_GSC( MM1, MM2, MM3, MM4, MM5, MM6 ) ;\
+ GMB_PACK( MM3, MM6 ) ;\
+ GMB_STORE( rgba, MM3 )
+
+#include "mmx_blendtmp.h"
+
+
+/* Blend add function
+ *
+ * FIXME: Add some loop unrolling here...
+ */
+
+#define TAG(x) CONCAT(x,_add)
+#define LLTAG(x) LLBL2(x,_add)
+
+#define INIT
+
+#define MAIN( rgba, dest ) \
+ONE(MOVD ( REGIND(rgba), MM1 )) /* | | | | qa1 | qb1 | qg1 | qr1 */ ;\
+ONE(MOVD ( REGIND(dest), MM2 )) /* | | | | pa1 | pb1 | pg1 | pr1 */ ;\
+ONE(PADDUSB ( MM2, MM1 )) ;\
+ONE(MOVD ( MM1, REGIND(rgba) )) /* | | | | sa1 | sb1 | sg1 | sr1 */ ;\
+ ;\
+TWO(MOVQ ( REGIND(rgba), MM1 )) /* qa2 | qb2 | qg2 | qr2 | qa1 | qb1 | qg1 | qr1 */ ;\
+TWO(PADDUSB ( REGIND(dest), MM1 )) /* sa2 | sb2 | sg2 | sr2 | sa1 | sb1 | sg1 | sr1 */ ;\
+TWO(MOVQ ( MM1, REGIND(rgba) ))
+
+#include "mmx_blendtmp.h"
+
+
+/* Blend min function
+ */
+
+#define TAG(x) CONCAT(x,_min)
+#define LLTAG(x) LLBL2(x,_min)
+
+/* Kevin F. Quinn 2nd July 2006
+ * Replace data segment constants with text-segment instructions
+#define INIT \
+ MOVQ ( CONTENT(const_80), MM7 )
+ */
+#define INIT \
+ PUSH_L ( CONST(const_80_h) ) /* 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80*/ ;\
+ PUSH_L ( CONST(const_80_l) ) ;\
+ MOVQ ( REGIND(ESP), MM7 ) ;\
+ ADD_L ( CONST(8), ESP)
+
+#define MAIN( rgba, dest ) \
+ GMB_LOAD( rgba, dest, MM1, MM2 ) ;\
+ MOVQ ( MM1, MM3 ) ;\
+ MOVQ ( MM2, MM4 ) ;\
+ PXOR ( MM7, MM3 ) /* unsigned -> signed */ ;\
+ PXOR ( MM7, MM4 ) /* unsigned -> signed */ ;\
+ PCMPGTB ( MM3, MM4 ) /* q > p ? 0xff : 0x00 */ ;\
+ PAND ( MM4, MM1 ) /* q > p ? p : 0 */ ;\
+ PANDN ( MM2, MM4 ) /* q > p ? 0 : q */ ;\
+ POR ( MM1, MM4 ) /* q > p ? p : q */ ;\
+ GMB_STORE( rgba, MM4 )
+
+#include "mmx_blendtmp.h"
+
+
+/* Blend max function
+ */
+
+#define TAG(x) CONCAT(x,_max)
+#define LLTAG(x) LLBL2(x,_max)
+
+/* Kevin F. Quinn 2nd July 2006
+ * Replace data segment constants with text-segment instructions
+#define INIT \
+ MOVQ ( CONTENT(const_80), MM7 )
+ */
+#define INIT \
+ PUSH_L ( CONST(const_80_l) ) /* 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80| 0x80*/ ;\
+ PUSH_L ( CONST(const_80_h) ) ;\
+ MOVQ ( REGIND(ESP), MM7 ) ;\
+ ADD_L ( CONST(8), ESP)
+
+#define MAIN( rgba, dest ) \
+ GMB_LOAD( rgba, dest, MM1, MM2 ) ;\
+ MOVQ ( MM1, MM3 ) ;\
+ MOVQ ( MM2, MM4 ) ;\
+ PXOR ( MM7, MM3 ) /* unsigned -> signed */ ;\
+ PXOR ( MM7, MM4 ) /* unsigned -> signed */ ;\
+ PCMPGTB ( MM3, MM4 ) /* q > p ? 0xff : 0x00 */ ;\
+ PAND ( MM4, MM2 ) /* q > p ? q : 0 */ ;\
+ PANDN ( MM1, MM4 ) /* q > p ? 0 : p */ ;\
+ POR ( MM2, MM4 ) /* q > p ? p : q */ ;\
+ GMB_STORE( rgba, MM4 )
+
+#include "mmx_blendtmp.h"
+
+
+/* Blend modulate function
+ */
+
+#define TAG(x) CONCAT(x,_modulate)
+#define LLTAG(x) LLBL2(x,_modulate)
+
+/* Kevin F. Quinn 2nd July 2006
+ * Replace data segment constants with text-segment instructions
+#define INIT \
+ MOVQ ( CONTENT(const_0080), MM7 )
+ */
+#define INIT \
+ PXOR ( MM0, MM0 ) /* 0x0000 | 0x0000 | 0x0000 | 0x0000 */ ;\
+ PUSH_L ( CONST(const_0080_l) ) /* 0x0080 | 0x0080 | 0x0080 | 0x0080 */ ;\
+ PUSH_L ( CONST(const_0080_h) ) ;\
+ MOVQ ( REGIND(ESP), MM7 ) ;\
+ ADD_L ( CONST(8), ESP)
+
+#define MAIN( rgba, dest ) \
+ GMB_LOAD( rgba, dest, MM1, MM2 ) ;\
+ GMB_UNPACK( MM1, MM2, MM4, MM5, MM0 ) ;\
+ GMB_MULT_GSR( MM1, MM2, MM4, MM5, MM7 ) ;\
+ GMB_PACK( MM2, MM5 ) ;\
+ GMB_STORE( rgba, MM2 )
+
+#include "mmx_blendtmp.h"
+
+#endif
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/mmx_blendtmp.h b/mesalib/src/mesa/x86/mmx_blendtmp.h
index f282c0c21..8534792e2 100644
--- a/mesalib/src/mesa/x86/mmx_blendtmp.h
+++ b/mesalib/src/mesa/x86/mmx_blendtmp.h
@@ -1,114 +1,114 @@
-/*
- * Written by José Fonseca <j_r_fonseca@yahoo.co.uk>
- */
-
-
-/*
- * void _mesa_mmx_blend( struct gl_context *ctx,
- * GLuint n,
- * const GLubyte mask[],
- * GLchan rgba[][4],
- * CONST GLchan dest[][4] )
- *
- */
-ALIGNTEXT16
-GLOBL GLNAME( TAG(_mesa_mmx_blend) )
-HIDDEN( TAG(_mesa_mmx_blend) )
-GLNAME( TAG(_mesa_mmx_blend) ):
-
- PUSH_L ( EBP )
- MOV_L ( ESP, EBP )
- PUSH_L ( ESI )
- PUSH_L ( EDI )
- PUSH_L ( EBX )
-
- MOV_L ( REGOFF(12, EBP), ECX ) /* n */
- CMP_L ( CONST(0), ECX)
- JE ( LLTAG(GMB_return) )
-
- MOV_L ( REGOFF(16, EBP), EBX ) /* mask */
- MOV_L ( REGOFF(20, EBP), EDI ) /* rgba */
- MOV_L ( REGOFF(24, EBP), ESI ) /* dest */
-
- INIT
-
- TEST_L ( CONST(4), EDI ) /* align rgba on an 8-byte boundary */
- JZ ( LLTAG(GMB_align_end) )
-
- CMP_B ( CONST(0), REGIND(EBX) ) /* *mask == 0 */
- JE ( LLTAG(GMB_align_continue) )
-
- /* runin */
-#define ONE(x) x
-#define TWO(x)
- MAIN ( EDI, ESI )
-#undef ONE
-#undef TWO
-
-LLTAG(GMB_align_continue):
-
- DEC_L ( ECX ) /* n -= 1 */
- INC_L ( EBX ) /* mask += 1 */
- ADD_L ( CONST(4), EDI ) /* rgba += 1 */
- ADD_L ( CONST(4), ESI ) /* dest += 1 */
-
-LLTAG(GMB_align_end):
-
- CMP_L ( CONST(2), ECX)
- JB ( LLTAG(GMB_loop_end) )
-
-ALIGNTEXT16
-LLTAG(GMB_loop_begin):
-
- CMP_W ( CONST(0), REGIND(EBX) ) /* *mask == 0 && *(mask + 1) == 0 */
- JE ( LLTAG(GMB_loop_continue) )
-
- /* main loop */
-#define ONE(x)
-#define TWO(x) x
- MAIN ( EDI, ESI )
-#undef ONE
-#undef TWO
-
-LLTAG(GMB_loop_continue):
-
- DEC_L ( ECX )
- DEC_L ( ECX ) /* n -= 2 */
- ADD_L ( CONST(2), EBX ) /* mask += 2 */
- ADD_L ( CONST(8), EDI ) /* rgba += 2 */
- ADD_L ( CONST(8), ESI ) /* dest += 2 */
- CMP_L ( CONST(2), ECX )
- JAE ( LLTAG(GMB_loop_begin) )
-
-LLTAG(GMB_loop_end):
-
- CMP_L ( CONST(1), ECX )
- JB ( LLTAG(GMB_done) )
-
- CMP_B ( CONST(0), REGIND(EBX) ) /* *mask == 0 */
- JE ( LLTAG(GMB_done) )
-
- /* runout */
-#define ONE(x) x
-#define TWO(x)
- MAIN ( EDI, ESI )
-#undef ONE
-#undef TWO
-
-LLTAG(GMB_done):
-
- EMMS
-
-LLTAG(GMB_return):
-
- POP_L ( EBX )
- POP_L ( EDI )
- POP_L ( ESI )
- MOV_L ( EBP, ESP )
- POP_L ( EBP )
- RET
-
-#undef TAG
-#undef LLTAG
-#undef INIT
-#undef MAIN
+/*
+ * Written by José Fonseca <j_r_fonseca@yahoo.co.uk>
+ */
+
+
+/*
+ * void _mesa_mmx_blend( struct gl_context *ctx,
+ * GLuint n,
+ * const GLubyte mask[],
+ * GLchan rgba[][4],
+ * CONST GLchan dest[][4] )
+ *
+ */
+ALIGNTEXT16
+GLOBL GLNAME( TAG(_mesa_mmx_blend) )
+HIDDEN( TAG(_mesa_mmx_blend) )
+GLNAME( TAG(_mesa_mmx_blend) ):
+
+ PUSH_L ( EBP )
+ MOV_L ( ESP, EBP )
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+ PUSH_L ( EBX )
+
+ MOV_L ( REGOFF(12, EBP), ECX ) /* n */
+ CMP_L ( CONST(0), ECX)
+ JE ( LLTAG(GMB_return) )
+
+ MOV_L ( REGOFF(16, EBP), EBX ) /* mask */
+ MOV_L ( REGOFF(20, EBP), EDI ) /* rgba */
+ MOV_L ( REGOFF(24, EBP), ESI ) /* dest */
+
+ INIT
+
+ TEST_L ( CONST(4), EDI ) /* align rgba on an 8-byte boundary */
+ JZ ( LLTAG(GMB_align_end) )
+
+ CMP_B ( CONST(0), REGIND(EBX) ) /* *mask == 0 */
+ JE ( LLTAG(GMB_align_continue) )
+
+ /* runin */
+#define ONE(x) x
+#define TWO(x)
+ MAIN ( EDI, ESI )
+#undef ONE
+#undef TWO
+
+LLTAG(GMB_align_continue):
+
+ DEC_L ( ECX ) /* n -= 1 */
+ INC_L ( EBX ) /* mask += 1 */
+ ADD_L ( CONST(4), EDI ) /* rgba += 1 */
+ ADD_L ( CONST(4), ESI ) /* dest += 1 */
+
+LLTAG(GMB_align_end):
+
+ CMP_L ( CONST(2), ECX)
+ JB ( LLTAG(GMB_loop_end) )
+
+ALIGNTEXT16
+LLTAG(GMB_loop_begin):
+
+ CMP_W ( CONST(0), REGIND(EBX) ) /* *mask == 0 && *(mask + 1) == 0 */
+ JE ( LLTAG(GMB_loop_continue) )
+
+ /* main loop */
+#define ONE(x)
+#define TWO(x) x
+ MAIN ( EDI, ESI )
+#undef ONE
+#undef TWO
+
+LLTAG(GMB_loop_continue):
+
+ DEC_L ( ECX )
+ DEC_L ( ECX ) /* n -= 2 */
+ ADD_L ( CONST(2), EBX ) /* mask += 2 */
+ ADD_L ( CONST(8), EDI ) /* rgba += 2 */
+ ADD_L ( CONST(8), ESI ) /* dest += 2 */
+ CMP_L ( CONST(2), ECX )
+ JAE ( LLTAG(GMB_loop_begin) )
+
+LLTAG(GMB_loop_end):
+
+ CMP_L ( CONST(1), ECX )
+ JB ( LLTAG(GMB_done) )
+
+ CMP_B ( CONST(0), REGIND(EBX) ) /* *mask == 0 */
+ JE ( LLTAG(GMB_done) )
+
+ /* runout */
+#define ONE(x) x
+#define TWO(x)
+ MAIN ( EDI, ESI )
+#undef ONE
+#undef TWO
+
+LLTAG(GMB_done):
+
+ EMMS
+
+LLTAG(GMB_return):
+
+ POP_L ( EBX )
+ POP_L ( EDI )
+ POP_L ( ESI )
+ MOV_L ( EBP, ESP )
+ POP_L ( EBP )
+ RET
+
+#undef TAG
+#undef LLTAG
+#undef INIT
+#undef MAIN
diff --git a/mesalib/src/mesa/x86/norm_args.h b/mesalib/src/mesa/x86/norm_args.h
index bad1a1975..5d352838b 100644
--- a/mesalib/src/mesa/x86/norm_args.h
+++ b/mesalib/src/mesa/x86/norm_args.h
@@ -1,57 +1,57 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * Normal transform function interface for assembly code. Simply define
- * FRAME_OFFSET to the number of bytes pushed onto the stack before
- * using the ARG_* argument macros.
- *
- * Gareth Hughes
- */
-
-#ifndef __NORM_ARGS_H__
-#define __NORM_ARGS_H__
-
-/* Offsets for normal_func arguments
- *
- * typedef void (*normal_func)( CONST GLmatrix *mat,
- * GLfloat scale,
- * CONST GLvector4f *in,
- * CONST GLfloat lengths[],
- * GLvector4f *dest );
- */
-#define OFFSET_MAT 4
-#define OFFSET_SCALE 8
-#define OFFSET_IN 12
-#define OFFSET_LENGTHS 16
-#define OFFSET_DEST 20
-
-#define ARG_MAT REGOFF(FRAME_OFFSET+OFFSET_MAT, ESP)
-#define ARG_SCALE REGOFF(FRAME_OFFSET+OFFSET_SCALE, ESP)
-#define ARG_IN REGOFF(FRAME_OFFSET+OFFSET_IN, ESP)
-#define ARG_LENGTHS REGOFF(FRAME_OFFSET+OFFSET_LENGTHS, ESP)
-#define ARG_DEST REGOFF(FRAME_OFFSET+OFFSET_DEST, ESP)
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * Normal transform function interface for assembly code. Simply define
+ * FRAME_OFFSET to the number of bytes pushed onto the stack before
+ * using the ARG_* argument macros.
+ *
+ * Gareth Hughes
+ */
+
+#ifndef __NORM_ARGS_H__
+#define __NORM_ARGS_H__
+
+/* Offsets for normal_func arguments
+ *
+ * typedef void (*normal_func)( CONST GLmatrix *mat,
+ * GLfloat scale,
+ * CONST GLvector4f *in,
+ * CONST GLfloat lengths[],
+ * GLvector4f *dest );
+ */
+#define OFFSET_MAT 4
+#define OFFSET_SCALE 8
+#define OFFSET_IN 12
+#define OFFSET_LENGTHS 16
+#define OFFSET_DEST 20
+
+#define ARG_MAT REGOFF(FRAME_OFFSET+OFFSET_MAT, ESP)
+#define ARG_SCALE REGOFF(FRAME_OFFSET+OFFSET_SCALE, ESP)
+#define ARG_IN REGOFF(FRAME_OFFSET+OFFSET_IN, ESP)
+#define ARG_LENGTHS REGOFF(FRAME_OFFSET+OFFSET_LENGTHS, ESP)
+#define ARG_DEST REGOFF(FRAME_OFFSET+OFFSET_DEST, ESP)
+
+#endif
diff --git a/mesalib/src/mesa/x86/read_rgba_span_x86.S b/mesalib/src/mesa/x86/read_rgba_span_x86.S
index 04571afb7..3be4515b1 100644
--- a/mesalib/src/mesa/x86/read_rgba_span_x86.S
+++ b/mesalib/src/mesa/x86/read_rgba_span_x86.S
@@ -1,686 +1,686 @@
-/*
- * (C) Copyright IBM Corporation 2004
- * All Rights Reserved.
- *
- * 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
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, 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 (including the next
- * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM AND/OR THEIR SUPPLIERS 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.
- */
-
-/**
- * \file read_rgba_span_x86.S
- * Optimized routines to transfer pixel data from the framebuffer to a
- * buffer in main memory.
- *
- * \author Ian Romanick <idr@us.ibm.com>
- */
-
- .file "read_rgba_span_x86.S"
-#if !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__) /* this one cries for assyntax.h */
-/* Kevin F. Quinn 2nd July 2006
- * Replaced data segment constants with text-segment instructions.
- */
-#define LOAD_MASK(mvins,m1,m2) \
- pushl $0xff00ff00 ;\
- pushl $0xff00ff00 ;\
- pushl $0xff00ff00 ;\
- pushl $0xff00ff00 ;\
- mvins (%esp), m1 ;\
- pushl $0x00ff0000 ;\
- pushl $0x00ff0000 ;\
- pushl $0x00ff0000 ;\
- pushl $0x00ff0000 ;\
- mvins (%esp), m2 ;\
- addl $32, %esp
-
-/* I implemented these as macros because they appear in several places,
- * and I've tweaked them a number of times. I got tired of changing every
- * place they appear. :)
- */
-
-#define DO_ONE_PIXEL() \
- movl (%ebx), %eax ; \
- addl $4, %ebx ; \
- bswap %eax /* ARGB -> BGRA */ ; \
- rorl $8, %eax /* BGRA -> ABGR */ ; \
- movl %eax, (%ecx) /* ABGR -> R, G, B, A */ ; \
- addl $4, %ecx
-
-#define DO_ONE_LAST_PIXEL() \
- movl (%ebx), %eax ; \
- bswap %eax /* ARGB -> BGRA */ ; \
- rorl $8, %eax /* BGRA -> ABGR */ ; \
- movl %eax, (%ecx) /* ABGR -> R, G, B, A */ ; \
-
-
-/**
- * MMX optimized version of the BGRA8888_REV to RGBA copy routine.
- *
- * \warning
- * This function assumes that the caller will issue the EMMS instruction
- * at the correct places.
- */
-
-.globl _generic_read_RGBA_span_BGRA8888_REV_MMX
-#ifndef USE_DRICORE
-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
-#endif
- .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
-_generic_read_RGBA_span_BGRA8888_REV_MMX:
- pushl %ebx
-
-#ifdef USE_INNER_EMMS
- emms
-#endif
- LOAD_MASK(movq,%mm1,%mm2)
-
- movl 8(%esp), %ebx /* source pointer */
- movl 16(%esp), %edx /* number of pixels to copy */
- movl 12(%esp), %ecx /* destination pointer */
-
- testl %edx, %edx
- jle .L20 /* Bail if there's nothing to do. */
-
- movl %ebx, %eax
-
- negl %eax
- sarl $2, %eax
- andl $1, %eax
- je .L17
-
- subl %eax, %edx
- DO_ONE_PIXEL()
-.L17:
-
- /* Would it be faster to unroll this loop once and process 4 pixels
- * per pass, instead of just two?
- */
-
- movl %edx, %eax
- shrl %eax
- jmp .L18
-.L19:
- movq (%ebx), %mm0
- addl $8, %ebx
-
- /* These 9 instructions do what PSHUFB (if there were such an
- * instruction) could do in 1. :(
- */
-
- movq %mm0, %mm3
- movq %mm0, %mm4
-
- pand %mm2, %mm3
- psllq $16, %mm4
- psrlq $16, %mm3
- pand %mm2, %mm4
-
- pand %mm1, %mm0
- por %mm4, %mm3
- por %mm3, %mm0
-
- movq %mm0, (%ecx)
- addl $8, %ecx
- subl $1, %eax
-.L18:
- jne .L19
-
-#ifdef USE_INNER_EMMS
- emms
-#endif
-
- /* At this point there are either 1 or 0 pixels remaining to be
- * converted. Convert the last pixel, if needed.
- */
-
- testl $1, %edx
- je .L20
-
- DO_ONE_LAST_PIXEL()
-
-.L20:
- popl %ebx
- ret
- .size _generic_read_RGBA_span_BGRA8888_REV_MMX, .-_generic_read_RGBA_span_BGRA8888_REV_MMX
-
-
-/**
- * SSE optimized version of the BGRA8888_REV to RGBA copy routine. SSE
- * instructions are only actually used to read data from the framebuffer.
- * In practice, the speed-up is pretty small.
- *
- * \todo
- * Do some more testing and determine if there's any reason to have this
- * function in addition to the MMX version.
- *
- * \warning
- * This function assumes that the caller will issue the EMMS instruction
- * at the correct places.
- */
-
-.globl _generic_read_RGBA_span_BGRA8888_REV_SSE
-#ifndef USE_DRICORE
-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
-#endif
- .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
-_generic_read_RGBA_span_BGRA8888_REV_SSE:
- pushl %esi
- pushl %ebx
- pushl %ebp
-
-#ifdef USE_INNER_EMMS
- emms
-#endif
-
- LOAD_MASK(movq,%mm1,%mm2)
-
- movl 16(%esp), %ebx /* source pointer */
- movl 24(%esp), %edx /* number of pixels to copy */
- movl 20(%esp), %ecx /* destination pointer */
-
- testl %edx, %edx
- jle .L35 /* Bail if there's nothing to do. */
-
- movl %esp, %ebp
- subl $16, %esp
- andl $0xfffffff0, %esp
-
- movl %ebx, %eax
- movl %edx, %esi
-
- negl %eax
- andl $15, %eax
- sarl $2, %eax
- cmpl %edx, %eax
- cmovle %eax, %esi
-
- subl %esi, %edx
-
- testl $1, %esi
- je .L32
-
- DO_ONE_PIXEL()
-.L32:
-
- testl $2, %esi
- je .L31
-
- movq (%ebx), %mm0
- addl $8, %ebx
-
- movq %mm0, %mm3
- movq %mm0, %mm4
-
- pand %mm2, %mm3
- psllq $16, %mm4
- psrlq $16, %mm3
- pand %mm2, %mm4
-
- pand %mm1, %mm0
- por %mm4, %mm3
- por %mm3, %mm0
-
- movq %mm0, (%ecx)
- addl $8, %ecx
-.L31:
-
- movl %edx, %eax
- shrl $2, %eax
- jmp .L33
-.L34:
- movaps (%ebx), %xmm0
- addl $16, %ebx
-
- /* This would be so much better if we could just move directly from
- * an SSE register to an MMX register. Unfortunately, that
- * functionality wasn't introduced until SSE2 with the MOVDQ2Q
- * instruction.
- */
-
- movaps %xmm0, (%esp)
- movq (%esp), %mm0
- movq 8(%esp), %mm5
-
- movq %mm0, %mm3
- movq %mm0, %mm4
- movq %mm5, %mm6
- movq %mm5, %mm7
-
- pand %mm2, %mm3
- pand %mm2, %mm6
-
- psllq $16, %mm4
- psllq $16, %mm7
-
- psrlq $16, %mm3
- psrlq $16, %mm6
-
- pand %mm2, %mm4
- pand %mm2, %mm7
-
- pand %mm1, %mm0
- pand %mm1, %mm5
-
- por %mm4, %mm3
- por %mm7, %mm6
-
- por %mm3, %mm0
- por %mm6, %mm5
-
- movq %mm0, (%ecx)
- movq %mm5, 8(%ecx)
- addl $16, %ecx
-
- subl $1, %eax
-.L33:
- jne .L34
-
-#ifdef USE_INNER_EMMS
- emms
-#endif
- movl %ebp, %esp
-
- /* At this point there are either [0, 3] pixels remaining to be
- * converted.
- */
-
- testl $2, %edx
- je .L36
-
- movq (%ebx), %mm0
- addl $8, %ebx
-
- movq %mm0, %mm3
- movq %mm0, %mm4
-
- pand %mm2, %mm3
- psllq $16, %mm4
- psrlq $16, %mm3
- pand %mm2, %mm4
-
- pand %mm1, %mm0
- por %mm4, %mm3
- por %mm3, %mm0
-
- movq %mm0, (%ecx)
- addl $8, %ecx
-.L36:
-
- testl $1, %edx
- je .L35
-
- DO_ONE_LAST_PIXEL()
-.L35:
- popl %ebp
- popl %ebx
- popl %esi
- ret
- .size _generic_read_RGBA_span_BGRA8888_REV_SSE, .-_generic_read_RGBA_span_BGRA8888_REV_SSE
-
-
-/**
- * SSE2 optimized version of the BGRA8888_REV to RGBA copy routine.
- */
-
- .text
-.globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
-#ifndef USE_DRICORE
-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
-#endif
- .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
-_generic_read_RGBA_span_BGRA8888_REV_SSE2:
- pushl %esi
- pushl %ebx
-
- LOAD_MASK(movdqu,%xmm1,%xmm2)
-
- movl 12(%esp), %ebx /* source pointer */
- movl 20(%esp), %edx /* number of pixels to copy */
- movl 16(%esp), %ecx /* destination pointer */
-
- movl %ebx, %eax
- movl %edx, %esi
-
- testl %edx, %edx
- jle .L46 /* Bail if there's nothing to do. */
-
- /* If the source pointer isn't a multiple of 16 we have to process
- * a few pixels the "slow" way to get the address aligned for
- * the SSE fetch intsructions.
- */
-
- negl %eax
- andl $15, %eax
- sarl $2, %eax
-
- cmpl %edx, %eax
- cmovbe %eax, %esi
- subl %esi, %edx
-
- testl $1, %esi
- je .L41
-
- DO_ONE_PIXEL()
-.L41:
- testl $2, %esi
- je .L40
-
- movq (%ebx), %xmm0
- addl $8, %ebx
-
- movdqa %xmm0, %xmm3
- movdqa %xmm0, %xmm4
- andps %xmm1, %xmm0
-
- andps %xmm2, %xmm3
- pslldq $2, %xmm4
- psrldq $2, %xmm3
- andps %xmm2, %xmm4
-
- orps %xmm4, %xmm3
- orps %xmm3, %xmm0
-
- movq %xmm0, (%ecx)
- addl $8, %ecx
-.L40:
-
- /* Would it be worth having a specialized version of this loop for
- * the case where the destination is 16-byte aligned? That version
- * would be identical except that it could use movedqa instead of
- * movdqu.
- */
-
- movl %edx, %eax
- shrl $2, %eax
- jmp .L42
-.L43:
- movdqa (%ebx), %xmm0
- addl $16, %ebx
-
- movdqa %xmm0, %xmm3
- movdqa %xmm0, %xmm4
- andps %xmm1, %xmm0
-
- andps %xmm2, %xmm3
- pslldq $2, %xmm4
- psrldq $2, %xmm3
- andps %xmm2, %xmm4
-
- orps %xmm4, %xmm3
- orps %xmm3, %xmm0
-
- movdqu %xmm0, (%ecx)
- addl $16, %ecx
- subl $1, %eax
-.L42:
- jne .L43
-
-
- /* There may be upto 3 pixels remaining to be copied. Take care
- * of them now. We do the 2 pixel case first because the data
- * will be aligned.
- */
-
- testl $2, %edx
- je .L47
-
- movq (%ebx), %xmm0
- addl $8, %ebx
-
- movdqa %xmm0, %xmm3
- movdqa %xmm0, %xmm4
- andps %xmm1, %xmm0
-
- andps %xmm2, %xmm3
- pslldq $2, %xmm4
- psrldq $2, %xmm3
- andps %xmm2, %xmm4
-
- orps %xmm4, %xmm3
- orps %xmm3, %xmm0
-
- movq %xmm0, (%ecx)
- addl $8, %ecx
-.L47:
-
- testl $1, %edx
- je .L46
-
- DO_ONE_LAST_PIXEL()
-.L46:
-
- popl %ebx
- popl %esi
- ret
- .size _generic_read_RGBA_span_BGRA8888_REV_SSE2, .-_generic_read_RGBA_span_BGRA8888_REV_SSE2
-
-
-
-#define MASK_565_L 0x07e0f800
-#define MASK_565_H 0x0000001f
-/* Setting SCALE_ADJUST to 5 gives a perfect match with the
- * classic C implementation in Mesa. Setting SCALE_ADJUST
- * to 0 is slightly faster but at a small cost to accuracy.
- */
-#define SCALE_ADJUST 5
-#if SCALE_ADJUST == 5
-#define PRESCALE_L 0x00100001
-#define PRESCALE_H 0x00000200
-#define SCALE_L 0x40C620E8
-#define SCALE_H 0x0000839d
-#elif SCALE_ADJUST == 0
-#define PRESCALE_L 0x00200001
-#define PRESCALE_H 0x00000800
-#define SCALE_L 0x01040108
-#define SCALE_H 0x00000108
-#else
-#error SCALE_ADJUST must either be 5 or 0.
-#endif
-#define ALPHA_L 0x00000000
-#define ALPHA_H 0x00ff0000
-
-/**
- * MMX optimized version of the RGB565 to RGBA copy routine.
- */
-
- .text
- .globl _generic_read_RGBA_span_RGB565_MMX
-#ifndef USE_DRICORE
- .hidden _generic_read_RGBA_span_RGB565_MMX
-#endif
- .type _generic_read_RGBA_span_RGB565_MMX, @function
-
-_generic_read_RGBA_span_RGB565_MMX:
-
-#ifdef USE_INNER_EMMS
- emms
-#endif
-
- movl 4(%esp), %eax /* source pointer */
- movl 8(%esp), %edx /* destination pointer */
- movl 12(%esp), %ecx /* number of pixels to copy */
-
- pushl $MASK_565_H
- pushl $MASK_565_L
- movq (%esp), %mm5
- pushl $PRESCALE_H
- pushl $PRESCALE_L
- movq (%esp), %mm6
- pushl $SCALE_H
- pushl $SCALE_L
- movq (%esp), %mm7
- pushl $ALPHA_H
- pushl $ALPHA_L
- movq (%esp), %mm3
- addl $32,%esp
-
- sarl $2, %ecx
- jl .L01 /* Bail early if the count is negative. */
- jmp .L02
-
-.L03:
- /* Fetch 4 RGB565 pixels into %mm4. Distribute the first and
- * second pixels into the four words of %mm0 and %mm2.
- */
-
- movq (%eax), %mm4
- addl $8, %eax
-
- pshufw $0x00, %mm4, %mm0
- pshufw $0x55, %mm4, %mm2
-
-
- /* Mask the pixels so that each word of each register contains only
- * one color component.
- */
-
- pand %mm5, %mm0
- pand %mm5, %mm2
-
-
- /* Adjust the component values so that they are as small as possible,
- * but large enough so that we can multiply them by an unsigned 16-bit
- * number and get a value as large as 0x00ff0000.
- */
-
- pmullw %mm6, %mm0
- pmullw %mm6, %mm2
-#if SCALE_ADJUST > 0
- psrlw $SCALE_ADJUST, %mm0
- psrlw $SCALE_ADJUST, %mm2
-#endif
-
- /* Scale the input component values to be on the range
- * [0, 0x00ff0000]. This it the real magic of the whole routine.
- */
-
- pmulhuw %mm7, %mm0
- pmulhuw %mm7, %mm2
-
-
- /* Always set the alpha value to 0xff.
- */
-
- por %mm3, %mm0
- por %mm3, %mm2
-
-
- /* Pack the 16-bit values to 8-bit values and store the converted
- * pixel data.
- */
-
- packuswb %mm2, %mm0
- movq %mm0, (%edx)
- addl $8, %edx
-
- pshufw $0xaa, %mm4, %mm0
- pshufw $0xff, %mm4, %mm2
-
- pand %mm5, %mm0
- pand %mm5, %mm2
- pmullw %mm6, %mm0
- pmullw %mm6, %mm2
-#if SCALE_ADJUST > 0
- psrlw $SCALE_ADJUST, %mm0
- psrlw $SCALE_ADJUST, %mm2
-#endif
- pmulhuw %mm7, %mm0
- pmulhuw %mm7, %mm2
-
- por %mm3, %mm0
- por %mm3, %mm2
-
- packuswb %mm2, %mm0
-
- movq %mm0, (%edx)
- addl $8, %edx
-
- subl $1, %ecx
-.L02:
- jne .L03
-
-
- /* At this point there can be at most 3 pixels left to process. If
- * there is either 2 or 3 left, process 2.
- */
-
- movl 12(%esp), %ecx
- testl $0x02, %ecx
- je .L04
-
- movd (%eax), %mm4
- addl $4, %eax
-
- pshufw $0x00, %mm4, %mm0
- pshufw $0x55, %mm4, %mm2
-
- pand %mm5, %mm0
- pand %mm5, %mm2
- pmullw %mm6, %mm0
- pmullw %mm6, %mm2
-#if SCALE_ADJUST > 0
- psrlw $SCALE_ADJUST, %mm0
- psrlw $SCALE_ADJUST, %mm2
-#endif
- pmulhuw %mm7, %mm0
- pmulhuw %mm7, %mm2
-
- por %mm3, %mm0
- por %mm3, %mm2
-
- packuswb %mm2, %mm0
-
- movq %mm0, (%edx)
- addl $8, %edx
-
-.L04:
- /* At this point there can be at most 1 pixel left to process.
- * Process it if needed.
- */
-
- testl $0x01, %ecx
- je .L01
-
- movzwl (%eax), %ecx
- movd %ecx, %mm4
-
- pshufw $0x00, %mm4, %mm0
-
- pand %mm5, %mm0
- pmullw %mm6, %mm0
-#if SCALE_ADJUST > 0
- psrlw $SCALE_ADJUST, %mm0
-#endif
- pmulhuw %mm7, %mm0
-
- por %mm3, %mm0
-
- packuswb %mm0, %mm0
-
- movd %mm0, (%edx)
-
-.L01:
-#ifdef USE_INNER_EMMS
- emms
-#endif
- ret
-#endif /* !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__) */
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+/*
+ * (C) Copyright IBM Corporation 2004
+ * All Rights Reserved.
+ *
+ * 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
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, 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 (including the next
+ * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+ * IBM AND/OR THEIR SUPPLIERS 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.
+ */
+
+/**
+ * \file read_rgba_span_x86.S
+ * Optimized routines to transfer pixel data from the framebuffer to a
+ * buffer in main memory.
+ *
+ * \author Ian Romanick <idr@us.ibm.com>
+ */
+
+ .file "read_rgba_span_x86.S"
+#if !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__) /* this one cries for assyntax.h */
+/* Kevin F. Quinn 2nd July 2006
+ * Replaced data segment constants with text-segment instructions.
+ */
+#define LOAD_MASK(mvins,m1,m2) \
+ pushl $0xff00ff00 ;\
+ pushl $0xff00ff00 ;\
+ pushl $0xff00ff00 ;\
+ pushl $0xff00ff00 ;\
+ mvins (%esp), m1 ;\
+ pushl $0x00ff0000 ;\
+ pushl $0x00ff0000 ;\
+ pushl $0x00ff0000 ;\
+ pushl $0x00ff0000 ;\
+ mvins (%esp), m2 ;\
+ addl $32, %esp
+
+/* I implemented these as macros because they appear in several places,
+ * and I've tweaked them a number of times. I got tired of changing every
+ * place they appear. :)
+ */
+
+#define DO_ONE_PIXEL() \
+ movl (%ebx), %eax ; \
+ addl $4, %ebx ; \
+ bswap %eax /* ARGB -> BGRA */ ; \
+ rorl $8, %eax /* BGRA -> ABGR */ ; \
+ movl %eax, (%ecx) /* ABGR -> R, G, B, A */ ; \
+ addl $4, %ecx
+
+#define DO_ONE_LAST_PIXEL() \
+ movl (%ebx), %eax ; \
+ bswap %eax /* ARGB -> BGRA */ ; \
+ rorl $8, %eax /* BGRA -> ABGR */ ; \
+ movl %eax, (%ecx) /* ABGR -> R, G, B, A */ ; \
+
+
+/**
+ * MMX optimized version of the BGRA8888_REV to RGBA copy routine.
+ *
+ * \warning
+ * This function assumes that the caller will issue the EMMS instruction
+ * at the correct places.
+ */
+
+.globl _generic_read_RGBA_span_BGRA8888_REV_MMX
+#ifndef USE_DRICORE
+.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX
+#endif
+ .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function
+_generic_read_RGBA_span_BGRA8888_REV_MMX:
+ pushl %ebx
+
+#ifdef USE_INNER_EMMS
+ emms
+#endif
+ LOAD_MASK(movq,%mm1,%mm2)
+
+ movl 8(%esp), %ebx /* source pointer */
+ movl 16(%esp), %edx /* number of pixels to copy */
+ movl 12(%esp), %ecx /* destination pointer */
+
+ testl %edx, %edx
+ jle .L20 /* Bail if there's nothing to do. */
+
+ movl %ebx, %eax
+
+ negl %eax
+ sarl $2, %eax
+ andl $1, %eax
+ je .L17
+
+ subl %eax, %edx
+ DO_ONE_PIXEL()
+.L17:
+
+ /* Would it be faster to unroll this loop once and process 4 pixels
+ * per pass, instead of just two?
+ */
+
+ movl %edx, %eax
+ shrl %eax
+ jmp .L18
+.L19:
+ movq (%ebx), %mm0
+ addl $8, %ebx
+
+ /* These 9 instructions do what PSHUFB (if there were such an
+ * instruction) could do in 1. :(
+ */
+
+ movq %mm0, %mm3
+ movq %mm0, %mm4
+
+ pand %mm2, %mm3
+ psllq $16, %mm4
+ psrlq $16, %mm3
+ pand %mm2, %mm4
+
+ pand %mm1, %mm0
+ por %mm4, %mm3
+ por %mm3, %mm0
+
+ movq %mm0, (%ecx)
+ addl $8, %ecx
+ subl $1, %eax
+.L18:
+ jne .L19
+
+#ifdef USE_INNER_EMMS
+ emms
+#endif
+
+ /* At this point there are either 1 or 0 pixels remaining to be
+ * converted. Convert the last pixel, if needed.
+ */
+
+ testl $1, %edx
+ je .L20
+
+ DO_ONE_LAST_PIXEL()
+
+.L20:
+ popl %ebx
+ ret
+ .size _generic_read_RGBA_span_BGRA8888_REV_MMX, .-_generic_read_RGBA_span_BGRA8888_REV_MMX
+
+
+/**
+ * SSE optimized version of the BGRA8888_REV to RGBA copy routine. SSE
+ * instructions are only actually used to read data from the framebuffer.
+ * In practice, the speed-up is pretty small.
+ *
+ * \todo
+ * Do some more testing and determine if there's any reason to have this
+ * function in addition to the MMX version.
+ *
+ * \warning
+ * This function assumes that the caller will issue the EMMS instruction
+ * at the correct places.
+ */
+
+.globl _generic_read_RGBA_span_BGRA8888_REV_SSE
+#ifndef USE_DRICORE
+.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE
+#endif
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function
+_generic_read_RGBA_span_BGRA8888_REV_SSE:
+ pushl %esi
+ pushl %ebx
+ pushl %ebp
+
+#ifdef USE_INNER_EMMS
+ emms
+#endif
+
+ LOAD_MASK(movq,%mm1,%mm2)
+
+ movl 16(%esp), %ebx /* source pointer */
+ movl 24(%esp), %edx /* number of pixels to copy */
+ movl 20(%esp), %ecx /* destination pointer */
+
+ testl %edx, %edx
+ jle .L35 /* Bail if there's nothing to do. */
+
+ movl %esp, %ebp
+ subl $16, %esp
+ andl $0xfffffff0, %esp
+
+ movl %ebx, %eax
+ movl %edx, %esi
+
+ negl %eax
+ andl $15, %eax
+ sarl $2, %eax
+ cmpl %edx, %eax
+ cmovle %eax, %esi
+
+ subl %esi, %edx
+
+ testl $1, %esi
+ je .L32
+
+ DO_ONE_PIXEL()
+.L32:
+
+ testl $2, %esi
+ je .L31
+
+ movq (%ebx), %mm0
+ addl $8, %ebx
+
+ movq %mm0, %mm3
+ movq %mm0, %mm4
+
+ pand %mm2, %mm3
+ psllq $16, %mm4
+ psrlq $16, %mm3
+ pand %mm2, %mm4
+
+ pand %mm1, %mm0
+ por %mm4, %mm3
+ por %mm3, %mm0
+
+ movq %mm0, (%ecx)
+ addl $8, %ecx
+.L31:
+
+ movl %edx, %eax
+ shrl $2, %eax
+ jmp .L33
+.L34:
+ movaps (%ebx), %xmm0
+ addl $16, %ebx
+
+ /* This would be so much better if we could just move directly from
+ * an SSE register to an MMX register. Unfortunately, that
+ * functionality wasn't introduced until SSE2 with the MOVDQ2Q
+ * instruction.
+ */
+
+ movaps %xmm0, (%esp)
+ movq (%esp), %mm0
+ movq 8(%esp), %mm5
+
+ movq %mm0, %mm3
+ movq %mm0, %mm4
+ movq %mm5, %mm6
+ movq %mm5, %mm7
+
+ pand %mm2, %mm3
+ pand %mm2, %mm6
+
+ psllq $16, %mm4
+ psllq $16, %mm7
+
+ psrlq $16, %mm3
+ psrlq $16, %mm6
+
+ pand %mm2, %mm4
+ pand %mm2, %mm7
+
+ pand %mm1, %mm0
+ pand %mm1, %mm5
+
+ por %mm4, %mm3
+ por %mm7, %mm6
+
+ por %mm3, %mm0
+ por %mm6, %mm5
+
+ movq %mm0, (%ecx)
+ movq %mm5, 8(%ecx)
+ addl $16, %ecx
+
+ subl $1, %eax
+.L33:
+ jne .L34
+
+#ifdef USE_INNER_EMMS
+ emms
+#endif
+ movl %ebp, %esp
+
+ /* At this point there are either [0, 3] pixels remaining to be
+ * converted.
+ */
+
+ testl $2, %edx
+ je .L36
+
+ movq (%ebx), %mm0
+ addl $8, %ebx
+
+ movq %mm0, %mm3
+ movq %mm0, %mm4
+
+ pand %mm2, %mm3
+ psllq $16, %mm4
+ psrlq $16, %mm3
+ pand %mm2, %mm4
+
+ pand %mm1, %mm0
+ por %mm4, %mm3
+ por %mm3, %mm0
+
+ movq %mm0, (%ecx)
+ addl $8, %ecx
+.L36:
+
+ testl $1, %edx
+ je .L35
+
+ DO_ONE_LAST_PIXEL()
+.L35:
+ popl %ebp
+ popl %ebx
+ popl %esi
+ ret
+ .size _generic_read_RGBA_span_BGRA8888_REV_SSE, .-_generic_read_RGBA_span_BGRA8888_REV_SSE
+
+
+/**
+ * SSE2 optimized version of the BGRA8888_REV to RGBA copy routine.
+ */
+
+ .text
+.globl _generic_read_RGBA_span_BGRA8888_REV_SSE2
+#ifndef USE_DRICORE
+.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2
+#endif
+ .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function
+_generic_read_RGBA_span_BGRA8888_REV_SSE2:
+ pushl %esi
+ pushl %ebx
+
+ LOAD_MASK(movdqu,%xmm1,%xmm2)
+
+ movl 12(%esp), %ebx /* source pointer */
+ movl 20(%esp), %edx /* number of pixels to copy */
+ movl 16(%esp), %ecx /* destination pointer */
+
+ movl %ebx, %eax
+ movl %edx, %esi
+
+ testl %edx, %edx
+ jle .L46 /* Bail if there's nothing to do. */
+
+ /* If the source pointer isn't a multiple of 16 we have to process
+ * a few pixels the "slow" way to get the address aligned for
+ * the SSE fetch intsructions.
+ */
+
+ negl %eax
+ andl $15, %eax
+ sarl $2, %eax
+
+ cmpl %edx, %eax
+ cmovbe %eax, %esi
+ subl %esi, %edx
+
+ testl $1, %esi
+ je .L41
+
+ DO_ONE_PIXEL()
+.L41:
+ testl $2, %esi
+ je .L40
+
+ movq (%ebx), %xmm0
+ addl $8, %ebx
+
+ movdqa %xmm0, %xmm3
+ movdqa %xmm0, %xmm4
+ andps %xmm1, %xmm0
+
+ andps %xmm2, %xmm3
+ pslldq $2, %xmm4
+ psrldq $2, %xmm3
+ andps %xmm2, %xmm4
+
+ orps %xmm4, %xmm3
+ orps %xmm3, %xmm0
+
+ movq %xmm0, (%ecx)
+ addl $8, %ecx
+.L40:
+
+ /* Would it be worth having a specialized version of this loop for
+ * the case where the destination is 16-byte aligned? That version
+ * would be identical except that it could use movedqa instead of
+ * movdqu.
+ */
+
+ movl %edx, %eax
+ shrl $2, %eax
+ jmp .L42
+.L43:
+ movdqa (%ebx), %xmm0
+ addl $16, %ebx
+
+ movdqa %xmm0, %xmm3
+ movdqa %xmm0, %xmm4
+ andps %xmm1, %xmm0
+
+ andps %xmm2, %xmm3
+ pslldq $2, %xmm4
+ psrldq $2, %xmm3
+ andps %xmm2, %xmm4
+
+ orps %xmm4, %xmm3
+ orps %xmm3, %xmm0
+
+ movdqu %xmm0, (%ecx)
+ addl $16, %ecx
+ subl $1, %eax
+.L42:
+ jne .L43
+
+
+ /* There may be upto 3 pixels remaining to be copied. Take care
+ * of them now. We do the 2 pixel case first because the data
+ * will be aligned.
+ */
+
+ testl $2, %edx
+ je .L47
+
+ movq (%ebx), %xmm0
+ addl $8, %ebx
+
+ movdqa %xmm0, %xmm3
+ movdqa %xmm0, %xmm4
+ andps %xmm1, %xmm0
+
+ andps %xmm2, %xmm3
+ pslldq $2, %xmm4
+ psrldq $2, %xmm3
+ andps %xmm2, %xmm4
+
+ orps %xmm4, %xmm3
+ orps %xmm3, %xmm0
+
+ movq %xmm0, (%ecx)
+ addl $8, %ecx
+.L47:
+
+ testl $1, %edx
+ je .L46
+
+ DO_ONE_LAST_PIXEL()
+.L46:
+
+ popl %ebx
+ popl %esi
+ ret
+ .size _generic_read_RGBA_span_BGRA8888_REV_SSE2, .-_generic_read_RGBA_span_BGRA8888_REV_SSE2
+
+
+
+#define MASK_565_L 0x07e0f800
+#define MASK_565_H 0x0000001f
+/* Setting SCALE_ADJUST to 5 gives a perfect match with the
+ * classic C implementation in Mesa. Setting SCALE_ADJUST
+ * to 0 is slightly faster but at a small cost to accuracy.
+ */
+#define SCALE_ADJUST 5
+#if SCALE_ADJUST == 5
+#define PRESCALE_L 0x00100001
+#define PRESCALE_H 0x00000200
+#define SCALE_L 0x40C620E8
+#define SCALE_H 0x0000839d
+#elif SCALE_ADJUST == 0
+#define PRESCALE_L 0x00200001
+#define PRESCALE_H 0x00000800
+#define SCALE_L 0x01040108
+#define SCALE_H 0x00000108
+#else
+#error SCALE_ADJUST must either be 5 or 0.
+#endif
+#define ALPHA_L 0x00000000
+#define ALPHA_H 0x00ff0000
+
+/**
+ * MMX optimized version of the RGB565 to RGBA copy routine.
+ */
+
+ .text
+ .globl _generic_read_RGBA_span_RGB565_MMX
+#ifndef USE_DRICORE
+ .hidden _generic_read_RGBA_span_RGB565_MMX
+#endif
+ .type _generic_read_RGBA_span_RGB565_MMX, @function
+
+_generic_read_RGBA_span_RGB565_MMX:
+
+#ifdef USE_INNER_EMMS
+ emms
+#endif
+
+ movl 4(%esp), %eax /* source pointer */
+ movl 8(%esp), %edx /* destination pointer */
+ movl 12(%esp), %ecx /* number of pixels to copy */
+
+ pushl $MASK_565_H
+ pushl $MASK_565_L
+ movq (%esp), %mm5
+ pushl $PRESCALE_H
+ pushl $PRESCALE_L
+ movq (%esp), %mm6
+ pushl $SCALE_H
+ pushl $SCALE_L
+ movq (%esp), %mm7
+ pushl $ALPHA_H
+ pushl $ALPHA_L
+ movq (%esp), %mm3
+ addl $32,%esp
+
+ sarl $2, %ecx
+ jl .L01 /* Bail early if the count is negative. */
+ jmp .L02
+
+.L03:
+ /* Fetch 4 RGB565 pixels into %mm4. Distribute the first and
+ * second pixels into the four words of %mm0 and %mm2.
+ */
+
+ movq (%eax), %mm4
+ addl $8, %eax
+
+ pshufw $0x00, %mm4, %mm0
+ pshufw $0x55, %mm4, %mm2
+
+
+ /* Mask the pixels so that each word of each register contains only
+ * one color component.
+ */
+
+ pand %mm5, %mm0
+ pand %mm5, %mm2
+
+
+ /* Adjust the component values so that they are as small as possible,
+ * but large enough so that we can multiply them by an unsigned 16-bit
+ * number and get a value as large as 0x00ff0000.
+ */
+
+ pmullw %mm6, %mm0
+ pmullw %mm6, %mm2
+#if SCALE_ADJUST > 0
+ psrlw $SCALE_ADJUST, %mm0
+ psrlw $SCALE_ADJUST, %mm2
+#endif
+
+ /* Scale the input component values to be on the range
+ * [0, 0x00ff0000]. This it the real magic of the whole routine.
+ */
+
+ pmulhuw %mm7, %mm0
+ pmulhuw %mm7, %mm2
+
+
+ /* Always set the alpha value to 0xff.
+ */
+
+ por %mm3, %mm0
+ por %mm3, %mm2
+
+
+ /* Pack the 16-bit values to 8-bit values and store the converted
+ * pixel data.
+ */
+
+ packuswb %mm2, %mm0
+ movq %mm0, (%edx)
+ addl $8, %edx
+
+ pshufw $0xaa, %mm4, %mm0
+ pshufw $0xff, %mm4, %mm2
+
+ pand %mm5, %mm0
+ pand %mm5, %mm2
+ pmullw %mm6, %mm0
+ pmullw %mm6, %mm2
+#if SCALE_ADJUST > 0
+ psrlw $SCALE_ADJUST, %mm0
+ psrlw $SCALE_ADJUST, %mm2
+#endif
+ pmulhuw %mm7, %mm0
+ pmulhuw %mm7, %mm2
+
+ por %mm3, %mm0
+ por %mm3, %mm2
+
+ packuswb %mm2, %mm0
+
+ movq %mm0, (%edx)
+ addl $8, %edx
+
+ subl $1, %ecx
+.L02:
+ jne .L03
+
+
+ /* At this point there can be at most 3 pixels left to process. If
+ * there is either 2 or 3 left, process 2.
+ */
+
+ movl 12(%esp), %ecx
+ testl $0x02, %ecx
+ je .L04
+
+ movd (%eax), %mm4
+ addl $4, %eax
+
+ pshufw $0x00, %mm4, %mm0
+ pshufw $0x55, %mm4, %mm2
+
+ pand %mm5, %mm0
+ pand %mm5, %mm2
+ pmullw %mm6, %mm0
+ pmullw %mm6, %mm2
+#if SCALE_ADJUST > 0
+ psrlw $SCALE_ADJUST, %mm0
+ psrlw $SCALE_ADJUST, %mm2
+#endif
+ pmulhuw %mm7, %mm0
+ pmulhuw %mm7, %mm2
+
+ por %mm3, %mm0
+ por %mm3, %mm2
+
+ packuswb %mm2, %mm0
+
+ movq %mm0, (%edx)
+ addl $8, %edx
+
+.L04:
+ /* At this point there can be at most 1 pixel left to process.
+ * Process it if needed.
+ */
+
+ testl $0x01, %ecx
+ je .L01
+
+ movzwl (%eax), %ecx
+ movd %ecx, %mm4
+
+ pshufw $0x00, %mm4, %mm0
+
+ pand %mm5, %mm0
+ pmullw %mm6, %mm0
+#if SCALE_ADJUST > 0
+ psrlw $SCALE_ADJUST, %mm0
+#endif
+ pmulhuw %mm7, %mm0
+
+ por %mm3, %mm0
+
+ packuswb %mm0, %mm0
+
+ movd %mm0, (%edx)
+
+.L01:
+#ifdef USE_INNER_EMMS
+ emms
+#endif
+ ret
+#endif /* !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__) */
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/read_rgba_span_x86.h b/mesalib/src/mesa/x86/read_rgba_span_x86.h
index d255f6dcb..564b1bb0f 100644
--- a/mesalib/src/mesa/x86/read_rgba_span_x86.h
+++ b/mesalib/src/mesa/x86/read_rgba_span_x86.h
@@ -1,56 +1,56 @@
-/*
- * (C) Copyright IBM Corporation 2004
- * All Rights Reserved.
- *
- * 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
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, 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 (including the next
- * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM AND/OR THEIR SUPPLIERS 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.
- */
-
-/**
- * \file read_rgba_span_x86.h
- *
- * \author Ian Romanick <idr@us.ibm.com>
- */
-
-#ifndef READ_RGBA_SPAN_X86_H
-#define READ_RGBA_SPAN_X86_H
-
-#if defined(USE_SSE_ASM) || defined(USE_MMX_ASM)
-#include "x86/common_x86_asm.h"
-#endif
-
-#if defined(USE_SSE_ASM)
-extern void _generic_read_RGBA_span_BGRA8888_REV_SSE2( const unsigned char *,
- unsigned char *, unsigned );
-#endif
-
-#if defined(USE_SSE_ASM)
-extern void _generic_read_RGBA_span_BGRA8888_REV_SSE( const unsigned char *,
- unsigned char *, unsigned );
-#endif
-
-#if defined(USE_MMX_ASM)
-extern void _generic_read_RGBA_span_BGRA8888_REV_MMX( const unsigned char *,
- unsigned char *, unsigned );
-
-extern void _generic_read_RGBA_span_RGB565_MMX( const unsigned char *,
- unsigned char *, unsigned );
-#endif
-
-#endif /* READ_RGBA_SPAN_X86_H */
+/*
+ * (C) Copyright IBM Corporation 2004
+ * All Rights Reserved.
+ *
+ * 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
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, 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 (including the next
+ * paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+ * IBM AND/OR THEIR SUPPLIERS 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.
+ */
+
+/**
+ * \file read_rgba_span_x86.h
+ *
+ * \author Ian Romanick <idr@us.ibm.com>
+ */
+
+#ifndef READ_RGBA_SPAN_X86_H
+#define READ_RGBA_SPAN_X86_H
+
+#if defined(USE_SSE_ASM) || defined(USE_MMX_ASM)
+#include "x86/common_x86_asm.h"
+#endif
+
+#if defined(USE_SSE_ASM)
+extern void _generic_read_RGBA_span_BGRA8888_REV_SSE2( const unsigned char *,
+ unsigned char *, unsigned );
+#endif
+
+#if defined(USE_SSE_ASM)
+extern void _generic_read_RGBA_span_BGRA8888_REV_SSE( const unsigned char *,
+ unsigned char *, unsigned );
+#endif
+
+#if defined(USE_MMX_ASM)
+extern void _generic_read_RGBA_span_BGRA8888_REV_MMX( const unsigned char *,
+ unsigned char *, unsigned );
+
+extern void _generic_read_RGBA_span_RGB565_MMX( const unsigned char *,
+ unsigned char *, unsigned );
+#endif
+
+#endif /* READ_RGBA_SPAN_X86_H */
diff --git a/mesalib/src/mesa/x86/rtasm/x86sse.c b/mesalib/src/mesa/x86/rtasm/x86sse.c
index 08e3969b2..c93faba79 100644
--- a/mesalib/src/mesa/x86/rtasm/x86sse.c
+++ b/mesalib/src/mesa/x86/rtasm/x86sse.c
@@ -1,1203 +1,1203 @@
-#ifdef USE_X86_ASM
-#if defined(__i386__) || defined(__386__)
-
-#include "main/imports.h"
-#include "x86sse.h"
-
-#define DISASSEM 0
-#define X86_TWOB 0x0f
-
-#if 0
-static unsigned char *cptr( void (*label)() )
-{
- return (unsigned char *)(unsigned long)label;
-}
-#endif
-
-
-static void do_realloc( struct x86_function *p )
-{
- if (p->size == 0) {
- p->size = 1024;
- p->store = _mesa_exec_malloc(p->size);
- p->csr = p->store;
- }
- else {
- unsigned used = p->csr - p->store;
- unsigned char *tmp = p->store;
- p->size *= 2;
- p->store = _mesa_exec_malloc(p->size);
- memcpy(p->store, tmp, used);
- p->csr = p->store + used;
- _mesa_exec_free(tmp);
- }
-}
-
-/* Emit bytes to the instruction stream:
- */
-static unsigned char *reserve( struct x86_function *p, int bytes )
-{
- if (p->csr + bytes - p->store > p->size)
- do_realloc(p);
-
- {
- unsigned char *csr = p->csr;
- p->csr += bytes;
- return csr;
- }
-}
-
-
-
-static void emit_1b( struct x86_function *p, char b0 )
-{
- char *csr = (char *)reserve(p, 1);
- *csr = b0;
-}
-
-static void emit_1i( struct x86_function *p, int i0 )
-{
- int *icsr = (int *)reserve(p, sizeof(i0));
- *icsr = i0;
-}
-
-static void emit_1ub( struct x86_function *p, unsigned char b0 )
-{
- unsigned char *csr = reserve(p, 1);
- *csr++ = b0;
-}
-
-static void emit_2ub( struct x86_function *p, unsigned char b0, unsigned char b1 )
-{
- unsigned char *csr = reserve(p, 2);
- *csr++ = b0;
- *csr++ = b1;
-}
-
-static void emit_3ub( struct x86_function *p, unsigned char b0, unsigned char b1, unsigned char b2 )
-{
- unsigned char *csr = reserve(p, 3);
- *csr++ = b0;
- *csr++ = b1;
- *csr++ = b2;
-}
-
-
-/* Build a modRM byte + possible displacement. No treatment of SIB
- * indexing. BZZT - no way to encode an absolute address.
- */
-static void emit_modrm( struct x86_function *p,
- struct x86_reg reg,
- struct x86_reg regmem )
-{
- unsigned char val = 0;
-
- assert(reg.mod == mod_REG);
-
- val |= regmem.mod << 6; /* mod field */
- val |= reg.idx << 3; /* reg field */
- val |= regmem.idx; /* r/m field */
-
- emit_1ub(p, val);
-
- /* Oh-oh we've stumbled into the SIB thing.
- */
- if (regmem.file == file_REG32 &&
- regmem.idx == reg_SP) {
- emit_1ub(p, 0x24); /* simplistic! */
- }
-
- switch (regmem.mod) {
- case mod_REG:
- case mod_INDIRECT:
- break;
- case mod_DISP8:
- emit_1b(p, regmem.disp);
- break;
- case mod_DISP32:
- emit_1i(p, regmem.disp);
- break;
- default:
- assert(0);
- break;
- }
-}
-
-
-static void emit_modrm_noreg( struct x86_function *p,
- unsigned op,
- struct x86_reg regmem )
-{
- struct x86_reg dummy = x86_make_reg(file_REG32, op);
- emit_modrm(p, dummy, regmem);
-}
-
-/* Many x86 instructions have two opcodes to cope with the situations
- * where the destination is a register or memory reference
- * respectively. This function selects the correct opcode based on
- * the arguments presented.
- */
-static void emit_op_modrm( struct x86_function *p,
- unsigned char op_dst_is_reg,
- unsigned char op_dst_is_mem,
- struct x86_reg dst,
- struct x86_reg src )
-{
- switch (dst.mod) {
- case mod_REG:
- emit_1ub(p, op_dst_is_reg);
- emit_modrm(p, dst, src);
- break;
- case mod_INDIRECT:
- case mod_DISP32:
- case mod_DISP8:
- assert(src.mod == mod_REG);
- emit_1ub(p, op_dst_is_mem);
- emit_modrm(p, src, dst);
- break;
- default:
- assert(0);
- break;
- }
-}
-
-
-
-
-
-
-
-/* Create and manipulate registers and regmem values:
- */
-struct x86_reg x86_make_reg( enum x86_reg_file file,
- enum x86_reg_name idx )
-{
- struct x86_reg reg;
-
- reg.file = file;
- reg.idx = idx;
- reg.mod = mod_REG;
- reg.disp = 0;
-
- return reg;
-}
-
-struct x86_reg x86_make_disp( struct x86_reg reg,
- int disp )
-{
- assert(reg.file == file_REG32);
-
- if (reg.mod == mod_REG)
- reg.disp = disp;
- else
- reg.disp += disp;
-
- if (reg.disp == 0)
- reg.mod = mod_INDIRECT;
- else if (reg.disp <= 127 && reg.disp >= -128)
- reg.mod = mod_DISP8;
- else
- reg.mod = mod_DISP32;
-
- return reg;
-}
-
-struct x86_reg x86_deref( struct x86_reg reg )
-{
- return x86_make_disp(reg, 0);
-}
-
-struct x86_reg x86_get_base_reg( struct x86_reg reg )
-{
- return x86_make_reg( reg.file, reg.idx );
-}
-
-unsigned char *x86_get_label( struct x86_function *p )
-{
- return p->csr;
-}
-
-
-
-/***********************************************************************
- * x86 instructions
- */
-
-
-void x86_jcc( struct x86_function *p,
- enum x86_cc cc,
- unsigned char *label )
-{
- int offset = label - (x86_get_label(p) + 2);
-
- if (offset <= 127 && offset >= -128) {
- emit_1ub(p, 0x70 + cc);
- emit_1b(p, (char) offset);
- }
- else {
- offset = label - (x86_get_label(p) + 6);
- emit_2ub(p, 0x0f, 0x80 + cc);
- emit_1i(p, offset);
- }
-}
-
-/* Always use a 32bit offset for forward jumps:
- */
-unsigned char *x86_jcc_forward( struct x86_function *p,
- enum x86_cc cc )
-{
- emit_2ub(p, 0x0f, 0x80 + cc);
- emit_1i(p, 0);
- return x86_get_label(p);
-}
-
-unsigned char *x86_jmp_forward( struct x86_function *p)
-{
- emit_1ub(p, 0xe9);
- emit_1i(p, 0);
- return x86_get_label(p);
-}
-
-unsigned char *x86_call_forward( struct x86_function *p)
-{
- emit_1ub(p, 0xe8);
- emit_1i(p, 0);
- return x86_get_label(p);
-}
-
-/* Fixup offset from forward jump:
- */
-void x86_fixup_fwd_jump( struct x86_function *p,
- unsigned char *fixup )
-{
- *(int *)(fixup - 4) = x86_get_label(p) - fixup;
-}
-
-void x86_jmp( struct x86_function *p, unsigned char *label)
-{
- emit_1ub(p, 0xe9);
- emit_1i(p, label - x86_get_label(p) - 4);
-}
-
-#if 0
-/* This doesn't work once we start reallocating & copying the
- * generated code on buffer fills, because the call is relative to the
- * current pc.
- */
-void x86_call( struct x86_function *p, void (*label)())
-{
- emit_1ub(p, 0xe8);
- emit_1i(p, cptr(label) - x86_get_label(p) - 4);
-}
-#else
-void x86_call( struct x86_function *p, struct x86_reg reg)
-{
- emit_1ub(p, 0xff);
- emit_modrm_noreg(p, 2, reg);
-}
-#endif
-
-
-/* michal:
- * Temporary. As I need immediate operands, and dont want to mess with the codegen,
- * I load the immediate into general purpose register and use it.
- */
-void x86_mov_reg_imm( struct x86_function *p, struct x86_reg dst, int imm )
-{
- assert(dst.mod == mod_REG);
- emit_1ub(p, 0xb8 + dst.idx);
- emit_1i(p, imm);
-}
-
-void x86_push( struct x86_function *p,
- struct x86_reg reg )
-{
- assert(reg.mod == mod_REG);
- emit_1ub(p, 0x50 + reg.idx);
- p->stack_offset += 4;
-}
-
-void x86_pop( struct x86_function *p,
- struct x86_reg reg )
-{
- assert(reg.mod == mod_REG);
- emit_1ub(p, 0x58 + reg.idx);
- p->stack_offset -= 4;
-}
-
-void x86_inc( struct x86_function *p,
- struct x86_reg reg )
-{
- assert(reg.mod == mod_REG);
- emit_1ub(p, 0x40 + reg.idx);
-}
-
-void x86_dec( struct x86_function *p,
- struct x86_reg reg )
-{
- assert(reg.mod == mod_REG);
- emit_1ub(p, 0x48 + reg.idx);
-}
-
-void x86_ret( struct x86_function *p )
-{
- emit_1ub(p, 0xc3);
-}
-
-void x86_sahf( struct x86_function *p )
-{
- emit_1ub(p, 0x9e);
-}
-
-void x86_mov( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_op_modrm( p, 0x8b, 0x89, dst, src );
-}
-
-void x86_xor( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_op_modrm( p, 0x33, 0x31, dst, src );
-}
-
-void x86_cmp( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_op_modrm( p, 0x3b, 0x39, dst, src );
-}
-
-void x86_lea( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_1ub(p, 0x8d);
- emit_modrm( p, dst, src );
-}
-
-void x86_test( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_1ub(p, 0x85);
- emit_modrm( p, dst, src );
-}
-
-void x86_add( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_op_modrm(p, 0x03, 0x01, dst, src );
-}
-
-void x86_mul( struct x86_function *p,
- struct x86_reg src )
-{
- assert (src.file == file_REG32 && src.mod == mod_REG);
- emit_op_modrm(p, 0xf7, 0, x86_make_reg (file_REG32, reg_SP), src );
-}
-
-void x86_sub( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_op_modrm(p, 0x2b, 0x29, dst, src );
-}
-
-void x86_or( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_op_modrm( p, 0x0b, 0x09, dst, src );
-}
-
-void x86_and( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_op_modrm( p, 0x23, 0x21, dst, src );
-}
-
-
-
-/***********************************************************************
- * SSE instructions
- */
-
-
-void sse_movss( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, 0xF3, X86_TWOB);
- emit_op_modrm( p, 0x10, 0x11, dst, src );
-}
-
-void sse_movaps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_1ub(p, X86_TWOB);
- emit_op_modrm( p, 0x28, 0x29, dst, src );
-}
-
-void sse_movups( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_1ub(p, X86_TWOB);
- emit_op_modrm( p, 0x10, 0x11, dst, src );
-}
-
-void sse_movhps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- assert(dst.mod != mod_REG || src.mod != mod_REG);
- emit_1ub(p, X86_TWOB);
- emit_op_modrm( p, 0x16, 0x17, dst, src ); /* cf movlhps */
-}
-
-void sse_movlps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- assert(dst.mod != mod_REG || src.mod != mod_REG);
- emit_1ub(p, X86_TWOB);
- emit_op_modrm( p, 0x12, 0x13, dst, src ); /* cf movhlps */
-}
-
-void sse_maxps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, X86_TWOB, 0x5F);
- emit_modrm( p, dst, src );
-}
-
-void sse_maxss( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_3ub(p, 0xF3, X86_TWOB, 0x5F);
- emit_modrm( p, dst, src );
-}
-
-void sse_divss( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_3ub(p, 0xF3, X86_TWOB, 0x5E);
- emit_modrm( p, dst, src );
-}
-
-void sse_minps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, X86_TWOB, 0x5D);
- emit_modrm( p, dst, src );
-}
-
-void sse_subps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, X86_TWOB, 0x5C);
- emit_modrm( p, dst, src );
-}
-
-void sse_mulps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, X86_TWOB, 0x59);
- emit_modrm( p, dst, src );
-}
-
-void sse_mulss( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_3ub(p, 0xF3, X86_TWOB, 0x59);
- emit_modrm( p, dst, src );
-}
-
-void sse_addps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, X86_TWOB, 0x58);
- emit_modrm( p, dst, src );
-}
-
-void sse_addss( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_3ub(p, 0xF3, X86_TWOB, 0x58);
- emit_modrm( p, dst, src );
-}
-
-void sse_andnps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, X86_TWOB, 0x55);
- emit_modrm( p, dst, src );
-}
-
-void sse_andps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, X86_TWOB, 0x54);
- emit_modrm( p, dst, src );
-}
-
-void sse_rsqrtps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, X86_TWOB, 0x52);
- emit_modrm( p, dst, src );
-}
-
-void sse_rsqrtss( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_3ub(p, 0xF3, X86_TWOB, 0x52);
- emit_modrm( p, dst, src );
-
-}
-
-void sse_movhlps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- assert(dst.mod == mod_REG && src.mod == mod_REG);
- emit_2ub(p, X86_TWOB, 0x12);
- emit_modrm( p, dst, src );
-}
-
-void sse_movlhps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- assert(dst.mod == mod_REG && src.mod == mod_REG);
- emit_2ub(p, X86_TWOB, 0x16);
- emit_modrm( p, dst, src );
-}
-
-void sse_orps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, X86_TWOB, 0x56);
- emit_modrm( p, dst, src );
-}
-
-void sse_xorps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, X86_TWOB, 0x57);
- emit_modrm( p, dst, src );
-}
-
-void sse_cvtps2pi( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- assert(dst.file == file_MMX &&
- (src.file == file_XMM || src.mod != mod_REG));
-
- p->need_emms = 1;
-
- emit_2ub(p, X86_TWOB, 0x2d);
- emit_modrm( p, dst, src );
-}
-
-
-/* Shufps can also be used to implement a reduced swizzle when dest ==
- * arg0.
- */
-void sse_shufps( struct x86_function *p,
- struct x86_reg dest,
- struct x86_reg arg0,
- unsigned char shuf)
-{
- emit_2ub(p, X86_TWOB, 0xC6);
- emit_modrm(p, dest, arg0);
- emit_1ub(p, shuf);
-}
-
-void sse_cmpps( struct x86_function *p,
- struct x86_reg dest,
- struct x86_reg arg0,
- unsigned char cc)
-{
- emit_2ub(p, X86_TWOB, 0xC2);
- emit_modrm(p, dest, arg0);
- emit_1ub(p, cc);
-}
-
-void sse_pmovmskb( struct x86_function *p,
- struct x86_reg dest,
- struct x86_reg src)
-{
- emit_3ub(p, 0x66, X86_TWOB, 0xD7);
- emit_modrm(p, dest, src);
-}
-
-/***********************************************************************
- * SSE2 instructions
- */
-
-/**
- * Perform a reduced swizzle:
- */
-void sse2_pshufd( struct x86_function *p,
- struct x86_reg dest,
- struct x86_reg arg0,
- unsigned char shuf)
-{
- emit_3ub(p, 0x66, X86_TWOB, 0x70);
- emit_modrm(p, dest, arg0);
- emit_1ub(p, shuf);
-}
-
-void sse2_cvttps2dq( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_3ub( p, 0xF3, X86_TWOB, 0x5B );
- emit_modrm( p, dst, src );
-}
-
-void sse2_cvtps2dq( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_3ub(p, 0x66, X86_TWOB, 0x5B);
- emit_modrm( p, dst, src );
-}
-
-void sse2_packssdw( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_3ub(p, 0x66, X86_TWOB, 0x6B);
- emit_modrm( p, dst, src );
-}
-
-void sse2_packsswb( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_3ub(p, 0x66, X86_TWOB, 0x63);
- emit_modrm( p, dst, src );
-}
-
-void sse2_packuswb( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_3ub(p, 0x66, X86_TWOB, 0x67);
- emit_modrm( p, dst, src );
-}
-
-void sse2_rcpps( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, X86_TWOB, 0x53);
- emit_modrm( p, dst, src );
-}
-
-void sse2_rcpss( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_3ub(p, 0xF3, X86_TWOB, 0x53);
- emit_modrm( p, dst, src );
-}
-
-void sse2_movd( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- emit_2ub(p, 0x66, X86_TWOB);
- emit_op_modrm( p, 0x6e, 0x7e, dst, src );
-}
-
-
-
-
-/***********************************************************************
- * x87 instructions
- */
-void x87_fist( struct x86_function *p, struct x86_reg dst )
-{
- emit_1ub(p, 0xdb);
- emit_modrm_noreg(p, 2, dst);
-}
-
-void x87_fistp( struct x86_function *p, struct x86_reg dst )
-{
- emit_1ub(p, 0xdb);
- emit_modrm_noreg(p, 3, dst);
-}
-
-void x87_fild( struct x86_function *p, struct x86_reg arg )
-{
- emit_1ub(p, 0xdf);
- emit_modrm_noreg(p, 0, arg);
-}
-
-void x87_fldz( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xee);
-}
-
-
-void x87_fldcw( struct x86_function *p, struct x86_reg arg )
-{
- assert(arg.file == file_REG32);
- assert(arg.mod != mod_REG);
- emit_1ub(p, 0xd9);
- emit_modrm_noreg(p, 5, arg);
-}
-
-void x87_fld1( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xe8);
-}
-
-void x87_fldl2e( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xea);
-}
-
-void x87_fldln2( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xed);
-}
-
-void x87_fwait( struct x86_function *p )
-{
- emit_1ub(p, 0x9b);
-}
-
-void x87_fnclex( struct x86_function *p )
-{
- emit_2ub(p, 0xdb, 0xe2);
-}
-
-void x87_fclex( struct x86_function *p )
-{
- x87_fwait(p);
- x87_fnclex(p);
-}
-
-
-static void x87_arith_op( struct x86_function *p, struct x86_reg dst, struct x86_reg arg,
- unsigned char dst0ub0,
- unsigned char dst0ub1,
- unsigned char arg0ub0,
- unsigned char arg0ub1,
- unsigned char argmem_noreg)
-{
- assert(dst.file == file_x87);
-
- if (arg.file == file_x87) {
- if (dst.idx == 0)
- emit_2ub(p, dst0ub0, dst0ub1+arg.idx);
- else if (arg.idx == 0)
- emit_2ub(p, arg0ub0, arg0ub1+arg.idx);
- else
- assert(0);
- }
- else if (dst.idx == 0) {
- assert(arg.file == file_REG32);
- emit_1ub(p, 0xd8);
- emit_modrm_noreg(p, argmem_noreg, arg);
- }
- else
- assert(0);
-}
-
-void x87_fmul( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
-{
- x87_arith_op(p, dst, arg,
- 0xd8, 0xc8,
- 0xdc, 0xc8,
- 4);
-}
-
-void x87_fsub( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
-{
- x87_arith_op(p, dst, arg,
- 0xd8, 0xe0,
- 0xdc, 0xe8,
- 4);
-}
-
-void x87_fsubr( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
-{
- x87_arith_op(p, dst, arg,
- 0xd8, 0xe8,
- 0xdc, 0xe0,
- 5);
-}
-
-void x87_fadd( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
-{
- x87_arith_op(p, dst, arg,
- 0xd8, 0xc0,
- 0xdc, 0xc0,
- 0);
-}
-
-void x87_fdiv( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
-{
- x87_arith_op(p, dst, arg,
- 0xd8, 0xf0,
- 0xdc, 0xf8,
- 6);
-}
-
-void x87_fdivr( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
-{
- x87_arith_op(p, dst, arg,
- 0xd8, 0xf8,
- 0xdc, 0xf0,
- 7);
-}
-
-void x87_fmulp( struct x86_function *p, struct x86_reg dst )
-{
- assert(dst.file == file_x87);
- assert(dst.idx >= 1);
- emit_2ub(p, 0xde, 0xc8+dst.idx);
-}
-
-void x87_fsubp( struct x86_function *p, struct x86_reg dst )
-{
- assert(dst.file == file_x87);
- assert(dst.idx >= 1);
- emit_2ub(p, 0xde, 0xe8+dst.idx);
-}
-
-void x87_fsubrp( struct x86_function *p, struct x86_reg dst )
-{
- assert(dst.file == file_x87);
- assert(dst.idx >= 1);
- emit_2ub(p, 0xde, 0xe0+dst.idx);
-}
-
-void x87_faddp( struct x86_function *p, struct x86_reg dst )
-{
- assert(dst.file == file_x87);
- assert(dst.idx >= 1);
- emit_2ub(p, 0xde, 0xc0+dst.idx);
-}
-
-void x87_fdivp( struct x86_function *p, struct x86_reg dst )
-{
- assert(dst.file == file_x87);
- assert(dst.idx >= 1);
- emit_2ub(p, 0xde, 0xf8+dst.idx);
-}
-
-void x87_fdivrp( struct x86_function *p, struct x86_reg dst )
-{
- assert(dst.file == file_x87);
- assert(dst.idx >= 1);
- emit_2ub(p, 0xde, 0xf0+dst.idx);
-}
-
-void x87_fucom( struct x86_function *p, struct x86_reg arg )
-{
- assert(arg.file == file_x87);
- emit_2ub(p, 0xdd, 0xe0+arg.idx);
-}
-
-void x87_fucomp( struct x86_function *p, struct x86_reg arg )
-{
- assert(arg.file == file_x87);
- emit_2ub(p, 0xdd, 0xe8+arg.idx);
-}
-
-void x87_fucompp( struct x86_function *p )
-{
- emit_2ub(p, 0xda, 0xe9);
-}
-
-void x87_fxch( struct x86_function *p, struct x86_reg arg )
-{
- assert(arg.file == file_x87);
- emit_2ub(p, 0xd9, 0xc8+arg.idx);
-}
-
-void x87_fabs( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xe1);
-}
-
-void x87_fchs( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xe0);
-}
-
-void x87_fcos( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xff);
-}
-
-
-void x87_fprndint( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xfc);
-}
-
-void x87_fscale( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xfd);
-}
-
-void x87_fsin( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xfe);
-}
-
-void x87_fsincos( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xfb);
-}
-
-void x87_fsqrt( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xfa);
-}
-
-void x87_fxtract( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xf4);
-}
-
-/* st0 = (2^st0)-1
- *
- * Restrictions: -1.0 <= st0 <= 1.0
- */
-void x87_f2xm1( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xf0);
-}
-
-/* st1 = st1 * log2(st0);
- * pop_stack;
- */
-void x87_fyl2x( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xf1);
-}
-
-/* st1 = st1 * log2(st0 + 1.0);
- * pop_stack;
- *
- * A fast operation, with restrictions: -.29 < st0 < .29
- */
-void x87_fyl2xp1( struct x86_function *p )
-{
- emit_2ub(p, 0xd9, 0xf9);
-}
-
-
-void x87_fld( struct x86_function *p, struct x86_reg arg )
-{
- if (arg.file == file_x87)
- emit_2ub(p, 0xd9, 0xc0 + arg.idx);
- else {
- emit_1ub(p, 0xd9);
- emit_modrm_noreg(p, 0, arg);
- }
-}
-
-void x87_fst( struct x86_function *p, struct x86_reg dst )
-{
- if (dst.file == file_x87)
- emit_2ub(p, 0xdd, 0xd0 + dst.idx);
- else {
- emit_1ub(p, 0xd9);
- emit_modrm_noreg(p, 2, dst);
- }
-}
-
-void x87_fstp( struct x86_function *p, struct x86_reg dst )
-{
- if (dst.file == file_x87)
- emit_2ub(p, 0xdd, 0xd8 + dst.idx);
- else {
- emit_1ub(p, 0xd9);
- emit_modrm_noreg(p, 3, dst);
- }
-}
-
-void x87_fcom( struct x86_function *p, struct x86_reg dst )
-{
- if (dst.file == file_x87)
- emit_2ub(p, 0xd8, 0xd0 + dst.idx);
- else {
- emit_1ub(p, 0xd8);
- emit_modrm_noreg(p, 2, dst);
- }
-}
-
-void x87_fcomp( struct x86_function *p, struct x86_reg dst )
-{
- if (dst.file == file_x87)
- emit_2ub(p, 0xd8, 0xd8 + dst.idx);
- else {
- emit_1ub(p, 0xd8);
- emit_modrm_noreg(p, 3, dst);
- }
-}
-
-
-void x87_fnstsw( struct x86_function *p, struct x86_reg dst )
-{
- assert(dst.file == file_REG32);
-
- if (dst.idx == reg_AX &&
- dst.mod == mod_REG)
- emit_2ub(p, 0xdf, 0xe0);
- else {
- emit_1ub(p, 0xdd);
- emit_modrm_noreg(p, 7, dst);
- }
-}
-
-
-
-
-/***********************************************************************
- * MMX instructions
- */
-
-void mmx_emms( struct x86_function *p )
-{
- assert(p->need_emms);
- emit_2ub(p, 0x0f, 0x77);
- p->need_emms = 0;
-}
-
-void mmx_packssdw( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- assert(dst.file == file_MMX &&
- (src.file == file_MMX || src.mod != mod_REG));
-
- p->need_emms = 1;
-
- emit_2ub(p, X86_TWOB, 0x6b);
- emit_modrm( p, dst, src );
-}
-
-void mmx_packuswb( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- assert(dst.file == file_MMX &&
- (src.file == file_MMX || src.mod != mod_REG));
-
- p->need_emms = 1;
-
- emit_2ub(p, X86_TWOB, 0x67);
- emit_modrm( p, dst, src );
-}
-
-void mmx_movd( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- p->need_emms = 1;
- emit_1ub(p, X86_TWOB);
- emit_op_modrm( p, 0x6e, 0x7e, dst, src );
-}
-
-void mmx_movq( struct x86_function *p,
- struct x86_reg dst,
- struct x86_reg src )
-{
- p->need_emms = 1;
- emit_1ub(p, X86_TWOB);
- emit_op_modrm( p, 0x6f, 0x7f, dst, src );
-}
-
-
-/***********************************************************************
- * Helper functions
- */
-
-
-/* Retreive a reference to one of the function arguments, taking into
- * account any push/pop activity:
- */
-struct x86_reg x86_fn_arg( struct x86_function *p,
- unsigned arg )
-{
- return x86_make_disp(x86_make_reg(file_REG32, reg_SP),
- p->stack_offset + arg * 4); /* ??? */
-}
-
-
-void x86_init_func( struct x86_function *p )
-{
- p->size = 0;
- p->store = NULL;
- p->csr = p->store;
-}
-
-int x86_init_func_size( struct x86_function *p, unsigned code_size )
-{
- p->size = code_size;
- p->store = _mesa_exec_malloc(code_size);
- p->csr = p->store;
- return p->store != NULL;
-}
-
-void x86_release_func( struct x86_function *p )
-{
- _mesa_exec_free(p->store);
- p->store = NULL;
- p->csr = NULL;
- p->size = 0;
-}
-
-
-void (*x86_get_func( struct x86_function *p ))(void)
-{
- if (DISASSEM && p->store)
- printf("disassemble %p %p\n", p->store, p->csr);
- return (void (*)(void)) (unsigned long) p->store;
-}
-
-#else
-
-void x86sse_dummy( void )
-{
-}
-
-#endif
-
-#else /* USE_X86_ASM */
-
-int x86sse_c_dummy_var; /* silence warning */
-
-#endif /* USE_X86_ASM */
+#ifdef USE_X86_ASM
+#if defined(__i386__) || defined(__386__)
+
+#include "main/imports.h"
+#include "x86sse.h"
+
+#define DISASSEM 0
+#define X86_TWOB 0x0f
+
+#if 0
+static unsigned char *cptr( void (*label)() )
+{
+ return (unsigned char *)(unsigned long)label;
+}
+#endif
+
+
+static void do_realloc( struct x86_function *p )
+{
+ if (p->size == 0) {
+ p->size = 1024;
+ p->store = _mesa_exec_malloc(p->size);
+ p->csr = p->store;
+ }
+ else {
+ unsigned used = p->csr - p->store;
+ unsigned char *tmp = p->store;
+ p->size *= 2;
+ p->store = _mesa_exec_malloc(p->size);
+ memcpy(p->store, tmp, used);
+ p->csr = p->store + used;
+ _mesa_exec_free(tmp);
+ }
+}
+
+/* Emit bytes to the instruction stream:
+ */
+static unsigned char *reserve( struct x86_function *p, int bytes )
+{
+ if (p->csr + bytes - p->store > p->size)
+ do_realloc(p);
+
+ {
+ unsigned char *csr = p->csr;
+ p->csr += bytes;
+ return csr;
+ }
+}
+
+
+
+static void emit_1b( struct x86_function *p, char b0 )
+{
+ char *csr = (char *)reserve(p, 1);
+ *csr = b0;
+}
+
+static void emit_1i( struct x86_function *p, int i0 )
+{
+ int *icsr = (int *)reserve(p, sizeof(i0));
+ *icsr = i0;
+}
+
+static void emit_1ub( struct x86_function *p, unsigned char b0 )
+{
+ unsigned char *csr = reserve(p, 1);
+ *csr++ = b0;
+}
+
+static void emit_2ub( struct x86_function *p, unsigned char b0, unsigned char b1 )
+{
+ unsigned char *csr = reserve(p, 2);
+ *csr++ = b0;
+ *csr++ = b1;
+}
+
+static void emit_3ub( struct x86_function *p, unsigned char b0, unsigned char b1, unsigned char b2 )
+{
+ unsigned char *csr = reserve(p, 3);
+ *csr++ = b0;
+ *csr++ = b1;
+ *csr++ = b2;
+}
+
+
+/* Build a modRM byte + possible displacement. No treatment of SIB
+ * indexing. BZZT - no way to encode an absolute address.
+ */
+static void emit_modrm( struct x86_function *p,
+ struct x86_reg reg,
+ struct x86_reg regmem )
+{
+ unsigned char val = 0;
+
+ assert(reg.mod == mod_REG);
+
+ val |= regmem.mod << 6; /* mod field */
+ val |= reg.idx << 3; /* reg field */
+ val |= regmem.idx; /* r/m field */
+
+ emit_1ub(p, val);
+
+ /* Oh-oh we've stumbled into the SIB thing.
+ */
+ if (regmem.file == file_REG32 &&
+ regmem.idx == reg_SP) {
+ emit_1ub(p, 0x24); /* simplistic! */
+ }
+
+ switch (regmem.mod) {
+ case mod_REG:
+ case mod_INDIRECT:
+ break;
+ case mod_DISP8:
+ emit_1b(p, regmem.disp);
+ break;
+ case mod_DISP32:
+ emit_1i(p, regmem.disp);
+ break;
+ default:
+ assert(0);
+ break;
+ }
+}
+
+
+static void emit_modrm_noreg( struct x86_function *p,
+ unsigned op,
+ struct x86_reg regmem )
+{
+ struct x86_reg dummy = x86_make_reg(file_REG32, op);
+ emit_modrm(p, dummy, regmem);
+}
+
+/* Many x86 instructions have two opcodes to cope with the situations
+ * where the destination is a register or memory reference
+ * respectively. This function selects the correct opcode based on
+ * the arguments presented.
+ */
+static void emit_op_modrm( struct x86_function *p,
+ unsigned char op_dst_is_reg,
+ unsigned char op_dst_is_mem,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ switch (dst.mod) {
+ case mod_REG:
+ emit_1ub(p, op_dst_is_reg);
+ emit_modrm(p, dst, src);
+ break;
+ case mod_INDIRECT:
+ case mod_DISP32:
+ case mod_DISP8:
+ assert(src.mod == mod_REG);
+ emit_1ub(p, op_dst_is_mem);
+ emit_modrm(p, src, dst);
+ break;
+ default:
+ assert(0);
+ break;
+ }
+}
+
+
+
+
+
+
+
+/* Create and manipulate registers and regmem values:
+ */
+struct x86_reg x86_make_reg( enum x86_reg_file file,
+ enum x86_reg_name idx )
+{
+ struct x86_reg reg;
+
+ reg.file = file;
+ reg.idx = idx;
+ reg.mod = mod_REG;
+ reg.disp = 0;
+
+ return reg;
+}
+
+struct x86_reg x86_make_disp( struct x86_reg reg,
+ int disp )
+{
+ assert(reg.file == file_REG32);
+
+ if (reg.mod == mod_REG)
+ reg.disp = disp;
+ else
+ reg.disp += disp;
+
+ if (reg.disp == 0)
+ reg.mod = mod_INDIRECT;
+ else if (reg.disp <= 127 && reg.disp >= -128)
+ reg.mod = mod_DISP8;
+ else
+ reg.mod = mod_DISP32;
+
+ return reg;
+}
+
+struct x86_reg x86_deref( struct x86_reg reg )
+{
+ return x86_make_disp(reg, 0);
+}
+
+struct x86_reg x86_get_base_reg( struct x86_reg reg )
+{
+ return x86_make_reg( reg.file, reg.idx );
+}
+
+unsigned char *x86_get_label( struct x86_function *p )
+{
+ return p->csr;
+}
+
+
+
+/***********************************************************************
+ * x86 instructions
+ */
+
+
+void x86_jcc( struct x86_function *p,
+ enum x86_cc cc,
+ unsigned char *label )
+{
+ int offset = label - (x86_get_label(p) + 2);
+
+ if (offset <= 127 && offset >= -128) {
+ emit_1ub(p, 0x70 + cc);
+ emit_1b(p, (char) offset);
+ }
+ else {
+ offset = label - (x86_get_label(p) + 6);
+ emit_2ub(p, 0x0f, 0x80 + cc);
+ emit_1i(p, offset);
+ }
+}
+
+/* Always use a 32bit offset for forward jumps:
+ */
+unsigned char *x86_jcc_forward( struct x86_function *p,
+ enum x86_cc cc )
+{
+ emit_2ub(p, 0x0f, 0x80 + cc);
+ emit_1i(p, 0);
+ return x86_get_label(p);
+}
+
+unsigned char *x86_jmp_forward( struct x86_function *p)
+{
+ emit_1ub(p, 0xe9);
+ emit_1i(p, 0);
+ return x86_get_label(p);
+}
+
+unsigned char *x86_call_forward( struct x86_function *p)
+{
+ emit_1ub(p, 0xe8);
+ emit_1i(p, 0);
+ return x86_get_label(p);
+}
+
+/* Fixup offset from forward jump:
+ */
+void x86_fixup_fwd_jump( struct x86_function *p,
+ unsigned char *fixup )
+{
+ *(int *)(fixup - 4) = x86_get_label(p) - fixup;
+}
+
+void x86_jmp( struct x86_function *p, unsigned char *label)
+{
+ emit_1ub(p, 0xe9);
+ emit_1i(p, label - x86_get_label(p) - 4);
+}
+
+#if 0
+/* This doesn't work once we start reallocating & copying the
+ * generated code on buffer fills, because the call is relative to the
+ * current pc.
+ */
+void x86_call( struct x86_function *p, void (*label)())
+{
+ emit_1ub(p, 0xe8);
+ emit_1i(p, cptr(label) - x86_get_label(p) - 4);
+}
+#else
+void x86_call( struct x86_function *p, struct x86_reg reg)
+{
+ emit_1ub(p, 0xff);
+ emit_modrm_noreg(p, 2, reg);
+}
+#endif
+
+
+/* michal:
+ * Temporary. As I need immediate operands, and dont want to mess with the codegen,
+ * I load the immediate into general purpose register and use it.
+ */
+void x86_mov_reg_imm( struct x86_function *p, struct x86_reg dst, int imm )
+{
+ assert(dst.mod == mod_REG);
+ emit_1ub(p, 0xb8 + dst.idx);
+ emit_1i(p, imm);
+}
+
+void x86_push( struct x86_function *p,
+ struct x86_reg reg )
+{
+ assert(reg.mod == mod_REG);
+ emit_1ub(p, 0x50 + reg.idx);
+ p->stack_offset += 4;
+}
+
+void x86_pop( struct x86_function *p,
+ struct x86_reg reg )
+{
+ assert(reg.mod == mod_REG);
+ emit_1ub(p, 0x58 + reg.idx);
+ p->stack_offset -= 4;
+}
+
+void x86_inc( struct x86_function *p,
+ struct x86_reg reg )
+{
+ assert(reg.mod == mod_REG);
+ emit_1ub(p, 0x40 + reg.idx);
+}
+
+void x86_dec( struct x86_function *p,
+ struct x86_reg reg )
+{
+ assert(reg.mod == mod_REG);
+ emit_1ub(p, 0x48 + reg.idx);
+}
+
+void x86_ret( struct x86_function *p )
+{
+ emit_1ub(p, 0xc3);
+}
+
+void x86_sahf( struct x86_function *p )
+{
+ emit_1ub(p, 0x9e);
+}
+
+void x86_mov( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_op_modrm( p, 0x8b, 0x89, dst, src );
+}
+
+void x86_xor( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_op_modrm( p, 0x33, 0x31, dst, src );
+}
+
+void x86_cmp( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_op_modrm( p, 0x3b, 0x39, dst, src );
+}
+
+void x86_lea( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_1ub(p, 0x8d);
+ emit_modrm( p, dst, src );
+}
+
+void x86_test( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_1ub(p, 0x85);
+ emit_modrm( p, dst, src );
+}
+
+void x86_add( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_op_modrm(p, 0x03, 0x01, dst, src );
+}
+
+void x86_mul( struct x86_function *p,
+ struct x86_reg src )
+{
+ assert (src.file == file_REG32 && src.mod == mod_REG);
+ emit_op_modrm(p, 0xf7, 0, x86_make_reg (file_REG32, reg_SP), src );
+}
+
+void x86_sub( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_op_modrm(p, 0x2b, 0x29, dst, src );
+}
+
+void x86_or( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_op_modrm( p, 0x0b, 0x09, dst, src );
+}
+
+void x86_and( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_op_modrm( p, 0x23, 0x21, dst, src );
+}
+
+
+
+/***********************************************************************
+ * SSE instructions
+ */
+
+
+void sse_movss( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, 0xF3, X86_TWOB);
+ emit_op_modrm( p, 0x10, 0x11, dst, src );
+}
+
+void sse_movaps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_1ub(p, X86_TWOB);
+ emit_op_modrm( p, 0x28, 0x29, dst, src );
+}
+
+void sse_movups( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_1ub(p, X86_TWOB);
+ emit_op_modrm( p, 0x10, 0x11, dst, src );
+}
+
+void sse_movhps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ assert(dst.mod != mod_REG || src.mod != mod_REG);
+ emit_1ub(p, X86_TWOB);
+ emit_op_modrm( p, 0x16, 0x17, dst, src ); /* cf movlhps */
+}
+
+void sse_movlps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ assert(dst.mod != mod_REG || src.mod != mod_REG);
+ emit_1ub(p, X86_TWOB);
+ emit_op_modrm( p, 0x12, 0x13, dst, src ); /* cf movhlps */
+}
+
+void sse_maxps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, X86_TWOB, 0x5F);
+ emit_modrm( p, dst, src );
+}
+
+void sse_maxss( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_3ub(p, 0xF3, X86_TWOB, 0x5F);
+ emit_modrm( p, dst, src );
+}
+
+void sse_divss( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_3ub(p, 0xF3, X86_TWOB, 0x5E);
+ emit_modrm( p, dst, src );
+}
+
+void sse_minps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, X86_TWOB, 0x5D);
+ emit_modrm( p, dst, src );
+}
+
+void sse_subps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, X86_TWOB, 0x5C);
+ emit_modrm( p, dst, src );
+}
+
+void sse_mulps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, X86_TWOB, 0x59);
+ emit_modrm( p, dst, src );
+}
+
+void sse_mulss( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_3ub(p, 0xF3, X86_TWOB, 0x59);
+ emit_modrm( p, dst, src );
+}
+
+void sse_addps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, X86_TWOB, 0x58);
+ emit_modrm( p, dst, src );
+}
+
+void sse_addss( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_3ub(p, 0xF3, X86_TWOB, 0x58);
+ emit_modrm( p, dst, src );
+}
+
+void sse_andnps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, X86_TWOB, 0x55);
+ emit_modrm( p, dst, src );
+}
+
+void sse_andps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, X86_TWOB, 0x54);
+ emit_modrm( p, dst, src );
+}
+
+void sse_rsqrtps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, X86_TWOB, 0x52);
+ emit_modrm( p, dst, src );
+}
+
+void sse_rsqrtss( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_3ub(p, 0xF3, X86_TWOB, 0x52);
+ emit_modrm( p, dst, src );
+
+}
+
+void sse_movhlps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ assert(dst.mod == mod_REG && src.mod == mod_REG);
+ emit_2ub(p, X86_TWOB, 0x12);
+ emit_modrm( p, dst, src );
+}
+
+void sse_movlhps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ assert(dst.mod == mod_REG && src.mod == mod_REG);
+ emit_2ub(p, X86_TWOB, 0x16);
+ emit_modrm( p, dst, src );
+}
+
+void sse_orps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, X86_TWOB, 0x56);
+ emit_modrm( p, dst, src );
+}
+
+void sse_xorps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, X86_TWOB, 0x57);
+ emit_modrm( p, dst, src );
+}
+
+void sse_cvtps2pi( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ assert(dst.file == file_MMX &&
+ (src.file == file_XMM || src.mod != mod_REG));
+
+ p->need_emms = 1;
+
+ emit_2ub(p, X86_TWOB, 0x2d);
+ emit_modrm( p, dst, src );
+}
+
+
+/* Shufps can also be used to implement a reduced swizzle when dest ==
+ * arg0.
+ */
+void sse_shufps( struct x86_function *p,
+ struct x86_reg dest,
+ struct x86_reg arg0,
+ unsigned char shuf)
+{
+ emit_2ub(p, X86_TWOB, 0xC6);
+ emit_modrm(p, dest, arg0);
+ emit_1ub(p, shuf);
+}
+
+void sse_cmpps( struct x86_function *p,
+ struct x86_reg dest,
+ struct x86_reg arg0,
+ unsigned char cc)
+{
+ emit_2ub(p, X86_TWOB, 0xC2);
+ emit_modrm(p, dest, arg0);
+ emit_1ub(p, cc);
+}
+
+void sse_pmovmskb( struct x86_function *p,
+ struct x86_reg dest,
+ struct x86_reg src)
+{
+ emit_3ub(p, 0x66, X86_TWOB, 0xD7);
+ emit_modrm(p, dest, src);
+}
+
+/***********************************************************************
+ * SSE2 instructions
+ */
+
+/**
+ * Perform a reduced swizzle:
+ */
+void sse2_pshufd( struct x86_function *p,
+ struct x86_reg dest,
+ struct x86_reg arg0,
+ unsigned char shuf)
+{
+ emit_3ub(p, 0x66, X86_TWOB, 0x70);
+ emit_modrm(p, dest, arg0);
+ emit_1ub(p, shuf);
+}
+
+void sse2_cvttps2dq( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_3ub( p, 0xF3, X86_TWOB, 0x5B );
+ emit_modrm( p, dst, src );
+}
+
+void sse2_cvtps2dq( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_3ub(p, 0x66, X86_TWOB, 0x5B);
+ emit_modrm( p, dst, src );
+}
+
+void sse2_packssdw( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_3ub(p, 0x66, X86_TWOB, 0x6B);
+ emit_modrm( p, dst, src );
+}
+
+void sse2_packsswb( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_3ub(p, 0x66, X86_TWOB, 0x63);
+ emit_modrm( p, dst, src );
+}
+
+void sse2_packuswb( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_3ub(p, 0x66, X86_TWOB, 0x67);
+ emit_modrm( p, dst, src );
+}
+
+void sse2_rcpps( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, X86_TWOB, 0x53);
+ emit_modrm( p, dst, src );
+}
+
+void sse2_rcpss( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_3ub(p, 0xF3, X86_TWOB, 0x53);
+ emit_modrm( p, dst, src );
+}
+
+void sse2_movd( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ emit_2ub(p, 0x66, X86_TWOB);
+ emit_op_modrm( p, 0x6e, 0x7e, dst, src );
+}
+
+
+
+
+/***********************************************************************
+ * x87 instructions
+ */
+void x87_fist( struct x86_function *p, struct x86_reg dst )
+{
+ emit_1ub(p, 0xdb);
+ emit_modrm_noreg(p, 2, dst);
+}
+
+void x87_fistp( struct x86_function *p, struct x86_reg dst )
+{
+ emit_1ub(p, 0xdb);
+ emit_modrm_noreg(p, 3, dst);
+}
+
+void x87_fild( struct x86_function *p, struct x86_reg arg )
+{
+ emit_1ub(p, 0xdf);
+ emit_modrm_noreg(p, 0, arg);
+}
+
+void x87_fldz( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xee);
+}
+
+
+void x87_fldcw( struct x86_function *p, struct x86_reg arg )
+{
+ assert(arg.file == file_REG32);
+ assert(arg.mod != mod_REG);
+ emit_1ub(p, 0xd9);
+ emit_modrm_noreg(p, 5, arg);
+}
+
+void x87_fld1( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xe8);
+}
+
+void x87_fldl2e( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xea);
+}
+
+void x87_fldln2( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xed);
+}
+
+void x87_fwait( struct x86_function *p )
+{
+ emit_1ub(p, 0x9b);
+}
+
+void x87_fnclex( struct x86_function *p )
+{
+ emit_2ub(p, 0xdb, 0xe2);
+}
+
+void x87_fclex( struct x86_function *p )
+{
+ x87_fwait(p);
+ x87_fnclex(p);
+}
+
+
+static void x87_arith_op( struct x86_function *p, struct x86_reg dst, struct x86_reg arg,
+ unsigned char dst0ub0,
+ unsigned char dst0ub1,
+ unsigned char arg0ub0,
+ unsigned char arg0ub1,
+ unsigned char argmem_noreg)
+{
+ assert(dst.file == file_x87);
+
+ if (arg.file == file_x87) {
+ if (dst.idx == 0)
+ emit_2ub(p, dst0ub0, dst0ub1+arg.idx);
+ else if (arg.idx == 0)
+ emit_2ub(p, arg0ub0, arg0ub1+arg.idx);
+ else
+ assert(0);
+ }
+ else if (dst.idx == 0) {
+ assert(arg.file == file_REG32);
+ emit_1ub(p, 0xd8);
+ emit_modrm_noreg(p, argmem_noreg, arg);
+ }
+ else
+ assert(0);
+}
+
+void x87_fmul( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
+{
+ x87_arith_op(p, dst, arg,
+ 0xd8, 0xc8,
+ 0xdc, 0xc8,
+ 4);
+}
+
+void x87_fsub( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
+{
+ x87_arith_op(p, dst, arg,
+ 0xd8, 0xe0,
+ 0xdc, 0xe8,
+ 4);
+}
+
+void x87_fsubr( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
+{
+ x87_arith_op(p, dst, arg,
+ 0xd8, 0xe8,
+ 0xdc, 0xe0,
+ 5);
+}
+
+void x87_fadd( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
+{
+ x87_arith_op(p, dst, arg,
+ 0xd8, 0xc0,
+ 0xdc, 0xc0,
+ 0);
+}
+
+void x87_fdiv( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
+{
+ x87_arith_op(p, dst, arg,
+ 0xd8, 0xf0,
+ 0xdc, 0xf8,
+ 6);
+}
+
+void x87_fdivr( struct x86_function *p, struct x86_reg dst, struct x86_reg arg )
+{
+ x87_arith_op(p, dst, arg,
+ 0xd8, 0xf8,
+ 0xdc, 0xf0,
+ 7);
+}
+
+void x87_fmulp( struct x86_function *p, struct x86_reg dst )
+{
+ assert(dst.file == file_x87);
+ assert(dst.idx >= 1);
+ emit_2ub(p, 0xde, 0xc8+dst.idx);
+}
+
+void x87_fsubp( struct x86_function *p, struct x86_reg dst )
+{
+ assert(dst.file == file_x87);
+ assert(dst.idx >= 1);
+ emit_2ub(p, 0xde, 0xe8+dst.idx);
+}
+
+void x87_fsubrp( struct x86_function *p, struct x86_reg dst )
+{
+ assert(dst.file == file_x87);
+ assert(dst.idx >= 1);
+ emit_2ub(p, 0xde, 0xe0+dst.idx);
+}
+
+void x87_faddp( struct x86_function *p, struct x86_reg dst )
+{
+ assert(dst.file == file_x87);
+ assert(dst.idx >= 1);
+ emit_2ub(p, 0xde, 0xc0+dst.idx);
+}
+
+void x87_fdivp( struct x86_function *p, struct x86_reg dst )
+{
+ assert(dst.file == file_x87);
+ assert(dst.idx >= 1);
+ emit_2ub(p, 0xde, 0xf8+dst.idx);
+}
+
+void x87_fdivrp( struct x86_function *p, struct x86_reg dst )
+{
+ assert(dst.file == file_x87);
+ assert(dst.idx >= 1);
+ emit_2ub(p, 0xde, 0xf0+dst.idx);
+}
+
+void x87_fucom( struct x86_function *p, struct x86_reg arg )
+{
+ assert(arg.file == file_x87);
+ emit_2ub(p, 0xdd, 0xe0+arg.idx);
+}
+
+void x87_fucomp( struct x86_function *p, struct x86_reg arg )
+{
+ assert(arg.file == file_x87);
+ emit_2ub(p, 0xdd, 0xe8+arg.idx);
+}
+
+void x87_fucompp( struct x86_function *p )
+{
+ emit_2ub(p, 0xda, 0xe9);
+}
+
+void x87_fxch( struct x86_function *p, struct x86_reg arg )
+{
+ assert(arg.file == file_x87);
+ emit_2ub(p, 0xd9, 0xc8+arg.idx);
+}
+
+void x87_fabs( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xe1);
+}
+
+void x87_fchs( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xe0);
+}
+
+void x87_fcos( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xff);
+}
+
+
+void x87_fprndint( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xfc);
+}
+
+void x87_fscale( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xfd);
+}
+
+void x87_fsin( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xfe);
+}
+
+void x87_fsincos( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xfb);
+}
+
+void x87_fsqrt( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xfa);
+}
+
+void x87_fxtract( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xf4);
+}
+
+/* st0 = (2^st0)-1
+ *
+ * Restrictions: -1.0 <= st0 <= 1.0
+ */
+void x87_f2xm1( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xf0);
+}
+
+/* st1 = st1 * log2(st0);
+ * pop_stack;
+ */
+void x87_fyl2x( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xf1);
+}
+
+/* st1 = st1 * log2(st0 + 1.0);
+ * pop_stack;
+ *
+ * A fast operation, with restrictions: -.29 < st0 < .29
+ */
+void x87_fyl2xp1( struct x86_function *p )
+{
+ emit_2ub(p, 0xd9, 0xf9);
+}
+
+
+void x87_fld( struct x86_function *p, struct x86_reg arg )
+{
+ if (arg.file == file_x87)
+ emit_2ub(p, 0xd9, 0xc0 + arg.idx);
+ else {
+ emit_1ub(p, 0xd9);
+ emit_modrm_noreg(p, 0, arg);
+ }
+}
+
+void x87_fst( struct x86_function *p, struct x86_reg dst )
+{
+ if (dst.file == file_x87)
+ emit_2ub(p, 0xdd, 0xd0 + dst.idx);
+ else {
+ emit_1ub(p, 0xd9);
+ emit_modrm_noreg(p, 2, dst);
+ }
+}
+
+void x87_fstp( struct x86_function *p, struct x86_reg dst )
+{
+ if (dst.file == file_x87)
+ emit_2ub(p, 0xdd, 0xd8 + dst.idx);
+ else {
+ emit_1ub(p, 0xd9);
+ emit_modrm_noreg(p, 3, dst);
+ }
+}
+
+void x87_fcom( struct x86_function *p, struct x86_reg dst )
+{
+ if (dst.file == file_x87)
+ emit_2ub(p, 0xd8, 0xd0 + dst.idx);
+ else {
+ emit_1ub(p, 0xd8);
+ emit_modrm_noreg(p, 2, dst);
+ }
+}
+
+void x87_fcomp( struct x86_function *p, struct x86_reg dst )
+{
+ if (dst.file == file_x87)
+ emit_2ub(p, 0xd8, 0xd8 + dst.idx);
+ else {
+ emit_1ub(p, 0xd8);
+ emit_modrm_noreg(p, 3, dst);
+ }
+}
+
+
+void x87_fnstsw( struct x86_function *p, struct x86_reg dst )
+{
+ assert(dst.file == file_REG32);
+
+ if (dst.idx == reg_AX &&
+ dst.mod == mod_REG)
+ emit_2ub(p, 0xdf, 0xe0);
+ else {
+ emit_1ub(p, 0xdd);
+ emit_modrm_noreg(p, 7, dst);
+ }
+}
+
+
+
+
+/***********************************************************************
+ * MMX instructions
+ */
+
+void mmx_emms( struct x86_function *p )
+{
+ assert(p->need_emms);
+ emit_2ub(p, 0x0f, 0x77);
+ p->need_emms = 0;
+}
+
+void mmx_packssdw( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ assert(dst.file == file_MMX &&
+ (src.file == file_MMX || src.mod != mod_REG));
+
+ p->need_emms = 1;
+
+ emit_2ub(p, X86_TWOB, 0x6b);
+ emit_modrm( p, dst, src );
+}
+
+void mmx_packuswb( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ assert(dst.file == file_MMX &&
+ (src.file == file_MMX || src.mod != mod_REG));
+
+ p->need_emms = 1;
+
+ emit_2ub(p, X86_TWOB, 0x67);
+ emit_modrm( p, dst, src );
+}
+
+void mmx_movd( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ p->need_emms = 1;
+ emit_1ub(p, X86_TWOB);
+ emit_op_modrm( p, 0x6e, 0x7e, dst, src );
+}
+
+void mmx_movq( struct x86_function *p,
+ struct x86_reg dst,
+ struct x86_reg src )
+{
+ p->need_emms = 1;
+ emit_1ub(p, X86_TWOB);
+ emit_op_modrm( p, 0x6f, 0x7f, dst, src );
+}
+
+
+/***********************************************************************
+ * Helper functions
+ */
+
+
+/* Retreive a reference to one of the function arguments, taking into
+ * account any push/pop activity:
+ */
+struct x86_reg x86_fn_arg( struct x86_function *p,
+ unsigned arg )
+{
+ return x86_make_disp(x86_make_reg(file_REG32, reg_SP),
+ p->stack_offset + arg * 4); /* ??? */
+}
+
+
+void x86_init_func( struct x86_function *p )
+{
+ p->size = 0;
+ p->store = NULL;
+ p->csr = p->store;
+}
+
+int x86_init_func_size( struct x86_function *p, unsigned code_size )
+{
+ p->size = code_size;
+ p->store = _mesa_exec_malloc(code_size);
+ p->csr = p->store;
+ return p->store != NULL;
+}
+
+void x86_release_func( struct x86_function *p )
+{
+ _mesa_exec_free(p->store);
+ p->store = NULL;
+ p->csr = NULL;
+ p->size = 0;
+}
+
+
+void (*x86_get_func( struct x86_function *p ))(void)
+{
+ if (DISASSEM && p->store)
+ printf("disassemble %p %p\n", p->store, p->csr);
+ return (void (*)(void)) (unsigned long) p->store;
+}
+
+#else
+
+void x86sse_dummy( void )
+{
+}
+
+#endif
+
+#else /* USE_X86_ASM */
+
+int x86sse_c_dummy_var; /* silence warning */
+
+#endif /* USE_X86_ASM */
diff --git a/mesalib/src/mesa/x86/rtasm/x86sse.h b/mesalib/src/mesa/x86/rtasm/x86sse.h
index 399a694bc..f6282f5bd 100644
--- a/mesalib/src/mesa/x86/rtasm/x86sse.h
+++ b/mesalib/src/mesa/x86/rtasm/x86sse.h
@@ -1,256 +1,256 @@
-
-#ifndef _X86SSE_H_
-#define _X86SSE_H_
-
-#if defined(__i386__) || defined(__386__)
-
-/* It is up to the caller to ensure that instructions issued are
- * suitable for the host cpu. There are no checks made in this module
- * for mmx/sse/sse2 support on the cpu.
- */
-struct x86_reg {
- unsigned file:3;
- unsigned idx:3;
- unsigned mod:2; /* mod_REG if this is just a register */
- int disp:24; /* only +/- 23bits of offset - should be enough... */
-};
-
-struct x86_function {
- unsigned size;
- unsigned char *store;
- unsigned char *csr;
- unsigned stack_offset;
- int need_emms;
- const char *fn;
-};
-
-enum x86_reg_file {
- file_REG32,
- file_MMX,
- file_XMM,
- file_x87
-};
-
-/* Values for mod field of modr/m byte
- */
-enum x86_reg_mod {
- mod_INDIRECT,
- mod_DISP8,
- mod_DISP32,
- mod_REG
-};
-
-enum x86_reg_name {
- reg_AX,
- reg_CX,
- reg_DX,
- reg_BX,
- reg_SP,
- reg_BP,
- reg_SI,
- reg_DI
-};
-
-
-enum x86_cc {
- cc_O, /* overflow */
- cc_NO, /* not overflow */
- cc_NAE, /* not above or equal / carry */
- cc_AE, /* above or equal / not carry */
- cc_E, /* equal / zero */
- cc_NE /* not equal / not zero */
-};
-
-enum sse_cc {
- cc_Equal,
- cc_LessThan,
- cc_LessThanEqual,
- cc_Unordered,
- cc_NotEqual,
- cc_NotLessThan,
- cc_NotLessThanEqual,
- cc_Ordered
-};
-
-#define cc_Z cc_E
-#define cc_NZ cc_NE
-
-/* Begin/end/retreive function creation:
- */
-
-
-void x86_init_func( struct x86_function *p );
-int x86_init_func_size( struct x86_function *p, unsigned code_size );
-void x86_release_func( struct x86_function *p );
-void (*x86_get_func( struct x86_function *p ))( void );
-
-
-
-/* Create and manipulate registers and regmem values:
- */
-struct x86_reg x86_make_reg( enum x86_reg_file file,
- enum x86_reg_name idx );
-
-struct x86_reg x86_make_disp( struct x86_reg reg,
- int disp );
-
-struct x86_reg x86_deref( struct x86_reg reg );
-
-struct x86_reg x86_get_base_reg( struct x86_reg reg );
-
-
-/* Labels, jumps and fixup:
- */
-unsigned char *x86_get_label( struct x86_function *p );
-
-void x86_jcc( struct x86_function *p,
- enum x86_cc cc,
- unsigned char *label );
-
-unsigned char *x86_jcc_forward( struct x86_function *p,
- enum x86_cc cc );
-
-unsigned char *x86_jmp_forward( struct x86_function *p);
-
-unsigned char *x86_call_forward( struct x86_function *p);
-
-void x86_fixup_fwd_jump( struct x86_function *p,
- unsigned char *fixup );
-
-void x86_jmp( struct x86_function *p, unsigned char *label );
-
-/* void x86_call( struct x86_function *p, void (*label)() ); */
-void x86_call( struct x86_function *p, struct x86_reg reg);
-
-/* michal:
- * Temporary. As I need immediate operands, and dont want to mess with the codegen,
- * I load the immediate into general purpose register and use it.
- */
-void x86_mov_reg_imm( struct x86_function *p, struct x86_reg dst, int imm );
-
-
-/* Macro for sse_shufps() and sse2_pshufd():
- */
-#define SHUF(_x,_y,_z,_w) (((_x)<<0) | ((_y)<<2) | ((_z)<<4) | ((_w)<<6))
-#define SHUF_NOOP RSW(0,1,2,3)
-#define GET_SHUF(swz, idx) (((swz) >> ((idx)*2)) & 0x3)
-
-void mmx_emms( struct x86_function *p );
-void mmx_movd( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void mmx_movq( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void mmx_packssdw( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void mmx_packuswb( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-
-void sse2_cvtps2dq( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse2_cvttps2dq( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse2_movd( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse2_packssdw( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse2_packsswb( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse2_packuswb( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse2_pshufd( struct x86_function *p, struct x86_reg dest, struct x86_reg arg0,
- unsigned char shuf );
-void sse2_rcpps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse2_rcpss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-
-void sse_addps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_addss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_cvtps2pi( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_divss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_andnps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_andps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_cmpps( struct x86_function *p, struct x86_reg dst, struct x86_reg src,
- unsigned char cc );
-void sse_maxps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_maxss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_minps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_movaps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_movhlps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_movhps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_movlhps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_movlps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_movss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_movups( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_mulps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_mulss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_orps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_xorps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_subps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_rsqrtps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_rsqrtss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void sse_shufps( struct x86_function *p, struct x86_reg dest, struct x86_reg arg0,
- unsigned char shuf );
-void sse_pmovmskb( struct x86_function *p, struct x86_reg dest, struct x86_reg src );
-
-void x86_add( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void x86_and( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void x86_cmp( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void x86_dec( struct x86_function *p, struct x86_reg reg );
-void x86_inc( struct x86_function *p, struct x86_reg reg );
-void x86_lea( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void x86_mov( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void x86_mul( struct x86_function *p, struct x86_reg src );
-void x86_or( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void x86_pop( struct x86_function *p, struct x86_reg reg );
-void x86_push( struct x86_function *p, struct x86_reg reg );
-void x86_ret( struct x86_function *p );
-void x86_sub( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void x86_test( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void x86_xor( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
-void x86_sahf( struct x86_function *p );
-
-void x87_f2xm1( struct x86_function *p );
-void x87_fabs( struct x86_function *p );
-void x87_fadd( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
-void x87_faddp( struct x86_function *p, struct x86_reg dst );
-void x87_fchs( struct x86_function *p );
-void x87_fclex( struct x86_function *p );
-void x87_fcom( struct x86_function *p, struct x86_reg dst );
-void x87_fcomp( struct x86_function *p, struct x86_reg dst );
-void x87_fcos( struct x86_function *p );
-void x87_fdiv( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
-void x87_fdivp( struct x86_function *p, struct x86_reg dst );
-void x87_fdivr( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
-void x87_fdivrp( struct x86_function *p, struct x86_reg dst );
-void x87_fild( struct x86_function *p, struct x86_reg arg );
-void x87_fist( struct x86_function *p, struct x86_reg dst );
-void x87_fistp( struct x86_function *p, struct x86_reg dst );
-void x87_fld( struct x86_function *p, struct x86_reg arg );
-void x87_fld1( struct x86_function *p );
-void x87_fldcw( struct x86_function *p, struct x86_reg arg );
-void x87_fldl2e( struct x86_function *p );
-void x87_fldln2( struct x86_function *p );
-void x87_fldz( struct x86_function *p );
-void x87_fmul( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
-void x87_fmulp( struct x86_function *p, struct x86_reg dst );
-void x87_fnclex( struct x86_function *p );
-void x87_fprndint( struct x86_function *p );
-void x87_fscale( struct x86_function *p );
-void x87_fsin( struct x86_function *p );
-void x87_fsincos( struct x86_function *p );
-void x87_fsqrt( struct x86_function *p );
-void x87_fst( struct x86_function *p, struct x86_reg dst );
-void x87_fstp( struct x86_function *p, struct x86_reg dst );
-void x87_fsub( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
-void x87_fsubp( struct x86_function *p, struct x86_reg dst );
-void x87_fsubr( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
-void x87_fsubrp( struct x86_function *p, struct x86_reg dst );
-void x87_fxch( struct x86_function *p, struct x86_reg dst );
-void x87_fxtract( struct x86_function *p );
-void x87_fyl2x( struct x86_function *p );
-void x87_fyl2xp1( struct x86_function *p );
-void x87_fwait( struct x86_function *p );
-void x87_fnstsw( struct x86_function *p, struct x86_reg dst );
-void x87_fucompp( struct x86_function *p );
-void x87_fucomp( struct x86_function *p, struct x86_reg arg );
-void x87_fucom( struct x86_function *p, struct x86_reg arg );
-
-
-
-/* Retreive a reference to one of the function arguments, taking into
- * account any push/pop activity. Note - doesn't track explict
- * manipulation of ESP by other instructions.
- */
-struct x86_reg x86_fn_arg( struct x86_function *p, unsigned arg );
-
-#endif
-#endif
+
+#ifndef _X86SSE_H_
+#define _X86SSE_H_
+
+#if defined(__i386__) || defined(__386__)
+
+/* It is up to the caller to ensure that instructions issued are
+ * suitable for the host cpu. There are no checks made in this module
+ * for mmx/sse/sse2 support on the cpu.
+ */
+struct x86_reg {
+ unsigned file:3;
+ unsigned idx:3;
+ unsigned mod:2; /* mod_REG if this is just a register */
+ int disp:24; /* only +/- 23bits of offset - should be enough... */
+};
+
+struct x86_function {
+ unsigned size;
+ unsigned char *store;
+ unsigned char *csr;
+ unsigned stack_offset;
+ int need_emms;
+ const char *fn;
+};
+
+enum x86_reg_file {
+ file_REG32,
+ file_MMX,
+ file_XMM,
+ file_x87
+};
+
+/* Values for mod field of modr/m byte
+ */
+enum x86_reg_mod {
+ mod_INDIRECT,
+ mod_DISP8,
+ mod_DISP32,
+ mod_REG
+};
+
+enum x86_reg_name {
+ reg_AX,
+ reg_CX,
+ reg_DX,
+ reg_BX,
+ reg_SP,
+ reg_BP,
+ reg_SI,
+ reg_DI
+};
+
+
+enum x86_cc {
+ cc_O, /* overflow */
+ cc_NO, /* not overflow */
+ cc_NAE, /* not above or equal / carry */
+ cc_AE, /* above or equal / not carry */
+ cc_E, /* equal / zero */
+ cc_NE /* not equal / not zero */
+};
+
+enum sse_cc {
+ cc_Equal,
+ cc_LessThan,
+ cc_LessThanEqual,
+ cc_Unordered,
+ cc_NotEqual,
+ cc_NotLessThan,
+ cc_NotLessThanEqual,
+ cc_Ordered
+};
+
+#define cc_Z cc_E
+#define cc_NZ cc_NE
+
+/* Begin/end/retreive function creation:
+ */
+
+
+void x86_init_func( struct x86_function *p );
+int x86_init_func_size( struct x86_function *p, unsigned code_size );
+void x86_release_func( struct x86_function *p );
+void (*x86_get_func( struct x86_function *p ))( void );
+
+
+
+/* Create and manipulate registers and regmem values:
+ */
+struct x86_reg x86_make_reg( enum x86_reg_file file,
+ enum x86_reg_name idx );
+
+struct x86_reg x86_make_disp( struct x86_reg reg,
+ int disp );
+
+struct x86_reg x86_deref( struct x86_reg reg );
+
+struct x86_reg x86_get_base_reg( struct x86_reg reg );
+
+
+/* Labels, jumps and fixup:
+ */
+unsigned char *x86_get_label( struct x86_function *p );
+
+void x86_jcc( struct x86_function *p,
+ enum x86_cc cc,
+ unsigned char *label );
+
+unsigned char *x86_jcc_forward( struct x86_function *p,
+ enum x86_cc cc );
+
+unsigned char *x86_jmp_forward( struct x86_function *p);
+
+unsigned char *x86_call_forward( struct x86_function *p);
+
+void x86_fixup_fwd_jump( struct x86_function *p,
+ unsigned char *fixup );
+
+void x86_jmp( struct x86_function *p, unsigned char *label );
+
+/* void x86_call( struct x86_function *p, void (*label)() ); */
+void x86_call( struct x86_function *p, struct x86_reg reg);
+
+/* michal:
+ * Temporary. As I need immediate operands, and dont want to mess with the codegen,
+ * I load the immediate into general purpose register and use it.
+ */
+void x86_mov_reg_imm( struct x86_function *p, struct x86_reg dst, int imm );
+
+
+/* Macro for sse_shufps() and sse2_pshufd():
+ */
+#define SHUF(_x,_y,_z,_w) (((_x)<<0) | ((_y)<<2) | ((_z)<<4) | ((_w)<<6))
+#define SHUF_NOOP RSW(0,1,2,3)
+#define GET_SHUF(swz, idx) (((swz) >> ((idx)*2)) & 0x3)
+
+void mmx_emms( struct x86_function *p );
+void mmx_movd( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void mmx_movq( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void mmx_packssdw( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void mmx_packuswb( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+
+void sse2_cvtps2dq( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse2_cvttps2dq( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse2_movd( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse2_packssdw( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse2_packsswb( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse2_packuswb( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse2_pshufd( struct x86_function *p, struct x86_reg dest, struct x86_reg arg0,
+ unsigned char shuf );
+void sse2_rcpps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse2_rcpss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+
+void sse_addps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_addss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_cvtps2pi( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_divss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_andnps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_andps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_cmpps( struct x86_function *p, struct x86_reg dst, struct x86_reg src,
+ unsigned char cc );
+void sse_maxps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_maxss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_minps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_movaps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_movhlps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_movhps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_movlhps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_movlps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_movss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_movups( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_mulps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_mulss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_orps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_xorps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_subps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_rsqrtps( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_rsqrtss( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void sse_shufps( struct x86_function *p, struct x86_reg dest, struct x86_reg arg0,
+ unsigned char shuf );
+void sse_pmovmskb( struct x86_function *p, struct x86_reg dest, struct x86_reg src );
+
+void x86_add( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void x86_and( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void x86_cmp( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void x86_dec( struct x86_function *p, struct x86_reg reg );
+void x86_inc( struct x86_function *p, struct x86_reg reg );
+void x86_lea( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void x86_mov( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void x86_mul( struct x86_function *p, struct x86_reg src );
+void x86_or( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void x86_pop( struct x86_function *p, struct x86_reg reg );
+void x86_push( struct x86_function *p, struct x86_reg reg );
+void x86_ret( struct x86_function *p );
+void x86_sub( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void x86_test( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void x86_xor( struct x86_function *p, struct x86_reg dst, struct x86_reg src );
+void x86_sahf( struct x86_function *p );
+
+void x87_f2xm1( struct x86_function *p );
+void x87_fabs( struct x86_function *p );
+void x87_fadd( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
+void x87_faddp( struct x86_function *p, struct x86_reg dst );
+void x87_fchs( struct x86_function *p );
+void x87_fclex( struct x86_function *p );
+void x87_fcom( struct x86_function *p, struct x86_reg dst );
+void x87_fcomp( struct x86_function *p, struct x86_reg dst );
+void x87_fcos( struct x86_function *p );
+void x87_fdiv( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
+void x87_fdivp( struct x86_function *p, struct x86_reg dst );
+void x87_fdivr( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
+void x87_fdivrp( struct x86_function *p, struct x86_reg dst );
+void x87_fild( struct x86_function *p, struct x86_reg arg );
+void x87_fist( struct x86_function *p, struct x86_reg dst );
+void x87_fistp( struct x86_function *p, struct x86_reg dst );
+void x87_fld( struct x86_function *p, struct x86_reg arg );
+void x87_fld1( struct x86_function *p );
+void x87_fldcw( struct x86_function *p, struct x86_reg arg );
+void x87_fldl2e( struct x86_function *p );
+void x87_fldln2( struct x86_function *p );
+void x87_fldz( struct x86_function *p );
+void x87_fmul( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
+void x87_fmulp( struct x86_function *p, struct x86_reg dst );
+void x87_fnclex( struct x86_function *p );
+void x87_fprndint( struct x86_function *p );
+void x87_fscale( struct x86_function *p );
+void x87_fsin( struct x86_function *p );
+void x87_fsincos( struct x86_function *p );
+void x87_fsqrt( struct x86_function *p );
+void x87_fst( struct x86_function *p, struct x86_reg dst );
+void x87_fstp( struct x86_function *p, struct x86_reg dst );
+void x87_fsub( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
+void x87_fsubp( struct x86_function *p, struct x86_reg dst );
+void x87_fsubr( struct x86_function *p, struct x86_reg dst, struct x86_reg arg );
+void x87_fsubrp( struct x86_function *p, struct x86_reg dst );
+void x87_fxch( struct x86_function *p, struct x86_reg dst );
+void x87_fxtract( struct x86_function *p );
+void x87_fyl2x( struct x86_function *p );
+void x87_fyl2xp1( struct x86_function *p );
+void x87_fwait( struct x86_function *p );
+void x87_fnstsw( struct x86_function *p, struct x86_reg dst );
+void x87_fucompp( struct x86_function *p );
+void x87_fucomp( struct x86_function *p, struct x86_reg arg );
+void x87_fucom( struct x86_function *p, struct x86_reg arg );
+
+
+
+/* Retreive a reference to one of the function arguments, taking into
+ * account any push/pop activity. Note - doesn't track explict
+ * manipulation of ESP by other instructions.
+ */
+struct x86_reg x86_fn_arg( struct x86_function *p, unsigned arg );
+
+#endif
+#endif
diff --git a/mesalib/src/mesa/x86/sse.c b/mesalib/src/mesa/x86/sse.c
index b249811c7..aef15b531 100644
--- a/mesalib/src/mesa/x86/sse.c
+++ b/mesalib/src/mesa/x86/sse.c
@@ -1,123 +1,123 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.0
- *
- * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * PentiumIII-SIMD (SSE) optimizations contributed by
- * Andre Werthmann <wertmann@cs.uni-potsdam.de>
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "math/m_xform.h"
-#include "tnl/t_context.h"
-
-#include "sse.h"
-#include "x86_xform.h"
-
-#ifdef DEBUG_MATH
-#include "math/m_debug.h"
-#endif
-
-
-#ifdef USE_SSE_ASM
-DECLARE_XFORM_GROUP( sse, 2 )
-DECLARE_XFORM_GROUP( sse, 3 )
-
-#if 1
-/* Some functions are not written in SSE-assembly, because the fpu ones are faster */
-extern void _ASMAPI _mesa_sse_transform_normals_no_rot( NORM_ARGS );
-extern void _ASMAPI _mesa_sse_transform_rescale_normals( NORM_ARGS );
-extern void _ASMAPI _mesa_sse_transform_rescale_normals_no_rot( NORM_ARGS );
-
-extern void _ASMAPI _mesa_sse_transform_points4_general( XFORM_ARGS );
-extern void _ASMAPI _mesa_sse_transform_points4_3d( XFORM_ARGS );
-/* XXX this function segfaults, see below */
-extern void _ASMAPI _mesa_sse_transform_points4_identity( XFORM_ARGS );
-/* XXX this one works, see below */
-extern void _ASMAPI _mesa_x86_transform_points4_identity( XFORM_ARGS );
-#else
-DECLARE_NORM_GROUP( sse )
-#endif
-
-
-extern void _ASMAPI
-_mesa_v16_sse_general_xform( GLfloat *first_vert,
- const GLfloat *m,
- const GLfloat *src,
- GLuint src_stride,
- GLuint count );
-
-extern void _ASMAPI
-_mesa_sse_project_vertices( GLfloat *first,
- GLfloat *last,
- const GLfloat *m,
- GLuint stride );
-
-extern void _ASMAPI
-_mesa_sse_project_clipped_vertices( GLfloat *first,
- GLfloat *last,
- const GLfloat *m,
- GLuint stride,
- const GLubyte *clipmask );
-#endif
-
-
-void _mesa_init_sse_transform_asm( void )
-{
-#ifdef USE_SSE_ASM
- ASSIGN_XFORM_GROUP( sse, 2 );
- ASSIGN_XFORM_GROUP( sse, 3 );
-
-#if 1
- /* TODO: Finish these off.
- */
- _mesa_transform_tab[4][MATRIX_GENERAL] =
- _mesa_sse_transform_points4_general;
- _mesa_transform_tab[4][MATRIX_3D] =
- _mesa_sse_transform_points4_3d;
- /* XXX NOTE: _mesa_sse_transform_points4_identity segfaults with the
- conformance tests, so use the x86 version.
- */
- _mesa_transform_tab[4][MATRIX_IDENTITY] =
- _mesa_x86_transform_points4_identity;/*_mesa_sse_transform_points4_identity;*/
-
- _mesa_normal_tab[NORM_TRANSFORM_NO_ROT] =
- _mesa_sse_transform_normals_no_rot;
- _mesa_normal_tab[NORM_TRANSFORM | NORM_RESCALE] =
- _mesa_sse_transform_rescale_normals;
- _mesa_normal_tab[NORM_TRANSFORM_NO_ROT | NORM_RESCALE] =
- _mesa_sse_transform_rescale_normals_no_rot;
-#else
- ASSIGN_XFORM_GROUP( sse, 4 );
-
- ASSIGN_NORM_GROUP( sse );
-#endif
-
-#ifdef DEBUG_MATH
- _math_test_all_transform_functions( "SSE" );
- _math_test_all_normal_transform_functions( "SSE" );
-#endif
-#endif
-}
-
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.0
+ *
+ * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * PentiumIII-SIMD (SSE) optimizations contributed by
+ * Andre Werthmann <wertmann@cs.uni-potsdam.de>
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "math/m_xform.h"
+#include "tnl/t_context.h"
+
+#include "sse.h"
+#include "x86_xform.h"
+
+#ifdef DEBUG_MATH
+#include "math/m_debug.h"
+#endif
+
+
+#ifdef USE_SSE_ASM
+DECLARE_XFORM_GROUP( sse, 2 )
+DECLARE_XFORM_GROUP( sse, 3 )
+
+#if 1
+/* Some functions are not written in SSE-assembly, because the fpu ones are faster */
+extern void _ASMAPI _mesa_sse_transform_normals_no_rot( NORM_ARGS );
+extern void _ASMAPI _mesa_sse_transform_rescale_normals( NORM_ARGS );
+extern void _ASMAPI _mesa_sse_transform_rescale_normals_no_rot( NORM_ARGS );
+
+extern void _ASMAPI _mesa_sse_transform_points4_general( XFORM_ARGS );
+extern void _ASMAPI _mesa_sse_transform_points4_3d( XFORM_ARGS );
+/* XXX this function segfaults, see below */
+extern void _ASMAPI _mesa_sse_transform_points4_identity( XFORM_ARGS );
+/* XXX this one works, see below */
+extern void _ASMAPI _mesa_x86_transform_points4_identity( XFORM_ARGS );
+#else
+DECLARE_NORM_GROUP( sse )
+#endif
+
+
+extern void _ASMAPI
+_mesa_v16_sse_general_xform( GLfloat *first_vert,
+ const GLfloat *m,
+ const GLfloat *src,
+ GLuint src_stride,
+ GLuint count );
+
+extern void _ASMAPI
+_mesa_sse_project_vertices( GLfloat *first,
+ GLfloat *last,
+ const GLfloat *m,
+ GLuint stride );
+
+extern void _ASMAPI
+_mesa_sse_project_clipped_vertices( GLfloat *first,
+ GLfloat *last,
+ const GLfloat *m,
+ GLuint stride,
+ const GLubyte *clipmask );
+#endif
+
+
+void _mesa_init_sse_transform_asm( void )
+{
+#ifdef USE_SSE_ASM
+ ASSIGN_XFORM_GROUP( sse, 2 );
+ ASSIGN_XFORM_GROUP( sse, 3 );
+
+#if 1
+ /* TODO: Finish these off.
+ */
+ _mesa_transform_tab[4][MATRIX_GENERAL] =
+ _mesa_sse_transform_points4_general;
+ _mesa_transform_tab[4][MATRIX_3D] =
+ _mesa_sse_transform_points4_3d;
+ /* XXX NOTE: _mesa_sse_transform_points4_identity segfaults with the
+ conformance tests, so use the x86 version.
+ */
+ _mesa_transform_tab[4][MATRIX_IDENTITY] =
+ _mesa_x86_transform_points4_identity;/*_mesa_sse_transform_points4_identity;*/
+
+ _mesa_normal_tab[NORM_TRANSFORM_NO_ROT] =
+ _mesa_sse_transform_normals_no_rot;
+ _mesa_normal_tab[NORM_TRANSFORM | NORM_RESCALE] =
+ _mesa_sse_transform_rescale_normals;
+ _mesa_normal_tab[NORM_TRANSFORM_NO_ROT | NORM_RESCALE] =
+ _mesa_sse_transform_rescale_normals_no_rot;
+#else
+ ASSIGN_XFORM_GROUP( sse, 4 );
+
+ ASSIGN_NORM_GROUP( sse );
+#endif
+
+#ifdef DEBUG_MATH
+ _math_test_all_transform_functions( "SSE" );
+ _math_test_all_normal_transform_functions( "SSE" );
+#endif
+#endif
+}
+
diff --git a/mesalib/src/mesa/x86/sse.h b/mesalib/src/mesa/x86/sse.h
index d240bf38b..e92ddc139 100644
--- a/mesalib/src/mesa/x86/sse.h
+++ b/mesalib/src/mesa/x86/sse.h
@@ -1,36 +1,36 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * PentiumIII-SIMD (SSE) optimizations contributed by
- * Andre Werthmann <wertmann@cs.uni-potsdam.de>
- */
-
-#ifndef __SSE_H__
-#define __SSE_H__
-
-void _mesa_init_sse_transform_asm( void );
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * PentiumIII-SIMD (SSE) optimizations contributed by
+ * Andre Werthmann <wertmann@cs.uni-potsdam.de>
+ */
+
+#ifndef __SSE_H__
+#define __SSE_H__
+
+void _mesa_init_sse_transform_asm( void );
+
+#endif
diff --git a/mesalib/src/mesa/x86/sse_normal.S b/mesalib/src/mesa/x86/sse_normal.S
index b6d5ef965..a8c0d38c7 100644
--- a/mesalib/src/mesa/x86/sse_normal.S
+++ b/mesalib/src/mesa/x86/sse_normal.S
@@ -1,261 +1,261 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/** TODO:
- * - insert PREFETCH instructions to avoid cache-misses !
- * - some more optimizations are possible...
- * - for 40-50% more performance in the SSE-functions, the
- * data (trans-matrix, src_vert, dst_vert) needs to be 16byte aligned !
- */
-
-#ifdef USE_SSE_ASM
-#include "assyntax.h"
-#include "matypes.h"
-#include "norm_args.h"
-
- SEG_TEXT
-
-#define M(i) REGOFF(i * 4, EDX)
-#define S(i) REGOFF(i * 4, ESI)
-#define D(i) REGOFF(i * 4, EDI)
-#define STRIDE REGOFF(12, ESI)
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_sse_transform_rescale_normals_no_rot)
-HIDDEN(_mesa_sse_transform_rescale_normals_no_rot)
-GLNAME(_mesa_sse_transform_rescale_normals_no_rot):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L ( ARG_IN, ESI ) /* ptr to source GLvector3f */
- MOV_L ( ARG_DEST, EDI ) /* ptr to dest GLvector3f */
-
- MOV_L ( ARG_MAT, EDX ) /* ptr to matrix */
- MOV_L ( REGOFF(MATRIX_INV, EDX), EDX) /* matrix->inv */
-
- MOV_L ( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L ( ECX, ECX )
- JZ( LLBL(K_G3TRNNRR_finish) ) /* count was zero; go to finish */
-
- MOV_L ( STRIDE, EAX ) /* stride */
- MOV_L ( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest-count */
-
- IMUL_L( CONST(16), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVSS ( M(0), XMM1 ) /* m0 */
- MOVSS ( M(5), XMM2 ) /* m5 */
- UNPCKLPS( XMM2, XMM1 ) /* m5 | m0 */
- MOVSS ( ARG_SCALE, XMM0 ) /* scale */
- SHUFPS ( CONST(0x0), XMM0, XMM0 ) /* scale | scale */
- MULPS ( XMM0, XMM1 ) /* m5*scale | m0*scale */
- MULSS ( M(10), XMM0 ) /* m10*scale */
-
-ALIGNTEXT32
-LLBL(K_G3TRNNRR_top):
- MOVLPS ( S(0), XMM2 ) /* uy | ux */
- MULPS ( XMM1, XMM2 ) /* uy*m5*scale | ux*m0*scale */
- MOVLPS ( XMM2, D(0) ) /* ->D(1) | D(0) */
-
- MOVSS ( S(2), XMM2 ) /* uz */
- MULSS ( XMM0, XMM2 ) /* uz*m10*scale */
- MOVSS ( XMM2, D(2) ) /* ->D(2) */
-
-LLBL(K_G3TRNNRR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_G3TRNNRR_top) )
-
-LLBL(K_G3TRNNRR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_sse_transform_rescale_normals)
-HIDDEN(_mesa_sse_transform_rescale_normals)
-GLNAME(_mesa_sse_transform_rescale_normals):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L ( ARG_IN, ESI ) /* ptr to source GLvector3f */
- MOV_L ( ARG_DEST, EDI ) /* ptr to dest GLvector3f */
-
- MOV_L ( ARG_MAT, EDX ) /* ptr to matrix */
- MOV_L ( REGOFF(MATRIX_INV, EDX), EDX) /* matrix->inv */
-
- MOV_L ( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L ( ECX, ECX )
- JZ( LLBL(K_G3TRNR_finish) ) /* count was zero; go to finish */
-
- MOV_L ( STRIDE, EAX ) /* stride */
- MOV_L ( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest-count */
-
- IMUL_L( CONST(16), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVSS ( M(0), XMM0 ) /* m0 */
- MOVSS ( M(4), XMM1 ) /* m4 */
- UNPCKLPS( XMM1, XMM0 ) /* m4 | m0 */
-
- MOVSS ( ARG_SCALE, XMM4 ) /* scale */
- SHUFPS ( CONST(0x0), XMM4, XMM4 ) /* scale | scale */
-
- MULPS ( XMM4, XMM0 ) /* m4*scale | m0*scale */
- MOVSS ( M(1), XMM1 ) /* m1 */
- MOVSS ( M(5), XMM2 ) /* m5 */
- UNPCKLPS( XMM2, XMM1 ) /* m5 | m1 */
- MULPS ( XMM4, XMM1 ) /* m5*scale | m1*scale */
- MOVSS ( M(2), XMM2 ) /* m2 */
- MOVSS ( M(6), XMM3 ) /* m6 */
- UNPCKLPS( XMM3, XMM2 ) /* m6 | m2 */
- MULPS ( XMM4, XMM2 ) /* m6*scale | m2*scale */
-
- MOVSS ( M(8), XMM6 ) /* m8 */
- MULSS ( ARG_SCALE, XMM6 ) /* m8*scale */
- MOVSS ( M(9), XMM7 ) /* m9 */
- MULSS ( ARG_SCALE, XMM7 ) /* m9*scale */
-
-ALIGNTEXT32
-LLBL(K_G3TRNR_top):
- MOVSS ( S(0), XMM3 ) /* ux */
- SHUFPS ( CONST(0x0), XMM3, XMM3 ) /* ux | ux */
- MULPS ( XMM0, XMM3 ) /* ux*m4 | ux*m0 */
- MOVSS ( S(1), XMM4 ) /* uy */
- SHUFPS ( CONST(0x0), XMM4, XMM4 ) /* uy | uy */
- MULPS ( XMM1, XMM4 ) /* uy*m5 | uy*m1 */
- MOVSS ( S(2), XMM5 ) /* uz */
- SHUFPS ( CONST(0x0), XMM5, XMM5 ) /* uz | uz */
- MULPS ( XMM2, XMM5 ) /* uz*m6 | uz*m2 */
-
- ADDPS ( XMM4, XMM3 )
- ADDPS ( XMM5, XMM3 )
- MOVLPS ( XMM3, D(0) )
-
- MOVSS ( M(10), XMM3 ) /* m10 */
- MULSS ( ARG_SCALE, XMM3 ) /* m10*scale */
- MULSS ( S(2), XMM3 ) /* m10*scale*uz */
- MOVSS ( S(1), XMM4 ) /* uy */
- MULSS ( XMM7, XMM4 ) /* uy*m9*scale */
- MOVSS ( S(0), XMM5 ) /* ux */
- MULSS ( XMM6, XMM5 ) /* ux*m8*scale */
-
- ADDSS ( XMM4, XMM3 )
- ADDSS ( XMM5, XMM3 )
- MOVSS ( XMM3, D(2) )
-
-LLBL(K_G3TRNR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_G3TRNR_top) )
-
-LLBL(K_G3TRNR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_sse_transform_normals_no_rot)
-HIDDEN(_mesa_sse_transform_normals_no_rot)
-GLNAME(_mesa_sse_transform_normals_no_rot):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L ( ARG_IN, ESI ) /* ptr to source GLvector3f */
- MOV_L ( ARG_DEST, EDI ) /* ptr to dest GLvector3f */
-
- MOV_L ( ARG_MAT, EDX ) /* ptr to matrix */
- MOV_L ( REGOFF(MATRIX_INV, EDX), EDX) /* matrix->inv */
-
- MOV_L ( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L ( ECX, ECX )
- JZ( LLBL(K_G3TNNRR_finish) ) /* count was zero; go to finish */
-
- MOV_L ( STRIDE, EAX ) /* stride */
- MOV_L ( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest-count */
-
- IMUL_L( CONST(16), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVSS( M(0), XMM0 ) /* m0 */
- MOVSS( M(5), XMM1 ) /* m5 */
- UNPCKLPS( XMM1, XMM0 ) /* m5 | m0 */
- MOVSS( M(10), XMM1 ) /* m10 */
-
-ALIGNTEXT32
-LLBL(K_G3TNNRR_top):
- MOVLPS( S(0), XMM2 ) /* uy | ux */
- MULPS( XMM0, XMM2 ) /* uy*m5 | ux*m0 */
- MOVLPS( XMM2, D(0) )
-
- MOVSS( S(2), XMM2 ) /* uz */
- MULSS( XMM1, XMM2 ) /* uz*m10 */
- MOVSS( XMM2, D(2) )
-
-LLBL(K_G3TNNRR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_G3TNNRR_top) )
-
-LLBL(K_G3TNNRR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-#endif
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/** TODO:
+ * - insert PREFETCH instructions to avoid cache-misses !
+ * - some more optimizations are possible...
+ * - for 40-50% more performance in the SSE-functions, the
+ * data (trans-matrix, src_vert, dst_vert) needs to be 16byte aligned !
+ */
+
+#ifdef USE_SSE_ASM
+#include "assyntax.h"
+#include "matypes.h"
+#include "norm_args.h"
+
+ SEG_TEXT
+
+#define M(i) REGOFF(i * 4, EDX)
+#define S(i) REGOFF(i * 4, ESI)
+#define D(i) REGOFF(i * 4, EDI)
+#define STRIDE REGOFF(12, ESI)
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_sse_transform_rescale_normals_no_rot)
+HIDDEN(_mesa_sse_transform_rescale_normals_no_rot)
+GLNAME(_mesa_sse_transform_rescale_normals_no_rot):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L ( ARG_IN, ESI ) /* ptr to source GLvector3f */
+ MOV_L ( ARG_DEST, EDI ) /* ptr to dest GLvector3f */
+
+ MOV_L ( ARG_MAT, EDX ) /* ptr to matrix */
+ MOV_L ( REGOFF(MATRIX_INV, EDX), EDX) /* matrix->inv */
+
+ MOV_L ( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L ( ECX, ECX )
+ JZ( LLBL(K_G3TRNNRR_finish) ) /* count was zero; go to finish */
+
+ MOV_L ( STRIDE, EAX ) /* stride */
+ MOV_L ( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest-count */
+
+ IMUL_L( CONST(16), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVSS ( M(0), XMM1 ) /* m0 */
+ MOVSS ( M(5), XMM2 ) /* m5 */
+ UNPCKLPS( XMM2, XMM1 ) /* m5 | m0 */
+ MOVSS ( ARG_SCALE, XMM0 ) /* scale */
+ SHUFPS ( CONST(0x0), XMM0, XMM0 ) /* scale | scale */
+ MULPS ( XMM0, XMM1 ) /* m5*scale | m0*scale */
+ MULSS ( M(10), XMM0 ) /* m10*scale */
+
+ALIGNTEXT32
+LLBL(K_G3TRNNRR_top):
+ MOVLPS ( S(0), XMM2 ) /* uy | ux */
+ MULPS ( XMM1, XMM2 ) /* uy*m5*scale | ux*m0*scale */
+ MOVLPS ( XMM2, D(0) ) /* ->D(1) | D(0) */
+
+ MOVSS ( S(2), XMM2 ) /* uz */
+ MULSS ( XMM0, XMM2 ) /* uz*m10*scale */
+ MOVSS ( XMM2, D(2) ) /* ->D(2) */
+
+LLBL(K_G3TRNNRR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_G3TRNNRR_top) )
+
+LLBL(K_G3TRNNRR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_sse_transform_rescale_normals)
+HIDDEN(_mesa_sse_transform_rescale_normals)
+GLNAME(_mesa_sse_transform_rescale_normals):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L ( ARG_IN, ESI ) /* ptr to source GLvector3f */
+ MOV_L ( ARG_DEST, EDI ) /* ptr to dest GLvector3f */
+
+ MOV_L ( ARG_MAT, EDX ) /* ptr to matrix */
+ MOV_L ( REGOFF(MATRIX_INV, EDX), EDX) /* matrix->inv */
+
+ MOV_L ( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L ( ECX, ECX )
+ JZ( LLBL(K_G3TRNR_finish) ) /* count was zero; go to finish */
+
+ MOV_L ( STRIDE, EAX ) /* stride */
+ MOV_L ( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest-count */
+
+ IMUL_L( CONST(16), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVSS ( M(0), XMM0 ) /* m0 */
+ MOVSS ( M(4), XMM1 ) /* m4 */
+ UNPCKLPS( XMM1, XMM0 ) /* m4 | m0 */
+
+ MOVSS ( ARG_SCALE, XMM4 ) /* scale */
+ SHUFPS ( CONST(0x0), XMM4, XMM4 ) /* scale | scale */
+
+ MULPS ( XMM4, XMM0 ) /* m4*scale | m0*scale */
+ MOVSS ( M(1), XMM1 ) /* m1 */
+ MOVSS ( M(5), XMM2 ) /* m5 */
+ UNPCKLPS( XMM2, XMM1 ) /* m5 | m1 */
+ MULPS ( XMM4, XMM1 ) /* m5*scale | m1*scale */
+ MOVSS ( M(2), XMM2 ) /* m2 */
+ MOVSS ( M(6), XMM3 ) /* m6 */
+ UNPCKLPS( XMM3, XMM2 ) /* m6 | m2 */
+ MULPS ( XMM4, XMM2 ) /* m6*scale | m2*scale */
+
+ MOVSS ( M(8), XMM6 ) /* m8 */
+ MULSS ( ARG_SCALE, XMM6 ) /* m8*scale */
+ MOVSS ( M(9), XMM7 ) /* m9 */
+ MULSS ( ARG_SCALE, XMM7 ) /* m9*scale */
+
+ALIGNTEXT32
+LLBL(K_G3TRNR_top):
+ MOVSS ( S(0), XMM3 ) /* ux */
+ SHUFPS ( CONST(0x0), XMM3, XMM3 ) /* ux | ux */
+ MULPS ( XMM0, XMM3 ) /* ux*m4 | ux*m0 */
+ MOVSS ( S(1), XMM4 ) /* uy */
+ SHUFPS ( CONST(0x0), XMM4, XMM4 ) /* uy | uy */
+ MULPS ( XMM1, XMM4 ) /* uy*m5 | uy*m1 */
+ MOVSS ( S(2), XMM5 ) /* uz */
+ SHUFPS ( CONST(0x0), XMM5, XMM5 ) /* uz | uz */
+ MULPS ( XMM2, XMM5 ) /* uz*m6 | uz*m2 */
+
+ ADDPS ( XMM4, XMM3 )
+ ADDPS ( XMM5, XMM3 )
+ MOVLPS ( XMM3, D(0) )
+
+ MOVSS ( M(10), XMM3 ) /* m10 */
+ MULSS ( ARG_SCALE, XMM3 ) /* m10*scale */
+ MULSS ( S(2), XMM3 ) /* m10*scale*uz */
+ MOVSS ( S(1), XMM4 ) /* uy */
+ MULSS ( XMM7, XMM4 ) /* uy*m9*scale */
+ MOVSS ( S(0), XMM5 ) /* ux */
+ MULSS ( XMM6, XMM5 ) /* ux*m8*scale */
+
+ ADDSS ( XMM4, XMM3 )
+ ADDSS ( XMM5, XMM3 )
+ MOVSS ( XMM3, D(2) )
+
+LLBL(K_G3TRNR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_G3TRNR_top) )
+
+LLBL(K_G3TRNR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_sse_transform_normals_no_rot)
+HIDDEN(_mesa_sse_transform_normals_no_rot)
+GLNAME(_mesa_sse_transform_normals_no_rot):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L ( ARG_IN, ESI ) /* ptr to source GLvector3f */
+ MOV_L ( ARG_DEST, EDI ) /* ptr to dest GLvector3f */
+
+ MOV_L ( ARG_MAT, EDX ) /* ptr to matrix */
+ MOV_L ( REGOFF(MATRIX_INV, EDX), EDX) /* matrix->inv */
+
+ MOV_L ( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L ( ECX, ECX )
+ JZ( LLBL(K_G3TNNRR_finish) ) /* count was zero; go to finish */
+
+ MOV_L ( STRIDE, EAX ) /* stride */
+ MOV_L ( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest-count */
+
+ IMUL_L( CONST(16), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVSS( M(0), XMM0 ) /* m0 */
+ MOVSS( M(5), XMM1 ) /* m5 */
+ UNPCKLPS( XMM1, XMM0 ) /* m5 | m0 */
+ MOVSS( M(10), XMM1 ) /* m10 */
+
+ALIGNTEXT32
+LLBL(K_G3TNNRR_top):
+ MOVLPS( S(0), XMM2 ) /* uy | ux */
+ MULPS( XMM0, XMM2 ) /* uy*m5 | ux*m0 */
+ MOVLPS( XMM2, D(0) )
+
+ MOVSS( S(2), XMM2 ) /* uz */
+ MULSS( XMM1, XMM2 ) /* uz*m10 */
+ MOVSS( XMM2, D(2) )
+
+LLBL(K_G3TNNRR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_G3TNNRR_top) )
+
+LLBL(K_G3TNNRR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+#endif
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/sse_xform1.S b/mesalib/src/mesa/x86/sse_xform1.S
index 45a6dd7ec..4aa9de607 100644
--- a/mesalib/src/mesa/x86/sse_xform1.S
+++ b/mesalib/src/mesa/x86/sse_xform1.S
@@ -1,446 +1,446 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/** TODO:
- * - insert PREFETCH instructions to avoid cache-misses !
- * - some more optimizations are possible...
- * - for 40-50% more performance in the SSE-functions, the
- * data (trans-matrix, src_vert, dst_vert) needs to be 16byte aligned !
- */
-
-#ifdef USE_SSE_ASM
-#include "assyntax.h"
-#include "matypes.h"
-#include "xform_args.h"
-
- SEG_TEXT
-
-#define S(i) REGOFF(i * 4, ESI)
-#define D(i) REGOFF(i * 4, EDI)
-#define M(i) REGOFF(i * 4, EDX)
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points1_general)
-HIDDEN( _mesa_sse_transform_points1_general )
-GLNAME( _mesa_sse_transform_points1_general ):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- CMP_L( CONST(0), ECX ) /* count == 0 ? */
- JE( LLBL(K_GTP1GR_finish) ) /* yes -> nothing to do. */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-
-ALIGNTEXT32
- MOVAPS( M(0), XMM0 ) /* m3 | m2 | m1 | m0 */
- MOVAPS( M(12), XMM1 ) /* m15 | m14 | m13 | m12 */
-
-ALIGNTEXT32
-LLBL(K_GTP1GR_top):
- MOVSS( S(0), XMM2 ) /* ox */
- SHUFPS( CONST(0x0), XMM2, XMM2 ) /* ox | ox | ox | ox */
- MULPS( XMM0, XMM2 ) /* ox*m3 | ox*m2 | ox*m1 | ox*m0 */
- ADDPS( XMM1, XMM2 ) /* + | + | + | + */
- MOVUPS( XMM2, D(0) )
-
-LLBL(K_GTP1GR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTP1GR_top) )
-
-LLBL(K_GTP1GR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points1_identity)
-HIDDEN(_mesa_sse_transform_points1_identity)
-GLNAME( _mesa_sse_transform_points1_identity ):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP1IR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_1), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(1), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
- CMP_L( ESI, EDI )
- JE( LLBL(K_GTP1IR_finish) )
-
-
-ALIGNTEXT32
-LLBL(K_GTP1IR_top):
- MOV_L( S(0), EDX )
- MOV_L( EDX, D(0) )
-
-LLBL(K_GTP1IR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTP1IR_top) )
-
-LLBL(K_GTP1IR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points1_3d_no_rot)
-HIDDEN(_mesa_sse_transform_points1_3d_no_rot)
-GLNAME(_mesa_sse_transform_points1_3d_no_rot):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP13DNRR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-
-ALIGNTEXT32
- MOVSS( M(0), XMM0 ) /* m0 */
- MOVSS( M(12), XMM1 ) /* m12 */
- MOVSS( M(13), XMM2 ) /* m13 */
- MOVSS( M(14), XMM3 ) /* m14 */
-
-ALIGNTEXT32
-LLBL(K_GTP13DNRR_top):
- MOVSS( S(0), XMM4 ) /* ox */
- MULSS( XMM0, XMM4 ) /* ox*m0 */
- ADDSS( XMM1, XMM4 ) /* ox*m0+m12 */
- MOVSS( XMM4, D(0) )
-
- MOVSS( XMM2, D(1) )
- MOVSS( XMM3, D(2) )
-
-LLBL(K_GTP13DNRR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTP13DNRR_top) )
-
-LLBL(K_GTP13DNRR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points1_perspective)
-HIDDEN(_mesa_sse_transform_points1_perspective)
-GLNAME(_mesa_sse_transform_points1_perspective):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP13PR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-
-ALIGNTEXT32
- XORPS( XMM0, XMM0 ) /* 0 | 0 | 0 | 0 */
- MOVSS( M(0), XMM1 ) /* m0 */
- MOVSS( M(14), XMM2 ) /* m14 */
-
-ALIGNTEXT32
-LLBL(K_GTP13PR_top):
- MOVSS( S(0), XMM3 ) /* ox */
- MULSS( XMM1, XMM3 ) /* ox*m0 */
- MOVSS( XMM3, D(0) ) /* ox*m0->D(0) */
- MOVSS( XMM2, D(2) ) /* m14->D(2) */
-
- MOVSS( XMM0, D(1) )
- MOVSS( XMM0, D(3) )
-
-LLBL(K_GTP13PR_skip):
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(K_GTP13PR_top) )
-
-LLBL(K_GTP13PR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points1_2d)
-HIDDEN(_mesa_sse_transform_points1_2d)
-GLNAME(_mesa_sse_transform_points1_2d):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP13P2DR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVLPS( M(0), XMM0 ) /* m1 | m0 */
- MOVLPS( M(12), XMM1 ) /* m13 | m12 */
-
-ALIGNTEXT32
-LLBL(K_GTP13P2DR_top):
- MOVSS( S(0), XMM2 ) /* ox */
- SHUFPS( CONST(0x0), XMM2, XMM2 ) /* ox | ox | ox | ox */
- MULPS( XMM0, XMM2 ) /* - | - | ox*m1 | ox*m0 */
- ADDPS( XMM1, XMM2 ) /* - | - | ox*m1+m13 | ox*m0+m12 */
- MOVLPS( XMM2, D(0) )
-
-LLBL(K_GTP13P2DR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTP13P2DR_top) )
-
-LLBL(K_GTP13P2DR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points1_2d_no_rot)
-HIDDEN(_mesa_sse_transform_points1_2d_no_rot)
-GLNAME(_mesa_sse_transform_points1_2d_no_rot):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP13P2DNRR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVSS( M(0), XMM0 ) /* m0 */
- MOVSS( M(12), XMM1 ) /* m12 */
- MOVSS( M(13), XMM2 ) /* m13 */
-
-ALIGNTEXT32
-LLBL(K_GTP13P2DNRR_top):
- MOVSS( S(0), XMM3 ) /* ox */
- MULSS( XMM0, XMM3 ) /* ox*m0 */
- ADDSS( XMM1, XMM3 ) /* ox*m0+m12 */
- MOVSS( XMM3, D(0) )
- MOVSS( XMM2, D(1) )
-
-LLBL(K_GTP13P2DNRR_skip):
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(K_GTP13P2DNRR_top) )
-
-LLBL(K_GTP13P2DNRR_finish):
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points1_3d)
-HIDDEN(_mesa_sse_transform_points1_3d)
-GLNAME(_mesa_sse_transform_points1_3d):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP13P3DR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-
-ALIGNTEXT32
- MOVAPS( M(0), XMM0 ) /* m3 | m2 | m1 | m0 */
- MOVAPS( M(12), XMM1 ) /* m15 | m14 | m13 | m12 */
-
-ALIGNTEXT32
-LLBL(K_GTP13P3DR_top):
- MOVSS( S(0), XMM2 ) /* ox */
- SHUFPS( CONST(0x0), XMM2, XMM2 ) /* ox | ox | ox | ox */
- MULPS( XMM0, XMM2 ) /* ox*m3 | ox*m2 | ox*m1 | ox*m0 */
- ADDPS( XMM1, XMM2 ) /* +m15 | +m14 | +m13 | +m12 */
- MOVLPS( XMM2, D(0) ) /* - | - | ->D(1)| ->D(0)*/
- UNPCKHPS( XMM2, XMM2 ) /* ox*m3+m15 | ox*m3+m15 | ox*m2+m14 | ox*m2+m14 */
- MOVSS( XMM2, D(2) )
-
-LLBL(K_GTP13P3DR_skip):
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(K_GTP13P3DR_top) )
-
-LLBL(K_GTP13P3DR_finish):
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-#endif
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/** TODO:
+ * - insert PREFETCH instructions to avoid cache-misses !
+ * - some more optimizations are possible...
+ * - for 40-50% more performance in the SSE-functions, the
+ * data (trans-matrix, src_vert, dst_vert) needs to be 16byte aligned !
+ */
+
+#ifdef USE_SSE_ASM
+#include "assyntax.h"
+#include "matypes.h"
+#include "xform_args.h"
+
+ SEG_TEXT
+
+#define S(i) REGOFF(i * 4, ESI)
+#define D(i) REGOFF(i * 4, EDI)
+#define M(i) REGOFF(i * 4, EDX)
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points1_general)
+HIDDEN( _mesa_sse_transform_points1_general )
+GLNAME( _mesa_sse_transform_points1_general ):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ CMP_L( CONST(0), ECX ) /* count == 0 ? */
+ JE( LLBL(K_GTP1GR_finish) ) /* yes -> nothing to do. */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+
+ALIGNTEXT32
+ MOVAPS( M(0), XMM0 ) /* m3 | m2 | m1 | m0 */
+ MOVAPS( M(12), XMM1 ) /* m15 | m14 | m13 | m12 */
+
+ALIGNTEXT32
+LLBL(K_GTP1GR_top):
+ MOVSS( S(0), XMM2 ) /* ox */
+ SHUFPS( CONST(0x0), XMM2, XMM2 ) /* ox | ox | ox | ox */
+ MULPS( XMM0, XMM2 ) /* ox*m3 | ox*m2 | ox*m1 | ox*m0 */
+ ADDPS( XMM1, XMM2 ) /* + | + | + | + */
+ MOVUPS( XMM2, D(0) )
+
+LLBL(K_GTP1GR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTP1GR_top) )
+
+LLBL(K_GTP1GR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points1_identity)
+HIDDEN(_mesa_sse_transform_points1_identity)
+GLNAME( _mesa_sse_transform_points1_identity ):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP1IR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_1), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(1), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ CMP_L( ESI, EDI )
+ JE( LLBL(K_GTP1IR_finish) )
+
+
+ALIGNTEXT32
+LLBL(K_GTP1IR_top):
+ MOV_L( S(0), EDX )
+ MOV_L( EDX, D(0) )
+
+LLBL(K_GTP1IR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTP1IR_top) )
+
+LLBL(K_GTP1IR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points1_3d_no_rot)
+HIDDEN(_mesa_sse_transform_points1_3d_no_rot)
+GLNAME(_mesa_sse_transform_points1_3d_no_rot):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP13DNRR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+
+ALIGNTEXT32
+ MOVSS( M(0), XMM0 ) /* m0 */
+ MOVSS( M(12), XMM1 ) /* m12 */
+ MOVSS( M(13), XMM2 ) /* m13 */
+ MOVSS( M(14), XMM3 ) /* m14 */
+
+ALIGNTEXT32
+LLBL(K_GTP13DNRR_top):
+ MOVSS( S(0), XMM4 ) /* ox */
+ MULSS( XMM0, XMM4 ) /* ox*m0 */
+ ADDSS( XMM1, XMM4 ) /* ox*m0+m12 */
+ MOVSS( XMM4, D(0) )
+
+ MOVSS( XMM2, D(1) )
+ MOVSS( XMM3, D(2) )
+
+LLBL(K_GTP13DNRR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTP13DNRR_top) )
+
+LLBL(K_GTP13DNRR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points1_perspective)
+HIDDEN(_mesa_sse_transform_points1_perspective)
+GLNAME(_mesa_sse_transform_points1_perspective):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP13PR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+
+ALIGNTEXT32
+ XORPS( XMM0, XMM0 ) /* 0 | 0 | 0 | 0 */
+ MOVSS( M(0), XMM1 ) /* m0 */
+ MOVSS( M(14), XMM2 ) /* m14 */
+
+ALIGNTEXT32
+LLBL(K_GTP13PR_top):
+ MOVSS( S(0), XMM3 ) /* ox */
+ MULSS( XMM1, XMM3 ) /* ox*m0 */
+ MOVSS( XMM3, D(0) ) /* ox*m0->D(0) */
+ MOVSS( XMM2, D(2) ) /* m14->D(2) */
+
+ MOVSS( XMM0, D(1) )
+ MOVSS( XMM0, D(3) )
+
+LLBL(K_GTP13PR_skip):
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(K_GTP13PR_top) )
+
+LLBL(K_GTP13PR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points1_2d)
+HIDDEN(_mesa_sse_transform_points1_2d)
+GLNAME(_mesa_sse_transform_points1_2d):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP13P2DR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVLPS( M(0), XMM0 ) /* m1 | m0 */
+ MOVLPS( M(12), XMM1 ) /* m13 | m12 */
+
+ALIGNTEXT32
+LLBL(K_GTP13P2DR_top):
+ MOVSS( S(0), XMM2 ) /* ox */
+ SHUFPS( CONST(0x0), XMM2, XMM2 ) /* ox | ox | ox | ox */
+ MULPS( XMM0, XMM2 ) /* - | - | ox*m1 | ox*m0 */
+ ADDPS( XMM1, XMM2 ) /* - | - | ox*m1+m13 | ox*m0+m12 */
+ MOVLPS( XMM2, D(0) )
+
+LLBL(K_GTP13P2DR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTP13P2DR_top) )
+
+LLBL(K_GTP13P2DR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points1_2d_no_rot)
+HIDDEN(_mesa_sse_transform_points1_2d_no_rot)
+GLNAME(_mesa_sse_transform_points1_2d_no_rot):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP13P2DNRR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVSS( M(0), XMM0 ) /* m0 */
+ MOVSS( M(12), XMM1 ) /* m12 */
+ MOVSS( M(13), XMM2 ) /* m13 */
+
+ALIGNTEXT32
+LLBL(K_GTP13P2DNRR_top):
+ MOVSS( S(0), XMM3 ) /* ox */
+ MULSS( XMM0, XMM3 ) /* ox*m0 */
+ ADDSS( XMM1, XMM3 ) /* ox*m0+m12 */
+ MOVSS( XMM3, D(0) )
+ MOVSS( XMM2, D(1) )
+
+LLBL(K_GTP13P2DNRR_skip):
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(K_GTP13P2DNRR_top) )
+
+LLBL(K_GTP13P2DNRR_finish):
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points1_3d)
+HIDDEN(_mesa_sse_transform_points1_3d)
+GLNAME(_mesa_sse_transform_points1_3d):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP13P3DR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+
+ALIGNTEXT32
+ MOVAPS( M(0), XMM0 ) /* m3 | m2 | m1 | m0 */
+ MOVAPS( M(12), XMM1 ) /* m15 | m14 | m13 | m12 */
+
+ALIGNTEXT32
+LLBL(K_GTP13P3DR_top):
+ MOVSS( S(0), XMM2 ) /* ox */
+ SHUFPS( CONST(0x0), XMM2, XMM2 ) /* ox | ox | ox | ox */
+ MULPS( XMM0, XMM2 ) /* ox*m3 | ox*m2 | ox*m1 | ox*m0 */
+ ADDPS( XMM1, XMM2 ) /* +m15 | +m14 | +m13 | +m12 */
+ MOVLPS( XMM2, D(0) ) /* - | - | ->D(1)| ->D(0)*/
+ UNPCKHPS( XMM2, XMM2 ) /* ox*m3+m15 | ox*m3+m15 | ox*m2+m14 | ox*m2+m14 */
+ MOVSS( XMM2, D(2) )
+
+LLBL(K_GTP13P3DR_skip):
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(K_GTP13P3DR_top) )
+
+LLBL(K_GTP13P3DR_finish):
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+#endif
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/sse_xform2.S b/mesalib/src/mesa/x86/sse_xform2.S
index 7fb52e2e7..a443dad35 100644
--- a/mesalib/src/mesa/x86/sse_xform2.S
+++ b/mesalib/src/mesa/x86/sse_xform2.S
@@ -1,466 +1,466 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/** TODO:
- * - insert PREFETCH instructions to avoid cache-misses !
- * - some more optimizations are possible...
- * - for 40-50% more performance in the SSE-functions, the
- * data (trans-matrix, src_vert, dst_vert) needs to be 16byte aligned !
- */
-
-#ifdef USE_SSE_ASM
-#include "assyntax.h"
-#include "matypes.h"
-#include "xform_args.h"
-
- SEG_TEXT
-
-#define S(i) REGOFF(i * 4, ESI)
-#define D(i) REGOFF(i * 4, EDI)
-#define M(i) REGOFF(i * 4, EDX)
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points2_general)
-HIDDEN (_mesa_sse_transform_points2_general)
-GLNAME( _mesa_sse_transform_points2_general ):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX )
- JZ( LLBL(K_GTP2GR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVAPS( M(0), XMM0 ) /* m3 | m2 | m1 | m0 */
- MOVAPS( M(4), XMM1 ) /* m7 | m6 | m5 | m4 */
- MOVAPS( M(12), XMM2 ) /* m15 | m14 | m13 | m12 */
-
-ALIGNTEXT32
-LLBL(K_GTP2GR_top):
- MOVSS( S(0), XMM3 ) /* ox */
- SHUFPS( CONST(0x0), XMM3, XMM3 ) /* ox | ox | ox | ox */
- MULPS( XMM0, XMM3 ) /* ox*m3 | ox*m2 | ox*m1 | ox*m0 */
- MOVSS( S(1), XMM4 ) /* oy */
- SHUFPS( CONST(0x0), XMM4, XMM4 ) /* oy | oy | oy | oy */
- MULPS( XMM1, XMM4 ) /* oy*m7 | oy*m6 | oy*m5 | oy*m4 */
-
- ADDPS( XMM4, XMM3 )
- ADDPS( XMM2, XMM3 )
- MOVAPS( XMM3, D(0) )
-
-LLBL(K_GTP2GR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTP2GR_top) )
-
-LLBL(K_GTP2GR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points2_identity)
-HIDDEN(_mesa_sse_transform_points2_identity)
-GLNAME( _mesa_sse_transform_points2_identity ):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP2IR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
- CMP_L( ESI, EDI )
- JE( LLBL(K_GTP2IR_finish) )
-
-
-ALIGNTEXT32
-LLBL(K_GTP2IR_top):
- MOV_L ( S(0), EDX )
- MOV_L ( EDX, D(0) )
- MOV_L ( S(1), EDX )
- MOV_L ( EDX, D(1) )
-
-LLBL(K_GTP2IR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTP2IR_top) )
-
-LLBL(K_GTP2IR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points2_3d_no_rot)
-HIDDEN(_mesa_sse_transform_points2_3d_no_rot)
-GLNAME(_mesa_sse_transform_points2_3d_no_rot):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP23DNRR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
- XORPS( XMM0, XMM0 ) /* clean the working register */
-
-ALIGNTEXT32
- MOVSS ( M(0), XMM1 ) /* - | - | - | m0 */
- MOVSS ( M(5), XMM2 ) /* - | - | - | m5 */
- UNPCKLPS ( XMM2, XMM1 ) /* - | - | m5 | m0 */
- MOVLPS ( M(12), XMM2 ) /* - | - | m13 | m12 */
- MOVSS ( M(14), XMM3 ) /* - | - | - | m14 */
-
-ALIGNTEXT32
-LLBL(K_GTP23DNRR_top):
- MOVLPS ( S(0), XMM0 ) /* - | - | oy | ox */
- MULPS ( XMM1, XMM0 ) /* - | - | oy*m5 | ox*m0 */
- ADDPS ( XMM2, XMM0 ) /* - | - | +m13 | +m12 */
- MOVLPS ( XMM0, D(0) ) /* -> D(1) | -> D(0) */
-
- MOVSS ( XMM3, D(2) ) /* -> D(2) */
-
-LLBL(K_GTP23DNRR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTP23DNRR_top) )
-
-LLBL(K_GTP23DNRR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points2_perspective)
-HIDDEN(_mesa_sse_transform_points2_perspective)
-GLNAME(_mesa_sse_transform_points2_perspective):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP23PR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVSS ( M(0), XMM1 ) /* - | - | - | m0 */
- MOVSS ( M(5), XMM2 ) /* - | - | - | m5 */
- UNPCKLPS ( XMM2, XMM1 ) /* - | - | m5 | m0 */
- MOVSS ( M(14), XMM3 ) /* m14 */
- XORPS ( XMM0, XMM0 ) /* 0 | 0 | 0 | 0 */
-
-ALIGNTEXT32
-LLBL(K_GTP23PR_top):
- MOVLPS( S(0), XMM4 ) /* oy | ox */
- MULPS( XMM1, XMM4 ) /* oy*m5 | ox*m0 */
- MOVLPS( XMM4, D(0) ) /* ->D(1) | ->D(0) */
- MOVSS( XMM3, D(2) ) /* ->D(2) */
- MOVSS( XMM0, D(3) ) /* ->D(3) */
-
-LLBL(K_GTP23PR_skip):
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(K_GTP23PR_top) )
-
-LLBL(K_GTP23PR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points2_2d)
-HIDDEN(_mesa_sse_transform_points2_2d)
-GLNAME(_mesa_sse_transform_points2_2d):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP23P2DR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVLPS( M(0), XMM0 ) /* m1 | m0 */
- MOVLPS( M(4), XMM1 ) /* m5 | m4 */
- MOVLPS( M(12), XMM2 ) /* m13 | m12 */
-
-ALIGNTEXT32
-LLBL(K_GTP23P2DR_top):
- MOVSS( S(0), XMM3 ) /* ox */
- SHUFPS( CONST(0x0), XMM3, XMM3 ) /* ox | ox */
- MULPS( XMM0, XMM3 ) /* ox*m1 | ox*m0 */
-
- MOVSS( S(1), XMM4 ) /* oy */
- SHUFPS( CONST(0x0), XMM4, XMM4 ) /* oy | oy */
- MULPS( XMM1, XMM4 ) /* oy*m5 | oy*m4 */
-
- ADDPS( XMM4, XMM3 )
- ADDPS( XMM2, XMM3 )
- MOVLPS( XMM3, D(0) ) /* ->D(1) | ->D(0) */
-
-LLBL(K_GTP23P2DR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTP23P2DR_top) )
-
-LLBL(K_GTP23P2DR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points2_2d_no_rot)
-HIDDEN(_mesa_sse_transform_points2_2d_no_rot)
-GLNAME(_mesa_sse_transform_points2_2d_no_rot):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP23P2DNRR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVSS ( M(0), XMM1 ) /* m0 */
- MOVSS ( M(5), XMM2 ) /* m5 */
- UNPCKLPS ( XMM2, XMM1 ) /* m5 | m0 */
- MOVLPS ( M(12), XMM2 ) /* m13 | m12 */
-
-ALIGNTEXT32
-LLBL(K_GTP23P2DNRR_top):
- MOVLPS( S(0), XMM0 ) /* oy | ox */
- MULPS( XMM1, XMM0 ) /* oy*m5 | ox*m0 */
- ADDPS( XMM2, XMM0 ) /* +m13 | +m12 */
- MOVLPS( XMM0, D(0) ) /* ->D(1) | ->D(0) */
-
-LLBL(K_GTP23P2DNRR_skip):
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(K_GTP23P2DNRR_top) )
-
-LLBL(K_GTP23P2DNRR_finish):
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points2_3d)
-HIDDEN(_mesa_sse_transform_points2_3d)
-GLNAME(_mesa_sse_transform_points2_3d):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP23P3DR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVAPS( M(0), XMM0 ) /* m2 | m1 | m0 */
- MOVAPS( M(4), XMM1 ) /* m6 | m5 | m4 */
- MOVAPS( M(12), XMM2 ) /* m14 | m13 | m12 */
-
-ALIGNTEXT32
-LLBL(K_GTP23P3DR_top):
- MOVSS( S(0), XMM3 ) /* ox */
- SHUFPS( CONST(0x0), XMM3, XMM3 ) /* ox | ox | ox */
- MULPS( XMM0, XMM3 ) /* ox*m2 | ox*m1 | ox*m0 */
-
- MOVSS( S(1), XMM4 ) /* oy */
- SHUFPS( CONST(0x0), XMM4, XMM4 ) /* oy | oy | oy */
- MULPS( XMM1, XMM4 ) /* oy*m6 | oy*m5 | oy*m4 */
-
- ADDPS( XMM4, XMM3 )
- ADDPS( XMM2, XMM3 )
-
- MOVLPS( XMM3, D(0) ) /* ->D(1) | ->D(0) */
- UNPCKHPS( XMM3, XMM3 )
- MOVSS( XMM3, D(2) ) /* ->D(2) */
-
-LLBL(K_GTP23P3DR_skip):
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(K_GTP23P3DR_top) )
-
-LLBL(K_GTP23P3DR_finish):
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-#endif
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/** TODO:
+ * - insert PREFETCH instructions to avoid cache-misses !
+ * - some more optimizations are possible...
+ * - for 40-50% more performance in the SSE-functions, the
+ * data (trans-matrix, src_vert, dst_vert) needs to be 16byte aligned !
+ */
+
+#ifdef USE_SSE_ASM
+#include "assyntax.h"
+#include "matypes.h"
+#include "xform_args.h"
+
+ SEG_TEXT
+
+#define S(i) REGOFF(i * 4, ESI)
+#define D(i) REGOFF(i * 4, EDI)
+#define M(i) REGOFF(i * 4, EDX)
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points2_general)
+HIDDEN (_mesa_sse_transform_points2_general)
+GLNAME( _mesa_sse_transform_points2_general ):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(K_GTP2GR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVAPS( M(0), XMM0 ) /* m3 | m2 | m1 | m0 */
+ MOVAPS( M(4), XMM1 ) /* m7 | m6 | m5 | m4 */
+ MOVAPS( M(12), XMM2 ) /* m15 | m14 | m13 | m12 */
+
+ALIGNTEXT32
+LLBL(K_GTP2GR_top):
+ MOVSS( S(0), XMM3 ) /* ox */
+ SHUFPS( CONST(0x0), XMM3, XMM3 ) /* ox | ox | ox | ox */
+ MULPS( XMM0, XMM3 ) /* ox*m3 | ox*m2 | ox*m1 | ox*m0 */
+ MOVSS( S(1), XMM4 ) /* oy */
+ SHUFPS( CONST(0x0), XMM4, XMM4 ) /* oy | oy | oy | oy */
+ MULPS( XMM1, XMM4 ) /* oy*m7 | oy*m6 | oy*m5 | oy*m4 */
+
+ ADDPS( XMM4, XMM3 )
+ ADDPS( XMM2, XMM3 )
+ MOVAPS( XMM3, D(0) )
+
+LLBL(K_GTP2GR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTP2GR_top) )
+
+LLBL(K_GTP2GR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points2_identity)
+HIDDEN(_mesa_sse_transform_points2_identity)
+GLNAME( _mesa_sse_transform_points2_identity ):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP2IR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ CMP_L( ESI, EDI )
+ JE( LLBL(K_GTP2IR_finish) )
+
+
+ALIGNTEXT32
+LLBL(K_GTP2IR_top):
+ MOV_L ( S(0), EDX )
+ MOV_L ( EDX, D(0) )
+ MOV_L ( S(1), EDX )
+ MOV_L ( EDX, D(1) )
+
+LLBL(K_GTP2IR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTP2IR_top) )
+
+LLBL(K_GTP2IR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points2_3d_no_rot)
+HIDDEN(_mesa_sse_transform_points2_3d_no_rot)
+GLNAME(_mesa_sse_transform_points2_3d_no_rot):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP23DNRR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ XORPS( XMM0, XMM0 ) /* clean the working register */
+
+ALIGNTEXT32
+ MOVSS ( M(0), XMM1 ) /* - | - | - | m0 */
+ MOVSS ( M(5), XMM2 ) /* - | - | - | m5 */
+ UNPCKLPS ( XMM2, XMM1 ) /* - | - | m5 | m0 */
+ MOVLPS ( M(12), XMM2 ) /* - | - | m13 | m12 */
+ MOVSS ( M(14), XMM3 ) /* - | - | - | m14 */
+
+ALIGNTEXT32
+LLBL(K_GTP23DNRR_top):
+ MOVLPS ( S(0), XMM0 ) /* - | - | oy | ox */
+ MULPS ( XMM1, XMM0 ) /* - | - | oy*m5 | ox*m0 */
+ ADDPS ( XMM2, XMM0 ) /* - | - | +m13 | +m12 */
+ MOVLPS ( XMM0, D(0) ) /* -> D(1) | -> D(0) */
+
+ MOVSS ( XMM3, D(2) ) /* -> D(2) */
+
+LLBL(K_GTP23DNRR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTP23DNRR_top) )
+
+LLBL(K_GTP23DNRR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points2_perspective)
+HIDDEN(_mesa_sse_transform_points2_perspective)
+GLNAME(_mesa_sse_transform_points2_perspective):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP23PR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVSS ( M(0), XMM1 ) /* - | - | - | m0 */
+ MOVSS ( M(5), XMM2 ) /* - | - | - | m5 */
+ UNPCKLPS ( XMM2, XMM1 ) /* - | - | m5 | m0 */
+ MOVSS ( M(14), XMM3 ) /* m14 */
+ XORPS ( XMM0, XMM0 ) /* 0 | 0 | 0 | 0 */
+
+ALIGNTEXT32
+LLBL(K_GTP23PR_top):
+ MOVLPS( S(0), XMM4 ) /* oy | ox */
+ MULPS( XMM1, XMM4 ) /* oy*m5 | ox*m0 */
+ MOVLPS( XMM4, D(0) ) /* ->D(1) | ->D(0) */
+ MOVSS( XMM3, D(2) ) /* ->D(2) */
+ MOVSS( XMM0, D(3) ) /* ->D(3) */
+
+LLBL(K_GTP23PR_skip):
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(K_GTP23PR_top) )
+
+LLBL(K_GTP23PR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points2_2d)
+HIDDEN(_mesa_sse_transform_points2_2d)
+GLNAME(_mesa_sse_transform_points2_2d):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP23P2DR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVLPS( M(0), XMM0 ) /* m1 | m0 */
+ MOVLPS( M(4), XMM1 ) /* m5 | m4 */
+ MOVLPS( M(12), XMM2 ) /* m13 | m12 */
+
+ALIGNTEXT32
+LLBL(K_GTP23P2DR_top):
+ MOVSS( S(0), XMM3 ) /* ox */
+ SHUFPS( CONST(0x0), XMM3, XMM3 ) /* ox | ox */
+ MULPS( XMM0, XMM3 ) /* ox*m1 | ox*m0 */
+
+ MOVSS( S(1), XMM4 ) /* oy */
+ SHUFPS( CONST(0x0), XMM4, XMM4 ) /* oy | oy */
+ MULPS( XMM1, XMM4 ) /* oy*m5 | oy*m4 */
+
+ ADDPS( XMM4, XMM3 )
+ ADDPS( XMM2, XMM3 )
+ MOVLPS( XMM3, D(0) ) /* ->D(1) | ->D(0) */
+
+LLBL(K_GTP23P2DR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTP23P2DR_top) )
+
+LLBL(K_GTP23P2DR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points2_2d_no_rot)
+HIDDEN(_mesa_sse_transform_points2_2d_no_rot)
+GLNAME(_mesa_sse_transform_points2_2d_no_rot):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP23P2DNRR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVSS ( M(0), XMM1 ) /* m0 */
+ MOVSS ( M(5), XMM2 ) /* m5 */
+ UNPCKLPS ( XMM2, XMM1 ) /* m5 | m0 */
+ MOVLPS ( M(12), XMM2 ) /* m13 | m12 */
+
+ALIGNTEXT32
+LLBL(K_GTP23P2DNRR_top):
+ MOVLPS( S(0), XMM0 ) /* oy | ox */
+ MULPS( XMM1, XMM0 ) /* oy*m5 | ox*m0 */
+ ADDPS( XMM2, XMM0 ) /* +m13 | +m12 */
+ MOVLPS( XMM0, D(0) ) /* ->D(1) | ->D(0) */
+
+LLBL(K_GTP23P2DNRR_skip):
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(K_GTP23P2DNRR_top) )
+
+LLBL(K_GTP23P2DNRR_finish):
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points2_3d)
+HIDDEN(_mesa_sse_transform_points2_3d)
+GLNAME(_mesa_sse_transform_points2_3d):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP23P3DR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVAPS( M(0), XMM0 ) /* m2 | m1 | m0 */
+ MOVAPS( M(4), XMM1 ) /* m6 | m5 | m4 */
+ MOVAPS( M(12), XMM2 ) /* m14 | m13 | m12 */
+
+ALIGNTEXT32
+LLBL(K_GTP23P3DR_top):
+ MOVSS( S(0), XMM3 ) /* ox */
+ SHUFPS( CONST(0x0), XMM3, XMM3 ) /* ox | ox | ox */
+ MULPS( XMM0, XMM3 ) /* ox*m2 | ox*m1 | ox*m0 */
+
+ MOVSS( S(1), XMM4 ) /* oy */
+ SHUFPS( CONST(0x0), XMM4, XMM4 ) /* oy | oy | oy */
+ MULPS( XMM1, XMM4 ) /* oy*m6 | oy*m5 | oy*m4 */
+
+ ADDPS( XMM4, XMM3 )
+ ADDPS( XMM2, XMM3 )
+
+ MOVLPS( XMM3, D(0) ) /* ->D(1) | ->D(0) */
+ UNPCKHPS( XMM3, XMM3 )
+ MOVSS( XMM3, D(2) ) /* ->D(2) */
+
+LLBL(K_GTP23P3DR_skip):
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(K_GTP23P3DR_top) )
+
+LLBL(K_GTP23P3DR_finish):
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+#endif
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/sse_xform3.S b/mesalib/src/mesa/x86/sse_xform3.S
index 4e39312bf..4bc22d8a5 100644
--- a/mesalib/src/mesa/x86/sse_xform3.S
+++ b/mesalib/src/mesa/x86/sse_xform3.S
@@ -1,512 +1,512 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/** TODO:
- * - insert PREFETCH instructions to avoid cache-misses !
- * - some more optimizations are possible...
- * - for 40-50% more performance in the SSE-functions, the
- * data (trans-matrix, src_vert, dst_vert) needs to be 16byte aligned !
- */
-
-#ifdef USE_SSE_ASM
-#include "assyntax.h"
-#include "matypes.h"
-#include "xform_args.h"
-
- SEG_TEXT
-
-#define S(i) REGOFF(i * 4, ESI)
-#define D(i) REGOFF(i * 4, EDI)
-#define M(i) REGOFF(i * 4, EDX)
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points3_general)
-HIDDEN(_mesa_sse_transform_points3_general)
-GLNAME( _mesa_sse_transform_points3_general ):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- CMP_L ( CONST(0), ECX ) /* count == 0 ? */
- JE ( LLBL(K_GTPGR_finish) ) /* yes -> nothing to do. */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-
-ALIGNTEXT32
- MOVAPS ( REGOFF(0, EDX), XMM0 ) /* m0 | m1 | m2 | m3 */
- MOVAPS ( REGOFF(16, EDX), XMM1 ) /* m4 | m5 | m6 | m7 */
- MOVAPS ( REGOFF(32, EDX), XMM2 ) /* m8 | m9 | m10 | m11 */
- MOVAPS ( REGOFF(48, EDX), XMM3 ) /* m12 | m13 | m14 | m15 */
-
-
-ALIGNTEXT32
-LLBL(K_GTPGR_top):
- MOVSS ( REGOFF(0, ESI), XMM4 ) /* | | | ox */
- SHUFPS ( CONST(0x0), XMM4, XMM4 ) /* ox | ox | ox | ox */
- MOVSS ( REGOFF(4, ESI), XMM5 ) /* | | | oy */
- SHUFPS ( CONST(0x0), XMM5, XMM5 ) /* oy | oy | oy | oy */
- MOVSS ( REGOFF(8, ESI), XMM6 ) /* | | | oz */
- SHUFPS ( CONST(0x0), XMM6, XMM6 ) /* oz | oz | oz | oz */
-
- MULPS ( XMM0, XMM4 ) /* m3*ox | m2*ox | m1*ox | m0*ox */
- MULPS ( XMM1, XMM5 ) /* m7*oy | m6*oy | m5*oy | m4*oy */
- MULPS ( XMM2, XMM6 ) /* m11*oz | m10*oz | m9*oz | m8*oz */
-
- ADDPS ( XMM5, XMM4 )
- ADDPS ( XMM6, XMM4 )
- ADDPS ( XMM3, XMM4 )
-
- MOVAPS ( XMM4, REGOFF(0, EDI) )
-
-LLBL(K_GTPGR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTPGR_top) )
-
-LLBL(K_GTPGR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points3_identity)
-HIDDEN(_mesa_sse_transform_points3_identity)
-GLNAME( _mesa_sse_transform_points3_identity ):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTPIR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
- CMP_L( ESI, EDI )
- JE( LLBL(K_GTPIR_finish) )
-
-
-ALIGNTEXT32
-LLBL(K_GTPIR_top):
- MOVLPS ( S(0), XMM0 )
- MOVLPS ( XMM0, D(0) )
- MOVSS ( S(2), XMM0 )
- MOVSS ( XMM0, D(2) )
-
-LLBL(K_GTPIR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTPIR_top) )
-
-LLBL(K_GTPIR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points3_3d_no_rot)
-HIDDEN(_mesa_sse_transform_points3_3d_no_rot)
-GLNAME(_mesa_sse_transform_points3_3d_no_rot):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP3DNRR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
- XORPS( XMM0, XMM0 ) /* clean the working register */
-
-ALIGNTEXT32
- MOVSS ( M(0), XMM1 ) /* - | - | - | m0 */
- MOVSS ( M(5), XMM2 ) /* - | - | - | m5 */
- UNPCKLPS ( XMM2, XMM1 ) /* - | - | m5 | m0 */
- MOVLPS ( M(12), XMM2 ) /* - | - | m13 | m12 */
- MOVSS ( M(10), XMM3 ) /* - | - | - | m10 */
- MOVSS ( M(14), XMM4 ) /* - | - | - | m14 */
-
-ALIGNTEXT32
-LLBL(K_GTP3DNRR_top):
-
- MOVLPS ( S(0), XMM0 ) /* - | - | s1 | s0 */
- MULPS ( XMM1, XMM0 ) /* - | - | s1*m5 | s0*m0 */
- ADDPS ( XMM2, XMM0 ) /* - | - | +m13 | +m12 */
- MOVLPS ( XMM0, D(0) ) /* -> D(1) | -> D(0) */
-
- MOVSS ( S(2), XMM0 ) /* sz */
- MULSS ( XMM3, XMM0 ) /* sz*m10 */
- ADDSS ( XMM4, XMM0 ) /* +m14 */
- MOVSS ( XMM0, D(2) ) /* -> D(2) */
-
-LLBL(K_GTP3DNRR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTP3DNRR_top) )
-
-LLBL(K_GTP3DNRR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points3_perspective)
-HIDDEN(_mesa_sse_transform_points3_perspective)
-GLNAME(_mesa_sse_transform_points3_perspective):
-
-#define FRAME_OFFSET 8
- PUSH_L ( ESI )
- PUSH_L ( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP3PR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVSS ( M(0), XMM1 ) /* - | - | - | m0 */
- MOVSS ( M(5), XMM2 ) /* - | - | - | m5 */
- UNPCKLPS ( XMM2, XMM1 ) /* - | - | m5 | m0 */
- MOVLPS ( M(8), XMM2 ) /* - | - | m9 | m8 */
- MOVSS ( M(10), XMM3 ) /* m10 */
- MOVSS ( M(14), XMM4 ) /* m14 */
- XORPS ( XMM6, XMM6 ) /* 0 */
-
-ALIGNTEXT32
-LLBL(K_GTP3PR_top):
- MOVLPS ( S(0), XMM0 ) /* oy | ox */
- MULPS ( XMM1, XMM0 ) /* oy*m5 | ox*m0 */
- MOVSS ( S(2), XMM5 ) /* oz */
- SHUFPS ( CONST(0x0), XMM5, XMM5 ) /* oz | oz */
- MULPS ( XMM2, XMM5 ) /* oz*m9 | oz*m8 */
- ADDPS ( XMM5, XMM0 ) /* +oy*m5 | +ox*m0 */
- MOVLPS ( XMM0, D(0) ) /* ->D(1) | ->D(0) */
-
- MOVSS ( S(2), XMM0 ) /* oz */
- MULSS ( XMM3, XMM0 ) /* oz*m10 */
- ADDSS ( XMM4, XMM0 ) /* +m14 */
- MOVSS ( XMM0, D(2) ) /* ->D(2) */
-
- MOVSS ( S(2), XMM0 ) /* oz */
- MOVSS ( XMM6, XMM5 ) /* 0 */
- SUBPS ( XMM0, XMM5 ) /* -oz */
- MOVSS ( XMM5, D(3) ) /* ->D(3) */
-
-LLBL(K_GTP3PR_skip):
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(K_GTP3PR_top) )
-
-LLBL(K_GTP3PR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points3_2d)
-HIDDEN(_mesa_sse_transform_points3_2d)
-GLNAME(_mesa_sse_transform_points3_2d):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP3P2DR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVLPS( M(0), XMM0 ) /* m1 | m0 */
- MOVLPS( M(4), XMM1 ) /* m5 | m4 */
- MOVLPS( M(12), XMM2 ) /* m13 | m12 */
-
-ALIGNTEXT32
-LLBL(K_GTP3P2DR_top):
- MOVSS ( S(0), XMM3 ) /* ox */
- SHUFPS ( CONST(0x0), XMM3, XMM3 ) /* ox | ox */
- MULPS ( XMM0, XMM3 ) /* ox*m1 | ox*m0 */
- MOVSS ( S(1), XMM4 ) /* oy */
- SHUFPS ( CONST(0x0), XMM4, XMM4 ) /* oy | oy */
- MULPS ( XMM1, XMM4 ) /* oy*m5 | oy*m4 */
-
- ADDPS ( XMM4, XMM3 )
- ADDPS ( XMM2, XMM3 )
- MOVLPS ( XMM3, D(0) )
-
- MOVSS ( S(2), XMM3 )
- MOVSS ( XMM3, D(2) )
-
-LLBL(K_GTP3P2DR_skip):
- ADD_L ( CONST(16), EDI )
- ADD_L ( EAX, ESI )
- CMP_L ( ECX, EDI )
- JNE ( LLBL(K_GTP3P2DR_top) )
-
-LLBL(K_GTP3P2DR_finish):
- POP_L ( EDI )
- POP_L ( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points3_2d_no_rot)
-HIDDEN(_mesa_sse_transform_points3_2d_no_rot)
-GLNAME(_mesa_sse_transform_points3_2d_no_rot):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP3P2DNRR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-ALIGNTEXT32
- MOVSS ( M(0), XMM1 ) /* m0 */
- MOVSS ( M(5), XMM2 ) /* m5 */
- UNPCKLPS ( XMM2, XMM1 ) /* m5 | m0 */
- MOVLPS ( M(12), XMM2 ) /* m13 | m12 */
-
-ALIGNTEXT32
-LLBL(K_GTP3P2DNRR_top):
- MOVLPS( S(0), XMM0 ) /* oy | ox */
- MULPS( XMM1, XMM0 ) /* oy*m5 | ox*m0 */
- ADDPS( XMM2, XMM0 ) /* +m13 | +m12 */
- MOVLPS( XMM0, D(0) ) /* ->D(1) | ->D(0) */
-
- MOVSS( S(2), XMM0 )
- MOVSS( XMM0, D(2) )
-
-LLBL(K_GTP3P2DNRR_skip):
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(K_GTP3P2DNRR_top) )
-
-LLBL(K_GTP3P2DNRR_finish):
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME(_mesa_sse_transform_points3_3d)
-HIDDEN(_mesa_sse_transform_points3_3d)
-GLNAME(_mesa_sse_transform_points3_3d):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
- MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
-
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP3P3DR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
-
-ALIGNTEXT32
- MOVAPS( M(0), XMM0 ) /* m2 | m1 | m0 */
- MOVAPS( M(4), XMM1 ) /* m6 | m5 | m4 */
- MOVAPS( M(8), XMM2 ) /* m10 | m9 | m8 */
- MOVAPS( M(12), XMM3 ) /* m14 | m13 | m12 */
-
-ALIGNTEXT32
-LLBL(K_GTP3P3DR_top):
- MOVSS( S(0), XMM4 )
- SHUFPS( CONST(0x0), XMM4, XMM4 ) /* ox | ox | ox */
- MULPS( XMM0, XMM4 ) /* ox*m2 | ox*m1 | ox*m0 */
-
- MOVSS( S(1), XMM5 )
- SHUFPS( CONST(0x0), XMM5, XMM5 ) /* oy | oy | oy */
- MULPS( XMM1, XMM5 ) /* oy*m6 | oy*m5 | oy*m4 */
-
- MOVSS( S(2), XMM6 )
- SHUFPS( CONST(0x0), XMM6, XMM6 ) /* oz | oz | oz */
- MULPS( XMM2, XMM6 ) /* oz*m10 | oz*m9 | oz*m8 */
-
- ADDPS( XMM5, XMM4 ) /* + | + | + */
- ADDPS( XMM6, XMM4 ) /* + | + | + */
- ADDPS( XMM3, XMM4 ) /* + | + | + */
-
- MOVLPS( XMM4, D(0) ) /* => D(1) | => D(0) */
- UNPCKHPS( XMM4, XMM4 )
- MOVSS( XMM4, D(2) )
-
-LLBL(K_GTP3P3DR_skip):
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(K_GTP3P3DR_top) )
-
-LLBL(K_GTP3P3DR_finish):
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-#endif
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/** TODO:
+ * - insert PREFETCH instructions to avoid cache-misses !
+ * - some more optimizations are possible...
+ * - for 40-50% more performance in the SSE-functions, the
+ * data (trans-matrix, src_vert, dst_vert) needs to be 16byte aligned !
+ */
+
+#ifdef USE_SSE_ASM
+#include "assyntax.h"
+#include "matypes.h"
+#include "xform_args.h"
+
+ SEG_TEXT
+
+#define S(i) REGOFF(i * 4, ESI)
+#define D(i) REGOFF(i * 4, EDI)
+#define M(i) REGOFF(i * 4, EDX)
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points3_general)
+HIDDEN(_mesa_sse_transform_points3_general)
+GLNAME( _mesa_sse_transform_points3_general ):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ CMP_L ( CONST(0), ECX ) /* count == 0 ? */
+ JE ( LLBL(K_GTPGR_finish) ) /* yes -> nothing to do. */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+
+ALIGNTEXT32
+ MOVAPS ( REGOFF(0, EDX), XMM0 ) /* m0 | m1 | m2 | m3 */
+ MOVAPS ( REGOFF(16, EDX), XMM1 ) /* m4 | m5 | m6 | m7 */
+ MOVAPS ( REGOFF(32, EDX), XMM2 ) /* m8 | m9 | m10 | m11 */
+ MOVAPS ( REGOFF(48, EDX), XMM3 ) /* m12 | m13 | m14 | m15 */
+
+
+ALIGNTEXT32
+LLBL(K_GTPGR_top):
+ MOVSS ( REGOFF(0, ESI), XMM4 ) /* | | | ox */
+ SHUFPS ( CONST(0x0), XMM4, XMM4 ) /* ox | ox | ox | ox */
+ MOVSS ( REGOFF(4, ESI), XMM5 ) /* | | | oy */
+ SHUFPS ( CONST(0x0), XMM5, XMM5 ) /* oy | oy | oy | oy */
+ MOVSS ( REGOFF(8, ESI), XMM6 ) /* | | | oz */
+ SHUFPS ( CONST(0x0), XMM6, XMM6 ) /* oz | oz | oz | oz */
+
+ MULPS ( XMM0, XMM4 ) /* m3*ox | m2*ox | m1*ox | m0*ox */
+ MULPS ( XMM1, XMM5 ) /* m7*oy | m6*oy | m5*oy | m4*oy */
+ MULPS ( XMM2, XMM6 ) /* m11*oz | m10*oz | m9*oz | m8*oz */
+
+ ADDPS ( XMM5, XMM4 )
+ ADDPS ( XMM6, XMM4 )
+ ADDPS ( XMM3, XMM4 )
+
+ MOVAPS ( XMM4, REGOFF(0, EDI) )
+
+LLBL(K_GTPGR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTPGR_top) )
+
+LLBL(K_GTPGR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points3_identity)
+HIDDEN(_mesa_sse_transform_points3_identity)
+GLNAME( _mesa_sse_transform_points3_identity ):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTPIR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ CMP_L( ESI, EDI )
+ JE( LLBL(K_GTPIR_finish) )
+
+
+ALIGNTEXT32
+LLBL(K_GTPIR_top):
+ MOVLPS ( S(0), XMM0 )
+ MOVLPS ( XMM0, D(0) )
+ MOVSS ( S(2), XMM0 )
+ MOVSS ( XMM0, D(2) )
+
+LLBL(K_GTPIR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTPIR_top) )
+
+LLBL(K_GTPIR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points3_3d_no_rot)
+HIDDEN(_mesa_sse_transform_points3_3d_no_rot)
+GLNAME(_mesa_sse_transform_points3_3d_no_rot):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP3DNRR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ XORPS( XMM0, XMM0 ) /* clean the working register */
+
+ALIGNTEXT32
+ MOVSS ( M(0), XMM1 ) /* - | - | - | m0 */
+ MOVSS ( M(5), XMM2 ) /* - | - | - | m5 */
+ UNPCKLPS ( XMM2, XMM1 ) /* - | - | m5 | m0 */
+ MOVLPS ( M(12), XMM2 ) /* - | - | m13 | m12 */
+ MOVSS ( M(10), XMM3 ) /* - | - | - | m10 */
+ MOVSS ( M(14), XMM4 ) /* - | - | - | m14 */
+
+ALIGNTEXT32
+LLBL(K_GTP3DNRR_top):
+
+ MOVLPS ( S(0), XMM0 ) /* - | - | s1 | s0 */
+ MULPS ( XMM1, XMM0 ) /* - | - | s1*m5 | s0*m0 */
+ ADDPS ( XMM2, XMM0 ) /* - | - | +m13 | +m12 */
+ MOVLPS ( XMM0, D(0) ) /* -> D(1) | -> D(0) */
+
+ MOVSS ( S(2), XMM0 ) /* sz */
+ MULSS ( XMM3, XMM0 ) /* sz*m10 */
+ ADDSS ( XMM4, XMM0 ) /* +m14 */
+ MOVSS ( XMM0, D(2) ) /* -> D(2) */
+
+LLBL(K_GTP3DNRR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTP3DNRR_top) )
+
+LLBL(K_GTP3DNRR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points3_perspective)
+HIDDEN(_mesa_sse_transform_points3_perspective)
+GLNAME(_mesa_sse_transform_points3_perspective):
+
+#define FRAME_OFFSET 8
+ PUSH_L ( ESI )
+ PUSH_L ( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP3PR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVSS ( M(0), XMM1 ) /* - | - | - | m0 */
+ MOVSS ( M(5), XMM2 ) /* - | - | - | m5 */
+ UNPCKLPS ( XMM2, XMM1 ) /* - | - | m5 | m0 */
+ MOVLPS ( M(8), XMM2 ) /* - | - | m9 | m8 */
+ MOVSS ( M(10), XMM3 ) /* m10 */
+ MOVSS ( M(14), XMM4 ) /* m14 */
+ XORPS ( XMM6, XMM6 ) /* 0 */
+
+ALIGNTEXT32
+LLBL(K_GTP3PR_top):
+ MOVLPS ( S(0), XMM0 ) /* oy | ox */
+ MULPS ( XMM1, XMM0 ) /* oy*m5 | ox*m0 */
+ MOVSS ( S(2), XMM5 ) /* oz */
+ SHUFPS ( CONST(0x0), XMM5, XMM5 ) /* oz | oz */
+ MULPS ( XMM2, XMM5 ) /* oz*m9 | oz*m8 */
+ ADDPS ( XMM5, XMM0 ) /* +oy*m5 | +ox*m0 */
+ MOVLPS ( XMM0, D(0) ) /* ->D(1) | ->D(0) */
+
+ MOVSS ( S(2), XMM0 ) /* oz */
+ MULSS ( XMM3, XMM0 ) /* oz*m10 */
+ ADDSS ( XMM4, XMM0 ) /* +m14 */
+ MOVSS ( XMM0, D(2) ) /* ->D(2) */
+
+ MOVSS ( S(2), XMM0 ) /* oz */
+ MOVSS ( XMM6, XMM5 ) /* 0 */
+ SUBPS ( XMM0, XMM5 ) /* -oz */
+ MOVSS ( XMM5, D(3) ) /* ->D(3) */
+
+LLBL(K_GTP3PR_skip):
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(K_GTP3PR_top) )
+
+LLBL(K_GTP3PR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points3_2d)
+HIDDEN(_mesa_sse_transform_points3_2d)
+GLNAME(_mesa_sse_transform_points3_2d):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP3P2DR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVLPS( M(0), XMM0 ) /* m1 | m0 */
+ MOVLPS( M(4), XMM1 ) /* m5 | m4 */
+ MOVLPS( M(12), XMM2 ) /* m13 | m12 */
+
+ALIGNTEXT32
+LLBL(K_GTP3P2DR_top):
+ MOVSS ( S(0), XMM3 ) /* ox */
+ SHUFPS ( CONST(0x0), XMM3, XMM3 ) /* ox | ox */
+ MULPS ( XMM0, XMM3 ) /* ox*m1 | ox*m0 */
+ MOVSS ( S(1), XMM4 ) /* oy */
+ SHUFPS ( CONST(0x0), XMM4, XMM4 ) /* oy | oy */
+ MULPS ( XMM1, XMM4 ) /* oy*m5 | oy*m4 */
+
+ ADDPS ( XMM4, XMM3 )
+ ADDPS ( XMM2, XMM3 )
+ MOVLPS ( XMM3, D(0) )
+
+ MOVSS ( S(2), XMM3 )
+ MOVSS ( XMM3, D(2) )
+
+LLBL(K_GTP3P2DR_skip):
+ ADD_L ( CONST(16), EDI )
+ ADD_L ( EAX, ESI )
+ CMP_L ( ECX, EDI )
+ JNE ( LLBL(K_GTP3P2DR_top) )
+
+LLBL(K_GTP3P2DR_finish):
+ POP_L ( EDI )
+ POP_L ( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points3_2d_no_rot)
+HIDDEN(_mesa_sse_transform_points3_2d_no_rot)
+GLNAME(_mesa_sse_transform_points3_2d_no_rot):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP3P2DNRR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ALIGNTEXT32
+ MOVSS ( M(0), XMM1 ) /* m0 */
+ MOVSS ( M(5), XMM2 ) /* m5 */
+ UNPCKLPS ( XMM2, XMM1 ) /* m5 | m0 */
+ MOVLPS ( M(12), XMM2 ) /* m13 | m12 */
+
+ALIGNTEXT32
+LLBL(K_GTP3P2DNRR_top):
+ MOVLPS( S(0), XMM0 ) /* oy | ox */
+ MULPS( XMM1, XMM0 ) /* oy*m5 | ox*m0 */
+ ADDPS( XMM2, XMM0 ) /* +m13 | +m12 */
+ MOVLPS( XMM0, D(0) ) /* ->D(1) | ->D(0) */
+
+ MOVSS( S(2), XMM0 )
+ MOVSS( XMM0, D(2) )
+
+LLBL(K_GTP3P2DNRR_skip):
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(K_GTP3P2DNRR_top) )
+
+LLBL(K_GTP3P2DNRR_finish):
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME(_mesa_sse_transform_points3_3d)
+HIDDEN(_mesa_sse_transform_points3_3d)
+GLNAME(_mesa_sse_transform_points3_3d):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( REGOFF(OFFSET_SOURCE+8, ESP), ESI ) /* ptr to source GLvector4f */
+ MOV_L( REGOFF(OFFSET_DEST+8, ESP), EDI ) /* ptr to dest GLvector4f */
+
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP3P3DR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) ) /* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+
+ALIGNTEXT32
+ MOVAPS( M(0), XMM0 ) /* m2 | m1 | m0 */
+ MOVAPS( M(4), XMM1 ) /* m6 | m5 | m4 */
+ MOVAPS( M(8), XMM2 ) /* m10 | m9 | m8 */
+ MOVAPS( M(12), XMM3 ) /* m14 | m13 | m12 */
+
+ALIGNTEXT32
+LLBL(K_GTP3P3DR_top):
+ MOVSS( S(0), XMM4 )
+ SHUFPS( CONST(0x0), XMM4, XMM4 ) /* ox | ox | ox */
+ MULPS( XMM0, XMM4 ) /* ox*m2 | ox*m1 | ox*m0 */
+
+ MOVSS( S(1), XMM5 )
+ SHUFPS( CONST(0x0), XMM5, XMM5 ) /* oy | oy | oy */
+ MULPS( XMM1, XMM5 ) /* oy*m6 | oy*m5 | oy*m4 */
+
+ MOVSS( S(2), XMM6 )
+ SHUFPS( CONST(0x0), XMM6, XMM6 ) /* oz | oz | oz */
+ MULPS( XMM2, XMM6 ) /* oz*m10 | oz*m9 | oz*m8 */
+
+ ADDPS( XMM5, XMM4 ) /* + | + | + */
+ ADDPS( XMM6, XMM4 ) /* + | + | + */
+ ADDPS( XMM3, XMM4 ) /* + | + | + */
+
+ MOVLPS( XMM4, D(0) ) /* => D(1) | => D(0) */
+ UNPCKHPS( XMM4, XMM4 )
+ MOVSS( XMM4, D(2) )
+
+LLBL(K_GTP3P3DR_skip):
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(K_GTP3P3DR_top) )
+
+LLBL(K_GTP3P3DR_finish):
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+#endif
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/sse_xform4.S b/mesalib/src/mesa/x86/sse_xform4.S
index 75e0ff396..fb1fa741c 100644
--- a/mesalib/src/mesa/x86/sse_xform4.S
+++ b/mesalib/src/mesa/x86/sse_xform4.S
@@ -1,235 +1,235 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-#ifdef USE_SSE_ASM
-#include "assyntax.h"
-#include "matypes.h"
-#include "xform_args.h"
-
- SEG_TEXT
-
-#define FRAME_OFFSET 8
-
-#define SRC(i) REGOFF(i * 4, ESI)
-#define DST(i) REGOFF(i * 4, EDI)
-#define MAT(i) REGOFF(i * 4, EDX)
-
-#define SELECT(r0, r1, r2, r3) CONST( r0 * 64 + r1 * 16 + r2 * 4 + r3 )
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_sse_transform_points4_general )
-HIDDEN(_mesa_sse_transform_points4_general)
-GLNAME( _mesa_sse_transform_points4_general ):
-
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX ) /* verify non-zero count */
- JE( LLBL( sse_general_done ) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )/* set dest size */
-
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
-
- PREFETCHT0( REGIND(ESI) )
-
- MOVAPS( MAT(0), XMM4 ) /* m3 | m2 | m1 | m0 */
- MOVAPS( MAT(4), XMM5 ) /* m7 | m6 | m5 | m4 */
- MOVAPS( MAT(8), XMM6 ) /* m11 | m10 | m9 | m8 */
- MOVAPS( MAT(12), XMM7 ) /* m15 | m14 | m13 | m12 */
-
-ALIGNTEXT16
-LLBL( sse_general_loop ):
-
- MOVSS( SRC(0), XMM0 ) /* ox */
- SHUFPS( CONST(0x0), XMM0, XMM0 ) /* ox | ox | ox | ox */
- MULPS( XMM4, XMM0 ) /* ox*m3 | ox*m2 | ox*m1 | ox*m0 */
-
- MOVSS( SRC(1), XMM1 ) /* oy */
- SHUFPS( CONST(0x0), XMM1, XMM1 ) /* oy | oy | oy | oy */
- MULPS( XMM5, XMM1 ) /* oy*m7 | oy*m6 | oy*m5 | oy*m4 */
-
- MOVSS( SRC(2), XMM2 ) /* oz */
- SHUFPS( CONST(0x0), XMM2, XMM2 ) /* oz | oz | oz | oz */
- MULPS( XMM6, XMM2 ) /* oz*m11 | oz*m10 | oz*m9 | oz*m8 */
-
- MOVSS( SRC(3), XMM3 ) /* ow */
- SHUFPS( CONST(0x0), XMM3, XMM3 ) /* ow | ow | ow | ow */
- MULPS( XMM7, XMM3 ) /* ow*m15 | ow*m14 | ow*m13 | ow*m12 */
-
- ADDPS( XMM1, XMM0 ) /* ox*m3+oy*m7 | ... */
- ADDPS( XMM2, XMM0 ) /* ox*m3+oy*m7+oz*m11 | ... */
- ADDPS( XMM3, XMM0 ) /* ox*m3+oy*m7+oz*m11+ow*m15 | ... */
- MOVAPS( XMM0, DST(0) ) /* ->D(3) | ->D(2) | ->D(1) | ->D(0) */
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
-
- DEC_L( ECX )
- JNZ( LLBL( sse_general_loop ) )
-
-LLBL( sse_general_done ):
-
- POP_L( EDI )
- POP_L( ESI )
- RET
-
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME( _mesa_sse_transform_points4_3d )
-HIDDEN(_mesa_sse_transform_points4_3d)
-GLNAME( _mesa_sse_transform_points4_3d ):
-
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( ARG_SOURCE, ESI ) /* ptr to source GLvector4f */
- MOV_L( ARG_DEST, EDI ) /* ptr to dest GLvector4f */
-
- MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
-
- TEST_L( ECX, ECX)
- JZ( LLBL(K_GTP43P3DR_finish) ) /* count was zero; go to finish */
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )/* set dest size */
-
- SHL_L( CONST(4), ECX ) /* count *= 16 */
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
-
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
- ADD_L( EDI, ECX ) /* count += dest ptr */
-
- MOVAPS( MAT(0), XMM0 ) /* m3 | m2 | m1 | m0 */
- MOVAPS( MAT(4), XMM1 ) /* m7 | m6 | m5 | m4 */
- MOVAPS( MAT(8), XMM2 ) /* m11 | m10 | m9 | m8 */
- MOVAPS( MAT(12), XMM3 ) /* m15 | m14 | m13 | m12 */
-
-ALIGNTEXT32
-LLBL( K_GTP43P3DR_top ):
- MOVSS( SRC(0), XMM4 ) /* ox */
- SHUFPS( CONST(0x0), XMM4, XMM4 ) /* ox | ox | ox | ox */
- MULPS( XMM0, XMM4 ) /* ox*m3 | ox*m2 | ox*m1 | ox*m0 */
-
- MOVSS( SRC(1), XMM5 ) /* oy */
- SHUFPS( CONST(0x0), XMM5, XMM5 ) /* oy | oy | oy | oy */
- MULPS( XMM1, XMM5 ) /* oy*m7 | oy*m6 | oy*m5 | oy*m4 */
-
- MOVSS( SRC(2), XMM6 ) /* oz */
- SHUFPS( CONST(0x0), XMM6, XMM6 ) /* oz | oz | oz | oz */
- MULPS( XMM2, XMM6 ) /* oz*m11 | oz*m10 | oz*m9 | oz*m8 */
-
- MOVSS( SRC(3), XMM7 ) /* ow */
- SHUFPS( CONST(0x0), XMM7, XMM7 ) /* ow | ow | ow | ow */
- MULPS( XMM3, XMM7 ) /* ow*m15 | ow*m14 | ow*m13 | ow*m12 */
-
- ADDPS( XMM5, XMM4 ) /* ox*m3+oy*m7 | ... */
- ADDPS( XMM6, XMM4 ) /* ox*m3+oy*m7+oz*m11 | ... */
- ADDPS( XMM7, XMM4 ) /* ox*m3+oy*m7+oz*m11+ow*m15 | ... */
- MOVAPS( XMM4, DST(0) ) /* ->D(3) | ->D(2) | ->D(1) | ->D(0) */
-
- MOVSS( SRC(3), XMM4 ) /* ow */
- MOVSS( XMM4, DST(3) ) /* ->D(3) */
-
-LLBL( K_GTP43P3DR_skip ):
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(K_GTP43P3DR_top) )
-
-LLBL( K_GTP43P3DR_finish ):
- POP_L( EDI )
- POP_L( ESI )
- RET
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_sse_transform_points4_identity )
-HIDDEN(_mesa_sse_transform_points4_identity)
-GLNAME( _mesa_sse_transform_points4_identity ):
-
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX ) /* verify non-zero count */
- JE( LLBL( sse_identity_done ) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )/* set dest size */
-
- MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
- MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
-
-ALIGNTEXT16
-LLBL( sse_identity_loop ):
-
- PREFETCHNTA( REGOFF(32, ESI) )
-
- MOVAPS( REGIND(ESI), XMM0 )
- ADD_L( EAX, ESI )
-
- MOVAPS( XMM0, REGIND(EDI) )
- ADD_L( CONST(16), EDI )
-
- DEC_L( ECX )
- JNZ( LLBL( sse_identity_loop ) )
-
-LLBL( sse_identity_done ):
-
- POP_L( EDI )
- POP_L( ESI )
- RET
-#endif
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+#ifdef USE_SSE_ASM
+#include "assyntax.h"
+#include "matypes.h"
+#include "xform_args.h"
+
+ SEG_TEXT
+
+#define FRAME_OFFSET 8
+
+#define SRC(i) REGOFF(i * 4, ESI)
+#define DST(i) REGOFF(i * 4, EDI)
+#define MAT(i) REGOFF(i * 4, EDX)
+
+#define SELECT(r0, r1, r2, r3) CONST( r0 * 64 + r1 * 16 + r2 * 4 + r3 )
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_sse_transform_points4_general )
+HIDDEN(_mesa_sse_transform_points4_general)
+GLNAME( _mesa_sse_transform_points4_general ):
+
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX ) /* verify non-zero count */
+ JE( LLBL( sse_general_done ) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )/* set dest size */
+
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+
+ PREFETCHT0( REGIND(ESI) )
+
+ MOVAPS( MAT(0), XMM4 ) /* m3 | m2 | m1 | m0 */
+ MOVAPS( MAT(4), XMM5 ) /* m7 | m6 | m5 | m4 */
+ MOVAPS( MAT(8), XMM6 ) /* m11 | m10 | m9 | m8 */
+ MOVAPS( MAT(12), XMM7 ) /* m15 | m14 | m13 | m12 */
+
+ALIGNTEXT16
+LLBL( sse_general_loop ):
+
+ MOVSS( SRC(0), XMM0 ) /* ox */
+ SHUFPS( CONST(0x0), XMM0, XMM0 ) /* ox | ox | ox | ox */
+ MULPS( XMM4, XMM0 ) /* ox*m3 | ox*m2 | ox*m1 | ox*m0 */
+
+ MOVSS( SRC(1), XMM1 ) /* oy */
+ SHUFPS( CONST(0x0), XMM1, XMM1 ) /* oy | oy | oy | oy */
+ MULPS( XMM5, XMM1 ) /* oy*m7 | oy*m6 | oy*m5 | oy*m4 */
+
+ MOVSS( SRC(2), XMM2 ) /* oz */
+ SHUFPS( CONST(0x0), XMM2, XMM2 ) /* oz | oz | oz | oz */
+ MULPS( XMM6, XMM2 ) /* oz*m11 | oz*m10 | oz*m9 | oz*m8 */
+
+ MOVSS( SRC(3), XMM3 ) /* ow */
+ SHUFPS( CONST(0x0), XMM3, XMM3 ) /* ow | ow | ow | ow */
+ MULPS( XMM7, XMM3 ) /* ow*m15 | ow*m14 | ow*m13 | ow*m12 */
+
+ ADDPS( XMM1, XMM0 ) /* ox*m3+oy*m7 | ... */
+ ADDPS( XMM2, XMM0 ) /* ox*m3+oy*m7+oz*m11 | ... */
+ ADDPS( XMM3, XMM0 ) /* ox*m3+oy*m7+oz*m11+ow*m15 | ... */
+ MOVAPS( XMM0, DST(0) ) /* ->D(3) | ->D(2) | ->D(1) | ->D(0) */
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+
+ DEC_L( ECX )
+ JNZ( LLBL( sse_general_loop ) )
+
+LLBL( sse_general_done ):
+
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME( _mesa_sse_transform_points4_3d )
+HIDDEN(_mesa_sse_transform_points4_3d)
+GLNAME( _mesa_sse_transform_points4_3d ):
+
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( ARG_SOURCE, ESI ) /* ptr to source GLvector4f */
+ MOV_L( ARG_DEST, EDI ) /* ptr to dest GLvector4f */
+
+ MOV_L( ARG_MATRIX, EDX ) /* ptr to matrix */
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX ) /* source count */
+
+ TEST_L( ECX, ECX)
+ JZ( LLBL(K_GTP43P3DR_finish) ) /* count was zero; go to finish */
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )/* set dest size */
+
+ SHL_L( CONST(4), ECX ) /* count *= 16 */
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+ ADD_L( EDI, ECX ) /* count += dest ptr */
+
+ MOVAPS( MAT(0), XMM0 ) /* m3 | m2 | m1 | m0 */
+ MOVAPS( MAT(4), XMM1 ) /* m7 | m6 | m5 | m4 */
+ MOVAPS( MAT(8), XMM2 ) /* m11 | m10 | m9 | m8 */
+ MOVAPS( MAT(12), XMM3 ) /* m15 | m14 | m13 | m12 */
+
+ALIGNTEXT32
+LLBL( K_GTP43P3DR_top ):
+ MOVSS( SRC(0), XMM4 ) /* ox */
+ SHUFPS( CONST(0x0), XMM4, XMM4 ) /* ox | ox | ox | ox */
+ MULPS( XMM0, XMM4 ) /* ox*m3 | ox*m2 | ox*m1 | ox*m0 */
+
+ MOVSS( SRC(1), XMM5 ) /* oy */
+ SHUFPS( CONST(0x0), XMM5, XMM5 ) /* oy | oy | oy | oy */
+ MULPS( XMM1, XMM5 ) /* oy*m7 | oy*m6 | oy*m5 | oy*m4 */
+
+ MOVSS( SRC(2), XMM6 ) /* oz */
+ SHUFPS( CONST(0x0), XMM6, XMM6 ) /* oz | oz | oz | oz */
+ MULPS( XMM2, XMM6 ) /* oz*m11 | oz*m10 | oz*m9 | oz*m8 */
+
+ MOVSS( SRC(3), XMM7 ) /* ow */
+ SHUFPS( CONST(0x0), XMM7, XMM7 ) /* ow | ow | ow | ow */
+ MULPS( XMM3, XMM7 ) /* ow*m15 | ow*m14 | ow*m13 | ow*m12 */
+
+ ADDPS( XMM5, XMM4 ) /* ox*m3+oy*m7 | ... */
+ ADDPS( XMM6, XMM4 ) /* ox*m3+oy*m7+oz*m11 | ... */
+ ADDPS( XMM7, XMM4 ) /* ox*m3+oy*m7+oz*m11+ow*m15 | ... */
+ MOVAPS( XMM4, DST(0) ) /* ->D(3) | ->D(2) | ->D(1) | ->D(0) */
+
+ MOVSS( SRC(3), XMM4 ) /* ow */
+ MOVSS( XMM4, DST(3) ) /* ->D(3) */
+
+LLBL( K_GTP43P3DR_skip ):
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(K_GTP43P3DR_top) )
+
+LLBL( K_GTP43P3DR_finish ):
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_sse_transform_points4_identity )
+HIDDEN(_mesa_sse_transform_points4_identity)
+GLNAME( _mesa_sse_transform_points4_identity ):
+
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX ) /* verify non-zero count */
+ JE( LLBL( sse_identity_done ) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX ) /* stride */
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) ) /* set dest flags */
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) ) /* set dest count */
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )/* set dest size */
+
+ MOV_L( REGOFF(V4F_START, ESI), ESI ) /* ptr to first source vertex */
+ MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */
+
+ALIGNTEXT16
+LLBL( sse_identity_loop ):
+
+ PREFETCHNTA( REGOFF(32, ESI) )
+
+ MOVAPS( REGIND(ESI), XMM0 )
+ ADD_L( EAX, ESI )
+
+ MOVAPS( XMM0, REGIND(EDI) )
+ ADD_L( CONST(16), EDI )
+
+ DEC_L( ECX )
+ JNZ( LLBL( sse_identity_loop ) )
+
+LLBL( sse_identity_done ):
+
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#endif
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/x86_cliptest.S b/mesalib/src/mesa/x86/x86_cliptest.S
index 8556a887a..e413aee61 100644
--- a/mesalib/src/mesa/x86/x86_cliptest.S
+++ b/mesalib/src/mesa/x86/x86_cliptest.S
@@ -1,407 +1,407 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
- * with macros like CONST, LLBL that expand to CONCAT(...). Putting spaces
- * in there will break the build on some platforms.
- */
-
-#include "assyntax.h"
-#include "matypes.h"
-#include "clip_args.h"
-
-#define SRC0 REGOFF(0, ESI)
-#define SRC1 REGOFF(4, ESI)
-#define SRC2 REGOFF(8, ESI)
-#define SRC3 REGOFF(12, ESI)
-#define DST0 REGOFF(0, EDI)
-#define DST1 REGOFF(4, EDI)
-#define DST2 REGOFF(8, EDI)
-#define DST3 REGOFF(12, EDI)
-#define MAT0 REGOFF(0, EDX)
-#define MAT1 REGOFF(4, EDX)
-#define MAT2 REGOFF(8, EDX)
-#define MAT3 REGOFF(12, EDX)
-
-
-/*
- * Table for clip test.
- *
- * bit6 = SRC3 < 0
- * bit5 = SRC2 < 0
- * bit4 = abs(S(2)) > abs(S(3))
- * bit3 = SRC1 < 0
- * bit2 = abs(S(1)) > abs(S(3))
- * bit1 = SRC0 < 0
- * bit0 = abs(S(0)) > abs(S(3))
- */
-
- SEG_DATA
-
-clip_table:
- D_BYTE 0x00, 0x01, 0x00, 0x02, 0x04, 0x05, 0x04, 0x06
- D_BYTE 0x00, 0x01, 0x00, 0x02, 0x08, 0x09, 0x08, 0x0a
- D_BYTE 0x20, 0x21, 0x20, 0x22, 0x24, 0x25, 0x24, 0x26
- D_BYTE 0x20, 0x21, 0x20, 0x22, 0x28, 0x29, 0x28, 0x2a
- D_BYTE 0x00, 0x01, 0x00, 0x02, 0x04, 0x05, 0x04, 0x06
- D_BYTE 0x00, 0x01, 0x00, 0x02, 0x08, 0x09, 0x08, 0x0a
- D_BYTE 0x10, 0x11, 0x10, 0x12, 0x14, 0x15, 0x14, 0x16
- D_BYTE 0x10, 0x11, 0x10, 0x12, 0x18, 0x19, 0x18, 0x1a
- D_BYTE 0x3f, 0x3d, 0x3f, 0x3e, 0x37, 0x35, 0x37, 0x36
- D_BYTE 0x3f, 0x3d, 0x3f, 0x3e, 0x3b, 0x39, 0x3b, 0x3a
- D_BYTE 0x2f, 0x2d, 0x2f, 0x2e, 0x27, 0x25, 0x27, 0x26
- D_BYTE 0x2f, 0x2d, 0x2f, 0x2e, 0x2b, 0x29, 0x2b, 0x2a
- D_BYTE 0x3f, 0x3d, 0x3f, 0x3e, 0x37, 0x35, 0x37, 0x36
- D_BYTE 0x3f, 0x3d, 0x3f, 0x3e, 0x3b, 0x39, 0x3b, 0x3a
- D_BYTE 0x1f, 0x1d, 0x1f, 0x1e, 0x17, 0x15, 0x17, 0x16
- D_BYTE 0x1f, 0x1d, 0x1f, 0x1e, 0x1b, 0x19, 0x1b, 0x1a
-
-
- SEG_TEXT
-
-/*
- * _mesa_x86_cliptest_points4
- *
- * AL: ormask
- * AH: andmask
- * EBX: temp0
- * ECX: temp1
- * EDX: clipmask[]
- * ESI: clip[]
- * EDI: proj[]
- * EBP: temp2
- */
-
-#if defined(__ELF__) && defined(__PIC__) && defined(GNU_ASSEMBLER) && !defined(ELFPIC)
-#define ELFPIC
-#endif
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_cliptest_points4 )
-HIDDEN(_mesa_x86_cliptest_points4)
-GLNAME( _mesa_x86_cliptest_points4 ):
-
-#ifdef ELFPIC
-#define FRAME_OFFSET 20
-#else
-#define FRAME_OFFSET 16
-#endif
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBP )
- PUSH_L( EBX )
-
-#ifdef ELFPIC
- /* store pointer to clip_table on stack */
- CALL( LLBL(ctp4_get_eip) )
- ADD_L( CONST(_GLOBAL_OFFSET_TABLE_), EBX )
- MOV_L( REGOFF(clip_table@GOT, EBX), EBX )
- PUSH_L( EBX )
- JMP( LLBL(ctp4_clip_table_ready) )
-
-LLBL(ctp4_get_eip):
- /* store eip in ebx */
- MOV_L( REGIND(ESP), EBX )
- RET
-
-LLBL(ctp4_clip_table_ready):
-#endif
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_CLIP, EDX )
- MOV_L( ARG_OR, EBX )
-
- MOV_L( ARG_AND, EBP )
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
-
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
- MOV_L( EAX, ARG_SOURCE ) /* put stride in ARG_SOURCE */
-
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDX, ECX )
-
- MOV_L( ECX, ARG_CLIP ) /* put clipmask + count in ARG_CLIP */
- CMP_L( ECX, EDX )
-
- MOV_B( REGIND(EBX), AL )
- MOV_B( REGIND(EBP), AH )
-
- JZ( LLBL(ctp4_finish) )
-
-ALIGNTEXT16
-LLBL(ctp4_top):
-
- FLD1 /* F3 */
- FDIV_S( SRC3 ) /* GH: don't care about div-by-zero */
-
- MOV_L( SRC3, EBP )
- MOV_L( SRC2, EBX )
-
- XOR_L( ECX, ECX )
- ADD_L( EBP, EBP ) /* ebp = abs(S(3))*2 ; carry = sign of S(3) */
-
- ADC_L( ECX, ECX )
- ADD_L( EBX, EBX ) /* ebx = abs(S(2))*2 ; carry = sign of S(2) */
-
- ADC_L( ECX, ECX )
- CMP_L( EBX, EBP ) /* carry = abs(S(2))*2 > abs(S(3))*2 */
-
- ADC_L( ECX, ECX )
- MOV_L( SRC1, EBX )
-
- ADD_L( EBX, EBX ) /* ebx = abs(S(1))*2 ; carry = sign of S(1) */
-
- ADC_L( ECX, ECX )
- CMP_L( EBX, EBP ) /* carry = abs(S(1))*2 > abs(S(3))*2 */
-
- ADC_L( ECX, ECX )
- MOV_L( SRC0, EBX )
-
- ADD_L( EBX, EBX ) /* ebx = abs(S(0))*2 ; carry = sign of S(0) */
-
- ADC_L( ECX, ECX )
- CMP_L( EBX, EBP ) /* carry = abs(S(0))*2 > abs(S(3))*2 */
-
- ADC_L( ECX, ECX )
-
-#ifdef ELFPIC
- MOV_L( REGIND(ESP), EBP ) /* clip_table */
-
- MOV_B( REGBI(EBP, ECX), CL )
-#else
- MOV_B( REGOFF(clip_table,ECX), CL )
-#endif
-
- OR_B( CL, AL )
- AND_B( CL, AH )
-
- TEST_B( CL, CL )
- MOV_B( CL, REGIND(EDX) )
-
- JZ( LLBL(ctp4_proj) )
-
-LLBL(ctp4_noproj):
-
- FSTP( ST(0) ) /* */
-
- MOV_L( CONST(0), DST0 )
- MOV_L( CONST(0), DST1 )
- MOV_L( CONST(0), DST2 )
- MOV_L( CONST(0x3f800000), DST3 )
-
- JMP( LLBL(ctp4_next) )
-
-LLBL(ctp4_proj):
-
- FLD_S( SRC0 ) /* F0 F3 */
- FMUL2( ST(1), ST0 )
-
- FLD_S( SRC1 ) /* F1 F0 F3 */
- FMUL2( ST(2), ST0 )
-
- FLD_S( SRC2 ) /* F2 F1 F0 F3 */
- FMUL2( ST(3), ST0 )
-
- FXCH( ST(2) ) /* F0 F1 F2 F3 */
- FSTP_S( DST0 ) /* F1 F2 F3 */
- FSTP_S( DST1 ) /* F2 F3 */
- FSTP_S( DST2 ) /* F3 */
- FSTP_S( DST3 ) /* */
-
-LLBL(ctp4_next):
-
- INC_L( EDX )
- ADD_L( CONST(16), EDI )
-
- ADD_L( ARG_SOURCE, ESI )
- CMP_L( EDX, ARG_CLIP )
-
- JNZ( LLBL(ctp4_top) )
-
- MOV_L( ARG_OR, ECX )
- MOV_L( ARG_AND, EDX )
-
- MOV_B( AL, REGIND(ECX) )
- MOV_B( AH, REGIND(EDX) )
-
-LLBL(ctp4_finish):
-
- MOV_L( ARG_DEST, EAX )
-#ifdef ELFPIC
- POP_L( ESI ) /* discard ptr to clip_table */
-#endif
- POP_L( EBX )
- POP_L( EBP )
- POP_L( EDI )
- POP_L( ESI )
-
- RET
-
-
-
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_cliptest_points4_np )
-HIDDEN(_mesa_x86_cliptest_points4_np)
-GLNAME( _mesa_x86_cliptest_points4_np ):
-
-#ifdef ELFPIC
-#define FRAME_OFFSET 20
-#else
-#define FRAME_OFFSET 16
-#endif
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBP )
- PUSH_L( EBX )
-
-#ifdef ELFPIC
- /* store pointer to clip_table on stack */
- CALL( LLBL(ctp4_np_get_eip) )
- ADD_L( CONST(_GLOBAL_OFFSET_TABLE_), EBX )
- MOV_L( REGOFF(clip_table@GOT, EBX), EBX )
- PUSH_L( EBX )
- JMP( LLBL(ctp4_np_clip_table_ready) )
-
-LLBL(ctp4_np_get_eip):
- /* store eip in ebx */
- MOV_L( REGIND(ESP), EBX )
- RET
-
-LLBL(ctp4_np_clip_table_ready):
-#endif
-
- MOV_L( ARG_SOURCE, ESI )
- /* slot */
-
- MOV_L( ARG_CLIP, EDX )
- MOV_L( ARG_OR, EBX )
-
- MOV_L( ARG_AND, EBP )
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
-
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( EAX, ARG_DEST ) /* put stride in ARG_DEST */
- ADD_L( EDX, ECX )
-
- MOV_L( ECX, EDI ) /* put clipmask + count in EDI */
- CMP_L( ECX, EDX )
-
- MOV_B( REGIND(EBX), AL )
- MOV_B( REGIND(EBP), AH )
-
- JZ( LLBL(ctp4_np_finish) )
-
-ALIGNTEXT16
-LLBL(ctp4_np_top):
-
- MOV_L( SRC3, EBP )
- MOV_L( SRC2, EBX )
-
- XOR_L( ECX, ECX )
- ADD_L( EBP, EBP ) /* ebp = abs(S(3))*2 ; carry = sign of S(3) */
-
- ADC_L( ECX, ECX )
- ADD_L( EBX, EBX ) /* ebx = abs(S(2))*2 ; carry = sign of S(2) */
-
- ADC_L( ECX, ECX )
- CMP_L( EBX, EBP ) /* carry = abs(S(2))*2 > abs(S(3))*2 */
-
- ADC_L( ECX, ECX )
- MOV_L( SRC1, EBX )
-
- ADD_L( EBX, EBX ) /* ebx = abs(S(1))*2 ; carry = sign of S(1) */
-
- ADC_L( ECX, ECX )
- CMP_L( EBX, EBP ) /* carry = abs(S(1))*2 > abs(S(3))*2 */
-
- ADC_L( ECX, ECX )
- MOV_L( SRC0, EBX )
-
- ADD_L( EBX, EBX ) /* ebx = abs(S(0))*2 ; carry = sign of S(0) */
-
- ADC_L( ECX, ECX )
- CMP_L( EBX, EBP ) /* carry = abs(S(0))*2 > abs(S(3))*2 */
-
- ADC_L( ECX, ECX )
-
-#ifdef ELFPIC
- MOV_L( REGIND(ESP), EBP ) /* clip_table */
-
- MOV_B( REGBI(EBP, ECX), CL )
-#else
- MOV_B( REGOFF(clip_table,ECX), CL )
-#endif
-
- OR_B( CL, AL )
- AND_B( CL, AH )
-
- TEST_B( CL, CL )
- MOV_B( CL, REGIND(EDX) )
-
- INC_L( EDX )
- /* slot */
-
- ADD_L( ARG_DEST, ESI )
- CMP_L( EDX, EDI )
-
- JNZ( LLBL(ctp4_np_top) )
-
- MOV_L( ARG_OR, ECX )
- MOV_L( ARG_AND, EDX )
-
- MOV_B( AL, REGIND(ECX) )
- MOV_B( AH, REGIND(EDX) )
-
-LLBL(ctp4_np_finish):
-
- MOV_L( ARG_SOURCE, EAX )
-#ifdef ELFPIC
- POP_L( ESI ) /* discard ptr to clip_table */
-#endif
- POP_L( EBX )
- POP_L( EBP )
- POP_L( EDI )
- POP_L( ESI )
-
- RET
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
+ * with macros like CONST, LLBL that expand to CONCAT(...). Putting spaces
+ * in there will break the build on some platforms.
+ */
+
+#include "assyntax.h"
+#include "matypes.h"
+#include "clip_args.h"
+
+#define SRC0 REGOFF(0, ESI)
+#define SRC1 REGOFF(4, ESI)
+#define SRC2 REGOFF(8, ESI)
+#define SRC3 REGOFF(12, ESI)
+#define DST0 REGOFF(0, EDI)
+#define DST1 REGOFF(4, EDI)
+#define DST2 REGOFF(8, EDI)
+#define DST3 REGOFF(12, EDI)
+#define MAT0 REGOFF(0, EDX)
+#define MAT1 REGOFF(4, EDX)
+#define MAT2 REGOFF(8, EDX)
+#define MAT3 REGOFF(12, EDX)
+
+
+/*
+ * Table for clip test.
+ *
+ * bit6 = SRC3 < 0
+ * bit5 = SRC2 < 0
+ * bit4 = abs(S(2)) > abs(S(3))
+ * bit3 = SRC1 < 0
+ * bit2 = abs(S(1)) > abs(S(3))
+ * bit1 = SRC0 < 0
+ * bit0 = abs(S(0)) > abs(S(3))
+ */
+
+ SEG_DATA
+
+clip_table:
+ D_BYTE 0x00, 0x01, 0x00, 0x02, 0x04, 0x05, 0x04, 0x06
+ D_BYTE 0x00, 0x01, 0x00, 0x02, 0x08, 0x09, 0x08, 0x0a
+ D_BYTE 0x20, 0x21, 0x20, 0x22, 0x24, 0x25, 0x24, 0x26
+ D_BYTE 0x20, 0x21, 0x20, 0x22, 0x28, 0x29, 0x28, 0x2a
+ D_BYTE 0x00, 0x01, 0x00, 0x02, 0x04, 0x05, 0x04, 0x06
+ D_BYTE 0x00, 0x01, 0x00, 0x02, 0x08, 0x09, 0x08, 0x0a
+ D_BYTE 0x10, 0x11, 0x10, 0x12, 0x14, 0x15, 0x14, 0x16
+ D_BYTE 0x10, 0x11, 0x10, 0x12, 0x18, 0x19, 0x18, 0x1a
+ D_BYTE 0x3f, 0x3d, 0x3f, 0x3e, 0x37, 0x35, 0x37, 0x36
+ D_BYTE 0x3f, 0x3d, 0x3f, 0x3e, 0x3b, 0x39, 0x3b, 0x3a
+ D_BYTE 0x2f, 0x2d, 0x2f, 0x2e, 0x27, 0x25, 0x27, 0x26
+ D_BYTE 0x2f, 0x2d, 0x2f, 0x2e, 0x2b, 0x29, 0x2b, 0x2a
+ D_BYTE 0x3f, 0x3d, 0x3f, 0x3e, 0x37, 0x35, 0x37, 0x36
+ D_BYTE 0x3f, 0x3d, 0x3f, 0x3e, 0x3b, 0x39, 0x3b, 0x3a
+ D_BYTE 0x1f, 0x1d, 0x1f, 0x1e, 0x17, 0x15, 0x17, 0x16
+ D_BYTE 0x1f, 0x1d, 0x1f, 0x1e, 0x1b, 0x19, 0x1b, 0x1a
+
+
+ SEG_TEXT
+
+/*
+ * _mesa_x86_cliptest_points4
+ *
+ * AL: ormask
+ * AH: andmask
+ * EBX: temp0
+ * ECX: temp1
+ * EDX: clipmask[]
+ * ESI: clip[]
+ * EDI: proj[]
+ * EBP: temp2
+ */
+
+#if defined(__ELF__) && defined(__PIC__) && defined(GNU_ASSEMBLER) && !defined(ELFPIC)
+#define ELFPIC
+#endif
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_cliptest_points4 )
+HIDDEN(_mesa_x86_cliptest_points4)
+GLNAME( _mesa_x86_cliptest_points4 ):
+
+#ifdef ELFPIC
+#define FRAME_OFFSET 20
+#else
+#define FRAME_OFFSET 16
+#endif
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBP )
+ PUSH_L( EBX )
+
+#ifdef ELFPIC
+ /* store pointer to clip_table on stack */
+ CALL( LLBL(ctp4_get_eip) )
+ ADD_L( CONST(_GLOBAL_OFFSET_TABLE_), EBX )
+ MOV_L( REGOFF(clip_table@GOT, EBX), EBX )
+ PUSH_L( EBX )
+ JMP( LLBL(ctp4_clip_table_ready) )
+
+LLBL(ctp4_get_eip):
+ /* store eip in ebx */
+ MOV_L( REGIND(ESP), EBX )
+ RET
+
+LLBL(ctp4_clip_table_ready):
+#endif
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_CLIP, EDX )
+ MOV_L( ARG_OR, EBX )
+
+ MOV_L( ARG_AND, EBP )
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+ MOV_L( EAX, ARG_SOURCE ) /* put stride in ARG_SOURCE */
+
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDX, ECX )
+
+ MOV_L( ECX, ARG_CLIP ) /* put clipmask + count in ARG_CLIP */
+ CMP_L( ECX, EDX )
+
+ MOV_B( REGIND(EBX), AL )
+ MOV_B( REGIND(EBP), AH )
+
+ JZ( LLBL(ctp4_finish) )
+
+ALIGNTEXT16
+LLBL(ctp4_top):
+
+ FLD1 /* F3 */
+ FDIV_S( SRC3 ) /* GH: don't care about div-by-zero */
+
+ MOV_L( SRC3, EBP )
+ MOV_L( SRC2, EBX )
+
+ XOR_L( ECX, ECX )
+ ADD_L( EBP, EBP ) /* ebp = abs(S(3))*2 ; carry = sign of S(3) */
+
+ ADC_L( ECX, ECX )
+ ADD_L( EBX, EBX ) /* ebx = abs(S(2))*2 ; carry = sign of S(2) */
+
+ ADC_L( ECX, ECX )
+ CMP_L( EBX, EBP ) /* carry = abs(S(2))*2 > abs(S(3))*2 */
+
+ ADC_L( ECX, ECX )
+ MOV_L( SRC1, EBX )
+
+ ADD_L( EBX, EBX ) /* ebx = abs(S(1))*2 ; carry = sign of S(1) */
+
+ ADC_L( ECX, ECX )
+ CMP_L( EBX, EBP ) /* carry = abs(S(1))*2 > abs(S(3))*2 */
+
+ ADC_L( ECX, ECX )
+ MOV_L( SRC0, EBX )
+
+ ADD_L( EBX, EBX ) /* ebx = abs(S(0))*2 ; carry = sign of S(0) */
+
+ ADC_L( ECX, ECX )
+ CMP_L( EBX, EBP ) /* carry = abs(S(0))*2 > abs(S(3))*2 */
+
+ ADC_L( ECX, ECX )
+
+#ifdef ELFPIC
+ MOV_L( REGIND(ESP), EBP ) /* clip_table */
+
+ MOV_B( REGBI(EBP, ECX), CL )
+#else
+ MOV_B( REGOFF(clip_table,ECX), CL )
+#endif
+
+ OR_B( CL, AL )
+ AND_B( CL, AH )
+
+ TEST_B( CL, CL )
+ MOV_B( CL, REGIND(EDX) )
+
+ JZ( LLBL(ctp4_proj) )
+
+LLBL(ctp4_noproj):
+
+ FSTP( ST(0) ) /* */
+
+ MOV_L( CONST(0), DST0 )
+ MOV_L( CONST(0), DST1 )
+ MOV_L( CONST(0), DST2 )
+ MOV_L( CONST(0x3f800000), DST3 )
+
+ JMP( LLBL(ctp4_next) )
+
+LLBL(ctp4_proj):
+
+ FLD_S( SRC0 ) /* F0 F3 */
+ FMUL2( ST(1), ST0 )
+
+ FLD_S( SRC1 ) /* F1 F0 F3 */
+ FMUL2( ST(2), ST0 )
+
+ FLD_S( SRC2 ) /* F2 F1 F0 F3 */
+ FMUL2( ST(3), ST0 )
+
+ FXCH( ST(2) ) /* F0 F1 F2 F3 */
+ FSTP_S( DST0 ) /* F1 F2 F3 */
+ FSTP_S( DST1 ) /* F2 F3 */
+ FSTP_S( DST2 ) /* F3 */
+ FSTP_S( DST3 ) /* */
+
+LLBL(ctp4_next):
+
+ INC_L( EDX )
+ ADD_L( CONST(16), EDI )
+
+ ADD_L( ARG_SOURCE, ESI )
+ CMP_L( EDX, ARG_CLIP )
+
+ JNZ( LLBL(ctp4_top) )
+
+ MOV_L( ARG_OR, ECX )
+ MOV_L( ARG_AND, EDX )
+
+ MOV_B( AL, REGIND(ECX) )
+ MOV_B( AH, REGIND(EDX) )
+
+LLBL(ctp4_finish):
+
+ MOV_L( ARG_DEST, EAX )
+#ifdef ELFPIC
+ POP_L( ESI ) /* discard ptr to clip_table */
+#endif
+ POP_L( EBX )
+ POP_L( EBP )
+ POP_L( EDI )
+ POP_L( ESI )
+
+ RET
+
+
+
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_cliptest_points4_np )
+HIDDEN(_mesa_x86_cliptest_points4_np)
+GLNAME( _mesa_x86_cliptest_points4_np ):
+
+#ifdef ELFPIC
+#define FRAME_OFFSET 20
+#else
+#define FRAME_OFFSET 16
+#endif
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBP )
+ PUSH_L( EBX )
+
+#ifdef ELFPIC
+ /* store pointer to clip_table on stack */
+ CALL( LLBL(ctp4_np_get_eip) )
+ ADD_L( CONST(_GLOBAL_OFFSET_TABLE_), EBX )
+ MOV_L( REGOFF(clip_table@GOT, EBX), EBX )
+ PUSH_L( EBX )
+ JMP( LLBL(ctp4_np_clip_table_ready) )
+
+LLBL(ctp4_np_get_eip):
+ /* store eip in ebx */
+ MOV_L( REGIND(ESP), EBX )
+ RET
+
+LLBL(ctp4_np_clip_table_ready):
+#endif
+
+ MOV_L( ARG_SOURCE, ESI )
+ /* slot */
+
+ MOV_L( ARG_CLIP, EDX )
+ MOV_L( ARG_OR, EBX )
+
+ MOV_L( ARG_AND, EBP )
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( EAX, ARG_DEST ) /* put stride in ARG_DEST */
+ ADD_L( EDX, ECX )
+
+ MOV_L( ECX, EDI ) /* put clipmask + count in EDI */
+ CMP_L( ECX, EDX )
+
+ MOV_B( REGIND(EBX), AL )
+ MOV_B( REGIND(EBP), AH )
+
+ JZ( LLBL(ctp4_np_finish) )
+
+ALIGNTEXT16
+LLBL(ctp4_np_top):
+
+ MOV_L( SRC3, EBP )
+ MOV_L( SRC2, EBX )
+
+ XOR_L( ECX, ECX )
+ ADD_L( EBP, EBP ) /* ebp = abs(S(3))*2 ; carry = sign of S(3) */
+
+ ADC_L( ECX, ECX )
+ ADD_L( EBX, EBX ) /* ebx = abs(S(2))*2 ; carry = sign of S(2) */
+
+ ADC_L( ECX, ECX )
+ CMP_L( EBX, EBP ) /* carry = abs(S(2))*2 > abs(S(3))*2 */
+
+ ADC_L( ECX, ECX )
+ MOV_L( SRC1, EBX )
+
+ ADD_L( EBX, EBX ) /* ebx = abs(S(1))*2 ; carry = sign of S(1) */
+
+ ADC_L( ECX, ECX )
+ CMP_L( EBX, EBP ) /* carry = abs(S(1))*2 > abs(S(3))*2 */
+
+ ADC_L( ECX, ECX )
+ MOV_L( SRC0, EBX )
+
+ ADD_L( EBX, EBX ) /* ebx = abs(S(0))*2 ; carry = sign of S(0) */
+
+ ADC_L( ECX, ECX )
+ CMP_L( EBX, EBP ) /* carry = abs(S(0))*2 > abs(S(3))*2 */
+
+ ADC_L( ECX, ECX )
+
+#ifdef ELFPIC
+ MOV_L( REGIND(ESP), EBP ) /* clip_table */
+
+ MOV_B( REGBI(EBP, ECX), CL )
+#else
+ MOV_B( REGOFF(clip_table,ECX), CL )
+#endif
+
+ OR_B( CL, AL )
+ AND_B( CL, AH )
+
+ TEST_B( CL, CL )
+ MOV_B( CL, REGIND(EDX) )
+
+ INC_L( EDX )
+ /* slot */
+
+ ADD_L( ARG_DEST, ESI )
+ CMP_L( EDX, EDI )
+
+ JNZ( LLBL(ctp4_np_top) )
+
+ MOV_L( ARG_OR, ECX )
+ MOV_L( ARG_AND, EDX )
+
+ MOV_B( AL, REGIND(ECX) )
+ MOV_B( AH, REGIND(EDX) )
+
+LLBL(ctp4_np_finish):
+
+ MOV_L( ARG_SOURCE, EAX )
+#ifdef ELFPIC
+ POP_L( ESI ) /* discard ptr to clip_table */
+#endif
+ POP_L( EBX )
+ POP_L( EBP )
+ POP_L( EDI )
+ POP_L( ESI )
+
+ RET
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/x86_xform.c b/mesalib/src/mesa/x86/x86_xform.c
index 57b10c262..3dcc55e16 100644
--- a/mesalib/src/mesa/x86/x86_xform.c
+++ b/mesalib/src/mesa/x86/x86_xform.c
@@ -1,126 +1,126 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * Intel x86 assembly code by Josh Vanderhoof
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "math/m_xform.h"
-
-#include "x86_xform.h"
-#include "common_x86_asm.h"
-
-#ifdef USE_X86_ASM
-#ifdef USE_3DNOW_ASM
-#include "3dnow.h"
-#endif
-#ifdef USE_SSE_ASM
-#include "sse.h"
-#endif
-#endif
-
-#ifdef DEBUG_MATH
-#include "math/m_debug.h"
-#endif
-
-
-#ifdef USE_X86_ASM
-DECLARE_XFORM_GROUP( x86, 2 )
-DECLARE_XFORM_GROUP( x86, 3 )
-DECLARE_XFORM_GROUP( x86, 4 )
-
-
-extern GLvector4f * _ASMAPI
-_mesa_x86_cliptest_points4( GLvector4f *clip_vec,
- GLvector4f *proj_vec,
- GLubyte clipMask[],
- GLubyte *orMask,
- GLubyte *andMask,
- GLboolean viewport_z_clip );
-
-extern GLvector4f * _ASMAPI
-_mesa_x86_cliptest_points4_np( GLvector4f *clip_vec,
- GLvector4f *proj_vec,
- GLubyte clipMask[],
- GLubyte *orMask,
- GLubyte *andMask,
- GLboolean viewport_z_clip );
-
-extern void _ASMAPI
-_mesa_v16_x86_cliptest_points4( GLfloat *first_vert,
- GLfloat *last_vert,
- GLubyte *or_mask,
- GLubyte *and_mask,
- GLubyte *clip_mask,
- GLboolean viewport_z_clip );
-
-extern void _ASMAPI
-_mesa_v16_x86_general_xform( GLfloat *dest,
- const GLfloat *m,
- const GLfloat *src,
- GLuint src_stride,
- GLuint count );
-#endif
-
-
-#ifdef USE_X86_ASM
-static void _mesa_init_x86_transform_asm( void )
-{
- ASSIGN_XFORM_GROUP( x86, 2 );
- ASSIGN_XFORM_GROUP( x86, 3 );
- ASSIGN_XFORM_GROUP( x86, 4 );
-
- _mesa_clip_tab[4] = _mesa_x86_cliptest_points4;
- _mesa_clip_np_tab[4] = _mesa_x86_cliptest_points4_np;
-
-#ifdef DEBUG_MATH
- _math_test_all_transform_functions( "x86" );
- _math_test_all_cliptest_functions( "x86" );
-#endif
-}
-#endif
-
-
-void _mesa_init_all_x86_transform_asm( void )
-{
- _mesa_get_x86_features();
-
-#ifdef USE_X86_ASM
- if ( _mesa_x86_cpu_features ) {
- _mesa_init_x86_transform_asm();
- }
-
- if (cpu_has_3dnow) {
- _mesa_init_3dnow_transform_asm();
- }
-
- if ( cpu_has_xmm ) {
- _mesa_init_sse_transform_asm();
- }
-
-#endif
-}
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * Intel x86 assembly code by Josh Vanderhoof
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "math/m_xform.h"
+
+#include "x86_xform.h"
+#include "common_x86_asm.h"
+
+#ifdef USE_X86_ASM
+#ifdef USE_3DNOW_ASM
+#include "3dnow.h"
+#endif
+#ifdef USE_SSE_ASM
+#include "sse.h"
+#endif
+#endif
+
+#ifdef DEBUG_MATH
+#include "math/m_debug.h"
+#endif
+
+
+#ifdef USE_X86_ASM
+DECLARE_XFORM_GROUP( x86, 2 )
+DECLARE_XFORM_GROUP( x86, 3 )
+DECLARE_XFORM_GROUP( x86, 4 )
+
+
+extern GLvector4f * _ASMAPI
+_mesa_x86_cliptest_points4( GLvector4f *clip_vec,
+ GLvector4f *proj_vec,
+ GLubyte clipMask[],
+ GLubyte *orMask,
+ GLubyte *andMask,
+ GLboolean viewport_z_clip );
+
+extern GLvector4f * _ASMAPI
+_mesa_x86_cliptest_points4_np( GLvector4f *clip_vec,
+ GLvector4f *proj_vec,
+ GLubyte clipMask[],
+ GLubyte *orMask,
+ GLubyte *andMask,
+ GLboolean viewport_z_clip );
+
+extern void _ASMAPI
+_mesa_v16_x86_cliptest_points4( GLfloat *first_vert,
+ GLfloat *last_vert,
+ GLubyte *or_mask,
+ GLubyte *and_mask,
+ GLubyte *clip_mask,
+ GLboolean viewport_z_clip );
+
+extern void _ASMAPI
+_mesa_v16_x86_general_xform( GLfloat *dest,
+ const GLfloat *m,
+ const GLfloat *src,
+ GLuint src_stride,
+ GLuint count );
+#endif
+
+
+#ifdef USE_X86_ASM
+static void _mesa_init_x86_transform_asm( void )
+{
+ ASSIGN_XFORM_GROUP( x86, 2 );
+ ASSIGN_XFORM_GROUP( x86, 3 );
+ ASSIGN_XFORM_GROUP( x86, 4 );
+
+ _mesa_clip_tab[4] = _mesa_x86_cliptest_points4;
+ _mesa_clip_np_tab[4] = _mesa_x86_cliptest_points4_np;
+
+#ifdef DEBUG_MATH
+ _math_test_all_transform_functions( "x86" );
+ _math_test_all_cliptest_functions( "x86" );
+#endif
+}
+#endif
+
+
+void _mesa_init_all_x86_transform_asm( void )
+{
+ _mesa_get_x86_features();
+
+#ifdef USE_X86_ASM
+ if ( _mesa_x86_cpu_features ) {
+ _mesa_init_x86_transform_asm();
+ }
+
+ if (cpu_has_3dnow) {
+ _mesa_init_3dnow_transform_asm();
+ }
+
+ if ( cpu_has_xmm ) {
+ _mesa_init_sse_transform_asm();
+ }
+
+#endif
+}
diff --git a/mesalib/src/mesa/x86/x86_xform.h b/mesalib/src/mesa/x86/x86_xform.h
index 055fd6a1f..e886d9add 100644
--- a/mesalib/src/mesa/x86/x86_xform.h
+++ b/mesalib/src/mesa/x86/x86_xform.h
@@ -1,106 +1,106 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- *
- * Authors:
- * Gareth Hughes
- */
-
-#ifndef X86_XFORM_H
-#define X86_XFORM_H
-
-
-/* =============================================================
- * Transformation function declarations:
- */
-
-#define XFORM_ARGS GLvector4f *to_vec, \
- const GLfloat m[16], \
- const GLvector4f *from_vec
-
-#define DECLARE_XFORM_GROUP( pfx, sz ) \
-extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_general( XFORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_identity( XFORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_3d_no_rot( XFORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_perspective( XFORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_2d( XFORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_2d_no_rot( XFORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_3d( XFORM_ARGS );
-
-#define ASSIGN_XFORM_GROUP( pfx, sz ) \
- _mesa_transform_tab[sz][MATRIX_GENERAL] = \
- _mesa_##pfx##_transform_points##sz##_general; \
- _mesa_transform_tab[sz][MATRIX_IDENTITY] = \
- _mesa_##pfx##_transform_points##sz##_identity; \
- _mesa_transform_tab[sz][MATRIX_3D_NO_ROT] = \
- _mesa_##pfx##_transform_points##sz##_3d_no_rot; \
- _mesa_transform_tab[sz][MATRIX_PERSPECTIVE] = \
- _mesa_##pfx##_transform_points##sz##_perspective; \
- _mesa_transform_tab[sz][MATRIX_2D] = \
- _mesa_##pfx##_transform_points##sz##_2d; \
- _mesa_transform_tab[sz][MATRIX_2D_NO_ROT] = \
- _mesa_##pfx##_transform_points##sz##_2d_no_rot; \
- _mesa_transform_tab[sz][MATRIX_3D] = \
- _mesa_##pfx##_transform_points##sz##_3d;
-
-
-/* =============================================================
- * Normal transformation function declarations:
- */
-
-#define NORM_ARGS const GLmatrix *mat, \
- GLfloat scale, \
- const GLvector4f *in, \
- const GLfloat *lengths, \
- GLvector4f *dest
-
-#define DECLARE_NORM_GROUP( pfx ) \
-extern void _ASMAPI _mesa_##pfx##_rescale_normals( NORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_normalize_normals( NORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_normals( NORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_normals_no_rot( NORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_rescale_normals( NORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_rescale_normals_no_rot( NORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_normalize_normals( NORM_ARGS ); \
-extern void _ASMAPI _mesa_##pfx##_transform_normalize_normals_no_rot( NORM_ARGS );
-
-#define ASSIGN_NORM_GROUP( pfx ) \
- _mesa_normal_tab[NORM_RESCALE] = \
- _mesa_##pfx##_rescale_normals; \
- _mesa_normal_tab[NORM_NORMALIZE] = \
- _mesa_##pfx##_normalize_normals; \
- _mesa_normal_tab[NORM_TRANSFORM] = \
- _mesa_##pfx##_transform_normals; \
- _mesa_normal_tab[NORM_TRANSFORM_NO_ROT] = \
- _mesa_##pfx##_transform_normals_no_rot; \
- _mesa_normal_tab[NORM_TRANSFORM | NORM_RESCALE] = \
- _mesa_##pfx##_transform_rescale_normals; \
- _mesa_normal_tab[NORM_TRANSFORM_NO_ROT | NORM_RESCALE] = \
- _mesa_##pfx##_transform_rescale_normals_no_rot; \
- _mesa_normal_tab[NORM_TRANSFORM | NORM_NORMALIZE] = \
- _mesa_##pfx##_transform_normalize_normals; \
- _mesa_normal_tab[NORM_TRANSFORM_NO_ROT | NORM_NORMALIZE] = \
- _mesa_##pfx##_transform_normalize_normals_no_rot;
-
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ *
+ * Authors:
+ * Gareth Hughes
+ */
+
+#ifndef X86_XFORM_H
+#define X86_XFORM_H
+
+
+/* =============================================================
+ * Transformation function declarations:
+ */
+
+#define XFORM_ARGS GLvector4f *to_vec, \
+ const GLfloat m[16], \
+ const GLvector4f *from_vec
+
+#define DECLARE_XFORM_GROUP( pfx, sz ) \
+extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_general( XFORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_identity( XFORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_3d_no_rot( XFORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_perspective( XFORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_2d( XFORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_2d_no_rot( XFORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_points##sz##_3d( XFORM_ARGS );
+
+#define ASSIGN_XFORM_GROUP( pfx, sz ) \
+ _mesa_transform_tab[sz][MATRIX_GENERAL] = \
+ _mesa_##pfx##_transform_points##sz##_general; \
+ _mesa_transform_tab[sz][MATRIX_IDENTITY] = \
+ _mesa_##pfx##_transform_points##sz##_identity; \
+ _mesa_transform_tab[sz][MATRIX_3D_NO_ROT] = \
+ _mesa_##pfx##_transform_points##sz##_3d_no_rot; \
+ _mesa_transform_tab[sz][MATRIX_PERSPECTIVE] = \
+ _mesa_##pfx##_transform_points##sz##_perspective; \
+ _mesa_transform_tab[sz][MATRIX_2D] = \
+ _mesa_##pfx##_transform_points##sz##_2d; \
+ _mesa_transform_tab[sz][MATRIX_2D_NO_ROT] = \
+ _mesa_##pfx##_transform_points##sz##_2d_no_rot; \
+ _mesa_transform_tab[sz][MATRIX_3D] = \
+ _mesa_##pfx##_transform_points##sz##_3d;
+
+
+/* =============================================================
+ * Normal transformation function declarations:
+ */
+
+#define NORM_ARGS const GLmatrix *mat, \
+ GLfloat scale, \
+ const GLvector4f *in, \
+ const GLfloat *lengths, \
+ GLvector4f *dest
+
+#define DECLARE_NORM_GROUP( pfx ) \
+extern void _ASMAPI _mesa_##pfx##_rescale_normals( NORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_normalize_normals( NORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_normals( NORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_normals_no_rot( NORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_rescale_normals( NORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_rescale_normals_no_rot( NORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_normalize_normals( NORM_ARGS ); \
+extern void _ASMAPI _mesa_##pfx##_transform_normalize_normals_no_rot( NORM_ARGS );
+
+#define ASSIGN_NORM_GROUP( pfx ) \
+ _mesa_normal_tab[NORM_RESCALE] = \
+ _mesa_##pfx##_rescale_normals; \
+ _mesa_normal_tab[NORM_NORMALIZE] = \
+ _mesa_##pfx##_normalize_normals; \
+ _mesa_normal_tab[NORM_TRANSFORM] = \
+ _mesa_##pfx##_transform_normals; \
+ _mesa_normal_tab[NORM_TRANSFORM_NO_ROT] = \
+ _mesa_##pfx##_transform_normals_no_rot; \
+ _mesa_normal_tab[NORM_TRANSFORM | NORM_RESCALE] = \
+ _mesa_##pfx##_transform_rescale_normals; \
+ _mesa_normal_tab[NORM_TRANSFORM_NO_ROT | NORM_RESCALE] = \
+ _mesa_##pfx##_transform_rescale_normals_no_rot; \
+ _mesa_normal_tab[NORM_TRANSFORM | NORM_NORMALIZE] = \
+ _mesa_##pfx##_transform_normalize_normals; \
+ _mesa_normal_tab[NORM_TRANSFORM_NO_ROT | NORM_NORMALIZE] = \
+ _mesa_##pfx##_transform_normalize_normals_no_rot;
+
+
+#endif
diff --git a/mesalib/src/mesa/x86/x86_xform2.S b/mesalib/src/mesa/x86/x86_xform2.S
index 482035c1f..980725ef5 100644
--- a/mesalib/src/mesa/x86/x86_xform2.S
+++ b/mesalib/src/mesa/x86/x86_xform2.S
@@ -1,574 +1,574 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
- * with macros like CONST, LLBL that expand to CONCAT(...). Putting spaces
- * in there will break the build on some platforms.
- */
-
-#include "assyntax.h"
-#include "matypes.h"
-#include "xform_args.h"
-
- SEG_TEXT
-
-#define FP_ONE 1065353216
-#define FP_ZERO 0
-
-#define SRC0 REGOFF(0, ESI)
-#define SRC1 REGOFF(4, ESI)
-#define SRC2 REGOFF(8, ESI)
-#define SRC3 REGOFF(12, ESI)
-#define DST0 REGOFF(0, EDI)
-#define DST1 REGOFF(4, EDI)
-#define DST2 REGOFF(8, EDI)
-#define DST3 REGOFF(12, EDI)
-#define MAT0 REGOFF(0, EDX)
-#define MAT1 REGOFF(4, EDX)
-#define MAT2 REGOFF(8, EDX)
-#define MAT3 REGOFF(12, EDX)
-#define MAT4 REGOFF(16, EDX)
-#define MAT5 REGOFF(20, EDX)
-#define MAT6 REGOFF(24, EDX)
-#define MAT7 REGOFF(28, EDX)
-#define MAT8 REGOFF(32, EDX)
-#define MAT9 REGOFF(36, EDX)
-#define MAT10 REGOFF(40, EDX)
-#define MAT11 REGOFF(44, EDX)
-#define MAT12 REGOFF(48, EDX)
-#define MAT13 REGOFF(52, EDX)
-#define MAT14 REGOFF(56, EDX)
-#define MAT15 REGOFF(60, EDX)
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points2_general )
-HIDDEN(_mesa_x86_transform_points2_general)
-GLNAME( _mesa_x86_transform_points2_general ):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p2_gr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p2_gr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
- FLD_S( SRC0 ) /* F5 F4 */
- FMUL_S( MAT1 )
- FLD_S( SRC0 ) /* F6 F5 F4 */
- FMUL_S( MAT2 )
- FLD_S( SRC0 ) /* F7 F6 F5 F4 */
- FMUL_S( MAT3 )
-
- FLD_S( SRC1 ) /* F0 F7 F6 F5 F4 */
- FMUL_S( MAT4 )
- FLD_S( SRC1 ) /* F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT5 )
- FLD_S( SRC1 ) /* F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT6 )
- FLD_S( SRC1 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT7 )
-
- FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
- FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
-
- FXCH( ST(3) ) /* F4 F6 F5 F7 */
- FADD_S( MAT12 )
- FXCH( ST(2) ) /* F5 F6 F4 F7 */
- FADD_S( MAT13 )
- FXCH( ST(1) ) /* F6 F5 F4 F7 */
- FADD_S( MAT14 )
- FXCH( ST(3) ) /* F7 F5 F4 F6 */
- FADD_S( MAT15 )
-
- FXCH( ST(2) ) /* F4 F5 F7 F6 */
- FSTP_S( DST0 ) /* F5 F7 F6 */
- FSTP_S( DST1 ) /* F7 F6 */
- FXCH( ST(1) ) /* F6 F7 */
- FSTP_S( DST2 ) /* F7 */
- FSTP_S( DST3 ) /* */
-
-LLBL(x86_p2_gr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p2_gr_loop) )
-
-LLBL(x86_p2_gr_done):
-
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points2_perspective )
-HIDDEN(_mesa_x86_transform_points2_perspective)
-GLNAME( _mesa_x86_transform_points2_perspective ):
-
-#define FRAME_OFFSET 12
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p2_pr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
- MOV_L( MAT14, EBX )
-
-ALIGNTEXT16
-LLBL(x86_p2_pr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
-
- FLD_S( SRC1 ) /* F1 F4 */
- FMUL_S( MAT5 )
-
- FXCH( ST(1) ) /* F4 F1 */
- FSTP_S( DST0 ) /* F1 */
- FSTP_S( DST1 ) /* */
- MOV_L( EBX, DST2 )
- MOV_L( CONST(FP_ZERO), DST3 )
-
-LLBL(x86_p2_pr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p2_pr_loop) )
-
-LLBL(x86_p2_pr_done):
-
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points2_3d )
-HIDDEN(_mesa_x86_transform_points2_3d)
-GLNAME( _mesa_x86_transform_points2_3d ):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p2_3dr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p2_3dr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
- FLD_S( SRC0 ) /* F5 F4 */
- FMUL_S( MAT1 )
- FLD_S( SRC0 ) /* F6 F5 F4 */
- FMUL_S( MAT2 )
-
- FLD_S( SRC1 ) /* F0 F6 F5 F4 */
- FMUL_S( MAT4 )
- FLD_S( SRC1 ) /* F1 F0 F6 F5 F4 */
- FMUL_S( MAT5 )
- FLD_S( SRC1 ) /* F2 F1 F0 F6 F5 F4 */
- FMUL_S( MAT6 )
-
- FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F6 F5 F4 */
-
- FXCH( ST(2) ) /* F4 F5 F6 */
- FADD_S( MAT12 )
- FXCH( ST(1) ) /* F5 F4 F6 */
- FADD_S( MAT13 )
- FXCH( ST(2) ) /* F6 F4 F5 */
- FADD_S( MAT14 )
-
- FXCH( ST(1) ) /* F4 F6 F5 */
- FSTP_S( DST0 ) /* F6 F5 */
- FXCH( ST(1) ) /* F5 F6 */
- FSTP_S( DST1 ) /* F6 */
- FSTP_S( DST2 ) /* */
-
-LLBL(x86_p2_3dr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p2_3dr_loop) )
-
-LLBL(x86_p2_3dr_done):
-
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points2_3d_no_rot )
-HIDDEN(_mesa_x86_transform_points2_3d_no_rot)
-GLNAME( _mesa_x86_transform_points2_3d_no_rot ):
-
-#define FRAME_OFFSET 12
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p2_3dnrr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
- MOV_L( MAT14, EBX )
-
-ALIGNTEXT16
-LLBL(x86_p2_3dnrr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
-
- FLD_S( SRC1 ) /* F1 F4 */
- FMUL_S( MAT5 )
-
- FXCH( ST(1) ) /* F4 F1 */
- FADD_S( MAT12 )
- FLD_S( MAT13 ) /* F5 F4 F1 */
- FXCH( ST(2) ) /* F1 F4 F5 */
- FADDP( ST0, ST(2) ) /* F4 F5 */
-
- FSTP_S( DST0 ) /* F5 */
- FSTP_S( DST1 ) /* */
- MOV_L( EBX, DST2 )
-
-LLBL(x86_p2_3dnrr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p2_3dnrr_loop) )
-
-LLBL(x86_p2_3dnrr_done):
-
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points2_2d )
-HIDDEN(_mesa_x86_transform_points2_2d)
-GLNAME( _mesa_x86_transform_points2_2d ):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p2_2dr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p2_2dr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
- FLD_S( SRC0 ) /* F5 F4 */
- FMUL_S( MAT1 )
-
- FLD_S( SRC1 ) /* F0 F5 F4 */
- FMUL_S( MAT4 )
- FLD_S( SRC1 ) /* F1 F0 F5 F4 */
- FMUL_S( MAT5 )
-
- FXCH( ST(1) ) /* F0 F1 F5 F4 */
- FADDP( ST0, ST(3) ) /* F1 F5 F4 */
- FADDP( ST0, ST(1) ) /* F5 F4 */
-
- FXCH( ST(1) ) /* F4 F5 */
- FADD_S( MAT12 )
- FXCH( ST(1) ) /* F5 F4 */
- FADD_S( MAT13 )
-
- FXCH( ST(1) ) /* F4 F5 */
- FSTP_S( DST0 ) /* F5 */
- FSTP_S( DST1 ) /* */
-
-LLBL(x86_p2_2dr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p2_2dr_loop) )
-
-LLBL(x86_p2_2dr_done):
-
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT4
-GLOBL GLNAME( _mesa_x86_transform_points2_2d_no_rot )
-HIDDEN(_mesa_x86_transform_points2_2d_no_rot)
-GLNAME( _mesa_x86_transform_points2_2d_no_rot ):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p2_2dnrr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p2_2dnrr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
-
- FLD_S( SRC1 ) /* F1 F4 */
- FMUL_S( MAT5 )
-
- FXCH( ST(1) ) /* F4 F1 */
- FADD_S( MAT12 )
- FLD_S( MAT13 ) /* F5 F4 F1 */
- FXCH( ST(2) ) /* F1 F4 F5 */
- FADDP( ST0, ST(2) ) /* F4 F5 */
-
- FSTP_S( DST0 ) /* F5 */
- FSTP_S( DST1 ) /* */
-
-LLBL(x86_p2_2dnrr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p2_2dnrr_loop) )
-
-LLBL(x86_p2_2dnrr_done):
-
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points2_identity )
-HIDDEN(_mesa_x86_transform_points2_identity)
-GLNAME( _mesa_x86_transform_points2_identity ):
-
-#define FRAME_OFFSET 12
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p2_ir_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
- CMP_L( ESI, EDI )
- JE( LLBL(x86_p2_ir_done) )
-
-ALIGNTEXT16
-LLBL(x86_p2_ir_loop):
-
- MOV_L( SRC0, EBX )
- MOV_L( SRC1, EDX )
-
- MOV_L( EBX, DST0 )
- MOV_L( EDX, DST1 )
-
-LLBL(x86_p2_ir_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p2_ir_loop) )
-
-LLBL(x86_p2_ir_done):
-
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
+ * with macros like CONST, LLBL that expand to CONCAT(...). Putting spaces
+ * in there will break the build on some platforms.
+ */
+
+#include "assyntax.h"
+#include "matypes.h"
+#include "xform_args.h"
+
+ SEG_TEXT
+
+#define FP_ONE 1065353216
+#define FP_ZERO 0
+
+#define SRC0 REGOFF(0, ESI)
+#define SRC1 REGOFF(4, ESI)
+#define SRC2 REGOFF(8, ESI)
+#define SRC3 REGOFF(12, ESI)
+#define DST0 REGOFF(0, EDI)
+#define DST1 REGOFF(4, EDI)
+#define DST2 REGOFF(8, EDI)
+#define DST3 REGOFF(12, EDI)
+#define MAT0 REGOFF(0, EDX)
+#define MAT1 REGOFF(4, EDX)
+#define MAT2 REGOFF(8, EDX)
+#define MAT3 REGOFF(12, EDX)
+#define MAT4 REGOFF(16, EDX)
+#define MAT5 REGOFF(20, EDX)
+#define MAT6 REGOFF(24, EDX)
+#define MAT7 REGOFF(28, EDX)
+#define MAT8 REGOFF(32, EDX)
+#define MAT9 REGOFF(36, EDX)
+#define MAT10 REGOFF(40, EDX)
+#define MAT11 REGOFF(44, EDX)
+#define MAT12 REGOFF(48, EDX)
+#define MAT13 REGOFF(52, EDX)
+#define MAT14 REGOFF(56, EDX)
+#define MAT15 REGOFF(60, EDX)
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points2_general )
+HIDDEN(_mesa_x86_transform_points2_general)
+GLNAME( _mesa_x86_transform_points2_general ):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p2_gr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p2_gr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
+ FLD_S( SRC0 ) /* F6 F5 F4 */
+ FMUL_S( MAT2 )
+ FLD_S( SRC0 ) /* F7 F6 F5 F4 */
+ FMUL_S( MAT3 )
+
+ FLD_S( SRC1 ) /* F0 F7 F6 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT5 )
+ FLD_S( SRC1 ) /* F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT6 )
+ FLD_S( SRC1 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT7 )
+
+ FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
+ FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
+
+ FXCH( ST(3) ) /* F4 F6 F5 F7 */
+ FADD_S( MAT12 )
+ FXCH( ST(2) ) /* F5 F6 F4 F7 */
+ FADD_S( MAT13 )
+ FXCH( ST(1) ) /* F6 F5 F4 F7 */
+ FADD_S( MAT14 )
+ FXCH( ST(3) ) /* F7 F5 F4 F6 */
+ FADD_S( MAT15 )
+
+ FXCH( ST(2) ) /* F4 F5 F7 F6 */
+ FSTP_S( DST0 ) /* F5 F7 F6 */
+ FSTP_S( DST1 ) /* F7 F6 */
+ FXCH( ST(1) ) /* F6 F7 */
+ FSTP_S( DST2 ) /* F7 */
+ FSTP_S( DST3 ) /* */
+
+LLBL(x86_p2_gr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p2_gr_loop) )
+
+LLBL(x86_p2_gr_done):
+
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points2_perspective )
+HIDDEN(_mesa_x86_transform_points2_perspective)
+GLNAME( _mesa_x86_transform_points2_perspective ):
+
+#define FRAME_OFFSET 12
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p2_pr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ MOV_L( MAT14, EBX )
+
+ALIGNTEXT16
+LLBL(x86_p2_pr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+
+ FLD_S( SRC1 ) /* F1 F4 */
+ FMUL_S( MAT5 )
+
+ FXCH( ST(1) ) /* F4 F1 */
+ FSTP_S( DST0 ) /* F1 */
+ FSTP_S( DST1 ) /* */
+ MOV_L( EBX, DST2 )
+ MOV_L( CONST(FP_ZERO), DST3 )
+
+LLBL(x86_p2_pr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p2_pr_loop) )
+
+LLBL(x86_p2_pr_done):
+
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points2_3d )
+HIDDEN(_mesa_x86_transform_points2_3d)
+GLNAME( _mesa_x86_transform_points2_3d ):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p2_3dr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p2_3dr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
+ FLD_S( SRC0 ) /* F6 F5 F4 */
+ FMUL_S( MAT2 )
+
+ FLD_S( SRC1 ) /* F0 F6 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F6 F5 F4 */
+ FMUL_S( MAT5 )
+ FLD_S( SRC1 ) /* F2 F1 F0 F6 F5 F4 */
+ FMUL_S( MAT6 )
+
+ FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F6 F5 F4 */
+
+ FXCH( ST(2) ) /* F4 F5 F6 */
+ FADD_S( MAT12 )
+ FXCH( ST(1) ) /* F5 F4 F6 */
+ FADD_S( MAT13 )
+ FXCH( ST(2) ) /* F6 F4 F5 */
+ FADD_S( MAT14 )
+
+ FXCH( ST(1) ) /* F4 F6 F5 */
+ FSTP_S( DST0 ) /* F6 F5 */
+ FXCH( ST(1) ) /* F5 F6 */
+ FSTP_S( DST1 ) /* F6 */
+ FSTP_S( DST2 ) /* */
+
+LLBL(x86_p2_3dr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p2_3dr_loop) )
+
+LLBL(x86_p2_3dr_done):
+
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points2_3d_no_rot )
+HIDDEN(_mesa_x86_transform_points2_3d_no_rot)
+GLNAME( _mesa_x86_transform_points2_3d_no_rot ):
+
+#define FRAME_OFFSET 12
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p2_3dnrr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ MOV_L( MAT14, EBX )
+
+ALIGNTEXT16
+LLBL(x86_p2_3dnrr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+
+ FLD_S( SRC1 ) /* F1 F4 */
+ FMUL_S( MAT5 )
+
+ FXCH( ST(1) ) /* F4 F1 */
+ FADD_S( MAT12 )
+ FLD_S( MAT13 ) /* F5 F4 F1 */
+ FXCH( ST(2) ) /* F1 F4 F5 */
+ FADDP( ST0, ST(2) ) /* F4 F5 */
+
+ FSTP_S( DST0 ) /* F5 */
+ FSTP_S( DST1 ) /* */
+ MOV_L( EBX, DST2 )
+
+LLBL(x86_p2_3dnrr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p2_3dnrr_loop) )
+
+LLBL(x86_p2_3dnrr_done):
+
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points2_2d )
+HIDDEN(_mesa_x86_transform_points2_2d)
+GLNAME( _mesa_x86_transform_points2_2d ):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p2_2dr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p2_2dr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
+
+ FLD_S( SRC1 ) /* F0 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F5 F4 */
+ FMUL_S( MAT5 )
+
+ FXCH( ST(1) ) /* F0 F1 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F1 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F5 F4 */
+
+ FXCH( ST(1) ) /* F4 F5 */
+ FADD_S( MAT12 )
+ FXCH( ST(1) ) /* F5 F4 */
+ FADD_S( MAT13 )
+
+ FXCH( ST(1) ) /* F4 F5 */
+ FSTP_S( DST0 ) /* F5 */
+ FSTP_S( DST1 ) /* */
+
+LLBL(x86_p2_2dr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p2_2dr_loop) )
+
+LLBL(x86_p2_2dr_done):
+
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT4
+GLOBL GLNAME( _mesa_x86_transform_points2_2d_no_rot )
+HIDDEN(_mesa_x86_transform_points2_2d_no_rot)
+GLNAME( _mesa_x86_transform_points2_2d_no_rot ):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p2_2dnrr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p2_2dnrr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+
+ FLD_S( SRC1 ) /* F1 F4 */
+ FMUL_S( MAT5 )
+
+ FXCH( ST(1) ) /* F4 F1 */
+ FADD_S( MAT12 )
+ FLD_S( MAT13 ) /* F5 F4 F1 */
+ FXCH( ST(2) ) /* F1 F4 F5 */
+ FADDP( ST0, ST(2) ) /* F4 F5 */
+
+ FSTP_S( DST0 ) /* F5 */
+ FSTP_S( DST1 ) /* */
+
+LLBL(x86_p2_2dnrr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p2_2dnrr_loop) )
+
+LLBL(x86_p2_2dnrr_done):
+
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points2_identity )
+HIDDEN(_mesa_x86_transform_points2_identity)
+GLNAME( _mesa_x86_transform_points2_identity ):
+
+#define FRAME_OFFSET 12
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p2_ir_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_2), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(2), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ CMP_L( ESI, EDI )
+ JE( LLBL(x86_p2_ir_done) )
+
+ALIGNTEXT16
+LLBL(x86_p2_ir_loop):
+
+ MOV_L( SRC0, EBX )
+ MOV_L( SRC1, EDX )
+
+ MOV_L( EBX, DST0 )
+ MOV_L( EDX, DST1 )
+
+LLBL(x86_p2_ir_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p2_ir_loop) )
+
+LLBL(x86_p2_ir_done):
+
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/x86_xform3.S b/mesalib/src/mesa/x86/x86_xform3.S
index 6f717caf9..1c782f1c5 100644
--- a/mesalib/src/mesa/x86/x86_xform3.S
+++ b/mesalib/src/mesa/x86/x86_xform3.S
@@ -1,644 +1,644 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
- * with macros like CONST, LLBL that expand to CONCAT(...). Putting spaces
- * in there will break the build on some platforms.
- */
-
-#include "assyntax.h"
-#include "matypes.h"
-#include "xform_args.h"
-
- SEG_TEXT
-
-#define FP_ONE 1065353216
-#define FP_ZERO 0
-
-#define SRC0 REGOFF(0, ESI)
-#define SRC1 REGOFF(4, ESI)
-#define SRC2 REGOFF(8, ESI)
-#define SRC3 REGOFF(12, ESI)
-#define DST0 REGOFF(0, EDI)
-#define DST1 REGOFF(4, EDI)
-#define DST2 REGOFF(8, EDI)
-#define DST3 REGOFF(12, EDI)
-#define MAT0 REGOFF(0, EDX)
-#define MAT1 REGOFF(4, EDX)
-#define MAT2 REGOFF(8, EDX)
-#define MAT3 REGOFF(12, EDX)
-#define MAT4 REGOFF(16, EDX)
-#define MAT5 REGOFF(20, EDX)
-#define MAT6 REGOFF(24, EDX)
-#define MAT7 REGOFF(28, EDX)
-#define MAT8 REGOFF(32, EDX)
-#define MAT9 REGOFF(36, EDX)
-#define MAT10 REGOFF(40, EDX)
-#define MAT11 REGOFF(44, EDX)
-#define MAT12 REGOFF(48, EDX)
-#define MAT13 REGOFF(52, EDX)
-#define MAT14 REGOFF(56, EDX)
-#define MAT15 REGOFF(60, EDX)
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points3_general )
-HIDDEN(_mesa_x86_transform_points3_general)
-GLNAME( _mesa_x86_transform_points3_general ):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p3_gr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p3_gr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
- FLD_S( SRC0 ) /* F5 F4 */
- FMUL_S( MAT1 )
- FLD_S( SRC0 ) /* F6 F5 F4 */
- FMUL_S( MAT2 )
- FLD_S( SRC0 ) /* F7 F6 F5 F4 */
- FMUL_S( MAT3 )
-
- FLD_S( SRC1 ) /* F0 F7 F6 F5 F4 */
- FMUL_S( MAT4 )
- FLD_S( SRC1 ) /* F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT5 )
- FLD_S( SRC1 ) /* F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT6 )
- FLD_S( SRC1 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT7 )
-
- FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
- FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
-
- FLD_S( SRC2 ) /* F0 F7 F6 F5 F4 */
- FMUL_S( MAT8 )
- FLD_S( SRC2 ) /* F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT9 )
- FLD_S( SRC2 ) /* F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT10 )
- FLD_S( SRC2 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT11 )
-
- FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
- FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
-
- FXCH( ST(3) ) /* F4 F6 F5 F7 */
- FADD_S( MAT12 )
- FXCH( ST(2) ) /* F5 F6 F4 F7 */
- FADD_S( MAT13 )
- FXCH( ST(1) ) /* F6 F5 F4 F7 */
- FADD_S( MAT14 )
- FXCH( ST(3) ) /* F7 F5 F4 F6 */
- FADD_S( MAT15 )
-
- FXCH( ST(2) ) /* F4 F5 F7 F6 */
- FSTP_S( DST0 ) /* F5 F7 F6 */
- FSTP_S( DST1 ) /* F7 F6 */
- FXCH( ST(1) ) /* F6 F7 */
- FSTP_S( DST2 ) /* F7 */
- FSTP_S( DST3 ) /* */
-
-LLBL(x86_p3_gr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p3_gr_loop) )
-
-LLBL(x86_p3_gr_done):
-
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points3_perspective )
-HIDDEN(_mesa_x86_transform_points3_perspective)
-GLNAME( _mesa_x86_transform_points3_perspective ):
-
-#define FRAME_OFFSET 12
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p3_pr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p3_pr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
-
- FLD_S( SRC1 ) /* F5 F4 */
- FMUL_S( MAT5 )
-
- FLD_S( SRC2 ) /* F0 F5 F4 */
- FMUL_S( MAT8 )
- FLD_S( SRC2 ) /* F1 F0 F5 F4 */
- FMUL_S( MAT9 )
- FLD_S( SRC2 ) /* F2 F1 F0 F5 F4 */
- FMUL_S( MAT10 )
-
- FXCH( ST(2) ) /* F0 F1 F2 F5 F4 */
- FADDP( ST0, ST(4) ) /* F1 F2 F5 F4 */
- FADDP( ST0, ST(2) ) /* F2 F5 F4 */
- FLD_S( MAT14 ) /* F6 F2 F5 F4 */
- FXCH( ST(1) ) /* F2 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F6 F5 F4 */
-
- MOV_L( SRC2, EBX )
- XOR_L( CONST(-2147483648), EBX )/* change sign */
-
- FXCH( ST(2) ) /* F4 F5 F6 */
- FSTP_S( DST0 ) /* F5 F6 */
- FSTP_S( DST1 ) /* F6 */
- FSTP_S( DST2 ) /* */
- MOV_L( EBX, DST3 )
-
-LLBL(x86_p3_pr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p3_pr_loop) )
-
-LLBL(x86_p3_pr_done):
-
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points3_3d )
-HIDDEN(_mesa_x86_transform_points3_3d)
-GLNAME( _mesa_x86_transform_points3_3d ):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p3_3dr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p3_3dr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
- FLD_S( SRC0 ) /* F5 F4 */
- FMUL_S( MAT1 )
- FLD_S( SRC0 ) /* F6 F5 F4 */
- FMUL_S( MAT2 )
-
- FLD_S( SRC1 ) /* F0 F6 F5 F4 */
- FMUL_S( MAT4 )
- FLD_S( SRC1 ) /* F1 F0 F6 F5 F4 */
- FMUL_S( MAT5 )
- FLD_S( SRC1 ) /* F2 F1 F0 F6 F5 F4 */
- FMUL_S( MAT6 )
-
- FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F6 F5 F4 */
-
- FLD_S( SRC2 ) /* F0 F6 F5 F4 */
- FMUL_S( MAT8 )
- FLD_S( SRC2 ) /* F1 F0 F6 F5 F4 */
- FMUL_S( MAT9 )
- FLD_S( SRC2 ) /* F2 F1 F0 F6 F5 F4 */
- FMUL_S( MAT10 )
-
- FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F6 F5 F4 */
-
- FXCH( ST(2) ) /* F4 F5 F6 */
- FADD_S( MAT12 )
- FXCH( ST(1) ) /* F5 F4 F6 */
- FADD_S( MAT13 )
- FXCH( ST(2) ) /* F6 F4 F5 */
- FADD_S( MAT14 )
-
- FXCH( ST(1) ) /* F4 F6 F5 */
- FSTP_S( DST0 ) /* F6 F5 */
- FXCH( ST(1) ) /* F5 F6 */
- FSTP_S( DST1 ) /* F6 */
- FSTP_S( DST2 ) /* */
-
-LLBL(x86_p3_3dr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p3_3dr_loop) )
-
-LLBL(x86_p3_3dr_done):
-
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points3_3d_no_rot )
-HIDDEN(_mesa_x86_transform_points3_3d_no_rot)
-GLNAME( _mesa_x86_transform_points3_3d_no_rot ):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p3_3dnrr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p3_3dnrr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
-
- FLD_S( SRC1 ) /* F1 F4 */
- FMUL_S( MAT5 )
-
- FLD_S( SRC2 ) /* F2 F1 F4 */
- FMUL_S( MAT10 )
-
- FXCH( ST(2) ) /* F4 F1 F2 */
- FADD_S( MAT12 )
- FLD_S( MAT13 ) /* F5 F4 F1 F2 */
- FXCH( ST(2) ) /* F1 F4 F5 F2 */
- FADDP( ST0, ST(2) ) /* F4 F5 F2 */
- FLD_S( MAT14 ) /* F6 F4 F5 F2 */
- FXCH( ST(3) ) /* F2 F4 F5 F6 */
- FADDP( ST0, ST(3) ) /* F4 F5 F6 */
-
- FSTP_S( DST0 ) /* F5 F6 */
- FSTP_S( DST1 ) /* F6 */
- FSTP_S( DST2 ) /* */
-
-LLBL(x86_p3_3dnrr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p3_3dnrr_loop) )
-
-LLBL(x86_p3_3dnrr_done):
-
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points3_2d )
-HIDDEN(_mesa_x86_transform_points3_2d)
-GLNAME( _mesa_x86_transform_points3_2d ):
-
-#define FRAME_OFFSET 12
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p3_2dr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p3_2dr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
- FLD_S( SRC0 ) /* F5 F4 */
- FMUL_S( MAT1 )
-
- FLD_S( SRC1 ) /* F0 F5 F4 */
- FMUL_S( MAT4 )
- FLD_S( SRC1 ) /* F1 F0 F5 F4 */
- FMUL_S( MAT5 )
-
- FXCH( ST(1) ) /* F0 F1 F5 F4 */
- FADDP( ST0, ST(3) ) /* F1 F5 F4 */
- FADDP( ST0, ST(1) ) /* F5 F4 */
-
- FXCH( ST(1) ) /* F4 F5 */
- FADD_S( MAT12 )
- FXCH( ST(1) ) /* F5 F4 */
- FADD_S( MAT13 )
-
- MOV_L( SRC2, EBX )
-
- FXCH( ST(1) ) /* F4 F5 */
- FSTP_S( DST0 ) /* F5 */
- FSTP_S( DST1 ) /* */
- MOV_L( EBX, DST2 )
-
-LLBL(x86_p3_2dr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p3_2dr_loop) )
-
-LLBL(x86_p3_2dr_done):
-
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points3_2d_no_rot )
-HIDDEN(_mesa_x86_transform_points3_2d_no_rot)
-GLNAME( _mesa_x86_transform_points3_2d_no_rot ):
-
-#define FRAME_OFFSET 12
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p3_2dnrr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p3_2dnrr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
-
- FLD_S( SRC1 ) /* F1 F4 */
- FMUL_S( MAT5 )
-
- FXCH( ST(1) ) /* F4 F1 */
- FADD_S( MAT12 )
- FLD_S( MAT13 ) /* F5 F4 F1 */
-
- FXCH( ST(2) ) /* F1 F4 F5 */
- FADDP( ST0, ST(2) ) /* F4 F5 */
-
- MOV_L( SRC2, EBX )
-
- FSTP_S( DST0 ) /* F5 */
- FSTP_S( DST1 ) /* */
- MOV_L( EBX, DST2 )
-
-LLBL(x86_p3_2dnrr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p3_2dnrr_loop) )
-
-LLBL(x86_p3_2dnrr_done):
-
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points3_identity )
-HIDDEN(_mesa_x86_transform_points3_identity)
-GLNAME(_mesa_x86_transform_points3_identity ):
-
-#define FRAME_OFFSET 16
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
- PUSH_L( EBP )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p3_ir_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
- CMP_L( ESI, EDI )
- JE( LLBL(x86_p3_ir_done) )
-
-ALIGNTEXT16
-LLBL(x86_p3_ir_loop):
-
-#if 1
- MOV_L( SRC0, EBX )
- MOV_L( SRC1, EBP )
- MOV_L( SRC2, EDX )
-
- MOV_L( EBX, DST0 )
- MOV_L( EBP, DST1 )
- MOV_L( EDX, DST2 )
-#else
- FLD_S( SRC0 )
- FLD_S( SRC1 )
- FLD_S( SRC2 )
-
- FSTP_S( DST2 )
- FSTP_S( DST1 )
- FSTP_S( DST0 )
-#endif
-
-LLBL(x86_p3_ir_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p3_ir_loop) )
-
-LLBL(x86_p3_ir_done):
-
- POP_L( EBP )
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
+ * with macros like CONST, LLBL that expand to CONCAT(...). Putting spaces
+ * in there will break the build on some platforms.
+ */
+
+#include "assyntax.h"
+#include "matypes.h"
+#include "xform_args.h"
+
+ SEG_TEXT
+
+#define FP_ONE 1065353216
+#define FP_ZERO 0
+
+#define SRC0 REGOFF(0, ESI)
+#define SRC1 REGOFF(4, ESI)
+#define SRC2 REGOFF(8, ESI)
+#define SRC3 REGOFF(12, ESI)
+#define DST0 REGOFF(0, EDI)
+#define DST1 REGOFF(4, EDI)
+#define DST2 REGOFF(8, EDI)
+#define DST3 REGOFF(12, EDI)
+#define MAT0 REGOFF(0, EDX)
+#define MAT1 REGOFF(4, EDX)
+#define MAT2 REGOFF(8, EDX)
+#define MAT3 REGOFF(12, EDX)
+#define MAT4 REGOFF(16, EDX)
+#define MAT5 REGOFF(20, EDX)
+#define MAT6 REGOFF(24, EDX)
+#define MAT7 REGOFF(28, EDX)
+#define MAT8 REGOFF(32, EDX)
+#define MAT9 REGOFF(36, EDX)
+#define MAT10 REGOFF(40, EDX)
+#define MAT11 REGOFF(44, EDX)
+#define MAT12 REGOFF(48, EDX)
+#define MAT13 REGOFF(52, EDX)
+#define MAT14 REGOFF(56, EDX)
+#define MAT15 REGOFF(60, EDX)
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points3_general )
+HIDDEN(_mesa_x86_transform_points3_general)
+GLNAME( _mesa_x86_transform_points3_general ):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p3_gr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p3_gr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
+ FLD_S( SRC0 ) /* F6 F5 F4 */
+ FMUL_S( MAT2 )
+ FLD_S( SRC0 ) /* F7 F6 F5 F4 */
+ FMUL_S( MAT3 )
+
+ FLD_S( SRC1 ) /* F0 F7 F6 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT5 )
+ FLD_S( SRC1 ) /* F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT6 )
+ FLD_S( SRC1 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT7 )
+
+ FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
+ FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
+
+ FLD_S( SRC2 ) /* F0 F7 F6 F5 F4 */
+ FMUL_S( MAT8 )
+ FLD_S( SRC2 ) /* F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT9 )
+ FLD_S( SRC2 ) /* F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT10 )
+ FLD_S( SRC2 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT11 )
+
+ FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
+ FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
+
+ FXCH( ST(3) ) /* F4 F6 F5 F7 */
+ FADD_S( MAT12 )
+ FXCH( ST(2) ) /* F5 F6 F4 F7 */
+ FADD_S( MAT13 )
+ FXCH( ST(1) ) /* F6 F5 F4 F7 */
+ FADD_S( MAT14 )
+ FXCH( ST(3) ) /* F7 F5 F4 F6 */
+ FADD_S( MAT15 )
+
+ FXCH( ST(2) ) /* F4 F5 F7 F6 */
+ FSTP_S( DST0 ) /* F5 F7 F6 */
+ FSTP_S( DST1 ) /* F7 F6 */
+ FXCH( ST(1) ) /* F6 F7 */
+ FSTP_S( DST2 ) /* F7 */
+ FSTP_S( DST3 ) /* */
+
+LLBL(x86_p3_gr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p3_gr_loop) )
+
+LLBL(x86_p3_gr_done):
+
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points3_perspective )
+HIDDEN(_mesa_x86_transform_points3_perspective)
+GLNAME( _mesa_x86_transform_points3_perspective ):
+
+#define FRAME_OFFSET 12
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p3_pr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p3_pr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+
+ FLD_S( SRC1 ) /* F5 F4 */
+ FMUL_S( MAT5 )
+
+ FLD_S( SRC2 ) /* F0 F5 F4 */
+ FMUL_S( MAT8 )
+ FLD_S( SRC2 ) /* F1 F0 F5 F4 */
+ FMUL_S( MAT9 )
+ FLD_S( SRC2 ) /* F2 F1 F0 F5 F4 */
+ FMUL_S( MAT10 )
+
+ FXCH( ST(2) ) /* F0 F1 F2 F5 F4 */
+ FADDP( ST0, ST(4) ) /* F1 F2 F5 F4 */
+ FADDP( ST0, ST(2) ) /* F2 F5 F4 */
+ FLD_S( MAT14 ) /* F6 F2 F5 F4 */
+ FXCH( ST(1) ) /* F2 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F6 F5 F4 */
+
+ MOV_L( SRC2, EBX )
+ XOR_L( CONST(-2147483648), EBX )/* change sign */
+
+ FXCH( ST(2) ) /* F4 F5 F6 */
+ FSTP_S( DST0 ) /* F5 F6 */
+ FSTP_S( DST1 ) /* F6 */
+ FSTP_S( DST2 ) /* */
+ MOV_L( EBX, DST3 )
+
+LLBL(x86_p3_pr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p3_pr_loop) )
+
+LLBL(x86_p3_pr_done):
+
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points3_3d )
+HIDDEN(_mesa_x86_transform_points3_3d)
+GLNAME( _mesa_x86_transform_points3_3d ):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p3_3dr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p3_3dr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
+ FLD_S( SRC0 ) /* F6 F5 F4 */
+ FMUL_S( MAT2 )
+
+ FLD_S( SRC1 ) /* F0 F6 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F6 F5 F4 */
+ FMUL_S( MAT5 )
+ FLD_S( SRC1 ) /* F2 F1 F0 F6 F5 F4 */
+ FMUL_S( MAT6 )
+
+ FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F6 F5 F4 */
+
+ FLD_S( SRC2 ) /* F0 F6 F5 F4 */
+ FMUL_S( MAT8 )
+ FLD_S( SRC2 ) /* F1 F0 F6 F5 F4 */
+ FMUL_S( MAT9 )
+ FLD_S( SRC2 ) /* F2 F1 F0 F6 F5 F4 */
+ FMUL_S( MAT10 )
+
+ FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F6 F5 F4 */
+
+ FXCH( ST(2) ) /* F4 F5 F6 */
+ FADD_S( MAT12 )
+ FXCH( ST(1) ) /* F5 F4 F6 */
+ FADD_S( MAT13 )
+ FXCH( ST(2) ) /* F6 F4 F5 */
+ FADD_S( MAT14 )
+
+ FXCH( ST(1) ) /* F4 F6 F5 */
+ FSTP_S( DST0 ) /* F6 F5 */
+ FXCH( ST(1) ) /* F5 F6 */
+ FSTP_S( DST1 ) /* F6 */
+ FSTP_S( DST2 ) /* */
+
+LLBL(x86_p3_3dr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p3_3dr_loop) )
+
+LLBL(x86_p3_3dr_done):
+
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points3_3d_no_rot )
+HIDDEN(_mesa_x86_transform_points3_3d_no_rot)
+GLNAME( _mesa_x86_transform_points3_3d_no_rot ):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p3_3dnrr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p3_3dnrr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+
+ FLD_S( SRC1 ) /* F1 F4 */
+ FMUL_S( MAT5 )
+
+ FLD_S( SRC2 ) /* F2 F1 F4 */
+ FMUL_S( MAT10 )
+
+ FXCH( ST(2) ) /* F4 F1 F2 */
+ FADD_S( MAT12 )
+ FLD_S( MAT13 ) /* F5 F4 F1 F2 */
+ FXCH( ST(2) ) /* F1 F4 F5 F2 */
+ FADDP( ST0, ST(2) ) /* F4 F5 F2 */
+ FLD_S( MAT14 ) /* F6 F4 F5 F2 */
+ FXCH( ST(3) ) /* F2 F4 F5 F6 */
+ FADDP( ST0, ST(3) ) /* F4 F5 F6 */
+
+ FSTP_S( DST0 ) /* F5 F6 */
+ FSTP_S( DST1 ) /* F6 */
+ FSTP_S( DST2 ) /* */
+
+LLBL(x86_p3_3dnrr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p3_3dnrr_loop) )
+
+LLBL(x86_p3_3dnrr_done):
+
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points3_2d )
+HIDDEN(_mesa_x86_transform_points3_2d)
+GLNAME( _mesa_x86_transform_points3_2d ):
+
+#define FRAME_OFFSET 12
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p3_2dr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p3_2dr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
+
+ FLD_S( SRC1 ) /* F0 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F5 F4 */
+ FMUL_S( MAT5 )
+
+ FXCH( ST(1) ) /* F0 F1 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F1 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F5 F4 */
+
+ FXCH( ST(1) ) /* F4 F5 */
+ FADD_S( MAT12 )
+ FXCH( ST(1) ) /* F5 F4 */
+ FADD_S( MAT13 )
+
+ MOV_L( SRC2, EBX )
+
+ FXCH( ST(1) ) /* F4 F5 */
+ FSTP_S( DST0 ) /* F5 */
+ FSTP_S( DST1 ) /* */
+ MOV_L( EBX, DST2 )
+
+LLBL(x86_p3_2dr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p3_2dr_loop) )
+
+LLBL(x86_p3_2dr_done):
+
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points3_2d_no_rot )
+HIDDEN(_mesa_x86_transform_points3_2d_no_rot)
+GLNAME( _mesa_x86_transform_points3_2d_no_rot ):
+
+#define FRAME_OFFSET 12
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p3_2dnrr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p3_2dnrr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+
+ FLD_S( SRC1 ) /* F1 F4 */
+ FMUL_S( MAT5 )
+
+ FXCH( ST(1) ) /* F4 F1 */
+ FADD_S( MAT12 )
+ FLD_S( MAT13 ) /* F5 F4 F1 */
+
+ FXCH( ST(2) ) /* F1 F4 F5 */
+ FADDP( ST0, ST(2) ) /* F4 F5 */
+
+ MOV_L( SRC2, EBX )
+
+ FSTP_S( DST0 ) /* F5 */
+ FSTP_S( DST1 ) /* */
+ MOV_L( EBX, DST2 )
+
+LLBL(x86_p3_2dnrr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p3_2dnrr_loop) )
+
+LLBL(x86_p3_2dnrr_done):
+
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points3_identity )
+HIDDEN(_mesa_x86_transform_points3_identity)
+GLNAME(_mesa_x86_transform_points3_identity ):
+
+#define FRAME_OFFSET 16
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+ PUSH_L( EBP )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p3_ir_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_3), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(3), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ CMP_L( ESI, EDI )
+ JE( LLBL(x86_p3_ir_done) )
+
+ALIGNTEXT16
+LLBL(x86_p3_ir_loop):
+
+#if 1
+ MOV_L( SRC0, EBX )
+ MOV_L( SRC1, EBP )
+ MOV_L( SRC2, EDX )
+
+ MOV_L( EBX, DST0 )
+ MOV_L( EBP, DST1 )
+ MOV_L( EDX, DST2 )
+#else
+ FLD_S( SRC0 )
+ FLD_S( SRC1 )
+ FLD_S( SRC2 )
+
+ FSTP_S( DST2 )
+ FSTP_S( DST1 )
+ FSTP_S( DST0 )
+#endif
+
+LLBL(x86_p3_ir_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p3_ir_loop) )
+
+LLBL(x86_p3_ir_done):
+
+ POP_L( EBP )
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/x86_xform4.S b/mesalib/src/mesa/x86/x86_xform4.S
index 687426eb5..97a841138 100644
--- a/mesalib/src/mesa/x86/x86_xform4.S
+++ b/mesalib/src/mesa/x86/x86_xform4.S
@@ -1,677 +1,677 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
- * with macros like CONST, LLBL that expand to CONCAT(...). Putting spaces
- * in there will break the build on some platforms.
- */
-
-#include "assyntax.h"
-#include "matypes.h"
-#include "xform_args.h"
-
- SEG_TEXT
-
-#define FP_ONE 1065353216
-#define FP_ZERO 0
-
-#define SRC0 REGOFF(0, ESI)
-#define SRC1 REGOFF(4, ESI)
-#define SRC2 REGOFF(8, ESI)
-#define SRC3 REGOFF(12, ESI)
-#define DST0 REGOFF(0, EDI)
-#define DST1 REGOFF(4, EDI)
-#define DST2 REGOFF(8, EDI)
-#define DST3 REGOFF(12, EDI)
-#define MAT0 REGOFF(0, EDX)
-#define MAT1 REGOFF(4, EDX)
-#define MAT2 REGOFF(8, EDX)
-#define MAT3 REGOFF(12, EDX)
-#define MAT4 REGOFF(16, EDX)
-#define MAT5 REGOFF(20, EDX)
-#define MAT6 REGOFF(24, EDX)
-#define MAT7 REGOFF(28, EDX)
-#define MAT8 REGOFF(32, EDX)
-#define MAT9 REGOFF(36, EDX)
-#define MAT10 REGOFF(40, EDX)
-#define MAT11 REGOFF(44, EDX)
-#define MAT12 REGOFF(48, EDX)
-#define MAT13 REGOFF(52, EDX)
-#define MAT14 REGOFF(56, EDX)
-#define MAT15 REGOFF(60, EDX)
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points4_general )
-HIDDEN(_mesa_x86_transform_points4_general)
-GLNAME( _mesa_x86_transform_points4_general ):
-
-#define FRAME_OFFSET 8
- PUSH_L( ESI )
- PUSH_L( EDI )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p4_gr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p4_gr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
- FLD_S( SRC0 ) /* F5 F4 */
- FMUL_S( MAT1 )
- FLD_S( SRC0 ) /* F6 F5 F4 */
- FMUL_S( MAT2 )
- FLD_S( SRC0 ) /* F7 F6 F5 F4 */
- FMUL_S( MAT3 )
-
- FLD_S( SRC1 ) /* F0 F7 F6 F5 F4 */
- FMUL_S( MAT4 )
- FLD_S( SRC1 ) /* F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT5 )
- FLD_S( SRC1 ) /* F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT6 )
- FLD_S( SRC1 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT7 )
-
- FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
- FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
-
- FLD_S( SRC2 ) /* F0 F7 F6 F5 F4 */
- FMUL_S( MAT8 )
- FLD_S( SRC2 ) /* F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT9 )
- FLD_S( SRC2 ) /* F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT10 )
- FLD_S( SRC2 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT11 )
-
- FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
- FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
-
- FLD_S( SRC3 ) /* F0 F7 F6 F5 F4 */
- FMUL_S( MAT12 )
- FLD_S( SRC3 ) /* F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT13 )
- FLD_S( SRC3 ) /* F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT14 )
- FLD_S( SRC3 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
- FMUL_S( MAT15 )
-
- FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
- FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
-
- FXCH( ST(3) ) /* F4 F6 F5 F7 */
- FSTP_S( DST0 ) /* F6 F5 F7 */
- FXCH( ST(1) ) /* F5 F6 F7 */
- FSTP_S( DST1 ) /* F6 F7 */
- FSTP_S( DST2 ) /* F7 */
- FSTP_S( DST3 ) /* */
-
-LLBL(x86_p4_gr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p4_gr_loop) )
-
-LLBL(x86_p4_gr_done):
-
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points4_perspective )
-HIDDEN(_mesa_x86_transform_points4_perspective)
-GLNAME( _mesa_x86_transform_points4_perspective ):
-
-#define FRAME_OFFSET 12
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p4_pr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p4_pr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
-
- FLD_S( SRC1 ) /* F5 F4 */
- FMUL_S( MAT5 )
-
- FLD_S( SRC2 ) /* F0 F5 F4 */
- FMUL_S( MAT8 )
- FLD_S( SRC2 ) /* F1 F0 F5 F4 */
- FMUL_S( MAT9 )
- FLD_S( SRC2 ) /* F6 F1 F0 F5 F4 */
- FMUL_S( MAT10 )
-
- FXCH( ST(2) ) /* F0 F1 F6 F5 F4 */
- FADDP( ST0, ST(4) ) /* F1 F6 F5 F4 */
- FADDP( ST0, ST(2) ) /* F6 F5 F4 */
-
- FLD_S( SRC3 ) /* F2 F6 F5 F4 */
- FMUL_S( MAT14 )
-
- FADDP( ST0, ST(1) ) /* F6 F5 F4 */
-
- MOV_L( SRC2, EBX )
- XOR_L( CONST(-2147483648), EBX )/* change sign */
-
- FXCH( ST(2) ) /* F4 F5 F6 */
- FSTP_S( DST0 ) /* F5 F6 */
- FSTP_S( DST1 ) /* F6 */
- FSTP_S( DST2 ) /* */
- MOV_L( EBX, DST3 )
-
-LLBL(x86_p4_pr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p4_pr_loop) )
-
-LLBL(x86_p4_pr_done):
-
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points4_3d )
-HIDDEN(_mesa_x86_transform_points4_3d)
-GLNAME( _mesa_x86_transform_points4_3d ):
-
-#define FRAME_OFFSET 12
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p4_3dr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p4_3dr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
- FLD_S( SRC0 ) /* F5 F4 */
- FMUL_S( MAT1 )
- FLD_S( SRC0 ) /* F6 F5 F4 */
- FMUL_S( MAT2 )
-
- FLD_S( SRC1 ) /* F0 F6 F5 F4 */
- FMUL_S( MAT4 )
- FLD_S( SRC1 ) /* F1 F0 F6 F5 F4 */
- FMUL_S( MAT5 )
- FLD_S( SRC1 ) /* F2 F1 F0 F6 F5 F4 */
- FMUL_S( MAT6 )
-
- FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F6 F5 F4 */
-
- FLD_S( SRC2 ) /* F0 F6 F5 F4 */
- FMUL_S( MAT8 )
- FLD_S( SRC2 ) /* F1 F0 F6 F5 F4 */
- FMUL_S( MAT9 )
- FLD_S( SRC2 ) /* F2 F1 F0 F6 F5 F4 */
- FMUL_S( MAT10 )
-
- FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F6 F5 F4 */
-
- FLD_S( SRC3 ) /* F0 F6 F5 F4 */
- FMUL_S( MAT12 )
- FLD_S( SRC3 ) /* F1 F0 F6 F5 F4 */
- FMUL_S( MAT13 )
- FLD_S( SRC3 ) /* F2 F1 F0 F6 F5 F4 */
- FMUL_S( MAT14 )
-
- FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F6 F5 F4 */
-
- MOV_L( SRC3, EBX )
-
- FXCH( ST(2) ) /* F4 F5 F6 */
- FSTP_S( DST0 ) /* F5 F6 */
- FSTP_S( DST1 ) /* F6 */
- FSTP_S( DST2 ) /* */
- MOV_L( EBX, DST3 )
-
-LLBL(x86_p4_3dr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p4_3dr_loop) )
-
-LLBL(x86_p4_3dr_done):
-
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME(_mesa_x86_transform_points4_3d_no_rot)
-HIDDEN(_mesa_x86_transform_points4_3d_no_rot)
-GLNAME(_mesa_x86_transform_points4_3d_no_rot):
-
-#define FRAME_OFFSET 12
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p4_3dnrr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p4_3dnrr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
-
- FLD_S( SRC1 ) /* F5 F4 */
- FMUL_S( MAT5 )
-
- FLD_S( SRC2 ) /* F6 F5 F4 */
- FMUL_S( MAT10 )
-
- FLD_S( SRC3 ) /* F0 F6 F5 F4 */
- FMUL_S( MAT12 )
- FLD_S( SRC3 ) /* F1 F0 F6 F5 F4 */
- FMUL_S( MAT13 )
- FLD_S( SRC3 ) /* F2 F1 F0 F6 F5 F4 */
- FMUL_S( MAT14 )
-
- FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
- FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
- FADDP( ST0, ST(1) ) /* F6 F5 F4 */
-
- MOV_L( SRC3, EBX )
-
- FXCH( ST(2) ) /* F4 F5 F6 */
- FSTP_S( DST0 ) /* F5 F6 */
- FSTP_S( DST1 ) /* F6 */
- FSTP_S( DST2 ) /* */
- MOV_L( EBX, DST3 )
-
-LLBL(x86_p4_3dnrr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p4_3dnrr_loop) )
-
-LLBL(x86_p4_3dnrr_done):
-
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points4_2d )
-HIDDEN(_mesa_x86_transform_points4_2d)
-GLNAME( _mesa_x86_transform_points4_2d ):
-
-#define FRAME_OFFSET 16
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
- PUSH_L( EBP )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p4_2dr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p4_2dr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
- FLD_S( SRC0 ) /* F5 F4 */
- FMUL_S( MAT1 )
-
- FLD_S( SRC1 ) /* F0 F5 F4 */
- FMUL_S( MAT4 )
- FLD_S( SRC1 ) /* F1 F0 F5 F4 */
- FMUL_S( MAT5 )
-
- FXCH( ST(1) ) /* F0 F1 F5 F4 */
- FADDP( ST0, ST(3) ) /* F1 F5 F4 */
- FADDP( ST0, ST(1) ) /* F5 F4 */
-
- FLD_S( SRC3 ) /* F0 F5 F4 */
- FMUL_S( MAT12 )
- FLD_S( SRC3 ) /* F1 F0 F5 F4 */
- FMUL_S( MAT13 )
-
- FXCH( ST(1) ) /* F0 F1 F5 F4 */
- FADDP( ST0, ST(3) ) /* F1 F5 F4 */
- FADDP( ST0, ST(1) ) /* F5 F4 */
-
- MOV_L( SRC2, EBX )
- MOV_L( SRC3, EBP )
-
- FXCH( ST(1) ) /* F4 F5 */
- FSTP_S( DST0 ) /* F5 */
- FSTP_S( DST1 ) /* */
- MOV_L( EBX, DST2 )
- MOV_L( EBP, DST3 )
-
-LLBL(x86_p4_2dr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p4_2dr_loop) )
-
-LLBL(x86_p4_2dr_done):
-
- POP_L( EBP )
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points4_2d_no_rot )
-HIDDEN(_mesa_x86_transform_points4_2d_no_rot)
-GLNAME( _mesa_x86_transform_points4_2d_no_rot ):
-
-#define FRAME_OFFSET 16
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
- PUSH_L( EBP )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p4_2dnrr_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
-ALIGNTEXT16
-LLBL(x86_p4_2dnrr_loop):
-
- FLD_S( SRC0 ) /* F4 */
- FMUL_S( MAT0 )
-
- FLD_S( SRC1 ) /* F5 F4 */
- FMUL_S( MAT5 )
-
- FLD_S( SRC3 ) /* F0 F5 F4 */
- FMUL_S( MAT12 )
- FLD_S( SRC3 ) /* F1 F0 F5 F4 */
- FMUL_S( MAT13 )
-
- FXCH( ST(1) ) /* F0 F1 F5 F4 */
- FADDP( ST0, ST(3) ) /* F1 F5 F4 */
- FADDP( ST0, ST(1) ) /* F5 F4 */
-
- MOV_L( SRC2, EBX )
- MOV_L( SRC3, EBP )
-
- FXCH( ST(1) ) /* F4 F5 */
- FSTP_S( DST0 ) /* F5 */
- FSTP_S( DST1 ) /* */
- MOV_L( EBX, DST2 )
- MOV_L( EBP, DST3 )
-
-LLBL(x86_p4_2dnrr_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p4_2dnrr_loop) )
-
-LLBL(x86_p4_2dnrr_done):
-
- POP_L( EBP )
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-#undef FRAME_OFFSET
-
-
-
-
-ALIGNTEXT16
-GLOBL GLNAME( _mesa_x86_transform_points4_identity )
-HIDDEN(_mesa_x86_transform_points4_identity)
-GLNAME( _mesa_x86_transform_points4_identity ):
-
-#define FRAME_OFFSET 12
- PUSH_L( ESI )
- PUSH_L( EDI )
- PUSH_L( EBX )
-
- MOV_L( ARG_SOURCE, ESI )
- MOV_L( ARG_DEST, EDI )
-
- MOV_L( ARG_MATRIX, EDX )
- MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
-
- TEST_L( ECX, ECX )
- JZ( LLBL(x86_p4_ir_done) )
-
- MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
- OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
-
- MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
- MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
-
- SHL_L( CONST(4), ECX )
- MOV_L( REGOFF(V4F_START, ESI), ESI )
-
- MOV_L( REGOFF(V4F_START, EDI), EDI )
- ADD_L( EDI, ECX )
-
- CMP_L( ESI, EDI )
- JE( LLBL(x86_p4_ir_done) )
-
-ALIGNTEXT16
-LLBL(x86_p4_ir_loop):
-
- MOV_L( SRC0, EBX )
- MOV_L( SRC1, EDX )
-
- MOV_L( EBX, DST0 )
- MOV_L( EDX, DST1 )
-
- MOV_L( SRC2, EBX )
- MOV_L( SRC3, EDX )
-
- MOV_L( EBX, DST2 )
- MOV_L( EDX, DST3 )
-
-LLBL(x86_p4_ir_skip):
-
- ADD_L( CONST(16), EDI )
- ADD_L( EAX, ESI )
- CMP_L( ECX, EDI )
- JNE( LLBL(x86_p4_ir_loop) )
-
-LLBL(x86_p4_ir_done):
-
- POP_L( EBX )
- POP_L( EDI )
- POP_L( ESI )
- RET
-
-#if defined (__ELF__) && defined (__linux__)
- .section .note.GNU-stack,"",%progbits
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * NOTE: Avoid using spaces in between '(' ')' and arguments, especially
+ * with macros like CONST, LLBL that expand to CONCAT(...). Putting spaces
+ * in there will break the build on some platforms.
+ */
+
+#include "assyntax.h"
+#include "matypes.h"
+#include "xform_args.h"
+
+ SEG_TEXT
+
+#define FP_ONE 1065353216
+#define FP_ZERO 0
+
+#define SRC0 REGOFF(0, ESI)
+#define SRC1 REGOFF(4, ESI)
+#define SRC2 REGOFF(8, ESI)
+#define SRC3 REGOFF(12, ESI)
+#define DST0 REGOFF(0, EDI)
+#define DST1 REGOFF(4, EDI)
+#define DST2 REGOFF(8, EDI)
+#define DST3 REGOFF(12, EDI)
+#define MAT0 REGOFF(0, EDX)
+#define MAT1 REGOFF(4, EDX)
+#define MAT2 REGOFF(8, EDX)
+#define MAT3 REGOFF(12, EDX)
+#define MAT4 REGOFF(16, EDX)
+#define MAT5 REGOFF(20, EDX)
+#define MAT6 REGOFF(24, EDX)
+#define MAT7 REGOFF(28, EDX)
+#define MAT8 REGOFF(32, EDX)
+#define MAT9 REGOFF(36, EDX)
+#define MAT10 REGOFF(40, EDX)
+#define MAT11 REGOFF(44, EDX)
+#define MAT12 REGOFF(48, EDX)
+#define MAT13 REGOFF(52, EDX)
+#define MAT14 REGOFF(56, EDX)
+#define MAT15 REGOFF(60, EDX)
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points4_general )
+HIDDEN(_mesa_x86_transform_points4_general)
+GLNAME( _mesa_x86_transform_points4_general ):
+
+#define FRAME_OFFSET 8
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p4_gr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p4_gr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
+ FLD_S( SRC0 ) /* F6 F5 F4 */
+ FMUL_S( MAT2 )
+ FLD_S( SRC0 ) /* F7 F6 F5 F4 */
+ FMUL_S( MAT3 )
+
+ FLD_S( SRC1 ) /* F0 F7 F6 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT5 )
+ FLD_S( SRC1 ) /* F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT6 )
+ FLD_S( SRC1 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT7 )
+
+ FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
+ FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
+
+ FLD_S( SRC2 ) /* F0 F7 F6 F5 F4 */
+ FMUL_S( MAT8 )
+ FLD_S( SRC2 ) /* F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT9 )
+ FLD_S( SRC2 ) /* F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT10 )
+ FLD_S( SRC2 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT11 )
+
+ FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
+ FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
+
+ FLD_S( SRC3 ) /* F0 F7 F6 F5 F4 */
+ FMUL_S( MAT12 )
+ FLD_S( SRC3 ) /* F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT13 )
+ FLD_S( SRC3 ) /* F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT14 )
+ FLD_S( SRC3 ) /* F3 F2 F1 F0 F7 F6 F5 F4 */
+ FMUL_S( MAT15 )
+
+ FXCH( ST(3) ) /* F0 F2 F1 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(7) ) /* F2 F1 F3 F7 F6 F5 F4 */
+ FXCH( ST(1) ) /* F1 F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F2 F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F3 F7 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F7 F6 F5 F4 */
+
+ FXCH( ST(3) ) /* F4 F6 F5 F7 */
+ FSTP_S( DST0 ) /* F6 F5 F7 */
+ FXCH( ST(1) ) /* F5 F6 F7 */
+ FSTP_S( DST1 ) /* F6 F7 */
+ FSTP_S( DST2 ) /* F7 */
+ FSTP_S( DST3 ) /* */
+
+LLBL(x86_p4_gr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p4_gr_loop) )
+
+LLBL(x86_p4_gr_done):
+
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points4_perspective )
+HIDDEN(_mesa_x86_transform_points4_perspective)
+GLNAME( _mesa_x86_transform_points4_perspective ):
+
+#define FRAME_OFFSET 12
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p4_pr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p4_pr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+
+ FLD_S( SRC1 ) /* F5 F4 */
+ FMUL_S( MAT5 )
+
+ FLD_S( SRC2 ) /* F0 F5 F4 */
+ FMUL_S( MAT8 )
+ FLD_S( SRC2 ) /* F1 F0 F5 F4 */
+ FMUL_S( MAT9 )
+ FLD_S( SRC2 ) /* F6 F1 F0 F5 F4 */
+ FMUL_S( MAT10 )
+
+ FXCH( ST(2) ) /* F0 F1 F6 F5 F4 */
+ FADDP( ST0, ST(4) ) /* F1 F6 F5 F4 */
+ FADDP( ST0, ST(2) ) /* F6 F5 F4 */
+
+ FLD_S( SRC3 ) /* F2 F6 F5 F4 */
+ FMUL_S( MAT14 )
+
+ FADDP( ST0, ST(1) ) /* F6 F5 F4 */
+
+ MOV_L( SRC2, EBX )
+ XOR_L( CONST(-2147483648), EBX )/* change sign */
+
+ FXCH( ST(2) ) /* F4 F5 F6 */
+ FSTP_S( DST0 ) /* F5 F6 */
+ FSTP_S( DST1 ) /* F6 */
+ FSTP_S( DST2 ) /* */
+ MOV_L( EBX, DST3 )
+
+LLBL(x86_p4_pr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p4_pr_loop) )
+
+LLBL(x86_p4_pr_done):
+
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points4_3d )
+HIDDEN(_mesa_x86_transform_points4_3d)
+GLNAME( _mesa_x86_transform_points4_3d ):
+
+#define FRAME_OFFSET 12
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p4_3dr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p4_3dr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
+ FLD_S( SRC0 ) /* F6 F5 F4 */
+ FMUL_S( MAT2 )
+
+ FLD_S( SRC1 ) /* F0 F6 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F6 F5 F4 */
+ FMUL_S( MAT5 )
+ FLD_S( SRC1 ) /* F2 F1 F0 F6 F5 F4 */
+ FMUL_S( MAT6 )
+
+ FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F6 F5 F4 */
+
+ FLD_S( SRC2 ) /* F0 F6 F5 F4 */
+ FMUL_S( MAT8 )
+ FLD_S( SRC2 ) /* F1 F0 F6 F5 F4 */
+ FMUL_S( MAT9 )
+ FLD_S( SRC2 ) /* F2 F1 F0 F6 F5 F4 */
+ FMUL_S( MAT10 )
+
+ FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F6 F5 F4 */
+
+ FLD_S( SRC3 ) /* F0 F6 F5 F4 */
+ FMUL_S( MAT12 )
+ FLD_S( SRC3 ) /* F1 F0 F6 F5 F4 */
+ FMUL_S( MAT13 )
+ FLD_S( SRC3 ) /* F2 F1 F0 F6 F5 F4 */
+ FMUL_S( MAT14 )
+
+ FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F6 F5 F4 */
+
+ MOV_L( SRC3, EBX )
+
+ FXCH( ST(2) ) /* F4 F5 F6 */
+ FSTP_S( DST0 ) /* F5 F6 */
+ FSTP_S( DST1 ) /* F6 */
+ FSTP_S( DST2 ) /* */
+ MOV_L( EBX, DST3 )
+
+LLBL(x86_p4_3dr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p4_3dr_loop) )
+
+LLBL(x86_p4_3dr_done):
+
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME(_mesa_x86_transform_points4_3d_no_rot)
+HIDDEN(_mesa_x86_transform_points4_3d_no_rot)
+GLNAME(_mesa_x86_transform_points4_3d_no_rot):
+
+#define FRAME_OFFSET 12
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p4_3dnrr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p4_3dnrr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+
+ FLD_S( SRC1 ) /* F5 F4 */
+ FMUL_S( MAT5 )
+
+ FLD_S( SRC2 ) /* F6 F5 F4 */
+ FMUL_S( MAT10 )
+
+ FLD_S( SRC3 ) /* F0 F6 F5 F4 */
+ FMUL_S( MAT12 )
+ FLD_S( SRC3 ) /* F1 F0 F6 F5 F4 */
+ FMUL_S( MAT13 )
+ FLD_S( SRC3 ) /* F2 F1 F0 F6 F5 F4 */
+ FMUL_S( MAT14 )
+
+ FXCH( ST(2) ) /* F0 F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(5) ) /* F1 F2 F6 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F2 F6 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F6 F5 F4 */
+
+ MOV_L( SRC3, EBX )
+
+ FXCH( ST(2) ) /* F4 F5 F6 */
+ FSTP_S( DST0 ) /* F5 F6 */
+ FSTP_S( DST1 ) /* F6 */
+ FSTP_S( DST2 ) /* */
+ MOV_L( EBX, DST3 )
+
+LLBL(x86_p4_3dnrr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p4_3dnrr_loop) )
+
+LLBL(x86_p4_3dnrr_done):
+
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points4_2d )
+HIDDEN(_mesa_x86_transform_points4_2d)
+GLNAME( _mesa_x86_transform_points4_2d ):
+
+#define FRAME_OFFSET 16
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+ PUSH_L( EBP )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p4_2dr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p4_2dr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+ FLD_S( SRC0 ) /* F5 F4 */
+ FMUL_S( MAT1 )
+
+ FLD_S( SRC1 ) /* F0 F5 F4 */
+ FMUL_S( MAT4 )
+ FLD_S( SRC1 ) /* F1 F0 F5 F4 */
+ FMUL_S( MAT5 )
+
+ FXCH( ST(1) ) /* F0 F1 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F1 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F5 F4 */
+
+ FLD_S( SRC3 ) /* F0 F5 F4 */
+ FMUL_S( MAT12 )
+ FLD_S( SRC3 ) /* F1 F0 F5 F4 */
+ FMUL_S( MAT13 )
+
+ FXCH( ST(1) ) /* F0 F1 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F1 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F5 F4 */
+
+ MOV_L( SRC2, EBX )
+ MOV_L( SRC3, EBP )
+
+ FXCH( ST(1) ) /* F4 F5 */
+ FSTP_S( DST0 ) /* F5 */
+ FSTP_S( DST1 ) /* */
+ MOV_L( EBX, DST2 )
+ MOV_L( EBP, DST3 )
+
+LLBL(x86_p4_2dr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p4_2dr_loop) )
+
+LLBL(x86_p4_2dr_done):
+
+ POP_L( EBP )
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points4_2d_no_rot )
+HIDDEN(_mesa_x86_transform_points4_2d_no_rot)
+GLNAME( _mesa_x86_transform_points4_2d_no_rot ):
+
+#define FRAME_OFFSET 16
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+ PUSH_L( EBP )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p4_2dnrr_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ALIGNTEXT16
+LLBL(x86_p4_2dnrr_loop):
+
+ FLD_S( SRC0 ) /* F4 */
+ FMUL_S( MAT0 )
+
+ FLD_S( SRC1 ) /* F5 F4 */
+ FMUL_S( MAT5 )
+
+ FLD_S( SRC3 ) /* F0 F5 F4 */
+ FMUL_S( MAT12 )
+ FLD_S( SRC3 ) /* F1 F0 F5 F4 */
+ FMUL_S( MAT13 )
+
+ FXCH( ST(1) ) /* F0 F1 F5 F4 */
+ FADDP( ST0, ST(3) ) /* F1 F5 F4 */
+ FADDP( ST0, ST(1) ) /* F5 F4 */
+
+ MOV_L( SRC2, EBX )
+ MOV_L( SRC3, EBP )
+
+ FXCH( ST(1) ) /* F4 F5 */
+ FSTP_S( DST0 ) /* F5 */
+ FSTP_S( DST1 ) /* */
+ MOV_L( EBX, DST2 )
+ MOV_L( EBP, DST3 )
+
+LLBL(x86_p4_2dnrr_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p4_2dnrr_loop) )
+
+LLBL(x86_p4_2dnrr_done):
+
+ POP_L( EBP )
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+#undef FRAME_OFFSET
+
+
+
+
+ALIGNTEXT16
+GLOBL GLNAME( _mesa_x86_transform_points4_identity )
+HIDDEN(_mesa_x86_transform_points4_identity)
+GLNAME( _mesa_x86_transform_points4_identity ):
+
+#define FRAME_OFFSET 12
+ PUSH_L( ESI )
+ PUSH_L( EDI )
+ PUSH_L( EBX )
+
+ MOV_L( ARG_SOURCE, ESI )
+ MOV_L( ARG_DEST, EDI )
+
+ MOV_L( ARG_MATRIX, EDX )
+ MOV_L( REGOFF(V4F_COUNT, ESI), ECX )
+
+ TEST_L( ECX, ECX )
+ JZ( LLBL(x86_p4_ir_done) )
+
+ MOV_L( REGOFF(V4F_STRIDE, ESI), EAX )
+ OR_L( CONST(VEC_SIZE_4), REGOFF(V4F_FLAGS, EDI) )
+
+ MOV_L( ECX, REGOFF(V4F_COUNT, EDI) )
+ MOV_L( CONST(4), REGOFF(V4F_SIZE, EDI) )
+
+ SHL_L( CONST(4), ECX )
+ MOV_L( REGOFF(V4F_START, ESI), ESI )
+
+ MOV_L( REGOFF(V4F_START, EDI), EDI )
+ ADD_L( EDI, ECX )
+
+ CMP_L( ESI, EDI )
+ JE( LLBL(x86_p4_ir_done) )
+
+ALIGNTEXT16
+LLBL(x86_p4_ir_loop):
+
+ MOV_L( SRC0, EBX )
+ MOV_L( SRC1, EDX )
+
+ MOV_L( EBX, DST0 )
+ MOV_L( EDX, DST1 )
+
+ MOV_L( SRC2, EBX )
+ MOV_L( SRC3, EDX )
+
+ MOV_L( EBX, DST2 )
+ MOV_L( EDX, DST3 )
+
+LLBL(x86_p4_ir_skip):
+
+ ADD_L( CONST(16), EDI )
+ ADD_L( EAX, ESI )
+ CMP_L( ECX, EDI )
+ JNE( LLBL(x86_p4_ir_loop) )
+
+LLBL(x86_p4_ir_done):
+
+ POP_L( EBX )
+ POP_L( EDI )
+ POP_L( ESI )
+ RET
+
+#if defined (__ELF__) && defined (__linux__)
+ .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/mesalib/src/mesa/x86/xform_args.h b/mesalib/src/mesa/x86/xform_args.h
index 772ab9d1f..b773f5198 100644
--- a/mesalib/src/mesa/x86/xform_args.h
+++ b/mesalib/src/mesa/x86/xform_args.h
@@ -1,51 +1,51 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * 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
- * BRIAN PAUL 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.
- */
-
-/*
- * Transform function interface for assembly code. Simply define
- * FRAME_OFFSET to the number of bytes pushed onto the stack before
- * using the ARG_* argument macros.
- *
- * Gareth Hughes
- */
-
-#ifndef __XFORM_ARGS_H__
-#define __XFORM_ARGS_H__
-
-/* Offsets for transform_func arguments
- *
- * typedef void (*transform_func)( GLvector4f *to_vec,
- * const GLfloat m[16],
- * const GLvector4f *from_vec );
- */
-#define OFFSET_DEST 4
-#define OFFSET_MATRIX 8
-#define OFFSET_SOURCE 12
-
-#define ARG_DEST REGOFF(FRAME_OFFSET+OFFSET_DEST, ESP)
-#define ARG_MATRIX REGOFF(FRAME_OFFSET+OFFSET_MATRIX, ESP)
-#define ARG_SOURCE REGOFF(FRAME_OFFSET+OFFSET_SOURCE, ESP)
-
-#endif
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * 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
+ * BRIAN PAUL 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.
+ */
+
+/*
+ * Transform function interface for assembly code. Simply define
+ * FRAME_OFFSET to the number of bytes pushed onto the stack before
+ * using the ARG_* argument macros.
+ *
+ * Gareth Hughes
+ */
+
+#ifndef __XFORM_ARGS_H__
+#define __XFORM_ARGS_H__
+
+/* Offsets for transform_func arguments
+ *
+ * typedef void (*transform_func)( GLvector4f *to_vec,
+ * const GLfloat m[16],
+ * const GLvector4f *from_vec );
+ */
+#define OFFSET_DEST 4
+#define OFFSET_MATRIX 8
+#define OFFSET_SOURCE 12
+
+#define ARG_DEST REGOFF(FRAME_OFFSET+OFFSET_DEST, ESP)
+#define ARG_MATRIX REGOFF(FRAME_OFFSET+OFFSET_MATRIX, ESP)
+#define ARG_SOURCE REGOFF(FRAME_OFFSET+OFFSET_SOURCE, ESP)
+
+#endif
diff --git a/mkfontscale/.gitignore b/mkfontscale/.gitignore
new file mode 100644
index 000000000..0ab66a3d0
--- /dev/null
+++ b/mkfontscale/.gitignore
@@ -0,0 +1,79 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for mkfontscale
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
+mkfontscale
diff --git a/pixman/.gitignore b/pixman/.gitignore
new file mode 100644
index 000000000..98612c91f
--- /dev/null
+++ b/pixman/.gitignore
@@ -0,0 +1,81 @@
+Makefile
+Makefile.in
+.deps
+.libs
+.msg
+*.pc
+*.lo
+*.la
+*.a
+*.o
+*~
+aclocal.m4
+autom4te.cache
+compile
+config.guess
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+stamp-h?
+config.h
+config.h.in
+.*.swp
+demos/alpha-test
+demos/checkerboard
+demos/clip-in
+demos/clip-test
+demos/composite-test
+demos/convolution-test
+demos/gradient-test
+demos/quad2quad
+demos/radial-test
+demos/screen-test
+demos/trap-test
+demos/tri-test
+pixman/pixman-combine32.c
+pixman/pixman-combine32.h
+pixman/pixman-combine64.c
+pixman/pixman-combine64.h
+pixman/pixman-version.h
+test/a1-trap-test
+test/affine-test
+test/alpha-loop
+test/alphamap
+test/alpha-test
+test/blitters-test
+test/clip-in
+test/clip-test
+test/composite
+test/composite-test
+test/composite-traps-test
+test/convolution-test
+test/fetch-test
+test/gradient-crash-test
+test/gradient-test
+test/lowlevel-blt-bench
+test/oob-test
+test/pdf-op-test
+test/region-contains-test
+test/region-test
+test/region-translate
+test/region-translate-test
+test/scaling-crash-test
+test/scaling-helpers-test
+test/scaling-test
+test/screen-test
+test/stress-test
+test/trap-crasher
+test/trap-test
+test/window-test
+*.pdb
+*.dll
+*.lib
+*.ilk
+*.obj
+*.exe
diff --git a/pixman/COPYING b/pixman/COPYING
index 11b022bc2..6168dea56 100644
--- a/pixman/COPYING
+++ b/pixman/COPYING
@@ -1,42 +1,42 @@
-The following is the MIT license, agreed upon by most contributors.
-Copyright holders of new code should use this license statement where
-possible. They may also add themselves to the list below.
-
-/*
- * Copyright 1987, 1988, 1989, 1998 The Open Group
- * Copyright 1987, 1988, 1989 Digital Equipment Corporation
- * Copyright 1999, 2004, 2008 Keith Packard
- * Copyright 2000 SuSE, Inc.
- * Copyright 2000 Keith Packard, member of The XFree86 Project, Inc.
- * Copyright 2004, 2005, 2007, 2008, 2009, 2010 Red Hat, Inc.
- * Copyright 2004 Nicholas Miell
- * Copyright 2005 Lars Knoll & Zack Rusin, Trolltech
- * Copyright 2005 Trolltech AS
- * Copyright 2007 Luca Barbato
- * Copyright 2008 Aaron Plattner, NVIDIA Corporation
- * Copyright 2008 Rodrigo Kumpera
- * Copyright 2008 André Tupinambá
- * Copyright 2008 Mozilla Corporation
- * Copyright 2008 Frederic Plourde
- * Copyright 2009, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2009, 2010 Nokia Corporation
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
+The following is the MIT license, agreed upon by most contributors.
+Copyright holders of new code should use this license statement where
+possible. They may also add themselves to the list below.
+
+/*
+ * Copyright 1987, 1988, 1989, 1998 The Open Group
+ * Copyright 1987, 1988, 1989 Digital Equipment Corporation
+ * Copyright 1999, 2004, 2008 Keith Packard
+ * Copyright 2000 SuSE, Inc.
+ * Copyright 2000 Keith Packard, member of The XFree86 Project, Inc.
+ * Copyright 2004, 2005, 2007, 2008, 2009, 2010 Red Hat, Inc.
+ * Copyright 2004 Nicholas Miell
+ * Copyright 2005 Lars Knoll & Zack Rusin, Trolltech
+ * Copyright 2005 Trolltech AS
+ * Copyright 2007 Luca Barbato
+ * Copyright 2008 Aaron Plattner, NVIDIA Corporation
+ * Copyright 2008 Rodrigo Kumpera
+ * Copyright 2008 André Tupinambá
+ * Copyright 2008 Mozilla Corporation
+ * Copyright 2008 Frederic Plourde
+ * Copyright 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2009, 2010 Nokia Corporation
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
diff --git a/pixman/INSTALL b/pixman/INSTALL
index 5458714e1..cf1202b66 100644
--- a/pixman/INSTALL
+++ b/pixman/INSTALL
@@ -1,234 +1,234 @@
-Installation Instructions
-*************************
-
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006 Free Software Foundation, Inc.
-
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
-Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package. The following
-more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system.
-
- Running `configure' might take a while. While running, it prints
- some messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
-Some systems require unusual options for compilation or linking that the
-`configure' script does not know about. Run `./configure --help' for
-details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c99 CFLAGS=-g LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you can use GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- With a non-GNU `make', it is safer to compile the package for one
-architecture at a time in the source code directory. After you have
-installed the package for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
-Installation Names
-==================
-
-By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc. You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
-Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug. Until the bug is fixed you can use this workaround:
-
- CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
-
-`configure' Invocation
-======================
-
-`configure' recognizes the following options to control how it operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006 Free Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/pixman/TODO b/pixman/TODO
index 4434ec7cb..465abe7b5 100644
--- a/pixman/TODO
+++ b/pixman/TODO
@@ -1,271 +1,271 @@
- - Testing
- - Test implementations against each other
- - Test both with and without the operator strength reduction.
- They shold be identical.
-
- - SSE 2 issues:
-
- - Use MM_HINT_NTA instead of MM_HINT_T0
-
- - Use of fbCompositeOver_x888x8x8888sse2()
-
- - Update the RLEASING file
-
- - Things to keep in mind if breaking ABI:
-
- - There should be a guard #ifndef I_AM_EITHER_CAIRO_OR_THE_X_SERVER
-
- - X server will require 16.16 essentially forever. Can we get
- the required precision by simply adding offset_x/y to the
- relevant rendering API?
-
- - Get rid of workaround for X server bug.
-
- - pixman_image_set_indexed() should copy its argument, and X
- should be ported over to use a pixman_image as the
- representation of a Picture, rather than creating one on each
- operation.
-
- - We should get rid of pixman_set_static_pointers()
-
- - We should get rid of the various trapezoid helper functions().
- (They only exist because they are theoretically available to
- drivers).
-
- - 16 bit regions should be deleted
-
- - There should only be one trap rasterization API.
-
- - The PIXMAN_g8/c8/etc formats should use the A channel
- to indicate the actual depth. That way PIXMAN_x4c4 and PIXMAN_c8
- won't collide.
-
- - Maybe bite the bullet and make configure.ac generate a pixman-types.h
- file that can be included from pixman.h to avoid the #ifdef magic
- in pixman.h
-
- - Make pixman_region_point_in() survive a NULL box, then fix up
- pixman-compose.c
-
- - Possibly look into inlining the fetch functions
-
- - There is a bug with source clipping demonstrated by clip-test in the
- test directory. If we interprete source clipping as given in
- destination coordinates, which is probably the only sane choice,
- then the result should have two red bars down the sides.
-
- - Test suite
-
- - Add a general way of dealing with architecture specific
- fast-paths. The current idea is to have each operation that can
- be optimized is called through a function pointer that is
- initially set to an initialization function that is responsible for
- setting the function pointer to the appropriate fast-path.
-
- - Go through things marked FIXME
-
- - Add calls to prepare and finish access where necessary. grep for
- ACCESS_MEM, and make sure they are correctly wrapped in prepare
- and finish.
-
- - restore READ/WRITE in the fbcompose combiners since they sometimes
- store directly to destination drawables.
-
- - It probably makes sense to move the more strange X region API
- into pixman as well, but guarded with PIXMAN_XORG_COMPATIBILITY
-
- - Reinstate the FbBits typedef? At the moment we don't
- even have the FbBits type; we just use uint32_t everywhere.
-
- Keith says in bug 2335:
-
- The 64-bit code in fb (pixman) is probably broken; it hasn't been
- used in quite some time as PCI (and AGP) is 32-bits wide, so
- doing things 64-bits at a time is a net loss. To quickly fix
- this, I suggest just using 32-bit datatypes by setting
- IC_SHIFT to 5 for all machines.
-
- - Consider optimizing the 8/16 bit solid fills in pixman-util.c by
- storing more than one value at a time.
-
- - Add an image cache to prevent excessive malloc/free. Note that pixman
- needs to be thread safe when used from cairo.
-
- - Moving to 24.8 coordinates. This is tricky because X is still
- defined as 16.16 and will be basically forever. It's possible we
- could do this by adding extra offset_x/y parameters to the
- trapezoid calls. The X server could then just call the API with
- (0, 0). Cairo would have to make sure that the delta *within* a
- batch of trapezoids does not exceed 16 bit.
-
- - Consider adding actual backends. Brain dump:
-
- A backend is something that knows how to
-
- - Create images
- - Composite three images
- - Rasterize trapezoids
- - Do solid fills and blits
-
- These operations are provided by a vtable that the backend will
- create when it is initialized. Initial backends:
-
- - VMX
- - SSE2
- - MMX
- - Plain Old C
-
- When the SIMD backends are initialized, they will be passed a
- pointer to the Plain Old C backend that they can use for fallback
- purposes.
-
- Images would gain a vtable as well that would contain things like
-
- - Read scanline
- - Write scanline
-
- (Or even read_patch/write_patch as suggested by Keith a while
- back).
-
- This could simplify the compositing code considerably.
-
- - Review the pixman_format_code_t enum to make sure it will support
- future formats. Some formats we will probably need:
-
- ARGB/ABGR with 16/32/64 bit integer/floating channels
- YUV2,
- YV12
-
- Also we may need the ability to distinguish between PICT_c8 and
- PICT_x4c4. (This could be done by interpreting the A channel as
- the depth for TYPE_COLOR and TYPE_GRAY formats).
-
- A possibility may be to reserve the two top bits and make them
- encode "number of places to shift the channel widths given" Since
- these bits are 00 at the moment everything will continue to work,
- but these additional widths will be allowed:
-
- All even widths between 18-32
- All multiples of four widths between 33 and 64
- All multiples of eight between 64 and 128
-
- This means things like r21g22b21 won't work - is that worth
- worrying about? I don't think so. And of course the bpp field
- can't handle a depth of over 256, so > 64 bit channels arent'
- really all that useful.
-
- We could reserve one extra bit to indicate floating point, but
- we may also just add
-
- PIXMAN_TYPE_ARGB_FLOAT
- PIXMAN_TYPE_BGRA_FLOAT
- PIXMAN_TYPE_A_FLOAT
-
- image types. With five bits we can support up to 32 different
- format types, which should be enough for everybody, even if we
- decide to support all the various video formats here:
-
- http://www.fourcc.org/yuv.php
-
- It may make sense to have a PIXMAN_TYPE_YUV, and then use the
- channel bits to specify the exact subtype.
-
- Another possibility is to add
-
- PIXMAN_TYPE_ARGB_W
- PIXMAN_TYPE_ARGB_WW
-
- where the channel widths would get 16 and 32 added to them,
- respectively.
-
- What about color spaces such a linear vs. srGB etc.?
-
-
-done:
-
-- Use pixmanFillsse2 and pixmanBltsse2
-
-- Be consistent about calling sse2 sse2
-
-- Rename "SSE" to "MMX_EXTENSIONS". (Deleted mmx extensions).
-
-- Commented-out uses of fbCompositeCopyAreasse2()
-
-- Consider whether calling regions region16 is really such a great
- idea. Vlad wants 32 bit regions for Cairo. This will break X server
- ABI, but should otherwise be mostly harmless, though a
- pixman_region_get_boxes16() may be useful.
-
-- Altivec signal issue (Company has fix, there is also a patch by
- dwmw2 in rawhide).
-
-- Behdad's MMX issue - see list
-
-- SSE2 issues:
- - Crashes in Mozilla because of unaligned stack. Possible fixes
- - Make use of gcc 4.2 feature to align the stack
- - Write some sort of trampoline that aligns the stack
- before calling SSE functions.
-
-- Get rid of the switch-of-doom; replace it with a big table
- describing the various fast paths.
-
-- Make source clipping optional.
- - done: source clipping happens through an indirection.
- still needs to make the indirection settable. (And call it
- from X)
-
-- Run cairo test suite; fix bugs
- - one bug in source-scale-clip
-
- - Remove the warning suppression in the ACCESS_MEM macro and fix the
- warnings that are real
- - irrelevant now.
-
-- make the wrapper functions global instead of image specific
- - this won't work since pixman is linked to both fb and wfb
-
-- Add non-mmx solid fill
-
-- Make sure the endian-ness macros are defined correctly.
-
-- The rectangles in a region probably shouldn't be returned const as
- the X server will be changing them.
-
-- Right now we _always_ have a clip region, which is empty by default.
- Why does this work at all? It probably doesn't. The server
- distinguishes two cases, one where nothing is clipped (CT_NONE), and
- one where there is a clip region (CT_REGION).
-
-- Default clip region should be the full image
-
- - Test if pseudo color still works. It does, but it also shows that
- copying a pixman_indexed_t on every composite operation is not
- going to fly. So, for now set_indexed() does not copy the
- indexed table.
-
- Also just the malloc() to allocate a pixman image shows up pretty
- high.
-
- Options include
-
- - Make all the setters not copy their arguments
-
- - Possibly combined with going back to the stack allocated
- approach that we already use for regions.
-
- - Keep a cached pixman_image_t around for every picture. It would
- have to be kept uptodate every time something changes about the
- picture.
-
- - Break the X server ABI and simply have the relevant parameter
- stored in the pixman image. This would have the additional benefits
- that:
-
- - We can get rid of the annoying repeat field which is duplicated
- elsewhere.
-
- - We can use pixman_color_t and pixman_gradient_stop_t
- etc. instead of the types that are defined in
- renderproto.h
-
+ - Testing
+ - Test implementations against each other
+ - Test both with and without the operator strength reduction.
+ They shold be identical.
+
+ - SSE 2 issues:
+
+ - Use MM_HINT_NTA instead of MM_HINT_T0
+
+ - Use of fbCompositeOver_x888x8x8888sse2()
+
+ - Update the RLEASING file
+
+ - Things to keep in mind if breaking ABI:
+
+ - There should be a guard #ifndef I_AM_EITHER_CAIRO_OR_THE_X_SERVER
+
+ - X server will require 16.16 essentially forever. Can we get
+ the required precision by simply adding offset_x/y to the
+ relevant rendering API?
+
+ - Get rid of workaround for X server bug.
+
+ - pixman_image_set_indexed() should copy its argument, and X
+ should be ported over to use a pixman_image as the
+ representation of a Picture, rather than creating one on each
+ operation.
+
+ - We should get rid of pixman_set_static_pointers()
+
+ - We should get rid of the various trapezoid helper functions().
+ (They only exist because they are theoretically available to
+ drivers).
+
+ - 16 bit regions should be deleted
+
+ - There should only be one trap rasterization API.
+
+ - The PIXMAN_g8/c8/etc formats should use the A channel
+ to indicate the actual depth. That way PIXMAN_x4c4 and PIXMAN_c8
+ won't collide.
+
+ - Maybe bite the bullet and make configure.ac generate a pixman-types.h
+ file that can be included from pixman.h to avoid the #ifdef magic
+ in pixman.h
+
+ - Make pixman_region_point_in() survive a NULL box, then fix up
+ pixman-compose.c
+
+ - Possibly look into inlining the fetch functions
+
+ - There is a bug with source clipping demonstrated by clip-test in the
+ test directory. If we interprete source clipping as given in
+ destination coordinates, which is probably the only sane choice,
+ then the result should have two red bars down the sides.
+
+ - Test suite
+
+ - Add a general way of dealing with architecture specific
+ fast-paths. The current idea is to have each operation that can
+ be optimized is called through a function pointer that is
+ initially set to an initialization function that is responsible for
+ setting the function pointer to the appropriate fast-path.
+
+ - Go through things marked FIXME
+
+ - Add calls to prepare and finish access where necessary. grep for
+ ACCESS_MEM, and make sure they are correctly wrapped in prepare
+ and finish.
+
+ - restore READ/WRITE in the fbcompose combiners since they sometimes
+ store directly to destination drawables.
+
+ - It probably makes sense to move the more strange X region API
+ into pixman as well, but guarded with PIXMAN_XORG_COMPATIBILITY
+
+ - Reinstate the FbBits typedef? At the moment we don't
+ even have the FbBits type; we just use uint32_t everywhere.
+
+ Keith says in bug 2335:
+
+ The 64-bit code in fb (pixman) is probably broken; it hasn't been
+ used in quite some time as PCI (and AGP) is 32-bits wide, so
+ doing things 64-bits at a time is a net loss. To quickly fix
+ this, I suggest just using 32-bit datatypes by setting
+ IC_SHIFT to 5 for all machines.
+
+ - Consider optimizing the 8/16 bit solid fills in pixman-util.c by
+ storing more than one value at a time.
+
+ - Add an image cache to prevent excessive malloc/free. Note that pixman
+ needs to be thread safe when used from cairo.
+
+ - Moving to 24.8 coordinates. This is tricky because X is still
+ defined as 16.16 and will be basically forever. It's possible we
+ could do this by adding extra offset_x/y parameters to the
+ trapezoid calls. The X server could then just call the API with
+ (0, 0). Cairo would have to make sure that the delta *within* a
+ batch of trapezoids does not exceed 16 bit.
+
+ - Consider adding actual backends. Brain dump:
+
+ A backend is something that knows how to
+
+ - Create images
+ - Composite three images
+ - Rasterize trapezoids
+ - Do solid fills and blits
+
+ These operations are provided by a vtable that the backend will
+ create when it is initialized. Initial backends:
+
+ - VMX
+ - SSE2
+ - MMX
+ - Plain Old C
+
+ When the SIMD backends are initialized, they will be passed a
+ pointer to the Plain Old C backend that they can use for fallback
+ purposes.
+
+ Images would gain a vtable as well that would contain things like
+
+ - Read scanline
+ - Write scanline
+
+ (Or even read_patch/write_patch as suggested by Keith a while
+ back).
+
+ This could simplify the compositing code considerably.
+
+ - Review the pixman_format_code_t enum to make sure it will support
+ future formats. Some formats we will probably need:
+
+ ARGB/ABGR with 16/32/64 bit integer/floating channels
+ YUV2,
+ YV12
+
+ Also we may need the ability to distinguish between PICT_c8 and
+ PICT_x4c4. (This could be done by interpreting the A channel as
+ the depth for TYPE_COLOR and TYPE_GRAY formats).
+
+ A possibility may be to reserve the two top bits and make them
+ encode "number of places to shift the channel widths given" Since
+ these bits are 00 at the moment everything will continue to work,
+ but these additional widths will be allowed:
+
+ All even widths between 18-32
+ All multiples of four widths between 33 and 64
+ All multiples of eight between 64 and 128
+
+ This means things like r21g22b21 won't work - is that worth
+ worrying about? I don't think so. And of course the bpp field
+ can't handle a depth of over 256, so > 64 bit channels arent'
+ really all that useful.
+
+ We could reserve one extra bit to indicate floating point, but
+ we may also just add
+
+ PIXMAN_TYPE_ARGB_FLOAT
+ PIXMAN_TYPE_BGRA_FLOAT
+ PIXMAN_TYPE_A_FLOAT
+
+ image types. With five bits we can support up to 32 different
+ format types, which should be enough for everybody, even if we
+ decide to support all the various video formats here:
+
+ http://www.fourcc.org/yuv.php
+
+ It may make sense to have a PIXMAN_TYPE_YUV, and then use the
+ channel bits to specify the exact subtype.
+
+ Another possibility is to add
+
+ PIXMAN_TYPE_ARGB_W
+ PIXMAN_TYPE_ARGB_WW
+
+ where the channel widths would get 16 and 32 added to them,
+ respectively.
+
+ What about color spaces such a linear vs. srGB etc.?
+
+
+done:
+
+- Use pixmanFillsse2 and pixmanBltsse2
+
+- Be consistent about calling sse2 sse2
+
+- Rename "SSE" to "MMX_EXTENSIONS". (Deleted mmx extensions).
+
+- Commented-out uses of fbCompositeCopyAreasse2()
+
+- Consider whether calling regions region16 is really such a great
+ idea. Vlad wants 32 bit regions for Cairo. This will break X server
+ ABI, but should otherwise be mostly harmless, though a
+ pixman_region_get_boxes16() may be useful.
+
+- Altivec signal issue (Company has fix, there is also a patch by
+ dwmw2 in rawhide).
+
+- Behdad's MMX issue - see list
+
+- SSE2 issues:
+ - Crashes in Mozilla because of unaligned stack. Possible fixes
+ - Make use of gcc 4.2 feature to align the stack
+ - Write some sort of trampoline that aligns the stack
+ before calling SSE functions.
+
+- Get rid of the switch-of-doom; replace it with a big table
+ describing the various fast paths.
+
+- Make source clipping optional.
+ - done: source clipping happens through an indirection.
+ still needs to make the indirection settable. (And call it
+ from X)
+
+- Run cairo test suite; fix bugs
+ - one bug in source-scale-clip
+
+ - Remove the warning suppression in the ACCESS_MEM macro and fix the
+ warnings that are real
+ - irrelevant now.
+
+- make the wrapper functions global instead of image specific
+ - this won't work since pixman is linked to both fb and wfb
+
+- Add non-mmx solid fill
+
+- Make sure the endian-ness macros are defined correctly.
+
+- The rectangles in a region probably shouldn't be returned const as
+ the X server will be changing them.
+
+- Right now we _always_ have a clip region, which is empty by default.
+ Why does this work at all? It probably doesn't. The server
+ distinguishes two cases, one where nothing is clipped (CT_NONE), and
+ one where there is a clip region (CT_REGION).
+
+- Default clip region should be the full image
+
+ - Test if pseudo color still works. It does, but it also shows that
+ copying a pixman_indexed_t on every composite operation is not
+ going to fly. So, for now set_indexed() does not copy the
+ indexed table.
+
+ Also just the malloc() to allocate a pixman image shows up pretty
+ high.
+
+ Options include
+
+ - Make all the setters not copy their arguments
+
+ - Possibly combined with going back to the stack allocated
+ approach that we already use for regions.
+
+ - Keep a cached pixman_image_t around for every picture. It would
+ have to be kept uptodate every time something changes about the
+ picture.
+
+ - Break the X server ABI and simply have the relevant parameter
+ stored in the pixman image. This would have the additional benefits
+ that:
+
+ - We can get rid of the annoying repeat field which is duplicated
+ elsewhere.
+
+ - We can use pixman_color_t and pixman_gradient_stop_t
+ etc. instead of the types that are defined in
+ renderproto.h
+
diff --git a/pixman/pixman-1-uninstalled.pc.in b/pixman/pixman-1-uninstalled.pc.in
index e0347d010..c15e86547 100644
--- a/pixman/pixman-1-uninstalled.pc.in
+++ b/pixman/pixman-1-uninstalled.pc.in
@@ -1,5 +1,5 @@
-Name: Pixman
-Description: The pixman library (version 1)
-Version: @PACKAGE_VERSION@
-Cflags: -I${pc_top_builddir}/${pcfiledir}/pixman
-Libs: ${pc_top_builddir}/${pcfiledir}/pixman/libpixman-1.la
+Name: Pixman
+Description: The pixman library (version 1)
+Version: @PACKAGE_VERSION@
+Cflags: -I${pc_top_builddir}/${pcfiledir}/pixman
+Libs: ${pc_top_builddir}/${pcfiledir}/pixman/libpixman-1.la
diff --git a/pixman/pixman-1.pc.in b/pixman/pixman-1.pc.in
index 936d95db0..e44361749 100644
--- a/pixman/pixman-1.pc.in
+++ b/pixman/pixman-1.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Pixman
-Description: The pixman library (version 1)
-Version: @PACKAGE_VERSION@
-Cflags: -I${includedir}/pixman-1 @DEP_CFLAGS@
-Libs: -L${libdir} -lpixman-1 @DEP_LIBS@
-
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Pixman
+Description: The pixman library (version 1)
+Version: @PACKAGE_VERSION@
+Cflags: -I${includedir}/pixman-1 @DEP_CFLAGS@
+Libs: -L${libdir} -lpixman-1 @DEP_LIBS@
+
diff --git a/pixman/pixman/make-combine.pl b/pixman/pixman/make-combine.pl
index 210a5da12..417bdf085 100644
--- a/pixman/pixman/make-combine.pl
+++ b/pixman/pixman/make-combine.pl
@@ -1,86 +1,86 @@
-$usage = "Usage: combine.pl { 8 | 16 } < pixman-combine.c.template";
-
-$#ARGV == 0 or die $usage;
-
-# Get the component size.
-$size = int($ARGV[0]);
-$size == 8 or $size == 16 or die $usage;
-
-$pixel_size = $size * 4;
-$half_pixel_size = $size * 2;
-
-sub mask {
- my $str = shift;
- my $suffix;
- $suffix = "ULL" if $size > 8;
-
- return "0x" . $str . $suffix;
-}
-
-# Generate mask strings.
-$nibbles = $size / 4;
-$mask = "f" x $nibbles;
-$zero_mask = "0" x $nibbles;
-$one_half = "8" . "0" x ($nibbles - 1);
-
-print "/* WARNING: This file is generated by combine.pl from combine.inc.\n";
-print " Please edit one of those files rather than this one. */\n";
-print "\n";
-
-print "#line 1 \"pixman-combine.c.template\"\n";
-
-$mask_ = mask($mask);
-$one_half_ = mask($one_half);
-$g_mask = mask($mask . $zero_mask);
-$b_mask = mask($mask . $zero_mask x 2);
-$a_mask = mask($mask . $zero_mask x 3);
-$rb_mask = mask($mask . $zero_mask . $mask);
-$ag_mask = mask($mask . $zero_mask . $mask . $zero_mask);
-$rb_one_half = mask($one_half . $zero_mask . $one_half);
-$rb_mask_plus_one = mask("1" . $zero_mask x 2 . "1" . $zero_mask);
-
-while (<STDIN>) {
- # Mask and 1/2 value for a single component.
- s/#define COMPONENT_SIZE\b/$& $size/;
- s/#define MASK\b/$& $mask_/;
- s/#define ONE_HALF\b/$& $one_half_/;
-
- # Shifts and masks for green, blue, and alpha.
- s/#define G_SHIFT\b/$& $size/;
- s/#define R_SHIFT\b/$& $size * 2/;
- s/#define A_SHIFT\b/$& $size * 3/;
- s/#define G_MASK\b/$& $g_mask/;
- s/#define R_MASK\b/$& $b_mask/;
- s/#define A_MASK\b/$& $a_mask/;
-
- # Special values for dealing with red + blue at the same time.
- s/#define RB_MASK\b/$& $rb_mask/;
- s/#define AG_MASK\b/$& $ag_mask/;
- s/#define RB_ONE_HALF\b/$& $rb_one_half/;
- s/#define RB_MASK_PLUS_ONE\b/$& $rb_mask_plus_one/;
-
- # Add 32/64 suffix to combining function types.
- s/\bCombineFunc\b/CombineFunc$pixel_size/;
- s/\bFbComposeFunctions\b/FbComposeFunctions$pixel_size/;
- s/combine_width/combine_$pixel_size/;
- s/_pixman_setup_combiner_functions_width/_pixman_setup_combiner_functions_$pixel_size/;
- s/UNc/UN$size/g;
- s/ALPHA_c/ALPHA_$size/g;
- s/RED_c/RED_$size/g;
- s/GREEN_c/GREEN_$size/g;
- s/BLUE_c/BLUE_$size/g;
-
- # Convert comp*_t values into the appropriate real types.
- s/comp1_t/uint${size}_t/g;
- s/comp2_t/uint${half_pixel_size}_t/g;
- s/comp4_t/uint${pixel_size}_t/g;
-
- # Change the function table name for the 64-bit version.
- s/pixman_composeFunctions/pixman_composeFunctions64/ if $size == 16;
-
- # Change the header for the 64-bit version
- s/pixman-combine.h/pixman-combine64.h/ if $size == 16;
- s/pixman-combine.h/pixman-combine32.h/ if $size == 8;
-
- print;
-}
+$usage = "Usage: combine.pl { 8 | 16 } < pixman-combine.c.template";
+
+$#ARGV == 0 or die $usage;
+
+# Get the component size.
+$size = int($ARGV[0]);
+$size == 8 or $size == 16 or die $usage;
+
+$pixel_size = $size * 4;
+$half_pixel_size = $size * 2;
+
+sub mask {
+ my $str = shift;
+ my $suffix;
+ $suffix = "ULL" if $size > 8;
+
+ return "0x" . $str . $suffix;
+}
+
+# Generate mask strings.
+$nibbles = $size / 4;
+$mask = "f" x $nibbles;
+$zero_mask = "0" x $nibbles;
+$one_half = "8" . "0" x ($nibbles - 1);
+
+print "/* WARNING: This file is generated by combine.pl from combine.inc.\n";
+print " Please edit one of those files rather than this one. */\n";
+print "\n";
+
+print "#line 1 \"pixman-combine.c.template\"\n";
+
+$mask_ = mask($mask);
+$one_half_ = mask($one_half);
+$g_mask = mask($mask . $zero_mask);
+$b_mask = mask($mask . $zero_mask x 2);
+$a_mask = mask($mask . $zero_mask x 3);
+$rb_mask = mask($mask . $zero_mask . $mask);
+$ag_mask = mask($mask . $zero_mask . $mask . $zero_mask);
+$rb_one_half = mask($one_half . $zero_mask . $one_half);
+$rb_mask_plus_one = mask("1" . $zero_mask x 2 . "1" . $zero_mask);
+
+while (<STDIN>) {
+ # Mask and 1/2 value for a single component.
+ s/#define COMPONENT_SIZE\b/$& $size/;
+ s/#define MASK\b/$& $mask_/;
+ s/#define ONE_HALF\b/$& $one_half_/;
+
+ # Shifts and masks for green, blue, and alpha.
+ s/#define G_SHIFT\b/$& $size/;
+ s/#define R_SHIFT\b/$& $size * 2/;
+ s/#define A_SHIFT\b/$& $size * 3/;
+ s/#define G_MASK\b/$& $g_mask/;
+ s/#define R_MASK\b/$& $b_mask/;
+ s/#define A_MASK\b/$& $a_mask/;
+
+ # Special values for dealing with red + blue at the same time.
+ s/#define RB_MASK\b/$& $rb_mask/;
+ s/#define AG_MASK\b/$& $ag_mask/;
+ s/#define RB_ONE_HALF\b/$& $rb_one_half/;
+ s/#define RB_MASK_PLUS_ONE\b/$& $rb_mask_plus_one/;
+
+ # Add 32/64 suffix to combining function types.
+ s/\bCombineFunc\b/CombineFunc$pixel_size/;
+ s/\bFbComposeFunctions\b/FbComposeFunctions$pixel_size/;
+ s/combine_width/combine_$pixel_size/;
+ s/_pixman_setup_combiner_functions_width/_pixman_setup_combiner_functions_$pixel_size/;
+ s/UNc/UN$size/g;
+ s/ALPHA_c/ALPHA_$size/g;
+ s/RED_c/RED_$size/g;
+ s/GREEN_c/GREEN_$size/g;
+ s/BLUE_c/BLUE_$size/g;
+
+ # Convert comp*_t values into the appropriate real types.
+ s/comp1_t/uint${size}_t/g;
+ s/comp2_t/uint${half_pixel_size}_t/g;
+ s/comp4_t/uint${pixel_size}_t/g;
+
+ # Change the function table name for the 64-bit version.
+ s/pixman_composeFunctions/pixman_composeFunctions64/ if $size == 16;
+
+ # Change the header for the 64-bit version
+ s/pixman-combine.h/pixman-combine64.h/ if $size == 16;
+ s/pixman-combine.h/pixman-combine32.h/ if $size == 8;
+
+ print;
+}
diff --git a/pixman/pixman/pixman-access-accessors.c b/pixman/pixman/pixman-access-accessors.c
index 3263582f1..bde67a70e 100644
--- a/pixman/pixman/pixman-access-accessors.c
+++ b/pixman/pixman/pixman-access-accessors.c
@@ -1,3 +1,3 @@
-#define PIXMAN_FB_ACCESSORS
-
-#include "pixman-access.c"
+#define PIXMAN_FB_ACCESSORS
+
+#include "pixman-access.c"
diff --git a/pixman/pixman/pixman-arm-neon-asm.h b/pixman/pixman/pixman-arm-neon-asm.h
index 0ba67d05f..97adc6a87 100644
--- a/pixman/pixman/pixman-arm-neon-asm.h
+++ b/pixman/pixman/pixman-arm-neon-asm.h
@@ -1,1177 +1,1177 @@
-/*
- * Copyright © 2009 Nokia Corporation
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Author: Siarhei Siamashka (siarhei.siamashka@nokia.com)
- */
-
-/*
- * This file contains a macro ('generate_composite_function') which can
- * construct 2D image processing functions, based on a common template.
- * Any combinations of source, destination and mask images with 8bpp,
- * 16bpp, 24bpp, 32bpp color formats are supported.
- *
- * This macro takes care of:
- * - handling of leading and trailing unaligned pixels
- * - doing most of the work related to L2 cache preload
- * - encourages the use of software pipelining for better instructions
- * scheduling
- *
- * The user of this macro has to provide some configuration parameters
- * (bit depths for the images, prefetch distance, etc.) and a set of
- * macros, which should implement basic code chunks responsible for
- * pixels processing. See 'pixman-arm-neon-asm.S' file for the usage
- * examples.
- *
- * TODO:
- * - try overlapped pixel method (from Ian Rickards) when processing
- * exactly two blocks of pixels
- * - maybe add an option to do reverse scanline processing
- */
-
-/*
- * Bit flags for 'generate_composite_function' macro which are used
- * to tune generated functions behavior.
- */
-.set FLAG_DST_WRITEONLY, 0
-.set FLAG_DST_READWRITE, 1
-.set FLAG_DEINTERLEAVE_32BPP, 2
-
-/*
- * Offset in stack where mask and source pointer/stride can be accessed
- * from 'init' macro. This is useful for doing special handling for solid mask.
- */
-.set ARGS_STACK_OFFSET, 40
-
-/*
- * Constants for selecting preferable prefetch type.
- */
-.set PREFETCH_TYPE_NONE, 0 /* No prefetch at all */
-.set PREFETCH_TYPE_SIMPLE, 1 /* A simple, fixed-distance-ahead prefetch */
-.set PREFETCH_TYPE_ADVANCED, 2 /* Advanced fine-grained prefetch */
-
-/*
- * Definitions of supplementary pixld/pixst macros (for partial load/store of
- * pixel data).
- */
-
-.macro pixldst1 op, elem_size, reg1, mem_operand, abits
-.if abits > 0
- op&.&elem_size {d&reg1}, [&mem_operand&, :&abits&]!
-.else
- op&.&elem_size {d&reg1}, [&mem_operand&]!
-.endif
-.endm
-
-.macro pixldst2 op, elem_size, reg1, reg2, mem_operand, abits
-.if abits > 0
- op&.&elem_size {d&reg1, d&reg2}, [&mem_operand&, :&abits&]!
-.else
- op&.&elem_size {d&reg1, d&reg2}, [&mem_operand&]!
-.endif
-.endm
-
-.macro pixldst4 op, elem_size, reg1, reg2, reg3, reg4, mem_operand, abits
-.if abits > 0
- op&.&elem_size {d&reg1, d&reg2, d&reg3, d&reg4}, [&mem_operand&, :&abits&]!
-.else
- op&.&elem_size {d&reg1, d&reg2, d&reg3, d&reg4}, [&mem_operand&]!
-.endif
-.endm
-
-.macro pixldst0 op, elem_size, reg1, idx, mem_operand, abits
- op&.&elem_size {d&reg1[idx]}, [&mem_operand&]!
-.endm
-
-.macro pixldst3 op, elem_size, reg1, reg2, reg3, mem_operand
- op&.&elem_size {d&reg1, d&reg2, d&reg3}, [&mem_operand&]!
-.endm
-
-.macro pixldst30 op, elem_size, reg1, reg2, reg3, idx, mem_operand
- op&.&elem_size {d&reg1[idx], d&reg2[idx], d&reg3[idx]}, [&mem_operand&]!
-.endm
-
-.macro pixldst numbytes, op, elem_size, basereg, mem_operand, abits
-.if numbytes == 32
- pixldst4 op, elem_size, %(basereg+4), %(basereg+5), \
- %(basereg+6), %(basereg+7), mem_operand, abits
-.elseif numbytes == 16
- pixldst2 op, elem_size, %(basereg+2), %(basereg+3), mem_operand, abits
-.elseif numbytes == 8
- pixldst1 op, elem_size, %(basereg+1), mem_operand, abits
-.elseif numbytes == 4
- .if !RESPECT_STRICT_ALIGNMENT || (elem_size == 32)
- pixldst0 op, 32, %(basereg+0), 1, mem_operand, abits
- .elseif elem_size == 16
- pixldst0 op, 16, %(basereg+0), 2, mem_operand, abits
- pixldst0 op, 16, %(basereg+0), 3, mem_operand, abits
- .else
- pixldst0 op, 8, %(basereg+0), 4, mem_operand, abits
- pixldst0 op, 8, %(basereg+0), 5, mem_operand, abits
- pixldst0 op, 8, %(basereg+0), 6, mem_operand, abits
- pixldst0 op, 8, %(basereg+0), 7, mem_operand, abits
- .endif
-.elseif numbytes == 2
- .if !RESPECT_STRICT_ALIGNMENT || (elem_size == 16)
- pixldst0 op, 16, %(basereg+0), 1, mem_operand, abits
- .else
- pixldst0 op, 8, %(basereg+0), 2, mem_operand, abits
- pixldst0 op, 8, %(basereg+0), 3, mem_operand, abits
- .endif
-.elseif numbytes == 1
- pixldst0 op, 8, %(basereg+0), 1, mem_operand, abits
-.else
- .error "unsupported size: numbytes"
-.endif
-.endm
-
-.macro pixld numpix, bpp, basereg, mem_operand, abits=0
-.if bpp > 0
-.if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0)
- pixldst4 vld4, 8, %(basereg+4), %(basereg+5), \
- %(basereg+6), %(basereg+7), mem_operand, abits
-.elseif (bpp == 24) && (numpix == 8)
- pixldst3 vld3, 8, %(basereg+3), %(basereg+4), %(basereg+5), mem_operand
-.elseif (bpp == 24) && (numpix == 4)
- pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 4, mem_operand
- pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 5, mem_operand
- pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 6, mem_operand
- pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 7, mem_operand
-.elseif (bpp == 24) && (numpix == 2)
- pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 2, mem_operand
- pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 3, mem_operand
-.elseif (bpp == 24) && (numpix == 1)
- pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 1, mem_operand
-.else
- pixldst %(numpix * bpp / 8), vld1, %(bpp), basereg, mem_operand, abits
-.endif
-.endif
-.endm
-
-.macro pixst numpix, bpp, basereg, mem_operand, abits=0
-.if bpp > 0
-.if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0)
- pixldst4 vst4, 8, %(basereg+4), %(basereg+5), \
- %(basereg+6), %(basereg+7), mem_operand, abits
-.elseif (bpp == 24) && (numpix == 8)
- pixldst3 vst3, 8, %(basereg+3), %(basereg+4), %(basereg+5), mem_operand
-.elseif (bpp == 24) && (numpix == 4)
- pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 4, mem_operand
- pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 5, mem_operand
- pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 6, mem_operand
- pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 7, mem_operand
-.elseif (bpp == 24) && (numpix == 2)
- pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 2, mem_operand
- pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 3, mem_operand
-.elseif (bpp == 24) && (numpix == 1)
- pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 1, mem_operand
-.else
- pixldst %(numpix * bpp / 8), vst1, %(bpp), basereg, mem_operand, abits
-.endif
-.endif
-.endm
-
-.macro pixld_a numpix, bpp, basereg, mem_operand
-.if (bpp * numpix) <= 128
- pixld numpix, bpp, basereg, mem_operand, %(bpp * numpix)
-.else
- pixld numpix, bpp, basereg, mem_operand, 128
-.endif
-.endm
-
-.macro pixst_a numpix, bpp, basereg, mem_operand
-.if (bpp * numpix) <= 128
- pixst numpix, bpp, basereg, mem_operand, %(bpp * numpix)
-.else
- pixst numpix, bpp, basereg, mem_operand, 128
-.endif
-.endm
-
-/*
- * Pixel fetcher for nearest scaling (needs TMP1, TMP2, VX, UNIT_X register
- * aliases to be defined)
- */
-.macro pixld1_s elem_size, reg1, mem_operand
-.if elem_size == 16
- mov TMP1, VX, asr #16
- add VX, VX, UNIT_X
- add TMP1, mem_operand, TMP1, asl #1
- mov TMP2, VX, asr #16
- add VX, VX, UNIT_X
- add TMP2, mem_operand, TMP2, asl #1
- vld1.16 {d&reg1&[0]}, [TMP1, :16]
- mov TMP1, VX, asr #16
- add VX, VX, UNIT_X
- add TMP1, mem_operand, TMP1, asl #1
- vld1.16 {d&reg1&[1]}, [TMP2, :16]
- mov TMP2, VX, asr #16
- add VX, VX, UNIT_X
- add TMP2, mem_operand, TMP2, asl #1
- vld1.16 {d&reg1&[2]}, [TMP1, :16]
- vld1.16 {d&reg1&[3]}, [TMP2, :16]
-.elseif elem_size == 32
- mov TMP1, VX, asr #16
- add VX, VX, UNIT_X
- add TMP1, mem_operand, TMP1, asl #2
- mov TMP2, VX, asr #16
- add VX, VX, UNIT_X
- add TMP2, mem_operand, TMP2, asl #2
- vld1.32 {d&reg1&[0]}, [TMP1, :32]
- vld1.32 {d&reg1&[1]}, [TMP2, :32]
-.else
- .error "unsupported"
-.endif
-.endm
-
-.macro pixld2_s elem_size, reg1, reg2, mem_operand
-.if elem_size == 32
- mov TMP1, VX, asr #16
- add VX, VX, UNIT_X, asl #1
- add TMP1, mem_operand, TMP1, asl #2
- mov TMP2, VX, asr #16
- sub VX, VX, UNIT_X
- add TMP2, mem_operand, TMP2, asl #2
- vld1.32 {d&reg1&[0]}, [TMP1, :32]
- mov TMP1, VX, asr #16
- add VX, VX, UNIT_X, asl #1
- add TMP1, mem_operand, TMP1, asl #2
- vld1.32 {d&reg2&[0]}, [TMP2, :32]
- mov TMP2, VX, asr #16
- add VX, VX, UNIT_X
- add TMP2, mem_operand, TMP2, asl #2
- vld1.32 {d&reg1&[1]}, [TMP1, :32]
- vld1.32 {d&reg2&[1]}, [TMP2, :32]
-.else
- pixld1_s elem_size, reg1, mem_operand
- pixld1_s elem_size, reg2, mem_operand
-.endif
-.endm
-
-.macro pixld0_s elem_size, reg1, idx, mem_operand
-.if elem_size == 16
- mov TMP1, VX, asr #16
- add VX, VX, UNIT_X
- add TMP1, mem_operand, TMP1, asl #1
- vld1.16 {d&reg1&[idx]}, [TMP1, :16]
-.elseif elem_size == 32
- mov TMP1, VX, asr #16
- add VX, VX, UNIT_X
- add TMP1, mem_operand, TMP1, asl #2
- vld1.32 {d&reg1&[idx]}, [TMP1, :32]
-.endif
-.endm
-
-.macro pixld_s_internal numbytes, elem_size, basereg, mem_operand
-.if numbytes == 32
- pixld2_s elem_size, %(basereg+4), %(basereg+5), mem_operand
- pixld2_s elem_size, %(basereg+6), %(basereg+7), mem_operand
- pixdeinterleave elem_size, %(basereg+4)
-.elseif numbytes == 16
- pixld2_s elem_size, %(basereg+2), %(basereg+3), mem_operand
-.elseif numbytes == 8
- pixld1_s elem_size, %(basereg+1), mem_operand
-.elseif numbytes == 4
- .if elem_size == 32
- pixld0_s elem_size, %(basereg+0), 1, mem_operand
- .elseif elem_size == 16
- pixld0_s elem_size, %(basereg+0), 2, mem_operand
- pixld0_s elem_size, %(basereg+0), 3, mem_operand
- .else
- pixld0_s elem_size, %(basereg+0), 4, mem_operand
- pixld0_s elem_size, %(basereg+0), 5, mem_operand
- pixld0_s elem_size, %(basereg+0), 6, mem_operand
- pixld0_s elem_size, %(basereg+0), 7, mem_operand
- .endif
-.elseif numbytes == 2
- .if elem_size == 16
- pixld0_s elem_size, %(basereg+0), 1, mem_operand
- .else
- pixld0_s elem_size, %(basereg+0), 2, mem_operand
- pixld0_s elem_size, %(basereg+0), 3, mem_operand
- .endif
-.elseif numbytes == 1
- pixld0_s elem_size, %(basereg+0), 1, mem_operand
-.else
- .error "unsupported size: numbytes"
-.endif
-.endm
-
-.macro pixld_s numpix, bpp, basereg, mem_operand
-.if bpp > 0
- pixld_s_internal %(numpix * bpp / 8), %(bpp), basereg, mem_operand
-.endif
-.endm
-
-.macro vuzp8 reg1, reg2
- vuzp.8 d&reg1, d&reg2
-.endm
-
-.macro vzip8 reg1, reg2
- vzip.8 d&reg1, d&reg2
-.endm
-
-/* deinterleave B, G, R, A channels for eight 32bpp pixels in 4 registers */
-.macro pixdeinterleave bpp, basereg
-.if (bpp == 32) && (DEINTERLEAVE_32BPP_ENABLED != 0)
- vuzp8 %(basereg+0), %(basereg+1)
- vuzp8 %(basereg+2), %(basereg+3)
- vuzp8 %(basereg+1), %(basereg+3)
- vuzp8 %(basereg+0), %(basereg+2)
-.endif
-.endm
-
-/* interleave B, G, R, A channels for eight 32bpp pixels in 4 registers */
-.macro pixinterleave bpp, basereg
-.if (bpp == 32) && (DEINTERLEAVE_32BPP_ENABLED != 0)
- vzip8 %(basereg+0), %(basereg+2)
- vzip8 %(basereg+1), %(basereg+3)
- vzip8 %(basereg+2), %(basereg+3)
- vzip8 %(basereg+0), %(basereg+1)
-.endif
-.endm
-
-/*
- * This is a macro for implementing cache preload. The main idea is that
- * cache preload logic is mostly independent from the rest of pixels
- * processing code. It starts at the top left pixel and moves forward
- * across pixels and can jump across scanlines. Prefetch distance is
- * handled in an 'incremental' way: it starts from 0 and advances to the
- * optimal distance over time. After reaching optimal prefetch distance,
- * it is kept constant. There are some checks which prevent prefetching
- * unneeded pixel lines below the image (but it still can prefetch a bit
- * more data on the right side of the image - not a big issue and may
- * be actually helpful when rendering text glyphs). Additional trick is
- * the use of LDR instruction for prefetch instead of PLD when moving to
- * the next line, the point is that we have a high chance of getting TLB
- * miss in this case, and PLD would be useless.
- *
- * This sounds like it may introduce a noticeable overhead (when working with
- * fully cached data). But in reality, due to having a separate pipeline and
- * instruction queue for NEON unit in ARM Cortex-A8, normal ARM code can
- * execute simultaneously with NEON and be completely shadowed by it. Thus
- * we get no performance overhead at all (*). This looks like a very nice
- * feature of Cortex-A8, if used wisely. We don't have a hardware prefetcher,
- * but still can implement some rather advanced prefetch logic in sofware
- * for almost zero cost!
- *
- * (*) The overhead of the prefetcher is visible when running some trivial
- * pixels processing like simple copy. Anyway, having prefetch is a must
- * when working with the graphics data.
- */
-.macro PF a, x:vararg
-.if (PREFETCH_TYPE_CURRENT == PREFETCH_TYPE_ADVANCED)
- a x
-.endif
-.endm
-
-.macro cache_preload std_increment, boost_increment
-.if (src_bpp_shift >= 0) || (dst_r_bpp != 0) || (mask_bpp_shift >= 0)
-.if regs_shortage
- PF ldr ORIG_W, [sp] /* If we are short on regs, ORIG_W is kept on stack */
-.endif
-.if std_increment != 0
- PF add PF_X, PF_X, #std_increment
-.endif
- PF tst PF_CTL, #0xF
- PF addne PF_X, PF_X, #boost_increment
- PF subne PF_CTL, PF_CTL, #1
- PF cmp PF_X, ORIG_W
-.if src_bpp_shift >= 0
- PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
-.endif
-.if dst_r_bpp != 0
- PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
-.endif
-.if mask_bpp_shift >= 0
- PF pld, [PF_MASK, PF_X, lsl #mask_bpp_shift]
-.endif
- PF subge PF_X, PF_X, ORIG_W
- PF subges PF_CTL, PF_CTL, #0x10
-.if src_bpp_shift >= 0
- PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
-.endif
-.if dst_r_bpp != 0
- PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
-.endif
-.if mask_bpp_shift >= 0
- PF ldrgeb DUMMY, [PF_MASK, MASK_STRIDE, lsl #mask_bpp_shift]!
-.endif
-.endif
-.endm
-
-.macro cache_preload_simple
-.if (PREFETCH_TYPE_CURRENT == PREFETCH_TYPE_SIMPLE)
-.if src_bpp > 0
- pld [SRC, #(PREFETCH_DISTANCE_SIMPLE * src_bpp / 8)]
-.endif
-.if dst_r_bpp > 0
- pld [DST_R, #(PREFETCH_DISTANCE_SIMPLE * dst_r_bpp / 8)]
-.endif
-.if mask_bpp > 0
- pld [MASK, #(PREFETCH_DISTANCE_SIMPLE * mask_bpp / 8)]
-.endif
-.endif
-.endm
-
-.macro fetch_mask_pixblock
- pixld pixblock_size, mask_bpp, \
- (mask_basereg - pixblock_size * mask_bpp / 64), MASK
-.endm
-
-/*
- * Macro which is used to process leading pixels until destination
- * pointer is properly aligned (at 16 bytes boundary). When destination
- * buffer uses 16bpp format, this is unnecessary, or even pointless.
- */
-.macro ensure_destination_ptr_alignment process_pixblock_head, \
- process_pixblock_tail, \
- process_pixblock_tail_head
-.if dst_w_bpp != 24
- tst DST_R, #0xF
- beq 2f
-
-.irp lowbit, 1, 2, 4, 8, 16
-local skip1
-.if (dst_w_bpp <= (lowbit * 8)) && ((lowbit * 8) < (pixblock_size * dst_w_bpp))
-.if lowbit < 16 /* we don't need more than 16-byte alignment */
- tst DST_R, #lowbit
- beq 1f
-.endif
- pixld_src (lowbit * 8 / dst_w_bpp), src_bpp, src_basereg, SRC
- pixld (lowbit * 8 / dst_w_bpp), mask_bpp, mask_basereg, MASK
-.if dst_r_bpp > 0
- pixld_a (lowbit * 8 / dst_r_bpp), dst_r_bpp, dst_r_basereg, DST_R
-.else
- add DST_R, DST_R, #lowbit
-.endif
- PF add PF_X, PF_X, #(lowbit * 8 / dst_w_bpp)
- sub W, W, #(lowbit * 8 / dst_w_bpp)
-1:
-.endif
-.endr
- pixdeinterleave src_bpp, src_basereg
- pixdeinterleave mask_bpp, mask_basereg
- pixdeinterleave dst_r_bpp, dst_r_basereg
-
- process_pixblock_head
- cache_preload 0, pixblock_size
- cache_preload_simple
- process_pixblock_tail
-
- pixinterleave dst_w_bpp, dst_w_basereg
-.irp lowbit, 1, 2, 4, 8, 16
-.if (dst_w_bpp <= (lowbit * 8)) && ((lowbit * 8) < (pixblock_size * dst_w_bpp))
-.if lowbit < 16 /* we don't need more than 16-byte alignment */
- tst DST_W, #lowbit
- beq 1f
-.endif
- pixst_a (lowbit * 8 / dst_w_bpp), dst_w_bpp, dst_w_basereg, DST_W
-1:
-.endif
-.endr
-.endif
-2:
-.endm
-
-/*
- * Special code for processing up to (pixblock_size - 1) remaining
- * trailing pixels. As SIMD processing performs operation on
- * pixblock_size pixels, anything smaller than this has to be loaded
- * and stored in a special way. Loading and storing of pixel data is
- * performed in such a way that we fill some 'slots' in the NEON
- * registers (some slots naturally are unused), then perform compositing
- * operation as usual. In the end, the data is taken from these 'slots'
- * and saved to memory.
- *
- * cache_preload_flag - allows to suppress prefetch if
- * set to 0
- * dst_aligned_flag - selects whether destination buffer
- * is aligned
- */
-.macro process_trailing_pixels cache_preload_flag, \
- dst_aligned_flag, \
- process_pixblock_head, \
- process_pixblock_tail, \
- process_pixblock_tail_head
- tst W, #(pixblock_size - 1)
- beq 2f
-.irp chunk_size, 16, 8, 4, 2, 1
-.if pixblock_size > chunk_size
- tst W, #chunk_size
- beq 1f
- pixld_src chunk_size, src_bpp, src_basereg, SRC
- pixld chunk_size, mask_bpp, mask_basereg, MASK
-.if dst_aligned_flag != 0
- pixld_a chunk_size, dst_r_bpp, dst_r_basereg, DST_R
-.else
- pixld chunk_size, dst_r_bpp, dst_r_basereg, DST_R
-.endif
-.if cache_preload_flag != 0
- PF add PF_X, PF_X, #chunk_size
-.endif
-1:
-.endif
-.endr
- pixdeinterleave src_bpp, src_basereg
- pixdeinterleave mask_bpp, mask_basereg
- pixdeinterleave dst_r_bpp, dst_r_basereg
-
- process_pixblock_head
-.if cache_preload_flag != 0
- cache_preload 0, pixblock_size
- cache_preload_simple
-.endif
- process_pixblock_tail
- pixinterleave dst_w_bpp, dst_w_basereg
-.irp chunk_size, 16, 8, 4, 2, 1
-.if pixblock_size > chunk_size
- tst W, #chunk_size
- beq 1f
-.if dst_aligned_flag != 0
- pixst_a chunk_size, dst_w_bpp, dst_w_basereg, DST_W
-.else
- pixst chunk_size, dst_w_bpp, dst_w_basereg, DST_W
-.endif
-1:
-.endif
-.endr
-2:
-.endm
-
-/*
- * Macro, which performs all the needed operations to switch to the next
- * scanline and start the next loop iteration unless all the scanlines
- * are already processed.
- */
-.macro advance_to_next_scanline start_of_loop_label
-.if regs_shortage
- ldrd W, [sp] /* load W and H (width and height) from stack */
-.else
- mov W, ORIG_W
-.endif
- add DST_W, DST_W, DST_STRIDE, lsl #dst_bpp_shift
-.if src_bpp != 0
- add SRC, SRC, SRC_STRIDE, lsl #src_bpp_shift
-.endif
-.if mask_bpp != 0
- add MASK, MASK, MASK_STRIDE, lsl #mask_bpp_shift
-.endif
-.if (dst_w_bpp != 24)
- sub DST_W, DST_W, W, lsl #dst_bpp_shift
-.endif
-.if (src_bpp != 24) && (src_bpp != 0)
- sub SRC, SRC, W, lsl #src_bpp_shift
-.endif
-.if (mask_bpp != 24) && (mask_bpp != 0)
- sub MASK, MASK, W, lsl #mask_bpp_shift
-.endif
- subs H, H, #1
- mov DST_R, DST_W
-.if regs_shortage
- str H, [sp, #4] /* save updated height to stack */
-.endif
- bge start_of_loop_label
-.endm
-
-/*
- * Registers are allocated in the following way by default:
- * d0, d1, d2, d3 - reserved for loading source pixel data
- * d4, d5, d6, d7 - reserved for loading destination pixel data
- * d24, d25, d26, d27 - reserved for loading mask pixel data
- * d28, d29, d30, d31 - final destination pixel data for writeback to memory
- */
-.macro generate_composite_function fname, \
- src_bpp_, \
- mask_bpp_, \
- dst_w_bpp_, \
- flags, \
- pixblock_size_, \
- prefetch_distance, \
- init, \
- cleanup, \
- process_pixblock_head, \
- process_pixblock_tail, \
- process_pixblock_tail_head, \
- dst_w_basereg_ = 28, \
- dst_r_basereg_ = 4, \
- src_basereg_ = 0, \
- mask_basereg_ = 24
-
- .func fname
- .global fname
- /* For ELF format also set function visibility to hidden */
-#ifdef __ELF__
- .hidden fname
- .type fname, %function
-#endif
-fname:
- push {r4-r12, lr} /* save all registers */
-
-/*
- * Select prefetch type for this function. If prefetch distance is
- * set to 0 or one of the color formats is 24bpp, SIMPLE prefetch
- * has to be used instead of ADVANCED.
- */
- .set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_DEFAULT
-.if prefetch_distance == 0
- .set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_NONE
-.elseif (PREFETCH_TYPE_CURRENT > PREFETCH_TYPE_SIMPLE) && \
- ((src_bpp_ == 24) || (mask_bpp_ == 24) || (dst_w_bpp_ == 24))
- .set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_SIMPLE
-.endif
-
-/*
- * Make some macro arguments globally visible and accessible
- * from other macros
- */
- .set src_bpp, src_bpp_
- .set mask_bpp, mask_bpp_
- .set dst_w_bpp, dst_w_bpp_
- .set pixblock_size, pixblock_size_
- .set dst_w_basereg, dst_w_basereg_
- .set dst_r_basereg, dst_r_basereg_
- .set src_basereg, src_basereg_
- .set mask_basereg, mask_basereg_
-
- .macro pixld_src x:vararg
- pixld x
- .endm
- .macro fetch_src_pixblock
- pixld_src pixblock_size, src_bpp, \
- (src_basereg - pixblock_size * src_bpp / 64), SRC
- .endm
-/*
- * Assign symbolic names to registers
- */
- W .req r0 /* width (is updated during processing) */
- H .req r1 /* height (is updated during processing) */
- DST_W .req r2 /* destination buffer pointer for writes */
- DST_STRIDE .req r3 /* destination image stride */
- SRC .req r4 /* source buffer pointer */
- SRC_STRIDE .req r5 /* source image stride */
- DST_R .req r6 /* destination buffer pointer for reads */
-
- MASK .req r7 /* mask pointer */
- MASK_STRIDE .req r8 /* mask stride */
-
- PF_CTL .req r9 /* combined lines counter and prefetch */
- /* distance increment counter */
- PF_X .req r10 /* pixel index in a scanline for current */
- /* pretetch position */
- PF_SRC .req r11 /* pointer to source scanline start */
- /* for prefetch purposes */
- PF_DST .req r12 /* pointer to destination scanline start */
- /* for prefetch purposes */
- PF_MASK .req r14 /* pointer to mask scanline start */
- /* for prefetch purposes */
-/*
- * Check whether we have enough registers for all the local variables.
- * If we don't have enough registers, original width and height are
- * kept on top of stack (and 'regs_shortage' variable is set to indicate
- * this for the rest of code). Even if there are enough registers, the
- * allocation scheme may be a bit different depending on whether source
- * or mask is not used.
- */
-.if (PREFETCH_TYPE_CURRENT < PREFETCH_TYPE_ADVANCED)
- ORIG_W .req r10 /* saved original width */
- DUMMY .req r12 /* temporary register */
- .set regs_shortage, 0
-.elseif mask_bpp == 0
- ORIG_W .req r7 /* saved original width */
- DUMMY .req r8 /* temporary register */
- .set regs_shortage, 0
-.elseif src_bpp == 0
- ORIG_W .req r4 /* saved original width */
- DUMMY .req r5 /* temporary register */
- .set regs_shortage, 0
-.else
- ORIG_W .req r1 /* saved original width */
- DUMMY .req r1 /* temporary register */
- .set regs_shortage, 1
-.endif
-
- .set mask_bpp_shift, -1
-.if src_bpp == 32
- .set src_bpp_shift, 2
-.elseif src_bpp == 24
- .set src_bpp_shift, 0
-.elseif src_bpp == 16
- .set src_bpp_shift, 1
-.elseif src_bpp == 8
- .set src_bpp_shift, 0
-.elseif src_bpp == 0
- .set src_bpp_shift, -1
-.else
- .error "requested src bpp (src_bpp) is not supported"
-.endif
-.if mask_bpp == 32
- .set mask_bpp_shift, 2
-.elseif mask_bpp == 24
- .set mask_bpp_shift, 0
-.elseif mask_bpp == 8
- .set mask_bpp_shift, 0
-.elseif mask_bpp == 0
- .set mask_bpp_shift, -1
-.else
- .error "requested mask bpp (mask_bpp) is not supported"
-.endif
-.if dst_w_bpp == 32
- .set dst_bpp_shift, 2
-.elseif dst_w_bpp == 24
- .set dst_bpp_shift, 0
-.elseif dst_w_bpp == 16
- .set dst_bpp_shift, 1
-.elseif dst_w_bpp == 8
- .set dst_bpp_shift, 0
-.else
- .error "requested dst bpp (dst_w_bpp) is not supported"
-.endif
-
-.if (((flags) & FLAG_DST_READWRITE) != 0)
- .set dst_r_bpp, dst_w_bpp
-.else
- .set dst_r_bpp, 0
-.endif
-.if (((flags) & FLAG_DEINTERLEAVE_32BPP) != 0)
- .set DEINTERLEAVE_32BPP_ENABLED, 1
-.else
- .set DEINTERLEAVE_32BPP_ENABLED, 0
-.endif
-
-.if prefetch_distance < 0 || prefetch_distance > 15
- .error "invalid prefetch distance (prefetch_distance)"
-.endif
-
-.if src_bpp > 0
- ldr SRC, [sp, #40]
-.endif
-.if mask_bpp > 0
- ldr MASK, [sp, #48]
-.endif
- PF mov PF_X, #0
-.if src_bpp > 0
- ldr SRC_STRIDE, [sp, #44]
-.endif
-.if mask_bpp > 0
- ldr MASK_STRIDE, [sp, #52]
-.endif
- mov DST_R, DST_W
-
-.if src_bpp == 24
- sub SRC_STRIDE, SRC_STRIDE, W
- sub SRC_STRIDE, SRC_STRIDE, W, lsl #1
-.endif
-.if mask_bpp == 24
- sub MASK_STRIDE, MASK_STRIDE, W
- sub MASK_STRIDE, MASK_STRIDE, W, lsl #1
-.endif
-.if dst_w_bpp == 24
- sub DST_STRIDE, DST_STRIDE, W
- sub DST_STRIDE, DST_STRIDE, W, lsl #1
-.endif
-
-/*
- * Setup advanced prefetcher initial state
- */
- PF mov PF_SRC, SRC
- PF mov PF_DST, DST_R
- PF mov PF_MASK, MASK
- /* PF_CTL = prefetch_distance | ((h - 1) << 4) */
- PF mov PF_CTL, H, lsl #4
- PF add PF_CTL, #(prefetch_distance - 0x10)
-
- init
-.if regs_shortage
- push {r0, r1}
-.endif
- subs H, H, #1
-.if regs_shortage
- str H, [sp, #4] /* save updated height to stack */
-.else
- mov ORIG_W, W
-.endif
- blt 9f
- cmp W, #(pixblock_size * 2)
- blt 8f
-/*
- * This is the start of the pipelined loop, which if optimized for
- * long scanlines
- */
-0:
- ensure_destination_ptr_alignment process_pixblock_head, \
- process_pixblock_tail, \
- process_pixblock_tail_head
-
- /* Implement "head (tail_head) ... (tail_head) tail" loop pattern */
- pixld_a pixblock_size, dst_r_bpp, \
- (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R
- fetch_src_pixblock
- pixld pixblock_size, mask_bpp, \
- (mask_basereg - pixblock_size * mask_bpp / 64), MASK
- PF add PF_X, PF_X, #pixblock_size
- process_pixblock_head
- cache_preload 0, pixblock_size
- cache_preload_simple
- subs W, W, #(pixblock_size * 2)
- blt 2f
-1:
- process_pixblock_tail_head
- cache_preload_simple
- subs W, W, #pixblock_size
- bge 1b
-2:
- process_pixblock_tail
- pixst_a pixblock_size, dst_w_bpp, \
- (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W
-
- /* Process the remaining trailing pixels in the scanline */
- process_trailing_pixels 1, 1, \
- process_pixblock_head, \
- process_pixblock_tail, \
- process_pixblock_tail_head
- advance_to_next_scanline 0b
-
-.if regs_shortage
- pop {r0, r1}
-.endif
- cleanup
- pop {r4-r12, pc} /* exit */
-/*
- * This is the start of the loop, designed to process images with small width
- * (less than pixblock_size * 2 pixels). In this case neither pipelining
- * nor prefetch are used.
- */
-8:
- /* Process exactly pixblock_size pixels if needed */
- tst W, #pixblock_size
- beq 1f
- pixld pixblock_size, dst_r_bpp, \
- (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R
- fetch_src_pixblock
- pixld pixblock_size, mask_bpp, \
- (mask_basereg - pixblock_size * mask_bpp / 64), MASK
- process_pixblock_head
- process_pixblock_tail
- pixst pixblock_size, dst_w_bpp, \
- (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W
-1:
- /* Process the remaining trailing pixels in the scanline */
- process_trailing_pixels 0, 0, \
- process_pixblock_head, \
- process_pixblock_tail, \
- process_pixblock_tail_head
- advance_to_next_scanline 8b
-9:
-.if regs_shortage
- pop {r0, r1}
-.endif
- cleanup
- pop {r4-r12, pc} /* exit */
-
- .purgem fetch_src_pixblock
- .purgem pixld_src
-
- .unreq SRC
- .unreq MASK
- .unreq DST_R
- .unreq DST_W
- .unreq ORIG_W
- .unreq W
- .unreq H
- .unreq SRC_STRIDE
- .unreq DST_STRIDE
- .unreq MASK_STRIDE
- .unreq PF_CTL
- .unreq PF_X
- .unreq PF_SRC
- .unreq PF_DST
- .unreq PF_MASK
- .unreq DUMMY
- .endfunc
-.endm
-
-/*
- * A simplified variant of function generation template for a single
- * scanline processing (for implementing pixman combine functions)
- */
-.macro generate_composite_function_scanline use_nearest_scaling, \
- fname, \
- src_bpp_, \
- mask_bpp_, \
- dst_w_bpp_, \
- flags, \
- pixblock_size_, \
- init, \
- cleanup, \
- process_pixblock_head, \
- process_pixblock_tail, \
- process_pixblock_tail_head, \
- dst_w_basereg_ = 28, \
- dst_r_basereg_ = 4, \
- src_basereg_ = 0, \
- mask_basereg_ = 24
-
- .func fname
- .global fname
- /* For ELF format also set function visibility to hidden */
-#ifdef __ELF__
- .hidden fname
- .type fname, %function
-#endif
-fname:
- .set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_NONE
-/*
- * Make some macro arguments globally visible and accessible
- * from other macros
- */
- .set src_bpp, src_bpp_
- .set mask_bpp, mask_bpp_
- .set dst_w_bpp, dst_w_bpp_
- .set pixblock_size, pixblock_size_
- .set dst_w_basereg, dst_w_basereg_
- .set dst_r_basereg, dst_r_basereg_
- .set src_basereg, src_basereg_
- .set mask_basereg, mask_basereg_
-
-.if use_nearest_scaling != 0
- /*
- * Assign symbolic names to registers for nearest scaling
- */
- W .req r0
- DST_W .req r1
- SRC .req r2
- VX .req r3
- UNIT_X .req ip
- MASK .req lr
- TMP1 .req r4
- TMP2 .req r5
- DST_R .req r6
-
- .macro pixld_src x:vararg
- pixld_s x
- .endm
-
- ldr UNIT_X, [sp]
- push {r4-r6, lr}
- .if mask_bpp != 0
- ldr MASK, [sp, #(16 + 4)]
- .endif
-.else
- /*
- * Assign symbolic names to registers
- */
- W .req r0 /* width (is updated during processing) */
- DST_W .req r1 /* destination buffer pointer for writes */
- SRC .req r2 /* source buffer pointer */
- DST_R .req ip /* destination buffer pointer for reads */
- MASK .req r3 /* mask pointer */
-
- .macro pixld_src x:vararg
- pixld x
- .endm
-.endif
-
-.if (((flags) & FLAG_DST_READWRITE) != 0)
- .set dst_r_bpp, dst_w_bpp
-.else
- .set dst_r_bpp, 0
-.endif
-.if (((flags) & FLAG_DEINTERLEAVE_32BPP) != 0)
- .set DEINTERLEAVE_32BPP_ENABLED, 1
-.else
- .set DEINTERLEAVE_32BPP_ENABLED, 0
-.endif
-
- .macro fetch_src_pixblock
- pixld_src pixblock_size, src_bpp, \
- (src_basereg - pixblock_size * src_bpp / 64), SRC
- .endm
-
- init
- mov DST_R, DST_W
-
- cmp W, #pixblock_size
- blt 8f
-
- ensure_destination_ptr_alignment process_pixblock_head, \
- process_pixblock_tail, \
- process_pixblock_tail_head
-
- subs W, W, #pixblock_size
- blt 7f
-
- /* Implement "head (tail_head) ... (tail_head) tail" loop pattern */
- pixld_a pixblock_size, dst_r_bpp, \
- (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R
- fetch_src_pixblock
- pixld pixblock_size, mask_bpp, \
- (mask_basereg - pixblock_size * mask_bpp / 64), MASK
- process_pixblock_head
- subs W, W, #pixblock_size
- blt 2f
-1:
- process_pixblock_tail_head
- subs W, W, #pixblock_size
- bge 1b
-2:
- process_pixblock_tail
- pixst_a pixblock_size, dst_w_bpp, \
- (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W
-7:
- /* Process the remaining trailing pixels in the scanline (dst aligned) */
- process_trailing_pixels 0, 1, \
- process_pixblock_head, \
- process_pixblock_tail, \
- process_pixblock_tail_head
-
- cleanup
-.if use_nearest_scaling != 0
- pop {r4-r6, pc} /* exit */
-.else
- bx lr /* exit */
-.endif
-8:
- /* Process the remaining trailing pixels in the scanline (dst unaligned) */
- process_trailing_pixels 0, 0, \
- process_pixblock_head, \
- process_pixblock_tail, \
- process_pixblock_tail_head
-
- cleanup
-
-.if use_nearest_scaling != 0
- pop {r4-r6, pc} /* exit */
-
- .unreq DST_R
- .unreq SRC
- .unreq W
- .unreq VX
- .unreq UNIT_X
- .unreq TMP1
- .unreq TMP2
- .unreq DST_W
- .unreq MASK
-
-.else
- bx lr /* exit */
-
- .unreq SRC
- .unreq MASK
- .unreq DST_R
- .unreq DST_W
- .unreq W
-.endif
-
- .purgem fetch_src_pixblock
- .purgem pixld_src
-
- .endfunc
-.endm
-
-.macro generate_composite_function_single_scanline x:vararg
- generate_composite_function_scanline 0, x
-.endm
-
-.macro generate_composite_function_nearest_scanline x:vararg
- generate_composite_function_scanline 1, x
-.endm
-
-/* Default prologue/epilogue, nothing special needs to be done */
-
-.macro default_init
-.endm
-
-.macro default_cleanup
-.endm
-
-/*
- * Prologue/epilogue variant which additionally saves/restores d8-d15
- * registers (they need to be saved/restored by callee according to ABI).
- * This is required if the code needs to use all the NEON registers.
- */
-
-.macro default_init_need_all_regs
- vpush {d8-d15}
-.endm
-
-.macro default_cleanup_need_all_regs
- vpop {d8-d15}
-.endm
-
-/******************************************************************************/
-
-/*
- * Conversion of 8 r5g6b6 pixels packed in 128-bit register (in)
- * into a planar a8r8g8b8 format (with a, r, g, b color components
- * stored into 64-bit registers out_a, out_r, out_g, out_b respectively).
- *
- * Warning: the conversion is destructive and the original
- * value (in) is lost.
- */
-.macro convert_0565_to_8888 in, out_a, out_r, out_g, out_b
- vshrn.u16 out_r, in, #8
- vshrn.u16 out_g, in, #3
- vsli.u16 in, in, #5
- vmov.u8 out_a, #255
- vsri.u8 out_r, out_r, #5
- vsri.u8 out_g, out_g, #6
- vshrn.u16 out_b, in, #2
-.endm
-
-.macro convert_0565_to_x888 in, out_r, out_g, out_b
- vshrn.u16 out_r, in, #8
- vshrn.u16 out_g, in, #3
- vsli.u16 in, in, #5
- vsri.u8 out_r, out_r, #5
- vsri.u8 out_g, out_g, #6
- vshrn.u16 out_b, in, #2
-.endm
-
-/*
- * Conversion from planar a8r8g8b8 format (with a, r, g, b color components
- * in 64-bit registers in_a, in_r, in_g, in_b respectively) into 8 r5g6b6
- * pixels packed in 128-bit register (out). Requires two temporary 128-bit
- * registers (tmp1, tmp2)
- */
-.macro convert_8888_to_0565 in_r, in_g, in_b, out, tmp1, tmp2
- vshll.u8 tmp1, in_g, #8
- vshll.u8 out, in_r, #8
- vshll.u8 tmp2, in_b, #8
- vsri.u16 out, tmp1, #5
- vsri.u16 out, tmp2, #11
-.endm
-
-/*
- * Conversion of four r5g6b5 pixels (in) to four x8r8g8b8 pixels
- * returned in (out0, out1) registers pair. Requires one temporary
- * 64-bit register (tmp). 'out1' and 'in' may overlap, the original
- * value from 'in' is lost
- */
-.macro convert_four_0565_to_x888_packed in, out0, out1, tmp
- vshl.u16 out0, in, #5 /* G top 6 bits */
- vshl.u16 tmp, in, #11 /* B top 5 bits */
- vsri.u16 in, in, #5 /* R is ready in top bits */
- vsri.u16 out0, out0, #6 /* G is ready in top bits */
- vsri.u16 tmp, tmp, #5 /* B is ready in top bits */
- vshr.u16 out1, in, #8 /* R is in place */
- vsri.u16 out0, tmp, #8 /* G & B is in place */
- vzip.u16 out0, out1 /* everything is in place */
-.endm
+/*
+ * Copyright © 2009 Nokia Corporation
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Author: Siarhei Siamashka (siarhei.siamashka@nokia.com)
+ */
+
+/*
+ * This file contains a macro ('generate_composite_function') which can
+ * construct 2D image processing functions, based on a common template.
+ * Any combinations of source, destination and mask images with 8bpp,
+ * 16bpp, 24bpp, 32bpp color formats are supported.
+ *
+ * This macro takes care of:
+ * - handling of leading and trailing unaligned pixels
+ * - doing most of the work related to L2 cache preload
+ * - encourages the use of software pipelining for better instructions
+ * scheduling
+ *
+ * The user of this macro has to provide some configuration parameters
+ * (bit depths for the images, prefetch distance, etc.) and a set of
+ * macros, which should implement basic code chunks responsible for
+ * pixels processing. See 'pixman-arm-neon-asm.S' file for the usage
+ * examples.
+ *
+ * TODO:
+ * - try overlapped pixel method (from Ian Rickards) when processing
+ * exactly two blocks of pixels
+ * - maybe add an option to do reverse scanline processing
+ */
+
+/*
+ * Bit flags for 'generate_composite_function' macro which are used
+ * to tune generated functions behavior.
+ */
+.set FLAG_DST_WRITEONLY, 0
+.set FLAG_DST_READWRITE, 1
+.set FLAG_DEINTERLEAVE_32BPP, 2
+
+/*
+ * Offset in stack where mask and source pointer/stride can be accessed
+ * from 'init' macro. This is useful for doing special handling for solid mask.
+ */
+.set ARGS_STACK_OFFSET, 40
+
+/*
+ * Constants for selecting preferable prefetch type.
+ */
+.set PREFETCH_TYPE_NONE, 0 /* No prefetch at all */
+.set PREFETCH_TYPE_SIMPLE, 1 /* A simple, fixed-distance-ahead prefetch */
+.set PREFETCH_TYPE_ADVANCED, 2 /* Advanced fine-grained prefetch */
+
+/*
+ * Definitions of supplementary pixld/pixst macros (for partial load/store of
+ * pixel data).
+ */
+
+.macro pixldst1 op, elem_size, reg1, mem_operand, abits
+.if abits > 0
+ op&.&elem_size {d&reg1}, [&mem_operand&, :&abits&]!
+.else
+ op&.&elem_size {d&reg1}, [&mem_operand&]!
+.endif
+.endm
+
+.macro pixldst2 op, elem_size, reg1, reg2, mem_operand, abits
+.if abits > 0
+ op&.&elem_size {d&reg1, d&reg2}, [&mem_operand&, :&abits&]!
+.else
+ op&.&elem_size {d&reg1, d&reg2}, [&mem_operand&]!
+.endif
+.endm
+
+.macro pixldst4 op, elem_size, reg1, reg2, reg3, reg4, mem_operand, abits
+.if abits > 0
+ op&.&elem_size {d&reg1, d&reg2, d&reg3, d&reg4}, [&mem_operand&, :&abits&]!
+.else
+ op&.&elem_size {d&reg1, d&reg2, d&reg3, d&reg4}, [&mem_operand&]!
+.endif
+.endm
+
+.macro pixldst0 op, elem_size, reg1, idx, mem_operand, abits
+ op&.&elem_size {d&reg1[idx]}, [&mem_operand&]!
+.endm
+
+.macro pixldst3 op, elem_size, reg1, reg2, reg3, mem_operand
+ op&.&elem_size {d&reg1, d&reg2, d&reg3}, [&mem_operand&]!
+.endm
+
+.macro pixldst30 op, elem_size, reg1, reg2, reg3, idx, mem_operand
+ op&.&elem_size {d&reg1[idx], d&reg2[idx], d&reg3[idx]}, [&mem_operand&]!
+.endm
+
+.macro pixldst numbytes, op, elem_size, basereg, mem_operand, abits
+.if numbytes == 32
+ pixldst4 op, elem_size, %(basereg+4), %(basereg+5), \
+ %(basereg+6), %(basereg+7), mem_operand, abits
+.elseif numbytes == 16
+ pixldst2 op, elem_size, %(basereg+2), %(basereg+3), mem_operand, abits
+.elseif numbytes == 8
+ pixldst1 op, elem_size, %(basereg+1), mem_operand, abits
+.elseif numbytes == 4
+ .if !RESPECT_STRICT_ALIGNMENT || (elem_size == 32)
+ pixldst0 op, 32, %(basereg+0), 1, mem_operand, abits
+ .elseif elem_size == 16
+ pixldst0 op, 16, %(basereg+0), 2, mem_operand, abits
+ pixldst0 op, 16, %(basereg+0), 3, mem_operand, abits
+ .else
+ pixldst0 op, 8, %(basereg+0), 4, mem_operand, abits
+ pixldst0 op, 8, %(basereg+0), 5, mem_operand, abits
+ pixldst0 op, 8, %(basereg+0), 6, mem_operand, abits
+ pixldst0 op, 8, %(basereg+0), 7, mem_operand, abits
+ .endif
+.elseif numbytes == 2
+ .if !RESPECT_STRICT_ALIGNMENT || (elem_size == 16)
+ pixldst0 op, 16, %(basereg+0), 1, mem_operand, abits
+ .else
+ pixldst0 op, 8, %(basereg+0), 2, mem_operand, abits
+ pixldst0 op, 8, %(basereg+0), 3, mem_operand, abits
+ .endif
+.elseif numbytes == 1
+ pixldst0 op, 8, %(basereg+0), 1, mem_operand, abits
+.else
+ .error "unsupported size: numbytes"
+.endif
+.endm
+
+.macro pixld numpix, bpp, basereg, mem_operand, abits=0
+.if bpp > 0
+.if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0)
+ pixldst4 vld4, 8, %(basereg+4), %(basereg+5), \
+ %(basereg+6), %(basereg+7), mem_operand, abits
+.elseif (bpp == 24) && (numpix == 8)
+ pixldst3 vld3, 8, %(basereg+3), %(basereg+4), %(basereg+5), mem_operand
+.elseif (bpp == 24) && (numpix == 4)
+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 4, mem_operand
+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 5, mem_operand
+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 6, mem_operand
+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 7, mem_operand
+.elseif (bpp == 24) && (numpix == 2)
+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 2, mem_operand
+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 3, mem_operand
+.elseif (bpp == 24) && (numpix == 1)
+ pixldst30 vld3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 1, mem_operand
+.else
+ pixldst %(numpix * bpp / 8), vld1, %(bpp), basereg, mem_operand, abits
+.endif
+.endif
+.endm
+
+.macro pixst numpix, bpp, basereg, mem_operand, abits=0
+.if bpp > 0
+.if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0)
+ pixldst4 vst4, 8, %(basereg+4), %(basereg+5), \
+ %(basereg+6), %(basereg+7), mem_operand, abits
+.elseif (bpp == 24) && (numpix == 8)
+ pixldst3 vst3, 8, %(basereg+3), %(basereg+4), %(basereg+5), mem_operand
+.elseif (bpp == 24) && (numpix == 4)
+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 4, mem_operand
+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 5, mem_operand
+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 6, mem_operand
+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 7, mem_operand
+.elseif (bpp == 24) && (numpix == 2)
+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 2, mem_operand
+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 3, mem_operand
+.elseif (bpp == 24) && (numpix == 1)
+ pixldst30 vst3, 8, %(basereg+0), %(basereg+1), %(basereg+2), 1, mem_operand
+.else
+ pixldst %(numpix * bpp / 8), vst1, %(bpp), basereg, mem_operand, abits
+.endif
+.endif
+.endm
+
+.macro pixld_a numpix, bpp, basereg, mem_operand
+.if (bpp * numpix) <= 128
+ pixld numpix, bpp, basereg, mem_operand, %(bpp * numpix)
+.else
+ pixld numpix, bpp, basereg, mem_operand, 128
+.endif
+.endm
+
+.macro pixst_a numpix, bpp, basereg, mem_operand
+.if (bpp * numpix) <= 128
+ pixst numpix, bpp, basereg, mem_operand, %(bpp * numpix)
+.else
+ pixst numpix, bpp, basereg, mem_operand, 128
+.endif
+.endm
+
+/*
+ * Pixel fetcher for nearest scaling (needs TMP1, TMP2, VX, UNIT_X register
+ * aliases to be defined)
+ */
+.macro pixld1_s elem_size, reg1, mem_operand
+.if elem_size == 16
+ mov TMP1, VX, asr #16
+ add VX, VX, UNIT_X
+ add TMP1, mem_operand, TMP1, asl #1
+ mov TMP2, VX, asr #16
+ add VX, VX, UNIT_X
+ add TMP2, mem_operand, TMP2, asl #1
+ vld1.16 {d&reg1&[0]}, [TMP1, :16]
+ mov TMP1, VX, asr #16
+ add VX, VX, UNIT_X
+ add TMP1, mem_operand, TMP1, asl #1
+ vld1.16 {d&reg1&[1]}, [TMP2, :16]
+ mov TMP2, VX, asr #16
+ add VX, VX, UNIT_X
+ add TMP2, mem_operand, TMP2, asl #1
+ vld1.16 {d&reg1&[2]}, [TMP1, :16]
+ vld1.16 {d&reg1&[3]}, [TMP2, :16]
+.elseif elem_size == 32
+ mov TMP1, VX, asr #16
+ add VX, VX, UNIT_X
+ add TMP1, mem_operand, TMP1, asl #2
+ mov TMP2, VX, asr #16
+ add VX, VX, UNIT_X
+ add TMP2, mem_operand, TMP2, asl #2
+ vld1.32 {d&reg1&[0]}, [TMP1, :32]
+ vld1.32 {d&reg1&[1]}, [TMP2, :32]
+.else
+ .error "unsupported"
+.endif
+.endm
+
+.macro pixld2_s elem_size, reg1, reg2, mem_operand
+.if elem_size == 32
+ mov TMP1, VX, asr #16
+ add VX, VX, UNIT_X, asl #1
+ add TMP1, mem_operand, TMP1, asl #2
+ mov TMP2, VX, asr #16
+ sub VX, VX, UNIT_X
+ add TMP2, mem_operand, TMP2, asl #2
+ vld1.32 {d&reg1&[0]}, [TMP1, :32]
+ mov TMP1, VX, asr #16
+ add VX, VX, UNIT_X, asl #1
+ add TMP1, mem_operand, TMP1, asl #2
+ vld1.32 {d&reg2&[0]}, [TMP2, :32]
+ mov TMP2, VX, asr #16
+ add VX, VX, UNIT_X
+ add TMP2, mem_operand, TMP2, asl #2
+ vld1.32 {d&reg1&[1]}, [TMP1, :32]
+ vld1.32 {d&reg2&[1]}, [TMP2, :32]
+.else
+ pixld1_s elem_size, reg1, mem_operand
+ pixld1_s elem_size, reg2, mem_operand
+.endif
+.endm
+
+.macro pixld0_s elem_size, reg1, idx, mem_operand
+.if elem_size == 16
+ mov TMP1, VX, asr #16
+ add VX, VX, UNIT_X
+ add TMP1, mem_operand, TMP1, asl #1
+ vld1.16 {d&reg1&[idx]}, [TMP1, :16]
+.elseif elem_size == 32
+ mov TMP1, VX, asr #16
+ add VX, VX, UNIT_X
+ add TMP1, mem_operand, TMP1, asl #2
+ vld1.32 {d&reg1&[idx]}, [TMP1, :32]
+.endif
+.endm
+
+.macro pixld_s_internal numbytes, elem_size, basereg, mem_operand
+.if numbytes == 32
+ pixld2_s elem_size, %(basereg+4), %(basereg+5), mem_operand
+ pixld2_s elem_size, %(basereg+6), %(basereg+7), mem_operand
+ pixdeinterleave elem_size, %(basereg+4)
+.elseif numbytes == 16
+ pixld2_s elem_size, %(basereg+2), %(basereg+3), mem_operand
+.elseif numbytes == 8
+ pixld1_s elem_size, %(basereg+1), mem_operand
+.elseif numbytes == 4
+ .if elem_size == 32
+ pixld0_s elem_size, %(basereg+0), 1, mem_operand
+ .elseif elem_size == 16
+ pixld0_s elem_size, %(basereg+0), 2, mem_operand
+ pixld0_s elem_size, %(basereg+0), 3, mem_operand
+ .else
+ pixld0_s elem_size, %(basereg+0), 4, mem_operand
+ pixld0_s elem_size, %(basereg+0), 5, mem_operand
+ pixld0_s elem_size, %(basereg+0), 6, mem_operand
+ pixld0_s elem_size, %(basereg+0), 7, mem_operand
+ .endif
+.elseif numbytes == 2
+ .if elem_size == 16
+ pixld0_s elem_size, %(basereg+0), 1, mem_operand
+ .else
+ pixld0_s elem_size, %(basereg+0), 2, mem_operand
+ pixld0_s elem_size, %(basereg+0), 3, mem_operand
+ .endif
+.elseif numbytes == 1
+ pixld0_s elem_size, %(basereg+0), 1, mem_operand
+.else
+ .error "unsupported size: numbytes"
+.endif
+.endm
+
+.macro pixld_s numpix, bpp, basereg, mem_operand
+.if bpp > 0
+ pixld_s_internal %(numpix * bpp / 8), %(bpp), basereg, mem_operand
+.endif
+.endm
+
+.macro vuzp8 reg1, reg2
+ vuzp.8 d&reg1, d&reg2
+.endm
+
+.macro vzip8 reg1, reg2
+ vzip.8 d&reg1, d&reg2
+.endm
+
+/* deinterleave B, G, R, A channels for eight 32bpp pixels in 4 registers */
+.macro pixdeinterleave bpp, basereg
+.if (bpp == 32) && (DEINTERLEAVE_32BPP_ENABLED != 0)
+ vuzp8 %(basereg+0), %(basereg+1)
+ vuzp8 %(basereg+2), %(basereg+3)
+ vuzp8 %(basereg+1), %(basereg+3)
+ vuzp8 %(basereg+0), %(basereg+2)
+.endif
+.endm
+
+/* interleave B, G, R, A channels for eight 32bpp pixels in 4 registers */
+.macro pixinterleave bpp, basereg
+.if (bpp == 32) && (DEINTERLEAVE_32BPP_ENABLED != 0)
+ vzip8 %(basereg+0), %(basereg+2)
+ vzip8 %(basereg+1), %(basereg+3)
+ vzip8 %(basereg+2), %(basereg+3)
+ vzip8 %(basereg+0), %(basereg+1)
+.endif
+.endm
+
+/*
+ * This is a macro for implementing cache preload. The main idea is that
+ * cache preload logic is mostly independent from the rest of pixels
+ * processing code. It starts at the top left pixel and moves forward
+ * across pixels and can jump across scanlines. Prefetch distance is
+ * handled in an 'incremental' way: it starts from 0 and advances to the
+ * optimal distance over time. After reaching optimal prefetch distance,
+ * it is kept constant. There are some checks which prevent prefetching
+ * unneeded pixel lines below the image (but it still can prefetch a bit
+ * more data on the right side of the image - not a big issue and may
+ * be actually helpful when rendering text glyphs). Additional trick is
+ * the use of LDR instruction for prefetch instead of PLD when moving to
+ * the next line, the point is that we have a high chance of getting TLB
+ * miss in this case, and PLD would be useless.
+ *
+ * This sounds like it may introduce a noticeable overhead (when working with
+ * fully cached data). But in reality, due to having a separate pipeline and
+ * instruction queue for NEON unit in ARM Cortex-A8, normal ARM code can
+ * execute simultaneously with NEON and be completely shadowed by it. Thus
+ * we get no performance overhead at all (*). This looks like a very nice
+ * feature of Cortex-A8, if used wisely. We don't have a hardware prefetcher,
+ * but still can implement some rather advanced prefetch logic in sofware
+ * for almost zero cost!
+ *
+ * (*) The overhead of the prefetcher is visible when running some trivial
+ * pixels processing like simple copy. Anyway, having prefetch is a must
+ * when working with the graphics data.
+ */
+.macro PF a, x:vararg
+.if (PREFETCH_TYPE_CURRENT == PREFETCH_TYPE_ADVANCED)
+ a x
+.endif
+.endm
+
+.macro cache_preload std_increment, boost_increment
+.if (src_bpp_shift >= 0) || (dst_r_bpp != 0) || (mask_bpp_shift >= 0)
+.if regs_shortage
+ PF ldr ORIG_W, [sp] /* If we are short on regs, ORIG_W is kept on stack */
+.endif
+.if std_increment != 0
+ PF add PF_X, PF_X, #std_increment
+.endif
+ PF tst PF_CTL, #0xF
+ PF addne PF_X, PF_X, #boost_increment
+ PF subne PF_CTL, PF_CTL, #1
+ PF cmp PF_X, ORIG_W
+.if src_bpp_shift >= 0
+ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+.endif
+.if dst_r_bpp != 0
+ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
+.endif
+.if mask_bpp_shift >= 0
+ PF pld, [PF_MASK, PF_X, lsl #mask_bpp_shift]
+.endif
+ PF subge PF_X, PF_X, ORIG_W
+ PF subges PF_CTL, PF_CTL, #0x10
+.if src_bpp_shift >= 0
+ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+.endif
+.if dst_r_bpp != 0
+ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
+.endif
+.if mask_bpp_shift >= 0
+ PF ldrgeb DUMMY, [PF_MASK, MASK_STRIDE, lsl #mask_bpp_shift]!
+.endif
+.endif
+.endm
+
+.macro cache_preload_simple
+.if (PREFETCH_TYPE_CURRENT == PREFETCH_TYPE_SIMPLE)
+.if src_bpp > 0
+ pld [SRC, #(PREFETCH_DISTANCE_SIMPLE * src_bpp / 8)]
+.endif
+.if dst_r_bpp > 0
+ pld [DST_R, #(PREFETCH_DISTANCE_SIMPLE * dst_r_bpp / 8)]
+.endif
+.if mask_bpp > 0
+ pld [MASK, #(PREFETCH_DISTANCE_SIMPLE * mask_bpp / 8)]
+.endif
+.endif
+.endm
+
+.macro fetch_mask_pixblock
+ pixld pixblock_size, mask_bpp, \
+ (mask_basereg - pixblock_size * mask_bpp / 64), MASK
+.endm
+
+/*
+ * Macro which is used to process leading pixels until destination
+ * pointer is properly aligned (at 16 bytes boundary). When destination
+ * buffer uses 16bpp format, this is unnecessary, or even pointless.
+ */
+.macro ensure_destination_ptr_alignment process_pixblock_head, \
+ process_pixblock_tail, \
+ process_pixblock_tail_head
+.if dst_w_bpp != 24
+ tst DST_R, #0xF
+ beq 2f
+
+.irp lowbit, 1, 2, 4, 8, 16
+local skip1
+.if (dst_w_bpp <= (lowbit * 8)) && ((lowbit * 8) < (pixblock_size * dst_w_bpp))
+.if lowbit < 16 /* we don't need more than 16-byte alignment */
+ tst DST_R, #lowbit
+ beq 1f
+.endif
+ pixld_src (lowbit * 8 / dst_w_bpp), src_bpp, src_basereg, SRC
+ pixld (lowbit * 8 / dst_w_bpp), mask_bpp, mask_basereg, MASK
+.if dst_r_bpp > 0
+ pixld_a (lowbit * 8 / dst_r_bpp), dst_r_bpp, dst_r_basereg, DST_R
+.else
+ add DST_R, DST_R, #lowbit
+.endif
+ PF add PF_X, PF_X, #(lowbit * 8 / dst_w_bpp)
+ sub W, W, #(lowbit * 8 / dst_w_bpp)
+1:
+.endif
+.endr
+ pixdeinterleave src_bpp, src_basereg
+ pixdeinterleave mask_bpp, mask_basereg
+ pixdeinterleave dst_r_bpp, dst_r_basereg
+
+ process_pixblock_head
+ cache_preload 0, pixblock_size
+ cache_preload_simple
+ process_pixblock_tail
+
+ pixinterleave dst_w_bpp, dst_w_basereg
+.irp lowbit, 1, 2, 4, 8, 16
+.if (dst_w_bpp <= (lowbit * 8)) && ((lowbit * 8) < (pixblock_size * dst_w_bpp))
+.if lowbit < 16 /* we don't need more than 16-byte alignment */
+ tst DST_W, #lowbit
+ beq 1f
+.endif
+ pixst_a (lowbit * 8 / dst_w_bpp), dst_w_bpp, dst_w_basereg, DST_W
+1:
+.endif
+.endr
+.endif
+2:
+.endm
+
+/*
+ * Special code for processing up to (pixblock_size - 1) remaining
+ * trailing pixels. As SIMD processing performs operation on
+ * pixblock_size pixels, anything smaller than this has to be loaded
+ * and stored in a special way. Loading and storing of pixel data is
+ * performed in such a way that we fill some 'slots' in the NEON
+ * registers (some slots naturally are unused), then perform compositing
+ * operation as usual. In the end, the data is taken from these 'slots'
+ * and saved to memory.
+ *
+ * cache_preload_flag - allows to suppress prefetch if
+ * set to 0
+ * dst_aligned_flag - selects whether destination buffer
+ * is aligned
+ */
+.macro process_trailing_pixels cache_preload_flag, \
+ dst_aligned_flag, \
+ process_pixblock_head, \
+ process_pixblock_tail, \
+ process_pixblock_tail_head
+ tst W, #(pixblock_size - 1)
+ beq 2f
+.irp chunk_size, 16, 8, 4, 2, 1
+.if pixblock_size > chunk_size
+ tst W, #chunk_size
+ beq 1f
+ pixld_src chunk_size, src_bpp, src_basereg, SRC
+ pixld chunk_size, mask_bpp, mask_basereg, MASK
+.if dst_aligned_flag != 0
+ pixld_a chunk_size, dst_r_bpp, dst_r_basereg, DST_R
+.else
+ pixld chunk_size, dst_r_bpp, dst_r_basereg, DST_R
+.endif
+.if cache_preload_flag != 0
+ PF add PF_X, PF_X, #chunk_size
+.endif
+1:
+.endif
+.endr
+ pixdeinterleave src_bpp, src_basereg
+ pixdeinterleave mask_bpp, mask_basereg
+ pixdeinterleave dst_r_bpp, dst_r_basereg
+
+ process_pixblock_head
+.if cache_preload_flag != 0
+ cache_preload 0, pixblock_size
+ cache_preload_simple
+.endif
+ process_pixblock_tail
+ pixinterleave dst_w_bpp, dst_w_basereg
+.irp chunk_size, 16, 8, 4, 2, 1
+.if pixblock_size > chunk_size
+ tst W, #chunk_size
+ beq 1f
+.if dst_aligned_flag != 0
+ pixst_a chunk_size, dst_w_bpp, dst_w_basereg, DST_W
+.else
+ pixst chunk_size, dst_w_bpp, dst_w_basereg, DST_W
+.endif
+1:
+.endif
+.endr
+2:
+.endm
+
+/*
+ * Macro, which performs all the needed operations to switch to the next
+ * scanline and start the next loop iteration unless all the scanlines
+ * are already processed.
+ */
+.macro advance_to_next_scanline start_of_loop_label
+.if regs_shortage
+ ldrd W, [sp] /* load W and H (width and height) from stack */
+.else
+ mov W, ORIG_W
+.endif
+ add DST_W, DST_W, DST_STRIDE, lsl #dst_bpp_shift
+.if src_bpp != 0
+ add SRC, SRC, SRC_STRIDE, lsl #src_bpp_shift
+.endif
+.if mask_bpp != 0
+ add MASK, MASK, MASK_STRIDE, lsl #mask_bpp_shift
+.endif
+.if (dst_w_bpp != 24)
+ sub DST_W, DST_W, W, lsl #dst_bpp_shift
+.endif
+.if (src_bpp != 24) && (src_bpp != 0)
+ sub SRC, SRC, W, lsl #src_bpp_shift
+.endif
+.if (mask_bpp != 24) && (mask_bpp != 0)
+ sub MASK, MASK, W, lsl #mask_bpp_shift
+.endif
+ subs H, H, #1
+ mov DST_R, DST_W
+.if regs_shortage
+ str H, [sp, #4] /* save updated height to stack */
+.endif
+ bge start_of_loop_label
+.endm
+
+/*
+ * Registers are allocated in the following way by default:
+ * d0, d1, d2, d3 - reserved for loading source pixel data
+ * d4, d5, d6, d7 - reserved for loading destination pixel data
+ * d24, d25, d26, d27 - reserved for loading mask pixel data
+ * d28, d29, d30, d31 - final destination pixel data for writeback to memory
+ */
+.macro generate_composite_function fname, \
+ src_bpp_, \
+ mask_bpp_, \
+ dst_w_bpp_, \
+ flags, \
+ pixblock_size_, \
+ prefetch_distance, \
+ init, \
+ cleanup, \
+ process_pixblock_head, \
+ process_pixblock_tail, \
+ process_pixblock_tail_head, \
+ dst_w_basereg_ = 28, \
+ dst_r_basereg_ = 4, \
+ src_basereg_ = 0, \
+ mask_basereg_ = 24
+
+ .func fname
+ .global fname
+ /* For ELF format also set function visibility to hidden */
+#ifdef __ELF__
+ .hidden fname
+ .type fname, %function
+#endif
+fname:
+ push {r4-r12, lr} /* save all registers */
+
+/*
+ * Select prefetch type for this function. If prefetch distance is
+ * set to 0 or one of the color formats is 24bpp, SIMPLE prefetch
+ * has to be used instead of ADVANCED.
+ */
+ .set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_DEFAULT
+.if prefetch_distance == 0
+ .set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_NONE
+.elseif (PREFETCH_TYPE_CURRENT > PREFETCH_TYPE_SIMPLE) && \
+ ((src_bpp_ == 24) || (mask_bpp_ == 24) || (dst_w_bpp_ == 24))
+ .set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_SIMPLE
+.endif
+
+/*
+ * Make some macro arguments globally visible and accessible
+ * from other macros
+ */
+ .set src_bpp, src_bpp_
+ .set mask_bpp, mask_bpp_
+ .set dst_w_bpp, dst_w_bpp_
+ .set pixblock_size, pixblock_size_
+ .set dst_w_basereg, dst_w_basereg_
+ .set dst_r_basereg, dst_r_basereg_
+ .set src_basereg, src_basereg_
+ .set mask_basereg, mask_basereg_
+
+ .macro pixld_src x:vararg
+ pixld x
+ .endm
+ .macro fetch_src_pixblock
+ pixld_src pixblock_size, src_bpp, \
+ (src_basereg - pixblock_size * src_bpp / 64), SRC
+ .endm
+/*
+ * Assign symbolic names to registers
+ */
+ W .req r0 /* width (is updated during processing) */
+ H .req r1 /* height (is updated during processing) */
+ DST_W .req r2 /* destination buffer pointer for writes */
+ DST_STRIDE .req r3 /* destination image stride */
+ SRC .req r4 /* source buffer pointer */
+ SRC_STRIDE .req r5 /* source image stride */
+ DST_R .req r6 /* destination buffer pointer for reads */
+
+ MASK .req r7 /* mask pointer */
+ MASK_STRIDE .req r8 /* mask stride */
+
+ PF_CTL .req r9 /* combined lines counter and prefetch */
+ /* distance increment counter */
+ PF_X .req r10 /* pixel index in a scanline for current */
+ /* pretetch position */
+ PF_SRC .req r11 /* pointer to source scanline start */
+ /* for prefetch purposes */
+ PF_DST .req r12 /* pointer to destination scanline start */
+ /* for prefetch purposes */
+ PF_MASK .req r14 /* pointer to mask scanline start */
+ /* for prefetch purposes */
+/*
+ * Check whether we have enough registers for all the local variables.
+ * If we don't have enough registers, original width and height are
+ * kept on top of stack (and 'regs_shortage' variable is set to indicate
+ * this for the rest of code). Even if there are enough registers, the
+ * allocation scheme may be a bit different depending on whether source
+ * or mask is not used.
+ */
+.if (PREFETCH_TYPE_CURRENT < PREFETCH_TYPE_ADVANCED)
+ ORIG_W .req r10 /* saved original width */
+ DUMMY .req r12 /* temporary register */
+ .set regs_shortage, 0
+.elseif mask_bpp == 0
+ ORIG_W .req r7 /* saved original width */
+ DUMMY .req r8 /* temporary register */
+ .set regs_shortage, 0
+.elseif src_bpp == 0
+ ORIG_W .req r4 /* saved original width */
+ DUMMY .req r5 /* temporary register */
+ .set regs_shortage, 0
+.else
+ ORIG_W .req r1 /* saved original width */
+ DUMMY .req r1 /* temporary register */
+ .set regs_shortage, 1
+.endif
+
+ .set mask_bpp_shift, -1
+.if src_bpp == 32
+ .set src_bpp_shift, 2
+.elseif src_bpp == 24
+ .set src_bpp_shift, 0
+.elseif src_bpp == 16
+ .set src_bpp_shift, 1
+.elseif src_bpp == 8
+ .set src_bpp_shift, 0
+.elseif src_bpp == 0
+ .set src_bpp_shift, -1
+.else
+ .error "requested src bpp (src_bpp) is not supported"
+.endif
+.if mask_bpp == 32
+ .set mask_bpp_shift, 2
+.elseif mask_bpp == 24
+ .set mask_bpp_shift, 0
+.elseif mask_bpp == 8
+ .set mask_bpp_shift, 0
+.elseif mask_bpp == 0
+ .set mask_bpp_shift, -1
+.else
+ .error "requested mask bpp (mask_bpp) is not supported"
+.endif
+.if dst_w_bpp == 32
+ .set dst_bpp_shift, 2
+.elseif dst_w_bpp == 24
+ .set dst_bpp_shift, 0
+.elseif dst_w_bpp == 16
+ .set dst_bpp_shift, 1
+.elseif dst_w_bpp == 8
+ .set dst_bpp_shift, 0
+.else
+ .error "requested dst bpp (dst_w_bpp) is not supported"
+.endif
+
+.if (((flags) & FLAG_DST_READWRITE) != 0)
+ .set dst_r_bpp, dst_w_bpp
+.else
+ .set dst_r_bpp, 0
+.endif
+.if (((flags) & FLAG_DEINTERLEAVE_32BPP) != 0)
+ .set DEINTERLEAVE_32BPP_ENABLED, 1
+.else
+ .set DEINTERLEAVE_32BPP_ENABLED, 0
+.endif
+
+.if prefetch_distance < 0 || prefetch_distance > 15
+ .error "invalid prefetch distance (prefetch_distance)"
+.endif
+
+.if src_bpp > 0
+ ldr SRC, [sp, #40]
+.endif
+.if mask_bpp > 0
+ ldr MASK, [sp, #48]
+.endif
+ PF mov PF_X, #0
+.if src_bpp > 0
+ ldr SRC_STRIDE, [sp, #44]
+.endif
+.if mask_bpp > 0
+ ldr MASK_STRIDE, [sp, #52]
+.endif
+ mov DST_R, DST_W
+
+.if src_bpp == 24
+ sub SRC_STRIDE, SRC_STRIDE, W
+ sub SRC_STRIDE, SRC_STRIDE, W, lsl #1
+.endif
+.if mask_bpp == 24
+ sub MASK_STRIDE, MASK_STRIDE, W
+ sub MASK_STRIDE, MASK_STRIDE, W, lsl #1
+.endif
+.if dst_w_bpp == 24
+ sub DST_STRIDE, DST_STRIDE, W
+ sub DST_STRIDE, DST_STRIDE, W, lsl #1
+.endif
+
+/*
+ * Setup advanced prefetcher initial state
+ */
+ PF mov PF_SRC, SRC
+ PF mov PF_DST, DST_R
+ PF mov PF_MASK, MASK
+ /* PF_CTL = prefetch_distance | ((h - 1) << 4) */
+ PF mov PF_CTL, H, lsl #4
+ PF add PF_CTL, #(prefetch_distance - 0x10)
+
+ init
+.if regs_shortage
+ push {r0, r1}
+.endif
+ subs H, H, #1
+.if regs_shortage
+ str H, [sp, #4] /* save updated height to stack */
+.else
+ mov ORIG_W, W
+.endif
+ blt 9f
+ cmp W, #(pixblock_size * 2)
+ blt 8f
+/*
+ * This is the start of the pipelined loop, which if optimized for
+ * long scanlines
+ */
+0:
+ ensure_destination_ptr_alignment process_pixblock_head, \
+ process_pixblock_tail, \
+ process_pixblock_tail_head
+
+ /* Implement "head (tail_head) ... (tail_head) tail" loop pattern */
+ pixld_a pixblock_size, dst_r_bpp, \
+ (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R
+ fetch_src_pixblock
+ pixld pixblock_size, mask_bpp, \
+ (mask_basereg - pixblock_size * mask_bpp / 64), MASK
+ PF add PF_X, PF_X, #pixblock_size
+ process_pixblock_head
+ cache_preload 0, pixblock_size
+ cache_preload_simple
+ subs W, W, #(pixblock_size * 2)
+ blt 2f
+1:
+ process_pixblock_tail_head
+ cache_preload_simple
+ subs W, W, #pixblock_size
+ bge 1b
+2:
+ process_pixblock_tail
+ pixst_a pixblock_size, dst_w_bpp, \
+ (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W
+
+ /* Process the remaining trailing pixels in the scanline */
+ process_trailing_pixels 1, 1, \
+ process_pixblock_head, \
+ process_pixblock_tail, \
+ process_pixblock_tail_head
+ advance_to_next_scanline 0b
+
+.if regs_shortage
+ pop {r0, r1}
+.endif
+ cleanup
+ pop {r4-r12, pc} /* exit */
+/*
+ * This is the start of the loop, designed to process images with small width
+ * (less than pixblock_size * 2 pixels). In this case neither pipelining
+ * nor prefetch are used.
+ */
+8:
+ /* Process exactly pixblock_size pixels if needed */
+ tst W, #pixblock_size
+ beq 1f
+ pixld pixblock_size, dst_r_bpp, \
+ (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R
+ fetch_src_pixblock
+ pixld pixblock_size, mask_bpp, \
+ (mask_basereg - pixblock_size * mask_bpp / 64), MASK
+ process_pixblock_head
+ process_pixblock_tail
+ pixst pixblock_size, dst_w_bpp, \
+ (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W
+1:
+ /* Process the remaining trailing pixels in the scanline */
+ process_trailing_pixels 0, 0, \
+ process_pixblock_head, \
+ process_pixblock_tail, \
+ process_pixblock_tail_head
+ advance_to_next_scanline 8b
+9:
+.if regs_shortage
+ pop {r0, r1}
+.endif
+ cleanup
+ pop {r4-r12, pc} /* exit */
+
+ .purgem fetch_src_pixblock
+ .purgem pixld_src
+
+ .unreq SRC
+ .unreq MASK
+ .unreq DST_R
+ .unreq DST_W
+ .unreq ORIG_W
+ .unreq W
+ .unreq H
+ .unreq SRC_STRIDE
+ .unreq DST_STRIDE
+ .unreq MASK_STRIDE
+ .unreq PF_CTL
+ .unreq PF_X
+ .unreq PF_SRC
+ .unreq PF_DST
+ .unreq PF_MASK
+ .unreq DUMMY
+ .endfunc
+.endm
+
+/*
+ * A simplified variant of function generation template for a single
+ * scanline processing (for implementing pixman combine functions)
+ */
+.macro generate_composite_function_scanline use_nearest_scaling, \
+ fname, \
+ src_bpp_, \
+ mask_bpp_, \
+ dst_w_bpp_, \
+ flags, \
+ pixblock_size_, \
+ init, \
+ cleanup, \
+ process_pixblock_head, \
+ process_pixblock_tail, \
+ process_pixblock_tail_head, \
+ dst_w_basereg_ = 28, \
+ dst_r_basereg_ = 4, \
+ src_basereg_ = 0, \
+ mask_basereg_ = 24
+
+ .func fname
+ .global fname
+ /* For ELF format also set function visibility to hidden */
+#ifdef __ELF__
+ .hidden fname
+ .type fname, %function
+#endif
+fname:
+ .set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_NONE
+/*
+ * Make some macro arguments globally visible and accessible
+ * from other macros
+ */
+ .set src_bpp, src_bpp_
+ .set mask_bpp, mask_bpp_
+ .set dst_w_bpp, dst_w_bpp_
+ .set pixblock_size, pixblock_size_
+ .set dst_w_basereg, dst_w_basereg_
+ .set dst_r_basereg, dst_r_basereg_
+ .set src_basereg, src_basereg_
+ .set mask_basereg, mask_basereg_
+
+.if use_nearest_scaling != 0
+ /*
+ * Assign symbolic names to registers for nearest scaling
+ */
+ W .req r0
+ DST_W .req r1
+ SRC .req r2
+ VX .req r3
+ UNIT_X .req ip
+ MASK .req lr
+ TMP1 .req r4
+ TMP2 .req r5
+ DST_R .req r6
+
+ .macro pixld_src x:vararg
+ pixld_s x
+ .endm
+
+ ldr UNIT_X, [sp]
+ push {r4-r6, lr}
+ .if mask_bpp != 0
+ ldr MASK, [sp, #(16 + 4)]
+ .endif
+.else
+ /*
+ * Assign symbolic names to registers
+ */
+ W .req r0 /* width (is updated during processing) */
+ DST_W .req r1 /* destination buffer pointer for writes */
+ SRC .req r2 /* source buffer pointer */
+ DST_R .req ip /* destination buffer pointer for reads */
+ MASK .req r3 /* mask pointer */
+
+ .macro pixld_src x:vararg
+ pixld x
+ .endm
+.endif
+
+.if (((flags) & FLAG_DST_READWRITE) != 0)
+ .set dst_r_bpp, dst_w_bpp
+.else
+ .set dst_r_bpp, 0
+.endif
+.if (((flags) & FLAG_DEINTERLEAVE_32BPP) != 0)
+ .set DEINTERLEAVE_32BPP_ENABLED, 1
+.else
+ .set DEINTERLEAVE_32BPP_ENABLED, 0
+.endif
+
+ .macro fetch_src_pixblock
+ pixld_src pixblock_size, src_bpp, \
+ (src_basereg - pixblock_size * src_bpp / 64), SRC
+ .endm
+
+ init
+ mov DST_R, DST_W
+
+ cmp W, #pixblock_size
+ blt 8f
+
+ ensure_destination_ptr_alignment process_pixblock_head, \
+ process_pixblock_tail, \
+ process_pixblock_tail_head
+
+ subs W, W, #pixblock_size
+ blt 7f
+
+ /* Implement "head (tail_head) ... (tail_head) tail" loop pattern */
+ pixld_a pixblock_size, dst_r_bpp, \
+ (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R
+ fetch_src_pixblock
+ pixld pixblock_size, mask_bpp, \
+ (mask_basereg - pixblock_size * mask_bpp / 64), MASK
+ process_pixblock_head
+ subs W, W, #pixblock_size
+ blt 2f
+1:
+ process_pixblock_tail_head
+ subs W, W, #pixblock_size
+ bge 1b
+2:
+ process_pixblock_tail
+ pixst_a pixblock_size, dst_w_bpp, \
+ (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W
+7:
+ /* Process the remaining trailing pixels in the scanline (dst aligned) */
+ process_trailing_pixels 0, 1, \
+ process_pixblock_head, \
+ process_pixblock_tail, \
+ process_pixblock_tail_head
+
+ cleanup
+.if use_nearest_scaling != 0
+ pop {r4-r6, pc} /* exit */
+.else
+ bx lr /* exit */
+.endif
+8:
+ /* Process the remaining trailing pixels in the scanline (dst unaligned) */
+ process_trailing_pixels 0, 0, \
+ process_pixblock_head, \
+ process_pixblock_tail, \
+ process_pixblock_tail_head
+
+ cleanup
+
+.if use_nearest_scaling != 0
+ pop {r4-r6, pc} /* exit */
+
+ .unreq DST_R
+ .unreq SRC
+ .unreq W
+ .unreq VX
+ .unreq UNIT_X
+ .unreq TMP1
+ .unreq TMP2
+ .unreq DST_W
+ .unreq MASK
+
+.else
+ bx lr /* exit */
+
+ .unreq SRC
+ .unreq MASK
+ .unreq DST_R
+ .unreq DST_W
+ .unreq W
+.endif
+
+ .purgem fetch_src_pixblock
+ .purgem pixld_src
+
+ .endfunc
+.endm
+
+.macro generate_composite_function_single_scanline x:vararg
+ generate_composite_function_scanline 0, x
+.endm
+
+.macro generate_composite_function_nearest_scanline x:vararg
+ generate_composite_function_scanline 1, x
+.endm
+
+/* Default prologue/epilogue, nothing special needs to be done */
+
+.macro default_init
+.endm
+
+.macro default_cleanup
+.endm
+
+/*
+ * Prologue/epilogue variant which additionally saves/restores d8-d15
+ * registers (they need to be saved/restored by callee according to ABI).
+ * This is required if the code needs to use all the NEON registers.
+ */
+
+.macro default_init_need_all_regs
+ vpush {d8-d15}
+.endm
+
+.macro default_cleanup_need_all_regs
+ vpop {d8-d15}
+.endm
+
+/******************************************************************************/
+
+/*
+ * Conversion of 8 r5g6b6 pixels packed in 128-bit register (in)
+ * into a planar a8r8g8b8 format (with a, r, g, b color components
+ * stored into 64-bit registers out_a, out_r, out_g, out_b respectively).
+ *
+ * Warning: the conversion is destructive and the original
+ * value (in) is lost.
+ */
+.macro convert_0565_to_8888 in, out_a, out_r, out_g, out_b
+ vshrn.u16 out_r, in, #8
+ vshrn.u16 out_g, in, #3
+ vsli.u16 in, in, #5
+ vmov.u8 out_a, #255
+ vsri.u8 out_r, out_r, #5
+ vsri.u8 out_g, out_g, #6
+ vshrn.u16 out_b, in, #2
+.endm
+
+.macro convert_0565_to_x888 in, out_r, out_g, out_b
+ vshrn.u16 out_r, in, #8
+ vshrn.u16 out_g, in, #3
+ vsli.u16 in, in, #5
+ vsri.u8 out_r, out_r, #5
+ vsri.u8 out_g, out_g, #6
+ vshrn.u16 out_b, in, #2
+.endm
+
+/*
+ * Conversion from planar a8r8g8b8 format (with a, r, g, b color components
+ * in 64-bit registers in_a, in_r, in_g, in_b respectively) into 8 r5g6b6
+ * pixels packed in 128-bit register (out). Requires two temporary 128-bit
+ * registers (tmp1, tmp2)
+ */
+.macro convert_8888_to_0565 in_r, in_g, in_b, out, tmp1, tmp2
+ vshll.u8 tmp1, in_g, #8
+ vshll.u8 out, in_r, #8
+ vshll.u8 tmp2, in_b, #8
+ vsri.u16 out, tmp1, #5
+ vsri.u16 out, tmp2, #11
+.endm
+
+/*
+ * Conversion of four r5g6b5 pixels (in) to four x8r8g8b8 pixels
+ * returned in (out0, out1) registers pair. Requires one temporary
+ * 64-bit register (tmp). 'out1' and 'in' may overlap, the original
+ * value from 'in' is lost
+ */
+.macro convert_four_0565_to_x888_packed in, out0, out1, tmp
+ vshl.u16 out0, in, #5 /* G top 6 bits */
+ vshl.u16 tmp, in, #11 /* B top 5 bits */
+ vsri.u16 in, in, #5 /* R is ready in top bits */
+ vsri.u16 out0, out0, #6 /* G is ready in top bits */
+ vsri.u16 tmp, tmp, #5 /* B is ready in top bits */
+ vshr.u16 out1, in, #8 /* R is in place */
+ vsri.u16 out0, tmp, #8 /* G & B is in place */
+ vzip.u16 out0, out1 /* everything is in place */
+.endm
diff --git a/pixman/pixman/pixman-edge-accessors.c b/pixman/pixman/pixman-edge-accessors.c
index ea3a31e2f..0f2c56e74 100644
--- a/pixman/pixman/pixman-edge-accessors.c
+++ b/pixman/pixman/pixman-edge-accessors.c
@@ -1,4 +1,4 @@
-
-#define PIXMAN_FB_ACCESSORS
-
-#include "pixman-edge.c"
+
+#define PIXMAN_FB_ACCESSORS
+
+#include "pixman-edge.c"
diff --git a/pixman/pixman/pixman-edge-imp.h b/pixman/pixman/pixman-edge-imp.h
index a4698eddb..20ffda896 100644
--- a/pixman/pixman/pixman-edge-imp.h
+++ b/pixman/pixman/pixman-edge-imp.h
@@ -1,182 +1,182 @@
-/*
- * Copyright © 2004 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#ifndef rasterize_span
-#endif
-
-static void
-RASTERIZE_EDGES (pixman_image_t *image,
- pixman_edge_t *l,
- pixman_edge_t *r,
- pixman_fixed_t t,
- pixman_fixed_t b)
-{
- pixman_fixed_t y = t;
- uint32_t *line;
- uint32_t *buf = (image)->bits.bits;
- int stride = (image)->bits.rowstride;
- int width = (image)->bits.width;
-
- line = buf + pixman_fixed_to_int (y) * stride;
-
- for (;;)
- {
- pixman_fixed_t lx;
- pixman_fixed_t rx;
- int lxi;
- int rxi;
-
- lx = l->x;
- rx = r->x;
-#if N_BITS == 1
- /* For the non-antialiased case, round the coordinates up, in effect
- * sampling just slightly to the left of the pixel. This is so that
- * when the sample point lies exactly on the line, we round towards
- * north-west.
- *
- * (The AA case does a similar adjustment in RENDER_SAMPLES_X)
- */
- lx += X_FRAC_FIRST(1) - pixman_fixed_e;
- rx += X_FRAC_FIRST(1) - pixman_fixed_e;
-#endif
- /* clip X */
- if (lx < 0)
- lx = 0;
- if (pixman_fixed_to_int (rx) >= width)
-#if N_BITS == 1
- rx = pixman_int_to_fixed (width);
-#else
- /* Use the last pixel of the scanline, covered 100%.
- * We can't use the first pixel following the scanline,
- * because accessing it could result in a buffer overrun.
- */
- rx = pixman_int_to_fixed (width) - 1;
-#endif
-
- /* Skip empty (or backwards) sections */
- if (rx > lx)
- {
-
- /* Find pixel bounds for span */
- lxi = pixman_fixed_to_int (lx);
- rxi = pixman_fixed_to_int (rx);
-
-#if N_BITS == 1
- {
-
-#define LEFT_MASK(x) \
- (((x) & 0x1f) ? \
- SCREEN_SHIFT_RIGHT (0xffffffff, (x) & 0x1f) : 0)
-#define RIGHT_MASK(x) \
- (((32 - (x)) & 0x1f) ? \
- SCREEN_SHIFT_LEFT (0xffffffff, (32 - (x)) & 0x1f) : 0)
-
-#define MASK_BITS(x,w,l,n,r) { \
- n = (w); \
- r = RIGHT_MASK ((x) + n); \
- l = LEFT_MASK (x); \
- if (l) { \
- n -= 32 - ((x) & 0x1f); \
- if (n < 0) { \
- n = 0; \
- l &= r; \
- r = 0; \
- } \
- } \
- n >>= 5; \
- }
-
- uint32_t *a = line;
- uint32_t startmask;
- uint32_t endmask;
- int nmiddle;
- int width = rxi - lxi;
- int x = lxi;
-
- a += x >> 5;
- x &= 0x1f;
-
- MASK_BITS (x, width, startmask, nmiddle, endmask);
-
- if (startmask) {
- WRITE(image, a, READ(image, a) | startmask);
- a++;
- }
- while (nmiddle--)
- WRITE(image, a++, 0xffffffff);
- if (endmask)
- WRITE(image, a, READ(image, a) | endmask);
- }
-#else
- {
- DEFINE_ALPHA(line,lxi);
- int lxs;
- int rxs;
-
- /* Sample coverage for edge pixels */
- lxs = RENDER_SAMPLES_X (lx, N_BITS);
- rxs = RENDER_SAMPLES_X (rx, N_BITS);
-
- /* Add coverage across row */
- if (lxi == rxi)
- {
- ADD_ALPHA (rxs - lxs);
- }
- else
- {
- int xi;
-
- ADD_ALPHA (N_X_FRAC(N_BITS) - lxs);
- STEP_ALPHA;
- for (xi = lxi + 1; xi < rxi; xi++)
- {
- ADD_ALPHA (N_X_FRAC(N_BITS));
- STEP_ALPHA;
- }
- ADD_ALPHA (rxs);
- }
- }
-#endif
- }
-
- if (y == b)
- break;
-
-#if N_BITS > 1
- if (pixman_fixed_frac (y) != Y_FRAC_LAST(N_BITS))
- {
- RENDER_EDGE_STEP_SMALL (l);
- RENDER_EDGE_STEP_SMALL (r);
- y += STEP_Y_SMALL(N_BITS);
- }
- else
-#endif
- {
- RENDER_EDGE_STEP_BIG (l);
- RENDER_EDGE_STEP_BIG (r);
- y += STEP_Y_BIG(N_BITS);
- line += stride;
- }
- }
-}
-
-#undef rasterize_span
+/*
+ * Copyright © 2004 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#ifndef rasterize_span
+#endif
+
+static void
+RASTERIZE_EDGES (pixman_image_t *image,
+ pixman_edge_t *l,
+ pixman_edge_t *r,
+ pixman_fixed_t t,
+ pixman_fixed_t b)
+{
+ pixman_fixed_t y = t;
+ uint32_t *line;
+ uint32_t *buf = (image)->bits.bits;
+ int stride = (image)->bits.rowstride;
+ int width = (image)->bits.width;
+
+ line = buf + pixman_fixed_to_int (y) * stride;
+
+ for (;;)
+ {
+ pixman_fixed_t lx;
+ pixman_fixed_t rx;
+ int lxi;
+ int rxi;
+
+ lx = l->x;
+ rx = r->x;
+#if N_BITS == 1
+ /* For the non-antialiased case, round the coordinates up, in effect
+ * sampling just slightly to the left of the pixel. This is so that
+ * when the sample point lies exactly on the line, we round towards
+ * north-west.
+ *
+ * (The AA case does a similar adjustment in RENDER_SAMPLES_X)
+ */
+ lx += X_FRAC_FIRST(1) - pixman_fixed_e;
+ rx += X_FRAC_FIRST(1) - pixman_fixed_e;
+#endif
+ /* clip X */
+ if (lx < 0)
+ lx = 0;
+ if (pixman_fixed_to_int (rx) >= width)
+#if N_BITS == 1
+ rx = pixman_int_to_fixed (width);
+#else
+ /* Use the last pixel of the scanline, covered 100%.
+ * We can't use the first pixel following the scanline,
+ * because accessing it could result in a buffer overrun.
+ */
+ rx = pixman_int_to_fixed (width) - 1;
+#endif
+
+ /* Skip empty (or backwards) sections */
+ if (rx > lx)
+ {
+
+ /* Find pixel bounds for span */
+ lxi = pixman_fixed_to_int (lx);
+ rxi = pixman_fixed_to_int (rx);
+
+#if N_BITS == 1
+ {
+
+#define LEFT_MASK(x) \
+ (((x) & 0x1f) ? \
+ SCREEN_SHIFT_RIGHT (0xffffffff, (x) & 0x1f) : 0)
+#define RIGHT_MASK(x) \
+ (((32 - (x)) & 0x1f) ? \
+ SCREEN_SHIFT_LEFT (0xffffffff, (32 - (x)) & 0x1f) : 0)
+
+#define MASK_BITS(x,w,l,n,r) { \
+ n = (w); \
+ r = RIGHT_MASK ((x) + n); \
+ l = LEFT_MASK (x); \
+ if (l) { \
+ n -= 32 - ((x) & 0x1f); \
+ if (n < 0) { \
+ n = 0; \
+ l &= r; \
+ r = 0; \
+ } \
+ } \
+ n >>= 5; \
+ }
+
+ uint32_t *a = line;
+ uint32_t startmask;
+ uint32_t endmask;
+ int nmiddle;
+ int width = rxi - lxi;
+ int x = lxi;
+
+ a += x >> 5;
+ x &= 0x1f;
+
+ MASK_BITS (x, width, startmask, nmiddle, endmask);
+
+ if (startmask) {
+ WRITE(image, a, READ(image, a) | startmask);
+ a++;
+ }
+ while (nmiddle--)
+ WRITE(image, a++, 0xffffffff);
+ if (endmask)
+ WRITE(image, a, READ(image, a) | endmask);
+ }
+#else
+ {
+ DEFINE_ALPHA(line,lxi);
+ int lxs;
+ int rxs;
+
+ /* Sample coverage for edge pixels */
+ lxs = RENDER_SAMPLES_X (lx, N_BITS);
+ rxs = RENDER_SAMPLES_X (rx, N_BITS);
+
+ /* Add coverage across row */
+ if (lxi == rxi)
+ {
+ ADD_ALPHA (rxs - lxs);
+ }
+ else
+ {
+ int xi;
+
+ ADD_ALPHA (N_X_FRAC(N_BITS) - lxs);
+ STEP_ALPHA;
+ for (xi = lxi + 1; xi < rxi; xi++)
+ {
+ ADD_ALPHA (N_X_FRAC(N_BITS));
+ STEP_ALPHA;
+ }
+ ADD_ALPHA (rxs);
+ }
+ }
+#endif
+ }
+
+ if (y == b)
+ break;
+
+#if N_BITS > 1
+ if (pixman_fixed_frac (y) != Y_FRAC_LAST(N_BITS))
+ {
+ RENDER_EDGE_STEP_SMALL (l);
+ RENDER_EDGE_STEP_SMALL (r);
+ y += STEP_Y_SMALL(N_BITS);
+ }
+ else
+#endif
+ {
+ RENDER_EDGE_STEP_BIG (l);
+ RENDER_EDGE_STEP_BIG (r);
+ y += STEP_Y_BIG(N_BITS);
+ line += stride;
+ }
+ }
+}
+
+#undef rasterize_span
diff --git a/pixman/pixman/pixman-edge.c b/pixman/pixman/pixman-edge.c
index 8d498ab44..22b0158ba 100644
--- a/pixman/pixman/pixman-edge.c
+++ b/pixman/pixman/pixman-edge.c
@@ -1,384 +1,384 @@
-/*
- * Copyright © 2004 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-
-#include "pixman-private.h"
-#include "pixman-accessor.h"
-
-/*
- * Step across a small sample grid gap
- */
-#define RENDER_EDGE_STEP_SMALL(edge) \
- { \
- edge->x += edge->stepx_small; \
- edge->e += edge->dx_small; \
- if (edge->e > 0) \
- { \
- edge->e -= edge->dy; \
- edge->x += edge->signdx; \
- } \
- }
-
-/*
- * Step across a large sample grid gap
- */
-#define RENDER_EDGE_STEP_BIG(edge) \
- { \
- edge->x += edge->stepx_big; \
- edge->e += edge->dx_big; \
- if (edge->e > 0) \
- { \
- edge->e -= edge->dy; \
- edge->x += edge->signdx; \
- } \
- }
-
-#ifdef PIXMAN_FB_ACCESSORS
-#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_accessors
-#else
-#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_no_accessors
-#endif
-
-/*
- * 4 bit alpha
- */
-
-#define N_BITS 4
-#define RASTERIZE_EDGES rasterize_edges_4
-
-#ifndef WORDS_BIGENDIAN
-#define SHIFT_4(o) ((o) << 2)
-#else
-#define SHIFT_4(o) ((1 - (o)) << 2)
-#endif
-
-#define GET_4(x, o) (((x) >> SHIFT_4 (o)) & 0xf)
-#define PUT_4(x, o, v) \
- (((x) & ~(0xf << SHIFT_4 (o))) | (((v) & 0xf) << SHIFT_4 (o)))
-
-#define DEFINE_ALPHA(line, x) \
- uint8_t *__ap = (uint8_t *) line + ((x) >> 1); \
- int __ao = (x) & 1
-
-#define STEP_ALPHA ((__ap += __ao), (__ao ^= 1))
-
-#define ADD_ALPHA(a) \
- { \
- uint8_t __o = READ (image, __ap); \
- uint8_t __a = (a) + GET_4 (__o, __ao); \
- WRITE (image, __ap, PUT_4 (__o, __ao, __a | (0 - ((__a) >> 4)))); \
- }
-
-#include "pixman-edge-imp.h"
-
-#undef ADD_ALPHA
-#undef STEP_ALPHA
-#undef DEFINE_ALPHA
-#undef RASTERIZE_EDGES
-#undef N_BITS
-
-
-/*
- * 1 bit alpha
- */
-
-#define N_BITS 1
-#define RASTERIZE_EDGES rasterize_edges_1
-
-#include "pixman-edge-imp.h"
-
-#undef RASTERIZE_EDGES
-#undef N_BITS
-
-/*
- * 8 bit alpha
- */
-
-static force_inline uint8_t
-clip255 (int x)
-{
- if (x > 255)
- return 255;
-
- return x;
-}
-
-#define ADD_SATURATE_8(buf, val, length) \
- do \
- { \
- int i__ = (length); \
- uint8_t *buf__ = (buf); \
- int val__ = (val); \
- \
- while (i__--) \
- { \
- WRITE (image, (buf__), clip255 (READ (image, (buf__)) + (val__))); \
- (buf__)++; \
- } \
- } while (0)
-
-/*
- * We want to detect the case where we add the same value to a long
- * span of pixels. The triangles on the end are filled in while we
- * count how many sub-pixel scanlines contribute to the middle section.
- *
- * +--------------------------+
- * fill_height =| \ /
- * +------------------+
- * |================|
- * fill_start fill_end
- */
-static void
-rasterize_edges_8 (pixman_image_t *image,
- pixman_edge_t * l,
- pixman_edge_t * r,
- pixman_fixed_t t,
- pixman_fixed_t b)
-{
- pixman_fixed_t y = t;
- uint32_t *line;
- int fill_start = -1, fill_end = -1;
- int fill_size = 0;
- uint32_t *buf = (image)->bits.bits;
- int stride = (image)->bits.rowstride;
- int width = (image)->bits.width;
-
- line = buf + pixman_fixed_to_int (y) * stride;
-
- for (;;)
- {
- uint8_t *ap = (uint8_t *) line;
- pixman_fixed_t lx, rx;
- int lxi, rxi;
-
- /* clip X */
- lx = l->x;
- if (lx < 0)
- lx = 0;
-
- rx = r->x;
-
- if (pixman_fixed_to_int (rx) >= width)
- {
- /* Use the last pixel of the scanline, covered 100%.
- * We can't use the first pixel following the scanline,
- * because accessing it could result in a buffer overrun.
- */
- rx = pixman_int_to_fixed (width) - 1;
- }
-
- /* Skip empty (or backwards) sections */
- if (rx > lx)
- {
- int lxs, rxs;
-
- /* Find pixel bounds for span. */
- lxi = pixman_fixed_to_int (lx);
- rxi = pixman_fixed_to_int (rx);
-
- /* Sample coverage for edge pixels */
- lxs = RENDER_SAMPLES_X (lx, 8);
- rxs = RENDER_SAMPLES_X (rx, 8);
-
- /* Add coverage across row */
- if (lxi == rxi)
- {
- WRITE (image, ap + lxi,
- clip255 (READ (image, ap + lxi) + rxs - lxs));
- }
- else
- {
- WRITE (image, ap + lxi,
- clip255 (READ (image, ap + lxi) + N_X_FRAC (8) - lxs));
-
- /* Move forward so that lxi/rxi is the pixel span */
- lxi++;
-
- /* Don't bother trying to optimize the fill unless
- * the span is longer than 4 pixels. */
- if (rxi - lxi > 4)
- {
- if (fill_start < 0)
- {
- fill_start = lxi;
- fill_end = rxi;
- fill_size++;
- }
- else
- {
- if (lxi >= fill_end || rxi < fill_start)
- {
- /* We're beyond what we saved, just fill it */
- ADD_SATURATE_8 (ap + fill_start,
- fill_size * N_X_FRAC (8),
- fill_end - fill_start);
- fill_start = lxi;
- fill_end = rxi;
- fill_size = 1;
- }
- else
- {
- /* Update fill_start */
- if (lxi > fill_start)
- {
- ADD_SATURATE_8 (ap + fill_start,
- fill_size * N_X_FRAC (8),
- lxi - fill_start);
- fill_start = lxi;
- }
- else if (lxi < fill_start)
- {
- ADD_SATURATE_8 (ap + lxi, N_X_FRAC (8),
- fill_start - lxi);
- }
-
- /* Update fill_end */
- if (rxi < fill_end)
- {
- ADD_SATURATE_8 (ap + rxi,
- fill_size * N_X_FRAC (8),
- fill_end - rxi);
- fill_end = rxi;
- }
- else if (fill_end < rxi)
- {
- ADD_SATURATE_8 (ap + fill_end,
- N_X_FRAC (8),
- rxi - fill_end);
- }
- fill_size++;
- }
- }
- }
- else
- {
- ADD_SATURATE_8 (ap + lxi, N_X_FRAC (8), rxi - lxi);
- }
-
- WRITE (image, ap + rxi, clip255 (READ (image, ap + rxi) + rxs));
- }
- }
-
- if (y == b)
- {
- /* We're done, make sure we clean up any remaining fill. */
- if (fill_start != fill_end)
- {
- if (fill_size == N_Y_FRAC (8))
- {
- MEMSET_WRAPPED (image, ap + fill_start,
- 0xff, fill_end - fill_start);
- }
- else
- {
- ADD_SATURATE_8 (ap + fill_start, fill_size * N_X_FRAC (8),
- fill_end - fill_start);
- }
- }
- break;
- }
-
- if (pixman_fixed_frac (y) != Y_FRAC_LAST (8))
- {
- RENDER_EDGE_STEP_SMALL (l);
- RENDER_EDGE_STEP_SMALL (r);
- y += STEP_Y_SMALL (8);
- }
- else
- {
- RENDER_EDGE_STEP_BIG (l);
- RENDER_EDGE_STEP_BIG (r);
- y += STEP_Y_BIG (8);
- if (fill_start != fill_end)
- {
- if (fill_size == N_Y_FRAC (8))
- {
- MEMSET_WRAPPED (image, ap + fill_start,
- 0xff, fill_end - fill_start);
- }
- else
- {
- ADD_SATURATE_8 (ap + fill_start, fill_size * N_X_FRAC (8),
- fill_end - fill_start);
- }
-
- fill_start = fill_end = -1;
- fill_size = 0;
- }
-
- line += stride;
- }
- }
-}
-
-#ifndef PIXMAN_FB_ACCESSORS
-static
-#endif
-void
-PIXMAN_RASTERIZE_EDGES (pixman_image_t *image,
- pixman_edge_t * l,
- pixman_edge_t * r,
- pixman_fixed_t t,
- pixman_fixed_t b)
-{
- switch (PIXMAN_FORMAT_BPP (image->bits.format))
- {
- case 1:
- rasterize_edges_1 (image, l, r, t, b);
- break;
-
- case 4:
- rasterize_edges_4 (image, l, r, t, b);
- break;
-
- case 8:
- rasterize_edges_8 (image, l, r, t, b);
- break;
-
- default:
- break;
- }
-}
-
-#ifndef PIXMAN_FB_ACCESSORS
-
-PIXMAN_EXPORT void
-pixman_rasterize_edges (pixman_image_t *image,
- pixman_edge_t * l,
- pixman_edge_t * r,
- pixman_fixed_t t,
- pixman_fixed_t b)
-{
- return_if_fail (image->type == BITS);
-
- if (image->bits.read_func || image->bits.write_func)
- pixman_rasterize_edges_accessors (image, l, r, t, b);
- else
- pixman_rasterize_edges_no_accessors (image, l, r, t, b);
-}
-
-#endif
+/*
+ * Copyright © 2004 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+
+#include "pixman-private.h"
+#include "pixman-accessor.h"
+
+/*
+ * Step across a small sample grid gap
+ */
+#define RENDER_EDGE_STEP_SMALL(edge) \
+ { \
+ edge->x += edge->stepx_small; \
+ edge->e += edge->dx_small; \
+ if (edge->e > 0) \
+ { \
+ edge->e -= edge->dy; \
+ edge->x += edge->signdx; \
+ } \
+ }
+
+/*
+ * Step across a large sample grid gap
+ */
+#define RENDER_EDGE_STEP_BIG(edge) \
+ { \
+ edge->x += edge->stepx_big; \
+ edge->e += edge->dx_big; \
+ if (edge->e > 0) \
+ { \
+ edge->e -= edge->dy; \
+ edge->x += edge->signdx; \
+ } \
+ }
+
+#ifdef PIXMAN_FB_ACCESSORS
+#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_accessors
+#else
+#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_no_accessors
+#endif
+
+/*
+ * 4 bit alpha
+ */
+
+#define N_BITS 4
+#define RASTERIZE_EDGES rasterize_edges_4
+
+#ifndef WORDS_BIGENDIAN
+#define SHIFT_4(o) ((o) << 2)
+#else
+#define SHIFT_4(o) ((1 - (o)) << 2)
+#endif
+
+#define GET_4(x, o) (((x) >> SHIFT_4 (o)) & 0xf)
+#define PUT_4(x, o, v) \
+ (((x) & ~(0xf << SHIFT_4 (o))) | (((v) & 0xf) << SHIFT_4 (o)))
+
+#define DEFINE_ALPHA(line, x) \
+ uint8_t *__ap = (uint8_t *) line + ((x) >> 1); \
+ int __ao = (x) & 1
+
+#define STEP_ALPHA ((__ap += __ao), (__ao ^= 1))
+
+#define ADD_ALPHA(a) \
+ { \
+ uint8_t __o = READ (image, __ap); \
+ uint8_t __a = (a) + GET_4 (__o, __ao); \
+ WRITE (image, __ap, PUT_4 (__o, __ao, __a | (0 - ((__a) >> 4)))); \
+ }
+
+#include "pixman-edge-imp.h"
+
+#undef ADD_ALPHA
+#undef STEP_ALPHA
+#undef DEFINE_ALPHA
+#undef RASTERIZE_EDGES
+#undef N_BITS
+
+
+/*
+ * 1 bit alpha
+ */
+
+#define N_BITS 1
+#define RASTERIZE_EDGES rasterize_edges_1
+
+#include "pixman-edge-imp.h"
+
+#undef RASTERIZE_EDGES
+#undef N_BITS
+
+/*
+ * 8 bit alpha
+ */
+
+static force_inline uint8_t
+clip255 (int x)
+{
+ if (x > 255)
+ return 255;
+
+ return x;
+}
+
+#define ADD_SATURATE_8(buf, val, length) \
+ do \
+ { \
+ int i__ = (length); \
+ uint8_t *buf__ = (buf); \
+ int val__ = (val); \
+ \
+ while (i__--) \
+ { \
+ WRITE (image, (buf__), clip255 (READ (image, (buf__)) + (val__))); \
+ (buf__)++; \
+ } \
+ } while (0)
+
+/*
+ * We want to detect the case where we add the same value to a long
+ * span of pixels. The triangles on the end are filled in while we
+ * count how many sub-pixel scanlines contribute to the middle section.
+ *
+ * +--------------------------+
+ * fill_height =| \ /
+ * +------------------+
+ * |================|
+ * fill_start fill_end
+ */
+static void
+rasterize_edges_8 (pixman_image_t *image,
+ pixman_edge_t * l,
+ pixman_edge_t * r,
+ pixman_fixed_t t,
+ pixman_fixed_t b)
+{
+ pixman_fixed_t y = t;
+ uint32_t *line;
+ int fill_start = -1, fill_end = -1;
+ int fill_size = 0;
+ uint32_t *buf = (image)->bits.bits;
+ int stride = (image)->bits.rowstride;
+ int width = (image)->bits.width;
+
+ line = buf + pixman_fixed_to_int (y) * stride;
+
+ for (;;)
+ {
+ uint8_t *ap = (uint8_t *) line;
+ pixman_fixed_t lx, rx;
+ int lxi, rxi;
+
+ /* clip X */
+ lx = l->x;
+ if (lx < 0)
+ lx = 0;
+
+ rx = r->x;
+
+ if (pixman_fixed_to_int (rx) >= width)
+ {
+ /* Use the last pixel of the scanline, covered 100%.
+ * We can't use the first pixel following the scanline,
+ * because accessing it could result in a buffer overrun.
+ */
+ rx = pixman_int_to_fixed (width) - 1;
+ }
+
+ /* Skip empty (or backwards) sections */
+ if (rx > lx)
+ {
+ int lxs, rxs;
+
+ /* Find pixel bounds for span. */
+ lxi = pixman_fixed_to_int (lx);
+ rxi = pixman_fixed_to_int (rx);
+
+ /* Sample coverage for edge pixels */
+ lxs = RENDER_SAMPLES_X (lx, 8);
+ rxs = RENDER_SAMPLES_X (rx, 8);
+
+ /* Add coverage across row */
+ if (lxi == rxi)
+ {
+ WRITE (image, ap + lxi,
+ clip255 (READ (image, ap + lxi) + rxs - lxs));
+ }
+ else
+ {
+ WRITE (image, ap + lxi,
+ clip255 (READ (image, ap + lxi) + N_X_FRAC (8) - lxs));
+
+ /* Move forward so that lxi/rxi is the pixel span */
+ lxi++;
+
+ /* Don't bother trying to optimize the fill unless
+ * the span is longer than 4 pixels. */
+ if (rxi - lxi > 4)
+ {
+ if (fill_start < 0)
+ {
+ fill_start = lxi;
+ fill_end = rxi;
+ fill_size++;
+ }
+ else
+ {
+ if (lxi >= fill_end || rxi < fill_start)
+ {
+ /* We're beyond what we saved, just fill it */
+ ADD_SATURATE_8 (ap + fill_start,
+ fill_size * N_X_FRAC (8),
+ fill_end - fill_start);
+ fill_start = lxi;
+ fill_end = rxi;
+ fill_size = 1;
+ }
+ else
+ {
+ /* Update fill_start */
+ if (lxi > fill_start)
+ {
+ ADD_SATURATE_8 (ap + fill_start,
+ fill_size * N_X_FRAC (8),
+ lxi - fill_start);
+ fill_start = lxi;
+ }
+ else if (lxi < fill_start)
+ {
+ ADD_SATURATE_8 (ap + lxi, N_X_FRAC (8),
+ fill_start - lxi);
+ }
+
+ /* Update fill_end */
+ if (rxi < fill_end)
+ {
+ ADD_SATURATE_8 (ap + rxi,
+ fill_size * N_X_FRAC (8),
+ fill_end - rxi);
+ fill_end = rxi;
+ }
+ else if (fill_end < rxi)
+ {
+ ADD_SATURATE_8 (ap + fill_end,
+ N_X_FRAC (8),
+ rxi - fill_end);
+ }
+ fill_size++;
+ }
+ }
+ }
+ else
+ {
+ ADD_SATURATE_8 (ap + lxi, N_X_FRAC (8), rxi - lxi);
+ }
+
+ WRITE (image, ap + rxi, clip255 (READ (image, ap + rxi) + rxs));
+ }
+ }
+
+ if (y == b)
+ {
+ /* We're done, make sure we clean up any remaining fill. */
+ if (fill_start != fill_end)
+ {
+ if (fill_size == N_Y_FRAC (8))
+ {
+ MEMSET_WRAPPED (image, ap + fill_start,
+ 0xff, fill_end - fill_start);
+ }
+ else
+ {
+ ADD_SATURATE_8 (ap + fill_start, fill_size * N_X_FRAC (8),
+ fill_end - fill_start);
+ }
+ }
+ break;
+ }
+
+ if (pixman_fixed_frac (y) != Y_FRAC_LAST (8))
+ {
+ RENDER_EDGE_STEP_SMALL (l);
+ RENDER_EDGE_STEP_SMALL (r);
+ y += STEP_Y_SMALL (8);
+ }
+ else
+ {
+ RENDER_EDGE_STEP_BIG (l);
+ RENDER_EDGE_STEP_BIG (r);
+ y += STEP_Y_BIG (8);
+ if (fill_start != fill_end)
+ {
+ if (fill_size == N_Y_FRAC (8))
+ {
+ MEMSET_WRAPPED (image, ap + fill_start,
+ 0xff, fill_end - fill_start);
+ }
+ else
+ {
+ ADD_SATURATE_8 (ap + fill_start, fill_size * N_X_FRAC (8),
+ fill_end - fill_start);
+ }
+
+ fill_start = fill_end = -1;
+ fill_size = 0;
+ }
+
+ line += stride;
+ }
+ }
+}
+
+#ifndef PIXMAN_FB_ACCESSORS
+static
+#endif
+void
+PIXMAN_RASTERIZE_EDGES (pixman_image_t *image,
+ pixman_edge_t * l,
+ pixman_edge_t * r,
+ pixman_fixed_t t,
+ pixman_fixed_t b)
+{
+ switch (PIXMAN_FORMAT_BPP (image->bits.format))
+ {
+ case 1:
+ rasterize_edges_1 (image, l, r, t, b);
+ break;
+
+ case 4:
+ rasterize_edges_4 (image, l, r, t, b);
+ break;
+
+ case 8:
+ rasterize_edges_8 (image, l, r, t, b);
+ break;
+
+ default:
+ break;
+ }
+}
+
+#ifndef PIXMAN_FB_ACCESSORS
+
+PIXMAN_EXPORT void
+pixman_rasterize_edges (pixman_image_t *image,
+ pixman_edge_t * l,
+ pixman_edge_t * r,
+ pixman_fixed_t t,
+ pixman_fixed_t b)
+{
+ return_if_fail (image->type == BITS);
+
+ if (image->bits.read_func || image->bits.write_func)
+ pixman_rasterize_edges_accessors (image, l, r, t, b);
+ else
+ pixman_rasterize_edges_no_accessors (image, l, r, t, b);
+}
+
+#endif
diff --git a/pixman/pixman/pixman-matrix.c b/pixman/pixman/pixman-matrix.c
index 0b3ae78b3..8d0d97325 100644
--- a/pixman/pixman/pixman-matrix.c
+++ b/pixman/pixman/pixman-matrix.c
@@ -1,766 +1,766 @@
-/*
- * Copyright © 2008 Keith Packard
- *
- * 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 the copyright holders not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. The copyright holders make no representations
- * about the suitability of this software for any purpose. It is provided "as
- * is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL THE COPYRIGHT HOLDERS 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.
- */
-
-/*
- * Matrix interfaces
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <math.h>
-#include <string.h>
-#include "pixman-private.h"
-
-#define F(x) pixman_int_to_fixed (x)
-
-PIXMAN_EXPORT void
-pixman_transform_init_identity (struct pixman_transform *matrix)
-{
- int i;
-
- memset (matrix, '\0', sizeof (struct pixman_transform));
- for (i = 0; i < 3; i++)
- matrix->matrix[i][i] = F (1);
-}
-
-typedef pixman_fixed_32_32_t pixman_fixed_34_30_t;
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_point_3d (const struct pixman_transform *transform,
- struct pixman_vector * vector)
-{
- struct pixman_vector result;
- pixman_fixed_32_32_t partial;
- pixman_fixed_48_16_t v;
- int i, j;
-
- for (j = 0; j < 3; j++)
- {
- v = 0;
- for (i = 0; i < 3; i++)
- {
- partial = ((pixman_fixed_48_16_t) transform->matrix[j][i] *
- (pixman_fixed_48_16_t) vector->vector[i]);
- v += partial >> 16;
- }
-
- if (v > pixman_max_fixed_48_16 || v < pixman_min_fixed_48_16)
- return FALSE;
-
- result.vector[j] = (pixman_fixed_t) v;
- }
-
- *vector = result;
-
- if (!result.vector[2])
- return FALSE;
-
- return TRUE;
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_point (const struct pixman_transform *transform,
- struct pixman_vector * vector)
-{
- pixman_fixed_32_32_t partial;
- pixman_fixed_34_30_t v[3];
- pixman_fixed_48_16_t quo;
- int i, j;
-
- for (j = 0; j < 3; j++)
- {
- v[j] = 0;
-
- for (i = 0; i < 3; i++)
- {
- partial = ((pixman_fixed_32_32_t) transform->matrix[j][i] *
- (pixman_fixed_32_32_t) vector->vector[i]);
- v[j] += partial >> 2;
- }
- }
-
- if (!(v[2] >> 16))
- return FALSE;
-
- for (j = 0; j < 2; j++)
- {
- quo = v[j] / (v[2] >> 16);
- if (quo > pixman_max_fixed_48_16 || quo < pixman_min_fixed_48_16)
- return FALSE;
- vector->vector[j] = (pixman_fixed_t) quo;
- }
-
- vector->vector[2] = pixman_fixed_1;
- return TRUE;
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_multiply (struct pixman_transform * dst,
- const struct pixman_transform *l,
- const struct pixman_transform *r)
-{
- struct pixman_transform d;
- int dx, dy;
- int o;
-
- for (dy = 0; dy < 3; dy++)
- {
- for (dx = 0; dx < 3; dx++)
- {
- pixman_fixed_48_16_t v;
- pixman_fixed_32_32_t partial;
-
- v = 0;
- for (o = 0; o < 3; o++)
- {
- partial =
- (pixman_fixed_32_32_t) l->matrix[dy][o] *
- (pixman_fixed_32_32_t) r->matrix[o][dx];
-
- v += partial >> 16;
- }
-
- if (v > pixman_max_fixed_48_16 || v < pixman_min_fixed_48_16)
- return FALSE;
-
- d.matrix[dy][dx] = (pixman_fixed_t) v;
- }
- }
-
- *dst = d;
- return TRUE;
-}
-
-PIXMAN_EXPORT void
-pixman_transform_init_scale (struct pixman_transform *t,
- pixman_fixed_t sx,
- pixman_fixed_t sy)
-{
- memset (t, '\0', sizeof (struct pixman_transform));
-
- t->matrix[0][0] = sx;
- t->matrix[1][1] = sy;
- t->matrix[2][2] = F (1);
-}
-
-static pixman_fixed_t
-fixed_inverse (pixman_fixed_t x)
-{
- return (pixman_fixed_t) ((((pixman_fixed_48_16_t) F (1)) * F (1)) / x);
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_scale (struct pixman_transform *forward,
- struct pixman_transform *reverse,
- pixman_fixed_t sx,
- pixman_fixed_t sy)
-{
- struct pixman_transform t;
-
- if (sx == 0 || sy == 0)
- return FALSE;
-
- if (forward)
- {
- pixman_transform_init_scale (&t, sx, sy);
- if (!pixman_transform_multiply (forward, &t, forward))
- return FALSE;
- }
-
- if (reverse)
- {
- pixman_transform_init_scale (&t, fixed_inverse (sx),
- fixed_inverse (sy));
- if (!pixman_transform_multiply (reverse, reverse, &t))
- return FALSE;
- }
-
- return TRUE;
-}
-
-PIXMAN_EXPORT void
-pixman_transform_init_rotate (struct pixman_transform *t,
- pixman_fixed_t c,
- pixman_fixed_t s)
-{
- memset (t, '\0', sizeof (struct pixman_transform));
-
- t->matrix[0][0] = c;
- t->matrix[0][1] = -s;
- t->matrix[1][0] = s;
- t->matrix[1][1] = c;
- t->matrix[2][2] = F (1);
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_rotate (struct pixman_transform *forward,
- struct pixman_transform *reverse,
- pixman_fixed_t c,
- pixman_fixed_t s)
-{
- struct pixman_transform t;
-
- if (forward)
- {
- pixman_transform_init_rotate (&t, c, s);
- if (!pixman_transform_multiply (forward, &t, forward))
- return FALSE;
- }
-
- if (reverse)
- {
- pixman_transform_init_rotate (&t, c, -s);
- if (!pixman_transform_multiply (reverse, reverse, &t))
- return FALSE;
- }
-
- return TRUE;
-}
-
-PIXMAN_EXPORT void
-pixman_transform_init_translate (struct pixman_transform *t,
- pixman_fixed_t tx,
- pixman_fixed_t ty)
-{
- memset (t, '\0', sizeof (struct pixman_transform));
-
- t->matrix[0][0] = F (1);
- t->matrix[0][2] = tx;
- t->matrix[1][1] = F (1);
- t->matrix[1][2] = ty;
- t->matrix[2][2] = F (1);
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_translate (struct pixman_transform *forward,
- struct pixman_transform *reverse,
- pixman_fixed_t tx,
- pixman_fixed_t ty)
-{
- struct pixman_transform t;
-
- if (forward)
- {
- pixman_transform_init_translate (&t, tx, ty);
-
- if (!pixman_transform_multiply (forward, &t, forward))
- return FALSE;
- }
-
- if (reverse)
- {
- pixman_transform_init_translate (&t, -tx, -ty);
-
- if (!pixman_transform_multiply (reverse, reverse, &t))
- return FALSE;
- }
- return TRUE;
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_bounds (const struct pixman_transform *matrix,
- struct pixman_box16 * b)
-
-{
- struct pixman_vector v[4];
- int i;
- int x1, y1, x2, y2;
-
- v[0].vector[0] = F (b->x1);
- v[0].vector[1] = F (b->y1);
- v[0].vector[2] = F (1);
-
- v[1].vector[0] = F (b->x2);
- v[1].vector[1] = F (b->y1);
- v[1].vector[2] = F (1);
-
- v[2].vector[0] = F (b->x2);
- v[2].vector[1] = F (b->y2);
- v[2].vector[2] = F (1);
-
- v[3].vector[0] = F (b->x1);
- v[3].vector[1] = F (b->y2);
- v[3].vector[2] = F (1);
-
- for (i = 0; i < 4; i++)
- {
- if (!pixman_transform_point (matrix, &v[i]))
- return FALSE;
-
- x1 = pixman_fixed_to_int (v[i].vector[0]);
- y1 = pixman_fixed_to_int (v[i].vector[1]);
- x2 = pixman_fixed_to_int (pixman_fixed_ceil (v[i].vector[0]));
- y2 = pixman_fixed_to_int (pixman_fixed_ceil (v[i].vector[1]));
-
- if (i == 0)
- {
- b->x1 = x1;
- b->y1 = y1;
- b->x2 = x2;
- b->y2 = y2;
- }
- else
- {
- if (x1 < b->x1) b->x1 = x1;
- if (y1 < b->y1) b->y1 = y1;
- if (x2 > b->x2) b->x2 = x2;
- if (y2 > b->y2) b->y2 = y2;
- }
- }
-
- return TRUE;
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_invert (struct pixman_transform * dst,
- const struct pixman_transform *src)
-{
- struct pixman_f_transform m, r;
-
- pixman_f_transform_from_pixman_transform (&m, src);
-
- if (!pixman_f_transform_invert (&r, &m))
- return FALSE;
-
- if (!pixman_transform_from_pixman_f_transform (dst, &r))
- return FALSE;
-
- return TRUE;
-}
-
-static pixman_bool_t
-within_epsilon (pixman_fixed_t a,
- pixman_fixed_t b,
- pixman_fixed_t epsilon)
-{
- pixman_fixed_t t = a - b;
-
- if (t < 0)
- t = -t;
-
- return t <= epsilon;
-}
-
-#define EPSILON (pixman_fixed_t) (2)
-
-#define IS_SAME(a, b) (within_epsilon (a, b, EPSILON))
-#define IS_ZERO(a) (within_epsilon (a, 0, EPSILON))
-#define IS_ONE(a) (within_epsilon (a, F (1), EPSILON))
-#define IS_UNIT(a) \
- (within_epsilon (a, F (1), EPSILON) || \
- within_epsilon (a, F (-1), EPSILON) || \
- IS_ZERO (a))
-#define IS_INT(a) (IS_ZERO (pixman_fixed_frac (a)))
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_is_identity (const struct pixman_transform *t)
-{
- return (IS_SAME (t->matrix[0][0], t->matrix[1][1]) &&
- IS_SAME (t->matrix[0][0], t->matrix[2][2]) &&
- !IS_ZERO (t->matrix[0][0]) &&
- IS_ZERO (t->matrix[0][1]) &&
- IS_ZERO (t->matrix[0][2]) &&
- IS_ZERO (t->matrix[1][0]) &&
- IS_ZERO (t->matrix[1][2]) &&
- IS_ZERO (t->matrix[2][0]) &&
- IS_ZERO (t->matrix[2][1]));
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_is_scale (const struct pixman_transform *t)
-{
- return (!IS_ZERO (t->matrix[0][0]) &&
- IS_ZERO (t->matrix[0][1]) &&
- IS_ZERO (t->matrix[0][2]) &&
-
- IS_ZERO (t->matrix[1][0]) &&
- !IS_ZERO (t->matrix[1][1]) &&
- IS_ZERO (t->matrix[1][2]) &&
-
- IS_ZERO (t->matrix[2][0]) &&
- IS_ZERO (t->matrix[2][1]) &&
- !IS_ZERO (t->matrix[2][2]));
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_is_int_translate (const struct pixman_transform *t)
-{
- return (IS_ONE (t->matrix[0][0]) &&
- IS_ZERO (t->matrix[0][1]) &&
- IS_INT (t->matrix[0][2]) &&
-
- IS_ZERO (t->matrix[1][0]) &&
- IS_ONE (t->matrix[1][1]) &&
- IS_INT (t->matrix[1][2]) &&
-
- IS_ZERO (t->matrix[2][0]) &&
- IS_ZERO (t->matrix[2][1]) &&
- IS_ONE (t->matrix[2][2]));
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_is_inverse (const struct pixman_transform *a,
- const struct pixman_transform *b)
-{
- struct pixman_transform t;
-
- if (!pixman_transform_multiply (&t, a, b))
- return FALSE;
-
- return pixman_transform_is_identity (&t);
-}
-
-PIXMAN_EXPORT void
-pixman_f_transform_from_pixman_transform (struct pixman_f_transform * ft,
- const struct pixman_transform *t)
-{
- int i, j;
-
- for (j = 0; j < 3; j++)
- {
- for (i = 0; i < 3; i++)
- ft->m[j][i] = pixman_fixed_to_double (t->matrix[j][i]);
- }
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_transform_from_pixman_f_transform (struct pixman_transform * t,
- const struct pixman_f_transform *ft)
-{
- int i, j;
-
- for (j = 0; j < 3; j++)
- {
- for (i = 0; i < 3; i++)
- {
- double d = ft->m[j][i];
- if (d < -32767.0 || d > 32767.0)
- return FALSE;
- d = d * 65536.0 + 0.5;
- t->matrix[j][i] = (pixman_fixed_t) floor (d);
- }
- }
-
- return TRUE;
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_f_transform_invert (struct pixman_f_transform * dst,
- const struct pixman_f_transform *src)
-{
- double det;
- int i, j;
- static int a[3] = { 2, 2, 1 };
- static int b[3] = { 1, 0, 0 };
-
- det = 0;
- for (i = 0; i < 3; i++)
- {
- double p;
- int ai = a[i];
- int bi = b[i];
- p = src->m[i][0] * (src->m[ai][2] * src->m[bi][1] -
- src->m[ai][1] * src->m[bi][2]);
- if (i == 1)
- p = -p;
- det += p;
- }
-
- if (det == 0)
- return FALSE;
-
- det = 1 / det;
- for (j = 0; j < 3; j++)
- {
- for (i = 0; i < 3; i++)
- {
- double p;
- int ai = a[i];
- int aj = a[j];
- int bi = b[i];
- int bj = b[j];
-
- p = (src->m[ai][aj] * src->m[bi][bj] -
- src->m[ai][bj] * src->m[bi][aj]);
-
- if (((i + j) & 1) != 0)
- p = -p;
-
- dst->m[j][i] = det * p;
- }
- }
-
- return TRUE;
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_f_transform_point (const struct pixman_f_transform *t,
- struct pixman_f_vector * v)
-{
- struct pixman_f_vector result;
- int i, j;
- double a;
-
- for (j = 0; j < 3; j++)
- {
- a = 0;
- for (i = 0; i < 3; i++)
- a += t->m[j][i] * v->v[i];
- result.v[j] = a;
- }
-
- if (!result.v[2])
- return FALSE;
-
- for (j = 0; j < 2; j++)
- v->v[j] = result.v[j] / result.v[2];
-
- v->v[2] = 1;
-
- return TRUE;
-}
-
-PIXMAN_EXPORT void
-pixman_f_transform_point_3d (const struct pixman_f_transform *t,
- struct pixman_f_vector * v)
-{
- struct pixman_f_vector result;
- int i, j;
- double a;
-
- for (j = 0; j < 3; j++)
- {
- a = 0;
- for (i = 0; i < 3; i++)
- a += t->m[j][i] * v->v[i];
- result.v[j] = a;
- }
-
- *v = result;
-}
-
-PIXMAN_EXPORT void
-pixman_f_transform_multiply (struct pixman_f_transform * dst,
- const struct pixman_f_transform *l,
- const struct pixman_f_transform *r)
-{
- struct pixman_f_transform d;
- int dx, dy;
- int o;
-
- for (dy = 0; dy < 3; dy++)
- {
- for (dx = 0; dx < 3; dx++)
- {
- double v = 0;
- for (o = 0; o < 3; o++)
- v += l->m[dy][o] * r->m[o][dx];
- d.m[dy][dx] = v;
- }
- }
-
- *dst = d;
-}
-
-PIXMAN_EXPORT void
-pixman_f_transform_init_scale (struct pixman_f_transform *t,
- double sx,
- double sy)
-{
- t->m[0][0] = sx;
- t->m[0][1] = 0;
- t->m[0][2] = 0;
- t->m[1][0] = 0;
- t->m[1][1] = sy;
- t->m[1][2] = 0;
- t->m[2][0] = 0;
- t->m[2][1] = 0;
- t->m[2][2] = 1;
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_f_transform_scale (struct pixman_f_transform *forward,
- struct pixman_f_transform *reverse,
- double sx,
- double sy)
-{
- struct pixman_f_transform t;
-
- if (sx == 0 || sy == 0)
- return FALSE;
-
- if (forward)
- {
- pixman_f_transform_init_scale (&t, sx, sy);
- pixman_f_transform_multiply (forward, &t, forward);
- }
-
- if (reverse)
- {
- pixman_f_transform_init_scale (&t, 1 / sx, 1 / sy);
- pixman_f_transform_multiply (reverse, reverse, &t);
- }
-
- return TRUE;
-}
-
-PIXMAN_EXPORT void
-pixman_f_transform_init_rotate (struct pixman_f_transform *t,
- double c,
- double s)
-{
- t->m[0][0] = c;
- t->m[0][1] = -s;
- t->m[0][2] = 0;
- t->m[1][0] = s;
- t->m[1][1] = c;
- t->m[1][2] = 0;
- t->m[2][0] = 0;
- t->m[2][1] = 0;
- t->m[2][2] = 1;
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_f_transform_rotate (struct pixman_f_transform *forward,
- struct pixman_f_transform *reverse,
- double c,
- double s)
-{
- struct pixman_f_transform t;
-
- if (forward)
- {
- pixman_f_transform_init_rotate (&t, c, s);
- pixman_f_transform_multiply (forward, &t, forward);
- }
-
- if (reverse)
- {
- pixman_f_transform_init_rotate (&t, c, -s);
- pixman_f_transform_multiply (reverse, reverse, &t);
- }
-
- return TRUE;
-}
-
-PIXMAN_EXPORT void
-pixman_f_transform_init_translate (struct pixman_f_transform *t,
- double tx,
- double ty)
-{
- t->m[0][0] = 1;
- t->m[0][1] = 0;
- t->m[0][2] = tx;
- t->m[1][0] = 0;
- t->m[1][1] = 1;
- t->m[1][2] = ty;
- t->m[2][0] = 0;
- t->m[2][1] = 0;
- t->m[2][2] = 1;
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_f_transform_translate (struct pixman_f_transform *forward,
- struct pixman_f_transform *reverse,
- double tx,
- double ty)
-{
- struct pixman_f_transform t;
-
- if (forward)
- {
- pixman_f_transform_init_translate (&t, tx, ty);
- pixman_f_transform_multiply (forward, &t, forward);
- }
-
- if (reverse)
- {
- pixman_f_transform_init_translate (&t, -tx, -ty);
- pixman_f_transform_multiply (reverse, reverse, &t);
- }
-
- return TRUE;
-}
-
-PIXMAN_EXPORT pixman_bool_t
-pixman_f_transform_bounds (const struct pixman_f_transform *t,
- struct pixman_box16 * b)
-{
- struct pixman_f_vector v[4];
- int i;
- int x1, y1, x2, y2;
-
- v[0].v[0] = b->x1;
- v[0].v[1] = b->y1;
- v[0].v[2] = 1;
- v[1].v[0] = b->x2;
- v[1].v[1] = b->y1;
- v[1].v[2] = 1;
- v[2].v[0] = b->x2;
- v[2].v[1] = b->y2;
- v[2].v[2] = 1;
- v[3].v[0] = b->x1;
- v[3].v[1] = b->y2;
- v[3].v[2] = 1;
-
- for (i = 0; i < 4; i++)
- {
- if (!pixman_f_transform_point (t, &v[i]))
- return FALSE;
-
- x1 = floor (v[i].v[0]);
- y1 = floor (v[i].v[1]);
- x2 = ceil (v[i].v[0]);
- y2 = ceil (v[i].v[1]);
-
- if (i == 0)
- {
- b->x1 = x1;
- b->y1 = y1;
- b->x2 = x2;
- b->y2 = y2;
- }
- else
- {
- if (x1 < b->x1) b->x1 = x1;
- if (y1 < b->y1) b->y1 = y1;
- if (x2 > b->x2) b->x2 = x2;
- if (y2 > b->y2) b->y2 = y2;
- }
- }
-
- return TRUE;
-}
-
-PIXMAN_EXPORT void
-pixman_f_transform_init_identity (struct pixman_f_transform *t)
-{
- int i, j;
-
- for (j = 0; j < 3; j++)
- {
- for (i = 0; i < 3; i++)
- t->m[j][i] = i == j ? 1 : 0;
- }
-}
+/*
+ * Copyright © 2008 Keith Packard
+ *
+ * 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 the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no representations
+ * about the suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS 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.
+ */
+
+/*
+ * Matrix interfaces
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <math.h>
+#include <string.h>
+#include "pixman-private.h"
+
+#define F(x) pixman_int_to_fixed (x)
+
+PIXMAN_EXPORT void
+pixman_transform_init_identity (struct pixman_transform *matrix)
+{
+ int i;
+
+ memset (matrix, '\0', sizeof (struct pixman_transform));
+ for (i = 0; i < 3; i++)
+ matrix->matrix[i][i] = F (1);
+}
+
+typedef pixman_fixed_32_32_t pixman_fixed_34_30_t;
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_point_3d (const struct pixman_transform *transform,
+ struct pixman_vector * vector)
+{
+ struct pixman_vector result;
+ pixman_fixed_32_32_t partial;
+ pixman_fixed_48_16_t v;
+ int i, j;
+
+ for (j = 0; j < 3; j++)
+ {
+ v = 0;
+ for (i = 0; i < 3; i++)
+ {
+ partial = ((pixman_fixed_48_16_t) transform->matrix[j][i] *
+ (pixman_fixed_48_16_t) vector->vector[i]);
+ v += partial >> 16;
+ }
+
+ if (v > pixman_max_fixed_48_16 || v < pixman_min_fixed_48_16)
+ return FALSE;
+
+ result.vector[j] = (pixman_fixed_t) v;
+ }
+
+ *vector = result;
+
+ if (!result.vector[2])
+ return FALSE;
+
+ return TRUE;
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_point (const struct pixman_transform *transform,
+ struct pixman_vector * vector)
+{
+ pixman_fixed_32_32_t partial;
+ pixman_fixed_34_30_t v[3];
+ pixman_fixed_48_16_t quo;
+ int i, j;
+
+ for (j = 0; j < 3; j++)
+ {
+ v[j] = 0;
+
+ for (i = 0; i < 3; i++)
+ {
+ partial = ((pixman_fixed_32_32_t) transform->matrix[j][i] *
+ (pixman_fixed_32_32_t) vector->vector[i]);
+ v[j] += partial >> 2;
+ }
+ }
+
+ if (!(v[2] >> 16))
+ return FALSE;
+
+ for (j = 0; j < 2; j++)
+ {
+ quo = v[j] / (v[2] >> 16);
+ if (quo > pixman_max_fixed_48_16 || quo < pixman_min_fixed_48_16)
+ return FALSE;
+ vector->vector[j] = (pixman_fixed_t) quo;
+ }
+
+ vector->vector[2] = pixman_fixed_1;
+ return TRUE;
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_multiply (struct pixman_transform * dst,
+ const struct pixman_transform *l,
+ const struct pixman_transform *r)
+{
+ struct pixman_transform d;
+ int dx, dy;
+ int o;
+
+ for (dy = 0; dy < 3; dy++)
+ {
+ for (dx = 0; dx < 3; dx++)
+ {
+ pixman_fixed_48_16_t v;
+ pixman_fixed_32_32_t partial;
+
+ v = 0;
+ for (o = 0; o < 3; o++)
+ {
+ partial =
+ (pixman_fixed_32_32_t) l->matrix[dy][o] *
+ (pixman_fixed_32_32_t) r->matrix[o][dx];
+
+ v += partial >> 16;
+ }
+
+ if (v > pixman_max_fixed_48_16 || v < pixman_min_fixed_48_16)
+ return FALSE;
+
+ d.matrix[dy][dx] = (pixman_fixed_t) v;
+ }
+ }
+
+ *dst = d;
+ return TRUE;
+}
+
+PIXMAN_EXPORT void
+pixman_transform_init_scale (struct pixman_transform *t,
+ pixman_fixed_t sx,
+ pixman_fixed_t sy)
+{
+ memset (t, '\0', sizeof (struct pixman_transform));
+
+ t->matrix[0][0] = sx;
+ t->matrix[1][1] = sy;
+ t->matrix[2][2] = F (1);
+}
+
+static pixman_fixed_t
+fixed_inverse (pixman_fixed_t x)
+{
+ return (pixman_fixed_t) ((((pixman_fixed_48_16_t) F (1)) * F (1)) / x);
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_scale (struct pixman_transform *forward,
+ struct pixman_transform *reverse,
+ pixman_fixed_t sx,
+ pixman_fixed_t sy)
+{
+ struct pixman_transform t;
+
+ if (sx == 0 || sy == 0)
+ return FALSE;
+
+ if (forward)
+ {
+ pixman_transform_init_scale (&t, sx, sy);
+ if (!pixman_transform_multiply (forward, &t, forward))
+ return FALSE;
+ }
+
+ if (reverse)
+ {
+ pixman_transform_init_scale (&t, fixed_inverse (sx),
+ fixed_inverse (sy));
+ if (!pixman_transform_multiply (reverse, reverse, &t))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+PIXMAN_EXPORT void
+pixman_transform_init_rotate (struct pixman_transform *t,
+ pixman_fixed_t c,
+ pixman_fixed_t s)
+{
+ memset (t, '\0', sizeof (struct pixman_transform));
+
+ t->matrix[0][0] = c;
+ t->matrix[0][1] = -s;
+ t->matrix[1][0] = s;
+ t->matrix[1][1] = c;
+ t->matrix[2][2] = F (1);
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_rotate (struct pixman_transform *forward,
+ struct pixman_transform *reverse,
+ pixman_fixed_t c,
+ pixman_fixed_t s)
+{
+ struct pixman_transform t;
+
+ if (forward)
+ {
+ pixman_transform_init_rotate (&t, c, s);
+ if (!pixman_transform_multiply (forward, &t, forward))
+ return FALSE;
+ }
+
+ if (reverse)
+ {
+ pixman_transform_init_rotate (&t, c, -s);
+ if (!pixman_transform_multiply (reverse, reverse, &t))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+PIXMAN_EXPORT void
+pixman_transform_init_translate (struct pixman_transform *t,
+ pixman_fixed_t tx,
+ pixman_fixed_t ty)
+{
+ memset (t, '\0', sizeof (struct pixman_transform));
+
+ t->matrix[0][0] = F (1);
+ t->matrix[0][2] = tx;
+ t->matrix[1][1] = F (1);
+ t->matrix[1][2] = ty;
+ t->matrix[2][2] = F (1);
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_translate (struct pixman_transform *forward,
+ struct pixman_transform *reverse,
+ pixman_fixed_t tx,
+ pixman_fixed_t ty)
+{
+ struct pixman_transform t;
+
+ if (forward)
+ {
+ pixman_transform_init_translate (&t, tx, ty);
+
+ if (!pixman_transform_multiply (forward, &t, forward))
+ return FALSE;
+ }
+
+ if (reverse)
+ {
+ pixman_transform_init_translate (&t, -tx, -ty);
+
+ if (!pixman_transform_multiply (reverse, reverse, &t))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_bounds (const struct pixman_transform *matrix,
+ struct pixman_box16 * b)
+
+{
+ struct pixman_vector v[4];
+ int i;
+ int x1, y1, x2, y2;
+
+ v[0].vector[0] = F (b->x1);
+ v[0].vector[1] = F (b->y1);
+ v[0].vector[2] = F (1);
+
+ v[1].vector[0] = F (b->x2);
+ v[1].vector[1] = F (b->y1);
+ v[1].vector[2] = F (1);
+
+ v[2].vector[0] = F (b->x2);
+ v[2].vector[1] = F (b->y2);
+ v[2].vector[2] = F (1);
+
+ v[3].vector[0] = F (b->x1);
+ v[3].vector[1] = F (b->y2);
+ v[3].vector[2] = F (1);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (!pixman_transform_point (matrix, &v[i]))
+ return FALSE;
+
+ x1 = pixman_fixed_to_int (v[i].vector[0]);
+ y1 = pixman_fixed_to_int (v[i].vector[1]);
+ x2 = pixman_fixed_to_int (pixman_fixed_ceil (v[i].vector[0]));
+ y2 = pixman_fixed_to_int (pixman_fixed_ceil (v[i].vector[1]));
+
+ if (i == 0)
+ {
+ b->x1 = x1;
+ b->y1 = y1;
+ b->x2 = x2;
+ b->y2 = y2;
+ }
+ else
+ {
+ if (x1 < b->x1) b->x1 = x1;
+ if (y1 < b->y1) b->y1 = y1;
+ if (x2 > b->x2) b->x2 = x2;
+ if (y2 > b->y2) b->y2 = y2;
+ }
+ }
+
+ return TRUE;
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_invert (struct pixman_transform * dst,
+ const struct pixman_transform *src)
+{
+ struct pixman_f_transform m, r;
+
+ pixman_f_transform_from_pixman_transform (&m, src);
+
+ if (!pixman_f_transform_invert (&r, &m))
+ return FALSE;
+
+ if (!pixman_transform_from_pixman_f_transform (dst, &r))
+ return FALSE;
+
+ return TRUE;
+}
+
+static pixman_bool_t
+within_epsilon (pixman_fixed_t a,
+ pixman_fixed_t b,
+ pixman_fixed_t epsilon)
+{
+ pixman_fixed_t t = a - b;
+
+ if (t < 0)
+ t = -t;
+
+ return t <= epsilon;
+}
+
+#define EPSILON (pixman_fixed_t) (2)
+
+#define IS_SAME(a, b) (within_epsilon (a, b, EPSILON))
+#define IS_ZERO(a) (within_epsilon (a, 0, EPSILON))
+#define IS_ONE(a) (within_epsilon (a, F (1), EPSILON))
+#define IS_UNIT(a) \
+ (within_epsilon (a, F (1), EPSILON) || \
+ within_epsilon (a, F (-1), EPSILON) || \
+ IS_ZERO (a))
+#define IS_INT(a) (IS_ZERO (pixman_fixed_frac (a)))
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_is_identity (const struct pixman_transform *t)
+{
+ return (IS_SAME (t->matrix[0][0], t->matrix[1][1]) &&
+ IS_SAME (t->matrix[0][0], t->matrix[2][2]) &&
+ !IS_ZERO (t->matrix[0][0]) &&
+ IS_ZERO (t->matrix[0][1]) &&
+ IS_ZERO (t->matrix[0][2]) &&
+ IS_ZERO (t->matrix[1][0]) &&
+ IS_ZERO (t->matrix[1][2]) &&
+ IS_ZERO (t->matrix[2][0]) &&
+ IS_ZERO (t->matrix[2][1]));
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_is_scale (const struct pixman_transform *t)
+{
+ return (!IS_ZERO (t->matrix[0][0]) &&
+ IS_ZERO (t->matrix[0][1]) &&
+ IS_ZERO (t->matrix[0][2]) &&
+
+ IS_ZERO (t->matrix[1][0]) &&
+ !IS_ZERO (t->matrix[1][1]) &&
+ IS_ZERO (t->matrix[1][2]) &&
+
+ IS_ZERO (t->matrix[2][0]) &&
+ IS_ZERO (t->matrix[2][1]) &&
+ !IS_ZERO (t->matrix[2][2]));
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_is_int_translate (const struct pixman_transform *t)
+{
+ return (IS_ONE (t->matrix[0][0]) &&
+ IS_ZERO (t->matrix[0][1]) &&
+ IS_INT (t->matrix[0][2]) &&
+
+ IS_ZERO (t->matrix[1][0]) &&
+ IS_ONE (t->matrix[1][1]) &&
+ IS_INT (t->matrix[1][2]) &&
+
+ IS_ZERO (t->matrix[2][0]) &&
+ IS_ZERO (t->matrix[2][1]) &&
+ IS_ONE (t->matrix[2][2]));
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_is_inverse (const struct pixman_transform *a,
+ const struct pixman_transform *b)
+{
+ struct pixman_transform t;
+
+ if (!pixman_transform_multiply (&t, a, b))
+ return FALSE;
+
+ return pixman_transform_is_identity (&t);
+}
+
+PIXMAN_EXPORT void
+pixman_f_transform_from_pixman_transform (struct pixman_f_transform * ft,
+ const struct pixman_transform *t)
+{
+ int i, j;
+
+ for (j = 0; j < 3; j++)
+ {
+ for (i = 0; i < 3; i++)
+ ft->m[j][i] = pixman_fixed_to_double (t->matrix[j][i]);
+ }
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_transform_from_pixman_f_transform (struct pixman_transform * t,
+ const struct pixman_f_transform *ft)
+{
+ int i, j;
+
+ for (j = 0; j < 3; j++)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ double d = ft->m[j][i];
+ if (d < -32767.0 || d > 32767.0)
+ return FALSE;
+ d = d * 65536.0 + 0.5;
+ t->matrix[j][i] = (pixman_fixed_t) floor (d);
+ }
+ }
+
+ return TRUE;
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_f_transform_invert (struct pixman_f_transform * dst,
+ const struct pixman_f_transform *src)
+{
+ double det;
+ int i, j;
+ static int a[3] = { 2, 2, 1 };
+ static int b[3] = { 1, 0, 0 };
+
+ det = 0;
+ for (i = 0; i < 3; i++)
+ {
+ double p;
+ int ai = a[i];
+ int bi = b[i];
+ p = src->m[i][0] * (src->m[ai][2] * src->m[bi][1] -
+ src->m[ai][1] * src->m[bi][2]);
+ if (i == 1)
+ p = -p;
+ det += p;
+ }
+
+ if (det == 0)
+ return FALSE;
+
+ det = 1 / det;
+ for (j = 0; j < 3; j++)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ double p;
+ int ai = a[i];
+ int aj = a[j];
+ int bi = b[i];
+ int bj = b[j];
+
+ p = (src->m[ai][aj] * src->m[bi][bj] -
+ src->m[ai][bj] * src->m[bi][aj]);
+
+ if (((i + j) & 1) != 0)
+ p = -p;
+
+ dst->m[j][i] = det * p;
+ }
+ }
+
+ return TRUE;
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_f_transform_point (const struct pixman_f_transform *t,
+ struct pixman_f_vector * v)
+{
+ struct pixman_f_vector result;
+ int i, j;
+ double a;
+
+ for (j = 0; j < 3; j++)
+ {
+ a = 0;
+ for (i = 0; i < 3; i++)
+ a += t->m[j][i] * v->v[i];
+ result.v[j] = a;
+ }
+
+ if (!result.v[2])
+ return FALSE;
+
+ for (j = 0; j < 2; j++)
+ v->v[j] = result.v[j] / result.v[2];
+
+ v->v[2] = 1;
+
+ return TRUE;
+}
+
+PIXMAN_EXPORT void
+pixman_f_transform_point_3d (const struct pixman_f_transform *t,
+ struct pixman_f_vector * v)
+{
+ struct pixman_f_vector result;
+ int i, j;
+ double a;
+
+ for (j = 0; j < 3; j++)
+ {
+ a = 0;
+ for (i = 0; i < 3; i++)
+ a += t->m[j][i] * v->v[i];
+ result.v[j] = a;
+ }
+
+ *v = result;
+}
+
+PIXMAN_EXPORT void
+pixman_f_transform_multiply (struct pixman_f_transform * dst,
+ const struct pixman_f_transform *l,
+ const struct pixman_f_transform *r)
+{
+ struct pixman_f_transform d;
+ int dx, dy;
+ int o;
+
+ for (dy = 0; dy < 3; dy++)
+ {
+ for (dx = 0; dx < 3; dx++)
+ {
+ double v = 0;
+ for (o = 0; o < 3; o++)
+ v += l->m[dy][o] * r->m[o][dx];
+ d.m[dy][dx] = v;
+ }
+ }
+
+ *dst = d;
+}
+
+PIXMAN_EXPORT void
+pixman_f_transform_init_scale (struct pixman_f_transform *t,
+ double sx,
+ double sy)
+{
+ t->m[0][0] = sx;
+ t->m[0][1] = 0;
+ t->m[0][2] = 0;
+ t->m[1][0] = 0;
+ t->m[1][1] = sy;
+ t->m[1][2] = 0;
+ t->m[2][0] = 0;
+ t->m[2][1] = 0;
+ t->m[2][2] = 1;
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_f_transform_scale (struct pixman_f_transform *forward,
+ struct pixman_f_transform *reverse,
+ double sx,
+ double sy)
+{
+ struct pixman_f_transform t;
+
+ if (sx == 0 || sy == 0)
+ return FALSE;
+
+ if (forward)
+ {
+ pixman_f_transform_init_scale (&t, sx, sy);
+ pixman_f_transform_multiply (forward, &t, forward);
+ }
+
+ if (reverse)
+ {
+ pixman_f_transform_init_scale (&t, 1 / sx, 1 / sy);
+ pixman_f_transform_multiply (reverse, reverse, &t);
+ }
+
+ return TRUE;
+}
+
+PIXMAN_EXPORT void
+pixman_f_transform_init_rotate (struct pixman_f_transform *t,
+ double c,
+ double s)
+{
+ t->m[0][0] = c;
+ t->m[0][1] = -s;
+ t->m[0][2] = 0;
+ t->m[1][0] = s;
+ t->m[1][1] = c;
+ t->m[1][2] = 0;
+ t->m[2][0] = 0;
+ t->m[2][1] = 0;
+ t->m[2][2] = 1;
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_f_transform_rotate (struct pixman_f_transform *forward,
+ struct pixman_f_transform *reverse,
+ double c,
+ double s)
+{
+ struct pixman_f_transform t;
+
+ if (forward)
+ {
+ pixman_f_transform_init_rotate (&t, c, s);
+ pixman_f_transform_multiply (forward, &t, forward);
+ }
+
+ if (reverse)
+ {
+ pixman_f_transform_init_rotate (&t, c, -s);
+ pixman_f_transform_multiply (reverse, reverse, &t);
+ }
+
+ return TRUE;
+}
+
+PIXMAN_EXPORT void
+pixman_f_transform_init_translate (struct pixman_f_transform *t,
+ double tx,
+ double ty)
+{
+ t->m[0][0] = 1;
+ t->m[0][1] = 0;
+ t->m[0][2] = tx;
+ t->m[1][0] = 0;
+ t->m[1][1] = 1;
+ t->m[1][2] = ty;
+ t->m[2][0] = 0;
+ t->m[2][1] = 0;
+ t->m[2][2] = 1;
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_f_transform_translate (struct pixman_f_transform *forward,
+ struct pixman_f_transform *reverse,
+ double tx,
+ double ty)
+{
+ struct pixman_f_transform t;
+
+ if (forward)
+ {
+ pixman_f_transform_init_translate (&t, tx, ty);
+ pixman_f_transform_multiply (forward, &t, forward);
+ }
+
+ if (reverse)
+ {
+ pixman_f_transform_init_translate (&t, -tx, -ty);
+ pixman_f_transform_multiply (reverse, reverse, &t);
+ }
+
+ return TRUE;
+}
+
+PIXMAN_EXPORT pixman_bool_t
+pixman_f_transform_bounds (const struct pixman_f_transform *t,
+ struct pixman_box16 * b)
+{
+ struct pixman_f_vector v[4];
+ int i;
+ int x1, y1, x2, y2;
+
+ v[0].v[0] = b->x1;
+ v[0].v[1] = b->y1;
+ v[0].v[2] = 1;
+ v[1].v[0] = b->x2;
+ v[1].v[1] = b->y1;
+ v[1].v[2] = 1;
+ v[2].v[0] = b->x2;
+ v[2].v[1] = b->y2;
+ v[2].v[2] = 1;
+ v[3].v[0] = b->x1;
+ v[3].v[1] = b->y2;
+ v[3].v[2] = 1;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (!pixman_f_transform_point (t, &v[i]))
+ return FALSE;
+
+ x1 = floor (v[i].v[0]);
+ y1 = floor (v[i].v[1]);
+ x2 = ceil (v[i].v[0]);
+ y2 = ceil (v[i].v[1]);
+
+ if (i == 0)
+ {
+ b->x1 = x1;
+ b->y1 = y1;
+ b->x2 = x2;
+ b->y2 = y2;
+ }
+ else
+ {
+ if (x1 < b->x1) b->x1 = x1;
+ if (y1 < b->y1) b->y1 = y1;
+ if (x2 > b->x2) b->x2 = x2;
+ if (y2 > b->y2) b->y2 = y2;
+ }
+ }
+
+ return TRUE;
+}
+
+PIXMAN_EXPORT void
+pixman_f_transform_init_identity (struct pixman_f_transform *t)
+{
+ int i, j;
+
+ for (j = 0; j < 3; j++)
+ {
+ for (i = 0; i < 3; i++)
+ t->m[j][i] = i == j ? 1 : 0;
+ }
+}
diff --git a/pixman/pixman/pixman-timer.c b/pixman/pixman/pixman-timer.c
index f5ae18e89..c45d7b4fa 100644
--- a/pixman/pixman/pixman-timer.c
+++ b/pixman/pixman/pixman-timer.c
@@ -1,66 +1,66 @@
-/*
- * Copyright © 2007 Red Hat, Inc.
- *
- * 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 Red Hat not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. Red Hat makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
- * 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "pixman-private.h"
-
-#ifdef PIXMAN_TIMERS
-
-static pixman_timer_t *timers;
-
-static void
-dump_timers (void)
-{
- pixman_timer_t *timer;
-
- for (timer = timers; timer != NULL; timer = timer->next)
- {
- printf ("%s: total: %llu n: %llu avg: %f\n",
- timer->name,
- timer->total,
- timer->n_times,
- timer->total / (double)timer->n_times);
- }
-}
-
-void
-pixman_timer_register (pixman_timer_t *timer)
-{
- static int initialized;
-
- int atexit (void (*function)(void));
-
- if (!initialized)
- {
- atexit (dump_timers);
- initialized = 1;
- }
-
- timer->next = timers;
- timers = timer;
-}
-
-#endif
+/*
+ * Copyright © 2007 Red Hat, Inc.
+ *
+ * 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 Red Hat not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. Red Hat makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "pixman-private.h"
+
+#ifdef PIXMAN_TIMERS
+
+static pixman_timer_t *timers;
+
+static void
+dump_timers (void)
+{
+ pixman_timer_t *timer;
+
+ for (timer = timers; timer != NULL; timer = timer->next)
+ {
+ printf ("%s: total: %llu n: %llu avg: %f\n",
+ timer->name,
+ timer->total,
+ timer->n_times,
+ timer->total / (double)timer->n_times);
+ }
+}
+
+void
+pixman_timer_register (pixman_timer_t *timer)
+{
+ static int initialized;
+
+ int atexit (void (*function)(void));
+
+ if (!initialized)
+ {
+ atexit (dump_timers);
+ initialized = 1;
+ }
+
+ timer->next = timers;
+ timers = timer;
+}
+
+#endif
diff --git a/pixman/pixman/pixman-version.h.in b/pixman/pixman/pixman-version.h.in
index 256b2e6f1..022bf1a3c 100644
--- a/pixman/pixman/pixman-version.h.in
+++ b/pixman/pixman/pixman-version.h.in
@@ -1,50 +1,50 @@
-/*
- * Copyright © 2008 Red Hat, Inc.
- *
- * 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 AUTHORS OR COPYRIGHT HOLDERS
- * 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.
- *
- * Author: Carl D. Worth <cworth@cworth.org>
- */
-
-#ifndef PIXMAN_VERSION_H__
-#define PIXMAN_VERSION_H__
-
-#ifndef PIXMAN_H__
-# error pixman-version.h should only be included by pixman.h
-#endif
-
-#define PIXMAN_VERSION_MAJOR @PIXMAN_VERSION_MAJOR@
-#define PIXMAN_VERSION_MINOR @PIXMAN_VERSION_MINOR@
-#define PIXMAN_VERSION_MICRO @PIXMAN_VERSION_MICRO@
-
-#define PIXMAN_VERSION_STRING "@PIXMAN_VERSION_MAJOR@.@PIXMAN_VERSION_MINOR@.@PIXMAN_VERSION_MICRO@"
-
-#define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \
- ((major) * 10000) \
- + ((minor) * 100) \
- + ((micro) * 1))
-
-#define PIXMAN_VERSION PIXMAN_VERSION_ENCODE( \
- PIXMAN_VERSION_MAJOR, \
- PIXMAN_VERSION_MINOR, \
- PIXMAN_VERSION_MICRO)
-
-#endif /* PIXMAN_VERSION_H__ */
+/*
+ * Copyright © 2008 Red Hat, Inc.
+ *
+ * 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 AUTHORS OR COPYRIGHT HOLDERS
+ * 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.
+ *
+ * Author: Carl D. Worth <cworth@cworth.org>
+ */
+
+#ifndef PIXMAN_VERSION_H__
+#define PIXMAN_VERSION_H__
+
+#ifndef PIXMAN_H__
+# error pixman-version.h should only be included by pixman.h
+#endif
+
+#define PIXMAN_VERSION_MAJOR @PIXMAN_VERSION_MAJOR@
+#define PIXMAN_VERSION_MINOR @PIXMAN_VERSION_MINOR@
+#define PIXMAN_VERSION_MICRO @PIXMAN_VERSION_MICRO@
+
+#define PIXMAN_VERSION_STRING "@PIXMAN_VERSION_MAJOR@.@PIXMAN_VERSION_MINOR@.@PIXMAN_VERSION_MICRO@"
+
+#define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \
+ ((major) * 10000) \
+ + ((minor) * 100) \
+ + ((micro) * 1))
+
+#define PIXMAN_VERSION PIXMAN_VERSION_ENCODE( \
+ PIXMAN_VERSION_MAJOR, \
+ PIXMAN_VERSION_MINOR, \
+ PIXMAN_VERSION_MICRO)
+
+#endif /* PIXMAN_VERSION_H__ */
diff --git a/pixman/test/fuzzer-find-diff.pl b/pixman/test/fuzzer-find-diff.pl
index a43f6fb83..53d9b8de1 100644
--- a/pixman/test/fuzzer-find-diff.pl
+++ b/pixman/test/fuzzer-find-diff.pl
@@ -1,68 +1,68 @@
-#!/usr/bin/env perl
-
-$usage = "Usage:
- fuzzer-find-diff.pl reference_binary new_binary [number_of_tests_to_run]
-
-The first two input arguments are the commands to run the test programs
-based on fuzzer_test_main() function from 'util.c' (preferably they should
-be statically compiled, this can be achieved via '--disable-shared' pixman
-configure option). The third optional argument is the number of test rounds
-to run (if not specified, then testing runs infinitely or until some problem
-is detected).
-
-Usage examples:
- fuzzer-find-diff.pl ./blitters-test-with-sse-disabled ./blitters-test 9000000
- fuzzer-find-diff.pl ./blitters-test \"ssh ppc64_host /path/to/blitters-test\"
-";
-
-$#ARGV >= 1 or die $usage;
-
-$batch_size = 10000;
-
-if ($#ARGV >= 2) {
- $number_of_tests = int($ARGV[2]);
-} else {
- $number_of_tests = -1
-}
-
-sub test_range {
- my $min = shift;
- my $max = shift;
-
- if (`$ARGV[0] $min $max 2>/dev/null` eq `$ARGV[1] $min $max 2>/dev/null`) {
- return;
- }
-
- while ($max != $min + 1) {
- my $avg = int(($min + $max) / 2);
- my $res1 = `$ARGV[0] $min $avg 2>/dev/null`;
- my $res2 = `$ARGV[1] $min $avg 2>/dev/null`;
- if ($res1 ne $res2) {
- $max = $avg;
- } else {
- $min = $avg;
- }
- }
- return $max;
-}
-
-$base = 1;
-while ($number_of_tests <= 0 || $base <= $number_of_tests) {
- printf("testing %-12d\r", $base + $batch_size - 1);
- my $res = test_range($base, $base + $batch_size - 1);
- if ($res) {
- printf("Failure: results are different for test %d:\n", $res);
-
- printf("\n-- ref --\n");
- print `$ARGV[0] $res`;
- printf("-- new --\n");
- print `$ARGV[1] $res`;
-
- printf("The problematic conditions can be reproduced by running:\n");
- printf("$ARGV[1] %d\n", $res);
-
- exit(1);
- }
- $base += $batch_size;
-}
-printf("Success: %d tests finished\n", $base - 1);
+#!/usr/bin/env perl
+
+$usage = "Usage:
+ fuzzer-find-diff.pl reference_binary new_binary [number_of_tests_to_run]
+
+The first two input arguments are the commands to run the test programs
+based on fuzzer_test_main() function from 'util.c' (preferably they should
+be statically compiled, this can be achieved via '--disable-shared' pixman
+configure option). The third optional argument is the number of test rounds
+to run (if not specified, then testing runs infinitely or until some problem
+is detected).
+
+Usage examples:
+ fuzzer-find-diff.pl ./blitters-test-with-sse-disabled ./blitters-test 9000000
+ fuzzer-find-diff.pl ./blitters-test \"ssh ppc64_host /path/to/blitters-test\"
+";
+
+$#ARGV >= 1 or die $usage;
+
+$batch_size = 10000;
+
+if ($#ARGV >= 2) {
+ $number_of_tests = int($ARGV[2]);
+} else {
+ $number_of_tests = -1
+}
+
+sub test_range {
+ my $min = shift;
+ my $max = shift;
+
+ if (`$ARGV[0] $min $max 2>/dev/null` eq `$ARGV[1] $min $max 2>/dev/null`) {
+ return;
+ }
+
+ while ($max != $min + 1) {
+ my $avg = int(($min + $max) / 2);
+ my $res1 = `$ARGV[0] $min $avg 2>/dev/null`;
+ my $res2 = `$ARGV[1] $min $avg 2>/dev/null`;
+ if ($res1 ne $res2) {
+ $max = $avg;
+ } else {
+ $min = $avg;
+ }
+ }
+ return $max;
+}
+
+$base = 1;
+while ($number_of_tests <= 0 || $base <= $number_of_tests) {
+ printf("testing %-12d\r", $base + $batch_size - 1);
+ my $res = test_range($base, $base + $batch_size - 1);
+ if ($res) {
+ printf("Failure: results are different for test %d:\n", $res);
+
+ printf("\n-- ref --\n");
+ print `$ARGV[0] $res`;
+ printf("-- new --\n");
+ print `$ARGV[1] $res`;
+
+ printf("The problematic conditions can be reproduced by running:\n");
+ printf("$ARGV[1] %d\n", $res);
+
+ exit(1);
+ }
+ $base += $batch_size;
+}
+printf("Success: %d tests finished\n", $base - 1);
diff --git a/pixman/test/region-test.c b/pixman/test/region-test.c
index 9d5a41eb9..a1fc4a837 100644
--- a/pixman/test/region-test.c
+++ b/pixman/test/region-test.c
@@ -1,123 +1,123 @@
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "utils.h"
-
-int
-main ()
-{
- pixman_region32_t r1;
- pixman_region32_t r2;
- pixman_region32_t r3;
- pixman_box32_t boxes[] = {
- { 10, 10, 20, 20 },
- { 30, 30, 30, 40 },
- { 50, 45, 60, 44 },
- };
- pixman_box32_t boxes2[] = {
- { 2, 6, 7, 6 },
- { 4, 1, 6, 7 },
- };
- pixman_box32_t boxes3[] = {
- { 2, 6, 7, 6 },
- { 4, 1, 6, 1 },
- };
- int i, j;
- pixman_box32_t *b;
- pixman_image_t *image, *fill;
- pixman_color_t white = {
- 0xffff,
- 0xffff,
- 0xffff,
- 0xffff
- };
-
- /* This used to go into an infinite loop before pixman-region.c
- * was fixed to not use explict "short" variables
- */
- pixman_region32_init_rect (&r1, 0, 0, 20, 64000);
- pixman_region32_init_rect (&r2, 0, 0, 20, 64000);
- pixman_region32_init_rect (&r3, 0, 0, 20, 64000);
-
- pixman_region32_subtract (&r1, &r2, &r3);
-
-
- /* This would produce a region containing an empty
- * rectangle in it. Such regions are considered malformed,
- * but using an empty rectangle for initialization should
- * work.
- */
- pixman_region32_init_rects (&r1, boxes, 3);
-
- b = pixman_region32_rectangles (&r1, &i);
-
- assert (i == 1);
-
- while (i--)
- {
- assert (b[i].x1 < b[i].x2);
- assert (b[i].y1 < b[i].y2);
- }
-
- /* This would produce a rectangle containing the bounding box
- * of the two rectangles. The correct result is to eliminate
- * the broken rectangle.
- */
- pixman_region32_init_rects (&r1, boxes2, 2);
-
- b = pixman_region32_rectangles (&r1, &i);
-
- assert (i == 1);
-
- assert (b[0].x1 == 4);
- assert (b[0].y1 == 1);
- assert (b[0].x2 == 6);
- assert (b[0].y2 == 7);
-
- /* This should produce an empty region */
- pixman_region32_init_rects (&r1, boxes3, 2);
-
- b = pixman_region32_rectangles (&r1, &i);
-
- assert (i == 0);
-
- fill = pixman_image_create_solid_fill (&white);
- for (i = 0; i < 100; i++)
- {
- int image_size = 128;
-
- pixman_region32_init (&r1);
-
- /* Add some random rectangles */
- for (j = 0; j < 64; j++)
- pixman_region32_union_rect (&r1, &r1,
- lcg_rand_n (image_size),
- lcg_rand_n (image_size),
- lcg_rand_n (25),
- lcg_rand_n (25));
-
- /* Clip to image size */
- pixman_region32_init_rect (&r2, 0, 0, image_size, image_size);
- pixman_region32_intersect (&r1, &r1, &r2);
- pixman_region32_fini (&r2);
-
- /* render region to a1 mask */
- image = pixman_image_create_bits (PIXMAN_a1, image_size, image_size, NULL, 0);
- pixman_image_set_clip_region32 (image, &r1);
- pixman_image_composite32 (PIXMAN_OP_SRC,
- fill, NULL, image,
- 0, 0, 0, 0, 0, 0,
- image_size, image_size);
- pixman_region32_init_from_image (&r2, image);
-
- pixman_image_unref (image);
-
- assert (pixman_region32_equal (&r1, &r2));
- pixman_region32_fini (&r1);
- pixman_region32_fini (&r2);
-
- }
- pixman_image_unref (fill);
-
- return 0;
-}
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "utils.h"
+
+int
+main ()
+{
+ pixman_region32_t r1;
+ pixman_region32_t r2;
+ pixman_region32_t r3;
+ pixman_box32_t boxes[] = {
+ { 10, 10, 20, 20 },
+ { 30, 30, 30, 40 },
+ { 50, 45, 60, 44 },
+ };
+ pixman_box32_t boxes2[] = {
+ { 2, 6, 7, 6 },
+ { 4, 1, 6, 7 },
+ };
+ pixman_box32_t boxes3[] = {
+ { 2, 6, 7, 6 },
+ { 4, 1, 6, 1 },
+ };
+ int i, j;
+ pixman_box32_t *b;
+ pixman_image_t *image, *fill;
+ pixman_color_t white = {
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff
+ };
+
+ /* This used to go into an infinite loop before pixman-region.c
+ * was fixed to not use explict "short" variables
+ */
+ pixman_region32_init_rect (&r1, 0, 0, 20, 64000);
+ pixman_region32_init_rect (&r2, 0, 0, 20, 64000);
+ pixman_region32_init_rect (&r3, 0, 0, 20, 64000);
+
+ pixman_region32_subtract (&r1, &r2, &r3);
+
+
+ /* This would produce a region containing an empty
+ * rectangle in it. Such regions are considered malformed,
+ * but using an empty rectangle for initialization should
+ * work.
+ */
+ pixman_region32_init_rects (&r1, boxes, 3);
+
+ b = pixman_region32_rectangles (&r1, &i);
+
+ assert (i == 1);
+
+ while (i--)
+ {
+ assert (b[i].x1 < b[i].x2);
+ assert (b[i].y1 < b[i].y2);
+ }
+
+ /* This would produce a rectangle containing the bounding box
+ * of the two rectangles. The correct result is to eliminate
+ * the broken rectangle.
+ */
+ pixman_region32_init_rects (&r1, boxes2, 2);
+
+ b = pixman_region32_rectangles (&r1, &i);
+
+ assert (i == 1);
+
+ assert (b[0].x1 == 4);
+ assert (b[0].y1 == 1);
+ assert (b[0].x2 == 6);
+ assert (b[0].y2 == 7);
+
+ /* This should produce an empty region */
+ pixman_region32_init_rects (&r1, boxes3, 2);
+
+ b = pixman_region32_rectangles (&r1, &i);
+
+ assert (i == 0);
+
+ fill = pixman_image_create_solid_fill (&white);
+ for (i = 0; i < 100; i++)
+ {
+ int image_size = 128;
+
+ pixman_region32_init (&r1);
+
+ /* Add some random rectangles */
+ for (j = 0; j < 64; j++)
+ pixman_region32_union_rect (&r1, &r1,
+ lcg_rand_n (image_size),
+ lcg_rand_n (image_size),
+ lcg_rand_n (25),
+ lcg_rand_n (25));
+
+ /* Clip to image size */
+ pixman_region32_init_rect (&r2, 0, 0, image_size, image_size);
+ pixman_region32_intersect (&r1, &r1, &r2);
+ pixman_region32_fini (&r2);
+
+ /* render region to a1 mask */
+ image = pixman_image_create_bits (PIXMAN_a1, image_size, image_size, NULL, 0);
+ pixman_image_set_clip_region32 (image, &r1);
+ pixman_image_composite32 (PIXMAN_OP_SRC,
+ fill, NULL, image,
+ 0, 0, 0, 0, 0, 0,
+ image_size, image_size);
+ pixman_region32_init_from_image (&r2, image);
+
+ pixman_image_unref (image);
+
+ assert (pixman_region32_equal (&r1, &r2));
+ pixman_region32_fini (&r1);
+ pixman_region32_fini (&r2);
+
+ }
+ pixman_image_unref (fill);
+
+ return 0;
+}
diff --git a/sync.bat b/sync.bat
new file mode 100644
index 000000000..dbb530086
--- /dev/null
+++ b/sync.bat
@@ -0,0 +1,21 @@
+synchronise xserver ..\released\xorg-server --skip-dir=fonts.src --skip-dir=bitmaps --skip-dir=xkeyboard-config
+synchronise libxcb ..\released\libxcb
+synchronise xkeyboard-config ..\released\xorg-server\xkeyboard-config
+synchronise libX11 ..\released\libX11
+synchronise libXdmcp ..\released\libXdmcp
+synchronise libXext ..\released\libXext
+synchronise libfontenc ..\released\libfontenc
+synchronise libXinerama ..\released\libXinerama
+synchronise libXau ..\released\libXau
+synchronise xkbcomp ..\released\xkbcomp
+synchronise pixman ..\released\pixman
+synchronise xextproto ..\released\X11\extensions --skip-dir=specs --skip-file=COPYING --skip-file=docbook.am --skip-file=autogen.sh --skip-file=configure.ac --skip-file=Makefile.am --skip-file=README --skip-file=.gitignore
+synchronise randrproto ..\released\X11\extensions --skip-file=autogen.sh --skip-file=configure.ac --skip-file=COPYING --skip-file=Makefile.am --skip-file=README --skip-file=.gitignore
+synchronise glproto ..\released\gl
+synchronise mkfontscale ..\released\mkfontscale
+synchronise xwininfo ..\released\apps\xwininfo
+synchronise fontconfig ..\released\fontconfig
+synchronise libXft ..\released\libXft
+synchronise libXmu ..\released\libXmu
+synchronise libxtrans ..\released\X11\xtrans
+synchronise mesa ..\released\mesalib --skip-dir=tests --skip-dir=gtest --skip-dir=x86-64 --skip-dir=tnl_dd --skip-dir=sparc --skip-dir=tools --skip-dir=libdricore --skip-dir=x11 --skip-dir=osmesa --skip-dir=radeon --skip-dir=r200 --skip-dir=nouveau --skip-dir=intel --skip-dir=i965 --skip-dir=i915 --skip-dir=vgapi --skip-dir=shared-glapi --skip-dir=es1api --skip-dir=es2api --skip-dir=gtest --skip-dir=glx --skip-dir=builtins --skip-dir=vl --skip-dir=gallium\docs --skip-dir=gallium\drivers --skip-dir=gallium\include --skip-dir=gallium\state_trackers --skip-dir=gallium\targets --skip-dir=gallium\winsys --skip-dir=gbm --skip-dir=getopt --skip-dir=egl --skip-dir=cso_cache --skip-dir=target-helpers --skip-dir=tgsi --skip-dir=translate --skip-dir=rtasm --skip-dir=pipebuffer --skip-dir=postprocess --skip-dir=rbug --skip-dir=pipe-loader --skip-dir=os --skip-dir=indices --skip-dir=gallivm --skip-dir=draw --skip-dir=pci_ids --skip-dir=doxygen --skip-dir=OLD --skip-dir=CL --skip-dir=c99
diff --git a/synchronise.py b/synchronise.py
new file mode 100644
index 000000000..305583bd8
--- /dev/null
+++ b/synchronise.py
@@ -0,0 +1,231 @@
+import os,sys,shutil,re,stat
+
+from optparse import OptionParser
+
+usage = "usage: %prog [options] <SrcDir> <DestDir>"
+parser = OptionParser(usage=usage)
+parser.add_option("-n", "--donothing", action='store_true', dest="DoNothing", default=False, help="Do not copy the files.")
+parser.add_option("", "--extension", action='store', dest="Extension", default=None, help="Copy only files with this extension.")
+parser.add_option("-y", "--ask", action='store_true', dest="Ask", default=False, help="Ask confirmation to copy.")
+parser.add_option("-a", "--ask-file", action='append', dest="FilesToConfirm", default=[], help="Ask confirmation to copy for this speicific file (only useful if -y is not used).")
+parser.add_option("-d", "--delete-file_re", dest="FilesToDeleteRe", default="", help="Regular expression of files to delete.")
+parser.add_option("-s", "--no-skip-svn", dest="NoSkipSvn", action='store_true', default=False, help="Do not Skip .svn directories.")
+parser.add_option("-g", "--no-skip-git", dest="NoSkipGit", action='store_true', default=False, help="Do not Skip .git directories.")
+parser.add_option("-e", "--del-exist-only-dest", dest="DelExistOnlyDest", action='store_true', default=False, help="Delete files that exist only in the destination directory.")
+parser.add_option( "" , "--skip-dir", dest="SkipDirs", action='append', default=[], help="Adds a directory name to skip.")
+parser.add_option( "" , "--skip-file", dest="SkipFiles", action='append', default=[], help="Adds a file name to skip.")
+
+(g_Options, g_Args) = parser.parse_args()
+
+if g_Options.FilesToDeleteRe:
+ try:
+ g_FilesToDelete=re.compile(g_Options.FilesToDeleteRe,re.I)
+ except:
+ print 'Wrong regular expression:',g_Options.FilesToDeleteRe
+ sys.exit(1)
+else:
+ g_FilesToDelete=None
+
+if len(g_Args)!=2:
+ parser.error("Wrong number of arguments: "+repr(g_Args))
+ sys.exit(1)
+
+g_FilesToConfirm={}
+for File in g_Options.FilesToConfirm:
+ g_FilesToConfirm[File]=1
+
+g_DirsToSkip={}
+for Dir in g_Options.SkipDirs:
+ g_DirsToSkip[Dir]=1
+
+g_FilesToSkip={}
+for File in g_Options.SkipFiles:
+ g_FilesToSkip[File]=1
+
+g_Ask=g_Options.Ask
+g_DoNothing=g_Options.DoNothing
+g_NoSkipSvn=g_Options.NoSkipSvn
+g_NoSkipGit=g_Options.NoSkipGit
+
+g_WriteMask=stat.S_IWUSR|stat.S_IWGRP|stat.S_IWOTH
+
+SrcDir=g_Args[0]
+DestDir=g_Args[1]
+
+if g_Options.Extension:
+ g_Extre=re.compile('.*\.%s$'%g_Options.Extension,re.I)
+else:
+ g_Extre=None
+
+###############################################################################
+def SkipDir(SrcDir,File):
+ Ret = g_DirsToSkip.has_key(File)
+ if SrcDir[1]==':':
+ SrcDir=SrcDir[3:]
+ while not Ret and SrcDir:
+ SrcDir,Part=os.path.split(SrcDir)
+ File=os.path.join(Part,File)
+ Ret = g_DirsToSkip.has_key(File)
+ return Ret
+
+###############################################################################
+def DeleteFiles(SrcFile,DestFile):
+ print 'Deleting %s'%(SrcFile)
+ os.remove(SrcFile)
+ print 'Deleting %s'%(DestFile)
+ try:
+ os.remove(DestFile)
+ except:
+ print DestFile,'does not exist'
+
+###############################################################################
+#characters=['|','/','-','\\']
+#chariter=iter(characters)
+#def PrintBusy():
+# global characters
+# global chariter
+#
+# try:
+# char=chariter.next()
+# except StopIteration:
+# chariter=iter(characters)
+# char=chariter.next()
+#
+# sys.stdout.write(char)
+# sys.stdout.write(chr(8))
+count=0
+def PrintBusy():
+ global count
+ count+=1
+ item=str(count)
+ sys.stdout.write(item)
+ sys.stdout.write(chr(8)*len(item))
+###############################################################################
+
+if not os.path.isdir(DestDir):
+ print DestDir,"is not a directory"
+ sys.exit(1)
+
+def FileDiff(SrcFile,DestFile):
+ try:
+ Src=open(SrcFile,'rb')
+ Dest=open(DestFile,'rb')
+ while 1:
+ SrcLine=Src.read(4096)
+ DestLine=Dest.read(4096)
+ if SrcLine!=DestLine:
+ return 1
+ if not SrcLine:
+ return 0
+ except Exception,Object:
+ #print "Exception occured"
+ #print Object
+ return 1
+
+g_Dot=0
+def SynchroniseDir(SrcDir,DestDir):
+ global g_Dot
+ SrcFiles=os.listdir(SrcDir)
+ if g_Options.DelExistOnlyDest:
+ DstFiles=os.listdir(DestDir)
+ for File in DstFiles:
+ DestFile=os.path.join(DestDir,File)
+ try:
+ Index=SrcFiles.index(File)
+ except ValueError:
+ if os.path.isdir(DestFile):
+ if not g_NoSkipSvn and File=='.svn':
+ continue # Skip svn administration dirs
+ if not g_NoSkipGit and File=='.git':
+ continue # Skip svn administration dirs
+ if SkipDir(SrcDir,File):
+ continue
+ print 'Deleting directory',DestFile
+ shutil.rmtree(DestFile)
+ else:
+ if g_FilesToSkip.has_key(File):
+ continue
+ print 'Deleting file',DestFile
+ os.remove(DestFile)
+
+ for File in SrcFiles:
+ SrcFile=os.path.join(SrcDir,File)
+ DestFile=os.path.join(DestDir,File)
+ if os.path.isdir(SrcFile):
+ if not g_NoSkipSvn and File=='.svn':
+ continue # Skip svn administration dirs
+ if not g_NoSkipGit and File=='.git':
+ continue # Skip svn administration dirs
+ if SkipDir(SrcDir,File):
+ continue
+ if not os.path.isdir(DestFile):
+ if g_Dot:
+ sys.stdout.write('\n')
+ g_Dot=0
+ if not g_DoNothing:
+ if g_Ask:
+ sys.stdout.write("Create directory %s? (y/n)"%DestFile)
+ if sys.stdin.read(1)=='y':
+ print "Creating dir",DestFile
+ os.mkdir(DestFile)
+ sys.stdin.read(1)
+ else:
+ print "Creating dir",DestFile
+ os.mkdir(DestFile)
+ else:
+ print "Creating dir",DestFile
+ SynchroniseDir(SrcFile,DestFile)
+ else:
+ if g_Extre and not g_Extre.search(File):
+ continue
+ if g_FilesToSkip.has_key(File):
+ continue
+ if g_FilesToDelete:
+ if g_FilesToDelete.search(File):
+ if g_Dot:
+ sys.stdout.write('\n')
+ g_Dot=0
+ DeleteFiles(SrcFile,DestFile)
+ continue
+ if FileDiff(SrcFile,DestFile):
+ #if os.system('fc /b "%s" "%s" >& nul'%(SrcFile,DestFile)):
+ if g_Dot:
+ sys.stdout.write('\n')
+ g_Dot=0
+ if not g_DoNothing:
+ if g_Ask or g_FilesToConfirm.has_key(File):
+ sys.stdout.write("Copy/Merge %s to %s? (y/n/m/d)"%(SrcFile,DestFile))
+ R=sys.stdin.read(1)
+ if R=='y':
+ print '%s -> %s'%(SrcFile,DestFile)
+ shutil.copyfile(SrcFile,DestFile)
+ elif R=='m':
+ print '%s -> %s'%(SrcFile,DestFile)
+ os.system('fcg "%s" "%s"'%(SrcFile,DestFile))
+ elif R=='d':
+ DeleteFiles(SrcFile,DestFile)
+ sys.stdin.read(1)
+ else:
+ print '%s -> %s'%(SrcFile,DestFile)
+ # check if the file is read-only
+ try:
+ Mode=os.stat(DestFile).st_mode
+ except OSError:
+ Mode=g_WriteMask
+ if not g_WriteMask&Mode:
+ ReadOnly=True
+ os.chmod(DestFile,Mode|g_WriteMask)
+ else:
+ ReadOnly=False
+ shutil.copyfile(SrcFile,DestFile)
+ if ReadOnly:
+ os.chmod(DestFile,Mode & (~g_WriteMask) )
+
+ else:
+ print '%s -> %s'%(SrcFile,DestFile)
+ else:
+ PrintBusy()
+ g_Dot=1
+
+SynchroniseDir(SrcDir,DestDir)
+sys.stdout.write("\n")
diff --git a/xkbcomp/.gitignore b/xkbcomp/.gitignore
new file mode 100644
index 000000000..4b418d2a8
--- /dev/null
+++ b/xkbcomp/.gitignore
@@ -0,0 +1,80 @@
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for xkbcomp
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
+xkbcomp
+xkbparse.c
diff --git a/xkbcomp/COPYING b/xkbcomp/COPYING
index fc22e80e8..867c4723c 100644
--- a/xkbcomp/COPYING
+++ b/xkbcomp/COPYING
@@ -1,90 +1,90 @@
-Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
-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 of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS 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.
-
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1988 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-
- COPYRIGHT 1990
- DIGITAL EQUIPMENT CORPORATION
- MAYNARD, MASSACHUSETTS
- ALL RIGHTS RESERVED.
-
-THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
-SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
-DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
-FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
-WARRANTY.
-
-IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
-RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
-ADDITION TO THAT SET FORTH ABOVE.
-
-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 of Digital Equipment Corporation not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
+Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+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 of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS 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.
+
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1988 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+
+ COPYRIGHT 1990
+ DIGITAL EQUIPMENT CORPORATION
+ MAYNARD, MASSACHUSETTS
+ ALL RIGHTS RESERVED.
+
+THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
+SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
+DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
+FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
+WARRANTY.
+
+IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
+RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
+ADDITION TO THAT SET FORTH ABOVE.
+
+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 of Digital Equipment Corporation not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
diff --git a/xkbcomp/README b/xkbcomp/README
index 0958525c6..4f7943628 100644
--- a/xkbcomp/README
+++ b/xkbcomp/README
@@ -1,20 +1,20 @@
-X Keyboard Extension
---------------------
-
-The X Keyboard Extension essentially replaces the core protocol definition of
-keyboard. The extension makes possible to clearly and explicitly specify most
-aspects of keyboard behaviour on per-key basis and to more closely track the
-logical and physical state of the keyboard. It also includes a number of
-keyboard controls designed to make keyboards more accessible to people with
-physical impairments.
-
-There are five types of components in the server database corresponing to five
-xkb symbolic names: symbols, geometry, keycodes, compat and types which
-determine the keyboard behaviour. These five components can combined together
-into a resulting keyboard mapping using the 'rules' component.
-
-More information, including the complete specification, can be found on
-http://www.x.org/wiki/XKB
-
-
-
+X Keyboard Extension
+--------------------
+
+The X Keyboard Extension essentially replaces the core protocol definition of
+keyboard. The extension makes possible to clearly and explicitly specify most
+aspects of keyboard behaviour on per-key basis and to more closely track the
+logical and physical state of the keyboard. It also includes a number of
+keyboard controls designed to make keyboards more accessible to people with
+physical impairments.
+
+There are five types of components in the server database corresponing to five
+xkb symbolic names: symbols, geometry, keycodes, compat and types which
+determine the keyboard behaviour. These five components can combined together
+into a resulting keyboard mapping using the 'rules' component.
+
+More information, including the complete specification, can be found on
+http://www.x.org/wiki/XKB
+
+
+
diff --git a/xkbcomp/action.c b/xkbcomp/action.c
index 3b82e647e..fe022187c 100644
--- a/xkbcomp/action.c
+++ b/xkbcomp/action.c
@@ -1,1468 +1,1468 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "tokens.h"
-#include "expr.h"
-
-#include "keycodes.h"
-#include "vmod.h"
-#include "misc.h"
-#include "action.h"
-#include "misc.h"
-
-static Bool actionsInitialized;
-static ExprDef constTrue;
-static ExprDef constFalse;
-
-/***====================================================================***/
-
-static Bool
-stringToAction(char *str, unsigned *type_rtrn)
-{
- if (str == NULL)
- return False;
-
- if (uStrCaseCmp(str, "noaction") == 0)
- *type_rtrn = XkbSA_NoAction;
- else if (uStrCaseCmp(str, "setmods") == 0)
- *type_rtrn = XkbSA_SetMods;
- else if (uStrCaseCmp(str, "latchmods") == 0)
- *type_rtrn = XkbSA_LatchMods;
- else if (uStrCaseCmp(str, "lockmods") == 0)
- *type_rtrn = XkbSA_LockMods;
- else if (uStrCaseCmp(str, "setgroup") == 0)
- *type_rtrn = XkbSA_SetGroup;
- else if (uStrCaseCmp(str, "latchgroup") == 0)
- *type_rtrn = XkbSA_LatchGroup;
- else if (uStrCaseCmp(str, "lockgroup") == 0)
- *type_rtrn = XkbSA_LockGroup;
- else if (uStrCaseCmp(str, "moveptr") == 0)
- *type_rtrn = XkbSA_MovePtr;
- else if (uStrCaseCmp(str, "movepointer") == 0)
- *type_rtrn = XkbSA_MovePtr;
- else if (uStrCaseCmp(str, "ptrbtn") == 0)
- *type_rtrn = XkbSA_PtrBtn;
- else if (uStrCaseCmp(str, "pointerbutton") == 0)
- *type_rtrn = XkbSA_PtrBtn;
- else if (uStrCaseCmp(str, "lockptrbtn") == 0)
- *type_rtrn = XkbSA_LockPtrBtn;
- else if (uStrCaseCmp(str, "lockpointerbutton") == 0)
- *type_rtrn = XkbSA_LockPtrBtn;
- else if (uStrCaseCmp(str, "lockptrbutton") == 0)
- *type_rtrn = XkbSA_LockPtrBtn;
- else if (uStrCaseCmp(str, "lockpointerbtn") == 0)
- *type_rtrn = XkbSA_LockPtrBtn;
- else if (uStrCaseCmp(str, "setptrdflt") == 0)
- *type_rtrn = XkbSA_SetPtrDflt;
- else if (uStrCaseCmp(str, "setpointerdefault") == 0)
- *type_rtrn = XkbSA_SetPtrDflt;
- else if (uStrCaseCmp(str, "isolock") == 0)
- *type_rtrn = XkbSA_ISOLock;
- else if (uStrCaseCmp(str, "terminate") == 0)
- *type_rtrn = XkbSA_Terminate;
- else if (uStrCaseCmp(str, "terminateserver") == 0)
- *type_rtrn = XkbSA_Terminate;
- else if (uStrCaseCmp(str, "switchscreen") == 0)
- *type_rtrn = XkbSA_SwitchScreen;
- else if (uStrCaseCmp(str, "setcontrols") == 0)
- *type_rtrn = XkbSA_SetControls;
- else if (uStrCaseCmp(str, "lockcontrols") == 0)
- *type_rtrn = XkbSA_LockControls;
- else if (uStrCaseCmp(str, "actionmessage") == 0)
- *type_rtrn = XkbSA_ActionMessage;
- else if (uStrCaseCmp(str, "messageaction") == 0)
- *type_rtrn = XkbSA_ActionMessage;
- else if (uStrCaseCmp(str, "message") == 0)
- *type_rtrn = XkbSA_ActionMessage;
- else if (uStrCaseCmp(str, "redirect") == 0)
- *type_rtrn = XkbSA_RedirectKey;
- else if (uStrCaseCmp(str, "redirectkey") == 0)
- *type_rtrn = XkbSA_RedirectKey;
- else if (uStrCaseCmp(str, "devbtn") == 0)
- *type_rtrn = XkbSA_DeviceBtn;
- else if (uStrCaseCmp(str, "devicebtn") == 0)
- *type_rtrn = XkbSA_DeviceBtn;
- else if (uStrCaseCmp(str, "devbutton") == 0)
- *type_rtrn = XkbSA_DeviceBtn;
- else if (uStrCaseCmp(str, "devicebutton") == 0)
- *type_rtrn = XkbSA_DeviceBtn;
- else if (uStrCaseCmp(str, "lockdevbtn") == 0)
- *type_rtrn = XkbSA_DeviceBtn;
- else if (uStrCaseCmp(str, "lockdevicebtn") == 0)
- *type_rtrn = XkbSA_LockDeviceBtn;
- else if (uStrCaseCmp(str, "lockdevbutton") == 0)
- *type_rtrn = XkbSA_LockDeviceBtn;
- else if (uStrCaseCmp(str, "lockdevicebutton") == 0)
- *type_rtrn = XkbSA_LockDeviceBtn;
- else if (uStrCaseCmp(str, "devval") == 0)
- *type_rtrn = XkbSA_DeviceValuator;
- else if (uStrCaseCmp(str, "deviceval") == 0)
- *type_rtrn = XkbSA_DeviceValuator;
- else if (uStrCaseCmp(str, "devvaluator") == 0)
- *type_rtrn = XkbSA_DeviceValuator;
- else if (uStrCaseCmp(str, "devicevaluator") == 0)
- *type_rtrn = XkbSA_DeviceValuator;
- else if (uStrCaseCmp(str, "private") == 0)
- *type_rtrn = PrivateAction;
- else
- return False;
- return True;
-}
-
-static Bool
-stringToField(char *str, unsigned *field_rtrn)
-{
-
- if (str == NULL)
- return False;
-
- if (uStrCaseCmp(str, "clearlocks") == 0)
- *field_rtrn = F_ClearLocks;
- else if (uStrCaseCmp(str, "latchtolock") == 0)
- *field_rtrn = F_LatchToLock;
- else if (uStrCaseCmp(str, "genkeyevent") == 0)
- *field_rtrn = F_GenKeyEvent;
- else if (uStrCaseCmp(str, "generatekeyevent") == 0)
- *field_rtrn = F_GenKeyEvent;
- else if (uStrCaseCmp(str, "report") == 0)
- *field_rtrn = F_Report;
- else if (uStrCaseCmp(str, "default") == 0)
- *field_rtrn = F_Default;
- else if (uStrCaseCmp(str, "affect") == 0)
- *field_rtrn = F_Affect;
- else if (uStrCaseCmp(str, "increment") == 0)
- *field_rtrn = F_Increment;
- else if (uStrCaseCmp(str, "mods") == 0)
- *field_rtrn = F_Modifiers;
- else if (uStrCaseCmp(str, "modifiers") == 0)
- *field_rtrn = F_Modifiers;
- else if (uStrCaseCmp(str, "group") == 0)
- *field_rtrn = F_Group;
- else if (uStrCaseCmp(str, "x") == 0)
- *field_rtrn = F_X;
- else if (uStrCaseCmp(str, "y") == 0)
- *field_rtrn = F_Y;
- else if (uStrCaseCmp(str, "accel") == 0)
- *field_rtrn = F_Accel;
- else if (uStrCaseCmp(str, "accelerate") == 0)
- *field_rtrn = F_Accel;
- else if (uStrCaseCmp(str, "repeat") == 0)
- *field_rtrn = F_Accel;
- else if (uStrCaseCmp(str, "button") == 0)
- *field_rtrn = F_Button;
- else if (uStrCaseCmp(str, "value") == 0)
- *field_rtrn = F_Value;
- else if (uStrCaseCmp(str, "controls") == 0)
- *field_rtrn = F_Controls;
- else if (uStrCaseCmp(str, "ctrls") == 0)
- *field_rtrn = F_Controls;
- else if (uStrCaseCmp(str, "type") == 0)
- *field_rtrn = F_Type;
- else if (uStrCaseCmp(str, "count") == 0)
- *field_rtrn = F_Count;
- else if (uStrCaseCmp(str, "screen") == 0)
- *field_rtrn = F_Screen;
- else if (uStrCaseCmp(str, "same") == 0)
- *field_rtrn = F_Same;
- else if (uStrCaseCmp(str, "sameserver") == 0)
- *field_rtrn = F_Same;
- else if (uStrCaseCmp(str, "data") == 0)
- *field_rtrn = F_Data;
- else if (uStrCaseCmp(str, "device") == 0)
- *field_rtrn = F_Device;
- else if (uStrCaseCmp(str, "dev") == 0)
- *field_rtrn = F_Device;
- else if (uStrCaseCmp(str, "key") == 0)
- *field_rtrn = F_Keycode;
- else if (uStrCaseCmp(str, "keycode") == 0)
- *field_rtrn = F_Keycode;
- else if (uStrCaseCmp(str, "kc") == 0)
- *field_rtrn = F_Keycode;
- else if (uStrCaseCmp(str, "clearmods") == 0)
- *field_rtrn = F_ModsToClear;
- else if (uStrCaseCmp(str, "clearmodifiers") == 0)
- *field_rtrn = F_ModsToClear;
- else
- return False;
- return True;
-}
-
-static char *
-fieldText(unsigned field)
-{
- static char buf[32];
-
- switch (field)
- {
- case F_ClearLocks:
- strcpy(buf, "clearLocks");
- break;
- case F_LatchToLock:
- strcpy(buf, "latchToLock");
- break;
- case F_GenKeyEvent:
- strcpy(buf, "genKeyEvent");
- break;
- case F_Report:
- strcpy(buf, "report");
- break;
- case F_Default:
- strcpy(buf, "default");
- break;
- case F_Affect:
- strcpy(buf, "affect");
- break;
- case F_Increment:
- strcpy(buf, "increment");
- break;
- case F_Modifiers:
- strcpy(buf, "modifiers");
- break;
- case F_Group:
- strcpy(buf, "group");
- break;
- case F_X:
- strcpy(buf, "x");
- break;
- case F_Y:
- strcpy(buf, "y");
- break;
- case F_Accel:
- strcpy(buf, "accel");
- break;
- case F_Button:
- strcpy(buf, "button");
- break;
- case F_Value:
- strcpy(buf, "value");
- break;
- case F_Controls:
- strcpy(buf, "controls");
- break;
- case F_Type:
- strcpy(buf, "type");
- break;
- case F_Count:
- strcpy(buf, "count");
- break;
- case F_Screen:
- strcpy(buf, "screen");
- break;
- case F_Same:
- strcpy(buf, "sameServer");
- break;
- case F_Data:
- strcpy(buf, "data");
- break;
- case F_Device:
- strcpy(buf, "device");
- break;
- case F_Keycode:
- strcpy(buf, "keycode");
- break;
- case F_ModsToClear:
- strcpy(buf, "clearmods");
- break;
- default:
- strcpy(buf, "unknown");
- break;
- }
- return buf;
-}
-
-/***====================================================================***/
-
-static Bool
-ReportMismatch(unsigned action, unsigned field, const char *type)
-{
- ERROR2("Value of %s field must be of type %s\n", fieldText(field), type);
- ACTION1("Action %s definition ignored\n",
- XkbActionTypeText(action, XkbMessage));
- return False;
-}
-
-static Bool
-ReportIllegal(unsigned action, unsigned field)
-{
- ERROR2("Field %s is not defined for an action of type %s\n",
- fieldText(field), XkbActionTypeText(action, XkbMessage));
- ACTION("Action definition ignored\n");
- return False;
-}
-
-static Bool
-ReportActionNotArray(unsigned action, unsigned field)
-{
- ERROR2("The %s field in the %s action is not an array\n",
- fieldText(field), XkbActionTypeText(action, XkbMessage));
- ACTION("Action definition ignored\n");
- return False;
-}
-
-static Bool
-ReportNotFound(unsigned action, unsigned field, const char *what, char *bad)
-{
- ERROR2("%s named %s not found\n", what, bad);
- ACTION2("Ignoring the %s field of an %s action\n", fieldText(field),
- XkbActionTypeText(action, XkbMessage));
- return False;
-}
-
-static Bool
-HandleNoAction(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-CheckLatchLockFlags(unsigned action,
- unsigned field, ExprDef * value, unsigned *flags_inout)
-{
- unsigned tmp;
- ExprResult result;
-
- if (field == F_ClearLocks)
- tmp = XkbSA_ClearLocks;
- else if (field == F_LatchToLock)
- tmp = XkbSA_LatchToLock;
- else
- return False; /* WSGO! */
- if (!ExprResolveBoolean(value, &result, NULL, NULL))
- return ReportMismatch(action, field, "boolean");
- if (result.uval)
- *flags_inout |= tmp;
- else
- *flags_inout &= ~tmp;
- return True;
-}
-
-static Bool
-CheckModifierField(XkbDescPtr xkb,
- unsigned action,
- ExprDef * value,
- unsigned *flags_inout, unsigned *mods_rtrn)
-{
- ExprResult rtrn;
-
- if (value->op == ExprIdent)
- {
- register char *valStr;
- valStr = XkbAtomGetString(NULL, value->value.str);
- if (valStr && ((uStrCaseCmp(valStr, "usemodmapmods") == 0) ||
- (uStrCaseCmp(valStr, "modmapmods") == 0)))
- {
-
- *mods_rtrn = 0;
- *flags_inout |= XkbSA_UseModMapMods;
- return True;
- }
- }
- if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
- return ReportMismatch(action, F_Modifiers, "modifier mask");
- *mods_rtrn = rtrn.uval;
- *flags_inout &= ~XkbSA_UseModMapMods;
- return True;
-}
-
-static Bool
-HandleSetLatchMods(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- XkbModAction *act;
- unsigned rtrn;
- unsigned t1, t2;
-
- act = (XkbModAction *) action;
- if (array_ndx != NULL)
- {
- switch (field)
- {
- case F_ClearLocks:
- case F_LatchToLock:
- case F_Modifiers:
- return ReportActionNotArray(action->type, field);
- }
- }
- switch (field)
- {
- case F_ClearLocks:
- case F_LatchToLock:
- rtrn = act->flags;
- if (CheckLatchLockFlags(action->type, field, value, &rtrn))
- {
- act->flags = rtrn;
- return True;
- }
- return False;
- case F_Modifiers:
- t1 = act->flags;
- if (CheckModifierField(xkb, action->type, value, &t1, &t2))
- {
- act->flags = t1;
- act->real_mods = act->mask = (t2 & 0xff);
- t2 = (t2 >> 8) & 0xffff;
- XkbSetModActionVMods(act, t2);
- return True;
- }
- return False;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleLockMods(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- XkbModAction *act;
- unsigned t1, t2;
-
- act = (XkbModAction *) action;
- if ((array_ndx != NULL) && (field == F_Modifiers))
- return ReportActionNotArray(action->type, field);
- switch (field)
- {
- case F_Modifiers:
- t1 = act->flags;
- if (CheckModifierField(xkb, action->type, value, &t1, &t2))
- {
- act->flags = t1;
- act->real_mods = act->mask = (t2 & 0xff);
- t2 = (t2 >> 8) & 0xffff;
- XkbSetModActionVMods(act, t2);
- return True;
- }
- return False;
- }
- return ReportIllegal(action->type, field);
-}
-
-static LookupEntry groupNames[] = {
- {"group1", 1},
- {"group2", 2},
- {"group3", 3},
- {"group4", 4},
- {"group5", 5},
- {"group6", 6},
- {"group7", 7},
- {"group8", 8},
- {NULL, 0},
-};
-
-static Bool
-CheckGroupField(unsigned action,
- ExprDef * value, unsigned *flags_inout, int *grp_rtrn)
-{
- ExprDef *spec;
- ExprResult rtrn;
-
- if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
- {
- *flags_inout &= ~XkbSA_GroupAbsolute;
- spec = value->value.child;
- }
- else
- {
- *flags_inout |= XkbSA_GroupAbsolute;
- spec = value;
- }
-
- if (!ExprResolveInteger(spec, &rtrn, SimpleLookup, (XPointer) groupNames))
- return ReportMismatch(action, F_Group, "integer (range 1..8)");
- if ((rtrn.ival < 1) || (rtrn.ival > XkbNumKbdGroups))
- {
- ERROR2("Illegal group %d (must be in the range 1..%d)\n", rtrn.ival,
- XkbNumKbdGroups);
- ACTION1("Action %s definition ignored\n",
- XkbActionTypeText(action, XkbMessage));
- return False;
- }
- if (value->op == OpNegate)
- *grp_rtrn = -rtrn.ival;
- else if (value->op == OpUnaryPlus)
- *grp_rtrn = rtrn.ival;
- else
- *grp_rtrn = rtrn.ival - 1;
- return True;
-}
-
-static Bool
-HandleSetLatchGroup(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- XkbGroupAction *act;
- unsigned rtrn;
- unsigned t1;
- int t2;
-
- act = (XkbGroupAction *) action;
- if (array_ndx != NULL)
- {
- switch (field)
- {
- case F_ClearLocks:
- case F_LatchToLock:
- case F_Group:
- return ReportActionNotArray(action->type, field);
- }
- }
- switch (field)
- {
- case F_ClearLocks:
- case F_LatchToLock:
- rtrn = act->flags;
- if (CheckLatchLockFlags(action->type, field, value, &rtrn))
- {
- act->flags = rtrn;
- return True;
- }
- return False;
- case F_Group:
- t1 = act->flags;
- if (CheckGroupField(action->type, value, &t1, &t2))
- {
- act->flags = t1;
- XkbSASetGroup(act, t2);
- return True;
- }
- return False;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleLockGroup(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- XkbGroupAction *act;
- unsigned t1;
- int t2;
-
- act = (XkbGroupAction *) action;
- if ((array_ndx != NULL) && (field == F_Group))
- return ReportActionNotArray(action->type, field);
- if (field == F_Group)
- {
- t1 = act->flags;
- if (CheckGroupField(action->type, value, &t1, &t2))
- {
- act->flags = t1;
- XkbSASetGroup(act, t2);
- return True;
- }
- return False;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleMovePtr(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbPtrAction *act;
- Bool absolute;
-
- act = (XkbPtrAction *) action;
- if ((array_ndx != NULL) && ((field == F_X) || (field == F_Y)))
- return ReportActionNotArray(action->type, field);
-
- if ((field == F_X) || (field == F_Y))
- {
- if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
- absolute = False;
- else
- absolute = True;
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "integer");
- if (field == F_X)
- {
- if (absolute)
- act->flags |= XkbSA_MoveAbsoluteX;
- XkbSetPtrActionX(act, rtrn.ival);
- }
- else
- {
- if (absolute)
- act->flags |= XkbSA_MoveAbsoluteY;
- XkbSetPtrActionY(act, rtrn.ival);
- }
- return True;
- }
- else if (field == F_Accel)
- {
- if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "boolean");
- if (rtrn.uval)
- act->flags &= ~XkbSA_NoAcceleration;
- else
- act->flags |= XkbSA_NoAcceleration;
- }
- return ReportIllegal(action->type, field);
-}
-
-static LookupEntry btnNames[] = {
- {"button1", 1},
- {"button2", 2},
- {"button3", 3},
- {"button4", 4},
- {"button5", 5},
- {"default", 0},
- {NULL, 0}
-};
-
-static LookupEntry lockWhich[] = {
- {"both", 0},
- {"lock", XkbSA_LockNoUnlock},
- {"neither", (XkbSA_LockNoLock | XkbSA_LockNoUnlock)},
- {"unlock", XkbSA_LockNoLock},
- {NULL, 0}
-};
-
-static Bool
-HandlePtrBtn(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbPtrBtnAction *act;
-
- act = (XkbPtrBtnAction *) action;
- if (field == F_Button)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveInteger
- (value, &rtrn, SimpleLookup, (XPointer) btnNames))
- return ReportMismatch(action->type, field,
- "integer (range 1..5)");
- if ((rtrn.ival < 0) || (rtrn.ival > 5))
- {
- ERROR("Button must specify default or be in the range 1..5\n");
- ACTION1("Illegal button value %d ignored\n", rtrn.ival);
- return False;
- }
- act->button = rtrn.ival;
- return True;
- }
- else if ((action->type == XkbSA_LockPtrBtn) && (field == F_Affect))
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveEnum(value, &rtrn, lockWhich))
- return ReportMismatch(action->type, field, "lock or unlock");
- act->flags &= ~(XkbSA_LockNoLock | XkbSA_LockNoUnlock);
- act->flags |= rtrn.ival;
- return True;
- }
- else if (field == F_Count)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveInteger
- (value, &rtrn, SimpleLookup, (XPointer) btnNames))
- return ReportMismatch(action->type, field, "integer");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("The count field must have a value in the range 0..255\n");
- ACTION1("Illegal count %d ignored\n", rtrn.ival);
- return False;
- }
- act->count = rtrn.ival;
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static LookupEntry ptrDflts[] = {
- {"dfltbtn", XkbSA_AffectDfltBtn},
- {"defaultbutton", XkbSA_AffectDfltBtn},
- {"button", XkbSA_AffectDfltBtn},
- {NULL, 0}
-};
-
-static Bool
-HandleSetPtrDflt(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbPtrDfltAction *act;
-
- act = (XkbPtrDfltAction *) action;
- if (field == F_Affect)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveEnum(value, &rtrn, ptrDflts))
- return ReportMismatch(action->type, field, "pointer component");
- act->affect = rtrn.uval;
- return True;
- }
- else if ((field == F_Button) || (field == F_Value))
- {
- ExprDef *btn;
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
- {
- act->flags &= ~XkbSA_DfltBtnAbsolute;
- btn = value->value.child;
- }
- else
- {
- act->flags |= XkbSA_DfltBtnAbsolute;
- btn = value;
- }
-
- if (!ExprResolveInteger
- (btn, &rtrn, SimpleLookup, (XPointer) btnNames))
- return ReportMismatch(action->type, field,
- "integer (range 1..5)");
- if ((rtrn.ival < 0) || (rtrn.ival > 5))
- {
- ERROR("New default button value must be in the range 1..5\n");
- ACTION1("Illegal default button value %d ignored\n", rtrn.ival);
- return False;
- }
- if (rtrn.ival == 0)
- {
- ERROR("Cannot set default pointer button to \"default\"\n");
- ACTION("Illegal default button setting ignored\n");
- return False;
- }
- if (value->op == OpNegate)
- XkbSASetPtrDfltValue(act, -rtrn.ival);
- else
- XkbSASetPtrDfltValue(act, rtrn.ival);
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static LookupEntry isoNames[] = {
- {"mods", XkbSA_ISONoAffectMods},
- {"modifiers", XkbSA_ISONoAffectMods},
- {"group", XkbSA_ISONoAffectGroup},
- {"groups", XkbSA_ISONoAffectGroup},
- {"ptr", XkbSA_ISONoAffectPtr},
- {"pointer", XkbSA_ISONoAffectPtr},
- {"ctrls", XkbSA_ISONoAffectCtrls},
- {"controls", XkbSA_ISONoAffectCtrls},
- {"all", ~((unsigned) 0)},
- {"none", 0},
- {NULL, 0},
-};
-
-static Bool
-HandleISOLock(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbISOAction *act;
- unsigned flags, mods;
- int group;
-
- act = (XkbISOAction *) action;
- switch (field)
- {
- case F_Modifiers:
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- flags = act->flags;
- if (CheckModifierField(xkb, action->type, value, &flags, &mods))
- {
- act->flags = flags & (~XkbSA_ISODfltIsGroup);
- act->real_mods = mods & 0xff;
- mods = (mods >> 8) & 0xff;
- XkbSetModActionVMods(act, mods);
- return True;
- }
- return False;
- case F_Group:
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- flags = act->flags;
- if (CheckGroupField(action->type, value, &flags, &group))
- {
- act->flags = flags | XkbSA_ISODfltIsGroup;
- XkbSASetGroup(act, group);
- return True;
- }
- return False;
- case F_Affect:
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveMask(value, &rtrn, SimpleLookup, (XPointer) isoNames))
- return ReportMismatch(action->type, field, "keyboard component");
- act->affect = (~rtrn.uval) & XkbSA_ISOAffectMask;
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleSwitchScreen(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbSwitchScreenAction *act;
-
- act = (XkbSwitchScreenAction *) action;
- if (field == F_Screen)
- {
- ExprDef *scrn;
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
- {
- act->flags &= ~XkbSA_SwitchAbsolute;
- scrn = value->value.child;
- }
- else
- {
- act->flags |= XkbSA_SwitchAbsolute;
- scrn = value;
- }
-
- if (!ExprResolveInteger(scrn, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "integer (0..255)");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("Screen index must be in the range 1..255\n");
- ACTION1("Illegal screen value %d ignored\n", rtrn.ival);
- return False;
- }
- if (value->op == OpNegate)
- XkbSASetScreen(act, -rtrn.ival);
- else
- XkbSASetScreen(act, rtrn.ival);
- return True;
- }
- else if (field == F_Same)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "boolean");
- if (rtrn.uval)
- act->flags &= ~XkbSA_SwitchApplication;
- else
- act->flags |= XkbSA_SwitchApplication;
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-LookupEntry ctrlNames[] = {
- {"repeatkeys", XkbRepeatKeysMask}
- ,
- {"repeat", XkbRepeatKeysMask}
- ,
- {"autorepeat", XkbRepeatKeysMask}
- ,
- {"slowkeys", XkbSlowKeysMask}
- ,
- {"bouncekeys", XkbBounceKeysMask}
- ,
- {"stickykeys", XkbStickyKeysMask}
- ,
- {"mousekeys", XkbMouseKeysMask}
- ,
- {"mousekeysaccel", XkbMouseKeysAccelMask}
- ,
- {"accessxkeys", XkbAccessXKeysMask}
- ,
- {"accessxtimeout", XkbAccessXTimeoutMask}
- ,
- {"accessxfeedback", XkbAccessXFeedbackMask}
- ,
- {"audiblebell", XkbAudibleBellMask}
- ,
- {"overlay1", XkbOverlay1Mask}
- ,
- {"overlay2", XkbOverlay2Mask}
- ,
- {"ignoregrouplock", XkbIgnoreGroupLockMask}
- ,
- {"all", XkbAllBooleanCtrlsMask}
- ,
- {"none", 0}
- ,
- {NULL, 0}
-};
-
-static Bool
-HandleSetLockControls(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbCtrlsAction *act;
-
- act = (XkbCtrlsAction *) action;
- if (field == F_Controls)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveMask
- (value, &rtrn, SimpleLookup, (XPointer) ctrlNames))
- return ReportMismatch(action->type, field, "controls mask");
- XkbActionSetCtrls(act, rtrn.uval);
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static LookupEntry evNames[] = {
- {"press", XkbSA_MessageOnPress},
- {"keypress", XkbSA_MessageOnPress},
- {"release", XkbSA_MessageOnRelease},
- {"keyrelease", XkbSA_MessageOnRelease},
- {"all", XkbSA_MessageOnPress | XkbSA_MessageOnRelease},
- {"none", 0},
- {NULL, 0}
-};
-
-static Bool
-HandleActionMessage(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbMessageAction *act;
-
- act = (XkbMessageAction *) action;
- switch (field)
- {
- case F_Report:
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveMask(value, &rtrn, SimpleLookup, (XPointer) evNames))
- return ReportMismatch(action->type, field, "key event mask");
- act->flags &= ~(XkbSA_MessageOnPress | XkbSA_MessageOnRelease);
- act->flags =
- rtrn.uval & (XkbSA_MessageOnPress | XkbSA_MessageOnRelease);
- return True;
- case F_GenKeyEvent:
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "boolean");
- if (rtrn.uval)
- act->flags |= XkbSA_MessageGenKeyEvent;
- else
- act->flags &= ~XkbSA_MessageGenKeyEvent;
- return True;
- case F_Data:
- if (array_ndx == NULL)
- {
- if (!ExprResolveString(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "string");
- else
- {
- int len = strlen(rtrn.str);
- if ((len < 1) || (len > 6))
- {
- WARN("An action message can hold only 6 bytes\n");
- ACTION1("Extra %d bytes ignored\n", len - 6);
- }
- strncpy((char *) act->message, rtrn.str, 6);
- }
- return True;
- }
- else
- {
- unsigned ndx;
- if (!ExprResolveInteger(array_ndx, &rtrn, NULL, NULL))
- {
- ERROR("Array subscript must be integer\n");
- ACTION("Illegal subscript ignored\n");
- return False;
- }
- ndx = rtrn.uval;
- if (ndx > 5)
- {
- ERROR("An action message is at most 6 bytes long\n");
- ACTION1("Attempt to use data[%d] ignored\n", ndx);
- return False;
- }
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "integer");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("Message data must be in the range 0..255\n");
- ACTION1("Illegal datum %d ignored\n", rtrn.ival);
- return False;
- }
- act->message[ndx] = rtrn.uval;
- }
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleRedirectKey(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbRedirectKeyAction *act;
- unsigned t1, t2, vmods, vmask;
- unsigned long tmp;
-
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
-
- act = (XkbRedirectKeyAction *) action;
- switch (field)
- {
- case F_Keycode:
- if (!ExprResolveKeyName(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "key name");
- tmp = KeyNameToLong(rtrn.keyName.name);
- if (!FindNamedKey(xkb, tmp, &t1, True, CreateKeyNames(xkb), 0))
- {
- return ReportNotFound(action->type, field, "Key",
- XkbKeyNameText(rtrn.keyName.name,
- XkbMessage));
- }
- act->new_key = t1;
- return True;
- case F_ModsToClear:
- case F_Modifiers:
- t1 = 0;
- if (CheckModifierField(xkb, action->type, value, &t1, &t2))
- {
- act->mods_mask |= (t2 & 0xff);
- if (field == F_Modifiers)
- act->mods |= (t2 & 0xff);
- else
- act->mods &= ~(t2 & 0xff);
-
- t2 = (t2 >> 8) & 0xffff;
- vmods = XkbSARedirectVMods(act);
- vmask = XkbSARedirectVModsMask(act);
- vmask |= t2;
- if (field == F_Modifiers)
- vmods |= t2;
- else
- vmods &= ~t2;
- XkbSARedirectSetVMods(act, vmods);
- XkbSARedirectSetVModsMask(act, vmask);
- return True;
- }
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleDeviceBtn(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbDeviceBtnAction *act;
-
- act = (XkbDeviceBtnAction *) action;
- if (field == F_Button)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field,
- "integer (range 1..255)");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("Button must specify default or be in the range 1..255\n");
- ACTION1("Illegal button value %d ignored\n", rtrn.ival);
- return False;
- }
- act->button = rtrn.ival;
- return True;
- }
- else if ((action->type == XkbSA_LockDeviceBtn) && (field == F_Affect))
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveEnum(value, &rtrn, lockWhich))
- return ReportMismatch(action->type, field, "lock or unlock");
- act->flags &= ~(XkbSA_LockNoLock | XkbSA_LockNoUnlock);
- act->flags |= rtrn.ival;
- return True;
- }
- else if (field == F_Count)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveInteger
- (value, &rtrn, SimpleLookup, (XPointer) btnNames))
- return ReportMismatch(action->type, field, "integer");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("The count field must have a value in the range 0..255\n");
- ACTION1("Illegal count %d ignored\n", rtrn.ival);
- return False;
- }
- act->count = rtrn.ival;
- return True;
- }
- else if (field == F_Device)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field,
- "integer (range 1..255)");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("Device must specify default or be in the range 1..255\n");
- ACTION1("Illegal device value %d ignored\n", rtrn.ival);
- return False;
- }
- act->device = rtrn.ival;
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleDeviceValuator(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
-#if 0
- ExprResult rtrn;
- XkbDeviceValuatorAction *act;
-
- act = (XkbDeviceValuatorAction *) action;
- /* XXX - Not yet implemented */
-#endif
- return False;
-}
-
-static Bool
-HandlePrivate(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
-
- switch (field)
- {
- case F_Type:
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(PrivateAction, field, "integer");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("Private action type must be in the range 0..255\n");
- ACTION1("Illegal type %d ignored\n", rtrn.ival);
- return False;
- }
- action->type = rtrn.uval;
- return True;
- case F_Data:
- if (array_ndx == NULL)
- {
- if (!ExprResolveString(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "string");
- else
- {
- int len = strlen(rtrn.str);
- if ((len < 1) || (len > 7))
- {
- WARN("A private action has 7 data bytes\n");
- ACTION1("Extra %d bytes ignored\n", len - 6);
- return False;
- }
- strncpy((char *) action->data, rtrn.str, 7);
- }
- return True;
- }
- else
- {
- unsigned ndx;
- if (!ExprResolveInteger(array_ndx, &rtrn, NULL, NULL))
- {
- ERROR("Array subscript must be integer\n");
- ACTION("Illegal subscript ignored\n");
- return False;
- }
- ndx = rtrn.uval;
- if (ndx > 6)
- {
- ERROR("The data for a private action is 7 bytes long\n");
- ACTION1("Attempt to use data[%d] ignored\n", ndx);
- return False;
- }
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "integer");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("All data for a private action must be 0..255\n");
- ACTION1("Illegal datum %d ignored\n", rtrn.ival);
- return False;
- }
- action->data[ndx] = rtrn.uval;
- return True;
- }
- }
- return ReportIllegal(PrivateAction, field);
-}
-
-typedef Bool(*actionHandler) (XkbDescPtr /* xkb */ ,
- XkbAnyAction * /* action */ ,
- unsigned /* field */ ,
- ExprDef * /* array_ndx */ ,
- ExprDef * /* value */
- );
-
-static actionHandler handleAction[XkbSA_NumActions + 1] = {
- HandleNoAction /* NoAction */ ,
- HandleSetLatchMods /* SetMods */ ,
- HandleSetLatchMods /* LatchMods */ ,
- HandleLockMods /* LockMods */ ,
- HandleSetLatchGroup /* SetGroup */ ,
- HandleSetLatchGroup /* LatchGroup */ ,
- HandleLockGroup /* LockGroup */ ,
- HandleMovePtr /* MovePtr */ ,
- HandlePtrBtn /* PtrBtn */ ,
- HandlePtrBtn /* LockPtrBtn */ ,
- HandleSetPtrDflt /* SetPtrDflt */ ,
- HandleISOLock /* ISOLock */ ,
- HandleNoAction /* Terminate */ ,
- HandleSwitchScreen /* SwitchScreen */ ,
- HandleSetLockControls /* SetControls */ ,
- HandleSetLockControls /* LockControls */ ,
- HandleActionMessage /* ActionMessage */ ,
- HandleRedirectKey /* RedirectKey */ ,
- HandleDeviceBtn /* DeviceBtn */ ,
- HandleDeviceBtn /* LockDeviceBtn */ ,
- HandleDeviceValuator /* DeviceValuatr */ ,
- HandlePrivate /* Private */
-};
-
-/***====================================================================***/
-
-static void
-ApplyActionFactoryDefaults(XkbAction * action)
-{
- if (action->type == XkbSA_SetPtrDflt)
- { /* increment default button */
- action->dflt.affect = XkbSA_AffectDfltBtn;
- action->dflt.flags = 0;
- XkbSASetPtrDfltValue(&action->dflt, 1);
- }
- else if (action->type == XkbSA_ISOLock)
- {
- action->iso.real_mods = LockMask;
- }
- return;
-}
-
-
-int
-HandleActionDef(ExprDef * def,
- XkbDescPtr xkb,
- XkbAnyAction * action, unsigned mergeMode, ActionInfo * info)
-{
- ExprDef *arg;
- register char *str;
- unsigned tmp, hndlrType;
-
- if (!actionsInitialized)
- ActionsInit();
-
- if (def->op != ExprActionDecl)
- {
- ERROR1("Expected an action definition, found %s\n",
- exprOpText(def->op));
- return False;
- }
- str = XkbAtomGetString(NULL, def->value.action.name);
- if (!str)
- {
- WSGO("Missing name in action definition!!\n");
- return False;
- }
- if (!stringToAction(str, &tmp))
- {
- ERROR1("Unknown action %s\n", str);
- return False;
- }
- action->type = hndlrType = tmp;
- if (action->type != XkbSA_NoAction)
- {
- ApplyActionFactoryDefaults((XkbAction *) action);
- while (info)
- {
- if ((info->action == XkbSA_NoAction)
- || (info->action == hndlrType))
- {
- if (!(*handleAction[hndlrType]) (xkb, action,
- info->field,
- info->array_ndx,
- info->value))
- {
- return False;
- }
- }
- info = info->next;
- }
- }
- for (arg = def->value.action.args; arg != NULL;
- arg = (ExprDef *) arg->common.next)
- {
- ExprDef *field, *value, *arrayRtrn;
- ExprResult elemRtrn, fieldRtrn;
- unsigned fieldNdx;
-
- if (arg->op == OpAssign)
- {
- field = arg->value.binary.left;
- value = arg->value.binary.right;
- }
- else
- {
- if ((arg->op == OpNot) || (arg->op == OpInvert))
- {
- field = arg->value.child;
- value = &constFalse;
- }
- else
- {
- field = arg;
- value = &constTrue;
- }
- }
- if (!ExprResolveLhs(field, &elemRtrn, &fieldRtrn, &arrayRtrn))
- return False; /* internal error -- already reported */
-
- if (elemRtrn.str != NULL)
- {
- ERROR("Cannot change defaults in an action definition\n");
- ACTION2("Ignoring attempt to change %s.%s\n", elemRtrn.str,
- fieldRtrn.str);
- return False;
- }
- if (!stringToField(fieldRtrn.str, &fieldNdx))
- {
- ERROR1("Unknown field name %s\n", uStringText(fieldRtrn.str));
- return False;
- }
- if (!(*handleAction[hndlrType])
- (xkb, action, fieldNdx, arrayRtrn, value))
- {
- return False;
- }
- }
- return True;
-}
-
-/***====================================================================***/
-
-int
-SetActionField(XkbDescPtr xkb,
- char *elem,
- char *field,
- ExprDef * array_ndx, ExprDef * value, ActionInfo ** info_rtrn)
-{
- ActionInfo *new, *old;
-
- if (!actionsInitialized)
- ActionsInit();
-
- new = uTypedAlloc(ActionInfo);
- if (new == NULL)
- {
- WSGO("Couldn't allocate space for action default\n");
- return False;
- }
- if (uStrCaseCmp(elem, "action") == 0)
- new->action = XkbSA_NoAction;
- else
- {
- if (!stringToAction(elem, &new->action))
- return False;
- if (new->action == XkbSA_NoAction)
- {
- ERROR1("\"%s\" is not a valid field in a NoAction action\n",
- field);
- return False;
- }
- }
- if (!stringToField(field, &new->field))
- {
- ERROR1("\"%s\" is not a legal field name\n", field);
- return False;
- }
- new->array_ndx = array_ndx;
- new->value = value;
- new->next = NULL;
- old = *info_rtrn;
- while ((old) && (old->next))
- old = old->next;
- if (old == NULL)
- *info_rtrn = new;
- else
- old->next = new;
- return True;
-}
-
-/***====================================================================***/
-
-void
-ActionsInit(void)
-{
- if (!actionsInitialized)
- {
- bzero((char *) &constTrue, sizeof(constTrue));
- bzero((char *) &constFalse, sizeof(constFalse));
- constTrue.common.stmtType = StmtExpr;
- constTrue.common.next = NULL;
- constTrue.op = ExprIdent;
- constTrue.type = TypeBoolean;
- constTrue.value.str = XkbInternAtom(NULL, "true", False);
- constFalse.common.stmtType = StmtExpr;
- constFalse.common.next = NULL;
- constFalse.op = ExprIdent;
- constFalse.type = TypeBoolean;
- constFalse.value.str = XkbInternAtom(NULL, "false", False);
- actionsInitialized = 1;
- }
- return;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "tokens.h"
+#include "expr.h"
+
+#include "keycodes.h"
+#include "vmod.h"
+#include "misc.h"
+#include "action.h"
+#include "misc.h"
+
+static Bool actionsInitialized;
+static ExprDef constTrue;
+static ExprDef constFalse;
+
+/***====================================================================***/
+
+static Bool
+stringToAction(char *str, unsigned *type_rtrn)
+{
+ if (str == NULL)
+ return False;
+
+ if (uStrCaseCmp(str, "noaction") == 0)
+ *type_rtrn = XkbSA_NoAction;
+ else if (uStrCaseCmp(str, "setmods") == 0)
+ *type_rtrn = XkbSA_SetMods;
+ else if (uStrCaseCmp(str, "latchmods") == 0)
+ *type_rtrn = XkbSA_LatchMods;
+ else if (uStrCaseCmp(str, "lockmods") == 0)
+ *type_rtrn = XkbSA_LockMods;
+ else if (uStrCaseCmp(str, "setgroup") == 0)
+ *type_rtrn = XkbSA_SetGroup;
+ else if (uStrCaseCmp(str, "latchgroup") == 0)
+ *type_rtrn = XkbSA_LatchGroup;
+ else if (uStrCaseCmp(str, "lockgroup") == 0)
+ *type_rtrn = XkbSA_LockGroup;
+ else if (uStrCaseCmp(str, "moveptr") == 0)
+ *type_rtrn = XkbSA_MovePtr;
+ else if (uStrCaseCmp(str, "movepointer") == 0)
+ *type_rtrn = XkbSA_MovePtr;
+ else if (uStrCaseCmp(str, "ptrbtn") == 0)
+ *type_rtrn = XkbSA_PtrBtn;
+ else if (uStrCaseCmp(str, "pointerbutton") == 0)
+ *type_rtrn = XkbSA_PtrBtn;
+ else if (uStrCaseCmp(str, "lockptrbtn") == 0)
+ *type_rtrn = XkbSA_LockPtrBtn;
+ else if (uStrCaseCmp(str, "lockpointerbutton") == 0)
+ *type_rtrn = XkbSA_LockPtrBtn;
+ else if (uStrCaseCmp(str, "lockptrbutton") == 0)
+ *type_rtrn = XkbSA_LockPtrBtn;
+ else if (uStrCaseCmp(str, "lockpointerbtn") == 0)
+ *type_rtrn = XkbSA_LockPtrBtn;
+ else if (uStrCaseCmp(str, "setptrdflt") == 0)
+ *type_rtrn = XkbSA_SetPtrDflt;
+ else if (uStrCaseCmp(str, "setpointerdefault") == 0)
+ *type_rtrn = XkbSA_SetPtrDflt;
+ else if (uStrCaseCmp(str, "isolock") == 0)
+ *type_rtrn = XkbSA_ISOLock;
+ else if (uStrCaseCmp(str, "terminate") == 0)
+ *type_rtrn = XkbSA_Terminate;
+ else if (uStrCaseCmp(str, "terminateserver") == 0)
+ *type_rtrn = XkbSA_Terminate;
+ else if (uStrCaseCmp(str, "switchscreen") == 0)
+ *type_rtrn = XkbSA_SwitchScreen;
+ else if (uStrCaseCmp(str, "setcontrols") == 0)
+ *type_rtrn = XkbSA_SetControls;
+ else if (uStrCaseCmp(str, "lockcontrols") == 0)
+ *type_rtrn = XkbSA_LockControls;
+ else if (uStrCaseCmp(str, "actionmessage") == 0)
+ *type_rtrn = XkbSA_ActionMessage;
+ else if (uStrCaseCmp(str, "messageaction") == 0)
+ *type_rtrn = XkbSA_ActionMessage;
+ else if (uStrCaseCmp(str, "message") == 0)
+ *type_rtrn = XkbSA_ActionMessage;
+ else if (uStrCaseCmp(str, "redirect") == 0)
+ *type_rtrn = XkbSA_RedirectKey;
+ else if (uStrCaseCmp(str, "redirectkey") == 0)
+ *type_rtrn = XkbSA_RedirectKey;
+ else if (uStrCaseCmp(str, "devbtn") == 0)
+ *type_rtrn = XkbSA_DeviceBtn;
+ else if (uStrCaseCmp(str, "devicebtn") == 0)
+ *type_rtrn = XkbSA_DeviceBtn;
+ else if (uStrCaseCmp(str, "devbutton") == 0)
+ *type_rtrn = XkbSA_DeviceBtn;
+ else if (uStrCaseCmp(str, "devicebutton") == 0)
+ *type_rtrn = XkbSA_DeviceBtn;
+ else if (uStrCaseCmp(str, "lockdevbtn") == 0)
+ *type_rtrn = XkbSA_DeviceBtn;
+ else if (uStrCaseCmp(str, "lockdevicebtn") == 0)
+ *type_rtrn = XkbSA_LockDeviceBtn;
+ else if (uStrCaseCmp(str, "lockdevbutton") == 0)
+ *type_rtrn = XkbSA_LockDeviceBtn;
+ else if (uStrCaseCmp(str, "lockdevicebutton") == 0)
+ *type_rtrn = XkbSA_LockDeviceBtn;
+ else if (uStrCaseCmp(str, "devval") == 0)
+ *type_rtrn = XkbSA_DeviceValuator;
+ else if (uStrCaseCmp(str, "deviceval") == 0)
+ *type_rtrn = XkbSA_DeviceValuator;
+ else if (uStrCaseCmp(str, "devvaluator") == 0)
+ *type_rtrn = XkbSA_DeviceValuator;
+ else if (uStrCaseCmp(str, "devicevaluator") == 0)
+ *type_rtrn = XkbSA_DeviceValuator;
+ else if (uStrCaseCmp(str, "private") == 0)
+ *type_rtrn = PrivateAction;
+ else
+ return False;
+ return True;
+}
+
+static Bool
+stringToField(char *str, unsigned *field_rtrn)
+{
+
+ if (str == NULL)
+ return False;
+
+ if (uStrCaseCmp(str, "clearlocks") == 0)
+ *field_rtrn = F_ClearLocks;
+ else if (uStrCaseCmp(str, "latchtolock") == 0)
+ *field_rtrn = F_LatchToLock;
+ else if (uStrCaseCmp(str, "genkeyevent") == 0)
+ *field_rtrn = F_GenKeyEvent;
+ else if (uStrCaseCmp(str, "generatekeyevent") == 0)
+ *field_rtrn = F_GenKeyEvent;
+ else if (uStrCaseCmp(str, "report") == 0)
+ *field_rtrn = F_Report;
+ else if (uStrCaseCmp(str, "default") == 0)
+ *field_rtrn = F_Default;
+ else if (uStrCaseCmp(str, "affect") == 0)
+ *field_rtrn = F_Affect;
+ else if (uStrCaseCmp(str, "increment") == 0)
+ *field_rtrn = F_Increment;
+ else if (uStrCaseCmp(str, "mods") == 0)
+ *field_rtrn = F_Modifiers;
+ else if (uStrCaseCmp(str, "modifiers") == 0)
+ *field_rtrn = F_Modifiers;
+ else if (uStrCaseCmp(str, "group") == 0)
+ *field_rtrn = F_Group;
+ else if (uStrCaseCmp(str, "x") == 0)
+ *field_rtrn = F_X;
+ else if (uStrCaseCmp(str, "y") == 0)
+ *field_rtrn = F_Y;
+ else if (uStrCaseCmp(str, "accel") == 0)
+ *field_rtrn = F_Accel;
+ else if (uStrCaseCmp(str, "accelerate") == 0)
+ *field_rtrn = F_Accel;
+ else if (uStrCaseCmp(str, "repeat") == 0)
+ *field_rtrn = F_Accel;
+ else if (uStrCaseCmp(str, "button") == 0)
+ *field_rtrn = F_Button;
+ else if (uStrCaseCmp(str, "value") == 0)
+ *field_rtrn = F_Value;
+ else if (uStrCaseCmp(str, "controls") == 0)
+ *field_rtrn = F_Controls;
+ else if (uStrCaseCmp(str, "ctrls") == 0)
+ *field_rtrn = F_Controls;
+ else if (uStrCaseCmp(str, "type") == 0)
+ *field_rtrn = F_Type;
+ else if (uStrCaseCmp(str, "count") == 0)
+ *field_rtrn = F_Count;
+ else if (uStrCaseCmp(str, "screen") == 0)
+ *field_rtrn = F_Screen;
+ else if (uStrCaseCmp(str, "same") == 0)
+ *field_rtrn = F_Same;
+ else if (uStrCaseCmp(str, "sameserver") == 0)
+ *field_rtrn = F_Same;
+ else if (uStrCaseCmp(str, "data") == 0)
+ *field_rtrn = F_Data;
+ else if (uStrCaseCmp(str, "device") == 0)
+ *field_rtrn = F_Device;
+ else if (uStrCaseCmp(str, "dev") == 0)
+ *field_rtrn = F_Device;
+ else if (uStrCaseCmp(str, "key") == 0)
+ *field_rtrn = F_Keycode;
+ else if (uStrCaseCmp(str, "keycode") == 0)
+ *field_rtrn = F_Keycode;
+ else if (uStrCaseCmp(str, "kc") == 0)
+ *field_rtrn = F_Keycode;
+ else if (uStrCaseCmp(str, "clearmods") == 0)
+ *field_rtrn = F_ModsToClear;
+ else if (uStrCaseCmp(str, "clearmodifiers") == 0)
+ *field_rtrn = F_ModsToClear;
+ else
+ return False;
+ return True;
+}
+
+static char *
+fieldText(unsigned field)
+{
+ static char buf[32];
+
+ switch (field)
+ {
+ case F_ClearLocks:
+ strcpy(buf, "clearLocks");
+ break;
+ case F_LatchToLock:
+ strcpy(buf, "latchToLock");
+ break;
+ case F_GenKeyEvent:
+ strcpy(buf, "genKeyEvent");
+ break;
+ case F_Report:
+ strcpy(buf, "report");
+ break;
+ case F_Default:
+ strcpy(buf, "default");
+ break;
+ case F_Affect:
+ strcpy(buf, "affect");
+ break;
+ case F_Increment:
+ strcpy(buf, "increment");
+ break;
+ case F_Modifiers:
+ strcpy(buf, "modifiers");
+ break;
+ case F_Group:
+ strcpy(buf, "group");
+ break;
+ case F_X:
+ strcpy(buf, "x");
+ break;
+ case F_Y:
+ strcpy(buf, "y");
+ break;
+ case F_Accel:
+ strcpy(buf, "accel");
+ break;
+ case F_Button:
+ strcpy(buf, "button");
+ break;
+ case F_Value:
+ strcpy(buf, "value");
+ break;
+ case F_Controls:
+ strcpy(buf, "controls");
+ break;
+ case F_Type:
+ strcpy(buf, "type");
+ break;
+ case F_Count:
+ strcpy(buf, "count");
+ break;
+ case F_Screen:
+ strcpy(buf, "screen");
+ break;
+ case F_Same:
+ strcpy(buf, "sameServer");
+ break;
+ case F_Data:
+ strcpy(buf, "data");
+ break;
+ case F_Device:
+ strcpy(buf, "device");
+ break;
+ case F_Keycode:
+ strcpy(buf, "keycode");
+ break;
+ case F_ModsToClear:
+ strcpy(buf, "clearmods");
+ break;
+ default:
+ strcpy(buf, "unknown");
+ break;
+ }
+ return buf;
+}
+
+/***====================================================================***/
+
+static Bool
+ReportMismatch(unsigned action, unsigned field, const char *type)
+{
+ ERROR2("Value of %s field must be of type %s\n", fieldText(field), type);
+ ACTION1("Action %s definition ignored\n",
+ XkbActionTypeText(action, XkbMessage));
+ return False;
+}
+
+static Bool
+ReportIllegal(unsigned action, unsigned field)
+{
+ ERROR2("Field %s is not defined for an action of type %s\n",
+ fieldText(field), XkbActionTypeText(action, XkbMessage));
+ ACTION("Action definition ignored\n");
+ return False;
+}
+
+static Bool
+ReportActionNotArray(unsigned action, unsigned field)
+{
+ ERROR2("The %s field in the %s action is not an array\n",
+ fieldText(field), XkbActionTypeText(action, XkbMessage));
+ ACTION("Action definition ignored\n");
+ return False;
+}
+
+static Bool
+ReportNotFound(unsigned action, unsigned field, const char *what, char *bad)
+{
+ ERROR2("%s named %s not found\n", what, bad);
+ ACTION2("Ignoring the %s field of an %s action\n", fieldText(field),
+ XkbActionTypeText(action, XkbMessage));
+ return False;
+}
+
+static Bool
+HandleNoAction(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+CheckLatchLockFlags(unsigned action,
+ unsigned field, ExprDef * value, unsigned *flags_inout)
+{
+ unsigned tmp;
+ ExprResult result;
+
+ if (field == F_ClearLocks)
+ tmp = XkbSA_ClearLocks;
+ else if (field == F_LatchToLock)
+ tmp = XkbSA_LatchToLock;
+ else
+ return False; /* WSGO! */
+ if (!ExprResolveBoolean(value, &result, NULL, NULL))
+ return ReportMismatch(action, field, "boolean");
+ if (result.uval)
+ *flags_inout |= tmp;
+ else
+ *flags_inout &= ~tmp;
+ return True;
+}
+
+static Bool
+CheckModifierField(XkbDescPtr xkb,
+ unsigned action,
+ ExprDef * value,
+ unsigned *flags_inout, unsigned *mods_rtrn)
+{
+ ExprResult rtrn;
+
+ if (value->op == ExprIdent)
+ {
+ register char *valStr;
+ valStr = XkbAtomGetString(NULL, value->value.str);
+ if (valStr && ((uStrCaseCmp(valStr, "usemodmapmods") == 0) ||
+ (uStrCaseCmp(valStr, "modmapmods") == 0)))
+ {
+
+ *mods_rtrn = 0;
+ *flags_inout |= XkbSA_UseModMapMods;
+ return True;
+ }
+ }
+ if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
+ return ReportMismatch(action, F_Modifiers, "modifier mask");
+ *mods_rtrn = rtrn.uval;
+ *flags_inout &= ~XkbSA_UseModMapMods;
+ return True;
+}
+
+static Bool
+HandleSetLatchMods(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ XkbModAction *act;
+ unsigned rtrn;
+ unsigned t1, t2;
+
+ act = (XkbModAction *) action;
+ if (array_ndx != NULL)
+ {
+ switch (field)
+ {
+ case F_ClearLocks:
+ case F_LatchToLock:
+ case F_Modifiers:
+ return ReportActionNotArray(action->type, field);
+ }
+ }
+ switch (field)
+ {
+ case F_ClearLocks:
+ case F_LatchToLock:
+ rtrn = act->flags;
+ if (CheckLatchLockFlags(action->type, field, value, &rtrn))
+ {
+ act->flags = rtrn;
+ return True;
+ }
+ return False;
+ case F_Modifiers:
+ t1 = act->flags;
+ if (CheckModifierField(xkb, action->type, value, &t1, &t2))
+ {
+ act->flags = t1;
+ act->real_mods = act->mask = (t2 & 0xff);
+ t2 = (t2 >> 8) & 0xffff;
+ XkbSetModActionVMods(act, t2);
+ return True;
+ }
+ return False;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleLockMods(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ XkbModAction *act;
+ unsigned t1, t2;
+
+ act = (XkbModAction *) action;
+ if ((array_ndx != NULL) && (field == F_Modifiers))
+ return ReportActionNotArray(action->type, field);
+ switch (field)
+ {
+ case F_Modifiers:
+ t1 = act->flags;
+ if (CheckModifierField(xkb, action->type, value, &t1, &t2))
+ {
+ act->flags = t1;
+ act->real_mods = act->mask = (t2 & 0xff);
+ t2 = (t2 >> 8) & 0xffff;
+ XkbSetModActionVMods(act, t2);
+ return True;
+ }
+ return False;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static LookupEntry groupNames[] = {
+ {"group1", 1},
+ {"group2", 2},
+ {"group3", 3},
+ {"group4", 4},
+ {"group5", 5},
+ {"group6", 6},
+ {"group7", 7},
+ {"group8", 8},
+ {NULL, 0},
+};
+
+static Bool
+CheckGroupField(unsigned action,
+ ExprDef * value, unsigned *flags_inout, int *grp_rtrn)
+{
+ ExprDef *spec;
+ ExprResult rtrn;
+
+ if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
+ {
+ *flags_inout &= ~XkbSA_GroupAbsolute;
+ spec = value->value.child;
+ }
+ else
+ {
+ *flags_inout |= XkbSA_GroupAbsolute;
+ spec = value;
+ }
+
+ if (!ExprResolveInteger(spec, &rtrn, SimpleLookup, (XPointer) groupNames))
+ return ReportMismatch(action, F_Group, "integer (range 1..8)");
+ if ((rtrn.ival < 1) || (rtrn.ival > XkbNumKbdGroups))
+ {
+ ERROR2("Illegal group %d (must be in the range 1..%d)\n", rtrn.ival,
+ XkbNumKbdGroups);
+ ACTION1("Action %s definition ignored\n",
+ XkbActionTypeText(action, XkbMessage));
+ return False;
+ }
+ if (value->op == OpNegate)
+ *grp_rtrn = -rtrn.ival;
+ else if (value->op == OpUnaryPlus)
+ *grp_rtrn = rtrn.ival;
+ else
+ *grp_rtrn = rtrn.ival - 1;
+ return True;
+}
+
+static Bool
+HandleSetLatchGroup(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ XkbGroupAction *act;
+ unsigned rtrn;
+ unsigned t1;
+ int t2;
+
+ act = (XkbGroupAction *) action;
+ if (array_ndx != NULL)
+ {
+ switch (field)
+ {
+ case F_ClearLocks:
+ case F_LatchToLock:
+ case F_Group:
+ return ReportActionNotArray(action->type, field);
+ }
+ }
+ switch (field)
+ {
+ case F_ClearLocks:
+ case F_LatchToLock:
+ rtrn = act->flags;
+ if (CheckLatchLockFlags(action->type, field, value, &rtrn))
+ {
+ act->flags = rtrn;
+ return True;
+ }
+ return False;
+ case F_Group:
+ t1 = act->flags;
+ if (CheckGroupField(action->type, value, &t1, &t2))
+ {
+ act->flags = t1;
+ XkbSASetGroup(act, t2);
+ return True;
+ }
+ return False;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleLockGroup(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ XkbGroupAction *act;
+ unsigned t1;
+ int t2;
+
+ act = (XkbGroupAction *) action;
+ if ((array_ndx != NULL) && (field == F_Group))
+ return ReportActionNotArray(action->type, field);
+ if (field == F_Group)
+ {
+ t1 = act->flags;
+ if (CheckGroupField(action->type, value, &t1, &t2))
+ {
+ act->flags = t1;
+ XkbSASetGroup(act, t2);
+ return True;
+ }
+ return False;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleMovePtr(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbPtrAction *act;
+ Bool absolute;
+
+ act = (XkbPtrAction *) action;
+ if ((array_ndx != NULL) && ((field == F_X) || (field == F_Y)))
+ return ReportActionNotArray(action->type, field);
+
+ if ((field == F_X) || (field == F_Y))
+ {
+ if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
+ absolute = False;
+ else
+ absolute = True;
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "integer");
+ if (field == F_X)
+ {
+ if (absolute)
+ act->flags |= XkbSA_MoveAbsoluteX;
+ XkbSetPtrActionX(act, rtrn.ival);
+ }
+ else
+ {
+ if (absolute)
+ act->flags |= XkbSA_MoveAbsoluteY;
+ XkbSetPtrActionY(act, rtrn.ival);
+ }
+ return True;
+ }
+ else if (field == F_Accel)
+ {
+ if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "boolean");
+ if (rtrn.uval)
+ act->flags &= ~XkbSA_NoAcceleration;
+ else
+ act->flags |= XkbSA_NoAcceleration;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static LookupEntry btnNames[] = {
+ {"button1", 1},
+ {"button2", 2},
+ {"button3", 3},
+ {"button4", 4},
+ {"button5", 5},
+ {"default", 0},
+ {NULL, 0}
+};
+
+static LookupEntry lockWhich[] = {
+ {"both", 0},
+ {"lock", XkbSA_LockNoUnlock},
+ {"neither", (XkbSA_LockNoLock | XkbSA_LockNoUnlock)},
+ {"unlock", XkbSA_LockNoLock},
+ {NULL, 0}
+};
+
+static Bool
+HandlePtrBtn(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbPtrBtnAction *act;
+
+ act = (XkbPtrBtnAction *) action;
+ if (field == F_Button)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveInteger
+ (value, &rtrn, SimpleLookup, (XPointer) btnNames))
+ return ReportMismatch(action->type, field,
+ "integer (range 1..5)");
+ if ((rtrn.ival < 0) || (rtrn.ival > 5))
+ {
+ ERROR("Button must specify default or be in the range 1..5\n");
+ ACTION1("Illegal button value %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->button = rtrn.ival;
+ return True;
+ }
+ else if ((action->type == XkbSA_LockPtrBtn) && (field == F_Affect))
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveEnum(value, &rtrn, lockWhich))
+ return ReportMismatch(action->type, field, "lock or unlock");
+ act->flags &= ~(XkbSA_LockNoLock | XkbSA_LockNoUnlock);
+ act->flags |= rtrn.ival;
+ return True;
+ }
+ else if (field == F_Count)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveInteger
+ (value, &rtrn, SimpleLookup, (XPointer) btnNames))
+ return ReportMismatch(action->type, field, "integer");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("The count field must have a value in the range 0..255\n");
+ ACTION1("Illegal count %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->count = rtrn.ival;
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static LookupEntry ptrDflts[] = {
+ {"dfltbtn", XkbSA_AffectDfltBtn},
+ {"defaultbutton", XkbSA_AffectDfltBtn},
+ {"button", XkbSA_AffectDfltBtn},
+ {NULL, 0}
+};
+
+static Bool
+HandleSetPtrDflt(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbPtrDfltAction *act;
+
+ act = (XkbPtrDfltAction *) action;
+ if (field == F_Affect)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveEnum(value, &rtrn, ptrDflts))
+ return ReportMismatch(action->type, field, "pointer component");
+ act->affect = rtrn.uval;
+ return True;
+ }
+ else if ((field == F_Button) || (field == F_Value))
+ {
+ ExprDef *btn;
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
+ {
+ act->flags &= ~XkbSA_DfltBtnAbsolute;
+ btn = value->value.child;
+ }
+ else
+ {
+ act->flags |= XkbSA_DfltBtnAbsolute;
+ btn = value;
+ }
+
+ if (!ExprResolveInteger
+ (btn, &rtrn, SimpleLookup, (XPointer) btnNames))
+ return ReportMismatch(action->type, field,
+ "integer (range 1..5)");
+ if ((rtrn.ival < 0) || (rtrn.ival > 5))
+ {
+ ERROR("New default button value must be in the range 1..5\n");
+ ACTION1("Illegal default button value %d ignored\n", rtrn.ival);
+ return False;
+ }
+ if (rtrn.ival == 0)
+ {
+ ERROR("Cannot set default pointer button to \"default\"\n");
+ ACTION("Illegal default button setting ignored\n");
+ return False;
+ }
+ if (value->op == OpNegate)
+ XkbSASetPtrDfltValue(act, -rtrn.ival);
+ else
+ XkbSASetPtrDfltValue(act, rtrn.ival);
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static LookupEntry isoNames[] = {
+ {"mods", XkbSA_ISONoAffectMods},
+ {"modifiers", XkbSA_ISONoAffectMods},
+ {"group", XkbSA_ISONoAffectGroup},
+ {"groups", XkbSA_ISONoAffectGroup},
+ {"ptr", XkbSA_ISONoAffectPtr},
+ {"pointer", XkbSA_ISONoAffectPtr},
+ {"ctrls", XkbSA_ISONoAffectCtrls},
+ {"controls", XkbSA_ISONoAffectCtrls},
+ {"all", ~((unsigned) 0)},
+ {"none", 0},
+ {NULL, 0},
+};
+
+static Bool
+HandleISOLock(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbISOAction *act;
+ unsigned flags, mods;
+ int group;
+
+ act = (XkbISOAction *) action;
+ switch (field)
+ {
+ case F_Modifiers:
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ flags = act->flags;
+ if (CheckModifierField(xkb, action->type, value, &flags, &mods))
+ {
+ act->flags = flags & (~XkbSA_ISODfltIsGroup);
+ act->real_mods = mods & 0xff;
+ mods = (mods >> 8) & 0xff;
+ XkbSetModActionVMods(act, mods);
+ return True;
+ }
+ return False;
+ case F_Group:
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ flags = act->flags;
+ if (CheckGroupField(action->type, value, &flags, &group))
+ {
+ act->flags = flags | XkbSA_ISODfltIsGroup;
+ XkbSASetGroup(act, group);
+ return True;
+ }
+ return False;
+ case F_Affect:
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveMask(value, &rtrn, SimpleLookup, (XPointer) isoNames))
+ return ReportMismatch(action->type, field, "keyboard component");
+ act->affect = (~rtrn.uval) & XkbSA_ISOAffectMask;
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleSwitchScreen(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbSwitchScreenAction *act;
+
+ act = (XkbSwitchScreenAction *) action;
+ if (field == F_Screen)
+ {
+ ExprDef *scrn;
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
+ {
+ act->flags &= ~XkbSA_SwitchAbsolute;
+ scrn = value->value.child;
+ }
+ else
+ {
+ act->flags |= XkbSA_SwitchAbsolute;
+ scrn = value;
+ }
+
+ if (!ExprResolveInteger(scrn, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "integer (0..255)");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("Screen index must be in the range 1..255\n");
+ ACTION1("Illegal screen value %d ignored\n", rtrn.ival);
+ return False;
+ }
+ if (value->op == OpNegate)
+ XkbSASetScreen(act, -rtrn.ival);
+ else
+ XkbSASetScreen(act, rtrn.ival);
+ return True;
+ }
+ else if (field == F_Same)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "boolean");
+ if (rtrn.uval)
+ act->flags &= ~XkbSA_SwitchApplication;
+ else
+ act->flags |= XkbSA_SwitchApplication;
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+LookupEntry ctrlNames[] = {
+ {"repeatkeys", XkbRepeatKeysMask}
+ ,
+ {"repeat", XkbRepeatKeysMask}
+ ,
+ {"autorepeat", XkbRepeatKeysMask}
+ ,
+ {"slowkeys", XkbSlowKeysMask}
+ ,
+ {"bouncekeys", XkbBounceKeysMask}
+ ,
+ {"stickykeys", XkbStickyKeysMask}
+ ,
+ {"mousekeys", XkbMouseKeysMask}
+ ,
+ {"mousekeysaccel", XkbMouseKeysAccelMask}
+ ,
+ {"accessxkeys", XkbAccessXKeysMask}
+ ,
+ {"accessxtimeout", XkbAccessXTimeoutMask}
+ ,
+ {"accessxfeedback", XkbAccessXFeedbackMask}
+ ,
+ {"audiblebell", XkbAudibleBellMask}
+ ,
+ {"overlay1", XkbOverlay1Mask}
+ ,
+ {"overlay2", XkbOverlay2Mask}
+ ,
+ {"ignoregrouplock", XkbIgnoreGroupLockMask}
+ ,
+ {"all", XkbAllBooleanCtrlsMask}
+ ,
+ {"none", 0}
+ ,
+ {NULL, 0}
+};
+
+static Bool
+HandleSetLockControls(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbCtrlsAction *act;
+
+ act = (XkbCtrlsAction *) action;
+ if (field == F_Controls)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveMask
+ (value, &rtrn, SimpleLookup, (XPointer) ctrlNames))
+ return ReportMismatch(action->type, field, "controls mask");
+ XkbActionSetCtrls(act, rtrn.uval);
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static LookupEntry evNames[] = {
+ {"press", XkbSA_MessageOnPress},
+ {"keypress", XkbSA_MessageOnPress},
+ {"release", XkbSA_MessageOnRelease},
+ {"keyrelease", XkbSA_MessageOnRelease},
+ {"all", XkbSA_MessageOnPress | XkbSA_MessageOnRelease},
+ {"none", 0},
+ {NULL, 0}
+};
+
+static Bool
+HandleActionMessage(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbMessageAction *act;
+
+ act = (XkbMessageAction *) action;
+ switch (field)
+ {
+ case F_Report:
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveMask(value, &rtrn, SimpleLookup, (XPointer) evNames))
+ return ReportMismatch(action->type, field, "key event mask");
+ act->flags &= ~(XkbSA_MessageOnPress | XkbSA_MessageOnRelease);
+ act->flags =
+ rtrn.uval & (XkbSA_MessageOnPress | XkbSA_MessageOnRelease);
+ return True;
+ case F_GenKeyEvent:
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "boolean");
+ if (rtrn.uval)
+ act->flags |= XkbSA_MessageGenKeyEvent;
+ else
+ act->flags &= ~XkbSA_MessageGenKeyEvent;
+ return True;
+ case F_Data:
+ if (array_ndx == NULL)
+ {
+ if (!ExprResolveString(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "string");
+ else
+ {
+ int len = strlen(rtrn.str);
+ if ((len < 1) || (len > 6))
+ {
+ WARN("An action message can hold only 6 bytes\n");
+ ACTION1("Extra %d bytes ignored\n", len - 6);
+ }
+ strncpy((char *) act->message, rtrn.str, 6);
+ }
+ return True;
+ }
+ else
+ {
+ unsigned ndx;
+ if (!ExprResolveInteger(array_ndx, &rtrn, NULL, NULL))
+ {
+ ERROR("Array subscript must be integer\n");
+ ACTION("Illegal subscript ignored\n");
+ return False;
+ }
+ ndx = rtrn.uval;
+ if (ndx > 5)
+ {
+ ERROR("An action message is at most 6 bytes long\n");
+ ACTION1("Attempt to use data[%d] ignored\n", ndx);
+ return False;
+ }
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "integer");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("Message data must be in the range 0..255\n");
+ ACTION1("Illegal datum %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->message[ndx] = rtrn.uval;
+ }
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleRedirectKey(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbRedirectKeyAction *act;
+ unsigned t1, t2, vmods, vmask;
+ unsigned long tmp;
+
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+
+ act = (XkbRedirectKeyAction *) action;
+ switch (field)
+ {
+ case F_Keycode:
+ if (!ExprResolveKeyName(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "key name");
+ tmp = KeyNameToLong(rtrn.keyName.name);
+ if (!FindNamedKey(xkb, tmp, &t1, True, CreateKeyNames(xkb), 0))
+ {
+ return ReportNotFound(action->type, field, "Key",
+ XkbKeyNameText(rtrn.keyName.name,
+ XkbMessage));
+ }
+ act->new_key = t1;
+ return True;
+ case F_ModsToClear:
+ case F_Modifiers:
+ t1 = 0;
+ if (CheckModifierField(xkb, action->type, value, &t1, &t2))
+ {
+ act->mods_mask |= (t2 & 0xff);
+ if (field == F_Modifiers)
+ act->mods |= (t2 & 0xff);
+ else
+ act->mods &= ~(t2 & 0xff);
+
+ t2 = (t2 >> 8) & 0xffff;
+ vmods = XkbSARedirectVMods(act);
+ vmask = XkbSARedirectVModsMask(act);
+ vmask |= t2;
+ if (field == F_Modifiers)
+ vmods |= t2;
+ else
+ vmods &= ~t2;
+ XkbSARedirectSetVMods(act, vmods);
+ XkbSARedirectSetVModsMask(act, vmask);
+ return True;
+ }
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleDeviceBtn(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbDeviceBtnAction *act;
+
+ act = (XkbDeviceBtnAction *) action;
+ if (field == F_Button)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field,
+ "integer (range 1..255)");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("Button must specify default or be in the range 1..255\n");
+ ACTION1("Illegal button value %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->button = rtrn.ival;
+ return True;
+ }
+ else if ((action->type == XkbSA_LockDeviceBtn) && (field == F_Affect))
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveEnum(value, &rtrn, lockWhich))
+ return ReportMismatch(action->type, field, "lock or unlock");
+ act->flags &= ~(XkbSA_LockNoLock | XkbSA_LockNoUnlock);
+ act->flags |= rtrn.ival;
+ return True;
+ }
+ else if (field == F_Count)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveInteger
+ (value, &rtrn, SimpleLookup, (XPointer) btnNames))
+ return ReportMismatch(action->type, field, "integer");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("The count field must have a value in the range 0..255\n");
+ ACTION1("Illegal count %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->count = rtrn.ival;
+ return True;
+ }
+ else if (field == F_Device)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field,
+ "integer (range 1..255)");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("Device must specify default or be in the range 1..255\n");
+ ACTION1("Illegal device value %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->device = rtrn.ival;
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleDeviceValuator(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+#if 0
+ ExprResult rtrn;
+ XkbDeviceValuatorAction *act;
+
+ act = (XkbDeviceValuatorAction *) action;
+ /* XXX - Not yet implemented */
+#endif
+ return False;
+}
+
+static Bool
+HandlePrivate(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+
+ switch (field)
+ {
+ case F_Type:
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(PrivateAction, field, "integer");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("Private action type must be in the range 0..255\n");
+ ACTION1("Illegal type %d ignored\n", rtrn.ival);
+ return False;
+ }
+ action->type = rtrn.uval;
+ return True;
+ case F_Data:
+ if (array_ndx == NULL)
+ {
+ if (!ExprResolveString(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "string");
+ else
+ {
+ int len = strlen(rtrn.str);
+ if ((len < 1) || (len > 7))
+ {
+ WARN("A private action has 7 data bytes\n");
+ ACTION1("Extra %d bytes ignored\n", len - 6);
+ return False;
+ }
+ strncpy((char *) action->data, rtrn.str, 7);
+ }
+ return True;
+ }
+ else
+ {
+ unsigned ndx;
+ if (!ExprResolveInteger(array_ndx, &rtrn, NULL, NULL))
+ {
+ ERROR("Array subscript must be integer\n");
+ ACTION("Illegal subscript ignored\n");
+ return False;
+ }
+ ndx = rtrn.uval;
+ if (ndx > 6)
+ {
+ ERROR("The data for a private action is 7 bytes long\n");
+ ACTION1("Attempt to use data[%d] ignored\n", ndx);
+ return False;
+ }
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "integer");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("All data for a private action must be 0..255\n");
+ ACTION1("Illegal datum %d ignored\n", rtrn.ival);
+ return False;
+ }
+ action->data[ndx] = rtrn.uval;
+ return True;
+ }
+ }
+ return ReportIllegal(PrivateAction, field);
+}
+
+typedef Bool(*actionHandler) (XkbDescPtr /* xkb */ ,
+ XkbAnyAction * /* action */ ,
+ unsigned /* field */ ,
+ ExprDef * /* array_ndx */ ,
+ ExprDef * /* value */
+ );
+
+static actionHandler handleAction[XkbSA_NumActions + 1] = {
+ HandleNoAction /* NoAction */ ,
+ HandleSetLatchMods /* SetMods */ ,
+ HandleSetLatchMods /* LatchMods */ ,
+ HandleLockMods /* LockMods */ ,
+ HandleSetLatchGroup /* SetGroup */ ,
+ HandleSetLatchGroup /* LatchGroup */ ,
+ HandleLockGroup /* LockGroup */ ,
+ HandleMovePtr /* MovePtr */ ,
+ HandlePtrBtn /* PtrBtn */ ,
+ HandlePtrBtn /* LockPtrBtn */ ,
+ HandleSetPtrDflt /* SetPtrDflt */ ,
+ HandleISOLock /* ISOLock */ ,
+ HandleNoAction /* Terminate */ ,
+ HandleSwitchScreen /* SwitchScreen */ ,
+ HandleSetLockControls /* SetControls */ ,
+ HandleSetLockControls /* LockControls */ ,
+ HandleActionMessage /* ActionMessage */ ,
+ HandleRedirectKey /* RedirectKey */ ,
+ HandleDeviceBtn /* DeviceBtn */ ,
+ HandleDeviceBtn /* LockDeviceBtn */ ,
+ HandleDeviceValuator /* DeviceValuatr */ ,
+ HandlePrivate /* Private */
+};
+
+/***====================================================================***/
+
+static void
+ApplyActionFactoryDefaults(XkbAction * action)
+{
+ if (action->type == XkbSA_SetPtrDflt)
+ { /* increment default button */
+ action->dflt.affect = XkbSA_AffectDfltBtn;
+ action->dflt.flags = 0;
+ XkbSASetPtrDfltValue(&action->dflt, 1);
+ }
+ else if (action->type == XkbSA_ISOLock)
+ {
+ action->iso.real_mods = LockMask;
+ }
+ return;
+}
+
+
+int
+HandleActionDef(ExprDef * def,
+ XkbDescPtr xkb,
+ XkbAnyAction * action, unsigned mergeMode, ActionInfo * info)
+{
+ ExprDef *arg;
+ register char *str;
+ unsigned tmp, hndlrType;
+
+ if (!actionsInitialized)
+ ActionsInit();
+
+ if (def->op != ExprActionDecl)
+ {
+ ERROR1("Expected an action definition, found %s\n",
+ exprOpText(def->op));
+ return False;
+ }
+ str = XkbAtomGetString(NULL, def->value.action.name);
+ if (!str)
+ {
+ WSGO("Missing name in action definition!!\n");
+ return False;
+ }
+ if (!stringToAction(str, &tmp))
+ {
+ ERROR1("Unknown action %s\n", str);
+ return False;
+ }
+ action->type = hndlrType = tmp;
+ if (action->type != XkbSA_NoAction)
+ {
+ ApplyActionFactoryDefaults((XkbAction *) action);
+ while (info)
+ {
+ if ((info->action == XkbSA_NoAction)
+ || (info->action == hndlrType))
+ {
+ if (!(*handleAction[hndlrType]) (xkb, action,
+ info->field,
+ info->array_ndx,
+ info->value))
+ {
+ return False;
+ }
+ }
+ info = info->next;
+ }
+ }
+ for (arg = def->value.action.args; arg != NULL;
+ arg = (ExprDef *) arg->common.next)
+ {
+ ExprDef *field, *value, *arrayRtrn;
+ ExprResult elemRtrn, fieldRtrn;
+ unsigned fieldNdx;
+
+ if (arg->op == OpAssign)
+ {
+ field = arg->value.binary.left;
+ value = arg->value.binary.right;
+ }
+ else
+ {
+ if ((arg->op == OpNot) || (arg->op == OpInvert))
+ {
+ field = arg->value.child;
+ value = &constFalse;
+ }
+ else
+ {
+ field = arg;
+ value = &constTrue;
+ }
+ }
+ if (!ExprResolveLhs(field, &elemRtrn, &fieldRtrn, &arrayRtrn))
+ return False; /* internal error -- already reported */
+
+ if (elemRtrn.str != NULL)
+ {
+ ERROR("Cannot change defaults in an action definition\n");
+ ACTION2("Ignoring attempt to change %s.%s\n", elemRtrn.str,
+ fieldRtrn.str);
+ return False;
+ }
+ if (!stringToField(fieldRtrn.str, &fieldNdx))
+ {
+ ERROR1("Unknown field name %s\n", uStringText(fieldRtrn.str));
+ return False;
+ }
+ if (!(*handleAction[hndlrType])
+ (xkb, action, fieldNdx, arrayRtrn, value))
+ {
+ return False;
+ }
+ }
+ return True;
+}
+
+/***====================================================================***/
+
+int
+SetActionField(XkbDescPtr xkb,
+ char *elem,
+ char *field,
+ ExprDef * array_ndx, ExprDef * value, ActionInfo ** info_rtrn)
+{
+ ActionInfo *new, *old;
+
+ if (!actionsInitialized)
+ ActionsInit();
+
+ new = uTypedAlloc(ActionInfo);
+ if (new == NULL)
+ {
+ WSGO("Couldn't allocate space for action default\n");
+ return False;
+ }
+ if (uStrCaseCmp(elem, "action") == 0)
+ new->action = XkbSA_NoAction;
+ else
+ {
+ if (!stringToAction(elem, &new->action))
+ return False;
+ if (new->action == XkbSA_NoAction)
+ {
+ ERROR1("\"%s\" is not a valid field in a NoAction action\n",
+ field);
+ return False;
+ }
+ }
+ if (!stringToField(field, &new->field))
+ {
+ ERROR1("\"%s\" is not a legal field name\n", field);
+ return False;
+ }
+ new->array_ndx = array_ndx;
+ new->value = value;
+ new->next = NULL;
+ old = *info_rtrn;
+ while ((old) && (old->next))
+ old = old->next;
+ if (old == NULL)
+ *info_rtrn = new;
+ else
+ old->next = new;
+ return True;
+}
+
+/***====================================================================***/
+
+void
+ActionsInit(void)
+{
+ if (!actionsInitialized)
+ {
+ bzero((char *) &constTrue, sizeof(constTrue));
+ bzero((char *) &constFalse, sizeof(constFalse));
+ constTrue.common.stmtType = StmtExpr;
+ constTrue.common.next = NULL;
+ constTrue.op = ExprIdent;
+ constTrue.type = TypeBoolean;
+ constTrue.value.str = XkbInternAtom(NULL, "true", False);
+ constFalse.common.stmtType = StmtExpr;
+ constFalse.common.next = NULL;
+ constFalse.op = ExprIdent;
+ constFalse.type = TypeBoolean;
+ constFalse.value.str = XkbInternAtom(NULL, "false", False);
+ actionsInitialized = 1;
+ }
+ return;
+}
diff --git a/xkbcomp/action.h b/xkbcomp/action.h
index 2fb7a5eb9..61666e8a1 100644
--- a/xkbcomp/action.h
+++ b/xkbcomp/action.h
@@ -1,86 +1,86 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#ifndef ACTION_H
-#define ACTION_H 1
-
-#define F_ClearLocks 0
-#define F_LatchToLock 1
-#define F_GenKeyEvent 2
-#define F_Report 3
-#define F_Default 4
-#define F_Affect 5
-#define F_Increment 6
-#define F_Modifiers 7
-#define F_Group 8
-#define F_X 9
-#define F_Y 10
-#define F_Accel 11
-#define F_Button 12
-#define F_Value 13
-#define F_Controls 14
-#define F_Type 15
-#define F_Count 16
-#define F_Screen 17
-#define F_Same 18
-#define F_Data 19
-#define F_Device 20
-#define F_Keycode 21
-#define F_ModsToClear 22
-#define F_LastField F_ModsToClear
-#define F_NumFields (F_LastField+1)
-
-#define PrivateAction (XkbSA_LastAction+1)
-
-typedef struct _ActionInfo
-{
- unsigned action;
- unsigned field;
- ExprDef *array_ndx;
- ExprDef *value;
- struct _ActionInfo *next;
-} ActionInfo;
-
-extern int HandleActionDef(ExprDef * /* def */ ,
- XkbDescPtr /* xkb */ ,
- XkbAnyAction * /* action */ ,
- unsigned /* mergeMode */ ,
- ActionInfo * /* info */
- );
-
-extern int SetActionField(XkbDescPtr /* xkb */ ,
- char * /* elem */ ,
- char * /* field */ ,
- ExprDef * /* index */ ,
- ExprDef * /* value */ ,
- ActionInfo ** /* info_rtrn */
- );
-
-extern void ActionsInit(void);
-
-extern LookupEntry ctrlNames[];
-
-#endif /* ACTION_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#ifndef ACTION_H
+#define ACTION_H 1
+
+#define F_ClearLocks 0
+#define F_LatchToLock 1
+#define F_GenKeyEvent 2
+#define F_Report 3
+#define F_Default 4
+#define F_Affect 5
+#define F_Increment 6
+#define F_Modifiers 7
+#define F_Group 8
+#define F_X 9
+#define F_Y 10
+#define F_Accel 11
+#define F_Button 12
+#define F_Value 13
+#define F_Controls 14
+#define F_Type 15
+#define F_Count 16
+#define F_Screen 17
+#define F_Same 18
+#define F_Data 19
+#define F_Device 20
+#define F_Keycode 21
+#define F_ModsToClear 22
+#define F_LastField F_ModsToClear
+#define F_NumFields (F_LastField+1)
+
+#define PrivateAction (XkbSA_LastAction+1)
+
+typedef struct _ActionInfo
+{
+ unsigned action;
+ unsigned field;
+ ExprDef *array_ndx;
+ ExprDef *value;
+ struct _ActionInfo *next;
+} ActionInfo;
+
+extern int HandleActionDef(ExprDef * /* def */ ,
+ XkbDescPtr /* xkb */ ,
+ XkbAnyAction * /* action */ ,
+ unsigned /* mergeMode */ ,
+ ActionInfo * /* info */
+ );
+
+extern int SetActionField(XkbDescPtr /* xkb */ ,
+ char * /* elem */ ,
+ char * /* field */ ,
+ ExprDef * /* index */ ,
+ ExprDef * /* value */ ,
+ ActionInfo ** /* info_rtrn */
+ );
+
+extern void ActionsInit(void);
+
+extern LookupEntry ctrlNames[];
+
+#endif /* ACTION_H */
diff --git a/xkbcomp/alias.h b/xkbcomp/alias.h
index b6fac5bfa..7603c273c 100644
--- a/xkbcomp/alias.h
+++ b/xkbcomp/alias.h
@@ -1,56 +1,56 @@
-/************************************************************
- Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#ifndef ALIAS_H
-#define ALIAS_H 1
-
-typedef struct _AliasInfo
-{
- CommonInfo def;
- char alias[XkbKeyNameLength + 1];
- char real[XkbKeyNameLength + 1];
-} AliasInfo;
-
-extern int HandleAliasDef(KeyAliasDef * /* def */ ,
- unsigned /* merge */ ,
- unsigned /* file_id */ ,
- AliasInfo ** /* info */
- );
-
-extern void ClearAliases(AliasInfo ** /* info */
- );
-
-extern Bool MergeAliases(AliasInfo ** /* into */ ,
- AliasInfo ** /* merge */ ,
- unsigned /* how_merge */
- );
-
-extern int ApplyAliases(XkbDescPtr /* xkb */ ,
- Bool /* toGeom */ ,
- AliasInfo ** /* info */
- );
-
-#endif /* ALIAS_H */
+/************************************************************
+ Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#ifndef ALIAS_H
+#define ALIAS_H 1
+
+typedef struct _AliasInfo
+{
+ CommonInfo def;
+ char alias[XkbKeyNameLength + 1];
+ char real[XkbKeyNameLength + 1];
+} AliasInfo;
+
+extern int HandleAliasDef(KeyAliasDef * /* def */ ,
+ unsigned /* merge */ ,
+ unsigned /* file_id */ ,
+ AliasInfo ** /* info */
+ );
+
+extern void ClearAliases(AliasInfo ** /* info */
+ );
+
+extern Bool MergeAliases(AliasInfo ** /* into */ ,
+ AliasInfo ** /* merge */ ,
+ unsigned /* how_merge */
+ );
+
+extern int ApplyAliases(XkbDescPtr /* xkb */ ,
+ Bool /* toGeom */ ,
+ AliasInfo ** /* info */
+ );
+
+#endif /* ALIAS_H */
diff --git a/xkbcomp/compat.h b/xkbcomp/compat.h
index 799b215ee..702883275 100644
--- a/xkbcomp/compat.h
+++ b/xkbcomp/compat.h
@@ -1,7 +1,7 @@
-
-#ifndef COMPAT_H
-#define COMPAT_H 1
-
-extern LookupEntry groupNames[];
-
-#endif /* COMPAT_H */
+
+#ifndef COMPAT_H
+#define COMPAT_H 1
+
+extern LookupEntry groupNames[];
+
+#endif /* COMPAT_H */
diff --git a/xkbcomp/expr.c b/xkbcomp/expr.c
index 96fd95675..33a2dddee 100644
--- a/xkbcomp/expr.c
+++ b/xkbcomp/expr.c
@@ -1,1065 +1,1065 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "tokens.h"
-#include "expr.h"
-
-#include <ctype.h>
-
-/***====================================================================***/
-
-char *
-exprOpText(unsigned type)
-{
- static char buf[32];
-
- switch (type)
- {
- case ExprValue:
- strcpy(buf, "literal");
- break;
- case ExprIdent:
- strcpy(buf, "identifier");
- break;
- case ExprActionDecl:
- strcpy(buf, "action declaration");
- break;
- case ExprFieldRef:
- strcpy(buf, "field reference");
- break;
- case ExprArrayRef:
- strcpy(buf, "array reference");
- break;
- case ExprKeysymList:
- strcpy(buf, "list of keysyms");
- break;
- case ExprActionList:
- strcpy(buf, "list of actions");
- break;
- case OpAdd:
- strcpy(buf, "addition");
- break;
- case OpSubtract:
- strcpy(buf, "subtraction");
- break;
- case OpMultiply:
- strcpy(buf, "multiplication");
- break;
- case OpDivide:
- strcpy(buf, "division");
- break;
- case OpAssign:
- strcpy(buf, "assignment");
- break;
- case OpNot:
- strcpy(buf, "logical not");
- break;
- case OpNegate:
- strcpy(buf, "arithmetic negation");
- break;
- case OpInvert:
- strcpy(buf, "bitwise inversion");
- break;
- case OpUnaryPlus:
- strcpy(buf, "plus sign");
- break;
- default:
- snprintf(buf, sizeof(buf), "illegal(%d)", type);
- break;
- }
- return buf;
-}
-
-char *
-exprTypeText(unsigned type)
-{
- static char buf[20];
-
- switch (type)
- {
- case TypeUnknown:
- strcpy(buf, "unknown");
- break;
- case TypeBoolean:
- strcpy(buf, "boolean");
- break;
- case TypeInt:
- strcpy(buf, "int");
- break;
- case TypeString:
- strcpy(buf, "string");
- break;
- case TypeAction:
- strcpy(buf, "action");
- break;
- case TypeKeyName:
- strcpy(buf, "keyname");
- break;
- default:
- snprintf(buf, sizeof(buf), "illegal(%d)", type);
- break;
- }
- return buf;
-}
-
-int
-ExprResolveLhs(ExprDef * expr,
- ExprResult * elem_rtrn,
- ExprResult * field_rtrn, ExprDef ** index_rtrn)
-{
- switch (expr->op)
- {
- case ExprIdent:
- elem_rtrn->str = NULL;
- field_rtrn->str = XkbAtomGetString(NULL, expr->value.str);
- *index_rtrn = NULL;
- return True;
- case ExprFieldRef:
- elem_rtrn->str = XkbAtomGetString(NULL, expr->value.field.element);
- field_rtrn->str = XkbAtomGetString(NULL, expr->value.field.field);
- *index_rtrn = NULL;
- return True;
- case ExprArrayRef:
- elem_rtrn->str = XkbAtomGetString(NULL, expr->value.array.element);
- field_rtrn->str = XkbAtomGetString(NULL, expr->value.array.field);
- *index_rtrn = expr->value.array.entry;
- return True;
- }
- WSGO1("Unexpected operator %d in ResolveLhs\n", expr->op);
- return False;
-}
-
-Bool
-SimpleLookup(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- LookupEntry *entry;
- register char *str;
-
- if ((priv == NULL) ||
- (field == None) || (elem != None) ||
- ((type != TypeInt) && (type != TypeFloat)))
- {
- return False;
- }
- str = XkbAtomGetString(NULL, field);
- for (entry = (LookupEntry *) priv;
- (entry != NULL) && (entry->name != NULL); entry++)
- {
- if (uStrCaseCmp(str, entry->name) == 0)
- {
- val_rtrn->uval = entry->result;
- if (type == TypeFloat)
- val_rtrn->uval *= XkbGeomPtsPerMM;
- return True;
- }
- }
- return False;
-}
-
-Bool
-RadioLookup(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- register char *str;
- int rg;
-
- if ((field == None) || (elem != None) || (type != TypeInt))
- return False;
- str = XkbAtomGetString(NULL, field);
- if (str)
- {
- if (uStrCasePrefix("group", str))
- str += strlen("group");
- else if (uStrCasePrefix("radiogroup", str))
- str += strlen("radiogroup");
- else if (uStrCasePrefix("rg", str))
- str += strlen("rg");
- else if (!isdigit(str[0]))
- str = NULL;
- }
- if ((!str) || (sscanf(str, "%i", &rg) < 1) || (rg < 1)
- || (rg > XkbMaxRadioGroups))
- return False;
- val_rtrn->uval = rg;
- return True;
-}
-
-int
-TableLookup(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- LookupTable *tbl = (LookupTable *) priv;
- register char *str;
-
- if ((priv == NULL) || (field == None) || (type != TypeInt))
- return False;
- str = XkbAtomGetString(NULL, elem);
- while (tbl)
- {
- if (((str == NULL) && (tbl->element == NULL)) ||
- ((str != NULL) && (tbl->element != NULL) &&
- (uStrCaseCmp(str, tbl->element) == 0)))
- {
- break;
- }
- tbl = tbl->nextElement;
- }
- if (tbl == NULL) /* didn't find a matching element */
- return False;
- priv = (XPointer) tbl->entries;
- return SimpleLookup(priv, (Atom) None, field, type, val_rtrn);
-}
-
-static LookupEntry modIndexNames[] = {
- {"shift", ShiftMapIndex},
- {"control", ControlMapIndex},
- {"lock", LockMapIndex},
- {"mod1", Mod1MapIndex},
- {"mod2", Mod2MapIndex},
- {"mod3", Mod3MapIndex},
- {"mod4", Mod4MapIndex},
- {"mod5", Mod5MapIndex},
- {"none", XkbNoModifier},
- {NULL, 0}
-};
-
-int
-LookupModIndex(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- return SimpleLookup((XPointer) modIndexNames, elem, field, type,
- val_rtrn);
-}
-
-int
-LookupModMask(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- char *str;
-
- if ((elem != None) || (type != TypeInt))
- return False;
- str = XkbAtomGetString(NULL, field);
- if (str == NULL)
- return False;
- if (uStrCaseCmp(str, "all") == 0)
- val_rtrn->uval = 0xff;
- else if (uStrCaseCmp(str, "none") == 0)
- val_rtrn->uval = 0;
- else if (LookupModIndex(priv, elem, field, type, val_rtrn))
- val_rtrn->uval = (1 << val_rtrn->uval);
- else if (priv != NULL)
- {
- LookupPriv *lpriv = (LookupPriv *) priv;
- if ((lpriv->chain == NULL) ||
- (!(*lpriv->chain) (lpriv->chainPriv, elem, field, type,
- val_rtrn)))
- return False;
- }
- else
- return False;
- return True;
-}
-
-int
-ExprResolveModIndex(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- char *bogus = NULL;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type != TypeInt)
- {
- ERROR1
- ("Found constant of type %s where a modifier mask was expected\n",
- exprTypeText(expr->type));
- return False;
- }
- else if ((expr->value.ival >= XkbNumModifiers)
- || (expr->value.ival < 0))
- {
- ERROR2("Illegal modifier index (%d, must be 0..%d)\n",
- expr->value.ival, XkbNumModifiers - 1);
- return False;
- }
- val_rtrn->ival = expr->value.ival;
- return True;
- case ExprIdent:
- if (LookupModIndex(lookupPriv, (Atom) None, expr->value.str,
- (unsigned) TypeInt, val_rtrn))
- {
- return True;
- }
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR1("Cannot determine modifier index for \"%s\"\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- break;
- case ExprFieldRef:
- bogus = "field reference";
- break;
- case ExprArrayRef:
- bogus = "array reference";
- break;
- case ExprActionDecl:
- bogus = "function";
- break;
- case OpAdd:
- case OpSubtract:
- case OpMultiply:
- case OpDivide:
- case OpInvert:
- case OpNegate:
- case OpNot:
- case OpUnaryPlus:
- bogus = "arithmetic operations";
- break;
- case OpAssign:
- bogus = "assignment";
- break;
- default:
- WSGO1("Unknown operator %d in ResolveModIndex\n", expr->op);
- return False;
- }
- if (bogus)
- {
- ERROR1("Modifier index must be a name or number, %s ignored\n",
- bogus);
- return False;
- }
- return ok;
-}
-
-int
-ExprResolveModMask(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- LookupPriv priv;
-
- priv.priv = NULL;
- priv.chain = lookup;
- priv.chainPriv = lookupPriv;
- return ExprResolveMask(expr, val_rtrn, LookupModMask, (XPointer) & priv);
-}
-
-int
-ExprResolveBoolean(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- char *bogus = NULL;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type != TypeBoolean)
- {
- ERROR1
- ("Found constant of type %s where boolean was expected\n",
- exprTypeText(expr->type));
- return False;
- }
- val_rtrn->ival = expr->value.ival;
- return True;
- case ExprIdent:
- bogus = XkbAtomGetString(NULL, expr->value.str);
- if (bogus)
- {
- if ((uStrCaseCmp(bogus, "true") == 0) ||
- (uStrCaseCmp(bogus, "yes") == 0) ||
- (uStrCaseCmp(bogus, "on") == 0))
- {
- val_rtrn->uval = 1;
- return True;
- }
- else if ((uStrCaseCmp(bogus, "false") == 0) ||
- (uStrCaseCmp(bogus, "no") == 0) ||
- (uStrCaseCmp(bogus, "off") == 0))
- {
- val_rtrn->uval = 0;
- return True;
- }
- }
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeBoolean, val_rtrn);
- }
- if (!ok)
- ERROR1("Identifier \"%s\" of type int is unknown\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeBoolean, val_rtrn);
- }
- if (!ok)
- ERROR2("Default \"%s.%s\" of type boolean is unknown\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case OpInvert:
- case OpNot:
- ok = ExprResolveBoolean(expr, val_rtrn, lookup, lookupPriv);
- if (ok)
- val_rtrn->uval = !val_rtrn->uval;
- return ok;
- case OpAdd:
- if (bogus == NULL)
- bogus = "Addition";
- case OpSubtract:
- if (bogus == NULL)
- bogus = "Subtraction";
- case OpMultiply:
- if (bogus == NULL)
- bogus = "Multiplication";
- case OpDivide:
- if (bogus == NULL)
- bogus = "Division";
- case OpAssign:
- if (bogus == NULL)
- bogus = "Assignment";
- case OpNegate:
- if (bogus == NULL)
- bogus = "Negation";
- ERROR1("%s of boolean values not permitted\n", bogus);
- break;
- case OpUnaryPlus:
- ERROR("Unary \"+\" operator not permitted for boolean values\n");
- break;
- default:
- WSGO1("Unknown operator %d in ResolveBoolean\n", expr->op);
- break;
- }
- return False;
-}
-
-int
-ExprResolveFloat(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- ExprResult leftRtrn, rightRtrn;
- ExprDef *left, *right;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type == TypeString)
- {
- register char *str;
- str = XkbAtomGetString(NULL, expr->value.str);
- if ((str != NULL) && (strlen(str) == 1))
- {
- val_rtrn->uval = str[0] * XkbGeomPtsPerMM;
- return True;
- }
- }
- if ((expr->type != TypeInt) && (expr->type != TypeFloat))
- {
- ERROR1("Found constant of type %s, expected a number\n",
- exprTypeText(expr->type));
- return False;
- }
- val_rtrn->ival = expr->value.ival;
- if (expr->type == TypeInt)
- val_rtrn->ival *= XkbGeomPtsPerMM;
- return True;
- case ExprIdent:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeFloat, val_rtrn);
- }
- if (!ok)
- ERROR1("Numeric identifier \"%s\" unknown\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeFloat, val_rtrn);
- }
- if (!ok)
- ERROR2("Numeric default \"%s.%s\" unknown\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case OpAdd:
- case OpSubtract:
- case OpMultiply:
- case OpDivide:
- left = expr->value.binary.left;
- right = expr->value.binary.right;
- if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv) &&
- ExprResolveFloat(right, &rightRtrn, lookup, lookupPriv))
- {
- switch (expr->op)
- {
- case OpAdd:
- val_rtrn->ival = leftRtrn.ival + rightRtrn.ival;
- break;
- case OpSubtract:
- val_rtrn->ival = leftRtrn.ival - rightRtrn.ival;
- break;
- case OpMultiply:
- val_rtrn->ival = leftRtrn.ival * rightRtrn.ival;
- break;
- case OpDivide:
- val_rtrn->ival = leftRtrn.ival / rightRtrn.ival;
- break;
- }
- return True;
- }
- return False;
- case OpAssign:
- WSGO("Assignment operator not implemented yet\n");
- break;
- case OpNot:
- left = expr->value.child;
- if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The ! operator cannot be applied to a number\n");
- }
- return False;
- case OpInvert:
- case OpNegate:
- left = expr->value.child;
- if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv))
- {
- if (expr->op == OpNegate)
- val_rtrn->ival = -leftRtrn.ival;
- else
- val_rtrn->ival = ~leftRtrn.ival;
- return True;
- }
- return False;
- case OpUnaryPlus:
- left = expr->value.child;
- return ExprResolveFloat(left, val_rtrn, lookup, lookupPriv);
- default:
- WSGO1("Unknown operator %d in ResolveFloat\n", expr->op);
- break;
- }
- return False;
-}
-
-int
-ExprResolveInteger(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- ExprResult leftRtrn, rightRtrn;
- ExprDef *left, *right;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type == TypeString)
- {
- register char *str;
- str = XkbAtomGetString(NULL, expr->value.str);
- if (str != NULL)
- switch (strlen(str))
- {
- case 0:
- val_rtrn->uval = 0;
- return True;
- case 1:
- val_rtrn->uval = str[0];
- return True;
- default:
- break;
- }
- }
- if ((expr->type != TypeInt) && (expr->type != TypeFloat))
- {
- ERROR1
- ("Found constant of type %s where an int was expected\n",
- exprTypeText(expr->type));
- return False;
- }
- val_rtrn->ival = expr->value.ival;
- if (expr->type == TypeFloat)
- val_rtrn->ival /= XkbGeomPtsPerMM;
- return True;
- case ExprIdent:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR1("Identifier \"%s\" of type int is unknown\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR2("Default \"%s.%s\" of type int is unknown\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case OpAdd:
- case OpSubtract:
- case OpMultiply:
- case OpDivide:
- left = expr->value.binary.left;
- right = expr->value.binary.right;
- if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv) &&
- ExprResolveInteger(right, &rightRtrn, lookup, lookupPriv))
- {
- switch (expr->op)
- {
- case OpAdd:
- val_rtrn->ival = leftRtrn.ival + rightRtrn.ival;
- break;
- case OpSubtract:
- val_rtrn->ival = leftRtrn.ival - rightRtrn.ival;
- break;
- case OpMultiply:
- val_rtrn->ival = leftRtrn.ival * rightRtrn.ival;
- break;
- case OpDivide:
- val_rtrn->ival = leftRtrn.ival / rightRtrn.ival;
- break;
- }
- return True;
- }
- return False;
- case OpAssign:
- WSGO("Assignment operator not implemented yet\n");
- break;
- case OpNot:
- left = expr->value.child;
- if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The ! operator cannot be applied to an integer\n");
- }
- return False;
- case OpInvert:
- case OpNegate:
- left = expr->value.child;
- if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
- {
- if (expr->op == OpNegate)
- val_rtrn->ival = -leftRtrn.ival;
- else
- val_rtrn->ival = ~leftRtrn.ival;
- return True;
- }
- return False;
- case OpUnaryPlus:
- left = expr->value.child;
- return ExprResolveInteger(left, val_rtrn, lookup, lookupPriv);
- default:
- WSGO1("Unknown operator %d in ResolveInteger\n", expr->op);
- break;
- }
- return False;
-}
-
-int
-ExprResolveString(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- ExprResult leftRtrn, rightRtrn;
- ExprDef *left;
- ExprDef *right;
- char *bogus = NULL;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type != TypeString)
- {
- ERROR1("Found constant of type %s, expected a string\n",
- exprTypeText(expr->type));
- return False;
- }
- val_rtrn->str = XkbAtomGetString(NULL, expr->value.str);
- if (val_rtrn->str == NULL)
- {
- static char *empty = "";
- val_rtrn->str = empty;
- }
- return True;
- case ExprIdent:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeString, val_rtrn);
- }
- if (!ok)
- ERROR1("Identifier \"%s\" of type string not found\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeString, val_rtrn);
- }
- if (!ok)
- ERROR2("Default \"%s.%s\" of type string not found\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case OpAdd:
- left = expr->value.binary.left;
- right = expr->value.binary.right;
- if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv) &&
- ExprResolveString(right, &rightRtrn, lookup, lookupPriv))
- {
- int len;
- char *new;
- len = strlen(leftRtrn.str) + strlen(rightRtrn.str) + 1;
- new = (char *) uAlloc(len);
- if (new)
- {
- sprintf(new, "%s%s", leftRtrn.str, rightRtrn.str);
- val_rtrn->str = new;
- return True;
- }
- }
- return False;
- case OpSubtract:
- if (bogus == NULL)
- bogus = "Subtraction";
- case OpMultiply:
- if (bogus == NULL)
- bogus = "Multiplication";
- case OpDivide:
- if (bogus == NULL)
- bogus = "Division";
- case OpAssign:
- if (bogus == NULL)
- bogus = "Assignment";
- case OpNegate:
- if (bogus == NULL)
- bogus = "Negation";
- case OpInvert:
- if (bogus == NULL)
- bogus = "Bitwise complement";
- ERROR1("%s of string values not permitted\n", bogus);
- return False;
- case OpNot:
- left = expr->value.child;
- if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The ! operator cannot be applied to a string\n");
- }
- return False;
- case OpUnaryPlus:
- left = expr->value.child;
- if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The + operator cannot be applied to a string\n");
- }
- return False;
- default:
- WSGO1("Unknown operator %d in ResolveString\n", expr->op);
- break;
- }
- return False;
-}
-
-int
-ExprResolveKeyName(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- ExprDef *left;
- ExprResult leftRtrn;
- char *bogus = NULL;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type != TypeKeyName)
- {
- ERROR1("Found constant of type %s, expected a key name\n",
- exprTypeText(expr->type));
- return False;
- }
- memcpy(val_rtrn->keyName.name, expr->value.keyName, XkbKeyNameLength);
- return True;
- case ExprIdent:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeString, val_rtrn);
- }
- if (!ok)
- ERROR1("Identifier \"%s\" of type string not found\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeString, val_rtrn);
- }
- if (!ok)
- ERROR2("Default \"%s.%s\" of type key name not found\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case OpAdd:
- if (bogus == NULL)
- bogus = "Addition";
- case OpSubtract:
- if (bogus == NULL)
- bogus = "Subtraction";
- case OpMultiply:
- if (bogus == NULL)
- bogus = "Multiplication";
- case OpDivide:
- if (bogus == NULL)
- bogus = "Division";
- case OpAssign:
- if (bogus == NULL)
- bogus = "Assignment";
- case OpNegate:
- if (bogus == NULL)
- bogus = "Negation";
- case OpInvert:
- if (bogus == NULL)
- bogus = "Bitwise complement";
- ERROR1("%s of key name values not permitted\n", bogus);
- return False;
- case OpNot:
- left = expr->value.binary.left;
- if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The ! operator cannot be applied to a key name\n");
- }
- return False;
- case OpUnaryPlus:
- left = expr->value.binary.left;
- if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The + operator cannot be applied to a key name\n");
- }
- return False;
- default:
- WSGO1("Unknown operator %d in ResolveKeyName\n", expr->op);
- break;
- }
- return False;
-}
-
-/***====================================================================***/
-
-int
-ExprResolveEnum(ExprDef * expr, ExprResult * val_rtrn, LookupEntry * values)
-{
- if (expr->op != ExprIdent)
- {
- ERROR1("Found a %s where an enumerated value was expected\n",
- exprOpText(expr->op));
- return False;
- }
- if (!SimpleLookup((XPointer) values, (Atom) None, expr->value.str,
- (unsigned) TypeInt, val_rtrn))
- {
- int nOut = 0;
- ERROR1("Illegal identifier %s (expected one of: ",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- while (values && values->name)
- {
- if (nOut != 0)
- INFO1(", %s", values->name);
- else
- INFO1("%s", values->name);
- values++;
- nOut++;
- }
- INFO(")\n");
- return False;
- }
- return True;
-}
-
-int
-ExprResolveMask(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- ExprResult leftRtrn, rightRtrn;
- ExprDef *left, *right;
- char *bogus = NULL;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type != TypeInt)
- {
- ERROR1
- ("Found constant of type %s where a mask was expected\n",
- exprTypeText(expr->type));
- return False;
- }
- val_rtrn->ival = expr->value.ival;
- return True;
- case ExprIdent:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR1("Identifier \"%s\" of type int is unknown\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR2("Default \"%s.%s\" of type int is unknown\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case ExprArrayRef:
- bogus = "array reference";
- case ExprActionDecl:
- if (bogus == NULL)
- bogus = "function use";
- ERROR1("Unexpected %s in mask expression\n", bogus);
- ACTION("Expression ignored\n");
- return False;
- case OpAdd:
- case OpSubtract:
- case OpMultiply:
- case OpDivide:
- left = expr->value.binary.left;
- right = expr->value.binary.right;
- if (ExprResolveMask(left, &leftRtrn, lookup, lookupPriv) &&
- ExprResolveMask(right, &rightRtrn, lookup, lookupPriv))
- {
- switch (expr->op)
- {
- case OpAdd:
- val_rtrn->ival = leftRtrn.ival | rightRtrn.ival;
- break;
- case OpSubtract:
- val_rtrn->ival = leftRtrn.ival & (~rightRtrn.ival);
- break;
- case OpMultiply:
- case OpDivide:
- ERROR1("Cannot %s masks\n",
- expr->op == OpDivide ? "divide" : "multiply");
- ACTION("Illegal operation ignored\n");
- return False;
- }
- return True;
- }
- return False;
- case OpAssign:
- WSGO("Assignment operator not implemented yet\n");
- break;
- case OpInvert:
- left = expr->value.child;
- if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
- {
- val_rtrn->ival = ~leftRtrn.ival;
- return True;
- }
- return False;
- case OpUnaryPlus:
- case OpNegate:
- case OpNot:
- left = expr->value.child;
- if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR1("The %s operator cannot be used with a mask\n",
- (expr->op == OpNegate ? "-" : "!"));
- }
- return False;
- default:
- WSGO1("Unknown operator %d in ResolveMask\n", expr->op);
- break;
- }
- return False;
-}
-
-int
-ExprResolveKeySym(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- KeySym sym;
-
- if (expr->op == ExprIdent)
- {
- char *str;
- str = XkbAtomGetString(NULL, expr->value.str);
- if ((str != NULL) && ((sym = XStringToKeysym(str)) != NoSymbol))
- {
- val_rtrn->uval = sym;
- return True;
- }
- }
- ok = ExprResolveInteger(expr, val_rtrn, lookup, lookupPriv);
- if ((ok) && (val_rtrn->uval < 10))
- val_rtrn->uval += '0';
- return ok;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "tokens.h"
+#include "expr.h"
+
+#include <ctype.h>
+
+/***====================================================================***/
+
+char *
+exprOpText(unsigned type)
+{
+ static char buf[32];
+
+ switch (type)
+ {
+ case ExprValue:
+ strcpy(buf, "literal");
+ break;
+ case ExprIdent:
+ strcpy(buf, "identifier");
+ break;
+ case ExprActionDecl:
+ strcpy(buf, "action declaration");
+ break;
+ case ExprFieldRef:
+ strcpy(buf, "field reference");
+ break;
+ case ExprArrayRef:
+ strcpy(buf, "array reference");
+ break;
+ case ExprKeysymList:
+ strcpy(buf, "list of keysyms");
+ break;
+ case ExprActionList:
+ strcpy(buf, "list of actions");
+ break;
+ case OpAdd:
+ strcpy(buf, "addition");
+ break;
+ case OpSubtract:
+ strcpy(buf, "subtraction");
+ break;
+ case OpMultiply:
+ strcpy(buf, "multiplication");
+ break;
+ case OpDivide:
+ strcpy(buf, "division");
+ break;
+ case OpAssign:
+ strcpy(buf, "assignment");
+ break;
+ case OpNot:
+ strcpy(buf, "logical not");
+ break;
+ case OpNegate:
+ strcpy(buf, "arithmetic negation");
+ break;
+ case OpInvert:
+ strcpy(buf, "bitwise inversion");
+ break;
+ case OpUnaryPlus:
+ strcpy(buf, "plus sign");
+ break;
+ default:
+ snprintf(buf, sizeof(buf), "illegal(%d)", type);
+ break;
+ }
+ return buf;
+}
+
+char *
+exprTypeText(unsigned type)
+{
+ static char buf[20];
+
+ switch (type)
+ {
+ case TypeUnknown:
+ strcpy(buf, "unknown");
+ break;
+ case TypeBoolean:
+ strcpy(buf, "boolean");
+ break;
+ case TypeInt:
+ strcpy(buf, "int");
+ break;
+ case TypeString:
+ strcpy(buf, "string");
+ break;
+ case TypeAction:
+ strcpy(buf, "action");
+ break;
+ case TypeKeyName:
+ strcpy(buf, "keyname");
+ break;
+ default:
+ snprintf(buf, sizeof(buf), "illegal(%d)", type);
+ break;
+ }
+ return buf;
+}
+
+int
+ExprResolveLhs(ExprDef * expr,
+ ExprResult * elem_rtrn,
+ ExprResult * field_rtrn, ExprDef ** index_rtrn)
+{
+ switch (expr->op)
+ {
+ case ExprIdent:
+ elem_rtrn->str = NULL;
+ field_rtrn->str = XkbAtomGetString(NULL, expr->value.str);
+ *index_rtrn = NULL;
+ return True;
+ case ExprFieldRef:
+ elem_rtrn->str = XkbAtomGetString(NULL, expr->value.field.element);
+ field_rtrn->str = XkbAtomGetString(NULL, expr->value.field.field);
+ *index_rtrn = NULL;
+ return True;
+ case ExprArrayRef:
+ elem_rtrn->str = XkbAtomGetString(NULL, expr->value.array.element);
+ field_rtrn->str = XkbAtomGetString(NULL, expr->value.array.field);
+ *index_rtrn = expr->value.array.entry;
+ return True;
+ }
+ WSGO1("Unexpected operator %d in ResolveLhs\n", expr->op);
+ return False;
+}
+
+Bool
+SimpleLookup(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ LookupEntry *entry;
+ register char *str;
+
+ if ((priv == NULL) ||
+ (field == None) || (elem != None) ||
+ ((type != TypeInt) && (type != TypeFloat)))
+ {
+ return False;
+ }
+ str = XkbAtomGetString(NULL, field);
+ for (entry = (LookupEntry *) priv;
+ (entry != NULL) && (entry->name != NULL); entry++)
+ {
+ if (uStrCaseCmp(str, entry->name) == 0)
+ {
+ val_rtrn->uval = entry->result;
+ if (type == TypeFloat)
+ val_rtrn->uval *= XkbGeomPtsPerMM;
+ return True;
+ }
+ }
+ return False;
+}
+
+Bool
+RadioLookup(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ register char *str;
+ int rg;
+
+ if ((field == None) || (elem != None) || (type != TypeInt))
+ return False;
+ str = XkbAtomGetString(NULL, field);
+ if (str)
+ {
+ if (uStrCasePrefix("group", str))
+ str += strlen("group");
+ else if (uStrCasePrefix("radiogroup", str))
+ str += strlen("radiogroup");
+ else if (uStrCasePrefix("rg", str))
+ str += strlen("rg");
+ else if (!isdigit(str[0]))
+ str = NULL;
+ }
+ if ((!str) || (sscanf(str, "%i", &rg) < 1) || (rg < 1)
+ || (rg > XkbMaxRadioGroups))
+ return False;
+ val_rtrn->uval = rg;
+ return True;
+}
+
+int
+TableLookup(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ LookupTable *tbl = (LookupTable *) priv;
+ register char *str;
+
+ if ((priv == NULL) || (field == None) || (type != TypeInt))
+ return False;
+ str = XkbAtomGetString(NULL, elem);
+ while (tbl)
+ {
+ if (((str == NULL) && (tbl->element == NULL)) ||
+ ((str != NULL) && (tbl->element != NULL) &&
+ (uStrCaseCmp(str, tbl->element) == 0)))
+ {
+ break;
+ }
+ tbl = tbl->nextElement;
+ }
+ if (tbl == NULL) /* didn't find a matching element */
+ return False;
+ priv = (XPointer) tbl->entries;
+ return SimpleLookup(priv, (Atom) None, field, type, val_rtrn);
+}
+
+static LookupEntry modIndexNames[] = {
+ {"shift", ShiftMapIndex},
+ {"control", ControlMapIndex},
+ {"lock", LockMapIndex},
+ {"mod1", Mod1MapIndex},
+ {"mod2", Mod2MapIndex},
+ {"mod3", Mod3MapIndex},
+ {"mod4", Mod4MapIndex},
+ {"mod5", Mod5MapIndex},
+ {"none", XkbNoModifier},
+ {NULL, 0}
+};
+
+int
+LookupModIndex(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ return SimpleLookup((XPointer) modIndexNames, elem, field, type,
+ val_rtrn);
+}
+
+int
+LookupModMask(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ char *str;
+
+ if ((elem != None) || (type != TypeInt))
+ return False;
+ str = XkbAtomGetString(NULL, field);
+ if (str == NULL)
+ return False;
+ if (uStrCaseCmp(str, "all") == 0)
+ val_rtrn->uval = 0xff;
+ else if (uStrCaseCmp(str, "none") == 0)
+ val_rtrn->uval = 0;
+ else if (LookupModIndex(priv, elem, field, type, val_rtrn))
+ val_rtrn->uval = (1 << val_rtrn->uval);
+ else if (priv != NULL)
+ {
+ LookupPriv *lpriv = (LookupPriv *) priv;
+ if ((lpriv->chain == NULL) ||
+ (!(*lpriv->chain) (lpriv->chainPriv, elem, field, type,
+ val_rtrn)))
+ return False;
+ }
+ else
+ return False;
+ return True;
+}
+
+int
+ExprResolveModIndex(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ char *bogus = NULL;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type != TypeInt)
+ {
+ ERROR1
+ ("Found constant of type %s where a modifier mask was expected\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ else if ((expr->value.ival >= XkbNumModifiers)
+ || (expr->value.ival < 0))
+ {
+ ERROR2("Illegal modifier index (%d, must be 0..%d)\n",
+ expr->value.ival, XkbNumModifiers - 1);
+ return False;
+ }
+ val_rtrn->ival = expr->value.ival;
+ return True;
+ case ExprIdent:
+ if (LookupModIndex(lookupPriv, (Atom) None, expr->value.str,
+ (unsigned) TypeInt, val_rtrn))
+ {
+ return True;
+ }
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeInt, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Cannot determine modifier index for \"%s\"\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ break;
+ case ExprFieldRef:
+ bogus = "field reference";
+ break;
+ case ExprArrayRef:
+ bogus = "array reference";
+ break;
+ case ExprActionDecl:
+ bogus = "function";
+ break;
+ case OpAdd:
+ case OpSubtract:
+ case OpMultiply:
+ case OpDivide:
+ case OpInvert:
+ case OpNegate:
+ case OpNot:
+ case OpUnaryPlus:
+ bogus = "arithmetic operations";
+ break;
+ case OpAssign:
+ bogus = "assignment";
+ break;
+ default:
+ WSGO1("Unknown operator %d in ResolveModIndex\n", expr->op);
+ return False;
+ }
+ if (bogus)
+ {
+ ERROR1("Modifier index must be a name or number, %s ignored\n",
+ bogus);
+ return False;
+ }
+ return ok;
+}
+
+int
+ExprResolveModMask(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ LookupPriv priv;
+
+ priv.priv = NULL;
+ priv.chain = lookup;
+ priv.chainPriv = lookupPriv;
+ return ExprResolveMask(expr, val_rtrn, LookupModMask, (XPointer) & priv);
+}
+
+int
+ExprResolveBoolean(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ char *bogus = NULL;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type != TypeBoolean)
+ {
+ ERROR1
+ ("Found constant of type %s where boolean was expected\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ val_rtrn->ival = expr->value.ival;
+ return True;
+ case ExprIdent:
+ bogus = XkbAtomGetString(NULL, expr->value.str);
+ if (bogus)
+ {
+ if ((uStrCaseCmp(bogus, "true") == 0) ||
+ (uStrCaseCmp(bogus, "yes") == 0) ||
+ (uStrCaseCmp(bogus, "on") == 0))
+ {
+ val_rtrn->uval = 1;
+ return True;
+ }
+ else if ((uStrCaseCmp(bogus, "false") == 0) ||
+ (uStrCaseCmp(bogus, "no") == 0) ||
+ (uStrCaseCmp(bogus, "off") == 0))
+ {
+ val_rtrn->uval = 0;
+ return True;
+ }
+ }
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeBoolean, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Identifier \"%s\" of type int is unknown\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeBoolean, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Default \"%s.%s\" of type boolean is unknown\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case OpInvert:
+ case OpNot:
+ ok = ExprResolveBoolean(expr, val_rtrn, lookup, lookupPriv);
+ if (ok)
+ val_rtrn->uval = !val_rtrn->uval;
+ return ok;
+ case OpAdd:
+ if (bogus == NULL)
+ bogus = "Addition";
+ case OpSubtract:
+ if (bogus == NULL)
+ bogus = "Subtraction";
+ case OpMultiply:
+ if (bogus == NULL)
+ bogus = "Multiplication";
+ case OpDivide:
+ if (bogus == NULL)
+ bogus = "Division";
+ case OpAssign:
+ if (bogus == NULL)
+ bogus = "Assignment";
+ case OpNegate:
+ if (bogus == NULL)
+ bogus = "Negation";
+ ERROR1("%s of boolean values not permitted\n", bogus);
+ break;
+ case OpUnaryPlus:
+ ERROR("Unary \"+\" operator not permitted for boolean values\n");
+ break;
+ default:
+ WSGO1("Unknown operator %d in ResolveBoolean\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+int
+ExprResolveFloat(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ ExprResult leftRtrn, rightRtrn;
+ ExprDef *left, *right;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type == TypeString)
+ {
+ register char *str;
+ str = XkbAtomGetString(NULL, expr->value.str);
+ if ((str != NULL) && (strlen(str) == 1))
+ {
+ val_rtrn->uval = str[0] * XkbGeomPtsPerMM;
+ return True;
+ }
+ }
+ if ((expr->type != TypeInt) && (expr->type != TypeFloat))
+ {
+ ERROR1("Found constant of type %s, expected a number\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ val_rtrn->ival = expr->value.ival;
+ if (expr->type == TypeInt)
+ val_rtrn->ival *= XkbGeomPtsPerMM;
+ return True;
+ case ExprIdent:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeFloat, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Numeric identifier \"%s\" unknown\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeFloat, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Numeric default \"%s.%s\" unknown\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case OpAdd:
+ case OpSubtract:
+ case OpMultiply:
+ case OpDivide:
+ left = expr->value.binary.left;
+ right = expr->value.binary.right;
+ if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv) &&
+ ExprResolveFloat(right, &rightRtrn, lookup, lookupPriv))
+ {
+ switch (expr->op)
+ {
+ case OpAdd:
+ val_rtrn->ival = leftRtrn.ival + rightRtrn.ival;
+ break;
+ case OpSubtract:
+ val_rtrn->ival = leftRtrn.ival - rightRtrn.ival;
+ break;
+ case OpMultiply:
+ val_rtrn->ival = leftRtrn.ival * rightRtrn.ival;
+ break;
+ case OpDivide:
+ val_rtrn->ival = leftRtrn.ival / rightRtrn.ival;
+ break;
+ }
+ return True;
+ }
+ return False;
+ case OpAssign:
+ WSGO("Assignment operator not implemented yet\n");
+ break;
+ case OpNot:
+ left = expr->value.child;
+ if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The ! operator cannot be applied to a number\n");
+ }
+ return False;
+ case OpInvert:
+ case OpNegate:
+ left = expr->value.child;
+ if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv))
+ {
+ if (expr->op == OpNegate)
+ val_rtrn->ival = -leftRtrn.ival;
+ else
+ val_rtrn->ival = ~leftRtrn.ival;
+ return True;
+ }
+ return False;
+ case OpUnaryPlus:
+ left = expr->value.child;
+ return ExprResolveFloat(left, val_rtrn, lookup, lookupPriv);
+ default:
+ WSGO1("Unknown operator %d in ResolveFloat\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+int
+ExprResolveInteger(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ ExprResult leftRtrn, rightRtrn;
+ ExprDef *left, *right;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type == TypeString)
+ {
+ register char *str;
+ str = XkbAtomGetString(NULL, expr->value.str);
+ if (str != NULL)
+ switch (strlen(str))
+ {
+ case 0:
+ val_rtrn->uval = 0;
+ return True;
+ case 1:
+ val_rtrn->uval = str[0];
+ return True;
+ default:
+ break;
+ }
+ }
+ if ((expr->type != TypeInt) && (expr->type != TypeFloat))
+ {
+ ERROR1
+ ("Found constant of type %s where an int was expected\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ val_rtrn->ival = expr->value.ival;
+ if (expr->type == TypeFloat)
+ val_rtrn->ival /= XkbGeomPtsPerMM;
+ return True;
+ case ExprIdent:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeInt, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Identifier \"%s\" of type int is unknown\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeInt, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Default \"%s.%s\" of type int is unknown\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case OpAdd:
+ case OpSubtract:
+ case OpMultiply:
+ case OpDivide:
+ left = expr->value.binary.left;
+ right = expr->value.binary.right;
+ if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv) &&
+ ExprResolveInteger(right, &rightRtrn, lookup, lookupPriv))
+ {
+ switch (expr->op)
+ {
+ case OpAdd:
+ val_rtrn->ival = leftRtrn.ival + rightRtrn.ival;
+ break;
+ case OpSubtract:
+ val_rtrn->ival = leftRtrn.ival - rightRtrn.ival;
+ break;
+ case OpMultiply:
+ val_rtrn->ival = leftRtrn.ival * rightRtrn.ival;
+ break;
+ case OpDivide:
+ val_rtrn->ival = leftRtrn.ival / rightRtrn.ival;
+ break;
+ }
+ return True;
+ }
+ return False;
+ case OpAssign:
+ WSGO("Assignment operator not implemented yet\n");
+ break;
+ case OpNot:
+ left = expr->value.child;
+ if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The ! operator cannot be applied to an integer\n");
+ }
+ return False;
+ case OpInvert:
+ case OpNegate:
+ left = expr->value.child;
+ if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
+ {
+ if (expr->op == OpNegate)
+ val_rtrn->ival = -leftRtrn.ival;
+ else
+ val_rtrn->ival = ~leftRtrn.ival;
+ return True;
+ }
+ return False;
+ case OpUnaryPlus:
+ left = expr->value.child;
+ return ExprResolveInteger(left, val_rtrn, lookup, lookupPriv);
+ default:
+ WSGO1("Unknown operator %d in ResolveInteger\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+int
+ExprResolveString(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ ExprResult leftRtrn, rightRtrn;
+ ExprDef *left;
+ ExprDef *right;
+ char *bogus = NULL;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type != TypeString)
+ {
+ ERROR1("Found constant of type %s, expected a string\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ val_rtrn->str = XkbAtomGetString(NULL, expr->value.str);
+ if (val_rtrn->str == NULL)
+ {
+ static char *empty = "";
+ val_rtrn->str = empty;
+ }
+ return True;
+ case ExprIdent:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeString, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Identifier \"%s\" of type string not found\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeString, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Default \"%s.%s\" of type string not found\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case OpAdd:
+ left = expr->value.binary.left;
+ right = expr->value.binary.right;
+ if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv) &&
+ ExprResolveString(right, &rightRtrn, lookup, lookupPriv))
+ {
+ int len;
+ char *new;
+ len = strlen(leftRtrn.str) + strlen(rightRtrn.str) + 1;
+ new = (char *) uAlloc(len);
+ if (new)
+ {
+ sprintf(new, "%s%s", leftRtrn.str, rightRtrn.str);
+ val_rtrn->str = new;
+ return True;
+ }
+ }
+ return False;
+ case OpSubtract:
+ if (bogus == NULL)
+ bogus = "Subtraction";
+ case OpMultiply:
+ if (bogus == NULL)
+ bogus = "Multiplication";
+ case OpDivide:
+ if (bogus == NULL)
+ bogus = "Division";
+ case OpAssign:
+ if (bogus == NULL)
+ bogus = "Assignment";
+ case OpNegate:
+ if (bogus == NULL)
+ bogus = "Negation";
+ case OpInvert:
+ if (bogus == NULL)
+ bogus = "Bitwise complement";
+ ERROR1("%s of string values not permitted\n", bogus);
+ return False;
+ case OpNot:
+ left = expr->value.child;
+ if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The ! operator cannot be applied to a string\n");
+ }
+ return False;
+ case OpUnaryPlus:
+ left = expr->value.child;
+ if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The + operator cannot be applied to a string\n");
+ }
+ return False;
+ default:
+ WSGO1("Unknown operator %d in ResolveString\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+int
+ExprResolveKeyName(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ ExprDef *left;
+ ExprResult leftRtrn;
+ char *bogus = NULL;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type != TypeKeyName)
+ {
+ ERROR1("Found constant of type %s, expected a key name\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ memcpy(val_rtrn->keyName.name, expr->value.keyName, XkbKeyNameLength);
+ return True;
+ case ExprIdent:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeString, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Identifier \"%s\" of type string not found\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeString, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Default \"%s.%s\" of type key name not found\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case OpAdd:
+ if (bogus == NULL)
+ bogus = "Addition";
+ case OpSubtract:
+ if (bogus == NULL)
+ bogus = "Subtraction";
+ case OpMultiply:
+ if (bogus == NULL)
+ bogus = "Multiplication";
+ case OpDivide:
+ if (bogus == NULL)
+ bogus = "Division";
+ case OpAssign:
+ if (bogus == NULL)
+ bogus = "Assignment";
+ case OpNegate:
+ if (bogus == NULL)
+ bogus = "Negation";
+ case OpInvert:
+ if (bogus == NULL)
+ bogus = "Bitwise complement";
+ ERROR1("%s of key name values not permitted\n", bogus);
+ return False;
+ case OpNot:
+ left = expr->value.binary.left;
+ if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The ! operator cannot be applied to a key name\n");
+ }
+ return False;
+ case OpUnaryPlus:
+ left = expr->value.binary.left;
+ if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The + operator cannot be applied to a key name\n");
+ }
+ return False;
+ default:
+ WSGO1("Unknown operator %d in ResolveKeyName\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+/***====================================================================***/
+
+int
+ExprResolveEnum(ExprDef * expr, ExprResult * val_rtrn, LookupEntry * values)
+{
+ if (expr->op != ExprIdent)
+ {
+ ERROR1("Found a %s where an enumerated value was expected\n",
+ exprOpText(expr->op));
+ return False;
+ }
+ if (!SimpleLookup((XPointer) values, (Atom) None, expr->value.str,
+ (unsigned) TypeInt, val_rtrn))
+ {
+ int nOut = 0;
+ ERROR1("Illegal identifier %s (expected one of: ",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ while (values && values->name)
+ {
+ if (nOut != 0)
+ INFO1(", %s", values->name);
+ else
+ INFO1("%s", values->name);
+ values++;
+ nOut++;
+ }
+ INFO(")\n");
+ return False;
+ }
+ return True;
+}
+
+int
+ExprResolveMask(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ ExprResult leftRtrn, rightRtrn;
+ ExprDef *left, *right;
+ char *bogus = NULL;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type != TypeInt)
+ {
+ ERROR1
+ ("Found constant of type %s where a mask was expected\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ val_rtrn->ival = expr->value.ival;
+ return True;
+ case ExprIdent:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeInt, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Identifier \"%s\" of type int is unknown\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeInt, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Default \"%s.%s\" of type int is unknown\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case ExprArrayRef:
+ bogus = "array reference";
+ case ExprActionDecl:
+ if (bogus == NULL)
+ bogus = "function use";
+ ERROR1("Unexpected %s in mask expression\n", bogus);
+ ACTION("Expression ignored\n");
+ return False;
+ case OpAdd:
+ case OpSubtract:
+ case OpMultiply:
+ case OpDivide:
+ left = expr->value.binary.left;
+ right = expr->value.binary.right;
+ if (ExprResolveMask(left, &leftRtrn, lookup, lookupPriv) &&
+ ExprResolveMask(right, &rightRtrn, lookup, lookupPriv))
+ {
+ switch (expr->op)
+ {
+ case OpAdd:
+ val_rtrn->ival = leftRtrn.ival | rightRtrn.ival;
+ break;
+ case OpSubtract:
+ val_rtrn->ival = leftRtrn.ival & (~rightRtrn.ival);
+ break;
+ case OpMultiply:
+ case OpDivide:
+ ERROR1("Cannot %s masks\n",
+ expr->op == OpDivide ? "divide" : "multiply");
+ ACTION("Illegal operation ignored\n");
+ return False;
+ }
+ return True;
+ }
+ return False;
+ case OpAssign:
+ WSGO("Assignment operator not implemented yet\n");
+ break;
+ case OpInvert:
+ left = expr->value.child;
+ if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
+ {
+ val_rtrn->ival = ~leftRtrn.ival;
+ return True;
+ }
+ return False;
+ case OpUnaryPlus:
+ case OpNegate:
+ case OpNot:
+ left = expr->value.child;
+ if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR1("The %s operator cannot be used with a mask\n",
+ (expr->op == OpNegate ? "-" : "!"));
+ }
+ return False;
+ default:
+ WSGO1("Unknown operator %d in ResolveMask\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+int
+ExprResolveKeySym(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ KeySym sym;
+
+ if (expr->op == ExprIdent)
+ {
+ char *str;
+ str = XkbAtomGetString(NULL, expr->value.str);
+ if ((str != NULL) && ((sym = XStringToKeysym(str)) != NoSymbol))
+ {
+ val_rtrn->uval = sym;
+ return True;
+ }
+ }
+ ok = ExprResolveInteger(expr, val_rtrn, lookup, lookupPriv);
+ if ((ok) && (val_rtrn->uval < 10))
+ val_rtrn->uval += '0';
+ return ok;
+}
diff --git a/xkbcomp/expr.h b/xkbcomp/expr.h
index 02519f941..bd7e82248 100644
--- a/xkbcomp/expr.h
+++ b/xkbcomp/expr.h
@@ -1,172 +1,172 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#ifndef EXPR_H
-#define EXPR_H 1
-
-typedef union _ExprResult
-{
- char *str;
- int ival;
- unsigned uval;
- XkbKeyNameRec keyName;
-} ExprResult;
-
-typedef Bool(*IdentLookupFunc) (XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern char *exprTypeText(unsigned /* type */
- );
-
-extern int ExprResolveLhs(ExprDef * /* expr */ ,
- ExprResult * /* elem_rtrn */ ,
- ExprResult * /* field_rtrn */ ,
- ExprDef ** /* index_rtrn */
- );
-
-typedef struct _LookupPriv
-{
- XPointer priv;
- IdentLookupFunc chain;
- XPointer chainPriv;
-} LookupPriv;
-
-typedef struct _LookupEntry
-{
- const char *name;
- unsigned result;
-} LookupEntry;
-
-typedef struct _LookupTable
-{
- char *element;
- LookupEntry *entries;
- struct _LookupTable *nextElement;
-} LookupTable;
-
-
-extern char *exprOpText(unsigned /* type */
- );
-
-extern int RadioLookup(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int SimpleLookup(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int TableLookup(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int LookupModIndex(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int LookupModMask(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int ExprResolveModIndex(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveModMask(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* priv */
- );
-
-extern int ExprResolveBoolean(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveInteger(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveFloat(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveString(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveKeyName(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveEnum(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- LookupEntry * /* values */
- );
-
-extern int ExprResolveMask(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveKeySym(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-#endif /* EXPR_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#ifndef EXPR_H
+#define EXPR_H 1
+
+typedef union _ExprResult
+{
+ char *str;
+ int ival;
+ unsigned uval;
+ XkbKeyNameRec keyName;
+} ExprResult;
+
+typedef Bool(*IdentLookupFunc) (XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern char *exprTypeText(unsigned /* type */
+ );
+
+extern int ExprResolveLhs(ExprDef * /* expr */ ,
+ ExprResult * /* elem_rtrn */ ,
+ ExprResult * /* field_rtrn */ ,
+ ExprDef ** /* index_rtrn */
+ );
+
+typedef struct _LookupPriv
+{
+ XPointer priv;
+ IdentLookupFunc chain;
+ XPointer chainPriv;
+} LookupPriv;
+
+typedef struct _LookupEntry
+{
+ const char *name;
+ unsigned result;
+} LookupEntry;
+
+typedef struct _LookupTable
+{
+ char *element;
+ LookupEntry *entries;
+ struct _LookupTable *nextElement;
+} LookupTable;
+
+
+extern char *exprOpText(unsigned /* type */
+ );
+
+extern int RadioLookup(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int SimpleLookup(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int TableLookup(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int LookupModIndex(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int LookupModMask(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int ExprResolveModIndex(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveModMask(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* priv */
+ );
+
+extern int ExprResolveBoolean(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveInteger(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveFloat(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveString(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveKeyName(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveEnum(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ LookupEntry * /* values */
+ );
+
+extern int ExprResolveMask(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveKeySym(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+#endif /* EXPR_H */
diff --git a/xkbcomp/indicators.c b/xkbcomp/indicators.c
index d4a362fb8..63dc18b7b 100644
--- a/xkbcomp/indicators.c
+++ b/xkbcomp/indicators.c
@@ -1,575 +1,575 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "misc.h"
-#include "tokens.h"
-#include "expr.h"
-#include "vmod.h"
-#include "indicators.h"
-#include "action.h"
-#include "compat.h"
-
-/***====================================================================***/
-
-#define ReportIndicatorBadType(d,l,f,w) \
- ReportBadType("indicator map",(f),\
- XkbAtomText((d),(l)->name,XkbMessage),(w))
-#define ReportIndicatorNotArray(d,l,f) \
- ReportNotArray("indicator map",(f),\
- XkbAtomText((d),(l)->name,XkbMessage))
-
-/***====================================================================***/
-
-void
-ClearIndicatorMapInfo(Display * dpy, LEDInfo * info)
-{
- info->name = XkbInternAtom(dpy, "default", False);
- info->indicator = _LED_NotBound;
- info->flags = info->which_mods = info->real_mods = 0;
- info->vmods = 0;
- info->which_groups = info->groups = 0;
- info->ctrls = 0;
- return;
-}
-
-LEDInfo *
-AddIndicatorMap(LEDInfo * oldLEDs, LEDInfo * new)
-{
- LEDInfo *old, *last;
- unsigned collide;
-
- last = NULL;
- for (old = oldLEDs; old != NULL; old = (LEDInfo *) old->defs.next)
- {
- if (old->name == new->name)
- {
- if ((old->real_mods == new->real_mods) &&
- (old->vmods == new->vmods) &&
- (old->groups == new->groups) &&
- (old->ctrls == new->ctrls) &&
- (old->which_mods == new->which_mods) &&
- (old->which_groups == new->which_groups))
- {
- old->defs.defined |= new->defs.defined;
- return oldLEDs;
- }
- if (new->defs.merge == MergeReplace)
- {
- CommonInfo *next = old->defs.next;
- if (((old->defs.fileID == new->defs.fileID)
- && (warningLevel > 0)) || (warningLevel > 9))
- {
- WARN1("Map for indicator %s redefined\n",
- XkbAtomText(NULL, old->name, XkbMessage));
- ACTION("Earlier definition ignored\n");
- }
- *old = *new;
- old->defs.next = next;
- return oldLEDs;
- }
- collide = 0;
- if (UseNewField(_LED_Index, &old->defs, &new->defs, &collide))
- {
- old->indicator = new->indicator;
- old->defs.defined |= _LED_Index;
- }
- if (UseNewField(_LED_Mods, &old->defs, &new->defs, &collide))
- {
- old->which_mods = new->which_mods;
- old->real_mods = new->real_mods;
- old->vmods = new->vmods;
- old->defs.defined |= _LED_Mods;
- }
- if (UseNewField(_LED_Groups, &old->defs, &new->defs, &collide))
- {
- old->which_groups = new->which_groups;
- old->groups = new->groups;
- old->defs.defined |= _LED_Groups;
- }
- if (UseNewField(_LED_Ctrls, &old->defs, &new->defs, &collide))
- {
- old->ctrls = new->ctrls;
- old->defs.defined |= _LED_Ctrls;
- }
- if (UseNewField(_LED_Explicit, &old->defs, &new->defs, &collide))
- {
- old->flags &= ~XkbIM_NoExplicit;
- old->flags |= (new->flags & XkbIM_NoExplicit);
- old->defs.defined |= _LED_Explicit;
- }
- if (UseNewField(_LED_Automatic, &old->defs, &new->defs, &collide))
- {
- old->flags &= ~XkbIM_NoAutomatic;
- old->flags |= (new->flags & XkbIM_NoAutomatic);
- old->defs.defined |= _LED_Automatic;
- }
- if (UseNewField(_LED_DrivesKbd, &old->defs, &new->defs, &collide))
- {
- old->flags &= ~XkbIM_LEDDrivesKB;
- old->flags |= (new->flags & XkbIM_LEDDrivesKB);
- old->defs.defined |= _LED_DrivesKbd;
- }
- if (collide)
- {
- WARN1("Map for indicator %s redefined\n",
- XkbAtomText(NULL, old->name, XkbMessage));
- ACTION1("Using %s definition for duplicate fields\n",
- (new->defs.merge == MergeAugment ? "first" : "last"));
- }
- return oldLEDs;
- }
- if (old->defs.next == NULL)
- last = old;
- }
- /* new definition */
- old = uTypedAlloc(LEDInfo);
- if (!old)
- {
- WSGO("Couldn't allocate indicator map\n");
- ACTION1("Map for indicator %s not compiled\n",
- XkbAtomText(NULL, new->name, XkbMessage));
- return NULL;
- }
- *old = *new;
- old->defs.next = NULL;
- if (last)
- {
- last->defs.next = &old->defs;
- return oldLEDs;
- }
- return old;
-}
-
-static LookupEntry modComponentNames[] = {
- {"base", XkbIM_UseBase}
- ,
- {"latched", XkbIM_UseLatched}
- ,
- {"locked", XkbIM_UseLocked}
- ,
- {"effective", XkbIM_UseEffective}
- ,
- {"compat", XkbIM_UseCompat}
- ,
- {"any", XkbIM_UseAnyMods}
- ,
- {"none", 0}
- ,
- {NULL, 0}
-};
-static LookupEntry groupComponentNames[] = {
- {"base", XkbIM_UseBase}
- ,
- {"latched", XkbIM_UseLatched}
- ,
- {"locked", XkbIM_UseLocked}
- ,
- {"effective", XkbIM_UseEffective}
- ,
- {"any", XkbIM_UseAnyGroup}
- ,
- {"none", 0}
- ,
- {NULL, 0}
-};
-
-int
-SetIndicatorMapField(LEDInfo * led,
- XkbDescPtr xkb,
- char *field, ExprDef * arrayNdx, ExprDef * value)
-{
- ExprResult rtrn;
- Bool ok;
-
- ok = True;
- if ((uStrCaseCmp(field, "modifiers") == 0)
- || (uStrCaseCmp(field, "mods") == 0))
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
- return ReportIndicatorBadType(xkb->dpy, led, field,
- "modifier mask");
- led->real_mods = rtrn.uval & 0xff;
- led->vmods = (rtrn.uval >> 8) & 0xff;
- led->defs.defined |= _LED_Mods;
- }
- else if (uStrCaseCmp(field, "groups") == 0)
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveMask
- (value, &rtrn, SimpleLookup, (XPointer) groupNames))
- return ReportIndicatorBadType(xkb->dpy, led, field, "group mask");
- led->groups = rtrn.uval;
- led->defs.defined |= _LED_Groups;
- }
- else if ((uStrCaseCmp(field, "controls") == 0) ||
- (uStrCaseCmp(field, "ctrls") == 0))
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveMask
- (value, &rtrn, SimpleLookup, (XPointer) ctrlNames))
- return ReportIndicatorBadType(xkb->dpy, led, field,
- "controls mask");
- led->ctrls = rtrn.uval;
- led->defs.defined |= _LED_Ctrls;
- }
- else if (uStrCaseCmp(field, "allowexplicit") == 0)
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
- return ReportIndicatorBadType(xkb->dpy, led, field, "boolean");
- if (rtrn.uval)
- led->flags &= ~XkbIM_NoExplicit;
- else
- led->flags |= XkbIM_NoExplicit;
- led->defs.defined |= _LED_Explicit;
- }
- else if ((uStrCaseCmp(field, "whichmodstate") == 0) ||
- (uStrCaseCmp(field, "whichmodifierstate") == 0))
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveMask(value, &rtrn, SimpleLookup,
- (XPointer) modComponentNames))
- {
- return ReportIndicatorBadType(xkb->dpy, led, field,
- "mask of modifier state components");
- }
- led->which_mods = rtrn.uval;
- }
- else if (uStrCaseCmp(field, "whichgroupstate") == 0)
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveMask(value, &rtrn, SimpleLookup,
- (XPointer) groupComponentNames))
- {
- return ReportIndicatorBadType(xkb->dpy, led, field,
- "mask of group state components");
- }
- led->which_groups = rtrn.uval;
- }
- else if ((uStrCaseCmp(field, "driveskbd") == 0) ||
- (uStrCaseCmp(field, "driveskeyboard") == 0) ||
- (uStrCaseCmp(field, "leddriveskbd") == 0) ||
- (uStrCaseCmp(field, "leddriveskeyboard") == 0) ||
- (uStrCaseCmp(field, "indicatordriveskbd") == 0) ||
- (uStrCaseCmp(field, "indicatordriveskeyboard") == 0))
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
- return ReportIndicatorBadType(xkb->dpy, led, field, "boolean");
- if (rtrn.uval)
- led->flags |= XkbIM_LEDDrivesKB;
- else
- led->flags &= ~XkbIM_LEDDrivesKB;
- led->defs.defined |= _LED_DrivesKbd;
- }
- else if (uStrCaseCmp(field, "index") == 0)
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportIndicatorBadType(xkb->dpy, led, field,
- "indicator index");
- if ((rtrn.uval < 1) || (rtrn.uval > 32))
- {
- ERROR2("Illegal indicator index %d (range 1..%d)\n",
- rtrn.uval, XkbNumIndicators);
- ACTION1("Index definition for %s indicator ignored\n",
- XkbAtomText(NULL, led->name, XkbMessage));
- return False;
- }
- led->indicator = rtrn.uval;
- led->defs.defined |= _LED_Index;
- }
- else
- {
- ERROR2("Unknown field %s in map for %s indicator\n", field,
- XkbAtomText(NULL, led->name, XkbMessage));
- ACTION("Definition ignored\n");
- ok = False;
- }
- return ok;
-}
-
-LEDInfo *
-HandleIndicatorMapDef(IndicatorMapDef * def,
- XkbDescPtr xkb,
- LEDInfo * dflt, LEDInfo * oldLEDs, unsigned merge)
-{
- LEDInfo led, *rtrn;
- VarDef *var;
- Bool ok;
-
- if (def->merge != MergeDefault)
- merge = def->merge;
-
- led = *dflt;
- led.defs.merge = merge;
- led.name = def->name;
-
- ok = True;
- for (var = def->body; var != NULL; var = (VarDef *) var->common.next)
- {
- ExprResult elem, field;
- ExprDef *arrayNdx;
- if (!ExprResolveLhs(var->name, &elem, &field, &arrayNdx))
- {
- ok = False;
- continue;
- }
- if (elem.str != NULL)
- {
- ERROR1
- ("Cannot set defaults for \"%s\" element in indicator map\n",
- elem.str);
- ACTION2("Assignment to %s.%s ignored\n", elem.str, field.str);
- ok = False;
- }
- else
- {
- ok = SetIndicatorMapField(&led, xkb, field.str, arrayNdx,
- var->value) && ok;
- }
- }
- if (ok)
- {
- rtrn = AddIndicatorMap(oldLEDs, &led);
- return rtrn;
- }
- return NULL;
-}
-
-Bool
-CopyIndicatorMapDefs(XkbFileInfo * result, LEDInfo * leds,
- LEDInfo ** unboundRtrn)
-{
- LEDInfo *led, *next;
- LEDInfo *unbound, *last;
- XkbDescPtr xkb;
-
- xkb = result->xkb;
- if (XkbAllocNames(xkb, XkbIndicatorNamesMask, 0, 0) != Success)
- {
- WSGO("Couldn't allocate names\n");
- ACTION("Indicator names may be incorrect\n");
- }
- if (XkbAllocIndicatorMaps(xkb) != Success)
- {
- WSGO("Can't allocate indicator maps\n");
- ACTION("Indicator map definitions may be lost\n");
- return False;
- }
- last = unbound = (unboundRtrn ? *unboundRtrn : NULL);
- while ((last != NULL) && (last->defs.next != NULL))
- {
- last = (LEDInfo *) last->defs.next;
- }
- for (led = leds; led != NULL; led = next)
- {
- next = (LEDInfo *) led->defs.next;
- if ((led->groups != 0) && (led->which_groups == 0))
- led->which_groups = XkbIM_UseEffective;
- if ((led->which_mods == 0) && ((led->real_mods) || (led->vmods)))
- led->which_mods = XkbIM_UseEffective;
- if ((led->indicator == _LED_NotBound) || (!xkb->indicators))
- {
- if (unboundRtrn != NULL)
- {
- led->defs.next = NULL;
- if (last != NULL)
- last->defs.next = (CommonInfo *) led;
- else
- unbound = led;
- last = led;
- }
- else
- uFree(led);
- }
- else
- {
- register XkbIndicatorMapPtr im;
- im = &xkb->indicators->maps[led->indicator - 1];
- im->flags = led->flags;
- im->which_groups = led->which_groups;
- im->groups = led->groups;
- im->which_mods = led->which_mods;
- im->mods.mask = led->real_mods;
- im->mods.real_mods = led->real_mods;
- im->mods.vmods = led->vmods;
- im->ctrls = led->ctrls;
- if (xkb->names != NULL)
- xkb->names->indicators[led->indicator - 1] = led->name;
- uFree(led);
- }
- }
- if (unboundRtrn != NULL)
- {
- *unboundRtrn = unbound;
- }
- return True;
-}
-
-Bool
-BindIndicators(XkbFileInfo * result,
- Bool force, LEDInfo * unbound, LEDInfo ** unboundRtrn)
-{
- XkbDescPtr xkb;
- register int i;
- register LEDInfo *led, *next, *last;
-
- xkb = result->xkb;
- if (xkb->names != NULL)
- {
- for (led = unbound; led != NULL; led = (LEDInfo *) led->defs.next)
- {
- if (led->indicator == _LED_NotBound)
- {
- for (i = 0; i < XkbNumIndicators; i++)
- {
- if (xkb->names->indicators[i] == led->name)
- {
- led->indicator = i + 1;
- break;
- }
- }
- }
- }
- if (force)
- {
- for (led = unbound; led != NULL; led = (LEDInfo *) led->defs.next)
- {
- if (led->indicator == _LED_NotBound)
- {
- for (i = 0; i < XkbNumIndicators; i++)
- {
- if (xkb->names->indicators[i] == None)
- {
- xkb->names->indicators[i] = led->name;
- led->indicator = i + 1;
- xkb->indicators->phys_indicators &= ~(1 << i);
- break;
- }
- }
- if (led->indicator == _LED_NotBound)
- {
- ERROR("No unnamed indicators found\n");
- ACTION1
- ("Virtual indicator map \"%s\" not bound\n",
- XkbAtomGetString(xkb->dpy, led->name));
- continue;
- }
- }
- }
- }
- }
- for (last = NULL, led = unbound; led != NULL; led = next)
- {
- next = (LEDInfo *) led->defs.next;
- if (led->indicator == _LED_NotBound)
- {
- if (force)
- {
- unbound = next;
- uFree(led);
- }
- else
- {
- if (last)
- last->defs.next = &led->defs;
- else
- unbound = led;
- last = led;
- }
- }
- else
- {
- if ((xkb->names != NULL) &&
- (xkb->names->indicators[led->indicator - 1] != led->name))
- {
- Atom old = xkb->names->indicators[led->indicator - 1];
- ERROR1("Multiple names bound to indicator %d\n",
- (unsigned int) led->indicator);
- ACTION2("Using %s, ignoring %s\n",
- XkbAtomGetString(xkb->dpy, old),
- XkbAtomGetString(xkb->dpy, led->name));
- led->indicator = _LED_NotBound;
- if (force)
- {
- uFree(led);
- unbound = next;
- }
- else
- {
- if (last)
- last->defs.next = &led->defs;
- else
- unbound = led;
- last = led;
- }
- }
- else
- {
- XkbIndicatorMapPtr map;
- map = &xkb->indicators->maps[led->indicator - 1];
- map->flags = led->flags;
- map->which_groups = led->which_groups;
- map->groups = led->groups;
- map->which_mods = led->which_mods;
- map->mods.mask = led->real_mods;
- map->mods.real_mods = led->real_mods;
- map->mods.vmods = led->vmods;
- map->ctrls = led->ctrls;
- if (last)
- last->defs.next = &next->defs;
- else
- unbound = next;
- led->defs.next = NULL;
- uFree(led);
- }
- }
- }
- if (unboundRtrn)
- {
- *unboundRtrn = unbound;
- }
- else if (unbound)
- {
- for (led = unbound; led != NULL; led = next)
- {
- next = (LEDInfo *) led->defs.next;
- uFree(led);
- }
- }
- return True;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "misc.h"
+#include "tokens.h"
+#include "expr.h"
+#include "vmod.h"
+#include "indicators.h"
+#include "action.h"
+#include "compat.h"
+
+/***====================================================================***/
+
+#define ReportIndicatorBadType(d,l,f,w) \
+ ReportBadType("indicator map",(f),\
+ XkbAtomText((d),(l)->name,XkbMessage),(w))
+#define ReportIndicatorNotArray(d,l,f) \
+ ReportNotArray("indicator map",(f),\
+ XkbAtomText((d),(l)->name,XkbMessage))
+
+/***====================================================================***/
+
+void
+ClearIndicatorMapInfo(Display * dpy, LEDInfo * info)
+{
+ info->name = XkbInternAtom(dpy, "default", False);
+ info->indicator = _LED_NotBound;
+ info->flags = info->which_mods = info->real_mods = 0;
+ info->vmods = 0;
+ info->which_groups = info->groups = 0;
+ info->ctrls = 0;
+ return;
+}
+
+LEDInfo *
+AddIndicatorMap(LEDInfo * oldLEDs, LEDInfo * new)
+{
+ LEDInfo *old, *last;
+ unsigned collide;
+
+ last = NULL;
+ for (old = oldLEDs; old != NULL; old = (LEDInfo *) old->defs.next)
+ {
+ if (old->name == new->name)
+ {
+ if ((old->real_mods == new->real_mods) &&
+ (old->vmods == new->vmods) &&
+ (old->groups == new->groups) &&
+ (old->ctrls == new->ctrls) &&
+ (old->which_mods == new->which_mods) &&
+ (old->which_groups == new->which_groups))
+ {
+ old->defs.defined |= new->defs.defined;
+ return oldLEDs;
+ }
+ if (new->defs.merge == MergeReplace)
+ {
+ CommonInfo *next = old->defs.next;
+ if (((old->defs.fileID == new->defs.fileID)
+ && (warningLevel > 0)) || (warningLevel > 9))
+ {
+ WARN1("Map for indicator %s redefined\n",
+ XkbAtomText(NULL, old->name, XkbMessage));
+ ACTION("Earlier definition ignored\n");
+ }
+ *old = *new;
+ old->defs.next = next;
+ return oldLEDs;
+ }
+ collide = 0;
+ if (UseNewField(_LED_Index, &old->defs, &new->defs, &collide))
+ {
+ old->indicator = new->indicator;
+ old->defs.defined |= _LED_Index;
+ }
+ if (UseNewField(_LED_Mods, &old->defs, &new->defs, &collide))
+ {
+ old->which_mods = new->which_mods;
+ old->real_mods = new->real_mods;
+ old->vmods = new->vmods;
+ old->defs.defined |= _LED_Mods;
+ }
+ if (UseNewField(_LED_Groups, &old->defs, &new->defs, &collide))
+ {
+ old->which_groups = new->which_groups;
+ old->groups = new->groups;
+ old->defs.defined |= _LED_Groups;
+ }
+ if (UseNewField(_LED_Ctrls, &old->defs, &new->defs, &collide))
+ {
+ old->ctrls = new->ctrls;
+ old->defs.defined |= _LED_Ctrls;
+ }
+ if (UseNewField(_LED_Explicit, &old->defs, &new->defs, &collide))
+ {
+ old->flags &= ~XkbIM_NoExplicit;
+ old->flags |= (new->flags & XkbIM_NoExplicit);
+ old->defs.defined |= _LED_Explicit;
+ }
+ if (UseNewField(_LED_Automatic, &old->defs, &new->defs, &collide))
+ {
+ old->flags &= ~XkbIM_NoAutomatic;
+ old->flags |= (new->flags & XkbIM_NoAutomatic);
+ old->defs.defined |= _LED_Automatic;
+ }
+ if (UseNewField(_LED_DrivesKbd, &old->defs, &new->defs, &collide))
+ {
+ old->flags &= ~XkbIM_LEDDrivesKB;
+ old->flags |= (new->flags & XkbIM_LEDDrivesKB);
+ old->defs.defined |= _LED_DrivesKbd;
+ }
+ if (collide)
+ {
+ WARN1("Map for indicator %s redefined\n",
+ XkbAtomText(NULL, old->name, XkbMessage));
+ ACTION1("Using %s definition for duplicate fields\n",
+ (new->defs.merge == MergeAugment ? "first" : "last"));
+ }
+ return oldLEDs;
+ }
+ if (old->defs.next == NULL)
+ last = old;
+ }
+ /* new definition */
+ old = uTypedAlloc(LEDInfo);
+ if (!old)
+ {
+ WSGO("Couldn't allocate indicator map\n");
+ ACTION1("Map for indicator %s not compiled\n",
+ XkbAtomText(NULL, new->name, XkbMessage));
+ return NULL;
+ }
+ *old = *new;
+ old->defs.next = NULL;
+ if (last)
+ {
+ last->defs.next = &old->defs;
+ return oldLEDs;
+ }
+ return old;
+}
+
+static LookupEntry modComponentNames[] = {
+ {"base", XkbIM_UseBase}
+ ,
+ {"latched", XkbIM_UseLatched}
+ ,
+ {"locked", XkbIM_UseLocked}
+ ,
+ {"effective", XkbIM_UseEffective}
+ ,
+ {"compat", XkbIM_UseCompat}
+ ,
+ {"any", XkbIM_UseAnyMods}
+ ,
+ {"none", 0}
+ ,
+ {NULL, 0}
+};
+static LookupEntry groupComponentNames[] = {
+ {"base", XkbIM_UseBase}
+ ,
+ {"latched", XkbIM_UseLatched}
+ ,
+ {"locked", XkbIM_UseLocked}
+ ,
+ {"effective", XkbIM_UseEffective}
+ ,
+ {"any", XkbIM_UseAnyGroup}
+ ,
+ {"none", 0}
+ ,
+ {NULL, 0}
+};
+
+int
+SetIndicatorMapField(LEDInfo * led,
+ XkbDescPtr xkb,
+ char *field, ExprDef * arrayNdx, ExprDef * value)
+{
+ ExprResult rtrn;
+ Bool ok;
+
+ ok = True;
+ if ((uStrCaseCmp(field, "modifiers") == 0)
+ || (uStrCaseCmp(field, "mods") == 0))
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
+ return ReportIndicatorBadType(xkb->dpy, led, field,
+ "modifier mask");
+ led->real_mods = rtrn.uval & 0xff;
+ led->vmods = (rtrn.uval >> 8) & 0xff;
+ led->defs.defined |= _LED_Mods;
+ }
+ else if (uStrCaseCmp(field, "groups") == 0)
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveMask
+ (value, &rtrn, SimpleLookup, (XPointer) groupNames))
+ return ReportIndicatorBadType(xkb->dpy, led, field, "group mask");
+ led->groups = rtrn.uval;
+ led->defs.defined |= _LED_Groups;
+ }
+ else if ((uStrCaseCmp(field, "controls") == 0) ||
+ (uStrCaseCmp(field, "ctrls") == 0))
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveMask
+ (value, &rtrn, SimpleLookup, (XPointer) ctrlNames))
+ return ReportIndicatorBadType(xkb->dpy, led, field,
+ "controls mask");
+ led->ctrls = rtrn.uval;
+ led->defs.defined |= _LED_Ctrls;
+ }
+ else if (uStrCaseCmp(field, "allowexplicit") == 0)
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
+ return ReportIndicatorBadType(xkb->dpy, led, field, "boolean");
+ if (rtrn.uval)
+ led->flags &= ~XkbIM_NoExplicit;
+ else
+ led->flags |= XkbIM_NoExplicit;
+ led->defs.defined |= _LED_Explicit;
+ }
+ else if ((uStrCaseCmp(field, "whichmodstate") == 0) ||
+ (uStrCaseCmp(field, "whichmodifierstate") == 0))
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveMask(value, &rtrn, SimpleLookup,
+ (XPointer) modComponentNames))
+ {
+ return ReportIndicatorBadType(xkb->dpy, led, field,
+ "mask of modifier state components");
+ }
+ led->which_mods = rtrn.uval;
+ }
+ else if (uStrCaseCmp(field, "whichgroupstate") == 0)
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveMask(value, &rtrn, SimpleLookup,
+ (XPointer) groupComponentNames))
+ {
+ return ReportIndicatorBadType(xkb->dpy, led, field,
+ "mask of group state components");
+ }
+ led->which_groups = rtrn.uval;
+ }
+ else if ((uStrCaseCmp(field, "driveskbd") == 0) ||
+ (uStrCaseCmp(field, "driveskeyboard") == 0) ||
+ (uStrCaseCmp(field, "leddriveskbd") == 0) ||
+ (uStrCaseCmp(field, "leddriveskeyboard") == 0) ||
+ (uStrCaseCmp(field, "indicatordriveskbd") == 0) ||
+ (uStrCaseCmp(field, "indicatordriveskeyboard") == 0))
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
+ return ReportIndicatorBadType(xkb->dpy, led, field, "boolean");
+ if (rtrn.uval)
+ led->flags |= XkbIM_LEDDrivesKB;
+ else
+ led->flags &= ~XkbIM_LEDDrivesKB;
+ led->defs.defined |= _LED_DrivesKbd;
+ }
+ else if (uStrCaseCmp(field, "index") == 0)
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportIndicatorBadType(xkb->dpy, led, field,
+ "indicator index");
+ if ((rtrn.uval < 1) || (rtrn.uval > 32))
+ {
+ ERROR2("Illegal indicator index %d (range 1..%d)\n",
+ rtrn.uval, XkbNumIndicators);
+ ACTION1("Index definition for %s indicator ignored\n",
+ XkbAtomText(NULL, led->name, XkbMessage));
+ return False;
+ }
+ led->indicator = rtrn.uval;
+ led->defs.defined |= _LED_Index;
+ }
+ else
+ {
+ ERROR2("Unknown field %s in map for %s indicator\n", field,
+ XkbAtomText(NULL, led->name, XkbMessage));
+ ACTION("Definition ignored\n");
+ ok = False;
+ }
+ return ok;
+}
+
+LEDInfo *
+HandleIndicatorMapDef(IndicatorMapDef * def,
+ XkbDescPtr xkb,
+ LEDInfo * dflt, LEDInfo * oldLEDs, unsigned merge)
+{
+ LEDInfo led, *rtrn;
+ VarDef *var;
+ Bool ok;
+
+ if (def->merge != MergeDefault)
+ merge = def->merge;
+
+ led = *dflt;
+ led.defs.merge = merge;
+ led.name = def->name;
+
+ ok = True;
+ for (var = def->body; var != NULL; var = (VarDef *) var->common.next)
+ {
+ ExprResult elem, field;
+ ExprDef *arrayNdx;
+ if (!ExprResolveLhs(var->name, &elem, &field, &arrayNdx))
+ {
+ ok = False;
+ continue;
+ }
+ if (elem.str != NULL)
+ {
+ ERROR1
+ ("Cannot set defaults for \"%s\" element in indicator map\n",
+ elem.str);
+ ACTION2("Assignment to %s.%s ignored\n", elem.str, field.str);
+ ok = False;
+ }
+ else
+ {
+ ok = SetIndicatorMapField(&led, xkb, field.str, arrayNdx,
+ var->value) && ok;
+ }
+ }
+ if (ok)
+ {
+ rtrn = AddIndicatorMap(oldLEDs, &led);
+ return rtrn;
+ }
+ return NULL;
+}
+
+Bool
+CopyIndicatorMapDefs(XkbFileInfo * result, LEDInfo * leds,
+ LEDInfo ** unboundRtrn)
+{
+ LEDInfo *led, *next;
+ LEDInfo *unbound, *last;
+ XkbDescPtr xkb;
+
+ xkb = result->xkb;
+ if (XkbAllocNames(xkb, XkbIndicatorNamesMask, 0, 0) != Success)
+ {
+ WSGO("Couldn't allocate names\n");
+ ACTION("Indicator names may be incorrect\n");
+ }
+ if (XkbAllocIndicatorMaps(xkb) != Success)
+ {
+ WSGO("Can't allocate indicator maps\n");
+ ACTION("Indicator map definitions may be lost\n");
+ return False;
+ }
+ last = unbound = (unboundRtrn ? *unboundRtrn : NULL);
+ while ((last != NULL) && (last->defs.next != NULL))
+ {
+ last = (LEDInfo *) last->defs.next;
+ }
+ for (led = leds; led != NULL; led = next)
+ {
+ next = (LEDInfo *) led->defs.next;
+ if ((led->groups != 0) && (led->which_groups == 0))
+ led->which_groups = XkbIM_UseEffective;
+ if ((led->which_mods == 0) && ((led->real_mods) || (led->vmods)))
+ led->which_mods = XkbIM_UseEffective;
+ if ((led->indicator == _LED_NotBound) || (!xkb->indicators))
+ {
+ if (unboundRtrn != NULL)
+ {
+ led->defs.next = NULL;
+ if (last != NULL)
+ last->defs.next = (CommonInfo *) led;
+ else
+ unbound = led;
+ last = led;
+ }
+ else
+ uFree(led);
+ }
+ else
+ {
+ register XkbIndicatorMapPtr im;
+ im = &xkb->indicators->maps[led->indicator - 1];
+ im->flags = led->flags;
+ im->which_groups = led->which_groups;
+ im->groups = led->groups;
+ im->which_mods = led->which_mods;
+ im->mods.mask = led->real_mods;
+ im->mods.real_mods = led->real_mods;
+ im->mods.vmods = led->vmods;
+ im->ctrls = led->ctrls;
+ if (xkb->names != NULL)
+ xkb->names->indicators[led->indicator - 1] = led->name;
+ uFree(led);
+ }
+ }
+ if (unboundRtrn != NULL)
+ {
+ *unboundRtrn = unbound;
+ }
+ return True;
+}
+
+Bool
+BindIndicators(XkbFileInfo * result,
+ Bool force, LEDInfo * unbound, LEDInfo ** unboundRtrn)
+{
+ XkbDescPtr xkb;
+ register int i;
+ register LEDInfo *led, *next, *last;
+
+ xkb = result->xkb;
+ if (xkb->names != NULL)
+ {
+ for (led = unbound; led != NULL; led = (LEDInfo *) led->defs.next)
+ {
+ if (led->indicator == _LED_NotBound)
+ {
+ for (i = 0; i < XkbNumIndicators; i++)
+ {
+ if (xkb->names->indicators[i] == led->name)
+ {
+ led->indicator = i + 1;
+ break;
+ }
+ }
+ }
+ }
+ if (force)
+ {
+ for (led = unbound; led != NULL; led = (LEDInfo *) led->defs.next)
+ {
+ if (led->indicator == _LED_NotBound)
+ {
+ for (i = 0; i < XkbNumIndicators; i++)
+ {
+ if (xkb->names->indicators[i] == None)
+ {
+ xkb->names->indicators[i] = led->name;
+ led->indicator = i + 1;
+ xkb->indicators->phys_indicators &= ~(1 << i);
+ break;
+ }
+ }
+ if (led->indicator == _LED_NotBound)
+ {
+ ERROR("No unnamed indicators found\n");
+ ACTION1
+ ("Virtual indicator map \"%s\" not bound\n",
+ XkbAtomGetString(xkb->dpy, led->name));
+ continue;
+ }
+ }
+ }
+ }
+ }
+ for (last = NULL, led = unbound; led != NULL; led = next)
+ {
+ next = (LEDInfo *) led->defs.next;
+ if (led->indicator == _LED_NotBound)
+ {
+ if (force)
+ {
+ unbound = next;
+ uFree(led);
+ }
+ else
+ {
+ if (last)
+ last->defs.next = &led->defs;
+ else
+ unbound = led;
+ last = led;
+ }
+ }
+ else
+ {
+ if ((xkb->names != NULL) &&
+ (xkb->names->indicators[led->indicator - 1] != led->name))
+ {
+ Atom old = xkb->names->indicators[led->indicator - 1];
+ ERROR1("Multiple names bound to indicator %d\n",
+ (unsigned int) led->indicator);
+ ACTION2("Using %s, ignoring %s\n",
+ XkbAtomGetString(xkb->dpy, old),
+ XkbAtomGetString(xkb->dpy, led->name));
+ led->indicator = _LED_NotBound;
+ if (force)
+ {
+ uFree(led);
+ unbound = next;
+ }
+ else
+ {
+ if (last)
+ last->defs.next = &led->defs;
+ else
+ unbound = led;
+ last = led;
+ }
+ }
+ else
+ {
+ XkbIndicatorMapPtr map;
+ map = &xkb->indicators->maps[led->indicator - 1];
+ map->flags = led->flags;
+ map->which_groups = led->which_groups;
+ map->groups = led->groups;
+ map->which_mods = led->which_mods;
+ map->mods.mask = led->real_mods;
+ map->mods.real_mods = led->real_mods;
+ map->mods.vmods = led->vmods;
+ map->ctrls = led->ctrls;
+ if (last)
+ last->defs.next = &next->defs;
+ else
+ unbound = next;
+ led->defs.next = NULL;
+ uFree(led);
+ }
+ }
+ }
+ if (unboundRtrn)
+ {
+ *unboundRtrn = unbound;
+ }
+ else if (unbound)
+ {
+ for (led = unbound; led != NULL; led = next)
+ {
+ next = (LEDInfo *) led->defs.next;
+ uFree(led);
+ }
+ }
+ return True;
+}
diff --git a/xkbcomp/indicators.h b/xkbcomp/indicators.h
index 35ae38a4c..9c72f70d5 100644
--- a/xkbcomp/indicators.h
+++ b/xkbcomp/indicators.h
@@ -1,88 +1,88 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#ifndef INDICATORS_H
-#define INDICATORS_H 1
-
-#define _LED_Index (1<<0)
-#define _LED_Mods (1<<1)
-#define _LED_Groups (1<<2)
-#define _LED_Ctrls (1<<3)
-#define _LED_Explicit (1<<4)
-#define _LED_Automatic (1<<5)
-#define _LED_DrivesKbd (1<<6)
-
-#define _LED_NotBound 255
-
-typedef struct _LEDInfo
-{
- CommonInfo defs;
- Atom name;
- unsigned char indicator;
- unsigned char flags;
- unsigned char which_mods;
- unsigned char real_mods;
- unsigned short vmods;
- unsigned char which_groups;
- unsigned char groups;
- unsigned int ctrls;
-} LEDInfo;
-
-extern void ClearIndicatorMapInfo(Display * /* dpy */ ,
- LEDInfo * /* info */
- );
-
-
-extern LEDInfo *AddIndicatorMap(LEDInfo * /* oldLEDs */ ,
- LEDInfo * /* newLED */
- );
-
-extern int SetIndicatorMapField(LEDInfo * /* led */ ,
- XkbDescPtr /* xkb */ ,
- char * /* field */ ,
- ExprDef * /* arrayNdx */ ,
- ExprDef * /* value */
- );
-
-extern LEDInfo *HandleIndicatorMapDef(IndicatorMapDef * /* stmt */ ,
- XkbDescPtr /* xkb */ ,
- LEDInfo * /* dflt */ ,
- LEDInfo * /* oldLEDs */ ,
- unsigned /* mergeMode */
- );
-
-extern Bool CopyIndicatorMapDefs(XkbFileInfo * /* result */ ,
- LEDInfo * /* leds */ ,
- LEDInfo ** /* unboundRtrn */
- );
-
-extern Bool BindIndicators(XkbFileInfo * /* result */ ,
- Bool /* force */ ,
- LEDInfo * /* unbound */ ,
- LEDInfo ** /* unboundRtrn */
- );
-
-#endif /* INDICATORS_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#ifndef INDICATORS_H
+#define INDICATORS_H 1
+
+#define _LED_Index (1<<0)
+#define _LED_Mods (1<<1)
+#define _LED_Groups (1<<2)
+#define _LED_Ctrls (1<<3)
+#define _LED_Explicit (1<<4)
+#define _LED_Automatic (1<<5)
+#define _LED_DrivesKbd (1<<6)
+
+#define _LED_NotBound 255
+
+typedef struct _LEDInfo
+{
+ CommonInfo defs;
+ Atom name;
+ unsigned char indicator;
+ unsigned char flags;
+ unsigned char which_mods;
+ unsigned char real_mods;
+ unsigned short vmods;
+ unsigned char which_groups;
+ unsigned char groups;
+ unsigned int ctrls;
+} LEDInfo;
+
+extern void ClearIndicatorMapInfo(Display * /* dpy */ ,
+ LEDInfo * /* info */
+ );
+
+
+extern LEDInfo *AddIndicatorMap(LEDInfo * /* oldLEDs */ ,
+ LEDInfo * /* newLED */
+ );
+
+extern int SetIndicatorMapField(LEDInfo * /* led */ ,
+ XkbDescPtr /* xkb */ ,
+ char * /* field */ ,
+ ExprDef * /* arrayNdx */ ,
+ ExprDef * /* value */
+ );
+
+extern LEDInfo *HandleIndicatorMapDef(IndicatorMapDef * /* stmt */ ,
+ XkbDescPtr /* xkb */ ,
+ LEDInfo * /* dflt */ ,
+ LEDInfo * /* oldLEDs */ ,
+ unsigned /* mergeMode */
+ );
+
+extern Bool CopyIndicatorMapDefs(XkbFileInfo * /* result */ ,
+ LEDInfo * /* leds */ ,
+ LEDInfo ** /* unboundRtrn */
+ );
+
+extern Bool BindIndicators(XkbFileInfo * /* result */ ,
+ Bool /* force */ ,
+ LEDInfo * /* unbound */ ,
+ LEDInfo ** /* unboundRtrn */
+ );
+
+#endif /* INDICATORS_H */
diff --git a/xkbcomp/keycodes.h b/xkbcomp/keycodes.h
index 11f4460fe..b7f5b9989 100644
--- a/xkbcomp/keycodes.h
+++ b/xkbcomp/keycodes.h
@@ -1,40 +1,40 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#ifndef KEYCODES_H
-#define KEYCODES_H 1
-
-#define KeyNameToLong(n) ((((unsigned long)n[0])<<24)|(((unsigned long)n[1])<<16)|(((unsigned long)n[2])<<8)|n[3])
-
-extern char *longText(unsigned long /* val */ ,
- unsigned /* format */
- );
-
-extern void LongToKeyName(unsigned long /* val */ ,
- char * /* name_rtrn */
- );
-
-#endif /* KEYCODES_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#ifndef KEYCODES_H
+#define KEYCODES_H 1
+
+#define KeyNameToLong(n) ((((unsigned long)n[0])<<24)|(((unsigned long)n[1])<<16)|(((unsigned long)n[2])<<8)|n[3])
+
+extern char *longText(unsigned long /* val */ ,
+ unsigned /* format */
+ );
+
+extern void LongToKeyName(unsigned long /* val */ ,
+ char * /* name_rtrn */
+ );
+
+#endif /* KEYCODES_H */
diff --git a/xkbcomp/keymap.c b/xkbcomp/keymap.c
index a419d8c42..2c90f515d 100644
--- a/xkbcomp/keymap.c
+++ b/xkbcomp/keymap.c
@@ -1,183 +1,183 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "tokens.h"
-#include "expr.h"
-#include "vmod.h"
-#include "action.h"
-#include "misc.h"
-#include "indicators.h"
-
-#define KEYCODES 0
-#define GEOMETRY 1
-#define TYPES 2
-#define COMPAT 3
-#define SYMBOLS 4
-#define MAX_SECTIONS 5
-
-static XkbFile *sections[MAX_SECTIONS];
-
-/**
- * Compile the given file and store the output in result.
- * @param file A list of XkbFiles, each denoting one type (e.g.
- * XkmKeyNamesIdx, etc.)
- */
-Bool
-CompileKeymap(XkbFile * file, XkbFileInfo * result, unsigned merge)
-{
- unsigned have;
- Bool ok;
- unsigned required, legal;
- unsigned mainType;
- char *mainName;
- LEDInfo *unbound = NULL;
-
- bzero(sections, MAX_SECTIONS * sizeof(XkbFile *));
- mainType = file->type;
- mainName = file->name;
- switch (mainType)
- {
- case XkmSemanticsFile:
- required = XkmSemanticsRequired;
- legal = XkmSemanticsLegal;
- break;
- case XkmLayoutFile: /* standard type if setxkbmap -print */
- required = XkmLayoutRequired;
- legal = XkmKeymapLegal;
- break;
- case XkmKeymapFile:
- required = XkmKeymapRequired;
- legal = XkmKeymapLegal;
- break;
- default:
- ERROR1("Cannot compile %s alone into an XKM file\n",
- XkbConfigText(mainType, XkbMessage));
- return False;
- }
- have = 0;
- ok = 1;
- file = (XkbFile *) file->defs;
- /* Check for duplicate entries in the input file */
- while ((file) && (ok))
- {
- file->topName = mainName;
- if ((have & (1 << file->type)) != 0)
- {
- ERROR2("More than one %s section in a %s file\n",
- XkbConfigText(file->type, XkbMessage),
- XkbConfigText(mainType, XkbMessage));
- ACTION("All sections after the first ignored\n");
- ok = False;
- }
- else if ((1 << file->type) & (~legal))
- {
- ERROR2("Cannot define %s in a %s file\n",
- XkbConfigText(file->type, XkbMessage),
- XkbConfigText(mainType, XkbMessage));
- ok = False;
- }
- else
- switch (file->type)
- {
- case XkmSemanticsFile:
- case XkmLayoutFile:
- case XkmKeymapFile:
- WSGO2("Illegal %s configuration in a %s file\n",
- XkbConfigText(file->type, XkbMessage),
- XkbConfigText(mainType, XkbMessage));
- ACTION("Ignored\n");
- ok = False;
- break;
- case XkmKeyNamesIndex:
- sections[KEYCODES] = file;
- break;
- case XkmTypesIndex:
- sections[TYPES] = file;
- break;
- case XkmSymbolsIndex:
- sections[SYMBOLS] = file;
- break;
- case XkmCompatMapIndex:
- sections[COMPAT] = file;
- break;
- case XkmGeometryIndex:
- case XkmGeometryFile:
- sections[GEOMETRY] = file;
- break;
- case XkmVirtualModsIndex:
- case XkmIndicatorsIndex:
- WSGO1("Found an isolated %s section\n",
- XkbConfigText(file->type, XkbMessage));
- break;
- default:
- WSGO1("Unknown file type %d\n", file->type);
- break;
- }
- if (ok)
- have |= (1 << file->type);
- file = (XkbFile *) file->common.next;
- }
- /* compile the sections we have in the file one-by-one, or fail. */
- if (ok)
- {
- if (ok && (sections[KEYCODES] != NULL))
- ok = CompileKeycodes(sections[KEYCODES], result, MergeOverride);
- if (ok && (sections[GEOMETRY] != NULL))
- ok = CompileGeometry(sections[GEOMETRY], result, MergeOverride);
- if (ok && (sections[TYPES] != NULL))
- ok = CompileKeyTypes(sections[TYPES], result, MergeOverride);
- if (ok && (sections[COMPAT] != NULL))
- ok = CompileCompatMap(sections[COMPAT], result, MergeOverride,
- &unbound);
- if (ok && (sections[SYMBOLS] != NULL))
- ok = CompileSymbols(sections[SYMBOLS], result, MergeOverride);
- }
- if (!ok)
- return False;
- result->defined = have;
- if (required & (~have))
- {
- register int i, bit;
- unsigned missing;
- missing = required & (~have);
- for (i = 0, bit = 1; missing != 0; i++, bit <<= 1)
- {
- if (missing & bit)
- {
- ERROR2("Missing %s section in a %s file\n",
- XkbConfigText(i, XkbMessage),
- XkbConfigText(mainType, XkbMessage));
- missing &= ~bit;
- }
- }
- ACTION1("Description of %s not compiled\n",
- XkbConfigText(mainType, XkbMessage));
- ok = False;
- }
- ok = BindIndicators(result, True, unbound, NULL);
- return ok;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "tokens.h"
+#include "expr.h"
+#include "vmod.h"
+#include "action.h"
+#include "misc.h"
+#include "indicators.h"
+
+#define KEYCODES 0
+#define GEOMETRY 1
+#define TYPES 2
+#define COMPAT 3
+#define SYMBOLS 4
+#define MAX_SECTIONS 5
+
+static XkbFile *sections[MAX_SECTIONS];
+
+/**
+ * Compile the given file and store the output in result.
+ * @param file A list of XkbFiles, each denoting one type (e.g.
+ * XkmKeyNamesIdx, etc.)
+ */
+Bool
+CompileKeymap(XkbFile * file, XkbFileInfo * result, unsigned merge)
+{
+ unsigned have;
+ Bool ok;
+ unsigned required, legal;
+ unsigned mainType;
+ char *mainName;
+ LEDInfo *unbound = NULL;
+
+ bzero(sections, MAX_SECTIONS * sizeof(XkbFile *));
+ mainType = file->type;
+ mainName = file->name;
+ switch (mainType)
+ {
+ case XkmSemanticsFile:
+ required = XkmSemanticsRequired;
+ legal = XkmSemanticsLegal;
+ break;
+ case XkmLayoutFile: /* standard type if setxkbmap -print */
+ required = XkmLayoutRequired;
+ legal = XkmKeymapLegal;
+ break;
+ case XkmKeymapFile:
+ required = XkmKeymapRequired;
+ legal = XkmKeymapLegal;
+ break;
+ default:
+ ERROR1("Cannot compile %s alone into an XKM file\n",
+ XkbConfigText(mainType, XkbMessage));
+ return False;
+ }
+ have = 0;
+ ok = 1;
+ file = (XkbFile *) file->defs;
+ /* Check for duplicate entries in the input file */
+ while ((file) && (ok))
+ {
+ file->topName = mainName;
+ if ((have & (1 << file->type)) != 0)
+ {
+ ERROR2("More than one %s section in a %s file\n",
+ XkbConfigText(file->type, XkbMessage),
+ XkbConfigText(mainType, XkbMessage));
+ ACTION("All sections after the first ignored\n");
+ ok = False;
+ }
+ else if ((1 << file->type) & (~legal))
+ {
+ ERROR2("Cannot define %s in a %s file\n",
+ XkbConfigText(file->type, XkbMessage),
+ XkbConfigText(mainType, XkbMessage));
+ ok = False;
+ }
+ else
+ switch (file->type)
+ {
+ case XkmSemanticsFile:
+ case XkmLayoutFile:
+ case XkmKeymapFile:
+ WSGO2("Illegal %s configuration in a %s file\n",
+ XkbConfigText(file->type, XkbMessage),
+ XkbConfigText(mainType, XkbMessage));
+ ACTION("Ignored\n");
+ ok = False;
+ break;
+ case XkmKeyNamesIndex:
+ sections[KEYCODES] = file;
+ break;
+ case XkmTypesIndex:
+ sections[TYPES] = file;
+ break;
+ case XkmSymbolsIndex:
+ sections[SYMBOLS] = file;
+ break;
+ case XkmCompatMapIndex:
+ sections[COMPAT] = file;
+ break;
+ case XkmGeometryIndex:
+ case XkmGeometryFile:
+ sections[GEOMETRY] = file;
+ break;
+ case XkmVirtualModsIndex:
+ case XkmIndicatorsIndex:
+ WSGO1("Found an isolated %s section\n",
+ XkbConfigText(file->type, XkbMessage));
+ break;
+ default:
+ WSGO1("Unknown file type %d\n", file->type);
+ break;
+ }
+ if (ok)
+ have |= (1 << file->type);
+ file = (XkbFile *) file->common.next;
+ }
+ /* compile the sections we have in the file one-by-one, or fail. */
+ if (ok)
+ {
+ if (ok && (sections[KEYCODES] != NULL))
+ ok = CompileKeycodes(sections[KEYCODES], result, MergeOverride);
+ if (ok && (sections[GEOMETRY] != NULL))
+ ok = CompileGeometry(sections[GEOMETRY], result, MergeOverride);
+ if (ok && (sections[TYPES] != NULL))
+ ok = CompileKeyTypes(sections[TYPES], result, MergeOverride);
+ if (ok && (sections[COMPAT] != NULL))
+ ok = CompileCompatMap(sections[COMPAT], result, MergeOverride,
+ &unbound);
+ if (ok && (sections[SYMBOLS] != NULL))
+ ok = CompileSymbols(sections[SYMBOLS], result, MergeOverride);
+ }
+ if (!ok)
+ return False;
+ result->defined = have;
+ if (required & (~have))
+ {
+ register int i, bit;
+ unsigned missing;
+ missing = required & (~have);
+ for (i = 0, bit = 1; missing != 0; i++, bit <<= 1)
+ {
+ if (missing & bit)
+ {
+ ERROR2("Missing %s section in a %s file\n",
+ XkbConfigText(i, XkbMessage),
+ XkbConfigText(mainType, XkbMessage));
+ missing &= ~bit;
+ }
+ }
+ ACTION1("Description of %s not compiled\n",
+ XkbConfigText(mainType, XkbMessage));
+ ok = False;
+ }
+ ok = BindIndicators(result, True, unbound, NULL);
+ return ok;
+}
diff --git a/xkbcomp/keytypes.c b/xkbcomp/keytypes.c
index da55d755d..d0d5302f9 100644
--- a/xkbcomp/keytypes.c
+++ b/xkbcomp/keytypes.c
@@ -1,1293 +1,1293 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "tokens.h"
-#include "expr.h"
-#include "vmod.h"
-#include "action.h"
-#include "misc.h"
-
-typedef struct _PreserveInfo
-{
- CommonInfo defs;
- short matchingMapIndex;
- unsigned char indexMods;
- unsigned char preMods;
- unsigned short indexVMods;
- unsigned short preVMods;
-} PreserveInfo;
-
-#define _KT_Name (1<<0)
-#define _KT_Mask (1<<1)
-#define _KT_Map (1<<2)
-#define _KT_Preserve (1<<3)
-#define _KT_LevelNames (1<<4)
-
-typedef struct _KeyTypeInfo
-{
- CommonInfo defs;
- Display *dpy;
- Atom name;
- int fileID;
- unsigned mask;
- unsigned vmask;
- Bool groupInfo;
- int numLevels;
- int nEntries;
- int szEntries;
- XkbKTMapEntryPtr entries;
- PreserveInfo *preserve;
- int szNames;
- Atom *lvlNames;
-} KeyTypeInfo;
-
-typedef struct _KeyTypesInfo
-{
- Display *dpy;
- char *name;
- int errorCount;
- int fileID;
- unsigned stdPresent;
- int nTypes;
- KeyTypeInfo *types;
- KeyTypeInfo dflt;
- VModInfo vmods;
-} KeyTypesInfo;
-
-Atom tok_ONE_LEVEL;
-Atom tok_TWO_LEVEL;
-Atom tok_ALPHABETIC;
-Atom tok_KEYPAD;
-
-/***====================================================================***/
-
-#define ReportTypeShouldBeArray(t,f) \
- ReportShouldBeArray("key type",(f),TypeTxt(t))
-#define ReportTypeBadType(t,f,w) \
- ReportBadType("key type",(f),TypeTxt(t),(w))
-
-/***====================================================================***/
-
-extern Bool AddMapEntry(XkbDescPtr /* xkb */ ,
- KeyTypeInfo * /* type */ ,
- XkbKTMapEntryPtr /* new */ ,
- Bool /* clobber */ ,
- Bool /* report */
- );
-
-extern Bool AddPreserve(XkbDescPtr /* xkb */ ,
- KeyTypeInfo * /* type */ ,
- PreserveInfo * /* new */ ,
- Bool /* clobber */ ,
- Bool /* report */
- );
-
-extern Bool AddLevelName(KeyTypeInfo * /* type */ ,
- unsigned /* level */ ,
- Atom /* name */ ,
- Bool /* clobber */ ,
- Bool /* report */
- );
-
-#define MapEntryTxt(t,x,e) \
- XkbVModMaskText((t)->dpy,(x),(e)->mods.real_mods,(e)->mods.vmods,XkbMessage)
-#define PreserveIndexTxt(t,x,p) \
- XkbVModMaskText((t)->dpy,(x),(p)->indexMods,(p)->indexVMods,XkbMessage)
-#define PreserveTxt(t,x,p) \
- XkbVModMaskText((t)->dpy,(x),(p)->preMods,(p)->preVMods,XkbMessage)
-#define TypeTxt(t) XkbAtomText((t)->dpy,(t)->name,XkbMessage)
-#define TypeMaskTxt(t,x) \
- XkbVModMaskText((t)->dpy,(x),(t)->mask,(t)->vmask,XkbMessage)
-
-/***====================================================================***/
-
-static void
-InitKeyTypesInfo(KeyTypesInfo * info, XkbDescPtr xkb, KeyTypesInfo * from)
-{
- tok_ONE_LEVEL = XkbInternAtom(NULL, "ONE_LEVEL", False);
- tok_TWO_LEVEL = XkbInternAtom(NULL, "TWO_LEVEL", False);
- tok_ALPHABETIC = XkbInternAtom(NULL, "ALPHABETIC", False);
- tok_KEYPAD = XkbInternAtom(NULL, "KEYPAD", False);
- info->dpy = NULL;
- info->name = uStringDup("default");
- info->errorCount = 0;
- info->stdPresent = 0;
- info->nTypes = 0;
- info->types = NULL;
- info->dflt.defs.defined = 0;
- info->dflt.defs.fileID = 0;
- info->dflt.defs.merge = MergeOverride;
- info->dflt.defs.next = NULL;
- info->dflt.name = None;
- info->dflt.mask = 0;
- info->dflt.vmask = 0;
- info->dflt.groupInfo = False;
- info->dflt.numLevels = 1;
- info->dflt.nEntries = info->dflt.szEntries = 0;
- info->dflt.entries = NULL;
- info->dflt.szNames = 0;
- info->dflt.lvlNames = NULL;
- info->dflt.preserve = NULL;
- InitVModInfo(&info->vmods, xkb);
- if (from != NULL)
- {
- info->dpy = from->dpy;
- info->dflt = from->dflt;
- if (from->dflt.entries)
- {
- info->dflt.entries = uTypedCalloc(from->dflt.szEntries,
- XkbKTMapEntryRec);
- if (info->dflt.entries)
- {
- unsigned sz = from->dflt.nEntries * sizeof(XkbKTMapEntryRec);
- memcpy(info->dflt.entries, from->dflt.entries, sz);
- }
- }
- if (from->dflt.lvlNames)
- {
- info->dflt.lvlNames = uTypedCalloc(from->dflt.szNames, Atom);
- if (info->dflt.lvlNames)
- {
- register unsigned sz = from->dflt.szNames * sizeof(Atom);
- memcpy(info->dflt.lvlNames, from->dflt.lvlNames, sz);
- }
- }
- if (from->dflt.preserve)
- {
- PreserveInfo *old, *new, *last;
- last = NULL;
- old = from->dflt.preserve;
- for (; old; old = (PreserveInfo *) old->defs.next)
- {
- new = uTypedAlloc(PreserveInfo);
- if (!new)
- return;
- *new = *old;
- new->defs.next = NULL;
- if (last)
- last->defs.next = (CommonInfo *) new;
- else
- info->dflt.preserve = new;
- last = new;
- }
- }
- }
- return;
-}
-
-static void
-FreeKeyTypeInfo(KeyTypeInfo * type)
-{
- if (type->entries != NULL)
- {
- uFree(type->entries);
- type->entries = NULL;
- }
- if (type->lvlNames != NULL)
- {
- uFree(type->lvlNames);
- type->lvlNames = NULL;
- }
- if (type->preserve != NULL)
- {
- ClearCommonInfo(&type->preserve->defs);
- type->preserve = NULL;
- }
- return;
-}
-
-static void
-FreeKeyTypesInfo(KeyTypesInfo * info)
-{
- info->dpy = NULL;
- if (info->name)
- uFree(info->name);
- info->name = NULL;
- if (info->types)
- {
- register KeyTypeInfo *type;
- for (type = info->types; type; type = (KeyTypeInfo *) type->defs.next)
- {
- FreeKeyTypeInfo(type);
- }
- info->types = (KeyTypeInfo *) ClearCommonInfo(&info->types->defs);
- }
- FreeKeyTypeInfo(&info->dflt);
- return;
-}
-
-static KeyTypeInfo *
-NextKeyType(KeyTypesInfo * info)
-{
- KeyTypeInfo *type;
-
- type = uTypedAlloc(KeyTypeInfo);
- if (type != NULL)
- {
- bzero(type, sizeof(KeyTypeInfo));
- type->defs.fileID = info->fileID;
- type->dpy = info->dpy;
- info->types = (KeyTypeInfo *) AddCommonInfo(&info->types->defs,
- (CommonInfo *) type);
- info->nTypes++;
- }
- return type;
-}
-
-static KeyTypeInfo *
-FindMatchingKeyType(KeyTypesInfo * info, KeyTypeInfo * new)
-{
- KeyTypeInfo *old;
-
- for (old = info->types; old; old = (KeyTypeInfo *) old->defs.next)
- {
- if (old->name == new->name)
- return old;
- }
- return NULL;
-}
-
-static Bool
-ReportTypeBadWidth(const char *type, int has, int needs)
-{
- ERROR3("Key type \"%s\" has %d levels, must have %d\n", type, has, needs);
- ACTION("Illegal type definition ignored\n");
- return False;
-}
-
-static Bool
-AddKeyType(XkbDescPtr xkb, KeyTypesInfo * info, KeyTypeInfo * new)
-{
- KeyTypeInfo *old;
-
- if (new->name == tok_ONE_LEVEL)
- {
- if (new->numLevels > 1)
- return ReportTypeBadWidth("ONE_LEVEL", new->numLevels, 1);
- info->stdPresent |= XkbOneLevelMask;
- }
- else if (new->name == tok_TWO_LEVEL)
- {
- if (new->numLevels > 2)
- return ReportTypeBadWidth("TWO_LEVEL", new->numLevels, 2);
- else if (new->numLevels < 2)
- new->numLevels = 2;
- info->stdPresent |= XkbTwoLevelMask;
- }
- else if (new->name == tok_ALPHABETIC)
- {
- if (new->numLevels > 2)
- return ReportTypeBadWidth("ALPHABETIC", new->numLevels, 2);
- else if (new->numLevels < 2)
- new->numLevels = 2;
- info->stdPresent |= XkbAlphabeticMask;
- }
- else if (new->name == tok_KEYPAD)
- {
- if (new->numLevels > 2)
- return ReportTypeBadWidth("KEYPAD", new->numLevels, 2);
- else if (new->numLevels < 2)
- new->numLevels = 2;
- info->stdPresent |= XkbKeypadMask;
- }
-
- old = FindMatchingKeyType(info, new);
- if (old != NULL)
- {
- Bool report;
- if ((new->defs.merge == MergeReplace)
- || (new->defs.merge == MergeOverride))
- {
- KeyTypeInfo *next = (KeyTypeInfo *) old->defs.next;
- if (((old->defs.fileID == new->defs.fileID)
- && (warningLevel > 0)) || (warningLevel > 9))
- {
- WARN1("Multiple definitions of the %s key type\n",
- XkbAtomGetString(NULL, new->name));
- ACTION("Earlier definition ignored\n");
- }
- FreeKeyTypeInfo(old);
- *old = *new;
- new->szEntries = new->nEntries = 0;
- new->entries = NULL;
- new->preserve = NULL;
- new->lvlNames = NULL;
- old->defs.next = &next->defs;
- return True;
- }
- report = (old->defs.fileID == new->defs.fileID) && (warningLevel > 0);
- if (report)
- {
- WARN1("Multiple definitions of the %s key type\n",
- XkbAtomGetString(NULL, new->name));
- ACTION("Later definition ignored\n");
- }
- FreeKeyTypeInfo(new);
- return True;
- }
- old = NextKeyType(info);
- if (old == NULL)
- return False;
- *old = *new;
- old->defs.next = NULL;
- new->nEntries = new->szEntries = 0;
- new->entries = NULL;
- new->szNames = 0;
- new->lvlNames = NULL;
- new->preserve = NULL;
- return True;
-}
-
-/***====================================================================***/
-
-static void
-MergeIncludedKeyTypes(KeyTypesInfo * into,
- KeyTypesInfo * from, unsigned merge, XkbDescPtr xkb)
-{
- KeyTypeInfo *type;
-
- if (from->errorCount > 0)
- {
- into->errorCount += from->errorCount;
- return;
- }
- if (into->name == NULL)
- {
- into->name = from->name;
- from->name = NULL;
- }
- for (type = from->types; type; type = (KeyTypeInfo *) type->defs.next)
- {
- if (merge != MergeDefault)
- type->defs.merge = merge;
- if (!AddKeyType(xkb, into, type))
- into->errorCount++;
- }
- into->stdPresent |= from->stdPresent;
- return;
-}
-
-typedef void (*FileHandler) (XkbFile * /* file */ ,
- XkbDescPtr /* xkb */ ,
- unsigned /* merge */ ,
- KeyTypesInfo * /* included */
- );
-
-static Bool
-HandleIncludeKeyTypes(IncludeStmt * stmt,
- XkbDescPtr xkb, KeyTypesInfo * info, FileHandler hndlr)
-{
- unsigned newMerge;
- XkbFile *rtrn;
- KeyTypesInfo included;
- Bool haveSelf;
-
- haveSelf = False;
- if ((stmt->file == NULL) && (stmt->map == NULL))
- {
- haveSelf = True;
- included = *info;
- bzero(info, sizeof(KeyTypesInfo));
- }
- else if (ProcessIncludeFile(stmt, XkmTypesIndex, &rtrn, &newMerge))
- {
- InitKeyTypesInfo(&included, xkb, info);
- included.fileID = included.dflt.defs.fileID = rtrn->id;
- included.dflt.defs.merge = newMerge;
-
- (*hndlr) (rtrn, xkb, newMerge, &included);
- if (stmt->stmt != NULL)
- {
- if (included.name != NULL)
- uFree(included.name);
- included.name = stmt->stmt;
- stmt->stmt = NULL;
- }
- }
- else
- {
- info->errorCount += 10;
- return False;
- }
- if ((stmt->next != NULL) && (included.errorCount < 1))
- {
- IncludeStmt *next;
- unsigned op;
- KeyTypesInfo next_incl;
-
- for (next = stmt->next; next != NULL; next = next->next)
- {
- if ((next->file == NULL) && (next->map == NULL))
- {
- haveSelf = True;
- MergeIncludedKeyTypes(&included, info, next->merge, xkb);
- FreeKeyTypesInfo(info);
- }
- else if (ProcessIncludeFile(next, XkmTypesIndex, &rtrn, &op))
- {
- InitKeyTypesInfo(&next_incl, xkb, &included);
- next_incl.fileID = next_incl.dflt.defs.fileID = rtrn->id;
- next_incl.dflt.defs.merge = op;
- (*hndlr) (rtrn, xkb, op, &next_incl);
- MergeIncludedKeyTypes(&included, &next_incl, op, xkb);
- FreeKeyTypesInfo(&next_incl);
- }
- else
- {
- info->errorCount += 10;
- return False;
- }
- }
- }
- if (haveSelf)
- *info = included;
- else
- {
- MergeIncludedKeyTypes(info, &included, newMerge, xkb);
- FreeKeyTypesInfo(&included);
- }
- return (info->errorCount == 0);
-}
-
-/***====================================================================***/
-
-static XkbKTMapEntryPtr
-FindMatchingMapEntry(KeyTypeInfo * type, unsigned mask, unsigned vmask)
-{
- register int i;
- XkbKTMapEntryPtr entry;
-
- for (i = 0, entry = type->entries; i < type->nEntries; i++, entry++)
- {
- if ((entry->mods.real_mods == mask) && (entry->mods.vmods == vmask))
- return entry;
- }
- return NULL;
-}
-
-static void
-DeleteLevel1MapEntries(KeyTypeInfo * type)
-{
- register int i, n;
-
- for (i = 0; i < type->nEntries; i++)
- {
- if (type->entries[i].level == 0)
- {
- for (n = i; n < type->nEntries - 1; n++)
- {
- type->entries[n] = type->entries[n + 1];
- }
- type->nEntries--;
- }
- }
- return;
-}
-
-/**
- * Return a pointer to the next free XkbKTMapEntry, reallocating space if
- * necessary.
- */
-static XkbKTMapEntryPtr
-NextMapEntry(KeyTypeInfo * type)
-{
- if (type->entries == NULL)
- {
- type->entries = uTypedCalloc(2, XkbKTMapEntryRec);
- if (type->entries == NULL)
- {
- ERROR1("Couldn't allocate map entries for %s\n", TypeTxt(type));
- ACTION("Map entries lost\n");
- return NULL;
- }
- type->szEntries = 2;
- type->nEntries = 0;
- }
- else if (type->nEntries >= type->szEntries)
- {
- type->szEntries *= 2;
- type->entries = uTypedRecalloc(type->entries,
- type->nEntries, type->szEntries,
- XkbKTMapEntryRec);
- if (type->entries == NULL)
- {
- ERROR1("Couldn't reallocate map entries for %s\n", TypeTxt(type));
- ACTION("Map entries lost\n");
- return NULL;
- }
- }
- return &type->entries[type->nEntries++];
-}
-
-Bool
-AddPreserve(XkbDescPtr xkb,
- KeyTypeInfo * type, PreserveInfo * new, Bool clobber, Bool report)
-{
- PreserveInfo *old;
-
- old = type->preserve;
- while (old != NULL)
- {
- if ((old->indexMods != new->indexMods) ||
- (old->indexVMods != new->indexVMods))
- {
- old = (PreserveInfo *) old->defs.next;
- continue;
- }
- if ((old->preMods == new->preMods)
- && (old->preVMods == new->preVMods))
- {
- if (warningLevel > 9)
- {
- WARN2("Identical definitions for preserve[%s] in %s\n",
- PreserveIndexTxt(type, xkb, old), TypeTxt(type));
- ACTION("Ignored\n");
- }
- return True;
- }
- if (report && (warningLevel > 0))
- {
- char *str;
- WARN2("Multiple definitions for preserve[%s] in %s\n",
- PreserveIndexTxt(type, xkb, old), TypeTxt(type));
-
- if (clobber)
- str = PreserveTxt(type, xkb, new);
- else
- str = PreserveTxt(type, xkb, old);
- ACTION1("Using %s, ", str);
- if (clobber)
- str = PreserveTxt(type, xkb, old);
- else
- str = PreserveTxt(type, xkb, new);
- INFO1("ignoring %s\n", str);
- }
- if (clobber)
- {
- old->preMods = new->preMods;
- old->preVMods = new->preVMods;
- }
- return True;
- }
- old = uTypedAlloc(PreserveInfo);
- if (!old)
- {
- WSGO1("Couldn't allocate preserve in %s\n", TypeTxt(type));
- ACTION1("Preserve[%s] lost\n", PreserveIndexTxt(type, xkb, old));
- return False;
- }
- *old = *new;
- old->matchingMapIndex = -1;
- type->preserve =
- (PreserveInfo *) AddCommonInfo(&type->preserve->defs, &old->defs);
- return True;
-}
-
-/**
- * Add a new KTMapEntry to the given key type. If an entry with the same mods
- * already exists, the level is updated (if clobber is TRUE). Otherwise, a new
- * entry is created.
- *
- * @param clobber Overwrite existing entry.
- * @param report True if a warning is to be printed on.
- */
-Bool
-AddMapEntry(XkbDescPtr xkb,
- KeyTypeInfo * type,
- XkbKTMapEntryPtr new, Bool clobber, Bool report)
-{
- XkbKTMapEntryPtr old;
-
- if ((old =
- FindMatchingMapEntry(type, new->mods.real_mods, new->mods.vmods)))
- {
- if (report && (old->level != new->level))
- {
- unsigned use, ignore;
- if (clobber)
- {
- use = new->level + 1;
- ignore = old->level + 1;
- }
- else
- {
- use = old->level + 1;
- ignore = new->level + 1;
- }
- WARN2("Multiple map entries for %s in %s\n",
- MapEntryTxt(type, xkb, new), TypeTxt(type));
- ACTION2("Using %d, ignoring %d\n", use, ignore);
- }
- else if (warningLevel > 9)
- {
- WARN3("Multiple occurences of map[%s]= %d in %s\n",
- MapEntryTxt(type, xkb, new), new->level + 1, TypeTxt(type));
- ACTION("Ignored\n");
- return True;
- }
- if (clobber)
- old->level = new->level;
- return True;
- }
- if ((old = NextMapEntry(type)) == NULL)
- return False; /* allocation failure, already reported */
- if (new->level >= type->numLevels)
- type->numLevels = new->level + 1;
- if (new->mods.vmods == 0)
- old->active = True;
- else
- old->active = False;
- old->mods.mask = new->mods.real_mods;
- old->mods.real_mods = new->mods.real_mods;
- old->mods.vmods = new->mods.vmods;
- old->level = new->level;
- return True;
-}
-
-static LookupEntry lnames[] = {
- {"level1", 1},
- {"level2", 2},
- {"level3", 3},
- {"level4", 4},
- {"level5", 5},
- {"level6", 6},
- {"level7", 7},
- {"level8", 8},
- {NULL, 0}
-};
-
-static Bool
-SetMapEntry(KeyTypeInfo * type,
- XkbDescPtr xkb, ExprDef * arrayNdx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbKTMapEntryRec entry;
-
- if (arrayNdx == NULL)
- return ReportTypeShouldBeArray(type, "map entry");
- if (!ExprResolveModMask(arrayNdx, &rtrn, LookupVModMask, (XPointer) xkb))
- return ReportTypeBadType(type, "map entry", "modifier mask");
- entry.mods.real_mods = rtrn.uval & 0xff; /* modifiers < 512 */
- entry.mods.vmods = (rtrn.uval >> 8) & 0xffff; /* modifiers > 512 */
- if ((entry.mods.real_mods & (~type->mask)) ||
- ((entry.mods.vmods & (~type->vmask)) != 0))
- {
- if (warningLevel > 0)
- {
- WARN1("Map entry for unused modifiers in %s\n", TypeTxt(type));
- ACTION1("Using %s instead of ",
- XkbVModMaskText(type->dpy, xkb,
- entry.mods.real_mods & type->mask,
- entry.mods.vmods & type->vmask,
- XkbMessage));
- INFO1("%s\n", MapEntryTxt(type, xkb, &entry));
- }
- entry.mods.real_mods &= type->mask;
- entry.mods.vmods &= type->vmask;
- }
- if (!ExprResolveInteger(value, &rtrn, SimpleLookup, (XPointer) lnames))
- {
- ERROR("Level specifications in a key type must be integer\n");
- ACTION("Ignoring malformed level specification\n");
- return False;
- }
- if ((rtrn.ival < 1) || (rtrn.ival > XkbMaxShiftLevel + 1))
- {
- ERROR3("Shift level %d out of range (1..%d) in key type %s\n",
- XkbMaxShiftLevel + 1, rtrn.ival, TypeTxt(type));
- ACTION1("Ignoring illegal definition of map[%s]\n",
- MapEntryTxt(type, xkb, &entry));
- return False;
- }
- entry.level = rtrn.ival - 1;
- return AddMapEntry(xkb, type, &entry, True, True);
-}
-
-static Bool
-SetPreserve(KeyTypeInfo * type,
- XkbDescPtr xkb, ExprDef * arrayNdx, ExprDef * value)
-{
- ExprResult rtrn;
- PreserveInfo new;
-
- if (arrayNdx == NULL)
- return ReportTypeShouldBeArray(type, "preserve entry");
- if (!ExprResolveModMask(arrayNdx, &rtrn, LookupVModMask, (XPointer) xkb))
- return ReportTypeBadType(type, "preserve entry", "modifier mask");
- new.defs = type->defs;
- new.defs.next = NULL;
- new.indexMods = rtrn.uval & 0xff;
- new.indexVMods = (rtrn.uval >> 8) & 0xffff;
- if ((new.indexMods & (~type->mask)) || (new.indexVMods & (~type->vmask)))
- {
- if (warningLevel > 0)
- {
- WARN1("Preserve for modifiers not used by the %s type\n",
- TypeTxt(type));
- ACTION1("Index %s converted to ",
- PreserveIndexTxt(type, xkb, &new));
- }
- new.indexMods &= type->mask;
- new.indexVMods &= type->vmask;
- if (warningLevel > 0)
- INFO1("%s\n", PreserveIndexTxt(type, xkb, &new));
- }
- if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
- {
- ERROR("Preserve value in a key type is not a modifier mask\n");
- ACTION2("Ignoring preserve[%s] in type %s\n",
- PreserveIndexTxt(type, xkb, &new), TypeTxt(type));
- return False;
- }
- new.preMods = rtrn.uval & 0xff;
- new.preVMods = (rtrn.uval >> 16) & 0xffff;
- if ((new.preMods & (~new.indexMods))
- || (new.preVMods && (~new.indexVMods)))
- {
- if (warningLevel > 0)
- {
- WARN2("Illegal value for preserve[%s] in type %s\n",
- PreserveTxt(type, xkb, &new), TypeTxt(type));
- ACTION1("Converted %s to ", PreserveIndexTxt(type, xkb, &new));
- }
- new.preMods &= new.indexMods;
- new.preVMods &= new.indexVMods;
- if (warningLevel > 0)
- {
- INFO1("%s\n", PreserveIndexTxt(type, xkb, &new));
- }
- }
- return AddPreserve(xkb, type, &new, True, True);
-}
-
-/***====================================================================***/
-
-Bool
-AddLevelName(KeyTypeInfo * type,
- unsigned level, Atom name, Bool clobber, Bool report)
-{
- if ((type->lvlNames == NULL) || (type->szNames <= level))
- {
- type->lvlNames =
- uTypedRecalloc(type->lvlNames, type->szNames, level + 1, Atom);
- if (type->lvlNames == NULL)
- {
- ERROR1("Couldn't allocate level names for type %s\n",
- TypeTxt(type));
- ACTION("Level names lost\n");
- type->szNames = 0;
- return False;
- }
- type->szNames = level + 1;
- }
- else if (type->lvlNames[level] == name)
- {
- if (warningLevel > 9)
- {
- WARN2("Duplicate names for level %d of key type %s\n",
- level + 1, TypeTxt(type));
- ACTION("Ignored\n");
- }
- return True;
- }
- else if (type->lvlNames[level] != None)
- {
- if (warningLevel > 0)
- {
- char *old, *new;
- old = XkbAtomText(type->dpy, type->lvlNames[level], XkbMessage);
- new = XkbAtomText(type->dpy, name, XkbMessage);
- WARN2("Multiple names for level %d of key type %s\n",
- level + 1, TypeTxt(type));
- if (clobber)
- ACTION2("Using %s, ignoring %s\n", new, old);
- else
- ACTION2("Using %s, ignoring %s\n", old, new);
- }
- if (!clobber)
- return True;
- }
- if (level >= type->numLevels)
- type->numLevels = level + 1;
- type->lvlNames[level] = name;
- return True;
-}
-
-static Bool
-SetLevelName(KeyTypeInfo * type, ExprDef * arrayNdx, ExprDef * value)
-{
- ExprResult rtrn;
- unsigned level;
-
- if (arrayNdx == NULL)
- return ReportTypeShouldBeArray(type, "level name");
- if (!ExprResolveInteger(arrayNdx, &rtrn, SimpleLookup, (XPointer) lnames))
- return ReportTypeBadType(type, "level name", "integer");
- if ((rtrn.ival < 1) || (rtrn.ival > XkbMaxShiftLevel + 1))
- {
- ERROR3("Level name %d out of range (1..%d) in key type %s\n",
- rtrn.ival,
- XkbMaxShiftLevel + 1,
- XkbAtomText(type->dpy, type->name, XkbMessage));
- ACTION("Ignoring illegal level name definition\n");
- return False;
- }
- level = rtrn.ival - 1;
- if (!ExprResolveString(value, &rtrn, NULL, NULL))
- {
- ERROR2("Non-string name for level %d in key type %s\n", level + 1,
- XkbAtomText(type->dpy, type->name, XkbMessage));
- ACTION("Ignoring illegal level name definition\n");
- return False;
- }
- return
- AddLevelName(type, level, XkbInternAtom(NULL, rtrn.str, False), True,
- True);
-}
-
-/***====================================================================***/
-
-/**
- * Parses the fields in a type "..." { } description.
- *
- * @param field The field to parse (e.g. modifiers, map, level_name)
- */
-static Bool
-SetKeyTypeField(KeyTypeInfo * type,
- XkbDescPtr xkb,
- char *field,
- ExprDef * arrayNdx, ExprDef * value, KeyTypesInfo * info)
-{
- ExprResult tmp;
-
- if (uStrCaseCmp(field, "modifiers") == 0)
- {
- unsigned mods, vmods;
- if (arrayNdx != NULL)
- {
- WARN("The modifiers field of a key type is not an array\n");
- ACTION("Illegal array subscript ignored\n");
- }
- /* get modifier mask for current type */
- if (!ExprResolveModMask(value, &tmp, LookupVModMask, (XPointer) xkb))
- {
- ERROR("Key type mask field must be a modifier mask\n");
- ACTION("Key type definition ignored\n");
- return False;
- }
- mods = tmp.uval & 0xff; /* core mods */
- vmods = (tmp.uval >> 8) & 0xffff; /* xkb virtual mods */
- if (type->defs.defined & _KT_Mask)
- {
- WARN1("Multiple modifier mask definitions for key type %s\n",
- XkbAtomText(type->dpy, type->name, XkbMessage));
- ACTION1("Using %s, ", TypeMaskTxt(type, xkb));
- INFO1("ignoring %s\n", XkbVModMaskText(type->dpy, xkb, mods,
- vmods, XkbMessage));
- return False;
- }
- type->mask = mods;
- type->vmask = vmods;
- type->defs.defined |= _KT_Mask;
- return True;
- }
- else if (uStrCaseCmp(field, "map") == 0)
- {
- type->defs.defined |= _KT_Map;
- return SetMapEntry(type, xkb, arrayNdx, value);
- }
- else if (uStrCaseCmp(field, "preserve") == 0)
- {
- type->defs.defined |= _KT_Preserve;
- return SetPreserve(type, xkb, arrayNdx, value);
- }
- else if ((uStrCaseCmp(field, "levelname") == 0) ||
- (uStrCaseCmp(field, "level_name") == 0))
- {
- type->defs.defined |= _KT_LevelNames;
- return SetLevelName(type, arrayNdx, value);
- }
- ERROR2("Unknown field %s in key type %s\n", field, TypeTxt(type));
- ACTION("Definition ignored\n");
- return False;
-}
-
-static Bool
-HandleKeyTypeVar(VarDef * stmt, XkbDescPtr xkb, KeyTypesInfo * info)
-{
- ExprResult elem, field;
- ExprDef *arrayNdx;
-
- if (!ExprResolveLhs(stmt->name, &elem, &field, &arrayNdx))
- return False; /* internal error, already reported */
- if (elem.str && (uStrCaseCmp(elem.str, "type") == 0))
- return SetKeyTypeField(&info->dflt, xkb, field.str, arrayNdx,
- stmt->value, info);
- if (elem.str != NULL)
- {
- ERROR1("Default for unknown element %s\n", uStringText(elem.str));
- ACTION1("Value for field %s ignored\n", uStringText(field.str));
- }
- else if (field.str != NULL)
- {
- ERROR1("Default defined for unknown field %s\n",
- uStringText(field.str));
- ACTION("Ignored\n");
- }
- return False;
-}
-
-static int
-HandleKeyTypeBody(VarDef * def,
- XkbDescPtr xkb, KeyTypeInfo * type, KeyTypesInfo * info)
-{
- int ok = 1;
- ExprResult tmp, field;
- ExprDef *arrayNdx;
-
- for (; def != NULL; def = (VarDef *) def->common.next)
- {
- if ((def->name) && (def->name->type == ExprFieldRef))
- {
- ok = HandleKeyTypeVar(def, xkb, info);
- continue;
- }
- ok = ExprResolveLhs(def->name, &tmp, &field, &arrayNdx);
- if (ok)
- ok = SetKeyTypeField(type, xkb, field.str, arrayNdx, def->value,
- info);
- }
- return ok;
-}
-
-/**
- * Process a type "XYZ" { } specification in the xkb_types section.
- *
- */
-static int
-HandleKeyTypeDef(KeyTypeDef * def,
- XkbDescPtr xkb, unsigned merge, KeyTypesInfo * info)
-{
- register int i;
- KeyTypeInfo type;
-
- if (def->merge != MergeDefault)
- merge = def->merge;
-
- type.defs.defined = 0;
- type.defs.fileID = info->fileID;
- type.defs.merge = merge;
- type.defs.next = NULL;
- type.dpy = info->dpy;
- type.name = def->name;
- type.mask = info->dflt.mask;
- type.vmask = info->dflt.vmask;
- type.groupInfo = info->dflt.groupInfo;
- type.numLevels = 1;
- type.nEntries = type.szEntries = 0;
- type.entries = NULL;
- type.szNames = 0;
- type.lvlNames = NULL;
- type.preserve = NULL;
-
- /* Parse the actual content. */
- if (!HandleKeyTypeBody(def->body, xkb, &type, info))
- {
- info->errorCount++;
- return False;
- }
-
- /* now copy any appropriate map, preserve or level names from the */
- /* default type */
- for (i = 0; i < info->dflt.nEntries; i++)
- {
- XkbKTMapEntryPtr dflt;
- dflt = &info->dflt.entries[i];
- if (((dflt->mods.real_mods & type.mask) == dflt->mods.real_mods) &&
- ((dflt->mods.vmods & type.vmask) == dflt->mods.vmods))
- {
- AddMapEntry(xkb, &type, dflt, False, False);
- }
- }
- if (info->dflt.preserve)
- {
- PreserveInfo *dflt = info->dflt.preserve;
- while (dflt)
- {
- if (((dflt->indexMods & type.mask) == dflt->indexMods) &&
- ((dflt->indexVMods & type.vmask) == dflt->indexVMods))
- {
- AddPreserve(xkb, &type, dflt, False, False);
- }
- dflt = (PreserveInfo *) dflt->defs.next;
- }
- }
- for (i = 0; i < info->dflt.szNames; i++)
- {
- if ((i < type.numLevels) && (info->dflt.lvlNames[i] != None))
- {
- AddLevelName(&type, i, info->dflt.lvlNames[i], False, False);
- }
- }
- /* Now add the new keytype to the info struct */
- if (!AddKeyType(xkb, info, &type))
- {
- info->errorCount++;
- return False;
- }
- return True;
-}
-
-/**
- * Process an xkb_types section.
- *
- * @param file The parsed xkb_types section.
- * @param merge Merge Strategy (e.g. MergeOverride)
- * @param info Pointer to memory where the outcome will be stored.
- */
-static void
-HandleKeyTypesFile(XkbFile * file,
- XkbDescPtr xkb, unsigned merge, KeyTypesInfo * info)
-{
- ParseCommon *stmt;
-
- info->name = uStringDup(file->name);
- stmt = file->defs;
- while (stmt)
- {
- switch (stmt->stmtType)
- {
- case StmtInclude:
- if (!HandleIncludeKeyTypes((IncludeStmt *) stmt, xkb, info,
- HandleKeyTypesFile))
- info->errorCount++;
- break;
- case StmtKeyTypeDef: /* e.g. type "ONE_LEVEL" */
- if (!HandleKeyTypeDef((KeyTypeDef *) stmt, xkb, merge, info))
- info->errorCount++;
- break;
- case StmtVarDef:
- if (!HandleKeyTypeVar((VarDef *) stmt, xkb, info))
- info->errorCount++;
- break;
- case StmtVModDef: /* virtual_modifiers NumLock, ... */
- if (!HandleVModDef((VModDef *) stmt, merge, &info->vmods))
- info->errorCount++;
- break;
- case StmtKeyAliasDef:
- ERROR("Key type files may not include other declarations\n");
- ACTION("Ignoring definition of key alias\n");
- info->errorCount++;
- break;
- case StmtKeycodeDef:
- ERROR("Key type files may not include other declarations\n");
- ACTION("Ignoring definition of key name\n");
- info->errorCount++;
- break;
- case StmtInterpDef:
- ERROR("Key type files may not include other declarations\n");
- ACTION("Ignoring definition of symbol interpretation\n");
- info->errorCount++;
- break;
- default:
- WSGO1("Unexpected statement type %d in HandleKeyTypesFile\n",
- stmt->stmtType);
- break;
- }
- stmt = stmt->next;
- if (info->errorCount > 10)
- {
-#ifdef NOISY
- ERROR("Too many errors\n");
-#endif
- ACTION1("Abandoning keytypes file \"%s\"\n", file->topName);
- break;
- }
- }
- return;
-}
-
-static Bool
-CopyDefToKeyType(XkbDescPtr xkb, XkbKeyTypePtr type, KeyTypeInfo * def)
-{
- register int i;
- PreserveInfo *pre;
-
- for (pre = def->preserve; pre != NULL;
- pre = (PreserveInfo *) pre->defs.next)
- {
- XkbKTMapEntryPtr match;
- XkbKTMapEntryRec tmp;
- tmp.mods.real_mods = pre->indexMods;
- tmp.mods.vmods = pre->indexVMods;
- tmp.level = 0;
- AddMapEntry(xkb, def, &tmp, False, False);
- match = FindMatchingMapEntry(def, pre->indexMods, pre->indexVMods);
- if (!match)
- {
- WSGO("Couldn't find matching entry for preserve\n");
- ACTION("Aborting\n");
- return False;
- }
- pre->matchingMapIndex = match - def->entries;
- }
- type->mods.real_mods = def->mask;
- type->mods.vmods = def->vmask;
- type->num_levels = def->numLevels;
- type->map_count = def->nEntries;
- type->map = def->entries;
- if (def->preserve)
- {
- type->preserve = uTypedCalloc(type->map_count, XkbModsRec);
- if (!type->preserve)
- {
- WARN("Couldn't allocate preserve array in CopyDefToKeyType\n");
- ACTION1("Preserve setting for type %s lost\n",
- XkbAtomText(def->dpy, def->name, XkbMessage));
- }
- else
- {
- pre = def->preserve;
- for (; pre != NULL; pre = (PreserveInfo *) pre->defs.next)
- {
- int ndx = pre->matchingMapIndex;
- type->preserve[ndx].mask = pre->preMods;
- type->preserve[ndx].real_mods = pre->preMods;
- type->preserve[ndx].vmods = pre->preVMods;
- }
- }
- }
- else
- type->preserve = NULL;
- type->name = (Atom) def->name;
- if (def->szNames > 0)
- {
- type->level_names = uTypedCalloc(def->numLevels, Atom);
-
- /* assert def->szNames<=def->numLevels */
- for (i = 0; i < def->szNames; i++)
- {
- type->level_names[i] = (Atom) def->lvlNames[i];
- }
- }
- else
- {
- type->level_names = NULL;
- }
-
- def->nEntries = def->szEntries = 0;
- def->entries = NULL;
- return XkbComputeEffectiveMap(xkb, type, NULL);
-}
-
-Bool
-CompileKeyTypes(XkbFile * file, XkbFileInfo * result, unsigned merge)
-{
- KeyTypesInfo info;
- XkbDescPtr xkb;
-
- xkb = result->xkb;
- InitKeyTypesInfo(&info, xkb, NULL);
- info.fileID = file->id;
- HandleKeyTypesFile(file, xkb, merge, &info);
-
- if (info.errorCount == 0)
- {
- register int i;
- register KeyTypeInfo *def;
- register XkbKeyTypePtr type, next;
-
- if (info.name != NULL)
- {
- if (XkbAllocNames(xkb, XkbTypesNameMask, 0, 0) == Success)
- xkb->names->types = XkbInternAtom(xkb->dpy, info.name, False);
- else
- {
- WSGO("Couldn't allocate space for types name\n");
- ACTION2("Name \"%s\" (from %s) NOT assigned\n",
- scanFile, info.name);
- }
- }
- i = info.nTypes;
- if ((info.stdPresent & XkbOneLevelMask) == 0)
- i++;
- if ((info.stdPresent & XkbTwoLevelMask) == 0)
- i++;
- if ((info.stdPresent & XkbKeypadMask) == 0)
- i++;
- if ((info.stdPresent & XkbAlphabeticMask) == 0)
- i++;
- if (XkbAllocClientMap(xkb, XkbKeyTypesMask, i) != Success)
- {
- WSGO("Couldn't allocate client map\n");
- ACTION("Exiting\n");
- return False;
- }
- xkb->map->num_types = i;
- if (XkbAllRequiredTypes & (~info.stdPresent))
- {
- unsigned missing, keypadVMod;
-
- missing = XkbAllRequiredTypes & (~info.stdPresent);
- keypadVMod = FindKeypadVMod(xkb);
- if (XkbInitCanonicalKeyTypes(xkb, missing, keypadVMod) != Success)
- {
- WSGO("Couldn't initialize canonical key types\n");
- ACTION("Exiting\n");
- return False;
- }
- if (missing & XkbOneLevelMask)
- xkb->map->types[XkbOneLevelIndex].name = tok_ONE_LEVEL;
- if (missing & XkbTwoLevelMask)
- xkb->map->types[XkbTwoLevelIndex].name = tok_TWO_LEVEL;
- if (missing & XkbAlphabeticMask)
- xkb->map->types[XkbAlphabeticIndex].name = tok_ALPHABETIC;
- if (missing & XkbKeypadMask)
- xkb->map->types[XkbKeypadIndex].name = tok_KEYPAD;
- }
- next = &xkb->map->types[XkbLastRequiredType + 1];
- for (i = 0, def = info.types; i < info.nTypes; i++)
- {
- if (def->name == tok_ONE_LEVEL)
- type = &xkb->map->types[XkbOneLevelIndex];
- else if (def->name == tok_TWO_LEVEL)
- type = &xkb->map->types[XkbTwoLevelIndex];
- else if (def->name == tok_ALPHABETIC)
- type = &xkb->map->types[XkbAlphabeticIndex];
- else if (def->name == tok_KEYPAD)
- type = &xkb->map->types[XkbKeypadIndex];
- else
- type = next++;
- DeleteLevel1MapEntries(def);
- if (!CopyDefToKeyType(xkb, type, def))
- return False;
- def = (KeyTypeInfo *) def->defs.next;
- }
- return True;
- }
- return False;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "tokens.h"
+#include "expr.h"
+#include "vmod.h"
+#include "action.h"
+#include "misc.h"
+
+typedef struct _PreserveInfo
+{
+ CommonInfo defs;
+ short matchingMapIndex;
+ unsigned char indexMods;
+ unsigned char preMods;
+ unsigned short indexVMods;
+ unsigned short preVMods;
+} PreserveInfo;
+
+#define _KT_Name (1<<0)
+#define _KT_Mask (1<<1)
+#define _KT_Map (1<<2)
+#define _KT_Preserve (1<<3)
+#define _KT_LevelNames (1<<4)
+
+typedef struct _KeyTypeInfo
+{
+ CommonInfo defs;
+ Display *dpy;
+ Atom name;
+ int fileID;
+ unsigned mask;
+ unsigned vmask;
+ Bool groupInfo;
+ int numLevels;
+ int nEntries;
+ int szEntries;
+ XkbKTMapEntryPtr entries;
+ PreserveInfo *preserve;
+ int szNames;
+ Atom *lvlNames;
+} KeyTypeInfo;
+
+typedef struct _KeyTypesInfo
+{
+ Display *dpy;
+ char *name;
+ int errorCount;
+ int fileID;
+ unsigned stdPresent;
+ int nTypes;
+ KeyTypeInfo *types;
+ KeyTypeInfo dflt;
+ VModInfo vmods;
+} KeyTypesInfo;
+
+Atom tok_ONE_LEVEL;
+Atom tok_TWO_LEVEL;
+Atom tok_ALPHABETIC;
+Atom tok_KEYPAD;
+
+/***====================================================================***/
+
+#define ReportTypeShouldBeArray(t,f) \
+ ReportShouldBeArray("key type",(f),TypeTxt(t))
+#define ReportTypeBadType(t,f,w) \
+ ReportBadType("key type",(f),TypeTxt(t),(w))
+
+/***====================================================================***/
+
+extern Bool AddMapEntry(XkbDescPtr /* xkb */ ,
+ KeyTypeInfo * /* type */ ,
+ XkbKTMapEntryPtr /* new */ ,
+ Bool /* clobber */ ,
+ Bool /* report */
+ );
+
+extern Bool AddPreserve(XkbDescPtr /* xkb */ ,
+ KeyTypeInfo * /* type */ ,
+ PreserveInfo * /* new */ ,
+ Bool /* clobber */ ,
+ Bool /* report */
+ );
+
+extern Bool AddLevelName(KeyTypeInfo * /* type */ ,
+ unsigned /* level */ ,
+ Atom /* name */ ,
+ Bool /* clobber */ ,
+ Bool /* report */
+ );
+
+#define MapEntryTxt(t,x,e) \
+ XkbVModMaskText((t)->dpy,(x),(e)->mods.real_mods,(e)->mods.vmods,XkbMessage)
+#define PreserveIndexTxt(t,x,p) \
+ XkbVModMaskText((t)->dpy,(x),(p)->indexMods,(p)->indexVMods,XkbMessage)
+#define PreserveTxt(t,x,p) \
+ XkbVModMaskText((t)->dpy,(x),(p)->preMods,(p)->preVMods,XkbMessage)
+#define TypeTxt(t) XkbAtomText((t)->dpy,(t)->name,XkbMessage)
+#define TypeMaskTxt(t,x) \
+ XkbVModMaskText((t)->dpy,(x),(t)->mask,(t)->vmask,XkbMessage)
+
+/***====================================================================***/
+
+static void
+InitKeyTypesInfo(KeyTypesInfo * info, XkbDescPtr xkb, KeyTypesInfo * from)
+{
+ tok_ONE_LEVEL = XkbInternAtom(NULL, "ONE_LEVEL", False);
+ tok_TWO_LEVEL = XkbInternAtom(NULL, "TWO_LEVEL", False);
+ tok_ALPHABETIC = XkbInternAtom(NULL, "ALPHABETIC", False);
+ tok_KEYPAD = XkbInternAtom(NULL, "KEYPAD", False);
+ info->dpy = NULL;
+ info->name = uStringDup("default");
+ info->errorCount = 0;
+ info->stdPresent = 0;
+ info->nTypes = 0;
+ info->types = NULL;
+ info->dflt.defs.defined = 0;
+ info->dflt.defs.fileID = 0;
+ info->dflt.defs.merge = MergeOverride;
+ info->dflt.defs.next = NULL;
+ info->dflt.name = None;
+ info->dflt.mask = 0;
+ info->dflt.vmask = 0;
+ info->dflt.groupInfo = False;
+ info->dflt.numLevels = 1;
+ info->dflt.nEntries = info->dflt.szEntries = 0;
+ info->dflt.entries = NULL;
+ info->dflt.szNames = 0;
+ info->dflt.lvlNames = NULL;
+ info->dflt.preserve = NULL;
+ InitVModInfo(&info->vmods, xkb);
+ if (from != NULL)
+ {
+ info->dpy = from->dpy;
+ info->dflt = from->dflt;
+ if (from->dflt.entries)
+ {
+ info->dflt.entries = uTypedCalloc(from->dflt.szEntries,
+ XkbKTMapEntryRec);
+ if (info->dflt.entries)
+ {
+ unsigned sz = from->dflt.nEntries * sizeof(XkbKTMapEntryRec);
+ memcpy(info->dflt.entries, from->dflt.entries, sz);
+ }
+ }
+ if (from->dflt.lvlNames)
+ {
+ info->dflt.lvlNames = uTypedCalloc(from->dflt.szNames, Atom);
+ if (info->dflt.lvlNames)
+ {
+ register unsigned sz = from->dflt.szNames * sizeof(Atom);
+ memcpy(info->dflt.lvlNames, from->dflt.lvlNames, sz);
+ }
+ }
+ if (from->dflt.preserve)
+ {
+ PreserveInfo *old, *new, *last;
+ last = NULL;
+ old = from->dflt.preserve;
+ for (; old; old = (PreserveInfo *) old->defs.next)
+ {
+ new = uTypedAlloc(PreserveInfo);
+ if (!new)
+ return;
+ *new = *old;
+ new->defs.next = NULL;
+ if (last)
+ last->defs.next = (CommonInfo *) new;
+ else
+ info->dflt.preserve = new;
+ last = new;
+ }
+ }
+ }
+ return;
+}
+
+static void
+FreeKeyTypeInfo(KeyTypeInfo * type)
+{
+ if (type->entries != NULL)
+ {
+ uFree(type->entries);
+ type->entries = NULL;
+ }
+ if (type->lvlNames != NULL)
+ {
+ uFree(type->lvlNames);
+ type->lvlNames = NULL;
+ }
+ if (type->preserve != NULL)
+ {
+ ClearCommonInfo(&type->preserve->defs);
+ type->preserve = NULL;
+ }
+ return;
+}
+
+static void
+FreeKeyTypesInfo(KeyTypesInfo * info)
+{
+ info->dpy = NULL;
+ if (info->name)
+ uFree(info->name);
+ info->name = NULL;
+ if (info->types)
+ {
+ register KeyTypeInfo *type;
+ for (type = info->types; type; type = (KeyTypeInfo *) type->defs.next)
+ {
+ FreeKeyTypeInfo(type);
+ }
+ info->types = (KeyTypeInfo *) ClearCommonInfo(&info->types->defs);
+ }
+ FreeKeyTypeInfo(&info->dflt);
+ return;
+}
+
+static KeyTypeInfo *
+NextKeyType(KeyTypesInfo * info)
+{
+ KeyTypeInfo *type;
+
+ type = uTypedAlloc(KeyTypeInfo);
+ if (type != NULL)
+ {
+ bzero(type, sizeof(KeyTypeInfo));
+ type->defs.fileID = info->fileID;
+ type->dpy = info->dpy;
+ info->types = (KeyTypeInfo *) AddCommonInfo(&info->types->defs,
+ (CommonInfo *) type);
+ info->nTypes++;
+ }
+ return type;
+}
+
+static KeyTypeInfo *
+FindMatchingKeyType(KeyTypesInfo * info, KeyTypeInfo * new)
+{
+ KeyTypeInfo *old;
+
+ for (old = info->types; old; old = (KeyTypeInfo *) old->defs.next)
+ {
+ if (old->name == new->name)
+ return old;
+ }
+ return NULL;
+}
+
+static Bool
+ReportTypeBadWidth(const char *type, int has, int needs)
+{
+ ERROR3("Key type \"%s\" has %d levels, must have %d\n", type, has, needs);
+ ACTION("Illegal type definition ignored\n");
+ return False;
+}
+
+static Bool
+AddKeyType(XkbDescPtr xkb, KeyTypesInfo * info, KeyTypeInfo * new)
+{
+ KeyTypeInfo *old;
+
+ if (new->name == tok_ONE_LEVEL)
+ {
+ if (new->numLevels > 1)
+ return ReportTypeBadWidth("ONE_LEVEL", new->numLevels, 1);
+ info->stdPresent |= XkbOneLevelMask;
+ }
+ else if (new->name == tok_TWO_LEVEL)
+ {
+ if (new->numLevels > 2)
+ return ReportTypeBadWidth("TWO_LEVEL", new->numLevels, 2);
+ else if (new->numLevels < 2)
+ new->numLevels = 2;
+ info->stdPresent |= XkbTwoLevelMask;
+ }
+ else if (new->name == tok_ALPHABETIC)
+ {
+ if (new->numLevels > 2)
+ return ReportTypeBadWidth("ALPHABETIC", new->numLevels, 2);
+ else if (new->numLevels < 2)
+ new->numLevels = 2;
+ info->stdPresent |= XkbAlphabeticMask;
+ }
+ else if (new->name == tok_KEYPAD)
+ {
+ if (new->numLevels > 2)
+ return ReportTypeBadWidth("KEYPAD", new->numLevels, 2);
+ else if (new->numLevels < 2)
+ new->numLevels = 2;
+ info->stdPresent |= XkbKeypadMask;
+ }
+
+ old = FindMatchingKeyType(info, new);
+ if (old != NULL)
+ {
+ Bool report;
+ if ((new->defs.merge == MergeReplace)
+ || (new->defs.merge == MergeOverride))
+ {
+ KeyTypeInfo *next = (KeyTypeInfo *) old->defs.next;
+ if (((old->defs.fileID == new->defs.fileID)
+ && (warningLevel > 0)) || (warningLevel > 9))
+ {
+ WARN1("Multiple definitions of the %s key type\n",
+ XkbAtomGetString(NULL, new->name));
+ ACTION("Earlier definition ignored\n");
+ }
+ FreeKeyTypeInfo(old);
+ *old = *new;
+ new->szEntries = new->nEntries = 0;
+ new->entries = NULL;
+ new->preserve = NULL;
+ new->lvlNames = NULL;
+ old->defs.next = &next->defs;
+ return True;
+ }
+ report = (old->defs.fileID == new->defs.fileID) && (warningLevel > 0);
+ if (report)
+ {
+ WARN1("Multiple definitions of the %s key type\n",
+ XkbAtomGetString(NULL, new->name));
+ ACTION("Later definition ignored\n");
+ }
+ FreeKeyTypeInfo(new);
+ return True;
+ }
+ old = NextKeyType(info);
+ if (old == NULL)
+ return False;
+ *old = *new;
+ old->defs.next = NULL;
+ new->nEntries = new->szEntries = 0;
+ new->entries = NULL;
+ new->szNames = 0;
+ new->lvlNames = NULL;
+ new->preserve = NULL;
+ return True;
+}
+
+/***====================================================================***/
+
+static void
+MergeIncludedKeyTypes(KeyTypesInfo * into,
+ KeyTypesInfo * from, unsigned merge, XkbDescPtr xkb)
+{
+ KeyTypeInfo *type;
+
+ if (from->errorCount > 0)
+ {
+ into->errorCount += from->errorCount;
+ return;
+ }
+ if (into->name == NULL)
+ {
+ into->name = from->name;
+ from->name = NULL;
+ }
+ for (type = from->types; type; type = (KeyTypeInfo *) type->defs.next)
+ {
+ if (merge != MergeDefault)
+ type->defs.merge = merge;
+ if (!AddKeyType(xkb, into, type))
+ into->errorCount++;
+ }
+ into->stdPresent |= from->stdPresent;
+ return;
+}
+
+typedef void (*FileHandler) (XkbFile * /* file */ ,
+ XkbDescPtr /* xkb */ ,
+ unsigned /* merge */ ,
+ KeyTypesInfo * /* included */
+ );
+
+static Bool
+HandleIncludeKeyTypes(IncludeStmt * stmt,
+ XkbDescPtr xkb, KeyTypesInfo * info, FileHandler hndlr)
+{
+ unsigned newMerge;
+ XkbFile *rtrn;
+ KeyTypesInfo included;
+ Bool haveSelf;
+
+ haveSelf = False;
+ if ((stmt->file == NULL) && (stmt->map == NULL))
+ {
+ haveSelf = True;
+ included = *info;
+ bzero(info, sizeof(KeyTypesInfo));
+ }
+ else if (ProcessIncludeFile(stmt, XkmTypesIndex, &rtrn, &newMerge))
+ {
+ InitKeyTypesInfo(&included, xkb, info);
+ included.fileID = included.dflt.defs.fileID = rtrn->id;
+ included.dflt.defs.merge = newMerge;
+
+ (*hndlr) (rtrn, xkb, newMerge, &included);
+ if (stmt->stmt != NULL)
+ {
+ if (included.name != NULL)
+ uFree(included.name);
+ included.name = stmt->stmt;
+ stmt->stmt = NULL;
+ }
+ }
+ else
+ {
+ info->errorCount += 10;
+ return False;
+ }
+ if ((stmt->next != NULL) && (included.errorCount < 1))
+ {
+ IncludeStmt *next;
+ unsigned op;
+ KeyTypesInfo next_incl;
+
+ for (next = stmt->next; next != NULL; next = next->next)
+ {
+ if ((next->file == NULL) && (next->map == NULL))
+ {
+ haveSelf = True;
+ MergeIncludedKeyTypes(&included, info, next->merge, xkb);
+ FreeKeyTypesInfo(info);
+ }
+ else if (ProcessIncludeFile(next, XkmTypesIndex, &rtrn, &op))
+ {
+ InitKeyTypesInfo(&next_incl, xkb, &included);
+ next_incl.fileID = next_incl.dflt.defs.fileID = rtrn->id;
+ next_incl.dflt.defs.merge = op;
+ (*hndlr) (rtrn, xkb, op, &next_incl);
+ MergeIncludedKeyTypes(&included, &next_incl, op, xkb);
+ FreeKeyTypesInfo(&next_incl);
+ }
+ else
+ {
+ info->errorCount += 10;
+ return False;
+ }
+ }
+ }
+ if (haveSelf)
+ *info = included;
+ else
+ {
+ MergeIncludedKeyTypes(info, &included, newMerge, xkb);
+ FreeKeyTypesInfo(&included);
+ }
+ return (info->errorCount == 0);
+}
+
+/***====================================================================***/
+
+static XkbKTMapEntryPtr
+FindMatchingMapEntry(KeyTypeInfo * type, unsigned mask, unsigned vmask)
+{
+ register int i;
+ XkbKTMapEntryPtr entry;
+
+ for (i = 0, entry = type->entries; i < type->nEntries; i++, entry++)
+ {
+ if ((entry->mods.real_mods == mask) && (entry->mods.vmods == vmask))
+ return entry;
+ }
+ return NULL;
+}
+
+static void
+DeleteLevel1MapEntries(KeyTypeInfo * type)
+{
+ register int i, n;
+
+ for (i = 0; i < type->nEntries; i++)
+ {
+ if (type->entries[i].level == 0)
+ {
+ for (n = i; n < type->nEntries - 1; n++)
+ {
+ type->entries[n] = type->entries[n + 1];
+ }
+ type->nEntries--;
+ }
+ }
+ return;
+}
+
+/**
+ * Return a pointer to the next free XkbKTMapEntry, reallocating space if
+ * necessary.
+ */
+static XkbKTMapEntryPtr
+NextMapEntry(KeyTypeInfo * type)
+{
+ if (type->entries == NULL)
+ {
+ type->entries = uTypedCalloc(2, XkbKTMapEntryRec);
+ if (type->entries == NULL)
+ {
+ ERROR1("Couldn't allocate map entries for %s\n", TypeTxt(type));
+ ACTION("Map entries lost\n");
+ return NULL;
+ }
+ type->szEntries = 2;
+ type->nEntries = 0;
+ }
+ else if (type->nEntries >= type->szEntries)
+ {
+ type->szEntries *= 2;
+ type->entries = uTypedRecalloc(type->entries,
+ type->nEntries, type->szEntries,
+ XkbKTMapEntryRec);
+ if (type->entries == NULL)
+ {
+ ERROR1("Couldn't reallocate map entries for %s\n", TypeTxt(type));
+ ACTION("Map entries lost\n");
+ return NULL;
+ }
+ }
+ return &type->entries[type->nEntries++];
+}
+
+Bool
+AddPreserve(XkbDescPtr xkb,
+ KeyTypeInfo * type, PreserveInfo * new, Bool clobber, Bool report)
+{
+ PreserveInfo *old;
+
+ old = type->preserve;
+ while (old != NULL)
+ {
+ if ((old->indexMods != new->indexMods) ||
+ (old->indexVMods != new->indexVMods))
+ {
+ old = (PreserveInfo *) old->defs.next;
+ continue;
+ }
+ if ((old->preMods == new->preMods)
+ && (old->preVMods == new->preVMods))
+ {
+ if (warningLevel > 9)
+ {
+ WARN2("Identical definitions for preserve[%s] in %s\n",
+ PreserveIndexTxt(type, xkb, old), TypeTxt(type));
+ ACTION("Ignored\n");
+ }
+ return True;
+ }
+ if (report && (warningLevel > 0))
+ {
+ char *str;
+ WARN2("Multiple definitions for preserve[%s] in %s\n",
+ PreserveIndexTxt(type, xkb, old), TypeTxt(type));
+
+ if (clobber)
+ str = PreserveTxt(type, xkb, new);
+ else
+ str = PreserveTxt(type, xkb, old);
+ ACTION1("Using %s, ", str);
+ if (clobber)
+ str = PreserveTxt(type, xkb, old);
+ else
+ str = PreserveTxt(type, xkb, new);
+ INFO1("ignoring %s\n", str);
+ }
+ if (clobber)
+ {
+ old->preMods = new->preMods;
+ old->preVMods = new->preVMods;
+ }
+ return True;
+ }
+ old = uTypedAlloc(PreserveInfo);
+ if (!old)
+ {
+ WSGO1("Couldn't allocate preserve in %s\n", TypeTxt(type));
+ ACTION1("Preserve[%s] lost\n", PreserveIndexTxt(type, xkb, old));
+ return False;
+ }
+ *old = *new;
+ old->matchingMapIndex = -1;
+ type->preserve =
+ (PreserveInfo *) AddCommonInfo(&type->preserve->defs, &old->defs);
+ return True;
+}
+
+/**
+ * Add a new KTMapEntry to the given key type. If an entry with the same mods
+ * already exists, the level is updated (if clobber is TRUE). Otherwise, a new
+ * entry is created.
+ *
+ * @param clobber Overwrite existing entry.
+ * @param report True if a warning is to be printed on.
+ */
+Bool
+AddMapEntry(XkbDescPtr xkb,
+ KeyTypeInfo * type,
+ XkbKTMapEntryPtr new, Bool clobber, Bool report)
+{
+ XkbKTMapEntryPtr old;
+
+ if ((old =
+ FindMatchingMapEntry(type, new->mods.real_mods, new->mods.vmods)))
+ {
+ if (report && (old->level != new->level))
+ {
+ unsigned use, ignore;
+ if (clobber)
+ {
+ use = new->level + 1;
+ ignore = old->level + 1;
+ }
+ else
+ {
+ use = old->level + 1;
+ ignore = new->level + 1;
+ }
+ WARN2("Multiple map entries for %s in %s\n",
+ MapEntryTxt(type, xkb, new), TypeTxt(type));
+ ACTION2("Using %d, ignoring %d\n", use, ignore);
+ }
+ else if (warningLevel > 9)
+ {
+ WARN3("Multiple occurences of map[%s]= %d in %s\n",
+ MapEntryTxt(type, xkb, new), new->level + 1, TypeTxt(type));
+ ACTION("Ignored\n");
+ return True;
+ }
+ if (clobber)
+ old->level = new->level;
+ return True;
+ }
+ if ((old = NextMapEntry(type)) == NULL)
+ return False; /* allocation failure, already reported */
+ if (new->level >= type->numLevels)
+ type->numLevels = new->level + 1;
+ if (new->mods.vmods == 0)
+ old->active = True;
+ else
+ old->active = False;
+ old->mods.mask = new->mods.real_mods;
+ old->mods.real_mods = new->mods.real_mods;
+ old->mods.vmods = new->mods.vmods;
+ old->level = new->level;
+ return True;
+}
+
+static LookupEntry lnames[] = {
+ {"level1", 1},
+ {"level2", 2},
+ {"level3", 3},
+ {"level4", 4},
+ {"level5", 5},
+ {"level6", 6},
+ {"level7", 7},
+ {"level8", 8},
+ {NULL, 0}
+};
+
+static Bool
+SetMapEntry(KeyTypeInfo * type,
+ XkbDescPtr xkb, ExprDef * arrayNdx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbKTMapEntryRec entry;
+
+ if (arrayNdx == NULL)
+ return ReportTypeShouldBeArray(type, "map entry");
+ if (!ExprResolveModMask(arrayNdx, &rtrn, LookupVModMask, (XPointer) xkb))
+ return ReportTypeBadType(type, "map entry", "modifier mask");
+ entry.mods.real_mods = rtrn.uval & 0xff; /* modifiers < 512 */
+ entry.mods.vmods = (rtrn.uval >> 8) & 0xffff; /* modifiers > 512 */
+ if ((entry.mods.real_mods & (~type->mask)) ||
+ ((entry.mods.vmods & (~type->vmask)) != 0))
+ {
+ if (warningLevel > 0)
+ {
+ WARN1("Map entry for unused modifiers in %s\n", TypeTxt(type));
+ ACTION1("Using %s instead of ",
+ XkbVModMaskText(type->dpy, xkb,
+ entry.mods.real_mods & type->mask,
+ entry.mods.vmods & type->vmask,
+ XkbMessage));
+ INFO1("%s\n", MapEntryTxt(type, xkb, &entry));
+ }
+ entry.mods.real_mods &= type->mask;
+ entry.mods.vmods &= type->vmask;
+ }
+ if (!ExprResolveInteger(value, &rtrn, SimpleLookup, (XPointer) lnames))
+ {
+ ERROR("Level specifications in a key type must be integer\n");
+ ACTION("Ignoring malformed level specification\n");
+ return False;
+ }
+ if ((rtrn.ival < 1) || (rtrn.ival > XkbMaxShiftLevel + 1))
+ {
+ ERROR3("Shift level %d out of range (1..%d) in key type %s\n",
+ XkbMaxShiftLevel + 1, rtrn.ival, TypeTxt(type));
+ ACTION1("Ignoring illegal definition of map[%s]\n",
+ MapEntryTxt(type, xkb, &entry));
+ return False;
+ }
+ entry.level = rtrn.ival - 1;
+ return AddMapEntry(xkb, type, &entry, True, True);
+}
+
+static Bool
+SetPreserve(KeyTypeInfo * type,
+ XkbDescPtr xkb, ExprDef * arrayNdx, ExprDef * value)
+{
+ ExprResult rtrn;
+ PreserveInfo new;
+
+ if (arrayNdx == NULL)
+ return ReportTypeShouldBeArray(type, "preserve entry");
+ if (!ExprResolveModMask(arrayNdx, &rtrn, LookupVModMask, (XPointer) xkb))
+ return ReportTypeBadType(type, "preserve entry", "modifier mask");
+ new.defs = type->defs;
+ new.defs.next = NULL;
+ new.indexMods = rtrn.uval & 0xff;
+ new.indexVMods = (rtrn.uval >> 8) & 0xffff;
+ if ((new.indexMods & (~type->mask)) || (new.indexVMods & (~type->vmask)))
+ {
+ if (warningLevel > 0)
+ {
+ WARN1("Preserve for modifiers not used by the %s type\n",
+ TypeTxt(type));
+ ACTION1("Index %s converted to ",
+ PreserveIndexTxt(type, xkb, &new));
+ }
+ new.indexMods &= type->mask;
+ new.indexVMods &= type->vmask;
+ if (warningLevel > 0)
+ INFO1("%s\n", PreserveIndexTxt(type, xkb, &new));
+ }
+ if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
+ {
+ ERROR("Preserve value in a key type is not a modifier mask\n");
+ ACTION2("Ignoring preserve[%s] in type %s\n",
+ PreserveIndexTxt(type, xkb, &new), TypeTxt(type));
+ return False;
+ }
+ new.preMods = rtrn.uval & 0xff;
+ new.preVMods = (rtrn.uval >> 16) & 0xffff;
+ if ((new.preMods & (~new.indexMods))
+ || (new.preVMods && (~new.indexVMods)))
+ {
+ if (warningLevel > 0)
+ {
+ WARN2("Illegal value for preserve[%s] in type %s\n",
+ PreserveTxt(type, xkb, &new), TypeTxt(type));
+ ACTION1("Converted %s to ", PreserveIndexTxt(type, xkb, &new));
+ }
+ new.preMods &= new.indexMods;
+ new.preVMods &= new.indexVMods;
+ if (warningLevel > 0)
+ {
+ INFO1("%s\n", PreserveIndexTxt(type, xkb, &new));
+ }
+ }
+ return AddPreserve(xkb, type, &new, True, True);
+}
+
+/***====================================================================***/
+
+Bool
+AddLevelName(KeyTypeInfo * type,
+ unsigned level, Atom name, Bool clobber, Bool report)
+{
+ if ((type->lvlNames == NULL) || (type->szNames <= level))
+ {
+ type->lvlNames =
+ uTypedRecalloc(type->lvlNames, type->szNames, level + 1, Atom);
+ if (type->lvlNames == NULL)
+ {
+ ERROR1("Couldn't allocate level names for type %s\n",
+ TypeTxt(type));
+ ACTION("Level names lost\n");
+ type->szNames = 0;
+ return False;
+ }
+ type->szNames = level + 1;
+ }
+ else if (type->lvlNames[level] == name)
+ {
+ if (warningLevel > 9)
+ {
+ WARN2("Duplicate names for level %d of key type %s\n",
+ level + 1, TypeTxt(type));
+ ACTION("Ignored\n");
+ }
+ return True;
+ }
+ else if (type->lvlNames[level] != None)
+ {
+ if (warningLevel > 0)
+ {
+ char *old, *new;
+ old = XkbAtomText(type->dpy, type->lvlNames[level], XkbMessage);
+ new = XkbAtomText(type->dpy, name, XkbMessage);
+ WARN2("Multiple names for level %d of key type %s\n",
+ level + 1, TypeTxt(type));
+ if (clobber)
+ ACTION2("Using %s, ignoring %s\n", new, old);
+ else
+ ACTION2("Using %s, ignoring %s\n", old, new);
+ }
+ if (!clobber)
+ return True;
+ }
+ if (level >= type->numLevels)
+ type->numLevels = level + 1;
+ type->lvlNames[level] = name;
+ return True;
+}
+
+static Bool
+SetLevelName(KeyTypeInfo * type, ExprDef * arrayNdx, ExprDef * value)
+{
+ ExprResult rtrn;
+ unsigned level;
+
+ if (arrayNdx == NULL)
+ return ReportTypeShouldBeArray(type, "level name");
+ if (!ExprResolveInteger(arrayNdx, &rtrn, SimpleLookup, (XPointer) lnames))
+ return ReportTypeBadType(type, "level name", "integer");
+ if ((rtrn.ival < 1) || (rtrn.ival > XkbMaxShiftLevel + 1))
+ {
+ ERROR3("Level name %d out of range (1..%d) in key type %s\n",
+ rtrn.ival,
+ XkbMaxShiftLevel + 1,
+ XkbAtomText(type->dpy, type->name, XkbMessage));
+ ACTION("Ignoring illegal level name definition\n");
+ return False;
+ }
+ level = rtrn.ival - 1;
+ if (!ExprResolveString(value, &rtrn, NULL, NULL))
+ {
+ ERROR2("Non-string name for level %d in key type %s\n", level + 1,
+ XkbAtomText(type->dpy, type->name, XkbMessage));
+ ACTION("Ignoring illegal level name definition\n");
+ return False;
+ }
+ return
+ AddLevelName(type, level, XkbInternAtom(NULL, rtrn.str, False), True,
+ True);
+}
+
+/***====================================================================***/
+
+/**
+ * Parses the fields in a type "..." { } description.
+ *
+ * @param field The field to parse (e.g. modifiers, map, level_name)
+ */
+static Bool
+SetKeyTypeField(KeyTypeInfo * type,
+ XkbDescPtr xkb,
+ char *field,
+ ExprDef * arrayNdx, ExprDef * value, KeyTypesInfo * info)
+{
+ ExprResult tmp;
+
+ if (uStrCaseCmp(field, "modifiers") == 0)
+ {
+ unsigned mods, vmods;
+ if (arrayNdx != NULL)
+ {
+ WARN("The modifiers field of a key type is not an array\n");
+ ACTION("Illegal array subscript ignored\n");
+ }
+ /* get modifier mask for current type */
+ if (!ExprResolveModMask(value, &tmp, LookupVModMask, (XPointer) xkb))
+ {
+ ERROR("Key type mask field must be a modifier mask\n");
+ ACTION("Key type definition ignored\n");
+ return False;
+ }
+ mods = tmp.uval & 0xff; /* core mods */
+ vmods = (tmp.uval >> 8) & 0xffff; /* xkb virtual mods */
+ if (type->defs.defined & _KT_Mask)
+ {
+ WARN1("Multiple modifier mask definitions for key type %s\n",
+ XkbAtomText(type->dpy, type->name, XkbMessage));
+ ACTION1("Using %s, ", TypeMaskTxt(type, xkb));
+ INFO1("ignoring %s\n", XkbVModMaskText(type->dpy, xkb, mods,
+ vmods, XkbMessage));
+ return False;
+ }
+ type->mask = mods;
+ type->vmask = vmods;
+ type->defs.defined |= _KT_Mask;
+ return True;
+ }
+ else if (uStrCaseCmp(field, "map") == 0)
+ {
+ type->defs.defined |= _KT_Map;
+ return SetMapEntry(type, xkb, arrayNdx, value);
+ }
+ else if (uStrCaseCmp(field, "preserve") == 0)
+ {
+ type->defs.defined |= _KT_Preserve;
+ return SetPreserve(type, xkb, arrayNdx, value);
+ }
+ else if ((uStrCaseCmp(field, "levelname") == 0) ||
+ (uStrCaseCmp(field, "level_name") == 0))
+ {
+ type->defs.defined |= _KT_LevelNames;
+ return SetLevelName(type, arrayNdx, value);
+ }
+ ERROR2("Unknown field %s in key type %s\n", field, TypeTxt(type));
+ ACTION("Definition ignored\n");
+ return False;
+}
+
+static Bool
+HandleKeyTypeVar(VarDef * stmt, XkbDescPtr xkb, KeyTypesInfo * info)
+{
+ ExprResult elem, field;
+ ExprDef *arrayNdx;
+
+ if (!ExprResolveLhs(stmt->name, &elem, &field, &arrayNdx))
+ return False; /* internal error, already reported */
+ if (elem.str && (uStrCaseCmp(elem.str, "type") == 0))
+ return SetKeyTypeField(&info->dflt, xkb, field.str, arrayNdx,
+ stmt->value, info);
+ if (elem.str != NULL)
+ {
+ ERROR1("Default for unknown element %s\n", uStringText(elem.str));
+ ACTION1("Value for field %s ignored\n", uStringText(field.str));
+ }
+ else if (field.str != NULL)
+ {
+ ERROR1("Default defined for unknown field %s\n",
+ uStringText(field.str));
+ ACTION("Ignored\n");
+ }
+ return False;
+}
+
+static int
+HandleKeyTypeBody(VarDef * def,
+ XkbDescPtr xkb, KeyTypeInfo * type, KeyTypesInfo * info)
+{
+ int ok = 1;
+ ExprResult tmp, field;
+ ExprDef *arrayNdx;
+
+ for (; def != NULL; def = (VarDef *) def->common.next)
+ {
+ if ((def->name) && (def->name->type == ExprFieldRef))
+ {
+ ok = HandleKeyTypeVar(def, xkb, info);
+ continue;
+ }
+ ok = ExprResolveLhs(def->name, &tmp, &field, &arrayNdx);
+ if (ok)
+ ok = SetKeyTypeField(type, xkb, field.str, arrayNdx, def->value,
+ info);
+ }
+ return ok;
+}
+
+/**
+ * Process a type "XYZ" { } specification in the xkb_types section.
+ *
+ */
+static int
+HandleKeyTypeDef(KeyTypeDef * def,
+ XkbDescPtr xkb, unsigned merge, KeyTypesInfo * info)
+{
+ register int i;
+ KeyTypeInfo type;
+
+ if (def->merge != MergeDefault)
+ merge = def->merge;
+
+ type.defs.defined = 0;
+ type.defs.fileID = info->fileID;
+ type.defs.merge = merge;
+ type.defs.next = NULL;
+ type.dpy = info->dpy;
+ type.name = def->name;
+ type.mask = info->dflt.mask;
+ type.vmask = info->dflt.vmask;
+ type.groupInfo = info->dflt.groupInfo;
+ type.numLevels = 1;
+ type.nEntries = type.szEntries = 0;
+ type.entries = NULL;
+ type.szNames = 0;
+ type.lvlNames = NULL;
+ type.preserve = NULL;
+
+ /* Parse the actual content. */
+ if (!HandleKeyTypeBody(def->body, xkb, &type, info))
+ {
+ info->errorCount++;
+ return False;
+ }
+
+ /* now copy any appropriate map, preserve or level names from the */
+ /* default type */
+ for (i = 0; i < info->dflt.nEntries; i++)
+ {
+ XkbKTMapEntryPtr dflt;
+ dflt = &info->dflt.entries[i];
+ if (((dflt->mods.real_mods & type.mask) == dflt->mods.real_mods) &&
+ ((dflt->mods.vmods & type.vmask) == dflt->mods.vmods))
+ {
+ AddMapEntry(xkb, &type, dflt, False, False);
+ }
+ }
+ if (info->dflt.preserve)
+ {
+ PreserveInfo *dflt = info->dflt.preserve;
+ while (dflt)
+ {
+ if (((dflt->indexMods & type.mask) == dflt->indexMods) &&
+ ((dflt->indexVMods & type.vmask) == dflt->indexVMods))
+ {
+ AddPreserve(xkb, &type, dflt, False, False);
+ }
+ dflt = (PreserveInfo *) dflt->defs.next;
+ }
+ }
+ for (i = 0; i < info->dflt.szNames; i++)
+ {
+ if ((i < type.numLevels) && (info->dflt.lvlNames[i] != None))
+ {
+ AddLevelName(&type, i, info->dflt.lvlNames[i], False, False);
+ }
+ }
+ /* Now add the new keytype to the info struct */
+ if (!AddKeyType(xkb, info, &type))
+ {
+ info->errorCount++;
+ return False;
+ }
+ return True;
+}
+
+/**
+ * Process an xkb_types section.
+ *
+ * @param file The parsed xkb_types section.
+ * @param merge Merge Strategy (e.g. MergeOverride)
+ * @param info Pointer to memory where the outcome will be stored.
+ */
+static void
+HandleKeyTypesFile(XkbFile * file,
+ XkbDescPtr xkb, unsigned merge, KeyTypesInfo * info)
+{
+ ParseCommon *stmt;
+
+ info->name = uStringDup(file->name);
+ stmt = file->defs;
+ while (stmt)
+ {
+ switch (stmt->stmtType)
+ {
+ case StmtInclude:
+ if (!HandleIncludeKeyTypes((IncludeStmt *) stmt, xkb, info,
+ HandleKeyTypesFile))
+ info->errorCount++;
+ break;
+ case StmtKeyTypeDef: /* e.g. type "ONE_LEVEL" */
+ if (!HandleKeyTypeDef((KeyTypeDef *) stmt, xkb, merge, info))
+ info->errorCount++;
+ break;
+ case StmtVarDef:
+ if (!HandleKeyTypeVar((VarDef *) stmt, xkb, info))
+ info->errorCount++;
+ break;
+ case StmtVModDef: /* virtual_modifiers NumLock, ... */
+ if (!HandleVModDef((VModDef *) stmt, merge, &info->vmods))
+ info->errorCount++;
+ break;
+ case StmtKeyAliasDef:
+ ERROR("Key type files may not include other declarations\n");
+ ACTION("Ignoring definition of key alias\n");
+ info->errorCount++;
+ break;
+ case StmtKeycodeDef:
+ ERROR("Key type files may not include other declarations\n");
+ ACTION("Ignoring definition of key name\n");
+ info->errorCount++;
+ break;
+ case StmtInterpDef:
+ ERROR("Key type files may not include other declarations\n");
+ ACTION("Ignoring definition of symbol interpretation\n");
+ info->errorCount++;
+ break;
+ default:
+ WSGO1("Unexpected statement type %d in HandleKeyTypesFile\n",
+ stmt->stmtType);
+ break;
+ }
+ stmt = stmt->next;
+ if (info->errorCount > 10)
+ {
+#ifdef NOISY
+ ERROR("Too many errors\n");
+#endif
+ ACTION1("Abandoning keytypes file \"%s\"\n", file->topName);
+ break;
+ }
+ }
+ return;
+}
+
+static Bool
+CopyDefToKeyType(XkbDescPtr xkb, XkbKeyTypePtr type, KeyTypeInfo * def)
+{
+ register int i;
+ PreserveInfo *pre;
+
+ for (pre = def->preserve; pre != NULL;
+ pre = (PreserveInfo *) pre->defs.next)
+ {
+ XkbKTMapEntryPtr match;
+ XkbKTMapEntryRec tmp;
+ tmp.mods.real_mods = pre->indexMods;
+ tmp.mods.vmods = pre->indexVMods;
+ tmp.level = 0;
+ AddMapEntry(xkb, def, &tmp, False, False);
+ match = FindMatchingMapEntry(def, pre->indexMods, pre->indexVMods);
+ if (!match)
+ {
+ WSGO("Couldn't find matching entry for preserve\n");
+ ACTION("Aborting\n");
+ return False;
+ }
+ pre->matchingMapIndex = match - def->entries;
+ }
+ type->mods.real_mods = def->mask;
+ type->mods.vmods = def->vmask;
+ type->num_levels = def->numLevels;
+ type->map_count = def->nEntries;
+ type->map = def->entries;
+ if (def->preserve)
+ {
+ type->preserve = uTypedCalloc(type->map_count, XkbModsRec);
+ if (!type->preserve)
+ {
+ WARN("Couldn't allocate preserve array in CopyDefToKeyType\n");
+ ACTION1("Preserve setting for type %s lost\n",
+ XkbAtomText(def->dpy, def->name, XkbMessage));
+ }
+ else
+ {
+ pre = def->preserve;
+ for (; pre != NULL; pre = (PreserveInfo *) pre->defs.next)
+ {
+ int ndx = pre->matchingMapIndex;
+ type->preserve[ndx].mask = pre->preMods;
+ type->preserve[ndx].real_mods = pre->preMods;
+ type->preserve[ndx].vmods = pre->preVMods;
+ }
+ }
+ }
+ else
+ type->preserve = NULL;
+ type->name = (Atom) def->name;
+ if (def->szNames > 0)
+ {
+ type->level_names = uTypedCalloc(def->numLevels, Atom);
+
+ /* assert def->szNames<=def->numLevels */
+ for (i = 0; i < def->szNames; i++)
+ {
+ type->level_names[i] = (Atom) def->lvlNames[i];
+ }
+ }
+ else
+ {
+ type->level_names = NULL;
+ }
+
+ def->nEntries = def->szEntries = 0;
+ def->entries = NULL;
+ return XkbComputeEffectiveMap(xkb, type, NULL);
+}
+
+Bool
+CompileKeyTypes(XkbFile * file, XkbFileInfo * result, unsigned merge)
+{
+ KeyTypesInfo info;
+ XkbDescPtr xkb;
+
+ xkb = result->xkb;
+ InitKeyTypesInfo(&info, xkb, NULL);
+ info.fileID = file->id;
+ HandleKeyTypesFile(file, xkb, merge, &info);
+
+ if (info.errorCount == 0)
+ {
+ register int i;
+ register KeyTypeInfo *def;
+ register XkbKeyTypePtr type, next;
+
+ if (info.name != NULL)
+ {
+ if (XkbAllocNames(xkb, XkbTypesNameMask, 0, 0) == Success)
+ xkb->names->types = XkbInternAtom(xkb->dpy, info.name, False);
+ else
+ {
+ WSGO("Couldn't allocate space for types name\n");
+ ACTION2("Name \"%s\" (from %s) NOT assigned\n",
+ scanFile, info.name);
+ }
+ }
+ i = info.nTypes;
+ if ((info.stdPresent & XkbOneLevelMask) == 0)
+ i++;
+ if ((info.stdPresent & XkbTwoLevelMask) == 0)
+ i++;
+ if ((info.stdPresent & XkbKeypadMask) == 0)
+ i++;
+ if ((info.stdPresent & XkbAlphabeticMask) == 0)
+ i++;
+ if (XkbAllocClientMap(xkb, XkbKeyTypesMask, i) != Success)
+ {
+ WSGO("Couldn't allocate client map\n");
+ ACTION("Exiting\n");
+ return False;
+ }
+ xkb->map->num_types = i;
+ if (XkbAllRequiredTypes & (~info.stdPresent))
+ {
+ unsigned missing, keypadVMod;
+
+ missing = XkbAllRequiredTypes & (~info.stdPresent);
+ keypadVMod = FindKeypadVMod(xkb);
+ if (XkbInitCanonicalKeyTypes(xkb, missing, keypadVMod) != Success)
+ {
+ WSGO("Couldn't initialize canonical key types\n");
+ ACTION("Exiting\n");
+ return False;
+ }
+ if (missing & XkbOneLevelMask)
+ xkb->map->types[XkbOneLevelIndex].name = tok_ONE_LEVEL;
+ if (missing & XkbTwoLevelMask)
+ xkb->map->types[XkbTwoLevelIndex].name = tok_TWO_LEVEL;
+ if (missing & XkbAlphabeticMask)
+ xkb->map->types[XkbAlphabeticIndex].name = tok_ALPHABETIC;
+ if (missing & XkbKeypadMask)
+ xkb->map->types[XkbKeypadIndex].name = tok_KEYPAD;
+ }
+ next = &xkb->map->types[XkbLastRequiredType + 1];
+ for (i = 0, def = info.types; i < info.nTypes; i++)
+ {
+ if (def->name == tok_ONE_LEVEL)
+ type = &xkb->map->types[XkbOneLevelIndex];
+ else if (def->name == tok_TWO_LEVEL)
+ type = &xkb->map->types[XkbTwoLevelIndex];
+ else if (def->name == tok_ALPHABETIC)
+ type = &xkb->map->types[XkbAlphabeticIndex];
+ else if (def->name == tok_KEYPAD)
+ type = &xkb->map->types[XkbKeypadIndex];
+ else
+ type = next++;
+ DeleteLevel1MapEntries(def);
+ if (!CopyDefToKeyType(xkb, type, def))
+ return False;
+ def = (KeyTypeInfo *) def->defs.next;
+ }
+ return True;
+ }
+ return False;
+}
diff --git a/xkbcomp/listing.c b/xkbcomp/listing.c
index d62e39b21..26286b793 100644
--- a/xkbcomp/listing.c
+++ b/xkbcomp/listing.c
@@ -1,505 +1,505 @@
-/************************************************************
- Copyright 1996 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-/***********************************************************
-
-Copyright 1988, 1998 The Open Group
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 1988 by 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-******************************************************************/
-
-#include <stdio.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <X11/keysym.h>
-#include <X11/Xwindows.h>
-
-#if defined(sgi)
-#include <malloc.h>
-#endif
-
-#define DEBUG_VAR listingDebug
-#include "xkbcomp.h"
-#include <stdlib.h>
-
-#ifdef _POSIX_SOURCE
-# include <limits.h>
-#else
-# define _POSIX_SOURCE
-# include <limits.h>
-# undef _POSIX_SOURCE
-#endif
-
-#ifndef PATH_MAX
-#ifdef WIN32
-#define PATH_MAX 512
-#else
-#include <sys/param.h>
-#endif
-#ifndef PATH_MAX
-#ifdef MAXPATHLEN
-#define PATH_MAX MAXPATHLEN
-#else
-#define PATH_MAX 1024
-#endif
-#endif
-#endif
-
-#ifdef WIN32
-# include <windows.h>
-# define FileName(file) file.cFileName
-# undef TEXT
-# undef ALTERNATE
-#else
-# include <dirent.h>
-# define FileName(file) file->d_name
-#endif
-
-#include "xkbpath.h"
-#include "parseutils.h"
-#include "misc.h"
-#include "tokens.h"
-#include <X11/extensions/XKBgeom.h>
-
-#ifndef S_ISDIR
-# if defined(_S_IFMT) && defined(_S_IFDIR)
-# define S_ISDIR(a) (((a) & _S_IFMT) == _S_IFDIR)
-# else
-# define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR)
-# endif
-#endif
-
-#define lowbit(x) ((x) & (-(x)))
-
-unsigned int listingDebug;
-
-static int szListing = 0;
-static int nListed = 0;
-static int nFilesListed = 0;
-
-typedef struct _Listing
-{
- char *file;
- char *map;
-} Listing;
-
-static int szMapOnly;
-static int nMapOnly;
-static char **mapOnly;
-
-static Listing *list = NULL;
-
-/***====================================================================***/
-
-int
-AddMapOnly(char *map)
-{
- if (nMapOnly >= szMapOnly)
- {
- if (szMapOnly < 1)
- szMapOnly = 5;
- else
- szMapOnly *= 2;
- mapOnly = uTypedRealloc(list, szMapOnly, char *);
- if (!mapOnly)
- {
- WSGO("Couldn't allocate list of maps\n");
- return 0;
- }
- }
- mapOnly[nMapOnly++] = map;
- return 1;
-}
-
-int
-AddListing(char *file, char *map)
-{
- if (nListed >= szListing)
- {
- if (szListing < 1)
- szListing = 10;
- else
- szListing *= 2;
- list = uTypedRealloc(list, szListing, Listing);
- if (!list)
- {
- WSGO("Couldn't allocate list of files and maps\n");
- ACTION("Exiting\n");
- exit(1);
- }
- }
-
- list[nListed].file = file;
- list[nListed].map = map;
- nListed++;
- if (file != NULL)
- nFilesListed++;
- return 1;
-}
-
-/***====================================================================***/
-
-static void
-ListFile(FILE * outFile, char *fileName, XkbFile * map)
-{
- register unsigned flags;
- char *mapName;
-
- flags = map->flags;
- if ((flags & XkbLC_Hidden) && (!(verboseLevel & WantHiddenMaps)))
- return;
- if ((flags & XkbLC_Partial) && (!(verboseLevel & WantPartialMaps)))
- return;
- if (verboseLevel & WantLongListing)
- {
- fprintf(outFile, (flags & XkbLC_Hidden) ? "h" : "-");
- fprintf(outFile, (flags & XkbLC_Default) ? "d" : "-");
- fprintf(outFile, (flags & XkbLC_Partial) ? "p" : "-");
- fprintf(outFile, "----- ");
- if (map->type == XkmSymbolsIndex)
- {
- fprintf(outFile, (flags & XkbLC_AlphanumericKeys) ? "a" : "-");
- fprintf(outFile, (flags & XkbLC_ModifierKeys) ? "m" : "-");
- fprintf(outFile, (flags & XkbLC_KeypadKeys) ? "k" : "-");
- fprintf(outFile, (flags & XkbLC_FunctionKeys) ? "f" : "-");
- fprintf(outFile, (flags & XkbLC_AlternateGroup) ? "g" : "-");
- fprintf(outFile, "--- ");
- }
- else
- fprintf(outFile, "-------- ");
- }
- mapName = map->name;
- if ((!(verboseLevel & WantFullNames)) && ((flags & XkbLC_Default) != 0))
- mapName = NULL;
- if (dirsToStrip > 0)
- {
- char *tmp, *last;
- int i;
- for (i = 0, tmp = last = fileName; (i < dirsToStrip) && tmp; i++)
- {
- last = tmp;
- tmp = strchr(tmp, '/');
- if (tmp != NULL)
- tmp++;
- }
- fileName = (tmp ? tmp : last);
- }
- if (mapName)
- fprintf(outFile, "%s(%s)\n", fileName, mapName);
- else
- fprintf(outFile, "%s\n", fileName);
- return;
-}
-
-/***====================================================================***/
-
-static int
-AddDirectory(char *head, char *ptrn, char *rest, char *map)
-{
-#ifdef WIN32
- HANDLE dirh;
- WIN32_FIND_DATA file;
-#else
- DIR *dirp;
- struct dirent *file;
-#endif
- int nMatch;
-
- if (map == NULL)
- {
- char *tmp = ptrn;
- if ((rest == NULL) && (ptrn != NULL) && (strchr(ptrn, '/') == NULL))
- {
- tmp = ptrn;
- map = strchr(ptrn, '(');
- }
- else if ((rest == NULL) && (ptrn == NULL) &&
- (head != NULL) && (strchr(head, '/') == NULL))
- {
- tmp = head;
- map = strchr(head, '(');
- }
- if (map != NULL)
- {
- tmp = strchr(tmp, ')');
- if ((tmp == NULL) || (tmp[1] != '\0'))
- {
- ERROR1("File and map must have the format file(map)\n");
- return 0;
- }
- *map = '\0';
- map++;
- *tmp = '\0';
- }
- }
-#ifdef WIN32
- if ((dirh = FindFirstFile("*.*", &file)) == INVALID_HANDLE_VALUE)
- return 0;
- nMatch = 0;
-#else
- if ((dirp = opendir((head ? head : "."))) == NULL)
- return 0;
- nMatch = 0;
-#endif
-#ifdef WIN32
- do
-#else
- while ((file = readdir(dirp)) != NULL)
-#endif
- {
- char *tmp, *filename;
- struct stat sbuf;
-
- filename = FileName(file);
- if (!filename || filename[0] == '.')
- continue;
- if (ptrn && (!XkbNameMatchesPattern(filename, ptrn)))
- continue;
- tmp =
- (char *) uAlloc((head ? strlen(head) : 0) + strlen(filename) + 2);
- if (!tmp)
- continue;
- sprintf(tmp, "%s%s%s", (head ? head : ""), (head ? "/" : ""),
- filename);
- if (stat(tmp, &sbuf) < 0)
- {
- uFree(tmp);
- continue;
- }
- if (((rest != NULL) && (!S_ISDIR(sbuf.st_mode))) ||
- ((map != NULL) && (S_ISDIR(sbuf.st_mode))))
- {
- uFree(tmp);
- continue;
- }
- if (S_ISDIR(sbuf.st_mode))
- {
- if ((rest != NULL) || (verboseLevel & ListRecursive))
- nMatch += AddDirectory(tmp, rest, NULL, map);
- }
- else
- nMatch += AddListing(tmp, map);
- }
-#ifdef WIN32
- while (FindNextFile(dirh, &file));
-#endif
- return nMatch;
-}
-
-/***====================================================================***/
-
-Bool
-AddMatchingFiles(char *head_in)
-{
- char *str, *head, *ptrn, *rest = NULL;
-
- if (head_in == NULL)
- return 0;
- ptrn = NULL;
- for (str = head_in; (*str != '\0') && (*str != '?') && (*str != '*');
- str++)
- {
- if ((str != head_in) && (*str == '/'))
- ptrn = str;
- }
- if (*str == '\0')
- { /* no wildcards */
- head = head_in;
- ptrn = NULL;
- rest = NULL;
- }
- else if (ptrn == NULL)
- { /* no slash before the first wildcard */
- head = NULL;
- ptrn = head_in;
- }
- else
- { /* slash followed by wildcard */
- head = head_in;
- *ptrn = '\0';
- ptrn++;
- }
- if (ptrn)
- {
- rest = strchr(ptrn, '/');
- if (rest != NULL)
- {
- *rest = '\0';
- rest++;
- }
- }
- if (((rest && ptrn)
- && ((strchr(ptrn, '(') != NULL) || (strchr(ptrn, ')') != NULL)))
- || (head
- && ((strchr(head, '(') != NULL) || (strchr(head, ')') != NULL))))
- {
- ERROR1("Files/maps to list must have the form file(map)\n");
- ACTION("Illegal specifier ignored\n");
- return 0;
- }
- return AddDirectory(head, ptrn, rest, NULL);
-}
-
-/***====================================================================***/
-
-static Bool
-MapMatches(char *mapToConsider, char *ptrn)
-{
- int i;
-
- if (ptrn != NULL)
- return XkbNameMatchesPattern(mapToConsider, ptrn);
- if (nMapOnly < 1)
- return True;
- for (i = 0; i < nMapOnly; i++)
- {
- if (XkbNameMatchesPattern(mapToConsider, mapOnly[i]))
- return True;
- }
- return False;
-}
-
-int
-GenerateListing(char *out_name)
-{
- int i;
- FILE *inputFile, *outFile;
- XkbFile *rtrn, *mapToUse;
- unsigned oldWarningLevel;
- char *mapName;
-
- if (nFilesListed < 1)
- {
- ERROR1("Must specify at least one file or pattern to list\n");
- return 0;
- }
- if ((!out_name) || ((out_name[0] == '-') && (out_name[1] == '\0')))
- outFile = stdout;
- else if ((outFile = fopen(out_name, "w")) == NULL)
- {
- ERROR1("Cannot open \"%s\" to write keyboard description\n",
- out_name);
- ACTION("Exiting\n");
- return 0;
- }
-#ifdef DEBUG
- if (warningLevel > 9)
- fprintf(stderr, "should list:\n");
-#endif
- for (i = 0; i < nListed; i++)
- {
-#ifdef DEBUG
- if (warningLevel > 9)
- {
- fprintf(stderr, "%s(%s)\n",
- (list[i].file ? list[i].file : "*"),
- (list[i].map ? list[i].map : "*"));
- }
-#endif
- oldWarningLevel = warningLevel;
- warningLevel = 0;
- if (list[i].file)
- {
- struct stat sbuf;
-
- if (stat(list[i].file, &sbuf) < 0)
- {
- if (oldWarningLevel > 5)
- WARN1("Couldn't open \"%s\"\n", list[i].file);
- continue;
- }
- if (S_ISDIR(sbuf.st_mode))
- {
- if (verboseLevel & ListRecursive)
- AddDirectory(list[i].file, NULL, NULL, NULL);
- continue;
- }
-
- inputFile = fopen(list[i].file, "r");
- if (!inputFile)
- {
- if (oldWarningLevel > 5)
- WARN1("Couldn't open \"%s\"\n", list[i].file);
- continue;
- }
- setScanState(list[i].file, 1);
- if (XKBParseFile(inputFile, &rtrn) && (rtrn != NULL))
- {
- mapName = list[i].map;
- mapToUse = rtrn;
- for (; mapToUse; mapToUse = (XkbFile *) mapToUse->common.next)
- {
- if (!MapMatches(mapToUse->name, mapName))
- continue;
- ListFile(outFile, list[i].file, mapToUse);
- }
- }
- fclose(inputFile);
- }
- warningLevel = oldWarningLevel;
- }
- return 1;
-}
+/************************************************************
+ Copyright 1996 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+/***********************************************************
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 1988 by 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+******************************************************************/
+
+#include <stdio.h>
+#include <ctype.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <X11/keysym.h>
+#include <X11/Xwindows.h>
+
+#if defined(sgi)
+#include <malloc.h>
+#endif
+
+#define DEBUG_VAR listingDebug
+#include "xkbcomp.h"
+#include <stdlib.h>
+
+#ifdef _POSIX_SOURCE
+# include <limits.h>
+#else
+# define _POSIX_SOURCE
+# include <limits.h>
+# undef _POSIX_SOURCE
+#endif
+
+#ifndef PATH_MAX
+#ifdef WIN32
+#define PATH_MAX 512
+#else
+#include <sys/param.h>
+#endif
+#ifndef PATH_MAX
+#ifdef MAXPATHLEN
+#define PATH_MAX MAXPATHLEN
+#else
+#define PATH_MAX 1024
+#endif
+#endif
+#endif
+
+#ifdef WIN32
+# include <windows.h>
+# define FileName(file) file.cFileName
+# undef TEXT
+# undef ALTERNATE
+#else
+# include <dirent.h>
+# define FileName(file) file->d_name
+#endif
+
+#include "xkbpath.h"
+#include "parseutils.h"
+#include "misc.h"
+#include "tokens.h"
+#include <X11/extensions/XKBgeom.h>
+
+#ifndef S_ISDIR
+# if defined(_S_IFMT) && defined(_S_IFDIR)
+# define S_ISDIR(a) (((a) & _S_IFMT) == _S_IFDIR)
+# else
+# define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR)
+# endif
+#endif
+
+#define lowbit(x) ((x) & (-(x)))
+
+unsigned int listingDebug;
+
+static int szListing = 0;
+static int nListed = 0;
+static int nFilesListed = 0;
+
+typedef struct _Listing
+{
+ char *file;
+ char *map;
+} Listing;
+
+static int szMapOnly;
+static int nMapOnly;
+static char **mapOnly;
+
+static Listing *list = NULL;
+
+/***====================================================================***/
+
+int
+AddMapOnly(char *map)
+{
+ if (nMapOnly >= szMapOnly)
+ {
+ if (szMapOnly < 1)
+ szMapOnly = 5;
+ else
+ szMapOnly *= 2;
+ mapOnly = uTypedRealloc(list, szMapOnly, char *);
+ if (!mapOnly)
+ {
+ WSGO("Couldn't allocate list of maps\n");
+ return 0;
+ }
+ }
+ mapOnly[nMapOnly++] = map;
+ return 1;
+}
+
+int
+AddListing(char *file, char *map)
+{
+ if (nListed >= szListing)
+ {
+ if (szListing < 1)
+ szListing = 10;
+ else
+ szListing *= 2;
+ list = uTypedRealloc(list, szListing, Listing);
+ if (!list)
+ {
+ WSGO("Couldn't allocate list of files and maps\n");
+ ACTION("Exiting\n");
+ exit(1);
+ }
+ }
+
+ list[nListed].file = file;
+ list[nListed].map = map;
+ nListed++;
+ if (file != NULL)
+ nFilesListed++;
+ return 1;
+}
+
+/***====================================================================***/
+
+static void
+ListFile(FILE * outFile, char *fileName, XkbFile * map)
+{
+ register unsigned flags;
+ char *mapName;
+
+ flags = map->flags;
+ if ((flags & XkbLC_Hidden) && (!(verboseLevel & WantHiddenMaps)))
+ return;
+ if ((flags & XkbLC_Partial) && (!(verboseLevel & WantPartialMaps)))
+ return;
+ if (verboseLevel & WantLongListing)
+ {
+ fprintf(outFile, (flags & XkbLC_Hidden) ? "h" : "-");
+ fprintf(outFile, (flags & XkbLC_Default) ? "d" : "-");
+ fprintf(outFile, (flags & XkbLC_Partial) ? "p" : "-");
+ fprintf(outFile, "----- ");
+ if (map->type == XkmSymbolsIndex)
+ {
+ fprintf(outFile, (flags & XkbLC_AlphanumericKeys) ? "a" : "-");
+ fprintf(outFile, (flags & XkbLC_ModifierKeys) ? "m" : "-");
+ fprintf(outFile, (flags & XkbLC_KeypadKeys) ? "k" : "-");
+ fprintf(outFile, (flags & XkbLC_FunctionKeys) ? "f" : "-");
+ fprintf(outFile, (flags & XkbLC_AlternateGroup) ? "g" : "-");
+ fprintf(outFile, "--- ");
+ }
+ else
+ fprintf(outFile, "-------- ");
+ }
+ mapName = map->name;
+ if ((!(verboseLevel & WantFullNames)) && ((flags & XkbLC_Default) != 0))
+ mapName = NULL;
+ if (dirsToStrip > 0)
+ {
+ char *tmp, *last;
+ int i;
+ for (i = 0, tmp = last = fileName; (i < dirsToStrip) && tmp; i++)
+ {
+ last = tmp;
+ tmp = strchr(tmp, '/');
+ if (tmp != NULL)
+ tmp++;
+ }
+ fileName = (tmp ? tmp : last);
+ }
+ if (mapName)
+ fprintf(outFile, "%s(%s)\n", fileName, mapName);
+ else
+ fprintf(outFile, "%s\n", fileName);
+ return;
+}
+
+/***====================================================================***/
+
+static int
+AddDirectory(char *head, char *ptrn, char *rest, char *map)
+{
+#ifdef WIN32
+ HANDLE dirh;
+ WIN32_FIND_DATA file;
+#else
+ DIR *dirp;
+ struct dirent *file;
+#endif
+ int nMatch;
+
+ if (map == NULL)
+ {
+ char *tmp = ptrn;
+ if ((rest == NULL) && (ptrn != NULL) && (strchr(ptrn, '/') == NULL))
+ {
+ tmp = ptrn;
+ map = strchr(ptrn, '(');
+ }
+ else if ((rest == NULL) && (ptrn == NULL) &&
+ (head != NULL) && (strchr(head, '/') == NULL))
+ {
+ tmp = head;
+ map = strchr(head, '(');
+ }
+ if (map != NULL)
+ {
+ tmp = strchr(tmp, ')');
+ if ((tmp == NULL) || (tmp[1] != '\0'))
+ {
+ ERROR1("File and map must have the format file(map)\n");
+ return 0;
+ }
+ *map = '\0';
+ map++;
+ *tmp = '\0';
+ }
+ }
+#ifdef WIN32
+ if ((dirh = FindFirstFile("*.*", &file)) == INVALID_HANDLE_VALUE)
+ return 0;
+ nMatch = 0;
+#else
+ if ((dirp = opendir((head ? head : "."))) == NULL)
+ return 0;
+ nMatch = 0;
+#endif
+#ifdef WIN32
+ do
+#else
+ while ((file = readdir(dirp)) != NULL)
+#endif
+ {
+ char *tmp, *filename;
+ struct stat sbuf;
+
+ filename = FileName(file);
+ if (!filename || filename[0] == '.')
+ continue;
+ if (ptrn && (!XkbNameMatchesPattern(filename, ptrn)))
+ continue;
+ tmp =
+ (char *) uAlloc((head ? strlen(head) : 0) + strlen(filename) + 2);
+ if (!tmp)
+ continue;
+ sprintf(tmp, "%s%s%s", (head ? head : ""), (head ? "/" : ""),
+ filename);
+ if (stat(tmp, &sbuf) < 0)
+ {
+ uFree(tmp);
+ continue;
+ }
+ if (((rest != NULL) && (!S_ISDIR(sbuf.st_mode))) ||
+ ((map != NULL) && (S_ISDIR(sbuf.st_mode))))
+ {
+ uFree(tmp);
+ continue;
+ }
+ if (S_ISDIR(sbuf.st_mode))
+ {
+ if ((rest != NULL) || (verboseLevel & ListRecursive))
+ nMatch += AddDirectory(tmp, rest, NULL, map);
+ }
+ else
+ nMatch += AddListing(tmp, map);
+ }
+#ifdef WIN32
+ while (FindNextFile(dirh, &file));
+#endif
+ return nMatch;
+}
+
+/***====================================================================***/
+
+Bool
+AddMatchingFiles(char *head_in)
+{
+ char *str, *head, *ptrn, *rest = NULL;
+
+ if (head_in == NULL)
+ return 0;
+ ptrn = NULL;
+ for (str = head_in; (*str != '\0') && (*str != '?') && (*str != '*');
+ str++)
+ {
+ if ((str != head_in) && (*str == '/'))
+ ptrn = str;
+ }
+ if (*str == '\0')
+ { /* no wildcards */
+ head = head_in;
+ ptrn = NULL;
+ rest = NULL;
+ }
+ else if (ptrn == NULL)
+ { /* no slash before the first wildcard */
+ head = NULL;
+ ptrn = head_in;
+ }
+ else
+ { /* slash followed by wildcard */
+ head = head_in;
+ *ptrn = '\0';
+ ptrn++;
+ }
+ if (ptrn)
+ {
+ rest = strchr(ptrn, '/');
+ if (rest != NULL)
+ {
+ *rest = '\0';
+ rest++;
+ }
+ }
+ if (((rest && ptrn)
+ && ((strchr(ptrn, '(') != NULL) || (strchr(ptrn, ')') != NULL)))
+ || (head
+ && ((strchr(head, '(') != NULL) || (strchr(head, ')') != NULL))))
+ {
+ ERROR1("Files/maps to list must have the form file(map)\n");
+ ACTION("Illegal specifier ignored\n");
+ return 0;
+ }
+ return AddDirectory(head, ptrn, rest, NULL);
+}
+
+/***====================================================================***/
+
+static Bool
+MapMatches(char *mapToConsider, char *ptrn)
+{
+ int i;
+
+ if (ptrn != NULL)
+ return XkbNameMatchesPattern(mapToConsider, ptrn);
+ if (nMapOnly < 1)
+ return True;
+ for (i = 0; i < nMapOnly; i++)
+ {
+ if (XkbNameMatchesPattern(mapToConsider, mapOnly[i]))
+ return True;
+ }
+ return False;
+}
+
+int
+GenerateListing(char *out_name)
+{
+ int i;
+ FILE *inputFile, *outFile;
+ XkbFile *rtrn, *mapToUse;
+ unsigned oldWarningLevel;
+ char *mapName;
+
+ if (nFilesListed < 1)
+ {
+ ERROR1("Must specify at least one file or pattern to list\n");
+ return 0;
+ }
+ if ((!out_name) || ((out_name[0] == '-') && (out_name[1] == '\0')))
+ outFile = stdout;
+ else if ((outFile = fopen(out_name, "w")) == NULL)
+ {
+ ERROR1("Cannot open \"%s\" to write keyboard description\n",
+ out_name);
+ ACTION("Exiting\n");
+ return 0;
+ }
+#ifdef DEBUG
+ if (warningLevel > 9)
+ fprintf(stderr, "should list:\n");
+#endif
+ for (i = 0; i < nListed; i++)
+ {
+#ifdef DEBUG
+ if (warningLevel > 9)
+ {
+ fprintf(stderr, "%s(%s)\n",
+ (list[i].file ? list[i].file : "*"),
+ (list[i].map ? list[i].map : "*"));
+ }
+#endif
+ oldWarningLevel = warningLevel;
+ warningLevel = 0;
+ if (list[i].file)
+ {
+ struct stat sbuf;
+
+ if (stat(list[i].file, &sbuf) < 0)
+ {
+ if (oldWarningLevel > 5)
+ WARN1("Couldn't open \"%s\"\n", list[i].file);
+ continue;
+ }
+ if (S_ISDIR(sbuf.st_mode))
+ {
+ if (verboseLevel & ListRecursive)
+ AddDirectory(list[i].file, NULL, NULL, NULL);
+ continue;
+ }
+
+ inputFile = fopen(list[i].file, "r");
+ if (!inputFile)
+ {
+ if (oldWarningLevel > 5)
+ WARN1("Couldn't open \"%s\"\n", list[i].file);
+ continue;
+ }
+ setScanState(list[i].file, 1);
+ if (XKBParseFile(inputFile, &rtrn) && (rtrn != NULL))
+ {
+ mapName = list[i].map;
+ mapToUse = rtrn;
+ for (; mapToUse; mapToUse = (XkbFile *) mapToUse->common.next)
+ {
+ if (!MapMatches(mapToUse->name, mapName))
+ continue;
+ ListFile(outFile, list[i].file, mapToUse);
+ }
+ }
+ fclose(inputFile);
+ }
+ warningLevel = oldWarningLevel;
+ }
+ return 1;
+}
diff --git a/xkbcomp/misc.c b/xkbcomp/misc.c
index 4990a7439..51bd14a84 100644
--- a/xkbcomp/misc.c
+++ b/xkbcomp/misc.c
@@ -1,581 +1,581 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "xkbpath.h"
-#include "tokens.h"
-#include "keycodes.h"
-#include "misc.h"
-#include <X11/keysym.h>
-#include "parseutils.h"
-
-#include <X11/extensions/XKBgeom.h>
-
-/***====================================================================***/
-
-/**
- * Open the file given in the include statement and parse it's content.
- * If the statement defines a specific map to use, this map is returned in
- * file_rtrn. Otherwise, the default map is returned.
- *
- * @param stmt The include statement, specifying the file name to look for.
- * @param file_type Type of file (XkmKeyNamesIdx, etc.)
- * @param file_rtrn Returns the key map to be used.
- * @param merge_rtrn Always returns stmt->merge.
- *
- * @return True on success or False otherwise.
- */
-Bool
-ProcessIncludeFile(IncludeStmt * stmt,
- unsigned file_type,
- XkbFile ** file_rtrn, unsigned *merge_rtrn)
-{
- FILE *file;
- XkbFile *rtrn, *mapToUse;
- char oldFile[1024] = {0};
- int oldLine = lineNum;
-
- rtrn = XkbFindFileInCache(stmt->file, file_type, &stmt->path);
- if (rtrn == NULL)
- {
- /* file not in cache, open it, parse it and store it in cache for next
- time. */
- file = XkbFindFileInPath(stmt->file, file_type, &stmt->path);
- if (file == NULL)
- {
- ERROR2("Can't find file \"%s\" for %s include\n", stmt->file,
- XkbDirectoryForInclude(file_type));
- ACTION("Exiting\n");
- return False;
- }
- strcpy(oldFile, scanFile);
- oldLine = lineNum;
- setScanState(stmt->file, 1);
- if (debugFlags & 2)
- INFO1("About to parse include file %s\n", stmt->file);
- /* parse the file */
- if ((XKBParseFile(file, &rtrn) == 0) || (rtrn == NULL))
- {
- setScanState(oldFile, oldLine);
- ERROR1("Error interpreting include file \"%s\"\n", stmt->file);
- ACTION("Exiting\n");
- fclose(file);
- return False;
- }
- fclose(file);
- XkbAddFileToCache(stmt->file, file_type, stmt->path, rtrn);
- }
- mapToUse = rtrn;
- if (stmt->map != NULL)
- {
- while ((mapToUse) && ((!uStringEqual(mapToUse->name, stmt->map)) ||
- (mapToUse->type != file_type)))
- {
- mapToUse = (XkbFile *) mapToUse->common.next;
- }
- if (!mapToUse)
- {
- ERROR3("No %s named \"%s\" in the include file \"%s\"\n",
- XkbConfigText(file_type, XkbMessage), stmt->map,
- stmt->file);
- ACTION("Exiting\n");
- return False;
- }
- }
- else if ((rtrn->common.next != NULL) && (warningLevel > 5))
- {
- WARN1("No map in include statement, but \"%s\" contains several\n",
- stmt->file);
- ACTION1("Using first defined map, \"%s\"\n", rtrn->name);
- }
- setScanState(oldFile, oldLine);
- if (mapToUse->type != file_type)
- {
- ERROR2("Include file wrong type (expected %s, got %s)\n",
- XkbConfigText(file_type, XkbMessage),
- XkbConfigText(mapToUse->type, XkbMessage));
- ACTION1("Include file \"%s\" ignored\n", stmt->file);
- return False;
- }
- /* FIXME: we have to check recursive includes here (or somewhere) */
-
- mapToUse->compiled = True;
- *file_rtrn = mapToUse;
- *merge_rtrn = stmt->merge;
- return True;
-}
-
-/***====================================================================***/
-
-int
-ReportNotArray(const char *type, const char *field, const char *name)
-{
- ERROR2("The %s %s field is not an array\n", type, field);
- ACTION1("Ignoring illegal assignment in %s\n", name);
- return False;
-}
-
-int
-ReportShouldBeArray(const char *type, const char *field, char *name)
-{
- ERROR2("Missing subscript for %s %s\n", type, field);
- ACTION1("Ignoring illegal assignment in %s\n", name);
- return False;
-}
-
-int
-ReportBadType(const char *type, const char *field,
- const char *name, const char *wanted)
-{
- ERROR3("The %s %s field must be a %s\n", type, field, wanted);
- ACTION1("Ignoring illegal assignment in %s\n", name);
- return False;
-}
-
-int
-ReportBadIndexType(char *type, char *field, char *name, char *wanted)
-{
- ERROR3("Index for the %s %s field must be a %s\n", type, field, wanted);
- ACTION1("Ignoring assignment to illegal field in %s\n", name);
- return False;
-}
-
-int
-ReportBadField(const char *type, const char *field, const char *name)
-{
- ERROR3("Unknown %s field %s in %s\n", type, field, name);
- ACTION1("Ignoring assignment to unknown field in %s\n", name);
- return False;
-}
-
-int
-ReportMultipleDefs(char *type, char *field, char *name)
-{
- WARN3("Multiple definitions of %s in %s \"%s\"\n", field, type, name);
- ACTION("Using last definition\n");
- return False;
-}
-
-/***====================================================================***/
-
-Bool
-UseNewField(unsigned field,
- CommonInfo * oldDefs, CommonInfo * newDefs, unsigned *pCollide)
-{
- Bool useNew;
-
- useNew = False;
- if (oldDefs->defined & field)
- {
- if (newDefs->defined & field)
- {
- if (((oldDefs->fileID == newDefs->fileID)
- && (warningLevel > 0)) || (warningLevel > 9))
- {
- *pCollide |= field;
- }
- if (newDefs->merge != MergeAugment)
- useNew = True;
- }
- }
- else if (newDefs->defined & field)
- useNew = True;
- return useNew;
-}
-
-Bool
-MergeNewField(unsigned field,
- CommonInfo * oldDefs, CommonInfo * newDefs, unsigned *pCollide)
-{
- if ((oldDefs->defined & field) && (newDefs->defined & field))
- {
- if (((oldDefs->fileID == newDefs->fileID) && (warningLevel > 0)) ||
- (warningLevel > 9))
- {
- *pCollide |= field;
- }
- if (newDefs->merge == MergeAugment)
- return True;
- }
- return False;
-}
-
-XPointer
-ClearCommonInfo(CommonInfo * cmn)
-{
- if (cmn != NULL)
- {
- CommonInfo *this, *next;
- for (this = cmn; this != NULL; this = next)
- {
- next = this->next;
- uFree(this);
- }
- }
- return NULL;
-}
-
-XPointer
-AddCommonInfo(CommonInfo * old, CommonInfo * new)
-{
- CommonInfo *first;
-
- first = old;
- while (old && old->next)
- {
- old = old->next;
- }
- new->next = NULL;
- if (old)
- {
- old->next = new;
- return (XPointer) first;
- }
- return (XPointer) new;
-}
-
-/***====================================================================***/
-
-typedef struct _KeyNameDesc
-{
- KeySym level1;
- KeySym level2;
- char name[5];
- Bool used;
-} KeyNameDesc;
-
-static KeyNameDesc dfltKeys[] = {
- {XK_Escape, NoSymbol, "ESC\0"},
- {XK_quoteleft, XK_asciitilde, "TLDE"},
- {XK_1, XK_exclam, "AE01"},
- {XK_2, XK_at, "AE02"},
- {XK_3, XK_numbersign, "AE03"},
- {XK_4, XK_dollar, "AE04"},
- {XK_5, XK_percent, "AE05"},
- {XK_6, XK_asciicircum, "AE06"},
- {XK_7, XK_ampersand, "AE07"},
- {XK_8, XK_asterisk, "AE08"},
- {XK_9, XK_parenleft, "AE09"},
- {XK_0, XK_parenright, "AE10"},
- {XK_minus, XK_underscore, "AE11"},
- {XK_equal, XK_plus, "AE12"},
- {XK_BackSpace, NoSymbol, "BKSP"},
- {XK_Tab, NoSymbol, "TAB\0"},
- {XK_q, XK_Q, "AD01"},
- {XK_w, XK_W, "AD02"},
- {XK_e, XK_E, "AD03"},
- {XK_r, XK_R, "AD04"},
- {XK_t, XK_T, "AD05"},
- {XK_y, XK_Y, "AD06"},
- {XK_u, XK_U, "AD07"},
- {XK_i, XK_I, "AD08"},
- {XK_o, XK_O, "AD09"},
- {XK_p, XK_P, "AD10"},
- {XK_bracketleft, XK_braceleft, "AD11"},
- {XK_bracketright, XK_braceright, "AD12"},
- {XK_Return, NoSymbol, "RTRN"},
- {XK_Caps_Lock, NoSymbol, "CAPS"},
- {XK_a, XK_A, "AC01"},
- {XK_s, XK_S, "AC02"},
- {XK_d, XK_D, "AC03"},
- {XK_f, XK_F, "AC04"},
- {XK_g, XK_G, "AC05"},
- {XK_h, XK_H, "AC06"},
- {XK_j, XK_J, "AC07"},
- {XK_k, XK_K, "AC08"},
- {XK_l, XK_L, "AC09"},
- {XK_semicolon, XK_colon, "AC10"},
- {XK_quoteright, XK_quotedbl, "AC11"},
- {XK_Shift_L, NoSymbol, "LFSH"},
- {XK_z, XK_Z, "AB01"},
- {XK_x, XK_X, "AB02"},
- {XK_c, XK_C, "AB03"},
- {XK_v, XK_V, "AB04"},
- {XK_b, XK_B, "AB05"},
- {XK_n, XK_N, "AB06"},
- {XK_m, XK_M, "AB07"},
- {XK_comma, XK_less, "AB08"},
- {XK_period, XK_greater, "AB09"},
- {XK_slash, XK_question, "AB10"},
- {XK_backslash, XK_bar, "BKSL"},
- {XK_Control_L, NoSymbol, "LCTL"},
- {XK_space, NoSymbol, "SPCE"},
- {XK_Shift_R, NoSymbol, "RTSH"},
- {XK_Alt_L, NoSymbol, "LALT"},
- {XK_space, NoSymbol, "SPCE"},
- {XK_Control_R, NoSymbol, "RCTL"},
- {XK_Alt_R, NoSymbol, "RALT"},
- {XK_F1, NoSymbol, "FK01"},
- {XK_F2, NoSymbol, "FK02"},
- {XK_F3, NoSymbol, "FK03"},
- {XK_F4, NoSymbol, "FK04"},
- {XK_F5, NoSymbol, "FK05"},
- {XK_F6, NoSymbol, "FK06"},
- {XK_F7, NoSymbol, "FK07"},
- {XK_F8, NoSymbol, "FK08"},
- {XK_F9, NoSymbol, "FK09"},
- {XK_F10, NoSymbol, "FK10"},
- {XK_F11, NoSymbol, "FK11"},
- {XK_F12, NoSymbol, "FK12"},
- {XK_Print, NoSymbol, "PRSC"},
- {XK_Scroll_Lock, NoSymbol, "SCLK"},
- {XK_Pause, NoSymbol, "PAUS"},
- {XK_Insert, NoSymbol, "INS\0"},
- {XK_Home, NoSymbol, "HOME"},
- {XK_Prior, NoSymbol, "PGUP"},
- {XK_Delete, NoSymbol, "DELE"},
- {XK_End, NoSymbol, "END"},
- {XK_Next, NoSymbol, "PGDN"},
- {XK_Up, NoSymbol, "UP\0\0"},
- {XK_Left, NoSymbol, "LEFT"},
- {XK_Down, NoSymbol, "DOWN"},
- {XK_Right, NoSymbol, "RGHT"},
- {XK_Num_Lock, NoSymbol, "NMLK"},
- {XK_KP_Divide, NoSymbol, "KPDV"},
- {XK_KP_Multiply, NoSymbol, "KPMU"},
- {XK_KP_Subtract, NoSymbol, "KPSU"},
- {NoSymbol, XK_KP_7, "KP7\0"},
- {NoSymbol, XK_KP_8, "KP8\0"},
- {NoSymbol, XK_KP_9, "KP9\0"},
- {XK_KP_Add, NoSymbol, "KPAD"},
- {NoSymbol, XK_KP_4, "KP4\0"},
- {NoSymbol, XK_KP_5, "KP5\0"},
- {NoSymbol, XK_KP_6, "KP6\0"},
- {NoSymbol, XK_KP_1, "KP1\0"},
- {NoSymbol, XK_KP_2, "KP2\0"},
- {NoSymbol, XK_KP_3, "KP3\0"},
- {XK_KP_Enter, NoSymbol, "KPEN"},
- {NoSymbol, XK_KP_0, "KP0\0"},
- {XK_KP_Delete, NoSymbol, "KPDL"},
- {XK_less, XK_greater, "LSGT"},
- {XK_KP_Separator, NoSymbol, "KPCO"},
- {XK_Find, NoSymbol, "FIND"},
- {NoSymbol, NoSymbol, "\0\0\0\0"}
-};
-
-Status
-ComputeKbdDefaults(XkbDescPtr xkb)
-{
- Status rtrn;
- register int i, tmp, nUnknown;
- KeyNameDesc *name;
- KeySym *syms;
- char tmpname[XkbKeyNameLength + 1];
-
- if ((xkb->names == NULL) || (xkb->names->keys == NULL))
- {
- if ((rtrn = XkbAllocNames(xkb, XkbKeyNamesMask, 0, 0)) != Success)
- return rtrn;
- }
- for (name = dfltKeys; (name->name[0] != '\0'); name++)
- {
- name->used = False;
- }
- nUnknown = 0;
- for (i = xkb->min_key_code; i <= xkb->max_key_code; i++)
- {
- tmp = XkbKeyNumSyms(xkb, i);
- if ((xkb->names->keys[i].name[0] == '\0') && (tmp > 0))
- {
- tmp = XkbKeyGroupsWidth(xkb, i);
- syms = XkbKeySymsPtr(xkb, i);
- for (name = dfltKeys; (name->name[0] != '\0'); name++)
- {
- Bool match = True;
- if (((name->level1 != syms[0])
- && (name->level1 != NoSymbol))
- || ((name->level2 != NoSymbol) && (tmp < 2))
- || ((name->level2 != syms[1])
- && (name->level2 != NoSymbol)))
- {
- match = False;
- }
- if (match)
- {
- if (!name->used)
- {
- memcpy(xkb->names->keys[i].name, name->name,
- XkbKeyNameLength);
- name->used = True;
- }
- else
- {
- if (warningLevel > 2)
- {
- WARN1
- ("Several keys match pattern for %s\n",
- XkbKeyNameText(name->name, XkbMessage));
- ACTION2("Using <U%03d> for key %d\n",
- nUnknown, i);
- }
- snprintf(tmpname, sizeof(tmpname), "U%03d",
- nUnknown++);
- memcpy(xkb->names->keys[i].name, tmpname,
- XkbKeyNameLength);
- }
- break;
- }
- }
- if (xkb->names->keys[i].name[0] == '\0')
- {
- if (warningLevel > 2)
- {
- WARN1("Key %d does not match any defaults\n", i);
- ACTION1("Using name <U%03d>\n", nUnknown);
- snprintf(tmpname, sizeof(tmpname), "U%03d", nUnknown++);
- memcpy(xkb->names->keys[i].name, tmpname,
- XkbKeyNameLength);
- }
- }
- }
- }
- return Success;
-}
-
-/**
- * Find the key with the given name and return its keycode in kc_rtrn.
- *
- * @param name The 4-letter name of the key as a long.
- * @param kc_rtrn Set to the keycode if the key was found, otherwise 0.
- * @param use_aliases True if the key aliases should be searched too.
- * @param create If True and the key is not found, it is added to the
- * xkb->names at the first free keycode.
- * @param start_from Keycode to start searching from.
- *
- * @return True if found, False otherwise.
- */
-Bool
-FindNamedKey(XkbDescPtr xkb,
- unsigned long name,
- unsigned int *kc_rtrn,
- Bool use_aliases, Bool create, int start_from)
-{
- register unsigned n;
-
- if (start_from < xkb->min_key_code)
- {
- start_from = xkb->min_key_code;
- }
- else if (start_from > xkb->max_key_code)
- {
- return False;
- }
-
- *kc_rtrn = 0; /* some callers rely on this */
- if (xkb && xkb->names && xkb->names->keys)
- {
- for (n = start_from; n <= xkb->max_key_code; n++)
- {
- unsigned long tmp;
- tmp = KeyNameToLong(xkb->names->keys[n].name);
- if (tmp == name)
- {
- *kc_rtrn = n;
- return True;
- }
- }
- if (use_aliases)
- {
- unsigned long new_name;
- if (FindKeyNameForAlias(xkb, name, &new_name))
- return FindNamedKey(xkb, new_name, kc_rtrn, False, create, 0);
- }
- }
- if (create)
- {
- if ((!xkb->names) || (!xkb->names->keys))
- {
- if (xkb->min_key_code < XkbMinLegalKeyCode)
- {
- xkb->min_key_code = XkbMinLegalKeyCode;
- xkb->max_key_code = XkbMaxLegalKeyCode;
- }
- if (XkbAllocNames(xkb, XkbKeyNamesMask, 0, 0) != Success)
- {
- if (warningLevel > 0)
- {
- WARN("Couldn't allocate key names in FindNamedKey\n");
- ACTION1("Key \"%s\" not automatically created\n",
- longText(name, XkbMessage));
- }
- return False;
- }
- }
- /* Find first unused keycode and store our key here */
- for (n = xkb->min_key_code; n <= xkb->max_key_code; n++)
- {
- if (xkb->names->keys[n].name[0] == '\0')
- {
- char buf[XkbKeyNameLength + 1];
- LongToKeyName(name, buf);
- memcpy(xkb->names->keys[n].name, buf, XkbKeyNameLength);
- *kc_rtrn = n;
- return True;
- }
- }
- }
- return False;
-}
-
-Bool
-FindKeyNameForAlias(XkbDescPtr xkb, unsigned long lname,
- unsigned long *real_name)
-{
- register int i;
- char name[XkbKeyNameLength + 1];
-
- if (xkb && xkb->geom && xkb->geom->key_aliases)
- {
- XkbKeyAliasPtr a;
- a = xkb->geom->key_aliases;
- LongToKeyName(lname, name);
- name[XkbKeyNameLength] = '\0';
- for (i = 0; i < xkb->geom->num_key_aliases; i++, a++)
- {
- if (strncmp(name, a->alias, XkbKeyNameLength) == 0)
- {
- *real_name = KeyNameToLong(a->real);
- return True;
- }
- }
- }
- if (xkb && xkb->names && xkb->names->key_aliases)
- {
- XkbKeyAliasPtr a;
- a = xkb->names->key_aliases;
- LongToKeyName(lname, name);
- name[XkbKeyNameLength] = '\0';
- for (i = 0; i < xkb->names->num_key_aliases; i++, a++)
- {
- if (strncmp(name, a->alias, XkbKeyNameLength) == 0)
- {
- *real_name = KeyNameToLong(a->real);
- return True;
- }
- }
- }
- return False;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "xkbpath.h"
+#include "tokens.h"
+#include "keycodes.h"
+#include "misc.h"
+#include <X11/keysym.h>
+#include "parseutils.h"
+
+#include <X11/extensions/XKBgeom.h>
+
+/***====================================================================***/
+
+/**
+ * Open the file given in the include statement and parse it's content.
+ * If the statement defines a specific map to use, this map is returned in
+ * file_rtrn. Otherwise, the default map is returned.
+ *
+ * @param stmt The include statement, specifying the file name to look for.
+ * @param file_type Type of file (XkmKeyNamesIdx, etc.)
+ * @param file_rtrn Returns the key map to be used.
+ * @param merge_rtrn Always returns stmt->merge.
+ *
+ * @return True on success or False otherwise.
+ */
+Bool
+ProcessIncludeFile(IncludeStmt * stmt,
+ unsigned file_type,
+ XkbFile ** file_rtrn, unsigned *merge_rtrn)
+{
+ FILE *file;
+ XkbFile *rtrn, *mapToUse;
+ char oldFile[1024] = {0};
+ int oldLine = lineNum;
+
+ rtrn = XkbFindFileInCache(stmt->file, file_type, &stmt->path);
+ if (rtrn == NULL)
+ {
+ /* file not in cache, open it, parse it and store it in cache for next
+ time. */
+ file = XkbFindFileInPath(stmt->file, file_type, &stmt->path);
+ if (file == NULL)
+ {
+ ERROR2("Can't find file \"%s\" for %s include\n", stmt->file,
+ XkbDirectoryForInclude(file_type));
+ ACTION("Exiting\n");
+ return False;
+ }
+ strcpy(oldFile, scanFile);
+ oldLine = lineNum;
+ setScanState(stmt->file, 1);
+ if (debugFlags & 2)
+ INFO1("About to parse include file %s\n", stmt->file);
+ /* parse the file */
+ if ((XKBParseFile(file, &rtrn) == 0) || (rtrn == NULL))
+ {
+ setScanState(oldFile, oldLine);
+ ERROR1("Error interpreting include file \"%s\"\n", stmt->file);
+ ACTION("Exiting\n");
+ fclose(file);
+ return False;
+ }
+ fclose(file);
+ XkbAddFileToCache(stmt->file, file_type, stmt->path, rtrn);
+ }
+ mapToUse = rtrn;
+ if (stmt->map != NULL)
+ {
+ while ((mapToUse) && ((!uStringEqual(mapToUse->name, stmt->map)) ||
+ (mapToUse->type != file_type)))
+ {
+ mapToUse = (XkbFile *) mapToUse->common.next;
+ }
+ if (!mapToUse)
+ {
+ ERROR3("No %s named \"%s\" in the include file \"%s\"\n",
+ XkbConfigText(file_type, XkbMessage), stmt->map,
+ stmt->file);
+ ACTION("Exiting\n");
+ return False;
+ }
+ }
+ else if ((rtrn->common.next != NULL) && (warningLevel > 5))
+ {
+ WARN1("No map in include statement, but \"%s\" contains several\n",
+ stmt->file);
+ ACTION1("Using first defined map, \"%s\"\n", rtrn->name);
+ }
+ setScanState(oldFile, oldLine);
+ if (mapToUse->type != file_type)
+ {
+ ERROR2("Include file wrong type (expected %s, got %s)\n",
+ XkbConfigText(file_type, XkbMessage),
+ XkbConfigText(mapToUse->type, XkbMessage));
+ ACTION1("Include file \"%s\" ignored\n", stmt->file);
+ return False;
+ }
+ /* FIXME: we have to check recursive includes here (or somewhere) */
+
+ mapToUse->compiled = True;
+ *file_rtrn = mapToUse;
+ *merge_rtrn = stmt->merge;
+ return True;
+}
+
+/***====================================================================***/
+
+int
+ReportNotArray(const char *type, const char *field, const char *name)
+{
+ ERROR2("The %s %s field is not an array\n", type, field);
+ ACTION1("Ignoring illegal assignment in %s\n", name);
+ return False;
+}
+
+int
+ReportShouldBeArray(const char *type, const char *field, char *name)
+{
+ ERROR2("Missing subscript for %s %s\n", type, field);
+ ACTION1("Ignoring illegal assignment in %s\n", name);
+ return False;
+}
+
+int
+ReportBadType(const char *type, const char *field,
+ const char *name, const char *wanted)
+{
+ ERROR3("The %s %s field must be a %s\n", type, field, wanted);
+ ACTION1("Ignoring illegal assignment in %s\n", name);
+ return False;
+}
+
+int
+ReportBadIndexType(char *type, char *field, char *name, char *wanted)
+{
+ ERROR3("Index for the %s %s field must be a %s\n", type, field, wanted);
+ ACTION1("Ignoring assignment to illegal field in %s\n", name);
+ return False;
+}
+
+int
+ReportBadField(const char *type, const char *field, const char *name)
+{
+ ERROR3("Unknown %s field %s in %s\n", type, field, name);
+ ACTION1("Ignoring assignment to unknown field in %s\n", name);
+ return False;
+}
+
+int
+ReportMultipleDefs(char *type, char *field, char *name)
+{
+ WARN3("Multiple definitions of %s in %s \"%s\"\n", field, type, name);
+ ACTION("Using last definition\n");
+ return False;
+}
+
+/***====================================================================***/
+
+Bool
+UseNewField(unsigned field,
+ CommonInfo * oldDefs, CommonInfo * newDefs, unsigned *pCollide)
+{
+ Bool useNew;
+
+ useNew = False;
+ if (oldDefs->defined & field)
+ {
+ if (newDefs->defined & field)
+ {
+ if (((oldDefs->fileID == newDefs->fileID)
+ && (warningLevel > 0)) || (warningLevel > 9))
+ {
+ *pCollide |= field;
+ }
+ if (newDefs->merge != MergeAugment)
+ useNew = True;
+ }
+ }
+ else if (newDefs->defined & field)
+ useNew = True;
+ return useNew;
+}
+
+Bool
+MergeNewField(unsigned field,
+ CommonInfo * oldDefs, CommonInfo * newDefs, unsigned *pCollide)
+{
+ if ((oldDefs->defined & field) && (newDefs->defined & field))
+ {
+ if (((oldDefs->fileID == newDefs->fileID) && (warningLevel > 0)) ||
+ (warningLevel > 9))
+ {
+ *pCollide |= field;
+ }
+ if (newDefs->merge == MergeAugment)
+ return True;
+ }
+ return False;
+}
+
+XPointer
+ClearCommonInfo(CommonInfo * cmn)
+{
+ if (cmn != NULL)
+ {
+ CommonInfo *this, *next;
+ for (this = cmn; this != NULL; this = next)
+ {
+ next = this->next;
+ uFree(this);
+ }
+ }
+ return NULL;
+}
+
+XPointer
+AddCommonInfo(CommonInfo * old, CommonInfo * new)
+{
+ CommonInfo *first;
+
+ first = old;
+ while (old && old->next)
+ {
+ old = old->next;
+ }
+ new->next = NULL;
+ if (old)
+ {
+ old->next = new;
+ return (XPointer) first;
+ }
+ return (XPointer) new;
+}
+
+/***====================================================================***/
+
+typedef struct _KeyNameDesc
+{
+ KeySym level1;
+ KeySym level2;
+ char name[5];
+ Bool used;
+} KeyNameDesc;
+
+static KeyNameDesc dfltKeys[] = {
+ {XK_Escape, NoSymbol, "ESC\0"},
+ {XK_quoteleft, XK_asciitilde, "TLDE"},
+ {XK_1, XK_exclam, "AE01"},
+ {XK_2, XK_at, "AE02"},
+ {XK_3, XK_numbersign, "AE03"},
+ {XK_4, XK_dollar, "AE04"},
+ {XK_5, XK_percent, "AE05"},
+ {XK_6, XK_asciicircum, "AE06"},
+ {XK_7, XK_ampersand, "AE07"},
+ {XK_8, XK_asterisk, "AE08"},
+ {XK_9, XK_parenleft, "AE09"},
+ {XK_0, XK_parenright, "AE10"},
+ {XK_minus, XK_underscore, "AE11"},
+ {XK_equal, XK_plus, "AE12"},
+ {XK_BackSpace, NoSymbol, "BKSP"},
+ {XK_Tab, NoSymbol, "TAB\0"},
+ {XK_q, XK_Q, "AD01"},
+ {XK_w, XK_W, "AD02"},
+ {XK_e, XK_E, "AD03"},
+ {XK_r, XK_R, "AD04"},
+ {XK_t, XK_T, "AD05"},
+ {XK_y, XK_Y, "AD06"},
+ {XK_u, XK_U, "AD07"},
+ {XK_i, XK_I, "AD08"},
+ {XK_o, XK_O, "AD09"},
+ {XK_p, XK_P, "AD10"},
+ {XK_bracketleft, XK_braceleft, "AD11"},
+ {XK_bracketright, XK_braceright, "AD12"},
+ {XK_Return, NoSymbol, "RTRN"},
+ {XK_Caps_Lock, NoSymbol, "CAPS"},
+ {XK_a, XK_A, "AC01"},
+ {XK_s, XK_S, "AC02"},
+ {XK_d, XK_D, "AC03"},
+ {XK_f, XK_F, "AC04"},
+ {XK_g, XK_G, "AC05"},
+ {XK_h, XK_H, "AC06"},
+ {XK_j, XK_J, "AC07"},
+ {XK_k, XK_K, "AC08"},
+ {XK_l, XK_L, "AC09"},
+ {XK_semicolon, XK_colon, "AC10"},
+ {XK_quoteright, XK_quotedbl, "AC11"},
+ {XK_Shift_L, NoSymbol, "LFSH"},
+ {XK_z, XK_Z, "AB01"},
+ {XK_x, XK_X, "AB02"},
+ {XK_c, XK_C, "AB03"},
+ {XK_v, XK_V, "AB04"},
+ {XK_b, XK_B, "AB05"},
+ {XK_n, XK_N, "AB06"},
+ {XK_m, XK_M, "AB07"},
+ {XK_comma, XK_less, "AB08"},
+ {XK_period, XK_greater, "AB09"},
+ {XK_slash, XK_question, "AB10"},
+ {XK_backslash, XK_bar, "BKSL"},
+ {XK_Control_L, NoSymbol, "LCTL"},
+ {XK_space, NoSymbol, "SPCE"},
+ {XK_Shift_R, NoSymbol, "RTSH"},
+ {XK_Alt_L, NoSymbol, "LALT"},
+ {XK_space, NoSymbol, "SPCE"},
+ {XK_Control_R, NoSymbol, "RCTL"},
+ {XK_Alt_R, NoSymbol, "RALT"},
+ {XK_F1, NoSymbol, "FK01"},
+ {XK_F2, NoSymbol, "FK02"},
+ {XK_F3, NoSymbol, "FK03"},
+ {XK_F4, NoSymbol, "FK04"},
+ {XK_F5, NoSymbol, "FK05"},
+ {XK_F6, NoSymbol, "FK06"},
+ {XK_F7, NoSymbol, "FK07"},
+ {XK_F8, NoSymbol, "FK08"},
+ {XK_F9, NoSymbol, "FK09"},
+ {XK_F10, NoSymbol, "FK10"},
+ {XK_F11, NoSymbol, "FK11"},
+ {XK_F12, NoSymbol, "FK12"},
+ {XK_Print, NoSymbol, "PRSC"},
+ {XK_Scroll_Lock, NoSymbol, "SCLK"},
+ {XK_Pause, NoSymbol, "PAUS"},
+ {XK_Insert, NoSymbol, "INS\0"},
+ {XK_Home, NoSymbol, "HOME"},
+ {XK_Prior, NoSymbol, "PGUP"},
+ {XK_Delete, NoSymbol, "DELE"},
+ {XK_End, NoSymbol, "END"},
+ {XK_Next, NoSymbol, "PGDN"},
+ {XK_Up, NoSymbol, "UP\0\0"},
+ {XK_Left, NoSymbol, "LEFT"},
+ {XK_Down, NoSymbol, "DOWN"},
+ {XK_Right, NoSymbol, "RGHT"},
+ {XK_Num_Lock, NoSymbol, "NMLK"},
+ {XK_KP_Divide, NoSymbol, "KPDV"},
+ {XK_KP_Multiply, NoSymbol, "KPMU"},
+ {XK_KP_Subtract, NoSymbol, "KPSU"},
+ {NoSymbol, XK_KP_7, "KP7\0"},
+ {NoSymbol, XK_KP_8, "KP8\0"},
+ {NoSymbol, XK_KP_9, "KP9\0"},
+ {XK_KP_Add, NoSymbol, "KPAD"},
+ {NoSymbol, XK_KP_4, "KP4\0"},
+ {NoSymbol, XK_KP_5, "KP5\0"},
+ {NoSymbol, XK_KP_6, "KP6\0"},
+ {NoSymbol, XK_KP_1, "KP1\0"},
+ {NoSymbol, XK_KP_2, "KP2\0"},
+ {NoSymbol, XK_KP_3, "KP3\0"},
+ {XK_KP_Enter, NoSymbol, "KPEN"},
+ {NoSymbol, XK_KP_0, "KP0\0"},
+ {XK_KP_Delete, NoSymbol, "KPDL"},
+ {XK_less, XK_greater, "LSGT"},
+ {XK_KP_Separator, NoSymbol, "KPCO"},
+ {XK_Find, NoSymbol, "FIND"},
+ {NoSymbol, NoSymbol, "\0\0\0\0"}
+};
+
+Status
+ComputeKbdDefaults(XkbDescPtr xkb)
+{
+ Status rtrn;
+ register int i, tmp, nUnknown;
+ KeyNameDesc *name;
+ KeySym *syms;
+ char tmpname[XkbKeyNameLength + 1];
+
+ if ((xkb->names == NULL) || (xkb->names->keys == NULL))
+ {
+ if ((rtrn = XkbAllocNames(xkb, XkbKeyNamesMask, 0, 0)) != Success)
+ return rtrn;
+ }
+ for (name = dfltKeys; (name->name[0] != '\0'); name++)
+ {
+ name->used = False;
+ }
+ nUnknown = 0;
+ for (i = xkb->min_key_code; i <= xkb->max_key_code; i++)
+ {
+ tmp = XkbKeyNumSyms(xkb, i);
+ if ((xkb->names->keys[i].name[0] == '\0') && (tmp > 0))
+ {
+ tmp = XkbKeyGroupsWidth(xkb, i);
+ syms = XkbKeySymsPtr(xkb, i);
+ for (name = dfltKeys; (name->name[0] != '\0'); name++)
+ {
+ Bool match = True;
+ if (((name->level1 != syms[0])
+ && (name->level1 != NoSymbol))
+ || ((name->level2 != NoSymbol) && (tmp < 2))
+ || ((name->level2 != syms[1])
+ && (name->level2 != NoSymbol)))
+ {
+ match = False;
+ }
+ if (match)
+ {
+ if (!name->used)
+ {
+ memcpy(xkb->names->keys[i].name, name->name,
+ XkbKeyNameLength);
+ name->used = True;
+ }
+ else
+ {
+ if (warningLevel > 2)
+ {
+ WARN1
+ ("Several keys match pattern for %s\n",
+ XkbKeyNameText(name->name, XkbMessage));
+ ACTION2("Using <U%03d> for key %d\n",
+ nUnknown, i);
+ }
+ snprintf(tmpname, sizeof(tmpname), "U%03d",
+ nUnknown++);
+ memcpy(xkb->names->keys[i].name, tmpname,
+ XkbKeyNameLength);
+ }
+ break;
+ }
+ }
+ if (xkb->names->keys[i].name[0] == '\0')
+ {
+ if (warningLevel > 2)
+ {
+ WARN1("Key %d does not match any defaults\n", i);
+ ACTION1("Using name <U%03d>\n", nUnknown);
+ snprintf(tmpname, sizeof(tmpname), "U%03d", nUnknown++);
+ memcpy(xkb->names->keys[i].name, tmpname,
+ XkbKeyNameLength);
+ }
+ }
+ }
+ }
+ return Success;
+}
+
+/**
+ * Find the key with the given name and return its keycode in kc_rtrn.
+ *
+ * @param name The 4-letter name of the key as a long.
+ * @param kc_rtrn Set to the keycode if the key was found, otherwise 0.
+ * @param use_aliases True if the key aliases should be searched too.
+ * @param create If True and the key is not found, it is added to the
+ * xkb->names at the first free keycode.
+ * @param start_from Keycode to start searching from.
+ *
+ * @return True if found, False otherwise.
+ */
+Bool
+FindNamedKey(XkbDescPtr xkb,
+ unsigned long name,
+ unsigned int *kc_rtrn,
+ Bool use_aliases, Bool create, int start_from)
+{
+ register unsigned n;
+
+ if (start_from < xkb->min_key_code)
+ {
+ start_from = xkb->min_key_code;
+ }
+ else if (start_from > xkb->max_key_code)
+ {
+ return False;
+ }
+
+ *kc_rtrn = 0; /* some callers rely on this */
+ if (xkb && xkb->names && xkb->names->keys)
+ {
+ for (n = start_from; n <= xkb->max_key_code; n++)
+ {
+ unsigned long tmp;
+ tmp = KeyNameToLong(xkb->names->keys[n].name);
+ if (tmp == name)
+ {
+ *kc_rtrn = n;
+ return True;
+ }
+ }
+ if (use_aliases)
+ {
+ unsigned long new_name;
+ if (FindKeyNameForAlias(xkb, name, &new_name))
+ return FindNamedKey(xkb, new_name, kc_rtrn, False, create, 0);
+ }
+ }
+ if (create)
+ {
+ if ((!xkb->names) || (!xkb->names->keys))
+ {
+ if (xkb->min_key_code < XkbMinLegalKeyCode)
+ {
+ xkb->min_key_code = XkbMinLegalKeyCode;
+ xkb->max_key_code = XkbMaxLegalKeyCode;
+ }
+ if (XkbAllocNames(xkb, XkbKeyNamesMask, 0, 0) != Success)
+ {
+ if (warningLevel > 0)
+ {
+ WARN("Couldn't allocate key names in FindNamedKey\n");
+ ACTION1("Key \"%s\" not automatically created\n",
+ longText(name, XkbMessage));
+ }
+ return False;
+ }
+ }
+ /* Find first unused keycode and store our key here */
+ for (n = xkb->min_key_code; n <= xkb->max_key_code; n++)
+ {
+ if (xkb->names->keys[n].name[0] == '\0')
+ {
+ char buf[XkbKeyNameLength + 1];
+ LongToKeyName(name, buf);
+ memcpy(xkb->names->keys[n].name, buf, XkbKeyNameLength);
+ *kc_rtrn = n;
+ return True;
+ }
+ }
+ }
+ return False;
+}
+
+Bool
+FindKeyNameForAlias(XkbDescPtr xkb, unsigned long lname,
+ unsigned long *real_name)
+{
+ register int i;
+ char name[XkbKeyNameLength + 1];
+
+ if (xkb && xkb->geom && xkb->geom->key_aliases)
+ {
+ XkbKeyAliasPtr a;
+ a = xkb->geom->key_aliases;
+ LongToKeyName(lname, name);
+ name[XkbKeyNameLength] = '\0';
+ for (i = 0; i < xkb->geom->num_key_aliases; i++, a++)
+ {
+ if (strncmp(name, a->alias, XkbKeyNameLength) == 0)
+ {
+ *real_name = KeyNameToLong(a->real);
+ return True;
+ }
+ }
+ }
+ if (xkb && xkb->names && xkb->names->key_aliases)
+ {
+ XkbKeyAliasPtr a;
+ a = xkb->names->key_aliases;
+ LongToKeyName(lname, name);
+ name[XkbKeyNameLength] = '\0';
+ for (i = 0; i < xkb->names->num_key_aliases; i++, a++)
+ {
+ if (strncmp(name, a->alias, XkbKeyNameLength) == 0)
+ {
+ *real_name = KeyNameToLong(a->real);
+ return True;
+ }
+ }
+ }
+ return False;
+}
diff --git a/xkbcomp/misc.h b/xkbcomp/misc.h
index 4fa4b6dde..f6c489255 100644
--- a/xkbcomp/misc.h
+++ b/xkbcomp/misc.h
@@ -1,111 +1,111 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#ifndef MISC_H
-#define MISC_H 1
-
-typedef struct _CommonInfo
-{
- unsigned short defined;
- unsigned char fileID;
- unsigned char merge;
- struct _CommonInfo *next;
-} CommonInfo;
-
-extern Bool UseNewField(unsigned /* field */ ,
- CommonInfo * /* oldDefs */ ,
- CommonInfo * /* newDefs */ ,
- unsigned * /* pCollide */
- );
-
-extern Bool MergeNewField(unsigned /* field */ ,
- CommonInfo * /* oldDefs */ ,
- CommonInfo * /* newDefs */ ,
- unsigned * /* pCollide */
- );
-
-extern XPointer ClearCommonInfo(CommonInfo * /* cmn */
- );
-
-extern XPointer AddCommonInfo(CommonInfo * /* old */ ,
- CommonInfo * /* new */
- );
-
-extern int ReportNotArray(const char * /* type */ ,
- const char * /* field */ ,
- const char * /* name */
- );
-
-extern int ReportShouldBeArray(const char * /* type */ ,
- const char * /* field */ ,
- char * /* name */
- );
-
-extern int ReportBadType(const char * /* type */ ,
- const char * /* field */ ,
- const char * /* name */ ,
- const char * /* wanted */
- );
-
-extern int ReportBadIndexType(char * /* type */ ,
- char * /* field */ ,
- char * /* name */ ,
- char * /* wanted */
- );
-
-extern int ReportBadField(const char * /* type */ ,
- const char * /* field */ ,
- const char * /* name */
- );
-
-extern int ReportMultipleDefs(char * /* type */ ,
- char * /* field */ ,
- char * /* which */
- );
-
-extern Bool ProcessIncludeFile(IncludeStmt * /* stmt */ ,
- unsigned /* file_type */ ,
- XkbFile ** /* file_rtrn */ ,
- unsigned * /* merge_rtrn */
- );
-
-extern Status ComputeKbdDefaults(XkbDescPtr /* xkb */
- );
-
-extern Bool FindNamedKey(XkbDescPtr /* xkb */ ,
- unsigned long /* name */ ,
- unsigned int * /* kc_rtrn */ ,
- Bool /* use_aliases */ ,
- Bool /* create */ ,
- int /* start_from */
- );
-
-extern Bool FindKeyNameForAlias(XkbDescPtr /* xkb */ ,
- unsigned long /* lname */ ,
- unsigned long * /* real_name */
- );
-
-#endif /* MISC_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#ifndef MISC_H
+#define MISC_H 1
+
+typedef struct _CommonInfo
+{
+ unsigned short defined;
+ unsigned char fileID;
+ unsigned char merge;
+ struct _CommonInfo *next;
+} CommonInfo;
+
+extern Bool UseNewField(unsigned /* field */ ,
+ CommonInfo * /* oldDefs */ ,
+ CommonInfo * /* newDefs */ ,
+ unsigned * /* pCollide */
+ );
+
+extern Bool MergeNewField(unsigned /* field */ ,
+ CommonInfo * /* oldDefs */ ,
+ CommonInfo * /* newDefs */ ,
+ unsigned * /* pCollide */
+ );
+
+extern XPointer ClearCommonInfo(CommonInfo * /* cmn */
+ );
+
+extern XPointer AddCommonInfo(CommonInfo * /* old */ ,
+ CommonInfo * /* new */
+ );
+
+extern int ReportNotArray(const char * /* type */ ,
+ const char * /* field */ ,
+ const char * /* name */
+ );
+
+extern int ReportShouldBeArray(const char * /* type */ ,
+ const char * /* field */ ,
+ char * /* name */
+ );
+
+extern int ReportBadType(const char * /* type */ ,
+ const char * /* field */ ,
+ const char * /* name */ ,
+ const char * /* wanted */
+ );
+
+extern int ReportBadIndexType(char * /* type */ ,
+ char * /* field */ ,
+ char * /* name */ ,
+ char * /* wanted */
+ );
+
+extern int ReportBadField(const char * /* type */ ,
+ const char * /* field */ ,
+ const char * /* name */
+ );
+
+extern int ReportMultipleDefs(char * /* type */ ,
+ char * /* field */ ,
+ char * /* which */
+ );
+
+extern Bool ProcessIncludeFile(IncludeStmt * /* stmt */ ,
+ unsigned /* file_type */ ,
+ XkbFile ** /* file_rtrn */ ,
+ unsigned * /* merge_rtrn */
+ );
+
+extern Status ComputeKbdDefaults(XkbDescPtr /* xkb */
+ );
+
+extern Bool FindNamedKey(XkbDescPtr /* xkb */ ,
+ unsigned long /* name */ ,
+ unsigned int * /* kc_rtrn */ ,
+ Bool /* use_aliases */ ,
+ Bool /* create */ ,
+ int /* start_from */
+ );
+
+extern Bool FindKeyNameForAlias(XkbDescPtr /* xkb */ ,
+ unsigned long /* lname */ ,
+ unsigned long * /* real_name */
+ );
+
+#endif /* MISC_H */
diff --git a/xkbcomp/tokens.h b/xkbcomp/tokens.h
index 970f3d4de..54d4d149b 100644
--- a/xkbcomp/tokens.h
+++ b/xkbcomp/tokens.h
@@ -1,104 +1,104 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-#ifndef TOKENS_H
-#define TOKENS_H 1
-
-#define END_OF_FILE 0
-#define ERROR_TOK 255
-
-#define XKB_KEYMAP 1
-#define XKB_KEYCODES 2
-#define XKB_TYPES 3
-#define XKB_SYMBOLS 4
-#define XKB_COMPATMAP 5
-#define XKB_GEOMETRY 6
-#define XKB_SEMANTICS 7
-#define XKB_LAYOUT 8
-
-#define INCLUDE 10
-#define OVERRIDE 11
-#define AUGMENT 12
-#define REPLACE 13
-#define ALTERNATE 14
-
-#define VIRTUAL_MODS 20
-#define TYPE 21
-#define INTERPRET 22
-#define ACTION_TOK 23
-#define KEY 24
-#define ALIAS 25
-#define GROUP 26
-#define MODIFIER_MAP 27
-#define INDICATOR 28
-#define SHAPE 29
-#define KEYS 30
-#define ROW 31
-#define SECTION 32
-#define OVERLAY 33
-#define TEXT 34
-#define OUTLINE 35
-#define SOLID 36
-#define LOGO 37
-#define VIRTUAL 38
-
-#define EQUALS 40
-#define PLUS 41
-#define MINUS 42
-#define DIVIDE 43
-#define TIMES 44
-#define OBRACE 45
-#define CBRACE 46
-#define OPAREN 47
-#define CPAREN 48
-#define OBRACKET 49
-#define CBRACKET 50
-#define DOT 51
-#define COMMA 52
-#define SEMI 53
-#define EXCLAM 54
-#define INVERT 55
-
-#define STRING 60
-#define INTEGER 61
-#define FLOAT 62
-#define IDENT 63
-#define KEYNAME 64
-
-#define PARTIAL 70
-#define DEFAULT 71
-#define HIDDEN 72
-#define ALPHANUMERIC_KEYS 73
-#define MODIFIER_KEYS 74
-#define KEYPAD_KEYS 75
-#define FUNCTION_KEYS 76
-#define ALTERNATE_GROUP 77
-
-extern Atom tok_ONE_LEVEL;
-extern Atom tok_TWO_LEVEL;
-extern Atom tok_ALPHABETIC;
-extern Atom tok_KEYPAD;
-
-#endif
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+#ifndef TOKENS_H
+#define TOKENS_H 1
+
+#define END_OF_FILE 0
+#define ERROR_TOK 255
+
+#define XKB_KEYMAP 1
+#define XKB_KEYCODES 2
+#define XKB_TYPES 3
+#define XKB_SYMBOLS 4
+#define XKB_COMPATMAP 5
+#define XKB_GEOMETRY 6
+#define XKB_SEMANTICS 7
+#define XKB_LAYOUT 8
+
+#define INCLUDE 10
+#define OVERRIDE 11
+#define AUGMENT 12
+#define REPLACE 13
+#define ALTERNATE 14
+
+#define VIRTUAL_MODS 20
+#define TYPE 21
+#define INTERPRET 22
+#define ACTION_TOK 23
+#define KEY 24
+#define ALIAS 25
+#define GROUP 26
+#define MODIFIER_MAP 27
+#define INDICATOR 28
+#define SHAPE 29
+#define KEYS 30
+#define ROW 31
+#define SECTION 32
+#define OVERLAY 33
+#define TEXT 34
+#define OUTLINE 35
+#define SOLID 36
+#define LOGO 37
+#define VIRTUAL 38
+
+#define EQUALS 40
+#define PLUS 41
+#define MINUS 42
+#define DIVIDE 43
+#define TIMES 44
+#define OBRACE 45
+#define CBRACE 46
+#define OPAREN 47
+#define CPAREN 48
+#define OBRACKET 49
+#define CBRACKET 50
+#define DOT 51
+#define COMMA 52
+#define SEMI 53
+#define EXCLAM 54
+#define INVERT 55
+
+#define STRING 60
+#define INTEGER 61
+#define FLOAT 62
+#define IDENT 63
+#define KEYNAME 64
+
+#define PARTIAL 70
+#define DEFAULT 71
+#define HIDDEN 72
+#define ALPHANUMERIC_KEYS 73
+#define MODIFIER_KEYS 74
+#define KEYPAD_KEYS 75
+#define FUNCTION_KEYS 76
+#define ALTERNATE_GROUP 77
+
+extern Atom tok_ONE_LEVEL;
+extern Atom tok_TWO_LEVEL;
+extern Atom tok_ALPHABETIC;
+extern Atom tok_KEYPAD;
+
+#endif
diff --git a/xkbcomp/utils.c b/xkbcomp/utils.c
index 55efbe11f..cabe9e2b0 100644
--- a/xkbcomp/utils.c
+++ b/xkbcomp/utils.c
@@ -1,434 +1,434 @@
-
- /*\
- *
- * COPYRIGHT 1990
- * DIGITAL EQUIPMENT CORPORATION
- * MAYNARD, MASSACHUSETTS
- * ALL RIGHTS RESERVED.
- *
- * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
- * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
- * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
- * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
- * WARRANTY.
- *
- * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
- * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
- * ADDITION TO THAT SET FORTH ABOVE.
- *
- * 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 of Digital Equipment Corporation not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- \*/
-
-#include "utils.h"
-#include <ctype.h>
-#include <stdlib.h>
-#include <stdarg.h>
-
-/***====================================================================***/
-
-Opaque
-uAlloc(unsigned size)
-{
- return ((Opaque) malloc(size));
-}
-
-/***====================================================================***/
-
-Opaque
-uCalloc(unsigned n, unsigned size)
-{
- return ((Opaque) calloc(n, size));
-}
-
-/***====================================================================***/
-
-Opaque
-uRealloc(Opaque old, unsigned newSize)
-{
- if (old == NULL)
- return ((Opaque) malloc(newSize));
- else
- return ((Opaque) realloc((char *) old, newSize));
-}
-
-/***====================================================================***/
-
-Opaque
-uRecalloc(Opaque old, unsigned nOld, unsigned nNew, unsigned itemSize)
-{
- char *rtrn;
-
- if (old == NULL)
- rtrn = (char *) calloc(nNew, itemSize);
- else
- {
- rtrn = (char *) realloc((char *) old, nNew * itemSize);
- if ((rtrn) && (nNew > nOld))
- {
- bzero(&rtrn[nOld * itemSize], (nNew - nOld) * itemSize);
- }
- }
- return (Opaque) rtrn;
-}
-
-/***====================================================================***/
-
-void
-uFree(Opaque ptr)
-{
- if (ptr != (Opaque) NULL)
- free((char *) ptr);
- return;
-}
-
-/***====================================================================***/
-/*** FUNCTION ENTRY TRACKING ***/
-/***====================================================================***/
-
-static FILE *entryFile = NULL;
-int uEntryLevel;
-
-Boolean
-uSetEntryFile(char *name)
-{
- if ((entryFile != NULL) && (entryFile != stderr))
- {
- fprintf(entryFile, "switching to %s\n", name ? name : "stderr");
- fclose(entryFile);
- }
- if (name != NullString)
- entryFile = fopen(name, "w");
- else
- entryFile = stderr;
- if (entryFile == NULL)
- {
- entryFile = stderr;
- return (False);
- }
- return (True);
-}
-
-void
-uEntry(int l, char *s, ...)
-{
- int i;
- va_list args;
-
- for (i = 0; i < uEntryLevel; i++)
- {
- putc(' ', entryFile);
- }
- va_start(args, s);
- vfprintf(entryFile, s, args);
- va_end(args);
- uEntryLevel += l;
-}
-
-void
-uExit(int l, char *rtVal)
-{
- int i;
-
- uEntryLevel -= l;
- if (uEntryLevel < 0)
- uEntryLevel = 0;
- for (i = 0; i < uEntryLevel; i++)
- {
- putc(' ', entryFile);
- }
- fprintf(entryFile, "---> %p\n", rtVal);
- return;
-}
-
-/***====================================================================***/
-/*** PRINT FUNCTIONS ***/
-/***====================================================================***/
-
-FILE *uDebugFile = NULL;
-int uDebugIndentLevel = 0;
-int uDebugIndentSize = 4;
-
-Boolean
-uSetDebugFile(char *name)
-{
- if ((uDebugFile != NULL) && (uDebugFile != stderr))
- {
- fprintf(uDebugFile, "switching to %s\n", name ? name : "stderr");
- fclose(uDebugFile);
- }
- if (name != NullString)
- uDebugFile = fopen(name, "w");
- else
- uDebugFile = stderr;
- if (uDebugFile == NULL)
- {
- uDebugFile = stderr;
- return (False);
- }
- return (True);
-}
-
-void
-uDebug(char *s, ...)
-{
- int i;
- va_list args;
-
- for (i = (uDebugIndentLevel * uDebugIndentSize); i > 0; i--)
- {
- putc(' ', uDebugFile);
- }
- va_start(args, s);
- vfprintf(uDebugFile, s, args);
- va_end(args);
- fflush(uDebugFile);
-}
-
-void
-uDebugNOI(char *s, ...)
-{
- va_list args;
-
- va_start(args, s);
- vfprintf(uDebugFile, s, args);
- va_end(args);
- fflush(uDebugFile);
-}
-
-/***====================================================================***/
-
-static FILE *errorFile = NULL;
-static int outCount = 0;
-static char *preMsg = NULL;
-static char *postMsg = NULL;
-static char *prefix = NULL;
-
-Boolean
-uSetErrorFile(char *name)
-{
- if ((errorFile != NULL) && (errorFile != stderr))
- {
- fprintf(errorFile, "switching to %s\n", name ? name : "stderr");
- fclose(errorFile);
- }
- if (name != NullString)
- errorFile = fopen(name, "w");
- else
- errorFile = stderr;
- if (errorFile == NULL)
- {
- errorFile = stderr;
- return (False);
- }
- return (True);
-}
-
-void
-uInformation(const char *s, ...)
-{
- va_list args;
-
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fflush(errorFile);
-}
-
-/***====================================================================***/
-
-void
-uAction(const char *s, ...)
-{
- va_list args;
-
- if (prefix != NULL)
- fprintf(errorFile, "%s", prefix);
- fprintf(errorFile, " ");
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fflush(errorFile);
-}
-
-/***====================================================================***/
-
-void
-uWarning(const char *s, ...)
-{
- va_list args;
-
- if ((outCount == 0) && (preMsg != NULL))
- fprintf(errorFile, "%s\n", preMsg);
- if (prefix != NULL)
- fprintf(errorFile, "%s", prefix);
- fprintf(errorFile, "Warning: ");
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fflush(errorFile);
- outCount++;
-}
-
-/***====================================================================***/
-
-void
-uError(const char *s, ...)
-{
- va_list args;
-
- if ((outCount == 0) && (preMsg != NULL))
- fprintf(errorFile, "%s\n", preMsg);
- if (prefix != NULL)
- fprintf(errorFile, "%s", prefix);
- fprintf(errorFile, "Error: ");
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fflush(errorFile);
- outCount++;
-}
-
-/***====================================================================***/
-
-void
-uFatalError(const char *s, ...)
-{
- va_list args;
-
- if ((outCount == 0) && (preMsg != NULL))
- fprintf(errorFile, "%s\n", preMsg);
- if (prefix != NULL)
- fprintf(errorFile, "%s", prefix);
- fprintf(errorFile, "Fatal Error: ");
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fprintf(errorFile, " Exiting\n");
- fflush(errorFile);
- outCount++;
- exit(1);
- /* NOTREACHED */
-}
-
-/***====================================================================***/
-
-void
-uInternalError(const char *s, ...)
-{
- va_list args;
-
- if ((outCount == 0) && (preMsg != NULL))
- fprintf(errorFile, "%s\n", preMsg);
- if (prefix != NULL)
- fprintf(errorFile, "%s", prefix);
- fprintf(errorFile, "Internal error: ");
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fflush(errorFile);
- outCount++;
-}
-
-void
-uSetPreErrorMessage(char *msg)
-{
- outCount = 0;
- preMsg = msg;
- return;
-}
-
-void
-uSetPostErrorMessage(char *msg)
-{
- postMsg = msg;
- return;
-}
-
-void
-uSetErrorPrefix(char *pre)
-{
- prefix = pre;
- return;
-}
-
-void
-uFinishUp(void)
-{
- if ((outCount > 0) && (postMsg != NULL))
- fprintf(errorFile, "%s\n", postMsg);
- return;
-}
-
-/***====================================================================***/
-
-#ifndef HAVE_STRDUP
-char *
-uStringDup(const char *str)
-{
- char *rtrn;
-
- if (str == NULL)
- return NULL;
- rtrn = (char *) uAlloc(strlen(str) + 1);
- strcpy(rtrn, str);
- return rtrn;
-}
-#endif
-
-#ifndef HAVE_STRCASECMP
-int
-uStrCaseCmp(const char *str1, const char *str2)
-{
- char buf1[512], buf2[512];
- char c, *s;
- register int n;
-
- for (n = 0, s = buf1; (c = *str1++); n++)
- {
- if (isupper(c))
- c = tolower(c);
- if (n > 510)
- break;
- *s++ = c;
- }
- *s = '\0';
- for (n = 0, s = buf2; (c = *str2++); n++)
- {
- if (isupper(c))
- c = tolower(c);
- if (n > 510)
- break;
- *s++ = c;
- }
- *s = '\0';
- return (strcmp(buf1, buf2));
-}
-
-int
-uStrCasePrefix(const char *my_prefix, char *str)
-{
- char c1;
- char c2;
- while (((c1 = *my_prefix) != '\0') && ((c2 = *str) != '\0'))
- {
- if (isupper(c1))
- c1 = tolower(c1);
- if (isupper(c2))
- c2 = tolower(c2);
- if (c1 != c2)
- return 0;
- my_prefix++;
- str++;
- }
- if (c1 != '\0')
- return 0;
- return 1;
-}
-
-#endif
+
+ /*\
+ *
+ * COPYRIGHT 1990
+ * DIGITAL EQUIPMENT CORPORATION
+ * MAYNARD, MASSACHUSETTS
+ * ALL RIGHTS RESERVED.
+ *
+ * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
+ * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
+ * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
+ * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
+ * WARRANTY.
+ *
+ * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
+ * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
+ * ADDITION TO THAT SET FORTH ABOVE.
+ *
+ * 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 of Digital Equipment Corporation not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ \*/
+
+#include "utils.h"
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+/***====================================================================***/
+
+Opaque
+uAlloc(unsigned size)
+{
+ return ((Opaque) malloc(size));
+}
+
+/***====================================================================***/
+
+Opaque
+uCalloc(unsigned n, unsigned size)
+{
+ return ((Opaque) calloc(n, size));
+}
+
+/***====================================================================***/
+
+Opaque
+uRealloc(Opaque old, unsigned newSize)
+{
+ if (old == NULL)
+ return ((Opaque) malloc(newSize));
+ else
+ return ((Opaque) realloc((char *) old, newSize));
+}
+
+/***====================================================================***/
+
+Opaque
+uRecalloc(Opaque old, unsigned nOld, unsigned nNew, unsigned itemSize)
+{
+ char *rtrn;
+
+ if (old == NULL)
+ rtrn = (char *) calloc(nNew, itemSize);
+ else
+ {
+ rtrn = (char *) realloc((char *) old, nNew * itemSize);
+ if ((rtrn) && (nNew > nOld))
+ {
+ bzero(&rtrn[nOld * itemSize], (nNew - nOld) * itemSize);
+ }
+ }
+ return (Opaque) rtrn;
+}
+
+/***====================================================================***/
+
+void
+uFree(Opaque ptr)
+{
+ if (ptr != (Opaque) NULL)
+ free((char *) ptr);
+ return;
+}
+
+/***====================================================================***/
+/*** FUNCTION ENTRY TRACKING ***/
+/***====================================================================***/
+
+static FILE *entryFile = NULL;
+int uEntryLevel;
+
+Boolean
+uSetEntryFile(char *name)
+{
+ if ((entryFile != NULL) && (entryFile != stderr))
+ {
+ fprintf(entryFile, "switching to %s\n", name ? name : "stderr");
+ fclose(entryFile);
+ }
+ if (name != NullString)
+ entryFile = fopen(name, "w");
+ else
+ entryFile = stderr;
+ if (entryFile == NULL)
+ {
+ entryFile = stderr;
+ return (False);
+ }
+ return (True);
+}
+
+void
+uEntry(int l, char *s, ...)
+{
+ int i;
+ va_list args;
+
+ for (i = 0; i < uEntryLevel; i++)
+ {
+ putc(' ', entryFile);
+ }
+ va_start(args, s);
+ vfprintf(entryFile, s, args);
+ va_end(args);
+ uEntryLevel += l;
+}
+
+void
+uExit(int l, char *rtVal)
+{
+ int i;
+
+ uEntryLevel -= l;
+ if (uEntryLevel < 0)
+ uEntryLevel = 0;
+ for (i = 0; i < uEntryLevel; i++)
+ {
+ putc(' ', entryFile);
+ }
+ fprintf(entryFile, "---> %p\n", rtVal);
+ return;
+}
+
+/***====================================================================***/
+/*** PRINT FUNCTIONS ***/
+/***====================================================================***/
+
+FILE *uDebugFile = NULL;
+int uDebugIndentLevel = 0;
+int uDebugIndentSize = 4;
+
+Boolean
+uSetDebugFile(char *name)
+{
+ if ((uDebugFile != NULL) && (uDebugFile != stderr))
+ {
+ fprintf(uDebugFile, "switching to %s\n", name ? name : "stderr");
+ fclose(uDebugFile);
+ }
+ if (name != NullString)
+ uDebugFile = fopen(name, "w");
+ else
+ uDebugFile = stderr;
+ if (uDebugFile == NULL)
+ {
+ uDebugFile = stderr;
+ return (False);
+ }
+ return (True);
+}
+
+void
+uDebug(char *s, ...)
+{
+ int i;
+ va_list args;
+
+ for (i = (uDebugIndentLevel * uDebugIndentSize); i > 0; i--)
+ {
+ putc(' ', uDebugFile);
+ }
+ va_start(args, s);
+ vfprintf(uDebugFile, s, args);
+ va_end(args);
+ fflush(uDebugFile);
+}
+
+void
+uDebugNOI(char *s, ...)
+{
+ va_list args;
+
+ va_start(args, s);
+ vfprintf(uDebugFile, s, args);
+ va_end(args);
+ fflush(uDebugFile);
+}
+
+/***====================================================================***/
+
+static FILE *errorFile = NULL;
+static int outCount = 0;
+static char *preMsg = NULL;
+static char *postMsg = NULL;
+static char *prefix = NULL;
+
+Boolean
+uSetErrorFile(char *name)
+{
+ if ((errorFile != NULL) && (errorFile != stderr))
+ {
+ fprintf(errorFile, "switching to %s\n", name ? name : "stderr");
+ fclose(errorFile);
+ }
+ if (name != NullString)
+ errorFile = fopen(name, "w");
+ else
+ errorFile = stderr;
+ if (errorFile == NULL)
+ {
+ errorFile = stderr;
+ return (False);
+ }
+ return (True);
+}
+
+void
+uInformation(const char *s, ...)
+{
+ va_list args;
+
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fflush(errorFile);
+}
+
+/***====================================================================***/
+
+void
+uAction(const char *s, ...)
+{
+ va_list args;
+
+ if (prefix != NULL)
+ fprintf(errorFile, "%s", prefix);
+ fprintf(errorFile, " ");
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fflush(errorFile);
+}
+
+/***====================================================================***/
+
+void
+uWarning(const char *s, ...)
+{
+ va_list args;
+
+ if ((outCount == 0) && (preMsg != NULL))
+ fprintf(errorFile, "%s\n", preMsg);
+ if (prefix != NULL)
+ fprintf(errorFile, "%s", prefix);
+ fprintf(errorFile, "Warning: ");
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fflush(errorFile);
+ outCount++;
+}
+
+/***====================================================================***/
+
+void
+uError(const char *s, ...)
+{
+ va_list args;
+
+ if ((outCount == 0) && (preMsg != NULL))
+ fprintf(errorFile, "%s\n", preMsg);
+ if (prefix != NULL)
+ fprintf(errorFile, "%s", prefix);
+ fprintf(errorFile, "Error: ");
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fflush(errorFile);
+ outCount++;
+}
+
+/***====================================================================***/
+
+void
+uFatalError(const char *s, ...)
+{
+ va_list args;
+
+ if ((outCount == 0) && (preMsg != NULL))
+ fprintf(errorFile, "%s\n", preMsg);
+ if (prefix != NULL)
+ fprintf(errorFile, "%s", prefix);
+ fprintf(errorFile, "Fatal Error: ");
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fprintf(errorFile, " Exiting\n");
+ fflush(errorFile);
+ outCount++;
+ exit(1);
+ /* NOTREACHED */
+}
+
+/***====================================================================***/
+
+void
+uInternalError(const char *s, ...)
+{
+ va_list args;
+
+ if ((outCount == 0) && (preMsg != NULL))
+ fprintf(errorFile, "%s\n", preMsg);
+ if (prefix != NULL)
+ fprintf(errorFile, "%s", prefix);
+ fprintf(errorFile, "Internal error: ");
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fflush(errorFile);
+ outCount++;
+}
+
+void
+uSetPreErrorMessage(char *msg)
+{
+ outCount = 0;
+ preMsg = msg;
+ return;
+}
+
+void
+uSetPostErrorMessage(char *msg)
+{
+ postMsg = msg;
+ return;
+}
+
+void
+uSetErrorPrefix(char *pre)
+{
+ prefix = pre;
+ return;
+}
+
+void
+uFinishUp(void)
+{
+ if ((outCount > 0) && (postMsg != NULL))
+ fprintf(errorFile, "%s\n", postMsg);
+ return;
+}
+
+/***====================================================================***/
+
+#ifndef HAVE_STRDUP
+char *
+uStringDup(const char *str)
+{
+ char *rtrn;
+
+ if (str == NULL)
+ return NULL;
+ rtrn = (char *) uAlloc(strlen(str) + 1);
+ strcpy(rtrn, str);
+ return rtrn;
+}
+#endif
+
+#ifndef HAVE_STRCASECMP
+int
+uStrCaseCmp(const char *str1, const char *str2)
+{
+ char buf1[512], buf2[512];
+ char c, *s;
+ register int n;
+
+ for (n = 0, s = buf1; (c = *str1++); n++)
+ {
+ if (isupper(c))
+ c = tolower(c);
+ if (n > 510)
+ break;
+ *s++ = c;
+ }
+ *s = '\0';
+ for (n = 0, s = buf2; (c = *str2++); n++)
+ {
+ if (isupper(c))
+ c = tolower(c);
+ if (n > 510)
+ break;
+ *s++ = c;
+ }
+ *s = '\0';
+ return (strcmp(buf1, buf2));
+}
+
+int
+uStrCasePrefix(const char *my_prefix, char *str)
+{
+ char c1;
+ char c2;
+ while (((c1 = *my_prefix) != '\0') && ((c2 = *str) != '\0'))
+ {
+ if (isupper(c1))
+ c1 = tolower(c1);
+ if (isupper(c2))
+ c2 = tolower(c2);
+ if (c1 != c2)
+ return 0;
+ my_prefix++;
+ str++;
+ }
+ if (c1 != '\0')
+ return 0;
+ return 1;
+}
+
+#endif
diff --git a/xkbcomp/vmod.c b/xkbcomp/vmod.c
index 5578fd01f..8d08a9ba1 100644
--- a/xkbcomp/vmod.c
+++ b/xkbcomp/vmod.c
@@ -1,271 +1,271 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#define DEBUG_VAR debugFlags
-#include <stdio.h>
-#include "xkbcomp.h"
-#include "tokens.h"
-#include "expr.h"
-#include "misc.h"
-
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-
-#include "vmod.h"
-
-void
-InitVModInfo(VModInfo * info, XkbDescPtr xkb)
-{
- ClearVModInfo(info, xkb);
- info->errorCount = 0;
- return;
-}
-
-void
-ClearVModInfo(VModInfo * info, XkbDescPtr xkb)
-{
- register int i;
-
- if (XkbAllocNames(xkb, XkbVirtualModNamesMask, 0, 0) != Success)
- return;
- if (XkbAllocServerMap(xkb, XkbVirtualModsMask, 0) != Success)
- return;
- info->xkb = xkb;
- info->newlyDefined = info->defined = info->available = 0;
- if (xkb && xkb->names)
- {
- register int bit;
- for (i = 0, bit = 1; i < XkbNumVirtualMods; i++, bit <<= 1)
- {
- if (xkb->names->vmods[i] != None)
- info->defined |= bit;
- }
- }
- return;
-}
-
-/***====================================================================***/
-
-/**
- * Handle one entry in the virtualModifiers line (e.g. NumLock).
- * If the entry is e.g. NumLock=Mod1, stmt->value is not NULL, and the
- * XkbServerMap's vmod is set to the given modifier. Otherwise, the vmod is 0.
- *
- * @param stmt The statement specifying the name and (if any the value).
- * @param mergeMode Merge strategy (e.g. MergeOverride)
- */
-Bool
-HandleVModDef(VModDef * stmt, unsigned mergeMode, VModInfo * info)
-{
- register int i, bit, nextFree;
- ExprResult mod;
- XkbServerMapPtr srv;
- XkbNamesPtr names;
- Atom stmtName;
-
- srv = info->xkb->server;
- names = info->xkb->names;
- stmtName =
- XkbInternAtom(info->xkb->dpy, XkbAtomGetString(NULL, stmt->name),
- False);
- for (i = 0, bit = 1, nextFree = -1; i < XkbNumVirtualMods; i++, bit <<= 1)
- {
- if (info->defined & bit)
- {
- if (names->vmods[i] == stmtName)
- { /* already defined */
- info->available |= bit;
- if (stmt->value == NULL)
- return True;
- else
- {
- char *str1;
- const char *str2 = "";
- if (!ExprResolveModMask(stmt->value, &mod, NULL, NULL))
- {
- str1 = XkbAtomText(NULL, stmt->name, XkbMessage);
- ACTION1("Declaration of %s ignored\n", str1);
- return False;
- }
- if (mod.uval == srv->vmods[i])
- return True;
-
- str1 = XkbAtomText(NULL, stmt->name, XkbMessage);
- WARN1("Virtual modifier %s multiply defined\n", str1);
- str1 = XkbModMaskText(srv->vmods[i], XkbCFile);
- if (mergeMode == MergeOverride)
- {
- str2 = str1;
- str1 = XkbModMaskText(mod.uval, XkbCFile);
- }
- ACTION2("Using %s, ignoring %s\n", str1, str2);
- if (mergeMode == MergeOverride)
- srv->vmods[i] = mod.uval;
- return True;
- }
- }
- }
- else if (nextFree < 0)
- nextFree = i;
- }
- if (nextFree < 0)
- {
- ERROR1("Too many virtual modifiers defined (maximum %d)\n",
- XkbNumVirtualMods);
- ACTION("Exiting\n");
- return False;
- }
- info->defined |= (1 << nextFree);
- info->newlyDefined |= (1 << nextFree);
- info->available |= (1 << nextFree);
- names->vmods[nextFree] = stmtName;
- if (stmt->value == NULL)
- return True;
- if (ExprResolveModMask(stmt->value, &mod, NULL, NULL))
- {
- srv->vmods[nextFree] = mod.uval;
- return True;
- }
- ACTION1("Declaration of %s ignored\n",
- XkbAtomText(NULL, stmt->name, XkbMessage));
- return False;
-}
-
-/**
- * Returns the index of the given modifier in the xkb->names->vmods array.
- *
- * @param priv Pointer to the xkb data structure.
- * @param elem Must be None, otherwise return False.
- * @param field The Atom of the modifier's name (e.g. Atom for LAlt)
- * @param type Must be TypeInt, otherwise return False.
- * @param val_rtrn Set to the index of the modifier that matches.
- *
- * @return True on success, False otherwise. If False is returned, val_rtrn is
- * undefined.
- */
-int
-LookupVModIndex(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- register int i;
- register char *fieldStr;
- register char *modStr;
- XkbDescPtr xkb;
-
- xkb = (XkbDescPtr) priv;
- if ((xkb == NULL) || (xkb->names == NULL) || (elem != None)
- || (type != TypeInt))
- {
- return False;
- }
- /* get the actual name */
- fieldStr = XkbAtomGetString(xkb->dpy, field);
- if (fieldStr == NULL)
- return False;
- /* For each named modifier, get the name and compare it to the one passed
- * in. If we get a match, return the index of the modifier.
- * The order of modifiers is the same as in the virtual_modifiers line in
- * the xkb_types section.
- */
- for (i = 0; i < XkbNumVirtualMods; i++)
- {
- modStr = XkbAtomGetString(xkb->dpy, xkb->names->vmods[i]);
- if ((modStr != NULL) && (uStrCaseCmp(fieldStr, modStr) == 0))
- {
- val_rtrn->uval = i;
- return True;
- }
- }
- return False;
-}
-
-/**
- * Get the mask for the given modifier and set val_rtrn.uval to the mask.
- * Note that the mask returned is always > 512.
- *
- * @param priv Pointer to xkb data structure.
- * @param val_rtrn Set to the mask returned.
- *
- * @return True on success, False otherwise. If False is returned, val_rtrn is
- * undefined.
- */
-int
-LookupVModMask(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- if (LookupVModIndex(priv, elem, field, type, val_rtrn))
- {
- register unsigned ndx = val_rtrn->uval;
- val_rtrn->uval = (1 << (XkbNumModifiers + ndx));
- return True;
- }
- return False;
-}
-
-int
-FindKeypadVMod(XkbDescPtr xkb)
-{
- Atom name;
- ExprResult rtrn;
-
- name = XkbInternAtom(xkb->dpy, "NumLock", False);
- if ((xkb) && LookupVModIndex((XPointer) xkb, None, name, TypeInt, &rtrn))
- {
- return rtrn.ival;
- }
- return -1;
-}
-
-Bool
-ResolveVirtualModifier(ExprDef * def, ExprResult * val_rtrn, VModInfo * info)
-{
- XkbNamesPtr names;
-
- names = info->xkb->names;
- if (def->op == ExprIdent)
- {
- register int i, bit;
- for (i = 0, bit = 1; i < XkbNumVirtualMods; i++, bit <<= 1)
- {
- char *str1, *str2;
- str1 = XkbAtomGetString(info->xkb->dpy, names->vmods[i]);
- str2 = XkbAtomGetString(NULL, def->value.str);
- if ((info->available & bit) && (uStrCaseCmp(str1, str2) == Equal))
- {
- val_rtrn->uval = i;
- return True;
- }
- }
- }
- if (ExprResolveInteger(def, val_rtrn, NULL, NULL))
- {
- if (val_rtrn->uval < XkbNumVirtualMods)
- return True;
- ERROR2("Illegal virtual modifier %d (must be 0..%d inclusive)\n",
- val_rtrn->uval, XkbNumVirtualMods - 1);
- }
- return False;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#define DEBUG_VAR debugFlags
+#include <stdio.h>
+#include "xkbcomp.h"
+#include "tokens.h"
+#include "expr.h"
+#include "misc.h"
+
+#include <X11/extensions/XKB.h>
+#include <X11/extensions/XKBstr.h>
+
+#include "vmod.h"
+
+void
+InitVModInfo(VModInfo * info, XkbDescPtr xkb)
+{
+ ClearVModInfo(info, xkb);
+ info->errorCount = 0;
+ return;
+}
+
+void
+ClearVModInfo(VModInfo * info, XkbDescPtr xkb)
+{
+ register int i;
+
+ if (XkbAllocNames(xkb, XkbVirtualModNamesMask, 0, 0) != Success)
+ return;
+ if (XkbAllocServerMap(xkb, XkbVirtualModsMask, 0) != Success)
+ return;
+ info->xkb = xkb;
+ info->newlyDefined = info->defined = info->available = 0;
+ if (xkb && xkb->names)
+ {
+ register int bit;
+ for (i = 0, bit = 1; i < XkbNumVirtualMods; i++, bit <<= 1)
+ {
+ if (xkb->names->vmods[i] != None)
+ info->defined |= bit;
+ }
+ }
+ return;
+}
+
+/***====================================================================***/
+
+/**
+ * Handle one entry in the virtualModifiers line (e.g. NumLock).
+ * If the entry is e.g. NumLock=Mod1, stmt->value is not NULL, and the
+ * XkbServerMap's vmod is set to the given modifier. Otherwise, the vmod is 0.
+ *
+ * @param stmt The statement specifying the name and (if any the value).
+ * @param mergeMode Merge strategy (e.g. MergeOverride)
+ */
+Bool
+HandleVModDef(VModDef * stmt, unsigned mergeMode, VModInfo * info)
+{
+ register int i, bit, nextFree;
+ ExprResult mod;
+ XkbServerMapPtr srv;
+ XkbNamesPtr names;
+ Atom stmtName;
+
+ srv = info->xkb->server;
+ names = info->xkb->names;
+ stmtName =
+ XkbInternAtom(info->xkb->dpy, XkbAtomGetString(NULL, stmt->name),
+ False);
+ for (i = 0, bit = 1, nextFree = -1; i < XkbNumVirtualMods; i++, bit <<= 1)
+ {
+ if (info->defined & bit)
+ {
+ if (names->vmods[i] == stmtName)
+ { /* already defined */
+ info->available |= bit;
+ if (stmt->value == NULL)
+ return True;
+ else
+ {
+ char *str1;
+ const char *str2 = "";
+ if (!ExprResolveModMask(stmt->value, &mod, NULL, NULL))
+ {
+ str1 = XkbAtomText(NULL, stmt->name, XkbMessage);
+ ACTION1("Declaration of %s ignored\n", str1);
+ return False;
+ }
+ if (mod.uval == srv->vmods[i])
+ return True;
+
+ str1 = XkbAtomText(NULL, stmt->name, XkbMessage);
+ WARN1("Virtual modifier %s multiply defined\n", str1);
+ str1 = XkbModMaskText(srv->vmods[i], XkbCFile);
+ if (mergeMode == MergeOverride)
+ {
+ str2 = str1;
+ str1 = XkbModMaskText(mod.uval, XkbCFile);
+ }
+ ACTION2("Using %s, ignoring %s\n", str1, str2);
+ if (mergeMode == MergeOverride)
+ srv->vmods[i] = mod.uval;
+ return True;
+ }
+ }
+ }
+ else if (nextFree < 0)
+ nextFree = i;
+ }
+ if (nextFree < 0)
+ {
+ ERROR1("Too many virtual modifiers defined (maximum %d)\n",
+ XkbNumVirtualMods);
+ ACTION("Exiting\n");
+ return False;
+ }
+ info->defined |= (1 << nextFree);
+ info->newlyDefined |= (1 << nextFree);
+ info->available |= (1 << nextFree);
+ names->vmods[nextFree] = stmtName;
+ if (stmt->value == NULL)
+ return True;
+ if (ExprResolveModMask(stmt->value, &mod, NULL, NULL))
+ {
+ srv->vmods[nextFree] = mod.uval;
+ return True;
+ }
+ ACTION1("Declaration of %s ignored\n",
+ XkbAtomText(NULL, stmt->name, XkbMessage));
+ return False;
+}
+
+/**
+ * Returns the index of the given modifier in the xkb->names->vmods array.
+ *
+ * @param priv Pointer to the xkb data structure.
+ * @param elem Must be None, otherwise return False.
+ * @param field The Atom of the modifier's name (e.g. Atom for LAlt)
+ * @param type Must be TypeInt, otherwise return False.
+ * @param val_rtrn Set to the index of the modifier that matches.
+ *
+ * @return True on success, False otherwise. If False is returned, val_rtrn is
+ * undefined.
+ */
+int
+LookupVModIndex(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ register int i;
+ register char *fieldStr;
+ register char *modStr;
+ XkbDescPtr xkb;
+
+ xkb = (XkbDescPtr) priv;
+ if ((xkb == NULL) || (xkb->names == NULL) || (elem != None)
+ || (type != TypeInt))
+ {
+ return False;
+ }
+ /* get the actual name */
+ fieldStr = XkbAtomGetString(xkb->dpy, field);
+ if (fieldStr == NULL)
+ return False;
+ /* For each named modifier, get the name and compare it to the one passed
+ * in. If we get a match, return the index of the modifier.
+ * The order of modifiers is the same as in the virtual_modifiers line in
+ * the xkb_types section.
+ */
+ for (i = 0; i < XkbNumVirtualMods; i++)
+ {
+ modStr = XkbAtomGetString(xkb->dpy, xkb->names->vmods[i]);
+ if ((modStr != NULL) && (uStrCaseCmp(fieldStr, modStr) == 0))
+ {
+ val_rtrn->uval = i;
+ return True;
+ }
+ }
+ return False;
+}
+
+/**
+ * Get the mask for the given modifier and set val_rtrn.uval to the mask.
+ * Note that the mask returned is always > 512.
+ *
+ * @param priv Pointer to xkb data structure.
+ * @param val_rtrn Set to the mask returned.
+ *
+ * @return True on success, False otherwise. If False is returned, val_rtrn is
+ * undefined.
+ */
+int
+LookupVModMask(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ if (LookupVModIndex(priv, elem, field, type, val_rtrn))
+ {
+ register unsigned ndx = val_rtrn->uval;
+ val_rtrn->uval = (1 << (XkbNumModifiers + ndx));
+ return True;
+ }
+ return False;
+}
+
+int
+FindKeypadVMod(XkbDescPtr xkb)
+{
+ Atom name;
+ ExprResult rtrn;
+
+ name = XkbInternAtom(xkb->dpy, "NumLock", False);
+ if ((xkb) && LookupVModIndex((XPointer) xkb, None, name, TypeInt, &rtrn))
+ {
+ return rtrn.ival;
+ }
+ return -1;
+}
+
+Bool
+ResolveVirtualModifier(ExprDef * def, ExprResult * val_rtrn, VModInfo * info)
+{
+ XkbNamesPtr names;
+
+ names = info->xkb->names;
+ if (def->op == ExprIdent)
+ {
+ register int i, bit;
+ for (i = 0, bit = 1; i < XkbNumVirtualMods; i++, bit <<= 1)
+ {
+ char *str1, *str2;
+ str1 = XkbAtomGetString(info->xkb->dpy, names->vmods[i]);
+ str2 = XkbAtomGetString(NULL, def->value.str);
+ if ((info->available & bit) && (uStrCaseCmp(str1, str2) == Equal))
+ {
+ val_rtrn->uval = i;
+ return True;
+ }
+ }
+ }
+ if (ExprResolveInteger(def, val_rtrn, NULL, NULL))
+ {
+ if (val_rtrn->uval < XkbNumVirtualMods)
+ return True;
+ ERROR2("Illegal virtual modifier %d (must be 0..%d inclusive)\n",
+ val_rtrn->uval, XkbNumVirtualMods - 1);
+ }
+ return False;
+}
diff --git a/xkbcomp/vmod.h b/xkbcomp/vmod.h
index 559b9d504..61bfc6a24 100644
--- a/xkbcomp/vmod.h
+++ b/xkbcomp/vmod.h
@@ -1,78 +1,78 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#ifndef VMOD_H
-#define VMOD_H 1
-
-typedef struct _VModInfo
-{
- XkbDescPtr xkb;
- unsigned defined;
- unsigned available;
- unsigned newlyDefined;
- int errorCount;
-} VModInfo;
-
-extern void InitVModInfo(VModInfo * /* info */ ,
- XkbDescPtr /* xkb */
- );
-
-extern void ClearVModInfo(VModInfo * /* info */ ,
- XkbDescPtr /* xkb */
- );
-
-extern Bool HandleVModDef(VModDef * /* stmt */ ,
- unsigned /* mergeMode */ ,
- VModInfo * /* info */
- );
-
-extern Bool ApplyVModDefs(VModInfo * /* info */ ,
- XkbDescPtr /* xkb */
- );
-
-extern int LookupVModIndex(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int LookupVModMask(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int FindKeypadVMod(XkbDescPtr /* xkb */
- );
-
-extern Bool ResolveVirtualModifier(ExprDef * /* def */ ,
- ExprResult * /* value_rtrn */ ,
- VModInfo * /* info */
- );
-
-#endif /* VMOD_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#ifndef VMOD_H
+#define VMOD_H 1
+
+typedef struct _VModInfo
+{
+ XkbDescPtr xkb;
+ unsigned defined;
+ unsigned available;
+ unsigned newlyDefined;
+ int errorCount;
+} VModInfo;
+
+extern void InitVModInfo(VModInfo * /* info */ ,
+ XkbDescPtr /* xkb */
+ );
+
+extern void ClearVModInfo(VModInfo * /* info */ ,
+ XkbDescPtr /* xkb */
+ );
+
+extern Bool HandleVModDef(VModDef * /* stmt */ ,
+ unsigned /* mergeMode */ ,
+ VModInfo * /* info */
+ );
+
+extern Bool ApplyVModDefs(VModInfo * /* info */ ,
+ XkbDescPtr /* xkb */
+ );
+
+extern int LookupVModIndex(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int LookupVModMask(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int FindKeypadVMod(XkbDescPtr /* xkb */
+ );
+
+extern Bool ResolveVirtualModifier(ExprDef * /* def */ ,
+ ExprResult * /* value_rtrn */ ,
+ VModInfo * /* info */
+ );
+
+#endif /* VMOD_H */
diff --git a/xkbcomp/xkbpath.c b/xkbcomp/xkbpath.c
index f5b21e6b8..5bb4ddc04 100644
--- a/xkbcomp/xkbpath.c
+++ b/xkbcomp/xkbpath.c
@@ -1,421 +1,421 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#include <X11/Xlib.h>
-#include <X11/XKBlib.h>
-
-#define DEBUG_VAR debugFlags
-#include "utils.h"
-#include <stdlib.h>
-#include <unistd.h>
-#include <X11/extensions/XKM.h>
-#include "xkbpath.h"
-
-#ifndef DFLT_XKB_CONFIG_ROOT
-#define DFLT_XKB_CONFIG_ROOT "xkbdata"
-#endif
-
-#ifndef PATH_MAX
-#define PATH_MAX 1024
-#endif
-
-#define PATH_CHUNK 8 /* initial szPath */
-
-static Bool noDefaultPath = False;
-static int szPath; /* number of entries allocated for includePath */
-static int nPathEntries; /* number of actual entries in includePath */
-static char **includePath; /* Holds all directories we might be including data from */
-
-/**
- * Extract the first token from an include statement.
- * @param str_inout Input statement, modified in-place. Can be passed in
- * repeatedly. If str_inout is NULL, the parsing has completed.
- * @param file_rtrn Set to the include file to be used.
- * @param map_rtrn Set to whatever comes after ), if any.
- * @param nextop_rtrn Set to the next operation in the complete statement.
- * @param extra_data Set to the string between ( and ), if any.
- *
- * @return True if parsing was succcessful, False for an illegal string.
- *
- * Example: "evdev+aliases(qwerty)"
- * str_inout = aliases(qwerty)
- * nextop_retrn = +
- * extra_data = NULL
- * file_rtrn = evdev
- * map_rtrn = NULL
- *
- * 2nd run with "aliases(qwerty)"
- * str_inout = NULL
- * file_rtrn = aliases
- * map_rtrn = qwerty
- * extra_data = NULL
- * nextop_retrn = ""
- *
- */
-Bool
-XkbParseIncludeMap(char **str_inout, char **file_rtrn, char **map_rtrn,
- char *nextop_rtrn, char **extra_data)
-{
- char *tmp, *str, *next;
-
- str = *str_inout;
- if ((*str == '+') || (*str == '|'))
- {
- *file_rtrn = *map_rtrn = NULL;
- *nextop_rtrn = *str;
- next = str + 1;
- }
- else if (*str == '%')
- {
- *file_rtrn = *map_rtrn = NULL;
- *nextop_rtrn = str[1];
- next = str + 2;
- }
- else
- {
- /* search for tokens inside the string */
- next = strpbrk(str, "|+");
- if (next)
- {
- /* set nextop_rtrn to \0, next to next character */
- *nextop_rtrn = *next;
- *next++ = '\0';
- }
- else
- {
- *nextop_rtrn = '\0';
- next = NULL;
- }
- /* search for :, store result in extra_data */
- tmp = strchr(str, ':');
- if (tmp != NULL)
- {
- *tmp++ = '\0';
- *extra_data = uStringDup(tmp);
- }
- else
- {
- *extra_data = NULL;
- }
- tmp = strchr(str, '(');
- if (tmp == NULL)
- {
- *file_rtrn = uStringDup(str);
- *map_rtrn = NULL;
- }
- else if (str[0] == '(')
- {
- uFree(*extra_data);
- return False;
- }
- else
- {
- *tmp++ = '\0';
- *file_rtrn = uStringDup(str);
- str = tmp;
- tmp = strchr(str, ')');
- if ((tmp == NULL) || (tmp[1] != '\0'))
- {
- uFree(*file_rtrn);
- uFree(*extra_data);
- return False;
- }
- *tmp++ = '\0';
- *map_rtrn = uStringDup(str);
- }
- }
- if (*nextop_rtrn == '\0')
- *str_inout = NULL;
- else if ((*nextop_rtrn == '|') || (*nextop_rtrn == '+'))
- *str_inout = next;
- else
- return False;
- return True;
-}
-
-/**
- * Init memory for include paths.
- */
-Bool
-XkbInitIncludePath(void)
-{
- szPath = PATH_CHUNK;
- includePath = (char **) calloc(szPath, sizeof(char *));
- if (includePath == NULL)
- return False;
- return True;
-}
-
-void
-XkbAddDefaultDirectoriesToPath(void)
-{
- if (noDefaultPath)
- return;
- XkbAddDirectoryToPath(DFLT_XKB_CONFIG_ROOT);
-}
-
-/**
- * Remove all entries from the global includePath.
- */
-void
-XkbClearIncludePath(void)
-{
- register int i;
-
- if (szPath > 0)
- {
- for (i = 0; i < nPathEntries; i++)
- {
- if (includePath[i] != NULL)
- {
- uFree(includePath[i]);
- includePath[i] = NULL;
- }
- }
- nPathEntries = 0;
- }
- noDefaultPath = True;
- return;
-}
-
-/**
- * Add the given path to the global includePath variable.
- * If dir is NULL, the includePath is emptied.
- */
-Bool
-XkbAddDirectoryToPath(const char *dir)
-{
- int len;
- if ((dir == NULL) || (dir[0] == '\0'))
- {
- XkbClearIncludePath();
- return True;
- }
-#ifdef __UNIXOS2__
- dir = (char *) __XOS2RedirRoot(dir);
-#endif
- len = strlen(dir);
- if (len + 2 >= PATH_MAX)
- { /* allow for '/' and at least one character */
- ERROR2("Path entry (%s) too long (maxiumum length is %d)\n",
- dir, PATH_MAX - 3);
- return False;
- }
- if (nPathEntries >= szPath)
- {
- szPath += PATH_CHUNK;
- includePath = (char **) realloc(includePath, szPath * sizeof(char *));
- if (includePath == NULL)
- {
- WSGO("Allocation failed (includePath)\n");
- return False;
- }
- }
- includePath[nPathEntries] =
- (char *) calloc(strlen(dir) + 1, sizeof(char));
- if (includePath[nPathEntries] == NULL)
- {
- WSGO1("Allocation failed (includePath[%d])\n", nPathEntries);
- return False;
- }
- strcpy(includePath[nPathEntries++], dir);
- return True;
-}
-
-/***====================================================================***/
-
-/**
- * Return the xkb directory based on the type.
- * Do not free the memory returned by this function.
- */
-char *
-XkbDirectoryForInclude(unsigned type)
-{
- static char buf[32];
-
- switch (type)
- {
- case XkmSemanticsFile:
- strcpy(buf, "semantics");
- break;
- case XkmLayoutFile:
- strcpy(buf, "layout");
- break;
- case XkmKeymapFile:
- strcpy(buf, "keymap");
- break;
- case XkmKeyNamesIndex:
- strcpy(buf, "keycodes");
- break;
- case XkmTypesIndex:
- strcpy(buf, "types");
- break;
- case XkmSymbolsIndex:
- strcpy(buf, "symbols");
- break;
- case XkmCompatMapIndex:
- strcpy(buf, "compat");
- break;
- case XkmGeometryFile:
- case XkmGeometryIndex:
- strcpy(buf, "geometry");
- break;
- default:
- strcpy(buf, "");
- break;
- }
- return buf;
-}
-
-/***====================================================================***/
-
-typedef struct _FileCacheEntry
-{
- char *name;
- unsigned type;
- char *path;
- void *data;
- struct _FileCacheEntry *next;
-} FileCacheEntry;
-static FileCacheEntry *fileCache;
-
-/**
- * Add the file with the given name to the internal cache to avoid opening and
- * parsing the file multiple times. If a cache entry for the same name + type
- * is already present, the entry is overwritten and the data belonging to the
- * previous entry is returned.
- *
- * @parameter name The name of the file (e.g. evdev).
- * @parameter type Type of the file (XkbTypesIdx, ... or XkbSemanticsFile, ...)
- * @parameter path The full path to the file.
- * @parameter data Already parsed data.
- *
- * @return The data from the overwritten file or NULL.
- */
-void *
-XkbAddFileToCache(char *name, unsigned type, char *path, void *data)
-{
- FileCacheEntry *entry;
-
- for (entry = fileCache; entry != NULL; entry = entry->next)
- {
- if ((type == entry->type) && (uStringEqual(name, entry->name)))
- {
- void *old = entry->data;
- WSGO2("Replacing file cache entry (%s/%d)\n", name, type);
- entry->path = path;
- entry->data = data;
- return old;
- }
- }
- entry = uTypedAlloc(FileCacheEntry);
- if (entry != NULL)
- {
- entry->name = name;
- entry->type = type;
- entry->path = path;
- entry->data = data;
- entry->next = fileCache;
- fileCache = entry;
- }
- return NULL;
-}
-
-/**
- * Search for the given name + type in the cache.
- *
- * @parameter name The name of the file (e.g. evdev).
- * @parameter type Type of the file (XkbTypesIdx, ... or XkbSemanticsFile, ...)
- * @parameter pathRtrn Set to the full path of the given entry.
- *
- * @return the data from the cache entry or NULL if no matching entry was found.
- */
-void *
-XkbFindFileInCache(char *name, unsigned type, char **pathRtrn)
-{
- FileCacheEntry *entry;
-
- for (entry = fileCache; entry != NULL; entry = entry->next)
- {
- if ((type == entry->type) && (uStringEqual(name, entry->name)))
- {
- *pathRtrn = entry->path;
- return entry->data;
- }
- }
- return NULL;
-}
-
-/***====================================================================***/
-
-/**
- * Search for the given file name in the include directories.
- *
- * @param type one of XkbTypesIndex, XkbCompatMapIndex, ..., or
- * XkbSemanticsFile, XkmKeymapFile, ...
- * @param pathReturn is set to the full path of the file if found.
- *
- * @return an FD to the file or NULL. If NULL is returned, the value of
- * pathRtrn is undefined.
- */
-FILE *
-XkbFindFileInPath(char *name, unsigned type, char **pathRtrn)
-{
- register int i;
- FILE *file = NULL;
- int nameLen, typeLen, pathLen;
- char buf[PATH_MAX], *typeDir;
-
- typeDir = XkbDirectoryForInclude(type);
- nameLen = strlen(name);
- typeLen = strlen(typeDir);
- for (i = 0; i < nPathEntries; i++)
- {
- pathLen = strlen(includePath[i]);
- if (typeLen < 1)
- continue;
-
- if ((nameLen + typeLen + pathLen + 2) >= PATH_MAX)
- {
- ERROR3("File name (%s/%s/%s) too long\n", includePath[i],
- typeDir, name);
- ACTION("Ignored\n");
- continue;
- }
- snprintf(buf, sizeof(buf), "%s/%s/%s", includePath[i], typeDir, name);
- file = fopen(buf, "r");
- if (file != NULL)
- break;
- }
-
- if ((file != NULL) && (pathRtrn != NULL))
- {
- *pathRtrn = (char *) calloc(strlen(buf) + 1, sizeof(char));
- if (*pathRtrn != NULL)
- strcpy(*pathRtrn, buf);
- }
- return file;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#include <X11/Xlib.h>
+#include <X11/XKBlib.h>
+
+#define DEBUG_VAR debugFlags
+#include "utils.h"
+#include <stdlib.h>
+#include <unistd.h>
+#include <X11/extensions/XKM.h>
+#include "xkbpath.h"
+
+#ifndef DFLT_XKB_CONFIG_ROOT
+#define DFLT_XKB_CONFIG_ROOT "xkbdata"
+#endif
+
+#ifndef PATH_MAX
+#define PATH_MAX 1024
+#endif
+
+#define PATH_CHUNK 8 /* initial szPath */
+
+static Bool noDefaultPath = False;
+static int szPath; /* number of entries allocated for includePath */
+static int nPathEntries; /* number of actual entries in includePath */
+static char **includePath; /* Holds all directories we might be including data from */
+
+/**
+ * Extract the first token from an include statement.
+ * @param str_inout Input statement, modified in-place. Can be passed in
+ * repeatedly. If str_inout is NULL, the parsing has completed.
+ * @param file_rtrn Set to the include file to be used.
+ * @param map_rtrn Set to whatever comes after ), if any.
+ * @param nextop_rtrn Set to the next operation in the complete statement.
+ * @param extra_data Set to the string between ( and ), if any.
+ *
+ * @return True if parsing was succcessful, False for an illegal string.
+ *
+ * Example: "evdev+aliases(qwerty)"
+ * str_inout = aliases(qwerty)
+ * nextop_retrn = +
+ * extra_data = NULL
+ * file_rtrn = evdev
+ * map_rtrn = NULL
+ *
+ * 2nd run with "aliases(qwerty)"
+ * str_inout = NULL
+ * file_rtrn = aliases
+ * map_rtrn = qwerty
+ * extra_data = NULL
+ * nextop_retrn = ""
+ *
+ */
+Bool
+XkbParseIncludeMap(char **str_inout, char **file_rtrn, char **map_rtrn,
+ char *nextop_rtrn, char **extra_data)
+{
+ char *tmp, *str, *next;
+
+ str = *str_inout;
+ if ((*str == '+') || (*str == '|'))
+ {
+ *file_rtrn = *map_rtrn = NULL;
+ *nextop_rtrn = *str;
+ next = str + 1;
+ }
+ else if (*str == '%')
+ {
+ *file_rtrn = *map_rtrn = NULL;
+ *nextop_rtrn = str[1];
+ next = str + 2;
+ }
+ else
+ {
+ /* search for tokens inside the string */
+ next = strpbrk(str, "|+");
+ if (next)
+ {
+ /* set nextop_rtrn to \0, next to next character */
+ *nextop_rtrn = *next;
+ *next++ = '\0';
+ }
+ else
+ {
+ *nextop_rtrn = '\0';
+ next = NULL;
+ }
+ /* search for :, store result in extra_data */
+ tmp = strchr(str, ':');
+ if (tmp != NULL)
+ {
+ *tmp++ = '\0';
+ *extra_data = uStringDup(tmp);
+ }
+ else
+ {
+ *extra_data = NULL;
+ }
+ tmp = strchr(str, '(');
+ if (tmp == NULL)
+ {
+ *file_rtrn = uStringDup(str);
+ *map_rtrn = NULL;
+ }
+ else if (str[0] == '(')
+ {
+ uFree(*extra_data);
+ return False;
+ }
+ else
+ {
+ *tmp++ = '\0';
+ *file_rtrn = uStringDup(str);
+ str = tmp;
+ tmp = strchr(str, ')');
+ if ((tmp == NULL) || (tmp[1] != '\0'))
+ {
+ uFree(*file_rtrn);
+ uFree(*extra_data);
+ return False;
+ }
+ *tmp++ = '\0';
+ *map_rtrn = uStringDup(str);
+ }
+ }
+ if (*nextop_rtrn == '\0')
+ *str_inout = NULL;
+ else if ((*nextop_rtrn == '|') || (*nextop_rtrn == '+'))
+ *str_inout = next;
+ else
+ return False;
+ return True;
+}
+
+/**
+ * Init memory for include paths.
+ */
+Bool
+XkbInitIncludePath(void)
+{
+ szPath = PATH_CHUNK;
+ includePath = (char **) calloc(szPath, sizeof(char *));
+ if (includePath == NULL)
+ return False;
+ return True;
+}
+
+void
+XkbAddDefaultDirectoriesToPath(void)
+{
+ if (noDefaultPath)
+ return;
+ XkbAddDirectoryToPath(DFLT_XKB_CONFIG_ROOT);
+}
+
+/**
+ * Remove all entries from the global includePath.
+ */
+void
+XkbClearIncludePath(void)
+{
+ register int i;
+
+ if (szPath > 0)
+ {
+ for (i = 0; i < nPathEntries; i++)
+ {
+ if (includePath[i] != NULL)
+ {
+ uFree(includePath[i]);
+ includePath[i] = NULL;
+ }
+ }
+ nPathEntries = 0;
+ }
+ noDefaultPath = True;
+ return;
+}
+
+/**
+ * Add the given path to the global includePath variable.
+ * If dir is NULL, the includePath is emptied.
+ */
+Bool
+XkbAddDirectoryToPath(const char *dir)
+{
+ int len;
+ if ((dir == NULL) || (dir[0] == '\0'))
+ {
+ XkbClearIncludePath();
+ return True;
+ }
+#ifdef __UNIXOS2__
+ dir = (char *) __XOS2RedirRoot(dir);
+#endif
+ len = strlen(dir);
+ if (len + 2 >= PATH_MAX)
+ { /* allow for '/' and at least one character */
+ ERROR2("Path entry (%s) too long (maxiumum length is %d)\n",
+ dir, PATH_MAX - 3);
+ return False;
+ }
+ if (nPathEntries >= szPath)
+ {
+ szPath += PATH_CHUNK;
+ includePath = (char **) realloc(includePath, szPath * sizeof(char *));
+ if (includePath == NULL)
+ {
+ WSGO("Allocation failed (includePath)\n");
+ return False;
+ }
+ }
+ includePath[nPathEntries] =
+ (char *) calloc(strlen(dir) + 1, sizeof(char));
+ if (includePath[nPathEntries] == NULL)
+ {
+ WSGO1("Allocation failed (includePath[%d])\n", nPathEntries);
+ return False;
+ }
+ strcpy(includePath[nPathEntries++], dir);
+ return True;
+}
+
+/***====================================================================***/
+
+/**
+ * Return the xkb directory based on the type.
+ * Do not free the memory returned by this function.
+ */
+char *
+XkbDirectoryForInclude(unsigned type)
+{
+ static char buf[32];
+
+ switch (type)
+ {
+ case XkmSemanticsFile:
+ strcpy(buf, "semantics");
+ break;
+ case XkmLayoutFile:
+ strcpy(buf, "layout");
+ break;
+ case XkmKeymapFile:
+ strcpy(buf, "keymap");
+ break;
+ case XkmKeyNamesIndex:
+ strcpy(buf, "keycodes");
+ break;
+ case XkmTypesIndex:
+ strcpy(buf, "types");
+ break;
+ case XkmSymbolsIndex:
+ strcpy(buf, "symbols");
+ break;
+ case XkmCompatMapIndex:
+ strcpy(buf, "compat");
+ break;
+ case XkmGeometryFile:
+ case XkmGeometryIndex:
+ strcpy(buf, "geometry");
+ break;
+ default:
+ strcpy(buf, "");
+ break;
+ }
+ return buf;
+}
+
+/***====================================================================***/
+
+typedef struct _FileCacheEntry
+{
+ char *name;
+ unsigned type;
+ char *path;
+ void *data;
+ struct _FileCacheEntry *next;
+} FileCacheEntry;
+static FileCacheEntry *fileCache;
+
+/**
+ * Add the file with the given name to the internal cache to avoid opening and
+ * parsing the file multiple times. If a cache entry for the same name + type
+ * is already present, the entry is overwritten and the data belonging to the
+ * previous entry is returned.
+ *
+ * @parameter name The name of the file (e.g. evdev).
+ * @parameter type Type of the file (XkbTypesIdx, ... or XkbSemanticsFile, ...)
+ * @parameter path The full path to the file.
+ * @parameter data Already parsed data.
+ *
+ * @return The data from the overwritten file or NULL.
+ */
+void *
+XkbAddFileToCache(char *name, unsigned type, char *path, void *data)
+{
+ FileCacheEntry *entry;
+
+ for (entry = fileCache; entry != NULL; entry = entry->next)
+ {
+ if ((type == entry->type) && (uStringEqual(name, entry->name)))
+ {
+ void *old = entry->data;
+ WSGO2("Replacing file cache entry (%s/%d)\n", name, type);
+ entry->path = path;
+ entry->data = data;
+ return old;
+ }
+ }
+ entry = uTypedAlloc(FileCacheEntry);
+ if (entry != NULL)
+ {
+ entry->name = name;
+ entry->type = type;
+ entry->path = path;
+ entry->data = data;
+ entry->next = fileCache;
+ fileCache = entry;
+ }
+ return NULL;
+}
+
+/**
+ * Search for the given name + type in the cache.
+ *
+ * @parameter name The name of the file (e.g. evdev).
+ * @parameter type Type of the file (XkbTypesIdx, ... or XkbSemanticsFile, ...)
+ * @parameter pathRtrn Set to the full path of the given entry.
+ *
+ * @return the data from the cache entry or NULL if no matching entry was found.
+ */
+void *
+XkbFindFileInCache(char *name, unsigned type, char **pathRtrn)
+{
+ FileCacheEntry *entry;
+
+ for (entry = fileCache; entry != NULL; entry = entry->next)
+ {
+ if ((type == entry->type) && (uStringEqual(name, entry->name)))
+ {
+ *pathRtrn = entry->path;
+ return entry->data;
+ }
+ }
+ return NULL;
+}
+
+/***====================================================================***/
+
+/**
+ * Search for the given file name in the include directories.
+ *
+ * @param type one of XkbTypesIndex, XkbCompatMapIndex, ..., or
+ * XkbSemanticsFile, XkmKeymapFile, ...
+ * @param pathReturn is set to the full path of the file if found.
+ *
+ * @return an FD to the file or NULL. If NULL is returned, the value of
+ * pathRtrn is undefined.
+ */
+FILE *
+XkbFindFileInPath(char *name, unsigned type, char **pathRtrn)
+{
+ register int i;
+ FILE *file = NULL;
+ int nameLen, typeLen, pathLen;
+ char buf[PATH_MAX], *typeDir;
+
+ typeDir = XkbDirectoryForInclude(type);
+ nameLen = strlen(name);
+ typeLen = strlen(typeDir);
+ for (i = 0; i < nPathEntries; i++)
+ {
+ pathLen = strlen(includePath[i]);
+ if (typeLen < 1)
+ continue;
+
+ if ((nameLen + typeLen + pathLen + 2) >= PATH_MAX)
+ {
+ ERROR3("File name (%s/%s/%s) too long\n", includePath[i],
+ typeDir, name);
+ ACTION("Ignored\n");
+ continue;
+ }
+ snprintf(buf, sizeof(buf), "%s/%s/%s", includePath[i], typeDir, name);
+ file = fopen(buf, "r");
+ if (file != NULL)
+ break;
+ }
+
+ if ((file != NULL) && (pathRtrn != NULL))
+ {
+ *pathRtrn = (char *) calloc(strlen(buf) + 1, sizeof(char));
+ if (*pathRtrn != NULL)
+ strcpy(*pathRtrn, buf);
+ }
+ return file;
+}
diff --git a/xkbcomp/xkbpath.h b/xkbcomp/xkbpath.h
index 66c3ab76b..e9ebeda0e 100644
--- a/xkbcomp/xkbpath.h
+++ b/xkbcomp/xkbpath.h
@@ -1,65 +1,65 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- 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 of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS 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.
-
- ********************************************************/
-
-#ifndef _XKBPATH_H_
-#define _XKBPATH_H_ 1
-
-extern Bool XkbInitIncludePath(void);
-
-extern void XkbClearIncludePath(void);
-
-extern void XkbAddDefaultDirectoriesToPath(void);
-
-extern Bool XkbAddDirectoryToPath(const char * /* dir */
- );
-
-extern char *XkbDirectoryForInclude(unsigned /* type */
- );
-
-extern FILE *XkbFindFileInPath(char * /* name */ ,
- unsigned /* type */ ,
- char ** /* pathRtrn */
- );
-
-extern void *XkbAddFileToCache(char * /* name */ ,
- unsigned /* type */ ,
- char * /* path */ ,
- void * /* data */
- );
-
-extern void *XkbFindFileInCache(char * /* name */ ,
- unsigned /* type */ ,
- char ** /* pathRtrn */
- );
-
-extern Bool XkbParseIncludeMap(char ** /* str_inout */ ,
- char ** /* file_rtrn */ ,
- char ** /* map_rtrn */ ,
- char * /* nextop_rtrn */ ,
- char ** /* extra_data */
- );
-
-#endif /* _XKBPATH_H_ */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ 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 of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS 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.
+
+ ********************************************************/
+
+#ifndef _XKBPATH_H_
+#define _XKBPATH_H_ 1
+
+extern Bool XkbInitIncludePath(void);
+
+extern void XkbClearIncludePath(void);
+
+extern void XkbAddDefaultDirectoriesToPath(void);
+
+extern Bool XkbAddDirectoryToPath(const char * /* dir */
+ );
+
+extern char *XkbDirectoryForInclude(unsigned /* type */
+ );
+
+extern FILE *XkbFindFileInPath(char * /* name */ ,
+ unsigned /* type */ ,
+ char ** /* pathRtrn */
+ );
+
+extern void *XkbAddFileToCache(char * /* name */ ,
+ unsigned /* type */ ,
+ char * /* path */ ,
+ void * /* data */
+ );
+
+extern void *XkbFindFileInCache(char * /* name */ ,
+ unsigned /* type */ ,
+ char ** /* pathRtrn */
+ );
+
+extern Bool XkbParseIncludeMap(char ** /* str_inout */ ,
+ char ** /* file_rtrn */ ,
+ char ** /* map_rtrn */ ,
+ char * /* nextop_rtrn */ ,
+ char ** /* extra_data */
+ );
+
+#endif /* _XKBPATH_H_ */
diff --git a/xorg-server/COPYING b/xorg-server/COPYING
index f59f9f956..cd9e80a48 100644
--- a/xorg-server/COPYING
+++ b/xorg-server/COPYING
@@ -1,1822 +1,1822 @@
-The following is the 'standard copyright' agreed upon by most contributors,
-and is currently the canonical license preferred by the X.Org Foundation.
-This is a slight variant of the common MIT license form published by the
-Open Source Initiative at http://www.opensource.org/licenses/mit-license.php
-
-Copyright holders of new code should use this license statement where
-possible, and insert their name to this list. Please sort by surname
-for people, and by the full name for other entities (e.g. Juliusz
-Chroboczek sorts before Intel Corporation sorts before Daniel Stone).
-
-Copyright © 2000-2001 Juliusz Chroboczek
-Copyright © 1998 Egbert Eich
-Copyright © 2006-2007 Intel Corporation
-Copyright © 2006 Nokia Corporation
-Copyright © 2006-2008 Peter Hutterer
-Copyright © 2006 Adam Jackson
-Copyright © 2009-2010 NVIDIA Corporation
-Copyright © 1987, 2003-2006, 2008-2010 Oracle and/or its affiliates.
-Copyright © 1999 Keith Packard
-Copyright © 2007-2009 Red Hat, Inc.
-Copyright © 2005-2008 Daniel Stone
-Copyright © 2006-2009 Simon Thum
-Copyright © 2006 Luc Verhaegen
-
-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 (including the next
-paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-
-
-
-
-The following licenses are 'legacy': usually MIT/X11 licenses with the name
-of the copyright holder(s) in the license statement, but also some BSD-like
-licenses.
-
-
-Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved.
-Copyright (C) Colin Harrison 2005-2008
-
-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, FIT-
-NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-XFREE86 PROJECT 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 XFree86 Project 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 XFree86 Project.
-
-
-Copyright 1997 by The XFree86 Project, Inc.
-
-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 the XFree86 Project, Inc.
-not be used in advertising or publicity pertaining to distribution of
-the software without specific, written prior permission. The Xfree86
-Project, Inc. makes no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-THE XFREE86 PROJECT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT 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.
-
-
-Copyright 1985-1998, 2001 The Open Group
-Copyright 2002 Red Hat Inc., Durham, North Carolina.
-
-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.
-
-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
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright (c) 1987, 1989-1990, 1992-1995 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 © 1999-2000 SuSE, Inc.
-Copyright © 2007 Red Hat, Inc.
-
-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 SuSE not be used in advertising or
-publicity pertaining to distribution of the software without specific,
-written prior permission. SuSE makes no representations about the
-suitability of this software for any purpose. It is provided "as is"
-without express or implied warranty.
-
-SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
-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.
-
-
-Copyright 1987-1991, 1993 by Digital Equipment Corporation, Maynard, Massachusetts.
-Copyright 1991 Massachusetts Institute of Technology, Cambridge, Massachusetts.
-Copyright 1991, 1993 Olivetti Research Limited, Cambridge, England.
-
- 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 name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL 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.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-Copyright 1994 Quarterdeck Office Systems.
-
- 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 and
-Quarterdeck not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission.
-
-DIGITAL AND QUARTERDECK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL DIGITAL 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.
-
-
-Copyright 1997 Digital Equipment Corporation.
-All rights reserved.
-
-This software is furnished under license and may be used and copied only in
-accordance with the following terms and conditions. Subject to these
-conditions, you may download, copy, install, use, modify and distribute
-this software in source and/or binary form. No title or ownership is
-transferred hereby.
-
-1) Any source code used, modified or distributed must reproduce and retain
- this copyright notice and list of conditions as they appear in the
- source file.
-
-2) No right is granted to use any trade name, trademark, or logo of Digital
- Equipment Corporation. Neither the "Digital Equipment Corporation"
- name nor any trademark or logo of Digital Equipment Corporation may be
- used to endorse or promote products derived from this software without
- the prior written permission of Digital Equipment Corporation.
-
-3) This software is provided "AS-IS" and any express or implied warranties,
- including but not limited to, any implied warranties of merchantability,
- fitness for a particular purpose, or non-infringement are disclaimed.
- In no event shall DIGITAL be liable for any damages whatsoever, and in
- particular, DIGITAL shall not be liable for special, indirect,
- consequential, or incidental damages or damages for lost profits, loss
- of revenue or loss of use, whether such damages arise in contract,
- negligence, tort, under statute, in equity, at law or otherwise, even
- if advised of the possibility of such damage.
-
-
-Copyright (c) 1991, 1996-1997 Digital Equipment Corporation, Maynard, Massachusetts.
-
-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.
-
-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
-DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
-BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
-shall not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from Digital
-Equipment Corporation.
-
-
-SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
-Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
-
-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 including the dates of first publication and
-either this permission notice or a reference to
-http://oss.sgi.com/projects/FreeB/
-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
-SILICON GRAPHICS, INC. 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.
-
-
-Copyright (c) 1994, 1995 Hewlett-Packard Company
-
-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 HEWLETT-PACKARD COMPANY 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 Hewlett-Packard
-Company 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 Hewlett-Packard Company.
-
-
-Copyright 1989 by Hewlett-Packard Company, Palo Alto, California.
-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 name of Hewlett-Packard not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-HEWLETT-PACKARD 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.
-
-
-Copyright 2001-2004 Red Hat Inc., Durham, North Carolina.
-Copyright (c) 2003 by the XFree86 Project, Inc.
-Copyright 2004-2005 Red Hat Inc., Raleigh, North Carolina.
-All Rights Reserved.
-
-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 on 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 (including the
-next paragraph) 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
-NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
-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.
-
-
-Copyright © 2008 Red Hat, Inc.
-Partly based on code Copyright © 2000 SuSE, Inc.
-
-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 Red Hat
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission. Red
-Hat makes no representations about the suitability of this software
-for any purpose. It is provided "as is" without express or implied
-warranty.
-
-Red Hat DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
-NO EVENT SHALL Red Hat 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.
-
-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 SuSE not be used in advertising or
-publicity pertaining to distribution of the software without specific,
-written prior permission. SuSE makes no representations about the
-suitability of this software for any purpose. It is provided "as is"
-without express or implied warranty.
-
-SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
-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.
-
-
-Copyright © 2006 Red Hat, Inc.
-(C) Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-All Rights Reserved.
-
-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, sub license,
-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 (including the next
-paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
-RED HAT, INC, OR PRECISION INSIGHT AND/OR THEIR SUPPLIERS 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.
-
-
-Copyright (c) 1995 X Consortium
-Copyright 2004 Red Hat Inc., Durham, North Carolina.
-All Rights Reserved.
-
-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 on 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
-NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT, THE X CONSORTIUM,
-AND/OR THEIR SUPPLIERS 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 1998-2000 Precision Insight, Inc., Cedar Park, Texas.
-Copyright 2000 VA Linux Systems, Inc.
-Copyright (c) 2002, 2008, 2009 Apple Computer, Inc.
-Copyright (c) 2003-2004 Torrey T. Lyons.
-All Rights Reserved.
-
-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, sub license, 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 (including the
-next paragraph) 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 NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS 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.
-
-
-(C) Copyright IBM Corporation 2003
-All Rights Reserved.
-
-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
-on the rights to use, copy, modify, merge, publish, distribute, sub
-license, 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 (including the next
-paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
-VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS 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.
-
-
-(C) Copyright IBM Corporation 2004-2005
-All Rights Reserved.
-
-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, sub license,
-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 (including the next
-paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
-IBM,
-AND/OR THEIR SUPPLIERS 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.
-
-
-Copyright (c) 1997 Metro Link Incorporated
-
-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 Metro Link shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from Metro Link.
-
-
-Copyright 1995-1998 by Metro Link, Inc.
-Copyright (c) 1997 Matthieu Herrb
-
-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 Metro Link, Inc. not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Metro Link, Inc. makes no
-representations about the suitability of this software for any purpose.
- It is provided "as is" without express or implied warranty.
-
-METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL METRO LINK, INC. 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.
-
-
-Copyright 1998 by Metro Link Incorporated
-
-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 Metro Link
-Incorporated not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission. Metro Link Incorporated makes no representations
-about the suitability of this software for any purpose. It is
-provided "as is" without express or implied warranty.
-
-METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED 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.
-
-
-Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
-
-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
-CONECTIVA LINUX 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 Conectiva Linux shall
-not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from
-Conectiva Linux.
-
-
-Copyright (c) 2001, Andy Ritger aritger@nvidia.com
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-o Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-o Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.
-o Neither the name of NVIDIA nor the names of its contributors
- may be used to endorse or promote products derived from this
- software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
-NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
-THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-
-Copyright 1992 Vrije Universiteit, The Netherlands
-
-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 of the Vrije Universiteit not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. The Vrije Universiteit makes no
-representations about the suitability of this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-The Vrije Universiteit DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL The Vrije Universiteit 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.
-
-
-Copyright 1998 by Concurrent Computer Corporation
-
-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 Concurrent Computer
-Corporation not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission. Concurrent Computer Corporation makes no representations
-about the suitability of this software for any purpose. It is
-provided "as is" without express or implied warranty.
-
-CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION 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.
-
-
-Copyright © 2004 Nokia
-
-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 Nokia not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Nokia makes no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-NOKIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL NOKIA 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.
-
-
-(c)Copyright 1988,1991 Adobe Systems Incorporated.
-All rights reserved.
-
-Permission to use, copy, modify, distribute, and sublicense this software and its
-documentation for any purpose and without fee is hereby granted, provided that
-the above copyright notices appear in all copies and that both those copyright
-notices and this permission notice appear in supporting documentation and that
-the name of Adobe Systems Incorporated not be used in advertising or publicity
-pertaining to distribution of the software without specific, written prior
-permission. No trademark license to use the Adobe trademarks is hereby
-granted. If the Adobe trademark "Display PostScript"(tm) is used to describe
-this software, its functionality or for any other purpose, such use shall be
-limited to a statement that this software works in conjunction with the Display
-PostScript system. Proper trademark attribution to reflect Adobe's ownership
-of the trademark shall be given whenever any such reference to the Display
-PostScript system is made.
-
-ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR ANY
-PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. ADOBE
-DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
-INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL ADOBE BE LIABLE TO YOU
-OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
-DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT,NEGLIGENCE, STRICT
-LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE. ADOBE WILL NOT PROVIDE ANY TRAINING OR OTHER
-SUPPORT FOR THE SOFTWARE.
-
-Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems
-Incorporated which may be registered in certain jurisdictions.
-
-
-Copyright 1989 Network Computing Devices, Inc., Mountain View, California.
-
-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 of N.C.D. not be used in advertising or
-publicity pertaining to distribution of the software without specific,
-written prior permission. N.C.D. makes no representations about the
-suitability of this software for any purpose. It is provided "as is"
-without express or implied warranty.
-
-
-Copyright (c) 1987 by the Regents of the University of California
-
-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. The University of California
-makes no representations about the suitability of this
-software for any purpose. It is provided "as is" without
-express or implied warranty.
-
-
-Copyright 1992, 1993 Data General Corporation;
-Copyright 1992, 1993 OMRON Corporation
-
-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
-neither the name OMRON or DATA GENERAL be used in advertising or publicity
-pertaining to distribution of the software without specific, written prior
-permission of the party whose name is to be used. Neither OMRON or
-DATA GENERAL make any representation about the suitability of this software
-for any purpose. It is provided "as is" without express or implied warranty.
-
-OMRON AND DATA GENERAL EACH DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
-IN NO EVENT SHALL OMRON OR DATA GENERAL 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.
-
-
-Copyright © 1998-2004, 2006 Keith Packard
-Copyright © 2000-2002 Keith Packard, member of The XFree86 Project, Inc.
-Copyright (c) 2002 Apple Computer, Inc.
-Copyright (c) 2003 Torrey T. Lyons.
-All Rights Reserved.
-
-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 Keith Packard not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Keith Packard makes no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL KEITH PACKARD 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.
-
-
-Copyright © 1999 Keith Packard
-Copyright © 2000 Compaq Computer Corporation
-Copyright © 2002 MontaVista Software Inc.
-Copyright © 2005 OpenedHand Ltd.
-Copyright © 2006 Nokia Corporation
-
-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 the authors and/or copyright holders
-not be used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission. The authors and/or
-copyright holders make no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-THE AUTHORS AND/OR COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL THE AUTHORS AND/OR COPYRIGHT HOLDERS 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.
-
-
-Copyright 1993 by Davor Matic
-
-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. Davor Matic makes no representations about
-the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-
-Copyright (C) 2001-2004 Harold L Hunt II All Rights Reserved.
-Copyright (C) Colin Harrison 2005-2008
-
-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 HAROLD L HUNT II 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 Harold L Hunt II
-shall not be used in advertising or otherwise to promote the sale, use
-or other dealings in this Software without prior written authorization
-from Harold L Hunt II.
-
-
-Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
-
-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 Thomas Roell not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Thomas Roell makes no representations
-about the suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL THOMAS ROELL 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.
-
-
-Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
-Copyright 1993 by David Wexelblat <dwex@goblin.org>
-
-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 names of Thomas Roell and David Wexelblat
-not be used in advertising or publicity pertaining to distribution of
-the software without specific, written prior permission. Thomas Roell and
-David Wexelblat makes no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT 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.
-
-
-Copyright 1990,91,92,93 by Thomas Roell, Germany.
-Copyright 1991,92,93 by SGCS (Snitily Graphics Consulting Services), USA.
-
-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 Thomas Roell nor
-SGCS be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-Thomas Roell nor SGCS makes no representations about the suitability
-of this software for any purpose. It is provided "as is" without
-express or implied warranty.
-
-THOMAS ROELL AND SGCS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THOMAS ROELL OR SGCS 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.
-
-
-Copyright 1998 by Alan Hourihane, Wigan, England.
-Copyright 2000-2002 by Alan Hourihane, Flint Mountain, North Wales.
-
-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 Alan Hourihane not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Alan Hourihane makes no representations
-about the suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL ALAN HOURIHANE 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.
-
-
-Copyright 1995 Kaleb S. KEITHLEY
-
-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 Kaleb S. KEITHLEY 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 Kaleb S. KEITHLEY
-shall not be used in advertising or otherwise to promote the sale, use
-or other dealings in this Software without prior written authorization
-from Kaleb S. KEITHLEY
-
-
-Copyright (c) 1997 Matthieu Herrb
-
-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 Matthieu Herrb not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Matthieu Herrb makes no
-representations about the suitability of this software for any purpose.
- It is provided "as is" without express or implied warranty.
-
-MATTHIEU HERRB DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL MATTHIEU HERRB 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.
-
-
-Copyright 2004, Egbert Eich
-
-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
-EGBERT EICH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
-NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of Egbert Eich shall not
-be used in advertising or otherwise to promote the sale, use or other deal-
-ings in this Software without prior written authorization from Egbert Eich.
-
-
-Copyright 1993 by David Wexelblat <dwex@goblin.org>
-Copyright 2005 by Kean Johnston <jkj@sco.com>
-Copyright 1993 by David McCullough <davidm@stallion.oz.au>
-
-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 David Wexelblat not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. David Wexelblat makes no representations
-about the suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL DAVID WEXELBLAT 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.
-
-
-Copyright 1992 by Orest Zborowski <obz@Kodak.com>
-Copyright 1993 by David Wexelblat <dwex@goblin.org>
-
-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 names of Orest Zborowski and David Wexelblat
-not be used in advertising or publicity pertaining to distribution of
-the software without specific, written prior permission. Orest Zborowski
-and David Wexelblat make no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-OREST ZBOROWSKI AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT 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.
-
-
-Copyright 1992 by Orest Zborowski <obz@Kodak.com>
-Copyright 1993 by David Dawes <dawes@xfree86.org>
-
-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 names of Orest Zborowski and David Dawes
-not be used in advertising or publicity pertaining to distribution of
-the software without specific, written prior permission. Orest Zborowski
-and David Dawes make no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-OREST ZBOROWSKI AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID DAWES 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.
-
-
-Copyright 1995-1999 by Frederic Lepied, France. <fred@sugix.frmug.fr.net>
-
-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 Frederic Lepied not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Frederic Lepied makes no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL FREDERIC LEPIED 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.
-
-
-Copyright 1992 by Rich Murphey <Rich@Rice.edu>
-Copyright 1993 by David Wexelblat <dwex@goblin.org>
-
-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 names of Rich Murphey and David Wexelblat
-not be used in advertising or publicity pertaining to distribution of
-the software without specific, written prior permission. Rich Murphey and
-David Wexelblat make no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT 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.
-
-
-Copyright 1992 by Rich Murphey <Rich@Rice.edu>
-Copyright 1993 by David Dawes <dawes@xfree86.org>
-
-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 names of Rich Murphey and David Dawes
-not be used in advertising or publicity pertaining to distribution of
-the software without specific, written prior permission. Rich Murphey and
-David Dawes make no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-RICH MURPHEY AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID DAWES 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.
-
-
-Copyright © 2003-2004 Anders Carlsson
-
-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 Anders Carlsson not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Anders Carlsson makes no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-ANDERS CARLSSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL ANDERS CARLSSON 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.
-
-
-Copyright (C) 2003 Anders Carlsson
-Copyright © 2003-2004 Eric Anholt
-Copyright © 2004 Keith Packard
-
-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 Eric Anholt not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Eric Anholt makes no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-ERIC ANHOLT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL ERIC ANHOLT 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.
-
-
-Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
-
-Permission to use, copy, modify, and distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE
-FOR ANY SPECIAL, DIRECT, 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.
-
-
-Copyright © 2003-2004 Philip Blundell
-
-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 Philip Blundell not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Philip Blundell makes no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-PHILIP BLUNDELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL PHILIP BLUNDELL 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.
-
-
-
-Copyright (c) 1994-2003 by The XFree86 Project, Inc.
-Copyright 1997 by Metro Link, Inc.
-Copyright 2003 by David H. Dawes.
-Copyright 2003 by X-Oz Technologies.
-Copyright (c) 2004, X.Org Foundation
-
-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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
-and author(s) 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 copyright holder(s) and author(s).
-
-
-Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
-Copyright 1993 by David Wexelblat <dwex@goblin.org>
-Copyright 1999 by David Holland <davidh@iquest.net>
-Copyright © 2000 Compaq Computer Corporation
-Copyright © 2002 Hewlett-Packard Company
-Copyright © 2004, 2005 Red Hat, Inc.
-Copyright © 2004 Nicholas Miell
-Copyright © 2005 Trolltech AS
-Copyright © 2006 Intel Corporation
-Copyright © 2006-2007 Keith Packard
-Copyright © 2008 Red Hat, Inc
-Copyright © 2008 George Sapountzis <gsap7@yahoo.gr>
-
-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 the copyright holders not be used in advertising or
-publicity pertaining to distribution of the software without specific,
-written prior permission. The copyright holders make no representations
-about the suitability of this software for any purpose. It is provided "as
-is" without express or implied warranty.
-
-THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS 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.
-
-
-Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
- 2005 Lars Knoll & Zack Rusin, Trolltech
-
-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 Keith Packard not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Keith Packard makes no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS 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.
-
-
-Copyright 1987, 1998 The Open Group
-Copyright © 1998-1999, 2001 The XFree86 Project, Inc.
-Copyright © 2000 VA Linux Systems, Inc.
-Copyright (c) 2000, 2001 Nokia Home Communications
-Copyright © 2007, 2008 Red Hat, Inc.
-All rights reserved.
-
-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, and/or sell copies of the Software, and to permit persons
-to whom the Software is furnished to do so, provided that the above
-copyright notice(s) and this permission notice appear in all copies of
-the Software and that both the above copyright notice(s) and this
-permission notice appear in supporting documentation.
-
-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
-OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale, use
-or other dealings in this Software without prior written authorization
-of the copyright holder.
-
-
-Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
-
- 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 name of the above listed
-copyright holder(s) not be used in advertising or publicity pertaining
-to distribution of the software without specific, written prior
-permission.
-
-THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
-
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-Copyright (c) 2001 Andreas Monitzer.
-Copyright (c) 2001-2004 Greg Parker.
-Copyright (c) 2001-2004 Torrey T. Lyons
-Copyright (c) 2002-2003 Apple Computer, Inc.
-Copyright (c) 2004-2005 Alexander Gottwald
-Copyright (c) 2002-2009 Apple Inc.
-Copyright (c) 2007 Jeremy Huddleston
-All Rights Reserved.
-
-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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
-holders shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in this Software without prior written authorization.
-
-
-Copyright (C) 1999,2000 by Eric Sunshine <sunshine@sunshineco.com>
-Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria.
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
-NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-Copyright (C) 2005 Bogdan D. bogdand@users.sourceforge.net
-
-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
-AUTHOR 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 author 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 author.
-
-
-Copyright © 2002 David Dawes
-
-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 AUTHOR(S) 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 author(s) 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 author(s).
-
-
-Copyright (C) 1996-1999 SciTech Software, Inc.
-Copyright (C) David Mosberger-Tang
-Copyright (C) 1999 Egbert Eich
-Copyright (C) 2008 Bart Trojanowski, Symbio Technologies, LLC
-
-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 the authors not be used
-in advertising or publicity pertaining to distribution of the software
-without specific, written prior permission. The authors makes no
-representations about the suitability of this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL THE AUTHORS 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.
-
-
-Copyright 2005-2006 Luc Verhaegen.
-
-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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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.
-
-
-Copyright 1995 by Robin Cutshaw <robin@XFree86.Org>
-Copyright 2000 by Egbert Eich
-Copyright 2002 by David Dawes
-
-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 names of the above listed copyright holder(s)
-not be used in advertising or publicity pertaining to distribution of
-the software without specific, written prior permission. The above listed
-copyright holder(s) make(s) no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
-
-
-Copyright 1997-2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
-
-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 Marc Aurele La France not be used in advertising or
-publicity pertaining to distribution of the software without specific,
-written prior permission. Marc Aurele La France makes no representations
-about the suitability of this software for any purpose. It is provided
-"as-is" without express or implied warranty.
-
-MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
-EVENT SHALL MARC AURELE LA FRANCE 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.
-
-
-Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany
-Copyright 1992 by David Dawes <dawes@XFree86.org>
-Copyright 1992 by Jim Tsillas <jtsilla@damon.ccs.northeastern.edu>
-Copyright 1992 by Rich Murphey <Rich@Rice.edu>
-Copyright 1992 by Robert Baron <Robert.Baron@ernst.mach.cs.cmu.edu>
-Copyright 1992 by Orest Zborowski <obz@eskimo.com>
-Copyright 1993 by Vrije Universiteit, The Netherlands
-Copyright 1993 by David Wexelblat <dwex@XFree86.org>
-Copyright 1994, 1996 by Holger Veit <Holger.Veit@gmd.de>
-Copyright 1997 by Takis Psarogiannakopoulos <takis@dpmms.cam.ac.uk>
-Copyright 1994-2003 by The XFree86 Project, Inc
-
-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 names of the above listed copyright holders
-not be used in advertising or publicity pertaining to distribution of
-the software without specific, written prior permission. The above listed
-copyright holders make no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-THE ABOVE LISTED COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDERS 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.
-
-
-Copyright 2001-2005 by J. Kean Johnston <jkj@sco.com>
-
-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 J. Kean Johnston not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. J. Kean Johnston makes no
-representations about the suitability of this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL J. KEAN JOHNSTON 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.
-
-
-Copyright (C) 2000 Jakub Jelinek (jakub@redhat.com)
-
-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
-JAKUB JELINEK 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.
-
-
-Copyright 1997,1998 by UCHIYAMA Yasushi
-
-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 UCHIYAMA Yasushi not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. UCHIYAMA Yasushi makes no representations
-about the suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL UCHIYAMA YASUSHI 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.
-
-
-Copyright (C) 2000 Keith Packard
- 2004 Eric Anholt
- 2005 Zack Rusin
-
-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 copyright holders not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Copyright holders make no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS 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.
-
-
-(C) Copyright IBM Corporation 2002-2007
-All Rights Reserved.
-
-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
-on the rights to use, copy, modify, merge, publish, distribute, sub
-license, 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 (including the next
-paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
-THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS 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.
-
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-this permission notice appear in supporting documentation. 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
-AUTHOR 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.
-
-
-Copyright © 2007 OpenedHand Ltd
-
-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 OpenedHand Ltd not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. OpenedHand Ltd makes no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL OpenedHand Ltd 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.
-
-
-Copyright (c) 1989, 1990, 1993, 1994
- The Regents of the University of California. All rights reserved.
-
-This code is derived from software contributed to Berkeley by
-Chris Torek.
-
-This code is derived from software contributed to Berkeley by
-Michael Rendell of Memorial University of Newfoundland.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 4. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
+The following is the 'standard copyright' agreed upon by most contributors,
+and is currently the canonical license preferred by the X.Org Foundation.
+This is a slight variant of the common MIT license form published by the
+Open Source Initiative at http://www.opensource.org/licenses/mit-license.php
+
+Copyright holders of new code should use this license statement where
+possible, and insert their name to this list. Please sort by surname
+for people, and by the full name for other entities (e.g. Juliusz
+Chroboczek sorts before Intel Corporation sorts before Daniel Stone).
+
+Copyright © 2000-2001 Juliusz Chroboczek
+Copyright © 1998 Egbert Eich
+Copyright © 2006-2007 Intel Corporation
+Copyright © 2006 Nokia Corporation
+Copyright © 2006-2008 Peter Hutterer
+Copyright © 2006 Adam Jackson
+Copyright © 2009-2010 NVIDIA Corporation
+Copyright © 1987, 2003-2006, 2008-2010 Oracle and/or its affiliates.
+Copyright © 1999 Keith Packard
+Copyright © 2007-2009 Red Hat, Inc.
+Copyright © 2005-2008 Daniel Stone
+Copyright © 2006-2009 Simon Thum
+Copyright © 2006 Luc Verhaegen
+
+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 (including the next
+paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+
+
+
+
+The following licenses are 'legacy': usually MIT/X11 licenses with the name
+of the copyright holder(s) in the license statement, but also some BSD-like
+licenses.
+
+
+Copyright (C) 1994-2003 The XFree86 Project, Inc. All Rights Reserved.
+Copyright (C) Colin Harrison 2005-2008
+
+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, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+XFREE86 PROJECT 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 XFree86 Project 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 XFree86 Project.
+
+
+Copyright 1997 by The XFree86 Project, Inc.
+
+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 the XFree86 Project, Inc.
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission. The Xfree86
+Project, Inc. makes no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+THE XFREE86 PROJECT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT 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.
+
+
+Copyright 1985-1998, 2001 The Open Group
+Copyright 2002 Red Hat Inc., Durham, North Carolina.
+
+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.
+
+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
+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
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright (c) 1987, 1989-1990, 1992-1995 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 © 1999-2000 SuSE, Inc.
+Copyright © 2007 Red Hat, Inc.
+
+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 SuSE not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. SuSE makes no representations about the
+suitability of this software for any purpose. It is provided "as is"
+without express or implied warranty.
+
+SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
+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.
+
+
+Copyright 1987-1991, 1993 by Digital Equipment Corporation, Maynard, Massachusetts.
+Copyright 1991 Massachusetts Institute of Technology, Cambridge, Massachusetts.
+Copyright 1991, 1993 Olivetti Research Limited, Cambridge, England.
+
+ 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 name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL 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.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1994 Quarterdeck Office Systems.
+
+ 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 and
+Quarterdeck not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+DIGITAL AND QUARTERDECK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL DIGITAL 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.
+
+
+Copyright 1997 Digital Equipment Corporation.
+All rights reserved.
+
+This software is furnished under license and may be used and copied only in
+accordance with the following terms and conditions. Subject to these
+conditions, you may download, copy, install, use, modify and distribute
+this software in source and/or binary form. No title or ownership is
+transferred hereby.
+
+1) Any source code used, modified or distributed must reproduce and retain
+ this copyright notice and list of conditions as they appear in the
+ source file.
+
+2) No right is granted to use any trade name, trademark, or logo of Digital
+ Equipment Corporation. Neither the "Digital Equipment Corporation"
+ name nor any trademark or logo of Digital Equipment Corporation may be
+ used to endorse or promote products derived from this software without
+ the prior written permission of Digital Equipment Corporation.
+
+3) This software is provided "AS-IS" and any express or implied warranties,
+ including but not limited to, any implied warranties of merchantability,
+ fitness for a particular purpose, or non-infringement are disclaimed.
+ In no event shall DIGITAL be liable for any damages whatsoever, and in
+ particular, DIGITAL shall not be liable for special, indirect,
+ consequential, or incidental damages or damages for lost profits, loss
+ of revenue or loss of use, whether such damages arise in contract,
+ negligence, tort, under statute, in equity, at law or otherwise, even
+ if advised of the possibility of such damage.
+
+
+Copyright (c) 1991, 1996-1997 Digital Equipment Corporation, Maynard, Massachusetts.
+
+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.
+
+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
+DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL 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 Digital Equipment Corporation
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Digital
+Equipment Corporation.
+
+
+SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
+Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
+
+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 including the dates of first publication and
+either this permission notice or a reference to
+http://oss.sgi.com/projects/FreeB/
+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
+SILICON GRAPHICS, INC. 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.
+
+
+Copyright (c) 1994, 1995 Hewlett-Packard Company
+
+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 HEWLETT-PACKARD COMPANY 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 Hewlett-Packard
+Company 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 Hewlett-Packard Company.
+
+
+Copyright 1989 by Hewlett-Packard Company, Palo Alto, California.
+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 name of Hewlett-Packard not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+HEWLETT-PACKARD 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.
+
+
+Copyright 2001-2004 Red Hat Inc., Durham, North Carolina.
+Copyright (c) 2003 by the XFree86 Project, Inc.
+Copyright 2004-2005 Red Hat Inc., Raleigh, North Carolina.
+All Rights Reserved.
+
+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 on 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 (including the
+next paragraph) 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
+NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+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.
+
+
+Copyright © 2008 Red Hat, Inc.
+Partly based on code Copyright © 2000 SuSE, Inc.
+
+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 Red Hat
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission. Red
+Hat makes no representations about the suitability of this software
+for any purpose. It is provided "as is" without express or implied
+warranty.
+
+Red Hat DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+NO EVENT SHALL Red Hat 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.
+
+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 SuSE not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. SuSE makes no representations about the
+suitability of this software for any purpose. It is provided "as is"
+without express or implied warranty.
+
+SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
+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.
+
+
+Copyright © 2006 Red Hat, Inc.
+(C) Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+All Rights Reserved.
+
+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, sub license,
+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 (including the next
+paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+RED HAT, INC, OR PRECISION INSIGHT AND/OR THEIR SUPPLIERS 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.
+
+
+Copyright (c) 1995 X Consortium
+Copyright 2004 Red Hat Inc., Durham, North Carolina.
+All Rights Reserved.
+
+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 on 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
+NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT, THE X CONSORTIUM,
+AND/OR THEIR SUPPLIERS 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 1998-2000 Precision Insight, Inc., Cedar Park, Texas.
+Copyright 2000 VA Linux Systems, Inc.
+Copyright (c) 2002, 2008, 2009 Apple Computer, Inc.
+Copyright (c) 2003-2004 Torrey T. Lyons.
+All Rights Reserved.
+
+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, sub license, 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 (including the
+next paragraph) 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 NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS 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.
+
+
+(C) Copyright IBM Corporation 2003
+All Rights Reserved.
+
+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
+on the rights to use, copy, modify, merge, publish, distribute, sub
+license, 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 (including the next
+paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS 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.
+
+
+(C) Copyright IBM Corporation 2004-2005
+All Rights Reserved.
+
+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, sub license,
+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 (including the next
+paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+IBM,
+AND/OR THEIR SUPPLIERS 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.
+
+
+Copyright (c) 1997 Metro Link Incorporated
+
+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 Metro Link shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from Metro Link.
+
+
+Copyright 1995-1998 by Metro Link, Inc.
+Copyright (c) 1997 Matthieu Herrb
+
+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 Metro Link, Inc. not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Metro Link, Inc. makes no
+representations about the suitability of this software for any purpose.
+ It is provided "as is" without express or implied warranty.
+
+METRO LINK, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL METRO LINK, INC. 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.
+
+
+Copyright 1998 by Metro Link Incorporated
+
+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 Metro Link
+Incorporated not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission. Metro Link Incorporated makes no representations
+about the suitability of this software for any purpose. It is
+provided "as is" without express or implied warranty.
+
+METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED 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.
+
+
+Copyright (c) 2000 by Conectiva S.A. (http://www.conectiva.com)
+
+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
+CONECTIVA LINUX 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 Conectiva Linux shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from
+Conectiva Linux.
+
+
+Copyright (c) 2001, Andy Ritger aritger@nvidia.com
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+o Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+o Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+o Neither the name of NVIDIA nor the names of its contributors
+ may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
+NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+
+Copyright 1992 Vrije Universiteit, The Netherlands
+
+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 of the Vrije Universiteit not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. The Vrije Universiteit makes no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+The Vrije Universiteit DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL The Vrije Universiteit 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.
+
+
+Copyright 1998 by Concurrent Computer Corporation
+
+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 Concurrent Computer
+Corporation not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission. Concurrent Computer Corporation makes no representations
+about the suitability of this software for any purpose. It is
+provided "as is" without express or implied warranty.
+
+CONCURRENT COMPUTER CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL CONCURRENT COMPUTER CORPORATION 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.
+
+
+Copyright © 2004 Nokia
+
+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 Nokia not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Nokia makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+NOKIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL NOKIA 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.
+
+
+(c)Copyright 1988,1991 Adobe Systems Incorporated.
+All rights reserved.
+
+Permission to use, copy, modify, distribute, and sublicense this software and its
+documentation for any purpose and without fee is hereby granted, provided that
+the above copyright notices appear in all copies and that both those copyright
+notices and this permission notice appear in supporting documentation and that
+the name of Adobe Systems Incorporated not be used in advertising or publicity
+pertaining to distribution of the software without specific, written prior
+permission. No trademark license to use the Adobe trademarks is hereby
+granted. If the Adobe trademark "Display PostScript"(tm) is used to describe
+this software, its functionality or for any other purpose, such use shall be
+limited to a statement that this software works in conjunction with the Display
+PostScript system. Proper trademark attribution to reflect Adobe's ownership
+of the trademark shall be given whenever any such reference to the Display
+PostScript system is made.
+
+ADOBE MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE SOFTWARE FOR ANY
+PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. ADOBE
+DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
+INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL ADOBE BE LIABLE TO YOU
+OR ANY OTHER PARTY FOR ANY SPECIAL, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
+DAMAGES WHATSOEVER WHETHER IN AN ACTION OF CONTRACT,NEGLIGENCE, STRICT
+LIABILITY OR ANY OTHER ACTION ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE. ADOBE WILL NOT PROVIDE ANY TRAINING OR OTHER
+SUPPORT FOR THE SOFTWARE.
+
+Adobe, PostScript, and Display PostScript are trademarks of Adobe Systems
+Incorporated which may be registered in certain jurisdictions.
+
+
+Copyright 1989 Network Computing Devices, Inc., Mountain View, California.
+
+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 of N.C.D. not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. N.C.D. makes no representations about the
+suitability of this software for any purpose. It is provided "as is"
+without express or implied warranty.
+
+
+Copyright (c) 1987 by the Regents of the University of California
+
+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. The University of California
+makes no representations about the suitability of this
+software for any purpose. It is provided "as is" without
+express or implied warranty.
+
+
+Copyright 1992, 1993 Data General Corporation;
+Copyright 1992, 1993 OMRON Corporation
+
+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
+neither the name OMRON or DATA GENERAL be used in advertising or publicity
+pertaining to distribution of the software without specific, written prior
+permission of the party whose name is to be used. Neither OMRON or
+DATA GENERAL make any representation about the suitability of this software
+for any purpose. It is provided "as is" without express or implied warranty.
+
+OMRON AND DATA GENERAL EACH DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
+IN NO EVENT SHALL OMRON OR DATA GENERAL 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.
+
+
+Copyright © 1998-2004, 2006 Keith Packard
+Copyright © 2000-2002 Keith Packard, member of The XFree86 Project, Inc.
+Copyright (c) 2002 Apple Computer, Inc.
+Copyright (c) 2003 Torrey T. Lyons.
+All Rights Reserved.
+
+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 Keith Packard not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Keith Packard makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL KEITH PACKARD 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.
+
+
+Copyright © 1999 Keith Packard
+Copyright © 2000 Compaq Computer Corporation
+Copyright © 2002 MontaVista Software Inc.
+Copyright © 2005 OpenedHand Ltd.
+Copyright © 2006 Nokia Corporation
+
+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 the authors and/or copyright holders
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission. The authors and/or
+copyright holders make no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+THE AUTHORS AND/OR COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL THE AUTHORS AND/OR COPYRIGHT HOLDERS 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.
+
+
+Copyright 1993 by Davor Matic
+
+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. Davor Matic makes no representations about
+the suitability of this software for any purpose. It is provided "as
+is" without express or implied warranty.
+
+
+Copyright (C) 2001-2004 Harold L Hunt II All Rights Reserved.
+Copyright (C) Colin Harrison 2005-2008
+
+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 HAROLD L HUNT II 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 Harold L Hunt II
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+from Harold L Hunt II.
+
+
+Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+
+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 Thomas Roell not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Thomas Roell makes no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THOMAS ROELL 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.
+
+
+Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
+Copyright 1993 by David Wexelblat <dwex@goblin.org>
+
+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 names of Thomas Roell and David Wexelblat
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission. Thomas Roell and
+David Wexelblat makes no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+THOMAS ROELL AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID WEXELBLAT 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.
+
+
+Copyright 1990,91,92,93 by Thomas Roell, Germany.
+Copyright 1991,92,93 by SGCS (Snitily Graphics Consulting Services), USA.
+
+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 Thomas Roell nor
+SGCS be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+Thomas Roell nor SGCS makes no representations about the suitability
+of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+
+THOMAS ROELL AND SGCS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THOMAS ROELL OR SGCS 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.
+
+
+Copyright 1998 by Alan Hourihane, Wigan, England.
+Copyright 2000-2002 by Alan Hourihane, Flint Mountain, North Wales.
+
+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 Alan Hourihane not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Alan Hourihane makes no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ALAN HOURIHANE 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.
+
+
+Copyright 1995 Kaleb S. KEITHLEY
+
+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 Kaleb S. KEITHLEY 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 Kaleb S. KEITHLEY
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+from Kaleb S. KEITHLEY
+
+
+Copyright (c) 1997 Matthieu Herrb
+
+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 Matthieu Herrb not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Matthieu Herrb makes no
+representations about the suitability of this software for any purpose.
+ It is provided "as is" without express or implied warranty.
+
+MATTHIEU HERRB DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL MATTHIEU HERRB 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.
+
+
+Copyright 2004, Egbert Eich
+
+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
+EGBERT EICH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Egbert Eich shall not
+be used in advertising or otherwise to promote the sale, use or other deal-
+ings in this Software without prior written authorization from Egbert Eich.
+
+
+Copyright 1993 by David Wexelblat <dwex@goblin.org>
+Copyright 2005 by Kean Johnston <jkj@sco.com>
+Copyright 1993 by David McCullough <davidm@stallion.oz.au>
+
+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 David Wexelblat not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. David Wexelblat makes no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL DAVID WEXELBLAT 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.
+
+
+Copyright 1992 by Orest Zborowski <obz@Kodak.com>
+Copyright 1993 by David Wexelblat <dwex@goblin.org>
+
+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 names of Orest Zborowski and David Wexelblat
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission. Orest Zborowski
+and David Wexelblat make no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+OREST ZBOROWSKI AND DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID WEXELBLAT 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.
+
+
+Copyright 1992 by Orest Zborowski <obz@Kodak.com>
+Copyright 1993 by David Dawes <dawes@xfree86.org>
+
+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 names of Orest Zborowski and David Dawes
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission. Orest Zborowski
+and David Dawes make no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+OREST ZBOROWSKI AND DAVID DAWES DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL OREST ZBOROWSKI OR DAVID DAWES 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.
+
+
+Copyright 1995-1999 by Frederic Lepied, France. <fred@sugix.frmug.fr.net>
+
+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 Frederic Lepied not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Frederic Lepied makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FREDERIC LEPIED 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.
+
+
+Copyright 1992 by Rich Murphey <Rich@Rice.edu>
+Copyright 1993 by David Wexelblat <dwex@goblin.org>
+
+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 names of Rich Murphey and David Wexelblat
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission. Rich Murphey and
+David Wexelblat make no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+RICH MURPHEY AND DAVID WEXELBLAT DISCLAIM ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID WEXELBLAT 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.
+
+
+Copyright 1992 by Rich Murphey <Rich@Rice.edu>
+Copyright 1993 by David Dawes <dawes@xfree86.org>
+
+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 names of Rich Murphey and David Dawes
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission. Rich Murphey and
+David Dawes make no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+RICH MURPHEY AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL RICH MURPHEY OR DAVID DAWES 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.
+
+
+Copyright © 2003-2004 Anders Carlsson
+
+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 Anders Carlsson not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Anders Carlsson makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+ANDERS CARLSSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ANDERS CARLSSON 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.
+
+
+Copyright (C) 2003 Anders Carlsson
+Copyright © 2003-2004 Eric Anholt
+Copyright © 2004 Keith Packard
+
+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 Eric Anholt not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Eric Anholt makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+ERIC ANHOLT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ERIC ANHOLT 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.
+
+
+Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE
+FOR ANY SPECIAL, DIRECT, 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.
+
+
+Copyright © 2003-2004 Philip Blundell
+
+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 Philip Blundell not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Philip Blundell makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+PHILIP BLUNDELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL PHILIP BLUNDELL 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.
+
+
+
+Copyright (c) 1994-2003 by The XFree86 Project, Inc.
+Copyright 1997 by Metro Link, Inc.
+Copyright 2003 by David H. Dawes.
+Copyright 2003 by X-Oz Technologies.
+Copyright (c) 2004, X.Org Foundation
+
+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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
+and author(s) 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 copyright holder(s) and author(s).
+
+
+Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany
+Copyright 1993 by David Wexelblat <dwex@goblin.org>
+Copyright 1999 by David Holland <davidh@iquest.net>
+Copyright © 2000 Compaq Computer Corporation
+Copyright © 2002 Hewlett-Packard Company
+Copyright © 2004, 2005 Red Hat, Inc.
+Copyright © 2004 Nicholas Miell
+Copyright © 2005 Trolltech AS
+Copyright © 2006 Intel Corporation
+Copyright © 2006-2007 Keith Packard
+Copyright © 2008 Red Hat, Inc
+Copyright © 2008 George Sapountzis <gsap7@yahoo.gr>
+
+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 the copyright holders not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. The copyright holders make no representations
+about the suitability of this software for any purpose. It is provided "as
+is" without express or implied warranty.
+
+THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS 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.
+
+
+Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
+ 2005 Lars Knoll & Zack Rusin, Trolltech
+
+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 Keith Packard not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Keith Packard makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS 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.
+
+
+Copyright 1987, 1998 The Open Group
+Copyright © 1998-1999, 2001 The XFree86 Project, Inc.
+Copyright © 2000 VA Linux Systems, Inc.
+Copyright (c) 2000, 2001 Nokia Home Communications
+Copyright © 2007, 2008 Red Hat, Inc.
+All rights reserved.
+
+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, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+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
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+
+Copyright 1996 by Thomas E. Dickey <dickey@clark.net>
+
+ 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 name of the above listed
+copyright holder(s) not be used in advertising or publicity pertaining
+to distribution of the software without specific, written prior
+permission.
+
+THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
+
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+Copyright (c) 2001 Andreas Monitzer.
+Copyright (c) 2001-2004 Greg Parker.
+Copyright (c) 2001-2004 Torrey T. Lyons
+Copyright (c) 2002-2003 Apple Computer, Inc.
+Copyright (c) 2004-2005 Alexander Gottwald
+Copyright (c) 2002-2009 Apple Inc.
+Copyright (c) 2007 Jeremy Huddleston
+All Rights Reserved.
+
+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 ABOVE LISTED COPYRIGHT HOLDER(S) 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(s) of the above copyright
+holders shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in this Software without prior written authorization.
+
+
+Copyright (C) 1999,2000 by Eric Sunshine <sunshine@sunshineco.com>
+Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+Copyright (C) 2005 Bogdan D. bogdand@users.sourceforge.net
+
+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
+AUTHOR 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 author 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 author.
+
+
+Copyright © 2002 David Dawes
+
+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 AUTHOR(S) 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 author(s) 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 author(s).
+
+
+Copyright (C) 1996-1999 SciTech Software, Inc.
+Copyright (C) David Mosberger-Tang
+Copyright (C) 1999 Egbert Eich
+Copyright (C) 2008 Bart Trojanowski, Symbio Technologies, LLC
+
+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 the authors not be used
+in advertising or publicity pertaining to distribution of the software
+without specific, written prior permission. The authors makes no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE AUTHORS 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.
+
+
+Copyright 2005-2006 Luc Verhaegen.
+
+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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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.
+
+
+Copyright 1995 by Robin Cutshaw <robin@XFree86.Org>
+Copyright 2000 by Egbert Eich
+Copyright 2002 by David Dawes
+
+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 names of the above listed copyright holder(s)
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission. The above listed
+copyright holder(s) make(s) no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM(S) ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) 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.
+
+
+Copyright 1997-2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
+
+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 Marc Aurele La France not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. Marc Aurele La France makes no representations
+about the suitability of this software for any purpose. It is provided
+"as-is" without express or implied warranty.
+
+MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+EVENT SHALL MARC AURELE LA FRANCE 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.
+
+
+Copyright 1990, 1991 by Thomas Roell, Dinkelscherben, Germany
+Copyright 1992 by David Dawes <dawes@XFree86.org>
+Copyright 1992 by Jim Tsillas <jtsilla@damon.ccs.northeastern.edu>
+Copyright 1992 by Rich Murphey <Rich@Rice.edu>
+Copyright 1992 by Robert Baron <Robert.Baron@ernst.mach.cs.cmu.edu>
+Copyright 1992 by Orest Zborowski <obz@eskimo.com>
+Copyright 1993 by Vrije Universiteit, The Netherlands
+Copyright 1993 by David Wexelblat <dwex@XFree86.org>
+Copyright 1994, 1996 by Holger Veit <Holger.Veit@gmd.de>
+Copyright 1997 by Takis Psarogiannakopoulos <takis@dpmms.cam.ac.uk>
+Copyright 1994-2003 by The XFree86 Project, Inc
+
+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 names of the above listed copyright holders
+not be used in advertising or publicity pertaining to distribution of
+the software without specific, written prior permission. The above listed
+copyright holders make no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+THE ABOVE LISTED COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDERS 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.
+
+
+Copyright 2001-2005 by J. Kean Johnston <jkj@sco.com>
+
+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 J. Kean Johnston not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. J. Kean Johnston makes no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+J. KEAN JOHNSTON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL J. KEAN JOHNSTON 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.
+
+
+Copyright (C) 2000 Jakub Jelinek (jakub@redhat.com)
+
+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
+JAKUB JELINEK 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.
+
+
+Copyright 1997,1998 by UCHIYAMA Yasushi
+
+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 UCHIYAMA Yasushi not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. UCHIYAMA Yasushi makes no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+UCHIYAMA YASUSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL UCHIYAMA YASUSHI 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.
+
+
+Copyright (C) 2000 Keith Packard
+ 2004 Eric Anholt
+ 2005 Zack Rusin
+
+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 copyright holders not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Copyright holders make no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS 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.
+
+
+(C) Copyright IBM Corporation 2002-2007
+All Rights Reserved.
+
+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
+on the rights to use, copy, modify, merge, publish, distribute, sub
+license, 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 (including the next
+paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
+THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS 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.
+
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+this permission notice appear in supporting documentation. 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
+AUTHOR 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.
+
+
+Copyright © 2007 OpenedHand Ltd
+
+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 OpenedHand Ltd not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. OpenedHand Ltd makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+OpenedHand Ltd DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL OpenedHand Ltd 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.
+
+
+Copyright (c) 1989, 1990, 1993, 1994
+ The Regents of the University of California. All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Chris Torek.
+
+This code is derived from software contributed to Berkeley by
+Michael Rendell of Memorial University of Newfoundland.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 4. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/xorg-server/README b/xorg-server/README
index b2499a059..58abd8e87 100644
--- a/xorg-server/README
+++ b/xorg-server/README
@@ -1,38 +1,38 @@
- X Server
-
-The X server accepts requests from client applications to create windows,
-which are (normally rectangular) "virtual screens" that the client program
-can draw into.
-
-Windows are then composed on the actual screen by the X server
-(or by a separate composite manager) as directed by the window manager,
-which usually communicates with the user via graphical controls such as buttons
-and draggable titlebars and borders.
-
-For a comprehensive overview of X Server and X Window System, consult the
-following article:
-http://en.wikipedia.org/wiki/X_server
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/xserver
-
- http://cgit.freedesktop.org/xorg/xserver
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+ X Server
+
+The X server accepts requests from client applications to create windows,
+which are (normally rectangular) "virtual screens" that the client program
+can draw into.
+
+Windows are then composed on the actual screen by the X server
+(or by a separate composite manager) as directed by the window manager,
+which usually communicates with the user via graphical controls such as buttons
+and draggable titlebars and borders.
+
+For a comprehensive overview of X Server and X Window System, consult the
+following article:
+http://en.wikipedia.org/wiki/X_server
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/xserver
+
+ http://cgit.freedesktop.org/xorg/xserver
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/xorg-server/Xext/panoramiX.c b/xorg-server/Xext/panoramiX.c
index 98d327f26..de62a35e7 100644
--- a/xorg-server/Xext/panoramiX.c
+++ b/xorg-server/Xext/panoramiX.c
@@ -150,7 +150,7 @@ static GCFuncs XineramaGCFuncs = {
(pGC)->funcs = &XineramaGCFuncs;
static Bool
-XineramaCloseScreen(int i, ScreenPtr pScreen)
+XineramaCloseScreen(ScreenPtr pScreen)
{
PanoramiXScreenPtr pScreenPriv = (PanoramiXScreenPtr)
dixLookupPrivate(&pScreen->devPrivates, PanoramiXScreenKey);
@@ -163,7 +163,7 @@ XineramaCloseScreen(int i, ScreenPtr pScreen)
free((pointer) pScreenPriv);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
static Bool
diff --git a/xorg-server/Xext/shm.c b/xorg-server/Xext/shm.c
index 7a73640dd..06a919bdc 100644
--- a/xorg-server/Xext/shm.c
+++ b/xorg-server/Xext/shm.c
@@ -204,14 +204,14 @@ CheckForShmSyscall(void)
#endif
static Bool
-ShmCloseScreen(int i, ScreenPtr pScreen)
+ShmCloseScreen(ScreenPtr pScreen)
{
ShmScrPrivateRec *screen_priv = ShmGetScreenPriv(pScreen);
pScreen->CloseScreen = screen_priv->CloseScreen;
dixSetPrivate(&pScreen->devPrivates, shmScrPrivateKey, NULL);
free(screen_priv);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
static ShmScrPrivateRec *
diff --git a/xorg-server/Xext/xf86bigfontsrv.h b/xorg-server/Xext/xf86bigfontsrv.h
index 2c78dc4c9..3c4887dfd 100644
--- a/xorg-server/Xext/xf86bigfontsrv.h
+++ b/xorg-server/Xext/xf86bigfontsrv.h
@@ -1,34 +1,34 @@
-/*
- * Copyright © 2010 Yaakov Selkowitz
- *
- * 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 (including the
- * next paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-#ifndef _XF86BIGFONTSRV_H_
-#define _XF86BIGFONTSRV_H_
-
-#include <X11/fonts/font.h>
-
-extern void XFree86BigfontExtensionInit(void);
-extern void XF86BigfontFreeFontShm(FontPtr);
-extern void XF86BigfontCleanup(void);
-
-#endif
+/*
+ * Copyright © 2010 Yaakov Selkowitz
+ *
+ * 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 (including the
+ * next paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+#ifndef _XF86BIGFONTSRV_H_
+#define _XF86BIGFONTSRV_H_
+
+#include <X11/fonts/font.h>
+
+extern void XFree86BigfontExtensionInit(void);
+extern void XF86BigfontFreeFontShm(FontPtr);
+extern void XF86BigfontCleanup(void);
+
+#endif
diff --git a/xorg-server/Xext/xvdisp.h b/xorg-server/Xext/xvdisp.h
index 298d39560..b3580a8ef 100644
--- a/xorg-server/Xext/xvdisp.h
+++ b/xorg-server/Xext/xvdisp.h
@@ -1,2 +1,2 @@
-extern void XineramifyXv(void);
-extern void XvResetProcVector(void);
+extern void XineramifyXv(void);
+extern void XvResetProcVector(void);
diff --git a/xorg-server/Xext/xvdix.h b/xorg-server/Xext/xvdix.h
index d22672620..59fc1ffc8 100644
--- a/xorg-server/Xext/xvdix.h
+++ b/xorg-server/Xext/xvdix.h
@@ -215,7 +215,7 @@ typedef struct {
DestroyWindowProcPtr DestroyWindow;
DestroyPixmapProcPtr DestroyPixmap;
CloseScreenProcPtr CloseScreen;
- Bool (*ddCloseScreen) (int, ScreenPtr);
+ Bool (*ddCloseScreen) (ScreenPtr);
int (*ddQueryAdaptors) (ScreenPtr, XvAdaptorPtr *, int *);
DevUnion devPriv;
} XvScreenRec, *XvScreenPtr;
diff --git a/xorg-server/Xext/xvmain.c b/xorg-server/Xext/xvmain.c
index 28f2a56df..0b508611c 100644
--- a/xorg-server/Xext/xvmain.c
+++ b/xorg-server/Xext/xvmain.c
@@ -129,7 +129,7 @@ static void WriteSwappedVideoNotifyEvent(xvEvent *, xvEvent *);
static void WriteSwappedPortNotifyEvent(xvEvent *, xvEvent *);
static Bool CreateResourceTypes(void);
-static Bool XvCloseScreen(int, ScreenPtr);
+static Bool XvCloseScreen(ScreenPtr);
static Bool XvDestroyPixmap(PixmapPtr);
static Bool XvDestroyWindow(WindowPtr);
static void XvResetProc(ExtensionEntry *);
@@ -290,7 +290,7 @@ XvScreenInit(ScreenPtr pScreen)
}
static Bool
-XvCloseScreen(int ii, ScreenPtr pScreen)
+XvCloseScreen(ScreenPtr pScreen)
{
XvScreenPtr pxvs;
@@ -301,13 +301,13 @@ XvCloseScreen(int ii, ScreenPtr pScreen)
pScreen->DestroyWindow = pxvs->DestroyWindow;
pScreen->CloseScreen = pxvs->CloseScreen;
- if (pxvs->ddCloseScreen) (*pxvs->ddCloseScreen) (ii, pScreen);
+ if (pxvs->ddCloseScreen) (*pxvs->ddCloseScreen) (pScreen);
free(pxvs);
dixSetPrivate(&pScreen->devPrivates, XvScreenKey, NULL);
- return (*pScreen->CloseScreen) (ii, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
static void
diff --git a/xorg-server/Xext/xvmc.c b/xorg-server/Xext/xvmc.c
index 8a1d94085..4aaff4d9f 100644
--- a/xorg-server/Xext/xvmc.c
+++ b/xorg-server/Xext/xvmc.c
@@ -709,7 +709,7 @@ XvMCExtensionInit(void)
}
static Bool
-XvMCCloseScreen(int i, ScreenPtr pScreen)
+XvMCCloseScreen(ScreenPtr pScreen)
{
XvMCScreenPtr pScreenPriv = XVMC_GET_PRIVATE(pScreen);
@@ -717,7 +717,7 @@ XvMCCloseScreen(int i, ScreenPtr pScreen)
free(pScreenPriv);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
int
diff --git a/xorg-server/Xi/Makefile.am b/xorg-server/Xi/Makefile.am
index 69c7886b9..499e7056d 100644
--- a/xorg-server/Xi/Makefile.am
+++ b/xorg-server/Xi/Makefile.am
@@ -1,108 +1,108 @@
-noinst_LTLIBRARIES = libXi.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-libXi_la_SOURCES = \
- allowev.c \
- allowev.h \
- chgdctl.c \
- chgdctl.h \
- chgfctl.c \
- chgfctl.h \
- chgkbd.c \
- chgkbd.h \
- chgkmap.c \
- chgkmap.h \
- chgprop.c \
- chgprop.h \
- chgptr.c \
- chgptr.h \
- closedev.c \
- closedev.h \
- devbell.c \
- devbell.h \
- exevents.c \
- exglobals.h \
- extinit.c \
- getbmap.c \
- getbmap.h \
- getdctl.c \
- getdctl.h \
- getfctl.c \
- getfctl.h \
- getfocus.c \
- getfocus.h \
- getkmap.c \
- getkmap.h \
- getmmap.c \
- getmmap.h \
- getprop.c \
- getprop.h \
- getselev.c \
- getselev.h \
- getvers.c \
- getvers.h \
- grabdev.c \
- grabdev.h \
- grabdevb.c \
- grabdevb.h \
- grabdevk.c \
- grabdevk.h \
- gtmotion.c \
- gtmotion.h \
- listdev.c \
- listdev.h \
- opendev.c \
- opendev.h \
- queryst.c \
- queryst.h \
- selectev.c \
- selectev.h \
- sendexev.c \
- sendexev.h \
- setbmap.c \
- setbmap.h \
- setdval.c \
- setdval.h \
- setfocus.c \
- setfocus.h \
- setmmap.c \
- setmmap.h \
- setmode.c \
- setmode.h \
- ungrdev.c \
- ungrdev.h \
- ungrdevb.c \
- ungrdevb.h \
- ungrdevk.c \
- ungrdevk.h \
- xiallowev.c \
- xiallowev.h \
- xichangecursor.c \
- xichangecursor.h \
- xichangehierarchy.c \
- xichangehierarchy.h \
- xigetclientpointer.c \
- xigetclientpointer.h \
- xigrabdev.c \
- xigrabdev.h \
- xipassivegrab.h \
- xipassivegrab.c \
- xiproperty.c \
- xiproperty.h \
- xiquerydevice.c \
- xiquerydevice.h \
- xiquerypointer.c \
- xiquerypointer.h \
- xiqueryversion.c \
- xiqueryversion.h \
- xiselectev.c \
- xiselectev.h \
- xisetclientpointer.c \
- xisetclientpointer.h \
- xisetdevfocus.c \
- xisetdevfocus.h \
- xiwarppointer.c \
- xiwarppointer.h
-
-EXTRA_DIST = stubs.c
+noinst_LTLIBRARIES = libXi.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+libXi_la_SOURCES = \
+ allowev.c \
+ allowev.h \
+ chgdctl.c \
+ chgdctl.h \
+ chgfctl.c \
+ chgfctl.h \
+ chgkbd.c \
+ chgkbd.h \
+ chgkmap.c \
+ chgkmap.h \
+ chgprop.c \
+ chgprop.h \
+ chgptr.c \
+ chgptr.h \
+ closedev.c \
+ closedev.h \
+ devbell.c \
+ devbell.h \
+ exevents.c \
+ exglobals.h \
+ extinit.c \
+ getbmap.c \
+ getbmap.h \
+ getdctl.c \
+ getdctl.h \
+ getfctl.c \
+ getfctl.h \
+ getfocus.c \
+ getfocus.h \
+ getkmap.c \
+ getkmap.h \
+ getmmap.c \
+ getmmap.h \
+ getprop.c \
+ getprop.h \
+ getselev.c \
+ getselev.h \
+ getvers.c \
+ getvers.h \
+ grabdev.c \
+ grabdev.h \
+ grabdevb.c \
+ grabdevb.h \
+ grabdevk.c \
+ grabdevk.h \
+ gtmotion.c \
+ gtmotion.h \
+ listdev.c \
+ listdev.h \
+ opendev.c \
+ opendev.h \
+ queryst.c \
+ queryst.h \
+ selectev.c \
+ selectev.h \
+ sendexev.c \
+ sendexev.h \
+ setbmap.c \
+ setbmap.h \
+ setdval.c \
+ setdval.h \
+ setfocus.c \
+ setfocus.h \
+ setmmap.c \
+ setmmap.h \
+ setmode.c \
+ setmode.h \
+ ungrdev.c \
+ ungrdev.h \
+ ungrdevb.c \
+ ungrdevb.h \
+ ungrdevk.c \
+ ungrdevk.h \
+ xiallowev.c \
+ xiallowev.h \
+ xichangecursor.c \
+ xichangecursor.h \
+ xichangehierarchy.c \
+ xichangehierarchy.h \
+ xigetclientpointer.c \
+ xigetclientpointer.h \
+ xigrabdev.c \
+ xigrabdev.h \
+ xipassivegrab.h \
+ xipassivegrab.c \
+ xiproperty.c \
+ xiproperty.h \
+ xiquerydevice.c \
+ xiquerydevice.h \
+ xiquerypointer.c \
+ xiquerypointer.h \
+ xiqueryversion.c \
+ xiqueryversion.h \
+ xiselectev.c \
+ xiselectev.h \
+ xisetclientpointer.c \
+ xisetclientpointer.h \
+ xisetdevfocus.c \
+ xisetdevfocus.h \
+ xiwarppointer.c \
+ xiwarppointer.h
+
+EXTRA_DIST = stubs.c
diff --git a/xorg-server/autogen.sh b/xorg-server/autogen.sh
index 4e8b11ba9..588fef395 100644
--- a/xorg-server/autogen.sh
+++ b/xorg-server/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf --force -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf --force -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/xorg-server/composite/Makefile.am b/xorg-server/composite/Makefile.am
index c2f5123f2..a7c0804e8 100644
--- a/xorg-server/composite/Makefile.am
+++ b/xorg-server/composite/Makefile.am
@@ -1,15 +1,15 @@
-noinst_LTLIBRARIES = libcomposite.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-if XORG
-sdk_HEADERS = compositeext.h
-endif
-
-libcomposite_la_SOURCES = \
- compalloc.c \
- compext.c \
- compint.h \
- compinit.c \
- compoverlay.c \
- compwindow.c
+noinst_LTLIBRARIES = libcomposite.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+if XORG
+sdk_HEADERS = compositeext.h
+endif
+
+libcomposite_la_SOURCES = \
+ compalloc.c \
+ compext.c \
+ compint.h \
+ compinit.c \
+ compoverlay.c \
+ compwindow.c
diff --git a/xorg-server/composite/compalloc.c b/xorg-server/composite/compalloc.c
index e85ade0f0..f79f5f96c 100644
--- a/xorg-server/composite/compalloc.c
+++ b/xorg-server/composite/compalloc.c
@@ -55,14 +55,13 @@ compScreenUpdate(ScreenPtr pScreen)
}
static void
-compBlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask)
+compBlockHandler(ScreenPtr pScreen, pointer pTimeout, pointer pReadmask)
{
- ScreenPtr pScreen = screenInfo.screens[i];
CompScreenPtr cs = GetCompScreen(pScreen);
pScreen->BlockHandler = cs->BlockHandler;
compScreenUpdate(pScreen);
- (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
+ (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask);
/* Next damage will restore the block handler */
cs->BlockHandler = NULL;
diff --git a/xorg-server/composite/compinit.c b/xorg-server/composite/compinit.c
index eaa125681..bc1130e78 100644
--- a/xorg-server/composite/compinit.c
+++ b/xorg-server/composite/compinit.c
@@ -53,7 +53,7 @@ DevPrivateKeyRec CompWindowPrivateKeyRec;
DevPrivateKeyRec CompSubwindowsPrivateKeyRec;
static Bool
-compCloseScreen(int index, ScreenPtr pScreen)
+compCloseScreen(ScreenPtr pScreen)
{
CompScreenPtr cs = GetCompScreen(pScreen);
Bool ret;
@@ -82,7 +82,7 @@ compCloseScreen(int index, ScreenPtr pScreen)
free(cs);
dixSetPrivate(&pScreen->devPrivates, CompScreenPrivateKey, NULL);
- ret = (*pScreen->CloseScreen) (index, pScreen);
+ ret = (*pScreen->CloseScreen) (pScreen);
return ret;
}
diff --git a/xorg-server/config/10-evdev.conf b/xorg-server/config/10-evdev.conf
index cc83ab232..144110846 100644
--- a/xorg-server/config/10-evdev.conf
+++ b/xorg-server/config/10-evdev.conf
@@ -1,40 +1,40 @@
-#
-# Catch-all evdev loader for udev-based systems
-# We don't simply match on any device since that also adds accelerometers
-# and other devices that we don't really want to use. The list below
-# matches everything but joysticks.
-
-Section "InputClass"
- Identifier "evdev pointer catchall"
- MatchIsPointer "on"
- MatchDevicePath "/dev/input/event*"
- Driver "evdev"
-EndSection
-
-Section "InputClass"
- Identifier "evdev keyboard catchall"
- MatchIsKeyboard "on"
- MatchDevicePath "/dev/input/event*"
- Driver "evdev"
-EndSection
-
-Section "InputClass"
- Identifier "evdev touchpad catchall"
- MatchIsTouchpad "on"
- MatchDevicePath "/dev/input/event*"
- Driver "evdev"
-EndSection
-
-Section "InputClass"
- Identifier "evdev tablet catchall"
- MatchIsTablet "on"
- MatchDevicePath "/dev/input/event*"
- Driver "evdev"
-EndSection
-
-Section "InputClass"
- Identifier "evdev touchscreen catchall"
- MatchIsTouchscreen "on"
- MatchDevicePath "/dev/input/event*"
- Driver "evdev"
-EndSection
+#
+# Catch-all evdev loader for udev-based systems
+# We don't simply match on any device since that also adds accelerometers
+# and other devices that we don't really want to use. The list below
+# matches everything but joysticks.
+
+Section "InputClass"
+ Identifier "evdev pointer catchall"
+ MatchIsPointer "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "evdev"
+EndSection
+
+Section "InputClass"
+ Identifier "evdev keyboard catchall"
+ MatchIsKeyboard "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "evdev"
+EndSection
+
+Section "InputClass"
+ Identifier "evdev touchpad catchall"
+ MatchIsTouchpad "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "evdev"
+EndSection
+
+Section "InputClass"
+ Identifier "evdev tablet catchall"
+ MatchIsTablet "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "evdev"
+EndSection
+
+Section "InputClass"
+ Identifier "evdev touchscreen catchall"
+ MatchIsTouchscreen "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "evdev"
+EndSection
diff --git a/xorg-server/config/dbus-api b/xorg-server/config/dbus-api
index 018e98657..3c5ea32a6 100644
--- a/xorg-server/config/dbus-api
+++ b/xorg-server/config/dbus-api
@@ -1,40 +1,40 @@
-D-BUS Configuration API v2
-----------------------------
-
-The X server will register the bus name org.x.config.displayN, and the
-object /org/x/config/N, where N is the display number.
-
-Currently only hotplugging of input devices is supported.
-
-org.x.config.input:
- org.x.config.input.version:
- Returns one unsigned int32, which is the API version.
-
- org.x.config.input.add:
- Takes an argument of key/value option pairs in arrays, e.g.:
- [ss][ss][ss][ss]
- is the signature for four options. These options will be passed
- to the input driver as with any others.
- Option names beginning with _ are not allowed; they are reserved
- for internal use.
-
- Returns a number of signed int32s. Positive integers are the
- device IDs of new devices; negative numbers are X error codes,
- as defined in X.h. BadMatch will be returned if the options
- given do not match any device. BadValue is returned for a malformed
- message. (Example: 8 is new device ID 8; -8 is BadMatch.)
-
- Notably, BadAlloc is never returned: the server internally signals
- to D-BUS that the attempt failed for lack of memory.
-
- org.x.config.input.remove:
- Takes one uint32 argument, which is the device ID to remove, i.e.:
- u
- is the signature.
-
- Returns one signed int32 which represents an X status as defined in
- X.h. See org.x.config.input.add. Error codes are negative numbers.
-
- org.x.config.input.listDevices:
- Lists the currently active devices. No argument.
- Return value is sequence of [<id> <name>] [<id> <name>] ..., i.e. [us].
+D-BUS Configuration API v2
+----------------------------
+
+The X server will register the bus name org.x.config.displayN, and the
+object /org/x/config/N, where N is the display number.
+
+Currently only hotplugging of input devices is supported.
+
+org.x.config.input:
+ org.x.config.input.version:
+ Returns one unsigned int32, which is the API version.
+
+ org.x.config.input.add:
+ Takes an argument of key/value option pairs in arrays, e.g.:
+ [ss][ss][ss][ss]
+ is the signature for four options. These options will be passed
+ to the input driver as with any others.
+ Option names beginning with _ are not allowed; they are reserved
+ for internal use.
+
+ Returns a number of signed int32s. Positive integers are the
+ device IDs of new devices; negative numbers are X error codes,
+ as defined in X.h. BadMatch will be returned if the options
+ given do not match any device. BadValue is returned for a malformed
+ message. (Example: 8 is new device ID 8; -8 is BadMatch.)
+
+ Notably, BadAlloc is never returned: the server internally signals
+ to D-BUS that the attempt failed for lack of memory.
+
+ org.x.config.input.remove:
+ Takes one uint32 argument, which is the device ID to remove, i.e.:
+ u
+ is the signature.
+
+ Returns one signed int32 which represents an X status as defined in
+ X.h. See org.x.config.input.add. Error codes are negative numbers.
+
+ org.x.config.input.listDevices:
+ Lists the currently active devices. No argument.
+ Return value is sequence of [<id> <name>] [<id> <name>] ..., i.e. [us].
diff --git a/xorg-server/config/xorg-server.conf b/xorg-server/config/xorg-server.conf
index 47a9a7824..e80f8df08 100644
--- a/xorg-server/config/xorg-server.conf
+++ b/xorg-server/config/xorg-server.conf
@@ -1,13 +1,13 @@
-<!DOCTYPE busconfig PUBLIC
- "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
- <policy context="default">
- <allow own="org.x.config.display0"/>
- <allow send_destination="org.x.config.display0"/>
- <allow send_interface="org.x.config.display0"/>
- <allow own="org.x.config.display1"/>
- <allow send_destination="org.x.config.display1"/>
- <allow send_interface="org.x.config.display1"/>
- </policy>
-</busconfig>
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <policy context="default">
+ <allow own="org.x.config.display0"/>
+ <allow send_destination="org.x.config.display0"/>
+ <allow send_interface="org.x.config.display0"/>
+ <allow own="org.x.config.display1"/>
+ <allow send_destination="org.x.config.display1"/>
+ <allow send_interface="org.x.config.display1"/>
+ </policy>
+</busconfig>
diff --git a/xorg-server/damageext/Makefile.am b/xorg-server/damageext/Makefile.am
index 35f7620fb..b082fd2cf 100644
--- a/xorg-server/damageext/Makefile.am
+++ b/xorg-server/damageext/Makefile.am
@@ -1,8 +1,8 @@
-noinst_LTLIBRARIES = libdamageext.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-libdamageext_la_SOURCES = \
- damageext.c \
- damageext.h \
- damageextint.h
+noinst_LTLIBRARIES = libdamageext.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+libdamageext_la_SOURCES = \
+ damageext.c \
+ damageext.h \
+ damageextint.h
diff --git a/xorg-server/dbe/Makefile.am b/xorg-server/dbe/Makefile.am
index 043555b8c..965d2fa26 100644
--- a/xorg-server/dbe/Makefile.am
+++ b/xorg-server/dbe/Makefile.am
@@ -1,13 +1,13 @@
-noinst_LTLIBRARIES = libdbe.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-if XORG
-sdk_HEADERS = dbestruct.h
-endif
-
-libdbe_la_SOURCES = \
- dbe.c \
- midbe.c \
- midbe.h \
- midbestr.h
+noinst_LTLIBRARIES = libdbe.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+if XORG
+sdk_HEADERS = dbestruct.h
+endif
+
+libdbe_la_SOURCES = \
+ dbe.c \
+ midbe.c \
+ midbe.h \
+ midbestr.h
diff --git a/xorg-server/dix/.gitignore b/xorg-server/dix/.gitignore
new file mode 100644
index 000000000..65f2f8c62
--- /dev/null
+++ b/xorg-server/dix/.gitignore
@@ -0,0 +1,3 @@
+# Add & Override for this directory and it's subdirectories
+Xserver-dtrace.h
+dix.O
diff --git a/xorg-server/dix/BuiltInAtoms b/xorg-server/dix/BuiltInAtoms
index 910c62706..473990e7b 100644
--- a/xorg-server/dix/BuiltInAtoms
+++ b/xorg-server/dix/BuiltInAtoms
@@ -1,329 +1,329 @@
-File: .../x11/server/dix/BuiltInAtoms
-
-This file is of a fixed format and is used to generate both the file
-include/XAtom.h and dix/initatoms.c. Neither of those files should be
-edited directly. Changing the atoms in this file, or even the order in
-which they occur, is equivalent to forcing a new (minor) version number
-on the server. Take care.
-
-The format of the file is that each built in atom starts in column 1
-with no text, other than spaces and tabs, on that line other than a
-mandatory trailing "@" at the end of the line. For each atom (Foo)
-below the defines will be of the form
- #define XA_Foo <n>
-and the string value of the atom will be "Foo".
-
-The comment lines in this file are not guaranteed to be accurate. To see the
-current truth, look at the Xlib documentation as well as the protocol spec.
-
-Atoms occur in five distinct name spaces within the protocol. Any particular
-atom may or may not have some client interpretation within each of the name
-spaces. For each of the built in atoms, the intended semantics and the space
-within which it is defined is indicated.
-
-Those name spaces are
- Property names
- Property types
- Selections
- Font properties
- Type of a ClientMessage event (none built into server)
-
-For the font properties mentioned here, see the spec for more information.
-
- -- Selections --
-
-PRIMARY @
- Selection.
-SECONDARY @
- Selection.
-
- -- Property types and names --
-
-ARC @
- Property type:
- x, y: INT16
- width, height: CARD16,
- angle1, angle2: INT16
-ATOM @
- Property type:
- atom: ATOM
-BITMAP @
- Property type:
- bitmap: PIXMAP
- This is asserted to be of depth 1.
-CARDINAL @
- Property type:
- card: CARD32 or CARD16 or CARD8
- the datum size is dependent on the property format
-COLORMAP @
- Property type:
- colormap: COLORMAP
-CURSOR @
- Property type:
- cursor: CURSOR
-CUT_BUFFER0 @
-CUT_BUFFER1 @
-CUT_BUFFER2 @
-CUT_BUFFER3 @
-CUT_BUFFER4 @
-CUT_BUFFER5 @
-CUT_BUFFER6 @
-CUT_BUFFER7 @
- Property name: (type: STRING)
- Used to implement cut buffer ring, in particular Andrew uses
- this mechanism. Anyone else using this sort of IPC mechanism
- should use these properties.
-
- Data is normally fetched and stored out of CUT_BUFFER0; the
- RotateProperties request is used to rotate these buffers.
-DRAWABLE @
- Property type:
- drawable: DRAWABLE
-FONT @
- Property type:
- font: FONT
-INTEGER @
- Property type:
- card: INT32 or INT16 or INT8
- the datum size is dependent on the property format
-PIXMAP @
- Property type:
- pixmap: PIXMAP
-POINT @
- Property type:
- x, y: INT16
-RECTANGLE @
- Property type:
- x, y: INT16
- width, height: CARD16
-RESOURCE_MANAGER @
- Property name: (type: STRING)
- Contents of the user's resource manager data base.
-RGB_COLOR_MAP @
- Property type:
- colormap: COLORMAP
- red-max: CARD32
- red-mult: CARD32
- green-max: CARD32
- green-mult: CARD32
- blue-max: CARD32
- blue-mult: CARD32
- base-pixel: CARD32
-
- The fields `red_max', `green_max', and `blue_max' give the maximum
- red, green, and blue values, respectively. Each color
- coefficient ranges from 0 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. Such a 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.
-
- The fields `red_mult', `green_mult', and `blue_mult' give the
- scale factors used to compose a full pixel value. (See next
- paragraph.) 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.
-
- The field `base_pixel' gives the base pixel value used to
- compose a full pixel value. Normally base_pixel is obtained
- from a call to XAllocColorPlanes(). Given integer red, green,
- and blue coefficients in their appropriate ranges, one can
- compute a corresponding pixel value with the expression:
-
- r * red_mult + g * green_mult + b * blue_mult + base_pixel
-
- For gray-scale colormaps, only the colormap, red_max, red_mult,
- and base_pixel fields are defined; the other fields are
- ignored. To compute a gray-scale pixel value, use:
-
- gray * red_mult + base_pixel
-
- This is provided to allow applications to share color maps.
-
-RGB_BEST_MAP @
-RGB_BLUE_MAP @
-RGB_DEFAULT_MAP @
-RGB_GRAY_MAP @
-RGB_GREEN_MAP @
-RGB_RED_MAP @
- Property name: (type: RGB_COLOR_MAP)
- The needs of most applications can be met with five colormaps.
- Polite applications may need only a small RGB space, and can
- use a portion of the default color map. Applications doing
- high-quality RGB rendering will need an entire colormap,
- filled with as large an RGB space as possible, e.g. 332. For
- color separations, an application may need maximum device
- resolution for each of red, green, and blue, even if this
- requires three renderings with three colormaps.
-
- Each of the above five names would be used for sharing color
- maps.
-STRING @
- Property type:
- sequence of Bytes
-VISUALID @
- Property type:
- visual: VISUALID
-WINDOW @
- Property type:
- window: WINDOW
-WM_COMMAND @
- Property name: (type: STRING)
- Command line arguments used to invoke this application. The
- arguments are delimited by null characters (ASCII 0).
-WM_HINTS @
- Property type:
- flags: CARD32
- input: BOOL32
- initial-state: CARD32
- icon-pixmap: PIXMAP
- icon-window: WINDOW
- icon_mask: BITMAP
- icon-x, icon-y: INT32
- flags contains the following bits
- 0x00000001 input hint
- 0x00000002 state hint
- 0x00000004 icon pixmap hint
- 0x00000008 icon window hint
- 0x00000010 icon position hint
- values for initial-state
- 0 unspecified -> application does not
- care and WM should pick one.
- 1 normal
- 2 zoomed
- 3 iconic
- 4 inactive -> application believes
- itself to be seldomly used. WM may wish to
- place it on an inactive menu.
- This type is potentially extensible. The order is critical;
- append to the end only.
- Property name: (type: WM_HINTS)
- Additional hints set by the client for use by the window
- manager.
-WM_CLIENT_MACHINE @
- Property name: (type: STRING)
- used to communicate with the window manager. The host name
- of the machine the client is running on may be set here.
-WM_ICON_NAME @
- Property name: (type: STRING)
- what the application would like the label to be for
- the iconic form of the window.
-WM_ICON_SIZE @
- Property type:
- minWidth, min-height: CARD32
- maxWidth, max-height: CARD32
- widthInc, height-inc: CARD32
- Property name: (type: ICON_SIZE)
- The window manager may set this property on the root window
- to specify the icon sizes it allows.
-WM_NAME @
- Property name: (type: STRING)
- used to communicate with the window manager. This is
- what the application would like the label for the window.
-WM_NORMAL_HINTS @
- Property name: (type: SIZE_HINTS)
- used to communicate with the window manager. This is size
- hints for a window in its "normal" state.
-WM_SIZE_HINTS @
- Property type:
- flags: CARD32
- x, y: INT32
- width, height: CARD32
- min-width, min-height: CARD32
- max-width, max-height: CARD32
- width-inc, height-inc: CARD32
- min-aspect-x, min-aspect-y: CARD32
- max-aspect-x, max-aspect-y: CARD32
- flags contains the following bits
- 0x00000001 user specified x and y
- 0x00000002 user specified width and height
- 0x00000004 program specified position
- 0x00000008 program specified size
- 0x00000010 program specified minimum size
- 0x00000020 program specified maximum size
- 0x00000040 program specified resize increment
- 0x00000080 program specified aspect ratio
- This type is potentially extensible. The order is critical;
- append to the end only.
-WM_ZOOM_HINTS @
- Property name: (type: SIZE_HINTS)
- used to communicate with the window manager. This is size
- hints for a window in its "zoomed" state.
-
- -- Font properties --
-
-MIN_SPACE @
- Font property: CARD32
-NORM_SPACE @
- Font property: CARD32
-MAX_SPACE @
- Font property: CARD32
-END_SPACE @
- Font property: CARD32
-SUPERSCRIPT_X @
- Font property: INT32
-SUPERSCRIPT_Y @
- Font property: INT32
-SUBSCRIPT_X @
- Font property: INT32
-SUBSCRIPT_Y @
- Font property: INT32
-UNDERLINE_POSITION @
- Font property: INT32
-UNDERLINE_THICKNESS @
- Font property: CARD32
-STRIKEOUT_ASCENT @
- Font property: INT32
-STRIKEOUT_DESCENT @
- Font property: INT32
-ITALIC_ANGLE @
- Font property: INT32
-X_HEIGHT @
- Font property: INT32
-QUAD_WIDTH @
- Font property: INT32
-WEIGHT @
- Font property: CARD32
-POINT_SIZE @
- Font property: CARD32
-RESOLUTION @
- Font property: CARD32
-
-The following optional properties on fonts have values that are atoms. The
-atom print name is the useful information.
-
-COPYRIGHT @
- of the font distribution
-NOTICE @
- trademark/copyright of the character shapes
-FONT_NAME @
- name of this particular instance of a font
-FAMILY_NAME @
- name of the 'font family' to which it belongs
-FULL_NAME @
- full text name of the font
-
-The following aren't in order but putting them at the end avoids encoding
-changes.
-
-CAP_HEIGHT @
- Font property: CARD32
-
-
-WM_CLASS @
- Property name: (type: STRING)
- Used (possibly by some window managers; definitely by
- session managers) to look up resources in the resource
- data base on behalf of the client who set this property.
- There are 2 elements:
- {char *resource_name; char *resource_class;}
- delimited by a null character (ascii 0)
-
-WM_TRANSIENT_FOR @
- Property name: (type: WINDOW)
- Used by transient top-level windows, such as dialog
- boxes, to point to their logical "parents". The window
- manager can then take down the dialog boxes when the
- "parent" gets iconified, for instance.
+File: .../x11/server/dix/BuiltInAtoms
+
+This file is of a fixed format and is used to generate both the file
+include/XAtom.h and dix/initatoms.c. Neither of those files should be
+edited directly. Changing the atoms in this file, or even the order in
+which they occur, is equivalent to forcing a new (minor) version number
+on the server. Take care.
+
+The format of the file is that each built in atom starts in column 1
+with no text, other than spaces and tabs, on that line other than a
+mandatory trailing "@" at the end of the line. For each atom (Foo)
+below the defines will be of the form
+ #define XA_Foo <n>
+and the string value of the atom will be "Foo".
+
+The comment lines in this file are not guaranteed to be accurate. To see the
+current truth, look at the Xlib documentation as well as the protocol spec.
+
+Atoms occur in five distinct name spaces within the protocol. Any particular
+atom may or may not have some client interpretation within each of the name
+spaces. For each of the built in atoms, the intended semantics and the space
+within which it is defined is indicated.
+
+Those name spaces are
+ Property names
+ Property types
+ Selections
+ Font properties
+ Type of a ClientMessage event (none built into server)
+
+For the font properties mentioned here, see the spec for more information.
+
+ -- Selections --
+
+PRIMARY @
+ Selection.
+SECONDARY @
+ Selection.
+
+ -- Property types and names --
+
+ARC @
+ Property type:
+ x, y: INT16
+ width, height: CARD16,
+ angle1, angle2: INT16
+ATOM @
+ Property type:
+ atom: ATOM
+BITMAP @
+ Property type:
+ bitmap: PIXMAP
+ This is asserted to be of depth 1.
+CARDINAL @
+ Property type:
+ card: CARD32 or CARD16 or CARD8
+ the datum size is dependent on the property format
+COLORMAP @
+ Property type:
+ colormap: COLORMAP
+CURSOR @
+ Property type:
+ cursor: CURSOR
+CUT_BUFFER0 @
+CUT_BUFFER1 @
+CUT_BUFFER2 @
+CUT_BUFFER3 @
+CUT_BUFFER4 @
+CUT_BUFFER5 @
+CUT_BUFFER6 @
+CUT_BUFFER7 @
+ Property name: (type: STRING)
+ Used to implement cut buffer ring, in particular Andrew uses
+ this mechanism. Anyone else using this sort of IPC mechanism
+ should use these properties.
+
+ Data is normally fetched and stored out of CUT_BUFFER0; the
+ RotateProperties request is used to rotate these buffers.
+DRAWABLE @
+ Property type:
+ drawable: DRAWABLE
+FONT @
+ Property type:
+ font: FONT
+INTEGER @
+ Property type:
+ card: INT32 or INT16 or INT8
+ the datum size is dependent on the property format
+PIXMAP @
+ Property type:
+ pixmap: PIXMAP
+POINT @
+ Property type:
+ x, y: INT16
+RECTANGLE @
+ Property type:
+ x, y: INT16
+ width, height: CARD16
+RESOURCE_MANAGER @
+ Property name: (type: STRING)
+ Contents of the user's resource manager data base.
+RGB_COLOR_MAP @
+ Property type:
+ colormap: COLORMAP
+ red-max: CARD32
+ red-mult: CARD32
+ green-max: CARD32
+ green-mult: CARD32
+ blue-max: CARD32
+ blue-mult: CARD32
+ base-pixel: CARD32
+
+ The fields `red_max', `green_max', and `blue_max' give the maximum
+ red, green, and blue values, respectively. Each color
+ coefficient ranges from 0 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. Such a 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.
+
+ The fields `red_mult', `green_mult', and `blue_mult' give the
+ scale factors used to compose a full pixel value. (See next
+ paragraph.) 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.
+
+ The field `base_pixel' gives the base pixel value used to
+ compose a full pixel value. Normally base_pixel is obtained
+ from a call to XAllocColorPlanes(). Given integer red, green,
+ and blue coefficients in their appropriate ranges, one can
+ compute a corresponding pixel value with the expression:
+
+ r * red_mult + g * green_mult + b * blue_mult + base_pixel
+
+ For gray-scale colormaps, only the colormap, red_max, red_mult,
+ and base_pixel fields are defined; the other fields are
+ ignored. To compute a gray-scale pixel value, use:
+
+ gray * red_mult + base_pixel
+
+ This is provided to allow applications to share color maps.
+
+RGB_BEST_MAP @
+RGB_BLUE_MAP @
+RGB_DEFAULT_MAP @
+RGB_GRAY_MAP @
+RGB_GREEN_MAP @
+RGB_RED_MAP @
+ Property name: (type: RGB_COLOR_MAP)
+ The needs of most applications can be met with five colormaps.
+ Polite applications may need only a small RGB space, and can
+ use a portion of the default color map. Applications doing
+ high-quality RGB rendering will need an entire colormap,
+ filled with as large an RGB space as possible, e.g. 332. For
+ color separations, an application may need maximum device
+ resolution for each of red, green, and blue, even if this
+ requires three renderings with three colormaps.
+
+ Each of the above five names would be used for sharing color
+ maps.
+STRING @
+ Property type:
+ sequence of Bytes
+VISUALID @
+ Property type:
+ visual: VISUALID
+WINDOW @
+ Property type:
+ window: WINDOW
+WM_COMMAND @
+ Property name: (type: STRING)
+ Command line arguments used to invoke this application. The
+ arguments are delimited by null characters (ASCII 0).
+WM_HINTS @
+ Property type:
+ flags: CARD32
+ input: BOOL32
+ initial-state: CARD32
+ icon-pixmap: PIXMAP
+ icon-window: WINDOW
+ icon_mask: BITMAP
+ icon-x, icon-y: INT32
+ flags contains the following bits
+ 0x00000001 input hint
+ 0x00000002 state hint
+ 0x00000004 icon pixmap hint
+ 0x00000008 icon window hint
+ 0x00000010 icon position hint
+ values for initial-state
+ 0 unspecified -> application does not
+ care and WM should pick one.
+ 1 normal
+ 2 zoomed
+ 3 iconic
+ 4 inactive -> application believes
+ itself to be seldomly used. WM may wish to
+ place it on an inactive menu.
+ This type is potentially extensible. The order is critical;
+ append to the end only.
+ Property name: (type: WM_HINTS)
+ Additional hints set by the client for use by the window
+ manager.
+WM_CLIENT_MACHINE @
+ Property name: (type: STRING)
+ used to communicate with the window manager. The host name
+ of the machine the client is running on may be set here.
+WM_ICON_NAME @
+ Property name: (type: STRING)
+ what the application would like the label to be for
+ the iconic form of the window.
+WM_ICON_SIZE @
+ Property type:
+ minWidth, min-height: CARD32
+ maxWidth, max-height: CARD32
+ widthInc, height-inc: CARD32
+ Property name: (type: ICON_SIZE)
+ The window manager may set this property on the root window
+ to specify the icon sizes it allows.
+WM_NAME @
+ Property name: (type: STRING)
+ used to communicate with the window manager. This is
+ what the application would like the label for the window.
+WM_NORMAL_HINTS @
+ Property name: (type: SIZE_HINTS)
+ used to communicate with the window manager. This is size
+ hints for a window in its "normal" state.
+WM_SIZE_HINTS @
+ Property type:
+ flags: CARD32
+ x, y: INT32
+ width, height: CARD32
+ min-width, min-height: CARD32
+ max-width, max-height: CARD32
+ width-inc, height-inc: CARD32
+ min-aspect-x, min-aspect-y: CARD32
+ max-aspect-x, max-aspect-y: CARD32
+ flags contains the following bits
+ 0x00000001 user specified x and y
+ 0x00000002 user specified width and height
+ 0x00000004 program specified position
+ 0x00000008 program specified size
+ 0x00000010 program specified minimum size
+ 0x00000020 program specified maximum size
+ 0x00000040 program specified resize increment
+ 0x00000080 program specified aspect ratio
+ This type is potentially extensible. The order is critical;
+ append to the end only.
+WM_ZOOM_HINTS @
+ Property name: (type: SIZE_HINTS)
+ used to communicate with the window manager. This is size
+ hints for a window in its "zoomed" state.
+
+ -- Font properties --
+
+MIN_SPACE @
+ Font property: CARD32
+NORM_SPACE @
+ Font property: CARD32
+MAX_SPACE @
+ Font property: CARD32
+END_SPACE @
+ Font property: CARD32
+SUPERSCRIPT_X @
+ Font property: INT32
+SUPERSCRIPT_Y @
+ Font property: INT32
+SUBSCRIPT_X @
+ Font property: INT32
+SUBSCRIPT_Y @
+ Font property: INT32
+UNDERLINE_POSITION @
+ Font property: INT32
+UNDERLINE_THICKNESS @
+ Font property: CARD32
+STRIKEOUT_ASCENT @
+ Font property: INT32
+STRIKEOUT_DESCENT @
+ Font property: INT32
+ITALIC_ANGLE @
+ Font property: INT32
+X_HEIGHT @
+ Font property: INT32
+QUAD_WIDTH @
+ Font property: INT32
+WEIGHT @
+ Font property: CARD32
+POINT_SIZE @
+ Font property: CARD32
+RESOLUTION @
+ Font property: CARD32
+
+The following optional properties on fonts have values that are atoms. The
+atom print name is the useful information.
+
+COPYRIGHT @
+ of the font distribution
+NOTICE @
+ trademark/copyright of the character shapes
+FONT_NAME @
+ name of this particular instance of a font
+FAMILY_NAME @
+ name of the 'font family' to which it belongs
+FULL_NAME @
+ full text name of the font
+
+The following aren't in order but putting them at the end avoids encoding
+changes.
+
+CAP_HEIGHT @
+ Font property: CARD32
+
+
+WM_CLASS @
+ Property name: (type: STRING)
+ Used (possibly by some window managers; definitely by
+ session managers) to look up resources in the resource
+ data base on behalf of the client who set this property.
+ There are 2 elements:
+ {char *resource_name; char *resource_class;}
+ delimited by a null character (ascii 0)
+
+WM_TRANSIENT_FOR @
+ Property name: (type: WINDOW)
+ Used by transient top-level windows, such as dialog
+ boxes, to point to their logical "parents". The window
+ manager can then take down the dialog boxes when the
+ "parent" gets iconified, for instance.
diff --git a/xorg-server/dix/buildatoms b/xorg-server/dix/buildatoms
index dfbbca8a9..efc61b6f9 100644
--- a/xorg-server/dix/buildatoms
+++ b/xorg-server/dix/buildatoms
@@ -1,43 +1,43 @@
-#!/bin/sh
-hfile=../../../include/Xatom.h
-cfile=initatoms.c
-rm -f $hfile $cfile
-umask 222
-awk '
-BEGIN {
- hfile = "'$hfile'";
- cfile = "'$cfile'";
- hformat = "#define XA_%s ((Atom) %d)\n";
- printf("#ifndef XATOM_H\n") > hfile;
- printf("#define XATOM_H 1\n\n") > hfile;
- printf("/* THIS IS A GENERATED FILE\n") > hfile;
- printf(" *\n") > hfile;
- printf(" * Do not change! Changing this file implies a protocol change!\n") > hfile;
- printf(" */\n\n") > hfile;
-
- printf("/* THIS IS A GENERATED FILE\n") > cfile;
- printf(" *\n") > cfile;
- printf(" * Do not change! Changing this file implies a protocol change!\n") > cfile;
- printf(" */\n\n") > cfile;
- printf("#include \"X.h\"\n") > cfile;
- printf("#include \"Xatom.h\"\n") > cfile;
- printf("#include \"misc.h\"\n") > cfile;
- printf("#include \"dix.h\"\n") > cfile;
- printf("void MakePredeclaredAtoms()\n") > cfile;
- printf("{\n") > cfile;
-
- }
-
-NF == 2 && $2 == "@" {
- printf(hformat, $1, ++atomno) > hfile ;
- printf(" if (MakeAtom(\"%s\", %d, 1) != XA_%s) AtomError();\n", $1, length($1), $1) > cfile ;
- }
-
-END {
- printf("\n") > hfile;
- printf(hformat, "LAST_PREDEFINED", atomno) > hfile ;
- printf("#endif /* XATOM_H */\n") > hfile;
- printf("}\n") > cfile ;
- }
-' BuiltInAtoms
-exit 0
+#!/bin/sh
+hfile=../../../include/Xatom.h
+cfile=initatoms.c
+rm -f $hfile $cfile
+umask 222
+awk '
+BEGIN {
+ hfile = "'$hfile'";
+ cfile = "'$cfile'";
+ hformat = "#define XA_%s ((Atom) %d)\n";
+ printf("#ifndef XATOM_H\n") > hfile;
+ printf("#define XATOM_H 1\n\n") > hfile;
+ printf("/* THIS IS A GENERATED FILE\n") > hfile;
+ printf(" *\n") > hfile;
+ printf(" * Do not change! Changing this file implies a protocol change!\n") > hfile;
+ printf(" */\n\n") > hfile;
+
+ printf("/* THIS IS A GENERATED FILE\n") > cfile;
+ printf(" *\n") > cfile;
+ printf(" * Do not change! Changing this file implies a protocol change!\n") > cfile;
+ printf(" */\n\n") > cfile;
+ printf("#include \"X.h\"\n") > cfile;
+ printf("#include \"Xatom.h\"\n") > cfile;
+ printf("#include \"misc.h\"\n") > cfile;
+ printf("#include \"dix.h\"\n") > cfile;
+ printf("void MakePredeclaredAtoms()\n") > cfile;
+ printf("{\n") > cfile;
+
+ }
+
+NF == 2 && $2 == "@" {
+ printf(hformat, $1, ++atomno) > hfile ;
+ printf(" if (MakeAtom(\"%s\", %d, 1) != XA_%s) AtomError();\n", $1, length($1), $1) > cfile ;
+ }
+
+END {
+ printf("\n") > hfile;
+ printf(hformat, "LAST_PREDEFINED", atomno) > hfile ;
+ printf("#endif /* XATOM_H */\n") > hfile;
+ printf("}\n") > cfile ;
+ }
+' BuiltInAtoms
+exit 0
diff --git a/xorg-server/dix/dispatch.c b/xorg-server/dix/dispatch.c
index 60d57a352..1ed1d4863 100644
--- a/xorg-server/dix/dispatch.c
+++ b/xorg-server/dix/dispatch.c
@@ -3772,8 +3772,7 @@ with its screen number, a pointer to its ScreenRec, argc, and argv.
*/
int
-AddScreen(Bool (*pfnInit) (int /*index */ ,
- ScreenPtr /*pScreen */ ,
+AddScreen(Bool (*pfnInit) (ScreenPtr /*pScreen */ ,
int /*argc */ ,
char ** /*argv */
), int argc, char **argv)
@@ -3841,7 +3840,7 @@ AddScreen(Bool (*pfnInit) (int /*index */ ,
*/
screenInfo.screens[i] = pScreen;
screenInfo.numScreens++;
- if (!(*pfnInit) (i, pScreen, argc, argv)) {
+ if (!(*pfnInit) (pScreen, argc, argv)) {
dixFreePrivates(pScreen->devPrivates, PRIVATE_SCREEN);
free(pScreen);
screenInfo.numScreens--;
diff --git a/xorg-server/dix/dixutils.c b/xorg-server/dix/dixutils.c
index 9eb54893a..b249a810b 100644
--- a/xorg-server/dix/dixutils.c
+++ b/xorg-server/dix/dixutils.c
@@ -384,9 +384,8 @@ BlockHandler(pointer pTimeout, pointer pReadmask)
++inHandler;
for (i = 0; i < screenInfo.numScreens; i++)
- (*screenInfo.screens[i]->BlockHandler) (i,
- screenInfo.screens[i]->
- blockData, pTimeout, pReadmask);
+ (*screenInfo.screens[i]->BlockHandler) (screenInfo.screens[i],
+ pTimeout, pReadmask);
for (i = 0; i < numHandlers; i++)
if (!handlers[i].deleted)
(*handlers[i].BlockHandler) (handlers[i].blockData,
@@ -421,9 +420,8 @@ WakeupHandler(int result, pointer pReadmask)
(*handlers[i].WakeupHandler) (handlers[i].blockData,
result, pReadmask);
for (i = 0; i < screenInfo.numScreens; i++)
- (*screenInfo.screens[i]->WakeupHandler) (i,
- screenInfo.screens[i]->
- wakeupData, result, pReadmask);
+ (*screenInfo.screens[i]->WakeupHandler) (screenInfo.screens[i],
+ result, pReadmask);
if (handlerDeleted) {
for (i = 0; i < numHandlers;)
if (handlers[i].deleted) {
diff --git a/xorg-server/dix/gc.c b/xorg-server/dix/gc.c
index ec7e24f13..0a7b5165c 100644
--- a/xorg-server/dix/gc.c
+++ b/xorg-server/dix/gc.c
@@ -476,32 +476,21 @@ ChangeGCXIDs(ClientPtr client, GC * pGC, BITS32 mask, CARD32 *pC32)
return ChangeGC(client, pGC, mask, vals);
}
-/* CreateGC(pDrawable, mask, pval, pStatus)
- creates a default GC for the given drawable, using mask to fill
- in any non-default values.
- Returns a pointer to the new GC on success, NULL otherwise.
- returns status of non-default fields in pStatus
-BUG:
- should check for failure to create default tile
-
-*/
-GCPtr
-CreateGC(DrawablePtr pDrawable, BITS32 mask, XID *pval, int *pStatus,
- XID gcid, ClientPtr client)
+static GCPtr
+NewGCObject(ScreenPtr pScreen, int depth)
{
GCPtr pGC;
pGC = dixAllocateObjectWithPrivates(GC, PRIVATE_GC);
if (!pGC) {
- *pStatus = BadAlloc;
return (GCPtr) NULL;
}
- pGC->pScreen = pDrawable->pScreen;
- pGC->depth = pDrawable->depth;
+ pGC->pScreen = pScreen;
+ pGC->depth = depth;
pGC->alu = GXcopy; /* dst <- src */
pGC->planemask = ~0;
- pGC->serialNumber = GC_CHANGE_SERIAL_BIT;
+ pGC->serialNumber = 0;
pGC->funcs = 0;
pGC->fgPixel = 0;
pGC->bgPixel = 1;
@@ -514,17 +503,8 @@ CreateGC(DrawablePtr pDrawable, BITS32 mask, XID *pval, int *pStatus,
pGC->arcMode = ArcPieSlice;
pGC->tile.pixel = 0;
pGC->tile.pixmap = NullPixmap;
- if (mask & GCForeground) {
- /*
- * magic special case -- ChangeGC checks for this condition
- * and snags the Foreground value to create a pseudo default-tile
- */
- pGC->tileIsPixel = FALSE;
- }
- else {
- pGC->tileIsPixel = TRUE;
- }
+ pGC->tileIsPixel = TRUE;
pGC->patOrg.x = 0;
pGC->patOrg.y = 0;
pGC->subWindowMode = ClipByChildren;
@@ -539,12 +519,49 @@ CreateGC(DrawablePtr pDrawable, BITS32 mask, XID *pval, int *pStatus,
/* use the default font and stipple */
pGC->font = defaultFont;
- defaultFont->refcnt++;
+ if (pGC->font) /* necessary, because open of default font could fail */
+ pGC->font->refcnt++;
pGC->stipple = pGC->pScreen->PixmapPerDepth[0];
- pGC->stipple->refcnt++;
+ if (pGC->stipple)
+ pGC->stipple->refcnt++;
/* this is not a scratch GC */
pGC->scratch_inuse = FALSE;
+ return pGC;
+}
+
+/* CreateGC(pDrawable, mask, pval, pStatus)
+ creates a default GC for the given drawable, using mask to fill
+ in any non-default values.
+ Returns a pointer to the new GC on success, NULL otherwise.
+ returns status of non-default fields in pStatus
+BUG:
+ should check for failure to create default tile
+
+*/
+GCPtr
+CreateGC(DrawablePtr pDrawable, BITS32 mask, XID *pval, int *pStatus,
+ XID gcid, ClientPtr client)
+{
+ GCPtr pGC;
+
+ pGC = NewGCObject(pDrawable->pScreen, pDrawable->depth);
+ if (!pGC) {
+ *pStatus = BadAlloc;
+ return (GCPtr) NULL;
+ }
+
+ pGC->serialNumber = GC_CHANGE_SERIAL_BIT;
+ if (mask & GCForeground) {
+ /*
+ * magic special case -- ChangeGC checks for this condition
+ * and snags the Foreground value to create a pseudo default-tile
+ */
+ pGC->tileIsPixel = FALSE;
+ }
+ else {
+ pGC->tileIsPixel = TRUE;
+ }
/* security creation/labeling check */
*pStatus = XaceHook(XACE_RESOURCE_ACCESS, client, gcid, RT_GC, pGC,
@@ -802,45 +819,10 @@ CreateScratchGC(ScreenPtr pScreen, unsigned depth)
{
GCPtr pGC;
- pGC = dixAllocateObjectWithPrivates(GC, PRIVATE_GC);
+ pGC = NewGCObject(pScreen, depth);
if (!pGC)
return (GCPtr) NULL;
- pGC->pScreen = pScreen;
- pGC->depth = depth;
- pGC->alu = GXcopy; /* dst <- src */
- pGC->planemask = ~0;
- pGC->serialNumber = 0;
- pGC->fgPixel = 0;
- pGC->bgPixel = 1;
- pGC->lineWidth = 0;
- pGC->lineStyle = LineSolid;
- pGC->capStyle = CapButt;
- pGC->joinStyle = JoinMiter;
- pGC->fillStyle = FillSolid;
- pGC->fillRule = EvenOddRule;
- pGC->arcMode = ArcPieSlice;
- pGC->font = defaultFont;
- if (pGC->font) /* necessary, because open of default font could fail */
- pGC->font->refcnt++;
- pGC->tileIsPixel = TRUE;
- pGC->tile.pixel = 0;
- pGC->tile.pixmap = NullPixmap;
- pGC->stipple = NullPixmap;
- pGC->patOrg.x = 0;
- pGC->patOrg.y = 0;
- pGC->subWindowMode = ClipByChildren;
- pGC->graphicsExposures = TRUE;
- pGC->clipOrg.x = 0;
- pGC->clipOrg.y = 0;
- pGC->clientClipType = CT_NONE;
- pGC->dashOffset = 0;
- pGC->numInDashList = 2;
- pGC->dash = DefaultDash;
-
- /* scratch GCs in the GCperDepth pool start off unused */
- pGC->scratch_inuse = FALSE;
-
pGC->stateChanges = GCAllBits;
if (!(*pScreen->CreateGC) (pGC)) {
FreeGC(pGC, (XID) 0);
diff --git a/xorg-server/dix/main.c b/xorg-server/dix/main.c
index b6a9a4e1c..92f5dcb49 100644
--- a/xorg-server/dix/main.c
+++ b/xorg-server/dix/main.c
@@ -253,7 +253,7 @@ main(int argc, char *argv[], char *envp[])
for (i = 0; i < screenInfo.numScreens; i++) {
ScreenPtr pScreen = screenInfo.screens[i];
- if (!CreateScratchPixmapsForScreen(i))
+ if (!CreateScratchPixmapsForScreen(pScreen))
FatalError("failed to create scratch pixmaps");
if (pScreen->CreateScreenResources &&
!(*pScreen->CreateScreenResources) (pScreen))
@@ -371,10 +371,10 @@ main(int argc, char *argv[], char *envp[])
CloseDownEvents();
for (i = screenInfo.numScreens - 1; i >= 0; i--) {
- FreeScratchPixmapsForScreen(i);
+ FreeScratchPixmapsForScreen(screenInfo.screens[i]);
FreeGCperDepth(i);
FreeDefaultStipple(i);
- (*screenInfo.screens[i]->CloseScreen) (i, screenInfo.screens[i]);
+ (*screenInfo.screens[i]->CloseScreen) (screenInfo.screens[i]);
dixFreePrivates(screenInfo.screens[i]->devPrivates, PRIVATE_SCREEN);
free(screenInfo.screens[i]);
screenInfo.numScreens = i;
diff --git a/xorg-server/dix/pixmap.c b/xorg-server/dix/pixmap.c
index 47b220b58..545ff54ac 100644
--- a/xorg-server/dix/pixmap.c
+++ b/xorg-server/dix/pixmap.c
@@ -84,23 +84,23 @@ FreeScratchPixmapHeader(PixmapPtr pPixmap)
}
Bool
-CreateScratchPixmapsForScreen(int scrnum)
+CreateScratchPixmapsForScreen(ScreenPtr pScreen)
{
unsigned int pixmap_size;
pixmap_size = sizeof(PixmapRec) + dixPrivatesSize(PRIVATE_PIXMAP);
- screenInfo.screens[scrnum]->totalPixmapSize =
+ pScreen->totalPixmapSize =
BitmapBytePad(pixmap_size * 8);
/* let it be created on first use */
- screenInfo.screens[scrnum]->pScratchPixmap = NULL;
+ pScreen->pScratchPixmap = NULL;
return TRUE;
}
void
-FreeScratchPixmapsForScreen(int scrnum)
+FreeScratchPixmapsForScreen(ScreenPtr pScreen)
{
- FreeScratchPixmapHeader(screenInfo.screens[scrnum]->pScratchPixmap);
+ FreeScratchPixmapHeader(pScreen->pScratchPixmap);
}
/* callable by ddx */
diff --git a/xorg-server/dix/protocol.txt b/xorg-server/dix/protocol.txt
index 8e152edaa..6a87ef4c3 100644
--- a/xorg-server/dix/protocol.txt
+++ b/xorg-server/dix/protocol.txt
@@ -1,1103 +1,1103 @@
-# Registry of protocol names used by X Server
-# This will eventually be replaced by server-side XCB
-#
-# Format is Xnnn <extension-name>:<object-name>
-# R=Request, V=Event, E=Error
-#
-# This is a security-sensitive file, please set permissions as appropriate.
-#
-R001 Adobe-DPS-Extension:Init
-R002 Adobe-DPS-Extension:CreateContext
-R003 Adobe-DPS-Extension:CreateSpace
-R004 Adobe-DPS-Extension:GiveInput
-R005 Adobe-DPS-Extension:GetStatus
-R006 Adobe-DPS-Extension:DestroySpace
-R007 Adobe-DPS-Extension:Reset
-R008 Adobe-DPS-Extension:NotifyContext
-R009 Adobe-DPS-Extension:CreateContextFromID
-R010 Adobe-DPS-Extension:XIDFromContext
-R011 Adobe-DPS-Extension:ContextFromXID
-R012 Adobe-DPS-Extension:SetStatusMask
-R013 Adobe-DPS-Extension:CreateSecureContext
-R014 Adobe-DPS-Extension:NotifyWhenReady
-R000 Apple-DRI:QueryVersion
-R001 Apple-DRI:QueryDirectRenderingCapable
-R002 Apple-DRI:CreateSurface
-R003 Apple-DRI:DestroySurface
-R004 Apple-DRI:AuthConnection
-V000 Apple-DRI:ObsoleteEvent1
-V001 Apple-DRI:ObsoleteEvent2
-V002 Apple-DRI:ObsoleteEvent3
-V003 Apple-DRI:SurfaceNotify
-E000 Apple-DRI:ClientNotLocal
-E001 Apple-DRI:OperationNotSupported
-R000 Apple-WM:QueryVersion
-R001 Apple-WM:FrameGetRect
-R002 Apple-WM:FrameHitTest
-R003 Apple-WM:FrameDraw
-R004 Apple-WM:DisableUpdate
-R005 Apple-WM:ReenableUpdate
-R006 Apple-WM:SelectInput
-R007 Apple-WM:SetWindowMenuCheck
-R008 Apple-WM:SetFrontProcess
-R009 Apple-WM:SetWindowLevel
-R010 Apple-WM:SetCanQuit
-R011 Apple-WM:SetWindowMenu
-V000 Apple-WM:ControllerNotify
-V001 Apple-WM:ActivationNotify
-V002 Apple-WM:PasteboardNotify
-E000 Apple-WM:ClientNotLocal
-E001 Apple-WM:OperationNotSupported
-R000 BIG-REQUESTS:Enable
-R000 Composite:CompositeQueryVersion
-R001 Composite:CompositeRedirectWindow
-R002 Composite:CompositeRedirectSubwindows
-R003 Composite:CompositeUnredirectWindow
-R004 Composite:CompositeUnredirectSubwindows
-R005 Composite:CompositeCreateRegionFromBorderClip
-R006 Composite:CompositeNameWindowPixmap
-R007 Composite:CompositeGetOverlayWindow
-R008 Composite:CompositeReleaseOverlayWindow
-R000 DAMAGE:QueryVersion
-R001 DAMAGE:Create
-R002 DAMAGE:Destroy
-R003 DAMAGE:Subtract
-R004 DAMAGE:Add
-V000 DAMAGE:Notify
-E000 DAMAGE:BadDamage
-R000 DEC-XTRAP:Reset
-R001 DEC-XTRAP:GetAvailable
-R002 DEC-XTRAP:Config
-R003 DEC-XTRAP:StartTrap
-R004 DEC-XTRAP:StopTrap
-R005 DEC-XTRAP:GetCurrent
-R006 DEC-XTRAP:GetStatistics
-R007 DEC-XTRAP:SimulateXEvent
-R008 DEC-XTRAP:GetVersion
-R009 DEC-XTRAP:GetLastInpTime
-V000 DEC-XTRAP:Event
-E002 DEC-XTRAP:BadIO
-E004 DEC-XTRAP:BadStatistics
-E005 DEC-XTRAP:BadDevices
-E007 DEC-XTRAP:BadScreen
-E008 DEC-XTRAP:BadSwapReq
-R000 DMX:DMXQueryVersion
-R001 DMX:DMXGetScreenCount
-R002 DMX:DMXGetScreenInfoDEPRECATED
-R003 DMX:DMXGetWindowAttributes
-R004 DMX:DMXGetInputCount
-R005 DMX:DMXGetInputAttributes
-R006 DMX:DMXForceWindowCreationDEPRECATED
-R007 DMX:DMXReconfigureScreenDEPRECATED
-R008 DMX:DMXSync
-R009 DMX:DMXForceWindowCreation
-R010 DMX:DMXGetScreenAttributes
-R011 DMX:DMXChangeScreensAttributes
-R012 DMX:DMXAddScreen
-R013 DMX:DMXRemoveScreen
-R014 DMX:DMXGetDesktopAttributes
-R015 DMX:DMXChangeDesktopAttributes
-R016 DMX:DMXAddInput
-R017 DMX:DMXRemoveInput
-R000 DOUBLE-BUFFER:GetVersion
-R001 DOUBLE-BUFFER:AllocateBackBufferName
-R002 DOUBLE-BUFFER:DeallocateBackBufferName
-R003 DOUBLE-BUFFER:SwapBuffers
-R004 DOUBLE-BUFFER:BeginIdiom
-R005 DOUBLE-BUFFER:EndIdiom
-R006 DOUBLE-BUFFER:GetVisualInfo
-R007 DOUBLE-BUFFER:GetBackBufferAttributes
-E000 DOUBLE-BUFFER:BadBuffer
-R000 DPMS:GetVersion
-R001 DPMS:Capable
-R002 DPMS:GetTimeouts
-R003 DPMS:SetTimeouts
-R004 DPMS:Enable
-R005 DPMS:Disable
-R006 DPMS:ForceLevel
-R007 DPMS:Info
-R000 DRI2:QueryVersion
-R001 DRI2:Connect
-R002 DRI2:Authenticate
-R003 DRI2:CreateDrawable
-R004 DRI2:DestroyDrawable
-R005 DRI2:GetBuffers
-R006 DRI2:CopyRegion
-R007 DRI2:GetBuffersWithFormat
-R000 Extended-Visual-Information:QueryVersion
-R001 Extended-Visual-Information:GetVisualInfo
-R000 FontCache:QueryVersion
-R001 FontCache:GetCacheSettings
-R002 FontCache:ChangeCacheSettings
-R003 FontCache:GetCacheStatistics
-E000 FontCache:BadProtocol
-E001 FontCache:CannotAllocMemory
-R001 GLX:
-R002 GLX:Large
-R003 GLX:CreateContext
-R004 GLX:DestroyContext
-R005 GLX:MakeCurrent
-R006 GLX:IsDirect
-R007 GLX:QueryVersion
-R008 GLX:WaitGL
-R009 GLX:WaitX
-R010 GLX:CopyContext
-R011 GLX:SwapBuffers
-R012 GLX:UseXFont
-R013 GLX:CreateGLXPixmap
-R014 GLX:GetVisualConfigs
-R015 GLX:DestroyGLXPixmap
-R016 GLX:VendorPrivate
-R017 GLX:VendorPrivateWithReply
-R018 GLX:QueryExtensionsString
-R019 GLX:QueryServerString
-R020 GLX:ClientInfo
-R101 GLX:NewList
-R102 GLX:EndList
-R103 GLX:DeleteLists
-R104 GLX:GenLists
-R105 GLX:FeedbackBuffer
-R106 GLX:SelectBuffer
-R107 GLX:Mode
-R108 GLX:Finish
-R109 GLX:PixelStoref
-R110 GLX:PixelStorei
-R111 GLX:ReadPixels
-R112 GLX:GetBooleanv
-R113 GLX:GetClipPlane
-R114 GLX:GetDoublev
-R115 GLX:GetError
-R116 GLX:GetFloatv
-R117 GLX:GetIntegerv
-R118 GLX:GetLightfv
-R119 GLX:GetLightiv
-R120 GLX:GetMapdv
-R121 GLX:GetMapfv
-R122 GLX:GetMapiv
-R123 GLX:GetMaterialfv
-R124 GLX:GetMaterialiv
-R125 GLX:GetPixelfv
-R126 GLX:GetPixelMapuiv
-R127 GLX:GetPixelMapusv
-R128 GLX:GetPolygonStipple
-R129 GLX:GetString
-R130 GLX:GetTexEnvfv
-R131 GLX:GetTexEnviv
-R132 GLX:GetTexGendv
-R133 GLX:GetTexGenfv
-R134 GLX:GetTexGeniv
-R135 GLX:GetTexImage
-R136 GLX:GetTexParameterfv
-R137 GLX:GetTexParameteriv
-R138 GLX:GetTexLevelParameterfv
-R139 GLX:GetTexLevelParameteriv
-R140 GLX:IsEnabled
-R141 GLX:IsList
-R142 GLX:Flush
-E000 GLX:BadContext
-E001 GLX:BadContextState
-E002 GLX:BadDrawable
-E003 GLX:BadPixmap
-E004 GLX:BadContextTag
-E005 GLX:BadCurrentWindow
-E006 GLX:BadRenderRequest
-E007 GLX:BadLargeRequest
-E008 GLX:UnsupportedPrivateRequest
-R000 LBX:QueryVersion
-R001 LBX:StartProxy
-R002 LBX:StopProxy
-R003 LBX:Switch
-R004 LBX:NewClient
-R005 LBX:CloseClient
-R006 LBX:ModifySequence
-R007 LBX:AllowMotion
-R008 LBX:IncrementPixel
-R009 LBX:Delta
-R010 LBX:GetModifierMapping
-R011 LBX:QueryTag
-R012 LBX:InvalidateTag
-R013 LBX:PolyPoint
-R014 LBX:PolyLine
-R015 LBX:PolySegment
-R016 LBX:PolyRectangle
-R017 LBX:PolyArc
-R018 LBX:FillPoly
-R019 LBX:PolyFillRectangle
-R020 LBX:PolyFillArc
-R021 LBX:GetKeyboardMapping
-R022 LBX:QueryFont
-R023 LBX:ChangeProperty
-R024 LBX:GetProperty
-R025 LBX:TagData
-R026 LBX:CopyArea
-R027 LBX:CopyPlane
-R028 LBX:PolyText8
-R029 LBX:PolyText16
-R030 LBX:ImageText8
-R031 LBX:ImageText16
-R032 LBX:QueryExtension
-R033 LBX:PutImage
-R034 LBX:GetImage
-R035 LBX:BeginLargeRequest
-R036 LBX:LargeRequestData
-R037 LBX:EndLargeRequest
-R038 LBX:InternAtoms
-R039 LBX:GetWinAttrAndGeom
-R040 LBX:GrabCmap
-R041 LBX:ReleaseCmap
-R042 LBX:AllocColor
-R043 LBX:Sync
-E000 LBX:BadLbxClient
-R000 MIT-SCREEN-SAVER:QueryVersion
-R001 MIT-SCREEN-SAVER:QueryInfo
-R002 MIT-SCREEN-SAVER:SelectInput
-R003 MIT-SCREEN-SAVER:SetAttributes
-R004 MIT-SCREEN-SAVER:UnsetAttributes
-R005 MIT-SCREEN-SAVER:Suspend
-V000 MIT-SCREEN-SAVER:Notify
-R000 MIT-SHM:QueryVersion
-R001 MIT-SHM:Attach
-R002 MIT-SHM:Detach
-R003 MIT-SHM:PutImage
-R004 MIT-SHM:GetImage
-R005 MIT-SHM:CreatePixmap
-V000 MIT-SHM:Completion
-E000 MIT-SHM:BadShmSeg
-R000 MIT-SUNDRY-NONSTANDARD:SetBugMode
-R001 MIT-SUNDRY-NONSTANDARD:GetBugMode
-R000 Multi-Buffering:GetBufferVersion
-R001 Multi-Buffering:CreateImageBuffers
-R002 Multi-Buffering:DestroyImageBuffers
-R003 Multi-Buffering:DisplayImageBuffers
-R004 Multi-Buffering:SetMBufferAttributes
-R005 Multi-Buffering:GetMBufferAttributes
-R006 Multi-Buffering:SetBufferAttributes
-R007 Multi-Buffering:GetBufferAttributes
-R008 Multi-Buffering:GetBufferInfo
-R009 Multi-Buffering:CreateStereoWindow
-R010 Multi-Buffering:ClearImageBufferArea
-V000 Multi-Buffering:ClobberNotify
-V001 Multi-Buffering:UpdateNotify
-E000 Multi-Buffering:BadBuffer
-R000 RANDR:QueryVersion
-R001 RANDR:OldGetScreenInfo
-R002 RANDR:SetScreenConfig
-R003 RANDR:OldScreenChangeSelectInput
-R004 RANDR:SelectInput
-R005 RANDR:GetScreenInfo
-R006 RANDR:GetScreenSizeRange
-R007 RANDR:SetScreenSize
-R008 RANDR:GetScreenResources
-R009 RANDR:GetOutputInfo
-R010 RANDR:ListOutputProperties
-R011 RANDR:QueryOutputProperty
-R012 RANDR:ConfigureOutputProperty
-R013 RANDR:ChangeOutputProperty
-R014 RANDR:DeleteOutputProperty
-R015 RANDR:GetOutputProperty
-R016 RANDR:CreateMode
-R017 RANDR:DestroyMode
-R018 RANDR:AddOutputMode
-R019 RANDR:DeleteOutputMode
-R020 RANDR:GetCrtcInfo
-R021 RANDR:SetCrtcConfig
-R022 RANDR:GetCrtcGammaSize
-R023 RANDR:GetCrtcGamma
-R024 RANDR:SetCrtcGamma
-R025 RANDR:GetScreenResourcesCurrent
-R026 RANDR:SetCrtcTransform
-R027 RANDR:GetCrtcTransform
-R028 RANDR:GetPanning
-R029 RANDR:SetPanning
-R030 RANDR:SetOutputPrimary
-R031 RANDR:GetOutputPrimary
-V000 RANDR:ScreenChangeNotify
-V001 RANDR:Notify
-E000 RANDR:BadRROutput
-E001 RANDR:BadRRCrtc
-E002 RANDR:BadRRMode
-R000 RECORD:QueryVersion
-R001 RECORD:CreateContext
-R002 RECORD:RegisterClients
-R003 RECORD:UnregisterClients
-R004 RECORD:GetContext
-R005 RECORD:EnableContext
-R006 RECORD:DisableContext
-R007 RECORD:FreeContext
-E000 RECORD:BadContext
-R000 RENDER:QueryVersion
-R001 RENDER:QueryPictFormats
-R002 RENDER:QueryPictIndexValues
-R003 RENDER:QueryDithers
-R004 RENDER:CreatePicture
-R005 RENDER:ChangePicture
-R006 RENDER:SetPictureClipRectangles
-R007 RENDER:FreePicture
-R008 RENDER:Composite
-R009 RENDER:Scale
-R010 RENDER:Trapezoids
-R011 RENDER:Triangles
-R012 RENDER:TriStrip
-R013 RENDER:TriFan
-R014 RENDER:ColorTrapezoids
-R015 RENDER:ColorTriangles
-R016 RENDER:Transform
-R017 RENDER:CreateGlyphSet
-R018 RENDER:ReferenceGlyphSet
-R019 RENDER:FreeGlyphSet
-R020 RENDER:AddGlyphs
-R021 RENDER:AddGlyphsFromPicture
-R022 RENDER:FreeGlyphs
-R023 RENDER:CompositeGlyphs8
-R024 RENDER:CompositeGlyphs16
-R025 RENDER:CompositeGlyphs32
-R026 RENDER:FillRectangles
-R027 RENDER:CreateCursor
-R028 RENDER:SetPictureTransform
-R029 RENDER:QueryFilters
-R030 RENDER:SetPictureFilter
-R031 RENDER:CreateAnimCursor
-R032 RENDER:AddTraps
-R033 RENDER:CreateSolidFill
-R034 RENDER:CreateLinearGradient
-R035 RENDER:CreateRadialGradient
-R036 RENDER:CreateConicalGradient
-E000 RENDER:BadPictFormat
-E001 RENDER:BadPicture
-E002 RENDER:BadPictOp
-E003 RENDER:BadGlyphSet
-E004 RENDER:BadGlyph
-R000 SECURITY:QueryVersion
-R001 SECURITY:GenerateAuthorization
-R002 SECURITY:RevokeAuthorization
-V000 SECURITY:AuthorizationRevoked
-E000 SECURITY:BadAuthorization
-E001 SECURITY:BadAuthorizationProtocol
-R000 SELinux:SELinuxQueryVersion
-R001 SELinux:SELinuxSetDeviceCreateContext
-R002 SELinux:SELinuxGetDeviceCreateContext
-R003 SELinux:SELinuxSetDeviceContext
-R004 SELinux:SELinuxGetDeviceContext
-R005 SELinux:SELinuxSetWindowCreateContext
-R006 SELinux:SELinuxGetWindowCreateContext
-R007 SELinux:SELinuxGetWindowContext
-R008 SELinux:SELinuxSetPropertyCreateContext
-R009 SELinux:SELinuxGetPropertyCreateContext
-R010 SELinux:SELinuxSetPropertyUseContext
-R011 SELinux:SELinuxGetPropertyUseContext
-R012 SELinux:SELinuxGetPropertyContext
-R013 SELinux:SELinuxGetPropertyDataContext
-R014 SELinux:SELinuxListProperties
-R015 SELinux:SELinuxSetSelectionCreateContext
-R016 SELinux:SELinuxGetSelectionCreateContext
-R017 SELinux:SELinuxSetSelectionUseContext
-R018 SELinux:SELinuxGetSelectionUseContext
-R019 SELinux:SELinuxGetSelectionContext
-R020 SELinux:SELinuxGetSelectionDataContext
-R021 SELinux:SELinuxListSelections
-R022 SELinux:SELinuxGetClientContext
-R000 SHAPE:QueryVersion
-R001 SHAPE:Rectangles
-R002 SHAPE:Mask
-R003 SHAPE:Combine
-R004 SHAPE:Offset
-R005 SHAPE:QueryExtents
-R006 SHAPE:SelectInput
-R007 SHAPE:InputSelected
-R008 SHAPE:GetRectangles
-V000 SHAPE:Notify
-R000 SYNC:Initialize
-R001 SYNC:ListSystemCounters
-R002 SYNC:CreateCounter
-R003 SYNC:SetCounter
-R004 SYNC:ChangeCounter
-R005 SYNC:QueryCounter
-R006 SYNC:DestroyCounter
-R007 SYNC:Await
-R008 SYNC:CreateAlarm
-R009 SYNC:ChangeAlarm
-R010 SYNC:QueryAlarm
-R011 SYNC:DestroyAlarm
-R012 SYNC:SetPriority
-R013 SYNC:GetPriority
-V000 SYNC:CounterNotify
-V001 SYNC:AlarmNotify
-E000 SYNC:BadCounter
-E001 SYNC:BadAlarm
-R000 TOG-CUP:QueryVersion
-R001 TOG-CUP:GetReservedColormapEntries
-R002 TOG-CUP:StoreColors
-R000 Windows-WM:QueryVersion
-R001 Windows-WM:FrameGetRect
-R002 Windows-WM:FrameDraw
-R003 Windows-WM:FrameSetTitle
-R004 Windows-WM:DisableUpdate
-R005 Windows-WM:ReenableUpdate
-R006 Windows-WM:SelectInput
-R007 Windows-WM:SetFrontProcess
-V000 Windows-WM:ControllerNotify
-V001 Windows-WM:ActivationNotify
-E000 Windows-WM:ClientNotLocal
-E001 Windows-WM:OperationNotSupported
-R000 X-Resource:QueryVersion
-R001 X-Resource:QueryClients
-R002 X-Resource:QueryClientResources
-R003 X-Resource:QueryClientPixmapBytes
-R001 X11:CreateWindow
-R002 X11:ChangeWindowAttributes
-R003 X11:GetWindowAttributes
-R004 X11:DestroyWindow
-R005 X11:DestroySubwindows
-R006 X11:ChangeSaveSet
-R007 X11:ReparentWindow
-R008 X11:MapWindow
-R009 X11:MapSubwindows
-R010 X11:UnmapWindow
-R011 X11:UnmapSubwindows
-R012 X11:ConfigureWindow
-R013 X11:CirculateWindow
-R014 X11:GetGeometry
-R015 X11:QueryTree
-R016 X11:InternAtom
-R017 X11:GetAtomName
-R018 X11:ChangeProperty
-R019 X11:DeleteProperty
-R020 X11:GetProperty
-R021 X11:ListProperties
-R022 X11:SetSelectionOwner
-R023 X11:GetSelectionOwner
-R024 X11:ConvertSelection
-R025 X11:SendEvent
-R026 X11:GrabPointer
-R027 X11:UngrabPointer
-R028 X11:GrabButton
-R029 X11:UngrabButton
-R030 X11:ChangeActivePointerGrab
-R031 X11:GrabKeyboard
-R032 X11:UngrabKeyboard
-R033 X11:GrabKey
-R034 X11:UngrabKey
-R035 X11:AllowEvents
-R036 X11:GrabServer
-R037 X11:UngrabServer
-R038 X11:QueryPointer
-R039 X11:GetMotionEvents
-R040 X11:TranslateCoords
-R041 X11:WarpPointer
-R042 X11:SetInputFocus
-R043 X11:GetInputFocus
-R044 X11:QueryKeymap
-R045 X11:OpenFont
-R046 X11:CloseFont
-R047 X11:QueryFont
-R048 X11:QueryTextExtents
-R049 X11:ListFonts
-R050 X11:ListFontsWithInfo
-R051 X11:SetFontPath
-R052 X11:GetFontPath
-R053 X11:CreatePixmap
-R054 X11:FreePixmap
-R055 X11:CreateGC
-R056 X11:ChangeGC
-R057 X11:CopyGC
-R058 X11:SetDashes
-R059 X11:SetClipRectangles
-R060 X11:FreeGC
-R061 X11:ClearArea
-R062 X11:CopyArea
-R063 X11:CopyPlane
-R064 X11:PolyPoint
-R065 X11:PolyLine
-R066 X11:PolySegment
-R067 X11:PolyRectangle
-R068 X11:PolyArc
-R069 X11:FillPoly
-R070 X11:PolyFillRectangle
-R071 X11:PolyFillArc
-R072 X11:PutImage
-R073 X11:GetImage
-R074 X11:PolyText8
-R075 X11:PolyText16
-R076 X11:ImageText8
-R077 X11:ImageText16
-R078 X11:CreateColormap
-R079 X11:FreeColormap
-R080 X11:CopyColormapAndFree
-R081 X11:InstallColormap
-R082 X11:UninstallColormap
-R083 X11:ListInstalledColormaps
-R084 X11:AllocColor
-R085 X11:AllocNamedColor
-R086 X11:AllocColorCells
-R087 X11:AllocColorPlanes
-R088 X11:FreeColors
-R089 X11:StoreColors
-R090 X11:StoreNamedColor
-R091 X11:QueryColors
-R092 X11:LookupColor
-R093 X11:CreateCursor
-R094 X11:CreateGlyphCursor
-R095 X11:FreeCursor
-R096 X11:RecolorCursor
-R097 X11:QueryBestSize
-R098 X11:QueryExtension
-R099 X11:ListExtensions
-R100 X11:ChangeKeyboardMapping
-R101 X11:GetKeyboardMapping
-R102 X11:ChangeKeyboardControl
-R103 X11:GetKeyboardControl
-R104 X11:Bell
-R105 X11:ChangePointerControl
-R106 X11:GetPointerControl
-R107 X11:SetScreenSaver
-R108 X11:GetScreenSaver
-R109 X11:ChangeHosts
-R110 X11:ListHosts
-R111 X11:SetAccessControl
-R112 X11:SetCloseDownMode
-R113 X11:KillClient
-R114 X11:RotateProperties
-R115 X11:ForceScreenSaver
-R116 X11:SetPointerMapping
-R117 X11:GetPointerMapping
-R118 X11:SetModifierMapping
-R119 X11:GetModifierMapping
-R127 X11:NoOperation
-V000 X11:X_Error
-V001 X11:X_Reply
-V002 X11:KeyPress
-V003 X11:KeyRelease
-V004 X11:ButtonPress
-V005 X11:ButtonRelease
-V006 X11:MotionNotify
-V007 X11:EnterNotify
-V008 X11:LeaveNotify
-V009 X11:FocusIn
-V010 X11:FocusOut
-V011 X11:KeymapNotify
-V012 X11:Expose
-V013 X11:GraphicsExpose
-V014 X11:NoExpose
-V015 X11:VisibilityNotify
-V016 X11:CreateNotify
-V017 X11:DestroyNotify
-V018 X11:UnmapNotify
-V019 X11:MapNotify
-V020 X11:MapRequest
-V021 X11:ReparentNotify
-V022 X11:ConfigureNotify
-V023 X11:ConfigureRequest
-V024 X11:GravityNotify
-V025 X11:ResizeRequest
-V026 X11:CirculateNotify
-V027 X11:CirculateRequest
-V028 X11:PropertyNotify
-V029 X11:SelectionClear
-V030 X11:SelectionRequest
-V031 X11:SelectionNotify
-V032 X11:ColormapNotify
-V033 X11:ClientMessage
-V034 X11:MappingNotify
-V035 X11:GenericEvent
-E000 X11:Success
-E001 X11:BadRequest
-E002 X11:BadValue
-E003 X11:BadWindow
-E004 X11:BadPixmap
-E005 X11:BadAtom
-E006 X11:BadCursor
-E007 X11:BadFont
-E008 X11:BadMatch
-E009 X11:BadDrawable
-E010 X11:BadAccess
-E011 X11:BadAlloc
-E012 X11:BadColor
-E013 X11:BadGC
-E014 X11:BadIDChoice
-E015 X11:BadName
-E016 X11:BadLength
-E017 X11:BadImplementation
-R001 X3D-PEX:GetExtensionInfo
-R002 X3D-PEX:GetEnumeratedTypeInfo
-R003 X3D-PEX:GetImpDepConstants
-R004 X3D-PEX:CreateLookupTable
-R005 X3D-PEX:CopyLookupTable
-R006 X3D-PEX:FreeLookupTable
-R007 X3D-PEX:GetTableInfo
-R008 X3D-PEX:GetPredefinedEntries
-R009 X3D-PEX:GetDefinedIndices
-R010 X3D-PEX:GetTableEntry
-R011 X3D-PEX:GetTableEntries
-R012 X3D-PEX:SetTableEntries
-R013 X3D-PEX:DeleteTableEntries
-R014 X3D-PEX:CreatePipelineContext
-R015 X3D-PEX:CopyPipelineContext
-R016 X3D-PEX:FreePipelineContext
-R017 X3D-PEX:GetPipelineContext
-R018 X3D-PEX:ChangePipelineContext
-R019 X3D-PEX:CreateRenderer
-R020 X3D-PEX:FreeRenderer
-R021 X3D-PEX:ChangeRenderer
-R022 X3D-PEX:GetRendererAttributes
-R023 X3D-PEX:GetRendererDynamics
-R024 X3D-PEX:BeginRendering
-R025 X3D-PEX:EndRendering
-R026 X3D-PEX:BeginStructure
-R027 X3D-PEX:EndStructure
-R028 X3D-PEX:OutputCommands
-R029 X3D-PEX:Network
-R030 X3D-PEX:CreateStructure
-R031 X3D-PEX:CopyStructure
-R032 X3D-PEX:DestroyStructures
-R033 X3D-PEX:GetStructureInfo
-R034 X3D-PEX:GetElementInfo
-R035 X3D-PEX:GetStructuresInNetwork
-R036 X3D-PEX:GetAncestors
-R037 X3D-PEX:GetDescendants
-R038 X3D-PEX:FetchElements
-R039 X3D-PEX:SetEditingMode
-R040 X3D-PEX:SetElementPointer
-R041 X3D-PEX:SetElementPointerAtLabel
-R042 X3D-PEX:ElementSearch
-R043 X3D-PEX:StoreElements
-R044 X3D-PEX:DeleteElements
-R045 X3D-PEX:DeleteElementsToLabel
-R046 X3D-PEX:DeleteBetweenLabels
-R047 X3D-PEX:CopyElements
-R048 X3D-PEX:ChangeStructureRefs
-R049 X3D-PEX:CreateNameSet
-R050 X3D-PEX:CopyNameSet
-R051 X3D-PEX:FreeNameSet
-R052 X3D-PEX:GetNameSet
-R053 X3D-PEX:ChangeNameSet
-R054 X3D-PEX:CreateSearchContext
-R055 X3D-PEX:CopySearchContext
-R056 X3D-PEX:FreeSearchContext
-R057 X3D-PEX:GetSearchContext
-R058 X3D-PEX:ChangeSearchContext
-R059 X3D-PEX:SearchNetwork
-R060 X3D-PEX:CreatePhigsWks
-R061 X3D-PEX:FreePhigsWks
-R062 X3D-PEX:GetWksInfo
-R063 X3D-PEX:GetDynamics
-R064 X3D-PEX:GetViewRep
-R065 X3D-PEX:RedrawAllStructures
-R066 X3D-PEX:UpdateWorkstation
-R067 X3D-PEX:RedrawClipRegion
-R068 X3D-PEX:ExecuteDeferredActions
-R069 X3D-PEX:SetViewPriority
-R070 X3D-PEX:SetDisplayUpdateMode
-R071 X3D-PEX:MapDCtoWC
-R072 X3D-PEX:MapWCtoDC
-R073 X3D-PEX:SetViewRep
-R074 X3D-PEX:SetWksWindow
-R075 X3D-PEX:SetWksViewport
-R076 X3D-PEX:SetHlhsrMode
-R077 X3D-PEX:SetWksBufferMode
-R078 X3D-PEX:PostStructure
-R079 X3D-PEX:UnpostStructure
-R080 X3D-PEX:UnpostAllStructures
-R081 X3D-PEX:GetWksPostings
-R082 X3D-PEX:GetPickDevice
-R083 X3D-PEX:ChangePickDevice
-R084 X3D-PEX:CreatePickMeasure
-R085 X3D-PEX:FreePickMeasure
-R086 X3D-PEX:GetPickMeasure
-R087 X3D-PEX:UpdatePickMeasure
-R088 X3D-PEX:OpenFont
-R089 X3D-PEX:CloseFont
-R090 X3D-PEX:QueryFont
-R091 X3D-PEX:ListFonts
-R092 X3D-PEX:ListFontsWithInfo
-R093 X3D-PEX:QueryTextExtents
-R094 X3D-PEX:MatchRenderingTargets
-R095 X3D-PEX:Escape
-R096 X3D-PEX:EscapeWithReply
-R097 X3D-PEX:Elements
-R098 X3D-PEX:AccumulateState
-R099 X3D-PEX:BeginPickOne
-R100 X3D-PEX:EndPickOne
-R101 X3D-PEX:PickOne
-R102 X3D-PEX:BeginPickAll
-R103 X3D-PEX:EndPickAll
-R104 X3D-PEX:PickAll
-E000 X3D-PEX:ColorTypeError
-E001 X3D-PEX:erStateError
-E002 X3D-PEX:FloatingPointFormatError
-E003 X3D-PEX:LabelError
-E004 X3D-PEX:LookupTableError
-E005 X3D-PEX:NameSetError
-E006 X3D-PEX:PathError
-E007 X3D-PEX:FontError
-E008 X3D-PEX:PhigsWksError
-E009 X3D-PEX:PickMeasureError
-E010 X3D-PEX:PipelineContextError
-E011 X3D-PEX:erError
-E012 X3D-PEX:SearchContextError
-E013 X3D-PEX:StructureError
-E014 X3D-PEX:OutputCommandError
-R000 XC-APPGROUP:QueryVersion
-R001 XC-APPGROUP:Create
-R002 XC-APPGROUP:Destroy
-R003 XC-APPGROUP:GetAttr
-R004 XC-APPGROUP:Query
-R005 XC-APPGROUP:CreateAssoc
-R006 XC-APPGROUP:DestroyAssoc
-E000 XC-APPGROUP:BadAppGroup
-R000 XC-MISC:GetVersion
-R001 XC-MISC:GetXIDRange
-R002 XC-MISC:GetXIDList
-R000 XFIXES:QueryVersion
-R001 XFIXES:ChangeSaveSet
-R002 XFIXES:SelectSelectionInput
-R003 XFIXES:SelectCursorInput
-R004 XFIXES:GetCursorImage
-R005 XFIXES:CreateRegion
-R006 XFIXES:CreateRegionFromBitmap
-R007 XFIXES:CreateRegionFromWindow
-R008 XFIXES:CreateRegionFromGC
-R009 XFIXES:CreateRegionFromPicture
-R010 XFIXES:DestroyRegion
-R011 XFIXES:SetRegion
-R012 XFIXES:CopyRegion
-R013 XFIXES:UnionRegion
-R014 XFIXES:IntersectRegion
-R015 XFIXES:SubtractRegion
-R016 XFIXES:InvertRegion
-R017 XFIXES:TranslateRegion
-R018 XFIXES:RegionExtents
-R019 XFIXES:FetchRegion
-R020 XFIXES:SetGCClipRegion
-R021 XFIXES:SetWindowShapeRegion
-R022 XFIXES:SetPictureClipRegion
-R023 XFIXES:SetCursorName
-R024 XFIXES:GetCursorName
-R025 XFIXES:GetCursorImageAndName
-R026 XFIXES:ChangeCursor
-R027 XFIXES:ChangeCursorByName
-R028 XFIXES:ExpandRegion
-R029 XFIXES:HideCursor
-R030 XFIXES:ShowCursor
-V000 XFIXES:SelectionNotify
-V001 XFIXES:CursorNotify
-E000 XFIXES:BadRegion
-R000 XFree86-Bigfont:QueryVersion
-R001 XFree86-Bigfont:QueryFont
-R000 XFree86-DGA:QueryVersion
-R001 XFree86-DGA:GetVideoLL
-R002 XFree86-DGA:DirectVideo
-R003 XFree86-DGA:GetViewPortSize
-R004 XFree86-DGA:SetViewPort
-R005 XFree86-DGA:GetVidPage
-R006 XFree86-DGA:SetVidPage
-R007 XFree86-DGA:InstallColormap
-R008 XFree86-DGA:QueryDirectVideo
-R009 XFree86-DGA:ViewPortChanged
-R010 XFree86-DGA:Obsolete1
-R011 XFree86-DGA:Obsolete2
-R012 XFree86-DGA:QueryModes
-R013 XFree86-DGA:SetMode
-R014 XFree86-DGA:SetViewport
-R015 XFree86-DGA:InstallColormap
-R016 XFree86-DGA:SelectInput
-R017 XFree86-DGA:FillRectangle
-R018 XFree86-DGA:CopyArea
-R019 XFree86-DGA:CopyTransparentArea
-R020 XFree86-DGA:GetViewportStatus
-R021 XFree86-DGA:Sync
-R022 XFree86-DGA:OpenFramebuffer
-R023 XFree86-DGA:CloseFramebuffer
-R024 XFree86-DGA:SetClientVersion
-R025 XFree86-DGA:ChangePixmapMode
-R026 XFree86-DGA:CreateColormap
-E000 XFree86-DGA:ClientNotLocal
-E001 XFree86-DGA:NoDirectVideoMode
-E002 XFree86-DGA:ScreenNotActive
-E003 XFree86-DGA:DirectNotActivated
-E004 XFree86-DGA:OperationNotSupported
-R000 XFree86-DRI:QueryVersion
-R001 XFree86-DRI:QueryDirectRenderingCapable
-R002 XFree86-DRI:OpenConnection
-R003 XFree86-DRI:CloseConnection
-R004 XFree86-DRI:GetClientDriverName
-R005 XFree86-DRI:CreateContext
-R006 XFree86-DRI:DestroyContext
-R007 XFree86-DRI:CreateDrawable
-R008 XFree86-DRI:DestroyDrawable
-R009 XFree86-DRI:GetDrawableInfo
-R010 XFree86-DRI:GetDeviceInfo
-R011 XFree86-DRI:AuthConnection
-R012 XFree86-DRI:OpenFullScreen
-R013 XFree86-DRI:CloseFullScreen
-E000 XFree86-DRI:ClientNotLocal
-E001 XFree86-DRI:OperationNotSupported
-R000 XFree86-Misc:QueryVersion
-R001 XFree86-Misc:GetSaver
-R002 XFree86-Misc:SetSaver
-R003 XFree86-Misc:GetMouseSettings
-R004 XFree86-Misc:GetKbdSettings
-R005 XFree86-Misc:SetMouseSettings
-R006 XFree86-Misc:SetKbdSettings
-R007 XFree86-Misc:SetGrabKeysState
-R008 XFree86-Misc:SetClientVersion
-R009 XFree86-Misc:GetFilePaths
-R010 XFree86-Misc:PassMessage
-E000 XFree86-Misc:BadMouseProtocol
-E001 XFree86-Misc:BadMouseBaudRate
-E002 XFree86-Misc:BadMouseFlags
-E003 XFree86-Misc:BadMouseCombo
-E004 XFree86-Misc:BadKbdType
-E005 XFree86-Misc:ModInDevDisabled
-E006 XFree86-Misc:ModInDevClientNotLocal
-E007 XFree86-Misc:NoModule
-R000 XFree86-VidModeExtension:QueryVersion
-R001 XFree86-VidModeExtension:GetModeLine
-R002 XFree86-VidModeExtension:ModModeLine
-R003 XFree86-VidModeExtension:SwitchMode
-R004 XFree86-VidModeExtension:GetMonitor
-R005 XFree86-VidModeExtension:LockModeSwitch
-R006 XFree86-VidModeExtension:GetAllModeLines
-R007 XFree86-VidModeExtension:AddModeLine
-R008 XFree86-VidModeExtension:DeleteModeLine
-R009 XFree86-VidModeExtension:ValidateModeLine
-R010 XFree86-VidModeExtension:SwitchToMode
-R011 XFree86-VidModeExtension:GetViewPort
-R012 XFree86-VidModeExtension:SetViewPort
-R013 XFree86-VidModeExtension:GetDotClocks
-R014 XFree86-VidModeExtension:SetClientVersion
-R015 XFree86-VidModeExtension:SetGamma
-R016 XFree86-VidModeExtension:GetGamma
-R017 XFree86-VidModeExtension:GetGammaRamp
-R018 XFree86-VidModeExtension:SetGammaRamp
-R019 XFree86-VidModeExtension:GetGammaRampSize
-R020 XFree86-VidModeExtension:GetPermissions
-V000 XFree86-VidModeExtension:Notify
-E000 XFree86-VidModeExtension:BadClock
-E001 XFree86-VidModeExtension:BadHTimings
-E002 XFree86-VidModeExtension:BadVTimings
-E003 XFree86-VidModeExtension:ModeUnsuitable
-E004 XFree86-VidModeExtension:ExtensionDisabled
-E005 XFree86-VidModeExtension:ClientNotLocal
-E006 XFree86-VidModeExtension:ZoomLocked
-R001 XIE:QueryImageExtension
-R002 XIE:QueryTechniques
-R003 XIE:CreateColorList
-R004 XIE:DestroyColorList
-R005 XIE:PurgeColorList
-R006 XIE:QueryColorList
-R007 XIE:CreateLUT
-R008 XIE:DestroyLUT
-R009 XIE:CreatePhotomap
-R010 XIE:DestroyPhotomap
-R011 XIE:QueryPhotomap
-R012 XIE:CreateROI
-R013 XIE:DestroyROI
-R014 XIE:CreatePhotospace
-R015 XIE:DestroyPhotospace
-R016 XIE:ExecuteImmediate
-R017 XIE:CreatePhotoflo
-R018 XIE:DestroyPhotoflo
-R019 XIE:ExecutePhotoflo
-R020 XIE:ModifyPhotoflo
-R021 XIE:RedefinePhotoflo
-R022 XIE:PutClientData
-R023 XIE:GetClientData
-R024 XIE:QueryPhotoflo
-R025 XIE:Await
-R026 XIE:Abort
-E000 XIE:ColorListError
-E001 XIE:LUTError
-E002 XIE:PhotofloError
-E003 XIE:PhotomapError
-E004 XIE:PhotospaceError
-E005 XIE:ROIError
-E006 XIE:FloError
-R000 XINERAMA:QueryVersion
-R001 XINERAMA:GetState
-R002 XINERAMA:GetScreenCount
-R003 XINERAMA:GetScreenSize
-R004 XINERAMA:IsActive
-R005 XINERAMA:QueryScreens
-R001 XInputExtension:GetExtensionVersion
-R002 XInputExtension:ListInputDevices
-R003 XInputExtension:OpenDevice
-R004 XInputExtension:CloseDevice
-R005 XInputExtension:SetDeviceMode
-R006 XInputExtension:SelectExtensionEvent
-R007 XInputExtension:GetSelectedExtensionEvents
-R008 XInputExtension:ChangeDeviceDontPropagateList
-R009 XInputExtension:GetDeviceDontPropagageList
-R010 XInputExtension:GetDeviceMotionEvents
-R011 XInputExtension:ChangeKeyboardDevice
-R012 XInputExtension:ChangePointerDevice
-R013 XInputExtension:GrabDevice
-R014 XInputExtension:UngrabDevice
-R015 XInputExtension:GrabDeviceKey
-R016 XInputExtension:UngrabDeviceKey
-R017 XInputExtension:GrabDeviceButton
-R018 XInputExtension:UngrabDeviceButton
-R019 XInputExtension:AllowDeviceEvents
-R020 XInputExtension:GetDeviceFocus
-R021 XInputExtension:SetDeviceFocus
-R022 XInputExtension:GetFeedbackControl
-R023 XInputExtension:ChangeFeedbackControl
-R024 XInputExtension:GetDeviceKeyMapping
-R025 XInputExtension:ChangeDeviceKeyMapping
-R026 XInputExtension:GetDeviceModifierMapping
-R027 XInputExtension:SetDeviceModifierMapping
-R028 XInputExtension:GetDeviceButtonMapping
-R029 XInputExtension:SetDeviceButtonMapping
-R030 XInputExtension:QueryDeviceState
-R031 XInputExtension:SendExtensionEvent
-R032 XInputExtension:DeviceBell
-R033 XInputExtension:SetDeviceValuators
-R034 XInputExtension:GetDeviceControl
-R035 XInputExtension:ChangeDeviceControl
-R036 XInputExtension:ListDeviceProperties
-R037 XInputExtension:ChangeDeviceProperty
-R038 XInputExtension:DeleteDeviceProperty
-R039 XInputExtension:GetDeviceProperty
-R040 XInputExtension:QueryPointer
-R041 XInputExtension:WarpPointer
-R042 XInputExtension:ChangeCursor
-R043 XInputExtension:ChangeHierarchy
-R044 XInputExtension:SetClientPointer
-R045 XInputExtension:GetClientPointer
-R046 XInputExtension:SelectEvents
-R047 XInputExtension:QueryVersion
-R048 XInputExtension:QueryDevice
-R049 XInputExtension:SetFocus
-R050 XInputExtension:GetFocus
-R051 XInputExtension:GrabDevice
-R052 XInputExtension:UngrabDevice
-R053 XInputExtension:AllowEvents
-R054 XInputExtension:PassiveGrabDevice
-R055 XInputExtension:PassiveUngrabDevice
-R056 XInputExtension:ListProperties
-R057 XInputExtension:ChangeProperty
-R058 XInputExtension:DeleteProperty
-R059 XInputExtension:GetProperty
-R060 XInputExtension:GetSelectedEvents
-V000 XInputExtension:DeviceValuator
-V001 XInputExtension:DeviceKeyPress
-V002 XInputExtension:DeviceKeyRelease
-V003 XInputExtension:DeviceButtonPress
-V004 XInputExtension:DeviceButtonRelease
-V005 XInputExtension:DeviceMotionNotify
-V006 XInputExtension:DeviceFocusIn
-V007 XInputExtension:DeviceFocusOut
-V008 XInputExtension:ProximityIn
-V009 XInputExtension:ProximityOut
-V010 XInputExtension:DeviceStateNotify
-V011 XInputExtension:DeviceMappingNotify
-V012 XInputExtension:ChangeDeviceNotify
-V013 XInputExtension:DeviceKeystateNotify
-V014 XInputExtension:DeviceButtonstateNotify
-V015 XInputExtension:DevicePresenceNotify
-V016 XInputExtension:DevicePropertyNotify
-E000 XInputExtension:BadDevice
-E001 XInputExtension:BadEvent
-E002 XInputExtension:BadMode
-E003 XInputExtension:DeviceBusy
-E004 XInputExtension:BadClass
-R000 XKEYBOARD:UseExtension
-R001 XKEYBOARD:SelectEvents
-R002 XKEYBOARD:Obsolete
-R003 XKEYBOARD:Bell
-R004 XKEYBOARD:GetState
-R005 XKEYBOARD:LatchLockState
-R006 XKEYBOARD:GetControls
-R007 XKEYBOARD:SetControls
-R008 XKEYBOARD:GetMap
-R009 XKEYBOARD:SetMap
-R010 XKEYBOARD:GetCompatMap
-R011 XKEYBOARD:SetCompatMap
-R012 XKEYBOARD:GetIndicatorState
-R013 XKEYBOARD:GetIndicatorMap
-R014 XKEYBOARD:SetIndicatorMap
-R015 XKEYBOARD:GetNamedIndicator
-R016 XKEYBOARD:SetNamedIndicator
-R017 XKEYBOARD:GetNames
-R018 XKEYBOARD:SetNames
-R019 XKEYBOARD:GetGeometry
-R020 XKEYBOARD:SetGeometry
-R021 XKEYBOARD:PerClientFlags
-R022 XKEYBOARD:ListComponents
-R023 XKEYBOARD:GetKbdByName
-R024 XKEYBOARD:GetDeviceInfo
-R025 XKEYBOARD:SetDeviceInfo
-R101 XKEYBOARD:SetDebuggingFlags
-V000 XKEYBOARD:EventCode
-E000 XKEYBOARD:BadKeyboard
-R000 XTEST:GetVersion
-R001 XTEST:CompareCursor
-R002 XTEST:FakeInput
-R003 XTEST:GrabControl
-R000 XVideo:QueryExtension
-R001 XVideo:QueryAdaptors
-R002 XVideo:QueryEncodings
-R003 XVideo:GrabPort
-R004 XVideo:UngrabPort
-R005 XVideo:PutVideo
-R006 XVideo:PutStill
-R007 XVideo:GetVideo
-R008 XVideo:GetStill
-R009 XVideo:StopVideo
-R010 XVideo:SelectVideoNotify
-R011 XVideo:SelectPortNotify
-R012 XVideo:QueryBestSize
-R013 XVideo:SetPortAttribute
-R014 XVideo:GetPortAttribute
-R015 XVideo:QueryPortAttributes
-R016 XVideo:ListImageFormats
-R017 XVideo:QueryImageAttributes
-R018 XVideo:PutImage
-R019 XVideo:ShmPutImage
-V000 XVideo:VideoNotify
-V001 XVideo:PortNotify
-E000 XVideo:BadPort
-E001 XVideo:BadEncoding
-E002 XVideo:BadControl
-R000 XVideo-MotionCompensation:QueryVersion
-R001 XVideo-MotionCompensation:ListSurfaceTypes
-R002 XVideo-MotionCompensation:CreateContext
-R003 XVideo-MotionCompensation:DestroyContext
-R004 XVideo-MotionCompensation:CreateSurface
-R005 XVideo-MotionCompensation:DestroySurface
-R006 XVideo-MotionCompensation:CreateSubpicture
-R007 XVideo-MotionCompensation:DestroySubpicture
-R008 XVideo-MotionCompensation:ListSubpictureTypes
-R009 XVideo-MotionCompensation:GetDRInfo
-E000 XVideo-MotionCompensation:BadContext
-E001 XVideo-MotionCompensation:BadSurface
-E002 XVideo-MotionCompensation:BadSubpicture
-R000 XpExtension:QueryVersion
-R001 XpExtension:GetPrinterList
-R002 XpExtension:CreateContext
-R003 XpExtension:SetContext
-R004 XpExtension:GetContext
-R005 XpExtension:DestroyContext
-R006 XpExtension:GetContextScreen
-R007 XpExtension:StartJob
-R008 XpExtension:EndJob
-R009 XpExtension:StartDoc
-R010 XpExtension:EndDoc
-R011 XpExtension:PutDocumentData
-R012 XpExtension:GetDocumentData
-R013 XpExtension:StartPage
-R014 XpExtension:EndPage
-R015 XpExtension:SelectInput
-R016 XpExtension:InputSelected
-R017 XpExtension:GetAttributes
-R018 XpExtension:SetAttributes
-R019 XpExtension:GetOneAttribute
-R020 XpExtension:RehashPrinterList
-R021 XpExtension:GetPageDimensions
-R022 XpExtension:QueryScreens
-R023 XpExtension:SetImageResolution
-R024 XpExtension:GetImageResolution
-V000 XpExtension:PrintNotify
-V001 XpExtension:AttributeNotify
-E000 XpExtension:BadContext
-E001 XpExtension:BadSequence
-E002 XpExtension:BadResourceID
+# Registry of protocol names used by X Server
+# This will eventually be replaced by server-side XCB
+#
+# Format is Xnnn <extension-name>:<object-name>
+# R=Request, V=Event, E=Error
+#
+# This is a security-sensitive file, please set permissions as appropriate.
+#
+R001 Adobe-DPS-Extension:Init
+R002 Adobe-DPS-Extension:CreateContext
+R003 Adobe-DPS-Extension:CreateSpace
+R004 Adobe-DPS-Extension:GiveInput
+R005 Adobe-DPS-Extension:GetStatus
+R006 Adobe-DPS-Extension:DestroySpace
+R007 Adobe-DPS-Extension:Reset
+R008 Adobe-DPS-Extension:NotifyContext
+R009 Adobe-DPS-Extension:CreateContextFromID
+R010 Adobe-DPS-Extension:XIDFromContext
+R011 Adobe-DPS-Extension:ContextFromXID
+R012 Adobe-DPS-Extension:SetStatusMask
+R013 Adobe-DPS-Extension:CreateSecureContext
+R014 Adobe-DPS-Extension:NotifyWhenReady
+R000 Apple-DRI:QueryVersion
+R001 Apple-DRI:QueryDirectRenderingCapable
+R002 Apple-DRI:CreateSurface
+R003 Apple-DRI:DestroySurface
+R004 Apple-DRI:AuthConnection
+V000 Apple-DRI:ObsoleteEvent1
+V001 Apple-DRI:ObsoleteEvent2
+V002 Apple-DRI:ObsoleteEvent3
+V003 Apple-DRI:SurfaceNotify
+E000 Apple-DRI:ClientNotLocal
+E001 Apple-DRI:OperationNotSupported
+R000 Apple-WM:QueryVersion
+R001 Apple-WM:FrameGetRect
+R002 Apple-WM:FrameHitTest
+R003 Apple-WM:FrameDraw
+R004 Apple-WM:DisableUpdate
+R005 Apple-WM:ReenableUpdate
+R006 Apple-WM:SelectInput
+R007 Apple-WM:SetWindowMenuCheck
+R008 Apple-WM:SetFrontProcess
+R009 Apple-WM:SetWindowLevel
+R010 Apple-WM:SetCanQuit
+R011 Apple-WM:SetWindowMenu
+V000 Apple-WM:ControllerNotify
+V001 Apple-WM:ActivationNotify
+V002 Apple-WM:PasteboardNotify
+E000 Apple-WM:ClientNotLocal
+E001 Apple-WM:OperationNotSupported
+R000 BIG-REQUESTS:Enable
+R000 Composite:CompositeQueryVersion
+R001 Composite:CompositeRedirectWindow
+R002 Composite:CompositeRedirectSubwindows
+R003 Composite:CompositeUnredirectWindow
+R004 Composite:CompositeUnredirectSubwindows
+R005 Composite:CompositeCreateRegionFromBorderClip
+R006 Composite:CompositeNameWindowPixmap
+R007 Composite:CompositeGetOverlayWindow
+R008 Composite:CompositeReleaseOverlayWindow
+R000 DAMAGE:QueryVersion
+R001 DAMAGE:Create
+R002 DAMAGE:Destroy
+R003 DAMAGE:Subtract
+R004 DAMAGE:Add
+V000 DAMAGE:Notify
+E000 DAMAGE:BadDamage
+R000 DEC-XTRAP:Reset
+R001 DEC-XTRAP:GetAvailable
+R002 DEC-XTRAP:Config
+R003 DEC-XTRAP:StartTrap
+R004 DEC-XTRAP:StopTrap
+R005 DEC-XTRAP:GetCurrent
+R006 DEC-XTRAP:GetStatistics
+R007 DEC-XTRAP:SimulateXEvent
+R008 DEC-XTRAP:GetVersion
+R009 DEC-XTRAP:GetLastInpTime
+V000 DEC-XTRAP:Event
+E002 DEC-XTRAP:BadIO
+E004 DEC-XTRAP:BadStatistics
+E005 DEC-XTRAP:BadDevices
+E007 DEC-XTRAP:BadScreen
+E008 DEC-XTRAP:BadSwapReq
+R000 DMX:DMXQueryVersion
+R001 DMX:DMXGetScreenCount
+R002 DMX:DMXGetScreenInfoDEPRECATED
+R003 DMX:DMXGetWindowAttributes
+R004 DMX:DMXGetInputCount
+R005 DMX:DMXGetInputAttributes
+R006 DMX:DMXForceWindowCreationDEPRECATED
+R007 DMX:DMXReconfigureScreenDEPRECATED
+R008 DMX:DMXSync
+R009 DMX:DMXForceWindowCreation
+R010 DMX:DMXGetScreenAttributes
+R011 DMX:DMXChangeScreensAttributes
+R012 DMX:DMXAddScreen
+R013 DMX:DMXRemoveScreen
+R014 DMX:DMXGetDesktopAttributes
+R015 DMX:DMXChangeDesktopAttributes
+R016 DMX:DMXAddInput
+R017 DMX:DMXRemoveInput
+R000 DOUBLE-BUFFER:GetVersion
+R001 DOUBLE-BUFFER:AllocateBackBufferName
+R002 DOUBLE-BUFFER:DeallocateBackBufferName
+R003 DOUBLE-BUFFER:SwapBuffers
+R004 DOUBLE-BUFFER:BeginIdiom
+R005 DOUBLE-BUFFER:EndIdiom
+R006 DOUBLE-BUFFER:GetVisualInfo
+R007 DOUBLE-BUFFER:GetBackBufferAttributes
+E000 DOUBLE-BUFFER:BadBuffer
+R000 DPMS:GetVersion
+R001 DPMS:Capable
+R002 DPMS:GetTimeouts
+R003 DPMS:SetTimeouts
+R004 DPMS:Enable
+R005 DPMS:Disable
+R006 DPMS:ForceLevel
+R007 DPMS:Info
+R000 DRI2:QueryVersion
+R001 DRI2:Connect
+R002 DRI2:Authenticate
+R003 DRI2:CreateDrawable
+R004 DRI2:DestroyDrawable
+R005 DRI2:GetBuffers
+R006 DRI2:CopyRegion
+R007 DRI2:GetBuffersWithFormat
+R000 Extended-Visual-Information:QueryVersion
+R001 Extended-Visual-Information:GetVisualInfo
+R000 FontCache:QueryVersion
+R001 FontCache:GetCacheSettings
+R002 FontCache:ChangeCacheSettings
+R003 FontCache:GetCacheStatistics
+E000 FontCache:BadProtocol
+E001 FontCache:CannotAllocMemory
+R001 GLX:
+R002 GLX:Large
+R003 GLX:CreateContext
+R004 GLX:DestroyContext
+R005 GLX:MakeCurrent
+R006 GLX:IsDirect
+R007 GLX:QueryVersion
+R008 GLX:WaitGL
+R009 GLX:WaitX
+R010 GLX:CopyContext
+R011 GLX:SwapBuffers
+R012 GLX:UseXFont
+R013 GLX:CreateGLXPixmap
+R014 GLX:GetVisualConfigs
+R015 GLX:DestroyGLXPixmap
+R016 GLX:VendorPrivate
+R017 GLX:VendorPrivateWithReply
+R018 GLX:QueryExtensionsString
+R019 GLX:QueryServerString
+R020 GLX:ClientInfo
+R101 GLX:NewList
+R102 GLX:EndList
+R103 GLX:DeleteLists
+R104 GLX:GenLists
+R105 GLX:FeedbackBuffer
+R106 GLX:SelectBuffer
+R107 GLX:Mode
+R108 GLX:Finish
+R109 GLX:PixelStoref
+R110 GLX:PixelStorei
+R111 GLX:ReadPixels
+R112 GLX:GetBooleanv
+R113 GLX:GetClipPlane
+R114 GLX:GetDoublev
+R115 GLX:GetError
+R116 GLX:GetFloatv
+R117 GLX:GetIntegerv
+R118 GLX:GetLightfv
+R119 GLX:GetLightiv
+R120 GLX:GetMapdv
+R121 GLX:GetMapfv
+R122 GLX:GetMapiv
+R123 GLX:GetMaterialfv
+R124 GLX:GetMaterialiv
+R125 GLX:GetPixelfv
+R126 GLX:GetPixelMapuiv
+R127 GLX:GetPixelMapusv
+R128 GLX:GetPolygonStipple
+R129 GLX:GetString
+R130 GLX:GetTexEnvfv
+R131 GLX:GetTexEnviv
+R132 GLX:GetTexGendv
+R133 GLX:GetTexGenfv
+R134 GLX:GetTexGeniv
+R135 GLX:GetTexImage
+R136 GLX:GetTexParameterfv
+R137 GLX:GetTexParameteriv
+R138 GLX:GetTexLevelParameterfv
+R139 GLX:GetTexLevelParameteriv
+R140 GLX:IsEnabled
+R141 GLX:IsList
+R142 GLX:Flush
+E000 GLX:BadContext
+E001 GLX:BadContextState
+E002 GLX:BadDrawable
+E003 GLX:BadPixmap
+E004 GLX:BadContextTag
+E005 GLX:BadCurrentWindow
+E006 GLX:BadRenderRequest
+E007 GLX:BadLargeRequest
+E008 GLX:UnsupportedPrivateRequest
+R000 LBX:QueryVersion
+R001 LBX:StartProxy
+R002 LBX:StopProxy
+R003 LBX:Switch
+R004 LBX:NewClient
+R005 LBX:CloseClient
+R006 LBX:ModifySequence
+R007 LBX:AllowMotion
+R008 LBX:IncrementPixel
+R009 LBX:Delta
+R010 LBX:GetModifierMapping
+R011 LBX:QueryTag
+R012 LBX:InvalidateTag
+R013 LBX:PolyPoint
+R014 LBX:PolyLine
+R015 LBX:PolySegment
+R016 LBX:PolyRectangle
+R017 LBX:PolyArc
+R018 LBX:FillPoly
+R019 LBX:PolyFillRectangle
+R020 LBX:PolyFillArc
+R021 LBX:GetKeyboardMapping
+R022 LBX:QueryFont
+R023 LBX:ChangeProperty
+R024 LBX:GetProperty
+R025 LBX:TagData
+R026 LBX:CopyArea
+R027 LBX:CopyPlane
+R028 LBX:PolyText8
+R029 LBX:PolyText16
+R030 LBX:ImageText8
+R031 LBX:ImageText16
+R032 LBX:QueryExtension
+R033 LBX:PutImage
+R034 LBX:GetImage
+R035 LBX:BeginLargeRequest
+R036 LBX:LargeRequestData
+R037 LBX:EndLargeRequest
+R038 LBX:InternAtoms
+R039 LBX:GetWinAttrAndGeom
+R040 LBX:GrabCmap
+R041 LBX:ReleaseCmap
+R042 LBX:AllocColor
+R043 LBX:Sync
+E000 LBX:BadLbxClient
+R000 MIT-SCREEN-SAVER:QueryVersion
+R001 MIT-SCREEN-SAVER:QueryInfo
+R002 MIT-SCREEN-SAVER:SelectInput
+R003 MIT-SCREEN-SAVER:SetAttributes
+R004 MIT-SCREEN-SAVER:UnsetAttributes
+R005 MIT-SCREEN-SAVER:Suspend
+V000 MIT-SCREEN-SAVER:Notify
+R000 MIT-SHM:QueryVersion
+R001 MIT-SHM:Attach
+R002 MIT-SHM:Detach
+R003 MIT-SHM:PutImage
+R004 MIT-SHM:GetImage
+R005 MIT-SHM:CreatePixmap
+V000 MIT-SHM:Completion
+E000 MIT-SHM:BadShmSeg
+R000 MIT-SUNDRY-NONSTANDARD:SetBugMode
+R001 MIT-SUNDRY-NONSTANDARD:GetBugMode
+R000 Multi-Buffering:GetBufferVersion
+R001 Multi-Buffering:CreateImageBuffers
+R002 Multi-Buffering:DestroyImageBuffers
+R003 Multi-Buffering:DisplayImageBuffers
+R004 Multi-Buffering:SetMBufferAttributes
+R005 Multi-Buffering:GetMBufferAttributes
+R006 Multi-Buffering:SetBufferAttributes
+R007 Multi-Buffering:GetBufferAttributes
+R008 Multi-Buffering:GetBufferInfo
+R009 Multi-Buffering:CreateStereoWindow
+R010 Multi-Buffering:ClearImageBufferArea
+V000 Multi-Buffering:ClobberNotify
+V001 Multi-Buffering:UpdateNotify
+E000 Multi-Buffering:BadBuffer
+R000 RANDR:QueryVersion
+R001 RANDR:OldGetScreenInfo
+R002 RANDR:SetScreenConfig
+R003 RANDR:OldScreenChangeSelectInput
+R004 RANDR:SelectInput
+R005 RANDR:GetScreenInfo
+R006 RANDR:GetScreenSizeRange
+R007 RANDR:SetScreenSize
+R008 RANDR:GetScreenResources
+R009 RANDR:GetOutputInfo
+R010 RANDR:ListOutputProperties
+R011 RANDR:QueryOutputProperty
+R012 RANDR:ConfigureOutputProperty
+R013 RANDR:ChangeOutputProperty
+R014 RANDR:DeleteOutputProperty
+R015 RANDR:GetOutputProperty
+R016 RANDR:CreateMode
+R017 RANDR:DestroyMode
+R018 RANDR:AddOutputMode
+R019 RANDR:DeleteOutputMode
+R020 RANDR:GetCrtcInfo
+R021 RANDR:SetCrtcConfig
+R022 RANDR:GetCrtcGammaSize
+R023 RANDR:GetCrtcGamma
+R024 RANDR:SetCrtcGamma
+R025 RANDR:GetScreenResourcesCurrent
+R026 RANDR:SetCrtcTransform
+R027 RANDR:GetCrtcTransform
+R028 RANDR:GetPanning
+R029 RANDR:SetPanning
+R030 RANDR:SetOutputPrimary
+R031 RANDR:GetOutputPrimary
+V000 RANDR:ScreenChangeNotify
+V001 RANDR:Notify
+E000 RANDR:BadRROutput
+E001 RANDR:BadRRCrtc
+E002 RANDR:BadRRMode
+R000 RECORD:QueryVersion
+R001 RECORD:CreateContext
+R002 RECORD:RegisterClients
+R003 RECORD:UnregisterClients
+R004 RECORD:GetContext
+R005 RECORD:EnableContext
+R006 RECORD:DisableContext
+R007 RECORD:FreeContext
+E000 RECORD:BadContext
+R000 RENDER:QueryVersion
+R001 RENDER:QueryPictFormats
+R002 RENDER:QueryPictIndexValues
+R003 RENDER:QueryDithers
+R004 RENDER:CreatePicture
+R005 RENDER:ChangePicture
+R006 RENDER:SetPictureClipRectangles
+R007 RENDER:FreePicture
+R008 RENDER:Composite
+R009 RENDER:Scale
+R010 RENDER:Trapezoids
+R011 RENDER:Triangles
+R012 RENDER:TriStrip
+R013 RENDER:TriFan
+R014 RENDER:ColorTrapezoids
+R015 RENDER:ColorTriangles
+R016 RENDER:Transform
+R017 RENDER:CreateGlyphSet
+R018 RENDER:ReferenceGlyphSet
+R019 RENDER:FreeGlyphSet
+R020 RENDER:AddGlyphs
+R021 RENDER:AddGlyphsFromPicture
+R022 RENDER:FreeGlyphs
+R023 RENDER:CompositeGlyphs8
+R024 RENDER:CompositeGlyphs16
+R025 RENDER:CompositeGlyphs32
+R026 RENDER:FillRectangles
+R027 RENDER:CreateCursor
+R028 RENDER:SetPictureTransform
+R029 RENDER:QueryFilters
+R030 RENDER:SetPictureFilter
+R031 RENDER:CreateAnimCursor
+R032 RENDER:AddTraps
+R033 RENDER:CreateSolidFill
+R034 RENDER:CreateLinearGradient
+R035 RENDER:CreateRadialGradient
+R036 RENDER:CreateConicalGradient
+E000 RENDER:BadPictFormat
+E001 RENDER:BadPicture
+E002 RENDER:BadPictOp
+E003 RENDER:BadGlyphSet
+E004 RENDER:BadGlyph
+R000 SECURITY:QueryVersion
+R001 SECURITY:GenerateAuthorization
+R002 SECURITY:RevokeAuthorization
+V000 SECURITY:AuthorizationRevoked
+E000 SECURITY:BadAuthorization
+E001 SECURITY:BadAuthorizationProtocol
+R000 SELinux:SELinuxQueryVersion
+R001 SELinux:SELinuxSetDeviceCreateContext
+R002 SELinux:SELinuxGetDeviceCreateContext
+R003 SELinux:SELinuxSetDeviceContext
+R004 SELinux:SELinuxGetDeviceContext
+R005 SELinux:SELinuxSetWindowCreateContext
+R006 SELinux:SELinuxGetWindowCreateContext
+R007 SELinux:SELinuxGetWindowContext
+R008 SELinux:SELinuxSetPropertyCreateContext
+R009 SELinux:SELinuxGetPropertyCreateContext
+R010 SELinux:SELinuxSetPropertyUseContext
+R011 SELinux:SELinuxGetPropertyUseContext
+R012 SELinux:SELinuxGetPropertyContext
+R013 SELinux:SELinuxGetPropertyDataContext
+R014 SELinux:SELinuxListProperties
+R015 SELinux:SELinuxSetSelectionCreateContext
+R016 SELinux:SELinuxGetSelectionCreateContext
+R017 SELinux:SELinuxSetSelectionUseContext
+R018 SELinux:SELinuxGetSelectionUseContext
+R019 SELinux:SELinuxGetSelectionContext
+R020 SELinux:SELinuxGetSelectionDataContext
+R021 SELinux:SELinuxListSelections
+R022 SELinux:SELinuxGetClientContext
+R000 SHAPE:QueryVersion
+R001 SHAPE:Rectangles
+R002 SHAPE:Mask
+R003 SHAPE:Combine
+R004 SHAPE:Offset
+R005 SHAPE:QueryExtents
+R006 SHAPE:SelectInput
+R007 SHAPE:InputSelected
+R008 SHAPE:GetRectangles
+V000 SHAPE:Notify
+R000 SYNC:Initialize
+R001 SYNC:ListSystemCounters
+R002 SYNC:CreateCounter
+R003 SYNC:SetCounter
+R004 SYNC:ChangeCounter
+R005 SYNC:QueryCounter
+R006 SYNC:DestroyCounter
+R007 SYNC:Await
+R008 SYNC:CreateAlarm
+R009 SYNC:ChangeAlarm
+R010 SYNC:QueryAlarm
+R011 SYNC:DestroyAlarm
+R012 SYNC:SetPriority
+R013 SYNC:GetPriority
+V000 SYNC:CounterNotify
+V001 SYNC:AlarmNotify
+E000 SYNC:BadCounter
+E001 SYNC:BadAlarm
+R000 TOG-CUP:QueryVersion
+R001 TOG-CUP:GetReservedColormapEntries
+R002 TOG-CUP:StoreColors
+R000 Windows-WM:QueryVersion
+R001 Windows-WM:FrameGetRect
+R002 Windows-WM:FrameDraw
+R003 Windows-WM:FrameSetTitle
+R004 Windows-WM:DisableUpdate
+R005 Windows-WM:ReenableUpdate
+R006 Windows-WM:SelectInput
+R007 Windows-WM:SetFrontProcess
+V000 Windows-WM:ControllerNotify
+V001 Windows-WM:ActivationNotify
+E000 Windows-WM:ClientNotLocal
+E001 Windows-WM:OperationNotSupported
+R000 X-Resource:QueryVersion
+R001 X-Resource:QueryClients
+R002 X-Resource:QueryClientResources
+R003 X-Resource:QueryClientPixmapBytes
+R001 X11:CreateWindow
+R002 X11:ChangeWindowAttributes
+R003 X11:GetWindowAttributes
+R004 X11:DestroyWindow
+R005 X11:DestroySubwindows
+R006 X11:ChangeSaveSet
+R007 X11:ReparentWindow
+R008 X11:MapWindow
+R009 X11:MapSubwindows
+R010 X11:UnmapWindow
+R011 X11:UnmapSubwindows
+R012 X11:ConfigureWindow
+R013 X11:CirculateWindow
+R014 X11:GetGeometry
+R015 X11:QueryTree
+R016 X11:InternAtom
+R017 X11:GetAtomName
+R018 X11:ChangeProperty
+R019 X11:DeleteProperty
+R020 X11:GetProperty
+R021 X11:ListProperties
+R022 X11:SetSelectionOwner
+R023 X11:GetSelectionOwner
+R024 X11:ConvertSelection
+R025 X11:SendEvent
+R026 X11:GrabPointer
+R027 X11:UngrabPointer
+R028 X11:GrabButton
+R029 X11:UngrabButton
+R030 X11:ChangeActivePointerGrab
+R031 X11:GrabKeyboard
+R032 X11:UngrabKeyboard
+R033 X11:GrabKey
+R034 X11:UngrabKey
+R035 X11:AllowEvents
+R036 X11:GrabServer
+R037 X11:UngrabServer
+R038 X11:QueryPointer
+R039 X11:GetMotionEvents
+R040 X11:TranslateCoords
+R041 X11:WarpPointer
+R042 X11:SetInputFocus
+R043 X11:GetInputFocus
+R044 X11:QueryKeymap
+R045 X11:OpenFont
+R046 X11:CloseFont
+R047 X11:QueryFont
+R048 X11:QueryTextExtents
+R049 X11:ListFonts
+R050 X11:ListFontsWithInfo
+R051 X11:SetFontPath
+R052 X11:GetFontPath
+R053 X11:CreatePixmap
+R054 X11:FreePixmap
+R055 X11:CreateGC
+R056 X11:ChangeGC
+R057 X11:CopyGC
+R058 X11:SetDashes
+R059 X11:SetClipRectangles
+R060 X11:FreeGC
+R061 X11:ClearArea
+R062 X11:CopyArea
+R063 X11:CopyPlane
+R064 X11:PolyPoint
+R065 X11:PolyLine
+R066 X11:PolySegment
+R067 X11:PolyRectangle
+R068 X11:PolyArc
+R069 X11:FillPoly
+R070 X11:PolyFillRectangle
+R071 X11:PolyFillArc
+R072 X11:PutImage
+R073 X11:GetImage
+R074 X11:PolyText8
+R075 X11:PolyText16
+R076 X11:ImageText8
+R077 X11:ImageText16
+R078 X11:CreateColormap
+R079 X11:FreeColormap
+R080 X11:CopyColormapAndFree
+R081 X11:InstallColormap
+R082 X11:UninstallColormap
+R083 X11:ListInstalledColormaps
+R084 X11:AllocColor
+R085 X11:AllocNamedColor
+R086 X11:AllocColorCells
+R087 X11:AllocColorPlanes
+R088 X11:FreeColors
+R089 X11:StoreColors
+R090 X11:StoreNamedColor
+R091 X11:QueryColors
+R092 X11:LookupColor
+R093 X11:CreateCursor
+R094 X11:CreateGlyphCursor
+R095 X11:FreeCursor
+R096 X11:RecolorCursor
+R097 X11:QueryBestSize
+R098 X11:QueryExtension
+R099 X11:ListExtensions
+R100 X11:ChangeKeyboardMapping
+R101 X11:GetKeyboardMapping
+R102 X11:ChangeKeyboardControl
+R103 X11:GetKeyboardControl
+R104 X11:Bell
+R105 X11:ChangePointerControl
+R106 X11:GetPointerControl
+R107 X11:SetScreenSaver
+R108 X11:GetScreenSaver
+R109 X11:ChangeHosts
+R110 X11:ListHosts
+R111 X11:SetAccessControl
+R112 X11:SetCloseDownMode
+R113 X11:KillClient
+R114 X11:RotateProperties
+R115 X11:ForceScreenSaver
+R116 X11:SetPointerMapping
+R117 X11:GetPointerMapping
+R118 X11:SetModifierMapping
+R119 X11:GetModifierMapping
+R127 X11:NoOperation
+V000 X11:X_Error
+V001 X11:X_Reply
+V002 X11:KeyPress
+V003 X11:KeyRelease
+V004 X11:ButtonPress
+V005 X11:ButtonRelease
+V006 X11:MotionNotify
+V007 X11:EnterNotify
+V008 X11:LeaveNotify
+V009 X11:FocusIn
+V010 X11:FocusOut
+V011 X11:KeymapNotify
+V012 X11:Expose
+V013 X11:GraphicsExpose
+V014 X11:NoExpose
+V015 X11:VisibilityNotify
+V016 X11:CreateNotify
+V017 X11:DestroyNotify
+V018 X11:UnmapNotify
+V019 X11:MapNotify
+V020 X11:MapRequest
+V021 X11:ReparentNotify
+V022 X11:ConfigureNotify
+V023 X11:ConfigureRequest
+V024 X11:GravityNotify
+V025 X11:ResizeRequest
+V026 X11:CirculateNotify
+V027 X11:CirculateRequest
+V028 X11:PropertyNotify
+V029 X11:SelectionClear
+V030 X11:SelectionRequest
+V031 X11:SelectionNotify
+V032 X11:ColormapNotify
+V033 X11:ClientMessage
+V034 X11:MappingNotify
+V035 X11:GenericEvent
+E000 X11:Success
+E001 X11:BadRequest
+E002 X11:BadValue
+E003 X11:BadWindow
+E004 X11:BadPixmap
+E005 X11:BadAtom
+E006 X11:BadCursor
+E007 X11:BadFont
+E008 X11:BadMatch
+E009 X11:BadDrawable
+E010 X11:BadAccess
+E011 X11:BadAlloc
+E012 X11:BadColor
+E013 X11:BadGC
+E014 X11:BadIDChoice
+E015 X11:BadName
+E016 X11:BadLength
+E017 X11:BadImplementation
+R001 X3D-PEX:GetExtensionInfo
+R002 X3D-PEX:GetEnumeratedTypeInfo
+R003 X3D-PEX:GetImpDepConstants
+R004 X3D-PEX:CreateLookupTable
+R005 X3D-PEX:CopyLookupTable
+R006 X3D-PEX:FreeLookupTable
+R007 X3D-PEX:GetTableInfo
+R008 X3D-PEX:GetPredefinedEntries
+R009 X3D-PEX:GetDefinedIndices
+R010 X3D-PEX:GetTableEntry
+R011 X3D-PEX:GetTableEntries
+R012 X3D-PEX:SetTableEntries
+R013 X3D-PEX:DeleteTableEntries
+R014 X3D-PEX:CreatePipelineContext
+R015 X3D-PEX:CopyPipelineContext
+R016 X3D-PEX:FreePipelineContext
+R017 X3D-PEX:GetPipelineContext
+R018 X3D-PEX:ChangePipelineContext
+R019 X3D-PEX:CreateRenderer
+R020 X3D-PEX:FreeRenderer
+R021 X3D-PEX:ChangeRenderer
+R022 X3D-PEX:GetRendererAttributes
+R023 X3D-PEX:GetRendererDynamics
+R024 X3D-PEX:BeginRendering
+R025 X3D-PEX:EndRendering
+R026 X3D-PEX:BeginStructure
+R027 X3D-PEX:EndStructure
+R028 X3D-PEX:OutputCommands
+R029 X3D-PEX:Network
+R030 X3D-PEX:CreateStructure
+R031 X3D-PEX:CopyStructure
+R032 X3D-PEX:DestroyStructures
+R033 X3D-PEX:GetStructureInfo
+R034 X3D-PEX:GetElementInfo
+R035 X3D-PEX:GetStructuresInNetwork
+R036 X3D-PEX:GetAncestors
+R037 X3D-PEX:GetDescendants
+R038 X3D-PEX:FetchElements
+R039 X3D-PEX:SetEditingMode
+R040 X3D-PEX:SetElementPointer
+R041 X3D-PEX:SetElementPointerAtLabel
+R042 X3D-PEX:ElementSearch
+R043 X3D-PEX:StoreElements
+R044 X3D-PEX:DeleteElements
+R045 X3D-PEX:DeleteElementsToLabel
+R046 X3D-PEX:DeleteBetweenLabels
+R047 X3D-PEX:CopyElements
+R048 X3D-PEX:ChangeStructureRefs
+R049 X3D-PEX:CreateNameSet
+R050 X3D-PEX:CopyNameSet
+R051 X3D-PEX:FreeNameSet
+R052 X3D-PEX:GetNameSet
+R053 X3D-PEX:ChangeNameSet
+R054 X3D-PEX:CreateSearchContext
+R055 X3D-PEX:CopySearchContext
+R056 X3D-PEX:FreeSearchContext
+R057 X3D-PEX:GetSearchContext
+R058 X3D-PEX:ChangeSearchContext
+R059 X3D-PEX:SearchNetwork
+R060 X3D-PEX:CreatePhigsWks
+R061 X3D-PEX:FreePhigsWks
+R062 X3D-PEX:GetWksInfo
+R063 X3D-PEX:GetDynamics
+R064 X3D-PEX:GetViewRep
+R065 X3D-PEX:RedrawAllStructures
+R066 X3D-PEX:UpdateWorkstation
+R067 X3D-PEX:RedrawClipRegion
+R068 X3D-PEX:ExecuteDeferredActions
+R069 X3D-PEX:SetViewPriority
+R070 X3D-PEX:SetDisplayUpdateMode
+R071 X3D-PEX:MapDCtoWC
+R072 X3D-PEX:MapWCtoDC
+R073 X3D-PEX:SetViewRep
+R074 X3D-PEX:SetWksWindow
+R075 X3D-PEX:SetWksViewport
+R076 X3D-PEX:SetHlhsrMode
+R077 X3D-PEX:SetWksBufferMode
+R078 X3D-PEX:PostStructure
+R079 X3D-PEX:UnpostStructure
+R080 X3D-PEX:UnpostAllStructures
+R081 X3D-PEX:GetWksPostings
+R082 X3D-PEX:GetPickDevice
+R083 X3D-PEX:ChangePickDevice
+R084 X3D-PEX:CreatePickMeasure
+R085 X3D-PEX:FreePickMeasure
+R086 X3D-PEX:GetPickMeasure
+R087 X3D-PEX:UpdatePickMeasure
+R088 X3D-PEX:OpenFont
+R089 X3D-PEX:CloseFont
+R090 X3D-PEX:QueryFont
+R091 X3D-PEX:ListFonts
+R092 X3D-PEX:ListFontsWithInfo
+R093 X3D-PEX:QueryTextExtents
+R094 X3D-PEX:MatchRenderingTargets
+R095 X3D-PEX:Escape
+R096 X3D-PEX:EscapeWithReply
+R097 X3D-PEX:Elements
+R098 X3D-PEX:AccumulateState
+R099 X3D-PEX:BeginPickOne
+R100 X3D-PEX:EndPickOne
+R101 X3D-PEX:PickOne
+R102 X3D-PEX:BeginPickAll
+R103 X3D-PEX:EndPickAll
+R104 X3D-PEX:PickAll
+E000 X3D-PEX:ColorTypeError
+E001 X3D-PEX:erStateError
+E002 X3D-PEX:FloatingPointFormatError
+E003 X3D-PEX:LabelError
+E004 X3D-PEX:LookupTableError
+E005 X3D-PEX:NameSetError
+E006 X3D-PEX:PathError
+E007 X3D-PEX:FontError
+E008 X3D-PEX:PhigsWksError
+E009 X3D-PEX:PickMeasureError
+E010 X3D-PEX:PipelineContextError
+E011 X3D-PEX:erError
+E012 X3D-PEX:SearchContextError
+E013 X3D-PEX:StructureError
+E014 X3D-PEX:OutputCommandError
+R000 XC-APPGROUP:QueryVersion
+R001 XC-APPGROUP:Create
+R002 XC-APPGROUP:Destroy
+R003 XC-APPGROUP:GetAttr
+R004 XC-APPGROUP:Query
+R005 XC-APPGROUP:CreateAssoc
+R006 XC-APPGROUP:DestroyAssoc
+E000 XC-APPGROUP:BadAppGroup
+R000 XC-MISC:GetVersion
+R001 XC-MISC:GetXIDRange
+R002 XC-MISC:GetXIDList
+R000 XFIXES:QueryVersion
+R001 XFIXES:ChangeSaveSet
+R002 XFIXES:SelectSelectionInput
+R003 XFIXES:SelectCursorInput
+R004 XFIXES:GetCursorImage
+R005 XFIXES:CreateRegion
+R006 XFIXES:CreateRegionFromBitmap
+R007 XFIXES:CreateRegionFromWindow
+R008 XFIXES:CreateRegionFromGC
+R009 XFIXES:CreateRegionFromPicture
+R010 XFIXES:DestroyRegion
+R011 XFIXES:SetRegion
+R012 XFIXES:CopyRegion
+R013 XFIXES:UnionRegion
+R014 XFIXES:IntersectRegion
+R015 XFIXES:SubtractRegion
+R016 XFIXES:InvertRegion
+R017 XFIXES:TranslateRegion
+R018 XFIXES:RegionExtents
+R019 XFIXES:FetchRegion
+R020 XFIXES:SetGCClipRegion
+R021 XFIXES:SetWindowShapeRegion
+R022 XFIXES:SetPictureClipRegion
+R023 XFIXES:SetCursorName
+R024 XFIXES:GetCursorName
+R025 XFIXES:GetCursorImageAndName
+R026 XFIXES:ChangeCursor
+R027 XFIXES:ChangeCursorByName
+R028 XFIXES:ExpandRegion
+R029 XFIXES:HideCursor
+R030 XFIXES:ShowCursor
+V000 XFIXES:SelectionNotify
+V001 XFIXES:CursorNotify
+E000 XFIXES:BadRegion
+R000 XFree86-Bigfont:QueryVersion
+R001 XFree86-Bigfont:QueryFont
+R000 XFree86-DGA:QueryVersion
+R001 XFree86-DGA:GetVideoLL
+R002 XFree86-DGA:DirectVideo
+R003 XFree86-DGA:GetViewPortSize
+R004 XFree86-DGA:SetViewPort
+R005 XFree86-DGA:GetVidPage
+R006 XFree86-DGA:SetVidPage
+R007 XFree86-DGA:InstallColormap
+R008 XFree86-DGA:QueryDirectVideo
+R009 XFree86-DGA:ViewPortChanged
+R010 XFree86-DGA:Obsolete1
+R011 XFree86-DGA:Obsolete2
+R012 XFree86-DGA:QueryModes
+R013 XFree86-DGA:SetMode
+R014 XFree86-DGA:SetViewport
+R015 XFree86-DGA:InstallColormap
+R016 XFree86-DGA:SelectInput
+R017 XFree86-DGA:FillRectangle
+R018 XFree86-DGA:CopyArea
+R019 XFree86-DGA:CopyTransparentArea
+R020 XFree86-DGA:GetViewportStatus
+R021 XFree86-DGA:Sync
+R022 XFree86-DGA:OpenFramebuffer
+R023 XFree86-DGA:CloseFramebuffer
+R024 XFree86-DGA:SetClientVersion
+R025 XFree86-DGA:ChangePixmapMode
+R026 XFree86-DGA:CreateColormap
+E000 XFree86-DGA:ClientNotLocal
+E001 XFree86-DGA:NoDirectVideoMode
+E002 XFree86-DGA:ScreenNotActive
+E003 XFree86-DGA:DirectNotActivated
+E004 XFree86-DGA:OperationNotSupported
+R000 XFree86-DRI:QueryVersion
+R001 XFree86-DRI:QueryDirectRenderingCapable
+R002 XFree86-DRI:OpenConnection
+R003 XFree86-DRI:CloseConnection
+R004 XFree86-DRI:GetClientDriverName
+R005 XFree86-DRI:CreateContext
+R006 XFree86-DRI:DestroyContext
+R007 XFree86-DRI:CreateDrawable
+R008 XFree86-DRI:DestroyDrawable
+R009 XFree86-DRI:GetDrawableInfo
+R010 XFree86-DRI:GetDeviceInfo
+R011 XFree86-DRI:AuthConnection
+R012 XFree86-DRI:OpenFullScreen
+R013 XFree86-DRI:CloseFullScreen
+E000 XFree86-DRI:ClientNotLocal
+E001 XFree86-DRI:OperationNotSupported
+R000 XFree86-Misc:QueryVersion
+R001 XFree86-Misc:GetSaver
+R002 XFree86-Misc:SetSaver
+R003 XFree86-Misc:GetMouseSettings
+R004 XFree86-Misc:GetKbdSettings
+R005 XFree86-Misc:SetMouseSettings
+R006 XFree86-Misc:SetKbdSettings
+R007 XFree86-Misc:SetGrabKeysState
+R008 XFree86-Misc:SetClientVersion
+R009 XFree86-Misc:GetFilePaths
+R010 XFree86-Misc:PassMessage
+E000 XFree86-Misc:BadMouseProtocol
+E001 XFree86-Misc:BadMouseBaudRate
+E002 XFree86-Misc:BadMouseFlags
+E003 XFree86-Misc:BadMouseCombo
+E004 XFree86-Misc:BadKbdType
+E005 XFree86-Misc:ModInDevDisabled
+E006 XFree86-Misc:ModInDevClientNotLocal
+E007 XFree86-Misc:NoModule
+R000 XFree86-VidModeExtension:QueryVersion
+R001 XFree86-VidModeExtension:GetModeLine
+R002 XFree86-VidModeExtension:ModModeLine
+R003 XFree86-VidModeExtension:SwitchMode
+R004 XFree86-VidModeExtension:GetMonitor
+R005 XFree86-VidModeExtension:LockModeSwitch
+R006 XFree86-VidModeExtension:GetAllModeLines
+R007 XFree86-VidModeExtension:AddModeLine
+R008 XFree86-VidModeExtension:DeleteModeLine
+R009 XFree86-VidModeExtension:ValidateModeLine
+R010 XFree86-VidModeExtension:SwitchToMode
+R011 XFree86-VidModeExtension:GetViewPort
+R012 XFree86-VidModeExtension:SetViewPort
+R013 XFree86-VidModeExtension:GetDotClocks
+R014 XFree86-VidModeExtension:SetClientVersion
+R015 XFree86-VidModeExtension:SetGamma
+R016 XFree86-VidModeExtension:GetGamma
+R017 XFree86-VidModeExtension:GetGammaRamp
+R018 XFree86-VidModeExtension:SetGammaRamp
+R019 XFree86-VidModeExtension:GetGammaRampSize
+R020 XFree86-VidModeExtension:GetPermissions
+V000 XFree86-VidModeExtension:Notify
+E000 XFree86-VidModeExtension:BadClock
+E001 XFree86-VidModeExtension:BadHTimings
+E002 XFree86-VidModeExtension:BadVTimings
+E003 XFree86-VidModeExtension:ModeUnsuitable
+E004 XFree86-VidModeExtension:ExtensionDisabled
+E005 XFree86-VidModeExtension:ClientNotLocal
+E006 XFree86-VidModeExtension:ZoomLocked
+R001 XIE:QueryImageExtension
+R002 XIE:QueryTechniques
+R003 XIE:CreateColorList
+R004 XIE:DestroyColorList
+R005 XIE:PurgeColorList
+R006 XIE:QueryColorList
+R007 XIE:CreateLUT
+R008 XIE:DestroyLUT
+R009 XIE:CreatePhotomap
+R010 XIE:DestroyPhotomap
+R011 XIE:QueryPhotomap
+R012 XIE:CreateROI
+R013 XIE:DestroyROI
+R014 XIE:CreatePhotospace
+R015 XIE:DestroyPhotospace
+R016 XIE:ExecuteImmediate
+R017 XIE:CreatePhotoflo
+R018 XIE:DestroyPhotoflo
+R019 XIE:ExecutePhotoflo
+R020 XIE:ModifyPhotoflo
+R021 XIE:RedefinePhotoflo
+R022 XIE:PutClientData
+R023 XIE:GetClientData
+R024 XIE:QueryPhotoflo
+R025 XIE:Await
+R026 XIE:Abort
+E000 XIE:ColorListError
+E001 XIE:LUTError
+E002 XIE:PhotofloError
+E003 XIE:PhotomapError
+E004 XIE:PhotospaceError
+E005 XIE:ROIError
+E006 XIE:FloError
+R000 XINERAMA:QueryVersion
+R001 XINERAMA:GetState
+R002 XINERAMA:GetScreenCount
+R003 XINERAMA:GetScreenSize
+R004 XINERAMA:IsActive
+R005 XINERAMA:QueryScreens
+R001 XInputExtension:GetExtensionVersion
+R002 XInputExtension:ListInputDevices
+R003 XInputExtension:OpenDevice
+R004 XInputExtension:CloseDevice
+R005 XInputExtension:SetDeviceMode
+R006 XInputExtension:SelectExtensionEvent
+R007 XInputExtension:GetSelectedExtensionEvents
+R008 XInputExtension:ChangeDeviceDontPropagateList
+R009 XInputExtension:GetDeviceDontPropagageList
+R010 XInputExtension:GetDeviceMotionEvents
+R011 XInputExtension:ChangeKeyboardDevice
+R012 XInputExtension:ChangePointerDevice
+R013 XInputExtension:GrabDevice
+R014 XInputExtension:UngrabDevice
+R015 XInputExtension:GrabDeviceKey
+R016 XInputExtension:UngrabDeviceKey
+R017 XInputExtension:GrabDeviceButton
+R018 XInputExtension:UngrabDeviceButton
+R019 XInputExtension:AllowDeviceEvents
+R020 XInputExtension:GetDeviceFocus
+R021 XInputExtension:SetDeviceFocus
+R022 XInputExtension:GetFeedbackControl
+R023 XInputExtension:ChangeFeedbackControl
+R024 XInputExtension:GetDeviceKeyMapping
+R025 XInputExtension:ChangeDeviceKeyMapping
+R026 XInputExtension:GetDeviceModifierMapping
+R027 XInputExtension:SetDeviceModifierMapping
+R028 XInputExtension:GetDeviceButtonMapping
+R029 XInputExtension:SetDeviceButtonMapping
+R030 XInputExtension:QueryDeviceState
+R031 XInputExtension:SendExtensionEvent
+R032 XInputExtension:DeviceBell
+R033 XInputExtension:SetDeviceValuators
+R034 XInputExtension:GetDeviceControl
+R035 XInputExtension:ChangeDeviceControl
+R036 XInputExtension:ListDeviceProperties
+R037 XInputExtension:ChangeDeviceProperty
+R038 XInputExtension:DeleteDeviceProperty
+R039 XInputExtension:GetDeviceProperty
+R040 XInputExtension:QueryPointer
+R041 XInputExtension:WarpPointer
+R042 XInputExtension:ChangeCursor
+R043 XInputExtension:ChangeHierarchy
+R044 XInputExtension:SetClientPointer
+R045 XInputExtension:GetClientPointer
+R046 XInputExtension:SelectEvents
+R047 XInputExtension:QueryVersion
+R048 XInputExtension:QueryDevice
+R049 XInputExtension:SetFocus
+R050 XInputExtension:GetFocus
+R051 XInputExtension:GrabDevice
+R052 XInputExtension:UngrabDevice
+R053 XInputExtension:AllowEvents
+R054 XInputExtension:PassiveGrabDevice
+R055 XInputExtension:PassiveUngrabDevice
+R056 XInputExtension:ListProperties
+R057 XInputExtension:ChangeProperty
+R058 XInputExtension:DeleteProperty
+R059 XInputExtension:GetProperty
+R060 XInputExtension:GetSelectedEvents
+V000 XInputExtension:DeviceValuator
+V001 XInputExtension:DeviceKeyPress
+V002 XInputExtension:DeviceKeyRelease
+V003 XInputExtension:DeviceButtonPress
+V004 XInputExtension:DeviceButtonRelease
+V005 XInputExtension:DeviceMotionNotify
+V006 XInputExtension:DeviceFocusIn
+V007 XInputExtension:DeviceFocusOut
+V008 XInputExtension:ProximityIn
+V009 XInputExtension:ProximityOut
+V010 XInputExtension:DeviceStateNotify
+V011 XInputExtension:DeviceMappingNotify
+V012 XInputExtension:ChangeDeviceNotify
+V013 XInputExtension:DeviceKeystateNotify
+V014 XInputExtension:DeviceButtonstateNotify
+V015 XInputExtension:DevicePresenceNotify
+V016 XInputExtension:DevicePropertyNotify
+E000 XInputExtension:BadDevice
+E001 XInputExtension:BadEvent
+E002 XInputExtension:BadMode
+E003 XInputExtension:DeviceBusy
+E004 XInputExtension:BadClass
+R000 XKEYBOARD:UseExtension
+R001 XKEYBOARD:SelectEvents
+R002 XKEYBOARD:Obsolete
+R003 XKEYBOARD:Bell
+R004 XKEYBOARD:GetState
+R005 XKEYBOARD:LatchLockState
+R006 XKEYBOARD:GetControls
+R007 XKEYBOARD:SetControls
+R008 XKEYBOARD:GetMap
+R009 XKEYBOARD:SetMap
+R010 XKEYBOARD:GetCompatMap
+R011 XKEYBOARD:SetCompatMap
+R012 XKEYBOARD:GetIndicatorState
+R013 XKEYBOARD:GetIndicatorMap
+R014 XKEYBOARD:SetIndicatorMap
+R015 XKEYBOARD:GetNamedIndicator
+R016 XKEYBOARD:SetNamedIndicator
+R017 XKEYBOARD:GetNames
+R018 XKEYBOARD:SetNames
+R019 XKEYBOARD:GetGeometry
+R020 XKEYBOARD:SetGeometry
+R021 XKEYBOARD:PerClientFlags
+R022 XKEYBOARD:ListComponents
+R023 XKEYBOARD:GetKbdByName
+R024 XKEYBOARD:GetDeviceInfo
+R025 XKEYBOARD:SetDeviceInfo
+R101 XKEYBOARD:SetDebuggingFlags
+V000 XKEYBOARD:EventCode
+E000 XKEYBOARD:BadKeyboard
+R000 XTEST:GetVersion
+R001 XTEST:CompareCursor
+R002 XTEST:FakeInput
+R003 XTEST:GrabControl
+R000 XVideo:QueryExtension
+R001 XVideo:QueryAdaptors
+R002 XVideo:QueryEncodings
+R003 XVideo:GrabPort
+R004 XVideo:UngrabPort
+R005 XVideo:PutVideo
+R006 XVideo:PutStill
+R007 XVideo:GetVideo
+R008 XVideo:GetStill
+R009 XVideo:StopVideo
+R010 XVideo:SelectVideoNotify
+R011 XVideo:SelectPortNotify
+R012 XVideo:QueryBestSize
+R013 XVideo:SetPortAttribute
+R014 XVideo:GetPortAttribute
+R015 XVideo:QueryPortAttributes
+R016 XVideo:ListImageFormats
+R017 XVideo:QueryImageAttributes
+R018 XVideo:PutImage
+R019 XVideo:ShmPutImage
+V000 XVideo:VideoNotify
+V001 XVideo:PortNotify
+E000 XVideo:BadPort
+E001 XVideo:BadEncoding
+E002 XVideo:BadControl
+R000 XVideo-MotionCompensation:QueryVersion
+R001 XVideo-MotionCompensation:ListSurfaceTypes
+R002 XVideo-MotionCompensation:CreateContext
+R003 XVideo-MotionCompensation:DestroyContext
+R004 XVideo-MotionCompensation:CreateSurface
+R005 XVideo-MotionCompensation:DestroySurface
+R006 XVideo-MotionCompensation:CreateSubpicture
+R007 XVideo-MotionCompensation:DestroySubpicture
+R008 XVideo-MotionCompensation:ListSubpictureTypes
+R009 XVideo-MotionCompensation:GetDRInfo
+E000 XVideo-MotionCompensation:BadContext
+E001 XVideo-MotionCompensation:BadSurface
+E002 XVideo-MotionCompensation:BadSubpicture
+R000 XpExtension:QueryVersion
+R001 XpExtension:GetPrinterList
+R002 XpExtension:CreateContext
+R003 XpExtension:SetContext
+R004 XpExtension:GetContext
+R005 XpExtension:DestroyContext
+R006 XpExtension:GetContextScreen
+R007 XpExtension:StartJob
+R008 XpExtension:EndJob
+R009 XpExtension:StartDoc
+R010 XpExtension:EndDoc
+R011 XpExtension:PutDocumentData
+R012 XpExtension:GetDocumentData
+R013 XpExtension:StartPage
+R014 XpExtension:EndPage
+R015 XpExtension:SelectInput
+R016 XpExtension:InputSelected
+R017 XpExtension:GetAttributes
+R018 XpExtension:SetAttributes
+R019 XpExtension:GetOneAttribute
+R020 XpExtension:RehashPrinterList
+R021 XpExtension:GetPageDimensions
+R022 XpExtension:QueryScreens
+R023 XpExtension:SetImageResolution
+R024 XpExtension:GetImageResolution
+V000 XpExtension:PrintNotify
+V001 XpExtension:AttributeNotify
+E000 XpExtension:BadContext
+E001 XpExtension:BadSequence
+E002 XpExtension:BadResourceID
diff --git a/xorg-server/doc/.gitignore b/xorg-server/doc/.gitignore
new file mode 100644
index 000000000..2ee2ac5b4
--- /dev/null
+++ b/xorg-server/doc/.gitignore
@@ -0,0 +1,4 @@
+*.html
+*.pdf
+*.ps
+*.txt
diff --git a/xorg-server/doc/Xserver-spec.xml b/xorg-server/doc/Xserver-spec.xml
index 2b11828fc..31b6fb05d 100644
--- a/xorg-server/doc/Xserver-spec.xml
+++ b/xorg-server/doc/Xserver-spec.xml
@@ -680,7 +680,7 @@ pReadmask is a pointer to the information describing the descriptors
that will be waited on.
</para>
<para>
-In the sample server, pTimeout is a struct timeval **, and pReadmask is
+In the sample server, pTimeout is a pointer, and pReadmask is
the address of the select() mask for reading.
</para>
<para>
@@ -688,15 +688,14 @@ The DIX BlockHandler() iterates through the Screens, for each one calling
its BlockHandler. A BlockHandler is declared thus:
<blockquote>
<programlisting>
- void xxxBlockHandler(nscreen, pbdata, pptv, pReadmask)
- int nscreen;
- pointer pbdata;
- struct timeval ** pptv;
+ void xxxBlockHandler(pScreen, pTimeout, pReadmask)
+ ScreenPtr pScreen;
+ pointer pTimeout;
pointer pReadmask;
</programlisting>
</blockquote>
-The arguments are the index of the Screen, the blockData field
-of the Screen, and the arguments to the DIX BlockHandler().
+The arguments are a pointer to the Screen, and the arguments to the
+DIX BlockHandler().
</para>
<para>
Immediately after WaitForSomething returns from the
@@ -721,15 +720,14 @@ The DIX WakeupHandler() calls each Screen's
WakeupHandler. A WakeupHandler is declared thus:
<blockquote>
<programlisting>
- void xxxWakeupHandler(nscreen, pbdata, err, pReadmask)
- int nscreen;
- pointer pbdata;
+ void xxxWakeupHandler(pScreen, result, pReadmask)
+ ScreenPtr pScreen;
unsigned long result;
pointer pReadmask;
</programlisting>
</blockquote>
-The arguments are the index of the Screen, the blockData field
-of the Screen, and the arguments to the DIX WakeupHandler().
+The arguments are the Screen, of the Screen, and the arguments to
+the DIX WakeupHandler().
</para>
<para>
In addition to the per-screen BlockHandlers, any module may register
@@ -1942,18 +1940,15 @@ FALSE.</para>
The scrInitProc should be of the following form:
<blockquote><programlisting>
- Bool scrInitProc(iScreen, pScreen, argc, argv)
- int iScreen;
+ Bool scrInitProc(pScreen, argc, argv)
ScreenPtr pScreen;
int argc;
char **argv;
</programlisting></blockquote>
-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).</para>
+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).</para>
<para>
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.
diff --git a/xorg-server/doc/c-extensions b/xorg-server/doc/c-extensions
index eb33e272b..984022333 100644
--- a/xorg-server/doc/c-extensions
+++ b/xorg-server/doc/c-extensions
@@ -1,61 +1,61 @@
-First of all: C89 or better. If you don't have that, port gcc first.
-
-Use of C language extensions throughout the X server tree
----------------------------------------------------------
-
-Optional extensions:
-The server will still build if your toolchain does not support these
-extensions, although the results may not be optimal.
-
- * _X_SENTINEL(x): member x of the passed structure must be NULL, e.g.:
- void parseOptions(Option *options _X_SENTINEL(0));
- parseOptions("foo", "bar", NULL); /* this is OK */
- parseOptions("foo", "bar", "baz"); /* this is not */
- This definition comes from Xfuncproto.h in the core
- protocol headers.
- * _X_ATTRIBUTE_PRINTF(x, y): This function has printf-like semantics;
- check the format string when built with
- -Wformat (gcc) or similar.
- * _X_EXPORT: this function should appear in symbol tables.
- * _X_HIDDEN: this function should not appear in the _dynamic_ symbol
- table.
- * _X_INTERNAL: like _X_HIDDEN, but attempt to ensure that this function
- is never called from another module.
- * _X_INLINE: inline this functon if possible (generally obeyed unless
- disabling optimisations).
- * _X_DEPRECATED: warn on use of this function.
-
-Mandatory extensions:
-The server will not build if your toolchain does not support these extensions.
-
- * named initialisers: explicitly initialising structure members, e.g.:
- struct foo bar = { .baz = quux, .brian = "dog" };
- * variadic macros: macros with a variable number of arguments, e.g.:
- #define DebugF(x, ...) /**/
- * interleaved code and declarations: { foo = TRUE; int bar; do_stuff(); }
-
-
-Use of OS and library facilities throughout the X server tree
--------------------------------------------------------------
-
-Non-OS-dependent code can assume facilities at least as good as
-the non-OS-facility parts of POSIX-1.2001. Ideally this would
-be C99, but even gcc+glibc doesn't implement that yet.
-
-Unix-like systems are assumed to be at least as good as UNIX03.
-
-Linux systems must be at least 2.4 or later. As a practical matter
-though, 2.4 kernels never receive any testing. Use 2.6 already.
-
-TODO: Solaris.
-
-TODO: *BSD.
-
-Code that needs to be portable to Windows should be careful to,
-well, be portable. Note that there are two Windows ports, cygwin and
-mingw. Cygwin is more or less like Linux, but mingw is a bit more
-restrictive. TODO: document which versions of Windows we actually care
-about.
-
-OSX support is generally limited to the most recent version. Currently
-that means 10.5.
+First of all: C89 or better. If you don't have that, port gcc first.
+
+Use of C language extensions throughout the X server tree
+---------------------------------------------------------
+
+Optional extensions:
+The server will still build if your toolchain does not support these
+extensions, although the results may not be optimal.
+
+ * _X_SENTINEL(x): member x of the passed structure must be NULL, e.g.:
+ void parseOptions(Option *options _X_SENTINEL(0));
+ parseOptions("foo", "bar", NULL); /* this is OK */
+ parseOptions("foo", "bar", "baz"); /* this is not */
+ This definition comes from Xfuncproto.h in the core
+ protocol headers.
+ * _X_ATTRIBUTE_PRINTF(x, y): This function has printf-like semantics;
+ check the format string when built with
+ -Wformat (gcc) or similar.
+ * _X_EXPORT: this function should appear in symbol tables.
+ * _X_HIDDEN: this function should not appear in the _dynamic_ symbol
+ table.
+ * _X_INTERNAL: like _X_HIDDEN, but attempt to ensure that this function
+ is never called from another module.
+ * _X_INLINE: inline this functon if possible (generally obeyed unless
+ disabling optimisations).
+ * _X_DEPRECATED: warn on use of this function.
+
+Mandatory extensions:
+The server will not build if your toolchain does not support these extensions.
+
+ * named initialisers: explicitly initialising structure members, e.g.:
+ struct foo bar = { .baz = quux, .brian = "dog" };
+ * variadic macros: macros with a variable number of arguments, e.g.:
+ #define DebugF(x, ...) /**/
+ * interleaved code and declarations: { foo = TRUE; int bar; do_stuff(); }
+
+
+Use of OS and library facilities throughout the X server tree
+-------------------------------------------------------------
+
+Non-OS-dependent code can assume facilities at least as good as
+the non-OS-facility parts of POSIX-1.2001. Ideally this would
+be C99, but even gcc+glibc doesn't implement that yet.
+
+Unix-like systems are assumed to be at least as good as UNIX03.
+
+Linux systems must be at least 2.4 or later. As a practical matter
+though, 2.4 kernels never receive any testing. Use 2.6 already.
+
+TODO: Solaris.
+
+TODO: *BSD.
+
+Code that needs to be portable to Windows should be careful to,
+well, be portable. Note that there are two Windows ports, cygwin and
+mingw. Cygwin is more or less like Linux, but mingw is a bit more
+restrictive. TODO: document which versions of Windows we actually care
+about.
+
+OSX support is generally limited to the most recent version. Currently
+that means 10.5.
diff --git a/xorg-server/doc/dtrace/.gitignore b/xorg-server/doc/dtrace/.gitignore
new file mode 100644
index 000000000..0d40e0d22
--- /dev/null
+++ b/xorg-server/doc/dtrace/.gitignore
@@ -0,0 +1,5 @@
+*.html
+*.pdf
+*.ps
+*.txt
+*.db
diff --git a/xorg-server/doc/smartsched b/xorg-server/doc/smartsched
index 057a759fd..466408431 100644
--- a/xorg-server/doc/smartsched
+++ b/xorg-server/doc/smartsched
@@ -1,204 +1,204 @@
- Client Scheduling in X
- Keith Packard
- SuSE
- 10/28/99
-
-History:
-
-Since the original X server was written at Digital in 1987, the OS and DIX
-layers shared responsibility for scheduling the order to service
-client requests. The original design was simplistic; under the maximum
-first make it work, then make it work well, this was a good idea. Now
-that we have a bit more experience with X applications, it's time to
-rethink the design.
-
-The basic dispatch loop in DIX looks like:
-
- for (;;)
- {
- nready = WaitForSomething (...);
- while (nready--)
- {
- isItTimeToYield = FALSE;
- while (!isItTimeToYield)
- {
- if (!ReadRequestFromClient (...))
- break;
- (execute request);
- }
- }
- }
-
-WaitForSomething looks like:
-
- for (;;)
- if (ANYSET (ClientsWithInput))
- return popcount (ClientsWithInput);
- select (...)
- compute clientsReadable from select result;
- return popcount (clientsReadable)
- }
-
-ReadRequestFromClient looks like:
-
- if (!fullRequestQueued)
- {
- read ();
- if (!fullRequestQueued)
- {
- remove from ClientsWithInput;
- timesThisConnection = 0;
- return 0;
- }
- }
- if (twoFullRequestsQueued)
- add to ClientsWithInput;
-
- if (++timesThisConnection >= 10)
- {
- isItTimeToYield = TRUE;
- timesThisConnection = 0;
- }
- return 1;
-
-Here's what happens in this code:
-
-With a single client executing a stream of requests:
-
- A client sends a packet of requests to the server.
-
- WaitForSomething wakes up from select and returns that client
- to Dispatch
-
- Dispatch calls ReadRequestFromClient which reads a buffer (4K)
- full of requests from the client
-
- The server executes requests from this buffer until it emptys,
- in two stages -- 10 requests at a time are executed in the
- inner Dispatch loop, a buffer full of requests are executed
- because WaitForSomething immediately returns if any clients
- have complete requests pending in their input queues.
-
- When the buffer finally emptys, the next call to ReadRequest
- FromClient will return zero and Dispatch will go back to
- WaitForSomething; now that the client has no requests pending,
- WaitForSomething will block in select again. If the client
- is active, this select will immediately return that client
- as ready to read.
-
-With multiple clients sending streams of requests, the sequence
-of operations is similar, except that ReadRequestFromClient will
-set isItTimeToYield after each 10 requests executed causing the
-server to round-robin among the clients with available requests.
-
-It's important to realize here that any complete requests which have been
-read from clients will be executed before the server will use select again
-to discover input from other clients. A single busy client can easily
-monopolize the X server.
-
-So, the X server doesn't share well with clients which are more interactive
-in nature.
-
-The X server executes at most a buffer full of requests before again heading
-into select; ReadRequestFromClient causes the server to yield when the
-client request buffer doesn't contain a complete request. When
-that buffer is executed quickly, the server spends a lot of time
-in select discovering that the same client again has input ready. Thus
-the server also runs busy clients less efficiently than is would be
-possible.
-
-What to do.
-
-There are several things evident from the above discussion:
-
- 1 The server has a poor metric for deciding how much work it
- should do at one time on behalf of a particular client.
-
- 2 The server doesn't call select often enough to detect less
- aggressive clients in the face of busy clients, especially
- when those clients are executing slow requests.
-
- 3 The server calls select too often when executing fast requests.
-
- 4 Some priority scheme is needed to keep interactive clients
- responding to the user.
-
-And, there are some assumptions about how X applications work:
-
- 1 Each X request is executed relatively quickly; a request-granularity
- is good enough for interactive response almost all of the time.
-
- 2 X applications receiving mouse/keyboard events are likely to
- warrant additional attention from the X server.
-
-Instead of a request-count metric for work, a time-based metric should be
-used. The server should select a reasonable time slice for each client
-and execute requests for the entire timeslice before yielding to
-another client.
-
-Instead of returning immediately from WaitForSomething if clients have
-complete requests queued, the server should go through select each
-time and gather as many ready clients as possible. This involves
-polling instead of blocking and adding the ClientsWithInput to
-clientsReadable after the select returns.
-
-Instead of yielding when the request buffer is empty for a particular
-client, leave the yielding to the upper level scheduling and allow
-the server to try and read again from the socket. If the client
-is busy, another buffer full of requests will already be waiting
-to be delivered thus avoiding the call through select and the
-additional overhead in WaitForSomething.
-
-Finally, the dispatch loop should not simply execute requests from the
-first available client, instead each client should be prioritized with
-busy clients penalized and clients receiving user events praised.
-
-How it's done:
-
-Polling the current time of day from the OS is too expensive to
-be done at each request boundary, so instead an interval timer is
-set allowing the server to track time changes by counting invocations
-of the related signal handler. Instead of using the wall time for
-this purpose, the process CPU time is used instead. This serves
-two purposes -- first, it allows the server to consume no CPU cycles
-when idle, second it avoids conflicts with SIGALRM usage in other
-parts of the server code. It's not without problems though; other
-CPU intensive processes on the same machine can reduce interactive
-response time within the X server. The dispatch loop can now
-calculate an approximate time value using the number of signals
-received. The granularity of the timer sets the scheduling jitter,
-at 20ms it's only occasionally noticeable.
-
-The changes to WaitForSomething and ReadRequestFromClient are
-straightforward, adjusting when select is called and avoiding
-setting isItTimeToYield too often.
-
-The dispatch loop changes are more extensive, now instead of
-executing requests from all available clients, a single client
-is chosen after each call to WaitForSomething, requests are
-executed for that client and WaitForSomething is called again.
-
-Each client is assigned a priority, the dispatch loop chooses the
-client with the highest priority to execute. Priorities are
-updated in three ways:
-
- 1. Clients which consume their entire slice are penalized
- by having their priority reduced by one until they
- reach some minimum value.
-
- 2. Clients which have executed no requests for some time
- are praised by having their priority raised until they
- return to normal priority.
-
- 3. Clients which receive user input are praised by having
- their priority rased until they reach some maximal
- value, above normal priority.
-
-The effect of these changes is to both improve interactive application
-response and benchmark numbers at the same time.
-
-
-
-
-
-$XFree86: $
+ Client Scheduling in X
+ Keith Packard
+ SuSE
+ 10/28/99
+
+History:
+
+Since the original X server was written at Digital in 1987, the OS and DIX
+layers shared responsibility for scheduling the order to service
+client requests. The original design was simplistic; under the maximum
+first make it work, then make it work well, this was a good idea. Now
+that we have a bit more experience with X applications, it's time to
+rethink the design.
+
+The basic dispatch loop in DIX looks like:
+
+ for (;;)
+ {
+ nready = WaitForSomething (...);
+ while (nready--)
+ {
+ isItTimeToYield = FALSE;
+ while (!isItTimeToYield)
+ {
+ if (!ReadRequestFromClient (...))
+ break;
+ (execute request);
+ }
+ }
+ }
+
+WaitForSomething looks like:
+
+ for (;;)
+ if (ANYSET (ClientsWithInput))
+ return popcount (ClientsWithInput);
+ select (...)
+ compute clientsReadable from select result;
+ return popcount (clientsReadable)
+ }
+
+ReadRequestFromClient looks like:
+
+ if (!fullRequestQueued)
+ {
+ read ();
+ if (!fullRequestQueued)
+ {
+ remove from ClientsWithInput;
+ timesThisConnection = 0;
+ return 0;
+ }
+ }
+ if (twoFullRequestsQueued)
+ add to ClientsWithInput;
+
+ if (++timesThisConnection >= 10)
+ {
+ isItTimeToYield = TRUE;
+ timesThisConnection = 0;
+ }
+ return 1;
+
+Here's what happens in this code:
+
+With a single client executing a stream of requests:
+
+ A client sends a packet of requests to the server.
+
+ WaitForSomething wakes up from select and returns that client
+ to Dispatch
+
+ Dispatch calls ReadRequestFromClient which reads a buffer (4K)
+ full of requests from the client
+
+ The server executes requests from this buffer until it emptys,
+ in two stages -- 10 requests at a time are executed in the
+ inner Dispatch loop, a buffer full of requests are executed
+ because WaitForSomething immediately returns if any clients
+ have complete requests pending in their input queues.
+
+ When the buffer finally emptys, the next call to ReadRequest
+ FromClient will return zero and Dispatch will go back to
+ WaitForSomething; now that the client has no requests pending,
+ WaitForSomething will block in select again. If the client
+ is active, this select will immediately return that client
+ as ready to read.
+
+With multiple clients sending streams of requests, the sequence
+of operations is similar, except that ReadRequestFromClient will
+set isItTimeToYield after each 10 requests executed causing the
+server to round-robin among the clients with available requests.
+
+It's important to realize here that any complete requests which have been
+read from clients will be executed before the server will use select again
+to discover input from other clients. A single busy client can easily
+monopolize the X server.
+
+So, the X server doesn't share well with clients which are more interactive
+in nature.
+
+The X server executes at most a buffer full of requests before again heading
+into select; ReadRequestFromClient causes the server to yield when the
+client request buffer doesn't contain a complete request. When
+that buffer is executed quickly, the server spends a lot of time
+in select discovering that the same client again has input ready. Thus
+the server also runs busy clients less efficiently than is would be
+possible.
+
+What to do.
+
+There are several things evident from the above discussion:
+
+ 1 The server has a poor metric for deciding how much work it
+ should do at one time on behalf of a particular client.
+
+ 2 The server doesn't call select often enough to detect less
+ aggressive clients in the face of busy clients, especially
+ when those clients are executing slow requests.
+
+ 3 The server calls select too often when executing fast requests.
+
+ 4 Some priority scheme is needed to keep interactive clients
+ responding to the user.
+
+And, there are some assumptions about how X applications work:
+
+ 1 Each X request is executed relatively quickly; a request-granularity
+ is good enough for interactive response almost all of the time.
+
+ 2 X applications receiving mouse/keyboard events are likely to
+ warrant additional attention from the X server.
+
+Instead of a request-count metric for work, a time-based metric should be
+used. The server should select a reasonable time slice for each client
+and execute requests for the entire timeslice before yielding to
+another client.
+
+Instead of returning immediately from WaitForSomething if clients have
+complete requests queued, the server should go through select each
+time and gather as many ready clients as possible. This involves
+polling instead of blocking and adding the ClientsWithInput to
+clientsReadable after the select returns.
+
+Instead of yielding when the request buffer is empty for a particular
+client, leave the yielding to the upper level scheduling and allow
+the server to try and read again from the socket. If the client
+is busy, another buffer full of requests will already be waiting
+to be delivered thus avoiding the call through select and the
+additional overhead in WaitForSomething.
+
+Finally, the dispatch loop should not simply execute requests from the
+first available client, instead each client should be prioritized with
+busy clients penalized and clients receiving user events praised.
+
+How it's done:
+
+Polling the current time of day from the OS is too expensive to
+be done at each request boundary, so instead an interval timer is
+set allowing the server to track time changes by counting invocations
+of the related signal handler. Instead of using the wall time for
+this purpose, the process CPU time is used instead. This serves
+two purposes -- first, it allows the server to consume no CPU cycles
+when idle, second it avoids conflicts with SIGALRM usage in other
+parts of the server code. It's not without problems though; other
+CPU intensive processes on the same machine can reduce interactive
+response time within the X server. The dispatch loop can now
+calculate an approximate time value using the number of signals
+received. The granularity of the timer sets the scheduling jitter,
+at 20ms it's only occasionally noticeable.
+
+The changes to WaitForSomething and ReadRequestFromClient are
+straightforward, adjusting when select is called and avoiding
+setting isItTimeToYield too often.
+
+The dispatch loop changes are more extensive, now instead of
+executing requests from all available clients, a single client
+is chosen after each call to WaitForSomething, requests are
+executed for that client and WaitForSomething is called again.
+
+Each client is assigned a priority, the dispatch loop chooses the
+client with the highest priority to execute. Priorities are
+updated in three ways:
+
+ 1. Clients which consume their entire slice are penalized
+ by having their priority reduced by one until they
+ reach some minimum value.
+
+ 2. Clients which have executed no requests for some time
+ are praised by having their priority raised until they
+ return to normal priority.
+
+ 3. Clients which receive user input are praised by having
+ their priority rased until they reach some maximal
+ value, above normal priority.
+
+The effect of these changes is to both improve interactive application
+response and benchmark numbers at the same time.
+
+
+
+
+
+$XFree86: $
diff --git a/xorg-server/exa/Makefile.am b/xorg-server/exa/Makefile.am
index 8b759cd76..9876bf5f6 100644
--- a/xorg-server/exa/Makefile.am
+++ b/xorg-server/exa/Makefile.am
@@ -1,30 +1,30 @@
-noinst_LTLIBRARIES = libexa.la
-
-# Override these since EXA doesn't need them and the needed files aren't
-# built (in hw/xfree86/os-support/solaris) until after EXA is built
-SOLARIS_ASM_CFLAGS=""
-
-if XORG
-sdk_HEADERS = exa.h
-endif
-
-INCLUDES = \
- $(XORG_INCS) \
- -I$(srcdir)/../miext/cw
-
-AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
-
-libexa_la_SOURCES = \
- exa.c \
- exa.h \
- exa_classic.c \
- exa_migration_classic.c \
- exa_driver.c \
- exa_mixed.c \
- exa_migration_mixed.c \
- exa_accel.c \
- exa_glyphs.c \
- exa_offscreen.c \
- exa_render.c \
- exa_priv.h \
- exa_unaccel.c
+noinst_LTLIBRARIES = libexa.la
+
+# Override these since EXA doesn't need them and the needed files aren't
+# built (in hw/xfree86/os-support/solaris) until after EXA is built
+SOLARIS_ASM_CFLAGS=""
+
+if XORG
+sdk_HEADERS = exa.h
+endif
+
+INCLUDES = \
+ $(XORG_INCS) \
+ -I$(srcdir)/../miext/cw
+
+AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
+
+libexa_la_SOURCES = \
+ exa.c \
+ exa.h \
+ exa_classic.c \
+ exa_migration_classic.c \
+ exa_driver.c \
+ exa_mixed.c \
+ exa_migration_mixed.c \
+ exa_accel.c \
+ exa_glyphs.c \
+ exa_offscreen.c \
+ exa_render.c \
+ exa_priv.h \
+ exa_unaccel.c
diff --git a/xorg-server/exa/exa.c b/xorg-server/exa/exa.c
index e22f2f022..0f90e593c 100644
--- a/xorg-server/exa/exa.c
+++ b/xorg-server/exa/exa.c
@@ -704,11 +704,9 @@ exaCreateScreenResources(ScreenPtr pScreen)
}
static void
-ExaBlockHandler(int screenNum, pointer blockData, pointer pTimeout,
+ExaBlockHandler(ScreenPtr pScreen, pointer pTimeout,
pointer pReadmask)
{
- ScreenPtr pScreen = screenInfo.screens[screenNum];
-
ExaScreenPriv(pScreen);
/* Move any deferred results from a software fallback to the driver pixmap */
@@ -716,7 +714,7 @@ ExaBlockHandler(int screenNum, pointer blockData, pointer pTimeout,
exaMoveInPixmap_mixed(pExaScr->deferred_mixed_pixmap);
unwrap(pExaScr, pScreen, BlockHandler);
- (*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
+ (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask);
wrap(pExaScr, pScreen, BlockHandler, ExaBlockHandler);
/* The rest only applies to classic EXA */
@@ -736,15 +734,13 @@ ExaBlockHandler(int screenNum, pointer blockData, pointer pTimeout,
}
static void
-ExaWakeupHandler(int screenNum, pointer wakeupData, unsigned long result,
+ExaWakeupHandler(ScreenPtr pScreen, unsigned long result,
pointer pReadmask)
{
- ScreenPtr pScreen = screenInfo.screens[screenNum];
-
ExaScreenPriv(pScreen);
unwrap(pExaScr, pScreen, WakeupHandler);
- (*pScreen->WakeupHandler) (screenNum, wakeupData, result, pReadmask);
+ (*pScreen->WakeupHandler) (pScreen, result, pReadmask);
wrap(pExaScr, pScreen, WakeupHandler, ExaWakeupHandler);
if (result == 0 && pExaScr->numOffscreenAvailable > 1) {
@@ -762,7 +758,7 @@ ExaWakeupHandler(int screenNum, pointer wakeupData, unsigned long result,
* screen private, before calling down to the next CloseSccreen.
*/
static Bool
-exaCloseScreen(int i, ScreenPtr pScreen)
+exaCloseScreen(ScreenPtr pScreen)
{
ExaScreenPriv(pScreen);
PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
@@ -797,7 +793,7 @@ exaCloseScreen(int i, ScreenPtr pScreen)
free(pExaScr);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
/**
diff --git a/xorg-server/exa/exa.h b/xorg-server/exa/exa.h
index 75340021e..8a6539f65 100644
--- a/xorg-server/exa/exa.h
+++ b/xorg-server/exa/exa.h
@@ -789,7 +789,7 @@ extern _X_EXPORT void
ExaOffscreenMarkUsed(PixmapPtr pPixmap);
extern _X_EXPORT void
- exaEnableDisableFBAccess(int index, Bool enable);
+ exaEnableDisableFBAccess(ScreenPtr pScreen, Bool enable);
extern _X_EXPORT Bool
exaDrawableIsOffscreen(DrawablePtr pDrawable);
diff --git a/xorg-server/exa/exa_offscreen.c b/xorg-server/exa/exa_offscreen.c
index 5e1d1398e..1f571cf22 100644
--- a/xorg-server/exa/exa_offscreen.c
+++ b/xorg-server/exa/exa_offscreen.c
@@ -360,10 +360,8 @@ ExaOffscreenSwapIn(ScreenPtr pScreen)
* swapped out.
*/
void
-exaEnableDisableFBAccess(int index, Bool enable)
+exaEnableDisableFBAccess(ScreenPtr pScreen, Bool enable)
{
- ScreenPtr pScreen = screenInfo.screens[index];
-
ExaScreenPriv(pScreen);
if (pExaScr->info->flags & EXA_HANDLES_PIXMAPS)
diff --git a/xorg-server/exa/exa_priv.h b/xorg-server/exa/exa_priv.h
index bde78c3a0..f980fea6d 100644
--- a/xorg-server/exa/exa_priv.h
+++ b/xorg-server/exa/exa_priv.h
@@ -147,7 +147,7 @@ typedef struct _ExaMigrationRec {
RegionPtr pReg;
} ExaMigrationRec, *ExaMigrationPtr;
-typedef void (*EnableDisableFBAccessProcPtr) (int, Bool);
+typedef void (*EnableDisableFBAccessProcPtr) (ScreenPtr, Bool);
typedef struct {
ExaDriverPtr info;
ScreenBlockHandlerProcPtr SavedBlockHandler;
diff --git a/xorg-server/fb/Makefile.am b/xorg-server/fb/Makefile.am
index 1b0302ed1..89f3babb1 100644
--- a/xorg-server/fb/Makefile.am
+++ b/xorg-server/fb/Makefile.am
@@ -1,54 +1,54 @@
-noinst_LTLIBRARIES = libfb.la libwfb.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-if XORG
-sdk_HEADERS = fb.h fbrop.h fboverlay.h wfbrename.h fbpict.h
-endif
-
-libfb_la_CFLAGS = $(AM_CFLAGS)
-libfb_la_LIBADD = $(PIXMAN_LIBS)
-
-libwfb_la_CFLAGS = $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
-libwfb_la_LIBADD = $(PIXMAN_LIBS)
-
-libfb_la_SOURCES = \
- fb.h \
- fb24_32.c \
- fb24_32.h \
- fballpriv.c \
- fbarc.c \
- fbbits.c \
- fbbits.h \
- fbblt.c \
- fbbltone.c \
- fbcopy.c \
- fbfill.c \
- fbfillrect.c \
- fbfillsp.c \
- fbgc.c \
- fbgetsp.c \
- fbglyph.c \
- fbimage.c \
- fbline.c \
- fboverlay.c \
- fboverlay.h \
- fbpict.c \
- fbpict.h \
- fbpixmap.c \
- fbpoint.c \
- fbpush.c \
- fbrop.h \
- fbscreen.c \
- fbseg.c \
- fbsetsp.c \
- fbsolid.c \
- fbstipple.c \
- fbtile.c \
- fbtrap.c \
- fbutil.c \
- fbwindow.c
-
-libwfb_la_SOURCES = $(libfb_la_SOURCES)
-
-EXTRA_DIST = fbcmap_mi.c
+noinst_LTLIBRARIES = libfb.la libwfb.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+if XORG
+sdk_HEADERS = fb.h fbrop.h fboverlay.h wfbrename.h fbpict.h
+endif
+
+libfb_la_CFLAGS = $(AM_CFLAGS)
+libfb_la_LIBADD = $(PIXMAN_LIBS)
+
+libwfb_la_CFLAGS = $(AM_CFLAGS) -DFB_ACCESS_WRAPPER
+libwfb_la_LIBADD = $(PIXMAN_LIBS)
+
+libfb_la_SOURCES = \
+ fb.h \
+ fb24_32.c \
+ fb24_32.h \
+ fballpriv.c \
+ fbarc.c \
+ fbbits.c \
+ fbbits.h \
+ fbblt.c \
+ fbbltone.c \
+ fbcopy.c \
+ fbfill.c \
+ fbfillrect.c \
+ fbfillsp.c \
+ fbgc.c \
+ fbgetsp.c \
+ fbglyph.c \
+ fbimage.c \
+ fbline.c \
+ fboverlay.c \
+ fboverlay.h \
+ fbpict.c \
+ fbpict.h \
+ fbpixmap.c \
+ fbpoint.c \
+ fbpush.c \
+ fbrop.h \
+ fbscreen.c \
+ fbseg.c \
+ fbsetsp.c \
+ fbsolid.c \
+ fbstipple.c \
+ fbtile.c \
+ fbtrap.c \
+ fbutil.c \
+ fbwindow.c
+
+libwfb_la_SOURCES = $(libfb_la_SOURCES)
+
+EXTRA_DIST = fbcmap_mi.c
diff --git a/xorg-server/fb/fb.h b/xorg-server/fb/fb.h
index 4843f0803..613af78e9 100644
--- a/xorg-server/fb/fb.h
+++ b/xorg-server/fb/fb.h
@@ -1396,7 +1396,7 @@ fbPushPixels(GCPtr pGC,
*/
extern _X_EXPORT Bool
- fbCloseScreen(int indx, ScreenPtr pScreen);
+ fbCloseScreen(ScreenPtr pScreen);
extern _X_EXPORT Bool
fbRealizeFont(ScreenPtr pScreen, FontPtr pFont);
diff --git a/xorg-server/fb/fboverlay.c b/xorg-server/fb/fboverlay.c
index 998be66d9..a882ffa39 100644
--- a/xorg-server/fb/fboverlay.c
+++ b/xorg-server/fb/fboverlay.c
@@ -81,7 +81,7 @@ fbOverlayCreateWindow(WindowPtr pWin)
}
Bool
-fbOverlayCloseScreen(int iScreen, ScreenPtr pScreen)
+fbOverlayCloseScreen(ScreenPtr pScreen)
{
FbOverlayScrPrivPtr pScrPriv = fbOverlayGetScrPriv(pScreen);
int i;
diff --git a/xorg-server/fb/fboverlay.h b/xorg-server/fb/fboverlay.h
index 76198cda5..9a93457c7 100644
--- a/xorg-server/fb/fboverlay.h
+++ b/xorg-server/fb/fboverlay.h
@@ -63,7 +63,7 @@ extern _X_EXPORT Bool
fbOverlayCreateWindow(WindowPtr pWin);
extern _X_EXPORT Bool
- fbOverlayCloseScreen(int iScreen, ScreenPtr pScreen);
+ fbOverlayCloseScreen(ScreenPtr pScreen);
extern _X_EXPORT int
fbOverlayWindowLayer(WindowPtr pWin);
diff --git a/xorg-server/fb/fbscreen.c b/xorg-server/fb/fbscreen.c
index c0903ec5c..0833cd41e 100644
--- a/xorg-server/fb/fbscreen.c
+++ b/xorg-server/fb/fbscreen.c
@@ -27,7 +27,7 @@
#include "fb.h"
Bool
-fbCloseScreen(int index, ScreenPtr pScreen)
+fbCloseScreen(ScreenPtr pScreen)
{
int d;
DepthPtr depths = pScreen->allowedDepths;
diff --git a/xorg-server/glx/glxdri.c b/xorg-server/glx/glxdri.c
index 9bf20315b..24749dbdd 100644
--- a/xorg-server/glx/glxdri.c
+++ b/xorg-server/glx/glxdri.c
@@ -849,18 +849,17 @@ static const __DRIextension *loader_extensions[] = {
};
static Bool
-glxDRIEnterVT(int index, int flags)
+glxDRIEnterVT(ScrnInfoPtr scrn)
{
- ScrnInfoPtr scrn = xf86Screens[index];
Bool ret;
__GLXDRIscreen *screen = (__GLXDRIscreen *)
- glxGetScreen(screenInfo.screens[index]);
+ glxGetScreen(xf86ScrnToScreen(scrn));
LogMessage(X_INFO, "AIGLX: Resuming AIGLX clients after VT switch\n");
scrn->EnterVT = screen->enterVT;
- ret = scrn->EnterVT(index, flags);
+ ret = scrn->EnterVT(scrn);
screen->enterVT = scrn->EnterVT;
scrn->EnterVT = glxDRIEnterVT;
@@ -874,18 +873,17 @@ glxDRIEnterVT(int index, int flags)
}
static void
-glxDRILeaveVT(int index, int flags)
+glxDRILeaveVT(ScrnInfoPtr scrn)
{
- ScrnInfoPtr scrn = xf86Screens[index];
__GLXDRIscreen *screen = (__GLXDRIscreen *)
- glxGetScreen(screenInfo.screens[index]);
+ glxGetScreen(xf86ScrnToScreen(scrn));
LogMessage(X_INFO, "AIGLX: Suspending AIGLX clients for VT switch\n");
glxSuspendClients();
scrn->LeaveVT = screen->leaveVT;
- (*screen->leaveVT) (index, flags);
+ (*screen->leaveVT) (scrn);
screen->leaveVT = scrn->LeaveVT;
scrn->LeaveVT = glxDRILeaveVT;
}
diff --git a/xorg-server/glx/glxdri2.c b/xorg-server/glx/glxdri2.c
index cceb12697..6614666ca 100644
--- a/xorg-server/glx/glxdri2.c
+++ b/xorg-server/glx/glxdri2.c
@@ -587,18 +587,17 @@ static const __DRIextension *loader_extensions[] = {
};
static Bool
-glxDRIEnterVT(int index, int flags)
+glxDRIEnterVT(ScrnInfoPtr scrn)
{
- ScrnInfoPtr scrn = xf86Screens[index];
Bool ret;
__GLXDRIscreen *screen = (__GLXDRIscreen *)
- glxGetScreen(screenInfo.screens[index]);
+ glxGetScreen(xf86ScrnToScreen(scrn));
LogMessage(X_INFO, "AIGLX: Resuming AIGLX clients after VT switch\n");
scrn->EnterVT = screen->enterVT;
- ret = scrn->EnterVT(index, flags);
+ ret = scrn->EnterVT(scrn);
screen->enterVT = scrn->EnterVT;
scrn->EnterVT = glxDRIEnterVT;
@@ -612,18 +611,17 @@ glxDRIEnterVT(int index, int flags)
}
static void
-glxDRILeaveVT(int index, int flags)
+glxDRILeaveVT(ScrnInfoPtr scrn)
{
- ScrnInfoPtr scrn = xf86Screens[index];
__GLXDRIscreen *screen = (__GLXDRIscreen *)
- glxGetScreen(screenInfo.screens[index]);
+ glxGetScreen(xf86ScrnToScreen(scrn));
LogMessage(X_INFO, "AIGLX: Suspending AIGLX clients for VT switch\n");
glxSuspendClients();
scrn->LeaveVT = screen->leaveVT;
- (*screen->leaveVT) (index, flags);
+ (*screen->leaveVT) (scrn);
screen->leaveVT = scrn->LeaveVT;
scrn->LeaveVT = glxDRILeaveVT;
}
diff --git a/xorg-server/glx/glxscreens.c b/xorg-server/glx/glxscreens.c
index 1ece23038..ca0e5254b 100644
--- a/xorg-server/glx/glxscreens.c
+++ b/xorg-server/glx/glxscreens.c
@@ -181,7 +181,7 @@ static char GLXServerExtensions[] =
"GLX_SGIX_pbuffer " "GLX_MESA_copy_sub_buffer " "GLX_INTEL_swap_event";
static Bool
-glxCloseScreen(int index, ScreenPtr pScreen)
+glxCloseScreen(ScreenPtr pScreen)
{
__GLXscreen *pGlxScreen = glxGetScreen(pScreen);
@@ -189,7 +189,7 @@ glxCloseScreen(int index, ScreenPtr pScreen)
pGlxScreen->destroy(pGlxScreen);
- return pScreen->CloseScreen(index, pScreen);
+ return pScreen->CloseScreen(pScreen);
}
__GLXscreen *
diff --git a/xorg-server/glx/glxscreens.h b/xorg-server/glx/glxscreens.h
index d5420ee8d..172268b29 100644
--- a/xorg-server/glx/glxscreens.h
+++ b/xorg-server/glx/glxscreens.h
@@ -153,7 +153,7 @@ struct __GLXscreen {
unsigned GLXminor;
/*@} */
- Bool (*CloseScreen) (int index, ScreenPtr pScreen);
+ Bool (*CloseScreen) (ScreenPtr pScreen);
};
void __glXScreenInit(__GLXscreen * screen, ScreenPtr pScreen);
diff --git a/xorg-server/hw/Makefile.am b/xorg-server/hw/Makefile.am
index 6c2cc6bd4..31e2565db 100644
--- a/xorg-server/hw/Makefile.am
+++ b/xorg-server/hw/Makefile.am
@@ -1,41 +1,41 @@
-if DMX
-DMX_SUBDIRS = dmx
-endif
-
-if XORG
-XORG_SUBDIRS = xfree86
-endif
-
-if XVFB
-XVFB_SUBDIRS = vfb
-endif
-
-if XNEST
-XNEST_SUBDIRS = xnest
-endif
-
-if XWIN
-XWIN_SUBDIRS = xwin
-endif
-
-if KDRIVE
-KDRIVE_SUBDIRS = kdrive
-endif
-
-if XQUARTZ
-XQUARTZ_SUBDIRS = xquartz
-endif
-
-SUBDIRS = \
- $(XORG_SUBDIRS) \
- $(XWIN_SUBDIRS) \
- $(XVFB_SUBDIRS) \
- $(XNEST_SUBDIRS) \
- $(DMX_SUBDIRS) \
- $(KDRIVE_SUBDIRS) \
- $(XQUARTZ_SUBDIRS)
-
-DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive
-
-relink:
- $(AM_V_at)for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done
+if DMX
+DMX_SUBDIRS = dmx
+endif
+
+if XORG
+XORG_SUBDIRS = xfree86
+endif
+
+if XVFB
+XVFB_SUBDIRS = vfb
+endif
+
+if XNEST
+XNEST_SUBDIRS = xnest
+endif
+
+if XWIN
+XWIN_SUBDIRS = xwin
+endif
+
+if KDRIVE
+KDRIVE_SUBDIRS = kdrive
+endif
+
+if XQUARTZ
+XQUARTZ_SUBDIRS = xquartz
+endif
+
+SUBDIRS = \
+ $(XORG_SUBDIRS) \
+ $(XWIN_SUBDIRS) \
+ $(XVFB_SUBDIRS) \
+ $(XNEST_SUBDIRS) \
+ $(DMX_SUBDIRS) \
+ $(KDRIVE_SUBDIRS) \
+ $(XQUARTZ_SUBDIRS)
+
+DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive
+
+relink:
+ $(AM_V_at)for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done
diff --git a/xorg-server/hw/dmx/.gitignore b/xorg-server/hw/dmx/.gitignore
new file mode 100644
index 000000000..f71acff10
--- /dev/null
+++ b/xorg-server/hw/dmx/.gitignore
@@ -0,0 +1,2 @@
+# Add & Override for this directory and it's subdirectories
+Xdmx
diff --git a/xorg-server/hw/dmx/config/.gitignore b/xorg-server/hw/dmx/config/.gitignore
new file mode 100644
index 000000000..bf5e80873
--- /dev/null
+++ b/xorg-server/hw/dmx/config/.gitignore
@@ -0,0 +1,7 @@
+# Add & Override for this directory and it's subdirectories
+dmxtodmx
+parser.c
+parser.h
+scanner.c
+vdltodmx
+xdmxconfig
diff --git a/xorg-server/hw/dmx/config/TODO b/xorg-server/hw/dmx/config/TODO
index 2998ff4a0..0e9255fd2 100644
--- a/xorg-server/hw/dmx/config/TODO
+++ b/xorg-server/hw/dmx/config/TODO
@@ -1,7 +1,7 @@
-Fri May 31 13:20:17 2002
-
-1) Sanitize values from input boxes.
-
-2) Add canvas colors to cavas widget resources or to command-line options.
-
-3) Add ability to edit option line(s) and wall.
+Fri May 31 13:20:17 2002
+
+1) Sanitize values from input boxes.
+
+2) Add canvas colors to cavas widget resources or to command-line options.
+
+3) Add ability to edit option line(s) and wall.
diff --git a/xorg-server/hw/dmx/config/dmxcompat.h b/xorg-server/hw/dmx/config/dmxcompat.h
index 718892040..b9b083ff6 100644
--- a/xorg-server/hw/dmx/config/dmxcompat.h
+++ b/xorg-server/hw/dmx/config/dmxcompat.h
@@ -1,44 +1,44 @@
-/*
- * Copyright 2002 Red Hat Inc., Durham, North Carolina.
- *
- * All Rights Reserved.
- *
- * 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 on 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 (including the
- * next paragraph) 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
- * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- * 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.
- */
-
-/*
- * Authors:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to VDL compatibility support. \see dmxcompat.c
- *
- * This file is not used by the DMX server.
- */
-
-#ifndef _DMXCOMPAT_H_
-#define _DMXCOMPAT_H_
-
-extern DMXConfigEntryPtr dmxVDLRead(const char *filename);
-#endif
+/*
+ * Copyright 2002 Red Hat Inc., Durham, North Carolina.
+ *
+ * All Rights Reserved.
+ *
+ * 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 on 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 (including the
+ * next paragraph) 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
+ * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ * 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.
+ */
+
+/*
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@redhat.com>
+ *
+ */
+
+/** \file
+ * Interface to VDL compatibility support. \see dmxcompat.c
+ *
+ * This file is not used by the DMX server.
+ */
+
+#ifndef _DMXCOMPAT_H_
+#define _DMXCOMPAT_H_
+
+extern DMXConfigEntryPtr dmxVDLRead(const char *filename);
+#endif
diff --git a/xorg-server/hw/dmx/config/parser.y b/xorg-server/hw/dmx/config/parser.y
index ac2441017..9a45e624f 100644
--- a/xorg-server/hw/dmx/config/parser.y
+++ b/xorg-server/hw/dmx/config/parser.y
@@ -1,226 +1,226 @@
-/* $XFree86$ */
-/*
- * Copyright 2002-2003 Red Hat Inc., Durham, North Carolina.
- *
- * All Rights Reserved.
- *
- * 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 on 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 (including the
- * next paragraph) 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
- * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- * 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.
- */
-
-/*
- * Authors:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-%{
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmxparse.h"
-#include <string.h>
-#include <stdlib.h>
-#define YYDEBUG 1
-#define YYERROR_VERBOSE
-#define YY_USE_PROTOS
-
-DMXConfigEntryPtr dmxConfigEntry = NULL;
-#define APPEND(type, h, t) \
-{ \
- type pt; \
- for (pt = h; pt->next; pt = pt->next); \
- pt->next = t; \
-}
-%}
-
-%union {
- DMXConfigTokenPtr token;
- DMXConfigStringPtr string;
- DMXConfigNumberPtr number;
- DMXConfigPairPtr pair;
- DMXConfigFullDimPtr fdim;
- DMXConfigPartDimPtr pdim;
- DMXConfigDisplayPtr display;
- DMXConfigWallPtr wall;
- DMXConfigOptionPtr option;
- DMXConfigParamPtr param;
- DMXConfigCommentPtr comment;
- DMXConfigSubPtr subentry;
- DMXConfigVirtualPtr virtual;
- DMXConfigEntryPtr entry;
-}
-
- /* Terminals */
-%token <token> '{' '}' ';' '/' T_VIRTUAL T_DISPLAY T_WALL T_OPTION T_PARAM
-%token <string> T_STRING
-%token <pair> T_DIMENSION T_OFFSET T_ORIGIN
-%token <comment> T_COMMENT T_LINE_COMMENT
-
- /* Non-termials */
-%type <token> Display Wall Terminal Open Close
-%type <string> NameList Name
-%type <pair> Dimension Offset Origin
-%type <pdim> PartialDim
-%type <fdim> FullDim
-%type <display> DisplayEntry
-%type <option> OptionEntry
-%type <param> ParamEntry ParamList Param
-%type <subentry> SubList Sub
-%type <wall> WallEntry
-%type <virtual> Virtual
-%type <entry> Program EntryList Entry
-
-%%
-
-Program : EntryList { dmxConfigEntry = $1; }
- ;
-
-EntryList : Entry
- | EntryList Entry { APPEND(DMXConfigEntryPtr,$1,$2); $$ = $1; }
- ;
-
-Entry : Virtual { $$ = dmxConfigEntryVirtual($1); }
- | T_LINE_COMMENT { $$ = dmxConfigEntryComment($1); }
- ;
-
-Virtual : T_VIRTUAL Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, NULL, NULL, $2, $3, $4); }
- | T_VIRTUAL Dimension Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, NULL, $2, $3, $4, $5); }
- | T_VIRTUAL Name Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, $2, NULL, $3, $4, $5); }
- | T_VIRTUAL Name Dimension Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, $2, $3, $4, $5, $6 ); }
- ;
-
-SubList : Sub
- | SubList Sub { APPEND(DMXConfigSubPtr,$1,$2); $$ = $1; }
- ;
-
-Sub : T_LINE_COMMENT { $$ = dmxConfigSubComment($1); }
- | DisplayEntry { $$ = dmxConfigSubDisplay($1); }
- | WallEntry { $$ = dmxConfigSubWall($1); }
- | OptionEntry { $$ = dmxConfigSubOption($1); }
- | ParamEntry { $$ = dmxConfigSubParam($1); }
- ;
-
-OptionEntry : T_OPTION NameList Terminal
- { $$ = dmxConfigCreateOption($1, $2, $3); }
- ;
-
-ParamEntry : T_PARAM NameList Terminal
- { $$ = dmxConfigCreateParam($1, NULL, $2, NULL, $3); }
- | T_PARAM Open ParamList Close
- { $$ = dmxConfigCreateParam($1, $2, NULL, $4, NULL);
- $$->next = $3;
- }
- ;
-
-ParamList : Param
- | ParamList Param { APPEND(DMXConfigParamPtr,$1,$2); $$ = $1; }
- ;
-
-Param : NameList Terminal
- { $$ = dmxConfigCreateParam(NULL, NULL, $1, NULL, $2); }
- ;
-
-PartialDim : Dimension Offset
- { $$ = dmxConfigCreatePartDim($1, $2); }
- | Dimension
- { $$ = dmxConfigCreatePartDim($1, NULL); }
- | Offset
- { $$ = dmxConfigCreatePartDim(NULL, $1); }
- ;
-
-FullDim : PartialDim '/' PartialDim
- { $$ = dmxConfigCreateFullDim($1, $3); }
- | '/' PartialDim
- { $$ = dmxConfigCreateFullDim(NULL, $2); }
- | PartialDim
- { $$ = dmxConfigCreateFullDim($1, NULL); }
- ;
-
-DisplayEntry : Display Name FullDim Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, $3, $4, $5); }
- | Display FullDim Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, $2, $3, $4); }
- | Display Name Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, NULL, $3, $4); }
-
- | Display Name FullDim Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, $3, NULL, $4); }
- | Display FullDim Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, $2, NULL, $3); }
- | Display Name Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, NULL, NULL, $3); }
- | Display Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, NULL, NULL, $2); }
- ;
-
-WallEntry : Wall Dimension Dimension NameList Terminal
- { $$ = dmxConfigCreateWall($1, $2, $3, $4, $5); }
- | Wall Dimension NameList Terminal
- { $$ = dmxConfigCreateWall($1, $2, NULL, $3, $4); }
- | Wall NameList Terminal
- { $$ = dmxConfigCreateWall($1, NULL, NULL, $2, $3); }
- ;
-
-Display : T_DISPLAY
- | T_DISPLAY T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Name : T_STRING
- | T_STRING T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Dimension : T_DIMENSION
- | T_DIMENSION T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Offset : T_OFFSET
- | T_OFFSET T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Origin : T_ORIGIN
- | T_ORIGIN T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Terminal : ';'
- | ';' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Open : '{'
- | '{' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Close : '}'
- | '}' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Wall : T_WALL
- | T_WALL T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-NameList : Name
- | NameList Name { APPEND(DMXConfigStringPtr, $1, $2); $$ = $1; }
- ;
+/* $XFree86$ */
+/*
+ * Copyright 2002-2003 Red Hat Inc., Durham, North Carolina.
+ *
+ * All Rights Reserved.
+ *
+ * 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 on 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 (including the
+ * next paragraph) 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
+ * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ * 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.
+ */
+
+/*
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@redhat.com>
+ *
+ */
+
+%{
+#ifdef HAVE_DMX_CONFIG_H
+#include <dmx-config.h>
+#endif
+
+#include "dmxparse.h"
+#include <string.h>
+#include <stdlib.h>
+#define YYDEBUG 1
+#define YYERROR_VERBOSE
+#define YY_USE_PROTOS
+
+DMXConfigEntryPtr dmxConfigEntry = NULL;
+#define APPEND(type, h, t) \
+{ \
+ type pt; \
+ for (pt = h; pt->next; pt = pt->next); \
+ pt->next = t; \
+}
+%}
+
+%union {
+ DMXConfigTokenPtr token;
+ DMXConfigStringPtr string;
+ DMXConfigNumberPtr number;
+ DMXConfigPairPtr pair;
+ DMXConfigFullDimPtr fdim;
+ DMXConfigPartDimPtr pdim;
+ DMXConfigDisplayPtr display;
+ DMXConfigWallPtr wall;
+ DMXConfigOptionPtr option;
+ DMXConfigParamPtr param;
+ DMXConfigCommentPtr comment;
+ DMXConfigSubPtr subentry;
+ DMXConfigVirtualPtr virtual;
+ DMXConfigEntryPtr entry;
+}
+
+ /* Terminals */
+%token <token> '{' '}' ';' '/' T_VIRTUAL T_DISPLAY T_WALL T_OPTION T_PARAM
+%token <string> T_STRING
+%token <pair> T_DIMENSION T_OFFSET T_ORIGIN
+%token <comment> T_COMMENT T_LINE_COMMENT
+
+ /* Non-termials */
+%type <token> Display Wall Terminal Open Close
+%type <string> NameList Name
+%type <pair> Dimension Offset Origin
+%type <pdim> PartialDim
+%type <fdim> FullDim
+%type <display> DisplayEntry
+%type <option> OptionEntry
+%type <param> ParamEntry ParamList Param
+%type <subentry> SubList Sub
+%type <wall> WallEntry
+%type <virtual> Virtual
+%type <entry> Program EntryList Entry
+
+%%
+
+Program : EntryList { dmxConfigEntry = $1; }
+ ;
+
+EntryList : Entry
+ | EntryList Entry { APPEND(DMXConfigEntryPtr,$1,$2); $$ = $1; }
+ ;
+
+Entry : Virtual { $$ = dmxConfigEntryVirtual($1); }
+ | T_LINE_COMMENT { $$ = dmxConfigEntryComment($1); }
+ ;
+
+Virtual : T_VIRTUAL Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, NULL, NULL, $2, $3, $4); }
+ | T_VIRTUAL Dimension Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, NULL, $2, $3, $4, $5); }
+ | T_VIRTUAL Name Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, $2, NULL, $3, $4, $5); }
+ | T_VIRTUAL Name Dimension Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, $2, $3, $4, $5, $6 ); }
+ ;
+
+SubList : Sub
+ | SubList Sub { APPEND(DMXConfigSubPtr,$1,$2); $$ = $1; }
+ ;
+
+Sub : T_LINE_COMMENT { $$ = dmxConfigSubComment($1); }
+ | DisplayEntry { $$ = dmxConfigSubDisplay($1); }
+ | WallEntry { $$ = dmxConfigSubWall($1); }
+ | OptionEntry { $$ = dmxConfigSubOption($1); }
+ | ParamEntry { $$ = dmxConfigSubParam($1); }
+ ;
+
+OptionEntry : T_OPTION NameList Terminal
+ { $$ = dmxConfigCreateOption($1, $2, $3); }
+ ;
+
+ParamEntry : T_PARAM NameList Terminal
+ { $$ = dmxConfigCreateParam($1, NULL, $2, NULL, $3); }
+ | T_PARAM Open ParamList Close
+ { $$ = dmxConfigCreateParam($1, $2, NULL, $4, NULL);
+ $$->next = $3;
+ }
+ ;
+
+ParamList : Param
+ | ParamList Param { APPEND(DMXConfigParamPtr,$1,$2); $$ = $1; }
+ ;
+
+Param : NameList Terminal
+ { $$ = dmxConfigCreateParam(NULL, NULL, $1, NULL, $2); }
+ ;
+
+PartialDim : Dimension Offset
+ { $$ = dmxConfigCreatePartDim($1, $2); }
+ | Dimension
+ { $$ = dmxConfigCreatePartDim($1, NULL); }
+ | Offset
+ { $$ = dmxConfigCreatePartDim(NULL, $1); }
+ ;
+
+FullDim : PartialDim '/' PartialDim
+ { $$ = dmxConfigCreateFullDim($1, $3); }
+ | '/' PartialDim
+ { $$ = dmxConfigCreateFullDim(NULL, $2); }
+ | PartialDim
+ { $$ = dmxConfigCreateFullDim($1, NULL); }
+ ;
+
+DisplayEntry : Display Name FullDim Origin Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, $3, $4, $5); }
+ | Display FullDim Origin Terminal
+ { $$ = dmxConfigCreateDisplay($1, NULL, $2, $3, $4); }
+ | Display Name Origin Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, NULL, $3, $4); }
+
+ | Display Name FullDim Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, $3, NULL, $4); }
+ | Display FullDim Terminal
+ { $$ = dmxConfigCreateDisplay($1, NULL, $2, NULL, $3); }
+ | Display Name Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, NULL, NULL, $3); }
+ | Display Terminal
+ { $$ = dmxConfigCreateDisplay($1, NULL, NULL, NULL, $2); }
+ ;
+
+WallEntry : Wall Dimension Dimension NameList Terminal
+ { $$ = dmxConfigCreateWall($1, $2, $3, $4, $5); }
+ | Wall Dimension NameList Terminal
+ { $$ = dmxConfigCreateWall($1, $2, NULL, $3, $4); }
+ | Wall NameList Terminal
+ { $$ = dmxConfigCreateWall($1, NULL, NULL, $2, $3); }
+ ;
+
+Display : T_DISPLAY
+ | T_DISPLAY T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Name : T_STRING
+ | T_STRING T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Dimension : T_DIMENSION
+ | T_DIMENSION T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Offset : T_OFFSET
+ | T_OFFSET T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Origin : T_ORIGIN
+ | T_ORIGIN T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Terminal : ';'
+ | ';' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Open : '{'
+ | '{' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Close : '}'
+ | '}' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Wall : T_WALL
+ | T_WALL T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+NameList : Name
+ | NameList Name { APPEND(DMXConfigStringPtr, $1, $2); $$ = $1; }
+ ;
diff --git a/xorg-server/hw/dmx/config/test-a.in b/xorg-server/hw/dmx/config/test-a.in
index 827675374..9aeeab047 100644
--- a/xorg-server/hw/dmx/config/test-a.in
+++ b/xorg-server/hw/dmx/config/test-a.in
@@ -1 +1 @@
-error
+error
diff --git a/xorg-server/hw/dmx/config/test-a.out b/xorg-server/hw/dmx/config/test-a.out
index d35b29fc0..e8b7404e1 100644
--- a/xorg-server/hw/dmx/config/test-a.out
+++ b/xorg-server/hw/dmx/config/test-a.out
@@ -1,2 +1,2 @@
-parse error on line 1 at token "error"
-syntax error, unexpected string expecting "virtual" or comment (e.g., #...)
+parse error on line 1 at token "error"
+syntax error, unexpected string expecting "virtual" or comment (e.g., #...)
diff --git a/xorg-server/hw/dmx/config/test-b.in b/xorg-server/hw/dmx/config/test-b.in
index 308ec1db4..d4f30e004 100644
--- a/xorg-server/hw/dmx/config/test-b.in
+++ b/xorg-server/hw/dmx/config/test-b.in
@@ -1 +1 @@
-# comment
+# comment
diff --git a/xorg-server/hw/dmx/config/test-b.out b/xorg-server/hw/dmx/config/test-b.out
index 308ec1db4..d4f30e004 100644
--- a/xorg-server/hw/dmx/config/test-b.out
+++ b/xorg-server/hw/dmx/config/test-b.out
@@ -1 +1 @@
-# comment
+# comment
diff --git a/xorg-server/hw/dmx/config/test-c.in b/xorg-server/hw/dmx/config/test-c.in
index e07ae5ba6..a3d66513f 100644
--- a/xorg-server/hw/dmx/config/test-c.in
+++ b/xorg-server/hw/dmx/config/test-c.in
@@ -1 +1 @@
-virtual
+virtual
diff --git a/xorg-server/hw/dmx/config/test-c.out b/xorg-server/hw/dmx/config/test-c.out
index 7390397a4..87838938a 100644
--- a/xorg-server/hw/dmx/config/test-c.out
+++ b/xorg-server/hw/dmx/config/test-c.out
@@ -1,2 +1,2 @@
-parse error on line 2 at token " "
-syntax error, unexpected $end, expecting "{" or string or dimension (e.g., 2x2 or 1024x768)
+parse error on line 2 at token " "
+syntax error, unexpected $end, expecting "{" or string or dimension (e.g., 2x2 or 1024x768)
diff --git a/xorg-server/hw/dmx/config/test-d.in b/xorg-server/hw/dmx/config/test-d.in
index 6827503b1..af14b8c09 100644
--- a/xorg-server/hw/dmx/config/test-d.in
+++ b/xorg-server/hw/dmx/config/test-d.in
@@ -1 +1 @@
-display
+display
diff --git a/xorg-server/hw/dmx/config/test-d.out b/xorg-server/hw/dmx/config/test-d.out
index f3219b301..f6e3db0a7 100644
--- a/xorg-server/hw/dmx/config/test-d.out
+++ b/xorg-server/hw/dmx/config/test-d.out
@@ -1,2 +1,2 @@
-parse error on line 1 at token "display"
-syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
+parse error on line 1 at token "display"
+syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
diff --git a/xorg-server/hw/dmx/config/test-e.in b/xorg-server/hw/dmx/config/test-e.in
index 21dbde95c..4ebcf2406 100644
--- a/xorg-server/hw/dmx/config/test-e.in
+++ b/xorg-server/hw/dmx/config/test-e.in
@@ -1 +1 @@
-display;
+display;
diff --git a/xorg-server/hw/dmx/config/test-e.out b/xorg-server/hw/dmx/config/test-e.out
index f3219b301..f6e3db0a7 100644
--- a/xorg-server/hw/dmx/config/test-e.out
+++ b/xorg-server/hw/dmx/config/test-e.out
@@ -1,2 +1,2 @@
-parse error on line 1 at token "display"
-syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
+parse error on line 1 at token "display"
+syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
diff --git a/xorg-server/hw/dmx/config/test-f.in b/xorg-server/hw/dmx/config/test-f.in
index 17f6c6327..1fe26c507 100644
--- a/xorg-server/hw/dmx/config/test-f.in
+++ b/xorg-server/hw/dmx/config/test-f.in
@@ -1,2 +1,2 @@
-virtual {
-}
+virtual {
+}
diff --git a/xorg-server/hw/dmx/config/test-g.in b/xorg-server/hw/dmx/config/test-g.in
index 453d8121c..c8741c58e 100644
--- a/xorg-server/hw/dmx/config/test-g.in
+++ b/xorg-server/hw/dmx/config/test-g.in
@@ -1,4 +1,4 @@
-virtual a {
- display d0:0 1280x1024;
- display d1:0 1280x1024;
-}
+virtual a {
+ display d0:0 1280x1024;
+ display d1:0 1280x1024;
+}
diff --git a/xorg-server/hw/dmx/config/test-g.out b/xorg-server/hw/dmx/config/test-g.out
index 453d8121c..c8741c58e 100644
--- a/xorg-server/hw/dmx/config/test-g.out
+++ b/xorg-server/hw/dmx/config/test-g.out
@@ -1,4 +1,4 @@
-virtual a {
- display d0:0 1280x1024;
- display d1:0 1280x1024;
-}
+virtual a {
+ display d0:0 1280x1024;
+ display d1:0 1280x1024;
+}
diff --git a/xorg-server/hw/dmx/config/test-h.in b/xorg-server/hw/dmx/config/test-h.in
index 1193d309e..93cef324f 100644
--- a/xorg-server/hw/dmx/config/test-h.in
+++ b/xorg-server/hw/dmx/config/test-h.in
@@ -1,7 +1,7 @@
-# comment a
-# comment b
-## comment c
-# <-- tab
-# Next comment is empty
-#
-# Non empty
+# comment a
+# comment b
+## comment c
+# <-- tab
+# Next comment is empty
+#
+# Non empty
diff --git a/xorg-server/hw/dmx/config/test-h.out b/xorg-server/hw/dmx/config/test-h.out
index 1193d309e..93cef324f 100644
--- a/xorg-server/hw/dmx/config/test-h.out
+++ b/xorg-server/hw/dmx/config/test-h.out
@@ -1,7 +1,7 @@
-# comment a
-# comment b
-## comment c
-# <-- tab
-# Next comment is empty
-#
-# Non empty
+# comment a
+# comment b
+## comment c
+# <-- tab
+# Next comment is empty
+#
+# Non empty
diff --git a/xorg-server/hw/dmx/config/test-i.in b/xorg-server/hw/dmx/config/test-i.in
index b65967e62..bf5d345c3 100644
--- a/xorg-server/hw/dmx/config/test-i.in
+++ b/xorg-server/hw/dmx/config/test-i.in
@@ -1,3 +1,3 @@
-virtual a {
- param a b; # comment
-}
+virtual a {
+ param a b; # comment
+}
diff --git a/xorg-server/hw/dmx/config/test-i.out b/xorg-server/hw/dmx/config/test-i.out
index b65967e62..bf5d345c3 100644
--- a/xorg-server/hw/dmx/config/test-i.out
+++ b/xorg-server/hw/dmx/config/test-i.out
@@ -1,3 +1,3 @@
-virtual a {
- param a b; # comment
-}
+virtual a {
+ param a b; # comment
+}
diff --git a/xorg-server/hw/dmx/config/test-j.in b/xorg-server/hw/dmx/config/test-j.in
index cc1cdd0ea..087da79a6 100644
--- a/xorg-server/hw/dmx/config/test-j.in
+++ b/xorg-server/hw/dmx/config/test-j.in
@@ -1,13 +1,13 @@
-virtual a {
- option aaa # bbb
- aa cc;
- param { # comment 1
- a b;
- c d;
- x y z; # comment 2
- }
- param e f g h; # comment 3
- param e f g hlskdjflskdfjsd #comment 4
- flksdjf sldkfjsldkfjsdlf
- "lsdkfjsldkfjlsdkjflskdjflsdkjfl" "lkjsdlfjsdlfkjsdlfj";
-}
+virtual a {
+ option aaa # bbb
+ aa cc;
+ param { # comment 1
+ a b;
+ c d;
+ x y z; # comment 2
+ }
+ param e f g h; # comment 3
+ param e f g hlskdjflskdfjsd #comment 4
+ flksdjf sldkfjsldkfjsdlf
+ "lsdkfjsldkfjlsdkjflskdjflsdkjfl" "lkjsdlfjsdlfkjsdlfj";
+}
diff --git a/xorg-server/hw/dmx/config/test-j.out b/xorg-server/hw/dmx/config/test-j.out
index 9acaa009b..d386e40b5 100644
--- a/xorg-server/hw/dmx/config/test-j.out
+++ b/xorg-server/hw/dmx/config/test-j.out
@@ -1,11 +1,11 @@
-virtual a {
- option "aaa aa cc";
- param { # comment 1
- a b;
- c d;
- x y z; # comment 2
- }
- param e f g h; # comment 3
- param e f g hlskdjflskdfjsd #comment 4
- flksdjf sldkfjsldkfjsdlf lsdkfjsldkfjlsdkjflskdjflsdkjfl lkjsdlfjsdlfkjsdlfj;
-}
+virtual a {
+ option "aaa aa cc";
+ param { # comment 1
+ a b;
+ c d;
+ x y z; # comment 2
+ }
+ param e f g h; # comment 3
+ param e f g hlskdjflskdfjsd #comment 4
+ flksdjf sldkfjsldkfjsdlf lsdkfjsldkfjlsdkjflskdjflsdkjfl lkjsdlfjsdlfkjsdlfj;
+}
diff --git a/xorg-server/hw/dmx/config/test-k.in b/xorg-server/hw/dmx/config/test-k.in
index 2218d26d9..937e8ee27 100644
--- a/xorg-server/hw/dmx/config/test-k.in
+++ b/xorg-server/hw/dmx/config/test-k.in
@@ -1,3 +1,3 @@
-virtual a {
- option +xinerama -syncbatch 0;
-}
+virtual a {
+ option +xinerama -syncbatch 0;
+}
diff --git a/xorg-server/hw/dmx/config/test-k.out b/xorg-server/hw/dmx/config/test-k.out
index ebd743923..cdfd70358 100644
--- a/xorg-server/hw/dmx/config/test-k.out
+++ b/xorg-server/hw/dmx/config/test-k.out
@@ -1,3 +1,3 @@
-virtual a {
- option "+xinerama -syncbatch 0";
-}
+virtual a {
+ option "+xinerama -syncbatch 0";
+}
diff --git a/xorg-server/hw/dmx/config/test-l.in b/xorg-server/hw/dmx/config/test-l.in
index 7bf05139b..d04c47b9a 100644
--- a/xorg-server/hw/dmx/config/test-l.in
+++ b/xorg-server/hw/dmx/config/test-l.in
@@ -1,12 +1,12 @@
-virtual a {
- display d0:0 1x2;
- display d1:0 +3+4;
- display d2:0 100x200 @1x1;
- display d3:0 +3+4 @2x2;
- display d4:0 100x200+3+4 @3x3;
- display d5:0 / 1x2+3+4;
- display d6:0 / 1x2;
- display d7:0 / +3+4;
- display d8:0 / 1x2+3+4 @4x4;
- display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
-}
+virtual a {
+ display d0:0 1x2;
+ display d1:0 +3+4;
+ display d2:0 100x200 @1x1;
+ display d3:0 +3+4 @2x2;
+ display d4:0 100x200+3+4 @3x3;
+ display d5:0 / 1x2+3+4;
+ display d6:0 / 1x2;
+ display d7:0 / +3+4;
+ display d8:0 / 1x2+3+4 @4x4;
+ display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
+}
diff --git a/xorg-server/hw/dmx/config/test-l.out b/xorg-server/hw/dmx/config/test-l.out
index 7bf05139b..d04c47b9a 100644
--- a/xorg-server/hw/dmx/config/test-l.out
+++ b/xorg-server/hw/dmx/config/test-l.out
@@ -1,12 +1,12 @@
-virtual a {
- display d0:0 1x2;
- display d1:0 +3+4;
- display d2:0 100x200 @1x1;
- display d3:0 +3+4 @2x2;
- display d4:0 100x200+3+4 @3x3;
- display d5:0 / 1x2+3+4;
- display d6:0 / 1x2;
- display d7:0 / +3+4;
- display d8:0 / 1x2+3+4 @4x4;
- display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
-}
+virtual a {
+ display d0:0 1x2;
+ display d1:0 +3+4;
+ display d2:0 100x200 @1x1;
+ display d3:0 +3+4 @2x2;
+ display d4:0 100x200+3+4 @3x3;
+ display d5:0 / 1x2+3+4;
+ display d6:0 / 1x2;
+ display d7:0 / +3+4;
+ display d8:0 / 1x2+3+4 @4x4;
+ display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
+}
diff --git a/xorg-server/hw/dmx/dmxextension.c b/xorg-server/hw/dmx/dmxextension.c
index faa28a590..d7296ae2d 100644
--- a/xorg-server/hw/dmx/dmxextension.c
+++ b/xorg-server/hw/dmx/dmxextension.c
@@ -1318,7 +1318,7 @@ dmxAttachScreen(int idx, DMXScreenAttributesPtr attr)
}
/* Initialize the BE screen resources */
- dmxBEScreenInit(idx, screenInfo.screens[idx]);
+ dmxBEScreenInit(screenInfo.screens[idx]);
/* TODO: Handle GLX visual initialization. GLXProxy needs to be
* updated to handle dynamic addition/removal of screens. */
diff --git a/xorg-server/hw/dmx/dmxscrinit.c b/xorg-server/hw/dmx/dmxscrinit.c
index 37b3f3b5a..849ef16a1 100644
--- a/xorg-server/hw/dmx/dmxscrinit.c
+++ b/xorg-server/hw/dmx/dmxscrinit.c
@@ -59,7 +59,7 @@
#include "mipointer.h"
#include "micmap.h"
-extern Bool dmxCloseScreen(int idx, ScreenPtr pScreen);
+extern Bool dmxCloseScreen(ScreenPtr pScreen);
static Bool dmxSaveScreen(ScreenPtr pScreen, int what);
static unsigned long dmxGeneration;
@@ -77,9 +77,9 @@ DevPrivateKeyRec dmxGlyphSetPrivateKeyRec;
/** Initialize the parts of screen \a idx that require access to the
* back-end server. */
void
-dmxBEScreenInit(int idx, ScreenPtr pScreen)
+dmxBEScreenInit(ScreenPtr pScreen)
{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
+ DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
XSetWindowAttributes attribs;
XGCValues gcvals;
unsigned long mask;
@@ -192,11 +192,11 @@ dmxBEScreenInit(int idx, ScreenPtr pScreen)
}
}
-/** Initialize screen number \a idx. */
+/** Initialize screen number \a pScreen->myNum. */
Bool
-dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[])
+dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[])
{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
+ DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
int i, j;
if (!dixRegisterPrivateKey(&dmxScreenPrivateKeyRec, PRIVATE_SCREEN, 0))
@@ -286,20 +286,20 @@ dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[])
}
else {
MAXSCREENSALLOC(dmxCursorGeneration);
- if (dmxCursorGeneration[idx] != serverGeneration) {
+ if (dmxCursorGeneration[pScreen->myNum] != serverGeneration) {
if (!(miPointerInitialize(pScreen,
&dmxPointerSpriteFuncs,
&dmxPointerCursorFuncs, FALSE)))
return FALSE;
- dmxCursorGeneration[idx] = serverGeneration;
+ dmxCursorGeneration[pScreen->myNum] = serverGeneration;
}
}
DMX_WRAP(CloseScreen, dmxCloseScreen, dmxScreen, pScreen);
DMX_WRAP(SaveScreen, dmxSaveScreen, dmxScreen, pScreen);
- dmxBEScreenInit(idx, pScreen);
+ dmxBEScreenInit(pScreen);
if (!dmxShadowFB) {
/* Wrap GC functions */
@@ -422,12 +422,12 @@ dmxBECloseScreen(ScreenPtr pScreen)
/** Close screen number \a idx. */
Bool
-dmxCloseScreen(int idx, ScreenPtr pScreen)
+dmxCloseScreen(ScreenPtr pScreen)
{
- DMXScreenInfo *dmxScreen = &dmxScreens[idx];
+ DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
/* Reset the proc vectors */
- if (idx == 0) {
+ if (pScreen->myNum == 0) {
dmxResetRender();
dmxResetFonts();
}
@@ -498,7 +498,7 @@ dmxCloseScreen(int idx, ScreenPtr pScreen)
}
DMX_UNWRAP(CloseScreen, dmxScreen, pScreen);
- return pScreen->CloseScreen(idx, pScreen);
+ return pScreen->CloseScreen(pScreen);
}
static Bool
diff --git a/xorg-server/hw/dmx/dmxscrinit.h b/xorg-server/hw/dmx/dmxscrinit.h
index 5c0bfacce..9fe9c9844 100644
--- a/xorg-server/hw/dmx/dmxscrinit.h
+++ b/xorg-server/hw/dmx/dmxscrinit.h
@@ -40,9 +40,9 @@
#include "scrnintstr.h"
-extern Bool dmxScreenInit(int idx, ScreenPtr pScreen, int argc, char *argv[]);
+extern Bool dmxScreenInit(ScreenPtr pScreen, int argc, char *argv[]);
-extern void dmxBEScreenInit(int idx, ScreenPtr pScreen);
+extern void dmxBEScreenInit(ScreenPtr pScreen);
extern void dmxBECloseScreen(ScreenPtr pScreen);
#endif /* DMXSCRINIT_H */
diff --git a/xorg-server/hw/dmx/doc/.gitignore b/xorg-server/hw/dmx/doc/.gitignore
new file mode 100644
index 000000000..9629c1538
--- /dev/null
+++ b/xorg-server/hw/dmx/doc/.gitignore
@@ -0,0 +1,6 @@
+*.html
+*.pdf
+*.ps
+*.txt
+!DMXSpec.txt
+!DMXSpec-v1.txt
diff --git a/xorg-server/hw/dmx/doc/DMXSpec-v1.txt b/xorg-server/hw/dmx/doc/DMXSpec-v1.txt
index cea97b9fe..19a50f2f5 100644
--- a/xorg-server/hw/dmx/doc/DMXSpec-v1.txt
+++ b/xorg-server/hw/dmx/doc/DMXSpec-v1.txt
@@ -1,458 +1,458 @@
-
-
- Client-to-Server DMX Extension to the X Protocol
-
- $Date$, $Revision$
-
- Rickard E. (Rik) Faith (faith@redhat.com)
- Kevin E. Martin (kem@redhat.com)
-
- Copyright 2002,2003 Red Hat Inc., Raleigh, North Carolina.
-
- 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 on 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 (including the
- next paragraph) 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
- NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- 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.
-
-
-
-1. Overview
-
- The client-to-server DMX extension to the X protocol (DMX) provides
- normal client applications with the ability to determine information
- about the characteristics of the Xdmx server and the back-end X
- servers that DMX is using.
-
- The name for this extension is "DMX".
-
-
-
-2. Syntactic conventions
-
- This document uses the same syntactic conventions requests and data
- types as [X11R6.4].
-
-
-
-3. Data types
-
- No new data types are defined by this extension. All data types
- referenced in this document are defined in [X11R6.4].
-
-
-
-4. Requests
-
- DMXQueryVersion
- ==>
- majorVersion: CARD32
- minorVersion: CARD32
- patchVersion: CARD32
-
- The protocol this extension actually supports is indicated by
- majorVersion and minorVersion (patchVersion indicates the
- patchlevel and is for informational purposes only).
-
- Any incompatible changes to the protocol should be indicated by
- incrementing majorVersion.
-
- Small, upward-compatible changes should be indicated by incrementing
- minorVersion.
-
- Servers that support the protocol defined in this document will
- return a majorVersion of 1 and a minorVersion of 1.
-
-
-
- DMXGetScreenCount
- ==>
- screenCount: CARD32
-
- This request returns the number of back-end screens that the Xdmx
- server controls. A back-end screen may be managed as a regular X
- screen in the Xdmx server or may be joined with other back-end
- screens using Xinerama. (The information returned by this request
- does not change while Xdmx is running and may be cached on the
- client side.)
-
-
-
- DMXGetScreenInformation
- physicalScreen: CARD32
- ==>
- displayName: STRING8
- width: CARD16
- height: CARD16
- xoffset: INT16
- yoffset: INT16
- logicalScreen: CARD32
- xorigin: INT16
- yorigin: INT16
-
- Errors: Value
-
- This request returns information about individual back-end screens.
- The physicalScreen value is between 0 and screenCount-1, inclusive
- (values outside this range will result in a Value error). The
- displayname is the name used to open the display, either from the
- Xdmx command-line or from the configuration file. The width,
- height, xoffset, and yoffset values comprise a geometry
- specification (see X(7x)) for the location of the DMX window on the
- back-end screen. This request will always return non-negative
- (i.e., normalized) values for xoffset and yoffset. The
- logicalScreen value is the value of the screen that that Xdmx server
- exports to clients. When Xinerama is in use, this value is
- typically 0 for all values of physicalScreen. If Xinerama is in
- use, the xorigin and yorigin values specify where the physical
- screen is positioned in the global Xinerama coordinate system.
- Otherwise, these values are set to 0. (The information returned by
- this request does not change while Xdmx is running and may be cached
- on the client side.)
-
-
-
- DMXGetWindowInformation
- window: CARD32
- ==>
- screenCount: CARD32
- screens: LISTofCARD32
- windows: LISTofCARD32
- pos: LISTofRECTANGLE
- vis: LISTofRECTANGLE
-
- Errors: Window, Alloc
-
- This request computed the return values incorrectly for version 1.0
- of this protocol. Version 1.1 of this protocol conforms to this
- description.
-
- Given a window ID on the Xdmx server, this request returns data
- about how the window is represented on the back-end X servers. For
- each back-end X server that displays a portion of the window, the
- following information is returned:
- 1) the number of the physical screen containing that portion
- (which can be used with the DMXGetScreenInformation request
- to obtain more information about the screen),
- 2) the window ID on the back-end X server of the window
- containing that portion,
- 3) the position and dimensions of the window on the back-end, in
- screen coordinates, and
- 4) the visible area of the window on the back-end, in
- window-relative coordinates (all zeros for windows that are
- not visible)
- Note that DMX allows multiple back-end windows to overlap in their
- view of the DMX logical window. Further, a logical window does not
- have to be completely covered by back-end windows -- there may be
- gaps.
-
- As an example, consider a 500x500 window that spans the top two
- 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
- composed of 4 1024x768 back-end displays arranged in a cube:
- A B
- C D
-
- In this case, the DMXGetWindowInformation call would return the
- following information for the 500x500 window:
-
- display A: 500x500 window at 1024-250,0 (relative to back end)
- with 250x500 visible at 0,0 (relative to window origin)
-
- display B: 500x500 window at -250,0 (relative to back end)
- with 250x500 visible at 250,0 (relative to window origin)
-
- display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
-
- display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
-
- Note that if the specified window has not yet been mapped when
- DMXGetWindowInformation is called, then a subsequent XMapWindow call
- might be buffered in xlib while requests directly to the back-end X
- servers are processed. This race condition can be solved by calling
- DMXSync before talking directly to the back-end X servers.
-
-
- DMXGetInputCount
- ==>
- inputCount: CARD32
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns the number of input devices connected to the
- Xdmx server. This number is the same as that returned by
- XListInputDevices, but is available even when the XInput extension
- is not supported.
-
-
-
- DMXGetInputInformation
- deviceId: CARD32
- ==>
- inputType: CARD32
- physicalScreen: CARD32
- physicalId: CARD32
- isCore: BOOL
- sendsCore: BOOL
- name: STRING8
-
- Errors: Value
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns information about the specified input device
- that cannot be obtained from the XListInputDeivices call. The
- deviceId is the same as that used by the XListInputDevices call, and
- must be in the range 0 to inputCount-1, inclusive (values outside
- this range will result in a Value error).
-
- The value of inputType will always be value, and will be one of the
- following values:
- 0 for local (and dummy) devices,
- 1 for console devices, and
- 2 for back-end devices.
-
- For local devices, all other fields returned, except isCore and
- sendsCore, are invalid.
-
- For console devices, the physicalScreen and physicalID will be
- invalid, and the name will return the name of the X server on which
- the console window is displayed.
-
- For back-end devices, the physicalScreen will identify the back-end
- display and can be used as an argument to DMXGetScreenInformation to
- obtain more information; the physicalId will be the XInput device id
- on the back-end X server; and the name will be invalid (since it
- does not provide any additional information that cannot be obtained
- with DMXGetScreenInformation).
-
- If isCore is True, then this device is active as a true core input
- device and will send core events. If sendsCore is True, then this
- device queried an XInput extension device, but sends core events
- instead of extension events. Note that this behavior is different
- from that of XFree86, where XInput extension devices may send both
- extension events and core events.
-
-
-
- DMXForceWindowCreation
- window: CARD32
- ==>
-
- Errors: Window
-
- This request was first supported in version 1.2 of this protocol.
-
- When using the lazy window creation optimization, windows are not
- created on the back-end X servers until they are required. This
- request forces the immediate creation of the window requested.
-
-
-
- DMXReconfigureScreen
- screen: CARD32
- x: INT16
- y: INT16
- ==>
- status: CARD32
-
- Errors: Value
-
- This request was first supported in version 1.3 of this protocol.
-
- This request reconfigures the screen position to coordinates (x,y)
- when using the Xinerama extension. Otherwise, it is a NOP. Illegal
- values for screen will result in a BadValue error. Other non-fatal
- errors will be returned in status.
-
-
-
- DMXSync
- ==>
-
- This request was first supported in version 1.5 of this protocol.
-
- This request flushes all pending protocol requests between the Xdmx
- server and each back-end X server. It is used by a client that
- talks directly to back-end X servers
-
- To ensure proper synchronization semantics, this request has a
- reply, but the reply does not carry any information.
-
-
-
-5. Events
-
- No new events are defined by this extension.
-
-
-
-6. Errors
-
- No new events are defined by this extension.
-
-
-
-7. Encoding
-
- DMXQueryVersion
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXQueryVersion)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 majorVersion
- 4 CARD32 minorVersion
- 4 CARD32 patchVersion
- 12 unused
-
- DMXGetScreenCount
- 1 CARD8 opcode (X assigned)
- 1 1 DMX opcode (X_DMXGetScreenCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 screenCount
- 20 unused
-
- DMXGetScreenInformation
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXGetScreenInformation)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n/4+p reply length
- 4 n displayNameLength
- 2 CARD16 width
- 2 CARD16 height
- 2 INT16 xoffset
- 2 INT16 yoffset
- 4 CARD32 logicalScreen
- 2 INT16 xorigin
- 2 INT16 yorigin
- 4 unused
- n displayName
- p pad(n)
-
- DMXGetWindowInformation
- 1 CARD8 opcode (X assigned)
- 1 3 DMX opcode (X_DMXGetWindowInformation)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n*6 reply length
- 4 n screenCount
- 20 unused
- n*4 LISTofCARD32 screens
- n*4 LISTofCARD32 windows
- n*8 LISTofRECTANGLE pos
- n*8 LISTofRECTANGLE vis
-
- DMXGetInputCount
- 1 CARD8 opcode (X assigned)
- 1 DMX opcode (X_DMXGetInputCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 inputCount
- 20 unused
-
- DMXGetInputInformation
- 1 CARD8 opcode (X assigned)
- 1 4 DMX opcode (X_DMXGetInputInformation)
- 2 2 request length
- 4 CARD32 deviceId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n/4+p reply length
- 4 CARD32 inputType
- 4 CARD32 physicalScreen
- 4 CARD32 physicalId
- 4 n nameLength
- 1 BOOL isCore
- 1 BOOL sendsCore
- 6 unused
- n name
- p pad(n)
-
- DMXForceWindowCreation
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXForceWindowCreation)
- 2 2 request length
- 4 CARD32 window
- ==>
-
- DMXReconfigureScreen
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXReconfigureScreen)
- 2 2 request length
- 4 CARD32 screen
- 2 INT16 x
- 2 INT16 y
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXSync
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXSync)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 24 unused
-
-
-8. Changes to existing requests/replies/events
-
- No changes to existing requests, replies, or events are necessitated
- by this extension.
-
-
-
-9. Acknowledgments
-
-
-
-10. References
-
- [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
- Standard, X Version 11, Release 6.4. Available from
- xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
+
+
+ Client-to-Server DMX Extension to the X Protocol
+
+ $Date$, $Revision$
+
+ Rickard E. (Rik) Faith (faith@redhat.com)
+ Kevin E. Martin (kem@redhat.com)
+
+ Copyright 2002,2003 Red Hat Inc., Raleigh, North Carolina.
+
+ 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 on 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 (including the
+ next paragraph) 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
+ NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ 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.
+
+
+
+1. Overview
+
+ The client-to-server DMX extension to the X protocol (DMX) provides
+ normal client applications with the ability to determine information
+ about the characteristics of the Xdmx server and the back-end X
+ servers that DMX is using.
+
+ The name for this extension is "DMX".
+
+
+
+2. Syntactic conventions
+
+ This document uses the same syntactic conventions requests and data
+ types as [X11R6.4].
+
+
+
+3. Data types
+
+ No new data types are defined by this extension. All data types
+ referenced in this document are defined in [X11R6.4].
+
+
+
+4. Requests
+
+ DMXQueryVersion
+ ==>
+ majorVersion: CARD32
+ minorVersion: CARD32
+ patchVersion: CARD32
+
+ The protocol this extension actually supports is indicated by
+ majorVersion and minorVersion (patchVersion indicates the
+ patchlevel and is for informational purposes only).
+
+ Any incompatible changes to the protocol should be indicated by
+ incrementing majorVersion.
+
+ Small, upward-compatible changes should be indicated by incrementing
+ minorVersion.
+
+ Servers that support the protocol defined in this document will
+ return a majorVersion of 1 and a minorVersion of 1.
+
+
+
+ DMXGetScreenCount
+ ==>
+ screenCount: CARD32
+
+ This request returns the number of back-end screens that the Xdmx
+ server controls. A back-end screen may be managed as a regular X
+ screen in the Xdmx server or may be joined with other back-end
+ screens using Xinerama. (The information returned by this request
+ does not change while Xdmx is running and may be cached on the
+ client side.)
+
+
+
+ DMXGetScreenInformation
+ physicalScreen: CARD32
+ ==>
+ displayName: STRING8
+ width: CARD16
+ height: CARD16
+ xoffset: INT16
+ yoffset: INT16
+ logicalScreen: CARD32
+ xorigin: INT16
+ yorigin: INT16
+
+ Errors: Value
+
+ This request returns information about individual back-end screens.
+ The physicalScreen value is between 0 and screenCount-1, inclusive
+ (values outside this range will result in a Value error). The
+ displayname is the name used to open the display, either from the
+ Xdmx command-line or from the configuration file. The width,
+ height, xoffset, and yoffset values comprise a geometry
+ specification (see X(7x)) for the location of the DMX window on the
+ back-end screen. This request will always return non-negative
+ (i.e., normalized) values for xoffset and yoffset. The
+ logicalScreen value is the value of the screen that that Xdmx server
+ exports to clients. When Xinerama is in use, this value is
+ typically 0 for all values of physicalScreen. If Xinerama is in
+ use, the xorigin and yorigin values specify where the physical
+ screen is positioned in the global Xinerama coordinate system.
+ Otherwise, these values are set to 0. (The information returned by
+ this request does not change while Xdmx is running and may be cached
+ on the client side.)
+
+
+
+ DMXGetWindowInformation
+ window: CARD32
+ ==>
+ screenCount: CARD32
+ screens: LISTofCARD32
+ windows: LISTofCARD32
+ pos: LISTofRECTANGLE
+ vis: LISTofRECTANGLE
+
+ Errors: Window, Alloc
+
+ This request computed the return values incorrectly for version 1.0
+ of this protocol. Version 1.1 of this protocol conforms to this
+ description.
+
+ Given a window ID on the Xdmx server, this request returns data
+ about how the window is represented on the back-end X servers. For
+ each back-end X server that displays a portion of the window, the
+ following information is returned:
+ 1) the number of the physical screen containing that portion
+ (which can be used with the DMXGetScreenInformation request
+ to obtain more information about the screen),
+ 2) the window ID on the back-end X server of the window
+ containing that portion,
+ 3) the position and dimensions of the window on the back-end, in
+ screen coordinates, and
+ 4) the visible area of the window on the back-end, in
+ window-relative coordinates (all zeros for windows that are
+ not visible)
+ Note that DMX allows multiple back-end windows to overlap in their
+ view of the DMX logical window. Further, a logical window does not
+ have to be completely covered by back-end windows -- there may be
+ gaps.
+
+ As an example, consider a 500x500 window that spans the top two
+ 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
+ composed of 4 1024x768 back-end displays arranged in a cube:
+ A B
+ C D
+
+ In this case, the DMXGetWindowInformation call would return the
+ following information for the 500x500 window:
+
+ display A: 500x500 window at 1024-250,0 (relative to back end)
+ with 250x500 visible at 0,0 (relative to window origin)
+
+ display B: 500x500 window at -250,0 (relative to back end)
+ with 250x500 visible at 250,0 (relative to window origin)
+
+ display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
+
+ display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
+
+ Note that if the specified window has not yet been mapped when
+ DMXGetWindowInformation is called, then a subsequent XMapWindow call
+ might be buffered in xlib while requests directly to the back-end X
+ servers are processed. This race condition can be solved by calling
+ DMXSync before talking directly to the back-end X servers.
+
+
+ DMXGetInputCount
+ ==>
+ inputCount: CARD32
+
+ This request was first supported in version 1.1 of this protocol.
+
+ This request returns the number of input devices connected to the
+ Xdmx server. This number is the same as that returned by
+ XListInputDevices, but is available even when the XInput extension
+ is not supported.
+
+
+
+ DMXGetInputInformation
+ deviceId: CARD32
+ ==>
+ inputType: CARD32
+ physicalScreen: CARD32
+ physicalId: CARD32
+ isCore: BOOL
+ sendsCore: BOOL
+ name: STRING8
+
+ Errors: Value
+
+ This request was first supported in version 1.1 of this protocol.
+
+ This request returns information about the specified input device
+ that cannot be obtained from the XListInputDeivices call. The
+ deviceId is the same as that used by the XListInputDevices call, and
+ must be in the range 0 to inputCount-1, inclusive (values outside
+ this range will result in a Value error).
+
+ The value of inputType will always be value, and will be one of the
+ following values:
+ 0 for local (and dummy) devices,
+ 1 for console devices, and
+ 2 for back-end devices.
+
+ For local devices, all other fields returned, except isCore and
+ sendsCore, are invalid.
+
+ For console devices, the physicalScreen and physicalID will be
+ invalid, and the name will return the name of the X server on which
+ the console window is displayed.
+
+ For back-end devices, the physicalScreen will identify the back-end
+ display and can be used as an argument to DMXGetScreenInformation to
+ obtain more information; the physicalId will be the XInput device id
+ on the back-end X server; and the name will be invalid (since it
+ does not provide any additional information that cannot be obtained
+ with DMXGetScreenInformation).
+
+ If isCore is True, then this device is active as a true core input
+ device and will send core events. If sendsCore is True, then this
+ device queried an XInput extension device, but sends core events
+ instead of extension events. Note that this behavior is different
+ from that of XFree86, where XInput extension devices may send both
+ extension events and core events.
+
+
+
+ DMXForceWindowCreation
+ window: CARD32
+ ==>
+
+ Errors: Window
+
+ This request was first supported in version 1.2 of this protocol.
+
+ When using the lazy window creation optimization, windows are not
+ created on the back-end X servers until they are required. This
+ request forces the immediate creation of the window requested.
+
+
+
+ DMXReconfigureScreen
+ screen: CARD32
+ x: INT16
+ y: INT16
+ ==>
+ status: CARD32
+
+ Errors: Value
+
+ This request was first supported in version 1.3 of this protocol.
+
+ This request reconfigures the screen position to coordinates (x,y)
+ when using the Xinerama extension. Otherwise, it is a NOP. Illegal
+ values for screen will result in a BadValue error. Other non-fatal
+ errors will be returned in status.
+
+
+
+ DMXSync
+ ==>
+
+ This request was first supported in version 1.5 of this protocol.
+
+ This request flushes all pending protocol requests between the Xdmx
+ server and each back-end X server. It is used by a client that
+ talks directly to back-end X servers
+
+ To ensure proper synchronization semantics, this request has a
+ reply, but the reply does not carry any information.
+
+
+
+5. Events
+
+ No new events are defined by this extension.
+
+
+
+6. Errors
+
+ No new events are defined by this extension.
+
+
+
+7. Encoding
+
+ DMXQueryVersion
+ 1 CARD8 opcode (X assigned)
+ 1 0 DMX opcode (X_DMXQueryVersion)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 majorVersion
+ 4 CARD32 minorVersion
+ 4 CARD32 patchVersion
+ 12 unused
+
+ DMXGetScreenCount
+ 1 CARD8 opcode (X assigned)
+ 1 1 DMX opcode (X_DMXGetScreenCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 screenCount
+ 20 unused
+
+ DMXGetScreenInformation
+ 1 CARD8 opcode (X assigned)
+ 1 2 DMX opcode (X_DMXGetScreenInformation)
+ 2 2 request length
+ 4 CARD32 physicalScreen
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n/4+p reply length
+ 4 n displayNameLength
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 INT16 xoffset
+ 2 INT16 yoffset
+ 4 CARD32 logicalScreen
+ 2 INT16 xorigin
+ 2 INT16 yorigin
+ 4 unused
+ n displayName
+ p pad(n)
+
+ DMXGetWindowInformation
+ 1 CARD8 opcode (X assigned)
+ 1 3 DMX opcode (X_DMXGetWindowInformation)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n*6 reply length
+ 4 n screenCount
+ 20 unused
+ n*4 LISTofCARD32 screens
+ n*4 LISTofCARD32 windows
+ n*8 LISTofRECTANGLE pos
+ n*8 LISTofRECTANGLE vis
+
+ DMXGetInputCount
+ 1 CARD8 opcode (X assigned)
+ 1 DMX opcode (X_DMXGetInputCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 inputCount
+ 20 unused
+
+ DMXGetInputInformation
+ 1 CARD8 opcode (X assigned)
+ 1 4 DMX opcode (X_DMXGetInputInformation)
+ 2 2 request length
+ 4 CARD32 deviceId
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n/4+p reply length
+ 4 CARD32 inputType
+ 4 CARD32 physicalScreen
+ 4 CARD32 physicalId
+ 4 n nameLength
+ 1 BOOL isCore
+ 1 BOOL sendsCore
+ 6 unused
+ n name
+ p pad(n)
+
+ DMXForceWindowCreation
+ 1 CARD8 opcode (X assigned)
+ 1 2 DMX opcode (X_DMXForceWindowCreation)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+
+ DMXReconfigureScreen
+ 1 CARD8 opcode (X assigned)
+ 1 2 DMX opcode (X_DMXReconfigureScreen)
+ 2 2 request length
+ 4 CARD32 screen
+ 2 INT16 x
+ 2 INT16 y
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXSync
+ 1 CARD8 opcode (X assigned)
+ 1 0 DMX opcode (X_DMXSync)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 24 unused
+
+
+8. Changes to existing requests/replies/events
+
+ No changes to existing requests, replies, or events are necessitated
+ by this extension.
+
+
+
+9. Acknowledgments
+
+
+
+10. References
+
+ [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
+ Standard, X Version 11, Release 6.4. Available from
+ xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
diff --git a/xorg-server/hw/dmx/doc/DMXSpec.txt b/xorg-server/hw/dmx/doc/DMXSpec.txt
index 4009f1210..078f83e26 100644
--- a/xorg-server/hw/dmx/doc/DMXSpec.txt
+++ b/xorg-server/hw/dmx/doc/DMXSpec.txt
@@ -1,875 +1,875 @@
-
-
- Client-to-Server DMX Extension to the X Protocol
-
- $Date$, $Revision$
-
- Rickard E. (Rik) Faith (faith@redhat.com)
- Kevin E. Martin (kem@redhat.com)
-
- Copyright 2002-2004 Red Hat Inc., Raleigh, North Carolina.
-
- 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 on 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 (including the
- next paragraph) 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
- NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- 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.
-
-
-
-1. Overview
-
- The client-to-server DMX extension to the X protocol (DMX) provides
- normal client applications with the ability to determine information
- about the characteristics of the Xdmx server and the back-end X
- servers that DMX is using.
-
- The name for this extension is "DMX".
-
-
-
-2. Syntactic conventions
-
- This document uses the same syntactic conventions requests and data
- types as [X11R6.4].
-
-
-
-3. Data types
-
- No new data types are defined by this extension. All data types
- referenced in this document are defined in [X11R6.4].
-
-
-
-4. Requests
-
- DMXQueryVersion
- ==>
- majorVersion: CARD32
- minorVersion: CARD32
- patchVersion: CARD32
-
- Errors: None
-
- The protocol this extension actually supports is indicated by
- majorVersion and minorVersion (patchVersion indicates the
- patchlevel and is for informational purposes only).
-
- Any incompatible changes to the protocol should be indicated by
- incrementing majorVersion.
-
- Small, upward-compatible changes should be indicated by incrementing
- minorVersion.
-
- Servers that support the protocol defined in this document will
- return a majorVersion of 2 and a minorVersion of 2.
-
- (Version 1.5 was the last version in the 1.x series; version 2.0 was
- a testing version that was poorly defined.)
-
-
-
- DMXSync
- ==>
- status: CARD32
-
- Errors: None
-
- This request was first supported in version 1.5 of this protocol.
- The status field in the reply was introduced in version 2.0 of this
- protocol. Since the status field is ignored, no changes to the
- underlying protocol were required.
-
- This request flushes all pending protocol requests between the Xdmx
- server and each back-end X server. It is used by clients that
- talk directly to back-end X servers to ensure that all pending Xdmx
- requests have reached all back-end servers and have been processed
- by those servers.
-
- The value of status is always 0.
-
-
-
- DMXForceWindowCreation
- window: CARD32
- ==>
- status: CARD32
-
- Errors: Window
-
- This request was first supported in version 1.2 of this protocol.
- This request was changed to have a reply in version 2.0 of this
- protocol. The old version of this request was deprecated and will
- return BadImplementation.
-
- When using the lazy window creation optimization, windows are not
- created on the back-end X servers until they are required. This
- request forces the immediate creation of the window requested.
-
- The value of status is always 0.
-
-
-
-
- DMXGetScreenCount
- ==>
- screenCount: CARD32
-
- Errors: None
-
- This request returns the number of screens that the Xdmx server
- controls. Since a DMX screen usually fills all of the available
- area on a back-end server, there is usually a one-to-one
- correspondence between DMX screens and backend servers. However, it
- is also possible for a DMX screen to cover only part of the
- available area on a back-end server, and for more than one DMX
- screen to occupy different parts of the visible area on the same
- back-end server.
-
- A DMX screen may be managed as a regular X screen in the Xdmx server
- or may be joined with other DMX screens using Xinerama.
-
-
-
- DMXGetScreenAttributes
- physicalScreen: CARD32
- ==>
- displayName: STRING8
- logicalScreen: CARD32
- screenWindowWidth: CARD16
- screenWindowHeight: CARD16
- screenWindowXoffset: INT16
- screenWindowYoffset: INT16
- rootWindowWidth: CARD16
- rootWindowHeight: CARD16
- rootWindowXoffset: INT16
- rootWindowYoffset: INT16
- rootWindowXorigin: INT16
- rootWindowYorigin: INT16
-
- Errors: Value
-
- This request is new in version 2.0 of this protocol. The old
- DMXGetScreenInformation request is deprecated and will now return
- BadImplementation.
-
- This request returns attributes about a single DMX screen.
-
- The physicalScreen value is between 0 and screenCount-1, inclusive
- (values outside this range will result in a Value error).
-
- The displayname is the name used to open the display, either from
- the Xdmx command-line or from the configuration file.
-
- The logicalScreen value is the value of the screen that that Xdmx
- server exports to clients. When Xinerama is in use, this value is
- typically 0 for all values of physicalScreen. If Xinerama is in
- use, the rootWindowXOrigin and rootWindowYOrigin values specify
- where the physical screen is positioned in the global Xinerama
- coordinate system. Otherwise, these values are set to 0.
-
- The screenWindow values comprise a geometry specification (see
- X(7x)) for the location of the DMX screen on the back-end screen.
- The coordinant system of the back-end display is used.
-
- The first four rootWindow values comprise a geometry specification
- (see X(7x)) for the location of the root window on the screen
- window. The coordinant system of the screen window is used. In
- most cases, the root window will have the same geometry as the DMX
- screen window, and will occupy the same area of the back-end
- display. (This would not be the case, for example, if automatic
- projector alignment is used.)
-
-
-
- DMXChangeScreensAttributes
- screenCount: CARD32
- maskCount: CARD32
- screens: LISTofCARD32
- valueMasks: LISTofCARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- errorScreen: CARD32
-
- Errors: Length, Alloc
-
- This request was first supported in version 2.0 of this protocol.
- (A singular version of this request with the ability to change some
- RootWindow attributes was supported in version 1.3 of this protocol,
- has been deprecated, and will return BadImplementation.)
-
- This request changes the geometries and positions of the DMX screen
- and DMX root windows on the back-end X servers.
-
- The valueMask and valueList specify which attributes are to be
- changed. The possible values are:
-
- Attribute Type
-
- ScreenWindowWidth CARD16
- ScreenWindowHeight CARD16
- ScreenWindowXoffset INT16
- ScreenWindowYoffset INT16
- RootWindowWidth CARD16
- RootWindowHeight CARD16
- RootWindowXoffset INT16
- RootWindowYoffset INT16
- RootWindowXorigin INT16
- RootWindowYorigin INT16
-
- The attribute values have the same meaning as do the corresponding
- values for DMXGetScreenAttributes.
-
- Non-fatal errors will be returned in status (0 otherwise):
- DmxBadXinerama: Xinerama is not active
- DmxBadValue: The resulting position is not allowed
- (e.g., one corner is outside the bounding box)
- On error, errorScreen will contain the number of the screen that
- caused the first error.
-
-
-
- DMXAddScreen
- displayName: STRING8
- physicalScreen: CARD32
- valueMask: CARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- physicalScreen: CARD32
-
- Errors: Length, Alloc, Value
-
- This request was first supported in version 2.2 of this protocol.
-
- This request re-attaches the back-end physicalScreen to the Xdmx
- server. Only back-end screens that have been previously detached
- with DMXRemoveScreen may be added. The name of the back-end display
- is given in displayName, and this will replace the name of the
- back-end screen that was detached. Both the displayName and
- physicalScreen must be correct for this request to work.
-
- The valueMask and valueList specify the attributes to be used. The
- possible values are:
-
- Attribute Type
-
- ScreenWindowWidth CARD16
- ScreenWindowHeight CARD16
- ScreenWindowXoffset INT16
- ScreenWindowYoffset INT16
- RootWindowWidth CARD16
- RootWindowHeight CARD16
- RootWindowXoffset INT16
- RootWindowYoffset INT16
- RootWindowXorigin INT16
- RootWindowYorigin INT16
-
- The attribute values have the same meaning as do the corresponding
- values for DMXGetScreenAttributes.
-
- On success, status will be 0 and physicalScreen will contain the new
- screen number. On failure, status will be non-zero. The status
- will be 1 if any of the following occured:
- * the -addremovescreens command-line option was not specified on
- the Xdmx command line
- * the value of physicalScreen is out of range
- * physicalScreen has not been detached (with DMXRemoveScreen)
- * displayName cannot be opened
- * the visuals of displayname do not match the visuals that Xdmx
- is using
- * the screen data for displayName does not match the data for the
- previously removed display
- The status will be DmxBadValue if the attribute values are out of
- range.
-
-
-
- DMXRemoveScreen
- physicalScreen: CARD32
- ==>
- status: CARD32
-
- Errors: None
-
- This request was first supported in version 2.2 of this protocol.
-
- This request detaches the physicalScreen screen.
-
- On success, status will be 0. On failure, the status will 1 if any
- of the following occur:
- * the -addremovescreens command-line option was not specified on
- the Xdmx command line
- * the value of physicalScreen is out of range
- * the back-end screen has already been detached.
-
-
-
- DMXGetWindowAttributes
- window: CARD32
- ==>
- screenCount: CARD32
- screens: LISTofCARD32
- windows: LISTofCARD32
- pos: LISTofRECTANGLE
- vis: LISTofRECTANGLE
-
- Errors: Window, Alloc
-
- This request computes the return values incorrectly for version 1.0
- of this protocol. Version 1.1 of this protocol conforms to this
- description. In version 2.0, the name of this request was changed
- from DMXGetWindowInformation. However, since the request itself did
- not change, no changes to the underlying protocol were made.
-
- Given a window ID on the Xdmx server, this request returns data
- about how the window is represented on the back-end X servers. For
- each back-end X server that displays a portion of the window, the
- following information is returned:
- 1) the number of the physical screen containing that portion
- (which can be used with the DMXGetScreenAttributes request
- to obtain more information about the screen),
- 2) the window ID on the back-end X server of the window
- containing that portion,
- 3) the position and dimensions of the window on the back-end, in
- screen coordinates, and
- 4) the visible area of the window on the back-end, in
- window-relative coordinates (all zeros for windows that are
- not visible).
- Note that DMX allows multiple back-end windows to overlap in their
- view of the DMX logical window. Further, a logical window does not
- have to be completely covered by back-end windows -- there may be
- gaps.
-
- As an example, consider a 500x500 window that spans the top two
- 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
- composed of 4 1024x768 back-end displays arranged in a cube:
- A B
- C D
-
- In this case, the DMXGetWindowAttributes call would return the
- following information for the 500x500 window:
-
- display A: 500x500 window at 1024-250,0 (relative to back end)
- with 250x500 visible at 0,0 (relative to window origin)
-
- display B: 500x500 window at -250,0 (relative to back end)
- with 250x500 visible at 250,0 (relative to window origin)
-
- display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
-
- display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
-
- Note that if the specified window has not yet been mapped when
- DMXGetWindowAttributes is called, then a subsequent XMapWindow call
- might be buffered in xlib while requests directly to the back-end X
- servers are processed. This race condition can be solved by calling
- DMXSync before talking directly to the back-end X servers.
-
-
-
- DMXGetDesktopAttributes
- ==>
- width: INT16
- height: INT16
- shiftX: INT16
- shiftY: INT16
-
- Errors: None
-
- This request was first supported in version 2.0 of this protocol.
-
- This request returns the size of the bounding box of the whole
- screen in width and height. The shiftX and shiftY values will
- always be 0. The global bounding box is computed whether or not
- Xinerama is active, and may be larger than the Xinerama screen size
- because of information in the configuration file.
-
-
-
- DMXChangeDesktopAttributes
- valueMask: BITMASK
- valueList: LISTofVALUE
- ==>
- status: CARD32
-
- Errors: Length, Value
-
- This request was first supported in version 2.0 of this protocol.
-
- This request resizes the bounding box of the whole screen when using
- the Xinerama extension. Otherwise, it has no effect on the screen
- layout. The valueMask and valueList specify which attributes are to
- be changed. The possible values are:
-
- Attriubute Type
-
- Width INT16
- Height INT16
- ShiftX INT16
- ShiftY INT16
-
- Width and Height specify the new width and height for the bounding
- box. ShiftX and ShiftY specify where the Xinerama origin will be
- placed with respect to the origin of the new bounding box. This
- allows the left and upper edges of the bounding box to be changed
- without changing the visual position of the windows on the desktop.
- If Width or Height is not specified, the current values will be
- used. If ShiftX or ShiftY is not specified, 0 will be used.
-
- All coordinants are in the global DMX coordinant system. If
- Xinerama is not active, this request is not useful.
-
- Non-fatal errors will be returned in status (0 otherwise):
- DmxBadXinerama: Xinerama is not active
- DmxBadValue: The size of the bounding box is too large
-
-
-
- DMXGetInputCount
- ==>
- inputCount: CARD32
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns the number of input devices connected to the
- Xdmx server. This number is the same as that returned by
- XListInputDevices, but is available even when the XInput extension
- is not supported.
-
-
-
- DMXGetInputAttributes
- deviceId: CARD32
- ==>
- inputType: CARD32
- physicalScreen: CARD32
- physicalId: CARD32
- isCore: BOOL
- sendsCore: BOOL
- detached: BOOL
- name: STRING8
-
- Errors: Value
-
- This request was first supported in version 1.1 of this protocol.
- In version 2.0, the name of this request was changed from
- DMXGetInputInformation. However, since the request itself did not
- change, no changes to the underlying protocol were made. In version
- 2.2, the name of detached was changed from reservation. There was
- no change in underlying protocol.
-
- This request returns information about the specified input device
- that cannot be obtained from the XListInputDeivices call. The
- deviceId is the same as that used by the XListInputDevices call, and
- must be in the range 0 to inputCount-1, inclusive (values outside
- this range will result in a Value error).
-
- The value of inputType will always be valid, and will be one of the
- following values:
- 0 for local (and dummy) devices,
- 1 for console devices, and
- 2 for back-end devices.
-
- For local devices, all other fields returned, except isCore and
- sendsCore, are invalid.
-
- For console devices, the physicalScreen and physicalID will be
- invalid, and the name will return the name of the X server on which
- the console window is displayed.
-
- For back-end devices, the physicalScreen will identify the back-end
- display and can be used as an argument to DMXGetScreenAttributes to
- obtain more information; the physicalId will be the XInput device id
- on the back-end X server; and the name will be invalid (since it
- does not provide any additional information that cannot be obtained
- with DMXGetScreenAttributes).
-
- If isCore is True, then this device is active as a true core input
- device and will send core events. If sendsCore is True, then this
- device is an XInput extension device, but sends core events instead
- of extension events. Note that this behavior is different from that
- of XFree86 or Xorg, where XInput extension devices may send both
- extension events and core events.
-
- If detached is True, then this device has been detached and is no
- longer producing input events. The device may be reattached using
- DMXAddInput.
-
-
-
- DMXAddInput
- displayName: STRING8
- valueMask: CARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- physicalId: CARD32
-
- Errors: Value, Access
-
- This request was first supported in version 2.2 of this protocol.
-
- The valueMask and valueList specify the attributes to be used. The
- possible values are:
-
- Attribute Type
-
- InputType CARD32
- InputPhysicalScreen CARD32
- InputSendsCore BOOL
-
- This request attaches an input device to the Xdmx server. The value
- of inputType will be one:
- 1 for console devices, and
- 2 for back-end devices.
- Other values of InputType will return a BadValue error. Local
- devices (inputType=0 in DMXGetInputAttributes) cannot be attached or
- removed. For console devices, displayName will store the name of
- the display to be used.
-
- For back-end devices, InputPhysicalScreen will specify the screen
- number. BadValue will be returned if the screen number is out of
- range. BadAccess will be returned if the input has already been
- attached or if the backend screen is currently detached.
-
- If InputSendsCore is True, the new device will be added as a true
- core device.
-
- If a device was removed with DMXRemoveInput an attempt will be made
- to reconnect the previous devices (InputSendsCore is ignored in this
- case).
-
-
-
- DMXRemoveInput
- physicalId: CARD32
- ==>
- status: CARD32
-
- Errors: Value, Access
-
- This request was first supported in version 2.2 of this protocol.
-
- This request detaches the input device with physicalId, and all
- associated inputs (e.g., if the physicalId is a backend mouse, and a
- keyboard is also attached to the backend, then both devices will be
- detached). If the physicalId is outside the valid range (0 to one
- less than the value returned by DMXInputCount), BadValue is
- returned. If the physicalId has already been detached, BadAccess is
- returned. The status is always 0.
-
-
-
-5. Events
-
- No new events are defined by this extension.
-
-
-
-6. Errors
-
- No new events are defined by this extension.
-
-
-
-7. Encoding
-
- Deprecated DMX opcodes:
- DMXGetScreenInformation 2
- DMXForceWindowCreation 6
- DMXReconfigureScreen 7
-
- Valid DMX opcodes:
- DMXQueryVersion 0
- DMXSync 8
- DMXForceWindowCreation 9
-
- DMXGetScreenCount 1
- DMXGetScreenAttributes 10
- DMXChangeScreensAttributes 11
- DMXAddScreen 12
- DMXRemoveScreen 13
-
- DMXGetWindowAttributes 3
-
- DMXGetDesktopAttributes 14
- DMXChangeDesktopAttributes 15
-
- DMXGetInputCount 4
- DMXGetInputAttributes 5
- DMXAddInput 16
- DMXRemoveInput 17
-
- DMXQueryVersion
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXQueryVersion)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 majorVersion
- 4 CARD32 minorVersion
- 4 CARD32 patchVersion
- 12 unused
-
- DMXSync
- 1 CARD8 opcode (X assigned)
- 1 8 DMX opcode (X_DMXSync)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXForceWindowCreation
- 1 CARD8 opcode (X assigned)
- 1 9 DMX opcode (X_DMXForceWindowCreation)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
-
- DMXGetScreenCount
- 1 CARD8 opcode (X assigned)
- 1 1 DMX opcode (X_DMXGetScreenCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 screenCount
- 20 unused
-
- DMXGetScreenAttributes
- 1 CARD8 opcode (X assigned)
- 1 10 DMX opcode (X_DMXGetScreenAttributes)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 1+(n+p)/4 reply length
- 4 n displayNameLength
- 4 CARD32 logicalScreen
- 2 CARD16 screenWindowWidth
- 2 CARD16 screenWindowHeight
- 2 INT16 screenWindowXoffset
- 2 INT16 screenWindowYoffset
- 2 CARD16 rootWindowWidth
- 2 CARD16 rootWindowHeight
- 2 INT16 rootWindowXoffset
- 2 INT16 rootWindowYoffset
- 2 INT16 rootWindowXorigin
- 2 INT16 rootWindowYorigin
- n displayName
- p pad(n)
-
- DMXChangeScreensAttributes
- 1 CARD8 opcode (X assigned)
- 1 11 DMX opcode (X_DMXChangeScreenAttributes)
- 2 3+s+m+n request length
- 4 s screenCount
- 4 m maskCount
- 4s LISTofCARD32 screens
- 4m LISTofCARD32 valueMasks
- 4n LISTofVALUES valueList
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 errorScreen
- 16 unused
-
-
- DMXAddScreen
- 1 CARD8 opcode (X assigned)
- 1 12 DMX opcode (X_DMXAddScreen)
- 2 3+m+(n+p)/4 request length
- 4 n displayNameLength
- 4 CARD32 physicalScreen
- 4 CARD32 valueMask
- 4m LISTofVALUES valueList
- n displayName
- p pad(n)
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 physicalScreen
- 16 unused
-
- DMXRemoveScreen
- 1 CARD8 opcode (X assigned)
- 1 13 DMX opcode (X_DMXRemoveScreen)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXGetWindowAttributes
- 1 CARD8 opcode (X assigned)
- 1 3 DMX opcode (X_DMXGetWindowAttributes)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n*6 reply length
- 4 n screenCount
- 20 unused
- n*4 LISTofCARD32 screens
- n*4 LISTofCARD32 windows
- n*8 LISTofRECTANGLE pos
- n*8 LISTofRECTANGLE vis
-
- DMXGetDesktopAttributes
- 1 CARD8 opcode (X assigned)
- 1 14 DMX opcode (X_DMXGetDesktopAttributes)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 2 INT16 width
- 2 INT16 height
- 2 INT16 shiftX
- 2 INT16 shiftY
- 16 unused
-
- DMXChangeDesktopAttributes
- 1 CARD8 opcode (X assigned)
- 1 15 DMX opcode (X_DMXChangeDesktopAttributes)
- 2 2+n request length
- 4 BITMASK valueMask
- 4n LISTofVALUES valueList
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXGetInputCount
- 1 CARD8 opcode (X assigned)
- 1 4 DMX opcode (X_DMXGetInputCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 inputCount
- 20 unused
-
- DMXGetInputAttributes
- 1 CARD8 opcode (X assigned)
- 1 5 DMX opcode (X_DMXGetInputAttributes)
- 2 2 request length
- 4 CARD32 deviceId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 (n+p)/4 reply length
- 4 CARD32 inputType
- 4 CARD32 physicalScreen
- 4 CARD32 physicalId
- 4 n nameLength
- 1 BOOL isCore
- 1 BOOL sendsCore
- 1 BOOL detached
- 5 unused
- n name
- p pad(n)
-
- DMXAddInput
- 1 CARD8 opcode (X assigned)
- 1 16 DMX opcode (X_DMXAddInput)
- 2 3+m+(n+p)/4 request length
- 4 n displayNameLength
- 4 CARD32 valueMask
- 4m LISTofVALUES valueList
- n displayName
- p pad(n)
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 physicalId
- 16 unused
-
- DMXRemoveInput
- 1 CARD8 opcode (X assigned)
- 1 17 DMX opcode (X_DMXRemoveInput)
- 2 3 request length
- 4 CARD32 physicalId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
-
-8. Changes to existing requests/replies/events
-
- No changes to existing requests, replies, or events are necessitated
- by this extension.
-
-
-
-9. Acknowledgments
-
-
-
-10. References
-
- [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
- Standard, X Version 11, Release 6.4. Available from
- xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
+
+
+ Client-to-Server DMX Extension to the X Protocol
+
+ $Date$, $Revision$
+
+ Rickard E. (Rik) Faith (faith@redhat.com)
+ Kevin E. Martin (kem@redhat.com)
+
+ Copyright 2002-2004 Red Hat Inc., Raleigh, North Carolina.
+
+ 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 on 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 (including the
+ next paragraph) 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
+ NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ 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.
+
+
+
+1. Overview
+
+ The client-to-server DMX extension to the X protocol (DMX) provides
+ normal client applications with the ability to determine information
+ about the characteristics of the Xdmx server and the back-end X
+ servers that DMX is using.
+
+ The name for this extension is "DMX".
+
+
+
+2. Syntactic conventions
+
+ This document uses the same syntactic conventions requests and data
+ types as [X11R6.4].
+
+
+
+3. Data types
+
+ No new data types are defined by this extension. All data types
+ referenced in this document are defined in [X11R6.4].
+
+
+
+4. Requests
+
+ DMXQueryVersion
+ ==>
+ majorVersion: CARD32
+ minorVersion: CARD32
+ patchVersion: CARD32
+
+ Errors: None
+
+ The protocol this extension actually supports is indicated by
+ majorVersion and minorVersion (patchVersion indicates the
+ patchlevel and is for informational purposes only).
+
+ Any incompatible changes to the protocol should be indicated by
+ incrementing majorVersion.
+
+ Small, upward-compatible changes should be indicated by incrementing
+ minorVersion.
+
+ Servers that support the protocol defined in this document will
+ return a majorVersion of 2 and a minorVersion of 2.
+
+ (Version 1.5 was the last version in the 1.x series; version 2.0 was
+ a testing version that was poorly defined.)
+
+
+
+ DMXSync
+ ==>
+ status: CARD32
+
+ Errors: None
+
+ This request was first supported in version 1.5 of this protocol.
+ The status field in the reply was introduced in version 2.0 of this
+ protocol. Since the status field is ignored, no changes to the
+ underlying protocol were required.
+
+ This request flushes all pending protocol requests between the Xdmx
+ server and each back-end X server. It is used by clients that
+ talk directly to back-end X servers to ensure that all pending Xdmx
+ requests have reached all back-end servers and have been processed
+ by those servers.
+
+ The value of status is always 0.
+
+
+
+ DMXForceWindowCreation
+ window: CARD32
+ ==>
+ status: CARD32
+
+ Errors: Window
+
+ This request was first supported in version 1.2 of this protocol.
+ This request was changed to have a reply in version 2.0 of this
+ protocol. The old version of this request was deprecated and will
+ return BadImplementation.
+
+ When using the lazy window creation optimization, windows are not
+ created on the back-end X servers until they are required. This
+ request forces the immediate creation of the window requested.
+
+ The value of status is always 0.
+
+
+
+
+ DMXGetScreenCount
+ ==>
+ screenCount: CARD32
+
+ Errors: None
+
+ This request returns the number of screens that the Xdmx server
+ controls. Since a DMX screen usually fills all of the available
+ area on a back-end server, there is usually a one-to-one
+ correspondence between DMX screens and backend servers. However, it
+ is also possible for a DMX screen to cover only part of the
+ available area on a back-end server, and for more than one DMX
+ screen to occupy different parts of the visible area on the same
+ back-end server.
+
+ A DMX screen may be managed as a regular X screen in the Xdmx server
+ or may be joined with other DMX screens using Xinerama.
+
+
+
+ DMXGetScreenAttributes
+ physicalScreen: CARD32
+ ==>
+ displayName: STRING8
+ logicalScreen: CARD32
+ screenWindowWidth: CARD16
+ screenWindowHeight: CARD16
+ screenWindowXoffset: INT16
+ screenWindowYoffset: INT16
+ rootWindowWidth: CARD16
+ rootWindowHeight: CARD16
+ rootWindowXoffset: INT16
+ rootWindowYoffset: INT16
+ rootWindowXorigin: INT16
+ rootWindowYorigin: INT16
+
+ Errors: Value
+
+ This request is new in version 2.0 of this protocol. The old
+ DMXGetScreenInformation request is deprecated and will now return
+ BadImplementation.
+
+ This request returns attributes about a single DMX screen.
+
+ The physicalScreen value is between 0 and screenCount-1, inclusive
+ (values outside this range will result in a Value error).
+
+ The displayname is the name used to open the display, either from
+ the Xdmx command-line or from the configuration file.
+
+ The logicalScreen value is the value of the screen that that Xdmx
+ server exports to clients. When Xinerama is in use, this value is
+ typically 0 for all values of physicalScreen. If Xinerama is in
+ use, the rootWindowXOrigin and rootWindowYOrigin values specify
+ where the physical screen is positioned in the global Xinerama
+ coordinate system. Otherwise, these values are set to 0.
+
+ The screenWindow values comprise a geometry specification (see
+ X(7x)) for the location of the DMX screen on the back-end screen.
+ The coordinant system of the back-end display is used.
+
+ The first four rootWindow values comprise a geometry specification
+ (see X(7x)) for the location of the root window on the screen
+ window. The coordinant system of the screen window is used. In
+ most cases, the root window will have the same geometry as the DMX
+ screen window, and will occupy the same area of the back-end
+ display. (This would not be the case, for example, if automatic
+ projector alignment is used.)
+
+
+
+ DMXChangeScreensAttributes
+ screenCount: CARD32
+ maskCount: CARD32
+ screens: LISTofCARD32
+ valueMasks: LISTofCARD32
+ valueList: LISTofVALUES
+ ==>
+ status: CARD32
+ errorScreen: CARD32
+
+ Errors: Length, Alloc
+
+ This request was first supported in version 2.0 of this protocol.
+ (A singular version of this request with the ability to change some
+ RootWindow attributes was supported in version 1.3 of this protocol,
+ has been deprecated, and will return BadImplementation.)
+
+ This request changes the geometries and positions of the DMX screen
+ and DMX root windows on the back-end X servers.
+
+ The valueMask and valueList specify which attributes are to be
+ changed. The possible values are:
+
+ Attribute Type
+
+ ScreenWindowWidth CARD16
+ ScreenWindowHeight CARD16
+ ScreenWindowXoffset INT16
+ ScreenWindowYoffset INT16
+ RootWindowWidth CARD16
+ RootWindowHeight CARD16
+ RootWindowXoffset INT16
+ RootWindowYoffset INT16
+ RootWindowXorigin INT16
+ RootWindowYorigin INT16
+
+ The attribute values have the same meaning as do the corresponding
+ values for DMXGetScreenAttributes.
+
+ Non-fatal errors will be returned in status (0 otherwise):
+ DmxBadXinerama: Xinerama is not active
+ DmxBadValue: The resulting position is not allowed
+ (e.g., one corner is outside the bounding box)
+ On error, errorScreen will contain the number of the screen that
+ caused the first error.
+
+
+
+ DMXAddScreen
+ displayName: STRING8
+ physicalScreen: CARD32
+ valueMask: CARD32
+ valueList: LISTofVALUES
+ ==>
+ status: CARD32
+ physicalScreen: CARD32
+
+ Errors: Length, Alloc, Value
+
+ This request was first supported in version 2.2 of this protocol.
+
+ This request re-attaches the back-end physicalScreen to the Xdmx
+ server. Only back-end screens that have been previously detached
+ with DMXRemoveScreen may be added. The name of the back-end display
+ is given in displayName, and this will replace the name of the
+ back-end screen that was detached. Both the displayName and
+ physicalScreen must be correct for this request to work.
+
+ The valueMask and valueList specify the attributes to be used. The
+ possible values are:
+
+ Attribute Type
+
+ ScreenWindowWidth CARD16
+ ScreenWindowHeight CARD16
+ ScreenWindowXoffset INT16
+ ScreenWindowYoffset INT16
+ RootWindowWidth CARD16
+ RootWindowHeight CARD16
+ RootWindowXoffset INT16
+ RootWindowYoffset INT16
+ RootWindowXorigin INT16
+ RootWindowYorigin INT16
+
+ The attribute values have the same meaning as do the corresponding
+ values for DMXGetScreenAttributes.
+
+ On success, status will be 0 and physicalScreen will contain the new
+ screen number. On failure, status will be non-zero. The status
+ will be 1 if any of the following occured:
+ * the -addremovescreens command-line option was not specified on
+ the Xdmx command line
+ * the value of physicalScreen is out of range
+ * physicalScreen has not been detached (with DMXRemoveScreen)
+ * displayName cannot be opened
+ * the visuals of displayname do not match the visuals that Xdmx
+ is using
+ * the screen data for displayName does not match the data for the
+ previously removed display
+ The status will be DmxBadValue if the attribute values are out of
+ range.
+
+
+
+ DMXRemoveScreen
+ physicalScreen: CARD32
+ ==>
+ status: CARD32
+
+ Errors: None
+
+ This request was first supported in version 2.2 of this protocol.
+
+ This request detaches the physicalScreen screen.
+
+ On success, status will be 0. On failure, the status will 1 if any
+ of the following occur:
+ * the -addremovescreens command-line option was not specified on
+ the Xdmx command line
+ * the value of physicalScreen is out of range
+ * the back-end screen has already been detached.
+
+
+
+ DMXGetWindowAttributes
+ window: CARD32
+ ==>
+ screenCount: CARD32
+ screens: LISTofCARD32
+ windows: LISTofCARD32
+ pos: LISTofRECTANGLE
+ vis: LISTofRECTANGLE
+
+ Errors: Window, Alloc
+
+ This request computes the return values incorrectly for version 1.0
+ of this protocol. Version 1.1 of this protocol conforms to this
+ description. In version 2.0, the name of this request was changed
+ from DMXGetWindowInformation. However, since the request itself did
+ not change, no changes to the underlying protocol were made.
+
+ Given a window ID on the Xdmx server, this request returns data
+ about how the window is represented on the back-end X servers. For
+ each back-end X server that displays a portion of the window, the
+ following information is returned:
+ 1) the number of the physical screen containing that portion
+ (which can be used with the DMXGetScreenAttributes request
+ to obtain more information about the screen),
+ 2) the window ID on the back-end X server of the window
+ containing that portion,
+ 3) the position and dimensions of the window on the back-end, in
+ screen coordinates, and
+ 4) the visible area of the window on the back-end, in
+ window-relative coordinates (all zeros for windows that are
+ not visible).
+ Note that DMX allows multiple back-end windows to overlap in their
+ view of the DMX logical window. Further, a logical window does not
+ have to be completely covered by back-end windows -- there may be
+ gaps.
+
+ As an example, consider a 500x500 window that spans the top two
+ 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
+ composed of 4 1024x768 back-end displays arranged in a cube:
+ A B
+ C D
+
+ In this case, the DMXGetWindowAttributes call would return the
+ following information for the 500x500 window:
+
+ display A: 500x500 window at 1024-250,0 (relative to back end)
+ with 250x500 visible at 0,0 (relative to window origin)
+
+ display B: 500x500 window at -250,0 (relative to back end)
+ with 250x500 visible at 250,0 (relative to window origin)
+
+ display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
+
+ display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
+
+ Note that if the specified window has not yet been mapped when
+ DMXGetWindowAttributes is called, then a subsequent XMapWindow call
+ might be buffered in xlib while requests directly to the back-end X
+ servers are processed. This race condition can be solved by calling
+ DMXSync before talking directly to the back-end X servers.
+
+
+
+ DMXGetDesktopAttributes
+ ==>
+ width: INT16
+ height: INT16
+ shiftX: INT16
+ shiftY: INT16
+
+ Errors: None
+
+ This request was first supported in version 2.0 of this protocol.
+
+ This request returns the size of the bounding box of the whole
+ screen in width and height. The shiftX and shiftY values will
+ always be 0. The global bounding box is computed whether or not
+ Xinerama is active, and may be larger than the Xinerama screen size
+ because of information in the configuration file.
+
+
+
+ DMXChangeDesktopAttributes
+ valueMask: BITMASK
+ valueList: LISTofVALUE
+ ==>
+ status: CARD32
+
+ Errors: Length, Value
+
+ This request was first supported in version 2.0 of this protocol.
+
+ This request resizes the bounding box of the whole screen when using
+ the Xinerama extension. Otherwise, it has no effect on the screen
+ layout. The valueMask and valueList specify which attributes are to
+ be changed. The possible values are:
+
+ Attriubute Type
+
+ Width INT16
+ Height INT16
+ ShiftX INT16
+ ShiftY INT16
+
+ Width and Height specify the new width and height for the bounding
+ box. ShiftX and ShiftY specify where the Xinerama origin will be
+ placed with respect to the origin of the new bounding box. This
+ allows the left and upper edges of the bounding box to be changed
+ without changing the visual position of the windows on the desktop.
+ If Width or Height is not specified, the current values will be
+ used. If ShiftX or ShiftY is not specified, 0 will be used.
+
+ All coordinants are in the global DMX coordinant system. If
+ Xinerama is not active, this request is not useful.
+
+ Non-fatal errors will be returned in status (0 otherwise):
+ DmxBadXinerama: Xinerama is not active
+ DmxBadValue: The size of the bounding box is too large
+
+
+
+ DMXGetInputCount
+ ==>
+ inputCount: CARD32
+
+ This request was first supported in version 1.1 of this protocol.
+
+ This request returns the number of input devices connected to the
+ Xdmx server. This number is the same as that returned by
+ XListInputDevices, but is available even when the XInput extension
+ is not supported.
+
+
+
+ DMXGetInputAttributes
+ deviceId: CARD32
+ ==>
+ inputType: CARD32
+ physicalScreen: CARD32
+ physicalId: CARD32
+ isCore: BOOL
+ sendsCore: BOOL
+ detached: BOOL
+ name: STRING8
+
+ Errors: Value
+
+ This request was first supported in version 1.1 of this protocol.
+ In version 2.0, the name of this request was changed from
+ DMXGetInputInformation. However, since the request itself did not
+ change, no changes to the underlying protocol were made. In version
+ 2.2, the name of detached was changed from reservation. There was
+ no change in underlying protocol.
+
+ This request returns information about the specified input device
+ that cannot be obtained from the XListInputDeivices call. The
+ deviceId is the same as that used by the XListInputDevices call, and
+ must be in the range 0 to inputCount-1, inclusive (values outside
+ this range will result in a Value error).
+
+ The value of inputType will always be valid, and will be one of the
+ following values:
+ 0 for local (and dummy) devices,
+ 1 for console devices, and
+ 2 for back-end devices.
+
+ For local devices, all other fields returned, except isCore and
+ sendsCore, are invalid.
+
+ For console devices, the physicalScreen and physicalID will be
+ invalid, and the name will return the name of the X server on which
+ the console window is displayed.
+
+ For back-end devices, the physicalScreen will identify the back-end
+ display and can be used as an argument to DMXGetScreenAttributes to
+ obtain more information; the physicalId will be the XInput device id
+ on the back-end X server; and the name will be invalid (since it
+ does not provide any additional information that cannot be obtained
+ with DMXGetScreenAttributes).
+
+ If isCore is True, then this device is active as a true core input
+ device and will send core events. If sendsCore is True, then this
+ device is an XInput extension device, but sends core events instead
+ of extension events. Note that this behavior is different from that
+ of XFree86 or Xorg, where XInput extension devices may send both
+ extension events and core events.
+
+ If detached is True, then this device has been detached and is no
+ longer producing input events. The device may be reattached using
+ DMXAddInput.
+
+
+
+ DMXAddInput
+ displayName: STRING8
+ valueMask: CARD32
+ valueList: LISTofVALUES
+ ==>
+ status: CARD32
+ physicalId: CARD32
+
+ Errors: Value, Access
+
+ This request was first supported in version 2.2 of this protocol.
+
+ The valueMask and valueList specify the attributes to be used. The
+ possible values are:
+
+ Attribute Type
+
+ InputType CARD32
+ InputPhysicalScreen CARD32
+ InputSendsCore BOOL
+
+ This request attaches an input device to the Xdmx server. The value
+ of inputType will be one:
+ 1 for console devices, and
+ 2 for back-end devices.
+ Other values of InputType will return a BadValue error. Local
+ devices (inputType=0 in DMXGetInputAttributes) cannot be attached or
+ removed. For console devices, displayName will store the name of
+ the display to be used.
+
+ For back-end devices, InputPhysicalScreen will specify the screen
+ number. BadValue will be returned if the screen number is out of
+ range. BadAccess will be returned if the input has already been
+ attached or if the backend screen is currently detached.
+
+ If InputSendsCore is True, the new device will be added as a true
+ core device.
+
+ If a device was removed with DMXRemoveInput an attempt will be made
+ to reconnect the previous devices (InputSendsCore is ignored in this
+ case).
+
+
+
+ DMXRemoveInput
+ physicalId: CARD32
+ ==>
+ status: CARD32
+
+ Errors: Value, Access
+
+ This request was first supported in version 2.2 of this protocol.
+
+ This request detaches the input device with physicalId, and all
+ associated inputs (e.g., if the physicalId is a backend mouse, and a
+ keyboard is also attached to the backend, then both devices will be
+ detached). If the physicalId is outside the valid range (0 to one
+ less than the value returned by DMXInputCount), BadValue is
+ returned. If the physicalId has already been detached, BadAccess is
+ returned. The status is always 0.
+
+
+
+5. Events
+
+ No new events are defined by this extension.
+
+
+
+6. Errors
+
+ No new events are defined by this extension.
+
+
+
+7. Encoding
+
+ Deprecated DMX opcodes:
+ DMXGetScreenInformation 2
+ DMXForceWindowCreation 6
+ DMXReconfigureScreen 7
+
+ Valid DMX opcodes:
+ DMXQueryVersion 0
+ DMXSync 8
+ DMXForceWindowCreation 9
+
+ DMXGetScreenCount 1
+ DMXGetScreenAttributes 10
+ DMXChangeScreensAttributes 11
+ DMXAddScreen 12
+ DMXRemoveScreen 13
+
+ DMXGetWindowAttributes 3
+
+ DMXGetDesktopAttributes 14
+ DMXChangeDesktopAttributes 15
+
+ DMXGetInputCount 4
+ DMXGetInputAttributes 5
+ DMXAddInput 16
+ DMXRemoveInput 17
+
+ DMXQueryVersion
+ 1 CARD8 opcode (X assigned)
+ 1 0 DMX opcode (X_DMXQueryVersion)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 majorVersion
+ 4 CARD32 minorVersion
+ 4 CARD32 patchVersion
+ 12 unused
+
+ DMXSync
+ 1 CARD8 opcode (X assigned)
+ 1 8 DMX opcode (X_DMXSync)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXForceWindowCreation
+ 1 CARD8 opcode (X assigned)
+ 1 9 DMX opcode (X_DMXForceWindowCreation)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+
+ DMXGetScreenCount
+ 1 CARD8 opcode (X assigned)
+ 1 1 DMX opcode (X_DMXGetScreenCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 screenCount
+ 20 unused
+
+ DMXGetScreenAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 10 DMX opcode (X_DMXGetScreenAttributes)
+ 2 2 request length
+ 4 CARD32 physicalScreen
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 1+(n+p)/4 reply length
+ 4 n displayNameLength
+ 4 CARD32 logicalScreen
+ 2 CARD16 screenWindowWidth
+ 2 CARD16 screenWindowHeight
+ 2 INT16 screenWindowXoffset
+ 2 INT16 screenWindowYoffset
+ 2 CARD16 rootWindowWidth
+ 2 CARD16 rootWindowHeight
+ 2 INT16 rootWindowXoffset
+ 2 INT16 rootWindowYoffset
+ 2 INT16 rootWindowXorigin
+ 2 INT16 rootWindowYorigin
+ n displayName
+ p pad(n)
+
+ DMXChangeScreensAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 11 DMX opcode (X_DMXChangeScreenAttributes)
+ 2 3+s+m+n request length
+ 4 s screenCount
+ 4 m maskCount
+ 4s LISTofCARD32 screens
+ 4m LISTofCARD32 valueMasks
+ 4n LISTofVALUES valueList
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 4 CARD32 errorScreen
+ 16 unused
+
+
+ DMXAddScreen
+ 1 CARD8 opcode (X assigned)
+ 1 12 DMX opcode (X_DMXAddScreen)
+ 2 3+m+(n+p)/4 request length
+ 4 n displayNameLength
+ 4 CARD32 physicalScreen
+ 4 CARD32 valueMask
+ 4m LISTofVALUES valueList
+ n displayName
+ p pad(n)
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 4 CARD32 physicalScreen
+ 16 unused
+
+ DMXRemoveScreen
+ 1 CARD8 opcode (X assigned)
+ 1 13 DMX opcode (X_DMXRemoveScreen)
+ 2 2 request length
+ 4 CARD32 physicalScreen
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXGetWindowAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 3 DMX opcode (X_DMXGetWindowAttributes)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n*6 reply length
+ 4 n screenCount
+ 20 unused
+ n*4 LISTofCARD32 screens
+ n*4 LISTofCARD32 windows
+ n*8 LISTofRECTANGLE pos
+ n*8 LISTofRECTANGLE vis
+
+ DMXGetDesktopAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 14 DMX opcode (X_DMXGetDesktopAttributes)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 INT16 width
+ 2 INT16 height
+ 2 INT16 shiftX
+ 2 INT16 shiftY
+ 16 unused
+
+ DMXChangeDesktopAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 15 DMX opcode (X_DMXChangeDesktopAttributes)
+ 2 2+n request length
+ 4 BITMASK valueMask
+ 4n LISTofVALUES valueList
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXGetInputCount
+ 1 CARD8 opcode (X assigned)
+ 1 4 DMX opcode (X_DMXGetInputCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 inputCount
+ 20 unused
+
+ DMXGetInputAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 5 DMX opcode (X_DMXGetInputAttributes)
+ 2 2 request length
+ 4 CARD32 deviceId
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 4 CARD32 inputType
+ 4 CARD32 physicalScreen
+ 4 CARD32 physicalId
+ 4 n nameLength
+ 1 BOOL isCore
+ 1 BOOL sendsCore
+ 1 BOOL detached
+ 5 unused
+ n name
+ p pad(n)
+
+ DMXAddInput
+ 1 CARD8 opcode (X assigned)
+ 1 16 DMX opcode (X_DMXAddInput)
+ 2 3+m+(n+p)/4 request length
+ 4 n displayNameLength
+ 4 CARD32 valueMask
+ 4m LISTofVALUES valueList
+ n displayName
+ p pad(n)
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 4 CARD32 physicalId
+ 16 unused
+
+ DMXRemoveInput
+ 1 CARD8 opcode (X assigned)
+ 1 17 DMX opcode (X_DMXRemoveInput)
+ 2 3 request length
+ 4 CARD32 physicalId
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+
+8. Changes to existing requests/replies/events
+
+ No changes to existing requests, replies, or events are necessitated
+ by this extension.
+
+
+
+9. Acknowledgments
+
+
+
+10. References
+
+ [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
+ Standard, X Version 11, Release 6.4. Available from
+ xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
diff --git a/xorg-server/hw/dmx/doxygen/.gitignore b/xorg-server/hw/dmx/doxygen/.gitignore
new file mode 100644
index 000000000..550262f01
--- /dev/null
+++ b/xorg-server/hw/dmx/doxygen/.gitignore
@@ -0,0 +1,2 @@
+html/
+doxygen.conf
diff --git a/xorg-server/hw/dmx/examples/.gitignore b/xorg-server/hw/dmx/examples/.gitignore
new file mode 100644
index 000000000..854534d9f
--- /dev/null
+++ b/xorg-server/hw/dmx/examples/.gitignore
@@ -0,0 +1,17 @@
+# Add & Override for this directory and it's subdirectories
+dmxaddinput
+dmxaddscreen
+dmxinfo
+dmxreconfig
+dmxresize
+dmxrminput
+dmxrmscreen
+dmxwininfo
+ev
+evi
+res
+xbell
+xinput
+xled
+xtest
+
diff --git a/xorg-server/hw/dmx/input/Makefile.am b/xorg-server/hw/dmx/input/Makefile.am
index 185aaf84e..ebe9a0843 100644
--- a/xorg-server/hw/dmx/input/Makefile.am
+++ b/xorg-server/hw/dmx/input/Makefile.am
@@ -1,67 +1,67 @@
-noinst_LIBRARIES = libdmxinput.a
-
-if DMX_BUILD_LNX
-RAWSRCS = lnx-keyboard.c \
- lnx-keyboard.h \
- lnx-ms.c \
- lnx-ms.h \
- lnx-ps2.c \
- lnx-ps2.h
-endif
-
-if DMX_BUILD_USB
-USBSRCS = usb-keyboard.c \
- usb-keyboard.h \
- usb-mouse.c \
- usb-mouse.h \
- usb-other.c \
- usb-other.h \
- usb-common.c \
- usb-common.h \
- usb-private.h
-endif
-
-DRVSRCS = dmxdummy.c \
- dmxdummy.h \
- dmxbackend.c \
- dmxbackend.h \
- dmxconsole.c \
- dmxconsole.h \
- dmxcommon.c \
- dmxcommon.h
-
-DMXSRCS = dmxinputinit.c \
- dmxinputinit.h \
- dmxarg.c \
- dmxarg.h \
- dmxsigio.c \
- dmxsigio.h \
- dmxevents.c \
- dmxevents.h \
- dmxxinput.c \
- dmxmotion.c \
- dmxmotion.h \
- dmxmap.c \
- dmxmap.h
-
-
-libdmxinput_a_SOURCES = ChkNotMaskEv.c \
- ChkNotMaskEv.h \
- atKeynames.h \
- $(RAWSRCS) \
- $(USBSRCS) \
- $(DRVSRCS) \
- $(DMXSRCS) \
- $(LIBSRCS)
-
-if GLX
-GLX_DEFS = @GL_CFLAGS@
-endif
-
-AM_CFLAGS = $(DIX_CFLAGS) \
- -I$(top_srcdir)/hw/dmx \
- -DHAVE_DMX_CONFIG_H \
- $(GLX_DEFS) \
- @DMXMODULES_CFLAGS@
-
-EXTRA_DIST = dmxdetach.c
+noinst_LIBRARIES = libdmxinput.a
+
+if DMX_BUILD_LNX
+RAWSRCS = lnx-keyboard.c \
+ lnx-keyboard.h \
+ lnx-ms.c \
+ lnx-ms.h \
+ lnx-ps2.c \
+ lnx-ps2.h
+endif
+
+if DMX_BUILD_USB
+USBSRCS = usb-keyboard.c \
+ usb-keyboard.h \
+ usb-mouse.c \
+ usb-mouse.h \
+ usb-other.c \
+ usb-other.h \
+ usb-common.c \
+ usb-common.h \
+ usb-private.h
+endif
+
+DRVSRCS = dmxdummy.c \
+ dmxdummy.h \
+ dmxbackend.c \
+ dmxbackend.h \
+ dmxconsole.c \
+ dmxconsole.h \
+ dmxcommon.c \
+ dmxcommon.h
+
+DMXSRCS = dmxinputinit.c \
+ dmxinputinit.h \
+ dmxarg.c \
+ dmxarg.h \
+ dmxsigio.c \
+ dmxsigio.h \
+ dmxevents.c \
+ dmxevents.h \
+ dmxxinput.c \
+ dmxmotion.c \
+ dmxmotion.h \
+ dmxmap.c \
+ dmxmap.h
+
+
+libdmxinput_a_SOURCES = ChkNotMaskEv.c \
+ ChkNotMaskEv.h \
+ atKeynames.h \
+ $(RAWSRCS) \
+ $(USBSRCS) \
+ $(DRVSRCS) \
+ $(DMXSRCS) \
+ $(LIBSRCS)
+
+if GLX
+GLX_DEFS = @GL_CFLAGS@
+endif
+
+AM_CFLAGS = $(DIX_CFLAGS) \
+ -I$(top_srcdir)/hw/dmx \
+ -DHAVE_DMX_CONFIG_H \
+ $(GLX_DEFS) \
+ @DMXMODULES_CFLAGS@
+
+EXTRA_DIST = dmxdetach.c
diff --git a/xorg-server/hw/dmx/input/dmxconsole.c b/xorg-server/hw/dmx/input/dmxconsole.c
index f63772b17..600a70553 100644
--- a/xorg-server/hw/dmx/input/dmxconsole.c
+++ b/xorg-server/hw/dmx/input/dmxconsole.c
@@ -640,7 +640,7 @@ dmxCloseConsole(myPrivate * priv)
}
static Bool
-dmxCloseConsoleScreen(int idx, ScreenPtr pScreen)
+dmxCloseConsoleScreen(ScreenPtr pScreen)
{
myPrivate *priv, *last;
@@ -650,7 +650,7 @@ dmxCloseConsoleScreen(int idx, ScreenPtr pScreen)
dmxCloseConsole(last = priv);
DMX_UNWRAP(CloseScreen, last, pScreen);
- return pScreen->CloseScreen(idx, pScreen);
+ return pScreen->CloseScreen(pScreen);
}
static Cursor
diff --git a/xorg-server/hw/dmx/input/dmxdummy.h b/xorg-server/hw/dmx/input/dmxdummy.h
index e3a85be95..17318b4d9 100644
--- a/xorg-server/hw/dmx/input/dmxdummy.h
+++ b/xorg-server/hw/dmx/input/dmxdummy.h
@@ -1,43 +1,43 @@
-/*
- * Copyright 2002 Red Hat Inc., Durham, North Carolina.
- *
- * All Rights Reserved.
- *
- * 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 on 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 (including the
- * next paragraph) 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
- * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- * 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.
- */
-
-/*
- * Authors:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to dummy input device support. \see dmxdummy.c */
-
-#ifndef _DMXDUMMY_H_
-#define _DMXDUMMY_H_
-
-extern void dmxDummyMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern void dmxDummyKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-
-#endif
+/*
+ * Copyright 2002 Red Hat Inc., Durham, North Carolina.
+ *
+ * All Rights Reserved.
+ *
+ * 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 on 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 (including the
+ * next paragraph) 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
+ * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ * 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.
+ */
+
+/*
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@redhat.com>
+ *
+ */
+
+/** \file
+ * Interface to dummy input device support. \see dmxdummy.c */
+
+#ifndef _DMXDUMMY_H_
+#define _DMXDUMMY_H_
+
+extern void dmxDummyMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
+extern void dmxDummyKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
+
+#endif
diff --git a/xorg-server/hw/kdrive/Makefile.am b/xorg-server/hw/kdrive/Makefile.am
index 471ca89dd..3aebd0f43 100644
--- a/xorg-server/hw/kdrive/Makefile.am
+++ b/xorg-server/hw/kdrive/Makefile.am
@@ -1,30 +1,30 @@
-if BUILD_KDRIVEFBDEVLIB
-FBDEV_SUBDIRS = fbdev
-endif
-
-if XFAKESERVER
-XFAKE_SUBDIRS = fake
-endif
-
-if XEPHYR
-XEPHYR_SUBDIRS = ephyr
-endif
-
-if KDRIVELINUX
-LINUX_SUBDIRS = linux
-endif
-
-SERVER_SUBDIRS = \
- $(FBDEV_SUBDIRS) \
- $(XEPHYR_SUBDIRS) \
- $(XFAKE_SUBDIRS)
-
-SUBDIRS = \
- src \
- $(LINUX_SUBDIRS) \
- $(SERVER_SUBDIRS)
-
-DIST_SUBDIRS = fbdev ephyr src linux fake
-
-relink:
- $(AM_V_at)for i in $(SERVER_SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done
+if BUILD_KDRIVEFBDEVLIB
+FBDEV_SUBDIRS = fbdev
+endif
+
+if XFAKESERVER
+XFAKE_SUBDIRS = fake
+endif
+
+if XEPHYR
+XEPHYR_SUBDIRS = ephyr
+endif
+
+if KDRIVELINUX
+LINUX_SUBDIRS = linux
+endif
+
+SERVER_SUBDIRS = \
+ $(FBDEV_SUBDIRS) \
+ $(XEPHYR_SUBDIRS) \
+ $(XFAKE_SUBDIRS)
+
+SUBDIRS = \
+ src \
+ $(LINUX_SUBDIRS) \
+ $(SERVER_SUBDIRS)
+
+DIST_SUBDIRS = fbdev ephyr src linux fake
+
+relink:
+ $(AM_V_at)for i in $(SERVER_SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done
diff --git a/xorg-server/hw/kdrive/Xkdrive.man b/xorg-server/hw/kdrive/Xkdrive.man
index b37f9f10a..a2a2736ea 100644
--- a/xorg-server/hw/kdrive/Xkdrive.man
+++ b/xorg-server/hw/kdrive/Xkdrive.man
@@ -1,57 +1,57 @@
-.\" $RCSId: xc/programs/Xserver/hw/kdrive/Xkdrive.man,v 1.3 2001/01/24 00:06:10 dawes Exp $
-.\"
-.TH Xkdrive 1 __vendorversion__
-.SH NAME
-Xkdrive \- tiny X server
-.SH SYNOPSIS
-.B Xvesa
-.RI [ :display ]
-.RI [ option ...]
-
-.B Xfbdev
-.RI [ :display ]
-.RI [ option ...]
-.SH DESCRIPTION
-.B Xkdrive
-is a family of X servers designed to be particularly small. This
-manual page describes the common functionality of the
-.B Xkdrive
-servers; for information on a specific X server, please refer to the
-relevant manual page.
-.SH OPTIONS
-In addition to the standard options accepted by all X servers (see
-Xserver(1)), all the
-.B Xkdrive
-servers accept the following options:
-.TP 8
-.B -card \fIpcmcia\fP
-use pcmcia card as additional screen.
-.TP 8
-.B -dumb
-disable hardware acceleration.
-.TP 8
-.B -origin \fIX\fP,\fIY\fP
-Locates the next screen in the Xinerama virtual screen.
-.TP 8
-.B -screen \fIwidth\fBx\fIheight\fR[\fBx\fIdepth\fR[\fBx\fIfreq\fR]]\fR[\fB@\fIrotation\fR]\fB
-use a screen of the specified \fIwidth\fP, \fIheight\fP, screen \fIdepth\fP, \fIfrequency\fP, and \fIrotation\fP (0, 90, 180 and 270 are legal values).
-.TP 8
-.B -softCursor
-disable the hardware cursor.
-.TP 8
-.B -videoTest
-start the server, pause momentarily, and exit.
-.TP 8
-.B -zaphod
-disable switching screens by moving the pointer across a screen boundary.
-.TP 8
-.B -2button
-enable emulation of a middle mouse button by chording.
-.TP 8
-.B -3button
-disable emulation of a middle mouse button by chording.
-.SH SEE ALSO
-X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1), Xvesa(1), Xfbdev(1).
-.SH AUTHORS
-The Xkdrive common core was written by Keith Packard,
-and is based on the Sample Implementation of X.
+.\" $RCSId: xc/programs/Xserver/hw/kdrive/Xkdrive.man,v 1.3 2001/01/24 00:06:10 dawes Exp $
+.\"
+.TH Xkdrive 1 __vendorversion__
+.SH NAME
+Xkdrive \- tiny X server
+.SH SYNOPSIS
+.B Xvesa
+.RI [ :display ]
+.RI [ option ...]
+
+.B Xfbdev
+.RI [ :display ]
+.RI [ option ...]
+.SH DESCRIPTION
+.B Xkdrive
+is a family of X servers designed to be particularly small. This
+manual page describes the common functionality of the
+.B Xkdrive
+servers; for information on a specific X server, please refer to the
+relevant manual page.
+.SH OPTIONS
+In addition to the standard options accepted by all X servers (see
+Xserver(1)), all the
+.B Xkdrive
+servers accept the following options:
+.TP 8
+.B -card \fIpcmcia\fP
+use pcmcia card as additional screen.
+.TP 8
+.B -dumb
+disable hardware acceleration.
+.TP 8
+.B -origin \fIX\fP,\fIY\fP
+Locates the next screen in the Xinerama virtual screen.
+.TP 8
+.B -screen \fIwidth\fBx\fIheight\fR[\fBx\fIdepth\fR[\fBx\fIfreq\fR]]\fR[\fB@\fIrotation\fR]\fB
+use a screen of the specified \fIwidth\fP, \fIheight\fP, screen \fIdepth\fP, \fIfrequency\fP, and \fIrotation\fP (0, 90, 180 and 270 are legal values).
+.TP 8
+.B -softCursor
+disable the hardware cursor.
+.TP 8
+.B -videoTest
+start the server, pause momentarily, and exit.
+.TP 8
+.B -zaphod
+disable switching screens by moving the pointer across a screen boundary.
+.TP 8
+.B -2button
+enable emulation of a middle mouse button by chording.
+.TP 8
+.B -3button
+disable emulation of a middle mouse button by chording.
+.SH SEE ALSO
+X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1), Xvesa(1), Xfbdev(1).
+.SH AUTHORS
+The Xkdrive common core was written by Keith Packard,
+and is based on the Sample Implementation of X.
diff --git a/xorg-server/hw/kdrive/ephyr/.gitignore b/xorg-server/hw/kdrive/ephyr/.gitignore
new file mode 100644
index 000000000..4962d1ef0
--- /dev/null
+++ b/xorg-server/hw/kdrive/ephyr/.gitignore
@@ -0,0 +1 @@
+Xephyr
diff --git a/xorg-server/hw/kdrive/ephyr/README b/xorg-server/hw/kdrive/ephyr/README
index 6d6a222ef..7b26fcf33 100644
--- a/xorg-server/hw/kdrive/ephyr/README
+++ b/xorg-server/hw/kdrive/ephyr/README
@@ -1,73 +1,73 @@
-Xephyr README
-=============
-
-
-What Is It ?
-============
-
-Xephyr is a a kdrive server that outputs to a window on a pre-existing
-'host' X display. Think Xnest but with support for modern extensions
-like composite, damage and randr.
-
-Unlike Xnest which is an X proxy, i.e. limited to the
-capabilities of the host X server, Xephyr is a real X server which
-uses the host X server window as "framebuffer" via fast SHM XImages.
-
-It also has support for 'visually' debugging what the server is
-painting.
-
-
-How To Use
-==========
-
-You probably want to run like;
-
-Xephyr :1 -ac -screen 800x600 &
-
-Then set DISPLAY=:1 and run whatever X apps you like.
-
-Use 'xrandr' to change to orientation/size.
-
-There is a '-parent' switch which works just like Xnests ( for use
-with things like matchbox-nest - http://matchbox.handhelds.org ).
-
-There is also a '-host-cursor' switch to set 'cursor acceleration' -
-The host's cursor is reused. This is only really there to aid
-debugging by avoiding server paints for the cursor. Performance
-improvement is negiable.
-
-Send a SIGUSR1 to the server ( eg kill -USR1 `pidof Xephyr` ) to
-toggle the debugging mode. In this mode red rectangles are painted to
-screen areas getting painted before painting the actual content. The
-delay between this can be altered by setting a XEPHYR_PAUSE env var to
-a value in micro seconds.
-
-
-Caveats
-=======
-
- - Depth is limited to being the same as the host.
- *Update* As of 8/11/2004. Xephyr can now do 8bpp & 16bpp
- on 24bpp host.
-
- - Rotated displays are currently updated via full blits. This
- is slower than a normal oprientated display. Debug mode will
- therefor not be of much use rotated.
-
- - The '-host-cursor' cursor is static in its appearence.
-
- - The build gets a warning about 'nanosleep'. I think the various '-D'
- build flags are causing this. I havn't figured as yet how to work
- round it. It doesn't appear to break anything however.
-
- - Keyboard handling is basic but works.
-
- - Mouse button 5 probably wont work.
-
-
-
-
-
-Matthew Allum <mallum@o-hand.com> 2004
-
-
+Xephyr README
+=============
+
+
+What Is It ?
+============
+
+Xephyr is a a kdrive server that outputs to a window on a pre-existing
+'host' X display. Think Xnest but with support for modern extensions
+like composite, damage and randr.
+
+Unlike Xnest which is an X proxy, i.e. limited to the
+capabilities of the host X server, Xephyr is a real X server which
+uses the host X server window as "framebuffer" via fast SHM XImages.
+
+It also has support for 'visually' debugging what the server is
+painting.
+
+
+How To Use
+==========
+
+You probably want to run like;
+
+Xephyr :1 -ac -screen 800x600 &
+
+Then set DISPLAY=:1 and run whatever X apps you like.
+
+Use 'xrandr' to change to orientation/size.
+
+There is a '-parent' switch which works just like Xnests ( for use
+with things like matchbox-nest - http://matchbox.handhelds.org ).
+
+There is also a '-host-cursor' switch to set 'cursor acceleration' -
+The host's cursor is reused. This is only really there to aid
+debugging by avoiding server paints for the cursor. Performance
+improvement is negiable.
+
+Send a SIGUSR1 to the server ( eg kill -USR1 `pidof Xephyr` ) to
+toggle the debugging mode. In this mode red rectangles are painted to
+screen areas getting painted before painting the actual content. The
+delay between this can be altered by setting a XEPHYR_PAUSE env var to
+a value in micro seconds.
+
+
+Caveats
+=======
+
+ - Depth is limited to being the same as the host.
+ *Update* As of 8/11/2004. Xephyr can now do 8bpp & 16bpp
+ on 24bpp host.
+
+ - Rotated displays are currently updated via full blits. This
+ is slower than a normal oprientated display. Debug mode will
+ therefor not be of much use rotated.
+
+ - The '-host-cursor' cursor is static in its appearence.
+
+ - The build gets a warning about 'nanosleep'. I think the various '-D'
+ build flags are causing this. I havn't figured as yet how to work
+ round it. It doesn't appear to break anything however.
+
+ - Keyboard handling is basic but works.
+
+ - Mouse button 5 probably wont work.
+
+
+
+
+
+Matthew Allum <mallum@o-hand.com> 2004
+
+
diff --git a/xorg-server/hw/kdrive/fake/.gitignore b/xorg-server/hw/kdrive/fake/.gitignore
new file mode 100644
index 000000000..c973ff076
--- /dev/null
+++ b/xorg-server/hw/kdrive/fake/.gitignore
@@ -0,0 +1,2 @@
+# Add & Override for this directory and it's subdirectories
+Xfake
diff --git a/xorg-server/hw/kdrive/fake/Makefile.am b/xorg-server/hw/kdrive/fake/Makefile.am
index 6d3ed056e..76bbc3619 100644
--- a/xorg-server/hw/kdrive/fake/Makefile.am
+++ b/xorg-server/hw/kdrive/fake/Makefile.am
@@ -1,30 +1,30 @@
-INCLUDES = \
- @KDRIVE_INCS@ \
- @KDRIVE_CFLAGS@
-
-noinst_LTLIBRARIES = libfake.la
-
-bin_PROGRAMS = Xfake
-
-libfake_la_SOURCES = \
- fake.c \
- kbd.c \
- os.c \
- mouse.c \
- fake.h
-
-Xfake_SOURCES = \
- fakeinit.c
-
-Xfake_LDADD = \
- libfake.la \
- @KDRIVE_LIBS@
-
-Xfake_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
-
-Xfake_DEPENDENCIES = \
- libfake.la \
- @KDRIVE_LOCAL_LIBS@
-
-relink:
- $(AM_V_at)rm -f $(bin_PROGRAMS) && $(MAKE) $(bin_PROGRAMS)
+INCLUDES = \
+ @KDRIVE_INCS@ \
+ @KDRIVE_CFLAGS@
+
+noinst_LTLIBRARIES = libfake.la
+
+bin_PROGRAMS = Xfake
+
+libfake_la_SOURCES = \
+ fake.c \
+ kbd.c \
+ os.c \
+ mouse.c \
+ fake.h
+
+Xfake_SOURCES = \
+ fakeinit.c
+
+Xfake_LDADD = \
+ libfake.la \
+ @KDRIVE_LIBS@
+
+Xfake_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
+
+Xfake_DEPENDENCIES = \
+ libfake.la \
+ @KDRIVE_LOCAL_LIBS@
+
+relink:
+ $(AM_V_at)rm -f $(bin_PROGRAMS) && $(MAKE) $(bin_PROGRAMS)
diff --git a/xorg-server/hw/kdrive/fbdev/.gitignore b/xorg-server/hw/kdrive/fbdev/.gitignore
new file mode 100644
index 000000000..8569c9aed
--- /dev/null
+++ b/xorg-server/hw/kdrive/fbdev/.gitignore
@@ -0,0 +1,2 @@
+# Add & Override for this directory and it's subdirectories
+Xfbdev
diff --git a/xorg-server/hw/kdrive/fbdev/Makefile.am b/xorg-server/hw/kdrive/fbdev/Makefile.am
index ec9df95e0..98d667ebd 100644
--- a/xorg-server/hw/kdrive/fbdev/Makefile.am
+++ b/xorg-server/hw/kdrive/fbdev/Makefile.am
@@ -1,29 +1,29 @@
-INCLUDES = \
- @KDRIVE_INCS@ \
- @KDRIVE_CFLAGS@
-
-noinst_LTLIBRARIES = libfbdev.la
-
-libfbdev_la_SOURCES = \
- fbdev.c \
- fbdev.h
-
-if KDRIVEFBDEV
-bin_PROGRAMS = Xfbdev
-
-Xfbdev_SOURCES = \
- fbinit.c
-
-Xfbdev_LDADD = \
- libfbdev.la \
- @KDRIVE_LIBS@
-
-Xfbdev_DEPENDENCIES = \
- libfbdev.la \
- $(KDRIVE_PURE_LIBS)
-
-Xfbdev_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
-
-relink:
- $(AM_V_at)rm -f $(bin_PROGRAMS) && $(MAKE) $(bin_PROGRAMS)
-endif
+INCLUDES = \
+ @KDRIVE_INCS@ \
+ @KDRIVE_CFLAGS@
+
+noinst_LTLIBRARIES = libfbdev.la
+
+libfbdev_la_SOURCES = \
+ fbdev.c \
+ fbdev.h
+
+if KDRIVEFBDEV
+bin_PROGRAMS = Xfbdev
+
+Xfbdev_SOURCES = \
+ fbinit.c
+
+Xfbdev_LDADD = \
+ libfbdev.la \
+ @KDRIVE_LIBS@
+
+Xfbdev_DEPENDENCIES = \
+ libfbdev.la \
+ $(KDRIVE_PURE_LIBS)
+
+Xfbdev_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
+
+relink:
+ $(AM_V_at)rm -f $(bin_PROGRAMS) && $(MAKE) $(bin_PROGRAMS)
+endif
diff --git a/xorg-server/hw/kdrive/fbdev/Xfbdev.man b/xorg-server/hw/kdrive/fbdev/Xfbdev.man
index bfdae168f..6d0c23818 100644
--- a/xorg-server/hw/kdrive/fbdev/Xfbdev.man
+++ b/xorg-server/hw/kdrive/fbdev/Xfbdev.man
@@ -1,28 +1,28 @@
-.\" $RCSId: xc/programs/Xserver/hw/kdrive/fbdev/Xfbdev.man,v 1.4 2001/01/27 18:20:40 dawes Exp $
-.\"
-.TH Xfbdev 1 __vendorversion__
-.SH NAME
-Xfbdev \- Linux framebuffer device tiny X server
-.SH SYNOPSIS
-.B Xfbdev
-.RI [ :display ]
-.RI [ option ...]
-.SH DESCRIPTION
-.B Xfbdev
-is a generic X server for Linux.
-.B Xfbdev
-doesn't know about any particular hardware, and uses the framebuffer
-provided by the Linux framebuffer device.
-.SH OPTIONS
-.B Xfbdev
-accepts the common options of the Xkdrive family of servers. Please
-see Xkdrive(1).
-.SH KEYBOARD
-To be written.
-.SH SEE ALSO
-X(__miscmansuffix__), Xserver(1), Xkdrive(1), xdm(1), xinit(1).
-.SH AUTHORS
-The
-.B Xfbdev
-server was written by Keith Packard.
-
+.\" $RCSId: xc/programs/Xserver/hw/kdrive/fbdev/Xfbdev.man,v 1.4 2001/01/27 18:20:40 dawes Exp $
+.\"
+.TH Xfbdev 1 __vendorversion__
+.SH NAME
+Xfbdev \- Linux framebuffer device tiny X server
+.SH SYNOPSIS
+.B Xfbdev
+.RI [ :display ]
+.RI [ option ...]
+.SH DESCRIPTION
+.B Xfbdev
+is a generic X server for Linux.
+.B Xfbdev
+doesn't know about any particular hardware, and uses the framebuffer
+provided by the Linux framebuffer device.
+.SH OPTIONS
+.B Xfbdev
+accepts the common options of the Xkdrive family of servers. Please
+see Xkdrive(1).
+.SH KEYBOARD
+To be written.
+.SH SEE ALSO
+X(__miscmansuffix__), Xserver(1), Xkdrive(1), xdm(1), xinit(1).
+.SH AUTHORS
+The
+.B Xfbdev
+server was written by Keith Packard.
+
diff --git a/xorg-server/hw/kdrive/linux/Makefile.am b/xorg-server/hw/kdrive/linux/Makefile.am
index 93e5d2f9f..7946e5df3 100644
--- a/xorg-server/hw/kdrive/linux/Makefile.am
+++ b/xorg-server/hw/kdrive/linux/Makefile.am
@@ -1,27 +1,27 @@
-INCLUDES = \
- @KDRIVE_INCS@ \
- @KDRIVE_CFLAGS@
-
-AM_CFLAGS = -DHAVE_DIX_CONFIG_H
-
-noinst_LTLIBRARIES = liblinux.la
-
-liblinux_la_SOURCES =
-
-liblinux_la_SOURCES += linux.c
-
-if KDRIVE_KBD
-liblinux_la_SOURCES += keyboard.c
-endif
-
-if KDRIVE_EVDEV
-liblinux_la_SOURCES += evdev.c
-endif
-
-if KDRIVE_MOUSE
-liblinux_la_SOURCES += mouse.c ms.c ps2.c
-endif
-
-if TSLIB
-liblinux_la_SOURCES += tslib.c
-endif
+INCLUDES = \
+ @KDRIVE_INCS@ \
+ @KDRIVE_CFLAGS@
+
+AM_CFLAGS = -DHAVE_DIX_CONFIG_H
+
+noinst_LTLIBRARIES = liblinux.la
+
+liblinux_la_SOURCES =
+
+liblinux_la_SOURCES += linux.c
+
+if KDRIVE_KBD
+liblinux_la_SOURCES += keyboard.c
+endif
+
+if KDRIVE_EVDEV
+liblinux_la_SOURCES += evdev.c
+endif
+
+if KDRIVE_MOUSE
+liblinux_la_SOURCES += mouse.c ms.c ps2.c
+endif
+
+if TSLIB
+liblinux_la_SOURCES += tslib.c
+endif
diff --git a/xorg-server/hw/kdrive/src/Makefile.am b/xorg-server/hw/kdrive/src/Makefile.am
index 51375b950..477ad673a 100644
--- a/xorg-server/hw/kdrive/src/Makefile.am
+++ b/xorg-server/hw/kdrive/src/Makefile.am
@@ -1,28 +1,28 @@
-INCLUDES = \
- @KDRIVE_INCS@ \
- @KDRIVE_CFLAGS@
-
-AM_CFLAGS = -DHAVE_DIX_CONFIG_H
-
-noinst_LTLIBRARIES = libkdrive.la libkdrivestubs.la
-
-if XV
-KDRIVE_XV_SOURCES = \
- kxv.c \
- kxv.h
-endif
-
-libkdrive_la_SOURCES = \
- fourcc.h \
- kcmap.c \
- kdrive.c \
- kdrive.h \
- kinfo.c \
- kinput.c \
- kmode.c \
- kshadow.c \
- $(KDRIVE_XV_SOURCES) \
- $(top_srcdir)/mi/miinitext.c
-
-libkdrivestubs_la_SOURCES = \
- $(top_srcdir)/fb/fbcmap_mi.c
+INCLUDES = \
+ @KDRIVE_INCS@ \
+ @KDRIVE_CFLAGS@
+
+AM_CFLAGS = -DHAVE_DIX_CONFIG_H
+
+noinst_LTLIBRARIES = libkdrive.la libkdrivestubs.la
+
+if XV
+KDRIVE_XV_SOURCES = \
+ kxv.c \
+ kxv.h
+endif
+
+libkdrive_la_SOURCES = \
+ fourcc.h \
+ kcmap.c \
+ kdrive.c \
+ kdrive.h \
+ kinfo.c \
+ kinput.c \
+ kmode.c \
+ kshadow.c \
+ $(KDRIVE_XV_SOURCES) \
+ $(top_srcdir)/mi/miinitext.c
+
+libkdrivestubs_la_SOURCES = \
+ $(top_srcdir)/fb/fbcmap_mi.c
diff --git a/xorg-server/hw/kdrive/src/kdrive.c b/xorg-server/hw/kdrive/src/kdrive.c
index 223a59ad0..ee6895ca0 100644
--- a/xorg-server/hw/kdrive/src/kdrive.c
+++ b/xorg-server/hw/kdrive/src/kdrive.c
@@ -608,7 +608,7 @@ KdCreateScreenResources(ScreenPtr pScreen)
}
Bool
-KdCloseScreen(int index, ScreenPtr pScreen)
+KdCloseScreen(ScreenPtr pScreen)
{
KdScreenPriv(pScreen);
KdScreenInfo *screen = pScreenPriv->screen;
@@ -618,7 +618,7 @@ KdCloseScreen(int index, ScreenPtr pScreen)
pScreenPriv->closed = TRUE;
pScreen->CloseScreen = pScreenPriv->CloseScreen;
if (pScreen->CloseScreen)
- ret = (*pScreen->CloseScreen) (index, pScreen);
+ ret = (*pScreen->CloseScreen) (pScreen);
else
ret = TRUE;
@@ -778,7 +778,7 @@ KdSetSubpixelOrder(ScreenPtr pScreen, Rotation randr)
static KdScreenInfo *kdCurrentScreen;
Bool
-KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
+KdScreenInit(ScreenPtr pScreen, int argc, char **argv)
{
KdScreenInfo *screen = kdCurrentScreen;
KdCardInfo *card = screen->card;
diff --git a/xorg-server/hw/kdrive/src/kdrive.h b/xorg-server/hw/kdrive/src/kdrive.h
index c20a0846a..a082acef3 100644
--- a/xorg-server/hw/kdrive/src/kdrive.h
+++ b/xorg-server/hw/kdrive/src/kdrive.h
@@ -442,13 +442,13 @@ Bool
KdCreateScreenResources(ScreenPtr pScreen);
Bool
- KdCloseScreen(int index, ScreenPtr pScreen);
+ KdCloseScreen(ScreenPtr pScreen);
Bool
KdSaveScreen(ScreenPtr pScreen, int on);
Bool
- KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv);
+ KdScreenInit(ScreenPtr pScreen, int argc, char **argv);
void
@@ -537,12 +537,12 @@ void
void
-KdBlockHandler(int screen,
+KdBlockHandler(ScreenPtr pScreen,
pointer blockData, pointer timeout, pointer readmask);
void
-KdWakeupHandler(int screen,
+KdWakeupHandler(ScreenPtr pScreen,
pointer data, unsigned long result, pointer readmask);
void
diff --git a/xorg-server/hw/kdrive/src/kinput.c b/xorg-server/hw/kdrive/src/kinput.c
index 0f2a4ae0f..d94af6d0d 100644
--- a/xorg-server/hw/kdrive/src/kinput.c
+++ b/xorg-server/hw/kdrive/src/kinput.c
@@ -1995,7 +1995,7 @@ _KdEnqueuePointerEvent(KdPointerInfo * pi, int type, int x, int y, int z,
}
void
-KdBlockHandler(int screen, pointer blockData, pointer timeout, pointer readmask)
+KdBlockHandler(ScreenPtr pScreen, pointer blockData, pointer timeout, pointer readmask)
{
KdPointerInfo *pi;
int myTimeout = 0;
@@ -2021,7 +2021,7 @@ KdBlockHandler(int screen, pointer blockData, pointer timeout, pointer readmask)
}
void
-KdWakeupHandler(int screen,
+KdWakeupHandler(ScreenPtr pScreen,
pointer data, unsigned long lresult, pointer readmask)
{
int result = (int) lresult;
diff --git a/xorg-server/hw/kdrive/src/kxv.c b/xorg-server/hw/kdrive/src/kxv.c
index 7097aee5c..b02dd88f2 100644
--- a/xorg-server/hw/kdrive/src/kxv.c
+++ b/xorg-server/hw/kdrive/src/kxv.c
@@ -58,7 +58,7 @@ of the copyright holder.
/* XvScreenRec fields */
-static Bool KdXVCloseScreen(int, ScreenPtr);
+static Bool KdXVCloseScreen(ScreenPtr);
static int KdXVQueryAdaptors(ScreenPtr, XvAdaptorPtr *, int *);
/* XvAdaptorRec fields */
@@ -1118,7 +1118,7 @@ KdXVClipNotify(WindowPtr pWin, int dx, int dy)
/**** Required XvScreenRec fields ****/
static Bool
-KdXVCloseScreen(int i, ScreenPtr pScreen)
+KdXVCloseScreen(ScreenPtr pScreen)
{
XvScreenPtr pxvs = GET_XV_SCREEN(pScreen);
KdXVScreenPtr ScreenPriv = GET_KDXV_SCREEN(pScreen);
diff --git a/xorg-server/hw/vfb/.gitignore b/xorg-server/hw/vfb/.gitignore
new file mode 100644
index 000000000..c04754124
--- /dev/null
+++ b/xorg-server/hw/vfb/.gitignore
@@ -0,0 +1 @@
+Xvfb
diff --git a/xorg-server/hw/vfb/InitOutput.c b/xorg-server/hw/vfb/InitOutput.c
index 16edf4307..955624f3d 100644
--- a/xorg-server/hw/vfb/InitOutput.c
+++ b/xorg-server/hw/vfb/InitOutput.c
@@ -760,9 +760,9 @@ static miPointerScreenFuncRec vfbPointerCursorFuncs = {
};
static Bool
-vfbCloseScreen(int index, ScreenPtr pScreen)
+vfbCloseScreen(ScreenPtr pScreen)
{
- vfbScreenInfoPtr pvfb = &vfbScreens[index];
+ vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
int i;
pScreen->CloseScreen = pvfb->closeScreen;
@@ -781,13 +781,13 @@ vfbCloseScreen(int index, ScreenPtr pScreen)
(*pScreen->DestroyPixmap) (pScreen->devPrivate);
pScreen->devPrivate = NULL;
- return pScreen->CloseScreen(index, pScreen);
+ return pScreen->CloseScreen(pScreen);
}
static Bool
-vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
+vfbScreenInit(ScreenPtr pScreen, int argc, char **argv)
{
- vfbScreenInfoPtr pvfb = &vfbScreens[index];
+ vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];
int dpix = monitorResolution, dpiy = monitorResolution;
int ret;
char *pbits;
diff --git a/xorg-server/hw/xfree86/.gitignore b/xorg-server/hw/xfree86/.gitignore
new file mode 100644
index 000000000..997a94efe
--- /dev/null
+++ b/xorg-server/hw/xfree86/.gitignore
@@ -0,0 +1,4 @@
+Xorg
+xorg.conf.example
+sdksyms.c
+sdksyms.dep
diff --git a/xorg-server/hw/xfree86/common/.gitignore b/xorg-server/hw/xfree86/common/.gitignore
new file mode 100644
index 000000000..3262e2f37
--- /dev/null
+++ b/xorg-server/hw/xfree86/common/.gitignore
@@ -0,0 +1,3 @@
+# Add & Override for this directory and it's subdirectories
+xf86Build.h
+xf86DefModeSet.c
diff --git a/xorg-server/hw/xfree86/common/extramodes b/xorg-server/hw/xfree86/common/extramodes
index 450502670..fdabb709a 100644
--- a/xorg-server/hw/xfree86/common/extramodes
+++ b/xorg-server/hw/xfree86/common/extramodes
@@ -1,27 +1,27 @@
-//
-// Extra modes to include as default modes in the X server.
-//
-// $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $
-//
-
-# 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz
-ModeLine "832x624" 57.284 832 864 928 1152 624 625 628 667 -Hsync -Vsync
-
-# 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz
-ModeLine "1400x1050" 122.0 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync
-
-# 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz
-ModeLine "1400x1050" 155.8 1400 1464 1784 1912 1050 1052 1064 1090 +hsync +vsync
-
-# 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz
-Modeline "1920x1440" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync
-
-# 2048x1536 @ 60Hz (VESA GTF) hsync: 95.3kHz
-Modeline "2048x1536" 266.95 2048 2200 2424 2800 1536 1537 1540 1589 -hsync +vsync
-
-# 2048x1536 @ 75Hz (VESA GTF) hsync: 120.2kHz
-Modeline "2048x1536" 340.48 2048 2216 2440 2832 1536 1537 1540 1603 -hsync +vsync
-
-# 2048x1536 @ 85Hz (VESA GTF) hsync: 137.0kHz
-Modeline "2048x1536" 388.04 2048 2216 2440 2832 1536 1537 1540 1612 -hsync +vsync
-
+//
+// Extra modes to include as default modes in the X server.
+//
+// $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $
+//
+
+# 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz
+ModeLine "832x624" 57.284 832 864 928 1152 624 625 628 667 -Hsync -Vsync
+
+# 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz
+ModeLine "1400x1050" 122.0 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync
+
+# 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz
+ModeLine "1400x1050" 155.8 1400 1464 1784 1912 1050 1052 1064 1090 +hsync +vsync
+
+# 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz
+Modeline "1920x1440" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync
+
+# 2048x1536 @ 60Hz (VESA GTF) hsync: 95.3kHz
+Modeline "2048x1536" 266.95 2048 2200 2424 2800 1536 1537 1540 1589 -hsync +vsync
+
+# 2048x1536 @ 75Hz (VESA GTF) hsync: 120.2kHz
+Modeline "2048x1536" 340.48 2048 2216 2440 2832 1536 1537 1540 1603 -hsync +vsync
+
+# 2048x1536 @ 85Hz (VESA GTF) hsync: 137.0kHz
+Modeline "2048x1536" 388.04 2048 2216 2440 2832 1536 1537 1540 1612 -hsync +vsync
+
diff --git a/xorg-server/hw/xfree86/common/modeline2c.awk b/xorg-server/hw/xfree86/common/modeline2c.awk
index 038e7e935..a85d36c58 100644
--- a/xorg-server/hw/xfree86/common/modeline2c.awk
+++ b/xorg-server/hw/xfree86/common/modeline2c.awk
@@ -1,93 +1,93 @@
-#!/usr/bin/awk -f
-#
-# Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
-# All rights reserved.
-#
-# Based on Perl script by Dirk Hohndel.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# Usage: modeline2c.awk < modefile > xf86DefModeSet.c
-#
-
-BEGIN {
- flagsdict[""] = "0"
-
- flagsdict["+hsync +vsync"] = "V_PHSYNC | V_PVSYNC"
- flagsdict["+hsync -vsync"] = "V_PHSYNC | V_NVSYNC"
- flagsdict["-hsync +vsync"] = "V_NHSYNC | V_PVSYNC"
- flagsdict["-hsync -vsync"] = "V_NHSYNC | V_NVSYNC"
- flagsdict["+hsync +vsync interlace"] = "V_PHSYNC | V_PVSYNC | V_INTERLACE"
- flagsdict["+hsync -vsync interlace"] = "V_PHSYNC | V_NVSYNC | V_INTERLACE"
- flagsdict["-hsync +vsync interlace"] = "V_NHSYNC | V_PVSYNC | V_INTERLACE"
- flagsdict["-hsync -vsync interlace"] = "V_NHSYNC | V_NVSYNC | V_INTERLACE"
-
- print "/* THIS FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT -- LOOK at"
- print " * modeline2c.awk */"
- print ""
- print "/*"
- print " * Author: Joerg Sonnenberger <joerg@NetBSD.org>"
- print " * Based on Perl script from Dirk Hohndel <hohndel@XFree86.Org>"
- print " */"
- print ""
- print "#ifdef HAVE_XORG_CONFIG_H"
- print "#include <xorg-config.h>"
- print "#endif"
- print ""
- print "#include \"xf86.h\""
- print "#include \"xf86Config.h\""
- print "#include \"xf86Priv.h\""
- print "#include \"xf86_OSlib.h\""
- print ""
- print "#include \"globals.h\""
- print ""
- print "#define MODEPREFIX NULL, NULL, NULL, MODE_OK, M_T_DEFAULT"
- print "#define MODESUFFIX 0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,0,NULL,0,0.0,0.0"
- print ""
- print "const DisplayModeRec xf86DefaultModes [] = {"
-
- modeline = "\t{MODEPREFIX,%d, %d,%d,%d,%d,0, %d,%d,%d,%d,0, %s, MODESUFFIX},\n"
- modeline_data = "^[a-zA-Z]+[ \t]+[^ \t]+[ \t0-9.]+"
-}
-
-/^[mM][oO][dD][eE][lL][iI][nN][eE]/ {
- flags = $0
- gsub(modeline_data, "", flags)
- flags = tolower(flags)
- printf(modeline, $3 * 1000, $4, $5, $6, $7,
- $8, $9, $10, $11, flagsdict[flags])
- # Half-width double scanned modes
- printf(modeline, $3 * 500, $4/2, $5/2, $6/2, $7/2,
- $8/2, $9/2, $10/2, $11/2, flagsdict[flags] " | V_DBLSCAN")
-}
-
-/^#/ {
- print "/*" substr($0, 2) " */"
-}
-
-END {
- print "};"
- printf "const int xf86NumDefaultModes = sizeof(xf86DefaultModes) / sizeof(DisplayModeRec);"
-}
+#!/usr/bin/awk -f
+#
+# Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
+# All rights reserved.
+#
+# Based on Perl script by Dirk Hohndel.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# Usage: modeline2c.awk < modefile > xf86DefModeSet.c
+#
+
+BEGIN {
+ flagsdict[""] = "0"
+
+ flagsdict["+hsync +vsync"] = "V_PHSYNC | V_PVSYNC"
+ flagsdict["+hsync -vsync"] = "V_PHSYNC | V_NVSYNC"
+ flagsdict["-hsync +vsync"] = "V_NHSYNC | V_PVSYNC"
+ flagsdict["-hsync -vsync"] = "V_NHSYNC | V_NVSYNC"
+ flagsdict["+hsync +vsync interlace"] = "V_PHSYNC | V_PVSYNC | V_INTERLACE"
+ flagsdict["+hsync -vsync interlace"] = "V_PHSYNC | V_NVSYNC | V_INTERLACE"
+ flagsdict["-hsync +vsync interlace"] = "V_NHSYNC | V_PVSYNC | V_INTERLACE"
+ flagsdict["-hsync -vsync interlace"] = "V_NHSYNC | V_NVSYNC | V_INTERLACE"
+
+ print "/* THIS FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT -- LOOK at"
+ print " * modeline2c.awk */"
+ print ""
+ print "/*"
+ print " * Author: Joerg Sonnenberger <joerg@NetBSD.org>"
+ print " * Based on Perl script from Dirk Hohndel <hohndel@XFree86.Org>"
+ print " */"
+ print ""
+ print "#ifdef HAVE_XORG_CONFIG_H"
+ print "#include <xorg-config.h>"
+ print "#endif"
+ print ""
+ print "#include \"xf86.h\""
+ print "#include \"xf86Config.h\""
+ print "#include \"xf86Priv.h\""
+ print "#include \"xf86_OSlib.h\""
+ print ""
+ print "#include \"globals.h\""
+ print ""
+ print "#define MODEPREFIX NULL, NULL, NULL, MODE_OK, M_T_DEFAULT"
+ print "#define MODESUFFIX 0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,0,NULL,0,0.0,0.0"
+ print ""
+ print "const DisplayModeRec xf86DefaultModes [] = {"
+
+ modeline = "\t{MODEPREFIX,%d, %d,%d,%d,%d,0, %d,%d,%d,%d,0, %s, MODESUFFIX},\n"
+ modeline_data = "^[a-zA-Z]+[ \t]+[^ \t]+[ \t0-9.]+"
+}
+
+/^[mM][oO][dD][eE][lL][iI][nN][eE]/ {
+ flags = $0
+ gsub(modeline_data, "", flags)
+ flags = tolower(flags)
+ printf(modeline, $3 * 1000, $4, $5, $6, $7,
+ $8, $9, $10, $11, flagsdict[flags])
+ # Half-width double scanned modes
+ printf(modeline, $3 * 500, $4/2, $5/2, $6/2, $7/2,
+ $8/2, $9/2, $10/2, $11/2, flagsdict[flags] " | V_DBLSCAN")
+}
+
+/^#/ {
+ print "/*" substr($0, 2) " */"
+}
+
+END {
+ print "};"
+ printf "const int xf86NumDefaultModes = sizeof(xf86DefaultModes) / sizeof(DisplayModeRec);"
+}
diff --git a/xorg-server/hw/xfree86/common/vesamodes b/xorg-server/hw/xfree86/common/vesamodes
index 2bc886276..6644ee6ae 100644
--- a/xorg-server/hw/xfree86/common/vesamodes
+++ b/xorg-server/hw/xfree86/common/vesamodes
@@ -1,111 +1,111 @@
-//
-// Default modes distilled from
-// "VESA and Industry Standards and Guide for Computer Display Monitor
-// Timing", version 1.0, revision 0.8, adopted September 17, 1998.
-//
-// $XFree86: xc/programs/Xserver/hw/xfree86/etc/vesamodes,v 1.3 1999/11/16 03:28:03 tsi Exp $
-
-
-# 640x350 @ 85Hz (VESA) hsync: 37.9kHz
-ModeLine "640x350" 31.5 640 672 736 832 350 382 385 445 +hsync -vsync
-
-# 640x400 @ 85Hz (VESA) hsync: 37.9kHz
-ModeLine "640x400" 31.5 640 672 736 832 400 401 404 445 -hsync +vsync
-
-# 720x400 @ 85Hz (VESA) hsync: 37.9kHz
-ModeLine "720x400" 35.5 720 756 828 936 400 401 404 446 -hsync +vsync
-
-# 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
-ModeLine "640x480" 25.175 640 656 752 800 480 490 492 525 -hsync -vsync
-
-# 640x480 @ 72Hz (VESA) hsync: 37.9kHz
-ModeLine "640x480" 31.5 640 664 704 832 480 489 492 520 -hsync -vsync
-
-# 640x480 @ 75Hz (VESA) hsync: 37.5kHz
-ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
-
-# 640x480 @ 85Hz (VESA) hsync: 43.3kHz
-ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
-
-# 800x600 @ 56Hz (VESA) hsync: 35.2kHz
-ModeLine "800x600" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync
-
-# 800x600 @ 60Hz (VESA) hsync: 37.9kHz
-ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync
-
-# 800x600 @ 72Hz (VESA) hsync: 48.1kHz
-ModeLine "800x600" 50.0 800 856 976 1040 600 637 643 666 +hsync +vsync
-
-# 800x600 @ 75Hz (VESA) hsync: 46.9kHz
-ModeLine "800x600" 49.5 800 816 896 1056 600 601 604 625 +hsync +vsync
-
-# 800x600 @ 85Hz (VESA) hsync: 53.7kHz
-ModeLine "800x600" 56.3 800 832 896 1048 600 601 604 631 +hsync +vsync
-
-# 1024x768i @ 43Hz (industry standard) hsync: 35.5kHz
-ModeLine "1024x768" 44.9 1024 1032 1208 1264 768 768 776 817 +hsync +vsync Interlace
-
-# 1024x768 @ 60Hz (VESA) hsync: 48.4kHz
-ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
-
-# 1024x768 @ 70Hz (VESA) hsync: 56.5kHz
-ModeLine "1024x768" 75.0 1024 1048 1184 1328 768 771 777 806 -hsync -vsync
-
-# 1024x768 @ 75Hz (VESA) hsync: 60.0kHz
-ModeLine "1024x768" 78.75 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
-
-# 1024x768 @ 85Hz (VESA) hsync: 68.7kHz
-ModeLine "1024x768" 94.5 1024 1072 1168 1376 768 769 772 808 +hsync +vsync
-
-# 1152x864 @ 75Hz (VESA) hsync: 67.5kHz
-ModeLine "1152x864" 108.0 1152 1216 1344 1600 864 865 868 900 +hsync +vsync
-
-# 1280x960 @ 60Hz (VESA) hsync: 60.0kHz
-ModeLine "1280x960" 108.0 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync
-
-# 1280x960 @ 85Hz (VESA) hsync: 85.9kHz
-ModeLine "1280x960" 148.5 1280 1344 1504 1728 960 961 964 1011 +hsync +vsync
-
-# 1280x1024 @ 60Hz (VESA) hsync: 64.0kHz
-ModeLine "1280x1024" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
-
-# 1280x1024 @ 75Hz (VESA) hsync: 80.0kHz
-ModeLine "1280x1024" 135.0 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync
-
-# 1280x1024 @ 85Hz (VESA) hsync: 91.1kHz
-ModeLine "1280x1024" 157.5 1280 1344 1504 1728 1024 1025 1028 1072 +hsync +vsync
-
-# 1600x1200 @ 60Hz (VESA) hsync: 75.0kHz
-ModeLine "1600x1200" 162.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
-
-# 1600x1200 @ 65Hz (VESA) hsync: 81.3kHz
-ModeLine "1600x1200" 175.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
-
-# 1600x1200 @ 70Hz (VESA) hsync: 87.5kHz
-ModeLine "1600x1200" 189.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
-
-# 1600x1200 @ 75Hz (VESA) hsync: 93.8kHz
-ModeLine "1600x1200" 202.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
-
-# 1600x1200 @ 85Hz (VESA) hsync: 106.3kHz
-ModeLine "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
-
-# 1792x1344 @ 60Hz (VESA) hsync: 83.6kHz
-ModeLine "1792x1344" 204.8 1792 1920 2120 2448 1344 1345 1348 1394 -hsync +vsync
-
-# 1792x1344 @ 75Hz (VESA) hsync: 106.3kHz
-ModeLine "1792x1344" 261.0 1792 1888 2104 2456 1344 1345 1348 1417 -hsync +vsync
-
-# 1856x1392 @ 60Hz (VESA) hsync: 86.3kHz
-ModeLine "1856x1392" 218.3 1856 1952 2176 2528 1392 1393 1396 1439 -hsync +vsync
-
-# 1856x1392 @ 75Hz (VESA) hsync: 112.5kHz
-ModeLine "1856x1392" 288.0 1856 1984 2208 2560 1392 1393 1396 1500 -hsync +vsync
-
-# 1920x1440 @ 60Hz (VESA) hsync: 90.0kHz
-ModeLine "1920x1440" 234.0 1920 2048 2256 2600 1440 1441 1444 1500 -hsync +vsync
-
-# 1920x1440 @ 75Hz (VESA) hsync: 112.5kHz
-ModeLine "1920x1440" 297.0 1920 2064 2288 2640 1440 1441 1444 1500 -hsync +vsync
-
-
+//
+// Default modes distilled from
+// "VESA and Industry Standards and Guide for Computer Display Monitor
+// Timing", version 1.0, revision 0.8, adopted September 17, 1998.
+//
+// $XFree86: xc/programs/Xserver/hw/xfree86/etc/vesamodes,v 1.3 1999/11/16 03:28:03 tsi Exp $
+
+
+# 640x350 @ 85Hz (VESA) hsync: 37.9kHz
+ModeLine "640x350" 31.5 640 672 736 832 350 382 385 445 +hsync -vsync
+
+# 640x400 @ 85Hz (VESA) hsync: 37.9kHz
+ModeLine "640x400" 31.5 640 672 736 832 400 401 404 445 -hsync +vsync
+
+# 720x400 @ 85Hz (VESA) hsync: 37.9kHz
+ModeLine "720x400" 35.5 720 756 828 936 400 401 404 446 -hsync +vsync
+
+# 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
+ModeLine "640x480" 25.175 640 656 752 800 480 490 492 525 -hsync -vsync
+
+# 640x480 @ 72Hz (VESA) hsync: 37.9kHz
+ModeLine "640x480" 31.5 640 664 704 832 480 489 492 520 -hsync -vsync
+
+# 640x480 @ 75Hz (VESA) hsync: 37.5kHz
+ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
+
+# 640x480 @ 85Hz (VESA) hsync: 43.3kHz
+ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
+
+# 800x600 @ 56Hz (VESA) hsync: 35.2kHz
+ModeLine "800x600" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync
+
+# 800x600 @ 60Hz (VESA) hsync: 37.9kHz
+ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync
+
+# 800x600 @ 72Hz (VESA) hsync: 48.1kHz
+ModeLine "800x600" 50.0 800 856 976 1040 600 637 643 666 +hsync +vsync
+
+# 800x600 @ 75Hz (VESA) hsync: 46.9kHz
+ModeLine "800x600" 49.5 800 816 896 1056 600 601 604 625 +hsync +vsync
+
+# 800x600 @ 85Hz (VESA) hsync: 53.7kHz
+ModeLine "800x600" 56.3 800 832 896 1048 600 601 604 631 +hsync +vsync
+
+# 1024x768i @ 43Hz (industry standard) hsync: 35.5kHz
+ModeLine "1024x768" 44.9 1024 1032 1208 1264 768 768 776 817 +hsync +vsync Interlace
+
+# 1024x768 @ 60Hz (VESA) hsync: 48.4kHz
+ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
+
+# 1024x768 @ 70Hz (VESA) hsync: 56.5kHz
+ModeLine "1024x768" 75.0 1024 1048 1184 1328 768 771 777 806 -hsync -vsync
+
+# 1024x768 @ 75Hz (VESA) hsync: 60.0kHz
+ModeLine "1024x768" 78.75 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
+
+# 1024x768 @ 85Hz (VESA) hsync: 68.7kHz
+ModeLine "1024x768" 94.5 1024 1072 1168 1376 768 769 772 808 +hsync +vsync
+
+# 1152x864 @ 75Hz (VESA) hsync: 67.5kHz
+ModeLine "1152x864" 108.0 1152 1216 1344 1600 864 865 868 900 +hsync +vsync
+
+# 1280x960 @ 60Hz (VESA) hsync: 60.0kHz
+ModeLine "1280x960" 108.0 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync
+
+# 1280x960 @ 85Hz (VESA) hsync: 85.9kHz
+ModeLine "1280x960" 148.5 1280 1344 1504 1728 960 961 964 1011 +hsync +vsync
+
+# 1280x1024 @ 60Hz (VESA) hsync: 64.0kHz
+ModeLine "1280x1024" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
+
+# 1280x1024 @ 75Hz (VESA) hsync: 80.0kHz
+ModeLine "1280x1024" 135.0 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync
+
+# 1280x1024 @ 85Hz (VESA) hsync: 91.1kHz
+ModeLine "1280x1024" 157.5 1280 1344 1504 1728 1024 1025 1028 1072 +hsync +vsync
+
+# 1600x1200 @ 60Hz (VESA) hsync: 75.0kHz
+ModeLine "1600x1200" 162.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
+
+# 1600x1200 @ 65Hz (VESA) hsync: 81.3kHz
+ModeLine "1600x1200" 175.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
+
+# 1600x1200 @ 70Hz (VESA) hsync: 87.5kHz
+ModeLine "1600x1200" 189.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
+
+# 1600x1200 @ 75Hz (VESA) hsync: 93.8kHz
+ModeLine "1600x1200" 202.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
+
+# 1600x1200 @ 85Hz (VESA) hsync: 106.3kHz
+ModeLine "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
+
+# 1792x1344 @ 60Hz (VESA) hsync: 83.6kHz
+ModeLine "1792x1344" 204.8 1792 1920 2120 2448 1344 1345 1348 1394 -hsync +vsync
+
+# 1792x1344 @ 75Hz (VESA) hsync: 106.3kHz
+ModeLine "1792x1344" 261.0 1792 1888 2104 2456 1344 1345 1348 1417 -hsync +vsync
+
+# 1856x1392 @ 60Hz (VESA) hsync: 86.3kHz
+ModeLine "1856x1392" 218.3 1856 1952 2176 2528 1392 1393 1396 1439 -hsync +vsync
+
+# 1856x1392 @ 75Hz (VESA) hsync: 112.5kHz
+ModeLine "1856x1392" 288.0 1856 1984 2208 2560 1392 1393 1396 1500 -hsync +vsync
+
+# 1920x1440 @ 60Hz (VESA) hsync: 90.0kHz
+ModeLine "1920x1440" 234.0 1920 2048 2256 2600 1440 1441 1444 1500 -hsync +vsync
+
+# 1920x1440 @ 75Hz (VESA) hsync: 112.5kHz
+ModeLine "1920x1440" 297.0 1920 2064 2288 2640 1440 1441 1444 1500 -hsync +vsync
+
+
diff --git a/xorg-server/hw/xfree86/common/xf86.h b/xorg-server/hw/xfree86/common/xf86.h
index 0eb000d41..129660d81 100644
--- a/xorg-server/hw/xfree86/common/xf86.h
+++ b/xorg-server/hw/xfree86/common/xf86.h
@@ -244,7 +244,7 @@ extern _X_EXPORT void xf86AddDriver(DriverPtr driver, pointer module,
int flags);
extern _X_EXPORT void xf86DeleteDriver(int drvIndex);
extern _X_EXPORT ScrnInfoPtr xf86AllocateScreen(DriverPtr drv, int flags);
-extern _X_EXPORT void xf86DeleteScreen(int scrnIndex, int flags);
+extern _X_EXPORT void xf86DeleteScreen(ScrnInfoPtr pScrn);
extern _X_EXPORT int xf86AllocateScrnInfoPrivateIndex(void);
extern _X_EXPORT Bool xf86AddPixFormat(ScrnInfoPtr pScrn, int depth, int bpp,
int pad);
@@ -256,7 +256,7 @@ extern _X_EXPORT Bool xf86SetDefaultVisual(ScrnInfoPtr scrp, int visual);
extern _X_EXPORT Bool xf86SetGamma(ScrnInfoPtr scrp, Gamma newGamma);
extern _X_EXPORT void xf86SetDpi(ScrnInfoPtr pScrn, int x, int y);
extern _X_EXPORT void xf86SetBlackWhitePixels(ScreenPtr pScreen);
-extern _X_EXPORT void xf86EnableDisableFBAccess(int scrnIndex, Bool enable);
+extern _X_EXPORT void xf86EnableDisableFBAccess(ScrnInfoPtr pScrn, Bool enable);
extern _X_EXPORT void
xf86VDrvMsgVerb(int scrnIndex, MessageType type, int verb,
const char *format, va_list args)
@@ -347,7 +347,7 @@ xf86SetBackingStore(ScreenPtr pScreen);
extern _X_EXPORT void
xf86SetSilkenMouse(ScreenPtr pScreen);
extern _X_EXPORT pointer
-xf86FindXvOptions(int scrnIndex, int adapt_index, char *port_name,
+xf86FindXvOptions(ScrnInfoPtr pScrn, int adapt_index, char *port_name,
char **adaptor_name, pointer *adaptor_options);
extern _X_EXPORT void
xf86GetOS(const char **name, int *major, int *minor, int *teeny);
@@ -357,7 +357,7 @@ xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag,
EntityProc enter, EntityProc leave, pointer private);
extern _X_EXPORT Bool
-xf86IsScreenPrimary(int scrnIndex);
+xf86IsScreenPrimary(ScrnInfoPtr pScrn);
extern _X_EXPORT int
xf86RegisterRootWindowProperty(int ScrnIndex, Atom property, Atom type,
int format, unsigned long len, pointer value);
@@ -458,4 +458,6 @@ extern _X_EXPORT ScreenPtr xf86ScrnToScreen(ScrnInfoPtr pScrn);
#define XF86_HAS_SCRN_CONV 1 /* define for drivers to use in api compat */
+#define XF86_SCRN_INTERFACE 1 /* define for drivers to use in api compat */
+
#endif /* _XF86_H */
diff --git a/xorg-server/hw/xfree86/common/xf86Build.h.in b/xorg-server/hw/xfree86/common/xf86Build.h.in
index a4f56b0ae..f4af80637 100644
--- a/xorg-server/hw/xfree86/common/xf86Build.h.in
+++ b/xorg-server/hw/xfree86/common/xf86Build.h.in
@@ -1,2 +1,2 @@
-#define BUILD_DATE @BUILD_DATE@
-#define BUILD_TIME @BUILD_TIME@
+#define BUILD_DATE @BUILD_DATE@
+#define BUILD_TIME @BUILD_TIME@
diff --git a/xorg-server/hw/xfree86/common/xf86Bus.c b/xorg-server/hw/xfree86/common/xf86Bus.c
index b8764344b..6c86f5e26 100644
--- a/xorg-server/hw/xfree86/common/xf86Bus.c
+++ b/xorg-server/hw/xfree86/common/xf86Bus.c
@@ -179,7 +179,7 @@ xf86BusConfig(void)
xf86Msg(X_ERROR,
"Screen %d deleted because of no matching config section.\n",
i);
- xf86DeleteScreen(i--, 0);
+ xf86DeleteScreen(xf86Screens[i--]);
}
}
@@ -377,13 +377,12 @@ xf86RemoveEntityFromScreen(ScrnInfoPtr pScrn, int entityIndex)
}
/*
- * xf86ClearEntitiesForScreen() - called when a screen is deleted
+ * xf86ClearEntityListForScreen() - called when a screen is deleted
* to mark it's entities unused. Called by xf86DeleteScreen().
*/
void
-xf86ClearEntityListForScreen(int scrnIndex)
+xf86ClearEntityListForScreen(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
int i, entityIndex;
if (pScrn->entityList == NULL || pScrn->numEntities == 0)
diff --git a/xorg-server/hw/xfree86/common/xf86Cursor.c b/xorg-server/hw/xfree86/common/xf86Cursor.c
index 61cae6aa7..c01cfd138 100644
--- a/xorg-server/hw/xfree86/common/xf86Cursor.c
+++ b/xorg-server/hw/xfree86/common/xf86Cursor.c
@@ -66,7 +66,7 @@ static Bool xf86CursorOffScreen(ScreenPtr *pScreen, int *x, int *y);
static void xf86CrossScreen(ScreenPtr pScreen, Bool entering);
static void xf86WarpCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y);
-static void xf86PointerMoved(int scrnIndex, int x, int y);
+static void xf86PointerMoved(ScrnInfoPtr pScrn, int x, int y);
static miPointerScreenFuncRec xf86PointerScreenFuncs = {
xf86CursorOffScreen,
@@ -135,14 +135,13 @@ xf86SetViewport(ScreenPtr pScreen, int x, int y)
{
ScrnInfoPtr pScr = xf86ScreenToScrn(pScreen);
- (*pScr->PointerMoved) (pScreen->myNum, x, y);
+ (*pScr->PointerMoved) (pScr, x, y);
}
static void
-xf86PointerMoved(int scrnIndex, int x, int y)
+xf86PointerMoved(ScrnInfoPtr pScr, int x, int y)
{
Bool frameChanged = FALSE;
- ScrnInfoPtr pScr = xf86Screens[scrnIndex];
/*
* check wether (x,y) belongs to the visual part of the screen
@@ -173,7 +172,7 @@ xf86PointerMoved(int scrnIndex, int x, int y)
}
if (frameChanged && pScr->AdjustFrame != NULL)
- pScr->AdjustFrame(pScr->scrnIndex, pScr->frameX0, pScr->frameY0, 0);
+ pScr->AdjustFrame(pScr, pScr->frameX0, pScr->frameY0);
}
/*
@@ -230,7 +229,7 @@ xf86SwitchMode(ScreenPtr pScreen, DisplayModePtr mode)
miPointerGetPosition(dev, &px, &py);
was_blocked = xf86BlockSIGIO();
- Switched = (*pScr->SwitchMode) (pScr->scrnIndex, mode, 0);
+ Switched = (*pScr->SwitchMode) (pScr, mode);
if (Switched) {
pScr->currentMode = mode;
@@ -271,7 +270,7 @@ xf86SwitchMode(ScreenPtr pScreen, DisplayModePtr mode)
xf86UnblockSIGIO(was_blocked);
if (pScr->AdjustFrame)
- (*pScr->AdjustFrame) (pScr->scrnIndex, pScr->frameX0, pScr->frameY0, 0);
+ (*pScr->AdjustFrame) (pScr, pScr->frameX0, pScr->frameY0);
/* The original code centered the frame around the cursor if possible.
* Since this is hard to achieve with multiple cursors, we do the following:
diff --git a/xorg-server/hw/xfree86/common/xf86DGA.c b/xorg-server/hw/xfree86/common/xf86DGA.c
index e0314d86e..64163721f 100644
--- a/xorg-server/hw/xfree86/common/xf86DGA.c
+++ b/xorg-server/hw/xfree86/common/xf86DGA.c
@@ -56,7 +56,7 @@ static DevPrivateKeyRec DGAScreenKeyRec;
#define DGAScreenKeyRegistered dixPrivateKeyRegistered(&DGAScreenKeyRec)
static Bool mieq_installed;
-static Bool DGACloseScreen(int i, ScreenPtr pScreen);
+static Bool DGACloseScreen(ScreenPtr pScreen);
static void DGADestroyColormap(ColormapPtr pmap);
static void DGAInstallColormap(ColormapPtr pmap);
static void DGAUninstallColormap(ColormapPtr pmap);
@@ -235,7 +235,7 @@ FreeMarkedVisuals(ScreenPtr pScreen)
}
static Bool
-DGACloseScreen(int i, ScreenPtr pScreen)
+DGACloseScreen(ScreenPtr pScreen)
{
DGAScreenPtr pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
@@ -256,7 +256,7 @@ DGACloseScreen(int i, ScreenPtr pScreen)
free(pScreenPriv);
- return ((*pScreen->CloseScreen) (i, pScreen));
+ return ((*pScreen->CloseScreen) (pScreen));
}
static void
@@ -323,11 +323,10 @@ DGAUninstallColormap(ColormapPtr pmap)
}
int
-xf86SetDGAMode(int index, int num, DGADevicePtr devRet)
+xf86SetDGAMode(ScrnInfoPtr pScrn, int num, DGADevicePtr devRet)
{
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
DGAScreenPtr pScreenPriv;
- ScrnInfoPtr pScrn;
DGADevicePtr device;
PixmapPtr pPix = NULL;
DGAModePtr pMode = NULL;
@@ -338,7 +337,6 @@ xf86SetDGAMode(int index, int num, DGADevicePtr devRet)
pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
if (!pScreenPriv)
return BadValue;
- pScrn = pScreenPriv->pScrn;
if (!num) {
if (pScreenPriv->current) {
@@ -359,7 +357,7 @@ xf86SetDGAMode(int index, int num, DGADevicePtr devRet)
pScreenPriv->savedColormap = NULL;
}
pScreenPriv->dgaColormap = NULL;
- (*pScrn->EnableDisableFBAccess) (index, TRUE);
+ (*pScrn->EnableDisableFBAccess) (pScrn, TRUE);
FreeMarkedVisuals(pScreen);
}
@@ -385,7 +383,7 @@ xf86SetDGAMode(int index, int num, DGADevicePtr devRet)
Bool oldVTSema = pScrn->vtSema;
pScrn->vtSema = FALSE; /* kludge until we rewrite VT switching */
- (*pScrn->EnableDisableFBAccess) (index, FALSE);
+ (*pScrn->EnableDisableFBAccess) (pScrn, FALSE);
pScrn->vtSema = oldVTSema;
}
@@ -564,7 +562,7 @@ DGAShutdown(void)
for (i = 0; i < screenInfo.numScreens; i++) {
pScrn = xf86Screens[i];
- (void) (*pScrn->SetDGAMode) (pScrn->scrnIndex, 0, NULL);
+ (void) (*pScrn->SetDGAMode) (pScrn, 0, NULL);
}
}
@@ -579,7 +577,7 @@ DGASetMode(int index, int num, XDGAModePtr mode, PixmapPtr *pPix)
/* We rely on the extension to check that DGA is available */
- ret = (*pScrn->SetDGAMode) (index, num, &device);
+ ret = (*pScrn->SetDGAMode) (pScrn, num, &device);
if ((ret == Success) && num) {
DGACopyModeInfo(device.mode, mode);
*pPix = device.pPix;
diff --git a/xorg-server/hw/xfree86/common/xf86DPMS.c b/xorg-server/hw/xfree86/common/xf86DPMS.c
index 54ad84243..ef4a2c19b 100644
--- a/xorg-server/hw/xfree86/common/xf86DPMS.c
+++ b/xorg-server/hw/xfree86/common/xf86DPMS.c
@@ -49,7 +49,7 @@
#ifdef DPMSExtension
static DevPrivateKeyRec DPMSKeyRec;
static DevPrivateKey DPMSKey;
-static Bool DPMSClose(int i, ScreenPtr pScreen);
+static Bool DPMSClose(ScreenPtr pScreen);
static int DPMSCount = 0;
#endif
@@ -99,10 +99,10 @@ xf86DPMSInit(ScreenPtr pScreen, DPMSSetProcPtr set, int flags)
#ifdef DPMSExtension
static Bool
-DPMSClose(int i, ScreenPtr pScreen)
+DPMSClose(ScreenPtr pScreen)
{
DPMSPtr pDPMS;
-
+ ScrnInfoPtr pScrn;
/* This shouldn't happen */
if (DPMSKey == NULL)
return FALSE;
@@ -114,20 +114,20 @@ DPMSClose(int i, ScreenPtr pScreen)
return FALSE;
pScreen->CloseScreen = pDPMS->CloseScreen;
-
+ pScrn = xf86ScreenToScrn(pScreen);
/*
* Turn on DPMS when shutting down. If this function can be used
* depends on the order the driver wraps things. If this is called
* after the driver has shut down everything the driver will have
* to deal with this internally.
*/
- if (xf86Screens[i]->vtSema && xf86Screens[i]->DPMSSet) {
- xf86Screens[i]->DPMSSet(xf86Screens[i], DPMSModeOn, 0);
+ if (pScrn->vtSema && pScrn->DPMSSet) {
+ pScrn->DPMSSet(pScrn, DPMSModeOn, 0);
}
if (--DPMSCount == 0)
DPMSKey = NULL;
- return pScreen->CloseScreen(i, pScreen);
+ return pScreen->CloseScreen(pScreen);
}
/*
diff --git a/xorg-server/hw/xfree86/common/xf86Events.c b/xorg-server/hw/xfree86/common/xf86Events.c
index 5896f220c..4fcad4000 100644
--- a/xorg-server/hw/xfree86/common/xf86Events.c
+++ b/xorg-server/hw/xfree86/common/xf86Events.c
@@ -438,7 +438,7 @@ xf86VTSwitch(void)
for (i = 0; i < xf86NumScreens; i++) {
if (!(dispatchException & DE_TERMINATE))
if (xf86Screens[i]->EnableDisableFBAccess)
- (*xf86Screens[i]->EnableDisableFBAccess) (i, FALSE);
+ (*xf86Screens[i]->EnableDisableFBAccess) (xf86Screens[i], FALSE);
}
/*
@@ -459,7 +459,7 @@ xf86VTSwitch(void)
prevSIGIO = xf86BlockSIGIO();
for (i = 0; i < xf86NumScreens; i++)
- xf86Screens[i]->LeaveVT(i, 0);
+ xf86Screens[i]->LeaveVT(xf86Screens[i]);
xf86AccessLeave(); /* We need this here, otherwise */
@@ -471,13 +471,13 @@ xf86VTSwitch(void)
DebugF("xf86VTSwitch: Leave failed\n");
xf86AccessEnter();
for (i = 0; i < xf86NumScreens; i++) {
- if (!xf86Screens[i]->EnterVT(i, 0))
+ if (!xf86Screens[i]->EnterVT(xf86Screens[i]))
FatalError("EnterVT failed for screen %d\n", i);
}
if (!(dispatchException & DE_TERMINATE)) {
for (i = 0; i < xf86NumScreens; i++) {
if (xf86Screens[i]->EnableDisableFBAccess)
- (*xf86Screens[i]->EnableDisableFBAccess) (i, TRUE);
+ (*xf86Screens[i]->EnableDisableFBAccess) (xf86Screens[i], TRUE);
}
}
dixSaveScreens(serverClient, SCREEN_SAVER_FORCER, ScreenSaverReset);
@@ -527,12 +527,12 @@ xf86VTSwitch(void)
xf86AccessEnter();
for (i = 0; i < xf86NumScreens; i++) {
xf86Screens[i]->vtSema = TRUE;
- if (!xf86Screens[i]->EnterVT(i, 0))
+ if (!xf86Screens[i]->EnterVT(xf86Screens[i]))
FatalError("EnterVT failed for screen %d\n", i);
}
for (i = 0; i < xf86NumScreens; i++) {
if (xf86Screens[i]->EnableDisableFBAccess)
- (*xf86Screens[i]->EnableDisableFBAccess) (i, TRUE);
+ (*xf86Screens[i]->EnableDisableFBAccess) (xf86Screens[i], TRUE);
}
/* Turn screen saver off when switching back */
diff --git a/xorg-server/hw/xfree86/common/xf86Helper.c b/xorg-server/hw/xfree86/common/xf86Helper.c
index fb56a0b17..5ef1dabfb 100644
--- a/xorg-server/hw/xfree86/common/xf86Helper.c
+++ b/xorg-server/hw/xfree86/common/xf86Helper.c
@@ -198,24 +198,22 @@ xf86AllocateScreen(DriverPtr drv, int flags)
*/
void
-xf86DeleteScreen(int scrnIndex, int flags)
+xf86DeleteScreen(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn;
int i;
+ int scrnIndex;
/* First check if the screen is valid */
if (xf86NumScreens == 0 || xf86Screens == NULL)
return;
- if (scrnIndex > xf86NumScreens - 1)
- return;
-
- if (!(pScrn = xf86Screens[scrnIndex]))
+ if (!pScrn)
return;
+ scrnIndex = pScrn->scrnIndex;
/* If a FreeScreen function is defined, call it here */
if (pScrn->FreeScreen != NULL)
- pScrn->FreeScreen(scrnIndex, 0);
+ pScrn->FreeScreen(pScrn);
while (pScrn->modes)
xf86DeleteMode(&pScrn->modes, pScrn->modes);
@@ -233,7 +231,7 @@ xf86DeleteScreen(int scrnIndex, int flags)
free(pScrn->privates);
- xf86ClearEntityListForScreen(scrnIndex);
+ xf86ClearEntityListForScreen(pScrn);
free(pScrn);
@@ -1027,9 +1025,8 @@ xf86SetBlackWhitePixels(ScreenPtr pScreen)
* private data, and therefore don't need to access pScrnInfo->vtSema.
*/
void
-xf86EnableDisableFBAccess(int scrnIndex, Bool enable)
+xf86EnableDisableFBAccess(ScrnInfoPtr pScrnInfo, Bool enable)
{
- ScrnInfoPtr pScrnInfo = xf86Screens[scrnIndex];
ScreenPtr pScreen = pScrnInfo->pScreen;
PixmapPtr pspix;
@@ -1651,10 +1648,9 @@ xf86SetSilkenMouse(ScreenPtr pScreen)
/* Wrote this function for the PM2 Xv driver, preliminary. */
pointer
-xf86FindXvOptions(int scrnIndex, int adaptor_index, char *port_name,
+xf86FindXvOptions(ScrnInfoPtr pScrn, int adaptor_index, char *port_name,
char **adaptor_name, pointer *adaptor_options)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
confXvAdaptorPtr adaptor;
int i;
@@ -1726,9 +1722,8 @@ xf86ConfigFbEntity(ScrnInfoPtr pScrn, int scrnFlag, int entityIndex,
}
Bool
-xf86IsScreenPrimary(int scrnIndex)
+xf86IsScreenPrimary(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
int i;
for (i = 0; i < pScrn->numEntities; i++) {
diff --git a/xorg-server/hw/xfree86/common/xf86Init.c b/xorg-server/hw/xfree86/common/xf86Init.c
index ead47ccba..ca6efd44e 100644
--- a/xorg-server/hw/xfree86/common/xf86Init.c
+++ b/xorg-server/hw/xfree86/common/xf86Init.c
@@ -591,7 +591,7 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
}
for (i = 0; i < xf86NumScreens; i++)
if (!xf86Screens[i]->configured)
- xf86DeleteScreen(i--, 0);
+ xf86DeleteScreen(xf86Screens[i--]);
/*
* If no screens left, return now.
@@ -1040,7 +1040,7 @@ AbortDDX(enum ExitCode error)
* screen explicitely.
*/
xf86VGAarbiterLock(xf86Screens[i]);
- (xf86Screens[i]->LeaveVT) (i, 0);
+ (xf86Screens[i]->LeaveVT) (xf86Screens[i]);
xf86VGAarbiterUnlock(xf86Screens[i]);
}
}
diff --git a/xorg-server/hw/xfree86/common/xf86Mode.c b/xorg-server/hw/xfree86/common/xf86Mode.c
index ab4d595c7..d80dec892 100644
--- a/xorg-server/hw/xfree86/common/xf86Mode.c
+++ b/xorg-server/hw/xfree86/common/xf86Mode.c
@@ -950,7 +950,7 @@ xf86InitialCheckModeForDriver(ScrnInfoPtr scrp, DisplayModePtr mode,
mode->SynthClock /= 2;
}
- status = (*scrp->ValidMode) (scrp->scrnIndex, mode, FALSE,
+ status = (*scrp->ValidMode) (scrp, mode, FALSE,
MODECHECK_INITIAL);
if (status != MODE_OK)
return status;
@@ -1840,7 +1840,7 @@ xf86ValidateModes(ScrnInfoPtr scrp, DisplayModePtr availModes,
scrp->virtualX = newVirtX;
scrp->virtualY = newVirtY;
scrp->displayWidth = newLinePitch;
- p->status = (scrp->ValidMode) (scrp->scrnIndex, p, FALSE,
+ p->status = (scrp->ValidMode) (scrp, p, FALSE,
MODECHECK_FINAL);
if (p->status != MODE_OK) {
diff --git a/xorg-server/hw/xfree86/common/xf86Module.h b/xorg-server/hw/xfree86/common/xf86Module.h
index 31f5c6a86..bf56acd05 100644
--- a/xorg-server/hw/xfree86/common/xf86Module.h
+++ b/xorg-server/hw/xfree86/common/xf86Module.h
@@ -82,7 +82,7 @@ typedef enum {
* mask is 0xFFFF0000.
*/
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 4)
-#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(12, 0)
+#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(13, 0)
#define ABI_XINPUT_VERSION SET_ABI_VERSION(17, 0)
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(6, 0)
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 6)
diff --git a/xorg-server/hw/xfree86/common/xf86PM.c b/xorg-server/hw/xfree86/common/xf86PM.c
index f69fffa0e..1830640d5 100644
--- a/xorg-server/hw/xfree86/common/xf86PM.c
+++ b/xorg-server/hw/xfree86/common/xf86PM.c
@@ -102,7 +102,7 @@ suspend(pmEvent event, Bool undo)
for (i = 0; i < xf86NumScreens; i++) {
if (xf86Screens[i]->EnableDisableFBAccess)
- (*xf86Screens[i]->EnableDisableFBAccess) (i, FALSE);
+ (*xf86Screens[i]->EnableDisableFBAccess) (xf86Screens[i], FALSE);
}
pInfo = xf86InputDevs;
while (pInfo) {
@@ -112,9 +112,9 @@ suspend(pmEvent event, Bool undo)
sigio_blocked_for_suspend = xf86BlockSIGIO();
for (i = 0; i < xf86NumScreens; i++) {
if (xf86Screens[i]->PMEvent)
- xf86Screens[i]->PMEvent(i, event, undo);
+ xf86Screens[i]->PMEvent(xf86Screens[i], event, undo);
else {
- xf86Screens[i]->LeaveVT(i, 0);
+ xf86Screens[i]->LeaveVT(xf86Screens[i]);
xf86Screens[i]->vtSema = FALSE;
}
}
@@ -131,16 +131,16 @@ resume(pmEvent event, Bool undo)
xf86AccessEnter();
for (i = 0; i < xf86NumScreens; i++) {
if (xf86Screens[i]->PMEvent)
- xf86Screens[i]->PMEvent(i, event, undo);
+ xf86Screens[i]->PMEvent(xf86Screens[i], event, undo);
else {
xf86Screens[i]->vtSema = TRUE;
- xf86Screens[i]->EnterVT(i, 0);
+ xf86Screens[i]->EnterVT(xf86Screens[i]);
}
}
xf86UnblockSIGIO(sigio_blocked_for_suspend);
for (i = 0; i < xf86NumScreens; i++) {
if (xf86Screens[i]->EnableDisableFBAccess)
- (*xf86Screens[i]->EnableDisableFBAccess) (i, TRUE);
+ (*xf86Screens[i]->EnableDisableFBAccess) (xf86Screens[i], TRUE);
}
dixSaveScreens(serverClient, SCREEN_SAVER_FORCER, ScreenSaverReset);
pInfo = xf86InputDevs;
@@ -187,7 +187,7 @@ DoApmEvent(pmEvent event, Bool undo)
was_blocked = xf86BlockSIGIO();
for (i = 0; i < xf86NumScreens; i++) {
if (xf86Screens[i]->PMEvent) {
- xf86Screens[i]->PMEvent(i, event, undo);
+ xf86Screens[i]->PMEvent(xf86Screens[i], event, undo);
}
}
xf86UnblockSIGIO(was_blocked);
diff --git a/xorg-server/hw/xfree86/common/xf86Priv.h b/xorg-server/hw/xfree86/common/xf86Priv.h
index 6c5efeacc..42a3b30f0 100644
--- a/xorg-server/hw/xfree86/common/xf86Priv.h
+++ b/xorg-server/hw/xfree86/common/xf86Priv.h
@@ -114,7 +114,7 @@ extern _X_EXPORT void xf86BusProbe(void);
extern _X_EXPORT void xf86AccessEnter(void);
extern _X_EXPORT void xf86AccessLeave(void);
extern _X_EXPORT void xf86PostProbe(void);
-extern _X_EXPORT void xf86ClearEntityListForScreen(int scrnIndex);
+extern _X_EXPORT void xf86ClearEntityListForScreen(ScrnInfoPtr pScrn);
extern _X_EXPORT void xf86AddDevToEntity(int entityIndex, GDevPtr dev);
extern _X_EXPORT void xf86RemoveDevFromEntity(int entityIndex, GDevPtr dev);
diff --git a/xorg-server/hw/xfree86/common/xf86RandR.c b/xorg-server/hw/xfree86/common/xf86RandR.c
index b17f601d1..5606bee4b 100644
--- a/xorg-server/hw/xfree86/common/xf86RandR.c
+++ b/xorg-server/hw/xfree86/common/xf86RandR.c
@@ -159,7 +159,7 @@ xf86RandRSetMode(ScreenPtr pScreen,
Bool ret = TRUE;
if (pRoot && scrp->vtSema)
- (*scrp->EnableDisableFBAccess) (pScreen->myNum, FALSE);
+ (*scrp->EnableDisableFBAccess) (scrp, FALSE);
if (useVirtual) {
scrp->virtualX = randrp->virtualX;
scrp->virtualY = randrp->virtualY;
@@ -220,7 +220,7 @@ xf86RandRSetMode(ScreenPtr pScreen,
xf86SetViewport(pScreen, pScreen->width, pScreen->height);
xf86SetViewport(pScreen, 0, 0);
if (pRoot && scrp->vtSema)
- (*scrp->EnableDisableFBAccess) (pScreen->myNum, TRUE);
+ (*scrp->EnableDisableFBAccess) (scrp, TRUE);
return ret;
}
@@ -365,7 +365,7 @@ xf86RandRCreateScreenResources(ScreenPtr pScreen)
* Reset size back to original
*/
static Bool
-xf86RandRCloseScreen(int index, ScreenPtr pScreen)
+xf86RandRCloseScreen(ScreenPtr pScreen)
{
ScrnInfoPtr scrp = xf86ScreenToScrn(pScreen);
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
@@ -376,7 +376,7 @@ xf86RandRCloseScreen(int index, ScreenPtr pScreen)
pScreen->CloseScreen = randrp->CloseScreen;
free(randrp);
dixSetPrivate(&pScreen->devPrivates, xf86RandRKey, NULL);
- return (*pScreen->CloseScreen) (index, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
Rotation
diff --git a/xorg-server/hw/xfree86/common/xf86VGAarbiter.c b/xorg-server/hw/xfree86/common/xf86VGAarbiter.c
index b9b46f6cd..225fff06e 100644
--- a/xorg-server/hw/xfree86/common/xf86VGAarbiter.c
+++ b/xorg-server/hw/xfree86/common/xf86VGAarbiter.c
@@ -221,7 +221,7 @@ xf86VGAarbiterWrapFunctions(void)
/* Screen funcs */
static Bool
-VGAarbiterCloseScreen(int i, ScreenPtr pScreen)
+VGAarbiterCloseScreen(ScreenPtr pScreen)
{
Bool val;
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
@@ -258,34 +258,30 @@ VGAarbiterCloseScreen(int i, ScreenPtr pScreen)
UNWRAP_SPRITE;
free((pointer) pScreenPriv);
- xf86VGAarbiterLock(xf86Screens[i]);
- val = (*pScreen->CloseScreen) (i, pScreen);
- xf86VGAarbiterUnlock(xf86Screens[i]);
+ xf86VGAarbiterLock(xf86ScreenToScrn(pScreen));
+ val = (*pScreen->CloseScreen) (pScreen);
+ xf86VGAarbiterUnlock(xf86ScreenToScrn(pScreen));
return val;
}
static void
-VGAarbiterBlockHandler(int i,
- pointer blockData, pointer pTimeout, pointer pReadmask)
+VGAarbiterBlockHandler(ScreenPtr pScreen,
+ pointer pTimeout, pointer pReadmask)
{
- ScreenPtr pScreen = screenInfo.screens[i];
-
SCREEN_PROLOG(BlockHandler);
VGAGet(pScreen);
- pScreen->BlockHandler(i, blockData, pTimeout, pReadmask);
+ pScreen->BlockHandler(pScreen, pTimeout, pReadmask);
VGAPut();
SCREEN_EPILOG(BlockHandler, VGAarbiterBlockHandler);
}
static void
-VGAarbiterWakeupHandler(int i, pointer blockData, unsigned long result,
+VGAarbiterWakeupHandler(ScreenPtr pScreen, unsigned long result,
pointer pReadmask)
{
- ScreenPtr pScreen = screenInfo.screens[i];
-
SCREEN_PROLOG(WakeupHandler);
VGAGet(pScreen);
- pScreen->WakeupHandler(i, blockData, result, pReadmask);
+ pScreen->WakeupHandler(pScreen, result, pReadmask);
VGAPut();
SCREEN_EPILOG(WakeupHandler, VGAarbiterWakeupHandler);
}
@@ -466,46 +462,45 @@ VGAarbiterSetCursorPosition(DeviceIntPtr pDev,
}
static void
-VGAarbiterAdjustFrame(int index, int x, int y, int flags)
+VGAarbiterAdjustFrame(ScrnInfoPtr pScrn, int x, int y)
{
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
VGAarbiterScreenPtr pScreenPriv =
(VGAarbiterScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
VGAarbiterScreenKey);
VGAGet(pScreen);
- (*pScreenPriv->AdjustFrame) (index, x, y, flags);
+ (*pScreenPriv->AdjustFrame) (pScrn, x, y);
VGAPut();
}
static Bool
-VGAarbiterSwitchMode(int index, DisplayModePtr mode, int flags)
+VGAarbiterSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
{
Bool val;
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
VGAarbiterScreenPtr pScreenPriv =
(VGAarbiterScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
VGAarbiterScreenKey);
VGAGet(pScreen);
- val = (*pScreenPriv->SwitchMode) (index, mode, flags);
+ val = (*pScreenPriv->SwitchMode) (pScrn, mode);
VGAPut();
return val;
}
static Bool
-VGAarbiterEnterVT(int index, int flags)
+VGAarbiterEnterVT(ScrnInfoPtr pScrn)
{
Bool val;
- ScrnInfoPtr pScrn = xf86Screens[index];
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
VGAarbiterScreenPtr pScreenPriv =
(VGAarbiterScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
VGAarbiterScreenKey);
VGAGet(pScreen);
pScrn->EnterVT = pScreenPriv->EnterVT;
- val = (*pScrn->EnterVT) (index, flags);
+ val = (*pScrn->EnterVT) (pScrn);
pScreenPriv->EnterVT = pScrn->EnterVT;
pScrn->EnterVT = VGAarbiterEnterVT;
VGAPut();
@@ -513,32 +508,31 @@ VGAarbiterEnterVT(int index, int flags)
}
static void
-VGAarbiterLeaveVT(int index, int flags)
+VGAarbiterLeaveVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
VGAarbiterScreenPtr pScreenPriv =
(VGAarbiterScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
VGAarbiterScreenKey);
VGAGet(pScreen);
pScrn->LeaveVT = pScreenPriv->LeaveVT;
- (*pScreenPriv->LeaveVT) (index, flags);
+ (*pScreenPriv->LeaveVT) (pScrn);
pScreenPriv->LeaveVT = pScrn->LeaveVT;
pScrn->LeaveVT = VGAarbiterLeaveVT;
VGAPut();
}
static void
-VGAarbiterFreeScreen(int index, int flags)
+VGAarbiterFreeScreen(ScrnInfoPtr pScrn)
{
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
VGAarbiterScreenPtr pScreenPriv =
(VGAarbiterScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
VGAarbiterScreenKey);
VGAGet(pScreen);
- (*pScreenPriv->FreeScreen) (index, flags);
+ (*pScreenPriv->FreeScreen) (pScrn);
VGAPut();
}
diff --git a/xorg-server/hw/xfree86/common/xf86VGAarbiterPriv.h b/xorg-server/hw/xfree86/common/xf86VGAarbiterPriv.h
index ebc8854d3..ba6edfcc3 100644
--- a/xorg-server/hw/xfree86/common/xf86VGAarbiterPriv.h
+++ b/xorg-server/hw/xfree86/common/xf86VGAarbiterPriv.h
@@ -125,11 +125,11 @@ typedef struct _VGAarbiterScreen {
UnrealizeCursorProcPtr UnrealizeCursor;
RecolorCursorProcPtr RecolorCursor;
SetCursorPositionProcPtr SetCursorPosition;
- void (*AdjustFrame) (int, int, int, int);
- Bool (*SwitchMode) (int, DisplayModePtr, int);
- Bool (*EnterVT) (int, int);
- void (*LeaveVT) (int, int);
- void (*FreeScreen) (int, int);
+ void (*AdjustFrame) (ScrnInfoPtr, int, int);
+ Bool (*SwitchMode) (ScrnInfoPtr, DisplayModePtr);
+ Bool (*EnterVT) (ScrnInfoPtr);
+ void (*LeaveVT) (ScrnInfoPtr);
+ void (*FreeScreen) (ScrnInfoPtr);
miPointerSpriteFuncPtr miSprite;
CompositeProcPtr Composite;
GlyphsProcPtr Glyphs;
@@ -142,11 +142,11 @@ typedef struct _VGAarbiterGC {
} VGAarbiterGCRec, *VGAarbiterGCPtr;
/* Screen funcs */
-static void VGAarbiterBlockHandler(int i, pointer blockData, pointer pTimeout,
+static void VGAarbiterBlockHandler(ScreenPtr pScreen, pointer pTimeout,
pointer pReadmask);
-static void VGAarbiterWakeupHandler(int i, pointer blockData,
+static void VGAarbiterWakeupHandler(ScreenPtr pScreen,
unsigned long result, pointer pReadmask);
-static Bool VGAarbiterCloseScreen(int i, ScreenPtr pScreen);
+static Bool VGAarbiterCloseScreen(ScreenPtr pScreen);
static void VGAarbiterGetImage(DrawablePtr pDrawable, int sx, int sy, int w,
int h, unsigned int format,
unsigned long planemask, char *pdstLine);
@@ -176,11 +176,11 @@ static Bool VGAarbiterDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen,
static Bool VGAarbiterSetCursorPosition(DeviceIntPtr pDev, ScreenPtr
pScreen, int x, int y,
Bool generateEvent);
-static void VGAarbiterAdjustFrame(int index, int x, int y, int flags);
-static Bool VGAarbiterSwitchMode(int index, DisplayModePtr mode, int flags);
-static Bool VGAarbiterEnterVT(int index, int flags);
-static void VGAarbiterLeaveVT(int index, int flags);
-static void VGAarbiterFreeScreen(int index, int flags);
+static void VGAarbiterAdjustFrame(ScrnInfoPtr pScrn, int x, int y);
+static Bool VGAarbiterSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode);
+static Bool VGAarbiterEnterVT(ScrnInfoPtr pScrn);
+static void VGAarbiterLeaveVT(ScrnInfoPtr pScrn);
+static void VGAarbiterFreeScreen(ScrnInfoPtr pScrn);
/* GC funcs */
static void VGAarbiterValidateGC(GCPtr pGC, unsigned long changes,
diff --git a/xorg-server/hw/xfree86/common/xf86VidMode.c b/xorg-server/hw/xfree86/common/xf86VidMode.c
index 13ffe061c..a7d1c25bf 100644
--- a/xorg-server/hw/xfree86/common/xf86VidMode.c
+++ b/xorg-server/hw/xfree86/common/xf86VidMode.c
@@ -50,7 +50,7 @@
static DevPrivateKeyRec VidModeKeyRec;
static DevPrivateKey VidModeKey;
static int VidModeCount = 0;
-static Bool VidModeClose(int i, ScreenPtr pScreen);
+static Bool VidModeClose(ScreenPtr pScreen);
#define VMPTR(p) ((VidModePtr)dixLookupPrivate(&(p)->devPrivates, VidModeKey))
@@ -93,7 +93,7 @@ VidModeExtensionInit(ScreenPtr pScreen)
#ifdef XF86VIDMODE
static Bool
-VidModeClose(int i, ScreenPtr pScreen)
+VidModeClose(ScreenPtr pScreen)
{
VidModePtr pVidMode = VMPTR(pScreen);
@@ -108,7 +108,7 @@ VidModeClose(int i, ScreenPtr pScreen)
dixSetPrivate(&pScreen->devPrivates, VidModeKey, NULL);
VidModeKey = NULL;
}
- return pScreen->CloseScreen(i, pScreen);
+ return pScreen->CloseScreen(pScreen);
}
Bool
@@ -303,7 +303,7 @@ VidModeSetViewPort(int scrnIndex, int x, int y)
pScrn->virtualY - pScrn->currentMode->VDisplay);
pScrn->frameY1 = pScrn->frameY0 + pScrn->currentMode->VDisplay - 1;
if (pScrn->AdjustFrame != NULL)
- (pScrn->AdjustFrame) (scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ (pScrn->AdjustFrame) (pScrn, pScrn->frameX0, pScrn->frameY0);
return TRUE;
}
diff --git a/xorg-server/hw/xfree86/common/xf86cmap.c b/xorg-server/hw/xfree86/common/xf86cmap.c
index 460fafde3..25f84e579 100644
--- a/xorg-server/hw/xfree86/common/xf86cmap.c
+++ b/xorg-server/hw/xfree86/common/xf86cmap.c
@@ -80,9 +80,9 @@ typedef struct {
DestroyColormapProcPtr DestroyColormap;
InstallColormapProcPtr InstallColormap;
StoreColorsProcPtr StoreColors;
- Bool (*EnterVT) (int, int);
- Bool (*SwitchMode) (int, DisplayModePtr, int);
- int (*SetDGAMode) (int, int, DGADevicePtr);
+ Bool (*EnterVT) (ScrnInfoPtr);
+ Bool (*SwitchMode) (ScrnInfoPtr, DisplayModePtr);
+ int (*SetDGAMode) (ScrnInfoPtr, int, DGADevicePtr);
xf86ChangeGammaProc *ChangeGamma;
int maxColors;
int sigRGBbits;
@@ -111,17 +111,17 @@ static DevPrivateKeyRec CMapColormapKeyRec;
static void CMapInstallColormap(ColormapPtr);
static void CMapStoreColors(ColormapPtr, int, xColorItem *);
-static Bool CMapCloseScreen(int, ScreenPtr);
+static Bool CMapCloseScreen(ScreenPtr);
static Bool CMapCreateColormap(ColormapPtr);
static void CMapDestroyColormap(ColormapPtr);
-static Bool CMapEnterVT(int, int);
-static Bool CMapSwitchMode(int, DisplayModePtr, int);
+static Bool CMapEnterVT(ScrnInfoPtr);
+static Bool CMapSwitchMode(ScrnInfoPtr, DisplayModePtr);
#ifdef XFreeXDGA
-static int CMapSetDGAMode(int, int, DGADevicePtr);
+static int CMapSetDGAMode(ScrnInfoPtr, int, DGADevicePtr);
#endif
-static int CMapChangeGamma(int, Gamma);
+static int CMapChangeGamma(ScrnInfoPtr, Gamma);
static void ComputeGamma(CMapScreenPtr);
static Bool CMapAllocateColormapPrivate(ColormapPtr);
@@ -241,11 +241,11 @@ xf86HandleColormaps(ScreenPtr pScreen,
/**** Screen functions ****/
static Bool
-CMapCloseScreen(int i, ScreenPtr pScreen)
+CMapCloseScreen(ScreenPtr pScreen)
{
CMapUnwrapScreen(pScreen);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
static Bool
@@ -462,16 +462,15 @@ CMapInstallColormap(ColormapPtr pmap)
/**** ScrnInfoRec functions ****/
static Bool
-CMapEnterVT(int index, int flags)
+CMapEnterVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
Bool ret;
CMapScreenPtr pScreenPriv =
(CMapScreenPtr) dixLookupPrivate(&pScreen->devPrivates, CMapScreenKey);
pScrn->EnterVT = pScreenPriv->EnterVT;
- ret = (*pScreenPriv->EnterVT) (index, flags);
+ ret = (*pScreenPriv->EnterVT) (pScrn);
pScreenPriv->EnterVT = pScrn->EnterVT;
pScrn->EnterVT = CMapEnterVT;
if (ret) {
@@ -483,13 +482,13 @@ CMapEnterVT(int index, int flags)
}
static Bool
-CMapSwitchMode(int index, DisplayModePtr mode, int flags)
+CMapSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
{
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
CMapScreenPtr pScreenPriv =
(CMapScreenPtr) dixLookupPrivate(&pScreen->devPrivates, CMapScreenKey);
- if ((*pScreenPriv->SwitchMode) (index, mode, flags)) {
+ if ((*pScreenPriv->SwitchMode) (pScrn, mode)) {
if (GetInstalledmiColormap(pScreen))
CMapReinstallMap(GetInstalledmiColormap(pScreen));
return TRUE;
@@ -499,16 +498,16 @@ CMapSwitchMode(int index, DisplayModePtr mode, int flags)
#ifdef XFreeXDGA
static int
-CMapSetDGAMode(int index, int num, DGADevicePtr dev)
+CMapSetDGAMode(ScrnInfoPtr pScrn, int num, DGADevicePtr dev)
{
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
CMapScreenPtr pScreenPriv =
(CMapScreenPtr) dixLookupPrivate(&pScreen->devPrivates, CMapScreenKey);
int ret;
- ret = (*pScreenPriv->SetDGAMode) (index, num, dev);
+ ret = (*pScreenPriv->SetDGAMode) (pScrn, num, dev);
- pScreenPriv->isDGAmode = DGAActive(index);
+ pScreenPriv->isDGAmode = DGAActive(pScrn->scrnIndex);
if (!pScreenPriv->isDGAmode && GetInstalledmiColormap(pScreen)
&& xf86ScreenToScrn(pScreen)->vtSema)
@@ -908,11 +907,10 @@ ComputeGamma(CMapScreenPtr priv)
}
int
-CMapChangeGamma(int index, Gamma gamma)
+CMapChangeGamma(ScrnInfoPtr pScrn, Gamma gamma)
{
int ret = Success;
- ScrnInfoPtr pScrn = xf86Screens[index];
- ScreenPtr pScreen = pScrn->pScreen;
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
CMapColormapPtr pColPriv;
CMapScreenPtr pScreenPriv;
CMapLinkPtr pLink;
@@ -979,7 +977,7 @@ CMapChangeGamma(int index, Gamma gamma)
pScrn->ChangeGamma = pScreenPriv->ChangeGamma;
if (pScrn->ChangeGamma)
- ret = pScrn->ChangeGamma(index, gamma);
+ ret = pScrn->ChangeGamma(pScrn, gamma);
pScrn->ChangeGamma = CMapChangeGamma;
return ret;
@@ -1175,7 +1173,7 @@ xf86ChangeGamma(ScreenPtr pScreen, Gamma gamma)
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
if (pScrn->ChangeGamma)
- return (*pScrn->ChangeGamma) (pScreen->myNum, gamma);
+ return (*pScrn->ChangeGamma) (pScrn, gamma);
return BadImplementation;
}
diff --git a/xorg-server/hw/xfree86/common/xf86fbman.c b/xorg-server/hw/xfree86/common/xf86fbman.c
index e2db1c354..c2e7bab9f 100644
--- a/xorg-server/hw/xfree86/common/xf86fbman.c
+++ b/xorg-server/hw/xfree86/common/xf86fbman.c
@@ -1149,7 +1149,7 @@ static FBManagerFuncs xf86FBManFuncs = {
};
static Bool
-xf86FBCloseScreen(int i, ScreenPtr pScreen)
+xf86FBCloseScreen(ScreenPtr pScreen)
{
FBLinkPtr pLink, tmp;
FBLinearLinkPtr pLinearLink, tmp2;
@@ -1180,7 +1180,7 @@ xf86FBCloseScreen(int i, ScreenPtr pScreen)
free(offman);
dixSetPrivate(&pScreen->devPrivates, xf86FBScreenKey, NULL);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
Bool
diff --git a/xorg-server/hw/xfree86/common/xf86sbusBus.c b/xorg-server/hw/xfree86/common/xf86sbusBus.c
index 27d24f8e1..b6a6b94b3 100644
--- a/xorg-server/hw/xfree86/common/xf86sbusBus.c
+++ b/xorg-server/hw/xfree86/common/xf86sbusBus.c
@@ -667,7 +667,7 @@ xf86SbusCmapLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
}
static Bool
-xf86SbusCmapCloseScreen(int i, ScreenPtr pScreen)
+xf86SbusCmapCloseScreen(ScreenPtr pScreen)
{
sbusCmapPtr cmap;
struct fbcmap fbcmap;
@@ -683,7 +683,7 @@ xf86SbusCmapCloseScreen(int i, ScreenPtr pScreen)
}
pScreen->CloseScreen = cmap->CloseScreen;
free(cmap);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
Bool
diff --git a/xorg-server/hw/xfree86/common/xf86str.h b/xorg-server/hw/xfree86/common/xf86str.h
index 6294845bc..a1404c3aa 100644
--- a/xorg-server/hw/xfree86/common/xf86str.h
+++ b/xorg-server/hw/xfree86/common/xf86str.h
@@ -630,18 +630,18 @@ typedef struct {
typedef Bool xf86ProbeProc(DriverPtr, int);
typedef Bool xf86PreInitProc(ScrnInfoPtr, int);
-typedef Bool xf86ScreenInitProc(int, ScreenPtr, int, char **);
-typedef Bool xf86SwitchModeProc(int, DisplayModePtr, int);
-typedef void xf86AdjustFrameProc(int, int, int, int);
-typedef Bool xf86EnterVTProc(int, int);
-typedef void xf86LeaveVTProc(int, int);
-typedef void xf86FreeScreenProc(int, int);
-typedef ModeStatus xf86ValidModeProc(int, DisplayModePtr, Bool, int);
-typedef void xf86EnableDisableFBAccessProc(int, Bool);
-typedef int xf86SetDGAModeProc(int, int, DGADevicePtr);
-typedef int xf86ChangeGammaProc(int, Gamma);
-typedef void xf86PointerMovedProc(int, int, int);
-typedef Bool xf86PMEventProc(int, pmEvent, Bool);
+typedef Bool xf86ScreenInitProc(ScreenPtr, int, char **);
+typedef Bool xf86SwitchModeProc(ScrnInfoPtr, DisplayModePtr);
+typedef void xf86AdjustFrameProc(ScrnInfoPtr, int, int);
+typedef Bool xf86EnterVTProc(ScrnInfoPtr);
+typedef void xf86LeaveVTProc(ScrnInfoPtr);
+typedef void xf86FreeScreenProc(ScrnInfoPtr);
+typedef ModeStatus xf86ValidModeProc(ScrnInfoPtr, DisplayModePtr, Bool, int);
+typedef void xf86EnableDisableFBAccessProc(ScrnInfoPtr, Bool);
+typedef int xf86SetDGAModeProc(ScrnInfoPtr, int, DGADevicePtr);
+typedef int xf86ChangeGammaProc(ScrnInfoPtr, Gamma);
+typedef void xf86PointerMovedProc(ScrnInfoPtr, int, int);
+typedef Bool xf86PMEventProc(ScrnInfoPtr, pmEvent, Bool);
typedef void xf86DPMSSetProc(ScrnInfoPtr, int, int);
typedef void xf86LoadPaletteProc(ScrnInfoPtr, int, int *, LOCO *, VisualPtr);
typedef void xf86SetOverscanProc(ScrnInfoPtr, int);
diff --git a/xorg-server/hw/xfree86/common/xf86xv.c b/xorg-server/hw/xfree86/common/xf86xv.c
index b10034852..1a964d270 100644
--- a/xorg-server/hw/xfree86/common/xf86xv.c
+++ b/xorg-server/hw/xfree86/common/xf86xv.c
@@ -56,7 +56,7 @@
/* XvScreenRec fields */
-static Bool xf86XVCloseScreen(int, ScreenPtr);
+static Bool xf86XVCloseScreen(ScreenPtr);
static int xf86XVQueryAdaptors(ScreenPtr, XvAdaptorPtr *, int *);
/* XvAdaptorRec fields */
@@ -100,9 +100,9 @@ static void xf86XVClipNotify(WindowPtr pWin, int dx, int dy);
/* ScrnInfoRec functions */
-static Bool xf86XVEnterVT(int, int);
-static void xf86XVLeaveVT(int, int);
-static void xf86XVAdjustFrame(int index, int x, int y, int flags);
+static Bool xf86XVEnterVT(ScrnInfoPtr);
+static void xf86XVLeaveVT(ScrnInfoPtr);
+static void xf86XVAdjustFrame(ScrnInfoPtr, int x, int y);
static void xf86XVModeSet(ScrnInfoPtr pScrn);
/* misc */
@@ -1066,7 +1066,7 @@ xf86XVReputOrStopPort(XvPortRecPrivatePtr pPriv, WindowPtr pWin, Bool visible)
static void
xf86XVReputOrStopAllPorts(ScrnInfoPtr pScrn, Bool onlyChanged)
{
- ScreenPtr pScreen = pScrn->pScreen;
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
XvScreenPtr pxvs = GET_XV_SCREEN(pScreen);
XvAdaptorPtr pa;
int c, i;
@@ -1255,7 +1255,7 @@ xf86XVClipNotify(WindowPtr pWin, int dx, int dy)
/**** Required XvScreenRec fields ****/
static Bool
-xf86XVCloseScreen(int i, ScreenPtr pScreen)
+xf86XVCloseScreen(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XvScreenPtr pxvs = GET_XV_SCREEN(pScreen);
@@ -1299,15 +1299,14 @@ xf86XVQueryAdaptors(ScreenPtr pScreen,
/**** ScrnInfoRec fields ****/
static Bool
-xf86XVEnterVT(int index, int flags)
+xf86XVEnterVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
Bool ret;
pScrn->EnterVT = ScreenPriv->EnterVT;
- ret = (*ScreenPriv->EnterVT) (index, flags);
+ ret = (*ScreenPriv->EnterVT) (pScrn);
ScreenPriv->EnterVT = pScrn->EnterVT;
pScrn->EnterVT = xf86XVEnterVT;
@@ -1318,10 +1317,9 @@ xf86XVEnterVT(int index, int flags)
}
static void
-xf86XVLeaveVT(int index, int flags)
+xf86XVLeaveVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
XvScreenPtr pxvs = GET_XV_SCREEN(pScreen);
XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
XvAdaptorPtr pAdaptor;
@@ -1353,21 +1351,20 @@ xf86XVLeaveVT(int index, int flags)
}
pScrn->LeaveVT = ScreenPriv->LeaveVT;
- (*ScreenPriv->LeaveVT) (index, flags);
+ (*ScreenPriv->LeaveVT) (pScrn);
ScreenPriv->LeaveVT = pScrn->LeaveVT;
pScrn->LeaveVT = xf86XVLeaveVT;
}
static void
-xf86XVAdjustFrame(int index, int x, int y, int flags)
+xf86XVAdjustFrame(ScrnInfoPtr pScrn, int x, int y)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
- ScreenPtr pScreen = pScrn->pScreen;
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
XF86XVScreenPtr ScreenPriv = GET_XF86XV_SCREEN(pScreen);
if (ScreenPriv->AdjustFrame) {
pScrn->AdjustFrame = ScreenPriv->AdjustFrame;
- (*pScrn->AdjustFrame) (index, x, y, flags);
+ (*pScrn->AdjustFrame) (pScrn, x, y);
pScrn->AdjustFrame = xf86XVAdjustFrame;
}
@@ -1377,7 +1374,7 @@ xf86XVAdjustFrame(int index, int x, int y, int flags)
static void
xf86XVModeSet(ScrnInfoPtr pScrn)
{
- ScreenPtr pScreen = pScrn->pScreen;
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
XF86XVScreenPtr ScreenPriv;
/* Can be called before pScrn->pScreen is set */
diff --git a/xorg-server/hw/xfree86/common/xf86xvmc.c b/xorg-server/hw/xfree86/common/xf86xvmc.c
index b7da7589a..2e529dd92 100644
--- a/xorg-server/hw/xfree86/common/xf86xvmc.c
+++ b/xorg-server/hw/xfree86/common/xf86xvmc.c
@@ -132,7 +132,7 @@ xf86XvMCDestroySubpicture(XvMCSubpicturePtr pSubpicture)
}
static Bool
-xf86XvMCCloseScreen(int i, ScreenPtr pScreen)
+xf86XvMCCloseScreen(ScreenPtr pScreen)
{
xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pScreen);
@@ -141,7 +141,7 @@ xf86XvMCCloseScreen(int i, ScreenPtr pScreen)
free(pScreenPriv->dixinfo);
free(pScreenPriv);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
Bool
diff --git a/xorg-server/hw/xfree86/common/xf86xvpriv.h b/xorg-server/hw/xfree86/common/xf86xvpriv.h
index 289ca5843..e95f959a8 100644
--- a/xorg-server/hw/xfree86/common/xf86xvpriv.h
+++ b/xorg-server/hw/xfree86/common/xf86xvpriv.h
@@ -41,9 +41,9 @@ typedef struct {
ClipNotifyProcPtr ClipNotify;
WindowExposuresProcPtr WindowExposures;
PostValidateTreeProcPtr PostValidateTree;
- void (*AdjustFrame) (int, int, int, int);
- Bool (*EnterVT) (int, int);
- void (*LeaveVT) (int, int);
+ void (*AdjustFrame) (ScrnInfoPtr, int, int);
+ Bool (*EnterVT) (ScrnInfoPtr);
+ void (*LeaveVT) (ScrnInfoPtr);
xf86ModeSetProc *ModeSet;
} XF86XVScreenRec, *XF86XVScreenPtr;
diff --git a/xorg-server/hw/xfree86/ddc/DDC.HOWTO b/xorg-server/hw/xfree86/ddc/DDC.HOWTO
index 1d06ca124..54fbe73ad 100644
--- a/xorg-server/hw/xfree86/ddc/DDC.HOWTO
+++ b/xorg-server/hw/xfree86/ddc/DDC.HOWTO
@@ -1,97 +1,97 @@
- DDC.HOWTO
-
- This file describes how to add DDC support to a chipset driver.
-
-1) DDC INITIALIZATION
-
- When implementing DDC in the driver one has the choice between
- DDC1 and DDC2.
- DDC1 data is continuously transmitted by a DDC1 capable display
- device. The data is send serially over a data line; the Vsync
- signal serves as clock. Only one EDID 1.x data block can be
- transmitted using DDC1. Since transmission of an EDID1 block
- using a regular Vsync frequency would take up several seconds
- the driver can increase the Vsync frequency to up to 25 kHz as
- soon as it detects DDC1 activity on the data line.
- DDC2 data is transmitted using the I2C protocol. This requires
- an additional clock line. DDC2 is capable of transmitting EDID1
- and EDID2 block as well as a VDIF block on display devices that
- support these.
- Display devices switch into the DDC2 mode as soon as they detect
- activity on the DDC clock line. Once the are in DDC2 mode they
- stop transmitting DDC1 signals until the next power cycle.
-
- Some graphics chipset configurations which are not capable of
- DDC2 might still be able to read DDC1 data. Where available
- DDC2 it is preferable.
-
- All relevant prototypes and defines are in xf86DDC.h.
- DDC2 additionally requires I2C support. The I2C prototypes
- are in xf86i2c.h.
-
- DDC1 Support:
-
- The driver has to provide a read function which waits for the
- end of the next Vsync signal and reads in and returns the status
- of the DDC line:
-
- unsigned int XXX_ddc1Read(ScrnInfoPtr pScrn)
-
- Additionally a function is required to increase the Vsync
- frequency to max. 25 kHz.
-
- void XXX_ddc1SetSpeed(ScrnInfoPtr pScrn, xf86ddcSpeed speed)
-
- If the speed argument is DDC_FAST the function should increase
- the Vsync frequency on DDC_SLOW it should restore the original
- value. For convenience a generic ddc1SetSpeed() function is provided
- in the vga module for VGA-like chipsets.
-
- void vgaHWddc1SetSpeed(ScrnInfoPtr pScrn, sf86ddcSpeed speed).
-
- To read out the DDC1 data the driver should call
-
- xf86MonPtr xf86DoEDID_DDC1(int scrnIndex,
- void (*DDC1SetSpeed)(ScrnInfoPtr, xf86ddcSpeed),
- unsigned int (*DDC1Read)(ScrnInfoPtr))
-
- in PreInit(). DDC1SetSpeed is a pointer to the SetSpeed()
- function, DDC1Read has to point to the DDC1 read function.
- The function will return a pointer to the xf86Monitor structure
- which contains all information retrieved by DDC.
- NULL will be returned on failure.
-
- DDC2 Support
-
- To read out DDC2 information I2C has to be initialized first.
- (See documentation for the i2c module).
- The function
-
- xf86MonPtr xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus)
-
- is provided to read out and process DDC2 data. A pointer
- to the I2CBusRec of the appropriate I2C Bus has to be passed
- as the second argument.
- The function will return a pointer to the xf86Monitor structure
- which contains all information retrieved by DDC.
- NULL will be returned on failure.
-
- Printing monitor parameters
-
- To print out the information contained in the xf86Monitor
- structure the function
-
- xf86MonPtr xf86PrintEDID(xf86MonPtr monitor)
-
- is provided.
-
- Further processing of the xf86Monitor structure is not yet
- implemented. However, it is planned to use the information
- about video modes, gamma values etc.
- Therefore it is strongly recommended to read out DDC data
- before any video mode processing is done.
-
-
-
-
-$XFree86: xc/programs/Xserver/hw/xfree86/ddc/DDC.HOWTO,v 1.2 1998/12/06 13:30:39 dawes Exp $
+ DDC.HOWTO
+
+ This file describes how to add DDC support to a chipset driver.
+
+1) DDC INITIALIZATION
+
+ When implementing DDC in the driver one has the choice between
+ DDC1 and DDC2.
+ DDC1 data is continuously transmitted by a DDC1 capable display
+ device. The data is send serially over a data line; the Vsync
+ signal serves as clock. Only one EDID 1.x data block can be
+ transmitted using DDC1. Since transmission of an EDID1 block
+ using a regular Vsync frequency would take up several seconds
+ the driver can increase the Vsync frequency to up to 25 kHz as
+ soon as it detects DDC1 activity on the data line.
+ DDC2 data is transmitted using the I2C protocol. This requires
+ an additional clock line. DDC2 is capable of transmitting EDID1
+ and EDID2 block as well as a VDIF block on display devices that
+ support these.
+ Display devices switch into the DDC2 mode as soon as they detect
+ activity on the DDC clock line. Once the are in DDC2 mode they
+ stop transmitting DDC1 signals until the next power cycle.
+
+ Some graphics chipset configurations which are not capable of
+ DDC2 might still be able to read DDC1 data. Where available
+ DDC2 it is preferable.
+
+ All relevant prototypes and defines are in xf86DDC.h.
+ DDC2 additionally requires I2C support. The I2C prototypes
+ are in xf86i2c.h.
+
+ DDC1 Support:
+
+ The driver has to provide a read function which waits for the
+ end of the next Vsync signal and reads in and returns the status
+ of the DDC line:
+
+ unsigned int XXX_ddc1Read(ScrnInfoPtr pScrn)
+
+ Additionally a function is required to increase the Vsync
+ frequency to max. 25 kHz.
+
+ void XXX_ddc1SetSpeed(ScrnInfoPtr pScrn, xf86ddcSpeed speed)
+
+ If the speed argument is DDC_FAST the function should increase
+ the Vsync frequency on DDC_SLOW it should restore the original
+ value. For convenience a generic ddc1SetSpeed() function is provided
+ in the vga module for VGA-like chipsets.
+
+ void vgaHWddc1SetSpeed(ScrnInfoPtr pScrn, sf86ddcSpeed speed).
+
+ To read out the DDC1 data the driver should call
+
+ xf86MonPtr xf86DoEDID_DDC1(int scrnIndex,
+ void (*DDC1SetSpeed)(ScrnInfoPtr, xf86ddcSpeed),
+ unsigned int (*DDC1Read)(ScrnInfoPtr))
+
+ in PreInit(). DDC1SetSpeed is a pointer to the SetSpeed()
+ function, DDC1Read has to point to the DDC1 read function.
+ The function will return a pointer to the xf86Monitor structure
+ which contains all information retrieved by DDC.
+ NULL will be returned on failure.
+
+ DDC2 Support
+
+ To read out DDC2 information I2C has to be initialized first.
+ (See documentation for the i2c module).
+ The function
+
+ xf86MonPtr xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus)
+
+ is provided to read out and process DDC2 data. A pointer
+ to the I2CBusRec of the appropriate I2C Bus has to be passed
+ as the second argument.
+ The function will return a pointer to the xf86Monitor structure
+ which contains all information retrieved by DDC.
+ NULL will be returned on failure.
+
+ Printing monitor parameters
+
+ To print out the information contained in the xf86Monitor
+ structure the function
+
+ xf86MonPtr xf86PrintEDID(xf86MonPtr monitor)
+
+ is provided.
+
+ Further processing of the xf86Monitor structure is not yet
+ implemented. However, it is planned to use the information
+ about video modes, gamma values etc.
+ Therefore it is strongly recommended to read out DDC data
+ before any video mode processing is done.
+
+
+
+
+$XFree86: xc/programs/Xserver/hw/xfree86/ddc/DDC.HOWTO,v 1.2 1998/12/06 13:30:39 dawes Exp $
diff --git a/xorg-server/hw/xfree86/ddc/Makefile.am b/xorg-server/hw/xfree86/ddc/Makefile.am
index 93ea4a2a5..0db5d833f 100644
--- a/xorg-server/hw/xfree86/ddc/Makefile.am
+++ b/xorg-server/hw/xfree86/ddc/Makefile.am
@@ -1,11 +1,11 @@
-sdk_HEADERS = edid.h xf86DDC.h
-
-noinst_LTLIBRARIES = libddc.la
-
-libddc_la_SOURCES = ddc.c interpret_edid.c print_edid.c ddcProperty.c
-
-INCLUDES = $(XORG_INCS) -I$(srcdir)/../i2c
-
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
-
-EXTRA_DIST = DDC.HOWTO
+sdk_HEADERS = edid.h xf86DDC.h
+
+noinst_LTLIBRARIES = libddc.la
+
+libddc_la_SOURCES = ddc.c interpret_edid.c print_edid.c ddcProperty.c
+
+INCLUDES = $(XORG_INCS) -I$(srcdir)/../i2c
+
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
+
+EXTRA_DIST = DDC.HOWTO
diff --git a/xorg-server/hw/xfree86/ddc/ddc.c b/xorg-server/hw/xfree86/ddc/ddc.c
index a1281d735..28c969646 100644
--- a/xorg-server/hw/xfree86/ddc/ddc.c
+++ b/xorg-server/hw/xfree86/ddc/ddc.c
@@ -258,10 +258,9 @@ EDIDRead_DDC1(ScrnInfoPtr pScrn, DDC1SetSpeedProc DDCSpeed,
* @return NULL if no monitor attached or failure to interpret the EDID.
*/
xf86MonPtr
-xf86DoEDID_DDC1(int scrnIndex, DDC1SetSpeedProc DDC1SetSpeed,
+xf86DoEDID_DDC1(ScrnInfoPtr pScrn, DDC1SetSpeedProc DDC1SetSpeed,
unsigned int (*DDC1Read) (ScrnInfoPtr))
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
unsigned char *EDID_block = NULL;
xf86MonPtr tmp = NULL;
@@ -285,7 +284,7 @@ xf86DoEDID_DDC1(int scrnIndex, DDC1SetSpeedProc DDC1SetSpeed,
OsReleaseSignals();
if (EDID_block) {
- tmp = xf86InterpretEDID(scrnIndex, EDID_block);
+ tmp = xf86InterpretEDID(pScrn->scrnIndex, EDID_block);
}
#ifdef DEBUG
else
@@ -323,7 +322,7 @@ DDC2MakeDevice(I2CBusPtr pBus, int address, char *name)
}
static I2CDevPtr
-DDC2Init(int scrnIndex, I2CBusPtr pBus)
+DDC2Init(I2CBusPtr pBus)
{
I2CDevPtr dev = NULL;
@@ -403,9 +402,8 @@ DDC2Read(I2CDevPtr dev, int block, unsigned char *R_Buffer)
* @return NULL if no monitor attached or failure to interpret the EDID.
*/
xf86MonPtr
-xf86DoEEDID(int scrnIndex, I2CBusPtr pBus, Bool complete)
+xf86DoEEDID(ScrnInfoPtr pScrn, I2CBusPtr pBus, Bool complete)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
unsigned char *EDID_block = NULL;
xf86MonPtr tmp = NULL;
I2CDevPtr dev = NULL;
@@ -427,7 +425,7 @@ xf86DoEEDID(int scrnIndex, I2CBusPtr pBus, Bool complete)
if (noddc || noddc2)
return NULL;
- if (!(dev = DDC2Init(scrnIndex, pBus)))
+ if (!(dev = DDC2Init(pBus)))
return NULL;
EDID_block = calloc(1, EDID1_LEN);
@@ -444,7 +442,7 @@ xf86DoEEDID(int scrnIndex, I2CBusPtr pBus, Bool complete)
DDC2Read(dev, i + 1, EDID_block + (EDID1_LEN * (1 + i)));
}
- tmp = xf86InterpretEEDID(scrnIndex, EDID_block);
+ tmp = xf86InterpretEEDID(pScrn->scrnIndex, EDID_block);
}
if (tmp && complete)
@@ -465,9 +463,9 @@ xf86DoEEDID(int scrnIndex, I2CBusPtr pBus, Bool complete)
* @return NULL if no monitor attached or failure to interpret the EDID.
*/
xf86MonPtr
-xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus)
+xf86DoEDID_DDC2(ScrnInfoPtr pScrn, I2CBusPtr pBus)
{
- return xf86DoEEDID(scrnIndex, pBus, FALSE);
+ return xf86DoEEDID(pScrn, pBus, FALSE);
}
/* XXX write me */
@@ -489,9 +487,8 @@ DDC2ReadDisplayID(void)
* @return NULL if no monitor attached or failure to interpret the DisplayID.
*/
xf86MonPtr
-xf86DoDisplayID(int scrnIndex, I2CBusPtr pBus)
+xf86DoDisplayID(ScrnInfoPtr pScrn, I2CBusPtr pBus)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
unsigned char *did = NULL;
xf86MonPtr tmp = NULL;
I2CDevPtr dev = NULL;
@@ -513,7 +510,7 @@ xf86DoDisplayID(int scrnIndex, I2CBusPtr pBus)
if (noddc || noddc2)
return NULL;
- if (!(dev = DDC2Init(scrnIndex, pBus)))
+ if (!(dev = DDC2Init(pBus)))
return NULL;
if ((did = DDC2ReadDisplayID())) {
@@ -521,7 +518,7 @@ xf86DoDisplayID(int scrnIndex, I2CBusPtr pBus)
if (!tmp)
return NULL;
- tmp->scrnIndex = scrnIndex;
+ tmp->scrnIndex = pScrn->scrnIndex;
tmp->flags |= MONITOR_DISPLAYID;
tmp->rawData = did;
}
diff --git a/xorg-server/hw/xfree86/ddc/xf86DDC.h b/xorg-server/hw/xfree86/ddc/xf86DDC.h
index 2071d530d..c63da8bff 100644
--- a/xorg-server/hw/xfree86/ddc/xf86DDC.h
+++ b/xorg-server/hw/xfree86/ddc/xf86DDC.h
@@ -24,15 +24,15 @@ typedef enum {
typedef void (*DDC1SetSpeedProc) (ScrnInfoPtr, xf86ddcSpeed);
-extern _X_EXPORT xf86MonPtr xf86DoEDID_DDC1(int scrnIndex,
+extern _X_EXPORT xf86MonPtr xf86DoEDID_DDC1(ScrnInfoPtr pScrn,
DDC1SetSpeedProc DDC1SetSpeed,
unsigned
int (*DDC1Read) (ScrnInfoPtr)
);
-extern _X_EXPORT xf86MonPtr xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus);
+extern _X_EXPORT xf86MonPtr xf86DoEDID_DDC2(ScrnInfoPtr pScrn, I2CBusPtr pBus);
-extern _X_EXPORT xf86MonPtr xf86DoEEDID(int scrnIndex, I2CBusPtr pBus, Bool);
+extern _X_EXPORT xf86MonPtr xf86DoEEDID(ScrnInfoPtr pScrn, I2CBusPtr pBus, Bool);
extern _X_EXPORT xf86MonPtr xf86PrintEDID(xf86MonPtr monPtr);
@@ -50,7 +50,7 @@ extern _X_EXPORT DisplayModePtr xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC);
extern _X_EXPORT Bool
xf86MonitorIsHDMI(xf86MonPtr mon);
-extern _X_EXPORT xf86MonPtr xf86DoDisplayID(int scrnIndex, I2CBusPtr pBus);
+extern _X_EXPORT xf86MonPtr xf86DoDisplayID(ScrnInfoPtr pScrn, I2CBusPtr pBus);
extern _X_EXPORT void
xf86DisplayIDMonitorSet(int scrnIndex, MonPtr mon, xf86MonPtr DDC);
diff --git a/xorg-server/hw/xfree86/doc/.gitignore b/xorg-server/hw/xfree86/doc/.gitignore
new file mode 100644
index 000000000..63eee5960
--- /dev/null
+++ b/xorg-server/hw/xfree86/doc/.gitignore
@@ -0,0 +1,4 @@
+ddxDesign.html
+ddxDesign.pdf
+ddxDesign.ps
+ddxDesign.txt
diff --git a/xorg-server/hw/xfree86/doc/README.DRIcomp b/xorg-server/hw/xfree86/doc/README.DRIcomp
index 617897949..2d3ebf148 100644
--- a/xorg-server/hw/xfree86/doc/README.DRIcomp
+++ b/xorg-server/hw/xfree86/doc/README.DRIcomp
@@ -1,554 +1,554 @@
- DRI Compilation Guide
-
- VA Linux Systems, Inc. Professional Services - Graphics.
-
- 21 April 2001
-
-1. Preamble
-
-1.1 Copyright
-
-Copyright 2000-2001 by VA Linux Systems, Inc. All Rights Reserved.
-
-Permission is granted to make and distribute verbatim copies of this document
-provided the copyright notice and this permission notice are preserved on all
-copies.
-
-1.2 Trademarks
-
-OpenGL is a registered trademark and SGI is a trademark of Silicon Graphics,
-Inc. Unix is a registered trademark of The Open Group. The `X' device and X
-Window System are trademarks of The Open Group. XFree86 is a trademark of
-The XFree86 Project. Linux is a registered trademark of Linus Torvalds.
-Intel is a registered trademark of Intel Corporation. 3Dlabs, GLINT, and
-Oxygen are either registered trademarks or trademarks of 3Dlabs Inc. Ltd.
-3dfx, Voodoo3, Voodoo4, and Voodoo5 are registered trademarks of 3dfx Inter-
-active, Incorporated. Matrox is a registered trademark of Matrox Electronic
-Systems Ltd. ATI Rage and Radeon is a registered trademark of ATI Technolo-
-gies, Inc. All other trademarks mentioned are the property of their respec-
-tive owners.
-
-2. Introduction
-
-This document describes how to download, compile and install the DRI. The
-DRI provides 3D graphics hardware acceleration for the XFree86 project. This
-information is intended for experienced Linux developers. Beginners are
-probably better off installing precompiled packages.
-
-Edits, corrections and updates to this document may be mailed to <brian@tung-
-stengraphics.com>.
-
-Last updated on 13 February 2002 by Brian Paul.
-
-3. Prerequisites
-
-You'll need the following:
-
- o An installation of XFree86 4.1 or later. The DRI tree has been pruned
- down to minimize its size. But in order to build the DRI tree you need
- to have recent X header files, etc. already installed. If you don't
- have XFree86 4.1 (or later) installed you can probably install it from
- RPMs (or another package format). Or, you can download XFree86 as
- sources and compile/install it yourself.
-
- o At least 200MB of free disk space. If you compile for debugging (the -g
- option) then you'll need about 600MB.
-
- o GCC compiler and related tools.
-
- o ssh (secure shell) if you're a DRI developer and don't want to use
- anonymous CVS download.
-
- o A 2.4.x Linux Kernel. See below for details.
-
- o FreeBSD support is not currently being maintained and may not work.
-
-The DRI 3D drivers generally work on systems with Intel or AMD CPUs. How-
-ever, limited support for Alpha and PowerPC support is underway.
-
-For 3dfx Voodoo hardware, you'll also need the Glide3 runtime library
-(libglide3-v3.so for Voodoo3 or libglide3-v5.so for Voodoo4/5). These can be
-downloaded from the DRI website. You can compile them yourself, but it's
-often a painful process.
-
-For Matrox G200/G400, Intel i810/i830 or ATI Rage128/Radeon hardware, you'll
-also need AGP support in your Linux kernel, either built-in or as a loadable
-module.
-
-4. Linux Kernel Preparation
-
-Only the Linux 2.4.x kernels are currently supported by the DRI hardware
-drivers. 2.5.x kernels may work, but aren't tested.
-
-Most of the DRI drivers require AGP support and using Intel Pentium III SSE
-optimizations also requires an up-to-date Linux kernel. Configuring your
-kernel correctly is very important, as features such as SSE optimizations
-will be disabled if your kernel does not support them. Thus, if you have a
-Pentium III processor, you must configure your kernel for the Pentium III
-processor family.
-
-Building a new Linux kernel can be difficult for beginners but there are
-resources on the Internet to help. This document assumes experience with
-configuring, building and installing Linux kernels.
-
-Linux kernels can be downloaded from www.kernel.org
-
-Here are the basic steps for kernel setup.
-
- o Download the needed kernel and put it in /usr/src. Create a directory
- for the source and unpack it. For example:
-
- cd /usr/src
- rm -f linux
- mkdir linux-2.4.x
- ln -s linux-2.4.x linux
- bzcat linux-2.4.x.tar.bz2 | tar xf -
-
- It is critical that /usr/src/linux point to your new kernel sources,
- otherwise the kernel headers will not be used when building the DRI.
- This will almost certainly cause compilation problems.
-
- o Read /usr/src/linux/Documentation/Changes. This file lists the minimum
- requirements for all software packages required to build the kernel.
- You must upgrade at least gcc, make, binutils and modutils to at least
- the versions specified in this file. The other packages may not be
- needed. If you are upgrading from Linux 2.2.x you must upgrade your
- modutils package for Linux 2.4.x.
-
- o Configure your kernel. You might, for example, use make menuconfig and
- do the following:
-
- o Go to Code maturity level options
-
- o Enable Prompt for development and/or incomplete code/drivers
-
- o hit ESC to return to the top-level menu
-
- o Go to Processor type and features
-
- o Select your processor type from Processor Family
-
- o hit ESC to return to the top-level menu
-
- o Go to Character devices
-
- o Disable Direct Rendering Manager (XFree86 DRI support) since we'll
- use the DRI code from the XFree86/DRI tree and will compile it
- there.
-
- o Go to /dev/agpgart (AGP Support) (EXPERIMENTAL) (NEW)
-
- o Hit SPACE twice to build AGP support into the kernel
-
- o Enable all chipsets' support for AGP
-
- o It's recommended that you turn on MTRRs under Processor type and
- Features, but not required.
-
- o Configure the rest of the kernel as required for your system (i.e. Eth-
- ernet, SCSI, etc)
-
- o Exit, saving your kernel configuration.
-
- o Edit your /etc/lilo.conf file. Make sure you have an image entry as
- follows (or similar):
-
- image=/boot/vmlinuz
- label=linux.2.4.x
- read-only
- root=/dev/hda1
-
- The important part is that you have /boot/vmlinuz without a trailing
- version number. If this is the first entry in your /etc/lilo.conf AND
- you haven't set a default, then this will be your default kernel.
-
- o Compile the new kernel.
-
- cd /usr/src/linux-2.4.x
- make dep
- make bzImage
- make modules
- make modules_install
- make install
-
- Note that last make command will automatically run lilo for you.
-
- o Now reboot to use the new kernel.
-
-5. CPU Architectures
-
-In general, nothing special has to be done to use the DRI on different CPU
-architectures. There are, however, a few optimizations that are CPU-depen-
-dent. Mesa will determine at runtime which CPU-dependent optimizations
-should be used and enable them where appropriate.
-
-5.1 Intel Pentium III Features
-
-The Pentium III SSE instructions are used in optimized vertex transformation
-functions in the Mesa-based DRI drivers. On Linux, SSE requires a recent
-kernel (such as 2.4.0-test11 or later) both at compile time and runtime.
-
-5.2 AMD 3DNow! Features
-
-AMD's 3DNow! instructions are used in optimized vertex transformation func-
-tions in the Mesa-based DRI drivers. 3DNow! is supported in most versions of
-Linux.
-
-5.3 Alpha Features
-
-On newer Alpha processors a significant performance increase can be seen with
-the addition of the -mcpu= option to GCC. This option is dependent on the
-architecture of the processor. For example, -mcpu=ev6 will build specifi-
-cally for the EV6 based AXP's, giving both byte and word alignment access to
-the DRI/Mesa drivers.
-
-To enable this optimization edit your xc/config/host.def file and add the
-line:
-
-#define DefaultGcc2AxpOpt -O2 -mcpu=ev6
-
-Additional speed improvements to 3D rendering can be achieved by installing
-Compaq's Math Libraries (CPML) which can be obtained from http://www.sup-
-port.compaq.com/alpha-tools/software/index.html
-
-Once installed, you can add this line to your host.def to build with the CPML
-libraries:
-
-#define UseCompaqMathLibrary YES
-
-The host.def file is explained below.
-
-6. Downloading the XFree86/DRI CVS Sources
-
-The DRI project is hosted by SourceForge. The DRI source code, which is a
-subset of the XFree86 source tree, is kept in a CVS repository there.
-
-The DRI CVS sources may be accessed either anonymously or as a registered
-SourceForge user. It's recommended that you become a registered SourceForge
-user so that you may submit non-anonymous bug reports and can participate in
-the mailing lists.
-
-6.1 Anonymous CVS download:
-
- 1. Create a directory to store the CVS files:
-
- cd ~
- mkdir DRI-CVS
-
- You could put your CVS directory in a different place but we'll use
- ~/DRI-CVS/ here.
-
- 2. Check out the CVS sources:
-
- cd ~/DRI-CVS
- cvs -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri login
- (hit ENTER when prompted for a password)
- cvs -z3 -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri co xc
-
- The -z3 flag causes compression to be used in order to reduce the down-
- load time.
-
-6.2 Registered CVS download:
-
- 1. Create a directory to store the CVS files:
-
- cd ~
- mkdir DRI-CVS
-
- You could put your CVS directory in a different place but we'll use
- ~/DRI-CVS/ here.
-
- 2. Set the CVS_RSH environment variable:
-
- setenv CVS_RSH ssh // if using csh or tcsh
- export CVS_RSH=ssh // if using sh or bash
-
- 3. Check out the CVS sources:
-
- cd ~/DRI-CVS
- cvs -z3 -d:ext:YOURID@cvs.dri.sourceforge.net:/cvsroot/dri co xc
-
- Replace YOURID with your CVS login name. You'll be prompted to enter
- your sourceforge password.
-
- The -z3 flag causes compression to be used in order to reduce the down-
- load time.
-
-6.3 Updating your CVS sources
-
-In the future you'll want to occasionally update your local copy of the DRI
-source code to get the latest changes. This can be done with:
-
- cd ~/DRI-CVS
- cvs -z3 update -dA xc
-
-The -d flag causes any new subdirectories to be created and -A causes most
-recent trunk sources to be fetched, not branch sources.
-
-7. Mesa
-
-Most of the DRI 3D drivers are based on Mesa (the free implementation of the
-OpenGL API). The relevant files from Mesa are already included in the
-XFree86/DRI source tree. There is no need to download or install the Mesa
-source files separately.
-
-Sometimes a newer version of Mesa will be available than the version included
-in XFree86/DRI. Upgrading Mesa within XFree86/DRI is not always straightfor-
-ward. It can be an error-prone undertaking, especially for beginners, and is
-not generally recommended. The DRI developers will upgrade Mesa when appro-
-priate.
-
-8. Compiling the XFree86/DRI tree
-
-8.1 Make a build tree
-
-Rather than placing object files and library files right in the source tree,
-they're instead put into a parallel build tree. The build tree is made with
-the lndir command:
-
- cd ~/DRI-CVS
- ln -s xc XFree40
- mkdir build
- cd build
- lndir -silent -ignorelinks ../XFree40
-
-The build tree will be populated with symbolic links which point back into
-the CVS source tree.
-
-Advanced users may have several build trees for compiling and testing with
-different options.
-
-8.2 Edit the host.def file
-
-The ~/DRI-CVS/build/xc/config/cf/host.def file is used to configure the
-XFree86 build process. You can change it to customize your build options or
-make adjustments for your particular system configuration
-
-The default host.def file will look something like this:
-
- #define DefaultCCOptions -Wall
- (i386) #define DefaultGcc2i386Opt -O2
- (Alpha) #define DefaultGcc2AxpOpt -O2 -mcpu=ev6 (or similar)
- #define LibraryCDebugFlags -O2
- #define BuildServersOnly YES
- #define XF86CardDrivers vga tdfx mga ati i810
- #define LinuxDistribution LinuxRedHat
- #define DefaultCCOptions -ansi GccWarningOptions -pipe
- #define BuildXF86DRI YES
- /* Optionally turn these on for debugging */
- /* #define GlxBuiltInTdfx YES */
- /* #define GlxBuiltInMga YES */
- /* #define GlxBuiltInR128 YES */
- /* #define GlxBuiltInRadeon YES */
- /* #define DoLoadableServer NO */
- #define SharedLibFont NO
-
-The ProjectRoot variable specifies where the XFree86 files will be installed.
-We recommend installing the DRI files over your existing XFree86 installation
-- it's generally safe to do and less error-prone. This policy is different
-than what we used to recommend.
-
-If XFree86 4.x is not installed in /usr/X11R6/ you'll have to add the follow-
-ing to the host.def file:
-
- #define ProjectRoot pathToYourXFree86installation
-
-Note the XF86CardDrivers line to be sure your card's driver is listed.
-
-If you want to enable 3DNow! optimizations in Mesa and the DRI drivers, you
-should add the following:
-
- #define MesaUse3DNow YES
-
-You don't have to be using an AMD processor in order to enable this option.
-The DRI will look for 3DNow! support and runtime and only enable it if appli-
-cable.
-
-If you want to enable SSE optimizations in Mesa and the DRI drivers, you must
-upgrade to a Linux 2.4.x kernel. Mesa will verify that SSE is supported by
-both your processor and your operating system, but to build Mesa inside the
-DRI you need to have the Linux 2.4.x kernel headers in /usr/src/linux. If
-you enable SSE optimizations with an earlier version of the Linux kernel in
-/usr/src/linux, Mesa will not compile. You have been warned. If you do have
-a 2.4.x kernel, you should add the following:
-
- #define MesaUseSSE YES
-
-If you want to build the DRM kernel modules as part of the full build pro-
-cess, add the following:
-
- #define BuildXF86DRM YES
-
-Otherwise, you'll need to build them separately as described below.
-
-8.3 Compilation
-
-To compile the complete DRI tree:
-
- cd ~/DRI-CVS/build/xc/
- make World >& world.log
-
-Or if you want to watch the compilation progress:
-
- cd ~/DRI-CVS/build/xc/
- make World >& world.log &
- tail -f world.log
-
-With the default compilation flags it's normal to get a lot of warnings dur-
-ing compilation.
-
-Building will take some time so you may want to go check your email or visit
-slashdot.
-
-WARNING: do not use the -j option with make. It's reported that it does not
-work with XFree86/DRI.
-
-8.4 Check for compilation errors
-
-Using your text editor, examine world.log for errors by searching for the
-pattern ***.
-
-After fixing the errors, run make World again. Later, you might just compile
-parts of the source tree but it's important that the whole tree will build
-first.
-
-If you edited your host.def file to enable automatic building of the DRI ker-
-nel module(s), verify that they were built:
-
- cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel
- ls
-
-Otherwise, build them now by running
-
- cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel
- make -f Makefile.linux
-
-For the 3dfx Voodoo, you should see tdfx.o. For the Matrox G200/G400, you
-should see mga.o. For the ATI Rage 128, you should see r128.o. For the ATI
-Radeon, you should see radeon.o. For the Intel i810, you should see i810.o.
-
-If the DRI kernel module(s) failed to build you should verify that you're
-using the right version of the Linux kernel. The most recent kernels are not
-always supported.
-
-If your build machine is running a different version of the kernel than your
-target machine (i.e. 2.2.x vs. 2.4.x), make will select the wrong kernel
-source tree. This can be fixed by explicitly setting the value of LINUXDIR.
-If the path to your kernel source is /usr/src/linux-2.4.x,
-
- cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel
- make -f Makefile.linux LINUXDIR=/usr/src/linux-2.4.x
-
-or alternatively, edit Makefile.linux to set LINUXDIR before the ifndef LIN-
-UXDIR line.
-
-8.5 DRI kernel module installation
-
-The DRI kernel modules will be in ~/DRI-CVS/build/xc/pro-
-grams/Xserver/hw/xfree86/os-support/linux/drm/kernel/.
-
-To load the appropriate DRM module in your running kernel you can either use
-ismod and restart your X server or copy the kernel module to /lib/mod-
-ules/2.4.x/kernel/drivers/char/drm/ then run depmod and restart your X
-server.
-
-Make sure you first unload any older DRI kernel modules that might be already
-loaded.
-
-Note that some DRM modules require that the agpgart module be loaded first.
-
-9. Normal Installation and Configuration
-
-Most users will want to install the new X server and use it in place of their
-old X server. This section explains how to do that.
-
-Developers, on the other hand, may just want to test the X server without
-actually installing it as their default server. If you want to do that, skip
-to the next section.
-
-9.1 Installation
-
-Here are the installation commands:
-
- su
- cd ~/DRI-CVS/build/xc
- make install
-
-9.2 Update the XF86Config File
-
-You may need to edit your XF86Config file to enable the DRI. The config file
-is usually installed as /etc/X11/XF86Config-4. See the DRI User Guide for
-details, but basically, you need to load the "glx" and "dri" modules and add
-a "DRI" section.
-
-On the DRI web site, in the resources section, you'll find example XF86Config
-files for a number of graphics cards. These configuration files also setup
-DRI options so it's highly recommended that you look at these examples.
-
-The XFree86 4.x server can generate a basic configuration file itself. Sim-
-ply do this:
-
- cd /usr/X11R6/bin
- ./XFree86 -configure
-
-A file named /root/XF86Config.new will be created. It should allow you to
-try your X server but you'll almost certainly have to edit it. For example,
-you should add HorizSync and VertRefresh options to the Monitor section and
-Modes options to the Screen section. Also, the ModulePath option in the
-Files section should be set to /usr/X11R6/lib/modules.
-
-9.3 Start the New X Server
-
-The new X server should be ready to use now. Start your X server in your
-usual manner. Often times the startx command is used:
-
- startx
-
-10. Testing the Server Without Installing It
-
-As mentioned at the start of section 9, developers may want to simply run the
-X server without installing it. This can save some time and allow you to
-keep a number of X servers available for testing.
-
-10.1 Configuration
-
-As described in the preceding section, you'll need to create a configuration
-file for the new server. Put the XF86Config file in your ~/DRI-
-CVS/build/xc/programs/Xserver directory.
-
-Be sure the ModulePath option in your XF86Config file is set correctly.
-
-10.2 A Startup Script
-
-A simple shell script can be used to start the X server. Here's an example.
-
- #!/bin/sh
- export DISPLAY=:0
- ./XFree86 -xf86config XF86Config & \
- sleep 2
- fvwm2 &
- xset b off
- xmodmap -e "clear mod4"
- xsetroot -solid "#00306f"
- xterm -geometry 80x40+0+0
-
-You might name this script start-dri. Put it in your ~/DRI-CVS/build/xc/pro-
-grams/Xserver directory.
-
-To test the server run the script:
-
- cd ~/DRI-CVS/build/xc/programs/Xserver
- ./start-dri
-
-For debugging, you may also want to capture the log messages printed by the
-server in a file. If you're using the C-shell:
-
- ./start-dri >& log
-
-11. Where To Go From Here
-
-At this point your X server should be up and running with hardware-acceler-
-ated direct rendering. Please read the DRI User Guide for information about
-trouble shooting and how to use the DRI-enabled X server for 3D applications.
-
- Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml,v 1.19 dawes Exp $
+ DRI Compilation Guide
+
+ VA Linux Systems, Inc. Professional Services - Graphics.
+
+ 21 April 2001
+
+1. Preamble
+
+1.1 Copyright
+
+Copyright 2000-2001 by VA Linux Systems, Inc. All Rights Reserved.
+
+Permission is granted to make and distribute verbatim copies of this document
+provided the copyright notice and this permission notice are preserved on all
+copies.
+
+1.2 Trademarks
+
+OpenGL is a registered trademark and SGI is a trademark of Silicon Graphics,
+Inc. Unix is a registered trademark of The Open Group. The `X' device and X
+Window System are trademarks of The Open Group. XFree86 is a trademark of
+The XFree86 Project. Linux is a registered trademark of Linus Torvalds.
+Intel is a registered trademark of Intel Corporation. 3Dlabs, GLINT, and
+Oxygen are either registered trademarks or trademarks of 3Dlabs Inc. Ltd.
+3dfx, Voodoo3, Voodoo4, and Voodoo5 are registered trademarks of 3dfx Inter-
+active, Incorporated. Matrox is a registered trademark of Matrox Electronic
+Systems Ltd. ATI Rage and Radeon is a registered trademark of ATI Technolo-
+gies, Inc. All other trademarks mentioned are the property of their respec-
+tive owners.
+
+2. Introduction
+
+This document describes how to download, compile and install the DRI. The
+DRI provides 3D graphics hardware acceleration for the XFree86 project. This
+information is intended for experienced Linux developers. Beginners are
+probably better off installing precompiled packages.
+
+Edits, corrections and updates to this document may be mailed to <brian@tung-
+stengraphics.com>.
+
+Last updated on 13 February 2002 by Brian Paul.
+
+3. Prerequisites
+
+You'll need the following:
+
+ o An installation of XFree86 4.1 or later. The DRI tree has been pruned
+ down to minimize its size. But in order to build the DRI tree you need
+ to have recent X header files, etc. already installed. If you don't
+ have XFree86 4.1 (or later) installed you can probably install it from
+ RPMs (or another package format). Or, you can download XFree86 as
+ sources and compile/install it yourself.
+
+ o At least 200MB of free disk space. If you compile for debugging (the -g
+ option) then you'll need about 600MB.
+
+ o GCC compiler and related tools.
+
+ o ssh (secure shell) if you're a DRI developer and don't want to use
+ anonymous CVS download.
+
+ o A 2.4.x Linux Kernel. See below for details.
+
+ o FreeBSD support is not currently being maintained and may not work.
+
+The DRI 3D drivers generally work on systems with Intel or AMD CPUs. How-
+ever, limited support for Alpha and PowerPC support is underway.
+
+For 3dfx Voodoo hardware, you'll also need the Glide3 runtime library
+(libglide3-v3.so for Voodoo3 or libglide3-v5.so for Voodoo4/5). These can be
+downloaded from the DRI website. You can compile them yourself, but it's
+often a painful process.
+
+For Matrox G200/G400, Intel i810/i830 or ATI Rage128/Radeon hardware, you'll
+also need AGP support in your Linux kernel, either built-in or as a loadable
+module.
+
+4. Linux Kernel Preparation
+
+Only the Linux 2.4.x kernels are currently supported by the DRI hardware
+drivers. 2.5.x kernels may work, but aren't tested.
+
+Most of the DRI drivers require AGP support and using Intel Pentium III SSE
+optimizations also requires an up-to-date Linux kernel. Configuring your
+kernel correctly is very important, as features such as SSE optimizations
+will be disabled if your kernel does not support them. Thus, if you have a
+Pentium III processor, you must configure your kernel for the Pentium III
+processor family.
+
+Building a new Linux kernel can be difficult for beginners but there are
+resources on the Internet to help. This document assumes experience with
+configuring, building and installing Linux kernels.
+
+Linux kernels can be downloaded from www.kernel.org
+
+Here are the basic steps for kernel setup.
+
+ o Download the needed kernel and put it in /usr/src. Create a directory
+ for the source and unpack it. For example:
+
+ cd /usr/src
+ rm -f linux
+ mkdir linux-2.4.x
+ ln -s linux-2.4.x linux
+ bzcat linux-2.4.x.tar.bz2 | tar xf -
+
+ It is critical that /usr/src/linux point to your new kernel sources,
+ otherwise the kernel headers will not be used when building the DRI.
+ This will almost certainly cause compilation problems.
+
+ o Read /usr/src/linux/Documentation/Changes. This file lists the minimum
+ requirements for all software packages required to build the kernel.
+ You must upgrade at least gcc, make, binutils and modutils to at least
+ the versions specified in this file. The other packages may not be
+ needed. If you are upgrading from Linux 2.2.x you must upgrade your
+ modutils package for Linux 2.4.x.
+
+ o Configure your kernel. You might, for example, use make menuconfig and
+ do the following:
+
+ o Go to Code maturity level options
+
+ o Enable Prompt for development and/or incomplete code/drivers
+
+ o hit ESC to return to the top-level menu
+
+ o Go to Processor type and features
+
+ o Select your processor type from Processor Family
+
+ o hit ESC to return to the top-level menu
+
+ o Go to Character devices
+
+ o Disable Direct Rendering Manager (XFree86 DRI support) since we'll
+ use the DRI code from the XFree86/DRI tree and will compile it
+ there.
+
+ o Go to /dev/agpgart (AGP Support) (EXPERIMENTAL) (NEW)
+
+ o Hit SPACE twice to build AGP support into the kernel
+
+ o Enable all chipsets' support for AGP
+
+ o It's recommended that you turn on MTRRs under Processor type and
+ Features, but not required.
+
+ o Configure the rest of the kernel as required for your system (i.e. Eth-
+ ernet, SCSI, etc)
+
+ o Exit, saving your kernel configuration.
+
+ o Edit your /etc/lilo.conf file. Make sure you have an image entry as
+ follows (or similar):
+
+ image=/boot/vmlinuz
+ label=linux.2.4.x
+ read-only
+ root=/dev/hda1
+
+ The important part is that you have /boot/vmlinuz without a trailing
+ version number. If this is the first entry in your /etc/lilo.conf AND
+ you haven't set a default, then this will be your default kernel.
+
+ o Compile the new kernel.
+
+ cd /usr/src/linux-2.4.x
+ make dep
+ make bzImage
+ make modules
+ make modules_install
+ make install
+
+ Note that last make command will automatically run lilo for you.
+
+ o Now reboot to use the new kernel.
+
+5. CPU Architectures
+
+In general, nothing special has to be done to use the DRI on different CPU
+architectures. There are, however, a few optimizations that are CPU-depen-
+dent. Mesa will determine at runtime which CPU-dependent optimizations
+should be used and enable them where appropriate.
+
+5.1 Intel Pentium III Features
+
+The Pentium III SSE instructions are used in optimized vertex transformation
+functions in the Mesa-based DRI drivers. On Linux, SSE requires a recent
+kernel (such as 2.4.0-test11 or later) both at compile time and runtime.
+
+5.2 AMD 3DNow! Features
+
+AMD's 3DNow! instructions are used in optimized vertex transformation func-
+tions in the Mesa-based DRI drivers. 3DNow! is supported in most versions of
+Linux.
+
+5.3 Alpha Features
+
+On newer Alpha processors a significant performance increase can be seen with
+the addition of the -mcpu= option to GCC. This option is dependent on the
+architecture of the processor. For example, -mcpu=ev6 will build specifi-
+cally for the EV6 based AXP's, giving both byte and word alignment access to
+the DRI/Mesa drivers.
+
+To enable this optimization edit your xc/config/host.def file and add the
+line:
+
+#define DefaultGcc2AxpOpt -O2 -mcpu=ev6
+
+Additional speed improvements to 3D rendering can be achieved by installing
+Compaq's Math Libraries (CPML) which can be obtained from http://www.sup-
+port.compaq.com/alpha-tools/software/index.html
+
+Once installed, you can add this line to your host.def to build with the CPML
+libraries:
+
+#define UseCompaqMathLibrary YES
+
+The host.def file is explained below.
+
+6. Downloading the XFree86/DRI CVS Sources
+
+The DRI project is hosted by SourceForge. The DRI source code, which is a
+subset of the XFree86 source tree, is kept in a CVS repository there.
+
+The DRI CVS sources may be accessed either anonymously or as a registered
+SourceForge user. It's recommended that you become a registered SourceForge
+user so that you may submit non-anonymous bug reports and can participate in
+the mailing lists.
+
+6.1 Anonymous CVS download:
+
+ 1. Create a directory to store the CVS files:
+
+ cd ~
+ mkdir DRI-CVS
+
+ You could put your CVS directory in a different place but we'll use
+ ~/DRI-CVS/ here.
+
+ 2. Check out the CVS sources:
+
+ cd ~/DRI-CVS
+ cvs -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri login
+ (hit ENTER when prompted for a password)
+ cvs -z3 -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri co xc
+
+ The -z3 flag causes compression to be used in order to reduce the down-
+ load time.
+
+6.2 Registered CVS download:
+
+ 1. Create a directory to store the CVS files:
+
+ cd ~
+ mkdir DRI-CVS
+
+ You could put your CVS directory in a different place but we'll use
+ ~/DRI-CVS/ here.
+
+ 2. Set the CVS_RSH environment variable:
+
+ setenv CVS_RSH ssh // if using csh or tcsh
+ export CVS_RSH=ssh // if using sh or bash
+
+ 3. Check out the CVS sources:
+
+ cd ~/DRI-CVS
+ cvs -z3 -d:ext:YOURID@cvs.dri.sourceforge.net:/cvsroot/dri co xc
+
+ Replace YOURID with your CVS login name. You'll be prompted to enter
+ your sourceforge password.
+
+ The -z3 flag causes compression to be used in order to reduce the down-
+ load time.
+
+6.3 Updating your CVS sources
+
+In the future you'll want to occasionally update your local copy of the DRI
+source code to get the latest changes. This can be done with:
+
+ cd ~/DRI-CVS
+ cvs -z3 update -dA xc
+
+The -d flag causes any new subdirectories to be created and -A causes most
+recent trunk sources to be fetched, not branch sources.
+
+7. Mesa
+
+Most of the DRI 3D drivers are based on Mesa (the free implementation of the
+OpenGL API). The relevant files from Mesa are already included in the
+XFree86/DRI source tree. There is no need to download or install the Mesa
+source files separately.
+
+Sometimes a newer version of Mesa will be available than the version included
+in XFree86/DRI. Upgrading Mesa within XFree86/DRI is not always straightfor-
+ward. It can be an error-prone undertaking, especially for beginners, and is
+not generally recommended. The DRI developers will upgrade Mesa when appro-
+priate.
+
+8. Compiling the XFree86/DRI tree
+
+8.1 Make a build tree
+
+Rather than placing object files and library files right in the source tree,
+they're instead put into a parallel build tree. The build tree is made with
+the lndir command:
+
+ cd ~/DRI-CVS
+ ln -s xc XFree40
+ mkdir build
+ cd build
+ lndir -silent -ignorelinks ../XFree40
+
+The build tree will be populated with symbolic links which point back into
+the CVS source tree.
+
+Advanced users may have several build trees for compiling and testing with
+different options.
+
+8.2 Edit the host.def file
+
+The ~/DRI-CVS/build/xc/config/cf/host.def file is used to configure the
+XFree86 build process. You can change it to customize your build options or
+make adjustments for your particular system configuration
+
+The default host.def file will look something like this:
+
+ #define DefaultCCOptions -Wall
+ (i386) #define DefaultGcc2i386Opt -O2
+ (Alpha) #define DefaultGcc2AxpOpt -O2 -mcpu=ev6 (or similar)
+ #define LibraryCDebugFlags -O2
+ #define BuildServersOnly YES
+ #define XF86CardDrivers vga tdfx mga ati i810
+ #define LinuxDistribution LinuxRedHat
+ #define DefaultCCOptions -ansi GccWarningOptions -pipe
+ #define BuildXF86DRI YES
+ /* Optionally turn these on for debugging */
+ /* #define GlxBuiltInTdfx YES */
+ /* #define GlxBuiltInMga YES */
+ /* #define GlxBuiltInR128 YES */
+ /* #define GlxBuiltInRadeon YES */
+ /* #define DoLoadableServer NO */
+ #define SharedLibFont NO
+
+The ProjectRoot variable specifies where the XFree86 files will be installed.
+We recommend installing the DRI files over your existing XFree86 installation
+- it's generally safe to do and less error-prone. This policy is different
+than what we used to recommend.
+
+If XFree86 4.x is not installed in /usr/X11R6/ you'll have to add the follow-
+ing to the host.def file:
+
+ #define ProjectRoot pathToYourXFree86installation
+
+Note the XF86CardDrivers line to be sure your card's driver is listed.
+
+If you want to enable 3DNow! optimizations in Mesa and the DRI drivers, you
+should add the following:
+
+ #define MesaUse3DNow YES
+
+You don't have to be using an AMD processor in order to enable this option.
+The DRI will look for 3DNow! support and runtime and only enable it if appli-
+cable.
+
+If you want to enable SSE optimizations in Mesa and the DRI drivers, you must
+upgrade to a Linux 2.4.x kernel. Mesa will verify that SSE is supported by
+both your processor and your operating system, but to build Mesa inside the
+DRI you need to have the Linux 2.4.x kernel headers in /usr/src/linux. If
+you enable SSE optimizations with an earlier version of the Linux kernel in
+/usr/src/linux, Mesa will not compile. You have been warned. If you do have
+a 2.4.x kernel, you should add the following:
+
+ #define MesaUseSSE YES
+
+If you want to build the DRM kernel modules as part of the full build pro-
+cess, add the following:
+
+ #define BuildXF86DRM YES
+
+Otherwise, you'll need to build them separately as described below.
+
+8.3 Compilation
+
+To compile the complete DRI tree:
+
+ cd ~/DRI-CVS/build/xc/
+ make World >& world.log
+
+Or if you want to watch the compilation progress:
+
+ cd ~/DRI-CVS/build/xc/
+ make World >& world.log &
+ tail -f world.log
+
+With the default compilation flags it's normal to get a lot of warnings dur-
+ing compilation.
+
+Building will take some time so you may want to go check your email or visit
+slashdot.
+
+WARNING: do not use the -j option with make. It's reported that it does not
+work with XFree86/DRI.
+
+8.4 Check for compilation errors
+
+Using your text editor, examine world.log for errors by searching for the
+pattern ***.
+
+After fixing the errors, run make World again. Later, you might just compile
+parts of the source tree but it's important that the whole tree will build
+first.
+
+If you edited your host.def file to enable automatic building of the DRI ker-
+nel module(s), verify that they were built:
+
+ cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel
+ ls
+
+Otherwise, build them now by running
+
+ cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel
+ make -f Makefile.linux
+
+For the 3dfx Voodoo, you should see tdfx.o. For the Matrox G200/G400, you
+should see mga.o. For the ATI Rage 128, you should see r128.o. For the ATI
+Radeon, you should see radeon.o. For the Intel i810, you should see i810.o.
+
+If the DRI kernel module(s) failed to build you should verify that you're
+using the right version of the Linux kernel. The most recent kernels are not
+always supported.
+
+If your build machine is running a different version of the kernel than your
+target machine (i.e. 2.2.x vs. 2.4.x), make will select the wrong kernel
+source tree. This can be fixed by explicitly setting the value of LINUXDIR.
+If the path to your kernel source is /usr/src/linux-2.4.x,
+
+ cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel
+ make -f Makefile.linux LINUXDIR=/usr/src/linux-2.4.x
+
+or alternatively, edit Makefile.linux to set LINUXDIR before the ifndef LIN-
+UXDIR line.
+
+8.5 DRI kernel module installation
+
+The DRI kernel modules will be in ~/DRI-CVS/build/xc/pro-
+grams/Xserver/hw/xfree86/os-support/linux/drm/kernel/.
+
+To load the appropriate DRM module in your running kernel you can either use
+ismod and restart your X server or copy the kernel module to /lib/mod-
+ules/2.4.x/kernel/drivers/char/drm/ then run depmod and restart your X
+server.
+
+Make sure you first unload any older DRI kernel modules that might be already
+loaded.
+
+Note that some DRM modules require that the agpgart module be loaded first.
+
+9. Normal Installation and Configuration
+
+Most users will want to install the new X server and use it in place of their
+old X server. This section explains how to do that.
+
+Developers, on the other hand, may just want to test the X server without
+actually installing it as their default server. If you want to do that, skip
+to the next section.
+
+9.1 Installation
+
+Here are the installation commands:
+
+ su
+ cd ~/DRI-CVS/build/xc
+ make install
+
+9.2 Update the XF86Config File
+
+You may need to edit your XF86Config file to enable the DRI. The config file
+is usually installed as /etc/X11/XF86Config-4. See the DRI User Guide for
+details, but basically, you need to load the "glx" and "dri" modules and add
+a "DRI" section.
+
+On the DRI web site, in the resources section, you'll find example XF86Config
+files for a number of graphics cards. These configuration files also setup
+DRI options so it's highly recommended that you look at these examples.
+
+The XFree86 4.x server can generate a basic configuration file itself. Sim-
+ply do this:
+
+ cd /usr/X11R6/bin
+ ./XFree86 -configure
+
+A file named /root/XF86Config.new will be created. It should allow you to
+try your X server but you'll almost certainly have to edit it. For example,
+you should add HorizSync and VertRefresh options to the Monitor section and
+Modes options to the Screen section. Also, the ModulePath option in the
+Files section should be set to /usr/X11R6/lib/modules.
+
+9.3 Start the New X Server
+
+The new X server should be ready to use now. Start your X server in your
+usual manner. Often times the startx command is used:
+
+ startx
+
+10. Testing the Server Without Installing It
+
+As mentioned at the start of section 9, developers may want to simply run the
+X server without installing it. This can save some time and allow you to
+keep a number of X servers available for testing.
+
+10.1 Configuration
+
+As described in the preceding section, you'll need to create a configuration
+file for the new server. Put the XF86Config file in your ~/DRI-
+CVS/build/xc/programs/Xserver directory.
+
+Be sure the ModulePath option in your XF86Config file is set correctly.
+
+10.2 A Startup Script
+
+A simple shell script can be used to start the X server. Here's an example.
+
+ #!/bin/sh
+ export DISPLAY=:0
+ ./XFree86 -xf86config XF86Config & \
+ sleep 2
+ fvwm2 &
+ xset b off
+ xmodmap -e "clear mod4"
+ xsetroot -solid "#00306f"
+ xterm -geometry 80x40+0+0
+
+You might name this script start-dri. Put it in your ~/DRI-CVS/build/xc/pro-
+grams/Xserver directory.
+
+To test the server run the script:
+
+ cd ~/DRI-CVS/build/xc/programs/Xserver
+ ./start-dri
+
+For debugging, you may also want to capture the log messages printed by the
+server in a file. If you're using the C-shell:
+
+ ./start-dri >& log
+
+11. Where To Go From Here
+
+At this point your X server should be up and running with hardware-acceler-
+ated direct rendering. Please read the DRI User Guide for information about
+trouble shooting and how to use the DRI-enabled X server for 3D applications.
+
+ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/DRIcomp.sgml,v 1.19 dawes Exp $
diff --git a/xorg-server/hw/xfree86/doc/README.modes b/xorg-server/hw/xfree86/doc/README.modes
index 894e21313..da9d41eb5 100644
--- a/xorg-server/hw/xfree86/doc/README.modes
+++ b/xorg-server/hw/xfree86/doc/README.modes
@@ -1,474 +1,474 @@
- Multi-monitor Mode Setting APIs
- Keith Packard, <keithp@keithp.com
- 6 March 2007
-
-1. Introduction
-
-This document describes a set of mode setting APIs added in X server version
-1.3 that support multiple monitors per card. These interfaces expose the
-underlying hardware CRTC and output concepts to the xf86 DDX layer so that
-the implementation of initial server setup and mode changes through
-extensions can be shared across drivers. In addition, these new interfaces
-support a new configuration mechanism as well which allows each monitor to
-be customized separately providing a consistent cross-driver configuration
-mechanism that supports the full range of output features.
-
-All of the code implementing this interface can be found in hw/xfree86/modes
-in the X server sources.
-
-2. Overview
-
-This document describes both the driver API and the configuration data
-placed in xorg.conf; these are entirely separate as the driver has no
-interaction with the configuration information at all. Much of the structure
-here is cloned from the RandR extension version 1.2 additions which deal
-with the same kinds of information.
-
-2.1 API overview
-
-The mode setting API is expressed through two new driver-visible objects,
-the 'CRTC' (xf86CrtcRec) and the 'Output' (xf86OutputRec). A CRTC refers to
-hardware within the video system that can scan a subset of the framebuffer
-and generate a video signal. An Output receives that signal and transmits it
-to a monitor, projector or other device.
-
-The xf86CrtcRec and xf86OutputRec contain a small amount of state data
-related to the object along with a pointer to a set of functions provided by
-the driver that manipulate the object in fairly simple ways.
-
-To emulate older behaviour, one of the outputs is picked as the 'compat'
-output; this output changes over time as outputs are detected and used, the
-goal is to always have one 'special' output which is used for operations
-which need a single defined monitor (like XFree86-VidModeExtension mode
-setting, RandR 1.1 mode setting, DDC property setting, etc.).
-
-2.1.1 Output overview
-
-As outputs are connected to monitors, they hold a list of modes supported by
-the monitor. If the monitor and output support DDC, then the list of modes
-generally comes from the EDID data in the monitor. Otherwise, the server
-uses the standard VESA modes, pruned by monitor timing. If the configuration
-file doesn't contain monitor timing data, the server uses default timing
-information which supports 640x480, 800x600 and 1024x768 all with a 60Hz
-refresh rate.
-
-As hardware often limits possible configuration combinations, each output
-knows the set of CRTCs that it can be connected to as well as the set of
-other outputs which can be simutaneously connected to a CRTC.
-
-2.1.2 CRTC overview
-
-CRTCs serve only to stream frame buffer data to outputs using a mode line.
-Ideally, they would not be presented to the user at all, and in fact the
-configuration file doesn't expose them. The RandR 1.2 protocol does, but the
-hope there is that client-side applications will hide them carefully away.
-
-Each crtc has an associated cursor, along with the current configuration.
-All of the data needed to determine valid configurations is contained within
-the Outputs.
-
-2.2 Configuration overview
-
-As outputs drive monitors, the "Monitor" section has been repurposed to
-define their configuration. This provides for a bit more syntax than
-the large list of driver-specific options that were used in the past for
-similar configuration.
-
-However, the existing "Monitor" section referenced by the active "Screen"
-section no longer has any use at all; some sensible meaning for this
-parameter is needed now that a Screen can have multiple Monitors.
-
-3. Public Functions
-
-3.1 PreInit functions
-
-These functions should be used during the driver PreInit phase, they are
-arranged in the order they should be invoked.
-
- void
- xf86CrtcConfigInit (ScrnInfoPtr scrn
- const xf86CrtcConfigFuncsRec *funcs)
-
-This function allocates and initializes structures needed to track CRTC and
-Output state.
-
- void
- xf86CrtcSetSizeRange (ScrnInfoPtr scrn,
- int minWidth, int minHeight,
- int maxWidth, int maxHeight)
-
-This sets the range of screen sizes supported by the driver.
-
- xf86CrtcPtr
- xf86CrtcCreate (ScrnInfoPtr scrn,
- const xf86CrtcFuncsRec *funcs)
-
-Create one CRTC object. See the discussion below for a description of the
-contents of the xf86CrtcFuncsRec. Note that this is done in PreInit, so it
-should not be re-invoked at each server generation. Create one of these for
-each CRTC present in the hardware.
-
- xf86OutputPtr
- xf86OutputCreate (ScrnInfoPtr scrn,
- const xf86OutputFuncsRec *funcs,
- const char *name)
-
-Create one Output object. See the discussion below for a description of the
-contents of the xf86OutputFuncsRec. This is also called from PreInit and
-need not be re-invoked at each ScreenInit time. An Output should be created
-for every Output present in the hardware, not just for outputs which have
-detected monitors.
-
- Bool
- xf86OutputRename (xf86OutputPtr output, const char *name)
-
-If necessary, the name of an output can be changed after it is created using
-this function.
-
- Bool
- xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
-
-Using the resources provided, and the configuration specified by the user,
-this function computes an initial configuration for the server. It tries to
-enable as much hardware as possible using some fairly simple heuristics.
-
-The 'canGrow' parameter indicates that the frame buffer does not have a fixed
-size (fixed size frame buffers are required by XAA). When the frame buffer
-has a fixed size, the configuration selects a 'reasonablely large' frame
-buffer so that common reconfiguration options are possible. For resizable
-frame buffers, the frame buffer is set to the smallest size that encloses
-the desired configuration.
-
-3.2 ScreenInit functions
-
-These functions should be used during the driver ScreenInit phase.
-
- Bool
- xf86DiDGAInit (ScreenPtr screen, unsigned long dga_address)
-
-This function provides driver-independent accelerated DGA support for some
-of the DGA operations; using this, the driver can avoid needing to implement
-any of the rest of DGA.
-
- Bool
- xf86SaveScreen(ScreenPtr pScreen, int mode)
-
-Stick this in pScreen->SaveScreen and the core X screen saver will be
-implemented by disabling outputs and crtcs using their dpms functions.
-
- void
- xf86DPMSSet(ScrnInfoPtr scrn, int mode, int flags)
-
-Pass this function to xf86DPMSInit and all DPMS mode switching will be
-managed by using the dpms functions provided by the Outputs and CRTCs.
-
- Bool
- xf86CrtcScreenInit (ScreenPtr screen)
-
-This function completes the screen initialization process for the crtc and
-output objects. Call it near the end of the ScreenInit function, after the
-frame buffer and acceleration layers have been added.
-
-3.3 EnterVT functions
-
-Functions used during EnterVT, or whenever the current configuration needs
-to be applied to the hardware.
-
- Bool
- xf86SetDesiredModes (ScrnInfoPtr scrn)
-
-xf86InitialConfiguration selects the desired configuration at PreInit time;
-when the server finally hits ScreenInit, xf86SetDesiredModes is used by the
-driver to take that configuration and apply it to the hardware. In addition,
-successful mode selection at other times updates the configuration that will
-be used by this function, so LeaveVT/EnterVT pairs can simply invoke this
-and return to the previous configuration.
-
-3.4 SwitchMode functions
-
-Functions called from the pScrn->SwitchMode hook, which is used by the
-XFree86-VidModeExtension and the keypad mode switch commands.
-
- Bool
- xf86SetSingleMode (ScrnInfoPtr scrn,
- DisplayModePtr desired,
- Rotation rotation)
-
-This function applies the specified mode to all active outputs. Which is to
-say, it picks reasonable modes for all active outputs, attempting to get the
-screen to the specified size while not breaking anything that is currently
-working.
-
-3.7 get_modes functions
-
-Functions called during output->get_modes to help build lists of modes
-
- xf86MonPtr
- xf86OutputGetEDID (xf86OutputPtr output, I2CBusPtr pDDCBus)
-
-This returns the EDID data structure for the 'output' using the I2C bus
-'pDDCBus'. This has no effect on 'output' itself.
-
- void
- xf86OutputSetEDID (xf86OutputPtr output, xf86MonPtr edid_mon)
-
-Once the EDID data has been fetched, this call applies the EDID data to the
-output object, setting the physical size and also various properties, like
-the DDC root window property (when output is the 'compat' output), and the
-RandR 1.2 EDID output properties.
-
- DisplayModePtr
- xf86OutputGetEDIDModes (xf86OutputPtr output)
-
-Given an EDID data structure, this function computes a list of suitable
-modes. This function also applies a sequence of 'quirks' during this process
-so that the returned modes may not actually match the mode data present in
-the EDID data.
-
-3.6 Other functions
-
-These remaining functions in the API can be used by the driver as needed.
-
- Bool
- xf86CrtcSetMode (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation,
- int x, int y)
-
-Applies a mode to a CRTC. All of the outputs which are currently using the
-specified CRTC are included in the mode setting process. 'x' and 'y' are the
-offset within the frame buffer that the crtc is placed at. No checking is
-done in this function to ensure that the mode is usable by the active
-outputs.
-
- void
- xf86ProbeOutputModes (ScrnInfoPtr pScrn, int maxX, int maxY)
-
-This discards the mode lists for all outputs, re-detects monitor presence
-and then acquires new mode lists for all monitors which are not disconnected.
-Monitor configuration data is used to modify the mode lists returned by the
-outputs. 'maxX' and 'maxY' limit the maximum size modes that will be
-returned.
-
- void
- xf86SetScrnInfoModes (ScrnInfoPtr pScrn)
-
-This copies the 'compat' output mode list into the pScrn modes list which is
-used by the XFree86-VidModeExtension and the keypad mode switching
-operations. The current 'desired' mode for the CRTC associated with the
-'compat' output is placed first in this list to indicate the current mode.
-Usually, the driver won't need to call this function as
-xf86InitialConfiguration will do so automatically, as well as any RandR
-functions which reprobe for modes. However, if the driver reprobes for modes
-at other times using xf86ProbeOutputModes, this function needs to be called.
-
- Bool
- xf86DiDGAReInit (ScreenPtr pScreen)
-
-This is similar to xf86SetScrnInfoModes, but it applies the 'compat' output
-mode list to the set of modes advertised by the DGA extension; it needs to
-be called whenever xf86ProbeOutputModes is invoked.
-
- void
- xf86DisableUnusedFunctions(ScrnInfoPtr pScrn)
-
-After any sequence of calls using xf86CrtcSetMode, this function cleans up
-any leftover Output and CRTC objects by disabling them, saving power. It is
-safe to call this whenever the server is running as it only disables objects
-which are not currently in use.
-
-4. CRTC operations
-
-4.1 CRTC functions
-
-These functions provide an abstract interface for the CRTC object; most
-manipulation of the CRTC object is done through these functions.
-
- void
- crtc->funcs->dpms (xf86CrtcPtr crtc, int mode)
-
-Where 'mode' is one of DPMSModeOff, DPMSModeSuspend, DPMSModeStandby or
-DPMSModeOn. This requests that the crtc go to the specified power state.
-When changing power states, the output dpms functions are invoked before the
-crtc dpms functions.
-
- void
- crtc->funcs->save (xf86CrtcPtr crtc)
-
- void
- crtc->funcs->restore (xf86CrtcPtr crtc)
-
-Preserve/restore any register contents related to the CRTC. These are
-strictly a convenience for the driver writer; if the existing driver has
-fully operation save/restore functions, you need not place any additional
-code here. In particular, the server itself never uses this function.
-
- Bool
- crtc->funcs->lock (xf86CrtcPtr crtc)
-
- void
- crtc->funcs->unlock (xf86CrtcPtr crtc)
-
-These functions are invoked around mode setting operations; the intent is
-that DRI locking be done here to prevent DRI applications from manipulating
-the hardware while the server is busy changing the output configuration. If
-the lock function returns FALSE, the unlock function will not be invoked.
-
- Bool
- crtc->funcs->mode_fixup (xf86CrtcPtr crtc,
- DisplayModePtr mode,
- DisplayModePtr adjusted_mode)
-
-This call gives the CRTC a chance to see what mode will be set and to
-comment on the mode by changing 'adjusted_mode' as needed. This function
-shall not modify the state of the crtc hardware at all. If the CRTC cannot
-accept this mode, this function may return FALSE.
-
- void
- crtc->funcs->prepare (xf86CrtcPtr crtc)
-
-This call is made just before the mode is set to make the hardware ready for
-the operation. A usual function to perform here is to disable the crtc so
-that mode setting can occur with clocks turned off and outputs deactivated.
-
- void
- crtc->funcs->mode_set (xf86CrtcPtr crtc,
- DisplayModePtr mode,
- DisplayModePtr adjusted_mode)
-
-This function applies the specified mode (possibly adjusted by the CRTC
-and/or Outputs).
-
- void
- crtc->funcs->commit (xf86CrtcPtr crtc)
-
-Once the mode has been applied to the CRTC and Outputs, this function is
-invoked to let the hardware turn things back on.
-
- void
- crtc->funcs->gamma_set (xf86CrtcPtr crtc, CARD16 *red,
- CARD16 *green, CARD16 *blue, int size)
-
-This function adjusts the gamma ramps for the specified crtc.
-
- void *
- crtc->funcs->shadow_allocate (xf86CrtcPtr crtc, int width, int height)
-
-This function allocates frame buffer space for a shadow frame buffer. When
-allocated, the crtc must scan from the shadow instead of the main frame
-buffer. This is used for rotation. The address returned is passed to the
-shadow_create function. This function should return NULL on failure.
-
- PixmapPtr
- crtc->funcs->shadow_create (xf86CrtcPtr crtc, void *data,
- int width, int height)
-
-This function creates a pixmap object that will be used as a shadow of the
-main frame buffer for CRTCs which are rotated or reflected. 'data' is the
-value returned by shadow_allocate.
-
- void
- crtc->funcs->shadow_destroy (xf86CrtcPtr crtc, PixmapPtr pPixmap,
- void *data)
-
-Destroys any associated shadow objects. If pPixmap is NULL, then a pixmap
-was not created, but 'data' may still be non-NULL indicating that the shadow
-had been allocated.
-
- void
- crtc->funcs->destroy (xf86CrtcPtr crtc)
-
-When a CRTC is destroyed (which only happens in error cases), this function
-can clean up any driver-specific data.
-
-4.2 CRTC fields
-
-The CRTC object is not opaque; there are several fields of interest to the
-driver writer.
-
- struct _xf86Crtc {
- /**
- * Associated ScrnInfo
- */
- ScrnInfoPtr scrn;
-
- /**
- * Active state of this CRTC
- *
- * Set when this CRTC is driving one or more outputs
- */
- Bool enabled;
-
- /** Track whether cursor is within CRTC range */
- Bool cursorInRange;
-
- /** Track state of cursor associated with this CRTC */
- Bool cursorShown;
-
- /**
- * Active mode
- *
- * This reflects the mode as set in the CRTC currently
- * It will be cleared when the VT is not active or
- * during server startup
- */
- DisplayModeRec mode;
- Rotation rotation;
- PixmapPtr rotatedPixmap;
- void *rotatedData;
-
- /**
- * Position on screen
- *
- * Locates this CRTC within the frame buffer
- */
- int x, y;
-
- /**
- * Desired mode
- *
- * This is set to the requested mode, independent of
- * whether the VT is active. In particular, it receives
- * the startup configured mode and saves the active mode
- * on VT switch.
- */
- DisplayModeRec desiredMode;
- Rotation desiredRotation;
- int desiredX, desiredY;
-
- /** crtc-specific functions */
- const xf86CrtcFuncsRec *funcs;
-
- /**
- * Driver private
- *
- * Holds driver-private information
- */
- void *driver_private;
- #ifdef RANDR_12_INTERFACE
- /**
- * RandR crtc
- *
- * When RandR 1.2 is available, this
- * points at the associated crtc object
- */
- RRCrtcPtr randr_crtc;
- #else
- void *randr_crtc;
- #endif
- };
-
-
-5. Output functions.
-
-6. Configuration
-
-Because the configuration file syntax is fixed,
-this was done by creating new "Driver" section options that hook specific
-outputs to specific "Monitor" sections in the file. The option:
-section of the form:
-
- Option "monitor-VGA" "My VGA Monitor"
-
-connects the VGA output of this driver to the "Monitor" section with
-Identifier "My VGA Monitor". All of the usual monitor options can now be
-placed in that "Monitor" section and will be applied to the VGA output
-configuration.
+ Multi-monitor Mode Setting APIs
+ Keith Packard, <keithp@keithp.com
+ 6 March 2007
+
+1. Introduction
+
+This document describes a set of mode setting APIs added in X server version
+1.3 that support multiple monitors per card. These interfaces expose the
+underlying hardware CRTC and output concepts to the xf86 DDX layer so that
+the implementation of initial server setup and mode changes through
+extensions can be shared across drivers. In addition, these new interfaces
+support a new configuration mechanism as well which allows each monitor to
+be customized separately providing a consistent cross-driver configuration
+mechanism that supports the full range of output features.
+
+All of the code implementing this interface can be found in hw/xfree86/modes
+in the X server sources.
+
+2. Overview
+
+This document describes both the driver API and the configuration data
+placed in xorg.conf; these are entirely separate as the driver has no
+interaction with the configuration information at all. Much of the structure
+here is cloned from the RandR extension version 1.2 additions which deal
+with the same kinds of information.
+
+2.1 API overview
+
+The mode setting API is expressed through two new driver-visible objects,
+the 'CRTC' (xf86CrtcRec) and the 'Output' (xf86OutputRec). A CRTC refers to
+hardware within the video system that can scan a subset of the framebuffer
+and generate a video signal. An Output receives that signal and transmits it
+to a monitor, projector or other device.
+
+The xf86CrtcRec and xf86OutputRec contain a small amount of state data
+related to the object along with a pointer to a set of functions provided by
+the driver that manipulate the object in fairly simple ways.
+
+To emulate older behaviour, one of the outputs is picked as the 'compat'
+output; this output changes over time as outputs are detected and used, the
+goal is to always have one 'special' output which is used for operations
+which need a single defined monitor (like XFree86-VidModeExtension mode
+setting, RandR 1.1 mode setting, DDC property setting, etc.).
+
+2.1.1 Output overview
+
+As outputs are connected to monitors, they hold a list of modes supported by
+the monitor. If the monitor and output support DDC, then the list of modes
+generally comes from the EDID data in the monitor. Otherwise, the server
+uses the standard VESA modes, pruned by monitor timing. If the configuration
+file doesn't contain monitor timing data, the server uses default timing
+information which supports 640x480, 800x600 and 1024x768 all with a 60Hz
+refresh rate.
+
+As hardware often limits possible configuration combinations, each output
+knows the set of CRTCs that it can be connected to as well as the set of
+other outputs which can be simutaneously connected to a CRTC.
+
+2.1.2 CRTC overview
+
+CRTCs serve only to stream frame buffer data to outputs using a mode line.
+Ideally, they would not be presented to the user at all, and in fact the
+configuration file doesn't expose them. The RandR 1.2 protocol does, but the
+hope there is that client-side applications will hide them carefully away.
+
+Each crtc has an associated cursor, along with the current configuration.
+All of the data needed to determine valid configurations is contained within
+the Outputs.
+
+2.2 Configuration overview
+
+As outputs drive monitors, the "Monitor" section has been repurposed to
+define their configuration. This provides for a bit more syntax than
+the large list of driver-specific options that were used in the past for
+similar configuration.
+
+However, the existing "Monitor" section referenced by the active "Screen"
+section no longer has any use at all; some sensible meaning for this
+parameter is needed now that a Screen can have multiple Monitors.
+
+3. Public Functions
+
+3.1 PreInit functions
+
+These functions should be used during the driver PreInit phase, they are
+arranged in the order they should be invoked.
+
+ void
+ xf86CrtcConfigInit (ScrnInfoPtr scrn
+ const xf86CrtcConfigFuncsRec *funcs)
+
+This function allocates and initializes structures needed to track CRTC and
+Output state.
+
+ void
+ xf86CrtcSetSizeRange (ScrnInfoPtr scrn,
+ int minWidth, int minHeight,
+ int maxWidth, int maxHeight)
+
+This sets the range of screen sizes supported by the driver.
+
+ xf86CrtcPtr
+ xf86CrtcCreate (ScrnInfoPtr scrn,
+ const xf86CrtcFuncsRec *funcs)
+
+Create one CRTC object. See the discussion below for a description of the
+contents of the xf86CrtcFuncsRec. Note that this is done in PreInit, so it
+should not be re-invoked at each server generation. Create one of these for
+each CRTC present in the hardware.
+
+ xf86OutputPtr
+ xf86OutputCreate (ScrnInfoPtr scrn,
+ const xf86OutputFuncsRec *funcs,
+ const char *name)
+
+Create one Output object. See the discussion below for a description of the
+contents of the xf86OutputFuncsRec. This is also called from PreInit and
+need not be re-invoked at each ScreenInit time. An Output should be created
+for every Output present in the hardware, not just for outputs which have
+detected monitors.
+
+ Bool
+ xf86OutputRename (xf86OutputPtr output, const char *name)
+
+If necessary, the name of an output can be changed after it is created using
+this function.
+
+ Bool
+ xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
+
+Using the resources provided, and the configuration specified by the user,
+this function computes an initial configuration for the server. It tries to
+enable as much hardware as possible using some fairly simple heuristics.
+
+The 'canGrow' parameter indicates that the frame buffer does not have a fixed
+size (fixed size frame buffers are required by XAA). When the frame buffer
+has a fixed size, the configuration selects a 'reasonablely large' frame
+buffer so that common reconfiguration options are possible. For resizable
+frame buffers, the frame buffer is set to the smallest size that encloses
+the desired configuration.
+
+3.2 ScreenInit functions
+
+These functions should be used during the driver ScreenInit phase.
+
+ Bool
+ xf86DiDGAInit (ScreenPtr screen, unsigned long dga_address)
+
+This function provides driver-independent accelerated DGA support for some
+of the DGA operations; using this, the driver can avoid needing to implement
+any of the rest of DGA.
+
+ Bool
+ xf86SaveScreen(ScreenPtr pScreen, int mode)
+
+Stick this in pScreen->SaveScreen and the core X screen saver will be
+implemented by disabling outputs and crtcs using their dpms functions.
+
+ void
+ xf86DPMSSet(ScrnInfoPtr scrn, int mode, int flags)
+
+Pass this function to xf86DPMSInit and all DPMS mode switching will be
+managed by using the dpms functions provided by the Outputs and CRTCs.
+
+ Bool
+ xf86CrtcScreenInit (ScreenPtr screen)
+
+This function completes the screen initialization process for the crtc and
+output objects. Call it near the end of the ScreenInit function, after the
+frame buffer and acceleration layers have been added.
+
+3.3 EnterVT functions
+
+Functions used during EnterVT, or whenever the current configuration needs
+to be applied to the hardware.
+
+ Bool
+ xf86SetDesiredModes (ScrnInfoPtr scrn)
+
+xf86InitialConfiguration selects the desired configuration at PreInit time;
+when the server finally hits ScreenInit, xf86SetDesiredModes is used by the
+driver to take that configuration and apply it to the hardware. In addition,
+successful mode selection at other times updates the configuration that will
+be used by this function, so LeaveVT/EnterVT pairs can simply invoke this
+and return to the previous configuration.
+
+3.4 SwitchMode functions
+
+Functions called from the pScrn->SwitchMode hook, which is used by the
+XFree86-VidModeExtension and the keypad mode switch commands.
+
+ Bool
+ xf86SetSingleMode (ScrnInfoPtr scrn,
+ DisplayModePtr desired,
+ Rotation rotation)
+
+This function applies the specified mode to all active outputs. Which is to
+say, it picks reasonable modes for all active outputs, attempting to get the
+screen to the specified size while not breaking anything that is currently
+working.
+
+3.7 get_modes functions
+
+Functions called during output->get_modes to help build lists of modes
+
+ xf86MonPtr
+ xf86OutputGetEDID (xf86OutputPtr output, I2CBusPtr pDDCBus)
+
+This returns the EDID data structure for the 'output' using the I2C bus
+'pDDCBus'. This has no effect on 'output' itself.
+
+ void
+ xf86OutputSetEDID (xf86OutputPtr output, xf86MonPtr edid_mon)
+
+Once the EDID data has been fetched, this call applies the EDID data to the
+output object, setting the physical size and also various properties, like
+the DDC root window property (when output is the 'compat' output), and the
+RandR 1.2 EDID output properties.
+
+ DisplayModePtr
+ xf86OutputGetEDIDModes (xf86OutputPtr output)
+
+Given an EDID data structure, this function computes a list of suitable
+modes. This function also applies a sequence of 'quirks' during this process
+so that the returned modes may not actually match the mode data present in
+the EDID data.
+
+3.6 Other functions
+
+These remaining functions in the API can be used by the driver as needed.
+
+ Bool
+ xf86CrtcSetMode (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation,
+ int x, int y)
+
+Applies a mode to a CRTC. All of the outputs which are currently using the
+specified CRTC are included in the mode setting process. 'x' and 'y' are the
+offset within the frame buffer that the crtc is placed at. No checking is
+done in this function to ensure that the mode is usable by the active
+outputs.
+
+ void
+ xf86ProbeOutputModes (ScrnInfoPtr pScrn, int maxX, int maxY)
+
+This discards the mode lists for all outputs, re-detects monitor presence
+and then acquires new mode lists for all monitors which are not disconnected.
+Monitor configuration data is used to modify the mode lists returned by the
+outputs. 'maxX' and 'maxY' limit the maximum size modes that will be
+returned.
+
+ void
+ xf86SetScrnInfoModes (ScrnInfoPtr pScrn)
+
+This copies the 'compat' output mode list into the pScrn modes list which is
+used by the XFree86-VidModeExtension and the keypad mode switching
+operations. The current 'desired' mode for the CRTC associated with the
+'compat' output is placed first in this list to indicate the current mode.
+Usually, the driver won't need to call this function as
+xf86InitialConfiguration will do so automatically, as well as any RandR
+functions which reprobe for modes. However, if the driver reprobes for modes
+at other times using xf86ProbeOutputModes, this function needs to be called.
+
+ Bool
+ xf86DiDGAReInit (ScreenPtr pScreen)
+
+This is similar to xf86SetScrnInfoModes, but it applies the 'compat' output
+mode list to the set of modes advertised by the DGA extension; it needs to
+be called whenever xf86ProbeOutputModes is invoked.
+
+ void
+ xf86DisableUnusedFunctions(ScrnInfoPtr pScrn)
+
+After any sequence of calls using xf86CrtcSetMode, this function cleans up
+any leftover Output and CRTC objects by disabling them, saving power. It is
+safe to call this whenever the server is running as it only disables objects
+which are not currently in use.
+
+4. CRTC operations
+
+4.1 CRTC functions
+
+These functions provide an abstract interface for the CRTC object; most
+manipulation of the CRTC object is done through these functions.
+
+ void
+ crtc->funcs->dpms (xf86CrtcPtr crtc, int mode)
+
+Where 'mode' is one of DPMSModeOff, DPMSModeSuspend, DPMSModeStandby or
+DPMSModeOn. This requests that the crtc go to the specified power state.
+When changing power states, the output dpms functions are invoked before the
+crtc dpms functions.
+
+ void
+ crtc->funcs->save (xf86CrtcPtr crtc)
+
+ void
+ crtc->funcs->restore (xf86CrtcPtr crtc)
+
+Preserve/restore any register contents related to the CRTC. These are
+strictly a convenience for the driver writer; if the existing driver has
+fully operation save/restore functions, you need not place any additional
+code here. In particular, the server itself never uses this function.
+
+ Bool
+ crtc->funcs->lock (xf86CrtcPtr crtc)
+
+ void
+ crtc->funcs->unlock (xf86CrtcPtr crtc)
+
+These functions are invoked around mode setting operations; the intent is
+that DRI locking be done here to prevent DRI applications from manipulating
+the hardware while the server is busy changing the output configuration. If
+the lock function returns FALSE, the unlock function will not be invoked.
+
+ Bool
+ crtc->funcs->mode_fixup (xf86CrtcPtr crtc,
+ DisplayModePtr mode,
+ DisplayModePtr adjusted_mode)
+
+This call gives the CRTC a chance to see what mode will be set and to
+comment on the mode by changing 'adjusted_mode' as needed. This function
+shall not modify the state of the crtc hardware at all. If the CRTC cannot
+accept this mode, this function may return FALSE.
+
+ void
+ crtc->funcs->prepare (xf86CrtcPtr crtc)
+
+This call is made just before the mode is set to make the hardware ready for
+the operation. A usual function to perform here is to disable the crtc so
+that mode setting can occur with clocks turned off and outputs deactivated.
+
+ void
+ crtc->funcs->mode_set (xf86CrtcPtr crtc,
+ DisplayModePtr mode,
+ DisplayModePtr adjusted_mode)
+
+This function applies the specified mode (possibly adjusted by the CRTC
+and/or Outputs).
+
+ void
+ crtc->funcs->commit (xf86CrtcPtr crtc)
+
+Once the mode has been applied to the CRTC and Outputs, this function is
+invoked to let the hardware turn things back on.
+
+ void
+ crtc->funcs->gamma_set (xf86CrtcPtr crtc, CARD16 *red,
+ CARD16 *green, CARD16 *blue, int size)
+
+This function adjusts the gamma ramps for the specified crtc.
+
+ void *
+ crtc->funcs->shadow_allocate (xf86CrtcPtr crtc, int width, int height)
+
+This function allocates frame buffer space for a shadow frame buffer. When
+allocated, the crtc must scan from the shadow instead of the main frame
+buffer. This is used for rotation. The address returned is passed to the
+shadow_create function. This function should return NULL on failure.
+
+ PixmapPtr
+ crtc->funcs->shadow_create (xf86CrtcPtr crtc, void *data,
+ int width, int height)
+
+This function creates a pixmap object that will be used as a shadow of the
+main frame buffer for CRTCs which are rotated or reflected. 'data' is the
+value returned by shadow_allocate.
+
+ void
+ crtc->funcs->shadow_destroy (xf86CrtcPtr crtc, PixmapPtr pPixmap,
+ void *data)
+
+Destroys any associated shadow objects. If pPixmap is NULL, then a pixmap
+was not created, but 'data' may still be non-NULL indicating that the shadow
+had been allocated.
+
+ void
+ crtc->funcs->destroy (xf86CrtcPtr crtc)
+
+When a CRTC is destroyed (which only happens in error cases), this function
+can clean up any driver-specific data.
+
+4.2 CRTC fields
+
+The CRTC object is not opaque; there are several fields of interest to the
+driver writer.
+
+ struct _xf86Crtc {
+ /**
+ * Associated ScrnInfo
+ */
+ ScrnInfoPtr scrn;
+
+ /**
+ * Active state of this CRTC
+ *
+ * Set when this CRTC is driving one or more outputs
+ */
+ Bool enabled;
+
+ /** Track whether cursor is within CRTC range */
+ Bool cursorInRange;
+
+ /** Track state of cursor associated with this CRTC */
+ Bool cursorShown;
+
+ /**
+ * Active mode
+ *
+ * This reflects the mode as set in the CRTC currently
+ * It will be cleared when the VT is not active or
+ * during server startup
+ */
+ DisplayModeRec mode;
+ Rotation rotation;
+ PixmapPtr rotatedPixmap;
+ void *rotatedData;
+
+ /**
+ * Position on screen
+ *
+ * Locates this CRTC within the frame buffer
+ */
+ int x, y;
+
+ /**
+ * Desired mode
+ *
+ * This is set to the requested mode, independent of
+ * whether the VT is active. In particular, it receives
+ * the startup configured mode and saves the active mode
+ * on VT switch.
+ */
+ DisplayModeRec desiredMode;
+ Rotation desiredRotation;
+ int desiredX, desiredY;
+
+ /** crtc-specific functions */
+ const xf86CrtcFuncsRec *funcs;
+
+ /**
+ * Driver private
+ *
+ * Holds driver-private information
+ */
+ void *driver_private;
+ #ifdef RANDR_12_INTERFACE
+ /**
+ * RandR crtc
+ *
+ * When RandR 1.2 is available, this
+ * points at the associated crtc object
+ */
+ RRCrtcPtr randr_crtc;
+ #else
+ void *randr_crtc;
+ #endif
+ };
+
+
+5. Output functions.
+
+6. Configuration
+
+Because the configuration file syntax is fixed,
+this was done by creating new "Driver" section options that hook specific
+outputs to specific "Monitor" sections in the file. The option:
+section of the form:
+
+ Option "monitor-VGA" "My VGA Monitor"
+
+connects the VGA output of this driver to the "Monitor" section with
+Identifier "My VGA Monitor". All of the usual monitor options can now be
+placed in that "Monitor" section and will be applied to the VGA output
+configuration.
diff --git a/xorg-server/hw/xfree86/doc/Registry b/xorg-server/hw/xfree86/doc/Registry
index 89a5f10fa..48e24a2f4 100644
--- a/xorg-server/hw/xfree86/doc/Registry
+++ b/xorg-server/hw/xfree86/doc/Registry
@@ -1,409 +1,409 @@
-This is the XFree86 driver/module registry. To avoid name space clashes and
-to maintain some consistency between drivers the important name spaces are
-maintained here.
-
-1. Module Names.
-
-Each module is required to have a unique name. Registered names are:
-
-GLcore
-acecad
-afb
-apm
-ark
-ati
-atimisc
-bitmap
-bt8xx
-calcomp
-cfb
-cfb16
-cfb24
-cfb32
-chips
-cirrus
-citron
-cyrix
-dbe
-ddc
-digitaledge
-dmc
-dri
-drm
-dynapro
-elo2300
-elographics
-extmod
-fb
-fbdev
-fbdevhw
-fi12x6
-freetype
-glide
-glint
-glx
-hyperpen
-i128
-i2c
-i740
-i810
-imstt
-int10
-joystick
-keyboard
-layer
-magellan
-magictouch
-mfb
-mga
-microtouch
-mouse
-msp34xx
-mutouch
-neomagic
-newport
-nv
-pcidata
-penmount
-pex5
-r128
-radeon
-rac
-ramdac
-record
-rendition
-s3
-s3virge
-savage
-shadow
-shadowfb
-siliconmotion
-sis
-spaceorb
-speedo
-summa
-sunbw2
-suncg14
-suncg3
-suncg6
-sunffb
-sunleo
-suntcx
-tdfx
-tga
-trident
-tseng
-type1
-v4l
-vbe
-vesa
-vga
-vgahw
-vmware
-void
-wacom
-xaa
-xf1bpp
-xf24_32bpp
-xf4bpp
-xf8_16bpp
-xf8_32bpp
-xf8_32wid
-xie
-xtrap
-xtt
-
-2. External Module Object Symbols.
-
-Each module is required to use a unique prefix or prefixes for all of
-its externally visible symbols. They should be unique without regard to
-case. Registered prefixes are:
-
-ati
-bt8xx
-cfb
-chips
-fi12x6
-glide
-glint
-mfb
-mga
-msp34xx
-neo
-permedia
-tseng
-vga
-vgahw
-vmware
-xaa
-xf1bpp
-xf4bpp
-
-3. Chipset Names.
-
-Each video driver is required to use a unique set of chipset names. Case,
-white space and underscore characters are ignored when comparing chipset
-names. All names listed here are in lower case with all white space and
-underscores removed. Registered chipset names are:
-
-ati
-ativga
-ct64200
-ct64300
-ct65520
-ct65525
-ct65530
-ct65535
-ct65540
-ct65545
-ct65546
-ct65548
-ct65550
-ct65554
-ct65555
-ct68554
-ct69000
-et4000
-et4000w32
-et4000w32i
-et4000w32p
-et6000
-et6100
-generic
-ibmvga
-ibm8514
-mach32
-mach64
-mach8
-mga2064w
-mga1064sg
-mga2164w
-mga2164wagp
-neo2070
-neo2090
-neo2093
-neo2097
-neo2160
-neo2200
-tipm2
-vgawonder
-voodoo
-
-4. Option Names.
-
-Option names and their usage should be consistent between drivers.
-Case, white space and underscore characters are ignored when comparing
-option names. The prefix "no" may be added or removed from boolean
-option names. All names listed here are in their preferred user-visible
-form. Some registered option names are:
-
-Types are: B = boolean, O = set/unset (no value), I = integer, S = string,
- A = optional string, F = floating point number Q = frequency
-
-Scopes are: F = global flags, V = video driver, C = common (per screen),
- I = input drivers, X = XAA, Xv = Xv extension, M = misc.
-
-Names currently in use:
-
-Name Type Scope Description
-----------------------------------------------------------------------------
-AllowMouseOpenFail B F ignore mouse dev open failure
-AllowNonLocalModInDev B F allow non-local mod of input devs
-AllowNonLocalXvidtune B F allow non-local VidMode connections
-BlankTime I F Screen saver timeout (min)
-DisableModInDev B F disallow changing input devs
-DisableVidModeExtension B F disable VidMode extension
-DontVTSwitch B F disable Ctrl-Alt-Fn
-DontZap B F disable Ctrl-Alt-BS sequence
-DontZoom B F disable Ctrl-Alt-+/-
-NoTrapSignals B F don't trap signals
-OffTime I F Time before DPMS off mode active (min)
-PciProbe1 O F use PCI probe algorithm 1
-PciProbe2 O F use PCI probe algorithm 2
-PciForceConfig1 O F force PCI config type 1
-PciForceConfig2 O F force PCI config type 2
-Pixmap I F depth 24 pixmap size (24 or 32)
-StandbyTime I F Time before DPMS standby active (min)
-SuspendTime I F Time before DPMS suspend mode active (min)
-
-BackingStore B C Enable backing store
-DDC B C Enable/disable DDC
-DDC1 B C Enable/disable DDC1
-DDC2 B C Enable/disable DDC2
-DPMS O C Enable DPMS
-MTRR B C Enable/disable setting MTRRs
-
-BaudRate I I Serial port baud rate
-ButtonNumber I I Button number (for touch screen?)
-ButtonThreshold I I ??
-ClearDTR O I Clear serial port DTR
-ClearRTS O I Clear serial port RTS
-DataBits I I Serial port data bits
-DemandLoad O I ??
-Device S I Device file name
-DeviceName S I Input device name
-FlowControl S I Serial flow control ("xon", "none")
-Floating B I Device initialised as floating
-HistorySize I I ??
-MaxX I I Maximum X coordinate
-MaxY I I Maximum Y coordinate
-MinX I I Minimum X coordinate
-MinY I I Minimum Y coordinate
-Parity S I Serial port parity ("odd", "even", "none")
-ReportDelay I I ??
-ReportingMode S I may be "raw" or "scaled"
-ScreenNumber I I Screen number (for touch screen)
-SendCoreEvents B I Send core events
-StopBits I I Serial port stop bits
-SwapXY B I Swap the X and Y axes
-UntouchDelay I I ??
-Vmin I I Tty VMIN
-Vtime I I Tty VTIME
-
-
-18BitBus B V ??
-8Plus16 B V Enable depth 8 + depth 16 with overlay
-8Plus24 B V Enable depth 8 + depth 24 with overlay
-BlockWrite B V Enable/disable block write
-ColorKey I V Set the color key for overlay modes
-CompositeSync B V Composite sync
-CRTDisplay B V Force display on CRT, not LCD
-CRTScreen B V Display on CRT, not LCD (Obsolete)
-EarlyRasPrecharge O V Early RAS pre-charge
-FastDRAM O V Fast DRAM
-FifoAggressive O V Aggressive FIFO setting
-FifoConservative O V Conservative FIFO setting
-FifoModerate O V Moderate FIFO setting
-FireGL3000 B V Card is Diamond FireGL3000
-FixPanelSize B V ??
-FPClock8 Q V Flat panel clock for 8bpp fb (MHz)
-FPClock16 Q V Flat panel clock for 16bpp fb (MHz)
-FPClock24 Q V Flat panel clock for 24bpp fb (MHz)
-FPClock32 Q V Flat panel clock for 32bpp fb (MHz)
-FPMVRAM O V Fast page mode VRAM
-FramebufferWC B V Enable/disable WC for the framebuffer
-GlideDevice I V Selects which Voodoo board to use
-HiBitHigh O V High clock bit default to set
-HiBitLow O V High clock bit default to cleared
-HWClocks B V Enable/disable HW clocks
-HWCursor B V Enable/disable HW cursor
-LateRasPrecharge O V Late RAS pre-charge
-Legend O V Card is Legend ET4000
-LCDCenter B V Enable/disable centering for LCD displays
-Linear B V Enable/disable linear framebuffer
-MCLK Q V Specify the current MCLK value (MHz)
-MedDRAM B V Medium speed DRAM
-MemCfg1 I V ??
-MemCfg2 I V ??
-MGASDRAM B V Mga card has SDRAM
-MMIO B V Enable/disable memory mapped I/O
-MMIOCache B V Enable/Disable MMIO cache
-MuxThreshold I V Multiplexing threshold (kHz)
-NoAccel B V Disable/enable acceleration
-NoClockChip B V ??
-NoStretch B V Disable/enable stretching for LCD displays
-OnAtExit B V Leave video signal on when exiting server
-OverclockMem B V Enable memory overclocking
-Overlay A V Enable multi-depth/overlay. An optional
- string "M,N" may be specified, where
- M, N are the depths.
-PanelDisplay B V Force display on LCD
-PciBurst B V Enable/disable PCI burst mode
-PciRetry B V Enable/disable PCI retries
-ProbeClocks B V Force probe for non-programmable clocks
-ReferenceClock Q V Clock generator reference frequency
-RGBbits I V Number of significant bits per rgb
-Rotate S V Rotate the virtual display (CW or CCW)
-SetLCDClk Q V Set LCD clock (MHz)
-SetMclk Q V Set Memory Clock (MHz)
-ShadowFB B V Enable shadow framebuffer layer
-ShowCache B V Enable viewing of offscreen memory
-ShowOverscan O V Set the overscan area to a visible colour
-SlowDRAM O V Slow DRAM
-SlowEDODRAM O V Slow EDO DRAM
-STN B V STN screen type (??)
-SWCursor B V Enable/disable SW cursor
-SuspendHack B V ??
-SyncOnGreen B V Enable/disable sync on green
-TurboQueue B V Enable/disable turbo queue
-UseFBDev B V Use the fbdev driver interface
-UseModeLine B V Use Modeline (??)
-W32Interleave B V ??
-
-Buffers I Xv Number of buffers
-Device S Xv Device file name
-Expose B Xv Disable occlusion clipping (see DESIGN)
-FramesPerSec I Xv Max. refresh frequency
-
-XAA options. All are of type "O" and scope "X", and are self-explanatory
-
-XaaNoColor8x8PatternFillRect
-XaaNoColor8x8PatternFillTrap
-XaaNoCPUToScreenColorExpandFill
-XaaNoDashedBresenhamLine
-XaaNoDashedTwoPointLine
-XaaNoScreenToScreenCopy
-XaaNoImageReadRect
-XaaNoImageWriteRect
-XaaNoMono8x8PatternFillRect
-XaaNoMono8x8PatternFillTrap
-XaaNoOffscreenPixmaps
-XaaNoPixmapCache
-XaaNoScanlineCPUToScreenColorExpandFill
-XaaNoScanlineImageWriteRect
-XaaNoScreenToScreenColorExpandFill
-XaaNoSolidBresenhamLine
-XaaNoSolidFillRect
-XaaNoSolidFillTrap
-XaaNoSolidHorVertLine
-XaaNoSolidTwoPointLine
-
-
-Names used in previous versions:
-
-16Clocks
-8Clocks
-ClkDiv2
-EDO VRAM
-ExternDisp
-ExtFramBuf
-FastVRAM
-FavorBitBlt
-InternDisp
-NoBitBlt
-NoFontCache
-NoImageBlt
-NoMemAccess
-NoPciDisconnect
-NoPixmapCache
-NoProgramClocks
-NoSplitXfer
-OverrideBIOS
-OverrideValidateMode
-ProgLcdModeRegs
-ProgLcdModeStretch
-SlowDRAMrefresh
-SlowVRAM
-SwapHiBit
-
-
-5. Ramdac Names.
-
-Ramdac names should be consistent between drivers. Case, white space
-and underscore characters are ignored when comparing ramdac names. All
-names listed here are in lower case with all white space and underscores
-removed.
-
-
-6. Clock Chip Names.
-
-Clock chip names should be consistent between drivers. Case, white
-space and underscore characters are ignored when comparing clock chip
-names. All names listed here are in lower case with all white space
-and underscores removed.
-
-
-
-
-
-$XFree86: xc/programs/Xserver/hw/xfree86/Registry,v 1.18 2002/04/06 18:31:09 tsi Exp $
+This is the XFree86 driver/module registry. To avoid name space clashes and
+to maintain some consistency between drivers the important name spaces are
+maintained here.
+
+1. Module Names.
+
+Each module is required to have a unique name. Registered names are:
+
+GLcore
+acecad
+afb
+apm
+ark
+ati
+atimisc
+bitmap
+bt8xx
+calcomp
+cfb
+cfb16
+cfb24
+cfb32
+chips
+cirrus
+citron
+cyrix
+dbe
+ddc
+digitaledge
+dmc
+dri
+drm
+dynapro
+elo2300
+elographics
+extmod
+fb
+fbdev
+fbdevhw
+fi12x6
+freetype
+glide
+glint
+glx
+hyperpen
+i128
+i2c
+i740
+i810
+imstt
+int10
+joystick
+keyboard
+layer
+magellan
+magictouch
+mfb
+mga
+microtouch
+mouse
+msp34xx
+mutouch
+neomagic
+newport
+nv
+pcidata
+penmount
+pex5
+r128
+radeon
+rac
+ramdac
+record
+rendition
+s3
+s3virge
+savage
+shadow
+shadowfb
+siliconmotion
+sis
+spaceorb
+speedo
+summa
+sunbw2
+suncg14
+suncg3
+suncg6
+sunffb
+sunleo
+suntcx
+tdfx
+tga
+trident
+tseng
+type1
+v4l
+vbe
+vesa
+vga
+vgahw
+vmware
+void
+wacom
+xaa
+xf1bpp
+xf24_32bpp
+xf4bpp
+xf8_16bpp
+xf8_32bpp
+xf8_32wid
+xie
+xtrap
+xtt
+
+2. External Module Object Symbols.
+
+Each module is required to use a unique prefix or prefixes for all of
+its externally visible symbols. They should be unique without regard to
+case. Registered prefixes are:
+
+ati
+bt8xx
+cfb
+chips
+fi12x6
+glide
+glint
+mfb
+mga
+msp34xx
+neo
+permedia
+tseng
+vga
+vgahw
+vmware
+xaa
+xf1bpp
+xf4bpp
+
+3. Chipset Names.
+
+Each video driver is required to use a unique set of chipset names. Case,
+white space and underscore characters are ignored when comparing chipset
+names. All names listed here are in lower case with all white space and
+underscores removed. Registered chipset names are:
+
+ati
+ativga
+ct64200
+ct64300
+ct65520
+ct65525
+ct65530
+ct65535
+ct65540
+ct65545
+ct65546
+ct65548
+ct65550
+ct65554
+ct65555
+ct68554
+ct69000
+et4000
+et4000w32
+et4000w32i
+et4000w32p
+et6000
+et6100
+generic
+ibmvga
+ibm8514
+mach32
+mach64
+mach8
+mga2064w
+mga1064sg
+mga2164w
+mga2164wagp
+neo2070
+neo2090
+neo2093
+neo2097
+neo2160
+neo2200
+tipm2
+vgawonder
+voodoo
+
+4. Option Names.
+
+Option names and their usage should be consistent between drivers.
+Case, white space and underscore characters are ignored when comparing
+option names. The prefix "no" may be added or removed from boolean
+option names. All names listed here are in their preferred user-visible
+form. Some registered option names are:
+
+Types are: B = boolean, O = set/unset (no value), I = integer, S = string,
+ A = optional string, F = floating point number Q = frequency
+
+Scopes are: F = global flags, V = video driver, C = common (per screen),
+ I = input drivers, X = XAA, Xv = Xv extension, M = misc.
+
+Names currently in use:
+
+Name Type Scope Description
+----------------------------------------------------------------------------
+AllowMouseOpenFail B F ignore mouse dev open failure
+AllowNonLocalModInDev B F allow non-local mod of input devs
+AllowNonLocalXvidtune B F allow non-local VidMode connections
+BlankTime I F Screen saver timeout (min)
+DisableModInDev B F disallow changing input devs
+DisableVidModeExtension B F disable VidMode extension
+DontVTSwitch B F disable Ctrl-Alt-Fn
+DontZap B F disable Ctrl-Alt-BS sequence
+DontZoom B F disable Ctrl-Alt-+/-
+NoTrapSignals B F don't trap signals
+OffTime I F Time before DPMS off mode active (min)
+PciProbe1 O F use PCI probe algorithm 1
+PciProbe2 O F use PCI probe algorithm 2
+PciForceConfig1 O F force PCI config type 1
+PciForceConfig2 O F force PCI config type 2
+Pixmap I F depth 24 pixmap size (24 or 32)
+StandbyTime I F Time before DPMS standby active (min)
+SuspendTime I F Time before DPMS suspend mode active (min)
+
+BackingStore B C Enable backing store
+DDC B C Enable/disable DDC
+DDC1 B C Enable/disable DDC1
+DDC2 B C Enable/disable DDC2
+DPMS O C Enable DPMS
+MTRR B C Enable/disable setting MTRRs
+
+BaudRate I I Serial port baud rate
+ButtonNumber I I Button number (for touch screen?)
+ButtonThreshold I I ??
+ClearDTR O I Clear serial port DTR
+ClearRTS O I Clear serial port RTS
+DataBits I I Serial port data bits
+DemandLoad O I ??
+Device S I Device file name
+DeviceName S I Input device name
+FlowControl S I Serial flow control ("xon", "none")
+Floating B I Device initialised as floating
+HistorySize I I ??
+MaxX I I Maximum X coordinate
+MaxY I I Maximum Y coordinate
+MinX I I Minimum X coordinate
+MinY I I Minimum Y coordinate
+Parity S I Serial port parity ("odd", "even", "none")
+ReportDelay I I ??
+ReportingMode S I may be "raw" or "scaled"
+ScreenNumber I I Screen number (for touch screen)
+SendCoreEvents B I Send core events
+StopBits I I Serial port stop bits
+SwapXY B I Swap the X and Y axes
+UntouchDelay I I ??
+Vmin I I Tty VMIN
+Vtime I I Tty VTIME
+
+
+18BitBus B V ??
+8Plus16 B V Enable depth 8 + depth 16 with overlay
+8Plus24 B V Enable depth 8 + depth 24 with overlay
+BlockWrite B V Enable/disable block write
+ColorKey I V Set the color key for overlay modes
+CompositeSync B V Composite sync
+CRTDisplay B V Force display on CRT, not LCD
+CRTScreen B V Display on CRT, not LCD (Obsolete)
+EarlyRasPrecharge O V Early RAS pre-charge
+FastDRAM O V Fast DRAM
+FifoAggressive O V Aggressive FIFO setting
+FifoConservative O V Conservative FIFO setting
+FifoModerate O V Moderate FIFO setting
+FireGL3000 B V Card is Diamond FireGL3000
+FixPanelSize B V ??
+FPClock8 Q V Flat panel clock for 8bpp fb (MHz)
+FPClock16 Q V Flat panel clock for 16bpp fb (MHz)
+FPClock24 Q V Flat panel clock for 24bpp fb (MHz)
+FPClock32 Q V Flat panel clock for 32bpp fb (MHz)
+FPMVRAM O V Fast page mode VRAM
+FramebufferWC B V Enable/disable WC for the framebuffer
+GlideDevice I V Selects which Voodoo board to use
+HiBitHigh O V High clock bit default to set
+HiBitLow O V High clock bit default to cleared
+HWClocks B V Enable/disable HW clocks
+HWCursor B V Enable/disable HW cursor
+LateRasPrecharge O V Late RAS pre-charge
+Legend O V Card is Legend ET4000
+LCDCenter B V Enable/disable centering for LCD displays
+Linear B V Enable/disable linear framebuffer
+MCLK Q V Specify the current MCLK value (MHz)
+MedDRAM B V Medium speed DRAM
+MemCfg1 I V ??
+MemCfg2 I V ??
+MGASDRAM B V Mga card has SDRAM
+MMIO B V Enable/disable memory mapped I/O
+MMIOCache B V Enable/Disable MMIO cache
+MuxThreshold I V Multiplexing threshold (kHz)
+NoAccel B V Disable/enable acceleration
+NoClockChip B V ??
+NoStretch B V Disable/enable stretching for LCD displays
+OnAtExit B V Leave video signal on when exiting server
+OverclockMem B V Enable memory overclocking
+Overlay A V Enable multi-depth/overlay. An optional
+ string "M,N" may be specified, where
+ M, N are the depths.
+PanelDisplay B V Force display on LCD
+PciBurst B V Enable/disable PCI burst mode
+PciRetry B V Enable/disable PCI retries
+ProbeClocks B V Force probe for non-programmable clocks
+ReferenceClock Q V Clock generator reference frequency
+RGBbits I V Number of significant bits per rgb
+Rotate S V Rotate the virtual display (CW or CCW)
+SetLCDClk Q V Set LCD clock (MHz)
+SetMclk Q V Set Memory Clock (MHz)
+ShadowFB B V Enable shadow framebuffer layer
+ShowCache B V Enable viewing of offscreen memory
+ShowOverscan O V Set the overscan area to a visible colour
+SlowDRAM O V Slow DRAM
+SlowEDODRAM O V Slow EDO DRAM
+STN B V STN screen type (??)
+SWCursor B V Enable/disable SW cursor
+SuspendHack B V ??
+SyncOnGreen B V Enable/disable sync on green
+TurboQueue B V Enable/disable turbo queue
+UseFBDev B V Use the fbdev driver interface
+UseModeLine B V Use Modeline (??)
+W32Interleave B V ??
+
+Buffers I Xv Number of buffers
+Device S Xv Device file name
+Expose B Xv Disable occlusion clipping (see DESIGN)
+FramesPerSec I Xv Max. refresh frequency
+
+XAA options. All are of type "O" and scope "X", and are self-explanatory
+
+XaaNoColor8x8PatternFillRect
+XaaNoColor8x8PatternFillTrap
+XaaNoCPUToScreenColorExpandFill
+XaaNoDashedBresenhamLine
+XaaNoDashedTwoPointLine
+XaaNoScreenToScreenCopy
+XaaNoImageReadRect
+XaaNoImageWriteRect
+XaaNoMono8x8PatternFillRect
+XaaNoMono8x8PatternFillTrap
+XaaNoOffscreenPixmaps
+XaaNoPixmapCache
+XaaNoScanlineCPUToScreenColorExpandFill
+XaaNoScanlineImageWriteRect
+XaaNoScreenToScreenColorExpandFill
+XaaNoSolidBresenhamLine
+XaaNoSolidFillRect
+XaaNoSolidFillTrap
+XaaNoSolidHorVertLine
+XaaNoSolidTwoPointLine
+
+
+Names used in previous versions:
+
+16Clocks
+8Clocks
+ClkDiv2
+EDO VRAM
+ExternDisp
+ExtFramBuf
+FastVRAM
+FavorBitBlt
+InternDisp
+NoBitBlt
+NoFontCache
+NoImageBlt
+NoMemAccess
+NoPciDisconnect
+NoPixmapCache
+NoProgramClocks
+NoSplitXfer
+OverrideBIOS
+OverrideValidateMode
+ProgLcdModeRegs
+ProgLcdModeStretch
+SlowDRAMrefresh
+SlowVRAM
+SwapHiBit
+
+
+5. Ramdac Names.
+
+Ramdac names should be consistent between drivers. Case, white space
+and underscore characters are ignored when comparing ramdac names. All
+names listed here are in lower case with all white space and underscores
+removed.
+
+
+6. Clock Chip Names.
+
+Clock chip names should be consistent between drivers. Case, white
+space and underscore characters are ignored when comparing clock chip
+names. All names listed here are in lower case with all white space
+and underscores removed.
+
+
+
+
+
+$XFree86: xc/programs/Xserver/hw/xfree86/Registry,v 1.18 2002/04/06 18:31:09 tsi Exp $
diff --git a/xorg-server/hw/xfree86/doc/ddxDesign.xml b/xorg-server/hw/xfree86/doc/ddxDesign.xml
index a6b9da2d5..24b0c0324 100644
--- a/xorg-server/hw/xfree86/doc/ddxDesign.xml
+++ b/xorg-server/hw/xfree86/doc/ddxDesign.xml
@@ -1306,7 +1306,7 @@ Here is what <function>InitOutput()</function> does:
<blockquote><para>
<programlisting>
- Bool ChipScreenInit(int index, ScreenPtr pScreen,
+ Bool ChipScreenInit(ScreenPtr pScreen,
int argc, char **argv);
</programlisting>
<blockquote><para>
@@ -1442,7 +1442,7 @@ Here is what <function>InitOutput()</function> does:
<blockquote><para>
<programlisting>
- Bool ChipSwitchMode(int index, DisplayModePtr mode, int flags);
+ Bool ChipSwitchMode(int index, DisplayModePtr mode);
</programlisting>
<blockquote><para>
Initialises the new mode for the screen identified by
@@ -1464,7 +1464,7 @@ Here is what <function>InitOutput()</function> does:
<blockquote><para>
<programlisting>
- void ChipAdjustFrame(int index, int x, int y, int flags);
+ void ChipAdjustFrame(int index, int x, int y);
</programlisting>
<blockquote><para>
Changes the viewport for the screen identified by
@@ -1572,7 +1572,7 @@ Here is what <function>InitOutput()</function> does:
<blockquote><para>
<programlisting>
- Bool ChipEnterVT(int index, int flags);
+ Bool ChipEnterVT(ScrnInfoPtr pScrn);
</programlisting>
<blockquote><para>
This function should initialise the current video mode and
@@ -1589,7 +1589,7 @@ Here is what <function>InitOutput()</function> does:
<blockquote><para>
<programlisting>
- void ChipLeaveVT(int index, int flags);
+ void ChipLeaveVT(ScrnInfoPtr pScrn);
</programlisting>
<blockquote><para>
This function should restore the saved video state. If
@@ -1691,7 +1691,7 @@ but their presence is optional.
<blockquote><para>
<programlisting>
- ModeStatus ChipValidMode(int index, DisplayModePtr mode,
+ ModeStatus ChipValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode,
Bool verbose, int flags);
</programlisting>
<blockquote><para>
@@ -1739,7 +1739,7 @@ MODECHECK_FINAL are intended for checks that may involve more than one mode.
<blockquote><para>
<programlisting>
- void ChipFreeScreen(int scrnindex, int flags);
+ void ChipFreeScreen(ScrnInfoPtr pScrn);
</programlisting>
<blockquote><para>
Free any driver-allocated data that may have been allocated up to
@@ -2824,12 +2824,12 @@ Several functions are provided to simplify resource registration:
<blockquote><para>
<programlisting>
- Bool xf86IsScreenPrimary(int scrnIndex);
+ Bool xf86IsScreenPrimary(ScrnInfoPtr pScrn);
</programlisting>
<blockquote><para>
This function returns <constant>TRUE</constant> if the primary entity
is registered with the screen referenced by
- <parameter>scrnIndex</parameter>.
+ <parameter>pScrn</parameter>.
</para>
</blockquote></para></blockquote>
@@ -9033,7 +9033,7 @@ ZZZModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
<programlisting>
static Bool
-ZZZScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+ZZZScreenInit(ScreenPtr pScreen, int argc, char **argv)
{
/* Get the ScrnInfoRec */
pScrn = xf86ScreenToScrn(pScreen);
@@ -9051,7 +9051,7 @@ ZZZScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* Set the viewport if supported */
- ZZZAdjustFrame(scrnIndex, pScrn-&gt;frameX0, pScrn-&gt;frameY0, 0);
+ ZZZAdjustFrame(pScrn, pScrn-&gt;frameX0, pScrn-&gt;frameY0);
/*
* Setup the screen's visuals, and initialise the framebuffer
@@ -9220,9 +9220,9 @@ ZZZScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
<programlisting>
static Bool
-ZZZSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+ZZZSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
{
- return ZZZModeInit(xf86Screens[scrnIndex], mode);
+ return ZZZModeInit(pScrn, mode);
}
</programlisting>
</sect3>
@@ -9237,7 +9237,7 @@ ZZZSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
<programlisting>
static void
-ZZZAdjustFrame(int scrnIndex, int x, int y, int flags)
+ZZZAdjustFrame(ScrnInfoPtr pScrn, int x, int y)
{
/* Adjust the viewport */
}
@@ -9258,16 +9258,14 @@ ZZZAdjustFrame(int scrnIndex, int x, int y, int flags)
<programlisting>
static Bool
-ZZZEnterVT(int scrnIndex, int flags)
+ZZZEnterVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
return ZZZModeInit(pScrn, pScrn-&gt;currentMode);
}
static void
-ZZZLeaveVT(int scrnIndex, int flags)
+ZZZLeaveVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
ZZZRestore(pScrn);
}
</programlisting>
@@ -9288,16 +9286,16 @@ ZZZLeaveVT(int scrnIndex, int flags)
<programlisting>
static Bool
-ZZZCloseScreen(int scrnIndex, ScreenPtr pScreen)
+ZZZCloseScreen(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
if (pScrn-&gt;vtSema) {
ZZZRestore(pScrn);
ZZZUnmapMem(pScrn);
}
pScrn-&gt;vtSema = FALSE;
pScreen-&gt;CloseScreen = ZZZPTR(pScrn)-&gt;CloseScreen;
- return (*pScreen-&gt;CloseScreen)(scrnIndex, pScreen);
+ return (*pScreen-&gt;CloseScreen)(pScreen);
}
</programlisting>
</sect3>
@@ -9342,13 +9340,13 @@ ZZZSaveScreen(ScreenPtr pScreen, int mode)
<programlisting>
static void
-ZZZFreeScreen(int scrnIndex, int flags)
+ZZZFreeScreen(ScrnInfoPtr pScrn)
{
/*
* If the vgahw module is used vgaHWFreeHWRec() would be called
* here.
*/
- ZZZFreeRec(xf86Screens[scrnIndex]);
+ ZZZFreeRec(pScrn);
}
</programlisting>
diff --git a/xorg-server/hw/xfree86/dri/dri.c b/xorg-server/hw/xfree86/dri/dri.c
index 20eb683ad..46a9ae457 100644
--- a/xorg-server/hw/xfree86/dri/dri.c
+++ b/xorg-server/hw/xfree86/dri/dri.c
@@ -1618,7 +1618,7 @@ DRIWakeupHandler(pointer wakeupData, int result, pointer pReadmask)
DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
if (pDRIPriv && pDRIPriv->pDriverInfo->wrap.WakeupHandler)
- (*pDRIPriv->pDriverInfo->wrap.WakeupHandler) (i, wakeupData,
+ (*pDRIPriv->pDriverInfo->wrap.WakeupHandler) (pScreen,
result, pReadmask);
}
}
@@ -1633,16 +1633,15 @@ DRIBlockHandler(pointer blockData, OSTimePtr pTimeout, pointer pReadmask)
DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
if (pDRIPriv && pDRIPriv->pDriverInfo->wrap.BlockHandler)
- (*pDRIPriv->pDriverInfo->wrap.BlockHandler) (i, blockData,
+ (*pDRIPriv->pDriverInfo->wrap.BlockHandler) (pScreen,
pTimeout, pReadmask);
}
}
void
-DRIDoWakeupHandler(int screenNum, pointer wakeupData,
+DRIDoWakeupHandler(ScreenPtr pScreen,
unsigned long result, pointer pReadmask)
{
- ScreenPtr pScreen = screenInfo.screens[screenNum];
DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
DRILock(pScreen, 0);
@@ -1658,10 +1657,9 @@ DRIDoWakeupHandler(int screenNum, pointer wakeupData,
}
void
-DRIDoBlockHandler(int screenNum, pointer blockData,
+DRIDoBlockHandler(ScreenPtr pScreen,
pointer pTimeout, pointer pReadmask)
{
- ScreenPtr pScreen = screenInfo.screens[screenNum];
DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
if (pDRIPriv->pDriverInfo->driverSwapMethod == DRI_HIDE_X_CONTEXT) {
@@ -2307,15 +2305,14 @@ _DRIAdjustFrame(ScrnInfoPtr pScrn, DRIScreenPrivPtr pDRIPriv, int x, int y)
}
void
-DRIAdjustFrame(int scrnIndex, int x, int y, int flags)
+DRIAdjustFrame(ScrnInfoPtr pScrn, int x, int y)
{
- ScreenPtr pScreen = screenInfo.screens[scrnIndex];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
DRIScreenPrivPtr pDRIPriv = DRI_SCREEN_PRIV(pScreen);
- ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
int px, py;
if (!pDRIPriv || !pDRIPriv->pSAREA) {
- DRIDrvMsg(scrnIndex, X_ERROR, "[DRI] No SAREA (%p %p)\n",
+ DRIDrvMsg(pScrn->scrnIndex, X_ERROR, "[DRI] No SAREA (%p %p)\n",
pDRIPriv, pDRIPriv ? pDRIPriv->pSAREA : NULL);
return;
}
@@ -2347,7 +2344,7 @@ DRIAdjustFrame(int scrnIndex, int x, int y, int flags)
/* unwrap */
pScrn->AdjustFrame = pDRIPriv->wrap.AdjustFrame;
/* call lower layers */
- (*pScrn->AdjustFrame) (scrnIndex, x, y, flags);
+ (*pScrn->AdjustFrame) (pScrn, x, y);
/* rewrap */
pDRIPriv->wrap.AdjustFrame = pScrn->AdjustFrame;
pScrn->AdjustFrame = DRIAdjustFrame;
diff --git a/xorg-server/hw/xfree86/dri/dri.h b/xorg-server/hw/xfree86/dri/dri.h
index 53458bb4a..0a4036c35 100644
--- a/xorg-server/hw/xfree86/dri/dri.h
+++ b/xorg-server/hw/xfree86/dri/dri.h
@@ -73,7 +73,7 @@ typedef int DRIWindowRequests;
#define DRI_ALL_WINDOWS 2
typedef void (*ClipNotifyPtr) (WindowPtr, int, int);
-typedef void (*AdjustFramePtr) (int scrnIndex, int x, int y, int flags);
+typedef void (*AdjustFramePtr) (ScrnInfoPtr pScrn, int x, int y);
/*
* These functions can be wrapped by the DRI. Each of these have
@@ -271,13 +271,11 @@ extern _X_EXPORT void DRIWakeupHandler(pointer wakeupData,
extern _X_EXPORT void DRIBlockHandler(pointer blockData,
OSTimePtr pTimeout, pointer pReadmask);
-extern _X_EXPORT void DRIDoWakeupHandler(int screenNum,
- pointer wakeupData,
+extern _X_EXPORT void DRIDoWakeupHandler(ScreenPtr pScreen,
unsigned long result,
pointer pReadmask);
-extern _X_EXPORT void DRIDoBlockHandler(int screenNum,
- pointer blockData,
+extern _X_EXPORT void DRIDoBlockHandler(ScreenPtr pScreen,
pointer pTimeout, pointer pReadmask);
extern _X_EXPORT void DRISwapContext(int drmFD, void *oldctx, void *newctx);
@@ -334,7 +332,7 @@ extern _X_EXPORT drm_context_t DRIGetContext(ScreenPtr pScreen);
extern _X_EXPORT void DRIQueryVersion(int *majorVersion,
int *minorVersion, int *patchVersion);
-extern _X_EXPORT void DRIAdjustFrame(int scrnIndex, int x, int y, int flags);
+extern _X_EXPORT void DRIAdjustFrame(ScrnInfoPtr pScrn, int x, int y);
extern _X_EXPORT void DRIMoveBuffersHelper(ScreenPtr pScreen,
int dx,
diff --git a/xorg-server/hw/xfree86/exa/examodule.c b/xorg-server/hw/xfree86/exa/examodule.c
index 50924587d..4e809ea37 100644
--- a/xorg-server/hw/xfree86/exa/examodule.c
+++ b/xorg-server/hw/xfree86/exa/examodule.c
@@ -38,7 +38,7 @@
typedef struct _ExaXorgScreenPrivRec {
CloseScreenProcPtr SavedCloseScreen;
- EnableDisableFBAccessProcPtr SavedEnableDisableFBAccess;
+ xf86EnableDisableFBAccessProc *SavedEnableDisableFBAccess;
OptionInfoPtr options;
} ExaXorgScreenPrivRec, *ExaXorgScreenPrivPtr;
@@ -70,7 +70,7 @@ static const OptionInfoRec EXAOptions[] = {
};
static Bool
-exaXorgCloseScreen(int i, ScreenPtr pScreen)
+exaXorgCloseScreen(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
ExaXorgScreenPrivPtr pScreenPriv = (ExaXorgScreenPrivPtr)
@@ -83,24 +83,24 @@ exaXorgCloseScreen(int i, ScreenPtr pScreen)
free(pScreenPriv->options);
free(pScreenPriv);
- return pScreen->CloseScreen(i, pScreen);
+ return pScreen->CloseScreen(pScreen);
}
static void
-exaXorgEnableDisableFBAccess(int index, Bool enable)
+exaXorgEnableDisableFBAccess(ScrnInfoPtr pScrn, Bool enable)
{
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
ExaXorgScreenPrivPtr pScreenPriv = (ExaXorgScreenPrivPtr)
dixLookupPrivate(&pScreen->devPrivates, exaXorgScreenPrivateKey);
if (!enable)
- exaEnableDisableFBAccess(index, enable);
+ exaEnableDisableFBAccess(pScreen, enable);
if (pScreenPriv->SavedEnableDisableFBAccess)
- pScreenPriv->SavedEnableDisableFBAccess(index, enable);
+ pScreenPriv->SavedEnableDisableFBAccess(pScrn, enable);
if (enable)
- exaEnableDisableFBAccess(index, enable);
+ exaEnableDisableFBAccess(pScreen, enable);
}
/**
diff --git a/xorg-server/hw/xfree86/fbdevhw/README b/xorg-server/hw/xfree86/fbdevhw/README
index 27cc337d4..65ca06033 100644
--- a/xorg-server/hw/xfree86/fbdevhw/README
+++ b/xorg-server/hw/xfree86/fbdevhw/README
@@ -1,16 +1,16 @@
-
-This is a submodule to access linux framebuffer devices.
-It is supported to work as helper module (like vgahw)
-for the chipset drivers. There are functions for
-saving/restoring/setting video modes, set palette entries,
-and a few more helper functions. Some of them can be
-hooked directly into ScrnInfoRec.
-
-In ../drivers/fbdev is a "chipset" driver. It is a simple,
-non-accelerated and hardware-independent driver which works
-on top of this fbdevhw submodule.
-
- Gerd
-
---
-Gerd Knorr <kraxel@goldbach.in-berlin.de>
+
+This is a submodule to access linux framebuffer devices.
+It is supported to work as helper module (like vgahw)
+for the chipset drivers. There are functions for
+saving/restoring/setting video modes, set palette entries,
+and a few more helper functions. Some of them can be
+hooked directly into ScrnInfoRec.
+
+In ../drivers/fbdev is a "chipset" driver. It is a simple,
+non-accelerated and hardware-independent driver which works
+on top of this fbdevhw submodule.
+
+ Gerd
+
+--
+Gerd Knorr <kraxel@goldbach.in-berlin.de>
diff --git a/xorg-server/hw/xfree86/fbdevhw/fbdevhw.c b/xorg-server/hw/xfree86/fbdevhw/fbdevhw.c
index 0444d481c..d4b5558a7 100644
--- a/xorg-server/hw/xfree86/fbdevhw/fbdevhw.c
+++ b/xorg-server/hw/xfree86/fbdevhw/fbdevhw.c
@@ -775,10 +775,8 @@ fbdevHWLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
/* these can be hooked directly into ScrnInfoRec */
ModeStatus
-fbdevHWValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
+fbdevHWValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool verbose, int flags)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-
if (!fbdevHWSetMode(pScrn, mode, TRUE))
return MODE_BAD;
@@ -786,10 +784,8 @@ fbdevHWValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
}
Bool
-fbdevHWSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+fbdevHWSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-
if (!fbdevHWSetMode(pScrn, mode, FALSE))
return FALSE;
@@ -797,9 +793,8 @@ fbdevHWSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
}
void
-fbdevHWAdjustFrame(int scrnIndex, int x, int y, int flags)
+fbdevHWAdjustFrame(ScrnInfoPtr pScrn, int x, int y)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
fbdevHWPtr fPtr = FBDEVHWPTR(pScrn);
if (x < 0 || x + fPtr->var.xres > fPtr->var.xres_virtual ||
@@ -809,26 +804,22 @@ fbdevHWAdjustFrame(int scrnIndex, int x, int y, int flags)
fPtr->var.xoffset = x;
fPtr->var.yoffset = y;
if (-1 == ioctl(fPtr->fd, FBIOPAN_DISPLAY, (void *) &fPtr->var))
- xf86DrvMsgVerb(scrnIndex, X_WARNING, 5,
+ xf86DrvMsgVerb(pScrn->scrnIndex, X_WARNING, 5,
"FBIOPAN_DISPLAY: %s\n", strerror(errno));
}
Bool
-fbdevHWEnterVT(int scrnIndex, int flags)
+fbdevHWEnterVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-
if (!fbdevHWModeInit(pScrn, pScrn->currentMode))
return FALSE;
- fbdevHWAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ fbdevHWAdjustFrame(pScrn, pScrn->frameX0, pScrn->frameY0);
return TRUE;
}
void
-fbdevHWLeaveVT(int scrnIndex, int flags)
+fbdevHWLeaveVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-
fbdevHWRestore(pScrn);
}
diff --git a/xorg-server/hw/xfree86/fbdevhw/fbdevhw.h b/xorg-server/hw/xfree86/fbdevhw/fbdevhw.h
index 536987101..4984ccf89 100644
--- a/xorg-server/hw/xfree86/fbdevhw/fbdevhw.h
+++ b/xorg-server/hw/xfree86/fbdevhw/fbdevhw.h
@@ -44,14 +44,12 @@ extern _X_EXPORT void fbdevHWLoadPalette(ScrnInfoPtr pScrn, int numColors,
int *indices, LOCO * colors,
VisualPtr pVisual);
-extern _X_EXPORT ModeStatus fbdevHWValidMode(int scrnIndex, DisplayModePtr mode,
+extern _X_EXPORT ModeStatus fbdevHWValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode,
Bool verbose, int flags);
-extern _X_EXPORT Bool fbdevHWSwitchMode(int scrnIndex, DisplayModePtr mode,
- int flags);
-extern _X_EXPORT void fbdevHWAdjustFrame(int scrnIndex, int x, int y,
- int flags);
-extern _X_EXPORT Bool fbdevHWEnterVT(int scrnIndex, int flags);
-extern _X_EXPORT void fbdevHWLeaveVT(int scrnIndex, int flags);
+extern _X_EXPORT Bool fbdevHWSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode);
+extern _X_EXPORT void fbdevHWAdjustFrame(ScrnInfoPtr pScrn, int x, int y);
+extern _X_EXPORT Bool fbdevHWEnterVT(ScrnInfoPtr pScrn);
+extern _X_EXPORT void fbdevHWLeaveVT(ScrnInfoPtr pScrn);
extern _X_EXPORT void fbdevHWDPMSSet(ScrnInfoPtr pScrn, int mode, int flags);
extern _X_EXPORT Bool fbdevHWSaveScreen(ScreenPtr pScreen, int mode);
diff --git a/xorg-server/hw/xfree86/fbdevhw/fbdevhwstub.c b/xorg-server/hw/xfree86/fbdevhw/fbdevhwstub.c
index 6e0a470b8..b7b4d2e7d 100644
--- a/xorg-server/hw/xfree86/fbdevhw/fbdevhwstub.c
+++ b/xorg-server/hw/xfree86/fbdevhw/fbdevhwstub.c
@@ -131,30 +131,30 @@ fbdevHWLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
}
ModeStatus
-fbdevHWValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
+fbdevHWValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool verbose, int flags)
{
return MODE_ERROR;
}
Bool
-fbdevHWSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+fbdevHWSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
{
return FALSE;
}
void
-fbdevHWAdjustFrame(int scrnIndex, int x, int y, int flags)
+fbdevHWAdjustFrame(ScrnInfoPtr pScrn, int x, int y, int flags)
{
}
Bool
-fbdevHWEnterVT(int scrnIndex, int flags)
+fbdevHWEnterVT(ScrnInfoPtr pScrn)
{
return FALSE;
}
void
-fbdevHWLeaveVT(int scrnIndex, int flags)
+fbdevHWLeaveVT(ScrnInfoPtr pScrn)
{
}
diff --git a/xorg-server/hw/xfree86/i2c/i2c_def.h b/xorg-server/hw/xfree86/i2c/i2c_def.h
index 140a071d6..e6a4e039e 100644
--- a/xorg-server/hw/xfree86/i2c/i2c_def.h
+++ b/xorg-server/hw/xfree86/i2c/i2c_def.h
@@ -1,6 +1,6 @@
-#ifndef __I2C_DEF_H__
-#define __I2C_DEF_H__
-
-#include "xf86i2c.h"
-
-#endif
+#ifndef __I2C_DEF_H__
+#define __I2C_DEF_H__
+
+#include "xf86i2c.h"
+
+#endif
diff --git a/xorg-server/hw/xfree86/i2c/xf86i2c.c b/xorg-server/hw/xfree86/i2c/xf86i2c.c
index 1273f4bab..2d261d4ce 100644
--- a/xorg-server/hw/xfree86/i2c/xf86i2c.c
+++ b/xorg-server/hw/xfree86/i2c/xf86i2c.c
@@ -709,6 +709,7 @@ xf86CreateI2CBusRec(void)
if (b != NULL) {
b->scrnIndex = -1;
+ b->pScrn = NULL;
b->HoldTime = 5; /* 100 kHz bus */
b->BitTimeout = 5;
b->ByteTimeout = 5;
diff --git a/xorg-server/hw/xfree86/i2c/xf86i2c.h b/xorg-server/hw/xfree86/i2c/xf86i2c.h
index 9a8fb21a3..e296d7d81 100644
--- a/xorg-server/hw/xfree86/i2c/xf86i2c.h
+++ b/xorg-server/hw/xfree86/i2c/xf86i2c.h
@@ -6,6 +6,7 @@
#define _XF86I2C_H
#include "regionstr.h"
+#include "xf86.h"
typedef unsigned char I2CByte;
typedef unsigned short I2CSlaveAddr;
@@ -18,6 +19,7 @@ typedef struct _I2CDevRec *I2CDevPtr;
typedef struct _I2CBusRec {
char *BusName;
int scrnIndex;
+ ScrnInfoPtr pScrn;
void (*I2CUDelay) (I2CBusPtr b, int usec);
diff --git a/xorg-server/hw/xfree86/int10/INT10.HOWTO b/xorg-server/hw/xfree86/int10/INT10.HOWTO
index e2154c1c3..f2f08ceec 100644
--- a/xorg-server/hw/xfree86/int10/INT10.HOWTO
+++ b/xorg-server/hw/xfree86/int10/INT10.HOWTO
@@ -1,344 +1,344 @@
-
- INT10 X86 Real Mode executor
- =============================
-
- PRELIMINARY
-
-INT10 is a XFree86 module for soft-booting and executing real mode
-int10 BIOS calls. The BIOS call code is largely untested, yet.
-
-1. Usage
-========
-
-To use the int10 module in a driver the header file
-xfree86/os-support/int10/xf86int10.h must be included.
-
- a. Initialization
- -----------------
-
-The int10-executer gets initialized by calling:
-
- xf86Int10InfoPtr xf86InitInt10(int entityIndex);
-
-The function will soft-boot any non-primary device and return a
-pointer to a xf86Int10InfoRec on success. If anything fails or if
-int10 execution is disabled by an option in the device section NULL
-will be returned. The driver should store this pointer for later
-calls to other int10 module functions.
-
- b. Memory allocation
- --------------------
-
-To allocate memory in the real mode execution environment
-
- void * xf86Int10AllocPages(xf86Int10InfoPtr pInt,int num, int *off);
-
-can be called. It allocates num consecutive pagesize chunks. It
-returns the address of the allocated area. off is set to its offset in
-the real mode memory space.
-
- void xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num);
-
-Is used to free num pages beginning at pbase.
-
- c. Doing int10 BIOS calls
- -------------------------
-
-The BIOS call is executed by calling:
-
- void xf86ExecX86int10(xf86Int10InfoPtr pInt);
-
-The number of the interrupt (normally 10) and the initial values of
-the ax, bx, cx, dx, si, di and es x86-CPU registers can be set in the
-xf86Int10InfoRec passed to the function. On return this structure
-contains the exit values of the registers listed above and the CPU
-flag register.
-
- d. De-initializing
- -----------------
-
-If no further int10 calls are required for a certain chipset
-the driver should call:
-
- void xf86FreeInt10(xf86Int10InfoPtr pInt);
-
-to free the memory allocated for real mode int10 calls.
-
-
-2. Porting issues
-=================
-
-The int10 real mode executor is designed to run on top of various x86
-CPU emulators as well as in vm86 mode of a real x86 CPU. If used with
-a CPU emulator the emulator and CPU specific interfaces can be held
-separate thus requiring minimal efforts to port the int10 module to
-new platforms. Currently an interface to the x86emu real mode
-emulator is provided. Since details of setting up and running the
-vm86 mode is platform dependent both the platform dependent
-environment and the emulation layer have to be ported. Several helper
-functions are provided for that.
-
-A CPU emulator should meet certain requirements to be usable
-for the INT10 executor:
-
-1. It must trap calls to intXX instructions and pass execution to an
- external function which is allowed to modify CPU registers
- including the instruction pointer (IP) before returning to the
- emulator for continuing execution. When the external function is
- called the IP must point to the instruction past the intXX call.
-
-2. The emulator should use externally provided functions to handle
- PIO.
-
-3. The emulator should be able to use externally provided functions
- to access memory from the real mode memory environment. Note, that
- the vm86 mode usually requires one hunk of consecutive memory
- starting at address 0 in the process virtual memory space. Thus if
- this mode is to be used, the OS environment has to be able to provide
- that, ie. it must be able to remap the processes virtual memory space
- onto itself. If the emulator is able to handle memory access thru
- externally provided functions the real mode process memory can be
- located anywhere in the processes virtual memory. It does not even
- have to be consecutive.
-
-4. The executor should terminate on encountering a 'hlt' instruction.
-
-
-Functions to implement:
-
-To simplify development the code has been split into a general setup
-part and an emulator specific one. A generic setup code is provided in
-generic.c. It should be usable with any emulator satisfying the
-conditions mentioned above. Therefore the following section on int10
-setup may be skipped when porting int10 to new emulator.
-
-If the vm86() is to be used no memory access functions can be used.
-Therefore the layout of the real mode memory image has to meet certain
-requirements. Therefore when porting to other platforms a new setup
-code may have to be designed, too. The following section will give
-guidelines how this may be done. A sample implementation using SysV
-IPC to map the appropriate real mode memory image to address 0 in
-virtual address space just prior to execution may be found in
-xfree86/os-support/linux/int10/linux.c.
-
-On non-PC like platforms emulation of certain PC features such as
-initialization of BIOS int vectors, sys_BIOS constants or PCI config
-method 1 can be turned on by defining _PC.
-
-I. Setup Code
--------------
-
-This sets up the real mode memory image, calls the emulator to POST
-the chipset if required and maintains memory allocations in real mode
-address space.
-
-1. xf86Int10InfoPtr xf86InitInt10(int entityIndex);
-
-This function should first find the screen assigned to the entity
-carrying entitiyIndex and then call
-
- Bool int10skip(ScrnInfoPtr pScrn)
-
-to find out if the user has requested not to initialize int10. If so
-xf86InitInt10() should return NULL. Otherwise an xf86Int10InfoRec
-should be allocated. This structure contains the following fields:
-
- a. int entityIndex - index of the entity whose BIOS is to be
- executed.
- b. int scrnIndex - index of the screen assigned the entity.
- c. pointer cpuRegs - pointer to a emulator/vm86-mode private
- structure. May hold cpu register values
- for the emulator.
- d. CARD16 BIOSseg - Video BIOS segment address.
- e. pointer private - pointer to a os specific data structure.
- f. struct _int10Mem* - pointer to a structure to hold the memory
- access functions for use by an emulator.
- g. int num - number of the int to be called.
- h. int ax..es,flags - CPU register values to pass to int-call.
-
-The Init function should initialize a-f. To initialize the emulator
-specific execute environment the function
-
- Bool xf86Int10ExecSetup(xf86Int10InfoPtr pInt)
-
-should be called. If this function returns FALSE any already allocated
-memory should be freed and xf86Int10Init(0 should exit returning NULL.
-
-If the platform has a PC like system BIOS it may be copied to or
-mapped into memory locations SYS_BIOS to SYS_SIZE-1 of the real mode
-memory environment of this process. Otherwise the helper function:
-
-int setup_system_bios(CARD32 base_addr);
-
-may be called to set up a rudimentary system BIOS sufficient to be
-used to boot video BIOSes. base_addr specifies the virtual address
-corresponding to SYS_BIOS in the real mode environment. If a PC-like
-int vector and BIOS data area is available it should be copied to 0 to
-LOW_PAGE_SIZE of the entities real mode environment. In this case the
-video interrupt related entries should be reset for all non-primary
-cards by calling:
-
-void reset_int_vect(xf86Int10InfoPtr pInt); To initialize the
-
-correct video BIOS entry points the BIOS must be warm-booted. If no
-PC-like int vector is available one can be set up by calling
-
-void setup_int_vect(xf86Int10InfoPtr pInt);
-
-In this case the video BIOS has to be warm-booted always. If the
-video BIOS for this entity has been installed during boot it may be
-mapped (or copied) directly to the correct address in the real mode
-memory environment. Otherwise
-
-int mapPciRom(xf86Int10InfoPtr pInt, unsigned char * address);
-
-should be called to copy the BIOS image from PCI ROM. 'address'
-specifies the address this image should be copied to. Sufficient space
-to hold an entire BIOS image should be allocated prior to calling
-mapPciRom(). This function will return the size of the BIOS image in
-bytes if it was able to successfully copy the image and 0
-otherwise. To create a well defined point to exit the softbooter
-
-void set_return_trap(xf86Int10Ptr pInt);
-
-may be called. It sets up a 'hlt' instruction in the emulator memory
-just above the BIOS variable area. Before entering real mode execution
-this address will be pushed onto the return stack. If the BIOS needs
-to be warm-booted this should be done before leaving xf86InitInt10()
-by setting num in the xf86Int10InfoRec to 0xe6 and calling
-
-void xf86ExecX86int10(xf86Int10IfoPtr pInt);
-
-The implementation of this function will be discussed below. This
-function should be wrapped by calls to void LockLegacyVGA(screen,
-legacyVGAPtr vga); and void UnlockLegacyVGA(screen, legacyVGAPtr vga);
-The struct vga is used to hold the state of the legacy VGA access
-registers if a legacy VGA device exists. xf86InitInt10() should
-return a pointer to the xf86Int10InfoRec allocated.
-
-2. Bool MapCurrentInt10(xf86Int10InfoPtr pInt);
-
-In case a platform specific mapping has to be performed to map the
-memory allocated for the real mode memory environment into a specific
-location prior to executing the x86 real mode code a function
-
- Bool MapCurrentInt10(xf86Int10InfoPtr pInt);
-
-has to be provided. It will be called by a helper function whenever
-the active entity changes. If the vm86 mode is used it is most likely
-that the 1MB real mode memory space located somewhere in the processes
-virtual memory will have to be remapped to address 0 of the virtual
-memory space.
-
-3. void xf86FreeInt10(xf86Int10InfoPtr pInt);
-
-To free all memory allocated for video BIOS calls of a specific entity
-the function
-
- void xf86FreeInt10(xf86Int10InfoPtr pInt);
-
-should be provided. If the entity to be freed was mapped by
-MapCurrentInt10() this mapping needs to be undone also.
-
-4.
- void * xf86Int10AllocPages(xf86Int10InfoPtr pInt,int num, int *off)
- void xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num)
-
-xf86Int10AllocPages() should allocate 'num' consecutive page-size
-chunks of memory. In real mode memory space this range needs to occupy
-consecutive addresses, too. The function must return the address of
-this memory. The offset in real mode memory needs to be returned in
-'off'. If no block of 'num' pages are available the function should
-return NULL.
-
-xf86Int10FreePages() will free the 'num' pages starting at 'pbase'.
-'num' is equal to the number of pages allocated by a single
-xf86Int10AllocatePages() call. 'pbase' is the address of the range
-previously returned by xf86Int10AllocatePages().
-
-II. Emulator specific functions
--------------------------------
-
-1. Bool xf86Int10ExecSetup(xf86Int10InfoPtr pInt);
-
-This function will be called from xf86InitInt10(). It may be used to
-set up the static emulator specific part of the real mode
-environment. On success it should return TRUE.
-
-2. xf86ExecX86int10(xf86Int10InfoPtr pInt);
-
-This function gets called to execute an int call. It may call the
-helper function:
-
- void setup_int(xf86Int10InfoPrt pInt);
-
-to copy the register values to the emulator specific locations and to
-set up the non-static real mode execution environment. On return from
-setup_int() 'Int10Current' holds a pointer to the current
-xf86Int10InfoRec.
-
-It should start execution by calling
-
- Bool int_handler(xf86Int10InfoPtr pInt);
-
-and if this function returns TRUE it should call whatever necessary to
-continue execution until a 'hlt' instruction is encountered. To copy
-the resulting register values back to the xf86Int10InfoRec structure
-
- void finish_int(xf86Int10InfoPtr pInt);
-
-should be called.
-
-Helper functions are provided to aid the implementation of a vm86
-call:
-
- Bool vm86_GP_fault(xf86Int10InfoPtr pInt);
-
-This function handles instructions which cause a vm86 call to
-trap. PIO access is handled by the in/out calls as defined in
-compiler.h. Optionally the PIO instructions can be logged by defining
-PRINT_PORT in xf86int10.h. This is meant for debugging purposes.
-
-Unknown instructions and 'hlt' cause vm86_GP_fault() to return
-FALSE. Otherwise TRUE is returned.
-
-Note: This function is currently based on the Linux vm86 call. It
-might have to be modified or even rewritten for other OS. So your
-milage may vary.
-
-Functions to dump memory, code, xf86 CPU register values and stack are
-also provided. Take a look at helper.c To view a memory range the
-function
-
- void dprint(unsigned long start, unsigned long size)
-
-is provided. The use should be self explanatory.
-
-Register and memory access functions are provided in helper_mem.c.
-The PIO register access functions can trap access to PCI config space
-access register (config method 1) if _PC is not defined.
-
-A header file 'defines.h' is required to define OS/emulator specific
-ways to access memory and xf86 CPU registers: Defines need to be
-provided for memory byte/work/long read/write access
-(MEM_RB(name,addr),MEM_RW(name,addr),MEM_RL(name,addr),
-MEM_WB(name,addr,val),MEM_WL(name,addr,val),MEM_WL(name,addr,val)) of
-the real mode memory environment. 'name' will contain a pointer to the
-current xf86Int10InfoRec. Currently defines are available for
-vm86-mode under Linux and x86emu. They may be activated by defining
-_X86EMU or _VM86_LINUX respectively.
-
-Note: Emulators usually are not able to pass this pointer when calling
-memory access functions. In this case a global variable should be
-defined which can hold this pointer. This variable can be set in
-MapCurrentInt10(). It also must be set in xf86InitInt10() if this
-function calls the memory access functions either directly or by
-calling xf86ExecX86int10(pInt). Defines to access the emulator
-specific xf86 CPU register locations are also required:
-X86_EAX,...,X86_EFLAGS for access of the full 32 bit registers,
-X86_AX...X86_FLAGS for access of the 16 bit registers and
-XF86_AL,XF86_BL,XF86_CL,XF86_DL to access the lower byte of the
-AX,BX,CX and DX register.
-
-
-$XFree86: xc/programs/Xserver/hw/xfree86/int10/INT10.HOWTO,v 1.2 2000/02/08 13:13:22 eich Exp $
+
+ INT10 X86 Real Mode executor
+ =============================
+
+ PRELIMINARY
+
+INT10 is a XFree86 module for soft-booting and executing real mode
+int10 BIOS calls. The BIOS call code is largely untested, yet.
+
+1. Usage
+========
+
+To use the int10 module in a driver the header file
+xfree86/os-support/int10/xf86int10.h must be included.
+
+ a. Initialization
+ -----------------
+
+The int10-executer gets initialized by calling:
+
+ xf86Int10InfoPtr xf86InitInt10(int entityIndex);
+
+The function will soft-boot any non-primary device and return a
+pointer to a xf86Int10InfoRec on success. If anything fails or if
+int10 execution is disabled by an option in the device section NULL
+will be returned. The driver should store this pointer for later
+calls to other int10 module functions.
+
+ b. Memory allocation
+ --------------------
+
+To allocate memory in the real mode execution environment
+
+ void * xf86Int10AllocPages(xf86Int10InfoPtr pInt,int num, int *off);
+
+can be called. It allocates num consecutive pagesize chunks. It
+returns the address of the allocated area. off is set to its offset in
+the real mode memory space.
+
+ void xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num);
+
+Is used to free num pages beginning at pbase.
+
+ c. Doing int10 BIOS calls
+ -------------------------
+
+The BIOS call is executed by calling:
+
+ void xf86ExecX86int10(xf86Int10InfoPtr pInt);
+
+The number of the interrupt (normally 10) and the initial values of
+the ax, bx, cx, dx, si, di and es x86-CPU registers can be set in the
+xf86Int10InfoRec passed to the function. On return this structure
+contains the exit values of the registers listed above and the CPU
+flag register.
+
+ d. De-initializing
+ -----------------
+
+If no further int10 calls are required for a certain chipset
+the driver should call:
+
+ void xf86FreeInt10(xf86Int10InfoPtr pInt);
+
+to free the memory allocated for real mode int10 calls.
+
+
+2. Porting issues
+=================
+
+The int10 real mode executor is designed to run on top of various x86
+CPU emulators as well as in vm86 mode of a real x86 CPU. If used with
+a CPU emulator the emulator and CPU specific interfaces can be held
+separate thus requiring minimal efforts to port the int10 module to
+new platforms. Currently an interface to the x86emu real mode
+emulator is provided. Since details of setting up and running the
+vm86 mode is platform dependent both the platform dependent
+environment and the emulation layer have to be ported. Several helper
+functions are provided for that.
+
+A CPU emulator should meet certain requirements to be usable
+for the INT10 executor:
+
+1. It must trap calls to intXX instructions and pass execution to an
+ external function which is allowed to modify CPU registers
+ including the instruction pointer (IP) before returning to the
+ emulator for continuing execution. When the external function is
+ called the IP must point to the instruction past the intXX call.
+
+2. The emulator should use externally provided functions to handle
+ PIO.
+
+3. The emulator should be able to use externally provided functions
+ to access memory from the real mode memory environment. Note, that
+ the vm86 mode usually requires one hunk of consecutive memory
+ starting at address 0 in the process virtual memory space. Thus if
+ this mode is to be used, the OS environment has to be able to provide
+ that, ie. it must be able to remap the processes virtual memory space
+ onto itself. If the emulator is able to handle memory access thru
+ externally provided functions the real mode process memory can be
+ located anywhere in the processes virtual memory. It does not even
+ have to be consecutive.
+
+4. The executor should terminate on encountering a 'hlt' instruction.
+
+
+Functions to implement:
+
+To simplify development the code has been split into a general setup
+part and an emulator specific one. A generic setup code is provided in
+generic.c. It should be usable with any emulator satisfying the
+conditions mentioned above. Therefore the following section on int10
+setup may be skipped when porting int10 to new emulator.
+
+If the vm86() is to be used no memory access functions can be used.
+Therefore the layout of the real mode memory image has to meet certain
+requirements. Therefore when porting to other platforms a new setup
+code may have to be designed, too. The following section will give
+guidelines how this may be done. A sample implementation using SysV
+IPC to map the appropriate real mode memory image to address 0 in
+virtual address space just prior to execution may be found in
+xfree86/os-support/linux/int10/linux.c.
+
+On non-PC like platforms emulation of certain PC features such as
+initialization of BIOS int vectors, sys_BIOS constants or PCI config
+method 1 can be turned on by defining _PC.
+
+I. Setup Code
+-------------
+
+This sets up the real mode memory image, calls the emulator to POST
+the chipset if required and maintains memory allocations in real mode
+address space.
+
+1. xf86Int10InfoPtr xf86InitInt10(int entityIndex);
+
+This function should first find the screen assigned to the entity
+carrying entitiyIndex and then call
+
+ Bool int10skip(ScrnInfoPtr pScrn)
+
+to find out if the user has requested not to initialize int10. If so
+xf86InitInt10() should return NULL. Otherwise an xf86Int10InfoRec
+should be allocated. This structure contains the following fields:
+
+ a. int entityIndex - index of the entity whose BIOS is to be
+ executed.
+ b. int scrnIndex - index of the screen assigned the entity.
+ c. pointer cpuRegs - pointer to a emulator/vm86-mode private
+ structure. May hold cpu register values
+ for the emulator.
+ d. CARD16 BIOSseg - Video BIOS segment address.
+ e. pointer private - pointer to a os specific data structure.
+ f. struct _int10Mem* - pointer to a structure to hold the memory
+ access functions for use by an emulator.
+ g. int num - number of the int to be called.
+ h. int ax..es,flags - CPU register values to pass to int-call.
+
+The Init function should initialize a-f. To initialize the emulator
+specific execute environment the function
+
+ Bool xf86Int10ExecSetup(xf86Int10InfoPtr pInt)
+
+should be called. If this function returns FALSE any already allocated
+memory should be freed and xf86Int10Init(0 should exit returning NULL.
+
+If the platform has a PC like system BIOS it may be copied to or
+mapped into memory locations SYS_BIOS to SYS_SIZE-1 of the real mode
+memory environment of this process. Otherwise the helper function:
+
+int setup_system_bios(CARD32 base_addr);
+
+may be called to set up a rudimentary system BIOS sufficient to be
+used to boot video BIOSes. base_addr specifies the virtual address
+corresponding to SYS_BIOS in the real mode environment. If a PC-like
+int vector and BIOS data area is available it should be copied to 0 to
+LOW_PAGE_SIZE of the entities real mode environment. In this case the
+video interrupt related entries should be reset for all non-primary
+cards by calling:
+
+void reset_int_vect(xf86Int10InfoPtr pInt); To initialize the
+
+correct video BIOS entry points the BIOS must be warm-booted. If no
+PC-like int vector is available one can be set up by calling
+
+void setup_int_vect(xf86Int10InfoPtr pInt);
+
+In this case the video BIOS has to be warm-booted always. If the
+video BIOS for this entity has been installed during boot it may be
+mapped (or copied) directly to the correct address in the real mode
+memory environment. Otherwise
+
+int mapPciRom(xf86Int10InfoPtr pInt, unsigned char * address);
+
+should be called to copy the BIOS image from PCI ROM. 'address'
+specifies the address this image should be copied to. Sufficient space
+to hold an entire BIOS image should be allocated prior to calling
+mapPciRom(). This function will return the size of the BIOS image in
+bytes if it was able to successfully copy the image and 0
+otherwise. To create a well defined point to exit the softbooter
+
+void set_return_trap(xf86Int10Ptr pInt);
+
+may be called. It sets up a 'hlt' instruction in the emulator memory
+just above the BIOS variable area. Before entering real mode execution
+this address will be pushed onto the return stack. If the BIOS needs
+to be warm-booted this should be done before leaving xf86InitInt10()
+by setting num in the xf86Int10InfoRec to 0xe6 and calling
+
+void xf86ExecX86int10(xf86Int10IfoPtr pInt);
+
+The implementation of this function will be discussed below. This
+function should be wrapped by calls to void LockLegacyVGA(screen,
+legacyVGAPtr vga); and void UnlockLegacyVGA(screen, legacyVGAPtr vga);
+The struct vga is used to hold the state of the legacy VGA access
+registers if a legacy VGA device exists. xf86InitInt10() should
+return a pointer to the xf86Int10InfoRec allocated.
+
+2. Bool MapCurrentInt10(xf86Int10InfoPtr pInt);
+
+In case a platform specific mapping has to be performed to map the
+memory allocated for the real mode memory environment into a specific
+location prior to executing the x86 real mode code a function
+
+ Bool MapCurrentInt10(xf86Int10InfoPtr pInt);
+
+has to be provided. It will be called by a helper function whenever
+the active entity changes. If the vm86 mode is used it is most likely
+that the 1MB real mode memory space located somewhere in the processes
+virtual memory will have to be remapped to address 0 of the virtual
+memory space.
+
+3. void xf86FreeInt10(xf86Int10InfoPtr pInt);
+
+To free all memory allocated for video BIOS calls of a specific entity
+the function
+
+ void xf86FreeInt10(xf86Int10InfoPtr pInt);
+
+should be provided. If the entity to be freed was mapped by
+MapCurrentInt10() this mapping needs to be undone also.
+
+4.
+ void * xf86Int10AllocPages(xf86Int10InfoPtr pInt,int num, int *off)
+ void xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num)
+
+xf86Int10AllocPages() should allocate 'num' consecutive page-size
+chunks of memory. In real mode memory space this range needs to occupy
+consecutive addresses, too. The function must return the address of
+this memory. The offset in real mode memory needs to be returned in
+'off'. If no block of 'num' pages are available the function should
+return NULL.
+
+xf86Int10FreePages() will free the 'num' pages starting at 'pbase'.
+'num' is equal to the number of pages allocated by a single
+xf86Int10AllocatePages() call. 'pbase' is the address of the range
+previously returned by xf86Int10AllocatePages().
+
+II. Emulator specific functions
+-------------------------------
+
+1. Bool xf86Int10ExecSetup(xf86Int10InfoPtr pInt);
+
+This function will be called from xf86InitInt10(). It may be used to
+set up the static emulator specific part of the real mode
+environment. On success it should return TRUE.
+
+2. xf86ExecX86int10(xf86Int10InfoPtr pInt);
+
+This function gets called to execute an int call. It may call the
+helper function:
+
+ void setup_int(xf86Int10InfoPrt pInt);
+
+to copy the register values to the emulator specific locations and to
+set up the non-static real mode execution environment. On return from
+setup_int() 'Int10Current' holds a pointer to the current
+xf86Int10InfoRec.
+
+It should start execution by calling
+
+ Bool int_handler(xf86Int10InfoPtr pInt);
+
+and if this function returns TRUE it should call whatever necessary to
+continue execution until a 'hlt' instruction is encountered. To copy
+the resulting register values back to the xf86Int10InfoRec structure
+
+ void finish_int(xf86Int10InfoPtr pInt);
+
+should be called.
+
+Helper functions are provided to aid the implementation of a vm86
+call:
+
+ Bool vm86_GP_fault(xf86Int10InfoPtr pInt);
+
+This function handles instructions which cause a vm86 call to
+trap. PIO access is handled by the in/out calls as defined in
+compiler.h. Optionally the PIO instructions can be logged by defining
+PRINT_PORT in xf86int10.h. This is meant for debugging purposes.
+
+Unknown instructions and 'hlt' cause vm86_GP_fault() to return
+FALSE. Otherwise TRUE is returned.
+
+Note: This function is currently based on the Linux vm86 call. It
+might have to be modified or even rewritten for other OS. So your
+milage may vary.
+
+Functions to dump memory, code, xf86 CPU register values and stack are
+also provided. Take a look at helper.c To view a memory range the
+function
+
+ void dprint(unsigned long start, unsigned long size)
+
+is provided. The use should be self explanatory.
+
+Register and memory access functions are provided in helper_mem.c.
+The PIO register access functions can trap access to PCI config space
+access register (config method 1) if _PC is not defined.
+
+A header file 'defines.h' is required to define OS/emulator specific
+ways to access memory and xf86 CPU registers: Defines need to be
+provided for memory byte/work/long read/write access
+(MEM_RB(name,addr),MEM_RW(name,addr),MEM_RL(name,addr),
+MEM_WB(name,addr,val),MEM_WL(name,addr,val),MEM_WL(name,addr,val)) of
+the real mode memory environment. 'name' will contain a pointer to the
+current xf86Int10InfoRec. Currently defines are available for
+vm86-mode under Linux and x86emu. They may be activated by defining
+_X86EMU or _VM86_LINUX respectively.
+
+Note: Emulators usually are not able to pass this pointer when calling
+memory access functions. In this case a global variable should be
+defined which can hold this pointer. This variable can be set in
+MapCurrentInt10(). It also must be set in xf86InitInt10() if this
+function calls the memory access functions either directly or by
+calling xf86ExecX86int10(pInt). Defines to access the emulator
+specific xf86 CPU register locations are also required:
+X86_EAX,...,X86_EFLAGS for access of the full 32 bit registers,
+X86_AX...X86_FLAGS for access of the 16 bit registers and
+XF86_AL,XF86_BL,XF86_CL,XF86_DL to access the lower byte of the
+AX,BX,CX and DX register.
+
+
+$XFree86: xc/programs/Xserver/hw/xfree86/int10/INT10.HOWTO,v 1.2 2000/02/08 13:13:22 eich Exp $
diff --git a/xorg-server/hw/xfree86/int10/generic.c b/xorg-server/hw/xfree86/int10/generic.c
index 8614e0b9b..5343e47e3 100644
--- a/xorg-server/hw/xfree86/int10/generic.c
+++ b/xorg-server/hw/xfree86/int10/generic.c
@@ -70,12 +70,12 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
void *base = 0;
void *vbiosMem = 0;
void *options = NULL;
- int screen;
legacyVGARec vga;
+ ScrnInfoPtr pScrn;
- screen = (xf86FindScreenForEntity(entityIndex))->scrnIndex;
+ pScrn = xf86FindScreenForEntity(entityIndex);
- options = xf86HandleInt10Options(xf86Screens[screen], entityIndex);
+ options = xf86HandleInt10Options(pScrn, entityIndex);
if (int10skip(options)) {
free(options);
@@ -89,7 +89,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
pInt->mem = &genericMem;
pInt->private = (pointer) xnfcalloc(1, sizeof(genericInt10Priv));
INTPriv(pInt)->alloc = (pointer) xnfcalloc(1, ALLOC_ENTRIES(getpagesize()));
- pInt->scrnIndex = screen;
+ pInt->pScrn = pScrn;
base = INTPriv(pInt)->base = xnfalloc(SYS_BIOS);
/* FIXME: Shouldn't this be a failure case? Leaving dev as NULL seems like
@@ -109,7 +109,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
INTPriv(pInt)->sysMem = sysMem;
if (xf86ReadBIOS(0, 0, base, LOW_PAGE_SIZE) < 0) {
- xf86DrvMsg(screen, X_ERROR, "Cannot read int vect\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Cannot read int vect\n");
goto error1;
}
@@ -148,7 +148,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
vbiosMem = (unsigned char *) base + bios_location;
err = pci_device_read_rom(rom_device, vbiosMem);
if (err) {
- xf86DrvMsg(screen, X_ERROR, "Cannot read V_BIOS (3) %s\n",
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Cannot read V_BIOS (3) %s\n",
strerror(err));
goto error1;
}
@@ -249,7 +249,6 @@ MapVRam(xf86Int10InfoPtr pInt)
static void
UnmapVRam(xf86Int10InfoPtr pInt)
{
- int screen = pInt->scrnIndex;
int pagesize = getpagesize();
int size = ((VRAM_SIZE + pagesize - 1) / pagesize) * pagesize;
diff --git a/xorg-server/hw/xfree86/int10/helper_exec.c b/xorg-server/hw/xfree86/int10/helper_exec.c
index 1e908778f..1c58cf7ae 100644
--- a/xorg-server/hw/xfree86/int10/helper_exec.c
+++ b/xorg-server/hw/xfree86/int10/helper_exec.c
@@ -125,7 +125,7 @@ run_bios_int(int num, xf86Int10InfoPtr pInt)
if (MEM_RW(pInt, (num << 2) + 2) == (SYS_BIOS >> 4)) { /* SYS_BIOS_SEG ? */
if (num == 21 && X86_AH == 0x4e) {
- xf86DrvMsg(pInt->scrnIndex, X_NOTICE,
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_NOTICE,
"Failing Find-Matching-File on non-PC"
" (int 21, func 4e)\n");
X86_AX = 2;
@@ -133,7 +133,7 @@ run_bios_int(int num, xf86Int10InfoPtr pInt)
return 1;
}
else {
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"Ignoring int 0x%02x call\n", num);
if (xf86GetVerbosity() > 3) {
dump_registers(pInt);
@@ -169,7 +169,7 @@ dump_code(xf86Int10InfoPtr pInt)
int i;
CARD32 lina = SEG_ADR((CARD32), X86_CS, IP);
- xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3, "code at 0x%8.8" PRIx32 ":\n",
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_INFO, 3, "code at 0x%8.8" PRIx32 ":\n",
lina);
for (i = 0; i < 0x10; i++)
xf86ErrorFVerb(3, " %2.2x", MEM_RB(pInt, lina + i));
@@ -182,19 +182,19 @@ dump_code(xf86Int10InfoPtr pInt)
void
dump_registers(xf86Int10InfoPtr pInt)
{
- xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_INFO, 3,
"EAX=0x%8.8lx, EBX=0x%8.8lx, ECX=0x%8.8lx, EDX=0x%8.8lx\n",
(unsigned long) X86_EAX, (unsigned long) X86_EBX,
(unsigned long) X86_ECX, (unsigned long) X86_EDX);
- xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_INFO, 3,
"ESP=0x%8.8lx, EBP=0x%8.8lx, ESI=0x%8.8lx, EDI=0x%8.8lx\n",
(unsigned long) X86_ESP, (unsigned long) X86_EBP,
(unsigned long) X86_ESI, (unsigned long) X86_EDI);
- xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_INFO, 3,
"CS=0x%4.4x, SS=0x%4.4x,"
" DS=0x%4.4x, ES=0x%4.4x, FS=0x%4.4x, GS=0x%4.4x\n",
X86_CS, X86_SS, X86_DS, X86_ES, X86_FS, X86_GS);
- xf86DrvMsgVerb(pInt->scrnIndex, X_INFO, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_INFO, 3,
"EIP=0x%8.8lx, EFLAGS=0x%8.8lx\n",
(unsigned long) X86_EIP, (unsigned long) X86_EFLAGS);
}
@@ -337,7 +337,7 @@ x_inb(CARD16 port)
}
else if (port < 0x0100) { /* Don't interfere with mainboard */
val = 0;
- xf86DrvMsgVerb(Int10Current->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(Int10Current->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"inb 0x%4.4x\n", port);
if (xf86GetVerbosity() > 3) {
dump_registers(Int10Current);
@@ -395,7 +395,7 @@ x_outb(CARD16 port, CARD8 val)
#ifdef __NOT_YET__
}
else if (port < 0x0100) { /* Don't interfere with mainboard */
- xf86DrvMsgVerb(Int10Current->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(Int10Current->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"outb 0x%4.4x,0x%2.2x\n", port, val);
if (xf86GetVerbosity() > 3) {
dump_registers(Int10Current);
diff --git a/xorg-server/hw/xfree86/int10/helper_mem.c b/xorg-server/hw/xfree86/int10/helper_mem.c
index 96c598a53..160c5aedf 100644
--- a/xorg-server/hw/xfree86/int10/helper_mem.c
+++ b/xorg-server/hw/xfree86/int10/helper_mem.c
@@ -281,7 +281,7 @@ xf86int10GetBiosLocationType(const xf86Int10InfoPtr pInt)
#define CHECK_V_SEGMENT_RANGE(x) \
if (((x) << 4) < V_BIOS) { \
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, \
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR, \
"V_BIOS address 0x%lx out of range\n", \
(unsigned long)(x) << 4); \
return FALSE; \
@@ -306,17 +306,17 @@ xf86int10GetBiosSegment(xf86Int10InfoPtr pInt, void *base)
CHECK_V_SEGMENT_RANGE(cs);
vbiosMem = (unsigned char *) base + (cs << 4);
- if (int10_check_bios(pInt->scrnIndex, cs, vbiosMem)) {
+ if (int10_check_bios(pInt->pScrn->scrnIndex, cs, vbiosMem)) {
break;
}
}
if (segments[i] == ~0) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "No V_BIOS found\n");
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR, "No V_BIOS found\n");
return FALSE;
}
- xf86DrvMsg(pInt->scrnIndex, X_INFO, "Primary V_BIOS segment is: 0x%lx\n",
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_INFO, "Primary V_BIOS segment is: 0x%lx\n",
(unsigned long) cs);
pInt->BIOSseg = cs;
diff --git a/xorg-server/hw/xfree86/int10/x86emu.c b/xorg-server/hw/xfree86/int10/x86emu.c
index b3320e5b9..087059131 100644
--- a/xorg-server/hw/xfree86/int10/x86emu.c
+++ b/xorg-server/hw/xfree86/int10/x86emu.c
@@ -1,12 +1,12 @@
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "debug.c"
-#include "decode.c"
-#include "fpu.c"
-#include "ops.c"
-#include "ops2.c"
-#include "prim_ops.c"
-#include "sys.c"
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "debug.c"
+#include "decode.c"
+#include "fpu.c"
+#include "ops.c"
+#include "ops2.c"
+#include "prim_ops.c"
+#include "sys.c"
diff --git a/xorg-server/hw/xfree86/int10/xf86int10.c b/xorg-server/hw/xfree86/int10/xf86int10.c
index df347d4dd..5ead44f23 100644
--- a/xorg-server/hw/xfree86/int10/xf86int10.c
+++ b/xorg-server/hw/xfree86/int10/xf86int10.c
@@ -57,7 +57,7 @@ int_handler(xf86Int10InfoPtr pInt)
ret = run_bios_int(num, pInt);
if (!ret) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "Halting on int 0x%2.2x!\n", num);
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR, "Halting on int 0x%2.2x!\n", num);
dump_registers(pInt);
stack_trace(pInt);
}
@@ -257,7 +257,7 @@ int42_handler(xf86Int10InfoPtr pInt)
/* DL = character column */
/* Not Implemented */
{ /* Localise */
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"int 0x%2.2x(AH=0x04) -- Get Light Pen Position\n",
pInt->num);
if (xf86GetVerbosity() > 3) {
@@ -314,10 +314,10 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Leave: Nothing */
/* Not Implemented */
{ /* Localise */
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"int 0x%2.2x(AH=0x06) -- Initialise or Scroll Window Up\n",
pInt->num);
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 3,
" AL=0x%2.2x, BH=0x%2.2x,"
" CH=0x%2.2x, CL=0x%2.2x, DH=0x%2.2x, DL=0x%2.2x\n",
X86_AL, X86_BH, X86_CH, X86_CL, X86_DH, X86_DL);
@@ -339,10 +339,10 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Leave: Nothing */
/* Not Implemented */
{ /* Localise */
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"int 0x%2.2x(AH=0x07) -- Initialise or Scroll Window Down\n",
pInt->num);
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 3,
" AL=0x%2.2x, BH=0x%2.2x,"
" CH=0x%2.2x, CL=0x%2.2x, DH=0x%2.2x, DL=0x%2.2x\n",
X86_AL, X86_BH, X86_CH, X86_CL, X86_DH, X86_DL);
@@ -360,10 +360,10 @@ int42_handler(xf86Int10InfoPtr pInt)
/* AL = character */
/* Not Implemented */
{ /* Localise */
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"int 0x%2.2x(AH=0x08) -- Read Character and Attribute at"
" Cursor\n", pInt->num);
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 3,
"BH=0x%2.2x\n", X86_BH);
if (xf86GetVerbosity() > 3) {
dump_registers(pInt);
@@ -382,10 +382,10 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Leave: Nothing */
/* Not Implemented */
{ /* Localise */
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"int 0x%2.2x(AH=0x09) -- Write Character and Attribute at"
" Cursor\n", pInt->num);
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 3,
"AL=0x%2.2x, BH=0x%2.2x, BL=0x%2.2x, CX=0x%4.4x\n",
X86_AL, X86_BH, X86_BL, X86_CX);
if (xf86GetVerbosity() > 3) {
@@ -404,10 +404,10 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Leave: Nothing */
/* Not Implemented */
{ /* Localise */
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"int 0x%2.2x(AH=0x0A) -- Write Character at Cursor\n",
pInt->num);
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 3,
"AL=0x%2.2x, BH=0x%2.2x, BL=0x%2.2x, CX=0x%4.4x\n",
X86_AL, X86_BH, X86_BL, X86_CX);
if (xf86GetVerbosity() > 3) {
@@ -450,10 +450,10 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Leave: Nothing */
/* Not Implemented */
{ /* Localise */
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"int 0x%2.2x(AH=0x0C) -- Write Graphics Pixel\n",
pInt->num);
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 3,
"AL=0x%2.2x, BH=0x%2.2x, CX=0x%4.4x, DX=0x%4.4x\n",
X86_AL, X86_BH, X86_CX, X86_DX);
if (xf86GetVerbosity() > 3) {
@@ -471,10 +471,10 @@ int42_handler(xf86Int10InfoPtr pInt)
/* Leave: AL = pixel value */
/* Not Implemented */
{ /* Localise */
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"int 0x%2.2x(AH=0x0D) -- Read Graphics Pixel\n",
pInt->num);
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 3,
"BH=0x%2.2x, CX=0x%4.4x, DX=0x%4.4x\n", X86_BH, X86_CX,
X86_DX);
if (xf86GetVerbosity() > 3) {
@@ -498,10 +498,10 @@ int42_handler(xf86Int10InfoPtr pInt)
/* which might or might not have been */
/* installed yet. */
{ /* Localise */
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"int 0x%2.2x(AH=0x0E) -- Write Character in Teletype Mode\n",
pInt->num);
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 3,
"AL=0x%2.2x, BH=0x%2.2x, BL=0x%2.2x\n",
X86_AL, X86_BH, X86_BL);
if (xf86GetVerbosity() > 3) {
@@ -564,10 +564,10 @@ int42_handler(xf86Int10InfoPtr pInt)
/* which might or might not have been */
/* installed yet. */
{ /* Localise */
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"int 0x%2.2x(AH=0x13) -- Write String in Teletype Mode\n",
pInt->num);
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 3,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 3,
"AL=0x%2.2x, BL=0x%2.2x, CX=0x%4.4x,"
" DH=0x%2.2x, DL=0x%2.2x, ES:BP=0x%4.4x:0x%4.4x\n",
X86_AL, X86_BL, X86_CX, X86_DH, X86_DL, X86_ES, X86_BP);
@@ -840,7 +840,7 @@ int1A_handler(xf86Int10InfoPtr pInt)
#endif
return 1;
default:
- xf86DrvMsgVerb(pInt->scrnIndex, X_NOT_IMPLEMENTED, 2,
+ xf86DrvMsgVerb(pInt->pScrn->scrnIndex, X_NOT_IMPLEMENTED, 2,
"int 0x1a subfunction\n");
dump_registers(pInt);
if (xf86GetVerbosity() > 3)
diff --git a/xorg-server/hw/xfree86/int10/xf86int10.h b/xorg-server/hw/xfree86/int10/xf86int10.h
index 36b659fd7..6d564fc1a 100644
--- a/xorg-server/hw/xfree86/int10/xf86int10.h
+++ b/xorg-server/hw/xfree86/int10/xf86int10.h
@@ -21,10 +21,10 @@
/* int10 info structure */
typedef struct {
int entityIndex;
- int scrnIndex;
- pointer cpuRegs;
CARD16 BIOSseg;
CARD16 inb40time;
+ ScrnInfoPtr pScrn;
+ pointer cpuRegs;
char *BIOSScratch;
int Flags;
pointer private;
diff --git a/xorg-server/hw/xfree86/int10/xf86x86emu.h b/xorg-server/hw/xfree86/int10/xf86x86emu.h
index 4af2dafb7..320ad6fa8 100644
--- a/xorg-server/hw/xfree86/int10/xf86x86emu.h
+++ b/xorg-server/hw/xfree86/int10/xf86x86emu.h
@@ -1,54 +1,54 @@
-/*
- * XFree86 int10 module
- * execute BIOS int 10h calls in x86 real mode environment
- * Copyright 1999 Egbert Eich
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef XF86X86EMU_H_
-#define XF86X86EMU_H_
-#include <x86emu.h>
-
-#define M _X86EMU_env
-
-#define X86_EAX M.x86.R_EAX
-#define X86_EBX M.x86.R_EBX
-#define X86_ECX M.x86.R_ECX
-#define X86_EDX M.x86.R_EDX
-#define X86_ESI M.x86.R_ESI
-#define X86_EDI M.x86.R_EDI
-#define X86_EBP M.x86.R_EBP
-#define X86_EIP M.x86.R_EIP
-#define X86_ESP M.x86.R_ESP
-#define X86_EFLAGS M.x86.R_EFLG
-
-#define X86_FLAGS M.x86.R_FLG
-#define X86_AX M.x86.R_AX
-#define X86_BX M.x86.R_BX
-#define X86_CX M.x86.R_CX
-#define X86_DX M.x86.R_DX
-#define X86_SI M.x86.R_SI
-#define X86_DI M.x86.R_DI
-#define X86_BP M.x86.R_BP
-#define X86_IP M.x86.R_IP
-#define X86_SP M.x86.R_SP
-#define X86_CS M.x86.R_CS
-#define X86_DS M.x86.R_DS
-#define X86_ES M.x86.R_ES
-#define X86_SS M.x86.R_SS
-#define X86_FS M.x86.R_FS
-#define X86_GS M.x86.R_GS
-
-#define X86_AL M.x86.R_AL
-#define X86_BL M.x86.R_BL
-#define X86_CL M.x86.R_CL
-#define X86_DL M.x86.R_DL
-
-#define X86_AH M.x86.R_AH
-#define X86_BH M.x86.R_BH
-#define X86_CH M.x86.R_CH
-#define X86_DH M.x86.R_DH
-
-#endif
+/*
+ * XFree86 int10 module
+ * execute BIOS int 10h calls in x86 real mode environment
+ * Copyright 1999 Egbert Eich
+ */
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#ifndef XF86X86EMU_H_
+#define XF86X86EMU_H_
+#include <x86emu.h>
+
+#define M _X86EMU_env
+
+#define X86_EAX M.x86.R_EAX
+#define X86_EBX M.x86.R_EBX
+#define X86_ECX M.x86.R_ECX
+#define X86_EDX M.x86.R_EDX
+#define X86_ESI M.x86.R_ESI
+#define X86_EDI M.x86.R_EDI
+#define X86_EBP M.x86.R_EBP
+#define X86_EIP M.x86.R_EIP
+#define X86_ESP M.x86.R_ESP
+#define X86_EFLAGS M.x86.R_EFLG
+
+#define X86_FLAGS M.x86.R_FLG
+#define X86_AX M.x86.R_AX
+#define X86_BX M.x86.R_BX
+#define X86_CX M.x86.R_CX
+#define X86_DX M.x86.R_DX
+#define X86_SI M.x86.R_SI
+#define X86_DI M.x86.R_DI
+#define X86_BP M.x86.R_BP
+#define X86_IP M.x86.R_IP
+#define X86_SP M.x86.R_SP
+#define X86_CS M.x86.R_CS
+#define X86_DS M.x86.R_DS
+#define X86_ES M.x86.R_ES
+#define X86_SS M.x86.R_SS
+#define X86_FS M.x86.R_FS
+#define X86_GS M.x86.R_GS
+
+#define X86_AL M.x86.R_AL
+#define X86_BL M.x86.R_BL
+#define X86_CL M.x86.R_CL
+#define X86_DL M.x86.R_DL
+
+#define X86_AH M.x86.R_AH
+#define X86_BH M.x86.R_BH
+#define X86_CH M.x86.R_CH
+#define X86_DH M.x86.R_DH
+
+#endif
diff --git a/xorg-server/hw/xfree86/modes/Makefile.am b/xorg-server/hw/xfree86/modes/Makefile.am
index 9236426bf..e0386d748 100644
--- a/xorg-server/hw/xfree86/modes/Makefile.am
+++ b/xorg-server/hw/xfree86/modes/Makefile.am
@@ -1,35 +1,35 @@
-noinst_LTLIBRARIES = libxf86modes.la
-
-if DGA
-DGA_SRCS = xf86DiDGA.c
-endif
-
-libxf86modes_la_SOURCES = \
- xf86Crtc.c \
- xf86Crtc.h \
- xf86Cursors.c \
- xf86cvt.c \
- xf86gtf.c \
- xf86DisplayIDModes.c \
- xf86EdidModes.c \
- xf86Modes.c \
- xf86Modes.h \
- xf86RandR12.c \
- xf86RandR12.h \
- xf86Rename.h \
- xf86Rotate.c \
- $(DGA_SRCS)
-
-INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
- -I$(srcdir)/../loader -I$(srcdir)/../rac -I$(srcdir)/../parser \
- -I$(srcdir)/../vbe -I$(srcdir)/../int10 \
- -I$(srcdir)/../vgahw -I$(srcdir)/../ramdac \
- -I$(srcdir)/../dixmods/extmod
-
-sdk_HEADERS = \
- xf86Crtc.h \
- xf86Modes.h \
- xf86RandR12.h \
- xf86Rename.h
-
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
+noinst_LTLIBRARIES = libxf86modes.la
+
+if DGA
+DGA_SRCS = xf86DiDGA.c
+endif
+
+libxf86modes_la_SOURCES = \
+ xf86Crtc.c \
+ xf86Crtc.h \
+ xf86Cursors.c \
+ xf86cvt.c \
+ xf86gtf.c \
+ xf86DisplayIDModes.c \
+ xf86EdidModes.c \
+ xf86Modes.c \
+ xf86Modes.h \
+ xf86RandR12.c \
+ xf86RandR12.h \
+ xf86Rename.h \
+ xf86Rotate.c \
+ $(DGA_SRCS)
+
+INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
+ -I$(srcdir)/../loader -I$(srcdir)/../rac -I$(srcdir)/../parser \
+ -I$(srcdir)/../vbe -I$(srcdir)/../int10 \
+ -I$(srcdir)/../vgahw -I$(srcdir)/../ramdac \
+ -I$(srcdir)/../dixmods/extmod
+
+sdk_HEADERS = \
+ xf86Crtc.h \
+ xf86Modes.h \
+ xf86RandR12.h \
+ xf86Rename.h
+
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/xorg-server/hw/xfree86/modes/xf86Crtc.c b/xorg-server/hw/xfree86/modes/xf86Crtc.c
index ab6ed5e32..2c8878fa7 100644
--- a/xorg-server/hw/xfree86/modes/xf86Crtc.c
+++ b/xorg-server/hw/xfree86/modes/xf86Crtc.c
@@ -716,7 +716,7 @@ xf86CrtcCreateScreenResources(ScreenPtr screen)
* Clean up config on server reset
*/
static Bool
-xf86CrtcCloseScreen(int index, ScreenPtr screen)
+xf86CrtcCloseScreen(ScreenPtr screen)
{
ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
@@ -738,7 +738,7 @@ xf86CrtcCloseScreen(int index, ScreenPtr screen)
}
xf86RandR12CloseScreen(screen);
- return screen->CloseScreen(index, screen);
+ return screen->CloseScreen(screen);
}
/*
@@ -3009,7 +3009,7 @@ xf86OutputGetEDID(xf86OutputPtr output, I2CBusPtr pDDCBus)
ScrnInfoPtr scrn = output->scrn;
xf86MonPtr mon;
- mon = xf86DoEEDID(scrn->scrnIndex, pDDCBus, TRUE);
+ mon = xf86DoEEDID(scrn, pDDCBus, TRUE);
if (mon)
xf86DDCApplyQuirks(scrn->scrnIndex, mon);
diff --git a/xorg-server/hw/xfree86/modes/xf86DiDGA.c b/xorg-server/hw/xfree86/modes/xf86DiDGA.c
index fdec6cb4b..bb954ac4b 100644
--- a/xorg-server/hw/xfree86/modes/xf86DiDGA.c
+++ b/xorg-server/hw/xfree86/modes/xf86DiDGA.c
@@ -137,7 +137,7 @@ xf86_dga_get_viewport(ScrnInfoPtr scrn)
static void
xf86_dga_set_viewport(ScrnInfoPtr scrn, int x, int y, int flags)
{
- scrn->AdjustFrame(scrn->pScreen->myNum, x, y, flags);
+ scrn->AdjustFrame(scrn, x, y);
}
static Bool
diff --git a/xorg-server/hw/xfree86/modes/xf86RandR12.c b/xorg-server/hw/xfree86/modes/xf86RandR12.c
index e6b205223..59b6f8217 100644
--- a/xorg-server/hw/xfree86/modes/xf86RandR12.c
+++ b/xorg-server/hw/xfree86/modes/xf86RandR12.c
@@ -515,7 +515,7 @@ xf86RandR12SetMode(ScreenPtr pScreen,
Bool ret = TRUE;
if (pRoot)
- (*scrp->EnableDisableFBAccess) (pScreen->myNum, FALSE);
+ (*scrp->EnableDisableFBAccess) (scrp, FALSE);
if (useVirtual) {
scrp->virtualX = randrp->virtualX;
scrp->virtualY = randrp->virtualY;
@@ -568,7 +568,7 @@ xf86RandR12SetMode(ScreenPtr pScreen,
xf86SetViewport(pScreen, pScreen->width, pScreen->height);
xf86SetViewport(pScreen, 0, 0);
if (pRoot)
- (*scrp->EnableDisableFBAccess) (pScreen->myNum, TRUE);
+ (*scrp->EnableDisableFBAccess) (scrp, TRUE);
return ret;
}
@@ -685,7 +685,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen,
}
}
if (pRoot && pScrn->vtSema)
- (*pScrn->EnableDisableFBAccess) (pScreen->myNum, FALSE);
+ (*pScrn->EnableDisableFBAccess) (pScrn, FALSE);
/* Let the driver update virtualX and virtualY */
if (!(*config->funcs->resize) (pScrn, width, height))
@@ -724,7 +724,7 @@ xf86RandR12ScreenSetSize(ScreenPtr pScreen,
update_desktop_dimensions();
if (pRoot && pScrn->vtSema)
- (*pScrn->EnableDisableFBAccess) (pScreen->myNum, TRUE);
+ (*pScrn->EnableDisableFBAccess) (pScrn, TRUE);
#if RANDR_12_INTERFACE
if (xf86RandR12Key && pScreen->root && ret)
RRScreenSizeNotify(pScreen);
@@ -1596,10 +1596,9 @@ xf86RandR12TellChanged(ScreenPtr pScreen)
}
static void
-xf86RandR12PointerMoved(int scrnIndex, int x, int y)
+xf86RandR12PointerMoved(ScrnInfoPtr pScrn, int x, int y)
{
- ScreenPtr pScreen = screenInfo.screens[scrnIndex];
- ScrnInfoPtr pScrn = XF86SCRNINFO(pScreen);
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
int c;
@@ -1688,10 +1687,9 @@ gamma_to_ramp(float gamma, CARD16 *ramp, int size)
}
static int
-xf86RandR12ChangeGamma(int scrnIndex, Gamma gamma)
+xf86RandR12ChangeGamma(ScrnInfoPtr pScrn, Gamma gamma)
{
CARD16 *points, *red, *green, *blue;
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
RRCrtcPtr crtc = xf86CompatRRCrtc(pScrn);
int size;
@@ -1723,10 +1721,9 @@ xf86RandR12ChangeGamma(int scrnIndex, Gamma gamma)
}
static Bool
-xf86RandR12EnterVT(int screen_index, int flags)
+xf86RandR12EnterVT(ScrnInfoPtr pScrn)
{
- ScreenPtr pScreen = screenInfo.screens[screen_index];
- ScrnInfoPtr pScrn = xf86Screens[screen_index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
rrScrPrivPtr rp = rrGetScrPriv(pScreen);
Bool ret;
@@ -1734,7 +1731,7 @@ xf86RandR12EnterVT(int screen_index, int flags)
if (randrp->orig_EnterVT) {
pScrn->EnterVT = randrp->orig_EnterVT;
- ret = pScrn->EnterVT(screen_index, flags);
+ ret = pScrn->EnterVT(pScrn);
randrp->orig_EnterVT = pScrn->EnterVT;
pScrn->EnterVT = xf86RandR12EnterVT;
if (!ret)
diff --git a/xorg-server/hw/xfree86/modes/xf86Rotate.c b/xorg-server/hw/xfree86/modes/xf86Rotate.c
index 26eefc8c0..6a661e195 100644
--- a/xorg-server/hw/xfree86/modes/xf86Rotate.c
+++ b/xorg-server/hw/xfree86/modes/xf86Rotate.c
@@ -250,17 +250,16 @@ xf86RotateRedisplay(ScreenPtr pScreen)
}
static void
-xf86RotateBlockHandler(int screenNum, pointer blockData,
+xf86RotateBlockHandler(ScreenPtr pScreen,
pointer pTimeout, pointer pReadmask)
{
- ScreenPtr pScreen = screenInfo.screens[screenNum];
- ScrnInfoPtr pScrn = xf86Screens[screenNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
Bool rotation_active;
rotation_active = xf86RotateRedisplay(pScreen);
pScreen->BlockHandler = xf86_config->BlockHandler;
- (*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
+ (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask);
/* cannot avoid re-wrapping until all wrapping is audited */
xf86_config->BlockHandler = pScreen->BlockHandler;
pScreen->BlockHandler = xf86RotateBlockHandler;
diff --git a/xorg-server/hw/xfree86/os-support/bsd/Makefile.am b/xorg-server/hw/xfree86/os-support/bsd/Makefile.am
index b6ecdf1d1..55eb1151d 100644
--- a/xorg-server/hw/xfree86/os-support/bsd/Makefile.am
+++ b/xorg-server/hw/xfree86/os-support/bsd/Makefile.am
@@ -1,76 +1,76 @@
-noinst_LTLIBRARIES = libbsd.la
-
-# APM support.
-if BSD_KQUEUE_APM
-APM_SOURCES = $(srcdir)/bsd_kqueue_apm.c
-else
-if BSD_APM
-APM_SOURCES = $(srcdir)/bsd_apm.c
-else
-APM_SOURCES = $(srcdir)/../shared/pm_noop.c
-endif
-endif
-
-if FREEBSD_KLDLOAD
-KMOD_SOURCES = bsd_kmod.c
-else
-KMOD_SOURCES = $(srcdir)/../shared/kmod_noop.c
-endif
-
-if AGP
-AGP_SOURCES = $(srcdir)/../linux/lnx_agp.c
-else
-AGP_SOURCES = $(srcdir)/../shared/agp_noop.c
-endif
-
-if ALPHA_VIDEO
-# Cheat here and piggyback other alpha bits on ALPHA_VIDEO.
-ARCH_SOURCES = \
- alpha_video.c \
- bsd_ev56.c \
- bsd_axp.c \
- $(srcdir)/../shared/xf86Axp.c
-endif
-
-if ARM_VIDEO
-ARCH_SOURCES = arm_video.c
-endif
-
-if I386_VIDEO
-ARCH_SOURCES = i386_video.c
-endif
-
-if PPC_VIDEO
-ARCH_SOURCES = ppc_video.c
-endif
-
-if SPARC64_VIDEO
-# Cheat here and piggyback other sparc64 bits on SPARC64_VIDEO.
-ARCH_SOURCES = \
- sparc64_video.c \
- $(srcdir)/../shared/ioperm_noop.c
-endif
-
-# FIXME: NetBSD Aperture defines (configure.ac)
-AM_CFLAGS = -DUSESTDRES $(XORG_CFLAGS) $(DIX_CFLAGS)
-
-INCLUDES = $(XORG_INCS)
-
-libbsd_la_SOURCES = \
- $(srcdir)/../shared/posix_tty.c \
- $(srcdir)/../shared/sigio.c \
- $(srcdir)/../shared/vidmem.c \
- bsd_VTsw.c \
- bsd_init.c \
- bsd_bell.c \
- $(ARCH_SOURCES) \
- $(AGP_SOURCES) \
- $(APM_SOURCES) \
- $(AXP_SOURCES) \
- $(DRI_SOURCES) \
- $(KMOD_SOURCES) \
- $(RES_SOURCES)
-
-# FIXME: Add these files to the build as needed
-EXTRA_DIST = \
- memrange.h
+noinst_LTLIBRARIES = libbsd.la
+
+# APM support.
+if BSD_KQUEUE_APM
+APM_SOURCES = $(srcdir)/bsd_kqueue_apm.c
+else
+if BSD_APM
+APM_SOURCES = $(srcdir)/bsd_apm.c
+else
+APM_SOURCES = $(srcdir)/../shared/pm_noop.c
+endif
+endif
+
+if FREEBSD_KLDLOAD
+KMOD_SOURCES = bsd_kmod.c
+else
+KMOD_SOURCES = $(srcdir)/../shared/kmod_noop.c
+endif
+
+if AGP
+AGP_SOURCES = $(srcdir)/../linux/lnx_agp.c
+else
+AGP_SOURCES = $(srcdir)/../shared/agp_noop.c
+endif
+
+if ALPHA_VIDEO
+# Cheat here and piggyback other alpha bits on ALPHA_VIDEO.
+ARCH_SOURCES = \
+ alpha_video.c \
+ bsd_ev56.c \
+ bsd_axp.c \
+ $(srcdir)/../shared/xf86Axp.c
+endif
+
+if ARM_VIDEO
+ARCH_SOURCES = arm_video.c
+endif
+
+if I386_VIDEO
+ARCH_SOURCES = i386_video.c
+endif
+
+if PPC_VIDEO
+ARCH_SOURCES = ppc_video.c
+endif
+
+if SPARC64_VIDEO
+# Cheat here and piggyback other sparc64 bits on SPARC64_VIDEO.
+ARCH_SOURCES = \
+ sparc64_video.c \
+ $(srcdir)/../shared/ioperm_noop.c
+endif
+
+# FIXME: NetBSD Aperture defines (configure.ac)
+AM_CFLAGS = -DUSESTDRES $(XORG_CFLAGS) $(DIX_CFLAGS)
+
+INCLUDES = $(XORG_INCS)
+
+libbsd_la_SOURCES = \
+ $(srcdir)/../shared/posix_tty.c \
+ $(srcdir)/../shared/sigio.c \
+ $(srcdir)/../shared/vidmem.c \
+ bsd_VTsw.c \
+ bsd_init.c \
+ bsd_bell.c \
+ $(ARCH_SOURCES) \
+ $(AGP_SOURCES) \
+ $(APM_SOURCES) \
+ $(AXP_SOURCES) \
+ $(DRI_SOURCES) \
+ $(KMOD_SOURCES) \
+ $(RES_SOURCES)
+
+# FIXME: Add these files to the build as needed
+EXTRA_DIST = \
+ memrange.h
diff --git a/xorg-server/hw/xfree86/os-support/hurd/Makefile.am b/xorg-server/hw/xfree86/os-support/hurd/Makefile.am
index 3e8224753..2f0ba2ac8 100644
--- a/xorg-server/hw/xfree86/os-support/hurd/Makefile.am
+++ b/xorg-server/hw/xfree86/os-support/hurd/Makefile.am
@@ -1,15 +1,15 @@
-noinst_LTLIBRARIES = libhurd.la
-
-libhurd_la_SOURCES = hurd_bell.c hurd_init.c hurd_mmap.c \
- hurd_video.c \
- $(srcdir)/../shared/VTsw_noop.c \
- $(srcdir)/../shared/posix_tty.c \
- $(srcdir)/../shared/vidmem.c \
- $(srcdir)/../shared/sigiostubs.c \
- $(srcdir)/../shared/pm_noop.c \
- $(srcdir)/../shared/kmod_noop.c \
- $(srcdir)/../shared/agp_noop.c
-
-AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)
-
-INCLUDES = $(XORG_INCS)
+noinst_LTLIBRARIES = libhurd.la
+
+libhurd_la_SOURCES = hurd_bell.c hurd_init.c hurd_mmap.c \
+ hurd_video.c \
+ $(srcdir)/../shared/VTsw_noop.c \
+ $(srcdir)/../shared/posix_tty.c \
+ $(srcdir)/../shared/vidmem.c \
+ $(srcdir)/../shared/sigiostubs.c \
+ $(srcdir)/../shared/pm_noop.c \
+ $(srcdir)/../shared/kmod_noop.c \
+ $(srcdir)/../shared/agp_noop.c
+
+AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)
+
+INCLUDES = $(XORG_INCS)
diff --git a/xorg-server/hw/xfree86/os-support/hurd/hurd_bell.c b/xorg-server/hw/xfree86/os-support/hurd/hurd_bell.c
index 33965a44c..8750eaf44 100644
--- a/xorg-server/hw/xfree86/os-support/hurd/hurd_bell.c
+++ b/xorg-server/hw/xfree86/os-support/hurd/hurd_bell.c
@@ -1,37 +1,37 @@
-/*
- * Copyright © 2006 Daniel Stone
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- *
- * Author: Daniel Stone <daniel@fooishbar.org>
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86Priv.h"
-
-void
-xf86OSRingBell(int loudness, int pitch, int duration)
-{
- return;
-}
+/*
+ * Copyright © 2006 Daniel Stone
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ *
+ * Author: Daniel Stone <daniel@fooishbar.org>
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "xf86.h"
+#include "xf86Priv.h"
+
+void
+xf86OSRingBell(int loudness, int pitch, int duration)
+{
+ return;
+}
diff --git a/xorg-server/hw/xfree86/os-support/int10Defines.h b/xorg-server/hw/xfree86/os-support/int10Defines.h
index d942fbdad..e79722839 100644
--- a/xorg-server/hw/xfree86/os-support/int10Defines.h
+++ b/xorg-server/hw/xfree86/os-support/int10Defines.h
@@ -1,89 +1,89 @@
-/*
- * Copyright (c) 2000-2001 by The XFree86 Project, Inc.
- *
- * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
- * and author(s) 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 copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _INT10DEFINES_H_
-#define _INT10DEFINES_H_ 1
-
-#ifdef _VM86_LINUX
-
-#include <asm/vm86.h>
-
-#define CPU_R(type,name,num) \
- (((type *)&(((struct vm86_struct *)REG->cpuRegs)->regs.name))[num])
-#define CPU_RD(name,num) CPU_R(CARD32,name,num)
-#define CPU_RW(name,num) CPU_R(CARD16,name,num)
-#define CPU_RB(name,num) CPU_R(CARD8,name,num)
-
-#define X86_EAX CPU_RD(eax,0)
-#define X86_EBX CPU_RD(ebx,0)
-#define X86_ECX CPU_RD(ecx,0)
-#define X86_EDX CPU_RD(edx,0)
-#define X86_ESI CPU_RD(esi,0)
-#define X86_EDI CPU_RD(edi,0)
-#define X86_EBP CPU_RD(ebp,0)
-#define X86_EIP CPU_RD(eip,0)
-#define X86_ESP CPU_RD(esp,0)
-#define X86_EFLAGS CPU_RD(eflags,0)
-
-#define X86_FLAGS CPU_RW(eflags,0)
-#define X86_AX CPU_RW(eax,0)
-#define X86_BX CPU_RW(ebx,0)
-#define X86_CX CPU_RW(ecx,0)
-#define X86_DX CPU_RW(edx,0)
-#define X86_SI CPU_RW(esi,0)
-#define X86_DI CPU_RW(edi,0)
-#define X86_BP CPU_RW(ebp,0)
-#define X86_IP CPU_RW(eip,0)
-#define X86_SP CPU_RW(esp,0)
-#define X86_CS CPU_RW(cs,0)
-#define X86_DS CPU_RW(ds,0)
-#define X86_ES CPU_RW(es,0)
-#define X86_SS CPU_RW(ss,0)
-#define X86_FS CPU_RW(fs,0)
-#define X86_GS CPU_RW(gs,0)
-
-#define X86_AL CPU_RB(eax,0)
-#define X86_BL CPU_RB(ebx,0)
-#define X86_CL CPU_RB(ecx,0)
-#define X86_DL CPU_RB(edx,0)
-
-#define X86_AH CPU_RB(eax,1)
-#define X86_BH CPU_RB(ebx,1)
-#define X86_CH CPU_RB(ecx,1)
-#define X86_DH CPU_RB(edx,1)
-
-#elif defined(_X86EMU)
-
-#include "xf86x86emu.h"
-
-#endif
-
-#endif
+/*
+ * Copyright (c) 2000-2001 by The XFree86 Project, Inc.
+ *
+ * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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 copyright holder(s)
+ * and author(s) 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 copyright holder(s) and author(s).
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#ifndef _INT10DEFINES_H_
+#define _INT10DEFINES_H_ 1
+
+#ifdef _VM86_LINUX
+
+#include <asm/vm86.h>
+
+#define CPU_R(type,name,num) \
+ (((type *)&(((struct vm86_struct *)REG->cpuRegs)->regs.name))[num])
+#define CPU_RD(name,num) CPU_R(CARD32,name,num)
+#define CPU_RW(name,num) CPU_R(CARD16,name,num)
+#define CPU_RB(name,num) CPU_R(CARD8,name,num)
+
+#define X86_EAX CPU_RD(eax,0)
+#define X86_EBX CPU_RD(ebx,0)
+#define X86_ECX CPU_RD(ecx,0)
+#define X86_EDX CPU_RD(edx,0)
+#define X86_ESI CPU_RD(esi,0)
+#define X86_EDI CPU_RD(edi,0)
+#define X86_EBP CPU_RD(ebp,0)
+#define X86_EIP CPU_RD(eip,0)
+#define X86_ESP CPU_RD(esp,0)
+#define X86_EFLAGS CPU_RD(eflags,0)
+
+#define X86_FLAGS CPU_RW(eflags,0)
+#define X86_AX CPU_RW(eax,0)
+#define X86_BX CPU_RW(ebx,0)
+#define X86_CX CPU_RW(ecx,0)
+#define X86_DX CPU_RW(edx,0)
+#define X86_SI CPU_RW(esi,0)
+#define X86_DI CPU_RW(edi,0)
+#define X86_BP CPU_RW(ebp,0)
+#define X86_IP CPU_RW(eip,0)
+#define X86_SP CPU_RW(esp,0)
+#define X86_CS CPU_RW(cs,0)
+#define X86_DS CPU_RW(ds,0)
+#define X86_ES CPU_RW(es,0)
+#define X86_SS CPU_RW(ss,0)
+#define X86_FS CPU_RW(fs,0)
+#define X86_GS CPU_RW(gs,0)
+
+#define X86_AL CPU_RB(eax,0)
+#define X86_BL CPU_RB(ebx,0)
+#define X86_CL CPU_RB(ecx,0)
+#define X86_DL CPU_RB(edx,0)
+
+#define X86_AH CPU_RB(eax,1)
+#define X86_BH CPU_RB(ebx,1)
+#define X86_CH CPU_RB(ecx,1)
+#define X86_DH CPU_RB(edx,1)
+
+#elif defined(_X86EMU)
+
+#include "xf86x86emu.h"
+
+#endif
+
+#endif
diff --git a/xorg-server/hw/xfree86/os-support/linux/int10/linux.c b/xorg-server/hw/xfree86/os-support/linux/int10/linux.c
index fa58a72b6..8bca37524 100644
--- a/xorg-server/hw/xfree86/os-support/linux/int10/linux.c
+++ b/xorg-server/hw/xfree86/os-support/linux/int10/linux.c
@@ -52,7 +52,6 @@ typedef struct {
int highMem;
char *base;
char *base_high;
- int screen;
char *alloc;
} linuxInt10Priv;
@@ -89,15 +88,16 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
memType cs;
legacyVGARec vga;
Bool videoBiosMapped = FALSE;
-
+ ScrnInfoPtr pScrn;
if (int10Generation != serverGeneration) {
counter = 0;
int10Generation = serverGeneration;
}
- screen = (xf86FindScreenForEntity(entityIndex))->scrnIndex;
+ pScrn = xf86FindScreenForEntity(entityIndex);
+ screen = pScrn->scrnIndex;
- options = xf86HandleInt10Options(xf86Screens[screen], entityIndex);
+ options = xf86HandleInt10Options(pScrn, entityIndex);
if (int10skip(options)) {
free(options);
@@ -106,7 +106,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
#if defined DoSubModules
if (loadedSubModule == INT10_NOT_LOADED)
- loadedSubModule = int10LinuxLoadSubModule(xf86Screens[screen]);
+ loadedSubModule = int10LinuxLoadSubModule(pScrn);
if (loadedSubModule == INT10_LOAD_FAILED)
return NULL;
@@ -145,7 +145,7 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
}
pInt = (xf86Int10InfoPtr) xnfcalloc(1, sizeof(xf86Int10InfoRec));
- pInt->scrnIndex = screen;
+ pInt->pScrn = pScrn;
pInt->entityIndex = entityIndex;
pInt->dev = xf86GetPciInfoForEntity(entityIndex);
@@ -154,7 +154,6 @@ xf86ExtendedInitInt10(int entityIndex, int Flags)
pInt->mem = &linuxMem;
pagesize = getpagesize();
pInt->private = (pointer) xnfcalloc(1, sizeof(linuxInt10Priv));
- ((linuxInt10Priv *) pInt->private)->screen = screen;
((linuxInt10Priv *) pInt->private)->alloc =
(pointer) xnfcalloc(1, ALLOC_ENTRIES(pagesize));
@@ -333,28 +332,28 @@ MapCurrentInt10(xf86Int10InfoPtr pInt)
addr =
shmat(((linuxInt10Priv *) pInt->private)->lowMem, (char *) 1, SHM_RND);
if (addr == SHMERRORPTR) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "Cannot shmat() low memory\n");
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR, "Cannot shmat() low memory\n");
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR,
"shmat(low_mem) error: %s\n", strerror(errno));
return FALSE;
}
if (mprotect((void *) 0, V_RAM, PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR,
"Cannot set EXEC bit on low memory: %s\n", strerror(errno));
if (((linuxInt10Priv *) pInt->private)->highMem >= 0) {
addr = shmat(((linuxInt10Priv *) pInt->private)->highMem,
(char *) HIGH_MEM, 0);
if (addr == SHMERRORPTR) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR,
"Cannot shmat() high memory\n");
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR,
"shmget error: %s\n", strerror(errno));
return FALSE;
}
if (mprotect((void *) HIGH_MEM, HIGH_MEM_SIZE,
PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR,
"Cannot set EXEC bit on high memory: %s\n",
strerror(errno));
}
@@ -364,13 +363,13 @@ MapCurrentInt10(xf86Int10InfoPtr pInt)
PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_SHARED | MAP_FIXED, fd, V_BIOS)
== MAP_FAILED) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "Cannot map V_BIOS\n");
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR, "Cannot map V_BIOS\n");
close(fd);
return FALSE;
}
}
else {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "Cannot open %s\n", DEV_MEM);
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR, "Cannot open %s\n", DEV_MEM);
return FALSE;
}
close(fd);
diff --git a/xorg-server/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c b/xorg-server/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c
index 8502b21b7..187698399 100644
--- a/xorg-server/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c
+++ b/xorg-server/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c
@@ -210,19 +210,19 @@ vm86_GP_fault(xf86Int10InfoPtr pInt)
return FALSE;
case 0x0f:
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR,
"CPU 0x0f Trap at CS:EIP=0x%4.4x:0x%8.8lx\n", X86_CS,
X86_EIP);
goto op0ferr;
default:
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "unknown reason for exception\n");
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR, "unknown reason for exception\n");
op0ferr:
dump_registers(pInt);
stack_trace(pInt);
dump_code(pInt);
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "cannot continue\n");
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR, "cannot continue\n");
return FALSE;
} /* end of switch() */
return TRUE;
@@ -238,7 +238,7 @@ do_vm86(xf86Int10InfoPtr pInt)
xf86InterceptSignals(NULL);
if (signo >= 0) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR,
"vm86() syscall generated signal %d.\n", signo);
dump_registers(pInt);
dump_code(pInt);
@@ -252,7 +252,7 @@ do_vm86(xf86Int10InfoPtr pInt)
return 0;
break;
case VM86_STI:
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "vm86_sti :-((\n");
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR, "vm86_sti :-((\n");
dump_registers(pInt);
dump_code(pInt);
stack_trace(pInt);
@@ -260,7 +260,7 @@ do_vm86(xf86Int10InfoPtr pInt)
case VM86_INTx:
pInt->num = VM86_ARG(retval);
if (!int_handler(pInt)) {
- xf86DrvMsg(pInt->scrnIndex, X_ERROR,
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR,
"Unknown vm86_int: 0x%X\n\n", VM86_ARG(retval));
dump_registers(pInt);
dump_code(pInt);
@@ -275,10 +275,10 @@ do_vm86(xf86Int10InfoPtr pInt)
* we used to warn here and bail out - but now the sigio stuff
* always fires signals at us. So we just ignore them for now.
*/
- xf86DrvMsg(pInt->scrnIndex, X_WARNING, "received signal\n");
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_WARNING, "received signal\n");
return 0;
default:
- xf86DrvMsg(pInt->scrnIndex, X_ERROR, "unknown type(0x%x)=0x%x\n",
+ xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR, "unknown type(0x%x)=0x%x\n",
VM86_ARG(retval), VM86_TYPE(retval));
dump_registers(pInt);
dump_code(pInt);
diff --git a/xorg-server/hw/xfree86/os-support/misc/Makefile.am b/xorg-server/hw/xfree86/os-support/misc/Makefile.am
index 4bd3fc3e1..db5e7cff0 100644
--- a/xorg-server/hw/xfree86/os-support/misc/Makefile.am
+++ b/xorg-server/hw/xfree86/os-support/misc/Makefile.am
@@ -1,12 +1,12 @@
-
-noinst_LTLIBRARIES = libmisc.la
-
-libmisc_la_SOURCES = SlowBcopy.c
-
-#AM_LDFLAGS = -r
-
-INCLUDES = $(XORG_INCS)
-
-AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
-
-EXTRA_DIST = $(I386_SRCS) $(PORTIO_SRCS)
+
+noinst_LTLIBRARIES = libmisc.la
+
+libmisc_la_SOURCES = SlowBcopy.c
+
+#AM_LDFLAGS = -r
+
+INCLUDES = $(XORG_INCS)
+
+AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
+
+EXTRA_DIST = $(I386_SRCS) $(PORTIO_SRCS)
diff --git a/xorg-server/hw/xfree86/os-support/solaris/Makefile.am b/xorg-server/hw/xfree86/os-support/solaris/Makefile.am
index 5163f4423..9f358a6ea 100644
--- a/xorg-server/hw/xfree86/os-support/solaris/Makefile.am
+++ b/xorg-server/hw/xfree86/os-support/solaris/Makefile.am
@@ -1,37 +1,37 @@
-if SOLARIS_VT
-VTSW_SRC = sun_VTsw.c
-else
-VTSW_SRC = $(srcdir)/../shared/VTsw_noop.c
-endif
-
-if AGP
-AGP_SRC = sun_agp.c
-else
-AGP_SRC = $(srcdir)/../shared/agp_noop.c
-endif
-
-SOLARIS_INOUT_SRC = solaris-@SOLARIS_INOUT_ARCH@.S
-DISTCLEANFILES = solaris-@SOLARIS_INOUT_ARCH@.il
-
-solaris-@SOLARIS_INOUT_ARCH@.il: solaris-@SOLARIS_INOUT_ARCH@.S
- $(CPP) -P -DINLINE_ASM $(srcdir)/solaris-@SOLARIS_INOUT_ARCH@.S > $@
-
-noinst_LTLIBRARIES = libsolaris.la
-libsolaris_la_SOURCES = sun_init.c \
- sun_vid.c sun_bell.c $(AGP_SRC) sun_apm.c \
- $(srcdir)/../shared/kmod_noop.c \
- $(srcdir)/../shared/posix_tty.c \
- $(srcdir)/../shared/sigio.c \
- $(srcdir)/../shared/vidmem.c \
- $(VTSW_SRC)
-nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC)
-
-sdk_HEADERS =
-nodist_sdk_HEADERS = solaris-@SOLARIS_INOUT_ARCH@.il
-
-AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)
-
-INCLUDES = $(XORG_INCS)
-
-EXTRA_DIST = solaris-amd64.S solaris-ia32.S solaris-sparcv8plus.S \
- apSolaris.shar sun_inout.s
+if SOLARIS_VT
+VTSW_SRC = sun_VTsw.c
+else
+VTSW_SRC = $(srcdir)/../shared/VTsw_noop.c
+endif
+
+if AGP
+AGP_SRC = sun_agp.c
+else
+AGP_SRC = $(srcdir)/../shared/agp_noop.c
+endif
+
+SOLARIS_INOUT_SRC = solaris-@SOLARIS_INOUT_ARCH@.S
+DISTCLEANFILES = solaris-@SOLARIS_INOUT_ARCH@.il
+
+solaris-@SOLARIS_INOUT_ARCH@.il: solaris-@SOLARIS_INOUT_ARCH@.S
+ $(CPP) -P -DINLINE_ASM $(srcdir)/solaris-@SOLARIS_INOUT_ARCH@.S > $@
+
+noinst_LTLIBRARIES = libsolaris.la
+libsolaris_la_SOURCES = sun_init.c \
+ sun_vid.c sun_bell.c $(AGP_SRC) sun_apm.c \
+ $(srcdir)/../shared/kmod_noop.c \
+ $(srcdir)/../shared/posix_tty.c \
+ $(srcdir)/../shared/sigio.c \
+ $(srcdir)/../shared/vidmem.c \
+ $(VTSW_SRC)
+nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC)
+
+sdk_HEADERS =
+nodist_sdk_HEADERS = solaris-@SOLARIS_INOUT_ARCH@.il
+
+AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)
+
+INCLUDES = $(XORG_INCS)
+
+EXTRA_DIST = solaris-amd64.S solaris-ia32.S solaris-sparcv8plus.S \
+ apSolaris.shar sun_inout.s
diff --git a/xorg-server/hw/xfree86/os-support/solaris/apSolaris.shar b/xorg-server/hw/xfree86/os-support/solaris/apSolaris.shar
index a3548f7b4..68f44029e 100644
--- a/xorg-server/hw/xfree86/os-support/solaris/apSolaris.shar
+++ b/xorg-server/hw/xfree86/os-support/solaris/apSolaris.shar
@@ -1,806 +1,806 @@
-#!/bin/sh
-#
-# This is a shell archive. Save it in a file, remove anything before
-# this line, and then unpack it by entering "sh file". Note, it may
-# create directories; files and directories will be owned by you and
-# have default permissions.
-# Made on Sun Jun 25 20:24:59 CEST 2006 by Martin Bochnig at martux.org
-#
-# This archive contains:
-#
-# ./aperture
-#
-# ./aperture/Makefile
-# ./aperture/Makefile.amd64
-# ./aperture/Makefile.sparcv9
-# ./aperture/README
-# ./aperture/aperture.c
-# ./aperture/aperture.conf
-# ./aperture/devlink.tab
-#
-echo c - ./aperture
-mkdir -p ./aperture > /dev/null 2>&1
-#
-echo x - ./aperture/Makefile
-sed 's/^X//' >./aperture/Makefile << 'END-of-./aperture/Makefile'
-X#
-X# File: makefile for aperture Framebuffer Driver
-X# Author: Doug Anson (danson@lgc.com)
-X# Date: 2/15/94
-X# Modified: David Holland (davidh@use.com)
-X# Date: 2/23/94
-X# - Changed name, and debugging structure
-X# Modified: Marc Aurele La France (tsi@xfree86.org)
-X# Date: 2001.06.08
-X# - SPARC support, cleanup and turf aptest.
-X#
-X# >>NOTE<< Have a look at Makefile.sparcv9 for specifics.
-X#
-X# Modified: Martin Bochnig (martin@martux.org)
-X# Date: 2006.06.24
-X# - Slightly modified to also build on Solaris 10 and 11.
-X# - amd64 64 bit kernel support
-X# - cosmetical changes to also support sun4v, not only sun4u
-X#
-X# >>NOTE<< Have a look at Makefile.amd64 for amd64 specifics.
-X#
-X# GNU gcc compiler
-XCC=gcc
-XCFLGS=-fno-builtin -Wall -O3
-X
-X#
-X# SUNWspro compiler
-X#CC=/opt/SUNWspro/bin/cc
-X#CFLGS=-Xa -xnolib -xO3
-X
-X#
-X# Debug error reporting
-X#DEBUG_FLG=
-X#DEBUG_FLG=-DAPERTURE_DEBUG
-X
-X#
-X# Files and object declarations
-XKERNEL_FLGS=-D_KERNEL -DSUNDDI
-XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
-XCFILES= aperture.c
-XOBJS= aperture.o
-XDRIVER= aperture
-X
-X#
-X# Make rules
-Xall: $(DRIVER)
-X
-X$(DRIVER): $(OBJS)
-X @if [ -f "Makefile.`isainfo -k`" ]; then \
-X make -f Makefile.`isainfo -k` $(DRIVER); \
-X else \
-X rm -f $(DRIVER); \
-X ld -r -o $(DRIVER) $(OBJS); \
-X fi
-X
-Xinstall: $(DRIVER)
-X @if [ -f "Makefile.`isainfo -k`" ]; then \
-X make -f Makefile.`isainfo -k` install; \
-X else \
-X cp aperture.conf /kernel/drv; \
-X cp $(DRIVER) /kernel/drv; \
-X fi
-X
-Xadd_drv:
-X @if [ -f "Makefile.`isainfo -k`" ]; then \
-X make -f Makefile.`isainfo -k` add_drv; \
-X else \
-X add_drv aperture; \
-X fi
-X
-Xclean:
-X rm -f *% *.BAK $(OBJS) $(DRIVER) core
-X
-X.SUFFIXES: .i
-X
-X.c.i:
-X $(CC) -E $(CFLAGS) $*.c > $@
-X
-X.c.o:
-X @if [ -f "Makefile.`isainfo -k`" ]; then \
-X make -f Makefile.`isainfo -k` $@; \
-X else \
-X rm -f $@; \
-X $(CC) -c $(CFLAGS) $*.c -o $@; \
-X fi
-END-of-./aperture/Makefile
-echo x - ./aperture/Makefile.amd64
-sed 's/^X//' >./aperture/Makefile.amd64 << 'END-of-./aperture/Makefile.amd64'
-X#
-X# File: Makefile for aperture Framebuffer Driver
-X# Author: Doug Anson (danson@lgc.com)
-X# Date: 2/15/94
-X# Modified: David Holland (davidh@use.com)
-X# Date: 2/23/94
-X# - Changed name, and debugging structure
-X# Modified: Marc Aurele La France (tsi@xfree86.org)
-X# Date: 2001.06.08
-X# - SPARC support, cleanup and turf aptest.
-X# Modified: Martin Bochnig (martin@martux.org)
-X# - amd64 64 bit kernel support, cosmetics and also
-X# supporting sun4v (and arbitrary sparcv9) platforms
-X# as well as SunOS 5.10 or higher now
-X# - Changed name
-X#
-X
-X#
-X# GNU gcc compiler, version 3.2 or later
-X#
-XCC=gcc
-XCFLGS=-fno-builtin -Wall -O3 -m64 -mcmodel=kernel
-X
-X#
-X# SUNWspro compiler (untested, might not properly work for amd64 here)
-X#CC=/opt/SUNWspro/bin/cc
-X#CFLGS=-Xa -xarch=v9 -xnolib -xO3
-X
-X#
-X# Debug error reporting
-X#DEBUG_FLG=
-X#DEBUG_FLG=-DAPERTURE_DEBUG
-X
-X#
-X# Files and object declarations
-XKERNEL_FLGS=-D_KERNEL -DSUNDDI
-XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
-XCFILES= aperture.c
-XOBJS= aperture.o
-XDRIVER= aperture
-X
-X#
-X# Make rules
-Xall: $(DRIVER)
-X
-X$(DRIVER): $(OBJS)
-X rm -f $(DRIVER)
-X ld -r -o $(DRIVER) $(OBJS)
-X
-Xinstall: $(DRIVER)
-X cp aperture.conf /kernel/drv
-X cp $(DRIVER) /kernel/drv/amd64
-X
-Xadd_drv:
-X add_drv aperture
-X
-Xclean:
-X rm -f *% *.BAK $(OBJS) $(DRIVER) core
-X
-X.SUFFIXES: .i
-X
-X.c.i:
-X $(CC) -E $(CFLAGS) $*.c > $@
-END-of-./aperture/Makefile.amd64
-echo x - ./aperture/Makefile.sparcv9
-sed 's/^X//' >./aperture/Makefile.sparcv9 << 'END-of-./aperture/Makefile.sparcv9'
-X#
-X# File: makefile for aperture Framebuffer Driver
-X# Author: Doug Anson (danson@lgc.com)
-X# Date: 2/15/94
-X# Modified: David Holland (davidh@use.com)
-X# Date: 2/23/94
-X# - Changed name, and debugging structure
-X# Modified: Marc Aurele La France (tsi@xfree86.org)
-X# Date: 2001.06.08
-X# - SPARC support, cleanup and turf aptest.
-X# Modified: Martin Bochnig (martin@martux.org)
-X# Date: 2006.06.24
-X# - Changed name for generic sparcv9 support
-X# - updated to better work with Solaris 10 and 11
-X#
-X
-X#
-X# GNU gcc compiler, version 3.2 or later
-X#
-XCC=gcc
-XCFLGS=-fno-builtin -Wall -O3 -m64
-X
-X#
-X# SUNWspro compiler
-X#CC=/opt/SUNWspro/bin/cc
-X#CFLGS=-Xa -xarch=v9 -xnolib -xO3
-X
-X#
-X# Debug error reporting
-X#DEBUG_FLG=
-X#DEBUG_FLG=-DAPERTURE_DEBUG
-X
-X#
-X# Files and object declarations
-XKERNEL_FLGS=-D_KERNEL -DSUNDDI
-XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
-XCFILES= aperture.c
-XOBJS= aperture.o
-XDRIVER= aperture
-X
-X#
-X# Make rules
-Xall: $(DRIVER)
-X
-X$(DRIVER): $(OBJS)
-X rm -f $(DRIVER)
-X ld -r -o $(DRIVER) $(OBJS)
-X
-Xinstall: $(DRIVER)
-X cp aperture.conf /kernel/drv
-X cp $(DRIVER) /kernel/drv/sparcv9
-X
-Xadd_drv:
-X add_drv aperture
-X
-Xclean:
-X rm -f *% *.BAK $(OBJS) $(DRIVER) core
-X
-X.SUFFIXES: .i
-X
-X.c.i:
-X $(CC) -E $(CFLAGS) $*.c > $@
-END-of-./aperture/Makefile.sparcv9
-echo x - ./aperture/README
-sed 's/^X//' >./aperture/README << 'END-of-./aperture/README'
-XFramebuffer aperture driver.
-X
-XThis driver was written to provide a device that, unlike /dev/mem, allows
-Xmmap()'ing of ranges beyond installed memory.
-X
-XThe original x86-based version of this driver was the collaborative work of
-XDoug Anson (danson@lgc.com), and David Holland (davidh@use.com). It has since
-Xbeen rewritten to also work on sparc machines and - later on - also on sparcv9
-Xand recently amd64 64 bit kernels.
-XIt flawlessly compiles and installs on Solaris 10 and 11 now.
-X
-X
-XInstallation instructions:
-X
-X1) Check the Makefile, for appropriate CC, and CFLAGS definitions. Compiling
-X with APERTURE_DEBUG defined means the driver will generate reams of
-X debugging output. You'll probably want to leave this off...
-X
-X2) Type 'make' (or 'gmake'). Both the driver and test program should compile
-X without any problems. No warning messages should be generated.
-X
-X3) Become 'root'.
-X
-X4) Type 'make install' and 'make add_drv'. The screen should look something
-X like this:
-X
-X # make install
-X cp aperture aperture.conf /kernel/drv
-X # make add_drv
-X add_drv aperture
-X
-X On a sparcv9 machine this will mention the /kernel/drv/sparcv9 directory
-X instead of /kernel/drv. Similarily /kernel/drv/amd64 should be used on amd64.
-X
-X This installs the driver to the system.
-X
-X5) While as root modify the file /etc/devlink.tab, adding these lines:
-X
-X# The following entry is for the framebuffer driver
-Xtype=ddi_pseudo;name=aperture fbs/\M0
-X
-X Add that line exactly as shown. You may also simply add the
-X contents of the devlink.tab file supplied to /etc/devlink.tab.
-X It contains the lines as well. (Yes, that is a tab between
-X aperture and fbs, not spaces - very important)
-X
-X6) Perform a reconfiguration boot of the system.
-X
-X # touch /reconfigure
-X # init 6
-X
-XBug reports, questions, suggestions, etc can be sent to xfree86@xfree86.org.
-END-of-./aperture/README
-echo x - ./aperture/aperture.c
-sed 's/^X//' >./aperture/aperture.c << 'END-of-./aperture/aperture.c'
-X/*
-X * Copyright (C) 2001 The XFree86 Project, Inc. All Rights Reserved.
-X *
-X * Permission is hereby granted, free of charge, to any person obtaining a copy
-X * of this software and associated documentation files (the "Software"), to
-X * deal in the Software without restriction, including without limitation the
-X * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-X * sell copies of the Software, and to permit persons to whom the Software is
-X * furnished to do so, subject to the following conditions:
-X *
-X * The above copyright notice and this permission notice shall be included in
-X * all copies or substantial portions of the Software.
-X *
-X * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-X * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-X * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-X * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-X * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-X * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-X *
-X * Except as contained in this notice, the name of the XFree86 Project shall
-X * not be used in advertising or otherwise to promote the sale, use or other
-X * dealings in this Software without prior written authorization from the
-X * XFree86 Project.
-X */
-X
-X/*
-X * Aperture driver for Solaris.
-X */
-X
-X/*
-X * Modified: Martin Bochnig (martin@martux.org)
-X * Log: Commented out obsolete kernel interfaces DDI_IDENTIFIED and DDI_NOT_IDENTIFIED
-X * not supported by SunOS 5.10 or higher anymore,
-X * see http://docs.sun.com/app/docs/doc/819-2255/6n4ibnffr?a=view
-X */
-X
-X#include <sys/conf.h>
-X#include <sys/ddi.h>
-X#include <sys/modctl.h>
-X#include <sys/open.h>
-X#include <sys/stat.h>
-X#include <sys/sunddi.h>
-X
-X#define DEV_IDENT "aperture"
-X#define DEV_BANNER "XFree86 aperture driver"
-X
-X#ifndef D_64BIT
-X#define D_64BIT 0
-X#endif
-X
-X#ifndef NULL
-X#define NULL ((void *)0)
-X#endif
-X
-X/*
-X * open(9E)
-X */
-X/*ARGSUSED*/
-Xstatic int
-Xaperture_open
-X(
-X#ifdef __STDC__
-X dev_t *devp,
-X int flag,
-X int typ,
-X struct cred *cred
-X#endif
-X)
-X#ifndef __STDC__
-X dev_t *devp;
-X int flag;
-X int typ;
-X struct cred *cred;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering open()\n");
-X
-X#endif
-X
-X if ((typ != OTYP_CHR) || (getminor(*devp)))
-X error = EINVAL;
-X else
-X error = 0;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving open() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * mmap(9E)
-X */
-X/*ARGSUSED*/
-Xstatic int
-Xaperture_mmap
-X(
-X#ifdef __STDC__
-X dev_t dev,
-X off_t off,
-X int prot
-X#endif
-X)
-X#ifndef __STDC__
-X dev_t dev;
-X off_t off;
-X int prot;
-X#endif
-X{
-X pfn_t pf;
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering mmap(0x%016lx)\n", off);
-X
-X#endif
-X
-X pf = btop((unsigned long)off);
-X
-X /* Deal with mmap(9E) interface limits */
-X error = (int)pf;
-X if ((error < 0) || (pf != (pfn_t)error))
-X error = -1;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving mmap() = 0x%08lx", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-Xstatic struct cb_ops aperture_cb_ops =
-X{
-X aperture_open, /* open */
-X nulldev, /* close */
-X nodev, /* strategy */
-X nodev, /* print */
-X nodev, /* dump */
-X nodev, /* read */
-X nodev, /* write */
-X nodev, /* ioctl */
-X nodev, /* devmap */
-X aperture_mmap, /* mmap */
-X ddi_segmap, /* segmap */
-X nochpoll, /* poll */
-X ddi_prop_op, /* cb_prop_op */
-X 0, /* streamtab */
-X D_NEW | D_MP | D_64BIT /* Driver compatibility flag */
-X};
-X
-X
-Xstatic dev_info_t *aperture_dip; /* private copy of devinfo pointer */
-X
-X/*
-X * getinfo(9E)
-X */
-X/*ARGSUSED*/
-Xstatic int
-Xaperture_getinfo
-X(
-X#ifdef __STDC__
-X dev_info_t *dip,
-X ddi_info_cmd_t infocmd,
-X void *arg,
-X void **result
-X#endif
-X)
-X#ifndef __STDC__
-X dev_info_t *dip;
-X ddi_info_cmd_t infocmd;
-X void *arg;
-X void **result;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering getinfo()\n");
-X
-X#endif
-X
-X switch (infocmd) {
-X case DDI_INFO_DEVT2DEVINFO:
-X *result = aperture_dip;
-X error = DDI_SUCCESS;
-X break;
-X case DDI_INFO_DEVT2INSTANCE:
-X *result = NULL;
-X error = DDI_SUCCESS;
-X break;
-X default:
-X error = DDI_FAILURE;
-X }
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving getinfo() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * identify(9E)
-X */
-X/*ARGSUSED*/
-Xstatic int
-Xaperture_identify
-X(
-X#ifdef __STDC__
-X dev_info_t *dip
-X#endif
-X)
-X#ifndef __STDC__
-X dev_info_t *dip;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering identify()\n");
-X
-X#endif
-X
-X if (strcmp(ddi_get_name(dip), DEV_IDENT))
-X error = 1 /* DDI_NOT_IDENTIFIED obsolete since SunOS 5.10 */ ;
-X else
-X error = 2 /* DDI_IDENTIFIED obsolete since SunOS 5.10 */ ;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving identify() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * attach(9E)
-X */
-X/*ARGSUSED*/
-Xstatic int
-Xaperture_attach
-X(
-X#ifdef __STDC__
-X dev_info_t *dip,
-X ddi_attach_cmd_t cmd
-X#endif
-X)
-X#ifndef __STDC__
-X dev_info_t *dip;
-X ddi_attach_cmd_t cmd;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering attach()\n");
-X
-X#endif
-X
-X if (cmd != DDI_ATTACH)
-X {
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": not attach(, DDI_ATTACH)\n");
-X
-X#endif
-X
-X error = DDI_FAILURE;
-X }
-X else
-X {
-X error = ddi_create_minor_node(dip, ddi_get_name(dip), S_IFCHR,
-X (minor_t)ddi_get_instance(dip),
-X NULL, 0 /* NODESPECIFIC_DEV obsolete since SunOS 5.10 */ );
-X
-X if (error == DDI_SUCCESS)
-X {
-X aperture_dip = dip;
-X ddi_report_dev(dip);
-X }
-X }
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving attach() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * detach(9E)
-X */
-Xstatic int
-Xaperture_detach
-X(
-X#ifdef __STDC__
-X dev_info_t *dip,
-X ddi_detach_cmd_t cmd
-X#endif
-X)
-X#ifndef __STDC__
-X dev_info_t *dip;
-X ddi_detach_cmd_t cmd;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering detach()\n");
-X
-X#endif
-X
-X if (cmd != DDI_DETACH)
-X {
-X error = DDI_FAILURE;
-X }
-X else
-X {
-X ddi_remove_minor_node(dip, NULL);
-X aperture_dip = NULL;
-X error = DDI_SUCCESS;
-X }
-X
-X#if APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving detach() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X
-Xstatic struct dev_ops aperture_ops =
-X{
-X DEVO_REV, /* revision */
-X 0, /* refcnt */
-X aperture_getinfo, /* getinfo */
-X aperture_identify, /* identify */
-X nulldev, /* probe */
-X aperture_attach, /* attach */
-X aperture_detach, /* detach */
-X nodev, /* reset */
-X &aperture_cb_ops, /* driver operations */
-X NULL /* bus operations */
-X};
-X
-X
-Xstatic struct modldrv modldrv =
-X{
-X &mod_driverops, /* mod_ops structure pointer */
-X DEV_BANNER, /* driver banner string */
-X &aperture_ops, /* dev_ops structure pointer */
-X};
-X
-X
-Xstatic struct modlinkage modlinkage =
-X{
-X MODREV_1, /* module API revision */
-X {
-X &modldrv, /* module driver structure pointer */
-X NULL /* list termination */
-X }
-X};
-X
-X
-X/*
-X * _init(9E)
-X */
-Xint
-X_init
-X(
-X#ifdef __STDC__
-X void
-X#endif
-X)
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering _init()\n");
-X
-X#endif
-X
-X error = mod_install(&modlinkage);
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving _init() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * _info(9E)
-X */
-Xint
-X_info
-X(
-X#ifdef __STDC__
-X struct modinfo *modinfop
-X#endif
-X)
-X#ifndef __STDC__
-X struct modinfo *modinfop;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering _info()\n");
-X
-X#endif
-X
-X error = mod_info(&modlinkage, modinfop);
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving _info() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * _fini(9E)
-X */
-Xint
-X_fini
-X(
-X#ifdef __STDC__
-X void
-X#endif
-X)
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering _fini()\n");
-X
-X#endif
-X
-X error = mod_remove(&modlinkage);
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving _fini() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-END-of-./aperture/aperture.c
-echo x - ./aperture/aperture.conf
-sed 's/^X//' >./aperture/aperture.conf << 'END-of-./aperture/aperture.conf'
-X#
-X# Copyright 1994 Doug Anson, danson@lgc.com & David Holland, davidh@use.com
-X#
-X# File: aperture.conf
-X# Author: Doug Anson (danson@lgc.com)
-X#
-X# Modified: David Holland (davidh@use.com)
-X# Log: Change comments 02/23/94
-X# Change defaults/comments 09/25/94
-X#
-X# Modified: Marc Aurele La France (tsi@xfree86.org)
-X# Log: SPARC changes 2001.09
-X#
-X# Purpose: This conf file is used by the aperture driver.
-X#
-Xname="aperture" parent="pseudo";
-END-of-./aperture/aperture.conf
-echo x - ./aperture/devlink.tab
-sed 's/^X//' >./aperture/devlink.tab << 'END-of-./aperture/devlink.tab'
-X# The following entry is for the aperture driver
-Xtype=ddi_pseudo;name=aperture fbs/\M0
-END-of-./aperture/devlink.tab
-exit
-
+#!/bin/sh
+#
+# This is a shell archive. Save it in a file, remove anything before
+# this line, and then unpack it by entering "sh file". Note, it may
+# create directories; files and directories will be owned by you and
+# have default permissions.
+# Made on Sun Jun 25 20:24:59 CEST 2006 by Martin Bochnig at martux.org
+#
+# This archive contains:
+#
+# ./aperture
+#
+# ./aperture/Makefile
+# ./aperture/Makefile.amd64
+# ./aperture/Makefile.sparcv9
+# ./aperture/README
+# ./aperture/aperture.c
+# ./aperture/aperture.conf
+# ./aperture/devlink.tab
+#
+echo c - ./aperture
+mkdir -p ./aperture > /dev/null 2>&1
+#
+echo x - ./aperture/Makefile
+sed 's/^X//' >./aperture/Makefile << 'END-of-./aperture/Makefile'
+X#
+X# File: makefile for aperture Framebuffer Driver
+X# Author: Doug Anson (danson@lgc.com)
+X# Date: 2/15/94
+X# Modified: David Holland (davidh@use.com)
+X# Date: 2/23/94
+X# - Changed name, and debugging structure
+X# Modified: Marc Aurele La France (tsi@xfree86.org)
+X# Date: 2001.06.08
+X# - SPARC support, cleanup and turf aptest.
+X#
+X# >>NOTE<< Have a look at Makefile.sparcv9 for specifics.
+X#
+X# Modified: Martin Bochnig (martin@martux.org)
+X# Date: 2006.06.24
+X# - Slightly modified to also build on Solaris 10 and 11.
+X# - amd64 64 bit kernel support
+X# - cosmetical changes to also support sun4v, not only sun4u
+X#
+X# >>NOTE<< Have a look at Makefile.amd64 for amd64 specifics.
+X#
+X# GNU gcc compiler
+XCC=gcc
+XCFLGS=-fno-builtin -Wall -O3
+X
+X#
+X# SUNWspro compiler
+X#CC=/opt/SUNWspro/bin/cc
+X#CFLGS=-Xa -xnolib -xO3
+X
+X#
+X# Debug error reporting
+X#DEBUG_FLG=
+X#DEBUG_FLG=-DAPERTURE_DEBUG
+X
+X#
+X# Files and object declarations
+XKERNEL_FLGS=-D_KERNEL -DSUNDDI
+XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
+XCFILES= aperture.c
+XOBJS= aperture.o
+XDRIVER= aperture
+X
+X#
+X# Make rules
+Xall: $(DRIVER)
+X
+X$(DRIVER): $(OBJS)
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` $(DRIVER); \
+X else \
+X rm -f $(DRIVER); \
+X ld -r -o $(DRIVER) $(OBJS); \
+X fi
+X
+Xinstall: $(DRIVER)
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` install; \
+X else \
+X cp aperture.conf /kernel/drv; \
+X cp $(DRIVER) /kernel/drv; \
+X fi
+X
+Xadd_drv:
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` add_drv; \
+X else \
+X add_drv aperture; \
+X fi
+X
+Xclean:
+X rm -f *% *.BAK $(OBJS) $(DRIVER) core
+X
+X.SUFFIXES: .i
+X
+X.c.i:
+X $(CC) -E $(CFLAGS) $*.c > $@
+X
+X.c.o:
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` $@; \
+X else \
+X rm -f $@; \
+X $(CC) -c $(CFLAGS) $*.c -o $@; \
+X fi
+END-of-./aperture/Makefile
+echo x - ./aperture/Makefile.amd64
+sed 's/^X//' >./aperture/Makefile.amd64 << 'END-of-./aperture/Makefile.amd64'
+X#
+X# File: Makefile for aperture Framebuffer Driver
+X# Author: Doug Anson (danson@lgc.com)
+X# Date: 2/15/94
+X# Modified: David Holland (davidh@use.com)
+X# Date: 2/23/94
+X# - Changed name, and debugging structure
+X# Modified: Marc Aurele La France (tsi@xfree86.org)
+X# Date: 2001.06.08
+X# - SPARC support, cleanup and turf aptest.
+X# Modified: Martin Bochnig (martin@martux.org)
+X# - amd64 64 bit kernel support, cosmetics and also
+X# supporting sun4v (and arbitrary sparcv9) platforms
+X# as well as SunOS 5.10 or higher now
+X# - Changed name
+X#
+X
+X#
+X# GNU gcc compiler, version 3.2 or later
+X#
+XCC=gcc
+XCFLGS=-fno-builtin -Wall -O3 -m64 -mcmodel=kernel
+X
+X#
+X# SUNWspro compiler (untested, might not properly work for amd64 here)
+X#CC=/opt/SUNWspro/bin/cc
+X#CFLGS=-Xa -xarch=v9 -xnolib -xO3
+X
+X#
+X# Debug error reporting
+X#DEBUG_FLG=
+X#DEBUG_FLG=-DAPERTURE_DEBUG
+X
+X#
+X# Files and object declarations
+XKERNEL_FLGS=-D_KERNEL -DSUNDDI
+XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
+XCFILES= aperture.c
+XOBJS= aperture.o
+XDRIVER= aperture
+X
+X#
+X# Make rules
+Xall: $(DRIVER)
+X
+X$(DRIVER): $(OBJS)
+X rm -f $(DRIVER)
+X ld -r -o $(DRIVER) $(OBJS)
+X
+Xinstall: $(DRIVER)
+X cp aperture.conf /kernel/drv
+X cp $(DRIVER) /kernel/drv/amd64
+X
+Xadd_drv:
+X add_drv aperture
+X
+Xclean:
+X rm -f *% *.BAK $(OBJS) $(DRIVER) core
+X
+X.SUFFIXES: .i
+X
+X.c.i:
+X $(CC) -E $(CFLAGS) $*.c > $@
+END-of-./aperture/Makefile.amd64
+echo x - ./aperture/Makefile.sparcv9
+sed 's/^X//' >./aperture/Makefile.sparcv9 << 'END-of-./aperture/Makefile.sparcv9'
+X#
+X# File: makefile for aperture Framebuffer Driver
+X# Author: Doug Anson (danson@lgc.com)
+X# Date: 2/15/94
+X# Modified: David Holland (davidh@use.com)
+X# Date: 2/23/94
+X# - Changed name, and debugging structure
+X# Modified: Marc Aurele La France (tsi@xfree86.org)
+X# Date: 2001.06.08
+X# - SPARC support, cleanup and turf aptest.
+X# Modified: Martin Bochnig (martin@martux.org)
+X# Date: 2006.06.24
+X# - Changed name for generic sparcv9 support
+X# - updated to better work with Solaris 10 and 11
+X#
+X
+X#
+X# GNU gcc compiler, version 3.2 or later
+X#
+XCC=gcc
+XCFLGS=-fno-builtin -Wall -O3 -m64
+X
+X#
+X# SUNWspro compiler
+X#CC=/opt/SUNWspro/bin/cc
+X#CFLGS=-Xa -xarch=v9 -xnolib -xO3
+X
+X#
+X# Debug error reporting
+X#DEBUG_FLG=
+X#DEBUG_FLG=-DAPERTURE_DEBUG
+X
+X#
+X# Files and object declarations
+XKERNEL_FLGS=-D_KERNEL -DSUNDDI
+XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
+XCFILES= aperture.c
+XOBJS= aperture.o
+XDRIVER= aperture
+X
+X#
+X# Make rules
+Xall: $(DRIVER)
+X
+X$(DRIVER): $(OBJS)
+X rm -f $(DRIVER)
+X ld -r -o $(DRIVER) $(OBJS)
+X
+Xinstall: $(DRIVER)
+X cp aperture.conf /kernel/drv
+X cp $(DRIVER) /kernel/drv/sparcv9
+X
+Xadd_drv:
+X add_drv aperture
+X
+Xclean:
+X rm -f *% *.BAK $(OBJS) $(DRIVER) core
+X
+X.SUFFIXES: .i
+X
+X.c.i:
+X $(CC) -E $(CFLAGS) $*.c > $@
+END-of-./aperture/Makefile.sparcv9
+echo x - ./aperture/README
+sed 's/^X//' >./aperture/README << 'END-of-./aperture/README'
+XFramebuffer aperture driver.
+X
+XThis driver was written to provide a device that, unlike /dev/mem, allows
+Xmmap()'ing of ranges beyond installed memory.
+X
+XThe original x86-based version of this driver was the collaborative work of
+XDoug Anson (danson@lgc.com), and David Holland (davidh@use.com). It has since
+Xbeen rewritten to also work on sparc machines and - later on - also on sparcv9
+Xand recently amd64 64 bit kernels.
+XIt flawlessly compiles and installs on Solaris 10 and 11 now.
+X
+X
+XInstallation instructions:
+X
+X1) Check the Makefile, for appropriate CC, and CFLAGS definitions. Compiling
+X with APERTURE_DEBUG defined means the driver will generate reams of
+X debugging output. You'll probably want to leave this off...
+X
+X2) Type 'make' (or 'gmake'). Both the driver and test program should compile
+X without any problems. No warning messages should be generated.
+X
+X3) Become 'root'.
+X
+X4) Type 'make install' and 'make add_drv'. The screen should look something
+X like this:
+X
+X # make install
+X cp aperture aperture.conf /kernel/drv
+X # make add_drv
+X add_drv aperture
+X
+X On a sparcv9 machine this will mention the /kernel/drv/sparcv9 directory
+X instead of /kernel/drv. Similarily /kernel/drv/amd64 should be used on amd64.
+X
+X This installs the driver to the system.
+X
+X5) While as root modify the file /etc/devlink.tab, adding these lines:
+X
+X# The following entry is for the framebuffer driver
+Xtype=ddi_pseudo;name=aperture fbs/\M0
+X
+X Add that line exactly as shown. You may also simply add the
+X contents of the devlink.tab file supplied to /etc/devlink.tab.
+X It contains the lines as well. (Yes, that is a tab between
+X aperture and fbs, not spaces - very important)
+X
+X6) Perform a reconfiguration boot of the system.
+X
+X # touch /reconfigure
+X # init 6
+X
+XBug reports, questions, suggestions, etc can be sent to xfree86@xfree86.org.
+END-of-./aperture/README
+echo x - ./aperture/aperture.c
+sed 's/^X//' >./aperture/aperture.c << 'END-of-./aperture/aperture.c'
+X/*
+X * Copyright (C) 2001 The XFree86 Project, Inc. All Rights Reserved.
+X *
+X * Permission is hereby granted, free of charge, to any person obtaining a copy
+X * of this software and associated documentation files (the "Software"), to
+X * deal in the Software without restriction, including without limitation the
+X * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+X * sell copies of the Software, and to permit persons to whom the Software is
+X * furnished to do so, subject to the following conditions:
+X *
+X * The above copyright notice and this permission notice shall be included in
+X * all copies or substantial portions of the Software.
+X *
+X * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+X * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+X * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+X * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+X * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+X *
+X * Except as contained in this notice, the name of the XFree86 Project shall
+X * not be used in advertising or otherwise to promote the sale, use or other
+X * dealings in this Software without prior written authorization from the
+X * XFree86 Project.
+X */
+X
+X/*
+X * Aperture driver for Solaris.
+X */
+X
+X/*
+X * Modified: Martin Bochnig (martin@martux.org)
+X * Log: Commented out obsolete kernel interfaces DDI_IDENTIFIED and DDI_NOT_IDENTIFIED
+X * not supported by SunOS 5.10 or higher anymore,
+X * see http://docs.sun.com/app/docs/doc/819-2255/6n4ibnffr?a=view
+X */
+X
+X#include <sys/conf.h>
+X#include <sys/ddi.h>
+X#include <sys/modctl.h>
+X#include <sys/open.h>
+X#include <sys/stat.h>
+X#include <sys/sunddi.h>
+X
+X#define DEV_IDENT "aperture"
+X#define DEV_BANNER "XFree86 aperture driver"
+X
+X#ifndef D_64BIT
+X#define D_64BIT 0
+X#endif
+X
+X#ifndef NULL
+X#define NULL ((void *)0)
+X#endif
+X
+X/*
+X * open(9E)
+X */
+X/*ARGSUSED*/
+Xstatic int
+Xaperture_open
+X(
+X#ifdef __STDC__
+X dev_t *devp,
+X int flag,
+X int typ,
+X struct cred *cred
+X#endif
+X)
+X#ifndef __STDC__
+X dev_t *devp;
+X int flag;
+X int typ;
+X struct cred *cred;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering open()\n");
+X
+X#endif
+X
+X if ((typ != OTYP_CHR) || (getminor(*devp)))
+X error = EINVAL;
+X else
+X error = 0;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving open() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * mmap(9E)
+X */
+X/*ARGSUSED*/
+Xstatic int
+Xaperture_mmap
+X(
+X#ifdef __STDC__
+X dev_t dev,
+X off_t off,
+X int prot
+X#endif
+X)
+X#ifndef __STDC__
+X dev_t dev;
+X off_t off;
+X int prot;
+X#endif
+X{
+X pfn_t pf;
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering mmap(0x%016lx)\n", off);
+X
+X#endif
+X
+X pf = btop((unsigned long)off);
+X
+X /* Deal with mmap(9E) interface limits */
+X error = (int)pf;
+X if ((error < 0) || (pf != (pfn_t)error))
+X error = -1;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving mmap() = 0x%08lx", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+Xstatic struct cb_ops aperture_cb_ops =
+X{
+X aperture_open, /* open */
+X nulldev, /* close */
+X nodev, /* strategy */
+X nodev, /* print */
+X nodev, /* dump */
+X nodev, /* read */
+X nodev, /* write */
+X nodev, /* ioctl */
+X nodev, /* devmap */
+X aperture_mmap, /* mmap */
+X ddi_segmap, /* segmap */
+X nochpoll, /* poll */
+X ddi_prop_op, /* cb_prop_op */
+X 0, /* streamtab */
+X D_NEW | D_MP | D_64BIT /* Driver compatibility flag */
+X};
+X
+X
+Xstatic dev_info_t *aperture_dip; /* private copy of devinfo pointer */
+X
+X/*
+X * getinfo(9E)
+X */
+X/*ARGSUSED*/
+Xstatic int
+Xaperture_getinfo
+X(
+X#ifdef __STDC__
+X dev_info_t *dip,
+X ddi_info_cmd_t infocmd,
+X void *arg,
+X void **result
+X#endif
+X)
+X#ifndef __STDC__
+X dev_info_t *dip;
+X ddi_info_cmd_t infocmd;
+X void *arg;
+X void **result;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering getinfo()\n");
+X
+X#endif
+X
+X switch (infocmd) {
+X case DDI_INFO_DEVT2DEVINFO:
+X *result = aperture_dip;
+X error = DDI_SUCCESS;
+X break;
+X case DDI_INFO_DEVT2INSTANCE:
+X *result = NULL;
+X error = DDI_SUCCESS;
+X break;
+X default:
+X error = DDI_FAILURE;
+X }
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving getinfo() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * identify(9E)
+X */
+X/*ARGSUSED*/
+Xstatic int
+Xaperture_identify
+X(
+X#ifdef __STDC__
+X dev_info_t *dip
+X#endif
+X)
+X#ifndef __STDC__
+X dev_info_t *dip;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering identify()\n");
+X
+X#endif
+X
+X if (strcmp(ddi_get_name(dip), DEV_IDENT))
+X error = 1 /* DDI_NOT_IDENTIFIED obsolete since SunOS 5.10 */ ;
+X else
+X error = 2 /* DDI_IDENTIFIED obsolete since SunOS 5.10 */ ;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving identify() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * attach(9E)
+X */
+X/*ARGSUSED*/
+Xstatic int
+Xaperture_attach
+X(
+X#ifdef __STDC__
+X dev_info_t *dip,
+X ddi_attach_cmd_t cmd
+X#endif
+X)
+X#ifndef __STDC__
+X dev_info_t *dip;
+X ddi_attach_cmd_t cmd;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering attach()\n");
+X
+X#endif
+X
+X if (cmd != DDI_ATTACH)
+X {
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": not attach(, DDI_ATTACH)\n");
+X
+X#endif
+X
+X error = DDI_FAILURE;
+X }
+X else
+X {
+X error = ddi_create_minor_node(dip, ddi_get_name(dip), S_IFCHR,
+X (minor_t)ddi_get_instance(dip),
+X NULL, 0 /* NODESPECIFIC_DEV obsolete since SunOS 5.10 */ );
+X
+X if (error == DDI_SUCCESS)
+X {
+X aperture_dip = dip;
+X ddi_report_dev(dip);
+X }
+X }
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving attach() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * detach(9E)
+X */
+Xstatic int
+Xaperture_detach
+X(
+X#ifdef __STDC__
+X dev_info_t *dip,
+X ddi_detach_cmd_t cmd
+X#endif
+X)
+X#ifndef __STDC__
+X dev_info_t *dip;
+X ddi_detach_cmd_t cmd;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering detach()\n");
+X
+X#endif
+X
+X if (cmd != DDI_DETACH)
+X {
+X error = DDI_FAILURE;
+X }
+X else
+X {
+X ddi_remove_minor_node(dip, NULL);
+X aperture_dip = NULL;
+X error = DDI_SUCCESS;
+X }
+X
+X#if APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving detach() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X
+Xstatic struct dev_ops aperture_ops =
+X{
+X DEVO_REV, /* revision */
+X 0, /* refcnt */
+X aperture_getinfo, /* getinfo */
+X aperture_identify, /* identify */
+X nulldev, /* probe */
+X aperture_attach, /* attach */
+X aperture_detach, /* detach */
+X nodev, /* reset */
+X &aperture_cb_ops, /* driver operations */
+X NULL /* bus operations */
+X};
+X
+X
+Xstatic struct modldrv modldrv =
+X{
+X &mod_driverops, /* mod_ops structure pointer */
+X DEV_BANNER, /* driver banner string */
+X &aperture_ops, /* dev_ops structure pointer */
+X};
+X
+X
+Xstatic struct modlinkage modlinkage =
+X{
+X MODREV_1, /* module API revision */
+X {
+X &modldrv, /* module driver structure pointer */
+X NULL /* list termination */
+X }
+X};
+X
+X
+X/*
+X * _init(9E)
+X */
+Xint
+X_init
+X(
+X#ifdef __STDC__
+X void
+X#endif
+X)
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering _init()\n");
+X
+X#endif
+X
+X error = mod_install(&modlinkage);
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving _init() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * _info(9E)
+X */
+Xint
+X_info
+X(
+X#ifdef __STDC__
+X struct modinfo *modinfop
+X#endif
+X)
+X#ifndef __STDC__
+X struct modinfo *modinfop;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering _info()\n");
+X
+X#endif
+X
+X error = mod_info(&modlinkage, modinfop);
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving _info() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * _fini(9E)
+X */
+Xint
+X_fini
+X(
+X#ifdef __STDC__
+X void
+X#endif
+X)
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering _fini()\n");
+X
+X#endif
+X
+X error = mod_remove(&modlinkage);
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving _fini() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+END-of-./aperture/aperture.c
+echo x - ./aperture/aperture.conf
+sed 's/^X//' >./aperture/aperture.conf << 'END-of-./aperture/aperture.conf'
+X#
+X# Copyright 1994 Doug Anson, danson@lgc.com & David Holland, davidh@use.com
+X#
+X# File: aperture.conf
+X# Author: Doug Anson (danson@lgc.com)
+X#
+X# Modified: David Holland (davidh@use.com)
+X# Log: Change comments 02/23/94
+X# Change defaults/comments 09/25/94
+X#
+X# Modified: Marc Aurele La France (tsi@xfree86.org)
+X# Log: SPARC changes 2001.09
+X#
+X# Purpose: This conf file is used by the aperture driver.
+X#
+Xname="aperture" parent="pseudo";
+END-of-./aperture/aperture.conf
+echo x - ./aperture/devlink.tab
+sed 's/^X//' >./aperture/devlink.tab << 'END-of-./aperture/devlink.tab'
+X# The following entry is for the aperture driver
+Xtype=ddi_pseudo;name=aperture fbs/\M0
+END-of-./aperture/devlink.tab
+exit
+
diff --git a/xorg-server/hw/xfree86/os-support/solaris/solaris-amd64.S b/xorg-server/hw/xfree86/os-support/solaris/solaris-amd64.S
index a371f9b66..4cc0642dd 100644
--- a/xorg-server/hw/xfree86/os-support/solaris/solaris-amd64.S
+++ b/xorg-server/hw/xfree86/os-support/solaris/solaris-amd64.S
@@ -1,67 +1,67 @@
-/ Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
-/
-/ 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 (including the next
-/ paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-
-#ifdef INLINE_ASM
-#define FUNCTION_START(f,n) .inline f,n
-#define FUNCTION_END(f) .end
-#else
-#define _ASM
-#include <sys/asm_linkage.h>
-#define FUNCTION_START(f,n) ENTRY(f)
-#define FUNCTION_END(f) ret; SET_SIZE(f)
-#endif
-
- FUNCTION_START(inb,4)
- movq %rdi, %rdx
- xorq %rax, %rax
- inb (%dx)
- FUNCTION_END(inb)
-
- FUNCTION_START(inw,4)
- movq %rdi, %rdx
- xorq %rax, %rax
- inw (%dx)
- FUNCTION_END(inw)
-
- FUNCTION_START(inl,4)
- movq %rdi, %rdx
- xorq %rax, %rax
- inl (%dx)
- FUNCTION_END(inl)
-
- FUNCTION_START(outb,8)
- movq %rdi, %rdx
- movq %rsi, %rax
- outb (%dx)
- FUNCTION_END(outb)
-
- FUNCTION_START(outw,8)
- movq %rdi, %rdx
- movq %rsi, %rax
- outw (%dx)
- FUNCTION_END(outw)
-
- FUNCTION_START(outl,8)
- movq %rdi, %rdx
- movq %rsi, %rax
- outl (%dx)
- FUNCTION_END(outl)
-
+/ Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+/
+/ 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 (including the next
+/ paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+
+#ifdef INLINE_ASM
+#define FUNCTION_START(f,n) .inline f,n
+#define FUNCTION_END(f) .end
+#else
+#define _ASM
+#include <sys/asm_linkage.h>
+#define FUNCTION_START(f,n) ENTRY(f)
+#define FUNCTION_END(f) ret; SET_SIZE(f)
+#endif
+
+ FUNCTION_START(inb,4)
+ movq %rdi, %rdx
+ xorq %rax, %rax
+ inb (%dx)
+ FUNCTION_END(inb)
+
+ FUNCTION_START(inw,4)
+ movq %rdi, %rdx
+ xorq %rax, %rax
+ inw (%dx)
+ FUNCTION_END(inw)
+
+ FUNCTION_START(inl,4)
+ movq %rdi, %rdx
+ xorq %rax, %rax
+ inl (%dx)
+ FUNCTION_END(inl)
+
+ FUNCTION_START(outb,8)
+ movq %rdi, %rdx
+ movq %rsi, %rax
+ outb (%dx)
+ FUNCTION_END(outb)
+
+ FUNCTION_START(outw,8)
+ movq %rdi, %rdx
+ movq %rsi, %rax
+ outw (%dx)
+ FUNCTION_END(outw)
+
+ FUNCTION_START(outl,8)
+ movq %rdi, %rdx
+ movq %rsi, %rax
+ outl (%dx)
+ FUNCTION_END(outl)
+
diff --git a/xorg-server/hw/xfree86/os-support/solaris/solaris-ia32.S b/xorg-server/hw/xfree86/os-support/solaris/solaris-ia32.S
index 0068b06e4..74d787d31 100644
--- a/xorg-server/hw/xfree86/os-support/solaris/solaris-ia32.S
+++ b/xorg-server/hw/xfree86/os-support/solaris/solaris-ia32.S
@@ -1,67 +1,67 @@
-/ Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-/
-/ 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 (including the next
-/ paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-
-#ifdef INLINE_ASM
-#define FUNCTION_START(f,n) .inline f,n
-#define FUNCTION_END(f) .end
-#else
-#define _ASM
-#include <sys/asm_linkage.h>
-#define FUNCTION_START(f,n) ENTRY(f)
-#define FUNCTION_END(f) ret; SET_SIZE(f)
-#endif
-
- FUNCTION_START(inb,4)
- movl (%esp), %edx
- xorl %eax, %eax
- inb (%dx)
- FUNCTION_END(inb)
-
- FUNCTION_START(inw,4)
- movl (%esp), %edx
- xorl %eax, %eax
- inw (%dx)
- FUNCTION_END(inw)
-
- FUNCTION_START(inl,4)
- movl (%esp), %edx
- xorl %eax, %eax
- inl (%dx)
- FUNCTION_END(inl)
-
- FUNCTION_START(outb,8)
- movl (%esp), %edx
- movl 4(%esp), %eax
- outb (%dx)
- FUNCTION_END(outb)
-
- FUNCTION_START(outw,8)
- movl (%esp), %edx
- movl 4(%esp), %eax
- outw (%dx)
- FUNCTION_END(outw)
-
- FUNCTION_START(outl,8)
- movl (%esp), %edx
- movl 4(%esp), %eax
- outl (%dx)
- FUNCTION_END(outl)
-
+/ Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+/
+/ 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 (including the next
+/ paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+
+#ifdef INLINE_ASM
+#define FUNCTION_START(f,n) .inline f,n
+#define FUNCTION_END(f) .end
+#else
+#define _ASM
+#include <sys/asm_linkage.h>
+#define FUNCTION_START(f,n) ENTRY(f)
+#define FUNCTION_END(f) ret; SET_SIZE(f)
+#endif
+
+ FUNCTION_START(inb,4)
+ movl (%esp), %edx
+ xorl %eax, %eax
+ inb (%dx)
+ FUNCTION_END(inb)
+
+ FUNCTION_START(inw,4)
+ movl (%esp), %edx
+ xorl %eax, %eax
+ inw (%dx)
+ FUNCTION_END(inw)
+
+ FUNCTION_START(inl,4)
+ movl (%esp), %edx
+ xorl %eax, %eax
+ inl (%dx)
+ FUNCTION_END(inl)
+
+ FUNCTION_START(outb,8)
+ movl (%esp), %edx
+ movl 4(%esp), %eax
+ outb (%dx)
+ FUNCTION_END(outb)
+
+ FUNCTION_START(outw,8)
+ movl (%esp), %edx
+ movl 4(%esp), %eax
+ outw (%dx)
+ FUNCTION_END(outw)
+
+ FUNCTION_START(outl,8)
+ movl (%esp), %edx
+ movl 4(%esp), %eax
+ outl (%dx)
+ FUNCTION_END(outl)
+
diff --git a/xorg-server/hw/xfree86/os-support/solaris/solaris-sparcv8plus.S b/xorg-server/hw/xfree86/os-support/solaris/solaris-sparcv8plus.S
index 3bb8d241c..0ecafb352 100644
--- a/xorg-server/hw/xfree86/os-support/solaris/solaris-sparcv8plus.S
+++ b/xorg-server/hw/xfree86/os-support/solaris/solaris-sparcv8plus.S
@@ -1,138 +1,138 @@
-/* Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- *
- * 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 (including the next
- * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
- */
-
-#ifdef INLINE_ASM
-#define FUNCTION_START(f,n) .inline f,n
-#define FUNCTION_END(f) .end
-#else
-#define _ASM
-#include <sys/asm_linkage.h>
-#define FUNCTION_START(f,n) ENTRY(f)
-#define FUNCTION_END(f) retl; nop; SET_SIZE(f)
-#endif
-
-/* Converted from common/compiler.h gcc inline format to Sun cc inline
- * format by Kenjiro Tsuji
- *
- * The value 0x88 means ASI_PRIMARY_LITTLE.
- * The store or load to/from the address space will be done
- * as little-endian. In the original xrog code, the value
- * is defined as the macro ASI_PL.
- *
- * In the original xorg code, "membar #StoreStore|#StoreLoad"
- * is directly implemented as an instruction "0x8143e00a".
- *
- */
-
- FUNCTION_START(outb, 0)
- stba %o1, [%o0] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(outb)
-
- FUNCTION_START(outw, 0)
- stha %o1, [%o0] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(outw)
-
- FUNCTION_START(outl, 0)
- sta %o1, [%o0] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(outl)
-
- FUNCTION_START(inb, 0)
- lduba [%o0] 0x88, %o0
- FUNCTION_END(inb)
-
- FUNCTION_START(inw, 0)
- lduha [%o0] 0x88, %o0
- FUNCTION_END(inw)
-
- FUNCTION_START(inl, 0)
- lda [%o0] 0x88, %o0
- FUNCTION_END(inl)
-
- FUNCTION_START(xf86ReadMmio8, 0)
- lduba [%o0 + %o1] 0x88, %o0
- FUNCTION_END(xf86ReadMmio8)
-
- FUNCTION_START(xf86ReadMmio16Be, 0)
- lduh [%o0 + %o1], %o0
- FUNCTION_END(xf86ReadMmio16Be)
-
- FUNCTION_START(xf86ReadMmio16Le, 0)
- lduha [%o0 + %o1] 0x88, %o0
- FUNCTION_END(xf86ReadMmio16Le)
-
- FUNCTION_START(xf86ReadMmio32Be, 0)
- ld [%o0 + %o1], %o0
- FUNCTION_END(xf86ReadMmio32Be)
-
- FUNCTION_START(xf86ReadMmio32Le, 0)
- lda [%o0 + %o1] 0x88, %o0
- FUNCTION_END(xf86ReadMmio32Le)
-
- FUNCTION_START(xf86WriteMmio8, 0)
- stba %o2, [%o0 + %o1] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(xf86WriteMmio8)
-
- FUNCTION_START(xf86WriteMmio16Be, 0)
- sth %o2, [%o0 + %o1]
- membar #StoreStore|#StoreLoad
- FUNCTION_END(xf86WriteMmio16Be)
-
- FUNCTION_START(xf86WriteMmio16Le, 0)
- stha %o2, [%o0 + %o1] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(xf86WriteMmio16Le)
-
- FUNCTION_START(xf86WriteMmio32Be, 0)
- st %o2, [%o0 + %o1]
- membar #StoreStore|#StoreLoad
- FUNCTION_END(xf86WriteMmio32Be)
-
- FUNCTION_START(xf86WriteMmio32Le, 0)
- sta %o2, [%o0 + %o1] 0x88
- membar #StoreStore|#StoreLoad
- FUNCTION_END(xf86WriteMmio32Le)
-
- FUNCTION_START(xf86WriteMmio8NB, 0)
- add %o0, %o1, %o0
- stba %o2, [%o0] 0x88
- FUNCTION_END(xf86WriteMmio8NB)
-
- FUNCTION_START(xf86WriteMmio16BeNB, 0)
- sth %o2, [%o0 + %o1]
- FUNCTION_END(xf86WriteMmio16BeNB)
-
- FUNCTION_START(xf86WriteMmio16LeNB, 0)
- stha %o2, [%o0 + %o1] 0x88
- FUNCTION_END(xf86WriteMmio16LeNB)
-
- FUNCTION_START(xf86WriteMmio32BeNB, 0)
- st %o2, [%o0 + %o1]
- FUNCTION_END(xf86WriteMmio32BeNB)
-
- FUNCTION_START(xf86WriteMmio32LeNB, 0)
- sta %o2, [%o0 + %o1] 0x88
- FUNCTION_END(xf86WriteMmio32LeNB)
-
+/* Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ *
+ * 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 (including the next
+ * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+ */
+
+#ifdef INLINE_ASM
+#define FUNCTION_START(f,n) .inline f,n
+#define FUNCTION_END(f) .end
+#else
+#define _ASM
+#include <sys/asm_linkage.h>
+#define FUNCTION_START(f,n) ENTRY(f)
+#define FUNCTION_END(f) retl; nop; SET_SIZE(f)
+#endif
+
+/* Converted from common/compiler.h gcc inline format to Sun cc inline
+ * format by Kenjiro Tsuji
+ *
+ * The value 0x88 means ASI_PRIMARY_LITTLE.
+ * The store or load to/from the address space will be done
+ * as little-endian. In the original xrog code, the value
+ * is defined as the macro ASI_PL.
+ *
+ * In the original xorg code, "membar #StoreStore|#StoreLoad"
+ * is directly implemented as an instruction "0x8143e00a".
+ *
+ */
+
+ FUNCTION_START(outb, 0)
+ stba %o1, [%o0] 0x88
+ membar #StoreStore|#StoreLoad
+ FUNCTION_END(outb)
+
+ FUNCTION_START(outw, 0)
+ stha %o1, [%o0] 0x88
+ membar #StoreStore|#StoreLoad
+ FUNCTION_END(outw)
+
+ FUNCTION_START(outl, 0)
+ sta %o1, [%o0] 0x88
+ membar #StoreStore|#StoreLoad
+ FUNCTION_END(outl)
+
+ FUNCTION_START(inb, 0)
+ lduba [%o0] 0x88, %o0
+ FUNCTION_END(inb)
+
+ FUNCTION_START(inw, 0)
+ lduha [%o0] 0x88, %o0
+ FUNCTION_END(inw)
+
+ FUNCTION_START(inl, 0)
+ lda [%o0] 0x88, %o0
+ FUNCTION_END(inl)
+
+ FUNCTION_START(xf86ReadMmio8, 0)
+ lduba [%o0 + %o1] 0x88, %o0
+ FUNCTION_END(xf86ReadMmio8)
+
+ FUNCTION_START(xf86ReadMmio16Be, 0)
+ lduh [%o0 + %o1], %o0
+ FUNCTION_END(xf86ReadMmio16Be)
+
+ FUNCTION_START(xf86ReadMmio16Le, 0)
+ lduha [%o0 + %o1] 0x88, %o0
+ FUNCTION_END(xf86ReadMmio16Le)
+
+ FUNCTION_START(xf86ReadMmio32Be, 0)
+ ld [%o0 + %o1], %o0
+ FUNCTION_END(xf86ReadMmio32Be)
+
+ FUNCTION_START(xf86ReadMmio32Le, 0)
+ lda [%o0 + %o1] 0x88, %o0
+ FUNCTION_END(xf86ReadMmio32Le)
+
+ FUNCTION_START(xf86WriteMmio8, 0)
+ stba %o2, [%o0 + %o1] 0x88
+ membar #StoreStore|#StoreLoad
+ FUNCTION_END(xf86WriteMmio8)
+
+ FUNCTION_START(xf86WriteMmio16Be, 0)
+ sth %o2, [%o0 + %o1]
+ membar #StoreStore|#StoreLoad
+ FUNCTION_END(xf86WriteMmio16Be)
+
+ FUNCTION_START(xf86WriteMmio16Le, 0)
+ stha %o2, [%o0 + %o1] 0x88
+ membar #StoreStore|#StoreLoad
+ FUNCTION_END(xf86WriteMmio16Le)
+
+ FUNCTION_START(xf86WriteMmio32Be, 0)
+ st %o2, [%o0 + %o1]
+ membar #StoreStore|#StoreLoad
+ FUNCTION_END(xf86WriteMmio32Be)
+
+ FUNCTION_START(xf86WriteMmio32Le, 0)
+ sta %o2, [%o0 + %o1] 0x88
+ membar #StoreStore|#StoreLoad
+ FUNCTION_END(xf86WriteMmio32Le)
+
+ FUNCTION_START(xf86WriteMmio8NB, 0)
+ add %o0, %o1, %o0
+ stba %o2, [%o0] 0x88
+ FUNCTION_END(xf86WriteMmio8NB)
+
+ FUNCTION_START(xf86WriteMmio16BeNB, 0)
+ sth %o2, [%o0 + %o1]
+ FUNCTION_END(xf86WriteMmio16BeNB)
+
+ FUNCTION_START(xf86WriteMmio16LeNB, 0)
+ stha %o2, [%o0 + %o1] 0x88
+ FUNCTION_END(xf86WriteMmio16LeNB)
+
+ FUNCTION_START(xf86WriteMmio32BeNB, 0)
+ st %o2, [%o0 + %o1]
+ FUNCTION_END(xf86WriteMmio32BeNB)
+
+ FUNCTION_START(xf86WriteMmio32LeNB, 0)
+ sta %o2, [%o0 + %o1] 0x88
+ FUNCTION_END(xf86WriteMmio32LeNB)
+
diff --git a/xorg-server/hw/xfree86/os-support/solaris/sun_inout.s b/xorg-server/hw/xfree86/os-support/solaris/sun_inout.s
index e8f03d0e8..c13ba8b2f 100644
--- a/xorg-server/hw/xfree86/os-support/solaris/sun_inout.s
+++ b/xorg-server/hw/xfree86/os-support/solaris/sun_inout.s
@@ -1,124 +1,124 @@
-/ $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_inout.s,v 1.1 2001/05/28 02:42:31 tsi Exp $
-/
-/ Copyright 1994-2001 The XFree86 Project, Inc. All Rights Reserved.
-/
-/ 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
-/ XFREE86 PROJECT 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 XFree86 Project 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
-/ XFree86 Project.
-/
-/
-/ File: sun_inout.s
-/
-/ Purpose: Provide inb(), inw(), inl(), outb(), outw(), outl() functions
-/ for Solaris x86 using the ProWorks compiler by SunPro
-/
-/ Author: Installed into XFree86 SuperProbe by Doug Anson (danson@lgc.com)
-/ Portions donated to XFree86 by Steve Dever (Steve.Dever@Eng.Sun.Com)
-/
-/ Synopsis: (c callable external declarations)
-/ extern unsigned char inb(int port);
-/ extern unsigned short inw(int port);
-/ extern unsigned long inl(int port);
-/ extern void outb(int port, unsigned char value);
-/ extern void outw(int port, unsigned short value);
-/ extern void outl(int port, unsigned long value);
-/
-
-.file "sunos_inout.s"
-.text
-
-.globl inb
-.globl inw
-.globl inl
-.globl outb
-.globl outw
-.globl outl
-
-/
-/ unsigned char inb(int port);
-/
-.align 4
-inb:
- movl 4(%esp),%edx
- subl %eax,%eax
- inb (%dx)
- ret
-.type inb,@function
-.size inb,.-inb
-
-/
-/ unsigned short inw(int port);
-/
-.align 4
-inw:
- movl 4(%esp),%edx
- subl %eax,%eax
- inw (%dx)
- ret
-.type inw,@function
-.size inw,.-inw
-
-/
-/ unsigned long inl(int port);
-/
-.align 4
-inl:
- movl 4(%esp),%edx
- inl (%dx)
- ret
-.type inl,@function
-.size inl,.-inl
-
-/
-/ void outb(int port, unsigned char value);
-/
-.align 4
-outb:
- movl 4(%esp),%edx
- movl 8(%esp),%eax
- outb (%dx)
- ret
-.type outb,@function
-.size outb,.-outb
-
-/
-/ void outw(int port, unsigned short value);
-/
-.align 4
-outw:
- movl 4(%esp),%edx
- movl 8(%esp),%eax
- outw (%dx)
- ret
-.type outw,@function
-.size outw,.-outw
-
-/
-/ void outl(int port, unsigned long value);
-/
-.align 4
-outl:
- movl 4(%esp),%edx
- movl 8(%esp),%eax
- outl (%dx)
- ret
-.type outl,@function
-.size outl,.-outl
+/ $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_inout.s,v 1.1 2001/05/28 02:42:31 tsi Exp $
+/
+/ Copyright 1994-2001 The XFree86 Project, Inc. All Rights Reserved.
+/
+/ 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
+/ XFREE86 PROJECT 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 XFree86 Project 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
+/ XFree86 Project.
+/
+/
+/ File: sun_inout.s
+/
+/ Purpose: Provide inb(), inw(), inl(), outb(), outw(), outl() functions
+/ for Solaris x86 using the ProWorks compiler by SunPro
+/
+/ Author: Installed into XFree86 SuperProbe by Doug Anson (danson@lgc.com)
+/ Portions donated to XFree86 by Steve Dever (Steve.Dever@Eng.Sun.Com)
+/
+/ Synopsis: (c callable external declarations)
+/ extern unsigned char inb(int port);
+/ extern unsigned short inw(int port);
+/ extern unsigned long inl(int port);
+/ extern void outb(int port, unsigned char value);
+/ extern void outw(int port, unsigned short value);
+/ extern void outl(int port, unsigned long value);
+/
+
+.file "sunos_inout.s"
+.text
+
+.globl inb
+.globl inw
+.globl inl
+.globl outb
+.globl outw
+.globl outl
+
+/
+/ unsigned char inb(int port);
+/
+.align 4
+inb:
+ movl 4(%esp),%edx
+ subl %eax,%eax
+ inb (%dx)
+ ret
+.type inb,@function
+.size inb,.-inb
+
+/
+/ unsigned short inw(int port);
+/
+.align 4
+inw:
+ movl 4(%esp),%edx
+ subl %eax,%eax
+ inw (%dx)
+ ret
+.type inw,@function
+.size inw,.-inw
+
+/
+/ unsigned long inl(int port);
+/
+.align 4
+inl:
+ movl 4(%esp),%edx
+ inl (%dx)
+ ret
+.type inl,@function
+.size inl,.-inl
+
+/
+/ void outb(int port, unsigned char value);
+/
+.align 4
+outb:
+ movl 4(%esp),%edx
+ movl 8(%esp),%eax
+ outb (%dx)
+ ret
+.type outb,@function
+.size outb,.-outb
+
+/
+/ void outw(int port, unsigned short value);
+/
+.align 4
+outw:
+ movl 4(%esp),%edx
+ movl 8(%esp),%eax
+ outw (%dx)
+ ret
+.type outw,@function
+.size outw,.-outw
+
+/
+/ void outl(int port, unsigned long value);
+/
+.align 4
+outl:
+ movl 4(%esp),%edx
+ movl 8(%esp),%eax
+ outl (%dx)
+ ret
+.type outl,@function
+.size outl,.-outl
diff --git a/xorg-server/hw/xfree86/ramdac/.gitignore b/xorg-server/hw/xfree86/ramdac/.gitignore
new file mode 100644
index 000000000..9074a4300
--- /dev/null
+++ b/xorg-server/hw/xfree86/ramdac/.gitignore
@@ -0,0 +1,2 @@
+# Add & Override for this directory and it's subdirectories
+xf86BitOrder.c
diff --git a/xorg-server/hw/xfree86/ramdac/CURSOR.NOTES b/xorg-server/hw/xfree86/ramdac/CURSOR.NOTES
index 726e2edc1..a0ecd02ae 100644
--- a/xorg-server/hw/xfree86/ramdac/CURSOR.NOTES
+++ b/xorg-server/hw/xfree86/ramdac/CURSOR.NOTES
@@ -1,191 +1,191 @@
- CURSOR.NOTES
-
- This file describes how to add hardware cursor support to a chipset
-driver. Though the cursor support itself is in the ramdac module,
-cursor management is separate from the rest of the module.
-
-
-1) CURSOR INITIALIZATION AND SHUTDOWN
-
- All relevant prototypes and defines are in xf86Cursor.h.
-
- To initialize the cursor, the driver should allocate an
-xf86CursorInfoRec via xf86CreateCursorInfoRec(), fill it out as described
-later in this document and pass it to xf86InitCursor(). xf86InitCursor()
-must be called _after_ the software cursor initialization (usually
-miDCInitialize).
-
- When shutting down, the driver should free the xf86CursorInfoRec
-structure in its CloseScreen function via xf86DestroyCursorInfoRec().
-
-
-2) FILLING OUT THE xf86CursorInfoRec
-
- The driver informs the ramdac module of it's hardware cursor capablities by
-filling out an xf86CursorInfoRec structure and passing it to xf86InitCursor().
-The xf86CursorInfoRec contains the following function pointers:
-
-
-/**** These functions are required ****/
-
-void ShowCursor(ScrnInfoPtr pScrn)
-
- ShowCursor should display the current cursor.
-
-void HideCursor(ScrnInfoPtr pScrn)
-
- HideCursor should hide the current cursor.
-
-void SetCursorPosition(ScrnInfoPtr pScrn, int x, int y)
-
- Set the cursor position to (x,y). X and/or y may be negative
- indicating that the cursor image is partially offscreen on
- the left and/or top edges of the screen. It is up to the
- driver to trap for this and deal with that situation.
-
-void SetCursorColors(ScrnInfoPtr pScrn, int bg, int fg)
-
- Set the cursor foreground and background colors. In 8bpp, fg and
- bg are indicies into the current colormap unless the
- HARDWARE_CURSOR_TRUECOLOR_AT_8BPP flag is set. In that case
- and in all other bpps the fg and bg are in 8-8-8 RGB format.
-
-void LoadCursorImage(ScrnInfoPtr pScrn, unsigned char *bits)
-
- LoadCursorImage is how the hardware cursor bits computed by the
- RealizeCursor function will be passed to the driver when the cursor
- shape needs to be changed.
-
-
-/**** These functions are optional ****/
-
-
-unsigned char* RealizeCursor(xf86CursorInfoPtr infoPtr, CursorPtr pCurs)
-
- If RealizeCursor is not provided by the driver, one will be provided
- for you based on the Flags field described below. The driver must
- provide this function if the hardware cursor format is not one of
- the common ones supported by this module.
-
-
-Bool UseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
-
- If the driver is unable to use a hardware cursor for reasons
- other than the cursor being larger than the maximum specified
- in the MaxWidth or MaxHeight field below, it can supply the
- UseHWCursor function. If UseHWCursor is provided by the driver,
- it will be called whenever the cursor shape changes or the video
- mode changes. This is useful for when the hardware cursor cannot
- be used in interlaced or doublescan modes.
-
-
-/**** The following fields are required ****/
-
-MaxWidth
-MaxHeight
-
- These indicate the largest sized cursor that can be a hardware
- cursor. It will fall back to a software cursor when a cursor
- exceeding this size needs to be used.
-
-
-Flags
-
- /* Color related flags */
-
- HARDWARE_CURSOR_TRUECOLOR_AT_8BPP
-
- This indicates that the colors passed to the SetCursorColors
- function should not be in 8-8-8 RGB format in 8bpp but rather,
- they should be the pixel values from the current colormap.
-
-
- /* Cursor data loading flags */
-
- HARDWARE_CURSOR_SHOW_TRANSPARENT
-
- The HideCursor entry will normally be called instead of displaying a
- completely transparent cursor, or when a switch to a software cursor
- needs to occur. This flag prevents this behaviour, thus causing the
- LoadCursorImage entry to be called with transparent cursor data.
- NOTE: If you use this flag and provide your own RealizeCursor() entry,
- ensure this entry returns transparent cursor data when called
- with a NULL pCurs parameter.
-
- HARDWARE_CURSOR_UPDATE_UNHIDDEN
-
- This flag prevents the HideCursor call that would normally occur just before
- the LoadCursorImage entry is to be called to load a new hardware cursor
- image.
-
-
- /* Cursor data packing flags */
-
- Hardware cursor data consists of two pieces, a source and a mask.
- The mask is a bitmap indicating which parts of the cursor are
- transparent and which parts are drawn. The source is a bitmap
- indicating which parts of the non-transparent portion of the the
- cursor should be painted in the foreground color and which should
- be painted in the background color.
-
- HARDWARE_CURSOR_INVERT_MASK
-
- By default, set bits indicate the opaque part of the mask bitmap
- and clear bits indicate the transparent part. If your hardware
- wants this the opposite way, this flag will invert the mask.
-
- HARDWARE_CURSOR_SWAP_SOURCE_AND_MASK
-
- By default, RealizeCursor will store the source first and then
- the mask. If the hardware needs this order reversed then this
- flag should be set.
-
- HARDWARE_CURSOR_AND_SOURCE_WITH_MASK
-
- This flag will have the module logical AND the source with the mask to make
- sure there are no source bits set if the corresponding mask bits
- aren't set. Some hardware will not care if source bits are set where
- there are supposed to be transparent areas, but some hardware will
- interpret this as a third cursor color or similar. That type of
- hardware will need this flag set.
-
- HARDWARE_CURSOR_BIT_ORDER_MSBFIRST
-
- By default, it is assumed that the least significant bit in each byte
- corresponds to the leftmost pixel on the screen. If your hardware
- has this reversed you should set this flag.
-
- HARDWARE_CURSOR_NIBBLE_SWAPPED
-
- If your hardware requires byte swapping of the hardware cursor, enable
- this option.
-
-
- /* Source-Mask interleaving flags */
-
- By default the source and mask data are inlined (source first unless
- the HARDWARE_CURSOR_SWAP_SOURCE_AND_MASK flag is set). Some hardware
- will require the source and mask to be interleaved, that is, X number
- of source bits should packed and then X number of mask bits repeating
- until the entire pattern is stored. The following flags describe the
- bit interleave.
-
- HARDWARE_CURSOR_SOURCE_MASK_NOT_INTERLEAVED
-
- This one is the default.
-
- The following are for interleaved cursors.
-
- HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_1
- HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_8
- HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_16
- HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_32
- HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64
-
- And once again, if your hardware requires something different than
- these packing styles, your driver can supply its own RealizeCursor
- function.
-
-
-
-$XFree86: xc/programs/Xserver/hw/xfree86/ramdac/CURSOR.NOTES,v 1.4tsi Exp $
+ CURSOR.NOTES
+
+ This file describes how to add hardware cursor support to a chipset
+driver. Though the cursor support itself is in the ramdac module,
+cursor management is separate from the rest of the module.
+
+
+1) CURSOR INITIALIZATION AND SHUTDOWN
+
+ All relevant prototypes and defines are in xf86Cursor.h.
+
+ To initialize the cursor, the driver should allocate an
+xf86CursorInfoRec via xf86CreateCursorInfoRec(), fill it out as described
+later in this document and pass it to xf86InitCursor(). xf86InitCursor()
+must be called _after_ the software cursor initialization (usually
+miDCInitialize).
+
+ When shutting down, the driver should free the xf86CursorInfoRec
+structure in its CloseScreen function via xf86DestroyCursorInfoRec().
+
+
+2) FILLING OUT THE xf86CursorInfoRec
+
+ The driver informs the ramdac module of it's hardware cursor capablities by
+filling out an xf86CursorInfoRec structure and passing it to xf86InitCursor().
+The xf86CursorInfoRec contains the following function pointers:
+
+
+/**** These functions are required ****/
+
+void ShowCursor(ScrnInfoPtr pScrn)
+
+ ShowCursor should display the current cursor.
+
+void HideCursor(ScrnInfoPtr pScrn)
+
+ HideCursor should hide the current cursor.
+
+void SetCursorPosition(ScrnInfoPtr pScrn, int x, int y)
+
+ Set the cursor position to (x,y). X and/or y may be negative
+ indicating that the cursor image is partially offscreen on
+ the left and/or top edges of the screen. It is up to the
+ driver to trap for this and deal with that situation.
+
+void SetCursorColors(ScrnInfoPtr pScrn, int bg, int fg)
+
+ Set the cursor foreground and background colors. In 8bpp, fg and
+ bg are indicies into the current colormap unless the
+ HARDWARE_CURSOR_TRUECOLOR_AT_8BPP flag is set. In that case
+ and in all other bpps the fg and bg are in 8-8-8 RGB format.
+
+void LoadCursorImage(ScrnInfoPtr pScrn, unsigned char *bits)
+
+ LoadCursorImage is how the hardware cursor bits computed by the
+ RealizeCursor function will be passed to the driver when the cursor
+ shape needs to be changed.
+
+
+/**** These functions are optional ****/
+
+
+unsigned char* RealizeCursor(xf86CursorInfoPtr infoPtr, CursorPtr pCurs)
+
+ If RealizeCursor is not provided by the driver, one will be provided
+ for you based on the Flags field described below. The driver must
+ provide this function if the hardware cursor format is not one of
+ the common ones supported by this module.
+
+
+Bool UseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
+
+ If the driver is unable to use a hardware cursor for reasons
+ other than the cursor being larger than the maximum specified
+ in the MaxWidth or MaxHeight field below, it can supply the
+ UseHWCursor function. If UseHWCursor is provided by the driver,
+ it will be called whenever the cursor shape changes or the video
+ mode changes. This is useful for when the hardware cursor cannot
+ be used in interlaced or doublescan modes.
+
+
+/**** The following fields are required ****/
+
+MaxWidth
+MaxHeight
+
+ These indicate the largest sized cursor that can be a hardware
+ cursor. It will fall back to a software cursor when a cursor
+ exceeding this size needs to be used.
+
+
+Flags
+
+ /* Color related flags */
+
+ HARDWARE_CURSOR_TRUECOLOR_AT_8BPP
+
+ This indicates that the colors passed to the SetCursorColors
+ function should not be in 8-8-8 RGB format in 8bpp but rather,
+ they should be the pixel values from the current colormap.
+
+
+ /* Cursor data loading flags */
+
+ HARDWARE_CURSOR_SHOW_TRANSPARENT
+
+ The HideCursor entry will normally be called instead of displaying a
+ completely transparent cursor, or when a switch to a software cursor
+ needs to occur. This flag prevents this behaviour, thus causing the
+ LoadCursorImage entry to be called with transparent cursor data.
+ NOTE: If you use this flag and provide your own RealizeCursor() entry,
+ ensure this entry returns transparent cursor data when called
+ with a NULL pCurs parameter.
+
+ HARDWARE_CURSOR_UPDATE_UNHIDDEN
+
+ This flag prevents the HideCursor call that would normally occur just before
+ the LoadCursorImage entry is to be called to load a new hardware cursor
+ image.
+
+
+ /* Cursor data packing flags */
+
+ Hardware cursor data consists of two pieces, a source and a mask.
+ The mask is a bitmap indicating which parts of the cursor are
+ transparent and which parts are drawn. The source is a bitmap
+ indicating which parts of the non-transparent portion of the the
+ cursor should be painted in the foreground color and which should
+ be painted in the background color.
+
+ HARDWARE_CURSOR_INVERT_MASK
+
+ By default, set bits indicate the opaque part of the mask bitmap
+ and clear bits indicate the transparent part. If your hardware
+ wants this the opposite way, this flag will invert the mask.
+
+ HARDWARE_CURSOR_SWAP_SOURCE_AND_MASK
+
+ By default, RealizeCursor will store the source first and then
+ the mask. If the hardware needs this order reversed then this
+ flag should be set.
+
+ HARDWARE_CURSOR_AND_SOURCE_WITH_MASK
+
+ This flag will have the module logical AND the source with the mask to make
+ sure there are no source bits set if the corresponding mask bits
+ aren't set. Some hardware will not care if source bits are set where
+ there are supposed to be transparent areas, but some hardware will
+ interpret this as a third cursor color or similar. That type of
+ hardware will need this flag set.
+
+ HARDWARE_CURSOR_BIT_ORDER_MSBFIRST
+
+ By default, it is assumed that the least significant bit in each byte
+ corresponds to the leftmost pixel on the screen. If your hardware
+ has this reversed you should set this flag.
+
+ HARDWARE_CURSOR_NIBBLE_SWAPPED
+
+ If your hardware requires byte swapping of the hardware cursor, enable
+ this option.
+
+
+ /* Source-Mask interleaving flags */
+
+ By default the source and mask data are inlined (source first unless
+ the HARDWARE_CURSOR_SWAP_SOURCE_AND_MASK flag is set). Some hardware
+ will require the source and mask to be interleaved, that is, X number
+ of source bits should packed and then X number of mask bits repeating
+ until the entire pattern is stored. The following flags describe the
+ bit interleave.
+
+ HARDWARE_CURSOR_SOURCE_MASK_NOT_INTERLEAVED
+
+ This one is the default.
+
+ The following are for interleaved cursors.
+
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_1
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_8
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_16
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_32
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64
+
+ And once again, if your hardware requires something different than
+ these packing styles, your driver can supply its own RealizeCursor
+ function.
+
+
+
+$XFree86: xc/programs/Xserver/hw/xfree86/ramdac/CURSOR.NOTES,v 1.4tsi Exp $
diff --git a/xorg-server/hw/xfree86/ramdac/Makefile.am b/xorg-server/hw/xfree86/ramdac/Makefile.am
index e6f8ed552..3c3780516 100644
--- a/xorg-server/hw/xfree86/ramdac/Makefile.am
+++ b/xorg-server/hw/xfree86/ramdac/Makefile.am
@@ -1,19 +1,19 @@
-noinst_LTLIBRARIES = libramdac.la
-
-libramdac_la_SOURCES = xf86RamDac.c xf86RamDacCmap.c \
- xf86Cursor.c xf86HWCurs.c IBM.c BT.c TI.c \
- xf86BitOrder.c
-
-sdk_HEADERS = BT.h IBM.h TI.h xf86Cursor.h xf86RamDac.h
-
-DISTCLEANFILES = xf86BitOrder.c
-EXTRA_DIST = BTPriv.h IBMPriv.h TIPriv.h xf86CursorPriv.h xf86RamDacPriv.h \
- CURSOR.NOTES
-
-AM_CFLAGS = -DXAAReverseBitOrder=xf86ReverseBitOrder -DRAMDAC_MODULE \
- $(DIX_CFLAGS) $(XORG_CFLAGS)
-INCLUDES = $(XORG_INCS)
-
-xf86BitOrder.c:
- $(AM_V_GEN)echo "#define XAAReverseBitOrder xf86ReverseBitOrder" > $@
- $(AM_V_GEN)echo "#include \"$(srcdir)/../xaa/xaaBitOrder.c\"" >> $@
+noinst_LTLIBRARIES = libramdac.la
+
+libramdac_la_SOURCES = xf86RamDac.c xf86RamDacCmap.c \
+ xf86Cursor.c xf86HWCurs.c IBM.c BT.c TI.c \
+ xf86BitOrder.c
+
+sdk_HEADERS = BT.h IBM.h TI.h xf86Cursor.h xf86RamDac.h
+
+DISTCLEANFILES = xf86BitOrder.c
+EXTRA_DIST = BTPriv.h IBMPriv.h TIPriv.h xf86CursorPriv.h xf86RamDacPriv.h \
+ CURSOR.NOTES
+
+AM_CFLAGS = -DXAAReverseBitOrder=xf86ReverseBitOrder -DRAMDAC_MODULE \
+ $(DIX_CFLAGS) $(XORG_CFLAGS)
+INCLUDES = $(XORG_INCS)
+
+xf86BitOrder.c:
+ $(AM_V_GEN)echo "#define XAAReverseBitOrder xf86ReverseBitOrder" > $@
+ $(AM_V_GEN)echo "#include \"$(srcdir)/../xaa/xaaBitOrder.c\"" >> $@
diff --git a/xorg-server/hw/xfree86/ramdac/xf86Cursor.c b/xorg-server/hw/xfree86/ramdac/xf86Cursor.c
index 7fd70fc34..15e2ada78 100644
--- a/xorg-server/hw/xfree86/ramdac/xf86Cursor.c
+++ b/xorg-server/hw/xfree86/ramdac/xf86Cursor.c
@@ -43,14 +43,14 @@ static miPointerSpriteFuncRec xf86CursorSpriteFuncs = {
static void xf86CursorInstallColormap(ColormapPtr);
static void xf86CursorRecolorCursor(DeviceIntPtr pDev, ScreenPtr, CursorPtr,
Bool);
-static Bool xf86CursorCloseScreen(int, ScreenPtr);
+static Bool xf86CursorCloseScreen(ScreenPtr);
static void xf86CursorQueryBestSize(int, unsigned short *, unsigned short *,
ScreenPtr);
/* ScrnInfoRec functions */
-static void xf86CursorEnableDisableFBAccess(int, Bool);
-static Bool xf86CursorSwitchMode(int, DisplayModePtr, int);
+static void xf86CursorEnableDisableFBAccess(ScrnInfoPtr, Bool);
+static Bool xf86CursorSwitchMode(ScrnInfoPtr, DisplayModePtr);
Bool
xf86InitCursor(ScreenPtr pScreen, xf86CursorInfoPtr infoPtr)
@@ -118,7 +118,7 @@ xf86InitCursor(ScreenPtr pScreen, xf86CursorInfoPtr infoPtr)
/***** Screen functions *****/
static Bool
-xf86CursorCloseScreen(int i, ScreenPtr pScreen)
+xf86CursorCloseScreen(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
miPointerScreenPtr PointPriv =
@@ -149,7 +149,7 @@ xf86CursorCloseScreen(int i, ScreenPtr pScreen)
free(ScreenPriv->transparentData);
free(ScreenPriv);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
static void
@@ -203,11 +203,11 @@ xf86CursorRecolorCursor(DeviceIntPtr pDev,
/***** ScrnInfoRec functions *********/
static void
-xf86CursorEnableDisableFBAccess(int index, Bool enable)
+xf86CursorEnableDisableFBAccess(ScrnInfoPtr pScrn, Bool enable)
{
DeviceIntPtr pDev = inputInfo.pointer;
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
xf86CursorScreenPtr ScreenPriv =
(xf86CursorScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
xf86CursorScreenKey);
@@ -223,7 +223,7 @@ xf86CursorEnableDisableFBAccess(int index, Bool enable)
}
if (ScreenPriv->EnableDisableFBAccess)
- (*ScreenPriv->EnableDisableFBAccess) (index, enable);
+ (*ScreenPriv->EnableDisableFBAccess) (pScrn, enable);
if (enable && ScreenPriv->SavedCursor) {
/*
@@ -237,10 +237,10 @@ xf86CursorEnableDisableFBAccess(int index, Bool enable)
}
static Bool
-xf86CursorSwitchMode(int index, DisplayModePtr mode, int flags)
+xf86CursorSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
{
Bool ret;
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
xf86CursorScreenPtr ScreenPriv =
(xf86CursorScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
xf86CursorScreenKey);
@@ -250,7 +250,7 @@ xf86CursorSwitchMode(int index, DisplayModePtr mode, int flags)
ScreenPriv->isUp = FALSE;
}
- ret = (*ScreenPriv->SwitchMode) (index, mode, flags);
+ ret = (*ScreenPriv->SwitchMode) (pScrn, mode);
/*
* Cannot restore cursor here because the new frame[XY][01] haven't been
diff --git a/xorg-server/hw/xfree86/ramdac/xf86CursorPriv.h b/xorg-server/hw/xfree86/ramdac/xf86CursorPriv.h
index 062b2eb7c..d04f93207 100644
--- a/xorg-server/hw/xfree86/ramdac/xf86CursorPriv.h
+++ b/xorg-server/hw/xfree86/ramdac/xf86CursorPriv.h
@@ -26,7 +26,7 @@ typedef struct {
miPointerSpriteFuncPtr spriteFuncs;
Bool PalettedCursor;
ColormapPtr pInstalledMap;
- Bool (*SwitchMode) (int, DisplayModePtr, int);
+ Bool (*SwitchMode) (ScrnInfoPtr, DisplayModePtr);
xf86EnableDisableFBAccessProc *EnableDisableFBAccess;
CursorPtr SavedCursor;
diff --git a/xorg-server/hw/xfree86/shadowfb/shadow.c b/xorg-server/hw/xfree86/shadowfb/shadow.c
index 5aeee6cbf..614501770 100644
--- a/xorg-server/hw/xfree86/shadowfb/shadow.c
+++ b/xorg-server/hw/xfree86/shadowfb/shadow.c
@@ -28,13 +28,13 @@
#include "picturestr.h"
-static Bool ShadowCloseScreen(int i, ScreenPtr pScreen);
+static Bool ShadowCloseScreen(ScreenPtr pScreen);
static void ShadowCopyWindow(WindowPtr pWin,
DDXPointRec ptOldOrg, RegionPtr prgn);
static Bool ShadowCreateGC(GCPtr pGC);
-static Bool ShadowEnterVT(int index, int flags);
-static void ShadowLeaveVT(int index, int flags);
+static Bool ShadowEnterVT(ScrnInfoPtr pScrn);
+static void ShadowLeaveVT(ScrnInfoPtr pScrn);
static void ShadowComposite(CARD8 op,
PicturePtr pSrc,
@@ -56,8 +56,8 @@ typedef struct {
CreateGCProcPtr CreateGC;
ModifyPixmapHeaderProcPtr ModifyPixmapHeader;
CompositeProcPtr Composite;
- Bool (*EnterVT) (int, int);
- void (*LeaveVT) (int, int);
+ Bool (*EnterVT) (ScrnInfoPtr);
+ void (*LeaveVT) (ScrnInfoPtr);
Bool vtSema;
} ShadowScreenRec, *ShadowScreenPtr;
@@ -192,14 +192,13 @@ ShadowFBInit(ScreenPtr pScreen, RefreshAreaFuncPtr refreshArea)
/**********************************************************/
static Bool
-ShadowEnterVT(int index, int flags)
+ShadowEnterVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
Bool ret;
ShadowScreenPtr pPriv = GET_SCREEN_PRIVATE(pScrn->pScreen);
pScrn->EnterVT = pPriv->EnterVT;
- ret = (*pPriv->EnterVT) (index, flags);
+ ret = (*pPriv->EnterVT) (pScrn);
pPriv->EnterVT = pScrn->EnterVT;
pScrn->EnterVT = ShadowEnterVT;
if (ret) {
@@ -211,15 +210,14 @@ ShadowEnterVT(int index, int flags)
}
static void
-ShadowLeaveVT(int index, int flags)
+ShadowLeaveVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
- ShadowScreenPtr pPriv = GET_SCREEN_PRIVATE(xf86Screens[index]->pScreen);
+ ShadowScreenPtr pPriv = GET_SCREEN_PRIVATE(pScrn->pScreen);
pPriv->vtSema = FALSE;
pScrn->LeaveVT = pPriv->LeaveVT;
- (*pPriv->LeaveVT) (index, flags);
+ (*pPriv->LeaveVT) (pScrn);
pPriv->LeaveVT = pScrn->LeaveVT;
pScrn->LeaveVT = ShadowLeaveVT;
}
@@ -227,7 +225,7 @@ ShadowLeaveVT(int index, int flags)
/**********************************************************/
static Bool
-ShadowCloseScreen(int i, ScreenPtr pScreen)
+ShadowCloseScreen(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
ShadowScreenPtr pPriv = GET_SCREEN_PRIVATE(pScreen);
@@ -247,7 +245,7 @@ ShadowCloseScreen(int i, ScreenPtr pScreen)
free((pointer) pPriv);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
static void
diff --git a/xorg-server/hw/xfree86/utils/cvt/.gitignore b/xorg-server/hw/xfree86/utils/cvt/.gitignore
new file mode 100644
index 000000000..a217c5563
--- /dev/null
+++ b/xorg-server/hw/xfree86/utils/cvt/.gitignore
@@ -0,0 +1 @@
+cvt
diff --git a/xorg-server/hw/xfree86/utils/gtf/.gitignore b/xorg-server/hw/xfree86/utils/gtf/.gitignore
new file mode 100644
index 000000000..919c993fb
--- /dev/null
+++ b/xorg-server/hw/xfree86/utils/gtf/.gitignore
@@ -0,0 +1 @@
+gtf
diff --git a/xorg-server/hw/xfree86/vbe/vbe.c b/xorg-server/hw/xfree86/vbe/vbe.c
index bbb60e3a1..97a9bcf60 100644
--- a/xorg-server/hw/xfree86/vbe/vbe.c
+++ b/xorg-server/hw/xfree86/vbe/vbe.c
@@ -179,7 +179,7 @@ static Bool
vbeProbeDDC(vbeInfoPtr pVbe)
{
const char *ddc_level;
- int screen = pVbe->pInt10->scrnIndex;
+ int screen = pVbe->pInt10->pScrn->scrnIndex;
if (pVbe->ddc == DDC_NONE)
return FALSE;
@@ -262,7 +262,8 @@ vbeReadEDID(vbeInfoPtr pVbe)
unsigned char *tmp = NULL;
Bool novbe = FALSE;
Bool noddc = FALSE;
- int screen = pVbe->pInt10->scrnIndex;
+ ScrnInfoPtr pScrn = pVbe->pInt10->pScrn;
+ int screen = pScrn->scrnIndex;
OptionInfoPtr options;
if (!page)
@@ -270,7 +271,7 @@ vbeReadEDID(vbeInfoPtr pVbe)
options = xnfalloc(sizeof(VBEOptions));
(void) memcpy(options, VBEOptions, sizeof(VBEOptions));
- xf86ProcessOptions(screen, xf86Screens[screen]->options, options);
+ xf86ProcessOptions(screen, pScrn->options, options);
xf86GetOptValBool(options, VBEOPT_NOVBE, &novbe);
xf86GetOptValBool(options, VBEOPT_NODDC, &noddc);
free(options);
@@ -330,7 +331,7 @@ vbeDoEDID(vbeInfoPtr pVbe, pointer pDDCModule)
if (!(pModule = pDDCModule)) {
pModule =
- xf86LoadSubModule(xf86Screens[pVbe->pInt10->scrnIndex], "ddc");
+ xf86LoadSubModule(pVbe->pInt10->pScrn, "ddc");
if (!pModule)
return NULL;
}
@@ -340,7 +341,7 @@ vbeDoEDID(vbeInfoPtr pVbe, pointer pDDCModule)
if (!DDC_data)
return NULL;
- pMonitor = xf86InterpretEDID(pVbe->pInt10->scrnIndex, DDC_data);
+ pMonitor = xf86InterpretEDID(pVbe->pInt10->pScrn->scrnIndex, DDC_data);
if (!pDDCModule)
xf86UnloadSubModule(pModule);
@@ -598,7 +599,7 @@ VBESaveRestore(vbeInfoPtr pVbe, vbeSaveRestoreFunction function,
*/
if ((pVbe->version & 0xff00) > 0x100) {
- int screen = pVbe->pInt10->scrnIndex;
+ int screen = pVbe->pInt10->pScrn->scrnIndex;
if (function == MODE_QUERY || (function == MODE_SAVE && !*memory)) {
/* Query amount of memory to save state */
@@ -904,7 +905,7 @@ VBEBuildVbeModeList(vbeInfoPtr pVbe, VbeInfoBlock * vbe)
m->n = id;
m->next = ModeList;
- xf86DrvMsgVerb(pVbe->pInt10->scrnIndex, X_PROBED, 3,
+ xf86DrvMsgVerb(pVbe->pInt10->pScrn->scrnIndex, X_PROBED, 3,
"BIOS reported VESA mode 0x%x: x:%i y:%i bpp:%i\n",
m->n, m->width, m->height, m->bpp);
@@ -1026,23 +1027,22 @@ VBEDPMSSet(vbeInfoPtr pVbe, int mode)
}
void
-VBEInterpretPanelID(int scrnIndex, struct vbePanelID *data)
+VBEInterpretPanelID(ScrnInfoPtr pScrn, struct vbePanelID *data)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
DisplayModePtr mode;
const float PANEL_HZ = 60.0;
if (!data)
return;
- xf86DrvMsg(scrnIndex, X_INFO, "PanelID returned panel resolution %dx%d\n",
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "PanelID returned panel resolution %dx%d\n",
data->hsize, data->vsize);
if (pScrn->monitor->nHsync || pScrn->monitor->nVrefresh)
return;
if (data->hsize < 320 || data->vsize < 240) {
- xf86DrvMsg(scrnIndex, X_INFO, "...which I refuse to believe\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "...which I refuse to believe\n");
return;
}
@@ -1069,7 +1069,7 @@ VBEReadPanelID(vbeInfoPtr pVbe)
int RealOff = pVbe->real_mode_base;
pointer page = pVbe->memory;
void *tmp = NULL;
- int screen = pVbe->pInt10->scrnIndex;
+ int screen = pVbe->pInt10->pScrn->scrnIndex;
pVbe->pInt10->ax = 0x4F11;
pVbe->pInt10->bx = 0x01;
diff --git a/xorg-server/hw/xfree86/vbe/vbe.h b/xorg-server/hw/xfree86/vbe/vbe.h
index 81be0ff40..3907c53f3 100644
--- a/xorg-server/hw/xfree86/vbe/vbe.h
+++ b/xorg-server/hw/xfree86/vbe/vbe.h
@@ -350,7 +350,7 @@ struct vbePanelID {
char reserved[14];
};
-extern _X_EXPORT void VBEInterpretPanelID(int scrnIndex,
+extern _X_EXPORT void VBEInterpretPanelID(ScrnInfoPtr pScrn,
struct vbePanelID *data);
extern _X_EXPORT struct vbePanelID *VBEReadPanelID(vbeInfoPtr pVbe);
diff --git a/xorg-server/hw/xfree86/vgahw/Makefile.am b/xorg-server/hw/xfree86/vgahw/Makefile.am
index f48e46a11..0634e47e3 100644
--- a/xorg-server/hw/xfree86/vgahw/Makefile.am
+++ b/xorg-server/hw/xfree86/vgahw/Makefile.am
@@ -1,9 +1,9 @@
-module_LTLIBRARIES = libvgahw.la
-libvgahw_la_LDFLAGS = -avoid-version
-libvgahw_la_SOURCES = vgaHW.c vgaHWmodule.c
-INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
-
-sdk_HEADERS = vgaHW.h
-
-EXTRA_DIST = vgaCmap.c
+module_LTLIBRARIES = libvgahw.la
+libvgahw_la_LDFLAGS = -avoid-version
+libvgahw_la_SOURCES = vgaHW.c vgaHWmodule.c
+INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
+
+sdk_HEADERS = vgaHW.h
+
+EXTRA_DIST = vgaCmap.c
diff --git a/xorg-server/hw/xfree86/x86emu/Makefile.am b/xorg-server/hw/xfree86/x86emu/Makefile.am
index df9697767..c4108cffb 100644
--- a/xorg-server/hw/xfree86/x86emu/Makefile.am
+++ b/xorg-server/hw/xfree86/x86emu/Makefile.am
@@ -1,29 +1,29 @@
-if INT10_X86EMU
-noinst_LTLIBRARIES = libx86emu.la
-endif
-
-libx86emu_la_SOURCES = debug.c \
- decode.c \
- fpu.c \
- ops2.c \
- ops.c \
- prim_ops.c \
- sys.c \
- x86emu.h
-
-INCLUDES =
-
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
-
-EXTRA_DIST = validate.c \
- x86emu/debug.h \
- x86emu/decode.h \
- x86emu/fpu.h \
- x86emu/fpu_regs.h \
- x86emu/ops.h \
- x86emu/prim_asm.h \
- x86emu/prim_ops.h \
- x86emu/prim_x86_gcc.h \
- x86emu/regs.h \
- x86emu/types.h \
- x86emu/x86emui.h
+if INT10_X86EMU
+noinst_LTLIBRARIES = libx86emu.la
+endif
+
+libx86emu_la_SOURCES = debug.c \
+ decode.c \
+ fpu.c \
+ ops2.c \
+ ops.c \
+ prim_ops.c \
+ sys.c \
+ x86emu.h
+
+INCLUDES =
+
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
+
+EXTRA_DIST = validate.c \
+ x86emu/debug.h \
+ x86emu/decode.h \
+ x86emu/fpu.h \
+ x86emu/fpu_regs.h \
+ x86emu/ops.h \
+ x86emu/prim_asm.h \
+ x86emu/prim_ops.h \
+ x86emu/prim_x86_gcc.h \
+ x86emu/regs.h \
+ x86emu/types.h \
+ x86emu/x86emui.h
diff --git a/xorg-server/hw/xfree86/xaa/.gitignore b/xorg-server/hw/xfree86/xaa/.gitignore
new file mode 100644
index 000000000..1ba5b2602
--- /dev/null
+++ b/xorg-server/hw/xfree86/xaa/.gitignore
@@ -0,0 +1,4 @@
+# Add & Override for this directory and it's subdirectories
+[lms]-xaa*.c
+[lm]f3-xaa*.c
+[lm][f3]-xaa*.c
diff --git a/xorg-server/hw/xfree86/xaa/XAA.HOWTO b/xorg-server/hw/xfree86/xaa/XAA.HOWTO
index cbd71c138..531ead0a0 100644
--- a/xorg-server/hw/xfree86/xaa/XAA.HOWTO
+++ b/xorg-server/hw/xfree86/xaa/XAA.HOWTO
@@ -1,1427 +1,1427 @@
-
-
- XAA.HOWTO
-
- This file describes how to add basic XAA support to a chipset driver.
-
-0) What is XAA
-1) XAA Initialization and Shutdown
-2) The Primitives
- 2.0 Generic Flags
- 2.1 Screen to Screen Copies
- 2.2 Solid Fills
- 2.3 Solid Lines
- 2.4 Dashed Lines
- 2.5 Color Expand Fills
- 2.5.1 Screen to Screen Color Expansion
- 2.5.2 CPU to Screen Color Expansion
- 2.5.2.1 The Direct Method
- 2.5.2.2 The Indirect Method
- 2.6 8x8 Mono Pattern Fills
- 2.7 8x8 Color Pattern Fills
- 2.8 Image Writes
- 2.8.1 The Direct Method
- 2.8.2 The Indirect Method
- 2.9 Clipping
-3) The Pixmap Cache
-4) Offscreen Pixmaps
-
-/********************************************************************/
-
-0) WHAT IS XAA
-
- XAA (the XFree86 Acceleration Architecture) is a device dependent
-layer that encapsulates the unaccelerated framebuffer rendering layer,
-intercepting rendering commands sent to it from higher levels of the
-server. For rendering tasks where hardware acceleration is not
-possible, XAA allows the requests to proceed to the software rendering
-code. Otherwise, XAA breaks the sometimes complicated X primitives
-into simpler primitives more suitable for hardware acceleration and
-will use accelerated functions exported by the chipset driver to
-render these.
-
- XAA provides a simple, easy to use driver interface that allows
-the driver to communicate its acceleration capabilities and restrictions
-back to XAA. XAA will use the information provided by the driver
-to determine whether or not acceleration will be possible for a
-particular X primitive.
-
-
-
-1) XAA INITIALIZATION AND SHUTDOWN
-
- All relevant prototypes and defines are in xaa.h.
-
- To Initialize the XAA layer, the driver should allocate an XAAInfoRec
-via XAACreateInfoRec(), fill it out as described in this document
-and pass it to XAAInit(). XAAInit() must be called _after_ the
-framebuffer initialization (usually cfb?ScreenInit or similar) since
-it is "wrapping" that layer. XAAInit() should be called _before_ the
-cursor initialization (usually miDCInitialize) since the cursor
-layer needs to "wrap" all the rendering code including XAA.
-
- When shutting down, the driver should free the XAAInfoRec
-structure in its CloseScreen function via XAADestroyInfoRec().
-The prototypes for the functions mentioned above are as follows:
-
- XAAInfoRecPtr XAACreateInfoRec(void);
- Bool XAAInit(ScreenPtr, XAAInfoRecPtr);
- void XAADestroyInfoRec(XAAInfoRec);
-
- The driver informs XAA of it's acceleration capablities by
-filling out an XAAInfoRec structure and passing it to XAAInit().
-The XAAInfoRec structure contains many fields, most of which are
-function pointers and flags. Each primitive will typically have
-two functions and a set of flags associated with it, but it may
-have more. These two functions are the "SetupFor" and "Subsequent"
-functions. The "SetupFor" function tells the driver that the
-hardware should be initialized for a particular type of graphics
-operation. After the "SetupFor" function, one or more calls to the
-"Subsequent" function will be made to indicate that an instance
-of the particular primitive should be rendered by the hardware.
-The details of each instance (width, height, etc...) are given
-with each "Subsequent" function. The set of flags associated
-with each primitive lets the driver tell XAA what its hardware
-limitations are (eg. It doesn't support a planemask, it can only
-do one of the raster-ops, etc...).
-
- Of the XAAInfoRec fields, one is required. This is the
-Sync function. XAA initialization will fail if this function
-is not provided.
-
-void Sync(ScrnInfoPtr pScrn) /* Required */
-
- Sync will be called when XAA needs to be certain that all
- graphics coprocessor operations are finished, such as when
- the framebuffer must be written to or read from directly
- and it must be certain that the accelerator will not be
- overwriting the area of interest.
-
- One needs to make certain that the Sync function not only
- waits for the accelerator fifo to empty, but that it waits for
- the rendering of that last operation to complete.
-
- It is guaranteed that no direct framebuffer access will
- occur after a "SetupFor" or "Subsequent" function without
- the Sync function being called first.
-
-
-
-2) THE PRIMITIVES
-
-2.0 Generic Flags
-
- Each primitive type has a set of flags associated with it which
-allow the driver to tell XAA what the hardware limitations are.
-The common ones are as follows:
-
-/* Foreground, Background, rop and planemask restrictions */
-
- GXCOPY_ONLY
-
- This indicates that the accelerator only supports GXcopy
- for the particular primitive.
-
- ROP_NEEDS_SOURCE
-
- This indicates that the accelerator doesn't supports a
- particular primitive with rops that don't involve the source.
- These rops are GXclear, GXnoop, GXinvert and GXset. If neither
- this flag nor GXCOPY_ONLY is defined, it is assumed that the
- accelerator supports all 16 raster operations (rops) for that
- primitive.
-
- NO_PLANEMASK
-
- This indicates that the accelerator does not support a hardware
- write planemask for the particular primitive.
-
- RGB_EQUAL
-
- This indicates that the particular primitive requires the red,
- green and blue bytes of the foreground color (and background color,
- if applicable) to be equal. This is useful for 24bpp when a graphics
- coprocessor is used in 8bpp mode, which is not uncommon in older
- hardware since some have no support for or only limited support for
- acceleration at 24bpp. This way, many operations will be accelerated
- for the common case of "grayscale" colors. This flag should only
- be used in 24bpp.
-
- In addition to the common ones listed above which are possible for
-nearly all primitives, each primitive may have its own flags specific
-to that primitive. If such flags exist they are documented in the
-descriptions of those primitives below.
-
-
-
-
-2.1 Screen to Screen Copies
-
- The SetupFor and Subsequent ScreenToScreenCopy functions provide
- an interface for copying rectangular areas from video memory to
- video memory. To accelerate this primitive the driver should
- provide both the SetupFor and Subsequent functions and indicate
- the hardware restrictions via the ScreenToScreenCopyFlags. The
- NO_PLANEMASK, GXCOPY_ONLY and ROP_NEEDS_SOURCE flags as described
- in Section 2.0 are valid as well as the following:
-
- NO_TRANSPARENCY
-
- This indicates that the accelerator does not support skipping
- of color keyed pixels when copying from the source to the destination.
-
- TRANSPARENCY_GXCOPY_ONLY
-
- This indicates that the accelerator supports skipping of color keyed
- pixels only when the rop is GXcopy.
-
- ONLY_LEFT_TO_RIGHT_BITBLT
-
- This indicates that the hardware only accepts blitting when the
- x direction is positive.
-
- ONLY_TWO_BITBLT_DIRECTIONS
-
- This indicates that the hardware can only cope with blitting when
- the direction of x is the same as the direction in y.
-
-
-void SetupForScreenToScreenCopy( ScrnInfoPtr pScrn,
- int xdir, int ydir,
- int rop,
- unsigned int planemask,
- int trans_color )
-
- When this is called, SubsequentScreenToScreenCopy will be called
- one or more times directly after. If ydir is 1, then the accelerator
- should copy starting from the top (minimum y) of the source and
- proceed downward. If ydir is -1, then the accelerator should copy
- starting from the bottom of the source (maximum y) and proceed
- upward. If xdir is 1, then the accelerator should copy each
- y scanline starting from the leftmost pixel of the source. If
- xdir is -1, it should start from the rightmost pixel.
- If trans_color is not -1 then trans_color indicates that the
- accelerator should not copy pixels with the color trans_color
- from the source to the destination, but should skip them.
- Trans_color is always -1 if the NO_TRANSPARENCY flag is set.
-
-
-void SubsequentScreenToScreenCopy(ScrnInfoPtr pScrn,
- int x1, int y1,
- int x2, int y2,
- int width, int height)
-
- Copy a rectangle "width" x "height" from the source (x1,y1) to the
- destination (x2,y2) using the parameters passed by the last
- SetupForScreenToScreenCopy call. (x1,y1) and (x2,y2) always denote
- the upper left hand corners of the source and destination regardless
- of which xdir and ydir values are given by SetupForScreenToScreenCopy.
-
-
-
-2.2 Solid Fills
-
- The SetupFor and Subsequent SolidFill(Rect/Trap) functions provide
- an interface for filling rectangular areas of the screen with a
- foreground color. To accelerate this primitive the driver should
- provide both the SetupForSolidFill and SubsequentSolidFillRect
- functions and indicate the hardware restrictions via the SolidFillFlags.
- The driver may optionally provide a SubsequentSolidFillTrap if
- it is capable of rendering the primitive correctly.
- The GXCOPY_ONLY, ROP_NEEDS_SOURCE, NO_PLANEMASK and RGB_EQUAL flags
- as described in Section 2.0 are valid.
-
-
-void SetupForSolidFill(ScrnInfoPtr pScrn,
- int color, int rop, unsigned int planemask)
-
- SetupForSolidFill indicates that any combination of the following
- may follow it.
-
- SubsequentSolidFillRect
- SubsequentSolidFillTrap
-
-
-
-void SubsequentSolidFillRect(ScrnInfoPtr pScrn, int x, int y, int w, int h)
-
- Fill a rectangle of dimensions "w" by "h" with origin at (x,y)
- using the color, rop and planemask given by the last
- SetupForSolidFill call.
-
-void SubsequentSolidFillTrap(ScrnInfoPtr pScrn, int y, int h,
- int left, int dxL, int dyL, int eL,
- int right, int dxR, int dyR, int eR)
-
- These parameters describe a trapezoid via a version of
- Bresenham's parameters. "y" is the top line. "h" is the
- number of spans to be filled in the positive Y direction.
- "left" and "right" indicate the starting X values of the
- left and right edges. dy/dx describes the edge slope.
- These are not the deltas between the beginning and ending
- points on an edge. They merely describe the slope. "e" is
- the initial error term. It's the relationships between dx,
- dy and e that define the edge.
- If your engine does not do bresenham trapezoids or does
- not allow the programmer to specify the error term then
- you are not expected to be able to accelerate them.
-
-
-2.3 Solid Lines
-
- XAA provides an interface for drawing thin lines. In order to
- draw X lines correctly a high degree of accuracy is required.
- This usually limits line acceleration to hardware which has a
- Bresenham line engine, though depending on the algorithm used,
- other line engines may come close if they accept 16 bit line
- deltas. XAA has both a Bresenham line interface and a two-point
- line interface for drawing lines of arbitrary orientation.
- Additionally there is a SubsequentSolidHorVertLine which will
- be used for all horizontal and vertical lines. Horizontal and
- vertical lines are handled separately since hardware that doesn't
- have a line engine (or has one that is unusable due to precision
- problems) can usually draw these lines by some other method such
- as drawing them as thin rectangles. Even for hardware that can
- draw arbitrary lines via the Bresenham or two-point interfaces,
- the SubsequentSolidHorVertLine is used for horizontal and vertical
- lines since most hardware is able to render the horizontal lines
- and sometimes the vertical lines faster by other methods (Hint:
- try rendering horizontal lines as flattened rectangles). If you have
- not provided a SubsequentSolidHorVertLine but you have provided
- Bresenham or two-point lines, a SubsequentSolidHorVertLine function
- will be supplied for you.
-
- The flags field associated with Solid Lines is SolidLineFlags and
- the GXCOPY_ONLY, ROP_NEEDS_SOURCE, NO_PLANEMASK and RGB_EQUAL flags as
- described in Section 2.0 are valid restrictions.
-
- Some line engines have line biases hardcoded to comply with
- Microsoft line biasing rules. A tell-tale sign of this is the
- hardware lines not matching the software lines in the zeroth and
- fourth octants. The driver can set the flag:
-
- MICROSOFT_ZERO_LINE_BIAS
-
- in the AccelInfoRec.Flags field to adjust the software lines to
- match the hardware lines. This is in the generic flags field
- rather than the SolidLineFlags since this flag applies to all
- software zero-width lines on the screen and not just the solid ones.
-
-
-void SetupForSolidLine(ScrnInfoPtr pScrn,
- int color, int rop, unsigned int planemask)
-
- SetupForSolidLine indicates that any combination of the following
- may follow it.
-
- SubsequentSolidBresenhamLine
- SubsequentSolidTwoPointLine
- SubsequentSolidHorVertLine
-
-
-void SubsequentSolidHorVertLine( ScrnInfoPtr pScrn,
- int x, int y, int len, int dir )
-
- All vertical and horizontal solid thin lines are rendered with
- this function. The line starts at coordinate (x,y) and extends
- "len" pixels inclusive. In the direction indicated by "dir."
- The direction is either DEGREES_O or DEGREES_270. That is, it
- always extends to the right or down.
-
-
-
-void SubsequentSolidTwoPointLine(ScrnInfoPtr pScrn,
- int x1, int y1, int x2, int y2, int flags)
-
- Draw a line from (x1,y1) to (x2,y2). If the flags field contains
- the flag OMIT_LAST, the last pixel should not be drawn. Otherwise,
- the pixel at (x2,y2) should be drawn.
-
- If you use the TwoPoint line interface there is a good possibility
- that your line engine has hard-coded line biases that do not match
- the default X zero-width lines. If so, you may need to set the
- MICROSOFT_ZERO_LINE_BIAS flag described above. Note that since
- any vertex in the 16-bit signed coordinate system is valid, your
- line engine is expected to handle 16-bit values if you have hardware
- line clipping enabled. If your engine cannot handle 16-bit values,
- you should not use hardware line clipping.
-
-
-void SubsequentSolidBresenhamLine(ScrnInfoPtr pScrn,
- int x, int y, int major, int minor, int err, int len, int octant)
-
- "X" and "y" are the starting point of the line. "Major" and "minor"
- are the major and minor step constants. "Err" is the initial error
- term. "Len" is the number of pixels to be drawn (inclusive). "Octant"
- can be any combination of the following flags OR'd together:
-
- Y_MAJOR Y is the major axis (X otherwise)
- X_DECREASING The line is drawn from right to left
- Y_DECREASING The line is drawn from bottom to top
-
- The major, minor and err terms are the "raw" Bresenham parameters
- consistent with a line engine that does:
-
- e = err;
- while(len--) {
- DRAW_POINT(x,y);
- e += minor;
- if(e >= 0) {
- e -= major;
- TAKE_ONE_STEP_ALONG_MINOR_AXIS;
- }
- TAKE_ONE_STEP_ALONG_MAJOR_AXIS;
- }
-
- IBM 8514 style Bresenham line interfaces require their parameters
- modified in the following way:
-
- Axial = minor;
- Diagonal = minor - major;
- Error = minor + err;
-
-SolidBresenhamLineErrorTermBits
-
- This field allows the driver to tell XAA how many bits large its
- Bresenham parameter registers are. Many engines have registers that
- only accept 12 or 13 bit Bresenham parameters, and the parameters
- for clipped lines may overflow these if they are not scaled down.
- If this field is not set, XAA will assume the engine can accomodate
- 16 bit parameters, otherwise, it will scale the parameters to the
- size specified.
-
-
-2.4 Dashed Lines
-
- The same degree of accuracy required by the solid lines is required
- for drawing dashed lines as well. The dash pattern itself is a
- buffer of binary data where ones are expanded into the foreground
- color and zeros either correspond to the background color or
- indicate transparency depending on whether or not DoubleDash or
- OnOffDashes are being drawn.
-
- The flags field associated with dashed Lines is DashedLineFlags and
- the GXCOPY_ONLY, ROP_NEEDS_SOURCE, NO_PLANEMASK and RGB_EQUAL flags as
- described in Section 2.0 are valid restrictions. Additionally, the
- following flags are valid:
-
- NO_TRANSPARENCY
-
- This indicates that the driver cannot support dashed lines
- with transparent backgrounds (OnOffDashes).
-
- TRANSPARENCY_ONLY
-
- This indicates that the driver cannot support dashes with
- both a foreground and background color (DoubleDashes).
-
- LINE_PATTERN_POWER_OF_2_ONLY
-
- This indicates that only patterns with a power of 2 length
- can be accelerated.
-
- LINE_PATTERN_LSBFIRST_MSBJUSTIFIED
- LINE_PATTERN_LSBFIRST_LSBJUSTIFIED
- LINE_PATTERN_MSBFIRST_MSBJUSTIFIED
- LINE_PATTERN_MSBFIRST_LSBJUSTIFIED
-
- These describe how the line pattern should be packed.
- The pattern buffer is DWORD padded. LSBFIRST indicates
- that the pattern runs from the LSB end to the MSB end.
- MSBFIRST indicates that the pattern runs from the MSB end
- to the LSB end. When the pattern does not completely fill
- the DWORD padded buffer, the pattern will be justified
- towards the MSB or LSB end based on the flags above.
-
-
- The following field indicates the maximum length dash pattern that
- should be accelerated.
-
- int DashPatternMaxLength
-
-
-void SetupForDashedLine(ScrnInfoPtr pScrn,
- int fg, int bg, int rop, unsigned int planemask,
- int length, unsigned char *pattern)
-
-
- SetupForDashedLine indicates that any combination of the following
- may follow it.
-
- SubsequentDashedBresenhamLine
- SubsequentDashedTwoPointLine
-
- If "bg" is -1, then the background (pixels corresponding to clear
- bits in the pattern) should remain unmodified. "Bg" indicates the
- background color otherwise. "Length" indicates the length of
- the pattern in bits and "pattern" points to the DWORD padded buffer
- holding the pattern which has been packed according to the flags
- set above.
-
-
-void SubsequentDashedTwoPointLine( ScrnInfoPtr pScrn,
- int x1, int y1, int x2, int y2, int flags, int phase)
-
-void SubsequentDashedBresenhamLine(ScrnInfoPtr pScrn,
- int x1, int y1, int major, int minor, int err, int len, int octant,
- int phase)
-
- These are the same as the SubsequentSolidTwoPointLine and
- SubsequentBresenhamLine functions except for the addition
- of the "phase" field which indicates the offset into the dash
- pattern that the pixel at (x1,y1) corresponds to.
-
- As with the SubsequentBresenhamLine, there is an
-
- int DashedBresenhamLineErrorTermBits
-
- field which indicates the size of the error term registers
- used with dashed lines. This is usually the same value as
- the field for the solid lines (because it's usually the same
- register).
-
-
-
-2.5 Color Expansion Fills
-
- When filling a color expansion rectangle, the accelerator
- paints each pixel depending on whether or not a bit in a
- corresponding bitmap is set or clear. Opaque expansions are
- when a set bit corresponds to the foreground color and a clear
- bit corresponds to the background color. A transparent expansion
- is when a set bit corresponds to the foreground color and a
- clear bit indicates that the pixel should remain unmodified.
-
- The graphics accelerator usually has access to the source
- bitmap in one of two ways: 1) the bitmap data is sent serially
- to the accelerator by the CPU through some memory mapped aperture
- or 2) the accelerator reads the source bitmap out of offscreen
- video memory. Some types of primitives are better suited towards
- one method or the other. Type 2 is useful for reusable patterns
- such as stipples which can be cached in offscreen memory. The
- aperature method can be used for stippling but the CPU must pass
- the data across the bus each time a stippled fill is to be performed.
- For expanding 1bpp client pixmaps or text strings to the screen,
- the aperature method is usually superior because the intermediate
- copy in offscreen memory needed by the second method would only be
- used once. Unfortunately, many accelerators can only do one of these
- methods and not both.
-
- XAA provides both ScreenToScreen and CPUToScreen color expansion
- interfaces for doing color expansion fills. The ScreenToScreen
- functions can only be used with hardware that supports reading
- of source bitmaps from offscreen video memory, and these are only
- used for cacheable patterns such as stipples. There are two
- variants of the CPUToScreen routines - a direct method intended
- for hardware that has a transfer aperature, and an indirect method
- intended for hardware without transfer aperatures or hardware
- with unusual transfer requirements. Hardware that can only expand
- bitmaps from video memory should supply ScreenToScreen routines
- but also ScanlineCPUToScreen (indirect) routines to optimize transfers
- of non-cacheable data. Hardware that can only accept source bitmaps
- through an aperature should supply CPUToScreen (or ScanlineCPUToScreen)
- routines. Hardware that can do both should provide both ScreenToScreen
- and CPUToScreen routines.
-
- For both ScreenToScreen and CPUToScreen interfaces, the GXCOPY_ONLY,
- ROP_NEEDS_SOURCE, NO_PLANEMASK and RGB_EQUAL flags described in
- Section 2.0 are valid as well as the following:
-
- /* bit order requirements (one of these must be set) */
-
- BIT_ORDER_IN_BYTE_LSBFIRST
-
- This indicates that least significant bit in each byte of the source
- data corresponds to the leftmost of that block of 8 pixels. This
- is the prefered format.
-
- BIT_ORDER_IN_BYTE_MSBFIRST
-
- This indicates that most significant bit in each byte of the source
- data corresponds to the leftmost of that block of 8 pixels.
-
- /* transparency restrictions */
-
- NO_TRANSPARENCY
-
- This indicates that the accelerator cannot do a transparent expansion.
-
- TRANSPARENCY_ONLY
-
- This indicates that the accelerator cannot do an opaque expansion.
- In cases where where the background needs to be filled, XAA will
- render the primitive in two passes when using the CPUToScreen
- interface, but will not do so with the ScreenToScreen interface
- since that would require caching of two patterns. Some
- ScreenToScreen hardware may be able to render two passes at the
- driver level and remove the TRANSPARENCY_ONLY restriction if
- it can render pixels corresponding to the zero bits.
-
-
-
-2.5.1 Screen To Screen Color Expansion
-
- The ScreenToScreenColorExpandFill routines provide an interface
- for doing expansion blits from source patterns stored in offscreen
- video memory.
-
- void SetupForScreenToScreenColorExpandFill (ScrnInfoPtr pScrn,
- int fg, int bg,
- int rop, unsigned int planemask)
-
-
- Ones in the source bitmap will correspond to the fg color.
- Zeros in the source bitmap will correspond to the bg color
- unless bg = -1. In that case the pixels corresponding to the
- zeros in the bitmap shall be left unmodified by the accelerator.
-
- For hardware that doesn't allow an easy implementation of skipleft, the
- driver can replace CacheMonoStipple function with one that stores multiple
- rotated copies of the stipple and select between them. In this case the
- driver should set CacheColorExpandDensity to tell XAA how many copies of
- the pattern are stored in the width of a cache slot. For instance if the
- hardware can specify the starting address in bytes, then 8 rotated copies
- of the stipple are needed and CacheColorExpandDensity should be set to 8.
-
- void SubsequentScreenToScreenColorExpandFill( ScrnInfoPtr pScrn,
- int x, int y, int w, int h,
- int srcx, int srcy, int offset )
-
-
- Fill a rectangle "w" x "h" at location (x,y). The source pitch
- between scanlines is the framebuffer pitch (pScrn->displayWidth
- pixels) and srcx and srcy indicate the start of the source pattern
- in units of framebuffer pixels. "Offset" indicates the bit offset
- into the pattern that corresponds to the pixel being painted at
- "x" on the screen. Some hardware accepts source coordinates in
- units of bits which makes implementation of the offset trivial.
- In that case, the bit address of the source bit corresponding to
- the pixel painted at (x,y) would be:
-
- (srcy * pScrn->displayWidth + srcx) * pScrn->bitsPerPixel + offset
-
- It should be noted that the offset assumes LSBFIRST hardware.
- For MSBFIRST hardware, the driver may need to implement the
- offset by bliting only from byte boundaries and hardware clipping.
-
-
-
-2.5.2 CPU To Screen Color Expansion
-
-
- The CPUToScreenColorExpandFill routines provide an interface for
- doing expansion blits from source patterns stored in system memory.
- There are two varieties of this primitive, a CPUToScreenColorExpandFill
- and a ScanlineCPUToScreenColorExpandFill. With the
- CPUToScreenColorExpandFill method, the source data is sent serially
- through a memory mapped aperature. With the Scanline version, the
- data is rendered scanline at a time into intermediate buffers with
- a call to SubsequentColorExpandScanline following each scanline.
-
- These two methods have separate flags fields, the
- CPUToScreenColorExpandFillFlags and ScanlineCPUToScreenColorExpandFillFlags
- respectively. Flags specific to one method or the other are described
- in sections 2.5.2.1 and 2.5.2.2 but for both cases the bit order and
- transparency restrictions listed at the beginning of section 2.5 are
- valid as well as the following:
-
- /* clipping (optional) */
-
- LEFT_EDGE_CLIPPING
-
- This indicates that the accelerator supports omission of up to
- 31 pixels on the left edge of the rectangle to be filled. This
- is beneficial since it allows transfer of the source bitmap to
- always occur from DWORD boundaries.
-
- LEFT_EDGE_CLIPPING_NEGATIVE_X
-
- This flag indicates that the accelerator can render color expansion
- rectangles even if the value of x origin is negative (off of
- the screen on the left edge).
-
- /* misc */
-
- TRIPLE_BITS_24BPP
-
- When enabled (must be in 24bpp mode), color expansion functions
- are expected to require three times the amount of bits to be
- transferred so that 24bpp grayscale colors can be used with color
- expansion in 8bpp coprocessor mode. Each bit is expanded to 3
- bits when writing the monochrome data.
-
-
- 2.5.1 The Direct Method
-
-
- Using the direct method of color expansion XAA will send all
- bitmap data to the accelerator serially through an memory mapped
- transfer window defined by the following two fields:
-
- unsigned char *ColorExpandBase
-
- This indicates the memory address of the beginning of the aperture.
-
- int ColorExpandRange
-
- This indicates the size in bytes of the aperture.
-
- The driver should specify how the transfered data should be padded.
- There are options for both the padding of each Y scanline and for the
- total transfer to the aperature.
- One of the following two flags must be set:
-
- CPU_TRANSFER_PAD_DWORD
-
- This indicates that the total transfer (sum of all scanlines) sent
- to the aperature must be DWORD padded. This is the default behavior.
-
- CPU_TRANSFER_PAD_QWORD
-
- This indicates that the total transfer (sum of all scanlines) sent
- to the aperature must be QWORD padded. With this set, XAA will send
- an extra DWORD to the aperature when needed to ensure that only
- an even number of DWORDs are sent.
-
- And then there are the flags for padding of each scanline:
-
- SCANLINE_PAD_DWORD
-
- This indicates that each Y scanline should be DWORD padded.
- This is the only option available and is the default.
-
- Finally, there is the CPU_TRANSFER_BASE_FIXED flag which indicates
- that the aperture is a single register rather than a range of
- registers, and XAA should write all of the data to the first DWORD.
- If the ColorExpandRange is not large enough to accomodate scanlines
- the width of the screen, this option will be forced. That is, the
- ColorExpandRange must be:
-
- ((virtualX + 31)/32) * 4 bytes or more.
-
- ((virtualX + 62)/32 * 4) if LEFT_EDGE_CLIPPING_NEGATIVE_X is set.
-
- If the TRIPLE_BITS_24BPP flag is set, the required area should be
- multiplied by three.
-
-
-void SetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
- int fg, int bg,
- int rop,
- unsigned int planemask)
-
-
-
- Ones in the source bitmap will correspond to the fg color.
- Zeros in the source bitmap will correspond to the bg color
- unless bg = -1. In that case the pixels corresponding to the
- zeros in the bitmap shall be left unmodified by the accelerator.
-
-
-void SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
- int x, int y, int w, int h,
- int skipleft )
-
- When this function is called, the accelerator should be setup
- to fill a rectangle of dimension "w" by "h" with origin at (x,y)
- in the fill style prescribed by the last call to
- SetupForCPUToScreenColorExpandFill. XAA will pass the data to
- the aperture immediately after this function is called. If the
- skipleft is non-zero (and LEFT_EDGE_CLIPPING has been enabled), then
- the accelerator _should_not_ render skipleft pixels on the leftmost
- edge of the rectangle. Some engines have an alignment feature
- like this built in, some others can do this using a clipping
- window.
-
- It can be arranged for XAA to call Sync() after it is through
- calling the Subsequent function by setting SYNC_AFTER_COLOR_EXPAND
- in the CPUToScreenColorExpandFillFlags. This can provide the driver
- with an oportunity to reset a clipping window if needed.
-
-
-2.5.2 The Indirect Method
-
- Using the indirect method, XAA will render the bitmap data scanline
- at a time to one or more buffers. These buffers may be memory
- mapped apertures or just intermediate storage.
-
- int NumScanlineColorExpandBuffers
-
- This indicates the number of buffers available.
-
- unsigned char **ScanlineColorExpandBuffers
-
- This is an array of pointers to the memory locations of each buffer.
- Each buffer is expected to be large enough to accommodate scanlines
- the width of the screen. That is:
-
- ((virtualX + 31)/32) * 4 bytes or more.
-
- ((virtualX + 62)/32 * 4) if LEFT_EDGE_CLIPPING_NEGATIVE_X is set.
-
- Scanlines are always DWORD padded.
- If the TRIPLE_BITS_24BPP flag is set, the required area should be
- multiplied by three.
-
-
-void SetupForScanlineCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
- int fg, int bg,
- int rop,
- unsigned int planemask)
-
- Ones in the source bitmap will correspond to the fg color.
- Zeros in the source bitmap will correspond to the bg color
- unless bg = -1. In that case the pixels corresponding to the
- zeros in the bitmap shall be left unmodified by the accelerator.
-
-
-void SubsequentScanlineCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
- int x, int y, int w, int h,
- int skipleft )
-
-void SubsequentColorExpandScanline(ScrnInfoPtr pScrn, int bufno)
-
-
- When SubsequentScanlineCPUToScreenColorExpandFill is called, XAA
- will begin transfering the source data scanline at a time, calling
- SubsequentColorExpandScanline after each scanline. If more than
- one buffer is available, XAA will cycle through the buffers.
- Subsequent scanlines will use the next buffer and go back to the
- buffer 0 again when the last buffer is reached. The index into
- the ScanlineColorExpandBuffers array is presented as "bufno"
- with each SubsequentColorExpandScanline call.
-
- The skipleft field is the same as for the direct method.
-
- The indirect method can be use to send the source data directly
- to a memory mapped aperture represented by a single color expand
- buffer, scanline at a time, but more commonly it is used to place
- the data into offscreen video memory so that the accelerator can
- blit it to the visible screen from there. In the case where the
- accelerator permits rendering into offscreen video memory while
- the accelerator is active, several buffers can be used so that
- XAA can be placing source data into the next buffer while the
- accelerator is blitting the current buffer. For cases where
- the accelerator requires some special manipulation of the source
- data first, the buffers can be in system memory. The CPU can
- manipulate these buffers and then send the data to the accelerator.
-
-
-
-2.6 8x8 Mono Pattern Fills
-
- XAA provides support for two types of 8x8 hardware patterns -
- "Mono" patterns and "Color" patterns. Mono pattern data is
- 64 bits of color expansion data with ones indicating the
- foreground color and zeros indicating the background color.
- The source bitmaps for the 8x8 mono patterns can be presented
- to the graphics accelerator in one of two ways. They can be
- passed as two DWORDS to the 8x8 mono pattern functions or
- they can be cached in offscreen memory and their locations
- passed to the 8x8 mono pattern functions. In addition to the
- GXCOPY_ONLY, ROP_NEEDS_SOURCE, NO_PLANEMASK and RGB_EQUAL flags
- defined in Section 2.0, the following are defined for the
- Mono8x8PatternFillFlags:
-
- HARDWARE_PATTERN_PROGRAMMED_BITS
-
- This indicates that the 8x8 patterns should be packed into two
- DWORDS and passed to the 8x8 mono pattern functions. The default
- behavior is to cache the patterns in offscreen video memory and
- pass the locations of these patterns to the functions instead.
- The pixmap cache must be enabled for the default behavior (8x8
- pattern caching) to work. See Section 3 for how to enable the
- pixmap cache. The pixmap cache is not necessary for
- HARDWARE_PATTERN_PROGRAMMED_BITS.
-
- HARDWARE_PATTERN_PROGRAMMED_ORIGIN
-
- If the hardware supports programmable pattern offsets then
- this option should be set. See the table below for further
- infomation.
-
- HARDWARE_PATTERN_SCREEN_ORIGIN
-
- Some hardware wants the pattern offset specified with respect to the
- upper left-hand corner of the primitive being drawn. Other hardware
- needs the option HARDWARE_PATTERN_SCREEN_ORIGIN set to indicate that
- all pattern offsets should be referenced to the upper left-hand
- corner of the screen. HARDWARE_PATTERN_SCREEN_ORIGIN is preferable
- since this is more natural for the X-Window system and offsets will
- have to be recalculated for each Subsequent function otherwise.
-
- BIT_ORDER_IN_BYTE_MSBFIRST
- BIT_ORDER_IN_BYTE_LSBFIRST
-
- As with other color expansion routines this indicates whether the
- most or the least significant bit in each byte from the pattern is
- the leftmost on the screen.
-
- TRANSPARENCY_ONLY
- NO_TRANSPARENCY
-
- This means the same thing as for the color expansion rect routines
- except that for TRANSPARENCY_ONLY XAA will not render the primitive
- in two passes since this is more easily handled by the driver.
- It is recommended that TRANSPARENCY_ONLY hardware handle rendering
- of opaque patterns in two passes (the background can be filled as
- a rectangle in GXcopy) in the Subsequent function so that the
- TRANSPARENCY_ONLY restriction can be removed.
-
-
-
- Additional information about cached patterns...
- For the case where HARDWARE_PATTERN_PROGRAMMED_BITS is not set and
- the pattern must be cached in offscreen memory, the first pattern
- starts at the cache slot boundary which is set by the
- CachePixelGranularity field used to configure the pixmap cache.
- One should ensure that the CachePixelGranularity reflects any
- alignment restrictions that the accelerator may put on 8x8 pattern
- storage locations. When HARDWARE_PATTERN_PROGRAMMED_ORIGIN is set
- there is only one pattern stored. When this flag is not set,
- all 64 pre-rotated copies of the pattern are cached in offscreen memory.
- The MonoPatternPitch field can be used to specify the X position pixel
- granularity that each of these patterns must align on. If the
- MonoPatternPitch is not supplied, the patterns will be densely packed
- within the cache slot. The behavior of the default XAA 8x8 pattern
- caching mechanism to store all 8x8 patterns linearly in video memory.
- If the accelerator needs the patterns stored in a more unusual fashion,
- the driver will need to provide its own 8x8 mono pattern caching
- routines for XAA to use.
-
- The following table describes the meanings of the "patx" and "paty"
- fields in both the SetupFor and Subsequent functions.
-
- With HARDWARE_PATTERN_SCREEN_ORIGIN
- -----------------------------------
-
- HARDWARE_PATTERN_PROGRAMMED_BITS and HARDWARE_PATTERN_PROGRAMMED_ORIGIN
-
- SetupFor: patx and paty are the first and second DWORDS of the
- 8x8 mono pattern.
-
- Subsequent: patx and paty are the x,y offset into that pattern.
- All Subsequent calls will have the same offset in
- the case of HARDWARE_PATTERN_SCREEN_ORIGIN so only
- the offset specified by the first Subsequent call
- after a SetupFor call will need to be observed.
-
- HARDWARE_PATTERN_PROGRAMMED_BITS only
-
- SetupFor: patx and paty hold the first and second DWORDS of
- the 8x8 mono pattern pre-rotated to match the desired
- offset.
-
- Subsequent: These just hold the same patterns and can be ignored.
-
- HARDWARE_PATTERN_PROGRAMMED_ORIGIN only
-
- SetupFor: patx and paty hold the x,y coordinates of the offscreen
- memory location where the 8x8 pattern is stored. The
- bits are stored linearly in memory at that location.
-
- Subsequent: patx and paty hold the offset into the pattern.
- All Subsequent calls will have the same offset in
- the case of HARDWARE_PATTERN_SCREEN_ORIGIN so only
- the offset specified by the first Subsequent call
- after a SetupFor call will need to be observed.
-
- Neither programmed bits or origin
-
- SetupFor: patx and paty hold the x,y coordinates of the offscreen
- memory location where the pre-rotated 8x8 pattern is
- stored.
-
- Subsequent: patx and paty are the same as in the SetupFor function
- and can be ignored.
-
-
- Without HARDWARE_PATTERN_SCREEN_ORIGIN
- --------------------------------------
-
- HARDWARE_PATTERN_PROGRAMMED_BITS and HARDWARE_PATTERN_PROGRAMMED_ORIGIN
-
- SetupFor: patx and paty are the first and second DWORDS of the
- 8x8 mono pattern.
-
- Subsequent: patx and paty are the x,y offset into that pattern.
-
- HARDWARE_PATTERN_PROGRAMMED_BITS only
-
- SetupFor: patx and paty holds the first and second DWORDS of
- the unrotated 8x8 mono pattern. This can be ignored.
-
- Subsequent: patx and paty hold the rotated 8x8 pattern to be
- rendered.
-
- HARDWARE_PATTERN_PROGRAMMED_ORIGIN only
-
- SetupFor: patx and paty hold the x,y coordinates of the offscreen
- memory location where the 8x8 pattern is stored. The
- bits are stored linearly in memory at that location.
-
- Subsequent: patx and paty hold the offset into the pattern.
-
- Neither programmed bits or origin
-
- SetupFor: patx and paty hold the x,y coordinates of the offscreen
- memory location where the unrotated 8x8 pattern is
- stored. This can be ignored.
-
- Subsequent: patx and paty hold the x,y coordinates of the
- rotated 8x8 pattern to be rendered.
-
-
-
-void SetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty,
- int fg, int bg, int rop, unsigned int planemask)
-
- SetupForMono8x8PatternFill indicates that any combination of the
- following may follow it.
-
- SubsequentMono8x8PatternFillRect
- SubsequentMono8x8PatternFillTrap
-
- The fg, bg, rop and planemask fields have the same meaning as the
- ones used for the other color expansion routines. Patx's and paty's
- meaning can be determined from the table above.
-
-
-void SubsequentMono8x8PatternFillRect( ScrnInfoPtr pScrn,
- int patx, int paty, int x, int y, int w, int h)
-
- Fill a rectangle of dimensions "w" by "h" with origin at (x,y)
- using the parameters give by the last SetupForMono8x8PatternFill
- call. The meanings of patx and paty can be determined by the
- table above.
-
-void SubsequentMono8x8PatternFillTrap( ScrnInfoPtr pScrn,
- int patx, int paty, int y, int h,
- int left, int dxL, int dyL, int eL,
- int right, int dxR, int dyR, int eR )
-
- The meanings of patx and paty can be determined by the table above.
- The rest of the fields have the same meanings as those in the
- SubsequentSolidFillTrap function.
-
-
-
-2.7 8x8 Color Pattern Fills
-
- 8x8 color pattern data is 64 pixels of full color data that
- is stored linearly in offscreen video memory. 8x8 color patterns
- are useful as a substitute for 8x8 mono patterns when tiling,
- doing opaque stipples, or in the case where transperency is
- supported, regular stipples. 8x8 color pattern fills also have
- the additional benefit of being able to tile full color 8x8
- patterns instead of just 2 color ones like the mono patterns.
- However, full color 8x8 patterns aren't used very often in the
- X Window system so you might consider passing this primitive
- by if you already can do mono patterns, especially if they
- require alot of cache area. Color8x8PatternFillFlags is
- the flags field for this primitive and the GXCOPY_ONLY,
- ROP_NEEDS_SOURCE and NO_PLANEMASK flags as described in
- Section 2.0 are valid as well as the following:
-
-
- HARDWARE_PATTERN_PROGRAMMED_ORIGIN
-
- If the hardware supports programmable pattern offsets then
- this option should be set.
-
- HARDWARE_PATTERN_SCREEN_ORIGIN
-
- Some hardware wants the pattern offset specified with respect to the
- upper left-hand corner of the primitive being drawn. Other hardware
- needs the option HARDWARE_PATTERN_SCREEN_ORIGIN set to indicate that
- all pattern offsets should be referenced to the upper left-hand
- corner of the screen. HARDWARE_PATTERN_SCREEN_ORIGIN is preferable
- since this is more natural for the X-Window system and offsets will
- have to be recalculated for each Subsequent function otherwise.
-
- NO_TRANSPARENCY
- TRANSPARENCY_GXCOPY_ONLY
-
- These mean the same as for the ScreenToScreenCopy functions.
-
-
- The following table describes the meanings of patx and paty passed
- to the SetupFor and Subsequent fields:
-
- HARDWARE_PATTERN_PROGRAMMED_ORIGIN && HARDWARE_PATTERN_SCREEN_ORIGIN
-
- SetupFor: patx and paty hold the x,y location of the unrotated
- pattern.
-
- Subsequent: patx and paty hold the pattern offset. For the case
- of HARDWARE_PATTERN_SCREEN_ORIGIN all Subsequent calls
- have the same offset so only the first call will need
- to be observed.
-
-
- HARDWARE_PATTERN_PROGRAMMED_ORIGIN only
-
- SetupFor: patx and paty hold the x,y location of the unrotated
- pattern.
-
- Subsequent: patx and paty hold the pattern offset.
-
- HARDWARE_PATTERN_SCREEN_ORIGIN
-
- SetupFor: patx and paty hold the x,y location of the rotated pattern.
-
- Subsequent: patx and paty hold the same location as the SetupFor
- function so these can be ignored.
-
- neither flag
-
- SetupFor: patx and paty hold the x,y location of the unrotated
- pattern. This can be ignored.
-
- Subsequent: patx and paty hold the x,y location of the rotated
- pattern.
-
- Additional information about cached patterns...
- All 8x8 color patterns are cached in offscreen video memory so
- the pixmap cache must be enabled to use them. The first pattern
- starts at the cache slot boundary which is set by the
- CachePixelGranularity field used to configure the pixmap cache.
- One should ensure that the CachePixelGranularity reflects any
- alignment restrictions that the accelerator may put on 8x8 pattern
- storage locations. When HARDWARE_PATTERN_PROGRAMMED_ORIGIN is set
- there is only one pattern stored. When this flag is not set,
- all 64 rotations off the pattern are accessible but it is assumed
- that the accelerator is capable of accessing data stored on 8
- pixel boundaries. If the accelerator has stricter alignment
- requirements than this the dirver will need to provide its own
- 8x8 color pattern caching routines.
-
-
-void SetupForColor8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty,
- int rop, unsigned int planemask, int trans_color)
-
- SetupForColor8x8PatternFill indicates that any combination of the
- following may follow it.
-
- SubsequentColor8x8PatternFillRect
- SubsequentColor8x8PatternFillTrap (not implemented yet)
-
- For the meanings of patx and paty, see the table above. Trans_color
- means the same as for the ScreenToScreenCopy functions.
-
-
-
-void SubsequentColor8x8PatternFillRect( ScrnInfoPtr pScrn,
- int patx, int paty, int x, int y, int w, int h)
-
- Fill a rectangle of dimensions "w" by "h" with origin at (x,y)
- using the parameters give by the last SetupForColor8x8PatternFill
- call. The meanings of patx and paty can be determined by the
- table above.
-
-void SubsequentColor8x8PatternFillTrap( ScrnInfoPtr pScrn,
- int patx, int paty, int y, int h,
- int left, int dxL, int dyL, int eL,
- int right, int dxR, int dyR, int eR )
-
- For the meanings of patx and paty, see the table above.
- The rest of the fields have the same meanings as those in the
- SubsequentSolidFillTrap function.
-
-
-
-2.8 Image Writes
-
- XAA provides a mechanism for transfering full color pixel data from
- system memory to video memory through the accelerator. This is
- useful for dealing with alignment issues and performing raster ops
- on the data when writing it to the framebuffer. As with color
- expansion rectangles, there is a direct and indirect method. The
- direct method sends all data through a memory mapped aperature.
- The indirect method sends the data to an intermediated buffer scanline
- at a time.
-
- The direct and indirect methods have separate flags fields, the
- ImageWriteFlags and ScanlineImageWriteFlags respectively.
- Flags specific to one method or the other are described in sections
- 2.8.1 and 2.8.2 but for both cases the GXCOPY_ONLY, ROP_NEEDS_SOURCE
- and NO_PLANEMASK flags described in Section 2.0 are valid as well as
- the following:
-
- NO_GXCOPY
-
- In order to have accelerated image transfers faster than the
- software versions for GXcopy, the engine needs to support clipping,
- be using the direct method and have a large enough image transfer
- range so that CPU_TRANSFER_BASE_FIXED doesn't need to be set.
- If these are not supported, then it is unlikely that transfering
- the data through the accelerator will be of any advantage for the
- simple case of GXcopy. In fact, it may be much slower. For such
- cases it's probably best to set the NO_GXCOPY flag so that
- Image writes will only be used for the more complicated rops.
-
- /* transparency restrictions */
-
- NO_TRANSPARENCY
-
- This indicates that the accelerator does not support skipping
- of color keyed pixels when copying from the source to the destination.
-
- TRANSPARENCY_GXCOPY_ONLY
-
- This indicates that the accelerator supports skipping of color keyed
- pixels only when the rop is GXcopy.
-
- /* clipping (optional) */
-
- LEFT_EDGE_CLIPPING
-
- This indicates that the accelerator supports omission of up to
- 3 pixels on the left edge of the rectangle to be filled. This
- is beneficial since it allows transfer from the source pixmap to
- always occur from DWORD boundaries.
-
- LEFT_EDGE_CLIPPING_NEGATIVE_X
-
- This flag indicates that the accelerator can fill areas with
- image write data even if the value of x origin is negative (off of
- the screen on the left edge).
-
-
-2.8.1 The Direct Method
-
- Using the direct method of ImageWrite XAA will send all
- bitmap data to the accelerator serially through an memory mapped
- transfer window defined by the following two fields:
-
- unsigned char *ImageWriteBase
-
- This indicates the memory address of the beginning of the aperture.
-
- int ImageWriteRange
-
- This indicates the size in bytes of the aperture.
-
- The driver should specify how the transfered data should be padded.
- There are options for both the padding of each Y scanline and for the
- total transfer to the aperature.
- One of the following two flags must be set:
-
- CPU_TRANSFER_PAD_DWORD
-
- This indicates that the total transfer (sum of all scanlines) sent
- to the aperature must be DWORD padded. This is the default behavior.
-
- CPU_TRANSFER_PAD_QWORD
-
- This indicates that the total transfer (sum of all scanlines) sent
- to the aperature must be QWORD padded. With this set, XAA will send
- an extra DWORD to the aperature when needed to ensure that only
- an even number of DWORDs are sent.
-
- And then there are the flags for padding of each scanline:
-
- SCANLINE_PAD_DWORD
-
- This indicates that each Y scanline should be DWORD padded.
- This is the only option available and is the default.
-
- Finally, there is the CPU_TRANSFER_BASE_FIXED flag which indicates
- that the aperture is a single register rather than a range of
- registers, and XAA should write all of the data to the first DWORD.
- XAA will automatically select CPU_TRANSFER_BASE_FIXED if the
- ImageWriteRange is not large enough to accomodate an entire scanline.
-
-
-void SetupForImageWrite(ScrnInfoPtr pScrn, int rop, unsigned int planemask,
- int trans_color, int bpp, int depth)
-
- If trans_color is not -1 then trans_color indicates the transparency
- color key and pixels with color trans_color passed through the
- aperature should not be transfered to the screen but should be
- skipped. Bpp and depth indicate the bits per pixel and depth of
- the source pixmap. Trans_color is always -1 if the NO_TRANSPARENCY
- flag is set.
-
-
-void SubsequentImageWriteRect(ScrnInfoPtr pScrn,
- int x, int y, int w, int h, int skipleft)
-
-
- Data passed through the aperature should be copied to a rectangle
- of width "w" and height "h" with origin (x,y). If LEFT_EDGE_CLIPPING
- has been enabled, skipleft will correspond to the number of pixels
- on the left edge that should not be drawn. Skipleft is zero
- otherwise.
-
- It can be arranged for XAA to call Sync() after it is through
- calling the Subsequent functions by setting SYNC_AFTER_IMAGE_WRITE
- in the ImageWriteFlags. This can provide the driver with an
- oportunity to reset a clipping window if needed.
-
-2.8.2 The Indirect Method
-
- Using the indirect method, XAA will render the pixel data scanline
- at a time to one or more buffers. These buffers may be memory
- mapped apertures or just intermediate storage.
-
- int NumScanlineImageWriteBuffers
-
- This indicates the number of buffers available.
-
- unsigned char **ScanlineImageWriteBuffers
-
- This is an array of pointers to the memory locations of each buffer.
- Each buffer is expected to be large enough to accommodate scanlines
- the width of the screen. That is:
-
- pScrn->VirtualX * pScreen->bitsPerPixel/8 bytes or more.
-
- If LEFT_EDGE_CLIPPING_NEGATIVE_X is set, add an additional 4
- bytes to that requirement in 8 and 16bpp, 12 bytes in 24bpp.
-
- Scanlines are always DWORD padded.
-
-void SetupForScanlineImageWrite(ScrnInfoPtr pScrn, int rop,
- unsigned int planemask, int trans_color,
- int bpp, int depth)
-
- If trans_color is not -1 then trans_color indicates the transparency
- color key and pixels with color trans_color in the buffer should not
- be transfered to the screen but should be skipped. Bpp and depth
- indicate the bits per pixel and depth of the source bitmap.
- Trans_color is always -1 if the NO_TRANSPARENCY flag is set.
-
-
-void SubsequentImageWriteRect(ScrnInfoPtr pScrn,
- int x, int y, int w, int h, int skipleft)
-
-
-void SubsequentImageWriteScanline(ScrnInfoPtr pScrn, int bufno)
-
-
- When SubsequentImageWriteRect is called, XAA will begin
- transfering the source data scanline at a time, calling
- SubsequentImageWriteScanline after each scanline. If more than
- one buffer is available, XAA will cycle through the buffers.
- Subsequent scanlines will use the next buffer and go back to the
- buffer 0 again when the last buffer is reached. The index into
- the ScanlineImageWriteBuffers array is presented as "bufno"
- with each SubsequentImageWriteScanline call.
-
- The skipleft field is the same as for the direct method.
-
- The indirect method can be use to send the source data directly
- to a memory mapped aperture represented by a single image write
- buffer, scanline at a time, but more commonly it is used to place
- the data into offscreen video memory so that the accelerator can
- blit it to the visible screen from there. In the case where the
- accelerator permits rendering into offscreen video memory while
- the accelerator is active, several buffers can be used so that
- XAA can be placing source data into the next buffer while the
- accelerator is blitting the current buffer. For cases where
- the accelerator requires some special manipulation of the source
- data first, the buffers can be in system memory. The CPU can
- manipulate these buffers and then send the data to the accelerator.
-
-
-2.9 Clipping
-
- XAA supports hardware clipping rectangles. To use clipping
- in this way it is expected that the graphics accelerator can
- clip primitives with verticies anywhere in the 16 bit signed
- coordinate system.
-
-void SetClippingRectangle ( ScrnInfoPtr pScrn,
- int left, int top, int right, int bottom)
-
-void DisableClipping (ScrnInfoPtr pScrn)
-
- When SetClippingRectangle is called, all hardware rendering
- following it should be clipped to the rectangle specified
- until DisableClipping is called.
-
- The ClippingFlags field indicates which operations this sort
- of Set/Disable pairing can be used with. Any of the following
- flags may be OR'd together.
-
- HARDWARE_CLIP_SCREEN_TO_SCREEN_COLOR_EXPAND
- HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY
- HARDWARE_CLIP_MONO_8x8_FILL
- HARDWARE_CLIP_COLOR_8x8_FILL
- HARDWARE_CLIP_SOLID_FILL
- HARDWARE_CLIP_DASHED_LINE
- HARDWARE_CLIP_SOLID_LINE
-
-
-
-3) XAA PIXMAP CACHE
-
- /* NOTE: XAA has no knowledge of framebuffer particulars so until
- the framebuffer is able to render into offscreen memory, usage
- of the pixmap cache requires that the driver provide ImageWrite
- routines or a WritePixmap or WritePixmapToCache replacement so
- that patterns can even be placed in the cache.
-
- ADDENDUM: XAA can now load the pixmap cache without requiring
- that the driver supply an ImageWrite function, but this can
- only be done on linear framebuffers. If you have a linear
- framebuffer, set LINEAR_FRAMEBUFFER in the XAAInfoRec.Flags
- field and XAA will then be able to upload pixmaps into the
- cache without the driver providing functions to do so.
- */
-
-
- The XAA pixmap cache provides a mechanism for caching of patterns
- in offscreen video memory so that tiled fills and in some cases
- stippling can be done by blitting the source patterns from offscreen
- video memory. The pixmap cache also provides the mechanism for caching
- of 8x8 color and mono hardware patterns. Any unused offscreen video
- memory gets used for the pixmap cache and that information is
- provided by the XFree86 Offscreen Memory Manager. XAA registers a
- callback with the manager so that it can be informed of any changes
- in the offscreen memory configuration. The driver writer does not
- need to deal with any of this since it is all automatic. The driver
- merely needs to initialize the Offscreen Memory Manager as described
- in the DESIGN document and set the PIXMAP_CACHE flag in the
- XAAInfoRec.Flags field. The Offscreen Memory Manager initialization
- must occur before XAA is initialized or else pixmap cache
- initialization will fail.
-
- PixmapCacheFlags is an XAAInfoRec field which allows the driver to
- control pixmap cache behavior to some extent. Currently only one
- flag is defined:
-
- DO_NOT_BLIT_STIPPLES
-
- This indicates that the stippling should not be done by blitting
- from the pixmap cache. This does not apply to 8x8 pattern fills.
-
-
- CachePixelGranularity is an optional field. If the hardware requires
- that a 8x8 patterns have some particular pixel alignment it should
- be reflected in this field. Ignoring this field or setting it to
- zero or one means there are no alignment issues.
-
-
-4) OFFSCREEN PIXMAPS
-
- XAA has the ability to store pixmap drawables in offscreen video
- memory and render into them with full hardware acceleration. Placement
- of pixmaps in the cache is done automatically on a first-come basis and
- only if there is room. To enable this feature, set the OFFSCREEN_PIXMAPS
- flag in the XAAInfoRec.Flags field. This is only available when a
- ScreenToScreenCopy function is provided, when the Offscreen memory
- manager has been initialized and when the LINEAR_FRAMEBUFFER flag is
- also set.
-
- int maxOffPixWidth
- int maxOffPixHeight
-
- These two fields allow the driver to limit the maximum dimensions
- of an offscreen pixmap. If one of these is not set, it is assumed
- that there is no limit on that dimension. Note that if an offscreen
- pixmap with a particular dimension is allowed, then your driver will be
- expected to render primitives as large as that pixmap.
-
-$XFree86: xc/programs/Xserver/hw/xfree86/xaa/XAA.HOWTO,v 1.12 2000/04/12 14:44:42 tsi Exp $
+
+
+ XAA.HOWTO
+
+ This file describes how to add basic XAA support to a chipset driver.
+
+0) What is XAA
+1) XAA Initialization and Shutdown
+2) The Primitives
+ 2.0 Generic Flags
+ 2.1 Screen to Screen Copies
+ 2.2 Solid Fills
+ 2.3 Solid Lines
+ 2.4 Dashed Lines
+ 2.5 Color Expand Fills
+ 2.5.1 Screen to Screen Color Expansion
+ 2.5.2 CPU to Screen Color Expansion
+ 2.5.2.1 The Direct Method
+ 2.5.2.2 The Indirect Method
+ 2.6 8x8 Mono Pattern Fills
+ 2.7 8x8 Color Pattern Fills
+ 2.8 Image Writes
+ 2.8.1 The Direct Method
+ 2.8.2 The Indirect Method
+ 2.9 Clipping
+3) The Pixmap Cache
+4) Offscreen Pixmaps
+
+/********************************************************************/
+
+0) WHAT IS XAA
+
+ XAA (the XFree86 Acceleration Architecture) is a device dependent
+layer that encapsulates the unaccelerated framebuffer rendering layer,
+intercepting rendering commands sent to it from higher levels of the
+server. For rendering tasks where hardware acceleration is not
+possible, XAA allows the requests to proceed to the software rendering
+code. Otherwise, XAA breaks the sometimes complicated X primitives
+into simpler primitives more suitable for hardware acceleration and
+will use accelerated functions exported by the chipset driver to
+render these.
+
+ XAA provides a simple, easy to use driver interface that allows
+the driver to communicate its acceleration capabilities and restrictions
+back to XAA. XAA will use the information provided by the driver
+to determine whether or not acceleration will be possible for a
+particular X primitive.
+
+
+
+1) XAA INITIALIZATION AND SHUTDOWN
+
+ All relevant prototypes and defines are in xaa.h.
+
+ To Initialize the XAA layer, the driver should allocate an XAAInfoRec
+via XAACreateInfoRec(), fill it out as described in this document
+and pass it to XAAInit(). XAAInit() must be called _after_ the
+framebuffer initialization (usually cfb?ScreenInit or similar) since
+it is "wrapping" that layer. XAAInit() should be called _before_ the
+cursor initialization (usually miDCInitialize) since the cursor
+layer needs to "wrap" all the rendering code including XAA.
+
+ When shutting down, the driver should free the XAAInfoRec
+structure in its CloseScreen function via XAADestroyInfoRec().
+The prototypes for the functions mentioned above are as follows:
+
+ XAAInfoRecPtr XAACreateInfoRec(void);
+ Bool XAAInit(ScreenPtr, XAAInfoRecPtr);
+ void XAADestroyInfoRec(XAAInfoRec);
+
+ The driver informs XAA of it's acceleration capablities by
+filling out an XAAInfoRec structure and passing it to XAAInit().
+The XAAInfoRec structure contains many fields, most of which are
+function pointers and flags. Each primitive will typically have
+two functions and a set of flags associated with it, but it may
+have more. These two functions are the "SetupFor" and "Subsequent"
+functions. The "SetupFor" function tells the driver that the
+hardware should be initialized for a particular type of graphics
+operation. After the "SetupFor" function, one or more calls to the
+"Subsequent" function will be made to indicate that an instance
+of the particular primitive should be rendered by the hardware.
+The details of each instance (width, height, etc...) are given
+with each "Subsequent" function. The set of flags associated
+with each primitive lets the driver tell XAA what its hardware
+limitations are (eg. It doesn't support a planemask, it can only
+do one of the raster-ops, etc...).
+
+ Of the XAAInfoRec fields, one is required. This is the
+Sync function. XAA initialization will fail if this function
+is not provided.
+
+void Sync(ScrnInfoPtr pScrn) /* Required */
+
+ Sync will be called when XAA needs to be certain that all
+ graphics coprocessor operations are finished, such as when
+ the framebuffer must be written to or read from directly
+ and it must be certain that the accelerator will not be
+ overwriting the area of interest.
+
+ One needs to make certain that the Sync function not only
+ waits for the accelerator fifo to empty, but that it waits for
+ the rendering of that last operation to complete.
+
+ It is guaranteed that no direct framebuffer access will
+ occur after a "SetupFor" or "Subsequent" function without
+ the Sync function being called first.
+
+
+
+2) THE PRIMITIVES
+
+2.0 Generic Flags
+
+ Each primitive type has a set of flags associated with it which
+allow the driver to tell XAA what the hardware limitations are.
+The common ones are as follows:
+
+/* Foreground, Background, rop and planemask restrictions */
+
+ GXCOPY_ONLY
+
+ This indicates that the accelerator only supports GXcopy
+ for the particular primitive.
+
+ ROP_NEEDS_SOURCE
+
+ This indicates that the accelerator doesn't supports a
+ particular primitive with rops that don't involve the source.
+ These rops are GXclear, GXnoop, GXinvert and GXset. If neither
+ this flag nor GXCOPY_ONLY is defined, it is assumed that the
+ accelerator supports all 16 raster operations (rops) for that
+ primitive.
+
+ NO_PLANEMASK
+
+ This indicates that the accelerator does not support a hardware
+ write planemask for the particular primitive.
+
+ RGB_EQUAL
+
+ This indicates that the particular primitive requires the red,
+ green and blue bytes of the foreground color (and background color,
+ if applicable) to be equal. This is useful for 24bpp when a graphics
+ coprocessor is used in 8bpp mode, which is not uncommon in older
+ hardware since some have no support for or only limited support for
+ acceleration at 24bpp. This way, many operations will be accelerated
+ for the common case of "grayscale" colors. This flag should only
+ be used in 24bpp.
+
+ In addition to the common ones listed above which are possible for
+nearly all primitives, each primitive may have its own flags specific
+to that primitive. If such flags exist they are documented in the
+descriptions of those primitives below.
+
+
+
+
+2.1 Screen to Screen Copies
+
+ The SetupFor and Subsequent ScreenToScreenCopy functions provide
+ an interface for copying rectangular areas from video memory to
+ video memory. To accelerate this primitive the driver should
+ provide both the SetupFor and Subsequent functions and indicate
+ the hardware restrictions via the ScreenToScreenCopyFlags. The
+ NO_PLANEMASK, GXCOPY_ONLY and ROP_NEEDS_SOURCE flags as described
+ in Section 2.0 are valid as well as the following:
+
+ NO_TRANSPARENCY
+
+ This indicates that the accelerator does not support skipping
+ of color keyed pixels when copying from the source to the destination.
+
+ TRANSPARENCY_GXCOPY_ONLY
+
+ This indicates that the accelerator supports skipping of color keyed
+ pixels only when the rop is GXcopy.
+
+ ONLY_LEFT_TO_RIGHT_BITBLT
+
+ This indicates that the hardware only accepts blitting when the
+ x direction is positive.
+
+ ONLY_TWO_BITBLT_DIRECTIONS
+
+ This indicates that the hardware can only cope with blitting when
+ the direction of x is the same as the direction in y.
+
+
+void SetupForScreenToScreenCopy( ScrnInfoPtr pScrn,
+ int xdir, int ydir,
+ int rop,
+ unsigned int planemask,
+ int trans_color )
+
+ When this is called, SubsequentScreenToScreenCopy will be called
+ one or more times directly after. If ydir is 1, then the accelerator
+ should copy starting from the top (minimum y) of the source and
+ proceed downward. If ydir is -1, then the accelerator should copy
+ starting from the bottom of the source (maximum y) and proceed
+ upward. If xdir is 1, then the accelerator should copy each
+ y scanline starting from the leftmost pixel of the source. If
+ xdir is -1, it should start from the rightmost pixel.
+ If trans_color is not -1 then trans_color indicates that the
+ accelerator should not copy pixels with the color trans_color
+ from the source to the destination, but should skip them.
+ Trans_color is always -1 if the NO_TRANSPARENCY flag is set.
+
+
+void SubsequentScreenToScreenCopy(ScrnInfoPtr pScrn,
+ int x1, int y1,
+ int x2, int y2,
+ int width, int height)
+
+ Copy a rectangle "width" x "height" from the source (x1,y1) to the
+ destination (x2,y2) using the parameters passed by the last
+ SetupForScreenToScreenCopy call. (x1,y1) and (x2,y2) always denote
+ the upper left hand corners of the source and destination regardless
+ of which xdir and ydir values are given by SetupForScreenToScreenCopy.
+
+
+
+2.2 Solid Fills
+
+ The SetupFor and Subsequent SolidFill(Rect/Trap) functions provide
+ an interface for filling rectangular areas of the screen with a
+ foreground color. To accelerate this primitive the driver should
+ provide both the SetupForSolidFill and SubsequentSolidFillRect
+ functions and indicate the hardware restrictions via the SolidFillFlags.
+ The driver may optionally provide a SubsequentSolidFillTrap if
+ it is capable of rendering the primitive correctly.
+ The GXCOPY_ONLY, ROP_NEEDS_SOURCE, NO_PLANEMASK and RGB_EQUAL flags
+ as described in Section 2.0 are valid.
+
+
+void SetupForSolidFill(ScrnInfoPtr pScrn,
+ int color, int rop, unsigned int planemask)
+
+ SetupForSolidFill indicates that any combination of the following
+ may follow it.
+
+ SubsequentSolidFillRect
+ SubsequentSolidFillTrap
+
+
+
+void SubsequentSolidFillRect(ScrnInfoPtr pScrn, int x, int y, int w, int h)
+
+ Fill a rectangle of dimensions "w" by "h" with origin at (x,y)
+ using the color, rop and planemask given by the last
+ SetupForSolidFill call.
+
+void SubsequentSolidFillTrap(ScrnInfoPtr pScrn, int y, int h,
+ int left, int dxL, int dyL, int eL,
+ int right, int dxR, int dyR, int eR)
+
+ These parameters describe a trapezoid via a version of
+ Bresenham's parameters. "y" is the top line. "h" is the
+ number of spans to be filled in the positive Y direction.
+ "left" and "right" indicate the starting X values of the
+ left and right edges. dy/dx describes the edge slope.
+ These are not the deltas between the beginning and ending
+ points on an edge. They merely describe the slope. "e" is
+ the initial error term. It's the relationships between dx,
+ dy and e that define the edge.
+ If your engine does not do bresenham trapezoids or does
+ not allow the programmer to specify the error term then
+ you are not expected to be able to accelerate them.
+
+
+2.3 Solid Lines
+
+ XAA provides an interface for drawing thin lines. In order to
+ draw X lines correctly a high degree of accuracy is required.
+ This usually limits line acceleration to hardware which has a
+ Bresenham line engine, though depending on the algorithm used,
+ other line engines may come close if they accept 16 bit line
+ deltas. XAA has both a Bresenham line interface and a two-point
+ line interface for drawing lines of arbitrary orientation.
+ Additionally there is a SubsequentSolidHorVertLine which will
+ be used for all horizontal and vertical lines. Horizontal and
+ vertical lines are handled separately since hardware that doesn't
+ have a line engine (or has one that is unusable due to precision
+ problems) can usually draw these lines by some other method such
+ as drawing them as thin rectangles. Even for hardware that can
+ draw arbitrary lines via the Bresenham or two-point interfaces,
+ the SubsequentSolidHorVertLine is used for horizontal and vertical
+ lines since most hardware is able to render the horizontal lines
+ and sometimes the vertical lines faster by other methods (Hint:
+ try rendering horizontal lines as flattened rectangles). If you have
+ not provided a SubsequentSolidHorVertLine but you have provided
+ Bresenham or two-point lines, a SubsequentSolidHorVertLine function
+ will be supplied for you.
+
+ The flags field associated with Solid Lines is SolidLineFlags and
+ the GXCOPY_ONLY, ROP_NEEDS_SOURCE, NO_PLANEMASK and RGB_EQUAL flags as
+ described in Section 2.0 are valid restrictions.
+
+ Some line engines have line biases hardcoded to comply with
+ Microsoft line biasing rules. A tell-tale sign of this is the
+ hardware lines not matching the software lines in the zeroth and
+ fourth octants. The driver can set the flag:
+
+ MICROSOFT_ZERO_LINE_BIAS
+
+ in the AccelInfoRec.Flags field to adjust the software lines to
+ match the hardware lines. This is in the generic flags field
+ rather than the SolidLineFlags since this flag applies to all
+ software zero-width lines on the screen and not just the solid ones.
+
+
+void SetupForSolidLine(ScrnInfoPtr pScrn,
+ int color, int rop, unsigned int planemask)
+
+ SetupForSolidLine indicates that any combination of the following
+ may follow it.
+
+ SubsequentSolidBresenhamLine
+ SubsequentSolidTwoPointLine
+ SubsequentSolidHorVertLine
+
+
+void SubsequentSolidHorVertLine( ScrnInfoPtr pScrn,
+ int x, int y, int len, int dir )
+
+ All vertical and horizontal solid thin lines are rendered with
+ this function. The line starts at coordinate (x,y) and extends
+ "len" pixels inclusive. In the direction indicated by "dir."
+ The direction is either DEGREES_O or DEGREES_270. That is, it
+ always extends to the right or down.
+
+
+
+void SubsequentSolidTwoPointLine(ScrnInfoPtr pScrn,
+ int x1, int y1, int x2, int y2, int flags)
+
+ Draw a line from (x1,y1) to (x2,y2). If the flags field contains
+ the flag OMIT_LAST, the last pixel should not be drawn. Otherwise,
+ the pixel at (x2,y2) should be drawn.
+
+ If you use the TwoPoint line interface there is a good possibility
+ that your line engine has hard-coded line biases that do not match
+ the default X zero-width lines. If so, you may need to set the
+ MICROSOFT_ZERO_LINE_BIAS flag described above. Note that since
+ any vertex in the 16-bit signed coordinate system is valid, your
+ line engine is expected to handle 16-bit values if you have hardware
+ line clipping enabled. If your engine cannot handle 16-bit values,
+ you should not use hardware line clipping.
+
+
+void SubsequentSolidBresenhamLine(ScrnInfoPtr pScrn,
+ int x, int y, int major, int minor, int err, int len, int octant)
+
+ "X" and "y" are the starting point of the line. "Major" and "minor"
+ are the major and minor step constants. "Err" is the initial error
+ term. "Len" is the number of pixels to be drawn (inclusive). "Octant"
+ can be any combination of the following flags OR'd together:
+
+ Y_MAJOR Y is the major axis (X otherwise)
+ X_DECREASING The line is drawn from right to left
+ Y_DECREASING The line is drawn from bottom to top
+
+ The major, minor and err terms are the "raw" Bresenham parameters
+ consistent with a line engine that does:
+
+ e = err;
+ while(len--) {
+ DRAW_POINT(x,y);
+ e += minor;
+ if(e >= 0) {
+ e -= major;
+ TAKE_ONE_STEP_ALONG_MINOR_AXIS;
+ }
+ TAKE_ONE_STEP_ALONG_MAJOR_AXIS;
+ }
+
+ IBM 8514 style Bresenham line interfaces require their parameters
+ modified in the following way:
+
+ Axial = minor;
+ Diagonal = minor - major;
+ Error = minor + err;
+
+SolidBresenhamLineErrorTermBits
+
+ This field allows the driver to tell XAA how many bits large its
+ Bresenham parameter registers are. Many engines have registers that
+ only accept 12 or 13 bit Bresenham parameters, and the parameters
+ for clipped lines may overflow these if they are not scaled down.
+ If this field is not set, XAA will assume the engine can accomodate
+ 16 bit parameters, otherwise, it will scale the parameters to the
+ size specified.
+
+
+2.4 Dashed Lines
+
+ The same degree of accuracy required by the solid lines is required
+ for drawing dashed lines as well. The dash pattern itself is a
+ buffer of binary data where ones are expanded into the foreground
+ color and zeros either correspond to the background color or
+ indicate transparency depending on whether or not DoubleDash or
+ OnOffDashes are being drawn.
+
+ The flags field associated with dashed Lines is DashedLineFlags and
+ the GXCOPY_ONLY, ROP_NEEDS_SOURCE, NO_PLANEMASK and RGB_EQUAL flags as
+ described in Section 2.0 are valid restrictions. Additionally, the
+ following flags are valid:
+
+ NO_TRANSPARENCY
+
+ This indicates that the driver cannot support dashed lines
+ with transparent backgrounds (OnOffDashes).
+
+ TRANSPARENCY_ONLY
+
+ This indicates that the driver cannot support dashes with
+ both a foreground and background color (DoubleDashes).
+
+ LINE_PATTERN_POWER_OF_2_ONLY
+
+ This indicates that only patterns with a power of 2 length
+ can be accelerated.
+
+ LINE_PATTERN_LSBFIRST_MSBJUSTIFIED
+ LINE_PATTERN_LSBFIRST_LSBJUSTIFIED
+ LINE_PATTERN_MSBFIRST_MSBJUSTIFIED
+ LINE_PATTERN_MSBFIRST_LSBJUSTIFIED
+
+ These describe how the line pattern should be packed.
+ The pattern buffer is DWORD padded. LSBFIRST indicates
+ that the pattern runs from the LSB end to the MSB end.
+ MSBFIRST indicates that the pattern runs from the MSB end
+ to the LSB end. When the pattern does not completely fill
+ the DWORD padded buffer, the pattern will be justified
+ towards the MSB or LSB end based on the flags above.
+
+
+ The following field indicates the maximum length dash pattern that
+ should be accelerated.
+
+ int DashPatternMaxLength
+
+
+void SetupForDashedLine(ScrnInfoPtr pScrn,
+ int fg, int bg, int rop, unsigned int planemask,
+ int length, unsigned char *pattern)
+
+
+ SetupForDashedLine indicates that any combination of the following
+ may follow it.
+
+ SubsequentDashedBresenhamLine
+ SubsequentDashedTwoPointLine
+
+ If "bg" is -1, then the background (pixels corresponding to clear
+ bits in the pattern) should remain unmodified. "Bg" indicates the
+ background color otherwise. "Length" indicates the length of
+ the pattern in bits and "pattern" points to the DWORD padded buffer
+ holding the pattern which has been packed according to the flags
+ set above.
+
+
+void SubsequentDashedTwoPointLine( ScrnInfoPtr pScrn,
+ int x1, int y1, int x2, int y2, int flags, int phase)
+
+void SubsequentDashedBresenhamLine(ScrnInfoPtr pScrn,
+ int x1, int y1, int major, int minor, int err, int len, int octant,
+ int phase)
+
+ These are the same as the SubsequentSolidTwoPointLine and
+ SubsequentBresenhamLine functions except for the addition
+ of the "phase" field which indicates the offset into the dash
+ pattern that the pixel at (x1,y1) corresponds to.
+
+ As with the SubsequentBresenhamLine, there is an
+
+ int DashedBresenhamLineErrorTermBits
+
+ field which indicates the size of the error term registers
+ used with dashed lines. This is usually the same value as
+ the field for the solid lines (because it's usually the same
+ register).
+
+
+
+2.5 Color Expansion Fills
+
+ When filling a color expansion rectangle, the accelerator
+ paints each pixel depending on whether or not a bit in a
+ corresponding bitmap is set or clear. Opaque expansions are
+ when a set bit corresponds to the foreground color and a clear
+ bit corresponds to the background color. A transparent expansion
+ is when a set bit corresponds to the foreground color and a
+ clear bit indicates that the pixel should remain unmodified.
+
+ The graphics accelerator usually has access to the source
+ bitmap in one of two ways: 1) the bitmap data is sent serially
+ to the accelerator by the CPU through some memory mapped aperture
+ or 2) the accelerator reads the source bitmap out of offscreen
+ video memory. Some types of primitives are better suited towards
+ one method or the other. Type 2 is useful for reusable patterns
+ such as stipples which can be cached in offscreen memory. The
+ aperature method can be used for stippling but the CPU must pass
+ the data across the bus each time a stippled fill is to be performed.
+ For expanding 1bpp client pixmaps or text strings to the screen,
+ the aperature method is usually superior because the intermediate
+ copy in offscreen memory needed by the second method would only be
+ used once. Unfortunately, many accelerators can only do one of these
+ methods and not both.
+
+ XAA provides both ScreenToScreen and CPUToScreen color expansion
+ interfaces for doing color expansion fills. The ScreenToScreen
+ functions can only be used with hardware that supports reading
+ of source bitmaps from offscreen video memory, and these are only
+ used for cacheable patterns such as stipples. There are two
+ variants of the CPUToScreen routines - a direct method intended
+ for hardware that has a transfer aperature, and an indirect method
+ intended for hardware without transfer aperatures or hardware
+ with unusual transfer requirements. Hardware that can only expand
+ bitmaps from video memory should supply ScreenToScreen routines
+ but also ScanlineCPUToScreen (indirect) routines to optimize transfers
+ of non-cacheable data. Hardware that can only accept source bitmaps
+ through an aperature should supply CPUToScreen (or ScanlineCPUToScreen)
+ routines. Hardware that can do both should provide both ScreenToScreen
+ and CPUToScreen routines.
+
+ For both ScreenToScreen and CPUToScreen interfaces, the GXCOPY_ONLY,
+ ROP_NEEDS_SOURCE, NO_PLANEMASK and RGB_EQUAL flags described in
+ Section 2.0 are valid as well as the following:
+
+ /* bit order requirements (one of these must be set) */
+
+ BIT_ORDER_IN_BYTE_LSBFIRST
+
+ This indicates that least significant bit in each byte of the source
+ data corresponds to the leftmost of that block of 8 pixels. This
+ is the prefered format.
+
+ BIT_ORDER_IN_BYTE_MSBFIRST
+
+ This indicates that most significant bit in each byte of the source
+ data corresponds to the leftmost of that block of 8 pixels.
+
+ /* transparency restrictions */
+
+ NO_TRANSPARENCY
+
+ This indicates that the accelerator cannot do a transparent expansion.
+
+ TRANSPARENCY_ONLY
+
+ This indicates that the accelerator cannot do an opaque expansion.
+ In cases where where the background needs to be filled, XAA will
+ render the primitive in two passes when using the CPUToScreen
+ interface, but will not do so with the ScreenToScreen interface
+ since that would require caching of two patterns. Some
+ ScreenToScreen hardware may be able to render two passes at the
+ driver level and remove the TRANSPARENCY_ONLY restriction if
+ it can render pixels corresponding to the zero bits.
+
+
+
+2.5.1 Screen To Screen Color Expansion
+
+ The ScreenToScreenColorExpandFill routines provide an interface
+ for doing expansion blits from source patterns stored in offscreen
+ video memory.
+
+ void SetupForScreenToScreenColorExpandFill (ScrnInfoPtr pScrn,
+ int fg, int bg,
+ int rop, unsigned int planemask)
+
+
+ Ones in the source bitmap will correspond to the fg color.
+ Zeros in the source bitmap will correspond to the bg color
+ unless bg = -1. In that case the pixels corresponding to the
+ zeros in the bitmap shall be left unmodified by the accelerator.
+
+ For hardware that doesn't allow an easy implementation of skipleft, the
+ driver can replace CacheMonoStipple function with one that stores multiple
+ rotated copies of the stipple and select between them. In this case the
+ driver should set CacheColorExpandDensity to tell XAA how many copies of
+ the pattern are stored in the width of a cache slot. For instance if the
+ hardware can specify the starting address in bytes, then 8 rotated copies
+ of the stipple are needed and CacheColorExpandDensity should be set to 8.
+
+ void SubsequentScreenToScreenColorExpandFill( ScrnInfoPtr pScrn,
+ int x, int y, int w, int h,
+ int srcx, int srcy, int offset )
+
+
+ Fill a rectangle "w" x "h" at location (x,y). The source pitch
+ between scanlines is the framebuffer pitch (pScrn->displayWidth
+ pixels) and srcx and srcy indicate the start of the source pattern
+ in units of framebuffer pixels. "Offset" indicates the bit offset
+ into the pattern that corresponds to the pixel being painted at
+ "x" on the screen. Some hardware accepts source coordinates in
+ units of bits which makes implementation of the offset trivial.
+ In that case, the bit address of the source bit corresponding to
+ the pixel painted at (x,y) would be:
+
+ (srcy * pScrn->displayWidth + srcx) * pScrn->bitsPerPixel + offset
+
+ It should be noted that the offset assumes LSBFIRST hardware.
+ For MSBFIRST hardware, the driver may need to implement the
+ offset by bliting only from byte boundaries and hardware clipping.
+
+
+
+2.5.2 CPU To Screen Color Expansion
+
+
+ The CPUToScreenColorExpandFill routines provide an interface for
+ doing expansion blits from source patterns stored in system memory.
+ There are two varieties of this primitive, a CPUToScreenColorExpandFill
+ and a ScanlineCPUToScreenColorExpandFill. With the
+ CPUToScreenColorExpandFill method, the source data is sent serially
+ through a memory mapped aperature. With the Scanline version, the
+ data is rendered scanline at a time into intermediate buffers with
+ a call to SubsequentColorExpandScanline following each scanline.
+
+ These two methods have separate flags fields, the
+ CPUToScreenColorExpandFillFlags and ScanlineCPUToScreenColorExpandFillFlags
+ respectively. Flags specific to one method or the other are described
+ in sections 2.5.2.1 and 2.5.2.2 but for both cases the bit order and
+ transparency restrictions listed at the beginning of section 2.5 are
+ valid as well as the following:
+
+ /* clipping (optional) */
+
+ LEFT_EDGE_CLIPPING
+
+ This indicates that the accelerator supports omission of up to
+ 31 pixels on the left edge of the rectangle to be filled. This
+ is beneficial since it allows transfer of the source bitmap to
+ always occur from DWORD boundaries.
+
+ LEFT_EDGE_CLIPPING_NEGATIVE_X
+
+ This flag indicates that the accelerator can render color expansion
+ rectangles even if the value of x origin is negative (off of
+ the screen on the left edge).
+
+ /* misc */
+
+ TRIPLE_BITS_24BPP
+
+ When enabled (must be in 24bpp mode), color expansion functions
+ are expected to require three times the amount of bits to be
+ transferred so that 24bpp grayscale colors can be used with color
+ expansion in 8bpp coprocessor mode. Each bit is expanded to 3
+ bits when writing the monochrome data.
+
+
+ 2.5.1 The Direct Method
+
+
+ Using the direct method of color expansion XAA will send all
+ bitmap data to the accelerator serially through an memory mapped
+ transfer window defined by the following two fields:
+
+ unsigned char *ColorExpandBase
+
+ This indicates the memory address of the beginning of the aperture.
+
+ int ColorExpandRange
+
+ This indicates the size in bytes of the aperture.
+
+ The driver should specify how the transfered data should be padded.
+ There are options for both the padding of each Y scanline and for the
+ total transfer to the aperature.
+ One of the following two flags must be set:
+
+ CPU_TRANSFER_PAD_DWORD
+
+ This indicates that the total transfer (sum of all scanlines) sent
+ to the aperature must be DWORD padded. This is the default behavior.
+
+ CPU_TRANSFER_PAD_QWORD
+
+ This indicates that the total transfer (sum of all scanlines) sent
+ to the aperature must be QWORD padded. With this set, XAA will send
+ an extra DWORD to the aperature when needed to ensure that only
+ an even number of DWORDs are sent.
+
+ And then there are the flags for padding of each scanline:
+
+ SCANLINE_PAD_DWORD
+
+ This indicates that each Y scanline should be DWORD padded.
+ This is the only option available and is the default.
+
+ Finally, there is the CPU_TRANSFER_BASE_FIXED flag which indicates
+ that the aperture is a single register rather than a range of
+ registers, and XAA should write all of the data to the first DWORD.
+ If the ColorExpandRange is not large enough to accomodate scanlines
+ the width of the screen, this option will be forced. That is, the
+ ColorExpandRange must be:
+
+ ((virtualX + 31)/32) * 4 bytes or more.
+
+ ((virtualX + 62)/32 * 4) if LEFT_EDGE_CLIPPING_NEGATIVE_X is set.
+
+ If the TRIPLE_BITS_24BPP flag is set, the required area should be
+ multiplied by three.
+
+
+void SetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
+ int fg, int bg,
+ int rop,
+ unsigned int planemask)
+
+
+
+ Ones in the source bitmap will correspond to the fg color.
+ Zeros in the source bitmap will correspond to the bg color
+ unless bg = -1. In that case the pixels corresponding to the
+ zeros in the bitmap shall be left unmodified by the accelerator.
+
+
+void SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
+ int x, int y, int w, int h,
+ int skipleft )
+
+ When this function is called, the accelerator should be setup
+ to fill a rectangle of dimension "w" by "h" with origin at (x,y)
+ in the fill style prescribed by the last call to
+ SetupForCPUToScreenColorExpandFill. XAA will pass the data to
+ the aperture immediately after this function is called. If the
+ skipleft is non-zero (and LEFT_EDGE_CLIPPING has been enabled), then
+ the accelerator _should_not_ render skipleft pixels on the leftmost
+ edge of the rectangle. Some engines have an alignment feature
+ like this built in, some others can do this using a clipping
+ window.
+
+ It can be arranged for XAA to call Sync() after it is through
+ calling the Subsequent function by setting SYNC_AFTER_COLOR_EXPAND
+ in the CPUToScreenColorExpandFillFlags. This can provide the driver
+ with an oportunity to reset a clipping window if needed.
+
+
+2.5.2 The Indirect Method
+
+ Using the indirect method, XAA will render the bitmap data scanline
+ at a time to one or more buffers. These buffers may be memory
+ mapped apertures or just intermediate storage.
+
+ int NumScanlineColorExpandBuffers
+
+ This indicates the number of buffers available.
+
+ unsigned char **ScanlineColorExpandBuffers
+
+ This is an array of pointers to the memory locations of each buffer.
+ Each buffer is expected to be large enough to accommodate scanlines
+ the width of the screen. That is:
+
+ ((virtualX + 31)/32) * 4 bytes or more.
+
+ ((virtualX + 62)/32 * 4) if LEFT_EDGE_CLIPPING_NEGATIVE_X is set.
+
+ Scanlines are always DWORD padded.
+ If the TRIPLE_BITS_24BPP flag is set, the required area should be
+ multiplied by three.
+
+
+void SetupForScanlineCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
+ int fg, int bg,
+ int rop,
+ unsigned int planemask)
+
+ Ones in the source bitmap will correspond to the fg color.
+ Zeros in the source bitmap will correspond to the bg color
+ unless bg = -1. In that case the pixels corresponding to the
+ zeros in the bitmap shall be left unmodified by the accelerator.
+
+
+void SubsequentScanlineCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
+ int x, int y, int w, int h,
+ int skipleft )
+
+void SubsequentColorExpandScanline(ScrnInfoPtr pScrn, int bufno)
+
+
+ When SubsequentScanlineCPUToScreenColorExpandFill is called, XAA
+ will begin transfering the source data scanline at a time, calling
+ SubsequentColorExpandScanline after each scanline. If more than
+ one buffer is available, XAA will cycle through the buffers.
+ Subsequent scanlines will use the next buffer and go back to the
+ buffer 0 again when the last buffer is reached. The index into
+ the ScanlineColorExpandBuffers array is presented as "bufno"
+ with each SubsequentColorExpandScanline call.
+
+ The skipleft field is the same as for the direct method.
+
+ The indirect method can be use to send the source data directly
+ to a memory mapped aperture represented by a single color expand
+ buffer, scanline at a time, but more commonly it is used to place
+ the data into offscreen video memory so that the accelerator can
+ blit it to the visible screen from there. In the case where the
+ accelerator permits rendering into offscreen video memory while
+ the accelerator is active, several buffers can be used so that
+ XAA can be placing source data into the next buffer while the
+ accelerator is blitting the current buffer. For cases where
+ the accelerator requires some special manipulation of the source
+ data first, the buffers can be in system memory. The CPU can
+ manipulate these buffers and then send the data to the accelerator.
+
+
+
+2.6 8x8 Mono Pattern Fills
+
+ XAA provides support for two types of 8x8 hardware patterns -
+ "Mono" patterns and "Color" patterns. Mono pattern data is
+ 64 bits of color expansion data with ones indicating the
+ foreground color and zeros indicating the background color.
+ The source bitmaps for the 8x8 mono patterns can be presented
+ to the graphics accelerator in one of two ways. They can be
+ passed as two DWORDS to the 8x8 mono pattern functions or
+ they can be cached in offscreen memory and their locations
+ passed to the 8x8 mono pattern functions. In addition to the
+ GXCOPY_ONLY, ROP_NEEDS_SOURCE, NO_PLANEMASK and RGB_EQUAL flags
+ defined in Section 2.0, the following are defined for the
+ Mono8x8PatternFillFlags:
+
+ HARDWARE_PATTERN_PROGRAMMED_BITS
+
+ This indicates that the 8x8 patterns should be packed into two
+ DWORDS and passed to the 8x8 mono pattern functions. The default
+ behavior is to cache the patterns in offscreen video memory and
+ pass the locations of these patterns to the functions instead.
+ The pixmap cache must be enabled for the default behavior (8x8
+ pattern caching) to work. See Section 3 for how to enable the
+ pixmap cache. The pixmap cache is not necessary for
+ HARDWARE_PATTERN_PROGRAMMED_BITS.
+
+ HARDWARE_PATTERN_PROGRAMMED_ORIGIN
+
+ If the hardware supports programmable pattern offsets then
+ this option should be set. See the table below for further
+ infomation.
+
+ HARDWARE_PATTERN_SCREEN_ORIGIN
+
+ Some hardware wants the pattern offset specified with respect to the
+ upper left-hand corner of the primitive being drawn. Other hardware
+ needs the option HARDWARE_PATTERN_SCREEN_ORIGIN set to indicate that
+ all pattern offsets should be referenced to the upper left-hand
+ corner of the screen. HARDWARE_PATTERN_SCREEN_ORIGIN is preferable
+ since this is more natural for the X-Window system and offsets will
+ have to be recalculated for each Subsequent function otherwise.
+
+ BIT_ORDER_IN_BYTE_MSBFIRST
+ BIT_ORDER_IN_BYTE_LSBFIRST
+
+ As with other color expansion routines this indicates whether the
+ most or the least significant bit in each byte from the pattern is
+ the leftmost on the screen.
+
+ TRANSPARENCY_ONLY
+ NO_TRANSPARENCY
+
+ This means the same thing as for the color expansion rect routines
+ except that for TRANSPARENCY_ONLY XAA will not render the primitive
+ in two passes since this is more easily handled by the driver.
+ It is recommended that TRANSPARENCY_ONLY hardware handle rendering
+ of opaque patterns in two passes (the background can be filled as
+ a rectangle in GXcopy) in the Subsequent function so that the
+ TRANSPARENCY_ONLY restriction can be removed.
+
+
+
+ Additional information about cached patterns...
+ For the case where HARDWARE_PATTERN_PROGRAMMED_BITS is not set and
+ the pattern must be cached in offscreen memory, the first pattern
+ starts at the cache slot boundary which is set by the
+ CachePixelGranularity field used to configure the pixmap cache.
+ One should ensure that the CachePixelGranularity reflects any
+ alignment restrictions that the accelerator may put on 8x8 pattern
+ storage locations. When HARDWARE_PATTERN_PROGRAMMED_ORIGIN is set
+ there is only one pattern stored. When this flag is not set,
+ all 64 pre-rotated copies of the pattern are cached in offscreen memory.
+ The MonoPatternPitch field can be used to specify the X position pixel
+ granularity that each of these patterns must align on. If the
+ MonoPatternPitch is not supplied, the patterns will be densely packed
+ within the cache slot. The behavior of the default XAA 8x8 pattern
+ caching mechanism to store all 8x8 patterns linearly in video memory.
+ If the accelerator needs the patterns stored in a more unusual fashion,
+ the driver will need to provide its own 8x8 mono pattern caching
+ routines for XAA to use.
+
+ The following table describes the meanings of the "patx" and "paty"
+ fields in both the SetupFor and Subsequent functions.
+
+ With HARDWARE_PATTERN_SCREEN_ORIGIN
+ -----------------------------------
+
+ HARDWARE_PATTERN_PROGRAMMED_BITS and HARDWARE_PATTERN_PROGRAMMED_ORIGIN
+
+ SetupFor: patx and paty are the first and second DWORDS of the
+ 8x8 mono pattern.
+
+ Subsequent: patx and paty are the x,y offset into that pattern.
+ All Subsequent calls will have the same offset in
+ the case of HARDWARE_PATTERN_SCREEN_ORIGIN so only
+ the offset specified by the first Subsequent call
+ after a SetupFor call will need to be observed.
+
+ HARDWARE_PATTERN_PROGRAMMED_BITS only
+
+ SetupFor: patx and paty hold the first and second DWORDS of
+ the 8x8 mono pattern pre-rotated to match the desired
+ offset.
+
+ Subsequent: These just hold the same patterns and can be ignored.
+
+ HARDWARE_PATTERN_PROGRAMMED_ORIGIN only
+
+ SetupFor: patx and paty hold the x,y coordinates of the offscreen
+ memory location where the 8x8 pattern is stored. The
+ bits are stored linearly in memory at that location.
+
+ Subsequent: patx and paty hold the offset into the pattern.
+ All Subsequent calls will have the same offset in
+ the case of HARDWARE_PATTERN_SCREEN_ORIGIN so only
+ the offset specified by the first Subsequent call
+ after a SetupFor call will need to be observed.
+
+ Neither programmed bits or origin
+
+ SetupFor: patx and paty hold the x,y coordinates of the offscreen
+ memory location where the pre-rotated 8x8 pattern is
+ stored.
+
+ Subsequent: patx and paty are the same as in the SetupFor function
+ and can be ignored.
+
+
+ Without HARDWARE_PATTERN_SCREEN_ORIGIN
+ --------------------------------------
+
+ HARDWARE_PATTERN_PROGRAMMED_BITS and HARDWARE_PATTERN_PROGRAMMED_ORIGIN
+
+ SetupFor: patx and paty are the first and second DWORDS of the
+ 8x8 mono pattern.
+
+ Subsequent: patx and paty are the x,y offset into that pattern.
+
+ HARDWARE_PATTERN_PROGRAMMED_BITS only
+
+ SetupFor: patx and paty holds the first and second DWORDS of
+ the unrotated 8x8 mono pattern. This can be ignored.
+
+ Subsequent: patx and paty hold the rotated 8x8 pattern to be
+ rendered.
+
+ HARDWARE_PATTERN_PROGRAMMED_ORIGIN only
+
+ SetupFor: patx and paty hold the x,y coordinates of the offscreen
+ memory location where the 8x8 pattern is stored. The
+ bits are stored linearly in memory at that location.
+
+ Subsequent: patx and paty hold the offset into the pattern.
+
+ Neither programmed bits or origin
+
+ SetupFor: patx and paty hold the x,y coordinates of the offscreen
+ memory location where the unrotated 8x8 pattern is
+ stored. This can be ignored.
+
+ Subsequent: patx and paty hold the x,y coordinates of the
+ rotated 8x8 pattern to be rendered.
+
+
+
+void SetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty,
+ int fg, int bg, int rop, unsigned int planemask)
+
+ SetupForMono8x8PatternFill indicates that any combination of the
+ following may follow it.
+
+ SubsequentMono8x8PatternFillRect
+ SubsequentMono8x8PatternFillTrap
+
+ The fg, bg, rop and planemask fields have the same meaning as the
+ ones used for the other color expansion routines. Patx's and paty's
+ meaning can be determined from the table above.
+
+
+void SubsequentMono8x8PatternFillRect( ScrnInfoPtr pScrn,
+ int patx, int paty, int x, int y, int w, int h)
+
+ Fill a rectangle of dimensions "w" by "h" with origin at (x,y)
+ using the parameters give by the last SetupForMono8x8PatternFill
+ call. The meanings of patx and paty can be determined by the
+ table above.
+
+void SubsequentMono8x8PatternFillTrap( ScrnInfoPtr pScrn,
+ int patx, int paty, int y, int h,
+ int left, int dxL, int dyL, int eL,
+ int right, int dxR, int dyR, int eR )
+
+ The meanings of patx and paty can be determined by the table above.
+ The rest of the fields have the same meanings as those in the
+ SubsequentSolidFillTrap function.
+
+
+
+2.7 8x8 Color Pattern Fills
+
+ 8x8 color pattern data is 64 pixels of full color data that
+ is stored linearly in offscreen video memory. 8x8 color patterns
+ are useful as a substitute for 8x8 mono patterns when tiling,
+ doing opaque stipples, or in the case where transperency is
+ supported, regular stipples. 8x8 color pattern fills also have
+ the additional benefit of being able to tile full color 8x8
+ patterns instead of just 2 color ones like the mono patterns.
+ However, full color 8x8 patterns aren't used very often in the
+ X Window system so you might consider passing this primitive
+ by if you already can do mono patterns, especially if they
+ require alot of cache area. Color8x8PatternFillFlags is
+ the flags field for this primitive and the GXCOPY_ONLY,
+ ROP_NEEDS_SOURCE and NO_PLANEMASK flags as described in
+ Section 2.0 are valid as well as the following:
+
+
+ HARDWARE_PATTERN_PROGRAMMED_ORIGIN
+
+ If the hardware supports programmable pattern offsets then
+ this option should be set.
+
+ HARDWARE_PATTERN_SCREEN_ORIGIN
+
+ Some hardware wants the pattern offset specified with respect to the
+ upper left-hand corner of the primitive being drawn. Other hardware
+ needs the option HARDWARE_PATTERN_SCREEN_ORIGIN set to indicate that
+ all pattern offsets should be referenced to the upper left-hand
+ corner of the screen. HARDWARE_PATTERN_SCREEN_ORIGIN is preferable
+ since this is more natural for the X-Window system and offsets will
+ have to be recalculated for each Subsequent function otherwise.
+
+ NO_TRANSPARENCY
+ TRANSPARENCY_GXCOPY_ONLY
+
+ These mean the same as for the ScreenToScreenCopy functions.
+
+
+ The following table describes the meanings of patx and paty passed
+ to the SetupFor and Subsequent fields:
+
+ HARDWARE_PATTERN_PROGRAMMED_ORIGIN && HARDWARE_PATTERN_SCREEN_ORIGIN
+
+ SetupFor: patx and paty hold the x,y location of the unrotated
+ pattern.
+
+ Subsequent: patx and paty hold the pattern offset. For the case
+ of HARDWARE_PATTERN_SCREEN_ORIGIN all Subsequent calls
+ have the same offset so only the first call will need
+ to be observed.
+
+
+ HARDWARE_PATTERN_PROGRAMMED_ORIGIN only
+
+ SetupFor: patx and paty hold the x,y location of the unrotated
+ pattern.
+
+ Subsequent: patx and paty hold the pattern offset.
+
+ HARDWARE_PATTERN_SCREEN_ORIGIN
+
+ SetupFor: patx and paty hold the x,y location of the rotated pattern.
+
+ Subsequent: patx and paty hold the same location as the SetupFor
+ function so these can be ignored.
+
+ neither flag
+
+ SetupFor: patx and paty hold the x,y location of the unrotated
+ pattern. This can be ignored.
+
+ Subsequent: patx and paty hold the x,y location of the rotated
+ pattern.
+
+ Additional information about cached patterns...
+ All 8x8 color patterns are cached in offscreen video memory so
+ the pixmap cache must be enabled to use them. The first pattern
+ starts at the cache slot boundary which is set by the
+ CachePixelGranularity field used to configure the pixmap cache.
+ One should ensure that the CachePixelGranularity reflects any
+ alignment restrictions that the accelerator may put on 8x8 pattern
+ storage locations. When HARDWARE_PATTERN_PROGRAMMED_ORIGIN is set
+ there is only one pattern stored. When this flag is not set,
+ all 64 rotations off the pattern are accessible but it is assumed
+ that the accelerator is capable of accessing data stored on 8
+ pixel boundaries. If the accelerator has stricter alignment
+ requirements than this the dirver will need to provide its own
+ 8x8 color pattern caching routines.
+
+
+void SetupForColor8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty,
+ int rop, unsigned int planemask, int trans_color)
+
+ SetupForColor8x8PatternFill indicates that any combination of the
+ following may follow it.
+
+ SubsequentColor8x8PatternFillRect
+ SubsequentColor8x8PatternFillTrap (not implemented yet)
+
+ For the meanings of patx and paty, see the table above. Trans_color
+ means the same as for the ScreenToScreenCopy functions.
+
+
+
+void SubsequentColor8x8PatternFillRect( ScrnInfoPtr pScrn,
+ int patx, int paty, int x, int y, int w, int h)
+
+ Fill a rectangle of dimensions "w" by "h" with origin at (x,y)
+ using the parameters give by the last SetupForColor8x8PatternFill
+ call. The meanings of patx and paty can be determined by the
+ table above.
+
+void SubsequentColor8x8PatternFillTrap( ScrnInfoPtr pScrn,
+ int patx, int paty, int y, int h,
+ int left, int dxL, int dyL, int eL,
+ int right, int dxR, int dyR, int eR )
+
+ For the meanings of patx and paty, see the table above.
+ The rest of the fields have the same meanings as those in the
+ SubsequentSolidFillTrap function.
+
+
+
+2.8 Image Writes
+
+ XAA provides a mechanism for transfering full color pixel data from
+ system memory to video memory through the accelerator. This is
+ useful for dealing with alignment issues and performing raster ops
+ on the data when writing it to the framebuffer. As with color
+ expansion rectangles, there is a direct and indirect method. The
+ direct method sends all data through a memory mapped aperature.
+ The indirect method sends the data to an intermediated buffer scanline
+ at a time.
+
+ The direct and indirect methods have separate flags fields, the
+ ImageWriteFlags and ScanlineImageWriteFlags respectively.
+ Flags specific to one method or the other are described in sections
+ 2.8.1 and 2.8.2 but for both cases the GXCOPY_ONLY, ROP_NEEDS_SOURCE
+ and NO_PLANEMASK flags described in Section 2.0 are valid as well as
+ the following:
+
+ NO_GXCOPY
+
+ In order to have accelerated image transfers faster than the
+ software versions for GXcopy, the engine needs to support clipping,
+ be using the direct method and have a large enough image transfer
+ range so that CPU_TRANSFER_BASE_FIXED doesn't need to be set.
+ If these are not supported, then it is unlikely that transfering
+ the data through the accelerator will be of any advantage for the
+ simple case of GXcopy. In fact, it may be much slower. For such
+ cases it's probably best to set the NO_GXCOPY flag so that
+ Image writes will only be used for the more complicated rops.
+
+ /* transparency restrictions */
+
+ NO_TRANSPARENCY
+
+ This indicates that the accelerator does not support skipping
+ of color keyed pixels when copying from the source to the destination.
+
+ TRANSPARENCY_GXCOPY_ONLY
+
+ This indicates that the accelerator supports skipping of color keyed
+ pixels only when the rop is GXcopy.
+
+ /* clipping (optional) */
+
+ LEFT_EDGE_CLIPPING
+
+ This indicates that the accelerator supports omission of up to
+ 3 pixels on the left edge of the rectangle to be filled. This
+ is beneficial since it allows transfer from the source pixmap to
+ always occur from DWORD boundaries.
+
+ LEFT_EDGE_CLIPPING_NEGATIVE_X
+
+ This flag indicates that the accelerator can fill areas with
+ image write data even if the value of x origin is negative (off of
+ the screen on the left edge).
+
+
+2.8.1 The Direct Method
+
+ Using the direct method of ImageWrite XAA will send all
+ bitmap data to the accelerator serially through an memory mapped
+ transfer window defined by the following two fields:
+
+ unsigned char *ImageWriteBase
+
+ This indicates the memory address of the beginning of the aperture.
+
+ int ImageWriteRange
+
+ This indicates the size in bytes of the aperture.
+
+ The driver should specify how the transfered data should be padded.
+ There are options for both the padding of each Y scanline and for the
+ total transfer to the aperature.
+ One of the following two flags must be set:
+
+ CPU_TRANSFER_PAD_DWORD
+
+ This indicates that the total transfer (sum of all scanlines) sent
+ to the aperature must be DWORD padded. This is the default behavior.
+
+ CPU_TRANSFER_PAD_QWORD
+
+ This indicates that the total transfer (sum of all scanlines) sent
+ to the aperature must be QWORD padded. With this set, XAA will send
+ an extra DWORD to the aperature when needed to ensure that only
+ an even number of DWORDs are sent.
+
+ And then there are the flags for padding of each scanline:
+
+ SCANLINE_PAD_DWORD
+
+ This indicates that each Y scanline should be DWORD padded.
+ This is the only option available and is the default.
+
+ Finally, there is the CPU_TRANSFER_BASE_FIXED flag which indicates
+ that the aperture is a single register rather than a range of
+ registers, and XAA should write all of the data to the first DWORD.
+ XAA will automatically select CPU_TRANSFER_BASE_FIXED if the
+ ImageWriteRange is not large enough to accomodate an entire scanline.
+
+
+void SetupForImageWrite(ScrnInfoPtr pScrn, int rop, unsigned int planemask,
+ int trans_color, int bpp, int depth)
+
+ If trans_color is not -1 then trans_color indicates the transparency
+ color key and pixels with color trans_color passed through the
+ aperature should not be transfered to the screen but should be
+ skipped. Bpp and depth indicate the bits per pixel and depth of
+ the source pixmap. Trans_color is always -1 if the NO_TRANSPARENCY
+ flag is set.
+
+
+void SubsequentImageWriteRect(ScrnInfoPtr pScrn,
+ int x, int y, int w, int h, int skipleft)
+
+
+ Data passed through the aperature should be copied to a rectangle
+ of width "w" and height "h" with origin (x,y). If LEFT_EDGE_CLIPPING
+ has been enabled, skipleft will correspond to the number of pixels
+ on the left edge that should not be drawn. Skipleft is zero
+ otherwise.
+
+ It can be arranged for XAA to call Sync() after it is through
+ calling the Subsequent functions by setting SYNC_AFTER_IMAGE_WRITE
+ in the ImageWriteFlags. This can provide the driver with an
+ oportunity to reset a clipping window if needed.
+
+2.8.2 The Indirect Method
+
+ Using the indirect method, XAA will render the pixel data scanline
+ at a time to one or more buffers. These buffers may be memory
+ mapped apertures or just intermediate storage.
+
+ int NumScanlineImageWriteBuffers
+
+ This indicates the number of buffers available.
+
+ unsigned char **ScanlineImageWriteBuffers
+
+ This is an array of pointers to the memory locations of each buffer.
+ Each buffer is expected to be large enough to accommodate scanlines
+ the width of the screen. That is:
+
+ pScrn->VirtualX * pScreen->bitsPerPixel/8 bytes or more.
+
+ If LEFT_EDGE_CLIPPING_NEGATIVE_X is set, add an additional 4
+ bytes to that requirement in 8 and 16bpp, 12 bytes in 24bpp.
+
+ Scanlines are always DWORD padded.
+
+void SetupForScanlineImageWrite(ScrnInfoPtr pScrn, int rop,
+ unsigned int planemask, int trans_color,
+ int bpp, int depth)
+
+ If trans_color is not -1 then trans_color indicates the transparency
+ color key and pixels with color trans_color in the buffer should not
+ be transfered to the screen but should be skipped. Bpp and depth
+ indicate the bits per pixel and depth of the source bitmap.
+ Trans_color is always -1 if the NO_TRANSPARENCY flag is set.
+
+
+void SubsequentImageWriteRect(ScrnInfoPtr pScrn,
+ int x, int y, int w, int h, int skipleft)
+
+
+void SubsequentImageWriteScanline(ScrnInfoPtr pScrn, int bufno)
+
+
+ When SubsequentImageWriteRect is called, XAA will begin
+ transfering the source data scanline at a time, calling
+ SubsequentImageWriteScanline after each scanline. If more than
+ one buffer is available, XAA will cycle through the buffers.
+ Subsequent scanlines will use the next buffer and go back to the
+ buffer 0 again when the last buffer is reached. The index into
+ the ScanlineImageWriteBuffers array is presented as "bufno"
+ with each SubsequentImageWriteScanline call.
+
+ The skipleft field is the same as for the direct method.
+
+ The indirect method can be use to send the source data directly
+ to a memory mapped aperture represented by a single image write
+ buffer, scanline at a time, but more commonly it is used to place
+ the data into offscreen video memory so that the accelerator can
+ blit it to the visible screen from there. In the case where the
+ accelerator permits rendering into offscreen video memory while
+ the accelerator is active, several buffers can be used so that
+ XAA can be placing source data into the next buffer while the
+ accelerator is blitting the current buffer. For cases where
+ the accelerator requires some special manipulation of the source
+ data first, the buffers can be in system memory. The CPU can
+ manipulate these buffers and then send the data to the accelerator.
+
+
+2.9 Clipping
+
+ XAA supports hardware clipping rectangles. To use clipping
+ in this way it is expected that the graphics accelerator can
+ clip primitives with verticies anywhere in the 16 bit signed
+ coordinate system.
+
+void SetClippingRectangle ( ScrnInfoPtr pScrn,
+ int left, int top, int right, int bottom)
+
+void DisableClipping (ScrnInfoPtr pScrn)
+
+ When SetClippingRectangle is called, all hardware rendering
+ following it should be clipped to the rectangle specified
+ until DisableClipping is called.
+
+ The ClippingFlags field indicates which operations this sort
+ of Set/Disable pairing can be used with. Any of the following
+ flags may be OR'd together.
+
+ HARDWARE_CLIP_SCREEN_TO_SCREEN_COLOR_EXPAND
+ HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY
+ HARDWARE_CLIP_MONO_8x8_FILL
+ HARDWARE_CLIP_COLOR_8x8_FILL
+ HARDWARE_CLIP_SOLID_FILL
+ HARDWARE_CLIP_DASHED_LINE
+ HARDWARE_CLIP_SOLID_LINE
+
+
+
+3) XAA PIXMAP CACHE
+
+ /* NOTE: XAA has no knowledge of framebuffer particulars so until
+ the framebuffer is able to render into offscreen memory, usage
+ of the pixmap cache requires that the driver provide ImageWrite
+ routines or a WritePixmap or WritePixmapToCache replacement so
+ that patterns can even be placed in the cache.
+
+ ADDENDUM: XAA can now load the pixmap cache without requiring
+ that the driver supply an ImageWrite function, but this can
+ only be done on linear framebuffers. If you have a linear
+ framebuffer, set LINEAR_FRAMEBUFFER in the XAAInfoRec.Flags
+ field and XAA will then be able to upload pixmaps into the
+ cache without the driver providing functions to do so.
+ */
+
+
+ The XAA pixmap cache provides a mechanism for caching of patterns
+ in offscreen video memory so that tiled fills and in some cases
+ stippling can be done by blitting the source patterns from offscreen
+ video memory. The pixmap cache also provides the mechanism for caching
+ of 8x8 color and mono hardware patterns. Any unused offscreen video
+ memory gets used for the pixmap cache and that information is
+ provided by the XFree86 Offscreen Memory Manager. XAA registers a
+ callback with the manager so that it can be informed of any changes
+ in the offscreen memory configuration. The driver writer does not
+ need to deal with any of this since it is all automatic. The driver
+ merely needs to initialize the Offscreen Memory Manager as described
+ in the DESIGN document and set the PIXMAP_CACHE flag in the
+ XAAInfoRec.Flags field. The Offscreen Memory Manager initialization
+ must occur before XAA is initialized or else pixmap cache
+ initialization will fail.
+
+ PixmapCacheFlags is an XAAInfoRec field which allows the driver to
+ control pixmap cache behavior to some extent. Currently only one
+ flag is defined:
+
+ DO_NOT_BLIT_STIPPLES
+
+ This indicates that the stippling should not be done by blitting
+ from the pixmap cache. This does not apply to 8x8 pattern fills.
+
+
+ CachePixelGranularity is an optional field. If the hardware requires
+ that a 8x8 patterns have some particular pixel alignment it should
+ be reflected in this field. Ignoring this field or setting it to
+ zero or one means there are no alignment issues.
+
+
+4) OFFSCREEN PIXMAPS
+
+ XAA has the ability to store pixmap drawables in offscreen video
+ memory and render into them with full hardware acceleration. Placement
+ of pixmaps in the cache is done automatically on a first-come basis and
+ only if there is room. To enable this feature, set the OFFSCREEN_PIXMAPS
+ flag in the XAAInfoRec.Flags field. This is only available when a
+ ScreenToScreenCopy function is provided, when the Offscreen memory
+ manager has been initialized and when the LINEAR_FRAMEBUFFER flag is
+ also set.
+
+ int maxOffPixWidth
+ int maxOffPixHeight
+
+ These two fields allow the driver to limit the maximum dimensions
+ of an offscreen pixmap. If one of these is not set, it is assumed
+ that there is no limit on that dimension. Note that if an offscreen
+ pixmap with a particular dimension is allowed, then your driver will be
+ expected to render primitives as large as that pixmap.
+
+$XFree86: xc/programs/Xserver/hw/xfree86/xaa/XAA.HOWTO,v 1.12 2000/04/12 14:44:42 tsi Exp $
diff --git a/xorg-server/hw/xfree86/xaa/xaaInit.c b/xorg-server/hw/xfree86/xaa/xaaInit.c
index 48d0605fa..f146f3adf 100644
--- a/xorg-server/hw/xfree86/xaa/xaaInit.c
+++ b/xorg-server/hw/xfree86/xaa/xaaInit.c
@@ -27,7 +27,7 @@
#define MIN_OFFPIX_SIZE (320*200)
-static Bool XAACloseScreen(int i, ScreenPtr pScreen);
+static Bool XAACloseScreen(ScreenPtr pScreen);
static void XAAGetImage(DrawablePtr pDrawable, int sx, int sy, int w, int h,
unsigned int format, unsigned long planemask,
char *pdstLine);
@@ -36,10 +36,10 @@ static void XAAGetSpans(DrawablePtr pDrawable, int wMax, DDXPointPtr ppt,
static PixmapPtr XAACreatePixmap(ScreenPtr pScreen, int w, int h, int depth,
unsigned usage_hint);
static Bool XAADestroyPixmap(PixmapPtr pPixmap);
-static Bool XAAEnterVT(int index, int flags);
-static void XAALeaveVT(int index, int flags);
-static int XAASetDGAMode(int index, int num, DGADevicePtr devRet);
-static void XAAEnableDisableFBAccess(int index, Bool enable);
+static Bool XAAEnterVT(ScrnInfoPtr pScrn);
+static void XAALeaveVT(ScrnInfoPtr pScrn);
+static int XAASetDGAMode(ScrnInfoPtr pScrn, int num, DGADevicePtr devRet);
+static void XAAEnableDisableFBAccess(ScrnInfoPtr pScrn, Bool enable);
static Bool XAAChangeWindowAttributes(WindowPtr pWin, unsigned long mask);
static DevPrivateKeyRec XAAScreenKeyRec;
@@ -214,7 +214,7 @@ XAAInit(ScreenPtr pScreen, XAAInfoRecPtr infoRec)
}
static Bool
-XAACloseScreen(int i, ScreenPtr pScreen)
+XAACloseScreen(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
XAAScreenPtr pScreenPriv =
@@ -238,7 +238,7 @@ XAACloseScreen(int i, ScreenPtr pScreen)
free((pointer) pScreenPriv);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
static void
@@ -509,26 +509,24 @@ XAAChangeWindowAttributes(WindowPtr pWin, unsigned long mask)
/* These two aren't really needed for anything */
static Bool
-XAAEnterVT(int index, int flags)
+XAAEnterVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
Bool ret;
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
XAAScreenPtr pScreenPriv =
(XAAScreenPtr) dixLookupPrivate(&pScreen->devPrivates, XAAScreenKey);
pScrn->EnterVT = pScreenPriv->EnterVT;
- ret = ((*pScreenPriv->EnterVT) (index, flags));
+ ret = ((*pScreenPriv->EnterVT) (pScrn));
pScreenPriv->EnterVT = pScrn->EnterVT;
pScrn->EnterVT = XAAEnterVT;
return ret;
}
static void
-XAALeaveVT(int index, int flags)
+XAALeaveVT(ScrnInfoPtr pScrn)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
XAAScreenPtr pScreenPriv =
(XAAScreenPtr) dixLookupPrivate(&pScreen->devPrivates, XAAScreenKey);
XAAInfoRecPtr infoRec = pScreenPriv->AccelInfoRec;
@@ -539,7 +537,7 @@ XAALeaveVT(int index, int flags)
}
pScrn->LeaveVT = pScreenPriv->LeaveVT;
- (*pScreenPriv->LeaveVT) (index, flags);
+ (*pScreenPriv->LeaveVT) (pScrn);
pScreenPriv->LeaveVT = pScrn->LeaveVT;
pScrn->LeaveVT = XAALeaveVT;
}
@@ -551,9 +549,9 @@ typedef struct {
} SavedCacheState, *SavedCacheStatePtr;
static int
-XAASetDGAMode(int index, int num, DGADevicePtr devRet)
+XAASetDGAMode(ScrnInfoPtr pScrn, int num, DGADevicePtr devRet)
{
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_SCREEN(pScreen);
XAAScreenPtr pScreenPriv =
(XAAScreenPtr) dixLookupPrivate(&pScreen->devPrivates, XAAScreenKey);
@@ -569,7 +567,7 @@ XAASetDGAMode(int index, int num, DGADevicePtr devRet)
infoRec->dgaSaves = NULL;
}
- ret = (*pScreenPriv->SetDGAMode) (index, num, devRet);
+ ret = (*pScreenPriv->SetDGAMode) (pScrn, num, devRet);
if (ret != Success)
return ret;
@@ -612,9 +610,9 @@ XAASetDGAMode(int index, int num, DGADevicePtr devRet)
}
static void
-XAAEnableDisableFBAccess(int index, Bool enable)
+XAAEnableDisableFBAccess(ScrnInfoPtr pScrn, Bool enable)
{
- ScreenPtr pScreen = screenInfo.screens[index];
+ ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_SCREEN(pScreen);
XAAScreenPtr pScreenPriv =
(XAAScreenPtr) dixLookupPrivate(&pScreen->devPrivates, XAAScreenKey);
@@ -627,7 +625,7 @@ XAAEnableDisableFBAccess(int index, Bool enable)
SwitchedOut = TRUE;
}
- (*pScreenPriv->EnableDisableFBAccess) (index, enable);
+ (*pScreenPriv->EnableDisableFBAccess) (pScrn, enable);
if (enable) {
if ((infoRec->Flags & OFFSCREEN_PIXMAPS) && (infoRec->OffscreenPixmaps))
diff --git a/xorg-server/hw/xfree86/xaa/xaalocal.h b/xorg-server/hw/xfree86/xaa/xaalocal.h
index c028ef033..61d9eebe5 100644
--- a/xorg-server/hw/xfree86/xaa/xaalocal.h
+++ b/xorg-server/hw/xfree86/xaa/xaalocal.h
@@ -47,10 +47,10 @@ typedef struct _XAAScreen {
DestroyPixmapProcPtr DestroyPixmap;
ChangeWindowAttributesProcPtr ChangeWindowAttributes;
XAAInfoRecPtr AccelInfoRec;
- Bool (*EnterVT) (int, int);
- void (*LeaveVT) (int, int);
- int (*SetDGAMode) (int, int, DGADevicePtr);
- void (*EnableDisableFBAccess) (int, Bool);
+ Bool (*EnterVT) (ScrnInfoPtr);
+ void (*LeaveVT) (ScrnInfoPtr);
+ int (*SetDGAMode) (ScrnInfoPtr, int, DGADevicePtr);
+ void (*EnableDisableFBAccess) (ScrnInfoPtr, Bool);
CompositeProcPtr Composite;
GlyphsProcPtr Glyphs;
} XAAScreenRec, *XAAScreenPtr;
diff --git a/xorg-server/hw/xnest/.gitignore b/xorg-server/hw/xnest/.gitignore
new file mode 100644
index 000000000..b76c5a2d0
--- /dev/null
+++ b/xorg-server/hw/xnest/.gitignore
@@ -0,0 +1 @@
+Xnest
diff --git a/xorg-server/hw/xnest/Screen.c b/xorg-server/hw/xnest/Screen.c
index dd76cb801..7b3c1b361 100644
--- a/xorg-server/hw/xnest/Screen.c
+++ b/xorg-server/hw/xnest/Screen.c
@@ -129,7 +129,7 @@ static miPointerSpriteFuncRec xnestPointerSpriteFuncs = {
};
Bool
-xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[])
+xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[])
{
VisualPtr visuals;
DepthPtr depths;
@@ -309,8 +309,6 @@ xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[])
pScreen->BlockHandler = (ScreenBlockHandlerProcPtr) NoopDDA;
pScreen->WakeupHandler = (ScreenWakeupHandlerProcPtr) NoopDDA;
- pScreen->blockData = NULL;
- pScreen->wakeupData = NULL;
miDCInitialize(pScreen, &xnestPointerCursorFuncs); /* init SW rendering */
PointPriv = dixLookupPrivate(&pScreen->devPrivates, miPointerScreenKey);
@@ -409,7 +407,7 @@ xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[])
}
Bool
-xnestCloseScreen(int index, ScreenPtr pScreen)
+xnestCloseScreen(ScreenPtr pScreen)
{
int i;
diff --git a/xorg-server/hw/xnest/Screen.h b/xorg-server/hw/xnest/Screen.h
index 1d255d79b..17c514af7 100644
--- a/xorg-server/hw/xnest/Screen.h
+++ b/xorg-server/hw/xnest/Screen.h
@@ -19,7 +19,7 @@ extern Window xnestDefaultWindows[MAXSCREENS];
extern Window xnestScreenSaverWindows[MAXSCREENS];
ScreenPtr xnestScreen(Window window);
-Bool xnestOpenScreen(int index, ScreenPtr pScreen, int argc, char *argv[]);
-Bool xnestCloseScreen(int index, ScreenPtr pScreen);
+Bool xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[]);
+Bool xnestCloseScreen(ScreenPtr pScreen);
#endif /* XNESTSCREEN_H */
diff --git a/xorg-server/hw/xnest/icon b/xorg-server/hw/xnest/icon
index 725f1131a..aa00ca497 100644
--- a/xorg-server/hw/xnest/icon
+++ b/xorg-server/hw/xnest/icon
@@ -1,14 +1,14 @@
-#define icon_width 32
-#define icon_height 32
-static unsigned char icon_bits[] = {
- 0xff, 0x00, 0x00, 0xc0, 0xfe, 0x01, 0x00, 0xc0, 0xfc, 0x03, 0x00, 0x60,
- 0xf8, 0x07, 0x00, 0x30, 0xf8, 0x07, 0x00, 0x18, 0xf0, 0x0f, 0x00, 0x0c,
- 0xe0, 0x1f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x03,
- 0x80, 0x7f, 0x80, 0x01, 0x00, 0xff, 0xc0, 0x00, 0x00, 0xfe, 0x61, 0x00,
- 0x00, 0xfe, 0x31, 0x00, 0x00, 0xfc, 0x33, 0x00, 0x00, 0xf8, 0x1b, 0x00,
- 0x00, 0xf0, 0x0d, 0x00, 0x00, 0xf0, 0x0e, 0x00, 0x00, 0x60, 0x1f, 0x00,
- 0x00, 0xb0, 0x3f, 0x00, 0x00, 0x98, 0x7f, 0x00, 0x00, 0x98, 0x7f, 0x00,
- 0x00, 0x0c, 0xff, 0x00, 0x00, 0x06, 0xfe, 0x01, 0x00, 0x03, 0xfc, 0x03,
- 0x80, 0x01, 0xfc, 0x03, 0xc0, 0x00, 0xf8, 0x07, 0xc0, 0x00, 0xf0, 0x0f,
- 0x60, 0x00, 0xe0, 0x1f, 0x30, 0x00, 0xe0, 0x1f, 0x18, 0x00, 0xc0, 0x3f,
- 0x0c, 0x00, 0x80, 0x7f, 0x06, 0x00, 0x00, 0xff};
+#define icon_width 32
+#define icon_height 32
+static unsigned char icon_bits[] = {
+ 0xff, 0x00, 0x00, 0xc0, 0xfe, 0x01, 0x00, 0xc0, 0xfc, 0x03, 0x00, 0x60,
+ 0xf8, 0x07, 0x00, 0x30, 0xf8, 0x07, 0x00, 0x18, 0xf0, 0x0f, 0x00, 0x0c,
+ 0xe0, 0x1f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x03,
+ 0x80, 0x7f, 0x80, 0x01, 0x00, 0xff, 0xc0, 0x00, 0x00, 0xfe, 0x61, 0x00,
+ 0x00, 0xfe, 0x31, 0x00, 0x00, 0xfc, 0x33, 0x00, 0x00, 0xf8, 0x1b, 0x00,
+ 0x00, 0xf0, 0x0d, 0x00, 0x00, 0xf0, 0x0e, 0x00, 0x00, 0x60, 0x1f, 0x00,
+ 0x00, 0xb0, 0x3f, 0x00, 0x00, 0x98, 0x7f, 0x00, 0x00, 0x98, 0x7f, 0x00,
+ 0x00, 0x0c, 0xff, 0x00, 0x00, 0x06, 0xfe, 0x01, 0x00, 0x03, 0xfc, 0x03,
+ 0x80, 0x01, 0xfc, 0x03, 0xc0, 0x00, 0xf8, 0x07, 0xc0, 0x00, 0xf0, 0x0f,
+ 0x60, 0x00, 0xe0, 0x1f, 0x30, 0x00, 0xe0, 0x1f, 0x18, 0x00, 0xc0, 0x3f,
+ 0x0c, 0x00, 0x80, 0x7f, 0x06, 0x00, 0x00, 0xff};
diff --git a/xorg-server/hw/xnest/screensaver b/xorg-server/hw/xnest/screensaver
index 4940f2650..22fe414b2 100644
--- a/xorg-server/hw/xnest/screensaver
+++ b/xorg-server/hw/xnest/screensaver
@@ -1,686 +1,686 @@
-#define screensaver_width 256
-#define screensaver_height 256
-static unsigned char screensaver_bits[] = {
- 0xa8, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
- 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x40, 0x55,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x55, 0x05, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0xa0,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x15, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
- 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0xaa,
- 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0xaa, 0x0a, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x50,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0x2a, 0x80, 0x02, 0x80, 0xaa, 0xaa, 0x82, 0x0a, 0xa8, 0x28, 0x80,
- 0x8a, 0x80, 0x2a, 0x80, 0x80, 0x8a, 0xa2, 0x82, 0x0a, 0xaa, 0x0a, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x80, 0x82, 0x41, 0x40, 0x00, 0x50,
- 0x55, 0x41, 0x00, 0x00, 0x04, 0x00, 0x54, 0x40, 0x10, 0x00, 0x40, 0x00,
- 0x51, 0x55, 0x00, 0x15, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x41, 0x00, 0x10, 0x14, 0x00, 0x00, 0x00, 0xa8, 0x8a, 0x02, 0x00, 0x02,
- 0x00, 0x20, 0xa2, 0x00, 0x80, 0x00, 0x08, 0x00, 0xaa, 0x2a, 0x00, 0x2a,
- 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80,
- 0x01, 0x00, 0x01, 0x50, 0x45, 0x05, 0x00, 0x01, 0x10, 0x10, 0x40, 0x11,
- 0x40, 0x00, 0x44, 0x00, 0x50, 0x15, 0x01, 0x15, 0x04, 0x00, 0x40, 0x00,
- 0x05, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x50, 0x20, 0x00, 0x00, 0xa2,
- 0xaa, 0x2a, 0x00, 0x00, 0x02, 0x00, 0xa0, 0x08, 0x00, 0x00, 0x00, 0x00,
- 0xa2, 0xaa, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x01, 0x40, 0x44, 0x15, 0x10, 0x01,
- 0x10, 0x10, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x54, 0x55, 0x41, 0x45,
- 0x04, 0x00, 0x40, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54,
- 0x20, 0x80, 0x00, 0x82, 0xaa, 0x0a, 0x00, 0x00, 0x22, 0x00, 0x80, 0x0a,
- 0x00, 0x00, 0x82, 0x00, 0xa0, 0x8a, 0x22, 0x02, 0x00, 0x08, 0x20, 0x00,
- 0xa8, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x2a, 0x10, 0x40, 0x00, 0x01,
- 0x54, 0x45, 0x10, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x01, 0x00,
- 0x50, 0x45, 0x05, 0x41, 0x00, 0x04, 0x10, 0x00, 0x50, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x15, 0x00, 0x28, 0x00, 0xaa, 0xaa, 0x0a, 0x0a, 0x00,
- 0x20, 0x08, 0x00, 0x20, 0x00, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x22, 0x2a,
- 0x00, 0x00, 0x0a, 0x00, 0xa8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0a,
- 0x50, 0x05, 0x00, 0x01, 0x55, 0x45, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40,
- 0x01, 0x00, 0x00, 0x00, 0x40, 0x55, 0x11, 0x00, 0x00, 0x54, 0x01, 0x00,
- 0x44, 0x01, 0x00, 0x00, 0x05, 0x40, 0x00, 0x05, 0x00, 0x08, 0x00, 0x80,
- 0xaa, 0xaa, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x80, 0x00,
- 0x80, 0xaa, 0x28, 0x20, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x00, 0x00,
- 0x28, 0x00, 0x80, 0x02, 0x10, 0x10, 0x00, 0x01, 0x54, 0x45, 0x01, 0x00,
- 0x41, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x10, 0x55, 0x14, 0x00,
- 0x00, 0x04, 0x04, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x40, 0x40, 0x01,
- 0x08, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0xa0, 0xaa, 0x00, 0x80, 0x28, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00,
- 0x80, 0x02, 0x00, 0x00, 0x80, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x14, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
- 0x00, 0x40, 0x00, 0x00, 0x08, 0x20, 0x80, 0x00, 0x08, 0x08, 0x80, 0x80,
- 0x80, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x8a, 0x00,
- 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01,
- 0x10, 0x10, 0x00, 0x01, 0x10, 0x45, 0x55, 0x01, 0x00, 0x00, 0x10, 0x00,
- 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00,
- 0x20, 0xa2, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
- 0x00, 0x80, 0x00, 0x02, 0x04, 0x00, 0x40, 0x00, 0x04, 0x04, 0x40, 0x40,
- 0x00, 0x01, 0x00, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00, 0x51, 0x45, 0x05,
- 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x45, 0x01,
- 0x2a, 0x80, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xa0, 0x02, 0x02, 0x80, 0xa8,
- 0x00, 0x2a, 0xa0, 0x02, 0x80, 0xa2, 0x00, 0xa0, 0xa0, 0x0a, 0xa0, 0x00,
- 0x00, 0x00, 0x80, 0x88, 0x02, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x50, 0x41, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
- 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0xaa, 0x0a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x2a, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
- 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x55, 0x55,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 0x00, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x05, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x15, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa8, 0xaa,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x80, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x15, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0x2a, 0x20, 0x00, 0x00, 0x41, 0x05, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14,
- 0x40, 0x10, 0x44, 0x15, 0x15, 0x00, 0x00, 0x50, 0x01, 0x00, 0x50, 0x55,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x10, 0x50, 0x40,
- 0x82, 0x08, 0x02, 0x08, 0x20, 0x08, 0x00, 0x22, 0xa0, 0x20, 0x88, 0x00,
- 0x22, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x80, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x88, 0x20, 0x44, 0x10, 0x01, 0x04,
- 0x50, 0x04, 0x00, 0x41, 0x10, 0x11, 0x44, 0x00, 0x41, 0x00, 0x00, 0x54,
- 0x41, 0x00, 0x40, 0x55, 0x15, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x54, 0x11, 0x04, 0x11, 0x80, 0x20, 0x02, 0x08, 0xa0, 0x08, 0x00, 0x02,
- 0x88, 0x20, 0x88, 0x00, 0x82, 0x00, 0x00, 0x2a, 0x22, 0x00, 0x80, 0xaa,
- 0x2a, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x08, 0x20,
- 0x40, 0x10, 0x01, 0x04, 0x50, 0x04, 0x00, 0x01, 0x04, 0x41, 0x44, 0x00,
- 0x41, 0x00, 0x00, 0x15, 0x05, 0x14, 0x15, 0x50, 0x10, 0x05, 0x40, 0x41,
- 0x41, 0x10, 0x45, 0x05, 0x50, 0x04, 0x04, 0x10, 0x80, 0x20, 0x02, 0x08,
- 0xa0, 0x08, 0x00, 0x02, 0x08, 0x22, 0x82, 0x00, 0x82, 0x00, 0x00, 0x0a,
- 0x2a, 0x22, 0x8a, 0x22, 0x22, 0x08, 0x80, 0x22, 0x22, 0x88, 0x88, 0x02,
- 0x28, 0x02, 0x08, 0x20, 0x40, 0x10, 0x15, 0x54, 0x10, 0x05, 0x00, 0x14,
- 0x04, 0x41, 0x44, 0x05, 0x41, 0x00, 0x00, 0x05, 0x50, 0x01, 0x41, 0x04,
- 0x05, 0x11, 0x00, 0x05, 0x44, 0x44, 0x50, 0x00, 0x10, 0x05, 0x50, 0x10,
- 0x80, 0x0a, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x20, 0xa8, 0x82, 0x82, 0x00,
- 0x2a, 0x00, 0x80, 0x02, 0x22, 0x02, 0x82, 0x20, 0x20, 0x08, 0x20, 0x88,
- 0x82, 0x88, 0x8a, 0x00, 0x88, 0x0a, 0x80, 0x20, 0x40, 0x04, 0x01, 0x04,
- 0x10, 0x05, 0x00, 0x40, 0x04, 0x41, 0x41, 0x00, 0x11, 0x00, 0x40, 0x01,
- 0x41, 0x41, 0x41, 0x14, 0x15, 0x11, 0x40, 0x44, 0x04, 0x44, 0x40, 0x00,
- 0x44, 0x15, 0x00, 0x11, 0x80, 0x08, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x80,
- 0x08, 0x82, 0x82, 0x00, 0x22, 0x00, 0xa0, 0x00, 0x22, 0x22, 0x82, 0x20,
- 0x22, 0x0a, 0x20, 0x28, 0x82, 0x82, 0x88, 0x00, 0x88, 0x2a, 0x00, 0x22,
- 0x44, 0x10, 0x01, 0x04, 0x10, 0x04, 0x00, 0x41, 0x04, 0x01, 0x41, 0x00,
- 0x41, 0x00, 0x50, 0x01, 0x14, 0x14, 0x01, 0x55, 0x10, 0x15, 0x40, 0x45,
- 0x05, 0x01, 0x45, 0x00, 0x04, 0x55, 0x04, 0x11, 0x82, 0x20, 0x02, 0x08,
- 0x20, 0x08, 0x00, 0x22, 0x08, 0x82, 0x80, 0x00, 0x82, 0x00, 0xa8, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0xaa, 0x88, 0x20, 0x41, 0x10, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14,
- 0x04, 0x01, 0x41, 0x15, 0x41, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x51, 0x40,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x15, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x00, 0x54, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa8, 0x02, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00,
- 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x10, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
- 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x15, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00,
- 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa,
- 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00,
- 0x05, 0x14, 0x40, 0x01, 0x41, 0x40, 0x01, 0x14, 0x10, 0x01, 0x00, 0x40,
- 0x01, 0x04, 0x14, 0x14, 0x14, 0x10, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0xaa, 0x00, 0x00, 0x00, 0x80, 0x82, 0xa0, 0x20, 0x82,
- 0xa2, 0x20, 0x02, 0x22, 0x28, 0x02, 0x00, 0x08, 0x8a, 0x22, 0x08, 0x08,
- 0x22, 0x28, 0x0a, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x54,
- 0x01, 0x00, 0x00, 0x40, 0x41, 0x40, 0x10, 0x04, 0x11, 0x11, 0x04, 0x41,
- 0x10, 0x04, 0x00, 0x04, 0x04, 0x40, 0x10, 0x00, 0x41, 0x10, 0x11, 0x00,
- 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xaa, 0x02, 0x00, 0x00, 0xa0,
- 0x82, 0x80, 0x08, 0x08, 0x02, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x08,
- 0x08, 0x20, 0x20, 0x80, 0x80, 0x20, 0x00, 0x00, 0x10, 0x50, 0x14, 0x14,
- 0x45, 0x05, 0x40, 0x05, 0x41, 0x14, 0x15, 0x50, 0x41, 0x01, 0x04, 0x00,
- 0x01, 0x04, 0x50, 0x00, 0x11, 0x04, 0x00, 0x14, 0x00, 0x40, 0x10, 0x44,
- 0x00, 0x11, 0x00, 0x00, 0xa0, 0x88, 0x22, 0xa2, 0x88, 0x08, 0x00, 0x2a,
- 0x82, 0x22, 0x22, 0xa8, 0x80, 0x0a, 0x08, 0x00, 0x02, 0xa8, 0x8a, 0xaa,
- 0x08, 0x08, 0x00, 0xa8, 0x00, 0x2a, 0x20, 0x80, 0xaa, 0x20, 0x00, 0x00,
- 0x00, 0x05, 0x04, 0x15, 0x55, 0x04, 0x40, 0x04, 0x50, 0x54, 0x01, 0x54,
- 0x00, 0x54, 0x04, 0x00, 0x01, 0x04, 0x40, 0x00, 0x10, 0x04, 0x00, 0x40,
- 0x05, 0x41, 0x40, 0x40, 0x00, 0x10, 0x00, 0x00, 0x80, 0x08, 0x02, 0x82,
- 0x80, 0x08, 0x80, 0x20, 0x02, 0x02, 0x02, 0x2a, 0x00, 0xa0, 0x08, 0x00,
- 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00, 0x8a, 0x20, 0x20, 0x82,
- 0x00, 0x20, 0x00, 0x00, 0x10, 0x45, 0x04, 0x11, 0x51, 0x04, 0x50, 0x44,
- 0x44, 0x44, 0x01, 0x15, 0x00, 0x40, 0x05, 0x00, 0x01, 0x04, 0x40, 0x00,
- 0x10, 0x04, 0x00, 0x00, 0x54, 0x40, 0x40, 0x41, 0x00, 0x10, 0x00, 0x00,
- 0xa0, 0x28, 0x02, 0x0a, 0x8a, 0x08, 0x20, 0x0a, 0x0a, 0x28, 0x02, 0x0a,
- 0x00, 0x80, 0x08, 0x00, 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00,
- 0x88, 0x20, 0x80, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x05, 0x40, 0x00, 0x11, 0x00,
- 0x01, 0x10, 0x10, 0x01, 0x11, 0x04, 0x00, 0x04, 0x50, 0x40, 0x41, 0x01,
- 0x01, 0x11, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
- 0xaa, 0x00, 0x80, 0x02, 0x80, 0x80, 0x20, 0x02, 0x02, 0x20, 0x08, 0x82,
- 0x08, 0x08, 0x00, 0x08, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x00, 0x00,
- 0x00, 0x40, 0x01, 0x10, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x40, 0x01,
- 0x40, 0x14, 0x40, 0x41, 0x05, 0x40, 0x01, 0x14, 0x14, 0x14, 0x00, 0x44,
- 0x01, 0x45, 0x00, 0x00, 0x14, 0x54, 0x00, 0x00, 0x00, 0x80, 0x02, 0x08,
- 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x50,
- 0x55, 0x05, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0xa8, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01,
- 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0xaa, 0x0a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x15, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x8a, 0x02, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0xa8, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x05, 0x50, 0x00, 0x50, 0x40, 0x45, 0x11, 0x00, 0x50,
- 0x40, 0x41, 0x01, 0x00, 0x14, 0x00, 0x51, 0x40, 0x40, 0x00, 0x05, 0x14,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a,
- 0x88, 0x02, 0xaa, 0xa8, 0x80, 0x00, 0x00, 0xaa, 0xa8, 0xa2, 0x02, 0x00,
- 0xa2, 0xa0, 0x22, 0xa8, 0xa0, 0xa0, 0x8a, 0x2a, 0x02, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x04, 0x01, 0x45, 0x51,
- 0x04, 0x40, 0x00, 0x45, 0x41, 0x51, 0x01, 0x00, 0x41, 0x50, 0x54, 0x50,
- 0x50, 0x50, 0x14, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0a, 0x82, 0xa2, 0xa0, 0x02, 0xa0, 0x88, 0x82,
- 0xa0, 0x88, 0x02, 0x80, 0x82, 0x28, 0x28, 0xa0, 0x20, 0x28, 0x08, 0x8a,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x45, 0x54, 0x00,
- 0x14, 0x40, 0x41, 0x50, 0x05, 0x51, 0x10, 0x41, 0x41, 0x41, 0x01, 0x00,
- 0x05, 0x14, 0x10, 0x50, 0x40, 0x10, 0x14, 0x54, 0x04, 0x00, 0x41, 0x55,
- 0x04, 0x45, 0x01, 0x04, 0x20, 0x02, 0x08, 0x00, 0x2a, 0xa0, 0x00, 0xa0,
- 0x8a, 0x20, 0xa8, 0xa2, 0xa0, 0xa0, 0x00, 0x80, 0x0a, 0x28, 0x28, 0xa0,
- 0x20, 0x28, 0x0a, 0x2a, 0x00, 0x00, 0x22, 0x0a, 0x80, 0x88, 0x02, 0x88,
- 0x04, 0x50, 0x01, 0x00, 0x54, 0x40, 0x01, 0x50, 0x15, 0x10, 0x14, 0x51,
- 0x40, 0x41, 0x01, 0x00, 0x15, 0x14, 0x14, 0x40, 0x11, 0x14, 0x05, 0x14,
- 0x00, 0x40, 0x10, 0x00, 0x15, 0x45, 0x04, 0x01, 0x00, 0x00, 0x08, 0x00,
- 0xa8, 0xa0, 0x00, 0x28, 0x8a, 0x08, 0x0a, 0x28, 0xa0, 0xa0, 0x00, 0x00,
- 0x2a, 0x0a, 0x28, 0xa0, 0x08, 0x8a, 0x02, 0x0a, 0x00, 0x80, 0x00, 0x08,
- 0x80, 0x00, 0x00, 0x82, 0x44, 0x11, 0x00, 0x00, 0x50, 0x50, 0x00, 0x10,
- 0x05, 0x40, 0x15, 0x05, 0x50, 0x50, 0x00, 0x00, 0x14, 0x14, 0x14, 0x40,
- 0x11, 0x54, 0x00, 0x05, 0x00, 0x00, 0x11, 0x00, 0x01, 0x40, 0x04, 0x44,
- 0x80, 0x20, 0x0a, 0x00, 0xa0, 0xa0, 0x00, 0x88, 0x82, 0xa8, 0x0a, 0x00,
- 0xa0, 0xa0, 0x00, 0x00, 0x28, 0x0a, 0x0a, 0xa0, 0x08, 0x0a, 0x00, 0x0a,
- 0x00, 0x00, 0x22, 0x0a, 0xa2, 0x00, 0x00, 0x88, 0x01, 0x40, 0x15, 0x00,
- 0x50, 0x51, 0x40, 0x00, 0x01, 0x51, 0x15, 0x00, 0x50, 0x50, 0x00, 0x00,
- 0x54, 0x14, 0x54, 0x40, 0x05, 0x14, 0x00, 0x05, 0x00, 0x40, 0x41, 0x15,
- 0x14, 0x45, 0x04, 0x05, 0x00, 0x00, 0x00, 0x80, 0xa0, 0xa0, 0x20, 0x88,
- 0x80, 0xaa, 0x08, 0x82, 0x28, 0x28, 0x02, 0x20, 0x28, 0x0a, 0x2a, 0xa0,
- 0x02, 0x0a, 0x88, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x41, 0x40, 0x11, 0x44, 0x00, 0x55, 0x14, 0x44,
- 0x50, 0x50, 0x01, 0x40, 0x10, 0x54, 0x15, 0x40, 0x01, 0x14, 0x04, 0x45,
- 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0x22, 0xa0, 0x0a, 0x00, 0x00, 0x0a, 0x2a, 0x20, 0x28, 0xa8, 0x00, 0xa0,
- 0x08, 0xa8, 0x08, 0xa0, 0x00, 0xa8, 0x82, 0x82, 0x02, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0x00,
- 0x00, 0x54, 0x55, 0x10, 0x50, 0x50, 0x00, 0x00, 0x05, 0x50, 0x04, 0x40,
- 0x00, 0x50, 0x40, 0x05, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x80, 0xaa, 0x2a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a,
- 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x55, 0x55,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01,
- 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa8, 0xaa,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00,
- 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x50, 0x55,
- 0x05, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x28,
- 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
- 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x50, 0x04, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x80, 0xaa,
- 0x2a, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x50, 0x15,
- 0x55, 0x11, 0x55, 0x00, 0x15, 0x00, 0x54, 0x01, 0x00, 0x54, 0x01, 0x40,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x50, 0x00, 0x20, 0x82, 0x20, 0x08, 0x82, 0x00, 0x22, 0x80,
- 0x08, 0x08, 0x28, 0xa2, 0x28, 0x20, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xa2,
- 0x00, 0x04, 0x41, 0x10, 0x04, 0x11, 0x00, 0x40, 0x10, 0x14, 0x10, 0x54,
- 0x54, 0x11, 0x10, 0x00, 0x01, 0x00, 0x50, 0x14, 0x15, 0x05, 0x45, 0x01,
- 0x50, 0x50, 0x44, 0x14, 0x05, 0x00, 0x04, 0x40, 0x20, 0x02, 0x22, 0x02,
- 0x22, 0x08, 0x20, 0x20, 0x00, 0x08, 0x20, 0xa8, 0x28, 0x22, 0x08, 0x80,
- 0x02, 0x00, 0x88, 0x22, 0xa2, 0x88, 0x28, 0x02, 0x88, 0x80, 0x22, 0xa2,
- 0x08, 0x00, 0x08, 0x22, 0x00, 0x04, 0x41, 0x00, 0x04, 0x00, 0x01, 0x40,
- 0x00, 0x10, 0x40, 0x04, 0x11, 0x10, 0x04, 0x10, 0x05, 0x00, 0x10, 0x04,
- 0x01, 0x55, 0x45, 0x04, 0x10, 0x50, 0x44, 0x15, 0x01, 0x00, 0x14, 0x10,
- 0x00, 0x2a, 0xa0, 0x02, 0x2a, 0x20, 0x22, 0x80, 0x02, 0x22, 0x20, 0x02,
- 0x0a, 0xa0, 0x02, 0x08, 0x0a, 0x00, 0x20, 0x02, 0x82, 0x80, 0x20, 0x02,
- 0x80, 0x88, 0x28, 0x82, 0x00, 0x00, 0xa8, 0x20, 0x00, 0x44, 0x40, 0x01,
- 0x14, 0x00, 0x04, 0x00, 0x05, 0x10, 0x40, 0x00, 0x11, 0x10, 0x05, 0x04,
- 0x14, 0x00, 0x44, 0x44, 0x01, 0x51, 0x44, 0x04, 0x10, 0x45, 0x14, 0x11,
- 0x01, 0x00, 0x50, 0x11, 0x00, 0x82, 0x20, 0x02, 0x22, 0x20, 0x28, 0x20,
- 0x08, 0x2a, 0x80, 0x02, 0x02, 0x20, 0x08, 0x00, 0x00, 0x00, 0x28, 0x28,
- 0x02, 0x8a, 0x22, 0x02, 0xa0, 0xa8, 0x08, 0x8a, 0x00, 0x00, 0x80, 0x22,
- 0x00, 0x04, 0x41, 0x10, 0x04, 0x01, 0x10, 0x00, 0x10, 0x41, 0x40, 0x01,
- 0x11, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x51, 0x20, 0x82, 0x20, 0x00,
- 0x02, 0x20, 0x28, 0x20, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x28, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x22, 0x10, 0x04, 0x45, 0x10, 0x04, 0x01, 0x10, 0x40,
- 0x04, 0x40, 0x00, 0x00, 0x41, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x41,
- 0x8a, 0x0a, 0xaa, 0x8a, 0xaa, 0xa8, 0x20, 0xa0, 0x82, 0xa2, 0x80, 0x80,
- 0xaa, 0xa8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x15, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x10, 0x50,
- 0x41, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x15, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa0, 0x80, 0x02, 0xa8, 0x28,
- 0x0a, 0xa0, 0x02, 0xa8, 0x00, 0x8a, 0x02, 0x28, 0x00, 0x00, 0x00, 0x0a,
- 0x28, 0x80, 0x2a, 0x80, 0x22, 0x80, 0x0a, 0x00, 0xa8, 0x00, 0x28, 0x2a,
- 0x00, 0x05, 0x00, 0x50, 0x00, 0x00, 0x55, 0x51, 0x14, 0x14, 0x54, 0x54,
- 0x01, 0x54, 0x01, 0x50, 0x50, 0x05, 0x00, 0x05, 0x00, 0x50, 0x55, 0x40,
- 0x51, 0x50, 0x15, 0x00, 0x54, 0x05, 0x14, 0x55, 0x00, 0x0a, 0x00, 0xa0,
- 0x00, 0x80, 0xaa, 0x2a, 0x2a, 0x08, 0x2a, 0xa8, 0x02, 0xaa, 0x02, 0xa0,
- 0xa0, 0x02, 0x00, 0x0a, 0x00, 0xa8, 0xaa, 0x80, 0x2a, 0xa8, 0x2a, 0x80,
- 0xaa, 0x0a, 0xa8, 0xaa, 0x01, 0x05, 0x00, 0x50, 0x05, 0x40, 0x55, 0x55,
- 0x14, 0x00, 0x14, 0x50, 0x05, 0x54, 0x01, 0x40, 0x51, 0x01, 0x00, 0x55,
- 0x00, 0x54, 0x55, 0x41, 0x15, 0x54, 0x55, 0x40, 0x55, 0x15, 0x54, 0x55,
- 0x02, 0x0a, 0x00, 0xa0, 0x0a, 0xa0, 0x02, 0x2a, 0x2a, 0x00, 0x0a, 0x88,
- 0x0a, 0x2a, 0x00, 0x80, 0xaa, 0x00, 0x00, 0xaa, 0x00, 0xaa, 0xa0, 0xa2,
- 0x0a, 0x2a, 0xa8, 0xa0, 0x0a, 0x0a, 0xaa, 0xa0, 0x01, 0x14, 0x01, 0x40,
- 0x55, 0x50, 0x01, 0x14, 0x14, 0x00, 0x05, 0x04, 0x15, 0x15, 0x00, 0x00,
- 0x51, 0x00, 0x00, 0x54, 0x05, 0x14, 0x40, 0x45, 0x05, 0x15, 0x50, 0x41,
- 0x01, 0x14, 0x54, 0x40, 0x02, 0xa8, 0x00, 0x80, 0xaa, 0xa8, 0x00, 0x2a,
- 0x28, 0x88, 0x02, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
- 0x0a, 0x0a, 0xa0, 0xa2, 0x82, 0x0a, 0xa0, 0xa0, 0x00, 0x28, 0x2a, 0xa0,
- 0x01, 0x50, 0x00, 0x00, 0x55, 0x50, 0x00, 0x14, 0x54, 0x54, 0x05, 0x15,
- 0x14, 0x15, 0x00, 0x00, 0x11, 0x00, 0x00, 0x50, 0x05, 0x15, 0x00, 0x40,
- 0x01, 0x05, 0x40, 0x51, 0x00, 0x14, 0x14, 0x40, 0x00, 0xa8, 0x00, 0x00,
- 0xa8, 0x28, 0x00, 0x28, 0x28, 0xa8, 0x02, 0x80, 0x0a, 0x0a, 0x00, 0x80,
- 0x08, 0x00, 0x00, 0x80, 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0xaa, 0xaa, 0xa8,
- 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x44, 0x01, 0x00, 0x50, 0x55, 0x00, 0x14,
- 0x50, 0x14, 0x01, 0x00, 0x15, 0x05, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00,
- 0x15, 0x05, 0x00, 0x50, 0x41, 0x55, 0x55, 0x51, 0x55, 0x15, 0x15, 0x40,
- 0x00, 0x80, 0x02, 0x00, 0xa0, 0x28, 0x00, 0x0a, 0x28, 0x0a, 0x02, 0x00,
- 0x8a, 0x0a, 0x00, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x8a, 0x0a, 0x00, 0xa0,
- 0x80, 0xaa, 0xaa, 0xa8, 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x40, 0x01, 0x00,
- 0x50, 0x55, 0x00, 0x14, 0x50, 0x05, 0x00, 0x00, 0x14, 0x05, 0x00, 0x50,
- 0x50, 0x00, 0x00, 0x00, 0x15, 0x05, 0x00, 0x50, 0x40, 0x55, 0x55, 0x51,
- 0x55, 0x15, 0x05, 0x50, 0x00, 0x80, 0x02, 0x2a, 0xa8, 0x28, 0x00, 0x0a,
- 0xa8, 0x0a, 0x80, 0xaa, 0x82, 0x02, 0x00, 0x20, 0xa0, 0x00, 0xa0, 0x82,
- 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0x02, 0x00, 0x28, 0x00, 0x00, 0x0a, 0xa0,
- 0x00, 0x00, 0x05, 0x14, 0x50, 0x54, 0x00, 0x15, 0x50, 0x05, 0x40, 0x55,
- 0x01, 0x05, 0x00, 0x10, 0x40, 0x01, 0x40, 0x01, 0x05, 0x15, 0x50, 0x51,
- 0x40, 0x01, 0x00, 0x50, 0x00, 0x00, 0x05, 0x50, 0x00, 0x00, 0x0a, 0x2a,
- 0xa8, 0xa8, 0x80, 0x0a, 0xa0, 0x02, 0x80, 0x0a, 0x80, 0x02, 0x00, 0x08,
- 0x80, 0x02, 0xa0, 0x82, 0x0a, 0x2a, 0xa8, 0xa0, 0x80, 0x02, 0x2a, 0xa8,
- 0x80, 0x8a, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x54, 0x55, 0x50, 0x55, 0x05,
- 0x50, 0x01, 0x00, 0x00, 0x44, 0x05, 0x00, 0x04, 0x00, 0x05, 0x40, 0x55,
- 0x05, 0x54, 0x55, 0x50, 0x00, 0x55, 0x15, 0x50, 0x55, 0x05, 0x05, 0x50,
- 0x00, 0x00, 0x00, 0xa8, 0x2a, 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x08, 0x00,
- 0x8a, 0x02, 0x00, 0x0a, 0x00, 0x00, 0x80, 0xaa, 0x02, 0xaa, 0x2a, 0x28,
- 0x80, 0xaa, 0x0a, 0xa0, 0xaa, 0x82, 0x02, 0x28, 0x00, 0x00, 0x00, 0x50,
- 0x15, 0x40, 0x55, 0x05, 0x40, 0x01, 0x10, 0x00, 0x55, 0x01, 0x00, 0x05,
- 0x00, 0x00, 0x00, 0x55, 0x01, 0x54, 0x15, 0x50, 0x00, 0x55, 0x05, 0x40,
- 0x55, 0x01, 0x05, 0x50, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x80, 0x0a, 0x0a,
- 0xa0, 0x00, 0x00, 0xa0, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x2a,
- 0x00, 0xa0, 0x0a, 0x28, 0x00, 0xa8, 0x00, 0x80, 0x2a, 0x80, 0x02, 0x28,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
- 0x55, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0xa0, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
- 0xaa, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x50, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x55, 0x05, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x0a, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x45, 0x05, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0xa0, 0x22, 0xa8, 0x0a, 0xa8, 0x00,
- 0xa8, 0xa0, 0x28, 0x80, 0xaa, 0x22, 0x28, 0xa0, 0x02, 0x2a, 0x2a, 0xa0,
- 0x02, 0x8a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x40, 0x15, 0x50, 0x15, 0x54, 0x15, 0x54, 0x01, 0x55, 0x41, 0x55, 0x00,
- 0x55, 0x11, 0x54, 0x50, 0x05, 0x54, 0x54, 0x54, 0x05, 0x54, 0x05, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x08, 0x08,
- 0x20, 0x08, 0x02, 0x82, 0x82, 0x82, 0x82, 0x00, 0xaa, 0x08, 0x20, 0x20,
- 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x50, 0x10, 0x04, 0x10, 0x10, 0x00, 0x01, 0x04,
- 0x01, 0x01, 0x01, 0x01, 0x54, 0x14, 0x11, 0x00, 0x10, 0x10, 0x04, 0x04,
- 0x04, 0x10, 0x00, 0x14, 0x51, 0x10, 0x44, 0x01, 0x50, 0x44, 0x44, 0x14,
- 0xa0, 0x00, 0x02, 0x08, 0x08, 0x80, 0x00, 0x82, 0x00, 0x82, 0x80, 0x00,
- 0xa8, 0x28, 0x00, 0xa0, 0x0a, 0x20, 0x08, 0x02, 0x08, 0x08, 0x00, 0x00,
- 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x05, 0x04, 0x00,
- 0x10, 0x00, 0x55, 0x45, 0x55, 0x41, 0x40, 0x00, 0x54, 0x54, 0x00, 0x50,
- 0x05, 0x10, 0x04, 0x55, 0x05, 0x04, 0x00, 0x44, 0x10, 0x14, 0x45, 0x04,
- 0x10, 0x54, 0x54, 0x04, 0x00, 0x0a, 0x02, 0x00, 0x08, 0x80, 0xaa, 0x82,
- 0xaa, 0x82, 0x80, 0x00, 0x2a, 0xaa, 0x00, 0x08, 0x08, 0x20, 0x02, 0xaa,
- 0x0a, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
- 0x10, 0x14, 0x04, 0x00, 0x04, 0x00, 0x01, 0x40, 0x00, 0x40, 0x40, 0x00,
- 0x15, 0x45, 0x15, 0x04, 0x04, 0x10, 0x01, 0x01, 0x00, 0x04, 0x00, 0x05,
- 0x15, 0x10, 0x44, 0x04, 0x14, 0x14, 0x41, 0x04, 0x08, 0x08, 0x0a, 0x08,
- 0x08, 0x80, 0x02, 0x82, 0x80, 0x20, 0x20, 0x80, 0x8a, 0x8a, 0x22, 0x02,
- 0x02, 0xa0, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x05, 0x54, 0x15, 0x55, 0x01, 0x55, 0x01,
- 0x55, 0x51, 0x51, 0x01, 0x45, 0x05, 0x00, 0x54, 0x15, 0x40, 0x00, 0x54,
- 0x45, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa8, 0x02, 0xa8, 0x82, 0xaa, 0x00, 0xaa, 0x00, 0x2a, 0xa8, 0xa8, 0x80,
- 0x82, 0x22, 0x20, 0xa8, 0x0a, 0x20, 0x00, 0xa8, 0x80, 0xaa, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x55, 0x55, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0xa8, 0xaa, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0x2a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x54, 0x00, 0x54, 0x55, 0x01, 0x00, 0x40, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a,
- 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x50, 0x55, 0x05,
- 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x54, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x0a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x0a, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05,
- 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x80, 0xaa, 0x2a,
- 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa8, 0x02, 0x08, 0x00, 0x10, 0x50, 0x50, 0x50, 0x40, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x50, 0x00,
- 0x50, 0x00, 0x05, 0x04, 0x01, 0x05, 0x50, 0x40, 0x54, 0x05, 0x04, 0x05,
- 0x8a, 0x20, 0x20, 0x88, 0xa0, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00,
- 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x20, 0x00, 0x82, 0x82, 0x08, 0x8a,
- 0x82, 0x08, 0x88, 0xa0, 0xa8, 0x0a, 0x22, 0x28, 0x00, 0x41, 0x00, 0x04,
- 0x41, 0x44, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x55, 0x55,
- 0x00, 0x00, 0x10, 0x00, 0x01, 0x41, 0x10, 0x44, 0x44, 0x10, 0x04, 0x41,
- 0x50, 0x15, 0x11, 0x10, 0x80, 0x80, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x80, 0x00,
- 0x02, 0x22, 0x20, 0x08, 0x20, 0x20, 0x02, 0x22, 0xa0, 0x2a, 0x22, 0x20,
- 0x00, 0x41, 0x10, 0x01, 0x44, 0x00, 0x00, 0x40, 0x41, 0x51, 0x04, 0x14,
- 0x15, 0x00, 0x11, 0x44, 0x50, 0x54, 0x40, 0x01, 0x05, 0x10, 0x00, 0x04,
- 0x10, 0x40, 0x01, 0x44, 0x10, 0x15, 0x51, 0x00, 0xa8, 0x80, 0x00, 0xaa,
- 0x82, 0x00, 0x00, 0x20, 0x22, 0x8a, 0xa2, 0x22, 0x22, 0x80, 0xa0, 0x88,
- 0x88, 0x88, 0x88, 0x02, 0x2a, 0x20, 0x00, 0x08, 0xa0, 0x2a, 0xaa, 0x22,
- 0x20, 0x8a, 0xa0, 0x02, 0x04, 0x01, 0x01, 0x01, 0x40, 0x00, 0x00, 0x40,
- 0x10, 0x10, 0x41, 0x54, 0x11, 0x00, 0x11, 0x40, 0x54, 0x05, 0x04, 0x05,
- 0x50, 0x11, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40, 0x10, 0x45, 0x00, 0x15,
- 0x82, 0x80, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x22, 0x88, 0x02, 0x02,
- 0x22, 0x00, 0x82, 0x08, 0x02, 0x08, 0x02, 0x0a, 0x80, 0x22, 0x00, 0x08,
- 0x20, 0x00, 0x02, 0x20, 0x20, 0xa2, 0x00, 0x28, 0x01, 0x01, 0x05, 0x01,
- 0x40, 0x00, 0x00, 0x40, 0x14, 0x51, 0x41, 0x44, 0x11, 0x40, 0x04, 0x11,
- 0x04, 0x05, 0x01, 0x14, 0x00, 0x15, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40,
- 0x10, 0x51, 0x01, 0x50, 0x82, 0x00, 0x02, 0x02, 0x80, 0x00, 0x00, 0x80,
- 0xa2, 0x88, 0x2a, 0x28, 0x22, 0x80, 0x02, 0x28, 0x8a, 0x88, 0x00, 0x28,
- 0x00, 0x22, 0x00, 0x08, 0x20, 0x00, 0x02, 0x20, 0xa0, 0xa8, 0x02, 0x20,
- 0x01, 0x05, 0x05, 0x04, 0x44, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00,
- 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00, 0x04,
- 0x40, 0x40, 0x04, 0x44, 0x10, 0x51, 0x15, 0x40, 0x82, 0x00, 0x02, 0x08,
- 0x82, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa,
- 0x2a, 0x00, 0x00, 0x00, 0x02, 0x82, 0x08, 0x08, 0x80, 0x20, 0x08, 0x22,
- 0xa0, 0xa0, 0x2a, 0x20, 0x14, 0x01, 0x00, 0x50, 0x50, 0x01, 0x00, 0x00,
- 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00,
- 0x51, 0x00, 0x05, 0x15, 0x00, 0x05, 0x50, 0x50, 0x50, 0x40, 0x15, 0x05,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x2a, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa0, 0x0a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x04, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x50, 0x55, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
- 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x10, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0xa0, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0xaa, 0x15, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00,
- 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55,
- 0xa2, 0x00, 0x80, 0x02, 0x0a, 0xa2, 0x82, 0x02, 0x0a, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0xa8, 0xa0, 0x80, 0x82, 0xa0, 0x11, 0x01, 0x00, 0x04,
- 0x11, 0x50, 0x41, 0x04, 0x11, 0x10, 0x00, 0x14, 0x44, 0x40, 0x00, 0x41,
- 0x11, 0x00, 0x14, 0x00, 0x44, 0x05, 0x05, 0x04, 0x45, 0x00, 0x10, 0x44,
- 0x11, 0x11, 0x04, 0x44, 0xa2, 0x02, 0x20, 0x80, 0x20, 0x28, 0x20, 0x08,
- 0x02, 0x20, 0x80, 0x22, 0xa8, 0xa8, 0xa0, 0x82, 0x28, 0x00, 0x28, 0x80,
- 0x22, 0x08, 0x82, 0x0a, 0x22, 0x80, 0x00, 0x82, 0x20, 0x00, 0x88, 0x8a,
- 0x51, 0x05, 0x50, 0x00, 0x10, 0x11, 0x11, 0x10, 0x01, 0x50, 0x40, 0x10,
- 0x54, 0x04, 0x11, 0x04, 0x41, 0x00, 0x50, 0x40, 0x10, 0x04, 0x44, 0x10,
- 0x44, 0x40, 0x01, 0x01, 0x10, 0x10, 0x44, 0x14, 0xa2, 0x00, 0xa0, 0x00,
- 0xa8, 0x02, 0xa0, 0x0a, 0x02, 0xa0, 0xa0, 0x00, 0x0a, 0x82, 0x08, 0x82,
- 0x20, 0x00, 0xa0, 0x20, 0x20, 0x08, 0x22, 0x08, 0x02, 0x80, 0x02, 0x02,
- 0x20, 0xa8, 0x8a, 0x82, 0x51, 0x01, 0x40, 0x01, 0x55, 0x01, 0x10, 0x00,
- 0x01, 0x40, 0x41, 0x00, 0x04, 0x54, 0x50, 0x41, 0x40, 0x00, 0x40, 0x10,
- 0x10, 0x04, 0x41, 0x05, 0x01, 0x00, 0x05, 0x01, 0x10, 0x10, 0x40, 0x50,
- 0xa2, 0x08, 0x80, 0x82, 0xa0, 0x8a, 0x20, 0x00, 0x02, 0x80, 0x22, 0x00,
- 0x02, 0x0a, 0x28, 0x80, 0x20, 0x00, 0x80, 0x20, 0x08, 0x88, 0xa0, 0x00,
- 0x02, 0x00, 0x0a, 0x02, 0x20, 0x08, 0x80, 0xa0, 0x51, 0x01, 0x00, 0x44,
- 0x50, 0x11, 0x10, 0x00, 0x01, 0x00, 0x11, 0x00, 0x01, 0x01, 0x04, 0x40,
- 0x10, 0x00, 0x40, 0x11, 0x10, 0x10, 0x11, 0x00, 0x01, 0x00, 0x10, 0x01,
- 0x10, 0x10, 0x40, 0x50, 0xa2, 0x08, 0x00, 0x88, 0x80, 0x08, 0x20, 0x00,
- 0x02, 0x02, 0x22, 0x00, 0x02, 0x02, 0x08, 0x20, 0x20, 0x00, 0x80, 0x08,
- 0x08, 0x88, 0x20, 0x80, 0x00, 0x00, 0x20, 0x02, 0x20, 0x28, 0x80, 0xa0,
- 0x51, 0x11, 0x10, 0x44, 0x40, 0x50, 0x40, 0x10, 0x01, 0x00, 0x11, 0x00,
- 0x01, 0x01, 0x04, 0x40, 0x10, 0x00, 0x01, 0x11, 0x04, 0x50, 0x10, 0x00,
- 0x01, 0x40, 0x10, 0x04, 0x11, 0x50, 0x00, 0x01, 0xa2, 0x28, 0x20, 0x82,
- 0x0a, 0x20, 0xa0, 0x0a, 0x02, 0x02, 0x22, 0x88, 0x00, 0x82, 0x08, 0x22,
- 0x08, 0x80, 0x80, 0x28, 0x08, 0x28, 0x20, 0x88, 0x00, 0x80, 0x08, 0xaa,
- 0x20, 0xa0, 0x82, 0xaa, 0x41, 0x50, 0x50, 0x01, 0x55, 0x00, 0x00, 0x05,
- 0x05, 0x05, 0x51, 0x04, 0x01, 0x45, 0x14, 0x11, 0x50, 0x00, 0x41, 0x50,
- 0x04, 0x10, 0x50, 0x44, 0x00, 0x40, 0x05, 0x50, 0x50, 0x40, 0x01, 0x14,
- 0xaa, 0xaa, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0x82,
- 0x00, 0x2a, 0xa8, 0x20, 0x28, 0x80, 0x2a, 0x20, 0x08, 0x08, 0xa0, 0x82,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x54, 0x55, 0x01, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x40, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x50,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x28, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x55, 0x55, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x2a, 0x2a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x15, 0x15, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x45,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x88, 0xa2, 0x22, 0x08, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x88, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x0a, 0x08,
- 0x02, 0x22, 0xa0, 0x80, 0x08, 0x00, 0xa0, 0x00, 0x20, 0xa0, 0xa0, 0xa0,
- 0x41, 0x01, 0x51, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01,
- 0x00, 0x00, 0x55, 0x55, 0x14, 0x00, 0x11, 0x14, 0x05, 0x45, 0x10, 0x41,
- 0x11, 0x00, 0x40, 0x01, 0x14, 0x41, 0x40, 0x10, 0x82, 0x28, 0xa2, 0xaa,
- 0x80, 0xa2, 0xa2, 0xa0, 0xa8, 0x00, 0x28, 0x28, 0x08, 0xa2, 0x02, 0xaa,
- 0xa8, 0x80, 0x20, 0x88, 0x88, 0x0a, 0x08, 0x82, 0x20, 0x00, 0x80, 0x0a,
- 0x00, 0x82, 0x00, 0x08, 0x04, 0x51, 0x51, 0x55, 0x45, 0x44, 0x11, 0x11,
- 0x11, 0x01, 0x50, 0x44, 0x04, 0x11, 0x05, 0x55, 0x41, 0x41, 0x40, 0x10,
- 0x40, 0x55, 0x04, 0x44, 0x40, 0x00, 0x00, 0x14, 0x00, 0x01, 0x01, 0x04,
- 0x88, 0xa8, 0xa8, 0x2a, 0x2a, 0x20, 0x08, 0x0a, 0x0a, 0x02, 0xa0, 0x80,
- 0x88, 0x08, 0xa2, 0xaa, 0x02, 0x22, 0x00, 0x08, 0xa0, 0x8a, 0x02, 0x88,
- 0x20, 0x00, 0x00, 0x20, 0x00, 0x82, 0x20, 0x02, 0x05, 0x55, 0x54, 0x55,
- 0x44, 0x40, 0x50, 0x51, 0x11, 0x01, 0x04, 0x51, 0x10, 0x51, 0x41, 0x55,
- 0x05, 0x44, 0x00, 0x10, 0x00, 0x50, 0x54, 0x45, 0x40, 0x00, 0x00, 0x40,
- 0x50, 0x01, 0x01, 0x54, 0x80, 0x2a, 0xaa, 0x0a, 0x28, 0x28, 0x08, 0x08,
- 0x08, 0x02, 0x88, 0x88, 0x80, 0x08, 0xa8, 0xaa, 0x0a, 0x28, 0x00, 0x08,
- 0xa0, 0x02, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80, 0x08, 0x02, 0x02, 0x02,
- 0x00, 0x15, 0x55, 0x15, 0x44, 0x44, 0x10, 0x11, 0x11, 0x01, 0x04, 0x45,
- 0x50, 0x10, 0x51, 0x55, 0x15, 0x44, 0x00, 0x10, 0x00, 0x01, 0x04, 0x40,
- 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x11, 0x04, 0x80, 0x0a, 0xaa, 0x2a,
- 0x82, 0x22, 0xa0, 0xa0, 0x08, 0x02, 0xa8, 0xa8, 0x20, 0xa0, 0xa8, 0xaa,
- 0x0a, 0x28, 0x00, 0x08, 0x80, 0x00, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80,
- 0x02, 0x02, 0x0a, 0x02, 0x00, 0x04, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x44, 0x00, 0x10,
- 0x10, 0x00, 0x04, 0x40, 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x04, 0x04,
- 0x08, 0x02, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0xaa, 0x28, 0x82, 0x00, 0x08, 0xa8, 0x80, 0x08, 0x88,
- 0x20, 0x00, 0x20, 0x20, 0x02, 0x0a, 0x0a, 0x08, 0x44, 0x00, 0x50, 0x55,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
- 0x51, 0x01, 0x11, 0x10, 0x54, 0x41, 0x10, 0x44, 0x40, 0x00, 0x40, 0x10,
- 0x04, 0x01, 0x04, 0x10, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0xa0, 0x00, 0x08, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x00, 0x0a, 0x2a,
- 0x2a, 0x0a, 0xa0, 0xa0, 0xa0, 0x00, 0x20, 0x0a, 0x28, 0x02, 0x00, 0xa0,
- 0x50, 0x01, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+#define screensaver_width 256
+#define screensaver_height 256
+static unsigned char screensaver_bits[] = {
+ 0xa8, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x40, 0x55,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x55, 0x05, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0xa0,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0xaa,
+ 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0xa0,
+ 0xaa, 0x0a, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x50,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xaa, 0x2a, 0x80, 0x02, 0x80, 0xaa, 0xaa, 0x82, 0x0a, 0xa8, 0x28, 0x80,
+ 0x8a, 0x80, 0x2a, 0x80, 0x80, 0x8a, 0xa2, 0x82, 0x0a, 0xaa, 0x0a, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x80, 0x82, 0x41, 0x40, 0x00, 0x50,
+ 0x55, 0x41, 0x00, 0x00, 0x04, 0x00, 0x54, 0x40, 0x10, 0x00, 0x40, 0x00,
+ 0x51, 0x55, 0x00, 0x15, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x41, 0x00, 0x10, 0x14, 0x00, 0x00, 0x00, 0xa8, 0x8a, 0x02, 0x00, 0x02,
+ 0x00, 0x20, 0xa2, 0x00, 0x80, 0x00, 0x08, 0x00, 0xaa, 0x2a, 0x00, 0x2a,
+ 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80,
+ 0x01, 0x00, 0x01, 0x50, 0x45, 0x05, 0x00, 0x01, 0x10, 0x10, 0x40, 0x11,
+ 0x40, 0x00, 0x44, 0x00, 0x50, 0x15, 0x01, 0x15, 0x04, 0x00, 0x40, 0x00,
+ 0x05, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x50, 0x20, 0x00, 0x00, 0xa2,
+ 0xaa, 0x2a, 0x00, 0x00, 0x02, 0x00, 0xa0, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa2, 0xaa, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x20,
+ 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x01, 0x40, 0x44, 0x15, 0x10, 0x01,
+ 0x10, 0x10, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x54, 0x55, 0x41, 0x45,
+ 0x04, 0x00, 0x40, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54,
+ 0x20, 0x80, 0x00, 0x82, 0xaa, 0x0a, 0x00, 0x00, 0x22, 0x00, 0x80, 0x0a,
+ 0x00, 0x00, 0x82, 0x00, 0xa0, 0x8a, 0x22, 0x02, 0x00, 0x08, 0x20, 0x00,
+ 0xa8, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x2a, 0x10, 0x40, 0x00, 0x01,
+ 0x54, 0x45, 0x10, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x01, 0x00,
+ 0x50, 0x45, 0x05, 0x41, 0x00, 0x04, 0x10, 0x00, 0x50, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x15, 0x00, 0x28, 0x00, 0xaa, 0xaa, 0x0a, 0x0a, 0x00,
+ 0x20, 0x08, 0x00, 0x20, 0x00, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x22, 0x2a,
+ 0x00, 0x00, 0x0a, 0x00, 0xa8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0a,
+ 0x50, 0x05, 0x00, 0x01, 0x55, 0x45, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40,
+ 0x01, 0x00, 0x00, 0x00, 0x40, 0x55, 0x11, 0x00, 0x00, 0x54, 0x01, 0x00,
+ 0x44, 0x01, 0x00, 0x00, 0x05, 0x40, 0x00, 0x05, 0x00, 0x08, 0x00, 0x80,
+ 0xaa, 0xaa, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x80, 0x00,
+ 0x80, 0xaa, 0x28, 0x20, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x00, 0x00,
+ 0x28, 0x00, 0x80, 0x02, 0x10, 0x10, 0x00, 0x01, 0x54, 0x45, 0x01, 0x00,
+ 0x41, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x10, 0x55, 0x14, 0x00,
+ 0x00, 0x04, 0x04, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x40, 0x40, 0x01,
+ 0x08, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0xa0, 0xaa, 0x00, 0x80, 0x28, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x80, 0x02, 0x00, 0x00, 0x80, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x14, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+ 0x00, 0x40, 0x00, 0x00, 0x08, 0x20, 0x80, 0x00, 0x08, 0x08, 0x80, 0x80,
+ 0x80, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x8a, 0x00,
+ 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01,
+ 0x10, 0x10, 0x00, 0x01, 0x10, 0x45, 0x55, 0x01, 0x00, 0x00, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00,
+ 0x20, 0xa2, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+ 0x00, 0x80, 0x00, 0x02, 0x04, 0x00, 0x40, 0x00, 0x04, 0x04, 0x40, 0x40,
+ 0x00, 0x01, 0x00, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00, 0x51, 0x45, 0x05,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x45, 0x01,
+ 0x2a, 0x80, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xa0, 0x02, 0x02, 0x80, 0xa8,
+ 0x00, 0x2a, 0xa0, 0x02, 0x80, 0xa2, 0x00, 0xa0, 0xa0, 0x0a, 0xa0, 0x00,
+ 0x00, 0x00, 0x80, 0x88, 0x02, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x50, 0x41, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+ 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0xaa, 0x0a,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x54, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x2a, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
+ 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x55, 0x55,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x15, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa8, 0xaa,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x15, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
+ 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x2a, 0x20, 0x00, 0x00, 0x41, 0x05, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14,
+ 0x40, 0x10, 0x44, 0x15, 0x15, 0x00, 0x00, 0x50, 0x01, 0x00, 0x50, 0x55,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x10, 0x50, 0x40,
+ 0x82, 0x08, 0x02, 0x08, 0x20, 0x08, 0x00, 0x22, 0xa0, 0x20, 0x88, 0x00,
+ 0x22, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x80, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x88, 0x20, 0x44, 0x10, 0x01, 0x04,
+ 0x50, 0x04, 0x00, 0x41, 0x10, 0x11, 0x44, 0x00, 0x41, 0x00, 0x00, 0x54,
+ 0x41, 0x00, 0x40, 0x55, 0x15, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x54, 0x11, 0x04, 0x11, 0x80, 0x20, 0x02, 0x08, 0xa0, 0x08, 0x00, 0x02,
+ 0x88, 0x20, 0x88, 0x00, 0x82, 0x00, 0x00, 0x2a, 0x22, 0x00, 0x80, 0xaa,
+ 0x2a, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x08, 0x20,
+ 0x40, 0x10, 0x01, 0x04, 0x50, 0x04, 0x00, 0x01, 0x04, 0x41, 0x44, 0x00,
+ 0x41, 0x00, 0x00, 0x15, 0x05, 0x14, 0x15, 0x50, 0x10, 0x05, 0x40, 0x41,
+ 0x41, 0x10, 0x45, 0x05, 0x50, 0x04, 0x04, 0x10, 0x80, 0x20, 0x02, 0x08,
+ 0xa0, 0x08, 0x00, 0x02, 0x08, 0x22, 0x82, 0x00, 0x82, 0x00, 0x00, 0x0a,
+ 0x2a, 0x22, 0x8a, 0x22, 0x22, 0x08, 0x80, 0x22, 0x22, 0x88, 0x88, 0x02,
+ 0x28, 0x02, 0x08, 0x20, 0x40, 0x10, 0x15, 0x54, 0x10, 0x05, 0x00, 0x14,
+ 0x04, 0x41, 0x44, 0x05, 0x41, 0x00, 0x00, 0x05, 0x50, 0x01, 0x41, 0x04,
+ 0x05, 0x11, 0x00, 0x05, 0x44, 0x44, 0x50, 0x00, 0x10, 0x05, 0x50, 0x10,
+ 0x80, 0x0a, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x20, 0xa8, 0x82, 0x82, 0x00,
+ 0x2a, 0x00, 0x80, 0x02, 0x22, 0x02, 0x82, 0x20, 0x20, 0x08, 0x20, 0x88,
+ 0x82, 0x88, 0x8a, 0x00, 0x88, 0x0a, 0x80, 0x20, 0x40, 0x04, 0x01, 0x04,
+ 0x10, 0x05, 0x00, 0x40, 0x04, 0x41, 0x41, 0x00, 0x11, 0x00, 0x40, 0x01,
+ 0x41, 0x41, 0x41, 0x14, 0x15, 0x11, 0x40, 0x44, 0x04, 0x44, 0x40, 0x00,
+ 0x44, 0x15, 0x00, 0x11, 0x80, 0x08, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x80,
+ 0x08, 0x82, 0x82, 0x00, 0x22, 0x00, 0xa0, 0x00, 0x22, 0x22, 0x82, 0x20,
+ 0x22, 0x0a, 0x20, 0x28, 0x82, 0x82, 0x88, 0x00, 0x88, 0x2a, 0x00, 0x22,
+ 0x44, 0x10, 0x01, 0x04, 0x10, 0x04, 0x00, 0x41, 0x04, 0x01, 0x41, 0x00,
+ 0x41, 0x00, 0x50, 0x01, 0x14, 0x14, 0x01, 0x55, 0x10, 0x15, 0x40, 0x45,
+ 0x05, 0x01, 0x45, 0x00, 0x04, 0x55, 0x04, 0x11, 0x82, 0x20, 0x02, 0x08,
+ 0x20, 0x08, 0x00, 0x22, 0x08, 0x82, 0x80, 0x00, 0x82, 0x00, 0xa8, 0x00,
+ 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0xaa, 0x88, 0x20, 0x41, 0x10, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14,
+ 0x04, 0x01, 0x41, 0x15, 0x41, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x51, 0x40,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x15, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x00, 0x54, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa8, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00,
+ 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x10, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+ 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15,
+ 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x15, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00,
+ 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa,
+ 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x14, 0x40, 0x01, 0x41, 0x40, 0x01, 0x14, 0x10, 0x01, 0x00, 0x40,
+ 0x01, 0x04, 0x14, 0x14, 0x14, 0x10, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0a, 0xaa, 0x00, 0x00, 0x00, 0x80, 0x82, 0xa0, 0x20, 0x82,
+ 0xa2, 0x20, 0x02, 0x22, 0x28, 0x02, 0x00, 0x08, 0x8a, 0x22, 0x08, 0x08,
+ 0x22, 0x28, 0x0a, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x54,
+ 0x01, 0x00, 0x00, 0x40, 0x41, 0x40, 0x10, 0x04, 0x11, 0x11, 0x04, 0x41,
+ 0x10, 0x04, 0x00, 0x04, 0x04, 0x40, 0x10, 0x00, 0x41, 0x10, 0x11, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xaa, 0x02, 0x00, 0x00, 0xa0,
+ 0x82, 0x80, 0x08, 0x08, 0x02, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x08,
+ 0x08, 0x20, 0x20, 0x80, 0x80, 0x20, 0x00, 0x00, 0x10, 0x50, 0x14, 0x14,
+ 0x45, 0x05, 0x40, 0x05, 0x41, 0x14, 0x15, 0x50, 0x41, 0x01, 0x04, 0x00,
+ 0x01, 0x04, 0x50, 0x00, 0x11, 0x04, 0x00, 0x14, 0x00, 0x40, 0x10, 0x44,
+ 0x00, 0x11, 0x00, 0x00, 0xa0, 0x88, 0x22, 0xa2, 0x88, 0x08, 0x00, 0x2a,
+ 0x82, 0x22, 0x22, 0xa8, 0x80, 0x0a, 0x08, 0x00, 0x02, 0xa8, 0x8a, 0xaa,
+ 0x08, 0x08, 0x00, 0xa8, 0x00, 0x2a, 0x20, 0x80, 0xaa, 0x20, 0x00, 0x00,
+ 0x00, 0x05, 0x04, 0x15, 0x55, 0x04, 0x40, 0x04, 0x50, 0x54, 0x01, 0x54,
+ 0x00, 0x54, 0x04, 0x00, 0x01, 0x04, 0x40, 0x00, 0x10, 0x04, 0x00, 0x40,
+ 0x05, 0x41, 0x40, 0x40, 0x00, 0x10, 0x00, 0x00, 0x80, 0x08, 0x02, 0x82,
+ 0x80, 0x08, 0x80, 0x20, 0x02, 0x02, 0x02, 0x2a, 0x00, 0xa0, 0x08, 0x00,
+ 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00, 0x8a, 0x20, 0x20, 0x82,
+ 0x00, 0x20, 0x00, 0x00, 0x10, 0x45, 0x04, 0x11, 0x51, 0x04, 0x50, 0x44,
+ 0x44, 0x44, 0x01, 0x15, 0x00, 0x40, 0x05, 0x00, 0x01, 0x04, 0x40, 0x00,
+ 0x10, 0x04, 0x00, 0x00, 0x54, 0x40, 0x40, 0x41, 0x00, 0x10, 0x00, 0x00,
+ 0xa0, 0x28, 0x02, 0x0a, 0x8a, 0x08, 0x20, 0x0a, 0x0a, 0x28, 0x02, 0x0a,
+ 0x00, 0x80, 0x08, 0x00, 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00,
+ 0x88, 0x20, 0x80, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x05, 0x40, 0x00, 0x11, 0x00,
+ 0x01, 0x10, 0x10, 0x01, 0x11, 0x04, 0x00, 0x04, 0x50, 0x40, 0x41, 0x01,
+ 0x01, 0x11, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
+ 0xaa, 0x00, 0x80, 0x02, 0x80, 0x80, 0x20, 0x02, 0x02, 0x20, 0x08, 0x82,
+ 0x08, 0x08, 0x00, 0x08, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x00, 0x00,
+ 0x00, 0x40, 0x01, 0x10, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x40, 0x01,
+ 0x40, 0x14, 0x40, 0x41, 0x05, 0x40, 0x01, 0x14, 0x14, 0x14, 0x00, 0x44,
+ 0x01, 0x45, 0x00, 0x00, 0x14, 0x54, 0x00, 0x00, 0x00, 0x80, 0x02, 0x08,
+ 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x50,
+ 0x55, 0x05, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0xa8, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01,
+ 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0,
+ 0xaa, 0x0a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x15, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x8a, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0xa8, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x05, 0x50, 0x00, 0x50, 0x40, 0x45, 0x11, 0x00, 0x50,
+ 0x40, 0x41, 0x01, 0x00, 0x14, 0x00, 0x51, 0x40, 0x40, 0x00, 0x05, 0x14,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a,
+ 0x88, 0x02, 0xaa, 0xa8, 0x80, 0x00, 0x00, 0xaa, 0xa8, 0xa2, 0x02, 0x00,
+ 0xa2, 0xa0, 0x22, 0xa8, 0xa0, 0xa0, 0x8a, 0x2a, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x04, 0x01, 0x45, 0x51,
+ 0x04, 0x40, 0x00, 0x45, 0x41, 0x51, 0x01, 0x00, 0x41, 0x50, 0x54, 0x50,
+ 0x50, 0x50, 0x14, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0a, 0x82, 0xa2, 0xa0, 0x02, 0xa0, 0x88, 0x82,
+ 0xa0, 0x88, 0x02, 0x80, 0x82, 0x28, 0x28, 0xa0, 0x20, 0x28, 0x08, 0x8a,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x45, 0x54, 0x00,
+ 0x14, 0x40, 0x41, 0x50, 0x05, 0x51, 0x10, 0x41, 0x41, 0x41, 0x01, 0x00,
+ 0x05, 0x14, 0x10, 0x50, 0x40, 0x10, 0x14, 0x54, 0x04, 0x00, 0x41, 0x55,
+ 0x04, 0x45, 0x01, 0x04, 0x20, 0x02, 0x08, 0x00, 0x2a, 0xa0, 0x00, 0xa0,
+ 0x8a, 0x20, 0xa8, 0xa2, 0xa0, 0xa0, 0x00, 0x80, 0x0a, 0x28, 0x28, 0xa0,
+ 0x20, 0x28, 0x0a, 0x2a, 0x00, 0x00, 0x22, 0x0a, 0x80, 0x88, 0x02, 0x88,
+ 0x04, 0x50, 0x01, 0x00, 0x54, 0x40, 0x01, 0x50, 0x15, 0x10, 0x14, 0x51,
+ 0x40, 0x41, 0x01, 0x00, 0x15, 0x14, 0x14, 0x40, 0x11, 0x14, 0x05, 0x14,
+ 0x00, 0x40, 0x10, 0x00, 0x15, 0x45, 0x04, 0x01, 0x00, 0x00, 0x08, 0x00,
+ 0xa8, 0xa0, 0x00, 0x28, 0x8a, 0x08, 0x0a, 0x28, 0xa0, 0xa0, 0x00, 0x00,
+ 0x2a, 0x0a, 0x28, 0xa0, 0x08, 0x8a, 0x02, 0x0a, 0x00, 0x80, 0x00, 0x08,
+ 0x80, 0x00, 0x00, 0x82, 0x44, 0x11, 0x00, 0x00, 0x50, 0x50, 0x00, 0x10,
+ 0x05, 0x40, 0x15, 0x05, 0x50, 0x50, 0x00, 0x00, 0x14, 0x14, 0x14, 0x40,
+ 0x11, 0x54, 0x00, 0x05, 0x00, 0x00, 0x11, 0x00, 0x01, 0x40, 0x04, 0x44,
+ 0x80, 0x20, 0x0a, 0x00, 0xa0, 0xa0, 0x00, 0x88, 0x82, 0xa8, 0x0a, 0x00,
+ 0xa0, 0xa0, 0x00, 0x00, 0x28, 0x0a, 0x0a, 0xa0, 0x08, 0x0a, 0x00, 0x0a,
+ 0x00, 0x00, 0x22, 0x0a, 0xa2, 0x00, 0x00, 0x88, 0x01, 0x40, 0x15, 0x00,
+ 0x50, 0x51, 0x40, 0x00, 0x01, 0x51, 0x15, 0x00, 0x50, 0x50, 0x00, 0x00,
+ 0x54, 0x14, 0x54, 0x40, 0x05, 0x14, 0x00, 0x05, 0x00, 0x40, 0x41, 0x15,
+ 0x14, 0x45, 0x04, 0x05, 0x00, 0x00, 0x00, 0x80, 0xa0, 0xa0, 0x20, 0x88,
+ 0x80, 0xaa, 0x08, 0x82, 0x28, 0x28, 0x02, 0x20, 0x28, 0x0a, 0x2a, 0xa0,
+ 0x02, 0x0a, 0x88, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x41, 0x40, 0x11, 0x44, 0x00, 0x55, 0x14, 0x44,
+ 0x50, 0x50, 0x01, 0x40, 0x10, 0x54, 0x15, 0x40, 0x01, 0x14, 0x04, 0x45,
+ 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x22, 0xa0, 0x0a, 0x00, 0x00, 0x0a, 0x2a, 0x20, 0x28, 0xa8, 0x00, 0xa0,
+ 0x08, 0xa8, 0x08, 0xa0, 0x00, 0xa8, 0x82, 0x82, 0x02, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0x00,
+ 0x00, 0x54, 0x55, 0x10, 0x50, 0x50, 0x00, 0x00, 0x05, 0x50, 0x04, 0x40,
+ 0x00, 0x50, 0x40, 0x05, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x80, 0xaa, 0x2a,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a,
+ 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x55, 0x55,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01,
+ 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa8, 0xaa,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00,
+ 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x50, 0x55,
+ 0x05, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x28,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x50, 0x04, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x80, 0xaa,
+ 0x2a, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x50, 0x15,
+ 0x55, 0x11, 0x55, 0x00, 0x15, 0x00, 0x54, 0x01, 0x00, 0x54, 0x01, 0x40,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x50, 0x00, 0x20, 0x82, 0x20, 0x08, 0x82, 0x00, 0x22, 0x80,
+ 0x08, 0x08, 0x28, 0xa2, 0x28, 0x20, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xa2,
+ 0x00, 0x04, 0x41, 0x10, 0x04, 0x11, 0x00, 0x40, 0x10, 0x14, 0x10, 0x54,
+ 0x54, 0x11, 0x10, 0x00, 0x01, 0x00, 0x50, 0x14, 0x15, 0x05, 0x45, 0x01,
+ 0x50, 0x50, 0x44, 0x14, 0x05, 0x00, 0x04, 0x40, 0x20, 0x02, 0x22, 0x02,
+ 0x22, 0x08, 0x20, 0x20, 0x00, 0x08, 0x20, 0xa8, 0x28, 0x22, 0x08, 0x80,
+ 0x02, 0x00, 0x88, 0x22, 0xa2, 0x88, 0x28, 0x02, 0x88, 0x80, 0x22, 0xa2,
+ 0x08, 0x00, 0x08, 0x22, 0x00, 0x04, 0x41, 0x00, 0x04, 0x00, 0x01, 0x40,
+ 0x00, 0x10, 0x40, 0x04, 0x11, 0x10, 0x04, 0x10, 0x05, 0x00, 0x10, 0x04,
+ 0x01, 0x55, 0x45, 0x04, 0x10, 0x50, 0x44, 0x15, 0x01, 0x00, 0x14, 0x10,
+ 0x00, 0x2a, 0xa0, 0x02, 0x2a, 0x20, 0x22, 0x80, 0x02, 0x22, 0x20, 0x02,
+ 0x0a, 0xa0, 0x02, 0x08, 0x0a, 0x00, 0x20, 0x02, 0x82, 0x80, 0x20, 0x02,
+ 0x80, 0x88, 0x28, 0x82, 0x00, 0x00, 0xa8, 0x20, 0x00, 0x44, 0x40, 0x01,
+ 0x14, 0x00, 0x04, 0x00, 0x05, 0x10, 0x40, 0x00, 0x11, 0x10, 0x05, 0x04,
+ 0x14, 0x00, 0x44, 0x44, 0x01, 0x51, 0x44, 0x04, 0x10, 0x45, 0x14, 0x11,
+ 0x01, 0x00, 0x50, 0x11, 0x00, 0x82, 0x20, 0x02, 0x22, 0x20, 0x28, 0x20,
+ 0x08, 0x2a, 0x80, 0x02, 0x02, 0x20, 0x08, 0x00, 0x00, 0x00, 0x28, 0x28,
+ 0x02, 0x8a, 0x22, 0x02, 0xa0, 0xa8, 0x08, 0x8a, 0x00, 0x00, 0x80, 0x22,
+ 0x00, 0x04, 0x41, 0x10, 0x04, 0x01, 0x10, 0x00, 0x10, 0x41, 0x40, 0x01,
+ 0x11, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x51, 0x20, 0x82, 0x20, 0x00,
+ 0x02, 0x20, 0x28, 0x20, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x28, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x22, 0x10, 0x04, 0x45, 0x10, 0x04, 0x01, 0x10, 0x40,
+ 0x04, 0x40, 0x00, 0x00, 0x41, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x41,
+ 0x8a, 0x0a, 0xaa, 0x8a, 0xaa, 0xa8, 0x20, 0xa0, 0x82, 0xa2, 0x80, 0x80,
+ 0xaa, 0xa8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x15, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xa0, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x2a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x10, 0x50,
+ 0x41, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x15, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa0, 0x80, 0x02, 0xa8, 0x28,
+ 0x0a, 0xa0, 0x02, 0xa8, 0x00, 0x8a, 0x02, 0x28, 0x00, 0x00, 0x00, 0x0a,
+ 0x28, 0x80, 0x2a, 0x80, 0x22, 0x80, 0x0a, 0x00, 0xa8, 0x00, 0x28, 0x2a,
+ 0x00, 0x05, 0x00, 0x50, 0x00, 0x00, 0x55, 0x51, 0x14, 0x14, 0x54, 0x54,
+ 0x01, 0x54, 0x01, 0x50, 0x50, 0x05, 0x00, 0x05, 0x00, 0x50, 0x55, 0x40,
+ 0x51, 0x50, 0x15, 0x00, 0x54, 0x05, 0x14, 0x55, 0x00, 0x0a, 0x00, 0xa0,
+ 0x00, 0x80, 0xaa, 0x2a, 0x2a, 0x08, 0x2a, 0xa8, 0x02, 0xaa, 0x02, 0xa0,
+ 0xa0, 0x02, 0x00, 0x0a, 0x00, 0xa8, 0xaa, 0x80, 0x2a, 0xa8, 0x2a, 0x80,
+ 0xaa, 0x0a, 0xa8, 0xaa, 0x01, 0x05, 0x00, 0x50, 0x05, 0x40, 0x55, 0x55,
+ 0x14, 0x00, 0x14, 0x50, 0x05, 0x54, 0x01, 0x40, 0x51, 0x01, 0x00, 0x55,
+ 0x00, 0x54, 0x55, 0x41, 0x15, 0x54, 0x55, 0x40, 0x55, 0x15, 0x54, 0x55,
+ 0x02, 0x0a, 0x00, 0xa0, 0x0a, 0xa0, 0x02, 0x2a, 0x2a, 0x00, 0x0a, 0x88,
+ 0x0a, 0x2a, 0x00, 0x80, 0xaa, 0x00, 0x00, 0xaa, 0x00, 0xaa, 0xa0, 0xa2,
+ 0x0a, 0x2a, 0xa8, 0xa0, 0x0a, 0x0a, 0xaa, 0xa0, 0x01, 0x14, 0x01, 0x40,
+ 0x55, 0x50, 0x01, 0x14, 0x14, 0x00, 0x05, 0x04, 0x15, 0x15, 0x00, 0x00,
+ 0x51, 0x00, 0x00, 0x54, 0x05, 0x14, 0x40, 0x45, 0x05, 0x15, 0x50, 0x41,
+ 0x01, 0x14, 0x54, 0x40, 0x02, 0xa8, 0x00, 0x80, 0xaa, 0xa8, 0x00, 0x2a,
+ 0x28, 0x88, 0x02, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
+ 0x0a, 0x0a, 0xa0, 0xa2, 0x82, 0x0a, 0xa0, 0xa0, 0x00, 0x28, 0x2a, 0xa0,
+ 0x01, 0x50, 0x00, 0x00, 0x55, 0x50, 0x00, 0x14, 0x54, 0x54, 0x05, 0x15,
+ 0x14, 0x15, 0x00, 0x00, 0x11, 0x00, 0x00, 0x50, 0x05, 0x15, 0x00, 0x40,
+ 0x01, 0x05, 0x40, 0x51, 0x00, 0x14, 0x14, 0x40, 0x00, 0xa8, 0x00, 0x00,
+ 0xa8, 0x28, 0x00, 0x28, 0x28, 0xa8, 0x02, 0x80, 0x0a, 0x0a, 0x00, 0x80,
+ 0x08, 0x00, 0x00, 0x80, 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0xaa, 0xaa, 0xa8,
+ 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x44, 0x01, 0x00, 0x50, 0x55, 0x00, 0x14,
+ 0x50, 0x14, 0x01, 0x00, 0x15, 0x05, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00,
+ 0x15, 0x05, 0x00, 0x50, 0x41, 0x55, 0x55, 0x51, 0x55, 0x15, 0x15, 0x40,
+ 0x00, 0x80, 0x02, 0x00, 0xa0, 0x28, 0x00, 0x0a, 0x28, 0x0a, 0x02, 0x00,
+ 0x8a, 0x0a, 0x00, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x8a, 0x0a, 0x00, 0xa0,
+ 0x80, 0xaa, 0xaa, 0xa8, 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x40, 0x01, 0x00,
+ 0x50, 0x55, 0x00, 0x14, 0x50, 0x05, 0x00, 0x00, 0x14, 0x05, 0x00, 0x50,
+ 0x50, 0x00, 0x00, 0x00, 0x15, 0x05, 0x00, 0x50, 0x40, 0x55, 0x55, 0x51,
+ 0x55, 0x15, 0x05, 0x50, 0x00, 0x80, 0x02, 0x2a, 0xa8, 0x28, 0x00, 0x0a,
+ 0xa8, 0x0a, 0x80, 0xaa, 0x82, 0x02, 0x00, 0x20, 0xa0, 0x00, 0xa0, 0x82,
+ 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0x02, 0x00, 0x28, 0x00, 0x00, 0x0a, 0xa0,
+ 0x00, 0x00, 0x05, 0x14, 0x50, 0x54, 0x00, 0x15, 0x50, 0x05, 0x40, 0x55,
+ 0x01, 0x05, 0x00, 0x10, 0x40, 0x01, 0x40, 0x01, 0x05, 0x15, 0x50, 0x51,
+ 0x40, 0x01, 0x00, 0x50, 0x00, 0x00, 0x05, 0x50, 0x00, 0x00, 0x0a, 0x2a,
+ 0xa8, 0xa8, 0x80, 0x0a, 0xa0, 0x02, 0x80, 0x0a, 0x80, 0x02, 0x00, 0x08,
+ 0x80, 0x02, 0xa0, 0x82, 0x0a, 0x2a, 0xa8, 0xa0, 0x80, 0x02, 0x2a, 0xa8,
+ 0x80, 0x8a, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x54, 0x55, 0x50, 0x55, 0x05,
+ 0x50, 0x01, 0x00, 0x00, 0x44, 0x05, 0x00, 0x04, 0x00, 0x05, 0x40, 0x55,
+ 0x05, 0x54, 0x55, 0x50, 0x00, 0x55, 0x15, 0x50, 0x55, 0x05, 0x05, 0x50,
+ 0x00, 0x00, 0x00, 0xa8, 0x2a, 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x08, 0x00,
+ 0x8a, 0x02, 0x00, 0x0a, 0x00, 0x00, 0x80, 0xaa, 0x02, 0xaa, 0x2a, 0x28,
+ 0x80, 0xaa, 0x0a, 0xa0, 0xaa, 0x82, 0x02, 0x28, 0x00, 0x00, 0x00, 0x50,
+ 0x15, 0x40, 0x55, 0x05, 0x40, 0x01, 0x10, 0x00, 0x55, 0x01, 0x00, 0x05,
+ 0x00, 0x00, 0x00, 0x55, 0x01, 0x54, 0x15, 0x50, 0x00, 0x55, 0x05, 0x40,
+ 0x55, 0x01, 0x05, 0x50, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x80, 0x0a, 0x0a,
+ 0xa0, 0x00, 0x00, 0xa0, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x2a,
+ 0x00, 0xa0, 0x0a, 0x28, 0x00, 0xa8, 0x00, 0x80, 0x2a, 0x80, 0x02, 0x28,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+ 0x55, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0xa0, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
+ 0xaa, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x50, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x55, 0x05, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x0a, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x45, 0x05, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0xa0, 0x22, 0xa8, 0x0a, 0xa8, 0x00,
+ 0xa8, 0xa0, 0x28, 0x80, 0xaa, 0x22, 0x28, 0xa0, 0x02, 0x2a, 0x2a, 0xa0,
+ 0x02, 0x8a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x15, 0x50, 0x15, 0x54, 0x15, 0x54, 0x01, 0x55, 0x41, 0x55, 0x00,
+ 0x55, 0x11, 0x54, 0x50, 0x05, 0x54, 0x54, 0x54, 0x05, 0x54, 0x05, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x08, 0x08,
+ 0x20, 0x08, 0x02, 0x82, 0x82, 0x82, 0x82, 0x00, 0xaa, 0x08, 0x20, 0x20,
+ 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x50, 0x10, 0x04, 0x10, 0x10, 0x00, 0x01, 0x04,
+ 0x01, 0x01, 0x01, 0x01, 0x54, 0x14, 0x11, 0x00, 0x10, 0x10, 0x04, 0x04,
+ 0x04, 0x10, 0x00, 0x14, 0x51, 0x10, 0x44, 0x01, 0x50, 0x44, 0x44, 0x14,
+ 0xa0, 0x00, 0x02, 0x08, 0x08, 0x80, 0x00, 0x82, 0x00, 0x82, 0x80, 0x00,
+ 0xa8, 0x28, 0x00, 0xa0, 0x0a, 0x20, 0x08, 0x02, 0x08, 0x08, 0x00, 0x00,
+ 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x05, 0x04, 0x00,
+ 0x10, 0x00, 0x55, 0x45, 0x55, 0x41, 0x40, 0x00, 0x54, 0x54, 0x00, 0x50,
+ 0x05, 0x10, 0x04, 0x55, 0x05, 0x04, 0x00, 0x44, 0x10, 0x14, 0x45, 0x04,
+ 0x10, 0x54, 0x54, 0x04, 0x00, 0x0a, 0x02, 0x00, 0x08, 0x80, 0xaa, 0x82,
+ 0xaa, 0x82, 0x80, 0x00, 0x2a, 0xaa, 0x00, 0x08, 0x08, 0x20, 0x02, 0xaa,
+ 0x0a, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
+ 0x10, 0x14, 0x04, 0x00, 0x04, 0x00, 0x01, 0x40, 0x00, 0x40, 0x40, 0x00,
+ 0x15, 0x45, 0x15, 0x04, 0x04, 0x10, 0x01, 0x01, 0x00, 0x04, 0x00, 0x05,
+ 0x15, 0x10, 0x44, 0x04, 0x14, 0x14, 0x41, 0x04, 0x08, 0x08, 0x0a, 0x08,
+ 0x08, 0x80, 0x02, 0x82, 0x80, 0x20, 0x20, 0x80, 0x8a, 0x8a, 0x22, 0x02,
+ 0x02, 0xa0, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x54, 0x05, 0x54, 0x15, 0x55, 0x01, 0x55, 0x01,
+ 0x55, 0x51, 0x51, 0x01, 0x45, 0x05, 0x00, 0x54, 0x15, 0x40, 0x00, 0x54,
+ 0x45, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa8, 0x02, 0xa8, 0x82, 0xaa, 0x00, 0xaa, 0x00, 0x2a, 0xa8, 0xa8, 0x80,
+ 0x82, 0x22, 0x20, 0xa8, 0x0a, 0x20, 0x00, 0xa8, 0x80, 0xaa, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x55, 0x55, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xa0, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0xa8, 0xaa, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x2a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x54, 0x00, 0x54, 0x55, 0x01, 0x00, 0x40, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a,
+ 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x50, 0x55, 0x05,
+ 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x54, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x0a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x0a, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05,
+ 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x80, 0xaa, 0x2a,
+ 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa8, 0x02, 0x08, 0x00, 0x10, 0x50, 0x50, 0x50, 0x40, 0x10, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x50, 0x00,
+ 0x50, 0x00, 0x05, 0x04, 0x01, 0x05, 0x50, 0x40, 0x54, 0x05, 0x04, 0x05,
+ 0x8a, 0x20, 0x20, 0x88, 0xa0, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00,
+ 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x20, 0x00, 0x82, 0x82, 0x08, 0x8a,
+ 0x82, 0x08, 0x88, 0xa0, 0xa8, 0x0a, 0x22, 0x28, 0x00, 0x41, 0x00, 0x04,
+ 0x41, 0x44, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x55, 0x55,
+ 0x00, 0x00, 0x10, 0x00, 0x01, 0x41, 0x10, 0x44, 0x44, 0x10, 0x04, 0x41,
+ 0x50, 0x15, 0x11, 0x10, 0x80, 0x80, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x80, 0x00,
+ 0x02, 0x22, 0x20, 0x08, 0x20, 0x20, 0x02, 0x22, 0xa0, 0x2a, 0x22, 0x20,
+ 0x00, 0x41, 0x10, 0x01, 0x44, 0x00, 0x00, 0x40, 0x41, 0x51, 0x04, 0x14,
+ 0x15, 0x00, 0x11, 0x44, 0x50, 0x54, 0x40, 0x01, 0x05, 0x10, 0x00, 0x04,
+ 0x10, 0x40, 0x01, 0x44, 0x10, 0x15, 0x51, 0x00, 0xa8, 0x80, 0x00, 0xaa,
+ 0x82, 0x00, 0x00, 0x20, 0x22, 0x8a, 0xa2, 0x22, 0x22, 0x80, 0xa0, 0x88,
+ 0x88, 0x88, 0x88, 0x02, 0x2a, 0x20, 0x00, 0x08, 0xa0, 0x2a, 0xaa, 0x22,
+ 0x20, 0x8a, 0xa0, 0x02, 0x04, 0x01, 0x01, 0x01, 0x40, 0x00, 0x00, 0x40,
+ 0x10, 0x10, 0x41, 0x54, 0x11, 0x00, 0x11, 0x40, 0x54, 0x05, 0x04, 0x05,
+ 0x50, 0x11, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40, 0x10, 0x45, 0x00, 0x15,
+ 0x82, 0x80, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x22, 0x88, 0x02, 0x02,
+ 0x22, 0x00, 0x82, 0x08, 0x02, 0x08, 0x02, 0x0a, 0x80, 0x22, 0x00, 0x08,
+ 0x20, 0x00, 0x02, 0x20, 0x20, 0xa2, 0x00, 0x28, 0x01, 0x01, 0x05, 0x01,
+ 0x40, 0x00, 0x00, 0x40, 0x14, 0x51, 0x41, 0x44, 0x11, 0x40, 0x04, 0x11,
+ 0x04, 0x05, 0x01, 0x14, 0x00, 0x15, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40,
+ 0x10, 0x51, 0x01, 0x50, 0x82, 0x00, 0x02, 0x02, 0x80, 0x00, 0x00, 0x80,
+ 0xa2, 0x88, 0x2a, 0x28, 0x22, 0x80, 0x02, 0x28, 0x8a, 0x88, 0x00, 0x28,
+ 0x00, 0x22, 0x00, 0x08, 0x20, 0x00, 0x02, 0x20, 0xa0, 0xa8, 0x02, 0x20,
+ 0x01, 0x05, 0x05, 0x04, 0x44, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00,
+ 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00, 0x04,
+ 0x40, 0x40, 0x04, 0x44, 0x10, 0x51, 0x15, 0x40, 0x82, 0x00, 0x02, 0x08,
+ 0x82, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa,
+ 0x2a, 0x00, 0x00, 0x00, 0x02, 0x82, 0x08, 0x08, 0x80, 0x20, 0x08, 0x22,
+ 0xa0, 0xa0, 0x2a, 0x20, 0x14, 0x01, 0x00, 0x50, 0x50, 0x01, 0x00, 0x00,
+ 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00,
+ 0x51, 0x00, 0x05, 0x15, 0x00, 0x05, 0x50, 0x50, 0x50, 0x40, 0x15, 0x05,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x2a, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa0, 0x0a,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x04, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x50, 0x55, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
+ 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x10, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x2a, 0x00, 0x00, 0x00,
+ 0x00, 0xa0, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xaa, 0x15, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00,
+ 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55,
+ 0xa2, 0x00, 0x80, 0x02, 0x0a, 0xa2, 0x82, 0x02, 0x0a, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0a, 0xa8, 0xa0, 0x80, 0x82, 0xa0, 0x11, 0x01, 0x00, 0x04,
+ 0x11, 0x50, 0x41, 0x04, 0x11, 0x10, 0x00, 0x14, 0x44, 0x40, 0x00, 0x41,
+ 0x11, 0x00, 0x14, 0x00, 0x44, 0x05, 0x05, 0x04, 0x45, 0x00, 0x10, 0x44,
+ 0x11, 0x11, 0x04, 0x44, 0xa2, 0x02, 0x20, 0x80, 0x20, 0x28, 0x20, 0x08,
+ 0x02, 0x20, 0x80, 0x22, 0xa8, 0xa8, 0xa0, 0x82, 0x28, 0x00, 0x28, 0x80,
+ 0x22, 0x08, 0x82, 0x0a, 0x22, 0x80, 0x00, 0x82, 0x20, 0x00, 0x88, 0x8a,
+ 0x51, 0x05, 0x50, 0x00, 0x10, 0x11, 0x11, 0x10, 0x01, 0x50, 0x40, 0x10,
+ 0x54, 0x04, 0x11, 0x04, 0x41, 0x00, 0x50, 0x40, 0x10, 0x04, 0x44, 0x10,
+ 0x44, 0x40, 0x01, 0x01, 0x10, 0x10, 0x44, 0x14, 0xa2, 0x00, 0xa0, 0x00,
+ 0xa8, 0x02, 0xa0, 0x0a, 0x02, 0xa0, 0xa0, 0x00, 0x0a, 0x82, 0x08, 0x82,
+ 0x20, 0x00, 0xa0, 0x20, 0x20, 0x08, 0x22, 0x08, 0x02, 0x80, 0x02, 0x02,
+ 0x20, 0xa8, 0x8a, 0x82, 0x51, 0x01, 0x40, 0x01, 0x55, 0x01, 0x10, 0x00,
+ 0x01, 0x40, 0x41, 0x00, 0x04, 0x54, 0x50, 0x41, 0x40, 0x00, 0x40, 0x10,
+ 0x10, 0x04, 0x41, 0x05, 0x01, 0x00, 0x05, 0x01, 0x10, 0x10, 0x40, 0x50,
+ 0xa2, 0x08, 0x80, 0x82, 0xa0, 0x8a, 0x20, 0x00, 0x02, 0x80, 0x22, 0x00,
+ 0x02, 0x0a, 0x28, 0x80, 0x20, 0x00, 0x80, 0x20, 0x08, 0x88, 0xa0, 0x00,
+ 0x02, 0x00, 0x0a, 0x02, 0x20, 0x08, 0x80, 0xa0, 0x51, 0x01, 0x00, 0x44,
+ 0x50, 0x11, 0x10, 0x00, 0x01, 0x00, 0x11, 0x00, 0x01, 0x01, 0x04, 0x40,
+ 0x10, 0x00, 0x40, 0x11, 0x10, 0x10, 0x11, 0x00, 0x01, 0x00, 0x10, 0x01,
+ 0x10, 0x10, 0x40, 0x50, 0xa2, 0x08, 0x00, 0x88, 0x80, 0x08, 0x20, 0x00,
+ 0x02, 0x02, 0x22, 0x00, 0x02, 0x02, 0x08, 0x20, 0x20, 0x00, 0x80, 0x08,
+ 0x08, 0x88, 0x20, 0x80, 0x00, 0x00, 0x20, 0x02, 0x20, 0x28, 0x80, 0xa0,
+ 0x51, 0x11, 0x10, 0x44, 0x40, 0x50, 0x40, 0x10, 0x01, 0x00, 0x11, 0x00,
+ 0x01, 0x01, 0x04, 0x40, 0x10, 0x00, 0x01, 0x11, 0x04, 0x50, 0x10, 0x00,
+ 0x01, 0x40, 0x10, 0x04, 0x11, 0x50, 0x00, 0x01, 0xa2, 0x28, 0x20, 0x82,
+ 0x0a, 0x20, 0xa0, 0x0a, 0x02, 0x02, 0x22, 0x88, 0x00, 0x82, 0x08, 0x22,
+ 0x08, 0x80, 0x80, 0x28, 0x08, 0x28, 0x20, 0x88, 0x00, 0x80, 0x08, 0xaa,
+ 0x20, 0xa0, 0x82, 0xaa, 0x41, 0x50, 0x50, 0x01, 0x55, 0x00, 0x00, 0x05,
+ 0x05, 0x05, 0x51, 0x04, 0x01, 0x45, 0x14, 0x11, 0x50, 0x00, 0x41, 0x50,
+ 0x04, 0x10, 0x50, 0x44, 0x00, 0x40, 0x05, 0x50, 0x50, 0x40, 0x01, 0x14,
+ 0xaa, 0xaa, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0x82,
+ 0x00, 0x2a, 0xa8, 0x20, 0x28, 0x80, 0x2a, 0x20, 0x08, 0x08, 0xa0, 0x82,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x54, 0x55, 0x01, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x40, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x50,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x28, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x55, 0x55, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x2a, 0x2a,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x15, 0x15, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x45,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x88, 0xa2, 0x22, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x88, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x0a, 0x08,
+ 0x02, 0x22, 0xa0, 0x80, 0x08, 0x00, 0xa0, 0x00, 0x20, 0xa0, 0xa0, 0xa0,
+ 0x41, 0x01, 0x51, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01,
+ 0x00, 0x00, 0x55, 0x55, 0x14, 0x00, 0x11, 0x14, 0x05, 0x45, 0x10, 0x41,
+ 0x11, 0x00, 0x40, 0x01, 0x14, 0x41, 0x40, 0x10, 0x82, 0x28, 0xa2, 0xaa,
+ 0x80, 0xa2, 0xa2, 0xa0, 0xa8, 0x00, 0x28, 0x28, 0x08, 0xa2, 0x02, 0xaa,
+ 0xa8, 0x80, 0x20, 0x88, 0x88, 0x0a, 0x08, 0x82, 0x20, 0x00, 0x80, 0x0a,
+ 0x00, 0x82, 0x00, 0x08, 0x04, 0x51, 0x51, 0x55, 0x45, 0x44, 0x11, 0x11,
+ 0x11, 0x01, 0x50, 0x44, 0x04, 0x11, 0x05, 0x55, 0x41, 0x41, 0x40, 0x10,
+ 0x40, 0x55, 0x04, 0x44, 0x40, 0x00, 0x00, 0x14, 0x00, 0x01, 0x01, 0x04,
+ 0x88, 0xa8, 0xa8, 0x2a, 0x2a, 0x20, 0x08, 0x0a, 0x0a, 0x02, 0xa0, 0x80,
+ 0x88, 0x08, 0xa2, 0xaa, 0x02, 0x22, 0x00, 0x08, 0xa0, 0x8a, 0x02, 0x88,
+ 0x20, 0x00, 0x00, 0x20, 0x00, 0x82, 0x20, 0x02, 0x05, 0x55, 0x54, 0x55,
+ 0x44, 0x40, 0x50, 0x51, 0x11, 0x01, 0x04, 0x51, 0x10, 0x51, 0x41, 0x55,
+ 0x05, 0x44, 0x00, 0x10, 0x00, 0x50, 0x54, 0x45, 0x40, 0x00, 0x00, 0x40,
+ 0x50, 0x01, 0x01, 0x54, 0x80, 0x2a, 0xaa, 0x0a, 0x28, 0x28, 0x08, 0x08,
+ 0x08, 0x02, 0x88, 0x88, 0x80, 0x08, 0xa8, 0xaa, 0x0a, 0x28, 0x00, 0x08,
+ 0xa0, 0x02, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80, 0x08, 0x02, 0x02, 0x02,
+ 0x00, 0x15, 0x55, 0x15, 0x44, 0x44, 0x10, 0x11, 0x11, 0x01, 0x04, 0x45,
+ 0x50, 0x10, 0x51, 0x55, 0x15, 0x44, 0x00, 0x10, 0x00, 0x01, 0x04, 0x40,
+ 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x11, 0x04, 0x80, 0x0a, 0xaa, 0x2a,
+ 0x82, 0x22, 0xa0, 0xa0, 0x08, 0x02, 0xa8, 0xa8, 0x20, 0xa0, 0xa8, 0xaa,
+ 0x0a, 0x28, 0x00, 0x08, 0x80, 0x00, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80,
+ 0x02, 0x02, 0x0a, 0x02, 0x00, 0x04, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x44, 0x00, 0x10,
+ 0x10, 0x00, 0x04, 0x40, 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x04, 0x04,
+ 0x08, 0x02, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xaa, 0x28, 0x82, 0x00, 0x08, 0xa8, 0x80, 0x08, 0x88,
+ 0x20, 0x00, 0x20, 0x20, 0x02, 0x0a, 0x0a, 0x08, 0x44, 0x00, 0x50, 0x55,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+ 0x51, 0x01, 0x11, 0x10, 0x54, 0x41, 0x10, 0x44, 0x40, 0x00, 0x40, 0x10,
+ 0x04, 0x01, 0x04, 0x10, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00,
+ 0x00, 0xa0, 0x00, 0x08, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x00, 0x0a, 0x2a,
+ 0x2a, 0x0a, 0xa0, 0xa0, 0xa0, 0x00, 0x20, 0x0a, 0x28, 0x02, 0x00, 0xa0,
+ 0x50, 0x01, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/xorg-server/hw/xquartz/bundle/.gitignore b/xorg-server/hw/xquartz/bundle/.gitignore
new file mode 100644
index 000000000..fbdbd09cd
--- /dev/null
+++ b/xorg-server/hw/xquartz/bundle/.gitignore
@@ -0,0 +1 @@
+Info.plist
diff --git a/xorg-server/hw/xquartz/bundle/X11.sh b/xorg-server/hw/xquartz/bundle/X11.sh
index 3b8b6799c..48c0553d1 100644
--- a/xorg-server/hw/xquartz/bundle/X11.sh
+++ b/xorg-server/hw/xquartz/bundle/X11.sh
@@ -1,15 +1,15 @@
-#!/bin/bash
-
-set "$(dirname "$0")"/X11.bin "${@}"
-
-if [ -x ~/.x11run ]; then
- exec ~/.x11run "${@}"
-fi
-
-case $(basename "${SHELL}") in
- bash) exec -l "${SHELL}" --login -c 'exec "${@}"' - "${@}" ;;
- ksh|sh|zsh) exec -l "${SHELL}" -c 'exec "${@}"' - "${@}" ;;
- csh|tcsh) exec -l "${SHELL}" -c 'exec $argv:q' "${@}" ;;
- es|rc) exec -l "${SHELL}" -l -c 'exec $*' "${@}" ;;
- *) exec "${@}" ;;
-esac
+#!/bin/bash
+
+set "$(dirname "$0")"/X11.bin "${@}"
+
+if [ -x ~/.x11run ]; then
+ exec ~/.x11run "${@}"
+fi
+
+case $(basename "${SHELL}") in
+ bash) exec -l "${SHELL}" --login -c 'exec "${@}"' - "${@}" ;;
+ ksh|sh|zsh) exec -l "${SHELL}" -c 'exec "${@}"' - "${@}" ;;
+ csh|tcsh) exec -l "${SHELL}" -c 'exec $argv:q' "${@}" ;;
+ es|rc) exec -l "${SHELL}" -l -c 'exec $*' "${@}" ;;
+ *) exec "${@}" ;;
+esac
diff --git a/xorg-server/hw/xquartz/bundle/Xquartz.plist b/xorg-server/hw/xquartz/bundle/Xquartz.plist
index e15704516..3ee787807 100644
--- a/xorg-server/hw/xquartz/bundle/Xquartz.plist
+++ b/xorg-server/hw/xquartz/bundle/Xquartz.plist
@@ -1,27 +1,27 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-
-<!-- This file contains system-wide defaults for the Apple X11 server -->
-
-<plist version="1.0">
-<dict>
- <key>apps_menu</key>
- <array>
- <array>
- <string>Terminal</string>
- <string>xterm</string>
- <string>n</string>
- </array>
- <array>
- <string>xman</string>
- <string>xman</string>
- <string></string>
- </array>
- <array>
- <string>xlogo</string>
- <string>xlogo</string>
- <string></string>
- </array>
- </array>
-</dict>
-</plist>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+
+<!-- This file contains system-wide defaults for the Apple X11 server -->
+
+<plist version="1.0">
+<dict>
+ <key>apps_menu</key>
+ <array>
+ <array>
+ <string>Terminal</string>
+ <string>xterm</string>
+ <string>n</string>
+ </array>
+ <array>
+ <string>xman</string>
+ <string>xman</string>
+ <string></string>
+ </array>
+ <array>
+ <string>xlogo</string>
+ <string>xlogo</string>
+ <string></string>
+ </array>
+ </array>
+</dict>
+</plist>
diff --git a/xorg-server/hw/xquartz/darwin.c b/xorg-server/hw/xquartz/darwin.c
index 41db72af8..d26f18a12 100644
--- a/xorg-server/hw/xquartz/darwin.c
+++ b/xorg-server/hw/xquartz/darwin.c
@@ -193,7 +193,7 @@ DarwinSaveScreen(ScreenPtr pScreen, int on)
* Initialize the screen and communicate information about it back to dix.
*/
static Bool
-DarwinScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
+DarwinScreenInit(ScreenPtr pScreen, int argc, char **argv)
{
int dpi;
static int foundIndex = 0;
@@ -204,7 +204,7 @@ DarwinScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
return FALSE;
// reset index of found screens for each server generation
- if (index == 0) {
+ if (pScreen->myNum == 0) {
foundIndex = 0;
// reset the visual list
@@ -275,7 +275,7 @@ DarwinScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
pScreen->SaveScreen = DarwinSaveScreen;
// finish mode dependent screen setup including cursor support
- if (!QuartzSetupScreen(index, pScreen)) {
+ if (!QuartzSetupScreen(pScreen->myNum, pScreen)) {
return FALSE;
}
diff --git a/xorg-server/hw/xquartz/mach-startup/.gitignore b/xorg-server/hw/xquartz/mach-startup/.gitignore
new file mode 100644
index 000000000..0bda6e75c
--- /dev/null
+++ b/xorg-server/hw/xquartz/mach-startup/.gitignore
@@ -0,0 +1,8 @@
+# Add & Override for this directory and it's subdirectories
+mach_startup.h
+mach_startupServer.c
+mach_startupServer.h
+mach_startupUser.c
+X11.bin
+Xquartz
+
diff --git a/xorg-server/hw/xquartz/mach-startup/mach_startup.defs b/xorg-server/hw/xquartz/mach-startup/mach_startup.defs
index e47f49c3c..7b575bf54 100644
--- a/xorg-server/hw/xquartz/mach-startup/mach_startup.defs
+++ b/xorg-server/hw/xquartz/mach-startup/mach_startup.defs
@@ -1,50 +1,50 @@
-/* Copyright (c) 2008 Apple Inc.
- *
- * 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 ABOVE LISTED COPYRIGHT
- * HOLDER(S) 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(s) of the above
- * copyright holders shall not be used in advertising or otherwise to
- * promote the sale, use or other dealings in this Software without
- * prior written authorization.
- */
-
-#include <mach/std_types.defs>
-#include <mach/mach_types.defs>
-import "mach_startup_types.h";
-
-subsystem mach_startup 1000;
-serverprefix do_;
-
-type string_t = c_string[1024];
-type string_array_t = array[] of string_t;
-
-routine start_x11_server(
- port : mach_port_t;
- argv : string_array_t;
- envp : string_array_t);
-
-routine request_fd_handoff_socket (
- port : mach_port_t;
- out socket_filename : string_t);
-
-routine request_pid (
- port : mach_port_t;
- out pid : int);
+/* Copyright (c) 2008 Apple Inc.
+ *
+ * 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 ABOVE LISTED COPYRIGHT
+ * HOLDER(S) 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(s) of the above
+ * copyright holders shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization.
+ */
+
+#include <mach/std_types.defs>
+#include <mach/mach_types.defs>
+import "mach_startup_types.h";
+
+subsystem mach_startup 1000;
+serverprefix do_;
+
+type string_t = c_string[1024];
+type string_array_t = array[] of string_t;
+
+routine start_x11_server(
+ port : mach_port_t;
+ argv : string_array_t;
+ envp : string_array_t);
+
+routine request_fd_handoff_socket (
+ port : mach_port_t;
+ out socket_filename : string_t);
+
+routine request_pid (
+ port : mach_port_t;
+ out pid : int);
diff --git a/xorg-server/hw/xquartz/pbproxy/.gitignore b/xorg-server/hw/xquartz/pbproxy/.gitignore
new file mode 100644
index 000000000..d6e6710f2
--- /dev/null
+++ b/xorg-server/hw/xquartz/pbproxy/.gitignore
@@ -0,0 +1 @@
+xpbproxy
diff --git a/xorg-server/hw/xquartz/xpr/Makefile.am b/xorg-server/hw/xquartz/xpr/Makefile.am
index 763a7cd5c..685052702 100644
--- a/xorg-server/hw/xquartz/xpr/Makefile.am
+++ b/xorg-server/hw/xquartz/xpr/Makefile.am
@@ -1,32 +1,32 @@
-noinst_LTLIBRARIES = libXquartzXpr.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-AM_CPPFLAGS = \
- -I$(srcdir) -I$(srcdir)/.. \
- -I$(top_srcdir)/miext \
- -I$(top_srcdir)/miext/rootless
-
-libXquartzXpr_la_SOURCES = \
- appledri.c \
- dri.c \
- driWrap.c \
- xprAppleWM.c \
- xprCursor.c \
- xprEvent.c \
- xprFrame.c \
- xprScreen.c \
- x-hash.c \
- x-hook.c \
- x-list.c
-
-EXTRA_DIST = \
- dri.h \
- driWrap.h \
- dristruct.h \
- appledri.h \
- appledristr.h \
- x-hash.h \
- x-hook.h \
- x-list.h \
- xpr.h \
- xprEvent.h
+noinst_LTLIBRARIES = libXquartzXpr.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+AM_CPPFLAGS = \
+ -I$(srcdir) -I$(srcdir)/.. \
+ -I$(top_srcdir)/miext \
+ -I$(top_srcdir)/miext/rootless
+
+libXquartzXpr_la_SOURCES = \
+ appledri.c \
+ dri.c \
+ driWrap.c \
+ xprAppleWM.c \
+ xprCursor.c \
+ xprEvent.c \
+ xprFrame.c \
+ xprScreen.c \
+ x-hash.c \
+ x-hook.c \
+ x-list.c
+
+EXTRA_DIST = \
+ dri.h \
+ driWrap.h \
+ dristruct.h \
+ appledri.h \
+ appledristr.h \
+ x-hash.h \
+ x-hook.h \
+ x-list.h \
+ xpr.h \
+ xprEvent.h
diff --git a/xorg-server/hw/xwin/.gitignore b/xorg-server/hw/xwin/.gitignore
new file mode 100644
index 000000000..bc4986cb4
--- /dev/null
+++ b/xorg-server/hw/xwin/.gitignore
@@ -0,0 +1,3 @@
+winprefslex.c
+winprefsyacc.c
+winprefsyacc.h
diff --git a/xorg-server/hw/xwin/README b/xorg-server/hw/xwin/README
index 219fd1337..9f7090344 100644
--- a/xorg-server/hw/xwin/README
+++ b/xorg-server/hw/xwin/README
@@ -1,141 +1,141 @@
-Cygwin/X Release Notes
-======================
-
-Release X11R6.7
-===============
-
-Cygwin/X has continued its rapid pace of development that it has sustained
-since Spring 2001 and this release shows it, we now have: a stable and fast
-multi-window mode, seamless clipboard integration, a configurable tray menu
-icon, popups on error messages pointing users to the log file and our mailing
-list, the beginnings of indirect 3D acceleration for OpenGL applications,
-improved non-US keyboard and clipboard support, and only a handful of bugs
-that continue to be reported.
-
-Between the XFree86 4.3.0 release and the X.Org X11R6.7 release the Cyg-
-win/XFree86 project broke away from The XFree86 Project, Inc. due to a lack
-of support from the XFree86 project. As such, the Cygwin/XFree86 project was
-renamed to the Cygwin/X project and the upstream source code tree that Cyg-
-win/X pulls from and pushes to is now the tree managed by the X.Org Founda-
-tion. The Cygwin/X project has seen a rush of development and interest in
-the project since the split; one metric showing this is that the number of
-CVS committers we have has gone from zero to six.
-
-The most outstanding features of this release are
-
- o Major multi-window mode improvements. (Takuma Murakami, Earle F.
- Philhower III)
-
- o Initial work of accelerated OpenGL using the windows OpenGL drivers.
- (Alexander Gottwald)
-
- o Massive rework of clipboard integration with windows. (Harold L Hunt II,
- Kensuke Matsuzaki)
-
- o Improved Japanese clipboard and keyboard support. (Kensuke Matsuzaki,
- Takuma Murakami, Alexander Gottwald)
-
- o Customizable tray menu icon allowing shortcuts to start programs,
- etc.(Earle F. Philhower III)
-
- o New icons. (Jehan Bing, Michael Bax, Benjamin Rienfenstahl)
-
- o Fix some multi-monitor problems.(Takuma Murakami)
-
- o Fix repeated key strokes. (Ivan Pascal)
-
- o Automatic keyboard layouts for the most frequently used keyboard lay-
- outs. (Alexander Gottwald)
-
- o Built in SHM support with detection of the SHM engine (cygserver).
- (Ralf Habacker, Harold L Hunt II)
-
- o Merged in work on the NativeGDI engine. (Alan Hourihane)
-
-OpenGL with Cygwin/X
-====================
-
-Cygwin/X has supported GLX only with software rendering provided by the Mesa
-library. Starting with X11R6.7 we add support for hardware accelerated OpenGL.
-
-This support is still under development and still has some bigger problems.
-To provide both versions (the stable software rendering and the new hardware
-accelerated) we ship to binaries. XWin.exe contains the software rendering
-and XWin_GL.exe uses the hardware acceleration provided by the windows drivers.
-
-The known problems with hardware accelerated OpenGL are:
-
- o Only multiwindow mode is useful. In the other modes the OpenGL output
- does not align with the X11 windows.
-
- o Using two programs which require different visuals will fail. For example
- glxgears and glxinfo will not work without restarting XWin_GL.exe.
-
- o OpenGL extensions and functions from OpenGL 1.2 and later should work
- but are not completely tested.
-
- o The standard Windows OpenGL driver will produce no output. Use the one
- from your video adapter vendor.
-
-If you notice problems with some programs please send a message with the
-logfile /tmp/XWin.log and a short error description to <cygwin-xfree@cygwin.com>
-
-The hardware accelerated OpenGL was tested using:
-
- o glxgears
- o glxinfo
- o blender
- o tuxkart
- o GLUT demos (some did fail)
- o tuxracer (currently not working)
-
-
-Release X11R6.8
-===============
-
-Having reached a quite mature state in release X11R6.7 the development
-has slowed down a little bit. Some of the former active developers have
-retired or cut their work for the Cygwin/X project due to conflicts with
-job, study and family.
-
-The X11R6.8 release now includes major improvements from the xserver project.
-This includes the XFixes, Damage, Composite and XEVIE extension which is a
-major step towards allowing Cygwin/X to have real transparency.
-
-But at the current state Composite is not working with Cygwin/X. Not all code
-in the Cygwin/X Server has been updated to support the Composite feature and
-using it will even crash the xserver. But as a second problem nearly all
-functions required for compositing are lacking acceleration in Cygwin/X so
-the feature would not be very useful if it would work. So it is disabled by
-default.
-
-OpenGL with Cygwin/X
-====================
-
-The OpenGL support has lost some of it's limitations from the last release
-and should be much more stable. But due to missing wide spread testing in
-the community it is still available in a separate program. XWin still uses
-the old software OpenGL which is known to be stable.
-
-The known problems with hardware accelerated OpenGL are:
-
- o Only multiwindow mode is useful. In the other modes the OpenGL output
- does not align with the X11 windows.
-
- o OpenGL extensions and functions from OpenGL 1.2 and later should work
- but are not completely tested.
-
- o The standard Windows OpenGL driver will produce no output. Use the one
- from your video adapter vendor.
-
-If you notice problems with some programs please send a message with the
-logfile /tmp/XWin.log and a short error description to <cygwin-xfree@cygwin.com>
-
-The hardware accelerated OpenGL was tested using:
-
- o glxgears
- o glxinfo
- o blender
- o tuxkart
- o GLUT demos (some did fail)
-
+Cygwin/X Release Notes
+======================
+
+Release X11R6.7
+===============
+
+Cygwin/X has continued its rapid pace of development that it has sustained
+since Spring 2001 and this release shows it, we now have: a stable and fast
+multi-window mode, seamless clipboard integration, a configurable tray menu
+icon, popups on error messages pointing users to the log file and our mailing
+list, the beginnings of indirect 3D acceleration for OpenGL applications,
+improved non-US keyboard and clipboard support, and only a handful of bugs
+that continue to be reported.
+
+Between the XFree86 4.3.0 release and the X.Org X11R6.7 release the Cyg-
+win/XFree86 project broke away from The XFree86 Project, Inc. due to a lack
+of support from the XFree86 project. As such, the Cygwin/XFree86 project was
+renamed to the Cygwin/X project and the upstream source code tree that Cyg-
+win/X pulls from and pushes to is now the tree managed by the X.Org Founda-
+tion. The Cygwin/X project has seen a rush of development and interest in
+the project since the split; one metric showing this is that the number of
+CVS committers we have has gone from zero to six.
+
+The most outstanding features of this release are
+
+ o Major multi-window mode improvements. (Takuma Murakami, Earle F.
+ Philhower III)
+
+ o Initial work of accelerated OpenGL using the windows OpenGL drivers.
+ (Alexander Gottwald)
+
+ o Massive rework of clipboard integration with windows. (Harold L Hunt II,
+ Kensuke Matsuzaki)
+
+ o Improved Japanese clipboard and keyboard support. (Kensuke Matsuzaki,
+ Takuma Murakami, Alexander Gottwald)
+
+ o Customizable tray menu icon allowing shortcuts to start programs,
+ etc.(Earle F. Philhower III)
+
+ o New icons. (Jehan Bing, Michael Bax, Benjamin Rienfenstahl)
+
+ o Fix some multi-monitor problems.(Takuma Murakami)
+
+ o Fix repeated key strokes. (Ivan Pascal)
+
+ o Automatic keyboard layouts for the most frequently used keyboard lay-
+ outs. (Alexander Gottwald)
+
+ o Built in SHM support with detection of the SHM engine (cygserver).
+ (Ralf Habacker, Harold L Hunt II)
+
+ o Merged in work on the NativeGDI engine. (Alan Hourihane)
+
+OpenGL with Cygwin/X
+====================
+
+Cygwin/X has supported GLX only with software rendering provided by the Mesa
+library. Starting with X11R6.7 we add support for hardware accelerated OpenGL.
+
+This support is still under development and still has some bigger problems.
+To provide both versions (the stable software rendering and the new hardware
+accelerated) we ship to binaries. XWin.exe contains the software rendering
+and XWin_GL.exe uses the hardware acceleration provided by the windows drivers.
+
+The known problems with hardware accelerated OpenGL are:
+
+ o Only multiwindow mode is useful. In the other modes the OpenGL output
+ does not align with the X11 windows.
+
+ o Using two programs which require different visuals will fail. For example
+ glxgears and glxinfo will not work without restarting XWin_GL.exe.
+
+ o OpenGL extensions and functions from OpenGL 1.2 and later should work
+ but are not completely tested.
+
+ o The standard Windows OpenGL driver will produce no output. Use the one
+ from your video adapter vendor.
+
+If you notice problems with some programs please send a message with the
+logfile /tmp/XWin.log and a short error description to <cygwin-xfree@cygwin.com>
+
+The hardware accelerated OpenGL was tested using:
+
+ o glxgears
+ o glxinfo
+ o blender
+ o tuxkart
+ o GLUT demos (some did fail)
+ o tuxracer (currently not working)
+
+
+Release X11R6.8
+===============
+
+Having reached a quite mature state in release X11R6.7 the development
+has slowed down a little bit. Some of the former active developers have
+retired or cut their work for the Cygwin/X project due to conflicts with
+job, study and family.
+
+The X11R6.8 release now includes major improvements from the xserver project.
+This includes the XFixes, Damage, Composite and XEVIE extension which is a
+major step towards allowing Cygwin/X to have real transparency.
+
+But at the current state Composite is not working with Cygwin/X. Not all code
+in the Cygwin/X Server has been updated to support the Composite feature and
+using it will even crash the xserver. But as a second problem nearly all
+functions required for compositing are lacking acceleration in Cygwin/X so
+the feature would not be very useful if it would work. So it is disabled by
+default.
+
+OpenGL with Cygwin/X
+====================
+
+The OpenGL support has lost some of it's limitations from the last release
+and should be much more stable. But due to missing wide spread testing in
+the community it is still available in a separate program. XWin still uses
+the old software OpenGL which is known to be stable.
+
+The known problems with hardware accelerated OpenGL are:
+
+ o Only multiwindow mode is useful. In the other modes the OpenGL output
+ does not align with the X11 windows.
+
+ o OpenGL extensions and functions from OpenGL 1.2 and later should work
+ but are not completely tested.
+
+ o The standard Windows OpenGL driver will produce no output. Use the one
+ from your video adapter vendor.
+
+If you notice problems with some programs please send a message with the
+logfile /tmp/XWin.log and a short error description to <cygwin-xfree@cygwin.com>
+
+The hardware accelerated OpenGL was tested using:
+
+ o glxgears
+ o glxinfo
+ o blender
+ o tuxkart
+ o GLUT demos (some did fail)
+
diff --git a/xorg-server/hw/xwin/glx/.gitignore b/xorg-server/hw/xwin/glx/.gitignore
new file mode 100644
index 000000000..062fd8573
--- /dev/null
+++ b/xorg-server/hw/xwin/glx/.gitignore
@@ -0,0 +1,3 @@
+# ignore generated files
+generated_gl_wrappers.c
+generated_wgl_wrappers.c
diff --git a/xorg-server/hw/xwin/glx/winpriv.h b/xorg-server/hw/xwin/glx/winpriv.h
index 710525ccc..8cac86caf 100644
--- a/xorg-server/hw/xwin/glx/winpriv.h
+++ b/xorg-server/hw/xwin/glx/winpriv.h
@@ -1,13 +1,13 @@
-/*
- * Export window information for the Windows-OpenGL GLX implementation.
- *
- * Authors: Alexander Gottwald
- */
-
-#include <X11/Xwindows.h>
-#include <windowstr.h>
-
-#define WIN_GL_WINDOW_CLASS "XWinGLTest"
-
-HWND winGetWindowInfo(WindowPtr pWin);
-Bool winCheckScreenAiglxIsSupported(ScreenPtr pScreen);
+/*
+ * Export window information for the Windows-OpenGL GLX implementation.
+ *
+ * Authors: Alexander Gottwald
+ */
+
+#include <X11/Xwindows.h>
+#include <windowstr.h>
+
+#define WIN_GL_WINDOW_CLASS "XWinGLTest"
+
+HWND winGetWindowInfo(WindowPtr pWin);
+Bool winCheckScreenAiglxIsSupported(ScreenPtr pScreen);
diff --git a/xorg-server/hw/xwin/system.XWinrc b/xorg-server/hw/xwin/system.XWinrc
index f0771c610..267809145 100644
--- a/xorg-server/hw/xwin/system.XWinrc
+++ b/xorg-server/hw/xwin/system.XWinrc
@@ -1,128 +1,128 @@
-# XWin Server Resource File - EXAMPLE
-# Earle F. Philhower, III
-
-# Place in ~/.XWinrc or in /etc/X11/system.XWinrc
-
-# Keywords are case insensitive, comments legal pretty much anywhere
-# you can have an end-of-line
-
-# Comments begin with "#" or "//" and go to the end-of-line
-
-# Paths to commands are **cygwin** based (i.e. /usr/local/bin/xcalc)
-
-# Paths to icons are **WINDOWS** based (i.e. c:\windows\icons)
-
-# Menus are defined as...
-# MENU <name> {
-# <Menu Text> EXEC <command>
-# ^^ This command will have any "%display%"
-# string replaced with the proper display
-# variable (i.e. 127.0.0.1:<display>.0)
-# (This should only rarely be needed as
-# the DISPLAY environment variable is also
-# set correctly)
-# or <Menu Text> MENU <name-of-some-prior-defined-menu>
-# or <Menu Text> ALWAYSONTOP
-# ^^ Sets the window to display above all others
-# or <Menu Text> RELOAD
-# ^^ Causes ~/.XWinrc or the system.XWinrc file
-# to be reloaded and icons and menus regenerated
-# or SEPARATOR
-# ...
-# }
-
-# Set the taskmar menu with
-# ROOTMENU <name-of-some-prior-defined-menu>
-
-# If you want a menu to be applied to all popup window's system menu
-# DEFAULTSYSMENU <name-of-some-prior-defined-menu> <atstart|atend>
-
-# To choose a specific menu for a specific WM_CLASS or WM_NAME use ...
-# SYSMENU {
-# <class-or-name-of-window> <name-of-prior-defined-menu> <atstart|atend>
-# ...
-# }
-
-# When specifying an ICONFILE in the following commands several different
-# formats are allowed:
-# 1. Name of a regular Windows .ico format file
-# (ex: "cygwin.ico", "apple.ico")
-# 2. Name and index into a Windows .DLL
-# (ex: "c:\windows\system32\shell32.dll,4" gives the default folder icon
-# "c:\windows\system32\shell32.dll,5" gives the floppy drive icon)
-# 3. Index into XWin.EXE internal ICON resource
-# (ex: ",101" is the 1st icon inside XWin.exe)
-
-# To define where ICO files live (** Windows path**)
-# ICONDIRECTORY <windows-path i.e. c:\cygwin\usr\icons>
-# NOTE: If you specify a fully qualified path to an ICON below
-# (i.e. "c:\xxx" or "d:\xxxx")
-# this ICONDIRECTORY will not be prepended
-
-# To change the taskbar icon use...
-# TRAYICON <name-of-windows-ico-file-in-icondirectory>
-
-# To define a replacement for the standard X icon for apps w/o specified icons
-# DEFAULTICON <name-of-windows-ico-file-in-icondirectory>
-
-# To define substitute icons on a per-window basis use...
-# ICONS {
-# <class-or-name-of-window> <icon-file-name.ico>
-# ...
-# }
-# In the case where multiple matches occur, the first listed in the ICONS
-# section will be chosen.
-
-# To disable exit confirmation dialog add the line containing SilentExit
-
-# DEBUG <string> prints out the string to the XWin.log file
-
-// Below are just some silly menus to demonstrate writing your
-// own configuration file.
-
-// Make some menus...
-menu apps {
- xterm exec "xterm"
- "Emacs" exec "emacs"
- notepad exec notepad
- xload exec "xload -display %display%" # Comment
-}
-
-menu root {
-// Comments fit here, too...
- "Reload .XWinrc" RELOAD
- "Applications" menu apps
- SEParATOR
-}
-
-menu aot {
- Separator
- "Always on Top" alwaysontop
-}
-
-menu xtermspecial {
- "Emacs" exec "emacs"
- "Always on Top" alwaysontop
- SepArAtor
-}
-
-RootMenu root
-
-DefaultSysMenu aot atend
-
-SysMenu {
- "xterm" xtermspecial atstart
-}
-
-# IconDirectory "c:\winnt\"
-
-# DefaultIcon "reinstall.ico"
-
-# Icons {
-# "xterm" "uninstall.ico"
-# }
-
-SilentExit
-
-DEBUG "Done parsing the configuration file..."
-
+# XWin Server Resource File - EXAMPLE
+# Earle F. Philhower, III
+
+# Place in ~/.XWinrc or in /etc/X11/system.XWinrc
+
+# Keywords are case insensitive, comments legal pretty much anywhere
+# you can have an end-of-line
+
+# Comments begin with "#" or "//" and go to the end-of-line
+
+# Paths to commands are **cygwin** based (i.e. /usr/local/bin/xcalc)
+
+# Paths to icons are **WINDOWS** based (i.e. c:\windows\icons)
+
+# Menus are defined as...
+# MENU <name> {
+# <Menu Text> EXEC <command>
+# ^^ This command will have any "%display%"
+# string replaced with the proper display
+# variable (i.e. 127.0.0.1:<display>.0)
+# (This should only rarely be needed as
+# the DISPLAY environment variable is also
+# set correctly)
+# or <Menu Text> MENU <name-of-some-prior-defined-menu>
+# or <Menu Text> ALWAYSONTOP
+# ^^ Sets the window to display above all others
+# or <Menu Text> RELOAD
+# ^^ Causes ~/.XWinrc or the system.XWinrc file
+# to be reloaded and icons and menus regenerated
+# or SEPARATOR
+# ...
+# }
+
+# Set the taskmar menu with
+# ROOTMENU <name-of-some-prior-defined-menu>
+
+# If you want a menu to be applied to all popup window's system menu
+# DEFAULTSYSMENU <name-of-some-prior-defined-menu> <atstart|atend>
+
+# To choose a specific menu for a specific WM_CLASS or WM_NAME use ...
+# SYSMENU {
+# <class-or-name-of-window> <name-of-prior-defined-menu> <atstart|atend>
+# ...
+# }
+
+# When specifying an ICONFILE in the following commands several different
+# formats are allowed:
+# 1. Name of a regular Windows .ico format file
+# (ex: "cygwin.ico", "apple.ico")
+# 2. Name and index into a Windows .DLL
+# (ex: "c:\windows\system32\shell32.dll,4" gives the default folder icon
+# "c:\windows\system32\shell32.dll,5" gives the floppy drive icon)
+# 3. Index into XWin.EXE internal ICON resource
+# (ex: ",101" is the 1st icon inside XWin.exe)
+
+# To define where ICO files live (** Windows path**)
+# ICONDIRECTORY <windows-path i.e. c:\cygwin\usr\icons>
+# NOTE: If you specify a fully qualified path to an ICON below
+# (i.e. "c:\xxx" or "d:\xxxx")
+# this ICONDIRECTORY will not be prepended
+
+# To change the taskbar icon use...
+# TRAYICON <name-of-windows-ico-file-in-icondirectory>
+
+# To define a replacement for the standard X icon for apps w/o specified icons
+# DEFAULTICON <name-of-windows-ico-file-in-icondirectory>
+
+# To define substitute icons on a per-window basis use...
+# ICONS {
+# <class-or-name-of-window> <icon-file-name.ico>
+# ...
+# }
+# In the case where multiple matches occur, the first listed in the ICONS
+# section will be chosen.
+
+# To disable exit confirmation dialog add the line containing SilentExit
+
+# DEBUG <string> prints out the string to the XWin.log file
+
+// Below are just some silly menus to demonstrate writing your
+// own configuration file.
+
+// Make some menus...
+menu apps {
+ xterm exec "xterm"
+ "Emacs" exec "emacs"
+ notepad exec notepad
+ xload exec "xload -display %display%" # Comment
+}
+
+menu root {
+// Comments fit here, too...
+ "Reload .XWinrc" RELOAD
+ "Applications" menu apps
+ SEParATOR
+}
+
+menu aot {
+ Separator
+ "Always on Top" alwaysontop
+}
+
+menu xtermspecial {
+ "Emacs" exec "emacs"
+ "Always on Top" alwaysontop
+ SepArAtor
+}
+
+RootMenu root
+
+DefaultSysMenu aot atend
+
+SysMenu {
+ "xterm" xtermspecial atstart
+}
+
+# IconDirectory "c:\winnt\"
+
+# DefaultIcon "reinstall.ico"
+
+# Icons {
+# "xterm" "uninstall.ico"
+# }
+
+SilentExit
+
+DEBUG "Done parsing the configuration file..."
+
diff --git a/xorg-server/hw/xwin/win.h b/xorg-server/hw/xwin/win.h
index 8c7df4cac..b49859ddc 100644
--- a/xorg-server/hw/xwin/win.h
+++ b/xorg-server/hw/xwin/win.h
@@ -236,7 +236,7 @@ typedef void (*winShadowUpdateProcPtr) (ScreenPtr, shadowBufPtr);
typedef Bool (*winInitScreenProcPtr) (ScreenPtr);
-typedef Bool (*winCloseScreenProcPtr) (int, ScreenPtr);
+typedef Bool (*winCloseScreenProcPtr) (ScreenPtr);
typedef Bool (*winInitVisualsProcPtr) (ScreenPtr);
@@ -745,8 +745,8 @@ void winSetAuthorization(void);
void
-winBlockHandler(int nScreen,
- pointer pBlockData, pointer pTimeout, pointer pReadMask);
+winBlockHandler(ScreenPtr pScreen,
+ pointer pTimeout, pointer pReadMask);
#ifdef XWIN_NATIVEGDI
/*
@@ -1039,7 +1039,7 @@ winPushPixels(GCPtr pGC, PixmapPtr pBitMap, DrawablePtr pDrawable,
*/
Bool
- winScreenInit(int index, ScreenPtr pScreen, int argc, char **argv);
+ winScreenInit(ScreenPtr pScreen, int argc, char **argv);
Bool
winFinishScreenInitFB(int index, ScreenPtr pScreen, int argc, char **argv);
@@ -1091,8 +1091,7 @@ Bool
void
-winWakeupHandler(int nScreen,
- pointer pWakeupData,
+winWakeupHandler(ScreenPtr pScreen,
unsigned long ulResult, pointer pReadmask);
/*
diff --git a/xorg-server/hw/xwin/winblock.c b/xorg-server/hw/xwin/winblock.c
index c18d080fa..c1a6e705a 100644
--- a/xorg-server/hw/xwin/winblock.c
+++ b/xorg-server/hw/xwin/winblock.c
@@ -36,11 +36,11 @@
/* See Porting Layer Definition - p. 6 */
void
-winBlockHandler(int nScreen,
- pointer pBlockData, pointer pTimeout, pointer pReadMask)
+winBlockHandler(ScreenPtr pScreen,
+ pointer pTimeout, pointer pReadMask)
{
#if defined(XWIN_CLIPBOARD) || defined(XWIN_MULTIWINDOW)
- winScreenPriv((ScreenPtr) pBlockData);
+ winScreenPriv(pScreen);
#endif
MSG msg;
diff --git a/xorg-server/hw/xwin/winnativegdi.c b/xorg-server/hw/xwin/winnativegdi.c
index 88cc52976..3cd565313 100644
--- a/xorg-server/hw/xwin/winnativegdi.c
+++ b/xorg-server/hw/xwin/winnativegdi.c
@@ -44,7 +44,7 @@ static void
winShadowUpdateNativeGDI(ScreenPtr pScreen, shadowBufPtr pBuf);
static Bool
- winCloseScreenNativeGDI(int nIndex, ScreenPtr pScreen);
+ winCloseScreenNativeGDI(ScreenPtr pScreen);
static Bool
winInitVisualsNativeGDI(ScreenPtr pScreen);
@@ -104,7 +104,7 @@ winInitScreenNativeGDI(ScreenPtr pScreen)
*/
static Bool
-winCloseScreenNativeGDI(int nIndex, ScreenPtr pScreen)
+winCloseScreenNativeGDI(ScreenPtr pScreen)
{
winScreenPriv(pScreen);
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
diff --git a/xorg-server/hw/xwin/winpfbdd.c b/xorg-server/hw/xwin/winpfbdd.c
index d9b095f3a..e2ed49af8 100644
--- a/xorg-server/hw/xwin/winpfbdd.c
+++ b/xorg-server/hw/xwin/winpfbdd.c
@@ -44,7 +44,7 @@ static Bool
winAllocateFBPrimaryDD(ScreenPtr pScreen);
static Bool
- winCloseScreenPrimaryDD(int nIndex, ScreenPtr pScreen);
+ winCloseScreenPrimaryDD(ScreenPtr pScreen);
static Bool
winInitVisualsPrimaryDD(ScreenPtr pScreen);
@@ -264,7 +264,7 @@ winInitScreenPrimaryDD(ScreenPtr pScreen)
*/
static Bool
-winCloseScreenPrimaryDD(int nIndex, ScreenPtr pScreen)
+winCloseScreenPrimaryDD(ScreenPtr pScreen)
{
winScreenPriv(pScreen);
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
@@ -279,7 +279,7 @@ winCloseScreenPrimaryDD(int nIndex, ScreenPtr pScreen)
/* Call the wrapped CloseScreen procedure */
WIN_UNWRAP(CloseScreen);
if (pScreen->CloseScreen)
- fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
+ fReturn = (*pScreen->CloseScreen) (pScreen);
/* Delete the window property */
RemoveProp(pScreenPriv->hwndScreen, WIN_SCR_PROP);
diff --git a/xorg-server/hw/xwin/winprefsyacc.y b/xorg-server/hw/xwin/winprefsyacc.y
index d28fbeb8f..b9e961622 100644
--- a/xorg-server/hw/xwin/winprefsyacc.y
+++ b/xorg-server/hw/xwin/winprefsyacc.y
@@ -1,460 +1,460 @@
-%{
-/*
- * Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
- * Copyright (C) Colin Harrison 2005-2008
- *
- * 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 XFREE86 PROJECT 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 XFree86 Project
- * 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 XFree86 Project.
- *
- * Authors: Earle F. Philhower, III
- * Colin Harrison
- */
-/* $XFree86: $ */
-
-#ifdef HAVE_XWIN_CONFIG_H
-#include <xwin-config.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "winprefs.h"
-#include "winmsg.h"
-
-/* The following give better error messages in bison at the cost of a few KB */
-#define YYERROR_VERBOSE 1
-
-/* YYLTYPE_IS_TRIVIAL and YYENABLE_NLS defined to suppress warnings */
-#define YYLTYPE_IS_TRIVIAL 1
-#define YYENABLE_NLS 0
-
-/* The global pref settings */
-WINPREFS pref;
-
-/* The working menu */
-static MENUPARSED menu;
-
-/* Functions for parsing the tokens into out structure */
-/* Defined at the end section of this file */
-
-static void SetIconDirectory (char *path);
-static void SetDefaultIcon (char *fname);
-static void SetRootMenu (char *menu);
-static void SetDefaultSysMenu (char *menu, int pos);
-static void SetTrayIcon (char *fname);
-
-static void OpenMenu(char *menuname);
-static void AddMenuLine(char *name, MENUCOMMANDTYPE cmd, char *param);
-static void CloseMenu(void);
-
-static void OpenIcons(void);
-static void AddIconLine(char *matchstr, char *iconfile);
-static void CloseIcons(void);
-
-static void OpenStyles(void);
-static void AddStyleLine(char *matchstr, unsigned long style);
-static void CloseStyles(void);
-
-static void OpenSysMenu(void);
-static void AddSysMenuLine(char *matchstr, char *menuname, int pos);
-static void CloseSysMenu(void);
-
-static int yyerror (char *s);
-
-extern char *yytext;
-extern int yylex(void);
-
-#define YYMALLOC malloc
-#define YYFREE free
-
-%}
-
-%union {
- char *sVal;
- unsigned long uVal;
- int iVal;
-}
-
-%token NEWLINE
-%token MENU
-%token LB
-%token RB
-%token ICONDIRECTORY
-%token DEFAULTICON
-%token ICONS
-%token STYLES
-%token TOPMOST
-%token MAXIMIZE
-%token MINIMIZE
-%token BOTTOM
-%token NOTITLE
-%token OUTLINE
-%token NOFRAME
-%token DEFAULTSYSMENU
-%token SYSMENU
-%token ROOTMENU
-%token SEPARATOR
-%token ATSTART
-%token ATEND
-%token EXEC
-%token ALWAYSONTOP
-%token DEBUGOUTPUT "DEBUG"
-%token RELOAD
-%token TRAYICON
-%token FORCEEXIT
-%token SILENTEXIT
-
-%token <sVal> STRING
-%type <uVal> group1
-%type <uVal> group2
-%type <uVal> stylecombo
-%type <iVal> atspot
-
-%%
-
-input: /* empty */
- | input line
- ;
-
-line: NEWLINE
- | command
- ;
-
-
-newline_or_nada:
- | NEWLINE newline_or_nada
- ;
-
-command: defaulticon
- | icondirectory
- | menu
- | icons
- | styles
- | sysmenu
- | rootmenu
- | defaultsysmenu
- | debug
- | trayicon
- | forceexit
- | silentexit
- ;
-
-trayicon: TRAYICON STRING NEWLINE { SetTrayIcon($2); free($2); }
- ;
-
-rootmenu: ROOTMENU STRING NEWLINE { SetRootMenu($2); free($2); }
- ;
-
-defaultsysmenu: DEFAULTSYSMENU STRING atspot NEWLINE { SetDefaultSysMenu($2, $3); free($2); }
- ;
-
-defaulticon: DEFAULTICON STRING NEWLINE { SetDefaultIcon($2); free($2); }
- ;
-
-icondirectory: ICONDIRECTORY STRING NEWLINE { SetIconDirectory($2); free($2); }
- ;
-
-menuline: SEPARATOR NEWLINE newline_or_nada { AddMenuLine("-", CMD_SEPARATOR, ""); }
- | STRING ALWAYSONTOP NEWLINE newline_or_nada { AddMenuLine($1, CMD_ALWAYSONTOP, ""); free($1); }
- | STRING EXEC STRING NEWLINE newline_or_nada { AddMenuLine($1, CMD_EXEC, $3); free($1); free($3); }
- | STRING MENU STRING NEWLINE newline_or_nada { AddMenuLine($1, CMD_MENU, $3); free($1); free($3); }
- | STRING RELOAD NEWLINE newline_or_nada { AddMenuLine($1, CMD_RELOAD, ""); free($1); }
- ;
-
-menulist: menuline
- | menuline menulist
- ;
-
-menu: MENU STRING LB { OpenMenu($2); free($2); } newline_or_nada menulist RB {CloseMenu();}
- ;
-
-iconline: STRING STRING NEWLINE newline_or_nada { AddIconLine($1, $2); free($1); free($2); }
- ;
-
-iconlist: iconline
- | iconline iconlist
- ;
-
-icons: ICONS LB {OpenIcons();} newline_or_nada iconlist RB {CloseIcons();}
- ;
-
-group1: TOPMOST { $$=STYLE_TOPMOST; }
- | MAXIMIZE { $$=STYLE_MAXIMIZE; }
- | MINIMIZE { $$=STYLE_MINIMIZE; }
- | BOTTOM { $$=STYLE_BOTTOM; }
- ;
-
-group2: NOTITLE { $$=STYLE_NOTITLE; }
- | OUTLINE { $$=STYLE_OUTLINE; }
- | NOFRAME { $$=STYLE_NOFRAME; }
- ;
-
-stylecombo: group1 { $$=$1; }
- | group2 { $$=$1; }
- | group1 group2 { $$=$1|$2; }
- | group2 group1 { $$=$1|$2; }
- ;
-
-styleline: STRING stylecombo NEWLINE newline_or_nada { AddStyleLine($1, $2); free($1); }
- ;
-
-stylelist: styleline
- | styleline stylelist
- ;
-
-styles: STYLES LB {OpenStyles();} newline_or_nada stylelist RB {CloseStyles();}
- ;
-
-atspot: { $$=AT_END; }
- | ATSTART { $$=AT_START; }
- | ATEND { $$=AT_END; }
- ;
-
-sysmenuline: STRING STRING atspot NEWLINE newline_or_nada { AddSysMenuLine($1, $2, $3); free($1); free($2); }
- ;
-
-sysmenulist: sysmenuline
- | sysmenuline sysmenulist
- ;
-
-sysmenu: SYSMENU LB NEWLINE {OpenSysMenu();} newline_or_nada sysmenulist RB {CloseSysMenu();}
- ;
-
-forceexit: FORCEEXIT NEWLINE { pref.fForceExit = TRUE; }
- ;
-
-silentexit: SILENTEXIT NEWLINE { pref.fSilentExit = TRUE; }
- ;
-
-debug: DEBUGOUTPUT STRING NEWLINE { winDebug("LoadPreferences: %s\n", $2); free($2); }
- ;
-
-
-%%
-/*
- * Errors in parsing abort and print log messages
- */
-static int
-yyerror (char *s)
-{
- extern int yylineno; /* Handled by flex internally */
-
- ErrorF("LoadPreferences: %s line %d\n", s, yylineno);
- return 1;
-}
-
-/* Miscellaneous functions to store TOKENs into the structure */
-static void
-SetIconDirectory (char *path)
-{
- strncpy (pref.iconDirectory, path, PATH_MAX);
- pref.iconDirectory[PATH_MAX] = 0;
-}
-
-static void
-SetDefaultIcon (char *fname)
-{
- strncpy (pref.defaultIconName, fname, NAME_MAX);
- pref.defaultIconName[NAME_MAX] = 0;
-}
-
-static void
-SetTrayIcon (char *fname)
-{
- strncpy (pref.trayIconName, fname, NAME_MAX);
- pref.trayIconName[NAME_MAX] = 0;
-}
-
-static void
-SetRootMenu (char *menu)
-{
- strncpy (pref.rootMenuName, menu, MENU_MAX);
- pref.rootMenuName[MENU_MAX] = 0;
-}
-
-static void
-SetDefaultSysMenu (char *menu, int pos)
-{
- strncpy (pref.defaultSysMenuName, menu, MENU_MAX);
- pref.defaultSysMenuName[MENU_MAX] = 0;
- pref.defaultSysMenuPos = pos;
-}
-
-static void
-OpenMenu (char *menuname)
-{
- if (menu.menuItem) free(menu.menuItem);
- menu.menuItem = NULL;
- strncpy(menu.menuName, menuname, MENU_MAX);
- menu.menuName[MENU_MAX] = 0;
- menu.menuItems = 0;
-}
-
-static void
-AddMenuLine (char *text, MENUCOMMANDTYPE cmd, char *param)
-{
- if (menu.menuItem==NULL)
- menu.menuItem = (MENUITEM*)malloc(sizeof(MENUITEM));
- else
- menu.menuItem = (MENUITEM*)
- realloc(menu.menuItem, sizeof(MENUITEM)*(menu.menuItems+1));
-
- strncpy (menu.menuItem[menu.menuItems].text, text, MENU_MAX);
- menu.menuItem[menu.menuItems].text[MENU_MAX] = 0;
-
- menu.menuItem[menu.menuItems].cmd = cmd;
-
- strncpy(menu.menuItem[menu.menuItems].param, param, PARAM_MAX);
- menu.menuItem[menu.menuItems].param[PARAM_MAX] = 0;
-
- menu.menuItem[menu.menuItems].commandID = 0;
-
- menu.menuItems++;
-}
-
-static void
-CloseMenu (void)
-{
- if (menu.menuItem==NULL || menu.menuItems==0)
- {
- ErrorF("LoadPreferences: Empty menu detected\n");
- return;
- }
-
- if (pref.menuItems)
- pref.menu = (MENUPARSED*)
- realloc (pref.menu, (pref.menuItems+1)*sizeof(MENUPARSED));
- else
- pref.menu = (MENUPARSED*)malloc (sizeof(MENUPARSED));
-
- memcpy (pref.menu+pref.menuItems, &menu, sizeof(MENUPARSED));
- pref.menuItems++;
-
- memset (&menu, 0, sizeof(MENUPARSED));
-}
-
-static void
-OpenIcons (void)
-{
- if (pref.icon != NULL) {
- winDebug("LoadPreferences: Redefining icon mappings\n");
- free(pref.icon);
- pref.icon = NULL;
- }
- pref.iconItems = 0;
-}
-
-static void
-AddIconLine (char *matchstr, char *iconfile)
-{
- if (pref.icon==NULL)
- pref.icon = (ICONITEM*)malloc(sizeof(ICONITEM));
- else
- pref.icon = (ICONITEM*)
- realloc(pref.icon, sizeof(ICONITEM)*(pref.iconItems+1));
-
- strncpy(pref.icon[pref.iconItems].match, matchstr, MENU_MAX);
- pref.icon[pref.iconItems].match[MENU_MAX] = 0;
-
- strncpy(pref.icon[pref.iconItems].iconFile, iconfile, PATH_MAX+NAME_MAX+1);
- pref.icon[pref.iconItems].iconFile[PATH_MAX+NAME_MAX+1] = 0;
-
- pref.icon[pref.iconItems].hicon = 0;
-
- pref.iconItems++;
-}
-
-static void
-CloseIcons (void)
-{
-}
-
-static void
-OpenStyles (void)
-{
- if (pref.style != NULL) {
- winDebug("LoadPreferences: Redefining window style\n");
- free(pref.style);
- pref.style = NULL;
- }
- pref.styleItems = 0;
-}
-
-static void
-AddStyleLine (char *matchstr, unsigned long style)
-{
- if (pref.style==NULL)
- pref.style = (STYLEITEM*)malloc(sizeof(STYLEITEM));
- else
- pref.style = (STYLEITEM*)
- realloc(pref.style, sizeof(STYLEITEM)*(pref.styleItems+1));
-
- strncpy(pref.style[pref.styleItems].match, matchstr, MENU_MAX);
- pref.style[pref.styleItems].match[MENU_MAX] = 0;
-
- pref.style[pref.styleItems].type = style;
-
- pref.styleItems++;
-}
-
-static void
-CloseStyles (void)
-{
-}
-
-static void
-OpenSysMenu (void)
-{
- if (pref.sysMenu != NULL) {
- winDebug("LoadPreferences: Redefining system menu\n");
- free(pref.sysMenu);
- pref.sysMenu = NULL;
- }
- pref.sysMenuItems = 0;
-}
-
-static void
-AddSysMenuLine (char *matchstr, char *menuname, int pos)
-{
- if (pref.sysMenu==NULL)
- pref.sysMenu = (SYSMENUITEM*)malloc(sizeof(SYSMENUITEM));
- else
- pref.sysMenu = (SYSMENUITEM*)
- realloc(pref.sysMenu, sizeof(SYSMENUITEM)*(pref.sysMenuItems+1));
-
- strncpy (pref.sysMenu[pref.sysMenuItems].match, matchstr, MENU_MAX);
- pref.sysMenu[pref.sysMenuItems].match[MENU_MAX] = 0;
-
- strncpy (pref.sysMenu[pref.sysMenuItems].menuName, menuname, MENU_MAX);
- pref.sysMenu[pref.sysMenuItems].menuName[MENU_MAX] = 0;
-
- pref.sysMenu[pref.sysMenuItems].menuPos = pos;
-
- pref.sysMenuItems++;
-}
-
-static void
-CloseSysMenu (void)
-{
-}
-
+%{
+/*
+ * Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
+ * Copyright (C) Colin Harrison 2005-2008
+ *
+ * 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 XFREE86 PROJECT 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 XFree86 Project
+ * 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 XFree86 Project.
+ *
+ * Authors: Earle F. Philhower, III
+ * Colin Harrison
+ */
+/* $XFree86: $ */
+
+#ifdef HAVE_XWIN_CONFIG_H
+#include <xwin-config.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "winprefs.h"
+#include "winmsg.h"
+
+/* The following give better error messages in bison at the cost of a few KB */
+#define YYERROR_VERBOSE 1
+
+/* YYLTYPE_IS_TRIVIAL and YYENABLE_NLS defined to suppress warnings */
+#define YYLTYPE_IS_TRIVIAL 1
+#define YYENABLE_NLS 0
+
+/* The global pref settings */
+WINPREFS pref;
+
+/* The working menu */
+static MENUPARSED menu;
+
+/* Functions for parsing the tokens into out structure */
+/* Defined at the end section of this file */
+
+static void SetIconDirectory (char *path);
+static void SetDefaultIcon (char *fname);
+static void SetRootMenu (char *menu);
+static void SetDefaultSysMenu (char *menu, int pos);
+static void SetTrayIcon (char *fname);
+
+static void OpenMenu(char *menuname);
+static void AddMenuLine(char *name, MENUCOMMANDTYPE cmd, char *param);
+static void CloseMenu(void);
+
+static void OpenIcons(void);
+static void AddIconLine(char *matchstr, char *iconfile);
+static void CloseIcons(void);
+
+static void OpenStyles(void);
+static void AddStyleLine(char *matchstr, unsigned long style);
+static void CloseStyles(void);
+
+static void OpenSysMenu(void);
+static void AddSysMenuLine(char *matchstr, char *menuname, int pos);
+static void CloseSysMenu(void);
+
+static int yyerror (char *s);
+
+extern char *yytext;
+extern int yylex(void);
+
+#define YYMALLOC malloc
+#define YYFREE free
+
+%}
+
+%union {
+ char *sVal;
+ unsigned long uVal;
+ int iVal;
+}
+
+%token NEWLINE
+%token MENU
+%token LB
+%token RB
+%token ICONDIRECTORY
+%token DEFAULTICON
+%token ICONS
+%token STYLES
+%token TOPMOST
+%token MAXIMIZE
+%token MINIMIZE
+%token BOTTOM
+%token NOTITLE
+%token OUTLINE
+%token NOFRAME
+%token DEFAULTSYSMENU
+%token SYSMENU
+%token ROOTMENU
+%token SEPARATOR
+%token ATSTART
+%token ATEND
+%token EXEC
+%token ALWAYSONTOP
+%token DEBUGOUTPUT "DEBUG"
+%token RELOAD
+%token TRAYICON
+%token FORCEEXIT
+%token SILENTEXIT
+
+%token <sVal> STRING
+%type <uVal> group1
+%type <uVal> group2
+%type <uVal> stylecombo
+%type <iVal> atspot
+
+%%
+
+input: /* empty */
+ | input line
+ ;
+
+line: NEWLINE
+ | command
+ ;
+
+
+newline_or_nada:
+ | NEWLINE newline_or_nada
+ ;
+
+command: defaulticon
+ | icondirectory
+ | menu
+ | icons
+ | styles
+ | sysmenu
+ | rootmenu
+ | defaultsysmenu
+ | debug
+ | trayicon
+ | forceexit
+ | silentexit
+ ;
+
+trayicon: TRAYICON STRING NEWLINE { SetTrayIcon($2); free($2); }
+ ;
+
+rootmenu: ROOTMENU STRING NEWLINE { SetRootMenu($2); free($2); }
+ ;
+
+defaultsysmenu: DEFAULTSYSMENU STRING atspot NEWLINE { SetDefaultSysMenu($2, $3); free($2); }
+ ;
+
+defaulticon: DEFAULTICON STRING NEWLINE { SetDefaultIcon($2); free($2); }
+ ;
+
+icondirectory: ICONDIRECTORY STRING NEWLINE { SetIconDirectory($2); free($2); }
+ ;
+
+menuline: SEPARATOR NEWLINE newline_or_nada { AddMenuLine("-", CMD_SEPARATOR, ""); }
+ | STRING ALWAYSONTOP NEWLINE newline_or_nada { AddMenuLine($1, CMD_ALWAYSONTOP, ""); free($1); }
+ | STRING EXEC STRING NEWLINE newline_or_nada { AddMenuLine($1, CMD_EXEC, $3); free($1); free($3); }
+ | STRING MENU STRING NEWLINE newline_or_nada { AddMenuLine($1, CMD_MENU, $3); free($1); free($3); }
+ | STRING RELOAD NEWLINE newline_or_nada { AddMenuLine($1, CMD_RELOAD, ""); free($1); }
+ ;
+
+menulist: menuline
+ | menuline menulist
+ ;
+
+menu: MENU STRING LB { OpenMenu($2); free($2); } newline_or_nada menulist RB {CloseMenu();}
+ ;
+
+iconline: STRING STRING NEWLINE newline_or_nada { AddIconLine($1, $2); free($1); free($2); }
+ ;
+
+iconlist: iconline
+ | iconline iconlist
+ ;
+
+icons: ICONS LB {OpenIcons();} newline_or_nada iconlist RB {CloseIcons();}
+ ;
+
+group1: TOPMOST { $$=STYLE_TOPMOST; }
+ | MAXIMIZE { $$=STYLE_MAXIMIZE; }
+ | MINIMIZE { $$=STYLE_MINIMIZE; }
+ | BOTTOM { $$=STYLE_BOTTOM; }
+ ;
+
+group2: NOTITLE { $$=STYLE_NOTITLE; }
+ | OUTLINE { $$=STYLE_OUTLINE; }
+ | NOFRAME { $$=STYLE_NOFRAME; }
+ ;
+
+stylecombo: group1 { $$=$1; }
+ | group2 { $$=$1; }
+ | group1 group2 { $$=$1|$2; }
+ | group2 group1 { $$=$1|$2; }
+ ;
+
+styleline: STRING stylecombo NEWLINE newline_or_nada { AddStyleLine($1, $2); free($1); }
+ ;
+
+stylelist: styleline
+ | styleline stylelist
+ ;
+
+styles: STYLES LB {OpenStyles();} newline_or_nada stylelist RB {CloseStyles();}
+ ;
+
+atspot: { $$=AT_END; }
+ | ATSTART { $$=AT_START; }
+ | ATEND { $$=AT_END; }
+ ;
+
+sysmenuline: STRING STRING atspot NEWLINE newline_or_nada { AddSysMenuLine($1, $2, $3); free($1); free($2); }
+ ;
+
+sysmenulist: sysmenuline
+ | sysmenuline sysmenulist
+ ;
+
+sysmenu: SYSMENU LB NEWLINE {OpenSysMenu();} newline_or_nada sysmenulist RB {CloseSysMenu();}
+ ;
+
+forceexit: FORCEEXIT NEWLINE { pref.fForceExit = TRUE; }
+ ;
+
+silentexit: SILENTEXIT NEWLINE { pref.fSilentExit = TRUE; }
+ ;
+
+debug: DEBUGOUTPUT STRING NEWLINE { winDebug("LoadPreferences: %s\n", $2); free($2); }
+ ;
+
+
+%%
+/*
+ * Errors in parsing abort and print log messages
+ */
+static int
+yyerror (char *s)
+{
+ extern int yylineno; /* Handled by flex internally */
+
+ ErrorF("LoadPreferences: %s line %d\n", s, yylineno);
+ return 1;
+}
+
+/* Miscellaneous functions to store TOKENs into the structure */
+static void
+SetIconDirectory (char *path)
+{
+ strncpy (pref.iconDirectory, path, PATH_MAX);
+ pref.iconDirectory[PATH_MAX] = 0;
+}
+
+static void
+SetDefaultIcon (char *fname)
+{
+ strncpy (pref.defaultIconName, fname, NAME_MAX);
+ pref.defaultIconName[NAME_MAX] = 0;
+}
+
+static void
+SetTrayIcon (char *fname)
+{
+ strncpy (pref.trayIconName, fname, NAME_MAX);
+ pref.trayIconName[NAME_MAX] = 0;
+}
+
+static void
+SetRootMenu (char *menu)
+{
+ strncpy (pref.rootMenuName, menu, MENU_MAX);
+ pref.rootMenuName[MENU_MAX] = 0;
+}
+
+static void
+SetDefaultSysMenu (char *menu, int pos)
+{
+ strncpy (pref.defaultSysMenuName, menu, MENU_MAX);
+ pref.defaultSysMenuName[MENU_MAX] = 0;
+ pref.defaultSysMenuPos = pos;
+}
+
+static void
+OpenMenu (char *menuname)
+{
+ if (menu.menuItem) free(menu.menuItem);
+ menu.menuItem = NULL;
+ strncpy(menu.menuName, menuname, MENU_MAX);
+ menu.menuName[MENU_MAX] = 0;
+ menu.menuItems = 0;
+}
+
+static void
+AddMenuLine (char *text, MENUCOMMANDTYPE cmd, char *param)
+{
+ if (menu.menuItem==NULL)
+ menu.menuItem = (MENUITEM*)malloc(sizeof(MENUITEM));
+ else
+ menu.menuItem = (MENUITEM*)
+ realloc(menu.menuItem, sizeof(MENUITEM)*(menu.menuItems+1));
+
+ strncpy (menu.menuItem[menu.menuItems].text, text, MENU_MAX);
+ menu.menuItem[menu.menuItems].text[MENU_MAX] = 0;
+
+ menu.menuItem[menu.menuItems].cmd = cmd;
+
+ strncpy(menu.menuItem[menu.menuItems].param, param, PARAM_MAX);
+ menu.menuItem[menu.menuItems].param[PARAM_MAX] = 0;
+
+ menu.menuItem[menu.menuItems].commandID = 0;
+
+ menu.menuItems++;
+}
+
+static void
+CloseMenu (void)
+{
+ if (menu.menuItem==NULL || menu.menuItems==0)
+ {
+ ErrorF("LoadPreferences: Empty menu detected\n");
+ return;
+ }
+
+ if (pref.menuItems)
+ pref.menu = (MENUPARSED*)
+ realloc (pref.menu, (pref.menuItems+1)*sizeof(MENUPARSED));
+ else
+ pref.menu = (MENUPARSED*)malloc (sizeof(MENUPARSED));
+
+ memcpy (pref.menu+pref.menuItems, &menu, sizeof(MENUPARSED));
+ pref.menuItems++;
+
+ memset (&menu, 0, sizeof(MENUPARSED));
+}
+
+static void
+OpenIcons (void)
+{
+ if (pref.icon != NULL) {
+ winDebug("LoadPreferences: Redefining icon mappings\n");
+ free(pref.icon);
+ pref.icon = NULL;
+ }
+ pref.iconItems = 0;
+}
+
+static void
+AddIconLine (char *matchstr, char *iconfile)
+{
+ if (pref.icon==NULL)
+ pref.icon = (ICONITEM*)malloc(sizeof(ICONITEM));
+ else
+ pref.icon = (ICONITEM*)
+ realloc(pref.icon, sizeof(ICONITEM)*(pref.iconItems+1));
+
+ strncpy(pref.icon[pref.iconItems].match, matchstr, MENU_MAX);
+ pref.icon[pref.iconItems].match[MENU_MAX] = 0;
+
+ strncpy(pref.icon[pref.iconItems].iconFile, iconfile, PATH_MAX+NAME_MAX+1);
+ pref.icon[pref.iconItems].iconFile[PATH_MAX+NAME_MAX+1] = 0;
+
+ pref.icon[pref.iconItems].hicon = 0;
+
+ pref.iconItems++;
+}
+
+static void
+CloseIcons (void)
+{
+}
+
+static void
+OpenStyles (void)
+{
+ if (pref.style != NULL) {
+ winDebug("LoadPreferences: Redefining window style\n");
+ free(pref.style);
+ pref.style = NULL;
+ }
+ pref.styleItems = 0;
+}
+
+static void
+AddStyleLine (char *matchstr, unsigned long style)
+{
+ if (pref.style==NULL)
+ pref.style = (STYLEITEM*)malloc(sizeof(STYLEITEM));
+ else
+ pref.style = (STYLEITEM*)
+ realloc(pref.style, sizeof(STYLEITEM)*(pref.styleItems+1));
+
+ strncpy(pref.style[pref.styleItems].match, matchstr, MENU_MAX);
+ pref.style[pref.styleItems].match[MENU_MAX] = 0;
+
+ pref.style[pref.styleItems].type = style;
+
+ pref.styleItems++;
+}
+
+static void
+CloseStyles (void)
+{
+}
+
+static void
+OpenSysMenu (void)
+{
+ if (pref.sysMenu != NULL) {
+ winDebug("LoadPreferences: Redefining system menu\n");
+ free(pref.sysMenu);
+ pref.sysMenu = NULL;
+ }
+ pref.sysMenuItems = 0;
+}
+
+static void
+AddSysMenuLine (char *matchstr, char *menuname, int pos)
+{
+ if (pref.sysMenu==NULL)
+ pref.sysMenu = (SYSMENUITEM*)malloc(sizeof(SYSMENUITEM));
+ else
+ pref.sysMenu = (SYSMENUITEM*)
+ realloc(pref.sysMenu, sizeof(SYSMENUITEM)*(pref.sysMenuItems+1));
+
+ strncpy (pref.sysMenu[pref.sysMenuItems].match, matchstr, MENU_MAX);
+ pref.sysMenu[pref.sysMenuItems].match[MENU_MAX] = 0;
+
+ strncpy (pref.sysMenu[pref.sysMenuItems].menuName, menuname, MENU_MAX);
+ pref.sysMenu[pref.sysMenuItems].menuName[MENU_MAX] = 0;
+
+ pref.sysMenu[pref.sysMenuItems].menuPos = pos;
+
+ pref.sysMenuItems++;
+}
+
+static void
+CloseSysMenu (void)
+{
+}
+
diff --git a/xorg-server/hw/xwin/winscrinit.c b/xorg-server/hw/xwin/winscrinit.c
index 2b699a84e..d789e563f 100644
--- a/xorg-server/hw/xwin/winscrinit.c
+++ b/xorg-server/hw/xwin/winscrinit.c
@@ -81,9 +81,9 @@ static Bool
*/
Bool
-winScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
+winScreenInit(ScreenPtr pScreen, int argc, char **argv)
{
- winScreenInfoPtr pScreenInfo = &g_ScreenInfo[index];
+ winScreenInfoPtr pScreenInfo = &g_ScreenInfo[pScreen->myNum];
winPrivScreenPtr pScreenPriv;
HDC hdc;
DWORD dwInitialBPP;
@@ -200,11 +200,11 @@ winScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
miClearVisualTypes();
/* Call the engine dependent screen initialization procedure */
- if (pScreenPriv->pwinFinishScreenInit && !((*pScreenPriv->pwinFinishScreenInit) (index, pScreen, argc, argv))) {
+ if (pScreenPriv->pwinFinishScreenInit && !((*pScreenPriv->pwinFinishScreenInit) (pScreen->myNum, pScreen, argc, argv))) {
ErrorF("winScreenInit - winFinishScreenInit () failed\n");
/* call the engine dependent screen close procedure to clean up from a failure */
- pScreenPriv->pwinCloseScreen(index, pScreen);
+ pScreenPriv->pwinCloseScreen(pScreen);
return FALSE;
}
@@ -224,7 +224,7 @@ winScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
pScreen->y = pScreenInfo->dwInitialY - GetSystemMetrics(SM_YVIRTUALSCREEN);
winDebug("Screen %d added at virtual desktop coordinate (%d,%d).\n",
- index, pScreen->x, pScreen->y);
+ pScreen->myNum, pScreen->x, pScreen->y);
winDebug("winScreenInit - returning\n");
return TRUE;
@@ -352,8 +352,6 @@ winFinishScreenInitFB(int index, ScreenPtr pScreen, int argc, char **argv)
*/
pScreen->BlockHandler = winBlockHandler;
pScreen->WakeupHandler = winWakeupHandler;
- pScreen->blockData = pScreen;
- pScreen->wakeupData = pScreen;
/* Render extension initialization, calls miPictureInit */
if (!fbPictureInit(pScreen, NULL, 0)) {
@@ -623,8 +621,6 @@ winFinishScreenInitNativeGDI(int index,
*/
pScreen->BlockHandler = winBlockHandler;
pScreen->WakeupHandler = winWakeupHandler;
- pScreen->blockData = pScreen;
- pScreen->wakeupData = pScreen;
/* Place our save screen function */
pScreen->SaveScreen = winSaveScreen;
diff --git a/xorg-server/hw/xwin/winshaddd.c b/xorg-server/hw/xwin/winshaddd.c
index 4b0eba1cb..f6ba49a8a 100644
--- a/xorg-server/hw/xwin/winshaddd.c
+++ b/xorg-server/hw/xwin/winshaddd.c
@@ -49,7 +49,7 @@ static void
winShadowUpdateDD(ScreenPtr pScreen, shadowBufPtr pBuf);
static Bool
- winCloseScreenShadowDD(int nIndex, ScreenPtr pScreen);
+ winCloseScreenShadowDD(ScreenPtr pScreen);
static Bool
winInitVisualsShadowDD(ScreenPtr pScreen);
@@ -613,7 +613,7 @@ winInitScreenShadowDD(ScreenPtr pScreen)
*/
static Bool
-winCloseScreenShadowDD(int nIndex, ScreenPtr pScreen)
+winCloseScreenShadowDD(ScreenPtr pScreen)
{
winScreenPriv(pScreen);
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
@@ -628,7 +628,7 @@ winCloseScreenShadowDD(int nIndex, ScreenPtr pScreen)
/* Call the wrapped CloseScreen procedure */
WIN_UNWRAP(CloseScreen);
if (pScreen->CloseScreen)
- fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
+ fReturn = (*pScreen->CloseScreen) (pScreen);
winFreeFBShadowDD(pScreen);
diff --git a/xorg-server/hw/xwin/winshadddnl.c b/xorg-server/hw/xwin/winshadddnl.c
index 17fe23e5a..2a28d8717 100644
--- a/xorg-server/hw/xwin/winshadddnl.c
+++ b/xorg-server/hw/xwin/winshadddnl.c
@@ -69,7 +69,7 @@ static void
winShadowUpdateDDNL(ScreenPtr pScreen, shadowBufPtr pBuf);
static Bool
- winCloseScreenShadowDDNL(int nIndex, ScreenPtr pScreen);
+ winCloseScreenShadowDDNL(ScreenPtr pScreen);
static Bool
winInitVisualsShadowDDNL(ScreenPtr pScreen);
@@ -766,7 +766,7 @@ winInitScreenShadowDDNL(ScreenPtr pScreen)
*/
static Bool
-winCloseScreenShadowDDNL(int nIndex, ScreenPtr pScreen)
+winCloseScreenShadowDDNL(ScreenPtr pScreen)
{
winScreenPriv(pScreen);
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
@@ -781,7 +781,7 @@ winCloseScreenShadowDDNL(int nIndex, ScreenPtr pScreen)
/* Call the wrapped CloseScreen procedure */
WIN_UNWRAP(CloseScreen);
if (pScreen->CloseScreen)
- fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
+ fReturn = (*pScreen->CloseScreen) (pScreen);
winFreeFBShadowDDNL(pScreen);
diff --git a/xorg-server/hw/xwin/winshadgdi.c b/xorg-server/hw/xwin/winshadgdi.c
index c4d1da8d0..2e5714bf0 100644
--- a/xorg-server/hw/xwin/winshadgdi.c
+++ b/xorg-server/hw/xwin/winshadgdi.c
@@ -50,7 +50,7 @@ static void
winShadowUpdateGDI(ScreenPtr pScreen, shadowBufPtr pBuf);
static Bool
- winCloseScreenShadowGDI(int nIndex, ScreenPtr pScreen);
+ winCloseScreenShadowGDI(ScreenPtr pScreen);
static Bool
winInitVisualsShadowGDI(ScreenPtr pScreen);
@@ -565,7 +565,7 @@ winInitScreenShadowGDI(ScreenPtr pScreen)
*/
static Bool
-winCloseScreenShadowGDI(int nIndex, ScreenPtr pScreen)
+winCloseScreenShadowGDI(ScreenPtr pScreen)
{
winScreenPriv(pScreen);
winScreenInfo *pScreenInfo = pScreenPriv->pScreenInfo;
@@ -580,7 +580,7 @@ winCloseScreenShadowGDI(int nIndex, ScreenPtr pScreen)
/* Call the wrapped CloseScreen procedure */
WIN_UNWRAP(CloseScreen);
if (pScreen->CloseScreen)
- fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
+ fReturn = (*pScreen->CloseScreen) (pScreen);
/* Delete the window property */
RemoveProp(pScreenPriv->hwndScreen, WIN_SCR_PROP);
diff --git a/xorg-server/hw/xwin/winwakeup.c b/xorg-server/hw/xwin/winwakeup.c
index 1d2bfedbe..77c160533 100644
--- a/xorg-server/hw/xwin/winwakeup.c
+++ b/xorg-server/hw/xwin/winwakeup.c
@@ -38,8 +38,8 @@
/* See Porting Layer Definition - p. 7 */
void
-winWakeupHandler(int nScreen,
- pointer pWakeupData, unsigned long ulResult, pointer pReadmask)
+winWakeupHandler(ScreenPtr pScreen,
+ unsigned long ulResult, pointer pReadmask)
{
MSG msg;
diff --git a/xorg-server/include/.gitignore b/xorg-server/include/.gitignore
new file mode 100644
index 000000000..8fffad782
--- /dev/null
+++ b/xorg-server/include/.gitignore
@@ -0,0 +1,5 @@
+# Add & Override for this directory and it's subdirectories
+*-config.h
+do-not-use-config.h.in
+xorg-server.h
+
diff --git a/xorg-server/include/dix-config-apple-verbatim.h b/xorg-server/include/dix-config-apple-verbatim.h
index f429d200e..720897c80 100644
--- a/xorg-server/include/dix-config-apple-verbatim.h
+++ b/xorg-server/include/dix-config-apple-verbatim.h
@@ -1,8 +1,8 @@
-/* Do not include this file directly. It is included at the end of <dix-config.h> */
-
-/* Correctly set _XSERVER64 for OSX fat binaries */
-#if defined(__LP64__) && !defined(_XSERVER64)
-#define _XSERVER64 1
-#elif !defined(__LP64__) && defined(_XSERVER64)
-#undef _XSERVER64
-#endif
+/* Do not include this file directly. It is included at the end of <dix-config.h> */
+
+/* Correctly set _XSERVER64 for OSX fat binaries */
+#if defined(__LP64__) && !defined(_XSERVER64)
+#define _XSERVER64 1
+#elif !defined(__LP64__) && defined(_XSERVER64)
+#undef _XSERVER64
+#endif
diff --git a/xorg-server/include/kdrive-config.h.in b/xorg-server/include/kdrive-config.h.in
index 0e54aa18f..887213d78 100644
--- a/xorg-server/include/kdrive-config.h.in
+++ b/xorg-server/include/kdrive-config.h.in
@@ -1,40 +1,40 @@
-/* kdrive-config.h.in: not at all generated. -*- c -*-
- */
-
-#ifndef _KDRIVE_CONFIG_H_
-#define _KDRIVE_CONFIG_H_
-
-#include <dix-config.h>
-#include <xkb-config.h>
-
-/* Building kdrive server. */
-#undef KDRIVESERVER
-
-/* Include framebuffer support in X servers */
-#undef KDRIVEFBDEV
-
-/* Enable touchscreen support */
-#undef TOUCHSCREEN
-
-/* Support tslib touchscreen abstraction library */
-#undef TSLIB
-
-/* Support KDrive kbd driver */
-#undef KDRIVE_KBD
-
-/* Support KDrive mouse driver */
-#undef KDRIVE_MOUSE
-
-/* Support KDrive evdev driver */
-#undef KDRIVE_EVDEV
-
-/* Verbose debugging output hilarity */
-#undef DEBUG
-
-/* Have the backtrace() function. */
-#undef HAVE_BACKTRACE
-
-/* Have execinfo.h for backtrace(). */
-#undef HAVE_EXECINFO_H
-
-#endif /* _KDRIVE_CONFIG_H_ */
+/* kdrive-config.h.in: not at all generated. -*- c -*-
+ */
+
+#ifndef _KDRIVE_CONFIG_H_
+#define _KDRIVE_CONFIG_H_
+
+#include <dix-config.h>
+#include <xkb-config.h>
+
+/* Building kdrive server. */
+#undef KDRIVESERVER
+
+/* Include framebuffer support in X servers */
+#undef KDRIVEFBDEV
+
+/* Enable touchscreen support */
+#undef TOUCHSCREEN
+
+/* Support tslib touchscreen abstraction library */
+#undef TSLIB
+
+/* Support KDrive kbd driver */
+#undef KDRIVE_KBD
+
+/* Support KDrive mouse driver */
+#undef KDRIVE_MOUSE
+
+/* Support KDrive evdev driver */
+#undef KDRIVE_EVDEV
+
+/* Verbose debugging output hilarity */
+#undef DEBUG
+
+/* Have the backtrace() function. */
+#undef HAVE_BACKTRACE
+
+/* Have execinfo.h for backtrace(). */
+#undef HAVE_EXECINFO_H
+
+#endif /* _KDRIVE_CONFIG_H_ */
diff --git a/xorg-server/include/pixmap.h b/xorg-server/include/pixmap.h
index 26d737c4d..9bb5bb7b8 100644
--- a/xorg-server/include/pixmap.h
+++ b/xorg-server/include/pixmap.h
@@ -100,9 +100,9 @@ extern _X_EXPORT PixmapPtr GetScratchPixmapHeader(ScreenPtr /*pScreen */ ,
extern _X_EXPORT void FreeScratchPixmapHeader(PixmapPtr /*pPixmap */ );
-extern _X_EXPORT Bool CreateScratchPixmapsForScreen(int /*scrnum */ );
+extern _X_EXPORT Bool CreateScratchPixmapsForScreen(ScreenPtr /*pScreen */ );
-extern _X_EXPORT void FreeScratchPixmapsForScreen(int /*scrnum */ );
+extern _X_EXPORT void FreeScratchPixmapsForScreen(ScreenPtr /*pScreen */ );
extern _X_EXPORT PixmapPtr AllocatePixmap(ScreenPtr /*pScreen */ ,
int /*pixDataSize */ );
diff --git a/xorg-server/include/screenint.h b/xorg-server/include/screenint.h
index 881747182..6b0cc70ee 100644
--- a/xorg-server/include/screenint.h
+++ b/xorg-server/include/screenint.h
@@ -55,7 +55,6 @@ typedef struct _Depth *DepthPtr;
typedef struct _Screen *ScreenPtr;
extern _X_EXPORT int AddScreen(Bool (* /*pfnInit */ )(
- int /*index */ ,
ScreenPtr /*pScreen */
,
int /*argc */ ,
diff --git a/xorg-server/include/scrnintstr.h b/xorg-server/include/scrnintstr.h
index 21d2d0b5d..a646d8854 100644
--- a/xorg-server/include/scrnintstr.h
+++ b/xorg-server/include/scrnintstr.h
@@ -95,8 +95,7 @@ typedef struct _ScreenSaverStuff {
* or as a local variable) can easily do so and retain full type checking.
*/
-typedef Bool (*CloseScreenProcPtr) (int /*index */ ,
- ScreenPtr /*pScreen */ );
+typedef Bool (*CloseScreenProcPtr) (ScreenPtr /*pScreen */ );
typedef void (*QueryBestSizeProcPtr) (int /*class */ ,
unsigned short * /*pwidth */ ,
@@ -258,13 +257,11 @@ typedef void (*SendGraphicsExposeProcPtr) (ClientPtr /*client */ ,
int /*major */ ,
int /*minor */ );
-typedef void (*ScreenBlockHandlerProcPtr) (int /*screenNum */ ,
- pointer /*blockData */ ,
+typedef void (*ScreenBlockHandlerProcPtr) (ScreenPtr /*pScreen*/ ,
pointer /*pTimeout */ ,
pointer /*pReadmask */ );
-typedef void (*ScreenWakeupHandlerProcPtr) (int /*screenNum */ ,
- pointer /*wakeupData */ ,
+typedef void (*ScreenWakeupHandlerProcPtr) (ScreenPtr /*pScreen*/ ,
unsigned long /*result */ ,
pointer /*pReadMask */ );
@@ -444,9 +441,6 @@ typedef struct _Screen {
ScreenBlockHandlerProcPtr BlockHandler;
ScreenWakeupHandlerProcPtr WakeupHandler;
- pointer blockData;
- pointer wakeupData;
-
/* anybody can get a piece of this array */
PrivateRec *devPrivates;
diff --git a/xorg-server/include/version-config.h.in b/xorg-server/include/version-config.h.in
index 8180dff8e..4fb614dae 100644
--- a/xorg-server/include/version-config.h.in
+++ b/xorg-server/include/version-config.h.in
@@ -1,16 +1,16 @@
-/* version-config.h.in: not generated */
-
-#ifndef VERSION_CONFIG_H
-#define VERSION_CONFIG_H
-
-/* Vendor man version */
-#undef VENDOR_MAN_VERSION
-
-/* Vendor name */
-#undef VENDOR_NAME
-
-/* Vendor release */
-#undef VENDOR_RELEASE
-
-#endif /* VERSION_CONFIG_H */
-
+/* version-config.h.in: not generated */
+
+#ifndef VERSION_CONFIG_H
+#define VERSION_CONFIG_H
+
+/* Vendor man version */
+#undef VENDOR_MAN_VERSION
+
+/* Vendor name */
+#undef VENDOR_NAME
+
+/* Vendor release */
+#undef VENDOR_RELEASE
+
+#endif /* VERSION_CONFIG_H */
+
diff --git a/xorg-server/include/xsha1.h b/xorg-server/include/xsha1.h
index aab71067a..89e6f5f0b 100644
--- a/xorg-server/include/xsha1.h
+++ b/xorg-server/include/xsha1.h
@@ -1,19 +1,19 @@
-#ifndef XSHA1_H
-#define XSHA1_H
-
-/* Initialize SHA1 computation. Returns NULL on error. */
-void *x_sha1_init(void);
-
-/*
- * Add some data to be hashed. ctx is the value returned by x_sha1_init()
- * Returns 0 on error, 1 on success.
- */
-int x_sha1_update(void *ctx, void *data, int size);
-
-/*
- * Place the hash in result, and free ctx.
- * Returns 0 on error, 1 on success.
- */
-int x_sha1_final(void *ctx, unsigned char result[20]);
-
-#endif
+#ifndef XSHA1_H
+#define XSHA1_H
+
+/* Initialize SHA1 computation. Returns NULL on error. */
+void *x_sha1_init(void);
+
+/*
+ * Add some data to be hashed. ctx is the value returned by x_sha1_init()
+ * Returns 0 on error, 1 on success.
+ */
+int x_sha1_update(void *ctx, void *data, int size);
+
+/*
+ * Place the hash in result, and free ctx.
+ * Returns 0 on error, 1 on success.
+ */
+int x_sha1_final(void *ctx, unsigned char result[20]);
+
+#endif
diff --git a/xorg-server/m4/ac_define_dir.m4 b/xorg-server/m4/ac_define_dir.m4
index db42d3eb0..ef23b78f7 100644
--- a/xorg-server/m4/ac_define_dir.m4
+++ b/xorg-server/m4/ac_define_dir.m4
@@ -1,49 +1,49 @@
-# ===========================================================================
-# http://autoconf-archive.cryp.to/ac_define_dir.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-# AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
-#
-# DESCRIPTION
-#
-# This macro sets VARNAME to the expansion of the DIR variable, taking
-# care of fixing up ${prefix} and such.
-#
-# VARNAME is then offered as both an output variable and a C preprocessor
-# symbol.
-#
-# Example:
-#
-# AC_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.])
-#
-# LAST MODIFICATION
-#
-# 2008-04-12
-#
-# COPYLEFT
-#
-# Copyright (c) 2008 Stepan Kasal <kasal@ucw.cz>
-# Copyright (c) 2008 Andreas Schwab <schwab@suse.de>
-# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-# Copyright (c) 2008 Alexandre Oliva
-#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved.
-
-AC_DEFUN([AC_DEFINE_DIR], [
- prefix_NONE=
- exec_prefix_NONE=
- test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
- test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
-dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
-dnl refers to ${prefix}. Thus we have to use `eval' twice.
- eval ac_define_dir="\"[$]$2\""
- eval ac_define_dir="\"$ac_define_dir\""
- AC_SUBST($1, "$ac_define_dir")
- AC_DEFINE_UNQUOTED($1, "$ac_define_dir", [$3])
- test "$prefix_NONE" && prefix=NONE
- test "$exec_prefix_NONE" && exec_prefix=NONE
-])
+# ===========================================================================
+# http://autoconf-archive.cryp.to/ac_define_dir.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
+#
+# DESCRIPTION
+#
+# This macro sets VARNAME to the expansion of the DIR variable, taking
+# care of fixing up ${prefix} and such.
+#
+# VARNAME is then offered as both an output variable and a C preprocessor
+# symbol.
+#
+# Example:
+#
+# AC_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.])
+#
+# LAST MODIFICATION
+#
+# 2008-04-12
+#
+# COPYLEFT
+#
+# Copyright (c) 2008 Stepan Kasal <kasal@ucw.cz>
+# Copyright (c) 2008 Andreas Schwab <schwab@suse.de>
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2008 Alexandre Oliva
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved.
+
+AC_DEFUN([AC_DEFINE_DIR], [
+ prefix_NONE=
+ exec_prefix_NONE=
+ test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
+ test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
+dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
+dnl refers to ${prefix}. Thus we have to use `eval' twice.
+ eval ac_define_dir="\"[$]$2\""
+ eval ac_define_dir="\"$ac_define_dir\""
+ AC_SUBST($1, "$ac_define_dir")
+ AC_DEFINE_UNQUOTED($1, "$ac_define_dir", [$3])
+ test "$prefix_NONE" && prefix=NONE
+ test "$exec_prefix_NONE" && exec_prefix=NONE
+])
diff --git a/xorg-server/mi/midispcur.c b/xorg-server/mi/midispcur.c
index 24b9a700d..9ee824283 100644
--- a/xorg-server/mi/midispcur.c
+++ b/xorg-server/mi/midispcur.c
@@ -63,7 +63,7 @@ static DevScreenPrivateKeyRec miDCDeviceKeyRec;
#define miDCDeviceKey (&miDCDeviceKeyRec)
-static Bool miDCCloseScreen(int index, ScreenPtr pScreen);
+static Bool miDCCloseScreen(ScreenPtr pScreen);
/* per device private data */
typedef struct {
@@ -128,7 +128,7 @@ miDCInitialize(ScreenPtr pScreen, miPointerScreenFuncPtr screenFuncs)
}
static Bool
-miDCCloseScreen(int index, ScreenPtr pScreen)
+miDCCloseScreen(ScreenPtr pScreen)
{
miDCScreenPtr pScreenPriv;
@@ -136,7 +136,7 @@ miDCCloseScreen(int index, ScreenPtr pScreen)
miDCScreenKey);
pScreen->CloseScreen = pScreenPriv->CloseScreen;
free((pointer) pScreenPriv);
- return (*pScreen->CloseScreen) (index, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
Bool
diff --git a/xorg-server/mi/mioverlay.c b/xorg-server/mi/mioverlay.c
index a66a71fb5..14cd14ccb 100644
--- a/xorg-server/mi/mioverlay.c
+++ b/xorg-server/mi/mioverlay.c
@@ -70,7 +70,7 @@ static Bool HasUnderlayChildren(WindowPtr);
static void MarkUnderlayWindow(WindowPtr);
static Bool CollectUnderlayChildrenRegions(WindowPtr, RegionPtr);
-static Bool miOverlayCloseScreen(int, ScreenPtr);
+static Bool miOverlayCloseScreen(ScreenPtr);
static Bool miOverlayCreateWindow(WindowPtr);
static Bool miOverlayDestroyWindow(WindowPtr);
static Bool miOverlayUnrealizeWindow(WindowPtr);
@@ -164,7 +164,7 @@ miInitOverlay(ScreenPtr pScreen,
}
static Bool
-miOverlayCloseScreen(int i, ScreenPtr pScreen)
+miOverlayCloseScreen(ScreenPtr pScreen)
{
miOverlayScreenPtr pScreenPriv = MIOVERLAY_GET_SCREEN_PRIVATE(pScreen);
@@ -176,7 +176,7 @@ miOverlayCloseScreen(int i, ScreenPtr pScreen)
free(pScreenPriv);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
static Bool
diff --git a/xorg-server/mi/mipointer.c b/xorg-server/mi/mipointer.c
index de6698a37..a56838ead 100644
--- a/xorg-server/mi/mipointer.c
+++ b/xorg-server/mi/mipointer.c
@@ -91,7 +91,7 @@ static void miPointerCursorLimits(DeviceIntPtr pDev, ScreenPtr pScreen,
BoxPtr pTopLeftBox);
static Bool miPointerSetCursorPosition(DeviceIntPtr pDev, ScreenPtr pScreen,
int x, int y, Bool generateEvent);
-static Bool miPointerCloseScreen(int index, ScreenPtr pScreen);
+static Bool miPointerCloseScreen(ScreenPtr pScreen);
static void miPointerMove(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y);
static Bool miPointerDeviceInitialize(DeviceIntPtr pDev, ScreenPtr pScreen);
static void miPointerDeviceCleanup(DeviceIntPtr pDev, ScreenPtr pScreen);
@@ -154,7 +154,7 @@ miPointerInitialize(ScreenPtr pScreen,
* @param pScreen The actual screen pointer
*/
static Bool
-miPointerCloseScreen(int index, ScreenPtr pScreen)
+miPointerCloseScreen(ScreenPtr pScreen)
{
SetupScreen(pScreen);
@@ -162,7 +162,7 @@ miPointerCloseScreen(int index, ScreenPtr pScreen)
free((pointer) pScreenPriv);
FreeEventList(events, GetMaximumEventsNum());
events = NULL;
- return (*pScreen->CloseScreen) (index, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
/*
diff --git a/xorg-server/mi/miscrinit.c b/xorg-server/mi/miscrinit.c
index 2850c8d79..4698b532f 100644
--- a/xorg-server/mi/miscrinit.c
+++ b/xorg-server/mi/miscrinit.c
@@ -119,7 +119,7 @@ miModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth,
}
static Bool
-miCloseScreen(int iScreen, ScreenPtr pScreen)
+miCloseScreen(ScreenPtr pScreen)
{
return ((*pScreen->DestroyPixmap) ((PixmapPtr) pScreen->devPrivate));
}
@@ -262,8 +262,6 @@ miScreenInit(ScreenPtr pScreen, pointer pbits, /* pointer to screen bits */
pScreen->SendGraphicsExpose = miSendGraphicsExpose;
pScreen->BlockHandler = (ScreenBlockHandlerProcPtr) NoopDDA;
pScreen->WakeupHandler = (ScreenWakeupHandlerProcPtr) NoopDDA;
- pScreen->blockData = (pointer) 0;
- pScreen->wakeupData = (pointer) 0;
pScreen->MarkWindow = miMarkWindow;
pScreen->MarkOverlappedWindows = miMarkOverlappedWindows;
pScreen->MoveWindow = miMoveWindow;
diff --git a/xorg-server/mi/misprite.c b/xorg-server/mi/misprite.c
index db35d667e..3ef25e75f 100644
--- a/xorg-server/mi/misprite.c
+++ b/xorg-server/mi/misprite.c
@@ -191,7 +191,7 @@ static DevPrivateKeyRec miSpriteDevPrivatesKeyRec;
#define miSpriteDevPrivatesKey (&miSpriteDevPrivatesKeyRec)
-static Bool miSpriteCloseScreen(int i, ScreenPtr pScreen);
+static Bool miSpriteCloseScreen(ScreenPtr pScreen);
static void miSpriteGetImage(DrawablePtr pDrawable, int sx, int sy,
int w, int h, unsigned int format,
unsigned long planemask, char *pdstLine);
@@ -203,7 +203,7 @@ static void miSpriteSourceValidate(DrawablePtr pDrawable, int x, int y,
unsigned int subWindowMode);
static void miSpriteCopyWindow(WindowPtr pWindow,
DDXPointRec ptOldOrg, RegionPtr prgnSrc);
-static void miSpriteBlockHandler(int i, pointer blockData,
+static void miSpriteBlockHandler(ScreenPtr pScreen,
pointer pTimeout, pointer pReadMask);
static void miSpriteInstallColormap(ColormapPtr pMap);
static void miSpriteStoreColors(ColormapPtr pMap, int ndef, xColorItem * pdef);
@@ -367,7 +367,7 @@ miSpriteInitialize(ScreenPtr pScreen, miPointerScreenFuncPtr screenFuncs)
*/
static Bool
-miSpriteCloseScreen(int i, ScreenPtr pScreen)
+miSpriteCloseScreen(ScreenPtr pScreen)
{
miSpriteScreenPtr pScreenPriv = GetSpriteScreen(pScreen);
@@ -382,7 +382,7 @@ miSpriteCloseScreen(int i, ScreenPtr pScreen)
free(pScreenPriv);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
static void
@@ -520,10 +520,9 @@ miSpriteCopyWindow(WindowPtr pWindow, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
}
static void
-miSpriteBlockHandler(int i, pointer blockData, pointer pTimeout,
+miSpriteBlockHandler(ScreenPtr pScreen, pointer pTimeout,
pointer pReadmask)
{
- ScreenPtr pScreen = screenInfo.screens[i];
miSpriteScreenPtr pPriv = GetSpriteScreen(pScreen);
DeviceIntPtr pDev;
miCursorInfoPtr pCursorInfo;
@@ -554,7 +553,7 @@ miSpriteBlockHandler(int i, pointer blockData, pointer pTimeout,
SCREEN_PROLOGUE(pPriv, pScreen, BlockHandler);
- (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
+ (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask);
if (WorkToDo)
SCREEN_EPILOGUE(pPriv, pScreen, BlockHandler);
diff --git a/xorg-server/miext/cw/Makefile.am b/xorg-server/miext/cw/Makefile.am
index e056f4279..cb6cea725 100644
--- a/xorg-server/miext/cw/Makefile.am
+++ b/xorg-server/miext/cw/Makefile.am
@@ -1,11 +1,11 @@
-noinst_LTLIBRARIES = libcw.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-INCLUDES = -I$(top_srcdir)/hw/xfree86/os-support
-
-libcw_la_SOURCES = \
- cw.c \
- cw_ops.c \
- cw_render.c \
- cw.h
+noinst_LTLIBRARIES = libcw.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+INCLUDES = -I$(top_srcdir)/hw/xfree86/os-support
+
+libcw_la_SOURCES = \
+ cw.c \
+ cw_ops.c \
+ cw_render.c \
+ cw.h
diff --git a/xorg-server/miext/cw/cw.c b/xorg-server/miext/cw/cw.c
index 87ced2f6a..7543affb0 100644
--- a/xorg-server/miext/cw/cw.c
+++ b/xorg-server/miext/cw/cw.c
@@ -51,7 +51,7 @@ DevPrivateKeyRec cwPictureKeyRec;
extern GCOps cwGCOps;
static Bool
- cwCloseScreen(int i, ScreenPtr pScreen);
+ cwCloseScreen(ScreenPtr pScreen);
static void
cwValidateGC(GCPtr pGC, unsigned long stateChanges, DrawablePtr pDrawable);
@@ -502,7 +502,7 @@ miInitializeCompositeWrapper(ScreenPtr pScreen)
}
static Bool
-cwCloseScreen(int i, ScreenPtr pScreen)
+cwCloseScreen(ScreenPtr pScreen)
{
cwScreenPtr pScreenPriv;
PictureScreenPtr ps = GetPictureScreenIfSet(pScreen);
@@ -520,5 +520,5 @@ cwCloseScreen(int i, ScreenPtr pScreen)
free((pointer) pScreenPriv);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
diff --git a/xorg-server/miext/damage/Makefile.am b/xorg-server/miext/damage/Makefile.am
index 9f858a8e5..767a65aee 100644
--- a/xorg-server/miext/damage/Makefile.am
+++ b/xorg-server/miext/damage/Makefile.am
@@ -1,14 +1,14 @@
-noinst_LTLIBRARIES = libdamage.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-INCLUDES = -I$(srcdir)/../cw
-
-if XORG
-sdk_HEADERS = damage.h damagestr.h
-endif
-
-libdamage_la_SOURCES = \
- damage.c \
- damage.h \
- damagestr.h
+noinst_LTLIBRARIES = libdamage.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+INCLUDES = -I$(srcdir)/../cw
+
+if XORG
+sdk_HEADERS = damage.h damagestr.h
+endif
+
+libdamage_la_SOURCES = \
+ damage.c \
+ damage.h \
+ damagestr.h
diff --git a/xorg-server/miext/damage/damage.c b/xorg-server/miext/damage/damage.c
index 780162a8d..8000517e8 100644
--- a/xorg-server/miext/damage/damage.c
+++ b/xorg-server/miext/damage/damage.c
@@ -1646,7 +1646,7 @@ damageDestroyWindow(WindowPtr pWindow)
}
static Bool
-damageCloseScreen(int i, ScreenPtr pScreen)
+damageCloseScreen(ScreenPtr pScreen)
{
damageScrPriv(pScreen);
@@ -1655,7 +1655,7 @@ damageCloseScreen(int i, ScreenPtr pScreen)
unwrap(pScrPriv, pScreen, CopyWindow);
unwrap(pScrPriv, pScreen, CloseScreen);
free(pScrPriv);
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
/**
diff --git a/xorg-server/miext/rootless/Makefile.am b/xorg-server/miext/rootless/Makefile.am
index 72d299bcc..c97bebebe 100644
--- a/xorg-server/miext/rootless/Makefile.am
+++ b/xorg-server/miext/rootless/Makefile.am
@@ -1,16 +1,16 @@
-AM_CFLAGS = $(DIX_CFLAGS) $(XSERVER_CFLAGS)
-
-noinst_LTLIBRARIES = librootless.la
-librootless_la_SOURCES = \
- rootlessCommon.c \
- rootlessGC.c \
- rootlessScreen.c \
- rootlessValTree.c \
- rootlessWindow.c
-
-EXTRA_DIST = \
- README.txt \
- rootless.h \
- rootlessCommon.h \
- rootlessConfig.h \
- rootlessWindow.h
+AM_CFLAGS = $(DIX_CFLAGS) $(XSERVER_CFLAGS)
+
+noinst_LTLIBRARIES = librootless.la
+librootless_la_SOURCES = \
+ rootlessCommon.c \
+ rootlessGC.c \
+ rootlessScreen.c \
+ rootlessValTree.c \
+ rootlessWindow.c
+
+EXTRA_DIST = \
+ README.txt \
+ rootless.h \
+ rootlessCommon.h \
+ rootlessConfig.h \
+ rootlessWindow.h
diff --git a/xorg-server/miext/rootless/rootlessScreen.c b/xorg-server/miext/rootless/rootlessScreen.c
index ecc72ea92..a1af3e7ac 100644
--- a/xorg-server/miext/rootless/rootlessScreen.c
+++ b/xorg-server/miext/rootless/rootlessScreen.c
@@ -138,7 +138,7 @@ RootlessCreateScreenResources(ScreenPtr pScreen)
}
static Bool
-RootlessCloseScreen(int i, ScreenPtr pScreen)
+RootlessCloseScreen(ScreenPtr pScreen)
{
RootlessScreenRec *s;
@@ -154,7 +154,7 @@ RootlessCloseScreen(int i, ScreenPtr pScreen)
}
free(s);
- return pScreen->CloseScreen(i, pScreen);
+ return pScreen->CloseScreen(pScreen);
}
static void
diff --git a/xorg-server/miext/shadow/Makefile.am b/xorg-server/miext/shadow/Makefile.am
index 59cee7f59..30f7bda96 100644
--- a/xorg-server/miext/shadow/Makefile.am
+++ b/xorg-server/miext/shadow/Makefile.am
@@ -1,32 +1,32 @@
-noinst_LTLIBRARIES = libshadow.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-if XORG
-sdk_HEADERS = shadow.h
-endif
-
-libshadow_la_SOURCES = \
- shadow.c \
- shadow.h \
- shalloc.c \
- shpacked.c \
- shplanar8.c \
- shplanar.c \
- shrot16pack_180.c \
- shrot16pack_270.c \
- shrot16pack_270YX.c \
- shrot16pack_90.c \
- shrot16pack_90YX.c \
- shrot16pack.c \
- shrot32pack_180.c \
- shrot32pack_270.c \
- shrot32pack_90.c \
- shrot32pack.c \
- shrot8pack_180.c \
- shrot8pack_270.c \
- shrot8pack_90.c \
- shrot8pack.c \
- shrotate.c \
- shrotpack.h \
- shrotpackYX.h
+noinst_LTLIBRARIES = libshadow.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+if XORG
+sdk_HEADERS = shadow.h
+endif
+
+libshadow_la_SOURCES = \
+ shadow.c \
+ shadow.h \
+ shalloc.c \
+ shpacked.c \
+ shplanar8.c \
+ shplanar.c \
+ shrot16pack_180.c \
+ shrot16pack_270.c \
+ shrot16pack_270YX.c \
+ shrot16pack_90.c \
+ shrot16pack_90YX.c \
+ shrot16pack.c \
+ shrot32pack_180.c \
+ shrot32pack_270.c \
+ shrot32pack_90.c \
+ shrot32pack.c \
+ shrot8pack_180.c \
+ shrot8pack_270.c \
+ shrot8pack_90.c \
+ shrot8pack.c \
+ shrotate.c \
+ shrotpack.h \
+ shrotpackYX.h
diff --git a/xorg-server/miext/shadow/shadow.c b/xorg-server/miext/shadow/shadow.c
index d2ba68497..2d869e54b 100644
--- a/xorg-server/miext/shadow/shadow.c
+++ b/xorg-server/miext/shadow/shadow.c
@@ -96,7 +96,7 @@ shadowGetImage(DrawablePtr pDrawable, int sx, int sy, int w, int h,
#define BACKWARDS_COMPATIBILITY
static Bool
-shadowCloseScreen(int i, ScreenPtr pScreen)
+shadowCloseScreen(ScreenPtr pScreen)
{
shadowBuf(pScreen);
@@ -110,7 +110,7 @@ shadowCloseScreen(int i, ScreenPtr pScreen)
if (pBuf->pPixmap)
pScreen->DestroyPixmap(pBuf->pPixmap);
free(pBuf);
- return pScreen->CloseScreen(i, pScreen);
+ return pScreen->CloseScreen(pScreen);
}
#ifdef BACKWARDS_COMPATIBILITY
diff --git a/xorg-server/miext/shadow/shrot16pack.c b/xorg-server/miext/shadow/shrot16pack.c
index 0b7faca6a..f7ebf1efa 100644
--- a/xorg-server/miext/shadow/shrot16pack.c
+++ b/xorg-server/miext/shadow/shrot16pack.c
@@ -1,30 +1,30 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate16
-#define Data CARD16
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate16
+#define Data CARD16
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot16pack_180.c b/xorg-server/miext/shadow/shrot16pack_180.c
index d8f2633e5..877bc174b 100644
--- a/xorg-server/miext/shadow/shrot16pack_180.c
+++ b/xorg-server/miext/shadow/shrot16pack_180.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate16_180
-#define Data CARD16
-#define ROTATE 180
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate16_180
+#define Data CARD16
+#define ROTATE 180
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot16pack_270.c b/xorg-server/miext/shadow/shrot16pack_270.c
index 4aa471325..de1de3850 100644
--- a/xorg-server/miext/shadow/shrot16pack_270.c
+++ b/xorg-server/miext/shadow/shrot16pack_270.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate16_270
-#define Data CARD16
-#define ROTATE 270
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate16_270
+#define Data CARD16
+#define ROTATE 270
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot16pack_270YX.c b/xorg-server/miext/shadow/shrot16pack_270YX.c
index 0df1fd51f..9d6f94c70 100644
--- a/xorg-server/miext/shadow/shrot16pack_270YX.c
+++ b/xorg-server/miext/shadow/shrot16pack_270YX.c
@@ -1,31 +1,31 @@
-/*
- * Copyright 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate16_270YX
-#define Data CARD16
-#define ROTATE 270
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpackYX.h"
+/*
+ * Copyright 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate16_270YX
+#define Data CARD16
+#define ROTATE 270
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpackYX.h"
diff --git a/xorg-server/miext/shadow/shrot16pack_90.c b/xorg-server/miext/shadow/shrot16pack_90.c
index 81e49151a..caabb0ea0 100644
--- a/xorg-server/miext/shadow/shrot16pack_90.c
+++ b/xorg-server/miext/shadow/shrot16pack_90.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate16_90
-#define Data CARD16
-#define ROTATE 90
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate16_90
+#define Data CARD16
+#define ROTATE 90
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot16pack_90YX.c b/xorg-server/miext/shadow/shrot16pack_90YX.c
index 5fc3b236a..8a4b3326e 100644
--- a/xorg-server/miext/shadow/shrot16pack_90YX.c
+++ b/xorg-server/miext/shadow/shrot16pack_90YX.c
@@ -1,31 +1,31 @@
-/*
- * Copyright 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate16_90YX
-#define Data CARD16
-#define ROTATE 90
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpackYX.h"
+/*
+ * Copyright 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate16_90YX
+#define Data CARD16
+#define ROTATE 90
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpackYX.h"
diff --git a/xorg-server/miext/shadow/shrot32pack.c b/xorg-server/miext/shadow/shrot32pack.c
index 4a9cbc0ff..e1b55f4d5 100644
--- a/xorg-server/miext/shadow/shrot32pack.c
+++ b/xorg-server/miext/shadow/shrot32pack.c
@@ -1,30 +1,30 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate32
-#define Data CARD32
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate32
+#define Data CARD32
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot32pack_180.c b/xorg-server/miext/shadow/shrot32pack_180.c
index 8f5fb5760..50bcae40d 100644
--- a/xorg-server/miext/shadow/shrot32pack_180.c
+++ b/xorg-server/miext/shadow/shrot32pack_180.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate32_180
-#define Data CARD32
-#define ROTATE 180
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate32_180
+#define Data CARD32
+#define ROTATE 180
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot32pack_270.c b/xorg-server/miext/shadow/shrot32pack_270.c
index 7d52fd2bf..28b93f3b8 100644
--- a/xorg-server/miext/shadow/shrot32pack_270.c
+++ b/xorg-server/miext/shadow/shrot32pack_270.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate32_270
-#define Data CARD32
-#define ROTATE 270
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate32_270
+#define Data CARD32
+#define ROTATE 270
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot32pack_90.c b/xorg-server/miext/shadow/shrot32pack_90.c
index 0abeb5cdd..5362f9b1d 100644
--- a/xorg-server/miext/shadow/shrot32pack_90.c
+++ b/xorg-server/miext/shadow/shrot32pack_90.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate32_90
-#define Data CARD32
-#define ROTATE 90
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate32_90
+#define Data CARD32
+#define ROTATE 90
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot8pack.c b/xorg-server/miext/shadow/shrot8pack.c
index 552d838f3..647775d06 100644
--- a/xorg-server/miext/shadow/shrot8pack.c
+++ b/xorg-server/miext/shadow/shrot8pack.c
@@ -1,30 +1,30 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate8
-#define Data CARD8
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate8
+#define Data CARD8
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot8pack_180.c b/xorg-server/miext/shadow/shrot8pack_180.c
index 526d8f15f..b681eac87 100644
--- a/xorg-server/miext/shadow/shrot8pack_180.c
+++ b/xorg-server/miext/shadow/shrot8pack_180.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate8_180
-#define Data CARD8
-#define ROTATE 180
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate8_180
+#define Data CARD8
+#define ROTATE 180
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot8pack_270.c b/xorg-server/miext/shadow/shrot8pack_270.c
index 73f82a712..0dae7a99b 100644
--- a/xorg-server/miext/shadow/shrot8pack_270.c
+++ b/xorg-server/miext/shadow/shrot8pack_270.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate8_270
-#define Data CARD8
-#define ROTATE 270
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate8_270
+#define Data CARD8
+#define ROTATE 270
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot8pack_90.c b/xorg-server/miext/shadow/shrot8pack_90.c
index 73060cad1..fb2c1d011 100644
--- a/xorg-server/miext/shadow/shrot8pack_90.c
+++ b/xorg-server/miext/shadow/shrot8pack_90.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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.
- */
-
-#define FUNC shadowUpdateRotate8_90
-#define Data CARD8
-#define ROTATE 90
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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.
+ */
+
+#define FUNC shadowUpdateRotate8_90
+#define Data CARD8
+#define ROTATE 90
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/sync/misync.c b/xorg-server/miext/sync/misync.c
index b1e2a36f7..d24921a18 100644
--- a/xorg-server/miext/sync/misync.c
+++ b/xorg-server/miext/sync/misync.c
@@ -163,13 +163,13 @@ miSyncGetScreenFuncs(ScreenPtr pScreen)
}
static Bool
-SyncCloseScreen(int i, ScreenPtr pScreen)
+SyncCloseScreen(ScreenPtr pScreen)
{
SyncScreenPrivPtr pScreenPriv = SYNC_SCREEN_PRIV(pScreen);
pScreen->CloseScreen = pScreenPriv->CloseScreen;
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
Bool
diff --git a/xorg-server/os/.gitignore b/xorg-server/os/.gitignore
new file mode 100644
index 000000000..bba633b88
--- /dev/null
+++ b/xorg-server/os/.gitignore
@@ -0,0 +1 @@
+os.O
diff --git a/xorg-server/randr/randr.c b/xorg-server/randr/randr.c
index 9f3df5fbe..a64aae366 100644
--- a/xorg-server/randr/randr.c
+++ b/xorg-server/randr/randr.c
@@ -83,7 +83,7 @@ RRClientCallback(CallbackListPtr *list, pointer closure, pointer data)
}
static Bool
-RRCloseScreen(int i, ScreenPtr pScreen)
+RRCloseScreen(ScreenPtr pScreen)
{
rrScrPriv(pScreen);
int j;
@@ -98,7 +98,7 @@ RRCloseScreen(int i, ScreenPtr pScreen)
free(pScrPriv->outputs);
free(pScrPriv);
RRNScreens -= 1; /* ok, one fewer screen with RandR running */
- return (*pScreen->CloseScreen) (i, pScreen);
+ return (*pScreen->CloseScreen) (pScreen);
}
static void
diff --git a/xorg-server/randr/randrstr.h b/xorg-server/randr/randrstr.h
index 1c0e9d4db..38fb10751 100644
--- a/xorg-server/randr/randrstr.h
+++ b/xorg-server/randr/randrstr.h
@@ -198,7 +198,7 @@ typedef Bool (*RRSetPanningProcPtr) (ScreenPtr pScrn,
#endif /* RANDR_13_INTERFACE */
typedef Bool (*RRGetInfoProcPtr) (ScreenPtr pScreen, Rotation * rotations);
-typedef Bool (*RRCloseScreenProcPtr) (int i, ScreenPtr pscreen);
+typedef Bool (*RRCloseScreenProcPtr) (ScreenPtr pscreen);
/* These are for 1.0 compatibility */
diff --git a/xorg-server/record/Makefile.am b/xorg-server/record/Makefile.am
index 2a64f3189..fe0f5b289 100644
--- a/xorg-server/record/Makefile.am
+++ b/xorg-server/record/Makefile.am
@@ -1,7 +1,7 @@
-noinst_LTLIBRARIES = librecord.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-librecord_la_SOURCES = record.c set.c
-
-EXTRA_DIST = set.h
+noinst_LTLIBRARIES = librecord.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+librecord_la_SOURCES = record.c set.c
+
+EXTRA_DIST = set.h
diff --git a/xorg-server/render/animcur.c b/xorg-server/render/animcur.c
index 485c068fe..ebc5b8ef7 100644
--- a/xorg-server/render/animcur.c
+++ b/xorg-server/render/animcur.c
@@ -89,7 +89,7 @@ static DevPrivateKeyRec AnimCurScreenPrivateKeyRec;
#define Unwrap(as,s,elt) ((s)->elt = (as)->elt)
static Bool
-AnimCurCloseScreen(int index, ScreenPtr pScreen)
+AnimCurCloseScreen(ScreenPtr pScreen)
{
AnimCurScreenPtr as = GetAnimCurScreen(pScreen);
Bool ret;
@@ -103,7 +103,7 @@ AnimCurCloseScreen(int index, ScreenPtr pScreen)
Unwrap(as, pScreen, UnrealizeCursor);
Unwrap(as, pScreen, RecolorCursor);
SetAnimCurScreen(pScreen, 0);
- ret = (*pScreen->CloseScreen) (index, pScreen);
+ ret = (*pScreen->CloseScreen) (pScreen);
free(as);
return ret;
}
@@ -135,11 +135,9 @@ AnimCurCursorLimits(DeviceIntPtr pDev,
*/
static void
-AnimCurScreenBlockHandler(int screenNum,
- pointer blockData,
+AnimCurScreenBlockHandler(ScreenPtr pScreen,
pointer pTimeout, pointer pReadmask)
{
- ScreenPtr pScreen = screenInfo.screens[screenNum];
AnimCurScreenPtr as = GetAnimCurScreen(pScreen);
DeviceIntPtr dev;
Bool activeDevice = FALSE;
@@ -183,7 +181,7 @@ AnimCurScreenBlockHandler(int screenNum,
AdjustWaitForDelay(pTimeout, soonest - now);
Unwrap(as, pScreen, BlockHandler);
- (*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
+ (*pScreen->BlockHandler) (pScreen, pTimeout, pReadmask);
if (activeDevice)
Wrap(as, pScreen, BlockHandler, AnimCurScreenBlockHandler);
else
diff --git a/xorg-server/render/picture.c b/xorg-server/render/picture.c
index da3e49936..788785354 100644
--- a/xorg-server/render/picture.c
+++ b/xorg-server/render/picture.c
@@ -72,14 +72,14 @@ PictureDestroyWindow(WindowPtr pWindow)
}
Bool
-PictureCloseScreen(int index, ScreenPtr pScreen)
+PictureCloseScreen(ScreenPtr pScreen)
{
PictureScreenPtr ps = GetPictureScreen(pScreen);
Bool ret;
int n;
pScreen->CloseScreen = ps->CloseScreen;
- ret = (*pScreen->CloseScreen) (index, pScreen);
+ ret = (*pScreen->CloseScreen) (pScreen);
PictureResetFilters(pScreen);
for (n = 0; n < ps->nformats; n++)
if (ps->formats[n].type == PictTypeIndexed)
diff --git a/xorg-server/render/picturestr.h b/xorg-server/render/picturestr.h
index cd4ec498c..6da56563d 100644
--- a/xorg-server/render/picturestr.h
+++ b/xorg-server/render/picturestr.h
@@ -381,7 +381,7 @@ extern _X_EXPORT Bool
PictureDestroyWindow(WindowPtr pWindow);
extern _X_EXPORT Bool
- PictureCloseScreen(int Index, ScreenPtr pScreen);
+ PictureCloseScreen(ScreenPtr pScreen);
extern _X_EXPORT void
PictureStoreColors(ColormapPtr pColormap, int ndef, xColorItem * pdef);
diff --git a/xorg-server/test/.gitignore b/xorg-server/test/.gitignore
new file mode 100644
index 000000000..5d4fdfa99
--- /dev/null
+++ b/xorg-server/test/.gitignore
@@ -0,0 +1,9 @@
+fixes
+input
+list
+misc
+string
+touch
+xfree86
+xkb
+xtest
diff --git a/xorg-server/test/README b/xorg-server/test/README
index 5759a72fd..a028fe208 100644
--- a/xorg-server/test/README
+++ b/xorg-server/test/README
@@ -1,36 +1,36 @@
- X server test suite
-
-This suite contains a set of tests to verify the behaviour of functions used
-internally to the server. This test suite is based on glib's testing
-framework [1].
-
-= How it works =
-Through some automake abuse, we link the test programs with the same static
-libraries as the Xorg binary. The test suites can then call various functions
-and verify their behaviour - without the need to start the server or connect
-clients.
-
-This testing only works for functions that do not rely on a particular state
-of the X server. Unless the test suite replicates the expected state, which
-may be difficult.
-
-= How to run the tests =
-Run "make check" the test directory. This will compile the tests and execute
-them in the order specified in the TESTS variable in test/Makefile.am.
-
-Each set of tests related to a subsystem are available as a binary that can be
-executed directly. For example, run "xkb" to perform some xkb-related tests.
-
-== Adding a new test ==
-When adding a new test, ensure that you add a short description of what the
-test does and what the expected outcome is. If the test reproduces a
-particular bug, using g_test_bug().
-
-== Misc ==
-
-The programs "gtester" and "gtester-report" may be used to generate XML/HTML
-log files of tests succeeded and failed.
-
----------
-
-[1] http://library.gnome.org/devel/glib/stable/glib-Testing.html
+ X server test suite
+
+This suite contains a set of tests to verify the behaviour of functions used
+internally to the server. This test suite is based on glib's testing
+framework [1].
+
+= How it works =
+Through some automake abuse, we link the test programs with the same static
+libraries as the Xorg binary. The test suites can then call various functions
+and verify their behaviour - without the need to start the server or connect
+clients.
+
+This testing only works for functions that do not rely on a particular state
+of the X server. Unless the test suite replicates the expected state, which
+may be difficult.
+
+= How to run the tests =
+Run "make check" the test directory. This will compile the tests and execute
+them in the order specified in the TESTS variable in test/Makefile.am.
+
+Each set of tests related to a subsystem are available as a binary that can be
+executed directly. For example, run "xkb" to perform some xkb-related tests.
+
+== Adding a new test ==
+When adding a new test, ensure that you add a short description of what the
+test does and what the expected outcome is. If the test reproduces a
+particular bug, using g_test_bug().
+
+== Misc ==
+
+The programs "gtester" and "gtester-report" may be used to generate XML/HTML
+log files of tests succeeded and failed.
+
+---------
+
+[1] http://library.gnome.org/devel/glib/stable/glib-Testing.html
diff --git a/xorg-server/test/xi2/.gitignore b/xorg-server/test/xi2/.gitignore
new file mode 100644
index 000000000..817aa7b6b
--- /dev/null
+++ b/xorg-server/test/xi2/.gitignore
@@ -0,0 +1,11 @@
+protocol-eventconvert
+protocol-xigetclientpointer
+protocol-xigetselectedevents
+protocol-xipassivegrabdevice
+protocol-xiquerydevice
+protocol-xiquerypointer
+protocol-xiqueryversion
+protocol-xiselectevents
+protocol-xisetclientpointer
+protocol-xiwarppointer
+xi2
diff --git a/xorg-server/xfixes/Makefile.am b/xorg-server/xfixes/Makefile.am
index a8425e8ea..7f4d4d285 100644
--- a/xorg-server/xfixes/Makefile.am
+++ b/xorg-server/xfixes/Makefile.am
@@ -1,16 +1,16 @@
-noinst_LTLIBRARIES = libxfixes.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-if XORG
-sdk_HEADERS = xfixes.h
-endif
-
-libxfixes_la_SOURCES = \
- cursor.c \
- region.c \
- saveset.c \
- select.c \
- xfixes.c \
- xfixes.h \
- xfixesint.h
+noinst_LTLIBRARIES = libxfixes.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+if XORG
+sdk_HEADERS = xfixes.h
+endif
+
+libxfixes_la_SOURCES = \
+ cursor.c \
+ region.c \
+ saveset.c \
+ select.c \
+ xfixes.c \
+ xfixes.h \
+ xfixesint.h
diff --git a/xorg-server/xfixes/cursor.c b/xorg-server/xfixes/cursor.c
index 1f1b0c209..648271ec8 100644
--- a/xorg-server/xfixes/cursor.c
+++ b/xorg-server/xfixes/cursor.c
@@ -192,7 +192,7 @@ CursorDisplayCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)
}
static Bool
-CursorCloseScreen(int index, ScreenPtr pScreen)
+CursorCloseScreen(ScreenPtr pScreen)
{
CursorScreenPtr cs = GetCursorScreen(pScreen);
Bool ret;
@@ -204,7 +204,7 @@ CursorCloseScreen(int index, ScreenPtr pScreen)
Unwrap(cs, pScreen, DisplayCursor, display_proc);
Unwrap(cs, pScreen, ConstrainCursorHarder, constrain_proc);
deleteCursorHideCountsForScreen(pScreen);
- ret = (*pScreen->CloseScreen) (index, pScreen);
+ ret = (*pScreen->CloseScreen) (pScreen);
free(cs);
return ret;
}
diff --git a/xorg-server/xkb/Makefile.am b/xorg-server/xkb/Makefile.am
index fb3ccbf6f..b05693288 100644
--- a/xorg-server/xkb/Makefile.am
+++ b/xorg-server/xkb/Makefile.am
@@ -1,43 +1,43 @@
-noinst_LTLIBRARIES = libxkb.la libxkbstubs.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-DDX_SRCS = \
- ddxBeep.c \
- ddxCtrls.c \
- ddxLEDs.c \
- ddxLoad.c \
- ddxList.c
-
-DIX_SRCS = \
- xkb.c \
- xkbUtils.c \
- xkbEvents.c \
- xkbAccessX.c \
- xkbSwap.c \
- xkbLEDs.c \
- xkbInit.c \
- xkbActions.c \
- xkbPrKeyEv.c
-
-# this should be replaced by a common library or something, ideally -d
-XKBFILE_SRCS = \
- maprules.c \
- xkmread.c \
- xkbtext.c \
- xkbfmisc.c \
- xkbout.c
-
-X11_SRCS = \
- XKBMisc.c \
- XKBAlloc.c \
- XKBGAlloc.c \
- XKBMAlloc.c
-
-libxkb_la_SOURCES = $(DDX_SRCS) $(DIX_SRCS) $(XKBFILE_SRCS) $(X11_SRCS)
-libxkbstubs_la_SOURCES = ddxVT.c ddxPrivate.c ddxKillSrv.c
-
-EXTRA_DIST = xkbDflts.h xkbgeom.h xkb.h
-
-xkbcompileddir = $(XKB_COMPILED_DIR)
-dist_xkbcompiled_DATA = README.compiled
+noinst_LTLIBRARIES = libxkb.la libxkbstubs.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+DDX_SRCS = \
+ ddxBeep.c \
+ ddxCtrls.c \
+ ddxLEDs.c \
+ ddxLoad.c \
+ ddxList.c
+
+DIX_SRCS = \
+ xkb.c \
+ xkbUtils.c \
+ xkbEvents.c \
+ xkbAccessX.c \
+ xkbSwap.c \
+ xkbLEDs.c \
+ xkbInit.c \
+ xkbActions.c \
+ xkbPrKeyEv.c
+
+# this should be replaced by a common library or something, ideally -d
+XKBFILE_SRCS = \
+ maprules.c \
+ xkmread.c \
+ xkbtext.c \
+ xkbfmisc.c \
+ xkbout.c
+
+X11_SRCS = \
+ XKBMisc.c \
+ XKBAlloc.c \
+ XKBGAlloc.c \
+ XKBMAlloc.c
+
+libxkb_la_SOURCES = $(DDX_SRCS) $(DIX_SRCS) $(XKBFILE_SRCS) $(X11_SRCS)
+libxkbstubs_la_SOURCES = ddxVT.c ddxPrivate.c ddxKillSrv.c
+
+EXTRA_DIST = xkbDflts.h xkbgeom.h xkb.h
+
+xkbcompileddir = $(XKB_COMPILED_DIR)
+dist_xkbcompiled_DATA = README.compiled
diff --git a/xorg-server/xkb/README.compiled b/xorg-server/xkb/README.compiled
index 71caa2f63..66df26234 100644
--- a/xorg-server/xkb/README.compiled
+++ b/xorg-server/xkb/README.compiled
@@ -1,13 +1,13 @@
-
-The X server uses this directory to store the compiled version of the
-current keymap and/or any scratch keymaps used by clients. The X server
-or some other tool might destroy or replace the files in this directory,
-so it is not a safe place to store compiled keymaps for long periods of
-time. The default keymap for any server is usually stored in:
- X<num>-default.xkm
-where <num> is the display number of the server in question, which makes
-it possible for several servers *on the same host* to share the same
-directory.
-
-Unless the X server is modified, sharing this directory between servers on
-different hosts could cause problems.
+
+The X server uses this directory to store the compiled version of the
+current keymap and/or any scratch keymaps used by clients. The X server
+or some other tool might destroy or replace the files in this directory,
+so it is not a safe place to store compiled keymaps for long periods of
+time. The default keymap for any server is usually stored in:
+ X<num>-default.xkm
+where <num> is the display number of the server in question, which makes
+it possible for several servers *on the same host* to share the same
+directory.
+
+Unless the X server is modified, sharing this directory between servers on
+different hosts could cause problems.
diff --git a/xorg-server/xkb/XKM_file_format.txt b/xorg-server/xkb/XKM_file_format.txt
index 0ba28ee8c..865973dc1 100644
--- a/xorg-server/xkb/XKM_file_format.txt
+++ b/xorg-server/xkb/XKM_file_format.txt
@@ -1,684 +1,684 @@
- XKM File Format Description
- Version 15
-
-1. Introduction
-
-The XKM file format is the exchange format for XKB keyboard descriptions
-between the server and xkbcomp. Usually, the server forks off xkbcomp,
-xkbcomp compiles the XKM format from the given parameters.
-The resulting XKM file is put into a directory readable by the server and
-then parsed.
-
-The XKM format is little more than a binary dump of various XKB-specific
-structures and hence tied to the ABI of the server.
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-1.1 About this file format description
-
-This description was produced by analyzing the XKM parsing code. Parts of
-the file description present in the original format specification may be
-missing. This description thus cannot be a reference document for XKM
-implementations.
-
-No description of the meaning of the various fields is given here. Refer to
-the XKB protocol specification for more details.
- â§â§â§â§â§â§â§â§â§â§â§
-
-2. Notations used in this document
-
-Notation for structures:
-
-┌───
- Name of struct
- name of field: type or fixed value of field
- name of field: type or fixed value of field
-└───
-
-Data types are identical to those used in the X Protocol specification
-except where noted otherwise. Structs specific to XKM are prefixed with XKM,
-defines specific to the XKB protocol specification are prefixed with Xkb and
-their value is equivalent to that in the protocol specification.
-
-Multiple instances of a given type are denoted in the following form:
- name of field: LISTofFIELDTYPE
-
-Length specifiers for such fields are usually prefixed with num_. For
-example, a struct containing a num_foo of 8 and a 'foo' field contains 8
-structures of type 'foo'.
-
-Variable length padding is specified as pad(x), where x is the length of the
-data to be padded out to a multiple of 4 bytes. For example, given an x of
-10, pad(x) would be the remaining 2 bytes to pad the whole struct to 12
-bytes.
-
-A special notation is a variable content struct. In this case, the contents
-of the struct depend on the value of one or more specific fields.
-┌───
- Name of struct
- field: type or fixed value of field
- field: type or fixed value of field
- ───
- field ⇒ value 1
- ⇒
- specific field: type
- specific field: type
- ───
- field ⇒ value 2
- ⇒
- specific field: type
- specific field: type
-└───
-This notation denotes that if field is of value 1, this struct contains the
-specific fields listed underneath value 1.
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3. XKM Format
-
-The XKM format is a binary format with structs usually being padded to a
-multiple of 4 bytes. No provisions for endianess are provided, the parser is
-left to guess the endianess of the XKM file.
-
- â§â§â§â§â§â§â§â§â§â§â§
-3.1 Common data types
-
-┌───
- XKMCountedString
- count: CARD16
- string: count * CHAR
- pad: pad(count + 2)
-└───
-
-XKMCountedString is used for user-readable identifiers. Prime example are
-the level names and the section names ("complete", "evdev(inet)", etc.)
-
-┌───
- XKMGroupBits: CARD8
- group1 0x1
- group2 0x2
- group3 0x4
- group4 0x8
-└───
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.2 Header and Table of Contents
-
-┌───
- XKMHeader
- version: CARD8
- identifier1: 'm'
- identifier2: 'k'
- idenfifier3: 'x'
-└───
-
-The XKM file format has a 4 byte header identifying the file and the XKM
-version. The header is followed by the table of contents indicating the
-sections present in this file.
-
-┌───
- XKMFileInfo
- type: CARD8
- min_keycode: CARD8
- max_keycode: CARD8
- num_sectioninfo: CARD8
- present: CARD16
- pad: CARD16
- sectioninfo: LISTofXKMSectionInfo
-└───
-
-min_keycode and max_keycode specify the keycode range for this keyboard
-descriptions. The core protocol requires min_keycode always be equal to or
-greater than 8.
-
-┌───
- XKMSectionInfo
- type: CARD16
- XkmTypesIndex 0
- XkmCompatMapIndex 1
- XkmSymbolsIndex 2
- XkmIndicatorsIndex 3
- XkmKeyNamesIndex 4
- XkmGeometryIndex 5
- XkmVirtualModsIndex 6
- format: CARD16
- size: CARD16
- offset: CARD16
-└───
-
-Describes the section found in a chunk of a file. This struct is found
-_twice_ in the file per section, once as part of the XKMFileInfo, once at
-the beginning of the actual section (see offset).
-The type specifies the type of the section, the section is to be parsed
-according to this type.
-Size and offset specify the size in bytes and the offset into the file in
-bytes, respectively.
-
-3.3 Sections
-
-Each section resides at the offset specified in the XKMFileInfo sectioninfo.
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.3.1 XKMTypes
-
-An XKMTypes section describes the key types defined in a layout. Roughly
-speaking, a key type defines how many levels a given key has and which
-modifiers change to a particular level.
-
-┌───
- XKMTypesSection
- section_info: XKMSectionInfo
- name: XKMCountedString
- num_types: CARD16
- pad: CARD16
- types: LISTofXKMKeyType
-└───
-
-┌───
- XKMKeyType
- real_mods: CARD8
- num_levels: CARD8
- virt_mods: CARD16
- num_map_entries: CARD8
- num_level_names: CARD8
- perserve: CARD8
- pad: CARD8
- map_entries: LISTofXKMKTMapEntry
- name: XKMCountedString
- mods: LISTofXKMModsDesc
- level_names: LISXTofXKMCountedString
-└───
-
-The num_map_entries specifies the number of structs in both map_entries and mods. mods is only present if preserve is TRUE.
-
-┌───
- XKMKTMapEntry
- level: CARD8
- real_mods: CARD8
- virt_mods: CARD16
-└───
-
-┌───
- XKMModsDesc
- real_mods: CARD8
- pad: CARD8
- virt_mods: CARD16
-└───
-
- â§â§â§â§â§â§â§â§â§â§â§
-3.3.2 XKMCompatMap
-
-An XKMCompatMap section describes the actions a keyboard may trigger. This
-ranges from the TerminateServer action to simple modifier bits.
-
-┌───
- XKMCompatMap
- section_info: XKMSectionInfo
- name: XKMCountedString
- num_si: CARD16
- group_mask: XKMGroupBits
- pad: CARD8
- si: LISTofXKMSymInterpreterDesc
- groups: LISTofXKMModsDesc
-└───
-
-One XKMModsDesc is present for each bit set in group_mask.
-
-┌───
- XKMSymInterpretDesc
- sym: CARD32
- mods: CARD8
- match: CARD8
- virtual_mod: CARD8
- flags: CARD8
- action_type: CARD8
- action_data: XKMActionData
-└───
-
-Where the action is 7 bytes of CARD8 whose content is determined by
-action_type.
-
-┌───
- XKMActionData:
- pad0: CARD8
- pad1: CARD16
- pad2: CARD32
- ───
- action_type ⇒ XkbSA_SetMods ||
- action_type ⇒ XkbSA_LatchMods ||
- action_type ⇒ XkbSA_LockMods
- ⇒
- flags: CARD8
- mask: CARD8
- real_mods: CARD8
- vmods1: CARD8
- vmods2: CARD8
- pad: CARD16
- ───
- action_type ⇒ XkbSA_SetGroup ||
- action_type ⇒ XkbSA_LatchGroup ||
- action_type ⇒ XkbSA_LockGroup
- ⇒
- flags: CARD8
- group_XXX: CARD8
- pad0: CARD8
- pad1: CARD32
- ───
- action_type ⇒ XkbSA_MovePtr
- ⇒
- flags: CARD8
- high_XXX: CARD8
- low_XXX: CARD8
- high_YYY: CARD8
- low_YYY: CARD8
- pad: CARD16
- ───
- action_type ⇒ XkbSA_PtrBtn ||
- action_type ⇒ XkbSA_LockPtrBtn
- ⇒
- flags: CARD8
- count: CARD8
- button: CARD8
- pad: CARD32
- ───
- action_type ⇒ XkbSA_DeviceBtn ||
- action_type ⇒ XkbSA_LockLockPtrBtn
- ⇒
- flags: CARD8
- count: CARD8
- button: CARD8
- device: CARD8
- pad0: CARD8
- pad1: CARD16
- ───
- action_type ⇒ XkbSA_SetPtrDflt
- ⇒
- flags: CARD8
- affect: CARD8
- valueXXX: CARD8
- pad0: CARD32
- ───
- action_type ⇒ XkbSA_ISOLock
- ⇒
- flags: CARD8
- mask: CARD8
- real_mods: CARD8
- group_XXX: CARD8
- affect: CARD8
- vmods1: CARD8
- vmods1: CARD8
- ───
- action_type ⇒ XkbSA_SwitchScreen
- ⇒
- flags: CARD8
- screenXXX: CARD8
- pad0: CARD8
- pad1: CARD32
- ───
- action_type ⇒ XkbSA_SetControls ||
- action_type ⇒ XkbSA_LockControls
- ⇒
- flags: CARD8
- ctrls3: CARD8
- ctrls2: CARD8
- ctrls1: CARD8
- ctrls0: CARD8
- pad: CARD16
- ───
- action_type ⇒ XkbSA_RedirectKey
- ⇒
- new_key: CARD8
- mods_mask: CARD8
- mods: CARD8
- vmods_mask0: CARD8
- vmods_mask1: CARD8
- vmods0: CARD8
- vmods1: CARD8
- ───
- action_type ⇒ XkbSA_DeviceValuator
- ⇒
- device: CARD8
- v1_what: CARD8
- v1_idx: CARD8
- v1_value: CARD8
- v2_what: CARD8
- v2_idx: CARD8
- v2_value: CARD8
- pad: CARD8
- ───
- action_type ⇒ XkbSA_XFree86Private ||
- action_type ⇒ XkbSA_Terminate
- ⇒
- pad0: CARD8
- pad1: CARD16
- pad2: CARD32
- ───
- action_type ⇒ XkbSA_ActionMessage
- ⇒
- press_msg: BOOL
- release_msg: BOOL
- gen_event: BOOL
- message: 4 * CHAR
-└───
-
-Note: XkbSA_ActionMessage is currently unsupported and the contents are
-ignored.
-
- â§â§â§â§â§â§â§â§â§â§â§
-3.3.3 XkmSymbols
-
-The symbols in a keymap define the actual keysyms each key may produce.
-
-┌───
- XKMSymbols
- section_info: XKMSectionInfo
- name: XKMCountedString
- min_keycode: CARD8
- max_keycode: CARD8
- group_names_mask: XKMGroupBits
- num_vmod_maps: CARD8
- group_names: LISTofXKMCountedString
- keysyms: XKMKeysymMapDesc
- vmod_maps: XKMVModMapDesc
-└───
-One group_name is present for each bit set in group_names_mask.
-The number of keysyms present is max_keycode - min_keycode + 1.
-
-┌───
- XKMKeysymMapDesc
- width: CARD8
- num_groups: CARD8
- modifier_map: CARD8
- flags: CARD8
- names: LISTofXKMCountedString
- syms: LISTofCARD32
- behavior: XKMBehaviorDesc
-└───
-
-Presence of names is conditional on the XkmKeyHasTypes flag. The number of
-strings is equal to the number of group bits in group_names_mask in the
-preceeding XKMSymbols section.
-The number of elements in syms is equal to width * num_groups.
-Presence of behavior is conditional on the XkmKeyHasBehavior flag.
-
-┌───
- XKMKeyBehaviorDesc
- type: CARD8
- data: CARD8
- pad: CARD16
-└───
-
-┌───
- XKMVModMapDesc
- key: CARD8
- pad: CARD8
- vmods: CARD16
-└───
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.3.4 XKMIndicators
-
-┌───
- XKMIndicators
- section_info: XKMSectionInfo
- name: XKMCountedString
- num_indicators: CARD8
- pad0: CARD8
- pad1: CARD16
- indicators: LISTofXKMIndicatorMapDesc
-└───
-
-┌───
- XKMIndicatorMapDesc
- name: XKMCountedString
- indicator: CARD8
- flags: CARD8
- which_mods: CARD8
- real_mods: CARD8
- vmods: CARD16
- which_groups: CARD8
- groups: CARD8
- ctrls: CARD32
-└───
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.3.5 XKMKeyNames
-
-┌───
- XKMKeyNames
- section_info: XKMSectionInfo
- name: XKMCountedString
- min_keycode: CARD8
- max_keycode: CARD8
- num_aliases: CARD8
- pad: CARD8
- keynames: LISTofXKMKeyname
- aliases: LISTofXKMKeyAlias
-└───
-
-keynames contains max_keycode - min_keycode + 1 entries.
-
-┌───
- XkmKeyname
- name: 4 * CHAR8
-└───
-
-┌───
- XkmKeyAlias
- real: XkmKeyname
- alias: XkmKeyname
-└───
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.3.5 XKMGeometry
-
-┌───
- XKMGeometry
- section_info: XKMSectionInfo
- name: XKMCountedString
- width_mm: CARD16
- height_mm: CARD16
- base_color_ndx: CARD8
- label_color_ndx: CARD8
- num_properties: CARD16
- num_colors: CARD16
- num_shapes: CARD16
- num_sections: CARD16
- num_doodads: CARD16
- num_key_aliases: CARD16
- pad: CARD16
- label_font: XKMCountedString
- properties: LISTofXKMGeomProperty
- colors: LISTofXKMCountedString
- shapes: LISTofXKMGeomShape
- sections: LISTofXKMGeomSection
- doodads: LISTofXKMGeomDoodad
- key_aliases: LISTofXKMKeyAlias
-└───
-
-┌───
- XKMGeomProperty
- name: XKMCountedString
- value: XKMCountedString
-
-└───
-
-┌───
- XKMGeomShape
- name: XKMCountedString
- num_outlines: CARD8
- primary_idx: CARD8
- approx_idx: CARD8
- pad: CARD8
- outlines: LISTofXKMOutlineDesc
-└───
-
-┌───
- XKMOutlineDesc
- num_points: CARD8
- corner_radius: CARD8
- pad: CARD16
- points: LISTofXKMPointDesc
-└───
-
-┌───
- XKMPointDesc
- x: INT16
- y: INT16
-└───
-
-┌───
- XKMGeomSection
- name: XKMCountedString
- top: INT16
- left: INT16
- width: CARD16
- height: CARD16
- angle: INT16
- priority: CARD8
- num_rows: CARD8
- num_doodads: CARD8
- num_overlays: CARD8
- pad: CARD16
- rows: LISTofXKMRowDesc
- doodads: LISTofXKMGeomDoodad
- overlays: LISTofXKMGeomOverlay
-└───
-
-┌───
- XKMRowDesc
- top: INT16
- left: INT16
- num_keys: CARD8
- vertical: BOOL
- pad: CARD16
- keys: XKMKeyDesc
-└───
-
-┌───
- XKMKeyDesc
- name: XKMKeyname
- gap: INT16
- shape_idx: CARD8
- color_idx: CARD8
-└───
-
-┌───
- XKMGeomDoodad
- name: XKMCountedString
- type: CARD8
- priority: CARD8
- top: INT16
- left: INT16
- pad1: CARD16
- pad2: CARD32
- pad3: CARD32
- ───
- type ⇒ XkbOutlineDoodad ||
- type ⇒ XkbSolideDoodad
- ⇒
- type: CARD8
- priority: CARD8
- top: INT16
- left: INT16
- angle: INT16
- color_idx: CARD8
- shape_idx: CARD8
- pad0: CARD16
- pad1: CARD32
- ───
- type ⇒ XkbTextDoodad
- ⇒
- type: CARD8
- priority: CARD8
- top: INT16
- left: INT16
- angle: INT16
- width: CARD16
- height: CARD16
- color_idx: CARD8
- pad0: CARD8
- pad1: CARD16
- text: XKMCountedString
- font: XKMCountedString
- ───
- type ⇒ XkbIndicatorDoodad
- ⇒
- type: CARD8
- priority: CARD8
- top: INT16
- left: INT16
- shape_idx: CARD8
- on_color_idx: CARD8
- off_color_idx: CARD8
- pad0: CARD8
- pad1: CARD16
- pad2: CARD32
- ───
- type ⇒ XkbLogoDoodad
- ⇒
- type: CARD8
- priority: CARD8
- top: INT16
- left: INT16
- angle: INT16
- color_idx: CARD8
- shape_idx: CARD8
- pad0: CARD16
- pad1: CARD32
- logo_name: XKMCountedString
-└───
-
-WARNING: XKMGeomDoodad has variable length depending on the type.
-NOTE: The current server implementation does not use all fields of all
-structures.
-
-┌───
- XKMOverlayDesc
- name: XKMCountedString
- num_rows: CARD8
- pad0: CARD8
- pad1: CARD16
- rows: LISTofXKMOverlayRowDesc
-└───
-
-┌───
- XKMOverlayRowDesc
- name: XKMCountedString
- row_under: CARD8
- num_keys: CARD8
- pad: CARD16
- keys: LISTofXKMOverlayKeyDesc
-└───
-
-┌───
- XKMOverlayKeyDesc
- over: XKMKeyname
- under: XKMKeyname
-└───
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.3.6 XKMVirtualMods
-
-┌───
- XKMOverlayRowDesc
- section_info: XKMSectionInfo
- name: XKMCountedString
- bound_mask: SETofVMODBITS
- named_mask: SETofVMODBITS
- vmods: LISTofCARD8
- pad: pad(vmods)
- names: LISTofXKMCountedString
-└───
-
- VMODBITS: CARD16
-
-Number of elements in vmods is equal to the number of bits set in
-bound_mask. The padding completes vmods to a multiple of 4 byte units.
-Number of elements in names is equal to the number of bits set in
-named_mask.
+ XKM File Format Description
+ Version 15
+
+1. Introduction
+
+The XKM file format is the exchange format for XKB keyboard descriptions
+between the server and xkbcomp. Usually, the server forks off xkbcomp,
+xkbcomp compiles the XKM format from the given parameters.
+The resulting XKM file is put into a directory readable by the server and
+then parsed.
+
+The XKM format is little more than a binary dump of various XKB-specific
+structures and hence tied to the ABI of the server.
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+1.1 About this file format description
+
+This description was produced by analyzing the XKM parsing code. Parts of
+the file description present in the original format specification may be
+missing. This description thus cannot be a reference document for XKM
+implementations.
+
+No description of the meaning of the various fields is given here. Refer to
+the XKB protocol specification for more details.
+ â§â§â§â§â§â§â§â§â§â§â§
+
+2. Notations used in this document
+
+Notation for structures:
+
+┌───
+ Name of struct
+ name of field: type or fixed value of field
+ name of field: type or fixed value of field
+└───
+
+Data types are identical to those used in the X Protocol specification
+except where noted otherwise. Structs specific to XKM are prefixed with XKM,
+defines specific to the XKB protocol specification are prefixed with Xkb and
+their value is equivalent to that in the protocol specification.
+
+Multiple instances of a given type are denoted in the following form:
+ name of field: LISTofFIELDTYPE
+
+Length specifiers for such fields are usually prefixed with num_. For
+example, a struct containing a num_foo of 8 and a 'foo' field contains 8
+structures of type 'foo'.
+
+Variable length padding is specified as pad(x), where x is the length of the
+data to be padded out to a multiple of 4 bytes. For example, given an x of
+10, pad(x) would be the remaining 2 bytes to pad the whole struct to 12
+bytes.
+
+A special notation is a variable content struct. In this case, the contents
+of the struct depend on the value of one or more specific fields.
+┌───
+ Name of struct
+ field: type or fixed value of field
+ field: type or fixed value of field
+ ───
+ field ⇒ value 1
+ ⇒
+ specific field: type
+ specific field: type
+ ───
+ field ⇒ value 2
+ ⇒
+ specific field: type
+ specific field: type
+└───
+This notation denotes that if field is of value 1, this struct contains the
+specific fields listed underneath value 1.
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3. XKM Format
+
+The XKM format is a binary format with structs usually being padded to a
+multiple of 4 bytes. No provisions for endianess are provided, the parser is
+left to guess the endianess of the XKM file.
+
+ â§â§â§â§â§â§â§â§â§â§â§
+3.1 Common data types
+
+┌───
+ XKMCountedString
+ count: CARD16
+ string: count * CHAR
+ pad: pad(count + 2)
+└───
+
+XKMCountedString is used for user-readable identifiers. Prime example are
+the level names and the section names ("complete", "evdev(inet)", etc.)
+
+┌───
+ XKMGroupBits: CARD8
+ group1 0x1
+ group2 0x2
+ group3 0x4
+ group4 0x8
+└───
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.2 Header and Table of Contents
+
+┌───
+ XKMHeader
+ version: CARD8
+ identifier1: 'm'
+ identifier2: 'k'
+ idenfifier3: 'x'
+└───
+
+The XKM file format has a 4 byte header identifying the file and the XKM
+version. The header is followed by the table of contents indicating the
+sections present in this file.
+
+┌───
+ XKMFileInfo
+ type: CARD8
+ min_keycode: CARD8
+ max_keycode: CARD8
+ num_sectioninfo: CARD8
+ present: CARD16
+ pad: CARD16
+ sectioninfo: LISTofXKMSectionInfo
+└───
+
+min_keycode and max_keycode specify the keycode range for this keyboard
+descriptions. The core protocol requires min_keycode always be equal to or
+greater than 8.
+
+┌───
+ XKMSectionInfo
+ type: CARD16
+ XkmTypesIndex 0
+ XkmCompatMapIndex 1
+ XkmSymbolsIndex 2
+ XkmIndicatorsIndex 3
+ XkmKeyNamesIndex 4
+ XkmGeometryIndex 5
+ XkmVirtualModsIndex 6
+ format: CARD16
+ size: CARD16
+ offset: CARD16
+└───
+
+Describes the section found in a chunk of a file. This struct is found
+_twice_ in the file per section, once as part of the XKMFileInfo, once at
+the beginning of the actual section (see offset).
+The type specifies the type of the section, the section is to be parsed
+according to this type.
+Size and offset specify the size in bytes and the offset into the file in
+bytes, respectively.
+
+3.3 Sections
+
+Each section resides at the offset specified in the XKMFileInfo sectioninfo.
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.3.1 XKMTypes
+
+An XKMTypes section describes the key types defined in a layout. Roughly
+speaking, a key type defines how many levels a given key has and which
+modifiers change to a particular level.
+
+┌───
+ XKMTypesSection
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ num_types: CARD16
+ pad: CARD16
+ types: LISTofXKMKeyType
+└───
+
+┌───
+ XKMKeyType
+ real_mods: CARD8
+ num_levels: CARD8
+ virt_mods: CARD16
+ num_map_entries: CARD8
+ num_level_names: CARD8
+ perserve: CARD8
+ pad: CARD8
+ map_entries: LISTofXKMKTMapEntry
+ name: XKMCountedString
+ mods: LISTofXKMModsDesc
+ level_names: LISXTofXKMCountedString
+└───
+
+The num_map_entries specifies the number of structs in both map_entries and mods. mods is only present if preserve is TRUE.
+
+┌───
+ XKMKTMapEntry
+ level: CARD8
+ real_mods: CARD8
+ virt_mods: CARD16
+└───
+
+┌───
+ XKMModsDesc
+ real_mods: CARD8
+ pad: CARD8
+ virt_mods: CARD16
+└───
+
+ â§â§â§â§â§â§â§â§â§â§â§
+3.3.2 XKMCompatMap
+
+An XKMCompatMap section describes the actions a keyboard may trigger. This
+ranges from the TerminateServer action to simple modifier bits.
+
+┌───
+ XKMCompatMap
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ num_si: CARD16
+ group_mask: XKMGroupBits
+ pad: CARD8
+ si: LISTofXKMSymInterpreterDesc
+ groups: LISTofXKMModsDesc
+└───
+
+One XKMModsDesc is present for each bit set in group_mask.
+
+┌───
+ XKMSymInterpretDesc
+ sym: CARD32
+ mods: CARD8
+ match: CARD8
+ virtual_mod: CARD8
+ flags: CARD8
+ action_type: CARD8
+ action_data: XKMActionData
+└───
+
+Where the action is 7 bytes of CARD8 whose content is determined by
+action_type.
+
+┌───
+ XKMActionData:
+ pad0: CARD8
+ pad1: CARD16
+ pad2: CARD32
+ ───
+ action_type ⇒ XkbSA_SetMods ||
+ action_type ⇒ XkbSA_LatchMods ||
+ action_type ⇒ XkbSA_LockMods
+ ⇒
+ flags: CARD8
+ mask: CARD8
+ real_mods: CARD8
+ vmods1: CARD8
+ vmods2: CARD8
+ pad: CARD16
+ ───
+ action_type ⇒ XkbSA_SetGroup ||
+ action_type ⇒ XkbSA_LatchGroup ||
+ action_type ⇒ XkbSA_LockGroup
+ ⇒
+ flags: CARD8
+ group_XXX: CARD8
+ pad0: CARD8
+ pad1: CARD32
+ ───
+ action_type ⇒ XkbSA_MovePtr
+ ⇒
+ flags: CARD8
+ high_XXX: CARD8
+ low_XXX: CARD8
+ high_YYY: CARD8
+ low_YYY: CARD8
+ pad: CARD16
+ ───
+ action_type ⇒ XkbSA_PtrBtn ||
+ action_type ⇒ XkbSA_LockPtrBtn
+ ⇒
+ flags: CARD8
+ count: CARD8
+ button: CARD8
+ pad: CARD32
+ ───
+ action_type ⇒ XkbSA_DeviceBtn ||
+ action_type ⇒ XkbSA_LockLockPtrBtn
+ ⇒
+ flags: CARD8
+ count: CARD8
+ button: CARD8
+ device: CARD8
+ pad0: CARD8
+ pad1: CARD16
+ ───
+ action_type ⇒ XkbSA_SetPtrDflt
+ ⇒
+ flags: CARD8
+ affect: CARD8
+ valueXXX: CARD8
+ pad0: CARD32
+ ───
+ action_type ⇒ XkbSA_ISOLock
+ ⇒
+ flags: CARD8
+ mask: CARD8
+ real_mods: CARD8
+ group_XXX: CARD8
+ affect: CARD8
+ vmods1: CARD8
+ vmods1: CARD8
+ ───
+ action_type ⇒ XkbSA_SwitchScreen
+ ⇒
+ flags: CARD8
+ screenXXX: CARD8
+ pad0: CARD8
+ pad1: CARD32
+ ───
+ action_type ⇒ XkbSA_SetControls ||
+ action_type ⇒ XkbSA_LockControls
+ ⇒
+ flags: CARD8
+ ctrls3: CARD8
+ ctrls2: CARD8
+ ctrls1: CARD8
+ ctrls0: CARD8
+ pad: CARD16
+ ───
+ action_type ⇒ XkbSA_RedirectKey
+ ⇒
+ new_key: CARD8
+ mods_mask: CARD8
+ mods: CARD8
+ vmods_mask0: CARD8
+ vmods_mask1: CARD8
+ vmods0: CARD8
+ vmods1: CARD8
+ ───
+ action_type ⇒ XkbSA_DeviceValuator
+ ⇒
+ device: CARD8
+ v1_what: CARD8
+ v1_idx: CARD8
+ v1_value: CARD8
+ v2_what: CARD8
+ v2_idx: CARD8
+ v2_value: CARD8
+ pad: CARD8
+ ───
+ action_type ⇒ XkbSA_XFree86Private ||
+ action_type ⇒ XkbSA_Terminate
+ ⇒
+ pad0: CARD8
+ pad1: CARD16
+ pad2: CARD32
+ ───
+ action_type ⇒ XkbSA_ActionMessage
+ ⇒
+ press_msg: BOOL
+ release_msg: BOOL
+ gen_event: BOOL
+ message: 4 * CHAR
+└───
+
+Note: XkbSA_ActionMessage is currently unsupported and the contents are
+ignored.
+
+ â§â§â§â§â§â§â§â§â§â§â§
+3.3.3 XkmSymbols
+
+The symbols in a keymap define the actual keysyms each key may produce.
+
+┌───
+ XKMSymbols
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ min_keycode: CARD8
+ max_keycode: CARD8
+ group_names_mask: XKMGroupBits
+ num_vmod_maps: CARD8
+ group_names: LISTofXKMCountedString
+ keysyms: XKMKeysymMapDesc
+ vmod_maps: XKMVModMapDesc
+└───
+One group_name is present for each bit set in group_names_mask.
+The number of keysyms present is max_keycode - min_keycode + 1.
+
+┌───
+ XKMKeysymMapDesc
+ width: CARD8
+ num_groups: CARD8
+ modifier_map: CARD8
+ flags: CARD8
+ names: LISTofXKMCountedString
+ syms: LISTofCARD32
+ behavior: XKMBehaviorDesc
+└───
+
+Presence of names is conditional on the XkmKeyHasTypes flag. The number of
+strings is equal to the number of group bits in group_names_mask in the
+preceeding XKMSymbols section.
+The number of elements in syms is equal to width * num_groups.
+Presence of behavior is conditional on the XkmKeyHasBehavior flag.
+
+┌───
+ XKMKeyBehaviorDesc
+ type: CARD8
+ data: CARD8
+ pad: CARD16
+└───
+
+┌───
+ XKMVModMapDesc
+ key: CARD8
+ pad: CARD8
+ vmods: CARD16
+└───
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.3.4 XKMIndicators
+
+┌───
+ XKMIndicators
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ num_indicators: CARD8
+ pad0: CARD8
+ pad1: CARD16
+ indicators: LISTofXKMIndicatorMapDesc
+└───
+
+┌───
+ XKMIndicatorMapDesc
+ name: XKMCountedString
+ indicator: CARD8
+ flags: CARD8
+ which_mods: CARD8
+ real_mods: CARD8
+ vmods: CARD16
+ which_groups: CARD8
+ groups: CARD8
+ ctrls: CARD32
+└───
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.3.5 XKMKeyNames
+
+┌───
+ XKMKeyNames
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ min_keycode: CARD8
+ max_keycode: CARD8
+ num_aliases: CARD8
+ pad: CARD8
+ keynames: LISTofXKMKeyname
+ aliases: LISTofXKMKeyAlias
+└───
+
+keynames contains max_keycode - min_keycode + 1 entries.
+
+┌───
+ XkmKeyname
+ name: 4 * CHAR8
+└───
+
+┌───
+ XkmKeyAlias
+ real: XkmKeyname
+ alias: XkmKeyname
+└───
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.3.5 XKMGeometry
+
+┌───
+ XKMGeometry
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ width_mm: CARD16
+ height_mm: CARD16
+ base_color_ndx: CARD8
+ label_color_ndx: CARD8
+ num_properties: CARD16
+ num_colors: CARD16
+ num_shapes: CARD16
+ num_sections: CARD16
+ num_doodads: CARD16
+ num_key_aliases: CARD16
+ pad: CARD16
+ label_font: XKMCountedString
+ properties: LISTofXKMGeomProperty
+ colors: LISTofXKMCountedString
+ shapes: LISTofXKMGeomShape
+ sections: LISTofXKMGeomSection
+ doodads: LISTofXKMGeomDoodad
+ key_aliases: LISTofXKMKeyAlias
+└───
+
+┌───
+ XKMGeomProperty
+ name: XKMCountedString
+ value: XKMCountedString
+
+└───
+
+┌───
+ XKMGeomShape
+ name: XKMCountedString
+ num_outlines: CARD8
+ primary_idx: CARD8
+ approx_idx: CARD8
+ pad: CARD8
+ outlines: LISTofXKMOutlineDesc
+└───
+
+┌───
+ XKMOutlineDesc
+ num_points: CARD8
+ corner_radius: CARD8
+ pad: CARD16
+ points: LISTofXKMPointDesc
+└───
+
+┌───
+ XKMPointDesc
+ x: INT16
+ y: INT16
+└───
+
+┌───
+ XKMGeomSection
+ name: XKMCountedString
+ top: INT16
+ left: INT16
+ width: CARD16
+ height: CARD16
+ angle: INT16
+ priority: CARD8
+ num_rows: CARD8
+ num_doodads: CARD8
+ num_overlays: CARD8
+ pad: CARD16
+ rows: LISTofXKMRowDesc
+ doodads: LISTofXKMGeomDoodad
+ overlays: LISTofXKMGeomOverlay
+└───
+
+┌───
+ XKMRowDesc
+ top: INT16
+ left: INT16
+ num_keys: CARD8
+ vertical: BOOL
+ pad: CARD16
+ keys: XKMKeyDesc
+└───
+
+┌───
+ XKMKeyDesc
+ name: XKMKeyname
+ gap: INT16
+ shape_idx: CARD8
+ color_idx: CARD8
+└───
+
+┌───
+ XKMGeomDoodad
+ name: XKMCountedString
+ type: CARD8
+ priority: CARD8
+ top: INT16
+ left: INT16
+ pad1: CARD16
+ pad2: CARD32
+ pad3: CARD32
+ ───
+ type ⇒ XkbOutlineDoodad ||
+ type ⇒ XkbSolideDoodad
+ ⇒
+ type: CARD8
+ priority: CARD8
+ top: INT16
+ left: INT16
+ angle: INT16
+ color_idx: CARD8
+ shape_idx: CARD8
+ pad0: CARD16
+ pad1: CARD32
+ ───
+ type ⇒ XkbTextDoodad
+ ⇒
+ type: CARD8
+ priority: CARD8
+ top: INT16
+ left: INT16
+ angle: INT16
+ width: CARD16
+ height: CARD16
+ color_idx: CARD8
+ pad0: CARD8
+ pad1: CARD16
+ text: XKMCountedString
+ font: XKMCountedString
+ ───
+ type ⇒ XkbIndicatorDoodad
+ ⇒
+ type: CARD8
+ priority: CARD8
+ top: INT16
+ left: INT16
+ shape_idx: CARD8
+ on_color_idx: CARD8
+ off_color_idx: CARD8
+ pad0: CARD8
+ pad1: CARD16
+ pad2: CARD32
+ ───
+ type ⇒ XkbLogoDoodad
+ ⇒
+ type: CARD8
+ priority: CARD8
+ top: INT16
+ left: INT16
+ angle: INT16
+ color_idx: CARD8
+ shape_idx: CARD8
+ pad0: CARD16
+ pad1: CARD32
+ logo_name: XKMCountedString
+└───
+
+WARNING: XKMGeomDoodad has variable length depending on the type.
+NOTE: The current server implementation does not use all fields of all
+structures.
+
+┌───
+ XKMOverlayDesc
+ name: XKMCountedString
+ num_rows: CARD8
+ pad0: CARD8
+ pad1: CARD16
+ rows: LISTofXKMOverlayRowDesc
+└───
+
+┌───
+ XKMOverlayRowDesc
+ name: XKMCountedString
+ row_under: CARD8
+ num_keys: CARD8
+ pad: CARD16
+ keys: LISTofXKMOverlayKeyDesc
+└───
+
+┌───
+ XKMOverlayKeyDesc
+ over: XKMKeyname
+ under: XKMKeyname
+└───
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.3.6 XKMVirtualMods
+
+┌───
+ XKMOverlayRowDesc
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ bound_mask: SETofVMODBITS
+ named_mask: SETofVMODBITS
+ vmods: LISTofCARD8
+ pad: pad(vmods)
+ names: LISTofXKMCountedString
+└───
+
+ VMODBITS: CARD16
+
+Number of elements in vmods is equal to the number of bits set in
+bound_mask. The padding completes vmods to a multiple of 4 byte units.
+Number of elements in names is equal to the number of bits set in
+named_mask.
diff --git a/xorg-server/xkb/xkb.h b/xorg-server/xkb/xkb.h
index a526356a9..328ac8f00 100644
--- a/xorg-server/xkb/xkb.h
+++ b/xorg-server/xkb/xkb.h
@@ -1,32 +1,32 @@
-#ifndef _XKB_H
-#define _XKB_H
-
-extern int ProcXkbUseExtension(ClientPtr client);
-extern int ProcXkbSelectEvents(ClientPtr client);
-extern int ProcXkbBell(ClientPtr client);
-extern int ProcXkbGetState(ClientPtr client);
-extern int ProcXkbLatchLockState(ClientPtr client);
-extern int ProcXkbGetControls(ClientPtr client);
-extern int ProcXkbSetControls(ClientPtr client);
-extern int ProcXkbGetMap(ClientPtr client);
-extern int ProcXkbSetMap(ClientPtr client);
-extern int ProcXkbGetCompatMap(ClientPtr client);
-extern int ProcXkbSetCompatMap(ClientPtr client);
-extern int ProcXkbGetIndicatorState(ClientPtr client);
-extern int ProcXkbGetIndicatorMap(ClientPtr client);
-extern int ProcXkbSetIndicatorMap(ClientPtr client);
-extern int ProcXkbGetNamedIndicator(ClientPtr client);
-extern int ProcXkbSetNamedIndicator(ClientPtr client);
-extern int ProcXkbGetNames(ClientPtr client);
-extern int ProcXkbSetNames(ClientPtr client);
-extern int ProcXkbGetGeometry(ClientPtr client);
-extern int ProcXkbSetGeometry(ClientPtr client);
-extern int ProcXkbPerClientFlags(ClientPtr client);
-extern int ProcXkbListComponents(ClientPtr client);
-extern int ProcXkbGetKbdByName(ClientPtr client);
-extern int ProcXkbGetDeviceInfo(ClientPtr client);
-extern int ProcXkbSetDeviceInfo(ClientPtr client);
-extern int ProcXkbSetDebuggingFlags(ClientPtr client);
-
-extern void XkbExtensionInit(void);
-#endif
+#ifndef _XKB_H
+#define _XKB_H
+
+extern int ProcXkbUseExtension(ClientPtr client);
+extern int ProcXkbSelectEvents(ClientPtr client);
+extern int ProcXkbBell(ClientPtr client);
+extern int ProcXkbGetState(ClientPtr client);
+extern int ProcXkbLatchLockState(ClientPtr client);
+extern int ProcXkbGetControls(ClientPtr client);
+extern int ProcXkbSetControls(ClientPtr client);
+extern int ProcXkbGetMap(ClientPtr client);
+extern int ProcXkbSetMap(ClientPtr client);
+extern int ProcXkbGetCompatMap(ClientPtr client);
+extern int ProcXkbSetCompatMap(ClientPtr client);
+extern int ProcXkbGetIndicatorState(ClientPtr client);
+extern int ProcXkbGetIndicatorMap(ClientPtr client);
+extern int ProcXkbSetIndicatorMap(ClientPtr client);
+extern int ProcXkbGetNamedIndicator(ClientPtr client);
+extern int ProcXkbSetNamedIndicator(ClientPtr client);
+extern int ProcXkbGetNames(ClientPtr client);
+extern int ProcXkbSetNames(ClientPtr client);
+extern int ProcXkbGetGeometry(ClientPtr client);
+extern int ProcXkbSetGeometry(ClientPtr client);
+extern int ProcXkbPerClientFlags(ClientPtr client);
+extern int ProcXkbListComponents(ClientPtr client);
+extern int ProcXkbGetKbdByName(ClientPtr client);
+extern int ProcXkbGetDeviceInfo(ClientPtr client);
+extern int ProcXkbSetDeviceInfo(ClientPtr client);
+extern int ProcXkbSetDebuggingFlags(ClientPtr client);
+
+extern void XkbExtensionInit(void);
+#endif
diff --git a/xorg-server/xkeyboard-config/.gitignore b/xorg-server/xkeyboard-config/.gitignore
new file mode 100644
index 000000000..5536f8837
--- /dev/null
+++ b/xorg-server/xkeyboard-config/.gitignore
@@ -0,0 +1,102 @@
+ABOUT-NLS
+ChangeLog
+Makefile
+Makefile.in
+aclocal.m4
+autom4te-2.53.cache
+config.cache
+config.log
+config.rpath
+config.status
+config.status.lineno
+configure
+intl
+intltool-extract
+intltool-extract.in
+intltool-merge
+intltool-merge.in
+intltool-update
+intltool-update.in
+m4
+autom4te.cache
+mkinstalldirs
+intltool-modules
+config.h
+config.h.in
+stamp-h1
+xkeyboard-config*.tar.*
+xkeyboard-config.pc
+xkeyboard-config.spec
+xkeyboard-config.prj
+xkeyboard-config.pws
+.tm_project.cache
+INSTALL
+config.guess
+config.sub
+configure.lineno
+install-sh
+missing
+compat/compat.dir
+geometry/geometry.dir
+keycodes/keycodes.dir
+keymap/keymap.dir
+man/xkeyboard-config.7
+man/xkeyboard-config.man
+po/.intltool-merge-cache
+po/Makefile.in.in
+po/Makevars.template
+po/POTFILES
+po/Rules-quot
+po/boldquot.sed
+po/en@boldquot.header
+po/en@quot.header
+po/insert-header.sin
+po/messages
+po/quot.sed
+po/remove-potcdate.sed
+po/remove-potcdate.sin
+po/*.gmo
+po/*.pot
+po/messages.mo
+po/stamp-po
+rules/base.extras.xml
+rules/base.xml
+rules/base.lst
+rules/base
+rules/sun.xml
+semantics/semantics.dir
+symbols/symbols.dir
+tests/*.lst
+tests/*.sd
+types/types.dir
+rules/extras/base.l1v1_s.part
+rules/extras/base.l2_s.part
+rules/extras/base.l2v2_s.part
+rules/extras/base.l3_s.part
+rules/extras/base.l3v3_s.part
+rules/extras/base.l4_s.part
+rules/extras/base.l4v4_s.part
+rules/extras/base.ml1_s.part
+rules/extras/base.ml1v1_s.part
+rules/extras/base.ml_s.part
+rules/extras/base.mlv_s.part
+rules/compat/base.l2_s.part
+rules/compat/base.l3_s.part
+rules/compat/base.l4_s.part
+rules/compat/base.l2v2_s.part
+rules/compat/base.l3v3_s.part
+rules/compat/base.l4v4_s.part
+rules/compat/base.ml1_s.part
+rules/compat/base.ml1v1_s.part
+rules/compat/base.ml_s.part
+rules/compat/base.mlv_s.part
+tests/mxkbledpanel/mxkbledpanel
+tests/mxkbledpanel/mxkbledpanel._man
+tests/reg2ll.lstbase
+po/stamp-it
+rules/evdev
+rules/evdev.extras.xml
+rules/evdev.extras.xml.in
+rules/evdev.lst
+rules/evdev.xml
+rules/evdev.xml.in
diff --git a/xorg-server/xkeyboard-config/AUTHORS b/xorg-server/xkeyboard-config/AUTHORS
index 451e9c08d..ff240c480 100644
--- a/xorg-server/xkeyboard-config/AUTHORS
+++ b/xorg-server/xkeyboard-config/AUTHORS
@@ -1,8 +1,8 @@
-Сергей Удальцов (Sergey Udaltsov) <svu@users.sourceforge.net>
-
-Andriy Rysin <arysin@myrealbox.com>
-Denis Barbier <barbier@linuxfr.org>
-Frank Murphy <murphyf+xfree86@f-m.fm>
-Ivan Pascal <pascal@info.tsu.ru>
-Nicolas Mailhot <nicolas.mailhot@laposte.net>
-Данило Шеган <dsegan@gmx.net>
+Сергей Удальцов (Sergey Udaltsov) <svu@users.sourceforge.net>
+
+Andriy Rysin <arysin@myrealbox.com>
+Denis Barbier <barbier@linuxfr.org>
+Frank Murphy <murphyf+xfree86@f-m.fm>
+Ivan Pascal <pascal@info.tsu.ru>
+Nicolas Mailhot <nicolas.mailhot@laposte.net>
+Данило Шеган <dsegan@gmx.net>
diff --git a/xorg-server/xkeyboard-config/BUGS b/xorg-server/xkeyboard-config/BUGS
index cb48ff636..285e01251 100644
--- a/xorg-server/xkeyboard-config/BUGS
+++ b/xorg-server/xkeyboard-config/BUGS
@@ -1,70 +1,70 @@
--- Freedesktop.ORG
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=320
-http://bugs.xfree86.org/show_bug.cgi?id=1155
-
- DONE: Added microsoftprousb
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=326
-http://bugs.xfree86.org/show_bug.cgi?id=1227
-
- ?: Which of 'inet' files is right?
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=365
-
- DONE: Two keysyms swapped in us(intl)
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=371
-
- ?: What exactly is broken? Some patch would be nice
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=458
-
- DONE: Changed Farsi to Iranian
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=463
-
- ?: Don't know how to fix, really. Let's see.
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=496
-
- DONE: Added Gyration Compact Keyboard
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=574
-
- DONE: The patch applied
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=587
-
- ?: Which of altwin options should be included?
- Some part of meta_win is already there
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=630
-
- DONE: Logitech iTouch Cordless Keyboard (model Y-RB6) added
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=666
-
- DONE: Long ago added alt_super_win
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=711
-
- DONE: Added Super Power Multimedia Keyboard
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=743
-
- DONE: Armenian fixed
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=744
-
- DONE: Model a4techKB21 added
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=926
-
- TODO:
--- GNOME
-
-http://bugzilla.gnome.org/show_bug.cgi?id=144646
-http://bugs.xfree86.org/show_bug.cgi?id=1415
-
- DONE: Fixed, thanks to Dmitry
+-- Freedesktop.ORG
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=320
+http://bugs.xfree86.org/show_bug.cgi?id=1155
+
+ DONE: Added microsoftprousb
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=326
+http://bugs.xfree86.org/show_bug.cgi?id=1227
+
+ ?: Which of 'inet' files is right?
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=365
+
+ DONE: Two keysyms swapped in us(intl)
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=371
+
+ ?: What exactly is broken? Some patch would be nice
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=458
+
+ DONE: Changed Farsi to Iranian
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=463
+
+ ?: Don't know how to fix, really. Let's see.
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=496
+
+ DONE: Added Gyration Compact Keyboard
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=574
+
+ DONE: The patch applied
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=587
+
+ ?: Which of altwin options should be included?
+ Some part of meta_win is already there
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=630
+
+ DONE: Logitech iTouch Cordless Keyboard (model Y-RB6) added
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=666
+
+ DONE: Long ago added alt_super_win
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=711
+
+ DONE: Added Super Power Multimedia Keyboard
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=743
+
+ DONE: Armenian fixed
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=744
+
+ DONE: Model a4techKB21 added
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=926
+
+ TODO:
+-- GNOME
+
+http://bugzilla.gnome.org/show_bug.cgi?id=144646
+http://bugs.xfree86.org/show_bug.cgi?id=1415
+
+ DONE: Fixed, thanks to Dmitry
diff --git a/xorg-server/xkeyboard-config/COPYING b/xorg-server/xkeyboard-config/COPYING
index 4efb62906..49983da29 100644
--- a/xorg-server/xkeyboard-config/COPYING
+++ b/xorg-server/xkeyboard-config/COPYING
@@ -1,190 +1,190 @@
-Copyright 1996 by Joseph Moss
-Copyright (C) 2002-2007 Free Software Foundation, Inc.
-Copyright (C) Dmitry Golubev <lastguru@mail.ru>, 2003-2004
-Copyright (C) 2004, Gregory Mokhin <mokhin@bog.msu.ru>
-Copyright (C) 2006 Erdal Ronahî
-
-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 the copyright holder(s) not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. The copyright holder(s) makes no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-THE COPYRIGHT HOLDER(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL THE COPYRIGHT HOLDER(S) 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.
-
-
-Copyright (c) 1996 Digital Equipment Corporation
-
-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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
-Corporation shall not be used in advertising or otherwise to promote
-the sale, use or other dealings in this Software without prior written
-authorization from Digital Equipment Corporation.
-
-
-Copyright 1996, 1998 The Open Group
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group 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 Open Group.
-
-
-Copyright 2004-2005 Sun Microsystems, Inc. All rights reserved.
-
-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 (including the next
-paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-
-
-Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
-
-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 of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS 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.
-
-
-Copyright (c) 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 (C) 2004, 2006 Ævar Arnfjörð Bjarmason <avarab@gmail.com>
-
-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.
-
-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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization of
-the copyright holder.
-
-
-Copyright (C) 1999, 2000 by Anton Zinoviev <anton@lml.bas.bg>
-
-This software may be used, modified, copied, distributed, and sold,
-in both source and binary form provided that the above copyright
-and these terms are retained. Under no circumstances is the author
-responsible for the proper functioning of this software, nor does
-the author assume any responsibility for damages incurred with its
-use.
-
-Permission is granted to anyone to use, distribute and modify
-this file in any way, provided that the above copyright notice
-is left intact and the author of the modification summarizes
-the changes in this header.
-
-This file is distributed without any expressed or implied warranty.
+Copyright 1996 by Joseph Moss
+Copyright (C) 2002-2007 Free Software Foundation, Inc.
+Copyright (C) Dmitry Golubev <lastguru@mail.ru>, 2003-2004
+Copyright (C) 2004, Gregory Mokhin <mokhin@bog.msu.ru>
+Copyright (C) 2006 Erdal Ronahî
+
+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 the copyright holder(s) not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. The copyright holder(s) makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+THE COPYRIGHT HOLDER(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE COPYRIGHT HOLDER(S) 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.
+
+
+Copyright (c) 1996 Digital Equipment Corporation
+
+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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
+Corporation shall not be used in advertising or otherwise to promote
+the sale, use or other dealings in this Software without prior written
+authorization from Digital Equipment Corporation.
+
+
+Copyright 1996, 1998 The Open Group
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group 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 Open Group.
+
+
+Copyright 2004-2005 Sun Microsystems, Inc. All rights reserved.
+
+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 (including the next
+paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+
+
+Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
+
+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 of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS 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.
+
+
+Copyright (c) 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 (C) 2004, 2006 Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+
+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.
+
+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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization of
+the copyright holder.
+
+
+Copyright (C) 1999, 2000 by Anton Zinoviev <anton@lml.bas.bg>
+
+This software may be used, modified, copied, distributed, and sold,
+in both source and binary form provided that the above copyright
+and these terms are retained. Under no circumstances is the author
+responsible for the proper functioning of this software, nor does
+the author assume any responsibility for damages incurred with its
+use.
+
+Permission is granted to anyone to use, distribute and modify
+this file in any way, provided that the above copyright notice
+is left intact and the author of the modification summarizes
+the changes in this header.
+
+This file is distributed without any expressed or implied warranty.
diff --git a/xorg-server/xkeyboard-config/CREDITS b/xorg-server/xkeyboard-config/CREDITS
index 7a05b27ec..b31a3298d 100644
--- a/xorg-server/xkeyboard-config/CREDITS
+++ b/xorg-server/xkeyboard-config/CREDITS
@@ -1,3 +1,3 @@
-Ivan A Derzhanski <iad@math.bas.bg>
-Runa Aruna <runa_aruna@yahoo.com>
-Fr?d?ric BOITEUX <fboiteux@calistel.com>
+Ivan A Derzhanski <iad@math.bas.bg>
+Runa Aruna <runa_aruna@yahoo.com>
+Fr?d?ric BOITEUX <fboiteux@calistel.com>
diff --git a/xorg-server/xkeyboard-config/ChangeLog b/xorg-server/xkeyboard-config/ChangeLog
index 28c811580..51627ab6e 100644
--- a/xorg-server/xkeyboard-config/ChangeLog
+++ b/xorg-server/xkeyboard-config/ChangeLog
@@ -1 +1 @@
-ChangeLog file is not used. Use "git log" instead
+ChangeLog file is not used. Use "git log" instead
diff --git a/xorg-server/xkeyboard-config/ChangeLog.old b/xorg-server/xkeyboard-config/ChangeLog.old
index 40e24271b..2b2b62542 100644
--- a/xorg-server/xkeyboard-config/ChangeLog.old
+++ b/xorg-server/xkeyboard-config/ChangeLog.old
@@ -1,3891 +1,3891 @@
-2009-12-21 Sergey Udaltsov
-
- * symbols/ru: Added ru(typewriter-legacy),
- https://bugs.freedesktop.org/show_bug.cgi?id=25726
- * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
- grp(lctrl_rctrl_switch),
- https://bugs.freedesktop.org/show_bug.cgi?id=25727
-
-2009-11-27 Sergey Udaltsov
-
- * symbols/se: Reintroduced the broken bar in the Swedish symbol
- layout. http://bugs.freedesktop.org/show_bug.cgi?id=8491
-
-2009-11-25 Sergey Udaltsov
-
- * rules/base.m_s.part, symbols/inet: a bit of optimization, K6C to map
- to Eject, always in media section
-
-2009-11-24 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/lt: removed unneeded lt(balticplus),
- http://bugs.freedesktop.org/show_bug.cgi?id=25263
-
-2009-11-21 Sergey Udaltsov
-
- * ../rules/base.xml.in, ../symbols/pl: added pl(dvp),
- http://bugs.freedesktop.org/show_bug.cgi?id=25200
-
-2009-11-18 Sergey Udaltsov
-
- * symbols/tm: small fix for tm layout, related to Ctrl+? shortcuts
- https://bugs.freedesktop.org/show_bug.cgi?id=25074
-
-2009-11-15 Octavio Alvarez
-
- * rules/base.xml.in: Removed thinkpadintl from base.xml.in.
-
-2009-10-20 Sergey Udaltsov
-
- * symbols/sun_vndr/us: added backspace mapping,
- https://bugs.freedesktop.org/show_bug.cgi?id=24554
-
-2009-10-13 Sergey Udaltsov
-
- * rules/base.lists.part, symbols/macintosh_vndr/Makefile.am,
- symbols/macintosh_vndr/es: Spanish mac layout just included the
- general one
- * rules/base.xml.in, symbols/ch: fixed Swiss default layout, added
- legacy variant, http://bugs.freedesktop.org/show_bug.cgi?id=24490
-
-2009-10-12 Sergey Udaltsov
-
- * rules/base.xml.in: USA Russian Phonetic keyboard layout not found in
- search by Languages - Russian,
- http://bugs.freedesktop.org/show_bug.cgi?id=24485
-
-2009-09-30 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
- grp:rctrl_rshift_toggle option,
- http://bugs.freedesktop.org/show_bug.cgi?id=24234
-
-2009-09-29 Sergey Udaltsov
-
- * configure.in, NEWS, po/*.po: preparing 1.7
-
-2009-09-15 Sergey Udaltsov
-
- * symbols/es: addind dead_tilde,
- https://bugs.freedesktop.org/show_bug.cgi?id=23876
- * keycodes/sun, rules/base.m_k.part, rules/base.ml_s.part,
- symbols/sun_vndr/us: fixed Sun keyboard model for type6,
- https://bugs.freedesktop.org/show_bug.cgi?id=3952
-
-2009-09-08 Gaetan Nadon
-
- * **/.cvsignore: remove cvsignore files.
-
-2009-09-02 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/by: restructured Belarussian variants,
- https://bugs.freedesktop.org/show_bug.cgi?id=23604
-
-2009-08-28 Sergey Udaltsov
-
- * symbols/no: updated layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=23518
-
-2009-08-20 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- caps:numlock, http://bugs.freedesktop.org/show_bug.cgi?id=23323
-
-2009-08-18 Peter Hutterer
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- caps:hyper, http://bugs.freedesktop.org/show_bug.cgi?id=23356
-
-2009-08-14 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- caps:none option, http://bugs.freedesktop.org/show_bug.cgi?id=23243
- * rules/base.xml.in, symbols/it: added it(us),
- http://bugs.freedesktop.org/show_bug.cgi?id=23263
-
-2009-08-04 Sergey Udaltsov
-
- * geometry/Makefile.am, rules/base.lists.part, rules/base.m_g.part,
- rules/base.xml.in: added TypeMatrix geometries,
- http://bugs.freedesktop.org/show_bug.cgi?id=23136
-
-2009-07-19 Sergey Udaltsov
-
- * symbols/vn: fixed accent typing,
- http://bugs.freedesktop.org/show_bug.cgi?id=22847
-
-2009-07-18 Sergey Udaltsov
-
- * symbols/gb: fixed gb(colemak), several mappings added,
- http://bugs.freedesktop.org/show_bug.cgi?id=22735
-
-2009-07-14 Sergey Udaltsov
-
- * rules/base.extras.xml.in, rules/extras/variantsMapping.lst,
- symbols/extras/us: added us(crd) to extras,
- http://bugs.freedesktop.org/show_bug.cgi?id=22635
-
-2009-07-09 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/bg: updated bg variants,
- http://bugs.freedesktop.org/show_bug.cgi?id=22666
-
-2009-06-27 Sergey Udaltsov
-
- * symbols/extras/us, rules/base.extras.xml.in,
- rules/extras/variantsMapping.lst, symbols/extras/Makefile.am: Added 3
- exotic us variants: ats, intl-unicode, alt-intl-unicode
- http://bugs.freedesktop.org/show_bug.cgi?id=22004
- http://bugs.freedesktop.org/show_bug.cgi?id=22446
-
-2009-06-22 Sergey Udaltsov
-
- * .gitignore, configure.in, rules/Makefile.am,
- rules/base.extras.xml.in, rules/base.l2_s.part, rules/base.l3_s.part,
- rules/base.l4_s.part, rules/base.lists.part, rules/base.ml_s.part,
- rules/bin/Makefile.am, rules/compat/ln_s.sh -> rules/bin/ln_s.sh,
- rules/compat/lnv_s.sh -> rules/bin/lnv_s.sh, rules/compat/ml1_s.sh ->
- rules/bin/ml1_s.sh, rules/compat/ml1v1_s.sh -> rules/bin/ml1v1_s.sh,
- rules/compat/ml1v_s.sh -> rules/bin/ml1v_s.sh, rules/compat/ml_s.sh ->
- rules/bin/ml_s.sh, rules/compat/mlv_s.sh -> rules/bin/mlv_s.sh,
- rules/compat/Makefile.am, rules/compat/layoutsMapping.lst,
- rules/compat/variantsMapping.lst, rules/extras/Makefile.am,
- rules/extras/layoutsMapping.lst, symbols/extras/Makefile.am,
- symbols/extras/rs: serious restructuring of the rules generation
- scripts, for compat and extras. Also, adding exotic rs(combiningkeys)
- variant, http://bugs.freedesktop.org/show_bug.cgi?id=21047
-
-2009-06-20 Sergey Udaltsov
-
- * symbols/by: missing mappings,
- https://bugs.freedesktop.org/show_bug.cgi?id=22386
- * symbols/ca: fixed a couple of mappings in ca(shs)
- http://bugs.freedesktop.org/show_bug.cgi?id=22388
-
-2009-06-19 Sergey Udaltsov
-
- * symbols/de: small fix for a numbersign key,
- http://bugs.freedesktop.org/show_bug.cgi?id=19934
-
-2009-06-15 Sergey Udaltsov
-
- * symbols/inet: fixing ABNT2-specific mapping for keypad dot key,
- http://bugs.freedesktop.org/show_bug.cgi?id=22303
-
-2009-06-14 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
- creativedw7000 model,
- http://bugs.freedesktop.org/show_bug.cgi?id=22261
-
-2009-06-12 Sergey Udaltsov
-
- * symbols/us: added extra symbols to us(altgr-intl),
- http://bugs.freedesktop.org/show_bug.cgi?id=22249
-
-2009-06-11 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- caps:super, http://bugs.freedesktop.org/show_bug.cgi?id=22184
-
-2009-06-09 Sergey Udaltsov
-
- * symbols/ng: fixing 'e with dot below' in ng(olpc),
- https://bugs.freedesktop.org/show_bug.cgi?id=20010
- * rules/base.ml1_s.part: fixing misspeled variant name,
- https://bugs.freedesktop.org/show_bug.cgi?id=15782
- * symbols/tr: lost credits added,
- https://bugs.freedesktop.org/show_bug.cgi?id=22079
- * rules/base.xml.in, symbols/ru: added ru(bak),
- https://bugs.freedesktop.org/show_bug.cgi?id=22101
-
-2009-05-31 Sergey Udaltsov
-
- * symbols/altwin: setting explicit TWO_LEVEL on sections mapping RALT
- , it is often ONE_LEVEL because of LEVEL3. Fixed
- http://bugs.freedesktop.org/show_bug.cgi?id=21761
-
-2009-05-24 Sergey Udaltsov
-
- * symbols/ua: fixed all references, from ua(basic) to ua(legacy),
- finalizing http://bugs.freedesktop.org/show_bug.cgi?id=21302
-
-2009-05-18 Sergey Udaltsov
-
- * symbols/de: adding acute to de(nodeadkeys),
- http://bugs.freedesktop.org/show_bug.cgi?id=21794
-
-2009-05-12 Sergey Udaltsov
-
- * NEWS, configure.in: bumping the release number
-
-2009-05-12 ReÅŸat SABIQ
-
- * configure.in (new locale), po/crh.po:
- Added crh.po as well (as was done originally on January 30),
- based on Peter Hutterer's feedback regarding build process;
- http://bugs.freedesktop.org/show_bug.cgi?id=19730
-
-2009-05-11 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/pl: polished the description for
- pl(dvorak_altquotes)
-
-2009-05-11 ReÅŸat SABIQ
-
- * configure.in (new locale), rules/base.xml.in,
- symbols/ro, symbols/tr, symbols/ua, symbols/uz:
- Added Crimean Tatar (Crimean Turkish) layouts;
- http://bugs.freedesktop.org/show_bug.cgi?id=19730
-
-2009-05-07 Sergey Udaltsov
-
- * symbols/ru: fixed Kalmyk variant
-
-2009-05-01 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ru: added ru(phonetic_winkeys),
- http://bugs.freedesktop.org/show_bug.cgi?id=21474
-
-2009-04-29 Sergey Udaltsov
-
- * rules/base.xml.in: fixed wrong locale code,
- http://bugs.freedesktop.org/show_bug.cgi?id=21451
-
-2009-04-25 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/Makefile.am,
- symbols/pc, symbols/srvr_ctrl: Make C-A-Bksp an option,
- http://bugs.freedesktop.org/show_bug.cgi?id=21274
-
-2009-04-23 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ua: making ua(unicode) default,
- http://bugs.freedesktop.org/show_bug.cgi?id=21302
-
-2009-04-22 Sergey Udaltsov
-
- * rules/compat/ln_s.sh, rules/compat/ml1_s.sh: improved compat rules,
- hopefully fixing http://bugs.freedesktop.org/show_bug.cgi?id=8452
-
-2009-04-15 Sergey Udaltsov
-
- * symbols/kr: fixed ordering issue,
- http://bugs.freedesktop.org/show_bug.cgi?id=21211
-
-2009-04-14 Sergey Udaltsov
-
- * symbols/kg: small update of the Kyrgyz layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=17505
- * rules/base.xml.in, symbols/gb: added gb(extd),
- http://bugs.freedesktop.org/show_bug.cgi?id=21121
-
-2009-04-03 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/tm: added Turkmen layout+variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=21015
- * symbols/rs: splitting latlevel3 and cyrlevel3,
- http://bugs.freedesktop.org/show_bug.cgi?id=21044
- * rules/base.m_s.part, rules/base.xml.in: Cherry B.UMLIMITED dummy
- model, http://bugs.freedesktop.org/show_bug.cgi?id=21002
-
-2009-03-17 Sergey Udaltsov
-
- * symbols/de: some useful symbols added on high shift levels,
- http://bugs.freedesktop.org/show_bug.cgi?id=20551
-
-2009-03-16 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/kg: fixed Kyrgyz
- variants, http://bugs.freedesktop.org/show_bug.cgi?id=17505
-
-2009-03-07 Sergey Udaltsov
-
- * rules/base.m_s.part, rules/base.xml.in: added trust_slimline model,
- http://bugs.freedesktop.org/show_bug.cgi?id=20513
-
-2009-03-04 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/altwin, symbols/pc:
- putting altwin:super_win into default configuration,
- http://bugs.freedesktop.org/show_bug.cgi?id=19500
-
-2009-03-03 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.ml1_s.part, rules/base.ml_s.part:
- use br(thinkpad) for all thinkpads,
- http://bugs.freedesktop.org/show_bug.cgi?id=20425
-
-2009-03-02 Sergey Udaltsov
-
- * po/POTFILES.in: removed evdev.xml.in, which is exact copy of
- base.xml.in (and not distributed),
- http://bugs.freedesktop.org/show_bug.cgi?id=20107
-
-2009-02-26 Sergey Udaltsov
-
- * symbols/fi: added missing (in pc101) mappings, on 4th level,
- https://bugs.freedesktop.org/show_bug.cgi?id=20300
- * keycodes/evdev, keycodes/xfree86, keymap/xfree86,
- rules/base.lists.part, rules/base.m_k.part, rules/base.xml.in,
- rules/evdev.m_k.part: dropping national-specific models abnt2, jp106,
- kr106. The corresponding geometries are left in the codebase, for some
- while
-
-2009-02-25 Sergey Udaltsov
-
- * symbols/ru: missing minus and underscore are added to ru(phonetic),
- http://bugs.freedesktop.org/show_bug.cgi?id=20093
-
-2009-02-19 Sergey Udaltsov
-
- * keycodes/evdev, keycodes/xfree86, rules/base.m_k.part: merged
- xfree86(jp106) section to basic xfree86 keycodes
-
-2009-02-14 Sergey Udaltsov
-
- * symbols/sn, rules/base.xml.in, symbols/Makefile.am: added wolof
- layout, http://bugs.freedesktop.org/show_bug.cgi?id=20004
-
-2009-02-13 Sergey Udaltsov
-
- * symbols/inet: adding missing mappings to evdev,
- http://bugs.freedesktop.org/show_bug.cgi?id=18854
- * rules/base.xml.in: added lost lt(balticplus),
- http://bugs.freedesktop.org/show_bug.cgi?id=20092
-
-2009-02-05 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/in: added in(hin-wx),
- http://bugs.freedesktop.org/show_bug.cgi?id=19753
-
-2009-02-04 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ru: added ru(dos),
- http://bugs.freedesktop.org/show_bug.cgi?id=19880
-
-2009-02-01 Sergey Udaltsov
-
- * rules/base.xml.in: fixed metainfo for fi(smi),
- http://bugs.freedesktop.org/show_bug.cgi?id=19841
- * rules/base.lists.part, rules/evdev.m_s.part: some kbds need tweaking
- even with evdev, adding $evdevkbds (asked by Peter)
- * symbols/inet: added battery key (asked by Peter)
- * README: fixed docs url,
- http://bugs.freedesktop.org/show_bug.cgi?id=9764
-
-2009-01-28 Sergey Udaltsov
-
- * rules/base.ml_s.part: fixed sun-related rules,
- http://bugs.freedesktop.org/show_bug.cgi?id=15782
- * rules/base.m_s.part, rules/base.xml.in, symbols/inet: added
- geniuskkb2050hs model,
- http://bugs.freedesktop.org/show_bug.cgi?id=19694
- * geometry/dell, rules/base.m_g.part: added latitude geometry,
- http://bugs.freedesktop.org/show_bug.cgi?id=19750
- * rules/base.xml.in, symbols/Makefile.am, symbols/brai,
- symbols/braille: moved Braille symbols to the proper location,
- http://bugs.freedesktop.org/show_bug.cgi?id=19695
- * symbols/capslock: keep Escape working in caps:escape,
- http://bugs.freedesktop.org/show_bug.cgi?id=19795
- * rules/base.o_s.part, rules/base.xml.in, symbols/level3: added
- lv3:enter_switch, http://bugs.freedesktop.org/show_bug.cgi?id=19773
- * rules/base.xml.in, symbols/ca: added ca(eng) for convenience,
- http://bugs.freedesktop.org/show_bug.cgi?id=19707
-
-2009-01-27 Sergey Udaltsov
-
- * symbols/typo: fixed text selection,
- http://bugs.freedesktop.org/show_bug.cgi?id=14022
- * symbols/be: added missing character,
- http://bugs.freedesktop.org/show_bug.cgi?id=19751
- * symbols/fr: fixed . on numpad, period->KP_Decimal,
- http://bugs.freedesktop.org/show_bug.cgi?id=19756
- * NEWS, configure.in: preparing 1.5
-
-2009-01-24 Sergey Udaltsov
-
- * rules/base.xml.in: added SV and US to the country list for latam,
- http://bugs.freedesktop.org/show_bug.cgi?id=19710
-
-2009-01-22 Sergey Udaltsov
-
- * symbols/fi: updated default Finnish variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=18742
-
-2009-01-13 Sergey Udaltsov
-
- * symbols/typo, rules/base.l1o_s.part, rules/base.l2o_s.part,
- rules/base.l3o_s.part, rules/base.l4o_s.part, rules/base.lo_s.part,
- rules/base.xml.in, symbols/Makefile.am: added (inactive so far)
- misc:typo option, first step to close
- https://bugs.freedesktop.org/show_bug.cgi?id=14022
-
-2009-01-12 Sergey Udaltsov
-
- * rules/Makefile.am, rules/merge.sh: fix the build (thanks to Oswald
- Buddenhagen)
-
-2009-01-11 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- option to use capslock as backspace,
- http://bugs.freedesktop.org/show_bug.cgi?id=19508
- * rules/base.xml.in, symbols/lt: removed unneeded variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=14096
- * rules/base.xml.in, symbols/fr: added Breton variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=19506
-
-2009-01-10 Sergey Udaltsov
-
- * rules/base.xml.in: More improvements(?) in descriptions, to make
- them shorter
-
-2009-01-08 Sergey Udaltsov
-
- * rules/base.xml.in: slightly reorganized descriptions for the group
- related to switchers
-
-2009-01-06 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/es, symbols/latam: added dead tilde
- variants, http://bugs.freedesktop.org/show_bug.cgi?id=12568
- * rules/base.xml.in, rules/compat/variantRename.lst, symbols/in,
- symbols/pk: updated Urdu variants,
- https://bugs.freedesktop.org/show_bug.cgi?id=8091
-
-2009-01-03 Sergey Udaltsov
-
- * rules/compat/ln_s.sh, rules/compat/ml1_s.sh: fixed compat layout
- renaming involving variants on replacement, part of the fix for
- http://bugs.freedesktop.org/show_bug.cgi?id=8452
-
-2008-12-30 Sergey Udaltsov
-
- * symbols/fi: updated 2 mappings according to the new standard,
- http://bugs.freedesktop.org/show_bug.cgi?id=18742
-
-2008-12-29 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/inet: added compal fl90,
- http://bugs.freedesktop.org/show_bug.cgi?id=15820
- * rules/base.m_s.part, rules/base.xml.in: added btc9116u model,
- http://bugs.freedesktop.org/show_bug.cgi?id=15871
- * symbols/gb: fixed gb dvorak,
- http://bugs.freedesktop.org/show_bug.cgi?id=18244
- * symbols/us: removed explicit CAPS mapping,
- http://bugs.freedesktop.org/show_bug.cgi?id=18320
-
-2008-12-28 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/de: updated neo variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=19308
-
-2008-12-26 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.m_s.part, symbols/inet: using
- acpi_common wherever possible, dropping (aliasing) unneeded models
-
-2008-12-25 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
- chicony0420 model, http://bugs.freedesktop.org/show_bug.cgi?id=15813
- * symbols/inet: updated cymotionlinux model,
- http://bugs.freedesktop.org/show_bug.cgi?id=15783
-
-2008-12-24 Sergey Udaltsov
-
- * symbols/inet: consolidated a lot of mappings into nav_common
-
-2008-12-21 Sergey Udaltsov
-
- * docs/README.enhancing: fixing the location of XKB proto docs,
- http://bugs.freedesktop.org/show_bug.cgi?id=9764
- * rules/base.xml.in, symbols/be: added oss variants,
- http://bugs.freedesktop.org/show_bug.cgi?id=8854
- * rules/base.m_s.part, rules/base.xml.in: added microsoftccurve2k
- model http://bugs.freedesktop.org/show_bug.cgi?id=9772
- * symbols/inet: changing globally XF86Refresh to XF86Reload,
- http://bugs.freedesktop.org/show_bug.cgi?id=10751
- * COPYING: added missing copyright notices,
- http://bugs.freedesktop.org/show_bug.cgi?id=11095
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added model
- unitek_kb1925, http://bugs.freedesktop.org/show_bug.cgi?id=11579
-
-2008-12-18 Sergey Udaltsov
-
- * keycodes/macintosh, rules/base.m_k.part, rules/base.o_k.part:
- dropped the goodmap and badmap keycodes for apple - needed for a very
- old kernels only. http://bugs.freedesktop.org/show_bug.cgi?id=9095
-
-2008-12-17 Sergey Udaltsov
-
- * symbols/capslock, symbols/compose, symbols/ctrl: fix lock modifier
- for jp, making "CAPS" replace key,
- http://bugs.freedesktop.org/show_bug.cgi?id=8805
-
-2008-12-15 Sergey Udaltsov
-
- * symbols/ru: added Kalmyk variant, thanks to Anatoly Mironov and
- others
-
-2008-12-12 Sergey Udaltsov
-
- * symbols/fr: fixed bepo variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=17821
- * symbols/ara: restoring presentation forms,
- http://bugs.freedesktop.org/show_bug.cgi?id=18833
- * rules/base.xml.in, rules/base.m_s.part: added targa_v811 model,
- https://bugs.freedesktop.org/show_bug.cgi?id=5722
-
-2008-11-30 Sergey Udaltsov
-
- * symbols/gr: added ralt switch to Greek default layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=18819
- * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
- win_menu_switch option,
- http://bugs.freedesktop.org/show_bug.cgi?id=18557
-
-2008-11-29 Sergey Udaltsov
-
- * compat/level5: finally using Level5 characters,
- https://bugs.freedesktop.org/show_bug.cgi?id=4411
- * rules/base.xml.in: generalized Fujitsu-Siemens Amilo laptops, also
- closing http://bugs.freedesktop.org/show_bug.cgi?id=5694
- * rules/base.o_s.part, rules/base.xml.in, symbols/epo: added a couple
- of Esperanto options,
- http://bugs.freedesktop.org/show_bug.cgi?id=18142
-
-2008-11-27 Sergey Udaltsov
-
- * ChangeLog, rules/base.lists.part, rules/base.xml.in, symbols/inet:
- added cymotion expert model,
- http://bugs.freedesktop.org/show_bug.cgi?id=18718
-
-2008-11-26 Sergey Udaltsov
-
- * keycodes/evdev: fixed ABNT2 keycodes,
- http://bugs.freedesktop.org/show_bug.cgi?id=18712
- * keycodes/amiga, keycodes/ataritt, keycodes/fujitsu,
- keycodes/macintosh, keycodes/sgi_vndr/indigo, keycodes/sgi_vndr/indy,
- keycodes/sun, keycodes/xfree98: set keycode ranges 8-255, universally,
- https://bugs.freedesktop.org/show_bug.cgi?id=12538
-
-2008-11-22 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
- grp(alt_space_toggle) option,
- http://bugs.freedesktop.org/show_bug.cgi?id=15772
- * symbols/ca, symbols/et, symbols/tr: small OLPC fixes,
- http://bugs.freedesktop.org/show_bug.cgi?id=18645
-
-2008-11-20 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added HP dv5
- keyboard, thanks to Giuseppe Bilotta
-
-2008-11-18 Sergey Udaltsov
-
- * symbols/it: fixing it(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=18565
-
-2008-11-08 Sergey Udaltsov
-
- * symbols/inet: using inet(acpi) wherever possible, fixing apple
- section (thanks to Otavio Salvador)
- * symbols/pl: missing mappings, thanks to Otavio and Debian
-
-2008-11-06 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- capslock(escape)
-
-2008-10-18 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/keypad,
- symbols/kpdl: added 2 keypad options (hex and atm), also kpdl:semi,
- http://bugs.freedesktop.org/show_bug.cgi?id=17110
- * rules/base.xml.in, symbols/de: added de(qwerty)
-
-2008-10-14 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/keypad: removed
- keypad:phone_hex option, to be replaced with newer one
- http://bugs.freedesktop.org/show_bug.cgi?id=17110
-
-2008-10-13 Sergey Udaltsov
-
- * keycodes/evdev: fixed keycode comment from Peter Hutterer
- * rules/base.xml.in, symbols/tj: cleaning the mess with tj variants,
- http://bugs.freedesktop.org/show_bug.cgi?id=17975
-
-2008-10-11 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/de: added Lower Sorbian variants,
- http://bugs.freedesktop.org/show_bug.cgi?id=17855
- * rules/base.xml.in, symbols/tj: added 2 new variants, std and legacy,
- http://bugs.freedesktop.org/show_bug.cgi?id=17975
- * rules/base.o_t.part, rules/base.xml.in, types/numpad: added
- numpad(shift3) option,
- http://bugs.freedesktop.org/show_bug.cgi?id=17110
-
-2008-10-03 Sergey Udaltsov
-
- * symbols/ru: fix typewriter layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=17881
-
-2008-09-30 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/altwin: added
- Mac-like modifiers positioning,
- http://bugs.freedesktop.org/show_bug.cgi?id=15655
- * NEWS, configure.in: preparing 1.4
-
-2008-09-26 Sergey Udaltsov
-
- * symbols/is: fixed AC11 mapping,
- http://bugs.freedesktop.org/show_bug.cgi?id=17786
-
-2008-09-24 Sergey Udaltsov
-
- * rules/base.xml.in: all descriptions are prefixed with underscore,
- to make them translatable,
- http://bugs.freedesktop.org/show_bug.cgi?id=17587
-
-2008-09-19 Sergey Udaltsov
-
- * keycodes/evdev, symbols/inet: fixed evdev for abnt2 and jp106
- http://bugs.freedesktop.org/show_bug.cgi?id=17656
-
-2008-09-18 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in: more mismatches fixed,
- http://bugs.freedesktop.org/show_bug.cgi?id=17622
-
-2008-09-17 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in: fixed mismatch,
- http://bugs.freedesktop.org/show_bug.cgi?id=17622
-
-2008-09-15 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock,
- symbols/cz: added cz(ucw) and couple of options,
- http://bugs.freedesktop.org/show_bug.cgi?id=17587
- * rules/base.xml.in, symbols/gr: updated greek variants,
- http://bugs.freedesktop.org/show_bug.cgi?id=17459
-
-2008-09-12 Sergey Udaltsov
-
- * geometry/pc: added another pc geometry, with L-shaped Enter,
- http://bugs.freedesktop.org/show_bug.cgi?id=17513
-
-2008-09-10 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added model
- sven303, http://bugs.freedesktop.org/show_bug.cgi?id=17518
-
-2008-09-02 Sergey Udaltsov
-
- * symbols/inet: fixed fscaa1667g,
- http://bugs.freedesktop.org/show_bug.cgi?id=17389
- * symbols/fr: fixed invalid keysym,
- http://bugs.freedesktop.org/show_bug.cgi?id=17388
- * rules/base.xml.in: some fixes for minor issues
- * rules/base.xml.in, symbols/gb: added gb(dvorakukp),
- http://bugs.freedesktop.org/show_bug.cgi?id=17370
-
-2008-08-16 Sergey Udaltsov
-
- * rules/evdev.m_k.part, rules/evdev.m_s.part, keycodes/evdev,
- po/POTFILES.in, po/xkeyboard-config.pot, rules/Makefile.am: implement
- special ruleset for evdev driver
- * added missing chars to Gurmukhi,
- http://bugs.freedesktop.org/show_bug.cgi?id=17163
-
-2008-08-06 Sergey Udaltsov
-
- * compat/Makefile.am, geometry/Makefile.am, keycodes/Makefile.am,
- keymap/Makefile.am, rules/compat/Makefile.am, semantics/Makefile.am,
- symbols/Makefile.am, types/Makefile.am, xkbrules.am: improving the
- build, http://bugs.freedesktop.org/show_bug.cgi?id=17008
-
-2008-08-03 Sergey Udaltsov
-
- * rules/compat/variantRename.lst: fixing compat rules for Romania,
- http://bugs.freedesktop.org/show_bug.cgi?id=16872
- * symbols/mt: fixed Maltese layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=16966
- * symbols/fr: fixed fr(dvorak), making it legal
- http://bugs.freedesktop.org/show_bug.cgi?id=15407
-
-2008-07-28 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
- ibm_spacesaver model,
- http://bugs.freedesktop.org/show_bug.cgi?id=16767
-
-2008-07-22 Sergey Udaltsov
-
- * rules/base.xml.in: fixed typo,
- http://bugs.freedesktop.org/show_bug.cgi?id=16806
-
-2008-07-20 Sergey Udaltsov
-
- * symbols/inet: fixed typo,
- http://bugs.freedesktop.org/show_bug.cgi?id=16752
-
-2008-07-08 Sergey Udaltsov
-
- * symbols/us: fixing us(mac),
- https://bugs.freedesktop.org/show_bug.cgi?id=16641
-
-2008-07-01 Sergey Udaltsov
-
- * symbols/is, rules/base.xml.in: added is(dvorak),
- https://bugs.freedesktop.org/show_bug.cgi?id=16557
-
-2008-06-27 Sergey Udaltsov
-
- * symbols/level5: using normal level5 keysyms
- * rules/compat/ln_s.sh, rules/compat/lnv_s.sh, rules/compat/ml1_s.sh,
- rules/compat/ml1v1_s.sh, rules/compat/ml1v_s.sh, rules/compat/ml_s.sh,
- rules/compat/mlv_s.sh: fixed build process, thanks to Oswald
- Buddenhagen
-
-2008-06-22 Sergey Udaltsov
-
- * symbols/tj: sorted and fixed tj layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=16448
-
-2008-06-12 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/keypad: added
- keypad:phone_hex, http://bugs.freedesktop.org/show_bug.cgi?id=16298
-
-2008-06-09 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/us: added us(chr),
- http://bugs.freedesktop.org/show_bug.cgi?id=16283
-
-2008-06-06 Sergey Udaltsov
-
- * geometry/pc: removed unneeded space,
- http://bugs.freedesktop.org/show_bug.cgi?id=16258
-
-2008-06-04 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ru: added ru(sah),
- http://bugs.freedesktop.org/show_bug.cgi?id=15872
-
-2008-06-01 Sergey Udaltsov
-
- * rules/base.xml.in, rules/base.lists.part, symbols/inet: added
- microsoft7000, http://bugs.freedesktop.org/show_bug.cgi?id=16087
- * keycodes/xfree86, rules/base.m_g.part, rules/base.m_k.part,
- rules/base.m_s.part, rules/base.xml.in: added model thinkpadz60,
- http://bugs.freedesktop.org/show_bug.cgi?id=15999
-
-2008-05-31 Sergey Udaltsov
-
- * symbols/gb, symbols/hu: fixed utf8
-
-2008-05-31 Sergey Udaltsov
-
- * symbols/ru: fixed some includes, from common to winkeys (broken in
- previous release)
-
-2008-05-30 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ca: added ca(kut),
- http://bugs.freedesktop.org/show_bug.cgi?id=16048
-
-2008-05-27 Sergey Udaltsov
-
- * symbols/inet: WWW is mapped to I02, because of some changes in
- kernel or X server (on nx9020),
- http://bugs.freedesktop.org/show_bug.cgi?id=7310
- * symbols/us: fixed one-handed dvorak variants (dropped second group),
- http://bugs.freedesktop.org/show_bug.cgi?id=5659
- * symbols/fi: returned nbsp to 3rd level of space,
- http://bugs.freedesktop.org/show_bug.cgi?id=12764
- * configure.in, NEWS: preparing 1.3
-
-2008-05-12 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ro: changed default Romanian variant to
- the right one, http://bugs.freedesktop.org/show_bug.cgi?id=13277
-
-2008-05-09 Sergey Udaltsov
-
- * rules/compat/variantRename.lst, symbols/ru: default variant is
- winkeys (till Daniel fixes xkbcomp)
- * symbols/ua: small fix, from Andriy
-
-2008-05-01 Sergey Udaltsov
-
- * po/POTFILES.in, rules/Makefile.am, rules/sgi*, rules/sun*: dropping
- legacy unsupported rules. Confirmed with Alan Coopersmith (Sun
- Microsystems)
-
-2008-04-30 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/us: added us(dvp),
- http://bugs.freedesktop.org/show_bug.cgi?id=15727
-
-2008-04-29 Sergey Udaltsov
-
- * symbols/ca: fixed ca(shs),
- http://bugs.freedesktop.org/show_bug.cgi?id=15756
-
-2008-04-23 Sergey Udaltsov
-
- * symbols/es: revert broken idea about dead tilde,
- http://bugs.freedesktop.org/show_bug.cgi?id=9763
- * symbols/latam: revert broken idea about dead tilde,
- http://bugs.freedesktop.org/show_bug.cgi?id=12568
-
-2008-04-22 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/fr, symbols/nbsp,
- types/pc: options for nonbreakspace handling,
- http://bugs.freedesktop.org/show_bug.cgi?id=9529
- * symbols/fi: dropping bad nbsp mapping,
- http://bugs.freedesktop.org/show_bug.cgi?id=12764
-
-2008-04-21 Sergey Udaltsov
-
- * rules/base.xml.in: fixed some ISO codes
-
-2008-04-19 Sergey Udaltsov
-
- * symbols/ru, rules/base.xml.in, rules/compat/variantRename.lst:
- changed ru(winkeys) to default
- * rules/base.xml.in: put a lot of country/language info in
-
-2008-04-12 Sergey Udaltsov
-
- * symbols/it: fixed it(geo),
- https://bugs.freedesktop.org/show_bug.cgi?id=15058
-
-2008-04-07 Sergey Udaltsov
-
- * symbols/group, rules/base.xml.in, rules/base.o_s.part: added
- group(shift_caps_switch)
- http://bugs.freedesktop.org/show_bug.cgi?id=15383
-
-2008-04-01 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/gb: added gb(colemak),
- http://bugs.freedesktop.org/show_bug.cgi?id=15303
-
-2008-03-30 Sergey Udaltsov
-
- * symbols/gn, symbols/ng: fixed unicode sequences,
- http://bugs.freedesktop.org/show_bug.cgi?id=15273
- * rules/base.xml.in, symbols/ua: added ua(homophonic),
- http://bugs.freedesktop.org/show_bug.cgi?id=15240
-
-2008-03-28 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/compose: added
- compose:102, http://bugs.freedesktop.org/show_bug.cgi?id=15246
-
-2008-03-22 Sergey Udaltsov
-
- * symbols/fr: fixed fr(oss_nodeadkeys),
- http://bugs.freedesktop.org/show_bug.cgi?id=15140
-
-2008-03-06 Sergey Udaltsov
-
- * rules/base.lists.part, symbols/ca, symbols/fr: added ca(olpc),
- removed fr(olpc), http://bugs.freedesktop.org/show_bug.cgi?id=14749
-
-2008-03-03 Sergey Udaltsov
-
- * rules/base.lists.part, symbols/fr: added fr(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14749
- * symbols/lv: fixed lv accented characters,
- http://bugs.freedesktop.org/show_bug.cgi?id=14765
- * rules/base.lists.part, symbols/it: added it(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14793
-
-2008-03-01 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.m_s.part, rules/base.xml.in,
- symbols/inet: reorganizing keyboard in symbols/inet. Some models are
- now implemented as "virtual" (by rules only).
- http://bugs.freedesktop.org/show_bug.cgi?id=14665
-
-2008-02-28 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/in: added in(jhelum), other indian fixes,
- http://bugs.freedesktop.org/show_bug.cgi?id=14595
- * symbols/jp: small fix,
- http://bugs.freedesktop.org/show_bug.cgi?id=8648
-
-2008-02-16 Sergey Udaltsov
-
- * symbols/cz, symbols/sk: dropping KPDL mapping,
- http://bugs.freedesktop.org/show_bug.cgi?id=14479
-
-2008-02-12 Sergey Udaltsov
-
- * keycodes/sun, symbols/sun_vndr/us, rules/base.ml_s.part,
- rules/base.xml.in: sun type6 kbd,
- http://bugs.freedesktop.org/show_bug.cgi?id=13664
-
-2008-02-05 Sergey Udaltsov
-
- * symbols/af: fixed AE09 in af(olpc-ps),
- http://bugs.freedesktop.org/show_bug.cgi?id=14379
-
-2008-02-04 Sergey Udaltsov
-
- * symbols/kh, rules/base.lists.part: added kh(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14376
-
-2008-02-02 Sergey Udaltsov
-
- * symbols/lt, rules/base.xml.in: added lt(lekp) etc,
- http://bugs.freedesktop.org/show_bug.cgi?id=14096
-
-2008-01-31 Sergey Udaltsov
-
- * symbols/af, rules/base.xml.in, rules/base.lists.part: changing
- af(olpc-da) to af(olpc-fa),
- http://bugs.freedesktop.org/show_bug.cgi?id=14319
- * symbols/in: fixed space in in(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14224
-
-2008-01-30 Sergey Udaltsov
-
- * symbols/ca, rules/base.xml.in: adding ca(shs), closing
- http://bugs.freedesktop.org/show_bug.cgi?id=14308
- * symbols/mn: added mn(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14307
- * symbols/tr: fixed Turkish layouts,
- http://bugs.freedesktop.org/show_bug.cgi?id=14286
- * symbols/es, rules/base.xml.in: added es(ast),
- http://bugs.freedesktop.org/show_bug.cgi?id=14277
- * symbols/am, rules/base.lists.part: added am(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14226
- * symbols/af: fixed some keysyms,
- http://bugs.freedesktop.org/show_bug.cgi?id=14309
-
-2008-01-29 Sergey Udaltsov
-
- * NEWS, configure.in: preparing release 1.2
-
-2008-01-24 Sergey Udaltsov
-
- * symbols/af, symbols/ara, symbols/et, symbols/group, symbols/in,
- symbols/kz, symbols/np, symbols/pk, symbols/ru, symbols/th,
- symbols/us: separating group(olpc), closing
- http://bugs.freedesktop.org/show_bug.cgi?id=14225
-
-2008-01-21 Sergey Udaltsov
-
- * symbols/gr: Polytonic Greek: Use new keysyms for dead psili and
- dasia, http://bugs.freedesktop.org/show_bug.cgi?id=13275
-
-2008-01-11 Sergey Udaltsov
-
- * rules/base.lists.part, symbols/in: added in(olpc), by Bernardo
- Innocenti
-
-2008-01-07 Sergey Udaltsov
-
- * geometry/thinkpad, keycodes/xfree86, rules/base.lists.part,
- rules/base.m_g.part, rules/base.m_k.part, rules/base.xml.in,
- symbols/inet: added thinkpad60 model (with geometry),
- https://bugs.freedesktop.org/show_bug.cgi?id=13954
-
-2008-01-05 Sergey Udaltsov
-
- * symbols/us: add (left,right)singlequotemark to us(-altgr)-intl
- keymap, https://bugs.freedesktop.org/show_bug.cgi?id=13935
-
-2008-01-04 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.xml.in: adding BTC
- 6301URF, https://bugs.freedesktop.org/show_bug.cgi?id=13913
- * symbols/macintosh_vndr/fr: added nodeadkeys,
- https://bugs.freedesktop.org/show_bug.cgi?id=13934
-
-2008-01-03 Sergey Udaltsov
-
- * symbols/pl, rules/base.xml.in: added pl(ru_phonetic_dvorak),
- https://bugs.freedesktop.org/show_bug.cgi?id=13900
-
-2008-01-02 Sergey Udaltsov
-
- * symbols/ro, rules/base.xml.in: small fixes for Romanian visible
- strings from
- https://bugs.freedesktop.org/show_bug.cgi?id=13277
- * rules/base.xml.in, rules/compat/variantRename.lst, symbols/fr,
- symbols/ge: moving ge(azerty_tscapo) to fr(geo), since that layout is
- only used in France, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=13644
- * symbols/ara: remove presentation forms from Arabic layout,
- https://bugs.freedesktop.org/show_bug.cgi?id=13894
-
-2007-12-31 Sergey Udaltsov
-
- * symbols/ro, rules/base.xml.in, rules/compat/variantRename.lst:
- temporarily (partially) reverting
- https://bugs.freedesktop.org/show_bug.cgi?id=13277
-
-2007-12-27 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: adding xkb
- option caps:swapescape,
- https://bugs.freedesktop.org/show_bug.cgi?id=13824
-
-2007-12-26 Sergey Udaltsov
-
- * symbols/ee, rules/base.xml.in: adding ee(us), polishing eurosign
- usage in ee, https://bugs.freedesktop.org/show_bug.cgi?id=13799
-
-2007-12-25 Sergey Udaltsov
-
- * symbols/eurosign, rules/base.xml.in, rules/base.o_s.part: add
- eurosign(4)
-
-2007-12-23 Sergey Udaltsov
-
- * symbols/inet, rules/base.xml.in: add logiultrax model,
- https://bugs.freedesktop.org/show_bug.cgi?id=13028
- * symbols/me, rules/base.xml.in: use Latin as default Montenegro
- variant, https://bugs.freedesktop.org/show_bug.cgi?id=13777
- * symbols/inet, keycodes/evdev: Kill off the I211 key in evdev
-
-2007-12-17 Sergey Udaltsov
-
- * keycodes/sun, rules/base.m_k.part, rules/base.ml_s.part,
- symbols/sun_vndr/cs, symbols/sun_vndr/cz, symbols/sun_vndr/de,
- symbols/sun_vndr/dk, symbols/sun_vndr/fr, symbols/sun_vndr/gb,
- symbols/sun_vndr/gr, symbols/sun_vndr/it, symbols/sun_vndr/jp,
- symbols/sun_vndr/ko, symbols/sun_vndr/nl, symbols/sun_vndr/no,
- symbols/sun_vndr/pl, symbols/sun_vndr/ru, symbols/sun_vndr/sw,
- symbols/sun_vndr/tr, symbols/sun_vndr/tuv, symbols/sun_vndr/tw,
- symbols/sun_vndr/us: added sun type 6 support,
- https://bugs.freedesktop.org/show_bug.cgi?id=13664
-
-2007-12-10 Sergey Udaltsov
-
- * symbols/inet: fixed thinkpad,
- https://bugs.freedesktop.org/show_bug.cgi?id=13461
-
-2007-12-08 Sergey Udaltsov
-
- * symbols/inet, rules/base.xml.in, rules/base.lists.part: added
- fscaa1667g model, thanks to Matthew W. S. Bell
- * symbols/gr: updated greek symbols,
- https://bugs.freedesktop.org/show_bug.cgi?id=13570
-
-2007-11-30 Sergey Udaltsov
-
- * symbols/us: small olpc fix
- * symbols/inet: introducing nav_common and media_nav_common,
- https://bugs.freedesktop.org/show_bug.cgi?id=13461
-
-2007-11-21 Sergey Udaltsov
-
- * symbols/np, rules/base.lists.part: added np(olpc)
- * symbols/et, rules/base.lists.part: added et(olpc)
- * symbols/in: small fix in in(ben_probhat),
- https://bugs.freedesktop.org/show_bug.cgi?id=12038
-
-2007-11-20 Sergey Udaltsov
-
- * symbols/af, symbols/kz, symbols/ng, rules/base.xml.in: OLPC fixes
- from Bernardo
- * symbols/pk, rules/base.xml.in: fixing pk(ara) - it is not default
-
-2007-11-18 Sergey Udaltsov
-
- * symbols/ro, rules/base.xml.in, rules/compat/variantRename.lst:
- ro(comma), ro(academic) --> ro(cedilla), ro(std_cedilla),
- https://bugs.freedesktop.org/show_bug.cgi?id=13277
-
-2007-11-17 Sergey Udaltsov
-
- * symbols/ua, rules/base.xml.in: added ua(unicode)
-
-2007-11-15 Sergey Udaltsov
-
- * symbols/olpc, keycodes/es: small OLPC fixes
-
-2007-11-14 Sergey Udaltsov
-
- * symbols/inet, keycodes/evdev: revert #12203
- https://bugs.freedesktop.org/show_bug.cgi?id=12227
-
-2007-11-01 Sergey Udaltsov
-
- * symbols/fi, rules/base.xml.in: swapping fi(basic) and fi(kotoistus),
- https://bugs.freedesktop.org/show_bug.cgi?id=12764
-
-2007-10-28 Sergey Udaltsov
-
- * symbols/ara, symbols/us, symbols/es, symbols/us, symbols/ng: OLPC
- fixlets
-
-2007-10-23 Sergey Udaltsov
-
- * symbols/ru, rules/base.xml.in: added ru(kom),
- https://bugs.freedesktop.org/show_bug.cgi?id=12893
-
-2007-10-21 Sergey Udaltsov
-
- * symbols/us, rules/base.xml.in: added us(dvorak-intl),
- https://bugs.freedesktop.org/show_bug.cgi?id=12867
- * symbols/macintosh_vndr/dk: dk(macbookpro),
- https://bugs.freedesktop.org/show_bug.cgi?id=12716
-
-2007-10-19 Sergey Udaltsov
-
- * symbols/tr, rules/base.xml.in: added tr(intl),
- https://bugs.freedesktop.org/show_bug.cgi?id=12856
-
-2007-10-18 Sergey Udaltsov
-
- * geometry/pc, rules/base.xml.in, rules/compat/base.lists.part,
- symbols/br, symbols/pt: added some br and pt layouts,
- https://bugs.freedesktop.org/show_bug.cgi?id=12816
- * rules/base.xml.in symbols/dk: added dk(dvorak),
- https://bugs.freedesktop.org/show_bug.cgi?id=12837
-
-2007-10-13 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.xml.in: added diNovo
- Edge, https://bugs.freedesktop.org/show_bug.cgi?id=12789
-
-2007-10-10 Sergey Udaltsov
-
- * rules/base.xml.in, rules/base.m_g.part: added microsoftelite model,
- https://bugs.freedesktop.org/show_bug.cgi?id=12753
- * symbols/fi: fixed fi(kotoistus),
- https://bugs.freedesktop.org/show_bug.cgi?id=12764
-
-2007-10-09 Sergey Udaltsov
-
- * geometry/microsoft: added "elite" geometry,
- https://bugs.freedesktop.org/show_bug.cgi?id=12753
- * symbols/us: fix for olpc
-
-2007-10-07 Sergey Udaltsov
-
- * symbols/kz, rules/base.lists.part: added kz(olpc)
- * symbols/pk: fixed pk(olpc)
- * rules/base.xml.in: lost vendors,
- https://bugs.freedesktop.org/show_bug.cgi?id=12719
- * symbols/inet, rules/base.lists.part, rules/base.xml.in: added
- chicony0108 model,
- https://bugs.freedesktop.org/show_bug.cgi?id=6914
- * symbols/de, types/extra: SS hangling,
- https://bugs.freedesktop.org/show_bug.cgi?id=7642
-
-2007-10-04 Sergey Udaltsov
-
- * symbols/us: s/U.S. English/USA/
- * rules/base.o_s.part, rules/base.xml.in,
- rules/compat/layoutRename.lst, symbols/Makefile.am, symbols/cs,
- symbols/me, symbols/rs, symbols/ba, symbols/hr, symbols/si: splitting
- Serbia and Montenegro
- https://bugs.freedesktop.org/show_bug.cgi?id=12390
-
-2007-10-02 Sergey Udaltsov
-
- * symbols/inet: fixing dell inspiron,
- https://bugs.freedesktop.org/show_bug.cgi?id=12653
- * configure.in, rules/Makefile.am, po/ChangeLog: dropping translations
- from base.xml, let apps/libs use .gmo files instead
-
-2007-09-27 Sergey Udaltsov
-
- * symbols/shift, symbols/Makefile.am, rules/base.o_s.part: added
- shift:breaks_caps, https://bugs.freedesktop.org/show_bug.cgi?id=9546
-
-2007-09-26 Sergey Udaltsov
-
- * symbols/latam: no dead_tilde,
- https://bugs.freedesktop.org/show_bug.cgi?id=12568
- * rules/base.xml.in, symbols/in: added mal_lalitha, small fixes,
- https://bugs.freedesktop.org/show_bug.cgi?id=12426
- * rules/base.lists.part, rules/base.m_k.part, rules/base.ml_c.part,
- rules/base.ml_s.part, rules/base.xml.in, rules/merge.sh,
- symbols/Makefile.am, symbols/ara, symbols/br, symbols/es,
- symbols/group, symbols/inet, symbols/level3, symbols/ng, symbols/olpc,
- symbols/pk, symbols/ru, symbols/th, symbols/tr, symbols/us: massive
- patch from OLPC project
-
-2007-09-25 Sergey Udaltsov
-
- * NEWS, configure.in: preparing release 1.1
-
-2007-09-24 Sergey Udaltsov
-
- * symbols/inet: added extra key for nx9020
- https://bugs.freedesktop.org/show_bug.cgi?id=7310
-
-2007-09-14 Sergey Udaltsov
-
- * symbols/inet: small fixes in cymotionlinux,
- https://bugs.freedesktop.org/show_bug.cgi?id=7983
- * keycodes/evdev: fixed fake keycodes,
- https://bugs.freedesktop.org/show_bug.cgi?id=12202
-
-2007-09-05 Sergey Udaltsov
-
- * symbols/inet, geometry/dell, rules/base.m_g.part,
- rules/base.lists.part: adding dell precision m65,
- https://bugs.freedesktop.org/show_bug.cgi?id=7992
- * rules/base.m_g.part: fixed rules for the kinesis keyboard,
- https://bugs.freedesktop.org/show_bug.cgi?id=7991
-
-2007-09-04 Sergey Udaltsov
-
- * symbols/it, rules/base.xml.in: added strange one, it(geo),
- contributed by Vladimir Sichinava
-
-2007-09-02 Sergey Udaltsov
-
- * keycodes/evdev, symbols/inet: more evdev keycodes,
- https://bugs.freedesktop.org/show_bug.cgi?id=12227
- https://bugs.freedesktop.org/show_bug.cgi?id=12228
-
-2007-08-29 Sergey Udaltsov
-
- * keycodes/evdev: updated evdev keycodes,
- https://bugs.freedesktop.org/show_bug.cgi?id=12202
- * keycodes/xfree86, symbols/inet, symbols/pc: display switch &
- backlight control, https://bugs.freedesktop.org/show_bug.cgi?id=12203
- * keycodes/macintosh, rules/base.m_k.part, rules/base.xml.in: adding
- macintosh_hhk model,
- https://bugs.freedesktop.org/show_bug.cgi?id=12091
-
-2007-08-28 Sergey Udaltsov
-
- * symbols/group, symbols/jp, symbols/la, symbols/level3, symbols/pc,
- symbols/digital_vndr/pc, types/pc: renaming types, giving more
- sensible names
-
-2007-08-27 Sergey Udaltsov
-
- * keycodes/evdev: missing keycodes for evdev:
- https://bugs.freedesktop.org/show_bug.cgi?id=12167
-
-2007-08-26 Sergey Udaltsov
-
- * rules/compat/variantRename.lst: fixing dvorak layouts compat rule,
- https://bugs.freedesktop.org/show_bug.cgi?id=12115
-
-2007-08-24 Sergey Udaltsov
-
- * symbols/us: fixes typos in us(classmate-intl)
-
-2007-08-22 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/cn: adding Tibetan
- layouts, https://bugs.freedesktop.org/show_bug.cgi?id=12088
-
-2007-08-20 Sergey Udaltsov
-
- * symbols/gr: replacing combining keys with dead keys, temporary hack
- by James Cloos
-
-2007-08-19 Sergey Udaltsov
-
- * symbols/et: added missing dead "c" key
-
-2007-08-18 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.ml_s.part, rules/base.mlv_s.part,
- rules/base.xml.in, symbols/inet, symbols/us: added classmate model
- with specific variants,
- https://bugs.freedesktop.org/show_bug.cgi?id=11955
-
-2007-08-14 Sergey Udaltsov
-
- * symbols/inet, rules/base.xml.in: added asus_laptop,
- https://bugs.freedesktop.org/show_bug.cgi?id=11936
-
-2007-08-12 Sergey Udaltsov
-
- * symbols/ru: fixed ebreve in ru(ch),
- http://bugs.freedesktop.org/show_bug.cgi?id=11246
- * rules/base.xml.in: missing Romanian variants added,
- https://bugs.freedesktop.org/show_bug.cgi?id=11945
-
-2007-08-10 Sergey Udaltsov
-
- * symbols/br, rules/base.m_g.part, rules/base.ml1_s.part,
- rules/base.ml_g.part, rules/base.ml_s.part: Adding br(thinkpad),
- polishing rules a bit,
- https://bugs.freedesktop.org/show_bug.cgi?id=11908
-
-2007-08-07 Sergey Udaltsov
-
- * symbols/ara: Patch to Arabic keyboard layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=11867
-
-2007-08-03 Sergey Udaltsov
-
- * symbols/us, rules/base.xml.in: added us(altgr-intl), closing
- http://bugs.freedesktop.org/show_bug.cgi?id=11753
-
-2007-07-30 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.m_s.part,
- rules/base.xml.in: introduced media_common, some Dell/Logitech symbols
- are dead, compatibility rules created, Acer kbds consolidated,
- http://bugs.freedesktop.org/show_bug.cgi?id=11746
-
-2007-07-25 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.m_s.part,
- rules/base.xml.in: consolidating benq keyboards,
- https://bugs.freedesktop.org/show_bug.cgi?id=11713
-
-2007-07-24 Sergey Udaltsov
-
- * symbols/gn, symbols/Makefile.am, rules/base.xml.in: added Guinea,
- http://bugs.freedesktop.org/show_bug.cgi?id=11702
-
-2007-07-23 Sergey Udaltsov
-
- * symbols/cd: update Congolese,
- https://bugs.freedesktop.org/show_bug.cgi?id=5500
-
-2007-07-22 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.xml.in: adding
- logiex110 model, https://bugs.freedesktop.org/show_bug.cgi?id=11686
-
-2007-07-20 Sergey Udaltsov
-
- * symbols/gr: adding pound sign,
- https://bugs.freedesktop.org/show_bug.cgi?id=11608
-
-2007-07-16 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/be, symbols/keypad:
- modularized wang kbd,
- https://bugs.freedesktop.org/show_bug.cgi?id=8852
-
-2007-07-15 Sergey Udaltsov
-
- * symbols/kpdl, symbols/*, rules/base.xml.in, rules/base.o_s.part:
- introducing separate KPDL handling,
- https://bugs.freedesktop.org/show_bug.cgi?id=11611
-
-2007-07-12 Sergey Udaltsov
-
- * NEWS: preparing release 1.0
-
-2007-07-10 Sergey Udaltsov
-
- * geometry/hhk, rules/base.m_g.part, rules/base.xml.in,
- geometry/Makefile.am: adding hhk geometry,
- https://bugs.freedesktop.org/show_bug.cgi?id=11519
-
-2007-07-09 Sergey Udaltsov
-
- * symbols/de: fixed AE12, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11514
-
-2007-06-29 Sergey Udaltsov
-
- * symbols/lk: another fix from
- https://bugs.freedesktop.org/show_bug.cgi?id=11284
- * symbols/us, rules/base.xml.in: added us(colemak),
- https://bugs.freedesktop.org/show_bug.cgi?id=11416
-
-2007-06-25 Sergey Udaltsov
-
- * symbols/Makefile.am, symbols/braille, rules/base.xml.in: added
- Braille layout, https://bugs.freedesktop.org/show_bug.cgi?id=11356
-
-2007-06-18 Sergey Udaltsov
-
- * symbols/Makefile.am, symbols/et, rules/base.xml.in: added
- et(basic), part of the OLPC works
-
-2007-06-16 Sergey Udaltsov
-
- * symbols/lk: fixed Sinhala, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11284
-
-2007-06-15 Sergey Udaltsov
-
- * symbols/ru, rules/base.xml.in: added ru(cv_latin), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11246
-
-2007-06-13 Sergey Udaltsov
-
- * symbols/ru, rules/base.xml.in: added ru(cv), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11246
- * symbols/ge, rules/base.xml.in: added ge(os), again closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8092
- * symbols/ru, rules/base.xml.in: added ru(udm), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11257
-
-2007-06-07 Sergey Udaltsov
-
- * symbols/in, rules/base.xml.in: added Hindi phonetic,
- https://bugs.freedesktop.org/show_bug.cgi?id=11195
-
-2007-06-06 Sergey Udaltsov
-
- * rules/xfree98: fixed nec_vndr, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11176
-
-2007-05-26 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/jp: Add
- "NICOLA-F style Backspace" to "Japanese keyboard options", closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11064
-
-2007-05-14 Sergey Udaltsov
-
- * rules/base.xml.in, rules/xkb.dtd: introducing vendor into
- configItem
-
-2007-05-13 Sergey Udaltsov
-
- * symbols/il: replaced backslash with bar, reclosing
- https://bugs.freedesktop.org/show_bug.cgi?id=6375
-
-2007-05-02 Sergey Udaltsov
-
- * symbols/gr: using Unicode since it is more appropriate for polytonic
- Greek, https://bugs.freedesktop.org/show_bug.cgi?id=10824
-
-2007-04-30 Sergey Udaltsov
-
- * rules/base.xml.in: make descriptions less technical
-
-2007-04-29 Sergey Udaltsov
-
- * symbols/us: adding explicit BKSL, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10811
-
-2007-04-27 Sergey Udaltsov
-
- * geometry/microsoft: replacing non-defined AE00 with TLDE,
- http://bugzilla.gnome.org/show_bug.cgi?id=429907
-
-2007-04-24 Sergey Udaltsov
-
- * symbols/ma: fixing alt in Tifinagh, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10736
-
-2007-04-23 Sergey Udaltsov
-
- * geometry/pc: fix for abnt2, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10725
- * symbols/inet, rules/base.lists.part: adding missing logicdo, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10671
-
-2007-04-11 Sergey Udaltsov
-
- * symbols/ge, rules/base.xml.in: added/fixed a lot of Georgian
- layouts, closing https://bugs.freedesktop.org/show_bug.cgi?id=3332
-
-2007-04-05 Sergey Udaltsov
-
- * symbols/se, rules/base.xml.in: added se(svdvorak),
- https://bugs.freedesktop.org/show_bug.cgi?id=10424
-
-2007-04-03 Sergey Udaltsov
-
- * symbols/cd: fixed Congolese layout one more time,
- https://bugs.freedesktop.org/show_bug.cgi?id=5500
-
-2007-04-01 Sergey Udaltsov
-
- * symbols/cd: fixed Congolese layout,
- https://bugs.freedesktop.org/show_bug.cgi?id=5500
-
-2007-03-29 Sergey Udaltsov
-
- * configure.in: improved xkb_base calculation, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10435
-
-2007-03-13 Sergey Udaltsov
-
- * configure.in: added Korean translation,
- https://bugs.freedesktop.org/show_bug.cgi?id=10269
- * rules/base.xml.in: s/descr/_descr/g, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10270
-
-2007-03-06 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/us: added us(euro), after a very hot
- discussion in the maillist
-
-2007-02-26 Sergey Udaltsov
-
- * symbols/inet: fixed broken symbol, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10103
- * compat/misc: fixing copy/paste bug, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10104
-
-2007-02-25 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/uz: fixed Uz layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10091
- * symbols/us: added French oe character to us(intl), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10087
-
-2007-02-12 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/ma: added Tifinagh
- layouts, closing http://bugs.freedesktop.org/show_bug.cgi?id=9950
-
-2007-02-03 Sergey Udaltsov
-
- * rules/base.ml_g.part, rules/HDR, rules/Makefile.am,
- rules/base.m_g.part: added (model, layout->geometry) section for
- thinkpad, https://bugs.freedesktop.org/show_bug.cgi?id=9864
- * symbols/macintosh_vndr/fr: updated French layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9865
-
-2007-01-27 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part: adding thinkpad media keys,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=9779
-
-2007-01-26 Sergey Udaltsov
-
- * symbols/es: s/asciitilde/dead_tilde in spanish, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9763
-
-2007-01-25 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/am: adding am(phonetic-alt), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9018
-
-2007-01-11 Sergey Udaltsov
-
- * symbols/nl, rules/base.xml.in: added nl(std), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9603
- * symbols/epo, rules/base.xml.in: added epo(legacy), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9556
-
-2007-01-04 Sergey Udaltsov
-
- * symbols/ir: settling another licensing issue,
- https://bugs.freedesktop.org/show_bug.cgi?id=9541
-
-2007-01-04 Sergey Udaltsov
-
- * rules/base.xml.in, rules/base.o_s.part, symbols/ca, symbols/fr,
- symbols/nbsp: adding more nbsp options, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9529
-
-2007-01-02 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/pc: getting rid of stupid "default"
- altwin options, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9470
-
-2006-12-19 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, rules/sun.xml.in,
- symbols/level3: adding lv3:ralt_alt, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9070
-
-2006-12-11 Sergey Udaltsov
-
- * configure.in: getting rid of bashisms, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9244
- * symbols/fi: s/NoSymbol/VoidSymbol/, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9239
-
-2006-12-07 Sergey Udaltsov
-
- * Makefile.am, rules/Makefile.am, xkbrules.am: getting rid of
- gmakisms, closing https://bugs.freedesktop.org/show_bug.cgi?id=9245
- * Makefile.am: dropping install-compiled target, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9246
-
-2006-11-20 Sergey Udaltsov
-
- * symbols/br, keycodes/xfree86: making abnt2 more compatible with
- other keyboards, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4910
- * rules/base.m_k.part: dropping the special (and stupid) abnt2 rule,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=9097
-
-2006-11-19 Sergey Udaltsov
-
- * symbols/il, rules/base.xml.in: added il(biblical), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9002
-
-2006-11-17 Sergey Udaltsov
-
- * symbols/us: the backslash/bar definition in the us dvorak variant,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=9061
- * symbols/ir: removed problematic copyright notice, with permission of
- Behnam Esfahbod, https://bugs.freedesktop.org/show_bug.cgi?id=4102
-
-2006-11-14 Sergey Udaltsov
-
- * symbols/altwin: undo invalid Alt mapping done in
- https://bugs.freedesktop.org/show_bug.cgi?id=8996
-
-2006-11-12 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/altwin: adding
- ctrl_win, closing https://bugs.freedesktop.org/show_bug.cgi?id=8996
-
-2006-11-06 Sergey Udaltsov
-
- * rules/sun.xml.in, rules/Makefile.am, po/POTFILE.in: Added directory
- for sun rules, closing
- http://bugzilla.gnome.org/show_bug.cgi?id=137294
-
-2006-11-02 Sergey Udaltsov
-
- * symbols/fr: some fixes for alternative layouts, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8853
- * symbols/fr, rules/base.xml.in: new fr(dvorak*) variants, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8728
-
-2006-10-28 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
- logitech_g15 model, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8803
- * symbols/jp: added LCTL definition,
- https://bugs.freedesktop.org/show_bug.cgi?id=8805
-
-2006-10-26 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added more
- Dell keyboards, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8761
-
-2006-10-18 Sergey Udaltsov
-
- * rules/base.lists.part, symbols/macintosh_vndr/Makefile.am,
- symbols/macintosh_vndr/dk, symbols/macintosh_vndr/es,
- symbols/macintosh_vndr/it, symbols/macintosh_vndr/latam,
- symbols/macintosh_vndr/no, symbols/macintosh_vndr/pt,
- symbols/macintosh_vndr/se: missed part from
- https://bugs.freedesktop.org/show_bug.cgi?id=1576
- * rules/base.xml.in, symbols/jp: adding new Japanese layout, changing
- latin to 106, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8648
-
-2006-10-17 Sergey Udaltsov
-
- * symbols/macintosh_vndr/dk, symbols/macintosh_vndr/us: adding euro
- sign to mac us and dk, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8682#add_comment
-
-2006-10-16 Sergey Udaltsov
-
- * rules/base.m_k.part, rules/base.xml.in, keycodes/Makefile.am,
- keycodes/powerpcps2: removing obsolete powerpcps2 model. Closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8659
- * rules/base.o_s.part, rules/base.xml.in, symbols/group: adding
- grp:lctrl_lshift_toggle, contributed by Alexey Morozov
- <morozov@gorodok.net>
- * symbols/macintosh_vndr/us: Fix <BKSP> in symbols/macintosh_vndr/us,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=8668
- * symbols/level3: assigning mods to keycodes (reverding earlier wrong
- fix), closing https://bugs.freedesktop.org/show_bug.cgi?id=8670
-
-2006-10-13 Sergey Udaltsov
-
- * xkbrules.am: ability to create .dir files when srcdir != objdir,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=8629
-
-2006-10-12 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.xml.in: added BenQ
- X-730, thanks to Jean-Marc Spaggiari
-
-2006-10-11 Sergey Udaltsov
-
- * symbols/af, symbols/ba, symbols/hr, symbols/kr, symbols/nbsp,
- symbols/ng, symbols/si, symbols/za: addind missing cvs keyword
- XKeyboardConfig
- * rules/base.ml_s.part, rules/base.xml.in, symbols/jp: normalizing
- Japanese rules/variants, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8503
-
-2006-10-10 Sergey Udaltsov
-
- * symbols/in: fixed Devangari (default) layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4949
- * configure.in: removing hardcoded prefix, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8448
- * symbols/it, added EuroSign to italian mac layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=1576
-
-2006-10-09 Sergey Udaltsov
-
- * symbols/inet,rules/base.xml.in: adding benqa800 model, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8574
-
-2006-10-09 Sergey Udaltsov
-
- * NEWS, configure.in: preparing 0.9
-
-2006-10-09 Sergey Udaltsov
-
- * tests/*: tests now run alphabetically, a bit of xslt tweaking
- * symbols/altwin: Alt keys should be mapped on two shift levels,
- undoing previous fix, as requested in
- https://bugs.freedesktop.org/show_bug.cgi?id=8571
- * symbols/level3: mapping Mod5 to keycode rather than to keysym,
- hopefully fixing https://bugs.freedesktop.org/show_bug.cgi?id=8572
- * symbols/us,symbols/latin: fixing quotes, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8122
-
-2006-10-07 Sergey Udaltsov
-
- * types/complete, types/default: putting "numpad" after "extra"
- hopefully fixes https://bugs.freedesktop.org/show_bug.cgi?id=8402
-
-2006-10-04 Sergey Udaltsov
-
- * symbols/fi: s/micron/dead_micron, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8494
-
-2006-10-03 Sergey Udaltsov
-
- * symbols/macintosh_vndr/gb, symbols/gb: adding missing Euro
- character, closing https://bugs.freedesktop.org/show_bug.cgi?id=5227
- * symbols/bt, symbols/fr, symbols/np: fixing typos, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8495
- * symbols/ch, symbols/de, symbols/dk, symbols/es, symbols/no,
- symbols/pt, symbols/se, symbols/us: optimized mac variants, overwrite
- old de and ch mac variants, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8491
-
-2006-10-01 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/ng: added Nigerian
- layouts, closing https://bugs.freedesktop.org/show_bug.cgi?id=8467
- * symbols/dk, symbols/es, symbols/fi, symbols/fr, symbols/gb,
- symbols/is, symbols/it, symbols/nl, symbols/no, symbols/pt,
- symbols/se, symbols/us, rules/base.xml.in: adding mac variants,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=8465
-
-2006-09-30 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/Makefile.am,
- symbols/nbsp: adding nbsp:* options, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8451
-
-2006-09-29 Sergey Udaltsov
-
- * rules/base.xml.in: added keypad:* options, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8240
-
-2006-09-28 Sergey Udaltsov
-
- * geometry/thinkpad: fix for geometry, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8419
-
-2006-09-24 Sergey Udaltsov
-
- * symbols/am, rules/base.xml.in: added am(eastern), am(western),
- am(eastern-alt), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8404
- * rules/base.ml_s.part: macbooks should use the vendor symbols, if
- possible, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8385
- * rules/base.o_s.part, rules/base.xml.in, symbols/fr, symbols/keypad:
- added more French variants, new options, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8240
-
-2006-09-18 Sergey Udaltsov
-
- * keycodes/macintosh, rules/HDR, rules/Makefile.am,
- rules/base.m_k.part, rules/base.o_k.part, rules/base.xml.in: split
- "good" and "bad" apple keycodes, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8242
-
- * rules/base.lists.part, rules/base.m_s.part, symbols/inet,
- symbols/level3: lv3:enter_switch added, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8324
-
- * symbols/ara: added ara(buckwalter), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8198
-
- * symbols/in: fixed layout, Unicode-related bug, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8203
-
- * geometry/pc, rules/base.ml1_s.part, rules/base.ml_s.part,
- rules/compat/ml1_s.sh, rules/compat/ml1v1_s.sh,
- rules/compat/ml1v_s.sh, rules/compat/ml_s.sh, rules/compat/mlv_s.sh,
- symbols/pc: getting rid of pc101/102/104 legacy. Breaking XkbSymbols
- again, https://bugs.freedesktop.org/show_bug.cgi?id=8321
-
-2006-09-17 Sergey Udaltsov
-
- symbols/keypad, symbols/pc, symbols/us, symbols/macintosh_vndr/*,
- rules/base.m_t.part, rules/base.ml1_s.part, rules/base.ml_s.part,
- rules/base.o_t.part, rules/base.xml.in, rules/merge.sh: reorganized
- Mac stuff, thanks to Denis,
- https://bugs.freedesktop.org/show_bug.cgi?id=8280
-
- * symbols/pc: modularized numpad stuff,
- https://bugs.freedesktop.org/show_bug.cgi?id=8312
-
-2006-09-10 Sergey Udaltsov
-
- rules/base.list.part, symbols/inet: added 2 models, thanks to
- Valery V. Inozemtsev
-
-2006-09-06 Sergey Udaltsov
-
- * rules/altwin: mapping LALT to Mod4 modifier,
- https://bugs.freedesktop.org/show_bug.cgi?id=8068
-
-2006-09-05 Sergey Udaltsov
-
- * rules/base.lists.part: adding missing kbds, reordering a bit
- https://bugs.freedesktop.org/show_bug.cgi?id=7816
-
- * geometry/ibm_vnd, configure.in, rules/base.m_g.part: getting rid of
- ibm_vndr geometry, fixing rules,
- https://bugs.freedesktop.org/show_bug.cgi?id=7990
-
- * symbols/gb: s/ralt_switch/ralt_switch_multikey
- https://bugs.freedesktop.org/show_bug.cgi?id=7674
-
- * rules/base.mlv_s.part: fixing mac rule for nodeadkeys,
- https://bugs.freedesktop.org/show_bug.cgi?id=8123
-
- * rules/base.ml_s.part: s/old_macintosh/macintosh_old/g,
- https://bugs.freedesktop.org/show_bug.cgi?id=8128
-
-2006-09-04 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.m_g.part, rules/base.m_k.part,
- rules/base.m_s.part, rules/base.ml1_s.part, rules/base.ml_s.part,
- rules/base.mlv_s.part: fixing lists,
- https://bugs.freedesktop.org/show_bug.cgi?id=7817
-
- * symbols/cd, symbols/gr, symbols/il, symbols/jp, symbols/la,
- symbols/lk, symbols/ru, symbols/ca: fixing types, on per-group basis,
- https://bugs.freedesktop.org/show_bug.cgi?id=8121
-
- * symbols/level3: adding level3:ralt_switch_multikey,
- https://bugs.freedesktop.org/show_bug.cgi?id=7674
-
-2006-09-03 Sergey Udaltsov
-
- * symbols/vn: getting rid of digits (1 and 2 shift levels),
- https://bugs.freedesktop.org/show_bug.cgi?id=7807
-
- * rules/base.xml.in: s/guillemot/guillemet/, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8116
-
-2006-09-02 Sergey Udaltsov
-
- * symbols/lt, rules/base.xml.in: added lt(ibm)
- https://bugs.freedesktop.org/show_bug.cgi?id=3841
-
- * symbols/hr: reverted Croatian
- https://bugs.freedesktop.org/show_bug.cgi?id=8019
-
-2006-09-01 Sergey Udaltsov
-
- * symbols/ru, rules/base.xml.in: added Ossetian, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8092
-
- * symbols/ir, symbols/iq, rules/base.xml.in: added Kurdish Arabic-Latin
-
-2006-08-31 Sergey Udaltsov
-
- * geometry/macintosh, keycodes/macintosh, keycodes/xfree86,
- rules/base.lists.part, rules/base.m_g.part, rules/base.m_k.part,
- rules/base.m_s.part, rules/base.ml_s.part, rules/base.xml.in,
- symbols/inet: Added Macbook stuff, partially closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8068
-
- * symbols/group, rules/base.o_s.part: added group:alt_caps_toggle
- https://bugs.freedesktop.org/show_bug.cgi?id=8047
-
-2006-08-02 Sergey Udaltsov
-
- * symbols/inet, keycodes/evdev: updated evdev
- https://bugs.freedesktop.org/show_bug.cgi?id=7631
-
-2006-07-30 Sergey Udaltsov
-
- * symbols/pl: added pl(csb)
- https://bugs.freedesktop.org/show_bug.cgi?id=7693
-
-2006-07-29 Sergey Udaltsov
-
- * symbols/bt: fixed Bhutan
- https://bugs.freedesktop.org/show_bug.cgi?id=7556
-
- * symbols/us: added dvorak-classic, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7503
-
- * symbols/inet: added acer_c300, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6361
-
-2006-07-29 Sergey Udaltsov
-
- * symbols/lk: updated Sinhala, thanks to Harshula
-
-2006-07-10 Sergey Udaltsov
-
- * symbols/de: added Mac variants, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6671
-
-2006-07-04 Sergey Udaltsov
-
- * symbols/ch: fixed KPDL in ch(de_mac), patch from
- https://bugs.freedesktop.org/show_bug.cgi?id=6960
-
-2006-07-02 Sergey Udaltsov
-
- * rules/base.xml.in: fixed mismatch between directory and symbols/inet
- file.
- https://bugs.freedesktop.org/show_bug.cgi?id=7398
-
- * symbols/ro: fixed Romanian academic
- https://bugs.freedesktop.org/show_bug.cgi?id=7393
-
-2006-06-28 Sergey Udaltsov
-
- * keycodes/evdev: pc105 compatiliby, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7347
-
-2006-06-25 Sergey Udaltsov
-
- * rules/base.xml.in, geometry/pc, symbols/inet: added Dell Lattitude,
- https://bugs.freedesktop.org/show_bug.cgi?id=6894
-
- * symbols/inet, rules/base.xml.in: added 2 new layouts, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7325
-
- * symbols/np: added Nepali, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6373
-
-2006-06-25 Sergey Udaltsov
-
- * geometry/pc, rules/base.lists.part, rules/base.m_g.part,
- rules/base.xml.in, symbols/kr: updated Korean layouts/geometry
- https://bugs.freedesktop.org/show_bug.cgi?id=7316
-
-2006-06-22 Sergey Udaltsov
-
- * symbols/inet: fixing double RaiseVolume, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7095
-
-2006-06-14 Sergey Udaltsov
-
- * symbols/mt, rules/base.xml.in: fixed the US variant group name
- * symbols/gh: fixed 'D' key, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7216
-
-2006-06-13 Sergey Udaltsov
-
- * symbols/level5, compat/level5: replacing F21-F23 with explicit
- hexadecimal values of XK_ISO_Level5_*. So for next months people could
- have Canadian layout fixed and, at the same time, do not have to
- upgrade xorg. Closing https://bugs.freedesktop.org/show_bug.cgi?id=4411
-
- * symbols/ch, symbols/inet, symbols/base.xml.in: added mac stuff from
- https://bugs.freedesktop.org/show_bug.cgi?id=6960
-
-2006-06-13 Sergey Udaltsov
-
- * symbols/mt: fixed mt(us), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=1411
-
-2006-06-10 Sergey Udaltsov
-
- * symbols/level5, compat5/level5: better working Canadian
- layout, but not complete yet
-
-2006-06-01 Sergey Udaltsov
-
- * symbols/am: fixed comma in Armenian, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7080
-
-2006-05-28 Sergey Udaltsov
-
- * symbols/inet,rules/base.xml.in,rules/base.lists.part:
- added Logitech Cordless Desktop LX-300
- https://bugs.freedesktop.org/show_bug.cgi?id=5609
-
-2006-05-28 Sergey Udaltsov
-
- * rules/base.ml_c: fixed compat for jp layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4002
-
-2006-05-17 Sergey Udaltsov
-
- * symbols/inet: fixed power_g5, partially closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6960
-
-2006-05-13 Sergey Udaltsov
-
- * symbols/fi: added fi(kotoistus)
- https://bugs.freedesktop.org/show_bug.cgi?id=6901
-
-2006-05-05 Sergey Udaltsov
-
- * symbols/de: added de(neo)
- https://bugs.freedesktop.org/show_bug.cgi?id=6837
-
-2006-05-04 Sergey Udaltsov
-
- * symbols/inet: fixed cymotionlinux, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6828
-
-2006-05-04 Sergey Udaltsov
-
- * rules/base.xml.in,symbols/iq,symbols/in,symbols/sy: added Kurdish,
- closed https://bugs.freedesktop.org/show_bug.cgi?id=6159
- one more time
-
-2006-04-20 Sergey Udaltsov
-
- * keycodes/evdev: added LSGT, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6674
-
-2006-04-19 Sergey Udaltsov
-
- * symbols/macintosh_vndr/(be,de,ch): use keypad(comma)
-
-2006-04-19 Sergey Udaltsov
-
- * rules/*, keymap/sgi_vndr/*: shift_toggle -> shifts_toggle,
- fixing https://bugs.freedesktop.org/show_bug.cgi?id=5078
-
-2006-04-08 Sergey Udaltsov
-
- * keycodes/xfree86,symbols/br: fixed abnt2 keymap and layout
- https://bugs.freedesktop.org/show_bug.cgi?id=4910
-
-2006-04-08 Sergey Udaltsov
-
- * geometry/macintosh: fixed mac geometry
- https://bugs.freedesktop.org/show_bug.cgi?id=4714
-
-2006-04-05 Sergey Udaltsov
-
- * rules/base.xml.in, changed PC-98xx Series to Japan,
- https://bugs.freedesktop.org/show_bug.cgi?id=5591
-
-2006-04-04 Sergey Udaltsov
-
- * symbols/compose,rules/base.xml.in,rules/base.o_s.part: added
- compose(lwin)
- https://bugs.freedesktop.org/show_bug.cgi?id=2396
-
-2006-04-04 Sergey Udaltsov
-
- * symbols/inet,rules/base.xml.in: added Logitech diNovo
- https://bugs.freedesktop.org/show_bug.cgi?id=1681
-
-2006-04-04 Sergey Udaltsov
-
- * symbols/inet: fixed Logitech Access Keyboard
- https://bugs.freedesktop.org/show_bug.cgi?id=1018
-
-2006-04-04 Sergey Udaltsov
-
- * symbols/pt: added LSGT
- https://bugs.freedesktop.org/show_bug.cgi?id=970
-
-2006-04-02 Sergey Udaltsov
-
- * symbols/be, rules/base.xml.in: added 'be(wang)'
- https://bugs.freedesktop.org/show_bug.cgi?id=6474
-
-2006-03-28 Sergey Udaltsov
-
- * symbols/cd, symbols/Makefile.am: added 'cd'
- https://bugs.freedesktop.org/show_bug.cgi?id=5500
-
-2006-03-27 Sergey Udaltsov
-
- * keycodes/macintosh,keymap/macintosh,rules/base.m_k.part: fixed
- Macintosh F13-F15, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=6399
-
-2006-03-25 Sergey Udaltsov
-
- * symbols/inet: fixed cymotion,
- https://bugs.freedesktop.org/show_bug.cgi?id=3541
-
-2006-03-25 Sergey Udaltsov
-
- * symbols/il,rules/compat/variantRename.lst: generalized 'basic',
- removed si1452, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=6375
-
-2006-03-23 Sergey Udaltsov
-
- * symbols/group: another attempt to fix unfamous
- RAlt problem, reported in ubuntu:
- https://launchpad.net/distros/ubuntu/+source/xkeyboard-config/+bug/35845
- Now all types are specified for Group1, to make it consistent
-
-2006-03-22 Sergey Udaltsov
-
- * rules/base.xml.in,symbols/tr: added Kurdish, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=6159
-
-2006-03-22 Sergey Udaltsov
-
- * rules/base.xml.in: added missing Logitech models, fixed
- https://bugs.freedesktop.org/show_bug.cgi?id=6350
-
-2006-03-21 Sergey Udaltsov
-
- * symbols/kr: added Korean layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6323
-
-2006-03-21 Sergey Udaltsov
-
- * types/pc,symbols/level3: another attempt to fix unfamous
- RAlt problem, reported in ubuntu:
- https://launchpad.net/distros/ubuntu/+source/xkeyboard-config/+bug/35845
-
-2006-03-17 Sergey Udaltsov
-
- * symbols/inet, rules/base*: added Acer Ferrari 4K
- https://bugs.freedesktop.org/show_bug.cgi?id=5259
-
-2006-03-16 Sergey Udaltsov
-
- * symbols/ee: improved ee(dvorak), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4568
-
-2006-03-05 Sergey Udaltsov
-
- * configure.in, NEWS, Changelog:Preparing release 0.8
-
-2006-02-26 Sergey Udaltsov
-
- * symbols/es, rules/base.xml.in: added es(cat), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6047
-
-2006-02-25 Alan Coopersmith
-
- * symbols/sun_vndr/*, compat/japan, compat/mousekeys,
- geometry/sun:
- massive update from Sun, see
- https://bugs.freedesktop.org/show_bug.cgi?id=5725
-
-2006-02-24 M. Emal Alekozai <memala@gmx.net>
-
- * symbols/af, symbols/Makefile.am, rules/base.xml:
- added Afghan, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6013
-
-2006-02-15 Zephaniah E. Hull <warp@aehallh.com>
-
- * keycodes/Makefile.am:
- * keycodes/evdev:
- * rules/base.m_k.part:
- Add the evdev keyboard data files. Closing
- https://bugs.freedesktop.org/show_bug.cgi?id=5903
-
-2006-02-21 svu
-
- * symbols/inet: Fixed inet(armada)
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=5893
-
-2006-02-21 svu
-
- * symbols/hr: Fixed hr(us)
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=3807
-
-2006-02-01 svu
-
- * rules/compat/layoutRename.lst: Added cz_qwerty compat rule
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=177362
-
-2006-01-31 svu
-
- * symbols/us: Added single-handed dvoraks
- https://bugs.freedesktop.org/show_bug.cgi?id=5659
-
-2006-01-22 svu
-
- * types/level5: Fixed ScrollLock behaviour
- https://bugs.freedesktop.org/show_bug.cgi?id=5635
-
-2006-01-15 svu
-
- * symbols/bd: Corrected Bangladesh layout, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=5480
-
-2006-01-14 svu
-
- * rules/base.ml_*.part: Japanese layouts are nec_vndr/jp, for
- consistency
-
-2006-01-14 svu
-
- * symbols/macintosh_vnd/is: some cosmetic stuff and some info, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=5597
-
-2006-01-14 svu
-
- * rules/base.lists.part: extended non-latin list, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=5590
-
-2006-01-11 svu
-
- * rules/base*part: improved stuff for non-AT keyboards, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=5507
-
-2006-01-10 svu
-
- * geometry/pc: fixed geometry, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=5568
-
-2006-01-08 svu
-
- * symbols/gh: added Ghana layout, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=5497
-
-2006-01-06 svu
-
- * symbols/ad: added Catalan layout, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=5526
-
-2006-01-01 svu
-
- * symbols/in: fixed ben_probhat, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=1012
-
-2005-12-31 svu
-
- * symbols/ru, rules/base.xml.in: added
- Tatar, closing https://bugs.freedesktop.org/show_bug.cgi?id=4818
-
-2005-12-31 svu
-
- * symbols/kh, rules/base.xml.in, symbols/Makefile.am: added
- Khmer, closing https://bugs.freedesktop.org/show_bug.cgi?id=5389
-
-2005-12-31 svu
-
- * symbols/epo, rules/base.xml.in, symbols/Makefile.am: added
- Esperanto, closing https://bugs.freedesktop.org/show_bug.cgi?id=5454
-
-2005-12-30 svu
-
- * symbols/ctrl: expanding Caps a bit, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=3193
-
-2005-12-20 svu
-
- * symbols/hu: returned def_dot (instead of def_comma, really
- eliminated)
-
-2005-12-10 svu
-
- * symbols/compat/layoutRename.lst: added en_US
-
-2005-12-01 svu
-
- * symbols/inet, rules/base.xml.in: added Inspiron 6000 keys, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=5195
-
-2005-12-01 svu
-
- * symbols/inet: HUGE redesign of the inet file. Major reorganization
- of Logitech keyboard. HUGE thanks to Fr?d?ric BOITEUX
-
-2005-11-26 svu
-
- * symbols/group, symbols/level3, compat/level5, compat/misc:
- Fixing problem with level3(ralt) and group(alts_toggle).
- Now "us,ru,se" works ok.
-
-2005-10-20 svu
-
- * symbols/inet, rules:
- adding Dell USB Multimedia Keybard, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4826
-
-2005-10-17 svu
-
- * symbols, types, compat, rules:
- adding 5th level and beyond, trying to hack 1-group Canadian layout
-
-2005-10-11 svu
-
- * symbols/macintosh_vndr/fr: update French Macintosh keyboard, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=2870
-
-2005-10-10 svu
-
- * symbols/za, rules/base.xml.in: added South Afrika, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=2856
-
-2005-10-09 svu
-
- * symbols/inet: expanded Inspiron definition, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4071
-
-2005-10-07 svu
-
- * symbols/hu: fixed comma issue, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4693
-
-2005-10-04 svu
-
- * symbols/by, rules/base.xml.in: added by(latin), closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4576
-
-2005-10-04 svu
-
- * symbols/gr: added keypad(comma), closed
- https://bugs.freedesktop.org/show_bug.cgi?id=3538
-
-2005-10-02 svu
-
- * symbols/se:
- updating svorak, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=3635
-
-2005-10-02 svu
-
- * rules/base.lists.part, rules/base.xml.in,
- symbols/inet:
- adding Genius Comfy, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=2275
-
-2005-10-02 svu
-
- * rules/Makefile.am, rules/HDR,
- rules/base.l1o_s.part, rules/base.l2o_s.part,
- rules/base.l3o_s.part, rules/base.l4o_s.part:
- adding "layout + option -> symbols" rules,
- for properly maingating RAlt as AltGr + alts_toggle
- IMPORTANT: REQUIRES FIXING XORG
-
-2005-10-02 svu
-
- * rules/base.xml.in, symbols/ee:
- added Estonian Dvorak, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4568
-
-2005-10-02 svu
-
- * rules/base.xml.in, symbols/inet, rules/base.lists.part:
- Added eMachines m68xx notebooks keyboards, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4000
-
-2005-10-01 svu
-
- * rules/base.xml.in, symbols/inet, rules/base.lists.part:
- Added SILVERCREST Multimedia Wireless Keyboard, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4217
-
-2005-09-30 svu
-
- * rules/compat/layoutRename.lst:
- added us_intl, fixed https://bugs.freedesktop.org/show_bug.cgi?id=4642
-
-2005-09-30 svu
-
- * po/sl.po:
- Slovenian translation
-
-2005-09-22 svu
-
- * rules/base.xml.in, rules/base.o_s.part, symbols/compose:
- adding CapsLock as Compose, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4548
-
-2005-09-22 svu
-
- * rules/Makefile.am, rules/merge.sh
- fixing merging in env where srcdir != objdir, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4547
-
-2005-09-22 svu
-
- * rules/base.xml.in, symbols/kz:
- change Cyr to Rus
-
-2005-09-21 svu
-
- * rules/base.ml_s.part:
- IMPORTANT: NO MORE 2-GROUP CANADIAN DEFAULT CONFIGURATION
-
-2005-09-21 svu
-
- * symbols/kz, symbols/Makefile.am, rules/base.xml.in:
- added Kazakh, fixing
- https://bugs.freedesktop.org/show_bug.cgi?id=4497
-
-2005-09-20 svu
-
- * symbols/macintoch_vndr/ch:
- Updated de_CH, from
- https://bugs.freedesktop.org/show_bug.cgi?id=4520
-
-2005-09-20 svu
-
- * symbols/mk, rules/base.xml.in:
- removing controversal 'FYROM'
-
-2005-09-14 svu
-
- * symbols/inet, rules/base.xml.in rules/base.lists.part:
- Added Cherry CyBo@rd USB-Hub. Thanks to Paul Egan
- Fixed https://bugs.freedesktop.org/show_bug.cgi?id=4498
-
-2005-09-14 svu
-
- * symbols/cs: a bit of cleanup by Denis
-
-2005-09-13 svu
-
- * configure.in: added Finnish translation
-
-2005-09-04 svu
-
- * symbols/no:
- fixed no(dvorak), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4397
-
-2005-09-04 svu
-
- * rules/base.xml.in, symbols/inet:
- adding Power G5
-
-2005-09-04 svu
-
- * rules/base.xml.in, symbols/ro:
- Fixing Romanian, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=371
-
-2005-09-04 svu
-
- * rules/base.xml.in, symbols/lk:
- No TSCII/INSCRIPT in Sri Lanka,
- according to <hash@jayasolutions.cjb.net>
-
-2005-08-25 svu
-
- * rules/base.xml.in:
- Control -> Ctrl everywhere, for consistency sake
-
-2005-08-25 svu
-
- * rules/base.xml.in, symbols/cs:
- Serbia -> Serbia and Montenegro
-
-2005-08-25 svu
-
- * configure.in, po/sr@Latn.po:
- adding sr@Latn translation, thanks to Danilo
-
-2005-08-24 svu
-
- * configure.in:
- preparing 0.6
-
-2005-08-24 svu
-
- * rules/base.xml.in, symbols/mk,
- rules/compat/layoutRename.lst:
- Move Macedonian to country-based
-
-2005-08-23 svu
-
- * rules/base.xml.in, symbols/ba,
- symbols/si, symbols/cs, symbols/hr:
- Major Balkanian revolution by Danilo Segan. GREAT THANKS to him.
-
-2005-08-22 svu
-
- * rules/base.xml.in, symbols/mv:
- Moved Dhivehi to Maldives, fixed #3716
-
-2005-08-22 svu
-
- * rules/compat/layoutRename.lst:
- fixed http://bugzilla.ubuntu.com/show_bug.cgi?id=13919
-
-2005-08-16 svu
-
- * rules/base.xml.in, symbols/ir:
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=4102
-
-2005-08-11 svu
-
- * symbols/jp, symbols/pc:
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=847
-
-2005-08-07 svu
-
- * symbols/bg:
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=4010
-
-2005-08-06 svu
-
- * Makefile.am:
- Allowing multiple compatibility symlinks (xfree86,xorg).
- Thanks to Daniel Stone for the feedback
-
-2005-08-06 svu
-
- * Makefile.am:
- Fixing the xkbcomp symlink creation
- Thanks to Daniel Stone for the feedback
-
-2005-08-04 svu
-
- * Makefile.am, configure.in, xkbrules.am:
- Taking nice ideas from xkbdata.
- Thanks to Daniel Stone for his knowledge of autofoo
-
-2005-08-04 svu
-
- * symbols/in, symbols/lk,
- rules/base.xml.in, rules/compat/variantRename.lst:
- a bit reogranizing tamil stuff
-
-2005-08-03 svu
-
- * symbols/ie, rules/base.xml.in, rules/compat/variantRename.lst:
- getting rid of laptop variants in 'ie'
-
-2005-08-02 svu
-
- * symbols/in, rules/base.xml.in, rules/compat/variantRename.lst:
- moving 'mal_plusnum' to 'mal'
-
-2005-08-01 svu
-
- * symbols/il, symbols/hr, symbols/tj:
- fixing two-group layouts
-
-2005-08-01 svu
-
- * symbols, rules:
- putting syr to sy, dzo to bt
-
-2005-07-31 svu
-
- * symbols, rules:
- putting smi to no, fi, se
-
-2005-07-31 svu
-
- * symbols, rules:
- putting Syriac to Syria (setting 'ara' as default)
-
-2005-07-31 svu
-
- * symbols, rules:
- putting Devangari, Gurmukhi into 'in'
-
-2005-07-31 svu
-
- * symbols, rules:
- changing 'lao' to 'la'
-
-2005-07-31 svu
-
- * symbols, rules:
- putting Inuktitut into 'ca'
-
-2005-07-31 svu
-
- * symbols, rules:
- putting Ogham into 'ie'. Cleaning it up.
-
-2005-07-29 svu
-
- * symbols, rules:
- reorganizing Asian layouts, round #1
-
-2005-07-25 svu
-
- * symbols/tr:
- fixed Turkish, according to
- https://bugs.freedesktop.org/show_bug.cgi?id=2558
-
-2005-07-25 svu
-
- * symbols/hr:
- added belowdot, abovedot, in relation to
- https://bugs.freedesktop.org/show_bug.cgi?id=475
-
-2005-07-24 svu
-
- * symbols/div,
- symbols/Makefile.am,
- rules/base.xml.in: adding Dhivehi, fixing
- https://bugs.freedesktop.org/show_bug.cgi?id=3716
-
-2005-07-23 svu
-
- * symbols/es,
- rules/base.xml.in:
- adding Spanish dvorak, pointer from
- https://bugs.freedesktop.org/show_bug.cgi?id=2344
-
-2005-07-21 svu
-
- * symbols/sun_vndr/us,
- rules/sun,
- keycodes/sun,
- geometry/sun: adding more keyboards, fixing
- https://bugs.freedesktop.org/show_bug.cgi?id=2037
-
-2005-07-20 svu
-
- * symbols/ru,
- symbols/us,
- symbols/se,
- symbols/ua,
- rules/base.xml.in:
- sorting out Russian layout, fixing (without 3rd and 4th groups)
- https://bugs.freedesktop.org/show_bug.cgi?id=2582
-
-2005-07-15 svu
-
- * symbols/inet, rules/base.xml.in:
- added Cherry CyMotion Linux, fixed
- https://bugs.freedesktop.org/show_bug.cgi?id=3789
-
-2005-07-02 svu
-
- * symbols/nl: fixed Dutch layout
-
-2005-06-17 svu
-
- * symbols/pl: added AB10 to qwertz
- https://bugs.freedesktop.org/show_bug.cgi?id=3298
-
-2005-06-17 svu
-
- * symbols/inet, rules/base.xml.in: added logiultrax,
- https://bugs.freedesktop.org/show_bug.cgi?id=3523
-
-2005-04-17 svu
-
- * symbols/tam, rules/base.xml.in: changed default for Tamil,
- https://bugs.freedesktop.org/show_bug.cgi?id=2971
-
-2005-04-02 svu
-
- * symbols/de, rules/base.xml.in: added de(dvorak),
- https://bugs.freedesktop.org/show_bug.cgi?id=2681
-
-2005-03-10 svu
-
- * po/Makefile.am: adding POTFILES* into the dist
- * Makefile.am, rules/Makefile.am: adding DISTCLEANFILES
-
-2005-03-09 svu
-
- * symbols/us: fixing dvorak,
- https://bugs.freedesktop.org/show_bug.cgi?id=2641
-
-2005-02-05 svu
-
- * configure.in, NEWS: preparing 0.5
-
-2005-02-03 svu
-
- * symbols/srp, types/extra: replaced SERBIAN_ALPHABETIC with
- FOUR_LEVEL_ALPHABETIC, as Danilo requested. Also, SERBIAN_CAPS
- renamed to SEPARATE_CAPS_AND_SHIFT_ALPHABETIC.
-
-2005-01-21 svu
-
- * rules/base.lists.part,
- rules/base.xml.in,
- symbols/inet: addin my own Acer Travelmate 800 keyboard
- (based on acerhk kernel module).
-
-2005-01-21 svu
-
- * symbols/gr: a bit more order in group name (needed for 'basic' but
- not for 'bare'
-
-2005-01-20 svu
-
- * symbols/hr: added missing keymapping,
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=2325
-
-2005-01-19 svu
-
- * symbols/us: removed illegal 'hidden' attribute from the default layout
-
-2005-01-18 svu
-
- * symbols/cz, rules/base.xml.in: fixed the Czech layout,
- https://bugs.freedesktop.org/show_bug.cgi?id=2319
-
-2005-01-16 svu
-
- * symbols, rules/base.xml.in: HUGE commit - adjusting the group names
- according to the descriptions.
- Also, some layouts were missing the default variants - added one.
- Also, some default variants were listed in the variantLists - now they are removed.
-
-2005-01-06 svu
-
- * symbols/am, rules/base.xml.in: Removing old Armenian layout,
- fixing http://bugs.freedesktop.org/show_bug.cgi?id=2226
-
-2004-12-22 svu
-
- * symbols: massive patch for the group names (by Denis Barbier)
- * rules/base.xml.in: first iteration, match the country names with
- the group names
-
-2004-12-21 02:07 svu
-
- * po/el.po,
- configure.in: Greek translation
-
-2004-12-20 20:30 svu
-
- * symbols/inet,
- rules/base.lists.part,
- rules/base.xml.in: added A4Tech KBS-8, thanks to olo at force dot sk.
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=2113
-
-2004-12-10 00:30 svu
-
- * symbols/inet: removed keyboard names from the group names,
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=2044
-
-2004-12-08 00:30 svu
-
- * symbols/mkd,
- rules/base.xml.in,
- rules/compat/layoutRename.lst,
- rules/compat/Makefile.am: Macedonian is now language-based,
- not country-based. Compatibility rule added.
-
-2004-12-04 01:40 svu
-
- * symbols/mk, rules/base.xml.in: small fix for Makedonian
-
-2004-12-03 00:40 svu
-
- * configure.in, Makefile.am, compiled: some cleanup in the
- build process
-
-2004-11-29 19:00 svu
-
- * symbols/sin: Small patch for Sinhala from Harshula
-
-2004-11-14 22:14 svu
-
- * symbols/sin: Small patch for Sinhala from Harshula
-
-2004-10-31 01:20 svu
-
- * symbols/ca, rules/base.xml.in: added fr-dvorak, thanks to
- Jonathan Bastien-Filiatrault
-
-2004-10-29 01:15 svu
-
- * symbols/am: fixed phonetic layout, bug
- http://freedesktop.org/bugzilla/show_bug.cgi?id=1714
-
-2004-10-29 00:55 svu
-
- * rules/base.xml.in, rules/base.lists.part, symbols/inet:
- Added Cherry CyMotion Master XPress, fixed
- http://freedesktop.org/bugzilla/show_bug.cgi?id=1715
-
-2004-10-26 21:08 svu
-
- * symbols/Makefile.am, symbols/kg, rules/base.xml.in: added
- Kyrgyz, thanks to Yury Fedorov
-
-2004-10-12 18:45 svu
-
- * symbols/Makefile.am, symbols/sin, rules/base.xml.in: added
- Sinhalese, thanks to Harshula Jayasuriya
-
-2004-10-10 23:59 svu
-
- * po/: af.po, az.po, bg.po, cs.po, da.po, fr.po, hu.po, nl.po,
- ru.po, sk.po, sq.po, sr.po, sv.po, tr.po, uk.po, zh_CN.po: update
- from TP
-
-2004-10-09 19:34 svu
-
- * symbols/: mal, mao, mm, mn, mt, nl, ogam, ori, pc, pl, pt, ru,
- sk, smi, srvr_ctrl, syr, tam, tel, th, tr, ua, urd, us: adding
- the keyword
-
-2004-10-09 18:40 svu
-
- * symbols/: jp, kan, lao, latam, latin, level3, lt, lv: adding the
- keyword
-
-2004-10-09 18:35 svu
-
- * symbols/: deva, dzo, ee, es, eurosign, fo, fr, gb, ge, gr, guj,
- guru, ie, iku, il, inet, ir, is, it: adding the keyword
-
-2004-10-09 18:29 svu
-
- * symbols/: al, altwin, am, ara, az, be, ben, bg, by, capslock, ch,
- compose, ctrl, cz: adding the keyword
-
-2004-10-09 18:26 svu
-
- * symbols/: ca, uz, vn: adding the keyword
-
-2004-10-09 18:23 svu
-
- * symbols/: ca, uz, vn: fixing
- https://freedesktop.org/bugzilla/show_bug.cgi?id=1566
-
-2004-10-09 00:31 svu
-
- * symbols/ch: fixing
- https://freedesktop.org/bugzilla/show_bug.cgi?id=1562
-
-2004-10-09 00:20 svu
-
- * symbols/ca: fixing
- https://freedesktop.org/bugzilla/show_bug.cgi?id=1563
-
-2004-10-08 21:55 svu
-
- * symbols/hu: fixing
- https://freedesktop.org/bugzilla/show_bug.cgi?id=1561
-
-2004-09-29 23:25 svu
-
- * symbols/macintosh_vndr/: Makefile.am, is: Added Icelandic layout
- to the Macintosh group
-
-2004-09-28 00:00 svu
-
- * NEWS, configure.in: preparing 0.4
-
-2004-09-18 01:00 svu
-
- * BUGS, rules/base.xml.in: David noticed small glitches in
- base.xml.in
-
-2004-09-16 01:11 svu
-
- * rules/Makefile.am, rules/base.o_s.part, rules/base.xml.in,
- rules/compat/Makefile.am, rules/compat/base.o_s.part,
- symbols/group: shift_toggle -> shifts_toggle
-
-2004-09-15 23:20 svu
-
- * symbols/group: make the ctrsl_toggle consistend with the others
-
-2004-09-14 20:54 svu
-
- * symbols/ba: more commas
-
-2004-09-14 20:38 svu
-
- * symbols/: mk, srp: more commas
-
-2004-09-14 20:14 svu
-
- * symbols/: br, de, dk, fi, hr, hu, keypad, no, pl, ro, se, si:
- keymap(comma) introduced by Frank
-
-2004-09-13 22:39 svu
-
- * symbols/tj: new local cvs keyword seems to be ok - no more $Id$
-
-2004-09-13 22:38 svu
-
- * symbols/tj: trying new local cvs keyword
-
-2004-09-13 19:49 svu
-
- * symbols/ara, symbols/bg, symbols/by, symbols/capslock,
- symbols/deva, symbols/fo, symbols/guj, symbols/guru, symbols/iku,
- symbols/il, symbols/ir, symbols/kan, symbols/lao, symbols/mk,
- symbols/mm, symbols/mt, symbols/ori, symbols/sk, symbols/srp,
- symbols/tel, compat/README, compat/ledcaps, compat/lednum,
- compat/ledscroll, docs/README.config, geometry/README,
- geometry/dell, geometry/everex, geometry/keytronic,
- geometry/kinesis, geometry/microsoft, geometry/northgate,
- geometry/sgi_vndr/O2, geometry/sgi_vndr/indigo,
- geometry/sgi_vndr/indy, keycodes/README, keycodes/aliases,
- keymap/README, keymap/sgi_vndr/cz, keymap/sgi_vndr/sk,
- rules/README, symbols/macintosh_vndr/ch,
- symbols/macintosh_vndr/es, symbols/macintosh_vndr/fi,
- symbols/macintosh_vndr/fr, symbols/macintosh_vndr/it,
- symbols/macintosh_vndr/nl, symbols/sun_vndr/usb, types/README,
- types/basic, types/default, types/numpad: no dummy XFree keyword
-
-2004-09-11 21:41 svu
-
- * symbols/tj: trying Id
-
-2004-09-09 23:05 svu
-
- * symbols/: tj: fixing keyword
-
-2004-09-09 23:02 svu
-
- * symbols/tj: fixing keyword
-
-2004-09-09 22:07 svu
-
- * symbols/level3: ONE_LEVEL fixing by Frank
-
-2004-09-09 00:01 svu
-
- * symbols/group: more fair comment
-
-2004-09-08 23:40 svu
-
- * symbols/level3: they agreed on this
-
-2004-09-08 20:14 svu
-
- * compat/Makefile.am, rules/base.o_c.part: no more capsled traces
-
-2004-09-07 23:58 svu
-
- * symbols/level3: restoring for a while, till guys make agreement
-
-2004-09-07 23:16 svu
-
- * symbols/mn: just for sync:)
-
-2004-09-07 21:51 svu
-
- * po/ru.po: updated translation
-
-2004-09-07 21:50 svu
-
- * rules/base.xml.in: small polish of the option descriptions
-
-2004-09-07 20:56 svu
-
- * symbols/: al, az, be, br, ca, cz, de, dk, dzo, ee, es, fi, fo,
- fr, gb, hr, hu, is, it, latam, level3, lt, mt, nl, no, pt, ro,
- se, si, sk, smi, srp, tr, us, vn: changing to ralt_switch
-
-2004-09-07 20:39 svu
-
- * rules/: base.o_s.part, sgi, sun: small fixes, thanks to Frank
-
-2004-09-07 20:33 svu
-
- * symbols/urd: forgotten to add
-
-2004-09-06 00:59 svu
-
- * rules/base.xml.in, symbols/Makefile.am: Adding Urdu layout,
- thanks to Zaeem Arshad
-
-2004-09-04 22:39 svu
-
- * compat/Makefile.am, compat/basic, compat/group_led,
- compat/ledcaps, compat/lednum, compat/leds, compat/ledscroll,
- compat/misc, rules/base.o_c.part, rules/base.o_s.part,
- rules/base.xml.in, symbols/Makefile.am, symbols/capslock,
- symbols/group, symbols/lock: reorganizing indicators, thanks to
- Frank Murphy
-
-2004-08-28 02:04 svu
-
- * symbols/compose, rules/base.o_s.part, rules/base.xml.in: adding
- RCtrl as Compose
-
-2004-08-27 23:57 svu
-
- * symbols/us: thanks to Frank, he noticed two default variants in
- the us layout
-
-2004-08-27 19:20 svu
-
- * rules/: base.o_s.part, base.xml.in: meta-info about eurosign
-
-2004-08-27 02:23 svu
-
- * symbols/: Makefile.am, eurosign: added eurosign
-
-2004-07-25 14:55 svu
-
- * Makefile.am, mkinstalldirs: fixing mkinstalldirs
-
-2004-07-24 00:42 svu
-
- * rules/Makefile.am: minor fix for the minor bug detected by
- distcheck
-
-2004-07-23 22:21 svu
-
- * TODO: up2date
-
-2004-07-23 22:00 svu
-
- * NEWS, configure.in: preparing 0.3
-
-2004-07-23 00:11 svu
-
- * rules/: HDR, Makefile.am, compat/.cvsignore, compat/Makefile.am,
- compat/lnv_s.sh, compat/ml1v1_s.sh: HURRAY!!! Rules are working!
- Am I cool or what?
-
-2004-07-22 02:03 svu
-
- * rules/HDR: fixing the header for MLV
-
-2004-07-21 02:21 svu
-
- * rules/: HDR, Makefile.am, base.mlv_s.part, base.mvl_s.part,
- compat/.cvsignore, compat/Makefile.am, compat/ln_s.sh,
- compat/ml1_s.sh, compat/ml_s.sh, compat/mlv_s.sh: variants are
- there
-
-2004-07-21 01:57 svu
-
- * rules/: HDR, Makefile.am, compat/.cvsignore, compat/Makefile.am,
- compat/lnv_s.sh, compat/ml1_s.sh, compat/ml1v_s.sh: a bit more
- about variants
-
-2004-07-21 01:48 svu
-
- * rules/: .cvsignore, HDR, Makefile.am, compat/.cvsignore,
- compat/Makefile.am, compat/lnv_s.sh, compat/variantRename.lst:
- adding variants - not complete yet
-
-2004-07-21 01:25 svu
-
- * rules/compat/: Makefile.am, l2_s.sh, l3_s.sh, l4_s.sh, ln_s.sh:
- single script for the layouts 2-4
-
-2004-07-21 00:02 svu
-
- * rules/merge.sh: bash is great but sh is standard - and think
- optimal, dude
-
-2004-07-20 02:57 svu
-
- * rules/compat/: l2_s.sh, l3_s.sh, l4_s.sh: the extra layouts (2-4)
- should be ADDED using '+' character
-
-2004-07-20 02:49 svu
-
- * rules/: base.ml1_c.part, base.ml1_s.part, base.ml_c.part,
- base.ml_s.part, compat/l2_s.sh, compat/l3_s.sh, compat/l4_s.sh,
- compat/ml1_s.sh, compat/ml_s.sh: alignment
-
-2004-07-20 02:33 svu
-
- * rules/compat/: ml1_s.sh, ml_s.sh: little fix
-
-2004-07-20 02:29 svu
-
- * rules/: HDR, Makefile.am, base.l1_k.part, base.l2_s.part,
- base.l3_s.part, base.l4_s.part, base.l_k.part, base.m_g.part,
- base.m_k.part, base.m_s.part, base.m_t.part, base.ml1_c.part,
- base.ml1_s.part, base.ml_c.part, base.ml_s.part, base.mvl_s.part,
- base.o_c.part, base.o_s.part, base.o_t.part, merge.sh: Now, we
- compoze the parts using bash script
-
-2004-07-18 03:54 svu
-
- * configure.in, rules/.cvsignore, rules/compat/.cvsignore,
- rules/compat/Makefile.am, rules/compat/base.lists.part,
- rules/compat/l2_s.sh, rules/compat/l3_s.sh, rules/compat/l4_s.sh,
- rules/compat/layoutRename.lst, rules/compat/ml1_s.sh,
- rules/compat/ml_s.sh: starting bundling compatibility parts
-
-2004-07-18 03:44 svu
-
- * rules/: Makefile.am, base: cleaning a bit before adding the
- compat directory
-
-2004-07-18 01:56 svu
-
- * rules/: Makefile.am, base, base.l1_k.part, base.l2_s.part,
- base.l3_s.part, base.l4_s.part, base.l_k.part, base.lists.part,
- base.m_g.part, base.m_k.part, base.m_s.part, base.m_t.part,
- base.ml1_c.part, base.ml1_s.part, base.ml_c.part, base.ml_s.part,
- base.mvl_s.part, base.o_c.part, base.o_s.part, base.o_t.part:
- better empty line handling between rule groups
-
-2004-07-18 01:42 svu
-
- * rules/: Makefile.am, base, base.hdr.part, base.l1_k.part,
- base.l2_s.part, base.l3_s.part, base.l4_s.part, base.l_k.part,
- base.lists.part, base.m_g.part, base.m_k.part, base.m_s.part,
- base.m_t.part, base.ml1_c.part, base.ml1_s.part, base.ml_c.part,
- base.ml_s.part, base.mvl_s.part, base.o_c.part, base.o_s.part,
- base.o_t.part: Now, the base rules are composed from microfiles
- *.part. I see no other way to handle compatibility in a
- manageable way. Kill me if I know it.
-
-2004-07-09 05:21 daniel
-
- * ChangeLog, configure.in: * configure.in: Alter with-xkb-base
- default to $(prefix)/lib/X11/xkb, instead of
- $(prefix)/X11R6/lib/xkb, which makes --prefix=/usr behave sanely.
-
-2004-07-08 21:40 svu
-
- * configure.in: getting rid of unnecessary AM_GLIB_GNU_GETTEXT
-
-2004-07-07 22:52 kidcrash
-
- * ChangeLog: adding required ChangeLog file
-
-2004-07-06 23:44 svu
-
- * .cvsignore: Anjuta files are not in CVS - and'll never be
-
-2004-07-04 02:00 svu
-
- * po/ru.po: updating Russian translation
-
-2004-07-04 01:31 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/cs, symbols/srp:
- streamlining ex-yu layouts
-
-2004-07-03 03:32 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/dvorak,
- symbols/fr, symbols/gb, symbols/no, symbols/pl, symbols/se,
- symbols/us, po/ru.po: splitting dvorak
-
-2004-07-02 01:59 svu
-
- * symbols/smi: fixing broken layouts, thanks to my testing scripts
-
-2004-07-02 01:49 svu
-
- * symbols/: Makefile.am, ara, gr, latam, lv, mal, ogam: fixing
- broken layouts, thanks to my testing scripts
-
-2004-07-02 00:16 svu
-
- * po/Makefile.am: adding update-po
-
-2004-07-01 22:28 svu
-
- * docs/: iso3166.csv, iso639.csv: more fresh version of the
- standards
-
-2004-07-01 03:01 svu
-
- * po/ru.po: completing Russian translation - though some things are
- questionable
-
-2004-07-01 02:59 svu
-
- * config.rpath, mkinstalldirs: why would I need these files in
- CVS???
-
-2004-07-01 02:55 svu
-
- * ABOUT-NLS: empty but very useful file
-
-2004-07-01 02:48 svu
-
- * Makefile.am, autogen.sh, configure.in, po/Makefile.am,
- rules/base.xml.in: Starting to fix intltool problem, Danilo just
- roxx
-
-2004-06-30 23:47 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/cs, symbols/yu:
- Changed yu to cs as Danilo advised - but not sure it is ok.
- Investigating...
-
-2004-06-30 23:25 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/scc, symbols/srp:
- Changing scc to srp - as Danilo advised
-
-2004-06-26 01:54 svu
-
- * BUGS: hopefully fixed Latvian layout
-
-2004-06-26 01:50 svu
-
- * rules/base.xml.in, symbols/lv: hopefully fixed Latvian layout
-
-2004-06-22 01:11 svu
-
- * configure.in: trying to set order in the Makefiles list
-
-2004-06-22 00:56 svu
-
- * Makefile.am, configure.in, autogen.sh: trying to fix intltool -
- but without much luck
-
-2004-06-20 20:09 svu
-
- * rules/base.xml.in: fixing shortDescr for Smi
-
-2004-06-20 19:04 svu
-
- * docs/: iso15924.csv, iso3166.csv, iso3166.txt, iso639.csv,
- iso639.txt: putting order into standards
-
-2004-06-20 15:36 svu
-
- * symbols/bg: bad patch application
-
-2004-06-20 15:36 svu
-
- * rules/base.xml.in: typo in Sami id
-
-2004-06-20 15:22 svu
-
- * symbols/Makefile.am: Frank forgets to chance Makefile.am:)
-
-2004-06-20 14:57 svu
-
- * xkeyboard-config.spec.in, rules/base, rules/base.xml.in,
- docs/Makefile.am, docs/README.symbols, symbols/ar, symbols/ara,
- symbols/ba, symbols/bs, symbols/dev, symbols/deva, symbols/dz,
- symbols/dzo, symbols/el, symbols/gr, symbols/gur, symbols/guru,
- symbols/iku, symbols/iu, symbols/la, symbols/lao, symbols/latam,
- symbols/lo, symbols/mal, symbols/mao, symbols/mi, symbols/ml,
- symbols/ogam, symbols/ogham, symbols/sapmi, symbols/scc,
- symbols/smi, symbols/sr, symbols/tam, symbols/tml: Second phase
- of i18n. Frank rocks the world:)
-
-2004-06-19 04:34 svu
-
- * symbols/mk: Macedonia AKA FYROM
-
-2004-06-19 04:32 svu
-
- * rules/: Makefile.am, base-it.lst, base.lst, sgi.lst, sun.lst,
- xfree98.lst: lst file is not generated automatically - only
- base.lst
-
-2004-06-19 04:16 svu
-
- * rules/: sgi, sun: en_US actually died only now
-
-2004-06-19 04:07 svu
-
- * symbols/: en_US, sun_vndr/se: en_US actually died only now
-
-2004-06-16 02:07 svu
-
- * rules/base.xml.in: ISOization, part1
-
-2004-06-16 02:00 svu
-
- * rules/base.xml.in, symbols/bg, symbols/ch, symbols/el,
- symbols/il, symbols/mm: ISOization, part1
-
-2004-06-15 22:04 svu
-
- * rules/base.xml.in: better wording for Urkainian RSTU description
-
-2004-06-15 19:19 svu
-
- * rules/base.xml.in, symbols/ru, symbols/ua: Added RSTU
- Ukranian/Russian layouts. Thanks to Andrew Porokhnyak
-
-2004-06-13 23:12 svu
-
- * symbols/inet: actually adding gyration keyboard
-
-2004-06-13 21:30 svu
-
- * docs/HOWTO.testing: Forgot to add actual document
-
-2004-06-13 21:21 svu
-
- * BUGS, rules/base, rules/base.lst, rules/base.xml.in, symbols/am,
- symbols/inet, symbols/lt, symbols/us: fixing loads of bugs from
- fd.o bugzilla
-
-2004-06-13 13:28 svu
-
- * xkeyboard-config.spec.in, docs/Makefile.am: Added HOWTO.testing
- by Frank Murphy
-
-2004-06-12 02:17 svu
-
- * symbols/mi: getting rid of pc/
-
-2004-06-12 02:14 svu
-
- * symbols/mi: getting rid of pc/
-
-2004-06-12 02:06 svu
-
- * NEWS: Redoing 0.2
-
-2004-06-12 02:05 svu
-
- * symbols/br: fixing bug 515
-
-2004-06-12 02:01 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/mi: Added Maori,
- thanks to John C Barstow
-
-2004-06-12 01:50 svu
-
- * docs/: iso3166.txt, iso639.txt: just to have standards for
- reference
-
-2004-06-10 23:58 svu
-
- * NEWS: Preparing 0.2
-
-2004-06-10 23:51 svu
-
- * README, configure.in: Preparing 0.2
-
-2004-06-06 04:22 svu
-
- * xkeyboard-config.spec.in, docs/HOWTO.transition,
- docs/Makefile.am, rules/Makefile.am: adding HOWTO.transition
-
-2004-05-28 23:59 svu
-
- * Makefile.am, configure.in: Optional creation of xkbcomp symlink
- in .../X11/xkb
-
-2004-05-25 22:30 svu
-
- * NEWS: something to say
-
-2004-05-24 22:15 svu
-
- * po/xkbdesc.pot: changing the project name
-
-2004-05-24 22:08 svu
-
- * .cvsignore, Makefile.am, autogen.sh, configure.in,
- xkbdesc.spec.in, xkeyboard-config.spec.in: changing the project
- name
-
-2004-05-23 21:01 svu
-
- * rules/base, rules/base.xml.in, symbols/altwin: Daniel Elstner
- sent new option for Tux keys
-
-2004-05-18 00:24 svu
-
- * configure.in: no glib stuff
-
-2004-05-12 13:51 pascal
-
- * rules/base, symbols/bs: Convert Bosnian keymap to multi-layout
- compatible form.
-
-2004-05-09 22:26 svu
-
- * Makefile.am, README.config, README.enhancing, configure.in,
- xkbdesc.spec.in, docs/.cvsignore, docs/Makefile.am,
- docs/README.config: reorganization in docs
-
-2004-05-09 21:40 svu
-
- * TODO, docs/README.enhancing: 2 bits of docs
-
-2004-05-07 19:48 svu
-
- * po/ru.po: up2date
-
-2004-05-07 19:27 svu
-
- * rules/base.xml.in, symbols/tr, tests/testLayouts.pl,
- tests/testOptions.pl, tests/xkbTestFunc.pm: Some small fixes
- made. Options are now testable as well.
-
-2004-05-06 02:00 svu
-
- * tests/: listCI2.xsl, testLayouts.pl, testOptions.pl,
- xkbTestFunc.pm: one more test - but still problems passing it
-
-2004-05-06 01:15 svu
-
- * configure.in, symbols/mk, tests/testLayouts.pl: Makedonian
- problem fixed - and BOTH tests are OK
-
-2004-05-06 01:05 svu
-
- * symbols/digital_vndr/Makefile.am, symbols/digital_vndr/lk,
- symbols/digital_vndr/pc, symbols/digital_vndr/us,
- symbols/digital_vndr/vt, symbols/fujitsu_vndr/Makefile.am,
- symbols/fujitsu_vndr/jp, keycodes/digital_vndr/Makefile.am,
- keycodes/digital_vndr/lk, keycodes/digital_vndr/pc,
- keycodes/sgi_vndr/Makefile.am, keycodes/sgi_vndr/indigo,
- keycodes/sgi_vndr/indy, keycodes/sgi_vndr/iris, keymap/macintosh,
- keymap/sony, keymap/xfree98, keymap/digital_vndr/Makefile.am,
- keymap/digital_vndr/us, keymap/sgi_vndr/Makefile.am,
- keymap/sgi_vndr/be, keymap/sgi_vndr/bg, keymap/sgi_vndr/ca,
- keymap/sgi_vndr/ch, keymap/sgi_vndr/cz, keymap/sgi_vndr/de,
- keymap/sgi_vndr/dk, keymap/sgi_vndr/dvorak,
- keymap/sgi_vndr/en_US, keymap/sgi_vndr/es, keymap/sgi_vndr/fi,
- keymap/sgi_vndr/fr, keymap/sgi_vndr/gb, keymap/sgi_vndr/hu,
- keymap/sgi_vndr/it, keymap/sgi_vndr/jp, keymap/sgi_vndr/no,
- keymap/sgi_vndr/pl, keymap/sgi_vndr/pt, keymap/sgi_vndr/ru,
- keymap/sgi_vndr/se, keymap/sgi_vndr/sk, keymap/sgi_vndr/th,
- keymap/sgi_vndr/us, keymap/sun_vndr/Makefile.am,
- keymap/sun_vndr/de, keymap/sun_vndr/es, keymap/sun_vndr/fi,
- keymap/sun_vndr/fr, keymap/sun_vndr/no, keymap/sun_vndr/pl,
- keymap/sun_vndr/ru, keymap/sun_vndr/se, keymap/sun_vndr/uk,
- keymap/sun_vndr/us, rules/base, rules/base.xml.in,
- symbols/hp_vndr/Makefile.am, symbols/macintosh_vndr/Makefile.am,
- symbols/macintosh_vndr/apple, symbols/macintosh_vndr/ch,
- symbols/macintosh_vndr/de, symbols/macintosh_vndr/dk,
- symbols/macintosh_vndr/fi, symbols/macintosh_vndr/no,
- symbols/macintosh_vndr/pt, symbols/macintosh_vndr/se,
- symbols/macintosh_vndr/us, symbols/nec_vndr/Makefile.am,
- symbols/sgi_vndr/Makefile.am, symbols/sony_vndr/Makefile.am,
- symbols/sun_vndr/Makefile.am, symbols/sun_vndr/se,
- symbols/sun_vndr/us, symbols/xfree68_vndr/Makefile.am,
- tests/testLayouts.pl, tests/testModels.pl, tests/xkbTestFunc.pm,
- geometry/digital_vndr/Makefile.am, geometry/digital_vndr/pc,
- geometry/ibm_vndr/Makefile.am, geometry/ibm_vndr/thinkpad,
- geometry/sgi_vndr/Makefile.am: Yahoo! Models test pased ok!
-
-2004-05-05 23:32 svu
-
- * configure.in, symbols/Makefile.am,
- symbols/digital_vndr/.cvsignore,
- symbols/digital_vndr/Makefile.am, symbols/digital_vndr/lk,
- symbols/digital_vndr/pc, symbols/digital_vndr/us,
- symbols/digital_vndr/vt, symbols/fujitsu_vndr/.cvsignore,
- symbols/fujitsu_vndr/Makefile.am, symbols/fujitsu_vndr/jp,
- symbols/fujitsu_vndr/us, symbols/hp_vndr/.cvsignore,
- symbols/hp_vndr/Makefile.am, symbols/hp_vndr/us,
- symbols/macintosh_vndr/.cvsignore,
- symbols/macintosh_vndr/Makefile.am, symbols/macintosh_vndr/ch,
- symbols/macintosh_vndr/de, symbols/macintosh_vndr/dk,
- symbols/macintosh_vndr/es, symbols/macintosh_vndr/fi,
- symbols/macintosh_vndr/fr, symbols/macintosh_vndr/gb,
- symbols/macintosh_vndr/it, symbols/macintosh_vndr/nl,
- symbols/macintosh_vndr/no, symbols/macintosh_vndr/pt,
- symbols/macintosh_vndr/se, symbols/macintosh_vndr/us,
- symbols/nec_vndr/.cvsignore, symbols/nec_vndr/Makefile.am,
- symbols/nec_vndr/jp, geometry/Makefile.am,
- geometry/digital_vndr/.cvsignore,
- geometry/digital_vndr/Makefile.am, geometry/digital_vndr/lk,
- geometry/digital_vndr/pc, geometry/digital_vndr/unix,
- geometry/ibm_vndr/.cvsignore, geometry/ibm_vndr/Makefile.am,
- geometry/ibm_vndr/thinkpad, geometry/sgi_vndr/.cvsignore,
- geometry/sgi_vndr/Makefile.am, geometry/sgi_vndr/O2,
- geometry/sgi_vndr/indigo, geometry/sgi_vndr/indy,
- keycodes/Makefile.am, symbols/sgi_vndr/.cvsignore,
- symbols/sgi_vndr/Makefile.am, symbols/sgi_vndr/jp,
- symbols/sony_vndr/.cvsignore, symbols/sony_vndr/Makefile.am,
- symbols/sony_vndr/us, symbols/sun_vndr/.cvsignore,
- symbols/sun_vndr/Makefile.am, symbols/sun_vndr/se,
- symbols/sun_vndr/us, symbols/sun_vndr/usb,
- symbols/xfree68_vndr/.cvsignore,
- symbols/xfree68_vndr/Makefile.am, symbols/xfree68_vndr/amiga,
- symbols/xfree68_vndr/ataritt, keycodes/digital_vndr/.cvsignore,
- keycodes/digital_vndr/Makefile.am, keycodes/digital_vndr/lk,
- keycodes/digital_vndr/pc, keycodes/sgi_vndr/.cvsignore,
- keycodes/sgi_vndr/Makefile.am, keycodes/sgi_vndr/indigo,
- keycodes/sgi_vndr/indy, keycodes/sgi_vndr/iris,
- keymap/Makefile.am, keymap/digital_vndr/.cvsignore,
- keymap/digital_vndr/Makefile.am, keymap/digital_vndr/us,
- keymap/sgi_vndr/.cvsignore, keymap/sgi_vndr/Makefile.am,
- keymap/sgi_vndr/be, keymap/sgi_vndr/bg, keymap/sgi_vndr/ca,
- keymap/sgi_vndr/ch, keymap/sgi_vndr/cz, keymap/sgi_vndr/de,
- keymap/sgi_vndr/dk, keymap/sgi_vndr/dvorak,
- keymap/sgi_vndr/en_US, keymap/sgi_vndr/es, keymap/sgi_vndr/fi,
- keymap/sgi_vndr/fr, keymap/sgi_vndr/gb, keymap/sgi_vndr/hu,
- keymap/sgi_vndr/it, keymap/sgi_vndr/jp, keymap/sgi_vndr/no,
- keymap/sgi_vndr/pl, keymap/sgi_vndr/pt, keymap/sgi_vndr/ru,
- keymap/sgi_vndr/se, keymap/sgi_vndr/sk, keymap/sgi_vndr/th,
- keymap/sgi_vndr/us, keymap/sun_vndr/.cvsignore,
- keymap/sun_vndr/Makefile.am, keymap/sun_vndr/de,
- keymap/sun_vndr/es, keymap/sun_vndr/fi, keymap/sun_vndr/fr,
- keymap/sun_vndr/no, keymap/sun_vndr/pl, keymap/sun_vndr/ru,
- keymap/sun_vndr/se, keymap/sun_vndr/uk, keymap/sun_vndr/us: Ivan
- found dots are not good for us
-
-2004-05-03 02:33 svu
-
- * tests/: testLayouts.pl, testModels.pl, xkbTestFunc.pm: The perl
- code is a bit structured now
-
-2004-05-03 00:48 svu
-
- * po/ru.po: Russian translation, up2date
-
-2004-05-03 00:48 svu
-
- * po/xkbdesc.pot: new strings
-
-2004-05-03 00:38 svu
-
- * rules/: base, base.xml.in: some fixes in rules, more tests pass
- ok
-
-2004-05-03 00:05 svu
-
- * rules/base.xml.in, symbols/ch, symbols/mk, tests/testModels.pl:
- at least variants pass ok with tests
-
-2004-05-01 02:17 svu
-
- * symbols/: Makefile.am, hu: Hungarian layout added, thanks to
- Soós
-
-2004-04-30 05:27 pascal
-
- * rules/base, symbols/Makefile.am, symbols/jp, symbols/mn: Add
- Japanese and Mongolian layouts.
-
-2004-04-27 23:17 svu
-
- * rules/base.xml.in: Canadian layout meta-info fixed
-
-2004-04-27 23:13 svu
-
- * symbols/ge: fixed syntax typo
-
-2004-04-27 22:19 svu
-
- * rules/base, rules/base.xml.in, symbols/Makefile.am, symbols/fr,
- symbols/fr-latin9: French layouts are now merged. Thanks to
- Guylhem for the positive answer
-
-2004-04-26 00:57 svu
-
- * tests/: listCI2.xsl, testModels.pl: trying to test layouts as
- well
-
-2004-04-25 20:26 svu
-
- * tests/: listCIs.xsl, testModels.pl: starting test scripts
-
-2004-04-25 00:37 svu
-
- * symbols/us: fixing include
-
-2004-04-25 00:17 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/us: us_intl is
- returned as alt-intl
-
-2004-04-24 20:29 svu
-
- * symbols/Makefile.am: new layouts by Ivan should be included into
- Makefile.am
-
-2004-04-24 13:32 pascal
-
- * symbols/ca: Remove 'pc' directory name from includes in Canadian
- keymap.
-
-2004-04-24 12:35 pascal
-
- * rules/base, symbols/az, symbols/ca, symbols/group, symbols/vn:
- Add Azeri, Canadian and Vietnamese keymaps.
-
-2004-04-24 02:23 svu
-
- * rules/base.xml.in, symbols/hr: Croatian US stuff appended
-
-2004-04-24 01:55 svu
-
- * rules/base, rules/base.xml.in, symbols/Makefile.am, symbols/pl,
- symbols/pl2: second polish layout is merged
-
-2004-04-24 01:28 svu
-
- * keymap/macintosh, keymap/sony, keymap/xfree86, keymap/xfree98,
- rules/base.lst, rules/base.xml.in, symbols/Makefile.am,
- symbols/ch, symbols/cz, symbols/cz_qwerty, symbols/ge,
- symbols/ge_la, symbols/ge_ru, symbols/il, symbols/il_phonetic,
- symbols/lt, symbols/mt, symbols/mt_us, symbols/ro, symbols/se_FI,
- symbols/se_NO, symbols/se_SE, symbols/sk, symbols/sk_qwerty,
- symbols/syr, symbols/syr_phonetic, symbols/th, symbols/th_pat,
- symbols/th_tis, symbols/us_intl: a lot of layouts cleaned up -
- but way way more to go
-
-2004-04-23 00:46 svu
-
- * Makefile.am, configure.in, compiled/.cvsignore,
- compiled/Makefile.am, compiled/README: The 'compiled' directory
- is really necessary. Even if it is empty
-
-2004-04-22 00:39 svu
-
- * po/af.po, po/az.po, po/bg.po, po/cs.po, po/da.po, po/fr.po,
- po/hu.po, po/nl.po, po/ru.po, po/sk.po, po/sq.po, po/sr.po,
- po/sv.po, po/tr.po, po/uk.po, po/xkbdesc.pot, po/zh_CN.po,
- rules/Makefile.am, symbols/Makefile.am, symbols/al, symbols/am,
- symbols/ar, symbols/be, symbols/ben, symbols/br, symbols/by,
- symbols/ch, symbols/cz, symbols/cz_qwerty, symbols/de,
- symbols/dk, symbols/dvorak, symbols/ee, symbols/el,
- symbols/en_US, symbols/es, symbols/fi, symbols/fo, symbols/fr,
- symbols/fr-latin9, symbols/gb, symbols/ge_la, symbols/hr,
- symbols/ie, symbols/il, symbols/is, symbols/it, symbols/la,
- symbols/latin, symbols/lt, symbols/lv, symbols/mk, symbols/ml,
- symbols/mt, symbols/mt_us, symbols/nl, symbols/no, symbols/ogham,
- symbols/pc, symbols/pl, symbols/pl2, symbols/pt, symbols/ro,
- symbols/ru, symbols/sapmi, symbols/se, symbols/se_FI,
- symbols/se_NO, symbols/se_SE, symbols/si, symbols/sk,
- symbols/sk_qwerty, symbols/sr, symbols/syr, symbols/syr_phonetic,
- symbols/th, symbols/tml, symbols/tr, symbols/ua, symbols/us,
- symbols/us_intl, symbols/uz, symbols/yu: adding Swiss layouts and
- removing references to pc/ from files
-
-2004-04-21 00:19 svu
-
- * symbols/: Makefile.am, bs, srvr_ctrl: Bosninan layout was
- forgotten
-
-2004-04-19 23:57 svu
-
- * symbols/: Makefile.am, altwin, compose, ctrl, group, inet,
- keypad, level3, lock: adding all-important option files
-
-2004-04-16 00:58 svu
-
- * configure.in, xkbdesc.spec.in, rules/Makefile.am: now, the
- symlinks allow distributors to use their own names for the rules
- - though not really recommended, we have to be
- backward-compatible
-
-2004-04-15 00:33 svu
-
- * COPYING, Makefile.am, xkbdesc.spec.in, po/af.po, po/az.po,
- po/bg.po, po/cs.po, po/da.po, po/fr.po, po/hu.po, po/nl.po,
- po/ru.po, po/sk.po, po/sq.po, po/sr.po, po/sv.po, po/tr.po,
- po/uk.po, po/xkbdesc.pot, po/zh_CN.po: COPYING added - MIT
- license (thanks to Keithp). Some minor fixes on infrastructure
-
-2004-04-12 00:13 svu
-
- * .cvsignore, Makefile.am, autogen.sh, configure.in, rules/base,
- symbols/Makefile.am: First buildable version
-
-2004-04-11 23:03 svu
-
- * configure.in, keycodes/Makefile.am, keymap/.cvsignore,
- keymap/Makefile.am, po/af.po, po/az.po, po/bg.po, po/cs.po,
- po/da.po, po/fr.po, po/hu.po, po/nl.po, po/ru.po, po/sk.po,
- po/sq.po, po/sr.po, po/sv.po, po/tr.po, po/uk.po, po/xkbdesc.pot,
- po/zh_CN.po, rules/.cvsignore, rules/Makefile.am,
- semantics/.cvsignore, semantics/Makefile.am, symbols/.cvsignore,
- types/.cvsignore, types/Makefile.am: more automake foo - but
- still far from building the whole thing
-
-2004-04-10 03:22 svu
-
- * autogen_gnome.sh, keycodes/.cvsignore, keycodes/Makefile.am: more
- makefiles.am - but still long way to the first build
-
-2004-04-10 03:08 svu
-
- * Makefile.am, README, README.config, README.enhancing,
- configure.in, xfree86.xml.in, xfree86_xkb_xml.spec.in, xkb.dtd,
- xkbdesc.spec.in, compat/.cvsignore, compat/Makefile.am,
- compat/README, compat/accessx, compat/basic, compat/complete,
- compat/default, compat/group_led, compat/iso9995, compat/japan,
- compat/keypad, compat/leds, compat/misc, compat/mousekeys,
- compat/norepeat, compat/pc, compat/pc98, compat/xfree86,
- compat/xtest, geometry/.cvsignore, geometry/Makefile.am,
- geometry/README, geometry/amiga, geometry/ataritt,
- geometry/chicony, geometry/dell, geometry/everex,
- geometry/fujitsu, geometry/hp, geometry/keytronic,
- geometry/kinesis, geometry/macintosh, geometry/microsoft,
- geometry/nec, geometry/northgate, geometry/pc, geometry/sony,
- geometry/sun, geometry/winbook, keycodes/README,
- keycodes/aliases, keycodes/amiga, keycodes/ataritt,
- keycodes/fujitsu, keycodes/hp, keycodes/ibm, keycodes/macintosh,
- keycodes/powerpcps2, keycodes/sony, keycodes/sun,
- keycodes/xfree86, keycodes/xfree98, keymap/README, keymap/amiga,
- keymap/ataritt, keymap/macintosh, keymap/sony, keymap/xfree86,
- keymap/xfree98, po/POTFILES.in, po/af.po, po/az.po, po/bg.po,
- po/cs.po, po/da.po, po/fr.po, po/hu.po, po/nl.po, po/ru.po,
- po/sk.po, po/sq.po, po/sr.po, po/sv.po, po/tr.po, po/uk.po,
- po/zh_CN.po, rules/README, rules/base, rules/base-it.lst,
- rules/base.lst, rules/base.xml.in, rules/sgi, rules/sgi.lst,
- rules/sun, rules/sun.lst, rules/xfree98, rules/xfree98.lst,
- rules/xkb.dtd, rules/xml2lst.pl, semantics/basic,
- semantics/complete, semantics/default, semantics/xtest,
- symbols/al, symbols/am, symbols/ar, symbols/be, symbols/ben,
- symbols/bg, symbols/br, symbols/by, symbols/cz,
- symbols/cz_qwerty, symbols/de, symbols/dev, symbols/dk,
- symbols/dvorak, symbols/dz, symbols/ee, symbols/el,
- symbols/en_US, symbols/es, symbols/fi, symbols/fo, symbols/fr,
- symbols/fr-latin9, symbols/gb, symbols/ge_la, symbols/ge_ru,
- symbols/guj, symbols/gur, symbols/hr, symbols/ie, symbols/il,
- symbols/il_phonetic, symbols/ir, symbols/is, symbols/it,
- symbols/iu, symbols/kan, symbols/la, symbols/latin, symbols/lo,
- symbols/lt, symbols/lv, symbols/mk, symbols/ml, symbols/mm,
- symbols/mt, symbols/mt_us, symbols/nl, symbols/no, symbols/ogham,
- symbols/ori, symbols/pc, symbols/pl, symbols/pl2, symbols/pt,
- symbols/ro, symbols/ru, symbols/sapmi, symbols/se, symbols/se_FI,
- symbols/se_NO, symbols/se_SE, symbols/si, symbols/sk,
- symbols/sk_qwerty, symbols/sr, symbols/syr, symbols/syr_phonetic,
- symbols/tel, symbols/th, symbols/th_pat, symbols/th_tis,
- symbols/tj, symbols/tml, symbols/tr, symbols/ua, symbols/us,
- symbols/us_intl, symbols/uz, symbols/yu, types/README,
- types/basic, types/cancel, types/caps, types/complete,
- types/default, types/extra, types/iso9995, types/mousekeys,
- types/numpad, types/pc: first feed-in of the layouts. The
- revolution is coming
-
-2004-04-04 02:40 svu
-
- * configure.in, po/az.po: Azerbaijani translation, thanks to Metin
- Amiroff
-
-2004-04-04 01:14 svu
-
- * po/ru.po: Russian translation of the Syriac phonetic
-
-2004-04-04 01:12 svu
-
- * xfree86.xml.in: Syriac phonetic was not there
-
-2004-03-19 21:37 svu
-
- * configure.in: some more translations
-
-2004-03-19 21:37 svu
-
- * po/hu.po: Hungarian one
-
-2004-03-19 21:02 svu
-
- * po/: af.po, bg.po, cs.po, da.po, fr.po, nl.po, ru.po, sk.po,
- sq.po, sr.po, sv.po, tr.po, uk.po, zh_CN.po: three new
- translations
-
-2004-01-20 10:51 svu
-
- * po/ru.po: corrected tibetian language translation
-
-2004-01-19 14:41 svu
-
- * po/ru.po: updated Russian translation
-
-2004-01-19 14:41 svu
-
- * xfree86.xml.in: new items from Ivan
-
-2004-01-19 14:39 svu
-
- * xslt/xfree86.xsl: bugfix
-
-2004-01-09 14:44 svu
-
- * po/ru.po: up2date
-
-2004-01-09 14:43 svu
-
- * xfree86.xml.in: patch from Ivan - new items
-
-2004-01-07 09:32 svu
-
- * configure.in, po/fr.po: French translation, thanks to Michel
- Robitaille
-
-2004-01-06 16:20 svu
-
- * xfree86.xml.in, po/ru.po: updates from Ivan
-
-2004-01-03 14:43 svu
-
- * po/nl.po: new version, thanks to Elros
-
-2003-12-18 22:43 svu
-
- * .cvsignore, po/.cvsignore: little cleanup on messages
-
-2003-12-18 22:42 svu
-
- * Makefile.am, configure.in: little things for the latest intltool
-
-2003-12-18 22:39 svu
-
- * po/sk.po: Slovak translation, thanks to Zdenko Podobný
-
-2003-12-18 22:38 svu
-
- * po/da.po: Danish translation, thanks to Ole Laursen
-
-2003-12-18 22:34 svu
-
- * xfree86.xml.in: One more layout, one more variant, updates from
- Ivan
-
-2003-12-05 11:37 svu
-
- * xslt/xfree86.xsl: helper xslt - reduces the resulting file
-
-2003-12-05 10:39 svu
-
- * configure.in, po/tr.po: Turkish translation added, thanks to
- Nilgün Belma Bugüner
-
-2003-11-30 02:11 svu
-
- * configure.in, po/sr.po: Serbian translation added, thanks to
- Danilo Segan
-
-2003-11-29 04:06 svu
-
- * configure.in, po/zh_CN.po: Chinese simplified translation, thanks
- to Funda Wang
-
-2003-11-27 22:57 svu
-
- * configure.in, po/nl.po: NL translation. Thanks to Elros Cyriatan
-
-2003-11-27 21:19 svu
-
- * configure.in: added cs translation
-
-2003-11-27 21:15 svu
-
- * po/cs.po: First non-cyrillic translation. Thanks to Michal
- Bukovjan
-
-2003-11-25 23:52 svu
-
- * Makefile.am, NEWS, autogen_gnome.sh, configure.in,
- xfree86.xml.in, po/.cvsignore, po/Makevars, po/POTFILES.in,
- po/bg.po, po/ru.po, po/uk.po: Now the project should be buildable
- and translatable - but please no translations till the English
- version is approved
-
-2003-11-25 16:35 svu
-
- * .cvsignore, AUTHORS, Makefile.am, autogen.sh, configure.in,
- xfree86.xml.in, xfree86_xkb_xml.spec.in, xkb.dtd: first batch of
- files - but no translation yet
-
-2003-11-24 23:32 svu
-
- * README: first file in
-
+2009-12-21 Sergey Udaltsov
+
+ * symbols/ru: Added ru(typewriter-legacy),
+ https://bugs.freedesktop.org/show_bug.cgi?id=25726
+ * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
+ grp(lctrl_rctrl_switch),
+ https://bugs.freedesktop.org/show_bug.cgi?id=25727
+
+2009-11-27 Sergey Udaltsov
+
+ * symbols/se: Reintroduced the broken bar in the Swedish symbol
+ layout. http://bugs.freedesktop.org/show_bug.cgi?id=8491
+
+2009-11-25 Sergey Udaltsov
+
+ * rules/base.m_s.part, symbols/inet: a bit of optimization, K6C to map
+ to Eject, always in media section
+
+2009-11-24 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/lt: removed unneeded lt(balticplus),
+ http://bugs.freedesktop.org/show_bug.cgi?id=25263
+
+2009-11-21 Sergey Udaltsov
+
+ * ../rules/base.xml.in, ../symbols/pl: added pl(dvp),
+ http://bugs.freedesktop.org/show_bug.cgi?id=25200
+
+2009-11-18 Sergey Udaltsov
+
+ * symbols/tm: small fix for tm layout, related to Ctrl+? shortcuts
+ https://bugs.freedesktop.org/show_bug.cgi?id=25074
+
+2009-11-15 Octavio Alvarez
+
+ * rules/base.xml.in: Removed thinkpadintl from base.xml.in.
+
+2009-10-20 Sergey Udaltsov
+
+ * symbols/sun_vndr/us: added backspace mapping,
+ https://bugs.freedesktop.org/show_bug.cgi?id=24554
+
+2009-10-13 Sergey Udaltsov
+
+ * rules/base.lists.part, symbols/macintosh_vndr/Makefile.am,
+ symbols/macintosh_vndr/es: Spanish mac layout just included the
+ general one
+ * rules/base.xml.in, symbols/ch: fixed Swiss default layout, added
+ legacy variant, http://bugs.freedesktop.org/show_bug.cgi?id=24490
+
+2009-10-12 Sergey Udaltsov
+
+ * rules/base.xml.in: USA Russian Phonetic keyboard layout not found in
+ search by Languages - Russian,
+ http://bugs.freedesktop.org/show_bug.cgi?id=24485
+
+2009-09-30 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
+ grp:rctrl_rshift_toggle option,
+ http://bugs.freedesktop.org/show_bug.cgi?id=24234
+
+2009-09-29 Sergey Udaltsov
+
+ * configure.in, NEWS, po/*.po: preparing 1.7
+
+2009-09-15 Sergey Udaltsov
+
+ * symbols/es: addind dead_tilde,
+ https://bugs.freedesktop.org/show_bug.cgi?id=23876
+ * keycodes/sun, rules/base.m_k.part, rules/base.ml_s.part,
+ symbols/sun_vndr/us: fixed Sun keyboard model for type6,
+ https://bugs.freedesktop.org/show_bug.cgi?id=3952
+
+2009-09-08 Gaetan Nadon
+
+ * **/.cvsignore: remove cvsignore files.
+
+2009-09-02 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/by: restructured Belarussian variants,
+ https://bugs.freedesktop.org/show_bug.cgi?id=23604
+
+2009-08-28 Sergey Udaltsov
+
+ * symbols/no: updated layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=23518
+
+2009-08-20 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ caps:numlock, http://bugs.freedesktop.org/show_bug.cgi?id=23323
+
+2009-08-18 Peter Hutterer
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ caps:hyper, http://bugs.freedesktop.org/show_bug.cgi?id=23356
+
+2009-08-14 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ caps:none option, http://bugs.freedesktop.org/show_bug.cgi?id=23243
+ * rules/base.xml.in, symbols/it: added it(us),
+ http://bugs.freedesktop.org/show_bug.cgi?id=23263
+
+2009-08-04 Sergey Udaltsov
+
+ * geometry/Makefile.am, rules/base.lists.part, rules/base.m_g.part,
+ rules/base.xml.in: added TypeMatrix geometries,
+ http://bugs.freedesktop.org/show_bug.cgi?id=23136
+
+2009-07-19 Sergey Udaltsov
+
+ * symbols/vn: fixed accent typing,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22847
+
+2009-07-18 Sergey Udaltsov
+
+ * symbols/gb: fixed gb(colemak), several mappings added,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22735
+
+2009-07-14 Sergey Udaltsov
+
+ * rules/base.extras.xml.in, rules/extras/variantsMapping.lst,
+ symbols/extras/us: added us(crd) to extras,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22635
+
+2009-07-09 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/bg: updated bg variants,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22666
+
+2009-06-27 Sergey Udaltsov
+
+ * symbols/extras/us, rules/base.extras.xml.in,
+ rules/extras/variantsMapping.lst, symbols/extras/Makefile.am: Added 3
+ exotic us variants: ats, intl-unicode, alt-intl-unicode
+ http://bugs.freedesktop.org/show_bug.cgi?id=22004
+ http://bugs.freedesktop.org/show_bug.cgi?id=22446
+
+2009-06-22 Sergey Udaltsov
+
+ * .gitignore, configure.in, rules/Makefile.am,
+ rules/base.extras.xml.in, rules/base.l2_s.part, rules/base.l3_s.part,
+ rules/base.l4_s.part, rules/base.lists.part, rules/base.ml_s.part,
+ rules/bin/Makefile.am, rules/compat/ln_s.sh -> rules/bin/ln_s.sh,
+ rules/compat/lnv_s.sh -> rules/bin/lnv_s.sh, rules/compat/ml1_s.sh ->
+ rules/bin/ml1_s.sh, rules/compat/ml1v1_s.sh -> rules/bin/ml1v1_s.sh,
+ rules/compat/ml1v_s.sh -> rules/bin/ml1v_s.sh, rules/compat/ml_s.sh ->
+ rules/bin/ml_s.sh, rules/compat/mlv_s.sh -> rules/bin/mlv_s.sh,
+ rules/compat/Makefile.am, rules/compat/layoutsMapping.lst,
+ rules/compat/variantsMapping.lst, rules/extras/Makefile.am,
+ rules/extras/layoutsMapping.lst, symbols/extras/Makefile.am,
+ symbols/extras/rs: serious restructuring of the rules generation
+ scripts, for compat and extras. Also, adding exotic rs(combiningkeys)
+ variant, http://bugs.freedesktop.org/show_bug.cgi?id=21047
+
+2009-06-20 Sergey Udaltsov
+
+ * symbols/by: missing mappings,
+ https://bugs.freedesktop.org/show_bug.cgi?id=22386
+ * symbols/ca: fixed a couple of mappings in ca(shs)
+ http://bugs.freedesktop.org/show_bug.cgi?id=22388
+
+2009-06-19 Sergey Udaltsov
+
+ * symbols/de: small fix for a numbersign key,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19934
+
+2009-06-15 Sergey Udaltsov
+
+ * symbols/inet: fixing ABNT2-specific mapping for keypad dot key,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22303
+
+2009-06-14 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
+ creativedw7000 model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22261
+
+2009-06-12 Sergey Udaltsov
+
+ * symbols/us: added extra symbols to us(altgr-intl),
+ http://bugs.freedesktop.org/show_bug.cgi?id=22249
+
+2009-06-11 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ caps:super, http://bugs.freedesktop.org/show_bug.cgi?id=22184
+
+2009-06-09 Sergey Udaltsov
+
+ * symbols/ng: fixing 'e with dot below' in ng(olpc),
+ https://bugs.freedesktop.org/show_bug.cgi?id=20010
+ * rules/base.ml1_s.part: fixing misspeled variant name,
+ https://bugs.freedesktop.org/show_bug.cgi?id=15782
+ * symbols/tr: lost credits added,
+ https://bugs.freedesktop.org/show_bug.cgi?id=22079
+ * rules/base.xml.in, symbols/ru: added ru(bak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=22101
+
+2009-05-31 Sergey Udaltsov
+
+ * symbols/altwin: setting explicit TWO_LEVEL on sections mapping RALT
+ , it is often ONE_LEVEL because of LEVEL3. Fixed
+ http://bugs.freedesktop.org/show_bug.cgi?id=21761
+
+2009-05-24 Sergey Udaltsov
+
+ * symbols/ua: fixed all references, from ua(basic) to ua(legacy),
+ finalizing http://bugs.freedesktop.org/show_bug.cgi?id=21302
+
+2009-05-18 Sergey Udaltsov
+
+ * symbols/de: adding acute to de(nodeadkeys),
+ http://bugs.freedesktop.org/show_bug.cgi?id=21794
+
+2009-05-12 Sergey Udaltsov
+
+ * NEWS, configure.in: bumping the release number
+
+2009-05-12 ReÅŸat SABIQ
+
+ * configure.in (new locale), po/crh.po:
+ Added crh.po as well (as was done originally on January 30),
+ based on Peter Hutterer's feedback regarding build process;
+ http://bugs.freedesktop.org/show_bug.cgi?id=19730
+
+2009-05-11 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/pl: polished the description for
+ pl(dvorak_altquotes)
+
+2009-05-11 ReÅŸat SABIQ
+
+ * configure.in (new locale), rules/base.xml.in,
+ symbols/ro, symbols/tr, symbols/ua, symbols/uz:
+ Added Crimean Tatar (Crimean Turkish) layouts;
+ http://bugs.freedesktop.org/show_bug.cgi?id=19730
+
+2009-05-07 Sergey Udaltsov
+
+ * symbols/ru: fixed Kalmyk variant
+
+2009-05-01 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ru: added ru(phonetic_winkeys),
+ http://bugs.freedesktop.org/show_bug.cgi?id=21474
+
+2009-04-29 Sergey Udaltsov
+
+ * rules/base.xml.in: fixed wrong locale code,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21451
+
+2009-04-25 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/Makefile.am,
+ symbols/pc, symbols/srvr_ctrl: Make C-A-Bksp an option,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21274
+
+2009-04-23 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ua: making ua(unicode) default,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21302
+
+2009-04-22 Sergey Udaltsov
+
+ * rules/compat/ln_s.sh, rules/compat/ml1_s.sh: improved compat rules,
+ hopefully fixing http://bugs.freedesktop.org/show_bug.cgi?id=8452
+
+2009-04-15 Sergey Udaltsov
+
+ * symbols/kr: fixed ordering issue,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21211
+
+2009-04-14 Sergey Udaltsov
+
+ * symbols/kg: small update of the Kyrgyz layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17505
+ * rules/base.xml.in, symbols/gb: added gb(extd),
+ http://bugs.freedesktop.org/show_bug.cgi?id=21121
+
+2009-04-03 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/tm: added Turkmen layout+variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21015
+ * symbols/rs: splitting latlevel3 and cyrlevel3,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21044
+ * rules/base.m_s.part, rules/base.xml.in: Cherry B.UMLIMITED dummy
+ model, http://bugs.freedesktop.org/show_bug.cgi?id=21002
+
+2009-03-17 Sergey Udaltsov
+
+ * symbols/de: some useful symbols added on high shift levels,
+ http://bugs.freedesktop.org/show_bug.cgi?id=20551
+
+2009-03-16 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/kg: fixed Kyrgyz
+ variants, http://bugs.freedesktop.org/show_bug.cgi?id=17505
+
+2009-03-07 Sergey Udaltsov
+
+ * rules/base.m_s.part, rules/base.xml.in: added trust_slimline model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=20513
+
+2009-03-04 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/altwin, symbols/pc:
+ putting altwin:super_win into default configuration,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19500
+
+2009-03-03 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.ml1_s.part, rules/base.ml_s.part:
+ use br(thinkpad) for all thinkpads,
+ http://bugs.freedesktop.org/show_bug.cgi?id=20425
+
+2009-03-02 Sergey Udaltsov
+
+ * po/POTFILES.in: removed evdev.xml.in, which is exact copy of
+ base.xml.in (and not distributed),
+ http://bugs.freedesktop.org/show_bug.cgi?id=20107
+
+2009-02-26 Sergey Udaltsov
+
+ * symbols/fi: added missing (in pc101) mappings, on 4th level,
+ https://bugs.freedesktop.org/show_bug.cgi?id=20300
+ * keycodes/evdev, keycodes/xfree86, keymap/xfree86,
+ rules/base.lists.part, rules/base.m_k.part, rules/base.xml.in,
+ rules/evdev.m_k.part: dropping national-specific models abnt2, jp106,
+ kr106. The corresponding geometries are left in the codebase, for some
+ while
+
+2009-02-25 Sergey Udaltsov
+
+ * symbols/ru: missing minus and underscore are added to ru(phonetic),
+ http://bugs.freedesktop.org/show_bug.cgi?id=20093
+
+2009-02-19 Sergey Udaltsov
+
+ * keycodes/evdev, keycodes/xfree86, rules/base.m_k.part: merged
+ xfree86(jp106) section to basic xfree86 keycodes
+
+2009-02-14 Sergey Udaltsov
+
+ * symbols/sn, rules/base.xml.in, symbols/Makefile.am: added wolof
+ layout, http://bugs.freedesktop.org/show_bug.cgi?id=20004
+
+2009-02-13 Sergey Udaltsov
+
+ * symbols/inet: adding missing mappings to evdev,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18854
+ * rules/base.xml.in: added lost lt(balticplus),
+ http://bugs.freedesktop.org/show_bug.cgi?id=20092
+
+2009-02-05 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/in: added in(hin-wx),
+ http://bugs.freedesktop.org/show_bug.cgi?id=19753
+
+2009-02-04 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ru: added ru(dos),
+ http://bugs.freedesktop.org/show_bug.cgi?id=19880
+
+2009-02-01 Sergey Udaltsov
+
+ * rules/base.xml.in: fixed metainfo for fi(smi),
+ http://bugs.freedesktop.org/show_bug.cgi?id=19841
+ * rules/base.lists.part, rules/evdev.m_s.part: some kbds need tweaking
+ even with evdev, adding $evdevkbds (asked by Peter)
+ * symbols/inet: added battery key (asked by Peter)
+ * README: fixed docs url,
+ http://bugs.freedesktop.org/show_bug.cgi?id=9764
+
+2009-01-28 Sergey Udaltsov
+
+ * rules/base.ml_s.part: fixed sun-related rules,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15782
+ * rules/base.m_s.part, rules/base.xml.in, symbols/inet: added
+ geniuskkb2050hs model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19694
+ * geometry/dell, rules/base.m_g.part: added latitude geometry,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19750
+ * rules/base.xml.in, symbols/Makefile.am, symbols/brai,
+ symbols/braille: moved Braille symbols to the proper location,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19695
+ * symbols/capslock: keep Escape working in caps:escape,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19795
+ * rules/base.o_s.part, rules/base.xml.in, symbols/level3: added
+ lv3:enter_switch, http://bugs.freedesktop.org/show_bug.cgi?id=19773
+ * rules/base.xml.in, symbols/ca: added ca(eng) for convenience,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19707
+
+2009-01-27 Sergey Udaltsov
+
+ * symbols/typo: fixed text selection,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14022
+ * symbols/be: added missing character,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19751
+ * symbols/fr: fixed . on numpad, period->KP_Decimal,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19756
+ * NEWS, configure.in: preparing 1.5
+
+2009-01-24 Sergey Udaltsov
+
+ * rules/base.xml.in: added SV and US to the country list for latam,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19710
+
+2009-01-22 Sergey Udaltsov
+
+ * symbols/fi: updated default Finnish variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18742
+
+2009-01-13 Sergey Udaltsov
+
+ * symbols/typo, rules/base.l1o_s.part, rules/base.l2o_s.part,
+ rules/base.l3o_s.part, rules/base.l4o_s.part, rules/base.lo_s.part,
+ rules/base.xml.in, symbols/Makefile.am: added (inactive so far)
+ misc:typo option, first step to close
+ https://bugs.freedesktop.org/show_bug.cgi?id=14022
+
+2009-01-12 Sergey Udaltsov
+
+ * rules/Makefile.am, rules/merge.sh: fix the build (thanks to Oswald
+ Buddenhagen)
+
+2009-01-11 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ option to use capslock as backspace,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19508
+ * rules/base.xml.in, symbols/lt: removed unneeded variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14096
+ * rules/base.xml.in, symbols/fr: added Breton variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19506
+
+2009-01-10 Sergey Udaltsov
+
+ * rules/base.xml.in: More improvements(?) in descriptions, to make
+ them shorter
+
+2009-01-08 Sergey Udaltsov
+
+ * rules/base.xml.in: slightly reorganized descriptions for the group
+ related to switchers
+
+2009-01-06 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/es, symbols/latam: added dead tilde
+ variants, http://bugs.freedesktop.org/show_bug.cgi?id=12568
+ * rules/base.xml.in, rules/compat/variantRename.lst, symbols/in,
+ symbols/pk: updated Urdu variants,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8091
+
+2009-01-03 Sergey Udaltsov
+
+ * rules/compat/ln_s.sh, rules/compat/ml1_s.sh: fixed compat layout
+ renaming involving variants on replacement, part of the fix for
+ http://bugs.freedesktop.org/show_bug.cgi?id=8452
+
+2008-12-30 Sergey Udaltsov
+
+ * symbols/fi: updated 2 mappings according to the new standard,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18742
+
+2008-12-29 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/inet: added compal fl90,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15820
+ * rules/base.m_s.part, rules/base.xml.in: added btc9116u model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15871
+ * symbols/gb: fixed gb dvorak,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18244
+ * symbols/us: removed explicit CAPS mapping,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18320
+
+2008-12-28 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/de: updated neo variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19308
+
+2008-12-26 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.m_s.part, symbols/inet: using
+ acpi_common wherever possible, dropping (aliasing) unneeded models
+
+2008-12-25 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
+ chicony0420 model, http://bugs.freedesktop.org/show_bug.cgi?id=15813
+ * symbols/inet: updated cymotionlinux model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15783
+
+2008-12-24 Sergey Udaltsov
+
+ * symbols/inet: consolidated a lot of mappings into nav_common
+
+2008-12-21 Sergey Udaltsov
+
+ * docs/README.enhancing: fixing the location of XKB proto docs,
+ http://bugs.freedesktop.org/show_bug.cgi?id=9764
+ * rules/base.xml.in, symbols/be: added oss variants,
+ http://bugs.freedesktop.org/show_bug.cgi?id=8854
+ * rules/base.m_s.part, rules/base.xml.in: added microsoftccurve2k
+ model http://bugs.freedesktop.org/show_bug.cgi?id=9772
+ * symbols/inet: changing globally XF86Refresh to XF86Reload,
+ http://bugs.freedesktop.org/show_bug.cgi?id=10751
+ * COPYING: added missing copyright notices,
+ http://bugs.freedesktop.org/show_bug.cgi?id=11095
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added model
+ unitek_kb1925, http://bugs.freedesktop.org/show_bug.cgi?id=11579
+
+2008-12-18 Sergey Udaltsov
+
+ * keycodes/macintosh, rules/base.m_k.part, rules/base.o_k.part:
+ dropped the goodmap and badmap keycodes for apple - needed for a very
+ old kernels only. http://bugs.freedesktop.org/show_bug.cgi?id=9095
+
+2008-12-17 Sergey Udaltsov
+
+ * symbols/capslock, symbols/compose, symbols/ctrl: fix lock modifier
+ for jp, making "CAPS" replace key,
+ http://bugs.freedesktop.org/show_bug.cgi?id=8805
+
+2008-12-15 Sergey Udaltsov
+
+ * symbols/ru: added Kalmyk variant, thanks to Anatoly Mironov and
+ others
+
+2008-12-12 Sergey Udaltsov
+
+ * symbols/fr: fixed bepo variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17821
+ * symbols/ara: restoring presentation forms,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18833
+ * rules/base.xml.in, rules/base.m_s.part: added targa_v811 model,
+ https://bugs.freedesktop.org/show_bug.cgi?id=5722
+
+2008-11-30 Sergey Udaltsov
+
+ * symbols/gr: added ralt switch to Greek default layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18819
+ * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
+ win_menu_switch option,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18557
+
+2008-11-29 Sergey Udaltsov
+
+ * compat/level5: finally using Level5 characters,
+ https://bugs.freedesktop.org/show_bug.cgi?id=4411
+ * rules/base.xml.in: generalized Fujitsu-Siemens Amilo laptops, also
+ closing http://bugs.freedesktop.org/show_bug.cgi?id=5694
+ * rules/base.o_s.part, rules/base.xml.in, symbols/epo: added a couple
+ of Esperanto options,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18142
+
+2008-11-27 Sergey Udaltsov
+
+ * ChangeLog, rules/base.lists.part, rules/base.xml.in, symbols/inet:
+ added cymotion expert model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18718
+
+2008-11-26 Sergey Udaltsov
+
+ * keycodes/evdev: fixed ABNT2 keycodes,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18712
+ * keycodes/amiga, keycodes/ataritt, keycodes/fujitsu,
+ keycodes/macintosh, keycodes/sgi_vndr/indigo, keycodes/sgi_vndr/indy,
+ keycodes/sun, keycodes/xfree98: set keycode ranges 8-255, universally,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12538
+
+2008-11-22 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
+ grp(alt_space_toggle) option,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15772
+ * symbols/ca, symbols/et, symbols/tr: small OLPC fixes,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18645
+
+2008-11-20 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added HP dv5
+ keyboard, thanks to Giuseppe Bilotta
+
+2008-11-18 Sergey Udaltsov
+
+ * symbols/it: fixing it(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=18565
+
+2008-11-08 Sergey Udaltsov
+
+ * symbols/inet: using inet(acpi) wherever possible, fixing apple
+ section (thanks to Otavio Salvador)
+ * symbols/pl: missing mappings, thanks to Otavio and Debian
+
+2008-11-06 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ capslock(escape)
+
+2008-10-18 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/keypad,
+ symbols/kpdl: added 2 keypad options (hex and atm), also kpdl:semi,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17110
+ * rules/base.xml.in, symbols/de: added de(qwerty)
+
+2008-10-14 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/keypad: removed
+ keypad:phone_hex option, to be replaced with newer one
+ http://bugs.freedesktop.org/show_bug.cgi?id=17110
+
+2008-10-13 Sergey Udaltsov
+
+ * keycodes/evdev: fixed keycode comment from Peter Hutterer
+ * rules/base.xml.in, symbols/tj: cleaning the mess with tj variants,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17975
+
+2008-10-11 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/de: added Lower Sorbian variants,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17855
+ * rules/base.xml.in, symbols/tj: added 2 new variants, std and legacy,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17975
+ * rules/base.o_t.part, rules/base.xml.in, types/numpad: added
+ numpad(shift3) option,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17110
+
+2008-10-03 Sergey Udaltsov
+
+ * symbols/ru: fix typewriter layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17881
+
+2008-09-30 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/altwin: added
+ Mac-like modifiers positioning,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15655
+ * NEWS, configure.in: preparing 1.4
+
+2008-09-26 Sergey Udaltsov
+
+ * symbols/is: fixed AC11 mapping,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17786
+
+2008-09-24 Sergey Udaltsov
+
+ * rules/base.xml.in: all descriptions are prefixed with underscore,
+ to make them translatable,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17587
+
+2008-09-19 Sergey Udaltsov
+
+ * keycodes/evdev, symbols/inet: fixed evdev for abnt2 and jp106
+ http://bugs.freedesktop.org/show_bug.cgi?id=17656
+
+2008-09-18 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in: more mismatches fixed,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17622
+
+2008-09-17 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in: fixed mismatch,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17622
+
+2008-09-15 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock,
+ symbols/cz: added cz(ucw) and couple of options,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17587
+ * rules/base.xml.in, symbols/gr: updated greek variants,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17459
+
+2008-09-12 Sergey Udaltsov
+
+ * geometry/pc: added another pc geometry, with L-shaped Enter,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17513
+
+2008-09-10 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added model
+ sven303, http://bugs.freedesktop.org/show_bug.cgi?id=17518
+
+2008-09-02 Sergey Udaltsov
+
+ * symbols/inet: fixed fscaa1667g,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17389
+ * symbols/fr: fixed invalid keysym,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17388
+ * rules/base.xml.in: some fixes for minor issues
+ * rules/base.xml.in, symbols/gb: added gb(dvorakukp),
+ http://bugs.freedesktop.org/show_bug.cgi?id=17370
+
+2008-08-16 Sergey Udaltsov
+
+ * rules/evdev.m_k.part, rules/evdev.m_s.part, keycodes/evdev,
+ po/POTFILES.in, po/xkeyboard-config.pot, rules/Makefile.am: implement
+ special ruleset for evdev driver
+ * added missing chars to Gurmukhi,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17163
+
+2008-08-06 Sergey Udaltsov
+
+ * compat/Makefile.am, geometry/Makefile.am, keycodes/Makefile.am,
+ keymap/Makefile.am, rules/compat/Makefile.am, semantics/Makefile.am,
+ symbols/Makefile.am, types/Makefile.am, xkbrules.am: improving the
+ build, http://bugs.freedesktop.org/show_bug.cgi?id=17008
+
+2008-08-03 Sergey Udaltsov
+
+ * rules/compat/variantRename.lst: fixing compat rules for Romania,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16872
+ * symbols/mt: fixed Maltese layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16966
+ * symbols/fr: fixed fr(dvorak), making it legal
+ http://bugs.freedesktop.org/show_bug.cgi?id=15407
+
+2008-07-28 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
+ ibm_spacesaver model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16767
+
+2008-07-22 Sergey Udaltsov
+
+ * rules/base.xml.in: fixed typo,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16806
+
+2008-07-20 Sergey Udaltsov
+
+ * symbols/inet: fixed typo,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16752
+
+2008-07-08 Sergey Udaltsov
+
+ * symbols/us: fixing us(mac),
+ https://bugs.freedesktop.org/show_bug.cgi?id=16641
+
+2008-07-01 Sergey Udaltsov
+
+ * symbols/is, rules/base.xml.in: added is(dvorak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=16557
+
+2008-06-27 Sergey Udaltsov
+
+ * symbols/level5: using normal level5 keysyms
+ * rules/compat/ln_s.sh, rules/compat/lnv_s.sh, rules/compat/ml1_s.sh,
+ rules/compat/ml1v1_s.sh, rules/compat/ml1v_s.sh, rules/compat/ml_s.sh,
+ rules/compat/mlv_s.sh: fixed build process, thanks to Oswald
+ Buddenhagen
+
+2008-06-22 Sergey Udaltsov
+
+ * symbols/tj: sorted and fixed tj layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16448
+
+2008-06-12 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/keypad: added
+ keypad:phone_hex, http://bugs.freedesktop.org/show_bug.cgi?id=16298
+
+2008-06-09 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/us: added us(chr),
+ http://bugs.freedesktop.org/show_bug.cgi?id=16283
+
+2008-06-06 Sergey Udaltsov
+
+ * geometry/pc: removed unneeded space,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16258
+
+2008-06-04 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ru: added ru(sah),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15872
+
+2008-06-01 Sergey Udaltsov
+
+ * rules/base.xml.in, rules/base.lists.part, symbols/inet: added
+ microsoft7000, http://bugs.freedesktop.org/show_bug.cgi?id=16087
+ * keycodes/xfree86, rules/base.m_g.part, rules/base.m_k.part,
+ rules/base.m_s.part, rules/base.xml.in: added model thinkpadz60,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15999
+
+2008-05-31 Sergey Udaltsov
+
+ * symbols/gb, symbols/hu: fixed utf8
+
+2008-05-31 Sergey Udaltsov
+
+ * symbols/ru: fixed some includes, from common to winkeys (broken in
+ previous release)
+
+2008-05-30 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ca: added ca(kut),
+ http://bugs.freedesktop.org/show_bug.cgi?id=16048
+
+2008-05-27 Sergey Udaltsov
+
+ * symbols/inet: WWW is mapped to I02, because of some changes in
+ kernel or X server (on nx9020),
+ http://bugs.freedesktop.org/show_bug.cgi?id=7310
+ * symbols/us: fixed one-handed dvorak variants (dropped second group),
+ http://bugs.freedesktop.org/show_bug.cgi?id=5659
+ * symbols/fi: returned nbsp to 3rd level of space,
+ http://bugs.freedesktop.org/show_bug.cgi?id=12764
+ * configure.in, NEWS: preparing 1.3
+
+2008-05-12 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ro: changed default Romanian variant to
+ the right one, http://bugs.freedesktop.org/show_bug.cgi?id=13277
+
+2008-05-09 Sergey Udaltsov
+
+ * rules/compat/variantRename.lst, symbols/ru: default variant is
+ winkeys (till Daniel fixes xkbcomp)
+ * symbols/ua: small fix, from Andriy
+
+2008-05-01 Sergey Udaltsov
+
+ * po/POTFILES.in, rules/Makefile.am, rules/sgi*, rules/sun*: dropping
+ legacy unsupported rules. Confirmed with Alan Coopersmith (Sun
+ Microsystems)
+
+2008-04-30 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/us: added us(dvp),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15727
+
+2008-04-29 Sergey Udaltsov
+
+ * symbols/ca: fixed ca(shs),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15756
+
+2008-04-23 Sergey Udaltsov
+
+ * symbols/es: revert broken idea about dead tilde,
+ http://bugs.freedesktop.org/show_bug.cgi?id=9763
+ * symbols/latam: revert broken idea about dead tilde,
+ http://bugs.freedesktop.org/show_bug.cgi?id=12568
+
+2008-04-22 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/fr, symbols/nbsp,
+ types/pc: options for nonbreakspace handling,
+ http://bugs.freedesktop.org/show_bug.cgi?id=9529
+ * symbols/fi: dropping bad nbsp mapping,
+ http://bugs.freedesktop.org/show_bug.cgi?id=12764
+
+2008-04-21 Sergey Udaltsov
+
+ * rules/base.xml.in: fixed some ISO codes
+
+2008-04-19 Sergey Udaltsov
+
+ * symbols/ru, rules/base.xml.in, rules/compat/variantRename.lst:
+ changed ru(winkeys) to default
+ * rules/base.xml.in: put a lot of country/language info in
+
+2008-04-12 Sergey Udaltsov
+
+ * symbols/it: fixed it(geo),
+ https://bugs.freedesktop.org/show_bug.cgi?id=15058
+
+2008-04-07 Sergey Udaltsov
+
+ * symbols/group, rules/base.xml.in, rules/base.o_s.part: added
+ group(shift_caps_switch)
+ http://bugs.freedesktop.org/show_bug.cgi?id=15383
+
+2008-04-01 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/gb: added gb(colemak),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15303
+
+2008-03-30 Sergey Udaltsov
+
+ * symbols/gn, symbols/ng: fixed unicode sequences,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15273
+ * rules/base.xml.in, symbols/ua: added ua(homophonic),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15240
+
+2008-03-28 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/compose: added
+ compose:102, http://bugs.freedesktop.org/show_bug.cgi?id=15246
+
+2008-03-22 Sergey Udaltsov
+
+ * symbols/fr: fixed fr(oss_nodeadkeys),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15140
+
+2008-03-06 Sergey Udaltsov
+
+ * rules/base.lists.part, symbols/ca, symbols/fr: added ca(olpc),
+ removed fr(olpc), http://bugs.freedesktop.org/show_bug.cgi?id=14749
+
+2008-03-03 Sergey Udaltsov
+
+ * rules/base.lists.part, symbols/fr: added fr(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14749
+ * symbols/lv: fixed lv accented characters,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14765
+ * rules/base.lists.part, symbols/it: added it(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14793
+
+2008-03-01 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.m_s.part, rules/base.xml.in,
+ symbols/inet: reorganizing keyboard in symbols/inet. Some models are
+ now implemented as "virtual" (by rules only).
+ http://bugs.freedesktop.org/show_bug.cgi?id=14665
+
+2008-02-28 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/in: added in(jhelum), other indian fixes,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14595
+ * symbols/jp: small fix,
+ http://bugs.freedesktop.org/show_bug.cgi?id=8648
+
+2008-02-16 Sergey Udaltsov
+
+ * symbols/cz, symbols/sk: dropping KPDL mapping,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14479
+
+2008-02-12 Sergey Udaltsov
+
+ * keycodes/sun, symbols/sun_vndr/us, rules/base.ml_s.part,
+ rules/base.xml.in: sun type6 kbd,
+ http://bugs.freedesktop.org/show_bug.cgi?id=13664
+
+2008-02-05 Sergey Udaltsov
+
+ * symbols/af: fixed AE09 in af(olpc-ps),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14379
+
+2008-02-04 Sergey Udaltsov
+
+ * symbols/kh, rules/base.lists.part: added kh(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14376
+
+2008-02-02 Sergey Udaltsov
+
+ * symbols/lt, rules/base.xml.in: added lt(lekp) etc,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14096
+
+2008-01-31 Sergey Udaltsov
+
+ * symbols/af, rules/base.xml.in, rules/base.lists.part: changing
+ af(olpc-da) to af(olpc-fa),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14319
+ * symbols/in: fixed space in in(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14224
+
+2008-01-30 Sergey Udaltsov
+
+ * symbols/ca, rules/base.xml.in: adding ca(shs), closing
+ http://bugs.freedesktop.org/show_bug.cgi?id=14308
+ * symbols/mn: added mn(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14307
+ * symbols/tr: fixed Turkish layouts,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14286
+ * symbols/es, rules/base.xml.in: added es(ast),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14277
+ * symbols/am, rules/base.lists.part: added am(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14226
+ * symbols/af: fixed some keysyms,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14309
+
+2008-01-29 Sergey Udaltsov
+
+ * NEWS, configure.in: preparing release 1.2
+
+2008-01-24 Sergey Udaltsov
+
+ * symbols/af, symbols/ara, symbols/et, symbols/group, symbols/in,
+ symbols/kz, symbols/np, symbols/pk, symbols/ru, symbols/th,
+ symbols/us: separating group(olpc), closing
+ http://bugs.freedesktop.org/show_bug.cgi?id=14225
+
+2008-01-21 Sergey Udaltsov
+
+ * symbols/gr: Polytonic Greek: Use new keysyms for dead psili and
+ dasia, http://bugs.freedesktop.org/show_bug.cgi?id=13275
+
+2008-01-11 Sergey Udaltsov
+
+ * rules/base.lists.part, symbols/in: added in(olpc), by Bernardo
+ Innocenti
+
+2008-01-07 Sergey Udaltsov
+
+ * geometry/thinkpad, keycodes/xfree86, rules/base.lists.part,
+ rules/base.m_g.part, rules/base.m_k.part, rules/base.xml.in,
+ symbols/inet: added thinkpad60 model (with geometry),
+ https://bugs.freedesktop.org/show_bug.cgi?id=13954
+
+2008-01-05 Sergey Udaltsov
+
+ * symbols/us: add (left,right)singlequotemark to us(-altgr)-intl
+ keymap, https://bugs.freedesktop.org/show_bug.cgi?id=13935
+
+2008-01-04 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.xml.in: adding BTC
+ 6301URF, https://bugs.freedesktop.org/show_bug.cgi?id=13913
+ * symbols/macintosh_vndr/fr: added nodeadkeys,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13934
+
+2008-01-03 Sergey Udaltsov
+
+ * symbols/pl, rules/base.xml.in: added pl(ru_phonetic_dvorak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=13900
+
+2008-01-02 Sergey Udaltsov
+
+ * symbols/ro, rules/base.xml.in: small fixes for Romanian visible
+ strings from
+ https://bugs.freedesktop.org/show_bug.cgi?id=13277
+ * rules/base.xml.in, rules/compat/variantRename.lst, symbols/fr,
+ symbols/ge: moving ge(azerty_tscapo) to fr(geo), since that layout is
+ only used in France, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=13644
+ * symbols/ara: remove presentation forms from Arabic layout,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13894
+
+2007-12-31 Sergey Udaltsov
+
+ * symbols/ro, rules/base.xml.in, rules/compat/variantRename.lst:
+ temporarily (partially) reverting
+ https://bugs.freedesktop.org/show_bug.cgi?id=13277
+
+2007-12-27 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: adding xkb
+ option caps:swapescape,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13824
+
+2007-12-26 Sergey Udaltsov
+
+ * symbols/ee, rules/base.xml.in: adding ee(us), polishing eurosign
+ usage in ee, https://bugs.freedesktop.org/show_bug.cgi?id=13799
+
+2007-12-25 Sergey Udaltsov
+
+ * symbols/eurosign, rules/base.xml.in, rules/base.o_s.part: add
+ eurosign(4)
+
+2007-12-23 Sergey Udaltsov
+
+ * symbols/inet, rules/base.xml.in: add logiultrax model,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13028
+ * symbols/me, rules/base.xml.in: use Latin as default Montenegro
+ variant, https://bugs.freedesktop.org/show_bug.cgi?id=13777
+ * symbols/inet, keycodes/evdev: Kill off the I211 key in evdev
+
+2007-12-17 Sergey Udaltsov
+
+ * keycodes/sun, rules/base.m_k.part, rules/base.ml_s.part,
+ symbols/sun_vndr/cs, symbols/sun_vndr/cz, symbols/sun_vndr/de,
+ symbols/sun_vndr/dk, symbols/sun_vndr/fr, symbols/sun_vndr/gb,
+ symbols/sun_vndr/gr, symbols/sun_vndr/it, symbols/sun_vndr/jp,
+ symbols/sun_vndr/ko, symbols/sun_vndr/nl, symbols/sun_vndr/no,
+ symbols/sun_vndr/pl, symbols/sun_vndr/ru, symbols/sun_vndr/sw,
+ symbols/sun_vndr/tr, symbols/sun_vndr/tuv, symbols/sun_vndr/tw,
+ symbols/sun_vndr/us: added sun type 6 support,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13664
+
+2007-12-10 Sergey Udaltsov
+
+ * symbols/inet: fixed thinkpad,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13461
+
+2007-12-08 Sergey Udaltsov
+
+ * symbols/inet, rules/base.xml.in, rules/base.lists.part: added
+ fscaa1667g model, thanks to Matthew W. S. Bell
+ * symbols/gr: updated greek symbols,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13570
+
+2007-11-30 Sergey Udaltsov
+
+ * symbols/us: small olpc fix
+ * symbols/inet: introducing nav_common and media_nav_common,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13461
+
+2007-11-21 Sergey Udaltsov
+
+ * symbols/np, rules/base.lists.part: added np(olpc)
+ * symbols/et, rules/base.lists.part: added et(olpc)
+ * symbols/in: small fix in in(ben_probhat),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12038
+
+2007-11-20 Sergey Udaltsov
+
+ * symbols/af, symbols/kz, symbols/ng, rules/base.xml.in: OLPC fixes
+ from Bernardo
+ * symbols/pk, rules/base.xml.in: fixing pk(ara) - it is not default
+
+2007-11-18 Sergey Udaltsov
+
+ * symbols/ro, rules/base.xml.in, rules/compat/variantRename.lst:
+ ro(comma), ro(academic) --> ro(cedilla), ro(std_cedilla),
+ https://bugs.freedesktop.org/show_bug.cgi?id=13277
+
+2007-11-17 Sergey Udaltsov
+
+ * symbols/ua, rules/base.xml.in: added ua(unicode)
+
+2007-11-15 Sergey Udaltsov
+
+ * symbols/olpc, keycodes/es: small OLPC fixes
+
+2007-11-14 Sergey Udaltsov
+
+ * symbols/inet, keycodes/evdev: revert #12203
+ https://bugs.freedesktop.org/show_bug.cgi?id=12227
+
+2007-11-01 Sergey Udaltsov
+
+ * symbols/fi, rules/base.xml.in: swapping fi(basic) and fi(kotoistus),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12764
+
+2007-10-28 Sergey Udaltsov
+
+ * symbols/ara, symbols/us, symbols/es, symbols/us, symbols/ng: OLPC
+ fixlets
+
+2007-10-23 Sergey Udaltsov
+
+ * symbols/ru, rules/base.xml.in: added ru(kom),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12893
+
+2007-10-21 Sergey Udaltsov
+
+ * symbols/us, rules/base.xml.in: added us(dvorak-intl),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12867
+ * symbols/macintosh_vndr/dk: dk(macbookpro),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12716
+
+2007-10-19 Sergey Udaltsov
+
+ * symbols/tr, rules/base.xml.in: added tr(intl),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12856
+
+2007-10-18 Sergey Udaltsov
+
+ * geometry/pc, rules/base.xml.in, rules/compat/base.lists.part,
+ symbols/br, symbols/pt: added some br and pt layouts,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12816
+ * rules/base.xml.in symbols/dk: added dk(dvorak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12837
+
+2007-10-13 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.xml.in: added diNovo
+ Edge, https://bugs.freedesktop.org/show_bug.cgi?id=12789
+
+2007-10-10 Sergey Udaltsov
+
+ * rules/base.xml.in, rules/base.m_g.part: added microsoftelite model,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12753
+ * symbols/fi: fixed fi(kotoistus),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12764
+
+2007-10-09 Sergey Udaltsov
+
+ * geometry/microsoft: added "elite" geometry,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12753
+ * symbols/us: fix for olpc
+
+2007-10-07 Sergey Udaltsov
+
+ * symbols/kz, rules/base.lists.part: added kz(olpc)
+ * symbols/pk: fixed pk(olpc)
+ * rules/base.xml.in: lost vendors,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12719
+ * symbols/inet, rules/base.lists.part, rules/base.xml.in: added
+ chicony0108 model,
+ https://bugs.freedesktop.org/show_bug.cgi?id=6914
+ * symbols/de, types/extra: SS hangling,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7642
+
+2007-10-04 Sergey Udaltsov
+
+ * symbols/us: s/U.S. English/USA/
+ * rules/base.o_s.part, rules/base.xml.in,
+ rules/compat/layoutRename.lst, symbols/Makefile.am, symbols/cs,
+ symbols/me, symbols/rs, symbols/ba, symbols/hr, symbols/si: splitting
+ Serbia and Montenegro
+ https://bugs.freedesktop.org/show_bug.cgi?id=12390
+
+2007-10-02 Sergey Udaltsov
+
+ * symbols/inet: fixing dell inspiron,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12653
+ * configure.in, rules/Makefile.am, po/ChangeLog: dropping translations
+ from base.xml, let apps/libs use .gmo files instead
+
+2007-09-27 Sergey Udaltsov
+
+ * symbols/shift, symbols/Makefile.am, rules/base.o_s.part: added
+ shift:breaks_caps, https://bugs.freedesktop.org/show_bug.cgi?id=9546
+
+2007-09-26 Sergey Udaltsov
+
+ * symbols/latam: no dead_tilde,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12568
+ * rules/base.xml.in, symbols/in: added mal_lalitha, small fixes,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12426
+ * rules/base.lists.part, rules/base.m_k.part, rules/base.ml_c.part,
+ rules/base.ml_s.part, rules/base.xml.in, rules/merge.sh,
+ symbols/Makefile.am, symbols/ara, symbols/br, symbols/es,
+ symbols/group, symbols/inet, symbols/level3, symbols/ng, symbols/olpc,
+ symbols/pk, symbols/ru, symbols/th, symbols/tr, symbols/us: massive
+ patch from OLPC project
+
+2007-09-25 Sergey Udaltsov
+
+ * NEWS, configure.in: preparing release 1.1
+
+2007-09-24 Sergey Udaltsov
+
+ * symbols/inet: added extra key for nx9020
+ https://bugs.freedesktop.org/show_bug.cgi?id=7310
+
+2007-09-14 Sergey Udaltsov
+
+ * symbols/inet: small fixes in cymotionlinux,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7983
+ * keycodes/evdev: fixed fake keycodes,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12202
+
+2007-09-05 Sergey Udaltsov
+
+ * symbols/inet, geometry/dell, rules/base.m_g.part,
+ rules/base.lists.part: adding dell precision m65,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7992
+ * rules/base.m_g.part: fixed rules for the kinesis keyboard,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7991
+
+2007-09-04 Sergey Udaltsov
+
+ * symbols/it, rules/base.xml.in: added strange one, it(geo),
+ contributed by Vladimir Sichinava
+
+2007-09-02 Sergey Udaltsov
+
+ * keycodes/evdev, symbols/inet: more evdev keycodes,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12227
+ https://bugs.freedesktop.org/show_bug.cgi?id=12228
+
+2007-08-29 Sergey Udaltsov
+
+ * keycodes/evdev: updated evdev keycodes,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12202
+ * keycodes/xfree86, symbols/inet, symbols/pc: display switch &
+ backlight control, https://bugs.freedesktop.org/show_bug.cgi?id=12203
+ * keycodes/macintosh, rules/base.m_k.part, rules/base.xml.in: adding
+ macintosh_hhk model,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12091
+
+2007-08-28 Sergey Udaltsov
+
+ * symbols/group, symbols/jp, symbols/la, symbols/level3, symbols/pc,
+ symbols/digital_vndr/pc, types/pc: renaming types, giving more
+ sensible names
+
+2007-08-27 Sergey Udaltsov
+
+ * keycodes/evdev: missing keycodes for evdev:
+ https://bugs.freedesktop.org/show_bug.cgi?id=12167
+
+2007-08-26 Sergey Udaltsov
+
+ * rules/compat/variantRename.lst: fixing dvorak layouts compat rule,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12115
+
+2007-08-24 Sergey Udaltsov
+
+ * symbols/us: fixes typos in us(classmate-intl)
+
+2007-08-22 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/cn: adding Tibetan
+ layouts, https://bugs.freedesktop.org/show_bug.cgi?id=12088
+
+2007-08-20 Sergey Udaltsov
+
+ * symbols/gr: replacing combining keys with dead keys, temporary hack
+ by James Cloos
+
+2007-08-19 Sergey Udaltsov
+
+ * symbols/et: added missing dead "c" key
+
+2007-08-18 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.ml_s.part, rules/base.mlv_s.part,
+ rules/base.xml.in, symbols/inet, symbols/us: added classmate model
+ with specific variants,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11955
+
+2007-08-14 Sergey Udaltsov
+
+ * symbols/inet, rules/base.xml.in: added asus_laptop,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11936
+
+2007-08-12 Sergey Udaltsov
+
+ * symbols/ru: fixed ebreve in ru(ch),
+ http://bugs.freedesktop.org/show_bug.cgi?id=11246
+ * rules/base.xml.in: missing Romanian variants added,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11945
+
+2007-08-10 Sergey Udaltsov
+
+ * symbols/br, rules/base.m_g.part, rules/base.ml1_s.part,
+ rules/base.ml_g.part, rules/base.ml_s.part: Adding br(thinkpad),
+ polishing rules a bit,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11908
+
+2007-08-07 Sergey Udaltsov
+
+ * symbols/ara: Patch to Arabic keyboard layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=11867
+
+2007-08-03 Sergey Udaltsov
+
+ * symbols/us, rules/base.xml.in: added us(altgr-intl), closing
+ http://bugs.freedesktop.org/show_bug.cgi?id=11753
+
+2007-07-30 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.m_s.part,
+ rules/base.xml.in: introduced media_common, some Dell/Logitech symbols
+ are dead, compatibility rules created, Acer kbds consolidated,
+ http://bugs.freedesktop.org/show_bug.cgi?id=11746
+
+2007-07-25 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.m_s.part,
+ rules/base.xml.in: consolidating benq keyboards,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11713
+
+2007-07-24 Sergey Udaltsov
+
+ * symbols/gn, symbols/Makefile.am, rules/base.xml.in: added Guinea,
+ http://bugs.freedesktop.org/show_bug.cgi?id=11702
+
+2007-07-23 Sergey Udaltsov
+
+ * symbols/cd: update Congolese,
+ https://bugs.freedesktop.org/show_bug.cgi?id=5500
+
+2007-07-22 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.xml.in: adding
+ logiex110 model, https://bugs.freedesktop.org/show_bug.cgi?id=11686
+
+2007-07-20 Sergey Udaltsov
+
+ * symbols/gr: adding pound sign,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11608
+
+2007-07-16 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/be, symbols/keypad:
+ modularized wang kbd,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8852
+
+2007-07-15 Sergey Udaltsov
+
+ * symbols/kpdl, symbols/*, rules/base.xml.in, rules/base.o_s.part:
+ introducing separate KPDL handling,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11611
+
+2007-07-12 Sergey Udaltsov
+
+ * NEWS: preparing release 1.0
+
+2007-07-10 Sergey Udaltsov
+
+ * geometry/hhk, rules/base.m_g.part, rules/base.xml.in,
+ geometry/Makefile.am: adding hhk geometry,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11519
+
+2007-07-09 Sergey Udaltsov
+
+ * symbols/de: fixed AE12, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11514
+
+2007-06-29 Sergey Udaltsov
+
+ * symbols/lk: another fix from
+ https://bugs.freedesktop.org/show_bug.cgi?id=11284
+ * symbols/us, rules/base.xml.in: added us(colemak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=11416
+
+2007-06-25 Sergey Udaltsov
+
+ * symbols/Makefile.am, symbols/braille, rules/base.xml.in: added
+ Braille layout, https://bugs.freedesktop.org/show_bug.cgi?id=11356
+
+2007-06-18 Sergey Udaltsov
+
+ * symbols/Makefile.am, symbols/et, rules/base.xml.in: added
+ et(basic), part of the OLPC works
+
+2007-06-16 Sergey Udaltsov
+
+ * symbols/lk: fixed Sinhala, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11284
+
+2007-06-15 Sergey Udaltsov
+
+ * symbols/ru, rules/base.xml.in: added ru(cv_latin), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11246
+
+2007-06-13 Sergey Udaltsov
+
+ * symbols/ru, rules/base.xml.in: added ru(cv), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11246
+ * symbols/ge, rules/base.xml.in: added ge(os), again closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8092
+ * symbols/ru, rules/base.xml.in: added ru(udm), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11257
+
+2007-06-07 Sergey Udaltsov
+
+ * symbols/in, rules/base.xml.in: added Hindi phonetic,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11195
+
+2007-06-06 Sergey Udaltsov
+
+ * rules/xfree98: fixed nec_vndr, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11176
+
+2007-05-26 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/jp: Add
+ "NICOLA-F style Backspace" to "Japanese keyboard options", closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11064
+
+2007-05-14 Sergey Udaltsov
+
+ * rules/base.xml.in, rules/xkb.dtd: introducing vendor into
+ configItem
+
+2007-05-13 Sergey Udaltsov
+
+ * symbols/il: replaced backslash with bar, reclosing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6375
+
+2007-05-02 Sergey Udaltsov
+
+ * symbols/gr: using Unicode since it is more appropriate for polytonic
+ Greek, https://bugs.freedesktop.org/show_bug.cgi?id=10824
+
+2007-04-30 Sergey Udaltsov
+
+ * rules/base.xml.in: make descriptions less technical
+
+2007-04-29 Sergey Udaltsov
+
+ * symbols/us: adding explicit BKSL, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10811
+
+2007-04-27 Sergey Udaltsov
+
+ * geometry/microsoft: replacing non-defined AE00 with TLDE,
+ http://bugzilla.gnome.org/show_bug.cgi?id=429907
+
+2007-04-24 Sergey Udaltsov
+
+ * symbols/ma: fixing alt in Tifinagh, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10736
+
+2007-04-23 Sergey Udaltsov
+
+ * geometry/pc: fix for abnt2, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10725
+ * symbols/inet, rules/base.lists.part: adding missing logicdo, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10671
+
+2007-04-11 Sergey Udaltsov
+
+ * symbols/ge, rules/base.xml.in: added/fixed a lot of Georgian
+ layouts, closing https://bugs.freedesktop.org/show_bug.cgi?id=3332
+
+2007-04-05 Sergey Udaltsov
+
+ * symbols/se, rules/base.xml.in: added se(svdvorak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=10424
+
+2007-04-03 Sergey Udaltsov
+
+ * symbols/cd: fixed Congolese layout one more time,
+ https://bugs.freedesktop.org/show_bug.cgi?id=5500
+
+2007-04-01 Sergey Udaltsov
+
+ * symbols/cd: fixed Congolese layout,
+ https://bugs.freedesktop.org/show_bug.cgi?id=5500
+
+2007-03-29 Sergey Udaltsov
+
+ * configure.in: improved xkb_base calculation, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10435
+
+2007-03-13 Sergey Udaltsov
+
+ * configure.in: added Korean translation,
+ https://bugs.freedesktop.org/show_bug.cgi?id=10269
+ * rules/base.xml.in: s/descr/_descr/g, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10270
+
+2007-03-06 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/us: added us(euro), after a very hot
+ discussion in the maillist
+
+2007-02-26 Sergey Udaltsov
+
+ * symbols/inet: fixed broken symbol, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10103
+ * compat/misc: fixing copy/paste bug, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10104
+
+2007-02-25 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/uz: fixed Uz layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10091
+ * symbols/us: added French oe character to us(intl), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10087
+
+2007-02-12 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/ma: added Tifinagh
+ layouts, closing http://bugs.freedesktop.org/show_bug.cgi?id=9950
+
+2007-02-03 Sergey Udaltsov
+
+ * rules/base.ml_g.part, rules/HDR, rules/Makefile.am,
+ rules/base.m_g.part: added (model, layout->geometry) section for
+ thinkpad, https://bugs.freedesktop.org/show_bug.cgi?id=9864
+ * symbols/macintosh_vndr/fr: updated French layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9865
+
+2007-01-27 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part: adding thinkpad media keys,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=9779
+
+2007-01-26 Sergey Udaltsov
+
+ * symbols/es: s/asciitilde/dead_tilde in spanish, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9763
+
+2007-01-25 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/am: adding am(phonetic-alt), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9018
+
+2007-01-11 Sergey Udaltsov
+
+ * symbols/nl, rules/base.xml.in: added nl(std), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9603
+ * symbols/epo, rules/base.xml.in: added epo(legacy), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9556
+
+2007-01-04 Sergey Udaltsov
+
+ * symbols/ir: settling another licensing issue,
+ https://bugs.freedesktop.org/show_bug.cgi?id=9541
+
+2007-01-04 Sergey Udaltsov
+
+ * rules/base.xml.in, rules/base.o_s.part, symbols/ca, symbols/fr,
+ symbols/nbsp: adding more nbsp options, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9529
+
+2007-01-02 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/pc: getting rid of stupid "default"
+ altwin options, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9470
+
+2006-12-19 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, rules/sun.xml.in,
+ symbols/level3: adding lv3:ralt_alt, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9070
+
+2006-12-11 Sergey Udaltsov
+
+ * configure.in: getting rid of bashisms, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9244
+ * symbols/fi: s/NoSymbol/VoidSymbol/, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9239
+
+2006-12-07 Sergey Udaltsov
+
+ * Makefile.am, rules/Makefile.am, xkbrules.am: getting rid of
+ gmakisms, closing https://bugs.freedesktop.org/show_bug.cgi?id=9245
+ * Makefile.am: dropping install-compiled target, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9246
+
+2006-11-20 Sergey Udaltsov
+
+ * symbols/br, keycodes/xfree86: making abnt2 more compatible with
+ other keyboards, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4910
+ * rules/base.m_k.part: dropping the special (and stupid) abnt2 rule,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=9097
+
+2006-11-19 Sergey Udaltsov
+
+ * symbols/il, rules/base.xml.in: added il(biblical), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9002
+
+2006-11-17 Sergey Udaltsov
+
+ * symbols/us: the backslash/bar definition in the us dvorak variant,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=9061
+ * symbols/ir: removed problematic copyright notice, with permission of
+ Behnam Esfahbod, https://bugs.freedesktop.org/show_bug.cgi?id=4102
+
+2006-11-14 Sergey Udaltsov
+
+ * symbols/altwin: undo invalid Alt mapping done in
+ https://bugs.freedesktop.org/show_bug.cgi?id=8996
+
+2006-11-12 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/altwin: adding
+ ctrl_win, closing https://bugs.freedesktop.org/show_bug.cgi?id=8996
+
+2006-11-06 Sergey Udaltsov
+
+ * rules/sun.xml.in, rules/Makefile.am, po/POTFILE.in: Added directory
+ for sun rules, closing
+ http://bugzilla.gnome.org/show_bug.cgi?id=137294
+
+2006-11-02 Sergey Udaltsov
+
+ * symbols/fr: some fixes for alternative layouts, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8853
+ * symbols/fr, rules/base.xml.in: new fr(dvorak*) variants, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8728
+
+2006-10-28 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
+ logitech_g15 model, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8803
+ * symbols/jp: added LCTL definition,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8805
+
+2006-10-26 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added more
+ Dell keyboards, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8761
+
+2006-10-18 Sergey Udaltsov
+
+ * rules/base.lists.part, symbols/macintosh_vndr/Makefile.am,
+ symbols/macintosh_vndr/dk, symbols/macintosh_vndr/es,
+ symbols/macintosh_vndr/it, symbols/macintosh_vndr/latam,
+ symbols/macintosh_vndr/no, symbols/macintosh_vndr/pt,
+ symbols/macintosh_vndr/se: missed part from
+ https://bugs.freedesktop.org/show_bug.cgi?id=1576
+ * rules/base.xml.in, symbols/jp: adding new Japanese layout, changing
+ latin to 106, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8648
+
+2006-10-17 Sergey Udaltsov
+
+ * symbols/macintosh_vndr/dk, symbols/macintosh_vndr/us: adding euro
+ sign to mac us and dk, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8682#add_comment
+
+2006-10-16 Sergey Udaltsov
+
+ * rules/base.m_k.part, rules/base.xml.in, keycodes/Makefile.am,
+ keycodes/powerpcps2: removing obsolete powerpcps2 model. Closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8659
+ * rules/base.o_s.part, rules/base.xml.in, symbols/group: adding
+ grp:lctrl_lshift_toggle, contributed by Alexey Morozov
+ <morozov@gorodok.net>
+ * symbols/macintosh_vndr/us: Fix <BKSP> in symbols/macintosh_vndr/us,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=8668
+ * symbols/level3: assigning mods to keycodes (reverding earlier wrong
+ fix), closing https://bugs.freedesktop.org/show_bug.cgi?id=8670
+
+2006-10-13 Sergey Udaltsov
+
+ * xkbrules.am: ability to create .dir files when srcdir != objdir,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=8629
+
+2006-10-12 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.xml.in: added BenQ
+ X-730, thanks to Jean-Marc Spaggiari
+
+2006-10-11 Sergey Udaltsov
+
+ * symbols/af, symbols/ba, symbols/hr, symbols/kr, symbols/nbsp,
+ symbols/ng, symbols/si, symbols/za: addind missing cvs keyword
+ XKeyboardConfig
+ * rules/base.ml_s.part, rules/base.xml.in, symbols/jp: normalizing
+ Japanese rules/variants, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8503
+
+2006-10-10 Sergey Udaltsov
+
+ * symbols/in: fixed Devangari (default) layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4949
+ * configure.in: removing hardcoded prefix, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8448
+ * symbols/it, added EuroSign to italian mac layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=1576
+
+2006-10-09 Sergey Udaltsov
+
+ * symbols/inet,rules/base.xml.in: adding benqa800 model, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8574
+
+2006-10-09 Sergey Udaltsov
+
+ * NEWS, configure.in: preparing 0.9
+
+2006-10-09 Sergey Udaltsov
+
+ * tests/*: tests now run alphabetically, a bit of xslt tweaking
+ * symbols/altwin: Alt keys should be mapped on two shift levels,
+ undoing previous fix, as requested in
+ https://bugs.freedesktop.org/show_bug.cgi?id=8571
+ * symbols/level3: mapping Mod5 to keycode rather than to keysym,
+ hopefully fixing https://bugs.freedesktop.org/show_bug.cgi?id=8572
+ * symbols/us,symbols/latin: fixing quotes, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8122
+
+2006-10-07 Sergey Udaltsov
+
+ * types/complete, types/default: putting "numpad" after "extra"
+ hopefully fixes https://bugs.freedesktop.org/show_bug.cgi?id=8402
+
+2006-10-04 Sergey Udaltsov
+
+ * symbols/fi: s/micron/dead_micron, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8494
+
+2006-10-03 Sergey Udaltsov
+
+ * symbols/macintosh_vndr/gb, symbols/gb: adding missing Euro
+ character, closing https://bugs.freedesktop.org/show_bug.cgi?id=5227
+ * symbols/bt, symbols/fr, symbols/np: fixing typos, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8495
+ * symbols/ch, symbols/de, symbols/dk, symbols/es, symbols/no,
+ symbols/pt, symbols/se, symbols/us: optimized mac variants, overwrite
+ old de and ch mac variants, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8491
+
+2006-10-01 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/ng: added Nigerian
+ layouts, closing https://bugs.freedesktop.org/show_bug.cgi?id=8467
+ * symbols/dk, symbols/es, symbols/fi, symbols/fr, symbols/gb,
+ symbols/is, symbols/it, symbols/nl, symbols/no, symbols/pt,
+ symbols/se, symbols/us, rules/base.xml.in: adding mac variants,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=8465
+
+2006-09-30 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/Makefile.am,
+ symbols/nbsp: adding nbsp:* options, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8451
+
+2006-09-29 Sergey Udaltsov
+
+ * rules/base.xml.in: added keypad:* options, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8240
+
+2006-09-28 Sergey Udaltsov
+
+ * geometry/thinkpad: fix for geometry, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8419
+
+2006-09-24 Sergey Udaltsov
+
+ * symbols/am, rules/base.xml.in: added am(eastern), am(western),
+ am(eastern-alt), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8404
+ * rules/base.ml_s.part: macbooks should use the vendor symbols, if
+ possible, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8385
+ * rules/base.o_s.part, rules/base.xml.in, symbols/fr, symbols/keypad:
+ added more French variants, new options, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8240
+
+2006-09-18 Sergey Udaltsov
+
+ * keycodes/macintosh, rules/HDR, rules/Makefile.am,
+ rules/base.m_k.part, rules/base.o_k.part, rules/base.xml.in: split
+ "good" and "bad" apple keycodes, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8242
+
+ * rules/base.lists.part, rules/base.m_s.part, symbols/inet,
+ symbols/level3: lv3:enter_switch added, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8324
+
+ * symbols/ara: added ara(buckwalter), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8198
+
+ * symbols/in: fixed layout, Unicode-related bug, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8203
+
+ * geometry/pc, rules/base.ml1_s.part, rules/base.ml_s.part,
+ rules/compat/ml1_s.sh, rules/compat/ml1v1_s.sh,
+ rules/compat/ml1v_s.sh, rules/compat/ml_s.sh, rules/compat/mlv_s.sh,
+ symbols/pc: getting rid of pc101/102/104 legacy. Breaking XkbSymbols
+ again, https://bugs.freedesktop.org/show_bug.cgi?id=8321
+
+2006-09-17 Sergey Udaltsov
+
+ symbols/keypad, symbols/pc, symbols/us, symbols/macintosh_vndr/*,
+ rules/base.m_t.part, rules/base.ml1_s.part, rules/base.ml_s.part,
+ rules/base.o_t.part, rules/base.xml.in, rules/merge.sh: reorganized
+ Mac stuff, thanks to Denis,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8280
+
+ * symbols/pc: modularized numpad stuff,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8312
+
+2006-09-10 Sergey Udaltsov
+
+ rules/base.list.part, symbols/inet: added 2 models, thanks to
+ Valery V. Inozemtsev
+
+2006-09-06 Sergey Udaltsov
+
+ * rules/altwin: mapping LALT to Mod4 modifier,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8068
+
+2006-09-05 Sergey Udaltsov
+
+ * rules/base.lists.part: adding missing kbds, reordering a bit
+ https://bugs.freedesktop.org/show_bug.cgi?id=7816
+
+ * geometry/ibm_vnd, configure.in, rules/base.m_g.part: getting rid of
+ ibm_vndr geometry, fixing rules,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7990
+
+ * symbols/gb: s/ralt_switch/ralt_switch_multikey
+ https://bugs.freedesktop.org/show_bug.cgi?id=7674
+
+ * rules/base.mlv_s.part: fixing mac rule for nodeadkeys,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8123
+
+ * rules/base.ml_s.part: s/old_macintosh/macintosh_old/g,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8128
+
+2006-09-04 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.m_g.part, rules/base.m_k.part,
+ rules/base.m_s.part, rules/base.ml1_s.part, rules/base.ml_s.part,
+ rules/base.mlv_s.part: fixing lists,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7817
+
+ * symbols/cd, symbols/gr, symbols/il, symbols/jp, symbols/la,
+ symbols/lk, symbols/ru, symbols/ca: fixing types, on per-group basis,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8121
+
+ * symbols/level3: adding level3:ralt_switch_multikey,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7674
+
+2006-09-03 Sergey Udaltsov
+
+ * symbols/vn: getting rid of digits (1 and 2 shift levels),
+ https://bugs.freedesktop.org/show_bug.cgi?id=7807
+
+ * rules/base.xml.in: s/guillemot/guillemet/, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8116
+
+2006-09-02 Sergey Udaltsov
+
+ * symbols/lt, rules/base.xml.in: added lt(ibm)
+ https://bugs.freedesktop.org/show_bug.cgi?id=3841
+
+ * symbols/hr: reverted Croatian
+ https://bugs.freedesktop.org/show_bug.cgi?id=8019
+
+2006-09-01 Sergey Udaltsov
+
+ * symbols/ru, rules/base.xml.in: added Ossetian, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8092
+
+ * symbols/ir, symbols/iq, rules/base.xml.in: added Kurdish Arabic-Latin
+
+2006-08-31 Sergey Udaltsov
+
+ * geometry/macintosh, keycodes/macintosh, keycodes/xfree86,
+ rules/base.lists.part, rules/base.m_g.part, rules/base.m_k.part,
+ rules/base.m_s.part, rules/base.ml_s.part, rules/base.xml.in,
+ symbols/inet: Added Macbook stuff, partially closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8068
+
+ * symbols/group, rules/base.o_s.part: added group:alt_caps_toggle
+ https://bugs.freedesktop.org/show_bug.cgi?id=8047
+
+2006-08-02 Sergey Udaltsov
+
+ * symbols/inet, keycodes/evdev: updated evdev
+ https://bugs.freedesktop.org/show_bug.cgi?id=7631
+
+2006-07-30 Sergey Udaltsov
+
+ * symbols/pl: added pl(csb)
+ https://bugs.freedesktop.org/show_bug.cgi?id=7693
+
+2006-07-29 Sergey Udaltsov
+
+ * symbols/bt: fixed Bhutan
+ https://bugs.freedesktop.org/show_bug.cgi?id=7556
+
+ * symbols/us: added dvorak-classic, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7503
+
+ * symbols/inet: added acer_c300, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6361
+
+2006-07-29 Sergey Udaltsov
+
+ * symbols/lk: updated Sinhala, thanks to Harshula
+
+2006-07-10 Sergey Udaltsov
+
+ * symbols/de: added Mac variants, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6671
+
+2006-07-04 Sergey Udaltsov
+
+ * symbols/ch: fixed KPDL in ch(de_mac), patch from
+ https://bugs.freedesktop.org/show_bug.cgi?id=6960
+
+2006-07-02 Sergey Udaltsov
+
+ * rules/base.xml.in: fixed mismatch between directory and symbols/inet
+ file.
+ https://bugs.freedesktop.org/show_bug.cgi?id=7398
+
+ * symbols/ro: fixed Romanian academic
+ https://bugs.freedesktop.org/show_bug.cgi?id=7393
+
+2006-06-28 Sergey Udaltsov
+
+ * keycodes/evdev: pc105 compatiliby, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7347
+
+2006-06-25 Sergey Udaltsov
+
+ * rules/base.xml.in, geometry/pc, symbols/inet: added Dell Lattitude,
+ https://bugs.freedesktop.org/show_bug.cgi?id=6894
+
+ * symbols/inet, rules/base.xml.in: added 2 new layouts, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7325
+
+ * symbols/np: added Nepali, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6373
+
+2006-06-25 Sergey Udaltsov
+
+ * geometry/pc, rules/base.lists.part, rules/base.m_g.part,
+ rules/base.xml.in, symbols/kr: updated Korean layouts/geometry
+ https://bugs.freedesktop.org/show_bug.cgi?id=7316
+
+2006-06-22 Sergey Udaltsov
+
+ * symbols/inet: fixing double RaiseVolume, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7095
+
+2006-06-14 Sergey Udaltsov
+
+ * symbols/mt, rules/base.xml.in: fixed the US variant group name
+ * symbols/gh: fixed 'D' key, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7216
+
+2006-06-13 Sergey Udaltsov
+
+ * symbols/level5, compat/level5: replacing F21-F23 with explicit
+ hexadecimal values of XK_ISO_Level5_*. So for next months people could
+ have Canadian layout fixed and, at the same time, do not have to
+ upgrade xorg. Closing https://bugs.freedesktop.org/show_bug.cgi?id=4411
+
+ * symbols/ch, symbols/inet, symbols/base.xml.in: added mac stuff from
+ https://bugs.freedesktop.org/show_bug.cgi?id=6960
+
+2006-06-13 Sergey Udaltsov
+
+ * symbols/mt: fixed mt(us), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=1411
+
+2006-06-10 Sergey Udaltsov
+
+ * symbols/level5, compat5/level5: better working Canadian
+ layout, but not complete yet
+
+2006-06-01 Sergey Udaltsov
+
+ * symbols/am: fixed comma in Armenian, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7080
+
+2006-05-28 Sergey Udaltsov
+
+ * symbols/inet,rules/base.xml.in,rules/base.lists.part:
+ added Logitech Cordless Desktop LX-300
+ https://bugs.freedesktop.org/show_bug.cgi?id=5609
+
+2006-05-28 Sergey Udaltsov
+
+ * rules/base.ml_c: fixed compat for jp layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4002
+
+2006-05-17 Sergey Udaltsov
+
+ * symbols/inet: fixed power_g5, partially closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6960
+
+2006-05-13 Sergey Udaltsov
+
+ * symbols/fi: added fi(kotoistus)
+ https://bugs.freedesktop.org/show_bug.cgi?id=6901
+
+2006-05-05 Sergey Udaltsov
+
+ * symbols/de: added de(neo)
+ https://bugs.freedesktop.org/show_bug.cgi?id=6837
+
+2006-05-04 Sergey Udaltsov
+
+ * symbols/inet: fixed cymotionlinux, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6828
+
+2006-05-04 Sergey Udaltsov
+
+ * rules/base.xml.in,symbols/iq,symbols/in,symbols/sy: added Kurdish,
+ closed https://bugs.freedesktop.org/show_bug.cgi?id=6159
+ one more time
+
+2006-04-20 Sergey Udaltsov
+
+ * keycodes/evdev: added LSGT, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6674
+
+2006-04-19 Sergey Udaltsov
+
+ * symbols/macintosh_vndr/(be,de,ch): use keypad(comma)
+
+2006-04-19 Sergey Udaltsov
+
+ * rules/*, keymap/sgi_vndr/*: shift_toggle -> shifts_toggle,
+ fixing https://bugs.freedesktop.org/show_bug.cgi?id=5078
+
+2006-04-08 Sergey Udaltsov
+
+ * keycodes/xfree86,symbols/br: fixed abnt2 keymap and layout
+ https://bugs.freedesktop.org/show_bug.cgi?id=4910
+
+2006-04-08 Sergey Udaltsov
+
+ * geometry/macintosh: fixed mac geometry
+ https://bugs.freedesktop.org/show_bug.cgi?id=4714
+
+2006-04-05 Sergey Udaltsov
+
+ * rules/base.xml.in, changed PC-98xx Series to Japan,
+ https://bugs.freedesktop.org/show_bug.cgi?id=5591
+
+2006-04-04 Sergey Udaltsov
+
+ * symbols/compose,rules/base.xml.in,rules/base.o_s.part: added
+ compose(lwin)
+ https://bugs.freedesktop.org/show_bug.cgi?id=2396
+
+2006-04-04 Sergey Udaltsov
+
+ * symbols/inet,rules/base.xml.in: added Logitech diNovo
+ https://bugs.freedesktop.org/show_bug.cgi?id=1681
+
+2006-04-04 Sergey Udaltsov
+
+ * symbols/inet: fixed Logitech Access Keyboard
+ https://bugs.freedesktop.org/show_bug.cgi?id=1018
+
+2006-04-04 Sergey Udaltsov
+
+ * symbols/pt: added LSGT
+ https://bugs.freedesktop.org/show_bug.cgi?id=970
+
+2006-04-02 Sergey Udaltsov
+
+ * symbols/be, rules/base.xml.in: added 'be(wang)'
+ https://bugs.freedesktop.org/show_bug.cgi?id=6474
+
+2006-03-28 Sergey Udaltsov
+
+ * symbols/cd, symbols/Makefile.am: added 'cd'
+ https://bugs.freedesktop.org/show_bug.cgi?id=5500
+
+2006-03-27 Sergey Udaltsov
+
+ * keycodes/macintosh,keymap/macintosh,rules/base.m_k.part: fixed
+ Macintosh F13-F15, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=6399
+
+2006-03-25 Sergey Udaltsov
+
+ * symbols/inet: fixed cymotion,
+ https://bugs.freedesktop.org/show_bug.cgi?id=3541
+
+2006-03-25 Sergey Udaltsov
+
+ * symbols/il,rules/compat/variantRename.lst: generalized 'basic',
+ removed si1452, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=6375
+
+2006-03-23 Sergey Udaltsov
+
+ * symbols/group: another attempt to fix unfamous
+ RAlt problem, reported in ubuntu:
+ https://launchpad.net/distros/ubuntu/+source/xkeyboard-config/+bug/35845
+ Now all types are specified for Group1, to make it consistent
+
+2006-03-22 Sergey Udaltsov
+
+ * rules/base.xml.in,symbols/tr: added Kurdish, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=6159
+
+2006-03-22 Sergey Udaltsov
+
+ * rules/base.xml.in: added missing Logitech models, fixed
+ https://bugs.freedesktop.org/show_bug.cgi?id=6350
+
+2006-03-21 Sergey Udaltsov
+
+ * symbols/kr: added Korean layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6323
+
+2006-03-21 Sergey Udaltsov
+
+ * types/pc,symbols/level3: another attempt to fix unfamous
+ RAlt problem, reported in ubuntu:
+ https://launchpad.net/distros/ubuntu/+source/xkeyboard-config/+bug/35845
+
+2006-03-17 Sergey Udaltsov
+
+ * symbols/inet, rules/base*: added Acer Ferrari 4K
+ https://bugs.freedesktop.org/show_bug.cgi?id=5259
+
+2006-03-16 Sergey Udaltsov
+
+ * symbols/ee: improved ee(dvorak), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4568
+
+2006-03-05 Sergey Udaltsov
+
+ * configure.in, NEWS, Changelog:Preparing release 0.8
+
+2006-02-26 Sergey Udaltsov
+
+ * symbols/es, rules/base.xml.in: added es(cat), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6047
+
+2006-02-25 Alan Coopersmith
+
+ * symbols/sun_vndr/*, compat/japan, compat/mousekeys,
+ geometry/sun:
+ massive update from Sun, see
+ https://bugs.freedesktop.org/show_bug.cgi?id=5725
+
+2006-02-24 M. Emal Alekozai <memala@gmx.net>
+
+ * symbols/af, symbols/Makefile.am, rules/base.xml:
+ added Afghan, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6013
+
+2006-02-15 Zephaniah E. Hull <warp@aehallh.com>
+
+ * keycodes/Makefile.am:
+ * keycodes/evdev:
+ * rules/base.m_k.part:
+ Add the evdev keyboard data files. Closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=5903
+
+2006-02-21 svu
+
+ * symbols/inet: Fixed inet(armada)
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=5893
+
+2006-02-21 svu
+
+ * symbols/hr: Fixed hr(us)
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=3807
+
+2006-02-01 svu
+
+ * rules/compat/layoutRename.lst: Added cz_qwerty compat rule
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=177362
+
+2006-01-31 svu
+
+ * symbols/us: Added single-handed dvoraks
+ https://bugs.freedesktop.org/show_bug.cgi?id=5659
+
+2006-01-22 svu
+
+ * types/level5: Fixed ScrollLock behaviour
+ https://bugs.freedesktop.org/show_bug.cgi?id=5635
+
+2006-01-15 svu
+
+ * symbols/bd: Corrected Bangladesh layout, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=5480
+
+2006-01-14 svu
+
+ * rules/base.ml_*.part: Japanese layouts are nec_vndr/jp, for
+ consistency
+
+2006-01-14 svu
+
+ * symbols/macintosh_vnd/is: some cosmetic stuff and some info, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=5597
+
+2006-01-14 svu
+
+ * rules/base.lists.part: extended non-latin list, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=5590
+
+2006-01-11 svu
+
+ * rules/base*part: improved stuff for non-AT keyboards, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=5507
+
+2006-01-10 svu
+
+ * geometry/pc: fixed geometry, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=5568
+
+2006-01-08 svu
+
+ * symbols/gh: added Ghana layout, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=5497
+
+2006-01-06 svu
+
+ * symbols/ad: added Catalan layout, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=5526
+
+2006-01-01 svu
+
+ * symbols/in: fixed ben_probhat, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=1012
+
+2005-12-31 svu
+
+ * symbols/ru, rules/base.xml.in: added
+ Tatar, closing https://bugs.freedesktop.org/show_bug.cgi?id=4818
+
+2005-12-31 svu
+
+ * symbols/kh, rules/base.xml.in, symbols/Makefile.am: added
+ Khmer, closing https://bugs.freedesktop.org/show_bug.cgi?id=5389
+
+2005-12-31 svu
+
+ * symbols/epo, rules/base.xml.in, symbols/Makefile.am: added
+ Esperanto, closing https://bugs.freedesktop.org/show_bug.cgi?id=5454
+
+2005-12-30 svu
+
+ * symbols/ctrl: expanding Caps a bit, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=3193
+
+2005-12-20 svu
+
+ * symbols/hu: returned def_dot (instead of def_comma, really
+ eliminated)
+
+2005-12-10 svu
+
+ * symbols/compat/layoutRename.lst: added en_US
+
+2005-12-01 svu
+
+ * symbols/inet, rules/base.xml.in: added Inspiron 6000 keys, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=5195
+
+2005-12-01 svu
+
+ * symbols/inet: HUGE redesign of the inet file. Major reorganization
+ of Logitech keyboard. HUGE thanks to Fr?d?ric BOITEUX
+
+2005-11-26 svu
+
+ * symbols/group, symbols/level3, compat/level5, compat/misc:
+ Fixing problem with level3(ralt) and group(alts_toggle).
+ Now "us,ru,se" works ok.
+
+2005-10-20 svu
+
+ * symbols/inet, rules:
+ adding Dell USB Multimedia Keybard, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4826
+
+2005-10-17 svu
+
+ * symbols, types, compat, rules:
+ adding 5th level and beyond, trying to hack 1-group Canadian layout
+
+2005-10-11 svu
+
+ * symbols/macintosh_vndr/fr: update French Macintosh keyboard, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=2870
+
+2005-10-10 svu
+
+ * symbols/za, rules/base.xml.in: added South Afrika, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=2856
+
+2005-10-09 svu
+
+ * symbols/inet: expanded Inspiron definition, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4071
+
+2005-10-07 svu
+
+ * symbols/hu: fixed comma issue, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4693
+
+2005-10-04 svu
+
+ * symbols/by, rules/base.xml.in: added by(latin), closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4576
+
+2005-10-04 svu
+
+ * symbols/gr: added keypad(comma), closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=3538
+
+2005-10-02 svu
+
+ * symbols/se:
+ updating svorak, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=3635
+
+2005-10-02 svu
+
+ * rules/base.lists.part, rules/base.xml.in,
+ symbols/inet:
+ adding Genius Comfy, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=2275
+
+2005-10-02 svu
+
+ * rules/Makefile.am, rules/HDR,
+ rules/base.l1o_s.part, rules/base.l2o_s.part,
+ rules/base.l3o_s.part, rules/base.l4o_s.part:
+ adding "layout + option -> symbols" rules,
+ for properly maingating RAlt as AltGr + alts_toggle
+ IMPORTANT: REQUIRES FIXING XORG
+
+2005-10-02 svu
+
+ * rules/base.xml.in, symbols/ee:
+ added Estonian Dvorak, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4568
+
+2005-10-02 svu
+
+ * rules/base.xml.in, symbols/inet, rules/base.lists.part:
+ Added eMachines m68xx notebooks keyboards, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4000
+
+2005-10-01 svu
+
+ * rules/base.xml.in, symbols/inet, rules/base.lists.part:
+ Added SILVERCREST Multimedia Wireless Keyboard, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4217
+
+2005-09-30 svu
+
+ * rules/compat/layoutRename.lst:
+ added us_intl, fixed https://bugs.freedesktop.org/show_bug.cgi?id=4642
+
+2005-09-30 svu
+
+ * po/sl.po:
+ Slovenian translation
+
+2005-09-22 svu
+
+ * rules/base.xml.in, rules/base.o_s.part, symbols/compose:
+ adding CapsLock as Compose, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4548
+
+2005-09-22 svu
+
+ * rules/Makefile.am, rules/merge.sh
+ fixing merging in env where srcdir != objdir, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4547
+
+2005-09-22 svu
+
+ * rules/base.xml.in, symbols/kz:
+ change Cyr to Rus
+
+2005-09-21 svu
+
+ * rules/base.ml_s.part:
+ IMPORTANT: NO MORE 2-GROUP CANADIAN DEFAULT CONFIGURATION
+
+2005-09-21 svu
+
+ * symbols/kz, symbols/Makefile.am, rules/base.xml.in:
+ added Kazakh, fixing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4497
+
+2005-09-20 svu
+
+ * symbols/macintoch_vndr/ch:
+ Updated de_CH, from
+ https://bugs.freedesktop.org/show_bug.cgi?id=4520
+
+2005-09-20 svu
+
+ * symbols/mk, rules/base.xml.in:
+ removing controversal 'FYROM'
+
+2005-09-14 svu
+
+ * symbols/inet, rules/base.xml.in rules/base.lists.part:
+ Added Cherry CyBo@rd USB-Hub. Thanks to Paul Egan
+ Fixed https://bugs.freedesktop.org/show_bug.cgi?id=4498
+
+2005-09-14 svu
+
+ * symbols/cs: a bit of cleanup by Denis
+
+2005-09-13 svu
+
+ * configure.in: added Finnish translation
+
+2005-09-04 svu
+
+ * symbols/no:
+ fixed no(dvorak), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4397
+
+2005-09-04 svu
+
+ * rules/base.xml.in, symbols/inet:
+ adding Power G5
+
+2005-09-04 svu
+
+ * rules/base.xml.in, symbols/ro:
+ Fixing Romanian, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=371
+
+2005-09-04 svu
+
+ * rules/base.xml.in, symbols/lk:
+ No TSCII/INSCRIPT in Sri Lanka,
+ according to <hash@jayasolutions.cjb.net>
+
+2005-08-25 svu
+
+ * rules/base.xml.in:
+ Control -> Ctrl everywhere, for consistency sake
+
+2005-08-25 svu
+
+ * rules/base.xml.in, symbols/cs:
+ Serbia -> Serbia and Montenegro
+
+2005-08-25 svu
+
+ * configure.in, po/sr@Latn.po:
+ adding sr@Latn translation, thanks to Danilo
+
+2005-08-24 svu
+
+ * configure.in:
+ preparing 0.6
+
+2005-08-24 svu
+
+ * rules/base.xml.in, symbols/mk,
+ rules/compat/layoutRename.lst:
+ Move Macedonian to country-based
+
+2005-08-23 svu
+
+ * rules/base.xml.in, symbols/ba,
+ symbols/si, symbols/cs, symbols/hr:
+ Major Balkanian revolution by Danilo Segan. GREAT THANKS to him.
+
+2005-08-22 svu
+
+ * rules/base.xml.in, symbols/mv:
+ Moved Dhivehi to Maldives, fixed #3716
+
+2005-08-22 svu
+
+ * rules/compat/layoutRename.lst:
+ fixed http://bugzilla.ubuntu.com/show_bug.cgi?id=13919
+
+2005-08-16 svu
+
+ * rules/base.xml.in, symbols/ir:
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=4102
+
+2005-08-11 svu
+
+ * symbols/jp, symbols/pc:
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=847
+
+2005-08-07 svu
+
+ * symbols/bg:
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=4010
+
+2005-08-06 svu
+
+ * Makefile.am:
+ Allowing multiple compatibility symlinks (xfree86,xorg).
+ Thanks to Daniel Stone for the feedback
+
+2005-08-06 svu
+
+ * Makefile.am:
+ Fixing the xkbcomp symlink creation
+ Thanks to Daniel Stone for the feedback
+
+2005-08-04 svu
+
+ * Makefile.am, configure.in, xkbrules.am:
+ Taking nice ideas from xkbdata.
+ Thanks to Daniel Stone for his knowledge of autofoo
+
+2005-08-04 svu
+
+ * symbols/in, symbols/lk,
+ rules/base.xml.in, rules/compat/variantRename.lst:
+ a bit reogranizing tamil stuff
+
+2005-08-03 svu
+
+ * symbols/ie, rules/base.xml.in, rules/compat/variantRename.lst:
+ getting rid of laptop variants in 'ie'
+
+2005-08-02 svu
+
+ * symbols/in, rules/base.xml.in, rules/compat/variantRename.lst:
+ moving 'mal_plusnum' to 'mal'
+
+2005-08-01 svu
+
+ * symbols/il, symbols/hr, symbols/tj:
+ fixing two-group layouts
+
+2005-08-01 svu
+
+ * symbols, rules:
+ putting syr to sy, dzo to bt
+
+2005-07-31 svu
+
+ * symbols, rules:
+ putting smi to no, fi, se
+
+2005-07-31 svu
+
+ * symbols, rules:
+ putting Syriac to Syria (setting 'ara' as default)
+
+2005-07-31 svu
+
+ * symbols, rules:
+ putting Devangari, Gurmukhi into 'in'
+
+2005-07-31 svu
+
+ * symbols, rules:
+ changing 'lao' to 'la'
+
+2005-07-31 svu
+
+ * symbols, rules:
+ putting Inuktitut into 'ca'
+
+2005-07-31 svu
+
+ * symbols, rules:
+ putting Ogham into 'ie'. Cleaning it up.
+
+2005-07-29 svu
+
+ * symbols, rules:
+ reorganizing Asian layouts, round #1
+
+2005-07-25 svu
+
+ * symbols/tr:
+ fixed Turkish, according to
+ https://bugs.freedesktop.org/show_bug.cgi?id=2558
+
+2005-07-25 svu
+
+ * symbols/hr:
+ added belowdot, abovedot, in relation to
+ https://bugs.freedesktop.org/show_bug.cgi?id=475
+
+2005-07-24 svu
+
+ * symbols/div,
+ symbols/Makefile.am,
+ rules/base.xml.in: adding Dhivehi, fixing
+ https://bugs.freedesktop.org/show_bug.cgi?id=3716
+
+2005-07-23 svu
+
+ * symbols/es,
+ rules/base.xml.in:
+ adding Spanish dvorak, pointer from
+ https://bugs.freedesktop.org/show_bug.cgi?id=2344
+
+2005-07-21 svu
+
+ * symbols/sun_vndr/us,
+ rules/sun,
+ keycodes/sun,
+ geometry/sun: adding more keyboards, fixing
+ https://bugs.freedesktop.org/show_bug.cgi?id=2037
+
+2005-07-20 svu
+
+ * symbols/ru,
+ symbols/us,
+ symbols/se,
+ symbols/ua,
+ rules/base.xml.in:
+ sorting out Russian layout, fixing (without 3rd and 4th groups)
+ https://bugs.freedesktop.org/show_bug.cgi?id=2582
+
+2005-07-15 svu
+
+ * symbols/inet, rules/base.xml.in:
+ added Cherry CyMotion Linux, fixed
+ https://bugs.freedesktop.org/show_bug.cgi?id=3789
+
+2005-07-02 svu
+
+ * symbols/nl: fixed Dutch layout
+
+2005-06-17 svu
+
+ * symbols/pl: added AB10 to qwertz
+ https://bugs.freedesktop.org/show_bug.cgi?id=3298
+
+2005-06-17 svu
+
+ * symbols/inet, rules/base.xml.in: added logiultrax,
+ https://bugs.freedesktop.org/show_bug.cgi?id=3523
+
+2005-04-17 svu
+
+ * symbols/tam, rules/base.xml.in: changed default for Tamil,
+ https://bugs.freedesktop.org/show_bug.cgi?id=2971
+
+2005-04-02 svu
+
+ * symbols/de, rules/base.xml.in: added de(dvorak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=2681
+
+2005-03-10 svu
+
+ * po/Makefile.am: adding POTFILES* into the dist
+ * Makefile.am, rules/Makefile.am: adding DISTCLEANFILES
+
+2005-03-09 svu
+
+ * symbols/us: fixing dvorak,
+ https://bugs.freedesktop.org/show_bug.cgi?id=2641
+
+2005-02-05 svu
+
+ * configure.in, NEWS: preparing 0.5
+
+2005-02-03 svu
+
+ * symbols/srp, types/extra: replaced SERBIAN_ALPHABETIC with
+ FOUR_LEVEL_ALPHABETIC, as Danilo requested. Also, SERBIAN_CAPS
+ renamed to SEPARATE_CAPS_AND_SHIFT_ALPHABETIC.
+
+2005-01-21 svu
+
+ * rules/base.lists.part,
+ rules/base.xml.in,
+ symbols/inet: addin my own Acer Travelmate 800 keyboard
+ (based on acerhk kernel module).
+
+2005-01-21 svu
+
+ * symbols/gr: a bit more order in group name (needed for 'basic' but
+ not for 'bare'
+
+2005-01-20 svu
+
+ * symbols/hr: added missing keymapping,
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=2325
+
+2005-01-19 svu
+
+ * symbols/us: removed illegal 'hidden' attribute from the default layout
+
+2005-01-18 svu
+
+ * symbols/cz, rules/base.xml.in: fixed the Czech layout,
+ https://bugs.freedesktop.org/show_bug.cgi?id=2319
+
+2005-01-16 svu
+
+ * symbols, rules/base.xml.in: HUGE commit - adjusting the group names
+ according to the descriptions.
+ Also, some layouts were missing the default variants - added one.
+ Also, some default variants were listed in the variantLists - now they are removed.
+
+2005-01-06 svu
+
+ * symbols/am, rules/base.xml.in: Removing old Armenian layout,
+ fixing http://bugs.freedesktop.org/show_bug.cgi?id=2226
+
+2004-12-22 svu
+
+ * symbols: massive patch for the group names (by Denis Barbier)
+ * rules/base.xml.in: first iteration, match the country names with
+ the group names
+
+2004-12-21 02:07 svu
+
+ * po/el.po,
+ configure.in: Greek translation
+
+2004-12-20 20:30 svu
+
+ * symbols/inet,
+ rules/base.lists.part,
+ rules/base.xml.in: added A4Tech KBS-8, thanks to olo at force dot sk.
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=2113
+
+2004-12-10 00:30 svu
+
+ * symbols/inet: removed keyboard names from the group names,
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=2044
+
+2004-12-08 00:30 svu
+
+ * symbols/mkd,
+ rules/base.xml.in,
+ rules/compat/layoutRename.lst,
+ rules/compat/Makefile.am: Macedonian is now language-based,
+ not country-based. Compatibility rule added.
+
+2004-12-04 01:40 svu
+
+ * symbols/mk, rules/base.xml.in: small fix for Makedonian
+
+2004-12-03 00:40 svu
+
+ * configure.in, Makefile.am, compiled: some cleanup in the
+ build process
+
+2004-11-29 19:00 svu
+
+ * symbols/sin: Small patch for Sinhala from Harshula
+
+2004-11-14 22:14 svu
+
+ * symbols/sin: Small patch for Sinhala from Harshula
+
+2004-10-31 01:20 svu
+
+ * symbols/ca, rules/base.xml.in: added fr-dvorak, thanks to
+ Jonathan Bastien-Filiatrault
+
+2004-10-29 01:15 svu
+
+ * symbols/am: fixed phonetic layout, bug
+ http://freedesktop.org/bugzilla/show_bug.cgi?id=1714
+
+2004-10-29 00:55 svu
+
+ * rules/base.xml.in, rules/base.lists.part, symbols/inet:
+ Added Cherry CyMotion Master XPress, fixed
+ http://freedesktop.org/bugzilla/show_bug.cgi?id=1715
+
+2004-10-26 21:08 svu
+
+ * symbols/Makefile.am, symbols/kg, rules/base.xml.in: added
+ Kyrgyz, thanks to Yury Fedorov
+
+2004-10-12 18:45 svu
+
+ * symbols/Makefile.am, symbols/sin, rules/base.xml.in: added
+ Sinhalese, thanks to Harshula Jayasuriya
+
+2004-10-10 23:59 svu
+
+ * po/: af.po, az.po, bg.po, cs.po, da.po, fr.po, hu.po, nl.po,
+ ru.po, sk.po, sq.po, sr.po, sv.po, tr.po, uk.po, zh_CN.po: update
+ from TP
+
+2004-10-09 19:34 svu
+
+ * symbols/: mal, mao, mm, mn, mt, nl, ogam, ori, pc, pl, pt, ru,
+ sk, smi, srvr_ctrl, syr, tam, tel, th, tr, ua, urd, us: adding
+ the keyword
+
+2004-10-09 18:40 svu
+
+ * symbols/: jp, kan, lao, latam, latin, level3, lt, lv: adding the
+ keyword
+
+2004-10-09 18:35 svu
+
+ * symbols/: deva, dzo, ee, es, eurosign, fo, fr, gb, ge, gr, guj,
+ guru, ie, iku, il, inet, ir, is, it: adding the keyword
+
+2004-10-09 18:29 svu
+
+ * symbols/: al, altwin, am, ara, az, be, ben, bg, by, capslock, ch,
+ compose, ctrl, cz: adding the keyword
+
+2004-10-09 18:26 svu
+
+ * symbols/: ca, uz, vn: adding the keyword
+
+2004-10-09 18:23 svu
+
+ * symbols/: ca, uz, vn: fixing
+ https://freedesktop.org/bugzilla/show_bug.cgi?id=1566
+
+2004-10-09 00:31 svu
+
+ * symbols/ch: fixing
+ https://freedesktop.org/bugzilla/show_bug.cgi?id=1562
+
+2004-10-09 00:20 svu
+
+ * symbols/ca: fixing
+ https://freedesktop.org/bugzilla/show_bug.cgi?id=1563
+
+2004-10-08 21:55 svu
+
+ * symbols/hu: fixing
+ https://freedesktop.org/bugzilla/show_bug.cgi?id=1561
+
+2004-09-29 23:25 svu
+
+ * symbols/macintosh_vndr/: Makefile.am, is: Added Icelandic layout
+ to the Macintosh group
+
+2004-09-28 00:00 svu
+
+ * NEWS, configure.in: preparing 0.4
+
+2004-09-18 01:00 svu
+
+ * BUGS, rules/base.xml.in: David noticed small glitches in
+ base.xml.in
+
+2004-09-16 01:11 svu
+
+ * rules/Makefile.am, rules/base.o_s.part, rules/base.xml.in,
+ rules/compat/Makefile.am, rules/compat/base.o_s.part,
+ symbols/group: shift_toggle -> shifts_toggle
+
+2004-09-15 23:20 svu
+
+ * symbols/group: make the ctrsl_toggle consistend with the others
+
+2004-09-14 20:54 svu
+
+ * symbols/ba: more commas
+
+2004-09-14 20:38 svu
+
+ * symbols/: mk, srp: more commas
+
+2004-09-14 20:14 svu
+
+ * symbols/: br, de, dk, fi, hr, hu, keypad, no, pl, ro, se, si:
+ keymap(comma) introduced by Frank
+
+2004-09-13 22:39 svu
+
+ * symbols/tj: new local cvs keyword seems to be ok - no more $Id$
+
+2004-09-13 22:38 svu
+
+ * symbols/tj: trying new local cvs keyword
+
+2004-09-13 19:49 svu
+
+ * symbols/ara, symbols/bg, symbols/by, symbols/capslock,
+ symbols/deva, symbols/fo, symbols/guj, symbols/guru, symbols/iku,
+ symbols/il, symbols/ir, symbols/kan, symbols/lao, symbols/mk,
+ symbols/mm, symbols/mt, symbols/ori, symbols/sk, symbols/srp,
+ symbols/tel, compat/README, compat/ledcaps, compat/lednum,
+ compat/ledscroll, docs/README.config, geometry/README,
+ geometry/dell, geometry/everex, geometry/keytronic,
+ geometry/kinesis, geometry/microsoft, geometry/northgate,
+ geometry/sgi_vndr/O2, geometry/sgi_vndr/indigo,
+ geometry/sgi_vndr/indy, keycodes/README, keycodes/aliases,
+ keymap/README, keymap/sgi_vndr/cz, keymap/sgi_vndr/sk,
+ rules/README, symbols/macintosh_vndr/ch,
+ symbols/macintosh_vndr/es, symbols/macintosh_vndr/fi,
+ symbols/macintosh_vndr/fr, symbols/macintosh_vndr/it,
+ symbols/macintosh_vndr/nl, symbols/sun_vndr/usb, types/README,
+ types/basic, types/default, types/numpad: no dummy XFree keyword
+
+2004-09-11 21:41 svu
+
+ * symbols/tj: trying Id
+
+2004-09-09 23:05 svu
+
+ * symbols/: tj: fixing keyword
+
+2004-09-09 23:02 svu
+
+ * symbols/tj: fixing keyword
+
+2004-09-09 22:07 svu
+
+ * symbols/level3: ONE_LEVEL fixing by Frank
+
+2004-09-09 00:01 svu
+
+ * symbols/group: more fair comment
+
+2004-09-08 23:40 svu
+
+ * symbols/level3: they agreed on this
+
+2004-09-08 20:14 svu
+
+ * compat/Makefile.am, rules/base.o_c.part: no more capsled traces
+
+2004-09-07 23:58 svu
+
+ * symbols/level3: restoring for a while, till guys make agreement
+
+2004-09-07 23:16 svu
+
+ * symbols/mn: just for sync:)
+
+2004-09-07 21:51 svu
+
+ * po/ru.po: updated translation
+
+2004-09-07 21:50 svu
+
+ * rules/base.xml.in: small polish of the option descriptions
+
+2004-09-07 20:56 svu
+
+ * symbols/: al, az, be, br, ca, cz, de, dk, dzo, ee, es, fi, fo,
+ fr, gb, hr, hu, is, it, latam, level3, lt, mt, nl, no, pt, ro,
+ se, si, sk, smi, srp, tr, us, vn: changing to ralt_switch
+
+2004-09-07 20:39 svu
+
+ * rules/: base.o_s.part, sgi, sun: small fixes, thanks to Frank
+
+2004-09-07 20:33 svu
+
+ * symbols/urd: forgotten to add
+
+2004-09-06 00:59 svu
+
+ * rules/base.xml.in, symbols/Makefile.am: Adding Urdu layout,
+ thanks to Zaeem Arshad
+
+2004-09-04 22:39 svu
+
+ * compat/Makefile.am, compat/basic, compat/group_led,
+ compat/ledcaps, compat/lednum, compat/leds, compat/ledscroll,
+ compat/misc, rules/base.o_c.part, rules/base.o_s.part,
+ rules/base.xml.in, symbols/Makefile.am, symbols/capslock,
+ symbols/group, symbols/lock: reorganizing indicators, thanks to
+ Frank Murphy
+
+2004-08-28 02:04 svu
+
+ * symbols/compose, rules/base.o_s.part, rules/base.xml.in: adding
+ RCtrl as Compose
+
+2004-08-27 23:57 svu
+
+ * symbols/us: thanks to Frank, he noticed two default variants in
+ the us layout
+
+2004-08-27 19:20 svu
+
+ * rules/: base.o_s.part, base.xml.in: meta-info about eurosign
+
+2004-08-27 02:23 svu
+
+ * symbols/: Makefile.am, eurosign: added eurosign
+
+2004-07-25 14:55 svu
+
+ * Makefile.am, mkinstalldirs: fixing mkinstalldirs
+
+2004-07-24 00:42 svu
+
+ * rules/Makefile.am: minor fix for the minor bug detected by
+ distcheck
+
+2004-07-23 22:21 svu
+
+ * TODO: up2date
+
+2004-07-23 22:00 svu
+
+ * NEWS, configure.in: preparing 0.3
+
+2004-07-23 00:11 svu
+
+ * rules/: HDR, Makefile.am, compat/.cvsignore, compat/Makefile.am,
+ compat/lnv_s.sh, compat/ml1v1_s.sh: HURRAY!!! Rules are working!
+ Am I cool or what?
+
+2004-07-22 02:03 svu
+
+ * rules/HDR: fixing the header for MLV
+
+2004-07-21 02:21 svu
+
+ * rules/: HDR, Makefile.am, base.mlv_s.part, base.mvl_s.part,
+ compat/.cvsignore, compat/Makefile.am, compat/ln_s.sh,
+ compat/ml1_s.sh, compat/ml_s.sh, compat/mlv_s.sh: variants are
+ there
+
+2004-07-21 01:57 svu
+
+ * rules/: HDR, Makefile.am, compat/.cvsignore, compat/Makefile.am,
+ compat/lnv_s.sh, compat/ml1_s.sh, compat/ml1v_s.sh: a bit more
+ about variants
+
+2004-07-21 01:48 svu
+
+ * rules/: .cvsignore, HDR, Makefile.am, compat/.cvsignore,
+ compat/Makefile.am, compat/lnv_s.sh, compat/variantRename.lst:
+ adding variants - not complete yet
+
+2004-07-21 01:25 svu
+
+ * rules/compat/: Makefile.am, l2_s.sh, l3_s.sh, l4_s.sh, ln_s.sh:
+ single script for the layouts 2-4
+
+2004-07-21 00:02 svu
+
+ * rules/merge.sh: bash is great but sh is standard - and think
+ optimal, dude
+
+2004-07-20 02:57 svu
+
+ * rules/compat/: l2_s.sh, l3_s.sh, l4_s.sh: the extra layouts (2-4)
+ should be ADDED using '+' character
+
+2004-07-20 02:49 svu
+
+ * rules/: base.ml1_c.part, base.ml1_s.part, base.ml_c.part,
+ base.ml_s.part, compat/l2_s.sh, compat/l3_s.sh, compat/l4_s.sh,
+ compat/ml1_s.sh, compat/ml_s.sh: alignment
+
+2004-07-20 02:33 svu
+
+ * rules/compat/: ml1_s.sh, ml_s.sh: little fix
+
+2004-07-20 02:29 svu
+
+ * rules/: HDR, Makefile.am, base.l1_k.part, base.l2_s.part,
+ base.l3_s.part, base.l4_s.part, base.l_k.part, base.m_g.part,
+ base.m_k.part, base.m_s.part, base.m_t.part, base.ml1_c.part,
+ base.ml1_s.part, base.ml_c.part, base.ml_s.part, base.mvl_s.part,
+ base.o_c.part, base.o_s.part, base.o_t.part, merge.sh: Now, we
+ compoze the parts using bash script
+
+2004-07-18 03:54 svu
+
+ * configure.in, rules/.cvsignore, rules/compat/.cvsignore,
+ rules/compat/Makefile.am, rules/compat/base.lists.part,
+ rules/compat/l2_s.sh, rules/compat/l3_s.sh, rules/compat/l4_s.sh,
+ rules/compat/layoutRename.lst, rules/compat/ml1_s.sh,
+ rules/compat/ml_s.sh: starting bundling compatibility parts
+
+2004-07-18 03:44 svu
+
+ * rules/: Makefile.am, base: cleaning a bit before adding the
+ compat directory
+
+2004-07-18 01:56 svu
+
+ * rules/: Makefile.am, base, base.l1_k.part, base.l2_s.part,
+ base.l3_s.part, base.l4_s.part, base.l_k.part, base.lists.part,
+ base.m_g.part, base.m_k.part, base.m_s.part, base.m_t.part,
+ base.ml1_c.part, base.ml1_s.part, base.ml_c.part, base.ml_s.part,
+ base.mvl_s.part, base.o_c.part, base.o_s.part, base.o_t.part:
+ better empty line handling between rule groups
+
+2004-07-18 01:42 svu
+
+ * rules/: Makefile.am, base, base.hdr.part, base.l1_k.part,
+ base.l2_s.part, base.l3_s.part, base.l4_s.part, base.l_k.part,
+ base.lists.part, base.m_g.part, base.m_k.part, base.m_s.part,
+ base.m_t.part, base.ml1_c.part, base.ml1_s.part, base.ml_c.part,
+ base.ml_s.part, base.mvl_s.part, base.o_c.part, base.o_s.part,
+ base.o_t.part: Now, the base rules are composed from microfiles
+ *.part. I see no other way to handle compatibility in a
+ manageable way. Kill me if I know it.
+
+2004-07-09 05:21 daniel
+
+ * ChangeLog, configure.in: * configure.in: Alter with-xkb-base
+ default to $(prefix)/lib/X11/xkb, instead of
+ $(prefix)/X11R6/lib/xkb, which makes --prefix=/usr behave sanely.
+
+2004-07-08 21:40 svu
+
+ * configure.in: getting rid of unnecessary AM_GLIB_GNU_GETTEXT
+
+2004-07-07 22:52 kidcrash
+
+ * ChangeLog: adding required ChangeLog file
+
+2004-07-06 23:44 svu
+
+ * .cvsignore: Anjuta files are not in CVS - and'll never be
+
+2004-07-04 02:00 svu
+
+ * po/ru.po: updating Russian translation
+
+2004-07-04 01:31 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/cs, symbols/srp:
+ streamlining ex-yu layouts
+
+2004-07-03 03:32 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/dvorak,
+ symbols/fr, symbols/gb, symbols/no, symbols/pl, symbols/se,
+ symbols/us, po/ru.po: splitting dvorak
+
+2004-07-02 01:59 svu
+
+ * symbols/smi: fixing broken layouts, thanks to my testing scripts
+
+2004-07-02 01:49 svu
+
+ * symbols/: Makefile.am, ara, gr, latam, lv, mal, ogam: fixing
+ broken layouts, thanks to my testing scripts
+
+2004-07-02 00:16 svu
+
+ * po/Makefile.am: adding update-po
+
+2004-07-01 22:28 svu
+
+ * docs/: iso3166.csv, iso639.csv: more fresh version of the
+ standards
+
+2004-07-01 03:01 svu
+
+ * po/ru.po: completing Russian translation - though some things are
+ questionable
+
+2004-07-01 02:59 svu
+
+ * config.rpath, mkinstalldirs: why would I need these files in
+ CVS???
+
+2004-07-01 02:55 svu
+
+ * ABOUT-NLS: empty but very useful file
+
+2004-07-01 02:48 svu
+
+ * Makefile.am, autogen.sh, configure.in, po/Makefile.am,
+ rules/base.xml.in: Starting to fix intltool problem, Danilo just
+ roxx
+
+2004-06-30 23:47 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/cs, symbols/yu:
+ Changed yu to cs as Danilo advised - but not sure it is ok.
+ Investigating...
+
+2004-06-30 23:25 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/scc, symbols/srp:
+ Changing scc to srp - as Danilo advised
+
+2004-06-26 01:54 svu
+
+ * BUGS: hopefully fixed Latvian layout
+
+2004-06-26 01:50 svu
+
+ * rules/base.xml.in, symbols/lv: hopefully fixed Latvian layout
+
+2004-06-22 01:11 svu
+
+ * configure.in: trying to set order in the Makefiles list
+
+2004-06-22 00:56 svu
+
+ * Makefile.am, configure.in, autogen.sh: trying to fix intltool -
+ but without much luck
+
+2004-06-20 20:09 svu
+
+ * rules/base.xml.in: fixing shortDescr for Smi
+
+2004-06-20 19:04 svu
+
+ * docs/: iso15924.csv, iso3166.csv, iso3166.txt, iso639.csv,
+ iso639.txt: putting order into standards
+
+2004-06-20 15:36 svu
+
+ * symbols/bg: bad patch application
+
+2004-06-20 15:36 svu
+
+ * rules/base.xml.in: typo in Sami id
+
+2004-06-20 15:22 svu
+
+ * symbols/Makefile.am: Frank forgets to chance Makefile.am:)
+
+2004-06-20 14:57 svu
+
+ * xkeyboard-config.spec.in, rules/base, rules/base.xml.in,
+ docs/Makefile.am, docs/README.symbols, symbols/ar, symbols/ara,
+ symbols/ba, symbols/bs, symbols/dev, symbols/deva, symbols/dz,
+ symbols/dzo, symbols/el, symbols/gr, symbols/gur, symbols/guru,
+ symbols/iku, symbols/iu, symbols/la, symbols/lao, symbols/latam,
+ symbols/lo, symbols/mal, symbols/mao, symbols/mi, symbols/ml,
+ symbols/ogam, symbols/ogham, symbols/sapmi, symbols/scc,
+ symbols/smi, symbols/sr, symbols/tam, symbols/tml: Second phase
+ of i18n. Frank rocks the world:)
+
+2004-06-19 04:34 svu
+
+ * symbols/mk: Macedonia AKA FYROM
+
+2004-06-19 04:32 svu
+
+ * rules/: Makefile.am, base-it.lst, base.lst, sgi.lst, sun.lst,
+ xfree98.lst: lst file is not generated automatically - only
+ base.lst
+
+2004-06-19 04:16 svu
+
+ * rules/: sgi, sun: en_US actually died only now
+
+2004-06-19 04:07 svu
+
+ * symbols/: en_US, sun_vndr/se: en_US actually died only now
+
+2004-06-16 02:07 svu
+
+ * rules/base.xml.in: ISOization, part1
+
+2004-06-16 02:00 svu
+
+ * rules/base.xml.in, symbols/bg, symbols/ch, symbols/el,
+ symbols/il, symbols/mm: ISOization, part1
+
+2004-06-15 22:04 svu
+
+ * rules/base.xml.in: better wording for Urkainian RSTU description
+
+2004-06-15 19:19 svu
+
+ * rules/base.xml.in, symbols/ru, symbols/ua: Added RSTU
+ Ukranian/Russian layouts. Thanks to Andrew Porokhnyak
+
+2004-06-13 23:12 svu
+
+ * symbols/inet: actually adding gyration keyboard
+
+2004-06-13 21:30 svu
+
+ * docs/HOWTO.testing: Forgot to add actual document
+
+2004-06-13 21:21 svu
+
+ * BUGS, rules/base, rules/base.lst, rules/base.xml.in, symbols/am,
+ symbols/inet, symbols/lt, symbols/us: fixing loads of bugs from
+ fd.o bugzilla
+
+2004-06-13 13:28 svu
+
+ * xkeyboard-config.spec.in, docs/Makefile.am: Added HOWTO.testing
+ by Frank Murphy
+
+2004-06-12 02:17 svu
+
+ * symbols/mi: getting rid of pc/
+
+2004-06-12 02:14 svu
+
+ * symbols/mi: getting rid of pc/
+
+2004-06-12 02:06 svu
+
+ * NEWS: Redoing 0.2
+
+2004-06-12 02:05 svu
+
+ * symbols/br: fixing bug 515
+
+2004-06-12 02:01 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/mi: Added Maori,
+ thanks to John C Barstow
+
+2004-06-12 01:50 svu
+
+ * docs/: iso3166.txt, iso639.txt: just to have standards for
+ reference
+
+2004-06-10 23:58 svu
+
+ * NEWS: Preparing 0.2
+
+2004-06-10 23:51 svu
+
+ * README, configure.in: Preparing 0.2
+
+2004-06-06 04:22 svu
+
+ * xkeyboard-config.spec.in, docs/HOWTO.transition,
+ docs/Makefile.am, rules/Makefile.am: adding HOWTO.transition
+
+2004-05-28 23:59 svu
+
+ * Makefile.am, configure.in: Optional creation of xkbcomp symlink
+ in .../X11/xkb
+
+2004-05-25 22:30 svu
+
+ * NEWS: something to say
+
+2004-05-24 22:15 svu
+
+ * po/xkbdesc.pot: changing the project name
+
+2004-05-24 22:08 svu
+
+ * .cvsignore, Makefile.am, autogen.sh, configure.in,
+ xkbdesc.spec.in, xkeyboard-config.spec.in: changing the project
+ name
+
+2004-05-23 21:01 svu
+
+ * rules/base, rules/base.xml.in, symbols/altwin: Daniel Elstner
+ sent new option for Tux keys
+
+2004-05-18 00:24 svu
+
+ * configure.in: no glib stuff
+
+2004-05-12 13:51 pascal
+
+ * rules/base, symbols/bs: Convert Bosnian keymap to multi-layout
+ compatible form.
+
+2004-05-09 22:26 svu
+
+ * Makefile.am, README.config, README.enhancing, configure.in,
+ xkbdesc.spec.in, docs/.cvsignore, docs/Makefile.am,
+ docs/README.config: reorganization in docs
+
+2004-05-09 21:40 svu
+
+ * TODO, docs/README.enhancing: 2 bits of docs
+
+2004-05-07 19:48 svu
+
+ * po/ru.po: up2date
+
+2004-05-07 19:27 svu
+
+ * rules/base.xml.in, symbols/tr, tests/testLayouts.pl,
+ tests/testOptions.pl, tests/xkbTestFunc.pm: Some small fixes
+ made. Options are now testable as well.
+
+2004-05-06 02:00 svu
+
+ * tests/: listCI2.xsl, testLayouts.pl, testOptions.pl,
+ xkbTestFunc.pm: one more test - but still problems passing it
+
+2004-05-06 01:15 svu
+
+ * configure.in, symbols/mk, tests/testLayouts.pl: Makedonian
+ problem fixed - and BOTH tests are OK
+
+2004-05-06 01:05 svu
+
+ * symbols/digital_vndr/Makefile.am, symbols/digital_vndr/lk,
+ symbols/digital_vndr/pc, symbols/digital_vndr/us,
+ symbols/digital_vndr/vt, symbols/fujitsu_vndr/Makefile.am,
+ symbols/fujitsu_vndr/jp, keycodes/digital_vndr/Makefile.am,
+ keycodes/digital_vndr/lk, keycodes/digital_vndr/pc,
+ keycodes/sgi_vndr/Makefile.am, keycodes/sgi_vndr/indigo,
+ keycodes/sgi_vndr/indy, keycodes/sgi_vndr/iris, keymap/macintosh,
+ keymap/sony, keymap/xfree98, keymap/digital_vndr/Makefile.am,
+ keymap/digital_vndr/us, keymap/sgi_vndr/Makefile.am,
+ keymap/sgi_vndr/be, keymap/sgi_vndr/bg, keymap/sgi_vndr/ca,
+ keymap/sgi_vndr/ch, keymap/sgi_vndr/cz, keymap/sgi_vndr/de,
+ keymap/sgi_vndr/dk, keymap/sgi_vndr/dvorak,
+ keymap/sgi_vndr/en_US, keymap/sgi_vndr/es, keymap/sgi_vndr/fi,
+ keymap/sgi_vndr/fr, keymap/sgi_vndr/gb, keymap/sgi_vndr/hu,
+ keymap/sgi_vndr/it, keymap/sgi_vndr/jp, keymap/sgi_vndr/no,
+ keymap/sgi_vndr/pl, keymap/sgi_vndr/pt, keymap/sgi_vndr/ru,
+ keymap/sgi_vndr/se, keymap/sgi_vndr/sk, keymap/sgi_vndr/th,
+ keymap/sgi_vndr/us, keymap/sun_vndr/Makefile.am,
+ keymap/sun_vndr/de, keymap/sun_vndr/es, keymap/sun_vndr/fi,
+ keymap/sun_vndr/fr, keymap/sun_vndr/no, keymap/sun_vndr/pl,
+ keymap/sun_vndr/ru, keymap/sun_vndr/se, keymap/sun_vndr/uk,
+ keymap/sun_vndr/us, rules/base, rules/base.xml.in,
+ symbols/hp_vndr/Makefile.am, symbols/macintosh_vndr/Makefile.am,
+ symbols/macintosh_vndr/apple, symbols/macintosh_vndr/ch,
+ symbols/macintosh_vndr/de, symbols/macintosh_vndr/dk,
+ symbols/macintosh_vndr/fi, symbols/macintosh_vndr/no,
+ symbols/macintosh_vndr/pt, symbols/macintosh_vndr/se,
+ symbols/macintosh_vndr/us, symbols/nec_vndr/Makefile.am,
+ symbols/sgi_vndr/Makefile.am, symbols/sony_vndr/Makefile.am,
+ symbols/sun_vndr/Makefile.am, symbols/sun_vndr/se,
+ symbols/sun_vndr/us, symbols/xfree68_vndr/Makefile.am,
+ tests/testLayouts.pl, tests/testModels.pl, tests/xkbTestFunc.pm,
+ geometry/digital_vndr/Makefile.am, geometry/digital_vndr/pc,
+ geometry/ibm_vndr/Makefile.am, geometry/ibm_vndr/thinkpad,
+ geometry/sgi_vndr/Makefile.am: Yahoo! Models test pased ok!
+
+2004-05-05 23:32 svu
+
+ * configure.in, symbols/Makefile.am,
+ symbols/digital_vndr/.cvsignore,
+ symbols/digital_vndr/Makefile.am, symbols/digital_vndr/lk,
+ symbols/digital_vndr/pc, symbols/digital_vndr/us,
+ symbols/digital_vndr/vt, symbols/fujitsu_vndr/.cvsignore,
+ symbols/fujitsu_vndr/Makefile.am, symbols/fujitsu_vndr/jp,
+ symbols/fujitsu_vndr/us, symbols/hp_vndr/.cvsignore,
+ symbols/hp_vndr/Makefile.am, symbols/hp_vndr/us,
+ symbols/macintosh_vndr/.cvsignore,
+ symbols/macintosh_vndr/Makefile.am, symbols/macintosh_vndr/ch,
+ symbols/macintosh_vndr/de, symbols/macintosh_vndr/dk,
+ symbols/macintosh_vndr/es, symbols/macintosh_vndr/fi,
+ symbols/macintosh_vndr/fr, symbols/macintosh_vndr/gb,
+ symbols/macintosh_vndr/it, symbols/macintosh_vndr/nl,
+ symbols/macintosh_vndr/no, symbols/macintosh_vndr/pt,
+ symbols/macintosh_vndr/se, symbols/macintosh_vndr/us,
+ symbols/nec_vndr/.cvsignore, symbols/nec_vndr/Makefile.am,
+ symbols/nec_vndr/jp, geometry/Makefile.am,
+ geometry/digital_vndr/.cvsignore,
+ geometry/digital_vndr/Makefile.am, geometry/digital_vndr/lk,
+ geometry/digital_vndr/pc, geometry/digital_vndr/unix,
+ geometry/ibm_vndr/.cvsignore, geometry/ibm_vndr/Makefile.am,
+ geometry/ibm_vndr/thinkpad, geometry/sgi_vndr/.cvsignore,
+ geometry/sgi_vndr/Makefile.am, geometry/sgi_vndr/O2,
+ geometry/sgi_vndr/indigo, geometry/sgi_vndr/indy,
+ keycodes/Makefile.am, symbols/sgi_vndr/.cvsignore,
+ symbols/sgi_vndr/Makefile.am, symbols/sgi_vndr/jp,
+ symbols/sony_vndr/.cvsignore, symbols/sony_vndr/Makefile.am,
+ symbols/sony_vndr/us, symbols/sun_vndr/.cvsignore,
+ symbols/sun_vndr/Makefile.am, symbols/sun_vndr/se,
+ symbols/sun_vndr/us, symbols/sun_vndr/usb,
+ symbols/xfree68_vndr/.cvsignore,
+ symbols/xfree68_vndr/Makefile.am, symbols/xfree68_vndr/amiga,
+ symbols/xfree68_vndr/ataritt, keycodes/digital_vndr/.cvsignore,
+ keycodes/digital_vndr/Makefile.am, keycodes/digital_vndr/lk,
+ keycodes/digital_vndr/pc, keycodes/sgi_vndr/.cvsignore,
+ keycodes/sgi_vndr/Makefile.am, keycodes/sgi_vndr/indigo,
+ keycodes/sgi_vndr/indy, keycodes/sgi_vndr/iris,
+ keymap/Makefile.am, keymap/digital_vndr/.cvsignore,
+ keymap/digital_vndr/Makefile.am, keymap/digital_vndr/us,
+ keymap/sgi_vndr/.cvsignore, keymap/sgi_vndr/Makefile.am,
+ keymap/sgi_vndr/be, keymap/sgi_vndr/bg, keymap/sgi_vndr/ca,
+ keymap/sgi_vndr/ch, keymap/sgi_vndr/cz, keymap/sgi_vndr/de,
+ keymap/sgi_vndr/dk, keymap/sgi_vndr/dvorak,
+ keymap/sgi_vndr/en_US, keymap/sgi_vndr/es, keymap/sgi_vndr/fi,
+ keymap/sgi_vndr/fr, keymap/sgi_vndr/gb, keymap/sgi_vndr/hu,
+ keymap/sgi_vndr/it, keymap/sgi_vndr/jp, keymap/sgi_vndr/no,
+ keymap/sgi_vndr/pl, keymap/sgi_vndr/pt, keymap/sgi_vndr/ru,
+ keymap/sgi_vndr/se, keymap/sgi_vndr/sk, keymap/sgi_vndr/th,
+ keymap/sgi_vndr/us, keymap/sun_vndr/.cvsignore,
+ keymap/sun_vndr/Makefile.am, keymap/sun_vndr/de,
+ keymap/sun_vndr/es, keymap/sun_vndr/fi, keymap/sun_vndr/fr,
+ keymap/sun_vndr/no, keymap/sun_vndr/pl, keymap/sun_vndr/ru,
+ keymap/sun_vndr/se, keymap/sun_vndr/uk, keymap/sun_vndr/us: Ivan
+ found dots are not good for us
+
+2004-05-03 02:33 svu
+
+ * tests/: testLayouts.pl, testModels.pl, xkbTestFunc.pm: The perl
+ code is a bit structured now
+
+2004-05-03 00:48 svu
+
+ * po/ru.po: Russian translation, up2date
+
+2004-05-03 00:48 svu
+
+ * po/xkbdesc.pot: new strings
+
+2004-05-03 00:38 svu
+
+ * rules/: base, base.xml.in: some fixes in rules, more tests pass
+ ok
+
+2004-05-03 00:05 svu
+
+ * rules/base.xml.in, symbols/ch, symbols/mk, tests/testModels.pl:
+ at least variants pass ok with tests
+
+2004-05-01 02:17 svu
+
+ * symbols/: Makefile.am, hu: Hungarian layout added, thanks to
+ Soós
+
+2004-04-30 05:27 pascal
+
+ * rules/base, symbols/Makefile.am, symbols/jp, symbols/mn: Add
+ Japanese and Mongolian layouts.
+
+2004-04-27 23:17 svu
+
+ * rules/base.xml.in: Canadian layout meta-info fixed
+
+2004-04-27 23:13 svu
+
+ * symbols/ge: fixed syntax typo
+
+2004-04-27 22:19 svu
+
+ * rules/base, rules/base.xml.in, symbols/Makefile.am, symbols/fr,
+ symbols/fr-latin9: French layouts are now merged. Thanks to
+ Guylhem for the positive answer
+
+2004-04-26 00:57 svu
+
+ * tests/: listCI2.xsl, testModels.pl: trying to test layouts as
+ well
+
+2004-04-25 20:26 svu
+
+ * tests/: listCIs.xsl, testModels.pl: starting test scripts
+
+2004-04-25 00:37 svu
+
+ * symbols/us: fixing include
+
+2004-04-25 00:17 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/us: us_intl is
+ returned as alt-intl
+
+2004-04-24 20:29 svu
+
+ * symbols/Makefile.am: new layouts by Ivan should be included into
+ Makefile.am
+
+2004-04-24 13:32 pascal
+
+ * symbols/ca: Remove 'pc' directory name from includes in Canadian
+ keymap.
+
+2004-04-24 12:35 pascal
+
+ * rules/base, symbols/az, symbols/ca, symbols/group, symbols/vn:
+ Add Azeri, Canadian and Vietnamese keymaps.
+
+2004-04-24 02:23 svu
+
+ * rules/base.xml.in, symbols/hr: Croatian US stuff appended
+
+2004-04-24 01:55 svu
+
+ * rules/base, rules/base.xml.in, symbols/Makefile.am, symbols/pl,
+ symbols/pl2: second polish layout is merged
+
+2004-04-24 01:28 svu
+
+ * keymap/macintosh, keymap/sony, keymap/xfree86, keymap/xfree98,
+ rules/base.lst, rules/base.xml.in, symbols/Makefile.am,
+ symbols/ch, symbols/cz, symbols/cz_qwerty, symbols/ge,
+ symbols/ge_la, symbols/ge_ru, symbols/il, symbols/il_phonetic,
+ symbols/lt, symbols/mt, symbols/mt_us, symbols/ro, symbols/se_FI,
+ symbols/se_NO, symbols/se_SE, symbols/sk, symbols/sk_qwerty,
+ symbols/syr, symbols/syr_phonetic, symbols/th, symbols/th_pat,
+ symbols/th_tis, symbols/us_intl: a lot of layouts cleaned up -
+ but way way more to go
+
+2004-04-23 00:46 svu
+
+ * Makefile.am, configure.in, compiled/.cvsignore,
+ compiled/Makefile.am, compiled/README: The 'compiled' directory
+ is really necessary. Even if it is empty
+
+2004-04-22 00:39 svu
+
+ * po/af.po, po/az.po, po/bg.po, po/cs.po, po/da.po, po/fr.po,
+ po/hu.po, po/nl.po, po/ru.po, po/sk.po, po/sq.po, po/sr.po,
+ po/sv.po, po/tr.po, po/uk.po, po/xkbdesc.pot, po/zh_CN.po,
+ rules/Makefile.am, symbols/Makefile.am, symbols/al, symbols/am,
+ symbols/ar, symbols/be, symbols/ben, symbols/br, symbols/by,
+ symbols/ch, symbols/cz, symbols/cz_qwerty, symbols/de,
+ symbols/dk, symbols/dvorak, symbols/ee, symbols/el,
+ symbols/en_US, symbols/es, symbols/fi, symbols/fo, symbols/fr,
+ symbols/fr-latin9, symbols/gb, symbols/ge_la, symbols/hr,
+ symbols/ie, symbols/il, symbols/is, symbols/it, symbols/la,
+ symbols/latin, symbols/lt, symbols/lv, symbols/mk, symbols/ml,
+ symbols/mt, symbols/mt_us, symbols/nl, symbols/no, symbols/ogham,
+ symbols/pc, symbols/pl, symbols/pl2, symbols/pt, symbols/ro,
+ symbols/ru, symbols/sapmi, symbols/se, symbols/se_FI,
+ symbols/se_NO, symbols/se_SE, symbols/si, symbols/sk,
+ symbols/sk_qwerty, symbols/sr, symbols/syr, symbols/syr_phonetic,
+ symbols/th, symbols/tml, symbols/tr, symbols/ua, symbols/us,
+ symbols/us_intl, symbols/uz, symbols/yu: adding Swiss layouts and
+ removing references to pc/ from files
+
+2004-04-21 00:19 svu
+
+ * symbols/: Makefile.am, bs, srvr_ctrl: Bosninan layout was
+ forgotten
+
+2004-04-19 23:57 svu
+
+ * symbols/: Makefile.am, altwin, compose, ctrl, group, inet,
+ keypad, level3, lock: adding all-important option files
+
+2004-04-16 00:58 svu
+
+ * configure.in, xkbdesc.spec.in, rules/Makefile.am: now, the
+ symlinks allow distributors to use their own names for the rules
+ - though not really recommended, we have to be
+ backward-compatible
+
+2004-04-15 00:33 svu
+
+ * COPYING, Makefile.am, xkbdesc.spec.in, po/af.po, po/az.po,
+ po/bg.po, po/cs.po, po/da.po, po/fr.po, po/hu.po, po/nl.po,
+ po/ru.po, po/sk.po, po/sq.po, po/sr.po, po/sv.po, po/tr.po,
+ po/uk.po, po/xkbdesc.pot, po/zh_CN.po: COPYING added - MIT
+ license (thanks to Keithp). Some minor fixes on infrastructure
+
+2004-04-12 00:13 svu
+
+ * .cvsignore, Makefile.am, autogen.sh, configure.in, rules/base,
+ symbols/Makefile.am: First buildable version
+
+2004-04-11 23:03 svu
+
+ * configure.in, keycodes/Makefile.am, keymap/.cvsignore,
+ keymap/Makefile.am, po/af.po, po/az.po, po/bg.po, po/cs.po,
+ po/da.po, po/fr.po, po/hu.po, po/nl.po, po/ru.po, po/sk.po,
+ po/sq.po, po/sr.po, po/sv.po, po/tr.po, po/uk.po, po/xkbdesc.pot,
+ po/zh_CN.po, rules/.cvsignore, rules/Makefile.am,
+ semantics/.cvsignore, semantics/Makefile.am, symbols/.cvsignore,
+ types/.cvsignore, types/Makefile.am: more automake foo - but
+ still far from building the whole thing
+
+2004-04-10 03:22 svu
+
+ * autogen_gnome.sh, keycodes/.cvsignore, keycodes/Makefile.am: more
+ makefiles.am - but still long way to the first build
+
+2004-04-10 03:08 svu
+
+ * Makefile.am, README, README.config, README.enhancing,
+ configure.in, xfree86.xml.in, xfree86_xkb_xml.spec.in, xkb.dtd,
+ xkbdesc.spec.in, compat/.cvsignore, compat/Makefile.am,
+ compat/README, compat/accessx, compat/basic, compat/complete,
+ compat/default, compat/group_led, compat/iso9995, compat/japan,
+ compat/keypad, compat/leds, compat/misc, compat/mousekeys,
+ compat/norepeat, compat/pc, compat/pc98, compat/xfree86,
+ compat/xtest, geometry/.cvsignore, geometry/Makefile.am,
+ geometry/README, geometry/amiga, geometry/ataritt,
+ geometry/chicony, geometry/dell, geometry/everex,
+ geometry/fujitsu, geometry/hp, geometry/keytronic,
+ geometry/kinesis, geometry/macintosh, geometry/microsoft,
+ geometry/nec, geometry/northgate, geometry/pc, geometry/sony,
+ geometry/sun, geometry/winbook, keycodes/README,
+ keycodes/aliases, keycodes/amiga, keycodes/ataritt,
+ keycodes/fujitsu, keycodes/hp, keycodes/ibm, keycodes/macintosh,
+ keycodes/powerpcps2, keycodes/sony, keycodes/sun,
+ keycodes/xfree86, keycodes/xfree98, keymap/README, keymap/amiga,
+ keymap/ataritt, keymap/macintosh, keymap/sony, keymap/xfree86,
+ keymap/xfree98, po/POTFILES.in, po/af.po, po/az.po, po/bg.po,
+ po/cs.po, po/da.po, po/fr.po, po/hu.po, po/nl.po, po/ru.po,
+ po/sk.po, po/sq.po, po/sr.po, po/sv.po, po/tr.po, po/uk.po,
+ po/zh_CN.po, rules/README, rules/base, rules/base-it.lst,
+ rules/base.lst, rules/base.xml.in, rules/sgi, rules/sgi.lst,
+ rules/sun, rules/sun.lst, rules/xfree98, rules/xfree98.lst,
+ rules/xkb.dtd, rules/xml2lst.pl, semantics/basic,
+ semantics/complete, semantics/default, semantics/xtest,
+ symbols/al, symbols/am, symbols/ar, symbols/be, symbols/ben,
+ symbols/bg, symbols/br, symbols/by, symbols/cz,
+ symbols/cz_qwerty, symbols/de, symbols/dev, symbols/dk,
+ symbols/dvorak, symbols/dz, symbols/ee, symbols/el,
+ symbols/en_US, symbols/es, symbols/fi, symbols/fo, symbols/fr,
+ symbols/fr-latin9, symbols/gb, symbols/ge_la, symbols/ge_ru,
+ symbols/guj, symbols/gur, symbols/hr, symbols/ie, symbols/il,
+ symbols/il_phonetic, symbols/ir, symbols/is, symbols/it,
+ symbols/iu, symbols/kan, symbols/la, symbols/latin, symbols/lo,
+ symbols/lt, symbols/lv, symbols/mk, symbols/ml, symbols/mm,
+ symbols/mt, symbols/mt_us, symbols/nl, symbols/no, symbols/ogham,
+ symbols/ori, symbols/pc, symbols/pl, symbols/pl2, symbols/pt,
+ symbols/ro, symbols/ru, symbols/sapmi, symbols/se, symbols/se_FI,
+ symbols/se_NO, symbols/se_SE, symbols/si, symbols/sk,
+ symbols/sk_qwerty, symbols/sr, symbols/syr, symbols/syr_phonetic,
+ symbols/tel, symbols/th, symbols/th_pat, symbols/th_tis,
+ symbols/tj, symbols/tml, symbols/tr, symbols/ua, symbols/us,
+ symbols/us_intl, symbols/uz, symbols/yu, types/README,
+ types/basic, types/cancel, types/caps, types/complete,
+ types/default, types/extra, types/iso9995, types/mousekeys,
+ types/numpad, types/pc: first feed-in of the layouts. The
+ revolution is coming
+
+2004-04-04 02:40 svu
+
+ * configure.in, po/az.po: Azerbaijani translation, thanks to Metin
+ Amiroff
+
+2004-04-04 01:14 svu
+
+ * po/ru.po: Russian translation of the Syriac phonetic
+
+2004-04-04 01:12 svu
+
+ * xfree86.xml.in: Syriac phonetic was not there
+
+2004-03-19 21:37 svu
+
+ * configure.in: some more translations
+
+2004-03-19 21:37 svu
+
+ * po/hu.po: Hungarian one
+
+2004-03-19 21:02 svu
+
+ * po/: af.po, bg.po, cs.po, da.po, fr.po, nl.po, ru.po, sk.po,
+ sq.po, sr.po, sv.po, tr.po, uk.po, zh_CN.po: three new
+ translations
+
+2004-01-20 10:51 svu
+
+ * po/ru.po: corrected tibetian language translation
+
+2004-01-19 14:41 svu
+
+ * po/ru.po: updated Russian translation
+
+2004-01-19 14:41 svu
+
+ * xfree86.xml.in: new items from Ivan
+
+2004-01-19 14:39 svu
+
+ * xslt/xfree86.xsl: bugfix
+
+2004-01-09 14:44 svu
+
+ * po/ru.po: up2date
+
+2004-01-09 14:43 svu
+
+ * xfree86.xml.in: patch from Ivan - new items
+
+2004-01-07 09:32 svu
+
+ * configure.in, po/fr.po: French translation, thanks to Michel
+ Robitaille
+
+2004-01-06 16:20 svu
+
+ * xfree86.xml.in, po/ru.po: updates from Ivan
+
+2004-01-03 14:43 svu
+
+ * po/nl.po: new version, thanks to Elros
+
+2003-12-18 22:43 svu
+
+ * .cvsignore, po/.cvsignore: little cleanup on messages
+
+2003-12-18 22:42 svu
+
+ * Makefile.am, configure.in: little things for the latest intltool
+
+2003-12-18 22:39 svu
+
+ * po/sk.po: Slovak translation, thanks to Zdenko Podobný
+
+2003-12-18 22:38 svu
+
+ * po/da.po: Danish translation, thanks to Ole Laursen
+
+2003-12-18 22:34 svu
+
+ * xfree86.xml.in: One more layout, one more variant, updates from
+ Ivan
+
+2003-12-05 11:37 svu
+
+ * xslt/xfree86.xsl: helper xslt - reduces the resulting file
+
+2003-12-05 10:39 svu
+
+ * configure.in, po/tr.po: Turkish translation added, thanks to
+ Nilgün Belma Bugüner
+
+2003-11-30 02:11 svu
+
+ * configure.in, po/sr.po: Serbian translation added, thanks to
+ Danilo Segan
+
+2003-11-29 04:06 svu
+
+ * configure.in, po/zh_CN.po: Chinese simplified translation, thanks
+ to Funda Wang
+
+2003-11-27 22:57 svu
+
+ * configure.in, po/nl.po: NL translation. Thanks to Elros Cyriatan
+
+2003-11-27 21:19 svu
+
+ * configure.in: added cs translation
+
+2003-11-27 21:15 svu
+
+ * po/cs.po: First non-cyrillic translation. Thanks to Michal
+ Bukovjan
+
+2003-11-25 23:52 svu
+
+ * Makefile.am, NEWS, autogen_gnome.sh, configure.in,
+ xfree86.xml.in, po/.cvsignore, po/Makevars, po/POTFILES.in,
+ po/bg.po, po/ru.po, po/uk.po: Now the project should be buildable
+ and translatable - but please no translations till the English
+ version is approved
+
+2003-11-25 16:35 svu
+
+ * .cvsignore, AUTHORS, Makefile.am, autogen.sh, configure.in,
+ xfree86.xml.in, xfree86_xkb_xml.spec.in, xkb.dtd: first batch of
+ files - but no translation yet
+
+2003-11-24 23:32 svu
+
+ * README: first file in
+
diff --git a/xorg-server/xkeyboard-config/README b/xorg-server/xkeyboard-config/README
index d91eda6e6..faaec09aa 100644
--- a/xorg-server/xkeyboard-config/README
+++ b/xorg-server/xkeyboard-config/README
@@ -1,28 +1,28 @@
-X Keyboard Extension
---------------------
-
-The X Keyboard Extension essentially replaces the core protocol definition of
-keyboard. The extension makes possible to clearly and explicitly specify most
-aspects of keyboard behaviour on per-key basis and to more closely track the
-logical and physical state of the keyboard. It also includes a number of
-keyboard controls designed to make keyboards more accessible to people with
-physical impairments.
-
-There are five types of components in the server database corresponing to five
-xkb symbolic names: symbols, geometry, keycodes, compat and types which
-determine the keyboard behaviour. These five components can combined together
-into a resulting keyboard mapping using the 'rules' component.
-
-The complete specification can be found on
-http://xfree86.org/current/XKBproto.pdf
-
-For XKB configuration information see 'docs/README.config' file.
-
-For information how to further enhance XKB configuration see 'docs/README.enhancing'
-file.
-
-For information how to replace existing XKB configuration database with
-XKeyboardConfig see 'docs/HOWTO.transition' file.
-
-Contribution guidelines are described at
-http://www.freedesktop.org/wiki/Software/XKeyboardConfig/Rules
+X Keyboard Extension
+--------------------
+
+The X Keyboard Extension essentially replaces the core protocol definition of
+keyboard. The extension makes possible to clearly and explicitly specify most
+aspects of keyboard behaviour on per-key basis and to more closely track the
+logical and physical state of the keyboard. It also includes a number of
+keyboard controls designed to make keyboards more accessible to people with
+physical impairments.
+
+There are five types of components in the server database corresponing to five
+xkb symbolic names: symbols, geometry, keycodes, compat and types which
+determine the keyboard behaviour. These five components can combined together
+into a resulting keyboard mapping using the 'rules' component.
+
+The complete specification can be found on
+http://xfree86.org/current/XKBproto.pdf
+
+For XKB configuration information see 'docs/README.config' file.
+
+For information how to further enhance XKB configuration see 'docs/README.enhancing'
+file.
+
+For information how to replace existing XKB configuration database with
+XKeyboardConfig see 'docs/HOWTO.transition' file.
+
+Contribution guidelines are described at
+http://www.freedesktop.org/wiki/Software/XKeyboardConfig/Rules
diff --git a/xorg-server/xkeyboard-config/TODO b/xorg-server/xkeyboard-config/TODO
index 8a10faa02..f0ffaa754 100644
--- a/xorg-server/xkeyboard-config/TODO
+++ b/xorg-server/xkeyboard-config/TODO
@@ -1,6 +1,6 @@
-+ Ensure all national layouts are 'normalized' (no multiple layouts for same country/language - only variants)
-+ Write tests checking that every model/layout(variant)/option in base.xml is working
-+ Add the vendor info to the keyboard geometry description
-- Check consistence (correctness, usability) of the descriptions in the registry. Note: ask help from GNOME Usability Team.
-- Write tests which would ensure that base.xml covers everything
-- Write compatibility rules for old models/layouts/variants (potentially eternal job)
++ Ensure all national layouts are 'normalized' (no multiple layouts for same country/language - only variants)
++ Write tests checking that every model/layout(variant)/option in base.xml is working
++ Add the vendor info to the keyboard geometry description
+- Check consistence (correctness, usability) of the descriptions in the registry. Note: ask help from GNOME Usability Team.
+- Write tests which would ensure that base.xml covers everything
+- Write compatibility rules for old models/layouts/variants (potentially eternal job)
diff --git a/xorg-server/xkeyboard-config/compat/README b/xorg-server/xkeyboard-config/compat/README
index 00d591e7b..ea8750fac 100644
--- a/xorg-server/xkeyboard-config/compat/README
+++ b/xorg-server/xkeyboard-config/compat/README
@@ -1,33 +1,33 @@
-The core protocol interpretation of keyboard modifiers does not include direct
-support for multiple keyboard groups, so XKB reports the effective keyboard
-group to XKB-aware clients using some of reserved bits in the state field of
-some core protocol events. This modified state field would not be interpreted
-correctly by XKB-unaware clients, so XKB provides a group compatibility mapping
-which remaps the keyboard group into a core modifier mask that has similar
-effects, when possible.
-
-XKB maintains three compatibility state components that are used to make
-XKB-unaware clients(*) work as well as possible:
-- The compatibility state which corresponds to the effective modifier and
- effective group state.
-- The compatibility lookup state which is the core-protocol equivalent of the
- lookup state.
-- The compatibility grab state which is the nearest core-protocol equivalent
- of the grab state.
-
-Compatibility state are essentially the corresponding XKB states, but with
-keyboard group possibly encoded as one or more modifiers.
-
-Modifiers that correspond to each keyboard group are described in this
-group compatibility map.
-
-
-----
-(*) The implementation of XKB invisibly extends the X library to use the
-keyboard extension if it is present. That means, clients that use library or
-toolkit routines to interpret keyboard events automatically use all of XKB
-features; clients that directly interpret the state field of core protocol
-events or the keymap direcly may be affected by some of the XKB differences.
-Thus most clients can take all advantages without modification but it also
-means that XKB state can be reported to clients that have not explicitly
-requested the keyboard extension.
+The core protocol interpretation of keyboard modifiers does not include direct
+support for multiple keyboard groups, so XKB reports the effective keyboard
+group to XKB-aware clients using some of reserved bits in the state field of
+some core protocol events. This modified state field would not be interpreted
+correctly by XKB-unaware clients, so XKB provides a group compatibility mapping
+which remaps the keyboard group into a core modifier mask that has similar
+effects, when possible.
+
+XKB maintains three compatibility state components that are used to make
+XKB-unaware clients(*) work as well as possible:
+- The compatibility state which corresponds to the effective modifier and
+ effective group state.
+- The compatibility lookup state which is the core-protocol equivalent of the
+ lookup state.
+- The compatibility grab state which is the nearest core-protocol equivalent
+ of the grab state.
+
+Compatibility state are essentially the corresponding XKB states, but with
+keyboard group possibly encoded as one or more modifiers.
+
+Modifiers that correspond to each keyboard group are described in this
+group compatibility map.
+
+
+----
+(*) The implementation of XKB invisibly extends the X library to use the
+keyboard extension if it is present. That means, clients that use library or
+toolkit routines to interpret keyboard events automatically use all of XKB
+features; clients that directly interpret the state field of core protocol
+events or the keymap direcly may be affected by some of the XKB differences.
+Thus most clients can take all advantages without modification but it also
+means that XKB state can be reported to clients that have not explicitly
+requested the keyboard extension.
diff --git a/xorg-server/xkeyboard-config/compat/accessx b/xorg-server/xkeyboard-config/compat/accessx
index 26cafab7a..0ed34ced1 100644
--- a/xorg-server/xkeyboard-config/compat/accessx
+++ b/xorg-server/xkeyboard-config/compat/accessx
@@ -1,52 +1,52 @@
-default partial xkb_compatibility "basic" {
- interpret AccessX_Enable {
- action= LockControls(controls=AccessXKeys);
- };
-};
-
-partial xkb_compatibility "full" {
-
- interpret AccessX_Enable {
- action= LockControls(controls=AccessXKeys);
- };
-
- interpret AccessX_Feedback_Enable {
- action= LockControls(controls=AccessXFeedback);
- };
-
- interpret RepeatKeys_Enable {
- action= LockControls(controls=RepeatKeys);
- };
-
- interpret SlowKeys_Enable {
- action= LockControls(controls=SlowKeys);
- };
-
- interpret BounceKeys_Enable {
- action= LockControls(controls=BounceKeys);
- };
-
- interpret StickyKeys_Enable {
- action= LockControls(controls=StickyKeys);
- };
-
- interpret MouseKeys_Enable {
- action= LockControls(controls=MouseKeys);
- };
-
- interpret MouseKeys_Accel_Enable {
- action= LockControls(controls=MouseKeysAccel);
- };
-
- interpret Overlay1_Enable {
- action= LockControls(controls=Overlay1);
- };
-
- interpret Overlay2_Enable {
- action= LockControls(controls=Overlay2);
- };
-
- interpret AudibleBell_Enable {
- action= LockControls(controls=AudibleBell);
- };
-};
+default partial xkb_compatibility "basic" {
+ interpret AccessX_Enable {
+ action= LockControls(controls=AccessXKeys);
+ };
+};
+
+partial xkb_compatibility "full" {
+
+ interpret AccessX_Enable {
+ action= LockControls(controls=AccessXKeys);
+ };
+
+ interpret AccessX_Feedback_Enable {
+ action= LockControls(controls=AccessXFeedback);
+ };
+
+ interpret RepeatKeys_Enable {
+ action= LockControls(controls=RepeatKeys);
+ };
+
+ interpret SlowKeys_Enable {
+ action= LockControls(controls=SlowKeys);
+ };
+
+ interpret BounceKeys_Enable {
+ action= LockControls(controls=BounceKeys);
+ };
+
+ interpret StickyKeys_Enable {
+ action= LockControls(controls=StickyKeys);
+ };
+
+ interpret MouseKeys_Enable {
+ action= LockControls(controls=MouseKeys);
+ };
+
+ interpret MouseKeys_Accel_Enable {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+
+ interpret Overlay1_Enable {
+ action= LockControls(controls=Overlay1);
+ };
+
+ interpret Overlay2_Enable {
+ action= LockControls(controls=Overlay2);
+ };
+
+ interpret AudibleBell_Enable {
+ action= LockControls(controls=AudibleBell);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/basic b/xorg-server/xkeyboard-config/compat/basic
index ba7e52a6f..393c32445 100644
--- a/xorg-server/xkeyboard-config/compat/basic
+++ b/xorg-server/xkeyboard-config/compat/basic
@@ -1,48 +1,48 @@
-// Minimal set of symbol interpretations to provide
-// reasonable default behavior (Num lock, shift and
-// caps lock and mode switch) and set up the
-// automatic updating of common keyboard LEDs.
-
-default xkb_compatibility "basic" {
- virtual_modifiers NumLock,AltGr;
-
- interpret.repeat= False;
- setMods.clearLocks= True;
- latchMods.clearLocks= True;
- latchMods.latchToLock= True;
-
- interpret Shift_Lock+AnyOf(Shift+Lock) {
- action= LockMods(modifiers=Shift);
- };
-
- interpret Any+Lock {
- action= LockMods(modifiers=Lock);
- };
-
- interpret Num_Lock+Any {
- virtualModifier= NumLock;
- action= LockMods(modifiers=NumLock);
- };
-
- interpret Mode_switch {
- useModMapMods= level1;
- virtualModifier= AltGr;
- action= SetGroup(group=+1);
- };
-
- interpret Any + Any {
- action= SetMods(modifiers=modMapMods);
- };
-
- group 2 = AltGr;
- group 3 = AltGr;
- group 4 = AltGr;
-
- include "ledcaps"
- include "lednum"
- indicator "Shift Lock" {
- !allowExplicit;
- whichModState= Locked;
- modifiers= Shift;
- };
-};
+// Minimal set of symbol interpretations to provide
+// reasonable default behavior (Num lock, shift and
+// caps lock and mode switch) and set up the
+// automatic updating of common keyboard LEDs.
+
+default xkb_compatibility "basic" {
+ virtual_modifiers NumLock,AltGr;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret Shift_Lock+AnyOf(Shift+Lock) {
+ action= LockMods(modifiers=Shift);
+ };
+
+ interpret Any+Lock {
+ action= LockMods(modifiers=Lock);
+ };
+
+ interpret Num_Lock+Any {
+ virtualModifier= NumLock;
+ action= LockMods(modifiers=NumLock);
+ };
+
+ interpret Mode_switch {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= SetGroup(group=+1);
+ };
+
+ interpret Any + Any {
+ action= SetMods(modifiers=modMapMods);
+ };
+
+ group 2 = AltGr;
+ group 3 = AltGr;
+ group 4 = AltGr;
+
+ include "ledcaps"
+ include "lednum"
+ indicator "Shift Lock" {
+ !allowExplicit;
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/caps b/xorg-server/xkeyboard-config/compat/caps
index d787ab63d..03c47151e 100644
--- a/xorg-server/xkeyboard-config/compat/caps
+++ b/xorg-server/xkeyboard-config/compat/caps
@@ -1,12 +1,12 @@
-partial xkb_compatibility "caps_lock" {
- // Keysym Caps_Lock locks Lock modifier.
- // With this, the keysym Caps_Lock can be used without binding the whole
- // key to a real modifier.
- // This is essential when you don't want to use caps lock on the first
- // level.
- // This should not have any compatibility issues when used together with
- // other layouts which don't utilize this capability.
- interpret Caps_Lock {
- action = LockMods(modifiers = Lock);
- };
-};
+partial xkb_compatibility "caps_lock" {
+ // Keysym Caps_Lock locks Lock modifier.
+ // With this, the keysym Caps_Lock can be used without binding the whole
+ // key to a real modifier.
+ // This is essential when you don't want to use caps lock on the first
+ // level.
+ // This should not have any compatibility issues when used together with
+ // other layouts which don't utilize this capability.
+ interpret Caps_Lock {
+ action = LockMods(modifiers = Lock);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/complete b/xorg-server/xkeyboard-config/compat/complete
index 0bf171db3..d33c4dbce 100644
--- a/xorg-server/xkeyboard-config/compat/complete
+++ b/xorg-server/xkeyboard-config/compat/complete
@@ -1,10 +1,10 @@
-default xkb_compatibility "complete" {
- include "basic"
- augment "iso9995"
- augment "mousekeys"
- augment "accessx(full)"
- augment "misc"
- augment "xfree86"
- augment "level5"
- augment "caps(caps_lock)"
-};
+default xkb_compatibility "complete" {
+ include "basic"
+ augment "iso9995"
+ augment "mousekeys"
+ augment "accessx(full)"
+ augment "misc"
+ augment "xfree86"
+ augment "level5"
+ augment "caps(caps_lock)"
+};
diff --git a/xorg-server/xkeyboard-config/compat/japan b/xorg-server/xkeyboard-config/compat/japan
index e9a6728d4..ab4f85e4c 100644
--- a/xorg-server/xkeyboard-config/compat/japan
+++ b/xorg-server/xkeyboard-config/compat/japan
@@ -1,45 +1,45 @@
-// Japanese keyboards need Eisu and Kana shift and
-// lock keys, which are typically bound to the
-// second shift level for some other modifier key.
-// These interpretations disable the default
-// interpretation (which would have these keys set
-// the same modifier as the level one symbol).
-
-default partial xkb_compatibility "japan" {
-
- interpret.repeat= False;
-
- interpret Eisu_Shift+Lock {
- action= NoAction();
- };
-
- interpret Eisu_toggle+Lock {
- action= NoAction();
- };
-
- interpret Kana_Shift+Lock {
- action= NoAction();
- };
-
- interpret Kana_Lock+Lock {
- action= NoAction();
- };
-};
-
-// Some Japanese keyboards have an explict Kana Lock key & matching LED
-
-partial xkb_compatibility "kana_lock" {
-
- virtual_modifiers Kana_Lock;
-
- interpret Kana_Lock+AnyOfOrNone(all) {
- virtualModifier= Kana_Lock;
- useModMapMods=level1;
- action= LockGroup(group=+1);
- };
-
- indicator "Kana" {
- !allowExplicit;
- groups= All-Group1;
- };
-};
+// Japanese keyboards need Eisu and Kana shift and
+// lock keys, which are typically bound to the
+// second shift level for some other modifier key.
+// These interpretations disable the default
+// interpretation (which would have these keys set
+// the same modifier as the level one symbol).
+
+default partial xkb_compatibility "japan" {
+
+ interpret.repeat= False;
+
+ interpret Eisu_Shift+Lock {
+ action= NoAction();
+ };
+
+ interpret Eisu_toggle+Lock {
+ action= NoAction();
+ };
+
+ interpret Kana_Shift+Lock {
+ action= NoAction();
+ };
+
+ interpret Kana_Lock+Lock {
+ action= NoAction();
+ };
+};
+
+// Some Japanese keyboards have an explict Kana Lock key & matching LED
+
+partial xkb_compatibility "kana_lock" {
+
+ virtual_modifiers Kana_Lock;
+
+ interpret Kana_Lock+AnyOfOrNone(all) {
+ virtualModifier= Kana_Lock;
+ useModMapMods=level1;
+ action= LockGroup(group=+1);
+ };
+
+ indicator "Kana" {
+ !allowExplicit;
+ groups= All-Group1;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/ledcaps b/xorg-server/xkeyboard-config/compat/ledcaps
index fc3084eec..8e3ad4796 100644
--- a/xorg-server/xkeyboard-config/compat/ledcaps
+++ b/xorg-server/xkeyboard-config/compat/ledcaps
@@ -1,23 +1,23 @@
-// Use Caps Lock LED to show either Caps Lock, Group, or Shift Lock state
-
-default partial xkb_compatibility "caps_lock" {
- indicator "Caps Lock" {
- !allowExplicit;
- whichModState= Locked;
- modifiers= Lock;
- };
-};
-
-partial xkb_compatibility "group_lock" {
- indicator "Caps Lock" {
- modifiers= None;
- groups=All-group1;
- };
-};
-
-partial xkb_compatibility "shift_lock" {
- indicator "Caps Lock" {
- whichModState= Locked;
- modifiers= Shift;
- };
-};
+// Use Caps Lock LED to show either Caps Lock, Group, or Shift Lock state
+
+default partial xkb_compatibility "caps_lock" {
+ indicator "Caps Lock" {
+ !allowExplicit;
+ whichModState= Locked;
+ modifiers= Lock;
+ };
+};
+
+partial xkb_compatibility "group_lock" {
+ indicator "Caps Lock" {
+ modifiers= None;
+ groups=All-group1;
+ };
+};
+
+partial xkb_compatibility "shift_lock" {
+ indicator "Caps Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/lednum b/xorg-server/xkeyboard-config/compat/lednum
index 24a60a595..57fb2646e 100644
--- a/xorg-server/xkeyboard-config/compat/lednum
+++ b/xorg-server/xkeyboard-config/compat/lednum
@@ -1,23 +1,23 @@
-// Use Num Lock LED to show either Num Lock, Group, or Shift Lock state
-
-default partial xkb_compatibility "num_lock" {
- indicator "Num Lock" {
- !allowExplicit;
- whichModState= Locked;
- modifiers= NumLock;
- };
-};
-
-partial xkb_compatibility "group_lock" {
- indicator "Num Lock" {
- modifiers= None;
- groups=All-group1;
- };
-};
-
-partial xkb_compatibility "shift_lock" {
- indicator "Num Lock" {
- whichModState= Locked;
- modifiers= Shift;
- };
-};
+// Use Num Lock LED to show either Num Lock, Group, or Shift Lock state
+
+default partial xkb_compatibility "num_lock" {
+ indicator "Num Lock" {
+ !allowExplicit;
+ whichModState= Locked;
+ modifiers= NumLock;
+ };
+};
+
+partial xkb_compatibility "group_lock" {
+ indicator "Num Lock" {
+ modifiers= None;
+ groups=All-group1;
+ };
+};
+
+partial xkb_compatibility "shift_lock" {
+ indicator "Num Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/ledscroll b/xorg-server/xkeyboard-config/compat/ledscroll
index ca5a82c4c..d51fcfc6f 100644
--- a/xorg-server/xkeyboard-config/compat/ledscroll
+++ b/xorg-server/xkeyboard-config/compat/ledscroll
@@ -1,23 +1,23 @@
-// Use Scroll Lock LED to show either Scroll Lock, Group, or Shift Lock state
-
-default partial xkb_compatibility "scroll_lock" {
- indicator "Scroll Lock" {
- allowExplicit;
- whichModState= Locked;
- modifiers= ScrollLock;
- };
-};
-
-partial xkb_compatibility "group_lock" {
- indicator "Scroll Lock" {
- modifiers= None;
- groups=All-group1;
- };
-};
-
-partial xkb_compatibility "shift_lock" {
- indicator "Scroll Lock" {
- whichModState= Locked;
- modifiers= Shift;
- };
-};
+// Use Scroll Lock LED to show either Scroll Lock, Group, or Shift Lock state
+
+default partial xkb_compatibility "scroll_lock" {
+ indicator "Scroll Lock" {
+ allowExplicit;
+ whichModState= Locked;
+ modifiers= ScrollLock;
+ };
+};
+
+partial xkb_compatibility "group_lock" {
+ indicator "Scroll Lock" {
+ modifiers= None;
+ groups=All-group1;
+ };
+};
+
+partial xkb_compatibility "shift_lock" {
+ indicator "Scroll Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/level5 b/xorg-server/xkeyboard-config/compat/level5
index 69296e9f0..8d28051c1 100644
--- a/xorg-server/xkeyboard-config/compat/level5
+++ b/xorg-server/xkeyboard-config/compat/level5
@@ -1,51 +1,51 @@
-// Fairly complete set of symbol interpretations
-// to provide reasonable default behavior
-
-default partial xkb_compatibility "default" {
- virtual_modifiers LevelFive;
-
- interpret.repeat= False;
- setMods.clearLocks= True;
- latchMods.clearLocks= True;
- latchMods.latchToLock= True;
-
- interpret ISO_Level5_Shift+Any {
- useModMapMods= level1;
- virtualModifier= LevelFive;
- action= SetMods(modifiers=LevelFive);
- };
-
- interpret ISO_Level5_Shift {
- action= SetMods(modifiers=LevelFive);
- };
-
- interpret ISO_Level5_Latch+Any {
- virtualModifier= LevelFive;
- action= LatchMods(modifiers=LevelFive);
- };
-
- interpret ISO_Level5_Latch {
- action= LatchMods(modifiers=LevelFive);
- };
-
- interpret ISO_Level5_Lock+Any {
- virtualModifier= LevelFive;
- action= LockMods(modifiers=LevelFive);
- };
-
- interpret ISO_Level5_Lock {
- action= LockMods(modifiers=LevelFive);
- };
-};
-partial xkb_compatibility "level5_lock" {
- // This defines a Level5-Lock using the NumLock real modifier in order to
- // create arbitrary level-behaviour, which would not be possible with the
- // virtual modifier.
- // See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK
- // See also: symbols/level5(lock)
- virtual_modifiers NumLock;
-
- interpret ISO_Level5_Lock {
- action = LockMods(modifiers = NumLock);
- };
-};
+// Fairly complete set of symbol interpretations
+// to provide reasonable default behavior
+
+default partial xkb_compatibility "default" {
+ virtual_modifiers LevelFive;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret ISO_Level5_Shift+Any {
+ useModMapMods= level1;
+ virtualModifier= LevelFive;
+ action= SetMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Shift {
+ action= SetMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Latch+Any {
+ virtualModifier= LevelFive;
+ action= LatchMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Latch {
+ action= LatchMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Lock+Any {
+ virtualModifier= LevelFive;
+ action= LockMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Lock {
+ action= LockMods(modifiers=LevelFive);
+ };
+};
+partial xkb_compatibility "level5_lock" {
+ // This defines a Level5-Lock using the NumLock real modifier in order to
+ // create arbitrary level-behaviour, which would not be possible with the
+ // virtual modifier.
+ // See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK
+ // See also: symbols/level5(lock)
+ virtual_modifiers NumLock;
+
+ interpret ISO_Level5_Lock {
+ action = LockMods(modifiers = NumLock);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/misc b/xorg-server/xkeyboard-config/compat/misc
index 6a8b20217..cfe9a39b4 100644
--- a/xorg-server/xkeyboard-config/compat/misc
+++ b/xorg-server/xkeyboard-config/compat/misc
@@ -1,122 +1,122 @@
-default partial xkb_compatibility "misc" {
-
- virtual_modifiers Alt,Meta,Super,Hyper,ScrollLock;
-
- // Interpretations for some other useful keys
-
- interpret Terminate_Server {
- action = Terminate();
- };
-
- setMods.clearLocks= True;
-
- // Sets the "Alt" virtual modifier
-
- interpret Alt_L+Any {
- //useModMapMods= level1;
- virtualModifier= Alt;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Alt_L {
- action = SetMods(modifiers=Alt);
- };
-
- interpret Alt_R+Any {
- //useModMapMods= level1;
- virtualModifier= Alt;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Alt_R {
- action = SetMods(modifiers=Alt);
- };
-
- // Sets the "Meta" virtual modifier
-
- interpret Meta_L+Any {
-// useModMapMods= level1;
- virtualModifier= Meta;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Meta_L {
- action = SetMods(modifiers=Meta);
- };
-
- interpret Meta_R+Any {
- //useModMapMods= level1;
- virtualModifier= Meta;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Meta_R {
- action = SetMods(modifiers=Meta);
- };
-
- // Sets the "Super" virtual modifier
-
- interpret Super_L+Any {
-// useModMapMods= level1;
- virtualModifier= Super;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Super_L {
- action = SetMods(modifiers=Super);
- };
-
- interpret Super_R+Any {
- //useModMapMods= level1;
- virtualModifier= Super;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Super_R {
- action = SetMods(modifiers=Super);
- };
-
- // Sets the "Hyper" virtual modifier
-
- interpret Hyper_L+Any {
-// useModMapMods= level1;
- virtualModifier= Hyper;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Hyper_L {
- action = SetMods(modifiers=Hyper);
- };
-
- interpret Hyper_R+Any {
- //useModMapMods= level1;
- virtualModifier= Hyper;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Hyper_R {
- action = SetMods(modifiers=Hyper);
- };
-
- // Sets the "ScrollLock" virtual modifier and
- // makes it actually lock when pressed. Sets
- // up a map for the scroll lock indicator.
- interpret Scroll_Lock+Any {
- virtualModifier= ScrollLock;
- action = LockMods(modifiers=modMapMods);
- };
-
- include "ledscroll"
-
- include "misc(assign_shift_left_action)"
-};
-
-partial xkb_compatibility "assign_shift_left_action" {
- // Because of the irrevertable modifier mapping in symbols/pc <LFSH> is
- // getting bound to the Lock modifier when using
- // symbols/shift(both_capslock), creating unwanted behaviour.
- // This is a quirk, to circumvent the problem.
- interpret Shift_L {
- action = SetMods(modifiers = Shift);
- };
-};
+default partial xkb_compatibility "misc" {
+
+ virtual_modifiers Alt,Meta,Super,Hyper,ScrollLock;
+
+ // Interpretations for some other useful keys
+
+ interpret Terminate_Server {
+ action = Terminate();
+ };
+
+ setMods.clearLocks= True;
+
+ // Sets the "Alt" virtual modifier
+
+ interpret Alt_L+Any {
+ //useModMapMods= level1;
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Alt_L {
+ action = SetMods(modifiers=Alt);
+ };
+
+ interpret Alt_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Alt_R {
+ action = SetMods(modifiers=Alt);
+ };
+
+ // Sets the "Meta" virtual modifier
+
+ interpret Meta_L+Any {
+// useModMapMods= level1;
+ virtualModifier= Meta;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Meta_L {
+ action = SetMods(modifiers=Meta);
+ };
+
+ interpret Meta_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Meta;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Meta_R {
+ action = SetMods(modifiers=Meta);
+ };
+
+ // Sets the "Super" virtual modifier
+
+ interpret Super_L+Any {
+// useModMapMods= level1;
+ virtualModifier= Super;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Super_L {
+ action = SetMods(modifiers=Super);
+ };
+
+ interpret Super_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Super;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Super_R {
+ action = SetMods(modifiers=Super);
+ };
+
+ // Sets the "Hyper" virtual modifier
+
+ interpret Hyper_L+Any {
+// useModMapMods= level1;
+ virtualModifier= Hyper;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Hyper_L {
+ action = SetMods(modifiers=Hyper);
+ };
+
+ interpret Hyper_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Hyper;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Hyper_R {
+ action = SetMods(modifiers=Hyper);
+ };
+
+ // Sets the "ScrollLock" virtual modifier and
+ // makes it actually lock when pressed. Sets
+ // up a map for the scroll lock indicator.
+ interpret Scroll_Lock+Any {
+ virtualModifier= ScrollLock;
+ action = LockMods(modifiers=modMapMods);
+ };
+
+ include "ledscroll"
+
+ include "misc(assign_shift_left_action)"
+};
+
+partial xkb_compatibility "assign_shift_left_action" {
+ // Because of the irrevertable modifier mapping in symbols/pc <LFSH> is
+ // getting bound to the Lock modifier when using
+ // symbols/shift(both_capslock), creating unwanted behaviour.
+ // This is a quirk, to circumvent the problem.
+ interpret Shift_L {
+ action = SetMods(modifiers = Shift);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/mousekeys b/xorg-server/xkeyboard-config/compat/mousekeys
index bdd3d7c5d..f60c756c4 100644
--- a/xorg-server/xkeyboard-config/compat/mousekeys
+++ b/xorg-server/xkeyboard-config/compat/mousekeys
@@ -1,202 +1,202 @@
-// Interpretations for arrow keys and a bunch of other
-// common keysyms which make it possible to bind "mouse"
-// keys using xmodmap and activate or deactivate them
-// from the keyboard.
-
-default partial xkb_compatibility "mousekeys" {
-
- // Keypad actions.
- //
- interpret.repeat= True;
-
- interpret KP_1 {
- action = MovePtr(x=-1,y= +1);
- };
- interpret KP_End {
- action = MovePtr(x=-1,y= +1);
- };
-
- interpret KP_2 {
- action = MovePtr(x=+0,y= +1);
- };
- interpret KP_Down {
- action = MovePtr(x=+0,y= +1);
- };
-
- interpret KP_3 {
- action = MovePtr(x=+1,y=+1);
- };
- interpret KP_Next {
- action = MovePtr(x=+1,y=+1);
- };
-
- interpret KP_4 {
- action = MovePtr(x=-1,y=+0);
- };
- interpret KP_Left {
- action = MovePtr(x=-1,y=+0);
- };
-
- interpret KP_6 {
- action = MovePtr(x=+1,y=+0);
- };
- interpret KP_Right {
- action = MovePtr(x=+1,y=+0);
- };
-
- interpret KP_7 {
- action = MovePtr(x=-1,y=-1);
- };
- interpret KP_Home {
- action = MovePtr(x=-1,y=-1);
- };
-
- interpret KP_8 {
- action = MovePtr(x=+0,y=-1);
- };
- interpret KP_Up {
- action = MovePtr(x=+0,y=-1);
- };
-
- interpret KP_9 {
- action = MovePtr(x=+1,y=-1);
- };
- interpret KP_Prior {
- action = MovePtr(x=+1,y=-1);
- };
-
- interpret KP_5 {
- action = PointerButton(button=default);
- };
- interpret KP_Begin {
- action = PointerButton(button=default);
- };
-
- interpret KP_F2 {
- action = SetPtrDflt(affect=defaultButton,button=1);
- };
- interpret KP_Divide {
- action = SetPtrDflt(affect=defaultButton,button=1);
- };
-
- interpret KP_F3 {
- action = SetPtrDflt(affect=defaultButton,button=2);
- };
- interpret KP_Multiply {
- action = SetPtrDflt(affect=defaultButton,button=2);
- };
-
- interpret KP_F4 {
- action = SetPtrDflt(affect=defaultButton,button=3);
- };
- interpret KP_Subtract {
- action = SetPtrDflt(affect=defaultButton,button=3);
- };
-
- interpret KP_Separator {
- action = PointerButton(button=default,count=2);
- };
- interpret KP_Add {
- action = PointerButton(button=default,count=2);
- };
-
- interpret KP_0 {
- action = LockPointerButton(button=default,affect=lock);
- };
- interpret KP_Insert {
- action = LockPointerButton(button=default,affect=lock);
- };
-
- interpret KP_Decimal {
- action = LockPointerButton(button=default,affect=unlock);
- };
- interpret KP_Delete {
- action = LockPointerButton(button=default,affect=unlock);
- };
-
- // Additional mappings for Solaris keypad compatibility
- interpret F25 { // aka KP_Divide
- action = SetPtrDflt(affect=defaultButton,button=1);
- };
- interpret F26 { // aka KP_Multiply
- action = SetPtrDflt(affect=defaultButton,button=2);
- };
- interpret F27 { // aka KP_Home
- action = MovePtr(x=-1,y=-1);
- };
- interpret F29 { // aka KP_Prior
- action = MovePtr(x=+1,y=-1);
- };
- interpret F31 { // aka KP_Begin
- action = PointerButton(button=default);
- };
- interpret F33 { // aka KP_End
- action = MovePtr(x=-1,y= +1);
- };
- interpret F35 { // aka KP_Next
- action = MovePtr(x=+1,y=+1);
- };
-
- interpret.repeat= False;
-
-
- // New Keysym Actions.
- //
- interpret Pointer_Button_Dflt {
- action= PointerButton(button=default);
- };
- interpret Pointer_Button1 {
- action= PointerButton(button=1);
- };
- interpret Pointer_Button2 {
- action= PointerButton(button=2);
- };
- interpret Pointer_Button3 {
- action= PointerButton(button=3);
- };
- interpret Pointer_DblClick_Dflt {
- action= PointerButton(button=default,count=2);
- };
- interpret Pointer_DblClick1 {
- action= PointerButton(button=1,count=2);
- };
- interpret Pointer_DblClick2 {
- action= PointerButton(button=2,count=2);
- };
- interpret Pointer_DblClick3 {
- action= PointerButton(button=3,count=2);
- };
- interpret Pointer_Drag_Dflt {
- action= LockPointerButton(button=default);
- };
- interpret Pointer_Drag1 {
- action= LockPointerButton(button=1);
- };
- interpret Pointer_Drag2 {
- action= LockPointerButton(button=2);
- };
- interpret Pointer_Drag3 {
- action= LockPointerButton(button=3);
- };
-
- interpret Pointer_EnableKeys {
- action= LockControls(controls=MouseKeys);
- };
- interpret Pointer_Accelerate {
- action= LockControls(controls=MouseKeysAccel);
- };
- interpret Pointer_DfltBtnNext {
- action= SetPtrDflt(affect=defaultButton,button= +1);
- };
- interpret Pointer_DfltBtnPrev {
- action= SetPtrDflt(affect=defaultButton,button= -1);
- };
-
-
- // Allow an indicator for MouseKeys.
- indicator "Mouse Keys" {
-// !allowExplicit;
- indicatorDrivesKeyboard;
- controls= MouseKeys;
- };
-};
+// Interpretations for arrow keys and a bunch of other
+// common keysyms which make it possible to bind "mouse"
+// keys using xmodmap and activate or deactivate them
+// from the keyboard.
+
+default partial xkb_compatibility "mousekeys" {
+
+ // Keypad actions.
+ //
+ interpret.repeat= True;
+
+ interpret KP_1 {
+ action = MovePtr(x=-1,y= +1);
+ };
+ interpret KP_End {
+ action = MovePtr(x=-1,y= +1);
+ };
+
+ interpret KP_2 {
+ action = MovePtr(x=+0,y= +1);
+ };
+ interpret KP_Down {
+ action = MovePtr(x=+0,y= +1);
+ };
+
+ interpret KP_3 {
+ action = MovePtr(x=+1,y=+1);
+ };
+ interpret KP_Next {
+ action = MovePtr(x=+1,y=+1);
+ };
+
+ interpret KP_4 {
+ action = MovePtr(x=-1,y=+0);
+ };
+ interpret KP_Left {
+ action = MovePtr(x=-1,y=+0);
+ };
+
+ interpret KP_6 {
+ action = MovePtr(x=+1,y=+0);
+ };
+ interpret KP_Right {
+ action = MovePtr(x=+1,y=+0);
+ };
+
+ interpret KP_7 {
+ action = MovePtr(x=-1,y=-1);
+ };
+ interpret KP_Home {
+ action = MovePtr(x=-1,y=-1);
+ };
+
+ interpret KP_8 {
+ action = MovePtr(x=+0,y=-1);
+ };
+ interpret KP_Up {
+ action = MovePtr(x=+0,y=-1);
+ };
+
+ interpret KP_9 {
+ action = MovePtr(x=+1,y=-1);
+ };
+ interpret KP_Prior {
+ action = MovePtr(x=+1,y=-1);
+ };
+
+ interpret KP_5 {
+ action = PointerButton(button=default);
+ };
+ interpret KP_Begin {
+ action = PointerButton(button=default);
+ };
+
+ interpret KP_F2 {
+ action = SetPtrDflt(affect=defaultButton,button=1);
+ };
+ interpret KP_Divide {
+ action = SetPtrDflt(affect=defaultButton,button=1);
+ };
+
+ interpret KP_F3 {
+ action = SetPtrDflt(affect=defaultButton,button=2);
+ };
+ interpret KP_Multiply {
+ action = SetPtrDflt(affect=defaultButton,button=2);
+ };
+
+ interpret KP_F4 {
+ action = SetPtrDflt(affect=defaultButton,button=3);
+ };
+ interpret KP_Subtract {
+ action = SetPtrDflt(affect=defaultButton,button=3);
+ };
+
+ interpret KP_Separator {
+ action = PointerButton(button=default,count=2);
+ };
+ interpret KP_Add {
+ action = PointerButton(button=default,count=2);
+ };
+
+ interpret KP_0 {
+ action = LockPointerButton(button=default,affect=lock);
+ };
+ interpret KP_Insert {
+ action = LockPointerButton(button=default,affect=lock);
+ };
+
+ interpret KP_Decimal {
+ action = LockPointerButton(button=default,affect=unlock);
+ };
+ interpret KP_Delete {
+ action = LockPointerButton(button=default,affect=unlock);
+ };
+
+ // Additional mappings for Solaris keypad compatibility
+ interpret F25 { // aka KP_Divide
+ action = SetPtrDflt(affect=defaultButton,button=1);
+ };
+ interpret F26 { // aka KP_Multiply
+ action = SetPtrDflt(affect=defaultButton,button=2);
+ };
+ interpret F27 { // aka KP_Home
+ action = MovePtr(x=-1,y=-1);
+ };
+ interpret F29 { // aka KP_Prior
+ action = MovePtr(x=+1,y=-1);
+ };
+ interpret F31 { // aka KP_Begin
+ action = PointerButton(button=default);
+ };
+ interpret F33 { // aka KP_End
+ action = MovePtr(x=-1,y= +1);
+ };
+ interpret F35 { // aka KP_Next
+ action = MovePtr(x=+1,y=+1);
+ };
+
+ interpret.repeat= False;
+
+
+ // New Keysym Actions.
+ //
+ interpret Pointer_Button_Dflt {
+ action= PointerButton(button=default);
+ };
+ interpret Pointer_Button1 {
+ action= PointerButton(button=1);
+ };
+ interpret Pointer_Button2 {
+ action= PointerButton(button=2);
+ };
+ interpret Pointer_Button3 {
+ action= PointerButton(button=3);
+ };
+ interpret Pointer_DblClick_Dflt {
+ action= PointerButton(button=default,count=2);
+ };
+ interpret Pointer_DblClick1 {
+ action= PointerButton(button=1,count=2);
+ };
+ interpret Pointer_DblClick2 {
+ action= PointerButton(button=2,count=2);
+ };
+ interpret Pointer_DblClick3 {
+ action= PointerButton(button=3,count=2);
+ };
+ interpret Pointer_Drag_Dflt {
+ action= LockPointerButton(button=default);
+ };
+ interpret Pointer_Drag1 {
+ action= LockPointerButton(button=1);
+ };
+ interpret Pointer_Drag2 {
+ action= LockPointerButton(button=2);
+ };
+ interpret Pointer_Drag3 {
+ action= LockPointerButton(button=3);
+ };
+
+ interpret Pointer_EnableKeys {
+ action= LockControls(controls=MouseKeys);
+ };
+ interpret Pointer_Accelerate {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+ interpret Pointer_DfltBtnNext {
+ action= SetPtrDflt(affect=defaultButton,button= +1);
+ };
+ interpret Pointer_DfltBtnPrev {
+ action= SetPtrDflt(affect=defaultButton,button= -1);
+ };
+
+
+ // Allow an indicator for MouseKeys.
+ indicator "Mouse Keys" {
+// !allowExplicit;
+ indicatorDrivesKeyboard;
+ controls= MouseKeys;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/olpc b/xorg-server/xkeyboard-config/compat/olpc
index b8fe667d2..a7a2cc425 100644
--- a/xorg-server/xkeyboard-config/compat/olpc
+++ b/xorg-server/xkeyboard-config/compat/olpc
@@ -1,51 +1,51 @@
-//
-// Created by Bernardo Innocenti <bernie@codewiz.org>
-//
-// Map the OLPC game keys to virtual modifiers
-//
-
-default xkb_compatibility "olpc" {
- include "complete"
-
- virtual_modifiers Square,Cross,Triangle,Circle;
-
- interpret KP_Home+Any {
- //useModMapMods= level1;
- virtualModifier= Square;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret KP_Home {
- action = SetMods(modifiers=Square);
- };
-
- interpret KP_Next+Any {
- //useModMapMods= level1;
- virtualModifier= Cross;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret KP_Next {
- action = SetMods(modifiers=Cross);
- };
-
- interpret KP_End+Any {
- //useModMapMods= level1;
- virtualModifier= Circle;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret KP_End {
- action = SetMods(modifiers=Circle);
- };
-
- interpret KP_Prior+Any {
- //useModMapMods= level1;
- virtualModifier= Triangle;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret KP_Prior {
- action = SetMods(modifiers=Triangle);
- };
-};
+//
+// Created by Bernardo Innocenti <bernie@codewiz.org>
+//
+// Map the OLPC game keys to virtual modifiers
+//
+
+default xkb_compatibility "olpc" {
+ include "complete"
+
+ virtual_modifiers Square,Cross,Triangle,Circle;
+
+ interpret KP_Home+Any {
+ //useModMapMods= level1;
+ virtualModifier= Square;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret KP_Home {
+ action = SetMods(modifiers=Square);
+ };
+
+ interpret KP_Next+Any {
+ //useModMapMods= level1;
+ virtualModifier= Cross;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret KP_Next {
+ action = SetMods(modifiers=Cross);
+ };
+
+ interpret KP_End+Any {
+ //useModMapMods= level1;
+ virtualModifier= Circle;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret KP_End {
+ action = SetMods(modifiers=Circle);
+ };
+
+ interpret KP_Prior+Any {
+ //useModMapMods= level1;
+ virtualModifier= Triangle;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret KP_Prior {
+ action = SetMods(modifiers=Triangle);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/pc b/xorg-server/xkeyboard-config/compat/pc
index 14ba9c3cc..e970795c7 100644
--- a/xorg-server/xkeyboard-config/compat/pc
+++ b/xorg-server/xkeyboard-config/compat/pc
@@ -1,17 +1,17 @@
-default partial xkb_compatibility "pc" {
-
- // Sets the "Alt" virtual modifier
-
- virtual_modifiers Alt;
-
- setMods.clearLocks= True;
- interpret Alt_L+Any {
- virtualModifier= Alt;
- action = SetMods(modifiers=modMapMods);
- };
-
- interpret Alt_R+Any {
- virtualModifier= Alt;
- action = SetMods(modifiers=modMapMods);
- };
-};
+default partial xkb_compatibility "pc" {
+
+ // Sets the "Alt" virtual modifier
+
+ virtual_modifiers Alt;
+
+ setMods.clearLocks= True;
+ interpret Alt_L+Any {
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Alt_R+Any {
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/pc98 b/xorg-server/xkeyboard-config/compat/pc98
index 93a620036..f7e40014a 100644
--- a/xorg-server/xkeyboard-config/compat/pc98
+++ b/xorg-server/xkeyboard-config/compat/pc98
@@ -1,55 +1,55 @@
-// Minimal set of symbol interpretations to provide
-// reasonable default behavior (Num lock, shift and
-// caps lock and mode switch) and set up the
-// automatic updating of common keyboard LEDs.
-
-default xkb_compatibility "basic" {
- virtual_modifiers NumLock,AltGr;
-
- interpret.repeat= False;
- setMods.clearLocks= True;
- latchMods.clearLocks= True;
- latchMods.latchToLock= True;
-
- interpret Shift_Lock+AnyOf(Shift+Lock) {
- action= LockMods(modifiers=Shift);
- };
-
-// interpret Any+Lock {
-// action= LockMods(modifiers=Lock);
-// };
-
- interpret Num_Lock+Any {
- virtualModifier= NumLock;
- action= LockMods(modifiers=NumLock);
- };
-
- interpret Mode_switch {
- useModMapMods= level1;
- virtualModifier= AltGr;
- action= SetGroup(group=2,clearLocks);
- };
-
- interpret Any + Any {
- action= SetMods(modifiers=modMapMods);
- };
-
- group 2 = AltGr;
- group 3 = AltGr;
- group 4 = AltGr;
-
- indicator.allowExplicit= False;
- indicator "Caps Lock" {
- whichModState= Locked;
- modifiers= Lock;
- };
- indicator "Num Lock" {
- whichModState= Locked;
- modifiers= NumLock;
- };
- indicator "Shift Lock" {
- whichModState= Locked;
- modifiers= Shift;
- };
- indicator.allowExplicit= True;
-};
+// Minimal set of symbol interpretations to provide
+// reasonable default behavior (Num lock, shift and
+// caps lock and mode switch) and set up the
+// automatic updating of common keyboard LEDs.
+
+default xkb_compatibility "basic" {
+ virtual_modifiers NumLock,AltGr;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret Shift_Lock+AnyOf(Shift+Lock) {
+ action= LockMods(modifiers=Shift);
+ };
+
+// interpret Any+Lock {
+// action= LockMods(modifiers=Lock);
+// };
+
+ interpret Num_Lock+Any {
+ virtualModifier= NumLock;
+ action= LockMods(modifiers=NumLock);
+ };
+
+ interpret Mode_switch {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= SetGroup(group=2,clearLocks);
+ };
+
+ interpret Any + Any {
+ action= SetMods(modifiers=modMapMods);
+ };
+
+ group 2 = AltGr;
+ group 3 = AltGr;
+ group 4 = AltGr;
+
+ indicator.allowExplicit= False;
+ indicator "Caps Lock" {
+ whichModState= Locked;
+ modifiers= Lock;
+ };
+ indicator "Num Lock" {
+ whichModState= Locked;
+ modifiers= NumLock;
+ };
+ indicator "Shift Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+ indicator.allowExplicit= True;
+};
diff --git a/xorg-server/xkeyboard-config/compat/xtest b/xorg-server/xkeyboard-config/compat/xtest
index 6700bedd6..5ee88ccf8 100644
--- a/xorg-server/xkeyboard-config/compat/xtest
+++ b/xorg-server/xkeyboard-config/compat/xtest
@@ -1,57 +1,57 @@
-default xkb_compatibility "xtest" {
-
- // Minimal set of symbol interpretations to provide
- // reasonable behavior for testing. The X Test
- // Suite assumes that it can set any modifier by
- // simulating a KeyPress and clear it by simulating
- // a KeyRelease. Because of the way that XKB
- // implements locking/latching modifiers, this
- // approach fails in some cases (typically the
- // lock or num lock modifiers). These symbol
- // interpretations make all modifier keys just
- // set the corresponding modifier so that xtest
- // will see the behavior it expects.
-
- virtual_modifiers NumLock,AltGr;
-
- interpret.repeat= False;
- setMods.clearLocks= True;
- latchMods.clearLocks= True;
- latchMods.latchToLock= False;
-
- interpret Shift_Lock+AnyOf(Shift+Lock) {
- action= SetMods(modifiers=Shift);
- };
-
- interpret Num_Lock+Any {
- virtualModifier= NumLock;
- action= SetMods(modifiers=NumLock);
- };
-
- interpret Mode_switch {
- useModMapMods= level1;
- virtualModifier= AltGr;
- action= SetGroup(group=2);
- };
-
- interpret Any + Any {
- action= SetMods(modifiers=modMapMods);
- };
-
- group 2 = AltGr;
- group 3 = AltGr;
- group 4 = AltGr;
-
- indicator.allowExplicit= False;
- indicator "Caps Lock" {
- modifiers= Lock;
- };
- indicator "Num Lock" {
- modifiers= NumLock;
- };
- indicator "Shift Lock" {
- whichModState= Locked;
- modifiers= Shift;
- };
- indicator.allowExplicit= True;
-};
+default xkb_compatibility "xtest" {
+
+ // Minimal set of symbol interpretations to provide
+ // reasonable behavior for testing. The X Test
+ // Suite assumes that it can set any modifier by
+ // simulating a KeyPress and clear it by simulating
+ // a KeyRelease. Because of the way that XKB
+ // implements locking/latching modifiers, this
+ // approach fails in some cases (typically the
+ // lock or num lock modifiers). These symbol
+ // interpretations make all modifier keys just
+ // set the corresponding modifier so that xtest
+ // will see the behavior it expects.
+
+ virtual_modifiers NumLock,AltGr;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= False;
+
+ interpret Shift_Lock+AnyOf(Shift+Lock) {
+ action= SetMods(modifiers=Shift);
+ };
+
+ interpret Num_Lock+Any {
+ virtualModifier= NumLock;
+ action= SetMods(modifiers=NumLock);
+ };
+
+ interpret Mode_switch {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= SetGroup(group=2);
+ };
+
+ interpret Any + Any {
+ action= SetMods(modifiers=modMapMods);
+ };
+
+ group 2 = AltGr;
+ group 3 = AltGr;
+ group 4 = AltGr;
+
+ indicator.allowExplicit= False;
+ indicator "Caps Lock" {
+ modifiers= Lock;
+ };
+ indicator "Num Lock" {
+ modifiers= NumLock;
+ };
+ indicator "Shift Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+ indicator.allowExplicit= True;
+};
diff --git a/xorg-server/xkeyboard-config/docs/HOWTO.testing b/xorg-server/xkeyboard-config/docs/HOWTO.testing
index 01aa0500c..5ab9dd477 100644
--- a/xorg-server/xkeyboard-config/docs/HOWTO.testing
+++ b/xorg-server/xkeyboard-config/docs/HOWTO.testing
@@ -1,22 +1,22 @@
-A mini-HOWTO test the XKB config without modifying the system configuration.
-(Only tested with XFree86 4.3+.)
-
-First see what your configuration is. Note the model and layout.
- $ setxkbmap -print
-
-Then unpack the sources locally ...
- $ gzip -dc xkeyboard-config*.tar.gz | tar -tf -
-... and change to the delivered directory
- $ cd xkeyboard-config-<version>
-
-Then try to load the current keyboard using the local rules
- $ setxkbmap -v 10 -I$PWD -rules base
-
-Now try to set different keyboards using the -model and -layout.
- $ setxkbmap -v 10 -I$PWD -rules base -model pc102 -layout intl
-Look in the file rules/base for other example models and layouts
-
-If there was a problem, you can reset the keyboard like so:
- $ setxkbmap -rules xfree86 -model <noted model> -layout <noted layout>
-
-If that doesn't work, you may have to log out and log back in.
+A mini-HOWTO test the XKB config without modifying the system configuration.
+(Only tested with XFree86 4.3+.)
+
+First see what your configuration is. Note the model and layout.
+ $ setxkbmap -print
+
+Then unpack the sources locally ...
+ $ gzip -dc xkeyboard-config*.tar.gz | tar -tf -
+... and change to the delivered directory
+ $ cd xkeyboard-config-<version>
+
+Then try to load the current keyboard using the local rules
+ $ setxkbmap -v 10 -I$PWD -rules base
+
+Now try to set different keyboards using the -model and -layout.
+ $ setxkbmap -v 10 -I$PWD -rules base -model pc102 -layout intl
+Look in the file rules/base for other example models and layouts
+
+If there was a problem, you can reset the keyboard like so:
+ $ setxkbmap -rules xfree86 -model <noted model> -layout <noted layout>
+
+If that doesn't work, you may have to log out and log back in.
diff --git a/xorg-server/xkeyboard-config/docs/HOWTO.transition b/xorg-server/xkeyboard-config/docs/HOWTO.transition
index 24add85f5..1b7cce216 100644
--- a/xorg-server/xkeyboard-config/docs/HOWTO.transition
+++ b/xorg-server/xkeyboard-config/docs/HOWTO.transition
@@ -1,19 +1,19 @@
-PURPOSE
-
-This document describes the procedure for replacing the standard XKB configuration repository shipped with an X Window System implementation. The procedure should work for XFree86 4.3 and higher and X11R7 implementation from X.Org. Any other X server supporting so called "multiple layouts" can be powered with XKeyboardConfig in a similar way (at the moment NO known commercial X Window System implementations support "multiple layouts"). X servers which do not support "multiple layouts" can be used with XKeyboardConfig as well - but users should be aware that only one group will be accessible with each possible XKB configuration.
-
-PROCEDURE
-
-1. Find your current XKB configuration data directory. In most cases it is /usr/X11R6/lib/X11/xkb. This directory usually contain subdirectores: compat, compiled, geometry, keycodes, keymap, rules, semantics, symbols etc.
-
-2. Backup your current XKB configuration data directory (for example, rename it to xkb.orig) - so you would be able to restore your original configuration in case of troubles.
-
-3. Untar XKeyboardConfiguration tarball (tar -xzvf xkeyboard-config-0.2.tar.gz). Change to the root project directory. Run the configure script with appropriate options. There are several useful options:
-
- --with-xkb-rules-symlink=NAME - this option creates symlinks for the rules and registry files. The default file names are base and base.xml correspondingly. Using this option allows to create symlinks for configuration files compatibility (for example, --with-xkb-rules-symlink=xfree86 creates symlinks xfree86 and xfree86.xml - so users would be able to use rules set "xfree86").
-
- --enable-xkbcomp-symlink - creates symlink from original xkbcomp utility (usually found in /usr/X111R6/bin) to XKB configuration directory (usually it is required by XKB server). By default, this option is enabled - but user can disable it.
-
-4. Run "make" and (as root) "make install". At that point, new /usr/X11R6/lib/X11/xkb should be created.
-
-5. Adjust the configuration files (XF86Config, xorg.conf etc.). If you don't use the symlinks, you should use the rules set "base" (as the "XkbRules" value). If you added --with-xkb-rules-symlink option, you can use either "base" or the name of the rules symlink you created (for example, "xfree86").
+PURPOSE
+
+This document describes the procedure for replacing the standard XKB configuration repository shipped with an X Window System implementation. The procedure should work for XFree86 4.3 and higher and X11R7 implementation from X.Org. Any other X server supporting so called "multiple layouts" can be powered with XKeyboardConfig in a similar way (at the moment NO known commercial X Window System implementations support "multiple layouts"). X servers which do not support "multiple layouts" can be used with XKeyboardConfig as well - but users should be aware that only one group will be accessible with each possible XKB configuration.
+
+PROCEDURE
+
+1. Find your current XKB configuration data directory. In most cases it is /usr/X11R6/lib/X11/xkb. This directory usually contain subdirectores: compat, compiled, geometry, keycodes, keymap, rules, semantics, symbols etc.
+
+2. Backup your current XKB configuration data directory (for example, rename it to xkb.orig) - so you would be able to restore your original configuration in case of troubles.
+
+3. Untar XKeyboardConfiguration tarball (tar -xzvf xkeyboard-config-0.2.tar.gz). Change to the root project directory. Run the configure script with appropriate options. There are several useful options:
+
+ --with-xkb-rules-symlink=NAME - this option creates symlinks for the rules and registry files. The default file names are base and base.xml correspondingly. Using this option allows to create symlinks for configuration files compatibility (for example, --with-xkb-rules-symlink=xfree86 creates symlinks xfree86 and xfree86.xml - so users would be able to use rules set "xfree86").
+
+ --enable-xkbcomp-symlink - creates symlink from original xkbcomp utility (usually found in /usr/X111R6/bin) to XKB configuration directory (usually it is required by XKB server). By default, this option is enabled - but user can disable it.
+
+4. Run "make" and (as root) "make install". At that point, new /usr/X11R6/lib/X11/xkb should be created.
+
+5. Adjust the configuration files (XF86Config, xorg.conf etc.). If you don't use the symlinks, you should use the rules set "base" (as the "XkbRules" value). If you added --with-xkb-rules-symlink option, you can use either "base" or the name of the rules symlink you created (for example, "xfree86").
diff --git a/xorg-server/xkeyboard-config/docs/Makefile.am b/xorg-server/xkeyboard-config/docs/Makefile.am
index 5ae0e80a1..835e673e0 100644
--- a/xorg-server/xkeyboard-config/docs/Makefile.am
+++ b/xorg-server/xkeyboard-config/docs/Makefile.am
@@ -1 +1 @@
-EXTRA_DIST= README.config README.enhancing README.symbols HOWTO.transition HOWTO.testing
+EXTRA_DIST= README.config README.enhancing README.symbols HOWTO.transition HOWTO.testing
diff --git a/xorg-server/xkeyboard-config/docs/README.config b/xorg-server/xkeyboard-config/docs/README.config
index 4a068867d..215449a01 100644
--- a/xorg-server/xkeyboard-config/docs/README.config
+++ b/xorg-server/xkeyboard-config/docs/README.config
@@ -1,195 +1,195 @@
- The XKB Configuration Guide
-
- Kamil Toman, Ivan U. Pascal
-
- 25 November 2002
-
- Abstract
-
- This document describes how to configure XFree86 XKB from a user's
- point a few. It converts basic configuration syntax and gives also
- a few examples.
-
-1. Overview
-
-The XKB configuration is decomposed into a number of components. Selecting
-proper parts and combining them back you can achieve most of configurations
-you might need. Unless you have a completely atypical keyboard you really
-don't need to touch any of xkb configuration files.
-
-2. Selecting XKB Configuration
-
-The easiest and the most natural way how to specify a keyboard mapping is to
-use rules component. As its name suggests it describes a number of general
-rules how to combine all bits and pieces into a valid and useful keyboard
-mapping. All you need to do is to select a suitable rules file and then to
-feed it with a few parameters that will adjust the keyboard behaviour to ful-
-fill your needs.
-
-The parameters are:
-
- o XkbRules - files of rules to be used for keyboard mapping composition
-
- o XkbModel - name of model of your keyboard type
-
- o XkbLayout - layout(s) you intend to use
-
- o XkbVariant - variant(s) of layout you intend to use
-
- o XkbOptions - extra xkb configuration options
-
-The proper rules file depends on your vendor. In reality, the commonest file
-of rules is xfree86. For each rules file there is a description file named
-<vendor-rules>.lst, for instance xfree86.lst which is located in xkb configu-
-ration subdirectory rules (for example /etc/X11/xkb/rules).
-
-2.1 Basic Configuration
-
-Let's say you want to configure a PC style America keyboard with 104 keys as
-described in xfree86.lst. It can be done by simply writing several lines from
-below to you XFree86 configuration file (often found as /etc/X11/XF86Config-4
-or /etc/X11/XF86Config):
-
- Section "InputDevice"
- Identifier "Keyboard1"
- Driver "Keyboard"
-
- Option "XkbModel" "pc104"
- Option "XkbLayout" "us"
- Option "XKbOptions" ""
- EndSection
-
-The values of parameters XkbModel and XkbLayout are really not surprising.
-The parameters XkbOptions has been explicitly set to empty set of parameters.
-The parameter XkbVariant has been left out. That means the default variant
-named basic is loaded.
-
-Of course, this can be also done at runtime using utility setxkbmap. Shell
-command loading the same keyboard mapping would look like:
-
- setxkbmap -rules xfree86 -model pc104 -layout us -option ""
-
-The configuration and the shell command would be very analogical for most
-other layouts (internationalized mappings).
-
-2.2 Advanced Configuration
-
-Since XFree86 4.3.x you can use multi-layouts xkb configuration. What does
-it mean? Basically it allows to load up to four different keyboard layouts at
-a time. Each such layout would reside in its own group. The groups (unlike
-complete keyboard remapping) can be switched very fast from one to another by
-a combination of keys.
-
-Let's say you want to configure your new Logitech cordless desktop keyboard,
-you intend to use three different layouts at the same time - us, czech and
-german (in this order), and that you are used to Alt-Shift combination for
-switching among them.
-
-Then the configuration snippet could look like this:
-
- Section "InputDevice"
- Identifier "Keyboard1"
- Driver "Keyboard"
-
- Option "XkbModel" "logicordless"
- Option "XkbLayout" "us,cz,de"
- Option "XKbOptions" "grp:alt_shift_toggle"
- EndSection
-
-Of course, this can be also done at runtime using utility setxkbmap. Shell
-command loading the same keyboard mapping would look like:
-
- setxkbmap -rules xfree86 -model logicordless -layout "us,cz,de" \
- -option "grp:alt_shift_toggle"
-
-2.3 Even More Advanced Configuration
-
-Okay, let's say you are more demanding. You do like the example above but you
-want it to change a bit. Let's imagine you want the czech keyboard mapping to
-use another variant but basic. The configuration snippet then changes into:
-
- Section "InputDevice"
- Identifier "Keyboard1"
- Driver "Keyboard"
-
- Option "XkbModel" "logicordless"
- Option "XkbLayout" "us,cz,de"
- Option "XkbVariant" ",bksl,"
- Option "XKbOptions" "grp:alt_shift_toggle"
- EndSection
-
-That's seems tricky but it is not. The logic for settings of variants is the
-same as for layouts, that means the first and the third variant settings are
-left out (set to basic), the second is set to bksl (a special variant with an
-enhanced definition of the backslash key).
-
-Analogically, the loading runtime will change to:
-
- setxkmap -rules xfree86 -model logicordless -layout "us,cz,de" \
- -variant ",bksl," -option "grp:alt_shift_toggle"
-
-2.4 Basic Global Options
-
-See rules/*.lst files.
-
-3. Direct XKB Configuration
-
-Generally, you can directly prescribe what configuration of each of basic xkb
-components should be used to form the resulting keyboard mapping. This
-method is rather "brute force". You precisely need to know the structure and
-the meaning of all of used configuration components.
-
-This method also exposes all xkb configuration details directly into XFree86
-configuration file which is a not very fortunate fact. In rare occasions it
-may be needed, though. So how does it work?
-
-3.1 Basic Components
-
-There are five basic components used to form a keyboard mapping:
-
- o key codes - a translation of the scan codes produced by the keyboard
- into a suitable symbolic form
-
- o types - a specification of what various combinations of modifiers pro-
- duce
-
- o key symbols - a translation of symbolic key codes into actual symbols
-
- o geometry - a description of physical keyboard geometry
-
- o compatibility maps - a specification of what action should each key pro-
- duce in order to preserve compatibility with XKB-unware clients
-
-3.2 Example Configuration
-
-Look at the following example:
-
- Section "InputDevice"
- Identifier "Keyboard0"
- Driver "Keyboard"
-
- Option "XkbKeycodes" "xfree86"
- Option "XkbTypes" "default"
- Option "XkbSymbols" "en_US(pc104)+de+swapcaps"
- Option "XkbGeometry" "pc(pc104)"
- Option "XkbCompat" "basic+pc+iso9995"
- EndSection
-
-This configuration sets the standard XFree86 default interpretation of key-
-board keycodes, sets the default modificator types. The symbol table is com-
-posed of extended US keyboard layout in its variant for pc keyboards with 104
-keys plus all keys for german layout are redefined respectively. Also the
-logical meaning of Caps-lock and Control keys is swapped. The standard key-
-board geometry (physical look) is set to pc style keyboard with 104 keys. The
-compatibility map is set to allow basic shifting, to allow Alt keys to be
-interpreted and also to allow iso9995 group shifting.
-
-4. Keymap XKB Configuration
-
-It is the formerly used way to configure xkb. The user included a special
-keymap file which specified the direct xkb configuration. This method has
-been obsoleted by previously described rules files which are far more flexi-
-ble and allow simpler and more intuitive syntax. It is preserved merely for
-compatibility reasons. Avoid using it if it is possible.
-
- Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/XKB-Config.sgml,v 1.4 dawes Exp $
+ The XKB Configuration Guide
+
+ Kamil Toman, Ivan U. Pascal
+
+ 25 November 2002
+
+ Abstract
+
+ This document describes how to configure XFree86 XKB from a user's
+ point a few. It converts basic configuration syntax and gives also
+ a few examples.
+
+1. Overview
+
+The XKB configuration is decomposed into a number of components. Selecting
+proper parts and combining them back you can achieve most of configurations
+you might need. Unless you have a completely atypical keyboard you really
+don't need to touch any of xkb configuration files.
+
+2. Selecting XKB Configuration
+
+The easiest and the most natural way how to specify a keyboard mapping is to
+use rules component. As its name suggests it describes a number of general
+rules how to combine all bits and pieces into a valid and useful keyboard
+mapping. All you need to do is to select a suitable rules file and then to
+feed it with a few parameters that will adjust the keyboard behaviour to ful-
+fill your needs.
+
+The parameters are:
+
+ o XkbRules - files of rules to be used for keyboard mapping composition
+
+ o XkbModel - name of model of your keyboard type
+
+ o XkbLayout - layout(s) you intend to use
+
+ o XkbVariant - variant(s) of layout you intend to use
+
+ o XkbOptions - extra xkb configuration options
+
+The proper rules file depends on your vendor. In reality, the commonest file
+of rules is xfree86. For each rules file there is a description file named
+<vendor-rules>.lst, for instance xfree86.lst which is located in xkb configu-
+ration subdirectory rules (for example /etc/X11/xkb/rules).
+
+2.1 Basic Configuration
+
+Let's say you want to configure a PC style America keyboard with 104 keys as
+described in xfree86.lst. It can be done by simply writing several lines from
+below to you XFree86 configuration file (often found as /etc/X11/XF86Config-4
+or /etc/X11/XF86Config):
+
+ Section "InputDevice"
+ Identifier "Keyboard1"
+ Driver "Keyboard"
+
+ Option "XkbModel" "pc104"
+ Option "XkbLayout" "us"
+ Option "XKbOptions" ""
+ EndSection
+
+The values of parameters XkbModel and XkbLayout are really not surprising.
+The parameters XkbOptions has been explicitly set to empty set of parameters.
+The parameter XkbVariant has been left out. That means the default variant
+named basic is loaded.
+
+Of course, this can be also done at runtime using utility setxkbmap. Shell
+command loading the same keyboard mapping would look like:
+
+ setxkbmap -rules xfree86 -model pc104 -layout us -option ""
+
+The configuration and the shell command would be very analogical for most
+other layouts (internationalized mappings).
+
+2.2 Advanced Configuration
+
+Since XFree86 4.3.x you can use multi-layouts xkb configuration. What does
+it mean? Basically it allows to load up to four different keyboard layouts at
+a time. Each such layout would reside in its own group. The groups (unlike
+complete keyboard remapping) can be switched very fast from one to another by
+a combination of keys.
+
+Let's say you want to configure your new Logitech cordless desktop keyboard,
+you intend to use three different layouts at the same time - us, czech and
+german (in this order), and that you are used to Alt-Shift combination for
+switching among them.
+
+Then the configuration snippet could look like this:
+
+ Section "InputDevice"
+ Identifier "Keyboard1"
+ Driver "Keyboard"
+
+ Option "XkbModel" "logicordless"
+ Option "XkbLayout" "us,cz,de"
+ Option "XKbOptions" "grp:alt_shift_toggle"
+ EndSection
+
+Of course, this can be also done at runtime using utility setxkbmap. Shell
+command loading the same keyboard mapping would look like:
+
+ setxkbmap -rules xfree86 -model logicordless -layout "us,cz,de" \
+ -option "grp:alt_shift_toggle"
+
+2.3 Even More Advanced Configuration
+
+Okay, let's say you are more demanding. You do like the example above but you
+want it to change a bit. Let's imagine you want the czech keyboard mapping to
+use another variant but basic. The configuration snippet then changes into:
+
+ Section "InputDevice"
+ Identifier "Keyboard1"
+ Driver "Keyboard"
+
+ Option "XkbModel" "logicordless"
+ Option "XkbLayout" "us,cz,de"
+ Option "XkbVariant" ",bksl,"
+ Option "XKbOptions" "grp:alt_shift_toggle"
+ EndSection
+
+That's seems tricky but it is not. The logic for settings of variants is the
+same as for layouts, that means the first and the third variant settings are
+left out (set to basic), the second is set to bksl (a special variant with an
+enhanced definition of the backslash key).
+
+Analogically, the loading runtime will change to:
+
+ setxkmap -rules xfree86 -model logicordless -layout "us,cz,de" \
+ -variant ",bksl," -option "grp:alt_shift_toggle"
+
+2.4 Basic Global Options
+
+See rules/*.lst files.
+
+3. Direct XKB Configuration
+
+Generally, you can directly prescribe what configuration of each of basic xkb
+components should be used to form the resulting keyboard mapping. This
+method is rather "brute force". You precisely need to know the structure and
+the meaning of all of used configuration components.
+
+This method also exposes all xkb configuration details directly into XFree86
+configuration file which is a not very fortunate fact. In rare occasions it
+may be needed, though. So how does it work?
+
+3.1 Basic Components
+
+There are five basic components used to form a keyboard mapping:
+
+ o key codes - a translation of the scan codes produced by the keyboard
+ into a suitable symbolic form
+
+ o types - a specification of what various combinations of modifiers pro-
+ duce
+
+ o key symbols - a translation of symbolic key codes into actual symbols
+
+ o geometry - a description of physical keyboard geometry
+
+ o compatibility maps - a specification of what action should each key pro-
+ duce in order to preserve compatibility with XKB-unware clients
+
+3.2 Example Configuration
+
+Look at the following example:
+
+ Section "InputDevice"
+ Identifier "Keyboard0"
+ Driver "Keyboard"
+
+ Option "XkbKeycodes" "xfree86"
+ Option "XkbTypes" "default"
+ Option "XkbSymbols" "en_US(pc104)+de+swapcaps"
+ Option "XkbGeometry" "pc(pc104)"
+ Option "XkbCompat" "basic+pc+iso9995"
+ EndSection
+
+This configuration sets the standard XFree86 default interpretation of key-
+board keycodes, sets the default modificator types. The symbol table is com-
+posed of extended US keyboard layout in its variant for pc keyboards with 104
+keys plus all keys for german layout are redefined respectively. Also the
+logical meaning of Caps-lock and Control keys is swapped. The standard key-
+board geometry (physical look) is set to pc style keyboard with 104 keys. The
+compatibility map is set to allow basic shifting, to allow Alt keys to be
+interpreted and also to allow iso9995 group shifting.
+
+4. Keymap XKB Configuration
+
+It is the formerly used way to configure xkb. The user included a special
+keymap file which specified the direct xkb configuration. This method has
+been obsoleted by previously described rules files which are far more flexi-
+ble and allow simpler and more intuitive syntax. It is preserved merely for
+compatibility reasons. Avoid using it if it is possible.
+
+ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/XKB-Config.sgml,v 1.4 dawes Exp $
diff --git a/xorg-server/xkeyboard-config/docs/README.enhancing b/xorg-server/xkeyboard-config/docs/README.enhancing
index 88d6a4edf..dd972e76b 100644
--- a/xorg-server/xkeyboard-config/docs/README.enhancing
+++ b/xorg-server/xkeyboard-config/docs/README.enhancing
@@ -1,520 +1,520 @@
- How to further enhance XKB configuration
-
- Kamil Toman, Ivan U. Pascal
-
- 25 November 2002
-
- Abstract
-
- This guide is aimed to relieve one's labour to create a new (inter-
- nationalized) keyboard layout. Unlike other documents this guide
- accents the keymap developer's point of view.
-
-1. Overview
-
-The developer of a new layout should read the xkb protocol specification (The
-X Keyboard Extension: Protocol Specification
-<URL:http://xfree86.org/current/XKBproto.pdf>) at least to clarify for
-himself some xkb-specific terms used in this document and elsewhere in xkb
-configuration. Also it shows wise to understand how the X server and a client
-digest their keyboard inputs (with and without xkb).
-
-A useful source is also Ivan Pascal's text about xkb configuration
-<URL:http://www.tsu.ru/~pascal/en/xkb> often referenced throughout this docu-
-ment.
-
-Note that this document covers only enhancements which are to be made to
-XFree86 version 4.3.x and above.
-
-2. The Basics
-
-At the startup (or at later at user's command) X server starts its xkb key-
-board module extension and reads data from a compiled configuration file.
-
-This compiled configuration file is prepared by the program xkbcomp which
-behaves altogether as an ordinary compiler (see man xkbcomp). Its input are
-human readable xkb configuration files which are verified and then composed
-into a useful xkb configuration. Users don't need to mess with xkbcomp them-
-selves, for them it is invisible. Usually, it is started upon X server
-startup.
-
-As you probably already know, the xkb configuration consists of five main
-modules:
-
- Keycodes
- Tables that defines translation from keyboard scan codes into
- reasonable symbolic names, maximum, minimum legal keycodes, sym-
- bolic aliases and description of physically present LED-indica-
- tors. The primary sence of this component is to allow definitions
- of maps of symbols (see below) to be independent of physical key-
- board scancodes. There are two main naming conventions for sym-
- bolic names (always four bytes long):
-
- o names which express some traditional meaning like <SPCE>
- (stands for space bar) or
-
- o names which express some relative positioning on a key-
- board, for example <AE01> (an exclamation mark on US key-
- boards), on the right there are keys <AE02>, <AE03> etc.
-
- Types
- Types describe how the produced key is changed by active modi-
- fiers (like Shift, Control, Alt, ...). There are several prede-
- fined types which cover most of used combinations.
-
- Compat
- Compatibility component defines internal behaviour of modifiers.
- Using compat component you can assign various actions (elabo-
- rately described in xkb specification) to key events. This is
- also the place where LED-indicators behaviour is defined.
-
- Symbols
- For i18n purposes, this is the most important table. It defines
- what values (=symbols) are assigned to what keycodes (represented
- by their symbolic name, see above). There may be defined more
- than one value for each key and then it depends on a key type and
- on modifiers state (respective compat component) which value will
- be the resulting one.
-
- Geometry
- Geometry files aren't used by xkb itself but they may be used by
- some external programs to depict a keyboard image.
-
-All these components have the files located in xkb configuration tree in sub-
-directories with the same names (usually in /usr/lib/X11/xkb).
-
-3. Enhancing XKB Configuration
-
-Most of xkb enhancements concerns a need to define new output symbols for the
-some input key events. In other words, a need to define a new symbol map (for
-a new language, standard or just to feel more comfortable when typing text).
-
-What do you need to do? Generally, you have to define following things:
-
- o the map of symbols itself
-
- o the rules to allow users to select the new mapping
-
- o the description of the new layout
-
-First of all, it is good to go through existing layouts and to examine them
-if there is something you could easily adjust to fit your needs. Even if
-there is nothing similar you may get some ideas about basic concepts and used
-tricks.
-
-3.1 Levels And Groups
-
-Since XFree86 4.3.0 you can use multi-layout concept of xkb configuration.
-Though it is still in boundaries of xkb protocol and general ideas, the
-keymap designer must obey new rules when creating new maps. In exchange we
-get a more powerful and cleaner configuration system.
-
-Remember that it is the application which must decide which symbol matches
-which keycode according to effective modifier state. The X server itself
-sends only an input event message to. Of course, usually the general inter-
-pretation is processed by Xlib, Xaw, Motif, Qt, Gtk and similar libraries.
-The X server only supplies its mapping table (usually upon an application
-startup).
-
-You can think of the X server's symbol table as of a irregular table where
-each keycode has its row and where each combination of modifiers determines
-exactly one column. The resulting cell then gives the proper symbolic value.
-Not all keycodes need to bind different values for different combination of
-modifiers. <ENTER> key, for instance, usually doesn't depend on any modi-
-fiers so it its row has only one column defined.
-
-Note that in XKB there is no prior assumption that certain modifiers are
-bound to certain columns. By editing proper files (see keytypes (section 4.2,
-page 1)) this mapping can be changed as well.
-
-Unlike the original X protocol the XKB approach is far more flexible. It is
-comfortable to add one additional XKB term - group. You can think of a group
-as of a vector of columns per each keycode (naturally the dimension of this
-vector may differ for different keycodes). What is it good for? The group is
-not very useful unless you intend to use more than one logically different
-set of symbols (like more than one alphabet) defined in a single mapping ta-
-ble. But then, the group has a natural meaning - each symbol set has its own
-group and changing it means selecting a different one. XKB approach allows
-up to four different groups. The columns inside each group are called (shift)
-levels. The X server knows the current group and reports it together with
-modifier set and with a keycode in key events.
-
-To sum it up:
-
- o for each keycode XKB keyboard map contains up to four one-dimensional
- tables - groups (logically different symbol sets)
-
- o for each group of a keycode XKB keyboard map contains some columns -
- shift levels (values reached by combinations of Shift, Ctrl, Alt, ...
- modifiers)
-
- o different keycodes can have different number of groups
-
- o different groups of one keycode can have different number of shift lev-
- els
-
- o the current group number is tracked by X server
-
-It is clear that if you sanely define levels, groups and sanely bind modi-
-fiers and associated actions you can have simultaneously loaded up to four
-different symbol sets where each of them would reside in its own group.
-
-The multi-layout concept provides a facility to manipulate xkb groups and
-symbol definitions in a way that allows almost arbitrary composition of pre-
-defined symbol tables. To keep it fully functional you have to:
-
- o define all symbols only in the first group
-
- o (re)define any modifiers with extra care to avoid strange (anisometric)
- behaviour
-
-4. Defining New Layouts
-
-See Some Words About XKB internals <URL:http://www.tsu.ru/~pas-
-cal/en/xkb/internals.html> for explanation of used xkb terms and problems
-addressed by XKB extension.
-
-See Common notes about XKB configuration files language
-<URL:http://www.tsu.ru/~pascal/en/xkb/gram-common.html> for more precise
-explanation of syntax of xkb configuration files.
-
-4.1 Predefined XKB Symbol Sets
-
-If you are about to define some European symbol map extension, you might want
-to use on of four predefined latin alphabet layouts.
-
-Okay, let's assume you want extend an existing keymap and you want to over-
-ride a few keys. Let's take a simple U.K. keyboard as an example (defined in
-pc/gb):
-
- partial default alphanumeric_keys
- xkb_symbols "basic" {
- include "pc/latin"
-
- name[Group1]="Great Britain";
-
- key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
- key <AE03> { [ 3, sterling, threesuperior, sterling ] };
- key <AC11> { [apostrophe, at, dead_circumflex, dead_caron] };
- key <TLDE> { [ grave, notsign, bar, bar ] };
- key <BKSL> { [numbersign, asciitilde, dead_grave, dead_breve ] };
- key <RALT> { type[Group1]="TWO_LEVEL",
- [ ISO_Level3_Shift, Multi_key ] };
-
- modifier_map Mod5 { <RALT> };
- };
-
-It defines a new layout in basic variant as an extension of common latin
-alphabet layout. The layout (symbol set) name is set to "Great Britain".
-Then there are redefinitions of a few keycodes and a modifiers binding. As
-you can see the number of shift levels is the same for <AE02>, <AE03>,
-<AC11>, <TLDE> and <BKSL> keys but it differs from number of shift levels of
-<RALT>.
-
-Note that the <RALT> key itself is a binding key for Mod5 and that it serves
-like a shift modifier for LevelThree, together with Shift as a multi-key. It
-is a good habit to respect this rule in a new similar layout.
-
-Okay, you could now define more variants of your new layout besides basic
-simply by including (augmenting/overriding/...) the basic definition and
-altering what may be needed.
-
-4.2 Key Types
-
-The differences in the number of columns (shift levels) are caused by a dif-
-ferent types of keys (see the types definition in section basics). Most key-
-codes have implicitly set the keytype in the included "pc/latin" file to
-"FOUR_LEVEL_ALPHABETIC". The only exception is <RALT> keycode which is
-explicitly set "TWO_LEVEL" keytype.
-
-All those names refer to pre-defined shift level schemes. Usually you can
-choose a suitable shift level scheme from default types scheme list in proper
-xkb component's subdirectory.
-
-The most used schemes are:
-
- ONE_LEVEL
- The key does not depend on any modifiers. The symbol from first
- level is always chosen.
-
- TWO_LEVEL
- The key uses a modifier Shift and may have two possible values.
- The second level may be chosen by Shift modifier. If Lock modi-
- fier (usually Caps-lock) applies the symbol is further processed
- using system-specific capitalization rules. If both Shift+Lock
- modifier apply the symbol from the second level is taken and cap-
- italization rules are applied (and usually have no effect).
-
- ALPHABETIC
- The key uses modifiers Shift and Lock. It may have two possible
- values. The second level may be chosen by Shift modifier. When
- Lock modifier applies, the symbol from the first level is taken
- and further processed using system-specific capitalization rules.
- If both Shift+Lock modifier apply the symbol from the first level
- is taken and no capitalization rules applied. This is often
- called shift-cancels-caps behaviour.
-
- THREE_LEVEL
- Is the same as TWO_LEVEL but it considers an extra modifier -
- LevelThree which can be used to gain the symbol value from the
- third level. If both Shift+LevelThree modifiers apply the value
- from the third level is also taken. As in TWO_LEVEL, the Lock
- modifier doesn't influence the resulting level. Only Shift and
- LevelThree are taken into that consideration. If the Lock modi-
- fier is active capitalization rules are applied on the resulting
- symbol.
-
- FOUR_LEVEL
- Is the same as THREE_LEVEL but unlike LEVEL_THREE if both
- Shift+LevelThree modifiers apply the symbol is taken from the
- fourth level.
-
- FOUR_LEVEL_ALPHABETIC
- Is similar to FOUR_LEVEL but also defines shift-cancels-caps
- behaviour as in ALPHABETIC. If Lock+LevelThree apply the symbol
- from the third level is taken and the capitalization rules are
- applied. If Lock+Shift+LevelThree apply the symbol from the
- third level is taken and no capitalization rules are applied.
-
- KEYPAD
- As the name suggest this scheme is primarily used for numeric
- keypads. The scheme considers two modifiers - Shift and NumLock.
- If none of modifiers applies the symbol from the first level is
- taken. If either Shift or NumLock modifiers apply the symbol from
- the second level is taken. If both Shift+NumLock modifiers apply
- the symbol from the first level is taken. Again, shift-cancels-
- caps variant.
-
- FOUR_LEVEL_KEYPAD
- Is similar to KEYPAD scheme but considers also LevelThree modi-
- fier. If LevelThree modifier applies the symbol from the third
- level is taken. If Shift+LevelThree or NumLock+LevelThree apply
- the symbol from the fourth level is taken. If all Shift+Num-
- Lock+LevelThree modifiers apply the symbol from the third level
- is taken. This also, shift-cancels-caps variant.
-
- FOUR_LEVEL_MIXED_KEYPAD
- A four-level keypad scheme where the first two levels are similar
- to the KEYPAD scheme (NumLock+Shift)
- LevelThree acts as an override providing access to two Shift-ed
- levels. When LevelThree is active we totally ignore NumLock state
- Intended for the digit area of the keypad
-
- FOUR_LEVEL_X
- A four-level scheme where the base level accepts no modifier,
- LevelThree provides two more Shift-ed levels like in the previous
- scheme, and Ctrl+Alt controls the fourth level
- Intended for the operator part of a keypad, though since NumLock
- plays no part, it is not keypad-specific
-
-Besides that, there are several schemes for special purposes:
-
- PC_CONTROL_LEVEL2
- It is similar to TWO_LEVEL scheme but it considers the Control
- modifier rather than Shift. That means, the symbol from the sec-
- ond level is chosen by Control rather than by Shift.
-
- PC_ALT_LEVEL2
- It is similar to TWO_LEVEL scheme but it considers the Alt modi-
- fier rather than Shift. That means, the symbol from the second
- level is chosen by Alt rather than by Shift.
-
- CTRL+ALT
- The key uses modifiers Alt and Control. It may have two possible
- values. If only one modifier (Alt or Control) applies the symbol
- from the first level is chosen. Only if both Alt+Control modi-
- fiers apply the symbol from the second level is chosen.
-
- SHIFT+ALT
- The key uses modifiers Shift and Alt. It may have two possible
- values. If only one modifier (Alt or Shift) applies the symbol
- from the first level is chosen. Only if both Alt+Shift modifiers
- apply the symbol from the second level is chosen.
-
-If needed, special caps schemes may be used. They redefine the standard
-behaviour of all *ALPHABETIC types. The layouts (maps of symbols) with keys
-defined in respective types then automatically change their behaviour accord-
-ingly. Possible redefinitions are:
-
- o internal
-
- o internal_nocancel
-
- o shift
-
- o shift_nocancel
-
-None of these schemes should be used directly. They are defined merely for
-'caps:' xkb options (used to globally change the layouts behaviour).
-
-Don't alter any of existing key types. If you need a different behaviour cre-
-ate a new one.
-
-4.2.1 More On Definitions Of Types
-
-When the XKB software deals with a separate type description it gets a com-
-plete list of modifiers that should be taken into account from the 'modi-
-fiers=<list of modifiers>' list and expects that a set of 'map[<combination
-of modifiers>]=<list of modifiers>' instructions that contain the mapping for
-each combination of modifiers mentioned in that list. Modifiers that are not
-explicitly listed are NOT taken into account when the resulting shift level
-is computed. If some combination is omitted the program (subroutine) should
-choose the first level for this combination (a quite reasonable behavior).
-
-Lets consider an example with two modifiers ModOne and ModTwo:
-
- type "..." {
- modifiers = ModOne+ModTwo;
- map[None] = Level1;
- map[ModOne] = Level2;
- };
-
-In this case the map statements for ModTwo only and ModOne+ModTwo are omit-
-ted. It means that if the ModTwo is active the subroutine can't found
-explicit mapping for such combination an will use the default level i.e.
-Level1.
-
-But in the case the type described as:
-
- type "..." {
- modifiers = ModOne;
- map[None] = Level1;
- map[ModOne] = Level2;
- };
-
-the ModTwo will not be taken into account and the resulting level depends on
-the ModOne state only. That means, ModTwo alone produces the Level1 but the
-combination ModOne+ModTwo produces the Level2 as well as ModOne alone.
-
-What does it mean if the second modifier is the Lock? It means that in the
-first case (the Lock itself is included in the list of modifiers but combina-
-tions with this modifier aren't mentioned in the map statements) the internal
-capitalization rules will be applied to the symbol from the first level. But
-in the second case the capitalization will be applied to the symbol chosen
-accordingly to he first modifier - and this can be the symbol from the first
-as well as from the second level.
-
-Usually, all modifiers introduced in 'modifiers=<list of modifiers>' list are
-used for shift level calculation and then discarded. Sometimes this is not
-desirable. If you want to use a modifier for shift level calculation but you
-don't want to discard it, you may list in 'preserve[<combination of modi-
-fiers>]=<list of modifiers>'. That means, for a given combination all listed
-modifiers will be preserved. If the Lock modifier is preserved then the
-resulting symbol is passed to internal capitalization routine regardless
-whether it has been used for a shift level calculation or not.
-
-Any key type description can use both real and virtual modifiers. Since real
-modifiers always have standard names it is not necessary to explicitly
-declare them. Virtual modifiers can have arbitrary names and can be declared
-(prior using them) directly in key type definition:
-
- virtual_modifiers <comma-separated list of modifiers> ;
-
-as seen in for example basic, pc or mousekeys key type definitions.
-
-4.3 Rules
-
-Once you are finished with your symbol map you need to add it to rules file.
-The rules file describes how all the five basic keycodes, types, compat, sym-
-bols and geometry components should be composed to give a sensible resulting
-xkb configuration.
-
-The main advantage of rules over formerly used keymaps is a possibility to
-simply parameterize (once) fixed patterns of configurations and thus to ele-
-gantly allow substitutions of various local configurations into predefined
-templates.
-
-A pattern in a rules file (often located in /usr/lib/X11/xkb/rules) can be
-parameterized with four other arguments: Model, Layout, Variant and Options.
-For most cases parameters model and layout should be sufficient for choosing
-a functional keyboard mapping.
-
-The rules file itself is composed of pattern lines and lines with rules. The
-pattern line starts with an exclamation mark ('!') and describes how will the
-xkb interpret the following lines (rules). A sample rules file looks like
-this:
-
- ! model = keycodes
- macintosh_old = macintosh
- ...
- * = xfree86
-
- ! model = symbols
- hp = +inet(%m)
- microsoftpro = +inet(%m)
- geniuscomfy = +inet(%m)
-
- ! model layout[1] = symbols
- macintosh us = macintosh/us%(v[1])
- * * = pc/pc(%m)+pc/%l[1]%(v[1])
-
- ! model layout[2] = symbols
- macintosh us = +macintosh/us[2]%(v[2]):2
- * * = +pc/%l[2]%(v[2]):2
-
- ! option = types
- caps:internal = +caps(internal)
- caps:internal_nocancel = +caps(internal_nocancel)
-
-Each rule defines what certain combination of values on the left side of
-equal sign ('=') results in. For example a (keyboard) model macintosh_old
-instructs xkb to take definitions of keycodes from file keycodes/macintosh
-while the rest of models (represented by a wild card '*') instructs it to
-take them from file keycodes/xfree86. The wild card represents all possible
-values on the left side which were not found in any of the previous rules.
-The more specialized (more complete) rules have higher precedence than gen-
-eral ones, i.e. the more general rules supply reasonable default values.
-
-As you can see some lines contain substitution parameters - the parameters
-preceded by the percent sign ('%'). The first alphabetical character after
-the percent sign expands to the value which has been found on the left side.
-For example +%l%(v) expands into +cz(bksl) if the respective values on the
-left side were cz layout in its bksl variant. More, if the layout resp. vari-
-ant parameter is followed by a pair of brackets ('[', ']') it means that xkb
-should place the layout resp. variant into specified xkb group. If the brack-
-ets are omitted the first group is the default value.
-
-So the second block of rules enhances symbol definitions for some particular
-keyboard models with extra keys (for internet, multimedia, ...) . Other mod-
-els are left intact. Similarly, the last block overrides some key type defi-
-nitions, so the common global behaviour ''shift cancels caps'' or ''shift
-doesn't cancel caps'' can be selected. The rest of rules produces special
-symbols for each variant us layout of macintosh keyboard and standard pc sym-
-bols in appropriate variants as a default.
-
-4.4 Descriptive Files of Rules
-
-Now you just need to add a detailed description to <rules>.xml description
-file so the other users (and external programs which often parse this file)
-know what is your work about.
-
-4.4.1 Old Descriptive Files
-
-The formerly used descriptive files were named <rules>.lst Its structure is
-very simple and quite self descriptive but such simplicity had also some cav-
-ities, for example there was no way how to describe local variants of layouts
-and there were problems with the localization of descriptions. To preserve
-compatibility with some older programs, new XML descriptive files can be con-
-verted to old format '.lst'.
-
-For each parameter of rules file should be described its meaning. For the
-rules file described above the .lst file could look like:
-
- ! model
- pc104 Generic 104-key PC
- microsoft Microsoft Natural
- pc98 PC-98xx Series
- macintosh Original Macintosh
- ...
-
- ! layout
- us U.S. English
- cz Czech
- de German
- ...
-
- ! option
- caps:internal uses internal capitalization. Shift cancels Caps
- caps:internal_nocancel uses internal capitalization. Shift doesn't cancel Caps
-
-And that should be it. Enjoy creating your own xkb mapping.
+ How to further enhance XKB configuration
+
+ Kamil Toman, Ivan U. Pascal
+
+ 25 November 2002
+
+ Abstract
+
+ This guide is aimed to relieve one's labour to create a new (inter-
+ nationalized) keyboard layout. Unlike other documents this guide
+ accents the keymap developer's point of view.
+
+1. Overview
+
+The developer of a new layout should read the xkb protocol specification (The
+X Keyboard Extension: Protocol Specification
+<URL:http://xfree86.org/current/XKBproto.pdf>) at least to clarify for
+himself some xkb-specific terms used in this document and elsewhere in xkb
+configuration. Also it shows wise to understand how the X server and a client
+digest their keyboard inputs (with and without xkb).
+
+A useful source is also Ivan Pascal's text about xkb configuration
+<URL:http://www.tsu.ru/~pascal/en/xkb> often referenced throughout this docu-
+ment.
+
+Note that this document covers only enhancements which are to be made to
+XFree86 version 4.3.x and above.
+
+2. The Basics
+
+At the startup (or at later at user's command) X server starts its xkb key-
+board module extension and reads data from a compiled configuration file.
+
+This compiled configuration file is prepared by the program xkbcomp which
+behaves altogether as an ordinary compiler (see man xkbcomp). Its input are
+human readable xkb configuration files which are verified and then composed
+into a useful xkb configuration. Users don't need to mess with xkbcomp them-
+selves, for them it is invisible. Usually, it is started upon X server
+startup.
+
+As you probably already know, the xkb configuration consists of five main
+modules:
+
+ Keycodes
+ Tables that defines translation from keyboard scan codes into
+ reasonable symbolic names, maximum, minimum legal keycodes, sym-
+ bolic aliases and description of physically present LED-indica-
+ tors. The primary sence of this component is to allow definitions
+ of maps of symbols (see below) to be independent of physical key-
+ board scancodes. There are two main naming conventions for sym-
+ bolic names (always four bytes long):
+
+ o names which express some traditional meaning like <SPCE>
+ (stands for space bar) or
+
+ o names which express some relative positioning on a key-
+ board, for example <AE01> (an exclamation mark on US key-
+ boards), on the right there are keys <AE02>, <AE03> etc.
+
+ Types
+ Types describe how the produced key is changed by active modi-
+ fiers (like Shift, Control, Alt, ...). There are several prede-
+ fined types which cover most of used combinations.
+
+ Compat
+ Compatibility component defines internal behaviour of modifiers.
+ Using compat component you can assign various actions (elabo-
+ rately described in xkb specification) to key events. This is
+ also the place where LED-indicators behaviour is defined.
+
+ Symbols
+ For i18n purposes, this is the most important table. It defines
+ what values (=symbols) are assigned to what keycodes (represented
+ by their symbolic name, see above). There may be defined more
+ than one value for each key and then it depends on a key type and
+ on modifiers state (respective compat component) which value will
+ be the resulting one.
+
+ Geometry
+ Geometry files aren't used by xkb itself but they may be used by
+ some external programs to depict a keyboard image.
+
+All these components have the files located in xkb configuration tree in sub-
+directories with the same names (usually in /usr/lib/X11/xkb).
+
+3. Enhancing XKB Configuration
+
+Most of xkb enhancements concerns a need to define new output symbols for the
+some input key events. In other words, a need to define a new symbol map (for
+a new language, standard or just to feel more comfortable when typing text).
+
+What do you need to do? Generally, you have to define following things:
+
+ o the map of symbols itself
+
+ o the rules to allow users to select the new mapping
+
+ o the description of the new layout
+
+First of all, it is good to go through existing layouts and to examine them
+if there is something you could easily adjust to fit your needs. Even if
+there is nothing similar you may get some ideas about basic concepts and used
+tricks.
+
+3.1 Levels And Groups
+
+Since XFree86 4.3.0 you can use multi-layout concept of xkb configuration.
+Though it is still in boundaries of xkb protocol and general ideas, the
+keymap designer must obey new rules when creating new maps. In exchange we
+get a more powerful and cleaner configuration system.
+
+Remember that it is the application which must decide which symbol matches
+which keycode according to effective modifier state. The X server itself
+sends only an input event message to. Of course, usually the general inter-
+pretation is processed by Xlib, Xaw, Motif, Qt, Gtk and similar libraries.
+The X server only supplies its mapping table (usually upon an application
+startup).
+
+You can think of the X server's symbol table as of a irregular table where
+each keycode has its row and where each combination of modifiers determines
+exactly one column. The resulting cell then gives the proper symbolic value.
+Not all keycodes need to bind different values for different combination of
+modifiers. <ENTER> key, for instance, usually doesn't depend on any modi-
+fiers so it its row has only one column defined.
+
+Note that in XKB there is no prior assumption that certain modifiers are
+bound to certain columns. By editing proper files (see keytypes (section 4.2,
+page 1)) this mapping can be changed as well.
+
+Unlike the original X protocol the XKB approach is far more flexible. It is
+comfortable to add one additional XKB term - group. You can think of a group
+as of a vector of columns per each keycode (naturally the dimension of this
+vector may differ for different keycodes). What is it good for? The group is
+not very useful unless you intend to use more than one logically different
+set of symbols (like more than one alphabet) defined in a single mapping ta-
+ble. But then, the group has a natural meaning - each symbol set has its own
+group and changing it means selecting a different one. XKB approach allows
+up to four different groups. The columns inside each group are called (shift)
+levels. The X server knows the current group and reports it together with
+modifier set and with a keycode in key events.
+
+To sum it up:
+
+ o for each keycode XKB keyboard map contains up to four one-dimensional
+ tables - groups (logically different symbol sets)
+
+ o for each group of a keycode XKB keyboard map contains some columns -
+ shift levels (values reached by combinations of Shift, Ctrl, Alt, ...
+ modifiers)
+
+ o different keycodes can have different number of groups
+
+ o different groups of one keycode can have different number of shift lev-
+ els
+
+ o the current group number is tracked by X server
+
+It is clear that if you sanely define levels, groups and sanely bind modi-
+fiers and associated actions you can have simultaneously loaded up to four
+different symbol sets where each of them would reside in its own group.
+
+The multi-layout concept provides a facility to manipulate xkb groups and
+symbol definitions in a way that allows almost arbitrary composition of pre-
+defined symbol tables. To keep it fully functional you have to:
+
+ o define all symbols only in the first group
+
+ o (re)define any modifiers with extra care to avoid strange (anisometric)
+ behaviour
+
+4. Defining New Layouts
+
+See Some Words About XKB internals <URL:http://www.tsu.ru/~pas-
+cal/en/xkb/internals.html> for explanation of used xkb terms and problems
+addressed by XKB extension.
+
+See Common notes about XKB configuration files language
+<URL:http://www.tsu.ru/~pascal/en/xkb/gram-common.html> for more precise
+explanation of syntax of xkb configuration files.
+
+4.1 Predefined XKB Symbol Sets
+
+If you are about to define some European symbol map extension, you might want
+to use on of four predefined latin alphabet layouts.
+
+Okay, let's assume you want extend an existing keymap and you want to over-
+ride a few keys. Let's take a simple U.K. keyboard as an example (defined in
+pc/gb):
+
+ partial default alphanumeric_keys
+ xkb_symbols "basic" {
+ include "pc/latin"
+
+ name[Group1]="Great Britain";
+
+ key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
+ key <AE03> { [ 3, sterling, threesuperior, sterling ] };
+ key <AC11> { [apostrophe, at, dead_circumflex, dead_caron] };
+ key <TLDE> { [ grave, notsign, bar, bar ] };
+ key <BKSL> { [numbersign, asciitilde, dead_grave, dead_breve ] };
+ key <RALT> { type[Group1]="TWO_LEVEL",
+ [ ISO_Level3_Shift, Multi_key ] };
+
+ modifier_map Mod5 { <RALT> };
+ };
+
+It defines a new layout in basic variant as an extension of common latin
+alphabet layout. The layout (symbol set) name is set to "Great Britain".
+Then there are redefinitions of a few keycodes and a modifiers binding. As
+you can see the number of shift levels is the same for <AE02>, <AE03>,
+<AC11>, <TLDE> and <BKSL> keys but it differs from number of shift levels of
+<RALT>.
+
+Note that the <RALT> key itself is a binding key for Mod5 and that it serves
+like a shift modifier for LevelThree, together with Shift as a multi-key. It
+is a good habit to respect this rule in a new similar layout.
+
+Okay, you could now define more variants of your new layout besides basic
+simply by including (augmenting/overriding/...) the basic definition and
+altering what may be needed.
+
+4.2 Key Types
+
+The differences in the number of columns (shift levels) are caused by a dif-
+ferent types of keys (see the types definition in section basics). Most key-
+codes have implicitly set the keytype in the included "pc/latin" file to
+"FOUR_LEVEL_ALPHABETIC". The only exception is <RALT> keycode which is
+explicitly set "TWO_LEVEL" keytype.
+
+All those names refer to pre-defined shift level schemes. Usually you can
+choose a suitable shift level scheme from default types scheme list in proper
+xkb component's subdirectory.
+
+The most used schemes are:
+
+ ONE_LEVEL
+ The key does not depend on any modifiers. The symbol from first
+ level is always chosen.
+
+ TWO_LEVEL
+ The key uses a modifier Shift and may have two possible values.
+ The second level may be chosen by Shift modifier. If Lock modi-
+ fier (usually Caps-lock) applies the symbol is further processed
+ using system-specific capitalization rules. If both Shift+Lock
+ modifier apply the symbol from the second level is taken and cap-
+ italization rules are applied (and usually have no effect).
+
+ ALPHABETIC
+ The key uses modifiers Shift and Lock. It may have two possible
+ values. The second level may be chosen by Shift modifier. When
+ Lock modifier applies, the symbol from the first level is taken
+ and further processed using system-specific capitalization rules.
+ If both Shift+Lock modifier apply the symbol from the first level
+ is taken and no capitalization rules applied. This is often
+ called shift-cancels-caps behaviour.
+
+ THREE_LEVEL
+ Is the same as TWO_LEVEL but it considers an extra modifier -
+ LevelThree which can be used to gain the symbol value from the
+ third level. If both Shift+LevelThree modifiers apply the value
+ from the third level is also taken. As in TWO_LEVEL, the Lock
+ modifier doesn't influence the resulting level. Only Shift and
+ LevelThree are taken into that consideration. If the Lock modi-
+ fier is active capitalization rules are applied on the resulting
+ symbol.
+
+ FOUR_LEVEL
+ Is the same as THREE_LEVEL but unlike LEVEL_THREE if both
+ Shift+LevelThree modifiers apply the symbol is taken from the
+ fourth level.
+
+ FOUR_LEVEL_ALPHABETIC
+ Is similar to FOUR_LEVEL but also defines shift-cancels-caps
+ behaviour as in ALPHABETIC. If Lock+LevelThree apply the symbol
+ from the third level is taken and the capitalization rules are
+ applied. If Lock+Shift+LevelThree apply the symbol from the
+ third level is taken and no capitalization rules are applied.
+
+ KEYPAD
+ As the name suggest this scheme is primarily used for numeric
+ keypads. The scheme considers two modifiers - Shift and NumLock.
+ If none of modifiers applies the symbol from the first level is
+ taken. If either Shift or NumLock modifiers apply the symbol from
+ the second level is taken. If both Shift+NumLock modifiers apply
+ the symbol from the first level is taken. Again, shift-cancels-
+ caps variant.
+
+ FOUR_LEVEL_KEYPAD
+ Is similar to KEYPAD scheme but considers also LevelThree modi-
+ fier. If LevelThree modifier applies the symbol from the third
+ level is taken. If Shift+LevelThree or NumLock+LevelThree apply
+ the symbol from the fourth level is taken. If all Shift+Num-
+ Lock+LevelThree modifiers apply the symbol from the third level
+ is taken. This also, shift-cancels-caps variant.
+
+ FOUR_LEVEL_MIXED_KEYPAD
+ A four-level keypad scheme where the first two levels are similar
+ to the KEYPAD scheme (NumLock+Shift)
+ LevelThree acts as an override providing access to two Shift-ed
+ levels. When LevelThree is active we totally ignore NumLock state
+ Intended for the digit area of the keypad
+
+ FOUR_LEVEL_X
+ A four-level scheme where the base level accepts no modifier,
+ LevelThree provides two more Shift-ed levels like in the previous
+ scheme, and Ctrl+Alt controls the fourth level
+ Intended for the operator part of a keypad, though since NumLock
+ plays no part, it is not keypad-specific
+
+Besides that, there are several schemes for special purposes:
+
+ PC_CONTROL_LEVEL2
+ It is similar to TWO_LEVEL scheme but it considers the Control
+ modifier rather than Shift. That means, the symbol from the sec-
+ ond level is chosen by Control rather than by Shift.
+
+ PC_ALT_LEVEL2
+ It is similar to TWO_LEVEL scheme but it considers the Alt modi-
+ fier rather than Shift. That means, the symbol from the second
+ level is chosen by Alt rather than by Shift.
+
+ CTRL+ALT
+ The key uses modifiers Alt and Control. It may have two possible
+ values. If only one modifier (Alt or Control) applies the symbol
+ from the first level is chosen. Only if both Alt+Control modi-
+ fiers apply the symbol from the second level is chosen.
+
+ SHIFT+ALT
+ The key uses modifiers Shift and Alt. It may have two possible
+ values. If only one modifier (Alt or Shift) applies the symbol
+ from the first level is chosen. Only if both Alt+Shift modifiers
+ apply the symbol from the second level is chosen.
+
+If needed, special caps schemes may be used. They redefine the standard
+behaviour of all *ALPHABETIC types. The layouts (maps of symbols) with keys
+defined in respective types then automatically change their behaviour accord-
+ingly. Possible redefinitions are:
+
+ o internal
+
+ o internal_nocancel
+
+ o shift
+
+ o shift_nocancel
+
+None of these schemes should be used directly. They are defined merely for
+'caps:' xkb options (used to globally change the layouts behaviour).
+
+Don't alter any of existing key types. If you need a different behaviour cre-
+ate a new one.
+
+4.2.1 More On Definitions Of Types
+
+When the XKB software deals with a separate type description it gets a com-
+plete list of modifiers that should be taken into account from the 'modi-
+fiers=<list of modifiers>' list and expects that a set of 'map[<combination
+of modifiers>]=<list of modifiers>' instructions that contain the mapping for
+each combination of modifiers mentioned in that list. Modifiers that are not
+explicitly listed are NOT taken into account when the resulting shift level
+is computed. If some combination is omitted the program (subroutine) should
+choose the first level for this combination (a quite reasonable behavior).
+
+Lets consider an example with two modifiers ModOne and ModTwo:
+
+ type "..." {
+ modifiers = ModOne+ModTwo;
+ map[None] = Level1;
+ map[ModOne] = Level2;
+ };
+
+In this case the map statements for ModTwo only and ModOne+ModTwo are omit-
+ted. It means that if the ModTwo is active the subroutine can't found
+explicit mapping for such combination an will use the default level i.e.
+Level1.
+
+But in the case the type described as:
+
+ type "..." {
+ modifiers = ModOne;
+ map[None] = Level1;
+ map[ModOne] = Level2;
+ };
+
+the ModTwo will not be taken into account and the resulting level depends on
+the ModOne state only. That means, ModTwo alone produces the Level1 but the
+combination ModOne+ModTwo produces the Level2 as well as ModOne alone.
+
+What does it mean if the second modifier is the Lock? It means that in the
+first case (the Lock itself is included in the list of modifiers but combina-
+tions with this modifier aren't mentioned in the map statements) the internal
+capitalization rules will be applied to the symbol from the first level. But
+in the second case the capitalization will be applied to the symbol chosen
+accordingly to he first modifier - and this can be the symbol from the first
+as well as from the second level.
+
+Usually, all modifiers introduced in 'modifiers=<list of modifiers>' list are
+used for shift level calculation and then discarded. Sometimes this is not
+desirable. If you want to use a modifier for shift level calculation but you
+don't want to discard it, you may list in 'preserve[<combination of modi-
+fiers>]=<list of modifiers>'. That means, for a given combination all listed
+modifiers will be preserved. If the Lock modifier is preserved then the
+resulting symbol is passed to internal capitalization routine regardless
+whether it has been used for a shift level calculation or not.
+
+Any key type description can use both real and virtual modifiers. Since real
+modifiers always have standard names it is not necessary to explicitly
+declare them. Virtual modifiers can have arbitrary names and can be declared
+(prior using them) directly in key type definition:
+
+ virtual_modifiers <comma-separated list of modifiers> ;
+
+as seen in for example basic, pc or mousekeys key type definitions.
+
+4.3 Rules
+
+Once you are finished with your symbol map you need to add it to rules file.
+The rules file describes how all the five basic keycodes, types, compat, sym-
+bols and geometry components should be composed to give a sensible resulting
+xkb configuration.
+
+The main advantage of rules over formerly used keymaps is a possibility to
+simply parameterize (once) fixed patterns of configurations and thus to ele-
+gantly allow substitutions of various local configurations into predefined
+templates.
+
+A pattern in a rules file (often located in /usr/lib/X11/xkb/rules) can be
+parameterized with four other arguments: Model, Layout, Variant and Options.
+For most cases parameters model and layout should be sufficient for choosing
+a functional keyboard mapping.
+
+The rules file itself is composed of pattern lines and lines with rules. The
+pattern line starts with an exclamation mark ('!') and describes how will the
+xkb interpret the following lines (rules). A sample rules file looks like
+this:
+
+ ! model = keycodes
+ macintosh_old = macintosh
+ ...
+ * = xfree86
+
+ ! model = symbols
+ hp = +inet(%m)
+ microsoftpro = +inet(%m)
+ geniuscomfy = +inet(%m)
+
+ ! model layout[1] = symbols
+ macintosh us = macintosh/us%(v[1])
+ * * = pc/pc(%m)+pc/%l[1]%(v[1])
+
+ ! model layout[2] = symbols
+ macintosh us = +macintosh/us[2]%(v[2]):2
+ * * = +pc/%l[2]%(v[2]):2
+
+ ! option = types
+ caps:internal = +caps(internal)
+ caps:internal_nocancel = +caps(internal_nocancel)
+
+Each rule defines what certain combination of values on the left side of
+equal sign ('=') results in. For example a (keyboard) model macintosh_old
+instructs xkb to take definitions of keycodes from file keycodes/macintosh
+while the rest of models (represented by a wild card '*') instructs it to
+take them from file keycodes/xfree86. The wild card represents all possible
+values on the left side which were not found in any of the previous rules.
+The more specialized (more complete) rules have higher precedence than gen-
+eral ones, i.e. the more general rules supply reasonable default values.
+
+As you can see some lines contain substitution parameters - the parameters
+preceded by the percent sign ('%'). The first alphabetical character after
+the percent sign expands to the value which has been found on the left side.
+For example +%l%(v) expands into +cz(bksl) if the respective values on the
+left side were cz layout in its bksl variant. More, if the layout resp. vari-
+ant parameter is followed by a pair of brackets ('[', ']') it means that xkb
+should place the layout resp. variant into specified xkb group. If the brack-
+ets are omitted the first group is the default value.
+
+So the second block of rules enhances symbol definitions for some particular
+keyboard models with extra keys (for internet, multimedia, ...) . Other mod-
+els are left intact. Similarly, the last block overrides some key type defi-
+nitions, so the common global behaviour ''shift cancels caps'' or ''shift
+doesn't cancel caps'' can be selected. The rest of rules produces special
+symbols for each variant us layout of macintosh keyboard and standard pc sym-
+bols in appropriate variants as a default.
+
+4.4 Descriptive Files of Rules
+
+Now you just need to add a detailed description to <rules>.xml description
+file so the other users (and external programs which often parse this file)
+know what is your work about.
+
+4.4.1 Old Descriptive Files
+
+The formerly used descriptive files were named <rules>.lst Its structure is
+very simple and quite self descriptive but such simplicity had also some cav-
+ities, for example there was no way how to describe local variants of layouts
+and there were problems with the localization of descriptions. To preserve
+compatibility with some older programs, new XML descriptive files can be con-
+verted to old format '.lst'.
+
+For each parameter of rules file should be described its meaning. For the
+rules file described above the .lst file could look like:
+
+ ! model
+ pc104 Generic 104-key PC
+ microsoft Microsoft Natural
+ pc98 PC-98xx Series
+ macintosh Original Macintosh
+ ...
+
+ ! layout
+ us U.S. English
+ cz Czech
+ de German
+ ...
+
+ ! option
+ caps:internal uses internal capitalization. Shift cancels Caps
+ caps:internal_nocancel uses internal capitalization. Shift doesn't cancel Caps
+
+And that should be it. Enjoy creating your own xkb mapping.
diff --git a/xorg-server/xkeyboard-config/docs/README.symbols b/xorg-server/xkeyboard-config/docs/README.symbols
index 749618e77..2382f0a15 100644
--- a/xorg-server/xkeyboard-config/docs/README.symbols
+++ b/xorg-server/xkeyboard-config/docs/README.symbols
@@ -1,51 +1,51 @@
-
-The files in the symbols directory describe possible layouts for a given
-keyboard.
-
-The default layout in each file should describe the most common layout
-for its kind, usually the symbols printed on the keys. Layout variants
-can describe common differences that are not necessarily printed on the keys.
-(e.g. a phonetic version of Cyrillic).
-
-The names of the files are referenced throughout the XKB rules, and may be
-exposed in the X server configuration and in user configuration tools.
-The filenames use the following convention:
-
-Country layouts:
-
- Keyboard layouts for a country must use the 2-letter code from the
- ISO-3166 standard.
-
-Language layouts:
-
- Keyboard layouts for a language must use the 3-letter code from the
- ISO-639 standard.
-
-Script layouts:
-
- Keyboard layouts for a script must use the 4-letter code from the
- ISO-15924 standard.
-
-Other:
-
- Keyboard layouts that do not fit in the above model and directories
- must use a filename between 5 and 8 characters.
-
-The ISO codes can be found at the following addressed:
-
-Country layouts: http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/iso_3166-1_decoding_table.html
-Language layouts: http://www.loc.gov/standards/iso639-2/langcodes.html
-Script layouts: http://www.unicode.org/iso15924/iso15924-codes.html
-
-The description in the directory file base.xml.in should match the group names
-in the symbols file.
-
-If the layout is country-based, this has to be the full
-name of the country. It is highly not recommended to use the forms
-"Republic of XXX" or "XXX Republic" - the form "XXX" should be used instead.
-The only exception is "United Kingdom".
-
-If the layout is language-based, this has to be the name of the language.
-
-Within single symbols file, all the variants should have the same group name
-(implemented using the "include" directive wherever possible).
+
+The files in the symbols directory describe possible layouts for a given
+keyboard.
+
+The default layout in each file should describe the most common layout
+for its kind, usually the symbols printed on the keys. Layout variants
+can describe common differences that are not necessarily printed on the keys.
+(e.g. a phonetic version of Cyrillic).
+
+The names of the files are referenced throughout the XKB rules, and may be
+exposed in the X server configuration and in user configuration tools.
+The filenames use the following convention:
+
+Country layouts:
+
+ Keyboard layouts for a country must use the 2-letter code from the
+ ISO-3166 standard.
+
+Language layouts:
+
+ Keyboard layouts for a language must use the 3-letter code from the
+ ISO-639 standard.
+
+Script layouts:
+
+ Keyboard layouts for a script must use the 4-letter code from the
+ ISO-15924 standard.
+
+Other:
+
+ Keyboard layouts that do not fit in the above model and directories
+ must use a filename between 5 and 8 characters.
+
+The ISO codes can be found at the following addressed:
+
+Country layouts: http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/iso_3166-1_decoding_table.html
+Language layouts: http://www.loc.gov/standards/iso639-2/langcodes.html
+Script layouts: http://www.unicode.org/iso15924/iso15924-codes.html
+
+The description in the directory file base.xml.in should match the group names
+in the symbols file.
+
+If the layout is country-based, this has to be the full
+name of the country. It is highly not recommended to use the forms
+"Republic of XXX" or "XXX Republic" - the form "XXX" should be used instead.
+The only exception is "United Kingdom".
+
+If the layout is language-based, this has to be the name of the language.
+
+Within single symbols file, all the variants should have the same group name
+(implemented using the "include" directive wherever possible).
diff --git a/xorg-server/xkeyboard-config/docs/iso15924.csv b/xorg-server/xkeyboard-config/docs/iso15924.csv
index 0c751839b..60ee4ed9f 100644
--- a/xorg-server/xkeyboard-config/docs/iso15924.csv
+++ b/xorg-server/xkeyboard-config/docs/iso15924.csv
@@ -1,105 +1,105 @@
-Code,N°,"English Name","Nom français","Property Value Alias",Date
-Arab,160,Arabic,arabe,Arabic,38108
-Armn,230,Armenian,arménien,Armenian,38108
-Bali,360,Balinese,balinais,,38136
-Batk,365,Batak,batak,,38108
-Beng,325,Bengali,bengalî,Bengali,38108
-Blis,550,Blissymbols,"symboles Bliss",,38108
-Bopo,285,Bopomofo,bopomofo,Bopomofo,38108
-Brah,300,Brahmi,brâhmî,,38108
-Brai,570,Braille,braille,Braille,38108
-Bugi,367,Buginese,bouguis,,38108
-Buhd,372,Buhid,bouhide,Buhid,38108
-Cans,440,"Unified Canadian Aboriginal Syllabics","syllabaire autochtone canadien unifié",Canadian_Aboriginal,38136
-Cham,358,Cham,"cham (Äam, tcham)",,38108
-Cher,445,Cherokee,tchérokî,Cherokee,38108
-Cirt,291,Cirth,cirth,,38108
-Copt,204,Coptic,copte,,38136
-Cprt,403,Cypriot,"syllabaire chypriote",Cypriot,38108
-Cyrl,220,Cyrillic,cyrillique,Cyrillic,38108
-Cyrs,221,"Cyrillic (Old Church Slavonic variant)","cyrillique (variante slavonne)",,38108
-Deva,315,"Devanagari (Nagari)",dévanâgarî,Devanagari,38108
-Dsrt,250,"Deseret (Mormon)","déseret (mormon)",Deseret,38108
-Egyd,70,"Egyptian demotic","démotique égyptien",,38108
-Egyh,60,"Egyptian hieratic","hiératique égyptien",,38108
-Egyp,50,"Egyptian hieroglyphs","hiéroglyphes égyptiens",,38108
-Ethi,430,"Ethiopic (Ge‘ez)","éthiopique (éthiopien, ge‘ez, guèze)",Ethiopic,38136
-Geor,240,"Georgian (Mkhedruli)","géorgien (mkhédrouli)",Georgian,38136
-Glag,225,Glagolitic,glagolitique,,38108
-Goth,206,Gothic,gotique,Gothic,38108
-Grek,200,Greek,grec,Greek,38108
-Gujr,320,Gujarati,"goudjarâtî (gujrâtî)",Gujarati,38108
-Guru,310,Gurmukhi,gourmoukhî,Gurmukhi,38108
-Hang,286,"Hangul (Hangŭl, Hangeul)","hangûl (hangŭl, hangeul)",Hangul,38136
-Hani,500,"Han (Hanzi, Kanji, Hanja)","idéogrammes han",Han,38108
-Hano,371,"Hanunoo (Hanunóo)",hanounóo,Hanunoo,38136
-Hans,501,"Han (Simplified variant)","idéogrammes han (variante simplifiée)",,38136
-Hant,502,"Han (Traditional variant)","idéogrammes han (variante traditionnelle)",,38136
-Hebr,125,Hebrew,hébreu,Hebrew,38108
-Hira,410,Hiragana,hiragana,Hiragana,38108
-Hmng,450,"Pahawh Hmong","pahawh hmong",,38108
-Hrkt,412,"(alias for Hiragana + Katakana)","(alias pour hiragana + katakana)",Katakana_Or_Hiragana,38108
-Hung,176,"Old Hungarian","ancien hongrois",,38108
-Inds,610,"Indus (Harappan)",indus,,38108
-Ital,210,"Old Italic (Etruscan, Oscan, etc.)","ancien italique (étrusque, osque, etc.)",Old_Italic,38136
-Java,361,Javanese,javanais,,38136
-Kali,357,"Kayah Li","kayah li",,38108
-Kana,411,Katakana,katakana,Katakana,38108
-Khar,305,Kharoshthi,kharochthî,,38136
-Khmr,355,Khmer,khmer,Khmer,38136
-Knda,345,Kannada,"kannara (canara)",Kannada,38136
-Laoo,356,Lao,laotien,Lao,38108
-Latf,217,"Latin (Fraktur variant)","latin (variante brisée)",,38108
-Latg,216,"Latin (Gaelic variant)","latin (variante gaélique)",,38108
-Latn,215,Latin,latin,Latin,38108
-Lepc,335,"Lepcha (Róng)","lepcha (róng)",,38108
-Limb,336,Limbu,limbou,Limbu,38136
-Lina,400,"Linear A","linéaire A",,38108
-Linb,401,"Linear B","linéaire B",Linear_B,38136
-Mand,140,Mandaean,mandéen,,38136
-Maya,90,"Mayan hieroglyphs","hiéroglyphes mayas",,38108
-Mero,100,Meroitic,méroïtique,,38108
-Mlym,347,Malayalam,malayâlam,Malayalam,38108
-Mong,145,Mongolian,mongol,Mongolian,38108
-Mymr,350,"Myanmar (Burmese)",birman,Myanmar,38108
-Ogam,212,Ogham,ogam,Ogham,38108
-Orkh,175,Orkhon,orkhon,,38108
-Orya,327,Oriya,oriyâ,Oriya,38108
-Osma,260,Osmanya,osmanais,Osmanya,38108
-Perm,227,"Old Permic","ancien permien",,38108
-Phag,331,Phags-pa,"’phags pa",,38136
-Phnx,115,Phoenician,phénicien,,38108
-Plrd,282,"Pollard Phonetic","phonétique de Pollard",,38108
-Qaaa,900,"Reserved for private use (start)","réservé à l’usage privé (début)",,38136
-Qabx,949,"Reserved for private use (end)","réservé à l’usage privé (fin)",,38136
-Roro,620,Rongorongo,rongorongo,,38108
-Runr,211,Runic,runique,Runic,38108
-Sara,292,Sarati,sarati,,38136
-Shaw,281,"Shavian (Shaw)","shavien (Shaw)",Shavian,38108
-Sinh,348,Sinhala,singhalais,Sinhala,38108
-Sylo,316,"Syloti Nagri","sylotî nâgrî",,38136
-Syrc,135,Syriac,syriaque,Syriac,38108
-Syre,138,"Syriac (Estrangelo variant)","syriaque (variante estranghélo)",,38108
-Syrj,137,"Syriac (Western variant)","syriaque (variante occidentale)",,38108
-Syrn,136,"Syriac (Eastern variant)","syriaque (variante orientale)",,38108
-Tagb,373,Tagbanwa,tagbanoua,Tagbanwa,38108
-Tale,353,"Tai Le","taï le",Tai_Le,38136
-Talu,354,"Tai Lue","taï lue",,38136
-Taml,346,Tamil,tamoul,Tamil,38108
-Telu,340,Telugu,télougou,Telugu,38108
-Teng,290,Tengwar,tengwar,,38108
-Tfng,120,"Tifinagh (Berber)","tifinagh (berbère)",,38108
-Tglg,370,Tagalog,tagal,Tagalog,38108
-Thaa,170,Thaana,thâna,Thaana,38108
-Thai,352,Thai,thaï,Thai,38108
-Tibt,330,Tibetan,tibétain,Tibetan,38108
-Ugar,40,Ugaritic,ougaritique,Ugaritic,38108
-Vaii,470,Vai,vaï,,38108
-Visp,280,"Visible Speech","parole visible",,38108
-Xpeo,30,"Old Persian","cunéiforme persépolitain",,38108
-Xsux,20,"Cuneiform, Sumero-Akkadian","cunéiforme suméro-akkadien",,38108
-Yiii,460,Yi,yi,Yi,38108
-Zxxx,997,"Code for unwritten languages","codet pour les langues non écrites",,38108
-Zyyy,998,"Code for undetermined script","codet pour écriture indéterminée",Common,38136
-Zzzz,999,"Code for uncoded script","codet pour écriture non codée",,38108
-Code,N°,"English Name","Nom français","Property Value Alias",Date
+Code,N°,"English Name","Nom français","Property Value Alias",Date
+Arab,160,Arabic,arabe,Arabic,38108
+Armn,230,Armenian,arménien,Armenian,38108
+Bali,360,Balinese,balinais,,38136
+Batk,365,Batak,batak,,38108
+Beng,325,Bengali,bengalî,Bengali,38108
+Blis,550,Blissymbols,"symboles Bliss",,38108
+Bopo,285,Bopomofo,bopomofo,Bopomofo,38108
+Brah,300,Brahmi,brâhmî,,38108
+Brai,570,Braille,braille,Braille,38108
+Bugi,367,Buginese,bouguis,,38108
+Buhd,372,Buhid,bouhide,Buhid,38108
+Cans,440,"Unified Canadian Aboriginal Syllabics","syllabaire autochtone canadien unifié",Canadian_Aboriginal,38136
+Cham,358,Cham,"cham (Äam, tcham)",,38108
+Cher,445,Cherokee,tchérokî,Cherokee,38108
+Cirt,291,Cirth,cirth,,38108
+Copt,204,Coptic,copte,,38136
+Cprt,403,Cypriot,"syllabaire chypriote",Cypriot,38108
+Cyrl,220,Cyrillic,cyrillique,Cyrillic,38108
+Cyrs,221,"Cyrillic (Old Church Slavonic variant)","cyrillique (variante slavonne)",,38108
+Deva,315,"Devanagari (Nagari)",dévanâgarî,Devanagari,38108
+Dsrt,250,"Deseret (Mormon)","déseret (mormon)",Deseret,38108
+Egyd,70,"Egyptian demotic","démotique égyptien",,38108
+Egyh,60,"Egyptian hieratic","hiératique égyptien",,38108
+Egyp,50,"Egyptian hieroglyphs","hiéroglyphes égyptiens",,38108
+Ethi,430,"Ethiopic (Ge‘ez)","éthiopique (éthiopien, ge‘ez, guèze)",Ethiopic,38136
+Geor,240,"Georgian (Mkhedruli)","géorgien (mkhédrouli)",Georgian,38136
+Glag,225,Glagolitic,glagolitique,,38108
+Goth,206,Gothic,gotique,Gothic,38108
+Grek,200,Greek,grec,Greek,38108
+Gujr,320,Gujarati,"goudjarâtî (gujrâtî)",Gujarati,38108
+Guru,310,Gurmukhi,gourmoukhî,Gurmukhi,38108
+Hang,286,"Hangul (Hangŭl, Hangeul)","hangûl (hangŭl, hangeul)",Hangul,38136
+Hani,500,"Han (Hanzi, Kanji, Hanja)","idéogrammes han",Han,38108
+Hano,371,"Hanunoo (Hanunóo)",hanounóo,Hanunoo,38136
+Hans,501,"Han (Simplified variant)","idéogrammes han (variante simplifiée)",,38136
+Hant,502,"Han (Traditional variant)","idéogrammes han (variante traditionnelle)",,38136
+Hebr,125,Hebrew,hébreu,Hebrew,38108
+Hira,410,Hiragana,hiragana,Hiragana,38108
+Hmng,450,"Pahawh Hmong","pahawh hmong",,38108
+Hrkt,412,"(alias for Hiragana + Katakana)","(alias pour hiragana + katakana)",Katakana_Or_Hiragana,38108
+Hung,176,"Old Hungarian","ancien hongrois",,38108
+Inds,610,"Indus (Harappan)",indus,,38108
+Ital,210,"Old Italic (Etruscan, Oscan, etc.)","ancien italique (étrusque, osque, etc.)",Old_Italic,38136
+Java,361,Javanese,javanais,,38136
+Kali,357,"Kayah Li","kayah li",,38108
+Kana,411,Katakana,katakana,Katakana,38108
+Khar,305,Kharoshthi,kharochthî,,38136
+Khmr,355,Khmer,khmer,Khmer,38136
+Knda,345,Kannada,"kannara (canara)",Kannada,38136
+Laoo,356,Lao,laotien,Lao,38108
+Latf,217,"Latin (Fraktur variant)","latin (variante brisée)",,38108
+Latg,216,"Latin (Gaelic variant)","latin (variante gaélique)",,38108
+Latn,215,Latin,latin,Latin,38108
+Lepc,335,"Lepcha (Róng)","lepcha (róng)",,38108
+Limb,336,Limbu,limbou,Limbu,38136
+Lina,400,"Linear A","linéaire A",,38108
+Linb,401,"Linear B","linéaire B",Linear_B,38136
+Mand,140,Mandaean,mandéen,,38136
+Maya,90,"Mayan hieroglyphs","hiéroglyphes mayas",,38108
+Mero,100,Meroitic,méroïtique,,38108
+Mlym,347,Malayalam,malayâlam,Malayalam,38108
+Mong,145,Mongolian,mongol,Mongolian,38108
+Mymr,350,"Myanmar (Burmese)",birman,Myanmar,38108
+Ogam,212,Ogham,ogam,Ogham,38108
+Orkh,175,Orkhon,orkhon,,38108
+Orya,327,Oriya,oriyâ,Oriya,38108
+Osma,260,Osmanya,osmanais,Osmanya,38108
+Perm,227,"Old Permic","ancien permien",,38108
+Phag,331,Phags-pa,"’phags pa",,38136
+Phnx,115,Phoenician,phénicien,,38108
+Plrd,282,"Pollard Phonetic","phonétique de Pollard",,38108
+Qaaa,900,"Reserved for private use (start)","réservé à l’usage privé (début)",,38136
+Qabx,949,"Reserved for private use (end)","réservé à l’usage privé (fin)",,38136
+Roro,620,Rongorongo,rongorongo,,38108
+Runr,211,Runic,runique,Runic,38108
+Sara,292,Sarati,sarati,,38136
+Shaw,281,"Shavian (Shaw)","shavien (Shaw)",Shavian,38108
+Sinh,348,Sinhala,singhalais,Sinhala,38108
+Sylo,316,"Syloti Nagri","sylotî nâgrî",,38136
+Syrc,135,Syriac,syriaque,Syriac,38108
+Syre,138,"Syriac (Estrangelo variant)","syriaque (variante estranghélo)",,38108
+Syrj,137,"Syriac (Western variant)","syriaque (variante occidentale)",,38108
+Syrn,136,"Syriac (Eastern variant)","syriaque (variante orientale)",,38108
+Tagb,373,Tagbanwa,tagbanoua,Tagbanwa,38108
+Tale,353,"Tai Le","taï le",Tai_Le,38136
+Talu,354,"Tai Lue","taï lue",,38136
+Taml,346,Tamil,tamoul,Tamil,38108
+Telu,340,Telugu,télougou,Telugu,38108
+Teng,290,Tengwar,tengwar,,38108
+Tfng,120,"Tifinagh (Berber)","tifinagh (berbère)",,38108
+Tglg,370,Tagalog,tagal,Tagalog,38108
+Thaa,170,Thaana,thâna,Thaana,38108
+Thai,352,Thai,thaï,Thai,38108
+Tibt,330,Tibetan,tibétain,Tibetan,38108
+Ugar,40,Ugaritic,ougaritique,Ugaritic,38108
+Vaii,470,Vai,vaï,,38108
+Visp,280,"Visible Speech","parole visible",,38108
+Xpeo,30,"Old Persian","cunéiforme persépolitain",,38108
+Xsux,20,"Cuneiform, Sumero-Akkadian","cunéiforme suméro-akkadien",,38108
+Yiii,460,Yi,yi,Yi,38108
+Zxxx,997,"Code for unwritten languages","codet pour les langues non écrites",,38108
+Zyyy,998,"Code for undetermined script","codet pour écriture indéterminée",Common,38136
+Zzzz,999,"Code for uncoded script","codet pour écriture non codée",,38108
+Code,N°,"English Name","Nom français","Property Value Alias",Date
diff --git a/xorg-server/xkeyboard-config/docs/iso3166-3.csv b/xorg-server/xkeyboard-config/docs/iso3166-3.csv
index 0e5a44e17..e0ecb96ca 100644
--- a/xorg-server/xkeyboard-config/docs/iso3166-3.csv
+++ b/xorg-server/xkeyboard-config/docs/iso3166-3.csv
@@ -1,246 +1,246 @@
-ABW Aruba
-AFG Afghanistan
-AGO Angola
-AIA Anguilla
-ALA Ã…land Islands
-ALB Albania
-AND Andorra
-ANT Netherlands Antilles
-ARE United Arab Emirates
-ARG Argentina
-ARM Armenia
-ASM American Samoa
-ATA Antarctica
-ATF French Southern Territories
-ATG Antigua and Barbuda
-AUS Australia
-AUT Austria
-AZE Azerbaijan
-BDI Burundi
-BEL Belgium
-BEN Benin
-BFA Burkina Faso
-BGD Bangladesh
-BGR Bulgaria
-BHR Bahrain
-BHS Bahamas
-BIH Bosnia and Herzegovina
-BLM Saint Barthélemy
-BLR Belarus
-BLZ Belize
-BMU Bermuda
-BOL Bolivia, Plurinational State of
-BRA Brazil
-BRB Barbados
-BRN Brunei Darussalam
-BTN Bhutan
-BVT Bouvet Island
-BWA Botswana
-CAF Central African Republic
-CAN Canada
-CCK Cocos (Keeling) Islands
-CHE Switzerland
-CHL Chile
-CHN China
-CIV Côte d'Ivoire
-CMR Cameroon
-COD Congo, the Democratic Republic of the
-COG Congo
-COK Cook Islands
-COL Colombia
-COM Comoros
-CPV Cape Verde
-CRI Costa Rica
-CUB Cuba
-CXR Christmas Island
-CYM Cayman Islands
-CYP Cyprus
-CZE Czech Republic
-DEU Germany
-DJI Djibouti
-DMA Dominica
-DNK Denmark
-DOM Dominican Republic
-DZA Algeria
-ECU Ecuador
-EGY Egypt
-ERI Eritrea
-ESH Western Sahara
-ESP Spain
-EST Estonia
-ETH Ethiopia
-FIN Finland
-FJI Fiji
-FLK Falkland Islands (Malvinas)
-FRA France
-FRO Faroe Islands
-FSM Micronesia, Federated States of
-GAB Gabon
-GBR United Kingdom
-GEO Georgia
-GGY Guernsey
-GHA Ghana
-GIB Gibraltar
-GIN Guinea
-GLP Guadeloupe
-GMB Gambia
-GNB Guinea-Bissau
-GNQ Equatorial Guinea
-GRC Greece
-GRD Grenada
-GRL Greenland
-GTM Guatemala
-GUF French Guiana
-GUM Guam
-GUY Guyana
-HKG Hong Kong
-HMD Heard Island and McDonald Islands
-HND Honduras
-HRV Croatia
-HTI Haiti
-HUN Hungary
-IDN Indonesia
-IMN Isle of Man
-IND India
-IOT British Indian Ocean Territory
-IRL Ireland
-IRN Iran, Islamic Republic of
-IRQ Iraq
-ISL Iceland
-ISR Israel
-ITA Italy
-JAM Jamaica
-JEY Jersey
-JOR Jordan
-JPN Japan
-KAZ Kazakhstan
-KEN Kenya
-KGZ Kyrgyzstan
-KHM Cambodia
-KIR Kiribati
-KNA Saint Kitts and Nevis
-KOR Korea, Republic of
-KWT Kuwait
-LAO Lao People's Democratic Republic
-LBN Lebanon
-LBR Liberia
-LBY Libyan Arab Jamahiriya
-LCA Saint Lucia
-LIE Liechtenstein
-LKA Sri Lanka
-LSO Lesotho
-LTU Lithuania
-LUX Luxembourg
-LVA Latvia
-MAC Macao
-MAF Saint Martin (French part)
-MAR Morocco
-MCO Monaco
-MDA Moldova, Republic of
-MDG Madagascar
-MDV Maldives
-MEX Mexico
-MHL Marshall Islands
-MKD Macedonia, the former Yugoslav Republic of
-MLI Mali
-MLT Malta
-MMR Myanmar
-MNE Montenegro
-MNG Mongolia
-MNP Northern Mariana Islands
-MOZ Mozambique
-MRT Mauritania
-MSR Montserrat
-MTQ Martinique
-MUS Mauritius
-MWI Malawi
-MYS Malaysia
-MYT Mayotte
-NAM Namibia
-NCL New Caledonia
-NER Niger
-NFK Norfolk Island
-NGA Nigeria
-NIC Nicaragua
-NIU Niue
-NLD Netherlands
-NOR Norway
-NPL Nepal
-NRU Nauru
-NZL New Zealand
-OMN Oman
-PAK Pakistan
-PAN Panama
-PCN Pitcairn
-PER Peru
-PHL Philippines
-PLW Palau
-PNG Papua New Guinea
-POL Poland
-PRI Puerto Rico
-PRK Korea, Democratic People's Republic of
-PRT Portugal
-PRY Paraguay
-PSE Palestinian Territory, Occupied
-PYF French Polynesia
-QAT Qatar
-REU Réunion
-ROU Romania
-RUS Russian Federation
-RWA Rwanda
-SAU Saudi Arabia
-SDN Sudan
-SEN Senegal
-SGP Singapore
-SGS South Georgia and the South Sandwich Islands
-SHN Saint Helena, Ascension and Tristan da Cunha
-SJM Svalbard and Jan Mayen
-SLB Solomon Islands
-SLE Sierra Leone
-SLV El Salvador
-SMR San Marino
-SOM Somalia
-SPM Saint Pierre and Miquelon
-SRB Serbia
-STP Sao Tome and Principe
-SUR Suriname
-SVK Slovakia
-SVN Slovenia
-SWE Sweden
-SWZ Swaziland
-SYC Seychelles
-SYR Syrian Arab Republic
-TCA Turks and Caicos Islands
-TCD Chad
-TGO Togo
-THA Thailand
-TJK Tajikistan
-TKL Tokelau
-TKM Turkmenistan
-TLS Timor-Leste
-TON Tonga
-TTO Trinidad and Tobago
-TUN Tunisia
-TUR Turkey
-TUV Tuvalu
-TWN Taiwan, Province of China
-TZA Tanzania, United Republic of
-UGA Uganda
-UKR Ukraine
-UMI United States Minor Outlying Islands
-URY Uruguay
-USA United States
-UZB Uzbekistan
-VAT Holy See (Vatican City State)
-VCT Saint Vincent and the Grenadines
-VEN Venezuela, Bolivarian Republic of
-VGB Virgin Islands, British
-VIR Virgin Islands, U.S.
-VNM Viet Nam
-VUT Vanuatu
-WLF Wallis and Futuna
-WSM Samoa
-YEM Yemen
-ZAF South Africa
-ZMB Zambia
-ZWE Zimbabwe
+ABW Aruba
+AFG Afghanistan
+AGO Angola
+AIA Anguilla
+ALA Ã…land Islands
+ALB Albania
+AND Andorra
+ANT Netherlands Antilles
+ARE United Arab Emirates
+ARG Argentina
+ARM Armenia
+ASM American Samoa
+ATA Antarctica
+ATF French Southern Territories
+ATG Antigua and Barbuda
+AUS Australia
+AUT Austria
+AZE Azerbaijan
+BDI Burundi
+BEL Belgium
+BEN Benin
+BFA Burkina Faso
+BGD Bangladesh
+BGR Bulgaria
+BHR Bahrain
+BHS Bahamas
+BIH Bosnia and Herzegovina
+BLM Saint Barthélemy
+BLR Belarus
+BLZ Belize
+BMU Bermuda
+BOL Bolivia, Plurinational State of
+BRA Brazil
+BRB Barbados
+BRN Brunei Darussalam
+BTN Bhutan
+BVT Bouvet Island
+BWA Botswana
+CAF Central African Republic
+CAN Canada
+CCK Cocos (Keeling) Islands
+CHE Switzerland
+CHL Chile
+CHN China
+CIV Côte d'Ivoire
+CMR Cameroon
+COD Congo, the Democratic Republic of the
+COG Congo
+COK Cook Islands
+COL Colombia
+COM Comoros
+CPV Cape Verde
+CRI Costa Rica
+CUB Cuba
+CXR Christmas Island
+CYM Cayman Islands
+CYP Cyprus
+CZE Czech Republic
+DEU Germany
+DJI Djibouti
+DMA Dominica
+DNK Denmark
+DOM Dominican Republic
+DZA Algeria
+ECU Ecuador
+EGY Egypt
+ERI Eritrea
+ESH Western Sahara
+ESP Spain
+EST Estonia
+ETH Ethiopia
+FIN Finland
+FJI Fiji
+FLK Falkland Islands (Malvinas)
+FRA France
+FRO Faroe Islands
+FSM Micronesia, Federated States of
+GAB Gabon
+GBR United Kingdom
+GEO Georgia
+GGY Guernsey
+GHA Ghana
+GIB Gibraltar
+GIN Guinea
+GLP Guadeloupe
+GMB Gambia
+GNB Guinea-Bissau
+GNQ Equatorial Guinea
+GRC Greece
+GRD Grenada
+GRL Greenland
+GTM Guatemala
+GUF French Guiana
+GUM Guam
+GUY Guyana
+HKG Hong Kong
+HMD Heard Island and McDonald Islands
+HND Honduras
+HRV Croatia
+HTI Haiti
+HUN Hungary
+IDN Indonesia
+IMN Isle of Man
+IND India
+IOT British Indian Ocean Territory
+IRL Ireland
+IRN Iran, Islamic Republic of
+IRQ Iraq
+ISL Iceland
+ISR Israel
+ITA Italy
+JAM Jamaica
+JEY Jersey
+JOR Jordan
+JPN Japan
+KAZ Kazakhstan
+KEN Kenya
+KGZ Kyrgyzstan
+KHM Cambodia
+KIR Kiribati
+KNA Saint Kitts and Nevis
+KOR Korea, Republic of
+KWT Kuwait
+LAO Lao People's Democratic Republic
+LBN Lebanon
+LBR Liberia
+LBY Libyan Arab Jamahiriya
+LCA Saint Lucia
+LIE Liechtenstein
+LKA Sri Lanka
+LSO Lesotho
+LTU Lithuania
+LUX Luxembourg
+LVA Latvia
+MAC Macao
+MAF Saint Martin (French part)
+MAR Morocco
+MCO Monaco
+MDA Moldova, Republic of
+MDG Madagascar
+MDV Maldives
+MEX Mexico
+MHL Marshall Islands
+MKD Macedonia, the former Yugoslav Republic of
+MLI Mali
+MLT Malta
+MMR Myanmar
+MNE Montenegro
+MNG Mongolia
+MNP Northern Mariana Islands
+MOZ Mozambique
+MRT Mauritania
+MSR Montserrat
+MTQ Martinique
+MUS Mauritius
+MWI Malawi
+MYS Malaysia
+MYT Mayotte
+NAM Namibia
+NCL New Caledonia
+NER Niger
+NFK Norfolk Island
+NGA Nigeria
+NIC Nicaragua
+NIU Niue
+NLD Netherlands
+NOR Norway
+NPL Nepal
+NRU Nauru
+NZL New Zealand
+OMN Oman
+PAK Pakistan
+PAN Panama
+PCN Pitcairn
+PER Peru
+PHL Philippines
+PLW Palau
+PNG Papua New Guinea
+POL Poland
+PRI Puerto Rico
+PRK Korea, Democratic People's Republic of
+PRT Portugal
+PRY Paraguay
+PSE Palestinian Territory, Occupied
+PYF French Polynesia
+QAT Qatar
+REU Réunion
+ROU Romania
+RUS Russian Federation
+RWA Rwanda
+SAU Saudi Arabia
+SDN Sudan
+SEN Senegal
+SGP Singapore
+SGS South Georgia and the South Sandwich Islands
+SHN Saint Helena, Ascension and Tristan da Cunha
+SJM Svalbard and Jan Mayen
+SLB Solomon Islands
+SLE Sierra Leone
+SLV El Salvador
+SMR San Marino
+SOM Somalia
+SPM Saint Pierre and Miquelon
+SRB Serbia
+STP Sao Tome and Principe
+SUR Suriname
+SVK Slovakia
+SVN Slovenia
+SWE Sweden
+SWZ Swaziland
+SYC Seychelles
+SYR Syrian Arab Republic
+TCA Turks and Caicos Islands
+TCD Chad
+TGO Togo
+THA Thailand
+TJK Tajikistan
+TKL Tokelau
+TKM Turkmenistan
+TLS Timor-Leste
+TON Tonga
+TTO Trinidad and Tobago
+TUN Tunisia
+TUR Turkey
+TUV Tuvalu
+TWN Taiwan, Province of China
+TZA Tanzania, United Republic of
+UGA Uganda
+UKR Ukraine
+UMI United States Minor Outlying Islands
+URY Uruguay
+USA United States
+UZB Uzbekistan
+VAT Holy See (Vatican City State)
+VCT Saint Vincent and the Grenadines
+VEN Venezuela, Bolivarian Republic of
+VGB Virgin Islands, British
+VIR Virgin Islands, U.S.
+VNM Viet Nam
+VUT Vanuatu
+WLF Wallis and Futuna
+WSM Samoa
+YEM Yemen
+ZAF South Africa
+ZMB Zambia
+ZWE Zimbabwe
diff --git a/xorg-server/xkeyboard-config/docs/iso3166.csv b/xorg-server/xkeyboard-config/docs/iso3166.csv
index f08b3da03..cf971e300 100644
--- a/xorg-server/xkeyboard-config/docs/iso3166.csv
+++ b/xorg-server/xkeyboard-config/docs/iso3166.csv
@@ -1,240 +1,240 @@
-AF,AFGHANISTAN
-AX,"Ã…LAND ISLANDS"
-AL,ALBANIA
-DZ,ALGERIA
-AS,"AMERICAN SAMOA"
-AD,ANDORRA
-AO,ANGOLA
-AI,ANGUILLA
-AQ,ANTARCTICA
-AG,"ANTIGUA AND BARBUDA"
-AR,ARGENTINA
-AM,ARMENIA
-AW,ARUBA
-AU,AUSTRALIA
-AT,AUSTRIA
-AZ,AZERBAIJAN
-BS,BAHAMAS
-BH,BAHRAIN
-BD,BANGLADESH
-BB,BARBADOS
-BY,BELARUS
-BE,BELGIUM
-BZ,BELIZE
-BJ,BENIN
-BM,BERMUDA
-BT,BHUTAN
-BO,BOLIVIA
-BA,"BOSNIA AND HERZEGOVINA"
-BW,BOTSWANA
-BV,"BOUVET ISLAND"
-BR,BRAZIL
-IO,"BRITISH INDIAN OCEAN TERRITORY"
-BN,"BRUNEI DARUSSALAM"
-BG,BULGARIA
-BF,"BURKINA FASO"
-BI,BURUNDI
-KH,CAMBODIA
-CM,CAMEROON
-CA,CANADA
-CV,"CAPE VERDE"
-KY,"CAYMAN ISLANDS"
-CF,"CENTRAL AFRICAN REPUBLIC"
-TD,CHAD
-CL,CHILE
-CN,CHINA
-CX,"CHRISTMAS ISLAND"
-CC,"COCOS (KEELING) ISLANDS"
-CO,COLOMBIA
-KM,COMOROS
-CG,CONGO
-CD,"CONGO, THE DEMOCRATIC REPUBLIC OF THE"
-CK,"COOK ISLANDS"
-CR,"COSTA RICA"
-CI,"COTE D'IVOIRE"
-HR,CROATIA
-CU,CUBA
-CY,CYPRUS
-CZ,"CZECH REPUBLIC"
-DK,DENMARK
-DJ,DJIBOUTI
-DM,DOMINICA
-DO,"DOMINICAN REPUBLIC"
-EC,ECUADOR
-EG,EGYPT
-SV,"EL SALVADOR"
-GQ,"EQUATORIAL GUINEA"
-ER,ERITREA
-EE,ESTONIA
-ET,ETHIOPIA
-FK,"FALKLAND ISLANDS (MALVINAS)"
-FO,"FAROE ISLANDS"
-FJ,FIJI
-FI,FINLAND
-FR,FRANCE
-GF,"FRENCH GUIANA"
-PF,"FRENCH POLYNESIA"
-TF,"FRENCH SOUTHERN TERRITORIES"
-GA,GABON
-GM,GAMBIA
-GE,GEORGIA
-DE,GERMANY
-GH,GHANA
-GI,GIBRALTAR
-GR,GREECE
-GL,GREENLAND
-GD,GRENADA
-GP,GUADELOUPE
-GU,GUAM
-GT,GUATEMALA
-GN,GUINEA
-GW,GUINEA-BISSAU
-GY,GUYANA
-HT,HAITI
-HM,"HEARD ISLAND AND MCDONALD ISLANDS"
-VA,"HOLY SEE (VATICAN CITY STATE)"
-HN,HONDURAS
-HK,"HONG KONG"
-HU,HUNGARY
-IS,ICELAND
-IN,INDIA
-ID,INDONESIA
-IR,"IRAN, ISLAMIC REPUBLIC OF"
-IQ,IRAQ
-IE,IRELAND
-IL,ISRAEL
-IT,ITALY
-JM,JAMAICA
-JP,JAPAN
-JO,JORDAN
-KZ,KAZAKHSTAN
-KE,KENYA
-KI,KIRIBATI
-KP,"KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"
-KR,"KOREA, REPUBLIC OF"
-KW,KUWAIT
-KG,KYRGYZSTAN
-LA,"LAO PEOPLE'S DEMOCRATIC REPUBLIC"
-LV,LATVIA
-LB,LEBANON
-LS,LESOTHO
-LR,LIBERIA
-LY,"LIBYAN ARAB JAMAHIRIYA"
-LI,LIECHTENSTEIN
-LT,LITHUANIA
-LU,LUXEMBOURG
-MO,MACAO
-MK,"MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF"
-MG,MADAGASCAR
-MW,MALAWI
-MY,MALAYSIA
-MV,MALDIVES
-ML,MALI
-MT,MALTA
-MH,"MARSHALL ISLANDS"
-MQ,MARTINIQUE
-MR,MAURITANIA
-MU,MAURITIUS
-YT,MAYOTTE
-MX,MEXICO
-FM,"MICRONESIA, FEDERATED STATES OF"
-MD,"MOLDOVA, REPUBLIC OF"
-MC,MONACO
-MN,MONGOLIA
-MS,MONTSERRAT
-MA,MOROCCO
-MZ,MOZAMBIQUE
-MM,MYANMAR
-NA,NAMIBIA
-NR,NAURU
-NP,NEPAL
-NL,NETHERLANDS
-AN,"NETHERLANDS ANTILLES"
-NC,"NEW CALEDONIA"
-NZ,"NEW ZEALAND"
-NI,NICARAGUA
-NE,NIGER
-NG,NIGERIA
-NU,NIUE
-NF,"NORFOLK ISLAND"
-MP,"NORTHERN MARIANA ISLANDS"
-NO,NORWAY
-OM,OMAN
-PK,PAKISTAN
-PW,PALAU
-PS,"PALESTINIAN TERRITORY, OCCUPIED"
-PA,PANAMA
-PG,"PAPUA NEW GUINEA"
-PY,PARAGUAY
-PE,PERU
-PH,PHILIPPINES
-PN,PITCAIRN
-PL,POLAND
-PT,PORTUGAL
-PR,"PUERTO RICO"
-QA,QATAR
-RE,REUNION
-RO,ROMANIA
-RU,"RUSSIAN FEDERATION"
-RW,RWANDA
-SH,"SAINT HELENA"
-KN,"SAINT KITTS AND NEVIS"
-LC,"SAINT LUCIA"
-PM,"SAINT PIERRE AND MIQUELON"
-VC,"SAINT VINCENT AND THE GRENADINES"
-WS,SAMOA
-SM,"SAN MARINO"
-ST,"SAO TOME AND PRINCIPE"
-SA,"SAUDI ARABIA"
-SN,SENEGAL
-CS,"SERBIA AND MONTENEGRO"
-SC,SEYCHELLES
-SL,"SIERRA LEONE"
-SG,SINGAPORE
-SK,SLOVAKIA
-SI,SLOVENIA
-SB,"SOLOMON ISLANDS"
-SO,SOMALIA
-ZA,"SOUTH AFRICA"
-GS,"SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS"
-ES,SPAIN
-LK,"SRI LANKA"
-SD,SUDAN
-SR,SURINAME
-SJ,"SVALBARD AND JAN MAYEN"
-SZ,SWAZILAND
-SE,SWEDEN
-CH,SWITZERLAND
-SY,"SYRIAN ARAB REPUBLIC"
-TW,"TAIWAN, PROVINCE OF CHINA"
-TJ,TAJIKISTAN
-TZ,"TANZANIA, UNITED REPUBLIC OF"
-TH,THAILAND
-TL,TIMOR-LESTE
-TG,TOGO
-TK,TOKELAU
-TO,TONGA
-TT,"TRINIDAD AND TOBAGO"
-TN,TUNISIA
-TR,TURKEY
-TM,TURKMENISTAN
-TC,"TURKS AND CAICOS ISLANDS"
-TV,TUVALU
-UG,UGANDA
-UA,UKRAINE
-AE,"UNITED ARAB EMIRATES"
-GB,"UNITED KINGDOM"
-US,"UNITED STATES"
-UM,"UNITED STATES MINOR OUTLYING ISLANDS"
-UY,URUGUAY
-UZ,UZBEKISTAN
-VU,VANUATU
-VE,VENEZUELA
-VN,"VIET NAM"
-VG,"VIRGIN ISLANDS, BRITISH"
-VI,"VIRGIN ISLANDS, U.S."
-WF,"WALLIS AND FUTUNA"
-EH,"WESTERN SAHARA"
-YE,YEMEN
-ZM,ZAMBIA
-ZW,ZIMBABWE
+AF,AFGHANISTAN
+AX,"Ã…LAND ISLANDS"
+AL,ALBANIA
+DZ,ALGERIA
+AS,"AMERICAN SAMOA"
+AD,ANDORRA
+AO,ANGOLA
+AI,ANGUILLA
+AQ,ANTARCTICA
+AG,"ANTIGUA AND BARBUDA"
+AR,ARGENTINA
+AM,ARMENIA
+AW,ARUBA
+AU,AUSTRALIA
+AT,AUSTRIA
+AZ,AZERBAIJAN
+BS,BAHAMAS
+BH,BAHRAIN
+BD,BANGLADESH
+BB,BARBADOS
+BY,BELARUS
+BE,BELGIUM
+BZ,BELIZE
+BJ,BENIN
+BM,BERMUDA
+BT,BHUTAN
+BO,BOLIVIA
+BA,"BOSNIA AND HERZEGOVINA"
+BW,BOTSWANA
+BV,"BOUVET ISLAND"
+BR,BRAZIL
+IO,"BRITISH INDIAN OCEAN TERRITORY"
+BN,"BRUNEI DARUSSALAM"
+BG,BULGARIA
+BF,"BURKINA FASO"
+BI,BURUNDI
+KH,CAMBODIA
+CM,CAMEROON
+CA,CANADA
+CV,"CAPE VERDE"
+KY,"CAYMAN ISLANDS"
+CF,"CENTRAL AFRICAN REPUBLIC"
+TD,CHAD
+CL,CHILE
+CN,CHINA
+CX,"CHRISTMAS ISLAND"
+CC,"COCOS (KEELING) ISLANDS"
+CO,COLOMBIA
+KM,COMOROS
+CG,CONGO
+CD,"CONGO, THE DEMOCRATIC REPUBLIC OF THE"
+CK,"COOK ISLANDS"
+CR,"COSTA RICA"
+CI,"COTE D'IVOIRE"
+HR,CROATIA
+CU,CUBA
+CY,CYPRUS
+CZ,"CZECH REPUBLIC"
+DK,DENMARK
+DJ,DJIBOUTI
+DM,DOMINICA
+DO,"DOMINICAN REPUBLIC"
+EC,ECUADOR
+EG,EGYPT
+SV,"EL SALVADOR"
+GQ,"EQUATORIAL GUINEA"
+ER,ERITREA
+EE,ESTONIA
+ET,ETHIOPIA
+FK,"FALKLAND ISLANDS (MALVINAS)"
+FO,"FAROE ISLANDS"
+FJ,FIJI
+FI,FINLAND
+FR,FRANCE
+GF,"FRENCH GUIANA"
+PF,"FRENCH POLYNESIA"
+TF,"FRENCH SOUTHERN TERRITORIES"
+GA,GABON
+GM,GAMBIA
+GE,GEORGIA
+DE,GERMANY
+GH,GHANA
+GI,GIBRALTAR
+GR,GREECE
+GL,GREENLAND
+GD,GRENADA
+GP,GUADELOUPE
+GU,GUAM
+GT,GUATEMALA
+GN,GUINEA
+GW,GUINEA-BISSAU
+GY,GUYANA
+HT,HAITI
+HM,"HEARD ISLAND AND MCDONALD ISLANDS"
+VA,"HOLY SEE (VATICAN CITY STATE)"
+HN,HONDURAS
+HK,"HONG KONG"
+HU,HUNGARY
+IS,ICELAND
+IN,INDIA
+ID,INDONESIA
+IR,"IRAN, ISLAMIC REPUBLIC OF"
+IQ,IRAQ
+IE,IRELAND
+IL,ISRAEL
+IT,ITALY
+JM,JAMAICA
+JP,JAPAN
+JO,JORDAN
+KZ,KAZAKHSTAN
+KE,KENYA
+KI,KIRIBATI
+KP,"KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"
+KR,"KOREA, REPUBLIC OF"
+KW,KUWAIT
+KG,KYRGYZSTAN
+LA,"LAO PEOPLE'S DEMOCRATIC REPUBLIC"
+LV,LATVIA
+LB,LEBANON
+LS,LESOTHO
+LR,LIBERIA
+LY,"LIBYAN ARAB JAMAHIRIYA"
+LI,LIECHTENSTEIN
+LT,LITHUANIA
+LU,LUXEMBOURG
+MO,MACAO
+MK,"MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF"
+MG,MADAGASCAR
+MW,MALAWI
+MY,MALAYSIA
+MV,MALDIVES
+ML,MALI
+MT,MALTA
+MH,"MARSHALL ISLANDS"
+MQ,MARTINIQUE
+MR,MAURITANIA
+MU,MAURITIUS
+YT,MAYOTTE
+MX,MEXICO
+FM,"MICRONESIA, FEDERATED STATES OF"
+MD,"MOLDOVA, REPUBLIC OF"
+MC,MONACO
+MN,MONGOLIA
+MS,MONTSERRAT
+MA,MOROCCO
+MZ,MOZAMBIQUE
+MM,MYANMAR
+NA,NAMIBIA
+NR,NAURU
+NP,NEPAL
+NL,NETHERLANDS
+AN,"NETHERLANDS ANTILLES"
+NC,"NEW CALEDONIA"
+NZ,"NEW ZEALAND"
+NI,NICARAGUA
+NE,NIGER
+NG,NIGERIA
+NU,NIUE
+NF,"NORFOLK ISLAND"
+MP,"NORTHERN MARIANA ISLANDS"
+NO,NORWAY
+OM,OMAN
+PK,PAKISTAN
+PW,PALAU
+PS,"PALESTINIAN TERRITORY, OCCUPIED"
+PA,PANAMA
+PG,"PAPUA NEW GUINEA"
+PY,PARAGUAY
+PE,PERU
+PH,PHILIPPINES
+PN,PITCAIRN
+PL,POLAND
+PT,PORTUGAL
+PR,"PUERTO RICO"
+QA,QATAR
+RE,REUNION
+RO,ROMANIA
+RU,"RUSSIAN FEDERATION"
+RW,RWANDA
+SH,"SAINT HELENA"
+KN,"SAINT KITTS AND NEVIS"
+LC,"SAINT LUCIA"
+PM,"SAINT PIERRE AND MIQUELON"
+VC,"SAINT VINCENT AND THE GRENADINES"
+WS,SAMOA
+SM,"SAN MARINO"
+ST,"SAO TOME AND PRINCIPE"
+SA,"SAUDI ARABIA"
+SN,SENEGAL
+CS,"SERBIA AND MONTENEGRO"
+SC,SEYCHELLES
+SL,"SIERRA LEONE"
+SG,SINGAPORE
+SK,SLOVAKIA
+SI,SLOVENIA
+SB,"SOLOMON ISLANDS"
+SO,SOMALIA
+ZA,"SOUTH AFRICA"
+GS,"SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS"
+ES,SPAIN
+LK,"SRI LANKA"
+SD,SUDAN
+SR,SURINAME
+SJ,"SVALBARD AND JAN MAYEN"
+SZ,SWAZILAND
+SE,SWEDEN
+CH,SWITZERLAND
+SY,"SYRIAN ARAB REPUBLIC"
+TW,"TAIWAN, PROVINCE OF CHINA"
+TJ,TAJIKISTAN
+TZ,"TANZANIA, UNITED REPUBLIC OF"
+TH,THAILAND
+TL,TIMOR-LESTE
+TG,TOGO
+TK,TOKELAU
+TO,TONGA
+TT,"TRINIDAD AND TOBAGO"
+TN,TUNISIA
+TR,TURKEY
+TM,TURKMENISTAN
+TC,"TURKS AND CAICOS ISLANDS"
+TV,TUVALU
+UG,UGANDA
+UA,UKRAINE
+AE,"UNITED ARAB EMIRATES"
+GB,"UNITED KINGDOM"
+US,"UNITED STATES"
+UM,"UNITED STATES MINOR OUTLYING ISLANDS"
+UY,URUGUAY
+UZ,UZBEKISTAN
+VU,VANUATU
+VE,VENEZUELA
+VN,"VIET NAM"
+VG,"VIRGIN ISLANDS, BRITISH"
+VI,"VIRGIN ISLANDS, U.S."
+WF,"WALLIS AND FUTUNA"
+EH,"WESTERN SAHARA"
+YE,YEMEN
+ZM,ZAMBIA
+ZW,ZIMBABWE
diff --git a/xorg-server/xkeyboard-config/docs/iso639.csv b/xorg-server/xkeyboard-config/docs/iso639.csv
index d582d8cc5..374f2104b 100644
--- a/xorg-server/xkeyboard-config/docs/iso639.csv
+++ b/xorg-server/xkeyboard-config/docs/iso639.csv
@@ -1,501 +1,501 @@
-Abkhazian,abkhaze,abk,ab
-Achinese,aceh,ace,
-Acoli,acoli,ach,
-Adangme,adangme,ada,
-"Adygei; Adyghe",adyghé,ady,
-"Adyghe; Adygei",adygh,ady,
-Afar,afar,aar,aa
-Afrihili,afrihili,afh,
-Afrikaans,afrikaans,afr,af
-"Afro-Asiatic (Other)","afro-asiatiques, autres langues",afa,
-Akan,akan,aka,ak
-Akkadian,akkadien,akk,
-Albanian,albanais,alb/sqi,sq
-Aleut,aléoute,ale,
-"Algonquian languages","algonquines, langues",alg,
-"Altaic (Other)","altaïques, autres langues",tut,
-Amharic,amharique,amh,am
-"Apache languages",apache,apa,
-Arabic,arabe,ara,ar
-Aragonese,aragonais,arg,an
-Aramaic,araméen,arc,
-Arapaho,arapaho,arp,
-Araucanian,araucan,arn,
-Arawak,arawak,arw,
-Armenian,arménien,arm/hye,hy
-"Artificial (Other)","artificielles, autres langues",art,
-Assamese,assamais,asm,as
-"Asturian; Bable","asturien; bable",ast,
-"Athapascan languages","athapascanes, langues",ath,
-"Australian languages","australiennes, langues",aus,
-"Austronesian (Other)","malayo-polynésiennes, autres langues",map,
-Avaric,avar,ava,av
-Avestan,avestique,ave,ae
-Awadhi,awadhi,awa,
-Aymara,aymara,aym,ay
-Azerbaijani,azéri,aze,az
-"Bable; Asturian","bable; asturien",ast,
-Balinese,balinais,ban,
-"Baltic (Other)","baltiques, autres langues",bat,
-Baluchi,baloutchi,bal,
-Bambara,bambara,bam,bm
-"Bamileke languages","bamilékés, langues",bai,
-Banda,banda,bad,
-"Bantu (Other)","bantoues, autres langues",bnt,
-Basa,basa,bas,
-Bashkir,bachkir,bak,ba
-Basque,basque,baq/eus,eu
-"Batak (Indonesia)","batak (Indonésie)",btk,
-Beja,bedja,bej,
-Belarusian,biélorusse,bel,be
-Bemba,bemba,bem,
-Bengali,bengali,ben,bn
-"Berber (Other)","berbères, autres langues",ber,
-Bhojpuri,bhojpuri,bho,
-Bihari,bihari,bih,bh
-Bikol,bikol,bik,
-"Bilin; Blin","bilen; blin",byn,
-Bini,bini,bin,
-Bislama,bichlamar,bis,bi
-"Blin; Bilin","blin; bilen",byn,
-"Bokmål, Norwegian; Norwegian Bokmål","bokmål, norvégien; bokmål norvégien",nob,nb
-Bosnian,bosniaque,bos,bs
-Braj,braj,bra,
-Breton,breton,bre,br
-Buginese,bugi,bug,
-Bulgarian,bulgare,bul,bg
-Buriat,bouriate,bua,
-Burmese,birman,bur/mya,my
-Caddo,caddo,cad,
-Carib,caribe,car,
-"Castilian; Spanish","castillan; espagnol",spa,es
-"Catalan; Valencian","catalan; valencien",cat,ca
-"Caucasian (Other)","caucasiennes, autres langues",cau,
-Cebuano,cebuano,ceb,
-"Celtic (Other)","celtiques, autres langues",cel,
-"Central American Indian (Other)","indiennes d'Amérique centrale, autres langues",cai,
-Chagatai,djaghataï,chg,
-"Chamic languages","chames, langues",cmc,
-Chamorro,chamorro,cha,ch
-Chechen,tchétchène,che,ce
-Cherokee,cherokee,chr,
-"Chewa; Chichewa; Nyanja","chewa, chichewa, nyanja",nya,ny
-Cheyenne,cheyenne,chy,
-Chibcha,chibcha,chb,
-"Chichewa; Chewa; Nyanja","chichewa; chewa; nyanja",nya,ny
-Chinese,chinois,chi/zho,zh
-"Chinook jargon","chinook, jargon",chn,
-Chipewyan,chipewyan,chp,
-Choctaw,choctaw,cho,
-"Chuang; Zhuang","chuang; zhuang",zha,za
-"Church Slavic; Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic","slavon d'église; vieux slave; slavon liturgique; vieux bulgare",chu,cu
-"Church Slavonic; Church Slavic; Old Slavonic; Old Bulgarian; Old Church Slavonic","slavon liturgique; slavon d'église; vieux slave; vieux bulgare",chu,cu
-Chuukese,chuuk,chk,
-Chuvash,tchouvache,chv,cv
-"Classical Nepal Bhasa; Classical Newari; Old Newari","newari classique",nwc,
-"Classical Newari; Old Newari; Classical Nepal Bhasa","newari classique",nwc,
-Coptic,copte,cop,
-Cornish,cornique,cor,kw
-Corsican,corse,cos,co
-Cree,cree,cre,cr
-Creek,muskogee,mus,
-"Creoles and pidgins (Other)","créoles et pidgins divers",crp,
-"Creoles and pidgins, English-based (Other)","créoles et pidgins anglais, autres",cpe,
-"Creoles and pidgins, French-based (Other)","créoles et pidgins français, autres",cpf,
-"Creoles and pidgins, Portuguese-based (Other)","créoles et pidgins portugais, autres",cpp,
-"Crimean Tatar; Crimean Turkish","tatar de Crimé",crh,
-"Crimean Turkish; Crimean Tatar","tatar de Crimé",crh,
-Croatian,croate,scr/hrv,hr
-"Cushitic (Other)","couchitiques, autres langues",cus,
-Czech,tchèque,cze/ces,cs
-Dakota,dakota,dak,
-Danish,danois,dan,da
-Dargwa,dargwa,dar,
-Dayak,dayak,day,
-Delaware,delaware,del,
-Dinka,dinka,din,
-Divehi,maldivien,div,dv
-Dogri,dogri,doi,
-Dogrib,dogrib,dgr,
-"Dravidian (Other)","dravidiennes, autres langues",dra,
-Duala,douala,dua,
-"Dutch; Flemish","néerlandais; flamand",dut/nld,nl
-"Dutch, Middle (ca. 1050-1350)","néerlandais moyen (ca. 1050-1350)",dum,
-Dyula,dioula,dyu,
-Dzongkha,dzongkha,dzo,dz
-Efik,efik,efi,
-"Egyptian (Ancient)",égyptien,egy,
-Ekajuk,ekajuk,eka,
-Elamite,élamite,elx,
-English,anglais,eng,en
-"English, Middle (1100-1500)","anglais moyen (1100-1500)",enm,
-"English, Old (ca.450-1100)","anglo-saxon (ca.450-1100)",ang,
-Erzya,erza,myv,
-Esperanto,espéranto,epo,eo
-Estonian,estonien,est,et
-Ewe,éwé,ewe,ee
-Ewondo,éwondo,ewo,
-Fang,fang,fan,
-Fanti,fanti,fat,
-Faroese,féroïen,fao,fo
-Fijian,fidjien,fij,fj
-Finnish,finnois,fin,fi
-"Finno-Ugrian (Other)","finno-ougriennes, autres langues",fiu,
-"Flemish; Dutch","flamand; néerlandais",dut/nld,nl
-Fon,fon,fon,
-French,français,fre/fra,fr
-"French, Middle (ca.1400-1600)","français moyen (1400-1600)",frm,
-"French, Old (842-ca.1400)","français ancien (842-ca.1400)",fro,
-Frisian,frison,fry,fy
-Friulian,frioulan,fur,
-Fulah,peul,ful,ff
-"Gaelic; Scottish Gaelic","gaélique; gaélique écossais",gla,gd
-Gallegan,galicien,glg,gl
-Ganda,ganda,lug,lg
-Gayo,gayo,gay,
-Gbaya,gbaya,gba,
-Geez,guèze,gez,
-Georgian,géorgien,geo/kat,ka
-German,allemand,ger/deu,de
-"German, Low; Saxon, Low; Low German; Low Saxon","allemand, bas; saxon, bas; bas allemand; bas saxon",nds,
-"German, Middle High (ca.1050-1500)","allemand, moyen haut (ca. 1050-1500)",gmh,
-"German, Old High (ca.750-1050)","allemand, vieux haut (ca. 750-1050)",goh,
-"Germanic (Other)","germaniques, autres langues",gem,
-"Gikuyu; Kikuyu",kikuyu,kik,ki
-Gilbertese,kiribati,gil,
-Gondi,gond,gon,
-Gorontalo,gorontalo,gor,
-Gothic,gothique,got,
-Grebo,grebo,grb,
-"Greek, Ancient (to 1453)","grec ancien (jusqu'à 1453)",grc,
-"Greek, Modern (1453-)","grec moderne (après 1453)",gre/ell,el
-"Greenlandic; Kalaallisut",groenlandais,kal,kl
-Guarani,guarani,grn,gn
-Gujarati,goudjrati,guj,gu
-Gwich´in,gwich´in,gwi,
-Haida,haida,hai,
-"Haitian; Haitian Creole","haïtien; créole haïtien",hat,ht
-"Haitian Creole; Haitian","créole haïtien; haïtien",hat,ht
-Hausa,haoussa,hau,ha
-Hawaiian,hawaïen,haw,
-Hebrew,hébreu,heb,he
-Herero,herero,her,hz
-Hiligaynon,hiligaynon,hil,
-Himachali,himachali,him,
-Hindi,hindi,hin,hi
-"Hiri Motu","hiri motu",hmo,ho
-Hittite,hittite,hit,
-Hmong,hmong,hmn,
-Hungarian,hongrois,hun,hu
-Hupa,hupa,hup,
-Icelandic,islandais,ice/isl,is
-Ido,ido,ido,io
-Igbo,igbo,ibo,ig
-Ijo,ijo,ijo,
-Iloko,ilocano,ilo,
-"Inari Sami","sami d'Inari",smn,
-"Indic (Other)","indo-aryennes, autres langues",inc,
-"Indo-European (Other)","indo-européennes, autres langues",ine,
-Indonesian,indonésien,ind,id
-Ingush,ingouche,inh,
-"Interlingua (International Auxiliary Language Association)","interlingua (langue auxiliaire internationale)",ina,ia
-Interlingue,interlingue,ile,ie
-Inuktitut,inuktitut,iku,iu
-Inupiaq,inupiaq,ipk,ik
-"Iranian (Other)","iraniennes, autres langues",ira,
-Irish,irlandais,gle,ga
-"Irish, Middle (900-1200)","irlandais moyen (900-1200)",mga,
-"Irish, Old (to 900)","irlandais ancien (jusqu'à 900)",sga,
-"Iroquoian languages","iroquoises, langues (famille)",iro,
-Italian,italien,ita,it
-Japanese,japonais,jpn,ja
-Javanese,javanais,jav,jv
-Judeo-Arabic,judéo-arabe,jrb,
-Judeo-Persian,judéo-persan,jpr,
-Kabyle,kabyle,kab,
-Kachin,kachin,kac,
-"Kalaallisut; Greenlandic",groenlandais,kal,kl
-Kalmyk,kalmouk,xal,
-Kamba,kamba,kam,
-Kannada,kannada,kan,kn
-Kanuri,kanouri,kau,kr
-Karachay-Balkar,"karatchaï balkar",krc,
-Kara-Kalpak,karakalpak,kaa,
-Karen,karen,kar,
-Kashmiri,kashmiri,kas,ks
-Kashubian,kachoube,csb,
-Kawi,kawi,kaw,
-Kazakh,kazakh,kaz,kk
-Khasi,khasi,kha,
-Khmer,khmer,khm,km
-"Khoisan (Other)","khoisan, autres langues",khi,
-Khotanese,khotanais,kho,
-"Kikuyu; Gikuyu",kikuyu,kik,ki
-Kimbundu,kimbundu,kmb,
-Kinyarwanda,rwanda,kin,rw
-Kirghiz,kirghize,kir,ky
-"Klingon; tlhlngan-Hol",klingon,tlh,
-Komi,komi,kom,kv
-Kongo,kongo,kon,kg
-Konkani,konkani,kok,
-Korean,coréen,kor,ko
-Kosraean,kosrae,kos,
-Kpelle,kpellé,kpe,
-Kru,krou,kro,
-"Kuanyama; Kwanyama","kuanyama; kwanyama",kua,kj
-Kumyk,koumyk,kum,
-Kurdish,kurde,kur,ku
-Kurukh,kurukh,kru,
-Kutenai,kutenai,kut,
-"Kwanyama, Kuanyama","kwanyama; kuanyama",kua,kj
-Ladino,judéo-espagnol,lad,
-Lahnda,lahnda,lah,
-Lamba,lamba,lam,
-Lao,lao,lao,lo
-Latin,latin,lat,la
-Latvian,letton,lav,lv
-"Letzeburgesch; Luxembourgish",luxembourgeois,ltz,lb
-Lezghian,lezghien,lez,
-"Limburgan; Limburger; Limburgish",limbourgeois,lim,li
-"Limburger; Limburgan; Limburgish;",limbourgeois,lim,li
-"Limburgish; Limburger; Limburgan",limbourgeois,lim,li
-Lingala,lingala,lin,ln
-Lithuanian,lituanien,lit,lt
-Lojban,lojban,jbo,
-"Low German; Low Saxon; German, Low; Saxon, Low","bas allemand; bas saxon; allemand, bas; saxon, bas",nds,
-"Low Saxon; Low German; Saxon, Low; German, Low","bas saxon; bas allemand; saxon, bas; allemand, bas",nds,
-"Lower Sorbian",bas-sorabe,dsb,
-Lozi,lozi,loz,
-Luba-Katanga,luba-katanga,lub,lu
-Luba-Lulua,luba-lulua,lua,
-Luiseno,luiseno,lui,
-"Lule Sami","sami de Lule",smj,
-Lunda,lunda,lun,
-"Luo (Kenya and Tanzania)","luo (Kenya et Tanzanie)",luo,
-Lushai,lushai,lus,
-"Luxembourgish; Letzeburgesch",luxembourgeois,ltz,lb
-Macedonian,macédonien,mac/mkd,mk
-Madurese,madourais,mad,
-Magahi,magahi,mag,
-Maithili,maithili,mai,
-Makasar,makassar,mak,
-Malagasy,malgache,mlg,mg
-Malay,malais,may/msa,ms
-Malayalam,malayalam,mal,ml
-Maltese,maltais,mlt,mt
-Manchu,mandchou,mnc,
-Mandar,mandar,mdr,
-Mandingo,mandingue,man,
-Manipuri,manipuri,mni,
-"Manobo languages","manobo, langues",mno,
-Manx,"manx; mannois",glv,gv
-Maori,maori,mao/mri,mi
-Marathi,marathe,mar,mr
-Mari,mari,chm,
-Marshallese,marshall,mah,mh
-Marwari,marvari,mwr,
-Masai,massaï,mas,
-"Mayan languages","maya, langues",myn,
-Mende,mendé,men,
-Micmac,micmac,mic,
-Minangkabau,minangkabau,min,
-"Miscellaneous languages","diverses, langues",mis,
-Mohawk,mohawk,moh,
-Moksha,moksa,mdf,
-Moldavian,moldave,mol,mo
-"Mon-Khmer (Other)","môn-khmer, autres langues",mkh,
-Mongo,mongo,lol,
-Mongolian,mongol,mon,mn
-Mossi,moré,mos,
-"Multiple languages",multilingue,mul,
-"Munda languages","mounda, langues",mun,
-Nahuatl,nahuatl,nah,
-Nauru,nauruan,nau,na
-"Navaho, Navajo",navaho,nav,nv
-"Navajo; Navaho",navaho,nav,nv
-"Ndebele, North","ndébélé du Nord",nde,nd
-"Ndebele, South","ndébélé du Sud",nbl,nr
-Ndonga,ndonga,ndo,ng
-Neapolitan,napolitain,nap,
-"Nepal Bhasa ; Newari","nepal bhasa ; newari",new,
-Nepali,népalais,nep,ne
-"Newari; Nepal Bhasa","newari; nepal bhasa",new,
-Nias,nias,nia,
-"Niger-Kordofanian (Other)","nigéro-congolaises, autres langues",nic,
-"Nilo-Saharan (Other)","nilo-sahariennes, autres langues",ssa,
-Niuean,niué,niu,
-Nogai,"nogaï; nogay",nog,
-"Norse, Old","norrois, vieux",non,
-"North American Indian (Other)","indiennes d'Amérique du Nord, autres langues",nai,
-"Northern Sami","sami du Nord",sme,se
-"North Ndebele","ndébélé du Nord",nde,nd
-Norwegian,norvégien,nor,no
-"Norwegian Bokmål; Bokmål, Norwegian","norvégien bokmål; bokmål, norvégien",nob,nb
-"Norwegian Nynorsk; Nynorsk, Norwegian","norvégien nynorsk; nynorsk, norvégien",nno,nn
-"Nubian languages","nubiennes, langues",nub,
-Nyamwezi,nyamwezi,nym,
-"Nyanja; Chichewa; Chewa","nyanja; chichewa; chewa",nya,ny
-Nyankole,nyankolé,nyn,
-"Nynorsk, Norwegian; Norwegian Nynorsk","nynorsk, norvégien; norvégien nynorsk",nno,nn
-Nyoro,nyoro,nyo,
-Nzima,nzema,nzi,
-"Occitan (post 1500); Provençal","occitan (après 1500); provençal",oci,oc
-Ojibwa,ojibwa,oji,oj
-"Old Bulgarian; Old Slavonic; Church Slavonic; Church Slavic; Old Church Slavonic","vieux bulgare; vieux slave; slavon liturgique; slavon d'église",chu,cu
-"Old Church Slavonic; Old Slavonic; Church Slavonic; Old Bulgarian; Church Slavic","vieux slave; slavon liturgique; vieux bulgare; slavon d'église",chu,cu
-"Old Newari; Classical Newari; Classical Nepal Bhasa","newari classique",nwc,
-"Old Slavonic; Church Slavonic; Old Bulgarian; Church Slavic; Old Church Slavonic","vieux slave; slavon liturgique; vieux bulgare; slavon d'église",chu,cu
-Oriya,oriya,ori,or
-Oromo,galla,orm,om
-Osage,osage,osa,
-"Ossetian; Ossetic",ossète,oss,os
-"Ossetic; Ossetian",ossète,oss,os
-"Otomian languages","otomangue, langues",oto,
-Pahlavi,pahlavi,pal,
-Palauan,palau,pau,
-Pali,pali,pli,pi
-Pampanga,pampangan,pam,
-Pangasinan,pangasinan,pag,
-"Panjabi; Punjabi",pendjabi,pan,pa
-Papiamento,papiamento,pap,
-"Papuan (Other)","papoues, autres langues",paa,
-Persian,persan,per/fas,fa
-"Persian, Old (ca.600-400 B.C.)","perse, vieux (ca. 600-400 av. J.-C.)",peo,
-"Philippine (Other)","philippines, autres langues",phi,
-Phoenician,phénicien,phn,
-Pohnpeian,pohnpei,pon,
-Polish,polonais,pol,pl
-Portuguese,portugais,por,pt
-"Prakrit languages",prâkrit,pra,
-"Provençal; Occitan (post 1500)","provençal; occitan (après 1500)",oci,oc
-"Provençal, Old (to 1500)","provençal ancien (jusqu'à 1500)",pro,
-"Punjabi; Panjabi",pendjabi,pan,pa
-Pushto,pachto,pus,ps
-Rajasthani,rajasthani,raj,
-Rapanui,rapanui,rap,
-Rarotongan,rarotonga,rar,
-"Reserved for local use","réservée à l'usage local",qaa-qtz,
-"Romance (Other)","romanes, autres langues",roa,
-Romanian,roumain,rum/ron,ro
-Romany,tsigane,rom,
-Rundi,rundi,run,rn
-Russian,russe,rus,ru
-"Salishan languages","salish, langues",sal,
-"Samaritan Aramaic",samaritain,sam,
-"Sami languages (Other)","sami, autres langues",smi,
-Samoan,samoan,smo,sm
-Sandawe,sandawe,sad,
-Sango,sango,sag,sg
-Sanskrit,sanskrit,san,sa
-Santali,santal,sat,
-Sardinian,sarde,srd,sc
-Sasak,sasak,sas,
-"Saxon, Low; German, Low; Low Saxon; Low German","saxon, bas; allemand, bas; bas saxon; bas allemand",nds,
-Scots,écossais,sco,
-"Scottish Gaelic; Gaelic","gaélique écossais; gaélique",gla,gd
-Selkup,selkoupe,sel,
-"Semitic (Other)","sémitiques, autres langues",sem,
-Serbian,serbe,scc/srp,sr
-Serer,sérère,srr,
-Shan,chan,shn,
-Shona,shona,sna,sn
-"Sichuan Yi","yi de Sichuan",iii,ii
-Sidamo,sidamo,sid,
-"Sign languages","langues des signes",sgn,
-Siksika,blackfoot,bla,
-Sindhi,sindhi,snd,sd
-Sinhalese,singhalais,sin,si
-"Sino-Tibetan (Other)","sino-tibétaines, autres langues",sit,
-"Siouan languages","sioux, langues",sio,
-"Skolt Sami","sami skolt",sms,
-"Slave (Athapascan)","esclave (athapascan)",den,
-"Slavic (Other)","slaves, autres langues",sla,
-Slovak,slovaque,slo/slk,sk
-Slovenian,slovène,slv,sl
-Sogdian,sogdien,sog,
-Somali,somali,som,so
-Songhai,songhai,son,
-Soninke,soninké,snk,
-"Sorbian languages","sorabes, langues",wen,
-"Sotho, Northern","sotho du Nord",nso,
-"Sotho, Southern","sotho du Sud",sot,st
-"South American Indian (Other)","indiennes d'Amérique du Sud, autres langues",sai,
-"Southern Sami","sami du Sud",sma,
-"South Ndebele","ndébélé du Sud",nbl,nr
-"Spanish; Castilian","espagnol; castillan",spa,es
-Sukuma,sukuma,suk,
-Sumerian,sumérien,sux,
-Sundanese,soundanais,sun,su
-Susu,soussou,sus,
-Swahili,swahili,swa,sw
-Swati,swati,ssw,ss
-Swedish,suédois,swe,sv
-Syriac,syriaque,syr,
-Tagalog,tagalog,tgl,tl
-Tahitian,tahitien,tah,ty
-"Tai (Other)","thaïes, autres langues",tai,
-Tajik,tadjik,tgk,tg
-Tamashek,tamacheq,tmh,
-Tamil,tamoul,tam,ta
-Tatar,tatar,tat,tt
-Telugu,télougou,tel,te
-Tereno,tereno,ter,
-Tetum,tetum,tet,
-Thai,thaï,tha,th
-Tibetan,tibétain,tib/bod,bo
-Tigre,tigré,tig,
-Tigrinya,tigrigna,tir,ti
-Timne,temne,tem,
-Tiv,tiv,tiv,
-"tlhlngan-Hol; Klingon",klingon,tlh,
-Tlingit,tlingit,tli,
-"Tok Pisin","tok pisin",tpi,
-Tokelau,tokelau,tkl,
-"Tonga (Nyasa)","tonga (Nyasa)",tog,
-"Tonga (Tonga Islands)","tongan (ÃŽles Tonga)",ton,to
-Tsimshian,tsimshian,tsi,
-Tsonga,tsonga,tso,ts
-Tswana,tswana,tsn,tn
-Tumbuka,tumbuka,tum,
-"Tupi languages","tupi, langues",tup,
-Turkish,turc,tur,tr
-"Turkish, Ottoman (1500-1928)","turc ottoman (1500-1928)",ota,
-Turkmen,turkmène,tuk,tk
-Tuvalu,tuvalu,tvl,
-Tuvinian,touva,tyv,
-Twi,twi,twi,tw
-Udmurt,oudmourte,udm,
-Ugaritic,ougaritique,uga,
-Uighur,ouïgour,uig,ug
-Ukrainian,ukrainien,ukr,uk
-Umbundu,umbundu,umb,
-Undetermined,indéterminée,und,
-"Upper Sorbian",haut-sorabe,hsb,
-Urdu,ourdou,urd,ur
-Uzbek,ouszbek,uzb,uz
-Vai,vaï,vai,
-"Valencian; Catalan","valencien; catalan",cat,ca
-Venda,venda,ven,ve
-Vietnamese,vietnamien,vie,vi
-Volapük,volapük,vol,vo
-Votic,vote,vot,
-"Wakashan languages","wakashennes, langues",wak,
-Walamo,walamo,wal,
-Walloon,wallon,wln,wa
-Waray,waray,war,
-Washo,washo,was,
-Welsh,gallois,wel/cym,cy
-Wolof,wolof,wol,wo
-Xhosa,xhosa,xho,xh
-Yakut,iakoute,sah,
-Yao,yao,yao,
-Yapese,yapois,yap,
-Yiddish,yiddish,yid,yi
-Yoruba,yoruba,yor,yo
-"Yupik languages","yupik, langues",ypk,
-Zande,zandé,znd,
-Zapotec,zapotèque,zap,
-Zenaga,zenaga,zen,
-"Zhuang; Chuang","zhuang; chuang",zha,za
-Zulu,zoulou,zul,zu
-Zuni,zuni,zun,
+Abkhazian,abkhaze,abk,ab
+Achinese,aceh,ace,
+Acoli,acoli,ach,
+Adangme,adangme,ada,
+"Adygei; Adyghe",adyghé,ady,
+"Adyghe; Adygei",adygh,ady,
+Afar,afar,aar,aa
+Afrihili,afrihili,afh,
+Afrikaans,afrikaans,afr,af
+"Afro-Asiatic (Other)","afro-asiatiques, autres langues",afa,
+Akan,akan,aka,ak
+Akkadian,akkadien,akk,
+Albanian,albanais,alb/sqi,sq
+Aleut,aléoute,ale,
+"Algonquian languages","algonquines, langues",alg,
+"Altaic (Other)","altaïques, autres langues",tut,
+Amharic,amharique,amh,am
+"Apache languages",apache,apa,
+Arabic,arabe,ara,ar
+Aragonese,aragonais,arg,an
+Aramaic,araméen,arc,
+Arapaho,arapaho,arp,
+Araucanian,araucan,arn,
+Arawak,arawak,arw,
+Armenian,arménien,arm/hye,hy
+"Artificial (Other)","artificielles, autres langues",art,
+Assamese,assamais,asm,as
+"Asturian; Bable","asturien; bable",ast,
+"Athapascan languages","athapascanes, langues",ath,
+"Australian languages","australiennes, langues",aus,
+"Austronesian (Other)","malayo-polynésiennes, autres langues",map,
+Avaric,avar,ava,av
+Avestan,avestique,ave,ae
+Awadhi,awadhi,awa,
+Aymara,aymara,aym,ay
+Azerbaijani,azéri,aze,az
+"Bable; Asturian","bable; asturien",ast,
+Balinese,balinais,ban,
+"Baltic (Other)","baltiques, autres langues",bat,
+Baluchi,baloutchi,bal,
+Bambara,bambara,bam,bm
+"Bamileke languages","bamilékés, langues",bai,
+Banda,banda,bad,
+"Bantu (Other)","bantoues, autres langues",bnt,
+Basa,basa,bas,
+Bashkir,bachkir,bak,ba
+Basque,basque,baq/eus,eu
+"Batak (Indonesia)","batak (Indonésie)",btk,
+Beja,bedja,bej,
+Belarusian,biélorusse,bel,be
+Bemba,bemba,bem,
+Bengali,bengali,ben,bn
+"Berber (Other)","berbères, autres langues",ber,
+Bhojpuri,bhojpuri,bho,
+Bihari,bihari,bih,bh
+Bikol,bikol,bik,
+"Bilin; Blin","bilen; blin",byn,
+Bini,bini,bin,
+Bislama,bichlamar,bis,bi
+"Blin; Bilin","blin; bilen",byn,
+"Bokmål, Norwegian; Norwegian Bokmål","bokmål, norvégien; bokmål norvégien",nob,nb
+Bosnian,bosniaque,bos,bs
+Braj,braj,bra,
+Breton,breton,bre,br
+Buginese,bugi,bug,
+Bulgarian,bulgare,bul,bg
+Buriat,bouriate,bua,
+Burmese,birman,bur/mya,my
+Caddo,caddo,cad,
+Carib,caribe,car,
+"Castilian; Spanish","castillan; espagnol",spa,es
+"Catalan; Valencian","catalan; valencien",cat,ca
+"Caucasian (Other)","caucasiennes, autres langues",cau,
+Cebuano,cebuano,ceb,
+"Celtic (Other)","celtiques, autres langues",cel,
+"Central American Indian (Other)","indiennes d'Amérique centrale, autres langues",cai,
+Chagatai,djaghataï,chg,
+"Chamic languages","chames, langues",cmc,
+Chamorro,chamorro,cha,ch
+Chechen,tchétchène,che,ce
+Cherokee,cherokee,chr,
+"Chewa; Chichewa; Nyanja","chewa, chichewa, nyanja",nya,ny
+Cheyenne,cheyenne,chy,
+Chibcha,chibcha,chb,
+"Chichewa; Chewa; Nyanja","chichewa; chewa; nyanja",nya,ny
+Chinese,chinois,chi/zho,zh
+"Chinook jargon","chinook, jargon",chn,
+Chipewyan,chipewyan,chp,
+Choctaw,choctaw,cho,
+"Chuang; Zhuang","chuang; zhuang",zha,za
+"Church Slavic; Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic","slavon d'église; vieux slave; slavon liturgique; vieux bulgare",chu,cu
+"Church Slavonic; Church Slavic; Old Slavonic; Old Bulgarian; Old Church Slavonic","slavon liturgique; slavon d'église; vieux slave; vieux bulgare",chu,cu
+Chuukese,chuuk,chk,
+Chuvash,tchouvache,chv,cv
+"Classical Nepal Bhasa; Classical Newari; Old Newari","newari classique",nwc,
+"Classical Newari; Old Newari; Classical Nepal Bhasa","newari classique",nwc,
+Coptic,copte,cop,
+Cornish,cornique,cor,kw
+Corsican,corse,cos,co
+Cree,cree,cre,cr
+Creek,muskogee,mus,
+"Creoles and pidgins (Other)","créoles et pidgins divers",crp,
+"Creoles and pidgins, English-based (Other)","créoles et pidgins anglais, autres",cpe,
+"Creoles and pidgins, French-based (Other)","créoles et pidgins français, autres",cpf,
+"Creoles and pidgins, Portuguese-based (Other)","créoles et pidgins portugais, autres",cpp,
+"Crimean Tatar; Crimean Turkish","tatar de Crimé",crh,
+"Crimean Turkish; Crimean Tatar","tatar de Crimé",crh,
+Croatian,croate,scr/hrv,hr
+"Cushitic (Other)","couchitiques, autres langues",cus,
+Czech,tchèque,cze/ces,cs
+Dakota,dakota,dak,
+Danish,danois,dan,da
+Dargwa,dargwa,dar,
+Dayak,dayak,day,
+Delaware,delaware,del,
+Dinka,dinka,din,
+Divehi,maldivien,div,dv
+Dogri,dogri,doi,
+Dogrib,dogrib,dgr,
+"Dravidian (Other)","dravidiennes, autres langues",dra,
+Duala,douala,dua,
+"Dutch; Flemish","néerlandais; flamand",dut/nld,nl
+"Dutch, Middle (ca. 1050-1350)","néerlandais moyen (ca. 1050-1350)",dum,
+Dyula,dioula,dyu,
+Dzongkha,dzongkha,dzo,dz
+Efik,efik,efi,
+"Egyptian (Ancient)",égyptien,egy,
+Ekajuk,ekajuk,eka,
+Elamite,élamite,elx,
+English,anglais,eng,en
+"English, Middle (1100-1500)","anglais moyen (1100-1500)",enm,
+"English, Old (ca.450-1100)","anglo-saxon (ca.450-1100)",ang,
+Erzya,erza,myv,
+Esperanto,espéranto,epo,eo
+Estonian,estonien,est,et
+Ewe,éwé,ewe,ee
+Ewondo,éwondo,ewo,
+Fang,fang,fan,
+Fanti,fanti,fat,
+Faroese,féroïen,fao,fo
+Fijian,fidjien,fij,fj
+Finnish,finnois,fin,fi
+"Finno-Ugrian (Other)","finno-ougriennes, autres langues",fiu,
+"Flemish; Dutch","flamand; néerlandais",dut/nld,nl
+Fon,fon,fon,
+French,français,fre/fra,fr
+"French, Middle (ca.1400-1600)","français moyen (1400-1600)",frm,
+"French, Old (842-ca.1400)","français ancien (842-ca.1400)",fro,
+Frisian,frison,fry,fy
+Friulian,frioulan,fur,
+Fulah,peul,ful,ff
+"Gaelic; Scottish Gaelic","gaélique; gaélique écossais",gla,gd
+Gallegan,galicien,glg,gl
+Ganda,ganda,lug,lg
+Gayo,gayo,gay,
+Gbaya,gbaya,gba,
+Geez,guèze,gez,
+Georgian,géorgien,geo/kat,ka
+German,allemand,ger/deu,de
+"German, Low; Saxon, Low; Low German; Low Saxon","allemand, bas; saxon, bas; bas allemand; bas saxon",nds,
+"German, Middle High (ca.1050-1500)","allemand, moyen haut (ca. 1050-1500)",gmh,
+"German, Old High (ca.750-1050)","allemand, vieux haut (ca. 750-1050)",goh,
+"Germanic (Other)","germaniques, autres langues",gem,
+"Gikuyu; Kikuyu",kikuyu,kik,ki
+Gilbertese,kiribati,gil,
+Gondi,gond,gon,
+Gorontalo,gorontalo,gor,
+Gothic,gothique,got,
+Grebo,grebo,grb,
+"Greek, Ancient (to 1453)","grec ancien (jusqu'à 1453)",grc,
+"Greek, Modern (1453-)","grec moderne (après 1453)",gre/ell,el
+"Greenlandic; Kalaallisut",groenlandais,kal,kl
+Guarani,guarani,grn,gn
+Gujarati,goudjrati,guj,gu
+Gwich´in,gwich´in,gwi,
+Haida,haida,hai,
+"Haitian; Haitian Creole","haïtien; créole haïtien",hat,ht
+"Haitian Creole; Haitian","créole haïtien; haïtien",hat,ht
+Hausa,haoussa,hau,ha
+Hawaiian,hawaïen,haw,
+Hebrew,hébreu,heb,he
+Herero,herero,her,hz
+Hiligaynon,hiligaynon,hil,
+Himachali,himachali,him,
+Hindi,hindi,hin,hi
+"Hiri Motu","hiri motu",hmo,ho
+Hittite,hittite,hit,
+Hmong,hmong,hmn,
+Hungarian,hongrois,hun,hu
+Hupa,hupa,hup,
+Icelandic,islandais,ice/isl,is
+Ido,ido,ido,io
+Igbo,igbo,ibo,ig
+Ijo,ijo,ijo,
+Iloko,ilocano,ilo,
+"Inari Sami","sami d'Inari",smn,
+"Indic (Other)","indo-aryennes, autres langues",inc,
+"Indo-European (Other)","indo-européennes, autres langues",ine,
+Indonesian,indonésien,ind,id
+Ingush,ingouche,inh,
+"Interlingua (International Auxiliary Language Association)","interlingua (langue auxiliaire internationale)",ina,ia
+Interlingue,interlingue,ile,ie
+Inuktitut,inuktitut,iku,iu
+Inupiaq,inupiaq,ipk,ik
+"Iranian (Other)","iraniennes, autres langues",ira,
+Irish,irlandais,gle,ga
+"Irish, Middle (900-1200)","irlandais moyen (900-1200)",mga,
+"Irish, Old (to 900)","irlandais ancien (jusqu'à 900)",sga,
+"Iroquoian languages","iroquoises, langues (famille)",iro,
+Italian,italien,ita,it
+Japanese,japonais,jpn,ja
+Javanese,javanais,jav,jv
+Judeo-Arabic,judéo-arabe,jrb,
+Judeo-Persian,judéo-persan,jpr,
+Kabyle,kabyle,kab,
+Kachin,kachin,kac,
+"Kalaallisut; Greenlandic",groenlandais,kal,kl
+Kalmyk,kalmouk,xal,
+Kamba,kamba,kam,
+Kannada,kannada,kan,kn
+Kanuri,kanouri,kau,kr
+Karachay-Balkar,"karatchaï balkar",krc,
+Kara-Kalpak,karakalpak,kaa,
+Karen,karen,kar,
+Kashmiri,kashmiri,kas,ks
+Kashubian,kachoube,csb,
+Kawi,kawi,kaw,
+Kazakh,kazakh,kaz,kk
+Khasi,khasi,kha,
+Khmer,khmer,khm,km
+"Khoisan (Other)","khoisan, autres langues",khi,
+Khotanese,khotanais,kho,
+"Kikuyu; Gikuyu",kikuyu,kik,ki
+Kimbundu,kimbundu,kmb,
+Kinyarwanda,rwanda,kin,rw
+Kirghiz,kirghize,kir,ky
+"Klingon; tlhlngan-Hol",klingon,tlh,
+Komi,komi,kom,kv
+Kongo,kongo,kon,kg
+Konkani,konkani,kok,
+Korean,coréen,kor,ko
+Kosraean,kosrae,kos,
+Kpelle,kpellé,kpe,
+Kru,krou,kro,
+"Kuanyama; Kwanyama","kuanyama; kwanyama",kua,kj
+Kumyk,koumyk,kum,
+Kurdish,kurde,kur,ku
+Kurukh,kurukh,kru,
+Kutenai,kutenai,kut,
+"Kwanyama, Kuanyama","kwanyama; kuanyama",kua,kj
+Ladino,judéo-espagnol,lad,
+Lahnda,lahnda,lah,
+Lamba,lamba,lam,
+Lao,lao,lao,lo
+Latin,latin,lat,la
+Latvian,letton,lav,lv
+"Letzeburgesch; Luxembourgish",luxembourgeois,ltz,lb
+Lezghian,lezghien,lez,
+"Limburgan; Limburger; Limburgish",limbourgeois,lim,li
+"Limburger; Limburgan; Limburgish;",limbourgeois,lim,li
+"Limburgish; Limburger; Limburgan",limbourgeois,lim,li
+Lingala,lingala,lin,ln
+Lithuanian,lituanien,lit,lt
+Lojban,lojban,jbo,
+"Low German; Low Saxon; German, Low; Saxon, Low","bas allemand; bas saxon; allemand, bas; saxon, bas",nds,
+"Low Saxon; Low German; Saxon, Low; German, Low","bas saxon; bas allemand; saxon, bas; allemand, bas",nds,
+"Lower Sorbian",bas-sorabe,dsb,
+Lozi,lozi,loz,
+Luba-Katanga,luba-katanga,lub,lu
+Luba-Lulua,luba-lulua,lua,
+Luiseno,luiseno,lui,
+"Lule Sami","sami de Lule",smj,
+Lunda,lunda,lun,
+"Luo (Kenya and Tanzania)","luo (Kenya et Tanzanie)",luo,
+Lushai,lushai,lus,
+"Luxembourgish; Letzeburgesch",luxembourgeois,ltz,lb
+Macedonian,macédonien,mac/mkd,mk
+Madurese,madourais,mad,
+Magahi,magahi,mag,
+Maithili,maithili,mai,
+Makasar,makassar,mak,
+Malagasy,malgache,mlg,mg
+Malay,malais,may/msa,ms
+Malayalam,malayalam,mal,ml
+Maltese,maltais,mlt,mt
+Manchu,mandchou,mnc,
+Mandar,mandar,mdr,
+Mandingo,mandingue,man,
+Manipuri,manipuri,mni,
+"Manobo languages","manobo, langues",mno,
+Manx,"manx; mannois",glv,gv
+Maori,maori,mao/mri,mi
+Marathi,marathe,mar,mr
+Mari,mari,chm,
+Marshallese,marshall,mah,mh
+Marwari,marvari,mwr,
+Masai,massaï,mas,
+"Mayan languages","maya, langues",myn,
+Mende,mendé,men,
+Micmac,micmac,mic,
+Minangkabau,minangkabau,min,
+"Miscellaneous languages","diverses, langues",mis,
+Mohawk,mohawk,moh,
+Moksha,moksa,mdf,
+Moldavian,moldave,mol,mo
+"Mon-Khmer (Other)","môn-khmer, autres langues",mkh,
+Mongo,mongo,lol,
+Mongolian,mongol,mon,mn
+Mossi,moré,mos,
+"Multiple languages",multilingue,mul,
+"Munda languages","mounda, langues",mun,
+Nahuatl,nahuatl,nah,
+Nauru,nauruan,nau,na
+"Navaho, Navajo",navaho,nav,nv
+"Navajo; Navaho",navaho,nav,nv
+"Ndebele, North","ndébélé du Nord",nde,nd
+"Ndebele, South","ndébélé du Sud",nbl,nr
+Ndonga,ndonga,ndo,ng
+Neapolitan,napolitain,nap,
+"Nepal Bhasa ; Newari","nepal bhasa ; newari",new,
+Nepali,népalais,nep,ne
+"Newari; Nepal Bhasa","newari; nepal bhasa",new,
+Nias,nias,nia,
+"Niger-Kordofanian (Other)","nigéro-congolaises, autres langues",nic,
+"Nilo-Saharan (Other)","nilo-sahariennes, autres langues",ssa,
+Niuean,niué,niu,
+Nogai,"nogaï; nogay",nog,
+"Norse, Old","norrois, vieux",non,
+"North American Indian (Other)","indiennes d'Amérique du Nord, autres langues",nai,
+"Northern Sami","sami du Nord",sme,se
+"North Ndebele","ndébélé du Nord",nde,nd
+Norwegian,norvégien,nor,no
+"Norwegian Bokmål; Bokmål, Norwegian","norvégien bokmål; bokmål, norvégien",nob,nb
+"Norwegian Nynorsk; Nynorsk, Norwegian","norvégien nynorsk; nynorsk, norvégien",nno,nn
+"Nubian languages","nubiennes, langues",nub,
+Nyamwezi,nyamwezi,nym,
+"Nyanja; Chichewa; Chewa","nyanja; chichewa; chewa",nya,ny
+Nyankole,nyankolé,nyn,
+"Nynorsk, Norwegian; Norwegian Nynorsk","nynorsk, norvégien; norvégien nynorsk",nno,nn
+Nyoro,nyoro,nyo,
+Nzima,nzema,nzi,
+"Occitan (post 1500); Provençal","occitan (après 1500); provençal",oci,oc
+Ojibwa,ojibwa,oji,oj
+"Old Bulgarian; Old Slavonic; Church Slavonic; Church Slavic; Old Church Slavonic","vieux bulgare; vieux slave; slavon liturgique; slavon d'église",chu,cu
+"Old Church Slavonic; Old Slavonic; Church Slavonic; Old Bulgarian; Church Slavic","vieux slave; slavon liturgique; vieux bulgare; slavon d'église",chu,cu
+"Old Newari; Classical Newari; Classical Nepal Bhasa","newari classique",nwc,
+"Old Slavonic; Church Slavonic; Old Bulgarian; Church Slavic; Old Church Slavonic","vieux slave; slavon liturgique; vieux bulgare; slavon d'église",chu,cu
+Oriya,oriya,ori,or
+Oromo,galla,orm,om
+Osage,osage,osa,
+"Ossetian; Ossetic",ossète,oss,os
+"Ossetic; Ossetian",ossète,oss,os
+"Otomian languages","otomangue, langues",oto,
+Pahlavi,pahlavi,pal,
+Palauan,palau,pau,
+Pali,pali,pli,pi
+Pampanga,pampangan,pam,
+Pangasinan,pangasinan,pag,
+"Panjabi; Punjabi",pendjabi,pan,pa
+Papiamento,papiamento,pap,
+"Papuan (Other)","papoues, autres langues",paa,
+Persian,persan,per/fas,fa
+"Persian, Old (ca.600-400 B.C.)","perse, vieux (ca. 600-400 av. J.-C.)",peo,
+"Philippine (Other)","philippines, autres langues",phi,
+Phoenician,phénicien,phn,
+Pohnpeian,pohnpei,pon,
+Polish,polonais,pol,pl
+Portuguese,portugais,por,pt
+"Prakrit languages",prâkrit,pra,
+"Provençal; Occitan (post 1500)","provençal; occitan (après 1500)",oci,oc
+"Provençal, Old (to 1500)","provençal ancien (jusqu'à 1500)",pro,
+"Punjabi; Panjabi",pendjabi,pan,pa
+Pushto,pachto,pus,ps
+Rajasthani,rajasthani,raj,
+Rapanui,rapanui,rap,
+Rarotongan,rarotonga,rar,
+"Reserved for local use","réservée à l'usage local",qaa-qtz,
+"Romance (Other)","romanes, autres langues",roa,
+Romanian,roumain,rum/ron,ro
+Romany,tsigane,rom,
+Rundi,rundi,run,rn
+Russian,russe,rus,ru
+"Salishan languages","salish, langues",sal,
+"Samaritan Aramaic",samaritain,sam,
+"Sami languages (Other)","sami, autres langues",smi,
+Samoan,samoan,smo,sm
+Sandawe,sandawe,sad,
+Sango,sango,sag,sg
+Sanskrit,sanskrit,san,sa
+Santali,santal,sat,
+Sardinian,sarde,srd,sc
+Sasak,sasak,sas,
+"Saxon, Low; German, Low; Low Saxon; Low German","saxon, bas; allemand, bas; bas saxon; bas allemand",nds,
+Scots,écossais,sco,
+"Scottish Gaelic; Gaelic","gaélique écossais; gaélique",gla,gd
+Selkup,selkoupe,sel,
+"Semitic (Other)","sémitiques, autres langues",sem,
+Serbian,serbe,scc/srp,sr
+Serer,sérère,srr,
+Shan,chan,shn,
+Shona,shona,sna,sn
+"Sichuan Yi","yi de Sichuan",iii,ii
+Sidamo,sidamo,sid,
+"Sign languages","langues des signes",sgn,
+Siksika,blackfoot,bla,
+Sindhi,sindhi,snd,sd
+Sinhalese,singhalais,sin,si
+"Sino-Tibetan (Other)","sino-tibétaines, autres langues",sit,
+"Siouan languages","sioux, langues",sio,
+"Skolt Sami","sami skolt",sms,
+"Slave (Athapascan)","esclave (athapascan)",den,
+"Slavic (Other)","slaves, autres langues",sla,
+Slovak,slovaque,slo/slk,sk
+Slovenian,slovène,slv,sl
+Sogdian,sogdien,sog,
+Somali,somali,som,so
+Songhai,songhai,son,
+Soninke,soninké,snk,
+"Sorbian languages","sorabes, langues",wen,
+"Sotho, Northern","sotho du Nord",nso,
+"Sotho, Southern","sotho du Sud",sot,st
+"South American Indian (Other)","indiennes d'Amérique du Sud, autres langues",sai,
+"Southern Sami","sami du Sud",sma,
+"South Ndebele","ndébélé du Sud",nbl,nr
+"Spanish; Castilian","espagnol; castillan",spa,es
+Sukuma,sukuma,suk,
+Sumerian,sumérien,sux,
+Sundanese,soundanais,sun,su
+Susu,soussou,sus,
+Swahili,swahili,swa,sw
+Swati,swati,ssw,ss
+Swedish,suédois,swe,sv
+Syriac,syriaque,syr,
+Tagalog,tagalog,tgl,tl
+Tahitian,tahitien,tah,ty
+"Tai (Other)","thaïes, autres langues",tai,
+Tajik,tadjik,tgk,tg
+Tamashek,tamacheq,tmh,
+Tamil,tamoul,tam,ta
+Tatar,tatar,tat,tt
+Telugu,télougou,tel,te
+Tereno,tereno,ter,
+Tetum,tetum,tet,
+Thai,thaï,tha,th
+Tibetan,tibétain,tib/bod,bo
+Tigre,tigré,tig,
+Tigrinya,tigrigna,tir,ti
+Timne,temne,tem,
+Tiv,tiv,tiv,
+"tlhlngan-Hol; Klingon",klingon,tlh,
+Tlingit,tlingit,tli,
+"Tok Pisin","tok pisin",tpi,
+Tokelau,tokelau,tkl,
+"Tonga (Nyasa)","tonga (Nyasa)",tog,
+"Tonga (Tonga Islands)","tongan (ÃŽles Tonga)",ton,to
+Tsimshian,tsimshian,tsi,
+Tsonga,tsonga,tso,ts
+Tswana,tswana,tsn,tn
+Tumbuka,tumbuka,tum,
+"Tupi languages","tupi, langues",tup,
+Turkish,turc,tur,tr
+"Turkish, Ottoman (1500-1928)","turc ottoman (1500-1928)",ota,
+Turkmen,turkmène,tuk,tk
+Tuvalu,tuvalu,tvl,
+Tuvinian,touva,tyv,
+Twi,twi,twi,tw
+Udmurt,oudmourte,udm,
+Ugaritic,ougaritique,uga,
+Uighur,ouïgour,uig,ug
+Ukrainian,ukrainien,ukr,uk
+Umbundu,umbundu,umb,
+Undetermined,indéterminée,und,
+"Upper Sorbian",haut-sorabe,hsb,
+Urdu,ourdou,urd,ur
+Uzbek,ouszbek,uzb,uz
+Vai,vaï,vai,
+"Valencian; Catalan","valencien; catalan",cat,ca
+Venda,venda,ven,ve
+Vietnamese,vietnamien,vie,vi
+Volapük,volapük,vol,vo
+Votic,vote,vot,
+"Wakashan languages","wakashennes, langues",wak,
+Walamo,walamo,wal,
+Walloon,wallon,wln,wa
+Waray,waray,war,
+Washo,washo,was,
+Welsh,gallois,wel/cym,cy
+Wolof,wolof,wol,wo
+Xhosa,xhosa,xho,xh
+Yakut,iakoute,sah,
+Yao,yao,yao,
+Yapese,yapois,yap,
+Yiddish,yiddish,yid,yi
+Yoruba,yoruba,yor,yo
+"Yupik languages","yupik, langues",ypk,
+Zande,zandé,znd,
+Zapotec,zapotèque,zap,
+Zenaga,zenaga,zen,
+"Zhuang; Chuang","zhuang; chuang",zha,za
+Zulu,zoulou,zul,zu
+Zuni,zuni,zun,
diff --git a/xorg-server/xkeyboard-config/geometry/README b/xorg-server/xkeyboard-config/geometry/README
index 5f4dcc72c..7a238e55a 100644
--- a/xorg-server/xkeyboard-config/geometry/README
+++ b/xorg-server/xkeyboard-config/geometry/README
@@ -1,6 +1,6 @@
-The geometry component of a keyboard mapping specifies primarily the geometry of
-the keyboard. It contains the geometry symbolic name and the keyboard geometry
-description. The geometry component might also contain aliases for some keys or
-symbolic names for some indicators and might affect the set of indicators that
-are physically present. Key aliases defined in the geometry component of a
-keyboard mapping override those defined in the keycodes component.
+The geometry component of a keyboard mapping specifies primarily the geometry of
+the keyboard. It contains the geometry symbolic name and the keyboard geometry
+description. The geometry component might also contain aliases for some keys or
+symbolic names for some indicators and might affect the set of indicators that
+are physically present. Key aliases defined in the geometry component of a
+keyboard mapping override those defined in the keycodes component.
diff --git a/xorg-server/xkeyboard-config/geometry/amiga b/xorg-server/xkeyboard-config/geometry/amiga
index 79793eabf..9c5f65e57 100644
--- a/xorg-server/xkeyboard-config/geometry/amiga
+++ b/xorg-server/xkeyboard-config/geometry/amiga
@@ -1,264 +1,264 @@
-default xkb_geometry "usa1" {
-
- description= "Amiga (usa1)";
- width= 490;
- height= 175;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "FCTS" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "TLDE" { { [ 28,18] }, { [2,1], [ 21,17] } };
- shape "TABK" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "CTRL" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "CAPS" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "RTRN" {
- approx = { [ 16, 0], [42,37] },
- { [16, 0], [42, 0], [42,37],
- [ 0,37], [ 0,19], [16,19] },
- { [18, 1], [40, 1], [40,36],
- [ 2,36], [ 2,20], [18,20] } };
- shape "LFSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
- shape "MODK" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
- shape "DELE" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
-
- section.left= 22;
- row.left= 1;
- key.shape= "FCTS";
- key.gap= 1;
- section "Function" {
- top= 28;
- row {
- top= 1;
- keys { { <ESC>, shape="NORM" },
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 9 }, <FK07>, <FK08>, <FK09>, <FK10>
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 56;
- row {
- top= 1;
- keys { { <TLDE>, shape="TLDE" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <BKSL>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN", -15 }
- };
- };
- row {
- top= 39;
- keys { { <LCTL>, "CTRL" }, { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- keys { { <LALT>, 10 }, <LAMI>,
- { <SPCE>, "SPCE" },
- <RAMI>, <RALT>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 56;
- left= 326;
- row {
- top= 1;
- key.shape = "DELE";
- keys { <DELE>, <HELP> };
- };
- row {
- top= 39;
- left = 20;
- keys { <UP> };
- };
- row {
- top= 58;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 56;
- left= 392;
- row {
- top= 1;
- keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDC> };
- };
- }; // End of "Keypad" section
-
-};
-
-xkb_geometry "de" {
-
- description= "Amiga (de)";
- width= 490;
- height= 175;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "FCTS" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "TLDE" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "TABK" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "CTRL" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "CAPS" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "RTRN" {
- { [ 0, 0], [28,0], [28,37], [5,37], [5,18], [ 0,18] },
- { [ 2, 1], [26,1], [26,36], [7,36], [7,17], [ 2,17] } };
- shape "LFSH" { { [ 32,18] }, { [2,1], [ 29,17] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
- shape "MODK" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
- shape "DELE" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
-
- section.left= 22;
- row.left= 1;
- key.shape= "FCTS";
- key.gap= 1;
- section "Function" {
- top= 28;
- row {
- top= 1;
- keys { { <ESC>, shape="NORM" },
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 9 }, <FK07>, <FK08>, <FK09>, <FK10>
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 56;
- row {
- top= 1;
- keys { { <TLDE>, shape="TLDE" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <BKSL>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { { <LCTL>, "CTRL" }, { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- keys { { <LALT>, 14 }, <LAMI>,
- { <SPCE>, "SPCE" },
- <RAMI>, <RALT>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 56;
- left= 326;
- row {
- top= 1;
- key.shape = "DELE";
- keys { <DELE>, <HELP> };
- };
- row {
- top= 39;
- left = 20;
- keys { <UP> };
- };
- row {
- top= 58;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 56;
- left= 392;
- row {
- top= 1;
- keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDC> };
- };
- }; // End of "Keypad" section
-
-};
+default xkb_geometry "usa1" {
+
+ description= "Amiga (usa1)";
+ width= 490;
+ height= 175;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "FCTS" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "TLDE" { { [ 28,18] }, { [2,1], [ 21,17] } };
+ shape "TABK" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "CTRL" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "CAPS" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "RTRN" {
+ approx = { [ 16, 0], [42,37] },
+ { [16, 0], [42, 0], [42,37],
+ [ 0,37], [ 0,19], [16,19] },
+ { [18, 1], [40, 1], [40,36],
+ [ 2,36], [ 2,20], [18,20] } };
+ shape "LFSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
+ shape "MODK" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
+ shape "DELE" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+
+ section.left= 22;
+ row.left= 1;
+ key.shape= "FCTS";
+ key.gap= 1;
+ section "Function" {
+ top= 28;
+ row {
+ top= 1;
+ keys { { <ESC>, shape="NORM" },
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 9 }, <FK07>, <FK08>, <FK09>, <FK10>
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 56;
+ row {
+ top= 1;
+ keys { { <TLDE>, shape="TLDE" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <BKSL>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN", -15 }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <LCTL>, "CTRL" }, { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ keys { { <LALT>, 10 }, <LAMI>,
+ { <SPCE>, "SPCE" },
+ <RAMI>, <RALT>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 56;
+ left= 326;
+ row {
+ top= 1;
+ key.shape = "DELE";
+ keys { <DELE>, <HELP> };
+ };
+ row {
+ top= 39;
+ left = 20;
+ keys { <UP> };
+ };
+ row {
+ top= 58;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 56;
+ left= 392;
+ row {
+ top= 1;
+ keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDC> };
+ };
+ }; // End of "Keypad" section
+
+};
+
+xkb_geometry "de" {
+
+ description= "Amiga (de)";
+ width= 490;
+ height= 175;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "FCTS" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "TLDE" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "TABK" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "CTRL" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "CAPS" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "RTRN" {
+ { [ 0, 0], [28,0], [28,37], [5,37], [5,18], [ 0,18] },
+ { [ 2, 1], [26,1], [26,36], [7,36], [7,17], [ 2,17] } };
+ shape "LFSH" { { [ 32,18] }, { [2,1], [ 29,17] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
+ shape "MODK" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
+ shape "DELE" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+
+ section.left= 22;
+ row.left= 1;
+ key.shape= "FCTS";
+ key.gap= 1;
+ section "Function" {
+ top= 28;
+ row {
+ top= 1;
+ keys { { <ESC>, shape="NORM" },
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 9 }, <FK07>, <FK08>, <FK09>, <FK10>
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 56;
+ row {
+ top= 1;
+ keys { { <TLDE>, shape="TLDE" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <BKSL>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <LCTL>, "CTRL" }, { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ keys { { <LALT>, 14 }, <LAMI>,
+ { <SPCE>, "SPCE" },
+ <RAMI>, <RALT>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 56;
+ left= 326;
+ row {
+ top= 1;
+ key.shape = "DELE";
+ keys { <DELE>, <HELP> };
+ };
+ row {
+ top= 39;
+ left = 20;
+ keys { <UP> };
+ };
+ row {
+ top= 58;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 56;
+ left= 392;
+ row {
+ top= 1;
+ keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDC> };
+ };
+ }; // End of "Keypad" section
+
+};
diff --git a/xorg-server/xkeyboard-config/geometry/ataritt b/xorg-server/xkeyboard-config/geometry/ataritt
index 5b035131a..06a681de4 100644
--- a/xorg-server/xkeyboard-config/geometry/ataritt
+++ b/xorg-server/xkeyboard-config/geometry/ataritt
@@ -1,251 +1,251 @@
-default xkb_geometry "us" {
-
- description= "Atari TT (us)";
- width= 480;
- height= 173;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "RTRN" { approx = { [0,19], [32,37] },
- { [ 14, 0], [32, 0], [32,37], [0,37], [0,19], [14,19] },
- { [ 16, 1], [30, 1], [30,36], [2,36], [2,20], [16,20] } };
- shape "CTRL" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
- shape "FCTS" { { [ 28,10] }, { [2,1], [ 26,9] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
-
- section.left= 21;
- row.left= 1;
- key.shape = "NORM";
- key.gap= 1;
- section "Function" {
- top= 36;
- key.shape= "FCTS";
- row {
- top= 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 63;
- row {
- top= 1;
- keys { <ESC>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, <TLDE>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN", -13 }, <DELE>
- };
- };
- row {
- top= 39;
- keys { { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <BKSL>, 34 }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- keys { { <ALT>, 24 },
- { <SPCE>, "SPCE" },
- <CAPS>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 63;
- left= 319;
- row {
- top= 1;
- key.shape = "BKSP";
- keys { <HELP>, <UNDO> };
- };
- row {
- top= 20;
- keys { <INS>, <UP>, <HOME> };
- };
- row {
- top= 39;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 63;
- left= 381;
- row {
- top= 1;
- keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDC> };
- };
- }; // End of "Keypad" section
-
-};
-
-xkb_geometry "de" {
-
- description= "Atari TT (de)";
- width= 480;
- height= 173;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "RTRN" { approx = { [0,19], [32,37] },
- { [ 14, 0], [32, 0], [32,37], [0,37], [0,19], [14,19] },
- { [ 16, 1], [30, 1], [30,36], [2,36], [2,20], [16,20] } };
- shape "CTRL" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "LFSH" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "RTSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
- shape "FCTS" { { [ 28,11] }, { [2,1], [ 26,10] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
-
- section.left= 21;
- row.left= 1;
- key.shape = "NORM";
- key.gap= 1;
- section "Function" {
- top= 36;
- key.shape= "FCTS";
- row {
- top= 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 63;
- row {
- top= 1;
- keys { <ESC>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, <TLDE>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN", -13 }, <DELE>
- };
- };
- row {
- top= 39;
- keys { { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <BKSL>, 34 }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>,
- <AB05>, <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- keys { { <ALT>, 24 }, { <SPCE>, "SPCE" }, <CAPS>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 63;
- left= 319;
- row {
- top= 1;
- key.shape = "BKSP";
- keys { <HELP>, <UNDO> };
- };
- row {
- top= 20;
- keys { <INS>, <UP>, <HOME> };
- };
- row {
- top= 39;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 63;
- left= 381;
- row {
- top= 1;
- keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDC> };
- };
- }; // End of "Keypad" section
-
-};
+default xkb_geometry "us" {
+
+ description= "Atari TT (us)";
+ width= 480;
+ height= 173;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "RTRN" { approx = { [0,19], [32,37] },
+ { [ 14, 0], [32, 0], [32,37], [0,37], [0,19], [14,19] },
+ { [ 16, 1], [30, 1], [30,36], [2,36], [2,20], [16,20] } };
+ shape "CTRL" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [172,18] }, { [2,1], [170,17] } };
+ shape "FCTS" { { [ 28,10] }, { [2,1], [ 26,9] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+
+ section.left= 21;
+ row.left= 1;
+ key.shape = "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 36;
+ key.shape= "FCTS";
+ row {
+ top= 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 63;
+ row {
+ top= 1;
+ keys { <ESC>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, <TLDE>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN", -13 }, <DELE>
+ };
+ };
+ row {
+ top= 39;
+ keys { { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <BKSL>, 34 }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ keys { { <ALT>, 24 },
+ { <SPCE>, "SPCE" },
+ <CAPS>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 63;
+ left= 319;
+ row {
+ top= 1;
+ key.shape = "BKSP";
+ keys { <HELP>, <UNDO> };
+ };
+ row {
+ top= 20;
+ keys { <INS>, <UP>, <HOME> };
+ };
+ row {
+ top= 39;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 63;
+ left= 381;
+ row {
+ top= 1;
+ keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDC> };
+ };
+ }; // End of "Keypad" section
+
+};
+
+xkb_geometry "de" {
+
+ description= "Atari TT (de)";
+ width= 480;
+ height= 173;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "RTRN" { approx = { [0,19], [32,37] },
+ { [ 14, 0], [32, 0], [32,37], [0,37], [0,19], [14,19] },
+ { [ 16, 1], [30, 1], [30,36], [2,36], [2,20], [16,20] } };
+ shape "CTRL" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "LFSH" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "RTSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
+ shape "FCTS" { { [ 28,11] }, { [2,1], [ 26,10] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+
+ section.left= 21;
+ row.left= 1;
+ key.shape = "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 36;
+ key.shape= "FCTS";
+ row {
+ top= 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 63;
+ row {
+ top= 1;
+ keys { <ESC>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, <TLDE>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN", -13 }, <DELE>
+ };
+ };
+ row {
+ top= 39;
+ keys { { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <BKSL>, 34 }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>,
+ <AB05>, <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ keys { { <ALT>, 24 }, { <SPCE>, "SPCE" }, <CAPS>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 63;
+ left= 319;
+ row {
+ top= 1;
+ key.shape = "BKSP";
+ keys { <HELP>, <UNDO> };
+ };
+ row {
+ top= 20;
+ keys { <INS>, <UP>, <HOME> };
+ };
+ row {
+ top= 39;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 63;
+ left= 381;
+ row {
+ top= 1;
+ keys { <KPLP>, <KPRP>, <KPDV>, <KPMU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDC> };
+ };
+ }; // End of "Keypad" section
+
+};
diff --git a/xorg-server/xkeyboard-config/geometry/chicony b/xorg-server/xkeyboard-config/geometry/chicony
index d43fb1b4a..75bce8d1a 100644
--- a/xorg-server/xkeyboard-config/geometry/chicony
+++ b/xorg-server/xkeyboard-config/geometry/chicony
@@ -1,189 +1,189 @@
-// -*- indent-tabs-mode: nil -*-
-
-// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
-// Geometry specification for Chicony KB-9820 keyboard.
-
-// 86 keys
-default xkb_geometry "us" {
- description = "Chicony KB-9820 infra-red keyboard";
- width = 350;
- height = 180;
- //baseColor = "grey60";
- labelColor = "white";
-
- shape "EDGE" { cornerRadius = 25,
- { [0, 8], [142.5, 0], [202.5, 0], [347, 8],
- [347, 60], [327, 100], [322, 160],
- [202.5, 165], [142.5, 165],
- [25, 160], [20, 100], [0, 60] } };
- shape "KEYS" { cornerRadius = 2, { [271, 109] } };
- shape "MOUS" { cornerRadius = 12, { [24, 24] } };
- shape "MOUS2" { cornerRadius = 9, { [18, 18] } };
- shape "BTNS" { cornerRadius = 5, { [10, 10] } };
-
- solid "Edges" {
- top = 0;
- left = 0;
- shape = "EDGE";
- color = "grey60";
- };
-
- solid "KeyPanel" {
- shape = "KEYS";
- left = 38;
- top = 22;
- color = "black";
- };
-
- solid "Mouse" {
- shape = "MOUS";
- left = 315;
- top = 30;
- color = "grey30";
- };
-
- outline "Mouse2" {
- shape = "MOUS2";
- left = 318;
- top = 33;
- color = "black";
- };
-
- solid "Button1" {
- shape = "BTNS";
- left = 10;
- top = 32;
- color = "grey30";
- };
-
- solid "Button2" {
- shape = "BTNS";
- left = 20;
- top = 42;
- color = "grey30";
- };
-
- outline "Buttons" {
- shape = "MOUS";
- left = 8;
- top = 30;
- color = "black";
- };
-
- shape.cornerRadius = 1;
- shape "ESC" { { [17, 12] }, { [1.5, 0], [15.5, 10] } };
- shape "SMALL" { { [15, 12] }, { [1.5, 0], [13.5, 10] } };
- shape "THIN" { { [14, 18] }, { [2, 0], [12, 15] } };
- shape "NARR" { { [16, 18] }, { [2, 0], [14, 15] } };
- shape "NORM" { { [17, 18] }, { [2, 0], [15, 15] } };
- shape "WIDER" { { [18, 18] }, { [2, 0], [16, 15] } };
- shape "CAPS" { { [22, 18] }, { [2, 0], [20, 15] } };
- shape "RTSH" { { [23, 18] }, { [2, 0], [21, 15] } };
- shape "WIDEST" { { [30, 18] }, { [2, 0], [28, 15] } };
- shape "SPCE" { { [68, 18] }, { [2, 0], [66, 15] } };
-
- section "Function" {
- key.shape = "SMALL";
- key.gap = 0.79;
- key.color = "grey60";
- left = 38;
- top = 22;
- row {
- top = 1;
- keys { { <ESC>, shape="ESC", 1 },
- { <FK01>, 1.5 }, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <NMLK>, <PRSC>, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Control" {
- key.shape = "NORM";
- key.gap = 1;
- key.color = "grey60";
- left = 38;
- top = 111;
- row {
- top = 1;
- keys { <EASY>, <LCTL>, <LWIN>, <LALT>,
- { <SPCE>, shape="SPCE" },
- <RALT>,
- { <RWIN>, shape="THIN" },
- { <MENU>, shape="THIN" },
- { <INS>, shape="THIN" },
- { <DELE>, shape="THIN" } };
- };
- }; // End of "Control" section
-
- section "Editing" {
- key.shape = "NORM";
- key.gap = 1;
- key.color = "grey60";
- left = 291;
- top = 34;
- row.vertical = True;
- row {
- top = 1;
- keys { <HOME>, <PGUP>, <PGDN>, <END> };
- };
- }; // End of "Editing" section
-
- section "Navigation" {
- key.gap = 1;
- key.shape = "NARR";
- key.color = "grey60";
- left = 257;
- top = 92;
- row {
- left = 16;
- top = 1;
- keys { <UP> };
- };
- row {
- top = 20;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Navigation" section
-
- section "Alpha" {
- key.gap = 1;
- key.shape = "NORM";
- key.color = "grey60";
- left = 38;
- top = 35;
- row {
- top = 1;
- keys { { <TLDE>, shape="NARR" },
- <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, shape="WIDER" }
- };
- };
- row {
- top = 20;
- keys { <TAB>,
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, <AD13>
- };
- };
- row {
- top = 39;
- keys { { <CAPS>, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, shape="WIDEST" }
- };
- };
- row {
- top = 58;
- keys { { <LFSH>, shape="WIDEST" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, shape="RTSH" }
- };
- };
- }; // End of "Alpha" section
-};
+// -*- indent-tabs-mode: nil -*-
+
+// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
+// Geometry specification for Chicony KB-9820 keyboard.
+
+// 86 keys
+default xkb_geometry "us" {
+ description = "Chicony KB-9820 infra-red keyboard";
+ width = 350;
+ height = 180;
+ //baseColor = "grey60";
+ labelColor = "white";
+
+ shape "EDGE" { cornerRadius = 25,
+ { [0, 8], [142.5, 0], [202.5, 0], [347, 8],
+ [347, 60], [327, 100], [322, 160],
+ [202.5, 165], [142.5, 165],
+ [25, 160], [20, 100], [0, 60] } };
+ shape "KEYS" { cornerRadius = 2, { [271, 109] } };
+ shape "MOUS" { cornerRadius = 12, { [24, 24] } };
+ shape "MOUS2" { cornerRadius = 9, { [18, 18] } };
+ shape "BTNS" { cornerRadius = 5, { [10, 10] } };
+
+ solid "Edges" {
+ top = 0;
+ left = 0;
+ shape = "EDGE";
+ color = "grey60";
+ };
+
+ solid "KeyPanel" {
+ shape = "KEYS";
+ left = 38;
+ top = 22;
+ color = "black";
+ };
+
+ solid "Mouse" {
+ shape = "MOUS";
+ left = 315;
+ top = 30;
+ color = "grey30";
+ };
+
+ outline "Mouse2" {
+ shape = "MOUS2";
+ left = 318;
+ top = 33;
+ color = "black";
+ };
+
+ solid "Button1" {
+ shape = "BTNS";
+ left = 10;
+ top = 32;
+ color = "grey30";
+ };
+
+ solid "Button2" {
+ shape = "BTNS";
+ left = 20;
+ top = 42;
+ color = "grey30";
+ };
+
+ outline "Buttons" {
+ shape = "MOUS";
+ left = 8;
+ top = 30;
+ color = "black";
+ };
+
+ shape.cornerRadius = 1;
+ shape "ESC" { { [17, 12] }, { [1.5, 0], [15.5, 10] } };
+ shape "SMALL" { { [15, 12] }, { [1.5, 0], [13.5, 10] } };
+ shape "THIN" { { [14, 18] }, { [2, 0], [12, 15] } };
+ shape "NARR" { { [16, 18] }, { [2, 0], [14, 15] } };
+ shape "NORM" { { [17, 18] }, { [2, 0], [15, 15] } };
+ shape "WIDER" { { [18, 18] }, { [2, 0], [16, 15] } };
+ shape "CAPS" { { [22, 18] }, { [2, 0], [20, 15] } };
+ shape "RTSH" { { [23, 18] }, { [2, 0], [21, 15] } };
+ shape "WIDEST" { { [30, 18] }, { [2, 0], [28, 15] } };
+ shape "SPCE" { { [68, 18] }, { [2, 0], [66, 15] } };
+
+ section "Function" {
+ key.shape = "SMALL";
+ key.gap = 0.79;
+ key.color = "grey60";
+ left = 38;
+ top = 22;
+ row {
+ top = 1;
+ keys { { <ESC>, shape="ESC", 1 },
+ { <FK01>, 1.5 }, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <NMLK>, <PRSC>, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Control" {
+ key.shape = "NORM";
+ key.gap = 1;
+ key.color = "grey60";
+ left = 38;
+ top = 111;
+ row {
+ top = 1;
+ keys { <EASY>, <LCTL>, <LWIN>, <LALT>,
+ { <SPCE>, shape="SPCE" },
+ <RALT>,
+ { <RWIN>, shape="THIN" },
+ { <MENU>, shape="THIN" },
+ { <INS>, shape="THIN" },
+ { <DELE>, shape="THIN" } };
+ };
+ }; // End of "Control" section
+
+ section "Editing" {
+ key.shape = "NORM";
+ key.gap = 1;
+ key.color = "grey60";
+ left = 291;
+ top = 34;
+ row.vertical = True;
+ row {
+ top = 1;
+ keys { <HOME>, <PGUP>, <PGDN>, <END> };
+ };
+ }; // End of "Editing" section
+
+ section "Navigation" {
+ key.gap = 1;
+ key.shape = "NARR";
+ key.color = "grey60";
+ left = 257;
+ top = 92;
+ row {
+ left = 16;
+ top = 1;
+ keys { <UP> };
+ };
+ row {
+ top = 20;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Navigation" section
+
+ section "Alpha" {
+ key.gap = 1;
+ key.shape = "NORM";
+ key.color = "grey60";
+ left = 38;
+ top = 35;
+ row {
+ top = 1;
+ keys { { <TLDE>, shape="NARR" },
+ <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, shape="WIDER" }
+ };
+ };
+ row {
+ top = 20;
+ keys { <TAB>,
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, <AD13>
+ };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, shape="WIDEST" }
+ };
+ };
+ row {
+ top = 58;
+ keys { { <LFSH>, shape="WIDEST" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, shape="RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+};
diff --git a/xorg-server/xkeyboard-config/geometry/dell b/xorg-server/xkeyboard-config/geometry/dell
index 4fd6479f7..cb635ef60 100644
--- a/xorg-server/xkeyboard-config/geometry/dell
+++ b/xorg-server/xkeyboard-config/geometry/dell
@@ -1,644 +1,644 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-default xkb_geometry "dell101" {
-
- description= "Dell 101";
- width= 470;
- height= 210;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
- shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "CAPS" { { [ 33,18] }, { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
- shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
- shape "SPCE" { { [133,18] }, { [2,1], [131,16] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 52;
- left= 377;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 67;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 382; };
- indicator "Caps Lock" { left= 407; };
- indicator "Scroll Lock" { left= 433; };
- text.top= 55;
- text.color= "black";
- text "NumLockLabel" { left= 378; text="Num\nLock"; };
- text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 52;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 91;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 21 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>, { <RCTL>, 21 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 91;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 91;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "default" geometry
-
-
-xkb_geometry "dell65" {
-};
-
-xkb_geometry "dell65x" {
-
- description= "Dell 101";
- width= 470;
- height= 210;
- color="grey10";
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
- shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "CAPS" { { [ 33,18] }, { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
- shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
- shape "SPCE" { { [133,18] }, { [2,1], [131,16] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 52;
- left= 377;
- color= "grey10";
- };
-
- shape "BACKGROUND" { cornerRadius=5, { [ 470, 210 ] } };
- solid "Background" {
- shape= "BACKGROUND";
- top= 0;
- left= 0;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 67;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 382; };
- indicator "Caps Lock" { left= 407; };
- indicator "Scroll Lock" { left= 433; };
- text.top= 55;
- text.color= "black";
- text "NumLockLabel" { left= 378; text="Num\nLock"; };
- text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 52;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 91;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 21 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>, { <RCTL>, 21 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 91;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 91;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-};
-
-
-//
-// Dell Precision M65
-//
-
-xkb_geometry "dellm65" {
-
- description= "Dell Precision M65";
- width= 308;
- height= 152;
- baseColor = "grey20";
- labelColor = "white";
-
- shape "BACKGROUND" { cornerRadius = 3, { [ 308, 152 ] } };
- shape "BACKGROUND2" { cornerRadius = 2, { [ 7, 22 ],
- [ 171, 22 ],
- [ 171, 10 ],
- [ 301, 10 ],
- [ 301, 148 ],
- [ 244, 148 ],
- [ 244, 132 ],
- [ 7, 132] } };
- solid "Background" {
- shape = "BACKGROUND";
- top = 0;
- left = 0;
- color = "grey20";
- };
- solid "Background2" {
- shape = "BACKGROUND2";
- top = 0;
- left = 0;
- color = "black";
- };
-
- shape "LEDS" { cornerRadius = 4, { [ 26, 8 ] } };
- shape "LED" { cornerRadius = 0, { [ 4, 4 ] } };
- solid "LedPanel" {
- shape = "LEDS";
- top = 8;
- left = 69;
- color = "grey20";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "gray20";
- indicator.top= 10;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 72; };
- indicator "Caps Lock" { left= 80; };
- indicator "Scroll Lock" { left= 88; };
-
- shape "MEDIA" { cornerRadius = 5, { [ 2, 2], [ 12, 12 ] } };
- shape "POWER" { cornerRadius = 7, { [ 14, 14 ] } };
-
- section "Media" {
- top = 5;
- left = 102;
- width = 60;
- height = 14;
- key.color="grey30";
- key.shape = "MEDIA";
- row {
- top = 0;
- keys {
- <I2E>, <I30>, <I20>, { <I04>, shape = "POWER", gap = 3 }
- };
- };
- };
-
-
- shape "FKEY" { cornerRadius = 1, { [ 18, 12 ] }, { [ 1, 1 ], [ 17, 10 ] } };
-
- section "Function" {
- top = 12;
- left = 8;
- width = 290;
- height = 24;
- key.color = "grey80";
- key.shape = "FKEY";
- key.gap = 0;
- row {
- top = 0;
- keys { { <MENU>, 165 }, <PRSC>, <NMLK>, <PAUS>,
- { <INS>, 1 }, <HOME>, <PGUP> };
- };
- row {
- top = 12;
- keys { <ESC>, { <FK01>, 1 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 1 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 1 }, <FK10>, <FK11>, <FK12>,
- { <DELE>, 1 }, <END>, <PGDN> };
- };
- };
-
- shape "AKEY" { cornerRadius = 1, { [ 19, 19 ] }, { [ 2, 1 ], [ 17, 15 ] } };
- shape "BKSP" { cornerRadius = 1, { [ 44, 19 ] }, { [ 2, 1 ], [ 42, 15 ] } };
- shape "TABK" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
- shape "BKSL" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
- shape "CAPS" { cornerRadius = 1, { [ 34, 19 ] }, { [ 2, 1 ], [ 32, 15 ] } };
- shape "RTRN" { cornerRadius = 1, { [ 47, 19 ] }, { [ 2, 1 ], [ 45, 15 ] } };
- shape "LFSH" { cornerRadius = 1, { [ 44, 19 ] }, { [ 2, 1 ], [ 42, 15 ] } };
- shape "RTSH" { cornerRadius = 1, { [ 56, 19 ] }, { [ 2, 1 ], [ 54, 15 ] } };
- shape "LCTL" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
- shape "LALT" { cornerRadius = 1, { [ 25, 19 ] }, { [ 2, 1 ], [ 23, 15 ] } };
- shape "RCTL" { cornerRadius = 1, { [ 25, 19 ] }, { [ 2, 1 ], [ 23, 15 ] } };
- shape "SPCE" { cornerRadius = 1, { [ 96, 19 ] }, { [ 2, 1 ], [ 94, 15 ] } };
-
-
- section "Alpha" {
- top = 36;
- left = 8;
- width = 290;
- height = 21;
- key.color = "grey80";
- key.shape = "AKEY";
- key.gap = 0;
- row {
- top = 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, 1, "BKSP" } };
- };
- row {
- top = 20;
- keys { { <TAB>, "TABK" },
- { <AD01>, 1 }, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, 1, "BKSL" } };
- };
- row {
- top = 39;
- keys { { <CAPS>, "CAPS" },
- { <AC01>, 1 }, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, 1, "RTRN" } };
- };
- row {
- top = 58;
- keys { { <LFSH>, "LFSH" },
- { <AB01>, 1 }, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, 1, "RTSH" } };
- };
- row {
- top = 77;
- keys { { <LCTL>, "LCTL" }, { <LWIN>, 20 }, { <LALT>, "LALT" },
- { <SPCE>, "SPCE" }, <RALT>, { <RCTL>, "RCTL" } };
- };
- };
-
- shape "SKEY" { cornerRadius = 1, { [ 18, 17 ] }, { [ 2, 1 ], [ 16, 13 ] } };
- section "Arrows" {
- top = 113;
- left = 243;
- width = 54;
- height = 36;
-
- key.color = "grey80";
- key.shape = "SKEY";
- row {
- top = 0;
- left = 20;
-
- keys { <UP> };
- };
-
- row {
- top = 17;
- left = 2;
-
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- shape "STIK" { cornerRadius = 4, { [ 7, 7 ] } };
-
- solid "STIK" {
- priority = 255;
- color = "blue";
- shape = "STIK";
- top = 90;
- left = 135;
- };
-};
-
-xkb_geometry "latitude" {
- description="Dell Latitude";
- width=304.2; height=219.1;
-
- baseColor="grey"; labelColor="white";
-
- alias <AC00> =<CAPS>;
- alias <AA00> =<LCTL>;
-
- shape "EXTERNAL" {corner=3,
- {[0,0], [302,0], [302,154], [174,154], [174,198], [166,216], [107,216], [100,198], [100,154], [0,154]}};
- solid "external" {shape="EXTERNAL"; top=1.1; left=1.1; color="grey10"; priority=10;};
-
- shape "INTERNAL" {corner=3,
- {[0,13], [162.2,13], [162.2,0], [286,0], [286,138], [230,138], [230,124], [163,124], [163,138], [96,138], [96,124], [0,124]}};
- solid "internal" {shape="INTERNAL"; top=7; left=8.5; color="black"; priority=20;};
-
- shape "TOUCHPAD" {corner=2, {[68,40]}};
- solid "touchpad" {shape="TOUCHPAD"; top=153; left=104; color="grey20"; priority=20;};
-
- shape "TOUCHPADBUTTONS" {corner=1,
- {[0,0], [33.5,0], [33.5,16], [6,16]},
- {[34.5,0], [68,0], [61, 16], [34.5,16]}};
- solid "touchleft" {shape="TOUCHPADBUTTONS"; top=198; left=104; color="grey20"; priority=20;};
-
- shape "NIPPLE" {corner=3, {[7.5,7.5]}};
- solid "nipple" {shape="NIPPLE"; top=87; left=134; color="blue"; priority=200;};
- shape "NIPPLEBUTTONS" {corner=2, {[32.5,13]}, {[33.5,0],[66,13]}};
- solid "nipplebuttons" {shape="NIPPLEBUTTONS"; top=131; left=105; color="grey20"; priority=20;};
-
- shape "FILLINGS" {corner=1.5, {[19,15]}, {[38,0],[55,15]}};
- solid "fillings" {shape="FILLINGS"; top=112; left=238; color="grey"; priority=200;};
-
- shape "FUNC" {corner=1.5, {[16.3,12]}, {[2,0.5], [14,10]}};
- shape "ESC" {corner=1.5, {[18,12]}, {[2,0.5], [16,10]}};
- shape "BKSP" {corner=1.5, {[36.5,18]}, {[3,0.5], [33.5,14]}};
-
- section "Function" {key.color="grey"; priority=100; top=9; left=10; width=290; height=28;
- row {top=0; left=161.1; keys {{<MENU>,"FUNC",1.1}, {<PRSC>,"FUNC",1.1}, {<NMLK>,"FUNC",1.1},
- {<PAUS>,"FUNC",1.1}, {<INS>,"FUNC",2.5}, {<HOME>,"FUNC",1.1}, {<PGUP>,"FUNC",1.1}};};
- row {top=12.5; left=0; keys {{<ESC>,"ESC",0},
- {<FK01>,"FUNC",2.7}, {<FK02>,"FUNC",1.1}, {<FK03>,"FUNC",1.1}, {<FK04>,"FUNC",1.1},
- {<FK05>,"FUNC",2.5}, {<FK06>,"FUNC",1.1}, {<FK07>,"FUNC",1.1}, {<FK08>,"FUNC",1.1},
- {<FK09>,"FUNC",2.5}, {<FK10>,"FUNC",1.1}, {<FK11>,"FUNC",1.1}, {<FK12>,"FUNC",1.1},
- {<DELE>,"FUNC",2.5}, {<END>, "FUNC",1.1}, {<PGDN>,"FUNC",1.1}};};
- }; // End of "Function" section
-
- shape "NORM" {corner=1.5, {[18,18]}, {[3,0.5], [14.8,14]}};
- shape "TABK" {corner=1.5, {[28,18]}, {[3,0.5], [25,14]}};
- shape "CAPS" {corner=1.5, {[32,18]}, {[3,0.5], [22,14]}};
- shape "LFSH" {corner=1.5, {[23,18]}, {[3,0.5], [20,14]}};
- shape "RTSH" {corner=1.5, {[50,18]}, {[3,1], [47,14]}};
- shape "RTRN" {corner=1.5, {[0,0],[26.5,0],[26.5,37],[4,37],[4,18],[0,18]},
- {[3,0.5], [23.5,0.5], [23.5,33], [7,33], [7,14], [3,14]}};
- shape "SPCE" {corner=1.5,{[95,18]}, {[3,0.5],[92,14]}};
- shape "LCTL" {corner=1.5, {[27,18]}, {[3,0.5],[24,14]}};
- shape "LALT" {corner=1.5, {[22,18]}, {[3,0.5],[19,14]}};
- shape "WIN" {corner=1.5, {[18,18]}, {[3,0.5],[15,14]}};
-
- section "Alpha" {key.color="grey"; priority=100; top=36; left=10; width=290; height=18;
- row {top=0; left=0; keys {{<TLDE>, "NORM", 0}, {<AE01>, "NORM", 1}, {<AE02>, "NORM", 1}, {<AE03>, "NORM", 1},
- {<AE04>, "NORM", 1}, {<AE05>, "NORM", 1}, {<AE06>, "NORM", 1}, {<AE07>, "NORM", 1}, {<AE08>, "NORM", 1},
- {<AE09>, "NORM", 1}, {<AE10>, "NORM", 1}, {<AE11>, "NORM", 1}, {<AE12>, "NORM", 1}, {<BKSP>, "BKSP", 1}};};
- row {top=19; left=0; keys {{<TAB>, "TABK", 0}, {<AD01>, "NORM", 1}, {<AD02>, "NORM", 1}, {<AD03>, "NORM", 1},
- {<AD04>, "NORM", 1}, {<AD05>, "NORM", 1}, {<AD06>, "NORM", 1}, {<AD07>, "NORM", 1}, {<AD08>, "NORM", 1},
- {<AD09>, "NORM", 1}, {<AD10>, "NORM", 1}, {<AD11>, "NORM", 1}, {<AD12>, "NORM", 1}, {<RTRN>, "RTRN", 1}};};
- row {top=38; left=0; keys {{<CAPS>, "CAPS", 0}, {<AC01>, "NORM", 1}, {<AC02>, "NORM", 1}, {<AC03>, "NORM", 1},
- {<AC04>, "NORM", 1}, {<AC05>, "NORM", 1}, {<AC06>, "NORM", 1}, {<AC07>, "NORM", 1}, {<AC08>, "NORM", 1},
- {<AC09>, "NORM", 1}, {<AC10>, "NORM", 1}, {<AC11>, "NORM", 1}, {<AC12>, "NORM", 1}};};
- // TODO There's a weird <> key here, check it out:
- row {top=57; left=0; keys {{<LFSH>, "LFSH", 0}, {<AB01>, "NORM", 1}, {<AB02>, "NORM", 1}, {<AB03>, "NORM", 1},
- {<AB04>, "NORM", 1}, {<AB05>, "NORM", 1}, {<AB06>, "NORM", 1}, {<AB07>, "NORM", 1}, {<AB08>, "NORM", 1},
- {<AB09>, "NORM", 1}, {<AB10>, "NORM", 1}, {<AB11>, "NORM", 1}, {<RTSH>, "RTSH", 1}};};
- row {top=76; left=0; keys {{<LCTL>, "LCTL", 0}, {<FN>, "WIN", 1},{<LWIN>, "WIN", 1}, {<LALT>, "LALT", 1},
- {<SPCE>, "SPCE", 1}, {<RALT>, "WIN", 1},{<RCTL>, "LALT", 1}};};
- }; // End of "Alpha" section
-
- shape "ARROW" {corner=1.5, {[17,15]}, {[2,0.5],[15,13]}};
- section "Arrows" {key.color="grey"; priority=110; top=112; left=240; width=43; height=31;
- row {top=0; left=18; keys {{<UP>, "ARROW", 0}};};
- row {top=16; left=0; keys {{<LEFT>, "ARROW", 0}, {<DOWN>, "ARROW", 1}, {<RGHT>, "ARROW", 1}};};
- }; // End of "Arrows" section
-
- shape "LEDS" {corner=3, {[25,7]}};
- solid "leds" {shape="LEDS"; top=5.7; left=69; color="grey"; priority=10;};
- shape "LED" {corner=0, {[0,1.5], [3,4.5]}, {[0.5,1.5], [1,0] , [2,0], [2.5,1.5]}};
- indicator.onColor="green";
- indicator.offColor="grey";
- indicator.top=7;
- indicator.shape="LED";
- indicator.priority=200;
- indicator "Num Lock" {left=72;};
- indicator "Caps Lock" {left=80;};
- indicator "Scroll Lock" {left=88;};
-
- text "LATITUDE" {left=10; top=7; text="L A T I T U D E | D620";};
-
- shape "ROUND" {corner=5, {[10,10]}};
- shape "POWER" {corner=7, {[15,15]}};
- section "Topbuttons" {key.color="grey"; priority=110; top=2; left=100;
- row {top=2; left=0; keys {{<VLUP>, "ROUND", 0}, {<VLDN>, "ROUND", 3}, {<MUTE>, "ROUND", 3}};};
- row {top=0; left=45; keys {{<POWR>, "POWER", 0}};};
- }; // End of "TopButtons" section
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+default xkb_geometry "dell101" {
+
+ description= "Dell 101";
+ width= 470;
+ height= 210;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
+ shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "CAPS" { { [ 33,18] }, { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
+ shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
+ shape "SPCE" { { [133,18] }, { [2,1], [131,16] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 52;
+ left= 377;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 67;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 382; };
+ indicator "Caps Lock" { left= 407; };
+ indicator "Scroll Lock" { left= 433; };
+ text.top= 55;
+ text.color= "black";
+ text "NumLockLabel" { left= 378; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 52;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 91;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 21 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>, { <RCTL>, 21 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 91;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 91;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "default" geometry
+
+
+xkb_geometry "dell65" {
+};
+
+xkb_geometry "dell65x" {
+
+ description= "Dell 101";
+ width= 470;
+ height= 210;
+ color="grey10";
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
+ shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "CAPS" { { [ 33,18] }, { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
+ shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
+ shape "SPCE" { { [133,18] }, { [2,1], [131,16] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 52;
+ left= 377;
+ color= "grey10";
+ };
+
+ shape "BACKGROUND" { cornerRadius=5, { [ 470, 210 ] } };
+ solid "Background" {
+ shape= "BACKGROUND";
+ top= 0;
+ left= 0;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 67;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 382; };
+ indicator "Caps Lock" { left= 407; };
+ indicator "Scroll Lock" { left= 433; };
+ text.top= 55;
+ text.color= "black";
+ text "NumLockLabel" { left= 378; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 52;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 91;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 21 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>, { <RCTL>, 21 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 91;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 91;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+};
+
+
+//
+// Dell Precision M65
+//
+
+xkb_geometry "dellm65" {
+
+ description= "Dell Precision M65";
+ width= 308;
+ height= 152;
+ baseColor = "grey20";
+ labelColor = "white";
+
+ shape "BACKGROUND" { cornerRadius = 3, { [ 308, 152 ] } };
+ shape "BACKGROUND2" { cornerRadius = 2, { [ 7, 22 ],
+ [ 171, 22 ],
+ [ 171, 10 ],
+ [ 301, 10 ],
+ [ 301, 148 ],
+ [ 244, 148 ],
+ [ 244, 132 ],
+ [ 7, 132] } };
+ solid "Background" {
+ shape = "BACKGROUND";
+ top = 0;
+ left = 0;
+ color = "grey20";
+ };
+ solid "Background2" {
+ shape = "BACKGROUND2";
+ top = 0;
+ left = 0;
+ color = "black";
+ };
+
+ shape "LEDS" { cornerRadius = 4, { [ 26, 8 ] } };
+ shape "LED" { cornerRadius = 0, { [ 4, 4 ] } };
+ solid "LedPanel" {
+ shape = "LEDS";
+ top = 8;
+ left = 69;
+ color = "grey20";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "gray20";
+ indicator.top= 10;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 72; };
+ indicator "Caps Lock" { left= 80; };
+ indicator "Scroll Lock" { left= 88; };
+
+ shape "MEDIA" { cornerRadius = 5, { [ 2, 2], [ 12, 12 ] } };
+ shape "POWER" { cornerRadius = 7, { [ 14, 14 ] } };
+
+ section "Media" {
+ top = 5;
+ left = 102;
+ width = 60;
+ height = 14;
+ key.color="grey30";
+ key.shape = "MEDIA";
+ row {
+ top = 0;
+ keys {
+ <I2E>, <I30>, <I20>, { <I04>, shape = "POWER", gap = 3 }
+ };
+ };
+ };
+
+
+ shape "FKEY" { cornerRadius = 1, { [ 18, 12 ] }, { [ 1, 1 ], [ 17, 10 ] } };
+
+ section "Function" {
+ top = 12;
+ left = 8;
+ width = 290;
+ height = 24;
+ key.color = "grey80";
+ key.shape = "FKEY";
+ key.gap = 0;
+ row {
+ top = 0;
+ keys { { <MENU>, 165 }, <PRSC>, <NMLK>, <PAUS>,
+ { <INS>, 1 }, <HOME>, <PGUP> };
+ };
+ row {
+ top = 12;
+ keys { <ESC>, { <FK01>, 1 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 1 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 1 }, <FK10>, <FK11>, <FK12>,
+ { <DELE>, 1 }, <END>, <PGDN> };
+ };
+ };
+
+ shape "AKEY" { cornerRadius = 1, { [ 19, 19 ] }, { [ 2, 1 ], [ 17, 15 ] } };
+ shape "BKSP" { cornerRadius = 1, { [ 44, 19 ] }, { [ 2, 1 ], [ 42, 15 ] } };
+ shape "TABK" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
+ shape "BKSL" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
+ shape "CAPS" { cornerRadius = 1, { [ 34, 19 ] }, { [ 2, 1 ], [ 32, 15 ] } };
+ shape "RTRN" { cornerRadius = 1, { [ 47, 19 ] }, { [ 2, 1 ], [ 45, 15 ] } };
+ shape "LFSH" { cornerRadius = 1, { [ 44, 19 ] }, { [ 2, 1 ], [ 42, 15 ] } };
+ shape "RTSH" { cornerRadius = 1, { [ 56, 19 ] }, { [ 2, 1 ], [ 54, 15 ] } };
+ shape "LCTL" { cornerRadius = 1, { [ 31, 19 ] }, { [ 2, 1 ], [ 29, 15 ] } };
+ shape "LALT" { cornerRadius = 1, { [ 25, 19 ] }, { [ 2, 1 ], [ 23, 15 ] } };
+ shape "RCTL" { cornerRadius = 1, { [ 25, 19 ] }, { [ 2, 1 ], [ 23, 15 ] } };
+ shape "SPCE" { cornerRadius = 1, { [ 96, 19 ] }, { [ 2, 1 ], [ 94, 15 ] } };
+
+
+ section "Alpha" {
+ top = 36;
+ left = 8;
+ width = 290;
+ height = 21;
+ key.color = "grey80";
+ key.shape = "AKEY";
+ key.gap = 0;
+ row {
+ top = 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, 1, "BKSP" } };
+ };
+ row {
+ top = 20;
+ keys { { <TAB>, "TABK" },
+ { <AD01>, 1 }, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, 1, "BKSL" } };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, "CAPS" },
+ { <AC01>, 1 }, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, 1, "RTRN" } };
+ };
+ row {
+ top = 58;
+ keys { { <LFSH>, "LFSH" },
+ { <AB01>, 1 }, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, 1, "RTSH" } };
+ };
+ row {
+ top = 77;
+ keys { { <LCTL>, "LCTL" }, { <LWIN>, 20 }, { <LALT>, "LALT" },
+ { <SPCE>, "SPCE" }, <RALT>, { <RCTL>, "RCTL" } };
+ };
+ };
+
+ shape "SKEY" { cornerRadius = 1, { [ 18, 17 ] }, { [ 2, 1 ], [ 16, 13 ] } };
+ section "Arrows" {
+ top = 113;
+ left = 243;
+ width = 54;
+ height = 36;
+
+ key.color = "grey80";
+ key.shape = "SKEY";
+ row {
+ top = 0;
+ left = 20;
+
+ keys { <UP> };
+ };
+
+ row {
+ top = 17;
+ left = 2;
+
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ shape "STIK" { cornerRadius = 4, { [ 7, 7 ] } };
+
+ solid "STIK" {
+ priority = 255;
+ color = "blue";
+ shape = "STIK";
+ top = 90;
+ left = 135;
+ };
+};
+
+xkb_geometry "latitude" {
+ description="Dell Latitude";
+ width=304.2; height=219.1;
+
+ baseColor="grey"; labelColor="white";
+
+ alias <AC00> =<CAPS>;
+ alias <AA00> =<LCTL>;
+
+ shape "EXTERNAL" {corner=3,
+ {[0,0], [302,0], [302,154], [174,154], [174,198], [166,216], [107,216], [100,198], [100,154], [0,154]}};
+ solid "external" {shape="EXTERNAL"; top=1.1; left=1.1; color="grey10"; priority=10;};
+
+ shape "INTERNAL" {corner=3,
+ {[0,13], [162.2,13], [162.2,0], [286,0], [286,138], [230,138], [230,124], [163,124], [163,138], [96,138], [96,124], [0,124]}};
+ solid "internal" {shape="INTERNAL"; top=7; left=8.5; color="black"; priority=20;};
+
+ shape "TOUCHPAD" {corner=2, {[68,40]}};
+ solid "touchpad" {shape="TOUCHPAD"; top=153; left=104; color="grey20"; priority=20;};
+
+ shape "TOUCHPADBUTTONS" {corner=1,
+ {[0,0], [33.5,0], [33.5,16], [6,16]},
+ {[34.5,0], [68,0], [61, 16], [34.5,16]}};
+ solid "touchleft" {shape="TOUCHPADBUTTONS"; top=198; left=104; color="grey20"; priority=20;};
+
+ shape "NIPPLE" {corner=3, {[7.5,7.5]}};
+ solid "nipple" {shape="NIPPLE"; top=87; left=134; color="blue"; priority=200;};
+ shape "NIPPLEBUTTONS" {corner=2, {[32.5,13]}, {[33.5,0],[66,13]}};
+ solid "nipplebuttons" {shape="NIPPLEBUTTONS"; top=131; left=105; color="grey20"; priority=20;};
+
+ shape "FILLINGS" {corner=1.5, {[19,15]}, {[38,0],[55,15]}};
+ solid "fillings" {shape="FILLINGS"; top=112; left=238; color="grey"; priority=200;};
+
+ shape "FUNC" {corner=1.5, {[16.3,12]}, {[2,0.5], [14,10]}};
+ shape "ESC" {corner=1.5, {[18,12]}, {[2,0.5], [16,10]}};
+ shape "BKSP" {corner=1.5, {[36.5,18]}, {[3,0.5], [33.5,14]}};
+
+ section "Function" {key.color="grey"; priority=100; top=9; left=10; width=290; height=28;
+ row {top=0; left=161.1; keys {{<MENU>,"FUNC",1.1}, {<PRSC>,"FUNC",1.1}, {<NMLK>,"FUNC",1.1},
+ {<PAUS>,"FUNC",1.1}, {<INS>,"FUNC",2.5}, {<HOME>,"FUNC",1.1}, {<PGUP>,"FUNC",1.1}};};
+ row {top=12.5; left=0; keys {{<ESC>,"ESC",0},
+ {<FK01>,"FUNC",2.7}, {<FK02>,"FUNC",1.1}, {<FK03>,"FUNC",1.1}, {<FK04>,"FUNC",1.1},
+ {<FK05>,"FUNC",2.5}, {<FK06>,"FUNC",1.1}, {<FK07>,"FUNC",1.1}, {<FK08>,"FUNC",1.1},
+ {<FK09>,"FUNC",2.5}, {<FK10>,"FUNC",1.1}, {<FK11>,"FUNC",1.1}, {<FK12>,"FUNC",1.1},
+ {<DELE>,"FUNC",2.5}, {<END>, "FUNC",1.1}, {<PGDN>,"FUNC",1.1}};};
+ }; // End of "Function" section
+
+ shape "NORM" {corner=1.5, {[18,18]}, {[3,0.5], [14.8,14]}};
+ shape "TABK" {corner=1.5, {[28,18]}, {[3,0.5], [25,14]}};
+ shape "CAPS" {corner=1.5, {[32,18]}, {[3,0.5], [22,14]}};
+ shape "LFSH" {corner=1.5, {[23,18]}, {[3,0.5], [20,14]}};
+ shape "RTSH" {corner=1.5, {[50,18]}, {[3,1], [47,14]}};
+ shape "RTRN" {corner=1.5, {[0,0],[26.5,0],[26.5,37],[4,37],[4,18],[0,18]},
+ {[3,0.5], [23.5,0.5], [23.5,33], [7,33], [7,14], [3,14]}};
+ shape "SPCE" {corner=1.5,{[95,18]}, {[3,0.5],[92,14]}};
+ shape "LCTL" {corner=1.5, {[27,18]}, {[3,0.5],[24,14]}};
+ shape "LALT" {corner=1.5, {[22,18]}, {[3,0.5],[19,14]}};
+ shape "WIN" {corner=1.5, {[18,18]}, {[3,0.5],[15,14]}};
+
+ section "Alpha" {key.color="grey"; priority=100; top=36; left=10; width=290; height=18;
+ row {top=0; left=0; keys {{<TLDE>, "NORM", 0}, {<AE01>, "NORM", 1}, {<AE02>, "NORM", 1}, {<AE03>, "NORM", 1},
+ {<AE04>, "NORM", 1}, {<AE05>, "NORM", 1}, {<AE06>, "NORM", 1}, {<AE07>, "NORM", 1}, {<AE08>, "NORM", 1},
+ {<AE09>, "NORM", 1}, {<AE10>, "NORM", 1}, {<AE11>, "NORM", 1}, {<AE12>, "NORM", 1}, {<BKSP>, "BKSP", 1}};};
+ row {top=19; left=0; keys {{<TAB>, "TABK", 0}, {<AD01>, "NORM", 1}, {<AD02>, "NORM", 1}, {<AD03>, "NORM", 1},
+ {<AD04>, "NORM", 1}, {<AD05>, "NORM", 1}, {<AD06>, "NORM", 1}, {<AD07>, "NORM", 1}, {<AD08>, "NORM", 1},
+ {<AD09>, "NORM", 1}, {<AD10>, "NORM", 1}, {<AD11>, "NORM", 1}, {<AD12>, "NORM", 1}, {<RTRN>, "RTRN", 1}};};
+ row {top=38; left=0; keys {{<CAPS>, "CAPS", 0}, {<AC01>, "NORM", 1}, {<AC02>, "NORM", 1}, {<AC03>, "NORM", 1},
+ {<AC04>, "NORM", 1}, {<AC05>, "NORM", 1}, {<AC06>, "NORM", 1}, {<AC07>, "NORM", 1}, {<AC08>, "NORM", 1},
+ {<AC09>, "NORM", 1}, {<AC10>, "NORM", 1}, {<AC11>, "NORM", 1}, {<AC12>, "NORM", 1}};};
+ // TODO There's a weird <> key here, check it out:
+ row {top=57; left=0; keys {{<LFSH>, "LFSH", 0}, {<AB01>, "NORM", 1}, {<AB02>, "NORM", 1}, {<AB03>, "NORM", 1},
+ {<AB04>, "NORM", 1}, {<AB05>, "NORM", 1}, {<AB06>, "NORM", 1}, {<AB07>, "NORM", 1}, {<AB08>, "NORM", 1},
+ {<AB09>, "NORM", 1}, {<AB10>, "NORM", 1}, {<AB11>, "NORM", 1}, {<RTSH>, "RTSH", 1}};};
+ row {top=76; left=0; keys {{<LCTL>, "LCTL", 0}, {<FN>, "WIN", 1},{<LWIN>, "WIN", 1}, {<LALT>, "LALT", 1},
+ {<SPCE>, "SPCE", 1}, {<RALT>, "WIN", 1},{<RCTL>, "LALT", 1}};};
+ }; // End of "Alpha" section
+
+ shape "ARROW" {corner=1.5, {[17,15]}, {[2,0.5],[15,13]}};
+ section "Arrows" {key.color="grey"; priority=110; top=112; left=240; width=43; height=31;
+ row {top=0; left=18; keys {{<UP>, "ARROW", 0}};};
+ row {top=16; left=0; keys {{<LEFT>, "ARROW", 0}, {<DOWN>, "ARROW", 1}, {<RGHT>, "ARROW", 1}};};
+ }; // End of "Arrows" section
+
+ shape "LEDS" {corner=3, {[25,7]}};
+ solid "leds" {shape="LEDS"; top=5.7; left=69; color="grey"; priority=10;};
+ shape "LED" {corner=0, {[0,1.5], [3,4.5]}, {[0.5,1.5], [1,0] , [2,0], [2.5,1.5]}};
+ indicator.onColor="green";
+ indicator.offColor="grey";
+ indicator.top=7;
+ indicator.shape="LED";
+ indicator.priority=200;
+ indicator "Num Lock" {left=72;};
+ indicator "Caps Lock" {left=80;};
+ indicator "Scroll Lock" {left=88;};
+
+ text "LATITUDE" {left=10; top=7; text="L A T I T U D E | D620";};
+
+ shape "ROUND" {corner=5, {[10,10]}};
+ shape "POWER" {corner=7, {[15,15]}};
+ section "Topbuttons" {key.color="grey"; priority=110; top=2; left=100;
+ row {top=2; left=0; keys {{<VLUP>, "ROUND", 0}, {<VLDN>, "ROUND", 3}, {<MUTE>, "ROUND", 3}};};
+ row {top=0; left=45; keys {{<POWR>, "POWER", 0}};};
+ }; // End of "TopButtons" section
+};
diff --git a/xorg-server/xkeyboard-config/geometry/digital_vndr/Makefile.am b/xorg-server/xkeyboard-config/geometry/digital_vndr/Makefile.am
index 821c0ccf4..94464f8cb 100644
--- a/xorg-server/xkeyboard-config/geometry/digital_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/geometry/digital_vndr/Makefile.am
@@ -1,4 +1,4 @@
-geomdir = $(xkb_base)/geometry/digital_vndr
-
-dist_geom_DATA = \
-lk pc unix
+geomdir = $(xkb_base)/geometry/digital_vndr
+
+dist_geom_DATA = \
+lk pc unix
diff --git a/xorg-server/xkeyboard-config/geometry/digital_vndr/lk b/xorg-server/xkeyboard-config/geometry/digital_vndr/lk
index fb6b2c72c..cf7c57372 100644
--- a/xorg-server/xkeyboard-config/geometry/digital_vndr/lk
+++ b/xorg-server/xkeyboard-config/geometry/digital_vndr/lk
@@ -1,728 +1,728 @@
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log: lk,v
-// Revision 1.2 1996/06/18 09:12:47 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.2 1995/08/18 21:15:16 William_Walker
-// Upgrade XKB to Protocol Rev. 0.64
-// [1995/08/18 20:41:46 William_Walker]
-//
-// Revision 1.1.2.5 1995/08/11 19:35:47 William_Walker
-// Sync up with Erik's pool.
-// [1995/08/11 18:35:58 William_Walker]
-//
-// Revision 1.1.2.4 1995/06/27 12:17:28 William_Walker
-// Rename <TLDE> to ISO9995 compliant <AE00>.
-// [1995/06/26 20:23:07 William_Walker]
-//
-// Revision 1.1.2.3 1995/06/09 20:54:36 William_Walker
-// Add VT105 layout support and ISO group support
-// [1995/06/09 20:40:38 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:21:16 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:05:43 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: lk,v Revision: 1.2 (DEC) Date: 1996/01/24 12:16:00
-//
-xkb_geometry "lk201" {
- width = 530;
- height = 170;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[23,19] },
- { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
- { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [28,19] }, { [3,2], [25,16] } };
- shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
- shape "SPCE" { { [171,19] },{ [3,2], [168,16]} };
- shape "LEDS" { [ 30,15] };
- shape "LED" { [ 5, 2] };
-
- section.left= 27;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Function" { top = 20;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 19 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 19 }, <FK12>, <FK13>, <FK14>,
- { <FK17>, 98 }, <FK18>, <FK19>, <FK20>
- };
- };
- };
-
- section "Editing" { top = 20; left = 350;
- row { top = 1;
- keys { <HELP>, { <DO>, "LONG" } };
- };
- row { top = 41;
- keys { <FIND>, <INS>, <DELE> };
- };
- row { top = 61;
- keys { <SELE>, <PGUP>, <PGDN> };
- };
- row { top = 81; left = 20;
- keys { <UP> };
- };
- row { top = 101;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 60; left = 426;
- row { top = 1;
- keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
- };
- row { top = 21;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6>, <KPCO> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
- };
- row { top = 81;
- keys { { <KP0>, "LONG" }, <KPDL> };
- };
- };
-
- section "Alpha" { top = 60;
- row { top = 1; left = 15;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "MED" }
- };
- };
- row { top = 21; left = 15;
- keys { { <TAB>, "MED" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
-
- };
- row { top = 41;
- keys { <LCTL>,
- { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LONG" },
- <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "LONG" }
- };
- };
- row { top = 81; left = 26;
- keys { { <LCMP>, "LONG" },
- { <SPCE>, "SPCE" }
- };
- };
- };
-
- section.left = 341;
- section.top = 3;
-
- section "Indicators" {
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.top = 10;
- indicator.shape= "LED";
- indicator "Scroll Lock" { left = 9; };
- indicator "Caps Lock" { left = 27; };
- indicator "Compose" { left = 45; };
- indicator "Wait" { left = 63; };
- text.top = 4;
- text.color = "black";
- text "HoldScreenLabel" {left = 5; text="Hold\n"; };
- text "CapsLockLabel" {left = 23; text="Lock\n"; };
- text "ComposeLabel" {left = 37; text="Compose\n"; };
- text "WaitLabel" {left = 60; text="Wait\n"; };
- };
-};
-
-xkb_geometry "lk401" {
-
- width = 480;
- height = 180;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[23,19] },
- { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
- { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [28,19] }, { [3,2], [25,16] } };
- shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
- shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
- shape "LEDS" { [ 36,15] };
- shape "LED" { [ 5, 2] };
-
- section.left= 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text "Logo" {left = 20; top = 10; text="digital\n"; };
-
- section "Function" { top = 20;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
- { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
- };
- };
- };
-
- section "Editing" { top = 20; left = 320;
- row { top = 1;
- keys { <HELP>, { <DO>, "LONG" } };
- };
- row { top = 41;
- keys { <FIND>, <INS>, <DELE> };
- };
- row { top = 61;
- keys { <SELE>, <PGUP>, <PGDN> };
- };
- row { top = 81; left= 20;
- keys { <UP> };
- };
- row { top = 101;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 60; left = 385;
- row { top = 1;
- keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
- };
- row {
- top = 21;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6>, <KPCO> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
- };
- row { top = 81;
- keys { { <KP0>, "LONG" }, <KPDL> };
- };
- };
-
- section "Alpha" { top = 60;
- row { top = 1; left = 15;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "MED" }
- };
- };
- row { top = 21; left = 15;
- keys { { <TAB>, "MED" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
-
- };
- row { top = 41;
- keys { <LCTL>,
- { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LONG" },
- <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "LONG" }
- };
- };
- row { top = 81; left = 29;
- keys { { <LCMP>, "MED" },
- { <LALT>, "MED" },
- { <SPCE>, "SPCE" },
- { <RALT>, "MED" },
- { <RCMP>, "MED" }
- };
- };
- };
-
- section.left = 69;
- section.top = 3;
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- cornerRadius = 1;
- shape = "LEDS";
- color = "grey";
- };
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.shape = "LED";
- indicator.top = 1;
- indicator "Scroll Lock" { left = 3; };
- indicator "Caps Lock" { left = 22; };
- };
- section "IndicatorLabels" {
- text.top = 4;
- text.color = "black";
- text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
- text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
- };
-};
-
-xkb_geometry "lk450" {
-
- width = 480;
- height = 180;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[23,19] },
- { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
- { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [28,19] }, { [3,2], [25,16] } };
- shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
- shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
- shape "LEDS" { [ 36,15] };
- shape "LED" { [ 5, 2] };
-
- section.left= 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text "Logo" {left = 20; top = 10; text="digital\n"; };
-
- section "Function" { top = 20;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
- { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
- };
- };
- };
-
- section "Editing" { top = 20; left = 320;
- row { top = 1;
- keys { <HELP>, { <DO>, "LONG" } };
- };
- row { top = 41;
- keys { <FIND>, <INS>, <DELE> };
- };
- row { top = 61;
- keys { <SELE>, <PGUP>, <PGDN> };
- };
- row { top = 81; left= 20;
- keys { <UP> };
- };
- row { top = 101;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 60; left = 385;
- row { top = 1;
- keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
- };
- row {
- top = 21;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6>, <KPCO> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
- };
- row { top = 81;
- keys { { <KP0>, "LONG" }, <KPDL> };
- };
- };
-
- section "Alpha" { top = 60;
- row { top = 1; left = 15;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "MED" }
- };
- };
- row { top = 21; left = 15;
- keys { { <TAB>, "MED" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
-
- };
- row { top = 41;
- keys { <LCTL>,
- { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LONG" },
- <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "LONG" }
- };
- };
- row { top = 81; left = 29;
- keys { { <LCMP>, "MED" },
- { <LALT>, "MED" },
- { <SPCE>, "SPCE" },
- { <RALT>, "MED" },
- { <RCMP>, "MED" }
- };
- };
- };
-
- section.left = 69;
- section.top = 3;
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- cornerRadius = 1;
- shape = "LEDS";
- color = "grey";
- };
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.shape = "LED";
- indicator.top = 1;
- indicator "Scroll Lock" { left = 3; };
- indicator "Caps Lock" { left = 22; };
- };
- section "IndicatorLabels" {
- text.top = 4;
- text.color = "black";
- text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
- text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
- };
-};
-
-xkb_geometry "lk401bj"
-{
- width = 480;
- height = 180;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[23,19] },
- { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
- { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [28,19] }, { [3,2], [25,16] } };
- shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
- shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
- shape "LEDS" { [ 30,15] };
- shape "LED" { [ 5, 2] };
-
- section.left= 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text "Logo" {left = 20; top = 10; text="digital\n"; };
-
- section "Function" { top = 20;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
- { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
- };
- };
- };
-
- section "Editing" { top = 20; left = 320;
- row { top = 1;
- keys { <HELP>, { <DO>, "LONG" } };
- };
- row { top = 41;
- keys { <FIND>, <INS>, <DELE> };
- };
- row { top = 61;
- keys { <SELE>, <PGUP>, <PGDN> };
- };
- row { top = 81; left = 20;
- keys { <UP> };
- };
- row { top = 101;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 60; left = 385;
- row { top = 1;
- keys { <PF1>, <PF2>, <PF3>, <PF4> };
- };
- row { top = 21;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6>, <KPCO> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
- };
- row { top = 81;
- keys { { <KP0>, "LONG" }, <KPDL> };
- };
- };
-
- section "Alpha" { top = 60;
- row { top = 1; left = 15;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "MED" }
- };
- };
- row { top = 21; left = 15;
- keys { { <TAB>, "MED" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 41;
- keys { <LCTL>,
- { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LONG" },
- <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "LONG" }
- };
- };
- row { top = 81; left = 29;
- keys { { <LCMP>, "MED" },
- { <LALT>, "MED" },
- { <SPCE>, "SPCE" },
- { <RALT>, "MED" },
- { <RCMP>, "MED" }
- };
- };
- };
-
- section.left = 69;
- section.top = 3;
-
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- cornerRadius = 1;
- shape = "LEDS";
- color = "grey";
- };
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.top = 1;
- indicator.shape= "LED";
- indicator "Scroll Lock" { left = 3; };
- indicator "Caps Lock" { left = 22; };
- text.top = 4;
- text.color = "black";
- text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
- text "CapsLockLabel" {left = 19; text="Caps\nLock"; };
- };
-};
-
-xkb_geometry "lk401jj" {
-
- width = 460;
- height = 180;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[28,23] },
- { [0,0], [28,0], [28,39], [5,39], [5,19], [0,19] },
- { [3,2], [25,2], [25,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "LONG1" { { [32,19] }, { [3,2], [29,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [28,19] }, { [3,2], [25,16] } };
- shape "MED1" { { [23,19] }, { [3,2], [20,16] } };
- shape "CTRL" { { [43,19] }, { [3,2], [38,16] } };
- shape "SPCE" { { [55,19] },{ [3,2], [53,16]} };
- shape "LEDS" { [ 56,15] };
- shape "LED" { [ 5, 2] };
-
- section.left = 5;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text "Logo" {left = 7; top = 10; text="digital\n"; };
-
- section "Function" { top = 40;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 18 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 18 }, <FK12>, <FK13>, <FK14>,
- { <FK17>, 73 }, <FK18>, <FK19>, <FK20>
- };
- };
- };
-
- section "Editing" { top = 40; left = 313;
- row { top = 1;
- keys { <HELP>, { <DO>, "LONG" } };
- };
- row { top = 31;
- keys { <FIND>, <INS>, <DELE> };
- };
- row { top = 51;
- keys { <SELE>, <PGUP>, <PGDN> };
- };
- row { top = 71; left= 20;
- keys { <UP> };
- };
- row { top = 91;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 70; left = 377;
- row { top = 1;
- keys { <PF1>, <PF2>, <PF3>, <PF4> };
- };
- row { top = 21;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6>, <KPCO> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
- };
- row { top = 81;
- keys { { <KP0>, "LONG" }, <KPDL> };
- };
- };
-
- section "Alpha" { top = 70;
- row { top = 1; left = 7;
- keys { { <AE00>, "MED1" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <AB00>, { <BKSP>, "MED1" }
- };
- };
- row { top = 21; left = 7;
- keys { { <TAB>, "LONG1" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 41;
- keys { { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { <CAPS>, { <LFSH>, "LONG1" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "MED" }
- };
- };
- row { top = 81; left = 7;
- keys { { <LCMP>, "LONG" },
- { <LALT>, "LONG" },
- { <MUHE>, "LONG" },
- { <SPCE>, "SPCE" },
- { <KANJ>, "LONG" },
- { <HIRA>, "LONG" },
- <RALT>, <RCMP>
- };
- };
- };
-
- section.left = 315;
- section.top = 20;
-
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- cornerRadius = 1;
- shape = "LEDS";
- color = "grey";
- };
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.top = 11;
- indicator.shape= "LED";
- indicator "Scroll Lock" { left = 6; };
- indicator "Caps Lock" { left = 26; };
- text.top = 4;
- text.color = "black";
- text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
- text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
- };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log: lk,v
+// Revision 1.2 1996/06/18 09:12:47 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.2 1995/08/18 21:15:16 William_Walker
+// Upgrade XKB to Protocol Rev. 0.64
+// [1995/08/18 20:41:46 William_Walker]
+//
+// Revision 1.1.2.5 1995/08/11 19:35:47 William_Walker
+// Sync up with Erik's pool.
+// [1995/08/11 18:35:58 William_Walker]
+//
+// Revision 1.1.2.4 1995/06/27 12:17:28 William_Walker
+// Rename <TLDE> to ISO9995 compliant <AE00>.
+// [1995/06/26 20:23:07 William_Walker]
+//
+// Revision 1.1.2.3 1995/06/09 20:54:36 William_Walker
+// Add VT105 layout support and ISO group support
+// [1995/06/09 20:40:38 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:21:16 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:05:43 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: lk,v Revision: 1.2 (DEC) Date: 1996/01/24 12:16:00
+//
+xkb_geometry "lk201" {
+ width = 530;
+ height = 170;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[23,19] },
+ { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
+ { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [28,19] }, { [3,2], [25,16] } };
+ shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
+ shape "SPCE" { { [171,19] },{ [3,2], [168,16]} };
+ shape "LEDS" { [ 30,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left= 27;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Function" { top = 20;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 19 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 19 }, <FK12>, <FK13>, <FK14>,
+ { <FK17>, 98 }, <FK18>, <FK19>, <FK20>
+ };
+ };
+ };
+
+ section "Editing" { top = 20; left = 350;
+ row { top = 1;
+ keys { <HELP>, { <DO>, "LONG" } };
+ };
+ row { top = 41;
+ keys { <FIND>, <INS>, <DELE> };
+ };
+ row { top = 61;
+ keys { <SELE>, <PGUP>, <PGDN> };
+ };
+ row { top = 81; left = 20;
+ keys { <UP> };
+ };
+ row { top = 101;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 60; left = 426;
+ row { top = 1;
+ keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
+ };
+ row { top = 21;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6>, <KPCO> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "LONG" }, <KPDL> };
+ };
+ };
+
+ section "Alpha" { top = 60;
+ row { top = 1; left = 15;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "MED" }
+ };
+ };
+ row { top = 21; left = 15;
+ keys { { <TAB>, "MED" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+
+ };
+ row { top = 41;
+ keys { <LCTL>,
+ { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LONG" },
+ <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "LONG" }
+ };
+ };
+ row { top = 81; left = 26;
+ keys { { <LCMP>, "LONG" },
+ { <SPCE>, "SPCE" }
+ };
+ };
+ };
+
+ section.left = 341;
+ section.top = 3;
+
+ section "Indicators" {
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.top = 10;
+ indicator.shape= "LED";
+ indicator "Scroll Lock" { left = 9; };
+ indicator "Caps Lock" { left = 27; };
+ indicator "Compose" { left = 45; };
+ indicator "Wait" { left = 63; };
+ text.top = 4;
+ text.color = "black";
+ text "HoldScreenLabel" {left = 5; text="Hold\n"; };
+ text "CapsLockLabel" {left = 23; text="Lock\n"; };
+ text "ComposeLabel" {left = 37; text="Compose\n"; };
+ text "WaitLabel" {left = 60; text="Wait\n"; };
+ };
+};
+
+xkb_geometry "lk401" {
+
+ width = 480;
+ height = 180;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[23,19] },
+ { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
+ { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [28,19] }, { [3,2], [25,16] } };
+ shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
+ shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
+ shape "LEDS" { [ 36,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left= 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text "Logo" {left = 20; top = 10; text="digital\n"; };
+
+ section "Function" { top = 20;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
+ { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
+ };
+ };
+ };
+
+ section "Editing" { top = 20; left = 320;
+ row { top = 1;
+ keys { <HELP>, { <DO>, "LONG" } };
+ };
+ row { top = 41;
+ keys { <FIND>, <INS>, <DELE> };
+ };
+ row { top = 61;
+ keys { <SELE>, <PGUP>, <PGDN> };
+ };
+ row { top = 81; left= 20;
+ keys { <UP> };
+ };
+ row { top = 101;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 60; left = 385;
+ row { top = 1;
+ keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
+ };
+ row {
+ top = 21;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6>, <KPCO> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "LONG" }, <KPDL> };
+ };
+ };
+
+ section "Alpha" { top = 60;
+ row { top = 1; left = 15;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "MED" }
+ };
+ };
+ row { top = 21; left = 15;
+ keys { { <TAB>, "MED" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+
+ };
+ row { top = 41;
+ keys { <LCTL>,
+ { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LONG" },
+ <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "LONG" }
+ };
+ };
+ row { top = 81; left = 29;
+ keys { { <LCMP>, "MED" },
+ { <LALT>, "MED" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "MED" },
+ { <RCMP>, "MED" }
+ };
+ };
+ };
+
+ section.left = 69;
+ section.top = 3;
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ cornerRadius = 1;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.shape = "LED";
+ indicator.top = 1;
+ indicator "Scroll Lock" { left = 3; };
+ indicator "Caps Lock" { left = 22; };
+ };
+ section "IndicatorLabels" {
+ text.top = 4;
+ text.color = "black";
+ text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
+ text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
+ };
+};
+
+xkb_geometry "lk450" {
+
+ width = 480;
+ height = 180;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[23,19] },
+ { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
+ { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [28,19] }, { [3,2], [25,16] } };
+ shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
+ shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
+ shape "LEDS" { [ 36,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left= 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text "Logo" {left = 20; top = 10; text="digital\n"; };
+
+ section "Function" { top = 20;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
+ { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
+ };
+ };
+ };
+
+ section "Editing" { top = 20; left = 320;
+ row { top = 1;
+ keys { <HELP>, { <DO>, "LONG" } };
+ };
+ row { top = 41;
+ keys { <FIND>, <INS>, <DELE> };
+ };
+ row { top = 61;
+ keys { <SELE>, <PGUP>, <PGDN> };
+ };
+ row { top = 81; left= 20;
+ keys { <UP> };
+ };
+ row { top = 101;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 60; left = 385;
+ row { top = 1;
+ keys { <KPF1>, <KPF2>, <KPF3>, <KPF4> };
+ };
+ row {
+ top = 21;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6>, <KPCO> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "LONG" }, <KPDL> };
+ };
+ };
+
+ section "Alpha" { top = 60;
+ row { top = 1; left = 15;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "MED" }
+ };
+ };
+ row { top = 21; left = 15;
+ keys { { <TAB>, "MED" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+
+ };
+ row { top = 41;
+ keys { <LCTL>,
+ { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LONG" },
+ <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "LONG" }
+ };
+ };
+ row { top = 81; left = 29;
+ keys { { <LCMP>, "MED" },
+ { <LALT>, "MED" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "MED" },
+ { <RCMP>, "MED" }
+ };
+ };
+ };
+
+ section.left = 69;
+ section.top = 3;
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ cornerRadius = 1;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.shape = "LED";
+ indicator.top = 1;
+ indicator "Scroll Lock" { left = 3; };
+ indicator "Caps Lock" { left = 22; };
+ };
+ section "IndicatorLabels" {
+ text.top = 4;
+ text.color = "black";
+ text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
+ text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
+ };
+};
+
+xkb_geometry "lk401bj"
+{
+ width = 480;
+ height = 180;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[23,19] },
+ { [0,0], [23,0], [23,39], [5,39], [5,19], [0,19] },
+ { [3,2], [20,2], [20,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [28,19] }, { [3,2], [25,16] } };
+ shape "CAPS" { { [28,19] }, { [3,2], [18,16] } };
+ shape "SPCE" { { [131,19] },{ [3,2], [128,16]} };
+ shape "LEDS" { [ 30,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left= 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text "Logo" {left = 20; top = 10; text="digital\n"; };
+
+ section "Function" { top = 20;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 15 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 15 }, <FK12>, <FK13>, <FK14>,
+ { <FK17>, 75 }, <FK18>, <FK19>, <FK20>
+ };
+ };
+ };
+
+ section "Editing" { top = 20; left = 320;
+ row { top = 1;
+ keys { <HELP>, { <DO>, "LONG" } };
+ };
+ row { top = 41;
+ keys { <FIND>, <INS>, <DELE> };
+ };
+ row { top = 61;
+ keys { <SELE>, <PGUP>, <PGDN> };
+ };
+ row { top = 81; left = 20;
+ keys { <UP> };
+ };
+ row { top = 101;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 60; left = 385;
+ row { top = 1;
+ keys { <PF1>, <PF2>, <PF3>, <PF4> };
+ };
+ row { top = 21;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6>, <KPCO> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "LONG" }, <KPDL> };
+ };
+ };
+
+ section "Alpha" { top = 60;
+ row { top = 1; left = 15;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "MED" }
+ };
+ };
+ row { top = 21; left = 15;
+ keys { { <TAB>, "MED" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 41;
+ keys { <LCTL>,
+ { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LONG" },
+ <AB00>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "LONG" }
+ };
+ };
+ row { top = 81; left = 29;
+ keys { { <LCMP>, "MED" },
+ { <LALT>, "MED" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "MED" },
+ { <RCMP>, "MED" }
+ };
+ };
+ };
+
+ section.left = 69;
+ section.top = 3;
+
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ cornerRadius = 1;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.top = 1;
+ indicator.shape= "LED";
+ indicator "Scroll Lock" { left = 3; };
+ indicator "Caps Lock" { left = 22; };
+ text.top = 4;
+ text.color = "black";
+ text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
+ text "CapsLockLabel" {left = 19; text="Caps\nLock"; };
+ };
+};
+
+xkb_geometry "lk401jj" {
+
+ width = 460;
+ height = 180;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[28,23] },
+ { [0,0], [28,0], [28,39], [5,39], [5,19], [0,19] },
+ { [3,2], [25,2], [25,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "LONG1" { { [32,19] }, { [3,2], [29,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [28,19] }, { [3,2], [25,16] } };
+ shape "MED1" { { [23,19] }, { [3,2], [20,16] } };
+ shape "CTRL" { { [43,19] }, { [3,2], [38,16] } };
+ shape "SPCE" { { [55,19] },{ [3,2], [53,16]} };
+ shape "LEDS" { [ 56,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left = 5;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text "Logo" {left = 7; top = 10; text="digital\n"; };
+
+ section "Function" { top = 40;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 18 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 18 }, <FK12>, <FK13>, <FK14>,
+ { <FK17>, 73 }, <FK18>, <FK19>, <FK20>
+ };
+ };
+ };
+
+ section "Editing" { top = 40; left = 313;
+ row { top = 1;
+ keys { <HELP>, { <DO>, "LONG" } };
+ };
+ row { top = 31;
+ keys { <FIND>, <INS>, <DELE> };
+ };
+ row { top = 51;
+ keys { <SELE>, <PGUP>, <PGDN> };
+ };
+ row { top = 71; left= 20;
+ keys { <UP> };
+ };
+ row { top = 91;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 70; left = 377;
+ row { top = 1;
+ keys { <PF1>, <PF2>, <PF3>, <PF4> };
+ };
+ row { top = 21;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6>, <KPCO> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "TALL" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "LONG" }, <KPDL> };
+ };
+ };
+
+ section "Alpha" { top = 70;
+ row { top = 1; left = 7;
+ keys { { <AE00>, "MED1" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <AB00>, { <BKSP>, "MED1" }
+ };
+ };
+ row { top = 21; left = 7;
+ keys { { <TAB>, "LONG1" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 41;
+ keys { { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { <CAPS>, { <LFSH>, "LONG1" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "MED" }
+ };
+ };
+ row { top = 81; left = 7;
+ keys { { <LCMP>, "LONG" },
+ { <LALT>, "LONG" },
+ { <MUHE>, "LONG" },
+ { <SPCE>, "SPCE" },
+ { <KANJ>, "LONG" },
+ { <HIRA>, "LONG" },
+ <RALT>, <RCMP>
+ };
+ };
+ };
+
+ section.left = 315;
+ section.top = 20;
+
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ cornerRadius = 1;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.top = 11;
+ indicator.shape= "LED";
+ indicator "Scroll Lock" { left = 6; };
+ indicator "Caps Lock" { left = 26; };
+ text.top = 4;
+ text.color = "black";
+ text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
+ text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
+ };
+};
diff --git a/xorg-server/xkeyboard-config/geometry/digital_vndr/pc b/xorg-server/xkeyboard-config/geometry/digital_vndr/pc
index 45589fca0..aaceeba85 100644
--- a/xorg-server/xkeyboard-config/geometry/digital_vndr/pc
+++ b/xorg-server/xkeyboard-config/geometry/digital_vndr/pc
@@ -1,349 +1,349 @@
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log: pc,v
-// Revision 1.2 1996/06/18 09:12:50 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.2 1995/08/18 21:15:18 William_Walker
-// Upgrade XKB to Protocol Rev. 0.64
-// [1995/08/18 20:41:49 William_Walker]
-//
-// Revision 1.1.2.4 1995/08/11 19:35:48 William_Walker
-// Sync up with Erik's pool.
-// [1995/08/11 18:36:03 William_Walker]
-//
-// Revision 1.1.2.3 1995/06/27 12:17:29 William_Walker
-// Rename <TLDE> to ISO9995 compliant <AE00>.
-// [1995/06/26 20:23:10 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:21:19 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:05:51 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: pc,v Revision: 1.2 (DEC) Date: 1996/02/02 14:40:25
-//
-partial xkb_geometry "common" {
- width = 480;
- height = 200;
-
- shape.cornerRadius = 1;
- shape "NORM" { primary = { [18,19] }, { [3,2], [15,16] } };
- shape "KP0" { primary = { [37,19] }, { [3,2], [34,16] } };
- shape "KPAD" { primary = { [18,39] }, { [3,2], [15,36] } };
- shape "LEDS" { [78,22] };
- shape "LED" { [5,2] };
-
- text.color = "black";
- section.left = 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Function" { top = 40;
- row { top = 1;
- keys { <ESC>,
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 10 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 10 }, <FK10>, <FK11>, <FK12>
- };
- };
- };
-
- section "Editing" { top = 40; left = 308;
- row { top = 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row { top = 41;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row { top = 61;
- keys { <DELE>, <END>, <PGDN> };
- };
- row { top = 101; left = 20;
- keys { <UP> };
- };
- row { top = 121;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- };
-
- section "Keypad" { top = 80; left = 374;
- row { top = 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row { top = 21;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
- };
- row { top = 41;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row { top = 61;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
- };
- row { top = 81;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- };
-};
-
-partial xkb_geometry "leds_on_keys" {
- section.top = 40;
- section.left = 17;
- section "LedPanel" {
- indicator.onColor = "#00ff00";
- indicator.offColor = "#001000";
- indicator.shape = "LED";
- indicator "Scroll Lock" { left = 317; top = 5; };
- indicator "Num Lock" { left = 364; top = 45; };
- indicator "Caps Lock" { left = 10; top = 85; };
- };
-
- section.left = 375;
- section.top = 40;
- section "LogoPanel" {
- solid "logo_panel" { top = 0; left = 0;
- shape = "LEDS";
- color = "grey";
- };
- text "Logo" {left = 28; top = 10; text="digital\n"; };
- };
-};
-
-partial xkb_geometry "leds_alone" {
- section.left = 375;
- section.top = 40;
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- shape = "LEDS";
- color = "grey";
- };
- indicator.top = 16;
- indicator.onColor = "#00ff00";
- indicator.offColor = "#001000";
- indicator.shape = "LED";
- indicator "Num Lock" { left = 3; };
- indicator "Caps Lock" { left = 26; };
- indicator "Scroll Lock" { left = 50; };
- text "Logo" {left = 2; top = 3; text="digital\n"; };
- };
- section "IndicatorLabels" {
- text.top = 11;
- text "NumLockLabel" {left = 10; text="Num\nLock"; };
- text "CapsLockLabel" {left = 33; text="Caps\nLock"; };
- text "ScrollLockLabel" {left = 58; text="Scroll\nLock"; };
- };
-};
-
-xkb_geometry "pc101" {
- include "digital_vndr/pc(common)"
-
- shape.cornerRadius = 1;
- shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
- shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "RTRN" { primary = { [41,19] }, { [3,2], [38,16] } };
- shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
- shape "LFSH" { primary = { [41,19] }, { [3,2], [38,16] } };
- shape "RTSH" { primary = { [51,19] }, { [3,2], [49,16] } };
- shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
-
- section.left = 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Alpha" { top = 80;
- row { top = 1;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row { top = 21;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
-
- };
- row { top = 41;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
- <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row { top = 81;
- key.shape = "MODK";
- keys { <LCTL>,
- { <LALT>, 20 },
- { <SPCE>, "SPCE" },
- <RALT>,
- { <RCTL>, 21 }
- };
- };
- };
-};
-
-xkb_geometry "pc102" {
- include "digital_vndr/pc(common)"
-
- shape.cornerRadius = 1;
- shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
- shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "RTRN" {
- approx = { [0,0],[28,19] },
- { [0,0], [27,0], [27,39], [5,39], [5,19], [0,19] },
- { [3,2], [24,2], [24,36], [8,36], [8,16], [3,16] }
- };
- shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
- shape "LFSH" { primary = { [22,19] }, { [3,2], [19,16] } };
- shape "RTSH" { primary = { [51,19] }, { [3,2], [49,16] } };
- shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
-
- section.left = 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Alpha" { top = 80;
- row { top = 1;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row { top = 21;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
-
- };
- row { top = 41;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <AC12>
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LFSH" },
- <BKSL>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row { top = 81;
- key.shape = "MODK";
- keys { <LCTL>,
- { <LALT>, 20 },
- { <SPCE>, "SPCE" },
- <RALT>,
- { <RCTL>, 21 }
- };
- };
- };
-};
-
-xkb_geometry "pcxaj" {
- include "digital_vndr/pc(common)"
-
- shape.cornerRadius = 1;
- shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
- shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "RTRN" { primary = { [22,19] }, { [3,2], [19,16] } };
- shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
- shape "LFSH" { primary = { [41,19] }, { [3,2], [38,16] } };
- shape "RTSH" { primary = { [32,19] }, { [3,2], [29,16] } };
- shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
- shape "SPCE" { primary = { [114,19]}, { [3,2], [111,16]} };
-
- section.left = 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Alpha" { top = 80;
- row { top = 1;
- keys { <AE00>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row { top = 21;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row { top = 41;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <AC12>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 61;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
- <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
- { <RTSH>, "RTSH" }
- };
- };
- row { top = 81;
- key.shape = "MODK";
- keys { <LCTL>, <LALT>,
- { <MUHE>, "NORM" },
- { <SPCE>, "SPCE" },
- { <KANJ>, "NORM" },
- { <HIRA>, "NORM" },
- <RALT>, <RCTL>
- };
- };
- };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log: pc,v
+// Revision 1.2 1996/06/18 09:12:50 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.2 1995/08/18 21:15:18 William_Walker
+// Upgrade XKB to Protocol Rev. 0.64
+// [1995/08/18 20:41:49 William_Walker]
+//
+// Revision 1.1.2.4 1995/08/11 19:35:48 William_Walker
+// Sync up with Erik's pool.
+// [1995/08/11 18:36:03 William_Walker]
+//
+// Revision 1.1.2.3 1995/06/27 12:17:29 William_Walker
+// Rename <TLDE> to ISO9995 compliant <AE00>.
+// [1995/06/26 20:23:10 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:21:19 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:05:51 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: pc,v Revision: 1.2 (DEC) Date: 1996/02/02 14:40:25
+//
+partial xkb_geometry "common" {
+ width = 480;
+ height = 200;
+
+ shape.cornerRadius = 1;
+ shape "NORM" { primary = { [18,19] }, { [3,2], [15,16] } };
+ shape "KP0" { primary = { [37,19] }, { [3,2], [34,16] } };
+ shape "KPAD" { primary = { [18,39] }, { [3,2], [15,36] } };
+ shape "LEDS" { [78,22] };
+ shape "LED" { [5,2] };
+
+ text.color = "black";
+ section.left = 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Function" { top = 40;
+ row { top = 1;
+ keys { <ESC>,
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 10 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 10 }, <FK10>, <FK11>, <FK12>
+ };
+ };
+ };
+
+ section "Editing" { top = 40; left = 308;
+ row { top = 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row { top = 41;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row { top = 61;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row { top = 101; left = 20;
+ keys { <UP> };
+ };
+ row { top = 121;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ };
+
+ section "Keypad" { top = 80; left = 374;
+ row { top = 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row { top = 21;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
+ };
+ row { top = 41;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row { top = 61;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
+ };
+ row { top = 81;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ };
+};
+
+partial xkb_geometry "leds_on_keys" {
+ section.top = 40;
+ section.left = 17;
+ section "LedPanel" {
+ indicator.onColor = "#00ff00";
+ indicator.offColor = "#001000";
+ indicator.shape = "LED";
+ indicator "Scroll Lock" { left = 317; top = 5; };
+ indicator "Num Lock" { left = 364; top = 45; };
+ indicator "Caps Lock" { left = 10; top = 85; };
+ };
+
+ section.left = 375;
+ section.top = 40;
+ section "LogoPanel" {
+ solid "logo_panel" { top = 0; left = 0;
+ shape = "LEDS";
+ color = "grey";
+ };
+ text "Logo" {left = 28; top = 10; text="digital\n"; };
+ };
+};
+
+partial xkb_geometry "leds_alone" {
+ section.left = 375;
+ section.top = 40;
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.top = 16;
+ indicator.onColor = "#00ff00";
+ indicator.offColor = "#001000";
+ indicator.shape = "LED";
+ indicator "Num Lock" { left = 3; };
+ indicator "Caps Lock" { left = 26; };
+ indicator "Scroll Lock" { left = 50; };
+ text "Logo" {left = 2; top = 3; text="digital\n"; };
+ };
+ section "IndicatorLabels" {
+ text.top = 11;
+ text "NumLockLabel" {left = 10; text="Num\nLock"; };
+ text "CapsLockLabel" {left = 33; text="Caps\nLock"; };
+ text "ScrollLockLabel" {left = 58; text="Scroll\nLock"; };
+ };
+};
+
+xkb_geometry "pc101" {
+ include "digital_vndr/pc(common)"
+
+ shape.cornerRadius = 1;
+ shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
+ shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "RTRN" { primary = { [41,19] }, { [3,2], [38,16] } };
+ shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
+ shape "LFSH" { primary = { [41,19] }, { [3,2], [38,16] } };
+ shape "RTSH" { primary = { [51,19] }, { [3,2], [49,16] } };
+ shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
+
+ section.left = 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Alpha" { top = 80;
+ row { top = 1;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row { top = 21;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+
+ };
+ row { top = 41;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
+ <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row { top = 81;
+ key.shape = "MODK";
+ keys { <LCTL>,
+ { <LALT>, 20 },
+ { <SPCE>, "SPCE" },
+ <RALT>,
+ { <RCTL>, 21 }
+ };
+ };
+ };
+};
+
+xkb_geometry "pc102" {
+ include "digital_vndr/pc(common)"
+
+ shape.cornerRadius = 1;
+ shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
+ shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[28,19] },
+ { [0,0], [27,0], [27,39], [5,39], [5,19], [0,19] },
+ { [3,2], [24,2], [24,36], [8,36], [8,16], [3,16] }
+ };
+ shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
+ shape "LFSH" { primary = { [22,19] }, { [3,2], [19,16] } };
+ shape "RTSH" { primary = { [51,19] }, { [3,2], [49,16] } };
+ shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
+
+ section.left = 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Alpha" { top = 80;
+ row { top = 1;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row { top = 21;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+
+ };
+ row { top = 41;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <AC12>
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LFSH" },
+ <BKSL>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row { top = 81;
+ key.shape = "MODK";
+ keys { <LCTL>,
+ { <LALT>, 20 },
+ { <SPCE>, "SPCE" },
+ <RALT>,
+ { <RCTL>, 21 }
+ };
+ };
+ };
+};
+
+xkb_geometry "pcxaj" {
+ include "digital_vndr/pc(common)"
+
+ shape.cornerRadius = 1;
+ shape "BKSP" { primary = { [36,19] }, { [3,2], [33,16] } };
+ shape "TABK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "RTRN" { primary = { [22,19] }, { [3,2], [19,16] } };
+ shape "CAPS" { primary = { [32,19] }, { [3,2], [29,16] } };
+ shape "LFSH" { primary = { [41,19] }, { [3,2], [38,16] } };
+ shape "RTSH" { primary = { [32,19] }, { [3,2], [29,16] } };
+ shape "MODK" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "BKSL" { primary = { [27,19] }, { [3,2], [24,16] } };
+ shape "SPCE" { primary = { [114,19]}, { [3,2], [111,16]} };
+
+ section.left = 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Alpha" { top = 80;
+ row { top = 1;
+ keys { <AE00>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row { top = 21;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row { top = 41;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <AC12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 61;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
+ <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row { top = 81;
+ key.shape = "MODK";
+ keys { <LCTL>, <LALT>,
+ { <MUHE>, "NORM" },
+ { <SPCE>, "SPCE" },
+ { <KANJ>, "NORM" },
+ { <HIRA>, "NORM" },
+ <RALT>, <RCTL>
+ };
+ };
+ };
+};
diff --git a/xorg-server/xkeyboard-config/geometry/digital_vndr/unix b/xorg-server/xkeyboard-config/geometry/digital_vndr/unix
index 6c13d4326..f3f180ce2 100644
--- a/xorg-server/xkeyboard-config/geometry/digital_vndr/unix
+++ b/xorg-server/xkeyboard-config/geometry/digital_vndr/unix
@@ -1,227 +1,227 @@
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log: unix,v
-// Revision 1.2 1996/06/18 09:12:53 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.2.3 1995/06/27 12:17:30 William_Walker
-// Rename <TLDE> to ISO9995 compliant <AE00>.
-// [1995/06/26 20:23:12 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:21:23 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:05:56 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: unix,v Revision: 1.2 (DEC) Date: 1996/01/24 12:16:
-//
-xkb_geometry "unix" {
-
- width = 340;
- height = 160;
- shape.cornerRadius = 1;
-
- shape "NORM" { primary = { [18,19] }, { [3,2], [15,16] } };
- shape "AE00" { primary = { [28,19] }, { [3,2], [25,16] } };
- shape "BKSP" { primary = { [46,19] }, { [3,2], [43,16] } };
- shape "TABK" { primary = { [37,19] }, { [3,2], [34,16] } };
- shape "CTRL" { primary = { [46,19] }, { [3,2], [43,16] } };
- shape "RTRN" { primary = { [46,19] }, { [3,2], [43,16] } };
- shape "SHFT" { primary = { [56,19] }, { [3,2], [53,16] } };
- shape "MODK" { primary = { [37,19] }, { [3,2], [34,16] } };
- shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
-
- section.left= 17;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text.color = "black";
- text "Logo" {left = 20; top = 10; text="digital\n"; };
-
- section "Function" { top = 30;
- row { top = 1;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 20 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <LEFT>, 20 }, <DOWN>, <UP>, <RGHT>
- };
- };
- };
-
- section "Alpha" { top = 50;
- row { top = 1;
- keys { { <AE00>, "AE00" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row { top = 21;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- <BKSL>, <AB00>
- };
-
- };
- row { top = 41; left = -4;
- keys { { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 61; left = -4;
- keys { { <LFSH>, "SHFT" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
- <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "SHFT" }
- };
- };
- solid "ExtendKey" { top = 81; left= 1;
- shape= "NORM";
- color= "grey20";
- };
- text.top = 89;
- text.color = "black";
- text "ExtendLabel" {left = 6; text="Ext\nend"; };
- row { top = 81; left = 19;
- key.shape = "MODK";
- keys { { <LCMP>, "NORM" }, <LALT>,
- { <SPCE>, "SPCE" },
- <RALT>, <RCMP>
- };
- };
- };
-};
-
-xkb_geometry "lk421jj" {
-
- width = 315;
- height = 170;
- shape.cornerRadius = 1;
-
- shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
- shape "RTRN" {
- approx = { [0,0],[28,23] },
- { [0,0], [28,0], [28,39], [5,39], [5,19], [0,19] },
- { [3,2], [25,2], [25,36], [8,36], [8,16], [3,16] }
- };
- shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
- shape "LONG1" { { [32,19] }, { [3,2], [29,16] } };
- shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
- shape "MED" { { [23,19] }, { [3,2], [20,16] } };
- shape "CTRL" { { [43,19] }, { [3,2], [38,16] } };
- shape "SPCE" { { [55,19] },{ [3,2], [53,16]} };
- shape "LEDS" { [ 56,15] };
- shape "LED" { [ 5, 2] };
-
- section.left = 5;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- text "Logo" {left = 7; top = 10; text="digital\n"; };
-
- section "Function" { top = 45;
- row { top = 1; left = 7;
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 18 }, <FK07>, <FK08>, <FK09>, <FK10>
- };
- };
- };
-
- section "Editing" { top = 45; left= 230;
- row { top = 1;
- keys { <LEFT>, <DOWN>, <UP>, <RGHT> };
- };
- };
-
- section "Alpha" { top = 65;
- row { top = 1; left = 7;
- keys { { <AE00>, "MED" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <AB00>, { <BKSP>, "MED" }
- };
- };
- row { top = 21; left = 7;
- keys { { <TAB>, "LONG1" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row { top = 41;
- keys { { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
- };
- };
- row { top = 61;
- keys { <CAPS>, { <LFSH>, "LONG1" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "LONG1" }
- };
- };
- row { top = 81; left = 7;
- keys { <AA00>, <LCMP>,
- { <LALT>, "LONG" },
- { <MUHE>, "LONG" },
- { <SPCE>, "SPCE" },
- { <KANJ>, "LONG" },
- { <HIRA>, "LONG" },
- <RALT>, <RCMP>
- };
- };
- };
-
- section.left = 233;
- section.top = 20;
-
- section "Indicators" {
- solid "led_panel" { top = 0; left = 0;
- cornerRadius = 1;
- shape = "LEDS";
- color = "grey";
- };
- indicator.onColor = "#00ff00";
- indicator.offColor= "#001000";
- indicator.top = 11;
- indicator.shape= "LED";
- indicator "Scroll Lock" { left = 6; };
- indicator "Caps Lock" { left = 26; };
- text.top = 3;
- text.color = "black";
- text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
- text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
- };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log: unix,v
+// Revision 1.2 1996/06/18 09:12:53 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.2.3 1995/06/27 12:17:30 William_Walker
+// Rename <TLDE> to ISO9995 compliant <AE00>.
+// [1995/06/26 20:23:12 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:21:23 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:05:56 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: unix,v Revision: 1.2 (DEC) Date: 1996/01/24 12:16:
+//
+xkb_geometry "unix" {
+
+ width = 340;
+ height = 160;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { primary = { [18,19] }, { [3,2], [15,16] } };
+ shape "AE00" { primary = { [28,19] }, { [3,2], [25,16] } };
+ shape "BKSP" { primary = { [46,19] }, { [3,2], [43,16] } };
+ shape "TABK" { primary = { [37,19] }, { [3,2], [34,16] } };
+ shape "CTRL" { primary = { [46,19] }, { [3,2], [43,16] } };
+ shape "RTRN" { primary = { [46,19] }, { [3,2], [43,16] } };
+ shape "SHFT" { primary = { [56,19] }, { [3,2], [53,16] } };
+ shape "MODK" { primary = { [37,19] }, { [3,2], [34,16] } };
+ shape "SPCE" { primary = { [132,19] },{ [3,2], [129,16]} };
+
+ section.left= 17;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text.color = "black";
+ text "Logo" {left = 20; top = 10; text="digital\n"; };
+
+ section "Function" { top = 30;
+ row { top = 1;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 20 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <LEFT>, 20 }, <DOWN>, <UP>, <RGHT>
+ };
+ };
+ };
+
+ section "Alpha" { top = 50;
+ row { top = 1;
+ keys { { <AE00>, "AE00" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row { top = 21;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ <BKSL>, <AB00>
+ };
+
+ };
+ row { top = 41; left = -4;
+ keys { { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 61; left = -4;
+ keys { { <LFSH>, "SHFT" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>,
+ <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "SHFT" }
+ };
+ };
+ solid "ExtendKey" { top = 81; left= 1;
+ shape= "NORM";
+ color= "grey20";
+ };
+ text.top = 89;
+ text.color = "black";
+ text "ExtendLabel" {left = 6; text="Ext\nend"; };
+ row { top = 81; left = 19;
+ key.shape = "MODK";
+ keys { { <LCMP>, "NORM" }, <LALT>,
+ { <SPCE>, "SPCE" },
+ <RALT>, <RCMP>
+ };
+ };
+ };
+};
+
+xkb_geometry "lk421jj" {
+
+ width = 315;
+ height = 170;
+ shape.cornerRadius = 1;
+
+ shape "NORM" { { [18,19] }, { [3,2], [15,16] } };
+ shape "RTRN" {
+ approx = { [0,0],[28,23] },
+ { [0,0], [28,0], [28,39], [5,39], [5,19], [0,19] },
+ { [3,2], [25,2], [25,36], [8,36], [8,16], [3,16] }
+ };
+ shape "LONG" { { [37,19] }, { [3,2], [34,16] } };
+ shape "LONG1" { { [32,19] }, { [3,2], [29,16] } };
+ shape "TALL" { { [18,39] }, { [3,2], [15,36] } };
+ shape "MED" { { [23,19] }, { [3,2], [20,16] } };
+ shape "CTRL" { { [43,19] }, { [3,2], [38,16] } };
+ shape "SPCE" { { [55,19] },{ [3,2], [53,16]} };
+ shape "LEDS" { [ 56,15] };
+ shape "LED" { [ 5, 2] };
+
+ section.left = 5;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ text "Logo" {left = 7; top = 10; text="digital\n"; };
+
+ section "Function" { top = 45;
+ row { top = 1; left = 7;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 18 }, <FK07>, <FK08>, <FK09>, <FK10>
+ };
+ };
+ };
+
+ section "Editing" { top = 45; left= 230;
+ row { top = 1;
+ keys { <LEFT>, <DOWN>, <UP>, <RGHT> };
+ };
+ };
+
+ section "Alpha" { top = 65;
+ row { top = 1; left = 7;
+ keys { { <AE00>, "MED" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <AB00>, { <BKSP>, "MED" }
+ };
+ };
+ row { top = 21; left = 7;
+ keys { { <TAB>, "LONG1" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row { top = 41;
+ keys { { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>, <AC06>,
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row { top = 61;
+ keys { <CAPS>, { <LFSH>, "LONG1" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "LONG1" }
+ };
+ };
+ row { top = 81; left = 7;
+ keys { <AA00>, <LCMP>,
+ { <LALT>, "LONG" },
+ { <MUHE>, "LONG" },
+ { <SPCE>, "SPCE" },
+ { <KANJ>, "LONG" },
+ { <HIRA>, "LONG" },
+ <RALT>, <RCMP>
+ };
+ };
+ };
+
+ section.left = 233;
+ section.top = 20;
+
+ section "Indicators" {
+ solid "led_panel" { top = 0; left = 0;
+ cornerRadius = 1;
+ shape = "LEDS";
+ color = "grey";
+ };
+ indicator.onColor = "#00ff00";
+ indicator.offColor= "#001000";
+ indicator.top = 11;
+ indicator.shape= "LED";
+ indicator "Scroll Lock" { left = 6; };
+ indicator "Caps Lock" { left = 26; };
+ text.top = 3;
+ text.color = "black";
+ text "ScrollLockLabel" {left = 3; text="Scroll\nLock"; };
+ text "CapsLockLabel" {left = 22; text="Caps\nLock"; };
+ };
+};
diff --git a/xorg-server/xkeyboard-config/geometry/everex b/xorg-server/xkeyboard-config/geometry/everex
index 8cc094760..c175b1718 100644
--- a/xorg-server/xkeyboard-config/geometry/everex
+++ b/xorg-server/xkeyboard-config/geometry/everex
@@ -1,170 +1,170 @@
-default xkb_geometry "STEPnote" {
-
- description= "Everex STEPnote";
- width= 281;
- height= 150;
-
- shape.cornerRadius= 1;
-
- shape "NORM" {
- { [17,17] },
- { [ 2, 1], [ 15, 15 ] }
- };
- shape "NARR" {
- { [ 15, 17 ] },
- { [ 2, 1 ], [ 13, 15 ] }
- };
- shape "FKEY" {
- { [ 15.1, 15.5 ] },
- { [ 1, 1 ], [ 14.1, 14.5 ] }
- };
- shape "ESC" {
- { [ 16.4, 15.5 ] },
- { [ 1, 1 ], [ 14.1, 14.5 ] }
- };
- shape "WIDE" { // backspace, tab and Fn
- { [ 25, 17 ] },
- { [ 2, 1 ], [ 23, 15 ] }
- };
- shape "RTRN" {
- { [ 27.5, 17 ] },
- { [ 2, 1 ], [ 25.5, 15 ] }
- };
- shape "CAPS" {
- { [ 30, 17 ] },
- { [ 2, 1 ], [ 28, 15 ] }
- };
- shape "LFSH" {
- { [ 38.5, 17 ] },
- { [ 2, 1 ], [ 36.5, 15 ] }
- };
- shape "RTSH" {
- { [ 21, 17 ] },
- { [ 2, 1 ], [ 19, 15 ] }
- };
- shape "SPCE" {
- { [ 88.8, 17 ] },
- { [ 2, 1 ], [ 86.8, 15 ] }
- };
- shape "WELL" {
- { [ 269, 105 ] }
- };
- shape "LED" {
- cornerRadius= 1.5,
- { [ 3, 10 ] }
- };
-
- section.left= 6;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 0.5;
-
- key.color= "grey20";
- labelColor= "white";
- baseColor= "grey20";
-
- indicator.top= 20;
- indicator.shape= "LED";
- indicator.onColor= "green";
- indicator.offColor= "green30";
-
- indicator "Power" { left= 40; };
- indicator "Battery" { left=101; };
- indicator "Suspend" { left=112; };
- indicator "HardDrive" { left=123; };
- indicator "Floppy" { left=134; };
- indicator "KeyPad" { left=145; };
- indicator "Num Lock" { left=156; };
- indicator "Caps Lock" { left=167; };
- indicator "Scroll Lock" { left=178; };
-
- solid "KeyWell" {
- top= 35;
- left= 6;
- shape= "WELL";
- color= "grey10";
- };
- section "Whole" {
- top= 35;
- row {
- top= 0.5;
- key.color= "grey30";
- key.shape= "FKEY";
- keys {
- { <ESC>, "ESC" },
- <FK01>, <FK02>, <FK03>, <FK04>, <FK05>, <FK06>,
- <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12>,
- <NMLK>, <PRSC>, <SCLK>, <PAUS>
- };
- };
- row {
- top= 16.5;
- keys {
- { <TLDE>, "NARR" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, shape="WIDE", color="grey30" },
- { <HOME>, shape="NARR", color="grey30" }
- };
- };
- row {
- top= 34;
- keys {
- { <TAB>, shape="WIDE", color="grey30" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "NARR" },
- { <PGUP>, shape="NARR", color="grey30" }
- };
- };
- row {
- top= 51.5;
- keys {
- { <CAPS>, shape="CAPS", color="grey30" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, shape="RTRN", color="grey30" },
- { <PGDN>, shape="NARR", color="grey30" }
- };
- };
- row {
- top= 69;
- keys {
- { <LFSH>, shape="LFSH", color="grey30" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, shape="RTSH", color="grey30" },
- { <UP>, shape="NARR", color="grey30" },
- { <END>, shape="NARR", color="grey30" }
- };
- };
- row {
- top= 86.5;
- key.color= "grey30";
- keys {
- { <FUNC>, "WIDE" },
- <LCTL>, <LALT>,
- { <SPCE>, shape="SPCE", 18, color="grey20" },
- <RALT>, <INS>, <DELE>,
- { <LEFT>, "NARR" }, { <DOWN>, "NARR" },
- { <RGHT>, "NARR" }
- };
- };
- solid "FakeKey" {
- top= 86.5;
- left= 62.1;
- shape= "NORM";
- color= "grey20";
- };
- overlay "KPAD" {
- <AE07>=<KP7>, <AE08>=<KP8>, <AE09>=<KP9>, <AE10>=<KPMU>,
- <AD07>=<KP4>, <AD08>=<KP5>, <AD09>=<KP6>, <AD10>=<KPSU>,
- <AC07>=<KP1>, <AC08>=<KP2>, <AC09>=<KP3>, <AC10>=<KPAD>,
- <AB07>=<KP0>, <AB09>=<KPDL>, <AB10>=<KPSL>
- };
- }; // End of "Whole" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
+default xkb_geometry "STEPnote" {
+
+ description= "Everex STEPnote";
+ width= 281;
+ height= 150;
+
+ shape.cornerRadius= 1;
+
+ shape "NORM" {
+ { [17,17] },
+ { [ 2, 1], [ 15, 15 ] }
+ };
+ shape "NARR" {
+ { [ 15, 17 ] },
+ { [ 2, 1 ], [ 13, 15 ] }
+ };
+ shape "FKEY" {
+ { [ 15.1, 15.5 ] },
+ { [ 1, 1 ], [ 14.1, 14.5 ] }
+ };
+ shape "ESC" {
+ { [ 16.4, 15.5 ] },
+ { [ 1, 1 ], [ 14.1, 14.5 ] }
+ };
+ shape "WIDE" { // backspace, tab and Fn
+ { [ 25, 17 ] },
+ { [ 2, 1 ], [ 23, 15 ] }
+ };
+ shape "RTRN" {
+ { [ 27.5, 17 ] },
+ { [ 2, 1 ], [ 25.5, 15 ] }
+ };
+ shape "CAPS" {
+ { [ 30, 17 ] },
+ { [ 2, 1 ], [ 28, 15 ] }
+ };
+ shape "LFSH" {
+ { [ 38.5, 17 ] },
+ { [ 2, 1 ], [ 36.5, 15 ] }
+ };
+ shape "RTSH" {
+ { [ 21, 17 ] },
+ { [ 2, 1 ], [ 19, 15 ] }
+ };
+ shape "SPCE" {
+ { [ 88.8, 17 ] },
+ { [ 2, 1 ], [ 86.8, 15 ] }
+ };
+ shape "WELL" {
+ { [ 269, 105 ] }
+ };
+ shape "LED" {
+ cornerRadius= 1.5,
+ { [ 3, 10 ] }
+ };
+
+ section.left= 6;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 0.5;
+
+ key.color= "grey20";
+ labelColor= "white";
+ baseColor= "grey20";
+
+ indicator.top= 20;
+ indicator.shape= "LED";
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+
+ indicator "Power" { left= 40; };
+ indicator "Battery" { left=101; };
+ indicator "Suspend" { left=112; };
+ indicator "HardDrive" { left=123; };
+ indicator "Floppy" { left=134; };
+ indicator "KeyPad" { left=145; };
+ indicator "Num Lock" { left=156; };
+ indicator "Caps Lock" { left=167; };
+ indicator "Scroll Lock" { left=178; };
+
+ solid "KeyWell" {
+ top= 35;
+ left= 6;
+ shape= "WELL";
+ color= "grey10";
+ };
+ section "Whole" {
+ top= 35;
+ row {
+ top= 0.5;
+ key.color= "grey30";
+ key.shape= "FKEY";
+ keys {
+ { <ESC>, "ESC" },
+ <FK01>, <FK02>, <FK03>, <FK04>, <FK05>, <FK06>,
+ <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12>,
+ <NMLK>, <PRSC>, <SCLK>, <PAUS>
+ };
+ };
+ row {
+ top= 16.5;
+ keys {
+ { <TLDE>, "NARR" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, shape="WIDE", color="grey30" },
+ { <HOME>, shape="NARR", color="grey30" }
+ };
+ };
+ row {
+ top= 34;
+ keys {
+ { <TAB>, shape="WIDE", color="grey30" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "NARR" },
+ { <PGUP>, shape="NARR", color="grey30" }
+ };
+ };
+ row {
+ top= 51.5;
+ keys {
+ { <CAPS>, shape="CAPS", color="grey30" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, shape="RTRN", color="grey30" },
+ { <PGDN>, shape="NARR", color="grey30" }
+ };
+ };
+ row {
+ top= 69;
+ keys {
+ { <LFSH>, shape="LFSH", color="grey30" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, shape="RTSH", color="grey30" },
+ { <UP>, shape="NARR", color="grey30" },
+ { <END>, shape="NARR", color="grey30" }
+ };
+ };
+ row {
+ top= 86.5;
+ key.color= "grey30";
+ keys {
+ { <FUNC>, "WIDE" },
+ <LCTL>, <LALT>,
+ { <SPCE>, shape="SPCE", 18, color="grey20" },
+ <RALT>, <INS>, <DELE>,
+ { <LEFT>, "NARR" }, { <DOWN>, "NARR" },
+ { <RGHT>, "NARR" }
+ };
+ };
+ solid "FakeKey" {
+ top= 86.5;
+ left= 62.1;
+ shape= "NORM";
+ color= "grey20";
+ };
+ overlay "KPAD" {
+ <AE07>=<KP7>, <AE08>=<KP8>, <AE09>=<KP9>, <AE10>=<KPMU>,
+ <AD07>=<KP4>, <AD08>=<KP5>, <AD09>=<KP6>, <AD10>=<KPSU>,
+ <AC07>=<KP1>, <AC08>=<KP2>, <AC09>=<KP3>, <AC10>=<KPAD>,
+ <AB07>=<KP0>, <AB09>=<KPDL>, <AB10>=<KPSL>
+ };
+ }; // End of "Whole" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
diff --git a/xorg-server/xkeyboard-config/geometry/fujitsu b/xorg-server/xkeyboard-config/geometry/fujitsu
index 1cc5dddca..5f5ff58bf 100644
--- a/xorg-server/xkeyboard-config/geometry/fujitsu
+++ b/xorg-server/xkeyboard-config/geometry/fujitsu
@@ -1,314 +1,314 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-default xkb_geometry "138" {
-
- // This is an approximate layout for a (US/ASCII) Fujitsu keyboard.
-
- description= "Fujitsu English keyboard";
-
- width= 480;
- height= 215;
-
- shape "EDGE" { cornerRadius= 2, { [ 480, 215 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "LFSH" { { [ 41,18] }, { [2,1], [ 39,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [ 31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "SPCE" { { [151,18] }, { [2,1], [149,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
- shape "EXEC" { { [ 57,18] }, { [2,1], [ 55,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 15;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 28;
- row {
- top= 1;
- keys {
- <BREA>, { <PRSC>, 6 },
- { <FK13>, 30 }, <FK14>, <FK15>, <FK16>,
- { <FK17>, 6 }, <FK18>, <FK19>, <FK20>,
- { <FK21>, 6 }, <FK22>, <FK23>, <FK24>,
- { <FK29>, 68 }, <FK30>, <FK31>, <FK32>
- };
- };
- row {
- top= 20;
- keys {
- <KNJI>, { <PAUS>, 6 },
- { <FK01>, 30 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 6 }, <FK10>, <FK11>, <FK12>,
- { <UNK0>, 6 }, <UNK1>, <UNK2>,
- { <FK25>, 6 }, <FK26>, <FK27>, <FK28>
- };
- };
- row {
- top= 39;
- left= 316;
- keys {
- <PGUP>, <HOME>, <PGDN>
- };
- };
- row {
- top= 54;
- keys {
- <UNDO>, { <ESC>, 6 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>, <TLDE>, <BKSP>,
- { <KPMU>, 68 }, <KPDV>, <KPAD>, <KPSU>
-
- };
- };
- row {
- top= 58;
- left= 316;
- keys {
- <UNK3>, <DEL>, <INS>
- };
- };
- row {
- top= 73;
- keys { <COPY>,
- { <TAB>, 6, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 68 }, <KP8>, <KP9>, <KPEQ>
- };
- };
- row {
- top= 92;
- keys { <PAST>,
- { <LCTL>, 6, "LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>,
- { <UP>, 49 },
- { <KP4>, 25 }, <KP5>, <KP6>, <KPDC>
- };
- };
- row {
- top= 102;
- left= 316;
- keys { <LEFT>, { <RGHT>, 19 }
- };
- };
- row {
- top= 111;
- keys { <CUT>,
- { <LFSH>, 6 , "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "RTSH" },
- { <DOWN>, 25 },
- { <KP1>, 25 }, <KP2>, <KP3>, { <KPEN>, "KPEN" }
- };
- };
- row {
- top= 130;
- keys { <HELP>, { <CAPS>, 6 },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <RALT>, <COMP>, <LNFD>,
- { <KP0>, 68, "KP0" }, <KP00>
- };
- };
- row {
- top= 149;
- left= 316;
- keys {
- { <EXEC>, "EXEC" }
- };
- };
- }; // End of "Alpha" section
-};
-
-xkb_geometry "140" {
-
- // This is an approximate layout for a Fujitsu Japanese keyboard.
-
- description= "Fujitsu Japanese keyboard";
-
- width= 480;
- height= 215;
-
- shape "EDGE" { cornerRadius= 2, { [ 480, 215 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "LFSH" { { [ 41,18] }, { [2,1], [ 39,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [ 31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "SPCE" { { [113,18] }, { [2,1], [111,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
- shape "HNKN" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "EXEC" { { [ 57,18] }, { [2,1], [ 55,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 15;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 28;
- row {
- top= 1;
- keys {
- <BREA>, { <PRSC>, 6 },
- { <FK13>, 30 }, <FK14>, <FK15>, <FK16>,
- { <FK17>, 6 }, <FK18>, <FK19>, <FK20>,
- { <FK21>, 6 }, <FK22>, <FK23>, <FK24>,
- { <FK29>, 68 }, <FK30>, <FK31>, <FK32>
- };
- };
- row {
- top= 20;
- keys {
- <KNJI>, { <PAUS>, 6 },
- { <FK01>, 30 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 6 }, <FK10>, <FK11>, <FK12>,
- { <UNK0>, 6 }, <UNK1>, <UNK2>,
- { <FK25>, 6 }, <FK26>, <FK27>, <FK28>
- };
- };
- row {
- top= 39;
- left= 316;
- keys {
- <PGUP>, <HOME>, <PGDN>
- };
- };
- row {
- top= 54;
- keys {
- <UNDO>, { <ESC>, 6 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>, <BKSL>, <BKSP>,
- { <KPMU>, 68 }, <KPDV>, <KPAD>, <KPSU>
-
- };
- };
- row {
- top= 58;
- left= 316;
- keys {
- <UNK3>, <DEL>, <INS>
- };
- };
- row {
- top= 73;
- keys { <COPY>,
- { <TAB>, 6, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 68 }, <KP8>, <KP9>, <KPEQ>
- };
- };
- row {
- top= 92;
- keys { <PAST>,
- { <LCTL>, 6, "LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>,
- { <UP>, 49 },
- { <KP4>, 25 }, <KP5>, <KP6>, <KPDC>
- };
- };
- row {
- top= 102;
- left= 316;
- keys { <LEFT>, { <RGHT>, 19 }
- };
- };
- row {
- top= 111;
- keys { <CUT>,
- { <LFSH>, 6 , "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "RTSH" },
- { <DOWN>, 25 },
- { <KP1>, 25 }, <KP2>, <KP3>, { <KPEN>, "KPEN" }
- };
- };
- row {
- top= 130;
- keys { <HELP>, { <CAPS>, 6 },
- <LALT>, <LMTA>, <UNK4>,
- { <SPCE>, "SPCE" },
- <UNK5>, <RMTA>, <COMP>, <LNFD>, <UNK6>,
- { <KP0>, 68, "KP0" }, <KP00>
- };
- };
- row {
- top= 149;
- left= 134;
- keys {
- { <UNK7>, "HNKN" }, { <UNK8>, "HNKN" },
- { <EXEC>, 132, "EXEC" }
- };
- };
- }; // End of "Alpha" section
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+default xkb_geometry "138" {
+
+ // This is an approximate layout for a (US/ASCII) Fujitsu keyboard.
+
+ description= "Fujitsu English keyboard";
+
+ width= 480;
+ height= 215;
+
+ shape "EDGE" { cornerRadius= 2, { [ 480, 215 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [ 39,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [ 31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "SPCE" { { [151,18] }, { [2,1], [149,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+ shape "EXEC" { { [ 57,18] }, { [2,1], [ 55,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 15;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 28;
+ row {
+ top= 1;
+ keys {
+ <BREA>, { <PRSC>, 6 },
+ { <FK13>, 30 }, <FK14>, <FK15>, <FK16>,
+ { <FK17>, 6 }, <FK18>, <FK19>, <FK20>,
+ { <FK21>, 6 }, <FK22>, <FK23>, <FK24>,
+ { <FK29>, 68 }, <FK30>, <FK31>, <FK32>
+ };
+ };
+ row {
+ top= 20;
+ keys {
+ <KNJI>, { <PAUS>, 6 },
+ { <FK01>, 30 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 6 }, <FK10>, <FK11>, <FK12>,
+ { <UNK0>, 6 }, <UNK1>, <UNK2>,
+ { <FK25>, 6 }, <FK26>, <FK27>, <FK28>
+ };
+ };
+ row {
+ top= 39;
+ left= 316;
+ keys {
+ <PGUP>, <HOME>, <PGDN>
+ };
+ };
+ row {
+ top= 54;
+ keys {
+ <UNDO>, { <ESC>, 6 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>, <TLDE>, <BKSP>,
+ { <KPMU>, 68 }, <KPDV>, <KPAD>, <KPSU>
+
+ };
+ };
+ row {
+ top= 58;
+ left= 316;
+ keys {
+ <UNK3>, <DEL>, <INS>
+ };
+ };
+ row {
+ top= 73;
+ keys { <COPY>,
+ { <TAB>, 6, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 68 }, <KP8>, <KP9>, <KPEQ>
+ };
+ };
+ row {
+ top= 92;
+ keys { <PAST>,
+ { <LCTL>, 6, "LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>,
+ { <UP>, 49 },
+ { <KP4>, 25 }, <KP5>, <KP6>, <KPDC>
+ };
+ };
+ row {
+ top= 102;
+ left= 316;
+ keys { <LEFT>, { <RGHT>, 19 }
+ };
+ };
+ row {
+ top= 111;
+ keys { <CUT>,
+ { <LFSH>, 6 , "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "RTSH" },
+ { <DOWN>, 25 },
+ { <KP1>, 25 }, <KP2>, <KP3>, { <KPEN>, "KPEN" }
+ };
+ };
+ row {
+ top= 130;
+ keys { <HELP>, { <CAPS>, 6 },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <RALT>, <COMP>, <LNFD>,
+ { <KP0>, 68, "KP0" }, <KP00>
+ };
+ };
+ row {
+ top= 149;
+ left= 316;
+ keys {
+ { <EXEC>, "EXEC" }
+ };
+ };
+ }; // End of "Alpha" section
+};
+
+xkb_geometry "140" {
+
+ // This is an approximate layout for a Fujitsu Japanese keyboard.
+
+ description= "Fujitsu Japanese keyboard";
+
+ width= 480;
+ height= 215;
+
+ shape "EDGE" { cornerRadius= 2, { [ 480, 215 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [ 39,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [ 31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "SPCE" { { [113,18] }, { [2,1], [111,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+ shape "HNKN" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "EXEC" { { [ 57,18] }, { [2,1], [ 55,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 15;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 28;
+ row {
+ top= 1;
+ keys {
+ <BREA>, { <PRSC>, 6 },
+ { <FK13>, 30 }, <FK14>, <FK15>, <FK16>,
+ { <FK17>, 6 }, <FK18>, <FK19>, <FK20>,
+ { <FK21>, 6 }, <FK22>, <FK23>, <FK24>,
+ { <FK29>, 68 }, <FK30>, <FK31>, <FK32>
+ };
+ };
+ row {
+ top= 20;
+ keys {
+ <KNJI>, { <PAUS>, 6 },
+ { <FK01>, 30 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 6 }, <FK10>, <FK11>, <FK12>,
+ { <UNK0>, 6 }, <UNK1>, <UNK2>,
+ { <FK25>, 6 }, <FK26>, <FK27>, <FK28>
+ };
+ };
+ row {
+ top= 39;
+ left= 316;
+ keys {
+ <PGUP>, <HOME>, <PGDN>
+ };
+ };
+ row {
+ top= 54;
+ keys {
+ <UNDO>, { <ESC>, 6 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>, <BKSL>, <BKSP>,
+ { <KPMU>, 68 }, <KPDV>, <KPAD>, <KPSU>
+
+ };
+ };
+ row {
+ top= 58;
+ left= 316;
+ keys {
+ <UNK3>, <DEL>, <INS>
+ };
+ };
+ row {
+ top= 73;
+ keys { <COPY>,
+ { <TAB>, 6, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 68 }, <KP8>, <KP9>, <KPEQ>
+ };
+ };
+ row {
+ top= 92;
+ keys { <PAST>,
+ { <LCTL>, 6, "LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>,
+ { <UP>, 49 },
+ { <KP4>, 25 }, <KP5>, <KP6>, <KPDC>
+ };
+ };
+ row {
+ top= 102;
+ left= 316;
+ keys { <LEFT>, { <RGHT>, 19 }
+ };
+ };
+ row {
+ top= 111;
+ keys { <CUT>,
+ { <LFSH>, 6 , "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "RTSH" },
+ { <DOWN>, 25 },
+ { <KP1>, 25 }, <KP2>, <KP3>, { <KPEN>, "KPEN" }
+ };
+ };
+ row {
+ top= 130;
+ keys { <HELP>, { <CAPS>, 6 },
+ <LALT>, <LMTA>, <UNK4>,
+ { <SPCE>, "SPCE" },
+ <UNK5>, <RMTA>, <COMP>, <LNFD>, <UNK6>,
+ { <KP0>, 68, "KP0" }, <KP00>
+ };
+ };
+ row {
+ top= 149;
+ left= 134;
+ keys {
+ { <UNK7>, "HNKN" }, { <UNK8>, "HNKN" },
+ { <EXEC>, 132, "EXEC" }
+ };
+ };
+ }; // End of "Alpha" section
+};
diff --git a/xorg-server/xkeyboard-config/geometry/hhk b/xorg-server/xkeyboard-config/geometry/hhk
index 0f1cc0503..de6fe6f53 100644
--- a/xorg-server/xkeyboard-config/geometry/hhk
+++ b/xorg-server/xkeyboard-config/geometry/hhk
@@ -1,266 +1,266 @@
-//
-// XKB geometry for the Happy Hacking Keyboard (Lite).
-// Different variants correspond to different switch
-// settings on the HHK.
-//
-// Copyright (c) Doug Palmer <doug@charvolant.org>, 2002
-//
-//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
-//AUTHORS OR COPYRIGHT HOLDERS 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.
-
-// SW = 100 Default layout with windows keys
-default xkb_geometry "win1" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <LALT>,
- { <LWIN>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RWIN>, "DIAM" },
- <RALT>
- };
- };
- };
-};
-
-// SW = 101 Layout with windows and alt keys swapped
-xkb_geometry "win2" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <LWIN>,
- { <LALT>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RALT>, "DIAM" },
- <RWIN>
- };
- };
- };
-};
-
-// SW = 110 Default layout with windows keys, and left diamond = Fn key
-xkb_geometry "win3" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <LALT>,
- { <FN>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RWIN>, "DIAM" },
- <RALT>
- };
- };
- };
-};
-
-// SW = 101 Layout with windows and alt keys swapped and left-Alt = Fn key
-xkb_geometry "win4" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <FN>,
- { <LALT>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RALT>, "DIAM" },
- <RWIN>
- };
- };
- };
-};
-
-// SW = 000 Layout with Muhenkan and Henkan keys
-xkb_geometry "jp1" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <LALT>,
- { <NFER>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <XFER>, "DIAM" },
- <RALT>
- };
- };
- };
-};
-
-// SW = 001 Layout with Muhenkan and Henkan keys swapped with Alt keys
-xkb_geometry "jp2" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <NFER>,
- { <LALT>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RALT>, "DIAM" },
- <XFER>
- };
- };
- };
-};
-
-// SW = 010 Layout with Henkan key and left-diamond as Fn
-xkb_geometry "jp3" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <LALT>,
- { <FN>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <XFER>, "DIAM" },
- <RALT>
- };
- };
- };
-};
-
-// SW = 001 Layout with Henkan key swapped with Alt keys and left-Alt as Fn
-xkb_geometry "jp4" {
- include "hhk(basic)"
-
- key.gap = 1;
- section "Space" {
- top = 86;
- left = 30;
- row {
- top = 1;
- keys {
- <FN>,
- { <LALT>, "DIAM" },
- { <SPCE>, "SPCE" },
- { <RALT>, "DIAM" },
- <XFER>
- };
- };
- };
-};
-
-// Basic layout for non-swictchable keys
-partial hidden xkb_geometry "basic" {
-
- description = "Happy Hacking Keyboard";
- width = 290;
- height = 106;
-
- shape.cornerRadius = 1;
- shape "NORM" { { [18, 18] }, { [2, 1], [14, 14] } };
- shape "BKSP" { { [28, 18] }, { [2, 1], [24, 14] } };
- shape "TABK" { { [28, 18] }, { [2, 1], [24, 14] } };
- shape "CTRL" { { [32, 18] }, { [2, 1], [28, 14] } };
- shape "RTRN" { { [42, 18] }, { [2, 1], [38, 14] } };
- shape "LFSH" { { [42, 18] }, { [2, 1], [38, 14] } };
- shape "RTSH" { { [32, 18] }, { [2, 1], [28, 14] } };
- shape "DIAM" { { [28, 18] }, { [2, 1], [24, 14] } };
- shape "SPCE" { { [114, 18] }, { [2, 1], [110, 14] } };
-
- text.color = "black";
- text "PFULabel" { left = 16; top = 2; fontsize = 20; text = "PFU"; };
- text "HHKLabel" { left = 254; top = 90; text = "Happy Hacking\nKeyboard"; };
-
- section.left = 1;
- row.left = 1;
- key.shape = "NORM";
- key.gap = 1;
-
- section "Alphanumeric" {
- top = 10;
- row {
- top = 1;
- keys {
- <ESC>,
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- <BKSL>, <TLDE>
- };
- };
- row {
- top = 20;
- keys {
- { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 39;
- keys {
- { <LCTL>, "CTRL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top = 58;
- keys {
- { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" },
- { <FN>, color = "grey20" }
- };
- };
- };
-
- alias <AC00> = <LCTL>;
-};
+//
+// XKB geometry for the Happy Hacking Keyboard (Lite).
+// Different variants correspond to different switch
+// settings on the HHK.
+//
+// Copyright (c) Doug Palmer <doug@charvolant.org>, 2002
+//
+//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
+//AUTHORS OR COPYRIGHT HOLDERS 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.
+
+// SW = 100 Default layout with windows keys
+default xkb_geometry "win1" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <LALT>,
+ { <LWIN>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RWIN>, "DIAM" },
+ <RALT>
+ };
+ };
+ };
+};
+
+// SW = 101 Layout with windows and alt keys swapped
+xkb_geometry "win2" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <LWIN>,
+ { <LALT>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "DIAM" },
+ <RWIN>
+ };
+ };
+ };
+};
+
+// SW = 110 Default layout with windows keys, and left diamond = Fn key
+xkb_geometry "win3" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <LALT>,
+ { <FN>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RWIN>, "DIAM" },
+ <RALT>
+ };
+ };
+ };
+};
+
+// SW = 101 Layout with windows and alt keys swapped and left-Alt = Fn key
+xkb_geometry "win4" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <FN>,
+ { <LALT>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "DIAM" },
+ <RWIN>
+ };
+ };
+ };
+};
+
+// SW = 000 Layout with Muhenkan and Henkan keys
+xkb_geometry "jp1" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <LALT>,
+ { <NFER>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <XFER>, "DIAM" },
+ <RALT>
+ };
+ };
+ };
+};
+
+// SW = 001 Layout with Muhenkan and Henkan keys swapped with Alt keys
+xkb_geometry "jp2" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <NFER>,
+ { <LALT>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "DIAM" },
+ <XFER>
+ };
+ };
+ };
+};
+
+// SW = 010 Layout with Henkan key and left-diamond as Fn
+xkb_geometry "jp3" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <LALT>,
+ { <FN>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <XFER>, "DIAM" },
+ <RALT>
+ };
+ };
+ };
+};
+
+// SW = 001 Layout with Henkan key swapped with Alt keys and left-Alt as Fn
+xkb_geometry "jp4" {
+ include "hhk(basic)"
+
+ key.gap = 1;
+ section "Space" {
+ top = 86;
+ left = 30;
+ row {
+ top = 1;
+ keys {
+ <FN>,
+ { <LALT>, "DIAM" },
+ { <SPCE>, "SPCE" },
+ { <RALT>, "DIAM" },
+ <XFER>
+ };
+ };
+ };
+};
+
+// Basic layout for non-swictchable keys
+partial hidden xkb_geometry "basic" {
+
+ description = "Happy Hacking Keyboard";
+ width = 290;
+ height = 106;
+
+ shape.cornerRadius = 1;
+ shape "NORM" { { [18, 18] }, { [2, 1], [14, 14] } };
+ shape "BKSP" { { [28, 18] }, { [2, 1], [24, 14] } };
+ shape "TABK" { { [28, 18] }, { [2, 1], [24, 14] } };
+ shape "CTRL" { { [32, 18] }, { [2, 1], [28, 14] } };
+ shape "RTRN" { { [42, 18] }, { [2, 1], [38, 14] } };
+ shape "LFSH" { { [42, 18] }, { [2, 1], [38, 14] } };
+ shape "RTSH" { { [32, 18] }, { [2, 1], [28, 14] } };
+ shape "DIAM" { { [28, 18] }, { [2, 1], [24, 14] } };
+ shape "SPCE" { { [114, 18] }, { [2, 1], [110, 14] } };
+
+ text.color = "black";
+ text "PFULabel" { left = 16; top = 2; fontsize = 20; text = "PFU"; };
+ text "HHKLabel" { left = 254; top = 90; text = "Happy Hacking\nKeyboard"; };
+
+ section.left = 1;
+ row.left = 1;
+ key.shape = "NORM";
+ key.gap = 1;
+
+ section "Alphanumeric" {
+ top = 10;
+ row {
+ top = 1;
+ keys {
+ <ESC>,
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ <BKSL>, <TLDE>
+ };
+ };
+ row {
+ top = 20;
+ keys {
+ { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 39;
+ keys {
+ { <LCTL>, "CTRL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top = 58;
+ keys {
+ { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" },
+ { <FN>, color = "grey20" }
+ };
+ };
+ };
+
+ alias <AC00> = <LCTL>;
+};
diff --git a/xorg-server/xkeyboard-config/geometry/hp b/xorg-server/xkeyboard-config/geometry/hp
index a9846f295..8cb07b480 100644
--- a/xorg-server/xkeyboard-config/geometry/hp
+++ b/xorg-server/xkeyboard-config/geometry/hp
@@ -1,697 +1,697 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-
-default xkb_geometry "pc101" {
-
- description= "HP PC101";
- width= 470;
- height= 210;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [132,18] }, { [2,1], [130,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 52;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 91;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>, { <RCTL>, 20 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 91;
- left= 310;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 91;
- left= 375;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "default" geometry
-
-xkb_geometry "hil" {
-
- description= "HP hil";
- width= 455;
- height= 170;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "TABK" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "BKSL" { { [ 24,18] }, { [2,1], [ 22,17] } };
- shape "RTRN" { { [ 38,18] }, { [2,1], [ 36,17] } };
- shape "LFSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "RTSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [151,18] }, { [2,1], [150,17] } };
- shape "KP0" { { [ 38,18] }, { [2,1], [ 36,17] } };
- shape "KPTB" { { [ 18,38] }, { [2,1], [ 16,37] } };
- shape "TLDE" { { [ 24,18] }, { [2,1], [ 22,17] } };
- shape "FKT1" { { [ 17,14] }, { [2,1], [ 15,13] } };
- shape "FKT2" { { [ 23,14] }, { [2,1], [ 21,13] } };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 14;
- row {
- top= 1;
- keys { { <BRK>, "FKT1" }, { <STOP>, "FKT1" } ,
- { <FK01>, "FKT2", 10 }, { <FK02>, "FKT2" },
- { <FK03>, "FKT2" }, { <FK04>, "FKT2" },
- { <MENU>, "FKT1" }, { <SYST>, "FKT1" },
- { <FK05>, "FKT2" }, { <FK06>, "FKT2" },
- { <FK07>, "FKT2" }, { <FK08>, "FKT2" },
- { <CLRL>, "FKT1", 10 }, { <CLR>, "FKT1" },
- { <FK09>, "FKT1", 19 }, { <FK10>, "FKT1" },
- { <FK11>, "FKT1" }, { <FK12>, "FKT1" }
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 52;
- row {
- top= 1;
- keys { { <TLDE>, "TLDE" }, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }, <INSL>, <DELL>
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" },
- <INSC>, <DELC>
- };
- };
- row {
- top= 39;
- keys { <CAPS>, <LCTL>,
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN" },
- <HOME>, <PGUP>
- };
- };
- row {
- top= 58;
- keys { <ESC>, { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }, <SELE>,
- <UP>, <PGDN>
- };
- };
- row {
- top= 77;
- keys { <PRSC>, { <LALT>, 30 },
- { <SPCE>, "SPCE" },
- <RALT>, { <LEFT>, 30 }, <DOWN>, <RGHT>
- };
- };
- }; // End of "Alpha" section
-
- section "Keypad" {
- top= 52;
- left= 360;
- row {
- top= 1;
- keys { <KPMU>, <KPDV>, <KPAD>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPEN> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPSP> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPTB>, "KPTB" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
-}; // End of "default" geometry
-
-
-// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
-// Geometry specification for HP Omnibook keyboards.
-// Compatible Models: 6100, 6000.
-
-xkb_geometry "omnibook" {
- width = 282;
- height = 128;
- baseColor = "grey80";
- labelColor = "white";
-
- shape "FN0" { cornerRadius = 1, { [15.5, 12] }, { [1, 0], [14.5, 11] } };
- shape "NORM" { cornerRadius = 1, { [18, 16] }, { [2, 0], [16, 14] } };
- shape "BKSP" { cornerRadius = 1, { [31, 16] }, { [2, 0], [29, 14] } };
- shape "TABK" { cornerRadius = 1, { [27, 16] }, { [2, 0], [25, 14] } };
- shape "CAPS" { cornerRadius = 1, { [32, 16] }, { [2, 0], [30, 14] } };
- shape "RTSH" { cornerRadius = 1, { [45, 16] }, { [2, 0], [43, 14] } };
- shape "MODK" { cornerRadius = 1, { [28, 16] }, { [2, 0], [26, 14] } };
- shape "SPCE" { cornerRadius = 1, { [90, 16] }, { [2, 0], [88, 14] } };
- shape "ARRS" { cornerRadius = 1, { [17, 12] }, { [2, 0], [15, 11] } };
-
- shape "LED" { cornerRadius = 1, { [2, 4] } };
-
- shape "KEYS" { cornerRadius = 1,
- { [0, 13],
- [197, 13], [197, 0],
- [280, 0], [280, 125],
- [224, 125], [224, 112],
- [0, 112] }
- };
-
- solid "KeyPanel" {
- shape = "KEYS";
- left = 1;
- top = 1;
- color = "black";
- };
-
- shape "NULL1" { cornerRadius = 1, { [54, 16] } };
-
- solid "NullPanel1" {
- shape = "NULL1";
- left = 226;
- top = 96;
- color = "grey80";
- };
-
- shape "NULL2" { cornerRadius = 1, { [19, 14] } };
-
- solid "NullPanel2" {
- shape = "NULL2";
- left = 243;
- top = 97;
- color = "black";
- };
-
- indicator.onColor = "green";
- indicator.offColor = "grey10";
- indicator.top = 4;
- indicator.shape = "LED";
- indicator "Caps Lock" { left = 45; };
- indicator "Num Lock" { left = 60; };
- indicator "Scroll Lock" { left = 75; };
- indicator "HDDActivity" { onColor = "red"; left = 90; };
-
- key.color = "grey60";
-
- section "Function" {
- key.gap = 0.99;
- left = 1;
- top = 1;
- key.shape = "FN0";
- row {
- left = 197;
- top = 1;
- keys { <PRSC>, <PAUS>, <INS>, <HOME>, <PGUP> };
- };
- row {
- top = 14;
- keys { <ESC>,
- <FK01>, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <SCLK>, <DELE>, <END>, <PGDN>
- };
- };
- }; // End of "Function" section
-
- section "Control" {
- left = 1;
- top = 34;
- key.gap = 1;
- row {
- top = 62;
- key.shape = "NORM";
- keys { <LCTL>, <FN>, <LWIN>, <LALT>,
- { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
- };
- };
- }; // End of "Control" section
-
- section "Navigation" {
- key.shape = "ARRS";
- left = 225;
- top = 97;
- key.gap = 1.4;
- row {
- left= 18;
- top = 1;
- keys { <UP> };
- };
- row {
- top = 16;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Navigation" section
-
- shape "STIK" { cornerRadius = 4, { [7, 7] } };
-
- solid "STIK" {
- priority = 255;
- color = "red";
- shape = "STIK";
- top = 73;
- left = 126;
- };
-};
-
-// 86 keys
-xkb_geometry "omnibook_intl" {
- include "hp(omnibook)"
- description = "HP Omnibook 6000/6100, Intl";
-
- shape "RTRN" { cornerRadius = 1,
- { [22, 0], [22, 33], [5, 33], [5, 16], [0, 16], [0, 0] },
- { [20, 0], [20, 31], [7, 31], [7, 14], [2, 14], [2, 0] } };
- shape "LFSH" { cornerRadius = 1, { [23, 16] }, { [2, 0], [21, 14] } };
-
- section "Alpha" {
- key.gap = 1;
- key.color = "grey60";
- key.shape = "NORM";
- left = 1;
- top = 27;
- row {
- top = 1;
- keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 18;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top = 35;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top = 52;
- keys { { <LFSH>, "LFSH" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- }; // End of "Alpha" section
-};
-
-xkb_geometry "mini110" {
-
- description= "HP Mini 110";
- width= 262;
- height= 106;
-
- shape.cornerRadius = 0;
- shape "FN0" { { [ 14, 10 ] } , { [ 14, 10 ] } };
- shape "NORM" { { [ 16.7, 16 ] } , { [ 16.7, 16 ] } };
- shape "TLDE" { { [ 12, 16 ] } , { [ 12, 16 ] } };
- shape "ONE" { { [ 14, 16 ] } , { [ 14, 16 ] } };
- shape "BKSP" { { [ 31.3, 16 ] } , { [ 31.3, 16 ] } };
- shape "BKSL" { { [ 23.9, 16 ] } , { [ 23.9, 16 ] } };
- shape "CAPS" { { [ 22, 16 ] } , { [ 22, 16 ] } };
- shape "RTRN" { { [ 36.3, 16 ] } , { [ 36.3, 16 ] } };
- shape "LFSH" { { [ 31, 16 ] } , { [ 31, 16 ] } };
- shape "RTSH" { { [ 45, 16 ] } , { [ 45, 16 ] } };
- shape "CTLS" { { [ 16.5, 19 ] } , { [ 16.5, 19 ] } };
- shape "SPCE" { { [ 78.4, 19 ] } , { [ 78.4, 19 ] } };
- shape "ARRW" { { [ 16.7, 9 ] } , { [ 16.7, 9 ] } };
-
- key.gap=1;
-
- section "Function" {
- top=4;
- left=3;
- key.shape="FN0";
- row {
- keys {
- <ESC>, <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
- <FK12>, <PAUS>, <SCLK>, <INS>, <DELE>
- };
- };
- };
-
- section "Alphanum" {
- top=15;
- left=3;
- key.shape="NORM";
- row {
- top= 0;
- keys { { <TLDE>, "TLDE" } , { <AE01>, "ONE" }, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 17;
- keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 34;
- keys { { <CAPS>, "CAPS" } ,
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 51;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
-
- };
-
- section "Control" {
- top=83;
- left=3;
- key.shape="CTLS";
- row {
- keys {
- <LCTL>, <FN>, <LWIN>, <LALT>, { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
- };
- };
- };
-
- section "Arrows" {
- top=83;
- left=204.9;
- key.shape="ARRW";
- row {
- left= 17.7;
- keys {
- <UP>
- };
- };
- row {
- top = 10;
- keys {
- <LEFT>, <DOWN>, <RGHT>
- };
- };
- };
-
-};
-
-xkb_geometry "dv5" {
-
- height=118.4;
- width=310.6;
-
- description = "HP Pavilion dv5";
-
- shape.cornerRadius = 1;
-
- shape "ESC" { { [20.0, 12.5] }, { [2.2, 1], [17.8, 10.5] } };
- shape "FN0" { { [15.9, 12.5] }, { [2.2, 1], [13.7, 10.5] } };
- shape "DELE" { { [19.4, 12.5] }, { [2.2, 1], [17.2, 10.5] } };
-
- shape "NORM" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
-
- shape "BKSP" { { [36.1, 18.3] }, { [2.4, 1], [33.7, 16.3] } };
-
- shape "TABK" { { [26.8, 18.3] }, { [2.4, 1], [24.4, 16.3] } };
- shape "BKSL" { { [27.1, 18.3] }, { [2.4, 1], [24.7, 16.3] } };
-
- shape "CAPS" { { [31.6, 18.3] }, { [2.4, 1], [29.2, 16.3] } };
- shape "RTRN" { { [41.2, 18.3] }, { [2.4, 1], [39.3, 16.3] } };
-
- shape "LFSH" { { [41.5, 18.3] }, { [2.4, 1], [38.8, 16.3] } };
- shape "RTSH" { { [31.5, 18.3] }, { [2.4, 1], [29.1, 16.3] } };
-
- shape "LCTL" { { [22.4, 18.3] }, { [2.2, 1], [20.2, 16.3] } };
- shape "RCTL" { { [22.6, 18.3] }, { [2.2, 1], [20.4, 16.3] } };
- shape "CTLS" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
- shape "SPCE" { { [94.3, 18.3] }, { [2.5, 1], [91.8, 16.3] } };
-
- shape "ARRW" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
-
- shape "EDIT" { { [16.6, 18.3] }, { [2.2, 1], [14.4, 16.3] } };
-
- key.gap = 1.2;
-
- section "Function" {
- top=4.2;
- left=3;
- row {
- key.shape = "FN0";
- keys {
- {<ESC>, "ESC"},
- {2.9, <FK01>}, <FK02>, <FK03>, <FK04>,
- {2.9, <FK05>}, <FK06>, <FK07>, <FK08>,
- {2.9, <FK09>}, <FK10>, <FK11>, <FK12>,
- {2.9, <NMLK>}, <PAUS>, <INS>, {<DELE>, "DELE"}
- };
- };
- };
-
- section "Alpha" {
- top = 17.9;
- key.shape = "NORM";
- left = 3;
-
- row {
- top = 0;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 19.5;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top = 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top = 58.5;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- }; // End of "Alpha" section
-
- section "Controls" {
- top = 95.9;
- key.shape = "CTLS";
- left = 3;
-
- row {
- top = 0;
- keys { {<LCTL>, "LCTL"}, <FN>, <LWIN>, <LALT>, {<SPCE>, "SPCE"},
- <RALT>, <MENU>, {<RCTL>, "RCTL"}
- };
- };
- };
-
- section "Edition" {
- top = 16.5;
- left = 289.9;
- key.shape = "EDIT";
- key.gap = 1.4;
- row {
- top = 0;
- vertical = true;
- keys {
- <HOME>, <PGUP>, <PGDN>, <END>
- };
- };
- };
-
- section "Arrows" {
- top = 76.4;
- key.shape = "ARRW";
- left = 249.3;
- row {
- top = 0;
- left = 19.1;
- keys {
- <UP>
- };
- };
- row {
- top = 19.5;
- left = 0;
- keys {
- <LEFT>, <DOWN>, <RGHT>
- };
- };
- };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+
+default xkb_geometry "pc101" {
+
+ description= "HP PC101";
+ width= 470;
+ height= 210;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [132,18] }, { [2,1], [130,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 52;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 91;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>, { <RCTL>, 20 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 91;
+ left= 310;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 91;
+ left= 375;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "default" geometry
+
+xkb_geometry "hil" {
+
+ description= "HP hil";
+ width= 455;
+ height= 170;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "TABK" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "BKSL" { { [ 24,18] }, { [2,1], [ 22,17] } };
+ shape "RTRN" { { [ 38,18] }, { [2,1], [ 36,17] } };
+ shape "LFSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "RTSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [151,18] }, { [2,1], [150,17] } };
+ shape "KP0" { { [ 38,18] }, { [2,1], [ 36,17] } };
+ shape "KPTB" { { [ 18,38] }, { [2,1], [ 16,37] } };
+ shape "TLDE" { { [ 24,18] }, { [2,1], [ 22,17] } };
+ shape "FKT1" { { [ 17,14] }, { [2,1], [ 15,13] } };
+ shape "FKT2" { { [ 23,14] }, { [2,1], [ 21,13] } };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 14;
+ row {
+ top= 1;
+ keys { { <BRK>, "FKT1" }, { <STOP>, "FKT1" } ,
+ { <FK01>, "FKT2", 10 }, { <FK02>, "FKT2" },
+ { <FK03>, "FKT2" }, { <FK04>, "FKT2" },
+ { <MENU>, "FKT1" }, { <SYST>, "FKT1" },
+ { <FK05>, "FKT2" }, { <FK06>, "FKT2" },
+ { <FK07>, "FKT2" }, { <FK08>, "FKT2" },
+ { <CLRL>, "FKT1", 10 }, { <CLR>, "FKT1" },
+ { <FK09>, "FKT1", 19 }, { <FK10>, "FKT1" },
+ { <FK11>, "FKT1" }, { <FK12>, "FKT1" }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 52;
+ row {
+ top= 1;
+ keys { { <TLDE>, "TLDE" }, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }, <INSL>, <DELL>
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" },
+ <INSC>, <DELC>
+ };
+ };
+ row {
+ top= 39;
+ keys { <CAPS>, <LCTL>,
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN" },
+ <HOME>, <PGUP>
+ };
+ };
+ row {
+ top= 58;
+ keys { <ESC>, { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }, <SELE>,
+ <UP>, <PGDN>
+ };
+ };
+ row {
+ top= 77;
+ keys { <PRSC>, { <LALT>, 30 },
+ { <SPCE>, "SPCE" },
+ <RALT>, { <LEFT>, 30 }, <DOWN>, <RGHT>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Keypad" {
+ top= 52;
+ left= 360;
+ row {
+ top= 1;
+ keys { <KPMU>, <KPDV>, <KPAD>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPEN> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPSP> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPTB>, "KPTB" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+}; // End of "default" geometry
+
+
+// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
+// Geometry specification for HP Omnibook keyboards.
+// Compatible Models: 6100, 6000.
+
+xkb_geometry "omnibook" {
+ width = 282;
+ height = 128;
+ baseColor = "grey80";
+ labelColor = "white";
+
+ shape "FN0" { cornerRadius = 1, { [15.5, 12] }, { [1, 0], [14.5, 11] } };
+ shape "NORM" { cornerRadius = 1, { [18, 16] }, { [2, 0], [16, 14] } };
+ shape "BKSP" { cornerRadius = 1, { [31, 16] }, { [2, 0], [29, 14] } };
+ shape "TABK" { cornerRadius = 1, { [27, 16] }, { [2, 0], [25, 14] } };
+ shape "CAPS" { cornerRadius = 1, { [32, 16] }, { [2, 0], [30, 14] } };
+ shape "RTSH" { cornerRadius = 1, { [45, 16] }, { [2, 0], [43, 14] } };
+ shape "MODK" { cornerRadius = 1, { [28, 16] }, { [2, 0], [26, 14] } };
+ shape "SPCE" { cornerRadius = 1, { [90, 16] }, { [2, 0], [88, 14] } };
+ shape "ARRS" { cornerRadius = 1, { [17, 12] }, { [2, 0], [15, 11] } };
+
+ shape "LED" { cornerRadius = 1, { [2, 4] } };
+
+ shape "KEYS" { cornerRadius = 1,
+ { [0, 13],
+ [197, 13], [197, 0],
+ [280, 0], [280, 125],
+ [224, 125], [224, 112],
+ [0, 112] }
+ };
+
+ solid "KeyPanel" {
+ shape = "KEYS";
+ left = 1;
+ top = 1;
+ color = "black";
+ };
+
+ shape "NULL1" { cornerRadius = 1, { [54, 16] } };
+
+ solid "NullPanel1" {
+ shape = "NULL1";
+ left = 226;
+ top = 96;
+ color = "grey80";
+ };
+
+ shape "NULL2" { cornerRadius = 1, { [19, 14] } };
+
+ solid "NullPanel2" {
+ shape = "NULL2";
+ left = 243;
+ top = 97;
+ color = "black";
+ };
+
+ indicator.onColor = "green";
+ indicator.offColor = "grey10";
+ indicator.top = 4;
+ indicator.shape = "LED";
+ indicator "Caps Lock" { left = 45; };
+ indicator "Num Lock" { left = 60; };
+ indicator "Scroll Lock" { left = 75; };
+ indicator "HDDActivity" { onColor = "red"; left = 90; };
+
+ key.color = "grey60";
+
+ section "Function" {
+ key.gap = 0.99;
+ left = 1;
+ top = 1;
+ key.shape = "FN0";
+ row {
+ left = 197;
+ top = 1;
+ keys { <PRSC>, <PAUS>, <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top = 14;
+ keys { <ESC>,
+ <FK01>, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <SCLK>, <DELE>, <END>, <PGDN>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Control" {
+ left = 1;
+ top = 34;
+ key.gap = 1;
+ row {
+ top = 62;
+ key.shape = "NORM";
+ keys { <LCTL>, <FN>, <LWIN>, <LALT>,
+ { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
+ };
+ };
+ }; // End of "Control" section
+
+ section "Navigation" {
+ key.shape = "ARRS";
+ left = 225;
+ top = 97;
+ key.gap = 1.4;
+ row {
+ left= 18;
+ top = 1;
+ keys { <UP> };
+ };
+ row {
+ top = 16;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Navigation" section
+
+ shape "STIK" { cornerRadius = 4, { [7, 7] } };
+
+ solid "STIK" {
+ priority = 255;
+ color = "red";
+ shape = "STIK";
+ top = 73;
+ left = 126;
+ };
+};
+
+// 86 keys
+xkb_geometry "omnibook_intl" {
+ include "hp(omnibook)"
+ description = "HP Omnibook 6000/6100, Intl";
+
+ shape "RTRN" { cornerRadius = 1,
+ { [22, 0], [22, 33], [5, 33], [5, 16], [0, 16], [0, 0] },
+ { [20, 0], [20, 31], [7, 31], [7, 14], [2, 14], [2, 0] } };
+ shape "LFSH" { cornerRadius = 1, { [23, 16] }, { [2, 0], [21, 14] } };
+
+ section "Alpha" {
+ key.gap = 1;
+ key.color = "grey60";
+ key.shape = "NORM";
+ left = 1;
+ top = 27;
+ row {
+ top = 1;
+ keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 18;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top = 35;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top = 52;
+ keys { { <LFSH>, "LFSH" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+};
+
+xkb_geometry "mini110" {
+
+ description= "HP Mini 110";
+ width= 262;
+ height= 106;
+
+ shape.cornerRadius = 0;
+ shape "FN0" { { [ 14, 10 ] } , { [ 14, 10 ] } };
+ shape "NORM" { { [ 16.7, 16 ] } , { [ 16.7, 16 ] } };
+ shape "TLDE" { { [ 12, 16 ] } , { [ 12, 16 ] } };
+ shape "ONE" { { [ 14, 16 ] } , { [ 14, 16 ] } };
+ shape "BKSP" { { [ 31.3, 16 ] } , { [ 31.3, 16 ] } };
+ shape "BKSL" { { [ 23.9, 16 ] } , { [ 23.9, 16 ] } };
+ shape "CAPS" { { [ 22, 16 ] } , { [ 22, 16 ] } };
+ shape "RTRN" { { [ 36.3, 16 ] } , { [ 36.3, 16 ] } };
+ shape "LFSH" { { [ 31, 16 ] } , { [ 31, 16 ] } };
+ shape "RTSH" { { [ 45, 16 ] } , { [ 45, 16 ] } };
+ shape "CTLS" { { [ 16.5, 19 ] } , { [ 16.5, 19 ] } };
+ shape "SPCE" { { [ 78.4, 19 ] } , { [ 78.4, 19 ] } };
+ shape "ARRW" { { [ 16.7, 9 ] } , { [ 16.7, 9 ] } };
+
+ key.gap=1;
+
+ section "Function" {
+ top=4;
+ left=3;
+ key.shape="FN0";
+ row {
+ keys {
+ <ESC>, <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
+ <FK12>, <PAUS>, <SCLK>, <INS>, <DELE>
+ };
+ };
+ };
+
+ section "Alphanum" {
+ top=15;
+ left=3;
+ key.shape="NORM";
+ row {
+ top= 0;
+ keys { { <TLDE>, "TLDE" } , { <AE01>, "ONE" }, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 17;
+ keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 34;
+ keys { { <CAPS>, "CAPS" } ,
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 51;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+
+ };
+
+ section "Control" {
+ top=83;
+ left=3;
+ key.shape="CTLS";
+ row {
+ keys {
+ <LCTL>, <FN>, <LWIN>, <LALT>, { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
+ };
+ };
+ };
+
+ section "Arrows" {
+ top=83;
+ left=204.9;
+ key.shape="ARRW";
+ row {
+ left= 17.7;
+ keys {
+ <UP>
+ };
+ };
+ row {
+ top = 10;
+ keys {
+ <LEFT>, <DOWN>, <RGHT>
+ };
+ };
+ };
+
+};
+
+xkb_geometry "dv5" {
+
+ height=118.4;
+ width=310.6;
+
+ description = "HP Pavilion dv5";
+
+ shape.cornerRadius = 1;
+
+ shape "ESC" { { [20.0, 12.5] }, { [2.2, 1], [17.8, 10.5] } };
+ shape "FN0" { { [15.9, 12.5] }, { [2.2, 1], [13.7, 10.5] } };
+ shape "DELE" { { [19.4, 12.5] }, { [2.2, 1], [17.2, 10.5] } };
+
+ shape "NORM" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
+
+ shape "BKSP" { { [36.1, 18.3] }, { [2.4, 1], [33.7, 16.3] } };
+
+ shape "TABK" { { [26.8, 18.3] }, { [2.4, 1], [24.4, 16.3] } };
+ shape "BKSL" { { [27.1, 18.3] }, { [2.4, 1], [24.7, 16.3] } };
+
+ shape "CAPS" { { [31.6, 18.3] }, { [2.4, 1], [29.2, 16.3] } };
+ shape "RTRN" { { [41.2, 18.3] }, { [2.4, 1], [39.3, 16.3] } };
+
+ shape "LFSH" { { [41.5, 18.3] }, { [2.4, 1], [38.8, 16.3] } };
+ shape "RTSH" { { [31.5, 18.3] }, { [2.4, 1], [29.1, 16.3] } };
+
+ shape "LCTL" { { [22.4, 18.3] }, { [2.2, 1], [20.2, 16.3] } };
+ shape "RCTL" { { [22.6, 18.3] }, { [2.2, 1], [20.4, 16.3] } };
+ shape "CTLS" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
+ shape "SPCE" { { [94.3, 18.3] }, { [2.5, 1], [91.8, 16.3] } };
+
+ shape "ARRW" { { [17.9, 18.3] }, { [2.2, 1], [15.7, 16.3] } };
+
+ shape "EDIT" { { [16.6, 18.3] }, { [2.2, 1], [14.4, 16.3] } };
+
+ key.gap = 1.2;
+
+ section "Function" {
+ top=4.2;
+ left=3;
+ row {
+ key.shape = "FN0";
+ keys {
+ {<ESC>, "ESC"},
+ {2.9, <FK01>}, <FK02>, <FK03>, <FK04>,
+ {2.9, <FK05>}, <FK06>, <FK07>, <FK08>,
+ {2.9, <FK09>}, <FK10>, <FK11>, <FK12>,
+ {2.9, <NMLK>}, <PAUS>, <INS>, {<DELE>, "DELE"}
+ };
+ };
+ };
+
+ section "Alpha" {
+ top = 17.9;
+ key.shape = "NORM";
+ left = 3;
+
+ row {
+ top = 0;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 19.5;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top = 58.5;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Controls" {
+ top = 95.9;
+ key.shape = "CTLS";
+ left = 3;
+
+ row {
+ top = 0;
+ keys { {<LCTL>, "LCTL"}, <FN>, <LWIN>, <LALT>, {<SPCE>, "SPCE"},
+ <RALT>, <MENU>, {<RCTL>, "RCTL"}
+ };
+ };
+ };
+
+ section "Edition" {
+ top = 16.5;
+ left = 289.9;
+ key.shape = "EDIT";
+ key.gap = 1.4;
+ row {
+ top = 0;
+ vertical = true;
+ keys {
+ <HOME>, <PGUP>, <PGDN>, <END>
+ };
+ };
+ };
+
+ section "Arrows" {
+ top = 76.4;
+ key.shape = "ARRW";
+ left = 249.3;
+ row {
+ top = 0;
+ left = 19.1;
+ keys {
+ <UP>
+ };
+ };
+ row {
+ top = 19.5;
+ left = 0;
+ keys {
+ <LEFT>, <DOWN>, <RGHT>
+ };
+ };
+ };
+};
diff --git a/xorg-server/xkeyboard-config/geometry/keytronic b/xorg-server/xkeyboard-config/geometry/keytronic
index 6ee1b718b..fb17dd8b9 100644
--- a/xorg-server/xkeyboard-config/geometry/keytronic
+++ b/xorg-server/xkeyboard-config/geometry/keytronic
@@ -1,252 +1,252 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-default xkb_geometry "FlexPro" {
-
- // This is an approximate layout for a Key Tronic FlexPro
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Key Tronic FlexPro keyboard";
-
- width= 515;
- height= 200;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 200 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "TABK" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "BKSL" { { [ 23,18] }, { [2,1], [21,17] } };
- shape "RTRN" {
- approx = { [16, 0], [38,37] },
- { [16, 0], [38, 0], [38,37],
- [ 0,37], [ 0,19], [16,19] },
- { [18, 1], [36, 1], [36,36],
- [ 2,36], [ 2,20], [18,20] } };
- shape "CAPS" { { [36,18] }, { [2,1], [34,17] } };
- shape "SHFT" { { [46,18] }, { [2,1], [44,17] } };
- shape "LCTL" { { [32,18] }, { [2,1], [30,17] } };
- shape "RCTL" { { [38,18] }, { [2,1], [36,17] } };
- shape "LALT" { { [28,18] }, { [2,1], [26,17] } };
- shape "RALT" { { [33,18] }, { [2,1], [31,17] } };
- shape "LSPC" { { [66,22] }, { [0,0], [66,22] } };
- shape "RSPC" { { [76,22] }, { [0,0], [76,22] } };
- shape "KP0" { { [37,18] }, { [2,1], [35,17] } };
- shape "KPEN" { { [18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { cornerRadius= 3, { [80,35] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 9;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Function" {
- top= 56;
- row {
- top = 1;
- key.color= "grey20";
- keys { <FK01>, <FK02> };
- };
- row {
- top = 20;
- key.color= "grey20";
- keys { <FK03>, <FK04> };
- };
- row {
- top = 39;
- keys { <FK05>, <FK06> };
- };
- row {
- top = 58;
- key.color= "grey20";
- keys { <FK07>, <FK08> };
- };
- row {
- top = 77;
- key.color= "grey20";
- keys { <FK09>, <FK10> };
- };
- row {
- top = 96;
- keys { <FK11>, <FK12> };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 56;
- left= 53;
- row {
- top= 1;
- keys {
- { <ESC>, color="grey20" }, { <BKSL>, "BKSL", color="grey20" },
- <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys {
- { <TLDE>, color="grey20" }, { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", -14, color="grey20" }
- };
- };
- row {
- top= 39;
- keys {
- { <LCTL>, color="grey20" }, { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>
- };
- };
- row {
- top= 58;
- keys {
- { <LFSH>, color="grey20" },
- { <LFSH>, "SHFT", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "SHFT", color="grey20" }
- };
- };
- row {
- top= 77;
- key.color= "grey20";
- keys {
- <LALT>,
- { <LCTL>, shape="LCTL" },
- { <LALT>, shape="LALT" },
- { <SPCE>, shape="LSPC", 4, color="white" },
- { <SPCE>, shape="RSPC",color="white" },
- { <RALT>, shape="RALT", 4 },
- { <RCTL>, shape="RCTL" }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 12;
- left= 365;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 45;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 64;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 102;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 121;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 3, { [ 76, 20 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 11;
- left= 430;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 13;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 440; };
- indicator "Caps Lock" { left= 467; };
- indicator "Scroll Lock" { left= 489; };
- text.top= 22;
- text.color= "black";
- text "NumLockLabel" { left= 438; text="Num\nLock"; };
- text "CapsLockLabel" { left= 465; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 487; text="Scroll\nLock"; };
-
- logo "FlexProLogoImage" {
- top= 12;
- left= 45;
- name= "KeyTronic";
- shape= "LOGO";
- };
- text "KeyTronicLogoText" {
- top= 15;
- left= 50;
- width= 55;
- text= "FlexPro";
- font= "times";
- slant= "o";
- weight= "bold";
- fontWidth= "narrow";
- fontSize= 36;
- };
-
- section "Keypad" {
- top= 56;
- left= 430;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <LEFT> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPSU>, color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, { <KPAD>, color= "grey20" } };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+default xkb_geometry "FlexPro" {
+
+ // This is an approximate layout for a Key Tronic FlexPro
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Key Tronic FlexPro keyboard";
+
+ width= 515;
+ height= 200;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 200 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "TABK" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "BKSL" { { [ 23,18] }, { [2,1], [21,17] } };
+ shape "RTRN" {
+ approx = { [16, 0], [38,37] },
+ { [16, 0], [38, 0], [38,37],
+ [ 0,37], [ 0,19], [16,19] },
+ { [18, 1], [36, 1], [36,36],
+ [ 2,36], [ 2,20], [18,20] } };
+ shape "CAPS" { { [36,18] }, { [2,1], [34,17] } };
+ shape "SHFT" { { [46,18] }, { [2,1], [44,17] } };
+ shape "LCTL" { { [32,18] }, { [2,1], [30,17] } };
+ shape "RCTL" { { [38,18] }, { [2,1], [36,17] } };
+ shape "LALT" { { [28,18] }, { [2,1], [26,17] } };
+ shape "RALT" { { [33,18] }, { [2,1], [31,17] } };
+ shape "LSPC" { { [66,22] }, { [0,0], [66,22] } };
+ shape "RSPC" { { [76,22] }, { [0,0], [76,22] } };
+ shape "KP0" { { [37,18] }, { [2,1], [35,17] } };
+ shape "KPEN" { { [18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { cornerRadius= 3, { [80,35] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 9;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Function" {
+ top= 56;
+ row {
+ top = 1;
+ key.color= "grey20";
+ keys { <FK01>, <FK02> };
+ };
+ row {
+ top = 20;
+ key.color= "grey20";
+ keys { <FK03>, <FK04> };
+ };
+ row {
+ top = 39;
+ keys { <FK05>, <FK06> };
+ };
+ row {
+ top = 58;
+ key.color= "grey20";
+ keys { <FK07>, <FK08> };
+ };
+ row {
+ top = 77;
+ key.color= "grey20";
+ keys { <FK09>, <FK10> };
+ };
+ row {
+ top = 96;
+ keys { <FK11>, <FK12> };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 56;
+ left= 53;
+ row {
+ top= 1;
+ keys {
+ { <ESC>, color="grey20" }, { <BKSL>, "BKSL", color="grey20" },
+ <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys {
+ { <TLDE>, color="grey20" }, { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", -14, color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys {
+ { <LCTL>, color="grey20" }, { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>
+ };
+ };
+ row {
+ top= 58;
+ keys {
+ { <LFSH>, color="grey20" },
+ { <LFSH>, "SHFT", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "SHFT", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.color= "grey20";
+ keys {
+ <LALT>,
+ { <LCTL>, shape="LCTL" },
+ { <LALT>, shape="LALT" },
+ { <SPCE>, shape="LSPC", 4, color="white" },
+ { <SPCE>, shape="RSPC",color="white" },
+ { <RALT>, shape="RALT", 4 },
+ { <RCTL>, shape="RCTL" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 12;
+ left= 365;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 45;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 64;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 102;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 121;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 3, { [ 76, 20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 11;
+ left= 430;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 13;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 440; };
+ indicator "Caps Lock" { left= 467; };
+ indicator "Scroll Lock" { left= 489; };
+ text.top= 22;
+ text.color= "black";
+ text "NumLockLabel" { left= 438; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 465; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 487; text="Scroll\nLock"; };
+
+ logo "FlexProLogoImage" {
+ top= 12;
+ left= 45;
+ name= "KeyTronic";
+ shape= "LOGO";
+ };
+ text "KeyTronicLogoText" {
+ top= 15;
+ left= 50;
+ width= 55;
+ text= "FlexPro";
+ font= "times";
+ slant= "o";
+ weight= "bold";
+ fontWidth= "narrow";
+ fontSize= 36;
+ };
+
+ section "Keypad" {
+ top= 56;
+ left= 430;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <LEFT> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPSU>, color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, { <KPAD>, color= "grey20" } };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+};
diff --git a/xorg-server/xkeyboard-config/geometry/kinesis b/xorg-server/xkeyboard-config/geometry/kinesis
index 868f5c542..f71cec8c5 100644
--- a/xorg-server/xkeyboard-config/geometry/kinesis
+++ b/xorg-server/xkeyboard-config/geometry/kinesis
@@ -1,189 +1,189 @@
-default xkb_geometry "model100" {
-
- // This is an approximate layout for a Kinesis Ergonomic keyboard
- // Generated completely by eye. I didn't actually *measure* a real
- // keyboard.
-
- description= "Kinesis Ergonomic Keyboard";
- width= 421;
- height= 185;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "WIDE" { { [ 21,18] }, { [2,1], [19,17] } };
- shape "TALL" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "FKEY" { cornerRadius=0, { [ 10,13] } };
- shape "LED" { cornerRadius= 1.5, { [ 3, 3] } };
- shape "LOGO" { { [ 40, 10 ] } };
- shape "EDGE" { cornerRadius=5, { [ 421, 185 ] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section "LeftFunction" {
- left= 15;
- top= 11;
- key.shape= "FKEY";
- key.gap= 3;
- row {
- left= 1;
- top= 1;
- keys {
- <ESC>, <FK01>, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>
- };
- };
- }; // End of "LeftFunction" section
-
- section "RightFunction" {
- left= 290;
- top= 11;
- key.shape= "FKEY";
- key.gap= 3;
- row {
- left= 1;
- top= 0.2;
- keys {
- <FK09>, <FK10>, <FK11>, <FK12>, <PRSC>,
- <SCLK>, <PAUS>, <FK16>, <FK17>
- };
- };
- }; // End of "RightFunction" section
-
- row.vertical= True;
- row.top= 1;
- key.gap= 0.5;
-
- logo "KinesisLogoImage" {
- top= 25;
- left= 240;
- name= "Kinesis";
- shape= "LOGO";
- };
-
- indicator.shape= "LED";
- indicator.top= 30;
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator "Caps Lock" { left= 23; };
-
- section "LeftAlpha" {
- top= 34;
- left= 15;
- row {
- left= 2;
- key.shape= "WIDE";
- keys { <AE12>, <TAB>, <CAPS>, <LFSH> };
- };
- row {
- top= 4;
- left= 24;
- keys { <AE01>, <AD01>, { <AC01>, color="grey20" }, <AB01>, <TLDE> };
- };
- row {
- left= 43;
- keys { <AE02>, <AD02>, { <AC02>, color="grey20" }, <AB02>, <INS> };
- };
- row {
- left= 62;
- keys { <AE03>, <AD03>, { <AC03>, color="grey20" }, <AB03>, <LEFT> };
- };
- row {
- left= 81;
- keys { <AE04>, <AD04>, { <AC04>, color="grey20" }, <AB04>, <RGHT> };
- };
- row {
- left= 100;
- keys { <AE05>, <AD05>, <AC05>, <AB05> };
- };
- }; // End of "LeftAlpha" section
-
- indicator "NumLock" { left= 318; };
- indicator "Overlay" { left= 387; };
- section "RightAlpha" {
- top= 34;
- left= 290;
- row {
- left= 2;
- keys { <AE06>, <AD06>, <AC06>, <AB06> };
- };
- row {
- left= 21;
- keys { <AE07>, <AD07>, { <AC07>, color="grey20" }, <AB07>, <UP> };
- };
- row {
- left= 40;
- keys { <AE08>, <AD08>, { <AC08>, color="grey20" }, <AB08>, <DOWN> };
- };
- row {
- left= 59;
- keys { <AE09>, <AD09>, { <AC09>, color="grey20" }, <AB09>, <AD11> };
- };
- row {
- top= 4;
- left= 78;
- keys { <AE10>, <AD10>, { <AC10>, color="grey20" }, <AB10>, <AD12> };
- };
- row {
- left= 97;
- key.shape= "WIDE";
- keys { <AE11>, <BKSL>, <AC11>, <RTSH> };
- };
- overlay "KPAD" {
- <AE07>=<NMLK>, <AE08>=<KPEQ>, <AE09>=<KPSL>, <AE10>=<KPMU>,
- <AD07>=<KP7>, <AD08>=<KP8>, <AD09>=<KP9>, <AD10>=<KPSU>,
- <AC07>=<KP4>, <AC08>=<KP5>, <AC09>=<KP6>, <AC10>=<KPAD>,
- <AB07>=<KP1>, <AB08>=<KP2>, <AB09>=<KP3>, <AB10>=<KPEN>,
- <AE10>=<KPDL>, <AE11>=<KPEN>
- };
- }; // End of "RightAlpha" section
-
- section "LeftEdit" {
- top= 109;
- left= 123;
- angle= 20;
- row.top= -18;
- row {
- top= 1;
- left= 1;
- keys { { <BKSP>, "TALL" } };
- };
- row {
- left= 20;
- keys { <LCTL>, { <DELE>, "TALL" } };
- };
- row {
- left= 39;
- keys { <LALT>, <HOME>, <END> };
- };
- }; // End of "RightEdit" section
-
- section "RightEdit" {
- top= 109;
- left= 302;
- angle= -20;
- row.top= -18;
- row {
- left= -57;
- keys { <RALT>, <PGUP>, <PGDN> };
- };
- row {
- left= -38;
- keys { <RCTL>, { <RTRN>, "TALL" } };
- };
- row {
- top= 1;
- left= -19;
- keys { { <SPCE>, "TALL" } };
- };
- overlay "KPAD" {
- <SPCE>= <KP0>
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
+default xkb_geometry "model100" {
+
+ // This is an approximate layout for a Kinesis Ergonomic keyboard
+ // Generated completely by eye. I didn't actually *measure* a real
+ // keyboard.
+
+ description= "Kinesis Ergonomic Keyboard";
+ width= 421;
+ height= 185;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "WIDE" { { [ 21,18] }, { [2,1], [19,17] } };
+ shape "TALL" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "FKEY" { cornerRadius=0, { [ 10,13] } };
+ shape "LED" { cornerRadius= 1.5, { [ 3, 3] } };
+ shape "LOGO" { { [ 40, 10 ] } };
+ shape "EDGE" { cornerRadius=5, { [ 421, 185 ] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section "LeftFunction" {
+ left= 15;
+ top= 11;
+ key.shape= "FKEY";
+ key.gap= 3;
+ row {
+ left= 1;
+ top= 1;
+ keys {
+ <ESC>, <FK01>, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>
+ };
+ };
+ }; // End of "LeftFunction" section
+
+ section "RightFunction" {
+ left= 290;
+ top= 11;
+ key.shape= "FKEY";
+ key.gap= 3;
+ row {
+ left= 1;
+ top= 0.2;
+ keys {
+ <FK09>, <FK10>, <FK11>, <FK12>, <PRSC>,
+ <SCLK>, <PAUS>, <FK16>, <FK17>
+ };
+ };
+ }; // End of "RightFunction" section
+
+ row.vertical= True;
+ row.top= 1;
+ key.gap= 0.5;
+
+ logo "KinesisLogoImage" {
+ top= 25;
+ left= 240;
+ name= "Kinesis";
+ shape= "LOGO";
+ };
+
+ indicator.shape= "LED";
+ indicator.top= 30;
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator "Caps Lock" { left= 23; };
+
+ section "LeftAlpha" {
+ top= 34;
+ left= 15;
+ row {
+ left= 2;
+ key.shape= "WIDE";
+ keys { <AE12>, <TAB>, <CAPS>, <LFSH> };
+ };
+ row {
+ top= 4;
+ left= 24;
+ keys { <AE01>, <AD01>, { <AC01>, color="grey20" }, <AB01>, <TLDE> };
+ };
+ row {
+ left= 43;
+ keys { <AE02>, <AD02>, { <AC02>, color="grey20" }, <AB02>, <INS> };
+ };
+ row {
+ left= 62;
+ keys { <AE03>, <AD03>, { <AC03>, color="grey20" }, <AB03>, <LEFT> };
+ };
+ row {
+ left= 81;
+ keys { <AE04>, <AD04>, { <AC04>, color="grey20" }, <AB04>, <RGHT> };
+ };
+ row {
+ left= 100;
+ keys { <AE05>, <AD05>, <AC05>, <AB05> };
+ };
+ }; // End of "LeftAlpha" section
+
+ indicator "NumLock" { left= 318; };
+ indicator "Overlay" { left= 387; };
+ section "RightAlpha" {
+ top= 34;
+ left= 290;
+ row {
+ left= 2;
+ keys { <AE06>, <AD06>, <AC06>, <AB06> };
+ };
+ row {
+ left= 21;
+ keys { <AE07>, <AD07>, { <AC07>, color="grey20" }, <AB07>, <UP> };
+ };
+ row {
+ left= 40;
+ keys { <AE08>, <AD08>, { <AC08>, color="grey20" }, <AB08>, <DOWN> };
+ };
+ row {
+ left= 59;
+ keys { <AE09>, <AD09>, { <AC09>, color="grey20" }, <AB09>, <AD11> };
+ };
+ row {
+ top= 4;
+ left= 78;
+ keys { <AE10>, <AD10>, { <AC10>, color="grey20" }, <AB10>, <AD12> };
+ };
+ row {
+ left= 97;
+ key.shape= "WIDE";
+ keys { <AE11>, <BKSL>, <AC11>, <RTSH> };
+ };
+ overlay "KPAD" {
+ <AE07>=<NMLK>, <AE08>=<KPEQ>, <AE09>=<KPSL>, <AE10>=<KPMU>,
+ <AD07>=<KP7>, <AD08>=<KP8>, <AD09>=<KP9>, <AD10>=<KPSU>,
+ <AC07>=<KP4>, <AC08>=<KP5>, <AC09>=<KP6>, <AC10>=<KPAD>,
+ <AB07>=<KP1>, <AB08>=<KP2>, <AB09>=<KP3>, <AB10>=<KPEN>,
+ <AE10>=<KPDL>, <AE11>=<KPEN>
+ };
+ }; // End of "RightAlpha" section
+
+ section "LeftEdit" {
+ top= 109;
+ left= 123;
+ angle= 20;
+ row.top= -18;
+ row {
+ top= 1;
+ left= 1;
+ keys { { <BKSP>, "TALL" } };
+ };
+ row {
+ left= 20;
+ keys { <LCTL>, { <DELE>, "TALL" } };
+ };
+ row {
+ left= 39;
+ keys { <LALT>, <HOME>, <END> };
+ };
+ }; // End of "RightEdit" section
+
+ section "RightEdit" {
+ top= 109;
+ left= 302;
+ angle= -20;
+ row.top= -18;
+ row {
+ left= -57;
+ keys { <RALT>, <PGUP>, <PGDN> };
+ };
+ row {
+ left= -38;
+ keys { <RCTL>, { <RTRN>, "TALL" } };
+ };
+ row {
+ top= 1;
+ left= -19;
+ keys { { <SPCE>, "TALL" } };
+ };
+ overlay "KPAD" {
+ <SPCE>= <KP0>
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
diff --git a/xorg-server/xkeyboard-config/geometry/macintosh b/xorg-server/xkeyboard-config/geometry/macintosh
index 32389445b..1e0e125d7 100644
--- a/xorg-server/xkeyboard-config/geometry/macintosh
+++ b/xorg-server/xkeyboard-config/geometry/macintosh
@@ -1,1446 +1,1446 @@
-//
-// Some modifications (<eqdar@castalie.org>) :
-// - Added a <LSGT> key
-// - Fixed the shape of the <RTRN> key
-// - Moved <BKSL> to the 'AC' row
-// - Added a special Macintosh sysctl key
-// - Minor changes (Function keys shape, LED position...)
-
-// Minor changes
-// - Mail address above is no longer valid
-// - Changed {L,R}MTA to {L,R}WIN, which are defined
-// 2005/10 -- Simon Vallet <svallet@gmail.com>
-
-default xkb_geometry "macintosh" {
-
- description= "Apple Extended Keyboard II";
- width = 475;
- height = 194;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "TLDE" { { [ 23,18] }, { [2,1], [ 21,17] } };
- shape "BKSP" { { [ 33,18] }, { [2,1], [ 31,17] } };
- shape "TAB" { { [ 33,18] }, { [2,1], [ 31,17] } };
- shape "RTRN" {
- { [0,0],[23,0],[23,37],[4,37],[4,18],[0,18] },
- { [2,1],[21,1],[21,36],[6,36],[6,17],[2,17] } };
- shape "CAPS" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "LCTL" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "LALT" { { [ 22,18] }, { [2,1], [ 20,17] } };
- shape "LMTA" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "LFSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "RCTL" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "RALT" { { [ 22,18] }, { [2,1], [ 20,17] } };
- shape "RMTA" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "RTSH" { { [ 47,18] }, { [2,1], [ 45,17] } };
- shape "SPCE" { { [123,18] }, { [2,1], [121,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
- // Macintosh keyboards have a special sysctl key at the top right
- shape "AAPL" {
- { [ 0,0], [ 18,0], [ 18,18], [ 0,18] },
- { [ 1,1], [ 17,1], [ 17,17], [ 1,17] },
- { [ 8,5], [ 8,12], [ 2,9] } };
-
- shape "LEDS" { cornerRadius = 0, { [ 55,19] } };
- shape "LED" { cornerRadius = 0, { [ 8, 2] } };
-
- solid "LedPanel" {
- shape= "LEDS";
- top = 48;
- left = 378;
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top = 50;
- indicator.shape= "LED";
- indicator "NumLock" { left = 381; };
- indicator "CapsLock" { left = 398; };
- indicator "ScrollLock" { left = 415; };
- text.top= 55;
- text.color= "black";
- text "NumLockLabel" { left = 381; text = "Num\nLock"; };
- text "CapsLockLabel" { left = 398; text = "Caps\nLock"; };
- text "ScrollLockLabel" { left = 415; text = "Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Function" {
- top = 48;
- row {
- top= 1;
- keys { <ESC>,
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 10 }, <SCLK>, <PAUS>,
- // This is the sysctl key on macintosh keyboards
- // keycode is 222 with a 4.21 kernel, which is <I5E>
- { <I5E>, "AAPL", 67 }
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top = 87;
- row {
- top= 1;
- keys { { <TLDE>, "TLDE" }, <AE01>, <AE02>, <AE03>,
- <AE04>, <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TAB" }, <AD01>, <AD02>, <AD03>,
- <AD04>, <AD05>, <AD06>, <AD07>, <AD08>, <AD09>,
- <AD10>, <AD11>, <AD12>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS" }, <AC01>, <AC02>, <AC03>,
- <AC04>, <AC05>, <AC06>, <AC07>, <AC08>, <AC09>,
- <AC10>, <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" }, <LSGT>, <AB01>, <AB02>,
- <AB03>, <AB04>, <AB05>, <AB06>, <AB07>, <AB08>,
- <AB09>, <AB10>, { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- keys { { <LCTL>, "LCTL" }, { <LALT>, "LALT" },
- { <LWIN>, "LMTA" },
- { <SPCE>, "SPCE" },
- { <RWIN>, "RMTA" },
- { <RALT>, "RALT" }, { <RCTL>, "RCTL" }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top = 87;
- left = 314;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- // Begin of "Keypad" section
- section "Keypad" {
- top = 87;
- left = 380;
- row {
- top= 1;
- keys { <NMLK>, <KPEQ>, <KPDV>, <KPMU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
-}; // End of "default" geometry
-
-
-// This section describes the geometry of the "Apple Pro" keyboard
-// included with NewWorld desktop machines
-//
-// It adds four new keysyms, labeled SDDN, SDUP, SDNO, EJCT.
-//
-// 2005/10 -- Simon Vallet <svallet@gmail.com>
-
-xkb_geometry "applepro" {
-
- description= "Apple Pro Keyboard";
- width = 455;
- height = 150;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18, 18] }, { [2, 1], [ 16, 15] } };
- shape "FUNC" { { [ 18, 21] }, { [2, 1], [ 16, 16] } };
- shape "BKSP" { { [ 38, 18] }, { [2, 1], [ 36, 15] } };
- shape "TAB" { { [ 29, 18] }, { [2, 1], [ 26, 15] } };
- shape "LFSH" { { [ 28, 18] }, { [2, 1], [ 26, 15] } };
- shape "RTSH" { { [ 47, 18] }, { [2, 1], [ 45, 15] } };
-
- shape "RTRN" {
- { [0,0],[27,0],[27,37],[4,37],[4,18],[0,18] },
- { [2,1],[25,1],[25,34],[6,34],[6,15],[2,15] } };
-
- shape "CAPS" { { [ 32, 18] }, { [2, 1], [ 26, 15] } };
- shape "LCTL" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
- shape "RCTL" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
- shape "LALT" { { [ 23, 20] }, { [2, 1], [ 21, 17] } };
- shape "RALT" { { [ 23, 20] }, { [2, 1], [ 21, 17] } };
- shape "LMTA" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
- shape "RMTA" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
- shape "SPCE" { { [121, 20] }, { [3, 1], [118, 17] } };
- shape "BOTM" { { [ 18, 20] }, { [2, 1], [ 16, 17] } };
-
- shape "KP0" { { [ 37, 20] }, { [2, 1], [ 35, 17] } };
- shape "KPEN" { { [ 18, 39] }, { [2, 1], [ 16, 36] } };
-
- section.left = 7;
- row.left = 1;
- key.gap = 1;
- key.shape = "NORM";
-
- section "Function" {
- key.shape = "FUNC";
- top = 26;
- row {
- top= 1;
- keys { <ESC>,
- { <FK01>, 14 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 14 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 14 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 11 }, <SCLK>, <PAUS>,
- { <SDDN>, 11 }, <SDUP>, <SDNO>, <EJCT>
- };
- };
- }; // End of "Function" section
-
-
- section "Alpha" {
- top = 48;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>,
- <AE04>, <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TAB" }, <AD01>, <AD02>, <AD03>,
- <AD04>, <AD05>, <AD06>, <AD07>, <AD08>, <AD09>,
- <AD10>, <AD11>, <AD12>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS" }, <AC01>, <AC02>, <AC03>,
- <AC04>, <AC05>, <AC06>, <AC07>, <AC08>, <AC09>,
- <AC10>, <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" }, <LSGT>, <AB01>, <AB02>,
- <AB03>, <AB04>, <AB05>, <AB06>, <AB07>, <AB08>,
- <AB09>, <AB10>, { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- keys { { <LCTL>, "LCTL" }, { <LALT>, "LALT" },
- { <LWIN>, "LMTA" },
- { <SPCE>, "SPCE" },
- { <RWIN>, "RMTA" },
- { <RALT>, "RALT" }, { <RCTL>, "RCTL" }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top = 48;
- left = 303;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- key.shape = "BOTM";
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- // Begin of "Keypad" section
- section "Keypad" {
- top = 48;
- left = 370;
- row {
- top= 1;
- keys { <NMLK>, <KPEQ>, <KPDV>, <KPMU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPSU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, { <KPDL>, "BOTM" } };
- };
- }; // End of "Keypad" section
-
-}; // End of "applepro" geometry
-
-xkb_geometry "macbook78" {
-
- description= "Apple Laptop 78-key (US)";
- width= 273;
- height= 110;
-
- shape.cornerRadius= 0;
- shape "ESC" { { [ 21,9] }, cornerRadius=1, { [0,1], [ 19,8] } };
- shape "FUNC" { { [ 18,9] }, cornerRadius=1, { [2,1], [ 16,8] } };
- shape "EJCT" { { [ 20,9] }, cornerRadius=1, { [2,1], [ 20,8] } };
- shape "DEGR" { { [ 16,18] }, cornerRadius=1, { [0,2], [ 14,16] } };
- shape "NORM" { { [ 18,18] }, cornerRadius=1, { [2,2], [ 16,16] } };
- shape "BKSP" { { [ 25,18] }, cornerRadius=1, { [2,2], [ 25,16] } };
- shape "TABK" { { [ 24,18] }, cornerRadius=1, { [0,2], [ 22,16] } };
- shape "BKSL" { { [ 17,18] }, cornerRadius=1, { [2,2], [17,16] } };
- shape "RTRN" { { [ 31,18] }, cornerRadius=1, { [2,2], [31,16] } };
- shape "CAPS" { { [ 29,18] }, cornerRadius=1, { [0,2], [ 27,16] } };
- shape "LFSH" { { [ 40,18] }, cornerRadius=1, { [0,2], [ 38,16] } };
- shape "RTSH" { { [ 39,18] }, cornerRadius=1, { [2,2], [ 39,16] } };
- shape "APPL" { { [ 23,18] }, cornerRadius=1, { [2,2], [ 21,16] } };
- shape "SPCE" { { [ 94,18] }, cornerRadius=1, { [2,2], [ 92,16] } };
- shape "ARRO" { { [ 17,9] }, cornerRadius=1, { [2,1], [ 15,8] } };
-
- shape "LED" { cornerRadius= 1, { [ 2, 2 ] } };
-
- indicator.onColor= "green";
- indicator.offColor= "gray";
- indicator.shape= "LED";
- indicator "Num Lock" { top=4; left= 119; };
- indicator "Caps Lock" { top=53; left= 4; };
-
- section.left=0;
- row.left= 1;
- key.shape= "FUNC";
- key.gap= 1;
- section "Function" {
- top= 0;
- row {
- top= 1;
- keys { {<ESC>, "ESC" },
- <FK01>, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- {<K6C>, "EJCT" }
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 10;
- row {
- top= 1;
- keys { {<TLDE>, "DEGR"},
- <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>,
- <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK"},
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH"},
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- keys { {<FN>, "DEGR"},
- <LCTL>, <LALT>,
- {<LMTA>, "APPL"},
- {<SPCE>, "SPCE" },
- {<RMTA>, "APPL"},
- <KPEN>
- };
- };
-
- }; // End of "Alpha" section
-
- key.shape= "ARRO";
- section "Editing" {
- top = 86;
- left = 217;
- row {
- top= 1;
- left= 19;
- keys { <UP> };
- };
- row {
- top= 10;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-};
-
-xkb_geometry "macbook79" {
-
- description= "Apple Laptop 79-key (Intl)";
- width= 273;
- height= 110;
-
- shape.cornerRadius= 0;
- shape "ESC" { { [ 21,9] }, cornerRadius=1, { [0,1], [ 19,8] } };
- shape "FUNC" { { [ 18,9] }, cornerRadius=1, { [2,1], [ 16,8] } };
- shape "EJCT" { { [ 20,9] }, cornerRadius=1, { [2,1], [ 20,8] } };
- shape "DEGR" { { [ 16,18] }, cornerRadius=1, { [0,2], [ 14,16] } };
- shape "NORM" { { [ 18,18] }, cornerRadius=1, { [2,2], [ 16,16] } };
- shape "BKSP" { { [ 25,18] }, cornerRadius=1, { [2,2], [ 25,16] } };
- shape "TABK" { { [ 24,18] }, cornerRadius=1, { [0,2], [ 22,16] } };
- shape "RTRN" { { [ 0,0], [17,0], [17,37], [5,37], [5, 18], [0,18], [0,0] },
- cornerRadius=1,
- { [ 2,2], [15,2], [15,35], [7,35], [7, 16], [2,16] }
- };
- shape "CAPS" { { [ 29,18] }, cornerRadius=1, { [0,2], [ 27,16] } };
- shape "LFSH" { { [ 21,18] }, cornerRadius=1, { [0,2], [ 19,16] } };
- shape "RTSH" { { [ 39,18] }, cornerRadius=1, { [2,2], [ 39,16] } };
- shape "APPL" { { [ 23,18] }, cornerRadius=1, { [2,2], [ 21,16] } };
- shape "SPCE" { { [ 94,18] }, cornerRadius=1, { [2,2], [ 92,16] } };
- shape "ARRO" { { [ 17,9] }, cornerRadius=1, { [2,1], [ 15,8] } };
-
- shape "LED" { cornerRadius= 1, { [ 2, 2 ] } };
-
- indicator.onColor= "green";
- indicator.offColor= "gray";
- indicator.shape= "LED";
- indicator "Num Lock" { top=4; left= 119; };
- indicator "Caps Lock" { top=53; left= 4; };
-
- section.left=0;
- row.left= 1;
- key.shape= "FUNC";
- key.gap= 1;
- section "Function" {
- top= 0;
- row {
- top= 1;
- keys { {<ESC>, "ESC" },
- <FK01>, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- {<K6C>, "EJCT" }
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 10;
- row {
- top= 1;
- keys { {<TLDE>, "DEGR"},
- <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>,
- <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK"},
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH"},
- <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- keys { {<FN>, "DEGR"},
- <LCTL>, <LALT>,
- {<LWIN>, "APPL"},
- {<SPCE>, "SPCE" },
- {<RALT>, "APPL"},
- <KPEN>
- };
- };
-
- }; // End of "Alpha" section
-
- key.shape= "ARRO";
- section "Editing" {
- top = 86;
- left = 217;
- row {
- top= 1;
- left= 19;
- keys { <UP> };
- };
- row {
- top= 10;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "default" geometry
-
-
-// Aluminium Keyboard, ANSI model (United States, 109 keys)
-xkb_geometry "applealu_ansi" {
-
- width= 430;
- height= 113.5;
-
- baseColor= "white";
- labelColor= "black";
- xfont= "-*-helvetica-medium-r-normal--*-80-*-*-*-*-iso8859-1";
- description= "Aluminium Keyboard (ANSI)";
-
- shape "NORM" {
- corner= 1,
- { [ 15.5, 15 ] }
- };
- shape "FUNC" {
- corner= 1,
- { [ 16.1, 9 ] }
- };
- shape "FUNS" {
- corner= 1,
- { [ 15.5, 9 ] }
- };
- shape "BKSP" {
- corner= 1,
- { [ 24.5, 15 ] }
- };
- shape "TAB" {
- corner= 1,
- { [ 24.5, 15 ] }
- };
- shape "RTRN" {
- corner= 1,
- { [ 29.5, 15 ] }
- };
- shape "CAPS" {
- corner= 1,
- { [ 29.5, 15 ] }
- };
- shape "LCTL" {
- corner= 1,
- { [ 25, 18 ] }
- };
- shape "LALT" {
- corner= 1,
- { [ 20, 18 ] }
- };
- shape "LMTA" {
- corner= 1,
- { [ 25, 18 ] }
- };
- shape "LFSH" {
- corner= 1,
- { [ 39, 15 ] }
- };
- shape "RCTL" {
- corner= 1,
- { [ 25, 18 ] }
- };
- shape "RALT" {
- corner= 1,
- { [ 20, 18 ] }
- };
- shape "RMTA" {
- corner= 1,
- { [ 25, 18 ] }
- };
- shape "RTSH" {
- corner= 1,
- { [ 39, 15 ] }
- };
- shape "SPCE" {
- corner= 1,
- { [ 110.5, 18 ] }
- };
- shape "KP0" {
- corner= 1,
- { [ 34.5, 18 ] }
- };
- shape "KPEN" {
- corner= 1,
- { [ 15.5, 36.5 ] }
- };
- shape "KPDT" {
- corner= 1,
- { [ 15.5, 18 ] }
- };
- shape "LED" {
- corner= 0.5,
- { [ 1.5, 1.5 ] }
- };
-
- section "Function" {
- key.color= "white";
- priority= 7;
- top= 4.5;
- left= 4.7;
- width= 420.5;
- height= 10;
- row {
- top= 0;
- left= 0;
- keys {
- { <ESC>, "FUNC", 0 }, { <FK01>, "FUNC", 3.6 },
- { <FK02>, "FUNC", 3.5 }, { <FK03>, "FUNC", 3.6 },
- { <FK04>, "FUNC", 3.5 }, { <FK05>, "FUNC", 3.6 },
- { <FK06>, "FUNC", 3.5 }, { <FK07>, "FUNC", 3.6 },
- { <FK08>, "FUNC", 3.5 }, { <FK09>, "FUNC", 3.6 },
- { <FK10>, "FUNC", 3.5 }, { <FK11>, "FUNC", 3.6 },
- { <FK12>, "FUNC", 3.5 }, { <I169>, "FUNC", 3.5 },
- { <FK13>, "FUNS", 11.5 }, { <FK14>, "FUNS", 3.5 },
- { <FK15>, "FUNS", 3.5 }, { <FK16>, "FUNS", 11.5 },
- { <FK17>, "FUNS", 3.5 }, { <FK18>, "FUNS", 3.5 },
- { <FK19>, "FUNS", 3.5 }
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- key.color= "white";
- priority= 8;
- top= 17;
- left= 5;
- width= 271.5;
- height= 92;
- row {
- top= 0;
- left= 0;
- keys {
- { <TLDE>, "NORM", 0 }, { <AE01>, "NORM", 3.5 },
- { <AE02>, "NORM", 3.5 }, { <AE03>, "NORM", 3.5 },
- { <AE04>, "NORM", 3.5 }, { <AE05>, "NORM", 3.5 },
- { <AE06>, "NORM", 3.5 }, { <AE07>, "NORM", 3.5 },
- { <AE08>, "NORM", 3.5 }, { <AE09>, "NORM", 3.5 },
- { <AE10>, "NORM", 3.5 }, { <AE11>, "NORM", 3.5 },
- { <AE12>, "NORM", 3.5 }, { <BKSP>, "BKSP", 3.5 }
- };
- };
- row {
- top= 18.5;
- left= 0;
- keys {
- { <TAB>, "TAB", 0 }, { <AD01>, "NORM", 3.5 },
- { <AD02>, "NORM", 3.5 }, { <AD03>, "NORM", 3.5 },
- { <AD04>, "NORM", 3.5 }, { <AD05>, "NORM", 3.5 },
- { <AD06>, "NORM", 3.5 }, { <AD07>, "NORM", 3.5 },
- { <AD08>, "NORM", 3.5 }, { <AD09>, "NORM", 3.5 },
- { <AD10>, "NORM", 3.5 }, { <AD11>, "NORM", 3.5 },
- { <AD12>, "NORM", 3.5 }, { <BKSL>, "NORM", 3.5 }
-
- };
- };
- row {
- top= 37;
- left= 0;
- keys {
- { <CAPS>, "CAPS", 0 }, { <AC01>, "NORM", 3.5 },
- { <AC02>, "NORM", 3.5 }, { <AC03>, "NORM", 3.5 },
- { <AC04>, "NORM", 3.5 }, { <AC05>, "NORM", 3.5 },
- { <AC06>, "NORM", 3.5 }, { <AC07>, "NORM", 3.5 },
- { <AC08>, "NORM", 3.5 }, { <AC09>, "NORM", 3.5 },
- { <AC10>, "NORM", 3.5 }, { <AC11>, "NORM", 3.5 },
- { <RTRN>, "RTRN", 3.5 }
- };
- };
- row {
- top= 55.5;
- left= 0;
- keys {
- { <LFSH>, "LFSH", 0 },
- { <AB01>, "NORM", 3.5 }, { <AB02>, "NORM", 3.5 },
- { <AB03>, "NORM", 3.5 }, { <AB04>, "NORM", 3.5 },
- { <AB05>, "NORM", 3.5 }, { <AB06>, "NORM", 3.5 },
- { <AB07>, "NORM", 3.5 }, { <AB08>, "NORM", 3.5 },
- { <AB09>, "NORM", 3.5 }, { <AB10>, "NORM", 3.5 },
- { <RTSH>, "RTSH", 3.5 }
- };
- };
- row {
- top= 74;
- left= 0;
- keys {
- { <LCTL>, "LCTL", 0 }, { <LALT>, "LALT", 3.5 },
- { <LMTA>, "LMTA", 3.5 }, { <SPCE>, "SPCE", 3.5 },
- { <RMTA>, "RMTA", 3.5 }, { <RALT>, "RALT", 3.5 },
- { <RCTL>, "RCTL", 3.5 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- key.color= "white";
- priority= 9;
- top= 17;
- left= 287.7;
- width= 53.5;
- height= 92;
- row {
- top= 0;
- left= 0;
- keys {
- { <INS>, "NORM", 0 }, { <HOME>, "NORM", 3.5 },
- { <PGUP>, "NORM", 3.5 }
- };
- };
- row {
- top= 18.5;
- left= 0;
- keys {
- { <DELE>, "NORM", 0 }, { <END>, "NORM", 3.5 },
- { <PGDN>, "NORM", 3.5 }
- };
- };
- row {
- top= 58.5;
- left= 19;
- keys {
- { <UP>, "NORM", 0 }
- };
- };
- row {
- top= 77;
- left= 0;
- keys {
- { <LEFT>, "NORM", 0 }, { <DOWN>, "NORM", 3.5 },
- { <RGHT>, "NORM", 3.5 }
- };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- key.color= "white";
- priority= 10;
- top= 17;
- left= 352.7;
- width= 72.5;
- height= 92;
- row {
- top= 0;
- left= 0;
- keys {
- { <NMLK>, "NORM", 0 }, { <KPEQ>, "NORM", 3.5 },
- { <KPDV>, "NORM", 3.5 }, { <KPMU>, "NORM", 3.5 }
- };
- };
- row {
- top= 18.5;
- left= 0;
- keys {
- { <KP7>, "NORM", 0 }, { <KP8>, "NORM", 3.5 },
- { <KP9>, "NORM", 3.5 }, { <KPSU>, "NORM", 3.5 }
- };
- };
- row {
- top= 37;
- left= 0;
- keys {
- { <KP4>, "NORM", 0 }, { <KP5>, "NORM", 3.5 },
- { <KP6>, "NORM", 3.5 }, { <KPAD>, "NORM", 3.5 }
- };
- };
- row {
- top= 55.5;
- left= 0;
- keys {
- { <KP1>, "NORM", 0 }, { <KP2>, "NORM", 3.5 },
- { <KP3>, "NORM", 3.5 }, { <KPEN>, "KPEN", 3.5 }
- };
- };
- row {
- top= 74;
- left= 0;
- keys {
- { <KP0>, "KP0", 0 }, { <KPDL>, "KPDT", 3.5 }
- };
- };
- }; // End of "Keypad" section
-
- indicator "Caps Lock" {
- top= 56;
- left= 6.7;
- priority= 2;
- onColor= "green";
- offColor= "gray";
- shape= "LED";
- };
-
-};
-
-// Aluminium Keyboard, ISO model (International, 110 keys)
-xkb_geometry "applealu_iso" {
-
- width= 430;
- height= 113.5;
-
- baseColor= "white";
- labelColor= "black";
- xfont= "-*-helvetica-medium-r-normal--*-80-*-*-*-*-iso8859-1";
- description= "Aluminium Keyboard (ISO)";
-
- shape "NORM" {
- corner= 1,
- { [ 15.5, 15 ] }
- };
- shape "FUNC" {
- corner= 1,
- { [ 16.1, 9 ] }
- };
- shape "FUNS" {
- corner= 1,
- { [ 15.5, 9 ] }
- };
- shape "BKSP" {
- corner= 1,
- { [ 24.5, 15 ] }
- };
- shape "TAB" {
- corner= 1,
- { [ 24.5, 15 ] }
- };
- shape "RTRN" {
- corner= 1,
- { [ 0, 0 ], [ 15.5 , 0 ], [ 15.5 , 33.5 ], [ 5, 33.5 ],
- [ 5, 15 ], [ 0, 15 ] }
- };
- shape "CAPS" {
- corner= 1,
- { [ 29.5, 15 ] }
- };
- shape "LCTL" {
- corner= 1,
- { [ 25, 18 ] }
- };
- shape "LALT" {
- corner= 1,
- { [ 20, 18 ] }
- };
- shape "LMTA" {
- corner= 1,
- { [ 25, 18 ] }
- };
- shape "LFSH" {
- corner= 1,
- { [ 20, 15 ] }
- };
- shape "RCTL" {
- corner= 1,
- { [ 25, 18 ] }
- };
- shape "RALT" {
- corner= 1,
- { [ 20, 18 ] }
- };
- shape "RMTA" {
- corner= 1,
- { [ 25, 18 ] }
- };
- shape "RTSH" {
- corner= 1,
- { [ 39, 15 ] }
- };
- shape "SPCE" {
- corner= 1,
- { [ 110.5, 18 ] }
- };
- shape "KP0" {
- corner= 1,
- { [ 34.5, 18 ] }
- };
- shape "KPEN" {
- corner= 1,
- { [ 15.5, 36.5 ] }
- };
- shape "KPDT" {
- corner= 1,
- { [ 15.5, 18 ] }
- };
- shape "LED" {
- corner= 0.5,
- { [ 1.5, 1.5 ] }
- };
-
- section "Function" {
- key.color= "white";
- priority= 7;
- top= 4.5;
- left= 4.7;
- width= 420.5;
- height= 10;
- row {
- top= 0;
- left= 0;
- keys {
- { <ESC>, "FUNC", 0 }, { <FK01>, "FUNC", 3.6 },
- { <FK02>, "FUNC", 3.5 }, { <FK03>, "FUNC", 3.6 },
- { <FK04>, "FUNC", 3.5 }, { <FK05>, "FUNC", 3.6 },
- { <FK06>, "FUNC", 3.5 }, { <FK07>, "FUNC", 3.6 },
- { <FK08>, "FUNC", 3.5 }, { <FK09>, "FUNC", 3.6 },
- { <FK10>, "FUNC", 3.5 }, { <FK11>, "FUNC", 3.6 },
- { <FK12>, "FUNC", 3.5 }, { <I169>, "FUNC", 3.5 },
- { <FK13>, "FUNS", 11.5 }, { <FK14>, "FUNS", 3.5 },
- { <FK15>, "FUNS", 3.5 }, { <FK16>, "FUNS", 11.5 },
- { <FK17>, "FUNS", 3.5 }, { <FK18>, "FUNS", 3.5 },
- { <FK19>, "FUNS", 3.5 }
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- key.color= "white";
- priority= 8;
- top= 17;
- left= 5;
- width= 271.5;
- height= 92;
- row {
- top= 0;
- left= 0;
- keys {
- { <TLDE>, "NORM", 0 }, { <AE01>, "NORM", 3.5 },
- { <AE02>, "NORM", 3.5 }, { <AE03>, "NORM", 3.5 },
- { <AE04>, "NORM", 3.5 }, { <AE05>, "NORM", 3.5 },
- { <AE06>, "NORM", 3.5 }, { <AE07>, "NORM", 3.5 },
- { <AE08>, "NORM", 3.5 }, { <AE09>, "NORM", 3.5 },
- { <AE10>, "NORM", 3.5 }, { <AE11>, "NORM", 3.5 },
- { <AE12>, "NORM", 3.5 }, { <BKSP>, "BKSP", 3.5 }
- };
- };
- row {
- top= 18.5;
- left= 0;
- keys {
- { <TAB>, "TAB", 0 }, { <AD01>, "NORM", 3.5 },
- { <AD02>, "NORM", 3.5 }, { <AD03>, "NORM", 3.5 },
- { <AD04>, "NORM", 3.5 }, { <AD05>, "NORM", 3.5 },
- { <AD06>, "NORM", 3.5 }, { <AD07>, "NORM", 3.5 },
- { <AD08>, "NORM", 3.5 }, { <AD09>, "NORM", 3.5 },
- { <AD10>, "NORM", 3.5 }, { <AD11>, "NORM", 3.5 },
- { <AD12>, "NORM", 3.5 }, { <RTRN>, "RTRN", 3.5 }
- };
- };
- row {
- top= 37;
- left= 0;
- keys {
- { <CAPS>, "CAPS", 0 }, { <AC01>, "NORM", 3.5 },
- { <AC02>, "NORM", 3.5 }, { <AC03>, "NORM", 3.5 },
- { <AC04>, "NORM", 3.5 }, { <AC05>, "NORM", 3.5 },
- { <AC06>, "NORM", 3.5 }, { <AC07>, "NORM", 3.5 },
- { <AC08>, "NORM", 3.5 }, { <AC09>, "NORM", 3.5 },
- { <AC10>, "NORM", 3.5 }, { <AC11>, "NORM", 3.5 },
- { <BKSL>, "NORM", 3.5 }
- };
- };
- row {
- top= 55.5;
- left= 0;
- keys {
- { <LFSH>, "LFSH", 0 }, { <LSGT>, "NORM", 3.5 },
- { <AB01>, "NORM", 3.5 }, { <AB02>, "NORM", 3.5 },
- { <AB03>, "NORM", 3.5 }, { <AB04>, "NORM", 3.5 },
- { <AB05>, "NORM", 3.5 }, { <AB06>, "NORM", 3.5 },
- { <AB07>, "NORM", 3.5 }, { <AB08>, "NORM", 3.5 },
- { <AB09>, "NORM", 3.5 }, { <AB10>, "NORM", 3.5 },
- { <RTSH>, "RTSH", 3.5 }
- };
- };
- row {
- top= 74;
- left= 0;
- keys {
- { <LCTL>, "LCTL", 0 }, { <LALT>, "LALT", 3.5 },
- { <LMTA>, "LMTA", 3.5 }, { <SPCE>, "SPCE", 3.5 },
- { <RMTA>, "RMTA", 3.5 }, { <RALT>, "RALT", 3.5 },
- { <RCTL>, "RCTL", 3.5 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- key.color= "white";
- priority= 9;
- top= 17;
- left= 287.7;
- width= 53.5;
- height= 92;
- row {
- top= 0;
- left= 0;
- keys {
- { <INS>, "NORM", 0 }, { <HOME>, "NORM", 3.5 },
- { <PGUP>, "NORM", 3.5 }
- };
- };
- row {
- top= 18.5;
- left= 0;
- keys {
- { <DELE>, "NORM", 0 }, { <END>, "NORM", 3.5 },
- { <PGDN>, "NORM", 3.5 }
- };
- };
- row {
- top= 58.5;
- left= 19;
- keys {
- { <UP>, "NORM", 0 }
- };
- };
- row {
- top= 77;
- left= 0;
- keys {
- { <LEFT>, "NORM", 0 }, { <DOWN>, "NORM", 3.5 },
- { <RGHT>, "NORM", 3.5 }
- };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- key.color= "white";
- priority= 10;
- top= 17;
- left= 352.7;
- width= 72.5;
- height= 92;
- row {
- top= 0;
- left= 0;
- keys {
- { <NMLK>, "NORM", 0 }, { <KPEQ>, "NORM", 3.5 },
- { <KPDV>, "NORM", 3.5 }, { <KPMU>, "NORM", 3.5 }
- };
- };
- row {
- top= 18.5;
- left= 0;
- keys {
- { <KP7>, "NORM", 0 }, { <KP8>, "NORM", 3.5 },
- { <KP9>, "NORM", 3.5 }, { <KPSU>, "NORM", 3.5 }
- };
- };
- row {
- top= 37;
- left= 0;
- keys {
- { <KP4>, "NORM", 0 }, { <KP5>, "NORM", 3.5 },
- { <KP6>, "NORM", 3.5 }, { <KPAD>, "NORM", 3.5 }
- };
- };
- row {
- top= 55.5;
- left= 0;
- keys {
- { <KP1>, "NORM", 0 }, { <KP2>, "NORM", 3.5 },
- { <KP3>, "NORM", 3.5 }, { <KPEN>, "KPEN", 3.5 }
- };
- };
- row {
- top= 74;
- left= 0;
- keys {
- { <KP0>, "KP0", 0 }, { <KPDL>, "KPDT", 3.5 }
- };
- };
- }; // End of "Keypad" section
-
- indicator "Caps Lock" {
- top= 56;
- left= 6.7;
- priority= 2;
- onColor= "green";
- offColor= "gray";
- shape= "LED";
- };
-
-};
-
-// Aluminium Keyboard, JIS model (Japanese, 112 keys)
-xkb_geometry "applealu_jis" {
-
- width= 430;
- height= 113.5;
-
- baseColor= "white";
- labelColor= "black";
- xfont= "-*-helvetica-medium-r-normal--*-80-*-*-*-*-iso8859-1";
- description= "Aluminium Keyboard (JIS)";
-
- shape "NORM" {
- corner= 1,
- { [ 15.5, 15 ] }
- };
- shape "FUNC" {
- corner= 1,
- { [ 16.1, 9 ] }
- };
- shape "FUNS" {
- corner= 1,
- { [ 15.5, 9 ] }
- };
- shape "KEY1" {
- corner= 1,
- { [ 24.5, 15 ] }
- };
- shape "BKSP" {
- corner= 1,
- { [ 15.5, 15 ] }
- };
- shape "TAB" {
- corner= 1,
- { [ 15.5, 15 ] }
- };
- shape "RTRN" {
- corner= 1,
- { [ 0, 0 ], [ 24.5 , 0 ], [ 24.5 , 33.5 ], [ 4.5, 33.5 ],
- [ 4.5, 15 ], [ 0, 15 ] }
- };
- shape "CAPS" {
- corner= 1,
- { [ 35, 18 ] }
- };
- shape "LCTL" {
- corner= 1,
- { [ 20, 15 ] }
- };
- shape "LALT" {
- corner= 1,
- { [ 27, 18 ] }
- };
- shape "LMTA" {
- corner= 1,
- { [ 27, 18 ] }
- };
- shape "LFSH" {
- corner= 1,
- { [ 29.5, 15 ] }
- };
- shape "EISU" {
- corner= 1,
- { [ 20, 18 ] }
- };
- shape "RCTL" {
- corner= 1,
- { [ 27, 18 ] }
- };
- shape "RALT" {
- corner= 1,
- { [ 27, 18 ] }
- };
- shape "RMTA" {
- corner= 1,
- { [ 27, 18 ] }
- };
- shape "RTSH" {
- corner= 1,
- { [ 29.5, 15 ] }
- };
- shape "KANA" {
- corner= 1,
- { [ 20, 18 ] }
- };
- shape "SPCE" {
- corner= 1,
- { [ 64, 18 ] }
- };
- shape "KPDT" {
- corner= 1,
- { [ 15.5, 18 ] }
- };
- shape "KPEN" {
- corner= 1,
- { [ 15.5, 36.5 ] }
- };
- shape "LED" {
- corner= 0.5,
- { [ 1.5, 1.5 ] }
- };
-
- section "Function" {
- key.color= "white";
- priority= 7;
- top= 4.5;
- left= 4.7;
- width= 420.5;
- height= 10;
- row {
- top= 0;
- left= 0;
- keys {
- { <ESC>, "FUNC", 0 }, { <FK01>, "FUNC", 3.6 },
- { <FK02>, "FUNC", 3.5 }, { <FK03>, "FUNC", 3.6 },
- { <FK04>, "FUNC", 3.5 }, { <FK05>, "FUNC", 3.6 },
- { <FK06>, "FUNC", 3.5 }, { <FK07>, "FUNC", 3.6 },
- { <FK08>, "FUNC", 3.5 }, { <FK09>, "FUNC", 3.6 },
- { <FK10>, "FUNC", 3.5 }, { <FK11>, "FUNC", 3.6 },
- { <FK12>, "FUNC", 3.5 }, { <I169>, "FUNC", 3.5 },
- { <FK13>, "FUNS", 11.5 }, { <FK14>, "FUNS", 3.5 },
- { <FK15>, "FUNS", 3.5 }, { <FK16>, "FUNS", 11.5 },
- { <FK17>, "FUNS", 3.5 }, { <FK18>, "FUNS", 3.5 },
- { <FK19>, "FUNS", 3.5 }
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- key.color= "white";
- priority= 8;
- top= 17;
- left= 5;
- width= 271.5;
- height= 92;
- row {
- top= 0;
- left= 0;
- keys {
- { <AE01>, "KEY1", 0 },
- { <AE02>, "NORM", 3.5 }, { <AE03>, "NORM", 3.5 },
- { <AE04>, "NORM", 3.5 }, { <AE05>, "NORM", 3.5 },
- { <AE06>, "NORM", 3.5 }, { <AE07>, "NORM", 3.5 },
- { <AE08>, "NORM", 3.5 }, { <AE09>, "NORM", 3.5 },
- { <AE10>, "NORM", 3.5 }, { <AE11>, "NORM", 3.5 },
- { <AE12>, "NORM", 3.5 }, { <AE13>, "NORM", 3.5 },
- { <BKSP>, "BKSP", 3.5 }
- };
- };
- row {
- top= 18.5;
- left= 0;
- keys {
- { <TAB>, "TAB", 0 }, { <AD01>, "NORM", 3.5 },
- { <AD02>, "NORM", 3.5 }, { <AD03>, "NORM", 3.5 },
- { <AD04>, "NORM", 3.5 }, { <AD05>, "NORM", 3.5 },
- { <AD06>, "NORM", 3.5 }, { <AD07>, "NORM", 3.5 },
- { <AD08>, "NORM", 3.5 }, { <AD09>, "NORM", 3.5 },
- { <AD10>, "NORM", 3.5 }, { <AD11>, "NORM", 3.5 },
- { <AD12>, "NORM", 3.5 }, { <RTRN>, "RTRN", 3.5 }
- };
- };
- row {
- top= 37;
- left= 0;
- keys {
- { <LCTL>, "LCTL", 0 }, { <AC01>, "NORM", 3.5 },
- { <AC02>, "NORM", 3.5 }, { <AC03>, "NORM", 3.5 },
- { <AC04>, "NORM", 3.5 }, { <AC05>, "NORM", 3.5 },
- { <AC06>, "NORM", 3.5 }, { <AC07>, "NORM", 3.5 },
- { <AC08>, "NORM", 3.5 }, { <AC09>, "NORM", 3.5 },
- { <AC10>, "NORM", 3.5 }, { <AC11>, "NORM", 3.5 },
- { <AC12>, "NORM", 3.5 }
- };
- };
- row {
- top= 55.5;
- left= 0;
- keys {
- { <LFSH>, "LFSH", 0 },
- { <AB01>, "NORM", 3.5 }, { <AB02>, "NORM", 3.5 },
- { <AB03>, "NORM", 3.5 }, { <AB04>, "NORM", 3.5 },
- { <AB05>, "NORM", 3.5 }, { <AB06>, "NORM", 3.5 },
- { <AB07>, "NORM", 3.5 }, { <AB08>, "NORM", 3.5 },
- { <AB09>, "NORM", 3.5 }, { <AB10>, "NORM", 3.5 },
- { <AB11>, "NORM", 3.5 }, { <RTSH>, "RTSH", 3.5 }
- };
- };
- row {
- top= 74;
- left= 0;
- keys {
- { <LALT>, "LALT", 0 }, { <LMTA>, "LMTA", 3.5 },
- { <EISU>, "EISU", 3.5 }, { <SPCE>, "SPCE", 3.5 },
- { <KANA>, "KANA", 3.5 }, { <RMTA>, "RMTA", 3.5 },
- { <RALT>, "RALT", 3.5 }, { <CAPS>, "CAPS", 3.5 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- key.color= "white";
- priority= 9;
- top= 17;
- left= 287.7;
- width= 53.5;
- height= 92;
- row {
- top= 0;
- left= 0;
- keys {
- { <INS>, "NORM", 0 }, { <HOME>, "NORM", 3.5 },
- { <PGUP>, "NORM", 3.5 }
- };
- };
- row {
- top= 18.5;
- left= 0;
- keys {
- { <DELE>, "NORM", 0 }, { <END>, "NORM", 3.5 },
- { <PGDN>, "NORM", 3.5 }
- };
- };
- row {
- top= 58.5;
- left= 19;
- keys {
- { <UP>, "NORM", 0 }
- };
- };
- row {
- top= 77;
- left= 0;
- keys {
- { <LEFT>, "NORM", 0 }, { <DOWN>, "NORM", 3.5 },
- { <RGHT>, "NORM", 3.5 }
- };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- key.color= "white";
- priority= 10;
- top= 17;
- left= 352.7;
- width= 72.5;
- height= 92;
- row {
- top= 0;
- left= 0;
- keys {
- { <NMLK>, "NORM", 0 }, { <KPEQ>, "NORM", 3.5 },
- { <KPDV>, "NORM", 3.5 }, { <KPMU>, "NORM", 3.5 }
- };
- };
- row {
- top= 18.5;
- left= 0;
- keys {
- { <KP7>, "NORM", 0 }, { <KP8>, "NORM", 3.5 },
- { <KP9>, "NORM", 3.5 }, { <KPSU>, "NORM", 3.5 }
- };
- };
- row {
- top= 37;
- left= 0;
- keys {
- { <KP4>, "NORM", 0 }, { <KP5>, "NORM", 3.5 },
- { <KP6>, "NORM", 3.5 }, { <KPAD>, "NORM", 3.5 }
- };
- };
- row {
- top= 55.5;
- left= 0;
- keys {
- { <KP1>, "NORM", 0 }, { <KP2>, "NORM", 3.5 },
- { <KP3>, "NORM", 3.5 }, { <KPEN>, "KPEN", 3.5 }
- };
- };
- row {
- top= 74;
- left= 0;
- keys {
- { <KP0>, "KPDT", 0 }, { <JPCM>, "KPDT", 3.5 },
- { <KPDL>, "KPDT", 3.5 }
- };
- };
- }; // End of "Keypad" section
-
- indicator "Caps Lock" {
- top= 93;
- left= 273.2;
- priority= 2;
- onColor= "green";
- offColor= "gray";
- shape= "LED";
- };
-
-};
+//
+// Some modifications (<eqdar@castalie.org>) :
+// - Added a <LSGT> key
+// - Fixed the shape of the <RTRN> key
+// - Moved <BKSL> to the 'AC' row
+// - Added a special Macintosh sysctl key
+// - Minor changes (Function keys shape, LED position...)
+
+// Minor changes
+// - Mail address above is no longer valid
+// - Changed {L,R}MTA to {L,R}WIN, which are defined
+// 2005/10 -- Simon Vallet <svallet@gmail.com>
+
+default xkb_geometry "macintosh" {
+
+ description= "Apple Extended Keyboard II";
+ width = 475;
+ height = 194;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "TLDE" { { [ 23,18] }, { [2,1], [ 21,17] } };
+ shape "BKSP" { { [ 33,18] }, { [2,1], [ 31,17] } };
+ shape "TAB" { { [ 33,18] }, { [2,1], [ 31,17] } };
+ shape "RTRN" {
+ { [0,0],[23,0],[23,37],[4,37],[4,18],[0,18] },
+ { [2,1],[21,1],[21,36],[6,36],[6,17],[2,17] } };
+ shape "CAPS" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "LCTL" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "LALT" { { [ 22,18] }, { [2,1], [ 20,17] } };
+ shape "LMTA" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "LFSH" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "RCTL" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "RALT" { { [ 22,18] }, { [2,1], [ 20,17] } };
+ shape "RMTA" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "RTSH" { { [ 47,18] }, { [2,1], [ 45,17] } };
+ shape "SPCE" { { [123,18] }, { [2,1], [121,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPEN" { { [ 18,37] }, { [2,1], [ 16,36] } };
+ // Macintosh keyboards have a special sysctl key at the top right
+ shape "AAPL" {
+ { [ 0,0], [ 18,0], [ 18,18], [ 0,18] },
+ { [ 1,1], [ 17,1], [ 17,17], [ 1,17] },
+ { [ 8,5], [ 8,12], [ 2,9] } };
+
+ shape "LEDS" { cornerRadius = 0, { [ 55,19] } };
+ shape "LED" { cornerRadius = 0, { [ 8, 2] } };
+
+ solid "LedPanel" {
+ shape= "LEDS";
+ top = 48;
+ left = 378;
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top = 50;
+ indicator.shape= "LED";
+ indicator "NumLock" { left = 381; };
+ indicator "CapsLock" { left = 398; };
+ indicator "ScrollLock" { left = 415; };
+ text.top= 55;
+ text.color= "black";
+ text "NumLockLabel" { left = 381; text = "Num\nLock"; };
+ text "CapsLockLabel" { left = 398; text = "Caps\nLock"; };
+ text "ScrollLockLabel" { left = 415; text = "Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Function" {
+ top = 48;
+ row {
+ top= 1;
+ keys { <ESC>,
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 10 }, <SCLK>, <PAUS>,
+ // This is the sysctl key on macintosh keyboards
+ // keycode is 222 with a 4.21 kernel, which is <I5E>
+ { <I5E>, "AAPL", 67 }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top = 87;
+ row {
+ top= 1;
+ keys { { <TLDE>, "TLDE" }, <AE01>, <AE02>, <AE03>,
+ <AE04>, <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TAB" }, <AD01>, <AD02>, <AD03>,
+ <AD04>, <AD05>, <AD06>, <AD07>, <AD08>, <AD09>,
+ <AD10>, <AD11>, <AD12>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS" }, <AC01>, <AC02>, <AC03>,
+ <AC04>, <AC05>, <AC06>, <AC07>, <AC08>, <AC09>,
+ <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" }, <LSGT>, <AB01>, <AB02>,
+ <AB03>, <AB04>, <AB05>, <AB06>, <AB07>, <AB08>,
+ <AB09>, <AB10>, { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ keys { { <LCTL>, "LCTL" }, { <LALT>, "LALT" },
+ { <LWIN>, "LMTA" },
+ { <SPCE>, "SPCE" },
+ { <RWIN>, "RMTA" },
+ { <RALT>, "RALT" }, { <RCTL>, "RCTL" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top = 87;
+ left = 314;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ // Begin of "Keypad" section
+ section "Keypad" {
+ top = 87;
+ left = 380;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPEQ>, <KPDV>, <KPMU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+}; // End of "default" geometry
+
+
+// This section describes the geometry of the "Apple Pro" keyboard
+// included with NewWorld desktop machines
+//
+// It adds four new keysyms, labeled SDDN, SDUP, SDNO, EJCT.
+//
+// 2005/10 -- Simon Vallet <svallet@gmail.com>
+
+xkb_geometry "applepro" {
+
+ description= "Apple Pro Keyboard";
+ width = 455;
+ height = 150;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18, 18] }, { [2, 1], [ 16, 15] } };
+ shape "FUNC" { { [ 18, 21] }, { [2, 1], [ 16, 16] } };
+ shape "BKSP" { { [ 38, 18] }, { [2, 1], [ 36, 15] } };
+ shape "TAB" { { [ 29, 18] }, { [2, 1], [ 26, 15] } };
+ shape "LFSH" { { [ 28, 18] }, { [2, 1], [ 26, 15] } };
+ shape "RTSH" { { [ 47, 18] }, { [2, 1], [ 45, 15] } };
+
+ shape "RTRN" {
+ { [0,0],[27,0],[27,37],[4,37],[4,18],[0,18] },
+ { [2,1],[25,1],[25,34],[6,34],[6,15],[2,15] } };
+
+ shape "CAPS" { { [ 32, 18] }, { [2, 1], [ 26, 15] } };
+ shape "LCTL" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
+ shape "RCTL" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
+ shape "LALT" { { [ 23, 20] }, { [2, 1], [ 21, 17] } };
+ shape "RALT" { { [ 23, 20] }, { [2, 1], [ 21, 17] } };
+ shape "LMTA" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
+ shape "RMTA" { { [ 28, 20] }, { [2, 1], [ 26, 17] } };
+ shape "SPCE" { { [121, 20] }, { [3, 1], [118, 17] } };
+ shape "BOTM" { { [ 18, 20] }, { [2, 1], [ 16, 17] } };
+
+ shape "KP0" { { [ 37, 20] }, { [2, 1], [ 35, 17] } };
+ shape "KPEN" { { [ 18, 39] }, { [2, 1], [ 16, 36] } };
+
+ section.left = 7;
+ row.left = 1;
+ key.gap = 1;
+ key.shape = "NORM";
+
+ section "Function" {
+ key.shape = "FUNC";
+ top = 26;
+ row {
+ top= 1;
+ keys { <ESC>,
+ { <FK01>, 14 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 14 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 14 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 11 }, <SCLK>, <PAUS>,
+ { <SDDN>, 11 }, <SDUP>, <SDNO>, <EJCT>
+ };
+ };
+ }; // End of "Function" section
+
+
+ section "Alpha" {
+ top = 48;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>,
+ <AE04>, <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TAB" }, <AD01>, <AD02>, <AD03>,
+ <AD04>, <AD05>, <AD06>, <AD07>, <AD08>, <AD09>,
+ <AD10>, <AD11>, <AD12>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS" }, <AC01>, <AC02>, <AC03>,
+ <AC04>, <AC05>, <AC06>, <AC07>, <AC08>, <AC09>,
+ <AC10>, <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" }, <LSGT>, <AB01>, <AB02>,
+ <AB03>, <AB04>, <AB05>, <AB06>, <AB07>, <AB08>,
+ <AB09>, <AB10>, { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ keys { { <LCTL>, "LCTL" }, { <LALT>, "LALT" },
+ { <LWIN>, "LMTA" },
+ { <SPCE>, "SPCE" },
+ { <RWIN>, "RMTA" },
+ { <RALT>, "RALT" }, { <RCTL>, "RCTL" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top = 48;
+ left = 303;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ key.shape = "BOTM";
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ // Begin of "Keypad" section
+ section "Keypad" {
+ top = 48;
+ left = 370;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPEQ>, <KPDV>, <KPMU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPSU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, { <KPDL>, "BOTM" } };
+ };
+ }; // End of "Keypad" section
+
+}; // End of "applepro" geometry
+
+xkb_geometry "macbook78" {
+
+ description= "Apple Laptop 78-key (US)";
+ width= 273;
+ height= 110;
+
+ shape.cornerRadius= 0;
+ shape "ESC" { { [ 21,9] }, cornerRadius=1, { [0,1], [ 19,8] } };
+ shape "FUNC" { { [ 18,9] }, cornerRadius=1, { [2,1], [ 16,8] } };
+ shape "EJCT" { { [ 20,9] }, cornerRadius=1, { [2,1], [ 20,8] } };
+ shape "DEGR" { { [ 16,18] }, cornerRadius=1, { [0,2], [ 14,16] } };
+ shape "NORM" { { [ 18,18] }, cornerRadius=1, { [2,2], [ 16,16] } };
+ shape "BKSP" { { [ 25,18] }, cornerRadius=1, { [2,2], [ 25,16] } };
+ shape "TABK" { { [ 24,18] }, cornerRadius=1, { [0,2], [ 22,16] } };
+ shape "BKSL" { { [ 17,18] }, cornerRadius=1, { [2,2], [17,16] } };
+ shape "RTRN" { { [ 31,18] }, cornerRadius=1, { [2,2], [31,16] } };
+ shape "CAPS" { { [ 29,18] }, cornerRadius=1, { [0,2], [ 27,16] } };
+ shape "LFSH" { { [ 40,18] }, cornerRadius=1, { [0,2], [ 38,16] } };
+ shape "RTSH" { { [ 39,18] }, cornerRadius=1, { [2,2], [ 39,16] } };
+ shape "APPL" { { [ 23,18] }, cornerRadius=1, { [2,2], [ 21,16] } };
+ shape "SPCE" { { [ 94,18] }, cornerRadius=1, { [2,2], [ 92,16] } };
+ shape "ARRO" { { [ 17,9] }, cornerRadius=1, { [2,1], [ 15,8] } };
+
+ shape "LED" { cornerRadius= 1, { [ 2, 2 ] } };
+
+ indicator.onColor= "green";
+ indicator.offColor= "gray";
+ indicator.shape= "LED";
+ indicator "Num Lock" { top=4; left= 119; };
+ indicator "Caps Lock" { top=53; left= 4; };
+
+ section.left=0;
+ row.left= 1;
+ key.shape= "FUNC";
+ key.gap= 1;
+ section "Function" {
+ top= 0;
+ row {
+ top= 1;
+ keys { {<ESC>, "ESC" },
+ <FK01>, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ {<K6C>, "EJCT" }
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 10;
+ row {
+ top= 1;
+ keys { {<TLDE>, "DEGR"},
+ <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>,
+ <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK"},
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH"},
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ keys { {<FN>, "DEGR"},
+ <LCTL>, <LALT>,
+ {<LMTA>, "APPL"},
+ {<SPCE>, "SPCE" },
+ {<RMTA>, "APPL"},
+ <KPEN>
+ };
+ };
+
+ }; // End of "Alpha" section
+
+ key.shape= "ARRO";
+ section "Editing" {
+ top = 86;
+ left = 217;
+ row {
+ top= 1;
+ left= 19;
+ keys { <UP> };
+ };
+ row {
+ top= 10;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+};
+
+xkb_geometry "macbook79" {
+
+ description= "Apple Laptop 79-key (Intl)";
+ width= 273;
+ height= 110;
+
+ shape.cornerRadius= 0;
+ shape "ESC" { { [ 21,9] }, cornerRadius=1, { [0,1], [ 19,8] } };
+ shape "FUNC" { { [ 18,9] }, cornerRadius=1, { [2,1], [ 16,8] } };
+ shape "EJCT" { { [ 20,9] }, cornerRadius=1, { [2,1], [ 20,8] } };
+ shape "DEGR" { { [ 16,18] }, cornerRadius=1, { [0,2], [ 14,16] } };
+ shape "NORM" { { [ 18,18] }, cornerRadius=1, { [2,2], [ 16,16] } };
+ shape "BKSP" { { [ 25,18] }, cornerRadius=1, { [2,2], [ 25,16] } };
+ shape "TABK" { { [ 24,18] }, cornerRadius=1, { [0,2], [ 22,16] } };
+ shape "RTRN" { { [ 0,0], [17,0], [17,37], [5,37], [5, 18], [0,18], [0,0] },
+ cornerRadius=1,
+ { [ 2,2], [15,2], [15,35], [7,35], [7, 16], [2,16] }
+ };
+ shape "CAPS" { { [ 29,18] }, cornerRadius=1, { [0,2], [ 27,16] } };
+ shape "LFSH" { { [ 21,18] }, cornerRadius=1, { [0,2], [ 19,16] } };
+ shape "RTSH" { { [ 39,18] }, cornerRadius=1, { [2,2], [ 39,16] } };
+ shape "APPL" { { [ 23,18] }, cornerRadius=1, { [2,2], [ 21,16] } };
+ shape "SPCE" { { [ 94,18] }, cornerRadius=1, { [2,2], [ 92,16] } };
+ shape "ARRO" { { [ 17,9] }, cornerRadius=1, { [2,1], [ 15,8] } };
+
+ shape "LED" { cornerRadius= 1, { [ 2, 2 ] } };
+
+ indicator.onColor= "green";
+ indicator.offColor= "gray";
+ indicator.shape= "LED";
+ indicator "Num Lock" { top=4; left= 119; };
+ indicator "Caps Lock" { top=53; left= 4; };
+
+ section.left=0;
+ row.left= 1;
+ key.shape= "FUNC";
+ key.gap= 1;
+ section "Function" {
+ top= 0;
+ row {
+ top= 1;
+ keys { {<ESC>, "ESC" },
+ <FK01>, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ {<K6C>, "EJCT" }
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 10;
+ row {
+ top= 1;
+ keys { {<TLDE>, "DEGR"},
+ <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>,
+ <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK"},
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH"},
+ <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ keys { {<FN>, "DEGR"},
+ <LCTL>, <LALT>,
+ {<LWIN>, "APPL"},
+ {<SPCE>, "SPCE" },
+ {<RALT>, "APPL"},
+ <KPEN>
+ };
+ };
+
+ }; // End of "Alpha" section
+
+ key.shape= "ARRO";
+ section "Editing" {
+ top = 86;
+ left = 217;
+ row {
+ top= 1;
+ left= 19;
+ keys { <UP> };
+ };
+ row {
+ top= 10;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "default" geometry
+
+
+// Aluminium Keyboard, ANSI model (United States, 109 keys)
+xkb_geometry "applealu_ansi" {
+
+ width= 430;
+ height= 113.5;
+
+ baseColor= "white";
+ labelColor= "black";
+ xfont= "-*-helvetica-medium-r-normal--*-80-*-*-*-*-iso8859-1";
+ description= "Aluminium Keyboard (ANSI)";
+
+ shape "NORM" {
+ corner= 1,
+ { [ 15.5, 15 ] }
+ };
+ shape "FUNC" {
+ corner= 1,
+ { [ 16.1, 9 ] }
+ };
+ shape "FUNS" {
+ corner= 1,
+ { [ 15.5, 9 ] }
+ };
+ shape "BKSP" {
+ corner= 1,
+ { [ 24.5, 15 ] }
+ };
+ shape "TAB" {
+ corner= 1,
+ { [ 24.5, 15 ] }
+ };
+ shape "RTRN" {
+ corner= 1,
+ { [ 29.5, 15 ] }
+ };
+ shape "CAPS" {
+ corner= 1,
+ { [ 29.5, 15 ] }
+ };
+ shape "LCTL" {
+ corner= 1,
+ { [ 25, 18 ] }
+ };
+ shape "LALT" {
+ corner= 1,
+ { [ 20, 18 ] }
+ };
+ shape "LMTA" {
+ corner= 1,
+ { [ 25, 18 ] }
+ };
+ shape "LFSH" {
+ corner= 1,
+ { [ 39, 15 ] }
+ };
+ shape "RCTL" {
+ corner= 1,
+ { [ 25, 18 ] }
+ };
+ shape "RALT" {
+ corner= 1,
+ { [ 20, 18 ] }
+ };
+ shape "RMTA" {
+ corner= 1,
+ { [ 25, 18 ] }
+ };
+ shape "RTSH" {
+ corner= 1,
+ { [ 39, 15 ] }
+ };
+ shape "SPCE" {
+ corner= 1,
+ { [ 110.5, 18 ] }
+ };
+ shape "KP0" {
+ corner= 1,
+ { [ 34.5, 18 ] }
+ };
+ shape "KPEN" {
+ corner= 1,
+ { [ 15.5, 36.5 ] }
+ };
+ shape "KPDT" {
+ corner= 1,
+ { [ 15.5, 18 ] }
+ };
+ shape "LED" {
+ corner= 0.5,
+ { [ 1.5, 1.5 ] }
+ };
+
+ section "Function" {
+ key.color= "white";
+ priority= 7;
+ top= 4.5;
+ left= 4.7;
+ width= 420.5;
+ height= 10;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <ESC>, "FUNC", 0 }, { <FK01>, "FUNC", 3.6 },
+ { <FK02>, "FUNC", 3.5 }, { <FK03>, "FUNC", 3.6 },
+ { <FK04>, "FUNC", 3.5 }, { <FK05>, "FUNC", 3.6 },
+ { <FK06>, "FUNC", 3.5 }, { <FK07>, "FUNC", 3.6 },
+ { <FK08>, "FUNC", 3.5 }, { <FK09>, "FUNC", 3.6 },
+ { <FK10>, "FUNC", 3.5 }, { <FK11>, "FUNC", 3.6 },
+ { <FK12>, "FUNC", 3.5 }, { <I169>, "FUNC", 3.5 },
+ { <FK13>, "FUNS", 11.5 }, { <FK14>, "FUNS", 3.5 },
+ { <FK15>, "FUNS", 3.5 }, { <FK16>, "FUNS", 11.5 },
+ { <FK17>, "FUNS", 3.5 }, { <FK18>, "FUNS", 3.5 },
+ { <FK19>, "FUNS", 3.5 }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ key.color= "white";
+ priority= 8;
+ top= 17;
+ left= 5;
+ width= 271.5;
+ height= 92;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <TLDE>, "NORM", 0 }, { <AE01>, "NORM", 3.5 },
+ { <AE02>, "NORM", 3.5 }, { <AE03>, "NORM", 3.5 },
+ { <AE04>, "NORM", 3.5 }, { <AE05>, "NORM", 3.5 },
+ { <AE06>, "NORM", 3.5 }, { <AE07>, "NORM", 3.5 },
+ { <AE08>, "NORM", 3.5 }, { <AE09>, "NORM", 3.5 },
+ { <AE10>, "NORM", 3.5 }, { <AE11>, "NORM", 3.5 },
+ { <AE12>, "NORM", 3.5 }, { <BKSP>, "BKSP", 3.5 }
+ };
+ };
+ row {
+ top= 18.5;
+ left= 0;
+ keys {
+ { <TAB>, "TAB", 0 }, { <AD01>, "NORM", 3.5 },
+ { <AD02>, "NORM", 3.5 }, { <AD03>, "NORM", 3.5 },
+ { <AD04>, "NORM", 3.5 }, { <AD05>, "NORM", 3.5 },
+ { <AD06>, "NORM", 3.5 }, { <AD07>, "NORM", 3.5 },
+ { <AD08>, "NORM", 3.5 }, { <AD09>, "NORM", 3.5 },
+ { <AD10>, "NORM", 3.5 }, { <AD11>, "NORM", 3.5 },
+ { <AD12>, "NORM", 3.5 }, { <BKSL>, "NORM", 3.5 }
+
+ };
+ };
+ row {
+ top= 37;
+ left= 0;
+ keys {
+ { <CAPS>, "CAPS", 0 }, { <AC01>, "NORM", 3.5 },
+ { <AC02>, "NORM", 3.5 }, { <AC03>, "NORM", 3.5 },
+ { <AC04>, "NORM", 3.5 }, { <AC05>, "NORM", 3.5 },
+ { <AC06>, "NORM", 3.5 }, { <AC07>, "NORM", 3.5 },
+ { <AC08>, "NORM", 3.5 }, { <AC09>, "NORM", 3.5 },
+ { <AC10>, "NORM", 3.5 }, { <AC11>, "NORM", 3.5 },
+ { <RTRN>, "RTRN", 3.5 }
+ };
+ };
+ row {
+ top= 55.5;
+ left= 0;
+ keys {
+ { <LFSH>, "LFSH", 0 },
+ { <AB01>, "NORM", 3.5 }, { <AB02>, "NORM", 3.5 },
+ { <AB03>, "NORM", 3.5 }, { <AB04>, "NORM", 3.5 },
+ { <AB05>, "NORM", 3.5 }, { <AB06>, "NORM", 3.5 },
+ { <AB07>, "NORM", 3.5 }, { <AB08>, "NORM", 3.5 },
+ { <AB09>, "NORM", 3.5 }, { <AB10>, "NORM", 3.5 },
+ { <RTSH>, "RTSH", 3.5 }
+ };
+ };
+ row {
+ top= 74;
+ left= 0;
+ keys {
+ { <LCTL>, "LCTL", 0 }, { <LALT>, "LALT", 3.5 },
+ { <LMTA>, "LMTA", 3.5 }, { <SPCE>, "SPCE", 3.5 },
+ { <RMTA>, "RMTA", 3.5 }, { <RALT>, "RALT", 3.5 },
+ { <RCTL>, "RCTL", 3.5 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ key.color= "white";
+ priority= 9;
+ top= 17;
+ left= 287.7;
+ width= 53.5;
+ height= 92;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <INS>, "NORM", 0 }, { <HOME>, "NORM", 3.5 },
+ { <PGUP>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 18.5;
+ left= 0;
+ keys {
+ { <DELE>, "NORM", 0 }, { <END>, "NORM", 3.5 },
+ { <PGDN>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 58.5;
+ left= 19;
+ keys {
+ { <UP>, "NORM", 0 }
+ };
+ };
+ row {
+ top= 77;
+ left= 0;
+ keys {
+ { <LEFT>, "NORM", 0 }, { <DOWN>, "NORM", 3.5 },
+ { <RGHT>, "NORM", 3.5 }
+ };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ key.color= "white";
+ priority= 10;
+ top= 17;
+ left= 352.7;
+ width= 72.5;
+ height= 92;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <NMLK>, "NORM", 0 }, { <KPEQ>, "NORM", 3.5 },
+ { <KPDV>, "NORM", 3.5 }, { <KPMU>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 18.5;
+ left= 0;
+ keys {
+ { <KP7>, "NORM", 0 }, { <KP8>, "NORM", 3.5 },
+ { <KP9>, "NORM", 3.5 }, { <KPSU>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 37;
+ left= 0;
+ keys {
+ { <KP4>, "NORM", 0 }, { <KP5>, "NORM", 3.5 },
+ { <KP6>, "NORM", 3.5 }, { <KPAD>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 55.5;
+ left= 0;
+ keys {
+ { <KP1>, "NORM", 0 }, { <KP2>, "NORM", 3.5 },
+ { <KP3>, "NORM", 3.5 }, { <KPEN>, "KPEN", 3.5 }
+ };
+ };
+ row {
+ top= 74;
+ left= 0;
+ keys {
+ { <KP0>, "KP0", 0 }, { <KPDL>, "KPDT", 3.5 }
+ };
+ };
+ }; // End of "Keypad" section
+
+ indicator "Caps Lock" {
+ top= 56;
+ left= 6.7;
+ priority= 2;
+ onColor= "green";
+ offColor= "gray";
+ shape= "LED";
+ };
+
+};
+
+// Aluminium Keyboard, ISO model (International, 110 keys)
+xkb_geometry "applealu_iso" {
+
+ width= 430;
+ height= 113.5;
+
+ baseColor= "white";
+ labelColor= "black";
+ xfont= "-*-helvetica-medium-r-normal--*-80-*-*-*-*-iso8859-1";
+ description= "Aluminium Keyboard (ISO)";
+
+ shape "NORM" {
+ corner= 1,
+ { [ 15.5, 15 ] }
+ };
+ shape "FUNC" {
+ corner= 1,
+ { [ 16.1, 9 ] }
+ };
+ shape "FUNS" {
+ corner= 1,
+ { [ 15.5, 9 ] }
+ };
+ shape "BKSP" {
+ corner= 1,
+ { [ 24.5, 15 ] }
+ };
+ shape "TAB" {
+ corner= 1,
+ { [ 24.5, 15 ] }
+ };
+ shape "RTRN" {
+ corner= 1,
+ { [ 0, 0 ], [ 15.5 , 0 ], [ 15.5 , 33.5 ], [ 5, 33.5 ],
+ [ 5, 15 ], [ 0, 15 ] }
+ };
+ shape "CAPS" {
+ corner= 1,
+ { [ 29.5, 15 ] }
+ };
+ shape "LCTL" {
+ corner= 1,
+ { [ 25, 18 ] }
+ };
+ shape "LALT" {
+ corner= 1,
+ { [ 20, 18 ] }
+ };
+ shape "LMTA" {
+ corner= 1,
+ { [ 25, 18 ] }
+ };
+ shape "LFSH" {
+ corner= 1,
+ { [ 20, 15 ] }
+ };
+ shape "RCTL" {
+ corner= 1,
+ { [ 25, 18 ] }
+ };
+ shape "RALT" {
+ corner= 1,
+ { [ 20, 18 ] }
+ };
+ shape "RMTA" {
+ corner= 1,
+ { [ 25, 18 ] }
+ };
+ shape "RTSH" {
+ corner= 1,
+ { [ 39, 15 ] }
+ };
+ shape "SPCE" {
+ corner= 1,
+ { [ 110.5, 18 ] }
+ };
+ shape "KP0" {
+ corner= 1,
+ { [ 34.5, 18 ] }
+ };
+ shape "KPEN" {
+ corner= 1,
+ { [ 15.5, 36.5 ] }
+ };
+ shape "KPDT" {
+ corner= 1,
+ { [ 15.5, 18 ] }
+ };
+ shape "LED" {
+ corner= 0.5,
+ { [ 1.5, 1.5 ] }
+ };
+
+ section "Function" {
+ key.color= "white";
+ priority= 7;
+ top= 4.5;
+ left= 4.7;
+ width= 420.5;
+ height= 10;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <ESC>, "FUNC", 0 }, { <FK01>, "FUNC", 3.6 },
+ { <FK02>, "FUNC", 3.5 }, { <FK03>, "FUNC", 3.6 },
+ { <FK04>, "FUNC", 3.5 }, { <FK05>, "FUNC", 3.6 },
+ { <FK06>, "FUNC", 3.5 }, { <FK07>, "FUNC", 3.6 },
+ { <FK08>, "FUNC", 3.5 }, { <FK09>, "FUNC", 3.6 },
+ { <FK10>, "FUNC", 3.5 }, { <FK11>, "FUNC", 3.6 },
+ { <FK12>, "FUNC", 3.5 }, { <I169>, "FUNC", 3.5 },
+ { <FK13>, "FUNS", 11.5 }, { <FK14>, "FUNS", 3.5 },
+ { <FK15>, "FUNS", 3.5 }, { <FK16>, "FUNS", 11.5 },
+ { <FK17>, "FUNS", 3.5 }, { <FK18>, "FUNS", 3.5 },
+ { <FK19>, "FUNS", 3.5 }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ key.color= "white";
+ priority= 8;
+ top= 17;
+ left= 5;
+ width= 271.5;
+ height= 92;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <TLDE>, "NORM", 0 }, { <AE01>, "NORM", 3.5 },
+ { <AE02>, "NORM", 3.5 }, { <AE03>, "NORM", 3.5 },
+ { <AE04>, "NORM", 3.5 }, { <AE05>, "NORM", 3.5 },
+ { <AE06>, "NORM", 3.5 }, { <AE07>, "NORM", 3.5 },
+ { <AE08>, "NORM", 3.5 }, { <AE09>, "NORM", 3.5 },
+ { <AE10>, "NORM", 3.5 }, { <AE11>, "NORM", 3.5 },
+ { <AE12>, "NORM", 3.5 }, { <BKSP>, "BKSP", 3.5 }
+ };
+ };
+ row {
+ top= 18.5;
+ left= 0;
+ keys {
+ { <TAB>, "TAB", 0 }, { <AD01>, "NORM", 3.5 },
+ { <AD02>, "NORM", 3.5 }, { <AD03>, "NORM", 3.5 },
+ { <AD04>, "NORM", 3.5 }, { <AD05>, "NORM", 3.5 },
+ { <AD06>, "NORM", 3.5 }, { <AD07>, "NORM", 3.5 },
+ { <AD08>, "NORM", 3.5 }, { <AD09>, "NORM", 3.5 },
+ { <AD10>, "NORM", 3.5 }, { <AD11>, "NORM", 3.5 },
+ { <AD12>, "NORM", 3.5 }, { <RTRN>, "RTRN", 3.5 }
+ };
+ };
+ row {
+ top= 37;
+ left= 0;
+ keys {
+ { <CAPS>, "CAPS", 0 }, { <AC01>, "NORM", 3.5 },
+ { <AC02>, "NORM", 3.5 }, { <AC03>, "NORM", 3.5 },
+ { <AC04>, "NORM", 3.5 }, { <AC05>, "NORM", 3.5 },
+ { <AC06>, "NORM", 3.5 }, { <AC07>, "NORM", 3.5 },
+ { <AC08>, "NORM", 3.5 }, { <AC09>, "NORM", 3.5 },
+ { <AC10>, "NORM", 3.5 }, { <AC11>, "NORM", 3.5 },
+ { <BKSL>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 55.5;
+ left= 0;
+ keys {
+ { <LFSH>, "LFSH", 0 }, { <LSGT>, "NORM", 3.5 },
+ { <AB01>, "NORM", 3.5 }, { <AB02>, "NORM", 3.5 },
+ { <AB03>, "NORM", 3.5 }, { <AB04>, "NORM", 3.5 },
+ { <AB05>, "NORM", 3.5 }, { <AB06>, "NORM", 3.5 },
+ { <AB07>, "NORM", 3.5 }, { <AB08>, "NORM", 3.5 },
+ { <AB09>, "NORM", 3.5 }, { <AB10>, "NORM", 3.5 },
+ { <RTSH>, "RTSH", 3.5 }
+ };
+ };
+ row {
+ top= 74;
+ left= 0;
+ keys {
+ { <LCTL>, "LCTL", 0 }, { <LALT>, "LALT", 3.5 },
+ { <LMTA>, "LMTA", 3.5 }, { <SPCE>, "SPCE", 3.5 },
+ { <RMTA>, "RMTA", 3.5 }, { <RALT>, "RALT", 3.5 },
+ { <RCTL>, "RCTL", 3.5 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ key.color= "white";
+ priority= 9;
+ top= 17;
+ left= 287.7;
+ width= 53.5;
+ height= 92;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <INS>, "NORM", 0 }, { <HOME>, "NORM", 3.5 },
+ { <PGUP>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 18.5;
+ left= 0;
+ keys {
+ { <DELE>, "NORM", 0 }, { <END>, "NORM", 3.5 },
+ { <PGDN>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 58.5;
+ left= 19;
+ keys {
+ { <UP>, "NORM", 0 }
+ };
+ };
+ row {
+ top= 77;
+ left= 0;
+ keys {
+ { <LEFT>, "NORM", 0 }, { <DOWN>, "NORM", 3.5 },
+ { <RGHT>, "NORM", 3.5 }
+ };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ key.color= "white";
+ priority= 10;
+ top= 17;
+ left= 352.7;
+ width= 72.5;
+ height= 92;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <NMLK>, "NORM", 0 }, { <KPEQ>, "NORM", 3.5 },
+ { <KPDV>, "NORM", 3.5 }, { <KPMU>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 18.5;
+ left= 0;
+ keys {
+ { <KP7>, "NORM", 0 }, { <KP8>, "NORM", 3.5 },
+ { <KP9>, "NORM", 3.5 }, { <KPSU>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 37;
+ left= 0;
+ keys {
+ { <KP4>, "NORM", 0 }, { <KP5>, "NORM", 3.5 },
+ { <KP6>, "NORM", 3.5 }, { <KPAD>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 55.5;
+ left= 0;
+ keys {
+ { <KP1>, "NORM", 0 }, { <KP2>, "NORM", 3.5 },
+ { <KP3>, "NORM", 3.5 }, { <KPEN>, "KPEN", 3.5 }
+ };
+ };
+ row {
+ top= 74;
+ left= 0;
+ keys {
+ { <KP0>, "KP0", 0 }, { <KPDL>, "KPDT", 3.5 }
+ };
+ };
+ }; // End of "Keypad" section
+
+ indicator "Caps Lock" {
+ top= 56;
+ left= 6.7;
+ priority= 2;
+ onColor= "green";
+ offColor= "gray";
+ shape= "LED";
+ };
+
+};
+
+// Aluminium Keyboard, JIS model (Japanese, 112 keys)
+xkb_geometry "applealu_jis" {
+
+ width= 430;
+ height= 113.5;
+
+ baseColor= "white";
+ labelColor= "black";
+ xfont= "-*-helvetica-medium-r-normal--*-80-*-*-*-*-iso8859-1";
+ description= "Aluminium Keyboard (JIS)";
+
+ shape "NORM" {
+ corner= 1,
+ { [ 15.5, 15 ] }
+ };
+ shape "FUNC" {
+ corner= 1,
+ { [ 16.1, 9 ] }
+ };
+ shape "FUNS" {
+ corner= 1,
+ { [ 15.5, 9 ] }
+ };
+ shape "KEY1" {
+ corner= 1,
+ { [ 24.5, 15 ] }
+ };
+ shape "BKSP" {
+ corner= 1,
+ { [ 15.5, 15 ] }
+ };
+ shape "TAB" {
+ corner= 1,
+ { [ 15.5, 15 ] }
+ };
+ shape "RTRN" {
+ corner= 1,
+ { [ 0, 0 ], [ 24.5 , 0 ], [ 24.5 , 33.5 ], [ 4.5, 33.5 ],
+ [ 4.5, 15 ], [ 0, 15 ] }
+ };
+ shape "CAPS" {
+ corner= 1,
+ { [ 35, 18 ] }
+ };
+ shape "LCTL" {
+ corner= 1,
+ { [ 20, 15 ] }
+ };
+ shape "LALT" {
+ corner= 1,
+ { [ 27, 18 ] }
+ };
+ shape "LMTA" {
+ corner= 1,
+ { [ 27, 18 ] }
+ };
+ shape "LFSH" {
+ corner= 1,
+ { [ 29.5, 15 ] }
+ };
+ shape "EISU" {
+ corner= 1,
+ { [ 20, 18 ] }
+ };
+ shape "RCTL" {
+ corner= 1,
+ { [ 27, 18 ] }
+ };
+ shape "RALT" {
+ corner= 1,
+ { [ 27, 18 ] }
+ };
+ shape "RMTA" {
+ corner= 1,
+ { [ 27, 18 ] }
+ };
+ shape "RTSH" {
+ corner= 1,
+ { [ 29.5, 15 ] }
+ };
+ shape "KANA" {
+ corner= 1,
+ { [ 20, 18 ] }
+ };
+ shape "SPCE" {
+ corner= 1,
+ { [ 64, 18 ] }
+ };
+ shape "KPDT" {
+ corner= 1,
+ { [ 15.5, 18 ] }
+ };
+ shape "KPEN" {
+ corner= 1,
+ { [ 15.5, 36.5 ] }
+ };
+ shape "LED" {
+ corner= 0.5,
+ { [ 1.5, 1.5 ] }
+ };
+
+ section "Function" {
+ key.color= "white";
+ priority= 7;
+ top= 4.5;
+ left= 4.7;
+ width= 420.5;
+ height= 10;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <ESC>, "FUNC", 0 }, { <FK01>, "FUNC", 3.6 },
+ { <FK02>, "FUNC", 3.5 }, { <FK03>, "FUNC", 3.6 },
+ { <FK04>, "FUNC", 3.5 }, { <FK05>, "FUNC", 3.6 },
+ { <FK06>, "FUNC", 3.5 }, { <FK07>, "FUNC", 3.6 },
+ { <FK08>, "FUNC", 3.5 }, { <FK09>, "FUNC", 3.6 },
+ { <FK10>, "FUNC", 3.5 }, { <FK11>, "FUNC", 3.6 },
+ { <FK12>, "FUNC", 3.5 }, { <I169>, "FUNC", 3.5 },
+ { <FK13>, "FUNS", 11.5 }, { <FK14>, "FUNS", 3.5 },
+ { <FK15>, "FUNS", 3.5 }, { <FK16>, "FUNS", 11.5 },
+ { <FK17>, "FUNS", 3.5 }, { <FK18>, "FUNS", 3.5 },
+ { <FK19>, "FUNS", 3.5 }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ key.color= "white";
+ priority= 8;
+ top= 17;
+ left= 5;
+ width= 271.5;
+ height= 92;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <AE01>, "KEY1", 0 },
+ { <AE02>, "NORM", 3.5 }, { <AE03>, "NORM", 3.5 },
+ { <AE04>, "NORM", 3.5 }, { <AE05>, "NORM", 3.5 },
+ { <AE06>, "NORM", 3.5 }, { <AE07>, "NORM", 3.5 },
+ { <AE08>, "NORM", 3.5 }, { <AE09>, "NORM", 3.5 },
+ { <AE10>, "NORM", 3.5 }, { <AE11>, "NORM", 3.5 },
+ { <AE12>, "NORM", 3.5 }, { <AE13>, "NORM", 3.5 },
+ { <BKSP>, "BKSP", 3.5 }
+ };
+ };
+ row {
+ top= 18.5;
+ left= 0;
+ keys {
+ { <TAB>, "TAB", 0 }, { <AD01>, "NORM", 3.5 },
+ { <AD02>, "NORM", 3.5 }, { <AD03>, "NORM", 3.5 },
+ { <AD04>, "NORM", 3.5 }, { <AD05>, "NORM", 3.5 },
+ { <AD06>, "NORM", 3.5 }, { <AD07>, "NORM", 3.5 },
+ { <AD08>, "NORM", 3.5 }, { <AD09>, "NORM", 3.5 },
+ { <AD10>, "NORM", 3.5 }, { <AD11>, "NORM", 3.5 },
+ { <AD12>, "NORM", 3.5 }, { <RTRN>, "RTRN", 3.5 }
+ };
+ };
+ row {
+ top= 37;
+ left= 0;
+ keys {
+ { <LCTL>, "LCTL", 0 }, { <AC01>, "NORM", 3.5 },
+ { <AC02>, "NORM", 3.5 }, { <AC03>, "NORM", 3.5 },
+ { <AC04>, "NORM", 3.5 }, { <AC05>, "NORM", 3.5 },
+ { <AC06>, "NORM", 3.5 }, { <AC07>, "NORM", 3.5 },
+ { <AC08>, "NORM", 3.5 }, { <AC09>, "NORM", 3.5 },
+ { <AC10>, "NORM", 3.5 }, { <AC11>, "NORM", 3.5 },
+ { <AC12>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 55.5;
+ left= 0;
+ keys {
+ { <LFSH>, "LFSH", 0 },
+ { <AB01>, "NORM", 3.5 }, { <AB02>, "NORM", 3.5 },
+ { <AB03>, "NORM", 3.5 }, { <AB04>, "NORM", 3.5 },
+ { <AB05>, "NORM", 3.5 }, { <AB06>, "NORM", 3.5 },
+ { <AB07>, "NORM", 3.5 }, { <AB08>, "NORM", 3.5 },
+ { <AB09>, "NORM", 3.5 }, { <AB10>, "NORM", 3.5 },
+ { <AB11>, "NORM", 3.5 }, { <RTSH>, "RTSH", 3.5 }
+ };
+ };
+ row {
+ top= 74;
+ left= 0;
+ keys {
+ { <LALT>, "LALT", 0 }, { <LMTA>, "LMTA", 3.5 },
+ { <EISU>, "EISU", 3.5 }, { <SPCE>, "SPCE", 3.5 },
+ { <KANA>, "KANA", 3.5 }, { <RMTA>, "RMTA", 3.5 },
+ { <RALT>, "RALT", 3.5 }, { <CAPS>, "CAPS", 3.5 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ key.color= "white";
+ priority= 9;
+ top= 17;
+ left= 287.7;
+ width= 53.5;
+ height= 92;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <INS>, "NORM", 0 }, { <HOME>, "NORM", 3.5 },
+ { <PGUP>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 18.5;
+ left= 0;
+ keys {
+ { <DELE>, "NORM", 0 }, { <END>, "NORM", 3.5 },
+ { <PGDN>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 58.5;
+ left= 19;
+ keys {
+ { <UP>, "NORM", 0 }
+ };
+ };
+ row {
+ top= 77;
+ left= 0;
+ keys {
+ { <LEFT>, "NORM", 0 }, { <DOWN>, "NORM", 3.5 },
+ { <RGHT>, "NORM", 3.5 }
+ };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ key.color= "white";
+ priority= 10;
+ top= 17;
+ left= 352.7;
+ width= 72.5;
+ height= 92;
+ row {
+ top= 0;
+ left= 0;
+ keys {
+ { <NMLK>, "NORM", 0 }, { <KPEQ>, "NORM", 3.5 },
+ { <KPDV>, "NORM", 3.5 }, { <KPMU>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 18.5;
+ left= 0;
+ keys {
+ { <KP7>, "NORM", 0 }, { <KP8>, "NORM", 3.5 },
+ { <KP9>, "NORM", 3.5 }, { <KPSU>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 37;
+ left= 0;
+ keys {
+ { <KP4>, "NORM", 0 }, { <KP5>, "NORM", 3.5 },
+ { <KP6>, "NORM", 3.5 }, { <KPAD>, "NORM", 3.5 }
+ };
+ };
+ row {
+ top= 55.5;
+ left= 0;
+ keys {
+ { <KP1>, "NORM", 0 }, { <KP2>, "NORM", 3.5 },
+ { <KP3>, "NORM", 3.5 }, { <KPEN>, "KPEN", 3.5 }
+ };
+ };
+ row {
+ top= 74;
+ left= 0;
+ keys {
+ { <KP0>, "KPDT", 0 }, { <JPCM>, "KPDT", 3.5 },
+ { <KPDL>, "KPDT", 3.5 }
+ };
+ };
+ }; // End of "Keypad" section
+
+ indicator "Caps Lock" {
+ top= 93;
+ left= 273.2;
+ priority= 2;
+ onColor= "green";
+ offColor= "gray";
+ shape= "LED";
+ };
+
+};
diff --git a/xorg-server/xkeyboard-config/geometry/microsoft b/xorg-server/xkeyboard-config/geometry/microsoft
index 932db6c11..e7f8d7515 100644
--- a/xorg-server/xkeyboard-config/geometry/microsoft
+++ b/xorg-server/xkeyboard-config/geometry/microsoft
@@ -1,532 +1,532 @@
-default xkb_geometry "natural" {
-
- // Approximate layout for a Microsoft Natural Keyboard
- description= "Microsoft Natural Keyboard";
- width= 550;
- height= 190;
-
- shape.cornerRadius= 1;
- shape "LDEF" { { [ 18,18] }, { [2,1], [15,15] } };
- shape "TABK" { { [ 26,18] }, { [2,1], [23,15] } };
- shape "CAPS" { { [ 30,18] }, { [2,1], [23,15] } };
- shape "LFSH" { { [ 41,18] }, { [2,1], [38,15] } };
- shape "KEY6" { { [ 22,18] }, { [2,1], [15,15] } };
- shape "KEYT" { { [ 33,18] }, { [2,1], [15,15] } };
- shape "KEYG" { { [ 29,18] }, { [2,1], [15,15] } };
- shape "LCTL" {
- approx= { [ 32, 22 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 23 ], [ 0, 22 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 17 ], [ 2, 15 ] }
- };
- shape "LWIN" {
- approx= { [ 32, 23 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 24 ], [ 0, 23 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 18 ], [ 2, 17 ] }
- };
- shape "LALT" {
- approx= { [ 32, 24 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 25 ], [ 0, 24 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 20 ], [ 2, 19 ] }
- };
- shape "RDEF" { { [ 18,18] }, { [3,1], [15,15] } };
- shape "KEY7" { { [ 28, 18 ] }, { [ 14, 1], [26, 15] } };
- shape "KEYH" { { [ 24, 18 ] }, { [ 10, 1], [22, 15] } };
- shape "KEYN" { { [ 32, 18 ] }, { [ 18, 1], [30, 15] } };
- shape "BKSP" { { [ 41, 18 ] }, { [ 3, 1], [39, 15] } };
- shape "BKSL" { { [ 24, 18 ] }, { [ 3, 1], [22, 15] } };
- shape "RTRN" { { [ 37, 18 ] }, { [ 3, 1], [35, 15] } };
- shape "RTSH" { { [ 43, 18 ] }, { [ 3, 1], [41, 15] } };
- shape "RALT" {
- approx= { [ 27, 24 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 24 ], [ 0, 25 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 19 ], [ 3, 20 ] }
- };
- shape "RWIN" {
- approx= { [ 27, 23 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 23 ], [ 0, 24 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 18 ], [ 3, 19 ] }
- };
- shape "MENU" {
- approx= { [ 27, 21 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 21 ], [ 0, 23 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 16 ], [ 3, 17 ] }
- };
- shape "RCTL" {
- approx= { [ 27, 19 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 19 ], [ 0, 21 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 14 ], [ 3, 15 ] }
- };
- shape "KPAD" { { [ 18, 37 ] }, { [ 3, 1 ], [ 16, 34 ] } };
- shape "KP0" { { [ 37, 18 ] }, { [ 3, 1 ], [ 35, 15 ] } };
- shape "SPCE" {
- { [ 4, 3], [42,10], [44, 0], [88, 0], [90,10], [130, 3],
- [134,26], [99,30], [67,33], [33,30], [ 0,26] },
- { [ 6, 4.5], [43,11], [45, 1], [87, 1], [89,11], [128, 4.5],
- [131,23], [99,28], [67,32], [33,28], [ 3,23] }
- };
-
- shape "EDGE" {
- cornerRadius= 2,
- { [ 25, 0 ], [ 177, 17 ], [ 329, 0 ], [ 542, 0 ],
- [ 542, 150 ], [ 354, 150 ], [ 177, 185 ], [ 0, 150 ] }
- };
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- row.left= 1;
- key.shape= "LDEF";
- key.gap= 1;
- section "LeftFunction" {
- top= 10;
- left= 40;
- angle= 10;
- row {
- top= 1;
- keys { <ESC>, { <FK01>, 12 }, <FK02>, <FK03>, <FK04>, <FK05> };
- };
- }; // End of "LeftFunction" section
-
- section "LeftAlpha" {
- top= 47;
- left= 30;
- angle= 10;
- row {
- top= 1;
- keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, { <AE06>, "KEY6" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, { <AD05>, "KEYT" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, { <AC05>, "KEYG" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>
- };
- };
- row {
- top= 77;
- keys { { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, { <LALT>, "LALT" } };
- };
- }; // End of "LeftAlpha" section
-
- key.shape= "RDEF";
- section "RightFunction" {
- top= 32;
- left= 195;
- angle= -10;
- row {
- top= 1;
- left= 1;
- keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12> };
- };
- }; // End of "RightFunction" section
-
- section "RightAlpha" {
- top= 71;
- left= 190;
- angle= -10;
- row.left= 1;
- row {
- top= 1;
- keys { { <AE07>, "KEY7" },
- <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys {
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <AC06>, "KEYH" },
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { { <AB06>, "KEYN" },
- <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- left= 40;
- keys { { <RALT>, "RALT" }, { <RWIN>, "RWIN" },
- { <MENU>, "MENU" }, { <RCTL>, "RCTL" }
- };
- };
- }; // End of "RightAlpha" section
-
- section "SpaceBar" {
- top= 139;
- left= 111;
- key.shape= "SPCE";
- row { keys { <SPCE> }; };
- };
-
- section "Editing" {
- top= 15;
- left= 385;
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 109;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LED" {
- cornerRadius= 0,
- { [ 3, 1 ] }
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.left= 177;
- indicator.shape= "LED";
- indicator "Num Lock" { top= 90; };
- indicator "Caps Lock" { top= 107; };
- indicator "Scroll Lock" { top= 127; };
-
- section "Keypad" {
- top= 47;
- left= 456;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-
-// Approximate layout for a Microsoft Natural(R) Keyboard Elite
-//
-// Modified by Pavel Kurashov <pavell@mail.ru> Mon Oct 8 22:08:20 NOVST 2007
-//
-// * Function, editing and navigation keys are reduced height
-// * Navigation keys are repositioned in two column
-// * Leds are enlarged for better look
-// * "BKSP" alligned with "BKSL" and "RTRN"
-// * Ouline Edges slightly modified
-//
-xkb_geometry "elite" {
-
- // Approximate layout for a Microsoft Natural(R) Keyboard Elite
- description= "Microsoft Natural(r) Keyboard Elite";
- width= 495;
- height= 190;
-
- shape.cornerRadius= 1;
- shape "LDEF" { { [ 18,18] }, { [2,1], [15,15] } };
- shape "FKEY" { { [ 18,13] }, { [2,1], [15,10] } };
- shape "TABK" { { [ 26,18] }, { [2,1], [23,15] } };
- shape "CAPS" { { [ 30,18] }, { [2,1], [23,15] } };
- shape "LFSH" { { [ 41,18] }, { [2,1], [38,15] } };
- shape "KEY6" { { [ 22,18] }, { [2,1], [15,15] } };
- shape "KEYT" { { [ 33,18] }, { [2,1], [15,15] } };
- shape "KEYG" { { [ 29,18] }, { [2,1], [15,15] } };
- shape "LCTL" {
- approx= { [ 32, 22 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 23 ], [ 0, 22 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 17 ], [ 2, 15 ] }
- };
- shape "LWIN" {
- approx= { [ 32, 23 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 24 ], [ 0, 23 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 18 ], [ 2, 17 ] }
- };
- shape "LALT" {
- approx= { [ 32, 24 ] },
- { [ 0, 0], [ 32, 0 ], [ 32, 25 ], [ 0, 24 ] },
- { [ 2, 1], [ 29, 1 ], [ 29, 20 ], [ 2, 19 ] }
- };
- shape "RDEF" { { [ 18,18 ] }, { [ 2, 1], [15, 15] } };
- shape "KEY7" { { [ 28, 18 ] }, { [ 14, 1], [26, 15] } };
- shape "KEYH" { { [ 24, 18 ] }, { [ 10, 1], [22, 15] } };
- shape "KEYN" { { [ 32, 18 ] }, { [ 18, 1], [30, 15] } };
- shape "BKSP" { { [ 32, 18 ] }, { [ 2, 1], [30, 15] } };
- shape "BKSL" { { [ 24, 18 ] }, { [ 2, 1], [22, 15] } };
- shape "RTRN" { { [ 37, 18 ] }, { [ 2, 1], [35, 15] } };
- shape "RTSH" { { [ 43, 18 ] }, { [ 2, 1], [41, 15] } };
- shape "RALT" {
- approx= { [ 27, 24 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 24 ], [ 0, 25 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 19 ], [ 3, 20 ] }
- };
- shape "RWIN" {
- approx= { [ 27, 23 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 23 ], [ 0, 24 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 18 ], [ 3, 19 ] }
- };
- shape "MENU" {
- approx= { [ 27, 21 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 21 ], [ 0, 23 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 16 ], [ 3, 17 ] }
- };
- shape "RCTL" {
- approx= { [ 27, 19 ] },
- { [ 0, 0], [ 27, 0 ], [ 27, 19 ], [ 0, 21 ] },
- { [ 3, 1], [ 25, 1 ], [ 25, 14 ], [ 3, 15 ] }
- };
- shape "KPAD" { { [ 18, 37 ] }, { [ 3, 1 ], [ 16, 34 ] } };
- shape "KP0" { { [ 37, 18 ] }, { [ 3, 1 ], [ 35, 15 ] } };
- shape "SPCE" {
- { [ 4, 3], [42,10], [44, 0], [88, 0], [90,10], [130, 3],
- [134,26], [99,30], [67,33], [33,30], [ 0,26] },
- { [ 6, 4.5], [43,11], [45, 1], [87, 1], [89,11], [128, 4.5],
- [131,23], [99,28], [67,32], [33,28], [ 3,23] }
- };
-
- shape "EDGE" {
- cornerRadius= 3,
- { [ 32, 15 ], [140, 33],[ 220, 33 ], [ 329, 15 ], [ 493, 15 ],
- [ 493, 150 ], [ 354, 150 ], [200, 180], [ 153, 180 ], [ 7, 150 ] }
- };
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- row.left= 1;
- key.shape= "FKEY";
- key.gap= 1;
- section "LeftFunction" {
- top= 26;
- left= 40;
- angle= 10;
- row {
- top= 1;
- keys { <ESC>, { <FK01>, 12 }, <FK02>, <FK03>, <FK04>, <FK05> };
- };
- }; // End of "LeftFunction" section
-
- key.shape= "LDEF";
- section "LeftAlpha" {
- top= 47;
- left= 30;
- angle= 10;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, { <AE06>, "KEY6" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, { <AD05>, "KEYT" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, { <AC05>, "KEYG" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>
- };
- };
- row {
- top= 77;
- keys { { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, { <LALT>, "LALT" } };
- };
- }; // End of "LeftAlpha" section
-
- key.shape= "FKEY";
- section "RightFunction" {
- top= 48;
- left= 195;
- angle= -10;
- row {
- top= 1;
- left= 1;
- keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12> };
- };
- }; // End of "RightFunction" section
-
- key.shape= "RDEF";
- section "RightAlpha" {
- top= 71;
- left= 190;
- angle= -10;
- row.left= 1;
- row {
- top= 1;
- keys { { <AE07>, "KEY7" },
- <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys {
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <AC06>, "KEYH" },
- <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { { <AB06>, "KEYN" },
- <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- left= 40;
- keys { { <RALT>, "RALT" }, { <RWIN>, "RWIN" },
- { <MENU>, "MENU" }, { <RCTL>, "RCTL" }
- };
- };
- }; // End of "RightAlpha" section
-
- section "SpaceBar" {
- top= 139;
- left= 111;
- key.shape= "SPCE";
- row { keys { <SPCE> }; };
- };
-
- section "Editing" {
- key.shape="FKEY";
- top= 23;
- left= 348;
- row {
- top= 0;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 22;
- left=20;
- keys { <HOME>, <PGUP> };
- };
- row {
- top= 36;
- left=20;
- keys { <END>, <PGDN> };
- };
- row {
- top= 50;
- left=20;
- keys { <DELE>, <INS> };
- };
- row {
- top= 75;
- left= 29;
- keys { <UP> };
- };
- row {
- top= 89;
- left=20;
- keys { <LEFT>, <RGHT> };
- };
- row {
- top= 103;
- left=29;
- keys { <DOWN> };
- };
- }; // End of "Editing" section
-
- shape "LED" {
- cornerRadius= 1,
- { [ 7, 2 ] }
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.left= 177;
- indicator.shape= "LED";
- indicator "Num Lock" { top= 90; };
- indicator "Caps Lock" { top= 107; };
- indicator "Scroll Lock" { top= 127; };
-
- section "Keypad" {
- top= 44;
- left= 412;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
+default xkb_geometry "natural" {
+
+ // Approximate layout for a Microsoft Natural Keyboard
+ description= "Microsoft Natural Keyboard";
+ width= 550;
+ height= 190;
+
+ shape.cornerRadius= 1;
+ shape "LDEF" { { [ 18,18] }, { [2,1], [15,15] } };
+ shape "TABK" { { [ 26,18] }, { [2,1], [23,15] } };
+ shape "CAPS" { { [ 30,18] }, { [2,1], [23,15] } };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [38,15] } };
+ shape "KEY6" { { [ 22,18] }, { [2,1], [15,15] } };
+ shape "KEYT" { { [ 33,18] }, { [2,1], [15,15] } };
+ shape "KEYG" { { [ 29,18] }, { [2,1], [15,15] } };
+ shape "LCTL" {
+ approx= { [ 32, 22 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 23 ], [ 0, 22 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 17 ], [ 2, 15 ] }
+ };
+ shape "LWIN" {
+ approx= { [ 32, 23 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 24 ], [ 0, 23 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 18 ], [ 2, 17 ] }
+ };
+ shape "LALT" {
+ approx= { [ 32, 24 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 25 ], [ 0, 24 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 20 ], [ 2, 19 ] }
+ };
+ shape "RDEF" { { [ 18,18] }, { [3,1], [15,15] } };
+ shape "KEY7" { { [ 28, 18 ] }, { [ 14, 1], [26, 15] } };
+ shape "KEYH" { { [ 24, 18 ] }, { [ 10, 1], [22, 15] } };
+ shape "KEYN" { { [ 32, 18 ] }, { [ 18, 1], [30, 15] } };
+ shape "BKSP" { { [ 41, 18 ] }, { [ 3, 1], [39, 15] } };
+ shape "BKSL" { { [ 24, 18 ] }, { [ 3, 1], [22, 15] } };
+ shape "RTRN" { { [ 37, 18 ] }, { [ 3, 1], [35, 15] } };
+ shape "RTSH" { { [ 43, 18 ] }, { [ 3, 1], [41, 15] } };
+ shape "RALT" {
+ approx= { [ 27, 24 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 24 ], [ 0, 25 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 19 ], [ 3, 20 ] }
+ };
+ shape "RWIN" {
+ approx= { [ 27, 23 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 23 ], [ 0, 24 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 18 ], [ 3, 19 ] }
+ };
+ shape "MENU" {
+ approx= { [ 27, 21 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 21 ], [ 0, 23 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 16 ], [ 3, 17 ] }
+ };
+ shape "RCTL" {
+ approx= { [ 27, 19 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 19 ], [ 0, 21 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 14 ], [ 3, 15 ] }
+ };
+ shape "KPAD" { { [ 18, 37 ] }, { [ 3, 1 ], [ 16, 34 ] } };
+ shape "KP0" { { [ 37, 18 ] }, { [ 3, 1 ], [ 35, 15 ] } };
+ shape "SPCE" {
+ { [ 4, 3], [42,10], [44, 0], [88, 0], [90,10], [130, 3],
+ [134,26], [99,30], [67,33], [33,30], [ 0,26] },
+ { [ 6, 4.5], [43,11], [45, 1], [87, 1], [89,11], [128, 4.5],
+ [131,23], [99,28], [67,32], [33,28], [ 3,23] }
+ };
+
+ shape "EDGE" {
+ cornerRadius= 2,
+ { [ 25, 0 ], [ 177, 17 ], [ 329, 0 ], [ 542, 0 ],
+ [ 542, 150 ], [ 354, 150 ], [ 177, 185 ], [ 0, 150 ] }
+ };
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ row.left= 1;
+ key.shape= "LDEF";
+ key.gap= 1;
+ section "LeftFunction" {
+ top= 10;
+ left= 40;
+ angle= 10;
+ row {
+ top= 1;
+ keys { <ESC>, { <FK01>, 12 }, <FK02>, <FK03>, <FK04>, <FK05> };
+ };
+ }; // End of "LeftFunction" section
+
+ section "LeftAlpha" {
+ top= 47;
+ left= 30;
+ angle= 10;
+ row {
+ top= 1;
+ keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, { <AE06>, "KEY6" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, { <AD05>, "KEYT" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, { <AC05>, "KEYG" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>
+ };
+ };
+ row {
+ top= 77;
+ keys { { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, { <LALT>, "LALT" } };
+ };
+ }; // End of "LeftAlpha" section
+
+ key.shape= "RDEF";
+ section "RightFunction" {
+ top= 32;
+ left= 195;
+ angle= -10;
+ row {
+ top= 1;
+ left= 1;
+ keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12> };
+ };
+ }; // End of "RightFunction" section
+
+ section "RightAlpha" {
+ top= 71;
+ left= 190;
+ angle= -10;
+ row.left= 1;
+ row {
+ top= 1;
+ keys { { <AE07>, "KEY7" },
+ <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys {
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <AC06>, "KEYH" },
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <AB06>, "KEYN" },
+ <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ left= 40;
+ keys { { <RALT>, "RALT" }, { <RWIN>, "RWIN" },
+ { <MENU>, "MENU" }, { <RCTL>, "RCTL" }
+ };
+ };
+ }; // End of "RightAlpha" section
+
+ section "SpaceBar" {
+ top= 139;
+ left= 111;
+ key.shape= "SPCE";
+ row { keys { <SPCE> }; };
+ };
+
+ section "Editing" {
+ top= 15;
+ left= 385;
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 109;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LED" {
+ cornerRadius= 0,
+ { [ 3, 1 ] }
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.left= 177;
+ indicator.shape= "LED";
+ indicator "Num Lock" { top= 90; };
+ indicator "Caps Lock" { top= 107; };
+ indicator "Scroll Lock" { top= 127; };
+
+ section "Keypad" {
+ top= 47;
+ left= 456;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+
+// Approximate layout for a Microsoft Natural(R) Keyboard Elite
+//
+// Modified by Pavel Kurashov <pavell@mail.ru> Mon Oct 8 22:08:20 NOVST 2007
+//
+// * Function, editing and navigation keys are reduced height
+// * Navigation keys are repositioned in two column
+// * Leds are enlarged for better look
+// * "BKSP" alligned with "BKSL" and "RTRN"
+// * Ouline Edges slightly modified
+//
+xkb_geometry "elite" {
+
+ // Approximate layout for a Microsoft Natural(R) Keyboard Elite
+ description= "Microsoft Natural(r) Keyboard Elite";
+ width= 495;
+ height= 190;
+
+ shape.cornerRadius= 1;
+ shape "LDEF" { { [ 18,18] }, { [2,1], [15,15] } };
+ shape "FKEY" { { [ 18,13] }, { [2,1], [15,10] } };
+ shape "TABK" { { [ 26,18] }, { [2,1], [23,15] } };
+ shape "CAPS" { { [ 30,18] }, { [2,1], [23,15] } };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [38,15] } };
+ shape "KEY6" { { [ 22,18] }, { [2,1], [15,15] } };
+ shape "KEYT" { { [ 33,18] }, { [2,1], [15,15] } };
+ shape "KEYG" { { [ 29,18] }, { [2,1], [15,15] } };
+ shape "LCTL" {
+ approx= { [ 32, 22 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 23 ], [ 0, 22 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 17 ], [ 2, 15 ] }
+ };
+ shape "LWIN" {
+ approx= { [ 32, 23 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 24 ], [ 0, 23 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 18 ], [ 2, 17 ] }
+ };
+ shape "LALT" {
+ approx= { [ 32, 24 ] },
+ { [ 0, 0], [ 32, 0 ], [ 32, 25 ], [ 0, 24 ] },
+ { [ 2, 1], [ 29, 1 ], [ 29, 20 ], [ 2, 19 ] }
+ };
+ shape "RDEF" { { [ 18,18 ] }, { [ 2, 1], [15, 15] } };
+ shape "KEY7" { { [ 28, 18 ] }, { [ 14, 1], [26, 15] } };
+ shape "KEYH" { { [ 24, 18 ] }, { [ 10, 1], [22, 15] } };
+ shape "KEYN" { { [ 32, 18 ] }, { [ 18, 1], [30, 15] } };
+ shape "BKSP" { { [ 32, 18 ] }, { [ 2, 1], [30, 15] } };
+ shape "BKSL" { { [ 24, 18 ] }, { [ 2, 1], [22, 15] } };
+ shape "RTRN" { { [ 37, 18 ] }, { [ 2, 1], [35, 15] } };
+ shape "RTSH" { { [ 43, 18 ] }, { [ 2, 1], [41, 15] } };
+ shape "RALT" {
+ approx= { [ 27, 24 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 24 ], [ 0, 25 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 19 ], [ 3, 20 ] }
+ };
+ shape "RWIN" {
+ approx= { [ 27, 23 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 23 ], [ 0, 24 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 18 ], [ 3, 19 ] }
+ };
+ shape "MENU" {
+ approx= { [ 27, 21 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 21 ], [ 0, 23 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 16 ], [ 3, 17 ] }
+ };
+ shape "RCTL" {
+ approx= { [ 27, 19 ] },
+ { [ 0, 0], [ 27, 0 ], [ 27, 19 ], [ 0, 21 ] },
+ { [ 3, 1], [ 25, 1 ], [ 25, 14 ], [ 3, 15 ] }
+ };
+ shape "KPAD" { { [ 18, 37 ] }, { [ 3, 1 ], [ 16, 34 ] } };
+ shape "KP0" { { [ 37, 18 ] }, { [ 3, 1 ], [ 35, 15 ] } };
+ shape "SPCE" {
+ { [ 4, 3], [42,10], [44, 0], [88, 0], [90,10], [130, 3],
+ [134,26], [99,30], [67,33], [33,30], [ 0,26] },
+ { [ 6, 4.5], [43,11], [45, 1], [87, 1], [89,11], [128, 4.5],
+ [131,23], [99,28], [67,32], [33,28], [ 3,23] }
+ };
+
+ shape "EDGE" {
+ cornerRadius= 3,
+ { [ 32, 15 ], [140, 33],[ 220, 33 ], [ 329, 15 ], [ 493, 15 ],
+ [ 493, 150 ], [ 354, 150 ], [200, 180], [ 153, 180 ], [ 7, 150 ] }
+ };
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ row.left= 1;
+ key.shape= "FKEY";
+ key.gap= 1;
+ section "LeftFunction" {
+ top= 26;
+ left= 40;
+ angle= 10;
+ row {
+ top= 1;
+ keys { <ESC>, { <FK01>, 12 }, <FK02>, <FK03>, <FK04>, <FK05> };
+ };
+ }; // End of "LeftFunction" section
+
+ key.shape= "LDEF";
+ section "LeftAlpha" {
+ top= 47;
+ left= 30;
+ angle= 10;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, { <AE06>, "KEY6" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, { <AD05>, "KEYT" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, { <AC05>, "KEYG" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>
+ };
+ };
+ row {
+ top= 77;
+ keys { { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, { <LALT>, "LALT" } };
+ };
+ }; // End of "LeftAlpha" section
+
+ key.shape= "FKEY";
+ section "RightFunction" {
+ top= 48;
+ left= 195;
+ angle= -10;
+ row {
+ top= 1;
+ left= 1;
+ keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12> };
+ };
+ }; // End of "RightFunction" section
+
+ key.shape= "RDEF";
+ section "RightAlpha" {
+ top= 71;
+ left= 190;
+ angle= -10;
+ row.left= 1;
+ row {
+ top= 1;
+ keys { { <AE07>, "KEY7" },
+ <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys {
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <AC06>, "KEYH" },
+ <AC07>, <AC08>, <AC09>, <AC10>, <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <AB06>, "KEYN" },
+ <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ left= 40;
+ keys { { <RALT>, "RALT" }, { <RWIN>, "RWIN" },
+ { <MENU>, "MENU" }, { <RCTL>, "RCTL" }
+ };
+ };
+ }; // End of "RightAlpha" section
+
+ section "SpaceBar" {
+ top= 139;
+ left= 111;
+ key.shape= "SPCE";
+ row { keys { <SPCE> }; };
+ };
+
+ section "Editing" {
+ key.shape="FKEY";
+ top= 23;
+ left= 348;
+ row {
+ top= 0;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 22;
+ left=20;
+ keys { <HOME>, <PGUP> };
+ };
+ row {
+ top= 36;
+ left=20;
+ keys { <END>, <PGDN> };
+ };
+ row {
+ top= 50;
+ left=20;
+ keys { <DELE>, <INS> };
+ };
+ row {
+ top= 75;
+ left= 29;
+ keys { <UP> };
+ };
+ row {
+ top= 89;
+ left=20;
+ keys { <LEFT>, <RGHT> };
+ };
+ row {
+ top= 103;
+ left=29;
+ keys { <DOWN> };
+ };
+ }; // End of "Editing" section
+
+ shape "LED" {
+ cornerRadius= 1,
+ { [ 7, 2 ] }
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.left= 177;
+ indicator.shape= "LED";
+ indicator "Num Lock" { top= 90; };
+ indicator "Caps Lock" { top= 107; };
+ indicator "Scroll Lock" { top= 127; };
+
+ section "Keypad" {
+ top= 44;
+ left= 412;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
diff --git a/xorg-server/xkeyboard-config/geometry/nec b/xorg-server/xkeyboard-config/geometry/nec
index e6c00d3ff..f4af6660d 100644
--- a/xorg-server/xkeyboard-config/geometry/nec
+++ b/xorg-server/xkeyboard-config/geometry/nec
@@ -1,157 +1,157 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-
-default xkb_geometry "pc98" {
-
- description= "Generic PC98";
- width= 405;
- height= 172;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 17,18] }, { [2,1], [ 15,17] } };
- shape "RTRN" { { [ 20,37] }, { [2,1], [ 18,35] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "RTSH" { { [ 31,18] }, { [2,1], [ 29,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [115,18] }, { [2,1], [113,17] } };
- shape "FUNC" { { [ 21,18] }, { [2,1], [ 19,17] } };
- shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
- shape "TABK" { { [ 30,18] }, { [2,1], [ 28,17] } };
- shape "ARRW" { { [ 35,18] }, { [2,1], [ 33,17] } };
-
- section.left= 8;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 29;
- row {
- top= 1;
- key.shape="FUNC";
- keys { { <BRK>, "NORM" }, { <PRSC>, "NORM", 5 },
- { <FK01>, 6 }, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 6 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 6 }, <FK12>, <FK13>, <FK14>, <FK15>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 54;
- row {
- top= 1;
- keys { { <ESC>, shape="BKSP"},
- <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, <BKSL>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN", 6 }
- };
- };
- row {
- top= 39;
- keys { <LCTL>, <CAPS>,
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- keys { { <ALGR>, 35 } , <LALT>, { <NFER>, "FUNC" },
- { <SPCE>, "SPCE" }, { <XFER>, "FUNC" }
-
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 54;
- left= 281;
- row {
- top= 1;
- keys { <INS>, <DELE> };
- };
- row {
- top= 20;
- keys { <PGDN>, <PGUP> };
- };
- row {
- top= 39;
- keys { { <UP>, "ARRW" } };
- };
- row {
- top= 58;
- keys { <LEFT>, <RGHT> };
- };
- row {
- top= 77;
- keys { { <DOWN>, "ARRW" } };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 54;
- left= 320;
- row {
- top= 1;
- keys { <HOME>, <HELP>, <KPSU>, <KPDV> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, <KPMU> };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, <KPAD> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, <KPEQ> };
- };
- row {
- top= 77;
- keys { <KP0>, <KPSP>, <KPDC>, <KPEN> };
- };
- }; // End of "Keypad" section
-
-}; // End of "pc98" geometry
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+
+default xkb_geometry "pc98" {
+
+ description= "Generic PC98";
+ width= 405;
+ height= 172;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 17,18] }, { [2,1], [ 15,17] } };
+ shape "RTRN" { { [ 20,37] }, { [2,1], [ 18,35] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "RTSH" { { [ 31,18] }, { [2,1], [ 29,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [115,18] }, { [2,1], [113,17] } };
+ shape "FUNC" { { [ 21,18] }, { [2,1], [ 19,17] } };
+ shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
+ shape "TABK" { { [ 30,18] }, { [2,1], [ 28,17] } };
+ shape "ARRW" { { [ 35,18] }, { [2,1], [ 33,17] } };
+
+ section.left= 8;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 29;
+ row {
+ top= 1;
+ key.shape="FUNC";
+ keys { { <BRK>, "NORM" }, { <PRSC>, "NORM", 5 },
+ { <FK01>, 6 }, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 6 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 6 }, <FK12>, <FK13>, <FK14>, <FK15>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 54;
+ row {
+ top= 1;
+ keys { { <ESC>, shape="BKSP"},
+ <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, <BKSL>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN", 6 }
+ };
+ };
+ row {
+ top= 39;
+ keys { <LCTL>, <CAPS>,
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ keys { { <ALGR>, 35 } , <LALT>, { <NFER>, "FUNC" },
+ { <SPCE>, "SPCE" }, { <XFER>, "FUNC" }
+
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 54;
+ left= 281;
+ row {
+ top= 1;
+ keys { <INS>, <DELE> };
+ };
+ row {
+ top= 20;
+ keys { <PGDN>, <PGUP> };
+ };
+ row {
+ top= 39;
+ keys { { <UP>, "ARRW" } };
+ };
+ row {
+ top= 58;
+ keys { <LEFT>, <RGHT> };
+ };
+ row {
+ top= 77;
+ keys { { <DOWN>, "ARRW" } };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 54;
+ left= 320;
+ row {
+ top= 1;
+ keys { <HOME>, <HELP>, <KPSU>, <KPDV> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, <KPMU> };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, <KPAD> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, <KPEQ> };
+ };
+ row {
+ top= 77;
+ keys { <KP0>, <KPSP>, <KPDC>, <KPEN> };
+ };
+ }; // End of "Keypad" section
+
+}; // End of "pc98" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/nokia b/xorg-server/xkeyboard-config/geometry/nokia
index 5132840ca..789f6523b 100644
--- a/xorg-server/xkeyboard-config/geometry/nokia
+++ b/xorg-server/xkeyboard-config/geometry/nokia
@@ -1,53 +1,53 @@
-// Zoomed 3x because of text size
-
-default xkb_geometry "nokiarx51" {
-
- description= "Nokia RX-51";
- width= 273; // 13x6mm + 2x1.5mm border + 2x5mm border
- height= 54; // 3x5mm + 2x1.5mm border
-
- shape.cornerRadius= 1.5;
- shape "NORM" { { [18,15] } };
- shape "SPCE" { { [36,15] } };
- shape "FRAME" { cornerRadius= 2.5, { [243,54] } };
-
- solid "FRAME" {
- shape= "FRAME";
- color= "white";
- top= 0;
- left= 15;
- };
-
- section.left= 15;
- row.left= 4.5;
- key.shape= "NORM";
- key.gap= 0;
- section "Keys" {
- top= 0;
- row {
- top= 4.5;
- keys { { <LCTL>, "NORM", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AB08>,
- { <BKSP>, "NORM", color="grey20" }
- };
- };
- row {
- top= 19.5;
- keys { { <RALT>, "NORM", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AB09>, <UP>,
- { <RTRN>, "NORM", color="grey20" }
- };
- };
- row {
- top= 34.5;
- keys { { <LFSH>, "NORM", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>, <AB07>,
- { <SPCE>, "SPCE", color="white" },
- <LEFT>, <DOWN>, <RGHT>
- };
- };
- }; // End of "Keys" section
-
-}; // End of "rx51" geometry
+// Zoomed 3x because of text size
+
+default xkb_geometry "nokiarx51" {
+
+ description= "Nokia RX-51";
+ width= 273; // 13x6mm + 2x1.5mm border + 2x5mm border
+ height= 54; // 3x5mm + 2x1.5mm border
+
+ shape.cornerRadius= 1.5;
+ shape "NORM" { { [18,15] } };
+ shape "SPCE" { { [36,15] } };
+ shape "FRAME" { cornerRadius= 2.5, { [243,54] } };
+
+ solid "FRAME" {
+ shape= "FRAME";
+ color= "white";
+ top= 0;
+ left= 15;
+ };
+
+ section.left= 15;
+ row.left= 4.5;
+ key.shape= "NORM";
+ key.gap= 0;
+ section "Keys" {
+ top= 0;
+ row {
+ top= 4.5;
+ keys { { <LCTL>, "NORM", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AB08>,
+ { <BKSP>, "NORM", color="grey20" }
+ };
+ };
+ row {
+ top= 19.5;
+ keys { { <RALT>, "NORM", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AB09>, <UP>,
+ { <RTRN>, "NORM", color="grey20" }
+ };
+ };
+ row {
+ top= 34.5;
+ keys { { <LFSH>, "NORM", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>, <AB07>,
+ { <SPCE>, "SPCE", color="white" },
+ <LEFT>, <DOWN>, <RGHT>
+ };
+ };
+ }; // End of "Keys" section
+
+}; // End of "rx51" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/northgate b/xorg-server/xkeyboard-config/geometry/northgate
index cec2e35a3..364bf5499 100644
--- a/xorg-server/xkeyboard-config/geometry/northgate
+++ b/xorg-server/xkeyboard-config/geometry/northgate
@@ -1,168 +1,168 @@
-default xkb_geometry "omnikey101" {
-
- description= "North Gate Omnikey 101";
- width= 470;
- height= 175;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [34,18] }, { [2,1], [32,17] } };
- shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [15, 0], [40,37] },
- { [15, 0], [40, 0], [40,37],
- [ 0,37], [ 0,19], [15,19] },
- { [17, 1], [38, 1], [38,36],
- [ 2,36], [ 2,20], [17,20] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
- shape "RTSH" { { [ 30,18] }, { [2,1], [28,17] } };
- shape "MODK" { { [ 26,18] }, { [2,1], [24,17] } };
- shape "SPCE" { { [129,18] }, { [2,1], [127,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 32;
- left= 375;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 46.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 384; };
- indicator "Caps Lock" { left= 409; };
- indicator "Scroll Lock" { left= 434; };
- text.top= 34;
- text.color= "black";
- text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 32;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 9 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 9 }, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 65;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", -14, color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }, <BKSL>
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LALT>,
- { <LCTL>, 23 },
- { <SPCE>, "SPCE", color="white" },
- <RCTL>,
- { <RALT>, 23 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 32;
- left= 308;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 65;
- left= 374;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "default" geometry
+default xkb_geometry "omnikey101" {
+
+ description= "North Gate Omnikey 101";
+ width= 470;
+ height= 175;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [34,18] }, { [2,1], [32,17] } };
+ shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [15, 0], [40,37] },
+ { [15, 0], [40, 0], [40,37],
+ [ 0,37], [ 0,19], [15,19] },
+ { [17, 1], [38, 1], [38,36],
+ [ 2,36], [ 2,20], [17,20] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
+ shape "RTSH" { { [ 30,18] }, { [2,1], [28,17] } };
+ shape "MODK" { { [ 26,18] }, { [2,1], [24,17] } };
+ shape "SPCE" { { [129,18] }, { [2,1], [127,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 32;
+ left= 375;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 46.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 384; };
+ indicator "Caps Lock" { left= 409; };
+ indicator "Scroll Lock" { left= 434; };
+ text.top= 34;
+ text.color= "black";
+ text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 32;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 9 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 9 }, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 65;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", -14, color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }, <BKSL>
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LALT>,
+ { <LCTL>, 23 },
+ { <SPCE>, "SPCE", color="white" },
+ <RCTL>,
+ { <RALT>, 23 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 32;
+ left= 308;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 65;
+ left= 374;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "default" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/pc b/xorg-server/xkeyboard-config/geometry/pc
index 91e8dd7e1..86f546228 100644
--- a/xorg-server/xkeyboard-config/geometry/pc
+++ b/xorg-server/xkeyboard-config/geometry/pc
@@ -1,1568 +1,1568 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-
-default xkb_geometry "pc101" {
-
- description= "Generic 101";
- width= 470;
- height= 180;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
- shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
- shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
- shape "SPCE" { { [133,18] }, { [2,1], [131,16] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 22;
- left= 377;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 37;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 382; };
- indicator "Caps Lock" { left= 407; };
- indicator "Scroll Lock" { left= 433; };
- text.top= 25;
- text.color= "black";
- text "NumLockLabel" { left= 378; text="Num\nLock"; };
- text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 22;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 21 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>, { <RCTL>, 21 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "default" geometry
-
-xkb_geometry "pc102" {
-
- description= "Generic 102";
- width= 470;
- height= 180;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
- shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "RTRN" {
- { [0,0], [28,0], [28,37], [5,37], [5,18], [0,18] },
- { [2,1], [26,1], [26,35], [7,35], [7,16], [2,16] } };
- shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
- shape "LFSH" { { [ 25,18] }, { [2,1], [ 23,16] } };
- shape "RTSH" { { [ 50,18] }, { [2,1], [ 48,16] } };
- shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
- shape "SPCE" { { [134,18] }, { [2,1], [132,16] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 22;
- left= 377;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 37;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 382; };
- indicator "Caps Lock" { left= 407; };
- indicator "Scroll Lock" { left= 433; };
- text.top= 25;
- text.color= "black";
- text "NumLockLabel" { left= 378; text="Num\nLock"; };
- text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 22;
- row {
- top= 1;
- keys { { <ESC>, "TABK", color="grey20" },
- { <FK01>, 10 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>, { <RCTL>, 21 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "pc102" geometry
-
-xkb_geometry "pc104" {
-
- description= "Generic 104";
- width= 470;
- height= 180;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
- shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
- shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
- shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } };
- shape "SPCE" { { [113,18] }, { [2,1], [111,16] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 22;
- left= 377;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 37;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 382; };
- indicator "Caps Lock" { left= 407; };
- indicator "Scroll Lock" { left= 433; };
- text.top= 25;
- text.color= "black";
- text "NumLockLabel" { left= 378; text="Num\nLock"; };
- text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 22;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "SMOD";
- key.color= "grey20";
- keys { { <LCTL>, "MODK" }, <LWIN>, <LALT>,
- { <SPCE>, "SPCE", color="white" },
- <RALT>, <RWIN>, <MENU>, <RCTL>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "pc104" geometry
-
-xkb_geometry "pc105" {
-
- description= "Generic 105";
- width= 470;
- height= 180;
-
- shape.cornerRadius= 1;
-
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
- shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "RTRN" {
- { [0,0], [28,0], [28,37], [5,37], [5,18], [0,18] } ,
- { [2,1], [26,1], [26,35], [7,35], [7,16], [2,16] } ,
- approx = { [5,0], [28,37] } };
- shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
- shape "LFSH" { { [ 25,18] }, { [2,1], [ 23,16] } };
- shape "RTSH" { { [ 50,18] }, { [2,1], [ 48,16] } };
- shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
- shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } };
- shape "SPCE" { { [113,18] }, { [2,1], [111,16] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 22;
- left= 377;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 37;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 382; };
- indicator "Caps Lock" { left= 407; };
- indicator "Scroll Lock" { left= 433; };
- text.top= 25;
- text.color= "black";
- text "NumLockLabel" { left= 378; text="Num\nLock"; };
- text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 22;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "SMOD";
- key.color= "grey20";
- keys { { <LCTL>, "MODK" }, <LWIN>, <LALT>,
- { <SPCE>, "SPCE", color="white" },
- <RALT>, <RWIN>, <MENU>, <RCTL>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "pc105" geometry
-
-
-// Added for japanese 106 keyboard
-// by tsuka@kawalab.dnj.ynu.ac.jp .
-xkb_geometry "jp106" {
-
- description= "Japanese 106";
- width= 470;
- height= 180;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "RTRN" {
- { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } ,
- { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 25;
- left= 375;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 40;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 379; };
- indicator "Caps Lock" { left= 404; };
- indicator "Scroll Lock" { left= 429; };
- text.top= 28;
- text.color= "black";
- text "NumLockLabel" { left= 378; text="Num\nLock"; };
- text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 25;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 ,color="grey20"}, {<FK06>,color="grey20"},
- { <FK07>, color="grey20"}, {<FK08>,color="grey20"},
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { {<HZTG>,color="grey20"}, <AE01>, <AE02>,
- <AE03>, <AE04>, <AE05>, <AE06>, <AE07>,
- <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <AE13>, { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, 1 ,"RTRN",color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },<NFER>,
- { <SPCE>, "SPCE", color="white" },
- <XFER>,<HKTG>,<RALT>, { <RCTL>, 17 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 310;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 375;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "jp106" geometry
-
-// Added for brazilian ABNT2 by Ricardo Y. Igarashi(iga@that.com.br)
-xkb_geometry "abnt2" {
- include "pc(pc105)"
-
- description= "Brazilian ABNT2";
-
- shape "RTRN" {
- { [0,0],[ 28,0],[28,37],[4,37],[4,18],[0,18] } ,
- { [2,1],[ 26,1],[26,36],[5,36],[5,18],[2,18] } };
- shape "RTSH" { { [ 31,18] }, { [2,1], [ 29,16] } };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Alpha" {
- top= 61;
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- }; // End of "Alpha" section
-
- section "Keypad" {
- top= 61;
- left= 376;
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, { <KPPT>, color="grey20" } };
- };
- }; // End of "Keypad" section
-
-}; // End of "abnt2" geometry
-
-
-// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
-
-xkb_geometry "pc86" {
- description = "Noname keyboard with 86 keys, DE";
- width = 287;
- height = 143;
- baseColor = "grey20";
-
- shape "EDGE" { cornerRadius = 2, { [287, 143] } };
- shape "LED" { cornerRadius = 2, { [3, 3] } };
- shape "LEDS" { cornerRadius = 0, { [75, 5] } };
- shape "KEYS" { cornerRadius = 0, { [271, 109] } };
-
- outline "Edges" {
- top = 0;
- left = 0;
- shape = "EDGE";
- color = "black";
- };
-
- solid "KeyPanel" {
- shape = "KEYS";
- left = 8;
- top = 22;
- color = "grey70";
- };
-
- solid "LedPanel" {
- shape = "LEDS";
- left = 212;
- top = 10;
- color = "black";
- };
-
- indicator.onColor = "green";
- indicator.offColor = "green30";
- indicator.top = 11;
- indicator.shape = "LED";
- indicator "Num Lock" { left = 212 + 7; };
- indicator "Caps Lock" { left = 212 + 23; };
- indicator "Scroll Lock" { left = 212 + 39; };
- text.fontSize = 6;
- text.top = 10;
- text.color = "white";
- text "NumLockLabel" { left = 212 + 7 + 5; text = "Num\nLock"; };
- text "CapsLockLabel" { left = 212 + 23 + 5; text = "Caps\nLock"; };
- text "ScrollLockLabel" { left = 212 + 39 + 5; text = "Scroll\nLock"; };
-
- shape.cornerRadius = 1;
- shape "SMALL" { { [15, 12] }, { [1.5, 0], [13.5, 10] } };
- shape "NARR" { { [13, 18] }, { [1.5, 0], [11.5, 14] } };
- shape "NORM" { { [18, 18] }, { [3, 0], [15, 14] } };
- shape "NORM_1" { { [22, 18] }, { [4, 0], [22, 18] },
- { [7, 0], [19, 14] } };
- shape "WIDER" { { [23, 18] }, { [3, 0], [20, 14] } };
- shape "WIDEST" { { [27, 18] }, { [3, 0], [24, 14] } };
- shape "SPCE" { { [75, 18] }, { [3, 0], [72, 14] } };
-
- section "Function" {
- key.shape = "SMALL";
- key.gap = 0.99;
- key.color = "grey30";
- left = 8;
- top = 22;
- row {
- top = 1;
- keys { <ESC>,
- <FK01>, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <NMLK>, <PRSC>, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Control" {
- key.shape = "NORM";
- key.gap = 1;
- key.color = "grey30";
- left = 8;
- top = 111;
- row {
- top = 1;
- keys { <LCTL>, <FN>, <LALT>,
- { <SPCE>, shape="SPCE", 39 }, <RALT>,
- <INS>, <DELE>
- };
- };
- }; // End of "Control" section
-
- section "Editing" {
- key.shape = "NARR";
- key.gap = 1;
- key.color = "grey30";
- left = 265;
- top = 34;
- row.vertical = True;
- row {
- top = 1;
- keys { <HOME>, <PGUP>, <PGDN>, <END> };
- };
- }; // End of "Editing" section
-
- section "Navigation" {
- key.gap = 1;
- key.shape = "NARR";
- key.color = "grey30";
- left = 236;
- top = 92;
- row {
- left = 14;
- top = 1;
- keys { <UP> };
- };
- row {
- top = 20;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Navigation" section
-
- section "Alpha" {
- key.gap = 1;
- key.shape = "NORM";
- key.color = "grey10";
- left = 8;
- top = 35;
- row {
- top = 1;
- keys { { <AE01>, shape="NORM_1" }, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, shape="WIDER", color="grey30" }
- };
- };
- row {
- top = 20;
- keys { { <TAB>, shape="NARR", color="grey30" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <AD13>, shape="NARR" }
- };
- };
- row {
- top = 39;
- keys { { <CAPS>, color="grey30" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, shape="WIDEST", color="grey30" }
- };
- };
- row {
- top = 58;
- keys { { <LFSH>, shape="WIDEST", color="grey30" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, shape="WIDER", color="grey30" }
- };
- };
- row {
- left = 57;
- top = 77;
- keys { <AE00>, <LSGT> };
- };
- }; // End of "Alpha" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-}; // End of "pc86" geometry
-
-xkb_geometry "kr106" {
-
- description= "Korean 106";
- width= 470;
- height= 180;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
- shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
- shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
- shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } };
- shape "SPCE" { { [ 75,18] }, { [2,1], [ 73,16] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 22;
- left= 377;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 37;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 382; };
- indicator "Caps Lock" { left= 407; };
- indicator "Scroll Lock" { left= 433; };
- text.top= 25;
- text.color= "black";
- text "NumLockLabel" { left= 378; text="Num\nLock"; };
- text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 22;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "SMOD";
- key.color= "grey20";
- keys { { <LCTL>, "MODK" }, <LWIN>, <LALT>,
- { <K71>, "NORM", color="white" },
- { <SPCE>, "SPCE", color="white" },
- { <K72>, "NORM", color="white" },
- <RALT>, <RWIN>, <MENU>, <RCTL>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "kr106" geometry
-
-// Based on the pc(pc105) layout. The keypad, sysreq/ScrLk/Break, and multimedia
-// keys are not shown because they are shared with other keys via the <FN> key.
-// This should not be a problem if the normal symbols are used, as the keys will
-// show through normally, they just won't show from xkbprint. For the record,
-// <FN>+<PGUP> = AudioRaise,
-// <FN>+<PGDN> = AudioLower,
-// <FN>+<END> = AudioMute,
-// <FN>+<PRSC> = Sysreq,
-// <FN>+<NMLK> = ScrollLock,
-// <FN>+<BREAK> = <PAUS>,
-// <FN>+7 = KP_7,
-// <FN>+8 = KP_8,
-// <FN>+9 = KP_9,
-// <FN>+0 = KP_MUL,
-// <FN>+U = KP_4,
-// <FN>+I = KP_5,
-// <FN>+O = KP_6,
-// <FN>+P = KP_SUB,
-// <FN>+J = KP_1,
-// <FN>+K = KP_2,
-// <FN>+L = KP_3,
-// <FN>+; = KP_ADD,
-// <FN>+M = KP_INS,
-// <FN>+. = KP_DEL,
-// <FN>+/ = KP_DIV.
-// The other FN combinations aren't passed to X, but are handled by BIOS.
-// <FN> and all keys with <FN> level mappings are marked in grey20.
-//
-// David Cameron Staples <staples@cs.mu.oz.au> 2006-05-12
-
-xkb_geometry "latitude" {
-
- description= "Dell Latitude";
- width= 330;
- height= 210;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18 ,18] }, { [2,1 ], [ 16,16] } };
- shape "FUNC" { { [ 16.2,12] }, { [2,0.5], [ 14,10] } };
- shape "ESC" { { [ 18 ,12] }, { [2,0.5], [ 16,10] } };
- shape "BKSP" { { [ 38 ,18] }, { [2,1 ], [ 36,16] } };
- shape "TABK" { { [ 28 ,18] }, { [2,1 ], [ 26,16] } };
- shape "BKSL" { { [ 28 ,18] }, { [2,1 ], [ 26,16] } };
- shape "RTRN" { { [ 42 ,18] }, { [2,1 ], [ 40,16] } };
- shape "CAPS" { { [ 33 ,18] }, { [2,1 ], [ 26,16] } };
- shape "LFSH" { { [ 42 ,18] }, { [2,1 ], [ 40,16] } };
- shape "RTSH" { { [ 52 ,18] }, { [2,1 ], [ 50,16] } };
- shape "SPCE" { { [ 95 ,18] }, { [2,1 ], [ 93,16] } };
- shape "LCTL" { { [ 28 ,14] }, { [2,1 ], [ 26,12] } };
- shape "LALT" { { [ 22 ,14] }, { [2,1 ], [ 20,12] } };
- shape "WIN" { { [ 18 ,14] }, { [2,1 ], [ 16,12] } };
-
- shape "LED" { cornerRadius= 0.5, { [ 1, 3 ] } };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 37;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 138; };
- indicator "Caps Lock" { left= 150; };
- indicator "Scroll Lock" { left= 162; };
- text.top= 33;
- text.color= "black";
- text "NumLockLabel" { left= 140; text="Num\nLock"; };
- text "CapsLockLabel" { left= 152; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 164; text="Scroll\nLock"; };
-
- text "LATITUDE" { left= 19; text="L A T I T U D E"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 32;
- key.shape= "FUNC";
- key.color= "grey20";
- row {
- top= 1;
- left= 163.8;
- keys { { <MENU>, color="white" }, <PRSC>, <NMLK>, <PAUS>,
- { <INS>, 3, color="white" },
- { <HOME>, color="white"}, <PGUP>
- };
- };
- row {
- top= 14;
- keys { { <ESC>, "ESC" },
- { <FK01>, 3 },
- { <FK02>, color="white" }, <FK03>,
- { <FK04>, color="white" },
- { <FK05>, 3 },
- { <FK06>, color="white" }, <FK07>, <FK08>,
- { <FK09>, 3, color="white" }, <FK10>,
- { <FK11>, color="white" },
- { <FK12>, color="white" },
- { <DELE>, 3, color="white" }, <END>, <PGDN>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 60;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>,
- { <AE07>, color="grey20" },
- { <AE08>, color="grey20" },
- { <AE09>, color="grey20" },
- { <AE10>, color="grey20" }, <AE11>, <AE12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>,
- { <AD07>, color="grey20" },
- { <AD08>, color="grey20" },
- { <AD09>, color="grey20" },
- { <AD10>, color="grey20" },
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>,
- { <AC07>, color="grey20" },
- { <AC08>, color="grey20" },
- { <AC09>, color="grey20" },
- { <AC10>, color="grey20" },
- <AC11>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>,
- { <AB07>, color="grey20" }, <AB08>,
- { <AB09>, color="grey20" },
- { <AB10>, color="grey20" },
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- key.shape= "WIN";
- keys { { <LCTL>, "LCTL" },
- { <FN>, color="grey20" },
- <LWIN>,
- { <LALT>, "LALT" },
- { <SPCE>, "SPCE" },
- <RALT>,
- { <RCTL>, "LALT" }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 136;
- left= 250;
- key.shape= "FUNC";
- key.color= "grey20";
- row {
- top= 1;
- left= 18.2;
- keys { <UP> };
- };
- row {
- top= 14;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "latitude" geometry
-
-xkb_geometry "pc104alt" {
-
- description= "Generic 104 with L-shaped Enter and small Backspace with Backslash left to it";
- width= 470;
- height= 210;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
- shape "BKSP" { { [ 19,18] }, { [2,1], [ 17,16] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
-// shape "RTRN" { { [ 0,19 ], [ 0,37 ], [ 42,37 ], [ 42,0 ], [ 14,0 ], [ 14,19 ] },
-// { [ 2,20 ], [ 2,35 ], [ 40,35 ], [ 40,1 ], [ 16,1 ], [ 16,20 ] },
-// approx = { [ 17,21 ], [ 39,34 ] }
-// };
- shape "RTRN" { { [ -14,19 ], [ -14,37 ], [ 28,37 ], [ 28,0 ], [ 0,0 ], [ 0,19 ] },
- { [ -12,20 ], [ -12,35 ], [ 26,35 ], [ 26,1 ], [ 2,1 ], [ 2,20 ] },
- approx = { [ 3,21 ], [ 25,34 ] }
- };
- shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
- shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
- shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
- shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } };
- shape "SPCE" { { [113,18] }, { [2,1], [111,16] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
-
- shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 52;
- left= 377;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 67;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 382; };
- indicator "Caps Lock" { left= 407; };
- indicator "Scroll Lock" { left= 433; };
- text.top= 55;
- text.color= "black";
- text "NumLockLabel" { left= 378; text="Num\nLock"; };
- text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 52;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 91;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, <BKSL>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
-// <AD11>, <AD12>, { <RTRN>, -13, "RTRN", color="grey20" }
- <AD11>, <AD12>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "SMOD";
- key.color= "grey20";
- keys { { <LCTL>, "MODK" }, <LWIN>, <LALT>,
- { <SPCE>, "SPCE", color="white" },
- <RALT>, <RWIN>, <MENU>, <RCTL>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 91;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 91;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "pc104" geometry
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+
+default xkb_geometry "pc101" {
+
+ description= "Generic 101";
+ width= 470;
+ height= 180;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
+ shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
+ shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
+ shape "SPCE" { { [133,18] }, { [2,1], [131,16] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 22;
+ left= 377;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 37;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 382; };
+ indicator "Caps Lock" { left= 407; };
+ indicator "Scroll Lock" { left= 433; };
+ text.top= 25;
+ text.color= "black";
+ text "NumLockLabel" { left= 378; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 22;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 21 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>, { <RCTL>, 21 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "default" geometry
+
+xkb_geometry "pc102" {
+
+ description= "Generic 102";
+ width= 470;
+ height= 180;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
+ shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "RTRN" {
+ { [0,0], [28,0], [28,37], [5,37], [5,18], [0,18] },
+ { [2,1], [26,1], [26,35], [7,35], [7,16], [2,16] } };
+ shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
+ shape "LFSH" { { [ 25,18] }, { [2,1], [ 23,16] } };
+ shape "RTSH" { { [ 50,18] }, { [2,1], [ 48,16] } };
+ shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
+ shape "SPCE" { { [134,18] }, { [2,1], [132,16] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 22;
+ left= 377;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 37;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 382; };
+ indicator "Caps Lock" { left= 407; };
+ indicator "Scroll Lock" { left= 433; };
+ text.top= 25;
+ text.color= "black";
+ text "NumLockLabel" { left= 378; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 22;
+ row {
+ top= 1;
+ keys { { <ESC>, "TABK", color="grey20" },
+ { <FK01>, 10 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>, { <RCTL>, 21 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "pc102" geometry
+
+xkb_geometry "pc104" {
+
+ description= "Generic 104";
+ width= 470;
+ height= 180;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
+ shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
+ shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
+ shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } };
+ shape "SPCE" { { [113,18] }, { [2,1], [111,16] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 22;
+ left= 377;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 37;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 382; };
+ indicator "Caps Lock" { left= 407; };
+ indicator "Scroll Lock" { left= 433; };
+ text.top= 25;
+ text.color= "black";
+ text "NumLockLabel" { left= 378; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 22;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "SMOD";
+ key.color= "grey20";
+ keys { { <LCTL>, "MODK" }, <LWIN>, <LALT>,
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>, <RWIN>, <MENU>, <RCTL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "pc104" geometry
+
+xkb_geometry "pc105" {
+
+ description= "Generic 105";
+ width= 470;
+ height= 180;
+
+ shape.cornerRadius= 1;
+
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
+ shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "RTRN" {
+ { [0,0], [28,0], [28,37], [5,37], [5,18], [0,18] } ,
+ { [2,1], [26,1], [26,35], [7,35], [7,16], [2,16] } ,
+ approx = { [5,0], [28,37] } };
+ shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
+ shape "LFSH" { { [ 25,18] }, { [2,1], [ 23,16] } };
+ shape "RTSH" { { [ 50,18] }, { [2,1], [ 48,16] } };
+ shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
+ shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } };
+ shape "SPCE" { { [113,18] }, { [2,1], [111,16] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 22;
+ left= 377;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 37;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 382; };
+ indicator "Caps Lock" { left= 407; };
+ indicator "Scroll Lock" { left= 433; };
+ text.top= 25;
+ text.color= "black";
+ text "NumLockLabel" { left= 378; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 22;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "SMOD";
+ key.color= "grey20";
+ keys { { <LCTL>, "MODK" }, <LWIN>, <LALT>,
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>, <RWIN>, <MENU>, <RCTL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "pc105" geometry
+
+
+// Added for japanese 106 keyboard
+// by tsuka@kawalab.dnj.ynu.ac.jp .
+xkb_geometry "jp106" {
+
+ description= "Japanese 106";
+ width= 470;
+ height= 180;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "RTRN" {
+ { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } ,
+ { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 25;
+ left= 375;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 40;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 379; };
+ indicator "Caps Lock" { left= 404; };
+ indicator "Scroll Lock" { left= 429; };
+ text.top= 28;
+ text.color= "black";
+ text "NumLockLabel" { left= 378; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 25;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 ,color="grey20"}, {<FK06>,color="grey20"},
+ { <FK07>, color="grey20"}, {<FK08>,color="grey20"},
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { {<HZTG>,color="grey20"}, <AE01>, <AE02>,
+ <AE03>, <AE04>, <AE05>, <AE06>, <AE07>,
+ <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <AE13>, { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, 1 ,"RTRN",color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },<NFER>,
+ { <SPCE>, "SPCE", color="white" },
+ <XFER>,<HKTG>,<RALT>, { <RCTL>, 17 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 310;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 375;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "jp106" geometry
+
+// Added for brazilian ABNT2 by Ricardo Y. Igarashi(iga@that.com.br)
+xkb_geometry "abnt2" {
+ include "pc(pc105)"
+
+ description= "Brazilian ABNT2";
+
+ shape "RTRN" {
+ { [0,0],[ 28,0],[28,37],[4,37],[4,18],[0,18] } ,
+ { [2,1],[ 26,1],[26,36],[5,36],[5,18],[2,18] } };
+ shape "RTSH" { { [ 31,18] }, { [2,1], [ 29,16] } };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <LSGT>, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Keypad" {
+ top= 61;
+ left= 376;
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, { <KPPT>, color="grey20" } };
+ };
+ }; // End of "Keypad" section
+
+}; // End of "abnt2" geometry
+
+
+// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
+
+xkb_geometry "pc86" {
+ description = "Noname keyboard with 86 keys, DE";
+ width = 287;
+ height = 143;
+ baseColor = "grey20";
+
+ shape "EDGE" { cornerRadius = 2, { [287, 143] } };
+ shape "LED" { cornerRadius = 2, { [3, 3] } };
+ shape "LEDS" { cornerRadius = 0, { [75, 5] } };
+ shape "KEYS" { cornerRadius = 0, { [271, 109] } };
+
+ outline "Edges" {
+ top = 0;
+ left = 0;
+ shape = "EDGE";
+ color = "black";
+ };
+
+ solid "KeyPanel" {
+ shape = "KEYS";
+ left = 8;
+ top = 22;
+ color = "grey70";
+ };
+
+ solid "LedPanel" {
+ shape = "LEDS";
+ left = 212;
+ top = 10;
+ color = "black";
+ };
+
+ indicator.onColor = "green";
+ indicator.offColor = "green30";
+ indicator.top = 11;
+ indicator.shape = "LED";
+ indicator "Num Lock" { left = 212 + 7; };
+ indicator "Caps Lock" { left = 212 + 23; };
+ indicator "Scroll Lock" { left = 212 + 39; };
+ text.fontSize = 6;
+ text.top = 10;
+ text.color = "white";
+ text "NumLockLabel" { left = 212 + 7 + 5; text = "Num\nLock"; };
+ text "CapsLockLabel" { left = 212 + 23 + 5; text = "Caps\nLock"; };
+ text "ScrollLockLabel" { left = 212 + 39 + 5; text = "Scroll\nLock"; };
+
+ shape.cornerRadius = 1;
+ shape "SMALL" { { [15, 12] }, { [1.5, 0], [13.5, 10] } };
+ shape "NARR" { { [13, 18] }, { [1.5, 0], [11.5, 14] } };
+ shape "NORM" { { [18, 18] }, { [3, 0], [15, 14] } };
+ shape "NORM_1" { { [22, 18] }, { [4, 0], [22, 18] },
+ { [7, 0], [19, 14] } };
+ shape "WIDER" { { [23, 18] }, { [3, 0], [20, 14] } };
+ shape "WIDEST" { { [27, 18] }, { [3, 0], [24, 14] } };
+ shape "SPCE" { { [75, 18] }, { [3, 0], [72, 14] } };
+
+ section "Function" {
+ key.shape = "SMALL";
+ key.gap = 0.99;
+ key.color = "grey30";
+ left = 8;
+ top = 22;
+ row {
+ top = 1;
+ keys { <ESC>,
+ <FK01>, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <NMLK>, <PRSC>, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Control" {
+ key.shape = "NORM";
+ key.gap = 1;
+ key.color = "grey30";
+ left = 8;
+ top = 111;
+ row {
+ top = 1;
+ keys { <LCTL>, <FN>, <LALT>,
+ { <SPCE>, shape="SPCE", 39 }, <RALT>,
+ <INS>, <DELE>
+ };
+ };
+ }; // End of "Control" section
+
+ section "Editing" {
+ key.shape = "NARR";
+ key.gap = 1;
+ key.color = "grey30";
+ left = 265;
+ top = 34;
+ row.vertical = True;
+ row {
+ top = 1;
+ keys { <HOME>, <PGUP>, <PGDN>, <END> };
+ };
+ }; // End of "Editing" section
+
+ section "Navigation" {
+ key.gap = 1;
+ key.shape = "NARR";
+ key.color = "grey30";
+ left = 236;
+ top = 92;
+ row {
+ left = 14;
+ top = 1;
+ keys { <UP> };
+ };
+ row {
+ top = 20;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Navigation" section
+
+ section "Alpha" {
+ key.gap = 1;
+ key.shape = "NORM";
+ key.color = "grey10";
+ left = 8;
+ top = 35;
+ row {
+ top = 1;
+ keys { { <AE01>, shape="NORM_1" }, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, shape="WIDER", color="grey30" }
+ };
+ };
+ row {
+ top = 20;
+ keys { { <TAB>, shape="NARR", color="grey30" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <AD13>, shape="NARR" }
+ };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, color="grey30" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, shape="WIDEST", color="grey30" }
+ };
+ };
+ row {
+ top = 58;
+ keys { { <LFSH>, shape="WIDEST", color="grey30" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, shape="WIDER", color="grey30" }
+ };
+ };
+ row {
+ left = 57;
+ top = 77;
+ keys { <AE00>, <LSGT> };
+ };
+ }; // End of "Alpha" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+}; // End of "pc86" geometry
+
+xkb_geometry "kr106" {
+
+ description= "Korean 106";
+ width= 470;
+ height= 180;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
+ shape "BKSP" { { [ 38,18] }, { [2,1], [ 36,16] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [ 26,16] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
+ shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
+ shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } };
+ shape "SPCE" { { [ 75,18] }, { [2,1], [ 73,16] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 22;
+ left= 377;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 37;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 382; };
+ indicator "Caps Lock" { left= 407; };
+ indicator "Scroll Lock" { left= 433; };
+ text.top= 25;
+ text.color= "black";
+ text "NumLockLabel" { left= 378; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 22;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "SMOD";
+ key.color= "grey20";
+ keys { { <LCTL>, "MODK" }, <LWIN>, <LALT>,
+ { <K71>, "NORM", color="white" },
+ { <SPCE>, "SPCE", color="white" },
+ { <K72>, "NORM", color="white" },
+ <RALT>, <RWIN>, <MENU>, <RCTL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "kr106" geometry
+
+// Based on the pc(pc105) layout. The keypad, sysreq/ScrLk/Break, and multimedia
+// keys are not shown because they are shared with other keys via the <FN> key.
+// This should not be a problem if the normal symbols are used, as the keys will
+// show through normally, they just won't show from xkbprint. For the record,
+// <FN>+<PGUP> = AudioRaise,
+// <FN>+<PGDN> = AudioLower,
+// <FN>+<END> = AudioMute,
+// <FN>+<PRSC> = Sysreq,
+// <FN>+<NMLK> = ScrollLock,
+// <FN>+<BREAK> = <PAUS>,
+// <FN>+7 = KP_7,
+// <FN>+8 = KP_8,
+// <FN>+9 = KP_9,
+// <FN>+0 = KP_MUL,
+// <FN>+U = KP_4,
+// <FN>+I = KP_5,
+// <FN>+O = KP_6,
+// <FN>+P = KP_SUB,
+// <FN>+J = KP_1,
+// <FN>+K = KP_2,
+// <FN>+L = KP_3,
+// <FN>+; = KP_ADD,
+// <FN>+M = KP_INS,
+// <FN>+. = KP_DEL,
+// <FN>+/ = KP_DIV.
+// The other FN combinations aren't passed to X, but are handled by BIOS.
+// <FN> and all keys with <FN> level mappings are marked in grey20.
+//
+// David Cameron Staples <staples@cs.mu.oz.au> 2006-05-12
+
+xkb_geometry "latitude" {
+
+ description= "Dell Latitude";
+ width= 330;
+ height= 210;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18 ,18] }, { [2,1 ], [ 16,16] } };
+ shape "FUNC" { { [ 16.2,12] }, { [2,0.5], [ 14,10] } };
+ shape "ESC" { { [ 18 ,12] }, { [2,0.5], [ 16,10] } };
+ shape "BKSP" { { [ 38 ,18] }, { [2,1 ], [ 36,16] } };
+ shape "TABK" { { [ 28 ,18] }, { [2,1 ], [ 26,16] } };
+ shape "BKSL" { { [ 28 ,18] }, { [2,1 ], [ 26,16] } };
+ shape "RTRN" { { [ 42 ,18] }, { [2,1 ], [ 40,16] } };
+ shape "CAPS" { { [ 33 ,18] }, { [2,1 ], [ 26,16] } };
+ shape "LFSH" { { [ 42 ,18] }, { [2,1 ], [ 40,16] } };
+ shape "RTSH" { { [ 52 ,18] }, { [2,1 ], [ 50,16] } };
+ shape "SPCE" { { [ 95 ,18] }, { [2,1 ], [ 93,16] } };
+ shape "LCTL" { { [ 28 ,14] }, { [2,1 ], [ 26,12] } };
+ shape "LALT" { { [ 22 ,14] }, { [2,1 ], [ 20,12] } };
+ shape "WIN" { { [ 18 ,14] }, { [2,1 ], [ 16,12] } };
+
+ shape "LED" { cornerRadius= 0.5, { [ 1, 3 ] } };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 37;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 138; };
+ indicator "Caps Lock" { left= 150; };
+ indicator "Scroll Lock" { left= 162; };
+ text.top= 33;
+ text.color= "black";
+ text "NumLockLabel" { left= 140; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 152; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 164; text="Scroll\nLock"; };
+
+ text "LATITUDE" { left= 19; text="L A T I T U D E"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 32;
+ key.shape= "FUNC";
+ key.color= "grey20";
+ row {
+ top= 1;
+ left= 163.8;
+ keys { { <MENU>, color="white" }, <PRSC>, <NMLK>, <PAUS>,
+ { <INS>, 3, color="white" },
+ { <HOME>, color="white"}, <PGUP>
+ };
+ };
+ row {
+ top= 14;
+ keys { { <ESC>, "ESC" },
+ { <FK01>, 3 },
+ { <FK02>, color="white" }, <FK03>,
+ { <FK04>, color="white" },
+ { <FK05>, 3 },
+ { <FK06>, color="white" }, <FK07>, <FK08>,
+ { <FK09>, 3, color="white" }, <FK10>,
+ { <FK11>, color="white" },
+ { <FK12>, color="white" },
+ { <DELE>, 3, color="white" }, <END>, <PGDN>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 60;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>,
+ { <AE07>, color="grey20" },
+ { <AE08>, color="grey20" },
+ { <AE09>, color="grey20" },
+ { <AE10>, color="grey20" }, <AE11>, <AE12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>,
+ { <AD07>, color="grey20" },
+ { <AD08>, color="grey20" },
+ { <AD09>, color="grey20" },
+ { <AD10>, color="grey20" },
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>,
+ { <AC07>, color="grey20" },
+ { <AC08>, color="grey20" },
+ { <AC09>, color="grey20" },
+ { <AC10>, color="grey20" },
+ <AC11>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>,
+ { <AB07>, color="grey20" }, <AB08>,
+ { <AB09>, color="grey20" },
+ { <AB10>, color="grey20" },
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "WIN";
+ keys { { <LCTL>, "LCTL" },
+ { <FN>, color="grey20" },
+ <LWIN>,
+ { <LALT>, "LALT" },
+ { <SPCE>, "SPCE" },
+ <RALT>,
+ { <RCTL>, "LALT" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 136;
+ left= 250;
+ key.shape= "FUNC";
+ key.color= "grey20";
+ row {
+ top= 1;
+ left= 18.2;
+ keys { <UP> };
+ };
+ row {
+ top= 14;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "latitude" geometry
+
+xkb_geometry "pc104alt" {
+
+ description= "Generic 104 with L-shaped Enter and small Backspace with Backslash left to it";
+ width= 470;
+ height= 210;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,16] } };
+ shape "BKSP" { { [ 19,18] }, { [2,1], [ 17,16] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,16] } };
+// shape "RTRN" { { [ 0,19 ], [ 0,37 ], [ 42,37 ], [ 42,0 ], [ 14,0 ], [ 14,19 ] },
+// { [ 2,20 ], [ 2,35 ], [ 40,35 ], [ 40,1 ], [ 16,1 ], [ 16,20 ] },
+// approx = { [ 17,21 ], [ 39,34 ] }
+// };
+ shape "RTRN" { { [ -14,19 ], [ -14,37 ], [ 28,37 ], [ 28,0 ], [ 0,0 ], [ 0,19 ] },
+ { [ -12,20 ], [ -12,35 ], [ 26,35 ], [ 26,1 ], [ 2,1 ], [ 2,20 ] },
+ approx = { [ 3,21 ], [ 25,34 ] }
+ };
+ shape "CAPS" { { [ 33,18] }, { [2,1], [ 31,16] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,16] } };
+ shape "RTSH" { { [ 52,18] }, { [2,1], [ 50,16] } };
+ shape "MODK" { { [ 27,18] }, { [2,1], [ 25,16] } };
+ shape "SMOD" { { [ 23,18] }, { [2,1], [ 21,16] } };
+ shape "SPCE" { { [113,18] }, { [2,1], [111,16] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,16] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,35] } };
+
+ shape "LEDS" { cornerRadius= 0, { [ 75 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 52;
+ left= 377;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 67;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 382; };
+ indicator "Caps Lock" { left= 407; };
+ indicator "Scroll Lock" { left= 433; };
+ text.top= 55;
+ text.color= "black";
+ text "NumLockLabel" { left= 378; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 403; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 428; text="Scroll\nLock"; };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 52;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 20 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 91;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, <BKSL>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+// <AD11>, <AD12>, { <RTRN>, -13, "RTRN", color="grey20" }
+ <AD11>, <AD12>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "SMOD";
+ key.color= "grey20";
+ keys { { <LCTL>, "MODK" }, <LWIN>, <LALT>,
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>, <RWIN>, <MENU>, <RCTL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 91;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 91;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "pc104" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/sanwa b/xorg-server/xkeyboard-config/geometry/sanwa
index af134d725..350dbd160 100644
--- a/xorg-server/xkeyboard-config/geometry/sanwa
+++ b/xorg-server/xkeyboard-config/geometry/sanwa
@@ -1,150 +1,150 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-default xkb_geometry "sanwaskbkg3" {
-
- description= "Sanwa Supply SKB-KG3";
- // SKB-KG3BK (black)
- // http://www.sanwa.co.jp/product/syohin.asp?code=SKB-KG3BK
- // http://www.sanwa.co.jp/zooma/keybord/SKB-KG3BK/
- // SKB-KG3W (white)
- // http://www.sanwa.co.jp/product/syohin.asp?code=SKB-KG3W
- // http://www.sanwa.co.jp/zooma/keybord/SKB-KG3SW/
- // SKB-KG3SV (silver)
- // http://www.sanwa.co.jp/product/syohin.asp?code=SKB-KG3SV
- // http://www.sanwa.co.jp/zooma/keybord/SKB-KG3SV/
-
- width= 304;
- height= 127;
-
- shape.cornerRadius= 1;
- shape "TOP" { { [15.25,13] }, { [2,2], [13.25,11] } };
- shape "NORM" { { [17,16] }, { [2,2], [15,14] } };
- shape "TBBK" { { [24.5,16] }, { [2,2], [22.5,14] } };
- shape "RTRN" { { [0,0], [36,0], [36,34], [8.5,34], [8.5,16], [0,16] },
- { [2,2], [34,2], [34,32], [10.5,32], [10.5,14], [2,14] } };
- shape "CAPS" { { [33,16] }, { [28,16] }, { [2,2], [26,14] } };
- shape "LFSH" { { [41,16] }, { [2,2], [39,14] } };
- shape "CTSH" { { [19.5,16] }, { [2,2], [17.5,14] } };
- shape "SPCE" { { [57.5,16] }, { [2,2], [55.5,14] } };
-
- shape "LED" { cornerRadius= 0, { [5,1] } };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 3;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 247; };
- indicator "Caps Lock" { left= 266; };
- indicator "Scroll Lock" { left= 285; };
- text.color= "black";
- text.top= 1;
- text "Vendor1" { left= 10; text="SANWA"; };
- text.top= 4.5;
- text "Vendor2" { left= 10; text="SUPPLY"; };
- text "NumLockLabel" { left= 241; text="Num Lock"; };
- text "CapsLockLabel" { left= 260; text="Caps Lock"; };
- text "ScrollLockLabel" { left= 279; text="Scroll Lock"; };
-
- section.left= 3;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 2;
- section "Function" {
- key.shape= "TOP";
- top= 10;
- row {
- top= 1;
- keys { <ESC>, <FK01>, <FK02>, <FK03>, <FK04>, <FK05>, <FK06>,
- <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12>, <PRSC>,
- {<NMLK>, color="grey20"}, <PAUS>, {<DELE>, color="grey20"}
- };
- };
- overlay "SCLK" {
- <NMLK>=<SCLK>
- };
- overlay "FN" {
- <DELE>=<INS>
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 24;
- row {
- top= 2;
- keys { <HZTG>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- {<AE07>, color="grey20"}, {<AE08>, color="grey20"},
- {<AE09>, color="grey20"}, {<AE10>, color="grey20"},
- <AE11>, <AE12>, <AE13>, { <BKSP>, "TBBK" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TBBK" }, <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, {<AD07>, color="grey20"}, {<AD08>, color="grey20"},
- {<AD09>, color="grey20"}, {<AD10>, color="grey20"}, <AD11>,
- <AD12>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 38;
- keys { { <CAPS>, "CAPS" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, {<AC07>, color="grey20"}, {<AC08>, color="grey20"},
- {<AC09>, color="grey20"}, {<AC10>, color="grey20"}, <AC11>,
- <AC12>
- };
- };
- row {
- top= 56;
- keys { { <LFSH>, "LFSH" }, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, {<AB07>, color="grey20"}, <AB08>,
- {<AB09>, color="grey20"}, {<AB10>, color="grey20"}, <AB11>,
- {<UP>, color="grey20"}, {<RTSH>, key.shape= "CTSH" }
- };
- };
- row {
- top= 74;
- keys { { <LCTL>, key.shape= "CTSH" }, {<FN>, color="grey20"},
- <LWIN>, <LALT>, <NFER>, {<SPCE>, "SPCE" }, <XFER>, <HKTG>,
- <RALT>, <MENU>, {<LEFT>, color="grey20"},
- {<DOWN>, color="grey20"},
- {<RGHT>, key.shape= "CTSH", color="grey20"}
- };
- };
- overlay "SCLK" {
- <AE07>=<KO7>, <AE08>=<KO8>, <AE09>=<KO9>, <AE10>=<KOMU>,
- <AD07>=<KO4>, <AD08>=<KO5>, <AD09>=<KO6>, <AD10>=<KOSU>,
- <AC07>=<KO1>, <AC08>=<KO2>, <AC09>=<KO3>, <AC10>=<KOAD>,
- <AB07>=<KO0>, <AB09>=<KODL>, <AB10>=<KODV>
- };
- overlay "FN" {
- <UP>=<PGUP>, <LEFT>=<HOME>, <DOWN>=<PGDN>, <RGHT>=<END>
- };
- }; // End of "Alpha" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "default" geometry
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+default xkb_geometry "sanwaskbkg3" {
+
+ description= "Sanwa Supply SKB-KG3";
+ // SKB-KG3BK (black)
+ // http://www.sanwa.co.jp/product/syohin.asp?code=SKB-KG3BK
+ // http://www.sanwa.co.jp/zooma/keybord/SKB-KG3BK/
+ // SKB-KG3W (white)
+ // http://www.sanwa.co.jp/product/syohin.asp?code=SKB-KG3W
+ // http://www.sanwa.co.jp/zooma/keybord/SKB-KG3SW/
+ // SKB-KG3SV (silver)
+ // http://www.sanwa.co.jp/product/syohin.asp?code=SKB-KG3SV
+ // http://www.sanwa.co.jp/zooma/keybord/SKB-KG3SV/
+
+ width= 304;
+ height= 127;
+
+ shape.cornerRadius= 1;
+ shape "TOP" { { [15.25,13] }, { [2,2], [13.25,11] } };
+ shape "NORM" { { [17,16] }, { [2,2], [15,14] } };
+ shape "TBBK" { { [24.5,16] }, { [2,2], [22.5,14] } };
+ shape "RTRN" { { [0,0], [36,0], [36,34], [8.5,34], [8.5,16], [0,16] },
+ { [2,2], [34,2], [34,32], [10.5,32], [10.5,14], [2,14] } };
+ shape "CAPS" { { [33,16] }, { [28,16] }, { [2,2], [26,14] } };
+ shape "LFSH" { { [41,16] }, { [2,2], [39,14] } };
+ shape "CTSH" { { [19.5,16] }, { [2,2], [17.5,14] } };
+ shape "SPCE" { { [57.5,16] }, { [2,2], [55.5,14] } };
+
+ shape "LED" { cornerRadius= 0, { [5,1] } };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 3;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 247; };
+ indicator "Caps Lock" { left= 266; };
+ indicator "Scroll Lock" { left= 285; };
+ text.color= "black";
+ text.top= 1;
+ text "Vendor1" { left= 10; text="SANWA"; };
+ text.top= 4.5;
+ text "Vendor2" { left= 10; text="SUPPLY"; };
+ text "NumLockLabel" { left= 241; text="Num Lock"; };
+ text "CapsLockLabel" { left= 260; text="Caps Lock"; };
+ text "ScrollLockLabel" { left= 279; text="Scroll Lock"; };
+
+ section.left= 3;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 2;
+ section "Function" {
+ key.shape= "TOP";
+ top= 10;
+ row {
+ top= 1;
+ keys { <ESC>, <FK01>, <FK02>, <FK03>, <FK04>, <FK05>, <FK06>,
+ <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12>, <PRSC>,
+ {<NMLK>, color="grey20"}, <PAUS>, {<DELE>, color="grey20"}
+ };
+ };
+ overlay "SCLK" {
+ <NMLK>=<SCLK>
+ };
+ overlay "FN" {
+ <DELE>=<INS>
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 24;
+ row {
+ top= 2;
+ keys { <HZTG>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ {<AE07>, color="grey20"}, {<AE08>, color="grey20"},
+ {<AE09>, color="grey20"}, {<AE10>, color="grey20"},
+ <AE11>, <AE12>, <AE13>, { <BKSP>, "TBBK" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TBBK" }, <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, {<AD07>, color="grey20"}, {<AD08>, color="grey20"},
+ {<AD09>, color="grey20"}, {<AD10>, color="grey20"}, <AD11>,
+ <AD12>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 38;
+ keys { { <CAPS>, "CAPS" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, {<AC07>, color="grey20"}, {<AC08>, color="grey20"},
+ {<AC09>, color="grey20"}, {<AC10>, color="grey20"}, <AC11>,
+ <AC12>
+ };
+ };
+ row {
+ top= 56;
+ keys { { <LFSH>, "LFSH" }, <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, {<AB07>, color="grey20"}, <AB08>,
+ {<AB09>, color="grey20"}, {<AB10>, color="grey20"}, <AB11>,
+ {<UP>, color="grey20"}, {<RTSH>, key.shape= "CTSH" }
+ };
+ };
+ row {
+ top= 74;
+ keys { { <LCTL>, key.shape= "CTSH" }, {<FN>, color="grey20"},
+ <LWIN>, <LALT>, <NFER>, {<SPCE>, "SPCE" }, <XFER>, <HKTG>,
+ <RALT>, <MENU>, {<LEFT>, color="grey20"},
+ {<DOWN>, color="grey20"},
+ {<RGHT>, key.shape= "CTSH", color="grey20"}
+ };
+ };
+ overlay "SCLK" {
+ <AE07>=<KO7>, <AE08>=<KO8>, <AE09>=<KO9>, <AE10>=<KOMU>,
+ <AD07>=<KO4>, <AD08>=<KO5>, <AD09>=<KO6>, <AD10>=<KOSU>,
+ <AC07>=<KO1>, <AC08>=<KO2>, <AC09>=<KO3>, <AC10>=<KOAD>,
+ <AB07>=<KO0>, <AB09>=<KODL>, <AB10>=<KODV>
+ };
+ overlay "FN" {
+ <UP>=<PGUP>, <LEFT>=<HOME>, <DOWN>=<PGDN>, <RGHT>=<END>
+ };
+ }; // End of "Alpha" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "default" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/sgi_vndr/Makefile.am b/xorg-server/xkeyboard-config/geometry/sgi_vndr/Makefile.am
index 5c76e4b4c..11911db3c 100644
--- a/xorg-server/xkeyboard-config/geometry/sgi_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/geometry/sgi_vndr/Makefile.am
@@ -1,4 +1,4 @@
-geomdir = $(xkb_base)/geometry/sgi_vndr
-
-dist_geom_DATA = \
-indigo indy O2
+geomdir = $(xkb_base)/geometry/sgi_vndr
+
+dist_geom_DATA = \
+indigo indy O2
diff --git a/xorg-server/xkeyboard-config/geometry/sgi_vndr/O2 b/xorg-server/xkeyboard-config/geometry/sgi_vndr/O2
index afaed76f2..8bd177970 100644
--- a/xorg-server/xkeyboard-config/geometry/sgi_vndr/O2
+++ b/xorg-server/xkeyboard-config/geometry/sgi_vndr/O2
@@ -1,614 +1,614 @@
-//
-// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
-//
-// 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 of Silicon Graphics not be
-// used in advertising or publicity pertaining to distribution
-// of the software without specific prior written permission.
-// Silicon Graphics makes no representation about the suitability
-// of this software for any purpose. It is provided "as is"
-// without any express or implied warranty.
-//
-// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-// GRAPHICS 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.
-//
-default xkb_geometry "pc101" {
-
- // This is an approximate layout for a 101-key (US/ASCII) SGI
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "101-key keyboard for Silicon Graphics O2";
-
- width= 448;
- height= 162;
-
- shape "EDGE" {
- cornerRadius= 2,
- { [ 15, 0 ], [ 433, 0 ], [ 433, 10 ], [ 448, 10 ],
- [ 448, 162 ], [ 0, 162 ], [ 0, 10 ], [ 15, 10 ] }
- };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
- shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
- shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
- shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 12,12] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 6;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 25;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },
- { <SPCE>, "SPCE",color="white" },
- <RALT>, { <RCTL>, 20 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 25;
- left= 299;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 3, 1.5] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 25;
- left= 364;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 40.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 372; };
- indicator "Caps Lock" { left= 397; };
- indicator "Scro llLock" { left= 422; };
-
- text.font= "helvetica";
- text.weight= "bold";
- text.slant= "r";
- text.fontWidth= "normal";
- text.fontSize= 12;
- text.top= 39.5;
- text.color= "black";
- text "NumLockLabel" { left= 376.5; text="1"; };
- text "CapsLockLabel" { left= 401.5; text="A"; };
- text "ScrollLockLabel" { left= 426.5; text="S"; };
-
- logo "SGILogoImage" {
- top= 26.5;
- left= 396;
- name= "SGI";
- shape= "LOGO";
- };
- text.font= "helvetica";
- text.weight= "bold";
- text.slant= "o";
- text.fontWidth= "narrow";
- text.fontSize= 18;
- text "SiliconLogoText" {
- top= 27;
- left= 375;
- width= 20;
- text= "Silicon";
- };
- text "GraphicsLogoText" {
- top= 27;
- left= 409;
- width= 20;
- text= "Graphics";
- };
-
- section "Keypad" {
- top= 58;
- left= 363;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-
-xkb_geometry "pc102" {
-
- // This is an approximate layout for 102-key SGI international
- // keyboards. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Silicon Graphics 102-key Keyboard";
- width= 470;
- height= 193;
-
- shape.cornerRadius= 1;
- shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
- shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
- shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [26,37] },
- { [ 0, 0], [26, 0], [26,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [24, 1], [24,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
- shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
- shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 50;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 10}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 83;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color= "grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", color= "grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color= "grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color= "grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>,
- { <LALT>, 19 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>,
- { <RCTL>, 19 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 50;
- left= 308;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 50;
- left= 375;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 64.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 384; };
- indicator "Caps Lock" { left= 409; };
- indicator "Scroll Lock" { left= 434; };
- text.top= 52;
- text.color= "black";
- text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
-
- logo "SGILogoImage" {
- top= 17;
- left= 22;
- name= "SGI";
- shape= "LOGO";
- };
- text "SGILogoText" {
- top= 21;
- left= 40;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- setWidth= "narrow";
- fontSize= 24;
- };
-
- section "Keypad" {
- top= 83;
- left= 374;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-
-xkb_geometry "jp106" {
- description= "Silicon Graphics 106-key Japanese keyboard";
- width= 442;
- height= 167;
-
- shape "EDGE" { cornerRadius= 2, { [ 442, 167 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "RTRN" {
- { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } ,
- { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- logo "SGILogoImage" {
- top= 5;
- left= 6;
- name= "SGI";
- shape= "LOGO";
- };
-
- text "SGILogoText" {
- top= 9;
- left= 25;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- fontWidth= "narrow";
- fontSize= 24;
- };
-
- shape "LEDS" { cornerRadius= 0.1, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 25;
- left= 362;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 40;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 366; };
- indicator "Caps Lock" { left= 391; };
- indicator "Scroll Lock" { left= 416; };
- text.top= 28;
- text.color= "black";
- text "NumLockLabel" { left= 366; text="Num\nLock"; };
- text "CapsLockLabel" { left= 391; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 416; text="Scroll\nLock"; };
-
- section.left= 5;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 25;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 ,color="grey20"}, {<FK06>,color="grey20"},
- { <FK07>, color="grey20"}, {<FK08>,color="grey20"},
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { {<HZTG>,color="grey20"}, <AE01>, <AE02>,
- <AE03>, <AE04>, <AE05>, <AE06>, <AE07>,
- <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <AE13>, { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, 1 ,"RTRN",color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },<NFER>,
- { <SPCE>, "SPCE", color="white" },
- <XFER>,<HKTG>,<RALT>, { <RCTL>, 17 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 296;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 361;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "jp106" geometry
+//
+// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
+//
+// 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 of Silicon Graphics not be
+// used in advertising or publicity pertaining to distribution
+// of the software without specific prior written permission.
+// Silicon Graphics makes no representation about the suitability
+// of this software for any purpose. It is provided "as is"
+// without any express or implied warranty.
+//
+// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+// GRAPHICS 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.
+//
+default xkb_geometry "pc101" {
+
+ // This is an approximate layout for a 101-key (US/ASCII) SGI
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "101-key keyboard for Silicon Graphics O2";
+
+ width= 448;
+ height= 162;
+
+ shape "EDGE" {
+ cornerRadius= 2,
+ { [ 15, 0 ], [ 433, 0 ], [ 433, 10 ], [ 448, 10 ],
+ [ 448, 162 ], [ 0, 162 ], [ 0, 10 ], [ 15, 10 ] }
+ };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
+ shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
+ shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
+ shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 12,12] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 6;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 25;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },
+ { <SPCE>, "SPCE",color="white" },
+ <RALT>, { <RCTL>, 20 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 25;
+ left= 299;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 3, 1.5] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 25;
+ left= 364;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 40.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 372; };
+ indicator "Caps Lock" { left= 397; };
+ indicator "Scro llLock" { left= 422; };
+
+ text.font= "helvetica";
+ text.weight= "bold";
+ text.slant= "r";
+ text.fontWidth= "normal";
+ text.fontSize= 12;
+ text.top= 39.5;
+ text.color= "black";
+ text "NumLockLabel" { left= 376.5; text="1"; };
+ text "CapsLockLabel" { left= 401.5; text="A"; };
+ text "ScrollLockLabel" { left= 426.5; text="S"; };
+
+ logo "SGILogoImage" {
+ top= 26.5;
+ left= 396;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text.font= "helvetica";
+ text.weight= "bold";
+ text.slant= "o";
+ text.fontWidth= "narrow";
+ text.fontSize= 18;
+ text "SiliconLogoText" {
+ top= 27;
+ left= 375;
+ width= 20;
+ text= "Silicon";
+ };
+ text "GraphicsLogoText" {
+ top= 27;
+ left= 409;
+ width= 20;
+ text= "Graphics";
+ };
+
+ section "Keypad" {
+ top= 58;
+ left= 363;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+
+xkb_geometry "pc102" {
+
+ // This is an approximate layout for 102-key SGI international
+ // keyboards. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Silicon Graphics 102-key Keyboard";
+ width= 470;
+ height= 193;
+
+ shape.cornerRadius= 1;
+ shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
+ shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
+ shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [26,37] },
+ { [ 0, 0], [26, 0], [26,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [24, 1], [24,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
+ shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
+ shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 50;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 10}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 83;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color= "grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", color= "grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color= "grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color= "grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>,
+ { <LALT>, 19 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>,
+ { <RCTL>, 19 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 50;
+ left= 308;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 50;
+ left= 375;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 64.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 384; };
+ indicator "Caps Lock" { left= 409; };
+ indicator "Scroll Lock" { left= 434; };
+ text.top= 52;
+ text.color= "black";
+ text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
+
+ logo "SGILogoImage" {
+ top= 17;
+ left= 22;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text "SGILogoText" {
+ top= 21;
+ left= 40;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ setWidth= "narrow";
+ fontSize= 24;
+ };
+
+ section "Keypad" {
+ top= 83;
+ left= 374;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+
+xkb_geometry "jp106" {
+ description= "Silicon Graphics 106-key Japanese keyboard";
+ width= 442;
+ height= 167;
+
+ shape "EDGE" { cornerRadius= 2, { [ 442, 167 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "RTRN" {
+ { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } ,
+ { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ logo "SGILogoImage" {
+ top= 5;
+ left= 6;
+ name= "SGI";
+ shape= "LOGO";
+ };
+
+ text "SGILogoText" {
+ top= 9;
+ left= 25;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ fontWidth= "narrow";
+ fontSize= 24;
+ };
+
+ shape "LEDS" { cornerRadius= 0.1, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 25;
+ left= 362;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 40;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 366; };
+ indicator "Caps Lock" { left= 391; };
+ indicator "Scroll Lock" { left= 416; };
+ text.top= 28;
+ text.color= "black";
+ text "NumLockLabel" { left= 366; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 391; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 416; text="Scroll\nLock"; };
+
+ section.left= 5;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 25;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 ,color="grey20"}, {<FK06>,color="grey20"},
+ { <FK07>, color="grey20"}, {<FK08>,color="grey20"},
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { {<HZTG>,color="grey20"}, <AE01>, <AE02>,
+ <AE03>, <AE04>, <AE05>, <AE06>, <AE07>,
+ <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <AE13>, { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, 1 ,"RTRN",color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },<NFER>,
+ { <SPCE>, "SPCE", color="white" },
+ <XFER>,<HKTG>,<RALT>, { <RCTL>, 17 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 296;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 361;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "jp106" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/sgi_vndr/indigo b/xorg-server/xkeyboard-config/geometry/sgi_vndr/indigo
index 076109dbe..2c174666b 100644
--- a/xorg-server/xkeyboard-config/geometry/sgi_vndr/indigo
+++ b/xorg-server/xkeyboard-config/geometry/sgi_vndr/indigo
@@ -1,410 +1,410 @@
-//
-// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
-//
-// 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 of Silicon Graphics not be
-// used in advertising or publicity pertaining to distribution
-// of the software without specific prior written permission.
-// Silicon Graphics makes no representation about the suitability
-// of this software for any purpose. It is provided "as is"
-// without any express or implied warranty.
-//
-// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-// GRAPHICS 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.
-//
-default xkb_geometry "pc101" {
-
- // This is an approximate layout for a 101-key (US/ASCII) SGI
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Silicon Graphics 101-key keyboard";
-
- width= 472;
- height= 193;
-
- shape "EDGE" { cornerRadius= 2, { [ 472, 193 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
- shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
- shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
- shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 50;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 83;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },
- { <SPCE>, "SPCE",color="white" },
- <RALT>, { <RCTL>, 20 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 50;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 50;
- left= 377;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 64.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 386; };
- indicator "Caps Lock" { left= 411; };
- indicator "Scroll Lock" { left= 436; };
- text.top= 52;
- text.color= "black";
- text "NumLockLabel" { left= 382.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 407; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 432; text="Scroll\nLock"; };
-
- logo "SGILogoImage" {
- top= 17;
- left= 22;
- name= "SGI";
- shape= "LOGO";
- };
- text "SGILogoText" {
- top= 21;
- left= 40;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- fontWidth= "narrow";
- fontSize= 24;
- };
-
- section "Keypad" {
- top= 83;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-xkb_geometry "pc102" {
-
- // This is an approximate layout for 102-key SGI international
- // keyboards. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Silicon Graphics 102-key Keyboard";
- width= 470;
- height= 193;
-
- shape.cornerRadius= 1;
- shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
- shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
- shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [26,37] },
- { [ 0, 0], [26, 0], [26,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [24, 1], [24,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
- shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
- shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 50;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 10}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 83;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color= "grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", color= "grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color= "grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color= "grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>,
- { <LALT>, 19 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>,
- { <RCTL>, 19 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 50;
- left= 308;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 50;
- left= 375;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 64.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 384; };
- indicator "Caps Lock" { left= 409; };
- indicator "Scroll Lock" { left= 434; };
- text.top= 52;
- text.color= "black";
- text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
-
- logo "SGILogoImage" {
- top= 17;
- left= 22;
- name= "SGI";
- shape= "LOGO";
- };
- text "SGILogoText" {
- top= 21;
- left= 40;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- setWidth= "narrow";
- fontSize= 24;
- };
-
- section "Keypad" {
- top= 83;
- left= 374;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
+//
+// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
+//
+// 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 of Silicon Graphics not be
+// used in advertising or publicity pertaining to distribution
+// of the software without specific prior written permission.
+// Silicon Graphics makes no representation about the suitability
+// of this software for any purpose. It is provided "as is"
+// without any express or implied warranty.
+//
+// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+// GRAPHICS 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.
+//
+default xkb_geometry "pc101" {
+
+ // This is an approximate layout for a 101-key (US/ASCII) SGI
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Silicon Graphics 101-key keyboard";
+
+ width= 472;
+ height= 193;
+
+ shape "EDGE" { cornerRadius= 2, { [ 472, 193 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
+ shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
+ shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
+ shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 50;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 83;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },
+ { <SPCE>, "SPCE",color="white" },
+ <RALT>, { <RCTL>, 20 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 50;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 50;
+ left= 377;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 64.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 386; };
+ indicator "Caps Lock" { left= 411; };
+ indicator "Scroll Lock" { left= 436; };
+ text.top= 52;
+ text.color= "black";
+ text "NumLockLabel" { left= 382.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 407; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 432; text="Scroll\nLock"; };
+
+ logo "SGILogoImage" {
+ top= 17;
+ left= 22;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text "SGILogoText" {
+ top= 21;
+ left= 40;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ fontWidth= "narrow";
+ fontSize= 24;
+ };
+
+ section "Keypad" {
+ top= 83;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+xkb_geometry "pc102" {
+
+ // This is an approximate layout for 102-key SGI international
+ // keyboards. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Silicon Graphics 102-key Keyboard";
+ width= 470;
+ height= 193;
+
+ shape.cornerRadius= 1;
+ shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
+ shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
+ shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [26,37] },
+ { [ 0, 0], [26, 0], [26,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [24, 1], [24,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
+ shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
+ shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 50;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 10}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 83;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color= "grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", color= "grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color= "grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color= "grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>,
+ { <LALT>, 19 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>,
+ { <RCTL>, 19 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 50;
+ left= 308;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 50;
+ left= 375;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 64.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 384; };
+ indicator "Caps Lock" { left= 409; };
+ indicator "Scroll Lock" { left= 434; };
+ text.top= 52;
+ text.color= "black";
+ text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
+
+ logo "SGILogoImage" {
+ top= 17;
+ left= 22;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text "SGILogoText" {
+ top= 21;
+ left= 40;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ setWidth= "narrow";
+ fontSize= 24;
+ };
+
+ section "Keypad" {
+ top= 83;
+ left= 374;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
diff --git a/xorg-server/xkeyboard-config/geometry/sgi_vndr/indy b/xorg-server/xkeyboard-config/geometry/sgi_vndr/indy
index ca1dd2b66..9b7a40dec 100644
--- a/xorg-server/xkeyboard-config/geometry/sgi_vndr/indy
+++ b/xorg-server/xkeyboard-config/geometry/sgi_vndr/indy
@@ -1,598 +1,598 @@
-//
-// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
-//
-// 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 of Silicon Graphics not be
-// used in advertising or publicity pertaining to distribution
-// of the software without specific prior written permission.
-// Silicon Graphics makes no representation about the suitability
-// of this software for any purpose. It is provided "as is"
-// without any express or implied warranty.
-//
-// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-// GRAPHICS 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.
-//
-default xkb_geometry "pc101" {
-
- // This is an approximate layout for a 101-key (US/ASCII) SGI
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Silicon Graphics 101-key keyboard";
-
- width= 472;
- height= 193;
-
- shape "EDGE" { cornerRadius= 2, { [ 472, 193 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
- shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
- shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
- shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 50;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 83;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color="grey20" }
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },
- { <SPCE>, "SPCE",color="white" },
- <RALT>, { <RCTL>, 20 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 50;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 50;
- left= 377;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 64.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 386; };
- indicator "Caps Lock" { left= 411; };
- indicator "Scroll Lock" { left= 436; };
- text.top= 52;
- text.color= "black";
- text "NumLockLabel" { left= 382.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 407; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 432; text="Scroll\nLock"; };
-
- logo "SGILogoImage" {
- top= 17;
- left= 22;
- name= "SGI";
- shape= "LOGO";
- };
- text "SGILogoText" {
- top= 21;
- left= 40;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- fontWidth= "narrow";
- fontSize= 24;
- };
-
- section "Keypad" {
- top= 83;
- left= 376;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-
-xkb_geometry "pc102" {
-
- // This is an approximate layout for 102-key SGI international
- // keyboards. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes of a few keys by eye. I didn't actually
- // *measure* a real keyboard.
-
- description= "Silicon Graphics 102-key Keyboard";
- width= 470;
- height= 193;
-
- shape.cornerRadius= 1;
- shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
- shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
- shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [26,37] },
- { [ 0, 0], [26, 0], [26,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [24, 1], [24,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
- shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
- shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 19;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 50;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
- { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
- { <FK09>, 10}, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 83;
- row {
- top= 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color= "grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color= "grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", color= "grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color= "grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color= "grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>,
- { <LALT>, 19 },
- { <SPCE>, "SPCE", color="white" },
- <RALT>,
- { <RCTL>, 19 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 50;
- left= 308;
- key.color= "grey20";
- row {
- top= 1;
- keys { <PRSC>, <SCLK>, <PAUS> };
- };
- row {
- top= 33;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 53;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 91;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 110;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 50;
- left= 375;
- color= "grey10";
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 64.5;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 384; };
- indicator "Caps Lock" { left= 409; };
- indicator "Scroll Lock" { left= 434; };
- text.top= 52;
- text.color= "black";
- text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
- text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
-
- logo "SGILogoImage" {
- top= 17;
- left= 22;
- name= "SGI";
- shape= "LOGO";
- };
- text "SGILogoText" {
- top= 21;
- left= 40;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- setWidth= "narrow";
- fontSize= 24;
- };
-
- section "Keypad" {
- top= 83;
- left= 374;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-};
-
-xkb_geometry "jp106" {
- description= "Silicon Graphics 106-key Japanese keyboard";
- width= 442;
- height= 167;
-
- shape "EDGE" { cornerRadius= 2, { [ 442, 167 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
- shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } };
- shape "RTRN" {
- { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } ,
- { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
- shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
- shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- logo "SGILogoImage" {
- top= 5;
- left= 6;
- name= "SGI";
- shape= "LOGO";
- };
-
- text "SGILogoText" {
- top= 9;
- left= 25;
- width= 50;
- text= "SiliconGraphics";
- font= "helvetica";
- slant= "o";
- weight= "bold";
- fontWidth= "narrow";
- fontSize= 24;
- };
-
- shape "LEDS" { cornerRadius= 0.1, { [ 76 ,20 ] } };
- shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 25;
- left= 362;
- color= "grey10";
- };
-
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 40;
- indicator.shape= "LED";
- indicator "Num Lock" { left= 366; };
- indicator "Caps Lock" { left= 391; };
- indicator "Scroll Lock" { left= 416; };
- text.top= 28;
- text.color= "black";
- text "NumLockLabel" { left= 366; text="Num\nLock"; };
- text "CapsLockLabel" { left= 391; text="Caps\nLock"; };
- text "ScrollLockLabel" { left= 416; text="Scroll\nLock"; };
-
- section.left= 5;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 25;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" },
- { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 ,color="grey20"}, {<FK06>,color="grey20"},
- { <FK07>, color="grey20"}, {<FK08>,color="grey20"},
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 8 }, <SCLK>, <PAUS>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { {<HZTG>,color="grey20"}, <AE01>, <AE02>,
- <AE03>, <AE04>, <AE05>, <AE06>, <AE07>,
- <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- <AE13>, { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, 1 ,"RTRN",color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <CAPS>, "CAPS", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "LFSH", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <AB11>, { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LCTL>, { <LALT>, 20 },<NFER>,
- { <SPCE>, "SPCE", color="white" },
- <XFER>,<HKTG>,<RALT>, { <RCTL>, 17 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 296;
- key.color= "grey20";
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 361;
- row {
- top= 1;
- key.color= "grey20";
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-}; // End of "jp106" geometry
+//
+// Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
+//
+// 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 of Silicon Graphics not be
+// used in advertising or publicity pertaining to distribution
+// of the software without specific prior written permission.
+// Silicon Graphics makes no representation about the suitability
+// of this software for any purpose. It is provided "as is"
+// without any express or implied warranty.
+//
+// SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+// SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+// GRAPHICS 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.
+//
+default xkb_geometry "pc101" {
+
+ // This is an approximate layout for a 101-key (US/ASCII) SGI
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Silicon Graphics 101-key keyboard";
+
+ width= 472;
+ height= 193;
+
+ shape "EDGE" { cornerRadius= 2, { [ 472, 193 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 40,18] }, { [2,1], [37,17] } };
+ shape "CAPS" { { [ 34,18] }, { [2,1], [29,17] } };
+ shape "RTSH" { { [ 49,18] }, { [2,1], [47,17] } };
+ shape "LFSH" { { [ 44,18] }, { [2,1], [42,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 50;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 19}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 83;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color="grey20" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },
+ { <SPCE>, "SPCE",color="white" },
+ <RALT>, { <RCTL>, 20 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 50;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 50;
+ left= 377;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 64.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 386; };
+ indicator "Caps Lock" { left= 411; };
+ indicator "Scroll Lock" { left= 436; };
+ text.top= 52;
+ text.color= "black";
+ text "NumLockLabel" { left= 382.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 407; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 432; text="Scroll\nLock"; };
+
+ logo "SGILogoImage" {
+ top= 17;
+ left= 22;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text "SGILogoText" {
+ top= 21;
+ left= 40;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ fontWidth= "narrow";
+ fontSize= 24;
+ };
+
+ section "Keypad" {
+ top= 83;
+ left= 376;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+
+xkb_geometry "pc102" {
+
+ // This is an approximate layout for 102-key SGI international
+ // keyboards. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes of a few keys by eye. I didn't actually
+ // *measure* a real keyboard.
+
+ description= "Silicon Graphics 102-key Keyboard";
+ width= 470;
+ height= 193;
+
+ shape.cornerRadius= 1;
+ shape "EDGE" { cornerRadius=2, { [ 470, 193 ] } };
+ shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [35,18] }, { [2,1], [33,17] } };
+ shape "TABK" { { [27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [26,37] },
+ { [ 0, 0], [26, 0], [26,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [24, 1], [24,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [25,17] } };
+ shape "RTSH" { { [ 50,18] }, { [2,1], [48,17] } };
+ shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [130,18] }, { [2,1], [128,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 19;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 50;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18}, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 10}, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 10}, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 83;
+ row {
+ top= 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color= "grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color= "grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", color= "grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color= "grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color= "grey20" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color= "grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>,
+ { <LALT>, 19 },
+ { <SPCE>, "SPCE", color="white" },
+ <RALT>,
+ { <RCTL>, 19 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 50;
+ left= 308;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <PRSC>, <SCLK>, <PAUS> };
+ };
+ row {
+ top= 33;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 53;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 91;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 110;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 1, 3 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 50;
+ left= 375;
+ color= "grey10";
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 64.5;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 384; };
+ indicator "Caps Lock" { left= 409; };
+ indicator "Scroll Lock" { left= 434; };
+ text.top= 52;
+ text.color= "black";
+ text "NumLockLabel" { left= 380.5; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 405; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 430; text="Scroll\nLock"; };
+
+ logo "SGILogoImage" {
+ top= 17;
+ left= 22;
+ name= "SGI";
+ shape= "LOGO";
+ };
+ text "SGILogoText" {
+ top= 21;
+ left= 40;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ setWidth= "narrow";
+ fontSize= 24;
+ };
+
+ section "Keypad" {
+ top= 83;
+ left= 374;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+};
+
+xkb_geometry "jp106" {
+ description= "Silicon Graphics 106-key Japanese keyboard";
+ width= 442;
+ height= 167;
+
+ shape "EDGE" { cornerRadius= 2, { [ 442, 167 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "BKSP" { { [ 18,18] }, { [2,1], [ 16,17] } };
+ shape "TABK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [ 25,17] } };
+ shape "RTRN" {
+ { [0,0],[ 27,0],[27,37],[4,37],[4,18],[0,18] } ,
+ { [2,1],[ 25,1],[25,36],[5,36],[5,17],[2,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [ 40,17] } };
+ shape "RTSH" { { [ 32,18] }, { [2,1], [ 30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [ 26,17] } };
+ shape "SPCE" { { [ 46,18] }, { [2,1], [ 44,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [ 35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [ 16,36] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ logo "SGILogoImage" {
+ top= 5;
+ left= 6;
+ name= "SGI";
+ shape= "LOGO";
+ };
+
+ text "SGILogoText" {
+ top= 9;
+ left= 25;
+ width= 50;
+ text= "SiliconGraphics";
+ font= "helvetica";
+ slant= "o";
+ weight= "bold";
+ fontWidth= "narrow";
+ fontSize= 24;
+ };
+
+ shape "LEDS" { cornerRadius= 0.1, { [ 76 ,20 ] } };
+ shape "LED" { cornerRadius= 0, { [ 5, 1 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 25;
+ left= 362;
+ color= "grey10";
+ };
+
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 40;
+ indicator.shape= "LED";
+ indicator "Num Lock" { left= 366; };
+ indicator "Caps Lock" { left= 391; };
+ indicator "Scroll Lock" { left= 416; };
+ text.top= 28;
+ text.color= "black";
+ text "NumLockLabel" { left= 366; text="Num\nLock"; };
+ text "CapsLockLabel" { left= 391; text="Caps\nLock"; };
+ text "ScrollLockLabel" { left= 416; text="Scroll\nLock"; };
+
+ section.left= 5;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 25;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" },
+ { <FK01>, 18 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 ,color="grey20"}, {<FK06>,color="grey20"},
+ { <FK07>, color="grey20"}, {<FK08>,color="grey20"},
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 8 }, <SCLK>, <PAUS>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { {<HZTG>,color="grey20"}, <AE01>, <AE02>,
+ <AE03>, <AE04>, <AE05>, <AE06>, <AE07>,
+ <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ <AE13>, { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, 1 ,"RTRN",color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <CAPS>, "CAPS", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "LFSH", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <AB11>, { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LCTL>, { <LALT>, 20 },<NFER>,
+ { <SPCE>, "SPCE", color="white" },
+ <XFER>,<HKTG>,<RALT>, { <RCTL>, 17 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 296;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 361;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+}; // End of "jp106" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/sony b/xorg-server/xkeyboard-config/geometry/sony
index cfd6f0388..70714941e 100644
--- a/xorg-server/xkeyboard-config/geometry/sony
+++ b/xorg-server/xkeyboard-config/geometry/sony
@@ -1,179 +1,179 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-default xkb_geometry "nwp5461" {
-
- description= "Sony NEWS NWS-5000 Keyboard";
- width= 425;
- height= 190;
-
- shape.cornerRadius= 1;
- shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [28,18] }, { [2,1], [26,17] } };
- shape "TABK" { { [28,18] }, { [2,1], [26,17] } };
- shape "BKSL" { { [28,18] }, { [2,1], [26,17] } };
- shape "RTRN" {
- approx = { [15, 0], [33,37] },
- { [15, 0], [33, 0], [33,37],
- [ 0,37], [ 0,19], [15,19] },
- { [17, 1], [31, 1], [31,36],
- [ 2,36], [ 2,20], [17,20] }
- };
- shape "SHFT" { { [42,18] }, { [2,1], [40,17] } };
- shape "MODK" { { [33,18] }, { [2,1], [31,17] } };
- shape "SPCE" { { [85,18] }, { [2,1], [83,17] } };
- shape "KPEN" { { [18,38] }, { [2,1], [16,37] } };
- shape "STOP" { { [28,18] }, { [2,1], [26,17] } };
- shape "CUT" { { [55,18] }, { [2,1], [53,17] } };
- shape "EXEC" { { [32,18] }, { [2,1], [30,17] } };
- shape "UNK" { { [18,18] }, { [2,1], [16,17] } };
- shape "CAPS" { { [18,18] }, { [2,1], [16,17] } };
- shape "FKEY" { { [23,18] }, { [2,1], [21,17] } };
-
- section.left= 13;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 55;
- row {
- top= 1;
- left= 37;
- key.shape="FKEY";
- keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
- { <FK06>, 5 }, <FK07>, <FK08>, <FK09>, <FK10>,
- { <FK11>, 5 }, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 80;
- row {
- top= 1;
- keys { { <ESC>, color="grey20" } ,
- <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>,
- <AE09>, <AE10>, <AE11>, <AE12>,
- <BKSL>, { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { { <TAB>, "TABK", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <DELE>, color="grey20" },
- { <RTRN>, "RTRN", -14, color="grey20" }
- };
- };
- row {
- top= 39;
- keys { { <LCTL>, "MODK", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>
- };
- };
- row {
- top= 58;
- keys { { <LFSH>, "SHFT", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
- { <RTSH>, "SHFT", color="grey20" }
- };
- };
- row {
- top= 77;
- key.shape= "MODK";
- key.color= "grey20";
- keys { <LALT>, { <CAPS>, "CAPS" },
- { <STOP>, "STOP", color="white" },
- { <SPCE>, "SPCE", color="white" },
- { <CUT>, "CUT", color="white" },
- { <UNK0>, "UNK" }, { <UNK1>, "UNK" },
- { <EXEC>, "EXEC" }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 80;
- left= 312;
- key.color= "grey20";
- row {
- top= 1;
- keys { <HELP> };
- };
- row {
- top= 20;
- keys { <INS> };
- };
- row {
- top= 39;
- keys { <CLR> };
- };
- row {
- top= 58;
- keys { <PGUP> };
- };
- row {
- top= 77;
- keys { <PGDN> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 334;
- row {
- top= 1;
- key.color= "grey20";
- keys { { <KPMU>, 19 }, <KPDV>, <KPAD> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPSU>, color="grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6>, { <KPSP>, color="grey20" } };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN", color="grey20" } };
- };
- row {
- top= 77;
- keys { <KP0>, { <KPDC>, color="grey20" }, <UP> };
- };
- row {
- top= 96;
- key.color= "grey20";
- keys { <KPTB>, <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Keypad" section
-
-}; // End of "default" geometry
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+default xkb_geometry "nwp5461" {
+
+ description= "Sony NEWS NWS-5000 Keyboard";
+ width= 425;
+ height= 190;
+
+ shape.cornerRadius= 1;
+ shape "NORM" { { [18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [28,18] }, { [2,1], [26,17] } };
+ shape "TABK" { { [28,18] }, { [2,1], [26,17] } };
+ shape "BKSL" { { [28,18] }, { [2,1], [26,17] } };
+ shape "RTRN" {
+ approx = { [15, 0], [33,37] },
+ { [15, 0], [33, 0], [33,37],
+ [ 0,37], [ 0,19], [15,19] },
+ { [17, 1], [31, 1], [31,36],
+ [ 2,36], [ 2,20], [17,20] }
+ };
+ shape "SHFT" { { [42,18] }, { [2,1], [40,17] } };
+ shape "MODK" { { [33,18] }, { [2,1], [31,17] } };
+ shape "SPCE" { { [85,18] }, { [2,1], [83,17] } };
+ shape "KPEN" { { [18,38] }, { [2,1], [16,37] } };
+ shape "STOP" { { [28,18] }, { [2,1], [26,17] } };
+ shape "CUT" { { [55,18] }, { [2,1], [53,17] } };
+ shape "EXEC" { { [32,18] }, { [2,1], [30,17] } };
+ shape "UNK" { { [18,18] }, { [2,1], [16,17] } };
+ shape "CAPS" { { [18,18] }, { [2,1], [16,17] } };
+ shape "FKEY" { { [23,18] }, { [2,1], [21,17] } };
+
+ section.left= 13;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 55;
+ row {
+ top= 1;
+ left= 37;
+ key.shape="FKEY";
+ keys { <FK01>, <FK02>, <FK03>, <FK04>, <FK05>,
+ { <FK06>, 5 }, <FK07>, <FK08>, <FK09>, <FK10>,
+ { <FK11>, 5 }, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 80;
+ row {
+ top= 1;
+ keys { { <ESC>, color="grey20" } ,
+ <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>,
+ <AE09>, <AE10>, <AE11>, <AE12>,
+ <BKSL>, { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { { <TAB>, "TABK", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <DELE>, color="grey20" },
+ { <RTRN>, "RTRN", -14, color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { { <LCTL>, "MODK", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>
+ };
+ };
+ row {
+ top= 58;
+ keys { { <LFSH>, "SHFT", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11>,
+ { <RTSH>, "SHFT", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ key.shape= "MODK";
+ key.color= "grey20";
+ keys { <LALT>, { <CAPS>, "CAPS" },
+ { <STOP>, "STOP", color="white" },
+ { <SPCE>, "SPCE", color="white" },
+ { <CUT>, "CUT", color="white" },
+ { <UNK0>, "UNK" }, { <UNK1>, "UNK" },
+ { <EXEC>, "EXEC" }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 80;
+ left= 312;
+ key.color= "grey20";
+ row {
+ top= 1;
+ keys { <HELP> };
+ };
+ row {
+ top= 20;
+ keys { <INS> };
+ };
+ row {
+ top= 39;
+ keys { <CLR> };
+ };
+ row {
+ top= 58;
+ keys { <PGUP> };
+ };
+ row {
+ top= 77;
+ keys { <PGDN> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 334;
+ row {
+ top= 1;
+ key.color= "grey20";
+ keys { { <KPMU>, 19 }, <KPDV>, <KPAD> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPSU>, color="grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6>, { <KPSP>, color="grey20" } };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPEN", color="grey20" } };
+ };
+ row {
+ top= 77;
+ keys { <KP0>, { <KPDC>, color="grey20" }, <UP> };
+ };
+ row {
+ top= 96;
+ key.color= "grey20";
+ keys { <KPTB>, <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Keypad" section
+
+}; // End of "default" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/sun b/xorg-server/xkeyboard-config/geometry/sun
index 8aef7f6c3..4b7126d45 100644
--- a/xorg-server/xkeyboard-config/geometry/sun
+++ b/xorg-server/xkeyboard-config/geometry/sun
@@ -1,3046 +1,3046 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-// ---------------------------------------------------------------------------
-// Copyright 2004 Sun Microsystems, Inc. All rights reserved.
-//
-// 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 (including the next
-// paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-//
-// ---------------------------------------------------------------------------
-//
-xkb_geometry "type4" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type4 US
- // keyboard.
-
- description= "Sun Type4 keyboard";
-
- width= 452;
- height= 185;
-
- shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "DELE" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 17;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <BKSL>, { <DELE>, "DELE" },
- { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <ESC>, 9 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- { <BKSP>, "BKSP" },
- { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
-
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>,
- { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>,
- { <LCTL>, 9, shape="LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>,
- { <KP4>, 33 }, <KP5>, <KP6>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>,
- { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }, <LNFD>,
- { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
- };
- };
- row {
- top= 96;
- keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
- <LALT>, <LMTA>, { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>,
- { <KP0>, 9, shape="KP0" }, <KPDL>
- };
- };
- }; // End of "Alpha" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 28;
- left= 358;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 43;
- indicator.shape= "LED";
- indicator "Caps Lock" { left= 364; };
- indicator "Compose" { left= 383; };
- indicator "Scroll Lock" { left= 402; };
- indicator "Num Lock" { left= 421; };
- text.top= 34;
- text.color= "black";
- text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
- text "ComposeLabel" { left= 380; text="Compose"; };
- text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 421; text="Num\nLock"; };
-};
-
-xkb_geometry "type4tuv" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type4 TUV
- // (European) keyboard with an extra key between the Shift_L
- // and the Z keys, and two keys above the Bksp key, instead
- // of a large delete key.
-
- description= "Sun Type4tuv keyboard";
-
- width= 452;
- height= 185;
-
- shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
-
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 17;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <BKSL>, <BRCR>,<DELE>,
- { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <ESC>, 9 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- { <BKSP>, "BKSP" },
- { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
-
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>,
- { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>,
- { <LCTL>, 9, shape="LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>,
- { <KP4>, 33 }, <KP5>, <KP6>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>,
- { <LFSH>, 9 }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }, <LNFD>,
- { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
- };
- };
- row {
- top= 96;
- keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
- <LALT>, <LMTA>, { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>,
- { <KP0>, 9, shape="KP0" }, <KPDL>
- };
- };
- }; // End of "Alpha" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 28;
- left= 358;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 43;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 364; };
- indicator "Compose" { left= 383; };
- indicator "ScrollLock" { left= 402; };
- indicator "NumLock" { left= 421; };
- text.top= 34;
- text.color= "black";
- text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
- text "ComposeLabel" { left= 380; text="Compose"; };
- text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 421; text="Num\nLock"; };
-};
-
-xkb_geometry "type4_ca" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type4
- // Canadian and British keyboard with an extra key between
- // the Shift_L
- // and the Z keys.
-
- description= "Sun Type4_uk keyboard";
-
- width= 452;
- height= 185;
-
- shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "DELE" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 17;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <BKSL>, { <DELE>, "DELE" },
- { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <ESC>, 9 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- { <BKSP>, "BKSP" },
- { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
-
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>,
- { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>,
- { <LCTL>, 9, shape="LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>,
- { <KP4>, 33 }, <KP5>, <KP6>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>,
- { <LFSH>, 9 }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }, <LNFD>,
- { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
- };
- };
- row {
- top= 96;
- keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
- <LALT>, <LMTA>, { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>,
- { <KP0>, 9, shape="KP0" }, <KPDL>
- };
- };
- }; // End of "Alpha" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 28;
- left= 358;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 43;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 364; };
- indicator "Compose" { left= 383; };
- indicator "ScrollLock" { left= 402; };
- indicator "NumLock" { left= 421; };
- text.top= 34;
- text.color= "black";
- text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
- text "ComposeLabel" { left= 380; text="Compose"; };
- text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; }
-;
- text "NumLockLabel" { left= 421; text="Num\nLock"; };
-};
-
-xkb_geometry "type4jp" {
-
- // This is an approximate layout for a Japanese Sun Type4
- // keyboard, based on the European TUV keyboard. It has two keys
- // above the Bksp key, instead of a large delete key, but lacks
- // the extra key between Shift_L and Z.
-
- description= "Sun Japanese Type4 keyboard";
-
- width= 452;
- height= 185;
-
- shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
-
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
- shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 17;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- <BKSL>, <BRCR>,<DELE>,
- { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <ESC>, 9 },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- { <BKSP>, "BKSP" },
- { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
-
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>,
- { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" },
- { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>,
- { <LCTL>, 9, shape="LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <TLDE>,
- { <KP4>, 33 }, <KP5>, <KP6>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>,
- { <LFSH>, 9, shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <LNFD>, { <RTSH>, "RTSH" },
- { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
- };
- };
- row {
- top= 96;
- keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
- <LALT>, <LMTA>, { <EXEC>, "EXEC"} , { <SPCE>, "SPCE" },
- { <KANJ>, "KANJ" }, <HENK>, <RMTA>, <COMP>, <ALGR>,
- { <KP0>, 9, shape="KP0" }, <KPDL>
- };
- };
- }; // End of "Alpha" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 28;
- left= 358;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 43;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 364; };
- indicator "Compose" { left= 383; };
- indicator "ScrollLock" { left= 402; };
- indicator "NumLock" { left= 421; };
- text.top= 34;
- text.color= "black";
- text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
- text "ComposeLabel" { left= 380; text="Compose"; };
- text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 421; text="Num\nLock"; };
-};
-
-xkb_geometry "t5" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type5
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-};
-
-xkb_geometry "t5tuv" {
-
- // This is an approximate layout for a TUV/European Sun Type5 keyboard.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [157,18] }, { [2,1], [155,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-};
-
-
-xkb_geometry "t5jp" {
-
- // This is an approximate layout for a Japanese Sun Type5 keyboard.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9 },
- <LALT>, <LMTA>, { <EXEC>, "EXEC" },
- { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-};
-
-xkb_geometry "t5unix" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type5
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [157,18] }, { [2,1], [155,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <NONE>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <ESC>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- <BKSL>, <TLDE>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSP>, "BKSP" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <LCTL>, 9, shape="LCTL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <CAPS>, 9, shape="CAPS" },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-};
-
-xkb_geometry "t5hobo" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type5
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
- //
- // I modified this to look like the hobo keyboard.
-
- width= 425;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "FKEY";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
- { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
- { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }, <ALGR>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <NMLK>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
-
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-};
-
-xkb_geometry "t5tuvhobo" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type5
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
- //
- // I modified this to look like the hobo keyboard.
-
- width= 425;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "BKSL" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
- shape "RTSH" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "FKEY";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
- { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
- { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }, <ALGR>
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE" },
- <RMTA>, <COMP>, <NMLK>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
-
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-};
-
-xkb_geometry "t5jphobo" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type5
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 425;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
- shape.cornerRadius= 1;
- shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "FKEY";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
- { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
- { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
- };
- };
- }; // End of "Function" section
-
- key.shape= "NORM";
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9 },
- <LALT>, <LMTA>, { <EXEC>, "EXEC" },
- { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-};
-
-xkb_geometry "type5_se" {
-
- // kbd: type = 4, layout = 43
-
- description= "Sun Type5 keyboard (Sweden)";
-
- width= 510;
- height= 170;
-
- baseColor= "grey";
- labelColor= "black";
-
- shape.cornerRadius= 1;
-
- shape "EDGE" { cornerRadius= 2, { [ 510, 170 ] } };
- shape "LOGO" { cornerRadius= 2,
- { [ 0, 8], [ 8, 16], [ 16, 8], [ 8, 0] }
- };
-
- shape "NORM" { { [ 18, 18] }, { [ 2, 1], [ 16, 17] } };
- shape "BKSP" { { [ 38, 18] }, { [ 2, 1], [ 36, 17] } };
- shape "TABK" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
- shape "RTRN" {
- { [ 0, 0], [ 29, 0], [ 29, 37], [ 5, 37], [ 5, 18], [ 0, 18] },
- { [ 2, 1], [ 27, 1], [ 27, 36], [ 7, 36], [ 7, 17], [ 2, 17] }
- };
- shape "CAPS" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
- shape "LFSH" { { [ 24, 18] }, { [ 2, 1], [ 22, 17 ] } };
- shape "RTSH" { { [ 51, 18] }, { [ 2, 1], [ 49, 17 ] } };
- shape "LCTL" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
- shape "MODK" { { [ 28, 18] }, { [ 2, 1], [ 26, 17 ] } };
- shape "SPCE" { { [157, 18] }, { [ 2, 1], [155, 17 ] } };
- shape "KP0" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
- shape "KPAD" { { [ 18, 37] }, { [ 2, 1], [ 16, 36 ] } };
- shape "HELP" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
-
- section "Function" {
- key.color= "grey10";
- priority= 1;
- top= 24;
- left= 14;
- width= 481;
- height= 19;
- row {
- top= 1;
- left= 1;
- keys {
- { <HELP>, "HELP", 1 }, { <ESC>, "NORM", 9 },
- { <FK01>, "NORM", 19 }, { <FK02>, "NORM", 1 },
- { <FK03>, "NORM", 1 }, { <FK04>, "NORM", 1 },
- { <FK05>, "NORM", 11 }, { <FK06>, "NORM", 1 },
- { <FK07>, "NORM", 1 }, { <FK08>, "NORM", 1 },
- { <FK09>, "NORM", 11 }, { <FK10>, "NORM", 1 },
- { <FK11>, "NORM", 1 }, { <FK12>, "NORM", 1 },
- { <PRSC>, "NORM", 9 }, { <SCLK>, "NORM", 1 },
- { <PAUS>, "NORM", 1 }, { <MUTE>, "NORM", 11 },
- { <VOL->, "NORM", 1 }, { <VOL+>, "NORM", 1 },
- { <POWR>, "NORM", 1, color= "white" }
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- key.color= "white";
- priority= 2;
- top= 61;
- left= 14;
- width= 333;
- height= 95;
- row {
- top= 1;
- left= 1;
- keys {
- { <STOP>, "NORM", 1, color= "grey10" },
- { <AGAI>, "NORM", 1, color= "grey10" },
- { <TLDE>, "NORM", 9 }, { <AE01>, "NORM", 1 },
- { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
- { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
- { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
- { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
- { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
- { <AE12>, "NORM", 1 },
- { <BKSP>, "BKSP", 1, color="grey10" }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <PROP>, "NORM", 1, color= "grey10" },
- { <UNDO>, "NORM", 1, color= "grey10" },
- { <TAB>, "TABK", 9, color= "grey10" },
- { <AD01>, "NORM", 1 },
- { <AD02>, "NORM", 1 }, { <AD03>, "NORM", 1 },
- { <AD04>, "NORM", 1 }, { <AD05>, "NORM", 1 },
- { <AD06>, "NORM", 1 }, { <AD07>, "NORM", 1 },
- { <AD08>, "NORM", 1 }, { <AD09>, "NORM", 1 },
- { <AD10>, "NORM", 1 }, { <AD11>, "NORM", 1 },
- { <AD12>, "NORM", 1 },
- { <RTRN>, "RTRN", 1, color= "grey10" }
- };
- };
- row {
- top= 39;
- left= 1;
- keys {
- { <FRNT>, "NORM", 1, color= "grey10" },
- { <COPY>, "NORM", 1, color= "grey10" },
- { <CAPS>, "CAPS", 9, color= "grey10" },
- { <AC01>, "NORM", 1 },
- { <AC02>, "NORM", 1 }, { <AC03>, "NORM", 1 },
- { <AC04>, "NORM", 1 }, { <AC05>, "NORM", 1 },
- { <AC06>, "NORM", 1 }, { <AC07>, "NORM", 1 },
- { <AC08>, "NORM", 1 }, { <AC09>, "NORM", 1 },
- { <AC10>, "NORM", 1 }, { <AC11>, "NORM", 1 },
- { <AC12>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 1;
- keys {
- { <OPEN>, "NORM", 1, color= "grey10" },
- { <PAST>, "NORM", 1, color= "grey10" },
- { <LFSH>, "LFSH", 9, color= "grey10" },
- { <AB00>, "NORM", 1 }, { <AB01>, "NORM", 1 },
- { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
- { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
- { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
- { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
- { <AB10>, "NORM", 1 },
- { <RTSH>, "RTSH", 1, color="grey10" }
- };
- };
- row {
- top= 77;
- left= 1;
- key.color= "grey10";
- keys {
- { <FIND>, "NORM", 1 }, { <CUT>, "NORM", 1 },
- { <LCTL>, "LCTL", 9 }, { <LALT>, "NORM", 1 },
- { <LMTA>, "NORM", 1 },
- { <SPCE>, "SPCE", 1, color= "white" },
- { <RMTA>, "NORM", 1 }, { <COMP>, "NORM", 1 },
- { <ALGR>, "NORM", 1 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- key.color= "grey10";
- priority= 3;
- top= 61;
- left= 352;
- width= 58;
- height= 95;
- row {
- top= 1;
- left= 1;
- keys {
- { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
- { <PGUP>, "NORM", 1 }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
- { <PGDN>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 20;
- keys {
- { <UP>, "NORM", 1 }
- };
- };
- row {
- top= 77;
- left= 1;
- keys {
- { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
- { <RGHT>, "NORM", 1 }
- };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- key.color= "white";
- priority= 4;
- top= 61;
- left= 420;
- width= 77;
- height= 95;
- row {
- top= 1;
- left= 1;
- key.color= "grey10";
- keys {
- { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
- { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <KP7>, "NORM", 1 }, { <KP8>, "NORM", 1 },
- { <KP9>, "NORM", 1 },
- { <KPAD>, "KPAD", 1, color="grey10" }
- };
- };
- row {
- top= 39;
- left= 1;
- keys {
- { <KP4>, "NORM", 1 }, { <KP5>, "NORM", 1 },
- { <KP6>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 1;
- keys {
- { <KP1>, "NORM", 1 }, { <KP2>, "NORM", 1 },
- { <KP3>, "NORM", 1 },
- { <KPEN>, "KPAD", 1, color="grey10" }
- };
- };
- row {
- top= 77;
- left= 1;
- keys {
- { <KP0>, "KP0", 1 }, { <KPDL>, "NORM", 1 }
- };
- };
- }; // End of "Keypad" section
-
- outline "Edges" {
- top= 0;
- left= 0;
- priority= 0;
- shape= "EDGE";
- };
-
- solid "Logos" {
- color= "blue";
- top= 5;
- left= 25;
- priority= 0;
- shape= "LOGO";
- };
-
- logo "SUNLogoImage" {
- top= 5;
- left= 25;
- name= "SUN";
- priority= 1;
- shape= "LOGO";
- };
-
- shape "LED" { cornerRadius= 1,
- { [ 0, 1.5], [ 1.5, 3], [ 3, 1.5], [ 1.5, 0] }
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.shape= "LED";
- indicator "Caps Lock" { left= 75; top= 103; priority= 5; };
- indicator "Compose" { left= 314; top= 142; priority= 5; };
- indicator "Scroll Lock" { left= 378; top= 29; };
- indicator "Num Lock" { left= 426; top= 66; };
-};
-
-xkb_geometry "type5c_se" {
-
- // kbd: type = 4, layout = 43
-
- description= "Sun Type5c keyboard (Sweden)";
-
- width= 510;
- height= 170;
-
- baseColor= "grey";
- labelColor= "black";
-
- shape.cornerRadius= 1;
-
- shape "EDGE" { cornerRadius= 2, { [ 510, 170 ] } };
- shape "LOGO" { cornerRadius= 2,
- { [ 0, 8], [ 8, 16], [ 16, 8], [ 8, 0] }
- };
-
- shape "NORM" { { [ 18, 18] }, { [ 2, 1], [ 16, 17] } };
- shape "BKSP" { { [ 38, 18] }, { [ 2, 1], [ 36, 17] } };
- shape "TABK" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
- shape "META" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
- shape "RTRN" {
- { [ 0, 0], [ 29, 0], [ 29, 37], [ 5, 37], [ 5, 18], [ 0, 18] },
- { [ 2, 1], [ 27, 1], [ 27, 36], [ 7, 36], [ 7, 17], [ 2, 17] }
- };
- shape "CAPS" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
- shape "LFSH" { { [ 24, 18] }, { [ 2, 1], [ 22, 17 ] } };
- shape "RTSH" { { [ 51, 18] }, { [ 2, 1], [ 49, 17 ] } };
- shape "LCTL" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
- shape "MODK" { { [ 28, 18] }, { [ 2, 1], [ 26, 17 ] } };
- shape "SPCE" { { [139, 18] }, { [ 2, 1], [137, 17 ] } };
- shape "KP0" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
- shape "KPAD" { { [ 18, 37] }, { [ 2, 1], [ 16, 36 ] } };
- shape "HELP" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
-
- section "Function" {
- key.color= "grey10";
- priority= 1;
- top= 24;
- left= 14;
- width= 481;
- height= 19;
- row {
- top= 1;
- left= 1;
- keys {
- { <HELP>, "HELP", 1 }, { <ESC>, "NORM", 9 },
- { <FK01>, "NORM", 19 }, { <FK02>, "NORM", 1 },
- { <FK03>, "NORM", 1 }, { <FK04>, "NORM", 1 },
- { <FK05>, "NORM", 11 }, { <FK06>, "NORM", 1 },
- { <FK07>, "NORM", 1 }, { <FK08>, "NORM", 1 },
- { <FK09>, "NORM", 11 }, { <FK10>, "NORM", 1 },
- { <FK11>, "NORM", 1 }, { <FK12>, "NORM", 1 },
- { <PRSC>, "NORM", 9 }, { <SCLK>, "NORM", 1 },
- { <PAUS>, "NORM", 1 }, { <MUTE>, "NORM", 11 },
- { <VOL->, "NORM", 1 }, { <VOL+>, "NORM", 1 },
- { <POWR>, "NORM", 1, color= "white" }
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- key.color= "white";
- priority= 2;
- top= 61;
- left= 14;
- width= 333;
- height= 95;
- row {
- top= 1;
- left= 1;
- keys {
- { <STOP>, "NORM", 1, color= "grey10" },
- { <AGAI>, "NORM", 1, color= "grey10" },
- { <TLDE>, "NORM", 9 }, { <AE01>, "NORM", 1 },
- { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
- { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
- { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
- { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
- { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
- { <AE12>, "NORM", 1 },
- { <BKSP>, "BKSP", 1, color="grey10" }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <PROP>, "NORM", 1, color= "grey10" },
- { <UNDO>, "NORM", 1, color= "grey10" },
- { <TAB>, "TABK", 9, color= "grey10" },
- { <AD01>, "NORM", 1 },
- { <AD02>, "NORM", 1 }, { <AD03>, "NORM", 1 },
- { <AD04>, "NORM", 1 }, { <AD05>, "NORM", 1 },
- { <AD06>, "NORM", 1 }, { <AD07>, "NORM", 1 },
- { <AD08>, "NORM", 1 }, { <AD09>, "NORM", 1 },
- { <AD10>, "NORM", 1 }, { <AD11>, "NORM", 1 },
- { <AD12>, "NORM", 1 },
- { <RTRN>, "RTRN", 1, color= "grey10" }
- };
- };
- row {
- top= 39;
- left= 1;
- keys {
- { <FRNT>, "NORM", 1, color= "grey10" },
- { <COPY>, "NORM", 1, color= "grey10" },
- { <CAPS>, "CAPS", 9, color= "grey10" },
- { <AC01>, "NORM", 1 },
- { <AC02>, "NORM", 1 }, { <AC03>, "NORM", 1 },
- { <AC04>, "NORM", 1 }, { <AC05>, "NORM", 1 },
- { <AC06>, "NORM", 1 }, { <AC07>, "NORM", 1 },
- { <AC08>, "NORM", 1 }, { <AC09>, "NORM", 1 },
- { <AC10>, "NORM", 1 }, { <AC11>, "NORM", 1 },
- { <AC12>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 1;
- keys {
- { <OPEN>, "NORM", 1, color= "grey10" },
- { <PAST>, "NORM", 1, color= "grey10" },
- { <LFSH>, "LFSH", 9, color= "grey10" },
- { <AB00>, "NORM", 1 }, { <AB01>, "NORM", 1 },
- { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
- { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
- { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
- { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
- { <AB10>, "NORM", 1 },
- { <RTSH>, "RTSH", 1, color="grey10" }
- };
- };
- row {
- top= 77;
- left= 1;
- key.color= "grey10";
- keys {
- { <FIND>, "NORM", 1 }, { <CUT>, "NORM", 1 },
- { <LCTL>, "LCTL", 9 }, { <LALT>, "NORM", 1 },
- { <LMTA>, "META", 1 },
- { <SPCE>, "SPCE", 1, color= "white" },
- { <RMTA>, "META", 1 }, { <COMP>, "NORM", 1 },
- { <ALGR>, "NORM", 1 }
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- key.color= "grey10";
- priority= 3;
- top= 61;
- left= 352;
- width= 58;
- height= 95;
- row {
- top= 1;
- left= 1;
- keys {
- { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
- { <PGUP>, "NORM", 1 }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
- { <PGDN>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 20;
- keys {
- { <UP>, "NORM", 1 }
- };
- };
- row {
- top= 77;
- left= 1;
- keys {
- { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
- { <RGHT>, "NORM", 1 }
- };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- key.color= "white";
- priority= 4;
- top= 61;
- left= 420;
- width= 77;
- height= 95;
- row {
- top= 1;
- left= 1;
- key.color= "grey10";
- keys {
- { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
- { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
- };
- };
- row {
- top= 20;
- left= 1;
- keys {
- { <KP7>, "NORM", 1 }, { <KP8>, "NORM", 1 },
- { <KP9>, "NORM", 1 },
- { <KPAD>, "KPAD", 1, color="grey10" }
- };
- };
- row {
- top= 39;
- left= 1;
- keys {
- { <KP4>, "NORM", 1 }, { <KP5>, "NORM", 1 },
- { <KP6>, "NORM", 1 }
- };
- };
- row {
- top= 58;
- left= 1;
- keys {
- { <KP1>, "NORM", 1 }, { <KP2>, "NORM", 1 },
- { <KP3>, "NORM", 1 },
- { <KPEN>, "KPAD", 1, color="grey10" }
- };
- };
- row {
- top= 77;
- left= 1;
- keys {
- { <KP0>, "KP0", 1 }, { <KPDL>, "NORM", 1 }
- };
- };
- }; // End of "Keypad" section
-
- outline "Edges" {
- top= 0;
- left= 0;
- priority= 0;
- shape= "EDGE";
- };
-
- solid "Logos" {
- color= "blue";
- top= 5;
- left= 15;
- priority= 0;
- shape= "LOGO";
- };
-
- logo "SUNLogoImage" {
- top= 5;
- left= 15;
- name= "SUN";
- priority= 1;
- shape= "LOGO";
- };
-
- text.font= "charter";
- text.weight= "medium";
- text.slant= "i";
- text.fontSize= 40;
- text "SunLogoText" {
- top= 5;
- left= 32;
- color= "blue";
- text= "Sun";
- };
-
- shape "LED" { cornerRadius= 1,
- { [ 0, 1.5], [ 1.5, 3], [ 3, 1.5], [ 1.5, 0] }
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.shape= "LED";
- indicator "Caps Lock" { left= 75; top= 103; priority= 5; };
- indicator "Compose" { left= 314; top= 142; priority= 5; };
- indicator "Scroll Lock" { left= 378; top= 29; };
- indicator "Num Lock" { left= 426; top= 66; };
-};
-
-xkb_geometry "type4_se" {
-
- // kbd: type = 4, layout = 11
-
- description= "Sun Type4 keyboard (Sweden)";
-
-
- width= 453;
- height= 183;
-
- baseColor= "grey";
- labelColor= "black";
-
- shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "DELE" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,19], [ 0,19] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,18], [ 1,18] }
- };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 17;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
-
- section "Alpha" {
- top= 58;
- row {
- top= 1;
- key.color= "grey10";
- keys { <STOP>, <AGAI>, { <FK01>, 9 },
- <FK02>, <FK03>, <FK04>,
- <FK05>, <FK06>, <FK07>, <FK08>,
- <FK09>, <FK10>, <FK11>, <FK12>,
- { <AF13>, color= "white"},
- { <AF14>, color= "white"},
- <DELE>, { <PAUS>, 9 },
- <PRSC>, <SCLK>, <NMLK>
- };
- };
- row {
- top= 20;
- key.color= "white";
- keys {
- { <PROP>, color= "grey10" },
- { <UNDO>, color= "grey10" },
- { <ESC>, 9, color= "grey10" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
- <AE11>, <AE12>,
- { <BKSP>, "BKSP", color= "grey10" },
- { <KPEQ>, 9, color= "grey10" },
- { <KPDV>, color= "grey10" },
- { <KPMU>, color= "grey10" },
- { <KPSU>, color= "grey10" }
- };
- };
- row {
- top= 39;
- key.color= "white";
- keys {
- { <FRNT>, color= "grey10" },
- { <COPY>, color= "grey10" },
- { <TAB>, 9, "TABK", color= "grey10" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN", color= "grey10" },
- { <KP7>, 9, color= "grey10" },
- { <KP8>, color= "grey10" },
- { <KP9>, color= "grey10" },
- { <KPAD>, "KPAD", color= "grey10" }
- };
- };
- row {
- top= 58;
- key.color= "white";
- keys {
- { <OPEN>, color= "grey10" },
- { <PAST>, color= "grey10" },
- { <CAPS>, 9, "LCTL", color= "grey10" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>,
- { <KP4>, 33, color= "grey10" },
- { <KP5>, color= "grey10" },
- { <KP6>, color= "grey10" }
- };
- };
- row {
- top= 77;
- key.color= "white";
- keys {
- { <FIND>, color= "grey10" },
- { <CUT>, color= "grey10" },
- { <LFSH>, 9 , "LFSH", color= "grey10" },
- <AB00>, <AB01>, <AB02>, <AB03>,
- <AB04>, <AB05>, <AB06>, <AB07>,
- <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color= "grey10" },
- { <LNFD>, color= "grey10" },
- { <KP1>, 9, color= "grey10" },
- { <KP2>, color= "grey10" },
- { <KP3>, color= "grey10" },
- { <KPEN>, "KPAD", color= "grey10" }
- };
- };
- row {
- top= 96;
- key.color= "grey10";
- keys {
- { <HELP>, "HELP" }, { <LCTL>, 9 },
- <LALT>, <LMTA>,
- { <SPCE>, "SPCE", color= "white" },
- <RMTA>, <COMP>, <ALGR>,
- { <KP0>, 9, "KP0" }, <KPDL>
- };
- };
- }; // End of "Alpha" section
-
- shape "RIDGE" { cornerRadius= 1, { [ 0, 1], [ 1, 0 ],
- [330, 0], [331, 1],
- [330, 2], [ 1, 2] } };
- solid "Ridge" {
- shape= "RIDGE";
- top= 48;
- left= 18;
- };
-
- shape "LEDS" { cornerRadius= 1, { [ 75 ,21 ] } };
- shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
- outline "LedPanel" {
- shape= "LEDS";
- top= 28;
- left= 358;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 43;
- indicator.shape= "LED";
- indicator "Caps Lock" { left= 364; };
- indicator "Compose" { left= 383; };
- indicator "Scroll Lock" { left= 402; };
- indicator "Num Lock" { left= 421; };
- text.top= 32;
- text.color= "black";
- text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
- text "ComposeLabel" { left= 380; text="\nCompose"; };
- text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 421; text="Num\nLock"; };
-};
-
-xkb_geometry "t6" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type6
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [136,18] }, { [2,1], [134,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSL>, "BKSL" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, { <LMTA>, "LMTA" },
- { <SPCE>, "SPCE" },
- { <RMTA>, "RMTA" }, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 1;
- left= 218;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 10;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 243; };
- indicator "Compose" { left= 281; };
- indicator "ScrollLock" { left= 262; };
- indicator "NumLock" { left= 224; };
- text.top= 1;
- text.color= "black";
- text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
- text "ComposeLabel" { left= 281; text="Compose"; };
- text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 224; text="Num\nLock"; };
-
-
-};
-
-xkb_geometry "t6tuv" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type6
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [137,18] }, { [2,1], [135,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, { <LMTA>, "LMTA" },
- { <SPCE>, "SPCE" },
- { <RMTA>, "RMTA" }, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 1;
- left= 218;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 10;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 243; };
- indicator "Compose" { left= 281; };
- indicator "ScrollLock" { left= 262; };
- indicator "NumLock" { left= 224; };
- text.top= 1;
- text.color= "black";
- text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
- text "ComposeLabel" { left= 281; text="Compose"; };
- text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 224; text="Num\nLock"; };
-
-};
-
-xkb_geometry "t6jp" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type6
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" {
- approx = { [ 0, 0], [28,37] },
- { [ 0, 0], [28, 0], [28,37],
- [ 5,37], [ 5,18], [ 0,18] },
- { [ 1, 1], [26, 1], [26,36],
- [ 7,36], [ 7,17], [ 1,17] }
- };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [ 96,18] }, { [2,1], [94,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <ESC>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <BKSL>
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9 },
- <LALT>, <LMTA>, { <EXEC>, "EXEC" },
- { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
- <RMTA>, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 1;
- left= 218;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 10;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 243; };
- indicator "Compose" { left= 281; };
- indicator "ScrollLock" { left= 262; };
- indicator "NumLock" { left= 224; };
- text.top= 1;
- text.color= "black";
- text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
- text "ComposeLabel" { left= 281; text="Compose"; };
- text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 224; text="Num\nLock"; };
-
-};
-
-xkb_geometry "t6unix" {
-
- // This is an approximate layout for a (US/ASCII) Sun Type6
- // keyboard. I just took a similar layout (101 key PC keyboard)
- // and adjusted the sizes.
-
- width= 515;
- height= 170;
-
- shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
- shape.cornerRadius= 1;
- shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
- shape "BKSP" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
- shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
- shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
- shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
- shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "SPCE" { { [136,18] }, { [2,1], [134,17] } };
- shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
- shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
- shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
- shape "LOGO" { { [ 16,16] } };
-
- outline "Edges" {
- top= 0;
- left= 0;
- shape= "EDGE";
- };
-
- section.left= 14;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 1;
- section "Function" {
- top= 24;
- row {
- top= 1;
- keys { { <HELP>, "HELP" }, { <NONE>, 9 },
- { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
- { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
- { <PRSC>, 9 }, <SCLK>, <PAUS>,
- { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
- };
- };
- }; // End of "Function" section
-
- section "Alpha" {
- top= 61;
- row {
- top= 1;
- keys { <STOP>, <AGAI>,
- { <ESC>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>,
- <BKSL>, <TLDE>
- };
- };
- row {
- top= 20;
- keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>,
- { <BKSP>, "BKSP", color="grey20" }
- };
- };
- row {
- top= 39;
- keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, "RTRN" }
- };
- };
- row {
- top= 58;
- keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH", color="grey20" }
- };
- };
- row {
- top= 77;
- keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
- <LALT>, {<LMTA>, "LMTA"},
- { <SPCE>, "SPCE" },
- {<RMTA>, "RMTA"}, <COMP>, <ALGR>
- };
- };
- }; // End of "Alpha" section
-
- section "Editing" {
- top= 61;
- left= 352;
- row {
- top= 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top= 20;
- keys { <DELE>, <END>, <PGDN> };
- };
- row {
- top= 58;
- left= 20;
- keys { <UP> };
- };
- row {
- top= 77;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Editing" section
-
- section "Keypad" {
- top= 61;
- left= 420;
- row {
- top= 1;
- keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
- };
- row {
- top= 20;
- keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
- };
- row {
- top= 39;
- keys { <KP4>, <KP5>, <KP6> };
- };
- row {
- top= 58;
- keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
- };
- row {
- top= 77;
- keys { { <KP0>, "KP0" }, <KPDL> };
- };
- }; // End of "Keypad" section
-
- shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
- shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
- solid "LedPanel" {
- shape= "LEDS";
- top= 1;
- left= 218;
- };
- indicator.onColor= "green";
- indicator.offColor= "green30";
- indicator.top= 10;
- indicator.shape= "LED";
- indicator "CapsLock" { left= 243; };
- indicator "Compose" { left= 281; };
- indicator "ScrollLock" { left= 262; };
- indicator "NumLock" { left= 224; };
- text.top= 1;
- text.color= "black";
- text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
- text "ComposeLabel" { left= 281; text="Compose"; };
- text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
- text "NumLockLabel" { left= 224; text="Num\nLock"; };
-};
-
-xkb_geometry "type5" {
- include "sun(t5)"
- description= "Sun Type5 keyboard";
-};
-
-xkb_geometry "type5jp" {
- include "sun(t5jp)"
- description= "Sun Type5 Japanese keyboard";
-};
-
-xkb_geometry "type5tuv" {
- include "sun(t5tuv)"
- description= "Sun Type5 keyboard";
-};
-
-xkb_geometry "type5euro" {
- include "sun(t5tuv)"
- description= "Sun Type5 keyboard";
-};
-
-xkb_geometry "type5unix" {
- include "sun(t5unix)"
- description= "Sun Type5 Unix keyboard";
-};
-
-xkb_geometry "type5hobo" {
- include "sun(t5hobo)"
- description= "Sun Type5 Hobo keyboard";
-};
-
-xkb_geometry "type5tuvhobo" {
- include "sun(t5tuvhobo)"
- description= "Sun Type5 Hobo keyboard";
-};
-
-xkb_geometry "type5jphobo" {
- include "sun(t5jphobo)"
- description= "Sun Type5 Japanese Hobo keyboard";
-};
-
-default xkb_geometry "type6" {
- include "sun(t6)"
- description= "Sun Type6 keyboard (US, Korea, Taiwan)";
-};
-
-xkb_geometry "type6jp" {
- include "sun(t6jp)"
- description= "Sun Type6 Japanese keyboard";
-};
-
-xkb_geometry "type6tuv" {
- include "sun(t6tuv)"
- description= "Sun Type6 TUV keyboard";
-};
-
-xkb_geometry "type6unix" {
- include "sun(t6unix)"
- description= "Sun Type6 Unix keyboard";
-};
-
-xkb_geometry "x86" {
- include "pc(pc101)"
- description= "x86 Style Keyboard";
-};
-
-xkb_geometry "MS_x86" {
- include "pc(pc104)"
- description= "x86 104 Key Keyboard";
-};
-
-xkb_geometry "x86tuv" {
- include "pc(pc102)"
- description= "x86 European Style Keyboard";
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+// ---------------------------------------------------------------------------
+// Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+//
+// 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 (including the next
+// paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+//
+// ---------------------------------------------------------------------------
+//
+xkb_geometry "type4" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type4 US
+ // keyboard.
+
+ description= "Sun Type4 keyboard";
+
+ width= 452;
+ height= 185;
+
+ shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "DELE" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 17;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <BKSL>, { <DELE>, "DELE" },
+ { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <ESC>, 9 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ { <BKSP>, "BKSP" },
+ { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
+
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>,
+ { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>,
+ { <LCTL>, 9, shape="LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>,
+ { <KP4>, 33 }, <KP5>, <KP6>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>,
+ { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }, <LNFD>,
+ { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
+ };
+ };
+ row {
+ top= 96;
+ keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
+ <LALT>, <LMTA>, { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>,
+ { <KP0>, 9, shape="KP0" }, <KPDL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 28;
+ left= 358;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 43;
+ indicator.shape= "LED";
+ indicator "Caps Lock" { left= 364; };
+ indicator "Compose" { left= 383; };
+ indicator "Scroll Lock" { left= 402; };
+ indicator "Num Lock" { left= 421; };
+ text.top= 34;
+ text.color= "black";
+ text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 380; text="Compose"; };
+ text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 421; text="Num\nLock"; };
+};
+
+xkb_geometry "type4tuv" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type4 TUV
+ // (European) keyboard with an extra key between the Shift_L
+ // and the Z keys, and two keys above the Bksp key, instead
+ // of a large delete key.
+
+ description= "Sun Type4tuv keyboard";
+
+ width= 452;
+ height= 185;
+
+ shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 17;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <BKSL>, <BRCR>,<DELE>,
+ { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <ESC>, 9 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ { <BKSP>, "BKSP" },
+ { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
+
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>,
+ { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>,
+ { <LCTL>, 9, shape="LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>,
+ { <KP4>, 33 }, <KP5>, <KP6>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>,
+ { <LFSH>, 9 }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }, <LNFD>,
+ { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
+ };
+ };
+ row {
+ top= 96;
+ keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
+ <LALT>, <LMTA>, { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>,
+ { <KP0>, 9, shape="KP0" }, <KPDL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 28;
+ left= 358;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 43;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 364; };
+ indicator "Compose" { left= 383; };
+ indicator "ScrollLock" { left= 402; };
+ indicator "NumLock" { left= 421; };
+ text.top= 34;
+ text.color= "black";
+ text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 380; text="Compose"; };
+ text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 421; text="Num\nLock"; };
+};
+
+xkb_geometry "type4_ca" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type4
+ // Canadian and British keyboard with an extra key between
+ // the Shift_L
+ // and the Z keys.
+
+ description= "Sun Type4_uk keyboard";
+
+ width= 452;
+ height= 185;
+
+ shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "DELE" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 17;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <BKSL>, { <DELE>, "DELE" },
+ { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <ESC>, 9 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ { <BKSP>, "BKSP" },
+ { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
+
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>,
+ { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>,
+ { <LCTL>, 9, shape="LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>,
+ { <KP4>, 33 }, <KP5>, <KP6>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>,
+ { <LFSH>, 9 }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }, <LNFD>,
+ { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
+ };
+ };
+ row {
+ top= 96;
+ keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
+ <LALT>, <LMTA>, { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>,
+ { <KP0>, 9, shape="KP0" }, <KPDL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 28;
+ left= 358;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 43;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 364; };
+ indicator "Compose" { left= 383; };
+ indicator "ScrollLock" { left= 402; };
+ indicator "NumLock" { left= 421; };
+ text.top= 34;
+ text.color= "black";
+ text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 380; text="Compose"; };
+ text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; }
+;
+ text "NumLockLabel" { left= 421; text="Num\nLock"; };
+};
+
+xkb_geometry "type4jp" {
+
+ // This is an approximate layout for a Japanese Sun Type4
+ // keyboard, based on the European TUV keyboard. It has two keys
+ // above the Bksp key, instead of a large delete key, but lacks
+ // the extra key between Shift_L and Z.
+
+ description= "Sun Japanese Type4 keyboard";
+
+ width= 452;
+ height= 185;
+
+ shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LFSH" { { [ 41,18] }, { [2,1], [39,17] } };
+ shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 17;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <FK01>, 9 }, <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ <BKSL>, <BRCR>,<DELE>,
+ { <PAUS>, 9 }, <PRSC>, <SCLK>, <NMLK>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <ESC>, 9 },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ { <BKSP>, "BKSP" },
+ { <KPEQ>, 9 }, <KPDV>, <KPMU>, <KPSU>
+
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>,
+ { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" },
+ { <KP7>, 9 }, <KP8>, <KP9>, { <KPAD>, "KPAD" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>,
+ { <LCTL>, 9, shape="LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <TLDE>,
+ { <KP4>, 33 }, <KP5>, <KP6>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>,
+ { <LFSH>, 9, shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <LNFD>, { <RTSH>, "RTSH" },
+ { <KP1>, 9} , <KP2>, <KP3>, { <KPEN>, "KPAD" }
+ };
+ };
+ row {
+ top= 96;
+ keys { { <HELP>, "HELP" }, { <CAPS>, 9 },
+ <LALT>, <LMTA>, { <EXEC>, "EXEC"} , { <SPCE>, "SPCE" },
+ { <KANJ>, "KANJ" }, <HENK>, <RMTA>, <COMP>, <ALGR>,
+ { <KP0>, 9, shape="KP0" }, <KPDL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 28;
+ left= 358;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 43;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 364; };
+ indicator "Compose" { left= 383; };
+ indicator "ScrollLock" { left= 402; };
+ indicator "NumLock" { left= 421; };
+ text.top= 34;
+ text.color= "black";
+ text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 380; text="Compose"; };
+ text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 421; text="Num\nLock"; };
+};
+
+xkb_geometry "t5" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type5
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+};
+
+xkb_geometry "t5tuv" {
+
+ // This is an approximate layout for a TUV/European Sun Type5 keyboard.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [157,18] }, { [2,1], [155,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+};
+
+
+xkb_geometry "t5jp" {
+
+ // This is an approximate layout for a Japanese Sun Type5 keyboard.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9 },
+ <LALT>, <LMTA>, { <EXEC>, "EXEC" },
+ { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+};
+
+xkb_geometry "t5unix" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type5
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [157,18] }, { [2,1], [155,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <NONE>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <ESC>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ <BKSL>, <TLDE>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <LCTL>, 9, shape="LCTL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <CAPS>, 9, shape="CAPS" },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+};
+
+xkb_geometry "t5hobo" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type5
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+ //
+ // I modified this to look like the hobo keyboard.
+
+ width= 425;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "FKEY";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
+ { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
+ { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }, <ALGR>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <NMLK>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+};
+
+xkb_geometry "t5tuvhobo" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type5
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+ //
+ // I modified this to look like the hobo keyboard.
+
+ width= 425;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "BKSL" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
+ shape "RTSH" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [156,18] }, { [2,1], [154,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "FKEY";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
+ { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
+ { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }, <ALGR>
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE" },
+ <RMTA>, <COMP>, <NMLK>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+};
+
+xkb_geometry "t5jphobo" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type5
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 425;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 425, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "FKEY" { { [ 15,18] }, { [0.5,0.5], [14.5, 17.5] } };
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [ 97,18] }, { [2,1], [95,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "FKEY";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 4 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 4 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 4 }, <FK10>, <FK11>, <FK12>,
+ { <MUTE>, 4 }, <VOL->, <VOL+>, <POWR>,
+ { <PRSC>, 9, "NORM" }, {<SCLK>, "NORM"}, {<PAUS>, "NORM"}
+ };
+ };
+ }; // End of "Function" section
+
+ key.shape= "NORM";
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9 },
+ <LALT>, <LMTA>, { <EXEC>, "EXEC" },
+ { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+};
+
+xkb_geometry "type5_se" {
+
+ // kbd: type = 4, layout = 43
+
+ description= "Sun Type5 keyboard (Sweden)";
+
+ width= 510;
+ height= 170;
+
+ baseColor= "grey";
+ labelColor= "black";
+
+ shape.cornerRadius= 1;
+
+ shape "EDGE" { cornerRadius= 2, { [ 510, 170 ] } };
+ shape "LOGO" { cornerRadius= 2,
+ { [ 0, 8], [ 8, 16], [ 16, 8], [ 8, 0] }
+ };
+
+ shape "NORM" { { [ 18, 18] }, { [ 2, 1], [ 16, 17] } };
+ shape "BKSP" { { [ 38, 18] }, { [ 2, 1], [ 36, 17] } };
+ shape "TABK" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
+ shape "RTRN" {
+ { [ 0, 0], [ 29, 0], [ 29, 37], [ 5, 37], [ 5, 18], [ 0, 18] },
+ { [ 2, 1], [ 27, 1], [ 27, 36], [ 7, 36], [ 7, 17], [ 2, 17] }
+ };
+ shape "CAPS" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
+ shape "LFSH" { { [ 24, 18] }, { [ 2, 1], [ 22, 17 ] } };
+ shape "RTSH" { { [ 51, 18] }, { [ 2, 1], [ 49, 17 ] } };
+ shape "LCTL" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
+ shape "MODK" { { [ 28, 18] }, { [ 2, 1], [ 26, 17 ] } };
+ shape "SPCE" { { [157, 18] }, { [ 2, 1], [155, 17 ] } };
+ shape "KP0" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
+ shape "KPAD" { { [ 18, 37] }, { [ 2, 1], [ 16, 36 ] } };
+ shape "HELP" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
+
+ section "Function" {
+ key.color= "grey10";
+ priority= 1;
+ top= 24;
+ left= 14;
+ width= 481;
+ height= 19;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <HELP>, "HELP", 1 }, { <ESC>, "NORM", 9 },
+ { <FK01>, "NORM", 19 }, { <FK02>, "NORM", 1 },
+ { <FK03>, "NORM", 1 }, { <FK04>, "NORM", 1 },
+ { <FK05>, "NORM", 11 }, { <FK06>, "NORM", 1 },
+ { <FK07>, "NORM", 1 }, { <FK08>, "NORM", 1 },
+ { <FK09>, "NORM", 11 }, { <FK10>, "NORM", 1 },
+ { <FK11>, "NORM", 1 }, { <FK12>, "NORM", 1 },
+ { <PRSC>, "NORM", 9 }, { <SCLK>, "NORM", 1 },
+ { <PAUS>, "NORM", 1 }, { <MUTE>, "NORM", 11 },
+ { <VOL->, "NORM", 1 }, { <VOL+>, "NORM", 1 },
+ { <POWR>, "NORM", 1, color= "white" }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ key.color= "white";
+ priority= 2;
+ top= 61;
+ left= 14;
+ width= 333;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <STOP>, "NORM", 1, color= "grey10" },
+ { <AGAI>, "NORM", 1, color= "grey10" },
+ { <TLDE>, "NORM", 9 }, { <AE01>, "NORM", 1 },
+ { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
+ { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
+ { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
+ { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
+ { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
+ { <AE12>, "NORM", 1 },
+ { <BKSP>, "BKSP", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <PROP>, "NORM", 1, color= "grey10" },
+ { <UNDO>, "NORM", 1, color= "grey10" },
+ { <TAB>, "TABK", 9, color= "grey10" },
+ { <AD01>, "NORM", 1 },
+ { <AD02>, "NORM", 1 }, { <AD03>, "NORM", 1 },
+ { <AD04>, "NORM", 1 }, { <AD05>, "NORM", 1 },
+ { <AD06>, "NORM", 1 }, { <AD07>, "NORM", 1 },
+ { <AD08>, "NORM", 1 }, { <AD09>, "NORM", 1 },
+ { <AD10>, "NORM", 1 }, { <AD11>, "NORM", 1 },
+ { <AD12>, "NORM", 1 },
+ { <RTRN>, "RTRN", 1, color= "grey10" }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <FRNT>, "NORM", 1, color= "grey10" },
+ { <COPY>, "NORM", 1, color= "grey10" },
+ { <CAPS>, "CAPS", 9, color= "grey10" },
+ { <AC01>, "NORM", 1 },
+ { <AC02>, "NORM", 1 }, { <AC03>, "NORM", 1 },
+ { <AC04>, "NORM", 1 }, { <AC05>, "NORM", 1 },
+ { <AC06>, "NORM", 1 }, { <AC07>, "NORM", 1 },
+ { <AC08>, "NORM", 1 }, { <AC09>, "NORM", 1 },
+ { <AC10>, "NORM", 1 }, { <AC11>, "NORM", 1 },
+ { <AC12>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <OPEN>, "NORM", 1, color= "grey10" },
+ { <PAST>, "NORM", 1, color= "grey10" },
+ { <LFSH>, "LFSH", 9, color= "grey10" },
+ { <AB00>, "NORM", 1 }, { <AB01>, "NORM", 1 },
+ { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
+ { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
+ { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
+ { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
+ { <AB10>, "NORM", 1 },
+ { <RTSH>, "RTSH", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ key.color= "grey10";
+ keys {
+ { <FIND>, "NORM", 1 }, { <CUT>, "NORM", 1 },
+ { <LCTL>, "LCTL", 9 }, { <LALT>, "NORM", 1 },
+ { <LMTA>, "NORM", 1 },
+ { <SPCE>, "SPCE", 1, color= "white" },
+ { <RMTA>, "NORM", 1 }, { <COMP>, "NORM", 1 },
+ { <ALGR>, "NORM", 1 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ key.color= "grey10";
+ priority= 3;
+ top= 61;
+ left= 352;
+ width= 58;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
+ { <PGUP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
+ { <PGDN>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys {
+ { <UP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
+ { <RGHT>, "NORM", 1 }
+ };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ key.color= "white";
+ priority= 4;
+ top= 61;
+ left= 420;
+ width= 77;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ key.color= "grey10";
+ keys {
+ { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
+ { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <KP7>, "NORM", 1 }, { <KP8>, "NORM", 1 },
+ { <KP9>, "NORM", 1 },
+ { <KPAD>, "KPAD", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <KP4>, "NORM", 1 }, { <KP5>, "NORM", 1 },
+ { <KP6>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <KP1>, "NORM", 1 }, { <KP2>, "NORM", 1 },
+ { <KP3>, "NORM", 1 },
+ { <KPEN>, "KPAD", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <KP0>, "KP0", 1 }, { <KPDL>, "NORM", 1 }
+ };
+ };
+ }; // End of "Keypad" section
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ priority= 0;
+ shape= "EDGE";
+ };
+
+ solid "Logos" {
+ color= "blue";
+ top= 5;
+ left= 25;
+ priority= 0;
+ shape= "LOGO";
+ };
+
+ logo "SUNLogoImage" {
+ top= 5;
+ left= 25;
+ name= "SUN";
+ priority= 1;
+ shape= "LOGO";
+ };
+
+ shape "LED" { cornerRadius= 1,
+ { [ 0, 1.5], [ 1.5, 3], [ 3, 1.5], [ 1.5, 0] }
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.shape= "LED";
+ indicator "Caps Lock" { left= 75; top= 103; priority= 5; };
+ indicator "Compose" { left= 314; top= 142; priority= 5; };
+ indicator "Scroll Lock" { left= 378; top= 29; };
+ indicator "Num Lock" { left= 426; top= 66; };
+};
+
+xkb_geometry "type5c_se" {
+
+ // kbd: type = 4, layout = 43
+
+ description= "Sun Type5c keyboard (Sweden)";
+
+ width= 510;
+ height= 170;
+
+ baseColor= "grey";
+ labelColor= "black";
+
+ shape.cornerRadius= 1;
+
+ shape "EDGE" { cornerRadius= 2, { [ 510, 170 ] } };
+ shape "LOGO" { cornerRadius= 2,
+ { [ 0, 8], [ 8, 16], [ 16, 8], [ 8, 0] }
+ };
+
+ shape "NORM" { { [ 18, 18] }, { [ 2, 1], [ 16, 17] } };
+ shape "BKSP" { { [ 38, 18] }, { [ 2, 1], [ 36, 17] } };
+ shape "TABK" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
+ shape "META" { { [ 27, 18] }, { [ 2, 1], [ 25, 17] } };
+ shape "RTRN" {
+ { [ 0, 0], [ 29, 0], [ 29, 37], [ 5, 37], [ 5, 18], [ 0, 18] },
+ { [ 2, 1], [ 27, 1], [ 27, 36], [ 7, 36], [ 7, 17], [ 2, 17] }
+ };
+ shape "CAPS" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
+ shape "LFSH" { { [ 24, 18] }, { [ 2, 1], [ 22, 17 ] } };
+ shape "RTSH" { { [ 51, 18] }, { [ 2, 1], [ 49, 17 ] } };
+ shape "LCTL" { { [ 32, 18] }, { [ 2, 1], [ 30, 17 ] } };
+ shape "MODK" { { [ 28, 18] }, { [ 2, 1], [ 26, 17 ] } };
+ shape "SPCE" { { [139, 18] }, { [ 2, 1], [137, 17 ] } };
+ shape "KP0" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
+ shape "KPAD" { { [ 18, 37] }, { [ 2, 1], [ 16, 36 ] } };
+ shape "HELP" { { [ 37, 18] }, { [ 2, 1], [ 35, 17 ] } };
+
+ section "Function" {
+ key.color= "grey10";
+ priority= 1;
+ top= 24;
+ left= 14;
+ width= 481;
+ height= 19;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <HELP>, "HELP", 1 }, { <ESC>, "NORM", 9 },
+ { <FK01>, "NORM", 19 }, { <FK02>, "NORM", 1 },
+ { <FK03>, "NORM", 1 }, { <FK04>, "NORM", 1 },
+ { <FK05>, "NORM", 11 }, { <FK06>, "NORM", 1 },
+ { <FK07>, "NORM", 1 }, { <FK08>, "NORM", 1 },
+ { <FK09>, "NORM", 11 }, { <FK10>, "NORM", 1 },
+ { <FK11>, "NORM", 1 }, { <FK12>, "NORM", 1 },
+ { <PRSC>, "NORM", 9 }, { <SCLK>, "NORM", 1 },
+ { <PAUS>, "NORM", 1 }, { <MUTE>, "NORM", 11 },
+ { <VOL->, "NORM", 1 }, { <VOL+>, "NORM", 1 },
+ { <POWR>, "NORM", 1, color= "white" }
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ key.color= "white";
+ priority= 2;
+ top= 61;
+ left= 14;
+ width= 333;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <STOP>, "NORM", 1, color= "grey10" },
+ { <AGAI>, "NORM", 1, color= "grey10" },
+ { <TLDE>, "NORM", 9 }, { <AE01>, "NORM", 1 },
+ { <AE02>, "NORM", 1 }, { <AE03>, "NORM", 1 },
+ { <AE04>, "NORM", 1 }, { <AE05>, "NORM", 1 },
+ { <AE06>, "NORM", 1 }, { <AE07>, "NORM", 1 },
+ { <AE08>, "NORM", 1 }, { <AE09>, "NORM", 1 },
+ { <AE10>, "NORM", 1 }, { <AE11>, "NORM", 1 },
+ { <AE12>, "NORM", 1 },
+ { <BKSP>, "BKSP", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <PROP>, "NORM", 1, color= "grey10" },
+ { <UNDO>, "NORM", 1, color= "grey10" },
+ { <TAB>, "TABK", 9, color= "grey10" },
+ { <AD01>, "NORM", 1 },
+ { <AD02>, "NORM", 1 }, { <AD03>, "NORM", 1 },
+ { <AD04>, "NORM", 1 }, { <AD05>, "NORM", 1 },
+ { <AD06>, "NORM", 1 }, { <AD07>, "NORM", 1 },
+ { <AD08>, "NORM", 1 }, { <AD09>, "NORM", 1 },
+ { <AD10>, "NORM", 1 }, { <AD11>, "NORM", 1 },
+ { <AD12>, "NORM", 1 },
+ { <RTRN>, "RTRN", 1, color= "grey10" }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <FRNT>, "NORM", 1, color= "grey10" },
+ { <COPY>, "NORM", 1, color= "grey10" },
+ { <CAPS>, "CAPS", 9, color= "grey10" },
+ { <AC01>, "NORM", 1 },
+ { <AC02>, "NORM", 1 }, { <AC03>, "NORM", 1 },
+ { <AC04>, "NORM", 1 }, { <AC05>, "NORM", 1 },
+ { <AC06>, "NORM", 1 }, { <AC07>, "NORM", 1 },
+ { <AC08>, "NORM", 1 }, { <AC09>, "NORM", 1 },
+ { <AC10>, "NORM", 1 }, { <AC11>, "NORM", 1 },
+ { <AC12>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <OPEN>, "NORM", 1, color= "grey10" },
+ { <PAST>, "NORM", 1, color= "grey10" },
+ { <LFSH>, "LFSH", 9, color= "grey10" },
+ { <AB00>, "NORM", 1 }, { <AB01>, "NORM", 1 },
+ { <AB02>, "NORM", 1 }, { <AB03>, "NORM", 1 },
+ { <AB04>, "NORM", 1 }, { <AB05>, "NORM", 1 },
+ { <AB06>, "NORM", 1 }, { <AB07>, "NORM", 1 },
+ { <AB08>, "NORM", 1 }, { <AB09>, "NORM", 1 },
+ { <AB10>, "NORM", 1 },
+ { <RTSH>, "RTSH", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ key.color= "grey10";
+ keys {
+ { <FIND>, "NORM", 1 }, { <CUT>, "NORM", 1 },
+ { <LCTL>, "LCTL", 9 }, { <LALT>, "NORM", 1 },
+ { <LMTA>, "META", 1 },
+ { <SPCE>, "SPCE", 1, color= "white" },
+ { <RMTA>, "META", 1 }, { <COMP>, "NORM", 1 },
+ { <ALGR>, "NORM", 1 }
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ key.color= "grey10";
+ priority= 3;
+ top= 61;
+ left= 352;
+ width= 58;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ keys {
+ { <INS>, "NORM", 1 }, { <HOME>, "NORM", 1 },
+ { <PGUP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <DELE>, "NORM", 1 }, { <END>, "NORM", 1 },
+ { <PGDN>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys {
+ { <UP>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <LEFT>, "NORM", 1 }, { <DOWN>, "NORM", 1 },
+ { <RGHT>, "NORM", 1 }
+ };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ key.color= "white";
+ priority= 4;
+ top= 61;
+ left= 420;
+ width= 77;
+ height= 95;
+ row {
+ top= 1;
+ left= 1;
+ key.color= "grey10";
+ keys {
+ { <NMLK>, "NORM", 1 }, { <KPDV>, "NORM", 1 },
+ { <KPMU>, "NORM", 1 }, { <KPSU>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 20;
+ left= 1;
+ keys {
+ { <KP7>, "NORM", 1 }, { <KP8>, "NORM", 1 },
+ { <KP9>, "NORM", 1 },
+ { <KPAD>, "KPAD", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 39;
+ left= 1;
+ keys {
+ { <KP4>, "NORM", 1 }, { <KP5>, "NORM", 1 },
+ { <KP6>, "NORM", 1 }
+ };
+ };
+ row {
+ top= 58;
+ left= 1;
+ keys {
+ { <KP1>, "NORM", 1 }, { <KP2>, "NORM", 1 },
+ { <KP3>, "NORM", 1 },
+ { <KPEN>, "KPAD", 1, color="grey10" }
+ };
+ };
+ row {
+ top= 77;
+ left= 1;
+ keys {
+ { <KP0>, "KP0", 1 }, { <KPDL>, "NORM", 1 }
+ };
+ };
+ }; // End of "Keypad" section
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ priority= 0;
+ shape= "EDGE";
+ };
+
+ solid "Logos" {
+ color= "blue";
+ top= 5;
+ left= 15;
+ priority= 0;
+ shape= "LOGO";
+ };
+
+ logo "SUNLogoImage" {
+ top= 5;
+ left= 15;
+ name= "SUN";
+ priority= 1;
+ shape= "LOGO";
+ };
+
+ text.font= "charter";
+ text.weight= "medium";
+ text.slant= "i";
+ text.fontSize= 40;
+ text "SunLogoText" {
+ top= 5;
+ left= 32;
+ color= "blue";
+ text= "Sun";
+ };
+
+ shape "LED" { cornerRadius= 1,
+ { [ 0, 1.5], [ 1.5, 3], [ 3, 1.5], [ 1.5, 0] }
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.shape= "LED";
+ indicator "Caps Lock" { left= 75; top= 103; priority= 5; };
+ indicator "Compose" { left= 314; top= 142; priority= 5; };
+ indicator "Scroll Lock" { left= 378; top= 29; };
+ indicator "Num Lock" { left= 426; top= 66; };
+};
+
+xkb_geometry "type4_se" {
+
+ // kbd: type = 4, layout = 11
+
+ description= "Sun Type4 keyboard (Sweden)";
+
+
+ width= 453;
+ height= 183;
+
+ baseColor= "grey";
+ labelColor= "black";
+
+ shape "EDGE" { cornerRadius= 2, { [ 452, 185 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "DELE" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,19], [ 0,19] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,18], [ 1,18] }
+ };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 22,18] }, { [2,1], [20,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [170,18] }, { [2,1], [168,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 17;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+
+ section "Alpha" {
+ top= 58;
+ row {
+ top= 1;
+ key.color= "grey10";
+ keys { <STOP>, <AGAI>, { <FK01>, 9 },
+ <FK02>, <FK03>, <FK04>,
+ <FK05>, <FK06>, <FK07>, <FK08>,
+ <FK09>, <FK10>, <FK11>, <FK12>,
+ { <AF13>, color= "white"},
+ { <AF14>, color= "white"},
+ <DELE>, { <PAUS>, 9 },
+ <PRSC>, <SCLK>, <NMLK>
+ };
+ };
+ row {
+ top= 20;
+ key.color= "white";
+ keys {
+ { <PROP>, color= "grey10" },
+ { <UNDO>, color= "grey10" },
+ { <ESC>, 9, color= "grey10" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ <AE06>, <AE07>, <AE08>, <AE09>, <AE10>,
+ <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color= "grey10" },
+ { <KPEQ>, 9, color= "grey10" },
+ { <KPDV>, color= "grey10" },
+ { <KPMU>, color= "grey10" },
+ { <KPSU>, color= "grey10" }
+ };
+ };
+ row {
+ top= 39;
+ key.color= "white";
+ keys {
+ { <FRNT>, color= "grey10" },
+ { <COPY>, color= "grey10" },
+ { <TAB>, 9, "TABK", color= "grey10" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN", color= "grey10" },
+ { <KP7>, 9, color= "grey10" },
+ { <KP8>, color= "grey10" },
+ { <KP9>, color= "grey10" },
+ { <KPAD>, "KPAD", color= "grey10" }
+ };
+ };
+ row {
+ top= 58;
+ key.color= "white";
+ keys {
+ { <OPEN>, color= "grey10" },
+ { <PAST>, color= "grey10" },
+ { <CAPS>, 9, "LCTL", color= "grey10" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>,
+ { <KP4>, 33, color= "grey10" },
+ { <KP5>, color= "grey10" },
+ { <KP6>, color= "grey10" }
+ };
+ };
+ row {
+ top= 77;
+ key.color= "white";
+ keys {
+ { <FIND>, color= "grey10" },
+ { <CUT>, color= "grey10" },
+ { <LFSH>, 9 , "LFSH", color= "grey10" },
+ <AB00>, <AB01>, <AB02>, <AB03>,
+ <AB04>, <AB05>, <AB06>, <AB07>,
+ <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color= "grey10" },
+ { <LNFD>, color= "grey10" },
+ { <KP1>, 9, color= "grey10" },
+ { <KP2>, color= "grey10" },
+ { <KP3>, color= "grey10" },
+ { <KPEN>, "KPAD", color= "grey10" }
+ };
+ };
+ row {
+ top= 96;
+ key.color= "grey10";
+ keys {
+ { <HELP>, "HELP" }, { <LCTL>, 9 },
+ <LALT>, <LMTA>,
+ { <SPCE>, "SPCE", color= "white" },
+ <RMTA>, <COMP>, <ALGR>,
+ { <KP0>, 9, "KP0" }, <KPDL>
+ };
+ };
+ }; // End of "Alpha" section
+
+ shape "RIDGE" { cornerRadius= 1, { [ 0, 1], [ 1, 0 ],
+ [330, 0], [331, 1],
+ [330, 2], [ 1, 2] } };
+ solid "Ridge" {
+ shape= "RIDGE";
+ top= 48;
+ left= 18;
+ };
+
+ shape "LEDS" { cornerRadius= 1, { [ 75 ,21 ] } };
+ shape "LED" { cornerRadius= 0, { [ 7, 4 ] } };
+ outline "LedPanel" {
+ shape= "LEDS";
+ top= 28;
+ left= 358;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 43;
+ indicator.shape= "LED";
+ indicator "Caps Lock" { left= 364; };
+ indicator "Compose" { left= 383; };
+ indicator "Scroll Lock" { left= 402; };
+ indicator "Num Lock" { left= 421; };
+ text.top= 32;
+ text.color= "black";
+ text "CapsLockLabel" { left= 364; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 380; text="\nCompose"; };
+ text "ScrollLockLabel" { left= 402; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 421; text="Num\nLock"; };
+};
+
+xkb_geometry "t6" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type6
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "BKSL" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [136,18] }, { [2,1], [134,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, { <LMTA>, "LMTA" },
+ { <SPCE>, "SPCE" },
+ { <RMTA>, "RMTA" }, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 1;
+ left= 218;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 10;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 243; };
+ indicator "Compose" { left= 281; };
+ indicator "ScrollLock" { left= 262; };
+ indicator "NumLock" { left= 224; };
+ text.top= 1;
+ text.color= "black";
+ text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 281; text="Compose"; };
+ text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 224; text="Num\nLock"; };
+
+
+};
+
+xkb_geometry "t6tuv" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type6
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 24,18] }, { [2,1], [22,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [137,18] }, { [2,1], [135,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" }, <LSGT>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, { <LMTA>, "LMTA" },
+ { <SPCE>, "SPCE" },
+ { <RMTA>, "RMTA" }, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 1;
+ left= 218;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 10;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 243; };
+ indicator "Compose" { left= 281; };
+ indicator "ScrollLock" { left= 262; };
+ indicator "NumLock" { left= 224; };
+ text.top= 1;
+ text.color= "black";
+ text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 281; text="Compose"; };
+ text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 224; text="Num\nLock"; };
+
+};
+
+xkb_geometry "t6jp" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type6
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "KANJ" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "EXEC" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" {
+ approx = { [ 0, 0], [28,37] },
+ { [ 0, 0], [28, 0], [28,37],
+ [ 5,37], [ 5,18], [ 0,18] },
+ { [ 1, 1], [26, 1], [26,36],
+ [ 7,36], [ 7,17], [ 1,17] }
+ };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 33,18] }, { [2,1], [31,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [ 96,18] }, { [2,1], [94,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <ESC>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <TLDE>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <BKSL>
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <UNDR>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9 },
+ <LALT>, <LMTA>, { <EXEC>, "EXEC" },
+ { <SPCE>, "SPCE" }, { <KANJ>, "KANJ" }, <HENK>,
+ <RMTA>, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 1;
+ left= 218;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 10;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 243; };
+ indicator "Compose" { left= 281; };
+ indicator "ScrollLock" { left= 262; };
+ indicator "NumLock" { left= 224; };
+ text.top= 1;
+ text.color= "black";
+ text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 281; text="Compose"; };
+ text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 224; text="Num\nLock"; };
+
+};
+
+xkb_geometry "t6unix" {
+
+ // This is an approximate layout for a (US/ASCII) Sun Type6
+ // keyboard. I just took a similar layout (101 key PC keyboard)
+ // and adjusted the sizes.
+
+ width= 515;
+ height= 170;
+
+ shape "EDGE" { cornerRadius= 2, { [ 515, 170 ] } };
+ shape.cornerRadius= 1;
+ shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } };
+ shape "BKSP" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "TABK" { { [ 27,18] }, { [2,1], [25,17] } };
+ shape "RTRN" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "CAPS" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "LFSH" { { [ 42,18] }, { [2,1], [40,17] } };
+ shape "RTSH" { { [ 51,18] }, { [2,1], [49,17] } };
+ shape "LCTL" { { [ 32,18] }, { [2,1], [30,17] } };
+ shape "MODK" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "SPCE" { { [136,18] }, { [2,1], [134,17] } };
+ shape "KP0" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "KPAD" { { [ 18,37] }, { [2,1], [16,36] } };
+ shape "HELP" { { [ 37,18] }, { [2,1], [35,17] } };
+ shape "RMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "LMTA" { { [ 28,18] }, { [2,1], [26,17] } };
+ shape "LOGO" { { [ 16,16] } };
+
+ outline "Edges" {
+ top= 0;
+ left= 0;
+ shape= "EDGE";
+ };
+
+ section.left= 14;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 1;
+ section "Function" {
+ top= 24;
+ row {
+ top= 1;
+ keys { { <HELP>, "HELP" }, { <NONE>, 9 },
+ { <FK01>, 19 }, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 11 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 11 }, <FK10>, <FK11>, <FK12>,
+ { <PRSC>, 9 }, <SCLK>, <PAUS>,
+ { <MUTE>, 9 }, <VOL->, <VOL+>, <POWR>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Alpha" {
+ top= 61;
+ row {
+ top= 1;
+ keys { <STOP>, <AGAI>,
+ { <ESC>, 9}, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>,
+ <BKSL>, <TLDE>
+ };
+ };
+ row {
+ top= 20;
+ keys { <PROP>, <UNDO>, { <TAB>, 9, shape="TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>,
+ { <BKSP>, "BKSP", color="grey20" }
+ };
+ };
+ row {
+ top= 39;
+ keys { <FRNT>, <COPY>, { <CAPS>, 9, shape="CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top= 58;
+ keys { <OPEN>, <PAST>, { <LFSH>, 9 , shape="LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH", color="grey20" }
+ };
+ };
+ row {
+ top= 77;
+ keys { <FIND>, <CUT>, { <LCTL>, 9, shape="LCTL" },
+ <LALT>, {<LMTA>, "LMTA"},
+ { <SPCE>, "SPCE" },
+ {<RMTA>, "RMTA"}, <COMP>, <ALGR>
+ };
+ };
+ }; // End of "Alpha" section
+
+ section "Editing" {
+ top= 61;
+ left= 352;
+ row {
+ top= 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top= 20;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ row {
+ top= 58;
+ left= 20;
+ keys { <UP> };
+ };
+ row {
+ top= 77;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Editing" section
+
+ section "Keypad" {
+ top= 61;
+ left= 420;
+ row {
+ top= 1;
+ keys { <NMLK>, <KPDV>, <KPMU>, <KPSU> };
+ };
+ row {
+ top= 20;
+ keys { <KP7>, <KP8>, <KP9>, { <KPAD>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 39;
+ keys { <KP4>, <KP5>, <KP6> };
+ };
+ row {
+ top= 58;
+ keys { <KP1>, <KP2>, <KP3>, { <KPEN>, "KPAD", color= "grey20" } };
+ };
+ row {
+ top= 77;
+ keys { { <KP0>, "KP0" }, <KPDL> };
+ };
+ }; // End of "Keypad" section
+
+ shape "LEDS" { cornerRadius= 0, { [ 78 ,21 ] } };
+ shape "LED" { cornerRadius= 2, { [ 3, 6 ] } };
+ solid "LedPanel" {
+ shape= "LEDS";
+ top= 1;
+ left= 218;
+ };
+ indicator.onColor= "green";
+ indicator.offColor= "green30";
+ indicator.top= 10;
+ indicator.shape= "LED";
+ indicator "CapsLock" { left= 243; };
+ indicator "Compose" { left= 281; };
+ indicator "ScrollLock" { left= 262; };
+ indicator "NumLock" { left= 224; };
+ text.top= 1;
+ text.color= "black";
+ text "CapsLockLabel" { left= 243; text="Caps\nLock"; };
+ text "ComposeLabel" { left= 281; text="Compose"; };
+ text "ScrollLockLabel" { left= 262; text="Scroll\nLock"; };
+ text "NumLockLabel" { left= 224; text="Num\nLock"; };
+};
+
+xkb_geometry "type5" {
+ include "sun(t5)"
+ description= "Sun Type5 keyboard";
+};
+
+xkb_geometry "type5jp" {
+ include "sun(t5jp)"
+ description= "Sun Type5 Japanese keyboard";
+};
+
+xkb_geometry "type5tuv" {
+ include "sun(t5tuv)"
+ description= "Sun Type5 keyboard";
+};
+
+xkb_geometry "type5euro" {
+ include "sun(t5tuv)"
+ description= "Sun Type5 keyboard";
+};
+
+xkb_geometry "type5unix" {
+ include "sun(t5unix)"
+ description= "Sun Type5 Unix keyboard";
+};
+
+xkb_geometry "type5hobo" {
+ include "sun(t5hobo)"
+ description= "Sun Type5 Hobo keyboard";
+};
+
+xkb_geometry "type5tuvhobo" {
+ include "sun(t5tuvhobo)"
+ description= "Sun Type5 Hobo keyboard";
+};
+
+xkb_geometry "type5jphobo" {
+ include "sun(t5jphobo)"
+ description= "Sun Type5 Japanese Hobo keyboard";
+};
+
+default xkb_geometry "type6" {
+ include "sun(t6)"
+ description= "Sun Type6 keyboard (US, Korea, Taiwan)";
+};
+
+xkb_geometry "type6jp" {
+ include "sun(t6jp)"
+ description= "Sun Type6 Japanese keyboard";
+};
+
+xkb_geometry "type6tuv" {
+ include "sun(t6tuv)"
+ description= "Sun Type6 TUV keyboard";
+};
+
+xkb_geometry "type6unix" {
+ include "sun(t6unix)"
+ description= "Sun Type6 Unix keyboard";
+};
+
+xkb_geometry "x86" {
+ include "pc(pc101)"
+ description= "x86 Style Keyboard";
+};
+
+xkb_geometry "MS_x86" {
+ include "pc(pc104)"
+ description= "x86 104 Key Keyboard";
+};
+
+xkb_geometry "x86tuv" {
+ include "pc(pc102)"
+ description= "x86 European Style Keyboard";
+};
diff --git a/xorg-server/xkeyboard-config/geometry/thinkpad b/xorg-server/xkeyboard-config/geometry/thinkpad
index fb1118040..48e8cdcce 100644
--- a/xorg-server/xkeyboard-config/geometry/thinkpad
+++ b/xorg-server/xkeyboard-config/geometry/thinkpad
@@ -1,470 +1,470 @@
-// -*- indent-tabs-mode: nil -*-
-
-// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
-// Geometry specification for IBM ThinkPad keyboard.
-// Compatible Models: THINKPAD 560Z 2640-90U, THINKPAD 560Z 2640-91U,
-// THINKPAD 560Z 2640-B0U, THINKPAD 560Z 2640-B1U, THINKPAD 560Z 2640-RR3,
-// THINKPAD 600 2645-31U, THINKPAD 600 2645-35U, THINKPAD 600 2645-41U,
-// THINKPAD 600 2645-42U, THINKPAD 600 2645-45U, THINKPAD 600 2645-48U,
-// THINKPAD 600 2645-51U, THINKPAD 600 2645-85U, THINKPAD 600 2645-A1U,
-// THINKPAD 600 2645-RR1, THINKPAD 600 2645-RR2, THINKPAD 600E 2645-3AU,
-// THINKPAD 600E 2645-4AU, THINKPAD 600E 2645-4BU, THINKPAD 600E 2645-55U,
-// THINKPAD 600E 2645-5AU, THINKPAD 600E 2645-5BU, THINKPAD 600E 2645-5JU,
-// THINKPAD 600E 2645-8AO, THINKPAD 600E 2645-8AU, THINKPAD 600E 2645-8BU,
-// THINKPAD 600E 2645-AAU, THINKPAD 600E 2645-RRB, THINKPAD 600E 2645-RRD,
-// THINKPAD 600E 2645-RRF, THINKPAD 600E 2645-RRS, THINKPAD A22E 2645-45U
-
-xkb_geometry "common" {
- width = 290;
- height = 150;
- baseColor = "grey80";
- labelColor = "white";
-
- shape "FN0" { cornerRadius = 1, { [17, 12] }, { [2, 0], [15, 10] } };
- shape "NORM" { cornerRadius = 1, { [18, 18] }, { [2.5, 0], [15.5, 14] } };
- shape "BKSP" { cornerRadius = 1, { [37, 18] }, { [2.5, 0], [34.5, 14] } };
- shape "TABK" { cornerRadius = 1, { [27, 18] }, { [2.5, 0], [24.5, 14] } };
- shape "CAPS" { cornerRadius = 1, { [31, 18] }, { [1, 0], [30, 16] },
- { [1, 0], [26, 16] },
- { [2.5, 0], [24.5, 14] } };
- shape "RTSH" { cornerRadius = 1, { [50, 18] }, { [2.5, 0], [46.5, 14] } };
- shape "MODK" { cornerRadius = 1, { [27.5, 18] }, { [2.5, 0], [25, 14] } };
- shape "SPCE" { cornerRadius = 1, { [100, 18] }, { [2.5, 0], [97.5, 14] } };
- shape "ARRS" { cornerRadius = 1, { [16, 13] }, { [1.5, 0], [14.5, 11] } };
-
- shape "LED" { cornerRadius = 2, { [3, 3] } };
-
- shape "KEYS" { cornerRadius = 2,
- { [0, 0], [19, 0], [19, 13], [172, 13],
- [172, 0], [286, 0], [286, 138], [216, 138],
- [216, 124], [0, 124] } };
-
- solid "KeyPanel" {
- shape = "KEYS";
- left = 2;
- top = 5;
- color = "black";
- };
-
- shape "NULL1" { cornerRadius = 1,
- { [0, 0], [50, 0], [50, 18], [34, 18], [34, 4],
- [16, 4], [16, 18], [0, 18] } };
-
- solid "NullPanel1" {
- shape = "NULL1";
- left = 237;
- top = 110;
- color = "grey80";
- };
-
- shape "NULL2" { cornerRadius = 1, { [17, 13] } };
-
- solid "NullPanel2" {
- shape = "NULL2";
- left = 219;
- top = 129;
- color = "grey80";
- };
-
- shape "NULL3" { cornerRadius = 1,
- { [0, 26],
- [72, 26], [72, 13], [76, 13], [76, 26],
- [149, 26], [149, 13], [153, 13], [153, 26],
- [226, 26], [226, 0], [230, 0], [230, 26],
- [284, 26], [285, 27],
- [0, 27] } };
-
- solid "NullPanel3" {
- shape = "NULL3";
- left = 3;
- top = 6;
- color = "grey80";
- };
-
- indicator.onColor = "green";
- indicator.offColor = "grey10";
- indicator.top = 4;
- indicator.shape = "LED";
- indicator "HDDActivity" { onColor = "red"; left = 100; };
- indicator "Num Lock" { left = 108; };
- indicator "Caps Lock" { left = 114; };
- indicator "Scroll Lock" { left = 120; };
- indicator "Power" { left = 128; };
-
- key.gap = 1;
- key.color = "grey60";
-
- section "Function" {
- left = 2;
- top = 5;
- key.shape = "FN0";
- row {
- top = 1;
- keys { <ESC>, { <PRSC>, 155 }, <SCLK>, <PAUS> };
- };
- row {
- top = 14;
- keys { <FK01>, <FK02>, <FK03>, <FK04>,
- { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 6 }, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Control" {
- left= 2;
- top = 109;
- key.shape = "MODK";
- row {
- top = 1;
- keys { { <FN>, "NORM" }, <LCTL>, <LALT>,
- { <SPCE>, "SPCE" }, <RALT>, <RCTL>
- };
- };
- }; // End of "Control" section
-
- section "Editing" {
- top = 5;
- left = 233;
- key.shape = "FN0";
- row {
- top = 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top = 14;
- keys { <DELE>, <END>, <PGDN> };
- };
- }; // End of "Editing" section
-
- section "Navigation" {
- top = 114;
- left = 236;
- key.shape = "ARRS";
- row {
- top = 1;
- left = 17;
- keys { <UP> };
- };
- row {
- top = 15;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Navigation" section
-
- shape "STIK" { cornerRadius = 4, { [7, 7] } };
-
- solid "STIK" {
- priority = 255;
- color = "red";
- shape = "STIK";
- top = 85;
- left = 126;
- };
-};
-
-// 85 keys
-// US/English (FRU 02K4785).
-xkb_geometry "us" {
- include "thinkpad(common)"
- description = "IBM ThinkPad 560Z/600/600E/A22E, US";
-
- shape "RTRN" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } };
- shape "LFSH" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } };
- shape "BKSL" { cornerRadius = 1, { [28, 18] }, { [2.5, 0], [25.5, 14] } };
-
- section "Alpha" {
- left = 2;
- top = 33;
- key.gap = 1;
- key.color = "grey60";
- key.shape = "NORM";
- row {
- top = 1;
- keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top = 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top = 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- }; // End of "Alpha" section
-};
-
-// 86 keys
-// Tested on: DE/German, UK/English (FRU 02K4787).
-xkb_geometry "intl" {
- include "thinkpad(common)"
- description = "IBM ThinkPad 560Z/600/600E/A22E, Intl";
-
- shape "RTRN" { cornerRadius = 1, { [28, 0], [28, 37], [4, 37], [4, 18],
- [0, 18], [0, 0] },
- { [25.5, 0], [25.5, 33], [6.5, 33],
- [6.5, 14], [2.5, 14], [2.5, 0] } };
- shape "LFSH" { cornerRadius = 1, { [24, 18] }, { [2.5, 0], [21.5, 14] } };
-
- section "Alpha" {
- left = 2;
- top = 33;
- key.gap = 1;
- key.color = "grey60";
- key.shape = "NORM";
- row {
- top = 1;
- keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <RTRN>, "RTRN" }
- };
- };
- row {
- top = 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, <AC12>
- };
- };
- row {
- top = 58;
- keys { { <LFSH>, "LFSH" }, <AB00>,
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- }; // End of "Alpha" section
-};
-
-xkb_geometry "60" {
- width = 290;
- height = 140;
- baseColor = "grey80";
- labelColor = "white";
-
- shape "NORM" { cornerRadius = 1, { [18, 18] }, { [2, 0], [16, 16] } };
-
- shape "ESC" { cornerRadius = 1, { [17, 13] }, { [1.5, 0], [15.5, 12] } };
- shape "FN0" { cornerRadius = 1, { [17, 11] }, { [1.5, 0], [15.5, 10] } };
-
- shape "BKSP" { cornerRadius = 1, { [37, 18] }, { [2, 0], [35, 16] } };
-
- shape "TABK" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } };
- shape "BKSL" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } };
-
- shape "CAPS" { cornerRadius = 1, { [30.5, 18] }, { [2, 0], [28.5, 16] } };
- shape "RTRN" { cornerRadius = 1, { [43.5, 18] }, { [2, 0], [41.5, 16] } };
-
- shape "LFSH" { cornerRadius = 1, { [40, 18] }, { [2, 0], [38, 16] } };
- shape "RTSH" { cornerRadius = 1, { [53, 18] }, { [2, 0], [51, 16] } };
-
- shape "LCTL" { cornerRadius = 1, { [21, 18] }, { [2, 0], [19, 16] } };
- shape "LWIN" { cornerRadius = 1, { [15, 18] }, { [1.5, 0], [13.5, 16] } };
-
- shape "SPCE" { cornerRadius = 1, { [97, 18] }, { [2, 0], [95, 16] } };
-
- shape "ARR1" { cornerRadius = 1, { [17, 13] }, { [1.5, 0], [15.5, 12] } };
- shape "ARR2" { cornerRadius = 1, { [17, 11] }, { [1.5, 0], [15.5, 10] } };
-
- shape "VOL" { cornerRadius = 2.5, { [5, 5] } };
- shape "TVTG" { cornerRadius = 0.5, { [0, 1], [17, 1], [17, 4], [0, 4] } };
-
- shape "KEYS" { cornerRadius = 2,
- { [0, 0], [19, 0], [19, 16], [172, 16],
- [172, 4], [286, 4], [286, 133], [231, 133],
- [231, 126], [0, 126] } };
-
- solid "KeyPanel" {
- shape = "KEYS";
- left = 2;
- top = 3;
- color = "black";
- };
-
- shape "NULL0" { cornerRadius = 0.5,
- { [0, 26],
- [72, 26], [72, 14], [76, 14], [76, 26],
- [149, 26], [149, 14], [153, 14], [153, 26],
- [226, 26], [226, 2], [230, 2], [230, 26],
- [284, 26], [284, 27],
- [0, 27] } };
-
- solid "NullPanel0" {
- shape = "NULL0";
- left = 3;
- top = 6;
- color = "grey80";
- };
-
- shape "NULL1" { cornerRadius = 0.5, { [0, 12], [17, 12], [17, 13], [0, 13] } };
-
- solid "NullPanel1" {
- shape = "NULL1";
- left = 3;
- top = 6;
- color = "grey80";
- };
-
- shape "MEDIA" { cornerRadius = 0.5, { [0, 0], [55, 0], [55, 10], [0, 10] } };
-
- solid "MediaPanel" {
- shape = "MEDIA";
- left = 25.5;
- top = 6;
- color = "black";
- };
-
- section "Volume" {
- left = 22;
- top = 8.5;
- key.shape = "VOL";
- key.gap = 6;
- key.color = "grey20";
-
- row {
- keys { <MUTE>, <VOL->, <VOL+>, {<I1F>, "TVTG", color = "blue"} };
- };
- };
-
- key.gap = 1;
- key.color = "grey60";
-
- section "Function" {
- left = 2;
- top = 3;
- key.shape = "FN0";
- row {
- key.shape = "ESC";
- top = 1;
- keys { <ESC> };
- };
- row {
- top = 5;
- keys { { <PRSC>, 173 }, <SCLK>, <PAUS> };
- };
- row {
- top = 17;
- keys { <FK01>, <FK02>, <FK03>, <FK04>,
- { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
- { <FK09>, 6 }, <FK10>, <FK11>, <FK12>
- };
- };
- }; // End of "Function" section
-
- section "Control" {
- left = 2;
- top = 109;
- key.shape = "NORM";
- row {
- top = 1;
- keys { <FN>, { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, <LALT>,
- { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
- };
- };
- }; // End of "Control" section
-
- section "Editing" {
- top = 7;
- left = 233;
- key.shape = "FN0";
- row {
- top = 1;
- keys { <INS>, <HOME>, <PGUP> };
- };
- row {
- top = 13;
- keys { <DELE>, <END>, <PGDN> };
- };
- }; // End of "Editing" section
-
- section "Navigation" {
- top = 109;
- left = 233;
- row {
- key.shape = "ARR1";
- top = 1;
- keys { <I6A>, <UP>, <I69> };
- };
- row {
- key.shape = "ARR2";
- top = 15;
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- }; // End of "Navigation" section
-
- shape "STIK" { cornerRadius = 3.5, { [7, 7] } };
-
- solid "STIK" {
- priority = 255;
- color = "red";
- shape = "STIK";
- top = 85.5;
- left = 125.5;
- };
-
- section "Alpha" {
- left = 2;
- top = 33;
- key.shape = "NORM";
- row {
- top = 1;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
- <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
- <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
- };
- };
- row {
- top = 20;
- keys { { <TAB>, "TABK" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
- <AD11>, <AD12>, { <BKSL>, "BKSL" }
- };
- };
- row {
- top = 39;
- keys { { <CAPS>, "CAPS" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>, { <RTRN>, "RTRN", color = "blue" }
- };
- };
- row {
- top = 58;
- keys { { <LFSH>, "LFSH" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- { <RTSH>, "RTSH" }
- };
- };
- }; // End of "Alpha" section
-};
+// -*- indent-tabs-mode: nil -*-
+
+// Created by Alexander Pohoyda <alexander.pohoyda@gmx.net>
+// Geometry specification for IBM ThinkPad keyboard.
+// Compatible Models: THINKPAD 560Z 2640-90U, THINKPAD 560Z 2640-91U,
+// THINKPAD 560Z 2640-B0U, THINKPAD 560Z 2640-B1U, THINKPAD 560Z 2640-RR3,
+// THINKPAD 600 2645-31U, THINKPAD 600 2645-35U, THINKPAD 600 2645-41U,
+// THINKPAD 600 2645-42U, THINKPAD 600 2645-45U, THINKPAD 600 2645-48U,
+// THINKPAD 600 2645-51U, THINKPAD 600 2645-85U, THINKPAD 600 2645-A1U,
+// THINKPAD 600 2645-RR1, THINKPAD 600 2645-RR2, THINKPAD 600E 2645-3AU,
+// THINKPAD 600E 2645-4AU, THINKPAD 600E 2645-4BU, THINKPAD 600E 2645-55U,
+// THINKPAD 600E 2645-5AU, THINKPAD 600E 2645-5BU, THINKPAD 600E 2645-5JU,
+// THINKPAD 600E 2645-8AO, THINKPAD 600E 2645-8AU, THINKPAD 600E 2645-8BU,
+// THINKPAD 600E 2645-AAU, THINKPAD 600E 2645-RRB, THINKPAD 600E 2645-RRD,
+// THINKPAD 600E 2645-RRF, THINKPAD 600E 2645-RRS, THINKPAD A22E 2645-45U
+
+xkb_geometry "common" {
+ width = 290;
+ height = 150;
+ baseColor = "grey80";
+ labelColor = "white";
+
+ shape "FN0" { cornerRadius = 1, { [17, 12] }, { [2, 0], [15, 10] } };
+ shape "NORM" { cornerRadius = 1, { [18, 18] }, { [2.5, 0], [15.5, 14] } };
+ shape "BKSP" { cornerRadius = 1, { [37, 18] }, { [2.5, 0], [34.5, 14] } };
+ shape "TABK" { cornerRadius = 1, { [27, 18] }, { [2.5, 0], [24.5, 14] } };
+ shape "CAPS" { cornerRadius = 1, { [31, 18] }, { [1, 0], [30, 16] },
+ { [1, 0], [26, 16] },
+ { [2.5, 0], [24.5, 14] } };
+ shape "RTSH" { cornerRadius = 1, { [50, 18] }, { [2.5, 0], [46.5, 14] } };
+ shape "MODK" { cornerRadius = 1, { [27.5, 18] }, { [2.5, 0], [25, 14] } };
+ shape "SPCE" { cornerRadius = 1, { [100, 18] }, { [2.5, 0], [97.5, 14] } };
+ shape "ARRS" { cornerRadius = 1, { [16, 13] }, { [1.5, 0], [14.5, 11] } };
+
+ shape "LED" { cornerRadius = 2, { [3, 3] } };
+
+ shape "KEYS" { cornerRadius = 2,
+ { [0, 0], [19, 0], [19, 13], [172, 13],
+ [172, 0], [286, 0], [286, 138], [216, 138],
+ [216, 124], [0, 124] } };
+
+ solid "KeyPanel" {
+ shape = "KEYS";
+ left = 2;
+ top = 5;
+ color = "black";
+ };
+
+ shape "NULL1" { cornerRadius = 1,
+ { [0, 0], [50, 0], [50, 18], [34, 18], [34, 4],
+ [16, 4], [16, 18], [0, 18] } };
+
+ solid "NullPanel1" {
+ shape = "NULL1";
+ left = 237;
+ top = 110;
+ color = "grey80";
+ };
+
+ shape "NULL2" { cornerRadius = 1, { [17, 13] } };
+
+ solid "NullPanel2" {
+ shape = "NULL2";
+ left = 219;
+ top = 129;
+ color = "grey80";
+ };
+
+ shape "NULL3" { cornerRadius = 1,
+ { [0, 26],
+ [72, 26], [72, 13], [76, 13], [76, 26],
+ [149, 26], [149, 13], [153, 13], [153, 26],
+ [226, 26], [226, 0], [230, 0], [230, 26],
+ [284, 26], [285, 27],
+ [0, 27] } };
+
+ solid "NullPanel3" {
+ shape = "NULL3";
+ left = 3;
+ top = 6;
+ color = "grey80";
+ };
+
+ indicator.onColor = "green";
+ indicator.offColor = "grey10";
+ indicator.top = 4;
+ indicator.shape = "LED";
+ indicator "HDDActivity" { onColor = "red"; left = 100; };
+ indicator "Num Lock" { left = 108; };
+ indicator "Caps Lock" { left = 114; };
+ indicator "Scroll Lock" { left = 120; };
+ indicator "Power" { left = 128; };
+
+ key.gap = 1;
+ key.color = "grey60";
+
+ section "Function" {
+ left = 2;
+ top = 5;
+ key.shape = "FN0";
+ row {
+ top = 1;
+ keys { <ESC>, { <PRSC>, 155 }, <SCLK>, <PAUS> };
+ };
+ row {
+ top = 14;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 6 }, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Control" {
+ left= 2;
+ top = 109;
+ key.shape = "MODK";
+ row {
+ top = 1;
+ keys { { <FN>, "NORM" }, <LCTL>, <LALT>,
+ { <SPCE>, "SPCE" }, <RALT>, <RCTL>
+ };
+ };
+ }; // End of "Control" section
+
+ section "Editing" {
+ top = 5;
+ left = 233;
+ key.shape = "FN0";
+ row {
+ top = 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top = 14;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ }; // End of "Editing" section
+
+ section "Navigation" {
+ top = 114;
+ left = 236;
+ key.shape = "ARRS";
+ row {
+ top = 1;
+ left = 17;
+ keys { <UP> };
+ };
+ row {
+ top = 15;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Navigation" section
+
+ shape "STIK" { cornerRadius = 4, { [7, 7] } };
+
+ solid "STIK" {
+ priority = 255;
+ color = "red";
+ shape = "STIK";
+ top = 85;
+ left = 126;
+ };
+};
+
+// 85 keys
+// US/English (FRU 02K4785).
+xkb_geometry "us" {
+ include "thinkpad(common)"
+ description = "IBM ThinkPad 560Z/600/600E/A22E, US";
+
+ shape "RTRN" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } };
+ shape "LFSH" { cornerRadius = 1, { [43, 18] }, { [2.5, 0], [40.5, 14] } };
+ shape "BKSL" { cornerRadius = 1, { [28, 18] }, { [2.5, 0], [25.5, 14] } };
+
+ section "Alpha" {
+ left = 2;
+ top = 33;
+ key.gap = 1;
+ key.color = "grey60";
+ key.shape = "NORM";
+ row {
+ top = 1;
+ keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top = 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+};
+
+// 86 keys
+// Tested on: DE/German, UK/English (FRU 02K4787).
+xkb_geometry "intl" {
+ include "thinkpad(common)"
+ description = "IBM ThinkPad 560Z/600/600E/A22E, Intl";
+
+ shape "RTRN" { cornerRadius = 1, { [28, 0], [28, 37], [4, 37], [4, 18],
+ [0, 18], [0, 0] },
+ { [25.5, 0], [25.5, 33], [6.5, 33],
+ [6.5, 14], [2.5, 14], [2.5, 0] } };
+ shape "LFSH" { cornerRadius = 1, { [24, 18] }, { [2.5, 0], [21.5, 14] } };
+
+ section "Alpha" {
+ left = 2;
+ top = 33;
+ key.gap = 1;
+ key.color = "grey60";
+ key.shape = "NORM";
+ row {
+ top = 1;
+ keys { <AE00>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <RTRN>, "RTRN" }
+ };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, <AC12>
+ };
+ };
+ row {
+ top = 58;
+ keys { { <LFSH>, "LFSH" }, <AB00>,
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+};
+
+xkb_geometry "60" {
+ width = 290;
+ height = 140;
+ baseColor = "grey80";
+ labelColor = "white";
+
+ shape "NORM" { cornerRadius = 1, { [18, 18] }, { [2, 0], [16, 16] } };
+
+ shape "ESC" { cornerRadius = 1, { [17, 13] }, { [1.5, 0], [15.5, 12] } };
+ shape "FN0" { cornerRadius = 1, { [17, 11] }, { [1.5, 0], [15.5, 10] } };
+
+ shape "BKSP" { cornerRadius = 1, { [37, 18] }, { [2, 0], [35, 16] } };
+
+ shape "TABK" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } };
+ shape "BKSL" { cornerRadius = 1, { [27.5, 18] }, { [2, 0], [25.5, 16] } };
+
+ shape "CAPS" { cornerRadius = 1, { [30.5, 18] }, { [2, 0], [28.5, 16] } };
+ shape "RTRN" { cornerRadius = 1, { [43.5, 18] }, { [2, 0], [41.5, 16] } };
+
+ shape "LFSH" { cornerRadius = 1, { [40, 18] }, { [2, 0], [38, 16] } };
+ shape "RTSH" { cornerRadius = 1, { [53, 18] }, { [2, 0], [51, 16] } };
+
+ shape "LCTL" { cornerRadius = 1, { [21, 18] }, { [2, 0], [19, 16] } };
+ shape "LWIN" { cornerRadius = 1, { [15, 18] }, { [1.5, 0], [13.5, 16] } };
+
+ shape "SPCE" { cornerRadius = 1, { [97, 18] }, { [2, 0], [95, 16] } };
+
+ shape "ARR1" { cornerRadius = 1, { [17, 13] }, { [1.5, 0], [15.5, 12] } };
+ shape "ARR2" { cornerRadius = 1, { [17, 11] }, { [1.5, 0], [15.5, 10] } };
+
+ shape "VOL" { cornerRadius = 2.5, { [5, 5] } };
+ shape "TVTG" { cornerRadius = 0.5, { [0, 1], [17, 1], [17, 4], [0, 4] } };
+
+ shape "KEYS" { cornerRadius = 2,
+ { [0, 0], [19, 0], [19, 16], [172, 16],
+ [172, 4], [286, 4], [286, 133], [231, 133],
+ [231, 126], [0, 126] } };
+
+ solid "KeyPanel" {
+ shape = "KEYS";
+ left = 2;
+ top = 3;
+ color = "black";
+ };
+
+ shape "NULL0" { cornerRadius = 0.5,
+ { [0, 26],
+ [72, 26], [72, 14], [76, 14], [76, 26],
+ [149, 26], [149, 14], [153, 14], [153, 26],
+ [226, 26], [226, 2], [230, 2], [230, 26],
+ [284, 26], [284, 27],
+ [0, 27] } };
+
+ solid "NullPanel0" {
+ shape = "NULL0";
+ left = 3;
+ top = 6;
+ color = "grey80";
+ };
+
+ shape "NULL1" { cornerRadius = 0.5, { [0, 12], [17, 12], [17, 13], [0, 13] } };
+
+ solid "NullPanel1" {
+ shape = "NULL1";
+ left = 3;
+ top = 6;
+ color = "grey80";
+ };
+
+ shape "MEDIA" { cornerRadius = 0.5, { [0, 0], [55, 0], [55, 10], [0, 10] } };
+
+ solid "MediaPanel" {
+ shape = "MEDIA";
+ left = 25.5;
+ top = 6;
+ color = "black";
+ };
+
+ section "Volume" {
+ left = 22;
+ top = 8.5;
+ key.shape = "VOL";
+ key.gap = 6;
+ key.color = "grey20";
+
+ row {
+ keys { <MUTE>, <VOL->, <VOL+>, {<I1F>, "TVTG", color = "blue"} };
+ };
+ };
+
+ key.gap = 1;
+ key.color = "grey60";
+
+ section "Function" {
+ left = 2;
+ top = 3;
+ key.shape = "FN0";
+ row {
+ key.shape = "ESC";
+ top = 1;
+ keys { <ESC> };
+ };
+ row {
+ top = 5;
+ keys { { <PRSC>, 173 }, <SCLK>, <PAUS> };
+ };
+ row {
+ top = 17;
+ keys { <FK01>, <FK02>, <FK03>, <FK04>,
+ { <FK05>, 6 }, <FK06>, <FK07>, <FK08>,
+ { <FK09>, 6 }, <FK10>, <FK11>, <FK12>
+ };
+ };
+ }; // End of "Function" section
+
+ section "Control" {
+ left = 2;
+ top = 109;
+ key.shape = "NORM";
+ row {
+ top = 1;
+ keys { <FN>, { <LCTL>, "LCTL" }, { <LWIN>, "LWIN" }, <LALT>,
+ { <SPCE>, "SPCE" }, <RALT>, <MENU>, <RCTL>
+ };
+ };
+ }; // End of "Control" section
+
+ section "Editing" {
+ top = 7;
+ left = 233;
+ key.shape = "FN0";
+ row {
+ top = 1;
+ keys { <INS>, <HOME>, <PGUP> };
+ };
+ row {
+ top = 13;
+ keys { <DELE>, <END>, <PGDN> };
+ };
+ }; // End of "Editing" section
+
+ section "Navigation" {
+ top = 109;
+ left = 233;
+ row {
+ key.shape = "ARR1";
+ top = 1;
+ keys { <I6A>, <UP>, <I69> };
+ };
+ row {
+ key.shape = "ARR2";
+ top = 15;
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ }; // End of "Navigation" section
+
+ shape "STIK" { cornerRadius = 3.5, { [7, 7] } };
+
+ solid "STIK" {
+ priority = 255;
+ color = "red";
+ shape = "STIK";
+ top = 85.5;
+ left = 125.5;
+ };
+
+ section "Alpha" {
+ left = 2;
+ top = 33;
+ key.shape = "NORM";
+ row {
+ top = 1;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>,
+ <AE05>, <AE06>, <AE07>, <AE08>, <AE09>,
+ <AE10>, <AE11>, <AE12>, { <BKSP>, "BKSP" }
+ };
+ };
+ row {
+ top = 20;
+ keys { { <TAB>, "TABK" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>,
+ <AD11>, <AD12>, { <BKSL>, "BKSL" }
+ };
+ };
+ row {
+ top = 39;
+ keys { { <CAPS>, "CAPS" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>, { <RTRN>, "RTRN", color = "blue" }
+ };
+ };
+ row {
+ top = 58;
+ keys { { <LFSH>, "LFSH" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ { <RTSH>, "RTSH" }
+ };
+ };
+ }; // End of "Alpha" section
+};
diff --git a/xorg-server/xkeyboard-config/geometry/typematrix b/xorg-server/xkeyboard-config/geometry/typematrix
index d86976f8f..65afd5f7d 100644
--- a/xorg-server/xkeyboard-config/geometry/typematrix
+++ b/xorg-server/xkeyboard-config/geometry/typematrix
@@ -1,745 +1,745 @@
-// -*- indent-tabs-mode: nil -*-
-
-// Created by Frédéric Boiteux <fboiteux (at) free (dot) fr>
-// and Gildas Cotomale <gildas (dot) cotomale (at) gmail (dot) com>
-
-// Note : the special/multimedia keys (Calc, WWW, Desktop…) have a keycode
-// <I[XX]>, found in definition file /usr/share/X11/xkb/keycodes/evdev.
-// Fn = <I120>;
-// Calc = <I148>;
-// WWW = <I158>;
-// CycleWindows = <I162>;
-// Mail = <I163>;
-// PlayPause = <I172>;
-// Desktop = <I243>;
-
-
-xkb_geometry "tm2020" {
- description = "TypeMatrix EZ-Reach 2020";
-
- // Keyboard total size :
- width = 308;
- height = 152;
- // background / foreground colours :
- baseColor = "white";
- labelColor = "black";
-
- // Key shapes : base key = 16 mm each side
- shape "NORM" { cornerRadius=1, { [16, 16] }, { [1, 1], [15, 15] }};
- shape "ALPL" { cornerRadius=1, { [24.25, 16] }, { [1, 1], [23, 15] }};
- shape "DHAL" { cornerRadius=1, { [24.25, 32.5] }, { [1, 1], [23, 31.5] }};
- shape "FUNC" { cornerRadius=1, { [16, 12] }, { [2.5, 0], [13.5, 10] }};
- shape "FUNL" { cornerRadius=1, { [24.25, 12] }, { [2.5, 0], [21.5, 10] }};
- shape "SPCE" { cornerRadius=1, { [57, 26] }, { [2.5, 1], [54.5, 24] }};
- shape "DBLA" { cornerRadius=1, { [32.5, 16] }, { [1, 1], [31, 15] }};
- shape "LED" { cornerRadius=2, { [4, 4] }};
- shape "DECO" { cornerRadius=1, { [3, 18] }};
-
- // Function keys row
- section "Function" {
- left = 4;
- top = 24;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "FUNC";
- row {
- keys { { <ESC>, "FUNL" },
- <FK01>, <FK02>, <FK03>, <FK04>, <FK05> };
- key.color = "grey20";
- keys { { <NMLK>, "FUNL" } };
- };
- row {
- left = 150;
- key.color = "red";
- keys { { <DELE>, "FUNL" } };
- key.color = "grey10";
- keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
- { <FK12>, "FUNL" } };
- };
- };
-
- // Alpha-numeric keys rows
- section "Alpha" {
- left = 4;
- top = 36.5;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "NORM";
- row {
- top = 0;
- keys { { <TLDE>, "ALPL" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- { <BKSP>, "DHAL" } };
- };
- row {
- top = 16.5;
- keys { { <TAB>, "ALPL" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
- };
- row {
- top = 33;
- keys { { <LFSH>, "DHAL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- { <TAB>, "DHAL" } };
- };
- row {
- top = 49.5;
- left = 24.5;
- keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
- };
- row {
- top = 0;
- left = 150;
- keys { { <BKSP>, "DHAL" },
- <AE06>, <AE07>, <AE08> };
- key.color = "grey20";
- keys { <AE09>, <AE10>, <AE11>, { <AE12>, "ALPL" } };
- };
- row {
- top = 16.5;
- left = 174.5;
- keys { <AD06>, <AD07>, <AD08> };
- key.color = "grey20";
- keys { <AD09>, <AD10>, <AD11>, { <AD12>, "ALPL" } };
- };
- row {
- top = 33;
- left = 150;
- keys { { <RTRN>, "DHAL" },
- <AC06>, <AC07>, <AC08> };
- key.color = "grey20";
- keys { <AC09>, <AC10>, <AC11>, { <RTSH>, "DHAL" } };
- };
- row {
- top = 49.5;
- left = 174.5;
- keys { <AB06>, <AB07>, <AB08> };
- key.color = "grey20";
- keys { <AB09>, <AB10>, <BKSL> };
- };
- };
-
- // Control keys rows
- section "Control" {
- left = 4;
- top = 102.5;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "ALPL";
- row {
- top = 0;
- keys { <LCTL>, <LALT>, <CAPS> };
- keys { { <SPCE>, "SPCE"} };
- };
- row {
- top = 16.5;
- keys { <I120>, <LWIN>, <MENU> };
- };
- row {
- top = 0;
- left = 150;
- key.shape = "NORM";
- keys { { <SPCE>, "SPCE"}, <RALT> };
- key.color = "grey20";
- keys { <RCTL>, <UP>, <I162>, { <KPEN>, "DHAL" } };
- };
- row {
- top = 16.5;
- left = 207.5;
- key.shape = "NORM";
- key.color = "grey20";
- keys { { <LEFT>, "DBLA" }, <DOWN>, <RGHT> };
- };
- };
-
- // Diods
- indicator.top = 12;
- indicator.onColor = "green";
- indicator.offColor = "grey10";
- indicator.shape = "LED";
- indicator "Num Lock" { left = 252; };
- indicator "Caps Lock" { left = 266; };
- indicator "Misc" { left = 280; };
- text.top= 5;
- text.color= "black";
- text "NumLockLabel" { left= 252; text="1"; };
- text "CapsLockLabel" { left= 266; text="A"; };
- text "MiscLabel" { left= 280; text="D"; };
-
- text "Logo" { left = 29; top = 10; text="TypeMatrixâ„¢"; };
-
- // other decorations : drawings
- solid "rainure1" { shape = "DECO"; top = 1; left = 110; color = "grey10";};
- solid "rainure2" { shape = "DECO"; top = 1; left = 115; color = "grey10";};
- solid "rainure3" { shape = "DECO"; top = 1; left = 120; color = "grey10";};
- solid "rainure4" { shape = "DECO"; top = 1; left = 125; color = "grey10";};
- solid "rainure5" { shape = "DECO"; top = 1; left = 130; color = "grey10";};
- solid "rainure6" { shape = "DECO"; top = 1; left = 135; color = "grey10";};
- solid "rainure7" { shape = "DECO"; top = 1; left = 140; color = "grey10";};
- solid "rainure8" { shape = "DECO"; top = 1; left = 145; color = "grey10";};
- solid "rainure9" { shape = "DECO"; top = 1; left = 150; color = "grey10";};
- solid "rainure10" { shape = "DECO"; top = 1; left = 155; color = "grey10";};
- solid "rainure11" { shape = "DECO"; top = 1; left = 160; color = "grey10";};
- solid "rainure12" { shape = "DECO"; top = 1; left = 165; color = "grey10";};
- solid "rainure13" { shape = "DECO"; top = 1; left = 170; color = "grey10";};
-}; // geometry tm2020
-
-
-xkb_geometry "tm2030_shape" {
- // Keyboard total size
- width = 320;
- height = 130;
- // background / foreground colours :
- baseColor = "white";
- labelColor = "black";
-
- // Key shapes : base key = 20 mm each side
- shape "NORM" { cornerRadius=1, { [18, 18] }, { [1.5, 1.5], [16.5, 14] } };
- shape "FUNC" { cornerRadius=1, { [18, 12] }, { [2.5, 0], [15.5, 10] } };
- shape "LFSH" { cornerRadius=1, { [18, 36.5] }, { [2.5, 0], [15.5, 30] } };
- shape "ALT1" { cornerRadius=1, { [27.5, 18] }, { [2.5, 0], [23.5, 14] } };
- shape "BKSP" { cornerRadius=1, { [18, 30.5] }, { [1.5, 1.5], [16.5, 29] } };
- shape "SPCE" { cornerRadius=1, { [92, 25] }, { [1.5, 1.5], [90.5, 22] } };
- shape "LED" { cornerRadius=2, { [4, 4] } };
- shape "PAN1" { cornerRadius=1, { [27, 126.5] } };
- shape "PAN2" { cornerRadius=1, { [92, 13] } };
-
- // other decorations : panels
- solid "panneau1" {
- shape = "PAN1";
- left = 0;
- top = 0;
- color = "grey40";
- };
- solid "panneau2" {
- shape = "PAN2";
- left = 101.5;
- top = 113.5;
- color = "grey40";
- };
-
- // Diods (Indicators) : they have to be put after panels, either the panels
- // overwrites them.
- indicator.left = 6;
- indicator.onColor = "green";
- indicator.offColor = "grey10";
- indicator.shape = "LED";
-
- indicator "Num Lock" { top = 11 ; };
- indicator "Caps Lock" { top = 27.5; };
- indicator "Scroll Lock" { top = 44 ; };
-
- text.left = 12;
- text.color = "black";
- text "NumLockLabel" { top = 11; text="num"; };
- text "CapsLockLabel" { top = 27.5; text="caps"; };
- text "SrollLockLabel" { top = 44; text="scroll"; };
-}; // geometry tm2030_shape
-
-xkb_geometry "tm2030_MiscDiod_dvk" {
- text "ModeLabel" { left = 12; top = 58; color = "black"; text="Dvorak"; };
-}; // geometry tm2030_MiscDiod_dvk
-
-xkb_geometry "tm2030_MiscDiod_102" {
- text "ModeLabel" { left = 12; top = 58; color = "black"; text="102"; };
-}; // geometry tm2030_MiscDiod_102
-
-xkb_geometry "tm2030_MiscDiod_106" {
- text "ModeLabel" { left = 12; top = 58; color = "black"; text="106"; };
-}; // geometry tm2030_MiscDiod_106
-
-xkb_geometry "tm2030_MiscDiod_off" {
- indicator "Misc" { left = 6; top = 60.5; shape = "LED";
- offColor = "grey10"; onColor = "grey10"; };
-}; // geometry tm2030_MiscDiod_off
-
-xkb_geometry "tm2030_MiscDiod_on" {
- indicator "Misc" { left = 6; top = 60.5; shape = "LED";
- offColor = "green"; onColor = "green"; };
-}; // geometry tm2030_MiscDiod_on
-
-
-xkb_geometry "tm2030USB_func" {
- // Function keys rows
- section "Function" {
- left = 27;
- top = 1.5;
- key.gap = 0.5;
- key.color = "grey30";
- key.shape = "FUNC";
- row {
- keys { <ESC>, <FK01>, <FK02>, <FK03>, <FK04>, <FK05> };
- };
- row {
- left = 129.5;
- keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
- <FK12>, <NMLK> };
- };
- };
-}; // geometry tm2030USB_func
-
-
-xkb_geometry "tm2030USB_alpha" {
- // Alpha-numeric keys rows
- section "Alpha" {
- left = 27;
- top = 14;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "NORM";
- row {
- top = 0;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
- };
- row {
- top = 18.5;
- keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
- };
- row {
- top = 37;
- keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
- };
- row {
- top = 55.5;
- left = 18.5;
- keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
- };
-
- row {
- top = 0;
- left = 129.5;
- keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <I148> };
- };
- row {
- top = 18.5;
- left = 129.5;
- keys { <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>, <I163> };
- };
- row {
- top = 37;
- left = 129.5;
- keys { <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" }, <CAPS> };
- };
- row {
- top = 55.5;
- left = 129.5;
- keys { <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <BKSL> };
- };
- row {
- top = 55.5;
- left = 259;
- keys { <I158> };
- };
- row {
- top = 74;
- left = 74;
- keys { { <SPCE>, "SPCE" } };
- };
- };
-}; // geometry tm2030USB_alpha
-
-
-xkb_geometry "tm2030USB_ctrl" {
- // Control keys rows
- section "Control" {
- left = 27;
- top = 0;
- key.gap = 0.5;
- key.color = "grey30";
- key.shape = "NORM";
- row {
- top = 88;
- keys { <LCTL>, <I172>, <MENU>, <I162> };
- };
- row {
- top = 106.5;
- keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
- };
- row {
- top = 88;
- left = 166.5;
- keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
- };
- row {
- top = 106.5;
- left = 166.5;
- keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
- };
- row {
- top = 106.5;
- left = 259;
- keys { <PGDN> };
- };
- row {
- top = 1;
- left = 111.5;
- vertical = true;
- keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
- };
- };
-}; // geometry tm2030USB_ctrl
-
-
-xkb_geometry "tm2030PS2" {
- include "typematrix(tm2030_shape)"
- include "typematrix(tm2030_MiscDiod_dvk)"
- include "typematrix(tm2030_MiscDiod_off)"
-
- description = "TypeMatrix EZ-Reach 2030 PS2";
-
- // Function keys row
- section "Function" {
- left = 27;
- top = 1.5;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "FUNC";
- row {
- key.color = "grey30";
- keys { <ESC> };
- };
- row {
- left = 18.5;
- keys { <FK01>, <FK02>, <FK03>, <FK04> };
- };
- row {
- left = 92.5;
- key.color = "grey30";
- keys { <FK05> };
- };
- row {
- left = 129.5;
- key.color = "grey30";
- keys { <FK06>, <FK07>, <FK08> };
- };
- row {
- left = 185;
- keys { <FK09>, <FK10>, <FK11>, <FK12> };
- };
- row {
- left = 259;
- key.color = "grey30";
- keys { <NMLK> };
- };
- };
-
- // Alpha-numeric keys rows
- section "Alpha" {
- left = 27;
- top = 14;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "NORM";
- row {
- top = 0;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
- };
- row {
- top = 18.5;
- keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
- };
- row {
- top = 37;
- keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
- };
- row {
- top = 55.5;
- left = 18.5;
- keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
- };
-
- row {
- top = 0;
- left = 129.5;
- keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <I120> };
- };
- row {
- top = 18.5;
- left = 129.5;
- keys { <AD06>, <AD07>, <AD08> };
- };
- row {
- top = 18.5;
- left = 185;
- key.color = "grey30";
- keys { <AD09>, <AD10>, <AD11>, <AD12>};
- };
- row {
- top = 18.5;
- left = 259;
- keys { <BKSP> };
- };
- row {
- top = 37;
- left = 129.5;
- keys { <AC06>, <AC07>, <AC08> };
- };
- row {
- top = 37;
- left = 185;
- key.color = "grey30";
- keys { <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" },
- {<DELE>, key.color="red"} };
- };
- row {
- top = 55.5;
- left = 129.5;
- keys { <AB06>, <AB07>, <AB08> };
- };
- row {
- top = 55.5;
- left = 185;
- key.color = "grey30";
- keys { <AB09>, <AB10>, <BKSL> };
- };
- row {
- top = 55.5;
- left = 259;
- keys { <INS> };
- };
- row {
- top = 74;
- left = 74;
- keys { { <SPCE>, "SPCE" } };
- };
- }; // end section "Alpha"
-
- // Control keys rows
- section "Control" {
- left = 27;
- top = 0;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "NORM";
- row {
- top = 88;
- keys { <I120>, <LWIN>, <MENU>, <I162> };
- };
- row {
- top = 106.5;
- keys { <LCTL>, { <LALT>, "ALT1" }, { <LTSH>, "ALT1" } };
- };
- row {
- top = 88;
- left = 166.5;
- keys { <PGUP> };
- };
- row {
- top = 88;
- left = 185;
- key.color = "grey30";
- keys { <HOME>, <UP>, <END>, { <KPEN>, "LFSH"} };
- };
- row {
- top = 88;
- left = 259;
- keys { <RCTL> };
- };
- row {
- top = 106.5;
- left = 166.5;
- keys { <PGDN> };
- };
- row {
- top = 106.5;
- left = 185;
- key.color = "grey30";
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- row {
- top = 106.5;
- left = 259;
- keys { <RALT> };
- };
- row {
- top = 1;
- left = 111.5;
- key.color = "grey10";
- vertical = true;
- keys { <CAPS>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
- };
- }; // end section "Control"
-}; // geometry tm2030PS2
-
-
-xkb_geometry "tm2030USB" {
- include "typematrix(tm2030_shape)"
- include "typematrix(tm2030_MiscDiod_102)"
- include "typematrix(tm2030_MiscDiod_off)"
-
- description = "TypeMatrix EZ-Reach 2030 USB";
-
- include "typematrix(tm2030USB_func)"
- include "typematrix(tm2030USB_alpha)"
- include "typematrix(tm2030USB_ctrl)"
-}; // geometry tm2030USB
-
-
-// European 102/105 keys mode :
-// Same as the standard keyboard, except for one key, Play becomes LSGT
-xkb_geometry "tm2030USB-102" {
- include "typematrix(tm2030_shape)"
- include "typematrix(tm2030_MiscDiod_102)"
- include "typematrix(tm2030_MiscDiod_on)"
-
- description = "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)";
-
- include "typematrix(tm2030USB_func)"
- include "typematrix(tm2030USB_alpha)"
-
- // Control keys rows
- section "Control" {
- left = 27;
- top = 0;
- key.gap = 0.5;
- key.color = "grey30";
- key.shape = "NORM";
- row {
- top = 88;
- keys { <LCTL>, <LSGT>, <MENU>, <I162> };
- };
- row {
- top = 106.5;
- keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
- };
- row {
- top = 88;
- left = 166.5;
- keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
- };
- row {
- top = 106.5;
- left = 166.5;
- keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
- };
- row {
- top = 106.5;
- left = 259;
- keys { <PGDN> };
- };
- row {
- top = 1;
- left = 111.5;
- vertical = true;
- keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
- };
- };
-}; // geometry tm2030USB-102
-
-
-// Japan / Korean 106 keys mode :
-// Same as the standard keyboard, except for following keys :
-// – <TLDE> is replaced by <HZTG>
-// – WWW key becomes <HKTG>
-// — Calc key becomes <AE13>
-// — Mail key becomes <BKSL>, and <BKSL> key becomes <AB11>
-
-// about Controls:
-// NFER/MEHU and XFER/KANJ : TMx keeps LWIN (and RWIN if it happend to exist)
-// HKTG/HIRA : TMx keeps MENU/COMP, but locates this key in alpha section
-// (see upper).
-
-xkb_geometry "tm2030USB-106" {
- include "typematrix(tm2030_shape)"
- include "typematrix(tm2030_MiscDiod_106)"
- include "typematrix(tm2030_MiscDiod_on)"
-
- description = "TypeMatrix EZ-Reach 2030 USB (106:JP mode)";
-
- include "typematrix(tm2030USB_func)"
-
- // Alpha-numeric keys rows
- section "Alpha" {
- left = 27;
- top = 14;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "NORM";
- row {
- top = 0;
- keys { <HZTG>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
- };
- row {
- top = 18.5;
- keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
- };
- row {
- top = 37;
- keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
- };
- row {
- top = 55.5;
- left = 18.5;
- keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
- };
-
- row {
- top = 0;
- left = 129.5;
- keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <AE13> };
- };
- row {
- top = 18.5;
- left = 129.5;
- keys { <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>, <BKSL> };
- };
- row {
- top = 37;
- left = 129.5;
- keys { <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" }, <CAPS> };
- };
- row {
- top = 55.5;
- left = 129.5;
- keys { <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11> };
- };
- row {
- top = 55.5;
- left = 259;
- keys { <HKTG> };
- };
- row {
- top = 74;
- left = 74;
- keys { { <SPCE>, "SPCE" } };
- };
- };
-
- // Control keys rows
- section "Control" {
- left = 27;
- top = 0;
- key.gap = 0.5;
- key.color = "grey30";
- key.shape = "NORM";
- row {
- top = 88;
- keys { <LCTL>, <I172>, <MENU>, <I162> };
- };
- row {
- top = 106.5;
- keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
- };
- row {
- top = 88;
- left = 166.5;
- keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
- };
- row {
- top = 106.5;
- left = 166.5;
- keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
- };
- row {
- top = 106.5;
- left = 259;
- keys { <PGDN> };
- };
- row {
- top = 1;
- left = 111.5;
- vertical = true;
- keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
- };
- };
-}; // geometry tm2030USB-106
+// -*- indent-tabs-mode: nil -*-
+
+// Created by Frédéric Boiteux <fboiteux (at) free (dot) fr>
+// and Gildas Cotomale <gildas (dot) cotomale (at) gmail (dot) com>
+
+// Note : the special/multimedia keys (Calc, WWW, Desktop…) have a keycode
+// <I[XX]>, found in definition file /usr/share/X11/xkb/keycodes/evdev.
+// Fn = <I120>;
+// Calc = <I148>;
+// WWW = <I158>;
+// CycleWindows = <I162>;
+// Mail = <I163>;
+// PlayPause = <I172>;
+// Desktop = <I243>;
+
+
+xkb_geometry "tm2020" {
+ description = "TypeMatrix EZ-Reach 2020";
+
+ // Keyboard total size :
+ width = 308;
+ height = 152;
+ // background / foreground colours :
+ baseColor = "white";
+ labelColor = "black";
+
+ // Key shapes : base key = 16 mm each side
+ shape "NORM" { cornerRadius=1, { [16, 16] }, { [1, 1], [15, 15] }};
+ shape "ALPL" { cornerRadius=1, { [24.25, 16] }, { [1, 1], [23, 15] }};
+ shape "DHAL" { cornerRadius=1, { [24.25, 32.5] }, { [1, 1], [23, 31.5] }};
+ shape "FUNC" { cornerRadius=1, { [16, 12] }, { [2.5, 0], [13.5, 10] }};
+ shape "FUNL" { cornerRadius=1, { [24.25, 12] }, { [2.5, 0], [21.5, 10] }};
+ shape "SPCE" { cornerRadius=1, { [57, 26] }, { [2.5, 1], [54.5, 24] }};
+ shape "DBLA" { cornerRadius=1, { [32.5, 16] }, { [1, 1], [31, 15] }};
+ shape "LED" { cornerRadius=2, { [4, 4] }};
+ shape "DECO" { cornerRadius=1, { [3, 18] }};
+
+ // Function keys row
+ section "Function" {
+ left = 4;
+ top = 24;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "FUNC";
+ row {
+ keys { { <ESC>, "FUNL" },
+ <FK01>, <FK02>, <FK03>, <FK04>, <FK05> };
+ key.color = "grey20";
+ keys { { <NMLK>, "FUNL" } };
+ };
+ row {
+ left = 150;
+ key.color = "red";
+ keys { { <DELE>, "FUNL" } };
+ key.color = "grey10";
+ keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
+ { <FK12>, "FUNL" } };
+ };
+ };
+
+ // Alpha-numeric keys rows
+ section "Alpha" {
+ left = 4;
+ top = 36.5;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "NORM";
+ row {
+ top = 0;
+ keys { { <TLDE>, "ALPL" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ { <BKSP>, "DHAL" } };
+ };
+ row {
+ top = 16.5;
+ keys { { <TAB>, "ALPL" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
+ };
+ row {
+ top = 33;
+ keys { { <LFSH>, "DHAL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ { <TAB>, "DHAL" } };
+ };
+ row {
+ top = 49.5;
+ left = 24.5;
+ keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
+ };
+ row {
+ top = 0;
+ left = 150;
+ keys { { <BKSP>, "DHAL" },
+ <AE06>, <AE07>, <AE08> };
+ key.color = "grey20";
+ keys { <AE09>, <AE10>, <AE11>, { <AE12>, "ALPL" } };
+ };
+ row {
+ top = 16.5;
+ left = 174.5;
+ keys { <AD06>, <AD07>, <AD08> };
+ key.color = "grey20";
+ keys { <AD09>, <AD10>, <AD11>, { <AD12>, "ALPL" } };
+ };
+ row {
+ top = 33;
+ left = 150;
+ keys { { <RTRN>, "DHAL" },
+ <AC06>, <AC07>, <AC08> };
+ key.color = "grey20";
+ keys { <AC09>, <AC10>, <AC11>, { <RTSH>, "DHAL" } };
+ };
+ row {
+ top = 49.5;
+ left = 174.5;
+ keys { <AB06>, <AB07>, <AB08> };
+ key.color = "grey20";
+ keys { <AB09>, <AB10>, <BKSL> };
+ };
+ };
+
+ // Control keys rows
+ section "Control" {
+ left = 4;
+ top = 102.5;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "ALPL";
+ row {
+ top = 0;
+ keys { <LCTL>, <LALT>, <CAPS> };
+ keys { { <SPCE>, "SPCE"} };
+ };
+ row {
+ top = 16.5;
+ keys { <I120>, <LWIN>, <MENU> };
+ };
+ row {
+ top = 0;
+ left = 150;
+ key.shape = "NORM";
+ keys { { <SPCE>, "SPCE"}, <RALT> };
+ key.color = "grey20";
+ keys { <RCTL>, <UP>, <I162>, { <KPEN>, "DHAL" } };
+ };
+ row {
+ top = 16.5;
+ left = 207.5;
+ key.shape = "NORM";
+ key.color = "grey20";
+ keys { { <LEFT>, "DBLA" }, <DOWN>, <RGHT> };
+ };
+ };
+
+ // Diods
+ indicator.top = 12;
+ indicator.onColor = "green";
+ indicator.offColor = "grey10";
+ indicator.shape = "LED";
+ indicator "Num Lock" { left = 252; };
+ indicator "Caps Lock" { left = 266; };
+ indicator "Misc" { left = 280; };
+ text.top= 5;
+ text.color= "black";
+ text "NumLockLabel" { left= 252; text="1"; };
+ text "CapsLockLabel" { left= 266; text="A"; };
+ text "MiscLabel" { left= 280; text="D"; };
+
+ text "Logo" { left = 29; top = 10; text="TypeMatrixâ„¢"; };
+
+ // other decorations : drawings
+ solid "rainure1" { shape = "DECO"; top = 1; left = 110; color = "grey10";};
+ solid "rainure2" { shape = "DECO"; top = 1; left = 115; color = "grey10";};
+ solid "rainure3" { shape = "DECO"; top = 1; left = 120; color = "grey10";};
+ solid "rainure4" { shape = "DECO"; top = 1; left = 125; color = "grey10";};
+ solid "rainure5" { shape = "DECO"; top = 1; left = 130; color = "grey10";};
+ solid "rainure6" { shape = "DECO"; top = 1; left = 135; color = "grey10";};
+ solid "rainure7" { shape = "DECO"; top = 1; left = 140; color = "grey10";};
+ solid "rainure8" { shape = "DECO"; top = 1; left = 145; color = "grey10";};
+ solid "rainure9" { shape = "DECO"; top = 1; left = 150; color = "grey10";};
+ solid "rainure10" { shape = "DECO"; top = 1; left = 155; color = "grey10";};
+ solid "rainure11" { shape = "DECO"; top = 1; left = 160; color = "grey10";};
+ solid "rainure12" { shape = "DECO"; top = 1; left = 165; color = "grey10";};
+ solid "rainure13" { shape = "DECO"; top = 1; left = 170; color = "grey10";};
+}; // geometry tm2020
+
+
+xkb_geometry "tm2030_shape" {
+ // Keyboard total size
+ width = 320;
+ height = 130;
+ // background / foreground colours :
+ baseColor = "white";
+ labelColor = "black";
+
+ // Key shapes : base key = 20 mm each side
+ shape "NORM" { cornerRadius=1, { [18, 18] }, { [1.5, 1.5], [16.5, 14] } };
+ shape "FUNC" { cornerRadius=1, { [18, 12] }, { [2.5, 0], [15.5, 10] } };
+ shape "LFSH" { cornerRadius=1, { [18, 36.5] }, { [2.5, 0], [15.5, 30] } };
+ shape "ALT1" { cornerRadius=1, { [27.5, 18] }, { [2.5, 0], [23.5, 14] } };
+ shape "BKSP" { cornerRadius=1, { [18, 30.5] }, { [1.5, 1.5], [16.5, 29] } };
+ shape "SPCE" { cornerRadius=1, { [92, 25] }, { [1.5, 1.5], [90.5, 22] } };
+ shape "LED" { cornerRadius=2, { [4, 4] } };
+ shape "PAN1" { cornerRadius=1, { [27, 126.5] } };
+ shape "PAN2" { cornerRadius=1, { [92, 13] } };
+
+ // other decorations : panels
+ solid "panneau1" {
+ shape = "PAN1";
+ left = 0;
+ top = 0;
+ color = "grey40";
+ };
+ solid "panneau2" {
+ shape = "PAN2";
+ left = 101.5;
+ top = 113.5;
+ color = "grey40";
+ };
+
+ // Diods (Indicators) : they have to be put after panels, either the panels
+ // overwrites them.
+ indicator.left = 6;
+ indicator.onColor = "green";
+ indicator.offColor = "grey10";
+ indicator.shape = "LED";
+
+ indicator "Num Lock" { top = 11 ; };
+ indicator "Caps Lock" { top = 27.5; };
+ indicator "Scroll Lock" { top = 44 ; };
+
+ text.left = 12;
+ text.color = "black";
+ text "NumLockLabel" { top = 11; text="num"; };
+ text "CapsLockLabel" { top = 27.5; text="caps"; };
+ text "SrollLockLabel" { top = 44; text="scroll"; };
+}; // geometry tm2030_shape
+
+xkb_geometry "tm2030_MiscDiod_dvk" {
+ text "ModeLabel" { left = 12; top = 58; color = "black"; text="Dvorak"; };
+}; // geometry tm2030_MiscDiod_dvk
+
+xkb_geometry "tm2030_MiscDiod_102" {
+ text "ModeLabel" { left = 12; top = 58; color = "black"; text="102"; };
+}; // geometry tm2030_MiscDiod_102
+
+xkb_geometry "tm2030_MiscDiod_106" {
+ text "ModeLabel" { left = 12; top = 58; color = "black"; text="106"; };
+}; // geometry tm2030_MiscDiod_106
+
+xkb_geometry "tm2030_MiscDiod_off" {
+ indicator "Misc" { left = 6; top = 60.5; shape = "LED";
+ offColor = "grey10"; onColor = "grey10"; };
+}; // geometry tm2030_MiscDiod_off
+
+xkb_geometry "tm2030_MiscDiod_on" {
+ indicator "Misc" { left = 6; top = 60.5; shape = "LED";
+ offColor = "green"; onColor = "green"; };
+}; // geometry tm2030_MiscDiod_on
+
+
+xkb_geometry "tm2030USB_func" {
+ // Function keys rows
+ section "Function" {
+ left = 27;
+ top = 1.5;
+ key.gap = 0.5;
+ key.color = "grey30";
+ key.shape = "FUNC";
+ row {
+ keys { <ESC>, <FK01>, <FK02>, <FK03>, <FK04>, <FK05> };
+ };
+ row {
+ left = 129.5;
+ keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
+ <FK12>, <NMLK> };
+ };
+ };
+}; // geometry tm2030USB_func
+
+
+xkb_geometry "tm2030USB_alpha" {
+ // Alpha-numeric keys rows
+ section "Alpha" {
+ left = 27;
+ top = 14;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "NORM";
+ row {
+ top = 0;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
+ };
+ row {
+ top = 18.5;
+ keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
+ };
+ row {
+ top = 37;
+ keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
+ };
+ row {
+ top = 55.5;
+ left = 18.5;
+ keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
+ };
+
+ row {
+ top = 0;
+ left = 129.5;
+ keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <I148> };
+ };
+ row {
+ top = 18.5;
+ left = 129.5;
+ keys { <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>, <I163> };
+ };
+ row {
+ top = 37;
+ left = 129.5;
+ keys { <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" }, <CAPS> };
+ };
+ row {
+ top = 55.5;
+ left = 129.5;
+ keys { <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <BKSL> };
+ };
+ row {
+ top = 55.5;
+ left = 259;
+ keys { <I158> };
+ };
+ row {
+ top = 74;
+ left = 74;
+ keys { { <SPCE>, "SPCE" } };
+ };
+ };
+}; // geometry tm2030USB_alpha
+
+
+xkb_geometry "tm2030USB_ctrl" {
+ // Control keys rows
+ section "Control" {
+ left = 27;
+ top = 0;
+ key.gap = 0.5;
+ key.color = "grey30";
+ key.shape = "NORM";
+ row {
+ top = 88;
+ keys { <LCTL>, <I172>, <MENU>, <I162> };
+ };
+ row {
+ top = 106.5;
+ keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
+ };
+ row {
+ top = 88;
+ left = 166.5;
+ keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
+ };
+ row {
+ top = 106.5;
+ left = 166.5;
+ keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
+ };
+ row {
+ top = 106.5;
+ left = 259;
+ keys { <PGDN> };
+ };
+ row {
+ top = 1;
+ left = 111.5;
+ vertical = true;
+ keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
+ };
+ };
+}; // geometry tm2030USB_ctrl
+
+
+xkb_geometry "tm2030PS2" {
+ include "typematrix(tm2030_shape)"
+ include "typematrix(tm2030_MiscDiod_dvk)"
+ include "typematrix(tm2030_MiscDiod_off)"
+
+ description = "TypeMatrix EZ-Reach 2030 PS2";
+
+ // Function keys row
+ section "Function" {
+ left = 27;
+ top = 1.5;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "FUNC";
+ row {
+ key.color = "grey30";
+ keys { <ESC> };
+ };
+ row {
+ left = 18.5;
+ keys { <FK01>, <FK02>, <FK03>, <FK04> };
+ };
+ row {
+ left = 92.5;
+ key.color = "grey30";
+ keys { <FK05> };
+ };
+ row {
+ left = 129.5;
+ key.color = "grey30";
+ keys { <FK06>, <FK07>, <FK08> };
+ };
+ row {
+ left = 185;
+ keys { <FK09>, <FK10>, <FK11>, <FK12> };
+ };
+ row {
+ left = 259;
+ key.color = "grey30";
+ keys { <NMLK> };
+ };
+ };
+
+ // Alpha-numeric keys rows
+ section "Alpha" {
+ left = 27;
+ top = 14;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "NORM";
+ row {
+ top = 0;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
+ };
+ row {
+ top = 18.5;
+ keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
+ };
+ row {
+ top = 37;
+ keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
+ };
+ row {
+ top = 55.5;
+ left = 18.5;
+ keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
+ };
+
+ row {
+ top = 0;
+ left = 129.5;
+ keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <I120> };
+ };
+ row {
+ top = 18.5;
+ left = 129.5;
+ keys { <AD06>, <AD07>, <AD08> };
+ };
+ row {
+ top = 18.5;
+ left = 185;
+ key.color = "grey30";
+ keys { <AD09>, <AD10>, <AD11>, <AD12>};
+ };
+ row {
+ top = 18.5;
+ left = 259;
+ keys { <BKSP> };
+ };
+ row {
+ top = 37;
+ left = 129.5;
+ keys { <AC06>, <AC07>, <AC08> };
+ };
+ row {
+ top = 37;
+ left = 185;
+ key.color = "grey30";
+ keys { <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" },
+ {<DELE>, key.color="red"} };
+ };
+ row {
+ top = 55.5;
+ left = 129.5;
+ keys { <AB06>, <AB07>, <AB08> };
+ };
+ row {
+ top = 55.5;
+ left = 185;
+ key.color = "grey30";
+ keys { <AB09>, <AB10>, <BKSL> };
+ };
+ row {
+ top = 55.5;
+ left = 259;
+ keys { <INS> };
+ };
+ row {
+ top = 74;
+ left = 74;
+ keys { { <SPCE>, "SPCE" } };
+ };
+ }; // end section "Alpha"
+
+ // Control keys rows
+ section "Control" {
+ left = 27;
+ top = 0;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "NORM";
+ row {
+ top = 88;
+ keys { <I120>, <LWIN>, <MENU>, <I162> };
+ };
+ row {
+ top = 106.5;
+ keys { <LCTL>, { <LALT>, "ALT1" }, { <LTSH>, "ALT1" } };
+ };
+ row {
+ top = 88;
+ left = 166.5;
+ keys { <PGUP> };
+ };
+ row {
+ top = 88;
+ left = 185;
+ key.color = "grey30";
+ keys { <HOME>, <UP>, <END>, { <KPEN>, "LFSH"} };
+ };
+ row {
+ top = 88;
+ left = 259;
+ keys { <RCTL> };
+ };
+ row {
+ top = 106.5;
+ left = 166.5;
+ keys { <PGDN> };
+ };
+ row {
+ top = 106.5;
+ left = 185;
+ key.color = "grey30";
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ row {
+ top = 106.5;
+ left = 259;
+ keys { <RALT> };
+ };
+ row {
+ top = 1;
+ left = 111.5;
+ key.color = "grey10";
+ vertical = true;
+ keys { <CAPS>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
+ };
+ }; // end section "Control"
+}; // geometry tm2030PS2
+
+
+xkb_geometry "tm2030USB" {
+ include "typematrix(tm2030_shape)"
+ include "typematrix(tm2030_MiscDiod_102)"
+ include "typematrix(tm2030_MiscDiod_off)"
+
+ description = "TypeMatrix EZ-Reach 2030 USB";
+
+ include "typematrix(tm2030USB_func)"
+ include "typematrix(tm2030USB_alpha)"
+ include "typematrix(tm2030USB_ctrl)"
+}; // geometry tm2030USB
+
+
+// European 102/105 keys mode :
+// Same as the standard keyboard, except for one key, Play becomes LSGT
+xkb_geometry "tm2030USB-102" {
+ include "typematrix(tm2030_shape)"
+ include "typematrix(tm2030_MiscDiod_102)"
+ include "typematrix(tm2030_MiscDiod_on)"
+
+ description = "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)";
+
+ include "typematrix(tm2030USB_func)"
+ include "typematrix(tm2030USB_alpha)"
+
+ // Control keys rows
+ section "Control" {
+ left = 27;
+ top = 0;
+ key.gap = 0.5;
+ key.color = "grey30";
+ key.shape = "NORM";
+ row {
+ top = 88;
+ keys { <LCTL>, <LSGT>, <MENU>, <I162> };
+ };
+ row {
+ top = 106.5;
+ keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
+ };
+ row {
+ top = 88;
+ left = 166.5;
+ keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
+ };
+ row {
+ top = 106.5;
+ left = 166.5;
+ keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
+ };
+ row {
+ top = 106.5;
+ left = 259;
+ keys { <PGDN> };
+ };
+ row {
+ top = 1;
+ left = 111.5;
+ vertical = true;
+ keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
+ };
+ };
+}; // geometry tm2030USB-102
+
+
+// Japan / Korean 106 keys mode :
+// Same as the standard keyboard, except for following keys :
+// – <TLDE> is replaced by <HZTG>
+// – WWW key becomes <HKTG>
+// — Calc key becomes <AE13>
+// — Mail key becomes <BKSL>, and <BKSL> key becomes <AB11>
+
+// about Controls:
+// NFER/MEHU and XFER/KANJ : TMx keeps LWIN (and RWIN if it happend to exist)
+// HKTG/HIRA : TMx keeps MENU/COMP, but locates this key in alpha section
+// (see upper).
+
+xkb_geometry "tm2030USB-106" {
+ include "typematrix(tm2030_shape)"
+ include "typematrix(tm2030_MiscDiod_106)"
+ include "typematrix(tm2030_MiscDiod_on)"
+
+ description = "TypeMatrix EZ-Reach 2030 USB (106:JP mode)";
+
+ include "typematrix(tm2030USB_func)"
+
+ // Alpha-numeric keys rows
+ section "Alpha" {
+ left = 27;
+ top = 14;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "NORM";
+ row {
+ top = 0;
+ keys { <HZTG>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
+ };
+ row {
+ top = 18.5;
+ keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
+ };
+ row {
+ top = 37;
+ keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
+ };
+ row {
+ top = 55.5;
+ left = 18.5;
+ keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
+ };
+
+ row {
+ top = 0;
+ left = 129.5;
+ keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <AE13> };
+ };
+ row {
+ top = 18.5;
+ left = 129.5;
+ keys { <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>, <BKSL> };
+ };
+ row {
+ top = 37;
+ left = 129.5;
+ keys { <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" }, <CAPS> };
+ };
+ row {
+ top = 55.5;
+ left = 129.5;
+ keys { <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11> };
+ };
+ row {
+ top = 55.5;
+ left = 259;
+ keys { <HKTG> };
+ };
+ row {
+ top = 74;
+ left = 74;
+ keys { { <SPCE>, "SPCE" } };
+ };
+ };
+
+ // Control keys rows
+ section "Control" {
+ left = 27;
+ top = 0;
+ key.gap = 0.5;
+ key.color = "grey30";
+ key.shape = "NORM";
+ row {
+ top = 88;
+ keys { <LCTL>, <I172>, <MENU>, <I162> };
+ };
+ row {
+ top = 106.5;
+ keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
+ };
+ row {
+ top = 88;
+ left = 166.5;
+ keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
+ };
+ row {
+ top = 106.5;
+ left = 166.5;
+ keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
+ };
+ row {
+ top = 106.5;
+ left = 259;
+ keys { <PGDN> };
+ };
+ row {
+ top = 1;
+ left = 111.5;
+ vertical = true;
+ keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
+ };
+ };
+}; // geometry tm2030USB-106
diff --git a/xorg-server/xkeyboard-config/geometry/winbook b/xorg-server/xkeyboard-config/geometry/winbook
index 570deb358..842eefbff 100644
--- a/xorg-server/xkeyboard-config/geometry/winbook
+++ b/xorg-server/xkeyboard-config/geometry/winbook
@@ -1,143 +1,143 @@
-default xkb_geometry "XP5" {
-
- description= "WinBook XP5";
- width= 281;
- height= 180;
-
- shape.cornerRadius= 1;
-
- shape "NORM" {
- { [17,17] },
- { [ 2, 1], [ 15, 15 ] }
- };
- shape "FKEY" {
- { [ 15, 10 ] },
- { [ 1, 0 ], [ 14, 9.5 ] }
- };
- shape "ONE" {
- { [ 28, 17 ] },
- { [ 11, 0 ], [ 28, 17 ] },
- { [ 13, 1 ], [ 26, 15 ] }
- };
- shape "WIDE" { // backspace, caps lock, ctrl alt ?
- { [ 24.5, 17 ] },
- { [ 2, 1 ], [ 22.5, 15 ] }
- };
- shape "WIDR" { // backslash, left shift
- { [ 35, 17 ] },
- { [ 2, 1 ], [ 33, 15 ] }
- };
- shape "RTRN" {
- { [ 45, 17 ] },
- { [ 2, 1 ], [ 43, 15 ] }
- };
- shape "SPCE" {
- { [ 90, 17 ] },
- { [ 2, 1 ], [ 88, 15 ] }
- };
- shape "STIK" {
- cornerRadius= 4,
- { [ 8, 8 ] }
- };
- shape "BTN" {
- { [ 31, 6 ] }
- };
-
- section.left= 2;
- row.left= 1;
- key.shape= "NORM";
- key.gap= 0.5;
-
- key.color= "grey10";
- labelColor= "white";
- baseColor= "grey20";
-
- section "Whole" {
- top= 10;
- row {
- top= 11;
- key.shape= "FKEY";
- keys {
- <ESC>,
- <FK01>, <FK02>, <FK03>, <FK04>, <FK05>, <FK06>,
- <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12>,
- <PAUS>, <HOME>, <END>, <PGUP>
- };
- };
- row {
- top= 22;
- keys {
- { <AEO1>, "ONE" },
- <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
- <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
- { <BKSP>, shape="WIDE" },
- <PGDN>
- };
- };
- row {
- top= 40;
- keys {
- <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
- <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
- { <BKSL>, "WIDR" }
- };
- };
- row {
- top= 58;
- keys { { <CAPS>, shape="WIDE" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
- <AC11>,
- { <RTRN>, shape="RTRN" }
- };
- };
- row {
- top= 76;
- keys {
- { <LFSH>, shape="WIDR" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
- <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
- <RTSH>, <UP>, <NMLK>
- };
- };
- row {
- top= 94;
- keys {
- { <LCTL>, "WIDE" }, <FUNC>, { <LALT>, "WIDE" },
- <TLDE>, { <SPCE>, shape="SPCE" }, <INS>, <DELE>,
- <LEFT>, <DOWN>, <RGHT>
- };
- };
- overlay "KPAD" {
- <AE07>=<KP7>, <AE08>=<KP8>, <AE09>=<KP9>, <AE10>=<KPMU>,
- <AD07>=<KP4>, <AD08>=<KP5>, <AD09>=<KP6>, <AD10>=<KPSU>,
- <AC07>=<KP1>, <AC08>=<KP2>, <AC09>=<KP3>, <AC10>=<KPAD>,
- <AB07>=<KP0>, <AB09>=<KPDL>, <AB10>=<KPSL>
- };
- }; // End of "Whole" section
-
- solid "STIK" {
- color= "red";
- shape= "STIK";
- top= 81;
- left= 112;
- };
-
- solid "BTN1" {
- color= "red";
- shape= "BTN";
- top= 137;
- left= 93;
- };
-
- solid "BTN2" {
- color= "red";
- shape= "BTN";
- top= 137;
- left= 127;
- };
-
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
-
-};
+default xkb_geometry "XP5" {
+
+ description= "WinBook XP5";
+ width= 281;
+ height= 180;
+
+ shape.cornerRadius= 1;
+
+ shape "NORM" {
+ { [17,17] },
+ { [ 2, 1], [ 15, 15 ] }
+ };
+ shape "FKEY" {
+ { [ 15, 10 ] },
+ { [ 1, 0 ], [ 14, 9.5 ] }
+ };
+ shape "ONE" {
+ { [ 28, 17 ] },
+ { [ 11, 0 ], [ 28, 17 ] },
+ { [ 13, 1 ], [ 26, 15 ] }
+ };
+ shape "WIDE" { // backspace, caps lock, ctrl alt ?
+ { [ 24.5, 17 ] },
+ { [ 2, 1 ], [ 22.5, 15 ] }
+ };
+ shape "WIDR" { // backslash, left shift
+ { [ 35, 17 ] },
+ { [ 2, 1 ], [ 33, 15 ] }
+ };
+ shape "RTRN" {
+ { [ 45, 17 ] },
+ { [ 2, 1 ], [ 43, 15 ] }
+ };
+ shape "SPCE" {
+ { [ 90, 17 ] },
+ { [ 2, 1 ], [ 88, 15 ] }
+ };
+ shape "STIK" {
+ cornerRadius= 4,
+ { [ 8, 8 ] }
+ };
+ shape "BTN" {
+ { [ 31, 6 ] }
+ };
+
+ section.left= 2;
+ row.left= 1;
+ key.shape= "NORM";
+ key.gap= 0.5;
+
+ key.color= "grey10";
+ labelColor= "white";
+ baseColor= "grey20";
+
+ section "Whole" {
+ top= 10;
+ row {
+ top= 11;
+ key.shape= "FKEY";
+ keys {
+ <ESC>,
+ <FK01>, <FK02>, <FK03>, <FK04>, <FK05>, <FK06>,
+ <FK07>, <FK08>, <FK09>, <FK10>, <FK11>, <FK12>,
+ <PAUS>, <HOME>, <END>, <PGUP>
+ };
+ };
+ row {
+ top= 22;
+ keys {
+ { <AEO1>, "ONE" },
+ <AE02>, <AE03>, <AE04>, <AE05>, <AE06>,
+ <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>,
+ { <BKSP>, shape="WIDE" },
+ <PGDN>
+ };
+ };
+ row {
+ top= 40;
+ keys {
+ <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05>, <AD06>,
+ <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>,
+ { <BKSL>, "WIDR" }
+ };
+ };
+ row {
+ top= 58;
+ keys { { <CAPS>, shape="WIDE" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AC10>,
+ <AC11>,
+ { <RTRN>, shape="RTRN" }
+ };
+ };
+ row {
+ top= 76;
+ keys {
+ { <LFSH>, shape="WIDR" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>,
+ <AB06>, <AB07>, <AB08>, <AB09>, <AB10>,
+ <RTSH>, <UP>, <NMLK>
+ };
+ };
+ row {
+ top= 94;
+ keys {
+ { <LCTL>, "WIDE" }, <FUNC>, { <LALT>, "WIDE" },
+ <TLDE>, { <SPCE>, shape="SPCE" }, <INS>, <DELE>,
+ <LEFT>, <DOWN>, <RGHT>
+ };
+ };
+ overlay "KPAD" {
+ <AE07>=<KP7>, <AE08>=<KP8>, <AE09>=<KP9>, <AE10>=<KPMU>,
+ <AD07>=<KP4>, <AD08>=<KP5>, <AD09>=<KP6>, <AD10>=<KPSU>,
+ <AC07>=<KP1>, <AC08>=<KP2>, <AC09>=<KP3>, <AC10>=<KPAD>,
+ <AB07>=<KP0>, <AB09>=<KPDL>, <AB10>=<KPSL>
+ };
+ }; // End of "Whole" section
+
+ solid "STIK" {
+ color= "red";
+ shape= "STIK";
+ top= 81;
+ left= 112;
+ };
+
+ solid "BTN1" {
+ color= "red";
+ shape= "BTN";
+ top= 137;
+ left= 93;
+ };
+
+ solid "BTN2" {
+ color= "red";
+ shape= "BTN";
+ top= 137;
+ left= 127;
+ };
+
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/README b/xorg-server/xkeyboard-config/keycodes/README
index 6363f3d55..31e061861 100644
--- a/xorg-server/xkeyboard-config/keycodes/README
+++ b/xorg-server/xkeyboard-config/keycodes/README
@@ -1,6 +1,6 @@
-The keycodes component of a keyboard mapping specifies the range and
-interpretation of the raw keycodes reported by the device. It sets the keycodes
-symbolic name, the minimum and maximum legal codes for the keyboard, and the
-symbolic name for each key. The keycodes component might also contain aliases
-for some keys, symbolic names for some indicators and a description of which
-indicators are physically present.
+The keycodes component of a keyboard mapping specifies the range and
+interpretation of the raw keycodes reported by the device. It sets the keycodes
+symbolic name, the minimum and maximum legal codes for the keyboard, and the
+symbolic name for each key. The keycodes component might also contain aliases
+for some keys, symbolic names for some indicators and a description of which
+indicators are physically present.
diff --git a/xorg-server/xkeyboard-config/keycodes/aliases b/xorg-server/xkeyboard-config/keycodes/aliases
index f398772fe..d80493f95 100644
--- a/xorg-server/xkeyboard-config/keycodes/aliases
+++ b/xorg-server/xkeyboard-config/keycodes/aliases
@@ -1,99 +1,99 @@
-
-// keycode aliases for phonetic keyboard maps
-
-default
-xkb_keycodes "qwerty" {
-
- alias <LatQ> = <AD01>;
- alias <LatW> = <AD02>;
- alias <LatE> = <AD03>;
- alias <LatR> = <AD04>;
- alias <LatT> = <AD05>;
- alias <LatY> = <AD06>;
- alias <LatU> = <AD07>;
- alias <LatI> = <AD08>;
- alias <LatO> = <AD09>;
- alias <LatP> = <AD10>;
-
- alias <LatA> = <AC01>;
- alias <LatS> = <AC02>;
- alias <LatD> = <AC03>;
- alias <LatF> = <AC04>;
- alias <LatG> = <AC05>;
- alias <LatH> = <AC06>;
- alias <LatJ> = <AC07>;
- alias <LatK> = <AC08>;
- alias <LatL> = <AC09>;
-
- alias <LatZ> = <AB01>;
- alias <LatX> = <AB02>;
- alias <LatC> = <AB03>;
- alias <LatV> = <AB04>;
- alias <LatB> = <AB05>;
- alias <LatN> = <AB06>;
- alias <LatM> = <AB07>;
-};
-
-xkb_keycodes "azerty" {
-
- alias <LatA> = <AD01>;
- alias <LatZ> = <AD02>;
- alias <LatE> = <AD03>;
- alias <LatR> = <AD04>;
- alias <LatT> = <AD05>;
- alias <LatY> = <AD06>;
- alias <LatU> = <AD07>;
- alias <LatI> = <AD08>;
- alias <LatO> = <AD09>;
- alias <LatP> = <AD10>;
-
- alias <LatQ> = <AC01>;
- alias <LatS> = <AC02>;
- alias <LatD> = <AC03>;
- alias <LatF> = <AC04>;
- alias <LatG> = <AC05>;
- alias <LatH> = <AC06>;
- alias <LatJ> = <AC07>;
- alias <LatK> = <AC08>;
- alias <LatL> = <AC09>;
- alias <LatM> = <AC10>;
-
- alias <LatW> = <AB01>;
- alias <LatX> = <AB02>;
- alias <LatC> = <AB03>;
- alias <LatV> = <AB04>;
- alias <LatB> = <AB05>;
- alias <LatN> = <AB06>;
-};
-
-xkb_keycodes "qwertz" {
-
- alias <LatQ> = <AD01>;
- alias <LatW> = <AD02>;
- alias <LatE> = <AD03>;
- alias <LatR> = <AD04>;
- alias <LatT> = <AD05>;
- alias <LatZ> = <AD06>;
- alias <LatU> = <AD07>;
- alias <LatI> = <AD08>;
- alias <LatO> = <AD09>;
- alias <LatP> = <AD10>;
-
- alias <LatA> = <AC01>;
- alias <LatS> = <AC02>;
- alias <LatD> = <AC03>;
- alias <LatF> = <AC04>;
- alias <LatG> = <AC05>;
- alias <LatH> = <AC06>;
- alias <LatJ> = <AC07>;
- alias <LatK> = <AC08>;
- alias <LatL> = <AC09>;
-
- alias <LatY> = <AB01>;
- alias <LatX> = <AB02>;
- alias <LatC> = <AB03>;
- alias <LatV> = <AB04>;
- alias <LatB> = <AB05>;
- alias <LatN> = <AB06>;
- alias <LatM> = <AB07>;
-};
+
+// keycode aliases for phonetic keyboard maps
+
+default
+xkb_keycodes "qwerty" {
+
+ alias <LatQ> = <AD01>;
+ alias <LatW> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatY> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+
+ alias <LatA> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+
+ alias <LatZ> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+ alias <LatM> = <AB07>;
+};
+
+xkb_keycodes "azerty" {
+
+ alias <LatA> = <AD01>;
+ alias <LatZ> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatY> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+
+ alias <LatQ> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+ alias <LatM> = <AC10>;
+
+ alias <LatW> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+};
+
+xkb_keycodes "qwertz" {
+
+ alias <LatQ> = <AD01>;
+ alias <LatW> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatZ> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+
+ alias <LatA> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+
+ alias <LatY> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+ alias <LatM> = <AB07>;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/amiga b/xorg-server/xkeyboard-config/keycodes/amiga
index f374ea658..877d94f9d 100644
--- a/xorg-server/xkeyboard-config/keycodes/amiga
+++ b/xorg-server/xkeyboard-config/keycodes/amiga
@@ -1,225 +1,225 @@
-default xkb_keycodes "usa1" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 77;
- <FK01> = 88;
- <FK02> = 89;
- <FK03> = 90;
- <FK04> = 91;
- <FK05> = 92;
- <FK06> = 93;
- <FK07> = 94;
- <FK08> = 95;
- <FK09> = 96;
- <FK10> = 97;
-
- <TLDE> = 8;
- <AE01> = 9;
- <AE02> = 10;
- <AE03> = 11;
- <AE04> = 12;
- <AE05> = 13;
- <AE06> = 14;
- <AE07> = 15;
- <AE08> = 16;
- <AE09> = 17;
- <AE10> = 18;
- <AE11> = 19;
- <AE12> = 20;
- <BKSL> = 21;
- <BKSP> = 73;
-
- <TAB> = 74;
- <AD01> = 24;
- <AD02> = 25;
- <AD03> = 26;
- <AD04> = 27;
- <AD05> = 28;
- <AD06> = 29;
- <AD07> = 30;
- <AD08> = 31;
- <AD09> = 32;
- <AD10> = 33;
- <AD11> = 34;
- <AD12> = 35;
- <RTRN> = 76;
-
- <LCTL> = 107;
- <CAPS> = 106;
- <AC01> = 40;
- <AC02> = 41;
- <AC03> = 42;
- <AC04> = 43;
- <AC05> = 44;
- <AC06> = 45;
- <AC07> = 46;
- <AC08> = 47;
- <AC09> = 48;
- <AC10> = 49;
- <AC11> = 50;
-
- <LFSH> = 104;
- <AB01> = 57;
- <AB02> = 58;
- <AB03> = 59;
- <AB04> = 60;
- <AB05> = 61;
- <AB06> = 62;
- <AB07> = 63;
- <AB08> = 64;
- <AB09> = 65;
- <AB10> = 66;
- <RTSH> = 105;
-
- <LALT> = 108;
- <LAMI> = 110;
- <SPCE> = 72;
- <RAMI> = 111;
- <RALT> = 109;
-
- <DELE> = 78;
- <HELP> = 103;
- <UP> = 84;
- <LEFT> = 87;
- <DOWN> = 85;
- <RGHT> = 86;
-
- <KPLP> = 98;
- <KPRP> = 99;
- <KPDV> = 100;
- <KPMU> = 101;
-
- <KP7> = 69;
- <KP8> = 70;
- <KP9> = 71;
- <KPSU> = 82;
-
- <KP4> = 53;
- <KP5> = 54;
- <KP6> = 55;
- <KPAD> = 102;
-
- <KP1> = 37;
- <KP2> = 38;
- <KP3> = 39;
-
- <KP0> = 23;
- <KPDC> = 68;
- <KPEN> = 75;
-};
-
-xkb_keycodes "de" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 77;
- <FK01> = 88;
- <FK02> = 89;
- <FK03> = 90;
- <FK04> = 91;
- <FK05> = 92;
- <FK06> = 93;
- <FK07> = 94;
- <FK08> = 95;
- <FK09> = 96;
- <FK10> = 97;
-
- <TLDE> = 8;
- <AE01> = 9;
- <AE02> = 10;
- <AE03> = 11;
- <AE04> = 12;
- <AE05> = 13;
- <AE06> = 14;
- <AE07> = 15;
- <AE08> = 16;
- <AE09> = 17;
- <AE10> = 18;
- <AE11> = 19;
- <AE12> = 20;
- <BKSL> = 21;
- <BKSP> = 73;
-
- <TAB> = 74;
- <AD01> = 24;
- <AD02> = 25;
- <AD03> = 26;
- <AD04> = 27;
- <AD05> = 28;
- <AD06> = 29;
- <AD07> = 30;
- <AD08> = 31;
- <AD09> = 32;
- <AD10> = 33;
- <AD11> = 34;
- <AD12> = 35;
- <RTRN> = 76;
-
- <LCTL> = 107;
- <CAPS> = 106;
- <AC01> = 40;
- <AC02> = 41;
- <AC03> = 42;
- <AC04> = 43;
- <AC05> = 44;
- <AC06> = 45;
- <AC07> = 46;
- <AC08> = 47;
- <AC09> = 48;
- <AC10> = 49;
- <AC11> = 50;
- <AC12> = 51;
-
- <LFSH> = 104;
- <LSGT> = 56;
- <AB01> = 57;
- <AB02> = 58;
- <AB03> = 59;
- <AB04> = 60;
- <AB05> = 61;
- <AB06> = 62;
- <AB07> = 63;
- <AB08> = 64;
- <AB09> = 65;
- <AB10> = 66;
- <RTSH> = 105;
-
- <LALT> = 108;
- <LAMI> = 110;
- <SPCE> = 72;
- <RAMI> = 111;
- <RALT> = 109;
-
- <DELE> = 78;
- <HELP> = 103;
- <UP> = 84;
- <LEFT> = 87;
- <DOWN> = 85;
- <RGHT> = 86;
-
- <KPLP> = 98;
- <KPRP> = 99;
- <KPDV> = 100;
- <KPMU> = 101;
-
- <KP7> = 69;
- <KP8> = 70;
- <KP9> = 71;
- <KPSU> = 82;
-
- <KP4> = 53;
- <KP5> = 54;
- <KP6> = 55;
- <KPAD> = 102;
-
- <KP1> = 37;
- <KP2> = 38;
- <KP3> = 39;
-
- <KP0> = 23;
- <KPDC> = 68;
- <KPEN> = 75;
-};
+default xkb_keycodes "usa1" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 77;
+ <FK01> = 88;
+ <FK02> = 89;
+ <FK03> = 90;
+ <FK04> = 91;
+ <FK05> = 92;
+ <FK06> = 93;
+ <FK07> = 94;
+ <FK08> = 95;
+ <FK09> = 96;
+ <FK10> = 97;
+
+ <TLDE> = 8;
+ <AE01> = 9;
+ <AE02> = 10;
+ <AE03> = 11;
+ <AE04> = 12;
+ <AE05> = 13;
+ <AE06> = 14;
+ <AE07> = 15;
+ <AE08> = 16;
+ <AE09> = 17;
+ <AE10> = 18;
+ <AE11> = 19;
+ <AE12> = 20;
+ <BKSL> = 21;
+ <BKSP> = 73;
+
+ <TAB> = 74;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 76;
+
+ <LCTL> = 107;
+ <CAPS> = 106;
+ <AC01> = 40;
+ <AC02> = 41;
+ <AC03> = 42;
+ <AC04> = 43;
+ <AC05> = 44;
+ <AC06> = 45;
+ <AC07> = 46;
+ <AC08> = 47;
+ <AC09> = 48;
+ <AC10> = 49;
+ <AC11> = 50;
+
+ <LFSH> = 104;
+ <AB01> = 57;
+ <AB02> = 58;
+ <AB03> = 59;
+ <AB04> = 60;
+ <AB05> = 61;
+ <AB06> = 62;
+ <AB07> = 63;
+ <AB08> = 64;
+ <AB09> = 65;
+ <AB10> = 66;
+ <RTSH> = 105;
+
+ <LALT> = 108;
+ <LAMI> = 110;
+ <SPCE> = 72;
+ <RAMI> = 111;
+ <RALT> = 109;
+
+ <DELE> = 78;
+ <HELP> = 103;
+ <UP> = 84;
+ <LEFT> = 87;
+ <DOWN> = 85;
+ <RGHT> = 86;
+
+ <KPLP> = 98;
+ <KPRP> = 99;
+ <KPDV> = 100;
+ <KPMU> = 101;
+
+ <KP7> = 69;
+ <KP8> = 70;
+ <KP9> = 71;
+ <KPSU> = 82;
+
+ <KP4> = 53;
+ <KP5> = 54;
+ <KP6> = 55;
+ <KPAD> = 102;
+
+ <KP1> = 37;
+ <KP2> = 38;
+ <KP3> = 39;
+
+ <KP0> = 23;
+ <KPDC> = 68;
+ <KPEN> = 75;
+};
+
+xkb_keycodes "de" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 77;
+ <FK01> = 88;
+ <FK02> = 89;
+ <FK03> = 90;
+ <FK04> = 91;
+ <FK05> = 92;
+ <FK06> = 93;
+ <FK07> = 94;
+ <FK08> = 95;
+ <FK09> = 96;
+ <FK10> = 97;
+
+ <TLDE> = 8;
+ <AE01> = 9;
+ <AE02> = 10;
+ <AE03> = 11;
+ <AE04> = 12;
+ <AE05> = 13;
+ <AE06> = 14;
+ <AE07> = 15;
+ <AE08> = 16;
+ <AE09> = 17;
+ <AE10> = 18;
+ <AE11> = 19;
+ <AE12> = 20;
+ <BKSL> = 21;
+ <BKSP> = 73;
+
+ <TAB> = 74;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 76;
+
+ <LCTL> = 107;
+ <CAPS> = 106;
+ <AC01> = 40;
+ <AC02> = 41;
+ <AC03> = 42;
+ <AC04> = 43;
+ <AC05> = 44;
+ <AC06> = 45;
+ <AC07> = 46;
+ <AC08> = 47;
+ <AC09> = 48;
+ <AC10> = 49;
+ <AC11> = 50;
+ <AC12> = 51;
+
+ <LFSH> = 104;
+ <LSGT> = 56;
+ <AB01> = 57;
+ <AB02> = 58;
+ <AB03> = 59;
+ <AB04> = 60;
+ <AB05> = 61;
+ <AB06> = 62;
+ <AB07> = 63;
+ <AB08> = 64;
+ <AB09> = 65;
+ <AB10> = 66;
+ <RTSH> = 105;
+
+ <LALT> = 108;
+ <LAMI> = 110;
+ <SPCE> = 72;
+ <RAMI> = 111;
+ <RALT> = 109;
+
+ <DELE> = 78;
+ <HELP> = 103;
+ <UP> = 84;
+ <LEFT> = 87;
+ <DOWN> = 85;
+ <RGHT> = 86;
+
+ <KPLP> = 98;
+ <KPRP> = 99;
+ <KPDV> = 100;
+ <KPMU> = 101;
+
+ <KP7> = 69;
+ <KP8> = 70;
+ <KP9> = 71;
+ <KPSU> = 82;
+
+ <KP4> = 53;
+ <KP5> = 54;
+ <KP6> = 55;
+ <KPAD> = 102;
+
+ <KP1> = 37;
+ <KP2> = 38;
+ <KP3> = 39;
+
+ <KP0> = 23;
+ <KPDC> = 68;
+ <KPEN> = 75;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/ataritt b/xorg-server/xkeyboard-config/keycodes/ataritt
index c6d31d3ae..c7df8dd3c 100644
--- a/xorg-server/xkeyboard-config/keycodes/ataritt
+++ b/xorg-server/xkeyboard-config/keycodes/ataritt
@@ -1,117 +1,117 @@
-default xkb_keycodes "us" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 9;
- <AE01> = 10;
- <AE02> = 11;
- <AE03> = 12;
- <AE04> = 13;
- <AE05> = 14;
- <AE06> = 15;
- <AE07> = 16;
- <AE08> = 17;
- <AE09> = 18;
- <AE10> = 19;
- <AE11> = 20;
- <AE12> = 21;
- <TLDE> = 49;
- <BKSP> = 22;
-
- <TAB> = 23;
- <AD01> = 24;
- <AD02> = 25;
- <AD03> = 26;
- <AD04> = 27;
- <AD05> = 28;
- <AD06> = 29;
- <AD07> = 30;
- <AD08> = 31;
- <AD09> = 32;
- <AD10> = 33;
- <AD11> = 34;
- <AD12> = 35;
- <RTRN> = 36;
- <DELE> = 91;
-
- <LCTL> = 37;
- <AC01> = 38;
- <AC02> = 39;
- <AC03> = 40;
- <AC04> = 41;
- <AC05> = 42;
- <AC06> = 43;
- <AC07> = 44;
- <AC08> = 45;
- <AC09> = 46;
- <AC10> = 47;
- <AC11> = 48;
- <BKSL> = 51;
-
- <LFSH> = 50;
- <AB01> = 52;
- <AB02> = 53;
- <AB03> = 54;
- <AB04> = 55;
- <AB05> = 56;
- <AB06> = 57;
- <AB07> = 58;
- <AB08> = 59;
- <AB09> = 60;
- <AB10> = 61;
- <RTSH> = 62;
-
- <ALT> = 64;
- <SPCE> = 65;
- <CAPS> = 66;
-
- <FK01> = 67;
- <FK02> = 68;
- <FK03> = 69;
- <FK04> = 70;
- <FK05> = 71;
- <FK06> = 72;
- <FK07> = 73;
- <FK08> = 74;
- <FK09> = 75;
- <FK10> = 76;
-
- <HELP> = 106;
- <UNDO> = 105;
- <INS> = 90;
- <HOME> = 79;
- <UP> = 80;
- <LEFT> = 83;
- <DOWN> = 88;
- <RGHT> = 85;
-
- <KPLP> = 107;
- <KPRP> = 108;
- <KPDV> = 109;
- <KPMU> = 110;
-
- <KP7> = 111;
- <KP8> = 112;
- <KP9> = 113;
- <KPSU> = 82;
-
- <KP4> = 114;
- <KP5> = 115;
- <KP6> = 116;
- <KPAD> = 86;
-
- <KP1> = 117;
- <KP2> = 118;
- <KP3> = 119;
-
- <KP0> = 120;
- <KPDC> = 121;
- <KPEN> = 122;
-};
-
-xkb_keycodes "de" {
- include "ataritt(us)"
-
- <LSGT> = 104;
-};
+default xkb_keycodes "us" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 9;
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <TLDE> = 49;
+ <BKSP> = 22;
+
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 36;
+ <DELE> = 91;
+
+ <LCTL> = 37;
+ <AC01> = 38;
+ <AC02> = 39;
+ <AC03> = 40;
+ <AC04> = 41;
+ <AC05> = 42;
+ <AC06> = 43;
+ <AC07> = 44;
+ <AC08> = 45;
+ <AC09> = 46;
+ <AC10> = 47;
+ <AC11> = 48;
+ <BKSL> = 51;
+
+ <LFSH> = 50;
+ <AB01> = 52;
+ <AB02> = 53;
+ <AB03> = 54;
+ <AB04> = 55;
+ <AB05> = 56;
+ <AB06> = 57;
+ <AB07> = 58;
+ <AB08> = 59;
+ <AB09> = 60;
+ <AB10> = 61;
+ <RTSH> = 62;
+
+ <ALT> = 64;
+ <SPCE> = 65;
+ <CAPS> = 66;
+
+ <FK01> = 67;
+ <FK02> = 68;
+ <FK03> = 69;
+ <FK04> = 70;
+ <FK05> = 71;
+ <FK06> = 72;
+ <FK07> = 73;
+ <FK08> = 74;
+ <FK09> = 75;
+ <FK10> = 76;
+
+ <HELP> = 106;
+ <UNDO> = 105;
+ <INS> = 90;
+ <HOME> = 79;
+ <UP> = 80;
+ <LEFT> = 83;
+ <DOWN> = 88;
+ <RGHT> = 85;
+
+ <KPLP> = 107;
+ <KPRP> = 108;
+ <KPDV> = 109;
+ <KPMU> = 110;
+
+ <KP7> = 111;
+ <KP8> = 112;
+ <KP9> = 113;
+ <KPSU> = 82;
+
+ <KP4> = 114;
+ <KP5> = 115;
+ <KP6> = 116;
+ <KPAD> = 86;
+
+ <KP1> = 117;
+ <KP2> = 118;
+ <KP3> = 119;
+
+ <KP0> = 120;
+ <KPDC> = 121;
+ <KPEN> = 122;
+};
+
+xkb_keycodes "de" {
+ include "ataritt(us)"
+
+ <LSGT> = 104;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/digital_vndr/Makefile.am b/xorg-server/xkeyboard-config/keycodes/digital_vndr/Makefile.am
index 4f4cc4fd9..9f94efa7c 100644
--- a/xorg-server/xkeyboard-config/keycodes/digital_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/keycodes/digital_vndr/Makefile.am
@@ -1,4 +1,4 @@
-keycodesdir = $(xkb_base)/keycodes/digital_vndr
-
-dist_keycodes_DATA = \
-lk pc
+keycodesdir = $(xkb_base)/keycodes/digital_vndr
+
+dist_keycodes_DATA = \
+lk pc
diff --git a/xorg-server/xkeyboard-config/keycodes/digital_vndr/lk b/xorg-server/xkeyboard-config/keycodes/digital_vndr/lk
index 2c1421e88..30b49d311 100644
--- a/xorg-server/xkeyboard-config/keycodes/digital_vndr/lk
+++ b/xorg-server/xkeyboard-config/keycodes/digital_vndr/lk
@@ -1,270 +1,270 @@
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log
-// Revision 1.2 1996/06/18 09:13:22 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.2 1995/08/07 17:40:34 William_Walker
-// Upgrade XKB to protocol 0.62 (dual submit from decx11)
-// [1995/08/06 14:06:25 William_Walker]
-//
-// Revision 1.1.2.4 1995/08/05 15:25:55 William_Walker
-// Upgrade to XKB protocol 0.62
-// [1995/08/05 14:39:58 William_Walker]
-//
-// Revision 1.1.2.3 1995/06/27 12:17:31 William_Walker
-// Rename <TLDE> to ISO9995 compliant <AE00>.
-// [1995/06/26 20:24:04 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:21:28 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:07:29 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: lk Revision: /main/3 (DEC) Date: 1996/01/24 12:13:31
-//
-xkb_keycodes "lk_common" {
- // "Function" keys
- <FK01> = 86;
- <FK02> = 87;
- <FK03> = 88;
- <FK04> = 89;
- <FK05> = 90;
- <FK06> = 100;
- <FK07> = 101;
- <FK08> = 102;
- <FK09> = 103;
- <FK10> = 104;
- <FK11> = 113;
- <FK12> = 114;
-
- <UP> = 170;
- <LEFT> = 167;
- <DOWN> = 169;
- <RGHT> = 168;
-
- // "Keypad" keys
- <KP7> = 157;
- <KP8> = 158;
- <KP9> = 159;
- <KP4> = 153;
- <KP5> = 154;
- <KP6> = 155;
- <KP1> = 150;
- <KP2> = 151;
- <KP3> = 152;
- <KPEN> = 149;
- <KP0> = 146;
- <KPDL> = 148;
-
- // "Alphanumeric" keys
- <AE00> = 191;
- <AE01> = 192;
- <AE02> = 197;
- <AE03> = 203;
- <AE04> = 208;
- <AE05> = 214;
- <AE06> = 219;
- <AE07> = 224;
- <AE08> = 229;
- <AE09> = 234;
- <AE10> = 239;
- <AE11> = 249;
- <AE12> = 245;
- <BKSP> = 188;
-
- <TAB> = 190;
- <AD01> = 193;
- <AD02> = 198;
- <AD03> = 204;
- <AD04> = 209;
- <AD05> = 215;
- <AD06> = 220;
- <AD07> = 225;
- <AD08> = 230;
- <AD09> = 235;
- <AD10> = 240;
- <AD11> = 250;
- <AD12> = 246;
- <RTRN> = 189;
-
- <LCTL> = 175;
- <CAPS> = 176;
- <AC01> = 194;
- <AC02> = 199;
- <AC03> = 205;
- <AC04> = 210;
- <AC05> = 216;
- <AC06> = 221;
- <AC07> = 226;
- <AC08> = 231;
- <AC09> = 236;
- <AC10> = 242;
- <AC11> = 251;
-
- <LFSH> = 174;
- <AB01> = 195;
- <AB02> = 200;
- <AB03> = 206;
- <AB04> = 211;
- <AB05> = 217;
- <AB06> = 222;
- <AB07> = 227;
- <AB08> = 232;
- <AB09> = 237;
- <AB10> = 243;
- <RTSH> = 171;
-
- <SPCE> = 212;
-
- <LDM> = 255; // Support R5 Lock Down Modifiers
-
- alias <TLDE> = <AE00>;
-};
-
-xkb_keycodes "lkx01" {
- include "digital_vndr/lk(lk_common)"
- <AB00> = 201;
- <FK13> = 115;
- <FK14> = 116;
- <FK17> = 128;
- <FK18> = 129;
- <FK19> = 130;
- <FK20> = 131;
- <HELP> = 124;
- <DO> = 125;
- <FIND> = 138;
- <INS> = 139;
- <DELE> = 140;
- <SELE> = 141;
- <PGUP> = 142;
- <PGDN> = 143;
- <KPF1> = 161;
- <KPF2> = 162;
- <KPF3> = 163;
- <KPF4> = 164;
- <KPSU> = 160;
- <KPCO> = 156;
- <BKSL> = 247;
- <LCMP> = 177;
-};
-
-xkb_keycodes "lk201" {
- include "digital_vndr/lk(lkx01)"
- indicator 4 = "Scroll Lock";
- indicator 3 = "Caps Lock";
- indicator 2 = "Compose";
- indicator 1 = "Wait";
-};
-
-xkb_keycodes "lk421" {
- include "digital_vndr/lk(lkx01)"
- <LALT> = 172;
- <RALT> = 178;
- <RCMP> = 173;
-};
-
-xkb_keycodes "lk401" {
- include "digital_vndr/lk(lk421)"
- indicator 4 = "Scroll Lock";
- indicator 3 = "Caps Lock";
-};
-
-xkb_keycodes "lk44x" {
- include "digital_vndr/lk(lk_common)"
- <ESC> = 85;
- <PRSC> = 115;
- <SCLK> = 116;
- <PAUS> = 124;
- <INS> = 138;
- <HOME> = 139;
- <PGUP> = 140;
- <DELE> = 141;
- <END> = 142;
- <PGDN> = 143;
- <NMLK> = 161;
- <KPDV> = 162;
- <KPMU> = 163;
- <KPSU> = 164;
- <KPAD> = 156;
- <LALT> = 172;
- <RALT> = 178;
- <RCTL> = 173;
-};
-
-xkb_keycodes "lk443" {
- include "digital_vndr/lk(lk44x)"
- <BKSL> = 247;
- indicator 3 = "Caps Lock";
- indicator 4 = "Scroll Lock";
- indicator 5 = "Num Lock";
-};
-
-xkb_keycodes "lk444" {
- include "digital_vndr/lk(lk44x)"
- <BKSL> = 201;
- <AC12> = 247;
- indicator 3 = "Caps Lock";
- indicator 4 = "Scroll Lock";
- indicator 5 = "Num Lock";
-};
-
-// LK201-LT = lk201
-// LK421-AJ = lk421 +AB11
-// LK421-JJ = lk421aj+MUHE+KANJ+HIRA
-// LK401-AJ = lk401
-// LK401-BJ = lk401 +MUHE+KANJ+HIRA
-// LK401-JJ = lk401bj+AB11
-// LK401-LT = lk401
-// LK441-LT = lk443
-
-xkb_keycodes "lk421aj" {
- include "digital_vndr/lk(lk421)"
- <AB11> = 252;
-};
-
-xkb_keycodes "lk421jj" {
- include "digital_vndr/lk(lk421aj)"
- <MUHE> = 94;
- <KANJ> = 95;
- <HIRA> = 97;
-};
-
-xkb_keycodes "lk401bj" {
- include "digital_vndr/lk(lk401)"
- <MUHE> = 94;
- <KANJ> = 95;
- <HIRA> = 97;
-};
-
-xkb_keycodes "lk401jj" {
- include "digital_vndr/lk(lk401bj)"
- <AB11> = 252;
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log
+// Revision 1.2 1996/06/18 09:13:22 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.2 1995/08/07 17:40:34 William_Walker
+// Upgrade XKB to protocol 0.62 (dual submit from decx11)
+// [1995/08/06 14:06:25 William_Walker]
+//
+// Revision 1.1.2.4 1995/08/05 15:25:55 William_Walker
+// Upgrade to XKB protocol 0.62
+// [1995/08/05 14:39:58 William_Walker]
+//
+// Revision 1.1.2.3 1995/06/27 12:17:31 William_Walker
+// Rename <TLDE> to ISO9995 compliant <AE00>.
+// [1995/06/26 20:24:04 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:21:28 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:07:29 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: lk Revision: /main/3 (DEC) Date: 1996/01/24 12:13:31
+//
+xkb_keycodes "lk_common" {
+ // "Function" keys
+ <FK01> = 86;
+ <FK02> = 87;
+ <FK03> = 88;
+ <FK04> = 89;
+ <FK05> = 90;
+ <FK06> = 100;
+ <FK07> = 101;
+ <FK08> = 102;
+ <FK09> = 103;
+ <FK10> = 104;
+ <FK11> = 113;
+ <FK12> = 114;
+
+ <UP> = 170;
+ <LEFT> = 167;
+ <DOWN> = 169;
+ <RGHT> = 168;
+
+ // "Keypad" keys
+ <KP7> = 157;
+ <KP8> = 158;
+ <KP9> = 159;
+ <KP4> = 153;
+ <KP5> = 154;
+ <KP6> = 155;
+ <KP1> = 150;
+ <KP2> = 151;
+ <KP3> = 152;
+ <KPEN> = 149;
+ <KP0> = 146;
+ <KPDL> = 148;
+
+ // "Alphanumeric" keys
+ <AE00> = 191;
+ <AE01> = 192;
+ <AE02> = 197;
+ <AE03> = 203;
+ <AE04> = 208;
+ <AE05> = 214;
+ <AE06> = 219;
+ <AE07> = 224;
+ <AE08> = 229;
+ <AE09> = 234;
+ <AE10> = 239;
+ <AE11> = 249;
+ <AE12> = 245;
+ <BKSP> = 188;
+
+ <TAB> = 190;
+ <AD01> = 193;
+ <AD02> = 198;
+ <AD03> = 204;
+ <AD04> = 209;
+ <AD05> = 215;
+ <AD06> = 220;
+ <AD07> = 225;
+ <AD08> = 230;
+ <AD09> = 235;
+ <AD10> = 240;
+ <AD11> = 250;
+ <AD12> = 246;
+ <RTRN> = 189;
+
+ <LCTL> = 175;
+ <CAPS> = 176;
+ <AC01> = 194;
+ <AC02> = 199;
+ <AC03> = 205;
+ <AC04> = 210;
+ <AC05> = 216;
+ <AC06> = 221;
+ <AC07> = 226;
+ <AC08> = 231;
+ <AC09> = 236;
+ <AC10> = 242;
+ <AC11> = 251;
+
+ <LFSH> = 174;
+ <AB01> = 195;
+ <AB02> = 200;
+ <AB03> = 206;
+ <AB04> = 211;
+ <AB05> = 217;
+ <AB06> = 222;
+ <AB07> = 227;
+ <AB08> = 232;
+ <AB09> = 237;
+ <AB10> = 243;
+ <RTSH> = 171;
+
+ <SPCE> = 212;
+
+ <LDM> = 255; // Support R5 Lock Down Modifiers
+
+ alias <TLDE> = <AE00>;
+};
+
+xkb_keycodes "lkx01" {
+ include "digital_vndr/lk(lk_common)"
+ <AB00> = 201;
+ <FK13> = 115;
+ <FK14> = 116;
+ <FK17> = 128;
+ <FK18> = 129;
+ <FK19> = 130;
+ <FK20> = 131;
+ <HELP> = 124;
+ <DO> = 125;
+ <FIND> = 138;
+ <INS> = 139;
+ <DELE> = 140;
+ <SELE> = 141;
+ <PGUP> = 142;
+ <PGDN> = 143;
+ <KPF1> = 161;
+ <KPF2> = 162;
+ <KPF3> = 163;
+ <KPF4> = 164;
+ <KPSU> = 160;
+ <KPCO> = 156;
+ <BKSL> = 247;
+ <LCMP> = 177;
+};
+
+xkb_keycodes "lk201" {
+ include "digital_vndr/lk(lkx01)"
+ indicator 4 = "Scroll Lock";
+ indicator 3 = "Caps Lock";
+ indicator 2 = "Compose";
+ indicator 1 = "Wait";
+};
+
+xkb_keycodes "lk421" {
+ include "digital_vndr/lk(lkx01)"
+ <LALT> = 172;
+ <RALT> = 178;
+ <RCMP> = 173;
+};
+
+xkb_keycodes "lk401" {
+ include "digital_vndr/lk(lk421)"
+ indicator 4 = "Scroll Lock";
+ indicator 3 = "Caps Lock";
+};
+
+xkb_keycodes "lk44x" {
+ include "digital_vndr/lk(lk_common)"
+ <ESC> = 85;
+ <PRSC> = 115;
+ <SCLK> = 116;
+ <PAUS> = 124;
+ <INS> = 138;
+ <HOME> = 139;
+ <PGUP> = 140;
+ <DELE> = 141;
+ <END> = 142;
+ <PGDN> = 143;
+ <NMLK> = 161;
+ <KPDV> = 162;
+ <KPMU> = 163;
+ <KPSU> = 164;
+ <KPAD> = 156;
+ <LALT> = 172;
+ <RALT> = 178;
+ <RCTL> = 173;
+};
+
+xkb_keycodes "lk443" {
+ include "digital_vndr/lk(lk44x)"
+ <BKSL> = 247;
+ indicator 3 = "Caps Lock";
+ indicator 4 = "Scroll Lock";
+ indicator 5 = "Num Lock";
+};
+
+xkb_keycodes "lk444" {
+ include "digital_vndr/lk(lk44x)"
+ <BKSL> = 201;
+ <AC12> = 247;
+ indicator 3 = "Caps Lock";
+ indicator 4 = "Scroll Lock";
+ indicator 5 = "Num Lock";
+};
+
+// LK201-LT = lk201
+// LK421-AJ = lk421 +AB11
+// LK421-JJ = lk421aj+MUHE+KANJ+HIRA
+// LK401-AJ = lk401
+// LK401-BJ = lk401 +MUHE+KANJ+HIRA
+// LK401-JJ = lk401bj+AB11
+// LK401-LT = lk401
+// LK441-LT = lk443
+
+xkb_keycodes "lk421aj" {
+ include "digital_vndr/lk(lk421)"
+ <AB11> = 252;
+};
+
+xkb_keycodes "lk421jj" {
+ include "digital_vndr/lk(lk421aj)"
+ <MUHE> = 94;
+ <KANJ> = 95;
+ <HIRA> = 97;
+};
+
+xkb_keycodes "lk401bj" {
+ include "digital_vndr/lk(lk401)"
+ <MUHE> = 94;
+ <KANJ> = 95;
+ <HIRA> = 97;
+};
+
+xkb_keycodes "lk401jj" {
+ include "digital_vndr/lk(lk401bj)"
+ <AB11> = 252;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/digital_vndr/pc b/xorg-server/xkeyboard-config/keycodes/digital_vndr/pc
index 8cf06f3f0..33ef848d6 100644
--- a/xorg-server/xkeyboard-config/keycodes/digital_vndr/pc
+++ b/xorg-server/xkeyboard-config/keycodes/digital_vndr/pc
@@ -1,277 +1,277 @@
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log
-// Revision 1.2 1996/06/18 09:13:25 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.3 1995/10/25 21:00:14 William_Walker
-// Add pc104-key support
-// [1995/10/23 15:46:21 William_Walker]
-//
-// Revision 1.1.6.2 1995/08/07 17:40:37 William_Walker
-// Upgrade XKB to protocol 0.62 (dual submit from decx11)
-// [1995/08/06 14:06:28 William_Walker]
-//
-// Revision 1.1.2.4 1995/08/05 15:25:56 William_Walker
-// Upgrade to XKB protocol 0.62
-// [1995/08/05 14:40:02 William_Walker]
-//
-// Revision 1.1.2.3 1995/06/27 12:17:32 William_Walker
-// Rename <TLDE> to ISO9995 compliant <AE00>.
-// [1995/06/26 20:24:07 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:21:31 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:07:34 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: pc Revision: /main/3 (DEC) Date: 1996/01/24 12:13:36
-//
-xkb_keycodes "pc_common" {
- // "Function" keys
- <FK01> = 9;
- <FK02> = 15;
- <FK03> = 23;
- <FK04> = 31;
- <FK05> = 39;
- <FK06> = 47;
- <FK07> = 55;
- <FK08> = 63;
- <FK09> = 71;
- <FK10> = 79;
- <FK11> = 86;
- <FK12> = 94;
-
- // "Editing" keys
-
- <UP> = 99;
- <LEFT> = 97;
- <DOWN> = 96;
- <RGHT> = 106;
-
- // "Keypad" keys
- <KP7> = 108;
- <KP8> = 117;
- <KP9> = 125;
-
- <KP4> = 107;
- <KP5> = 115;
- <KP6> = 116;
-
- <KP1> = 105;
- <KP2> = 114;
- <KP3> = 122;
- <KPEN> = 121;
-
- <KP0> = 112;
- <KPDL> = 113;
-
- // "Alphanumeric" keys
- <AE01> = 22;
- <AE02> = 30;
- <AE03> = 38;
- <AE04> = 37;
- <AE05> = 46;
- <AE06> = 54;
- <AE07> = 61;
- <AE08> = 62;
- <AE09> = 70;
- <AE10> = 69;
- <AE11> = 78;
- <AE12> = 85;
- <BKSP> = 102;
-
- <TAB> = 13;
- <AD01> = 21;
- <AD02> = 29;
- <AD03> = 36;
- <AD04> = 45;
- <AD05> = 44;
- <AD06> = 53;
- <AD07> = 60;
- <AD08> = 67;
- <AD09> = 68;
- <AD10> = 77;
- <AD11> = 84;
- <AD12> = 91;
-
- <CAPS> = 20;
- <AC01> = 28;
- <AC02> = 27;
- <AC03> = 35;
- <AC04> = 43;
- <AC05> = 52;
- <AC06> = 51;
- <AC07> = 59;
- <AC08> = 66;
- <AC09> = 75;
- <AC10> = 76;
- <AC11> = 82;
- <RTRN> = 90;
-
- <LFSH> = 18;
- <AB01> = 26;
- <AB02> = 34;
- <AB03> = 33;
- <AB04> = 42;
- <AB05> = 50;
- <AB06> = 49;
- <AB07> = 58;
- <AB08> = 65;
- <AB09> = 73;
- <AB10> = 74;
- <RTSH> = 89;
-
- <LCTL> = 17;
- <LALT> = 25;
- <SPCE> = 41;
- <RALT> = 57;
-
- <LDM> = 255; // Support R5 Lock Down Modifiers
-
-};
-
-xkb_keycodes "pc10x" {
- include "digital_vndr/pc(pc_common)"
- <ESC> = 8;
- <AE00> = 14;
- <PRSC> = 87;
- <SCLK> = 95;
- <PAUS> = 98;
- <INS> = 103;
- <HOME> = 110;
- <PGUP> = 111;
- <DELE> = 100;
- <END> = 101;
- <PGDN> = 109;
- <NMLK> = 118;
- <KPDV> = 119;
- <KPMU> = 126;
- <KPSU> = 132;
- <KPAD> = 124;
- <RCTL> = 88;
-
- alias <TLDE> = <AE00>;
-
- indicator 3 = "Caps Lock";
- indicator 4 = "Scroll Lock";
-};
-
-xkb_keycodes "pc101" {
- include "digital_vndr/pc(pc10x)"
- <BKSL> = 92;
- indicator 5 = "Num Lock";
-};
-
-
-xkb_keycodes "pc102" {
- include "digital_vndr/pc(pc10x)"
- <BKSL> = 19;
- <AC12> = 83;
- indicator 5 = "Num Lock";
-};
-
-xkb_keycodes "pc104" {
- include "digital_vndr/pc(pc101)"
- <LWIN> = 139;
- <RWIN> = 140;
- <MENU> = 141;
-};
-
-xkb_keycodes "lk411_common" {
- include "digital_vndr/pc(pc_common)"
- <AE00> = 8;
- <AB00> = 14;
- <FK13> = 24;
- <FK14> = 10;
- <FK17> = 16;
- <FK18> = 87;
- <FK19> = 95;
- <FK20> = 98;
- <HELP> = 11;
- <DO> = 12;
- <FIND> = 110;
- <INS> = 103;
- <DELE> = 100;
- <SELE> = 101;
- <PGUP> = 111;
- <PGDN> = 109;
- <KPF1> = 118;
- <KPF2> = 119;
- <KPF3> = 126;
- <KPF4> = 132;
- <KPSU> = 19;
- <KPCO> = 124;
- <LCMP> = 40;
- <RCMP> = 88;
-
- alias <TLDE> = <AE00>;
-
- indicator 3 = "Caps Lock";
- indicator 4 = "Scroll Lock";
-};
-
-xkb_keycodes "lk411" {
- include "digital_vndr/pc(lk411_common)"
- <BKSL> = 92;
-};
-
-xkb_keycodes "lk450" {
- include "digital_vndr/pc(lk411)"
- indicator 2 = "Compose";
- indicator 1 = "Wait";
-};
-
-// Japanese variants
-//
-// PCXAJ-AA = pc+BKSL+AC12+AB11+MUHE+KANJ+HIRA+indicator
-// LK411-AJ = lk411+MUHE+KANJ+HIRA
-// LK411-JJ = lk411+BKSL+AZ01+MUHE+KANJ+HIRA
-// LK411-LT = lk411
-
-xkb_keycodes "pcxajaa" {
- include "digital_vndr/pc(pc10x)"
- <BKSL> = 93;
- <AC12> = 83;
- <AB11> = 81;
- <MUHE> = 133;
- <KANJ> = 134;
- <HIRA> = 135;
- indicator 5 = "Group 2";
-};
-
-xkb_keycodes "lk411jj" {
- include "digital_vndr/pc(lk411_common)"
- <AB11> = 81;
- <BKSL> = 83;
- <MUHE> = 133;
- <KANJ> = 134;
- <HIRA> = 135;
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log
+// Revision 1.2 1996/06/18 09:13:25 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.3 1995/10/25 21:00:14 William_Walker
+// Add pc104-key support
+// [1995/10/23 15:46:21 William_Walker]
+//
+// Revision 1.1.6.2 1995/08/07 17:40:37 William_Walker
+// Upgrade XKB to protocol 0.62 (dual submit from decx11)
+// [1995/08/06 14:06:28 William_Walker]
+//
+// Revision 1.1.2.4 1995/08/05 15:25:56 William_Walker
+// Upgrade to XKB protocol 0.62
+// [1995/08/05 14:40:02 William_Walker]
+//
+// Revision 1.1.2.3 1995/06/27 12:17:32 William_Walker
+// Rename <TLDE> to ISO9995 compliant <AE00>.
+// [1995/06/26 20:24:07 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:21:31 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:07:34 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: pc Revision: /main/3 (DEC) Date: 1996/01/24 12:13:36
+//
+xkb_keycodes "pc_common" {
+ // "Function" keys
+ <FK01> = 9;
+ <FK02> = 15;
+ <FK03> = 23;
+ <FK04> = 31;
+ <FK05> = 39;
+ <FK06> = 47;
+ <FK07> = 55;
+ <FK08> = 63;
+ <FK09> = 71;
+ <FK10> = 79;
+ <FK11> = 86;
+ <FK12> = 94;
+
+ // "Editing" keys
+
+ <UP> = 99;
+ <LEFT> = 97;
+ <DOWN> = 96;
+ <RGHT> = 106;
+
+ // "Keypad" keys
+ <KP7> = 108;
+ <KP8> = 117;
+ <KP9> = 125;
+
+ <KP4> = 107;
+ <KP5> = 115;
+ <KP6> = 116;
+
+ <KP1> = 105;
+ <KP2> = 114;
+ <KP3> = 122;
+ <KPEN> = 121;
+
+ <KP0> = 112;
+ <KPDL> = 113;
+
+ // "Alphanumeric" keys
+ <AE01> = 22;
+ <AE02> = 30;
+ <AE03> = 38;
+ <AE04> = 37;
+ <AE05> = 46;
+ <AE06> = 54;
+ <AE07> = 61;
+ <AE08> = 62;
+ <AE09> = 70;
+ <AE10> = 69;
+ <AE11> = 78;
+ <AE12> = 85;
+ <BKSP> = 102;
+
+ <TAB> = 13;
+ <AD01> = 21;
+ <AD02> = 29;
+ <AD03> = 36;
+ <AD04> = 45;
+ <AD05> = 44;
+ <AD06> = 53;
+ <AD07> = 60;
+ <AD08> = 67;
+ <AD09> = 68;
+ <AD10> = 77;
+ <AD11> = 84;
+ <AD12> = 91;
+
+ <CAPS> = 20;
+ <AC01> = 28;
+ <AC02> = 27;
+ <AC03> = 35;
+ <AC04> = 43;
+ <AC05> = 52;
+ <AC06> = 51;
+ <AC07> = 59;
+ <AC08> = 66;
+ <AC09> = 75;
+ <AC10> = 76;
+ <AC11> = 82;
+ <RTRN> = 90;
+
+ <LFSH> = 18;
+ <AB01> = 26;
+ <AB02> = 34;
+ <AB03> = 33;
+ <AB04> = 42;
+ <AB05> = 50;
+ <AB06> = 49;
+ <AB07> = 58;
+ <AB08> = 65;
+ <AB09> = 73;
+ <AB10> = 74;
+ <RTSH> = 89;
+
+ <LCTL> = 17;
+ <LALT> = 25;
+ <SPCE> = 41;
+ <RALT> = 57;
+
+ <LDM> = 255; // Support R5 Lock Down Modifiers
+
+};
+
+xkb_keycodes "pc10x" {
+ include "digital_vndr/pc(pc_common)"
+ <ESC> = 8;
+ <AE00> = 14;
+ <PRSC> = 87;
+ <SCLK> = 95;
+ <PAUS> = 98;
+ <INS> = 103;
+ <HOME> = 110;
+ <PGUP> = 111;
+ <DELE> = 100;
+ <END> = 101;
+ <PGDN> = 109;
+ <NMLK> = 118;
+ <KPDV> = 119;
+ <KPMU> = 126;
+ <KPSU> = 132;
+ <KPAD> = 124;
+ <RCTL> = 88;
+
+ alias <TLDE> = <AE00>;
+
+ indicator 3 = "Caps Lock";
+ indicator 4 = "Scroll Lock";
+};
+
+xkb_keycodes "pc101" {
+ include "digital_vndr/pc(pc10x)"
+ <BKSL> = 92;
+ indicator 5 = "Num Lock";
+};
+
+
+xkb_keycodes "pc102" {
+ include "digital_vndr/pc(pc10x)"
+ <BKSL> = 19;
+ <AC12> = 83;
+ indicator 5 = "Num Lock";
+};
+
+xkb_keycodes "pc104" {
+ include "digital_vndr/pc(pc101)"
+ <LWIN> = 139;
+ <RWIN> = 140;
+ <MENU> = 141;
+};
+
+xkb_keycodes "lk411_common" {
+ include "digital_vndr/pc(pc_common)"
+ <AE00> = 8;
+ <AB00> = 14;
+ <FK13> = 24;
+ <FK14> = 10;
+ <FK17> = 16;
+ <FK18> = 87;
+ <FK19> = 95;
+ <FK20> = 98;
+ <HELP> = 11;
+ <DO> = 12;
+ <FIND> = 110;
+ <INS> = 103;
+ <DELE> = 100;
+ <SELE> = 101;
+ <PGUP> = 111;
+ <PGDN> = 109;
+ <KPF1> = 118;
+ <KPF2> = 119;
+ <KPF3> = 126;
+ <KPF4> = 132;
+ <KPSU> = 19;
+ <KPCO> = 124;
+ <LCMP> = 40;
+ <RCMP> = 88;
+
+ alias <TLDE> = <AE00>;
+
+ indicator 3 = "Caps Lock";
+ indicator 4 = "Scroll Lock";
+};
+
+xkb_keycodes "lk411" {
+ include "digital_vndr/pc(lk411_common)"
+ <BKSL> = 92;
+};
+
+xkb_keycodes "lk450" {
+ include "digital_vndr/pc(lk411)"
+ indicator 2 = "Compose";
+ indicator 1 = "Wait";
+};
+
+// Japanese variants
+//
+// PCXAJ-AA = pc+BKSL+AC12+AB11+MUHE+KANJ+HIRA+indicator
+// LK411-AJ = lk411+MUHE+KANJ+HIRA
+// LK411-JJ = lk411+BKSL+AZ01+MUHE+KANJ+HIRA
+// LK411-LT = lk411
+
+xkb_keycodes "pcxajaa" {
+ include "digital_vndr/pc(pc10x)"
+ <BKSL> = 93;
+ <AC12> = 83;
+ <AB11> = 81;
+ <MUHE> = 133;
+ <KANJ> = 134;
+ <HIRA> = 135;
+ indicator 5 = "Group 2";
+};
+
+xkb_keycodes "lk411jj" {
+ include "digital_vndr/pc(lk411_common)"
+ <AB11> = 81;
+ <BKSL> = 83;
+ <MUHE> = 133;
+ <KANJ> = 134;
+ <HIRA> = 135;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/evdev b/xorg-server/xkeyboard-config/keycodes/evdev
index de035c898..624ac687c 100644
--- a/xorg-server/xkeyboard-config/keycodes/evdev
+++ b/xorg-server/xkeyboard-config/keycodes/evdev
@@ -1,314 +1,314 @@
-// translation from evdev scancodes to something resembling xfree86 keycodes.
-
-default xkb_keycodes "evdev" {
- minimum = 8;
- maximum = 255;
-
- # Added for pc105 compatibility
- <LSGT> = 94;
-
- <TLDE> = 49;
- <AE01> = 10;
- <AE02> = 11;
- <AE03> = 12;
- <AE04> = 13;
- <AE05> = 14;
- <AE06> = 15;
- <AE07> = 16;
- <AE08> = 17;
- <AE09> = 18;
- <AE10> = 19;
- <AE11> = 20;
- <AE12> = 21;
- <BKSP> = 22;
-
- <TAB> = 23;
- <AD01> = 24;
- <AD02> = 25;
- <AD03> = 26;
- <AD04> = 27;
- <AD05> = 28;
- <AD06> = 29;
- <AD07> = 30;
- <AD08> = 31;
- <AD09> = 32;
- <AD10> = 33;
- <AD11> = 34;
- <AD12> = 35;
- <BKSL> = 51;
- alias <AC12> = <BKSL>;
- <RTRN> = 36;
-
- <CAPS> = 66;
- <AC01> = 38;
- <AC02> = 39;
- <AC03> = 40;
- <AC04> = 41;
- <AC05> = 42;
- <AC06> = 43;
- <AC07> = 44;
- <AC08> = 45;
- <AC09> = 46;
- <AC10> = 47;
- <AC11> = 48;
-
- <LFSH> = 50;
- <AB01> = 52;
- <AB02> = 53;
- <AB03> = 54;
- <AB04> = 55;
- <AB05> = 56;
- <AB06> = 57;
- <AB07> = 58;
- <AB08> = 59;
- <AB09> = 60;
- <AB10> = 61;
- <RTSH> = 62;
-
- <LALT> = 64;
- <LCTL> = 37;
- <SPCE> = 65;
- <RCTL> = 105;
- <RALT> = 108;
- // Microsoft keyboard extra keys
- <LWIN> = 133;
- <RWIN> = 134;
- <COMP> = 135;
- alias <MENU> = <COMP>;
-
- <ESC> = 9;
- <FK01> = 67;
- <FK02> = 68;
- <FK03> = 69;
- <FK04> = 70;
- <FK05> = 71;
- <FK06> = 72;
- <FK07> = 73;
- <FK08> = 74;
- <FK09> = 75;
- <FK10> = 76;
- <FK11> = 95;
- <FK12> = 96;
-
- <PRSC> = 107;
- // <SYRQ> = 107;
- <SCLK> = 78;
- <PAUS> = 127;
- // <BRK> = 419;
-
- <INS> = 118;
- <HOME> = 110;
- <PGUP> = 112;
- <DELE> = 119;
- <END> = 115;
- <PGDN> = 117;
-
- <UP> = 111;
- <LEFT> = 113;
- <DOWN> = 116;
- <RGHT> = 114;
-
- <NMLK> = 77;
- <KPDV> = 106;
- <KPMU> = 63;
- <KPSU> = 82;
-
- <KP7> = 79;
- <KP8> = 80;
- <KP9> = 81;
- <KPAD> = 86;
-
- <KP4> = 83;
- <KP5> = 84;
- <KP6> = 85;
-
- <KP1> = 87;
- <KP2> = 88;
- <KP3> = 89;
- <KPEN> = 104;
-
- <KP0> = 90;
- <KPDL> = 91;
- <KPEQ> = 125;
-
- <FK13> = 191;
- <FK14> = 192;
- <FK15> = 193;
- <FK16> = 194;
- <FK17> = 195;
- <FK18> = 196;
- <FK19> = 197;
- <FK20> = 198;
- <FK21> = 199;
- <FK22> = 200;
- <FK23> = 201;
- <FK24> = 202;
-
- // Keys that are generated on Japanese keyboards
-
- //<HZTG> = 93; // Hankaku/Zenkakau toggle - not actually used
- alias <HZTG> = <TLDE>;
- <HKTG> = 101; // Hiragana/Katakana toggle
- <AB11> = 97; // backslash/underscore
- <HENK> = 100; // Henkan
- <MUHE> = 102; // Muhenkan
- <AE13> = 132; // Yen
- <KATA> = 98; // Katakana
- <HIRA> = 99; // Hiragana
- <JPCM> = 103; // KPJPComma
- //<RO> = 97; // Romaji
-
- // Keys that are generated on Korean keyboards
-
- <HNGL> = 130; // Hangul Latin toggle
- <HJCV> = 131; // Hangul to Hanja conversion
-
- // Solaris compatibility
-
- alias <LMTA> = <LWIN>;
- alias <RMTA> = <RWIN>;
- <MUTE> = 121;
- <VOL-> = 122;
- <VOL+> = 123;
- <POWR> = 124;
- <STOP> = 136;
- <AGAI> = 137;
- <PROP> = 138;
- <UNDO> = 139;
- <FRNT> = 140;
- <COPY> = 141;
- <OPEN> = 142;
- <PAST> = 143;
- <FIND> = 144;
- <CUT> = 145;
- <HELP> = 146;
-
- // Extended keys that may be generated on "Internet" keyboards.
- // evdev has standardize names for these.
-
- <LNFD> = 109; // #define KEY_LINEFEED 101
- <I120> = 120; // #define KEY_MACRO 112
- <I126> = 126; // #define KEY_KPPLUSMINUS 118
- <I128> = 128; // #define KEY_SCALE 120
- <I129> = 129; // #define KEY_KPCOMMA 121
- <I147> = 147; // #define KEY_MENU 139
- <I148> = 148; // #define KEY_CALC 140
- <I149> = 149; // #define KEY_SETUP 141
- <I150> = 150; // #define KEY_SLEEP 142
- <I151> = 151; // #define KEY_WAKEUP 143
- <I152> = 152; // #define KEY_FILE 144
- <I153> = 153; // #define KEY_SENDFILE 145
- <I154> = 154; // #define KEY_DELETEFILE 146
- <I155> = 155; // #define KEY_XFER 147
- <I156> = 156; // #define KEY_PROG1 148
- <I157> = 157; // #define KEY_PROG2 149
- <I158> = 158; // #define KEY_WWW 150
- <I159> = 159; // #define KEY_MSDOS 151
- <I160> = 160; // #define KEY_COFFEE 152
- <I161> = 161; // #define KEY_DIRECTION 153
- <I162> = 162; // #define KEY_CYCLEWINDOWS 154
- <I163> = 163; // #define KEY_MAIL 155
- <I164> = 164; // #define KEY_BOOKMARKS 156
- <I165> = 165; // #define KEY_COMPUTER 157
- <I166> = 166; // #define KEY_BACK 158
- <I167> = 167; // #define KEY_FORWARD 159
- <I168> = 168; // #define KEY_CLOSECD 160
- <I169> = 169; // #define KEY_EJECTCD 161
- <I170> = 170; // #define KEY_EJECTCLOSECD 162
- <I171> = 171; // #define KEY_NEXTSONG 163
- <I172> = 172; // #define KEY_PLAYPAUSE 164
- <I173> = 173; // #define KEY_PREVIOUSSONG 165
- <I174> = 174; // #define KEY_STOPCD 166
- <I175> = 175; // #define KEY_RECORD 167
- <I176> = 176; // #define KEY_REWIND 168
- <I177> = 177; // #define KEY_PHONE 169
- <I178> = 178; // #define KEY_ISO 170
- <I179> = 179; // #define KEY_CONFIG 171
- <I180> = 180; // #define KEY_HOMEPAGE 172
- <I181> = 181; // #define KEY_REFRESH 173
- <I182> = 182; // #define KEY_EXIT 174
- <I183> = 183; // #define KEY_MOVE 175
- <I184> = 184; // #define KEY_EDIT 176
- <I185> = 185; // #define KEY_SCROLLUP 177
- <I186> = 186; // #define KEY_SCROLLDOWN 178
- <I187> = 187; // #define KEY_KPLEFTPAREN 179
- <I188> = 188; // #define KEY_KPRIGHTPAREN 180
- <I189> = 189; // #define KEY_NEW 181
- <I190> = 190; // #define KEY_REDO 182
- <I208> = 208; // #define KEY_PLAYCD 200
- <I209> = 209; // #define KEY_PAUSECD 201
- <I210> = 210; // #define KEY_PROG3 202
- <I211> = 211; // #define KEY_PROG4 203 conflicts with AB11
- <I212> = 212; // #define KEY_DASHBOARD 204
- <I213> = 213; // #define KEY_SUSPEND 205
- <I214> = 214; // #define KEY_CLOSE 206
- <I215> = 215; // #define KEY_PLAY 207
- <I216> = 216; // #define KEY_FASTFORWARD 208
- <I217> = 217; // #define KEY_BASSBOOST 209
- <I218> = 218; // #define KEY_PRINT 210
- <I219> = 219; // #define KEY_HP 211
- <I220> = 220; // #define KEY_CAMERA 212
- <I221> = 221; // #define KEY_SOUND 213
- <I222> = 222; // #define KEY_QUESTION 214
- <I223> = 223; // #define KEY_EMAIL 215
- <I224> = 224; // #define KEY_CHAT 216
- <I225> = 225; // #define KEY_SEARCH 217
- <I226> = 226; // #define KEY_CONNECT 218
- <I227> = 227; // #define KEY_FINANCE 219
- <I228> = 228; // #define KEY_SPORT 220
- <I229> = 229; // #define KEY_SHOP 221
- <I230> = 230; // #define KEY_ALTERASE 222
- <I231> = 231; // #define KEY_CANCEL 223
- <I232> = 232; // #define KEY_BRIGHTNESSDOWN 224
- <I233> = 233; // #define KEY_BRIGHTNESSUP 225
- <I234> = 234; // #define KEY_MEDIA 226
- <I235> = 235; // #define KEY_SWITCHVIDEOMODE 227
- <I236> = 236; // #define KEY_KBDILLUMTOGGLE 228
- <I237> = 237; // #define KEY_KBDILLUMDOWN 229
- <I238> = 238; // #define KEY_KBDILLUMUP 230
- <I239> = 239; // #define KEY_SEND 231
- <I240> = 240; // #define KEY_REPLY 232
- <I241> = 241; // #define KEY_FORWARDMAIL 233
- <I242> = 242; // #define KEY_SAVE 234
- <I243> = 243; // #define KEY_DOCUMENTS 235
- <I244> = 244; // #define KEY_BATTERY 236
- <I245> = 245; // #define KEY_BLUETOOTH 237
- <I246> = 246; // #define KEY_WLAN 238
- <I247> = 247; // #define KEY_UWB 239
- <I248> = 248; // #define KEY_UNKNOWN 240
- <I249> = 249; // #define KEY_VIDEO_NEXT 241
- <I250> = 250; // #define KEY_VIDEO_PREV 242
- <I251> = 251; // #define KEY_BRIGHTNESS_CYCLE 243
- <I252> = 252; // #define KEY_BRIGHTNESS_ZERO 244
- <I253> = 253; // #define KEY_DISPLAY_OFF 245
-
- // Fake keycodes for virtual keys
- <LVL3> = 92;
- <MDSW> = 203;
- <ALT> = 204;
- <META> = 205;
- <SUPR> = 206;
- <HYPR> = 207;
-
- indicator 1 = "Caps Lock";
- indicator 2 = "Num Lock";
- indicator 3 = "Scroll Lock";
- indicator 4 = "Compose";
- indicator 5 = "Kana";
- indicator 6 = "Sleep";
- indicator 7 = "Suspend";
- indicator 8 = "Mute";
- indicator 9 = "Misc";
- indicator 10 = "Mail";
- indicator 11 = "Charging";
-
- alias <ALGR> = <RALT>;
-
- // For Brazilian ABNT2
- alias <KPPT> = <I129>;
-};
-
-// PC98
-xkb_keycodes "pc98" {
- include "evdev(evdev)"
-};
+// translation from evdev scancodes to something resembling xfree86 keycodes.
+
+default xkb_keycodes "evdev" {
+ minimum = 8;
+ maximum = 255;
+
+ # Added for pc105 compatibility
+ <LSGT> = 94;
+
+ <TLDE> = 49;
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <BKSP> = 22;
+
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <BKSL> = 51;
+ alias <AC12> = <BKSL>;
+ <RTRN> = 36;
+
+ <CAPS> = 66;
+ <AC01> = 38;
+ <AC02> = 39;
+ <AC03> = 40;
+ <AC04> = 41;
+ <AC05> = 42;
+ <AC06> = 43;
+ <AC07> = 44;
+ <AC08> = 45;
+ <AC09> = 46;
+ <AC10> = 47;
+ <AC11> = 48;
+
+ <LFSH> = 50;
+ <AB01> = 52;
+ <AB02> = 53;
+ <AB03> = 54;
+ <AB04> = 55;
+ <AB05> = 56;
+ <AB06> = 57;
+ <AB07> = 58;
+ <AB08> = 59;
+ <AB09> = 60;
+ <AB10> = 61;
+ <RTSH> = 62;
+
+ <LALT> = 64;
+ <LCTL> = 37;
+ <SPCE> = 65;
+ <RCTL> = 105;
+ <RALT> = 108;
+ // Microsoft keyboard extra keys
+ <LWIN> = 133;
+ <RWIN> = 134;
+ <COMP> = 135;
+ alias <MENU> = <COMP>;
+
+ <ESC> = 9;
+ <FK01> = 67;
+ <FK02> = 68;
+ <FK03> = 69;
+ <FK04> = 70;
+ <FK05> = 71;
+ <FK06> = 72;
+ <FK07> = 73;
+ <FK08> = 74;
+ <FK09> = 75;
+ <FK10> = 76;
+ <FK11> = 95;
+ <FK12> = 96;
+
+ <PRSC> = 107;
+ // <SYRQ> = 107;
+ <SCLK> = 78;
+ <PAUS> = 127;
+ // <BRK> = 419;
+
+ <INS> = 118;
+ <HOME> = 110;
+ <PGUP> = 112;
+ <DELE> = 119;
+ <END> = 115;
+ <PGDN> = 117;
+
+ <UP> = 111;
+ <LEFT> = 113;
+ <DOWN> = 116;
+ <RGHT> = 114;
+
+ <NMLK> = 77;
+ <KPDV> = 106;
+ <KPMU> = 63;
+ <KPSU> = 82;
+
+ <KP7> = 79;
+ <KP8> = 80;
+ <KP9> = 81;
+ <KPAD> = 86;
+
+ <KP4> = 83;
+ <KP5> = 84;
+ <KP6> = 85;
+
+ <KP1> = 87;
+ <KP2> = 88;
+ <KP3> = 89;
+ <KPEN> = 104;
+
+ <KP0> = 90;
+ <KPDL> = 91;
+ <KPEQ> = 125;
+
+ <FK13> = 191;
+ <FK14> = 192;
+ <FK15> = 193;
+ <FK16> = 194;
+ <FK17> = 195;
+ <FK18> = 196;
+ <FK19> = 197;
+ <FK20> = 198;
+ <FK21> = 199;
+ <FK22> = 200;
+ <FK23> = 201;
+ <FK24> = 202;
+
+ // Keys that are generated on Japanese keyboards
+
+ //<HZTG> = 93; // Hankaku/Zenkakau toggle - not actually used
+ alias <HZTG> = <TLDE>;
+ <HKTG> = 101; // Hiragana/Katakana toggle
+ <AB11> = 97; // backslash/underscore
+ <HENK> = 100; // Henkan
+ <MUHE> = 102; // Muhenkan
+ <AE13> = 132; // Yen
+ <KATA> = 98; // Katakana
+ <HIRA> = 99; // Hiragana
+ <JPCM> = 103; // KPJPComma
+ //<RO> = 97; // Romaji
+
+ // Keys that are generated on Korean keyboards
+
+ <HNGL> = 130; // Hangul Latin toggle
+ <HJCV> = 131; // Hangul to Hanja conversion
+
+ // Solaris compatibility
+
+ alias <LMTA> = <LWIN>;
+ alias <RMTA> = <RWIN>;
+ <MUTE> = 121;
+ <VOL-> = 122;
+ <VOL+> = 123;
+ <POWR> = 124;
+ <STOP> = 136;
+ <AGAI> = 137;
+ <PROP> = 138;
+ <UNDO> = 139;
+ <FRNT> = 140;
+ <COPY> = 141;
+ <OPEN> = 142;
+ <PAST> = 143;
+ <FIND> = 144;
+ <CUT> = 145;
+ <HELP> = 146;
+
+ // Extended keys that may be generated on "Internet" keyboards.
+ // evdev has standardize names for these.
+
+ <LNFD> = 109; // #define KEY_LINEFEED 101
+ <I120> = 120; // #define KEY_MACRO 112
+ <I126> = 126; // #define KEY_KPPLUSMINUS 118
+ <I128> = 128; // #define KEY_SCALE 120
+ <I129> = 129; // #define KEY_KPCOMMA 121
+ <I147> = 147; // #define KEY_MENU 139
+ <I148> = 148; // #define KEY_CALC 140
+ <I149> = 149; // #define KEY_SETUP 141
+ <I150> = 150; // #define KEY_SLEEP 142
+ <I151> = 151; // #define KEY_WAKEUP 143
+ <I152> = 152; // #define KEY_FILE 144
+ <I153> = 153; // #define KEY_SENDFILE 145
+ <I154> = 154; // #define KEY_DELETEFILE 146
+ <I155> = 155; // #define KEY_XFER 147
+ <I156> = 156; // #define KEY_PROG1 148
+ <I157> = 157; // #define KEY_PROG2 149
+ <I158> = 158; // #define KEY_WWW 150
+ <I159> = 159; // #define KEY_MSDOS 151
+ <I160> = 160; // #define KEY_COFFEE 152
+ <I161> = 161; // #define KEY_DIRECTION 153
+ <I162> = 162; // #define KEY_CYCLEWINDOWS 154
+ <I163> = 163; // #define KEY_MAIL 155
+ <I164> = 164; // #define KEY_BOOKMARKS 156
+ <I165> = 165; // #define KEY_COMPUTER 157
+ <I166> = 166; // #define KEY_BACK 158
+ <I167> = 167; // #define KEY_FORWARD 159
+ <I168> = 168; // #define KEY_CLOSECD 160
+ <I169> = 169; // #define KEY_EJECTCD 161
+ <I170> = 170; // #define KEY_EJECTCLOSECD 162
+ <I171> = 171; // #define KEY_NEXTSONG 163
+ <I172> = 172; // #define KEY_PLAYPAUSE 164
+ <I173> = 173; // #define KEY_PREVIOUSSONG 165
+ <I174> = 174; // #define KEY_STOPCD 166
+ <I175> = 175; // #define KEY_RECORD 167
+ <I176> = 176; // #define KEY_REWIND 168
+ <I177> = 177; // #define KEY_PHONE 169
+ <I178> = 178; // #define KEY_ISO 170
+ <I179> = 179; // #define KEY_CONFIG 171
+ <I180> = 180; // #define KEY_HOMEPAGE 172
+ <I181> = 181; // #define KEY_REFRESH 173
+ <I182> = 182; // #define KEY_EXIT 174
+ <I183> = 183; // #define KEY_MOVE 175
+ <I184> = 184; // #define KEY_EDIT 176
+ <I185> = 185; // #define KEY_SCROLLUP 177
+ <I186> = 186; // #define KEY_SCROLLDOWN 178
+ <I187> = 187; // #define KEY_KPLEFTPAREN 179
+ <I188> = 188; // #define KEY_KPRIGHTPAREN 180
+ <I189> = 189; // #define KEY_NEW 181
+ <I190> = 190; // #define KEY_REDO 182
+ <I208> = 208; // #define KEY_PLAYCD 200
+ <I209> = 209; // #define KEY_PAUSECD 201
+ <I210> = 210; // #define KEY_PROG3 202
+ <I211> = 211; // #define KEY_PROG4 203 conflicts with AB11
+ <I212> = 212; // #define KEY_DASHBOARD 204
+ <I213> = 213; // #define KEY_SUSPEND 205
+ <I214> = 214; // #define KEY_CLOSE 206
+ <I215> = 215; // #define KEY_PLAY 207
+ <I216> = 216; // #define KEY_FASTFORWARD 208
+ <I217> = 217; // #define KEY_BASSBOOST 209
+ <I218> = 218; // #define KEY_PRINT 210
+ <I219> = 219; // #define KEY_HP 211
+ <I220> = 220; // #define KEY_CAMERA 212
+ <I221> = 221; // #define KEY_SOUND 213
+ <I222> = 222; // #define KEY_QUESTION 214
+ <I223> = 223; // #define KEY_EMAIL 215
+ <I224> = 224; // #define KEY_CHAT 216
+ <I225> = 225; // #define KEY_SEARCH 217
+ <I226> = 226; // #define KEY_CONNECT 218
+ <I227> = 227; // #define KEY_FINANCE 219
+ <I228> = 228; // #define KEY_SPORT 220
+ <I229> = 229; // #define KEY_SHOP 221
+ <I230> = 230; // #define KEY_ALTERASE 222
+ <I231> = 231; // #define KEY_CANCEL 223
+ <I232> = 232; // #define KEY_BRIGHTNESSDOWN 224
+ <I233> = 233; // #define KEY_BRIGHTNESSUP 225
+ <I234> = 234; // #define KEY_MEDIA 226
+ <I235> = 235; // #define KEY_SWITCHVIDEOMODE 227
+ <I236> = 236; // #define KEY_KBDILLUMTOGGLE 228
+ <I237> = 237; // #define KEY_KBDILLUMDOWN 229
+ <I238> = 238; // #define KEY_KBDILLUMUP 230
+ <I239> = 239; // #define KEY_SEND 231
+ <I240> = 240; // #define KEY_REPLY 232
+ <I241> = 241; // #define KEY_FORWARDMAIL 233
+ <I242> = 242; // #define KEY_SAVE 234
+ <I243> = 243; // #define KEY_DOCUMENTS 235
+ <I244> = 244; // #define KEY_BATTERY 236
+ <I245> = 245; // #define KEY_BLUETOOTH 237
+ <I246> = 246; // #define KEY_WLAN 238
+ <I247> = 247; // #define KEY_UWB 239
+ <I248> = 248; // #define KEY_UNKNOWN 240
+ <I249> = 249; // #define KEY_VIDEO_NEXT 241
+ <I250> = 250; // #define KEY_VIDEO_PREV 242
+ <I251> = 251; // #define KEY_BRIGHTNESS_CYCLE 243
+ <I252> = 252; // #define KEY_BRIGHTNESS_ZERO 244
+ <I253> = 253; // #define KEY_DISPLAY_OFF 245
+
+ // Fake keycodes for virtual keys
+ <LVL3> = 92;
+ <MDSW> = 203;
+ <ALT> = 204;
+ <META> = 205;
+ <SUPR> = 206;
+ <HYPR> = 207;
+
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+ indicator 4 = "Compose";
+ indicator 5 = "Kana";
+ indicator 6 = "Sleep";
+ indicator 7 = "Suspend";
+ indicator 8 = "Mute";
+ indicator 9 = "Misc";
+ indicator 10 = "Mail";
+ indicator 11 = "Charging";
+
+ alias <ALGR> = <RALT>;
+
+ // For Brazilian ABNT2
+ alias <KPPT> = <I129>;
+};
+
+// PC98
+xkb_keycodes "pc98" {
+ include "evdev(evdev)"
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/fujitsu b/xorg-server/xkeyboard-config/keycodes/fujitsu
index 373621038..ca259f80f 100644
--- a/xorg-server/xkeyboard-config/keycodes/fujitsu
+++ b/xorg-server/xkeyboard-config/keycodes/fujitsu
@@ -1,186 +1,186 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-default xkb_keycodes "138" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 37;
- <AE01> = 38;
- <AE02> = 39;
- <AE03> = 40;
- <AE04> = 41;
- <AE05> = 42;
- <AE06> = 43;
- <AE07> = 44;
- <AE08> = 45;
- <AE09> = 46;
- <AE10> = 47;
- <AE11> = 48;
- <AE12> = 49;
- <TLDE> = 50;
- <BKSP> = 51;
-
- <TAB> = 61;
- <AD01> = 62;
- <AD02> = 63;
- <AD03> = 64;
- <AD04> = 65;
- <AD05> = 66;
- <AD06> = 67;
- <AD07> = 68;
- <AD08> = 69;
- <AD09> = 70;
- <AD10> = 71;
- <AD11> = 72;
- <AD12> = 73;
-
- <LCTL> = 84;
- <AC01> = 85;
- <AC02> = 86;
- <AC03> = 87;
- <AC04> = 88;
- <AC05> = 89;
- <AC06> = 90;
- <AC07> = 91;
- <AC08> = 92;
- <AC09> = 93;
- <AC10> = 94;
- <AC11> = 95;
- <BKSL> = 96;
- <RTRN> = 97;
-
- <LFSH> = 107;
- <AB01> = 108;
- <AB02> = 109;
- <AB03> = 110;
- <AB04> = 111;
- <AB05> = 112;
- <AB06> = 113;
- <AB07> = 114;
- <AB08> = 115;
- <AB09> = 116;
- <AB10> = 117;
- <AB11> = 52;
- <RTSH> = 118;
-
- <CAPS> = 127;
- <LALT> = 27;
- <LMTA> = 128;
- <UNK4> = 125;
- <SPCE> = 129;
- <UNK5> = 10;
- <RMTA> = 130;
- <RALT> = 23;
- <COMP> = 75;
- <LNFD> = 119;
- <UNK6> = 56;
-
- <FK01> = 13;
- <FK02> = 14;
- <FK03> = 16;
- <FK04> = 18;
- <FK05> = 20;
- <FK06> = 22;
- <FK07> = 24;
- <FK08> = 25;
- <FK09> = 26;
- <FK10> = 15;
- <FK11> = 17;
- <FK12> = 19;
- <FK13> = 137;
- <FK14> = 138;
- <FK15> = 139;
- <FK16> = 140;
- <FK17> = 141;
- <FK18> = 142;
- <FK19> = 143;
- <FK20> = 144;
- <FK21> = 145;
- <FK22> = 146;
- <FK23> = 147;
- <FK24> = 148;
- <FK25> = 153;
- <FK26> = 154;
- <FK27> = 155;
- <FK28> = 156;
- <FK29> = 149;
- <FK30> = 150;
- <FK31> = 151;
- <FK32> = 152;
-
- <UNDO> = 34;
- <COPY> = 59;
- <PAST> = 81;
- <CUT> = 105;
- <HELP> = 126;
-
- <BREA> = 9;
- <PRSC> = 30;
- <KNJI> = 21;
- <PAUS> = 29;
-
- <UNK0> = 82;
- <UNK1> = 83;
- <UNK2> = 12;
- <PGUP> = 35;
- <HOME> = 32;
- <PGDN> = 36;
- <UNK3> = 28;
- <DEL> = 74;
- <INS> = 60;
- <UP> = 33;
- <DOWN> = 103;
- <LEFT> = 57;
- <RGHT> = 80;
- <EXEC> = 11;
-
- <KPMU> = 55;
- <KPDV> = 54;
- <KPAD> = 133;
- <KPSU> = 79;
-
- <KP7> = 76;
- <KP8> = 77;
- <KP9> = 78;
- <KPEQ> = 53;
-
- <KP4> = 99;
- <KP5> = 100;
- <KP6> = 101;
- <KPDC> = 58;
-
- <KP1> = 120;
- <KP2> = 121;
- <KP3> = 122;
- <KPEN> = 98;
-
- <KP0> = 102;
- <KP00> = 31;
-
- <UNK7> = 123;
- <UNK8> = 124;
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+default xkb_keycodes "138" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 37;
+ <AE01> = 38;
+ <AE02> = 39;
+ <AE03> = 40;
+ <AE04> = 41;
+ <AE05> = 42;
+ <AE06> = 43;
+ <AE07> = 44;
+ <AE08> = 45;
+ <AE09> = 46;
+ <AE10> = 47;
+ <AE11> = 48;
+ <AE12> = 49;
+ <TLDE> = 50;
+ <BKSP> = 51;
+
+ <TAB> = 61;
+ <AD01> = 62;
+ <AD02> = 63;
+ <AD03> = 64;
+ <AD04> = 65;
+ <AD05> = 66;
+ <AD06> = 67;
+ <AD07> = 68;
+ <AD08> = 69;
+ <AD09> = 70;
+ <AD10> = 71;
+ <AD11> = 72;
+ <AD12> = 73;
+
+ <LCTL> = 84;
+ <AC01> = 85;
+ <AC02> = 86;
+ <AC03> = 87;
+ <AC04> = 88;
+ <AC05> = 89;
+ <AC06> = 90;
+ <AC07> = 91;
+ <AC08> = 92;
+ <AC09> = 93;
+ <AC10> = 94;
+ <AC11> = 95;
+ <BKSL> = 96;
+ <RTRN> = 97;
+
+ <LFSH> = 107;
+ <AB01> = 108;
+ <AB02> = 109;
+ <AB03> = 110;
+ <AB04> = 111;
+ <AB05> = 112;
+ <AB06> = 113;
+ <AB07> = 114;
+ <AB08> = 115;
+ <AB09> = 116;
+ <AB10> = 117;
+ <AB11> = 52;
+ <RTSH> = 118;
+
+ <CAPS> = 127;
+ <LALT> = 27;
+ <LMTA> = 128;
+ <UNK4> = 125;
+ <SPCE> = 129;
+ <UNK5> = 10;
+ <RMTA> = 130;
+ <RALT> = 23;
+ <COMP> = 75;
+ <LNFD> = 119;
+ <UNK6> = 56;
+
+ <FK01> = 13;
+ <FK02> = 14;
+ <FK03> = 16;
+ <FK04> = 18;
+ <FK05> = 20;
+ <FK06> = 22;
+ <FK07> = 24;
+ <FK08> = 25;
+ <FK09> = 26;
+ <FK10> = 15;
+ <FK11> = 17;
+ <FK12> = 19;
+ <FK13> = 137;
+ <FK14> = 138;
+ <FK15> = 139;
+ <FK16> = 140;
+ <FK17> = 141;
+ <FK18> = 142;
+ <FK19> = 143;
+ <FK20> = 144;
+ <FK21> = 145;
+ <FK22> = 146;
+ <FK23> = 147;
+ <FK24> = 148;
+ <FK25> = 153;
+ <FK26> = 154;
+ <FK27> = 155;
+ <FK28> = 156;
+ <FK29> = 149;
+ <FK30> = 150;
+ <FK31> = 151;
+ <FK32> = 152;
+
+ <UNDO> = 34;
+ <COPY> = 59;
+ <PAST> = 81;
+ <CUT> = 105;
+ <HELP> = 126;
+
+ <BREA> = 9;
+ <PRSC> = 30;
+ <KNJI> = 21;
+ <PAUS> = 29;
+
+ <UNK0> = 82;
+ <UNK1> = 83;
+ <UNK2> = 12;
+ <PGUP> = 35;
+ <HOME> = 32;
+ <PGDN> = 36;
+ <UNK3> = 28;
+ <DEL> = 74;
+ <INS> = 60;
+ <UP> = 33;
+ <DOWN> = 103;
+ <LEFT> = 57;
+ <RGHT> = 80;
+ <EXEC> = 11;
+
+ <KPMU> = 55;
+ <KPDV> = 54;
+ <KPAD> = 133;
+ <KPSU> = 79;
+
+ <KP7> = 76;
+ <KP8> = 77;
+ <KP9> = 78;
+ <KPEQ> = 53;
+
+ <KP4> = 99;
+ <KP5> = 100;
+ <KP6> = 101;
+ <KPDC> = 58;
+
+ <KP1> = 120;
+ <KP2> = 121;
+ <KP3> = 122;
+ <KPEN> = 98;
+
+ <KP0> = 102;
+ <KP00> = 31;
+
+ <UNK7> = 123;
+ <UNK8> = 124;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/hp b/xorg-server/xkeyboard-config/keycodes/hp
index 544389578..81983a02a 100644
--- a/xorg-server/xkeyboard-config/keycodes/hp
+++ b/xorg-server/xkeyboard-config/keycodes/hp
@@ -1,270 +1,270 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-default xkb_keycodes "hp-101" {
-
- <TLDE> = 23;
- <AE01> = 31;
- <AE02> = 39;
- <AE03> = 47;
- <AE04> = 46;
- <AE05> = 55;
- <AE06> = 63;
- <AE07> = 70;
- <AE08> = 71;
- <AE09> = 79;
- <AE10> = 78;
- <AE11> = 87;
- <AE12> = 94;
- <BKSP> = 111;
-
- <TAB> = 22;
- <AD01> = 30;
- <AD02> = 38;
- <AD03> = 45;
- <AD04> = 54;
- <AD05> = 53;
- <AD06> = 62;
- <AD07> = 69;
- <AD08> = 76;
- <AD09> = 77;
- <AD10> = 86;
- <AD11> = 93;
- <AD12> = 100;
- <BKSL> = 101;
-
- <CAPS> = 29;
- <AC01> = 37;
- <AC02> = 36;
- <AC03> = 44;
- <AC04> = 52;
- <AC05> = 61;
- <AC06> = 60;
- <AC07> = 68;
- <AC08> = 75;
- <AC09> = 84;
- <AC10> = 85;
- <AC11> = 91;
- <RTRN> = 99;
-
- <LFSH> = 27;
- <AB01> = 35;
- <AB02> = 43;
- <AB03> = 42;
- <AB04> = 51;
- <AB05> = 59;
- <AB06> = 58;
- <AB07> = 67;
- <AB08> = 74;
- <AB09> = 82;
- <AB10> = 83;
- <RTSH> = 98;
-
- <LCTL> = 26;
- <LALT> = 34;
- <SPCE> = 50;
- <RALT> = 66;
- <RCTL> = 97;
-
- <ESC> = 17;
- <FK01> = 16;
- <FK02> = 24;
- <FK03> = 32;
- <FK04> = 40;
- <FK05> = 48;
- <FK06> = 56;
- <FK07> = 64;
- <FK08> = 72;
- <FK09> = 80;
- <FK10> = 88;
- <FK11> = 95;
- <FK12> = 103;
-
- <PRSC> = 96;
- <SCLK> = 104;
- <PAUS> = 107;
-
- <INS> = 112;
- <HOME> = 119;
- <PGUP> = 120;
- <DELE> = 109;
- <END> = 110;
- <PGDN> = 118;
-
- <UP> = 108;
- <LEFT> = 106;
- <DOWN> = 105;
- <RGHT> = 115;
-
- <NMLK> = 127;
- <KPDV> = 128;
- <KPMU> = 135;
- <KPSU> = 141;
-
- <KP7> = 117;
- <KP8> = 126;
- <KP9> = 134;
- <KPAD> = 133;
-
- <KP4> = 116;
- <KP5> = 124;
- <KP6> = 125;
-
- <KP1> = 114;
- <KP2> = 123;
- <KP3> = 131;
- <KPEN> = 130;
-
- <KP0> = 121;
- <KPDL> = 122;
-
- indicator 1 = "Caps Lock";
- indicator 2 = "Num Lock";
- indicator 3 = "Scroll Lock";
-};
-
-xkb_keycodes "hil" {
-
- <TLDE> = 71;
- <AE01> = 70;
- <AE02> = 69;
- <AE03> = 68;
- <AE04> = 67;
- <AE05> = 66;
- <AE06> = 65;
- <AE07> = 64;
- <AE08> = 96;
- <AE09> = 97;
- <AE10> = 98;
- <AE11> = 99;
- <AE12> = 100;
- <BKSP> = 101;
-
- <TAB> = 63;
- <AD01> = 62;
- <AD02> = 61;
- <AD03> = 60;
- <AD04> = 59;
- <AD05> = 58;
- <AD06> = 57;
- <AD07> = 56;
- <AD08> = 104;
- <AD09> = 105;
- <AD10> = 106;
- <AD11> = 107;
- <AD12> = 108;
- <BKSL> = 109;
-
- <CAPS> = 55;
- <AC01> = 53;
- <AC02> = 52;
- <AC03> = 51;
- <AC04> = 50;
- <AC05> = 49;
- <AC06> = 48;
- <AC07> = 112;
- <AC08> = 113;
- <AC09> = 114;
- <AC10> = 115;
- <AC11> = 116;
- <RTRN> = 117;
-
- <LFSH> = 13;
- <AB01> = 36;
- <AB02> = 35;
- <AB03> = 34;
- <AB04> = 33;
- <AB05> = 32;
- <AB06> = 128;
- <AB07> = 120;
- <AB08> = 121;
- <AB09> = 122;
- <AB10> = 123;
- <RTSH> = 12;
-
- <LCTL> = 14;
- <LALT> = 11;
- <SPCE> = 129;
- <RALT> = 10;
- <PRSC> = 87;
-
- <ESC> = 39;
- <BRK> = 15;
- <STOP> = 86;
- <FK01> = 84;
- <FK02> = 83;
- <FK03> = 82;
- <FK04> = 81;
- <MENU> = 80;
- <SYST> = 88;
- <FK05> = 89;
- <FK06> = 90;
- <FK07> = 91;
- <FK08> = 92;
- <FK09> = 45;
- <FK10> = 41;
- <FK11> = 43;
- <FK12> = 47;
- <CLRL> = 94;
- <CLR> = 95;
-
- <INSL> = 102;
- <DELL> = 103;
- <INSC> = 110;
- <DELC> = 111;
-
- <HOME> = 118;
- <PGUP> = 119;
- <PGDN> = 127;
- <SELE> = 125;
-
- <UP> = 134;
- <LEFT> = 132;
- <DOWN> = 133;
- <RGHT> = 135;
-
- <KPDV> = 25;
- <KPMU> = 29;
- <KPAD> = 27;
- <KPSU> = 31;
-
- <KP7> = 21;
- <KP8> = 17;
- <KP9> = 19;
- <KPEN> = 23;
-
- <KP4> = 16;
- <KP5> = 18;
- <KP6> = 20;
- <KPSP> = 22;
-
- <KP1> = 24;
- <KP2> = 26;
- <KP3> = 28;
- <KPTB> = 46;
-
- <KP0> = 30;
- <KPDL> = 44;
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+default xkb_keycodes "hp-101" {
+
+ <TLDE> = 23;
+ <AE01> = 31;
+ <AE02> = 39;
+ <AE03> = 47;
+ <AE04> = 46;
+ <AE05> = 55;
+ <AE06> = 63;
+ <AE07> = 70;
+ <AE08> = 71;
+ <AE09> = 79;
+ <AE10> = 78;
+ <AE11> = 87;
+ <AE12> = 94;
+ <BKSP> = 111;
+
+ <TAB> = 22;
+ <AD01> = 30;
+ <AD02> = 38;
+ <AD03> = 45;
+ <AD04> = 54;
+ <AD05> = 53;
+ <AD06> = 62;
+ <AD07> = 69;
+ <AD08> = 76;
+ <AD09> = 77;
+ <AD10> = 86;
+ <AD11> = 93;
+ <AD12> = 100;
+ <BKSL> = 101;
+
+ <CAPS> = 29;
+ <AC01> = 37;
+ <AC02> = 36;
+ <AC03> = 44;
+ <AC04> = 52;
+ <AC05> = 61;
+ <AC06> = 60;
+ <AC07> = 68;
+ <AC08> = 75;
+ <AC09> = 84;
+ <AC10> = 85;
+ <AC11> = 91;
+ <RTRN> = 99;
+
+ <LFSH> = 27;
+ <AB01> = 35;
+ <AB02> = 43;
+ <AB03> = 42;
+ <AB04> = 51;
+ <AB05> = 59;
+ <AB06> = 58;
+ <AB07> = 67;
+ <AB08> = 74;
+ <AB09> = 82;
+ <AB10> = 83;
+ <RTSH> = 98;
+
+ <LCTL> = 26;
+ <LALT> = 34;
+ <SPCE> = 50;
+ <RALT> = 66;
+ <RCTL> = 97;
+
+ <ESC> = 17;
+ <FK01> = 16;
+ <FK02> = 24;
+ <FK03> = 32;
+ <FK04> = 40;
+ <FK05> = 48;
+ <FK06> = 56;
+ <FK07> = 64;
+ <FK08> = 72;
+ <FK09> = 80;
+ <FK10> = 88;
+ <FK11> = 95;
+ <FK12> = 103;
+
+ <PRSC> = 96;
+ <SCLK> = 104;
+ <PAUS> = 107;
+
+ <INS> = 112;
+ <HOME> = 119;
+ <PGUP> = 120;
+ <DELE> = 109;
+ <END> = 110;
+ <PGDN> = 118;
+
+ <UP> = 108;
+ <LEFT> = 106;
+ <DOWN> = 105;
+ <RGHT> = 115;
+
+ <NMLK> = 127;
+ <KPDV> = 128;
+ <KPMU> = 135;
+ <KPSU> = 141;
+
+ <KP7> = 117;
+ <KP8> = 126;
+ <KP9> = 134;
+ <KPAD> = 133;
+
+ <KP4> = 116;
+ <KP5> = 124;
+ <KP6> = 125;
+
+ <KP1> = 114;
+ <KP2> = 123;
+ <KP3> = 131;
+ <KPEN> = 130;
+
+ <KP0> = 121;
+ <KPDL> = 122;
+
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+};
+
+xkb_keycodes "hil" {
+
+ <TLDE> = 71;
+ <AE01> = 70;
+ <AE02> = 69;
+ <AE03> = 68;
+ <AE04> = 67;
+ <AE05> = 66;
+ <AE06> = 65;
+ <AE07> = 64;
+ <AE08> = 96;
+ <AE09> = 97;
+ <AE10> = 98;
+ <AE11> = 99;
+ <AE12> = 100;
+ <BKSP> = 101;
+
+ <TAB> = 63;
+ <AD01> = 62;
+ <AD02> = 61;
+ <AD03> = 60;
+ <AD04> = 59;
+ <AD05> = 58;
+ <AD06> = 57;
+ <AD07> = 56;
+ <AD08> = 104;
+ <AD09> = 105;
+ <AD10> = 106;
+ <AD11> = 107;
+ <AD12> = 108;
+ <BKSL> = 109;
+
+ <CAPS> = 55;
+ <AC01> = 53;
+ <AC02> = 52;
+ <AC03> = 51;
+ <AC04> = 50;
+ <AC05> = 49;
+ <AC06> = 48;
+ <AC07> = 112;
+ <AC08> = 113;
+ <AC09> = 114;
+ <AC10> = 115;
+ <AC11> = 116;
+ <RTRN> = 117;
+
+ <LFSH> = 13;
+ <AB01> = 36;
+ <AB02> = 35;
+ <AB03> = 34;
+ <AB04> = 33;
+ <AB05> = 32;
+ <AB06> = 128;
+ <AB07> = 120;
+ <AB08> = 121;
+ <AB09> = 122;
+ <AB10> = 123;
+ <RTSH> = 12;
+
+ <LCTL> = 14;
+ <LALT> = 11;
+ <SPCE> = 129;
+ <RALT> = 10;
+ <PRSC> = 87;
+
+ <ESC> = 39;
+ <BRK> = 15;
+ <STOP> = 86;
+ <FK01> = 84;
+ <FK02> = 83;
+ <FK03> = 82;
+ <FK04> = 81;
+ <MENU> = 80;
+ <SYST> = 88;
+ <FK05> = 89;
+ <FK06> = 90;
+ <FK07> = 91;
+ <FK08> = 92;
+ <FK09> = 45;
+ <FK10> = 41;
+ <FK11> = 43;
+ <FK12> = 47;
+ <CLRL> = 94;
+ <CLR> = 95;
+
+ <INSL> = 102;
+ <DELL> = 103;
+ <INSC> = 110;
+ <DELC> = 111;
+
+ <HOME> = 118;
+ <PGUP> = 119;
+ <PGDN> = 127;
+ <SELE> = 125;
+
+ <UP> = 134;
+ <LEFT> = 132;
+ <DOWN> = 133;
+ <RGHT> = 135;
+
+ <KPDV> = 25;
+ <KPMU> = 29;
+ <KPAD> = 27;
+ <KPSU> = 31;
+
+ <KP7> = 21;
+ <KP8> = 17;
+ <KP9> = 19;
+ <KPEN> = 23;
+
+ <KP4> = 16;
+ <KP5> = 18;
+ <KP6> = 20;
+ <KPSP> = 22;
+
+ <KP1> = 24;
+ <KP2> = 26;
+ <KP3> = 28;
+ <KPTB> = 46;
+
+ <KP0> = 30;
+ <KPDL> = 44;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/ibm b/xorg-server/xkeyboard-config/keycodes/ibm
index 3ce84a70a..9ebf0586d 100644
--- a/xorg-server/xkeyboard-config/keycodes/ibm
+++ b/xorg-server/xkeyboard-config/keycodes/ibm
@@ -1,150 +1,150 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-xkb_keycodes "rs6k-101" {
-
- <TLDE> = 9;
- <AE01> = 10;
- <AE02> = 11;
- <AE03> = 12;
- <AE04> = 13;
- <AE05> = 14;
- <AE06> = 15;
- <AE07> = 16;
- <AE08> = 17;
- <AE09> = 18;
- <AE10> = 19;
- <AE11> = 20;
- <AE12> = 21;
- <BKSP> = 23;
-
- <TAB> = 24;
- <AD01> = 25;
- <AD02> = 26;
- <AD03> = 27;
- <AD04> = 28;
- <AD05> = 29;
- <AD06> = 30;
- <AD07> = 31;
- <AD08> = 32;
- <AD09> = 33;
- <AD10> = 34;
- <AD11> = 35;
- <AD12> = 36;
- <BKSL> = 37;
-
- <CAPS> = 38;
- <AC01> = 39;
- <AC02> = 40;
- <AC03> = 41;
- <AC04> = 42;
- <AC05> = 43;
- <AC06> = 44;
- <AC07> = 45;
- <AC08> = 46;
- <AC09> = 47;
- <AC10> = 48;
- <AC11> = 49;
- <RTRN> = 51;
-
- <LFSH> = 52;
- <AB01> = 54;
- <AB02> = 55;
- <AB03> = 56;
- <AB04> = 57;
- <AB05> = 58;
- <AB06> = 59;
- <AB07> = 60;
- <AB08> = 61;
- <AB09> = 62;
- <AB10> = 63;
- <RTSH> = 65;
-
- <LCTL> = 66;
- <LALT> = 68;
- <SPCE> = 69;
- <RALT> = 70;
- <RCTL> = 72;
-
- <ESC> = 118;
- <FK01> = 120;
- <FK02> = 121;
- <FK03> = 122;
- <FK04> = 123;
- <FK05> = 124;
- <FK06> = 125;
- <FK07> = 126;
- <FK08> = 127;
- <FK09> = 128;
- <FK10> = 129;
- <FK11> = 130;
- <FK12> = 131;
-
- <PRSC> = 132;
- <SCLK> = 133;
- <PAUS> = 134;
-
- <INS> = 83;
- <HOME> = 88;
- <PGUP> = 93;
- <DELE> = 84;
- <END> = 89;
- <PGDN> = 94;
-
- <UP> = 91;
- <LEFT> = 87;
- <DOWN> = 92;
- <RGHT> = 97;
-
- <NMLK> = 98;
- <KPDV> = 103;
- <KPMU> = 108;
- <KPSU> = 113;
-
- <KP7> = 99;
- <KP8> = 104;
- <KP9> = 109;
- <KPAD> = 114;
-
- <KP4> = 100;
- <KP5> = 105;
- <KP6> = 110;
-
- <KP1> = 101;
- <KP2> = 106;
- <KP3> = 111;
- <KPEN> = 116;
-
- <KP0> = 107;
- <KPDL> = 112;
-
- indicator 1 = "Caps Lock";
- indicator 2 = "Num Lock";
- indicator 3 = "Scroll Lock";
-};
-xkb_keycodes "rs6k-102" {
- include "ibm(rs6k-101)"
- <LSGT> = 53;
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+xkb_keycodes "rs6k-101" {
+
+ <TLDE> = 9;
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <BKSP> = 23;
+
+ <TAB> = 24;
+ <AD01> = 25;
+ <AD02> = 26;
+ <AD03> = 27;
+ <AD04> = 28;
+ <AD05> = 29;
+ <AD06> = 30;
+ <AD07> = 31;
+ <AD08> = 32;
+ <AD09> = 33;
+ <AD10> = 34;
+ <AD11> = 35;
+ <AD12> = 36;
+ <BKSL> = 37;
+
+ <CAPS> = 38;
+ <AC01> = 39;
+ <AC02> = 40;
+ <AC03> = 41;
+ <AC04> = 42;
+ <AC05> = 43;
+ <AC06> = 44;
+ <AC07> = 45;
+ <AC08> = 46;
+ <AC09> = 47;
+ <AC10> = 48;
+ <AC11> = 49;
+ <RTRN> = 51;
+
+ <LFSH> = 52;
+ <AB01> = 54;
+ <AB02> = 55;
+ <AB03> = 56;
+ <AB04> = 57;
+ <AB05> = 58;
+ <AB06> = 59;
+ <AB07> = 60;
+ <AB08> = 61;
+ <AB09> = 62;
+ <AB10> = 63;
+ <RTSH> = 65;
+
+ <LCTL> = 66;
+ <LALT> = 68;
+ <SPCE> = 69;
+ <RALT> = 70;
+ <RCTL> = 72;
+
+ <ESC> = 118;
+ <FK01> = 120;
+ <FK02> = 121;
+ <FK03> = 122;
+ <FK04> = 123;
+ <FK05> = 124;
+ <FK06> = 125;
+ <FK07> = 126;
+ <FK08> = 127;
+ <FK09> = 128;
+ <FK10> = 129;
+ <FK11> = 130;
+ <FK12> = 131;
+
+ <PRSC> = 132;
+ <SCLK> = 133;
+ <PAUS> = 134;
+
+ <INS> = 83;
+ <HOME> = 88;
+ <PGUP> = 93;
+ <DELE> = 84;
+ <END> = 89;
+ <PGDN> = 94;
+
+ <UP> = 91;
+ <LEFT> = 87;
+ <DOWN> = 92;
+ <RGHT> = 97;
+
+ <NMLK> = 98;
+ <KPDV> = 103;
+ <KPMU> = 108;
+ <KPSU> = 113;
+
+ <KP7> = 99;
+ <KP8> = 104;
+ <KP9> = 109;
+ <KPAD> = 114;
+
+ <KP4> = 100;
+ <KP5> = 105;
+ <KP6> = 110;
+
+ <KP1> = 101;
+ <KP2> = 106;
+ <KP3> = 111;
+ <KPEN> = 116;
+
+ <KP0> = 107;
+ <KPDL> = 112;
+
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+};
+xkb_keycodes "rs6k-102" {
+ include "ibm(rs6k-101)"
+ <LSGT> = 53;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/macintosh b/xorg-server/xkeyboard-config/keycodes/macintosh
index a6e6ee061..4c76e5ed2 100644
--- a/xorg-server/xkeyboard-config/keycodes/macintosh
+++ b/xorg-server/xkeyboard-config/keycodes/macintosh
@@ -1,208 +1,208 @@
-//
-//Copyright (c) 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.
-//
-//
-default xkb_keycodes "macintosh" {
- include "xfree86"
-
- <FK13> = 182;
- <FK14> = 183;
- <FK15> = 184;
- <KPEQ> = 157;
-
-};
-
-xkb_keycodes "old" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 61;
- <TLDE> = 58;
- <AE01> = 26;
- <AE02> = 27;
- <AE03> = 28;
- <AE04> = 29;
- <AE05> = 31;
- <AE06> = 30;
- <AE07> = 34;
- <AE08> = 36;
- <AE09> = 33;
- <AE10> = 37;
- <AE11> = 35;
- <AE12> = 32;
- <BKSP> = 59;
-
- <TAB> = 56;
- <AD01> = 20;
- <AD02> = 21;
- <AD03> = 22;
- <AD04> = 23;
- <AD05> = 25;
- <AD06> = 24;
- <AD07> = 40;
- <AD08> = 42;
- <AD09> = 39;
- <AD10> = 43;
- <AD11> = 41;
- <AD12> = 38;
- <BKSL> = 50;
-
- <CAPS> = 65;
- <AC01> = 8;
- <AC02> = 9;
- <AC03> = 10;
- <AC04> = 11;
- <AC05> = 13;
- <AC06> = 12;
- <AC07> = 46;
- <AC08> = 48;
- <AC09> = 45;
- <AC10> = 49;
- <AC11> = 47;
- <RTRN> = 44;
-
- <LSGT> = 18;
- <AB01> = 14;
- <AB02> = 15;
- <AB03> = 16;
- <AB04> = 17;
- <AB05> = 19;
- <AB06> = 53;
- <AB07> = 54;
- <AB08> = 51;
- <AB09> = 55;
- <AB10> = 52;
-
- <SPCE> = 57;
-
- <LCTL> = 62; // Left Control
- <LALT> = 63; // Left Option
- <LFSH> = 64; // Left Shift
- <RALT> = 66; // Left Command
-// <RTSH> = 131; // Right Shift
-// <RALT> = 132; // Right Command
-// <RCTL> = 133; // Right Control
-// <RMTA> = 134; // Right Option
-
- <FK01> = 130;
- <FK02> = 128;
- <FK03> = 107;
- <FK04> = 126;
- <FK05> = 104;
- <FK06> = 105;
- <FK07> = 106;
- <FK08> = 108;
- <FK09> = 109;
- <FK10> = 117;
- <FK11> = 111;
- <FK12> = 119;
-
- <PRSC> = 113;
- <SCLK> = 115;
- <PAUS> = 121;
-
- <INS> = 122;
- <HOME> = 123;
- <PGUP> = 124;
- <DELE> = 125;
- <END> = 127;
- <PGDN> = 129;
-
- <UP> = 70;
- <LEFT> = 67;
- <DOWN> = 69;
- <RGHT> = 68;
-
- <NMLK> = 79;
- <KPEQ> = 89;
- <KPDV> = 83;
- <KPMU> = 75;
-
- <KP7> = 97;
- <KP8> = 99;
- <KP9> = 100;
- <KPSU> = 86;
-
- <KP4> = 94;
- <KP5> = 95;
- <KP6> = 96;
- <KPAD> = 77;
-
- <KP1> = 91;
- <KP2> = 92;
- <KP3> = 93;
- <KPEN> = 84;
-
- <KP0> = 90;
- <KPDL> = 73;
-
- indicator 3 = "Scroll Lock";
- indicator 2 = "Num Lock";
- indicator 1 = "Caps Lock";
-
- alias <ALGR> = <RALT>;
-};
-
-xkb_keycodes "hhk" {
- include "macintosh"
-
- <AC12> = 51;
-
- <LWIN> = 49;
- <EISU> = 131;
- <KANA> = 129;
- <RWIN> = 208;
-
- <FK13> = 111;
- <FK14> = 78;
- <FK15> = 110;
-};
-
-// Aluminium Keyboards
-xkb_keycodes "alukbd" {
- include "xfree86"
-
- // Fkeys missing in xfree86 keycodes
- <FK18> = 129;
- <FK19> = 130;
-
- // Eject key that matches the geometry definition
- alias <I169> = <K6C>;
-
- // Japanese keypad separator (KPSP in base, JPCM in evdev)
- alias <JPCM> = <KPDC>;
-};
-
-// Aluminium Keyboards JIS
-// As of HID Usage Table v1.11, it seems there are no usages
-// for keys EISU or KANA. JIS Aluminium Keyboards overcome
-// this by outputting usages of keys Hanja and Hangul
-xkb_keycodes "jisevdev" {
- alias <KANA> = <HJCV>; // Switch to kana mode
- alias <EISU> = <HNGL>; // Switch to alphanumeric mode
-};
+//
+//Copyright (c) 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.
+//
+//
+default xkb_keycodes "macintosh" {
+ include "xfree86"
+
+ <FK13> = 182;
+ <FK14> = 183;
+ <FK15> = 184;
+ <KPEQ> = 157;
+
+};
+
+xkb_keycodes "old" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 61;
+ <TLDE> = 58;
+ <AE01> = 26;
+ <AE02> = 27;
+ <AE03> = 28;
+ <AE04> = 29;
+ <AE05> = 31;
+ <AE06> = 30;
+ <AE07> = 34;
+ <AE08> = 36;
+ <AE09> = 33;
+ <AE10> = 37;
+ <AE11> = 35;
+ <AE12> = 32;
+ <BKSP> = 59;
+
+ <TAB> = 56;
+ <AD01> = 20;
+ <AD02> = 21;
+ <AD03> = 22;
+ <AD04> = 23;
+ <AD05> = 25;
+ <AD06> = 24;
+ <AD07> = 40;
+ <AD08> = 42;
+ <AD09> = 39;
+ <AD10> = 43;
+ <AD11> = 41;
+ <AD12> = 38;
+ <BKSL> = 50;
+
+ <CAPS> = 65;
+ <AC01> = 8;
+ <AC02> = 9;
+ <AC03> = 10;
+ <AC04> = 11;
+ <AC05> = 13;
+ <AC06> = 12;
+ <AC07> = 46;
+ <AC08> = 48;
+ <AC09> = 45;
+ <AC10> = 49;
+ <AC11> = 47;
+ <RTRN> = 44;
+
+ <LSGT> = 18;
+ <AB01> = 14;
+ <AB02> = 15;
+ <AB03> = 16;
+ <AB04> = 17;
+ <AB05> = 19;
+ <AB06> = 53;
+ <AB07> = 54;
+ <AB08> = 51;
+ <AB09> = 55;
+ <AB10> = 52;
+
+ <SPCE> = 57;
+
+ <LCTL> = 62; // Left Control
+ <LALT> = 63; // Left Option
+ <LFSH> = 64; // Left Shift
+ <RALT> = 66; // Left Command
+// <RTSH> = 131; // Right Shift
+// <RALT> = 132; // Right Command
+// <RCTL> = 133; // Right Control
+// <RMTA> = 134; // Right Option
+
+ <FK01> = 130;
+ <FK02> = 128;
+ <FK03> = 107;
+ <FK04> = 126;
+ <FK05> = 104;
+ <FK06> = 105;
+ <FK07> = 106;
+ <FK08> = 108;
+ <FK09> = 109;
+ <FK10> = 117;
+ <FK11> = 111;
+ <FK12> = 119;
+
+ <PRSC> = 113;
+ <SCLK> = 115;
+ <PAUS> = 121;
+
+ <INS> = 122;
+ <HOME> = 123;
+ <PGUP> = 124;
+ <DELE> = 125;
+ <END> = 127;
+ <PGDN> = 129;
+
+ <UP> = 70;
+ <LEFT> = 67;
+ <DOWN> = 69;
+ <RGHT> = 68;
+
+ <NMLK> = 79;
+ <KPEQ> = 89;
+ <KPDV> = 83;
+ <KPMU> = 75;
+
+ <KP7> = 97;
+ <KP8> = 99;
+ <KP9> = 100;
+ <KPSU> = 86;
+
+ <KP4> = 94;
+ <KP5> = 95;
+ <KP6> = 96;
+ <KPAD> = 77;
+
+ <KP1> = 91;
+ <KP2> = 92;
+ <KP3> = 93;
+ <KPEN> = 84;
+
+ <KP0> = 90;
+ <KPDL> = 73;
+
+ indicator 3 = "Scroll Lock";
+ indicator 2 = "Num Lock";
+ indicator 1 = "Caps Lock";
+
+ alias <ALGR> = <RALT>;
+};
+
+xkb_keycodes "hhk" {
+ include "macintosh"
+
+ <AC12> = 51;
+
+ <LWIN> = 49;
+ <EISU> = 131;
+ <KANA> = 129;
+ <RWIN> = 208;
+
+ <FK13> = 111;
+ <FK14> = 78;
+ <FK15> = 110;
+};
+
+// Aluminium Keyboards
+xkb_keycodes "alukbd" {
+ include "xfree86"
+
+ // Fkeys missing in xfree86 keycodes
+ <FK18> = 129;
+ <FK19> = 130;
+
+ // Eject key that matches the geometry definition
+ alias <I169> = <K6C>;
+
+ // Japanese keypad separator (KPSP in base, JPCM in evdev)
+ alias <JPCM> = <KPDC>;
+};
+
+// Aluminium Keyboards JIS
+// As of HID Usage Table v1.11, it seems there are no usages
+// for keys EISU or KANA. JIS Aluminium Keyboards overcome
+// this by outputting usages of keys Hanja and Hangul
+xkb_keycodes "jisevdev" {
+ alias <KANA> = <HJCV>; // Switch to kana mode
+ alias <EISU> = <HNGL>; // Switch to alphanumeric mode
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/Makefile.am b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/Makefile.am
index f601268e2..5680fd8a5 100644
--- a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/Makefile.am
@@ -1,4 +1,4 @@
-keycodesdir = $(xkb_base)/keycodes/sgi_vndr
-
-dist_keycodes_DATA = \
-indigo indy iris
+keycodesdir = $(xkb_base)/keycodes/sgi_vndr
+
+dist_keycodes_DATA = \
+indigo indy iris
diff --git a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indigo b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indigo
index 2f5f45bfc..1ce551da5 100644
--- a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indigo
+++ b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indigo
@@ -1,139 +1,139 @@
-default xkb_keycodes "pc101" {
- minimum= 8;
- maximum= 255;
-
- <TLDE> = 62;
- <AE01> = 15;
- <AE02> = 21;
- <AE03> = 22;
- <AE04> = 29;
- <AE05> = 30;
- <AE06> = 37;
- <AE07> = 38;
- <AE08> = 45;
- <AE09> = 46;
- <AE10> = 53;
- <AE11> = 54;
- <AE12> = 61;
- <BKSP> = 68;
-
- <TAB> = 16;
- <AD01> = 17;
- <AD02> = 23;
- <AD03> = 24;
- <AD04> = 31;
- <AD05> = 32;
- <AD06> = 39;
- <AD07> = 40;
- <AD08> = 47;
- <AD09> = 48;
- <AD10> = 55;
- <AD11> = 56;
- <AD12> = 63;
- <RTRN> = 58;
-
- <CAPS> = 11;
- <AC01> = 18;
- <AC02> = 19;
- <AC03> = 25;
- <AC04> = 26;
- <AC05> = 33;
- <AC06> = 34;
- <AC07> = 41;
- <AC08> = 42;
- <AC09> = 49;
- <AC10> = 50;
- <AC11> = 57;
-
- <LFSH> = 13;
- <AB01> = 27;
- <AB02> = 28;
- <AB03> = 35;
- <AB04> = 36;
- <AB05> = 43;
- <AB06> = 44;
- <AB07> = 51;
- <AB08> = 52;
- <AB09> = 59;
- <AB10> = 60;
- <RTSH> = 12;
- <BKSL> = 64;
-
- <LALT> = 91;
- <LCTL> = 10;
- <SPCE> = 90;
- <RCTL> = 93;
- <RALT> = 92;
-
- <ESC> = 14;
- <FK01> = 94;
- <FK02> = 95;
- <FK03> = 96;
- <FK04> = 97;
- <FK05> = 98;
- <FK06> = 99;
- <FK07> = 100;
- <FK08> = 101;
- <FK09> = 102;
- <FK10> = 103;
- <FK11> = 104;
- <FK12> = 105;
-
- <PRSC> = 106;
- <SCLK> = 107;
- <PAUS> = 108;
-
- <INS> = 109;
- <HOME> = 110;
- <PGUP> = 111;
- <DELE> = 69;
- <END> = 112;
- <PGDN> = 113;
-
- <UP> = 88;
- <LEFT> = 80;
- <DOWN> = 81;
- <RGHT> = 87;
-
- <NMLK> = 114;
- <KPDV> = 115;
- <KPMU> = 116;
- <KPSU> = 83;
-
- <KP7> = 74;
- <KP8> = 75;
- <KP9> = 82;
- <KPAD> = 117;
-
- <KP4> = 70;
- <KP5> = 76;
- <KP6> = 77;
-
- <KP1> = 65;
- <KP2> = 71;
- <KP3> = 72;
- <KPEN> = 89;
-
- <KP0> = 66;
- <KPDL> = 73;
-
- alias <AE00> = <TLDE>;
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
- alias <AA01> = <LALT>;
- alias <AA09> = <RALT>;
- alias <ALGR> = <RALT>;
- alias <AA12> = <RCTL>;
-
- virtual indicator 1 = "L1";
- virtual indicator 2 = "L2";
- virtual indicator 3 = "L3";
- virtual indicator 4 = "L4";
- indicator 5 = "Caps Lock";
- indicator 6 = "Num Lock";
- indicator 7 = "Scroll Lock";
-};
-xkb_keycodes "pc102" {
- include "sgi_vndr/indigo(pc101)"
- <LSGT> = 118;
-};
+default xkb_keycodes "pc101" {
+ minimum= 8;
+ maximum= 255;
+
+ <TLDE> = 62;
+ <AE01> = 15;
+ <AE02> = 21;
+ <AE03> = 22;
+ <AE04> = 29;
+ <AE05> = 30;
+ <AE06> = 37;
+ <AE07> = 38;
+ <AE08> = 45;
+ <AE09> = 46;
+ <AE10> = 53;
+ <AE11> = 54;
+ <AE12> = 61;
+ <BKSP> = 68;
+
+ <TAB> = 16;
+ <AD01> = 17;
+ <AD02> = 23;
+ <AD03> = 24;
+ <AD04> = 31;
+ <AD05> = 32;
+ <AD06> = 39;
+ <AD07> = 40;
+ <AD08> = 47;
+ <AD09> = 48;
+ <AD10> = 55;
+ <AD11> = 56;
+ <AD12> = 63;
+ <RTRN> = 58;
+
+ <CAPS> = 11;
+ <AC01> = 18;
+ <AC02> = 19;
+ <AC03> = 25;
+ <AC04> = 26;
+ <AC05> = 33;
+ <AC06> = 34;
+ <AC07> = 41;
+ <AC08> = 42;
+ <AC09> = 49;
+ <AC10> = 50;
+ <AC11> = 57;
+
+ <LFSH> = 13;
+ <AB01> = 27;
+ <AB02> = 28;
+ <AB03> = 35;
+ <AB04> = 36;
+ <AB05> = 43;
+ <AB06> = 44;
+ <AB07> = 51;
+ <AB08> = 52;
+ <AB09> = 59;
+ <AB10> = 60;
+ <RTSH> = 12;
+ <BKSL> = 64;
+
+ <LALT> = 91;
+ <LCTL> = 10;
+ <SPCE> = 90;
+ <RCTL> = 93;
+ <RALT> = 92;
+
+ <ESC> = 14;
+ <FK01> = 94;
+ <FK02> = 95;
+ <FK03> = 96;
+ <FK04> = 97;
+ <FK05> = 98;
+ <FK06> = 99;
+ <FK07> = 100;
+ <FK08> = 101;
+ <FK09> = 102;
+ <FK10> = 103;
+ <FK11> = 104;
+ <FK12> = 105;
+
+ <PRSC> = 106;
+ <SCLK> = 107;
+ <PAUS> = 108;
+
+ <INS> = 109;
+ <HOME> = 110;
+ <PGUP> = 111;
+ <DELE> = 69;
+ <END> = 112;
+ <PGDN> = 113;
+
+ <UP> = 88;
+ <LEFT> = 80;
+ <DOWN> = 81;
+ <RGHT> = 87;
+
+ <NMLK> = 114;
+ <KPDV> = 115;
+ <KPMU> = 116;
+ <KPSU> = 83;
+
+ <KP7> = 74;
+ <KP8> = 75;
+ <KP9> = 82;
+ <KPAD> = 117;
+
+ <KP4> = 70;
+ <KP5> = 76;
+ <KP6> = 77;
+
+ <KP1> = 65;
+ <KP2> = 71;
+ <KP3> = 72;
+ <KPEN> = 89;
+
+ <KP0> = 66;
+ <KPDL> = 73;
+
+ alias <AE00> = <TLDE>;
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+ alias <AA01> = <LALT>;
+ alias <AA09> = <RALT>;
+ alias <ALGR> = <RALT>;
+ alias <AA12> = <RCTL>;
+
+ virtual indicator 1 = "L1";
+ virtual indicator 2 = "L2";
+ virtual indicator 3 = "L3";
+ virtual indicator 4 = "L4";
+ indicator 5 = "Caps Lock";
+ indicator 6 = "Num Lock";
+ indicator 7 = "Scroll Lock";
+};
+xkb_keycodes "pc102" {
+ include "sgi_vndr/indigo(pc101)"
+ <LSGT> = 118;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indy b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indy
index aab3749b5..55cb18950 100644
--- a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indy
+++ b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/indy
@@ -1,202 +1,202 @@
-default xkb_keycodes "universal" {
- minimum= 8;
- maximum= 255;
- include "sgi_vndr/indy(pc105)"
- alternate <BKSL> = 91;
- alternate <BKSL> = 100;
- alternate <BKSL> = 101;
-};
-xkb_keycodes "pc101" {
- minimum= 8;
- maximum= 255;
-
- <TLDE> = 22;
- <AE01> = 30;
- <AE02> = 38;
- <AE03> = 46;
- <AE04> = 45;
- <AE05> = 54;
- <AE06> = 62;
- <AE07> = 69;
- <AE08> = 70;
- <AE09> = 78;
- <AE10> = 77;
- <AE11> = 86;
- <AE12> = 93;
- <BKSP> = 110;
-
- <TAB> = 21;
- <AD01> = 29;
- <AD02> = 37;
- <AD03> = 44;
- <AD04> = 53;
- <AD05> = 52;
- <AD06> = 61;
- <AD07> = 68;
- <AD08> = 75;
- <AD09> = 76;
- <AD10> = 85;
- <AD11> = 92;
- <AD12> = 99;
- <RTRN> = 98;
-
- <CAPS> = 28;
- <AC01> = 36;
- <AC02> = 35;
- <AC03> = 43;
- <AC04> = 51;
- <AC05> = 60;
- <AC06> = 59;
- <AC07> = 67;
- <AC08> = 74;
- <AC09> = 83;
- <AC10> = 84;
- <AC11> = 90;
-
- <LFSH> = 26;
- <AB01> = 34;
- <AB02> = 42;
- <AB03> = 41;
- <AB04> = 50;
- <AB05> = 58;
- <AB06> = 57;
- <AB07> = 66;
- <AB08> = 73;
- <AB09> = 81;
- <AB10> = 82;
- <RTSH> = 97;
- <BKSL> = 100;
-
- <LALT> = 33;
- <LCTL> = 25;
- <SPCE> = 49;
- <RCTL> = 96;
- <RALT> = 65;
-
- <ESC> = 16;
- <FK01> = 15;
- <FK02> = 23;
- <FK03> = 31;
- <FK04> = 39;
- <FK05> = 47;
- <FK06> = 55;
- <FK07> = 63;
- <FK08> = 71;
- <FK09> = 79;
- <FK10> = 87;
- <FK11> = 94;
- <FK12> = 102;
-
- <PRSC> = 95;
- <SCLK> = 103;
- <PAUS> = 106;
-
- <INS> = 111;
- <HOME> = 118;
- <PGUP> = 119;
- <DELE> = 108;
- <END> = 109;
- <PGDN> = 117;
-
- <UP> = 107;
- <LEFT> = 105;
- <DOWN> = 104;
- <RGHT> = 114;
-
- <NMLK> = 126;
- <KPDV> = 127;
- <KPMU> = 134;
- <KPSU> = 140;
-
- <KP7> = 116;
- <KP8> = 125;
- <KP9> = 133;
- <KPAD> = 132;
-
- <KP4> = 115;
- <KP5> = 123;
- <KP6> = 124;
-
- <KP1> = 113;
- <KP2> = 122;
- <KP3> = 130;
- <KPEN> = 129;
-
- <KP0> = 120;
- <KPDL> = 121;
-
- alias <AE00> = <TLDE>;
- alias <AC00> = <CAPS>;
- alias <AA00> = <LCTL>;
- alias <AA01> = <LALT>;
- alias <AA09> = <RALT>;
- alias <ALGR> = <RALT>;
- alias <AA12> = <RCTL>;
-
- virtual indicator 1 = "L1";
- virtual indicator 2 = "L2";
- virtual indicator 3 = "L3";
- virtual indicator 4 = "L4";
- indicator 5 = "Caps Lock";
- indicator 6 = "Num Lock";
- indicator 7 = "Scroll Lock";
-
-};
-xkb_keycodes "pc102" {
- <BKSL> = 91;
- <LSGT> = 27;
- augment "sgi_vndr/indy(pc101)"
- maximum= 255;
- minimum= 8;
-};
-xkb_keycodes "pc104" {
- include "sgi_vndr/indy(pc101)"
- minimum= 8;
- maximum= 255;
-
- // These key names are here to support so-called "Windows95"
- // keyboards like the Microsoft Natural keyboard.
- <LWIN> = 147;
- <RWIN> = 148;
- <MENU> = 149;
-};
-xkb_keycodes "pc105" {
- <LSGT> = 27;
- augment "sgi_vndr/indy(pc104)"
- minimum= 8;
- maximum= 255;
-};
-xkb_keycodes "jp106" {
- <HZTG> = 22;
- <AB11> = 89;
- <AC12> = 91;
- <NFER> = 141;
- <XFER> = 142;
- <HKTG> = 143;
- alias <TLDE> = <HZTG>;
- alias <AE00> = <HZTG>;
- alias <AE13> = <BKSL>;
- augment "sgi_vndr/indy(pc101)"
- minimum= 8;
- maximum= 255;
-};
-// can be combined with any other "indy" keycode
-// description to add virtual keys which can be
-// used to implement an overlay-based numeric
-// keypad.
-partial hidden xkb_keycodes "overlayKeypad" {
- <KO7> = 17;
- <KO8> = 18;
- <KO9> = 19;
- <KO6> = 146;
- <KO5> = 145;
- <KO4> = 144;
- <KO1> = 136;
- <KO2> = 137;
- <KO3> = 138;
- <KO0> = 135;
- <KODL> = 139;
-};
-partial hidden xkb_keycodes "shiftLock" {
- indicator 5 = "Shift Lock";
-};
+default xkb_keycodes "universal" {
+ minimum= 8;
+ maximum= 255;
+ include "sgi_vndr/indy(pc105)"
+ alternate <BKSL> = 91;
+ alternate <BKSL> = 100;
+ alternate <BKSL> = 101;
+};
+xkb_keycodes "pc101" {
+ minimum= 8;
+ maximum= 255;
+
+ <TLDE> = 22;
+ <AE01> = 30;
+ <AE02> = 38;
+ <AE03> = 46;
+ <AE04> = 45;
+ <AE05> = 54;
+ <AE06> = 62;
+ <AE07> = 69;
+ <AE08> = 70;
+ <AE09> = 78;
+ <AE10> = 77;
+ <AE11> = 86;
+ <AE12> = 93;
+ <BKSP> = 110;
+
+ <TAB> = 21;
+ <AD01> = 29;
+ <AD02> = 37;
+ <AD03> = 44;
+ <AD04> = 53;
+ <AD05> = 52;
+ <AD06> = 61;
+ <AD07> = 68;
+ <AD08> = 75;
+ <AD09> = 76;
+ <AD10> = 85;
+ <AD11> = 92;
+ <AD12> = 99;
+ <RTRN> = 98;
+
+ <CAPS> = 28;
+ <AC01> = 36;
+ <AC02> = 35;
+ <AC03> = 43;
+ <AC04> = 51;
+ <AC05> = 60;
+ <AC06> = 59;
+ <AC07> = 67;
+ <AC08> = 74;
+ <AC09> = 83;
+ <AC10> = 84;
+ <AC11> = 90;
+
+ <LFSH> = 26;
+ <AB01> = 34;
+ <AB02> = 42;
+ <AB03> = 41;
+ <AB04> = 50;
+ <AB05> = 58;
+ <AB06> = 57;
+ <AB07> = 66;
+ <AB08> = 73;
+ <AB09> = 81;
+ <AB10> = 82;
+ <RTSH> = 97;
+ <BKSL> = 100;
+
+ <LALT> = 33;
+ <LCTL> = 25;
+ <SPCE> = 49;
+ <RCTL> = 96;
+ <RALT> = 65;
+
+ <ESC> = 16;
+ <FK01> = 15;
+ <FK02> = 23;
+ <FK03> = 31;
+ <FK04> = 39;
+ <FK05> = 47;
+ <FK06> = 55;
+ <FK07> = 63;
+ <FK08> = 71;
+ <FK09> = 79;
+ <FK10> = 87;
+ <FK11> = 94;
+ <FK12> = 102;
+
+ <PRSC> = 95;
+ <SCLK> = 103;
+ <PAUS> = 106;
+
+ <INS> = 111;
+ <HOME> = 118;
+ <PGUP> = 119;
+ <DELE> = 108;
+ <END> = 109;
+ <PGDN> = 117;
+
+ <UP> = 107;
+ <LEFT> = 105;
+ <DOWN> = 104;
+ <RGHT> = 114;
+
+ <NMLK> = 126;
+ <KPDV> = 127;
+ <KPMU> = 134;
+ <KPSU> = 140;
+
+ <KP7> = 116;
+ <KP8> = 125;
+ <KP9> = 133;
+ <KPAD> = 132;
+
+ <KP4> = 115;
+ <KP5> = 123;
+ <KP6> = 124;
+
+ <KP1> = 113;
+ <KP2> = 122;
+ <KP3> = 130;
+ <KPEN> = 129;
+
+ <KP0> = 120;
+ <KPDL> = 121;
+
+ alias <AE00> = <TLDE>;
+ alias <AC00> = <CAPS>;
+ alias <AA00> = <LCTL>;
+ alias <AA01> = <LALT>;
+ alias <AA09> = <RALT>;
+ alias <ALGR> = <RALT>;
+ alias <AA12> = <RCTL>;
+
+ virtual indicator 1 = "L1";
+ virtual indicator 2 = "L2";
+ virtual indicator 3 = "L3";
+ virtual indicator 4 = "L4";
+ indicator 5 = "Caps Lock";
+ indicator 6 = "Num Lock";
+ indicator 7 = "Scroll Lock";
+
+};
+xkb_keycodes "pc102" {
+ <BKSL> = 91;
+ <LSGT> = 27;
+ augment "sgi_vndr/indy(pc101)"
+ maximum= 255;
+ minimum= 8;
+};
+xkb_keycodes "pc104" {
+ include "sgi_vndr/indy(pc101)"
+ minimum= 8;
+ maximum= 255;
+
+ // These key names are here to support so-called "Windows95"
+ // keyboards like the Microsoft Natural keyboard.
+ <LWIN> = 147;
+ <RWIN> = 148;
+ <MENU> = 149;
+};
+xkb_keycodes "pc105" {
+ <LSGT> = 27;
+ augment "sgi_vndr/indy(pc104)"
+ minimum= 8;
+ maximum= 255;
+};
+xkb_keycodes "jp106" {
+ <HZTG> = 22;
+ <AB11> = 89;
+ <AC12> = 91;
+ <NFER> = 141;
+ <XFER> = 142;
+ <HKTG> = 143;
+ alias <TLDE> = <HZTG>;
+ alias <AE00> = <HZTG>;
+ alias <AE13> = <BKSL>;
+ augment "sgi_vndr/indy(pc101)"
+ minimum= 8;
+ maximum= 255;
+};
+// can be combined with any other "indy" keycode
+// description to add virtual keys which can be
+// used to implement an overlay-based numeric
+// keypad.
+partial hidden xkb_keycodes "overlayKeypad" {
+ <KO7> = 17;
+ <KO8> = 18;
+ <KO9> = 19;
+ <KO6> = 146;
+ <KO5> = 145;
+ <KO4> = 144;
+ <KO1> = 136;
+ <KO2> = 137;
+ <KO3> = 138;
+ <KO0> = 135;
+ <KODL> = 139;
+};
+partial hidden xkb_keycodes "shiftLock" {
+ indicator 5 = "Shift Lock";
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/iris b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/iris
index 18068175d..047334712 100644
--- a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/iris
+++ b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/iris
@@ -1,10 +1,10 @@
-default xkb_keycodes "iris" {
- include "sgi_vndr/indigo(pc101)"
- indicator 1 = "L1";
- indicator 2 = "L2";
- indicator 3 = "L3";
- indicator 4 = "L4";
- indicator 5 = "Caps Lock";
- indicator 6 = "Num Lock";
- indicator 7 = "Scroll Lock";
-};
+default xkb_keycodes "iris" {
+ include "sgi_vndr/indigo(pc101)"
+ indicator 1 = "L1";
+ indicator 2 = "L2";
+ indicator 3 = "L3";
+ indicator 4 = "L4";
+ indicator 5 = "Caps Lock";
+ indicator 6 = "Num Lock";
+ indicator 7 = "Scroll Lock";
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/sony b/xorg-server/xkeyboard-config/keycodes/sony
index def1eaf6b..5c034711f 100644
--- a/xorg-server/xkeyboard-config/keycodes/sony
+++ b/xorg-server/xkeyboard-config/keycodes/sony
@@ -1,141 +1,141 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-xkb_keycodes "nwp5461" {
-
- <ESC> = 18;
- <AE01> = 19;
- <AE02> = 20;
- <AE03> = 21;
- <AE04> = 22;
- <AE05> = 23;
- <AE06> = 24;
- <AE07> = 25;
- <AE08> = 26;
- <AE09> = 27;
- <AE10> = 28;
- <AE11> = 29;
- <AE12> = 30;
- <BKSL> = 31;
- <BKSP> = 32;
-
- <TAB> = 33;
- <AD01> = 34;
- <AD02> = 35;
- <AD03> = 36;
- <AD04> = 37;
- <AD05> = 38;
- <AD06> = 39;
- <AD07> = 40;
- <AD08> = 41;
- <AD09> = 42;
- <AD10> = 43;
- <AD11> = 44;
- <AD12> = 45;
- <DELE> = 46;
-
- <LCTL> = 47;
- <AC01> = 48;
- <AC02> = 49;
- <AC03> = 50;
- <AC04> = 51;
- <AC05> = 52;
- <AC06> = 53;
- <AC07> = 54;
- <AC08> = 55;
- <AC09> = 56;
- <AC10> = 57;
- <AC11> = 58;
- <TLDE> = 59;
- <RTRN> = 60;
-
- <LFSH> = 61;
- <AB01> = 62;
- <AB02> = 63;
- <AB03> = 64;
- <AB04> = 65;
- <AB05> = 66;
- <AB06> = 67;
- <AB07> = 68;
- <AB08> = 69;
- <AB09> = 70;
- <AB10> = 71;
- <AB11> = 72;
- <RTSH> = 73;
-
- <LALT> = 74;
- <CAPS> = 75;
- <STOP> = 76;
- <SPCE> = 77;
- <CUT> = 78;
- <EXEC> = 81;
-
- <FK01> = 8;
- <FK02> = 9;
- <FK03> = 10;
- <FK04> = 11;
- <FK05> = 12;
- <FK06> = 13;
- <FK07> = 14;
- <FK08> = 15;
- <FK09> = 16;
- <FK10> = 17;
- <FK11> = 111;
- <FK12> = 112;
-
- <HELP> = 113;
- <INS> = 114;
- <CLR> = 115;
- <PGUP> = 116;
- <PGDN> = 117;
-
- <KPTB> = 109;
- <UP> = 95;
- <LEFT> = 98;
- <DOWN> = 99;
- <RGHT> = 100;
-
- <KPMU> = 107;
- <KPDV> = 108;
- <KPAD> = 89;
-
- <KP7> = 82;
- <KP8> = 83;
- <KP9> = 84;
- <KPSU> = 85;
-
- <KP4> = 86;
- <KP5> = 87;
- <KP6> = 88;
- <KPSP> = 93;
-
- <KP1> = 90;
- <KP2> = 91;
- <KP3> = 92;
- <KPEN> = 97;
-
- <KP0> = 94;
- <KPDC> = 96;
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+xkb_keycodes "nwp5461" {
+
+ <ESC> = 18;
+ <AE01> = 19;
+ <AE02> = 20;
+ <AE03> = 21;
+ <AE04> = 22;
+ <AE05> = 23;
+ <AE06> = 24;
+ <AE07> = 25;
+ <AE08> = 26;
+ <AE09> = 27;
+ <AE10> = 28;
+ <AE11> = 29;
+ <AE12> = 30;
+ <BKSL> = 31;
+ <BKSP> = 32;
+
+ <TAB> = 33;
+ <AD01> = 34;
+ <AD02> = 35;
+ <AD03> = 36;
+ <AD04> = 37;
+ <AD05> = 38;
+ <AD06> = 39;
+ <AD07> = 40;
+ <AD08> = 41;
+ <AD09> = 42;
+ <AD10> = 43;
+ <AD11> = 44;
+ <AD12> = 45;
+ <DELE> = 46;
+
+ <LCTL> = 47;
+ <AC01> = 48;
+ <AC02> = 49;
+ <AC03> = 50;
+ <AC04> = 51;
+ <AC05> = 52;
+ <AC06> = 53;
+ <AC07> = 54;
+ <AC08> = 55;
+ <AC09> = 56;
+ <AC10> = 57;
+ <AC11> = 58;
+ <TLDE> = 59;
+ <RTRN> = 60;
+
+ <LFSH> = 61;
+ <AB01> = 62;
+ <AB02> = 63;
+ <AB03> = 64;
+ <AB04> = 65;
+ <AB05> = 66;
+ <AB06> = 67;
+ <AB07> = 68;
+ <AB08> = 69;
+ <AB09> = 70;
+ <AB10> = 71;
+ <AB11> = 72;
+ <RTSH> = 73;
+
+ <LALT> = 74;
+ <CAPS> = 75;
+ <STOP> = 76;
+ <SPCE> = 77;
+ <CUT> = 78;
+ <EXEC> = 81;
+
+ <FK01> = 8;
+ <FK02> = 9;
+ <FK03> = 10;
+ <FK04> = 11;
+ <FK05> = 12;
+ <FK06> = 13;
+ <FK07> = 14;
+ <FK08> = 15;
+ <FK09> = 16;
+ <FK10> = 17;
+ <FK11> = 111;
+ <FK12> = 112;
+
+ <HELP> = 113;
+ <INS> = 114;
+ <CLR> = 115;
+ <PGUP> = 116;
+ <PGDN> = 117;
+
+ <KPTB> = 109;
+ <UP> = 95;
+ <LEFT> = 98;
+ <DOWN> = 99;
+ <RGHT> = 100;
+
+ <KPMU> = 107;
+ <KPDV> = 108;
+ <KPAD> = 89;
+
+ <KP7> = 82;
+ <KP8> = 83;
+ <KP9> = 84;
+ <KPSU> = 85;
+
+ <KP4> = 86;
+ <KP5> = 87;
+ <KP6> = 88;
+ <KPSP> = 93;
+
+ <KP1> = 90;
+ <KP2> = 91;
+ <KP3> = 92;
+ <KPEN> = 97;
+
+ <KP0> = 94;
+ <KPDC> = 96;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/sun b/xorg-server/xkeyboard-config/keycodes/sun
index 7cb38e304..ea696a8a1 100644
--- a/xorg-server/xkeyboard-config/keycodes/sun
+++ b/xorg-server/xkeyboard-config/keycodes/sun
@@ -1,950 +1,950 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-// ---------------------------------------------------------------------------
-// Copyright 2004 Sun Microsystems, Inc. All rights reserved.
-//
-// 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 (including the next
-// paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
-//
-// ---------------------------------------------------------------------------
-//
-
-default xkb_keycodes "type4" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 36;
- <AE01> = 37;
- <AE02> = 38;
- <AE03> = 39;
- <AE04> = 40;
- <AE05> = 41;
- <AE06> = 42;
- <AE07> = 43;
- <AE08> = 44;
- <AE09> = 45;
- <AE10> = 46;
- <AE11> = 47;
- <AE12> = 48;
- <TLDE> = 49;
- <BKSP> = 50;
-
- <TAB> = 60;
- <AD01> = 61;
- <AD02> = 62;
- <AD03> = 63;
- <AD04> = 64;
- <AD05> = 65;
- <AD06> = 66;
- <AD07> = 67;
- <AD08> = 68;
- <AD09> = 69;
- <AD10> = 70;
- <AD11> = 71;
- <AD12> = 72;
- <DELE> = 73;
-
- <LCTL> = 83;
- <AC01> = 84;
- <AC02> = 85;
- <AC03> = 86;
- <AC04> = 87;
- <AC05> = 88;
- <AC06> = 89;
- <AC07> = 90;
- <AC08> = 91;
- <AC09> = 92;
- <AC10> = 93;
- <AC11> = 94;
- <BKSL> = 95;
- <RTRN> = 96;
-
- <LFSH> = 106;
- <AB01> = 107;
- <AB02> = 108;
- <AB03> = 109;
- <AB04> = 110;
- <AB05> = 111;
- <AB06> = 112;
- <AB07> = 113;
- <AB08> = 114;
- <AB09> = 115;
- <AB10> = 116;
- <RTSH> = 117;
- <LNFD> = 118;
-
- <HELP> = 125;
- <CAPS> = 126;
- <LALT> = 26;
- <LMTA> = 127;
- <SPCE> = 128;
- <RMTA> = 129;
- <COMP> = 74;
- <ALGR> = 20;
- alias <RALT> = <ALGR>;
-
- <FK01> = 12;
- <FK02> = 13;
- <FK03> = 15;
- <FK04> = 17;
- <FK05> = 19;
- <FK06> = 21;
- <FK07> = 23;
- <FK08> = 24;
- <FK09> = 25;
- <FK10> = 14;
- <FK11> = 16;
- <FK12> = 18;
-
- <STOP> = 8;
- <AGAI> = 10;
- <PROP> = 32;
- <UNDO> = 33;
- <FRNT> = 56;
- <COPY> = 58;
- <OPEN> = 79;
- <PAST> = 80;
- <FIND> = 102;
- <CUT> = 104;
-
- <PRSC> = 29;
- <SCLK> = 30;
- <PAUS> = 28;
-
- <NMLK> = 105;
- <KPEQ> = 52;
- <KPDV> = 53;
- <KPMU> = 54;
- <KPSU> = 78;
-
- <KP7> = 75;
- <KP8> = 76;
- <KP9> = 77;
- <KPAD> = 132;
-
- <KP4> = 98;
- <KP5> = 99;
- <KP6> = 100;
-
- <KP1> = 119;
- <KP2> = 120;
- <KP3> = 121;
- <KPEN> = 97;
-
- <KP0> = 101;
- <KPDL> = 57;
- indicator 4 = "Caps Lock";
- indicator 3 = "Compose";
- indicator 2 = "Scroll Lock";
- indicator 1 = "Num Lock";
-};
-
-xkb_keycodes "type5" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 36;
- <AE01> = 37;
- <AE02> = 38;
- <AE03> = 39;
- <AE04> = 40;
- <AE05> = 41;
- <AE06> = 42;
- <AE07> = 43;
- <AE08> = 44;
- <AE09> = 45;
- <AE10> = 46;
- <AE11> = 47;
- <AE12> = 48;
- <TLDE> = 49;
- <BKSP> = 50;
-
- <TAB> = 60;
- <AD01> = 61;
- <AD02> = 62;
- <AD03> = 63;
- <AD04> = 64;
- <AD05> = 65;
- <AD06> = 66;
- <AD07> = 67;
- <AD08> = 68;
- <AD09> = 69;
- <AD10> = 70;
- <AD11> = 71;
- <AD12> = 72;
- <DELE> = 73;
- <COMP> = 74;
- <ALGR> = 20;
- alias <RALT> = <ALGR>;
-
- <LCTL> = 83;
- <AC01> = 84;
- <AC02> = 85;
- <AC03> = 86;
- <AC04> = 87;
- <AC05> = 88;
- <AC06> = 89;
- <AC07> = 90;
- <AC08> = 91;
- <AC09> = 92;
- <AC10> = 93;
- <AC11> = 94;
- <BKSL> = 95;
- <RTRN> = 96;
-
- <LFSH> = 106;
- <AB01> = 107;
- <AB02> = 108;
- <AB03> = 109;
- <AB04> = 110;
- <AB05> = 111;
- <AB06> = 112;
- <AB07> = 113;
- <AB08> = 114;
- <AB09> = 115;
- <AB10> = 116;
- <RTSH> = 117;
-
- <LALT> = 26;
- <CAPS> = 126;
- <LMTA> = 127;
- <SPCE> = 128;
- <RMTA> = 129;
-
- <FK01> = 12;
- <FK02> = 13;
- <FK03> = 15;
- <FK04> = 17;
- <FK05> = 19;
- <FK06> = 21;
- <FK07> = 23;
- <FK08> = 24;
- <FK09> = 25;
- <FK10> = 14;
- <FK11> = 16;
- <FK12> = 18;
- <STOP> = 8;
- <AGAI> = 10;
- <PROP> = 32;
- <UNDO> = 33;
- <FRNT> = 56;
- <COPY> = 58;
- <OPEN> = 79;
- <PAST> = 80;
- <FIND> = 102;
- <CUT> = 104;
-
- <PRSC> = 29;
- <SCLK> = 30;
- <PAUS> = 28;
-
- <NMLK> = 105;
- <KPDV> = 53;
- <KPMU> = 54;
- <KPSU> = 78;
-
- <KP7> = 75;
- <KP8> = 76;
- <KP9> = 77;
- <KPAD> = 132;
-
- <KP4> = 98;
- <KP5> = 99;
- <KP6> = 100;
-
- <KP1> = 119;
- <KP2> = 120;
- <KP3> = 121;
- <KPEN> = 97;
-
- <KP0> = 101;
- <KPDL> = 57;
-
- <UP> = 27;
- <LEFT> = 31;
- <DOWN> = 34;
- <RGHT> = 35;
-
- <INS> = 51;
- <HOME> = 59;
- <END> = 81;
- <PGUP> = 103;
- <PGDN> = 130;
- <HELP> = 125;
-
- <MUTE> = 52;
- <VOL-> = 9;
- <VOL+> = 11;
- <POWR> = 55;
- indicator 4 = "Caps Lock";
- indicator 3 = "Compose";
- indicator 2 = "Scroll Lock";
- indicator 1 = "Num Lock";
-};
-
-xkb_keycodes "type4tuv" {
- include "sun(type4)"
- <LSGT> = 131;
- <BRCR> = 22;
-};
-
-xkb_keycodes "type4_ca" {
- include "sun(type4)"
- <LSGT> = 131;
-};
-
-xkb_keycodes "type4_jp" {
- include "sun(type4)"
- <EXEC> = 122;
- <KANJ> = 123;
- <HENK> = 124;
- <BRCR> = 22;
- alias <UNDR> = <LNFD>;
-};
-
-xkb_keycodes "type4_euro" {
- include "sun(type4)"
- <LSGT> = 131;
-};
-
-xkb_keycodes "type5tuv" {
- include "sun(type5)"
- <LSGT> = 131;
-};
-
-xkb_keycodes "type5_jp" {
- include "sun(type5)"
- <EXEC> = 122;
- <KANJ> = 123;
- <HENK> = 124;
- <UNDR> = 118;
-};
-
-xkb_keycodes "type5_euro" {
- include "sun(type5)"
- <LSGT> = 131;
-};
-
-xkb_keycodes "type5hobo" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 36;
- <AE01> = 37;
- <AE02> = 38;
- <AE03> = 39;
- <AE04> = 40;
- <AE05> = 41;
- <AE06> = 42;
- <AE07> = 43;
- <AE08> = 44;
- <AE09> = 45;
- <AE10> = 46;
- <AE11> = 47;
- <AE12> = 48;
- <TLDE> = 49;
- <BKSP> = 50;
-
- <TAB> = 60;
- <AD01> = 61;
- <AD02> = 62;
- <AD03> = 63;
- <AD04> = 64;
- <AD05> = 65;
- <AD06> = 66;
- <AD07> = 67;
- <AD08> = 68;
- <AD09> = 69;
- <AD10> = 70;
- <AD11> = 71;
- <AD12> = 72;
- <DELE> = 73;
- <COMP> = 74;
- <ALGR> = 20;
- alias <RALT> = <ALGR>;
-
- <LCTL> = 83;
- <AC01> = 84;
- <AC02> = 85;
- <AC03> = 86;
- <AC04> = 87;
- <AC05> = 88;
- <AC06> = 89;
- <AC07> = 90;
- <AC08> = 91;
- <AC09> = 92;
- <AC10> = 93;
- <AC11> = 94;
- <BKSL> = 95;
- <RTRN> = 96;
-
- <LFSH> = 106;
- <AB01> = 107;
- <AB02> = 108;
- <AB03> = 109;
- <AB04> = 110;
- <AB05> = 111;
- <AB06> = 112;
- <AB07> = 113;
- <AB08> = 114;
- <AB09> = 115;
- <AB10> = 116;
- <RTSH> = 117;
-
- <LALT> = 26;
- <CAPS> = 126;
- <LMTA> = 127;
- <SPCE> = 128;
- <RMTA> = 129;
-
- <FK01> = 12;
- <FK02> = 13;
- <FK03> = 15;
- <FK04> = 17;
- <FK05> = 19;
- <FK06> = 21;
- <FK07> = 23;
- <FK08> = 24;
- <FK09> = 25;
- <FK10> = 14;
- <FK11> = 16;
- <FK12> = 18;
- <STOP> = 8;
- <AGAI> = 10;
- <PROP> = 32;
- <UNDO> = 33;
- <FRNT> = 56;
- <COPY> = 58;
- <OPEN> = 79;
- <PAST> = 80;
- <FIND> = 102;
- <CUT> = 104;
-
- <PRSC> = 29;
- <SCLK> = 30;
- <PAUS> = 28;
-
- <NMLK> = 105;
-// <KPDV> = 53;
-// <KPMU> = 54;
-// <KPSU> = 78;
-
-// <KP7> = 75;
-// <KP8> = 76;
-// <KP9> = 77;
-// <KPAD> = 132;
-
-// <KP4> = 98;
-// <KP5> = 99;
-// <KP6> = 100;
-
-// <KP1> = 119;
-// <KP2> = 120;
-// <KP3> = 121;
-// <KPEN> = 97;
-
-// <KP0> = 101;
-// <KPDL> = 57;
-
- <UP> = 27;
- <LEFT> = 31;
- <DOWN> = 34;
- <RGHT> = 35;
-
- <INS> = 51;
- <HOME> = 59;
- <END> = 81;
- <PGUP> = 103;
- <PGDN> = 130;
- <HELP> = 125;
-
- <MUTE> = 52;
- <VOL-> = 9;
- <VOL+> = 11;
- <POWR> = 55;
- indicator 4 = "Caps Lock";
- indicator 3 = "Compose";
- indicator 2 = "Scroll Lock";
- indicator 1 = "Num Lock";
-};
-
-xkb_keycodes "type5tuvhobo" {
- include "sun(type5hobo)"
- <LSGT> = 131;
-
-};
-
-xkb_keycodes "type5_jphobo" {
- include "sun(type5hobo)"
- <EXEC> = 122;
- <KANJ> = 123;
- <HENK> = 124;
- <UNDR> = 118;
-};
-
-xkb_keycodes "type6" {
- include "sun(type5)"
-};
-
-xkb_keycodes "type6tuv" {
- include "sun(type5tuv)"
-};
-
-xkb_keycodes "type6unix" {
- include "sun(type5)"
-};
-
-xkb_keycodes "type6_jp" {
- include "sun(type5_jp)"
-};
-
-xkb_keycodes "type6_euro" {
- include "sun(type5_euro)"
-};
-
-// Even though this is labeled as _usb, I verified these keycodes as accurate
-// on my type5 serial and type6 serial keyboards as well on linux-2.6 boxes.
-// I'm not sure where the "type5" keycodes above are coming from...
-xkb_keycodes "type6_usb" {
- include "xfree86"
-
- <STOP> = 232;
- <AGAI> = 133;
- <PROP> = 134;
- <UNDO> = 135;
- <FRNT> = 140;
- <COPY> = 248;
- <OPEN> = 191;
- <PAST> = 192;
- <FIND> = 122;
- <CUT> = 188;
-
- <HELP> = 245;
-
- // The blank has keycode 239 on my type6 serial kb, but 134 on
- // my type6 usb keyboard (same as <PROP>)
- <BLNK> = 239;
-
- // AltGr + PrScr actually sends a different keycode
- <SYRQ> = 92;
-
- <MUTE> = 160;
- <VOL-> = 174;
- <VOL+> = 176;
- <POWR> = 222;
-
- indicator 4 = "Compose";
-};
-
-xkb_keycodes "type6tuv_usb" {
- include "sun(type6_usb)"
- <LSGT> = 94;
-// <BKSL> = 51;
-};
-
-xkb_keycodes "type6_jp_usb" {
- include "sun(type6_usb)"
- alias <UNDR> = <KPDC>; // 123
- alias <EXEC> = <I0B>; // 139
- alias <KANJ> = <I0A>; // 138
- alias <HENK> = <XFER>; // 129
- indicator 5 = "Kana";
-};
-
-xkb_keycodes "type5_se" {
-
- minimum= 8;
- maximum= 255;
-
- // Row G
- <HELP> = 125;
- //
- <ESC> = 36;
- //
- <FK01> = 12;
- <FK02> = 13;
- <FK03> = 15;
- <FK04> = 17;
- //
- <FK05> = 19;
- <FK06> = 21;
- <FK07> = 23;
- <FK08> = 24;
- //
- <FK09> = 25;
- <FK10> = 14;
- <FK11> = 16;
- <FK12> = 18;
- //
- <PRSC> = 29;
- <SCLK> = 30;
- <PAUS> = 28;
- //
- <MUTE> = 52;
- <VOL-> = 9;
- <VOL+> = 11;
- <POWR> = 55;
- // End Row G
-
- // Row F
- //
- // End Row F
-
- // Row E
- <STOP> = 8;
- <AGAI> = 10;
- //
- <AE00> = 49;
- alias <TLDE> = <AE00>;
- <AE01> = 37;
- <AE02> = 38;
- <AE03> = 39;
- <AE04> = 40;
- <AE05> = 41;
- <AE06> = 42;
- <AE07> = 43;
- <AE08> = 44;
- <AE09> = 45;
- <AE10> = 46;
- <AE11> = 47;
- <AE12> = 48;
- <BKSP> = 50;
- //
- <INS> = 51;
- <HOME> = 59;
- <PGUP> = 103;
- //
- <NMLK> = 105;
- <KPDV> = 53;
- <KPMU> = 54;
- <KPSU> = 78;
- //End Row E
-
- // Row D
- <PROP> = 32;
- <UNDO> = 33;
- //
- <AD00> = 60;
- alias <TAB> = <AD00>;
- <AD01> = 61;
- <AD02> = 62;
- <AD03> = 63;
- <AD04> = 64;
- <AD05> = 65;
- <AD06> = 66;
- <AD07> = 67;
- <AD08> = 68;
- <AD09> = 69;
- <AD10> = 70;
- <AD11> = 71;
- <AD12> = 72;
- //
- <DELE> = 73;
- <END> = 81;
- <PGDN> = 130;
- //
- <KP7> = 75;
- <KP8> = 76;
- <KP9> = 77;
- <KPAD> = 132;
- // End Row D
-
- // Row C
- <FRNT> = 56;
- <COPY> = 58;
- //
- <AC00> = 126;
- alias <CAPS> = <AC00>;
- <AC01> = 84;
- <AC02> = 85;
- <AC03> = 86;
- <AC04> = 87;
- <AC05> = 88;
- <AC06> = 89;
- <AC07> = 90;
- <AC08> = 91;
- <AC09> = 92;
- <AC10> = 93;
- <AC11> = 94;
- <AC12> = 95;
- alias <BKSL> = <AC12>;
- <RTRN> = 96;
- //
- <KP4> = 98;
- <KP5> = 99;
- <KP6> = 100;
- // End Row C
-
- // Row B
- <OPEN> = 79;
- <PAST> = 80;
- //
- <LFSH> = 106;
- <AB00> = 131;
- alias <LSGT> = <AB00>;
- <AB01> = 107;
- <AB02> = 108;
- <AB03> = 109;
- <AB04> = 110;
- <AB05> = 111;
- <AB06> = 112;
- <AB07> = 113;
- <AB08> = 114;
- <AB09> = 115;
- <AB10> = 116;
- <RTSH> = 117;
- //
- <UP> = 27;
- //
- <KP1> = 119;
- <KP2> = 120;
- <KP3> = 121;
- <KPEN> = 97;
- // End Row B
-
- // Row A
- <FIND> = 102;
- <CUT> = 104;
- //
- <LCTL> = 83;
- <LALT> = 26;
- <LMTA> = 127;
- <SPCE> = 128;
- <RMTA> = 129;
- <COMP> = 74;
- <ALGR> = 20;
- alias <RALT> = <ALGR>;
- //
- <LEFT> = 31;
- <DOWN> = 34;
- <RGHT> = 35;
- //
- <KP0> = 101;
- <KPDL> = 57;
- // End Row A
-
- indicator 4 = "Caps Lock";
- indicator 3 = "Compose";
- indicator 2 = "Scroll Lock";
- indicator 1 = "Num Lock";
-};
-
-xkb_keycodes "type5c_se" {
- include "sun(type5_se)"
-};
-
-xkb_keycodes "type4__se" {
-
- minimum= 8;
- maximum= 255;
-
- // Row F
- <STOP> = 8;
- <AGAI> = 10;
- //
- <FK01> = 12;
- <FK02> = 13;
- <FK03> = 15;
- <FK04> = 17;
- <FK05> = 19;
- <FK06> = 21;
- <FK07> = 23;
- <FK08> = 24;
- <FK09> = 25;
- <FK10> = 14;
- <FK11> = 16;
- <FK12> = 18;
- <AF13> = 95;
- alias <TLDE> = <AF13>;
- <AF14> = 22;
- <DELE> = 73;
- //
- <PAUS> = 28;
- <PRSC> = 29;
- <SCLK> = 30;
- <NMLK> = 105;
- // End Row F
-
- // Row E
- <PROP> = 32;
- <UNDO> = 33;
- //
- <AE00> = 36;
- alias <ESC> = <AE00>;
- <AE01> = 37;
- <AE02> = 38;
- <AE03> = 39;
- <AE04> = 40;
- <AE05> = 41;
- <AE06> = 42;
- <AE07> = 43;
- <AE08> = 44;
- <AE09> = 45;
- <AE10> = 46;
- <AE11> = 47;
- <AE12> = 48;
- <BKSP> = 50;
- //
- <KPEQ> = 52;
- <KPDV> = 53;
- <KPMU> = 54;
- <KPSU> = 78;
- // End Row E
-
- // Row D
- <FRNT> = 56;
- <COPY> = 58;
- //
- <AD00> = 60;
- alias <TAB> = <AD00>;
- <AD01> = 61;
- <AD02> = 62;
- <AD03> = 63;
- <AD04> = 64;
- <AD05> = 65;
- <AD06> = 66;
- <AD07> = 67;
- <AD08> = 68;
- <AD09> = 69;
- <AD10> = 70;
- <AD11> = 71;
- <AD12> = 72;
- //
- <KP7> = 75;
- <KP8> = 76;
- <KP9> = 77;
- <KPAD> = 132;
- // End Row D
-
- // Row C
- <OPEN> = 79;
- <PAST> = 80;
- //
- <AC00> = 83;
- // alias <CAPS> = <AC00>;
- <AC01> = 84;
- <AC02> = 85;
- <AC03> = 86;
- <AC04> = 87;
- <AC05> = 88;
- <AC06> = 89;
- <AC07> = 90;
- <AC08> = 91;
- <AC09> = 92;
- <AC10> = 93;
- <AC11> = 94;
- <AC12> = 49;
- alias <BKSL> = <AC12>;
- <RTRN> = 96;
- //
- <KP4> = 98;
- <KP5> = 99;
- <KP6> = 100;
- // End Row C
-
- // Row B
- <FIND> = 102;
- <CUT> = 104;
- //
- <LFSH> = 106;
- <AB00> = 131;
- alias <LSGT> = <AB00>;
- <AB01> = 107;
- <AB02> = 108;
- <AB03> = 109;
- <AB04> = 110;
- <AB05> = 111;
- <AB06> = 112;
- <AB07> = 113;
- <AB08> = 114;
- <AB09> = 115;
- <AB10> = 116;
- <RTSH> = 117;
- <LNFD> = 118;
- //
- <KP1> = 119;
- <KP2> = 120;
- <KP3> = 121;
- <KPEN> = 97;
- // End Row B
-
- // Row A
- <HELP> = 125;
- //
- <AA00> = 126;
- // alias <LCTL> = <AA00>;
- <LALT> = 26;
- <LMTA> = 127;
- <SPCE> = 128;
- <RMTA> = 129;
- <COMP> = 74;
- <ALGR> = 20;
- alias <RALT> = <ALGR>;
- //
- <KP0> = 101;
- <KPDL> = 57;
- // End Row A
-
- indicator 4 = "Caps Lock";
- indicator 3 = "Compose";
- indicator 2 = "Scroll Lock";
- indicator 1 = "Num Lock";
-};
-
-xkb_keycodes "type4_se" {
-
- include "sun(type4__se)"
-
- alias <LCTL> = <AA00>;
- alias <CAPS> = <AC00>;
-};
-
-xkb_keycodes "type4_se_swapctl" {
-
- include "sun(type4__se)"
-
- alias <LCTL> = <AC00>;
- alias <CAPS> = <AA00>;
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+// ---------------------------------------------------------------------------
+// Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+//
+// 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 (including the next
+// paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
+//
+// ---------------------------------------------------------------------------
+//
+
+default xkb_keycodes "type4" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 36;
+ <AE01> = 37;
+ <AE02> = 38;
+ <AE03> = 39;
+ <AE04> = 40;
+ <AE05> = 41;
+ <AE06> = 42;
+ <AE07> = 43;
+ <AE08> = 44;
+ <AE09> = 45;
+ <AE10> = 46;
+ <AE11> = 47;
+ <AE12> = 48;
+ <TLDE> = 49;
+ <BKSP> = 50;
+
+ <TAB> = 60;
+ <AD01> = 61;
+ <AD02> = 62;
+ <AD03> = 63;
+ <AD04> = 64;
+ <AD05> = 65;
+ <AD06> = 66;
+ <AD07> = 67;
+ <AD08> = 68;
+ <AD09> = 69;
+ <AD10> = 70;
+ <AD11> = 71;
+ <AD12> = 72;
+ <DELE> = 73;
+
+ <LCTL> = 83;
+ <AC01> = 84;
+ <AC02> = 85;
+ <AC03> = 86;
+ <AC04> = 87;
+ <AC05> = 88;
+ <AC06> = 89;
+ <AC07> = 90;
+ <AC08> = 91;
+ <AC09> = 92;
+ <AC10> = 93;
+ <AC11> = 94;
+ <BKSL> = 95;
+ <RTRN> = 96;
+
+ <LFSH> = 106;
+ <AB01> = 107;
+ <AB02> = 108;
+ <AB03> = 109;
+ <AB04> = 110;
+ <AB05> = 111;
+ <AB06> = 112;
+ <AB07> = 113;
+ <AB08> = 114;
+ <AB09> = 115;
+ <AB10> = 116;
+ <RTSH> = 117;
+ <LNFD> = 118;
+
+ <HELP> = 125;
+ <CAPS> = 126;
+ <LALT> = 26;
+ <LMTA> = 127;
+ <SPCE> = 128;
+ <RMTA> = 129;
+ <COMP> = 74;
+ <ALGR> = 20;
+ alias <RALT> = <ALGR>;
+
+ <FK01> = 12;
+ <FK02> = 13;
+ <FK03> = 15;
+ <FK04> = 17;
+ <FK05> = 19;
+ <FK06> = 21;
+ <FK07> = 23;
+ <FK08> = 24;
+ <FK09> = 25;
+ <FK10> = 14;
+ <FK11> = 16;
+ <FK12> = 18;
+
+ <STOP> = 8;
+ <AGAI> = 10;
+ <PROP> = 32;
+ <UNDO> = 33;
+ <FRNT> = 56;
+ <COPY> = 58;
+ <OPEN> = 79;
+ <PAST> = 80;
+ <FIND> = 102;
+ <CUT> = 104;
+
+ <PRSC> = 29;
+ <SCLK> = 30;
+ <PAUS> = 28;
+
+ <NMLK> = 105;
+ <KPEQ> = 52;
+ <KPDV> = 53;
+ <KPMU> = 54;
+ <KPSU> = 78;
+
+ <KP7> = 75;
+ <KP8> = 76;
+ <KP9> = 77;
+ <KPAD> = 132;
+
+ <KP4> = 98;
+ <KP5> = 99;
+ <KP6> = 100;
+
+ <KP1> = 119;
+ <KP2> = 120;
+ <KP3> = 121;
+ <KPEN> = 97;
+
+ <KP0> = 101;
+ <KPDL> = 57;
+ indicator 4 = "Caps Lock";
+ indicator 3 = "Compose";
+ indicator 2 = "Scroll Lock";
+ indicator 1 = "Num Lock";
+};
+
+xkb_keycodes "type5" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 36;
+ <AE01> = 37;
+ <AE02> = 38;
+ <AE03> = 39;
+ <AE04> = 40;
+ <AE05> = 41;
+ <AE06> = 42;
+ <AE07> = 43;
+ <AE08> = 44;
+ <AE09> = 45;
+ <AE10> = 46;
+ <AE11> = 47;
+ <AE12> = 48;
+ <TLDE> = 49;
+ <BKSP> = 50;
+
+ <TAB> = 60;
+ <AD01> = 61;
+ <AD02> = 62;
+ <AD03> = 63;
+ <AD04> = 64;
+ <AD05> = 65;
+ <AD06> = 66;
+ <AD07> = 67;
+ <AD08> = 68;
+ <AD09> = 69;
+ <AD10> = 70;
+ <AD11> = 71;
+ <AD12> = 72;
+ <DELE> = 73;
+ <COMP> = 74;
+ <ALGR> = 20;
+ alias <RALT> = <ALGR>;
+
+ <LCTL> = 83;
+ <AC01> = 84;
+ <AC02> = 85;
+ <AC03> = 86;
+ <AC04> = 87;
+ <AC05> = 88;
+ <AC06> = 89;
+ <AC07> = 90;
+ <AC08> = 91;
+ <AC09> = 92;
+ <AC10> = 93;
+ <AC11> = 94;
+ <BKSL> = 95;
+ <RTRN> = 96;
+
+ <LFSH> = 106;
+ <AB01> = 107;
+ <AB02> = 108;
+ <AB03> = 109;
+ <AB04> = 110;
+ <AB05> = 111;
+ <AB06> = 112;
+ <AB07> = 113;
+ <AB08> = 114;
+ <AB09> = 115;
+ <AB10> = 116;
+ <RTSH> = 117;
+
+ <LALT> = 26;
+ <CAPS> = 126;
+ <LMTA> = 127;
+ <SPCE> = 128;
+ <RMTA> = 129;
+
+ <FK01> = 12;
+ <FK02> = 13;
+ <FK03> = 15;
+ <FK04> = 17;
+ <FK05> = 19;
+ <FK06> = 21;
+ <FK07> = 23;
+ <FK08> = 24;
+ <FK09> = 25;
+ <FK10> = 14;
+ <FK11> = 16;
+ <FK12> = 18;
+ <STOP> = 8;
+ <AGAI> = 10;
+ <PROP> = 32;
+ <UNDO> = 33;
+ <FRNT> = 56;
+ <COPY> = 58;
+ <OPEN> = 79;
+ <PAST> = 80;
+ <FIND> = 102;
+ <CUT> = 104;
+
+ <PRSC> = 29;
+ <SCLK> = 30;
+ <PAUS> = 28;
+
+ <NMLK> = 105;
+ <KPDV> = 53;
+ <KPMU> = 54;
+ <KPSU> = 78;
+
+ <KP7> = 75;
+ <KP8> = 76;
+ <KP9> = 77;
+ <KPAD> = 132;
+
+ <KP4> = 98;
+ <KP5> = 99;
+ <KP6> = 100;
+
+ <KP1> = 119;
+ <KP2> = 120;
+ <KP3> = 121;
+ <KPEN> = 97;
+
+ <KP0> = 101;
+ <KPDL> = 57;
+
+ <UP> = 27;
+ <LEFT> = 31;
+ <DOWN> = 34;
+ <RGHT> = 35;
+
+ <INS> = 51;
+ <HOME> = 59;
+ <END> = 81;
+ <PGUP> = 103;
+ <PGDN> = 130;
+ <HELP> = 125;
+
+ <MUTE> = 52;
+ <VOL-> = 9;
+ <VOL+> = 11;
+ <POWR> = 55;
+ indicator 4 = "Caps Lock";
+ indicator 3 = "Compose";
+ indicator 2 = "Scroll Lock";
+ indicator 1 = "Num Lock";
+};
+
+xkb_keycodes "type4tuv" {
+ include "sun(type4)"
+ <LSGT> = 131;
+ <BRCR> = 22;
+};
+
+xkb_keycodes "type4_ca" {
+ include "sun(type4)"
+ <LSGT> = 131;
+};
+
+xkb_keycodes "type4_jp" {
+ include "sun(type4)"
+ <EXEC> = 122;
+ <KANJ> = 123;
+ <HENK> = 124;
+ <BRCR> = 22;
+ alias <UNDR> = <LNFD>;
+};
+
+xkb_keycodes "type4_euro" {
+ include "sun(type4)"
+ <LSGT> = 131;
+};
+
+xkb_keycodes "type5tuv" {
+ include "sun(type5)"
+ <LSGT> = 131;
+};
+
+xkb_keycodes "type5_jp" {
+ include "sun(type5)"
+ <EXEC> = 122;
+ <KANJ> = 123;
+ <HENK> = 124;
+ <UNDR> = 118;
+};
+
+xkb_keycodes "type5_euro" {
+ include "sun(type5)"
+ <LSGT> = 131;
+};
+
+xkb_keycodes "type5hobo" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 36;
+ <AE01> = 37;
+ <AE02> = 38;
+ <AE03> = 39;
+ <AE04> = 40;
+ <AE05> = 41;
+ <AE06> = 42;
+ <AE07> = 43;
+ <AE08> = 44;
+ <AE09> = 45;
+ <AE10> = 46;
+ <AE11> = 47;
+ <AE12> = 48;
+ <TLDE> = 49;
+ <BKSP> = 50;
+
+ <TAB> = 60;
+ <AD01> = 61;
+ <AD02> = 62;
+ <AD03> = 63;
+ <AD04> = 64;
+ <AD05> = 65;
+ <AD06> = 66;
+ <AD07> = 67;
+ <AD08> = 68;
+ <AD09> = 69;
+ <AD10> = 70;
+ <AD11> = 71;
+ <AD12> = 72;
+ <DELE> = 73;
+ <COMP> = 74;
+ <ALGR> = 20;
+ alias <RALT> = <ALGR>;
+
+ <LCTL> = 83;
+ <AC01> = 84;
+ <AC02> = 85;
+ <AC03> = 86;
+ <AC04> = 87;
+ <AC05> = 88;
+ <AC06> = 89;
+ <AC07> = 90;
+ <AC08> = 91;
+ <AC09> = 92;
+ <AC10> = 93;
+ <AC11> = 94;
+ <BKSL> = 95;
+ <RTRN> = 96;
+
+ <LFSH> = 106;
+ <AB01> = 107;
+ <AB02> = 108;
+ <AB03> = 109;
+ <AB04> = 110;
+ <AB05> = 111;
+ <AB06> = 112;
+ <AB07> = 113;
+ <AB08> = 114;
+ <AB09> = 115;
+ <AB10> = 116;
+ <RTSH> = 117;
+
+ <LALT> = 26;
+ <CAPS> = 126;
+ <LMTA> = 127;
+ <SPCE> = 128;
+ <RMTA> = 129;
+
+ <FK01> = 12;
+ <FK02> = 13;
+ <FK03> = 15;
+ <FK04> = 17;
+ <FK05> = 19;
+ <FK06> = 21;
+ <FK07> = 23;
+ <FK08> = 24;
+ <FK09> = 25;
+ <FK10> = 14;
+ <FK11> = 16;
+ <FK12> = 18;
+ <STOP> = 8;
+ <AGAI> = 10;
+ <PROP> = 32;
+ <UNDO> = 33;
+ <FRNT> = 56;
+ <COPY> = 58;
+ <OPEN> = 79;
+ <PAST> = 80;
+ <FIND> = 102;
+ <CUT> = 104;
+
+ <PRSC> = 29;
+ <SCLK> = 30;
+ <PAUS> = 28;
+
+ <NMLK> = 105;
+// <KPDV> = 53;
+// <KPMU> = 54;
+// <KPSU> = 78;
+
+// <KP7> = 75;
+// <KP8> = 76;
+// <KP9> = 77;
+// <KPAD> = 132;
+
+// <KP4> = 98;
+// <KP5> = 99;
+// <KP6> = 100;
+
+// <KP1> = 119;
+// <KP2> = 120;
+// <KP3> = 121;
+// <KPEN> = 97;
+
+// <KP0> = 101;
+// <KPDL> = 57;
+
+ <UP> = 27;
+ <LEFT> = 31;
+ <DOWN> = 34;
+ <RGHT> = 35;
+
+ <INS> = 51;
+ <HOME> = 59;
+ <END> = 81;
+ <PGUP> = 103;
+ <PGDN> = 130;
+ <HELP> = 125;
+
+ <MUTE> = 52;
+ <VOL-> = 9;
+ <VOL+> = 11;
+ <POWR> = 55;
+ indicator 4 = "Caps Lock";
+ indicator 3 = "Compose";
+ indicator 2 = "Scroll Lock";
+ indicator 1 = "Num Lock";
+};
+
+xkb_keycodes "type5tuvhobo" {
+ include "sun(type5hobo)"
+ <LSGT> = 131;
+
+};
+
+xkb_keycodes "type5_jphobo" {
+ include "sun(type5hobo)"
+ <EXEC> = 122;
+ <KANJ> = 123;
+ <HENK> = 124;
+ <UNDR> = 118;
+};
+
+xkb_keycodes "type6" {
+ include "sun(type5)"
+};
+
+xkb_keycodes "type6tuv" {
+ include "sun(type5tuv)"
+};
+
+xkb_keycodes "type6unix" {
+ include "sun(type5)"
+};
+
+xkb_keycodes "type6_jp" {
+ include "sun(type5_jp)"
+};
+
+xkb_keycodes "type6_euro" {
+ include "sun(type5_euro)"
+};
+
+// Even though this is labeled as _usb, I verified these keycodes as accurate
+// on my type5 serial and type6 serial keyboards as well on linux-2.6 boxes.
+// I'm not sure where the "type5" keycodes above are coming from...
+xkb_keycodes "type6_usb" {
+ include "xfree86"
+
+ <STOP> = 232;
+ <AGAI> = 133;
+ <PROP> = 134;
+ <UNDO> = 135;
+ <FRNT> = 140;
+ <COPY> = 248;
+ <OPEN> = 191;
+ <PAST> = 192;
+ <FIND> = 122;
+ <CUT> = 188;
+
+ <HELP> = 245;
+
+ // The blank has keycode 239 on my type6 serial kb, but 134 on
+ // my type6 usb keyboard (same as <PROP>)
+ <BLNK> = 239;
+
+ // AltGr + PrScr actually sends a different keycode
+ <SYRQ> = 92;
+
+ <MUTE> = 160;
+ <VOL-> = 174;
+ <VOL+> = 176;
+ <POWR> = 222;
+
+ indicator 4 = "Compose";
+};
+
+xkb_keycodes "type6tuv_usb" {
+ include "sun(type6_usb)"
+ <LSGT> = 94;
+// <BKSL> = 51;
+};
+
+xkb_keycodes "type6_jp_usb" {
+ include "sun(type6_usb)"
+ alias <UNDR> = <KPDC>; // 123
+ alias <EXEC> = <I0B>; // 139
+ alias <KANJ> = <I0A>; // 138
+ alias <HENK> = <XFER>; // 129
+ indicator 5 = "Kana";
+};
+
+xkb_keycodes "type5_se" {
+
+ minimum= 8;
+ maximum= 255;
+
+ // Row G
+ <HELP> = 125;
+ //
+ <ESC> = 36;
+ //
+ <FK01> = 12;
+ <FK02> = 13;
+ <FK03> = 15;
+ <FK04> = 17;
+ //
+ <FK05> = 19;
+ <FK06> = 21;
+ <FK07> = 23;
+ <FK08> = 24;
+ //
+ <FK09> = 25;
+ <FK10> = 14;
+ <FK11> = 16;
+ <FK12> = 18;
+ //
+ <PRSC> = 29;
+ <SCLK> = 30;
+ <PAUS> = 28;
+ //
+ <MUTE> = 52;
+ <VOL-> = 9;
+ <VOL+> = 11;
+ <POWR> = 55;
+ // End Row G
+
+ // Row F
+ //
+ // End Row F
+
+ // Row E
+ <STOP> = 8;
+ <AGAI> = 10;
+ //
+ <AE00> = 49;
+ alias <TLDE> = <AE00>;
+ <AE01> = 37;
+ <AE02> = 38;
+ <AE03> = 39;
+ <AE04> = 40;
+ <AE05> = 41;
+ <AE06> = 42;
+ <AE07> = 43;
+ <AE08> = 44;
+ <AE09> = 45;
+ <AE10> = 46;
+ <AE11> = 47;
+ <AE12> = 48;
+ <BKSP> = 50;
+ //
+ <INS> = 51;
+ <HOME> = 59;
+ <PGUP> = 103;
+ //
+ <NMLK> = 105;
+ <KPDV> = 53;
+ <KPMU> = 54;
+ <KPSU> = 78;
+ //End Row E
+
+ // Row D
+ <PROP> = 32;
+ <UNDO> = 33;
+ //
+ <AD00> = 60;
+ alias <TAB> = <AD00>;
+ <AD01> = 61;
+ <AD02> = 62;
+ <AD03> = 63;
+ <AD04> = 64;
+ <AD05> = 65;
+ <AD06> = 66;
+ <AD07> = 67;
+ <AD08> = 68;
+ <AD09> = 69;
+ <AD10> = 70;
+ <AD11> = 71;
+ <AD12> = 72;
+ //
+ <DELE> = 73;
+ <END> = 81;
+ <PGDN> = 130;
+ //
+ <KP7> = 75;
+ <KP8> = 76;
+ <KP9> = 77;
+ <KPAD> = 132;
+ // End Row D
+
+ // Row C
+ <FRNT> = 56;
+ <COPY> = 58;
+ //
+ <AC00> = 126;
+ alias <CAPS> = <AC00>;
+ <AC01> = 84;
+ <AC02> = 85;
+ <AC03> = 86;
+ <AC04> = 87;
+ <AC05> = 88;
+ <AC06> = 89;
+ <AC07> = 90;
+ <AC08> = 91;
+ <AC09> = 92;
+ <AC10> = 93;
+ <AC11> = 94;
+ <AC12> = 95;
+ alias <BKSL> = <AC12>;
+ <RTRN> = 96;
+ //
+ <KP4> = 98;
+ <KP5> = 99;
+ <KP6> = 100;
+ // End Row C
+
+ // Row B
+ <OPEN> = 79;
+ <PAST> = 80;
+ //
+ <LFSH> = 106;
+ <AB00> = 131;
+ alias <LSGT> = <AB00>;
+ <AB01> = 107;
+ <AB02> = 108;
+ <AB03> = 109;
+ <AB04> = 110;
+ <AB05> = 111;
+ <AB06> = 112;
+ <AB07> = 113;
+ <AB08> = 114;
+ <AB09> = 115;
+ <AB10> = 116;
+ <RTSH> = 117;
+ //
+ <UP> = 27;
+ //
+ <KP1> = 119;
+ <KP2> = 120;
+ <KP3> = 121;
+ <KPEN> = 97;
+ // End Row B
+
+ // Row A
+ <FIND> = 102;
+ <CUT> = 104;
+ //
+ <LCTL> = 83;
+ <LALT> = 26;
+ <LMTA> = 127;
+ <SPCE> = 128;
+ <RMTA> = 129;
+ <COMP> = 74;
+ <ALGR> = 20;
+ alias <RALT> = <ALGR>;
+ //
+ <LEFT> = 31;
+ <DOWN> = 34;
+ <RGHT> = 35;
+ //
+ <KP0> = 101;
+ <KPDL> = 57;
+ // End Row A
+
+ indicator 4 = "Caps Lock";
+ indicator 3 = "Compose";
+ indicator 2 = "Scroll Lock";
+ indicator 1 = "Num Lock";
+};
+
+xkb_keycodes "type5c_se" {
+ include "sun(type5_se)"
+};
+
+xkb_keycodes "type4__se" {
+
+ minimum= 8;
+ maximum= 255;
+
+ // Row F
+ <STOP> = 8;
+ <AGAI> = 10;
+ //
+ <FK01> = 12;
+ <FK02> = 13;
+ <FK03> = 15;
+ <FK04> = 17;
+ <FK05> = 19;
+ <FK06> = 21;
+ <FK07> = 23;
+ <FK08> = 24;
+ <FK09> = 25;
+ <FK10> = 14;
+ <FK11> = 16;
+ <FK12> = 18;
+ <AF13> = 95;
+ alias <TLDE> = <AF13>;
+ <AF14> = 22;
+ <DELE> = 73;
+ //
+ <PAUS> = 28;
+ <PRSC> = 29;
+ <SCLK> = 30;
+ <NMLK> = 105;
+ // End Row F
+
+ // Row E
+ <PROP> = 32;
+ <UNDO> = 33;
+ //
+ <AE00> = 36;
+ alias <ESC> = <AE00>;
+ <AE01> = 37;
+ <AE02> = 38;
+ <AE03> = 39;
+ <AE04> = 40;
+ <AE05> = 41;
+ <AE06> = 42;
+ <AE07> = 43;
+ <AE08> = 44;
+ <AE09> = 45;
+ <AE10> = 46;
+ <AE11> = 47;
+ <AE12> = 48;
+ <BKSP> = 50;
+ //
+ <KPEQ> = 52;
+ <KPDV> = 53;
+ <KPMU> = 54;
+ <KPSU> = 78;
+ // End Row E
+
+ // Row D
+ <FRNT> = 56;
+ <COPY> = 58;
+ //
+ <AD00> = 60;
+ alias <TAB> = <AD00>;
+ <AD01> = 61;
+ <AD02> = 62;
+ <AD03> = 63;
+ <AD04> = 64;
+ <AD05> = 65;
+ <AD06> = 66;
+ <AD07> = 67;
+ <AD08> = 68;
+ <AD09> = 69;
+ <AD10> = 70;
+ <AD11> = 71;
+ <AD12> = 72;
+ //
+ <KP7> = 75;
+ <KP8> = 76;
+ <KP9> = 77;
+ <KPAD> = 132;
+ // End Row D
+
+ // Row C
+ <OPEN> = 79;
+ <PAST> = 80;
+ //
+ <AC00> = 83;
+ // alias <CAPS> = <AC00>;
+ <AC01> = 84;
+ <AC02> = 85;
+ <AC03> = 86;
+ <AC04> = 87;
+ <AC05> = 88;
+ <AC06> = 89;
+ <AC07> = 90;
+ <AC08> = 91;
+ <AC09> = 92;
+ <AC10> = 93;
+ <AC11> = 94;
+ <AC12> = 49;
+ alias <BKSL> = <AC12>;
+ <RTRN> = 96;
+ //
+ <KP4> = 98;
+ <KP5> = 99;
+ <KP6> = 100;
+ // End Row C
+
+ // Row B
+ <FIND> = 102;
+ <CUT> = 104;
+ //
+ <LFSH> = 106;
+ <AB00> = 131;
+ alias <LSGT> = <AB00>;
+ <AB01> = 107;
+ <AB02> = 108;
+ <AB03> = 109;
+ <AB04> = 110;
+ <AB05> = 111;
+ <AB06> = 112;
+ <AB07> = 113;
+ <AB08> = 114;
+ <AB09> = 115;
+ <AB10> = 116;
+ <RTSH> = 117;
+ <LNFD> = 118;
+ //
+ <KP1> = 119;
+ <KP2> = 120;
+ <KP3> = 121;
+ <KPEN> = 97;
+ // End Row B
+
+ // Row A
+ <HELP> = 125;
+ //
+ <AA00> = 126;
+ // alias <LCTL> = <AA00>;
+ <LALT> = 26;
+ <LMTA> = 127;
+ <SPCE> = 128;
+ <RMTA> = 129;
+ <COMP> = 74;
+ <ALGR> = 20;
+ alias <RALT> = <ALGR>;
+ //
+ <KP0> = 101;
+ <KPDL> = 57;
+ // End Row A
+
+ indicator 4 = "Caps Lock";
+ indicator 3 = "Compose";
+ indicator 2 = "Scroll Lock";
+ indicator 1 = "Num Lock";
+};
+
+xkb_keycodes "type4_se" {
+
+ include "sun(type4__se)"
+
+ alias <LCTL> = <AA00>;
+ alias <CAPS> = <AC00>;
+};
+
+xkb_keycodes "type4_se_swapctl" {
+
+ include "sun(type4__se)"
+
+ alias <LCTL> = <AC00>;
+ alias <CAPS> = <AA00>;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/xfree98 b/xorg-server/xkeyboard-config/keycodes/xfree98
index 3faea5ca5..734573aea 100644
--- a/xorg-server/xkeyboard-config/keycodes/xfree98
+++ b/xorg-server/xkeyboard-config/keycodes/xfree98
@@ -1,152 +1,152 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-//
-default xkb_keycodes "pc98" {
-
- minimum= 8;
- maximum= 255;
-
- <ESC> = 8;
- <AE01> = 9;
- <AE02> = 10;
- <AE03> = 11;
- <AE04> = 12;
- <AE05> = 13;
- <AE06> = 14;
- <AE07> = 15;
- <AE08> = 16;
- <AE09> = 17;
- <AE10> = 18;
- <AE11> = 19;
- <AE12> = 20;
- <BKSL> = 21;
- <BKSP> = 22;
-
- <TAB> = 23;
- <AD01> = 24;
- <AD02> = 25;
- <AD03> = 26;
- <AD04> = 27;
- <AD05> = 28;
- <AD06> = 29;
- <AD07> = 30;
- <AD08> = 31;
- <AD09> = 32;
- <AD10> = 33;
- <AD11> = 34;
- <AD12> = 35;
- <RTRN> = 36;
-
- <LCTL> = 124;
- <CAPS> = 121;
- <AC01> = 37;
- <AC02> = 38;
- <AC03> = 39;
- <AC04> = 40;
- <AC05> = 41;
- <AC06> = 42;
- <AC07> = 43;
- <AC08> = 44;
- <AC09> = 45;
- <AC10> = 46;
- <AC11> = 47;
- <AC12> = 48;
-
- <LFSH> = 120;
- <AB01> = 49;
- <AB02> = 50;
- <AB03> = 51;
- <AB04> = 52;
- <AB05> = 53;
- <AB06> = 54;
- <AB07> = 55;
- <AB08> = 56;
- <AB09> = 57;
- <AB10> = 58;
- <AB11> = 59;
-
- <ALGR> = 122;
- <LALT> = 123;
- <NFER> = 89;
- <SPCE> = 60;
- <XFER> = 61;
-
- <BRK> = 104;
- <PRSC> = 105;
- <FK01> = 106;
- <FK02> = 107;
- <FK03> = 108;
- <FK04> = 109;
- <FK05> = 110;
- <FK06> = 111;
- <FK07> = 112;
- <FK08> = 113;
- <FK09> = 114;
- <FK10> = 115;
- <FK11> = 90;
- <FK12> = 91;
- <FK13> = 92;
- <FK14> = 93;
- <FK15> = 94;
-
-
- <INS> = 64;
- <DELE> = 65;
- <PGUP> = 63;
- <PGDN> = 62;
- <UP> = 66;
- <LEFT> = 67;
- <RGHT> = 68;
- <DOWN> = 69;
-
- <HOME> = 70;
- <HELP> = 71;
-
- <KPSU> = 72;
- <KPDV> = 73;
-
- <KP7> = 74;
- <KP8> = 75;
- <KP9> = 76;
- <KPMU> = 77;
-
- <KP4> = 78;
- <KP5> = 79;
- <KP6> = 80;
- <KPAD> = 81;
-
- <KP1> = 82;
- <KP2> = 83;
- <KP3> = 84;
- <KPEQ> = 85;
-
- <KP0> = 86;
- <KPSP> = 87;
- <KPDC> = 88;
-
- indicator 1 = "Caps Lock";
- indicator 2 = "Kana";
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+//
+default xkb_keycodes "pc98" {
+
+ minimum= 8;
+ maximum= 255;
+
+ <ESC> = 8;
+ <AE01> = 9;
+ <AE02> = 10;
+ <AE03> = 11;
+ <AE04> = 12;
+ <AE05> = 13;
+ <AE06> = 14;
+ <AE07> = 15;
+ <AE08> = 16;
+ <AE09> = 17;
+ <AE10> = 18;
+ <AE11> = 19;
+ <AE12> = 20;
+ <BKSL> = 21;
+ <BKSP> = 22;
+
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <RTRN> = 36;
+
+ <LCTL> = 124;
+ <CAPS> = 121;
+ <AC01> = 37;
+ <AC02> = 38;
+ <AC03> = 39;
+ <AC04> = 40;
+ <AC05> = 41;
+ <AC06> = 42;
+ <AC07> = 43;
+ <AC08> = 44;
+ <AC09> = 45;
+ <AC10> = 46;
+ <AC11> = 47;
+ <AC12> = 48;
+
+ <LFSH> = 120;
+ <AB01> = 49;
+ <AB02> = 50;
+ <AB03> = 51;
+ <AB04> = 52;
+ <AB05> = 53;
+ <AB06> = 54;
+ <AB07> = 55;
+ <AB08> = 56;
+ <AB09> = 57;
+ <AB10> = 58;
+ <AB11> = 59;
+
+ <ALGR> = 122;
+ <LALT> = 123;
+ <NFER> = 89;
+ <SPCE> = 60;
+ <XFER> = 61;
+
+ <BRK> = 104;
+ <PRSC> = 105;
+ <FK01> = 106;
+ <FK02> = 107;
+ <FK03> = 108;
+ <FK04> = 109;
+ <FK05> = 110;
+ <FK06> = 111;
+ <FK07> = 112;
+ <FK08> = 113;
+ <FK09> = 114;
+ <FK10> = 115;
+ <FK11> = 90;
+ <FK12> = 91;
+ <FK13> = 92;
+ <FK14> = 93;
+ <FK15> = 94;
+
+
+ <INS> = 64;
+ <DELE> = 65;
+ <PGUP> = 63;
+ <PGDN> = 62;
+ <UP> = 66;
+ <LEFT> = 67;
+ <RGHT> = 68;
+ <DOWN> = 69;
+
+ <HOME> = 70;
+ <HELP> = 71;
+
+ <KPSU> = 72;
+ <KPDV> = 73;
+
+ <KP7> = 74;
+ <KP8> = 75;
+ <KP9> = 76;
+ <KPMU> = 77;
+
+ <KP4> = 78;
+ <KP5> = 79;
+ <KP6> = 80;
+ <KPAD> = 81;
+
+ <KP1> = 82;
+ <KP2> = 83;
+ <KP3> = 84;
+ <KPEQ> = 85;
+
+ <KP0> = 86;
+ <KPSP> = 87;
+ <KPDC> = 88;
+
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Kana";
+};
diff --git a/xorg-server/xkeyboard-config/po/ChangeLog b/xorg-server/xkeyboard-config/po/ChangeLog
index 254a4768f..34369d6bc 100644
--- a/xorg-server/xkeyboard-config/po/ChangeLog
+++ b/xorg-server/xkeyboard-config/po/ChangeLog
@@ -1,264 +1,264 @@
-2009-01-27 svu
-
- * *.po: sync with TP
-
-2008-09-30 svu
-
- * *.po: sync with TP
-
-2008-05-27 svu
-
- * *.po: sync with TP
-
-2008-01-29 svu
-
- * *.po: sync with TP
-
-2007-10-02 gettextize <bug-gnu-gettext@gnu.org>
-
- * Makefile.in.in: New file, from gettext-0.16.1.
-
-2007-09-25 svu
-
- * *.po: sync with TP
-
-2007-09-11 Maxim V. Dziumanenko <dziumanenko@gmail.com>
-
- * uk.po: updated Ukrainian translation, lost and found
-
-2007-09-11 Nilgün Belma Bugüner <nilgun@buguner.name.tr>
-
- * tr.po: updated Turkish translation, lost and found
-
-2007-09-11 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: updated Swedish translation, lost and found
-
-2007-09-11 Zdenko Podobný <zdpo@mailbox.sk>
-
- * sk.po: updated Slovak translation, lost and found
-
-2007-09-11 Simos Xenitellis <simos74@gmx.net>
-
- * el.po: updated Greek translation, lost and found
-
-2007-09-11 Tino Meinen <a.t.meinen@chello.nl>
-
- * nl.po: updated Dutch translation, lost and found
-
-2007-03-12 Changwoo Ryu <cwryu@debian.org>
-
- * ko.po: added Korean translation
-
-2007-02-25 Tommi Vainikainen <Tommi.Vainikainen@iki.fi>
-
- * fi.po: updated Finnish translation
-
-2007-02-01 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: updated Swedish translation
-
-2007-01-12 Andriy Rysin <arysin@myrealbox.com>
-
- * uk.po: updated Ukrainian translation
-
-2006-12-28 Maxim V. Dziumanenko <dziumanenko@gmail.com>
-
- * uk.po: updated Ukrainian translation
-
-2005-11-28 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
-
- * ru.po: updated Russian translation
-
-2005-10-17 Matej UrbanÄiÄ <matej.urban@gmail.com>
-
- * sl.po: updated Slovenian translation
-
-2006-10-13 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: updated Hungarian translation
-
-2006-10-07 Sergey E Kvyato <kvantos@plotinka.ru>
-
- * ru.po: updated Russian translation
-
-2006-10-03 Denis Barbier <barbier@linuxfr.org>
-
- * fr.po: updated French translation
-
-2006-10-03 Nilgün Belma Bugüner <nilgun@buguner.name.tr>
-
- * tr.po: updated Turkish translation
-
-2006-10-02 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: updated Hungarian translation
-
-2006-09-24 Vladimer Sichinava <vlsichinava@gmail.com>
-
- * ka.po: added Georgian translation
-
-2006-09-24 Denis Barbier <barbier@linuxfr.org>
-
- * fr.po: updated French translation
-
-2006-09-09 svu
-
- * ru.po: updated Ukrainian translation
-
-2006-08-31 Andriy Rysin <arysin@myrealbox.com>
-
- * uk.po: updated Ukrainian translation
-
-2006-06-29 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: updated Spanish translation
-
-2006-04-09 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: added Spanish translation
-
-2006-04-05 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: updated Swedish translation
-
-2006-04-01 Maxim V. Dziumanenko <mvd@mylinux.com.ua>
-
- * uk.po: updated Ukrainian translation
-
-2006-03-17 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: updated Swedish translation
-
-2006-03-12 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: updated Hungarian translation
-
-2006-03-09 Denis Barbier <barbier@linuxfr.org>
-
- * fr.po: updated French translation
-
-2006-03-04 Данило Шеган <danilo@gnome.org>
-
- * sr.po: updated Serbian translation
-
-2006-02-27 Luca Ferretti <elle.uca@infinito.it>
-
- * it.po: updated Italian translation
-
-2006-01-21 Taco Witte <tcwitte@cs.uu.nl>
-
- * nl.po: updated Dutch translation
-
-2005-12-31 svu
-
- * ru.po: updated Russian translation
-
-2005-12-31 jeroen-91@home.nl
-
- * nl.po: updated Dutch translation
-
-2005-12-01 svu
-
- * ru.po: updated Russian translation
-
-2005-10-13 Denis Barbier <barbier@linuxfr.org>
-
- * fr.po: updated French translation
-
-2005-10-02 svu
-
- * ru.po: updated Russian translation
-
-2005-09-30 Matej UrbanÄiÄ <matej.urban@gmail.com>
-
- * sl.po: adding Slovenian translation
-
-2005-09-13 Wei-Lun Chao <chaoweilun@pcmail.com.tw>
-
- * zh_TW.po: adding Chinise (traditional) translation
-
-2005-09-13 Tommi Vainikainen <Tommi.Vainikainen@iki.fi>
-
- * fi.po: adding Finnish translation
-
-2005-09-05 Alexander Shopov <ash@contact.bg>
-
- * bg.po: updated Bulgarian translation
-
-2005-09-04 svu
-
- * ru.po: updated Russian translation
-
-2005-08-25 Danilo Segan <dsegan@gmx.net>
-
- * sr.po: updated Serbian translation
-
-2005-08-23 svu
-
- * ru.po: updated Russian translation
-
-2005-08-17 nilgun@buguner.name.tr
-
- * tr.po: updated Turkish translation
-
-2005-08-01 svu
-
- * ru.po: updated Russian translation
-
-2005-07-31 svu
-
- * ru.po: updated Russian translation
-
-2005-07-24 svu
-
- * ru.po: updated Russian translation
-
-2005-05-28 teppi8.gmail.com
-
- * vi.po: new Vietnamese translation
-
-2005-04-09 chris@protactin.co.uk
-
- * en_GB.po: new British translation
-
-2005-04-06 Steve Murphy <murf@e-tools.com>
-
- * rw.po: updated Kinyarwanda translation
-
-2005-01-31 Taco Witte <tcwitte@cs.uu.nl>
-
- * nl.po: updated Dutch translation
-
-2005-01-26 svu
-
- * ru.po: updated Russian translation
-
-2005-01-24 svu
-
- * ru.po: updated Russian translation
-
-2005-01-16 svu
-
- * ru.po: updated Russian translation
-
-2004-12-22 svu
-
- * ru.po: updated Russian translation
-
-2004-12-21 Simos Xenitellis <simos74@gmx.net>
-
- * el.po: adding Greek translation
-
-2004-10-26 Elros Cyriatan <cyriatan@fastmail.fm>
-
- * nl.po: updated Dutch translation
-
-2004-10-26 svu
-
- * ru.po: updated Russian translation
-
-2004-10-12 svu
-
- * ru.po: updated Russian translation
-
+2009-01-27 svu
+
+ * *.po: sync with TP
+
+2008-09-30 svu
+
+ * *.po: sync with TP
+
+2008-05-27 svu
+
+ * *.po: sync with TP
+
+2008-01-29 svu
+
+ * *.po: sync with TP
+
+2007-10-02 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: New file, from gettext-0.16.1.
+
+2007-09-25 svu
+
+ * *.po: sync with TP
+
+2007-09-11 Maxim V. Dziumanenko <dziumanenko@gmail.com>
+
+ * uk.po: updated Ukrainian translation, lost and found
+
+2007-09-11 Nilgün Belma Bugüner <nilgun@buguner.name.tr>
+
+ * tr.po: updated Turkish translation, lost and found
+
+2007-09-11 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: updated Swedish translation, lost and found
+
+2007-09-11 Zdenko Podobný <zdpo@mailbox.sk>
+
+ * sk.po: updated Slovak translation, lost and found
+
+2007-09-11 Simos Xenitellis <simos74@gmx.net>
+
+ * el.po: updated Greek translation, lost and found
+
+2007-09-11 Tino Meinen <a.t.meinen@chello.nl>
+
+ * nl.po: updated Dutch translation, lost and found
+
+2007-03-12 Changwoo Ryu <cwryu@debian.org>
+
+ * ko.po: added Korean translation
+
+2007-02-25 Tommi Vainikainen <Tommi.Vainikainen@iki.fi>
+
+ * fi.po: updated Finnish translation
+
+2007-02-01 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: updated Swedish translation
+
+2007-01-12 Andriy Rysin <arysin@myrealbox.com>
+
+ * uk.po: updated Ukrainian translation
+
+2006-12-28 Maxim V. Dziumanenko <dziumanenko@gmail.com>
+
+ * uk.po: updated Ukrainian translation
+
+2005-11-28 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
+
+ * ru.po: updated Russian translation
+
+2005-10-17 Matej UrbanÄiÄ <matej.urban@gmail.com>
+
+ * sl.po: updated Slovenian translation
+
+2006-10-13 Gabor Kelemen <kelemeng@gnome.hu>
+
+ * hu.po: updated Hungarian translation
+
+2006-10-07 Sergey E Kvyato <kvantos@plotinka.ru>
+
+ * ru.po: updated Russian translation
+
+2006-10-03 Denis Barbier <barbier@linuxfr.org>
+
+ * fr.po: updated French translation
+
+2006-10-03 Nilgün Belma Bugüner <nilgun@buguner.name.tr>
+
+ * tr.po: updated Turkish translation
+
+2006-10-02 Gabor Kelemen <kelemeng@gnome.hu>
+
+ * hu.po: updated Hungarian translation
+
+2006-09-24 Vladimer Sichinava <vlsichinava@gmail.com>
+
+ * ka.po: added Georgian translation
+
+2006-09-24 Denis Barbier <barbier@linuxfr.org>
+
+ * fr.po: updated French translation
+
+2006-09-09 svu
+
+ * ru.po: updated Ukrainian translation
+
+2006-08-31 Andriy Rysin <arysin@myrealbox.com>
+
+ * uk.po: updated Ukrainian translation
+
+2006-06-29 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
+
+ * es.po: updated Spanish translation
+
+2006-04-09 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
+
+ * es.po: added Spanish translation
+
+2006-04-05 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: updated Swedish translation
+
+2006-04-01 Maxim V. Dziumanenko <mvd@mylinux.com.ua>
+
+ * uk.po: updated Ukrainian translation
+
+2006-03-17 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: updated Swedish translation
+
+2006-03-12 Gabor Kelemen <kelemeng@gnome.hu>
+
+ * hu.po: updated Hungarian translation
+
+2006-03-09 Denis Barbier <barbier@linuxfr.org>
+
+ * fr.po: updated French translation
+
+2006-03-04 Данило Шеган <danilo@gnome.org>
+
+ * sr.po: updated Serbian translation
+
+2006-02-27 Luca Ferretti <elle.uca@infinito.it>
+
+ * it.po: updated Italian translation
+
+2006-01-21 Taco Witte <tcwitte@cs.uu.nl>
+
+ * nl.po: updated Dutch translation
+
+2005-12-31 svu
+
+ * ru.po: updated Russian translation
+
+2005-12-31 jeroen-91@home.nl
+
+ * nl.po: updated Dutch translation
+
+2005-12-01 svu
+
+ * ru.po: updated Russian translation
+
+2005-10-13 Denis Barbier <barbier@linuxfr.org>
+
+ * fr.po: updated French translation
+
+2005-10-02 svu
+
+ * ru.po: updated Russian translation
+
+2005-09-30 Matej UrbanÄiÄ <matej.urban@gmail.com>
+
+ * sl.po: adding Slovenian translation
+
+2005-09-13 Wei-Lun Chao <chaoweilun@pcmail.com.tw>
+
+ * zh_TW.po: adding Chinise (traditional) translation
+
+2005-09-13 Tommi Vainikainen <Tommi.Vainikainen@iki.fi>
+
+ * fi.po: adding Finnish translation
+
+2005-09-05 Alexander Shopov <ash@contact.bg>
+
+ * bg.po: updated Bulgarian translation
+
+2005-09-04 svu
+
+ * ru.po: updated Russian translation
+
+2005-08-25 Danilo Segan <dsegan@gmx.net>
+
+ * sr.po: updated Serbian translation
+
+2005-08-23 svu
+
+ * ru.po: updated Russian translation
+
+2005-08-17 nilgun@buguner.name.tr
+
+ * tr.po: updated Turkish translation
+
+2005-08-01 svu
+
+ * ru.po: updated Russian translation
+
+2005-07-31 svu
+
+ * ru.po: updated Russian translation
+
+2005-07-24 svu
+
+ * ru.po: updated Russian translation
+
+2005-05-28 teppi8.gmail.com
+
+ * vi.po: new Vietnamese translation
+
+2005-04-09 chris@protactin.co.uk
+
+ * en_GB.po: new British translation
+
+2005-04-06 Steve Murphy <murf@e-tools.com>
+
+ * rw.po: updated Kinyarwanda translation
+
+2005-01-31 Taco Witte <tcwitte@cs.uu.nl>
+
+ * nl.po: updated Dutch translation
+
+2005-01-26 svu
+
+ * ru.po: updated Russian translation
+
+2005-01-24 svu
+
+ * ru.po: updated Russian translation
+
+2005-01-16 svu
+
+ * ru.po: updated Russian translation
+
+2004-12-22 svu
+
+ * ru.po: updated Russian translation
+
+2004-12-21 Simos Xenitellis <simos74@gmx.net>
+
+ * el.po: adding Greek translation
+
+2004-10-26 Elros Cyriatan <cyriatan@fastmail.fm>
+
+ * nl.po: updated Dutch translation
+
+2004-10-26 svu
+
+ * ru.po: updated Russian translation
+
+2004-10-12 svu
+
+ * ru.po: updated Russian translation
+
diff --git a/xorg-server/xkeyboard-config/po/Makevars b/xorg-server/xkeyboard-config/po/Makevars
index 03f092c96..45916d2bb 100644
--- a/xorg-server/xkeyboard-config/po/Makevars
+++ b/xorg-server/xkeyboard-config/po/Makevars
@@ -1,41 +1,41 @@
-# Makefile variables for PO directory in any package using GNU gettext.
-
-# Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
-
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
-
-# This is the copyright holder that gets inserted into the header of the
-# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
-# package. (Note that the msgstr strings, extracted from the package's
-# sources, belong to the copyright holder of the package.) Translators are
-# expected to transfer the copyright for their translations to this person
-# or entity, or to disclaim their copyright. The empty string stands for
-# the public domain; in this case the translators are expected to disclaim
-# their copyright.
-COPYRIGHT_HOLDER = XFree86
-
-# This is the email address or URL to which the translators shall report
-# bugs in the untranslated strings:
-# - Strings which are not entire sentences, see the maintainer guidelines
-# in the GNU gettext documentation, section 'Preparing Strings'.
-# - Strings which use unclear terms or require additional context to be
-# understood.
-# - Strings which make invalid assumptions about notation of date, time or
-# money.
-# - Pluralisation problems.
-# - Incorrect English spelling.
-# - Incorrect formatting.
-# It can be your email address, or a mailing list address where translators
-# can write to without being subscribed, or the URL of a web page through
-# which the translators can contact you.
-MSGID_BUGS_ADDRESS = svu@users.sourceforge.net
-
-# This is the list of locale categories, beyond LC_MESSAGES, for which the
-# message catalogs shall be used. It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
+# package. (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.) Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright. The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = XFree86
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+# in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+# understood.
+# - Strings which make invalid assumptions about notation of date, time or
+# money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = svu@users.sourceforge.net
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used. It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/xorg-server/xkeyboard-config/po/POTFILES.in b/xorg-server/xkeyboard-config/po/POTFILES.in
index 901d327d4..a47595899 100644
--- a/xorg-server/xkeyboard-config/po/POTFILES.in
+++ b/xorg-server/xkeyboard-config/po/POTFILES.in
@@ -1,2 +1,2 @@
-rules/base.xml.in
-rules/base.extras.xml.in
+rules/base.xml.in
+rules/base.extras.xml.in
diff --git a/xorg-server/xkeyboard-config/po/POTFILES.skip b/xorg-server/xkeyboard-config/po/POTFILES.skip
index 67c1092e1..7c75518d9 100644
--- a/xorg-server/xkeyboard-config/po/POTFILES.skip
+++ b/xorg-server/xkeyboard-config/po/POTFILES.skip
@@ -1,2 +1,2 @@
-rules/evdev.xml.in
-rules/evdev.extras.xml.in
+rules/evdev.xml.in
+rules/evdev.extras.xml.in
diff --git a/xorg-server/xkeyboard-config/po/af.po b/xorg-server/xkeyboard-config/po/af.po
index e2c453d11..ced2c2b68 100644
--- a/xorg-server/xkeyboard-config/po/af.po
+++ b/xorg-server/xkeyboard-config/po/af.po
@@ -1,1464 +1,1464 @@
-# xfree86_xkb_xml
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# This file is distributed under the same license as the PACKAGE package.
-# Petri Jooste <rkwjpj@puk.ac.za>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2003-11-25 23:38+0000\n"
-"PO-Revision-Date: 2004-03-18 00:17+0200\n"
-"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
-"Language-Team: Afrikaans <i18n@af.org.za>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: xfree86.xml.in.h:1
-msgid "\"Typewriter\""
-msgstr "\"Tikmasjien\""
-
-#: xfree86.xml.in.h:2
-msgid "A Tamil typewrite-style keymap; TAB encoding"
-msgstr "'n Tamil tikmasjienstyl sleutelbinding; TAB-enkodering"
-
-#: xfree86.xml.in.h:3
-msgid "A Tamil typewrite-style keymap; TSCII encoding"
-msgstr "'n Tamil tikmasjienstyl sleutelbinding; TSCII-enkodering"
-
-#: xfree86.xml.in.h:4
-msgid "A Tamil typewrite-style keymap; Unicode encoding"
-msgstr "'n Tamil tikmasjienstyl sleutelbinding; Unicode-enkodering"
-
-#: xfree86.xml.in.h:5
-msgid "ACPI Standard"
-msgstr "ACPI Standaard"
-
-#: xfree86.xml.in.h:6
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: xfree86.xml.in.h:7
-msgid "Acts as Shift with locking. Shift cancels Caps."
-msgstr "Tree op as Shift met sluit-aksie. Shift kanseleer Caps."
-
-#: xfree86.xml.in.h:8
-msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
-msgstr "Tree op as Shift met sluiting. Shift kanseleer nie Caps nie."
-
-#: xfree86.xml.in.h:9
-msgid "Add the standard behavior to Menu key."
-msgstr "Voeg by die standaardgedrag by die Kieslyssleutel."
-
-#: xfree86.xml.in.h:10
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: xfree86.xml.in.h:11
-msgid "Alb"
-msgstr "Alb"
-
-#: xfree86.xml.in.h:12
-msgid "Albanian"
-msgstr "Albanies"
-
-#: xfree86.xml.in.h:13
-msgid "Alt and Meta on the Alt keys (default)."
-msgstr "Alt en Meta op die Alt sleutels (verstek)."
-
-#: xfree86.xml.in.h:14
-msgid "Alt+Control changes group"
-msgstr "Alt+Kontrole verander groep"
-
-#: xfree86.xml.in.h:15
-msgid "Alt+Shift changes group"
-msgstr "Alt+Shift verander groep"
-
-#: xfree86.xml.in.h:16
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win-sleutel gedrag"
-
-#: xfree86.xml.in.h:17
-msgid "Alternate"
-msgstr "Alterneer"
-
-#: xfree86.xml.in.h:18
-msgid "Arabic"
-msgstr "Arabies"
-
-#: xfree86.xml.in.h:19
-msgid "Arb"
-msgstr "Arb"
-
-#: xfree86.xml.in.h:20
-msgid "Arm"
-msgstr "Arm"
-
-#: xfree86.xml.in.h:21
-msgid "Armenian"
-msgstr "Armeens"
-
-#: xfree86.xml.in.h:22
-msgid "Aze"
-msgstr "Aze"
-
-#: xfree86.xml.in.h:23
-msgid "Azerbaijani"
-msgstr "Azerbaijaans"
-
-#: xfree86.xml.in.h:24
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: xfree86.xml.in.h:25
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: xfree86.xml.in.h:26
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: xfree86.xml.in.h:27
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: xfree86.xml.in.h:28
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: xfree86.xml.in.h:29
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: xfree86.xml.in.h:30
-msgid "Basic"
-msgstr "Basies"
-
-#: xfree86.xml.in.h:31
-msgid "Bel"
-msgstr "Bel"
-
-#: xfree86.xml.in.h:32
-msgid "Belarusian"
-msgstr "Belarussies"
-
-#: xfree86.xml.in.h:33
-msgid "Belgian"
-msgstr "Belgies"
-
-#: xfree86.xml.in.h:34
-msgid "Ben"
-msgstr "Ben"
-
-#: xfree86.xml.in.h:35
-msgid "Bengali"
-msgstr "Bengaals"
-
-#: xfree86.xml.in.h:36
-msgid "Bgr"
-msgstr "Bgr"
-
-#: xfree86.xml.in.h:37
-msgid "Bih"
-msgstr "Bih"
-
-#: xfree86.xml.in.h:38
-msgid "Blr"
-msgstr "Blr"
-
-#: xfree86.xml.in.h:39
-msgid "Bosnian"
-msgstr "Bosnies"
-
-#: xfree86.xml.in.h:40
-msgid "Both Alt keys together change group"
-msgstr "Beide Alt-sleutels tesame verander groep"
-
-#: xfree86.xml.in.h:41
-msgid "Both Ctrl keys together change group"
-msgstr "Beide Ctrl-sleutels tesame verander groep"
-
-#: xfree86.xml.in.h:42
-msgid "Both Shift keys together change group"
-msgstr "Beide Shift-sleutels tesame verander groep"
-
-#: xfree86.xml.in.h:43
-msgid "Both Win-keys switch group while pressed"
-msgstr "Beide Win-sleutels wissel groep terwyl gedruk"
-
-#: xfree86.xml.in.h:44
-msgid "Bra"
-msgstr "Bra"
-
-#: xfree86.xml.in.h:45
-msgid "Brazilian"
-msgstr "Braziliaans"
-
-#: xfree86.xml.in.h:46
-msgid "Brazilian ABNT2"
-msgstr "Braziliaans ABNT2"
-
-#: xfree86.xml.in.h:47
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internetsleutelbord"
-
-#: xfree86.xml.in.h:48
-msgid "Bulgarian"
-msgstr "Bulgaars"
-
-#: xfree86.xml.in.h:49
-msgid "Burmese"
-msgstr "Burmees"
-
-#: xfree86.xml.in.h:50
-msgid "Can"
-msgstr "Kan"
-
-#: xfree86.xml.in.h:51
-msgid "Canadian"
-msgstr "Kanadees"
-
-#: xfree86.xml.in.h:52
-msgid "Caps Lock key changes group"
-msgstr "CapsLock-sleutel verander groep"
-
-#: xfree86.xml.in.h:53
-msgid "CapsLock key behavior"
-msgstr "CapsLock-sleutelgedrag"
-
-#: xfree86.xml.in.h:54
-msgid "Caps_Lock LED shows alternative group"
-msgstr "Caps_Lock LED vertoon alternatiewe groep"
-
-#: xfree86.xml.in.h:55
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: xfree86.xml.in.h:56
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternatief)"
-
-#: xfree86.xml.in.h:57
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internetsleutelbord"
-
-#: xfree86.xml.in.h:58
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: xfree86.xml.in.h:59
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: xfree86.xml.in.h:60
-msgid "CloGaelach Laptop"
-msgstr "CloGaelach Skootrekenaar"
-
-#: xfree86.xml.in.h:61
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: xfree86.xml.in.h:62
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 sleutels)"
-
-#: xfree86.xml.in.h:63
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 sleutels)"
-
-#: xfree86.xml.in.h:64
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 sleutels)"
-
-#: xfree86.xml.in.h:65
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: xfree86.xml.in.h:66
-msgid "Control Key Position"
-msgstr "Kontrolesleutel posisie"
-
-#: xfree86.xml.in.h:67
-msgid "Control key at bottom left"
-msgstr "Kontrolesleutel links onder"
-
-#: xfree86.xml.in.h:68
-msgid "Control key at left of 'A'"
-msgstr "Kontrolesleutel links van 'A'"
-
-#: xfree86.xml.in.h:69
-msgid "Control+Shift changes group"
-msgstr "Ctrl+Shift verander groep"
-
-#: xfree86.xml.in.h:70
-msgid "Croatian"
-msgstr "Kroaties"
-
-#: xfree86.xml.in.h:71
-msgid "Cyrillic"
-msgstr "Kirrillies"
-
-#: xfree86.xml.in.h:72
-msgid "Cze"
-msgstr "Cze"
-
-#: xfree86.xml.in.h:73
-msgid "Czech"
-msgstr "Tsjeggies"
-
-#: xfree86.xml.in.h:74
-msgid "Czech (qwerty)"
-msgstr "Tsjeggies (qwerty)"
-
-#: xfree86.xml.in.h:75
-msgid "Danish"
-msgstr "Deens"
-
-#: xfree86.xml.in.h:76
-msgid "Dead acute"
-msgstr "Dooie akuutaksent"
-
-#: xfree86.xml.in.h:77
-msgid "Dead grave acute"
-msgstr "Dooie gravisaksent"
-
-#: xfree86.xml.in.h:78
-msgid "Dell"
-msgstr "Dell"
-
-#: xfree86.xml.in.h:79
-msgid "Dell 101-key PC"
-msgstr "Dell 101-key PC"
-
-#: xfree86.xml.in.h:80
-msgid "Deu"
-msgstr "Deu"
-
-#: xfree86.xml.in.h:81
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: xfree86.xml.in.h:82
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 series"
-
-#: xfree86.xml.in.h:83
-msgid "Dnk"
-msgstr "Dnk"
-
-#: xfree86.xml.in.h:84
-msgid "Dutch"
-msgstr "Nederlands"
-
-#: xfree86.xml.in.h:85
-msgid "Dvo"
-msgstr "Dvo"
-
-#: xfree86.xml.in.h:86
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: xfree86.xml.in.h:87
-msgid "Eliminate dead keys"
-msgstr "Elimineer dooie sleutels"
-
-#: xfree86.xml.in.h:88
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: xfree86.xml.in.h:89
-msgid "Esp"
-msgstr "Esp"
-
-#: xfree86.xml.in.h:90
-msgid "Est"
-msgstr "Est"
-
-#: xfree86.xml.in.h:91
-msgid "Estonian"
-msgstr "Estoniaans"
-
-#: xfree86.xml.in.h:92
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: xfree86.xml.in.h:93
-msgid "Extended"
-msgstr "Uitgebreide"
-
-#: xfree86.xml.in.h:94
-msgid "Fao"
-msgstr "Fao"
-
-#: xfree86.xml.in.h:95
-msgid "Faroese"
-msgstr "Faroees"
-
-#: xfree86.xml.in.h:96
-msgid "Farsi"
-msgstr "Farsi"
-
-#: xfree86.xml.in.h:97
-msgid "Fin"
-msgstr "Fin"
-
-#: xfree86.xml.in.h:98
-msgid "Finnish"
-msgstr "Fins"
-
-#: xfree86.xml.in.h:99
-msgid "Fra"
-msgstr "Fra"
-
-#: xfree86.xml.in.h:100
-msgid "French"
-msgstr "Frans"
-
-#: xfree86.xml.in.h:101
-msgid "French (alternative)"
-msgstr "Frans (alternatief)"
-
-#: xfree86.xml.in.h:102
-msgid "French Canadian"
-msgstr "Franse Kanadees"
-
-#: xfree86.xml.in.h:103
-msgid "GBr"
-msgstr "GBr"
-
-#: xfree86.xml.in.h:104
-msgid "Generic 101-key PC"
-msgstr "Generies 101-sleutel PC"
-
-#: xfree86.xml.in.h:105
-msgid "Generic 102-key (Intl) PC"
-msgstr "Generies 102-sleutel (Intl) PC"
-
-#: xfree86.xml.in.h:106
-msgid "Generic 104-key PC"
-msgstr "Generies 104-sleutel PC"
-
-#: xfree86.xml.in.h:107
-msgid "Generic 105-key (Intl) PC"
-msgstr "Generies 105-sleutel (Intl) PC"
-
-#: xfree86.xml.in.h:108
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: xfree86.xml.in.h:109
-msgid "Geo"
-msgstr "Geo"
-
-#: xfree86.xml.in.h:110
-msgid "Georgian (latin)"
-msgstr "Georgies (latyns)"
-
-#: xfree86.xml.in.h:111
-msgid "Georgian (russian)"
-msgstr "Georgies (russies)"
-
-#: xfree86.xml.in.h:112
-msgid "German"
-msgstr "Duits"
-
-#: xfree86.xml.in.h:113
-msgid "Grc"
-msgstr "Grc"
-
-#: xfree86.xml.in.h:114
-msgid "Greek"
-msgstr "Grieks"
-
-#: xfree86.xml.in.h:115
-msgid "Group Shift/Lock behavior"
-msgstr "Groep Shift/Lock gedrag"
-
-#: xfree86.xml.in.h:116
-msgid "Guj"
-msgstr "Guj"
-
-#: xfree86.xml.in.h:117
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: xfree86.xml.in.h:118
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: xfree86.xml.in.h:119
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: xfree86.xml.in.h:120
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: xfree86.xml.in.h:121
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: xfree86.xml.in.h:122
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: xfree86.xml.in.h:123
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: xfree86.xml.in.h:124
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: xfree86.xml.in.h:125
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: xfree86.xml.in.h:126
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: xfree86.xml.in.h:127
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
-
-#: xfree86.xml.in.h:128
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#: xfree86.xml.in.h:129
-msgid "Hin"
-msgstr "Hin"
-
-#: xfree86.xml.in.h:130
-msgid "Hindi"
-msgstr "Hindi"
-
-#: xfree86.xml.in.h:131
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: xfree86.xml.in.h:132
-msgid "Hrv"
-msgstr "Hrv"
-
-#: xfree86.xml.in.h:133
-msgid "Hun"
-msgstr "Hun"
-
-#: xfree86.xml.in.h:134
-msgid "Hungarian"
-msgstr "Hongaars"
-
-#: xfree86.xml.in.h:135
-msgid "Hungarian (qwerty)"
-msgstr "Hongaars (qwerty)"
-
-#: xfree86.xml.in.h:136
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hiper is verbind aan die Win-sleutels."
-
-#: xfree86.xml.in.h:137
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: xfree86.xml.in.h:138
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: xfree86.xml.in.h:139
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (alternate option)"
-
-#: xfree86.xml.in.h:140
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: xfree86.xml.in.h:141
-msgid "INSCRIPT layout"
-msgstr "INSCRIPT-uitleg"
-
-#: xfree86.xml.in.h:142
-msgid "IS434"
-msgstr "IS434"
-
-#: xfree86.xml.in.h:143
-msgid "IS434 laptop"
-msgstr "IS434 laptop"
-
-#: xfree86.xml.in.h:144
-msgid "ISO Alternate"
-msgstr "ISO Alternatief"
-
-#: xfree86.xml.in.h:145
-msgid "Icelandic"
-msgstr "Yslandies"
-
-#: xfree86.xml.in.h:146
-msgid "Iku"
-msgstr "Iku"
-
-#: xfree86.xml.in.h:147
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: xfree86.xml.in.h:148
-msgid "Irish"
-msgstr "Iers"
-
-#: xfree86.xml.in.h:149
-msgid "Irl"
-msgstr "Irl"
-
-#: xfree86.xml.in.h:150
-msgid "Irn"
-msgstr "Irn"
-
-#: xfree86.xml.in.h:151
-msgid "Isl"
-msgstr "Isl"
-
-#: xfree86.xml.in.h:152
-msgid "Isr"
-msgstr "Isr"
-
-#: xfree86.xml.in.h:153
-msgid "Israeli"
-msgstr "Israelies"
-
-#: xfree86.xml.in.h:154
-msgid "Ita"
-msgstr "Ita"
-
-#: xfree86.xml.in.h:155
-msgid "Italian"
-msgstr "Italiaans"
-
-#: xfree86.xml.in.h:156
-msgid "Japanese"
-msgstr "Japanees"
-
-#: xfree86.xml.in.h:157
-msgid "Japanese 106-key"
-msgstr "Japanees 106-sleutel"
-
-#: xfree86.xml.in.h:158
-msgid "Jpn"
-msgstr "Jpn"
-
-#: xfree86.xml.in.h:159
-msgid "Kan"
-msgstr "Kan"
-
-#: xfree86.xml.in.h:160
-msgid "Kannada"
-msgstr "Kannada"
-
-#: xfree86.xml.in.h:161
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: xfree86.xml.in.h:162
-msgid "LAm"
-msgstr "LAm"
-
-#: xfree86.xml.in.h:163
-msgid "Laptop"
-msgstr "Skootrekenaar"
-
-#: xfree86.xml.in.h:164
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-
-#: xfree86.xml.in.h:165
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-
-#: xfree86.xml.in.h:166
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr "Laptop/notebook Dell Inspiron 8xxx"
-
-#: xfree86.xml.in.h:167
-msgid "Latin"
-msgstr "Latyns"
-
-#: xfree86.xml.in.h:168
-msgid "Latin America"
-msgstr "Latyns Amerika"
-
-#: xfree86.xml.in.h:169
-msgid "Latvian"
-msgstr "Latvies"
-
-#: xfree86.xml.in.h:170
-msgid "Left Alt key changes group"
-msgstr "Linkerkant Alt-sleutel verander groep"
-
-#: xfree86.xml.in.h:171
-msgid "Left Ctrl key changes group"
-msgstr "Linkerkant Ctrl-sleutel verander groep"
-
-#: xfree86.xml.in.h:172
-msgid "Left Shift key changes group"
-msgstr "Linkerkant Shift-sleutel verander groep"
-
-#: xfree86.xml.in.h:173
-msgid "Left Win-key changes group"
-msgstr "Linkerkant Win-sleutel verander groep"
-
-#: xfree86.xml.in.h:174
-msgid "Left Win-key switches group while pressed"
-msgstr "Linkerkant Win-sleutel wissel groep terwyl gedruk"
-
-#: xfree86.xml.in.h:175
-msgid "Lithuanian azerty standard"
-msgstr "Lithuaniese azerty standaard"
-
-#: xfree86.xml.in.h:176
-msgid "Lithuanian qwerty \"numeric\""
-msgstr "Lithuanian qwerty \"numeries\""
-
-#: xfree86.xml.in.h:177
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: xfree86.xml.in.h:178
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: xfree86.xml.in.h:179
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: xfree86.xml.in.h:180
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: xfree86.xml.in.h:181
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (alternatiewe opsie)"
-
-#: xfree86.xml.in.h:182
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (alternatiewe opsie2)"
-
-#: xfree86.xml.in.h:183
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: xfree86.xml.in.h:184
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: xfree86.xml.in.h:185
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "Logitech Deluxe Access Keyboard"
-
-#: xfree86.xml.in.h:186
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: xfree86.xml.in.h:187
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: xfree86.xml.in.h:188
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: xfree86.xml.in.h:189
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: xfree86.xml.in.h:190
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Logitech iTouch keyboard Internet Navigator"
-
-#: xfree86.xml.in.h:191
-msgid "Ltu"
-msgstr "Ltu"
-
-#: xfree86.xml.in.h:192
-msgid "Lva"
-msgstr "Lva"
-
-#: xfree86.xml.in.h:193
-msgid "Macedonian"
-msgstr "Masedonies"
-
-#: xfree86.xml.in.h:194
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: xfree86.xml.in.h:195
-msgid "Macintosh Old"
-msgstr "Macintosh (oud)"
-
-#: xfree86.xml.in.h:196
-msgid "Make CapsLock an additional Control"
-msgstr "Maak CapsLock 'n adisionele Kontrole"
-
-#: xfree86.xml.in.h:197
-msgid "Mal"
-msgstr "Mal"
-
-#: xfree86.xml.in.h:198
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: xfree86.xml.in.h:199
-msgid "Maltese"
-msgstr "Maltees"
-
-#: xfree86.xml.in.h:200
-msgid "Maltese (US layout)"
-msgstr "Maltese (VSA-uitleg)"
-
-#: xfree86.xml.in.h:201
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: xfree86.xml.in.h:202
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: xfree86.xml.in.h:203
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: xfree86.xml.in.h:204
-msgid "Menu is Compose"
-msgstr "Kieslys-sleutel is Komponeer"
-
-#: xfree86.xml.in.h:205
-msgid "Menu key changes group"
-msgstr "Kieslyssleutel verander groep"
-
-#: xfree86.xml.in.h:206
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta is verbind aan die Win-sleutels."
-
-#: xfree86.xml.in.h:207
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta is verbind aan die linkerkantste Win-sleutel."
-
-#: xfree86.xml.in.h:208
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internetsleutelbord"
-
-#: xfree86.xml.in.h:209
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Sweeds"
-
-#: xfree86.xml.in.h:210
-msgid "Microsoft Natural"
-msgstr "Microsoft Natuurlik"
-
-#: xfree86.xml.in.h:211
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: xfree86.xml.in.h:212
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: xfree86.xml.in.h:213
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office sleutelbord"
-
-#: xfree86.xml.in.h:214
-msgid "Miscellaneous compatibility options"
-msgstr "Verskeie versoenbaarheid-opsies"
-
-#: xfree86.xml.in.h:215
-msgid "Mkd"
-msgstr "Mkd"
-
-#: xfree86.xml.in.h:216
-msgid "Mlt"
-msgstr "Mlt"
-
-#: xfree86.xml.in.h:217
-msgid "Mmr"
-msgstr "Mmr"
-
-#: xfree86.xml.in.h:218
-msgid "Mng"
-msgstr "Mng"
-
-#: xfree86.xml.in.h:219
-msgid "Mongolian"
-msgstr "Mongolees"
-
-#: xfree86.xml.in.h:220
-msgid "Nld"
-msgstr "Nld"
-
-#: xfree86.xml.in.h:221
-msgid "Nor"
-msgstr "Nor"
-
-#: xfree86.xml.in.h:222
-msgid "Northern Saami (Finland)"
-msgstr "Noordelike Saami (Finland)"
-
-#: xfree86.xml.in.h:223
-msgid "Northern Saami (Norway)"
-msgstr "Noordelike Saami (Noorweë)"
-
-#: xfree86.xml.in.h:224
-msgid "Northern Saami (Sweden)"
-msgstr "Noordelike Saami (Swede)"
-
-#: xfree86.xml.in.h:225
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: xfree86.xml.in.h:226
-msgid "Norwegian"
-msgstr "Noorweegs"
-
-#: xfree86.xml.in.h:227
-msgid "Num_Lock LED shows alternative group"
-msgstr "Num_Lock LED vertoon alternatiewe groep"
-
-#: xfree86.xml.in.h:228
-msgid "Ogh"
-msgstr "Ogh"
-
-#: xfree86.xml.in.h:229
-msgid "Ogham"
-msgstr "Ogham"
-
-#: xfree86.xml.in.h:230
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/Internet keyboard"
-
-#: xfree86.xml.in.h:231
-msgid "Ori"
-msgstr "Ori"
-
-#: xfree86.xml.in.h:232
-msgid "Oriya"
-msgstr "Oriya"
-
-#: xfree86.xml.in.h:233
-msgid "PC-98xx Series"
-msgstr "PC-98xx Reeks"
-
-#: xfree86.xml.in.h:234
-msgid "PC104"
-msgstr "PC104"
-
-#: xfree86.xml.in.h:235
-msgid "Pan"
-msgstr "Pan"
-
-#: xfree86.xml.in.h:236
-msgid "Phonetic"
-msgstr "Foneties"
-
-#: xfree86.xml.in.h:237
-msgid "Pol"
-msgstr "Pol"
-
-#: xfree86.xml.in.h:238
-msgid "Polish"
-msgstr "Pools"
-
-#: xfree86.xml.in.h:239
-msgid "Polish (qwertz)"
-msgstr "Pools (qwertz)"
-
-#: xfree86.xml.in.h:240
-msgid "Polytonic"
-msgstr "Polytonic"
-
-#: xfree86.xml.in.h:241
-msgid "Portuguese"
-msgstr "Portugees"
-
-#: xfree86.xml.in.h:242
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: xfree86.xml.in.h:243
-msgid "Press Left Win-key to choose 3rd level"
-msgstr "Druk Linkerkantste Win-sleutel om die 3de vlak te kies"
-
-#: xfree86.xml.in.h:244
-msgid "Press Menu key to choose 3rd level"
-msgstr "Druk Kieslys-sleutel om die 3de vlak te kies"
-
-#: xfree86.xml.in.h:245
-msgid "Press Right Control to choose 3rd level"
-msgstr "Druk Regterkantste Ctrl-sleutel om die 3de vlak te kies"
-
-#: xfree86.xml.in.h:246
-msgid "Press Right Win-key to choose 3rd level"
-msgstr "Druk Regterkantste Win-sleutel om die 3de vlak te kies"
-
-#: xfree86.xml.in.h:247
-msgid "Press any of Win-keys to choose 3rd level"
-msgstr "Druk enige van die Win-sleutels om die 3de vlak te kies"
-
-#: xfree86.xml.in.h:248
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: xfree86.xml.in.h:249
-msgid "Prt"
-msgstr "Prt"
-
-#: xfree86.xml.in.h:250
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: xfree86.xml.in.h:251
-msgid "R-Alt switches group while pressed"
-msgstr "R-Alt wissel die groep terwyl gedruk"
-
-#: xfree86.xml.in.h:252
-msgid "Right Alt is Compose"
-msgstr "Regterkant Alt is Komponeer"
-
-#: xfree86.xml.in.h:253
-msgid "Right Alt key changes group"
-msgstr "Regterkant Alt-sleutel verander groep"
-
-#: xfree86.xml.in.h:254
-msgid "Right Control key works as Right Alt"
-msgstr "Regterkant Ctrl-sleutel werk soos Regterkant Alt"
-
-#: xfree86.xml.in.h:255
-msgid "Right Ctrl key changes group"
-msgstr "Regterkant Ctrl-sleutel verander groep"
-
-#: xfree86.xml.in.h:256
-msgid "Right Shift key changes group"
-msgstr "Regterkant Shift-sleutel verander groep"
-
-#: xfree86.xml.in.h:257
-msgid "Right Win-key changes group"
-msgstr "Regterkant Win-sleutel verander groep"
-
-#: xfree86.xml.in.h:258
-msgid "Right Win-key is Compose"
-msgstr "Regterkant Win-sleutel is Komponeer"
-
-#: xfree86.xml.in.h:259
-msgid "Right Win-key switches group while pressed"
-msgstr "Regterkant Win-sleutel skakel groep terwyl gedruk"
-
-#: xfree86.xml.in.h:260
-msgid "Romanian"
-msgstr "Romeens"
-
-#: xfree86.xml.in.h:261
-msgid "Rou"
-msgstr "Rou"
-
-#: xfree86.xml.in.h:262
-msgid "Rus"
-msgstr "Rus"
-
-#: xfree86.xml.in.h:263
-msgid "Russian"
-msgstr "Russies"
-
-#: xfree86.xml.in.h:264
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: xfree86.xml.in.h:265
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: xfree86.xml.in.h:266
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: xfree86.xml.in.h:267
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: xfree86.xml.in.h:268
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: xfree86.xml.in.h:269
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: xfree86.xml.in.h:270
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: xfree86.xml.in.h:271
-msgid "Sapmi"
-msgstr "Sapmi"
-
-#: xfree86.xml.in.h:272
-msgid "Scg"
-msgstr "Scg"
-
-#: xfree86.xml.in.h:273
-msgid "Scroll_Lock LED shows alternative group"
-msgstr "Scroll_Lock LED wys alternatiewe groep"
-
-#: xfree86.xml.in.h:274
-msgid "Serbian"
-msgstr "Serbies"
-
-#: xfree86.xml.in.h:275
-msgid "Shift with numpad keys works as in MS Windows"
-msgstr "Shift met numeriese sleutels werk soos in MS Windows"
-
-#: xfree86.xml.in.h:276
-msgid "Slovak"
-msgstr "Slovaaks"
-
-#: xfree86.xml.in.h:277
-msgid "Slovak (qwerty)"
-msgstr "Slovaaks (qwerty)"
-
-#: xfree86.xml.in.h:278
-msgid "Slovenian"
-msgstr "Sloveens"
-
-#: xfree86.xml.in.h:279
-msgid "Sme"
-msgstr "Sme"
-
-#: xfree86.xml.in.h:280
-msgid "Spanish"
-msgstr "Spaans"
-
-#: xfree86.xml.in.h:281
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Spesiale sleutels (Ctrl+Alt+&lt;sleutel&gt;) word hanteer in 'n bediener."
-
-#: xfree86.xml.in.h:282
-msgid "Standard"
-msgstr "Standaard"
-
-#: xfree86.xml.in.h:283
-msgid "Sun dead keys"
-msgstr "Sun (dooie sleutels)"
-
-#: xfree86.xml.in.h:284
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super is verbind aan die Win-sleutels (verstek)."
-
-#: xfree86.xml.in.h:285
-msgid "Sv"
-msgstr "Sv"
-
-#: xfree86.xml.in.h:286
-msgid "Svk"
-msgstr "Svk"
-
-#: xfree86.xml.in.h:287
-msgid "Svn"
-msgstr "Svn"
-
-#: xfree86.xml.in.h:288
-msgid "Swap Control and Caps Lock"
-msgstr "Ruil Ctrl en CapsLock om"
-
-#: xfree86.xml.in.h:289
-msgid "Swe"
-msgstr "Swe"
-
-#: xfree86.xml.in.h:290
-msgid "Swedish"
-msgstr "Sweeds"
-
-#: xfree86.xml.in.h:291
-msgid "Swiss French"
-msgstr "Switserse Frans"
-
-#: xfree86.xml.in.h:292
-msgid "Swiss German"
-msgstr "Switserse Duits"
-
-#: xfree86.xml.in.h:293
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: xfree86.xml.in.h:294
-msgid "Syr"
-msgstr "Syr"
-
-#: xfree86.xml.in.h:295
-msgid "Syriac"
-msgstr "Siries"
-
-#: xfree86.xml.in.h:296
-msgid "Tajik"
-msgstr "Tajikees"
-
-#: xfree86.xml.in.h:297
-msgid "Tamil"
-msgstr "Tamilees"
-
-#: xfree86.xml.in.h:298
-msgid "Tel"
-msgstr "Tel"
-
-#: xfree86.xml.in.h:299
-msgid "Telugu"
-msgstr "Telugu"
-
-#: xfree86.xml.in.h:300
-msgid "Tha"
-msgstr "Tha"
-
-#: xfree86.xml.in.h:301
-msgid "Thai (Kedmanee)"
-msgstr "Thai (Kedmanee)"
-
-#: xfree86.xml.in.h:302
-msgid "Thai (Pattachote)"
-msgstr "Thai (Pattachote)"
-
-#: xfree86.xml.in.h:303
-msgid "Thai (TIS-820.2538)"
-msgstr "Thai (TIS-820.2538)"
-
-#: xfree86.xml.in.h:304
-msgid "Third level choosers"
-msgstr "Derdevlak kiesers"
-
-#: xfree86.xml.in.h:305
-msgid "Tjk"
-msgstr "Tjk"
-
-#: xfree86.xml.in.h:306
-msgid "Tml"
-msgstr "Tml"
-
-#: xfree86.xml.in.h:307
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: xfree86.xml.in.h:308
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: xfree86.xml.in.h:309
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: xfree86.xml.in.h:310
-msgid "Tur"
-msgstr "Tur"
-
-#: xfree86.xml.in.h:311
-msgid "Turkish"
-msgstr "Turks"
-
-#: xfree86.xml.in.h:312
-msgid "Turkish (F)"
-msgstr "Turks (F)"
-
-#: xfree86.xml.in.h:313
-msgid "Turkish Alt-Q Layout"
-msgstr "Turks Alt-Q-uitleg"
-
-#: xfree86.xml.in.h:314
-msgid "U.S. English"
-msgstr "VSA Engels"
-
-#: xfree86.xml.in.h:315
-msgid "U.S. English w/ ISO9995-3"
-msgstr "VSA Engels met ISO9995-3"
-
-#: xfree86.xml.in.h:316
-msgid "U.S. English w/ dead keys"
-msgstr "VSA Engels met dooie sleutels"
-
-#: xfree86.xml.in.h:317
-msgid "US"
-msgstr "VSA"
-
-#: xfree86.xml.in.h:318
-msgid "US keyboard with Romanian letters"
-msgstr "VSA sleutelbord met Romeense letters"
-
-#: xfree86.xml.in.h:319
-msgid "USA"
-msgstr "VSA"
-
-#: xfree86.xml.in.h:320
-msgid "Ukr"
-msgstr "Ukr"
-
-#: xfree86.xml.in.h:321
-msgid "Ukrainian"
-msgstr "Ukraïnies"
-
-#: xfree86.xml.in.h:322
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: xfree86.xml.in.h:323
-msgid "United Kingdom"
-msgstr "Vereenigde Koninkryk"
-
-#: xfree86.xml.in.h:324
-msgid "Use keyboard LED to show alternative group"
-msgstr "Gebruik sleutelbord LED om alternatiewe groep te wys"
-
-#: xfree86.xml.in.h:325
-msgid "Uses internal capitalization. Shift cancels Caps."
-msgstr "Gebruik interne bokas. Shift kanseleer Caps."
-
-#: xfree86.xml.in.h:326
-msgid "Uses internal capitalization. Shift doesn't cancel Caps."
-msgstr "Gebruik interne bokas. Shift kanseleer nie Caps nie."
-
-#: xfree86.xml.in.h:327
-msgid "Uzb"
-msgstr "Uzb"
-
-#: xfree86.xml.in.h:328
-msgid "Uzbek"
-msgstr "Uzbek"
-
-#: xfree86.xml.in.h:329
-msgid "Vietnamese"
-msgstr "Viëtnamees"
-
-#: xfree86.xml.in.h:330
-msgid "Vnm"
-msgstr "Vnm"
-
-#: xfree86.xml.in.h:331
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: xfree86.xml.in.h:332
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: xfree86.xml.in.h:333
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internetsleutelbord"
-
-#: xfree86.xml.in.h:334
-msgid "Yug"
-msgstr "Yug"
-
-#: xfree86.xml.in.h:335
-msgid "Yugoslavian"
-msgstr "Joegoslaafs"
-
-#: xfree86.xml.in.h:336
-msgid "abnt2"
-msgstr "abnt2"
-
-#: xfree86.xml.in.h:337
-msgid "azerty"
-msgstr "azerty"
-
-#: xfree86.xml.in.h:338
-msgid "azerty/digits"
-msgstr "azerty/syfers"
-
-#: xfree86.xml.in.h:339
-msgid "bksl"
-msgstr "bksl"
-
-#: xfree86.xml.in.h:340
-msgid "digits"
-msgstr "syfers"
-
-#: xfree86.xml.in.h:341
-msgid "l2/101/qwerty/comma"
-msgstr "l2/101/qwerty/komma"
-
-#: xfree86.xml.in.h:342
-msgid "l2/101/qwerty/dot"
-msgstr "l2/101/qwerty/dot"
-
-#: xfree86.xml.in.h:343
-msgid "l2/101/qwertz/comma"
-msgstr "l2/101/qwertz/komma"
-
-#: xfree86.xml.in.h:344
-msgid "l2/101/qwertz/dot"
-msgstr "l2/101/qwertz/dot"
-
-#: xfree86.xml.in.h:345
-msgid "l2/102/qwerty/comma"
-msgstr "l2/102/qwerty/komma"
-
-#: xfree86.xml.in.h:346
-msgid "l2/102/qwerty/dot"
-msgstr "l2/102/qwerty/dot"
-
-#: xfree86.xml.in.h:347
-msgid "l2/102/qwertz/comma"
-msgstr "l2/102/qwertz/komma"
-
-#: xfree86.xml.in.h:348
-msgid "l2/102/qwertz/dot"
-msgstr "l2/102/qwertz/dot"
-
-#: xfree86.xml.in.h:349
-msgid "laptop"
-msgstr "skootrekenaar"
-
-#: xfree86.xml.in.h:350
-msgid "lyx"
-msgstr "lyx"
-
-#: xfree86.xml.in.h:351
-msgid "qwerty"
-msgstr "qwerty"
-
-#: xfree86.xml.in.h:352
-msgid "qwerty/digits"
-msgstr "qwerty/syfers"
-
-#: xfree86.xml.in.h:353
-msgid "sefi"
-msgstr "sefi"
-
-#: xfree86.xml.in.h:354
-msgid "si1452"
-msgstr "si1452"
-
-#: xfree86.xml.in.h:355
-msgid "uni/101/qwerty/comma"
-msgstr "uni/101/qwerty/komma"
-
-#: xfree86.xml.in.h:356
-msgid "uni/101/qwerty/dot"
-msgstr "uni/101/qwerty/dot"
-
-#: xfree86.xml.in.h:357
-msgid "uni/101/qwertz/comma"
-msgstr "uni/101/qwertz/komma"
-
-#: xfree86.xml.in.h:358
-msgid "uni/101/qwertz/dot"
-msgstr "uni/101/qwertz/dot"
-
-#: xfree86.xml.in.h:359
-msgid "uni/102/qwerty/comma"
-msgstr "uni/102/qwerty/komma"
-
-#: xfree86.xml.in.h:360
-msgid "uni/102/qwerty/dot"
-msgstr "uni/102/qwerty/dot"
-
-#: xfree86.xml.in.h:361
-msgid "uni/102/qwertz/comma"
-msgstr "uni/102/qwertz/comma"
-
-#: xfree86.xml.in.h:362
-msgid "uni/102/qwertz/dot"
-msgstr "uni/102/qwertz/dot"
+# xfree86_xkb_xml
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Petri Jooste <rkwjpj@puk.ac.za>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-11-25 23:38+0000\n"
+"PO-Revision-Date: 2004-03-18 00:17+0200\n"
+"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
+"Language-Team: Afrikaans <i18n@af.org.za>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: xfree86.xml.in.h:1
+msgid "\"Typewriter\""
+msgstr "\"Tikmasjien\""
+
+#: xfree86.xml.in.h:2
+msgid "A Tamil typewrite-style keymap; TAB encoding"
+msgstr "'n Tamil tikmasjienstyl sleutelbinding; TAB-enkodering"
+
+#: xfree86.xml.in.h:3
+msgid "A Tamil typewrite-style keymap; TSCII encoding"
+msgstr "'n Tamil tikmasjienstyl sleutelbinding; TSCII-enkodering"
+
+#: xfree86.xml.in.h:4
+msgid "A Tamil typewrite-style keymap; Unicode encoding"
+msgstr "'n Tamil tikmasjienstyl sleutelbinding; Unicode-enkodering"
+
+#: xfree86.xml.in.h:5
+msgid "ACPI Standard"
+msgstr "ACPI Standaard"
+
+#: xfree86.xml.in.h:6
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: xfree86.xml.in.h:7
+msgid "Acts as Shift with locking. Shift cancels Caps."
+msgstr "Tree op as Shift met sluit-aksie. Shift kanseleer Caps."
+
+#: xfree86.xml.in.h:8
+msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
+msgstr "Tree op as Shift met sluiting. Shift kanseleer nie Caps nie."
+
+#: xfree86.xml.in.h:9
+msgid "Add the standard behavior to Menu key."
+msgstr "Voeg by die standaardgedrag by die Kieslyssleutel."
+
+#: xfree86.xml.in.h:10
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: xfree86.xml.in.h:11
+msgid "Alb"
+msgstr "Alb"
+
+#: xfree86.xml.in.h:12
+msgid "Albanian"
+msgstr "Albanies"
+
+#: xfree86.xml.in.h:13
+msgid "Alt and Meta on the Alt keys (default)."
+msgstr "Alt en Meta op die Alt sleutels (verstek)."
+
+#: xfree86.xml.in.h:14
+msgid "Alt+Control changes group"
+msgstr "Alt+Kontrole verander groep"
+
+#: xfree86.xml.in.h:15
+msgid "Alt+Shift changes group"
+msgstr "Alt+Shift verander groep"
+
+#: xfree86.xml.in.h:16
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win-sleutel gedrag"
+
+#: xfree86.xml.in.h:17
+msgid "Alternate"
+msgstr "Alterneer"
+
+#: xfree86.xml.in.h:18
+msgid "Arabic"
+msgstr "Arabies"
+
+#: xfree86.xml.in.h:19
+msgid "Arb"
+msgstr "Arb"
+
+#: xfree86.xml.in.h:20
+msgid "Arm"
+msgstr "Arm"
+
+#: xfree86.xml.in.h:21
+msgid "Armenian"
+msgstr "Armeens"
+
+#: xfree86.xml.in.h:22
+msgid "Aze"
+msgstr "Aze"
+
+#: xfree86.xml.in.h:23
+msgid "Azerbaijani"
+msgstr "Azerbaijaans"
+
+#: xfree86.xml.in.h:24
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: xfree86.xml.in.h:25
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: xfree86.xml.in.h:26
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: xfree86.xml.in.h:27
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: xfree86.xml.in.h:28
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: xfree86.xml.in.h:29
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: xfree86.xml.in.h:30
+msgid "Basic"
+msgstr "Basies"
+
+#: xfree86.xml.in.h:31
+msgid "Bel"
+msgstr "Bel"
+
+#: xfree86.xml.in.h:32
+msgid "Belarusian"
+msgstr "Belarussies"
+
+#: xfree86.xml.in.h:33
+msgid "Belgian"
+msgstr "Belgies"
+
+#: xfree86.xml.in.h:34
+msgid "Ben"
+msgstr "Ben"
+
+#: xfree86.xml.in.h:35
+msgid "Bengali"
+msgstr "Bengaals"
+
+#: xfree86.xml.in.h:36
+msgid "Bgr"
+msgstr "Bgr"
+
+#: xfree86.xml.in.h:37
+msgid "Bih"
+msgstr "Bih"
+
+#: xfree86.xml.in.h:38
+msgid "Blr"
+msgstr "Blr"
+
+#: xfree86.xml.in.h:39
+msgid "Bosnian"
+msgstr "Bosnies"
+
+#: xfree86.xml.in.h:40
+msgid "Both Alt keys together change group"
+msgstr "Beide Alt-sleutels tesame verander groep"
+
+#: xfree86.xml.in.h:41
+msgid "Both Ctrl keys together change group"
+msgstr "Beide Ctrl-sleutels tesame verander groep"
+
+#: xfree86.xml.in.h:42
+msgid "Both Shift keys together change group"
+msgstr "Beide Shift-sleutels tesame verander groep"
+
+#: xfree86.xml.in.h:43
+msgid "Both Win-keys switch group while pressed"
+msgstr "Beide Win-sleutels wissel groep terwyl gedruk"
+
+#: xfree86.xml.in.h:44
+msgid "Bra"
+msgstr "Bra"
+
+#: xfree86.xml.in.h:45
+msgid "Brazilian"
+msgstr "Braziliaans"
+
+#: xfree86.xml.in.h:46
+msgid "Brazilian ABNT2"
+msgstr "Braziliaans ABNT2"
+
+#: xfree86.xml.in.h:47
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internetsleutelbord"
+
+#: xfree86.xml.in.h:48
+msgid "Bulgarian"
+msgstr "Bulgaars"
+
+#: xfree86.xml.in.h:49
+msgid "Burmese"
+msgstr "Burmees"
+
+#: xfree86.xml.in.h:50
+msgid "Can"
+msgstr "Kan"
+
+#: xfree86.xml.in.h:51
+msgid "Canadian"
+msgstr "Kanadees"
+
+#: xfree86.xml.in.h:52
+msgid "Caps Lock key changes group"
+msgstr "CapsLock-sleutel verander groep"
+
+#: xfree86.xml.in.h:53
+msgid "CapsLock key behavior"
+msgstr "CapsLock-sleutelgedrag"
+
+#: xfree86.xml.in.h:54
+msgid "Caps_Lock LED shows alternative group"
+msgstr "Caps_Lock LED vertoon alternatiewe groep"
+
+#: xfree86.xml.in.h:55
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: xfree86.xml.in.h:56
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternatief)"
+
+#: xfree86.xml.in.h:57
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internetsleutelbord"
+
+#: xfree86.xml.in.h:58
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: xfree86.xml.in.h:59
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: xfree86.xml.in.h:60
+msgid "CloGaelach Laptop"
+msgstr "CloGaelach Skootrekenaar"
+
+#: xfree86.xml.in.h:61
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: xfree86.xml.in.h:62
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 sleutels)"
+
+#: xfree86.xml.in.h:63
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 sleutels)"
+
+#: xfree86.xml.in.h:64
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 sleutels)"
+
+#: xfree86.xml.in.h:65
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: xfree86.xml.in.h:66
+msgid "Control Key Position"
+msgstr "Kontrolesleutel posisie"
+
+#: xfree86.xml.in.h:67
+msgid "Control key at bottom left"
+msgstr "Kontrolesleutel links onder"
+
+#: xfree86.xml.in.h:68
+msgid "Control key at left of 'A'"
+msgstr "Kontrolesleutel links van 'A'"
+
+#: xfree86.xml.in.h:69
+msgid "Control+Shift changes group"
+msgstr "Ctrl+Shift verander groep"
+
+#: xfree86.xml.in.h:70
+msgid "Croatian"
+msgstr "Kroaties"
+
+#: xfree86.xml.in.h:71
+msgid "Cyrillic"
+msgstr "Kirrillies"
+
+#: xfree86.xml.in.h:72
+msgid "Cze"
+msgstr "Cze"
+
+#: xfree86.xml.in.h:73
+msgid "Czech"
+msgstr "Tsjeggies"
+
+#: xfree86.xml.in.h:74
+msgid "Czech (qwerty)"
+msgstr "Tsjeggies (qwerty)"
+
+#: xfree86.xml.in.h:75
+msgid "Danish"
+msgstr "Deens"
+
+#: xfree86.xml.in.h:76
+msgid "Dead acute"
+msgstr "Dooie akuutaksent"
+
+#: xfree86.xml.in.h:77
+msgid "Dead grave acute"
+msgstr "Dooie gravisaksent"
+
+#: xfree86.xml.in.h:78
+msgid "Dell"
+msgstr "Dell"
+
+#: xfree86.xml.in.h:79
+msgid "Dell 101-key PC"
+msgstr "Dell 101-key PC"
+
+#: xfree86.xml.in.h:80
+msgid "Deu"
+msgstr "Deu"
+
+#: xfree86.xml.in.h:81
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: xfree86.xml.in.h:82
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 series"
+
+#: xfree86.xml.in.h:83
+msgid "Dnk"
+msgstr "Dnk"
+
+#: xfree86.xml.in.h:84
+msgid "Dutch"
+msgstr "Nederlands"
+
+#: xfree86.xml.in.h:85
+msgid "Dvo"
+msgstr "Dvo"
+
+#: xfree86.xml.in.h:86
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: xfree86.xml.in.h:87
+msgid "Eliminate dead keys"
+msgstr "Elimineer dooie sleutels"
+
+#: xfree86.xml.in.h:88
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: xfree86.xml.in.h:89
+msgid "Esp"
+msgstr "Esp"
+
+#: xfree86.xml.in.h:90
+msgid "Est"
+msgstr "Est"
+
+#: xfree86.xml.in.h:91
+msgid "Estonian"
+msgstr "Estoniaans"
+
+#: xfree86.xml.in.h:92
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: xfree86.xml.in.h:93
+msgid "Extended"
+msgstr "Uitgebreide"
+
+#: xfree86.xml.in.h:94
+msgid "Fao"
+msgstr "Fao"
+
+#: xfree86.xml.in.h:95
+msgid "Faroese"
+msgstr "Faroees"
+
+#: xfree86.xml.in.h:96
+msgid "Farsi"
+msgstr "Farsi"
+
+#: xfree86.xml.in.h:97
+msgid "Fin"
+msgstr "Fin"
+
+#: xfree86.xml.in.h:98
+msgid "Finnish"
+msgstr "Fins"
+
+#: xfree86.xml.in.h:99
+msgid "Fra"
+msgstr "Fra"
+
+#: xfree86.xml.in.h:100
+msgid "French"
+msgstr "Frans"
+
+#: xfree86.xml.in.h:101
+msgid "French (alternative)"
+msgstr "Frans (alternatief)"
+
+#: xfree86.xml.in.h:102
+msgid "French Canadian"
+msgstr "Franse Kanadees"
+
+#: xfree86.xml.in.h:103
+msgid "GBr"
+msgstr "GBr"
+
+#: xfree86.xml.in.h:104
+msgid "Generic 101-key PC"
+msgstr "Generies 101-sleutel PC"
+
+#: xfree86.xml.in.h:105
+msgid "Generic 102-key (Intl) PC"
+msgstr "Generies 102-sleutel (Intl) PC"
+
+#: xfree86.xml.in.h:106
+msgid "Generic 104-key PC"
+msgstr "Generies 104-sleutel PC"
+
+#: xfree86.xml.in.h:107
+msgid "Generic 105-key (Intl) PC"
+msgstr "Generies 105-sleutel (Intl) PC"
+
+#: xfree86.xml.in.h:108
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: xfree86.xml.in.h:109
+msgid "Geo"
+msgstr "Geo"
+
+#: xfree86.xml.in.h:110
+msgid "Georgian (latin)"
+msgstr "Georgies (latyns)"
+
+#: xfree86.xml.in.h:111
+msgid "Georgian (russian)"
+msgstr "Georgies (russies)"
+
+#: xfree86.xml.in.h:112
+msgid "German"
+msgstr "Duits"
+
+#: xfree86.xml.in.h:113
+msgid "Grc"
+msgstr "Grc"
+
+#: xfree86.xml.in.h:114
+msgid "Greek"
+msgstr "Grieks"
+
+#: xfree86.xml.in.h:115
+msgid "Group Shift/Lock behavior"
+msgstr "Groep Shift/Lock gedrag"
+
+#: xfree86.xml.in.h:116
+msgid "Guj"
+msgstr "Guj"
+
+#: xfree86.xml.in.h:117
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: xfree86.xml.in.h:118
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: xfree86.xml.in.h:119
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: xfree86.xml.in.h:120
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: xfree86.xml.in.h:121
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: xfree86.xml.in.h:122
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: xfree86.xml.in.h:123
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: xfree86.xml.in.h:124
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: xfree86.xml.in.h:125
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: xfree86.xml.in.h:126
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: xfree86.xml.in.h:127
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
+
+#: xfree86.xml.in.h:128
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#: xfree86.xml.in.h:129
+msgid "Hin"
+msgstr "Hin"
+
+#: xfree86.xml.in.h:130
+msgid "Hindi"
+msgstr "Hindi"
+
+#: xfree86.xml.in.h:131
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: xfree86.xml.in.h:132
+msgid "Hrv"
+msgstr "Hrv"
+
+#: xfree86.xml.in.h:133
+msgid "Hun"
+msgstr "Hun"
+
+#: xfree86.xml.in.h:134
+msgid "Hungarian"
+msgstr "Hongaars"
+
+#: xfree86.xml.in.h:135
+msgid "Hungarian (qwerty)"
+msgstr "Hongaars (qwerty)"
+
+#: xfree86.xml.in.h:136
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hiper is verbind aan die Win-sleutels."
+
+#: xfree86.xml.in.h:137
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: xfree86.xml.in.h:138
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: xfree86.xml.in.h:139
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (alternate option)"
+
+#: xfree86.xml.in.h:140
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: xfree86.xml.in.h:141
+msgid "INSCRIPT layout"
+msgstr "INSCRIPT-uitleg"
+
+#: xfree86.xml.in.h:142
+msgid "IS434"
+msgstr "IS434"
+
+#: xfree86.xml.in.h:143
+msgid "IS434 laptop"
+msgstr "IS434 laptop"
+
+#: xfree86.xml.in.h:144
+msgid "ISO Alternate"
+msgstr "ISO Alternatief"
+
+#: xfree86.xml.in.h:145
+msgid "Icelandic"
+msgstr "Yslandies"
+
+#: xfree86.xml.in.h:146
+msgid "Iku"
+msgstr "Iku"
+
+#: xfree86.xml.in.h:147
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: xfree86.xml.in.h:148
+msgid "Irish"
+msgstr "Iers"
+
+#: xfree86.xml.in.h:149
+msgid "Irl"
+msgstr "Irl"
+
+#: xfree86.xml.in.h:150
+msgid "Irn"
+msgstr "Irn"
+
+#: xfree86.xml.in.h:151
+msgid "Isl"
+msgstr "Isl"
+
+#: xfree86.xml.in.h:152
+msgid "Isr"
+msgstr "Isr"
+
+#: xfree86.xml.in.h:153
+msgid "Israeli"
+msgstr "Israelies"
+
+#: xfree86.xml.in.h:154
+msgid "Ita"
+msgstr "Ita"
+
+#: xfree86.xml.in.h:155
+msgid "Italian"
+msgstr "Italiaans"
+
+#: xfree86.xml.in.h:156
+msgid "Japanese"
+msgstr "Japanees"
+
+#: xfree86.xml.in.h:157
+msgid "Japanese 106-key"
+msgstr "Japanees 106-sleutel"
+
+#: xfree86.xml.in.h:158
+msgid "Jpn"
+msgstr "Jpn"
+
+#: xfree86.xml.in.h:159
+msgid "Kan"
+msgstr "Kan"
+
+#: xfree86.xml.in.h:160
+msgid "Kannada"
+msgstr "Kannada"
+
+#: xfree86.xml.in.h:161
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: xfree86.xml.in.h:162
+msgid "LAm"
+msgstr "LAm"
+
+#: xfree86.xml.in.h:163
+msgid "Laptop"
+msgstr "Skootrekenaar"
+
+#: xfree86.xml.in.h:164
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+
+#: xfree86.xml.in.h:165
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+
+#: xfree86.xml.in.h:166
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr "Laptop/notebook Dell Inspiron 8xxx"
+
+#: xfree86.xml.in.h:167
+msgid "Latin"
+msgstr "Latyns"
+
+#: xfree86.xml.in.h:168
+msgid "Latin America"
+msgstr "Latyns Amerika"
+
+#: xfree86.xml.in.h:169
+msgid "Latvian"
+msgstr "Latvies"
+
+#: xfree86.xml.in.h:170
+msgid "Left Alt key changes group"
+msgstr "Linkerkant Alt-sleutel verander groep"
+
+#: xfree86.xml.in.h:171
+msgid "Left Ctrl key changes group"
+msgstr "Linkerkant Ctrl-sleutel verander groep"
+
+#: xfree86.xml.in.h:172
+msgid "Left Shift key changes group"
+msgstr "Linkerkant Shift-sleutel verander groep"
+
+#: xfree86.xml.in.h:173
+msgid "Left Win-key changes group"
+msgstr "Linkerkant Win-sleutel verander groep"
+
+#: xfree86.xml.in.h:174
+msgid "Left Win-key switches group while pressed"
+msgstr "Linkerkant Win-sleutel wissel groep terwyl gedruk"
+
+#: xfree86.xml.in.h:175
+msgid "Lithuanian azerty standard"
+msgstr "Lithuaniese azerty standaard"
+
+#: xfree86.xml.in.h:176
+msgid "Lithuanian qwerty \"numeric\""
+msgstr "Lithuanian qwerty \"numeries\""
+
+#: xfree86.xml.in.h:177
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: xfree86.xml.in.h:178
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: xfree86.xml.in.h:179
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: xfree86.xml.in.h:180
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: xfree86.xml.in.h:181
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (alternatiewe opsie)"
+
+#: xfree86.xml.in.h:182
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (alternatiewe opsie2)"
+
+#: xfree86.xml.in.h:183
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: xfree86.xml.in.h:184
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: xfree86.xml.in.h:185
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "Logitech Deluxe Access Keyboard"
+
+#: xfree86.xml.in.h:186
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: xfree86.xml.in.h:187
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: xfree86.xml.in.h:188
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: xfree86.xml.in.h:189
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: xfree86.xml.in.h:190
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Logitech iTouch keyboard Internet Navigator"
+
+#: xfree86.xml.in.h:191
+msgid "Ltu"
+msgstr "Ltu"
+
+#: xfree86.xml.in.h:192
+msgid "Lva"
+msgstr "Lva"
+
+#: xfree86.xml.in.h:193
+msgid "Macedonian"
+msgstr "Masedonies"
+
+#: xfree86.xml.in.h:194
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: xfree86.xml.in.h:195
+msgid "Macintosh Old"
+msgstr "Macintosh (oud)"
+
+#: xfree86.xml.in.h:196
+msgid "Make CapsLock an additional Control"
+msgstr "Maak CapsLock 'n adisionele Kontrole"
+
+#: xfree86.xml.in.h:197
+msgid "Mal"
+msgstr "Mal"
+
+#: xfree86.xml.in.h:198
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: xfree86.xml.in.h:199
+msgid "Maltese"
+msgstr "Maltees"
+
+#: xfree86.xml.in.h:200
+msgid "Maltese (US layout)"
+msgstr "Maltese (VSA-uitleg)"
+
+#: xfree86.xml.in.h:201
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: xfree86.xml.in.h:202
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: xfree86.xml.in.h:203
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: xfree86.xml.in.h:204
+msgid "Menu is Compose"
+msgstr "Kieslys-sleutel is Komponeer"
+
+#: xfree86.xml.in.h:205
+msgid "Menu key changes group"
+msgstr "Kieslyssleutel verander groep"
+
+#: xfree86.xml.in.h:206
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta is verbind aan die Win-sleutels."
+
+#: xfree86.xml.in.h:207
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta is verbind aan die linkerkantste Win-sleutel."
+
+#: xfree86.xml.in.h:208
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internetsleutelbord"
+
+#: xfree86.xml.in.h:209
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Sweeds"
+
+#: xfree86.xml.in.h:210
+msgid "Microsoft Natural"
+msgstr "Microsoft Natuurlik"
+
+#: xfree86.xml.in.h:211
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: xfree86.xml.in.h:212
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: xfree86.xml.in.h:213
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office sleutelbord"
+
+#: xfree86.xml.in.h:214
+msgid "Miscellaneous compatibility options"
+msgstr "Verskeie versoenbaarheid-opsies"
+
+#: xfree86.xml.in.h:215
+msgid "Mkd"
+msgstr "Mkd"
+
+#: xfree86.xml.in.h:216
+msgid "Mlt"
+msgstr "Mlt"
+
+#: xfree86.xml.in.h:217
+msgid "Mmr"
+msgstr "Mmr"
+
+#: xfree86.xml.in.h:218
+msgid "Mng"
+msgstr "Mng"
+
+#: xfree86.xml.in.h:219
+msgid "Mongolian"
+msgstr "Mongolees"
+
+#: xfree86.xml.in.h:220
+msgid "Nld"
+msgstr "Nld"
+
+#: xfree86.xml.in.h:221
+msgid "Nor"
+msgstr "Nor"
+
+#: xfree86.xml.in.h:222
+msgid "Northern Saami (Finland)"
+msgstr "Noordelike Saami (Finland)"
+
+#: xfree86.xml.in.h:223
+msgid "Northern Saami (Norway)"
+msgstr "Noordelike Saami (Noorweë)"
+
+#: xfree86.xml.in.h:224
+msgid "Northern Saami (Sweden)"
+msgstr "Noordelike Saami (Swede)"
+
+#: xfree86.xml.in.h:225
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: xfree86.xml.in.h:226
+msgid "Norwegian"
+msgstr "Noorweegs"
+
+#: xfree86.xml.in.h:227
+msgid "Num_Lock LED shows alternative group"
+msgstr "Num_Lock LED vertoon alternatiewe groep"
+
+#: xfree86.xml.in.h:228
+msgid "Ogh"
+msgstr "Ogh"
+
+#: xfree86.xml.in.h:229
+msgid "Ogham"
+msgstr "Ogham"
+
+#: xfree86.xml.in.h:230
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/Internet keyboard"
+
+#: xfree86.xml.in.h:231
+msgid "Ori"
+msgstr "Ori"
+
+#: xfree86.xml.in.h:232
+msgid "Oriya"
+msgstr "Oriya"
+
+#: xfree86.xml.in.h:233
+msgid "PC-98xx Series"
+msgstr "PC-98xx Reeks"
+
+#: xfree86.xml.in.h:234
+msgid "PC104"
+msgstr "PC104"
+
+#: xfree86.xml.in.h:235
+msgid "Pan"
+msgstr "Pan"
+
+#: xfree86.xml.in.h:236
+msgid "Phonetic"
+msgstr "Foneties"
+
+#: xfree86.xml.in.h:237
+msgid "Pol"
+msgstr "Pol"
+
+#: xfree86.xml.in.h:238
+msgid "Polish"
+msgstr "Pools"
+
+#: xfree86.xml.in.h:239
+msgid "Polish (qwertz)"
+msgstr "Pools (qwertz)"
+
+#: xfree86.xml.in.h:240
+msgid "Polytonic"
+msgstr "Polytonic"
+
+#: xfree86.xml.in.h:241
+msgid "Portuguese"
+msgstr "Portugees"
+
+#: xfree86.xml.in.h:242
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: xfree86.xml.in.h:243
+msgid "Press Left Win-key to choose 3rd level"
+msgstr "Druk Linkerkantste Win-sleutel om die 3de vlak te kies"
+
+#: xfree86.xml.in.h:244
+msgid "Press Menu key to choose 3rd level"
+msgstr "Druk Kieslys-sleutel om die 3de vlak te kies"
+
+#: xfree86.xml.in.h:245
+msgid "Press Right Control to choose 3rd level"
+msgstr "Druk Regterkantste Ctrl-sleutel om die 3de vlak te kies"
+
+#: xfree86.xml.in.h:246
+msgid "Press Right Win-key to choose 3rd level"
+msgstr "Druk Regterkantste Win-sleutel om die 3de vlak te kies"
+
+#: xfree86.xml.in.h:247
+msgid "Press any of Win-keys to choose 3rd level"
+msgstr "Druk enige van die Win-sleutels om die 3de vlak te kies"
+
+#: xfree86.xml.in.h:248
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: xfree86.xml.in.h:249
+msgid "Prt"
+msgstr "Prt"
+
+#: xfree86.xml.in.h:250
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: xfree86.xml.in.h:251
+msgid "R-Alt switches group while pressed"
+msgstr "R-Alt wissel die groep terwyl gedruk"
+
+#: xfree86.xml.in.h:252
+msgid "Right Alt is Compose"
+msgstr "Regterkant Alt is Komponeer"
+
+#: xfree86.xml.in.h:253
+msgid "Right Alt key changes group"
+msgstr "Regterkant Alt-sleutel verander groep"
+
+#: xfree86.xml.in.h:254
+msgid "Right Control key works as Right Alt"
+msgstr "Regterkant Ctrl-sleutel werk soos Regterkant Alt"
+
+#: xfree86.xml.in.h:255
+msgid "Right Ctrl key changes group"
+msgstr "Regterkant Ctrl-sleutel verander groep"
+
+#: xfree86.xml.in.h:256
+msgid "Right Shift key changes group"
+msgstr "Regterkant Shift-sleutel verander groep"
+
+#: xfree86.xml.in.h:257
+msgid "Right Win-key changes group"
+msgstr "Regterkant Win-sleutel verander groep"
+
+#: xfree86.xml.in.h:258
+msgid "Right Win-key is Compose"
+msgstr "Regterkant Win-sleutel is Komponeer"
+
+#: xfree86.xml.in.h:259
+msgid "Right Win-key switches group while pressed"
+msgstr "Regterkant Win-sleutel skakel groep terwyl gedruk"
+
+#: xfree86.xml.in.h:260
+msgid "Romanian"
+msgstr "Romeens"
+
+#: xfree86.xml.in.h:261
+msgid "Rou"
+msgstr "Rou"
+
+#: xfree86.xml.in.h:262
+msgid "Rus"
+msgstr "Rus"
+
+#: xfree86.xml.in.h:263
+msgid "Russian"
+msgstr "Russies"
+
+#: xfree86.xml.in.h:264
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: xfree86.xml.in.h:265
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: xfree86.xml.in.h:266
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: xfree86.xml.in.h:267
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: xfree86.xml.in.h:268
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: xfree86.xml.in.h:269
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: xfree86.xml.in.h:270
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: xfree86.xml.in.h:271
+msgid "Sapmi"
+msgstr "Sapmi"
+
+#: xfree86.xml.in.h:272
+msgid "Scg"
+msgstr "Scg"
+
+#: xfree86.xml.in.h:273
+msgid "Scroll_Lock LED shows alternative group"
+msgstr "Scroll_Lock LED wys alternatiewe groep"
+
+#: xfree86.xml.in.h:274
+msgid "Serbian"
+msgstr "Serbies"
+
+#: xfree86.xml.in.h:275
+msgid "Shift with numpad keys works as in MS Windows"
+msgstr "Shift met numeriese sleutels werk soos in MS Windows"
+
+#: xfree86.xml.in.h:276
+msgid "Slovak"
+msgstr "Slovaaks"
+
+#: xfree86.xml.in.h:277
+msgid "Slovak (qwerty)"
+msgstr "Slovaaks (qwerty)"
+
+#: xfree86.xml.in.h:278
+msgid "Slovenian"
+msgstr "Sloveens"
+
+#: xfree86.xml.in.h:279
+msgid "Sme"
+msgstr "Sme"
+
+#: xfree86.xml.in.h:280
+msgid "Spanish"
+msgstr "Spaans"
+
+#: xfree86.xml.in.h:281
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Spesiale sleutels (Ctrl+Alt+&lt;sleutel&gt;) word hanteer in 'n bediener."
+
+#: xfree86.xml.in.h:282
+msgid "Standard"
+msgstr "Standaard"
+
+#: xfree86.xml.in.h:283
+msgid "Sun dead keys"
+msgstr "Sun (dooie sleutels)"
+
+#: xfree86.xml.in.h:284
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super is verbind aan die Win-sleutels (verstek)."
+
+#: xfree86.xml.in.h:285
+msgid "Sv"
+msgstr "Sv"
+
+#: xfree86.xml.in.h:286
+msgid "Svk"
+msgstr "Svk"
+
+#: xfree86.xml.in.h:287
+msgid "Svn"
+msgstr "Svn"
+
+#: xfree86.xml.in.h:288
+msgid "Swap Control and Caps Lock"
+msgstr "Ruil Ctrl en CapsLock om"
+
+#: xfree86.xml.in.h:289
+msgid "Swe"
+msgstr "Swe"
+
+#: xfree86.xml.in.h:290
+msgid "Swedish"
+msgstr "Sweeds"
+
+#: xfree86.xml.in.h:291
+msgid "Swiss French"
+msgstr "Switserse Frans"
+
+#: xfree86.xml.in.h:292
+msgid "Swiss German"
+msgstr "Switserse Duits"
+
+#: xfree86.xml.in.h:293
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: xfree86.xml.in.h:294
+msgid "Syr"
+msgstr "Syr"
+
+#: xfree86.xml.in.h:295
+msgid "Syriac"
+msgstr "Siries"
+
+#: xfree86.xml.in.h:296
+msgid "Tajik"
+msgstr "Tajikees"
+
+#: xfree86.xml.in.h:297
+msgid "Tamil"
+msgstr "Tamilees"
+
+#: xfree86.xml.in.h:298
+msgid "Tel"
+msgstr "Tel"
+
+#: xfree86.xml.in.h:299
+msgid "Telugu"
+msgstr "Telugu"
+
+#: xfree86.xml.in.h:300
+msgid "Tha"
+msgstr "Tha"
+
+#: xfree86.xml.in.h:301
+msgid "Thai (Kedmanee)"
+msgstr "Thai (Kedmanee)"
+
+#: xfree86.xml.in.h:302
+msgid "Thai (Pattachote)"
+msgstr "Thai (Pattachote)"
+
+#: xfree86.xml.in.h:303
+msgid "Thai (TIS-820.2538)"
+msgstr "Thai (TIS-820.2538)"
+
+#: xfree86.xml.in.h:304
+msgid "Third level choosers"
+msgstr "Derdevlak kiesers"
+
+#: xfree86.xml.in.h:305
+msgid "Tjk"
+msgstr "Tjk"
+
+#: xfree86.xml.in.h:306
+msgid "Tml"
+msgstr "Tml"
+
+#: xfree86.xml.in.h:307
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: xfree86.xml.in.h:308
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: xfree86.xml.in.h:309
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: xfree86.xml.in.h:310
+msgid "Tur"
+msgstr "Tur"
+
+#: xfree86.xml.in.h:311
+msgid "Turkish"
+msgstr "Turks"
+
+#: xfree86.xml.in.h:312
+msgid "Turkish (F)"
+msgstr "Turks (F)"
+
+#: xfree86.xml.in.h:313
+msgid "Turkish Alt-Q Layout"
+msgstr "Turks Alt-Q-uitleg"
+
+#: xfree86.xml.in.h:314
+msgid "U.S. English"
+msgstr "VSA Engels"
+
+#: xfree86.xml.in.h:315
+msgid "U.S. English w/ ISO9995-3"
+msgstr "VSA Engels met ISO9995-3"
+
+#: xfree86.xml.in.h:316
+msgid "U.S. English w/ dead keys"
+msgstr "VSA Engels met dooie sleutels"
+
+#: xfree86.xml.in.h:317
+msgid "US"
+msgstr "VSA"
+
+#: xfree86.xml.in.h:318
+msgid "US keyboard with Romanian letters"
+msgstr "VSA sleutelbord met Romeense letters"
+
+#: xfree86.xml.in.h:319
+msgid "USA"
+msgstr "VSA"
+
+#: xfree86.xml.in.h:320
+msgid "Ukr"
+msgstr "Ukr"
+
+#: xfree86.xml.in.h:321
+msgid "Ukrainian"
+msgstr "Ukraïnies"
+
+#: xfree86.xml.in.h:322
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: xfree86.xml.in.h:323
+msgid "United Kingdom"
+msgstr "Vereenigde Koninkryk"
+
+#: xfree86.xml.in.h:324
+msgid "Use keyboard LED to show alternative group"
+msgstr "Gebruik sleutelbord LED om alternatiewe groep te wys"
+
+#: xfree86.xml.in.h:325
+msgid "Uses internal capitalization. Shift cancels Caps."
+msgstr "Gebruik interne bokas. Shift kanseleer Caps."
+
+#: xfree86.xml.in.h:326
+msgid "Uses internal capitalization. Shift doesn't cancel Caps."
+msgstr "Gebruik interne bokas. Shift kanseleer nie Caps nie."
+
+#: xfree86.xml.in.h:327
+msgid "Uzb"
+msgstr "Uzb"
+
+#: xfree86.xml.in.h:328
+msgid "Uzbek"
+msgstr "Uzbek"
+
+#: xfree86.xml.in.h:329
+msgid "Vietnamese"
+msgstr "Viëtnamees"
+
+#: xfree86.xml.in.h:330
+msgid "Vnm"
+msgstr "Vnm"
+
+#: xfree86.xml.in.h:331
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: xfree86.xml.in.h:332
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: xfree86.xml.in.h:333
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internetsleutelbord"
+
+#: xfree86.xml.in.h:334
+msgid "Yug"
+msgstr "Yug"
+
+#: xfree86.xml.in.h:335
+msgid "Yugoslavian"
+msgstr "Joegoslaafs"
+
+#: xfree86.xml.in.h:336
+msgid "abnt2"
+msgstr "abnt2"
+
+#: xfree86.xml.in.h:337
+msgid "azerty"
+msgstr "azerty"
+
+#: xfree86.xml.in.h:338
+msgid "azerty/digits"
+msgstr "azerty/syfers"
+
+#: xfree86.xml.in.h:339
+msgid "bksl"
+msgstr "bksl"
+
+#: xfree86.xml.in.h:340
+msgid "digits"
+msgstr "syfers"
+
+#: xfree86.xml.in.h:341
+msgid "l2/101/qwerty/comma"
+msgstr "l2/101/qwerty/komma"
+
+#: xfree86.xml.in.h:342
+msgid "l2/101/qwerty/dot"
+msgstr "l2/101/qwerty/dot"
+
+#: xfree86.xml.in.h:343
+msgid "l2/101/qwertz/comma"
+msgstr "l2/101/qwertz/komma"
+
+#: xfree86.xml.in.h:344
+msgid "l2/101/qwertz/dot"
+msgstr "l2/101/qwertz/dot"
+
+#: xfree86.xml.in.h:345
+msgid "l2/102/qwerty/comma"
+msgstr "l2/102/qwerty/komma"
+
+#: xfree86.xml.in.h:346
+msgid "l2/102/qwerty/dot"
+msgstr "l2/102/qwerty/dot"
+
+#: xfree86.xml.in.h:347
+msgid "l2/102/qwertz/comma"
+msgstr "l2/102/qwertz/komma"
+
+#: xfree86.xml.in.h:348
+msgid "l2/102/qwertz/dot"
+msgstr "l2/102/qwertz/dot"
+
+#: xfree86.xml.in.h:349
+msgid "laptop"
+msgstr "skootrekenaar"
+
+#: xfree86.xml.in.h:350
+msgid "lyx"
+msgstr "lyx"
+
+#: xfree86.xml.in.h:351
+msgid "qwerty"
+msgstr "qwerty"
+
+#: xfree86.xml.in.h:352
+msgid "qwerty/digits"
+msgstr "qwerty/syfers"
+
+#: xfree86.xml.in.h:353
+msgid "sefi"
+msgstr "sefi"
+
+#: xfree86.xml.in.h:354
+msgid "si1452"
+msgstr "si1452"
+
+#: xfree86.xml.in.h:355
+msgid "uni/101/qwerty/comma"
+msgstr "uni/101/qwerty/komma"
+
+#: xfree86.xml.in.h:356
+msgid "uni/101/qwerty/dot"
+msgstr "uni/101/qwerty/dot"
+
+#: xfree86.xml.in.h:357
+msgid "uni/101/qwertz/comma"
+msgstr "uni/101/qwertz/komma"
+
+#: xfree86.xml.in.h:358
+msgid "uni/101/qwertz/dot"
+msgstr "uni/101/qwertz/dot"
+
+#: xfree86.xml.in.h:359
+msgid "uni/102/qwerty/comma"
+msgstr "uni/102/qwerty/komma"
+
+#: xfree86.xml.in.h:360
+msgid "uni/102/qwerty/dot"
+msgstr "uni/102/qwerty/dot"
+
+#: xfree86.xml.in.h:361
+msgid "uni/102/qwertz/comma"
+msgstr "uni/102/qwertz/comma"
+
+#: xfree86.xml.in.h:362
+msgid "uni/102/qwertz/dot"
+msgstr "uni/102/qwertz/dot"
diff --git a/xorg-server/xkeyboard-config/po/az.po b/xorg-server/xkeyboard-config/po/az.po
index d15d1bf64..adb65b123 100644
--- a/xorg-server/xkeyboard-config/po/az.po
+++ b/xorg-server/xkeyboard-config/po/az.po
@@ -1,1465 +1,1465 @@
-# Translation of 'xfree86+xkb+xml' messages to Azerbaijani.
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# This file is put in the public domain.
-# MÉ™tin Æmirov <metin@karegen.com>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xfree86_xkb_xml-4.4pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2003-11-25 23:38+0000\n"
-"PO-Revision-Date: 2004-03-21 20:00+0200\n"
-"Last-Translator: Metin Amiroff <metin@karegen.com>\n"
-"Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.0.2\n"
-
-#: xfree86.xml.in.h:1
-msgid "\"Typewriter\""
-msgstr "\"Yazı Makinası\""
-
-#: xfree86.xml.in.h:2
-msgid "A Tamil typewrite-style keymap; TAB encoding"
-msgstr "Tamil yazı makinası tərzində düzülüş TAB kodlaması"
-
-#: xfree86.xml.in.h:3
-msgid "A Tamil typewrite-style keymap; TSCII encoding"
-msgstr "Tamil yazı makinası tərzində düzülüş TSCII kodlaması"
-
-#: xfree86.xml.in.h:4
-msgid "A Tamil typewrite-style keymap; Unicode encoding"
-msgstr "Tamil yazı makinası tərzində düzülüş Yunikod kodlaması"
-
-#: xfree86.xml.in.h:5
-msgid "ACPI Standard"
-msgstr "ACPI Standartı"
-
-#: xfree86.xml.in.h:6
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: xfree86.xml.in.h:7
-msgid "Acts as Shift with locking. Shift cancels Caps."
-msgstr "Qıfıllı Shift kimi davranır. Shift Caps-i ləğv edir."
-
-#: xfree86.xml.in.h:8
-msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
-msgstr "Qıfıllı Shift kimi davranır. Shift Caps-i ləğv etmir."
-
-#: xfree86.xml.in.h:9
-msgid "Add the standard behavior to Menu key."
-msgstr "Menyu düyməsinə standart davranış əlavə et."
-
-#: xfree86.xml.in.h:10
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: xfree86.xml.in.h:11
-msgid "Alb"
-msgstr "Alb"
-
-#: xfree86.xml.in.h:12
-msgid "Albanian"
-msgstr "Albanca"
-
-#: xfree86.xml.in.h:13
-msgid "Alt and Meta on the Alt keys (default)."
-msgstr "Alt düymələri üstündə Alt və Meta (ön qurğulu)."
-
-#: xfree86.xml.in.h:14
-msgid "Alt+Control changes group"
-msgstr "Alt+Control düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:15
-msgid "Alt+Shift changes group"
-msgstr "Alt+Shift düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:16
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win düyməsinin davranışları"
-
-#: xfree86.xml.in.h:17
-msgid "Alternate"
-msgstr "ÆvÉ™z Et"
-
-#: xfree86.xml.in.h:18
-msgid "Arabic"
-msgstr "ÆrÉ™bcÉ™"
-
-#: xfree86.xml.in.h:19
-msgid "Arb"
-msgstr "Ærb"
-
-#: xfree86.xml.in.h:20
-msgid "Arm"
-msgstr "Erm"
-
-#: xfree86.xml.in.h:21
-msgid "Armenian"
-msgstr "Ermənicə"
-
-#: xfree86.xml.in.h:22
-msgid "Aze"
-msgstr "AzÉ™"
-
-#: xfree86.xml.in.h:23
-msgid "Azerbaijani"
-msgstr "Azərbaycanca"
-
-#: xfree86.xml.in.h:24
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: xfree86.xml.in.h:25
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: xfree86.xml.in.h:26
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: xfree86.xml.in.h:27
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: xfree86.xml.in.h:28
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: xfree86.xml.in.h:29
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: xfree86.xml.in.h:30
-msgid "Basic"
-msgstr "Æsas"
-
-#: xfree86.xml.in.h:31
-msgid "Bel"
-msgstr "Bel"
-
-#: xfree86.xml.in.h:32
-msgid "Belarusian"
-msgstr "Belarusca"
-
-#: xfree86.xml.in.h:33
-msgid "Belgian"
-msgstr "Belçikaca"
-
-#: xfree86.xml.in.h:34
-msgid "Ben"
-msgstr "Ben"
-
-#: xfree86.xml.in.h:35
-msgid "Bengali"
-msgstr "Benqalca"
-
-#: xfree86.xml.in.h:36
-msgid "Bgr"
-msgstr "Bgr"
-
-#: xfree86.xml.in.h:37
-msgid "Bih"
-msgstr "Bih"
-
-#: xfree86.xml.in.h:38
-msgid "Blr"
-msgstr "Blr"
-
-#: xfree86.xml.in.h:39
-msgid "Bosnian"
-msgstr "Bosniyaca"
-
-#: xfree86.xml.in.h:40
-msgid "Both Alt keys together change group"
-msgstr "İki Alt düyməsi də bərabər qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:41
-msgid "Both Ctrl keys together change group"
-msgstr "İki Ctrl düyməsi də bərabər qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:42
-msgid "Both Shift keys together change group"
-msgstr "Hər iki Shift düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:43
-msgid "Both Win-keys switch group while pressed"
-msgstr "İki Win düyməsi də basılı olduğu müddətcə qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:44
-msgid "Bra"
-msgstr "Bra"
-
-#: xfree86.xml.in.h:45
-msgid "Brazilian"
-msgstr "Brazilya düzülüşü"
-
-#: xfree86.xml.in.h:46
-msgid "Brazilian ABNT2"
-msgstr "Brazilya düzülüşü ABNT2"
-
-#: xfree86.xml.in.h:47
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: xfree86.xml.in.h:48
-msgid "Bulgarian"
-msgstr "Bolqarca"
-
-#: xfree86.xml.in.h:49
-msgid "Burmese"
-msgstr "Burmaca"
-
-#: xfree86.xml.in.h:50
-msgid "Can"
-msgstr "Kan"
-
-#: xfree86.xml.in.h:51
-msgid "Canadian"
-msgstr "Kanada düzülüşü"
-
-#: xfree86.xml.in.h:52
-msgid "Caps Lock key changes group"
-msgstr "Caps Lock düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:53
-msgid "CapsLock key behavior"
-msgstr "CapsLock düyməsinin davranışı"
-
-#: xfree86.xml.in.h:54
-msgid "Caps_Lock LED shows alternative group"
-msgstr "Caps_Lock LED-ləri alternativ qrupları göstərir"
-
-#: xfree86.xml.in.h:55
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: xfree86.xml.in.h:56
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternate option)"
-
-#: xfree86.xml.in.h:57
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: xfree86.xml.in.h:58
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: xfree86.xml.in.h:59
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: xfree86.xml.in.h:60
-msgid "CloGaelach Laptop"
-msgstr "CloGaelach Laptop"
-
-#: xfree86.xml.in.h:61
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: xfree86.xml.in.h:62
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 düymə)"
-
-#: xfree86.xml.in.h:63
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 düymə)"
-
-#: xfree86.xml.in.h:64
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 düymə)"
-
-#: xfree86.xml.in.h:65
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: xfree86.xml.in.h:66
-msgid "Control Key Position"
-msgstr "Control Düyməsinin Yeri"
-
-#: xfree86.xml.in.h:67
-msgid "Control key at bottom left"
-msgstr "Control düyməsi sol altda"
-
-#: xfree86.xml.in.h:68
-msgid "Control key at left of 'A'"
-msgstr "Control düyməsi 'A' hərfinin solunda"
-
-#: xfree86.xml.in.h:69
-msgid "Control+Shift changes group"
-msgstr "Control+Shift düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:70
-msgid "Croatian"
-msgstr "Xorvatca"
-
-#: xfree86.xml.in.h:71
-msgid "Cyrillic"
-msgstr "Kiril"
-
-#: xfree86.xml.in.h:72
-msgid "Cze"
-msgstr "Çex"
-
-#: xfree86.xml.in.h:73
-msgid "Czech"
-msgstr "Çexcə"
-
-#: xfree86.xml.in.h:74
-msgid "Czech (qwerty)"
-msgstr "Çexcə (qwerty)"
-
-#: xfree86.xml.in.h:75
-msgid "Danish"
-msgstr "Danimarkaca"
-
-#: xfree86.xml.in.h:76
-msgid "Dead acute"
-msgstr "Dead acute"
-
-#: xfree86.xml.in.h:77
-msgid "Dead grave acute"
-msgstr "Dead grave acute"
-
-#: xfree86.xml.in.h:78
-msgid "Dell"
-msgstr "Dell"
-
-#: xfree86.xml.in.h:79
-msgid "Dell 101-key PC"
-msgstr "Dell 101-key PC"
-
-#: xfree86.xml.in.h:80
-msgid "Deu"
-msgstr "Deu"
-
-#: xfree86.xml.in.h:81
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: xfree86.xml.in.h:82
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 seryaları"
-
-#: xfree86.xml.in.h:83
-msgid "Dnk"
-msgstr "Dnk"
-
-#: xfree86.xml.in.h:84
-msgid "Dutch"
-msgstr "Niderlandca"
-
-#: xfree86.xml.in.h:85
-msgid "Dvo"
-msgstr "Dvo"
-
-#: xfree86.xml.in.h:86
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: xfree86.xml.in.h:87
-msgid "Eliminate dead keys"
-msgstr "Ölü düymələri sayma"
-
-#: xfree86.xml.in.h:88
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: xfree86.xml.in.h:89
-msgid "Esp"
-msgstr "Ä°sp"
-
-#: xfree86.xml.in.h:90
-msgid "Est"
-msgstr "Est"
-
-#: xfree86.xml.in.h:91
-msgid "Estonian"
-msgstr "Estonca"
-
-#: xfree86.xml.in.h:92
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: xfree86.xml.in.h:93
-msgid "Extended"
-msgstr "Uzadılmış"
-
-#: xfree86.xml.in.h:94
-msgid "Fao"
-msgstr "Fao"
-
-#: xfree86.xml.in.h:95
-msgid "Faroese"
-msgstr "FaroescÉ™"
-
-#: xfree86.xml.in.h:96
-msgid "Farsi"
-msgstr "Farsca"
-
-#: xfree86.xml.in.h:97
-msgid "Fin"
-msgstr "Fin"
-
-#: xfree86.xml.in.h:98
-msgid "Finnish"
-msgstr "FincÉ™"
-
-#: xfree86.xml.in.h:99
-msgid "Fra"
-msgstr "Fra"
-
-#: xfree86.xml.in.h:100
-msgid "French"
-msgstr "Fransızca"
-
-#: xfree86.xml.in.h:101
-msgid "French (alternative)"
-msgstr "Fransızca (alternativ)"
-
-#: xfree86.xml.in.h:102
-msgid "French Canadian"
-msgstr "Kanada Fransızcası"
-
-#: xfree86.xml.in.h:103
-msgid "GBr"
-msgstr "GBr"
-
-#: xfree86.xml.in.h:104
-msgid "Generic 101-key PC"
-msgstr "Generic 101-key PC"
-
-#: xfree86.xml.in.h:105
-msgid "Generic 102-key (Intl) PC"
-msgstr "Generic 102-key (Intl) PC"
-
-#: xfree86.xml.in.h:106
-msgid "Generic 104-key PC"
-msgstr "Generic 104-key PC"
-
-#: xfree86.xml.in.h:107
-msgid "Generic 105-key (Intl) PC"
-msgstr "Generic 105-key (Intl) PC"
-
-#: xfree86.xml.in.h:108
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: xfree86.xml.in.h:109
-msgid "Geo"
-msgstr "Gür"
-
-#: xfree86.xml.in.h:110
-msgid "Georgian (latin)"
-msgstr "Gürcücə (latın)"
-
-#: xfree86.xml.in.h:111
-msgid "Georgian (russian)"
-msgstr "Gürcücə (kiril)"
-
-#: xfree86.xml.in.h:112
-msgid "German"
-msgstr "Almaca"
-
-#: xfree86.xml.in.h:113
-msgid "Grc"
-msgstr "Yun"
-
-#: xfree86.xml.in.h:114
-msgid "Greek"
-msgstr "Yunanca"
-
-#: xfree86.xml.in.h:115
-msgid "Group Shift/Lock behavior"
-msgstr "Shift/Lock Qrupu Davranışı"
-
-#: xfree86.xml.in.h:116
-msgid "Guj"
-msgstr "Guj"
-
-#: xfree86.xml.in.h:117
-msgid "Gujarati"
-msgstr "GujaraticÉ™"
-
-#: xfree86.xml.in.h:118
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: xfree86.xml.in.h:119
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: xfree86.xml.in.h:120
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: xfree86.xml.in.h:121
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: xfree86.xml.in.h:122
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: xfree86.xml.in.h:123
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: xfree86.xml.in.h:124
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: xfree86.xml.in.h:125
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: xfree86.xml.in.h:126
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: xfree86.xml.in.h:127
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
-
-#: xfree86.xml.in.h:128
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#: xfree86.xml.in.h:129
-msgid "Hin"
-msgstr "Hin"
-
-#: xfree86.xml.in.h:130
-msgid "Hindi"
-msgstr "Hindi"
-
-#: xfree86.xml.in.h:131
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: xfree86.xml.in.h:132
-msgid "Hrv"
-msgstr "Xrv"
-
-#: xfree86.xml.in.h:133
-msgid "Hun"
-msgstr "Mac"
-
-#: xfree86.xml.in.h:134
-msgid "Hungarian"
-msgstr "Macarca"
-
-#: xfree86.xml.in.h:135
-msgid "Hungarian (qwerty)"
-msgstr "Macarca (qwerty)"
-
-#: xfree86.xml.in.h:136
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper Win düymələrinə xəritələnib."
-
-#: xfree86.xml.in.h:137
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: xfree86.xml.in.h:138
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: xfree86.xml.in.h:139
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (alternate option)"
-
-#: xfree86.xml.in.h:140
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: xfree86.xml.in.h:141
-msgid "INSCRIPT layout"
-msgstr "INSCRIPT düzülüşü"
-
-#: xfree86.xml.in.h:142
-msgid "IS434"
-msgstr "IS434"
-
-#: xfree86.xml.in.h:143
-msgid "IS434 laptop"
-msgstr "IS434 laptop"
-
-#: xfree86.xml.in.h:144
-msgid "ISO Alternate"
-msgstr "ISO Alternate"
-
-#: xfree86.xml.in.h:145
-msgid "Icelandic"
-msgstr "Icelandic"
-
-#: xfree86.xml.in.h:146
-msgid "Iku"
-msgstr "Ä°ku"
-
-#: xfree86.xml.in.h:147
-msgid "Inuktitut"
-msgstr "Ä°nuktitut"
-
-#: xfree86.xml.in.h:148
-msgid "Irish"
-msgstr "Ä°rlandca"
-
-#: xfree86.xml.in.h:149
-msgid "Irl"
-msgstr "Ä°rl"
-
-#: xfree86.xml.in.h:150
-msgid "Irn"
-msgstr "Ä°rn"
-
-#: xfree86.xml.in.h:151
-msgid "Isl"
-msgstr "Ä°sl"
-
-#: xfree86.xml.in.h:152
-msgid "Isr"
-msgstr "Ä°sr"
-
-#: xfree86.xml.in.h:153
-msgid "Israeli"
-msgstr "Yəhudicə"
-
-#: xfree86.xml.in.h:154
-msgid "Ita"
-msgstr "Ä°ta"
-
-#: xfree86.xml.in.h:155
-msgid "Italian"
-msgstr "Ä°talyanca"
-
-#: xfree86.xml.in.h:156
-msgid "Japanese"
-msgstr "Yaponca"
-
-#: xfree86.xml.in.h:157
-msgid "Japanese 106-key"
-msgstr "Yaponca 106-düymə"
-
-#: xfree86.xml.in.h:158
-msgid "Jpn"
-msgstr "Ypn"
-
-#: xfree86.xml.in.h:159
-msgid "Kan"
-msgstr "Kan"
-
-#: xfree86.xml.in.h:160
-msgid "Kannada"
-msgstr "Kannada"
-
-#: xfree86.xml.in.h:161
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: xfree86.xml.in.h:162
-msgid "LAm"
-msgstr "LAm"
-
-#: xfree86.xml.in.h:163
-msgid "Laptop"
-msgstr "Laptop"
-
-#: xfree86.xml.in.h:164
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (məs. Armada) Laptop Klaviaturası"
-
-#: xfree86.xml.in.h:165
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (məs. Presario) İnternet Klaviaturası"
-
-#: xfree86.xml.in.h:166
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr "Laptop/notebook Dell Inspiron 8xxx"
-
-#: xfree86.xml.in.h:167
-msgid "Latin"
-msgstr "Latın"
-
-#: xfree86.xml.in.h:168
-msgid "Latin America"
-msgstr "Latın Amerika"
-
-#: xfree86.xml.in.h:169
-msgid "Latvian"
-msgstr "Latışca"
-
-#: xfree86.xml.in.h:170
-msgid "Left Alt key changes group"
-msgstr "Sol Alt düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:171
-msgid "Left Ctrl key changes group"
-msgstr "Sol Ctrl düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:172
-msgid "Left Shift key changes group"
-msgstr "Sol Shift düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:173
-msgid "Left Win-key changes group"
-msgstr "Sol Win düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:174
-msgid "Left Win-key switches group while pressed"
-msgstr "Sol Win düyməsi basılı olduğu müddətcə qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:175
-msgid "Lithuanian azerty standard"
-msgstr "Litovca azerty standart"
-
-#: xfree86.xml.in.h:176
-msgid "Lithuanian qwerty \"numeric\""
-msgstr "Litovca qwerty \"numeric\""
-
-#: xfree86.xml.in.h:177
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: xfree86.xml.in.h:178
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: xfree86.xml.in.h:179
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: xfree86.xml.in.h:180
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: xfree86.xml.in.h:181
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (alternate option)"
-
-#: xfree86.xml.in.h:182
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (alternate option2)"
-
-#: xfree86.xml.in.h:183
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: xfree86.xml.in.h:184
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: xfree86.xml.in.h:185
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "Logitech Deluxe Access Keyboard"
-
-#: xfree86.xml.in.h:186
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: xfree86.xml.in.h:187
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: xfree86.xml.in.h:188
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: xfree86.xml.in.h:189
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: xfree86.xml.in.h:190
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Logitech iTouch keyboard Internet Navigator"
-
-#: xfree86.xml.in.h:191
-msgid "Ltu"
-msgstr "Ltu"
-
-#: xfree86.xml.in.h:192
-msgid "Lva"
-msgstr "Lva"
-
-#: xfree86.xml.in.h:193
-msgid "Macedonian"
-msgstr "Makedonca"
-
-#: xfree86.xml.in.h:194
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: xfree86.xml.in.h:195
-msgid "Macintosh Old"
-msgstr "Macintosh Old"
-
-#: xfree86.xml.in.h:196
-msgid "Make CapsLock an additional Control"
-msgstr "CapsLock düyməsini əlavə idarə olaraq tə'yin et"
-
-#: xfree86.xml.in.h:197
-msgid "Mal"
-msgstr "Mal"
-
-#: xfree86.xml.in.h:198
-msgid "Malayalam"
-msgstr "Malayalamca"
-
-#: xfree86.xml.in.h:199
-msgid "Maltese"
-msgstr "Maltaca"
-
-#: xfree86.xml.in.h:200
-msgid "Maltese (US layout)"
-msgstr "Maltaca (ABŞ düzülüşü)"
-
-#: xfree86.xml.in.h:201
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: xfree86.xml.in.h:202
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: xfree86.xml.in.h:203
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: xfree86.xml.in.h:204
-msgid "Menu is Compose"
-msgstr "Menyu yazma düyməsidir"
-
-#: xfree86.xml.in.h:205
-msgid "Menu key changes group"
-msgstr "Menü düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:206
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta Win düymələrinə xəritələnib."
-
-#: xfree86.xml.in.h:207
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta sol Win düyməsinə xəritələnib."
-
-#: xfree86.xml.in.h:208
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: xfree86.xml.in.h:209
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Swedish"
-
-#: xfree86.xml.in.h:210
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: xfree86.xml.in.h:211
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: xfree86.xml.in.h:212
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: xfree86.xml.in.h:213
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: xfree86.xml.in.h:214
-msgid "Miscellaneous compatibility options"
-msgstr "Müxtəlif yetişmə qabiliyyəti seçimləri"
-
-#: xfree86.xml.in.h:215
-msgid "Mkd"
-msgstr "Mkd"
-
-#: xfree86.xml.in.h:216
-msgid "Mlt"
-msgstr "Mlt"
-
-#: xfree86.xml.in.h:217
-msgid "Mmr"
-msgstr "Mmr"
-
-#: xfree86.xml.in.h:218
-msgid "Mng"
-msgstr "Mng"
-
-#: xfree86.xml.in.h:219
-msgid "Mongolian"
-msgstr "Monqolca"
-
-#: xfree86.xml.in.h:220
-msgid "Nld"
-msgstr "Nld"
-
-#: xfree86.xml.in.h:221
-msgid "Nor"
-msgstr "Nor"
-
-#: xfree86.xml.in.h:222
-msgid "Northern Saami (Finland)"
-msgstr "Åžimali Saami (Finlandiya)"
-
-#: xfree86.xml.in.h:223
-msgid "Northern Saami (Norway)"
-msgstr "Şimali Saami (Norveç)"
-
-#: xfree86.xml.in.h:224
-msgid "Northern Saami (Sweden)"
-msgstr "Şimali Saami (İsveç)"
-
-#: xfree86.xml.in.h:225
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: xfree86.xml.in.h:226
-msgid "Norwegian"
-msgstr "Norveçcə"
-
-#: xfree86.xml.in.h:227
-msgid "Num_Lock LED shows alternative group"
-msgstr "Num_Lock LED-ləri alternativ qrupları göstərir"
-
-#: xfree86.xml.in.h:228
-msgid "Ogh"
-msgstr "Ogh"
-
-#: xfree86.xml.in.h:229
-msgid "Ogham"
-msgstr "Ogham"
-
-#: xfree86.xml.in.h:230
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/Internet keyboard"
-
-#: xfree86.xml.in.h:231
-msgid "Ori"
-msgstr "Ori"
-
-#: xfree86.xml.in.h:232
-msgid "Oriya"
-msgstr "Oriya"
-
-#: xfree86.xml.in.h:233
-msgid "PC-98xx Series"
-msgstr "PC-98xx Seriyaları"
-
-#: xfree86.xml.in.h:234
-msgid "PC104"
-msgstr "PC104"
-
-#: xfree86.xml.in.h:235
-msgid "Pan"
-msgstr "Pan"
-
-#: xfree86.xml.in.h:236
-msgid "Phonetic"
-msgstr "Fonetik"
-
-#: xfree86.xml.in.h:237
-msgid "Pol"
-msgstr "Pol"
-
-#: xfree86.xml.in.h:238
-msgid "Polish"
-msgstr "Polyakca"
-
-#: xfree86.xml.in.h:239
-msgid "Polish (qwertz)"
-msgstr "Polyakca (qwertz)"
-
-#: xfree86.xml.in.h:240
-msgid "Polytonic"
-msgstr "Politonik"
-
-#: xfree86.xml.in.h:241
-msgid "Portuguese"
-msgstr "Portuqalca"
-
-#: xfree86.xml.in.h:242
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: xfree86.xml.in.h:243
-msgid "Press Left Win-key to choose 3rd level"
-msgstr "3-cü səviyyəni seçmək üçün sol Win düyməsinə basılsın"
-
-#: xfree86.xml.in.h:244
-msgid "Press Menu key to choose 3rd level"
-msgstr "3-cü səviyyəni seçmək üçün sağ menyuya basılsın"
-
-#: xfree86.xml.in.h:245
-msgid "Press Right Control to choose 3rd level"
-msgstr "3-cü səviyyəni seçmək üçün sağ Control düyməsinə basılsın"
-
-#: xfree86.xml.in.h:246
-msgid "Press Right Win-key to choose 3rd level"
-msgstr "3-cü səviyyəni seçmək üçün sağ Win düyməsinə basılsın"
-
-#: xfree86.xml.in.h:247
-msgid "Press any of Win-keys to choose 3rd level"
-msgstr "3-cü səviyyəni seçmək üçün hər hansı bir Win düyməsinə basılsın"
-
-#: xfree86.xml.in.h:248
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: xfree86.xml.in.h:249
-msgid "Prt"
-msgstr "Prt"
-
-#: xfree86.xml.in.h:250
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: xfree86.xml.in.h:251
-msgid "R-Alt switches group while pressed"
-msgstr "R-Alt basılı olduğu müddətcə qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:252
-msgid "Right Alt is Compose"
-msgstr "Sağ Alt düyməsi yazma düyməsidir"
-
-#: xfree86.xml.in.h:253
-msgid "Right Alt key changes group"
-msgstr "Sağ Alt düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:254
-msgid "Right Control key works as Right Alt"
-msgstr "Sağ Control düyməsi sağ Alt kimi işləyir"
-
-#: xfree86.xml.in.h:255
-msgid "Right Ctrl key changes group"
-msgstr "Sağ Ctrl düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:256
-msgid "Right Shift key changes group"
-msgstr "Sağ Shift düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:257
-msgid "Right Win-key changes group"
-msgstr "Sağ Win düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:258
-msgid "Right Win-key is Compose"
-msgstr "Sağ Win düyməsi yazma düyməsidir"
-
-#: xfree86.xml.in.h:259
-msgid "Right Win-key switches group while pressed"
-msgstr "Sağ Win düyməsi basılı olduğu müddətcə qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:260
-msgid "Romanian"
-msgstr "Rumınca"
-
-#: xfree86.xml.in.h:261
-msgid "Rou"
-msgstr "Rou"
-
-#: xfree86.xml.in.h:262
-msgid "Rus"
-msgstr "Rus"
-
-#: xfree86.xml.in.h:263
-msgid "Russian"
-msgstr "Rusca"
-
-#: xfree86.xml.in.h:264
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: xfree86.xml.in.h:265
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: xfree86.xml.in.h:266
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: xfree86.xml.in.h:267
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: xfree86.xml.in.h:268
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: xfree86.xml.in.h:269
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: xfree86.xml.in.h:270
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: xfree86.xml.in.h:271
-msgid "Sapmi"
-msgstr "Sapmi"
-
-#: xfree86.xml.in.h:272
-msgid "Scg"
-msgstr "Scg"
-
-#: xfree86.xml.in.h:273
-msgid "Scroll_Lock LED shows alternative group"
-msgstr "Scroll_Lock LED-ləri alternativ qrupları göstərir"
-
-#: xfree86.xml.in.h:274
-msgid "Serbian"
-msgstr "ServcÉ™"
-
-#: xfree86.xml.in.h:275
-msgid "Shift with numpad keys works as in MS Windows"
-msgstr "ÆdÉ™d düymÉ™lÉ™rindÉ™ Shift MS Windows-dakı kimi iÅŸlÉ™yir"
-
-#: xfree86.xml.in.h:276
-msgid "Slovak"
-msgstr "Slovakca"
-
-#: xfree86.xml.in.h:277
-msgid "Slovak (qwerty)"
-msgstr "Slovakca (qwerty)"
-
-#: xfree86.xml.in.h:278
-msgid "Slovenian"
-msgstr "SlovencÉ™"
-
-#: xfree86.xml.in.h:279
-msgid "Sme"
-msgstr "Sme"
-
-#: xfree86.xml.in.h:280
-msgid "Spanish"
-msgstr "Ä°spanca"
-
-#: xfree86.xml.in.h:281
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Xüsusi düymələr (Ctrl+Alt+&lt;düyməsi&gt;) verici tərəfindən idarə edilsin."
-
-#: xfree86.xml.in.h:282
-msgid "Standard"
-msgstr "Standart"
-
-#: xfree86.xml.in.h:283
-msgid "Sun dead keys"
-msgstr "Sun ölü düymələr"
-
-#: xfree86.xml.in.h:284
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super Win düymələrinə xəritələnib (ön qurğulu)."
-
-#: xfree86.xml.in.h:285
-msgid "Sv"
-msgstr "Sv"
-
-#: xfree86.xml.in.h:286
-msgid "Svk"
-msgstr "Svk"
-
-#: xfree86.xml.in.h:287
-msgid "Svn"
-msgstr "Svn"
-
-#: xfree86.xml.in.h:288
-msgid "Swap Control and Caps Lock"
-msgstr "Control və Caps Lock arasında dəyiş"
-
-#: xfree86.xml.in.h:289
-msgid "Swe"
-msgstr "Swe"
-
-#: xfree86.xml.in.h:290
-msgid "Swedish"
-msgstr "İsveçcə"
-
-#: xfree86.xml.in.h:291
-msgid "Swiss French"
-msgstr "İsveçrə Fransızcası"
-
-#: xfree86.xml.in.h:292
-msgid "Swiss German"
-msgstr "İsveçrə Almancası"
-
-#: xfree86.xml.in.h:293
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: xfree86.xml.in.h:294
-msgid "Syr"
-msgstr "Syr"
-
-#: xfree86.xml.in.h:295
-msgid "Syriac"
-msgstr "Syriac"
-
-#: xfree86.xml.in.h:296
-msgid "Tajik"
-msgstr "TacikcÉ™"
-
-#: xfree86.xml.in.h:297
-msgid "Tamil"
-msgstr "TamilcÉ™"
-
-#: xfree86.xml.in.h:298
-msgid "Tel"
-msgstr "Tel"
-
-#: xfree86.xml.in.h:299
-msgid "Telugu"
-msgstr "Telugu"
-
-#: xfree86.xml.in.h:300
-msgid "Tha"
-msgstr "Tay"
-
-#: xfree86.xml.in.h:301
-msgid "Thai (Kedmanee)"
-msgstr "Tayca (Kedmanee)"
-
-#: xfree86.xml.in.h:302
-msgid "Thai (Pattachote)"
-msgstr "Tayca (Pattachote)"
-
-#: xfree86.xml.in.h:303
-msgid "Thai (TIS-820.2538)"
-msgstr "Tayca (TIS-820.2538)"
-
-#: xfree86.xml.in.h:304
-msgid "Third level choosers"
-msgstr "Üçüncü səviyyə seçicilər"
-
-#: xfree86.xml.in.h:305
-msgid "Tjk"
-msgstr "Tac"
-
-#: xfree86.xml.in.h:306
-msgid "Tml"
-msgstr "Tml"
-
-#: xfree86.xml.in.h:307
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: xfree86.xml.in.h:308
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: xfree86.xml.in.h:309
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: xfree86.xml.in.h:310
-msgid "Tur"
-msgstr "Tür"
-
-#: xfree86.xml.in.h:311
-msgid "Turkish"
-msgstr "Türkcə"
-
-#: xfree86.xml.in.h:312
-msgid "Turkish (F)"
-msgstr "Türkcə (F)"
-
-#: xfree86.xml.in.h:313
-msgid "Turkish Alt-Q Layout"
-msgstr "Türkcə Alt-Q Düzülüşü"
-
-#: xfree86.xml.in.h:314
-msgid "U.S. English"
-msgstr "A.B.Ş. İngiliscəsi"
-
-#: xfree86.xml.in.h:315
-msgid "U.S. English w/ ISO9995-3"
-msgstr "A.B.Ş. İngiliscəsi və/ ISO9995-3"
-
-#: xfree86.xml.in.h:316
-msgid "U.S. English w/ dead keys"
-msgstr "A.B.Ş. İngiliscəsi və/ ölü düymələr"
-
-#: xfree86.xml.in.h:317
-msgid "US"
-msgstr "ABÅž"
-
-#: xfree86.xml.in.h:318
-msgid "US keyboard with Romanian letters"
-msgstr "Roman hərfli ABŞ klaviaturası"
-
-#: xfree86.xml.in.h:319
-msgid "USA"
-msgstr "ABÅž"
-
-#: xfree86.xml.in.h:320
-msgid "Ukr"
-msgstr "Ukr"
-
-#: xfree86.xml.in.h:321
-msgid "Ukrainian"
-msgstr "Ukraynaca"
-
-#: xfree86.xml.in.h:322
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: xfree86.xml.in.h:323
-msgid "United Kingdom"
-msgstr "Birləşik Krallıq"
-
-#: xfree86.xml.in.h:324
-msgid "Use keyboard LED to show alternative group"
-msgstr "Alternativ qrupu göstərmək üçün klaviatura LED-ini işlət"
-
-#: xfree86.xml.in.h:325
-msgid "Uses internal capitalization. Shift cancels Caps."
-msgstr "Daxili kapitalizasiya işlədir. Shift Caps-i ləğv edir."
-
-#: xfree86.xml.in.h:326
-msgid "Uses internal capitalization. Shift doesn't cancel Caps."
-msgstr "Daxili kapitalizasiya işlədir. Shift Caps-i ləğv etmir."
-
-#: xfree86.xml.in.h:327
-msgid "Uzb"
-msgstr "Özb"
-
-#: xfree86.xml.in.h:328
-msgid "Uzbek"
-msgstr "Özbəkcə"
-
-#: xfree86.xml.in.h:329
-msgid "Vietnamese"
-msgstr "Vyetnamca"
-
-#: xfree86.xml.in.h:330
-msgid "Vnm"
-msgstr "Vye"
-
-#: xfree86.xml.in.h:331
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: xfree86.xml.in.h:332
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: xfree86.xml.in.h:333
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: xfree86.xml.in.h:334
-msgid "Yug"
-msgstr "Yug"
-
-#: xfree86.xml.in.h:335
-msgid "Yugoslavian"
-msgstr "Yugoslavca"
-
-#: xfree86.xml.in.h:336
-msgid "abnt2"
-msgstr "abnt2"
-
-#: xfree86.xml.in.h:337
-msgid "azerty"
-msgstr "azerty"
-
-#: xfree86.xml.in.h:338
-msgid "azerty/digits"
-msgstr "azerty/ədədlər"
-
-#: xfree86.xml.in.h:339
-msgid "bksl"
-msgstr "bksl"
-
-#: xfree86.xml.in.h:340
-msgid "digits"
-msgstr "ədədlər"
-
-#: xfree86.xml.in.h:341
-msgid "l2/101/qwerty/comma"
-msgstr "l2/101/qwerty/vergül"
-
-#: xfree86.xml.in.h:342
-msgid "l2/101/qwerty/dot"
-msgstr "l2/101/qwerty/nöqtə"
-
-#: xfree86.xml.in.h:343
-msgid "l2/101/qwertz/comma"
-msgstr "l2/101/qwertz/vergül"
-
-#: xfree86.xml.in.h:344
-msgid "l2/101/qwertz/dot"
-msgstr "2/101/qwertz/nöqtə"
-
-#: xfree86.xml.in.h:345
-msgid "l2/102/qwerty/comma"
-msgstr "l2/102/qwerty/vergül"
-
-#: xfree86.xml.in.h:346
-msgid "l2/102/qwerty/dot"
-msgstr "l2/102/qwerty/nöqtə"
-
-#: xfree86.xml.in.h:347
-msgid "l2/102/qwertz/comma"
-msgstr "l2/102/qwertz/vergül"
-
-#: xfree86.xml.in.h:348
-msgid "l2/102/qwertz/dot"
-msgstr "l2/102/qwertz/nöqtə"
-
-#: xfree86.xml.in.h:349
-msgid "laptop"
-msgstr "laptop"
-
-#: xfree86.xml.in.h:350
-msgid "lyx"
-msgstr "lyx"
-
-#: xfree86.xml.in.h:351
-msgid "qwerty"
-msgstr "qwerty"
-
-#: xfree86.xml.in.h:352
-msgid "qwerty/digits"
-msgstr "qwerty/ədədlər"
-
-#: xfree86.xml.in.h:353
-msgid "sefi"
-msgstr "sefi"
-
-#: xfree86.xml.in.h:354
-msgid "si1452"
-msgstr "si1452"
-
-#: xfree86.xml.in.h:355
-msgid "uni/101/qwerty/comma"
-msgstr "uni/101/qwerty/vergül"
-
-#: xfree86.xml.in.h:356
-msgid "uni/101/qwerty/dot"
-msgstr "uni/101/qwerty/nöqtə"
-
-#: xfree86.xml.in.h:357
-msgid "uni/101/qwertz/comma"
-msgstr "uni/101/qwertz/vergül"
-
-#: xfree86.xml.in.h:358
-msgid "uni/101/qwertz/dot"
-msgstr "uni/101/qwertz/nöqtə"
-
-#: xfree86.xml.in.h:359
-msgid "uni/102/qwerty/comma"
-msgstr "uni/102/qwerty/vergül"
-
-#: xfree86.xml.in.h:360
-msgid "uni/102/qwerty/dot"
-msgstr "uni/102/qwerty/nöqtə"
-
-#: xfree86.xml.in.h:361
-msgid "uni/102/qwertz/comma"
-msgstr "uni/102/qwertz/vergül"
-
-#: xfree86.xml.in.h:362
-msgid "uni/102/qwertz/dot"
-msgstr "uni/102/qwertz/nöqtə"
+# Translation of 'xfree86+xkb+xml' messages to Azerbaijani.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is put in the public domain.
+# MÉ™tin Æmirov <metin@karegen.com>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xfree86_xkb_xml-4.4pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-11-25 23:38+0000\n"
+"PO-Revision-Date: 2004-03-21 20:00+0200\n"
+"Last-Translator: Metin Amiroff <metin@karegen.com>\n"
+"Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.0.2\n"
+
+#: xfree86.xml.in.h:1
+msgid "\"Typewriter\""
+msgstr "\"Yazı Makinası\""
+
+#: xfree86.xml.in.h:2
+msgid "A Tamil typewrite-style keymap; TAB encoding"
+msgstr "Tamil yazı makinası tərzində düzülüş TAB kodlaması"
+
+#: xfree86.xml.in.h:3
+msgid "A Tamil typewrite-style keymap; TSCII encoding"
+msgstr "Tamil yazı makinası tərzində düzülüş TSCII kodlaması"
+
+#: xfree86.xml.in.h:4
+msgid "A Tamil typewrite-style keymap; Unicode encoding"
+msgstr "Tamil yazı makinası tərzində düzülüş Yunikod kodlaması"
+
+#: xfree86.xml.in.h:5
+msgid "ACPI Standard"
+msgstr "ACPI Standartı"
+
+#: xfree86.xml.in.h:6
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: xfree86.xml.in.h:7
+msgid "Acts as Shift with locking. Shift cancels Caps."
+msgstr "Qıfıllı Shift kimi davranır. Shift Caps-i ləğv edir."
+
+#: xfree86.xml.in.h:8
+msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
+msgstr "Qıfıllı Shift kimi davranır. Shift Caps-i ləğv etmir."
+
+#: xfree86.xml.in.h:9
+msgid "Add the standard behavior to Menu key."
+msgstr "Menyu düyməsinə standart davranış əlavə et."
+
+#: xfree86.xml.in.h:10
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: xfree86.xml.in.h:11
+msgid "Alb"
+msgstr "Alb"
+
+#: xfree86.xml.in.h:12
+msgid "Albanian"
+msgstr "Albanca"
+
+#: xfree86.xml.in.h:13
+msgid "Alt and Meta on the Alt keys (default)."
+msgstr "Alt düymələri üstündə Alt və Meta (ön qurğulu)."
+
+#: xfree86.xml.in.h:14
+msgid "Alt+Control changes group"
+msgstr "Alt+Control düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:15
+msgid "Alt+Shift changes group"
+msgstr "Alt+Shift düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:16
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win düyməsinin davranışları"
+
+#: xfree86.xml.in.h:17
+msgid "Alternate"
+msgstr "ÆvÉ™z Et"
+
+#: xfree86.xml.in.h:18
+msgid "Arabic"
+msgstr "ÆrÉ™bcÉ™"
+
+#: xfree86.xml.in.h:19
+msgid "Arb"
+msgstr "Ærb"
+
+#: xfree86.xml.in.h:20
+msgid "Arm"
+msgstr "Erm"
+
+#: xfree86.xml.in.h:21
+msgid "Armenian"
+msgstr "Ermənicə"
+
+#: xfree86.xml.in.h:22
+msgid "Aze"
+msgstr "AzÉ™"
+
+#: xfree86.xml.in.h:23
+msgid "Azerbaijani"
+msgstr "Azərbaycanca"
+
+#: xfree86.xml.in.h:24
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: xfree86.xml.in.h:25
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: xfree86.xml.in.h:26
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: xfree86.xml.in.h:27
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: xfree86.xml.in.h:28
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: xfree86.xml.in.h:29
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: xfree86.xml.in.h:30
+msgid "Basic"
+msgstr "Æsas"
+
+#: xfree86.xml.in.h:31
+msgid "Bel"
+msgstr "Bel"
+
+#: xfree86.xml.in.h:32
+msgid "Belarusian"
+msgstr "Belarusca"
+
+#: xfree86.xml.in.h:33
+msgid "Belgian"
+msgstr "Belçikaca"
+
+#: xfree86.xml.in.h:34
+msgid "Ben"
+msgstr "Ben"
+
+#: xfree86.xml.in.h:35
+msgid "Bengali"
+msgstr "Benqalca"
+
+#: xfree86.xml.in.h:36
+msgid "Bgr"
+msgstr "Bgr"
+
+#: xfree86.xml.in.h:37
+msgid "Bih"
+msgstr "Bih"
+
+#: xfree86.xml.in.h:38
+msgid "Blr"
+msgstr "Blr"
+
+#: xfree86.xml.in.h:39
+msgid "Bosnian"
+msgstr "Bosniyaca"
+
+#: xfree86.xml.in.h:40
+msgid "Both Alt keys together change group"
+msgstr "İki Alt düyməsi də bərabər qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:41
+msgid "Both Ctrl keys together change group"
+msgstr "İki Ctrl düyməsi də bərabər qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:42
+msgid "Both Shift keys together change group"
+msgstr "Hər iki Shift düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:43
+msgid "Both Win-keys switch group while pressed"
+msgstr "İki Win düyməsi də basılı olduğu müddətcə qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:44
+msgid "Bra"
+msgstr "Bra"
+
+#: xfree86.xml.in.h:45
+msgid "Brazilian"
+msgstr "Brazilya düzülüşü"
+
+#: xfree86.xml.in.h:46
+msgid "Brazilian ABNT2"
+msgstr "Brazilya düzülüşü ABNT2"
+
+#: xfree86.xml.in.h:47
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: xfree86.xml.in.h:48
+msgid "Bulgarian"
+msgstr "Bolqarca"
+
+#: xfree86.xml.in.h:49
+msgid "Burmese"
+msgstr "Burmaca"
+
+#: xfree86.xml.in.h:50
+msgid "Can"
+msgstr "Kan"
+
+#: xfree86.xml.in.h:51
+msgid "Canadian"
+msgstr "Kanada düzülüşü"
+
+#: xfree86.xml.in.h:52
+msgid "Caps Lock key changes group"
+msgstr "Caps Lock düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:53
+msgid "CapsLock key behavior"
+msgstr "CapsLock düyməsinin davranışı"
+
+#: xfree86.xml.in.h:54
+msgid "Caps_Lock LED shows alternative group"
+msgstr "Caps_Lock LED-ləri alternativ qrupları göstərir"
+
+#: xfree86.xml.in.h:55
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: xfree86.xml.in.h:56
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternate option)"
+
+#: xfree86.xml.in.h:57
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: xfree86.xml.in.h:58
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: xfree86.xml.in.h:59
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: xfree86.xml.in.h:60
+msgid "CloGaelach Laptop"
+msgstr "CloGaelach Laptop"
+
+#: xfree86.xml.in.h:61
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: xfree86.xml.in.h:62
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 düymə)"
+
+#: xfree86.xml.in.h:63
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 düymə)"
+
+#: xfree86.xml.in.h:64
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 düymə)"
+
+#: xfree86.xml.in.h:65
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: xfree86.xml.in.h:66
+msgid "Control Key Position"
+msgstr "Control Düyməsinin Yeri"
+
+#: xfree86.xml.in.h:67
+msgid "Control key at bottom left"
+msgstr "Control düyməsi sol altda"
+
+#: xfree86.xml.in.h:68
+msgid "Control key at left of 'A'"
+msgstr "Control düyməsi 'A' hərfinin solunda"
+
+#: xfree86.xml.in.h:69
+msgid "Control+Shift changes group"
+msgstr "Control+Shift düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:70
+msgid "Croatian"
+msgstr "Xorvatca"
+
+#: xfree86.xml.in.h:71
+msgid "Cyrillic"
+msgstr "Kiril"
+
+#: xfree86.xml.in.h:72
+msgid "Cze"
+msgstr "Çex"
+
+#: xfree86.xml.in.h:73
+msgid "Czech"
+msgstr "Çexcə"
+
+#: xfree86.xml.in.h:74
+msgid "Czech (qwerty)"
+msgstr "Çexcə (qwerty)"
+
+#: xfree86.xml.in.h:75
+msgid "Danish"
+msgstr "Danimarkaca"
+
+#: xfree86.xml.in.h:76
+msgid "Dead acute"
+msgstr "Dead acute"
+
+#: xfree86.xml.in.h:77
+msgid "Dead grave acute"
+msgstr "Dead grave acute"
+
+#: xfree86.xml.in.h:78
+msgid "Dell"
+msgstr "Dell"
+
+#: xfree86.xml.in.h:79
+msgid "Dell 101-key PC"
+msgstr "Dell 101-key PC"
+
+#: xfree86.xml.in.h:80
+msgid "Deu"
+msgstr "Deu"
+
+#: xfree86.xml.in.h:81
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: xfree86.xml.in.h:82
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 seryaları"
+
+#: xfree86.xml.in.h:83
+msgid "Dnk"
+msgstr "Dnk"
+
+#: xfree86.xml.in.h:84
+msgid "Dutch"
+msgstr "Niderlandca"
+
+#: xfree86.xml.in.h:85
+msgid "Dvo"
+msgstr "Dvo"
+
+#: xfree86.xml.in.h:86
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: xfree86.xml.in.h:87
+msgid "Eliminate dead keys"
+msgstr "Ölü düymələri sayma"
+
+#: xfree86.xml.in.h:88
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: xfree86.xml.in.h:89
+msgid "Esp"
+msgstr "Ä°sp"
+
+#: xfree86.xml.in.h:90
+msgid "Est"
+msgstr "Est"
+
+#: xfree86.xml.in.h:91
+msgid "Estonian"
+msgstr "Estonca"
+
+#: xfree86.xml.in.h:92
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: xfree86.xml.in.h:93
+msgid "Extended"
+msgstr "Uzadılmış"
+
+#: xfree86.xml.in.h:94
+msgid "Fao"
+msgstr "Fao"
+
+#: xfree86.xml.in.h:95
+msgid "Faroese"
+msgstr "FaroescÉ™"
+
+#: xfree86.xml.in.h:96
+msgid "Farsi"
+msgstr "Farsca"
+
+#: xfree86.xml.in.h:97
+msgid "Fin"
+msgstr "Fin"
+
+#: xfree86.xml.in.h:98
+msgid "Finnish"
+msgstr "FincÉ™"
+
+#: xfree86.xml.in.h:99
+msgid "Fra"
+msgstr "Fra"
+
+#: xfree86.xml.in.h:100
+msgid "French"
+msgstr "Fransızca"
+
+#: xfree86.xml.in.h:101
+msgid "French (alternative)"
+msgstr "Fransızca (alternativ)"
+
+#: xfree86.xml.in.h:102
+msgid "French Canadian"
+msgstr "Kanada Fransızcası"
+
+#: xfree86.xml.in.h:103
+msgid "GBr"
+msgstr "GBr"
+
+#: xfree86.xml.in.h:104
+msgid "Generic 101-key PC"
+msgstr "Generic 101-key PC"
+
+#: xfree86.xml.in.h:105
+msgid "Generic 102-key (Intl) PC"
+msgstr "Generic 102-key (Intl) PC"
+
+#: xfree86.xml.in.h:106
+msgid "Generic 104-key PC"
+msgstr "Generic 104-key PC"
+
+#: xfree86.xml.in.h:107
+msgid "Generic 105-key (Intl) PC"
+msgstr "Generic 105-key (Intl) PC"
+
+#: xfree86.xml.in.h:108
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: xfree86.xml.in.h:109
+msgid "Geo"
+msgstr "Gür"
+
+#: xfree86.xml.in.h:110
+msgid "Georgian (latin)"
+msgstr "Gürcücə (latın)"
+
+#: xfree86.xml.in.h:111
+msgid "Georgian (russian)"
+msgstr "Gürcücə (kiril)"
+
+#: xfree86.xml.in.h:112
+msgid "German"
+msgstr "Almaca"
+
+#: xfree86.xml.in.h:113
+msgid "Grc"
+msgstr "Yun"
+
+#: xfree86.xml.in.h:114
+msgid "Greek"
+msgstr "Yunanca"
+
+#: xfree86.xml.in.h:115
+msgid "Group Shift/Lock behavior"
+msgstr "Shift/Lock Qrupu Davranışı"
+
+#: xfree86.xml.in.h:116
+msgid "Guj"
+msgstr "Guj"
+
+#: xfree86.xml.in.h:117
+msgid "Gujarati"
+msgstr "GujaraticÉ™"
+
+#: xfree86.xml.in.h:118
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: xfree86.xml.in.h:119
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: xfree86.xml.in.h:120
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: xfree86.xml.in.h:121
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: xfree86.xml.in.h:122
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: xfree86.xml.in.h:123
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: xfree86.xml.in.h:124
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: xfree86.xml.in.h:125
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: xfree86.xml.in.h:126
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: xfree86.xml.in.h:127
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
+
+#: xfree86.xml.in.h:128
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#: xfree86.xml.in.h:129
+msgid "Hin"
+msgstr "Hin"
+
+#: xfree86.xml.in.h:130
+msgid "Hindi"
+msgstr "Hindi"
+
+#: xfree86.xml.in.h:131
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: xfree86.xml.in.h:132
+msgid "Hrv"
+msgstr "Xrv"
+
+#: xfree86.xml.in.h:133
+msgid "Hun"
+msgstr "Mac"
+
+#: xfree86.xml.in.h:134
+msgid "Hungarian"
+msgstr "Macarca"
+
+#: xfree86.xml.in.h:135
+msgid "Hungarian (qwerty)"
+msgstr "Macarca (qwerty)"
+
+#: xfree86.xml.in.h:136
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper Win düymələrinə xəritələnib."
+
+#: xfree86.xml.in.h:137
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: xfree86.xml.in.h:138
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: xfree86.xml.in.h:139
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (alternate option)"
+
+#: xfree86.xml.in.h:140
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: xfree86.xml.in.h:141
+msgid "INSCRIPT layout"
+msgstr "INSCRIPT düzülüşü"
+
+#: xfree86.xml.in.h:142
+msgid "IS434"
+msgstr "IS434"
+
+#: xfree86.xml.in.h:143
+msgid "IS434 laptop"
+msgstr "IS434 laptop"
+
+#: xfree86.xml.in.h:144
+msgid "ISO Alternate"
+msgstr "ISO Alternate"
+
+#: xfree86.xml.in.h:145
+msgid "Icelandic"
+msgstr "Icelandic"
+
+#: xfree86.xml.in.h:146
+msgid "Iku"
+msgstr "Ä°ku"
+
+#: xfree86.xml.in.h:147
+msgid "Inuktitut"
+msgstr "Ä°nuktitut"
+
+#: xfree86.xml.in.h:148
+msgid "Irish"
+msgstr "Ä°rlandca"
+
+#: xfree86.xml.in.h:149
+msgid "Irl"
+msgstr "Ä°rl"
+
+#: xfree86.xml.in.h:150
+msgid "Irn"
+msgstr "Ä°rn"
+
+#: xfree86.xml.in.h:151
+msgid "Isl"
+msgstr "Ä°sl"
+
+#: xfree86.xml.in.h:152
+msgid "Isr"
+msgstr "Ä°sr"
+
+#: xfree86.xml.in.h:153
+msgid "Israeli"
+msgstr "Yəhudicə"
+
+#: xfree86.xml.in.h:154
+msgid "Ita"
+msgstr "Ä°ta"
+
+#: xfree86.xml.in.h:155
+msgid "Italian"
+msgstr "Ä°talyanca"
+
+#: xfree86.xml.in.h:156
+msgid "Japanese"
+msgstr "Yaponca"
+
+#: xfree86.xml.in.h:157
+msgid "Japanese 106-key"
+msgstr "Yaponca 106-düymə"
+
+#: xfree86.xml.in.h:158
+msgid "Jpn"
+msgstr "Ypn"
+
+#: xfree86.xml.in.h:159
+msgid "Kan"
+msgstr "Kan"
+
+#: xfree86.xml.in.h:160
+msgid "Kannada"
+msgstr "Kannada"
+
+#: xfree86.xml.in.h:161
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: xfree86.xml.in.h:162
+msgid "LAm"
+msgstr "LAm"
+
+#: xfree86.xml.in.h:163
+msgid "Laptop"
+msgstr "Laptop"
+
+#: xfree86.xml.in.h:164
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (məs. Armada) Laptop Klaviaturası"
+
+#: xfree86.xml.in.h:165
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (məs. Presario) İnternet Klaviaturası"
+
+#: xfree86.xml.in.h:166
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr "Laptop/notebook Dell Inspiron 8xxx"
+
+#: xfree86.xml.in.h:167
+msgid "Latin"
+msgstr "Latın"
+
+#: xfree86.xml.in.h:168
+msgid "Latin America"
+msgstr "Latın Amerika"
+
+#: xfree86.xml.in.h:169
+msgid "Latvian"
+msgstr "Latışca"
+
+#: xfree86.xml.in.h:170
+msgid "Left Alt key changes group"
+msgstr "Sol Alt düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:171
+msgid "Left Ctrl key changes group"
+msgstr "Sol Ctrl düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:172
+msgid "Left Shift key changes group"
+msgstr "Sol Shift düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:173
+msgid "Left Win-key changes group"
+msgstr "Sol Win düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:174
+msgid "Left Win-key switches group while pressed"
+msgstr "Sol Win düyməsi basılı olduğu müddətcə qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:175
+msgid "Lithuanian azerty standard"
+msgstr "Litovca azerty standart"
+
+#: xfree86.xml.in.h:176
+msgid "Lithuanian qwerty \"numeric\""
+msgstr "Litovca qwerty \"numeric\""
+
+#: xfree86.xml.in.h:177
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: xfree86.xml.in.h:178
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: xfree86.xml.in.h:179
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: xfree86.xml.in.h:180
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: xfree86.xml.in.h:181
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (alternate option)"
+
+#: xfree86.xml.in.h:182
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (alternate option2)"
+
+#: xfree86.xml.in.h:183
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: xfree86.xml.in.h:184
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: xfree86.xml.in.h:185
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "Logitech Deluxe Access Keyboard"
+
+#: xfree86.xml.in.h:186
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: xfree86.xml.in.h:187
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: xfree86.xml.in.h:188
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: xfree86.xml.in.h:189
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: xfree86.xml.in.h:190
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Logitech iTouch keyboard Internet Navigator"
+
+#: xfree86.xml.in.h:191
+msgid "Ltu"
+msgstr "Ltu"
+
+#: xfree86.xml.in.h:192
+msgid "Lva"
+msgstr "Lva"
+
+#: xfree86.xml.in.h:193
+msgid "Macedonian"
+msgstr "Makedonca"
+
+#: xfree86.xml.in.h:194
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: xfree86.xml.in.h:195
+msgid "Macintosh Old"
+msgstr "Macintosh Old"
+
+#: xfree86.xml.in.h:196
+msgid "Make CapsLock an additional Control"
+msgstr "CapsLock düyməsini əlavə idarə olaraq tə'yin et"
+
+#: xfree86.xml.in.h:197
+msgid "Mal"
+msgstr "Mal"
+
+#: xfree86.xml.in.h:198
+msgid "Malayalam"
+msgstr "Malayalamca"
+
+#: xfree86.xml.in.h:199
+msgid "Maltese"
+msgstr "Maltaca"
+
+#: xfree86.xml.in.h:200
+msgid "Maltese (US layout)"
+msgstr "Maltaca (ABŞ düzülüşü)"
+
+#: xfree86.xml.in.h:201
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: xfree86.xml.in.h:202
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: xfree86.xml.in.h:203
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: xfree86.xml.in.h:204
+msgid "Menu is Compose"
+msgstr "Menyu yazma düyməsidir"
+
+#: xfree86.xml.in.h:205
+msgid "Menu key changes group"
+msgstr "Menü düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:206
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta Win düymələrinə xəritələnib."
+
+#: xfree86.xml.in.h:207
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta sol Win düyməsinə xəritələnib."
+
+#: xfree86.xml.in.h:208
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: xfree86.xml.in.h:209
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Swedish"
+
+#: xfree86.xml.in.h:210
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: xfree86.xml.in.h:211
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: xfree86.xml.in.h:212
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: xfree86.xml.in.h:213
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: xfree86.xml.in.h:214
+msgid "Miscellaneous compatibility options"
+msgstr "Müxtəlif yetişmə qabiliyyəti seçimləri"
+
+#: xfree86.xml.in.h:215
+msgid "Mkd"
+msgstr "Mkd"
+
+#: xfree86.xml.in.h:216
+msgid "Mlt"
+msgstr "Mlt"
+
+#: xfree86.xml.in.h:217
+msgid "Mmr"
+msgstr "Mmr"
+
+#: xfree86.xml.in.h:218
+msgid "Mng"
+msgstr "Mng"
+
+#: xfree86.xml.in.h:219
+msgid "Mongolian"
+msgstr "Monqolca"
+
+#: xfree86.xml.in.h:220
+msgid "Nld"
+msgstr "Nld"
+
+#: xfree86.xml.in.h:221
+msgid "Nor"
+msgstr "Nor"
+
+#: xfree86.xml.in.h:222
+msgid "Northern Saami (Finland)"
+msgstr "Åžimali Saami (Finlandiya)"
+
+#: xfree86.xml.in.h:223
+msgid "Northern Saami (Norway)"
+msgstr "Şimali Saami (Norveç)"
+
+#: xfree86.xml.in.h:224
+msgid "Northern Saami (Sweden)"
+msgstr "Şimali Saami (İsveç)"
+
+#: xfree86.xml.in.h:225
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: xfree86.xml.in.h:226
+msgid "Norwegian"
+msgstr "Norveçcə"
+
+#: xfree86.xml.in.h:227
+msgid "Num_Lock LED shows alternative group"
+msgstr "Num_Lock LED-ləri alternativ qrupları göstərir"
+
+#: xfree86.xml.in.h:228
+msgid "Ogh"
+msgstr "Ogh"
+
+#: xfree86.xml.in.h:229
+msgid "Ogham"
+msgstr "Ogham"
+
+#: xfree86.xml.in.h:230
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/Internet keyboard"
+
+#: xfree86.xml.in.h:231
+msgid "Ori"
+msgstr "Ori"
+
+#: xfree86.xml.in.h:232
+msgid "Oriya"
+msgstr "Oriya"
+
+#: xfree86.xml.in.h:233
+msgid "PC-98xx Series"
+msgstr "PC-98xx Seriyaları"
+
+#: xfree86.xml.in.h:234
+msgid "PC104"
+msgstr "PC104"
+
+#: xfree86.xml.in.h:235
+msgid "Pan"
+msgstr "Pan"
+
+#: xfree86.xml.in.h:236
+msgid "Phonetic"
+msgstr "Fonetik"
+
+#: xfree86.xml.in.h:237
+msgid "Pol"
+msgstr "Pol"
+
+#: xfree86.xml.in.h:238
+msgid "Polish"
+msgstr "Polyakca"
+
+#: xfree86.xml.in.h:239
+msgid "Polish (qwertz)"
+msgstr "Polyakca (qwertz)"
+
+#: xfree86.xml.in.h:240
+msgid "Polytonic"
+msgstr "Politonik"
+
+#: xfree86.xml.in.h:241
+msgid "Portuguese"
+msgstr "Portuqalca"
+
+#: xfree86.xml.in.h:242
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: xfree86.xml.in.h:243
+msgid "Press Left Win-key to choose 3rd level"
+msgstr "3-cü səviyyəni seçmək üçün sol Win düyməsinə basılsın"
+
+#: xfree86.xml.in.h:244
+msgid "Press Menu key to choose 3rd level"
+msgstr "3-cü səviyyəni seçmək üçün sağ menyuya basılsın"
+
+#: xfree86.xml.in.h:245
+msgid "Press Right Control to choose 3rd level"
+msgstr "3-cü səviyyəni seçmək üçün sağ Control düyməsinə basılsın"
+
+#: xfree86.xml.in.h:246
+msgid "Press Right Win-key to choose 3rd level"
+msgstr "3-cü səviyyəni seçmək üçün sağ Win düyməsinə basılsın"
+
+#: xfree86.xml.in.h:247
+msgid "Press any of Win-keys to choose 3rd level"
+msgstr "3-cü səviyyəni seçmək üçün hər hansı bir Win düyməsinə basılsın"
+
+#: xfree86.xml.in.h:248
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: xfree86.xml.in.h:249
+msgid "Prt"
+msgstr "Prt"
+
+#: xfree86.xml.in.h:250
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: xfree86.xml.in.h:251
+msgid "R-Alt switches group while pressed"
+msgstr "R-Alt basılı olduğu müddətcə qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:252
+msgid "Right Alt is Compose"
+msgstr "Sağ Alt düyməsi yazma düyməsidir"
+
+#: xfree86.xml.in.h:253
+msgid "Right Alt key changes group"
+msgstr "Sağ Alt düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:254
+msgid "Right Control key works as Right Alt"
+msgstr "Sağ Control düyməsi sağ Alt kimi işləyir"
+
+#: xfree86.xml.in.h:255
+msgid "Right Ctrl key changes group"
+msgstr "Sağ Ctrl düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:256
+msgid "Right Shift key changes group"
+msgstr "Sağ Shift düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:257
+msgid "Right Win-key changes group"
+msgstr "Sağ Win düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:258
+msgid "Right Win-key is Compose"
+msgstr "Sağ Win düyməsi yazma düyməsidir"
+
+#: xfree86.xml.in.h:259
+msgid "Right Win-key switches group while pressed"
+msgstr "Sağ Win düyməsi basılı olduğu müddətcə qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:260
+msgid "Romanian"
+msgstr "Rumınca"
+
+#: xfree86.xml.in.h:261
+msgid "Rou"
+msgstr "Rou"
+
+#: xfree86.xml.in.h:262
+msgid "Rus"
+msgstr "Rus"
+
+#: xfree86.xml.in.h:263
+msgid "Russian"
+msgstr "Rusca"
+
+#: xfree86.xml.in.h:264
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: xfree86.xml.in.h:265
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: xfree86.xml.in.h:266
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: xfree86.xml.in.h:267
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: xfree86.xml.in.h:268
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: xfree86.xml.in.h:269
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: xfree86.xml.in.h:270
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: xfree86.xml.in.h:271
+msgid "Sapmi"
+msgstr "Sapmi"
+
+#: xfree86.xml.in.h:272
+msgid "Scg"
+msgstr "Scg"
+
+#: xfree86.xml.in.h:273
+msgid "Scroll_Lock LED shows alternative group"
+msgstr "Scroll_Lock LED-ləri alternativ qrupları göstərir"
+
+#: xfree86.xml.in.h:274
+msgid "Serbian"
+msgstr "ServcÉ™"
+
+#: xfree86.xml.in.h:275
+msgid "Shift with numpad keys works as in MS Windows"
+msgstr "ÆdÉ™d düymÉ™lÉ™rindÉ™ Shift MS Windows-dakı kimi iÅŸlÉ™yir"
+
+#: xfree86.xml.in.h:276
+msgid "Slovak"
+msgstr "Slovakca"
+
+#: xfree86.xml.in.h:277
+msgid "Slovak (qwerty)"
+msgstr "Slovakca (qwerty)"
+
+#: xfree86.xml.in.h:278
+msgid "Slovenian"
+msgstr "SlovencÉ™"
+
+#: xfree86.xml.in.h:279
+msgid "Sme"
+msgstr "Sme"
+
+#: xfree86.xml.in.h:280
+msgid "Spanish"
+msgstr "Ä°spanca"
+
+#: xfree86.xml.in.h:281
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Xüsusi düymələr (Ctrl+Alt+&lt;düyməsi&gt;) verici tərəfindən idarə edilsin."
+
+#: xfree86.xml.in.h:282
+msgid "Standard"
+msgstr "Standart"
+
+#: xfree86.xml.in.h:283
+msgid "Sun dead keys"
+msgstr "Sun ölü düymələr"
+
+#: xfree86.xml.in.h:284
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super Win düymələrinə xəritələnib (ön qurğulu)."
+
+#: xfree86.xml.in.h:285
+msgid "Sv"
+msgstr "Sv"
+
+#: xfree86.xml.in.h:286
+msgid "Svk"
+msgstr "Svk"
+
+#: xfree86.xml.in.h:287
+msgid "Svn"
+msgstr "Svn"
+
+#: xfree86.xml.in.h:288
+msgid "Swap Control and Caps Lock"
+msgstr "Control və Caps Lock arasında dəyiş"
+
+#: xfree86.xml.in.h:289
+msgid "Swe"
+msgstr "Swe"
+
+#: xfree86.xml.in.h:290
+msgid "Swedish"
+msgstr "İsveçcə"
+
+#: xfree86.xml.in.h:291
+msgid "Swiss French"
+msgstr "İsveçrə Fransızcası"
+
+#: xfree86.xml.in.h:292
+msgid "Swiss German"
+msgstr "İsveçrə Almancası"
+
+#: xfree86.xml.in.h:293
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: xfree86.xml.in.h:294
+msgid "Syr"
+msgstr "Syr"
+
+#: xfree86.xml.in.h:295
+msgid "Syriac"
+msgstr "Syriac"
+
+#: xfree86.xml.in.h:296
+msgid "Tajik"
+msgstr "TacikcÉ™"
+
+#: xfree86.xml.in.h:297
+msgid "Tamil"
+msgstr "TamilcÉ™"
+
+#: xfree86.xml.in.h:298
+msgid "Tel"
+msgstr "Tel"
+
+#: xfree86.xml.in.h:299
+msgid "Telugu"
+msgstr "Telugu"
+
+#: xfree86.xml.in.h:300
+msgid "Tha"
+msgstr "Tay"
+
+#: xfree86.xml.in.h:301
+msgid "Thai (Kedmanee)"
+msgstr "Tayca (Kedmanee)"
+
+#: xfree86.xml.in.h:302
+msgid "Thai (Pattachote)"
+msgstr "Tayca (Pattachote)"
+
+#: xfree86.xml.in.h:303
+msgid "Thai (TIS-820.2538)"
+msgstr "Tayca (TIS-820.2538)"
+
+#: xfree86.xml.in.h:304
+msgid "Third level choosers"
+msgstr "Üçüncü səviyyə seçicilər"
+
+#: xfree86.xml.in.h:305
+msgid "Tjk"
+msgstr "Tac"
+
+#: xfree86.xml.in.h:306
+msgid "Tml"
+msgstr "Tml"
+
+#: xfree86.xml.in.h:307
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: xfree86.xml.in.h:308
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: xfree86.xml.in.h:309
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: xfree86.xml.in.h:310
+msgid "Tur"
+msgstr "Tür"
+
+#: xfree86.xml.in.h:311
+msgid "Turkish"
+msgstr "Türkcə"
+
+#: xfree86.xml.in.h:312
+msgid "Turkish (F)"
+msgstr "Türkcə (F)"
+
+#: xfree86.xml.in.h:313
+msgid "Turkish Alt-Q Layout"
+msgstr "Türkcə Alt-Q Düzülüşü"
+
+#: xfree86.xml.in.h:314
+msgid "U.S. English"
+msgstr "A.B.Ş. İngiliscəsi"
+
+#: xfree86.xml.in.h:315
+msgid "U.S. English w/ ISO9995-3"
+msgstr "A.B.Ş. İngiliscəsi və/ ISO9995-3"
+
+#: xfree86.xml.in.h:316
+msgid "U.S. English w/ dead keys"
+msgstr "A.B.Ş. İngiliscəsi və/ ölü düymələr"
+
+#: xfree86.xml.in.h:317
+msgid "US"
+msgstr "ABÅž"
+
+#: xfree86.xml.in.h:318
+msgid "US keyboard with Romanian letters"
+msgstr "Roman hərfli ABŞ klaviaturası"
+
+#: xfree86.xml.in.h:319
+msgid "USA"
+msgstr "ABÅž"
+
+#: xfree86.xml.in.h:320
+msgid "Ukr"
+msgstr "Ukr"
+
+#: xfree86.xml.in.h:321
+msgid "Ukrainian"
+msgstr "Ukraynaca"
+
+#: xfree86.xml.in.h:322
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: xfree86.xml.in.h:323
+msgid "United Kingdom"
+msgstr "Birləşik Krallıq"
+
+#: xfree86.xml.in.h:324
+msgid "Use keyboard LED to show alternative group"
+msgstr "Alternativ qrupu göstərmək üçün klaviatura LED-ini işlət"
+
+#: xfree86.xml.in.h:325
+msgid "Uses internal capitalization. Shift cancels Caps."
+msgstr "Daxili kapitalizasiya işlədir. Shift Caps-i ləğv edir."
+
+#: xfree86.xml.in.h:326
+msgid "Uses internal capitalization. Shift doesn't cancel Caps."
+msgstr "Daxili kapitalizasiya işlədir. Shift Caps-i ləğv etmir."
+
+#: xfree86.xml.in.h:327
+msgid "Uzb"
+msgstr "Özb"
+
+#: xfree86.xml.in.h:328
+msgid "Uzbek"
+msgstr "Özbəkcə"
+
+#: xfree86.xml.in.h:329
+msgid "Vietnamese"
+msgstr "Vyetnamca"
+
+#: xfree86.xml.in.h:330
+msgid "Vnm"
+msgstr "Vye"
+
+#: xfree86.xml.in.h:331
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: xfree86.xml.in.h:332
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: xfree86.xml.in.h:333
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: xfree86.xml.in.h:334
+msgid "Yug"
+msgstr "Yug"
+
+#: xfree86.xml.in.h:335
+msgid "Yugoslavian"
+msgstr "Yugoslavca"
+
+#: xfree86.xml.in.h:336
+msgid "abnt2"
+msgstr "abnt2"
+
+#: xfree86.xml.in.h:337
+msgid "azerty"
+msgstr "azerty"
+
+#: xfree86.xml.in.h:338
+msgid "azerty/digits"
+msgstr "azerty/ədədlər"
+
+#: xfree86.xml.in.h:339
+msgid "bksl"
+msgstr "bksl"
+
+#: xfree86.xml.in.h:340
+msgid "digits"
+msgstr "ədədlər"
+
+#: xfree86.xml.in.h:341
+msgid "l2/101/qwerty/comma"
+msgstr "l2/101/qwerty/vergül"
+
+#: xfree86.xml.in.h:342
+msgid "l2/101/qwerty/dot"
+msgstr "l2/101/qwerty/nöqtə"
+
+#: xfree86.xml.in.h:343
+msgid "l2/101/qwertz/comma"
+msgstr "l2/101/qwertz/vergül"
+
+#: xfree86.xml.in.h:344
+msgid "l2/101/qwertz/dot"
+msgstr "2/101/qwertz/nöqtə"
+
+#: xfree86.xml.in.h:345
+msgid "l2/102/qwerty/comma"
+msgstr "l2/102/qwerty/vergül"
+
+#: xfree86.xml.in.h:346
+msgid "l2/102/qwerty/dot"
+msgstr "l2/102/qwerty/nöqtə"
+
+#: xfree86.xml.in.h:347
+msgid "l2/102/qwertz/comma"
+msgstr "l2/102/qwertz/vergül"
+
+#: xfree86.xml.in.h:348
+msgid "l2/102/qwertz/dot"
+msgstr "l2/102/qwertz/nöqtə"
+
+#: xfree86.xml.in.h:349
+msgid "laptop"
+msgstr "laptop"
+
+#: xfree86.xml.in.h:350
+msgid "lyx"
+msgstr "lyx"
+
+#: xfree86.xml.in.h:351
+msgid "qwerty"
+msgstr "qwerty"
+
+#: xfree86.xml.in.h:352
+msgid "qwerty/digits"
+msgstr "qwerty/ədədlər"
+
+#: xfree86.xml.in.h:353
+msgid "sefi"
+msgstr "sefi"
+
+#: xfree86.xml.in.h:354
+msgid "si1452"
+msgstr "si1452"
+
+#: xfree86.xml.in.h:355
+msgid "uni/101/qwerty/comma"
+msgstr "uni/101/qwerty/vergül"
+
+#: xfree86.xml.in.h:356
+msgid "uni/101/qwerty/dot"
+msgstr "uni/101/qwerty/nöqtə"
+
+#: xfree86.xml.in.h:357
+msgid "uni/101/qwertz/comma"
+msgstr "uni/101/qwertz/vergül"
+
+#: xfree86.xml.in.h:358
+msgid "uni/101/qwertz/dot"
+msgstr "uni/101/qwertz/nöqtə"
+
+#: xfree86.xml.in.h:359
+msgid "uni/102/qwerty/comma"
+msgstr "uni/102/qwerty/vergül"
+
+#: xfree86.xml.in.h:360
+msgid "uni/102/qwerty/dot"
+msgstr "uni/102/qwerty/nöqtə"
+
+#: xfree86.xml.in.h:361
+msgid "uni/102/qwertz/comma"
+msgstr "uni/102/qwertz/vergül"
+
+#: xfree86.xml.in.h:362
+msgid "uni/102/qwertz/dot"
+msgstr "uni/102/qwertz/nöqtə"
diff --git a/xorg-server/xkeyboard-config/po/en_GB.po b/xorg-server/xkeyboard-config/po/en_GB.po
index 48af18093..0f1ac9874 100644
--- a/xorg-server/xkeyboard-config/po/en_GB.po
+++ b/xorg-server/xkeyboard-config/po/en_GB.po
@@ -1,1867 +1,1867 @@
-# British English translations for xkeyboard-config package.
-# Copyright (C) 2005 Free Software Foundation
-# This file is distributed under the same license as the xkeyboard-config package.
-# Christopher Orr <chris@protactin.co.uk>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-09-04 23:04+0100\n"
-"PO-Revision-Date: 2005-04-09 16:58+0100\n"
-"Last-Translator: Christopher Orr <chris@protactin.co.uk>\n"
-"Language-Team: English <en_gb@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ASCII\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/comma/Dead keys"
-
-#: ../rules/base.xml.in.h:3
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/comma/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:4
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/dot/Dead keys"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/dot/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/comma/Dead keys"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/comma/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/dot/Dead keys"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/dot/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:10
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/comma/Dead keys"
-
-#: ../rules/base.xml.in.h:11
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/comma/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:12
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/dot/Dead keys"
-
-#: ../rules/base.xml.in.h:13
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/dot/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/comma/Dead keys"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/comma/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/dot/Dead keys"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/dot/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:18
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:19
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:20
-msgid "ACPI Standard"
-msgstr "ACPI Standard"
-
-#: ../rules/base.xml.in.h:21
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:22
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:23
-msgid "Add the EuroSign to the 2 key."
-msgstr "Add the Euro sign to the 2 key."
-
-#: ../rules/base.xml.in.h:24
-msgid "Add the EuroSign to the 5 key."
-msgstr "Add the Euro sign to the 5 key."
-
-#: ../rules/base.xml.in.h:25
-msgid "Add the EuroSign to the E key."
-msgstr "Add the Euro sign to the E key."
-
-#: ../rules/base.xml.in.h:26
-msgid "Add the standard behavior to Menu key."
-msgstr "Add the standard behaviour to Menu key."
-
-#: ../rules/base.xml.in.h:27
-msgid "Adding the EuroSign to certain keys"
-msgstr "Adding the Euro sign to certain keys"
-
-#: ../rules/base.xml.in.h:28
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:29
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:30
-msgid "Albania"
-msgstr "Albania"
-
-#: ../rules/base.xml.in.h:31
-msgid "Alt and Meta are on the Alt keys (default)."
-msgstr "Alt and Meta are on the Alt keys (default)."
-
-#: ../rules/base.xml.in.h:32
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "Alt is mapped to the right Win-key and Super to Menu."
-
-#: ../rules/base.xml.in.h:33
-#, fuzzy
-msgid "Alt+Ctrl changes group."
-msgstr "Alt+Control changes group."
-
-#: ../rules/base.xml.in.h:34
-msgid "Alt+Shift changes group."
-msgstr "Alt+Shift changes group."
-
-#: ../rules/base.xml.in.h:35
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:36
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win key behaviour"
-
-#: ../rules/base.xml.in.h:37
-msgid "Alternative"
-msgstr "Alternative"
-
-#: ../rules/base.xml.in.h:38
-msgid "Alternative international (former us_intl)"
-msgstr "Alternative international (former us_intl)"
-
-#: ../rules/base.xml.in.h:39
-msgid "Alternative, Sun dead keys"
-msgstr "Alternative, Sun dead keys"
-
-#: ../rules/base.xml.in.h:40
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternative, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:41
-msgid "Apostrophe (') variant"
-msgstr "Apostrophe (') variant"
-
-#: ../rules/base.xml.in.h:42
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:43
-msgid "Arabic"
-msgstr "Arabic"
-
-#: ../rules/base.xml.in.h:44
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:45
-msgid "Armenia"
-msgstr "Armenia"
-
-#: ../rules/base.xml.in.h:46
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:47
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#: ../rules/base.xml.in.h:48
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:49
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:50
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:51
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:52
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:53
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:54
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:55
-#, fuzzy
-msgid "Ban"
-msgstr "Kan"
-
-#: ../rules/base.xml.in.h:56
-msgid "Bangladesh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:57
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:58
-msgid "Belarus"
-msgstr "Belarus"
-
-#: ../rules/base.xml.in.h:59
-msgid "Belgium"
-msgstr "Belgium"
-
-#: ../rules/base.xml.in.h:60
-#, fuzzy
-msgid "Bengali"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:61
-#, fuzzy
-msgid "Bengali Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:62
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:63
-#, fuzzy
-msgid "Bhu"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:64
-#, fuzzy
-msgid "Bhutan"
-msgstr "Kan"
-
-#: ../rules/base.xml.in.h:65
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:66
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:67
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia and Herzegovina"
-
-#: ../rules/base.xml.in.h:68
-msgid "Both Alt keys together change group."
-msgstr "Both Alt keys together change group."
-
-#: ../rules/base.xml.in.h:69
-msgid "Both Ctrl keys together change group."
-msgstr "Both Ctrl keys together change group."
-
-#: ../rules/base.xml.in.h:70
-msgid "Both Shift keys together change group."
-msgstr "Both Shift keys together change group."
-
-#: ../rules/base.xml.in.h:71
-msgid "Both Win-keys switch group while pressed."
-msgstr "Both Win-keys switch group while pressed."
-
-#: ../rules/base.xml.in.h:72
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:73
-msgid "Brazil"
-msgstr "Brazil"
-
-#: ../rules/base.xml.in.h:74
-msgid "Brazilian ABNT2"
-msgstr "Brazilian ABNT2"
-
-#: ../rules/base.xml.in.h:75
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:76
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#: ../rules/base.xml.in.h:77
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:78
-msgid "Canada"
-msgstr "Canada"
-
-#: ../rules/base.xml.in.h:79
-msgid "CapsLock LED shows alternative group."
-msgstr "Caps Lock LED shows alternative group."
-
-#: ../rules/base.xml.in.h:80
-msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
-msgstr "Caps Lock acts as Shift with locking. Shift cancels Caps Lock."
-
-#: ../rules/base.xml.in.h:81
-msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
-msgstr "Caps Lock acts as Shift with locking. Shift doesn't cancel Caps Lock."
-
-#: ../rules/base.xml.in.h:82
-msgid "CapsLock just locks the Shift modifier."
-msgstr "Caps Lock just locks the Shift modifier."
-
-#: ../rules/base.xml.in.h:83
-msgid "CapsLock key behavior"
-msgstr "Caps Lock key behaviour"
-
-#: ../rules/base.xml.in.h:84
-msgid "CapsLock key changes group."
-msgstr "Caps Lock key changes group."
-
-#: ../rules/base.xml.in.h:85
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "Caps Lock toggles Shift so all keys are affected."
-
-#: ../rules/base.xml.in.h:86
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "Caps Lock toggles normal capitalisation of alphabetic characters."
-
-#: ../rules/base.xml.in.h:87
-msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
-msgstr "Caps Lock uses internal capitalisation. Shift cancels Caps Lock."
-
-#: ../rules/base.xml.in.h:88
-msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
-msgstr ""
-"Caps Lock uses internal capitalisation. Shift doesn't cancel Caps Lock."
-
-#: ../rules/base.xml.in.h:89
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:90
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:91
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternate option)"
-
-#: ../rules/base.xml.in.h:92
-msgid "Cherry CyMotion Master Linux"
-msgstr ""
-
-#: ../rules/base.xml.in.h:93
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:94
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:95
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:96
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:97
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 keys)"
-
-#: ../rules/base.xml.in.h:98
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 keys)"
-
-#: ../rules/base.xml.in.h:99
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 keys)"
-
-#: ../rules/base.xml.in.h:100
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:101
-#, fuzzy
-msgid "Compose key position"
-msgstr "Control Key Position"
-
-#: ../rules/base.xml.in.h:102
-msgid "Croatia"
-msgstr "Croatia"
-
-#: ../rules/base.xml.in.h:103
-#, fuzzy
-msgid "Ctrl key at bottom left"
-msgstr "Control key at bottom left"
-
-#: ../rules/base.xml.in.h:104
-#, fuzzy
-msgid "Ctrl key at left of 'A'"
-msgstr "Control key at left of 'A'"
-
-#: ../rules/base.xml.in.h:105
-#, fuzzy
-msgid "Ctrl key position"
-msgstr "Control Key Position"
-
-#: ../rules/base.xml.in.h:106
-#, fuzzy
-msgid "Ctrl+Shift changes group."
-msgstr "Control+Shift changes group."
-
-#: ../rules/base.xml.in.h:107
-msgid "Cyrillic"
-msgstr "Cyrillic"
-
-#: ../rules/base.xml.in.h:108
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:109
-msgid "Czechia"
-msgstr "Czechia"
-
-#: ../rules/base.xml.in.h:110
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:111
-msgid "Dead acute"
-msgstr "Dead acute"
-
-#: ../rules/base.xml.in.h:112
-msgid "Dead grave acute"
-msgstr "Dead grave acute"
-
-#: ../rules/base.xml.in.h:113
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:114
-msgid "Dell 101-key PC"
-msgstr "Dell 101-key PC"
-
-#: ../rules/base.xml.in.h:115
-msgid "Denmark"
-msgstr "Denmark"
-
-#: ../rules/base.xml.in.h:116
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:117
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:118
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 series"
-
-#: ../rules/base.xml.in.h:119
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:120
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:121
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "Dvorak, Polish quotes on key \"1/!\""
-
-#: ../rules/base.xml.in.h:122
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, Polish quotes on quotemark key"
-
-#: ../rules/base.xml.in.h:123
-msgid "Eliminate dead keys"
-msgstr "Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:124
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:125
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:126
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:127
-msgid "Estonia"
-msgstr "Estonia"
-
-#: ../rules/base.xml.in.h:128
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:129
-msgid "Extended"
-msgstr "Extended"
-
-#: ../rules/base.xml.in.h:130
-msgid "Extended Backslash"
-msgstr "Extended Backslash"
-
-#: ../rules/base.xml.in.h:131
-msgid "F-letter (F) variant"
-msgstr "F-letter (F) variant"
-
-#: ../rules/base.xml.in.h:132
-msgid "Fao"
-msgstr "Fao"
-
-#: ../rules/base.xml.in.h:133
-msgid "Faroe Islands"
-msgstr "Faroe Islands"
-
-#: ../rules/base.xml.in.h:134
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:135
-msgid "Finland"
-msgstr "Finland"
-
-#: ../rules/base.xml.in.h:136
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:137
-msgid "France"
-msgstr "France"
-
-#: ../rules/base.xml.in.h:138
-msgid "French"
-msgstr "French"
-
-#: ../rules/base.xml.in.h:139
-msgid "French (legacy)"
-msgstr "French (legacy)"
-
-#: ../rules/base.xml.in.h:140
-msgid "French Dvorak"
-msgstr "French Dvorak"
-
-#: ../rules/base.xml.in.h:141
-msgid "French, Sun dead keys"
-msgstr "French, Sun dead keys"
-
-#: ../rules/base.xml.in.h:142
-msgid "French, eliminate dead keys"
-msgstr "French, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:143
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:144
-msgid "Generic 101-key PC"
-msgstr "Generic 101-key PC"
-
-#: ../rules/base.xml.in.h:145
-msgid "Generic 102-key (Intl) PC"
-msgstr "Generic 102-key (Intl) PC"
-
-#: ../rules/base.xml.in.h:146
-msgid "Generic 104-key PC"
-msgstr "Generic 104-key PC"
-
-#: ../rules/base.xml.in.h:147
-msgid "Generic 105-key (Intl) PC"
-msgstr "Generic 105-key (Intl) PC"
-
-#: ../rules/base.xml.in.h:148
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:149
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:150
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:151
-msgid "Georgia"
-msgstr "Georgia"
-
-#: ../rules/base.xml.in.h:152
-msgid "German, Sun dead keys"
-msgstr "German, Sun dead keys"
-
-#: ../rules/base.xml.in.h:153
-msgid "German, eliminate dead keys"
-msgstr "German, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:154
-msgid "Germany"
-msgstr "Germany"
-
-#: ../rules/base.xml.in.h:155
-msgid "Gre"
-msgstr "Gre"
-
-#: ../rules/base.xml.in.h:156
-msgid "Greece"
-msgstr "Greece"
-
-#: ../rules/base.xml.in.h:157
-msgid "Group Shift/Lock behavior"
-msgstr "Group Shift/Lock behaviour"
-
-#: ../rules/base.xml.in.h:158
-#, fuzzy
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: ../rules/base.xml.in.h:159
-#, fuzzy
-msgid "Gurmukhi"
-msgstr "Guru"
-
-#: ../rules/base.xml.in.h:160
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:161
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:162
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:163
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:164
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:165
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:166
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:167
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:168
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:169
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:170
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:171
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:172
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:173
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:174
-msgid "Hungary"
-msgstr "Hungary"
-
-#: ../rules/base.xml.in.h:175
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper is mapped to the Win-keys."
-
-#: ../rules/base.xml.in.h:176
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:177
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:178
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (alternate option)"
-
-#: ../rules/base.xml.in.h:179
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:180
-msgid "ISO Alternate"
-msgstr "ISO Alternate"
-
-#: ../rules/base.xml.in.h:181
-msgid "Iceland"
-msgstr "Iceland"
-
-#: ../rules/base.xml.in.h:182
-#, fuzzy
-msgid "Ind"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:183
-msgid "India"
-msgstr ""
-
-#: ../rules/base.xml.in.h:184
-msgid "International (with dead keys)"
-msgstr "International (with dead keys)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:186
-msgid "Iran"
-msgstr "Iran"
-
-#: ../rules/base.xml.in.h:187
-msgid "Ireland"
-msgstr "Ireland"
-
-#: ../rules/base.xml.in.h:188
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:189
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:190
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:191
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:192
-msgid "Israel"
-msgstr "Israel"
-
-#: ../rules/base.xml.in.h:193
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:194
-msgid "Italy"
-msgstr "Italy"
-
-#: ../rules/base.xml.in.h:195
-msgid "Japan"
-msgstr "Japan"
-
-#: ../rules/base.xml.in.h:196
-msgid "Japanese 106-key"
-msgstr "Japanese 106-key"
-
-#: ../rules/base.xml.in.h:197
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:198
-#, fuzzy
-msgid "Kannada"
-msgstr "Canada"
-
-#: ../rules/base.xml.in.h:199
-msgid "Keypad"
-msgstr ""
-
-#: ../rules/base.xml.in.h:200
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:201
-msgid "Kyr"
-msgstr "Kyr"
-
-#: ../rules/base.xml.in.h:202
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstan"
-
-#: ../rules/base.xml.in.h:203
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:204
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:205
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:206
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-
-#: ../rules/base.xml.in.h:207
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-
-#: ../rules/base.xml.in.h:208
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr "Laptop/notebook Dell Inspiron 8xxx"
-
-#: ../rules/base.xml.in.h:209
-msgid "Latin"
-msgstr "Latin"
-
-#: ../rules/base.xml.in.h:210
-msgid "Latin American"
-msgstr "Latin American"
-
-#: ../rules/base.xml.in.h:211
-msgid "Latin Unicode"
-msgstr "Latin Unicode"
-
-#: ../rules/base.xml.in.h:212
-msgid "Latin Unicode qwerty"
-msgstr "Latin Unicode qwerty"
-
-#: ../rules/base.xml.in.h:213
-msgid "Latin qwerty"
-msgstr "Latin qwerty"
-
-#: ../rules/base.xml.in.h:214
-msgid "Latin with guillemots"
-msgstr "Latin with guillemots"
-
-#: ../rules/base.xml.in.h:215
-msgid "Latvia"
-msgstr "Latvia"
-
-#: ../rules/base.xml.in.h:216
-msgid "Left Alt key changes group."
-msgstr "Left Alt key changes group."
-
-#: ../rules/base.xml.in.h:217
-msgid "Left Alt key switches group while pressed."
-msgstr "Left Alt key switches group while pressed."
-
-#: ../rules/base.xml.in.h:218
-msgid "Left Ctrl key changes group."
-msgstr "Left Ctrl key changes group."
-
-#: ../rules/base.xml.in.h:219
-msgid "Left Shift key changes group."
-msgstr "Left Shift key changes group."
-
-#: ../rules/base.xml.in.h:220
-msgid "Left Win-key changes group."
-msgstr "Left Win-key changes group."
-
-#: ../rules/base.xml.in.h:221
-msgid "Left Win-key switches group while pressed."
-msgstr "Left Win-key switches group while pressed."
-
-#: ../rules/base.xml.in.h:222
-msgid "Lithuania"
-msgstr "Lithuania"
-
-#: ../rules/base.xml.in.h:223
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:224
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:225
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:226
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:227
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: ../rules/base.xml.in.h:228
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (alternate option)"
-
-#: ../rules/base.xml.in.h:229
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (alternate option2)"
-
-#: ../rules/base.xml.in.h:230
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:231
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:232
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "Logitech Deluxe Access Keyboard"
-
-#: ../rules/base.xml.in.h:233
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:234
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:235
-#, fuzzy
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:236
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:237
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:238
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Logitech iTouch keyboard Internet Navigator"
-
-#: ../rules/base.xml.in.h:239
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:240
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:241
-#, fuzzy
-msgid "Macedonia (FYROM)"
-msgstr "Macedonian"
-
-#: ../rules/base.xml.in.h:242
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:243
-msgid "Macintosh Old"
-msgstr "Macintosh Old"
-
-#: ../rules/base.xml.in.h:244
-#, fuzzy
-msgid "Make CapsLock an additional Ctrl."
-msgstr "Make Caps Lock an additional Control."
-
-#: ../rules/base.xml.in.h:245
-msgid "Mal"
-msgstr "Mal"
-
-#: ../rules/base.xml.in.h:246
-#, fuzzy
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: ../rules/base.xml.in.h:247
-msgid "Maldives"
-msgstr ""
-
-#: ../rules/base.xml.in.h:248
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:249
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:250
-msgid "Maori"
-msgstr "Maori"
-
-#: ../rules/base.xml.in.h:251
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:252
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:253
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:254
-msgid "Menu is Compose."
-msgstr "Menu is Compose."
-
-#: ../rules/base.xml.in.h:255
-msgid "Menu key changes group."
-msgstr "Menu key changes group."
-
-#: ../rules/base.xml.in.h:256
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta is mapped to the Win-keys."
-
-#: ../rules/base.xml.in.h:257
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta is mapped to the left Win-key."
-
-#: ../rules/base.xml.in.h:258
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:259
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Swedish"
-
-#: ../rules/base.xml.in.h:260
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:261
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:262
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:263
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:264
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:265
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:266
-msgid "Miscellaneous compatibility options"
-msgstr "Miscellaneous compatibility options"
-
-#: ../rules/base.xml.in.h:267
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:268
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:269
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:270
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:271
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#: ../rules/base.xml.in.h:272
-msgid "Multilingual"
-msgstr "Multilingual"
-
-#: ../rules/base.xml.in.h:273
-msgid "Multilingual, second part"
-msgstr "Multilingual, second part"
-
-#: ../rules/base.xml.in.h:274
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#: ../rules/base.xml.in.h:275
-msgid "Netherlands"
-msgstr "Netherlands"
-
-#: ../rules/base.xml.in.h:276
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:277
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:278
-msgid "Northern Saami"
-msgstr "Northern Saami"
-
-#: ../rules/base.xml.in.h:279
-#, fuzzy
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Alternative, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:280
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:281
-msgid "Norway"
-msgstr "Norway"
-
-#: ../rules/base.xml.in.h:282
-msgid "NumLock LED shows alternative group."
-msgstr "Num Lock LED shows alternative group."
-
-#: ../rules/base.xml.in.h:283
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:284
-#, fuzzy
-msgid "Ogham IS434"
-msgstr "IS434"
-
-#: ../rules/base.xml.in.h:285
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/Internet keyboard"
-
-#: ../rules/base.xml.in.h:286
-msgid "Oriya"
-msgstr "Oriya"
-
-#: ../rules/base.xml.in.h:287
-msgid "PC-98xx Series"
-msgstr "PC-98xx Series"
-
-#: ../rules/base.xml.in.h:288
-msgid "Pak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:289
-#, fuzzy
-msgid "Pakistan"
-msgstr "Tajikistan"
-
-#: ../rules/base.xml.in.h:290
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:291
-msgid "Phonetic"
-msgstr "Phonetic"
-
-#: ../rules/base.xml.in.h:292
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:293
-msgid "Poland"
-msgstr "Poland"
-
-#: ../rules/base.xml.in.h:294
-msgid "Polytonic"
-msgstr "Polytonic"
-
-#: ../rules/base.xml.in.h:295
-msgid "Portugal"
-msgstr "Portugal"
-
-#: ../rules/base.xml.in.h:296
-#, fuzzy
-msgid "Power G5"
-msgstr "PowerPC PS/2"
-
-#: ../rules/base.xml.in.h:297
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: ../rules/base.xml.in.h:298
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "Press Left Alt key to choose 3rd level."
-
-#: ../rules/base.xml.in.h:299
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "Press Left Win-key to choose 3rd level."
-
-#: ../rules/base.xml.in.h:300
-msgid "Press Menu key to choose 3rd level."
-msgstr "Press Menu key to choose 3rd level."
-
-#: ../rules/base.xml.in.h:301
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "Press Right Alt key to choose 3rd level."
-
-#: ../rules/base.xml.in.h:302
-#, fuzzy
-msgid "Press Right Ctrl to choose 3rd level."
-msgstr "Press Right Control to choose 3rd level."
-
-#: ../rules/base.xml.in.h:303
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "Press Right Win-key to choose 3rd level."
-
-#: ../rules/base.xml.in.h:304
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "Press any of Alt keys to choose 3rd level."
-
-#: ../rules/base.xml.in.h:305
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "Press any of Win-keys to choose 3rd level."
-
-#: ../rules/base.xml.in.h:306
-#, fuzzy
-msgid "Pro"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:307
-msgid "Pro Keypad"
-msgstr ""
-
-#: ../rules/base.xml.in.h:308
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:309
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:310
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:311
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:312
-msgid "R-Alt switches group while pressed."
-msgstr "R-Alt switches group while pressed."
-
-#: ../rules/base.xml.in.h:313
-msgid "Right Alt is Compose."
-msgstr "Right Alt is Compose."
-
-#: ../rules/base.xml.in.h:314
-msgid "Right Alt key changes group."
-msgstr "Right Alt key changes group."
-
-#: ../rules/base.xml.in.h:315
-msgid "Right Ctrl is Compose."
-msgstr "Right Ctrl is Compose."
-
-#: ../rules/base.xml.in.h:316
-msgid "Right Ctrl key changes group."
-msgstr "Right Ctrl key changes group."
-
-#: ../rules/base.xml.in.h:317
-msgid "Right Ctrl key switches group while pressed."
-msgstr "Right Ctrl key switches group while pressed."
-
-#: ../rules/base.xml.in.h:318
-#, fuzzy
-msgid "Right Ctrl key works as Right Alt."
-msgstr "Right Control key works as Right Alt."
-
-#: ../rules/base.xml.in.h:319
-msgid "Right Shift key changes group."
-msgstr "Right Shift key changes group."
-
-#: ../rules/base.xml.in.h:320
-msgid "Right Win-key changes group."
-msgstr "Right Win-key changes group."
-
-#: ../rules/base.xml.in.h:321
-msgid "Right Win-key is Compose."
-msgstr "Right Win-key is Compose."
-
-#: ../rules/base.xml.in.h:322
-msgid "Right Win-key switches group while pressed."
-msgstr "Right Win-key switches group while pressed."
-
-#: ../rules/base.xml.in.h:323
-msgid "Romania"
-msgstr "Romania"
-
-#: ../rules/base.xml.in.h:324
-msgid "Romanian keyboard with German letters"
-msgstr "Romanian keyboard with German letters"
-
-#: ../rules/base.xml.in.h:325
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Romanian keyboard with German letters, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:326
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:327
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:328
-msgid "Russia"
-msgstr "Russia"
-
-#: ../rules/base.xml.in.h:329
-msgid "Russian"
-msgstr "Russian"
-
-#: ../rules/base.xml.in.h:330
-#, fuzzy
-msgid "Russian phonetic"
-msgstr "Russian"
-
-#: ../rules/base.xml.in.h:331
-#, fuzzy
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "French, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:332
-msgid "SCG"
-msgstr ""
-
-#: ../rules/base.xml.in.h:333
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:334
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:335
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:336
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:337
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:338
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:339
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:340
-msgid "ScrollLock LED shows alternative group."
-msgstr "Scroll Lock LED shows alternative group."
-
-#: ../rules/base.xml.in.h:341
-msgid "Serbia and Montenegro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:342
-msgid "Shift with numpad keys works as in MS Windows."
-msgstr "Shift with numpad keys works as in MS Windows."
-
-#: ../rules/base.xml.in.h:343
-msgid "Shift+CapsLock changes group."
-msgstr "Shift+Caps Lock changes group."
-
-#: ../rules/base.xml.in.h:344
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#: ../rules/base.xml.in.h:345
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#: ../rules/base.xml.in.h:346
-msgid "Spain"
-msgstr "Spain"
-
-#: ../rules/base.xml.in.h:347
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-
-#: ../rules/base.xml.in.h:348
-#, fuzzy
-msgid "SrL"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:349
-#, fuzzy
-msgid "Sri Lanka"
-msgstr "Serbian"
-
-#: ../rules/base.xml.in.h:350
-msgid "Standard"
-msgstr "Standard"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:352
-#, fuzzy
-msgid "Standard RSTU"
-msgstr "Standard"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:354
-msgid "Standard RSTU on Russian layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:355
-msgid "Sun dead keys"
-msgstr "Sun dead keys"
-
-#: ../rules/base.xml.in.h:356
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:357
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super is mapped to the Win-keys (default)."
-
-#: ../rules/base.xml.in.h:358
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:359
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:360
-#, fuzzy
-msgid "Swap Ctrl and CapsLock."
-msgstr "Swap Control and Caps Lock."
-
-#: ../rules/base.xml.in.h:361
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:362
-msgid "Sweden"
-msgstr "Sweden"
-
-#: ../rules/base.xml.in.h:363
-msgid "Switzerland"
-msgstr "Switzerland"
-
-#: ../rules/base.xml.in.h:364
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:365
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:366
-#, fuzzy
-msgid "Syria"
-msgstr "Syriac"
-
-#: ../rules/base.xml.in.h:367
-msgid "Syriac"
-msgstr "Syriac"
-
-#: ../rules/base.xml.in.h:368
-#, fuzzy
-msgid "Syriac phonetic"
-msgstr "Russian"
-
-#: ../rules/base.xml.in.h:369
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:370
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#: ../rules/base.xml.in.h:371
-msgid "Tamil"
-msgstr "Tamil"
-
-#: ../rules/base.xml.in.h:372
-#, fuzzy
-msgid "Tamil TAB Typewriter"
-msgstr "\"Typewriter\""
-
-#: ../rules/base.xml.in.h:373
-msgid "Tamil TSCII Typewriter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:374
-#, fuzzy
-msgid "Tamil Unicode"
-msgstr "Latin Unicode"
-
-#: ../rules/base.xml.in.h:375
-msgid "Telugu"
-msgstr "Telugu"
-
-#: ../rules/base.xml.in.h:376
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:377
-msgid "Thailand"
-msgstr "Thailand"
-
-#: ../rules/base.xml.in.h:378
-msgid "Third level choosers"
-msgstr "Third level choosers"
-
-#: ../rules/base.xml.in.h:379
-msgid "Tilde (~) variant"
-msgstr "Tilde (~) variant"
-
-#: ../rules/base.xml.in.h:380
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:381
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:382
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:383
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:384
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:385
-msgid "Turkish"
-msgstr "Turkish"
-
-#: ../rules/base.xml.in.h:386
-#, fuzzy
-msgid "Typewriter"
-msgstr "\"Typewriter\""
-
-#: ../rules/base.xml.in.h:387
-msgid "U.S. English"
-msgstr "U.S. English"
-
-#: ../rules/base.xml.in.h:388
-#, fuzzy
-msgid "US keyboard with Bosnian digraphs"
-msgstr "US keyboard with Romanian letters"
-
-#: ../rules/base.xml.in.h:389
-#, fuzzy
-msgid "US keyboard with Bosnian letters"
-msgstr "US keyboard with Romanian letters"
-
-#: ../rules/base.xml.in.h:390
-#, fuzzy
-msgid "US keyboard with Croatian digraphs"
-msgstr "US keyboard with Croatian letters"
-
-#: ../rules/base.xml.in.h:391
-msgid "US keyboard with Croatian letters"
-msgstr "US keyboard with Croatian letters"
-
-#: ../rules/base.xml.in.h:392
-msgid "US keyboard with Lithuanian letters"
-msgstr "US keyboard with Lithuanian letters"
-
-#: ../rules/base.xml.in.h:393
-msgid "US keyboard with Maltian letters"
-msgstr "US keyboard with Maltian letters"
-
-#: ../rules/base.xml.in.h:394
-#, fuzzy
-msgid "US keyboard with Slovenian digraphs"
-msgstr "US keyboard with Romanian letters"
-
-#: ../rules/base.xml.in.h:395
-#, fuzzy
-msgid "US keyboard with Slovenian letters"
-msgstr "US keyboard with Romanian letters"
-
-#: ../rules/base.xml.in.h:396
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:397
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:398
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#: ../rules/base.xml.in.h:399
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:400
-msgid "United Kingdom"
-msgstr "United Kingdom"
-
-#: ../rules/base.xml.in.h:401
-msgid "Urdu"
-msgstr "Urdu"
-
-#: ../rules/base.xml.in.h:402
-msgid "Use Bosnian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:403
-msgid "Use Croatian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:404
-msgid "Use Slovenian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:405
-msgid "Use guillemots for quotes"
-msgstr ""
-
-#: ../rules/base.xml.in.h:406
-msgid "Use keyboard LED to show alternative group."
-msgstr "Use keyboard LED to show alternative group."
-
-#: ../rules/base.xml.in.h:407
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:408
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#: ../rules/base.xml.in.h:409
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:410
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:411
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:412
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: ../rules/base.xml.in.h:413
-msgid "With &lt;\\|&gt; key"
-msgstr "With &lt;\\|&gt; key"
-
-#: ../rules/base.xml.in.h:414
-msgid "With guillemots"
-msgstr "With guillemots"
-
-#: ../rules/base.xml.in.h:415
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:416
-msgid "Z and ZHE swapped"
-msgstr "Z and ZHE swapped"
-
-#: ../rules/base.xml.in.h:417
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:418
-msgid "azerty/digits"
-msgstr "azerty/digits"
-
-#: ../rules/base.xml.in.h:419
-msgid "digits"
-msgstr "digits"
-
-#: ../rules/base.xml.in.h:420
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:421
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:422
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, extended Backslash"
-
-#: ../rules/base.xml.in.h:423
-msgid "qwerty/digits"
-msgstr "qwerty/digits"
-
-#: ../rules/base.xml.in.h:424
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.xml.in.h:425
-msgid "si1452"
-msgstr "si1452"
-
-#~ msgid "\"Standard\""
-#~ msgstr "\"Standard\""
-
-#, fuzzy
-#~ msgid "Romanian keyboard with MS layout"
-#~ msgstr "Romanian keyboard with German letters"
-
-#, fuzzy
-#~ msgid "Romanian standard keyboard"
-#~ msgstr "Ukrainian standard RSTU"
-
-#, fuzzy
-#~ msgid "Serbia"
-#~ msgstr "Serbian"
-
-#~ msgid "Srp"
-#~ msgstr "Srp"
-
-#, fuzzy
-#~ msgid "Tamil INSCRIPT"
-#~ msgstr "Bengali"
-
-#~ msgid "US keyboard with Romanian letters"
-#~ msgstr "US keyboard with Romanian letters"
-
-#~ msgid "CloGaelach Laptop"
-#~ msgstr "CloGaelach Laptop"
-
-#~ msgid "Laptop"
-#~ msgstr "Laptop"
-
-#, fuzzy
-#~ msgid "Ogham IS434 laptop"
-#~ msgstr "IS434 laptop"
-
-#, fuzzy
-#~ msgid "Sinhala phonetic"
-#~ msgstr "Russian"
-
-#, fuzzy
-#~ msgid "Malayalam with Malayalam digits"
-#~ msgstr "With Malayalam digits"
-
-#, fuzzy
-#~ msgid "Devanagari INSCRIPT"
-#~ msgstr "Devanagari"
-
-#~ msgid "Dzo"
-#~ msgstr "Dzo"
-
-#~ msgid "Dzongkha"
-#~ msgstr "Dzongkha"
-
-#~ msgid "Finish and Swedish"
-#~ msgstr "Finish and Swedish"
-
-#, fuzzy
-#~ msgid "Gurmukhi INSCRIPT"
-#~ msgstr "Gurmukhi"
-
-#, fuzzy
-#~ msgid "Kannada INSCRIPT"
-#~ msgstr "Kannada"
-
-#~ msgid "Smi"
-#~ msgstr "Smi"
-
-#~ msgid "Ben"
-#~ msgstr "Ben"
-
-#~ msgid "Deva"
-#~ msgstr "Deva"
-
-#~ msgid "Guj"
-#~ msgstr "Guj"
-
-#~ msgid "INSCRIPT layout"
-#~ msgstr "INSCRIPT layout"
-
-#~ msgid "Iku"
-#~ msgstr "Iku"
-
-#~ msgid "Ogam"
-#~ msgstr "Ogam"
-
-#~ msgid "Ori"
-#~ msgstr "Ori"
-
-#~ msgid "Sin"
-#~ msgstr "Sin"
-
-#~ msgid "Sinhala"
-#~ msgstr "Sinhala"
-
-#~ msgid "Tam"
-#~ msgstr "Tam"
-
-#~ msgid "Tel"
-#~ msgstr "Tel"
-
-#~ msgid "Typewrite-style keymap; TAB encoding"
-#~ msgstr "Typewrite-style keymap; TAB encoding"
-
-#, fuzzy
-#~ msgid "Typewrite-style keymap; TSCII encoding"
-#~ msgstr "Typewrite-style keymap; TAB encoding"
-
-#~ msgid "Urd"
-#~ msgstr "Urd"
-
-#~ msgid "Typewrite-style keymap; Unicode encoding"
-#~ msgstr "Typewrite-style keymap; Unicode encoding"
+# British English translations for xkeyboard-config package.
+# Copyright (C) 2005 Free Software Foundation
+# This file is distributed under the same license as the xkeyboard-config package.
+# Christopher Orr <chris@protactin.co.uk>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-09-04 23:04+0100\n"
+"PO-Revision-Date: 2005-04-09 16:58+0100\n"
+"Last-Translator: Christopher Orr <chris@protactin.co.uk>\n"
+"Language-Team: English <en_gb@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/comma/Dead keys"
+
+#: ../rules/base.xml.in.h:3
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/comma/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:4
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/dot/Dead keys"
+
+#: ../rules/base.xml.in.h:5
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/dot/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/comma/Dead keys"
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/comma/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/dot/Dead keys"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/dot/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:10
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/comma/Dead keys"
+
+#: ../rules/base.xml.in.h:11
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/comma/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:12
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/dot/Dead keys"
+
+#: ../rules/base.xml.in.h:13
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/dot/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/comma/Dead keys"
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/comma/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/dot/Dead keys"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/dot/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:18
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:19
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:20
+msgid "ACPI Standard"
+msgstr "ACPI Standard"
+
+#: ../rules/base.xml.in.h:21
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:22
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:23
+msgid "Add the EuroSign to the 2 key."
+msgstr "Add the Euro sign to the 2 key."
+
+#: ../rules/base.xml.in.h:24
+msgid "Add the EuroSign to the 5 key."
+msgstr "Add the Euro sign to the 5 key."
+
+#: ../rules/base.xml.in.h:25
+msgid "Add the EuroSign to the E key."
+msgstr "Add the Euro sign to the E key."
+
+#: ../rules/base.xml.in.h:26
+msgid "Add the standard behavior to Menu key."
+msgstr "Add the standard behaviour to Menu key."
+
+#: ../rules/base.xml.in.h:27
+msgid "Adding the EuroSign to certain keys"
+msgstr "Adding the Euro sign to certain keys"
+
+#: ../rules/base.xml.in.h:28
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:29
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:30
+msgid "Albania"
+msgstr "Albania"
+
+#: ../rules/base.xml.in.h:31
+msgid "Alt and Meta are on the Alt keys (default)."
+msgstr "Alt and Meta are on the Alt keys (default)."
+
+#: ../rules/base.xml.in.h:32
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "Alt is mapped to the right Win-key and Super to Menu."
+
+#: ../rules/base.xml.in.h:33
+#, fuzzy
+msgid "Alt+Ctrl changes group."
+msgstr "Alt+Control changes group."
+
+#: ../rules/base.xml.in.h:34
+msgid "Alt+Shift changes group."
+msgstr "Alt+Shift changes group."
+
+#: ../rules/base.xml.in.h:35
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:36
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win key behaviour"
+
+#: ../rules/base.xml.in.h:37
+msgid "Alternative"
+msgstr "Alternative"
+
+#: ../rules/base.xml.in.h:38
+msgid "Alternative international (former us_intl)"
+msgstr "Alternative international (former us_intl)"
+
+#: ../rules/base.xml.in.h:39
+msgid "Alternative, Sun dead keys"
+msgstr "Alternative, Sun dead keys"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternative, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:41
+msgid "Apostrophe (') variant"
+msgstr "Apostrophe (') variant"
+
+#: ../rules/base.xml.in.h:42
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:43
+msgid "Arabic"
+msgstr "Arabic"
+
+#: ../rules/base.xml.in.h:44
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:45
+msgid "Armenia"
+msgstr "Armenia"
+
+#: ../rules/base.xml.in.h:46
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:47
+msgid "Azerbaijan"
+msgstr "Azerbaijan"
+
+#: ../rules/base.xml.in.h:48
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:49
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:50
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:51
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:52
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:53
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:54
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:55
+#, fuzzy
+msgid "Ban"
+msgstr "Kan"
+
+#: ../rules/base.xml.in.h:56
+msgid "Bangladesh"
+msgstr ""
+
+#: ../rules/base.xml.in.h:57
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:58
+msgid "Belarus"
+msgstr "Belarus"
+
+#: ../rules/base.xml.in.h:59
+msgid "Belgium"
+msgstr "Belgium"
+
+#: ../rules/base.xml.in.h:60
+#, fuzzy
+msgid "Bengali"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:61
+#, fuzzy
+msgid "Bengali Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:62
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:63
+#, fuzzy
+msgid "Bhu"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:64
+#, fuzzy
+msgid "Bhutan"
+msgstr "Kan"
+
+#: ../rules/base.xml.in.h:65
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:66
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:67
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia and Herzegovina"
+
+#: ../rules/base.xml.in.h:68
+msgid "Both Alt keys together change group."
+msgstr "Both Alt keys together change group."
+
+#: ../rules/base.xml.in.h:69
+msgid "Both Ctrl keys together change group."
+msgstr "Both Ctrl keys together change group."
+
+#: ../rules/base.xml.in.h:70
+msgid "Both Shift keys together change group."
+msgstr "Both Shift keys together change group."
+
+#: ../rules/base.xml.in.h:71
+msgid "Both Win-keys switch group while pressed."
+msgstr "Both Win-keys switch group while pressed."
+
+#: ../rules/base.xml.in.h:72
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:73
+msgid "Brazil"
+msgstr "Brazil"
+
+#: ../rules/base.xml.in.h:74
+msgid "Brazilian ABNT2"
+msgstr "Brazilian ABNT2"
+
+#: ../rules/base.xml.in.h:75
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:76
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: ../rules/base.xml.in.h:77
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:78
+msgid "Canada"
+msgstr "Canada"
+
+#: ../rules/base.xml.in.h:79
+msgid "CapsLock LED shows alternative group."
+msgstr "Caps Lock LED shows alternative group."
+
+#: ../rules/base.xml.in.h:80
+msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
+msgstr "Caps Lock acts as Shift with locking. Shift cancels Caps Lock."
+
+#: ../rules/base.xml.in.h:81
+msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
+msgstr "Caps Lock acts as Shift with locking. Shift doesn't cancel Caps Lock."
+
+#: ../rules/base.xml.in.h:82
+msgid "CapsLock just locks the Shift modifier."
+msgstr "Caps Lock just locks the Shift modifier."
+
+#: ../rules/base.xml.in.h:83
+msgid "CapsLock key behavior"
+msgstr "Caps Lock key behaviour"
+
+#: ../rules/base.xml.in.h:84
+msgid "CapsLock key changes group."
+msgstr "Caps Lock key changes group."
+
+#: ../rules/base.xml.in.h:85
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "Caps Lock toggles Shift so all keys are affected."
+
+#: ../rules/base.xml.in.h:86
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "Caps Lock toggles normal capitalisation of alphabetic characters."
+
+#: ../rules/base.xml.in.h:87
+msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
+msgstr "Caps Lock uses internal capitalisation. Shift cancels Caps Lock."
+
+#: ../rules/base.xml.in.h:88
+msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
+msgstr ""
+"Caps Lock uses internal capitalisation. Shift doesn't cancel Caps Lock."
+
+#: ../rules/base.xml.in.h:89
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:90
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:91
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternate option)"
+
+#: ../rules/base.xml.in.h:92
+msgid "Cherry CyMotion Master Linux"
+msgstr ""
+
+#: ../rules/base.xml.in.h:93
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:94
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:95
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:96
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:97
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 keys)"
+
+#: ../rules/base.xml.in.h:98
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 keys)"
+
+#: ../rules/base.xml.in.h:99
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 keys)"
+
+#: ../rules/base.xml.in.h:100
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:101
+#, fuzzy
+msgid "Compose key position"
+msgstr "Control Key Position"
+
+#: ../rules/base.xml.in.h:102
+msgid "Croatia"
+msgstr "Croatia"
+
+#: ../rules/base.xml.in.h:103
+#, fuzzy
+msgid "Ctrl key at bottom left"
+msgstr "Control key at bottom left"
+
+#: ../rules/base.xml.in.h:104
+#, fuzzy
+msgid "Ctrl key at left of 'A'"
+msgstr "Control key at left of 'A'"
+
+#: ../rules/base.xml.in.h:105
+#, fuzzy
+msgid "Ctrl key position"
+msgstr "Control Key Position"
+
+#: ../rules/base.xml.in.h:106
+#, fuzzy
+msgid "Ctrl+Shift changes group."
+msgstr "Control+Shift changes group."
+
+#: ../rules/base.xml.in.h:107
+msgid "Cyrillic"
+msgstr "Cyrillic"
+
+#: ../rules/base.xml.in.h:108
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:109
+msgid "Czechia"
+msgstr "Czechia"
+
+#: ../rules/base.xml.in.h:110
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:111
+msgid "Dead acute"
+msgstr "Dead acute"
+
+#: ../rules/base.xml.in.h:112
+msgid "Dead grave acute"
+msgstr "Dead grave acute"
+
+#: ../rules/base.xml.in.h:113
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:114
+msgid "Dell 101-key PC"
+msgstr "Dell 101-key PC"
+
+#: ../rules/base.xml.in.h:115
+msgid "Denmark"
+msgstr "Denmark"
+
+#: ../rules/base.xml.in.h:116
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:117
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:118
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 series"
+
+#: ../rules/base.xml.in.h:119
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:120
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:121
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "Dvorak, Polish quotes on key \"1/!\""
+
+#: ../rules/base.xml.in.h:122
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, Polish quotes on quotemark key"
+
+#: ../rules/base.xml.in.h:123
+msgid "Eliminate dead keys"
+msgstr "Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:124
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:125
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:126
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:127
+msgid "Estonia"
+msgstr "Estonia"
+
+#: ../rules/base.xml.in.h:128
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:129
+msgid "Extended"
+msgstr "Extended"
+
+#: ../rules/base.xml.in.h:130
+msgid "Extended Backslash"
+msgstr "Extended Backslash"
+
+#: ../rules/base.xml.in.h:131
+msgid "F-letter (F) variant"
+msgstr "F-letter (F) variant"
+
+#: ../rules/base.xml.in.h:132
+msgid "Fao"
+msgstr "Fao"
+
+#: ../rules/base.xml.in.h:133
+msgid "Faroe Islands"
+msgstr "Faroe Islands"
+
+#: ../rules/base.xml.in.h:134
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:135
+msgid "Finland"
+msgstr "Finland"
+
+#: ../rules/base.xml.in.h:136
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:137
+msgid "France"
+msgstr "France"
+
+#: ../rules/base.xml.in.h:138
+msgid "French"
+msgstr "French"
+
+#: ../rules/base.xml.in.h:139
+msgid "French (legacy)"
+msgstr "French (legacy)"
+
+#: ../rules/base.xml.in.h:140
+msgid "French Dvorak"
+msgstr "French Dvorak"
+
+#: ../rules/base.xml.in.h:141
+msgid "French, Sun dead keys"
+msgstr "French, Sun dead keys"
+
+#: ../rules/base.xml.in.h:142
+msgid "French, eliminate dead keys"
+msgstr "French, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:143
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:144
+msgid "Generic 101-key PC"
+msgstr "Generic 101-key PC"
+
+#: ../rules/base.xml.in.h:145
+msgid "Generic 102-key (Intl) PC"
+msgstr "Generic 102-key (Intl) PC"
+
+#: ../rules/base.xml.in.h:146
+msgid "Generic 104-key PC"
+msgstr "Generic 104-key PC"
+
+#: ../rules/base.xml.in.h:147
+msgid "Generic 105-key (Intl) PC"
+msgstr "Generic 105-key (Intl) PC"
+
+#: ../rules/base.xml.in.h:148
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:149
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:150
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:151
+msgid "Georgia"
+msgstr "Georgia"
+
+#: ../rules/base.xml.in.h:152
+msgid "German, Sun dead keys"
+msgstr "German, Sun dead keys"
+
+#: ../rules/base.xml.in.h:153
+msgid "German, eliminate dead keys"
+msgstr "German, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:154
+msgid "Germany"
+msgstr "Germany"
+
+#: ../rules/base.xml.in.h:155
+msgid "Gre"
+msgstr "Gre"
+
+#: ../rules/base.xml.in.h:156
+msgid "Greece"
+msgstr "Greece"
+
+#: ../rules/base.xml.in.h:157
+msgid "Group Shift/Lock behavior"
+msgstr "Group Shift/Lock behaviour"
+
+#: ../rules/base.xml.in.h:158
+#, fuzzy
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../rules/base.xml.in.h:159
+#, fuzzy
+msgid "Gurmukhi"
+msgstr "Guru"
+
+#: ../rules/base.xml.in.h:160
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:161
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:162
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:163
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:164
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:165
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:166
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:167
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:168
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:169
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:170
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:171
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:172
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:173
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:174
+msgid "Hungary"
+msgstr "Hungary"
+
+#: ../rules/base.xml.in.h:175
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper is mapped to the Win-keys."
+
+#: ../rules/base.xml.in.h:176
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:177
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:178
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (alternate option)"
+
+#: ../rules/base.xml.in.h:179
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:180
+msgid "ISO Alternate"
+msgstr "ISO Alternate"
+
+#: ../rules/base.xml.in.h:181
+msgid "Iceland"
+msgstr "Iceland"
+
+#: ../rules/base.xml.in.h:182
+#, fuzzy
+msgid "Ind"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:183
+msgid "India"
+msgstr ""
+
+#: ../rules/base.xml.in.h:184
+msgid "International (with dead keys)"
+msgstr "International (with dead keys)"
+
+#: ../rules/base.xml.in.h:185
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:186
+msgid "Iran"
+msgstr "Iran"
+
+#: ../rules/base.xml.in.h:187
+msgid "Ireland"
+msgstr "Ireland"
+
+#: ../rules/base.xml.in.h:188
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:189
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:190
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:191
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:192
+msgid "Israel"
+msgstr "Israel"
+
+#: ../rules/base.xml.in.h:193
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:194
+msgid "Italy"
+msgstr "Italy"
+
+#: ../rules/base.xml.in.h:195
+msgid "Japan"
+msgstr "Japan"
+
+#: ../rules/base.xml.in.h:196
+msgid "Japanese 106-key"
+msgstr "Japanese 106-key"
+
+#: ../rules/base.xml.in.h:197
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:198
+#, fuzzy
+msgid "Kannada"
+msgstr "Canada"
+
+#: ../rules/base.xml.in.h:199
+msgid "Keypad"
+msgstr ""
+
+#: ../rules/base.xml.in.h:200
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:201
+msgid "Kyr"
+msgstr "Kyr"
+
+#: ../rules/base.xml.in.h:202
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstan"
+
+#: ../rules/base.xml.in.h:203
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:204
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:205
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:206
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+
+#: ../rules/base.xml.in.h:207
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+
+#: ../rules/base.xml.in.h:208
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr "Laptop/notebook Dell Inspiron 8xxx"
+
+#: ../rules/base.xml.in.h:209
+msgid "Latin"
+msgstr "Latin"
+
+#: ../rules/base.xml.in.h:210
+msgid "Latin American"
+msgstr "Latin American"
+
+#: ../rules/base.xml.in.h:211
+msgid "Latin Unicode"
+msgstr "Latin Unicode"
+
+#: ../rules/base.xml.in.h:212
+msgid "Latin Unicode qwerty"
+msgstr "Latin Unicode qwerty"
+
+#: ../rules/base.xml.in.h:213
+msgid "Latin qwerty"
+msgstr "Latin qwerty"
+
+#: ../rules/base.xml.in.h:214
+msgid "Latin with guillemots"
+msgstr "Latin with guillemots"
+
+#: ../rules/base.xml.in.h:215
+msgid "Latvia"
+msgstr "Latvia"
+
+#: ../rules/base.xml.in.h:216
+msgid "Left Alt key changes group."
+msgstr "Left Alt key changes group."
+
+#: ../rules/base.xml.in.h:217
+msgid "Left Alt key switches group while pressed."
+msgstr "Left Alt key switches group while pressed."
+
+#: ../rules/base.xml.in.h:218
+msgid "Left Ctrl key changes group."
+msgstr "Left Ctrl key changes group."
+
+#: ../rules/base.xml.in.h:219
+msgid "Left Shift key changes group."
+msgstr "Left Shift key changes group."
+
+#: ../rules/base.xml.in.h:220
+msgid "Left Win-key changes group."
+msgstr "Left Win-key changes group."
+
+#: ../rules/base.xml.in.h:221
+msgid "Left Win-key switches group while pressed."
+msgstr "Left Win-key switches group while pressed."
+
+#: ../rules/base.xml.in.h:222
+msgid "Lithuania"
+msgstr "Lithuania"
+
+#: ../rules/base.xml.in.h:223
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:224
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:225
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:226
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:227
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: ../rules/base.xml.in.h:228
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (alternate option)"
+
+#: ../rules/base.xml.in.h:229
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (alternate option2)"
+
+#: ../rules/base.xml.in.h:230
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:231
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:232
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "Logitech Deluxe Access Keyboard"
+
+#: ../rules/base.xml.in.h:233
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:234
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:235
+#, fuzzy
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:236
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:237
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:238
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Logitech iTouch keyboard Internet Navigator"
+
+#: ../rules/base.xml.in.h:239
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:240
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:241
+#, fuzzy
+msgid "Macedonia (FYROM)"
+msgstr "Macedonian"
+
+#: ../rules/base.xml.in.h:242
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:243
+msgid "Macintosh Old"
+msgstr "Macintosh Old"
+
+#: ../rules/base.xml.in.h:244
+#, fuzzy
+msgid "Make CapsLock an additional Ctrl."
+msgstr "Make Caps Lock an additional Control."
+
+#: ../rules/base.xml.in.h:245
+msgid "Mal"
+msgstr "Mal"
+
+#: ../rules/base.xml.in.h:246
+#, fuzzy
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: ../rules/base.xml.in.h:247
+msgid "Maldives"
+msgstr ""
+
+#: ../rules/base.xml.in.h:248
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:249
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:250
+msgid "Maori"
+msgstr "Maori"
+
+#: ../rules/base.xml.in.h:251
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:252
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:253
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:254
+msgid "Menu is Compose."
+msgstr "Menu is Compose."
+
+#: ../rules/base.xml.in.h:255
+msgid "Menu key changes group."
+msgstr "Menu key changes group."
+
+#: ../rules/base.xml.in.h:256
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta is mapped to the Win-keys."
+
+#: ../rules/base.xml.in.h:257
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta is mapped to the left Win-key."
+
+#: ../rules/base.xml.in.h:258
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:259
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Swedish"
+
+#: ../rules/base.xml.in.h:260
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:261
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:262
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:263
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:264
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:265
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:266
+msgid "Miscellaneous compatibility options"
+msgstr "Miscellaneous compatibility options"
+
+#: ../rules/base.xml.in.h:267
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:268
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:269
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:270
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:271
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: ../rules/base.xml.in.h:272
+msgid "Multilingual"
+msgstr "Multilingual"
+
+#: ../rules/base.xml.in.h:273
+msgid "Multilingual, second part"
+msgstr "Multilingual, second part"
+
+#: ../rules/base.xml.in.h:274
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: ../rules/base.xml.in.h:275
+msgid "Netherlands"
+msgstr "Netherlands"
+
+#: ../rules/base.xml.in.h:276
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:277
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:278
+msgid "Northern Saami"
+msgstr "Northern Saami"
+
+#: ../rules/base.xml.in.h:279
+#, fuzzy
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Alternative, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:280
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:281
+msgid "Norway"
+msgstr "Norway"
+
+#: ../rules/base.xml.in.h:282
+msgid "NumLock LED shows alternative group."
+msgstr "Num Lock LED shows alternative group."
+
+#: ../rules/base.xml.in.h:283
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:284
+#, fuzzy
+msgid "Ogham IS434"
+msgstr "IS434"
+
+#: ../rules/base.xml.in.h:285
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/Internet keyboard"
+
+#: ../rules/base.xml.in.h:286
+msgid "Oriya"
+msgstr "Oriya"
+
+#: ../rules/base.xml.in.h:287
+msgid "PC-98xx Series"
+msgstr "PC-98xx Series"
+
+#: ../rules/base.xml.in.h:288
+msgid "Pak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:289
+#, fuzzy
+msgid "Pakistan"
+msgstr "Tajikistan"
+
+#: ../rules/base.xml.in.h:290
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:291
+msgid "Phonetic"
+msgstr "Phonetic"
+
+#: ../rules/base.xml.in.h:292
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:293
+msgid "Poland"
+msgstr "Poland"
+
+#: ../rules/base.xml.in.h:294
+msgid "Polytonic"
+msgstr "Polytonic"
+
+#: ../rules/base.xml.in.h:295
+msgid "Portugal"
+msgstr "Portugal"
+
+#: ../rules/base.xml.in.h:296
+#, fuzzy
+msgid "Power G5"
+msgstr "PowerPC PS/2"
+
+#: ../rules/base.xml.in.h:297
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: ../rules/base.xml.in.h:298
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "Press Left Alt key to choose 3rd level."
+
+#: ../rules/base.xml.in.h:299
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "Press Left Win-key to choose 3rd level."
+
+#: ../rules/base.xml.in.h:300
+msgid "Press Menu key to choose 3rd level."
+msgstr "Press Menu key to choose 3rd level."
+
+#: ../rules/base.xml.in.h:301
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "Press Right Alt key to choose 3rd level."
+
+#: ../rules/base.xml.in.h:302
+#, fuzzy
+msgid "Press Right Ctrl to choose 3rd level."
+msgstr "Press Right Control to choose 3rd level."
+
+#: ../rules/base.xml.in.h:303
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "Press Right Win-key to choose 3rd level."
+
+#: ../rules/base.xml.in.h:304
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "Press any of Alt keys to choose 3rd level."
+
+#: ../rules/base.xml.in.h:305
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "Press any of Win-keys to choose 3rd level."
+
+#: ../rules/base.xml.in.h:306
+#, fuzzy
+msgid "Pro"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:307
+msgid "Pro Keypad"
+msgstr ""
+
+#: ../rules/base.xml.in.h:308
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:309
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:310
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:311
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:312
+msgid "R-Alt switches group while pressed."
+msgstr "R-Alt switches group while pressed."
+
+#: ../rules/base.xml.in.h:313
+msgid "Right Alt is Compose."
+msgstr "Right Alt is Compose."
+
+#: ../rules/base.xml.in.h:314
+msgid "Right Alt key changes group."
+msgstr "Right Alt key changes group."
+
+#: ../rules/base.xml.in.h:315
+msgid "Right Ctrl is Compose."
+msgstr "Right Ctrl is Compose."
+
+#: ../rules/base.xml.in.h:316
+msgid "Right Ctrl key changes group."
+msgstr "Right Ctrl key changes group."
+
+#: ../rules/base.xml.in.h:317
+msgid "Right Ctrl key switches group while pressed."
+msgstr "Right Ctrl key switches group while pressed."
+
+#: ../rules/base.xml.in.h:318
+#, fuzzy
+msgid "Right Ctrl key works as Right Alt."
+msgstr "Right Control key works as Right Alt."
+
+#: ../rules/base.xml.in.h:319
+msgid "Right Shift key changes group."
+msgstr "Right Shift key changes group."
+
+#: ../rules/base.xml.in.h:320
+msgid "Right Win-key changes group."
+msgstr "Right Win-key changes group."
+
+#: ../rules/base.xml.in.h:321
+msgid "Right Win-key is Compose."
+msgstr "Right Win-key is Compose."
+
+#: ../rules/base.xml.in.h:322
+msgid "Right Win-key switches group while pressed."
+msgstr "Right Win-key switches group while pressed."
+
+#: ../rules/base.xml.in.h:323
+msgid "Romania"
+msgstr "Romania"
+
+#: ../rules/base.xml.in.h:324
+msgid "Romanian keyboard with German letters"
+msgstr "Romanian keyboard with German letters"
+
+#: ../rules/base.xml.in.h:325
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Romanian keyboard with German letters, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:326
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:327
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:328
+msgid "Russia"
+msgstr "Russia"
+
+#: ../rules/base.xml.in.h:329
+msgid "Russian"
+msgstr "Russian"
+
+#: ../rules/base.xml.in.h:330
+#, fuzzy
+msgid "Russian phonetic"
+msgstr "Russian"
+
+#: ../rules/base.xml.in.h:331
+#, fuzzy
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "French, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:332
+msgid "SCG"
+msgstr ""
+
+#: ../rules/base.xml.in.h:333
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:334
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:335
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:336
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:337
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:338
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:339
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:340
+msgid "ScrollLock LED shows alternative group."
+msgstr "Scroll Lock LED shows alternative group."
+
+#: ../rules/base.xml.in.h:341
+msgid "Serbia and Montenegro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:342
+msgid "Shift with numpad keys works as in MS Windows."
+msgstr "Shift with numpad keys works as in MS Windows."
+
+#: ../rules/base.xml.in.h:343
+msgid "Shift+CapsLock changes group."
+msgstr "Shift+Caps Lock changes group."
+
+#: ../rules/base.xml.in.h:344
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: ../rules/base.xml.in.h:345
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: ../rules/base.xml.in.h:346
+msgid "Spain"
+msgstr "Spain"
+
+#: ../rules/base.xml.in.h:347
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+
+#: ../rules/base.xml.in.h:348
+#, fuzzy
+msgid "SrL"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:349
+#, fuzzy
+msgid "Sri Lanka"
+msgstr "Serbian"
+
+#: ../rules/base.xml.in.h:350
+msgid "Standard"
+msgstr "Standard"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:352
+#, fuzzy
+msgid "Standard RSTU"
+msgstr "Standard"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:354
+msgid "Standard RSTU on Russian layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:355
+msgid "Sun dead keys"
+msgstr "Sun dead keys"
+
+#: ../rules/base.xml.in.h:356
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:357
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super is mapped to the Win-keys (default)."
+
+#: ../rules/base.xml.in.h:358
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:359
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:360
+#, fuzzy
+msgid "Swap Ctrl and CapsLock."
+msgstr "Swap Control and Caps Lock."
+
+#: ../rules/base.xml.in.h:361
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:362
+msgid "Sweden"
+msgstr "Sweden"
+
+#: ../rules/base.xml.in.h:363
+msgid "Switzerland"
+msgstr "Switzerland"
+
+#: ../rules/base.xml.in.h:364
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:365
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:366
+#, fuzzy
+msgid "Syria"
+msgstr "Syriac"
+
+#: ../rules/base.xml.in.h:367
+msgid "Syriac"
+msgstr "Syriac"
+
+#: ../rules/base.xml.in.h:368
+#, fuzzy
+msgid "Syriac phonetic"
+msgstr "Russian"
+
+#: ../rules/base.xml.in.h:369
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:370
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: ../rules/base.xml.in.h:371
+msgid "Tamil"
+msgstr "Tamil"
+
+#: ../rules/base.xml.in.h:372
+#, fuzzy
+msgid "Tamil TAB Typewriter"
+msgstr "\"Typewriter\""
+
+#: ../rules/base.xml.in.h:373
+msgid "Tamil TSCII Typewriter"
+msgstr ""
+
+#: ../rules/base.xml.in.h:374
+#, fuzzy
+msgid "Tamil Unicode"
+msgstr "Latin Unicode"
+
+#: ../rules/base.xml.in.h:375
+msgid "Telugu"
+msgstr "Telugu"
+
+#: ../rules/base.xml.in.h:376
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:377
+msgid "Thailand"
+msgstr "Thailand"
+
+#: ../rules/base.xml.in.h:378
+msgid "Third level choosers"
+msgstr "Third level choosers"
+
+#: ../rules/base.xml.in.h:379
+msgid "Tilde (~) variant"
+msgstr "Tilde (~) variant"
+
+#: ../rules/base.xml.in.h:380
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:381
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:382
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:383
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:384
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:385
+msgid "Turkish"
+msgstr "Turkish"
+
+#: ../rules/base.xml.in.h:386
+#, fuzzy
+msgid "Typewriter"
+msgstr "\"Typewriter\""
+
+#: ../rules/base.xml.in.h:387
+msgid "U.S. English"
+msgstr "U.S. English"
+
+#: ../rules/base.xml.in.h:388
+#, fuzzy
+msgid "US keyboard with Bosnian digraphs"
+msgstr "US keyboard with Romanian letters"
+
+#: ../rules/base.xml.in.h:389
+#, fuzzy
+msgid "US keyboard with Bosnian letters"
+msgstr "US keyboard with Romanian letters"
+
+#: ../rules/base.xml.in.h:390
+#, fuzzy
+msgid "US keyboard with Croatian digraphs"
+msgstr "US keyboard with Croatian letters"
+
+#: ../rules/base.xml.in.h:391
+msgid "US keyboard with Croatian letters"
+msgstr "US keyboard with Croatian letters"
+
+#: ../rules/base.xml.in.h:392
+msgid "US keyboard with Lithuanian letters"
+msgstr "US keyboard with Lithuanian letters"
+
+#: ../rules/base.xml.in.h:393
+msgid "US keyboard with Maltian letters"
+msgstr "US keyboard with Maltian letters"
+
+#: ../rules/base.xml.in.h:394
+#, fuzzy
+msgid "US keyboard with Slovenian digraphs"
+msgstr "US keyboard with Romanian letters"
+
+#: ../rules/base.xml.in.h:395
+#, fuzzy
+msgid "US keyboard with Slovenian letters"
+msgstr "US keyboard with Romanian letters"
+
+#: ../rules/base.xml.in.h:396
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:397
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:398
+msgid "Ukraine"
+msgstr "Ukraine"
+
+#: ../rules/base.xml.in.h:399
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:400
+msgid "United Kingdom"
+msgstr "United Kingdom"
+
+#: ../rules/base.xml.in.h:401
+msgid "Urdu"
+msgstr "Urdu"
+
+#: ../rules/base.xml.in.h:402
+msgid "Use Bosnian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:403
+msgid "Use Croatian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:404
+msgid "Use Slovenian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:405
+msgid "Use guillemots for quotes"
+msgstr ""
+
+#: ../rules/base.xml.in.h:406
+msgid "Use keyboard LED to show alternative group."
+msgstr "Use keyboard LED to show alternative group."
+
+#: ../rules/base.xml.in.h:407
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:408
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: ../rules/base.xml.in.h:409
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:410
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:411
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:412
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: ../rules/base.xml.in.h:413
+msgid "With &lt;\\|&gt; key"
+msgstr "With &lt;\\|&gt; key"
+
+#: ../rules/base.xml.in.h:414
+msgid "With guillemots"
+msgstr "With guillemots"
+
+#: ../rules/base.xml.in.h:415
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:416
+msgid "Z and ZHE swapped"
+msgstr "Z and ZHE swapped"
+
+#: ../rules/base.xml.in.h:417
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:418
+msgid "azerty/digits"
+msgstr "azerty/digits"
+
+#: ../rules/base.xml.in.h:419
+msgid "digits"
+msgstr "digits"
+
+#: ../rules/base.xml.in.h:420
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:421
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:422
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, extended Backslash"
+
+#: ../rules/base.xml.in.h:423
+msgid "qwerty/digits"
+msgstr "qwerty/digits"
+
+#: ../rules/base.xml.in.h:424
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.xml.in.h:425
+msgid "si1452"
+msgstr "si1452"
+
+#~ msgid "\"Standard\""
+#~ msgstr "\"Standard\""
+
+#, fuzzy
+#~ msgid "Romanian keyboard with MS layout"
+#~ msgstr "Romanian keyboard with German letters"
+
+#, fuzzy
+#~ msgid "Romanian standard keyboard"
+#~ msgstr "Ukrainian standard RSTU"
+
+#, fuzzy
+#~ msgid "Serbia"
+#~ msgstr "Serbian"
+
+#~ msgid "Srp"
+#~ msgstr "Srp"
+
+#, fuzzy
+#~ msgid "Tamil INSCRIPT"
+#~ msgstr "Bengali"
+
+#~ msgid "US keyboard with Romanian letters"
+#~ msgstr "US keyboard with Romanian letters"
+
+#~ msgid "CloGaelach Laptop"
+#~ msgstr "CloGaelach Laptop"
+
+#~ msgid "Laptop"
+#~ msgstr "Laptop"
+
+#, fuzzy
+#~ msgid "Ogham IS434 laptop"
+#~ msgstr "IS434 laptop"
+
+#, fuzzy
+#~ msgid "Sinhala phonetic"
+#~ msgstr "Russian"
+
+#, fuzzy
+#~ msgid "Malayalam with Malayalam digits"
+#~ msgstr "With Malayalam digits"
+
+#, fuzzy
+#~ msgid "Devanagari INSCRIPT"
+#~ msgstr "Devanagari"
+
+#~ msgid "Dzo"
+#~ msgstr "Dzo"
+
+#~ msgid "Dzongkha"
+#~ msgstr "Dzongkha"
+
+#~ msgid "Finish and Swedish"
+#~ msgstr "Finish and Swedish"
+
+#, fuzzy
+#~ msgid "Gurmukhi INSCRIPT"
+#~ msgstr "Gurmukhi"
+
+#, fuzzy
+#~ msgid "Kannada INSCRIPT"
+#~ msgstr "Kannada"
+
+#~ msgid "Smi"
+#~ msgstr "Smi"
+
+#~ msgid "Ben"
+#~ msgstr "Ben"
+
+#~ msgid "Deva"
+#~ msgstr "Deva"
+
+#~ msgid "Guj"
+#~ msgstr "Guj"
+
+#~ msgid "INSCRIPT layout"
+#~ msgstr "INSCRIPT layout"
+
+#~ msgid "Iku"
+#~ msgstr "Iku"
+
+#~ msgid "Ogam"
+#~ msgstr "Ogam"
+
+#~ msgid "Ori"
+#~ msgstr "Ori"
+
+#~ msgid "Sin"
+#~ msgstr "Sin"
+
+#~ msgid "Sinhala"
+#~ msgstr "Sinhala"
+
+#~ msgid "Tam"
+#~ msgstr "Tam"
+
+#~ msgid "Tel"
+#~ msgstr "Tel"
+
+#~ msgid "Typewrite-style keymap; TAB encoding"
+#~ msgstr "Typewrite-style keymap; TAB encoding"
+
+#, fuzzy
+#~ msgid "Typewrite-style keymap; TSCII encoding"
+#~ msgstr "Typewrite-style keymap; TAB encoding"
+
+#~ msgid "Urd"
+#~ msgstr "Urd"
+
+#~ msgid "Typewrite-style keymap; Unicode encoding"
+#~ msgstr "Typewrite-style keymap; Unicode encoding"
diff --git a/xorg-server/xkeyboard-config/po/ka.po b/xorg-server/xkeyboard-config/po/ka.po
index f1dad4d71..52ea245e2 100644
--- a/xorg-server/xkeyboard-config/po/ka.po
+++ b/xorg-server/xkeyboard-config/po/ka.po
@@ -1,2274 +1,2274 @@
-# translation of xkeyboard-config.po to Georgian
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Vladimer Sichinava <vlsichinava@gmail.com>, 2006.
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-17 21:37+0100\n"
-"PO-Revision-Date: 2006-09-20 22:48+0200\n"
-"Last-Translator: Vladimer Sichinava <vlsichinava@gmail.com>\n"
-"Language-Team: Georgian <www.gia.ge>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=1; plural=0\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "101/104 key Compatible"
-msgstr "101/104 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ თáƒáƒ•áƒ¡áƒ”ბáƒáƒ“ი"
-
-#: ../rules/base.xml.in.h:3
-msgid "101/qwerty/comma/Dead keys"
-msgstr ""
-"pc101, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
-"(dead keys)"
-
-#: ../rules/base.xml.in.h:4
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr ""
-"pc101, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
-"(dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/qwerty/dot/Dead keys"
-msgstr ""
-"pc101, qwerty, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr ""
-"pc101, qwerty, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwertz/comma/Dead keys"
-msgstr ""
-"pc101, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
-"(dead keys)"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr ""
-"pc101, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
-"(dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwertz/dot/Dead keys"
-msgstr ""
-"pc101, qwertz, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr ""
-"pc101, qwertz, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:11
-msgid "102/qwerty/comma/Dead keys"
-msgstr ""
-"pc102, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
-"(dead keys)"
-
-#: ../rules/base.xml.in.h:12
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr ""
-"pc102, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
-"(dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:13
-msgid "102/qwerty/dot/Dead keys"
-msgstr ""
-"pc102, qwertz, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr ""
-"pc102, qwerty, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwertz/comma/Dead keys"
-msgstr ""
-"pc102, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
-"(dead keys)"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr ""
-"pc102, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
-"(dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwertz/dot/Dead keys"
-msgstr ""
-"pc102, qwertz, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr ""
-"pc102, qwertz, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:19
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:20
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:21
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:22
-msgid "ACPI Standard"
-msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ACPI"
-
-#: ../rules/base.xml.in.h:23
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:24
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:25
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:26
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:27
-msgid "Add the EuroSign to the 2 key."
-msgstr ""
-"ევრáƒáƒ¡ ნიშნის 2იáƒáƒœáƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
-"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
-
-#: ../rules/base.xml.in.h:28
-msgid "Add the EuroSign to the 5 key."
-msgstr ""
-"ევრáƒáƒ¡ ნიშნის 5იáƒáƒœáƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
-"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
-
-#: ../rules/base.xml.in.h:29
-msgid "Add the EuroSign to the E key."
-msgstr ""
-"ევრáƒáƒ¡ ნიშნის E áƒáƒ¡áƒáƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
-"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
-
-#: ../rules/base.xml.in.h:30
-msgid "Add the standard behavior to Menu key."
-msgstr ""
-"მენიუს კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒ¡áƒ—ვის "
-"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ქცევის "
-"მინიჭებáƒ."
-
-#: ../rules/base.xml.in.h:31
-msgid "Adding the EuroSign to certain keys"
-msgstr ""
-"ევრáƒáƒ¡ ნიშნის ზáƒáƒ’იერთ "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბზე დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
-
-#: ../rules/base.xml.in.h:32
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:33
-msgid "Afg"
-msgstr "áƒáƒ•áƒ¦"
-
-#: ../rules/base.xml.in.h:34
-msgid "Afghanistan"
-msgstr "áƒáƒ•áƒ¦áƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:35
-msgid "Akan"
-msgstr "áƒáƒ™áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:36
-msgid "Alb"
-msgstr "áƒáƒšáƒ‘"
-
-#: ../rules/base.xml.in.h:37
-msgid "Albania"
-msgstr "áƒáƒšáƒ‘áƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:38
-msgid "Alt and Meta are on the Alt keys (default)."
-msgstr ""
-"Alt დრMeta, Alt ღილáƒáƒ™áƒ–ე "
-"(ნáƒáƒ’ულისხმევიáƒ)."
-
-#: ../rules/base.xml.in.h:39
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr ""
-"Alt შეესáƒáƒ‘áƒáƒ›áƒ”ბრმáƒáƒ áƒ¯áƒ•áƒ”ნრWin "
-"ღილáƒáƒ™áƒ¡, Super კი Menu-ს."
-
-#: ../rules/base.xml.in.h:40
-msgid "Alt+CapsLock changes group."
-msgstr "Alt + CapsLock ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:41
-msgid "Alt+Ctrl changes group."
-msgstr "Alt + Ctrl ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:42
-msgid "Alt+Shift changes group."
-msgstr "Alt + Shift ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:43
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:44
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win კლáƒáƒ•áƒ˜áƒ¨áƒ—რქცევáƒ"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alternative"
-msgstr "áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alternative international (former us_intl)"
-msgstr ""
-"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"ინტერნáƒáƒªáƒ˜áƒáƒœáƒáƒšáƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alternative, Sun dead keys"
-msgstr ""
-"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜, Sun სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბით (dead keys)"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alternative, eliminate dead keys"
-msgstr ""
-"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:49
-msgid "And"
-msgstr "áƒáƒœáƒ“"
-
-#: ../rules/base.xml.in.h:50
-msgid "Andorra"
-msgstr "áƒáƒœáƒ“áƒáƒ áƒ"
-
-#: ../rules/base.xml.in.h:51
-msgid "Apostrophe (') variant"
-msgstr "(') áƒáƒžáƒáƒ¡áƒ¢áƒ áƒáƒ¤áƒ˜áƒáƒœáƒ˜ ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜"
-
-#: ../rules/base.xml.in.h:52
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:53
-msgid "Apple Laptop"
-msgstr "Apple ლეპტáƒáƒžáƒ˜"
-
-#: ../rules/base.xml.in.h:54
-msgid "Ara"
-msgstr "áƒáƒ áƒ"
-
-#: ../rules/base.xml.in.h:55
-msgid "Arabic"
-msgstr "áƒáƒ áƒáƒ‘ული"
-
-#: ../rules/base.xml.in.h:56
-msgid "Arm"
-msgstr "სáƒáƒ›áƒ®"
-
-#: ../rules/base.xml.in.h:57
-msgid "Armenia"
-msgstr "სáƒáƒ›áƒ®áƒ”თი"
-
-#: ../rules/base.xml.in.h:58
-msgid "Aze"
-msgstr "áƒáƒ–ერ"
-
-#: ../rules/base.xml.in.h:59
-msgid "Azerbaijan"
-msgstr "áƒáƒ–ერბáƒáƒ˜áƒ¯áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:60
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:61
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:62
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:63
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:64
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:65
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:66
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:67
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:68
-msgid "Ban"
-msgstr "ბáƒáƒœ"
-
-#: ../rules/base.xml.in.h:69
-msgid "Bangladesh"
-msgstr "ბáƒáƒœáƒ’ლáƒáƒ“ეში"
-
-#: ../rules/base.xml.in.h:70
-msgid "Bel"
-msgstr "ბელ"
-
-#: ../rules/base.xml.in.h:71
-msgid "Belarus"
-msgstr "ბელáƒáƒ áƒ£áƒ¡áƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:72
-msgid "Belgium"
-msgstr "ბელგიáƒ"
-
-#: ../rules/base.xml.in.h:73
-msgid "Bengali"
-msgstr "ბენგáƒáƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:74
-msgid "Bengali Probhat"
-msgstr "ბენგáƒáƒšáƒ˜áƒ¡ პრáƒáƒ‘áƒáƒ¢áƒ˜"
-
-#: ../rules/base.xml.in.h:75
-msgid "Bgr"
-msgstr "ბáƒáƒšáƒ’"
-
-#: ../rules/base.xml.in.h:76
-msgid "Bhu"
-msgstr "ბუტ"
-
-#: ../rules/base.xml.in.h:77
-msgid "Bhutan"
-msgstr "ბუტáƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:78
-msgid "Bih"
-msgstr "ბáƒáƒ¡áƒœ"
-
-#: ../rules/base.xml.in.h:79
-msgid "Blr"
-msgstr "ბელ"
-
-#: ../rules/base.xml.in.h:80
-msgid "Bosnia and Herzegovina"
-msgstr "ბáƒáƒ¡áƒœáƒ˜áƒ დრჰერცáƒáƒ’áƒáƒ•áƒ˜áƒœáƒ"
-
-#: ../rules/base.xml.in.h:81
-msgid "Both Alt keys together change group."
-msgstr ""
-"áƒáƒ áƒ˜áƒ•áƒ” Alt ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:82
-msgid "Both Ctrl keys together change group."
-msgstr ""
-"áƒáƒ áƒ˜áƒ•áƒ” Ctrl ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:83
-msgid "Both Shift keys together change group."
-msgstr ""
-"áƒáƒ áƒ˜áƒ•áƒ” Shift ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:84
-msgid "Both Win-keys switch group while pressed."
-msgstr ""
-"áƒáƒ áƒ˜áƒ•áƒ” Win ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:85
-msgid "Bra"
-msgstr "ბრáƒáƒ–"
-
-#: ../rules/base.xml.in.h:86
-msgid "Brazil"
-msgstr "ბრáƒáƒ–ილიáƒ"
-
-#: ../rules/base.xml.in.h:87
-msgid "Brazilian ABNT2"
-msgstr "ბრáƒáƒ–ილიური ABNT2"
-
-#: ../rules/base.xml.in.h:88
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:89
-msgid "Bulgaria"
-msgstr "ბულგáƒáƒ áƒ”თი"
-
-#: ../rules/base.xml.in.h:90
-msgid "Cambodia"
-msgstr "კáƒáƒ›áƒ‘áƒáƒ¯áƒ"
-
-#: ../rules/base.xml.in.h:91
-msgid "Can"
-msgstr "კáƒáƒœ"
-
-#: ../rules/base.xml.in.h:92
-msgid "Canada"
-msgstr "კáƒáƒœáƒáƒ“áƒ"
-
-#: ../rules/base.xml.in.h:93
-msgid "Caps Lock is Compose."
-msgstr ""
-"ღილáƒáƒ™áƒ˜ Caps Lock შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
-
-#: ../rules/base.xml.in.h:94
-msgid "CapsLock LED shows alternative group."
-msgstr ""
-"CapsLock-ის ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒ©áƒ•áƒ”ნებს "
-"დáƒáƒ›áƒáƒ¢áƒ”ბით ჯგუფებს."
-
-#: ../rules/base.xml.in.h:95
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
-msgstr ""
-"მუშáƒáƒáƒ‘ს რáƒáƒ’áƒáƒ áƒª დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ Shift, "
-"ის áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ის "
-"მáƒáƒ¥áƒ›áƒ”დებáƒáƒ¡."
-
-#: ../rules/base.xml.in.h:96
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
-msgstr ""
-"მუშáƒáƒáƒ‘ს რáƒáƒ’áƒáƒ áƒª დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ Shift, "
-"ის áƒáƒ  áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ის "
-"მáƒáƒ¥áƒ›áƒ”დებáƒáƒ¡."
-
-#: ../rules/base.xml.in.h:97
-msgid "CapsLock just locks the Shift modifier."
-msgstr ""
-"CapsLock-ი ბლáƒáƒ™áƒáƒ•áƒ¡ Shift "
-"მáƒáƒ“იფიკáƒáƒ¢áƒáƒ áƒ¡."
-
-#: ../rules/base.xml.in.h:98
-msgid "CapsLock key behavior"
-msgstr "CapsLock ღილáƒáƒ™áƒ˜áƒ¡ ქცევáƒ"
-
-#: ../rules/base.xml.in.h:99
-msgid "CapsLock key changes group."
-msgstr "CapsLock ღილáƒáƒ™áƒ˜ ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:100
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr ""
-"CapsLock რთáƒáƒ•áƒ¡ Shift-ს, ეხებრყველრ"
-"ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:101
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr ""
-"CapsLock რთáƒáƒ•áƒ¡ áƒáƒšáƒ¤áƒáƒ•áƒ˜áƒ¢áƒ˜áƒ¡ "
-"სიმბáƒáƒšáƒáƒ”ბის უბრáƒáƒšáƒ "
-"კáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡."
-
-#: ../rules/base.xml.in.h:102
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
-msgstr ""
-"რთáƒáƒ•áƒ¡ შიდრკáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡. "
-"Shift áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ს. "
-
-#: ../rules/base.xml.in.h:103
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
-msgstr ""
-"რთáƒáƒ•áƒ¡ შიდრკáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡. "
-"Shift áƒáƒ  ეხებრCapsLock-ს. "
-
-#: ../rules/base.xml.in.h:104
-msgid "Catalan variant with middle-dot L"
-msgstr "კáƒáƒ¢áƒáƒšáƒáƒœáƒ£áƒ áƒ˜ სáƒáƒ¨áƒ£áƒáƒšáƒ L-ით"
-
-#: ../rules/base.xml.in.h:105
-msgid "Che"
-msgstr "შვეიც"
-
-#: ../rules/base.xml.in.h:106
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:107
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr ""
-"Cherry Blue Line CyBo@rd (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
-
-#: ../rules/base.xml.in.h:108
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:109
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:110
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:111
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:112
-msgid "Classic Dvorak"
-msgstr "კლáƒáƒ¡áƒ˜áƒ™áƒ£áƒ áƒ˜ Dvorak"
-
-#: ../rules/base.xml.in.h:113
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:114
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:115
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
-
-#: ../rules/base.xml.in.h:116
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
-
-#: ../rules/base.xml.in.h:117
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
-
-#: ../rules/base.xml.in.h:118
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:119
-msgid "Compose key position"
-msgstr "Compose კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒ¡ პáƒáƒ–იციáƒ"
-
-#: ../rules/base.xml.in.h:120
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-"კáƒáƒœáƒ’áƒáƒ¡ დემáƒáƒ™áƒ áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"რესპუბლიკáƒ"
-
-#: ../rules/base.xml.in.h:121
-msgid "Croatia"
-msgstr "ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:122
-msgid "Ctrl key at bottom left"
-msgstr "Ctrl ღილáƒáƒ™áƒ˜ ქვემáƒáƒ— მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ•"
-
-#: ../rules/base.xml.in.h:123
-msgid "Ctrl key at left of 'A'"
-msgstr "Ctrl ღილáƒáƒ™áƒ˜ A áƒáƒ¡áƒáƒ¡ მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ•"
-
-#: ../rules/base.xml.in.h:124
-msgid "Ctrl key position"
-msgstr ""
-"Ctrl ღილáƒáƒ™áƒ˜áƒ¡ áƒáƒ“გილმდებáƒáƒ áƒ”áƒáƒ‘áƒ"
-
-#: ../rules/base.xml.in.h:125
-msgid "Ctrl+Shift changes group."
-msgstr "Ctrl Shift ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:126
-msgid "Cyrillic"
-msgstr "კირილიცáƒ"
-
-#: ../rules/base.xml.in.h:127
-msgid "Cze"
-msgstr "ჩეხ"
-
-#: ../rules/base.xml.in.h:128
-msgid "Czechia"
-msgstr "ჩეხეთი"
-
-#: ../rules/base.xml.in.h:129
-msgid "DRC"
-msgstr "DRC"
-
-#: ../rules/base.xml.in.h:130
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:131
-msgid "Dead acute"
-msgstr "სპეც. სიმბáƒáƒšáƒ Dead acute"
-
-#: ../rules/base.xml.in.h:132
-msgid "Dead grave acute"
-msgstr "სპეც. სიმბáƒáƒšáƒ Dead grave acute"
-
-#: ../rules/base.xml.in.h:133
-msgid "Default numpad keys."
-msgstr ""
-"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ციფრული "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი"
-
-#: ../rules/base.xml.in.h:134
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:135
-msgid "Dell 101-key PC"
-msgstr "Dell 101-კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒáƒœáƒ˜ PC"
-
-#: ../rules/base.xml.in.h:136
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude series laptop"
-
-#: ../rules/base.xml.in.h:137
-msgid "Dell USB Multimedia Keybard"
-msgstr "Dell USB Multimedia Keybard"
-
-#: ../rules/base.xml.in.h:138
-msgid "Denmark"
-msgstr "დáƒáƒœáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:139
-msgid "Deu"
-msgstr "გერ"
-
-#: ../rules/base.xml.in.h:140
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:141
-msgid "Diamond 9801 / 9802 series"
-msgstr "მáƒáƒ“ელები Diamond 9801 / 9802 series"
-
-#: ../rules/base.xml.in.h:142
-msgid "Dnk"
-msgstr "დáƒáƒœ"
-
-#: ../rules/base.xml.in.h:143
-msgid "Dvorak"
-msgstr "დვáƒáƒ áƒáƒ™áƒ£áƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:144
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr ""
-"Dvorak, პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜ ფრჩხილები \"1/!\" "
-"ღილáƒáƒ™áƒ–ეáƒ"
-
-#: ../rules/base.xml.in.h:145
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr ""
-"Dvorak, პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜ ფრჩხილები, "
-"ფრჩხილების კლáƒáƒ•áƒ˜áƒ¨áƒ–ე"
-
-#: ../rules/base.xml.in.h:146
-msgid "Eliminate dead keys"
-msgstr ""
-"სპეც ღილáƒáƒ™áƒ”ბის (dead keys) გáƒáƒ›áƒáƒ áƒ—ვáƒ"
-
-#: ../rules/base.xml.in.h:147
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:148
-msgid "Epo"
-msgstr "ეპáƒ"
-
-#: ../rules/base.xml.in.h:149
-msgid "Esp"
-msgstr "ესპ"
-
-#: ../rules/base.xml.in.h:150
-msgid "Esperanto"
-msgstr "ესპერáƒáƒœáƒ¢áƒ"
-
-#: ../rules/base.xml.in.h:151
-msgid "Est"
-msgstr "ესტ"
-
-#: ../rules/base.xml.in.h:152
-msgid "Estonia"
-msgstr "ესტáƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:153
-msgid "Evdev-managed keyboard"
-msgstr "Evdev-managed keyboard"
-
-#: ../rules/base.xml.in.h:154
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:155
-msgid "Ewe"
-msgstr "ივი"
-
-#: ../rules/base.xml.in.h:156
-msgid "Extended"
-msgstr "გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბული"
-
-#: ../rules/base.xml.in.h:157
-msgid "Extended Backslash"
-msgstr ""
-"Backslash გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბული ფუნქციები"
-
-#: ../rules/base.xml.in.h:158
-msgid "F-letter (F) variant"
-msgstr "F-ს ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜"
-
-#: ../rules/base.xml.in.h:159
-msgid "Fao"
-msgstr "ფáƒáƒ "
-
-#: ../rules/base.xml.in.h:160
-msgid "Faroe Islands"
-msgstr "ფáƒáƒ áƒ”რის კუნძულები"
-
-#: ../rules/base.xml.in.h:161
-msgid "Fin"
-msgstr "ფინ"
-
-#: ../rules/base.xml.in.h:162
-msgid "Finland"
-msgstr "ფინეთი"
-
-#: ../rules/base.xml.in.h:163
-msgid "Fra"
-msgstr "ფრáƒ"
-
-#: ../rules/base.xml.in.h:164
-msgid "France"
-msgstr "სáƒáƒ¤áƒ áƒáƒœáƒ’ეთი"
-
-#: ../rules/base.xml.in.h:165
-msgid "French"
-msgstr "ფრáƒáƒœáƒ’ული"
-
-#: ../rules/base.xml.in.h:166
-msgid "French (Macintosh)"
-msgstr "ფრáƒáƒœáƒ’ული (Macintosh)"
-
-#: ../rules/base.xml.in.h:167
-msgid "French (legacy)"
-msgstr "ფრáƒáƒœáƒ’ული (legacy)"
-
-#: ../rules/base.xml.in.h:168
-msgid "French Dvorak"
-msgstr "ფრáƒáƒœáƒ’ული Dvorak"
-
-#: ../rules/base.xml.in.h:169
-msgid "French, Sun dead keys"
-msgstr "ფრáƒáƒœáƒ’ული, Sun dead keys"
-
-#: ../rules/base.xml.in.h:170
-msgid "French, eliminate dead keys"
-msgstr "ფრáƒáƒœáƒ’ული, dead keys გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:171
-msgid "Fula"
-msgstr "ფულáƒ"
-
-#: ../rules/base.xml.in.h:172
-msgid "GBr"
-msgstr "ბრიტ"
-
-#: ../rules/base.xml.in.h:173
-msgid "Ga"
-msgstr "გáƒ"
-
-#: ../rules/base.xml.in.h:174
-msgid "Generic 101-key PC"
-msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 101-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ PC"
-
-#: ../rules/base.xml.in.h:175
-msgid "Generic 102-key (Intl) PC"
-msgstr ""
-"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 102-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ (Intl) PC"
-
-#: ../rules/base.xml.in.h:176
-msgid "Generic 104-key PC"
-msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 104-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ PC"
-
-#: ../rules/base.xml.in.h:177
-msgid "Generic 105-key (Intl) PC"
-msgstr ""
-"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 105-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ (Intl) PC"
-
-#: ../rules/base.xml.in.h:178
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:179
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:180
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:181
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:182
-msgid "Geo"
-msgstr "ქáƒáƒ áƒ—"
-
-#: ../rules/base.xml.in.h:183
-msgid "Georgia"
-msgstr "სáƒáƒ¥áƒáƒ áƒ—ველáƒ"
-
-#: ../rules/base.xml.in.h:184
-msgid "German (Macintosh)"
-msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜ (Macintosh)"
-
-#: ../rules/base.xml.in.h:185
-msgid "German, Sun dead keys"
-msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜, Sun dead keys"
-
-#: ../rules/base.xml.in.h:186
-msgid "German, eliminate dead keys"
-msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜, სპეც dead keys გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:187
-msgid "Germany"
-msgstr "გერმáƒáƒœáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:188
-msgid "Gha"
-msgstr "გáƒáƒœ"
-
-#: ../rules/base.xml.in.h:189
-msgid "Ghana"
-msgstr "გáƒáƒœáƒ"
-
-#: ../rules/base.xml.in.h:190
-msgid "Gre"
-msgstr "სáƒáƒ‘"
-
-#: ../rules/base.xml.in.h:191
-msgid "Greece"
-msgstr "სáƒáƒ‘ერძნეთი"
-
-#: ../rules/base.xml.in.h:192
-msgid "Group Shift/Lock behavior"
-msgstr ""
-"გáƒáƒœáƒšáƒáƒ’ების შეცვლის ფუნქციáƒ"
-
-#: ../rules/base.xml.in.h:193
-msgid "Gujarati"
-msgstr "გუჯáƒáƒ áƒáƒ—ი"
-
-#: ../rules/base.xml.in.h:194
-msgid "Gurmukhi"
-msgstr "გურმუხი"
-
-#: ../rules/base.xml.in.h:195
-msgid "Gyration"
-msgstr "გირáƒáƒ¨áƒœ"
-
-#: ../rules/base.xml.in.h:196
-msgid "Hausa"
-msgstr "ჰáƒáƒ£áƒ¡áƒ"
-
-#: ../rules/base.xml.in.h:197
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:198
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:199
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:200
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:201
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:202
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:203
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:204
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:205
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:206
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:207
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:208
-msgid "Hrv"
-msgstr "ხáƒáƒ "
-
-#: ../rules/base.xml.in.h:209
-msgid "Hun"
-msgstr "უნგ"
-
-#: ../rules/base.xml.in.h:210
-msgid "Hungary"
-msgstr "უნგრეთი"
-
-#: ../rules/base.xml.in.h:211
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin ღილáƒáƒ™áƒ”ბს."
-
-#: ../rules/base.xml.in.h:212
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:213
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:214
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:215
-msgid "IBM Rapid Access II (alternate option)"
-msgstr ""
-"IBM Rapid Access II (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
-
-#: ../rules/base.xml.in.h:216
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:217
-msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#: ../rules/base.xml.in.h:218
-msgid "ISO Alternate"
-msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი ISO"
-
-#: ../rules/base.xml.in.h:219
-msgid "Iceland"
-msgstr "ისლáƒáƒœáƒ“იáƒ"
-
-#: ../rules/base.xml.in.h:220
-msgid "Ind"
-msgstr "ინდ"
-
-#: ../rules/base.xml.in.h:221
-msgid "India"
-msgstr "ინდáƒáƒ”თი"
-
-#: ../rules/base.xml.in.h:222
-msgid "International (with dead keys)"
-msgstr ""
-"სáƒáƒ”რთáƒáƒ¨áƒáƒ áƒ˜áƒ¡áƒ, სპეც "
-"ღილáƒáƒ™áƒ”ბით (dead keys)"
-
-#: ../rules/base.xml.in.h:223
-msgid "Inuktitut"
-msgstr "ინუკტიტუტი"
-
-#: ../rules/base.xml.in.h:224
-msgid "Iran"
-msgstr "ირáƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:225
-msgid "Iraq"
-msgstr "ერáƒáƒ§áƒ˜"
-
-#: ../rules/base.xml.in.h:226
-msgid "Ireland"
-msgstr "ირლáƒáƒœáƒ“იáƒ"
-
-#: ../rules/base.xml.in.h:227
-msgid "Irl"
-msgstr "ირლ"
-
-#: ../rules/base.xml.in.h:228
-msgid "Irn"
-msgstr "ირáƒ"
-
-#: ../rules/base.xml.in.h:229
-msgid "Irq"
-msgstr "ერáƒ"
-
-#: ../rules/base.xml.in.h:230
-msgid "Isl"
-msgstr "ისლ"
-
-#: ../rules/base.xml.in.h:231
-msgid "Isr"
-msgstr "ებრ"
-
-#: ../rules/base.xml.in.h:232
-msgid "Israel"
-msgstr "ისრáƒáƒ”ლი"
-
-#: ../rules/base.xml.in.h:233
-msgid "Ita"
-msgstr "იტáƒ"
-
-#: ../rules/base.xml.in.h:234
-msgid "Italy"
-msgstr "იტáƒáƒšáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:235
-msgid "Japan"
-msgstr "იáƒáƒžáƒáƒœáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:236
-msgid "Japan (PC-98xx Series)"
-msgstr "Japan (PC-98xx Series)"
-
-#: ../rules/base.xml.in.h:237
-msgid "Japanese 106-key"
-msgstr "იáƒáƒžáƒáƒœáƒ˜áƒ 106-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:238
-msgid "Jpn"
-msgstr "იáƒáƒž"
-
-#: ../rules/base.xml.in.h:239
-msgid "Kannada"
-msgstr "კáƒáƒœáƒœáƒáƒ“áƒ"
-
-#: ../rules/base.xml.in.h:240
-msgid "Kashubian"
-msgstr "კáƒáƒ¨áƒ£áƒ‘იáƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:241
-msgid "Kaz"
-msgstr "ყáƒáƒ–"
-
-#: ../rules/base.xml.in.h:242
-msgid "Kazakh with Russian"
-msgstr "ყáƒáƒ–áƒáƒ®áƒ£áƒ áƒ˜ რუსულთáƒáƒœ"
-
-#: ../rules/base.xml.in.h:243
-msgid "Kazakhstan"
-msgstr "ყáƒáƒ–áƒáƒ®áƒ”თი"
-
-#: ../rules/base.xml.in.h:244
-msgid "Keypad"
-msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒœáƒ”ლით"
-
-#: ../rules/base.xml.in.h:245
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:246
-msgid "Khm"
-msgstr "კხმ"
-
-#: ../rules/base.xml.in.h:247
-msgid "Kor"
-msgstr "კáƒáƒ "
-
-#: ../rules/base.xml.in.h:248
-msgid "Korea, Republic of"
-msgstr "კáƒáƒ áƒ”áƒ, რესპუბლიკáƒ"
-
-#: ../rules/base.xml.in.h:249
-msgid "Korean 106-key"
-msgstr "კáƒáƒ áƒ”ული 106-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:250
-msgid "Kotoistus"
-msgstr "Kotoistus"
-
-#: ../rules/base.xml.in.h:251
-msgid "Kurdish, (F)"
-msgstr "ქურთული, (F)"
-
-#: ../rules/base.xml.in.h:252
-msgid "Kurdish, Arabic-Latin"
-msgstr "ქურთული, áƒáƒ áƒáƒ‘ულ-ლáƒáƒ—ინური"
-
-#: ../rules/base.xml.in.h:253
-msgid "Kurdish, Latin Alt-Q"
-msgstr "ქურთული, ლáƒáƒ—ინური Alt-Q"
-
-#: ../rules/base.xml.in.h:254
-msgid "Kurdish, Latin Q"
-msgstr "ქურთული, ლáƒáƒ—ინური Q"
-
-#: ../rules/base.xml.in.h:255
-msgid "Kyr"
-msgstr "ყირ"
-
-#: ../rules/base.xml.in.h:256
-msgid "Kyrgyzstan"
-msgstr "ყირღიზეთი"
-
-#: ../rules/base.xml.in.h:257
-msgid "LAm"
-msgstr "ლáƒáƒ—áƒáƒ›"
-
-#: ../rules/base.xml.in.h:258
-msgid "Lao"
-msgstr "ლáƒáƒáƒ¡áƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:259
-msgid "Laos"
-msgstr "ლáƒáƒáƒ¡áƒ˜"
-
-#: ../rules/base.xml.in.h:260
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr ""
-"Compaq ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქის "
-"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ (მáƒáƒ’. Armada)"
-
-#: ../rules/base.xml.in.h:261
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr ""
-"Compaq ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქის "
-"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ (მáƒáƒ’. Presario)"
-
-#: ../rules/base.xml.in.h:262
-msgid "Laptop/notebook Dell Inspiron 6xxx/8xxx"
-msgstr "ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქი Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:263
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქი eMachines m68xx"
-
-#: ../rules/base.xml.in.h:264
-msgid "Latin"
-msgstr "ლáƒáƒ—ინური"
-
-#: ../rules/base.xml.in.h:265
-msgid "Latin American"
-msgstr "ლáƒáƒ—ინურ áƒáƒ›áƒ”რიკული"
-
-#: ../rules/base.xml.in.h:266
-msgid "Latin Unicode"
-msgstr "ლáƒáƒ—ინური უნიკáƒáƒ“ი"
-
-#: ../rules/base.xml.in.h:267
-msgid "Latin Unicode qwerty"
-msgstr "ლáƒáƒ—ინური უნიკáƒáƒ“ი qwerty"
-
-#: ../rules/base.xml.in.h:268
-msgid "Latin qwerty"
-msgstr "ლáƒáƒ—ინური qwerty"
-
-#: ../rules/base.xml.in.h:269
-msgid "Latin with guillemets"
-msgstr ""
-"ლáƒáƒ—ინური ფრáƒáƒœáƒ’ული "
-"ბრჭყáƒáƒšáƒ”ბით"
-
-#: ../rules/base.xml.in.h:270
-msgid "Latvia"
-msgstr "ლáƒáƒ¢áƒ•áƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:271
-msgid "Left Alt is swapped with left Win-key."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრAlt-ი შეცვლილირWin "
-"ღილáƒáƒ™áƒ˜áƒ—"
-
-#: ../rules/base.xml.in.h:272
-msgid "Left Alt key changes group."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:273
-msgid "Left Alt key switches group while pressed."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს დáƒáƒ­áƒ”რის დრáƒáƒ¡."
-
-#: ../rules/base.xml.in.h:274
-msgid "Left Ctrl key changes group."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:275
-msgid "Left Shift key changes group."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრShift ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:276
-msgid "Left Win-key changes group."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:277
-msgid "Left Win-key is Compose."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ "
-"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
-
-#: ../rules/base.xml.in.h:278
-msgid "Left Win-key switches group while pressed."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს დáƒáƒ­áƒ”რის დრáƒáƒ¡."
-
-#: ../rules/base.xml.in.h:279
-msgid "Left handed Dvorak"
-msgstr "Dvorak ცáƒáƒªáƒ˜áƒ”ბისთვის"
-
-#: ../rules/base.xml.in.h:280
-msgid "Lithuania"
-msgstr "ლიტვáƒ"
-
-#: ../rules/base.xml.in.h:281
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:282
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:283
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:284
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:285
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:286
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: ../rules/base.xml.in.h:287
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr ""
-"Logitech Cordless Desktop Pro (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
-
-#: ../rules/base.xml.in.h:288
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr ""
-"Logitech Cordless Desktop Pro (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜2)"
-
-#: ../rules/base.xml.in.h:289
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:290
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:291
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:292
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:293
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:294
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:295
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:296
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:297
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:298
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:299
-msgid "Ltu"
-msgstr "ლიტ"
-
-#: ../rules/base.xml.in.h:300
-msgid "Lva"
-msgstr "ლáƒáƒ¢áƒ•"
-
-#: ../rules/base.xml.in.h:301
-msgid "Macedonia"
-msgstr "მáƒáƒ™áƒ”დáƒáƒœáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:302
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:303
-msgid "Macintosh Old"
-msgstr "Macintosh ძველი"
-
-#: ../rules/base.xml.in.h:304
-msgid "Macintosh layout"
-msgstr "Macintosh-ის გáƒáƒœáƒšáƒáƒ’ებáƒ"
-
-#: ../rules/base.xml.in.h:305
-msgid "Macintosh layout, eliminate dead keys"
-msgstr ""
-"Macintosh-ის გáƒáƒœáƒšáƒáƒ’ებáƒ, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:306
-msgid "Make CapsLock an additional Ctrl."
-msgstr ""
-"გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე CapsLock რáƒáƒ’áƒáƒ áƒª "
-"დáƒáƒ›áƒáƒ¢áƒ”ბითი Ctrl კლáƒáƒ•áƒ˜áƒ¨áƒ˜."
-
-#: ../rules/base.xml.in.h:307
-msgid "Mal"
-msgstr "მáƒáƒš"
-
-#: ../rules/base.xml.in.h:308
-msgid "Malayalam"
-msgstr "მáƒáƒšáƒáƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:309
-msgid "Maldives"
-msgstr "მáƒáƒšáƒ“ივები"
-
-#: ../rules/base.xml.in.h:310
-msgid "Malta"
-msgstr "მáƒáƒšáƒ¢áƒ"
-
-#: ../rules/base.xml.in.h:311
-msgid "Maltese keyboard with US layout"
-msgstr ""
-"მáƒáƒšáƒ¢áƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ áƒáƒ¨áƒ¨-ს "
-"გáƒáƒœáƒšáƒáƒ’ებით"
-
-#: ../rules/base.xml.in.h:312
-msgid "Mao"
-msgstr "მáƒáƒ"
-
-#: ../rules/base.xml.in.h:313
-msgid "Maori"
-msgstr "მáƒáƒáƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:314
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:315
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:316
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:317
-msgid "Menu is Compose."
-msgstr ""
-"Menu ღილáƒáƒ™áƒ˜ შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ის "
-"ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:318
-msgid "Menu key changes group."
-msgstr "Menu-ს ღილáƒáƒ™áƒ˜ ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:319
-msgid "Meta is mapped to the Win-keys."
-msgstr ""
-"Мета შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin ღილáƒáƒ™áƒ”ბს."
-
-#: ../rules/base.xml.in.h:320
-msgid "Meta is mapped to the left Win-key."
-msgstr ""
-"Мета შეესáƒáƒ‘áƒáƒ›áƒ”ბრმáƒáƒ áƒªáƒ®áƒ”ნრWin "
-"ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:321
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:322
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, შვედური"
-
-#: ../rules/base.xml.in.h:323
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:324
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:325
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr " Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:326
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:327
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:328
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:329
-msgid "Miscellaneous compatibility options"
-msgstr ""
-"თáƒáƒ•áƒ¡áƒ”ბáƒáƒ“áƒáƒ‘ის სხვáƒáƒ“áƒáƒ¡áƒ®áƒ•áƒ "
-"პáƒáƒ áƒáƒ›áƒ”ტრი"
-
-#: ../rules/base.xml.in.h:330
-msgid "Mkd"
-msgstr "მáƒáƒ™"
-
-#: ../rules/base.xml.in.h:331
-msgid "Mlt"
-msgstr "მáƒáƒšáƒ¢"
-
-#: ../rules/base.xml.in.h:332
-msgid "Mmr"
-msgstr "მიáƒáƒœ"
-
-#: ../rules/base.xml.in.h:333
-msgid "Mng"
-msgstr "მáƒáƒœáƒ¦"
-
-#: ../rules/base.xml.in.h:334
-msgid "Mongolia"
-msgstr "მáƒáƒœáƒ¦áƒáƒšáƒ”თი"
-
-#: ../rules/base.xml.in.h:335
-msgid "Multilingual"
-msgstr "მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:336
-msgid "Multilingual, first part"
-msgstr ""
-"მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜, პირველი "
-"ნáƒáƒ¬áƒ˜áƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:337
-msgid "Multilingual, second part"
-msgstr ""
-"მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜, მეáƒáƒ áƒ” ნáƒáƒ¬áƒ˜áƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:338
-msgid "Myanmar"
-msgstr "მიáƒáƒœáƒ›áƒ"
-
-#: ../rules/base.xml.in.h:339
-msgid "Neostyle"
-msgstr "Neostyle"
-
-#: ../rules/base.xml.in.h:340
-msgid "Nep"
-msgstr "ნეპ"
-
-#: ../rules/base.xml.in.h:341
-msgid "Nepal"
-msgstr "ნეპáƒáƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:342
-msgid "Netherlands"
-msgstr "ნიდერლáƒáƒœáƒ“ები"
-
-#: ../rules/base.xml.in.h:343
-msgid "Nld"
-msgstr "ჰáƒáƒš"
-
-#: ../rules/base.xml.in.h:344
-msgid "Nor"
-msgstr "ნáƒáƒ "
-
-#: ../rules/base.xml.in.h:345
-msgid "Northern Saami"
-msgstr "ჩრდილáƒáƒ”თ სáƒáƒáƒ›áƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:346
-msgid "Northern Saami, eliminate dead keys"
-msgstr ""
-"ჩრდილáƒáƒ”თ სáƒáƒáƒ›áƒ£áƒ áƒ˜, სპეც "
-"ღილáƒáƒ™áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:347
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:348
-msgid "Norway"
-msgstr "ნáƒáƒ áƒ•áƒ”გიáƒ"
-
-#: ../rules/base.xml.in.h:349
-msgid "NumLock LED shows alternative group."
-msgstr ""
-"NumLock-ის ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒ©áƒ•áƒ”ნებს "
-"დáƒáƒ›áƒáƒ¢áƒ”ბით ჯგუფს."
-
-#: ../rules/base.xml.in.h:350
-msgid "Numpad keys work as with Mac."
-msgstr ""
-"ციფრული ღილáƒáƒ™áƒ”ბი "
-"მáƒáƒ¥áƒ›áƒ”დებენ რáƒáƒ’áƒáƒ áƒª Mac-ის "
-"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ¨áƒ˜."
-
-#: ../rules/base.xml.in.h:351
-msgid "Ogham"
-msgstr "áƒáƒ’ხáƒáƒ›áƒ˜"
-
-#: ../rules/base.xml.in.h:352
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:353
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/Internet keyboard"
-
-#: ../rules/base.xml.in.h:354
-msgid "Oriya"
-msgstr "áƒáƒ áƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:355
-msgid "Ossetian"
-msgstr "áƒáƒ¡áƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:356
-msgid "Ossetian, Winkeys"
-msgstr "áƒáƒ¡áƒ£áƒ áƒ˜, Windows კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ"
-
-#: ../rules/base.xml.in.h:357
-msgid "PC-98xx Series"
-msgstr "PC-98xx Series"
-
-#: ../rules/base.xml.in.h:358
-msgid "Pak"
-msgstr "პáƒáƒ™"
-
-#: ../rules/base.xml.in.h:359
-msgid "Pakistan"
-msgstr "პáƒáƒ™áƒ˜áƒ¡áƒ¢áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:360
-msgid "Pashto"
-msgstr "პáƒáƒ¨áƒ¢áƒ"
-
-#: ../rules/base.xml.in.h:361
-msgid "Pattachote"
-msgstr "პáƒáƒ¢áƒáƒ©áƒáƒ¢áƒ˜"
-
-#: ../rules/base.xml.in.h:362
-msgid "Phonetic"
-msgstr "ფáƒáƒœáƒ”ტიკური"
-
-#: ../rules/base.xml.in.h:363
-msgid "Pol"
-msgstr "პáƒáƒš"
-
-#: ../rules/base.xml.in.h:364
-msgid "Poland"
-msgstr "პáƒáƒšáƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:365
-msgid "Polytonic"
-msgstr "პáƒáƒšáƒ˜áƒ¤áƒáƒœáƒ˜áƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:366
-msgid "Portugal"
-msgstr "პáƒáƒ áƒ¢áƒ£áƒ’áƒáƒšáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:367
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: ../rules/base.xml.in.h:368
-msgid "Press Left Alt key to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
-"მáƒáƒ áƒªáƒ®áƒ”ნრAlt-ს"
-
-#: ../rules/base.xml.in.h:369
-msgid "Press Left Win-key to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
-"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:370
-msgid "Press Menu key to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ Menu "
-"ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:371
-msgid ""
-"Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ¡. "
-"Shift+მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ "
-"იმáƒáƒ¥áƒ›áƒ”დებენ რáƒáƒ’áƒáƒ áƒª Multi_Key."
-
-#: ../rules/base.xml.in.h:372
-msgid "Press Right Alt key to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:373
-msgid "Press Right Ctrl to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl-ს."
-
-#: ../rules/base.xml.in.h:374
-msgid "Press Right Win-key to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜áƒ¡ დáƒáƒ­áƒ”რით."
-
-#: ../rules/base.xml.in.h:375
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
-"ნებისმიერი Alt ღილáƒáƒ™áƒ˜áƒ¡ "
-"დáƒáƒ­áƒ”რით."
-
-#: ../rules/base.xml.in.h:376
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
-"ნებისმიერი Win ღილáƒáƒ™áƒ˜áƒ¡ "
-"დáƒáƒ­áƒ”რით."
-
-#: ../rules/base.xml.in.h:377
-msgid "Pro"
-msgstr "Pro"
-
-#: ../rules/base.xml.in.h:378
-msgid "Pro Keypad"
-msgstr "Pro დáƒáƒ›áƒáƒ¢áƒ”ბ. პáƒáƒœáƒ”ლით"
-
-#: ../rules/base.xml.in.h:379
-msgid "Probhat"
-msgstr "პრáƒáƒ‘áƒáƒ¢áƒ˜"
-
-#: ../rules/base.xml.in.h:380
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:381
-msgid "Prt"
-msgstr "პáƒáƒ áƒ¢"
-
-#: ../rules/base.xml.in.h:382
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:383
-msgid "R-Alt switches group while pressed."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt კლáƒáƒ•áƒ˜áƒ¨áƒ˜ ცვლის "
-"ჯგუფს დáƒáƒ­áƒ”რილ "
-"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
-
-#: ../rules/base.xml.in.h:384
-msgid "Right Alt is Compose."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ "
-"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
-
-#: ../rules/base.xml.in.h:385
-msgid "Right Alt key changes group."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:386
-msgid "Right Ctrl is Compose."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ "
-"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
-
-#: ../rules/base.xml.in.h:387
-msgid "Right Ctrl key changes group."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:388
-msgid "Right Ctrl key switches group while pressed."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს დáƒáƒ­áƒ”რილ "
-"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
-
-#: ../rules/base.xml.in.h:389
-msgid "Right Ctrl key works as Right Alt."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ მáƒáƒ¥áƒ›áƒ”დებს "
-"რáƒáƒ’áƒáƒ áƒª მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt."
-
-#: ../rules/base.xml.in.h:390
-msgid "Right Shift key changes group."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრShift ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:391
-msgid "Right Win-key changes group."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:392
-msgid "Right Win-key is Compose."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ "
-"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
-
-#: ../rules/base.xml.in.h:393
-msgid "Right Win-key switches group while pressed."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს დáƒáƒ­áƒ”რილ "
-"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
-
-#: ../rules/base.xml.in.h:394
-msgid "Right handed Dvorak"
-msgstr ""
-"Dvorak კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
-"áƒáƒ áƒ-ცáƒáƒªáƒ˜áƒ”ბისთვის"
-
-#: ../rules/base.xml.in.h:395
-msgid "Romania"
-msgstr "რუმინეთი"
-
-#: ../rules/base.xml.in.h:396
-msgid "Romanian keyboard with German letters"
-msgstr ""
-"რუმინული კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
-"გერმáƒáƒœáƒ£áƒšáƒ˜ áƒáƒ¡áƒáƒ”ბით"
-
-#: ../rules/base.xml.in.h:397
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr ""
-"რუმინული კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
-"გერმáƒáƒœáƒ£áƒšáƒ˜ áƒáƒ¡áƒáƒ”ბით, dead keys "
-"გáƒáƒ áƒ”შე. "
-
-#: ../rules/base.xml.in.h:398
-msgid "Rou"
-msgstr "რუმ"
-
-#: ../rules/base.xml.in.h:399
-msgid "Rus"
-msgstr "რუს"
-
-#: ../rules/base.xml.in.h:400
-msgid "Russia"
-msgstr "რუსეთი"
-
-#: ../rules/base.xml.in.h:401
-msgid "Russian"
-msgstr "რუსული"
-
-#: ../rules/base.xml.in.h:402
-msgid "Russian phonetic"
-msgstr "რუსული ფáƒáƒœáƒ”ტიკური"
-
-#: ../rules/base.xml.in.h:403
-msgid "Russian phonetic, eliminate dead keys"
-msgstr ""
-"რუსული ფáƒáƒœáƒ”ტიკური, სპეც (dead keys) "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:404
-msgid "Russian with Kazakh"
-msgstr "რუსული ყáƒáƒ–áƒáƒ®áƒ£áƒ áƒ—áƒáƒœ ერთáƒáƒ“"
-
-#: ../rules/base.xml.in.h:405
-msgid "SCG"
-msgstr "SCG"
-
-#: ../rules/base.xml.in.h:406
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:407
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:408
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:409
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:410
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:411
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:412
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:413
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:414
-msgid "ScrollLock LED shows alternative group."
-msgstr ""
-"ScrollLock ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒœáƒáƒ®áƒ”ბს "
-"áƒáƒšáƒ¢áƒ”რ. ჯგუფს."
-
-#: ../rules/base.xml.in.h:415
-msgid "Serbia and Montenegro"
-msgstr "სერბირდრმáƒáƒœáƒ¢áƒ”ნეგრáƒ"
-
-#: ../rules/base.xml.in.h:416
-msgid "Shift with numpad keys works as in MS Windows."
-msgstr ""
-"Shift ღილáƒáƒ™áƒ˜ ციფრულ "
-"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ¡áƒ—áƒáƒœ, მუშáƒáƒáƒ‘ენ "
-"რáƒáƒ’áƒáƒ áƒª MS Window-ში."
-
-#: ../rules/base.xml.in.h:417
-msgid "Shift+CapsLock changes group."
-msgstr "Shift+CapsLock ცვლიáƒáƒœ ჯგუფს."
-
-#: ../rules/base.xml.in.h:418
-msgid "Slovakia"
-msgstr "სლáƒáƒ•áƒáƒ™áƒ”თი"
-
-#: ../rules/base.xml.in.h:419
-msgid "Slovenia"
-msgstr "სლáƒáƒ•áƒ”ნიáƒ"
-
-#: ../rules/base.xml.in.h:420
-msgid "South Africa"
-msgstr "სáƒáƒ›áƒ®áƒ áƒ”თ áƒáƒ¤áƒ áƒ˜áƒ™áƒ"
-
-#: ../rules/base.xml.in.h:421
-msgid "Southern Uzbek"
-msgstr "სáƒáƒ›áƒ®áƒ áƒ”თ-უზბეკური"
-
-#: ../rules/base.xml.in.h:422
-msgid "Spain"
-msgstr "ესპáƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:423
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr ""
-"სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბს (Ctrl+Alt+&lt;клв&gt;) "
-"სერვერი áƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბთ."
-
-#: ../rules/base.xml.in.h:424
-msgid "SrL"
-msgstr "შრლ"
-
-#: ../rules/base.xml.in.h:425
-msgid "Sri Lanka"
-msgstr "შრი-ლáƒáƒœáƒ™áƒ"
-
-#: ../rules/base.xml.in.h:426
-msgid "Standard"
-msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:428
-msgid "Standard RSTU"
-msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:430
-msgid "Standard RSTU on Russian layout"
-msgstr ""
-"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ RSTU რუსულ "
-"გáƒáƒœáƒšáƒáƒ’ებáƒáƒ–ე"
-
-#: ../rules/base.xml.in.h:431
-msgid "Sun dead keys"
-msgstr "სპეც ღილáƒáƒ™áƒ”ბი (dead keys) Sun"
-
-#: ../rules/base.xml.in.h:432
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:433
-msgid "Super is mapped to the Win-keys (default)."
-msgstr ""
-"Super შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin "
-"ღილáƒáƒ™áƒ”ბს.(ნáƒáƒ’ულისმევიáƒ)"
-
-#: ../rules/base.xml.in.h:434
-msgid "Svk"
-msgstr "სლáƒáƒ•áƒ™"
-
-#: ../rules/base.xml.in.h:435
-msgid "Svn"
-msgstr "სლáƒáƒ•áƒ”ნ"
-
-#: ../rules/base.xml.in.h:436
-msgid "Swap Ctrl and CapsLock."
-msgstr "CapsLock ის Ctrl-ით შეცვლáƒ."
-
-#: ../rules/base.xml.in.h:437
-msgid "Swe"
-msgstr "შვედ"
-
-#: ../rules/base.xml.in.h:438
-msgid "Sweden"
-msgstr "შვედეთი"
-
-#: ../rules/base.xml.in.h:439
-msgid "Switzerland"
-msgstr "შვეიცáƒáƒ áƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:440
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:441
-msgid "Syr"
-msgstr "სირ"
-
-#: ../rules/base.xml.in.h:442
-msgid "Syria"
-msgstr "სირიáƒ"
-
-#: ../rules/base.xml.in.h:443
-msgid "Syriac"
-msgstr "სირიული"
-
-#: ../rules/base.xml.in.h:444
-msgid "Syriac phonetic"
-msgstr "სირიის ფáƒáƒœáƒ”ტიკური"
-
-#: ../rules/base.xml.in.h:445
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:446
-msgid "Tajikistan"
-msgstr "ტáƒáƒ¯áƒ˜áƒ™áƒ”თი"
-
-#: ../rules/base.xml.in.h:447
-msgid "Tamil"
-msgstr "თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:448
-msgid "Tamil TAB Typewriter"
-msgstr ""
-"თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ TAB სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
-
-#: ../rules/base.xml.in.h:449
-msgid "Tamil TSCII Typewriter"
-msgstr ""
-"თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ TSCII სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
-
-#: ../rules/base.xml.in.h:450
-msgid "Tamil Unicode"
-msgstr "ტáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ უნიკáƒáƒ“ი"
-
-#: ../rules/base.xml.in.h:451
-msgid "Tatar"
-msgstr "თáƒáƒ—რული"
-
-#: ../rules/base.xml.in.h:452
-msgid "Telugu"
-msgstr "თელუგუ"
-
-#: ../rules/base.xml.in.h:453
-msgid "Tha"
-msgstr "ტáƒáƒ˜"
-
-#: ../rules/base.xml.in.h:454
-msgid "Thailand"
-msgstr "ტáƒáƒ˜áƒšáƒáƒœáƒ“ი"
-
-#: ../rules/base.xml.in.h:455
-msgid "Third level choosers"
-msgstr "მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვáƒ"
-
-#: ../rules/base.xml.in.h:456
-msgid "Tilde (~) variant"
-msgstr "ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜ (~)-ით"
-
-#: ../rules/base.xml.in.h:457
-msgid "Tjk"
-msgstr "ტáƒáƒ¯"
-
-#: ../rules/base.xml.in.h:458
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:459
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:460
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:461
-msgid "Tur"
-msgstr "თურქ"
-
-#: ../rules/base.xml.in.h:462
-msgid "Turkey"
-msgstr "თურქეთი"
-
-#: ../rules/base.xml.in.h:463
-msgid "Typewriter"
-msgstr "სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
-
-#: ../rules/base.xml.in.h:464
-msgid "U.S. English"
-msgstr "ინგლისუáƒáƒ áƒ˜ áƒ.შ.შ"
-
-#: ../rules/base.xml.in.h:465
-msgid "US keyboard with Bosnian digraphs"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ "
-"დიგრáƒáƒ¤áƒ”ბით"
-
-#: ../rules/base.xml.in.h:466
-msgid "US keyboard with Bosnian letters"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ "
-"áƒáƒ¡áƒáƒ”ბით"
-
-#: ../rules/base.xml.in.h:467
-msgid "US keyboard with Croatian digraphs"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"დიგრáƒáƒ¤áƒ”ბით"
-
-#: ../rules/base.xml.in.h:468
-msgid "US keyboard with Croatian letters"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"áƒáƒ¡áƒáƒ”ბით"
-
-#: ../rules/base.xml.in.h:469
-msgid "US keyboard with Lithuanian letters"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ლიტვური "
-"áƒáƒ¡áƒáƒ”ბით"
-
-#: ../rules/base.xml.in.h:470
-msgid "US keyboard with Slovenian digraphs"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ სლáƒáƒ•áƒáƒ™áƒ£áƒ áƒ˜ "
-"დიგრáƒáƒ¤áƒ”ბით"
-
-#: ../rules/base.xml.in.h:471
-msgid "US keyboard with Slovenian letters"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ სლáƒáƒ•áƒáƒ™áƒ£áƒ áƒ˜ "
-"áƒáƒ¡áƒáƒ”ბით"
-
-#: ../rules/base.xml.in.h:472
-msgid "USA"
-msgstr "áƒáƒ¨áƒ¨"
-
-#: ../rules/base.xml.in.h:473
-msgid "Ukr"
-msgstr "უკრ"
-
-#: ../rules/base.xml.in.h:474
-msgid "Ukraine"
-msgstr "უკრáƒáƒ˜áƒœáƒ"
-
-#: ../rules/base.xml.in.h:475
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:476
-msgid "United Kingdom"
-msgstr "დიდი ბრიტáƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:477
-msgid "Urdu"
-msgstr "ურდუ"
-
-#: ../rules/base.xml.in.h:478
-msgid "Use Bosnian digraphs"
-msgstr ""
-"ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ დიგრáƒáƒ¤áƒ”ბის "
-"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
-
-#: ../rules/base.xml.in.h:479
-msgid "Use Croatian digraphs"
-msgstr ""
-"ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ დიგრáƒáƒ¤áƒ”ბის "
-"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
-
-#: ../rules/base.xml.in.h:480
-msgid "Use Slovenian digraphs"
-msgstr ""
-"სლáƒáƒ•áƒ”ნური დიგრáƒáƒ¤áƒ”ბის "
-"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
-
-#: ../rules/base.xml.in.h:481
-msgid "Use guillemets for quotes"
-msgstr ""
-"ფრáƒáƒœáƒ’ული ბრჭყáƒáƒšáƒ”ბის, "
-"ბრჭყáƒáƒšáƒ”ბáƒáƒ“ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
-
-#: ../rules/base.xml.in.h:482
-msgid "Use keyboard LED to show alternative group."
-msgstr ""
-"დáƒáƒ›áƒáƒ¢áƒ”ბითი ჯგუფის "
-"სáƒáƒ©áƒ•áƒ”ნებლáƒáƒ“, კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ˜áƒ¡ "
-"ინდიკáƒáƒ¢áƒáƒ áƒ˜áƒ¡ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ."
-
-#: ../rules/base.xml.in.h:483
-msgid "Uzb"
-msgstr "უზბ"
-
-#: ../rules/base.xml.in.h:484
-msgid "Uzbekistan"
-msgstr "უზბეკეთი"
-
-#: ../rules/base.xml.in.h:485
-msgid "Vietnam"
-msgstr "ვიეტნáƒáƒ›áƒ˜"
-
-#: ../rules/base.xml.in.h:486
-msgid "Vnm"
-msgstr "ვიეტ"
-
-#: ../rules/base.xml.in.h:487
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:488
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:489
-msgid "Winkeys"
-msgstr "Windows კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ"
-
-#: ../rules/base.xml.in.h:490
-msgid "With &lt;\\|&gt; key"
-msgstr "კლáƒáƒ•áƒ˜áƒ¨áƒ”ბით &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:491
-msgid "With guillemets"
-msgstr "გრáƒáƒœáƒ’ული ბრჭყáƒáƒšáƒ”ბით"
-
-#: ../rules/base.xml.in.h:492
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:493
-msgid "Z and ZHE swapped"
-msgstr "Z დრZHE გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒšáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:494
-msgid "Zar"
-msgstr "უáƒáƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:495
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:496
-msgid "azerty/digits"
-msgstr "zerty/ციფრები"
-
-#: ../rules/base.xml.in.h:497
-msgid "digits"
-msgstr "ციფრები"
-
-#: ../rules/base.xml.in.h:498
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:499
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:500
-msgid "qwerty, extended Backslash"
-msgstr ""
-"qwerty, დრBackslash-ის დáƒáƒ›áƒáƒ¢áƒ”ბითი "
-"ფუნქციები"
-
-#: ../rules/base.xml.in.h:501
-msgid "qwerty/digits"
-msgstr "qwerty/ციფრები"
-
-#: ../rules/base.xml.in.h:502
-msgid "qwertz"
-msgstr "qwertz"
-
+# translation of xkeyboard-config.po to Georgian
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Vladimer Sichinava <vlsichinava@gmail.com>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-17 21:37+0100\n"
+"PO-Revision-Date: 2006-09-20 22:48+0200\n"
+"Last-Translator: Vladimer Sichinava <vlsichinava@gmail.com>\n"
+"Language-Team: Georgian <www.gia.ge>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2
+msgid "101/104 key Compatible"
+msgstr "101/104 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ თáƒáƒ•áƒ¡áƒ”ბáƒáƒ“ი"
+
+#: ../rules/base.xml.in.h:3
+msgid "101/qwerty/comma/Dead keys"
+msgstr ""
+"pc101, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
+"(dead keys)"
+
+#: ../rules/base.xml.in.h:4
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr ""
+"pc101, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
+"(dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:5
+msgid "101/qwerty/dot/Dead keys"
+msgstr ""
+"pc101, qwerty, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr ""
+"pc101, qwerty, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwertz/comma/Dead keys"
+msgstr ""
+"pc101, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
+"(dead keys)"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr ""
+"pc101, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
+"(dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwertz/dot/Dead keys"
+msgstr ""
+"pc101, qwertz, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr ""
+"pc101, qwertz, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:11
+msgid "102/qwerty/comma/Dead keys"
+msgstr ""
+"pc102, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
+"(dead keys)"
+
+#: ../rules/base.xml.in.h:12
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr ""
+"pc102, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
+"(dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:13
+msgid "102/qwerty/dot/Dead keys"
+msgstr ""
+"pc102, qwertz, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr ""
+"pc102, qwerty, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwertz/comma/Dead keys"
+msgstr ""
+"pc102, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
+"(dead keys)"
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr ""
+"pc102, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
+"(dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwertz/dot/Dead keys"
+msgstr ""
+"pc102, qwertz, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr ""
+"pc102, qwertz, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:19
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:20
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:21
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:22
+msgid "ACPI Standard"
+msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ACPI"
+
+#: ../rules/base.xml.in.h:23
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:24
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:25
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:26
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:27
+msgid "Add the EuroSign to the 2 key."
+msgstr ""
+"ევრáƒáƒ¡ ნიშნის 2იáƒáƒœáƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
+"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
+
+#: ../rules/base.xml.in.h:28
+msgid "Add the EuroSign to the 5 key."
+msgstr ""
+"ევრáƒáƒ¡ ნიშნის 5იáƒáƒœáƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
+"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
+
+#: ../rules/base.xml.in.h:29
+msgid "Add the EuroSign to the E key."
+msgstr ""
+"ევრáƒáƒ¡ ნიშნის E áƒáƒ¡áƒáƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
+"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
+
+#: ../rules/base.xml.in.h:30
+msgid "Add the standard behavior to Menu key."
+msgstr ""
+"მენიუს კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒ¡áƒ—ვის "
+"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ქცევის "
+"მინიჭებáƒ."
+
+#: ../rules/base.xml.in.h:31
+msgid "Adding the EuroSign to certain keys"
+msgstr ""
+"ევრáƒáƒ¡ ნიშნის ზáƒáƒ’იერთ "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბზე დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
+
+#: ../rules/base.xml.in.h:32
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:33
+msgid "Afg"
+msgstr "áƒáƒ•áƒ¦"
+
+#: ../rules/base.xml.in.h:34
+msgid "Afghanistan"
+msgstr "áƒáƒ•áƒ¦áƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:35
+msgid "Akan"
+msgstr "áƒáƒ™áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:36
+msgid "Alb"
+msgstr "áƒáƒšáƒ‘"
+
+#: ../rules/base.xml.in.h:37
+msgid "Albania"
+msgstr "áƒáƒšáƒ‘áƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:38
+msgid "Alt and Meta are on the Alt keys (default)."
+msgstr ""
+"Alt დრMeta, Alt ღილáƒáƒ™áƒ–ე "
+"(ნáƒáƒ’ულისხმევიáƒ)."
+
+#: ../rules/base.xml.in.h:39
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr ""
+"Alt შეესáƒáƒ‘áƒáƒ›áƒ”ბრმáƒáƒ áƒ¯áƒ•áƒ”ნრWin "
+"ღილáƒáƒ™áƒ¡, Super კი Menu-ს."
+
+#: ../rules/base.xml.in.h:40
+msgid "Alt+CapsLock changes group."
+msgstr "Alt + CapsLock ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:41
+msgid "Alt+Ctrl changes group."
+msgstr "Alt + Ctrl ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:42
+msgid "Alt+Shift changes group."
+msgstr "Alt + Shift ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win კლáƒáƒ•áƒ˜áƒ¨áƒ—რქცევáƒ"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alternative"
+msgstr "áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alternative international (former us_intl)"
+msgstr ""
+"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"ინტერნáƒáƒªáƒ˜áƒáƒœáƒáƒšáƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alternative, Sun dead keys"
+msgstr ""
+"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜, Sun სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბით (dead keys)"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alternative, eliminate dead keys"
+msgstr ""
+"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:49
+msgid "And"
+msgstr "áƒáƒœáƒ“"
+
+#: ../rules/base.xml.in.h:50
+msgid "Andorra"
+msgstr "áƒáƒœáƒ“áƒáƒ áƒ"
+
+#: ../rules/base.xml.in.h:51
+msgid "Apostrophe (') variant"
+msgstr "(') áƒáƒžáƒáƒ¡áƒ¢áƒ áƒáƒ¤áƒ˜áƒáƒœáƒ˜ ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜"
+
+#: ../rules/base.xml.in.h:52
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:53
+msgid "Apple Laptop"
+msgstr "Apple ლეპტáƒáƒžáƒ˜"
+
+#: ../rules/base.xml.in.h:54
+msgid "Ara"
+msgstr "áƒáƒ áƒ"
+
+#: ../rules/base.xml.in.h:55
+msgid "Arabic"
+msgstr "áƒáƒ áƒáƒ‘ული"
+
+#: ../rules/base.xml.in.h:56
+msgid "Arm"
+msgstr "სáƒáƒ›áƒ®"
+
+#: ../rules/base.xml.in.h:57
+msgid "Armenia"
+msgstr "სáƒáƒ›áƒ®áƒ”თი"
+
+#: ../rules/base.xml.in.h:58
+msgid "Aze"
+msgstr "áƒáƒ–ერ"
+
+#: ../rules/base.xml.in.h:59
+msgid "Azerbaijan"
+msgstr "áƒáƒ–ერბáƒáƒ˜áƒ¯áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:60
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:61
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:62
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:63
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:64
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:65
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:66
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:67
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:68
+msgid "Ban"
+msgstr "ბáƒáƒœ"
+
+#: ../rules/base.xml.in.h:69
+msgid "Bangladesh"
+msgstr "ბáƒáƒœáƒ’ლáƒáƒ“ეში"
+
+#: ../rules/base.xml.in.h:70
+msgid "Bel"
+msgstr "ბელ"
+
+#: ../rules/base.xml.in.h:71
+msgid "Belarus"
+msgstr "ბელáƒáƒ áƒ£áƒ¡áƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:72
+msgid "Belgium"
+msgstr "ბელგიáƒ"
+
+#: ../rules/base.xml.in.h:73
+msgid "Bengali"
+msgstr "ბენგáƒáƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:74
+msgid "Bengali Probhat"
+msgstr "ბენგáƒáƒšáƒ˜áƒ¡ პრáƒáƒ‘áƒáƒ¢áƒ˜"
+
+#: ../rules/base.xml.in.h:75
+msgid "Bgr"
+msgstr "ბáƒáƒšáƒ’"
+
+#: ../rules/base.xml.in.h:76
+msgid "Bhu"
+msgstr "ბუტ"
+
+#: ../rules/base.xml.in.h:77
+msgid "Bhutan"
+msgstr "ბუტáƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:78
+msgid "Bih"
+msgstr "ბáƒáƒ¡áƒœ"
+
+#: ../rules/base.xml.in.h:79
+msgid "Blr"
+msgstr "ბელ"
+
+#: ../rules/base.xml.in.h:80
+msgid "Bosnia and Herzegovina"
+msgstr "ბáƒáƒ¡áƒœáƒ˜áƒ დრჰერცáƒáƒ’áƒáƒ•áƒ˜áƒœáƒ"
+
+#: ../rules/base.xml.in.h:81
+msgid "Both Alt keys together change group."
+msgstr ""
+"áƒáƒ áƒ˜áƒ•áƒ” Alt ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:82
+msgid "Both Ctrl keys together change group."
+msgstr ""
+"áƒáƒ áƒ˜áƒ•áƒ” Ctrl ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:83
+msgid "Both Shift keys together change group."
+msgstr ""
+"áƒáƒ áƒ˜áƒ•áƒ” Shift ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:84
+msgid "Both Win-keys switch group while pressed."
+msgstr ""
+"áƒáƒ áƒ˜áƒ•áƒ” Win ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:85
+msgid "Bra"
+msgstr "ბრáƒáƒ–"
+
+#: ../rules/base.xml.in.h:86
+msgid "Brazil"
+msgstr "ბრáƒáƒ–ილიáƒ"
+
+#: ../rules/base.xml.in.h:87
+msgid "Brazilian ABNT2"
+msgstr "ბრáƒáƒ–ილიური ABNT2"
+
+#: ../rules/base.xml.in.h:88
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:89
+msgid "Bulgaria"
+msgstr "ბულგáƒáƒ áƒ”თი"
+
+#: ../rules/base.xml.in.h:90
+msgid "Cambodia"
+msgstr "კáƒáƒ›áƒ‘áƒáƒ¯áƒ"
+
+#: ../rules/base.xml.in.h:91
+msgid "Can"
+msgstr "კáƒáƒœ"
+
+#: ../rules/base.xml.in.h:92
+msgid "Canada"
+msgstr "კáƒáƒœáƒáƒ“áƒ"
+
+#: ../rules/base.xml.in.h:93
+msgid "Caps Lock is Compose."
+msgstr ""
+"ღილáƒáƒ™áƒ˜ Caps Lock შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
+
+#: ../rules/base.xml.in.h:94
+msgid "CapsLock LED shows alternative group."
+msgstr ""
+"CapsLock-ის ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒ©áƒ•áƒ”ნებს "
+"დáƒáƒ›áƒáƒ¢áƒ”ბით ჯგუფებს."
+
+#: ../rules/base.xml.in.h:95
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
+msgstr ""
+"მუშáƒáƒáƒ‘ს რáƒáƒ’áƒáƒ áƒª დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ Shift, "
+"ის áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ის "
+"მáƒáƒ¥áƒ›áƒ”დებáƒáƒ¡."
+
+#: ../rules/base.xml.in.h:96
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
+msgstr ""
+"მუშáƒáƒáƒ‘ს რáƒáƒ’áƒáƒ áƒª დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ Shift, "
+"ის áƒáƒ  áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ის "
+"მáƒáƒ¥áƒ›áƒ”დებáƒáƒ¡."
+
+#: ../rules/base.xml.in.h:97
+msgid "CapsLock just locks the Shift modifier."
+msgstr ""
+"CapsLock-ი ბლáƒáƒ™áƒáƒ•áƒ¡ Shift "
+"მáƒáƒ“იფიკáƒáƒ¢áƒáƒ áƒ¡."
+
+#: ../rules/base.xml.in.h:98
+msgid "CapsLock key behavior"
+msgstr "CapsLock ღილáƒáƒ™áƒ˜áƒ¡ ქცევáƒ"
+
+#: ../rules/base.xml.in.h:99
+msgid "CapsLock key changes group."
+msgstr "CapsLock ღილáƒáƒ™áƒ˜ ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:100
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr ""
+"CapsLock რთáƒáƒ•áƒ¡ Shift-ს, ეხებრყველრ"
+"ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:101
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr ""
+"CapsLock რთáƒáƒ•áƒ¡ áƒáƒšáƒ¤áƒáƒ•áƒ˜áƒ¢áƒ˜áƒ¡ "
+"სიმბáƒáƒšáƒáƒ”ბის უბრáƒáƒšáƒ "
+"კáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡."
+
+#: ../rules/base.xml.in.h:102
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
+msgstr ""
+"რთáƒáƒ•áƒ¡ შიდრკáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡. "
+"Shift áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ს. "
+
+#: ../rules/base.xml.in.h:103
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
+msgstr ""
+"რთáƒáƒ•áƒ¡ შიდრკáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡. "
+"Shift áƒáƒ  ეხებრCapsLock-ს. "
+
+#: ../rules/base.xml.in.h:104
+msgid "Catalan variant with middle-dot L"
+msgstr "კáƒáƒ¢áƒáƒšáƒáƒœáƒ£áƒ áƒ˜ სáƒáƒ¨áƒ£áƒáƒšáƒ L-ით"
+
+#: ../rules/base.xml.in.h:105
+msgid "Che"
+msgstr "შვეიც"
+
+#: ../rules/base.xml.in.h:106
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:107
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr ""
+"Cherry Blue Line CyBo@rd (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
+
+#: ../rules/base.xml.in.h:108
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:109
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:110
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:111
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:112
+msgid "Classic Dvorak"
+msgstr "კლáƒáƒ¡áƒ˜áƒ™áƒ£áƒ áƒ˜ Dvorak"
+
+#: ../rules/base.xml.in.h:113
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:114
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:115
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
+
+#: ../rules/base.xml.in.h:116
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
+
+#: ../rules/base.xml.in.h:117
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
+
+#: ../rules/base.xml.in.h:118
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:119
+msgid "Compose key position"
+msgstr "Compose კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒ¡ პáƒáƒ–იციáƒ"
+
+#: ../rules/base.xml.in.h:120
+msgid "Congo, Democratic Republic of the"
+msgstr ""
+"კáƒáƒœáƒ’áƒáƒ¡ დემáƒáƒ™áƒ áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"რესპუბლიკáƒ"
+
+#: ../rules/base.xml.in.h:121
+msgid "Croatia"
+msgstr "ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:122
+msgid "Ctrl key at bottom left"
+msgstr "Ctrl ღილáƒáƒ™áƒ˜ ქვემáƒáƒ— მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ•"
+
+#: ../rules/base.xml.in.h:123
+msgid "Ctrl key at left of 'A'"
+msgstr "Ctrl ღილáƒáƒ™áƒ˜ A áƒáƒ¡áƒáƒ¡ მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ•"
+
+#: ../rules/base.xml.in.h:124
+msgid "Ctrl key position"
+msgstr ""
+"Ctrl ღილáƒáƒ™áƒ˜áƒ¡ áƒáƒ“გილმდებáƒáƒ áƒ”áƒáƒ‘áƒ"
+
+#: ../rules/base.xml.in.h:125
+msgid "Ctrl+Shift changes group."
+msgstr "Ctrl Shift ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:126
+msgid "Cyrillic"
+msgstr "კირილიცáƒ"
+
+#: ../rules/base.xml.in.h:127
+msgid "Cze"
+msgstr "ჩეხ"
+
+#: ../rules/base.xml.in.h:128
+msgid "Czechia"
+msgstr "ჩეხეთი"
+
+#: ../rules/base.xml.in.h:129
+msgid "DRC"
+msgstr "DRC"
+
+#: ../rules/base.xml.in.h:130
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:131
+msgid "Dead acute"
+msgstr "სპეც. სიმბáƒáƒšáƒ Dead acute"
+
+#: ../rules/base.xml.in.h:132
+msgid "Dead grave acute"
+msgstr "სპეც. სიმბáƒáƒšáƒ Dead grave acute"
+
+#: ../rules/base.xml.in.h:133
+msgid "Default numpad keys."
+msgstr ""
+"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ციფრული "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი"
+
+#: ../rules/base.xml.in.h:134
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:135
+msgid "Dell 101-key PC"
+msgstr "Dell 101-კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒáƒœáƒ˜ PC"
+
+#: ../rules/base.xml.in.h:136
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude series laptop"
+
+#: ../rules/base.xml.in.h:137
+msgid "Dell USB Multimedia Keybard"
+msgstr "Dell USB Multimedia Keybard"
+
+#: ../rules/base.xml.in.h:138
+msgid "Denmark"
+msgstr "დáƒáƒœáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:139
+msgid "Deu"
+msgstr "გერ"
+
+#: ../rules/base.xml.in.h:140
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:141
+msgid "Diamond 9801 / 9802 series"
+msgstr "მáƒáƒ“ელები Diamond 9801 / 9802 series"
+
+#: ../rules/base.xml.in.h:142
+msgid "Dnk"
+msgstr "დáƒáƒœ"
+
+#: ../rules/base.xml.in.h:143
+msgid "Dvorak"
+msgstr "დვáƒáƒ áƒáƒ™áƒ£áƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:144
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr ""
+"Dvorak, პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜ ფრჩხილები \"1/!\" "
+"ღილáƒáƒ™áƒ–ეáƒ"
+
+#: ../rules/base.xml.in.h:145
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr ""
+"Dvorak, პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜ ფრჩხილები, "
+"ფრჩხილების კლáƒáƒ•áƒ˜áƒ¨áƒ–ე"
+
+#: ../rules/base.xml.in.h:146
+msgid "Eliminate dead keys"
+msgstr ""
+"სპეც ღილáƒáƒ™áƒ”ბის (dead keys) გáƒáƒ›áƒáƒ áƒ—ვáƒ"
+
+#: ../rules/base.xml.in.h:147
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:148
+msgid "Epo"
+msgstr "ეპáƒ"
+
+#: ../rules/base.xml.in.h:149
+msgid "Esp"
+msgstr "ესპ"
+
+#: ../rules/base.xml.in.h:150
+msgid "Esperanto"
+msgstr "ესპერáƒáƒœáƒ¢áƒ"
+
+#: ../rules/base.xml.in.h:151
+msgid "Est"
+msgstr "ესტ"
+
+#: ../rules/base.xml.in.h:152
+msgid "Estonia"
+msgstr "ესტáƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:153
+msgid "Evdev-managed keyboard"
+msgstr "Evdev-managed keyboard"
+
+#: ../rules/base.xml.in.h:154
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:155
+msgid "Ewe"
+msgstr "ივი"
+
+#: ../rules/base.xml.in.h:156
+msgid "Extended"
+msgstr "გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბული"
+
+#: ../rules/base.xml.in.h:157
+msgid "Extended Backslash"
+msgstr ""
+"Backslash გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბული ფუნქციები"
+
+#: ../rules/base.xml.in.h:158
+msgid "F-letter (F) variant"
+msgstr "F-ს ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜"
+
+#: ../rules/base.xml.in.h:159
+msgid "Fao"
+msgstr "ფáƒáƒ "
+
+#: ../rules/base.xml.in.h:160
+msgid "Faroe Islands"
+msgstr "ფáƒáƒ áƒ”რის კუნძულები"
+
+#: ../rules/base.xml.in.h:161
+msgid "Fin"
+msgstr "ფინ"
+
+#: ../rules/base.xml.in.h:162
+msgid "Finland"
+msgstr "ფინეთი"
+
+#: ../rules/base.xml.in.h:163
+msgid "Fra"
+msgstr "ფრáƒ"
+
+#: ../rules/base.xml.in.h:164
+msgid "France"
+msgstr "სáƒáƒ¤áƒ áƒáƒœáƒ’ეთი"
+
+#: ../rules/base.xml.in.h:165
+msgid "French"
+msgstr "ფრáƒáƒœáƒ’ული"
+
+#: ../rules/base.xml.in.h:166
+msgid "French (Macintosh)"
+msgstr "ფრáƒáƒœáƒ’ული (Macintosh)"
+
+#: ../rules/base.xml.in.h:167
+msgid "French (legacy)"
+msgstr "ფრáƒáƒœáƒ’ული (legacy)"
+
+#: ../rules/base.xml.in.h:168
+msgid "French Dvorak"
+msgstr "ფრáƒáƒœáƒ’ული Dvorak"
+
+#: ../rules/base.xml.in.h:169
+msgid "French, Sun dead keys"
+msgstr "ფრáƒáƒœáƒ’ული, Sun dead keys"
+
+#: ../rules/base.xml.in.h:170
+msgid "French, eliminate dead keys"
+msgstr "ფრáƒáƒœáƒ’ული, dead keys გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:171
+msgid "Fula"
+msgstr "ფულáƒ"
+
+#: ../rules/base.xml.in.h:172
+msgid "GBr"
+msgstr "ბრიტ"
+
+#: ../rules/base.xml.in.h:173
+msgid "Ga"
+msgstr "გáƒ"
+
+#: ../rules/base.xml.in.h:174
+msgid "Generic 101-key PC"
+msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 101-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ PC"
+
+#: ../rules/base.xml.in.h:175
+msgid "Generic 102-key (Intl) PC"
+msgstr ""
+"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 102-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ (Intl) PC"
+
+#: ../rules/base.xml.in.h:176
+msgid "Generic 104-key PC"
+msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 104-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ PC"
+
+#: ../rules/base.xml.in.h:177
+msgid "Generic 105-key (Intl) PC"
+msgstr ""
+"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 105-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ (Intl) PC"
+
+#: ../rules/base.xml.in.h:178
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:179
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:180
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:181
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:182
+msgid "Geo"
+msgstr "ქáƒáƒ áƒ—"
+
+#: ../rules/base.xml.in.h:183
+msgid "Georgia"
+msgstr "სáƒáƒ¥áƒáƒ áƒ—ველáƒ"
+
+#: ../rules/base.xml.in.h:184
+msgid "German (Macintosh)"
+msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜ (Macintosh)"
+
+#: ../rules/base.xml.in.h:185
+msgid "German, Sun dead keys"
+msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜, Sun dead keys"
+
+#: ../rules/base.xml.in.h:186
+msgid "German, eliminate dead keys"
+msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜, სპეც dead keys გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:187
+msgid "Germany"
+msgstr "გერმáƒáƒœáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:188
+msgid "Gha"
+msgstr "გáƒáƒœ"
+
+#: ../rules/base.xml.in.h:189
+msgid "Ghana"
+msgstr "გáƒáƒœáƒ"
+
+#: ../rules/base.xml.in.h:190
+msgid "Gre"
+msgstr "სáƒáƒ‘"
+
+#: ../rules/base.xml.in.h:191
+msgid "Greece"
+msgstr "სáƒáƒ‘ერძნეთი"
+
+#: ../rules/base.xml.in.h:192
+msgid "Group Shift/Lock behavior"
+msgstr ""
+"გáƒáƒœáƒšáƒáƒ’ების შეცვლის ფუნქციáƒ"
+
+#: ../rules/base.xml.in.h:193
+msgid "Gujarati"
+msgstr "გუჯáƒáƒ áƒáƒ—ი"
+
+#: ../rules/base.xml.in.h:194
+msgid "Gurmukhi"
+msgstr "გურმუხი"
+
+#: ../rules/base.xml.in.h:195
+msgid "Gyration"
+msgstr "გირáƒáƒ¨áƒœ"
+
+#: ../rules/base.xml.in.h:196
+msgid "Hausa"
+msgstr "ჰáƒáƒ£áƒ¡áƒ"
+
+#: ../rules/base.xml.in.h:197
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:198
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:199
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:200
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:201
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:202
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:203
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:204
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:205
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:206
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:207
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:208
+msgid "Hrv"
+msgstr "ხáƒáƒ "
+
+#: ../rules/base.xml.in.h:209
+msgid "Hun"
+msgstr "უნგ"
+
+#: ../rules/base.xml.in.h:210
+msgid "Hungary"
+msgstr "უნგრეთი"
+
+#: ../rules/base.xml.in.h:211
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin ღილáƒáƒ™áƒ”ბს."
+
+#: ../rules/base.xml.in.h:212
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:213
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:214
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:215
+msgid "IBM Rapid Access II (alternate option)"
+msgstr ""
+"IBM Rapid Access II (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
+
+#: ../rules/base.xml.in.h:216
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:217
+msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#: ../rules/base.xml.in.h:218
+msgid "ISO Alternate"
+msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი ISO"
+
+#: ../rules/base.xml.in.h:219
+msgid "Iceland"
+msgstr "ისლáƒáƒœáƒ“იáƒ"
+
+#: ../rules/base.xml.in.h:220
+msgid "Ind"
+msgstr "ინდ"
+
+#: ../rules/base.xml.in.h:221
+msgid "India"
+msgstr "ინდáƒáƒ”თი"
+
+#: ../rules/base.xml.in.h:222
+msgid "International (with dead keys)"
+msgstr ""
+"სáƒáƒ”რთáƒáƒ¨áƒáƒ áƒ˜áƒ¡áƒ, სპეც "
+"ღილáƒáƒ™áƒ”ბით (dead keys)"
+
+#: ../rules/base.xml.in.h:223
+msgid "Inuktitut"
+msgstr "ინუკტიტუტი"
+
+#: ../rules/base.xml.in.h:224
+msgid "Iran"
+msgstr "ირáƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:225
+msgid "Iraq"
+msgstr "ერáƒáƒ§áƒ˜"
+
+#: ../rules/base.xml.in.h:226
+msgid "Ireland"
+msgstr "ირლáƒáƒœáƒ“იáƒ"
+
+#: ../rules/base.xml.in.h:227
+msgid "Irl"
+msgstr "ირლ"
+
+#: ../rules/base.xml.in.h:228
+msgid "Irn"
+msgstr "ირáƒ"
+
+#: ../rules/base.xml.in.h:229
+msgid "Irq"
+msgstr "ერáƒ"
+
+#: ../rules/base.xml.in.h:230
+msgid "Isl"
+msgstr "ისლ"
+
+#: ../rules/base.xml.in.h:231
+msgid "Isr"
+msgstr "ებრ"
+
+#: ../rules/base.xml.in.h:232
+msgid "Israel"
+msgstr "ისრáƒáƒ”ლი"
+
+#: ../rules/base.xml.in.h:233
+msgid "Ita"
+msgstr "იტáƒ"
+
+#: ../rules/base.xml.in.h:234
+msgid "Italy"
+msgstr "იტáƒáƒšáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:235
+msgid "Japan"
+msgstr "იáƒáƒžáƒáƒœáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:236
+msgid "Japan (PC-98xx Series)"
+msgstr "Japan (PC-98xx Series)"
+
+#: ../rules/base.xml.in.h:237
+msgid "Japanese 106-key"
+msgstr "იáƒáƒžáƒáƒœáƒ˜áƒ 106-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:238
+msgid "Jpn"
+msgstr "იáƒáƒž"
+
+#: ../rules/base.xml.in.h:239
+msgid "Kannada"
+msgstr "კáƒáƒœáƒœáƒáƒ“áƒ"
+
+#: ../rules/base.xml.in.h:240
+msgid "Kashubian"
+msgstr "კáƒáƒ¨áƒ£áƒ‘იáƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:241
+msgid "Kaz"
+msgstr "ყáƒáƒ–"
+
+#: ../rules/base.xml.in.h:242
+msgid "Kazakh with Russian"
+msgstr "ყáƒáƒ–áƒáƒ®áƒ£áƒ áƒ˜ რუსულთáƒáƒœ"
+
+#: ../rules/base.xml.in.h:243
+msgid "Kazakhstan"
+msgstr "ყáƒáƒ–áƒáƒ®áƒ”თი"
+
+#: ../rules/base.xml.in.h:244
+msgid "Keypad"
+msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒœáƒ”ლით"
+
+#: ../rules/base.xml.in.h:245
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:246
+msgid "Khm"
+msgstr "კხმ"
+
+#: ../rules/base.xml.in.h:247
+msgid "Kor"
+msgstr "კáƒáƒ "
+
+#: ../rules/base.xml.in.h:248
+msgid "Korea, Republic of"
+msgstr "კáƒáƒ áƒ”áƒ, რესპუბლიკáƒ"
+
+#: ../rules/base.xml.in.h:249
+msgid "Korean 106-key"
+msgstr "კáƒáƒ áƒ”ული 106-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:250
+msgid "Kotoistus"
+msgstr "Kotoistus"
+
+#: ../rules/base.xml.in.h:251
+msgid "Kurdish, (F)"
+msgstr "ქურთული, (F)"
+
+#: ../rules/base.xml.in.h:252
+msgid "Kurdish, Arabic-Latin"
+msgstr "ქურთული, áƒáƒ áƒáƒ‘ულ-ლáƒáƒ—ინური"
+
+#: ../rules/base.xml.in.h:253
+msgid "Kurdish, Latin Alt-Q"
+msgstr "ქურთული, ლáƒáƒ—ინური Alt-Q"
+
+#: ../rules/base.xml.in.h:254
+msgid "Kurdish, Latin Q"
+msgstr "ქურთული, ლáƒáƒ—ინური Q"
+
+#: ../rules/base.xml.in.h:255
+msgid "Kyr"
+msgstr "ყირ"
+
+#: ../rules/base.xml.in.h:256
+msgid "Kyrgyzstan"
+msgstr "ყირღიზეთი"
+
+#: ../rules/base.xml.in.h:257
+msgid "LAm"
+msgstr "ლáƒáƒ—áƒáƒ›"
+
+#: ../rules/base.xml.in.h:258
+msgid "Lao"
+msgstr "ლáƒáƒáƒ¡áƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:259
+msgid "Laos"
+msgstr "ლáƒáƒáƒ¡áƒ˜"
+
+#: ../rules/base.xml.in.h:260
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr ""
+"Compaq ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქის "
+"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ (მáƒáƒ’. Armada)"
+
+#: ../rules/base.xml.in.h:261
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr ""
+"Compaq ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქის "
+"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ (მáƒáƒ’. Presario)"
+
+#: ../rules/base.xml.in.h:262
+msgid "Laptop/notebook Dell Inspiron 6xxx/8xxx"
+msgstr "ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქი Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:263
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქი eMachines m68xx"
+
+#: ../rules/base.xml.in.h:264
+msgid "Latin"
+msgstr "ლáƒáƒ—ინური"
+
+#: ../rules/base.xml.in.h:265
+msgid "Latin American"
+msgstr "ლáƒáƒ—ინურ áƒáƒ›áƒ”რიკული"
+
+#: ../rules/base.xml.in.h:266
+msgid "Latin Unicode"
+msgstr "ლáƒáƒ—ინური უნიკáƒáƒ“ი"
+
+#: ../rules/base.xml.in.h:267
+msgid "Latin Unicode qwerty"
+msgstr "ლáƒáƒ—ინური უნიკáƒáƒ“ი qwerty"
+
+#: ../rules/base.xml.in.h:268
+msgid "Latin qwerty"
+msgstr "ლáƒáƒ—ინური qwerty"
+
+#: ../rules/base.xml.in.h:269
+msgid "Latin with guillemets"
+msgstr ""
+"ლáƒáƒ—ინური ფრáƒáƒœáƒ’ული "
+"ბრჭყáƒáƒšáƒ”ბით"
+
+#: ../rules/base.xml.in.h:270
+msgid "Latvia"
+msgstr "ლáƒáƒ¢áƒ•áƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:271
+msgid "Left Alt is swapped with left Win-key."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრAlt-ი შეცვლილირWin "
+"ღილáƒáƒ™áƒ˜áƒ—"
+
+#: ../rules/base.xml.in.h:272
+msgid "Left Alt key changes group."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:273
+msgid "Left Alt key switches group while pressed."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს დáƒáƒ­áƒ”რის დრáƒáƒ¡."
+
+#: ../rules/base.xml.in.h:274
+msgid "Left Ctrl key changes group."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:275
+msgid "Left Shift key changes group."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრShift ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:276
+msgid "Left Win-key changes group."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:277
+msgid "Left Win-key is Compose."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ "
+"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
+
+#: ../rules/base.xml.in.h:278
+msgid "Left Win-key switches group while pressed."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს დáƒáƒ­áƒ”რის დრáƒáƒ¡."
+
+#: ../rules/base.xml.in.h:279
+msgid "Left handed Dvorak"
+msgstr "Dvorak ცáƒáƒªáƒ˜áƒ”ბისთვის"
+
+#: ../rules/base.xml.in.h:280
+msgid "Lithuania"
+msgstr "ლიტვáƒ"
+
+#: ../rules/base.xml.in.h:281
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:282
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:283
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:284
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:285
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:286
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: ../rules/base.xml.in.h:287
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr ""
+"Logitech Cordless Desktop Pro (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
+
+#: ../rules/base.xml.in.h:288
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr ""
+"Logitech Cordless Desktop Pro (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜2)"
+
+#: ../rules/base.xml.in.h:289
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:290
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:291
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:292
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:293
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:294
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:295
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:296
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:297
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:298
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:299
+msgid "Ltu"
+msgstr "ლიტ"
+
+#: ../rules/base.xml.in.h:300
+msgid "Lva"
+msgstr "ლáƒáƒ¢áƒ•"
+
+#: ../rules/base.xml.in.h:301
+msgid "Macedonia"
+msgstr "მáƒáƒ™áƒ”დáƒáƒœáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:302
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:303
+msgid "Macintosh Old"
+msgstr "Macintosh ძველი"
+
+#: ../rules/base.xml.in.h:304
+msgid "Macintosh layout"
+msgstr "Macintosh-ის გáƒáƒœáƒšáƒáƒ’ებáƒ"
+
+#: ../rules/base.xml.in.h:305
+msgid "Macintosh layout, eliminate dead keys"
+msgstr ""
+"Macintosh-ის გáƒáƒœáƒšáƒáƒ’ებáƒ, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:306
+msgid "Make CapsLock an additional Ctrl."
+msgstr ""
+"გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე CapsLock რáƒáƒ’áƒáƒ áƒª "
+"დáƒáƒ›áƒáƒ¢áƒ”ბითი Ctrl კლáƒáƒ•áƒ˜áƒ¨áƒ˜."
+
+#: ../rules/base.xml.in.h:307
+msgid "Mal"
+msgstr "მáƒáƒš"
+
+#: ../rules/base.xml.in.h:308
+msgid "Malayalam"
+msgstr "მáƒáƒšáƒáƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:309
+msgid "Maldives"
+msgstr "მáƒáƒšáƒ“ივები"
+
+#: ../rules/base.xml.in.h:310
+msgid "Malta"
+msgstr "მáƒáƒšáƒ¢áƒ"
+
+#: ../rules/base.xml.in.h:311
+msgid "Maltese keyboard with US layout"
+msgstr ""
+"მáƒáƒšáƒ¢áƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ áƒáƒ¨áƒ¨-ს "
+"გáƒáƒœáƒšáƒáƒ’ებით"
+
+#: ../rules/base.xml.in.h:312
+msgid "Mao"
+msgstr "მáƒáƒ"
+
+#: ../rules/base.xml.in.h:313
+msgid "Maori"
+msgstr "მáƒáƒáƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:314
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:315
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:316
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:317
+msgid "Menu is Compose."
+msgstr ""
+"Menu ღილáƒáƒ™áƒ˜ შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ის "
+"ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:318
+msgid "Menu key changes group."
+msgstr "Menu-ს ღილáƒáƒ™áƒ˜ ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:319
+msgid "Meta is mapped to the Win-keys."
+msgstr ""
+"Мета შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin ღილáƒáƒ™áƒ”ბს."
+
+#: ../rules/base.xml.in.h:320
+msgid "Meta is mapped to the left Win-key."
+msgstr ""
+"Мета შეესáƒáƒ‘áƒáƒ›áƒ”ბრმáƒáƒ áƒªáƒ®áƒ”ნრWin "
+"ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:321
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:322
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, შვედური"
+
+#: ../rules/base.xml.in.h:323
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:324
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:325
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr " Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:326
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:327
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:328
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:329
+msgid "Miscellaneous compatibility options"
+msgstr ""
+"თáƒáƒ•áƒ¡áƒ”ბáƒáƒ“áƒáƒ‘ის სხვáƒáƒ“áƒáƒ¡áƒ®áƒ•áƒ "
+"პáƒáƒ áƒáƒ›áƒ”ტრი"
+
+#: ../rules/base.xml.in.h:330
+msgid "Mkd"
+msgstr "მáƒáƒ™"
+
+#: ../rules/base.xml.in.h:331
+msgid "Mlt"
+msgstr "მáƒáƒšáƒ¢"
+
+#: ../rules/base.xml.in.h:332
+msgid "Mmr"
+msgstr "მიáƒáƒœ"
+
+#: ../rules/base.xml.in.h:333
+msgid "Mng"
+msgstr "მáƒáƒœáƒ¦"
+
+#: ../rules/base.xml.in.h:334
+msgid "Mongolia"
+msgstr "მáƒáƒœáƒ¦áƒáƒšáƒ”თი"
+
+#: ../rules/base.xml.in.h:335
+msgid "Multilingual"
+msgstr "მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:336
+msgid "Multilingual, first part"
+msgstr ""
+"მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜, პირველი "
+"ნáƒáƒ¬áƒ˜áƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:337
+msgid "Multilingual, second part"
+msgstr ""
+"მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜, მეáƒáƒ áƒ” ნáƒáƒ¬áƒ˜áƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:338
+msgid "Myanmar"
+msgstr "მიáƒáƒœáƒ›áƒ"
+
+#: ../rules/base.xml.in.h:339
+msgid "Neostyle"
+msgstr "Neostyle"
+
+#: ../rules/base.xml.in.h:340
+msgid "Nep"
+msgstr "ნეპ"
+
+#: ../rules/base.xml.in.h:341
+msgid "Nepal"
+msgstr "ნეპáƒáƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:342
+msgid "Netherlands"
+msgstr "ნიდერლáƒáƒœáƒ“ები"
+
+#: ../rules/base.xml.in.h:343
+msgid "Nld"
+msgstr "ჰáƒáƒš"
+
+#: ../rules/base.xml.in.h:344
+msgid "Nor"
+msgstr "ნáƒáƒ "
+
+#: ../rules/base.xml.in.h:345
+msgid "Northern Saami"
+msgstr "ჩრდილáƒáƒ”თ სáƒáƒáƒ›áƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:346
+msgid "Northern Saami, eliminate dead keys"
+msgstr ""
+"ჩრდილáƒáƒ”თ სáƒáƒáƒ›áƒ£áƒ áƒ˜, სპეც "
+"ღილáƒáƒ™áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:347
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:348
+msgid "Norway"
+msgstr "ნáƒáƒ áƒ•áƒ”გიáƒ"
+
+#: ../rules/base.xml.in.h:349
+msgid "NumLock LED shows alternative group."
+msgstr ""
+"NumLock-ის ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒ©áƒ•áƒ”ნებს "
+"დáƒáƒ›áƒáƒ¢áƒ”ბით ჯგუფს."
+
+#: ../rules/base.xml.in.h:350
+msgid "Numpad keys work as with Mac."
+msgstr ""
+"ციფრული ღილáƒáƒ™áƒ”ბი "
+"მáƒáƒ¥áƒ›áƒ”დებენ რáƒáƒ’áƒáƒ áƒª Mac-ის "
+"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ¨áƒ˜."
+
+#: ../rules/base.xml.in.h:351
+msgid "Ogham"
+msgstr "áƒáƒ’ხáƒáƒ›áƒ˜"
+
+#: ../rules/base.xml.in.h:352
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:353
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/Internet keyboard"
+
+#: ../rules/base.xml.in.h:354
+msgid "Oriya"
+msgstr "áƒáƒ áƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:355
+msgid "Ossetian"
+msgstr "áƒáƒ¡áƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:356
+msgid "Ossetian, Winkeys"
+msgstr "áƒáƒ¡áƒ£áƒ áƒ˜, Windows კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ"
+
+#: ../rules/base.xml.in.h:357
+msgid "PC-98xx Series"
+msgstr "PC-98xx Series"
+
+#: ../rules/base.xml.in.h:358
+msgid "Pak"
+msgstr "პáƒáƒ™"
+
+#: ../rules/base.xml.in.h:359
+msgid "Pakistan"
+msgstr "პáƒáƒ™áƒ˜áƒ¡áƒ¢áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:360
+msgid "Pashto"
+msgstr "პáƒáƒ¨áƒ¢áƒ"
+
+#: ../rules/base.xml.in.h:361
+msgid "Pattachote"
+msgstr "პáƒáƒ¢áƒáƒ©áƒáƒ¢áƒ˜"
+
+#: ../rules/base.xml.in.h:362
+msgid "Phonetic"
+msgstr "ფáƒáƒœáƒ”ტიკური"
+
+#: ../rules/base.xml.in.h:363
+msgid "Pol"
+msgstr "პáƒáƒš"
+
+#: ../rules/base.xml.in.h:364
+msgid "Poland"
+msgstr "პáƒáƒšáƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:365
+msgid "Polytonic"
+msgstr "პáƒáƒšáƒ˜áƒ¤áƒáƒœáƒ˜áƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:366
+msgid "Portugal"
+msgstr "პáƒáƒ áƒ¢áƒ£áƒ’áƒáƒšáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:367
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: ../rules/base.xml.in.h:368
+msgid "Press Left Alt key to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
+"მáƒáƒ áƒªáƒ®áƒ”ნრAlt-ს"
+
+#: ../rules/base.xml.in.h:369
+msgid "Press Left Win-key to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
+"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:370
+msgid "Press Menu key to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ Menu "
+"ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:371
+msgid ""
+"Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ¡. "
+"Shift+მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ "
+"იმáƒáƒ¥áƒ›áƒ”დებენ რáƒáƒ’áƒáƒ áƒª Multi_Key."
+
+#: ../rules/base.xml.in.h:372
+msgid "Press Right Alt key to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:373
+msgid "Press Right Ctrl to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl-ს."
+
+#: ../rules/base.xml.in.h:374
+msgid "Press Right Win-key to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜áƒ¡ დáƒáƒ­áƒ”რით."
+
+#: ../rules/base.xml.in.h:375
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
+"ნებისმიერი Alt ღილáƒáƒ™áƒ˜áƒ¡ "
+"დáƒáƒ­áƒ”რით."
+
+#: ../rules/base.xml.in.h:376
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
+"ნებისმიერი Win ღილáƒáƒ™áƒ˜áƒ¡ "
+"დáƒáƒ­áƒ”რით."
+
+#: ../rules/base.xml.in.h:377
+msgid "Pro"
+msgstr "Pro"
+
+#: ../rules/base.xml.in.h:378
+msgid "Pro Keypad"
+msgstr "Pro დáƒáƒ›áƒáƒ¢áƒ”ბ. პáƒáƒœáƒ”ლით"
+
+#: ../rules/base.xml.in.h:379
+msgid "Probhat"
+msgstr "პრáƒáƒ‘áƒáƒ¢áƒ˜"
+
+#: ../rules/base.xml.in.h:380
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:381
+msgid "Prt"
+msgstr "პáƒáƒ áƒ¢"
+
+#: ../rules/base.xml.in.h:382
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:383
+msgid "R-Alt switches group while pressed."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt კლáƒáƒ•áƒ˜áƒ¨áƒ˜ ცვლის "
+"ჯგუფს დáƒáƒ­áƒ”რილ "
+"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
+
+#: ../rules/base.xml.in.h:384
+msgid "Right Alt is Compose."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ "
+"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
+
+#: ../rules/base.xml.in.h:385
+msgid "Right Alt key changes group."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:386
+msgid "Right Ctrl is Compose."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ "
+"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
+
+#: ../rules/base.xml.in.h:387
+msgid "Right Ctrl key changes group."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:388
+msgid "Right Ctrl key switches group while pressed."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს დáƒáƒ­áƒ”რილ "
+"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
+
+#: ../rules/base.xml.in.h:389
+msgid "Right Ctrl key works as Right Alt."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ მáƒáƒ¥áƒ›áƒ”დებს "
+"რáƒáƒ’áƒáƒ áƒª მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt."
+
+#: ../rules/base.xml.in.h:390
+msgid "Right Shift key changes group."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრShift ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:391
+msgid "Right Win-key changes group."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:392
+msgid "Right Win-key is Compose."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ "
+"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
+
+#: ../rules/base.xml.in.h:393
+msgid "Right Win-key switches group while pressed."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს დáƒáƒ­áƒ”რილ "
+"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
+
+#: ../rules/base.xml.in.h:394
+msgid "Right handed Dvorak"
+msgstr ""
+"Dvorak კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
+"áƒáƒ áƒ-ცáƒáƒªáƒ˜áƒ”ბისთვის"
+
+#: ../rules/base.xml.in.h:395
+msgid "Romania"
+msgstr "რუმინეთი"
+
+#: ../rules/base.xml.in.h:396
+msgid "Romanian keyboard with German letters"
+msgstr ""
+"რუმინული კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
+"გერმáƒáƒœáƒ£áƒšáƒ˜ áƒáƒ¡áƒáƒ”ბით"
+
+#: ../rules/base.xml.in.h:397
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr ""
+"რუმინული კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
+"გერმáƒáƒœáƒ£áƒšáƒ˜ áƒáƒ¡áƒáƒ”ბით, dead keys "
+"გáƒáƒ áƒ”შე. "
+
+#: ../rules/base.xml.in.h:398
+msgid "Rou"
+msgstr "რუმ"
+
+#: ../rules/base.xml.in.h:399
+msgid "Rus"
+msgstr "რუს"
+
+#: ../rules/base.xml.in.h:400
+msgid "Russia"
+msgstr "რუსეთი"
+
+#: ../rules/base.xml.in.h:401
+msgid "Russian"
+msgstr "რუსული"
+
+#: ../rules/base.xml.in.h:402
+msgid "Russian phonetic"
+msgstr "რუსული ფáƒáƒœáƒ”ტიკური"
+
+#: ../rules/base.xml.in.h:403
+msgid "Russian phonetic, eliminate dead keys"
+msgstr ""
+"რუსული ფáƒáƒœáƒ”ტიკური, სპეც (dead keys) "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:404
+msgid "Russian with Kazakh"
+msgstr "რუსული ყáƒáƒ–áƒáƒ®áƒ£áƒ áƒ—áƒáƒœ ერთáƒáƒ“"
+
+#: ../rules/base.xml.in.h:405
+msgid "SCG"
+msgstr "SCG"
+
+#: ../rules/base.xml.in.h:406
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:407
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:408
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:409
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:410
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:411
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:412
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:413
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:414
+msgid "ScrollLock LED shows alternative group."
+msgstr ""
+"ScrollLock ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒœáƒáƒ®áƒ”ბს "
+"áƒáƒšáƒ¢áƒ”რ. ჯგუფს."
+
+#: ../rules/base.xml.in.h:415
+msgid "Serbia and Montenegro"
+msgstr "სერბირდრმáƒáƒœáƒ¢áƒ”ნეგრáƒ"
+
+#: ../rules/base.xml.in.h:416
+msgid "Shift with numpad keys works as in MS Windows."
+msgstr ""
+"Shift ღილáƒáƒ™áƒ˜ ციფრულ "
+"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ¡áƒ—áƒáƒœ, მუშáƒáƒáƒ‘ენ "
+"რáƒáƒ’áƒáƒ áƒª MS Window-ში."
+
+#: ../rules/base.xml.in.h:417
+msgid "Shift+CapsLock changes group."
+msgstr "Shift+CapsLock ცვლიáƒáƒœ ჯგუფს."
+
+#: ../rules/base.xml.in.h:418
+msgid "Slovakia"
+msgstr "სლáƒáƒ•áƒáƒ™áƒ”თი"
+
+#: ../rules/base.xml.in.h:419
+msgid "Slovenia"
+msgstr "სლáƒáƒ•áƒ”ნიáƒ"
+
+#: ../rules/base.xml.in.h:420
+msgid "South Africa"
+msgstr "სáƒáƒ›áƒ®áƒ áƒ”თ áƒáƒ¤áƒ áƒ˜áƒ™áƒ"
+
+#: ../rules/base.xml.in.h:421
+msgid "Southern Uzbek"
+msgstr "სáƒáƒ›áƒ®áƒ áƒ”თ-უზბეკური"
+
+#: ../rules/base.xml.in.h:422
+msgid "Spain"
+msgstr "ესპáƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:423
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr ""
+"სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბს (Ctrl+Alt+&lt;клв&gt;) "
+"სერვერი áƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბთ."
+
+#: ../rules/base.xml.in.h:424
+msgid "SrL"
+msgstr "შრლ"
+
+#: ../rules/base.xml.in.h:425
+msgid "Sri Lanka"
+msgstr "შრი-ლáƒáƒœáƒ™áƒ"
+
+#: ../rules/base.xml.in.h:426
+msgid "Standard"
+msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:428
+msgid "Standard RSTU"
+msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:430
+msgid "Standard RSTU on Russian layout"
+msgstr ""
+"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ RSTU რუსულ "
+"გáƒáƒœáƒšáƒáƒ’ებáƒáƒ–ე"
+
+#: ../rules/base.xml.in.h:431
+msgid "Sun dead keys"
+msgstr "სპეც ღილáƒáƒ™áƒ”ბი (dead keys) Sun"
+
+#: ../rules/base.xml.in.h:432
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:433
+msgid "Super is mapped to the Win-keys (default)."
+msgstr ""
+"Super შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin "
+"ღილáƒáƒ™áƒ”ბს.(ნáƒáƒ’ულისმევიáƒ)"
+
+#: ../rules/base.xml.in.h:434
+msgid "Svk"
+msgstr "სლáƒáƒ•áƒ™"
+
+#: ../rules/base.xml.in.h:435
+msgid "Svn"
+msgstr "სლáƒáƒ•áƒ”ნ"
+
+#: ../rules/base.xml.in.h:436
+msgid "Swap Ctrl and CapsLock."
+msgstr "CapsLock ის Ctrl-ით შეცვლáƒ."
+
+#: ../rules/base.xml.in.h:437
+msgid "Swe"
+msgstr "შვედ"
+
+#: ../rules/base.xml.in.h:438
+msgid "Sweden"
+msgstr "შვედეთი"
+
+#: ../rules/base.xml.in.h:439
+msgid "Switzerland"
+msgstr "შვეიცáƒáƒ áƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:440
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:441
+msgid "Syr"
+msgstr "სირ"
+
+#: ../rules/base.xml.in.h:442
+msgid "Syria"
+msgstr "სირიáƒ"
+
+#: ../rules/base.xml.in.h:443
+msgid "Syriac"
+msgstr "სირიული"
+
+#: ../rules/base.xml.in.h:444
+msgid "Syriac phonetic"
+msgstr "სირიის ფáƒáƒœáƒ”ტიკური"
+
+#: ../rules/base.xml.in.h:445
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:446
+msgid "Tajikistan"
+msgstr "ტáƒáƒ¯áƒ˜áƒ™áƒ”თი"
+
+#: ../rules/base.xml.in.h:447
+msgid "Tamil"
+msgstr "თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:448
+msgid "Tamil TAB Typewriter"
+msgstr ""
+"თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ TAB სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
+
+#: ../rules/base.xml.in.h:449
+msgid "Tamil TSCII Typewriter"
+msgstr ""
+"თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ TSCII სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
+
+#: ../rules/base.xml.in.h:450
+msgid "Tamil Unicode"
+msgstr "ტáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ უნიკáƒáƒ“ი"
+
+#: ../rules/base.xml.in.h:451
+msgid "Tatar"
+msgstr "თáƒáƒ—რული"
+
+#: ../rules/base.xml.in.h:452
+msgid "Telugu"
+msgstr "თელუგუ"
+
+#: ../rules/base.xml.in.h:453
+msgid "Tha"
+msgstr "ტáƒáƒ˜"
+
+#: ../rules/base.xml.in.h:454
+msgid "Thailand"
+msgstr "ტáƒáƒ˜áƒšáƒáƒœáƒ“ი"
+
+#: ../rules/base.xml.in.h:455
+msgid "Third level choosers"
+msgstr "მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვáƒ"
+
+#: ../rules/base.xml.in.h:456
+msgid "Tilde (~) variant"
+msgstr "ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜ (~)-ით"
+
+#: ../rules/base.xml.in.h:457
+msgid "Tjk"
+msgstr "ტáƒáƒ¯"
+
+#: ../rules/base.xml.in.h:458
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:459
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:460
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:461
+msgid "Tur"
+msgstr "თურქ"
+
+#: ../rules/base.xml.in.h:462
+msgid "Turkey"
+msgstr "თურქეთი"
+
+#: ../rules/base.xml.in.h:463
+msgid "Typewriter"
+msgstr "სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
+
+#: ../rules/base.xml.in.h:464
+msgid "U.S. English"
+msgstr "ინგლისუáƒáƒ áƒ˜ áƒ.შ.შ"
+
+#: ../rules/base.xml.in.h:465
+msgid "US keyboard with Bosnian digraphs"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ "
+"დიგრáƒáƒ¤áƒ”ბით"
+
+#: ../rules/base.xml.in.h:466
+msgid "US keyboard with Bosnian letters"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ "
+"áƒáƒ¡áƒáƒ”ბით"
+
+#: ../rules/base.xml.in.h:467
+msgid "US keyboard with Croatian digraphs"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"დიგრáƒáƒ¤áƒ”ბით"
+
+#: ../rules/base.xml.in.h:468
+msgid "US keyboard with Croatian letters"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"áƒáƒ¡áƒáƒ”ბით"
+
+#: ../rules/base.xml.in.h:469
+msgid "US keyboard with Lithuanian letters"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ლიტვური "
+"áƒáƒ¡áƒáƒ”ბით"
+
+#: ../rules/base.xml.in.h:470
+msgid "US keyboard with Slovenian digraphs"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ სლáƒáƒ•áƒáƒ™áƒ£áƒ áƒ˜ "
+"დიგრáƒáƒ¤áƒ”ბით"
+
+#: ../rules/base.xml.in.h:471
+msgid "US keyboard with Slovenian letters"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ სლáƒáƒ•áƒáƒ™áƒ£áƒ áƒ˜ "
+"áƒáƒ¡áƒáƒ”ბით"
+
+#: ../rules/base.xml.in.h:472
+msgid "USA"
+msgstr "áƒáƒ¨áƒ¨"
+
+#: ../rules/base.xml.in.h:473
+msgid "Ukr"
+msgstr "უკრ"
+
+#: ../rules/base.xml.in.h:474
+msgid "Ukraine"
+msgstr "უკრáƒáƒ˜áƒœáƒ"
+
+#: ../rules/base.xml.in.h:475
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:476
+msgid "United Kingdom"
+msgstr "დიდი ბრიტáƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:477
+msgid "Urdu"
+msgstr "ურდუ"
+
+#: ../rules/base.xml.in.h:478
+msgid "Use Bosnian digraphs"
+msgstr ""
+"ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ დიგრáƒáƒ¤áƒ”ბის "
+"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
+
+#: ../rules/base.xml.in.h:479
+msgid "Use Croatian digraphs"
+msgstr ""
+"ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ დიგრáƒáƒ¤áƒ”ბის "
+"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
+
+#: ../rules/base.xml.in.h:480
+msgid "Use Slovenian digraphs"
+msgstr ""
+"სლáƒáƒ•áƒ”ნური დიგრáƒáƒ¤áƒ”ბის "
+"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
+
+#: ../rules/base.xml.in.h:481
+msgid "Use guillemets for quotes"
+msgstr ""
+"ფრáƒáƒœáƒ’ული ბრჭყáƒáƒšáƒ”ბის, "
+"ბრჭყáƒáƒšáƒ”ბáƒáƒ“ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
+
+#: ../rules/base.xml.in.h:482
+msgid "Use keyboard LED to show alternative group."
+msgstr ""
+"დáƒáƒ›áƒáƒ¢áƒ”ბითი ჯგუფის "
+"სáƒáƒ©áƒ•áƒ”ნებლáƒáƒ“, კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ˜áƒ¡ "
+"ინდიკáƒáƒ¢áƒáƒ áƒ˜áƒ¡ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ."
+
+#: ../rules/base.xml.in.h:483
+msgid "Uzb"
+msgstr "უზბ"
+
+#: ../rules/base.xml.in.h:484
+msgid "Uzbekistan"
+msgstr "უზბეკეთი"
+
+#: ../rules/base.xml.in.h:485
+msgid "Vietnam"
+msgstr "ვიეტნáƒáƒ›áƒ˜"
+
+#: ../rules/base.xml.in.h:486
+msgid "Vnm"
+msgstr "ვიეტ"
+
+#: ../rules/base.xml.in.h:487
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:488
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:489
+msgid "Winkeys"
+msgstr "Windows კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ"
+
+#: ../rules/base.xml.in.h:490
+msgid "With &lt;\\|&gt; key"
+msgstr "კლáƒáƒ•áƒ˜áƒ¨áƒ”ბით &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:491
+msgid "With guillemets"
+msgstr "გრáƒáƒœáƒ’ული ბრჭყáƒáƒšáƒ”ბით"
+
+#: ../rules/base.xml.in.h:492
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:493
+msgid "Z and ZHE swapped"
+msgstr "Z დრZHE გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒšáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:494
+msgid "Zar"
+msgstr "უáƒáƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:495
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:496
+msgid "azerty/digits"
+msgstr "zerty/ციფრები"
+
+#: ../rules/base.xml.in.h:497
+msgid "digits"
+msgstr "ციფრები"
+
+#: ../rules/base.xml.in.h:498
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:499
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:500
+msgid "qwerty, extended Backslash"
+msgstr ""
+"qwerty, დრBackslash-ის დáƒáƒ›áƒáƒ¢áƒ”ბითი "
+"ფუნქციები"
+
+#: ../rules/base.xml.in.h:501
+msgid "qwerty/digits"
+msgstr "qwerty/ციფრები"
+
+#: ../rules/base.xml.in.h:502
+msgid "qwertz"
+msgstr "qwertz"
+
diff --git a/xorg-server/xkeyboard-config/po/ky.po b/xorg-server/xkeyboard-config/po/ky.po
index b08ebf695..4584c3ea6 100644
--- a/xorg-server/xkeyboard-config/po/ky.po
+++ b/xorg-server/xkeyboard-config/po/ky.po
@@ -1,3017 +1,3017 @@
-# Translation of 'xkeyboard-config' messages to Kirghiz.
-# Copyright (C) 2002 Free Software Foundation, Inc.
-# This file is distributed under the same license as the xkeyboard-config package.
-# Ilyas Bakirov <just_ilyas@yahoo.com>, 2009, 2010
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.6.99\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2009-09-15 23:31+0100\n"
-"PO-Revision-Date: 2009-09-17 20:10+0600\n"
-"Last-Translator: Ilyas Bakirov <just_ilyas@yahoo.com>\n"
-"Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Kyrgyz\n"
-"X-Poedit-Country: KYRGYZSTAN\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "(Legacy) Alternative"
-msgstr "(ЭÑкирген) Ðльтернативдик"
-
-#: ../rules/base.xml.in.h:3
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(ЭÑкирген) Ðльтернативдик, атайын (dead keys) Sun клавишалары менен"
-
-#: ../rules/base.xml.in.h:4
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(ЭÑкирген) Ðльтернативдик, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/104 key Compatible"
-msgstr "101/104 баÑкычтар менен жарамдуу"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwerty/comma/Dead keys"
-msgstr "pc101, qwerty, үтүр, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "pc101, qwerty, үтүр, атайын (dead keys) клавишаларÑыз "
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwerty/dot/Dead keys"
-msgstr "pc101, qwerty, чекит, атайын (dead keys) клавшилары менен"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "pc101, qwerty, үтур, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwertz/comma/Dead keys"
-msgstr "pc101, qwertz, үтур, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "pc101, qwertz, үтүр, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwertz/dot/Dead keys"
-msgstr "pc101, qwertz, чекит, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "pc101, qwertz, чекит, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwerty/comma/Dead keys"
-msgstr "pc102, qwerty, үтүр, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "pc102, qwerty, үтүр, атаыйн (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwerty/dot/Dead keys"
-msgstr "pc102, qwerty, чекит, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "pc102, qwerty, чекит, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwertz/comma/Dead keys"
-msgstr "pc102, qwertz, үтүр, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "pc102, qwertz, үтур, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwertz/dot/Dead keys"
-msgstr "pc102, qwertz, чекит, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "pc102, qwertz, чекит, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:22
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:23
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:24
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:25
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:26
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:27
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:28
-msgid "ACPI Standard"
-msgstr "ACPI Ñтандарттуу"
-
-#: ../rules/base.xml.in.h:29
-msgid "ATM/phone-style"
-msgstr "Банкомат(ATM)/телефондук Ñтилинде"
-
-#: ../rules/base.xml.in.h:30
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:31
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer Laptop"
-msgstr "Acer ноутбугу"
-
-#: ../rules/base.xml.in.h:34
-msgid "Add the standard behavior to Menu key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:35
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:36
-msgid "Adding EuroSign to certain keys"
-msgstr "Белгилүү клавишаларга Евро белгиÑин кошуу."
-
-#: ../rules/base.xml.in.h:37
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:38
-msgid "Afg"
-msgstr "Ðфг"
-
-#: ../rules/base.xml.in.h:39
-msgid "Afghanistan"
-msgstr "ÐфганиÑтан"
-
-#: ../rules/base.xml.in.h:40
-msgid "Akan"
-msgstr "Ðкан"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alb"
-msgstr "Ðлб"
-
-#: ../rules/base.xml.in.h:42
-msgid "Albania"
-msgstr "ÐлбаниÑ"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt жана Meta Alt клавишаларда"
-
-#: ../rules/base.xml.in.h:44
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt is mapped to Right Win, Super to Menu"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt+CapsLock"
-msgstr "Alt+CapsLock"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Space"
-msgstr "Alt+Боштук"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win клавишалары"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alternative"
-msgstr "Ðльтернативдик"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alternative Eastern"
-msgstr "Ðльтернативдик"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative Phonetic"
-msgstr "Ðльтернативдүү фонетикалык"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative international (former us_intl)"
-msgstr "Эларалык Ðльтернативдик (мурунку us_intl)"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative, Sun dead keys"
-msgstr "Ðльтернативдик, атайын (dead keys) Sun клавишалары менен"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative, eliminate dead keys"
-msgstr "Ðльтернативдик, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, latin-9 only"
-msgstr "Ðльтернативдик, latin-9 гана"
-
-#: ../rules/base.xml.in.h:58
-msgid "And"
-msgstr "Ðнд"
-
-#: ../rules/base.xml.in.h:59
-msgid "Andorra"
-msgstr "Ðндорра"
-
-#: ../rules/base.xml.in.h:60
-msgid "Any Alt key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:61
-msgid "Any Win key"
-msgstr "Каалаган Win клавишаÑÑ‹"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Win key (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:63
-msgid "Apostrophe (') variant"
-msgstr "Вариант апоÑтроф (') менен"
-
-#: ../rules/base.xml.in.h:64
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apple Laptop"
-msgstr "Apple Ðоутбугу"
-
-#: ../rules/base.xml.in.h:66
-msgid "Ara"
-msgstr "Ðра"
-
-#: ../rules/base.xml.in.h:67
-msgid "Arabic"
-msgstr "Ðраб"
-
-#: ../rules/base.xml.in.h:68
-msgid "Arm"
-msgstr "Ðрм"
-
-#: ../rules/base.xml.in.h:69
-msgid "Armenia"
-msgstr "ÐрмениÑ"
-
-#: ../rules/base.xml.in.h:70
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr ""
-
-#: ../rules/base.xml.in.h:71
-msgid "Asus Laptop"
-msgstr "Asus ноутбугу"
-
-#: ../rules/base.xml.in.h:72
-msgid "At bottom left"
-msgstr "Төмөн Ñол жакта"
-
-#: ../rules/base.xml.in.h:73
-msgid "At left of 'A'"
-msgstr "'Ð' клавишанын Ñол жагында"
-
-#: ../rules/base.xml.in.h:74
-msgid "Aze"
-msgstr "Ðзр"
-
-#: ../rules/base.xml.in.h:75
-msgid "Azerbaijan"
-msgstr "Ðзербайджан"
-
-#: ../rules/base.xml.in.h:76
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:77
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:78
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:79
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:80
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:81
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:82
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:83
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:84
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:85
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless Internet and Gaming"
-
-#: ../rules/base.xml.in.h:86
-msgid "Baltic+"
-msgstr "Baltic+"
-
-#: ../rules/base.xml.in.h:87
-msgid "Ban"
-msgstr "Бан"
-
-#: ../rules/base.xml.in.h:88
-msgid "Bangladesh"
-msgstr "Бангладеш"
-
-#: ../rules/base.xml.in.h:89
-msgid "Bashkirian"
-msgstr "Башкирдик"
-
-#: ../rules/base.xml.in.h:90
-msgid "Bel"
-msgstr "Бел"
-
-#: ../rules/base.xml.in.h:91
-msgid "Belarus"
-msgstr "БеларуÑиÑ"
-
-#: ../rules/base.xml.in.h:92
-msgid "Belgium"
-msgstr "БельгиÑ"
-
-#: ../rules/base.xml.in.h:93
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:94
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:95
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bengali"
-msgstr "Бенгальдык"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bengali Probhat"
-msgstr "Бенгальдык Пробат"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Бепо, Ñргономикалык, Dvorak'ка окшош"
-
-#: ../rules/base.xml.in.h:99
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Бепо, Ñргономикалык, Dvorak'ка окшош, latin-9 гана"
-
-#: ../rules/base.xml.in.h:100
-msgid "Bgr"
-msgstr "Болг"
-
-#: ../rules/base.xml.in.h:101
-msgid "Bhu"
-msgstr "Бут"
-
-#: ../rules/base.xml.in.h:102
-msgid "Bhutan"
-msgstr "Бутан"
-
-#: ../rules/base.xml.in.h:103
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Библейдик иврит (Tiro)"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bih"
-msgstr "БоÑн"
-
-#: ../rules/base.xml.in.h:105
-msgid "Blr"
-msgstr "Бел"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bosnia and Herzegovina"
-msgstr "БоÑÐ½Ð¸Ñ Ð¶Ð°Ð½Ð° ГерциговиниÑ"
-
-#: ../rules/base.xml.in.h:107
-msgid "Both Alt keys together"
-msgstr "Эки Alt клавишалары бирге"
-
-#: ../rules/base.xml.in.h:108
-msgid "Both Ctrl keys together"
-msgstr "Эки Ctrl клавишалары бирге"
-
-#: ../rules/base.xml.in.h:109
-msgid "Both Shift keys together"
-msgstr "Эки Shift клавишалары бирге"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bra"
-msgstr "Бра"
-
-#: ../rules/base.xml.in.h:111
-msgid "Braille"
-msgstr "Браиил"
-
-#: ../rules/base.xml.in.h:112
-msgid "Brazil"
-msgstr "БразилиÑ"
-
-#: ../rules/base.xml.in.h:113
-msgid "Breton"
-msgstr "Бретон"
-
-#: ../rules/base.xml.in.h:114
-msgid "Brl"
-msgstr "Брл"
-
-#: ../rules/base.xml.in.h:115
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:116
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:117
-msgid "Bulgaria"
-msgstr "БолгариÑ"
-
-#: ../rules/base.xml.in.h:118
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:119
-msgid "Cambodia"
-msgstr "КамбоджиÑ"
-
-#: ../rules/base.xml.in.h:120
-msgid "Can"
-msgstr "Кан"
-
-#: ../rules/base.xml.in.h:121
-msgid "Canada"
-msgstr "Канада"
-
-#: ../rules/base.xml.in.h:122
-msgid "Caps Lock"
-msgstr "Caps Lock"
-
-#: ../rules/base.xml.in.h:123
-msgid "CapsLock"
-msgstr "CapsLock"
-
-#: ../rules/base.xml.in.h:124
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:125
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr ""
-
-#: ../rules/base.xml.in.h:126
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:127
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr "CapsLock Shift блокировка менен клавишаÑÑ‹ катары амал жаÑайт. Shift CapsLock амалына тоÑкол болбойт"
-
-#: ../rules/base.xml.in.h:128
-msgid "CapsLock is disabled"
-msgstr "CapsLock иштен чыгарылды"
-
-#: ../rules/base.xml.in.h:129
-msgid "CapsLock key behavior"
-msgstr ""
-
-#: ../rules/base.xml.in.h:130
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr ""
-
-#: ../rules/base.xml.in.h:131
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:132
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr "CapsLock ички капитализацыÑны ачат. Shift CapsLock амалын токтотот"
-
-#: ../rules/base.xml.in.h:133
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr "CapsLock ички капитализацыÑны ачат. Shift CapsLock амалына тааÑир тийгизбейт"
-
-#: ../rules/base.xml.in.h:134
-msgid "Catalan variant with middle-dot L"
-msgstr ""
-
-#: ../rules/base.xml.in.h:135
-msgid "Cedilla"
-msgstr "Седиль"
-
-#: ../rules/base.xml.in.h:136
-msgid "Che"
-msgstr "Че"
-
-#: ../rules/base.xml.in.h:137
-msgid "Cherokee"
-msgstr "Чероки"
-
-#: ../rules/base.xml.in.h:138
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:139
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:140
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (альтернативдик)"
-
-#: ../rules/base.xml.in.h:141
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:142
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:143
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:144
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:145
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:146
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:147
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:148
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:149
-msgid "China"
-msgstr "Кытай"
-
-#: ../rules/base.xml.in.h:150
-msgid "Chuvash"
-msgstr "Чуваш"
-
-#: ../rules/base.xml.in.h:151
-msgid "Chuvash Latin"
-msgstr "Чуваш латындык"
-
-#: ../rules/base.xml.in.h:152
-msgid "Classic"
-msgstr "КлаÑÑикалык"
-
-#: ../rules/base.xml.in.h:153
-msgid "Classic Dvorak"
-msgstr "КлаÑÑикалык Дровак"
-
-#: ../rules/base.xml.in.h:154
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:155
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:156
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:157
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:158
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (13 клавиша менен)"
-
-#: ../rules/base.xml.in.h:159
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (18 клавиша менен)"
-
-#: ../rules/base.xml.in.h:160
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (7 клавиша менен)"
-
-#: ../rules/base.xml.in.h:161
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:162
-msgid "Compose key position"
-msgstr ""
-
-#: ../rules/base.xml.in.h:163
-msgid "Congo, Democratic Republic of the"
-msgstr "Конго, Демократикалык реÑпубликаÑÑ‹"
-
-#: ../rules/base.xml.in.h:164
-msgid "Control + Alt + Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:165
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:166
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:167
-msgid "Creative Desktop Wireless 7000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:168
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Крым татардык (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:169
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Крым татардык (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:170
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Крым татардык (түрк Alt-Q)"
-
-#: ../rules/base.xml.in.h:171
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Крым татардык (түрк F)"
-
-#: ../rules/base.xml.in.h:172
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Крым татардык (түрк Q)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Croatia"
-msgstr "ХорватиÑ"
-
-#: ../rules/base.xml.in.h:174
-msgid "Ctrl key position"
-msgstr "Ctrl клавишанын жайгашууÑу"
-
-#: ../rules/base.xml.in.h:175
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:176
-msgid "Cyrillic"
-msgstr "Кириллица"
-
-#: ../rules/base.xml.in.h:177
-msgid "Cyrillic with guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:178
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Кирилл, З жана Ж орундарын алмаштырган"
-
-#: ../rules/base.xml.in.h:179
-msgid "Cze"
-msgstr "Чех"
-
-#: ../rules/base.xml.in.h:180
-msgid "Czechia"
-msgstr "ЧехиÑ"
-
-#: ../rules/base.xml.in.h:181
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:182
-msgid "DRC"
-msgstr "DRC"
-
-#: ../rules/base.xml.in.h:183
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:184
-msgid "Dan"
-msgstr "Дан"
-
-#: ../rules/base.xml.in.h:185
-msgid "Dead acute"
-msgstr "Dead acute атайын Ñимволу"
-
-#: ../rules/base.xml.in.h:186
-msgid "Dead grave acute"
-msgstr "Dead grave acute атайын Ñимволу"
-
-#: ../rules/base.xml.in.h:187
-msgid "Default numeric keypad keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:188
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:189
-msgid "Dell 101-key PC"
-msgstr "Dell 101-клавиша менен PC"
-
-#: ../rules/base.xml.in.h:190
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell Inspiron 6xxx/8xxx ноутбугу"
-
-#: ../rules/base.xml.in.h:191
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Precision M ÑериÑлуу ноутбугу"
-
-#: ../rules/base.xml.in.h:192
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude ÑериÑлуу ноутбугу"
-
-#: ../rules/base.xml.in.h:193
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:194
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:195
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:196
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:197
-msgid "Denmark"
-msgstr "ДаниÑ"
-
-#: ../rules/base.xml.in.h:198
-msgid "Deu"
-msgstr "Ðем"
-
-#: ../rules/base.xml.in.h:199
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:200
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 ÑериÑлары"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dvorak"
-msgstr "Дровак"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dvorak (UK Punctuation)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:203
-msgid "Dvorak international"
-msgstr ""
-
-#: ../rules/base.xml.in.h:204
-msgid "Dvorak, Polish quotes on key 1"
-msgstr ""
-
-#: ../rules/base.xml.in.h:205
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:206
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:207
-msgid "Eastern"
-msgstr "Чыгыш"
-
-#: ../rules/base.xml.in.h:208
-msgid "Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:209
-msgid "Enable extra typographic characters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:210
-msgid "English"
-msgstr "ÐнглиÑ"
-
-#: ../rules/base.xml.in.h:211
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:212
-msgid "Enter on keypad"
-msgstr "Enter Ñандык клавиатураÑында"
-
-#: ../rules/base.xml.in.h:213
-msgid "Epo"
-msgstr "ЭÑп"
-
-#: ../rules/base.xml.in.h:214
-msgid "Ergonomic"
-msgstr "Ergonomic"
-
-#: ../rules/base.xml.in.h:215
-msgid "Esp"
-msgstr "ИÑп"
-
-#: ../rules/base.xml.in.h:216
-msgid "Esperanto"
-msgstr "ЭÑперанто"
-
-#: ../rules/base.xml.in.h:217
-msgid "Est"
-msgstr "ЭÑÑ‚"
-
-#: ../rules/base.xml.in.h:218
-msgid "Estonia"
-msgstr "ЭÑтониÑ"
-
-#: ../rules/base.xml.in.h:219
-msgid "Eth"
-msgstr "Эфп"
-
-#: ../rules/base.xml.in.h:220
-msgid "Ethiopia"
-msgstr "ЭфиопиÑ"
-
-#: ../rules/base.xml.in.h:221
-msgid "Evdev-managed keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:222
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:223
-msgid "Ewe"
-msgstr "Эве"
-
-#: ../rules/base.xml.in.h:224
-msgid "Extended"
-msgstr "Кеңейтилген"
-
-#: ../rules/base.xml.in.h:225
-msgid "Extended - Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:226
-msgid "Extended Backslash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:227
-msgid "F-letter (F) variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:228
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:229
-msgid "Fao"
-msgstr "Фар"
-
-#: ../rules/base.xml.in.h:230
-msgid "Faroe Islands"
-msgstr "Фаро аралдары"
-
-#: ../rules/base.xml.in.h:231
-msgid "Fin"
-msgstr "Фин"
-
-#: ../rules/base.xml.in.h:232
-msgid "Finland"
-msgstr "ФинлÑндиÑ"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:235
-msgid "Four-level key with abstract separators"
-msgstr ""
-
-#: ../rules/base.xml.in.h:236
-msgid "Four-level key with comma"
-msgstr ""
-
-#: ../rules/base.xml.in.h:237
-msgid "Four-level key with dot"
-msgstr ""
-
-#: ../rules/base.xml.in.h:238
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr ""
-
-#: ../rules/base.xml.in.h:239
-msgid "Four-level key with momayyez"
-msgstr ""
-
-#: ../rules/base.xml.in.h:240
-msgid "Fra"
-msgstr "Фра"
-
-#: ../rules/base.xml.in.h:241
-msgid "France"
-msgstr "ФранциÑ"
-
-#: ../rules/base.xml.in.h:242
-msgid "French"
-msgstr "Француз"
-
-#: ../rules/base.xml.in.h:243
-msgid "French (Macintosh)"
-msgstr "Француз (Macintosh)"
-
-#: ../rules/base.xml.in.h:244
-msgid "French (legacy)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:245
-msgid "French Dvorak"
-msgstr "Француз Dvorak"
-
-#: ../rules/base.xml.in.h:246
-msgid "French, Sun dead keys"
-msgstr "Француз,атайын (dead keys) Sun клавишалары менен"
-
-#: ../rules/base.xml.in.h:247
-msgid "French, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:248
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Fujitsu-Siemens Computers AMILO laptop"
-
-#: ../rules/base.xml.in.h:249
-msgid "Fula"
-msgstr "Фула"
-
-#: ../rules/base.xml.in.h:250
-msgid "GBr"
-msgstr "Брит"
-
-#: ../rules/base.xml.in.h:251
-msgid "Ga"
-msgstr "Га"
-
-#: ../rules/base.xml.in.h:252
-msgid "Generic 101-key PC"
-msgstr "Жалпы 101-клавишалары менен PC"
-
-#: ../rules/base.xml.in.h:253
-msgid "Generic 102-key (Intl) PC"
-msgstr "Жалпы 102-клавишалары менен (Инт.) PC"
-
-#: ../rules/base.xml.in.h:254
-msgid "Generic 104-key PC"
-msgstr "Жалпы 104-клавишалары менен PC"
-
-#: ../rules/base.xml.in.h:255
-msgid "Generic 105-key (Intl) PC"
-msgstr "Жалпы 105-клавишалары менен (Инт.) PC"
-
-#: ../rules/base.xml.in.h:256
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:257
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:258
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:259
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:260
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:261
-msgid "Geo"
-msgstr "Груз"
-
-#: ../rules/base.xml.in.h:262
-msgid "Georgia"
-msgstr "ГрузиÑ"
-
-#: ../rules/base.xml.in.h:263
-msgid "Georgian"
-msgstr "Грузиндик"
-
-#: ../rules/base.xml.in.h:264
-msgid "Georgian AZERTY Tskapo"
-msgstr "Грузин AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:265
-msgid "German (Macintosh)"
-msgstr "Ðемец (Macintosh)"
-
-#: ../rules/base.xml.in.h:266
-msgid "German, Sun dead keys"
-msgstr "Ðемец, атайын (dead keys) Sun клавишалары менен"
-
-#: ../rules/base.xml.in.h:267
-msgid "German, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:268
-msgid "Germany"
-msgstr "ГерманиÑ"
-
-#: ../rules/base.xml.in.h:269
-msgid "Gha"
-msgstr "Ган"
-
-#: ../rules/base.xml.in.h:270
-msgid "Ghana"
-msgstr "Гана"
-
-#: ../rules/base.xml.in.h:271
-msgid "Gre"
-msgstr "Гре"
-
-#: ../rules/base.xml.in.h:272
-msgid "Greece"
-msgstr "ГрециÑ"
-
-#: ../rules/base.xml.in.h:273
-msgid "Group toggle on multiply/divide key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:274
-msgid "Gui"
-msgstr "Гви"
-
-#: ../rules/base.xml.in.h:275
-msgid "Guinea"
-msgstr "ГвинеÑ"
-
-#: ../rules/base.xml.in.h:276
-msgid "Gujarati"
-msgstr "Гуджарати"
-
-#: ../rules/base.xml.in.h:277
-msgid "Gurmukhi"
-msgstr "Гурмукхи"
-
-#: ../rules/base.xml.in.h:278
-msgid "Gurmukhi Jhelum"
-msgstr "Гурмукхи Jhelum"
-
-#: ../rules/base.xml.in.h:279
-msgid "Gyration"
-msgstr "Гирашн"
-
-#: ../rules/base.xml.in.h:280
-msgid "Happy Hacking Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:281
-msgid "Happy Hacking Keyboard for Mac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:282
-msgid "Hausa"
-msgstr "Хауза"
-
-#: ../rules/base.xml.in.h:283
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:284
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:285
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:286
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:287
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:288
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:289
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:290
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:291
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:292
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:293
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:294
-msgid "Hexadecimal"
-msgstr ""
-
-#: ../rules/base.xml.in.h:295
-msgid "Hindi Bolnagri"
-msgstr "Хинди Болнагри"
-
-#: ../rules/base.xml.in.h:296
-msgid "Hindi Wx"
-msgstr "Хинди Wx"
-
-#: ../rules/base.xml.in.h:297
-msgid "Homophonic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:298
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hrv"
-msgstr "Хорв"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hun"
-msgstr "Венг"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hungary"
-msgstr "ВенгриÑ"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hyper is mapped to Win-keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:303
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:304
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:305
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:306
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:307
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:308
-msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#: ../rules/base.xml.in.h:309
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:310
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:311
-msgid "ISO Alternate"
-msgstr "Кошумча ISO"
-
-#: ../rules/base.xml.in.h:312
-msgid "Iceland"
-msgstr "ИÑландиÑ"
-
-#: ../rules/base.xml.in.h:313
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:314
-msgid "Include dead tilde"
-msgstr ""
-
-#: ../rules/base.xml.in.h:315
-msgid "Ind"
-msgstr "Инд"
-
-#: ../rules/base.xml.in.h:316
-msgid "India"
-msgstr "ИндиÑ"
-
-#: ../rules/base.xml.in.h:317
-msgid "International (AltGr dead keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:318
-msgid "International (with dead keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:319
-msgid "Inuktitut"
-msgstr "ИннуитÑкаÑ"
-
-#: ../rules/base.xml.in.h:320
-msgid "Iran"
-msgstr "Иран"
-
-#: ../rules/base.xml.in.h:321
-msgid "Iraq"
-msgstr "Ирак"
-
-#: ../rules/base.xml.in.h:322
-msgid "Ireland"
-msgstr "ИрландиÑ"
-
-#: ../rules/base.xml.in.h:323
-msgid "Irl"
-msgstr "Ирл"
-
-#: ../rules/base.xml.in.h:324
-msgid "Irn"
-msgstr "ФарÑ"
-
-#: ../rules/base.xml.in.h:325
-msgid "Irq"
-msgstr "Ирк"
-
-#: ../rules/base.xml.in.h:326
-msgid "Isl"
-msgstr "ИÑл"
-
-#: ../rules/base.xml.in.h:327
-msgid "Isr"
-msgstr "Ивр"
-
-#: ../rules/base.xml.in.h:328
-msgid "Israel"
-msgstr "Израиль"
-
-#: ../rules/base.xml.in.h:329
-msgid "Ita"
-msgstr "Ит"
-
-#: ../rules/base.xml.in.h:330
-msgid "Italy"
-msgstr "ИталиÑ"
-
-#: ../rules/base.xml.in.h:331
-msgid "Japan"
-msgstr "ЯпониÑ"
-
-#: ../rules/base.xml.in.h:332
-msgid "Japan (PC-98xx Series)"
-msgstr "Japan (PC-98xx Series)"
-
-#: ../rules/base.xml.in.h:333
-msgid "Japanese keyboard options"
-msgstr ""
-
-#: ../rules/base.xml.in.h:334
-msgid "Jpn"
-msgstr "Яп"
-
-#: ../rules/base.xml.in.h:335
-msgid "Kalmyk"
-msgstr "Калмык"
-
-#: ../rules/base.xml.in.h:336
-msgid "Kana"
-msgstr "Кана"
-
-#: ../rules/base.xml.in.h:337
-msgid "Kana Lock key is locking"
-msgstr ""
-
-#: ../rules/base.xml.in.h:338
-msgid "Kannada"
-msgstr "Каннада"
-
-#: ../rules/base.xml.in.h:339
-msgid "Kashubian"
-msgstr "Кашуб"
-
-#: ../rules/base.xml.in.h:340
-msgid "Kaz"
-msgstr "Каз"
-
-#: ../rules/base.xml.in.h:341
-msgid "Kazakh with Russian"
-msgstr "Казакча ОруÑча менен"
-
-#: ../rules/base.xml.in.h:342
-msgid "Kazakhstan"
-msgstr "КазахÑтан"
-
-#: ../rules/base.xml.in.h:343
-msgid "Key sequence to kill the X server"
-msgstr ""
-
-#: ../rules/base.xml.in.h:344
-msgid "Key to choose 3rd level"
-msgstr "3-чү денгÑÑлди тандоо баÑкычы"
-
-#: ../rules/base.xml.in.h:345
-msgid "Key(s) to change layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:346
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:347
-msgid "Kgz"
-msgstr "Кгз"
-
-#: ../rules/base.xml.in.h:348
-msgid "Khm"
-msgstr "Кхм"
-
-#: ../rules/base.xml.in.h:349
-msgid "Komi"
-msgstr "Коми"
-
-#: ../rules/base.xml.in.h:350
-msgid "Kor"
-msgstr "Кор"
-
-#: ../rules/base.xml.in.h:351
-msgid "Korea, Republic of"
-msgstr "ÐšÐ¾Ñ€ÐµÑ Ð ÐµÑпубликаÑÑ‹"
-
-#: ../rules/base.xml.in.h:352
-msgid "Ktunaxa"
-msgstr "Кутенай"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kurdish, (F)"
-msgstr "Курд, (F)"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kurdish, Arabic-Latin"
-msgstr "Курд, араб-латын"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Курд, латын Alt-Q"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kurdish, Latin Q"
-msgstr "Курд, латын Q"
-
-#: ../rules/base.xml.in.h:357
-msgid "Kyrgyzstan"
-msgstr "КыргызÑтан"
-
-#: ../rules/base.xml.in.h:358
-msgid "LAm"
-msgstr "ЛатÐм"
-
-#: ../rules/base.xml.in.h:359
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:360
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:361
-msgid "Lao"
-msgstr "Лао"
-
-#: ../rules/base.xml.in.h:362
-msgid "Laos"
-msgstr "ЛаоÑ"
-
-#: ../rules/base.xml.in.h:363
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:364
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:365
-msgid "Laptop/notebook eMachines m68xx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:366
-msgid "Latin"
-msgstr "Латын"
-
-#: ../rules/base.xml.in.h:367
-msgid "Latin American"
-msgstr "Латын американдык"
-
-#: ../rules/base.xml.in.h:368
-msgid "Latin Unicode"
-msgstr "Латын Unicode"
-
-#: ../rules/base.xml.in.h:369
-msgid "Latin Unicode qwerty"
-msgstr "Латын Unicode qwerty"
-
-#: ../rules/base.xml.in.h:370
-msgid "Latin qwerty"
-msgstr "Латын qwerty"
-
-#: ../rules/base.xml.in.h:371
-msgid "Latin unicode"
-msgstr "Латын unicode"
-
-#: ../rules/base.xml.in.h:372
-msgid "Latin unicode qwerty"
-msgstr "Латын unicode qwerty"
-
-#: ../rules/base.xml.in.h:373
-msgid "Latin with guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:374
-msgid "Latvia"
-msgstr "ЛатвиÑ"
-
-#: ../rules/base.xml.in.h:375
-msgid "Lav"
-msgstr "Лат"
-
-#: ../rules/base.xml.in.h:376
-msgid "Left Alt"
-msgstr "Сол Alt"
-
-#: ../rules/base.xml.in.h:377
-msgid "Left Alt (while pressed)"
-msgstr "Сол Alt клавишаÑÑ‹ (баÑылган учурда)"
-
-#: ../rules/base.xml.in.h:378
-msgid "Left Alt is swapped with Left Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:379
-msgid "Left Ctrl"
-msgstr "Сол Ctrl"
-
-#: ../rules/base.xml.in.h:380
-msgid "Left Ctrl+Left Shift"
-msgstr ""
-
-#: ../rules/base.xml.in.h:381
-msgid "Left Shift"
-msgstr "Сол Shift"
-
-#: ../rules/base.xml.in.h:382
-msgid "Left Win"
-msgstr "Сол Win"
-
-#: ../rules/base.xml.in.h:383
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:384
-msgid "Left Win (while pressed)"
-msgstr "Сол Alt клавишаÑÑ‹ (баÑылган учурда)"
-
-#: ../rules/base.xml.in.h:385
-msgid "Left hand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:386
-msgid "Left handed Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:387
-msgid "Legacy"
-msgstr "Legacy"
-
-#: ../rules/base.xml.in.h:388
-msgid "Legacy Wang 724"
-msgstr ""
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:390
-msgid "Legacy key with comma"
-msgstr ""
-
-#: ../rules/base.xml.in.h:391
-msgid "Legacy key with dot"
-msgstr ""
-
-#: ../rules/base.xml.in.h:392
-msgid "Less-than/Greater-than"
-msgstr ""
-
-#: ../rules/base.xml.in.h:393
-msgid "Lithuania"
-msgstr "Литва"
-
-#: ../rules/base.xml.in.h:394
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:395
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:396
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (альтернативдик вариант)"
-
-#: ../rules/base.xml.in.h:397
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:398
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:399
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:400
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:401
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (альтернативдик вариант 2)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:403
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:404
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 extra keys via G15daemon"
-
-#: ../rules/base.xml.in.h:405
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech Generic Keyboard"
-
-#: ../rules/base.xml.in.h:406
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 Keyboard"
-
-#: ../rules/base.xml.in.h:407
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:408
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:409
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite Keyboard"
-
-#: ../rules/base.xml.in.h:410
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:411
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:412
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge Keyboard"
-
-#: ../rules/base.xml.in.h:413
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:414
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:415
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (Y-RB6 модели)"
-
-#: ../rules/base.xml.in.h:416
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:417
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:418
-msgid "Lower Sorbian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:419
-msgid "Lower Sorbian (qwertz)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:420
-msgid "Ltu"
-msgstr "Лит"
-
-#: ../rules/base.xml.in.h:421
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:422
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:423
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:424
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Инт.)"
-
-#: ../rules/base.xml.in.h:425
-msgid "Macedonia"
-msgstr "МакедониÑ"
-
-#: ../rules/base.xml.in.h:426
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:427
-msgid "Macintosh Old"
-msgstr "ЭÑки Macintosh"
-
-#: ../rules/base.xml.in.h:428
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, атайын (dead keys) Sun клавишалары менен"
-
-#: ../rules/base.xml.in.h:429
-msgid "Macintosh, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:430
-msgid "Make CapsLock an additional Backspace"
-msgstr "CapsLock кошумча Боштук клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:431
-msgid "Make CapsLock an additional Ctrl"
-msgstr "CapsLock кошумча Ctrl клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:432
-msgid "Make CapsLock an additional ESC"
-msgstr "CapsLock кошумча ESC клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:433
-msgid "Make CapsLock an additional Hyper"
-msgstr "CapsLock кошумча Hyper клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:434
-msgid "Make CapsLock an additional NumLock"
-msgstr "CapsLock кошумча NumLock клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:435
-msgid "Make CapsLock an additional Super"
-msgstr "CapsLock кошумча Super клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:436
-msgid "Mal"
-msgstr "Мал"
-
-#: ../rules/base.xml.in.h:437
-msgid "Malayalam"
-msgstr "Малайaлам"
-
-#: ../rules/base.xml.in.h:438
-msgid "Malayalam Lalitha"
-msgstr "Малайaлам (Lalitha)"
-
-#: ../rules/base.xml.in.h:439
-msgid "Maldives"
-msgstr "Мальдивалар"
-
-#: ../rules/base.xml.in.h:440
-msgid "Malta"
-msgstr "Мальта"
-
-#: ../rules/base.xml.in.h:441
-msgid "Maltese keyboard with US layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:442
-msgid "Mao"
-msgstr "Мао"
-
-#: ../rules/base.xml.in.h:443
-msgid "Maori"
-msgstr "Маори"
-
-#: ../rules/base.xml.in.h:444
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:445
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:446
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:447
-msgid "Menu"
-msgstr "Menu"
-
-#: ../rules/base.xml.in.h:448
-msgid "Meta is mapped to Left Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:449
-msgid "Meta is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:450
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:451
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:452
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, швед"
-
-#: ../rules/base.xml.in.h:453
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:454
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:455
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:456
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:457
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:458
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:459
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:460
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:461
-msgid "Miscellaneous compatibility options"
-msgstr ""
-
-#: ../rules/base.xml.in.h:462
-msgid "Mkd"
-msgstr "Мак"
-
-#: ../rules/base.xml.in.h:463
-msgid "Mlt"
-msgstr "Мальт"
-
-#: ../rules/base.xml.in.h:464
-msgid "Mmr"
-msgstr "МьÑнм"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mng"
-msgstr "Монг"
-
-#: ../rules/base.xml.in.h:466
-msgid "Mongolia"
-msgstr "МонголиÑ"
-
-#: ../rules/base.xml.in.h:467
-msgid "Montenegro"
-msgstr "ЧерногориÑ"
-
-#: ../rules/base.xml.in.h:468
-msgid "Morocco"
-msgstr "Морокко"
-
-#: ../rules/base.xml.in.h:469
-msgid "Multilingual"
-msgstr "Көп тилдүү"
-
-#: ../rules/base.xml.in.h:470
-msgid "Multilingual, first part"
-msgstr "Көп тилдүү, биринчи бөлүк"
-
-#: ../rules/base.xml.in.h:471
-msgid "Multilingual, second part"
-msgstr "Көп тилдүү, Ñкинчи бөлүк"
-
-#: ../rules/base.xml.in.h:472
-msgid "Myanmar"
-msgstr "МьÑнмар"
-
-#: ../rules/base.xml.in.h:473
-msgid "NICOLA-F style Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:474
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:475
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:476
-msgid "Nativo for Esperanto"
-msgstr "Nativo ÑÑперанто үчүн"
-
-#: ../rules/base.xml.in.h:477
-msgid "Nativo for USA keyboards"
-msgstr ""
-
-#: ../rules/base.xml.in.h:478
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:479
-msgid "Nep"
-msgstr "Ðеп"
-
-#: ../rules/base.xml.in.h:480
-msgid "Nepal"
-msgstr "Ðепал"
-
-#: ../rules/base.xml.in.h:481
-msgid "Netherlands"
-msgstr "ÐидерландиÑ"
-
-#: ../rules/base.xml.in.h:482
-msgid "New phonetic"
-msgstr "Жаңы фонетикалык"
-
-#: ../rules/base.xml.in.h:483
-msgid "Nig"
-msgstr "Ðгр"
-
-#: ../rules/base.xml.in.h:484
-msgid "Nigeria"
-msgstr "ÐигериÑ"
-
-#: ../rules/base.xml.in.h:485
-msgid "Nld"
-msgstr "Флам"
-
-#: ../rules/base.xml.in.h:486
-msgid "Non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:487
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:488
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:489
-msgid "Non-breakable space character at second level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:490
-msgid "Non-breakable space character at third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:491
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:492
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:493
-msgid "Nor"
-msgstr "Ðор"
-
-#: ../rules/base.xml.in.h:494
-msgid "Northern Saami"
-msgstr "Түндүк Саами"
-
-#: ../rules/base.xml.in.h:495
-msgid "Northern Saami, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:496
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:497
-msgid "Norway"
-msgstr "ÐорвегиÑ"
-
-#: ../rules/base.xml.in.h:498
-msgid "NumLock"
-msgstr "NumLock"
-
-#: ../rules/base.xml.in.h:499
-msgid "Numeric keypad delete key behaviour"
-msgstr ""
-
-#: ../rules/base.xml.in.h:500
-msgid "Numeric keypad keys work as with Mac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:501
-msgid "Numeric keypad layout selection"
-msgstr ""
-
-#: ../rules/base.xml.in.h:502
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:503
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:504
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:505
-msgid "OLPC Pashto"
-msgstr "OLPC Pashto"
-
-#: ../rules/base.xml.in.h:506
-msgid "OLPC Southern Uzbek"
-msgstr "Түштүк-өзбөк OLPC"
-
-#: ../rules/base.xml.in.h:507
-msgid "Occitan"
-msgstr "ОкÑитандык"
-
-#: ../rules/base.xml.in.h:508
-msgid "Ogham"
-msgstr "Огхам"
-
-#: ../rules/base.xml.in.h:509
-msgid "Ogham IS434"
-msgstr "Огхам IS434"
-
-#: ../rules/base.xml.in.h:510
-msgid "Oriya"
-msgstr "ОрийÑ"
-
-#: ../rules/base.xml.in.h:511
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/Internet keyboard"
-
-#: ../rules/base.xml.in.h:512
-msgid "Ossetian"
-msgstr "ОÑетиндик"
-
-#: ../rules/base.xml.in.h:513
-msgid "Ossetian, Winkeys"
-msgstr "ОÑетиндик Windows клавиатураÑÑ‹"
-
-#: ../rules/base.xml.in.h:514
-msgid "Ossetian, legacy"
-msgstr "ОÑетиндик, ÑÑкирген"
-
-#: ../rules/base.xml.in.h:515
-msgid "PC-98xx Series"
-msgstr "PC-98xx"
-
-#: ../rules/base.xml.in.h:516
-msgid "Pak"
-msgstr "Пак"
-
-#: ../rules/base.xml.in.h:517
-msgid "Pakistan"
-msgstr "ПакиÑтан"
-
-#: ../rules/base.xml.in.h:518
-msgid "Pashto"
-msgstr "Пуштундук"
-
-#: ../rules/base.xml.in.h:519
-msgid "Pattachote"
-msgstr "Паттачот"
-
-#: ../rules/base.xml.in.h:520
-msgid "Persian, with Persian Keypad"
-msgstr ""
-
-#: ../rules/base.xml.in.h:521
-msgid "Phonetic"
-msgstr "Фонетикалык"
-
-#: ../rules/base.xml.in.h:522
-msgid "Phonetic Winkeys"
-msgstr "Win клавишалары менен фонетикалык"
-
-#: ../rules/base.xml.in.h:523
-msgid "Pol"
-msgstr "ПольÑк"
-
-#: ../rules/base.xml.in.h:524
-msgid "Poland"
-msgstr "Польша"
-
-#: ../rules/base.xml.in.h:525
-msgid "Polytonic"
-msgstr "Полифоникалык"
-
-#: ../rules/base.xml.in.h:526
-msgid "Portugal"
-msgstr "ПортугалиÑ"
-
-#: ../rules/base.xml.in.h:527
-msgid "Probhat"
-msgstr "Пробат"
-
-#: ../rules/base.xml.in.h:528
-msgid "Programmer Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:529
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:530
-msgid "Prt"
-msgstr "Порт"
-
-#: ../rules/base.xml.in.h:531
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:532
-msgid "Right Alt"
-msgstr "Оң Alt"
-
-#: ../rules/base.xml.in.h:533
-msgid "Right Alt (while pressed)"
-msgstr "Оң Alt клавишаÑÑ‹ (баÑылган учурда)"
-
-#: ../rules/base.xml.in.h:534
-msgid "Right Alt key never chooses 3rd level"
-msgstr "Оң Alt клавишаÑÑ‹ Ñч качан 3-чү денгÑÑлди тандабайт"
-
-#: ../rules/base.xml.in.h:535
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Оң Alt, Shift жана оң Alt бирге Multi_Key катары амал жаÑайт"
-
-#: ../rules/base.xml.in.h:536
-msgid "Right Ctrl"
-msgstr "Оң Ctrl"
-
-#: ../rules/base.xml.in.h:537
-msgid "Right Ctrl (while pressed)"
-msgstr "Оң Alt клавишаÑÑ‹ (баÑылган учурда)"
-
-#: ../rules/base.xml.in.h:538
-msgid "Right Ctrl as Right Alt"
-msgstr "Оң Ctrl оң Alt клавишадай амал жаÑайт"
-
-#: ../rules/base.xml.in.h:539
-msgid "Right Shift"
-msgstr "Оң Shift"
-
-#: ../rules/base.xml.in.h:540
-msgid "Right Win"
-msgstr "Оң Win"
-
-#: ../rules/base.xml.in.h:541
-msgid "Right Win (while pressed)"
-msgstr "Оң Win клавишаÑÑ‹ (баÑылган учурда)"
-
-#: ../rules/base.xml.in.h:542
-msgid "Right hand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:543
-msgid "Right handed Dvorak"
-msgstr "Dvorak оң колдуу адамдар үчүн"
-
-#: ../rules/base.xml.in.h:544
-msgid "Romania"
-msgstr "РумыниÑ"
-
-#: ../rules/base.xml.in.h:545
-msgid "Romanian keyboard with German letters"
-msgstr "Румындык клавиатура немец ариптери менен"
-
-#: ../rules/base.xml.in.h:546
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Румындык клавиатура немец ариптери менен, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:547
-msgid "Rou"
-msgstr "Рум"
-
-#: ../rules/base.xml.in.h:548
-msgid "Rus"
-msgstr "РуÑ"
-
-#: ../rules/base.xml.in.h:549
-msgid "Russia"
-msgstr "РоÑÑиÑ"
-
-#: ../rules/base.xml.in.h:550
-msgid "Russian"
-msgstr "ОруÑча"
-
-#: ../rules/base.xml.in.h:551
-msgid "Russian phonetic"
-msgstr "ОруÑча фонетикалык"
-
-#: ../rules/base.xml.in.h:552
-msgid "Russian phonetic Dvorak"
-msgstr "ОруÑча фонетикалык Dvorak"
-
-#: ../rules/base.xml.in.h:553
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "ОруÑча фонетикалык, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:554
-msgid "Russian with Kazakh"
-msgstr "ОруÑча Казакча менен"
-
-#: ../rules/base.xml.in.h:555
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:556
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:557
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:558
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:559
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:560 ../rules/base.extras.xml.in.h:7
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:561
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:562
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:563
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:564
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:565
-msgid "Scroll Lock"
-msgstr "Scroll Lock"
-
-#: ../rules/base.xml.in.h:566
-msgid "ScrollLock"
-msgstr "ScrollLock"
-
-#: ../rules/base.xml.in.h:567
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:568
-msgid "Semi-colon on third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:569 ../rules/base.extras.xml.in.h:8
-msgid "Serbia"
-msgstr "СербиÑ"
-
-#: ../rules/base.xml.in.h:570
-msgid "Shift cancels CapsLock"
-msgstr "Shift CapsLock амалын очүрөт"
-
-#: ../rules/base.xml.in.h:571
-msgid "Shift does not cancel NumLock, chooses 3d level instead"
-msgstr ""
-
-#: ../rules/base.xml.in.h:572
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Shift Ñандык клавиатура клавишалары менен MS Windows'тогу клавишадай амал жаÑайт"
-
-#: ../rules/base.xml.in.h:573
-msgid "Shift+CapsLock"
-msgstr "Shift+CapsLock"
-
-#: ../rules/base.xml.in.h:574
-msgid "Simple"
-msgstr "Жөнөкөй"
-
-#: ../rules/base.xml.in.h:575
-msgid "Slovakia"
-msgstr "СловакиÑ"
-
-#: ../rules/base.xml.in.h:576
-msgid "Slovenia"
-msgstr "СловениÑ"
-
-#: ../rules/base.xml.in.h:577
-msgid "South Africa"
-msgstr "Түштүк Ðфрика"
-
-#: ../rules/base.xml.in.h:578
-msgid "Southern Uzbek"
-msgstr "Түштүк өзбөкчө"
-
-#: ../rules/base.xml.in.h:579
-msgid "Spain"
-msgstr "ИÑпаниÑ"
-
-#: ../rules/base.xml.in.h:580
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Ðтайын клавишалар (Ctrl+Alt+&lt;клв&gt;) Ñервер менен долборлонот"
-
-#: ../rules/base.xml.in.h:581
-msgid "SrL"
-msgstr "ШрЛ"
-
-#: ../rules/base.xml.in.h:582
-msgid "Sri Lanka"
-msgstr "Шри Ланка"
-
-#: ../rules/base.xml.in.h:583
-msgid "Standard"
-msgstr "Стандарттык"
-
-#: ../rules/base.xml.in.h:584
-msgid "Standard (Cedilla)"
-msgstr "Стандарттык (Седиль)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:586
-msgid "Standard RSTU"
-msgstr "Стандарттык RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:588
-msgid "Standard RSTU on Russian layout"
-msgstr "Стандарттык RSTU, оруÑча"
-
-#: ../rules/base.xml.in.h:589
-msgid "Sun Type 5/6"
-msgstr "Sun Type 5/6"
-
-#: ../rules/base.xml.in.h:590
-msgid "Sun dead keys"
-msgstr "Ðтайын (dead keys) Sun клавишалар"
-
-#: ../rules/base.xml.in.h:591
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:592
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:593
-msgid "Svk"
-msgstr "Слов"
-
-#: ../rules/base.xml.in.h:594
-msgid "Svn"
-msgstr "Cловен"
-
-#: ../rules/base.xml.in.h:595
-msgid "Swap Ctrl and CapsLock"
-msgstr "Ctrl жана CapsLock клавишаларды алмаштыруу"
-
-#: ../rules/base.xml.in.h:596
-msgid "Swap ESC and CapsLock"
-msgstr "ESC жана CapsLock клавишаларды алмаштыруу"
-
-#: ../rules/base.xml.in.h:597
-msgid "Swe"
-msgstr "Швед"
-
-#: ../rules/base.xml.in.h:598
-msgid "Sweden"
-msgstr "ШвециÑ"
-
-#: ../rules/base.xml.in.h:599
-msgid "Switzerland"
-msgstr "ШвейцариÑ"
-
-#: ../rules/base.xml.in.h:600
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (чөнтөк ПК)"
-
-#: ../rules/base.xml.in.h:601
-msgid "Syr"
-msgstr "ÐÑÑ"
-
-#: ../rules/base.xml.in.h:602
-msgid "Syria"
-msgstr "Сирийдик"
-
-#: ../rules/base.xml.in.h:603
-msgid "Syriac"
-msgstr "Сирийдик"
-
-#: ../rules/base.xml.in.h:604
-msgid "Syriac phonetic"
-msgstr "Сирийдик фонетикалык"
-
-#: ../rules/base.xml.in.h:605
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:606
-msgid "Tajikistan"
-msgstr "ТаджикиÑтан"
-
-#: ../rules/base.xml.in.h:607
-msgid "Tamil"
-msgstr "Тамильдик"
-
-#: ../rules/base.xml.in.h:608
-msgid "Tamil TAB Typewriter"
-msgstr "Тамильдик \"БаÑма машинаÑÑ‹\" TAB"
-
-#: ../rules/base.xml.in.h:609
-msgid "Tamil TSCII Typewriter"
-msgstr "Тамиль TSCII печать машинаÑÑ‹"
-
-#: ../rules/base.xml.in.h:610
-msgid "Tamil Unicode"
-msgstr "Тамиль Unicode"
-
-#: ../rules/base.xml.in.h:611
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:612
-msgid "Tatar"
-msgstr "Татар"
-
-#: ../rules/base.xml.in.h:613
-msgid "Telugu"
-msgstr "Телугу"
-
-#: ../rules/base.xml.in.h:614
-msgid "Tha"
-msgstr "Тай"
-
-#: ../rules/base.xml.in.h:615
-msgid "Thailand"
-msgstr "Тайланд"
-
-#: ../rules/base.xml.in.h:616
-msgid "Tibetan"
-msgstr "Тибет"
-
-#: ../rules/base.xml.in.h:617
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Тибет (ASCII номерлери менен)"
-
-#: ../rules/base.xml.in.h:618
-msgid "Tifinagh"
-msgstr "Тифинагдык"
-
-#: ../rules/base.xml.in.h:619
-msgid "Tifinagh Alternative"
-msgstr "Тифинагдык альтернативдик"
-
-#: ../rules/base.xml.in.h:620
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Тифинагдык альтернативдик фонетикалык"
-
-#: ../rules/base.xml.in.h:621
-msgid "Tifinagh Extended"
-msgstr "Тифинагдык кеңейтилген"
-
-#: ../rules/base.xml.in.h:622
-msgid "Tifinagh Extended Phonetic"
-msgstr "Тифинагдык кеңейтилген фонетикалык"
-
-#: ../rules/base.xml.in.h:623
-msgid "Tifinagh Phonetic"
-msgstr "Тифинагдык фонетикалык"
-
-#: ../rules/base.xml.in.h:624
-msgid "Tilde (~) variant"
-msgstr "Тильда (~) менен вариант"
-
-#: ../rules/base.xml.in.h:625
-msgid "Tjk"
-msgstr "Тадж"
-
-#: ../rules/base.xml.in.h:626
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:627
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:628
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:629
-msgid "Traditional phonetic"
-msgstr "Традициондук фонетикалык"
-
-#: ../rules/base.xml.in.h:630
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:631
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:632
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:633
-msgid "Tur"
-msgstr "Тур"
-
-#: ../rules/base.xml.in.h:634
-msgid "Turkey"
-msgstr "ТурциÑ"
-
-#: ../rules/base.xml.in.h:635
-msgid "Turkmenistan"
-msgstr "ТүркмениÑтан"
-
-#: ../rules/base.xml.in.h:636
-msgid "Typewriter"
-msgstr "БаÑма машинаÑÑ‹"
-
-#: ../rules/base.xml.in.h:637
-msgid "UCW layout (accented letters only)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:638
-msgid "US keyboard with Bosnian digraphs"
-msgstr "ÐКШ клавиатураÑÑ‹ боÑнийдик диграфтар менен"
-
-#: ../rules/base.xml.in.h:639
-msgid "US keyboard with Bosnian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ боÑнийдик ариптер менен"
-
-#: ../rules/base.xml.in.h:640
-msgid "US keyboard with Croatian digraphs"
-msgstr "ÐКШ клавиатураÑÑ‹ хорваттык диграфтар менен"
-
-#: ../rules/base.xml.in.h:641
-msgid "US keyboard with Croatian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ хорваттык ариптер менен"
-
-#: ../rules/base.xml.in.h:642
-msgid "US keyboard with Estonian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ ÑÑтондук ариптер менен"
-
-#: ../rules/base.xml.in.h:643
-msgid "US keyboard with Italian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ итальÑндык ариптер менен"
-
-#: ../rules/base.xml.in.h:644
-msgid "US keyboard with Lithuanian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ литовдук ариптер менен"
-
-#: ../rules/base.xml.in.h:645
-msgid "US keyboard with Slovenian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ Ñловендик ариптер менен"
-
-#: ../rules/base.xml.in.h:646 ../rules/base.extras.xml.in.h:9
-msgid "USA"
-msgstr "ÐКШ"
-
-#: ../rules/base.xml.in.h:647
-msgid "Udmurt"
-msgstr "Удмурттук"
-
-#: ../rules/base.xml.in.h:648
-msgid "Ukr"
-msgstr "Укр"
-
-#: ../rules/base.xml.in.h:649
-msgid "Ukraine"
-msgstr "Украина"
-
-#: ../rules/base.xml.in.h:650
-msgid "Unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:651
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:652
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:653
-msgid "United Kingdom"
-msgstr "ÐÐ½Ð³Ð»Ð¸Ñ (Улуу БританиÑ)"
-
-#: ../rules/base.xml.in.h:654
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:655
-msgid "Urdu, Alternative phonetic"
-msgstr "Урду, альтернативдик фонетикалык"
-
-#: ../rules/base.xml.in.h:656
-msgid "Urdu, Phonetic"
-msgstr "Урду, фонетикалык"
-
-#: ../rules/base.xml.in.h:657
-msgid "Urdu, Winkeys"
-msgstr "Урду, Windows клавишалары менен"
-
-#: ../rules/base.xml.in.h:658
-msgid "Use Bosnian digraphs"
-msgstr "БоÑнийдик диаграфтарды колдонуу"
-
-#: ../rules/base.xml.in.h:659
-msgid "Use Croatian digraphs"
-msgstr "Хорваттык диаграфтарды колдонуу"
-
-#: ../rules/base.xml.in.h:660
-msgid "Use guillemets for quotes"
-msgstr "Француздук тырмакчаларды тырмакчалардай колдонуу"
-
-#: ../rules/base.xml.in.h:661
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Клавиатура индикаторлорду кошумча группаларды көрÑÓ©Ñ‚Ò¯Ò¯ үчүн колдонуу"
-
-#: ../rules/base.xml.in.h:662
-msgid "Using space key to input non-breakable space character"
-msgstr ""
-
-#: ../rules/base.xml.in.h:663
-msgid "Usual space at any level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:664
-msgid "Uzb"
-msgstr "Өзб"
-
-#: ../rules/base.xml.in.h:665
-msgid "Uzbekistan"
-msgstr "ӨзбекиÑтан"
-
-#: ../rules/base.xml.in.h:666
-msgid "Vietnam"
-msgstr "Вьетнам"
-
-#: ../rules/base.xml.in.h:667
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "ViewSonic KU-306 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:668
-msgid "Vnm"
-msgstr "Вьет"
-
-#: ../rules/base.xml.in.h:669
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:670
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:671
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:672
-msgid "Western"
-msgstr "Батыш"
-
-#: ../rules/base.xml.in.h:673
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:674
-msgid "Winkeys"
-msgstr "Windows клавиатураÑÑ‹"
-
-#: ../rules/base.xml.in.h:675
-msgid "With &lt;\\|&gt; key"
-msgstr "&lt;\\|&gt; клавиша менен"
-
-#: ../rules/base.xml.in.h:676
-msgid "With EuroSign on 5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:677
-msgid "With guillemets"
-msgstr "Француздук тырмакчалар менен"
-
-#: ../rules/base.xml.in.h:678
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:679
-msgid "Yakut"
-msgstr "Якуттук"
-
-#: ../rules/base.xml.in.h:680
-msgid "Yoruba"
-msgstr "Йоруба"
-
-#: ../rules/base.xml.in.h:681
-msgid "Z and ZHE swapped"
-msgstr "З жана Ж орундарын алмаштырган"
-
-#: ../rules/base.xml.in.h:682
-msgid "Zar"
-msgstr "ЮÐР"
-
-#: ../rules/base.xml.in.h:683
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:684
-msgid "azerty/digits"
-msgstr "azerty/цифры"
-
-#: ../rules/base.xml.in.h:685
-msgid "digits"
-msgstr "Ñандар"
-
-#: ../rules/base.xml.in.h:686
-msgid "displaced semicolon and quote (obsolete)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:687
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:688
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:689
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, Backslash кеңейтилген функциÑлары"
-
-#: ../rules/base.xml.in.h:690
-msgid "qwerty/digits"
-msgstr "qwerty/Ñандар"
-
-#: ../rules/base.xml.in.h:691
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "ÐÑ‚Ñиндик"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Combining accents instead of dead keys"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Couer D'alene Salish"
-msgstr "Салишдик кёр-д’ален"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "International (AltGr Unicode combining)"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr ""
-
-#~ msgid "Pro"
-#~ msgstr "Pro"
-
-#~ msgid "Pro Keypad"
-#~ msgstr "Pro кошумча панели менен"
-
-#, fuzzy
-#~ msgid "Standard Phonetic"
-#~ msgstr "Ðльтернативдүү фонетикалык"
-
-#~ msgid "(Legacy) Dvorak"
-#~ msgstr "(ЭÑкирген) Dvorak"
-
-#~ msgid "Add the EuroSign to the 5 key."
-#~ msgstr "5 деген клавишага Евро белгиÑин кошуу."
-
-#~ msgid "Add the EuroSign to the E key."
-#~ msgstr "E клавишаÑына Евро белгиÑин кошуу."
-
-#~ msgid "Alt+Shift change layout."
-#~ msgstr "Alt+Shift раÑкладканы алмаштырат."
-
-#~ msgid "Brazilian ABNT2"
-#~ msgstr "Бразилдик ABNT2"
-
-#~ msgid "Press Left Alt key to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо Ñол Alt клавишанын баÑылышы менен."
-
-#~ msgid "Press Left Win-key to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо Ñол Win клавишанын баÑылышы менен."
-
-#~ msgid "Press Right Alt key to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо оң Alt клавишанын баÑылышы менен."
-
-#~ msgid "Press Right Ctrl to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо оң Ctrl клавишанын баÑылышы менен."
-
-#~ msgid "Press Right Win-key to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо оң Win клавишанын баÑылышы менен."
-
-#~ msgid "Press any of Alt keys to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо Alt клавишалардын бирөөÑүнүн баÑылышы менен."
-
-#~ msgid "Press any of Win-keys to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо Win клавишалардын бирөөÑүнүн баÑылышы менен."
-
-#~ msgid "Right Win-key is Compose."
-#~ msgstr "Оң Win Compose клавишадай."
-
-#~ msgid "SCG"
-#~ msgstr "СМÐ"
-
-#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-#~ msgstr "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-
-#~ msgid "US keyboard with Slovenian digraphs"
-#~ msgstr "ÐКШ клавиатураÑÑ‹ Ñловендик диграфтар менен"
-
-#~ msgid "Urdu"
-#~ msgstr "Урду"
-
-#~ msgid "Use Slovenian digraphs"
-#~ msgstr "Словендик диаграфтарды колдонуу"
-
-#~ msgid "\"Typewriter\""
-#~ msgstr "БаÑма машинаÑÑ‹"
-
-#~ msgid "Alt+Control changes group"
-#~ msgstr "Alt+Control группаны алмаштырат"
-
-#~ msgid "Alt+Shift changes group"
-#~ msgstr "Alt+Shift группаны алмаштырат"
-
-#~ msgid "Belgian"
-#~ msgstr "БельгиÑлык"
-
-#~ msgid "Bulgarian"
-#~ msgstr "Болгардык"
-
-#~ msgid "Canadian"
-#~ msgstr "Канаддык"
-
-#~ msgid "Caps Lock key changes group"
-#~ msgstr "Caps Lock клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Caps_Lock LED shows alternative group"
-#~ msgstr "Caps_Lock индикатору башка группаны көрÑÓ©Ñ‚Ó©Ñ‚"
-
-#~ msgid "Control Key Position"
-#~ msgstr "Control клавишанын жайгашууÑу"
-
-#~ msgid "Control key at bottom left"
-#~ msgstr "Control клавишаÑÑ‹ төмөн Ñол жакта жайгашкан"
-
-#~ msgid "Control key at left of 'A'"
-#~ msgstr "Control клавишаÑÑ‹ 'Ф' Ñол жагында"
-
-#~ msgid "Control+Shift changes group"
-#~ msgstr "Control+Shift группаны алмаштырат"
-
-#~ msgid "Czech"
-#~ msgstr "Чех"
-
-#~ msgid "Danish"
-#~ msgstr "Даттык"
-
-#~ msgid "DeuCH"
-#~ msgstr "ÐемШВ"
-
-#~ msgid "Dvo"
-#~ msgstr "Dvo"
-
-#~ msgid "Finnish"
-#~ msgstr "Финдик"
-
-#~ msgid "FraCH"
-#~ msgstr "ФраШВ"
-
-#~ msgid "Hungarian"
-#~ msgstr "Венгердик"
-
-#~ msgid "Italian"
-#~ msgstr "ИтальÑндык"
-
-#~ msgid "Japanese"
-#~ msgstr "Япондук"
-
-#~ msgid "Left Alt key changes group"
-#~ msgstr "Сол Alt клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Left Ctrl key changes group"
-#~ msgstr "Сол Ctrl клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Left Shift key changes group"
-#~ msgstr "Сол Shift клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Norwegian"
-#~ msgstr "Ðорвеждик"
-
-#~ msgid "Num_Lock LED shows alternative group"
-#~ msgstr "Num_Lock индикатору кошумча группаны көрÑÓ©Ñ‚Ó©Ñ‚"
-
-#~ msgid "Polish"
-#~ msgstr "Польдук"
-
-#~ msgid "Portuguese"
-#~ msgstr "Португалдык"
-
-#~ msgid "Press Left Alt key to choose 3rd level"
-#~ msgstr "3-чү денгÑÑлди тандоо Ñол Alt клавишанын баÑылышы менен."
-
-#~ msgid "Press Right Control to choose 3rd level"
-#~ msgstr "3-чү денгÑÑлди тандоо оң Control клавишанын баÑылышы менен."
-
-#~ msgid "Press any of Alt keys to choose 3rd level"
-#~ msgstr "3-чү денгÑÑлди тандоо Alt клавишалардан бирөөÑүнүн баÑылышы менен."
-
-#~ msgid "Right Alt key changes group"
-#~ msgstr "Оң Alt клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Right Control key works as Right Alt"
-#~ msgstr "Оң Control оң Alt клавишадай"
-
-#~ msgid "Right Ctrl key changes group"
-#~ msgstr "Оң Ctrl клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Right Shift key changes group"
-#~ msgstr "Оң Shift клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Scroll_Lock LED shows alternative group"
-#~ msgstr "Scroll_Lock индикатору кошумча панелди көрÑÓ©Ñ‚Ó©Ñ‚"
-
-#~ msgid "Slovak"
-#~ msgstr "Словак"
-
-#~ msgid "Spanish"
-#~ msgstr "ИÑпандык"
-
-#~ msgid "Sun Type 4"
-#~ msgstr "Sun Type 4"
-
-#~ msgid "Sun Type 5 European"
-#~ msgstr "Sun Type 5 Европейдик"
-
-#~ msgid "Sun Type 5 Unix"
-#~ msgstr "Sun Type 5 Unix үчүн"
-
-#~ msgid "Sun Type 6"
-#~ msgstr "Sun Type 6"
-
-#~ msgid "Sun Type 6 Unix"
-#~ msgstr "Sun Type 6 Unix үчүн"
-
-#~ msgid "Sun Type 6 with Euro key"
-#~ msgstr "Sun Type 6 Евро белгиÑи менен"
-
-#~ msgid "Swap Control and Caps Lock"
-#~ msgstr "Control жана Caps Lock клавишалардын ордун алмаштыруу"
-
-#~ msgid "Swedish"
-#~ msgstr "Шведдик"
-
-#~ msgid "Swiss French"
-#~ msgstr "ШвейцариÑлык французча"
-
-#~ msgid "Swiss German"
-#~ msgstr "ШвейцариÑлык немецче"
-
-#~ msgid "Turkish"
-#~ msgstr "Түркчө"
-
-#~ msgid "Turkish (F)"
-#~ msgstr "Түркчө (F) менен"
-
-#~ msgid "Turkish Alt-Q Layout"
-#~ msgstr "Түрк раÑкладкаÑÑ‹ Alt-Q менен"
-
-#~ msgid "U.S. English w/ ISO9995-3"
-#~ msgstr "ÐÐ½Ð³Ð»Ð¸Ñ (ÐКШ) ISO9995-3 менен"
-
-#~ msgid "bksl"
-#~ msgstr "bksl"
-
-#~ msgid "type4"
-#~ msgstr "type4"
+# Translation of 'xkeyboard-config' messages to Kirghiz.
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xkeyboard-config package.
+# Ilyas Bakirov <just_ilyas@yahoo.com>, 2009, 2010
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 1.6.99\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2009-09-15 23:31+0100\n"
+"PO-Revision-Date: 2009-09-17 20:10+0600\n"
+"Last-Translator: Ilyas Bakirov <just_ilyas@yahoo.com>\n"
+"Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Kyrgyz\n"
+"X-Poedit-Country: KYRGYZSTAN\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2
+msgid "(Legacy) Alternative"
+msgstr "(ЭÑкирген) Ðльтернативдик"
+
+#: ../rules/base.xml.in.h:3
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(ЭÑкирген) Ðльтернативдик, атайын (dead keys) Sun клавишалары менен"
+
+#: ../rules/base.xml.in.h:4
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(ЭÑкирген) Ðльтернативдик, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:5
+msgid "101/104 key Compatible"
+msgstr "101/104 баÑкычтар менен жарамдуу"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwerty/comma/Dead keys"
+msgstr "pc101, qwerty, үтүр, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "pc101, qwerty, үтүр, атайын (dead keys) клавишаларÑыз "
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwerty/dot/Dead keys"
+msgstr "pc101, qwerty, чекит, атайын (dead keys) клавшилары менен"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "pc101, qwerty, үтур, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwertz/comma/Dead keys"
+msgstr "pc101, qwertz, үтур, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "pc101, qwertz, үтүр, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwertz/dot/Dead keys"
+msgstr "pc101, qwertz, чекит, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "pc101, qwertz, чекит, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwerty/comma/Dead keys"
+msgstr "pc102, qwerty, үтүр, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "pc102, qwerty, үтүр, атаыйн (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwerty/dot/Dead keys"
+msgstr "pc102, qwerty, чекит, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "pc102, qwerty, чекит, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwertz/comma/Dead keys"
+msgstr "pc102, qwertz, үтүр, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "pc102, qwertz, үтур, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwertz/dot/Dead keys"
+msgstr "pc102, qwertz, чекит, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "pc102, qwertz, чекит, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:22
+msgid "2"
+msgstr "2"
+
+#: ../rules/base.xml.in.h:23
+msgid "4"
+msgstr "4"
+
+#: ../rules/base.xml.in.h:24
+msgid "5"
+msgstr "5"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:28
+msgid "ACPI Standard"
+msgstr "ACPI Ñтандарттуу"
+
+#: ../rules/base.xml.in.h:29
+msgid "ATM/phone-style"
+msgstr "Банкомат(ATM)/телефондук Ñтилинде"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:33
+msgid "Acer Laptop"
+msgstr "Acer ноутбугу"
+
+#: ../rules/base.xml.in.h:34
+msgid "Add the standard behavior to Menu key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:36
+msgid "Adding EuroSign to certain keys"
+msgstr "Белгилүү клавишаларга Евро белгиÑин кошуу."
+
+#: ../rules/base.xml.in.h:37
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afg"
+msgstr "Ðфг"
+
+#: ../rules/base.xml.in.h:39
+msgid "Afghanistan"
+msgstr "ÐфганиÑтан"
+
+#: ../rules/base.xml.in.h:40
+msgid "Akan"
+msgstr "Ðкан"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alb"
+msgstr "Ðлб"
+
+#: ../rules/base.xml.in.h:42
+msgid "Albania"
+msgstr "ÐлбаниÑ"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt жана Meta Alt клавишаларда"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt is mapped to Right Win, Super to Menu"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+CapsLock"
+msgstr "Alt+CapsLock"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt+Space"
+msgstr "Alt+Боштук"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win клавишалары"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative"
+msgstr "Ðльтернативдик"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Eastern"
+msgstr "Ðльтернативдик"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative Phonetic"
+msgstr "Ðльтернативдүү фонетикалык"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative international (former us_intl)"
+msgstr "Эларалык Ðльтернативдик (мурунку us_intl)"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, Sun dead keys"
+msgstr "Ðльтернативдик, атайын (dead keys) Sun клавишалары менен"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, eliminate dead keys"
+msgstr "Ðльтернативдик, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:57
+msgid "Alternative, latin-9 only"
+msgstr "Ðльтернативдик, latin-9 гана"
+
+#: ../rules/base.xml.in.h:58
+msgid "And"
+msgstr "Ðнд"
+
+#: ../rules/base.xml.in.h:59
+msgid "Andorra"
+msgstr "Ðндорра"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Alt key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key"
+msgstr "Каалаган Win клавишаÑÑ‹"
+
+#: ../rules/base.xml.in.h:62
+msgid "Any Win key (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:63
+msgid "Apostrophe (') variant"
+msgstr "Вариант апоÑтроф (') менен"
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Laptop"
+msgstr "Apple Ðоутбугу"
+
+#: ../rules/base.xml.in.h:66
+msgid "Ara"
+msgstr "Ðра"
+
+#: ../rules/base.xml.in.h:67
+msgid "Arabic"
+msgstr "Ðраб"
+
+#: ../rules/base.xml.in.h:68
+msgid "Arm"
+msgstr "Ðрм"
+
+#: ../rules/base.xml.in.h:69
+msgid "Armenia"
+msgstr "ÐрмениÑ"
+
+#: ../rules/base.xml.in.h:70
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr ""
+
+#: ../rules/base.xml.in.h:71
+msgid "Asus Laptop"
+msgstr "Asus ноутбугу"
+
+#: ../rules/base.xml.in.h:72
+msgid "At bottom left"
+msgstr "Төмөн Ñол жакта"
+
+#: ../rules/base.xml.in.h:73
+msgid "At left of 'A'"
+msgstr "'Ð' клавишанын Ñол жагында"
+
+#: ../rules/base.xml.in.h:74
+msgid "Aze"
+msgstr "Ðзр"
+
+#: ../rules/base.xml.in.h:75
+msgid "Azerbaijan"
+msgstr "Ðзербайджан"
+
+#: ../rules/base.xml.in.h:76
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:77
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:78
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:79
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:80
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:81
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:82
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless Internet and Gaming"
+
+#: ../rules/base.xml.in.h:86
+msgid "Baltic+"
+msgstr "Baltic+"
+
+#: ../rules/base.xml.in.h:87
+msgid "Ban"
+msgstr "Бан"
+
+#: ../rules/base.xml.in.h:88
+msgid "Bangladesh"
+msgstr "Бангладеш"
+
+#: ../rules/base.xml.in.h:89
+msgid "Bashkirian"
+msgstr "Башкирдик"
+
+#: ../rules/base.xml.in.h:90
+msgid "Bel"
+msgstr "Бел"
+
+#: ../rules/base.xml.in.h:91
+msgid "Belarus"
+msgstr "БеларуÑиÑ"
+
+#: ../rules/base.xml.in.h:92
+msgid "Belgium"
+msgstr "БельгиÑ"
+
+#: ../rules/base.xml.in.h:93
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:94
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:95
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:96
+msgid "Bengali"
+msgstr "Бенгальдык"
+
+#: ../rules/base.xml.in.h:97
+msgid "Bengali Probhat"
+msgstr "Бенгальдык Пробат"
+
+#: ../rules/base.xml.in.h:98
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Бепо, Ñргономикалык, Dvorak'ка окшош"
+
+#: ../rules/base.xml.in.h:99
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Бепо, Ñргономикалык, Dvorak'ка окшош, latin-9 гана"
+
+#: ../rules/base.xml.in.h:100
+msgid "Bgr"
+msgstr "Болг"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bhu"
+msgstr "Бут"
+
+#: ../rules/base.xml.in.h:102
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: ../rules/base.xml.in.h:103
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Библейдик иврит (Tiro)"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bih"
+msgstr "БоÑн"
+
+#: ../rules/base.xml.in.h:105
+msgid "Blr"
+msgstr "Бел"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bosnia and Herzegovina"
+msgstr "БоÑÐ½Ð¸Ñ Ð¶Ð°Ð½Ð° ГерциговиниÑ"
+
+#: ../rules/base.xml.in.h:107
+msgid "Both Alt keys together"
+msgstr "Эки Alt клавишалары бирге"
+
+#: ../rules/base.xml.in.h:108
+msgid "Both Ctrl keys together"
+msgstr "Эки Ctrl клавишалары бирге"
+
+#: ../rules/base.xml.in.h:109
+msgid "Both Shift keys together"
+msgstr "Эки Shift клавишалары бирге"
+
+#: ../rules/base.xml.in.h:110
+msgid "Bra"
+msgstr "Бра"
+
+#: ../rules/base.xml.in.h:111
+msgid "Braille"
+msgstr "Браиил"
+
+#: ../rules/base.xml.in.h:112
+msgid "Brazil"
+msgstr "БразилиÑ"
+
+#: ../rules/base.xml.in.h:113
+msgid "Breton"
+msgstr "Бретон"
+
+#: ../rules/base.xml.in.h:114
+msgid "Brl"
+msgstr "Брл"
+
+#: ../rules/base.xml.in.h:115
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:116
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:117
+msgid "Bulgaria"
+msgstr "БолгариÑ"
+
+#: ../rules/base.xml.in.h:118
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:119
+msgid "Cambodia"
+msgstr "КамбоджиÑ"
+
+#: ../rules/base.xml.in.h:120
+msgid "Can"
+msgstr "Кан"
+
+#: ../rules/base.xml.in.h:121
+msgid "Canada"
+msgstr "Канада"
+
+#: ../rules/base.xml.in.h:122
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: ../rules/base.xml.in.h:123
+msgid "CapsLock"
+msgstr "CapsLock"
+
+#: ../rules/base.xml.in.h:124
+msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:125
+msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
+msgstr ""
+
+#: ../rules/base.xml.in.h:126
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:127
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
+msgstr "CapsLock Shift блокировка менен клавишаÑÑ‹ катары амал жаÑайт. Shift CapsLock амалына тоÑкол болбойт"
+
+#: ../rules/base.xml.in.h:128
+msgid "CapsLock is disabled"
+msgstr "CapsLock иштен чыгарылды"
+
+#: ../rules/base.xml.in.h:129
+msgid "CapsLock key behavior"
+msgstr ""
+
+#: ../rules/base.xml.in.h:130
+msgid "CapsLock toggles Shift so all keys are affected"
+msgstr ""
+
+#: ../rules/base.xml.in.h:131
+msgid "CapsLock toggles normal capitalization of alphabetic characters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:132
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
+msgstr "CapsLock ички капитализацыÑны ачат. Shift CapsLock амалын токтотот"
+
+#: ../rules/base.xml.in.h:133
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
+msgstr "CapsLock ички капитализацыÑны ачат. Shift CapsLock амалына тааÑир тийгизбейт"
+
+#: ../rules/base.xml.in.h:134
+msgid "Catalan variant with middle-dot L"
+msgstr ""
+
+#: ../rules/base.xml.in.h:135
+msgid "Cedilla"
+msgstr "Седиль"
+
+#: ../rules/base.xml.in.h:136
+msgid "Che"
+msgstr "Че"
+
+#: ../rules/base.xml.in.h:137
+msgid "Cherokee"
+msgstr "Чероки"
+
+#: ../rules/base.xml.in.h:138
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:139
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:140
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (альтернативдик)"
+
+#: ../rules/base.xml.in.h:141
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:142
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:143
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:144
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:145
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:146
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:147
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:148
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:149
+msgid "China"
+msgstr "Кытай"
+
+#: ../rules/base.xml.in.h:150
+msgid "Chuvash"
+msgstr "Чуваш"
+
+#: ../rules/base.xml.in.h:151
+msgid "Chuvash Latin"
+msgstr "Чуваш латындык"
+
+#: ../rules/base.xml.in.h:152
+msgid "Classic"
+msgstr "КлаÑÑикалык"
+
+#: ../rules/base.xml.in.h:153
+msgid "Classic Dvorak"
+msgstr "КлаÑÑикалык Дровак"
+
+#: ../rules/base.xml.in.h:154
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:155
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:156
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:157
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:158
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (13 клавиша менен)"
+
+#: ../rules/base.xml.in.h:159
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (18 клавиша менен)"
+
+#: ../rules/base.xml.in.h:160
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (7 клавиша менен)"
+
+#: ../rules/base.xml.in.h:161
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:162
+msgid "Compose key position"
+msgstr ""
+
+#: ../rules/base.xml.in.h:163
+msgid "Congo, Democratic Republic of the"
+msgstr "Конго, Демократикалык реÑпубликаÑÑ‹"
+
+#: ../rules/base.xml.in.h:164
+msgid "Control + Alt + Backspace"
+msgstr ""
+
+#: ../rules/base.xml.in.h:165
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:166
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:167
+msgid "Creative Desktop Wireless 7000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:168
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Крым татардык (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:169
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Крым татардык (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:170
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Крым татардык (түрк Alt-Q)"
+
+#: ../rules/base.xml.in.h:171
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Крым татардык (түрк F)"
+
+#: ../rules/base.xml.in.h:172
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Крым татардык (түрк Q)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Croatia"
+msgstr "ХорватиÑ"
+
+#: ../rules/base.xml.in.h:174
+msgid "Ctrl key position"
+msgstr "Ctrl клавишанын жайгашууÑу"
+
+#: ../rules/base.xml.in.h:175
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:176
+msgid "Cyrillic"
+msgstr "Кириллица"
+
+#: ../rules/base.xml.in.h:177
+msgid "Cyrillic with guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:178
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Кирилл, З жана Ж орундарын алмаштырган"
+
+#: ../rules/base.xml.in.h:179
+msgid "Cze"
+msgstr "Чех"
+
+#: ../rules/base.xml.in.h:180
+msgid "Czechia"
+msgstr "ЧехиÑ"
+
+#: ../rules/base.xml.in.h:181
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:182
+msgid "DRC"
+msgstr "DRC"
+
+#: ../rules/base.xml.in.h:183
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:184
+msgid "Dan"
+msgstr "Дан"
+
+#: ../rules/base.xml.in.h:185
+msgid "Dead acute"
+msgstr "Dead acute атайын Ñимволу"
+
+#: ../rules/base.xml.in.h:186
+msgid "Dead grave acute"
+msgstr "Dead grave acute атайын Ñимволу"
+
+#: ../rules/base.xml.in.h:187
+msgid "Default numeric keypad keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:188
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:189
+msgid "Dell 101-key PC"
+msgstr "Dell 101-клавиша менен PC"
+
+#: ../rules/base.xml.in.h:190
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell Inspiron 6xxx/8xxx ноутбугу"
+
+#: ../rules/base.xml.in.h:191
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Precision M ÑериÑлуу ноутбугу"
+
+#: ../rules/base.xml.in.h:192
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude ÑериÑлуу ноутбугу"
+
+#: ../rules/base.xml.in.h:193
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:194
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:195
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:196
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:197
+msgid "Denmark"
+msgstr "ДаниÑ"
+
+#: ../rules/base.xml.in.h:198
+msgid "Deu"
+msgstr "Ðем"
+
+#: ../rules/base.xml.in.h:199
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:200
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 ÑериÑлары"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dvorak"
+msgstr "Дровак"
+
+#: ../rules/base.xml.in.h:202
+msgid "Dvorak (UK Punctuation)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:203
+msgid "Dvorak international"
+msgstr ""
+
+#: ../rules/base.xml.in.h:204
+msgid "Dvorak, Polish quotes on key 1"
+msgstr ""
+
+#: ../rules/base.xml.in.h:205
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:206
+msgid "E"
+msgstr "E"
+
+#: ../rules/base.xml.in.h:207
+msgid "Eastern"
+msgstr "Чыгыш"
+
+#: ../rules/base.xml.in.h:208
+msgid "Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:209
+msgid "Enable extra typographic characters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:210
+msgid "English"
+msgstr "ÐнглиÑ"
+
+#: ../rules/base.xml.in.h:211
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:212
+msgid "Enter on keypad"
+msgstr "Enter Ñандык клавиатураÑында"
+
+#: ../rules/base.xml.in.h:213
+msgid "Epo"
+msgstr "ЭÑп"
+
+#: ../rules/base.xml.in.h:214
+msgid "Ergonomic"
+msgstr "Ergonomic"
+
+#: ../rules/base.xml.in.h:215
+msgid "Esp"
+msgstr "ИÑп"
+
+#: ../rules/base.xml.in.h:216
+msgid "Esperanto"
+msgstr "ЭÑперанто"
+
+#: ../rules/base.xml.in.h:217
+msgid "Est"
+msgstr "ЭÑÑ‚"
+
+#: ../rules/base.xml.in.h:218
+msgid "Estonia"
+msgstr "ЭÑтониÑ"
+
+#: ../rules/base.xml.in.h:219
+msgid "Eth"
+msgstr "Эфп"
+
+#: ../rules/base.xml.in.h:220
+msgid "Ethiopia"
+msgstr "ЭфиопиÑ"
+
+#: ../rules/base.xml.in.h:221
+msgid "Evdev-managed keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:222
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:223
+msgid "Ewe"
+msgstr "Эве"
+
+#: ../rules/base.xml.in.h:224
+msgid "Extended"
+msgstr "Кеңейтилген"
+
+#: ../rules/base.xml.in.h:225
+msgid "Extended - Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:226
+msgid "Extended Backslash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:227
+msgid "F-letter (F) variant"
+msgstr ""
+
+#: ../rules/base.xml.in.h:228
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:229
+msgid "Fao"
+msgstr "Фар"
+
+#: ../rules/base.xml.in.h:230
+msgid "Faroe Islands"
+msgstr "Фаро аралдары"
+
+#: ../rules/base.xml.in.h:231
+msgid "Fin"
+msgstr "Фин"
+
+#: ../rules/base.xml.in.h:232
+msgid "Finland"
+msgstr "ФинлÑндиÑ"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:235
+msgid "Four-level key with abstract separators"
+msgstr ""
+
+#: ../rules/base.xml.in.h:236
+msgid "Four-level key with comma"
+msgstr ""
+
+#: ../rules/base.xml.in.h:237
+msgid "Four-level key with dot"
+msgstr ""
+
+#: ../rules/base.xml.in.h:238
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr ""
+
+#: ../rules/base.xml.in.h:239
+msgid "Four-level key with momayyez"
+msgstr ""
+
+#: ../rules/base.xml.in.h:240
+msgid "Fra"
+msgstr "Фра"
+
+#: ../rules/base.xml.in.h:241
+msgid "France"
+msgstr "ФранциÑ"
+
+#: ../rules/base.xml.in.h:242
+msgid "French"
+msgstr "Француз"
+
+#: ../rules/base.xml.in.h:243
+msgid "French (Macintosh)"
+msgstr "Француз (Macintosh)"
+
+#: ../rules/base.xml.in.h:244
+msgid "French (legacy)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:245
+msgid "French Dvorak"
+msgstr "Француз Dvorak"
+
+#: ../rules/base.xml.in.h:246
+msgid "French, Sun dead keys"
+msgstr "Француз,атайын (dead keys) Sun клавишалары менен"
+
+#: ../rules/base.xml.in.h:247
+msgid "French, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:248
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Fujitsu-Siemens Computers AMILO laptop"
+
+#: ../rules/base.xml.in.h:249
+msgid "Fula"
+msgstr "Фула"
+
+#: ../rules/base.xml.in.h:250
+msgid "GBr"
+msgstr "Брит"
+
+#: ../rules/base.xml.in.h:251
+msgid "Ga"
+msgstr "Га"
+
+#: ../rules/base.xml.in.h:252
+msgid "Generic 101-key PC"
+msgstr "Жалпы 101-клавишалары менен PC"
+
+#: ../rules/base.xml.in.h:253
+msgid "Generic 102-key (Intl) PC"
+msgstr "Жалпы 102-клавишалары менен (Инт.) PC"
+
+#: ../rules/base.xml.in.h:254
+msgid "Generic 104-key PC"
+msgstr "Жалпы 104-клавишалары менен PC"
+
+#: ../rules/base.xml.in.h:255
+msgid "Generic 105-key (Intl) PC"
+msgstr "Жалпы 105-клавишалары менен (Инт.) PC"
+
+#: ../rules/base.xml.in.h:256
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:257
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:258
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:259
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:260
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:261
+msgid "Geo"
+msgstr "Груз"
+
+#: ../rules/base.xml.in.h:262
+msgid "Georgia"
+msgstr "ГрузиÑ"
+
+#: ../rules/base.xml.in.h:263
+msgid "Georgian"
+msgstr "Грузиндик"
+
+#: ../rules/base.xml.in.h:264
+msgid "Georgian AZERTY Tskapo"
+msgstr "Грузин AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:265
+msgid "German (Macintosh)"
+msgstr "Ðемец (Macintosh)"
+
+#: ../rules/base.xml.in.h:266
+msgid "German, Sun dead keys"
+msgstr "Ðемец, атайын (dead keys) Sun клавишалары менен"
+
+#: ../rules/base.xml.in.h:267
+msgid "German, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:268
+msgid "Germany"
+msgstr "ГерманиÑ"
+
+#: ../rules/base.xml.in.h:269
+msgid "Gha"
+msgstr "Ган"
+
+#: ../rules/base.xml.in.h:270
+msgid "Ghana"
+msgstr "Гана"
+
+#: ../rules/base.xml.in.h:271
+msgid "Gre"
+msgstr "Гре"
+
+#: ../rules/base.xml.in.h:272
+msgid "Greece"
+msgstr "ГрециÑ"
+
+#: ../rules/base.xml.in.h:273
+msgid "Group toggle on multiply/divide key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:274
+msgid "Gui"
+msgstr "Гви"
+
+#: ../rules/base.xml.in.h:275
+msgid "Guinea"
+msgstr "ГвинеÑ"
+
+#: ../rules/base.xml.in.h:276
+msgid "Gujarati"
+msgstr "Гуджарати"
+
+#: ../rules/base.xml.in.h:277
+msgid "Gurmukhi"
+msgstr "Гурмукхи"
+
+#: ../rules/base.xml.in.h:278
+msgid "Gurmukhi Jhelum"
+msgstr "Гурмукхи Jhelum"
+
+#: ../rules/base.xml.in.h:279
+msgid "Gyration"
+msgstr "Гирашн"
+
+#: ../rules/base.xml.in.h:280
+msgid "Happy Hacking Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:281
+msgid "Happy Hacking Keyboard for Mac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:282
+msgid "Hausa"
+msgstr "Хауза"
+
+#: ../rules/base.xml.in.h:283
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:284
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:285
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:286
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:287
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:288
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:289
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:290
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:291
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:292
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:293
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:294
+msgid "Hexadecimal"
+msgstr ""
+
+#: ../rules/base.xml.in.h:295
+msgid "Hindi Bolnagri"
+msgstr "Хинди Болнагри"
+
+#: ../rules/base.xml.in.h:296
+msgid "Hindi Wx"
+msgstr "Хинди Wx"
+
+#: ../rules/base.xml.in.h:297
+msgid "Homophonic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:298
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:299
+msgid "Hrv"
+msgstr "Хорв"
+
+#: ../rules/base.xml.in.h:300
+msgid "Hun"
+msgstr "Венг"
+
+#: ../rules/base.xml.in.h:301
+msgid "Hungary"
+msgstr "ВенгриÑ"
+
+#: ../rules/base.xml.in.h:302
+msgid "Hyper is mapped to Win-keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:303
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:304
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:305
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:306
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:307
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:308
+msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#: ../rules/base.xml.in.h:309
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:310
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:311
+msgid "ISO Alternate"
+msgstr "Кошумча ISO"
+
+#: ../rules/base.xml.in.h:312
+msgid "Iceland"
+msgstr "ИÑландиÑ"
+
+#: ../rules/base.xml.in.h:313
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:314
+msgid "Include dead tilde"
+msgstr ""
+
+#: ../rules/base.xml.in.h:315
+msgid "Ind"
+msgstr "Инд"
+
+#: ../rules/base.xml.in.h:316
+msgid "India"
+msgstr "ИндиÑ"
+
+#: ../rules/base.xml.in.h:317
+msgid "International (AltGr dead keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:318
+msgid "International (with dead keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:319
+msgid "Inuktitut"
+msgstr "ИннуитÑкаÑ"
+
+#: ../rules/base.xml.in.h:320
+msgid "Iran"
+msgstr "Иран"
+
+#: ../rules/base.xml.in.h:321
+msgid "Iraq"
+msgstr "Ирак"
+
+#: ../rules/base.xml.in.h:322
+msgid "Ireland"
+msgstr "ИрландиÑ"
+
+#: ../rules/base.xml.in.h:323
+msgid "Irl"
+msgstr "Ирл"
+
+#: ../rules/base.xml.in.h:324
+msgid "Irn"
+msgstr "ФарÑ"
+
+#: ../rules/base.xml.in.h:325
+msgid "Irq"
+msgstr "Ирк"
+
+#: ../rules/base.xml.in.h:326
+msgid "Isl"
+msgstr "ИÑл"
+
+#: ../rules/base.xml.in.h:327
+msgid "Isr"
+msgstr "Ивр"
+
+#: ../rules/base.xml.in.h:328
+msgid "Israel"
+msgstr "Израиль"
+
+#: ../rules/base.xml.in.h:329
+msgid "Ita"
+msgstr "Ит"
+
+#: ../rules/base.xml.in.h:330
+msgid "Italy"
+msgstr "ИталиÑ"
+
+#: ../rules/base.xml.in.h:331
+msgid "Japan"
+msgstr "ЯпониÑ"
+
+#: ../rules/base.xml.in.h:332
+msgid "Japan (PC-98xx Series)"
+msgstr "Japan (PC-98xx Series)"
+
+#: ../rules/base.xml.in.h:333
+msgid "Japanese keyboard options"
+msgstr ""
+
+#: ../rules/base.xml.in.h:334
+msgid "Jpn"
+msgstr "Яп"
+
+#: ../rules/base.xml.in.h:335
+msgid "Kalmyk"
+msgstr "Калмык"
+
+#: ../rules/base.xml.in.h:336
+msgid "Kana"
+msgstr "Кана"
+
+#: ../rules/base.xml.in.h:337
+msgid "Kana Lock key is locking"
+msgstr ""
+
+#: ../rules/base.xml.in.h:338
+msgid "Kannada"
+msgstr "Каннада"
+
+#: ../rules/base.xml.in.h:339
+msgid "Kashubian"
+msgstr "Кашуб"
+
+#: ../rules/base.xml.in.h:340
+msgid "Kaz"
+msgstr "Каз"
+
+#: ../rules/base.xml.in.h:341
+msgid "Kazakh with Russian"
+msgstr "Казакча ОруÑча менен"
+
+#: ../rules/base.xml.in.h:342
+msgid "Kazakhstan"
+msgstr "КазахÑтан"
+
+#: ../rules/base.xml.in.h:343
+msgid "Key sequence to kill the X server"
+msgstr ""
+
+#: ../rules/base.xml.in.h:344
+msgid "Key to choose 3rd level"
+msgstr "3-чү денгÑÑлди тандоо баÑкычы"
+
+#: ../rules/base.xml.in.h:345
+msgid "Key(s) to change layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:346
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:347
+msgid "Kgz"
+msgstr "Кгз"
+
+#: ../rules/base.xml.in.h:348
+msgid "Khm"
+msgstr "Кхм"
+
+#: ../rules/base.xml.in.h:349
+msgid "Komi"
+msgstr "Коми"
+
+#: ../rules/base.xml.in.h:350
+msgid "Kor"
+msgstr "Кор"
+
+#: ../rules/base.xml.in.h:351
+msgid "Korea, Republic of"
+msgstr "ÐšÐ¾Ñ€ÐµÑ Ð ÐµÑпубликаÑÑ‹"
+
+#: ../rules/base.xml.in.h:352
+msgid "Ktunaxa"
+msgstr "Кутенай"
+
+#: ../rules/base.xml.in.h:353
+msgid "Kurdish, (F)"
+msgstr "Курд, (F)"
+
+#: ../rules/base.xml.in.h:354
+msgid "Kurdish, Arabic-Latin"
+msgstr "Курд, араб-латын"
+
+#: ../rules/base.xml.in.h:355
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Курд, латын Alt-Q"
+
+#: ../rules/base.xml.in.h:356
+msgid "Kurdish, Latin Q"
+msgstr "Курд, латын Q"
+
+#: ../rules/base.xml.in.h:357
+msgid "Kyrgyzstan"
+msgstr "КыргызÑтан"
+
+#: ../rules/base.xml.in.h:358
+msgid "LAm"
+msgstr "ЛатÐм"
+
+#: ../rules/base.xml.in.h:359
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:360
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:361
+msgid "Lao"
+msgstr "Лао"
+
+#: ../rules/base.xml.in.h:362
+msgid "Laos"
+msgstr "ЛаоÑ"
+
+#: ../rules/base.xml.in.h:363
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:364
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:365
+msgid "Laptop/notebook eMachines m68xx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:366
+msgid "Latin"
+msgstr "Латын"
+
+#: ../rules/base.xml.in.h:367
+msgid "Latin American"
+msgstr "Латын американдык"
+
+#: ../rules/base.xml.in.h:368
+msgid "Latin Unicode"
+msgstr "Латын Unicode"
+
+#: ../rules/base.xml.in.h:369
+msgid "Latin Unicode qwerty"
+msgstr "Латын Unicode qwerty"
+
+#: ../rules/base.xml.in.h:370
+msgid "Latin qwerty"
+msgstr "Латын qwerty"
+
+#: ../rules/base.xml.in.h:371
+msgid "Latin unicode"
+msgstr "Латын unicode"
+
+#: ../rules/base.xml.in.h:372
+msgid "Latin unicode qwerty"
+msgstr "Латын unicode qwerty"
+
+#: ../rules/base.xml.in.h:373
+msgid "Latin with guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:374
+msgid "Latvia"
+msgstr "ЛатвиÑ"
+
+#: ../rules/base.xml.in.h:375
+msgid "Lav"
+msgstr "Лат"
+
+#: ../rules/base.xml.in.h:376
+msgid "Left Alt"
+msgstr "Сол Alt"
+
+#: ../rules/base.xml.in.h:377
+msgid "Left Alt (while pressed)"
+msgstr "Сол Alt клавишаÑÑ‹ (баÑылган учурда)"
+
+#: ../rules/base.xml.in.h:378
+msgid "Left Alt is swapped with Left Win"
+msgstr ""
+
+#: ../rules/base.xml.in.h:379
+msgid "Left Ctrl"
+msgstr "Сол Ctrl"
+
+#: ../rules/base.xml.in.h:380
+msgid "Left Ctrl+Left Shift"
+msgstr ""
+
+#: ../rules/base.xml.in.h:381
+msgid "Left Shift"
+msgstr "Сол Shift"
+
+#: ../rules/base.xml.in.h:382
+msgid "Left Win"
+msgstr "Сол Win"
+
+#: ../rules/base.xml.in.h:383
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:384
+msgid "Left Win (while pressed)"
+msgstr "Сол Alt клавишаÑÑ‹ (баÑылган учурда)"
+
+#: ../rules/base.xml.in.h:385
+msgid "Left hand"
+msgstr ""
+
+#: ../rules/base.xml.in.h:386
+msgid "Left handed Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:387
+msgid "Legacy"
+msgstr "Legacy"
+
+#: ../rules/base.xml.in.h:388
+msgid "Legacy Wang 724"
+msgstr ""
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:390
+msgid "Legacy key with comma"
+msgstr ""
+
+#: ../rules/base.xml.in.h:391
+msgid "Legacy key with dot"
+msgstr ""
+
+#: ../rules/base.xml.in.h:392
+msgid "Less-than/Greater-than"
+msgstr ""
+
+#: ../rules/base.xml.in.h:393
+msgid "Lithuania"
+msgstr "Литва"
+
+#: ../rules/base.xml.in.h:394
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:395
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:396
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (альтернативдик вариант)"
+
+#: ../rules/base.xml.in.h:397
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:398
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:399
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:400
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:401
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (альтернативдик вариант 2)"
+
+#: ../rules/base.xml.in.h:402
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:403
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:404
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 extra keys via G15daemon"
+
+#: ../rules/base.xml.in.h:405
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech Generic Keyboard"
+
+#: ../rules/base.xml.in.h:406
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 Keyboard"
+
+#: ../rules/base.xml.in.h:407
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:408
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:409
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite Keyboard"
+
+#: ../rules/base.xml.in.h:410
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:411
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:412
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge Keyboard"
+
+#: ../rules/base.xml.in.h:413
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:414
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:415
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (Y-RB6 модели)"
+
+#: ../rules/base.xml.in.h:416
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:417
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:418
+msgid "Lower Sorbian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:419
+msgid "Lower Sorbian (qwertz)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:420
+msgid "Ltu"
+msgstr "Лит"
+
+#: ../rules/base.xml.in.h:421
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:422
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:423
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:424
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Инт.)"
+
+#: ../rules/base.xml.in.h:425
+msgid "Macedonia"
+msgstr "МакедониÑ"
+
+#: ../rules/base.xml.in.h:426
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:427
+msgid "Macintosh Old"
+msgstr "ЭÑки Macintosh"
+
+#: ../rules/base.xml.in.h:428
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, атайын (dead keys) Sun клавишалары менен"
+
+#: ../rules/base.xml.in.h:429
+msgid "Macintosh, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:430
+msgid "Make CapsLock an additional Backspace"
+msgstr "CapsLock кошумча Боштук клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:431
+msgid "Make CapsLock an additional Ctrl"
+msgstr "CapsLock кошумча Ctrl клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:432
+msgid "Make CapsLock an additional ESC"
+msgstr "CapsLock кошумча ESC клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:433
+msgid "Make CapsLock an additional Hyper"
+msgstr "CapsLock кошумча Hyper клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:434
+msgid "Make CapsLock an additional NumLock"
+msgstr "CapsLock кошумча NumLock клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:435
+msgid "Make CapsLock an additional Super"
+msgstr "CapsLock кошумча Super клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:436
+msgid "Mal"
+msgstr "Мал"
+
+#: ../rules/base.xml.in.h:437
+msgid "Malayalam"
+msgstr "Малайaлам"
+
+#: ../rules/base.xml.in.h:438
+msgid "Malayalam Lalitha"
+msgstr "Малайaлам (Lalitha)"
+
+#: ../rules/base.xml.in.h:439
+msgid "Maldives"
+msgstr "Мальдивалар"
+
+#: ../rules/base.xml.in.h:440
+msgid "Malta"
+msgstr "Мальта"
+
+#: ../rules/base.xml.in.h:441
+msgid "Maltese keyboard with US layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:442
+msgid "Mao"
+msgstr "Мао"
+
+#: ../rules/base.xml.in.h:443
+msgid "Maori"
+msgstr "Маори"
+
+#: ../rules/base.xml.in.h:444
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:445
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:446
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:447
+msgid "Menu"
+msgstr "Menu"
+
+#: ../rules/base.xml.in.h:448
+msgid "Meta is mapped to Left Win"
+msgstr ""
+
+#: ../rules/base.xml.in.h:449
+msgid "Meta is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:450
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:451
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:452
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, швед"
+
+#: ../rules/base.xml.in.h:453
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:454
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:455
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:456
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:457
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:458
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:459
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:460
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:461
+msgid "Miscellaneous compatibility options"
+msgstr ""
+
+#: ../rules/base.xml.in.h:462
+msgid "Mkd"
+msgstr "Мак"
+
+#: ../rules/base.xml.in.h:463
+msgid "Mlt"
+msgstr "Мальт"
+
+#: ../rules/base.xml.in.h:464
+msgid "Mmr"
+msgstr "МьÑнм"
+
+#: ../rules/base.xml.in.h:465
+msgid "Mng"
+msgstr "Монг"
+
+#: ../rules/base.xml.in.h:466
+msgid "Mongolia"
+msgstr "МонголиÑ"
+
+#: ../rules/base.xml.in.h:467
+msgid "Montenegro"
+msgstr "ЧерногориÑ"
+
+#: ../rules/base.xml.in.h:468
+msgid "Morocco"
+msgstr "Морокко"
+
+#: ../rules/base.xml.in.h:469
+msgid "Multilingual"
+msgstr "Көп тилдүү"
+
+#: ../rules/base.xml.in.h:470
+msgid "Multilingual, first part"
+msgstr "Көп тилдүү, биринчи бөлүк"
+
+#: ../rules/base.xml.in.h:471
+msgid "Multilingual, second part"
+msgstr "Көп тилдүү, Ñкинчи бөлүк"
+
+#: ../rules/base.xml.in.h:472
+msgid "Myanmar"
+msgstr "МьÑнмар"
+
+#: ../rules/base.xml.in.h:473
+msgid "NICOLA-F style Backspace"
+msgstr ""
+
+#: ../rules/base.xml.in.h:474
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:475
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:476
+msgid "Nativo for Esperanto"
+msgstr "Nativo ÑÑперанто үчүн"
+
+#: ../rules/base.xml.in.h:477
+msgid "Nativo for USA keyboards"
+msgstr ""
+
+#: ../rules/base.xml.in.h:478
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:479
+msgid "Nep"
+msgstr "Ðеп"
+
+#: ../rules/base.xml.in.h:480
+msgid "Nepal"
+msgstr "Ðепал"
+
+#: ../rules/base.xml.in.h:481
+msgid "Netherlands"
+msgstr "ÐидерландиÑ"
+
+#: ../rules/base.xml.in.h:482
+msgid "New phonetic"
+msgstr "Жаңы фонетикалык"
+
+#: ../rules/base.xml.in.h:483
+msgid "Nig"
+msgstr "Ðгр"
+
+#: ../rules/base.xml.in.h:484
+msgid "Nigeria"
+msgstr "ÐигериÑ"
+
+#: ../rules/base.xml.in.h:485
+msgid "Nld"
+msgstr "Флам"
+
+#: ../rules/base.xml.in.h:486
+msgid "Non-breakable space character at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:487
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:488
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:489
+msgid "Non-breakable space character at second level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:490
+msgid "Non-breakable space character at third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:491
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:492
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:493
+msgid "Nor"
+msgstr "Ðор"
+
+#: ../rules/base.xml.in.h:494
+msgid "Northern Saami"
+msgstr "Түндүк Саами"
+
+#: ../rules/base.xml.in.h:495
+msgid "Northern Saami, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:496
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:497
+msgid "Norway"
+msgstr "ÐорвегиÑ"
+
+#: ../rules/base.xml.in.h:498
+msgid "NumLock"
+msgstr "NumLock"
+
+#: ../rules/base.xml.in.h:499
+msgid "Numeric keypad delete key behaviour"
+msgstr ""
+
+#: ../rules/base.xml.in.h:500
+msgid "Numeric keypad keys work as with Mac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:501
+msgid "Numeric keypad layout selection"
+msgstr ""
+
+#: ../rules/base.xml.in.h:502
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:503
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:504
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:505
+msgid "OLPC Pashto"
+msgstr "OLPC Pashto"
+
+#: ../rules/base.xml.in.h:506
+msgid "OLPC Southern Uzbek"
+msgstr "Түштүк-өзбөк OLPC"
+
+#: ../rules/base.xml.in.h:507
+msgid "Occitan"
+msgstr "ОкÑитандык"
+
+#: ../rules/base.xml.in.h:508
+msgid "Ogham"
+msgstr "Огхам"
+
+#: ../rules/base.xml.in.h:509
+msgid "Ogham IS434"
+msgstr "Огхам IS434"
+
+#: ../rules/base.xml.in.h:510
+msgid "Oriya"
+msgstr "ОрийÑ"
+
+#: ../rules/base.xml.in.h:511
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/Internet keyboard"
+
+#: ../rules/base.xml.in.h:512
+msgid "Ossetian"
+msgstr "ОÑетиндик"
+
+#: ../rules/base.xml.in.h:513
+msgid "Ossetian, Winkeys"
+msgstr "ОÑетиндик Windows клавиатураÑÑ‹"
+
+#: ../rules/base.xml.in.h:514
+msgid "Ossetian, legacy"
+msgstr "ОÑетиндик, ÑÑкирген"
+
+#: ../rules/base.xml.in.h:515
+msgid "PC-98xx Series"
+msgstr "PC-98xx"
+
+#: ../rules/base.xml.in.h:516
+msgid "Pak"
+msgstr "Пак"
+
+#: ../rules/base.xml.in.h:517
+msgid "Pakistan"
+msgstr "ПакиÑтан"
+
+#: ../rules/base.xml.in.h:518
+msgid "Pashto"
+msgstr "Пуштундук"
+
+#: ../rules/base.xml.in.h:519
+msgid "Pattachote"
+msgstr "Паттачот"
+
+#: ../rules/base.xml.in.h:520
+msgid "Persian, with Persian Keypad"
+msgstr ""
+
+#: ../rules/base.xml.in.h:521
+msgid "Phonetic"
+msgstr "Фонетикалык"
+
+#: ../rules/base.xml.in.h:522
+msgid "Phonetic Winkeys"
+msgstr "Win клавишалары менен фонетикалык"
+
+#: ../rules/base.xml.in.h:523
+msgid "Pol"
+msgstr "ПольÑк"
+
+#: ../rules/base.xml.in.h:524
+msgid "Poland"
+msgstr "Польша"
+
+#: ../rules/base.xml.in.h:525
+msgid "Polytonic"
+msgstr "Полифоникалык"
+
+#: ../rules/base.xml.in.h:526
+msgid "Portugal"
+msgstr "ПортугалиÑ"
+
+#: ../rules/base.xml.in.h:527
+msgid "Probhat"
+msgstr "Пробат"
+
+#: ../rules/base.xml.in.h:528
+msgid "Programmer Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:529
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:530
+msgid "Prt"
+msgstr "Порт"
+
+#: ../rules/base.xml.in.h:531
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:532
+msgid "Right Alt"
+msgstr "Оң Alt"
+
+#: ../rules/base.xml.in.h:533
+msgid "Right Alt (while pressed)"
+msgstr "Оң Alt клавишаÑÑ‹ (баÑылган учурда)"
+
+#: ../rules/base.xml.in.h:534
+msgid "Right Alt key never chooses 3rd level"
+msgstr "Оң Alt клавишаÑÑ‹ Ñч качан 3-чү денгÑÑлди тандабайт"
+
+#: ../rules/base.xml.in.h:535
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Оң Alt, Shift жана оң Alt бирге Multi_Key катары амал жаÑайт"
+
+#: ../rules/base.xml.in.h:536
+msgid "Right Ctrl"
+msgstr "Оң Ctrl"
+
+#: ../rules/base.xml.in.h:537
+msgid "Right Ctrl (while pressed)"
+msgstr "Оң Alt клавишаÑÑ‹ (баÑылган учурда)"
+
+#: ../rules/base.xml.in.h:538
+msgid "Right Ctrl as Right Alt"
+msgstr "Оң Ctrl оң Alt клавишадай амал жаÑайт"
+
+#: ../rules/base.xml.in.h:539
+msgid "Right Shift"
+msgstr "Оң Shift"
+
+#: ../rules/base.xml.in.h:540
+msgid "Right Win"
+msgstr "Оң Win"
+
+#: ../rules/base.xml.in.h:541
+msgid "Right Win (while pressed)"
+msgstr "Оң Win клавишаÑÑ‹ (баÑылган учурда)"
+
+#: ../rules/base.xml.in.h:542
+msgid "Right hand"
+msgstr ""
+
+#: ../rules/base.xml.in.h:543
+msgid "Right handed Dvorak"
+msgstr "Dvorak оң колдуу адамдар үчүн"
+
+#: ../rules/base.xml.in.h:544
+msgid "Romania"
+msgstr "РумыниÑ"
+
+#: ../rules/base.xml.in.h:545
+msgid "Romanian keyboard with German letters"
+msgstr "Румындык клавиатура немец ариптери менен"
+
+#: ../rules/base.xml.in.h:546
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Румындык клавиатура немец ариптери менен, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:547
+msgid "Rou"
+msgstr "Рум"
+
+#: ../rules/base.xml.in.h:548
+msgid "Rus"
+msgstr "РуÑ"
+
+#: ../rules/base.xml.in.h:549
+msgid "Russia"
+msgstr "РоÑÑиÑ"
+
+#: ../rules/base.xml.in.h:550
+msgid "Russian"
+msgstr "ОруÑча"
+
+#: ../rules/base.xml.in.h:551
+msgid "Russian phonetic"
+msgstr "ОруÑча фонетикалык"
+
+#: ../rules/base.xml.in.h:552
+msgid "Russian phonetic Dvorak"
+msgstr "ОруÑча фонетикалык Dvorak"
+
+#: ../rules/base.xml.in.h:553
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "ОруÑча фонетикалык, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:554
+msgid "Russian with Kazakh"
+msgstr "ОруÑча Казакча менен"
+
+#: ../rules/base.xml.in.h:555
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:556
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:557
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:558
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:559
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:560 ../rules/base.extras.xml.in.h:7
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:561
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:562
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:563
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:564
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:565
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#: ../rules/base.xml.in.h:566
+msgid "ScrollLock"
+msgstr "ScrollLock"
+
+#: ../rules/base.xml.in.h:567
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:568
+msgid "Semi-colon on third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:569 ../rules/base.extras.xml.in.h:8
+msgid "Serbia"
+msgstr "СербиÑ"
+
+#: ../rules/base.xml.in.h:570
+msgid "Shift cancels CapsLock"
+msgstr "Shift CapsLock амалын очүрөт"
+
+#: ../rules/base.xml.in.h:571
+msgid "Shift does not cancel NumLock, chooses 3d level instead"
+msgstr ""
+
+#: ../rules/base.xml.in.h:572
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Shift Ñандык клавиатура клавишалары менен MS Windows'тогу клавишадай амал жаÑайт"
+
+#: ../rules/base.xml.in.h:573
+msgid "Shift+CapsLock"
+msgstr "Shift+CapsLock"
+
+#: ../rules/base.xml.in.h:574
+msgid "Simple"
+msgstr "Жөнөкөй"
+
+#: ../rules/base.xml.in.h:575
+msgid "Slovakia"
+msgstr "СловакиÑ"
+
+#: ../rules/base.xml.in.h:576
+msgid "Slovenia"
+msgstr "СловениÑ"
+
+#: ../rules/base.xml.in.h:577
+msgid "South Africa"
+msgstr "Түштүк Ðфрика"
+
+#: ../rules/base.xml.in.h:578
+msgid "Southern Uzbek"
+msgstr "Түштүк өзбөкчө"
+
+#: ../rules/base.xml.in.h:579
+msgid "Spain"
+msgstr "ИÑпаниÑ"
+
+#: ../rules/base.xml.in.h:580
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Ðтайын клавишалар (Ctrl+Alt+&lt;клв&gt;) Ñервер менен долборлонот"
+
+#: ../rules/base.xml.in.h:581
+msgid "SrL"
+msgstr "ШрЛ"
+
+#: ../rules/base.xml.in.h:582
+msgid "Sri Lanka"
+msgstr "Шри Ланка"
+
+#: ../rules/base.xml.in.h:583
+msgid "Standard"
+msgstr "Стандарттык"
+
+#: ../rules/base.xml.in.h:584
+msgid "Standard (Cedilla)"
+msgstr "Стандарттык (Седиль)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:586
+msgid "Standard RSTU"
+msgstr "Стандарттык RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:588
+msgid "Standard RSTU on Russian layout"
+msgstr "Стандарттык RSTU, оруÑча"
+
+#: ../rules/base.xml.in.h:589
+msgid "Sun Type 5/6"
+msgstr "Sun Type 5/6"
+
+#: ../rules/base.xml.in.h:590
+msgid "Sun dead keys"
+msgstr "Ðтайын (dead keys) Sun клавишалар"
+
+#: ../rules/base.xml.in.h:591
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:592
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:593
+msgid "Svk"
+msgstr "Слов"
+
+#: ../rules/base.xml.in.h:594
+msgid "Svn"
+msgstr "Cловен"
+
+#: ../rules/base.xml.in.h:595
+msgid "Swap Ctrl and CapsLock"
+msgstr "Ctrl жана CapsLock клавишаларды алмаштыруу"
+
+#: ../rules/base.xml.in.h:596
+msgid "Swap ESC and CapsLock"
+msgstr "ESC жана CapsLock клавишаларды алмаштыруу"
+
+#: ../rules/base.xml.in.h:597
+msgid "Swe"
+msgstr "Швед"
+
+#: ../rules/base.xml.in.h:598
+msgid "Sweden"
+msgstr "ШвециÑ"
+
+#: ../rules/base.xml.in.h:599
+msgid "Switzerland"
+msgstr "ШвейцариÑ"
+
+#: ../rules/base.xml.in.h:600
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (чөнтөк ПК)"
+
+#: ../rules/base.xml.in.h:601
+msgid "Syr"
+msgstr "ÐÑÑ"
+
+#: ../rules/base.xml.in.h:602
+msgid "Syria"
+msgstr "Сирийдик"
+
+#: ../rules/base.xml.in.h:603
+msgid "Syriac"
+msgstr "Сирийдик"
+
+#: ../rules/base.xml.in.h:604
+msgid "Syriac phonetic"
+msgstr "Сирийдик фонетикалык"
+
+#: ../rules/base.xml.in.h:605
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:606
+msgid "Tajikistan"
+msgstr "ТаджикиÑтан"
+
+#: ../rules/base.xml.in.h:607
+msgid "Tamil"
+msgstr "Тамильдик"
+
+#: ../rules/base.xml.in.h:608
+msgid "Tamil TAB Typewriter"
+msgstr "Тамильдик \"БаÑма машинаÑÑ‹\" TAB"
+
+#: ../rules/base.xml.in.h:609
+msgid "Tamil TSCII Typewriter"
+msgstr "Тамиль TSCII печать машинаÑÑ‹"
+
+#: ../rules/base.xml.in.h:610
+msgid "Tamil Unicode"
+msgstr "Тамиль Unicode"
+
+#: ../rules/base.xml.in.h:611
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:612
+msgid "Tatar"
+msgstr "Татар"
+
+#: ../rules/base.xml.in.h:613
+msgid "Telugu"
+msgstr "Телугу"
+
+#: ../rules/base.xml.in.h:614
+msgid "Tha"
+msgstr "Тай"
+
+#: ../rules/base.xml.in.h:615
+msgid "Thailand"
+msgstr "Тайланд"
+
+#: ../rules/base.xml.in.h:616
+msgid "Tibetan"
+msgstr "Тибет"
+
+#: ../rules/base.xml.in.h:617
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Тибет (ASCII номерлери менен)"
+
+#: ../rules/base.xml.in.h:618
+msgid "Tifinagh"
+msgstr "Тифинагдык"
+
+#: ../rules/base.xml.in.h:619
+msgid "Tifinagh Alternative"
+msgstr "Тифинагдык альтернативдик"
+
+#: ../rules/base.xml.in.h:620
+msgid "Tifinagh Alternative Phonetic"
+msgstr "Тифинагдык альтернативдик фонетикалык"
+
+#: ../rules/base.xml.in.h:621
+msgid "Tifinagh Extended"
+msgstr "Тифинагдык кеңейтилген"
+
+#: ../rules/base.xml.in.h:622
+msgid "Tifinagh Extended Phonetic"
+msgstr "Тифинагдык кеңейтилген фонетикалык"
+
+#: ../rules/base.xml.in.h:623
+msgid "Tifinagh Phonetic"
+msgstr "Тифинагдык фонетикалык"
+
+#: ../rules/base.xml.in.h:624
+msgid "Tilde (~) variant"
+msgstr "Тильда (~) менен вариант"
+
+#: ../rules/base.xml.in.h:625
+msgid "Tjk"
+msgstr "Тадж"
+
+#: ../rules/base.xml.in.h:626
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr ""
+
+#: ../rules/base.xml.in.h:627
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr ""
+
+#: ../rules/base.xml.in.h:628
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:629
+msgid "Traditional phonetic"
+msgstr "Традициондук фонетикалык"
+
+#: ../rules/base.xml.in.h:630
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:631
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:632
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:633
+msgid "Tur"
+msgstr "Тур"
+
+#: ../rules/base.xml.in.h:634
+msgid "Turkey"
+msgstr "ТурциÑ"
+
+#: ../rules/base.xml.in.h:635
+msgid "Turkmenistan"
+msgstr "ТүркмениÑтан"
+
+#: ../rules/base.xml.in.h:636
+msgid "Typewriter"
+msgstr "БаÑма машинаÑÑ‹"
+
+#: ../rules/base.xml.in.h:637
+msgid "UCW layout (accented letters only)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:638
+msgid "US keyboard with Bosnian digraphs"
+msgstr "ÐКШ клавиатураÑÑ‹ боÑнийдик диграфтар менен"
+
+#: ../rules/base.xml.in.h:639
+msgid "US keyboard with Bosnian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ боÑнийдик ариптер менен"
+
+#: ../rules/base.xml.in.h:640
+msgid "US keyboard with Croatian digraphs"
+msgstr "ÐКШ клавиатураÑÑ‹ хорваттык диграфтар менен"
+
+#: ../rules/base.xml.in.h:641
+msgid "US keyboard with Croatian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ хорваттык ариптер менен"
+
+#: ../rules/base.xml.in.h:642
+msgid "US keyboard with Estonian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ ÑÑтондук ариптер менен"
+
+#: ../rules/base.xml.in.h:643
+msgid "US keyboard with Italian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ итальÑндык ариптер менен"
+
+#: ../rules/base.xml.in.h:644
+msgid "US keyboard with Lithuanian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ литовдук ариптер менен"
+
+#: ../rules/base.xml.in.h:645
+msgid "US keyboard with Slovenian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ Ñловендик ариптер менен"
+
+#: ../rules/base.xml.in.h:646 ../rules/base.extras.xml.in.h:9
+msgid "USA"
+msgstr "ÐКШ"
+
+#: ../rules/base.xml.in.h:647
+msgid "Udmurt"
+msgstr "Удмурттук"
+
+#: ../rules/base.xml.in.h:648
+msgid "Ukr"
+msgstr "Укр"
+
+#: ../rules/base.xml.in.h:649
+msgid "Ukraine"
+msgstr "Украина"
+
+#: ../rules/base.xml.in.h:650
+msgid "Unicode additions (arrows and math operators)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:651
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:652
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:653
+msgid "United Kingdom"
+msgstr "ÐÐ½Ð³Ð»Ð¸Ñ (Улуу БританиÑ)"
+
+#: ../rules/base.xml.in.h:654
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:655
+msgid "Urdu, Alternative phonetic"
+msgstr "Урду, альтернативдик фонетикалык"
+
+#: ../rules/base.xml.in.h:656
+msgid "Urdu, Phonetic"
+msgstr "Урду, фонетикалык"
+
+#: ../rules/base.xml.in.h:657
+msgid "Urdu, Winkeys"
+msgstr "Урду, Windows клавишалары менен"
+
+#: ../rules/base.xml.in.h:658
+msgid "Use Bosnian digraphs"
+msgstr "БоÑнийдик диаграфтарды колдонуу"
+
+#: ../rules/base.xml.in.h:659
+msgid "Use Croatian digraphs"
+msgstr "Хорваттык диаграфтарды колдонуу"
+
+#: ../rules/base.xml.in.h:660
+msgid "Use guillemets for quotes"
+msgstr "Француздук тырмакчаларды тырмакчалардай колдонуу"
+
+#: ../rules/base.xml.in.h:661
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Клавиатура индикаторлорду кошумча группаларды көрÑÓ©Ñ‚Ò¯Ò¯ үчүн колдонуу"
+
+#: ../rules/base.xml.in.h:662
+msgid "Using space key to input non-breakable space character"
+msgstr ""
+
+#: ../rules/base.xml.in.h:663
+msgid "Usual space at any level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:664
+msgid "Uzb"
+msgstr "Өзб"
+
+#: ../rules/base.xml.in.h:665
+msgid "Uzbekistan"
+msgstr "ӨзбекиÑтан"
+
+#: ../rules/base.xml.in.h:666
+msgid "Vietnam"
+msgstr "Вьетнам"
+
+#: ../rules/base.xml.in.h:667
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "ViewSonic KU-306 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:668
+msgid "Vnm"
+msgstr "Вьет"
+
+#: ../rules/base.xml.in.h:669
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:670
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:671
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:672
+msgid "Western"
+msgstr "Батыш"
+
+#: ../rules/base.xml.in.h:673
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:674
+msgid "Winkeys"
+msgstr "Windows клавиатураÑÑ‹"
+
+#: ../rules/base.xml.in.h:675
+msgid "With &lt;\\|&gt; key"
+msgstr "&lt;\\|&gt; клавиша менен"
+
+#: ../rules/base.xml.in.h:676
+msgid "With EuroSign on 5"
+msgstr ""
+
+#: ../rules/base.xml.in.h:677
+msgid "With guillemets"
+msgstr "Француздук тырмакчалар менен"
+
+#: ../rules/base.xml.in.h:678
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:679
+msgid "Yakut"
+msgstr "Якуттук"
+
+#: ../rules/base.xml.in.h:680
+msgid "Yoruba"
+msgstr "Йоруба"
+
+#: ../rules/base.xml.in.h:681
+msgid "Z and ZHE swapped"
+msgstr "З жана Ж орундарын алмаштырган"
+
+#: ../rules/base.xml.in.h:682
+msgid "Zar"
+msgstr "ЮÐР"
+
+#: ../rules/base.xml.in.h:683
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:684
+msgid "azerty/digits"
+msgstr "azerty/цифры"
+
+#: ../rules/base.xml.in.h:685
+msgid "digits"
+msgstr "Ñандар"
+
+#: ../rules/base.xml.in.h:686
+msgid "displaced semicolon and quote (obsolete)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:687
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:688
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:689
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, Backslash кеңейтилген функциÑлары"
+
+#: ../rules/base.xml.in.h:690
+msgid "qwerty/digits"
+msgstr "qwerty/Ñандар"
+
+#: ../rules/base.xml.in.h:691
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "ÐÑ‚Ñиндик"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Combining accents instead of dead keys"
+msgstr ""
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Couer D'alene Salish"
+msgstr "Салишдик кёр-д’ален"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "International (AltGr Unicode combining)"
+msgstr ""
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr ""
+
+#~ msgid "Pro"
+#~ msgstr "Pro"
+
+#~ msgid "Pro Keypad"
+#~ msgstr "Pro кошумча панели менен"
+
+#, fuzzy
+#~ msgid "Standard Phonetic"
+#~ msgstr "Ðльтернативдүү фонетикалык"
+
+#~ msgid "(Legacy) Dvorak"
+#~ msgstr "(ЭÑкирген) Dvorak"
+
+#~ msgid "Add the EuroSign to the 5 key."
+#~ msgstr "5 деген клавишага Евро белгиÑин кошуу."
+
+#~ msgid "Add the EuroSign to the E key."
+#~ msgstr "E клавишаÑына Евро белгиÑин кошуу."
+
+#~ msgid "Alt+Shift change layout."
+#~ msgstr "Alt+Shift раÑкладканы алмаштырат."
+
+#~ msgid "Brazilian ABNT2"
+#~ msgstr "Бразилдик ABNT2"
+
+#~ msgid "Press Left Alt key to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо Ñол Alt клавишанын баÑылышы менен."
+
+#~ msgid "Press Left Win-key to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо Ñол Win клавишанын баÑылышы менен."
+
+#~ msgid "Press Right Alt key to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо оң Alt клавишанын баÑылышы менен."
+
+#~ msgid "Press Right Ctrl to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо оң Ctrl клавишанын баÑылышы менен."
+
+#~ msgid "Press Right Win-key to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо оң Win клавишанын баÑылышы менен."
+
+#~ msgid "Press any of Alt keys to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо Alt клавишалардын бирөөÑүнүн баÑылышы менен."
+
+#~ msgid "Press any of Win-keys to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо Win клавишалардын бирөөÑүнүн баÑылышы менен."
+
+#~ msgid "Right Win-key is Compose."
+#~ msgstr "Оң Win Compose клавишадай."
+
+#~ msgid "SCG"
+#~ msgstr "СМÐ"
+
+#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+#~ msgstr "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+
+#~ msgid "US keyboard with Slovenian digraphs"
+#~ msgstr "ÐКШ клавиатураÑÑ‹ Ñловендик диграфтар менен"
+
+#~ msgid "Urdu"
+#~ msgstr "Урду"
+
+#~ msgid "Use Slovenian digraphs"
+#~ msgstr "Словендик диаграфтарды колдонуу"
+
+#~ msgid "\"Typewriter\""
+#~ msgstr "БаÑма машинаÑÑ‹"
+
+#~ msgid "Alt+Control changes group"
+#~ msgstr "Alt+Control группаны алмаштырат"
+
+#~ msgid "Alt+Shift changes group"
+#~ msgstr "Alt+Shift группаны алмаштырат"
+
+#~ msgid "Belgian"
+#~ msgstr "БельгиÑлык"
+
+#~ msgid "Bulgarian"
+#~ msgstr "Болгардык"
+
+#~ msgid "Canadian"
+#~ msgstr "Канаддык"
+
+#~ msgid "Caps Lock key changes group"
+#~ msgstr "Caps Lock клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Caps_Lock LED shows alternative group"
+#~ msgstr "Caps_Lock индикатору башка группаны көрÑÓ©Ñ‚Ó©Ñ‚"
+
+#~ msgid "Control Key Position"
+#~ msgstr "Control клавишанын жайгашууÑу"
+
+#~ msgid "Control key at bottom left"
+#~ msgstr "Control клавишаÑÑ‹ төмөн Ñол жакта жайгашкан"
+
+#~ msgid "Control key at left of 'A'"
+#~ msgstr "Control клавишаÑÑ‹ 'Ф' Ñол жагында"
+
+#~ msgid "Control+Shift changes group"
+#~ msgstr "Control+Shift группаны алмаштырат"
+
+#~ msgid "Czech"
+#~ msgstr "Чех"
+
+#~ msgid "Danish"
+#~ msgstr "Даттык"
+
+#~ msgid "DeuCH"
+#~ msgstr "ÐемШВ"
+
+#~ msgid "Dvo"
+#~ msgstr "Dvo"
+
+#~ msgid "Finnish"
+#~ msgstr "Финдик"
+
+#~ msgid "FraCH"
+#~ msgstr "ФраШВ"
+
+#~ msgid "Hungarian"
+#~ msgstr "Венгердик"
+
+#~ msgid "Italian"
+#~ msgstr "ИтальÑндык"
+
+#~ msgid "Japanese"
+#~ msgstr "Япондук"
+
+#~ msgid "Left Alt key changes group"
+#~ msgstr "Сол Alt клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Left Ctrl key changes group"
+#~ msgstr "Сол Ctrl клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Left Shift key changes group"
+#~ msgstr "Сол Shift клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Norwegian"
+#~ msgstr "Ðорвеждик"
+
+#~ msgid "Num_Lock LED shows alternative group"
+#~ msgstr "Num_Lock индикатору кошумча группаны көрÑÓ©Ñ‚Ó©Ñ‚"
+
+#~ msgid "Polish"
+#~ msgstr "Польдук"
+
+#~ msgid "Portuguese"
+#~ msgstr "Португалдык"
+
+#~ msgid "Press Left Alt key to choose 3rd level"
+#~ msgstr "3-чү денгÑÑлди тандоо Ñол Alt клавишанын баÑылышы менен."
+
+#~ msgid "Press Right Control to choose 3rd level"
+#~ msgstr "3-чү денгÑÑлди тандоо оң Control клавишанын баÑылышы менен."
+
+#~ msgid "Press any of Alt keys to choose 3rd level"
+#~ msgstr "3-чү денгÑÑлди тандоо Alt клавишалардан бирөөÑүнүн баÑылышы менен."
+
+#~ msgid "Right Alt key changes group"
+#~ msgstr "Оң Alt клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Right Control key works as Right Alt"
+#~ msgstr "Оң Control оң Alt клавишадай"
+
+#~ msgid "Right Ctrl key changes group"
+#~ msgstr "Оң Ctrl клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Right Shift key changes group"
+#~ msgstr "Оң Shift клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Scroll_Lock LED shows alternative group"
+#~ msgstr "Scroll_Lock индикатору кошумча панелди көрÑÓ©Ñ‚Ó©Ñ‚"
+
+#~ msgid "Slovak"
+#~ msgstr "Словак"
+
+#~ msgid "Spanish"
+#~ msgstr "ИÑпандык"
+
+#~ msgid "Sun Type 4"
+#~ msgstr "Sun Type 4"
+
+#~ msgid "Sun Type 5 European"
+#~ msgstr "Sun Type 5 Европейдик"
+
+#~ msgid "Sun Type 5 Unix"
+#~ msgstr "Sun Type 5 Unix үчүн"
+
+#~ msgid "Sun Type 6"
+#~ msgstr "Sun Type 6"
+
+#~ msgid "Sun Type 6 Unix"
+#~ msgstr "Sun Type 6 Unix үчүн"
+
+#~ msgid "Sun Type 6 with Euro key"
+#~ msgstr "Sun Type 6 Евро белгиÑи менен"
+
+#~ msgid "Swap Control and Caps Lock"
+#~ msgstr "Control жана Caps Lock клавишалардын ордун алмаштыруу"
+
+#~ msgid "Swedish"
+#~ msgstr "Шведдик"
+
+#~ msgid "Swiss French"
+#~ msgstr "ШвейцариÑлык французча"
+
+#~ msgid "Swiss German"
+#~ msgstr "ШвейцариÑлык немецче"
+
+#~ msgid "Turkish"
+#~ msgstr "Түркчө"
+
+#~ msgid "Turkish (F)"
+#~ msgstr "Түркчө (F) менен"
+
+#~ msgid "Turkish Alt-Q Layout"
+#~ msgstr "Түрк раÑкладкаÑÑ‹ Alt-Q менен"
+
+#~ msgid "U.S. English w/ ISO9995-3"
+#~ msgstr "ÐÐ½Ð³Ð»Ð¸Ñ (ÐКШ) ISO9995-3 менен"
+
+#~ msgid "bksl"
+#~ msgstr "bksl"
+
+#~ msgid "type4"
+#~ msgstr "type4"
diff --git a/xorg-server/xkeyboard-config/po/nb.po b/xorg-server/xkeyboard-config/po/nb.po
index ce3b94416..ffac02c31 100644
--- a/xorg-server/xkeyboard-config/po/nb.po
+++ b/xorg-server/xkeyboard-config/po/nb.po
@@ -1,2689 +1,2689 @@
-# Norwegian bokmaal translation of xkeyboard-config.
-# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the xkeyboard-config package.
-# Kjartan Maraas <kmaraas@gnome.org>, 2007-2009.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.5\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-13 23:12+0000\n"
-"PO-Revision-Date: 2009-04-12 11:33+0200\n"
-"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
-"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../rules/base.xml.in.h:1 ../rules/evdev.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2 ../rules/evdev.xml.in.h:2
-msgid "(Legacy) Alternative"
-msgstr ""
-
-#: ../rules/base.xml.in.h:3 ../rules/evdev.xml.in.h:3
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:4 ../rules/evdev.xml.in.h:4
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:5 ../rules/evdev.xml.in.h:5
-msgid "101/104 key Compatible"
-msgstr "101/104-taster kompatibelt"
-
-#: ../rules/base.xml.in.h:6 ../rules/evdev.xml.in.h:6
-msgid "101/qwerty/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:7 ../rules/evdev.xml.in.h:7
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:8 ../rules/evdev.xml.in.h:8
-msgid "101/qwerty/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:9 ../rules/evdev.xml.in.h:9
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:10 ../rules/evdev.xml.in.h:10
-msgid "101/qwertz/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:11 ../rules/evdev.xml.in.h:11
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:12 ../rules/evdev.xml.in.h:12
-msgid "101/qwertz/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:13 ../rules/evdev.xml.in.h:13
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:14 ../rules/evdev.xml.in.h:14
-msgid "102/qwerty/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:15 ../rules/evdev.xml.in.h:15
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:16 ../rules/evdev.xml.in.h:16
-msgid "102/qwerty/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:17 ../rules/evdev.xml.in.h:17
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:18 ../rules/evdev.xml.in.h:18
-msgid "102/qwertz/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:19 ../rules/evdev.xml.in.h:19
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:20 ../rules/evdev.xml.in.h:20
-msgid "102/qwertz/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:21 ../rules/evdev.xml.in.h:21
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:22 ../rules/evdev.xml.in.h:22
-msgid "2"
-msgstr ""
-
-#: ../rules/base.xml.in.h:23 ../rules/evdev.xml.in.h:23
-msgid "4"
-msgstr ""
-
-#: ../rules/base.xml.in.h:24 ../rules/evdev.xml.in.h:24
-msgid "5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:25 ../rules/evdev.xml.in.h:25
-msgid "A4Tech KB-21"
-msgstr ""
-
-#: ../rules/base.xml.in.h:26 ../rules/evdev.xml.in.h:26
-msgid "A4Tech KBS-8"
-msgstr ""
-
-#: ../rules/base.xml.in.h:27 ../rules/evdev.xml.in.h:27
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr ""
-
-#: ../rules/base.xml.in.h:28 ../rules/evdev.xml.in.h:28
-msgid "ACPI Standard"
-msgstr "ACPI-standard"
-
-#: ../rules/base.xml.in.h:29 ../rules/evdev.xml.in.h:29
-msgid "ATM/phone-style"
-msgstr ""
-
-#: ../rules/base.xml.in.h:30 ../rules/evdev.xml.in.h:30
-msgid "Acer AirKey V"
-msgstr ""
-
-#: ../rules/base.xml.in.h:31 ../rules/evdev.xml.in.h:31
-msgid "Acer C300"
-msgstr ""
-
-#: ../rules/base.xml.in.h:32 ../rules/evdev.xml.in.h:32
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:33 ../rules/evdev.xml.in.h:33
-msgid "Acer Laptop"
-msgstr "Acer bærbar"
-
-#: ../rules/base.xml.in.h:34 ../rules/evdev.xml.in.h:34
-msgid "Add the standard behavior to Menu key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:35 ../rules/evdev.xml.in.h:35
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:36 ../rules/evdev.xml.in.h:36
-#, fuzzy
-msgid "Adding EuroSign to certain keys"
-msgstr "Legg til Euro-tegnet på 2-tasten."
-
-#: ../rules/base.xml.in.h:37 ../rules/evdev.xml.in.h:37
-msgid "Advance Scorpius KI"
-msgstr ""
-
-#: ../rules/base.xml.in.h:38 ../rules/evdev.xml.in.h:38
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:39 ../rules/evdev.xml.in.h:39
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#: ../rules/base.xml.in.h:40 ../rules/evdev.xml.in.h:40
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:41 ../rules/evdev.xml.in.h:41
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:42 ../rules/evdev.xml.in.h:42
-msgid "Albania"
-msgstr "Albania"
-
-#: ../rules/base.xml.in.h:43 ../rules/evdev.xml.in.h:43
-msgid "Alt and Meta are on Alt keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:44 ../rules/evdev.xml.in.h:44
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:45 ../rules/evdev.xml.in.h:45
-msgid "Alt+CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:46 ../rules/evdev.xml.in.h:46
-msgid "Alt+Ctrl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:47 ../rules/evdev.xml.in.h:47
-msgid "Alt+Shift"
-msgstr ""
-
-#: ../rules/base.xml.in.h:48 ../rules/evdev.xml.in.h:48
-msgid "Alt+Space"
-msgstr ""
-
-#: ../rules/base.xml.in.h:49 ../rules/evdev.xml.in.h:49
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:50 ../rules/evdev.xml.in.h:50
-msgid "Alt/Win key behavior"
-msgstr ""
-
-#: ../rules/base.xml.in.h:51 ../rules/evdev.xml.in.h:51
-msgid "Alternative"
-msgstr "Alternativ"
-
-#: ../rules/base.xml.in.h:52 ../rules/evdev.xml.in.h:52
-msgid "Alternative Eastern"
-msgstr "Alternativ østlig"
-
-#: ../rules/base.xml.in.h:53 ../rules/evdev.xml.in.h:53
-msgid "Alternative Phonetic"
-msgstr "Alternativ fonetisk"
-
-#: ../rules/base.xml.in.h:54 ../rules/evdev.xml.in.h:54
-msgid "Alternative international (former us_intl)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:55 ../rules/evdev.xml.in.h:55
-msgid "Alternative, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:56 ../rules/evdev.xml.in.h:56
-msgid "Alternative, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:57 ../rules/evdev.xml.in.h:57
-msgid "Alternative, latin-9 only"
-msgstr ""
-
-#: ../rules/base.xml.in.h:58 ../rules/evdev.xml.in.h:58
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:59 ../rules/evdev.xml.in.h:59
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:60 ../rules/evdev.xml.in.h:60
-msgid "Any Alt key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:61 ../rules/evdev.xml.in.h:61
-msgid "Any Win key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:62 ../rules/evdev.xml.in.h:62
-msgid "Any Win key (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:63 ../rules/evdev.xml.in.h:63
-msgid "Apostrophe (') variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:64 ../rules/evdev.xml.in.h:64
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:65 ../rules/evdev.xml.in.h:65
-msgid "Apple Laptop"
-msgstr "Apple bærbar"
-
-#: ../rules/base.xml.in.h:66 ../rules/evdev.xml.in.h:66
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:67 ../rules/evdev.xml.in.h:67
-msgid "Arabic"
-msgstr "Arabisk"
-
-#: ../rules/base.xml.in.h:68 ../rules/evdev.xml.in.h:68
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:69 ../rules/evdev.xml.in.h:69
-msgid "Armenia"
-msgstr "Armenia"
-
-#: ../rules/base.xml.in.h:70 ../rules/evdev.xml.in.h:70
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr ""
-
-#: ../rules/base.xml.in.h:71 ../rules/evdev.xml.in.h:71
-msgid "Asus Laptop"
-msgstr "Asus bærbar"
-
-#: ../rules/base.xml.in.h:72 ../rules/evdev.xml.in.h:72
-msgid "At bottom left"
-msgstr ""
-
-#: ../rules/base.xml.in.h:73 ../rules/evdev.xml.in.h:73
-msgid "At left of 'A'"
-msgstr ""
-
-#: ../rules/base.xml.in.h:74 ../rules/evdev.xml.in.h:74
-msgid "Aze"
-msgstr "Ase"
-
-#: ../rules/base.xml.in.h:75 ../rules/evdev.xml.in.h:75
-msgid "Azerbaijan"
-msgstr "Aserbaijdsjan"
-
-#: ../rules/base.xml.in.h:76 ../rules/evdev.xml.in.h:76
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:77 ../rules/evdev.xml.in.h:77
-msgid "BTC 5090"
-msgstr ""
-
-#: ../rules/base.xml.in.h:78 ../rules/evdev.xml.in.h:78
-msgid "BTC 5113RF Multimedia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:79 ../rules/evdev.xml.in.h:79
-msgid "BTC 5126T"
-msgstr ""
-
-#: ../rules/base.xml.in.h:80 ../rules/evdev.xml.in.h:80
-msgid "BTC 6301URF"
-msgstr ""
-
-#: ../rules/base.xml.in.h:81 ../rules/evdev.xml.in.h:81
-msgid "BTC 9000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:82 ../rules/evdev.xml.in.h:82
-msgid "BTC 9000A"
-msgstr ""
-
-#: ../rules/base.xml.in.h:83 ../rules/evdev.xml.in.h:83
-msgid "BTC 9001AH"
-msgstr ""
-
-#: ../rules/base.xml.in.h:84 ../rules/evdev.xml.in.h:84
-msgid "BTC 9019U"
-msgstr ""
-
-#: ../rules/base.xml.in.h:85 ../rules/evdev.xml.in.h:85
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr ""
-
-#: ../rules/base.xml.in.h:86 ../rules/evdev.xml.in.h:86
-msgid "Ban"
-msgstr ""
-
-#: ../rules/base.xml.in.h:87 ../rules/evdev.xml.in.h:87
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#: ../rules/base.xml.in.h:88 ../rules/evdev.xml.in.h:88
-msgid "Bel"
-msgstr ""
-
-#: ../rules/base.xml.in.h:89 ../rules/evdev.xml.in.h:89
-msgid "Belarus"
-msgstr "Hviterussland"
-
-#: ../rules/base.xml.in.h:90 ../rules/evdev.xml.in.h:90
-msgid "Belgium"
-msgstr "Belgia"
-
-#: ../rules/base.xml.in.h:91 ../rules/evdev.xml.in.h:91
-msgid "BenQ X-Touch"
-msgstr ""
-
-#: ../rules/base.xml.in.h:92 ../rules/evdev.xml.in.h:92
-msgid "BenQ X-Touch 730"
-msgstr ""
-
-#: ../rules/base.xml.in.h:93 ../rules/evdev.xml.in.h:93
-msgid "BenQ X-Touch 800"
-msgstr ""
-
-#: ../rules/base.xml.in.h:94 ../rules/evdev.xml.in.h:94
-msgid "Bengali"
-msgstr ""
-
-#: ../rules/base.xml.in.h:95 ../rules/evdev.xml.in.h:95
-msgid "Bengali Probhat"
-msgstr ""
-
-#: ../rules/base.xml.in.h:96 ../rules/evdev.xml.in.h:96
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr ""
-
-#: ../rules/base.xml.in.h:97 ../rules/evdev.xml.in.h:97
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr ""
-
-#: ../rules/base.xml.in.h:98 ../rules/evdev.xml.in.h:98
-msgid "Bgr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:99 ../rules/evdev.xml.in.h:99
-msgid "Bhu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:100 ../rules/evdev.xml.in.h:100
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#: ../rules/base.xml.in.h:101 ../rules/evdev.xml.in.h:101
-msgid "Biblical Hebrew (Tiro)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:102 ../rules/evdev.xml.in.h:102
-msgid "Bih"
-msgstr ""
-
-#: ../rules/base.xml.in.h:103 ../rules/evdev.xml.in.h:103
-msgid "Blr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:104 ../rules/evdev.xml.in.h:104
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia og Herzegovina"
-
-#: ../rules/base.xml.in.h:105 ../rules/evdev.xml.in.h:105
-msgid "Both Alt keys together"
-msgstr ""
-
-#: ../rules/base.xml.in.h:106 ../rules/evdev.xml.in.h:106
-msgid "Both Ctrl keys together"
-msgstr ""
-
-#: ../rules/base.xml.in.h:107 ../rules/evdev.xml.in.h:107
-msgid "Both Shift keys together"
-msgstr ""
-
-#: ../rules/base.xml.in.h:108 ../rules/evdev.xml.in.h:108
-msgid "Bra"
-msgstr ""
-
-#: ../rules/base.xml.in.h:109 ../rules/evdev.xml.in.h:109
-msgid "Braille"
-msgstr ""
-
-#: ../rules/base.xml.in.h:110 ../rules/evdev.xml.in.h:110
-msgid "Brazil"
-msgstr "Brasil"
-
-#: ../rules/base.xml.in.h:111 ../rules/evdev.xml.in.h:111
-msgid "Brazilian ABNT2"
-msgstr ""
-
-#: ../rules/base.xml.in.h:112 ../rules/evdev.xml.in.h:112
-msgid "Breton"
-msgstr ""
-
-#: ../rules/base.xml.in.h:113 ../rules/evdev.xml.in.h:113
-msgid "Brl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:114 ../rules/evdev.xml.in.h:114
-msgid "Brother Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:115 ../rules/evdev.xml.in.h:115
-msgid "Buckwalter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:116 ../rules/evdev.xml.in.h:116
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#: ../rules/base.xml.in.h:117 ../rules/evdev.xml.in.h:117
-msgid "CRULP"
-msgstr ""
-
-#: ../rules/base.xml.in.h:118 ../rules/evdev.xml.in.h:118
-msgid "Cambodia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:119 ../rules/evdev.xml.in.h:119
-msgid "Can"
-msgstr ""
-
-#: ../rules/base.xml.in.h:120 ../rules/evdev.xml.in.h:120
-msgid "Canada"
-msgstr ""
-
-#: ../rules/base.xml.in.h:121 ../rules/evdev.xml.in.h:121
-msgid "Caps Lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:122 ../rules/evdev.xml.in.h:122
-msgid "CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:123 ../rules/evdev.xml.in.h:123
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:124 ../rules/evdev.xml.in.h:124
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr ""
-
-#: ../rules/base.xml.in.h:125 ../rules/evdev.xml.in.h:125
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:126 ../rules/evdev.xml.in.h:126
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:127 ../rules/evdev.xml.in.h:127
-msgid "CapsLock key behavior"
-msgstr ""
-
-#: ../rules/base.xml.in.h:128 ../rules/evdev.xml.in.h:128
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr ""
-
-#: ../rules/base.xml.in.h:129 ../rules/evdev.xml.in.h:129
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:130 ../rules/evdev.xml.in.h:130
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:131 ../rules/evdev.xml.in.h:131
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:132 ../rules/evdev.xml.in.h:132
-msgid "Catalan variant with middle-dot L"
-msgstr ""
-
-#: ../rules/base.xml.in.h:133 ../rules/evdev.xml.in.h:133
-msgid "Cedilla"
-msgstr ""
-
-#: ../rules/base.xml.in.h:134 ../rules/evdev.xml.in.h:134
-msgid "Che"
-msgstr ""
-
-#: ../rules/base.xml.in.h:135 ../rules/evdev.xml.in.h:135
-msgid "Cherokee"
-msgstr ""
-
-#: ../rules/base.xml.in.h:136 ../rules/evdev.xml.in.h:136
-msgid "Cherry Blue Line CyBo@rd"
-msgstr ""
-
-#: ../rules/base.xml.in.h:137 ../rules/evdev.xml.in.h:137
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:138 ../rules/evdev.xml.in.h:138
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr ""
-
-#: ../rules/base.xml.in.h:139 ../rules/evdev.xml.in.h:139
-msgid "Cherry CyMotion Expert"
-msgstr ""
-
-#: ../rules/base.xml.in.h:140 ../rules/evdev.xml.in.h:140
-msgid "Cherry CyMotion Master Linux"
-msgstr ""
-
-#: ../rules/base.xml.in.h:141 ../rules/evdev.xml.in.h:141
-msgid "Cherry CyMotion Master XPress"
-msgstr ""
-
-#: ../rules/base.xml.in.h:142 ../rules/evdev.xml.in.h:142
-msgid "Chicony Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:143 ../rules/evdev.xml.in.h:143
-msgid "Chicony KB-9885"
-msgstr ""
-
-#: ../rules/base.xml.in.h:144 ../rules/evdev.xml.in.h:144
-msgid "Chicony KU-0108"
-msgstr ""
-
-#: ../rules/base.xml.in.h:145 ../rules/evdev.xml.in.h:145
-msgid "Chicony KU-0420"
-msgstr ""
-
-#: ../rules/base.xml.in.h:146 ../rules/evdev.xml.in.h:146
-msgid "China"
-msgstr "Kina"
-
-#: ../rules/base.xml.in.h:147 ../rules/evdev.xml.in.h:147
-msgid "Chuvash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:148 ../rules/evdev.xml.in.h:148
-msgid "Chuvash Latin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:149 ../rules/evdev.xml.in.h:149
-msgid "Classic"
-msgstr "Klassisk"
-
-#: ../rules/base.xml.in.h:150 ../rules/evdev.xml.in.h:150
-msgid "Classic Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:151 ../rules/evdev.xml.in.h:151
-msgid "Classmate PC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:152 ../rules/evdev.xml.in.h:152
-msgid "CloGaelach"
-msgstr ""
-
-#: ../rules/base.xml.in.h:153 ../rules/evdev.xml.in.h:153
-msgid "Colemak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:154 ../rules/evdev.xml.in.h:154
-msgid "Compaq Easy Access Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:155 ../rules/evdev.xml.in.h:155
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:156 ../rules/evdev.xml.in.h:156
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:157 ../rules/evdev.xml.in.h:157
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:158 ../rules/evdev.xml.in.h:158
-msgid "Compaq iPaq Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:159 ../rules/evdev.xml.in.h:159
-msgid "Compose key position"
-msgstr ""
-
-#: ../rules/base.xml.in.h:160 ../rules/evdev.xml.in.h:160
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#: ../rules/base.xml.in.h:161 ../rules/evdev.xml.in.h:161
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:162 ../rules/evdev.xml.in.h:162
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:163 ../rules/evdev.xml.in.h:163
-msgid "Croatia"
-msgstr "Kroatia"
-
-#: ../rules/base.xml.in.h:164 ../rules/evdev.xml.in.h:164
-msgid "Ctrl key position"
-msgstr ""
-
-#: ../rules/base.xml.in.h:165 ../rules/evdev.xml.in.h:165
-msgid "Ctrl+Shift"
-msgstr ""
-
-#: ../rules/base.xml.in.h:166 ../rules/evdev.xml.in.h:166
-msgid "Cyrillic"
-msgstr "Kyrillisk"
-
-#: ../rules/base.xml.in.h:167 ../rules/evdev.xml.in.h:167
-msgid "Cyrillic with guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:168 ../rules/evdev.xml.in.h:168
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr ""
-
-#: ../rules/base.xml.in.h:169 ../rules/evdev.xml.in.h:169
-msgid "Cze"
-msgstr ""
-
-#: ../rules/base.xml.in.h:170 ../rules/evdev.xml.in.h:170
-msgid "Czechia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:171 ../rules/evdev.xml.in.h:171
-msgid "DRC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:172 ../rules/evdev.xml.in.h:172
-msgid "DTK2000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:173 ../rules/evdev.xml.in.h:173
-msgid "Dan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:174 ../rules/evdev.xml.in.h:174
-msgid "Dead acute"
-msgstr ""
-
-#: ../rules/base.xml.in.h:175 ../rules/evdev.xml.in.h:175
-msgid "Dead grave acute"
-msgstr ""
-
-#: ../rules/base.xml.in.h:176 ../rules/evdev.xml.in.h:176
-msgid "Default numeric keypad keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:177 ../rules/evdev.xml.in.h:177
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:178 ../rules/evdev.xml.in.h:178
-msgid "Dell 101-key PC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:179 ../rules/evdev.xml.in.h:179
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:180 ../rules/evdev.xml.in.h:180
-msgid "Dell Laptop/notebook Precision M series"
-msgstr ""
-
-#: ../rules/base.xml.in.h:181 ../rules/evdev.xml.in.h:181
-msgid "Dell Latitude series laptop"
-msgstr ""
-
-#: ../rules/base.xml.in.h:182 ../rules/evdev.xml.in.h:182
-msgid "Dell Precision M65"
-msgstr ""
-
-#: ../rules/base.xml.in.h:183 ../rules/evdev.xml.in.h:183
-msgid "Dell SK-8125"
-msgstr ""
-
-#: ../rules/base.xml.in.h:184 ../rules/evdev.xml.in.h:184
-msgid "Dell SK-8135"
-msgstr ""
-
-#: ../rules/base.xml.in.h:185 ../rules/evdev.xml.in.h:185
-msgid "Dell USB Multimedia Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:186 ../rules/evdev.xml.in.h:186
-msgid "Denmark"
-msgstr "Danmark"
-
-#: ../rules/base.xml.in.h:187 ../rules/evdev.xml.in.h:187
-msgid "Deu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:188 ../rules/evdev.xml.in.h:188
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:189 ../rules/evdev.xml.in.h:189
-msgid "Diamond 9801 / 9802 series"
-msgstr ""
-
-#: ../rules/base.xml.in.h:190 ../rules/evdev.xml.in.h:190
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:191 ../rules/evdev.xml.in.h:191
-msgid "Dvorak (UK Punctuation)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:192 ../rules/evdev.xml.in.h:192
-msgid "Dvorak international"
-msgstr ""
-
-#: ../rules/base.xml.in.h:193 ../rules/evdev.xml.in.h:193
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr ""
-
-#: ../rules/base.xml.in.h:194 ../rules/evdev.xml.in.h:194
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:195 ../rules/evdev.xml.in.h:195
-msgid "E"
-msgstr ""
-
-#: ../rules/base.xml.in.h:196 ../rules/evdev.xml.in.h:196
-msgid "Eastern"
-msgstr "Østlig"
-
-#: ../rules/base.xml.in.h:197 ../rules/evdev.xml.in.h:197
-msgid "Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:198 ../rules/evdev.xml.in.h:198
-msgid "Enable extra typographic characters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:199 ../rules/evdev.xml.in.h:199
-msgid "Ennyah DKB-1008"
-msgstr ""
-
-#: ../rules/base.xml.in.h:200 ../rules/evdev.xml.in.h:200
-msgid "Epo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:201 ../rules/evdev.xml.in.h:201
-msgid "Ergonomic"
-msgstr "Ergonomisk"
-
-#: ../rules/base.xml.in.h:202 ../rules/evdev.xml.in.h:202
-msgid "Esp"
-msgstr ""
-
-#: ../rules/base.xml.in.h:203 ../rules/evdev.xml.in.h:203
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:204 ../rules/evdev.xml.in.h:204
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:205 ../rules/evdev.xml.in.h:205
-msgid "Estonia"
-msgstr "Estland"
-
-#: ../rules/base.xml.in.h:206 ../rules/evdev.xml.in.h:206
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:207 ../rules/evdev.xml.in.h:207
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#: ../rules/base.xml.in.h:208 ../rules/evdev.xml.in.h:208
-msgid "Evdev-managed keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:209 ../rules/evdev.xml.in.h:209
-msgid "Everex STEPnote"
-msgstr ""
-
-#: ../rules/base.xml.in.h:210 ../rules/evdev.xml.in.h:210
-msgid "Ewe"
-msgstr ""
-
-#: ../rules/base.xml.in.h:211 ../rules/evdev.xml.in.h:211
-msgid "Extended"
-msgstr "Utvidet"
-
-#: ../rules/base.xml.in.h:212 ../rules/evdev.xml.in.h:212
-msgid "Extended Backslash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:213 ../rules/evdev.xml.in.h:213
-msgid "F-letter (F) variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:214 ../rules/evdev.xml.in.h:214
-msgid "FL90"
-msgstr ""
-
-#: ../rules/base.xml.in.h:215 ../rules/evdev.xml.in.h:215
-msgid "Fao"
-msgstr ""
-
-#: ../rules/base.xml.in.h:216 ../rules/evdev.xml.in.h:216
-msgid "Faroe Islands"
-msgstr "Færøyene"
-
-#: ../rules/base.xml.in.h:217 ../rules/evdev.xml.in.h:217
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:218 ../rules/evdev.xml.in.h:218
-msgid "Finland"
-msgstr "Finland"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:221 ../rules/evdev.xml.in.h:221
-msgid "Four-level key with abstract separators"
-msgstr ""
-
-#: ../rules/base.xml.in.h:222 ../rules/evdev.xml.in.h:222
-msgid "Four-level key with comma"
-msgstr ""
-
-#: ../rules/base.xml.in.h:223 ../rules/evdev.xml.in.h:223
-msgid "Four-level key with dot"
-msgstr ""
-
-#: ../rules/base.xml.in.h:224 ../rules/evdev.xml.in.h:224
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr ""
-
-#: ../rules/base.xml.in.h:225 ../rules/evdev.xml.in.h:225
-msgid "Four-level key with momayyez"
-msgstr ""
-
-#: ../rules/base.xml.in.h:226 ../rules/evdev.xml.in.h:226
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:227 ../rules/evdev.xml.in.h:227
-msgid "France"
-msgstr "Frankrike"
-
-#: ../rules/base.xml.in.h:228 ../rules/evdev.xml.in.h:228
-msgid "French"
-msgstr "Fransk"
-
-#: ../rules/base.xml.in.h:229 ../rules/evdev.xml.in.h:229
-msgid "French (Macintosh)"
-msgstr "Fransk (Macintosh)"
-
-#: ../rules/base.xml.in.h:230 ../rules/evdev.xml.in.h:230
-msgid "French (legacy)"
-msgstr "Fransk (gammel)"
-
-#: ../rules/base.xml.in.h:231 ../rules/evdev.xml.in.h:231
-msgid "French Dvorak"
-msgstr "Fransk dvorak"
-
-#: ../rules/base.xml.in.h:232 ../rules/evdev.xml.in.h:232
-msgid "French, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:233 ../rules/evdev.xml.in.h:233
-msgid "French, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:234 ../rules/evdev.xml.in.h:234
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr ""
-
-#: ../rules/base.xml.in.h:235 ../rules/evdev.xml.in.h:235
-msgid "Fula"
-msgstr ""
-
-#: ../rules/base.xml.in.h:236 ../rules/evdev.xml.in.h:236
-msgid "GBr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:237 ../rules/evdev.xml.in.h:237
-msgid "Ga"
-msgstr ""
-
-#: ../rules/base.xml.in.h:238 ../rules/evdev.xml.in.h:238
-msgid "Generic 101-key PC"
-msgstr "Vanlig 101-tasters PC"
-
-#: ../rules/base.xml.in.h:239 ../rules/evdev.xml.in.h:239
-msgid "Generic 102-key (Intl) PC"
-msgstr "Vanlig 102-tasters (Intl) PC"
-
-#: ../rules/base.xml.in.h:240 ../rules/evdev.xml.in.h:240
-msgid "Generic 104-key PC"
-msgstr "Vanlig 104-tasters PC"
-
-#: ../rules/base.xml.in.h:241 ../rules/evdev.xml.in.h:241
-msgid "Generic 105-key (Intl) PC"
-msgstr "Vanlig 105-tasters (Intl) PC"
-
-#: ../rules/base.xml.in.h:242 ../rules/evdev.xml.in.h:242
-msgid "Genius Comfy KB-12e"
-msgstr ""
-
-#: ../rules/base.xml.in.h:243 ../rules/evdev.xml.in.h:243
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr ""
-
-#: ../rules/base.xml.in.h:244 ../rules/evdev.xml.in.h:244
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr ""
-
-#: ../rules/base.xml.in.h:245 ../rules/evdev.xml.in.h:245
-msgid "Genius KB-19e NB"
-msgstr ""
-
-#: ../rules/base.xml.in.h:246 ../rules/evdev.xml.in.h:246
-msgid "Geo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:247 ../rules/evdev.xml.in.h:247
-msgid "Georgia"
-msgstr "Georgia"
-
-#: ../rules/base.xml.in.h:248 ../rules/evdev.xml.in.h:248
-msgid "Georgian"
-msgstr "Georgisk"
-
-#: ../rules/base.xml.in.h:249 ../rules/evdev.xml.in.h:249
-msgid "Georgian AZERTY Tskapo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:250 ../rules/evdev.xml.in.h:250
-msgid "German (Macintosh)"
-msgstr "Tysk (Macintosh)"
-
-#: ../rules/base.xml.in.h:251 ../rules/evdev.xml.in.h:251
-msgid "German, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:252 ../rules/evdev.xml.in.h:252
-msgid "German, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:253 ../rules/evdev.xml.in.h:253
-msgid "Germany"
-msgstr "Tyskland"
-
-#: ../rules/base.xml.in.h:254 ../rules/evdev.xml.in.h:254
-msgid "Gha"
-msgstr ""
-
-#: ../rules/base.xml.in.h:255 ../rules/evdev.xml.in.h:255
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:256 ../rules/evdev.xml.in.h:256
-msgid "Gre"
-msgstr ""
-
-#: ../rules/base.xml.in.h:257 ../rules/evdev.xml.in.h:257
-msgid "Greece"
-msgstr "Hellas"
-
-#: ../rules/base.xml.in.h:258 ../rules/evdev.xml.in.h:258
-msgid "Group toggle on multiply/divide key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:259 ../rules/evdev.xml.in.h:259
-msgid "Gui"
-msgstr "Gui"
-
-#: ../rules/base.xml.in.h:260 ../rules/evdev.xml.in.h:260
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:261 ../rules/evdev.xml.in.h:261
-msgid "Gujarati"
-msgstr ""
-
-#: ../rules/base.xml.in.h:262 ../rules/evdev.xml.in.h:262
-msgid "Gurmukhi"
-msgstr ""
-
-#: ../rules/base.xml.in.h:263 ../rules/evdev.xml.in.h:263
-msgid "Gurmukhi Jhelum"
-msgstr ""
-
-#: ../rules/base.xml.in.h:264 ../rules/evdev.xml.in.h:264
-msgid "Gyration"
-msgstr ""
-
-#: ../rules/base.xml.in.h:265 ../rules/evdev.xml.in.h:265
-msgid "Happy Hacking Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:266 ../rules/evdev.xml.in.h:266
-msgid "Happy Hacking Keyboard for Mac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:267 ../rules/evdev.xml.in.h:267
-msgid "Hausa"
-msgstr ""
-
-#: ../rules/base.xml.in.h:268 ../rules/evdev.xml.in.h:268
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:269 ../rules/evdev.xml.in.h:269
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr ""
-
-#: ../rules/base.xml.in.h:270 ../rules/evdev.xml.in.h:270
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:271 ../rules/evdev.xml.in.h:271
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr ""
-
-#: ../rules/base.xml.in.h:272 ../rules/evdev.xml.in.h:272
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:273 ../rules/evdev.xml.in.h:273
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr ""
-
-#: ../rules/base.xml.in.h:274 ../rules/evdev.xml.in.h:274
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:275 ../rules/evdev.xml.in.h:275
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:276 ../rules/evdev.xml.in.h:276
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:277 ../rules/evdev.xml.in.h:277
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:278 ../rules/evdev.xml.in.h:278
-msgid "Hewlett-Packard nx9020"
-msgstr ""
-
-#: ../rules/base.xml.in.h:279 ../rules/evdev.xml.in.h:279
-msgid "Hexadecimal"
-msgstr ""
-
-#: ../rules/base.xml.in.h:280 ../rules/evdev.xml.in.h:280
-msgid "Hindi Bolnagri"
-msgstr ""
-
-#: ../rules/base.xml.in.h:281 ../rules/evdev.xml.in.h:281
-msgid "Homophonic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:282 ../rules/evdev.xml.in.h:282
-msgid "Honeywell Euroboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:283 ../rules/evdev.xml.in.h:283
-msgid "Hrv"
-msgstr ""
-
-#: ../rules/base.xml.in.h:284 ../rules/evdev.xml.in.h:284
-msgid "Hun"
-msgstr ""
-
-#: ../rules/base.xml.in.h:285 ../rules/evdev.xml.in.h:285
-msgid "Hungary"
-msgstr "Ungarn"
-
-#: ../rules/base.xml.in.h:286 ../rules/evdev.xml.in.h:286
-msgid "Hyper is mapped to Win-keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:287 ../rules/evdev.xml.in.h:287
-msgid "IBM (LST 1205-92)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:288 ../rules/evdev.xml.in.h:288
-msgid "IBM Rapid Access"
-msgstr ""
-
-#: ../rules/base.xml.in.h:289 ../rules/evdev.xml.in.h:289
-msgid "IBM Rapid Access II"
-msgstr ""
-
-#: ../rules/base.xml.in.h:290 ../rules/evdev.xml.in.h:290
-msgid "IBM Space Saver"
-msgstr ""
-
-#: ../rules/base.xml.in.h:291 ../rules/evdev.xml.in.h:291
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr ""
-
-#: ../rules/base.xml.in.h:292 ../rules/evdev.xml.in.h:292
-msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:293 ../rules/evdev.xml.in.h:293
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr ""
-
-#: ../rules/base.xml.in.h:294 ../rules/evdev.xml.in.h:294
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr ""
-
-#: ../rules/base.xml.in.h:295 ../rules/evdev.xml.in.h:295
-msgid "ISO Alternate"
-msgstr ""
-
-#: ../rules/base.xml.in.h:296 ../rules/evdev.xml.in.h:296
-msgid "Iceland"
-msgstr "Island"
-
-#: ../rules/base.xml.in.h:297 ../rules/evdev.xml.in.h:297
-msgid "Igbo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:298 ../rules/evdev.xml.in.h:298
-msgid "Include dead tilde"
-msgstr ""
-
-#: ../rules/base.xml.in.h:299 ../rules/evdev.xml.in.h:299
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:300 ../rules/evdev.xml.in.h:300
-msgid "India"
-msgstr "India"
-
-#: ../rules/base.xml.in.h:301 ../rules/evdev.xml.in.h:301
-msgid "International (AltGr dead keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:302 ../rules/evdev.xml.in.h:302
-msgid "International (with dead keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:303 ../rules/evdev.xml.in.h:303
-msgid "Inuktitut"
-msgstr ""
-
-#: ../rules/base.xml.in.h:304 ../rules/evdev.xml.in.h:304
-msgid "Iran"
-msgstr "Iran"
-
-#: ../rules/base.xml.in.h:305 ../rules/evdev.xml.in.h:305
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:306 ../rules/evdev.xml.in.h:306
-msgid "Ireland"
-msgstr "Irland"
-
-#: ../rules/base.xml.in.h:307 ../rules/evdev.xml.in.h:307
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:308 ../rules/evdev.xml.in.h:308
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:309 ../rules/evdev.xml.in.h:309
-msgid "Irq"
-msgstr "Irk"
-
-#: ../rules/base.xml.in.h:310 ../rules/evdev.xml.in.h:310
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:311 ../rules/evdev.xml.in.h:311
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:312 ../rules/evdev.xml.in.h:312
-msgid "Israel"
-msgstr "Irsrael"
-
-#: ../rules/base.xml.in.h:313 ../rules/evdev.xml.in.h:313
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:314 ../rules/evdev.xml.in.h:314
-msgid "Italy"
-msgstr "Italia"
-
-#: ../rules/base.xml.in.h:315 ../rules/evdev.xml.in.h:315
-msgid "Japan"
-msgstr "Japan"
-
-#: ../rules/base.xml.in.h:316 ../rules/evdev.xml.in.h:316
-msgid "Japan (PC-98xx Series)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:317 ../rules/evdev.xml.in.h:317
-msgid "Japanese 106-key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:318 ../rules/evdev.xml.in.h:318
-msgid "Japanese keyboard options"
-msgstr ""
-
-#: ../rules/base.xml.in.h:319 ../rules/evdev.xml.in.h:319
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:320 ../rules/evdev.xml.in.h:320
-msgid "Kalmyk"
-msgstr ""
-
-#: ../rules/base.xml.in.h:321 ../rules/evdev.xml.in.h:321
-msgid "Kana"
-msgstr ""
-
-#: ../rules/base.xml.in.h:322 ../rules/evdev.xml.in.h:322
-msgid "Kana Lock key is locking"
-msgstr ""
-
-#: ../rules/base.xml.in.h:323 ../rules/evdev.xml.in.h:323
-msgid "Kannada"
-msgstr ""
-
-#: ../rules/base.xml.in.h:324 ../rules/evdev.xml.in.h:324
-msgid "Kashubian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:325 ../rules/evdev.xml.in.h:325
-msgid "Kaz"
-msgstr ""
-
-#: ../rules/base.xml.in.h:326 ../rules/evdev.xml.in.h:326
-msgid "Kazakh with Russian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:327 ../rules/evdev.xml.in.h:327
-msgid "Kazakhstan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:328 ../rules/evdev.xml.in.h:328
-msgid "Key to choose 3rd level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:329 ../rules/evdev.xml.in.h:329
-msgid "Key(s) to change layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:330 ../rules/evdev.xml.in.h:330
-msgid "Keypad"
-msgstr "Nummertastatur"
-
-#: ../rules/base.xml.in.h:331 ../rules/evdev.xml.in.h:331
-msgid "Keytronic FlexPro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:332 ../rules/evdev.xml.in.h:332
-msgid "Khm"
-msgstr ""
-
-#: ../rules/base.xml.in.h:333 ../rules/evdev.xml.in.h:333
-msgid "Kir"
-msgstr "Kir"
-
-#: ../rules/base.xml.in.h:334 ../rules/evdev.xml.in.h:334
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:335 ../rules/evdev.xml.in.h:335
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:336 ../rules/evdev.xml.in.h:336
-msgid "Korea, Republic of"
-msgstr ""
-
-#: ../rules/base.xml.in.h:337 ../rules/evdev.xml.in.h:337
-msgid "Korean 106-key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:338 ../rules/evdev.xml.in.h:338
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:339 ../rules/evdev.xml.in.h:339
-msgid "Kurdish, (F)"
-msgstr "Kurdisk, (F)"
-
-#: ../rules/base.xml.in.h:340 ../rules/evdev.xml.in.h:340
-msgid "Kurdish, Arabic-Latin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:341 ../rules/evdev.xml.in.h:341
-msgid "Kurdish, Latin Alt-Q"
-msgstr ""
-
-#: ../rules/base.xml.in.h:342 ../rules/evdev.xml.in.h:342
-msgid "Kurdish, Latin Q"
-msgstr ""
-
-#: ../rules/base.xml.in.h:343 ../rules/evdev.xml.in.h:343
-msgid "Kyrgyzstan"
-msgstr "Kirgistan"
-
-#: ../rules/base.xml.in.h:344 ../rules/evdev.xml.in.h:344
-msgid "LAm"
-msgstr ""
-
-#: ../rules/base.xml.in.h:345 ../rules/evdev.xml.in.h:345
-msgid "LEKP"
-msgstr ""
-
-#: ../rules/base.xml.in.h:346 ../rules/evdev.xml.in.h:346
-msgid "LEKPa"
-msgstr ""
-
-#: ../rules/base.xml.in.h:347 ../rules/evdev.xml.in.h:347
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:348 ../rules/evdev.xml.in.h:348
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:349 ../rules/evdev.xml.in.h:349
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:350 ../rules/evdev.xml.in.h:350
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:351 ../rules/evdev.xml.in.h:351
-msgid "Laptop/notebook eMachines m68xx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:352 ../rules/evdev.xml.in.h:352
-msgid "Latin"
-msgstr "Latin"
-
-#: ../rules/base.xml.in.h:353 ../rules/evdev.xml.in.h:353
-msgid "Latin American"
-msgstr "Latinamerikansk"
-
-#: ../rules/base.xml.in.h:354 ../rules/evdev.xml.in.h:354
-msgid "Latin Unicode"
-msgstr ""
-
-#: ../rules/base.xml.in.h:355 ../rules/evdev.xml.in.h:355
-msgid "Latin Unicode qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:356 ../rules/evdev.xml.in.h:356
-msgid "Latin qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:357 ../rules/evdev.xml.in.h:357
-msgid "Latin unicode"
-msgstr ""
-
-#: ../rules/base.xml.in.h:358 ../rules/evdev.xml.in.h:358
-msgid "Latin unicode qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:359 ../rules/evdev.xml.in.h:359
-msgid "Latin with guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:360 ../rules/evdev.xml.in.h:360
-msgid "Latvia"
-msgstr "Latvia"
-
-#: ../rules/base.xml.in.h:361 ../rules/evdev.xml.in.h:361
-msgid "Lav"
-msgstr "Lav"
-
-#: ../rules/base.xml.in.h:362 ../rules/evdev.xml.in.h:362
-msgid "Left Alt"
-msgstr "Venstre Alt"
-
-#: ../rules/base.xml.in.h:363 ../rules/evdev.xml.in.h:363
-msgid "Left Alt (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:364 ../rules/evdev.xml.in.h:364
-msgid "Left Alt is swapped with Left Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:365 ../rules/evdev.xml.in.h:365
-msgid "Left Ctrl"
-msgstr "Venstre Ctrl"
-
-#: ../rules/base.xml.in.h:366 ../rules/evdev.xml.in.h:366
-msgid "Left Ctrl+Left Shift"
-msgstr ""
-
-#: ../rules/base.xml.in.h:367 ../rules/evdev.xml.in.h:367
-msgid "Left Shift"
-msgstr "Venstre Shift"
-
-#: ../rules/base.xml.in.h:368 ../rules/evdev.xml.in.h:368
-msgid "Left Win"
-msgstr "Venstre Win"
-
-#: ../rules/base.xml.in.h:369 ../rules/evdev.xml.in.h:369
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:370 ../rules/evdev.xml.in.h:370
-msgid "Left Win (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:371 ../rules/evdev.xml.in.h:371
-msgid "Left hand"
-msgstr "Venstre hånd"
-
-#: ../rules/base.xml.in.h:372 ../rules/evdev.xml.in.h:372
-msgid "Left handed Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:373 ../rules/evdev.xml.in.h:373
-msgid "Legacy"
-msgstr ""
-
-#: ../rules/base.xml.in.h:374 ../rules/evdev.xml.in.h:374
-msgid "Legacy Wang 724"
-msgstr ""
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:376 ../rules/evdev.xml.in.h:376
-msgid "Legacy key with comma"
-msgstr ""
-
-#: ../rules/base.xml.in.h:377 ../rules/evdev.xml.in.h:377
-msgid "Legacy key with dot"
-msgstr ""
-
-#: ../rules/base.xml.in.h:378 ../rules/evdev.xml.in.h:378
-msgid "Less-than/Greater-than"
-msgstr ""
-
-#: ../rules/base.xml.in.h:379 ../rules/evdev.xml.in.h:379
-msgid "Lithuania"
-msgstr "Litauen"
-
-#: ../rules/base.xml.in.h:380 ../rules/evdev.xml.in.h:380
-msgid "Logitech Access Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:381 ../rules/evdev.xml.in.h:381
-msgid "Logitech Cordless Desktop"
-msgstr ""
-
-#: ../rules/base.xml.in.h:382 ../rules/evdev.xml.in.h:382
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:383 ../rules/evdev.xml.in.h:383
-msgid "Logitech Cordless Desktop EX110"
-msgstr ""
-
-#: ../rules/base.xml.in.h:384 ../rules/evdev.xml.in.h:384
-msgid "Logitech Cordless Desktop LX-300"
-msgstr ""
-
-#: ../rules/base.xml.in.h:385 ../rules/evdev.xml.in.h:385
-msgid "Logitech Cordless Desktop Navigator"
-msgstr ""
-
-#: ../rules/base.xml.in.h:386 ../rules/evdev.xml.in.h:386
-msgid "Logitech Cordless Desktop Optical"
-msgstr ""
-
-#: ../rules/base.xml.in.h:387 ../rules/evdev.xml.in.h:387
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:388 ../rules/evdev.xml.in.h:388
-msgid "Logitech Cordless Desktop iTouch"
-msgstr ""
-
-#: ../rules/base.xml.in.h:389 ../rules/evdev.xml.in.h:389
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr ""
-
-#: ../rules/base.xml.in.h:390 ../rules/evdev.xml.in.h:390
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr ""
-
-#: ../rules/base.xml.in.h:391 ../rules/evdev.xml.in.h:391
-msgid "Logitech Generic Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:392 ../rules/evdev.xml.in.h:392
-msgid "Logitech Internet 350 Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:393 ../rules/evdev.xml.in.h:393
-msgid "Logitech Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:394 ../rules/evdev.xml.in.h:394
-msgid "Logitech Internet Navigator Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:395 ../rules/evdev.xml.in.h:395
-msgid "Logitech Media Elite Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:396 ../rules/evdev.xml.in.h:396
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:397 ../rules/evdev.xml.in.h:397
-msgid "Logitech Ultra-X Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:398 ../rules/evdev.xml.in.h:398
-msgid "Logitech diNovo Edge Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:399 ../rules/evdev.xml.in.h:399
-msgid "Logitech diNovo Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:400 ../rules/evdev.xml.in.h:400
-msgid "Logitech iTouch"
-msgstr ""
-
-#: ../rules/base.xml.in.h:401 ../rules/evdev.xml.in.h:401
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:402 ../rules/evdev.xml.in.h:402
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr ""
-
-#: ../rules/base.xml.in.h:403 ../rules/evdev.xml.in.h:403
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:404 ../rules/evdev.xml.in.h:404
-msgid "Lower Sorbian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:405 ../rules/evdev.xml.in.h:405
-msgid "Lower Sorbian (qwertz)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:406 ../rules/evdev.xml.in.h:406
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:407 ../rules/evdev.xml.in.h:407
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:408 ../rules/evdev.xml.in.h:408
-msgid "MNE"
-msgstr ""
-
-#: ../rules/base.xml.in.h:409 ../rules/evdev.xml.in.h:409
-msgid "MacBook/MacBook Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:410 ../rules/evdev.xml.in.h:410
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:411 ../rules/evdev.xml.in.h:411
-msgid "Macedonia"
-msgstr "Makedonia"
-
-#: ../rules/base.xml.in.h:412 ../rules/evdev.xml.in.h:412
-msgid "Macintosh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:413 ../rules/evdev.xml.in.h:413
-msgid "Macintosh Old"
-msgstr ""
-
-#: ../rules/base.xml.in.h:414 ../rules/evdev.xml.in.h:414
-msgid "Macintosh, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:415 ../rules/evdev.xml.in.h:415
-msgid "Macintosh, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:416 ../rules/evdev.xml.in.h:416
-msgid "Make CapsLock an additional Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:417 ../rules/evdev.xml.in.h:417
-msgid "Make CapsLock an additional Ctrl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:418 ../rules/evdev.xml.in.h:418
-msgid "Make CapsLock an additional ESC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:419 ../rules/evdev.xml.in.h:419
-msgid "Mal"
-msgstr ""
-
-#: ../rules/base.xml.in.h:420 ../rules/evdev.xml.in.h:420
-msgid "Malayalam"
-msgstr ""
-
-#: ../rules/base.xml.in.h:421 ../rules/evdev.xml.in.h:421
-msgid "Malayalam Lalitha"
-msgstr ""
-
-#: ../rules/base.xml.in.h:422 ../rules/evdev.xml.in.h:422
-msgid "Maldives"
-msgstr "Maldivene"
-
-#: ../rules/base.xml.in.h:423 ../rules/evdev.xml.in.h:423
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:424 ../rules/evdev.xml.in.h:424
-msgid "Maltese keyboard with US layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:425 ../rules/evdev.xml.in.h:425
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:426 ../rules/evdev.xml.in.h:426
-msgid "Maori"
-msgstr "Maori"
-
-#: ../rules/base.xml.in.h:427 ../rules/evdev.xml.in.h:427
-msgid "Memorex MX1998"
-msgstr ""
-
-#: ../rules/base.xml.in.h:428 ../rules/evdev.xml.in.h:428
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:429 ../rules/evdev.xml.in.h:429
-msgid "Memorex MX2750"
-msgstr ""
-
-#: ../rules/base.xml.in.h:430 ../rules/evdev.xml.in.h:430
-msgid "Menu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:431 ../rules/evdev.xml.in.h:431
-msgid "Meta is mapped to Left Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:432 ../rules/evdev.xml.in.h:432
-msgid "Meta is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:433 ../rules/evdev.xml.in.h:433
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:434 ../rules/evdev.xml.in.h:434
-msgid "Microsoft Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:435 ../rules/evdev.xml.in.h:435
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr ""
-
-#: ../rules/base.xml.in.h:436 ../rules/evdev.xml.in.h:436
-msgid "Microsoft Natural"
-msgstr ""
-
-#: ../rules/base.xml.in.h:437 ../rules/evdev.xml.in.h:437
-msgid "Microsoft Natural Keyboard Elite"
-msgstr ""
-
-#: ../rules/base.xml.in.h:438 ../rules/evdev.xml.in.h:438
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:439 ../rules/evdev.xml.in.h:439
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr ""
-
-#: ../rules/base.xml.in.h:440 ../rules/evdev.xml.in.h:440
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:441 ../rules/evdev.xml.in.h:441
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:442 ../rules/evdev.xml.in.h:442
-msgid "Microsoft Office Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:443 ../rules/evdev.xml.in.h:443
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr ""
-
-#: ../rules/base.xml.in.h:444 ../rules/evdev.xml.in.h:444
-msgid "Miscellaneous compatibility options"
-msgstr ""
-
-#: ../rules/base.xml.in.h:445 ../rules/evdev.xml.in.h:445
-msgid "Mkd"
-msgstr ""
-
-#: ../rules/base.xml.in.h:446 ../rules/evdev.xml.in.h:446
-msgid "Mlt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:447 ../rules/evdev.xml.in.h:447
-msgid "Mmr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:448 ../rules/evdev.xml.in.h:448
-msgid "Mng"
-msgstr ""
-
-#: ../rules/base.xml.in.h:449 ../rules/evdev.xml.in.h:449
-msgid "Mongolia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:450 ../rules/evdev.xml.in.h:450
-msgid "Montenegro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:451 ../rules/evdev.xml.in.h:451
-msgid "Morocco"
-msgstr ""
-
-#: ../rules/base.xml.in.h:452 ../rules/evdev.xml.in.h:452
-msgid "Multilingual"
-msgstr ""
-
-#: ../rules/base.xml.in.h:453 ../rules/evdev.xml.in.h:453
-msgid "Multilingual, first part"
-msgstr ""
-
-#: ../rules/base.xml.in.h:454 ../rules/evdev.xml.in.h:454
-msgid "Multilingual, second part"
-msgstr ""
-
-#: ../rules/base.xml.in.h:455 ../rules/evdev.xml.in.h:455
-msgid "Myanmar"
-msgstr ""
-
-#: ../rules/base.xml.in.h:456 ../rules/evdev.xml.in.h:456
-msgid "NICOLA-F style Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:457 ../rules/evdev.xml.in.h:457
-msgid "NLA"
-msgstr ""
-
-#: ../rules/base.xml.in.h:458 ../rules/evdev.xml.in.h:458
-msgid "Nativo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:459 ../rules/evdev.xml.in.h:459
-#, fuzzy
-msgid "Nativo for Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:460 ../rules/evdev.xml.in.h:460
-msgid "Nativo for USA keyboards"
-msgstr ""
-
-#: ../rules/base.xml.in.h:461 ../rules/evdev.xml.in.h:461
-msgid "Neo 2"
-msgstr ""
-
-#: ../rules/base.xml.in.h:462 ../rules/evdev.xml.in.h:462
-msgid "Nep"
-msgstr "Nep"
-
-#: ../rules/base.xml.in.h:463 ../rules/evdev.xml.in.h:463
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:464 ../rules/evdev.xml.in.h:464
-msgid "Netherlands"
-msgstr "Nederland"
-
-#: ../rules/base.xml.in.h:465 ../rules/evdev.xml.in.h:465
-msgid "Nig"
-msgstr "Nig"
-
-#: ../rules/base.xml.in.h:466 ../rules/evdev.xml.in.h:466
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#: ../rules/base.xml.in.h:467 ../rules/evdev.xml.in.h:467
-msgid "Nld"
-msgstr ""
-
-#: ../rules/base.xml.in.h:468 ../rules/evdev.xml.in.h:468
-msgid "Non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:469 ../rules/evdev.xml.in.h:469
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:470 ../rules/evdev.xml.in.h:470
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:471 ../rules/evdev.xml.in.h:471
-msgid "Non-breakable space character at second level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:472 ../rules/evdev.xml.in.h:472
-msgid "Non-breakable space character at third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:473 ../rules/evdev.xml.in.h:473
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:474 ../rules/evdev.xml.in.h:474
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:475 ../rules/evdev.xml.in.h:475
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:476 ../rules/evdev.xml.in.h:476
-msgid "Northern Saami"
-msgstr "Nord-samisk"
-
-#: ../rules/base.xml.in.h:477 ../rules/evdev.xml.in.h:477
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Nord-samisk, uten døde taster"
-
-#: ../rules/base.xml.in.h:478 ../rules/evdev.xml.in.h:478
-msgid "Northgate OmniKey 101"
-msgstr ""
-
-#: ../rules/base.xml.in.h:479 ../rules/evdev.xml.in.h:479
-msgid "Norway"
-msgstr "Norge"
-
-#: ../rules/base.xml.in.h:480 ../rules/evdev.xml.in.h:480
-msgid "NumLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:481 ../rules/evdev.xml.in.h:481
-msgid "Numeric keypad delete key behaviour"
-msgstr ""
-
-#: ../rules/base.xml.in.h:482 ../rules/evdev.xml.in.h:482
-msgid "Numeric keypad keys work as with Mac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:483 ../rules/evdev.xml.in.h:483
-msgid "Numeric keypad layout selection"
-msgstr ""
-
-#: ../rules/base.xml.in.h:484 ../rules/evdev.xml.in.h:484
-msgid "OADG 109A"
-msgstr ""
-
-#: ../rules/base.xml.in.h:485 ../rules/evdev.xml.in.h:485
-msgid "OLPC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:486 ../rules/evdev.xml.in.h:486
-msgid "OLPC Dari"
-msgstr ""
-
-#: ../rules/base.xml.in.h:487 ../rules/evdev.xml.in.h:487
-msgid "OLPC Pashto"
-msgstr ""
-
-#: ../rules/base.xml.in.h:488 ../rules/evdev.xml.in.h:488
-msgid "OLPC Southern Uzbek"
-msgstr ""
-
-#: ../rules/base.xml.in.h:489 ../rules/evdev.xml.in.h:489
-msgid "Ogham"
-msgstr ""
-
-#: ../rules/base.xml.in.h:490 ../rules/evdev.xml.in.h:490
-msgid "Ogham IS434"
-msgstr ""
-
-#: ../rules/base.xml.in.h:491 ../rules/evdev.xml.in.h:491
-msgid "Oriya"
-msgstr ""
-
-#: ../rules/base.xml.in.h:492 ../rules/evdev.xml.in.h:492
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:493 ../rules/evdev.xml.in.h:493
-msgid "Ossetian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:494 ../rules/evdev.xml.in.h:494
-msgid "Ossetian, Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:495 ../rules/evdev.xml.in.h:495
-msgid "Ossetian, legacy"
-msgstr ""
-
-#: ../rules/base.xml.in.h:496 ../rules/evdev.xml.in.h:496
-msgid "PC-98xx Series"
-msgstr ""
-
-#: ../rules/base.xml.in.h:497 ../rules/evdev.xml.in.h:497
-msgid "Pak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:498 ../rules/evdev.xml.in.h:498
-msgid "Pakistan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:499 ../rules/evdev.xml.in.h:499
-msgid "Pashto"
-msgstr ""
-
-#: ../rules/base.xml.in.h:500 ../rules/evdev.xml.in.h:500
-msgid "Pattachote"
-msgstr ""
-
-#: ../rules/base.xml.in.h:501 ../rules/evdev.xml.in.h:501
-msgid "Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:502 ../rules/evdev.xml.in.h:502
-msgid "Pol"
-msgstr ""
-
-#: ../rules/base.xml.in.h:503 ../rules/evdev.xml.in.h:503
-msgid "Poland"
-msgstr ""
-
-#: ../rules/base.xml.in.h:504 ../rules/evdev.xml.in.h:504
-msgid "Polytonic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:505 ../rules/evdev.xml.in.h:505
-msgid "Portugal"
-msgstr "Portugal"
-
-#: ../rules/base.xml.in.h:506 ../rules/evdev.xml.in.h:506
-msgid "Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:507 ../rules/evdev.xml.in.h:507
-msgid "Pro Keypad"
-msgstr ""
-
-#: ../rules/base.xml.in.h:508 ../rules/evdev.xml.in.h:508
-msgid "Probhat"
-msgstr ""
-
-#: ../rules/base.xml.in.h:509 ../rules/evdev.xml.in.h:509
-#, fuzzy
-msgid "Programmer Dvorak"
-msgstr "Fransk dvorak"
-
-#: ../rules/base.xml.in.h:510 ../rules/evdev.xml.in.h:510
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:511 ../rules/evdev.xml.in.h:511
-msgid "Prt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:512 ../rules/evdev.xml.in.h:512
-msgid "QTronix Scorpius 98N+"
-msgstr ""
-
-#: ../rules/base.xml.in.h:513 ../rules/evdev.xml.in.h:513
-msgid "Right Alt"
-msgstr "Høyre Alt"
-
-#: ../rules/base.xml.in.h:514 ../rules/evdev.xml.in.h:514
-msgid "Right Alt (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:515 ../rules/evdev.xml.in.h:515
-msgid "Right Alt key never chooses 3rd level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:516 ../rules/evdev.xml.in.h:516
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:517 ../rules/evdev.xml.in.h:517
-msgid "Right Ctrl"
-msgstr "Høyre Ctrl"
-
-#: ../rules/base.xml.in.h:518 ../rules/evdev.xml.in.h:518
-msgid "Right Ctrl (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:519 ../rules/evdev.xml.in.h:519
-msgid "Right Ctrl as Right Alt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:520 ../rules/evdev.xml.in.h:520
-msgid "Right Shift"
-msgstr "Høyre Shift"
-
-#: ../rules/base.xml.in.h:521 ../rules/evdev.xml.in.h:521
-msgid "Right Win"
-msgstr "Høyre Win"
-
-#: ../rules/base.xml.in.h:522 ../rules/evdev.xml.in.h:522
-msgid "Right Win (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:523 ../rules/evdev.xml.in.h:523
-msgid "Right hand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:524 ../rules/evdev.xml.in.h:524
-msgid "Right handed Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:525 ../rules/evdev.xml.in.h:525
-msgid "Romania"
-msgstr "Romania"
-
-#: ../rules/base.xml.in.h:526 ../rules/evdev.xml.in.h:526
-msgid "Romanian keyboard with German letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:527 ../rules/evdev.xml.in.h:527
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:528 ../rules/evdev.xml.in.h:528
-msgid "Rou"
-msgstr ""
-
-#: ../rules/base.xml.in.h:529 ../rules/evdev.xml.in.h:529
-msgid "Rus"
-msgstr ""
-
-#: ../rules/base.xml.in.h:530 ../rules/evdev.xml.in.h:530
-msgid "Russia"
-msgstr "Russland"
-
-#: ../rules/base.xml.in.h:531 ../rules/evdev.xml.in.h:531
-msgid "Russian"
-msgstr "Russisk"
-
-#: ../rules/base.xml.in.h:532 ../rules/evdev.xml.in.h:532
-msgid "Russian phonetic"
-msgstr "Russisk fonetisk"
-
-#: ../rules/base.xml.in.h:533 ../rules/evdev.xml.in.h:533
-msgid "Russian phonetic Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:534 ../rules/evdev.xml.in.h:534
-msgid "Russian phonetic, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:535 ../rules/evdev.xml.in.h:535
-msgid "Russian with Kazakh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:536 ../rules/evdev.xml.in.h:536
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:537 ../rules/evdev.xml.in.h:537
-msgid "SK-1300"
-msgstr ""
-
-#: ../rules/base.xml.in.h:538 ../rules/evdev.xml.in.h:538
-msgid "SK-2500"
-msgstr ""
-
-#: ../rules/base.xml.in.h:539 ../rules/evdev.xml.in.h:539
-msgid "SK-6200"
-msgstr ""
-
-#: ../rules/base.xml.in.h:540 ../rules/evdev.xml.in.h:540
-msgid "SK-7100"
-msgstr ""
-
-#: ../rules/base.xml.in.h:541 ../rules/evdev.xml.in.h:541
-msgid "SRB"
-msgstr ""
-
-#: ../rules/base.xml.in.h:542 ../rules/evdev.xml.in.h:542
-msgid "SVEN Ergonomic 2500"
-msgstr ""
-
-#: ../rules/base.xml.in.h:543 ../rules/evdev.xml.in.h:543
-msgid "SVEN Slim 303"
-msgstr ""
-
-#: ../rules/base.xml.in.h:544 ../rules/evdev.xml.in.h:544
-msgid "Samsung SDM 4500P"
-msgstr ""
-
-#: ../rules/base.xml.in.h:545 ../rules/evdev.xml.in.h:545
-msgid "Samsung SDM 4510P"
-msgstr ""
-
-#: ../rules/base.xml.in.h:546 ../rules/evdev.xml.in.h:546
-msgid "ScrollLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:547 ../rules/evdev.xml.in.h:547
-msgid "Secwepemctsin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:548 ../rules/evdev.xml.in.h:548
-msgid "Semi-colon on third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:549 ../rules/evdev.xml.in.h:549
-msgid "Serbia"
-msgstr "Serbia"
-
-#: ../rules/base.xml.in.h:550 ../rules/evdev.xml.in.h:550
-msgid "Shift cancels CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:551 ../rules/evdev.xml.in.h:551
-msgid "Shift does not cancel NumLock, chooses 3d level instead"
-msgstr ""
-
-#: ../rules/base.xml.in.h:552 ../rules/evdev.xml.in.h:552
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr ""
-
-#: ../rules/base.xml.in.h:553 ../rules/evdev.xml.in.h:553
-msgid "Shift+CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:554 ../rules/evdev.xml.in.h:554
-msgid "Simple"
-msgstr ""
-
-#: ../rules/base.xml.in.h:555 ../rules/evdev.xml.in.h:555
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#: ../rules/base.xml.in.h:556 ../rules/evdev.xml.in.h:556
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#: ../rules/base.xml.in.h:557 ../rules/evdev.xml.in.h:557
-msgid "South Africa"
-msgstr "Sør-Afrika"
-
-#: ../rules/base.xml.in.h:558 ../rules/evdev.xml.in.h:558
-msgid "Southern Uzbek"
-msgstr ""
-
-#: ../rules/base.xml.in.h:559 ../rules/evdev.xml.in.h:559
-msgid "Spain"
-msgstr "Spania"
-
-#: ../rules/base.xml.in.h:560 ../rules/evdev.xml.in.h:560
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr ""
-
-#: ../rules/base.xml.in.h:561 ../rules/evdev.xml.in.h:561
-msgid "SrL"
-msgstr ""
-
-#: ../rules/base.xml.in.h:562 ../rules/evdev.xml.in.h:562
-msgid "Sri Lanka"
-msgstr ""
-
-#: ../rules/base.xml.in.h:563 ../rules/evdev.xml.in.h:563
-msgid "Standard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:564 ../rules/evdev.xml.in.h:564
-msgid "Standard (Cedilla)"
-msgstr ""
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:566 ../rules/evdev.xml.in.h:566
-msgid "Standard RSTU"
-msgstr ""
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:568 ../rules/evdev.xml.in.h:568
-msgid "Standard RSTU on Russian layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:569 ../rules/evdev.xml.in.h:569
-msgid "Sun Type 5/6"
-msgstr ""
-
-#: ../rules/base.xml.in.h:570 ../rules/evdev.xml.in.h:570
-msgid "Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:571 ../rules/evdev.xml.in.h:571
-msgid "Super Power Multimedia Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:572 ../rules/evdev.xml.in.h:572
-msgid "Super is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:573 ../rules/evdev.xml.in.h:573
-msgid "Svdvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:574 ../rules/evdev.xml.in.h:574
-msgid "Svk"
-msgstr ""
-
-#: ../rules/base.xml.in.h:575 ../rules/evdev.xml.in.h:575
-msgid "Svn"
-msgstr ""
-
-#: ../rules/base.xml.in.h:576 ../rules/evdev.xml.in.h:576
-msgid "Swap Ctrl and CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:577 ../rules/evdev.xml.in.h:577
-msgid "Swap ESC and CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:578 ../rules/evdev.xml.in.h:578
-msgid "Swe"
-msgstr ""
-
-#: ../rules/base.xml.in.h:579 ../rules/evdev.xml.in.h:579
-msgid "Sweden"
-msgstr ""
-
-#: ../rules/base.xml.in.h:580 ../rules/evdev.xml.in.h:580
-msgid "Switzerland"
-msgstr ""
-
-#: ../rules/base.xml.in.h:581 ../rules/evdev.xml.in.h:581
-msgid "Symplon PaceBook (tablet PC)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:582 ../rules/evdev.xml.in.h:582
-msgid "Syr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:583 ../rules/evdev.xml.in.h:583
-msgid "Syria"
-msgstr ""
-
-#: ../rules/base.xml.in.h:584 ../rules/evdev.xml.in.h:584
-msgid "Syriac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:585 ../rules/evdev.xml.in.h:585
-msgid "Syriac phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:586 ../rules/evdev.xml.in.h:586
-msgid "TIS-820.2538"
-msgstr ""
-
-#: ../rules/base.xml.in.h:587 ../rules/evdev.xml.in.h:587
-msgid "Tajikistan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:588 ../rules/evdev.xml.in.h:588
-msgid "Tamil"
-msgstr ""
-
-#: ../rules/base.xml.in.h:589 ../rules/evdev.xml.in.h:589
-msgid "Tamil TAB Typewriter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:590 ../rules/evdev.xml.in.h:590
-msgid "Tamil TSCII Typewriter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:591 ../rules/evdev.xml.in.h:591
-msgid "Tamil Unicode"
-msgstr ""
-
-#: ../rules/base.xml.in.h:592 ../rules/evdev.xml.in.h:592
-msgid "Targa Visionary 811"
-msgstr ""
-
-#: ../rules/base.xml.in.h:593 ../rules/evdev.xml.in.h:593
-msgid "Tatar"
-msgstr ""
-
-#: ../rules/base.xml.in.h:594 ../rules/evdev.xml.in.h:594
-msgid "Telugu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:595 ../rules/evdev.xml.in.h:595
-msgid "Tha"
-msgstr ""
-
-#: ../rules/base.xml.in.h:596 ../rules/evdev.xml.in.h:596
-msgid "Thailand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:597 ../rules/evdev.xml.in.h:597
-msgid "Tibetan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:598 ../rules/evdev.xml.in.h:598
-msgid "Tibetan (with ASCII numerals)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:599 ../rules/evdev.xml.in.h:599
-msgid "Tifinagh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:600 ../rules/evdev.xml.in.h:600
-msgid "Tifinagh Alternative"
-msgstr ""
-
-#: ../rules/base.xml.in.h:601 ../rules/evdev.xml.in.h:601
-msgid "Tifinagh Alternative Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:602 ../rules/evdev.xml.in.h:602
-msgid "Tifinagh Extended"
-msgstr ""
-
-#: ../rules/base.xml.in.h:603 ../rules/evdev.xml.in.h:603
-msgid "Tifinagh Extended Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:604 ../rules/evdev.xml.in.h:604
-msgid "Tifinagh Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:605 ../rules/evdev.xml.in.h:605
-msgid "Tilde (~) variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:606 ../rules/evdev.xml.in.h:606
-msgid "Tjk"
-msgstr ""
-
-#: ../rules/base.xml.in.h:607 ../rules/evdev.xml.in.h:607
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:608 ../rules/evdev.xml.in.h:608
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:609 ../rules/evdev.xml.in.h:609
-msgid "Toshiba Satellite S3000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:610 ../rules/evdev.xml.in.h:610
-msgid "Trust Direct Access Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:611 ../rules/evdev.xml.in.h:611
-msgid "Trust Wireless Keyboard Classic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:612 ../rules/evdev.xml.in.h:612
-msgid "Tur"
-msgstr ""
-
-#: ../rules/base.xml.in.h:613 ../rules/evdev.xml.in.h:613
-msgid "Turkey"
-msgstr ""
-
-#: ../rules/base.xml.in.h:614 ../rules/evdev.xml.in.h:614
-msgid "Typewriter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:615 ../rules/evdev.xml.in.h:615
-msgid "UCW layout (accented letters only)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:616 ../rules/evdev.xml.in.h:616
-msgid "US keyboard with Bosnian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:617 ../rules/evdev.xml.in.h:617
-msgid "US keyboard with Bosnian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:618 ../rules/evdev.xml.in.h:618
-msgid "US keyboard with Croatian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:619 ../rules/evdev.xml.in.h:619
-msgid "US keyboard with Croatian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:620 ../rules/evdev.xml.in.h:620
-msgid "US keyboard with Estonian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:621 ../rules/evdev.xml.in.h:621
-msgid "US keyboard with Lithuanian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:622 ../rules/evdev.xml.in.h:622
-msgid "US keyboard with Slovenian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:623 ../rules/evdev.xml.in.h:623
-msgid "US keyboard with Slovenian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:624 ../rules/evdev.xml.in.h:624
-msgid "USA"
-msgstr ""
-
-#: ../rules/base.xml.in.h:625 ../rules/evdev.xml.in.h:625
-msgid "Udmurt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:626 ../rules/evdev.xml.in.h:626
-msgid "Ukr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:627 ../rules/evdev.xml.in.h:627
-msgid "Ukraine"
-msgstr ""
-
-#: ../rules/base.xml.in.h:628 ../rules/evdev.xml.in.h:628
-msgid "Unicode"
-msgstr ""
-
-#: ../rules/base.xml.in.h:629 ../rules/evdev.xml.in.h:629
-msgid "Unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:630 ../rules/evdev.xml.in.h:630
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:631 ../rules/evdev.xml.in.h:631
-msgid "UnicodeExpert"
-msgstr ""
-
-#: ../rules/base.xml.in.h:632 ../rules/evdev.xml.in.h:632
-msgid "United Kingdom"
-msgstr ""
-
-#: ../rules/base.xml.in.h:633 ../rules/evdev.xml.in.h:633
-msgid "Unitek KB-1925"
-msgstr ""
-
-#: ../rules/base.xml.in.h:634 ../rules/evdev.xml.in.h:634
-#, fuzzy
-msgid "Urdu, Alternative phonetic"
-msgstr "Alternativ fonetisk"
-
-#: ../rules/base.xml.in.h:635 ../rules/evdev.xml.in.h:635
-msgid "Urdu, Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:636 ../rules/evdev.xml.in.h:636
-msgid "Urdu, Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:637 ../rules/evdev.xml.in.h:637
-msgid "Use Bosnian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:638 ../rules/evdev.xml.in.h:638
-msgid "Use Croatian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:639 ../rules/evdev.xml.in.h:639
-msgid "Use Slovenian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:640 ../rules/evdev.xml.in.h:640
-msgid "Use guillemets for quotes"
-msgstr ""
-
-#: ../rules/base.xml.in.h:641 ../rules/evdev.xml.in.h:641
-msgid "Use keyboard LED to show alternative layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:642 ../rules/evdev.xml.in.h:642
-msgid "Using space key to input non-breakable space character"
-msgstr ""
-
-#: ../rules/base.xml.in.h:643 ../rules/evdev.xml.in.h:643
-msgid "Usual space at any level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:644 ../rules/evdev.xml.in.h:644
-msgid "Uzb"
-msgstr ""
-
-#: ../rules/base.xml.in.h:645 ../rules/evdev.xml.in.h:645
-msgid "Uzbekistan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:646 ../rules/evdev.xml.in.h:646
-msgid "Vietnam"
-msgstr ""
-
-#: ../rules/base.xml.in.h:647 ../rules/evdev.xml.in.h:647
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:648 ../rules/evdev.xml.in.h:648
-msgid "Vnm"
-msgstr ""
-
-#: ../rules/base.xml.in.h:649 ../rules/evdev.xml.in.h:649
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:650 ../rules/evdev.xml.in.h:650
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:651 ../rules/evdev.xml.in.h:651
-msgid "Wang model 724 azerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:652 ../rules/evdev.xml.in.h:652
-msgid "Western"
-msgstr ""
-
-#: ../rules/base.xml.in.h:653 ../rules/evdev.xml.in.h:653
-msgid "Winbook Model XP5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:654 ../rules/evdev.xml.in.h:654
-msgid "Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:655 ../rules/evdev.xml.in.h:655
-msgid "With &lt;\\|&gt; key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:656 ../rules/evdev.xml.in.h:656
-msgid "With EuroSign on 5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:657 ../rules/evdev.xml.in.h:657
-msgid "With guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:658 ../rules/evdev.xml.in.h:658
-msgid "Yahoo! Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:659 ../rules/evdev.xml.in.h:659
-msgid "Yakut"
-msgstr ""
-
-#: ../rules/base.xml.in.h:660 ../rules/evdev.xml.in.h:660
-msgid "Yoruba"
-msgstr ""
-
-#: ../rules/base.xml.in.h:661 ../rules/evdev.xml.in.h:661
-msgid "Z and ZHE swapped"
-msgstr ""
-
-#: ../rules/base.xml.in.h:662 ../rules/evdev.xml.in.h:662
-msgid "Zar"
-msgstr ""
-
-#: ../rules/base.xml.in.h:663 ../rules/evdev.xml.in.h:663
-msgid "azerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:664 ../rules/evdev.xml.in.h:664
-msgid "azerty/digits"
-msgstr ""
-
-#: ../rules/base.xml.in.h:665 ../rules/evdev.xml.in.h:665
-msgid "digits"
-msgstr ""
-
-#: ../rules/base.xml.in.h:666 ../rules/evdev.xml.in.h:666
-msgid "displaced semicolon and quote (obsolete)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:667 ../rules/evdev.xml.in.h:667
-msgid "lyx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:668 ../rules/evdev.xml.in.h:668
-msgid "qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:669 ../rules/evdev.xml.in.h:669
-msgid "qwerty, extended Backslash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:670 ../rules/evdev.xml.in.h:670
-msgid "qwerty/digits"
-msgstr ""
-
-#: ../rules/base.xml.in.h:671 ../rules/evdev.xml.in.h:671
-msgid "qwertz"
-msgstr ""
+# Norwegian bokmaal translation of xkeyboard-config.
+# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the xkeyboard-config package.
+# Kjartan Maraas <kmaraas@gnome.org>, 2007-2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 1.5\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2009-01-13 23:12+0000\n"
+"PO-Revision-Date: 2009-04-12 11:33+0200\n"
+"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
+"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../rules/base.xml.in.h:1 ../rules/evdev.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2 ../rules/evdev.xml.in.h:2
+msgid "(Legacy) Alternative"
+msgstr ""
+
+#: ../rules/base.xml.in.h:3 ../rules/evdev.xml.in.h:3
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:4 ../rules/evdev.xml.in.h:4
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:5 ../rules/evdev.xml.in.h:5
+msgid "101/104 key Compatible"
+msgstr "101/104-taster kompatibelt"
+
+#: ../rules/base.xml.in.h:6 ../rules/evdev.xml.in.h:6
+msgid "101/qwerty/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:7 ../rules/evdev.xml.in.h:7
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:8 ../rules/evdev.xml.in.h:8
+msgid "101/qwerty/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:9 ../rules/evdev.xml.in.h:9
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:10 ../rules/evdev.xml.in.h:10
+msgid "101/qwertz/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:11 ../rules/evdev.xml.in.h:11
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:12 ../rules/evdev.xml.in.h:12
+msgid "101/qwertz/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:13 ../rules/evdev.xml.in.h:13
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:14 ../rules/evdev.xml.in.h:14
+msgid "102/qwerty/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:15 ../rules/evdev.xml.in.h:15
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:16 ../rules/evdev.xml.in.h:16
+msgid "102/qwerty/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:17 ../rules/evdev.xml.in.h:17
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:18 ../rules/evdev.xml.in.h:18
+msgid "102/qwertz/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:19 ../rules/evdev.xml.in.h:19
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:20 ../rules/evdev.xml.in.h:20
+msgid "102/qwertz/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:21 ../rules/evdev.xml.in.h:21
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:22 ../rules/evdev.xml.in.h:22
+msgid "2"
+msgstr ""
+
+#: ../rules/base.xml.in.h:23 ../rules/evdev.xml.in.h:23
+msgid "4"
+msgstr ""
+
+#: ../rules/base.xml.in.h:24 ../rules/evdev.xml.in.h:24
+msgid "5"
+msgstr ""
+
+#: ../rules/base.xml.in.h:25 ../rules/evdev.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr ""
+
+#: ../rules/base.xml.in.h:26 ../rules/evdev.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr ""
+
+#: ../rules/base.xml.in.h:27 ../rules/evdev.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr ""
+
+#: ../rules/base.xml.in.h:28 ../rules/evdev.xml.in.h:28
+msgid "ACPI Standard"
+msgstr "ACPI-standard"
+
+#: ../rules/base.xml.in.h:29 ../rules/evdev.xml.in.h:29
+msgid "ATM/phone-style"
+msgstr ""
+
+#: ../rules/base.xml.in.h:30 ../rules/evdev.xml.in.h:30
+msgid "Acer AirKey V"
+msgstr ""
+
+#: ../rules/base.xml.in.h:31 ../rules/evdev.xml.in.h:31
+msgid "Acer C300"
+msgstr ""
+
+#: ../rules/base.xml.in.h:32 ../rules/evdev.xml.in.h:32
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:33 ../rules/evdev.xml.in.h:33
+msgid "Acer Laptop"
+msgstr "Acer bærbar"
+
+#: ../rules/base.xml.in.h:34 ../rules/evdev.xml.in.h:34
+msgid "Add the standard behavior to Menu key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:35 ../rules/evdev.xml.in.h:35
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:36 ../rules/evdev.xml.in.h:36
+#, fuzzy
+msgid "Adding EuroSign to certain keys"
+msgstr "Legg til Euro-tegnet på 2-tasten."
+
+#: ../rules/base.xml.in.h:37 ../rules/evdev.xml.in.h:37
+msgid "Advance Scorpius KI"
+msgstr ""
+
+#: ../rules/base.xml.in.h:38 ../rules/evdev.xml.in.h:38
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:39 ../rules/evdev.xml.in.h:39
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: ../rules/base.xml.in.h:40 ../rules/evdev.xml.in.h:40
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:41 ../rules/evdev.xml.in.h:41
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:42 ../rules/evdev.xml.in.h:42
+msgid "Albania"
+msgstr "Albania"
+
+#: ../rules/base.xml.in.h:43 ../rules/evdev.xml.in.h:43
+msgid "Alt and Meta are on Alt keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:44 ../rules/evdev.xml.in.h:44
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:45 ../rules/evdev.xml.in.h:45
+msgid "Alt+CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:46 ../rules/evdev.xml.in.h:46
+msgid "Alt+Ctrl"
+msgstr ""
+
+#: ../rules/base.xml.in.h:47 ../rules/evdev.xml.in.h:47
+msgid "Alt+Shift"
+msgstr ""
+
+#: ../rules/base.xml.in.h:48 ../rules/evdev.xml.in.h:48
+msgid "Alt+Space"
+msgstr ""
+
+#: ../rules/base.xml.in.h:49 ../rules/evdev.xml.in.h:49
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:50 ../rules/evdev.xml.in.h:50
+msgid "Alt/Win key behavior"
+msgstr ""
+
+#: ../rules/base.xml.in.h:51 ../rules/evdev.xml.in.h:51
+msgid "Alternative"
+msgstr "Alternativ"
+
+#: ../rules/base.xml.in.h:52 ../rules/evdev.xml.in.h:52
+msgid "Alternative Eastern"
+msgstr "Alternativ østlig"
+
+#: ../rules/base.xml.in.h:53 ../rules/evdev.xml.in.h:53
+msgid "Alternative Phonetic"
+msgstr "Alternativ fonetisk"
+
+#: ../rules/base.xml.in.h:54 ../rules/evdev.xml.in.h:54
+msgid "Alternative international (former us_intl)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:55 ../rules/evdev.xml.in.h:55
+msgid "Alternative, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:56 ../rules/evdev.xml.in.h:56
+msgid "Alternative, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:57 ../rules/evdev.xml.in.h:57
+msgid "Alternative, latin-9 only"
+msgstr ""
+
+#: ../rules/base.xml.in.h:58 ../rules/evdev.xml.in.h:58
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:59 ../rules/evdev.xml.in.h:59
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:60 ../rules/evdev.xml.in.h:60
+msgid "Any Alt key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:61 ../rules/evdev.xml.in.h:61
+msgid "Any Win key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:62 ../rules/evdev.xml.in.h:62
+msgid "Any Win key (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:63 ../rules/evdev.xml.in.h:63
+msgid "Apostrophe (') variant"
+msgstr ""
+
+#: ../rules/base.xml.in.h:64 ../rules/evdev.xml.in.h:64
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:65 ../rules/evdev.xml.in.h:65
+msgid "Apple Laptop"
+msgstr "Apple bærbar"
+
+#: ../rules/base.xml.in.h:66 ../rules/evdev.xml.in.h:66
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:67 ../rules/evdev.xml.in.h:67
+msgid "Arabic"
+msgstr "Arabisk"
+
+#: ../rules/base.xml.in.h:68 ../rules/evdev.xml.in.h:68
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:69 ../rules/evdev.xml.in.h:69
+msgid "Armenia"
+msgstr "Armenia"
+
+#: ../rules/base.xml.in.h:70 ../rules/evdev.xml.in.h:70
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr ""
+
+#: ../rules/base.xml.in.h:71 ../rules/evdev.xml.in.h:71
+msgid "Asus Laptop"
+msgstr "Asus bærbar"
+
+#: ../rules/base.xml.in.h:72 ../rules/evdev.xml.in.h:72
+msgid "At bottom left"
+msgstr ""
+
+#: ../rules/base.xml.in.h:73 ../rules/evdev.xml.in.h:73
+msgid "At left of 'A'"
+msgstr ""
+
+#: ../rules/base.xml.in.h:74 ../rules/evdev.xml.in.h:74
+msgid "Aze"
+msgstr "Ase"
+
+#: ../rules/base.xml.in.h:75 ../rules/evdev.xml.in.h:75
+msgid "Azerbaijan"
+msgstr "Aserbaijdsjan"
+
+#: ../rules/base.xml.in.h:76 ../rules/evdev.xml.in.h:76
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:77 ../rules/evdev.xml.in.h:77
+msgid "BTC 5090"
+msgstr ""
+
+#: ../rules/base.xml.in.h:78 ../rules/evdev.xml.in.h:78
+msgid "BTC 5113RF Multimedia"
+msgstr ""
+
+#: ../rules/base.xml.in.h:79 ../rules/evdev.xml.in.h:79
+msgid "BTC 5126T"
+msgstr ""
+
+#: ../rules/base.xml.in.h:80 ../rules/evdev.xml.in.h:80
+msgid "BTC 6301URF"
+msgstr ""
+
+#: ../rules/base.xml.in.h:81 ../rules/evdev.xml.in.h:81
+msgid "BTC 9000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:82 ../rules/evdev.xml.in.h:82
+msgid "BTC 9000A"
+msgstr ""
+
+#: ../rules/base.xml.in.h:83 ../rules/evdev.xml.in.h:83
+msgid "BTC 9001AH"
+msgstr ""
+
+#: ../rules/base.xml.in.h:84 ../rules/evdev.xml.in.h:84
+msgid "BTC 9019U"
+msgstr ""
+
+#: ../rules/base.xml.in.h:85 ../rules/evdev.xml.in.h:85
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr ""
+
+#: ../rules/base.xml.in.h:86 ../rules/evdev.xml.in.h:86
+msgid "Ban"
+msgstr ""
+
+#: ../rules/base.xml.in.h:87 ../rules/evdev.xml.in.h:87
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: ../rules/base.xml.in.h:88 ../rules/evdev.xml.in.h:88
+msgid "Bel"
+msgstr ""
+
+#: ../rules/base.xml.in.h:89 ../rules/evdev.xml.in.h:89
+msgid "Belarus"
+msgstr "Hviterussland"
+
+#: ../rules/base.xml.in.h:90 ../rules/evdev.xml.in.h:90
+msgid "Belgium"
+msgstr "Belgia"
+
+#: ../rules/base.xml.in.h:91 ../rules/evdev.xml.in.h:91
+msgid "BenQ X-Touch"
+msgstr ""
+
+#: ../rules/base.xml.in.h:92 ../rules/evdev.xml.in.h:92
+msgid "BenQ X-Touch 730"
+msgstr ""
+
+#: ../rules/base.xml.in.h:93 ../rules/evdev.xml.in.h:93
+msgid "BenQ X-Touch 800"
+msgstr ""
+
+#: ../rules/base.xml.in.h:94 ../rules/evdev.xml.in.h:94
+msgid "Bengali"
+msgstr ""
+
+#: ../rules/base.xml.in.h:95 ../rules/evdev.xml.in.h:95
+msgid "Bengali Probhat"
+msgstr ""
+
+#: ../rules/base.xml.in.h:96 ../rules/evdev.xml.in.h:96
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr ""
+
+#: ../rules/base.xml.in.h:97 ../rules/evdev.xml.in.h:97
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr ""
+
+#: ../rules/base.xml.in.h:98 ../rules/evdev.xml.in.h:98
+msgid "Bgr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:99 ../rules/evdev.xml.in.h:99
+msgid "Bhu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:100 ../rules/evdev.xml.in.h:100
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: ../rules/base.xml.in.h:101 ../rules/evdev.xml.in.h:101
+msgid "Biblical Hebrew (Tiro)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:102 ../rules/evdev.xml.in.h:102
+msgid "Bih"
+msgstr ""
+
+#: ../rules/base.xml.in.h:103 ../rules/evdev.xml.in.h:103
+msgid "Blr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:104 ../rules/evdev.xml.in.h:104
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia og Herzegovina"
+
+#: ../rules/base.xml.in.h:105 ../rules/evdev.xml.in.h:105
+msgid "Both Alt keys together"
+msgstr ""
+
+#: ../rules/base.xml.in.h:106 ../rules/evdev.xml.in.h:106
+msgid "Both Ctrl keys together"
+msgstr ""
+
+#: ../rules/base.xml.in.h:107 ../rules/evdev.xml.in.h:107
+msgid "Both Shift keys together"
+msgstr ""
+
+#: ../rules/base.xml.in.h:108 ../rules/evdev.xml.in.h:108
+msgid "Bra"
+msgstr ""
+
+#: ../rules/base.xml.in.h:109 ../rules/evdev.xml.in.h:109
+msgid "Braille"
+msgstr ""
+
+#: ../rules/base.xml.in.h:110 ../rules/evdev.xml.in.h:110
+msgid "Brazil"
+msgstr "Brasil"
+
+#: ../rules/base.xml.in.h:111 ../rules/evdev.xml.in.h:111
+msgid "Brazilian ABNT2"
+msgstr ""
+
+#: ../rules/base.xml.in.h:112 ../rules/evdev.xml.in.h:112
+msgid "Breton"
+msgstr ""
+
+#: ../rules/base.xml.in.h:113 ../rules/evdev.xml.in.h:113
+msgid "Brl"
+msgstr ""
+
+#: ../rules/base.xml.in.h:114 ../rules/evdev.xml.in.h:114
+msgid "Brother Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:115 ../rules/evdev.xml.in.h:115
+msgid "Buckwalter"
+msgstr ""
+
+#: ../rules/base.xml.in.h:116 ../rules/evdev.xml.in.h:116
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: ../rules/base.xml.in.h:117 ../rules/evdev.xml.in.h:117
+msgid "CRULP"
+msgstr ""
+
+#: ../rules/base.xml.in.h:118 ../rules/evdev.xml.in.h:118
+msgid "Cambodia"
+msgstr ""
+
+#: ../rules/base.xml.in.h:119 ../rules/evdev.xml.in.h:119
+msgid "Can"
+msgstr ""
+
+#: ../rules/base.xml.in.h:120 ../rules/evdev.xml.in.h:120
+msgid "Canada"
+msgstr ""
+
+#: ../rules/base.xml.in.h:121 ../rules/evdev.xml.in.h:121
+msgid "Caps Lock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:122 ../rules/evdev.xml.in.h:122
+msgid "CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:123 ../rules/evdev.xml.in.h:123
+msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:124 ../rules/evdev.xml.in.h:124
+msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
+msgstr ""
+
+#: ../rules/base.xml.in.h:125 ../rules/evdev.xml.in.h:125
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:126 ../rules/evdev.xml.in.h:126
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:127 ../rules/evdev.xml.in.h:127
+msgid "CapsLock key behavior"
+msgstr ""
+
+#: ../rules/base.xml.in.h:128 ../rules/evdev.xml.in.h:128
+msgid "CapsLock toggles Shift so all keys are affected"
+msgstr ""
+
+#: ../rules/base.xml.in.h:129 ../rules/evdev.xml.in.h:129
+msgid "CapsLock toggles normal capitalization of alphabetic characters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:130 ../rules/evdev.xml.in.h:130
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:131 ../rules/evdev.xml.in.h:131
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:132 ../rules/evdev.xml.in.h:132
+msgid "Catalan variant with middle-dot L"
+msgstr ""
+
+#: ../rules/base.xml.in.h:133 ../rules/evdev.xml.in.h:133
+msgid "Cedilla"
+msgstr ""
+
+#: ../rules/base.xml.in.h:134 ../rules/evdev.xml.in.h:134
+msgid "Che"
+msgstr ""
+
+#: ../rules/base.xml.in.h:135 ../rules/evdev.xml.in.h:135
+msgid "Cherokee"
+msgstr ""
+
+#: ../rules/base.xml.in.h:136 ../rules/evdev.xml.in.h:136
+msgid "Cherry Blue Line CyBo@rd"
+msgstr ""
+
+#: ../rules/base.xml.in.h:137 ../rules/evdev.xml.in.h:137
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:138 ../rules/evdev.xml.in.h:138
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr ""
+
+#: ../rules/base.xml.in.h:139 ../rules/evdev.xml.in.h:139
+msgid "Cherry CyMotion Expert"
+msgstr ""
+
+#: ../rules/base.xml.in.h:140 ../rules/evdev.xml.in.h:140
+msgid "Cherry CyMotion Master Linux"
+msgstr ""
+
+#: ../rules/base.xml.in.h:141 ../rules/evdev.xml.in.h:141
+msgid "Cherry CyMotion Master XPress"
+msgstr ""
+
+#: ../rules/base.xml.in.h:142 ../rules/evdev.xml.in.h:142
+msgid "Chicony Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:143 ../rules/evdev.xml.in.h:143
+msgid "Chicony KB-9885"
+msgstr ""
+
+#: ../rules/base.xml.in.h:144 ../rules/evdev.xml.in.h:144
+msgid "Chicony KU-0108"
+msgstr ""
+
+#: ../rules/base.xml.in.h:145 ../rules/evdev.xml.in.h:145
+msgid "Chicony KU-0420"
+msgstr ""
+
+#: ../rules/base.xml.in.h:146 ../rules/evdev.xml.in.h:146
+msgid "China"
+msgstr "Kina"
+
+#: ../rules/base.xml.in.h:147 ../rules/evdev.xml.in.h:147
+msgid "Chuvash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:148 ../rules/evdev.xml.in.h:148
+msgid "Chuvash Latin"
+msgstr ""
+
+#: ../rules/base.xml.in.h:149 ../rules/evdev.xml.in.h:149
+msgid "Classic"
+msgstr "Klassisk"
+
+#: ../rules/base.xml.in.h:150 ../rules/evdev.xml.in.h:150
+msgid "Classic Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:151 ../rules/evdev.xml.in.h:151
+msgid "Classmate PC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:152 ../rules/evdev.xml.in.h:152
+msgid "CloGaelach"
+msgstr ""
+
+#: ../rules/base.xml.in.h:153 ../rules/evdev.xml.in.h:153
+msgid "Colemak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:154 ../rules/evdev.xml.in.h:154
+msgid "Compaq Easy Access Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:155 ../rules/evdev.xml.in.h:155
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:156 ../rules/evdev.xml.in.h:156
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:157 ../rules/evdev.xml.in.h:157
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:158 ../rules/evdev.xml.in.h:158
+msgid "Compaq iPaq Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:159 ../rules/evdev.xml.in.h:159
+msgid "Compose key position"
+msgstr ""
+
+#: ../rules/base.xml.in.h:160 ../rules/evdev.xml.in.h:160
+msgid "Congo, Democratic Republic of the"
+msgstr ""
+
+#: ../rules/base.xml.in.h:161 ../rules/evdev.xml.in.h:161
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:162 ../rules/evdev.xml.in.h:162
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:163 ../rules/evdev.xml.in.h:163
+msgid "Croatia"
+msgstr "Kroatia"
+
+#: ../rules/base.xml.in.h:164 ../rules/evdev.xml.in.h:164
+msgid "Ctrl key position"
+msgstr ""
+
+#: ../rules/base.xml.in.h:165 ../rules/evdev.xml.in.h:165
+msgid "Ctrl+Shift"
+msgstr ""
+
+#: ../rules/base.xml.in.h:166 ../rules/evdev.xml.in.h:166
+msgid "Cyrillic"
+msgstr "Kyrillisk"
+
+#: ../rules/base.xml.in.h:167 ../rules/evdev.xml.in.h:167
+msgid "Cyrillic with guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:168 ../rules/evdev.xml.in.h:168
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr ""
+
+#: ../rules/base.xml.in.h:169 ../rules/evdev.xml.in.h:169
+msgid "Cze"
+msgstr ""
+
+#: ../rules/base.xml.in.h:170 ../rules/evdev.xml.in.h:170
+msgid "Czechia"
+msgstr ""
+
+#: ../rules/base.xml.in.h:171 ../rules/evdev.xml.in.h:171
+msgid "DRC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:172 ../rules/evdev.xml.in.h:172
+msgid "DTK2000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:173 ../rules/evdev.xml.in.h:173
+msgid "Dan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:174 ../rules/evdev.xml.in.h:174
+msgid "Dead acute"
+msgstr ""
+
+#: ../rules/base.xml.in.h:175 ../rules/evdev.xml.in.h:175
+msgid "Dead grave acute"
+msgstr ""
+
+#: ../rules/base.xml.in.h:176 ../rules/evdev.xml.in.h:176
+msgid "Default numeric keypad keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:177 ../rules/evdev.xml.in.h:177
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:178 ../rules/evdev.xml.in.h:178
+msgid "Dell 101-key PC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:179 ../rules/evdev.xml.in.h:179
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:180 ../rules/evdev.xml.in.h:180
+msgid "Dell Laptop/notebook Precision M series"
+msgstr ""
+
+#: ../rules/base.xml.in.h:181 ../rules/evdev.xml.in.h:181
+msgid "Dell Latitude series laptop"
+msgstr ""
+
+#: ../rules/base.xml.in.h:182 ../rules/evdev.xml.in.h:182
+msgid "Dell Precision M65"
+msgstr ""
+
+#: ../rules/base.xml.in.h:183 ../rules/evdev.xml.in.h:183
+msgid "Dell SK-8125"
+msgstr ""
+
+#: ../rules/base.xml.in.h:184 ../rules/evdev.xml.in.h:184
+msgid "Dell SK-8135"
+msgstr ""
+
+#: ../rules/base.xml.in.h:185 ../rules/evdev.xml.in.h:185
+msgid "Dell USB Multimedia Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:186 ../rules/evdev.xml.in.h:186
+msgid "Denmark"
+msgstr "Danmark"
+
+#: ../rules/base.xml.in.h:187 ../rules/evdev.xml.in.h:187
+msgid "Deu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:188 ../rules/evdev.xml.in.h:188
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:189 ../rules/evdev.xml.in.h:189
+msgid "Diamond 9801 / 9802 series"
+msgstr ""
+
+#: ../rules/base.xml.in.h:190 ../rules/evdev.xml.in.h:190
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:191 ../rules/evdev.xml.in.h:191
+msgid "Dvorak (UK Punctuation)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:192 ../rules/evdev.xml.in.h:192
+msgid "Dvorak international"
+msgstr ""
+
+#: ../rules/base.xml.in.h:193 ../rules/evdev.xml.in.h:193
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr ""
+
+#: ../rules/base.xml.in.h:194 ../rules/evdev.xml.in.h:194
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:195 ../rules/evdev.xml.in.h:195
+msgid "E"
+msgstr ""
+
+#: ../rules/base.xml.in.h:196 ../rules/evdev.xml.in.h:196
+msgid "Eastern"
+msgstr "Østlig"
+
+#: ../rules/base.xml.in.h:197 ../rules/evdev.xml.in.h:197
+msgid "Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:198 ../rules/evdev.xml.in.h:198
+msgid "Enable extra typographic characters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:199 ../rules/evdev.xml.in.h:199
+msgid "Ennyah DKB-1008"
+msgstr ""
+
+#: ../rules/base.xml.in.h:200 ../rules/evdev.xml.in.h:200
+msgid "Epo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:201 ../rules/evdev.xml.in.h:201
+msgid "Ergonomic"
+msgstr "Ergonomisk"
+
+#: ../rules/base.xml.in.h:202 ../rules/evdev.xml.in.h:202
+msgid "Esp"
+msgstr ""
+
+#: ../rules/base.xml.in.h:203 ../rules/evdev.xml.in.h:203
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:204 ../rules/evdev.xml.in.h:204
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:205 ../rules/evdev.xml.in.h:205
+msgid "Estonia"
+msgstr "Estland"
+
+#: ../rules/base.xml.in.h:206 ../rules/evdev.xml.in.h:206
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:207 ../rules/evdev.xml.in.h:207
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: ../rules/base.xml.in.h:208 ../rules/evdev.xml.in.h:208
+msgid "Evdev-managed keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:209 ../rules/evdev.xml.in.h:209
+msgid "Everex STEPnote"
+msgstr ""
+
+#: ../rules/base.xml.in.h:210 ../rules/evdev.xml.in.h:210
+msgid "Ewe"
+msgstr ""
+
+#: ../rules/base.xml.in.h:211 ../rules/evdev.xml.in.h:211
+msgid "Extended"
+msgstr "Utvidet"
+
+#: ../rules/base.xml.in.h:212 ../rules/evdev.xml.in.h:212
+msgid "Extended Backslash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:213 ../rules/evdev.xml.in.h:213
+msgid "F-letter (F) variant"
+msgstr ""
+
+#: ../rules/base.xml.in.h:214 ../rules/evdev.xml.in.h:214
+msgid "FL90"
+msgstr ""
+
+#: ../rules/base.xml.in.h:215 ../rules/evdev.xml.in.h:215
+msgid "Fao"
+msgstr ""
+
+#: ../rules/base.xml.in.h:216 ../rules/evdev.xml.in.h:216
+msgid "Faroe Islands"
+msgstr "Færøyene"
+
+#: ../rules/base.xml.in.h:217 ../rules/evdev.xml.in.h:217
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:218 ../rules/evdev.xml.in.h:218
+msgid "Finland"
+msgstr "Finland"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:221 ../rules/evdev.xml.in.h:221
+msgid "Four-level key with abstract separators"
+msgstr ""
+
+#: ../rules/base.xml.in.h:222 ../rules/evdev.xml.in.h:222
+msgid "Four-level key with comma"
+msgstr ""
+
+#: ../rules/base.xml.in.h:223 ../rules/evdev.xml.in.h:223
+msgid "Four-level key with dot"
+msgstr ""
+
+#: ../rules/base.xml.in.h:224 ../rules/evdev.xml.in.h:224
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr ""
+
+#: ../rules/base.xml.in.h:225 ../rules/evdev.xml.in.h:225
+msgid "Four-level key with momayyez"
+msgstr ""
+
+#: ../rules/base.xml.in.h:226 ../rules/evdev.xml.in.h:226
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:227 ../rules/evdev.xml.in.h:227
+msgid "France"
+msgstr "Frankrike"
+
+#: ../rules/base.xml.in.h:228 ../rules/evdev.xml.in.h:228
+msgid "French"
+msgstr "Fransk"
+
+#: ../rules/base.xml.in.h:229 ../rules/evdev.xml.in.h:229
+msgid "French (Macintosh)"
+msgstr "Fransk (Macintosh)"
+
+#: ../rules/base.xml.in.h:230 ../rules/evdev.xml.in.h:230
+msgid "French (legacy)"
+msgstr "Fransk (gammel)"
+
+#: ../rules/base.xml.in.h:231 ../rules/evdev.xml.in.h:231
+msgid "French Dvorak"
+msgstr "Fransk dvorak"
+
+#: ../rules/base.xml.in.h:232 ../rules/evdev.xml.in.h:232
+msgid "French, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:233 ../rules/evdev.xml.in.h:233
+msgid "French, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:234 ../rules/evdev.xml.in.h:234
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr ""
+
+#: ../rules/base.xml.in.h:235 ../rules/evdev.xml.in.h:235
+msgid "Fula"
+msgstr ""
+
+#: ../rules/base.xml.in.h:236 ../rules/evdev.xml.in.h:236
+msgid "GBr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:237 ../rules/evdev.xml.in.h:237
+msgid "Ga"
+msgstr ""
+
+#: ../rules/base.xml.in.h:238 ../rules/evdev.xml.in.h:238
+msgid "Generic 101-key PC"
+msgstr "Vanlig 101-tasters PC"
+
+#: ../rules/base.xml.in.h:239 ../rules/evdev.xml.in.h:239
+msgid "Generic 102-key (Intl) PC"
+msgstr "Vanlig 102-tasters (Intl) PC"
+
+#: ../rules/base.xml.in.h:240 ../rules/evdev.xml.in.h:240
+msgid "Generic 104-key PC"
+msgstr "Vanlig 104-tasters PC"
+
+#: ../rules/base.xml.in.h:241 ../rules/evdev.xml.in.h:241
+msgid "Generic 105-key (Intl) PC"
+msgstr "Vanlig 105-tasters (Intl) PC"
+
+#: ../rules/base.xml.in.h:242 ../rules/evdev.xml.in.h:242
+msgid "Genius Comfy KB-12e"
+msgstr ""
+
+#: ../rules/base.xml.in.h:243 ../rules/evdev.xml.in.h:243
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr ""
+
+#: ../rules/base.xml.in.h:244 ../rules/evdev.xml.in.h:244
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr ""
+
+#: ../rules/base.xml.in.h:245 ../rules/evdev.xml.in.h:245
+msgid "Genius KB-19e NB"
+msgstr ""
+
+#: ../rules/base.xml.in.h:246 ../rules/evdev.xml.in.h:246
+msgid "Geo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:247 ../rules/evdev.xml.in.h:247
+msgid "Georgia"
+msgstr "Georgia"
+
+#: ../rules/base.xml.in.h:248 ../rules/evdev.xml.in.h:248
+msgid "Georgian"
+msgstr "Georgisk"
+
+#: ../rules/base.xml.in.h:249 ../rules/evdev.xml.in.h:249
+msgid "Georgian AZERTY Tskapo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:250 ../rules/evdev.xml.in.h:250
+msgid "German (Macintosh)"
+msgstr "Tysk (Macintosh)"
+
+#: ../rules/base.xml.in.h:251 ../rules/evdev.xml.in.h:251
+msgid "German, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:252 ../rules/evdev.xml.in.h:252
+msgid "German, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:253 ../rules/evdev.xml.in.h:253
+msgid "Germany"
+msgstr "Tyskland"
+
+#: ../rules/base.xml.in.h:254 ../rules/evdev.xml.in.h:254
+msgid "Gha"
+msgstr ""
+
+#: ../rules/base.xml.in.h:255 ../rules/evdev.xml.in.h:255
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:256 ../rules/evdev.xml.in.h:256
+msgid "Gre"
+msgstr ""
+
+#: ../rules/base.xml.in.h:257 ../rules/evdev.xml.in.h:257
+msgid "Greece"
+msgstr "Hellas"
+
+#: ../rules/base.xml.in.h:258 ../rules/evdev.xml.in.h:258
+msgid "Group toggle on multiply/divide key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:259 ../rules/evdev.xml.in.h:259
+msgid "Gui"
+msgstr "Gui"
+
+#: ../rules/base.xml.in.h:260 ../rules/evdev.xml.in.h:260
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:261 ../rules/evdev.xml.in.h:261
+msgid "Gujarati"
+msgstr ""
+
+#: ../rules/base.xml.in.h:262 ../rules/evdev.xml.in.h:262
+msgid "Gurmukhi"
+msgstr ""
+
+#: ../rules/base.xml.in.h:263 ../rules/evdev.xml.in.h:263
+msgid "Gurmukhi Jhelum"
+msgstr ""
+
+#: ../rules/base.xml.in.h:264 ../rules/evdev.xml.in.h:264
+msgid "Gyration"
+msgstr ""
+
+#: ../rules/base.xml.in.h:265 ../rules/evdev.xml.in.h:265
+msgid "Happy Hacking Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:266 ../rules/evdev.xml.in.h:266
+msgid "Happy Hacking Keyboard for Mac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:267 ../rules/evdev.xml.in.h:267
+msgid "Hausa"
+msgstr ""
+
+#: ../rules/base.xml.in.h:268 ../rules/evdev.xml.in.h:268
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:269 ../rules/evdev.xml.in.h:269
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr ""
+
+#: ../rules/base.xml.in.h:270 ../rules/evdev.xml.in.h:270
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:271 ../rules/evdev.xml.in.h:271
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr ""
+
+#: ../rules/base.xml.in.h:272 ../rules/evdev.xml.in.h:272
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:273 ../rules/evdev.xml.in.h:273
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr ""
+
+#: ../rules/base.xml.in.h:274 ../rules/evdev.xml.in.h:274
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:275 ../rules/evdev.xml.in.h:275
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:276 ../rules/evdev.xml.in.h:276
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr ""
+
+#: ../rules/base.xml.in.h:277 ../rules/evdev.xml.in.h:277
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:278 ../rules/evdev.xml.in.h:278
+msgid "Hewlett-Packard nx9020"
+msgstr ""
+
+#: ../rules/base.xml.in.h:279 ../rules/evdev.xml.in.h:279
+msgid "Hexadecimal"
+msgstr ""
+
+#: ../rules/base.xml.in.h:280 ../rules/evdev.xml.in.h:280
+msgid "Hindi Bolnagri"
+msgstr ""
+
+#: ../rules/base.xml.in.h:281 ../rules/evdev.xml.in.h:281
+msgid "Homophonic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:282 ../rules/evdev.xml.in.h:282
+msgid "Honeywell Euroboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:283 ../rules/evdev.xml.in.h:283
+msgid "Hrv"
+msgstr ""
+
+#: ../rules/base.xml.in.h:284 ../rules/evdev.xml.in.h:284
+msgid "Hun"
+msgstr ""
+
+#: ../rules/base.xml.in.h:285 ../rules/evdev.xml.in.h:285
+msgid "Hungary"
+msgstr "Ungarn"
+
+#: ../rules/base.xml.in.h:286 ../rules/evdev.xml.in.h:286
+msgid "Hyper is mapped to Win-keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:287 ../rules/evdev.xml.in.h:287
+msgid "IBM (LST 1205-92)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:288 ../rules/evdev.xml.in.h:288
+msgid "IBM Rapid Access"
+msgstr ""
+
+#: ../rules/base.xml.in.h:289 ../rules/evdev.xml.in.h:289
+msgid "IBM Rapid Access II"
+msgstr ""
+
+#: ../rules/base.xml.in.h:290 ../rules/evdev.xml.in.h:290
+msgid "IBM Space Saver"
+msgstr ""
+
+#: ../rules/base.xml.in.h:291 ../rules/evdev.xml.in.h:291
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr ""
+
+#: ../rules/base.xml.in.h:292 ../rules/evdev.xml.in.h:292
+msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+msgstr ""
+
+#: ../rules/base.xml.in.h:293 ../rules/evdev.xml.in.h:293
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr ""
+
+#: ../rules/base.xml.in.h:294 ../rules/evdev.xml.in.h:294
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr ""
+
+#: ../rules/base.xml.in.h:295 ../rules/evdev.xml.in.h:295
+msgid "ISO Alternate"
+msgstr ""
+
+#: ../rules/base.xml.in.h:296 ../rules/evdev.xml.in.h:296
+msgid "Iceland"
+msgstr "Island"
+
+#: ../rules/base.xml.in.h:297 ../rules/evdev.xml.in.h:297
+msgid "Igbo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:298 ../rules/evdev.xml.in.h:298
+msgid "Include dead tilde"
+msgstr ""
+
+#: ../rules/base.xml.in.h:299 ../rules/evdev.xml.in.h:299
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:300 ../rules/evdev.xml.in.h:300
+msgid "India"
+msgstr "India"
+
+#: ../rules/base.xml.in.h:301 ../rules/evdev.xml.in.h:301
+msgid "International (AltGr dead keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:302 ../rules/evdev.xml.in.h:302
+msgid "International (with dead keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:303 ../rules/evdev.xml.in.h:303
+msgid "Inuktitut"
+msgstr ""
+
+#: ../rules/base.xml.in.h:304 ../rules/evdev.xml.in.h:304
+msgid "Iran"
+msgstr "Iran"
+
+#: ../rules/base.xml.in.h:305 ../rules/evdev.xml.in.h:305
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:306 ../rules/evdev.xml.in.h:306
+msgid "Ireland"
+msgstr "Irland"
+
+#: ../rules/base.xml.in.h:307 ../rules/evdev.xml.in.h:307
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:308 ../rules/evdev.xml.in.h:308
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:309 ../rules/evdev.xml.in.h:309
+msgid "Irq"
+msgstr "Irk"
+
+#: ../rules/base.xml.in.h:310 ../rules/evdev.xml.in.h:310
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:311 ../rules/evdev.xml.in.h:311
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:312 ../rules/evdev.xml.in.h:312
+msgid "Israel"
+msgstr "Irsrael"
+
+#: ../rules/base.xml.in.h:313 ../rules/evdev.xml.in.h:313
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:314 ../rules/evdev.xml.in.h:314
+msgid "Italy"
+msgstr "Italia"
+
+#: ../rules/base.xml.in.h:315 ../rules/evdev.xml.in.h:315
+msgid "Japan"
+msgstr "Japan"
+
+#: ../rules/base.xml.in.h:316 ../rules/evdev.xml.in.h:316
+msgid "Japan (PC-98xx Series)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:317 ../rules/evdev.xml.in.h:317
+msgid "Japanese 106-key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:318 ../rules/evdev.xml.in.h:318
+msgid "Japanese keyboard options"
+msgstr ""
+
+#: ../rules/base.xml.in.h:319 ../rules/evdev.xml.in.h:319
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:320 ../rules/evdev.xml.in.h:320
+msgid "Kalmyk"
+msgstr ""
+
+#: ../rules/base.xml.in.h:321 ../rules/evdev.xml.in.h:321
+msgid "Kana"
+msgstr ""
+
+#: ../rules/base.xml.in.h:322 ../rules/evdev.xml.in.h:322
+msgid "Kana Lock key is locking"
+msgstr ""
+
+#: ../rules/base.xml.in.h:323 ../rules/evdev.xml.in.h:323
+msgid "Kannada"
+msgstr ""
+
+#: ../rules/base.xml.in.h:324 ../rules/evdev.xml.in.h:324
+msgid "Kashubian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:325 ../rules/evdev.xml.in.h:325
+msgid "Kaz"
+msgstr ""
+
+#: ../rules/base.xml.in.h:326 ../rules/evdev.xml.in.h:326
+msgid "Kazakh with Russian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:327 ../rules/evdev.xml.in.h:327
+msgid "Kazakhstan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:328 ../rules/evdev.xml.in.h:328
+msgid "Key to choose 3rd level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:329 ../rules/evdev.xml.in.h:329
+msgid "Key(s) to change layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:330 ../rules/evdev.xml.in.h:330
+msgid "Keypad"
+msgstr "Nummertastatur"
+
+#: ../rules/base.xml.in.h:331 ../rules/evdev.xml.in.h:331
+msgid "Keytronic FlexPro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:332 ../rules/evdev.xml.in.h:332
+msgid "Khm"
+msgstr ""
+
+#: ../rules/base.xml.in.h:333 ../rules/evdev.xml.in.h:333
+msgid "Kir"
+msgstr "Kir"
+
+#: ../rules/base.xml.in.h:334 ../rules/evdev.xml.in.h:334
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:335 ../rules/evdev.xml.in.h:335
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:336 ../rules/evdev.xml.in.h:336
+msgid "Korea, Republic of"
+msgstr ""
+
+#: ../rules/base.xml.in.h:337 ../rules/evdev.xml.in.h:337
+msgid "Korean 106-key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:338 ../rules/evdev.xml.in.h:338
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:339 ../rules/evdev.xml.in.h:339
+msgid "Kurdish, (F)"
+msgstr "Kurdisk, (F)"
+
+#: ../rules/base.xml.in.h:340 ../rules/evdev.xml.in.h:340
+msgid "Kurdish, Arabic-Latin"
+msgstr ""
+
+#: ../rules/base.xml.in.h:341 ../rules/evdev.xml.in.h:341
+msgid "Kurdish, Latin Alt-Q"
+msgstr ""
+
+#: ../rules/base.xml.in.h:342 ../rules/evdev.xml.in.h:342
+msgid "Kurdish, Latin Q"
+msgstr ""
+
+#: ../rules/base.xml.in.h:343 ../rules/evdev.xml.in.h:343
+msgid "Kyrgyzstan"
+msgstr "Kirgistan"
+
+#: ../rules/base.xml.in.h:344 ../rules/evdev.xml.in.h:344
+msgid "LAm"
+msgstr ""
+
+#: ../rules/base.xml.in.h:345 ../rules/evdev.xml.in.h:345
+msgid "LEKP"
+msgstr ""
+
+#: ../rules/base.xml.in.h:346 ../rules/evdev.xml.in.h:346
+msgid "LEKPa"
+msgstr ""
+
+#: ../rules/base.xml.in.h:347 ../rules/evdev.xml.in.h:347
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:348 ../rules/evdev.xml.in.h:348
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:349 ../rules/evdev.xml.in.h:349
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:350 ../rules/evdev.xml.in.h:350
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:351 ../rules/evdev.xml.in.h:351
+msgid "Laptop/notebook eMachines m68xx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:352 ../rules/evdev.xml.in.h:352
+msgid "Latin"
+msgstr "Latin"
+
+#: ../rules/base.xml.in.h:353 ../rules/evdev.xml.in.h:353
+msgid "Latin American"
+msgstr "Latinamerikansk"
+
+#: ../rules/base.xml.in.h:354 ../rules/evdev.xml.in.h:354
+msgid "Latin Unicode"
+msgstr ""
+
+#: ../rules/base.xml.in.h:355 ../rules/evdev.xml.in.h:355
+msgid "Latin Unicode qwerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:356 ../rules/evdev.xml.in.h:356
+msgid "Latin qwerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:357 ../rules/evdev.xml.in.h:357
+msgid "Latin unicode"
+msgstr ""
+
+#: ../rules/base.xml.in.h:358 ../rules/evdev.xml.in.h:358
+msgid "Latin unicode qwerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:359 ../rules/evdev.xml.in.h:359
+msgid "Latin with guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:360 ../rules/evdev.xml.in.h:360
+msgid "Latvia"
+msgstr "Latvia"
+
+#: ../rules/base.xml.in.h:361 ../rules/evdev.xml.in.h:361
+msgid "Lav"
+msgstr "Lav"
+
+#: ../rules/base.xml.in.h:362 ../rules/evdev.xml.in.h:362
+msgid "Left Alt"
+msgstr "Venstre Alt"
+
+#: ../rules/base.xml.in.h:363 ../rules/evdev.xml.in.h:363
+msgid "Left Alt (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:364 ../rules/evdev.xml.in.h:364
+msgid "Left Alt is swapped with Left Win"
+msgstr ""
+
+#: ../rules/base.xml.in.h:365 ../rules/evdev.xml.in.h:365
+msgid "Left Ctrl"
+msgstr "Venstre Ctrl"
+
+#: ../rules/base.xml.in.h:366 ../rules/evdev.xml.in.h:366
+msgid "Left Ctrl+Left Shift"
+msgstr ""
+
+#: ../rules/base.xml.in.h:367 ../rules/evdev.xml.in.h:367
+msgid "Left Shift"
+msgstr "Venstre Shift"
+
+#: ../rules/base.xml.in.h:368 ../rules/evdev.xml.in.h:368
+msgid "Left Win"
+msgstr "Venstre Win"
+
+#: ../rules/base.xml.in.h:369 ../rules/evdev.xml.in.h:369
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:370 ../rules/evdev.xml.in.h:370
+msgid "Left Win (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:371 ../rules/evdev.xml.in.h:371
+msgid "Left hand"
+msgstr "Venstre hånd"
+
+#: ../rules/base.xml.in.h:372 ../rules/evdev.xml.in.h:372
+msgid "Left handed Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:373 ../rules/evdev.xml.in.h:373
+msgid "Legacy"
+msgstr ""
+
+#: ../rules/base.xml.in.h:374 ../rules/evdev.xml.in.h:374
+msgid "Legacy Wang 724"
+msgstr ""
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:376 ../rules/evdev.xml.in.h:376
+msgid "Legacy key with comma"
+msgstr ""
+
+#: ../rules/base.xml.in.h:377 ../rules/evdev.xml.in.h:377
+msgid "Legacy key with dot"
+msgstr ""
+
+#: ../rules/base.xml.in.h:378 ../rules/evdev.xml.in.h:378
+msgid "Less-than/Greater-than"
+msgstr ""
+
+#: ../rules/base.xml.in.h:379 ../rules/evdev.xml.in.h:379
+msgid "Lithuania"
+msgstr "Litauen"
+
+#: ../rules/base.xml.in.h:380 ../rules/evdev.xml.in.h:380
+msgid "Logitech Access Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:381 ../rules/evdev.xml.in.h:381
+msgid "Logitech Cordless Desktop"
+msgstr ""
+
+#: ../rules/base.xml.in.h:382 ../rules/evdev.xml.in.h:382
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:383 ../rules/evdev.xml.in.h:383
+msgid "Logitech Cordless Desktop EX110"
+msgstr ""
+
+#: ../rules/base.xml.in.h:384 ../rules/evdev.xml.in.h:384
+msgid "Logitech Cordless Desktop LX-300"
+msgstr ""
+
+#: ../rules/base.xml.in.h:385 ../rules/evdev.xml.in.h:385
+msgid "Logitech Cordless Desktop Navigator"
+msgstr ""
+
+#: ../rules/base.xml.in.h:386 ../rules/evdev.xml.in.h:386
+msgid "Logitech Cordless Desktop Optical"
+msgstr ""
+
+#: ../rules/base.xml.in.h:387 ../rules/evdev.xml.in.h:387
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:388 ../rules/evdev.xml.in.h:388
+msgid "Logitech Cordless Desktop iTouch"
+msgstr ""
+
+#: ../rules/base.xml.in.h:389 ../rules/evdev.xml.in.h:389
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr ""
+
+#: ../rules/base.xml.in.h:390 ../rules/evdev.xml.in.h:390
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr ""
+
+#: ../rules/base.xml.in.h:391 ../rules/evdev.xml.in.h:391
+msgid "Logitech Generic Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:392 ../rules/evdev.xml.in.h:392
+msgid "Logitech Internet 350 Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:393 ../rules/evdev.xml.in.h:393
+msgid "Logitech Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:394 ../rules/evdev.xml.in.h:394
+msgid "Logitech Internet Navigator Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:395 ../rules/evdev.xml.in.h:395
+msgid "Logitech Media Elite Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:396 ../rules/evdev.xml.in.h:396
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:397 ../rules/evdev.xml.in.h:397
+msgid "Logitech Ultra-X Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:398 ../rules/evdev.xml.in.h:398
+msgid "Logitech diNovo Edge Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:399 ../rules/evdev.xml.in.h:399
+msgid "Logitech diNovo Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:400 ../rules/evdev.xml.in.h:400
+msgid "Logitech iTouch"
+msgstr ""
+
+#: ../rules/base.xml.in.h:401 ../rules/evdev.xml.in.h:401
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:402 ../rules/evdev.xml.in.h:402
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr ""
+
+#: ../rules/base.xml.in.h:403 ../rules/evdev.xml.in.h:403
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:404 ../rules/evdev.xml.in.h:404
+msgid "Lower Sorbian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:405 ../rules/evdev.xml.in.h:405
+msgid "Lower Sorbian (qwertz)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:406 ../rules/evdev.xml.in.h:406
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:407 ../rules/evdev.xml.in.h:407
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:408 ../rules/evdev.xml.in.h:408
+msgid "MNE"
+msgstr ""
+
+#: ../rules/base.xml.in.h:409 ../rules/evdev.xml.in.h:409
+msgid "MacBook/MacBook Pro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:410 ../rules/evdev.xml.in.h:410
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:411 ../rules/evdev.xml.in.h:411
+msgid "Macedonia"
+msgstr "Makedonia"
+
+#: ../rules/base.xml.in.h:412 ../rules/evdev.xml.in.h:412
+msgid "Macintosh"
+msgstr ""
+
+#: ../rules/base.xml.in.h:413 ../rules/evdev.xml.in.h:413
+msgid "Macintosh Old"
+msgstr ""
+
+#: ../rules/base.xml.in.h:414 ../rules/evdev.xml.in.h:414
+msgid "Macintosh, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:415 ../rules/evdev.xml.in.h:415
+msgid "Macintosh, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:416 ../rules/evdev.xml.in.h:416
+msgid "Make CapsLock an additional Backspace"
+msgstr ""
+
+#: ../rules/base.xml.in.h:417 ../rules/evdev.xml.in.h:417
+msgid "Make CapsLock an additional Ctrl"
+msgstr ""
+
+#: ../rules/base.xml.in.h:418 ../rules/evdev.xml.in.h:418
+msgid "Make CapsLock an additional ESC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:419 ../rules/evdev.xml.in.h:419
+msgid "Mal"
+msgstr ""
+
+#: ../rules/base.xml.in.h:420 ../rules/evdev.xml.in.h:420
+msgid "Malayalam"
+msgstr ""
+
+#: ../rules/base.xml.in.h:421 ../rules/evdev.xml.in.h:421
+msgid "Malayalam Lalitha"
+msgstr ""
+
+#: ../rules/base.xml.in.h:422 ../rules/evdev.xml.in.h:422
+msgid "Maldives"
+msgstr "Maldivene"
+
+#: ../rules/base.xml.in.h:423 ../rules/evdev.xml.in.h:423
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:424 ../rules/evdev.xml.in.h:424
+msgid "Maltese keyboard with US layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:425 ../rules/evdev.xml.in.h:425
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:426 ../rules/evdev.xml.in.h:426
+msgid "Maori"
+msgstr "Maori"
+
+#: ../rules/base.xml.in.h:427 ../rules/evdev.xml.in.h:427
+msgid "Memorex MX1998"
+msgstr ""
+
+#: ../rules/base.xml.in.h:428 ../rules/evdev.xml.in.h:428
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:429 ../rules/evdev.xml.in.h:429
+msgid "Memorex MX2750"
+msgstr ""
+
+#: ../rules/base.xml.in.h:430 ../rules/evdev.xml.in.h:430
+msgid "Menu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:431 ../rules/evdev.xml.in.h:431
+msgid "Meta is mapped to Left Win"
+msgstr ""
+
+#: ../rules/base.xml.in.h:432 ../rules/evdev.xml.in.h:432
+msgid "Meta is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:433 ../rules/evdev.xml.in.h:433
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:434 ../rules/evdev.xml.in.h:434
+msgid "Microsoft Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:435 ../rules/evdev.xml.in.h:435
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr ""
+
+#: ../rules/base.xml.in.h:436 ../rules/evdev.xml.in.h:436
+msgid "Microsoft Natural"
+msgstr ""
+
+#: ../rules/base.xml.in.h:437 ../rules/evdev.xml.in.h:437
+msgid "Microsoft Natural Keyboard Elite"
+msgstr ""
+
+#: ../rules/base.xml.in.h:438 ../rules/evdev.xml.in.h:438
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:439 ../rules/evdev.xml.in.h:439
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr ""
+
+#: ../rules/base.xml.in.h:440 ../rules/evdev.xml.in.h:440
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:441 ../rules/evdev.xml.in.h:441
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:442 ../rules/evdev.xml.in.h:442
+msgid "Microsoft Office Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:443 ../rules/evdev.xml.in.h:443
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr ""
+
+#: ../rules/base.xml.in.h:444 ../rules/evdev.xml.in.h:444
+msgid "Miscellaneous compatibility options"
+msgstr ""
+
+#: ../rules/base.xml.in.h:445 ../rules/evdev.xml.in.h:445
+msgid "Mkd"
+msgstr ""
+
+#: ../rules/base.xml.in.h:446 ../rules/evdev.xml.in.h:446
+msgid "Mlt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:447 ../rules/evdev.xml.in.h:447
+msgid "Mmr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:448 ../rules/evdev.xml.in.h:448
+msgid "Mng"
+msgstr ""
+
+#: ../rules/base.xml.in.h:449 ../rules/evdev.xml.in.h:449
+msgid "Mongolia"
+msgstr ""
+
+#: ../rules/base.xml.in.h:450 ../rules/evdev.xml.in.h:450
+msgid "Montenegro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:451 ../rules/evdev.xml.in.h:451
+msgid "Morocco"
+msgstr ""
+
+#: ../rules/base.xml.in.h:452 ../rules/evdev.xml.in.h:452
+msgid "Multilingual"
+msgstr ""
+
+#: ../rules/base.xml.in.h:453 ../rules/evdev.xml.in.h:453
+msgid "Multilingual, first part"
+msgstr ""
+
+#: ../rules/base.xml.in.h:454 ../rules/evdev.xml.in.h:454
+msgid "Multilingual, second part"
+msgstr ""
+
+#: ../rules/base.xml.in.h:455 ../rules/evdev.xml.in.h:455
+msgid "Myanmar"
+msgstr ""
+
+#: ../rules/base.xml.in.h:456 ../rules/evdev.xml.in.h:456
+msgid "NICOLA-F style Backspace"
+msgstr ""
+
+#: ../rules/base.xml.in.h:457 ../rules/evdev.xml.in.h:457
+msgid "NLA"
+msgstr ""
+
+#: ../rules/base.xml.in.h:458 ../rules/evdev.xml.in.h:458
+msgid "Nativo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:459 ../rules/evdev.xml.in.h:459
+#, fuzzy
+msgid "Nativo for Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:460 ../rules/evdev.xml.in.h:460
+msgid "Nativo for USA keyboards"
+msgstr ""
+
+#: ../rules/base.xml.in.h:461 ../rules/evdev.xml.in.h:461
+msgid "Neo 2"
+msgstr ""
+
+#: ../rules/base.xml.in.h:462 ../rules/evdev.xml.in.h:462
+msgid "Nep"
+msgstr "Nep"
+
+#: ../rules/base.xml.in.h:463 ../rules/evdev.xml.in.h:463
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:464 ../rules/evdev.xml.in.h:464
+msgid "Netherlands"
+msgstr "Nederland"
+
+#: ../rules/base.xml.in.h:465 ../rules/evdev.xml.in.h:465
+msgid "Nig"
+msgstr "Nig"
+
+#: ../rules/base.xml.in.h:466 ../rules/evdev.xml.in.h:466
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: ../rules/base.xml.in.h:467 ../rules/evdev.xml.in.h:467
+msgid "Nld"
+msgstr ""
+
+#: ../rules/base.xml.in.h:468 ../rules/evdev.xml.in.h:468
+msgid "Non-breakable space character at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:469 ../rules/evdev.xml.in.h:469
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:470 ../rules/evdev.xml.in.h:470
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:471 ../rules/evdev.xml.in.h:471
+msgid "Non-breakable space character at second level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:472 ../rules/evdev.xml.in.h:472
+msgid "Non-breakable space character at third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:473 ../rules/evdev.xml.in.h:473
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:474 ../rules/evdev.xml.in.h:474
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:475 ../rules/evdev.xml.in.h:475
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:476 ../rules/evdev.xml.in.h:476
+msgid "Northern Saami"
+msgstr "Nord-samisk"
+
+#: ../rules/base.xml.in.h:477 ../rules/evdev.xml.in.h:477
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Nord-samisk, uten døde taster"
+
+#: ../rules/base.xml.in.h:478 ../rules/evdev.xml.in.h:478
+msgid "Northgate OmniKey 101"
+msgstr ""
+
+#: ../rules/base.xml.in.h:479 ../rules/evdev.xml.in.h:479
+msgid "Norway"
+msgstr "Norge"
+
+#: ../rules/base.xml.in.h:480 ../rules/evdev.xml.in.h:480
+msgid "NumLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:481 ../rules/evdev.xml.in.h:481
+msgid "Numeric keypad delete key behaviour"
+msgstr ""
+
+#: ../rules/base.xml.in.h:482 ../rules/evdev.xml.in.h:482
+msgid "Numeric keypad keys work as with Mac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:483 ../rules/evdev.xml.in.h:483
+msgid "Numeric keypad layout selection"
+msgstr ""
+
+#: ../rules/base.xml.in.h:484 ../rules/evdev.xml.in.h:484
+msgid "OADG 109A"
+msgstr ""
+
+#: ../rules/base.xml.in.h:485 ../rules/evdev.xml.in.h:485
+msgid "OLPC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:486 ../rules/evdev.xml.in.h:486
+msgid "OLPC Dari"
+msgstr ""
+
+#: ../rules/base.xml.in.h:487 ../rules/evdev.xml.in.h:487
+msgid "OLPC Pashto"
+msgstr ""
+
+#: ../rules/base.xml.in.h:488 ../rules/evdev.xml.in.h:488
+msgid "OLPC Southern Uzbek"
+msgstr ""
+
+#: ../rules/base.xml.in.h:489 ../rules/evdev.xml.in.h:489
+msgid "Ogham"
+msgstr ""
+
+#: ../rules/base.xml.in.h:490 ../rules/evdev.xml.in.h:490
+msgid "Ogham IS434"
+msgstr ""
+
+#: ../rules/base.xml.in.h:491 ../rules/evdev.xml.in.h:491
+msgid "Oriya"
+msgstr ""
+
+#: ../rules/base.xml.in.h:492 ../rules/evdev.xml.in.h:492
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:493 ../rules/evdev.xml.in.h:493
+msgid "Ossetian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:494 ../rules/evdev.xml.in.h:494
+msgid "Ossetian, Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:495 ../rules/evdev.xml.in.h:495
+msgid "Ossetian, legacy"
+msgstr ""
+
+#: ../rules/base.xml.in.h:496 ../rules/evdev.xml.in.h:496
+msgid "PC-98xx Series"
+msgstr ""
+
+#: ../rules/base.xml.in.h:497 ../rules/evdev.xml.in.h:497
+msgid "Pak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:498 ../rules/evdev.xml.in.h:498
+msgid "Pakistan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:499 ../rules/evdev.xml.in.h:499
+msgid "Pashto"
+msgstr ""
+
+#: ../rules/base.xml.in.h:500 ../rules/evdev.xml.in.h:500
+msgid "Pattachote"
+msgstr ""
+
+#: ../rules/base.xml.in.h:501 ../rules/evdev.xml.in.h:501
+msgid "Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:502 ../rules/evdev.xml.in.h:502
+msgid "Pol"
+msgstr ""
+
+#: ../rules/base.xml.in.h:503 ../rules/evdev.xml.in.h:503
+msgid "Poland"
+msgstr ""
+
+#: ../rules/base.xml.in.h:504 ../rules/evdev.xml.in.h:504
+msgid "Polytonic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:505 ../rules/evdev.xml.in.h:505
+msgid "Portugal"
+msgstr "Portugal"
+
+#: ../rules/base.xml.in.h:506 ../rules/evdev.xml.in.h:506
+msgid "Pro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:507 ../rules/evdev.xml.in.h:507
+msgid "Pro Keypad"
+msgstr ""
+
+#: ../rules/base.xml.in.h:508 ../rules/evdev.xml.in.h:508
+msgid "Probhat"
+msgstr ""
+
+#: ../rules/base.xml.in.h:509 ../rules/evdev.xml.in.h:509
+#, fuzzy
+msgid "Programmer Dvorak"
+msgstr "Fransk dvorak"
+
+#: ../rules/base.xml.in.h:510 ../rules/evdev.xml.in.h:510
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:511 ../rules/evdev.xml.in.h:511
+msgid "Prt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:512 ../rules/evdev.xml.in.h:512
+msgid "QTronix Scorpius 98N+"
+msgstr ""
+
+#: ../rules/base.xml.in.h:513 ../rules/evdev.xml.in.h:513
+msgid "Right Alt"
+msgstr "Høyre Alt"
+
+#: ../rules/base.xml.in.h:514 ../rules/evdev.xml.in.h:514
+msgid "Right Alt (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:515 ../rules/evdev.xml.in.h:515
+msgid "Right Alt key never chooses 3rd level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:516 ../rules/evdev.xml.in.h:516
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:517 ../rules/evdev.xml.in.h:517
+msgid "Right Ctrl"
+msgstr "Høyre Ctrl"
+
+#: ../rules/base.xml.in.h:518 ../rules/evdev.xml.in.h:518
+msgid "Right Ctrl (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:519 ../rules/evdev.xml.in.h:519
+msgid "Right Ctrl as Right Alt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:520 ../rules/evdev.xml.in.h:520
+msgid "Right Shift"
+msgstr "Høyre Shift"
+
+#: ../rules/base.xml.in.h:521 ../rules/evdev.xml.in.h:521
+msgid "Right Win"
+msgstr "Høyre Win"
+
+#: ../rules/base.xml.in.h:522 ../rules/evdev.xml.in.h:522
+msgid "Right Win (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:523 ../rules/evdev.xml.in.h:523
+msgid "Right hand"
+msgstr ""
+
+#: ../rules/base.xml.in.h:524 ../rules/evdev.xml.in.h:524
+msgid "Right handed Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:525 ../rules/evdev.xml.in.h:525
+msgid "Romania"
+msgstr "Romania"
+
+#: ../rules/base.xml.in.h:526 ../rules/evdev.xml.in.h:526
+msgid "Romanian keyboard with German letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:527 ../rules/evdev.xml.in.h:527
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:528 ../rules/evdev.xml.in.h:528
+msgid "Rou"
+msgstr ""
+
+#: ../rules/base.xml.in.h:529 ../rules/evdev.xml.in.h:529
+msgid "Rus"
+msgstr ""
+
+#: ../rules/base.xml.in.h:530 ../rules/evdev.xml.in.h:530
+msgid "Russia"
+msgstr "Russland"
+
+#: ../rules/base.xml.in.h:531 ../rules/evdev.xml.in.h:531
+msgid "Russian"
+msgstr "Russisk"
+
+#: ../rules/base.xml.in.h:532 ../rules/evdev.xml.in.h:532
+msgid "Russian phonetic"
+msgstr "Russisk fonetisk"
+
+#: ../rules/base.xml.in.h:533 ../rules/evdev.xml.in.h:533
+msgid "Russian phonetic Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:534 ../rules/evdev.xml.in.h:534
+msgid "Russian phonetic, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:535 ../rules/evdev.xml.in.h:535
+msgid "Russian with Kazakh"
+msgstr ""
+
+#: ../rules/base.xml.in.h:536 ../rules/evdev.xml.in.h:536
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:537 ../rules/evdev.xml.in.h:537
+msgid "SK-1300"
+msgstr ""
+
+#: ../rules/base.xml.in.h:538 ../rules/evdev.xml.in.h:538
+msgid "SK-2500"
+msgstr ""
+
+#: ../rules/base.xml.in.h:539 ../rules/evdev.xml.in.h:539
+msgid "SK-6200"
+msgstr ""
+
+#: ../rules/base.xml.in.h:540 ../rules/evdev.xml.in.h:540
+msgid "SK-7100"
+msgstr ""
+
+#: ../rules/base.xml.in.h:541 ../rules/evdev.xml.in.h:541
+msgid "SRB"
+msgstr ""
+
+#: ../rules/base.xml.in.h:542 ../rules/evdev.xml.in.h:542
+msgid "SVEN Ergonomic 2500"
+msgstr ""
+
+#: ../rules/base.xml.in.h:543 ../rules/evdev.xml.in.h:543
+msgid "SVEN Slim 303"
+msgstr ""
+
+#: ../rules/base.xml.in.h:544 ../rules/evdev.xml.in.h:544
+msgid "Samsung SDM 4500P"
+msgstr ""
+
+#: ../rules/base.xml.in.h:545 ../rules/evdev.xml.in.h:545
+msgid "Samsung SDM 4510P"
+msgstr ""
+
+#: ../rules/base.xml.in.h:546 ../rules/evdev.xml.in.h:546
+msgid "ScrollLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:547 ../rules/evdev.xml.in.h:547
+msgid "Secwepemctsin"
+msgstr ""
+
+#: ../rules/base.xml.in.h:548 ../rules/evdev.xml.in.h:548
+msgid "Semi-colon on third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:549 ../rules/evdev.xml.in.h:549
+msgid "Serbia"
+msgstr "Serbia"
+
+#: ../rules/base.xml.in.h:550 ../rules/evdev.xml.in.h:550
+msgid "Shift cancels CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:551 ../rules/evdev.xml.in.h:551
+msgid "Shift does not cancel NumLock, chooses 3d level instead"
+msgstr ""
+
+#: ../rules/base.xml.in.h:552 ../rules/evdev.xml.in.h:552
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr ""
+
+#: ../rules/base.xml.in.h:553 ../rules/evdev.xml.in.h:553
+msgid "Shift+CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:554 ../rules/evdev.xml.in.h:554
+msgid "Simple"
+msgstr ""
+
+#: ../rules/base.xml.in.h:555 ../rules/evdev.xml.in.h:555
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: ../rules/base.xml.in.h:556 ../rules/evdev.xml.in.h:556
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: ../rules/base.xml.in.h:557 ../rules/evdev.xml.in.h:557
+msgid "South Africa"
+msgstr "Sør-Afrika"
+
+#: ../rules/base.xml.in.h:558 ../rules/evdev.xml.in.h:558
+msgid "Southern Uzbek"
+msgstr ""
+
+#: ../rules/base.xml.in.h:559 ../rules/evdev.xml.in.h:559
+msgid "Spain"
+msgstr "Spania"
+
+#: ../rules/base.xml.in.h:560 ../rules/evdev.xml.in.h:560
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr ""
+
+#: ../rules/base.xml.in.h:561 ../rules/evdev.xml.in.h:561
+msgid "SrL"
+msgstr ""
+
+#: ../rules/base.xml.in.h:562 ../rules/evdev.xml.in.h:562
+msgid "Sri Lanka"
+msgstr ""
+
+#: ../rules/base.xml.in.h:563 ../rules/evdev.xml.in.h:563
+msgid "Standard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:564 ../rules/evdev.xml.in.h:564
+msgid "Standard (Cedilla)"
+msgstr ""
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:566 ../rules/evdev.xml.in.h:566
+msgid "Standard RSTU"
+msgstr ""
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:568 ../rules/evdev.xml.in.h:568
+msgid "Standard RSTU on Russian layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:569 ../rules/evdev.xml.in.h:569
+msgid "Sun Type 5/6"
+msgstr ""
+
+#: ../rules/base.xml.in.h:570 ../rules/evdev.xml.in.h:570
+msgid "Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:571 ../rules/evdev.xml.in.h:571
+msgid "Super Power Multimedia Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:572 ../rules/evdev.xml.in.h:572
+msgid "Super is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:573 ../rules/evdev.xml.in.h:573
+msgid "Svdvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:574 ../rules/evdev.xml.in.h:574
+msgid "Svk"
+msgstr ""
+
+#: ../rules/base.xml.in.h:575 ../rules/evdev.xml.in.h:575
+msgid "Svn"
+msgstr ""
+
+#: ../rules/base.xml.in.h:576 ../rules/evdev.xml.in.h:576
+msgid "Swap Ctrl and CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:577 ../rules/evdev.xml.in.h:577
+msgid "Swap ESC and CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:578 ../rules/evdev.xml.in.h:578
+msgid "Swe"
+msgstr ""
+
+#: ../rules/base.xml.in.h:579 ../rules/evdev.xml.in.h:579
+msgid "Sweden"
+msgstr ""
+
+#: ../rules/base.xml.in.h:580 ../rules/evdev.xml.in.h:580
+msgid "Switzerland"
+msgstr ""
+
+#: ../rules/base.xml.in.h:581 ../rules/evdev.xml.in.h:581
+msgid "Symplon PaceBook (tablet PC)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:582 ../rules/evdev.xml.in.h:582
+msgid "Syr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:583 ../rules/evdev.xml.in.h:583
+msgid "Syria"
+msgstr ""
+
+#: ../rules/base.xml.in.h:584 ../rules/evdev.xml.in.h:584
+msgid "Syriac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:585 ../rules/evdev.xml.in.h:585
+msgid "Syriac phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:586 ../rules/evdev.xml.in.h:586
+msgid "TIS-820.2538"
+msgstr ""
+
+#: ../rules/base.xml.in.h:587 ../rules/evdev.xml.in.h:587
+msgid "Tajikistan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:588 ../rules/evdev.xml.in.h:588
+msgid "Tamil"
+msgstr ""
+
+#: ../rules/base.xml.in.h:589 ../rules/evdev.xml.in.h:589
+msgid "Tamil TAB Typewriter"
+msgstr ""
+
+#: ../rules/base.xml.in.h:590 ../rules/evdev.xml.in.h:590
+msgid "Tamil TSCII Typewriter"
+msgstr ""
+
+#: ../rules/base.xml.in.h:591 ../rules/evdev.xml.in.h:591
+msgid "Tamil Unicode"
+msgstr ""
+
+#: ../rules/base.xml.in.h:592 ../rules/evdev.xml.in.h:592
+msgid "Targa Visionary 811"
+msgstr ""
+
+#: ../rules/base.xml.in.h:593 ../rules/evdev.xml.in.h:593
+msgid "Tatar"
+msgstr ""
+
+#: ../rules/base.xml.in.h:594 ../rules/evdev.xml.in.h:594
+msgid "Telugu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:595 ../rules/evdev.xml.in.h:595
+msgid "Tha"
+msgstr ""
+
+#: ../rules/base.xml.in.h:596 ../rules/evdev.xml.in.h:596
+msgid "Thailand"
+msgstr ""
+
+#: ../rules/base.xml.in.h:597 ../rules/evdev.xml.in.h:597
+msgid "Tibetan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:598 ../rules/evdev.xml.in.h:598
+msgid "Tibetan (with ASCII numerals)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:599 ../rules/evdev.xml.in.h:599
+msgid "Tifinagh"
+msgstr ""
+
+#: ../rules/base.xml.in.h:600 ../rules/evdev.xml.in.h:600
+msgid "Tifinagh Alternative"
+msgstr ""
+
+#: ../rules/base.xml.in.h:601 ../rules/evdev.xml.in.h:601
+msgid "Tifinagh Alternative Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:602 ../rules/evdev.xml.in.h:602
+msgid "Tifinagh Extended"
+msgstr ""
+
+#: ../rules/base.xml.in.h:603 ../rules/evdev.xml.in.h:603
+msgid "Tifinagh Extended Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:604 ../rules/evdev.xml.in.h:604
+msgid "Tifinagh Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:605 ../rules/evdev.xml.in.h:605
+msgid "Tilde (~) variant"
+msgstr ""
+
+#: ../rules/base.xml.in.h:606 ../rules/evdev.xml.in.h:606
+msgid "Tjk"
+msgstr ""
+
+#: ../rules/base.xml.in.h:607 ../rules/evdev.xml.in.h:607
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr ""
+
+#: ../rules/base.xml.in.h:608 ../rules/evdev.xml.in.h:608
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr ""
+
+#: ../rules/base.xml.in.h:609 ../rules/evdev.xml.in.h:609
+msgid "Toshiba Satellite S3000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:610 ../rules/evdev.xml.in.h:610
+msgid "Trust Direct Access Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:611 ../rules/evdev.xml.in.h:611
+msgid "Trust Wireless Keyboard Classic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:612 ../rules/evdev.xml.in.h:612
+msgid "Tur"
+msgstr ""
+
+#: ../rules/base.xml.in.h:613 ../rules/evdev.xml.in.h:613
+msgid "Turkey"
+msgstr ""
+
+#: ../rules/base.xml.in.h:614 ../rules/evdev.xml.in.h:614
+msgid "Typewriter"
+msgstr ""
+
+#: ../rules/base.xml.in.h:615 ../rules/evdev.xml.in.h:615
+msgid "UCW layout (accented letters only)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:616 ../rules/evdev.xml.in.h:616
+msgid "US keyboard with Bosnian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:617 ../rules/evdev.xml.in.h:617
+msgid "US keyboard with Bosnian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:618 ../rules/evdev.xml.in.h:618
+msgid "US keyboard with Croatian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:619 ../rules/evdev.xml.in.h:619
+msgid "US keyboard with Croatian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:620 ../rules/evdev.xml.in.h:620
+msgid "US keyboard with Estonian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:621 ../rules/evdev.xml.in.h:621
+msgid "US keyboard with Lithuanian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:622 ../rules/evdev.xml.in.h:622
+msgid "US keyboard with Slovenian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:623 ../rules/evdev.xml.in.h:623
+msgid "US keyboard with Slovenian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:624 ../rules/evdev.xml.in.h:624
+msgid "USA"
+msgstr ""
+
+#: ../rules/base.xml.in.h:625 ../rules/evdev.xml.in.h:625
+msgid "Udmurt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:626 ../rules/evdev.xml.in.h:626
+msgid "Ukr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:627 ../rules/evdev.xml.in.h:627
+msgid "Ukraine"
+msgstr ""
+
+#: ../rules/base.xml.in.h:628 ../rules/evdev.xml.in.h:628
+msgid "Unicode"
+msgstr ""
+
+#: ../rules/base.xml.in.h:629 ../rules/evdev.xml.in.h:629
+msgid "Unicode additions (arrows and math operators)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:630 ../rules/evdev.xml.in.h:630
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:631 ../rules/evdev.xml.in.h:631
+msgid "UnicodeExpert"
+msgstr ""
+
+#: ../rules/base.xml.in.h:632 ../rules/evdev.xml.in.h:632
+msgid "United Kingdom"
+msgstr ""
+
+#: ../rules/base.xml.in.h:633 ../rules/evdev.xml.in.h:633
+msgid "Unitek KB-1925"
+msgstr ""
+
+#: ../rules/base.xml.in.h:634 ../rules/evdev.xml.in.h:634
+#, fuzzy
+msgid "Urdu, Alternative phonetic"
+msgstr "Alternativ fonetisk"
+
+#: ../rules/base.xml.in.h:635 ../rules/evdev.xml.in.h:635
+msgid "Urdu, Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:636 ../rules/evdev.xml.in.h:636
+msgid "Urdu, Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:637 ../rules/evdev.xml.in.h:637
+msgid "Use Bosnian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:638 ../rules/evdev.xml.in.h:638
+msgid "Use Croatian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:639 ../rules/evdev.xml.in.h:639
+msgid "Use Slovenian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:640 ../rules/evdev.xml.in.h:640
+msgid "Use guillemets for quotes"
+msgstr ""
+
+#: ../rules/base.xml.in.h:641 ../rules/evdev.xml.in.h:641
+msgid "Use keyboard LED to show alternative layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:642 ../rules/evdev.xml.in.h:642
+msgid "Using space key to input non-breakable space character"
+msgstr ""
+
+#: ../rules/base.xml.in.h:643 ../rules/evdev.xml.in.h:643
+msgid "Usual space at any level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:644 ../rules/evdev.xml.in.h:644
+msgid "Uzb"
+msgstr ""
+
+#: ../rules/base.xml.in.h:645 ../rules/evdev.xml.in.h:645
+msgid "Uzbekistan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:646 ../rules/evdev.xml.in.h:646
+msgid "Vietnam"
+msgstr ""
+
+#: ../rules/base.xml.in.h:647 ../rules/evdev.xml.in.h:647
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:648 ../rules/evdev.xml.in.h:648
+msgid "Vnm"
+msgstr ""
+
+#: ../rules/base.xml.in.h:649 ../rules/evdev.xml.in.h:649
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:650 ../rules/evdev.xml.in.h:650
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:651 ../rules/evdev.xml.in.h:651
+msgid "Wang model 724 azerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:652 ../rules/evdev.xml.in.h:652
+msgid "Western"
+msgstr ""
+
+#: ../rules/base.xml.in.h:653 ../rules/evdev.xml.in.h:653
+msgid "Winbook Model XP5"
+msgstr ""
+
+#: ../rules/base.xml.in.h:654 ../rules/evdev.xml.in.h:654
+msgid "Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:655 ../rules/evdev.xml.in.h:655
+msgid "With &lt;\\|&gt; key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:656 ../rules/evdev.xml.in.h:656
+msgid "With EuroSign on 5"
+msgstr ""
+
+#: ../rules/base.xml.in.h:657 ../rules/evdev.xml.in.h:657
+msgid "With guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:658 ../rules/evdev.xml.in.h:658
+msgid "Yahoo! Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:659 ../rules/evdev.xml.in.h:659
+msgid "Yakut"
+msgstr ""
+
+#: ../rules/base.xml.in.h:660 ../rules/evdev.xml.in.h:660
+msgid "Yoruba"
+msgstr ""
+
+#: ../rules/base.xml.in.h:661 ../rules/evdev.xml.in.h:661
+msgid "Z and ZHE swapped"
+msgstr ""
+
+#: ../rules/base.xml.in.h:662 ../rules/evdev.xml.in.h:662
+msgid "Zar"
+msgstr ""
+
+#: ../rules/base.xml.in.h:663 ../rules/evdev.xml.in.h:663
+msgid "azerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:664 ../rules/evdev.xml.in.h:664
+msgid "azerty/digits"
+msgstr ""
+
+#: ../rules/base.xml.in.h:665 ../rules/evdev.xml.in.h:665
+msgid "digits"
+msgstr ""
+
+#: ../rules/base.xml.in.h:666 ../rules/evdev.xml.in.h:666
+msgid "displaced semicolon and quote (obsolete)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:667 ../rules/evdev.xml.in.h:667
+msgid "lyx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:668 ../rules/evdev.xml.in.h:668
+msgid "qwerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:669 ../rules/evdev.xml.in.h:669
+msgid "qwerty, extended Backslash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:670 ../rules/evdev.xml.in.h:670
+msgid "qwerty/digits"
+msgstr ""
+
+#: ../rules/base.xml.in.h:671 ../rules/evdev.xml.in.h:671
+msgid "qwertz"
+msgstr ""
diff --git a/xorg-server/xkeyboard-config/po/rw.po b/xorg-server/xkeyboard-config/po/rw.po
index 935d6c33e..e2c25df90 100644
--- a/xorg-server/xkeyboard-config/po/rw.po
+++ b/xorg-server/xkeyboard-config/po/rw.po
@@ -1,1827 +1,1827 @@
-# Kinyarwanda translations for xkeyboard-config package.
-# Copyright (C) 2005 Free Software Foundation, Inc.
-# This file is distributed under the same license as the xkeyboard-config package.
-# Steve Murphy <murf@e-tools.com>, 2005.
-# Steve performed initial rough translation from compendium built from translations provided by the following translators:
-# Philibert Ndandali <ndandali@yahoo.fr>, 2005.
-# Viateur MUGENZI <muvia1@yahoo.fr>, 2005.
-# Noëlla Mupole <s24211045@tuks.co.za>, 2005.
-# Carole Karema <karemacarole@hotmail.com>, 2005.
-# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005.
-# Augustin KIBERWA <akiberwa@yahoo.co.uk>, 2005.
-# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005.
-# Antoine Bigirimana <antoine@e-tools.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 0.5\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-01-24 22:57+0000\n"
-"PO-Revision-Date: 2005-04-04 10:55-0700\n"
-"Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
-"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# sc/source\ui\src\scstring.src:SCSTR_STDFILTER.text
-#: rules/base.xml.in.h:1
-#, fuzzy
-msgid "\"Standard\""
-msgstr "\"Bisanzwe-"
-
-#: rules/base.xml.in.h:2
-msgid "\"Typewriter\""
-msgstr ""
-
-#: rules/base.xml.in.h:3
-msgid "(F)"
-msgstr ""
-
-#: rules/base.xml.in.h:4
-#, fuzzy
-msgid "101/qwerty/comma/Dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:5
-#, fuzzy
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:6
-#, fuzzy
-msgid "101/qwerty/dot/Dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:7
-#, fuzzy
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:8
-#, fuzzy
-msgid "101/qwertz/comma/Dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:9
-#, fuzzy
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:10
-#, fuzzy
-msgid "101/qwertz/dot/Dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:11
-#, fuzzy
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:12
-#, fuzzy
-msgid "102/qwerty/comma/Dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:13
-#, fuzzy
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:14
-#, fuzzy
-msgid "102/qwerty/dot/Dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:15
-#, fuzzy
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:16
-#, fuzzy
-msgid "102/qwertz/comma/Dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:17
-#, fuzzy
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:18
-#, fuzzy
-msgid "102/qwertz/dot/Dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:19
-#, fuzzy
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:20
-#, fuzzy
-msgid "A4Tech KB-21"
-msgstr "21"
-
-#: rules/base.xml.in.h:21
-#, fuzzy
-msgid "A4Tech KBS-8"
-msgstr "8"
-
-#: rules/base.xml.in.h:22
-msgid "ACPI Standard"
-msgstr ""
-
-#: rules/base.xml.in.h:23
-#, fuzzy
-msgid "Acer AirKey V"
-msgstr "V"
-
-#: rules/base.xml.in.h:24
-#, fuzzy
-msgid "Add the EuroSign to the 2 key."
-msgstr "i Kuri i 2. Urufunguzo"
-
-#: rules/base.xml.in.h:25
-#, fuzzy
-msgid "Add the EuroSign to the 5 key."
-msgstr "i Kuri i 5 Urufunguzo"
-
-#: rules/base.xml.in.h:26
-#, fuzzy
-msgid "Add the EuroSign to the E key."
-msgstr "i Kuri i E Urufunguzo"
-
-#: rules/base.xml.in.h:27
-#, fuzzy
-msgid "Add the standard behavior to Menu key."
-msgstr "i Bisanzwe imyitwarire Kuri Urufunguzo"
-
-#: rules/base.xml.in.h:28
-#, fuzzy
-msgid "Adding the EuroSign to certain keys"
-msgstr "i Kuri Utubuto"
-
-#: rules/base.xml.in.h:29
-msgid "Advance Scorpius KI"
-msgstr ""
-
-#: rules/base.xml.in.h:30
-msgid "Alb"
-msgstr ""
-
-#: rules/base.xml.in.h:31
-msgid "Albania"
-msgstr "Alubaniya"
-
-#: rules/base.xml.in.h:32
-#, fuzzy
-msgid "Alt and Meta are on the Alt keys (default)."
-msgstr "Na ku i Utubuto Mburabuzi"
-
-#: rules/base.xml.in.h:33
-#, fuzzy
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "ni Kuri i Iburyo: Urufunguzo Na Kuri"
-
-#: rules/base.xml.in.h:34
-#, fuzzy
-msgid "Alt+Control changes group."
-msgstr "Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:35
-#, fuzzy
-msgid "Alt+Shift changes group."
-msgstr "Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:36
-msgid "Alt-Q"
-msgstr ""
-
-#: rules/base.xml.in.h:37
-#, fuzzy
-msgid "Alt/Win key behavior"
-msgstr "Urufunguzo imyitwarire"
-
-#: rules/base.xml.in.h:38
-msgid "Alternative"
-msgstr ""
-
-#: rules/base.xml.in.h:39
-#, fuzzy
-msgid "Alternative international (former us_intl)"
-msgstr "Mpuzamahanga"
-
-#: rules/base.xml.in.h:40
-#, fuzzy
-msgid "Alternative, Sun dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:41
-#, fuzzy
-msgid "Alternative, eliminate dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:42
-msgid "Apostrophe (') variant"
-msgstr ""
-
-#: rules/base.xml.in.h:43
-msgid "Ara"
-msgstr ""
-
-#: rules/base.xml.in.h:44
-msgid "Arabic"
-msgstr "Icyarabu"
-
-#: rules/base.xml.in.h:45
-msgid "Arm"
-msgstr ""
-
-#: rules/base.xml.in.h:46
-msgid "Armenia"
-msgstr "Arumeniya"
-
-#: rules/base.xml.in.h:47
-msgid "Aze"
-msgstr ""
-
-#: rules/base.xml.in.h:48
-msgid "Azerbaijan"
-msgstr "Azeribayijani"
-
-#: rules/base.xml.in.h:49
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:50
-msgid "BTC 5090"
-msgstr ""
-
-#: rules/base.xml.in.h:51
-msgid "BTC 5113RF Multimedia"
-msgstr ""
-
-#: rules/base.xml.in.h:52
-msgid "BTC 5126T"
-msgstr ""
-
-#: rules/base.xml.in.h:53
-msgid "BTC 9000"
-msgstr ""
-
-#: rules/base.xml.in.h:54
-msgid "BTC 9000A"
-msgstr ""
-
-#: rules/base.xml.in.h:55
-msgid "BTC 9001AH"
-msgstr ""
-
-#: rules/base.xml.in.h:56
-msgid "Bel"
-msgstr ""
-
-#: rules/base.xml.in.h:57
-msgid "Belarus"
-msgstr "Belarusi"
-
-#: rules/base.xml.in.h:58
-msgid "Belgium"
-msgstr "Ububiligi"
-
-#: rules/base.xml.in.h:59
-msgid "Ben"
-msgstr ""
-
-#: rules/base.xml.in.h:60
-msgid "Bengali"
-msgstr "Bengali"
-
-#: rules/base.xml.in.h:61
-msgid "Bgr"
-msgstr ""
-
-#: rules/base.xml.in.h:62
-msgid "Bih"
-msgstr ""
-
-#: rules/base.xml.in.h:63
-msgid "Blr"
-msgstr ""
-
-#: rules/base.xml.in.h:64
-msgid "Bosnia and Herzegovina"
-msgstr "Bosiniya na Herizegovina"
-
-#: rules/base.xml.in.h:65
-#, fuzzy
-msgid "Both Alt keys together change group."
-msgstr "Utubuto Guhindura>> Itsinda"
-
-#: rules/base.xml.in.h:66
-#, fuzzy
-msgid "Both Ctrl keys together change group."
-msgstr "Utubuto Guhindura>> Itsinda"
-
-#: rules/base.xml.in.h:67
-#, fuzzy
-msgid "Both Shift keys together change group."
-msgstr "Utubuto Guhindura>> Itsinda"
-
-#: rules/base.xml.in.h:68
-#, fuzzy
-msgid "Both Win-keys switch group while pressed."
-msgstr "Utubuto Hindura Itsinda"
-
-#: rules/base.xml.in.h:69
-msgid "Bra"
-msgstr ""
-
-#: rules/base.xml.in.h:70
-msgid "Brazil"
-msgstr "Burezile"
-
-#: rules/base.xml.in.h:71
-msgid "Brazilian ABNT2"
-msgstr ""
-
-#: rules/base.xml.in.h:72
-msgid "Brother Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:73
-msgid "Bulgaria"
-msgstr "Buligariya"
-
-#: rules/base.xml.in.h:74
-msgid "Can"
-msgstr ""
-
-#: rules/base.xml.in.h:75
-msgid "Canada"
-msgstr "Kanada"
-
-#: rules/base.xml.in.h:76
-#, fuzzy
-msgid "CapsLock LED shows alternative group."
-msgstr "Itsinda"
-
-#: rules/base.xml.in.h:77
-#, fuzzy
-msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
-msgstr "Nka Na:"
-
-#: rules/base.xml.in.h:78
-#, fuzzy
-msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
-msgstr "Nka Na: Kureka"
-
-#: rules/base.xml.in.h:79
-#, fuzzy
-msgid "CapsLock just locks the Shift modifier."
-msgstr "i"
-
-#: rules/base.xml.in.h:80
-#, fuzzy
-msgid "CapsLock key behavior"
-msgstr "Urufunguzo imyitwarire"
-
-#: rules/base.xml.in.h:81
-#, fuzzy
-msgid "CapsLock key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:82
-#, fuzzy
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "Byose Utubuto"
-
-#: rules/base.xml.in.h:83
-#, fuzzy
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "Bisanzwe Bya Inyuguti"
-
-#: rules/base.xml.in.h:84
-#, fuzzy
-msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
-msgstr "By'imbere"
-
-#: rules/base.xml.in.h:85
-#, fuzzy
-msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
-msgstr "By'imbere Kureka"
-
-#: rules/base.xml.in.h:86
-msgid "Che"
-msgstr ""
-
-#: rules/base.xml.in.h:87
-msgid "Cherry Blue Line CyBo@rd"
-msgstr ""
-
-#: rules/base.xml.in.h:88
-#, fuzzy
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Ihitamo"
-
-#: rules/base.xml.in.h:89
-msgid "Chicony Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:90
-msgid "Chicony KB-9885"
-msgstr ""
-
-#: rules/base.xml.in.h:91
-msgid "CloGaelach"
-msgstr ""
-
-#: rules/base.xml.in.h:92
-msgid "CloGaelach Laptop"
-msgstr ""
-
-#: rules/base.xml.in.h:93
-msgid "Compaq Easy Access Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:94
-#, fuzzy
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:95
-#, fuzzy
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:96
-#, fuzzy
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "7 Utubuto"
-
-#: rules/base.xml.in.h:97
-msgid "Compaq iPaq Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:98
-msgid "Control Key Position"
-msgstr ""
-
-#: rules/base.xml.in.h:99
-#, fuzzy
-msgid "Control key at bottom left"
-msgstr "Urufunguzo ku Hasi: Ibumoso:"
-
-#: rules/base.xml.in.h:100
-#, fuzzy
-msgid "Control key at left of 'A'"
-msgstr "Urufunguzo ku Ibumoso: Bya"
-
-#: rules/base.xml.in.h:101
-#, fuzzy
-msgid "Control+Shift changes group."
-msgstr "Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:102
-msgid "Croatia"
-msgstr "Korowatiya"
-
-#: rules/base.xml.in.h:103
-msgid "Cyrillic"
-msgstr "Nyasilike"
-
-#: rules/base.xml.in.h:104
-msgid "Cze"
-msgstr ""
-
-#: rules/base.xml.in.h:105
-msgid "Czechia"
-msgstr ""
-
-#: rules/base.xml.in.h:106
-msgid "DTK2000"
-msgstr ""
-
-#: rules/base.xml.in.h:107
-msgid "Dead acute"
-msgstr ""
-
-#: rules/base.xml.in.h:108
-msgid "Dead grave acute"
-msgstr ""
-
-#: rules/base.xml.in.h:109
-msgid "Dell"
-msgstr ""
-
-#: rules/base.xml.in.h:110
-#, fuzzy
-msgid "Dell 101-key PC"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:111
-msgid "Denmark"
-msgstr "Danimarike"
-
-#: rules/base.xml.in.h:112
-msgid "Deu"
-msgstr ""
-
-#: rules/base.xml.in.h:113
-msgid "Deva"
-msgstr ""
-
-#: rules/base.xml.in.h:114
-msgid "Devanagari"
-msgstr "Devanagari"
-
-#: rules/base.xml.in.h:115
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:116
-#, fuzzy
-msgid "Diamond 9801 / 9802 series"
-msgstr "Ibyiciro"
-
-#: rules/base.xml.in.h:117
-msgid "Dnk"
-msgstr ""
-
-#: rules/base.xml.in.h:118
-msgid "Dvorak"
-msgstr ""
-
-#: rules/base.xml.in.h:119
-#, fuzzy
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "ku Urufunguzo 1."
-
-#: rules/base.xml.in.h:120
-#, fuzzy
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "ku Urufunguzo"
-
-#: rules/base.xml.in.h:121
-msgid "Dzo"
-msgstr ""
-
-#: rules/base.xml.in.h:122
-msgid "Dzongkha"
-msgstr "Ikinyazongika"
-
-#: rules/base.xml.in.h:123
-#, fuzzy
-msgid "Eliminate dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:124
-msgid "Ennyah DKB-1008"
-msgstr ""
-
-#: rules/base.xml.in.h:125
-msgid "Esp"
-msgstr ""
-
-#: rules/base.xml.in.h:126
-msgid "Est"
-msgstr ""
-
-#: rules/base.xml.in.h:127
-msgid "Estonia"
-msgstr "Esitoniya"
-
-#: rules/base.xml.in.h:128
-msgid "Everex STEPnote"
-msgstr ""
-
-#: rules/base.xml.in.h:129
-msgid "Extended"
-msgstr "cya/byagutse"
-
-#: rules/base.xml.in.h:130
-msgid "Extended Backslash"
-msgstr ""
-
-#: rules/base.xml.in.h:131
-#, fuzzy
-msgid "F-letter (F) variant"
-msgstr "Ibaruwa..."
-
-#: rules/base.xml.in.h:132
-msgid "Fao"
-msgstr ""
-
-#: rules/base.xml.in.h:133
-msgid "Faroe Islands"
-msgstr "Ibirwa bya Farowe"
-
-#: rules/base.xml.in.h:134
-msgid "Fin"
-msgstr ""
-
-#: rules/base.xml.in.h:135
-#, fuzzy
-msgid "Finish and Swedish"
-msgstr "Na"
-
-#: rules/base.xml.in.h:136
-msgid "Finland"
-msgstr "Finilande"
-
-#: rules/base.xml.in.h:137
-msgid "Fra"
-msgstr ""
-
-#: rules/base.xml.in.h:138
-msgid "France"
-msgstr "Ubufaransa"
-
-#: rules/base.xml.in.h:139
-msgid "French"
-msgstr "Igifaransa"
-
-#: rules/base.xml.in.h:140
-msgid "French (legacy)"
-msgstr ""
-
-#: rules/base.xml.in.h:141
-msgid "French Dvorak"
-msgstr ""
-
-#: rules/base.xml.in.h:142
-#, fuzzy
-msgid "French, Sun dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:143
-#, fuzzy
-msgid "French, eliminate dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:144
-msgid "GBr"
-msgstr ""
-
-#: rules/base.xml.in.h:145
-#, fuzzy
-msgid "Generic 101-key PC"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:146
-#, fuzzy
-msgid "Generic 102-key (Intl) PC"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:147
-#, fuzzy
-msgid "Generic 104-key PC"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:148
-#, fuzzy
-msgid "Generic 105-key (Intl) PC"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:149
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr ""
-
-#: rules/base.xml.in.h:150
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr ""
-
-#: rules/base.xml.in.h:151
-msgid "Geo"
-msgstr ""
-
-#: rules/base.xml.in.h:152
-msgid "Georgia"
-msgstr "Geworigiya"
-
-#: rules/base.xml.in.h:153
-#, fuzzy
-msgid "German, Sun dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:154
-#, fuzzy
-msgid "German, eliminate dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:155
-msgid "Germany"
-msgstr "Ubudage"
-
-#: rules/base.xml.in.h:156
-msgid "Gre"
-msgstr ""
-
-#: rules/base.xml.in.h:157
-msgid "Greece"
-msgstr "Ikigereki"
-
-#: rules/base.xml.in.h:158
-#, fuzzy
-msgid "Group Shift/Lock behavior"
-msgstr "imyitwarire"
-
-#: rules/base.xml.in.h:159
-msgid "Guj"
-msgstr ""
-
-#: rules/base.xml.in.h:160
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: rules/base.xml.in.h:161
-msgid "Gurmukhi"
-msgstr "Gurumuki"
-
-#: rules/base.xml.in.h:162
-msgid "Guru"
-msgstr ""
-
-#: rules/base.xml.in.h:163
-msgid "Gyration"
-msgstr ""
-
-#: rules/base.xml.in.h:164
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:165
-#, fuzzy
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "500"
-
-#: rules/base.xml.in.h:166
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr ""
-
-#: rules/base.xml.in.h:167
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr ""
-
-#: rules/base.xml.in.h:168
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr ""
-
-#: rules/base.xml.in.h:169
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr ""
-
-#: rules/base.xml.in.h:170
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr ""
-
-#: rules/base.xml.in.h:171
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr ""
-
-#: rules/base.xml.in.h:172
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:173
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:174
-msgid "Honeywell Euroboard"
-msgstr ""
-
-#: rules/base.xml.in.h:175
-msgid "Hrv"
-msgstr ""
-
-#: rules/base.xml.in.h:176
-msgid "Hun"
-msgstr ""
-
-#: rules/base.xml.in.h:177
-msgid "Hungary"
-msgstr "Hongiriya"
-
-#: rules/base.xml.in.h:178
-#, fuzzy
-msgid "Hyper is mapped to the Win-keys."
-msgstr "ni Kuri i Utubuto"
-
-#: rules/base.xml.in.h:179
-msgid "IBM Rapid Access"
-msgstr ""
-
-#: rules/base.xml.in.h:180
-msgid "IBM Rapid Access II"
-msgstr ""
-
-#: rules/base.xml.in.h:181
-#, fuzzy
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "Ihitamo"
-
-#: rules/base.xml.in.h:182
-#, fuzzy
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "600"
-
-#: rules/base.xml.in.h:183
-#, fuzzy
-msgid "INSCRIPT layout"
-msgstr "Imigaragarire"
-
-#: rules/base.xml.in.h:184
-msgid "IS434"
-msgstr ""
-
-#: rules/base.xml.in.h:185
-msgid "IS434 laptop"
-msgstr ""
-
-#: rules/base.xml.in.h:186
-msgid "ISO Alternate"
-msgstr ""
-
-#: rules/base.xml.in.h:187
-msgid "Iceland"
-msgstr "Isilande"
-
-#: rules/base.xml.in.h:188
-msgid "Iku"
-msgstr ""
-
-#: rules/base.xml.in.h:189
-#, fuzzy
-msgid "International (with dead keys)"
-msgstr "Na: Utubuto"
-
-#: rules/base.xml.in.h:190
-msgid "Inuktitut"
-msgstr "Ikinukititutu"
-
-#: rules/base.xml.in.h:191
-msgid "Iran"
-msgstr ""
-
-#: rules/base.xml.in.h:192
-msgid "Ireland"
-msgstr "Irilande"
-
-#: rules/base.xml.in.h:193
-msgid "Irl"
-msgstr ""
-
-#: rules/base.xml.in.h:194
-msgid "Irn"
-msgstr ""
-
-#: rules/base.xml.in.h:195
-msgid "Isl"
-msgstr ""
-
-#: rules/base.xml.in.h:196
-msgid "Isr"
-msgstr ""
-
-#: rules/base.xml.in.h:197
-msgid "Israel"
-msgstr "Isirayeli"
-
-#: rules/base.xml.in.h:198
-msgid "Ita"
-msgstr ""
-
-#: rules/base.xml.in.h:199
-msgid "Italy"
-msgstr "Ubutariyani"
-
-#: rules/base.xml.in.h:200
-msgid "Japan"
-msgstr "Ubuyapani"
-
-#: rules/base.xml.in.h:201
-#, fuzzy
-msgid "Japanese 106-key"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:202
-msgid "Jpn"
-msgstr ""
-
-#: rules/base.xml.in.h:203
-msgid "Kan"
-msgstr ""
-
-#: rules/base.xml.in.h:204
-msgid "Kannada"
-msgstr "Kannada"
-
-#: rules/base.xml.in.h:205
-msgid "Keytronic FlexPro"
-msgstr ""
-
-#: rules/base.xml.in.h:206
-msgid "Kyr"
-msgstr ""
-
-#: rules/base.xml.in.h:207
-msgid "Kyrgyzstan"
-msgstr "Kirigizasitani"
-
-#: rules/base.xml.in.h:208
-msgid "LAm"
-msgstr ""
-
-#: rules/base.xml.in.h:209
-msgid "Lao"
-msgstr "Lawo"
-
-#: rules/base.xml.in.h:210
-msgid "Laos"
-msgstr ""
-
-#: rules/base.xml.in.h:211
-msgid "Laptop"
-msgstr ""
-
-#: rules/base.xml.in.h:212
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:213
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:214
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr ""
-
-#: rules/base.xml.in.h:215
-msgid "Latin"
-msgstr "Ikiratini"
-
-#: rules/base.xml.in.h:216
-msgid "Latin American"
-msgstr ""
-
-#: rules/base.xml.in.h:217
-msgid "Latin Unicode"
-msgstr ""
-
-#: rules/base.xml.in.h:218
-msgid "Latin Unicode qwerty"
-msgstr ""
-
-#: rules/base.xml.in.h:219
-msgid "Latin qwerty"
-msgstr ""
-
-#: rules/base.xml.in.h:220
-#, fuzzy
-msgid "Latin with guillemots"
-msgstr "Na:"
-
-#: rules/base.xml.in.h:221
-msgid "Latvia"
-msgstr "Lativiya"
-
-#: rules/base.xml.in.h:222
-#, fuzzy
-msgid "Left Alt key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:223
-#, fuzzy
-msgid "Left Alt key switches group while pressed."
-msgstr "Urufunguzo Itsinda"
-
-#: rules/base.xml.in.h:224
-#, fuzzy
-msgid "Left Ctrl key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:225
-#, fuzzy
-msgid "Left Shift key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:226
-#, fuzzy
-msgid "Left Win-key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:227
-#, fuzzy
-msgid "Left Win-key switches group while pressed."
-msgstr "Urufunguzo Itsinda"
-
-#: rules/base.xml.in.h:228
-msgid "Lithuania"
-msgstr "Lituwaniya"
-
-#: rules/base.xml.in.h:229
-msgid "Logitech Access Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:230
-msgid "Logitech Cordless Desktop"
-msgstr ""
-
-#: rules/base.xml.in.h:231
-msgid "Logitech Cordless Desktop Navigator"
-msgstr ""
-
-#: rules/base.xml.in.h:232
-msgid "Logitech Cordless Desktop Optical"
-msgstr ""
-
-#: rules/base.xml.in.h:233
-msgid "Logitech Cordless Desktop Pro"
-msgstr ""
-
-#: rules/base.xml.in.h:234
-#, fuzzy
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Ihitamo"
-
-#: rules/base.xml.in.h:235
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr ""
-
-#: rules/base.xml.in.h:236
-msgid "Logitech Cordless Desktop iTouch"
-msgstr ""
-
-#: rules/base.xml.in.h:237
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr ""
-
-#: rules/base.xml.in.h:238
-msgid "Logitech Deluxe Access Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:239
-msgid "Logitech Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:240
-msgid "Logitech Internet Navigator Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:241
-msgid "Logitech iTouch"
-msgstr ""
-
-#: rules/base.xml.in.h:242
-#, fuzzy
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Urugero"
-
-#: rules/base.xml.in.h:243
-#, fuzzy
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Mwandikisho"
-
-#: rules/base.xml.in.h:244
-msgid "Ltu"
-msgstr ""
-
-#: rules/base.xml.in.h:245
-msgid "Lva"
-msgstr ""
-
-#: rules/base.xml.in.h:246
-msgid "Macedonian"
-msgstr "Nyamasedoniya"
-
-#: rules/base.xml.in.h:247
-msgid "Macintosh"
-msgstr "masinitoshi"
-
-#: rules/base.xml.in.h:248
-msgid "Macintosh Old"
-msgstr ""
-
-#: rules/base.xml.in.h:249
-msgid "Make CapsLock an additional Control."
-msgstr ""
-
-#: rules/base.xml.in.h:250
-msgid "Mal"
-msgstr ""
-
-#: rules/base.xml.in.h:251
-msgid "Malayalam"
-msgstr "Malayalamu"
-
-#: rules/base.xml.in.h:252
-msgid "Malta"
-msgstr "Malita"
-
-#: rules/base.xml.in.h:253
-msgid "Mao"
-msgstr ""
-
-#: rules/base.xml.in.h:254
-msgid "Maori"
-msgstr "Ikimawori"
-
-#: rules/base.xml.in.h:255
-msgid "Memorex MX1998"
-msgstr ""
-
-#: rules/base.xml.in.h:256
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:257
-msgid "Memorex MX2750"
-msgstr ""
-
-#: rules/base.xml.in.h:258
-#, fuzzy
-msgid "Menu is Compose."
-msgstr "ni"
-
-#: rules/base.xml.in.h:259
-#, fuzzy
-msgid "Menu key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:260
-#, fuzzy
-msgid "Meta is mapped to the Win-keys."
-msgstr "ni Kuri i Utubuto"
-
-#: rules/base.xml.in.h:261
-#, fuzzy
-msgid "Meta is mapped to the left Win-key."
-msgstr "ni Kuri i Ibumoso: Urufunguzo"
-
-#: rules/base.xml.in.h:262
-msgid "Microsoft Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:263
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr ""
-
-#: rules/base.xml.in.h:264
-msgid "Microsoft Natural"
-msgstr ""
-
-#: rules/base.xml.in.h:265
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: rules/base.xml.in.h:266
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr ""
-
-#: rules/base.xml.in.h:267
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: rules/base.xml.in.h:268
-msgid "Microsoft Office Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:269
-#, fuzzy
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "1."
-
-#: rules/base.xml.in.h:270
-#, fuzzy
-msgid "Miscellaneous compatibility options"
-msgstr "Bihuye neza Amahitamo"
-
-#: rules/base.xml.in.h:271
-msgid "Mkd"
-msgstr ""
-
-#: rules/base.xml.in.h:272
-msgid "Mlt"
-msgstr ""
-
-#: rules/base.xml.in.h:273
-msgid "Mmr"
-msgstr ""
-
-#: rules/base.xml.in.h:274
-msgid "Mng"
-msgstr ""
-
-#: rules/base.xml.in.h:275
-msgid "Mongolia"
-msgstr "Mongoliya"
-
-#: rules/base.xml.in.h:276
-msgid "Multilingual"
-msgstr ""
-
-#: rules/base.xml.in.h:277
-#, fuzzy
-msgid "Multilingual, second part"
-msgstr "ISEGONDA"
-
-#: rules/base.xml.in.h:278
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#: rules/base.xml.in.h:279
-msgid "Netherlands"
-msgstr "Nederilande"
-
-#: rules/base.xml.in.h:280
-msgid "Nld"
-msgstr ""
-
-#: rules/base.xml.in.h:281
-msgid "Nor"
-msgstr ""
-
-#: rules/base.xml.in.h:282
-msgid "Northern Saami"
-msgstr "Sami y'Amajyaruguru"
-
-#: rules/base.xml.in.h:283
-msgid "Northgate OmniKey 101"
-msgstr ""
-
-#: rules/base.xml.in.h:284
-msgid "Norway"
-msgstr "Noruveje"
-
-#: rules/base.xml.in.h:285
-#, fuzzy
-msgid "NumLock LED shows alternative group."
-msgstr "Itsinda"
-
-#: rules/base.xml.in.h:286
-msgid "Ogam"
-msgstr ""
-
-#: rules/base.xml.in.h:287
-msgid "Ogham"
-msgstr "Ogham"
-
-#: rules/base.xml.in.h:288
-#, fuzzy
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Mwandikisho"
-
-#: rules/base.xml.in.h:289
-msgid "Ori"
-msgstr ""
-
-#: rules/base.xml.in.h:290
-msgid "Oriya"
-msgstr "Oriya"
-
-#: rules/base.xml.in.h:291
-msgid "PC-98xx Series"
-msgstr ""
-
-#: rules/base.xml.in.h:292
-msgid "Pattachote"
-msgstr ""
-
-#: rules/base.xml.in.h:293
-#, fuzzy
-msgid "Phonetic"
-msgstr "Nyigamvugo:"
-
-#: rules/base.xml.in.h:294
-msgid "Pol"
-msgstr ""
-
-#: rules/base.xml.in.h:295
-msgid "Poland"
-msgstr "Polonye"
-
-#: rules/base.xml.in.h:296
-msgid "Polytonic"
-msgstr ""
-
-#: rules/base.xml.in.h:297
-msgid "Portugal"
-msgstr "Porutigali"
-
-#: rules/base.xml.in.h:298
-#, fuzzy
-msgid "PowerPC PS/2"
-msgstr "2."
-
-#: rules/base.xml.in.h:299
-#, fuzzy
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "Urufunguzo Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:300
-#, fuzzy
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "Urufunguzo Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:301
-#, fuzzy
-msgid "Press Menu key to choose 3rd level."
-msgstr "Urufunguzo Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:302
-#, fuzzy
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "Urufunguzo Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:303
-#, fuzzy
-msgid "Press Right Control to choose 3rd level."
-msgstr "Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:304
-#, fuzzy
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "Urufunguzo Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:305
-#, fuzzy
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "Bya Utubuto Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:306
-#, fuzzy
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "Bya Utubuto Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:307
-msgid "Probhat"
-msgstr ""
-
-#: rules/base.xml.in.h:308
-#, fuzzy
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "1000"
-
-#: rules/base.xml.in.h:309
-msgid "Prt"
-msgstr ""
-
-#: rules/base.xml.in.h:310
-msgid "QTronix Scorpius 98N+"
-msgstr ""
-
-#: rules/base.xml.in.h:311
-#, fuzzy
-msgid "R-Alt switches group while pressed."
-msgstr "Itsinda"
-
-#: rules/base.xml.in.h:312
-#, fuzzy
-msgid "Right Alt is Compose."
-msgstr "ni"
-
-#: rules/base.xml.in.h:313
-#, fuzzy
-msgid "Right Alt key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:314
-#, fuzzy
-msgid "Right Control key works as Right Alt."
-msgstr "Urufunguzo Nka"
-
-#: rules/base.xml.in.h:315
-#, fuzzy
-msgid "Right Ctrl is Compose."
-msgstr "ni"
-
-#: rules/base.xml.in.h:316
-#, fuzzy
-msgid "Right Ctrl key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:317
-#, fuzzy
-msgid "Right Ctrl key switches group while pressed."
-msgstr "Urufunguzo Itsinda"
-
-#: rules/base.xml.in.h:318
-#, fuzzy
-msgid "Right Shift key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:319
-#, fuzzy
-msgid "Right Win-key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:320
-#, fuzzy
-msgid "Right Win-key is Compose."
-msgstr "Urufunguzo ni"
-
-#: rules/base.xml.in.h:321
-#, fuzzy
-msgid "Right Win-key switches group while pressed."
-msgstr "Urufunguzo Itsinda"
-
-#: rules/base.xml.in.h:322
-msgid "Romania"
-msgstr "Romaniya"
-
-#: rules/base.xml.in.h:323
-#, fuzzy
-msgid "Romanian keyboard with German letters"
-msgstr "Mwandikisho Na:"
-
-#: rules/base.xml.in.h:324
-#, fuzzy
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Mwandikisho Na: Utubuto"
-
-#: rules/base.xml.in.h:325
-msgid "Rou"
-msgstr ""
-
-#: rules/base.xml.in.h:326
-msgid "Rus"
-msgstr ""
-
-#: rules/base.xml.in.h:327
-msgid "Russia"
-msgstr ""
-
-#: rules/base.xml.in.h:328
-msgid "Russian"
-msgstr "Ikirusiya"
-
-#: rules/base.xml.in.h:329
-msgid "SK-1300"
-msgstr ""
-
-#: rules/base.xml.in.h:330
-msgid "SK-2500"
-msgstr ""
-
-#: rules/base.xml.in.h:331
-msgid "SK-6200"
-msgstr ""
-
-#: rules/base.xml.in.h:332
-msgid "SK-7100"
-msgstr ""
-
-#: rules/base.xml.in.h:333
-msgid "SVEN Ergonomic 2500"
-msgstr ""
-
-#: rules/base.xml.in.h:334
-msgid "Samsung SDM 4500P"
-msgstr ""
-
-#: rules/base.xml.in.h:335
-msgid "Samsung SDM 4510P"
-msgstr ""
-
-#: rules/base.xml.in.h:336
-#, fuzzy
-msgid "ScrollLock LED shows alternative group."
-msgstr "Itsinda"
-
-#: rules/base.xml.in.h:337
-msgid "Serbian"
-msgstr "Ikinyaseribiya"
-
-#: rules/base.xml.in.h:338
-#, fuzzy
-msgid "Shift with numpad keys works as in MS Windows."
-msgstr "Na: Utubuto Nka in"
-
-#: rules/base.xml.in.h:339
-#, fuzzy
-msgid "Shift+CapsLock changes group."
-msgstr "Amahinduka Itsinda"
-
-# sc/source\core\src\compiler.src:RID_SC_FUNCTION_NAMES.SC_OPCODE_SIN.text
-#: rules/base.xml.in.h:340
-#, fuzzy
-msgid "Sin"
-msgstr "SIN"
-
-#: rules/base.xml.in.h:341
-msgid "Sinhala"
-msgstr "Sinhala"
-
-#: rules/base.xml.in.h:342
-msgid "Slovakia"
-msgstr "Silovakiya"
-
-#: rules/base.xml.in.h:343
-msgid "Slovenia"
-msgstr "Siloveniya"
-
-#: rules/base.xml.in.h:344
-msgid "Smi"
-msgstr ""
-
-#: rules/base.xml.in.h:345
-msgid "Spain"
-msgstr "Esipanye"
-
-#: rules/base.xml.in.h:346
-#, fuzzy
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Utubuto in a Seriveri"
-
-#: rules/base.xml.in.h:347
-msgid "Srp"
-msgstr ""
-
-#: rules/base.xml.in.h:348
-msgid "Standard"
-msgstr "gisanzwe/kimenyerewe"
-
-#: rules/base.xml.in.h:349
-#, fuzzy
-msgid "Sun dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:350
-msgid "Super Power Multimedia Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:351
-#, fuzzy
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "ni Kuri i Utubuto Mburabuzi"
-
-#: rules/base.xml.in.h:352
-msgid "Svk"
-msgstr ""
-
-#: rules/base.xml.in.h:353
-msgid "Svn"
-msgstr ""
-
-#: rules/base.xml.in.h:354
-#, fuzzy
-msgid "Swap Control and CapsLock."
-msgstr "Na"
-
-#: rules/base.xml.in.h:355
-msgid "Swe"
-msgstr ""
-
-#: rules/base.xml.in.h:356
-msgid "Sweden"
-msgstr "Suwede"
-
-#: rules/base.xml.in.h:357
-msgid "Switzerland"
-msgstr "Ubusuwisi"
-
-#: rules/base.xml.in.h:358
-msgid "Symplon PaceBook (tablet PC)"
-msgstr ""
-
-#: rules/base.xml.in.h:359
-msgid "Syr"
-msgstr ""
-
-#: rules/base.xml.in.h:360
-msgid "Syriac"
-msgstr "Syriac"
-
-#: rules/base.xml.in.h:361
-msgid "TIS-820.2538"
-msgstr ""
-
-#: rules/base.xml.in.h:362
-msgid "Tajikistan"
-msgstr "Tajikisitani"
-
-#: rules/base.xml.in.h:363
-msgid "Tam"
-msgstr ""
-
-#: rules/base.xml.in.h:364
-msgid "Tamil"
-msgstr "Tamili"
-
-# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
-# sw/source\ui\wizard\wizbmp.src:STR_GoF_AbsTelefon.text
-# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
-# sw/source\ui\wizard\wizbmp.src:STR_GoF_EmpTelefon.text
-# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
-# sw/source\ui\wizard\wizbmp.src:STR_Usr_TelePrivat.text
-# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
-# sw/source\ui\wizard\wizbmp.src:STR_Usr_TeleDienst.text
-#: rules/base.xml.in.h:365
-#, fuzzy
-msgid "Tel"
-msgstr "Telefoni:"
-
-#: rules/base.xml.in.h:366
-msgid "Telugu"
-msgstr "Tegulu"
-
-#: rules/base.xml.in.h:367
-msgid "Tha"
-msgstr ""
-
-#: rules/base.xml.in.h:368
-msgid "Thailand"
-msgstr "Tayilande"
-
-#: rules/base.xml.in.h:369
-#, fuzzy
-msgid "Third level choosers"
-msgstr "urwego"
-
-#: rules/base.xml.in.h:370
-msgid "Tilde (~) variant"
-msgstr ""
-
-#: rules/base.xml.in.h:371
-msgid "Tjk"
-msgstr ""
-
-#: rules/base.xml.in.h:372
-msgid "Toshiba Satellite S3000"
-msgstr ""
-
-#: rules/base.xml.in.h:373
-msgid "Trust Direct Access Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:374
-msgid "Trust Wireless Keyboard Classic"
-msgstr ""
-
-#: rules/base.xml.in.h:375
-msgid "Tur"
-msgstr ""
-
-#: rules/base.xml.in.h:376
-msgid "Turkish"
-msgstr "Ikinyaturukiya"
-
-#: rules/base.xml.in.h:377
-#, fuzzy
-msgid "Typewrite-style keymap; TAB encoding"
-msgstr "IMISUSIRE Imisobekere:"
-
-#: rules/base.xml.in.h:378
-#, fuzzy
-msgid "Typewrite-style keymap; Unicode encoding"
-msgstr "IMISUSIRE Imisobekere:"
-
-#: rules/base.xml.in.h:379
-#, fuzzy
-msgid "U.S. English"
-msgstr "U."
-
-#: rules/base.xml.in.h:380
-#, fuzzy
-msgid "US keyboard with Croatian letters"
-msgstr "Mwandikisho Na:"
-
-#: rules/base.xml.in.h:381
-#, fuzzy
-msgid "US keyboard with Lithuanian letters"
-msgstr "Mwandikisho Na:"
-
-#: rules/base.xml.in.h:382
-#, fuzzy
-msgid "US keyboard with Maltian letters"
-msgstr "Mwandikisho Na:"
-
-#: rules/base.xml.in.h:383
-#, fuzzy
-msgid "US keyboard with Romanian letters"
-msgstr "Mwandikisho Na:"
-
-#: rules/base.xml.in.h:384
-msgid "USA"
-msgstr "Amerika"
-
-#: rules/base.xml.in.h:385
-msgid "Ukr"
-msgstr ""
-
-#: rules/base.xml.in.h:386
-msgid "Ukraine"
-msgstr "Ikerene"
-
-#. RSTU 2019-91
-#: rules/base.xml.in.h:388
-#, fuzzy
-msgid "Ukrainian standard RSTU"
-msgstr "Bisanzwe"
-
-#: rules/base.xml.in.h:389
-msgid "UnicodeExpert"
-msgstr ""
-
-#: rules/base.xml.in.h:390
-msgid "United Kingdom"
-msgstr "Ubwongereza (UK)"
-
-#: rules/base.xml.in.h:391
-msgid "Urd"
-msgstr ""
-
-#: rules/base.xml.in.h:392
-msgid "Urdu"
-msgstr "Urudu"
-
-#: rules/base.xml.in.h:393
-#, fuzzy
-msgid "Use keyboard LED to show alternative group."
-msgstr "Mwandikisho Kuri Garagaza Itsinda"
-
-#: rules/base.xml.in.h:394
-msgid "Uzb"
-msgstr ""
-
-#: rules/base.xml.in.h:395
-msgid "Uzbekistan"
-msgstr "Uzubekisitani"
-
-# setup2/source\ui\pages\paddr.src:RESID_PAGE_PAGEADDRESS.LB_COUNTRY.121.text
-#: rules/base.xml.in.h:396
-msgid "Vietnam"
-msgstr "Viyetinamu"
-
-#: rules/base.xml.in.h:397
-msgid "Vnm"
-msgstr ""
-
-#: rules/base.xml.in.h:398
-msgid "Winbook Model XP5"
-msgstr ""
-
-#: rules/base.xml.in.h:399
-msgid "Winkeys"
-msgstr ""
-
-#: rules/base.xml.in.h:400
-#, fuzzy
-msgid "With &lt;\\|&gt; key"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:401
-msgid "With Malayalam digits"
-msgstr ""
-
-#: rules/base.xml.in.h:402
-msgid "With guillemots"
-msgstr ""
-
-#: rules/base.xml.in.h:403
-msgid "Yahoo! Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:404
-#, fuzzy
-msgid "Z and ZHE swapped"
-msgstr "Na"
-
-#: rules/base.xml.in.h:405
-msgid "azerty"
-msgstr ""
-
-#: rules/base.xml.in.h:406
-msgid "azerty/digits"
-msgstr ""
-
-#: rules/base.xml.in.h:407
-msgid "digits"
-msgstr ""
-
-#: rules/base.xml.in.h:408
-msgid "lyx"
-msgstr ""
-
-#: rules/base.xml.in.h:409
-msgid "qwerty"
-msgstr ""
-
-#: rules/base.xml.in.h:410
-#, fuzzy
-msgid "qwerty, extended Backslash"
-msgstr "Byongerewe..."
-
-#: rules/base.xml.in.h:411
-msgid "qwerty/digits"
-msgstr ""
-
-#: rules/base.xml.in.h:412
-msgid "qwertz"
-msgstr ""
-
-#: rules/base.xml.in.h:413
-msgid "si1452"
-msgstr ""
+# Kinyarwanda translations for xkeyboard-config package.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xkeyboard-config package.
+# Steve Murphy <murf@e-tools.com>, 2005.
+# Steve performed initial rough translation from compendium built from translations provided by the following translators:
+# Philibert Ndandali <ndandali@yahoo.fr>, 2005.
+# Viateur MUGENZI <muvia1@yahoo.fr>, 2005.
+# Noëlla Mupole <s24211045@tuks.co.za>, 2005.
+# Carole Karema <karemacarole@hotmail.com>, 2005.
+# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005.
+# Augustin KIBERWA <akiberwa@yahoo.co.uk>, 2005.
+# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005.
+# Antoine Bigirimana <antoine@e-tools.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 0.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-01-24 22:57+0000\n"
+"PO-Revision-Date: 2005-04-04 10:55-0700\n"
+"Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
+"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+# sc/source\ui\src\scstring.src:SCSTR_STDFILTER.text
+#: rules/base.xml.in.h:1
+#, fuzzy
+msgid "\"Standard\""
+msgstr "\"Bisanzwe-"
+
+#: rules/base.xml.in.h:2
+msgid "\"Typewriter\""
+msgstr ""
+
+#: rules/base.xml.in.h:3
+msgid "(F)"
+msgstr ""
+
+#: rules/base.xml.in.h:4
+#, fuzzy
+msgid "101/qwerty/comma/Dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:5
+#, fuzzy
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:6
+#, fuzzy
+msgid "101/qwerty/dot/Dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:7
+#, fuzzy
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:8
+#, fuzzy
+msgid "101/qwertz/comma/Dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:9
+#, fuzzy
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:10
+#, fuzzy
+msgid "101/qwertz/dot/Dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:11
+#, fuzzy
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:12
+#, fuzzy
+msgid "102/qwerty/comma/Dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:13
+#, fuzzy
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:14
+#, fuzzy
+msgid "102/qwerty/dot/Dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:15
+#, fuzzy
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:16
+#, fuzzy
+msgid "102/qwertz/comma/Dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:17
+#, fuzzy
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:18
+#, fuzzy
+msgid "102/qwertz/dot/Dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:19
+#, fuzzy
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:20
+#, fuzzy
+msgid "A4Tech KB-21"
+msgstr "21"
+
+#: rules/base.xml.in.h:21
+#, fuzzy
+msgid "A4Tech KBS-8"
+msgstr "8"
+
+#: rules/base.xml.in.h:22
+msgid "ACPI Standard"
+msgstr ""
+
+#: rules/base.xml.in.h:23
+#, fuzzy
+msgid "Acer AirKey V"
+msgstr "V"
+
+#: rules/base.xml.in.h:24
+#, fuzzy
+msgid "Add the EuroSign to the 2 key."
+msgstr "i Kuri i 2. Urufunguzo"
+
+#: rules/base.xml.in.h:25
+#, fuzzy
+msgid "Add the EuroSign to the 5 key."
+msgstr "i Kuri i 5 Urufunguzo"
+
+#: rules/base.xml.in.h:26
+#, fuzzy
+msgid "Add the EuroSign to the E key."
+msgstr "i Kuri i E Urufunguzo"
+
+#: rules/base.xml.in.h:27
+#, fuzzy
+msgid "Add the standard behavior to Menu key."
+msgstr "i Bisanzwe imyitwarire Kuri Urufunguzo"
+
+#: rules/base.xml.in.h:28
+#, fuzzy
+msgid "Adding the EuroSign to certain keys"
+msgstr "i Kuri Utubuto"
+
+#: rules/base.xml.in.h:29
+msgid "Advance Scorpius KI"
+msgstr ""
+
+#: rules/base.xml.in.h:30
+msgid "Alb"
+msgstr ""
+
+#: rules/base.xml.in.h:31
+msgid "Albania"
+msgstr "Alubaniya"
+
+#: rules/base.xml.in.h:32
+#, fuzzy
+msgid "Alt and Meta are on the Alt keys (default)."
+msgstr "Na ku i Utubuto Mburabuzi"
+
+#: rules/base.xml.in.h:33
+#, fuzzy
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "ni Kuri i Iburyo: Urufunguzo Na Kuri"
+
+#: rules/base.xml.in.h:34
+#, fuzzy
+msgid "Alt+Control changes group."
+msgstr "Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:35
+#, fuzzy
+msgid "Alt+Shift changes group."
+msgstr "Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:36
+msgid "Alt-Q"
+msgstr ""
+
+#: rules/base.xml.in.h:37
+#, fuzzy
+msgid "Alt/Win key behavior"
+msgstr "Urufunguzo imyitwarire"
+
+#: rules/base.xml.in.h:38
+msgid "Alternative"
+msgstr ""
+
+#: rules/base.xml.in.h:39
+#, fuzzy
+msgid "Alternative international (former us_intl)"
+msgstr "Mpuzamahanga"
+
+#: rules/base.xml.in.h:40
+#, fuzzy
+msgid "Alternative, Sun dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:41
+#, fuzzy
+msgid "Alternative, eliminate dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:42
+msgid "Apostrophe (') variant"
+msgstr ""
+
+#: rules/base.xml.in.h:43
+msgid "Ara"
+msgstr ""
+
+#: rules/base.xml.in.h:44
+msgid "Arabic"
+msgstr "Icyarabu"
+
+#: rules/base.xml.in.h:45
+msgid "Arm"
+msgstr ""
+
+#: rules/base.xml.in.h:46
+msgid "Armenia"
+msgstr "Arumeniya"
+
+#: rules/base.xml.in.h:47
+msgid "Aze"
+msgstr ""
+
+#: rules/base.xml.in.h:48
+msgid "Azerbaijan"
+msgstr "Azeribayijani"
+
+#: rules/base.xml.in.h:49
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:50
+msgid "BTC 5090"
+msgstr ""
+
+#: rules/base.xml.in.h:51
+msgid "BTC 5113RF Multimedia"
+msgstr ""
+
+#: rules/base.xml.in.h:52
+msgid "BTC 5126T"
+msgstr ""
+
+#: rules/base.xml.in.h:53
+msgid "BTC 9000"
+msgstr ""
+
+#: rules/base.xml.in.h:54
+msgid "BTC 9000A"
+msgstr ""
+
+#: rules/base.xml.in.h:55
+msgid "BTC 9001AH"
+msgstr ""
+
+#: rules/base.xml.in.h:56
+msgid "Bel"
+msgstr ""
+
+#: rules/base.xml.in.h:57
+msgid "Belarus"
+msgstr "Belarusi"
+
+#: rules/base.xml.in.h:58
+msgid "Belgium"
+msgstr "Ububiligi"
+
+#: rules/base.xml.in.h:59
+msgid "Ben"
+msgstr ""
+
+#: rules/base.xml.in.h:60
+msgid "Bengali"
+msgstr "Bengali"
+
+#: rules/base.xml.in.h:61
+msgid "Bgr"
+msgstr ""
+
+#: rules/base.xml.in.h:62
+msgid "Bih"
+msgstr ""
+
+#: rules/base.xml.in.h:63
+msgid "Blr"
+msgstr ""
+
+#: rules/base.xml.in.h:64
+msgid "Bosnia and Herzegovina"
+msgstr "Bosiniya na Herizegovina"
+
+#: rules/base.xml.in.h:65
+#, fuzzy
+msgid "Both Alt keys together change group."
+msgstr "Utubuto Guhindura>> Itsinda"
+
+#: rules/base.xml.in.h:66
+#, fuzzy
+msgid "Both Ctrl keys together change group."
+msgstr "Utubuto Guhindura>> Itsinda"
+
+#: rules/base.xml.in.h:67
+#, fuzzy
+msgid "Both Shift keys together change group."
+msgstr "Utubuto Guhindura>> Itsinda"
+
+#: rules/base.xml.in.h:68
+#, fuzzy
+msgid "Both Win-keys switch group while pressed."
+msgstr "Utubuto Hindura Itsinda"
+
+#: rules/base.xml.in.h:69
+msgid "Bra"
+msgstr ""
+
+#: rules/base.xml.in.h:70
+msgid "Brazil"
+msgstr "Burezile"
+
+#: rules/base.xml.in.h:71
+msgid "Brazilian ABNT2"
+msgstr ""
+
+#: rules/base.xml.in.h:72
+msgid "Brother Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:73
+msgid "Bulgaria"
+msgstr "Buligariya"
+
+#: rules/base.xml.in.h:74
+msgid "Can"
+msgstr ""
+
+#: rules/base.xml.in.h:75
+msgid "Canada"
+msgstr "Kanada"
+
+#: rules/base.xml.in.h:76
+#, fuzzy
+msgid "CapsLock LED shows alternative group."
+msgstr "Itsinda"
+
+#: rules/base.xml.in.h:77
+#, fuzzy
+msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
+msgstr "Nka Na:"
+
+#: rules/base.xml.in.h:78
+#, fuzzy
+msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
+msgstr "Nka Na: Kureka"
+
+#: rules/base.xml.in.h:79
+#, fuzzy
+msgid "CapsLock just locks the Shift modifier."
+msgstr "i"
+
+#: rules/base.xml.in.h:80
+#, fuzzy
+msgid "CapsLock key behavior"
+msgstr "Urufunguzo imyitwarire"
+
+#: rules/base.xml.in.h:81
+#, fuzzy
+msgid "CapsLock key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:82
+#, fuzzy
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "Byose Utubuto"
+
+#: rules/base.xml.in.h:83
+#, fuzzy
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "Bisanzwe Bya Inyuguti"
+
+#: rules/base.xml.in.h:84
+#, fuzzy
+msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
+msgstr "By'imbere"
+
+#: rules/base.xml.in.h:85
+#, fuzzy
+msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
+msgstr "By'imbere Kureka"
+
+#: rules/base.xml.in.h:86
+msgid "Che"
+msgstr ""
+
+#: rules/base.xml.in.h:87
+msgid "Cherry Blue Line CyBo@rd"
+msgstr ""
+
+#: rules/base.xml.in.h:88
+#, fuzzy
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Ihitamo"
+
+#: rules/base.xml.in.h:89
+msgid "Chicony Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:90
+msgid "Chicony KB-9885"
+msgstr ""
+
+#: rules/base.xml.in.h:91
+msgid "CloGaelach"
+msgstr ""
+
+#: rules/base.xml.in.h:92
+msgid "CloGaelach Laptop"
+msgstr ""
+
+#: rules/base.xml.in.h:93
+msgid "Compaq Easy Access Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:94
+#, fuzzy
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:95
+#, fuzzy
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:96
+#, fuzzy
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "7 Utubuto"
+
+#: rules/base.xml.in.h:97
+msgid "Compaq iPaq Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:98
+msgid "Control Key Position"
+msgstr ""
+
+#: rules/base.xml.in.h:99
+#, fuzzy
+msgid "Control key at bottom left"
+msgstr "Urufunguzo ku Hasi: Ibumoso:"
+
+#: rules/base.xml.in.h:100
+#, fuzzy
+msgid "Control key at left of 'A'"
+msgstr "Urufunguzo ku Ibumoso: Bya"
+
+#: rules/base.xml.in.h:101
+#, fuzzy
+msgid "Control+Shift changes group."
+msgstr "Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:102
+msgid "Croatia"
+msgstr "Korowatiya"
+
+#: rules/base.xml.in.h:103
+msgid "Cyrillic"
+msgstr "Nyasilike"
+
+#: rules/base.xml.in.h:104
+msgid "Cze"
+msgstr ""
+
+#: rules/base.xml.in.h:105
+msgid "Czechia"
+msgstr ""
+
+#: rules/base.xml.in.h:106
+msgid "DTK2000"
+msgstr ""
+
+#: rules/base.xml.in.h:107
+msgid "Dead acute"
+msgstr ""
+
+#: rules/base.xml.in.h:108
+msgid "Dead grave acute"
+msgstr ""
+
+#: rules/base.xml.in.h:109
+msgid "Dell"
+msgstr ""
+
+#: rules/base.xml.in.h:110
+#, fuzzy
+msgid "Dell 101-key PC"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:111
+msgid "Denmark"
+msgstr "Danimarike"
+
+#: rules/base.xml.in.h:112
+msgid "Deu"
+msgstr ""
+
+#: rules/base.xml.in.h:113
+msgid "Deva"
+msgstr ""
+
+#: rules/base.xml.in.h:114
+msgid "Devanagari"
+msgstr "Devanagari"
+
+#: rules/base.xml.in.h:115
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:116
+#, fuzzy
+msgid "Diamond 9801 / 9802 series"
+msgstr "Ibyiciro"
+
+#: rules/base.xml.in.h:117
+msgid "Dnk"
+msgstr ""
+
+#: rules/base.xml.in.h:118
+msgid "Dvorak"
+msgstr ""
+
+#: rules/base.xml.in.h:119
+#, fuzzy
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "ku Urufunguzo 1."
+
+#: rules/base.xml.in.h:120
+#, fuzzy
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "ku Urufunguzo"
+
+#: rules/base.xml.in.h:121
+msgid "Dzo"
+msgstr ""
+
+#: rules/base.xml.in.h:122
+msgid "Dzongkha"
+msgstr "Ikinyazongika"
+
+#: rules/base.xml.in.h:123
+#, fuzzy
+msgid "Eliminate dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:124
+msgid "Ennyah DKB-1008"
+msgstr ""
+
+#: rules/base.xml.in.h:125
+msgid "Esp"
+msgstr ""
+
+#: rules/base.xml.in.h:126
+msgid "Est"
+msgstr ""
+
+#: rules/base.xml.in.h:127
+msgid "Estonia"
+msgstr "Esitoniya"
+
+#: rules/base.xml.in.h:128
+msgid "Everex STEPnote"
+msgstr ""
+
+#: rules/base.xml.in.h:129
+msgid "Extended"
+msgstr "cya/byagutse"
+
+#: rules/base.xml.in.h:130
+msgid "Extended Backslash"
+msgstr ""
+
+#: rules/base.xml.in.h:131
+#, fuzzy
+msgid "F-letter (F) variant"
+msgstr "Ibaruwa..."
+
+#: rules/base.xml.in.h:132
+msgid "Fao"
+msgstr ""
+
+#: rules/base.xml.in.h:133
+msgid "Faroe Islands"
+msgstr "Ibirwa bya Farowe"
+
+#: rules/base.xml.in.h:134
+msgid "Fin"
+msgstr ""
+
+#: rules/base.xml.in.h:135
+#, fuzzy
+msgid "Finish and Swedish"
+msgstr "Na"
+
+#: rules/base.xml.in.h:136
+msgid "Finland"
+msgstr "Finilande"
+
+#: rules/base.xml.in.h:137
+msgid "Fra"
+msgstr ""
+
+#: rules/base.xml.in.h:138
+msgid "France"
+msgstr "Ubufaransa"
+
+#: rules/base.xml.in.h:139
+msgid "French"
+msgstr "Igifaransa"
+
+#: rules/base.xml.in.h:140
+msgid "French (legacy)"
+msgstr ""
+
+#: rules/base.xml.in.h:141
+msgid "French Dvorak"
+msgstr ""
+
+#: rules/base.xml.in.h:142
+#, fuzzy
+msgid "French, Sun dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:143
+#, fuzzy
+msgid "French, eliminate dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:144
+msgid "GBr"
+msgstr ""
+
+#: rules/base.xml.in.h:145
+#, fuzzy
+msgid "Generic 101-key PC"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:146
+#, fuzzy
+msgid "Generic 102-key (Intl) PC"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:147
+#, fuzzy
+msgid "Generic 104-key PC"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:148
+#, fuzzy
+msgid "Generic 105-key (Intl) PC"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:149
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr ""
+
+#: rules/base.xml.in.h:150
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr ""
+
+#: rules/base.xml.in.h:151
+msgid "Geo"
+msgstr ""
+
+#: rules/base.xml.in.h:152
+msgid "Georgia"
+msgstr "Geworigiya"
+
+#: rules/base.xml.in.h:153
+#, fuzzy
+msgid "German, Sun dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:154
+#, fuzzy
+msgid "German, eliminate dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:155
+msgid "Germany"
+msgstr "Ubudage"
+
+#: rules/base.xml.in.h:156
+msgid "Gre"
+msgstr ""
+
+#: rules/base.xml.in.h:157
+msgid "Greece"
+msgstr "Ikigereki"
+
+#: rules/base.xml.in.h:158
+#, fuzzy
+msgid "Group Shift/Lock behavior"
+msgstr "imyitwarire"
+
+#: rules/base.xml.in.h:159
+msgid "Guj"
+msgstr ""
+
+#: rules/base.xml.in.h:160
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: rules/base.xml.in.h:161
+msgid "Gurmukhi"
+msgstr "Gurumuki"
+
+#: rules/base.xml.in.h:162
+msgid "Guru"
+msgstr ""
+
+#: rules/base.xml.in.h:163
+msgid "Gyration"
+msgstr ""
+
+#: rules/base.xml.in.h:164
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:165
+#, fuzzy
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "500"
+
+#: rules/base.xml.in.h:166
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr ""
+
+#: rules/base.xml.in.h:167
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr ""
+
+#: rules/base.xml.in.h:168
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr ""
+
+#: rules/base.xml.in.h:169
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr ""
+
+#: rules/base.xml.in.h:170
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr ""
+
+#: rules/base.xml.in.h:171
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr ""
+
+#: rules/base.xml.in.h:172
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:173
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:174
+msgid "Honeywell Euroboard"
+msgstr ""
+
+#: rules/base.xml.in.h:175
+msgid "Hrv"
+msgstr ""
+
+#: rules/base.xml.in.h:176
+msgid "Hun"
+msgstr ""
+
+#: rules/base.xml.in.h:177
+msgid "Hungary"
+msgstr "Hongiriya"
+
+#: rules/base.xml.in.h:178
+#, fuzzy
+msgid "Hyper is mapped to the Win-keys."
+msgstr "ni Kuri i Utubuto"
+
+#: rules/base.xml.in.h:179
+msgid "IBM Rapid Access"
+msgstr ""
+
+#: rules/base.xml.in.h:180
+msgid "IBM Rapid Access II"
+msgstr ""
+
+#: rules/base.xml.in.h:181
+#, fuzzy
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "Ihitamo"
+
+#: rules/base.xml.in.h:182
+#, fuzzy
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "600"
+
+#: rules/base.xml.in.h:183
+#, fuzzy
+msgid "INSCRIPT layout"
+msgstr "Imigaragarire"
+
+#: rules/base.xml.in.h:184
+msgid "IS434"
+msgstr ""
+
+#: rules/base.xml.in.h:185
+msgid "IS434 laptop"
+msgstr ""
+
+#: rules/base.xml.in.h:186
+msgid "ISO Alternate"
+msgstr ""
+
+#: rules/base.xml.in.h:187
+msgid "Iceland"
+msgstr "Isilande"
+
+#: rules/base.xml.in.h:188
+msgid "Iku"
+msgstr ""
+
+#: rules/base.xml.in.h:189
+#, fuzzy
+msgid "International (with dead keys)"
+msgstr "Na: Utubuto"
+
+#: rules/base.xml.in.h:190
+msgid "Inuktitut"
+msgstr "Ikinukititutu"
+
+#: rules/base.xml.in.h:191
+msgid "Iran"
+msgstr ""
+
+#: rules/base.xml.in.h:192
+msgid "Ireland"
+msgstr "Irilande"
+
+#: rules/base.xml.in.h:193
+msgid "Irl"
+msgstr ""
+
+#: rules/base.xml.in.h:194
+msgid "Irn"
+msgstr ""
+
+#: rules/base.xml.in.h:195
+msgid "Isl"
+msgstr ""
+
+#: rules/base.xml.in.h:196
+msgid "Isr"
+msgstr ""
+
+#: rules/base.xml.in.h:197
+msgid "Israel"
+msgstr "Isirayeli"
+
+#: rules/base.xml.in.h:198
+msgid "Ita"
+msgstr ""
+
+#: rules/base.xml.in.h:199
+msgid "Italy"
+msgstr "Ubutariyani"
+
+#: rules/base.xml.in.h:200
+msgid "Japan"
+msgstr "Ubuyapani"
+
+#: rules/base.xml.in.h:201
+#, fuzzy
+msgid "Japanese 106-key"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:202
+msgid "Jpn"
+msgstr ""
+
+#: rules/base.xml.in.h:203
+msgid "Kan"
+msgstr ""
+
+#: rules/base.xml.in.h:204
+msgid "Kannada"
+msgstr "Kannada"
+
+#: rules/base.xml.in.h:205
+msgid "Keytronic FlexPro"
+msgstr ""
+
+#: rules/base.xml.in.h:206
+msgid "Kyr"
+msgstr ""
+
+#: rules/base.xml.in.h:207
+msgid "Kyrgyzstan"
+msgstr "Kirigizasitani"
+
+#: rules/base.xml.in.h:208
+msgid "LAm"
+msgstr ""
+
+#: rules/base.xml.in.h:209
+msgid "Lao"
+msgstr "Lawo"
+
+#: rules/base.xml.in.h:210
+msgid "Laos"
+msgstr ""
+
+#: rules/base.xml.in.h:211
+msgid "Laptop"
+msgstr ""
+
+#: rules/base.xml.in.h:212
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:213
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:214
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr ""
+
+#: rules/base.xml.in.h:215
+msgid "Latin"
+msgstr "Ikiratini"
+
+#: rules/base.xml.in.h:216
+msgid "Latin American"
+msgstr ""
+
+#: rules/base.xml.in.h:217
+msgid "Latin Unicode"
+msgstr ""
+
+#: rules/base.xml.in.h:218
+msgid "Latin Unicode qwerty"
+msgstr ""
+
+#: rules/base.xml.in.h:219
+msgid "Latin qwerty"
+msgstr ""
+
+#: rules/base.xml.in.h:220
+#, fuzzy
+msgid "Latin with guillemots"
+msgstr "Na:"
+
+#: rules/base.xml.in.h:221
+msgid "Latvia"
+msgstr "Lativiya"
+
+#: rules/base.xml.in.h:222
+#, fuzzy
+msgid "Left Alt key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:223
+#, fuzzy
+msgid "Left Alt key switches group while pressed."
+msgstr "Urufunguzo Itsinda"
+
+#: rules/base.xml.in.h:224
+#, fuzzy
+msgid "Left Ctrl key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:225
+#, fuzzy
+msgid "Left Shift key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:226
+#, fuzzy
+msgid "Left Win-key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:227
+#, fuzzy
+msgid "Left Win-key switches group while pressed."
+msgstr "Urufunguzo Itsinda"
+
+#: rules/base.xml.in.h:228
+msgid "Lithuania"
+msgstr "Lituwaniya"
+
+#: rules/base.xml.in.h:229
+msgid "Logitech Access Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:230
+msgid "Logitech Cordless Desktop"
+msgstr ""
+
+#: rules/base.xml.in.h:231
+msgid "Logitech Cordless Desktop Navigator"
+msgstr ""
+
+#: rules/base.xml.in.h:232
+msgid "Logitech Cordless Desktop Optical"
+msgstr ""
+
+#: rules/base.xml.in.h:233
+msgid "Logitech Cordless Desktop Pro"
+msgstr ""
+
+#: rules/base.xml.in.h:234
+#, fuzzy
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Ihitamo"
+
+#: rules/base.xml.in.h:235
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr ""
+
+#: rules/base.xml.in.h:236
+msgid "Logitech Cordless Desktop iTouch"
+msgstr ""
+
+#: rules/base.xml.in.h:237
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr ""
+
+#: rules/base.xml.in.h:238
+msgid "Logitech Deluxe Access Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:239
+msgid "Logitech Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:240
+msgid "Logitech Internet Navigator Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:241
+msgid "Logitech iTouch"
+msgstr ""
+
+#: rules/base.xml.in.h:242
+#, fuzzy
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Urugero"
+
+#: rules/base.xml.in.h:243
+#, fuzzy
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Mwandikisho"
+
+#: rules/base.xml.in.h:244
+msgid "Ltu"
+msgstr ""
+
+#: rules/base.xml.in.h:245
+msgid "Lva"
+msgstr ""
+
+#: rules/base.xml.in.h:246
+msgid "Macedonian"
+msgstr "Nyamasedoniya"
+
+#: rules/base.xml.in.h:247
+msgid "Macintosh"
+msgstr "masinitoshi"
+
+#: rules/base.xml.in.h:248
+msgid "Macintosh Old"
+msgstr ""
+
+#: rules/base.xml.in.h:249
+msgid "Make CapsLock an additional Control."
+msgstr ""
+
+#: rules/base.xml.in.h:250
+msgid "Mal"
+msgstr ""
+
+#: rules/base.xml.in.h:251
+msgid "Malayalam"
+msgstr "Malayalamu"
+
+#: rules/base.xml.in.h:252
+msgid "Malta"
+msgstr "Malita"
+
+#: rules/base.xml.in.h:253
+msgid "Mao"
+msgstr ""
+
+#: rules/base.xml.in.h:254
+msgid "Maori"
+msgstr "Ikimawori"
+
+#: rules/base.xml.in.h:255
+msgid "Memorex MX1998"
+msgstr ""
+
+#: rules/base.xml.in.h:256
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:257
+msgid "Memorex MX2750"
+msgstr ""
+
+#: rules/base.xml.in.h:258
+#, fuzzy
+msgid "Menu is Compose."
+msgstr "ni"
+
+#: rules/base.xml.in.h:259
+#, fuzzy
+msgid "Menu key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:260
+#, fuzzy
+msgid "Meta is mapped to the Win-keys."
+msgstr "ni Kuri i Utubuto"
+
+#: rules/base.xml.in.h:261
+#, fuzzy
+msgid "Meta is mapped to the left Win-key."
+msgstr "ni Kuri i Ibumoso: Urufunguzo"
+
+#: rules/base.xml.in.h:262
+msgid "Microsoft Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:263
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr ""
+
+#: rules/base.xml.in.h:264
+msgid "Microsoft Natural"
+msgstr ""
+
+#: rules/base.xml.in.h:265
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr ""
+
+#: rules/base.xml.in.h:266
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr ""
+
+#: rules/base.xml.in.h:267
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr ""
+
+#: rules/base.xml.in.h:268
+msgid "Microsoft Office Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:269
+#, fuzzy
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "1."
+
+#: rules/base.xml.in.h:270
+#, fuzzy
+msgid "Miscellaneous compatibility options"
+msgstr "Bihuye neza Amahitamo"
+
+#: rules/base.xml.in.h:271
+msgid "Mkd"
+msgstr ""
+
+#: rules/base.xml.in.h:272
+msgid "Mlt"
+msgstr ""
+
+#: rules/base.xml.in.h:273
+msgid "Mmr"
+msgstr ""
+
+#: rules/base.xml.in.h:274
+msgid "Mng"
+msgstr ""
+
+#: rules/base.xml.in.h:275
+msgid "Mongolia"
+msgstr "Mongoliya"
+
+#: rules/base.xml.in.h:276
+msgid "Multilingual"
+msgstr ""
+
+#: rules/base.xml.in.h:277
+#, fuzzy
+msgid "Multilingual, second part"
+msgstr "ISEGONDA"
+
+#: rules/base.xml.in.h:278
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: rules/base.xml.in.h:279
+msgid "Netherlands"
+msgstr "Nederilande"
+
+#: rules/base.xml.in.h:280
+msgid "Nld"
+msgstr ""
+
+#: rules/base.xml.in.h:281
+msgid "Nor"
+msgstr ""
+
+#: rules/base.xml.in.h:282
+msgid "Northern Saami"
+msgstr "Sami y'Amajyaruguru"
+
+#: rules/base.xml.in.h:283
+msgid "Northgate OmniKey 101"
+msgstr ""
+
+#: rules/base.xml.in.h:284
+msgid "Norway"
+msgstr "Noruveje"
+
+#: rules/base.xml.in.h:285
+#, fuzzy
+msgid "NumLock LED shows alternative group."
+msgstr "Itsinda"
+
+#: rules/base.xml.in.h:286
+msgid "Ogam"
+msgstr ""
+
+#: rules/base.xml.in.h:287
+msgid "Ogham"
+msgstr "Ogham"
+
+#: rules/base.xml.in.h:288
+#, fuzzy
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Mwandikisho"
+
+#: rules/base.xml.in.h:289
+msgid "Ori"
+msgstr ""
+
+#: rules/base.xml.in.h:290
+msgid "Oriya"
+msgstr "Oriya"
+
+#: rules/base.xml.in.h:291
+msgid "PC-98xx Series"
+msgstr ""
+
+#: rules/base.xml.in.h:292
+msgid "Pattachote"
+msgstr ""
+
+#: rules/base.xml.in.h:293
+#, fuzzy
+msgid "Phonetic"
+msgstr "Nyigamvugo:"
+
+#: rules/base.xml.in.h:294
+msgid "Pol"
+msgstr ""
+
+#: rules/base.xml.in.h:295
+msgid "Poland"
+msgstr "Polonye"
+
+#: rules/base.xml.in.h:296
+msgid "Polytonic"
+msgstr ""
+
+#: rules/base.xml.in.h:297
+msgid "Portugal"
+msgstr "Porutigali"
+
+#: rules/base.xml.in.h:298
+#, fuzzy
+msgid "PowerPC PS/2"
+msgstr "2."
+
+#: rules/base.xml.in.h:299
+#, fuzzy
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "Urufunguzo Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:300
+#, fuzzy
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "Urufunguzo Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:301
+#, fuzzy
+msgid "Press Menu key to choose 3rd level."
+msgstr "Urufunguzo Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:302
+#, fuzzy
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "Urufunguzo Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:303
+#, fuzzy
+msgid "Press Right Control to choose 3rd level."
+msgstr "Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:304
+#, fuzzy
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "Urufunguzo Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:305
+#, fuzzy
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "Bya Utubuto Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:306
+#, fuzzy
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "Bya Utubuto Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:307
+msgid "Probhat"
+msgstr ""
+
+#: rules/base.xml.in.h:308
+#, fuzzy
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "1000"
+
+#: rules/base.xml.in.h:309
+msgid "Prt"
+msgstr ""
+
+#: rules/base.xml.in.h:310
+msgid "QTronix Scorpius 98N+"
+msgstr ""
+
+#: rules/base.xml.in.h:311
+#, fuzzy
+msgid "R-Alt switches group while pressed."
+msgstr "Itsinda"
+
+#: rules/base.xml.in.h:312
+#, fuzzy
+msgid "Right Alt is Compose."
+msgstr "ni"
+
+#: rules/base.xml.in.h:313
+#, fuzzy
+msgid "Right Alt key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:314
+#, fuzzy
+msgid "Right Control key works as Right Alt."
+msgstr "Urufunguzo Nka"
+
+#: rules/base.xml.in.h:315
+#, fuzzy
+msgid "Right Ctrl is Compose."
+msgstr "ni"
+
+#: rules/base.xml.in.h:316
+#, fuzzy
+msgid "Right Ctrl key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:317
+#, fuzzy
+msgid "Right Ctrl key switches group while pressed."
+msgstr "Urufunguzo Itsinda"
+
+#: rules/base.xml.in.h:318
+#, fuzzy
+msgid "Right Shift key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:319
+#, fuzzy
+msgid "Right Win-key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:320
+#, fuzzy
+msgid "Right Win-key is Compose."
+msgstr "Urufunguzo ni"
+
+#: rules/base.xml.in.h:321
+#, fuzzy
+msgid "Right Win-key switches group while pressed."
+msgstr "Urufunguzo Itsinda"
+
+#: rules/base.xml.in.h:322
+msgid "Romania"
+msgstr "Romaniya"
+
+#: rules/base.xml.in.h:323
+#, fuzzy
+msgid "Romanian keyboard with German letters"
+msgstr "Mwandikisho Na:"
+
+#: rules/base.xml.in.h:324
+#, fuzzy
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Mwandikisho Na: Utubuto"
+
+#: rules/base.xml.in.h:325
+msgid "Rou"
+msgstr ""
+
+#: rules/base.xml.in.h:326
+msgid "Rus"
+msgstr ""
+
+#: rules/base.xml.in.h:327
+msgid "Russia"
+msgstr ""
+
+#: rules/base.xml.in.h:328
+msgid "Russian"
+msgstr "Ikirusiya"
+
+#: rules/base.xml.in.h:329
+msgid "SK-1300"
+msgstr ""
+
+#: rules/base.xml.in.h:330
+msgid "SK-2500"
+msgstr ""
+
+#: rules/base.xml.in.h:331
+msgid "SK-6200"
+msgstr ""
+
+#: rules/base.xml.in.h:332
+msgid "SK-7100"
+msgstr ""
+
+#: rules/base.xml.in.h:333
+msgid "SVEN Ergonomic 2500"
+msgstr ""
+
+#: rules/base.xml.in.h:334
+msgid "Samsung SDM 4500P"
+msgstr ""
+
+#: rules/base.xml.in.h:335
+msgid "Samsung SDM 4510P"
+msgstr ""
+
+#: rules/base.xml.in.h:336
+#, fuzzy
+msgid "ScrollLock LED shows alternative group."
+msgstr "Itsinda"
+
+#: rules/base.xml.in.h:337
+msgid "Serbian"
+msgstr "Ikinyaseribiya"
+
+#: rules/base.xml.in.h:338
+#, fuzzy
+msgid "Shift with numpad keys works as in MS Windows."
+msgstr "Na: Utubuto Nka in"
+
+#: rules/base.xml.in.h:339
+#, fuzzy
+msgid "Shift+CapsLock changes group."
+msgstr "Amahinduka Itsinda"
+
+# sc/source\core\src\compiler.src:RID_SC_FUNCTION_NAMES.SC_OPCODE_SIN.text
+#: rules/base.xml.in.h:340
+#, fuzzy
+msgid "Sin"
+msgstr "SIN"
+
+#: rules/base.xml.in.h:341
+msgid "Sinhala"
+msgstr "Sinhala"
+
+#: rules/base.xml.in.h:342
+msgid "Slovakia"
+msgstr "Silovakiya"
+
+#: rules/base.xml.in.h:343
+msgid "Slovenia"
+msgstr "Siloveniya"
+
+#: rules/base.xml.in.h:344
+msgid "Smi"
+msgstr ""
+
+#: rules/base.xml.in.h:345
+msgid "Spain"
+msgstr "Esipanye"
+
+#: rules/base.xml.in.h:346
+#, fuzzy
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Utubuto in a Seriveri"
+
+#: rules/base.xml.in.h:347
+msgid "Srp"
+msgstr ""
+
+#: rules/base.xml.in.h:348
+msgid "Standard"
+msgstr "gisanzwe/kimenyerewe"
+
+#: rules/base.xml.in.h:349
+#, fuzzy
+msgid "Sun dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:350
+msgid "Super Power Multimedia Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:351
+#, fuzzy
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "ni Kuri i Utubuto Mburabuzi"
+
+#: rules/base.xml.in.h:352
+msgid "Svk"
+msgstr ""
+
+#: rules/base.xml.in.h:353
+msgid "Svn"
+msgstr ""
+
+#: rules/base.xml.in.h:354
+#, fuzzy
+msgid "Swap Control and CapsLock."
+msgstr "Na"
+
+#: rules/base.xml.in.h:355
+msgid "Swe"
+msgstr ""
+
+#: rules/base.xml.in.h:356
+msgid "Sweden"
+msgstr "Suwede"
+
+#: rules/base.xml.in.h:357
+msgid "Switzerland"
+msgstr "Ubusuwisi"
+
+#: rules/base.xml.in.h:358
+msgid "Symplon PaceBook (tablet PC)"
+msgstr ""
+
+#: rules/base.xml.in.h:359
+msgid "Syr"
+msgstr ""
+
+#: rules/base.xml.in.h:360
+msgid "Syriac"
+msgstr "Syriac"
+
+#: rules/base.xml.in.h:361
+msgid "TIS-820.2538"
+msgstr ""
+
+#: rules/base.xml.in.h:362
+msgid "Tajikistan"
+msgstr "Tajikisitani"
+
+#: rules/base.xml.in.h:363
+msgid "Tam"
+msgstr ""
+
+#: rules/base.xml.in.h:364
+msgid "Tamil"
+msgstr "Tamili"
+
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\wizard\wizbmp.src:STR_GoF_AbsTelefon.text
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\wizard\wizbmp.src:STR_GoF_EmpTelefon.text
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\wizard\wizbmp.src:STR_Usr_TelePrivat.text
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\wizard\wizbmp.src:STR_Usr_TeleDienst.text
+#: rules/base.xml.in.h:365
+#, fuzzy
+msgid "Tel"
+msgstr "Telefoni:"
+
+#: rules/base.xml.in.h:366
+msgid "Telugu"
+msgstr "Tegulu"
+
+#: rules/base.xml.in.h:367
+msgid "Tha"
+msgstr ""
+
+#: rules/base.xml.in.h:368
+msgid "Thailand"
+msgstr "Tayilande"
+
+#: rules/base.xml.in.h:369
+#, fuzzy
+msgid "Third level choosers"
+msgstr "urwego"
+
+#: rules/base.xml.in.h:370
+msgid "Tilde (~) variant"
+msgstr ""
+
+#: rules/base.xml.in.h:371
+msgid "Tjk"
+msgstr ""
+
+#: rules/base.xml.in.h:372
+msgid "Toshiba Satellite S3000"
+msgstr ""
+
+#: rules/base.xml.in.h:373
+msgid "Trust Direct Access Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:374
+msgid "Trust Wireless Keyboard Classic"
+msgstr ""
+
+#: rules/base.xml.in.h:375
+msgid "Tur"
+msgstr ""
+
+#: rules/base.xml.in.h:376
+msgid "Turkish"
+msgstr "Ikinyaturukiya"
+
+#: rules/base.xml.in.h:377
+#, fuzzy
+msgid "Typewrite-style keymap; TAB encoding"
+msgstr "IMISUSIRE Imisobekere:"
+
+#: rules/base.xml.in.h:378
+#, fuzzy
+msgid "Typewrite-style keymap; Unicode encoding"
+msgstr "IMISUSIRE Imisobekere:"
+
+#: rules/base.xml.in.h:379
+#, fuzzy
+msgid "U.S. English"
+msgstr "U."
+
+#: rules/base.xml.in.h:380
+#, fuzzy
+msgid "US keyboard with Croatian letters"
+msgstr "Mwandikisho Na:"
+
+#: rules/base.xml.in.h:381
+#, fuzzy
+msgid "US keyboard with Lithuanian letters"
+msgstr "Mwandikisho Na:"
+
+#: rules/base.xml.in.h:382
+#, fuzzy
+msgid "US keyboard with Maltian letters"
+msgstr "Mwandikisho Na:"
+
+#: rules/base.xml.in.h:383
+#, fuzzy
+msgid "US keyboard with Romanian letters"
+msgstr "Mwandikisho Na:"
+
+#: rules/base.xml.in.h:384
+msgid "USA"
+msgstr "Amerika"
+
+#: rules/base.xml.in.h:385
+msgid "Ukr"
+msgstr ""
+
+#: rules/base.xml.in.h:386
+msgid "Ukraine"
+msgstr "Ikerene"
+
+#. RSTU 2019-91
+#: rules/base.xml.in.h:388
+#, fuzzy
+msgid "Ukrainian standard RSTU"
+msgstr "Bisanzwe"
+
+#: rules/base.xml.in.h:389
+msgid "UnicodeExpert"
+msgstr ""
+
+#: rules/base.xml.in.h:390
+msgid "United Kingdom"
+msgstr "Ubwongereza (UK)"
+
+#: rules/base.xml.in.h:391
+msgid "Urd"
+msgstr ""
+
+#: rules/base.xml.in.h:392
+msgid "Urdu"
+msgstr "Urudu"
+
+#: rules/base.xml.in.h:393
+#, fuzzy
+msgid "Use keyboard LED to show alternative group."
+msgstr "Mwandikisho Kuri Garagaza Itsinda"
+
+#: rules/base.xml.in.h:394
+msgid "Uzb"
+msgstr ""
+
+#: rules/base.xml.in.h:395
+msgid "Uzbekistan"
+msgstr "Uzubekisitani"
+
+# setup2/source\ui\pages\paddr.src:RESID_PAGE_PAGEADDRESS.LB_COUNTRY.121.text
+#: rules/base.xml.in.h:396
+msgid "Vietnam"
+msgstr "Viyetinamu"
+
+#: rules/base.xml.in.h:397
+msgid "Vnm"
+msgstr ""
+
+#: rules/base.xml.in.h:398
+msgid "Winbook Model XP5"
+msgstr ""
+
+#: rules/base.xml.in.h:399
+msgid "Winkeys"
+msgstr ""
+
+#: rules/base.xml.in.h:400
+#, fuzzy
+msgid "With &lt;\\|&gt; key"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:401
+msgid "With Malayalam digits"
+msgstr ""
+
+#: rules/base.xml.in.h:402
+msgid "With guillemots"
+msgstr ""
+
+#: rules/base.xml.in.h:403
+msgid "Yahoo! Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:404
+#, fuzzy
+msgid "Z and ZHE swapped"
+msgstr "Na"
+
+#: rules/base.xml.in.h:405
+msgid "azerty"
+msgstr ""
+
+#: rules/base.xml.in.h:406
+msgid "azerty/digits"
+msgstr ""
+
+#: rules/base.xml.in.h:407
+msgid "digits"
+msgstr ""
+
+#: rules/base.xml.in.h:408
+msgid "lyx"
+msgstr ""
+
+#: rules/base.xml.in.h:409
+msgid "qwerty"
+msgstr ""
+
+#: rules/base.xml.in.h:410
+#, fuzzy
+msgid "qwerty, extended Backslash"
+msgstr "Byongerewe..."
+
+#: rules/base.xml.in.h:411
+msgid "qwerty/digits"
+msgstr ""
+
+#: rules/base.xml.in.h:412
+msgid "qwertz"
+msgstr ""
+
+#: rules/base.xml.in.h:413
+msgid "si1452"
+msgstr ""
diff --git a/xorg-server/xkeyboard-config/po/sk.po b/xorg-server/xkeyboard-config/po/sk.po
index fe53d5b61..140a700f9 100644
--- a/xorg-server/xkeyboard-config/po/sk.po
+++ b/xorg-server/xkeyboard-config/po/sk.po
@@ -1,2781 +1,2781 @@
-# Slovak translation of xkeyboard-config
-# Copyright (C) 2003 Free Software Foundation
-# Zdenko Podobný <zdpo@mailbox.sk>, 2003.
-# Ivan Masár <helix84@centrum.sk>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.0-pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-28 15:21+0100\n"
-"PO-Revision-Date: 2007-09-04 22:49+0100\n"
-"Last-Translator: Zdenko Podobný <zdpo@mailbox.sk>\n"
-"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.2beta3\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "(Legacy) Alternative"
-msgstr "(Zastaralé) alternatívne"
-
-#: ../rules/base.xml.in.h:3
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Zastaralé) alternatívne, s mŕtvymi klávesmi Sun"
-
-#: ../rules/base.xml.in.h:4
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Zastaralé) alternatívne, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Dvorak"
-msgstr "(Zastaralé) dvorak"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/104 key Compatible"
-msgstr "Kompatibilná s 101/104 klávesami"
-
-#: ../rules/base.xml.in.h:7 ../rules/sun.xml.in.h:2
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/Äiarka/mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:8 ../rules/sun.xml.in.h:3
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:9 ../rules/sun.xml.in.h:4
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/bodka/mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:10 ../rules/sun.xml.in.h:5
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/bodka/eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:11 ../rules/sun.xml.in.h:6
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/Äiarka/mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:13 ../rules/sun.xml.in.h:7
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/bodka/mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:14 ../rules/sun.xml.in.h:8
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/bodka/eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:15 ../rules/sun.xml.in.h:9
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/Äiarka/mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:16 ../rules/sun.xml.in.h:10
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:17 ../rules/sun.xml.in.h:11
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/bodka/mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:18 ../rules/sun.xml.in.h:12
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/bodka/eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:19 ../rules/sun.xml.in.h:13
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/Äiarka/mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:20 ../rules/sun.xml.in.h:14
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:21 ../rules/sun.xml.in.h:15
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/bodka/mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:22 ../rules/sun.xml.in.h:16
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/bodka/eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:23
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:24
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:25
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:26
-msgid "ACPI Standard"
-msgstr "Å tandard ACPI"
-
-# gruzínske rozloženie
-#: ../rules/base.xml.in.h:27
-msgid "AZERTY Tskapo"
-msgstr "AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:28
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:29
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:30
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:31
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:32
-msgid "Add the EuroSign to the 2 key."
-msgstr "Pridať znak euro na kláves 2."
-
-#: ../rules/base.xml.in.h:33
-msgid "Add the EuroSign to the 5 key."
-msgstr "Pridať znak euro na kláves 5."
-
-#: ../rules/base.xml.in.h:34
-msgid "Add the EuroSign to the E key."
-msgstr "Pridať znak euro na kláves E."
-
-#: ../rules/base.xml.in.h:35
-msgid "Add the standard behavior to Menu key."
-msgstr "Pridať štandardné chovanie klávesu Ponuka."
-
-#: ../rules/base.xml.in.h:36
-msgid "Adding the EuroSign to certain keys"
-msgstr "Pridať znak euro na isté klávesy."
-
-#: ../rules/base.xml.in.h:37
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:38
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:39
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#: ../rules/base.xml.in.h:40
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:42
-msgid "Albania"
-msgstr "Albánsko"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alt and Meta are on the Alt keys."
-msgstr "Alt a Meta sú na klávesoch Alt."
-
-#: ../rules/base.xml.in.h:44
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "Meta je mapovaný na pravý kláves Win a Super na Ponuku."
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt+CapsLock changes layout."
-msgstr "Alt+Caps Lock mení rozloženie."
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt+Ctrl change layout."
-msgstr "Alt+Control mení rozloženie."
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Shift change layout."
-msgstr "Alt+Shift mení rozloženie."
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt/Win key behavior"
-msgstr "Chovanie klávesu Alt/Win"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alternative"
-msgstr "alternatívne"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alternative Eastern"
-msgstr "alternatívne východné"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alternative Phonetic"
-msgstr "alternatívne fonetické"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative international (former us_intl)"
-msgstr "alternatívne medzinárodné (býv. us_intl)"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative, Sun dead keys"
-msgstr "alternatívne, mŕtve klávesy Sun"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative, eliminate dead keys"
-msgstr "alternatívne, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative, latin-9 only"
-msgstr "alternatívne, iba latin-9"
-
-#: ../rules/base.xml.in.h:57
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:58
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:59
-msgid "Apostrophe (') variant"
-msgstr "Variant (') apostrof"
-
-#: ../rules/base.xml.in.h:60
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:61
-msgid "Apple Laptop"
-msgstr "Apple laptop"
-
-#: ../rules/base.xml.in.h:62
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:63
-msgid "Arabic"
-msgstr "Arabsky"
-
-#: ../rules/base.xml.in.h:64
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:65
-msgid "Armenia"
-msgstr "Arménsko"
-
-#: ../rules/base.xml.in.h:66
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:67
-msgid "Azerbaijan"
-msgstr "Azerbajdžan"
-
-#: ../rules/base.xml.in.h:68
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 bezdrôtová internetová klávesnica"
-
-#: ../rules/base.xml.in.h:69
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:70
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:71
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:72
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:73
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:74
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:75
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:76
-msgid "Ban"
-msgstr "Ban"
-
-#: ../rules/base.xml.in.h:77
-msgid "Bangladesh"
-msgstr "Bangladéš"
-
-#: ../rules/base.xml.in.h:78 ../rules/sun.xml.in.h:22
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:79
-msgid "Belarus"
-msgstr "Bielorusko"
-
-#: ../rules/base.xml.in.h:80
-msgid "Belgium"
-msgstr "Belgicko"
-
-#: ../rules/base.xml.in.h:81
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:82
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:83
-msgid "Bengali"
-msgstr "Bengálska"
-
-#: ../rules/base.xml.in.h:84
-msgid "Bengali Probhat"
-msgstr "Bengálsky Probhat"
-
-#: ../rules/base.xml.in.h:85
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomické, na spôsob Dvorak"
-
-#: ../rules/base.xml.in.h:86
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomické, na spôsob Dvorak, iba latin-9"
-
-#: ../rules/base.xml.in.h:87 ../rules/sun.xml.in.h:24
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:88
-msgid "Bhu"
-msgstr "Bhu"
-
-#: ../rules/base.xml.in.h:89
-msgid "Bhutan"
-msgstr "Bhután"
-
-#: ../rules/base.xml.in.h:90
-msgid "Biblical Hebrew (Tiro)"
-msgstr "biblická hebrejÄina (Tiro)"
-
-#: ../rules/base.xml.in.h:91
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:92
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:93
-msgid "Bosnia and Herzegovina"
-msgstr "Bosna a Hercegovina"
-
-#: ../rules/base.xml.in.h:94
-msgid "Both Alt keys together change layout."
-msgstr "Oba klávesy Alt spolu menia rozloženie."
-
-#: ../rules/base.xml.in.h:95
-msgid "Both Ctrl keys together change layout."
-msgstr "Oba klávesy Ctrl spolu menia rozloženie."
-
-#: ../rules/base.xml.in.h:96
-msgid "Both Shift keys together change layout."
-msgstr "Oba klávesy Shift spolu menia rozloženie."
-
-#: ../rules/base.xml.in.h:97
-msgid "Both Win-keys switch layout while pressed."
-msgstr "Oba klávesy Win spolu menia rozloženie."
-
-#: ../rules/base.xml.in.h:98
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:99
-msgid "Braille"
-msgstr "Brailleovo"
-
-#: ../rules/base.xml.in.h:100
-msgid "Brazil"
-msgstr "Brazília"
-
-#: ../rules/base.xml.in.h:101
-msgid "Brazilian ABNT2"
-msgstr "Brazílska ABNT2"
-
-#: ../rules/base.xml.in.h:102
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:103
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:104
-msgid "Buckwalter"
-msgstr "Buckwalter (transliterácia arabÄiny)"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bulgaria"
-msgstr "Bulharsko"
-
-#: ../rules/base.xml.in.h:106
-msgid "Cambodia"
-msgstr "Kambodža"
-
-#: ../rules/base.xml.in.h:107 ../rules/sun.xml.in.h:29
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:108
-msgid "Canada"
-msgstr "Kanada"
-
-#: ../rules/base.xml.in.h:109
-msgid "Caps Lock is Compose."
-msgstr "Caps Lock je Compose."
-
-#: ../rules/base.xml.in.h:110
-msgid "CapsLock LED shows alternative layout."
-msgstr "Caps Lock LED zobrazuje alternatívne rozloženie."
-
-#: ../rules/base.xml.in.h:111
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
-msgstr "Caps Lock funguje ako Shift s uzamknutím. Shift „pozastaví“ Caps Lock."
-
-#: ../rules/base.xml.in.h:112
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
-msgstr "Caps Lock funguje ako Shift s uzamknutím. Shift neovplyvňuje Caps Lock."
-
-#: ../rules/base.xml.in.h:113
-msgid "CapsLock just locks the Shift modifier."
-msgstr "CapsLock iba zamkne modifikátor Shift."
-
-#: ../rules/base.xml.in.h:114 ../rules/sun.xml.in.h:33
-msgid "CapsLock key behavior"
-msgstr "Správanie klávesu Caps Lock"
-
-#: ../rules/base.xml.in.h:115
-msgid "CapsLock key changes layout."
-msgstr "Kláves Caps Lock mení rozloženie."
-
-#: ../rules/base.xml.in.h:116
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "Caps Lock prepne Shift, Äím ovplyvní vÅ¡etky klávesy."
-
-#: ../rules/base.xml.in.h:117
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "Caps Lock prepne nermálnu kapitalizáciu abecedných znakov."
-
-#: ../rules/base.xml.in.h:118
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
-msgstr "Caps Lock používa interný prevod na kapitálky. Shift „pozastaví“ Caps Lock."
-
-#: ../rules/base.xml.in.h:119
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
-msgstr "Caps Lock používa interný prevod na kapitálky. Shift neovplyvňuje Caps Lock."
-
-#: ../rules/base.xml.in.h:120
-msgid "Catalan variant with middle-dot L"
-msgstr "Katalánsky variant s L s bodkou v strede"
-
-#: ../rules/base.xml.in.h:121
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:122
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:123
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternatívna voľba)"
-
-#: ../rules/base.xml.in.h:124
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:125
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:126
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:127
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:128
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:129
-msgid "Chuvash"
-msgstr "Čuvašské"
-
-#: ../rules/base.xml.in.h:130
-msgid "Chuvash Latin"
-msgstr "Čuvašské latin"
-
-#: ../rules/base.xml.in.h:131
-msgid "Classic Dvorak"
-msgstr "Klasické dvorak"
-
-#: ../rules/base.xml.in.h:132
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:133
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:134
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 kláves)"
-
-#: ../rules/base.xml.in.h:135
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 kláves)"
-
-#: ../rules/base.xml.in.h:136
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 kláves)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:138
-msgid "Compose key position"
-msgstr "Pozícia klávesu Compose"
-
-#: ../rules/base.xml.in.h:139
-msgid "Congo, Democratic Republic of the"
-msgstr "Konžská demokratická republika"
-
-#: ../rules/base.xml.in.h:140
-msgid "Control is mapped to the Win-keys (and the usual Ctrl keys)."
-msgstr "Control je mapovaný na klávesy Win (a zvyÄajné klávesy Ctrl)."
-
-#: ../rules/base.xml.in.h:141
-msgid "Croatia"
-msgstr "Chorvátsko"
-
-#: ../rules/base.xml.in.h:142
-msgid "Ctrl key at bottom left"
-msgstr "Kláves Ctrl vľavo dole"
-
-#: ../rules/base.xml.in.h:143
-msgid "Ctrl key at left of 'A'"
-msgstr "Kláves Ctrl naľavo od „A“"
-
-#: ../rules/base.xml.in.h:144
-msgid "Ctrl key position"
-msgstr "Pozícia klávesu Ctrl"
-
-#: ../rules/base.xml.in.h:145
-msgid "Ctrl+Shift change layout."
-msgstr "Ctrl+Shift mení rozloženie."
-
-#: ../rules/base.xml.in.h:146
-msgid "Cyrillic"
-msgstr "azbuka"
-
-#: ../rules/base.xml.in.h:147 ../rules/sun.xml.in.h:39
-msgid "Cze"
-msgstr "ÄŒes"
-
-#: ../rules/base.xml.in.h:148
-msgid "Czechia"
-msgstr "ÄŒesko"
-
-#: ../rules/base.xml.in.h:149
-msgid "DRC"
-msgstr "DRC"
-
-#: ../rules/base.xml.in.h:150
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:151 ../rules/sun.xml.in.h:42
-msgid "Dead acute"
-msgstr "mŕtvy dĺžeň"
-
-#: ../rules/base.xml.in.h:152 ../rules/sun.xml.in.h:43
-msgid "Dead grave acute"
-msgstr "mÅ•tvy opaÄný dĺžeň"
-
-#: ../rules/base.xml.in.h:153
-msgid "Default numeric keypad keys."
-msgstr "Štandardné klávesy numerickej klávesnice."
-
-#: ../rules/base.xml.in.h:154
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:155
-msgid "Dell 101-key PC"
-msgstr "DELL PC 101 kláves"
-
-#: ../rules/base.xml.in.h:156
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:157
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Laptop/notebook Precision série M"
-
-#: ../rules/base.xml.in.h:158
-msgid "Dell Latitude series laptop"
-msgstr "Laptop série Dell Latitude"
-
-#: ../rules/base.xml.in.h:159
-msgid "Dell SK-8125 USB Multimedia Keybard"
-msgstr "Dell SK-8125 USB multimediálna klávesnica"
-
-#: ../rules/base.xml.in.h:160
-msgid "Dell SK-8135 USB Multimedia Keybard"
-msgstr "Dell SK-8135 USB multimediálna klávesnica"
-
-#: ../rules/base.xml.in.h:161
-msgid "Dell USB Multimedia Keybard"
-msgstr "Dell USB multimediálna klávesnica"
-
-#: ../rules/base.xml.in.h:162
-msgid "Denmark"
-msgstr "Dánsko"
-
-#: ../rules/base.xml.in.h:163 ../rules/sun.xml.in.h:44
-msgid "Deu"
-msgstr "Nem"
-
-#: ../rules/base.xml.in.h:164
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:165
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond séria 9801 / 9802"
-
-#: ../rules/base.xml.in.h:166 ../rules/sun.xml.in.h:46
-msgid "Dnk"
-msgstr "Dán"
-
-# rozloženie klávesnice
-#: ../rules/base.xml.in.h:167 ../rules/sun.xml.in.h:48
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:168
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "Dvorak, poľské úvodzovky na klávese „1/!“"
-
-#: ../rules/base.xml.in.h:169
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, poľské úvodzovky na klávese úvodzoviek"
-
-#: ../rules/base.xml.in.h:170
-msgid "Eastern"
-msgstr "východné"
-
-#: ../rules/base.xml.in.h:171 ../rules/sun.xml.in.h:49
-msgid "Eliminate dead keys"
-msgstr "Eliminovať mrtvé kláves"
-
-#: ../rules/base.xml.in.h:172
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:173
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:174
-msgid "Ergonomic"
-msgstr "ergonomické"
-
-#: ../rules/base.xml.in.h:175 ../rules/sun.xml.in.h:50
-msgid "Esp"
-msgstr "Å pa"
-
-#: ../rules/base.xml.in.h:176
-msgid "Esperanto"
-msgstr "esperanto"
-
-#: ../rules/base.xml.in.h:177
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:178
-msgid "Estonia"
-msgstr "Estónsko"
-
-#: ../rules/base.xml.in.h:179
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:180
-msgid "Ethiopia"
-msgstr "Etiópia"
-
-#: ../rules/base.xml.in.h:181
-msgid "Evdev-managed keyboard"
-msgstr "Klávesnica spravovaná Evdev"
-
-#: ../rules/base.xml.in.h:182
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:183
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:184
-msgid "Extended"
-msgstr "rozšírené"
-
-#: ../rules/base.xml.in.h:185
-msgid "Extended Backslash"
-msgstr "Široký backslash"
-
-#: ../rules/base.xml.in.h:186
-msgid "F-letter (F) variant"
-msgstr "variant písmena F"
-
-#: ../rules/base.xml.in.h:187
-msgid "Fao"
-msgstr "Fao"
-
-#: ../rules/base.xml.in.h:188
-msgid "Faroe Islands"
-msgstr "Faerské ostrovy"
-
-#: ../rules/base.xml.in.h:189 ../rules/sun.xml.in.h:51
-msgid "Fin"
-msgstr "Fín"
-
-#: ../rules/base.xml.in.h:190
-msgid "Finland"
-msgstr "Fínsko"
-
-#: ../rules/base.xml.in.h:191
-msgid "Force standard legacy keypad"
-msgstr "Vynútiť štandardnú zastaralú numerickú klávesnicu"
-
-#: ../rules/base.xml.in.h:192 ../rules/sun.xml.in.h:53
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:193
-msgid "France"
-msgstr "Francúzsko"
-
-#: ../rules/base.xml.in.h:194 ../rules/sun.xml.in.h:55
-msgid "French"
-msgstr "Francúzske"
-
-#: ../rules/base.xml.in.h:195
-msgid "French (Macintosh)"
-msgstr "Francúzske (Macintosh)"
-
-#: ../rules/base.xml.in.h:196 ../rules/sun.xml.in.h:56
-msgid "French (legacy)"
-msgstr "Francúzske (zastaralé)"
-
-#: ../rules/base.xml.in.h:197
-msgid "French Dvorak"
-msgstr "Francúzske dvorak"
-
-#: ../rules/base.xml.in.h:198
-msgid "French, Sun dead keys"
-msgstr "Francúzske, mŕtve klávesy Sun"
-
-#: ../rules/base.xml.in.h:199
-msgid "French, eliminate dead keys"
-msgstr "Francúzske, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:200
-msgid "Fula"
-msgstr "fulbÄina"
-
-#: ../rules/base.xml.in.h:201
-msgid "GBr"
-msgstr "VBr"
-
-#: ../rules/base.xml.in.h:202
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:203
-msgid "Generic 101-key PC"
-msgstr "všeobecná PC 101 kláves"
-
-#: ../rules/base.xml.in.h:204
-msgid "Generic 102-key (Intl) PC"
-msgstr "všeobecná PC 102 kláves (medz.)"
-
-#: ../rules/base.xml.in.h:205
-msgid "Generic 104-key PC"
-msgstr "všeobecná PC 104 kláves"
-
-#: ../rules/base.xml.in.h:206
-msgid "Generic 105-key (Intl) PC"
-msgstr "všeobecná 105-kláv. (medzinár.) PC"
-
-#: ../rules/base.xml.in.h:207
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:208
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:209
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:210
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:211
-msgid "Geo"
-msgstr "Gru"
-
-#: ../rules/base.xml.in.h:212
-msgid "Georgia"
-msgstr "Gruzínsko"
-
-#: ../rules/base.xml.in.h:213
-msgid "German (Macintosh)"
-msgstr "Nemecké (Macintosh)"
-
-#: ../rules/base.xml.in.h:214
-msgid "German, Sun dead keys"
-msgstr "Nemecké, mŕtve klávesy Sun"
-
-#: ../rules/base.xml.in.h:215
-msgid "German, eliminate dead keys"
-msgstr "Francúzske, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:216
-msgid "Germany"
-msgstr "Nemecko"
-
-#: ../rules/base.xml.in.h:217
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:218
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:219
-msgid "Gre"
-msgstr "Gre"
-
-#: ../rules/base.xml.in.h:220
-msgid "Greece"
-msgstr "Grécko"
-
-#: ../rules/base.xml.in.h:221
-msgid "Gujarati"
-msgstr "Gudžarátska"
-
-#: ../rules/base.xml.in.h:222
-msgid "Gurmukhi"
-msgstr "Gurmuchské"
-
-# je firma
-#: ../rules/base.xml.in.h:223
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:224
-msgid "Hausa"
-msgstr "hauské"
-
-#: ../rules/base.xml.in.h:225
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:226
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:227
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:228
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:229
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:230
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:231
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:232
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:233
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:234
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-# bolnagri je vstupná metóda
-#: ../rules/base.xml.in.h:235
-msgid "Hindi Bolnagri"
-msgstr "hindské bolnagri"
-
-#: ../rules/base.xml.in.h:236
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:237
-msgid "Hrv"
-msgstr "Chor"
-
-#: ../rules/base.xml.in.h:238 ../rules/sun.xml.in.h:59
-msgid "Hun"
-msgstr "MaÄ"
-
-#: ../rules/base.xml.in.h:239
-msgid "Hungary"
-msgstr "MaÄarsko"
-
-#: ../rules/base.xml.in.h:240
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper je mapovaný na Win-klávesy."
-
-#: ../rules/base.xml.in.h:241
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:242
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:243
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:244
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (alternatívna voľba)"
-
-#: ../rules/base.xml.in.h:245
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:246
-msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#: ../rules/base.xml.in.h:247 ../rules/sun.xml.in.h:61
-msgid "ISO Alternate"
-msgstr "ISO alternatívne"
-
-#: ../rules/base.xml.in.h:248
-msgid "Iceland"
-msgstr "Island"
-
-#: ../rules/base.xml.in.h:249
-msgid "Igbo"
-msgstr "igbo"
-
-#: ../rules/base.xml.in.h:250
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:251
-msgid "India"
-msgstr "India"
-
-#: ../rules/base.xml.in.h:252 ../rules/sun.xml.in.h:62
-msgid "International (with dead keys)"
-msgstr "Medzinárodné (s mŕtvymi klávesmi)"
-
-#: ../rules/base.xml.in.h:253
-msgid "Inuktitut"
-msgstr "inuktitut"
-
-#: ../rules/base.xml.in.h:254
-msgid "Iran"
-msgstr "Irán"
-
-#: ../rules/base.xml.in.h:255
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:256
-msgid "Ireland"
-msgstr "Ãrsko"
-
-#: ../rules/base.xml.in.h:257
-msgid "Irl"
-msgstr "Irs"
-
-#: ../rules/base.xml.in.h:258
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:259
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:260
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:261
-msgid "Isr"
-msgstr "Izr"
-
-#: ../rules/base.xml.in.h:262
-msgid "Israel"
-msgstr "Izrael"
-
-#: ../rules/base.xml.in.h:263 ../rules/sun.xml.in.h:63
-msgid "Ita"
-msgstr "Tal"
-
-#: ../rules/base.xml.in.h:264
-msgid "Italy"
-msgstr "Taliansko"
-
-#: ../rules/base.xml.in.h:265
-msgid "Japan"
-msgstr "Japonsko"
-
-#: ../rules/base.xml.in.h:266
-msgid "Japan (PC-98xx Series)"
-msgstr "Japonské (séria PC-98xx)"
-
-#: ../rules/base.xml.in.h:267
-msgid "Japanese 106-key"
-msgstr "Japonské 106 kláves"
-
-#: ../rules/base.xml.in.h:268
-msgid "Japanese keyboard options"
-msgstr "Japonské možnosti klávesnice"
-
-#: ../rules/base.xml.in.h:269 ../rules/sun.xml.in.h:66
-msgid "Jpn"
-msgstr "Jpn"
-
-# Kana is a general term for the syllabic Japanese scripts hiragana (ã²ã‚‰ãŒãª) and katakana (カタカナ) as well as the old system known as man'yÅgana.
-#: ../rules/base.xml.in.h:270
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:271
-msgid "Kana Lock key is locking"
-msgstr "Kláves Kana Lock zamyká"
-
-#: ../rules/base.xml.in.h:272
-msgid "Kannada"
-msgstr "Kannadské"
-
-#: ../rules/base.xml.in.h:273
-msgid "Kashubian"
-msgstr "kaÅ¡ubÄina"
-
-#: ../rules/base.xml.in.h:274
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:275
-msgid "Kazakh with Russian"
-msgstr "Kazašské s ruštinou"
-
-#: ../rules/base.xml.in.h:276
-msgid "Kazakhstan"
-msgstr "Kazachstan"
-
-#: ../rules/base.xml.in.h:277
-msgid "Keypad"
-msgstr "Numerická klávesnica"
-
-#: ../rules/base.xml.in.h:278
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:279
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:280
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:281
-msgid "Korea, Republic of"
-msgstr "Kórejská republika"
-
-#: ../rules/base.xml.in.h:282
-msgid "Korean 106-key"
-msgstr "Kórejské, 106 kláves"
-
-# fínske rozloženie
-# http://kotoistus.tksoft.com/linux/index-en.html
-#: ../rules/base.xml.in.h:283
-msgid "Kotoistus"
-msgstr "Kotoistus"
-
-#: ../rules/base.xml.in.h:284
-msgid "Kurdish, (F)"
-msgstr "Kurdské, (F)"
-
-#: ../rules/base.xml.in.h:285
-msgid "Kurdish, Arabic-Latin"
-msgstr "kurdÄina, arabsko-latinské"
-
-#: ../rules/base.xml.in.h:286
-msgid "Kurdish, Latin Alt-Q"
-msgstr "kurdÄina, latinské Alt-Q"
-
-#: ../rules/base.xml.in.h:287
-msgid "Kurdish, Latin Q"
-msgstr "kurdÄina, latinské Q"
-
-#: ../rules/base.xml.in.h:288
-msgid "Kyr"
-msgstr "Kyr"
-
-#: ../rules/base.xml.in.h:289
-msgid "Kyrgyzstan"
-msgstr "Kirgizsko"
-
-#: ../rules/base.xml.in.h:290
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:291
-msgid "LCtrl+LShift change layout."
-msgstr "ľavý Ctrl+ľavý Shift mení rozloženie."
-
-#: ../rules/base.xml.in.h:292
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:293
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:294
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (napr. Armada) Laptop Keyboard"
-
-#: ../rules/base.xml.in.h:295
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (napr. Presario) Internet Keyboard"
-
-#: ../rules/base.xml.in.h:296
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Laptop/notebook eMachines m68xx"
-
-#: ../rules/base.xml.in.h:297
-msgid "Latin"
-msgstr "Latinské"
-
-#: ../rules/base.xml.in.h:298
-msgid "Latin American"
-msgstr "Latinskoamerické"
-
-#: ../rules/base.xml.in.h:299
-msgid "Latin Unicode"
-msgstr "Latinské Unicode"
-
-#: ../rules/base.xml.in.h:300
-msgid "Latin Unicode qwerty"
-msgstr "Latinské Unicode qwerty"
-
-#: ../rules/base.xml.in.h:301
-msgid "Latin qwerty"
-msgstr "Latinské qwerty"
-
-# « »
-#: ../rules/base.xml.in.h:302
-msgid "Latin with guillemets"
-msgstr "Latinské s uhlovými zátvorkami"
-
-#: ../rules/base.xml.in.h:303
-msgid "Latvia"
-msgstr "Lotyšsko"
-
-#: ../rules/base.xml.in.h:304
-msgid "Layout switching"
-msgstr "Prepínanie rozloženia"
-
-#: ../rules/base.xml.in.h:305
-msgid "Left Alt is swapped with left Win-key."
-msgstr "Ľavý Alt je vymenený s ľavým klávesom Win."
-
-#: ../rules/base.xml.in.h:306
-msgid "Left Alt key changes layout."
-msgstr "Ľavý kláves Alt mení rozloženie."
-
-#: ../rules/base.xml.in.h:307
-msgid "Left Alt key switches layout while pressed."
-msgstr "Ľavý kláves Alt prepína rozloženie pri stlaÄení."
-
-#: ../rules/base.xml.in.h:308
-msgid "Left Ctrl key changes layout."
-msgstr "Ľavý kláves Ctrl mení rozloženie."
-
-#: ../rules/base.xml.in.h:309
-msgid "Left Shift key changes layout."
-msgstr "Ľavý kláves Shift mení rozloženie."
-
-#: ../rules/base.xml.in.h:310
-msgid "Left Win-key changes layout."
-msgstr "Ľavý kláves Win mení rozloženie."
-
-#: ../rules/base.xml.in.h:311
-msgid "Left Win-key is Compose."
-msgstr "Ľavý kláves Win je Compose."
-
-#: ../rules/base.xml.in.h:312
-msgid "Left Win-key switches layout while pressed."
-msgstr "Ľavý kláves Win prepína rozloženie pri stlaÄení."
-
-#: ../rules/base.xml.in.h:313
-msgid "Left hand"
-msgstr "ľavá ruka"
-
-#: ../rules/base.xml.in.h:314
-msgid "Left handed Dvorak"
-msgstr "ľavá ruka dvorak"
-
-#: ../rules/base.xml.in.h:315
-msgid "Lithuania"
-msgstr "Litva"
-
-#: ../rules/base.xml.in.h:316
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:317
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:318
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:319
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:320
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:321
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: ../rules/base.xml.in.h:322
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (alternatívna voľba)"
-
-#: ../rules/base.xml.in.h:323
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (alternatívna voľba2)"
-
-#: ../rules/base.xml.in.h:324
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:325
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:326
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 extra klávesy pomocou G15daemon"
-
-#: ../rules/base.xml.in.h:327
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:328
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:329
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:330
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:331
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:332
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:333
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:334
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Ltu"
-msgstr "Lit"
-
-#: ../rules/base.xml.in.h:336
-msgid "Lva"
-msgstr "Lot"
-
-#: ../rules/base.xml.in.h:337
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:338
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:339
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (medzin)"
-
-#: ../rules/base.xml.in.h:340
-msgid "Macedonia"
-msgstr "Macedónsko"
-
-#: ../rules/base.xml.in.h:341
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:342
-msgid "Macintosh Old"
-msgstr "Macintosh staré"
-
-#: ../rules/base.xml.in.h:343
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, mŕtve klávesy Sun"
-
-#: ../rules/base.xml.in.h:344
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:345
-msgid "Make CapsLock an additional Ctrl."
-msgstr "UrobiÅ¥ z CapsLock Äalší Ctrl."
-
-#: ../rules/base.xml.in.h:346
-msgid "Mal"
-msgstr "Mal"
-
-#: ../rules/base.xml.in.h:347
-msgid "Malayalam"
-msgstr "Malajalámske"
-
-#: ../rules/base.xml.in.h:348
-msgid "Maldives"
-msgstr "Maldivy"
-
-#: ../rules/base.xml.in.h:349
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:350
-msgid "Maltese keyboard with US layout"
-msgstr "Maltézska klávesnica s rozložením USA"
-
-#: ../rules/base.xml.in.h:351
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:352
-msgid "Maori"
-msgstr "maorÄina"
-
-#: ../rules/base.xml.in.h:353
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:354
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:355
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:356
-msgid "Menu is Compose."
-msgstr "Ponuka je Compose."
-
-#: ../rules/base.xml.in.h:357
-msgid "Menu key changes layout."
-msgstr "Kláves Ponuka mení rozloženie."
-
-#: ../rules/base.xml.in.h:358
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta je mapovaný na Win-klávesy."
-
-#: ../rules/base.xml.in.h:359
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta je mapovaný na ľavý Win-kláves."
-
-#: ../rules/base.xml.in.h:360
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:361
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Švédska"
-
-#: ../rules/base.xml.in.h:362
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:363
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:364
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:365
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:367
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:368 ../rules/sun.xml.in.h:72
-msgid "Miscellaneous compatibility options"
-msgstr "DodatoÄné voľby pre kompatibilitu"
-
-#: ../rules/base.xml.in.h:369
-msgid "Mkd"
-msgstr "Mak"
-
-#: ../rules/base.xml.in.h:370
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:371
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:372
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:373
-msgid "Mongolia"
-msgstr "Mongolsko"
-
-#: ../rules/base.xml.in.h:374
-msgid "Morocco"
-msgstr "Maroko"
-
-#: ../rules/base.xml.in.h:375 ../rules/sun.xml.in.h:73
-msgid "Multilingual"
-msgstr "ViacjazyÄné"
-
-#: ../rules/base.xml.in.h:376
-msgid "Multilingual, first part"
-msgstr "ViacjazyÄné, prvá ÄasÅ¥"
-
-#: ../rules/base.xml.in.h:377 ../rules/sun.xml.in.h:74
-msgid "Multilingual, second part"
-msgstr "ViacjazyÄné, druhá ÄasÅ¥"
-
-#: ../rules/base.xml.in.h:378
-msgid "Myanmar"
-msgstr "Mjanmarsko"
-
-#: ../rules/base.xml.in.h:379
-msgid "NICOLA-F style Backspace"
-msgstr "Backspace v štýle NICOLA-F"
-
-#: ../rules/base.xml.in.h:380
-msgid "Neostyle"
-msgstr "Neoštýl"
-
-#: ../rules/base.xml.in.h:381
-msgid "Nep"
-msgstr "Nep"
-
-#: ../rules/base.xml.in.h:382
-msgid "Nepal"
-msgstr "Nepál"
-
-#: ../rules/base.xml.in.h:383
-msgid "Netherlands"
-msgstr "Holandsko"
-
-#: ../rules/base.xml.in.h:384
-msgid "Nig"
-msgstr "Nig"
-
-#: ../rules/base.xml.in.h:385
-msgid "Nigeria"
-msgstr "Nigéria"
-
-#: ../rules/base.xml.in.h:386
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:387 ../rules/sun.xml.in.h:75
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:388
-msgid "Northern Saami"
-msgstr "severná saamÄina"
-
-#: ../rules/base.xml.in.h:389
-msgid "Northern Saami, eliminate dead keys"
-msgstr "severná saamÄina, eliminovaÅ¥ mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:390
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:391
-msgid "Norway"
-msgstr "Nórsko"
-
-#: ../rules/base.xml.in.h:392
-msgid "NumLock LED shows alternative layout."
-msgstr "Num Lock LED zobrazuje alternatívne rozloženie."
-
-#: ../rules/base.xml.in.h:393
-msgid "Numeric keypad keys work as with Mac."
-msgstr "Numerická klávesnica funguje ako na Mac."
-
-#: ../rules/base.xml.in.h:394
-msgid "Numeric keypad layout selection"
-msgstr "Výber rozloženia numerickej klávesnice"
-
-#: ../rules/base.xml.in.h:395
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:396
-msgid "Ogham"
-msgstr "Oghamské"
-
-#: ../rules/base.xml.in.h:397
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:398
-msgid "Oriya"
-msgstr "uríjÄina"
-
-#: ../rules/base.xml.in.h:399
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/internetová klávesnica"
-
-#: ../rules/base.xml.in.h:400
-msgid "Ossetian"
-msgstr "Osetské"
-
-#: ../rules/base.xml.in.h:401
-msgid "Ossetian, Winkeys"
-msgstr "Osetské, klávesy Win"
-
-#: ../rules/base.xml.in.h:402
-msgid "PC-98xx Series"
-msgstr "Séria PC-98xx"
-
-#: ../rules/base.xml.in.h:403
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:404
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#: ../rules/base.xml.in.h:405
-msgid "Pashto"
-msgstr "paÅ¡tÄina"
-
-# thajské rozloženie
-#: ../rules/base.xml.in.h:406
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:407 ../rules/sun.xml.in.h:78
-msgid "Phonetic"
-msgstr "Fonetické"
-
-#: ../rules/base.xml.in.h:408 ../rules/sun.xml.in.h:79
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:409
-msgid "Poland"
-msgstr "Poľsko"
-
-#: ../rules/base.xml.in.h:410
-msgid "Polytonic"
-msgstr "Polytónické"
-
-#: ../rules/base.xml.in.h:411
-msgid "Portugal"
-msgstr "Portugalsko"
-
-#: ../rules/base.xml.in.h:412
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "StlaÄenie ľavého klávesu Alt vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:413
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "StlaÄenie ľavého klávesu Win vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:414
-msgid "Press Menu key to choose 3rd level."
-msgstr "StlaÄenie klávesu Ponuka vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:415
-msgid "Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
-msgstr "StlaÄenie pravého klávesu Alt vyberá 3. úroveň, Shift+pravý kláves Alt key je Multi_Key."
-
-#: ../rules/base.xml.in.h:416
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "StlaÄenie pravého klávesu Alt vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:417
-msgid "Press Right Ctrl to choose 3rd level."
-msgstr "StlaÄenie pravého Ctrl vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:418
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "StlaÄenie pravého klávesu Win vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:419
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "StlaÄenie ľubovoľného klávesu Alt vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:420
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "StlaÄenie ľubovoľného klávesu Win vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:421
-msgid "Pro"
-msgstr "Pro"
-
-#: ../rules/base.xml.in.h:422
-msgid "Pro Keypad"
-msgstr "Pro Keypad"
-
-#: ../rules/base.xml.in.h:423
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:424
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:425 ../rules/sun.xml.in.h:88
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:426
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:427
-msgid "R-Alt switches layout while pressed."
-msgstr "Pravý kláves Alt prepína rozloženie pri stlaÄení."
-
-#: ../rules/base.xml.in.h:428
-msgid "Right Alt is Compose."
-msgstr "Pravý Alt je Compose."
-
-#: ../rules/base.xml.in.h:429
-msgid "Right Alt key changes layout."
-msgstr "Pravý kláves Alt mení rozloženie."
-
-#: ../rules/base.xml.in.h:430 ../rules/sun.xml.in.h:90
-msgid "Right Alt key never chooses 3rd level."
-msgstr "Pravý kláves Alt nikdy nevyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:431
-msgid "Right Ctrl is Compose."
-msgstr "Pravý Alt je Compose."
-
-#: ../rules/base.xml.in.h:432
-msgid "Right Ctrl key changes layout."
-msgstr "Pravý kláves Ctrl mení rozloženie."
-
-#: ../rules/base.xml.in.h:433
-msgid "Right Ctrl key switches layout while pressed."
-msgstr "Pravý kláves Win prepína rozloženie pri stlaÄení."
-
-#: ../rules/base.xml.in.h:434
-msgid "Right Ctrl key works as Right Alt."
-msgstr "Pravý kláves Control funguje ako pravý Alt."
-
-#: ../rules/base.xml.in.h:435
-msgid "Right Shift key changes layout."
-msgstr "Pravý kláves Shift mení rozloženie."
-
-#: ../rules/base.xml.in.h:436
-msgid "Right Win-key changes layout."
-msgstr "Pravý kláves Win mení rozloženie."
-
-#: ../rules/base.xml.in.h:437
-msgid "Right Win-key is Compose."
-msgstr "Pravý kláves Win je Compose"
-
-#: ../rules/base.xml.in.h:438
-msgid "Right Win-key switches layout while pressed."
-msgstr "Pravý kláves Win prepína rozloženie pri stlaÄení."
-
-#: ../rules/base.xml.in.h:439
-msgid "Right hand"
-msgstr "pravá ruka"
-
-#: ../rules/base.xml.in.h:440
-msgid "Right handed Dvorak"
-msgstr "pravá ruka dvorak"
-
-#: ../rules/base.xml.in.h:441
-msgid "Romania"
-msgstr "Rumunsko"
-
-#: ../rules/base.xml.in.h:442
-msgid "Romanian keyboard with German letters"
-msgstr "Rumunská klávesnica s nemeckými písmenmi"
-
-#: ../rules/base.xml.in.h:443
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Rumunská klávesnica s nemeckými písmenami, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:444
-msgid "Rou"
-msgstr "Rum"
-
-#: ../rules/base.xml.in.h:445 ../rules/sun.xml.in.h:95
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:446
-msgid "Russia"
-msgstr "Rusko"
-
-#: ../rules/base.xml.in.h:447 ../rules/sun.xml.in.h:96
-msgid "Russian"
-msgstr "Ruské"
-
-#: ../rules/base.xml.in.h:448
-msgid "Russian phonetic"
-msgstr "Ruské fonetické"
-
-#: ../rules/base.xml.in.h:449
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Ruské fonetické, eliminovať mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:450
-msgid "Russian with Kazakh"
-msgstr "Ruská s kazaštinou"
-
-#: ../rules/base.xml.in.h:451
-msgid "SCG"
-msgstr "SCG"
-
-#: ../rules/base.xml.in.h:452
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:453
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:454
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:455
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:456
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:457
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:458
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:459
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:460
-msgid "ScrollLock LED shows alternative layout."
-msgstr "Scroll Lock LED zobrazuje alternatívne rozloženie."
-
-#: ../rules/base.xml.in.h:461
-msgid "Serbia and Montenegro"
-msgstr "Srbsko a ÄŒierna Hora"
-
-#: ../rules/base.xml.in.h:462
-msgid "Shift with numeric keypad keys works as in MS Windows."
-msgstr "Shift s numerickými klávesmi pracuje ako v MS Windows."
-
-#: ../rules/base.xml.in.h:463
-msgid "Shift+CapsLock changes layout."
-msgstr "Shift+Caps Lock mení rozloženie."
-
-#: ../rules/base.xml.in.h:464
-msgid "Slovakia"
-msgstr "Slovensko"
-
-#: ../rules/base.xml.in.h:465
-msgid "Slovenia"
-msgstr "Slovinsko"
-
-#: ../rules/base.xml.in.h:466
-msgid "South Africa"
-msgstr "Južná Afrika"
-
-#: ../rules/base.xml.in.h:467
-msgid "Southern Uzbek"
-msgstr "južná uzbeÄtina"
-
-#: ../rules/base.xml.in.h:468
-msgid "Space key outputs non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Medzerník dáva znak nezalomiteľná medzera na štvrtej úrovni, tenká nezalomiteľná medzera na šiestej úrovni."
-
-#: ../rules/base.xml.in.h:469
-msgid "Space key outputs non-breakable space character at fourth level."
-msgstr "Medzerník dáva znak nezalomiteľná medzera na štvrtej úrovni."
-
-#: ../rules/base.xml.in.h:470
-msgid "Space key outputs non-breakable space character at second level."
-msgstr "Medzerník dáva znak nezalomiteľná medzera na druhej úrovni."
-
-#: ../rules/base.xml.in.h:471
-msgid "Space key outputs non-breakable space character at third level, nothing at fourth level."
-msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni, niÄ na Å¡tvrtej úrovni."
-
-#: ../rules/base.xml.in.h:472
-msgid "Space key outputs non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni, tenká nezalomiteľná medzera na štvrtej úrovni."
-
-#: ../rules/base.xml.in.h:473
-msgid "Space key outputs non-breakable space character at third level."
-msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni."
-
-#: ../rules/base.xml.in.h:474
-msgid "Space key outputs usual space at any level."
-msgstr "Medzerník dáva obyÄajnú medzeru na každej úrovni."
-
-#: ../rules/base.xml.in.h:475
-msgid "Spain"
-msgstr "Å panielsko"
-
-#: ../rules/base.xml.in.h:476 ../rules/sun.xml.in.h:103
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Špeciálne klávesy (Ctrl+Alt+&lt;key&gt;) spracované na serveru."
-
-#: ../rules/base.xml.in.h:477
-msgid "SrL"
-msgstr "SrL"
-
-#: ../rules/base.xml.in.h:478
-msgid "Sri Lanka"
-msgstr "Srí Lanka"
-
-#: ../rules/base.xml.in.h:479 ../rules/sun.xml.in.h:104
-msgid "Standard"
-msgstr "štandardné"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:481
-msgid "Standard RSTU"
-msgstr "štandardné RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:483
-msgid "Standard RSTU on Russian layout"
-msgstr "štandardné RSTU na ruskom rozložení"
-
-#: ../rules/base.xml.in.h:484 ../rules/sun.xml.in.h:112
-msgid "Sun dead keys"
-msgstr "mŕtve klávesy Sun"
-
-#: ../rules/base.xml.in.h:485
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:486
-msgid "Super is mapped to the Win-keys."
-msgstr "Super je mapovaný na klávesy Win."
-
-#: ../rules/base.xml.in.h:487
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:488 ../rules/sun.xml.in.h:113
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:489
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:490
-msgid "Swap Ctrl and CapsLock."
-msgstr "Vymeniť Control a Caps Lock"
-
-#: ../rules/base.xml.in.h:491
-msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-msgstr "VymeniÅ¥ kódy dvoch kláves keÄ jadro chybne detekuje klávesnice Mac."
-
-#: ../rules/base.xml.in.h:492 ../rules/sun.xml.in.h:115
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:493
-msgid "Sweden"
-msgstr "Švédsko"
-
-#: ../rules/base.xml.in.h:494
-msgid "Switzerland"
-msgstr "Å vajÄiarsko"
-
-#: ../rules/base.xml.in.h:495
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:496
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:497
-msgid "Syria"
-msgstr "Sýrske"
-
-#: ../rules/base.xml.in.h:498
-msgid "Syriac"
-msgstr "Syrské"
-
-#: ../rules/base.xml.in.h:499
-msgid "Syriac phonetic"
-msgstr "Sýske fonetické"
-
-#: ../rules/base.xml.in.h:500
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:501
-msgid "Tajikistan"
-msgstr "Tadžické"
-
-#: ../rules/base.xml.in.h:502
-msgid "Tamil"
-msgstr "Tamilské"
-
-#: ../rules/base.xml.in.h:503
-msgid "Tamil TAB Typewriter"
-msgstr "Tamiský TAB písací stroj"
-
-#: ../rules/base.xml.in.h:504
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamilské TSCII písací stroj"
-
-#: ../rules/base.xml.in.h:505
-msgid "Tamil Unicode"
-msgstr "Tamilské Unicode"
-
-#: ../rules/base.xml.in.h:506
-msgid "Tatar"
-msgstr "tatárÄina"
-
-#: ../rules/base.xml.in.h:507
-msgid "Telugu"
-msgstr "Telugské"
-
-#: ../rules/base.xml.in.h:508
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:509
-msgid "Thailand"
-msgstr "Thajsko"
-
-#: ../rules/base.xml.in.h:510 ../rules/sun.xml.in.h:119
-msgid "Third level choosers"
-msgstr "Výber tretej úrovne"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:511
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:512
-msgid "Tifinagh Alternative"
-msgstr "Tifinagh alternatívne"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:513
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Tifinagh alternatívne fonetické"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:514
-msgid "Tifinagh Extended"
-msgstr "Tifinagh rozšírené"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:515
-msgid "Tifinagh Extended Phonetic"
-msgstr "Tifinagh rozšírené fonetické"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:516
-msgid "Tifinagh Phonetic"
-msgstr "Tifinagh fonetické"
-
-#: ../rules/base.xml.in.h:517
-msgid "Tilde (~) variant"
-msgstr "Variant vlnovky (~)"
-
-#: ../rules/base.xml.in.h:518
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:519
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:520
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:521
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:522 ../rules/sun.xml.in.h:120
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:523
-msgid "Turkey"
-msgstr "Turecko"
-
-#: ../rules/base.xml.in.h:524
-msgid "Typewriter"
-msgstr "Písací stroj"
-
-#: ../rules/base.xml.in.h:525 ../rules/sun.xml.in.h:124
-msgid "U.S. English"
-msgstr "USA anglické"
-
-#: ../rules/base.xml.in.h:526
-#, fuzzy
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Klávesnica USA s bosniackymi digraphs"
-
-#: ../rules/base.xml.in.h:527
-#, fuzzy
-msgid "US keyboard with Bosnian letters"
-msgstr "Klávesnica USA s bosniackymi písmenami"
-
-#: ../rules/base.xml.in.h:528
-#, fuzzy
-msgid "US keyboard with Croatian digraphs"
-msgstr "Klávesnica USA s chorvátskymi digraphs"
-
-#: ../rules/base.xml.in.h:529
-#, fuzzy
-msgid "US keyboard with Croatian letters"
-msgstr "Klávesnica USA s chorvátskymi písmenami"
-
-#: ../rules/base.xml.in.h:530
-msgid "US keyboard with Lithuanian letters"
-msgstr "Americká klávesnica s litovskými písmenami"
-
-#: ../rules/base.xml.in.h:531
-#, fuzzy
-msgid "US keyboard with Slovenian digraphs"
-msgstr "Klávesnica USA so slovinskými digraphs"
-
-#: ../rules/base.xml.in.h:532
-#, fuzzy
-msgid "US keyboard with Slovenian letters"
-msgstr "Klávesnica USA so slovinskými písmenami"
-
-#: ../rules/base.xml.in.h:533 ../rules/sun.xml.in.h:126
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:534
-msgid "Udmurt"
-msgstr "udmurtÄina"
-
-#: ../rules/base.xml.in.h:535
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ukraine"
-msgstr "Ukrajinské"
-
-#: ../rules/base.xml.in.h:537
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:538 ../rules/sun.xml.in.h:127
-msgid "United Kingdom"
-msgstr "Spojené kráľovstvo"
-
-#: ../rules/base.xml.in.h:539
-msgid "Urdu"
-msgstr "urdÄina"
-
-#: ../rules/base.xml.in.h:540
-#, fuzzy
-msgid "Use Bosnian digraphs"
-msgstr "Použiť bosniacke digraphs"
-
-#: ../rules/base.xml.in.h:541
-#, fuzzy
-msgid "Use Croatian digraphs"
-msgstr "Použiť chorvátske digraphs"
-
-#: ../rules/base.xml.in.h:542
-#, fuzzy
-msgid "Use Slovenian digraphs"
-msgstr "Použiť slovinské digraphs"
-
-#: ../rules/base.xml.in.h:543
-msgid "Use guillemets for quotes"
-msgstr "Použiť uhlové zátvorky pre úvodzovky"
-
-#: ../rules/base.xml.in.h:544
-msgid "Use keyboard LED to show alternative layout."
-msgstr "Použiť LED klávesnice pre zobrazenie alternatívneho rozloženia."
-
-#: ../rules/base.xml.in.h:545
-msgid "Use keypad with unicode additions (arrows and math operators)"
-msgstr "Použiť numerickú klávesnicu s doplnkami Unicode (šípky a matematické operátory)"
-
-#: ../rules/base.xml.in.h:546
-msgid "Using space key to input non-breakable space character"
-msgstr "Použiť klávesu medzera na zadanie znaku nezalomiteľná medzera"
-
-#: ../rules/base.xml.in.h:547
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:548
-msgid "Uzbekistan"
-msgstr "Uzbecké"
-
-#: ../rules/base.xml.in.h:549
-msgid "Vietnam"
-msgstr "Vietnamské"
-
-#: ../rules/base.xml.in.h:550
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:551
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:552
-msgid "Western"
-msgstr "západné"
-
-#: ../rules/base.xml.in.h:553
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:554
-msgid "Winkeys"
-msgstr "Win klávesy"
-
-#: ../rules/base.xml.in.h:555
-msgid "With &lt;\\|&gt; key"
-msgstr "s klávesmi &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:556
-msgid "With EuroSign on 5"
-msgstr "so znakom euro na 5"
-
-#: ../rules/base.xml.in.h:557
-msgid "With guillemets"
-msgstr "s uhlovými zátvorkami"
-
-#: ../rules/base.xml.in.h:558
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:559
-msgid "Yoruba"
-msgstr "jorubÄina"
-
-#: ../rules/base.xml.in.h:560
-msgid "Z and ZHE swapped"
-msgstr "Z a ZHE vymenené"
-
-#: ../rules/base.xml.in.h:561
-msgid "Zar"
-msgstr "Zar"
-
-#: ../rules/base.xml.in.h:562
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:563
-msgid "azerty/digits"
-msgstr "azerty/Äíslice"
-
-#: ../rules/base.xml.in.h:564
-msgid "digits"
-msgstr "Äíslice"
-
-#: ../rules/base.xml.in.h:565
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "posunutá bodkoÄiarka a dvojbodka (zastaralé)"
-
-#: ../rules/base.xml.in.h:566
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:567 ../rules/sun.xml.in.h:132
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:568
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, rozšírená spätná lomka"
-
-#: ../rules/base.xml.in.h:569
-msgid "qwerty/digits"
-msgstr "qwerty/Äíslice"
-
-#: ../rules/base.xml.in.h:570
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/sun.xml.in.h:1
-msgid "\"Typewriter\""
-msgstr "Písací stroj"
-
-#: ../rules/sun.xml.in.h:17
-msgid "Acts as Shift with locking. Shift cancels Caps."
-msgstr "Pracuje ako Shift s uzamknutím. Shift ruší Caps."
-
-#: ../rules/sun.xml.in.h:18
-msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
-msgstr "Pracuje ako Shift s uzamknutím. Shift neruší Caps."
-
-#: ../rules/sun.xml.in.h:19
-msgid "Alt+Control changes group"
-msgstr "Alt+Control mení rozloženie"
-
-#: ../rules/sun.xml.in.h:20
-msgid "Alt+Shift changes group"
-msgstr "Alt+Shift mení rozloženie"
-
-#: ../rules/sun.xml.in.h:21
-msgid "Basic"
-msgstr "základné"
-
-#: ../rules/sun.xml.in.h:23
-msgid "Belgian"
-msgstr "Belgická"
-
-#: ../rules/sun.xml.in.h:25
-msgid "Both Alt keys together change group"
-msgstr "Oba klávesy Alt spolu menia rozloženie"
-
-#: ../rules/sun.xml.in.h:26
-msgid "Both Ctrl keys together change group"
-msgstr "Oba klávesy Ctrl spolu menia rozloženie"
-
-#: ../rules/sun.xml.in.h:27
-msgid "Both Shift keys together change group"
-msgstr "SpoloÄné stlaÄenie oboch Shift mení rozloženie"
-
-#: ../rules/sun.xml.in.h:28
-msgid "Bulgarian"
-msgstr "Bulharské"
-
-#: ../rules/sun.xml.in.h:30
-msgid "Canadian"
-msgstr "Kanadské"
-
-#: ../rules/sun.xml.in.h:31
-msgid "Caps Lock is Compose"
-msgstr "Caps Lock je Compose"
-
-#: ../rules/sun.xml.in.h:32
-msgid "Caps Lock key changes group"
-msgstr "Kláves Caps Lock mení rozloženie"
-
-#: ../rules/sun.xml.in.h:34
-msgid "Caps_Lock LED shows alternative group"
-msgstr "Caps Lock LED zobrazuje alternatívne rozloženie"
-
-#: ../rules/sun.xml.in.h:35
-msgid "Control Key Position"
-msgstr "Pozícia klávesu Control"
-
-#: ../rules/sun.xml.in.h:36
-msgid "Control key at bottom left"
-msgstr "Kláves Control vľavo dole"
-
-#: ../rules/sun.xml.in.h:37
-msgid "Control key at left of 'A'"
-msgstr "Kláves Control naľavo od „A“"
-
-#: ../rules/sun.xml.in.h:38
-msgid "Control+Shift changes group"
-msgstr "Control+Shift mení rozloženie"
-
-#: ../rules/sun.xml.in.h:40
-msgid "Czech"
-msgstr "České"
-
-#: ../rules/sun.xml.in.h:41
-msgid "Danish"
-msgstr "Dánske"
-
-#: ../rules/sun.xml.in.h:45
-msgid "DeuCH"
-msgstr "NemÅ v"
-
-#: ../rules/sun.xml.in.h:47
-msgid "Dvo"
-msgstr "Dvo"
-
-#: ../rules/sun.xml.in.h:52
-msgid "Finnish"
-msgstr "Fínske"
-
-#: ../rules/sun.xml.in.h:54
-msgid "FraCH"
-msgstr "FraÅ v"
-
-#: ../rules/sun.xml.in.h:57
-msgid "German"
-msgstr "Nemecké"
-
-#: ../rules/sun.xml.in.h:58
-msgid "Group Shift/Lock behavior"
-msgstr "Zoskupiť chovanie Shift/Lock"
-
-#: ../rules/sun.xml.in.h:60
-msgid "Hungarian"
-msgstr "MaÄarské"
-
-#: ../rules/sun.xml.in.h:64
-msgid "Italian"
-msgstr "Talianske"
-
-#: ../rules/sun.xml.in.h:65
-msgid "Japanese"
-msgstr "Japonské"
-
-#: ../rules/sun.xml.in.h:67
-msgid "Left Alt key changes group"
-msgstr "Ľavý kláves Alt mení rozloženie"
-
-#: ../rules/sun.xml.in.h:68
-msgid "Left Alt key switches group while pressed"
-msgstr "Ľavý kláves Alt prepína rozloženie pri stlaÄení"
-
-#: ../rules/sun.xml.in.h:69
-msgid "Left Ctrl key changes group"
-msgstr "Ľavý kláves Ctrl mení rozloženie"
-
-#: ../rules/sun.xml.in.h:70
-msgid "Left Shift key changes group"
-msgstr "Ľavý kláves Shift mení rozloženie"
-
-#: ../rules/sun.xml.in.h:71
-msgid "Make CapsLock an additional Control"
-msgstr "UrobiÅ¥ z CapsLock dodatoÄný Control"
-
-#: ../rules/sun.xml.in.h:76
-msgid "Norwegian"
-msgstr "Nórske"
-
-#: ../rules/sun.xml.in.h:77
-msgid "Num_Lock LED shows alternative group"
-msgstr "Num Lock LED zobrazuje alternatívne rozloženie"
-
-#: ../rules/sun.xml.in.h:80
-msgid "Polish"
-msgstr "Poľské"
-
-#: ../rules/sun.xml.in.h:81
-msgid "Polish with Polish quotes on key \"1/!\""
-msgstr "Poľské s poľskými úvodzovkami na klávese „1/!“"
-
-#: ../rules/sun.xml.in.h:82
-msgid "Portuguese"
-msgstr "Portugalské"
-
-#: ../rules/sun.xml.in.h:83
-msgid "Press Left Alt key to choose 3rd level"
-msgstr "StlaÄením ľavého klávesu Win vyberiete 3. úroveň"
-
-#: ../rules/sun.xml.in.h:84
-msgid "Press Right Alt key to choose 3rd level"
-msgstr "StlaÄením pravého klávesu Win vyberiete 3. úroveň"
-
-#: ../rules/sun.xml.in.h:85
-msgid "Press Right Alt-key to choose 3rd level, Shift+Right Alt-key is Multi_Key"
-msgstr "StlaÄením pravého klávesu Win vyberiete 3. úroveň, shift+pravý Alt je Multi_Key"
-
-#: ../rules/sun.xml.in.h:86
-msgid "Press Right Control to choose 3rd level"
-msgstr "StlaÄenie pravého Control vyberá 3. úroveň"
-
-#: ../rules/sun.xml.in.h:87
-msgid "Press any of Alt keys to choose 3rd level"
-msgstr "StlaÄením ľuboboľného klávesu Alt vyberiete 3. úroveň"
-
-#: ../rules/sun.xml.in.h:89
-msgid "Right Alt key changes group"
-msgstr "Pravý Alt mení rozloženie"
-
-#: ../rules/sun.xml.in.h:91
-msgid "Right Alt switches group while pressed"
-msgstr "Pravý kláves Alt prepína rozloženie pri stlaÄení"
-
-#: ../rules/sun.xml.in.h:92
-msgid "Right Control key works as Right Alt"
-msgstr "Kláves pravý Control funguje ako pravý Alt"
-
-#: ../rules/sun.xml.in.h:93
-msgid "Right Ctrl key changes group"
-msgstr "Kláves pravý Ctrl mení rozloženie"
-
-#: ../rules/sun.xml.in.h:94
-msgid "Right Shift key changes group"
-msgstr "Kláves pravý Shift mení rozloženie"
-
-#: ../rules/sun.xml.in.h:97
-msgid "Scroll Lock changes group"
-msgstr "Kláves Scroll Lock mení rozloženie"
-
-#: ../rules/sun.xml.in.h:98
-msgid "Scroll_Lock LED shows alternative group"
-msgstr "Scroll Lock LED zobrazuje alternatívne rozloženie"
-
-#: ../rules/sun.xml.in.h:99
-msgid "Shift with numpad keys works as in MS Windows"
-msgstr "Shift s numerickými klávesmi pracuje ako v MS Windows"
-
-#: ../rules/sun.xml.in.h:100
-msgid "Shift+CapsLock changes group"
-msgstr "Shift+Caps Lock mení rozloženie"
-
-#: ../rules/sun.xml.in.h:101
-msgid "Slovak"
-msgstr "Slovenské"
-
-#: ../rules/sun.xml.in.h:102
-msgid "Spanish"
-msgstr "Å panielske"
-
-#: ../rules/sun.xml.in.h:105
-msgid "Sun Type 4"
-msgstr "Sun Type 4"
-
-#: ../rules/sun.xml.in.h:106
-msgid "Sun Type 5"
-msgstr "Sun Type 5"
-
-#: ../rules/sun.xml.in.h:107
-msgid "Sun Type 5 European"
-msgstr "Sun Type 5 európske"
-
-#: ../rules/sun.xml.in.h:108
-msgid "Sun Type 5 Unix"
-msgstr "Sun Type 5 Unix"
-
-#: ../rules/sun.xml.in.h:109
-msgid "Sun Type 6"
-msgstr "Sun Type 6"
-
-#: ../rules/sun.xml.in.h:110
-msgid "Sun Type 6 Unix"
-msgstr "Sun Type 6 Unix"
-
-#: ../rules/sun.xml.in.h:111
-msgid "Sun Type 6 with Euro key"
-msgstr "Sun Type 6 s klávesom euro"
-
-#: ../rules/sun.xml.in.h:114
-msgid "Swap Control and Caps Lock"
-msgstr "Prehodiť Control a Caps Lock"
-
-#: ../rules/sun.xml.in.h:116
-msgid "Swedish"
-msgstr "Švédske"
-
-#: ../rules/sun.xml.in.h:117
-msgid "Swiss French"
-msgstr "Å vajÄiarske francúzske"
-
-#: ../rules/sun.xml.in.h:118
-msgid "Swiss German"
-msgstr "Nemecké (Å vajÄiarsko)"
-
-#: ../rules/sun.xml.in.h:121
-msgid "Turkish"
-msgstr "Turecké"
-
-#: ../rules/sun.xml.in.h:122
-msgid "Turkish (F)"
-msgstr "Turecké (F)"
-
-#: ../rules/sun.xml.in.h:123
-msgid "Turkish Alt-Q Layout"
-msgstr "Turecké rozloženie Alt-Q"
-
-#: ../rules/sun.xml.in.h:125
-msgid "U.S. English w/ ISO9995-3"
-msgstr "U.S.A. anglické s ISO9995-3"
-
-#: ../rules/sun.xml.in.h:128
-msgid "Use keyboard LED to show alternative group"
-msgstr "Použiť LED klávesnice pre zobrazenie alternatívnej skupiny"
-
-#: ../rules/sun.xml.in.h:129
-msgid "Uses internal capitalization. Shift cancels Caps."
-msgstr "Používa interný prevod na kapitálky. Shift ruší Caps."
-
-#: ../rules/sun.xml.in.h:130
-msgid "Uses internal capitalization. Shift doesn't cancel Caps."
-msgstr "Používa interný prevod na kapitálky. Shift neruší Caps."
-
-#: ../rules/sun.xml.in.h:131
-msgid "bksl"
-msgstr "bksl"
-
-#: ../rules/sun.xml.in.h:133
-msgid "type4"
-msgstr "type4"
-
-#~ msgid "A Tamil typewrite-style keymap; TAB encoding"
-#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie TAB"
-
-#~ msgid "A Tamil typewrite-style keymap; TSCII encoding"
-#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie TSCII"
-
-#~ msgid "A Tamil typewrite-style keymap; Unicode encoding"
-#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie Unicode"
-
-#~ msgid "Arb"
-#~ msgstr "Arb"
-
-#~ msgid "Bosnian"
-#~ msgstr "Bosnianske"
-
-#~ msgid "Burmese"
-#~ msgstr "Burmézsky"
-
-#~ msgid "CloGaelach Laptop"
-#~ msgstr "CloGaelach Laptop"
-
-#~ msgid "Czech (qwerty)"
-#~ msgstr "České (qwerty)"
-
-#~ msgid "Dutch"
-#~ msgstr "Holandské"
-
-#~ msgid "French Canadian"
-#~ msgstr "Francúzske kanadské"
-
-#~ msgid "Georgian (latin)"
-#~ msgstr "Gruzínske (latinka)"
-
-#~ msgid "Georgian (russian)"
-#~ msgstr "Gruzínske (azbuka)"
-
-#~ msgid "Grc"
-#~ msgstr "Grc"
-
-#~ msgid "Guj"
-#~ msgstr "Guj"
-
-#~ msgid "Hin"
-#~ msgstr "Hin"
-
-#~ msgid "Hindi"
-#~ msgstr "Hindské"
-
-#~ msgid "INSCRIPT layout"
-#~ msgstr "INSCRIPT rozloženie"
-
-#~ msgid "IS434 laptop"
-#~ msgstr "IS434 laptop"
-
-#~ msgid "Iku"
-#~ msgstr "Inu"
-
-#~ msgid "Irish"
-#~ msgstr "Ãrske"
-
-#~ msgid "Lithuanian azerty standard"
-#~ msgstr "Litovské azerty štandardné"
-
-#~ msgid "Lithuanian qwerty \"numeric\""
-#~ msgstr "Litovské qwerty \"Äíselné\""
-
-#~ msgid "Logitech iTouch keyboard Internet Navigator"
-#~ msgstr "Logitech iTouch keyboard Internet Navigator"
-
-#~ msgid "Northern Saami (Finland)"
-#~ msgstr "Severný Saami (Fínsko)"
-
-#~ msgid "Northern Saami (Sweden)"
-#~ msgstr "Severný Saami (Švédsko)"
-
-#~ msgid "Ogh"
-#~ msgstr "Ogh"
-
-#~ msgid "Ori"
-#~ msgstr "Ori"
-
-#~ msgid "PC104"
-#~ msgstr "PC104"
-
-#~ msgid "Polish (qwertz)"
-#~ msgstr "Poľské (qwertz)"
-
-#~ msgid "PowerPC PS/2"
-#~ msgstr "PowerPC PS/2"
-
-#~ msgid "Sapmi"
-#~ msgstr "Sapmi"
-
-#~ msgid "Scg"
-#~ msgstr "Scg"
-
-#~ msgid "Slovak (qwerty)"
-#~ msgstr "Slovenské (qwerty)"
-
-#~ msgid "Sme"
-#~ msgstr "Sme"
-
-#~ msgid "Sv"
-#~ msgstr "Sv"
-
-#~ msgid "Tel"
-#~ msgstr "Tel"
-
-#~ msgid "Thai (Kedmanee)"
-#~ msgstr "Thajské (Kedmanee)"
-
-#~ msgid "Tml"
-#~ msgstr "Tml"
-
-#~ msgid "U.S. English w/ dead keys"
-#~ msgstr "Anglické (US) s mŕtvymi klávesmi"
-
-#~ msgid "US"
-#~ msgstr "US"
-
-#~ msgid "Yug"
-#~ msgstr "Juh"
-
-#~ msgid "Yugoslavian"
-#~ msgstr "Juhoslovanské"
-
-#~ msgid "abnt2"
-#~ msgstr "abnt2"
-
-#~ msgid "laptop"
-#~ msgstr "laptop"
-
-#~ msgid "sefi"
-#~ msgstr "sefi"
-
-#~ msgid "si1452"
-#~ msgstr "si1452"
-
-#~ msgid "uni/101/qwerty/comma"
-#~ msgstr "uni/101/qwerty/Äiarka"
-
-#~ msgid "uni/101/qwerty/dot"
-#~ msgstr "uni/101/qwerty/bodka"
-
-#~ msgid "uni/101/qwertz/comma"
-#~ msgstr "uni/101/qwertz/Äiarka"
-
-#~ msgid "uni/101/qwertz/dot"
-#~ msgstr "uni/101/qwertz/bodka"
-
-#~ msgid "uni/102/qwerty/comma"
-#~ msgstr "uni/102/qwerty/Äiarka"
-
-#~ msgid "uni/102/qwerty/dot"
-#~ msgstr "uni/102/qwerty/bodka"
-
-#~ msgid "uni/102/qwertz/comma"
-#~ msgstr "uni/102/qwertz/Äiarka"
-
-#~ msgid "uni/102/qwertz/dot"
-#~ msgstr "uni/102/qwertz/bodka"
+# Slovak translation of xkeyboard-config
+# Copyright (C) 2003 Free Software Foundation
+# Zdenko Podobný <zdpo@mailbox.sk>, 2003.
+# Ivan Masár <helix84@centrum.sk>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 1.0-pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-06-28 15:21+0100\n"
+"PO-Revision-Date: 2007-09-04 22:49+0100\n"
+"Last-Translator: Zdenko Podobný <zdpo@mailbox.sk>\n"
+"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.2beta3\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2
+msgid "(Legacy) Alternative"
+msgstr "(Zastaralé) alternatívne"
+
+#: ../rules/base.xml.in.h:3
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Zastaralé) alternatívne, s mŕtvymi klávesmi Sun"
+
+#: ../rules/base.xml.in.h:4
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Zastaralé) alternatívne, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Dvorak"
+msgstr "(Zastaralé) dvorak"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/104 key Compatible"
+msgstr "Kompatibilná s 101/104 klávesami"
+
+#: ../rules/base.xml.in.h:7 ../rules/sun.xml.in.h:2
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/Äiarka/mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:8 ../rules/sun.xml.in.h:3
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:9 ../rules/sun.xml.in.h:4
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/bodka/mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:10 ../rules/sun.xml.in.h:5
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/bodka/eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:11 ../rules/sun.xml.in.h:6
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/Äiarka/mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:13 ../rules/sun.xml.in.h:7
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/bodka/mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:14 ../rules/sun.xml.in.h:8
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/bodka/eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:15 ../rules/sun.xml.in.h:9
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/Äiarka/mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:16 ../rules/sun.xml.in.h:10
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:17 ../rules/sun.xml.in.h:11
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/bodka/mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:18 ../rules/sun.xml.in.h:12
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/bodka/eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:19 ../rules/sun.xml.in.h:13
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/Äiarka/mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:20 ../rules/sun.xml.in.h:14
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:21 ../rules/sun.xml.in.h:15
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/bodka/mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:22 ../rules/sun.xml.in.h:16
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/bodka/eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:23
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:24
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:26
+msgid "ACPI Standard"
+msgstr "Å tandard ACPI"
+
+# gruzínske rozloženie
+#: ../rules/base.xml.in.h:27
+msgid "AZERTY Tskapo"
+msgstr "AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:28
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:32
+msgid "Add the EuroSign to the 2 key."
+msgstr "Pridať znak euro na kláves 2."
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the EuroSign to the 5 key."
+msgstr "Pridať znak euro na kláves 5."
+
+#: ../rules/base.xml.in.h:34
+msgid "Add the EuroSign to the E key."
+msgstr "Pridať znak euro na kláves E."
+
+#: ../rules/base.xml.in.h:35
+msgid "Add the standard behavior to Menu key."
+msgstr "Pridať štandardné chovanie klávesu Ponuka."
+
+#: ../rules/base.xml.in.h:36
+msgid "Adding the EuroSign to certain keys"
+msgstr "Pridať znak euro na isté klávesy."
+
+#: ../rules/base.xml.in.h:37
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:39
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:42
+msgid "Albania"
+msgstr "Albánsko"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt and Meta are on the Alt keys."
+msgstr "Alt a Meta sú na klávesoch Alt."
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "Meta je mapovaný na pravý kláves Win a Super na Ponuku."
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+CapsLock changes layout."
+msgstr "Alt+Caps Lock mení rozloženie."
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Ctrl change layout."
+msgstr "Alt+Control mení rozloženie."
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Shift change layout."
+msgstr "Alt+Shift mení rozloženie."
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Chovanie klávesu Alt/Win"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "alternatívne"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "alternatívne východné"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "alternatívne fonetické"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international (former us_intl)"
+msgstr "alternatívne medzinárodné (býv. us_intl)"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "alternatívne, mŕtve klávesy Sun"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "alternatívne, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "alternatívne, iba latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:59
+msgid "Apostrophe (') variant"
+msgstr "Variant (') apostrof"
+
+#: ../rules/base.xml.in.h:60
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:61
+msgid "Apple Laptop"
+msgstr "Apple laptop"
+
+#: ../rules/base.xml.in.h:62
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:63
+msgid "Arabic"
+msgstr "Arabsky"
+
+#: ../rules/base.xml.in.h:64
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:65
+msgid "Armenia"
+msgstr "Arménsko"
+
+#: ../rules/base.xml.in.h:66
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:67
+msgid "Azerbaijan"
+msgstr "Azerbajdžan"
+
+#: ../rules/base.xml.in.h:68
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 bezdrôtová internetová klávesnica"
+
+#: ../rules/base.xml.in.h:69
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:70
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:71
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:72
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:73
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:74
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:75
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:76
+msgid "Ban"
+msgstr "Ban"
+
+#: ../rules/base.xml.in.h:77
+msgid "Bangladesh"
+msgstr "Bangladéš"
+
+#: ../rules/base.xml.in.h:78 ../rules/sun.xml.in.h:22
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:79
+msgid "Belarus"
+msgstr "Bielorusko"
+
+#: ../rules/base.xml.in.h:80
+msgid "Belgium"
+msgstr "Belgicko"
+
+#: ../rules/base.xml.in.h:81
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:82
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:83
+msgid "Bengali"
+msgstr "Bengálska"
+
+#: ../rules/base.xml.in.h:84
+msgid "Bengali Probhat"
+msgstr "Bengálsky Probhat"
+
+#: ../rules/base.xml.in.h:85
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomické, na spôsob Dvorak"
+
+#: ../rules/base.xml.in.h:86
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomické, na spôsob Dvorak, iba latin-9"
+
+#: ../rules/base.xml.in.h:87 ../rules/sun.xml.in.h:24
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:88
+msgid "Bhu"
+msgstr "Bhu"
+
+#: ../rules/base.xml.in.h:89
+msgid "Bhutan"
+msgstr "Bhután"
+
+#: ../rules/base.xml.in.h:90
+msgid "Biblical Hebrew (Tiro)"
+msgstr "biblická hebrejÄina (Tiro)"
+
+#: ../rules/base.xml.in.h:91
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:92
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bosnia and Herzegovina"
+msgstr "Bosna a Hercegovina"
+
+#: ../rules/base.xml.in.h:94
+msgid "Both Alt keys together change layout."
+msgstr "Oba klávesy Alt spolu menia rozloženie."
+
+#: ../rules/base.xml.in.h:95
+msgid "Both Ctrl keys together change layout."
+msgstr "Oba klávesy Ctrl spolu menia rozloženie."
+
+#: ../rules/base.xml.in.h:96
+msgid "Both Shift keys together change layout."
+msgstr "Oba klávesy Shift spolu menia rozloženie."
+
+#: ../rules/base.xml.in.h:97
+msgid "Both Win-keys switch layout while pressed."
+msgstr "Oba klávesy Win spolu menia rozloženie."
+
+#: ../rules/base.xml.in.h:98
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:99
+msgid "Braille"
+msgstr "Brailleovo"
+
+#: ../rules/base.xml.in.h:100
+msgid "Brazil"
+msgstr "Brazília"
+
+#: ../rules/base.xml.in.h:101
+msgid "Brazilian ABNT2"
+msgstr "Brazílska ABNT2"
+
+#: ../rules/base.xml.in.h:102
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:103
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:104
+msgid "Buckwalter"
+msgstr "Buckwalter (transliterácia arabÄiny)"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bulgaria"
+msgstr "Bulharsko"
+
+#: ../rules/base.xml.in.h:106
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: ../rules/base.xml.in.h:107 ../rules/sun.xml.in.h:29
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:108
+msgid "Canada"
+msgstr "Kanada"
+
+#: ../rules/base.xml.in.h:109
+msgid "Caps Lock is Compose."
+msgstr "Caps Lock je Compose."
+
+#: ../rules/base.xml.in.h:110
+msgid "CapsLock LED shows alternative layout."
+msgstr "Caps Lock LED zobrazuje alternatívne rozloženie."
+
+#: ../rules/base.xml.in.h:111
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
+msgstr "Caps Lock funguje ako Shift s uzamknutím. Shift „pozastaví“ Caps Lock."
+
+#: ../rules/base.xml.in.h:112
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
+msgstr "Caps Lock funguje ako Shift s uzamknutím. Shift neovplyvňuje Caps Lock."
+
+#: ../rules/base.xml.in.h:113
+msgid "CapsLock just locks the Shift modifier."
+msgstr "CapsLock iba zamkne modifikátor Shift."
+
+#: ../rules/base.xml.in.h:114 ../rules/sun.xml.in.h:33
+msgid "CapsLock key behavior"
+msgstr "Správanie klávesu Caps Lock"
+
+#: ../rules/base.xml.in.h:115
+msgid "CapsLock key changes layout."
+msgstr "Kláves Caps Lock mení rozloženie."
+
+#: ../rules/base.xml.in.h:116
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "Caps Lock prepne Shift, Äím ovplyvní vÅ¡etky klávesy."
+
+#: ../rules/base.xml.in.h:117
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "Caps Lock prepne nermálnu kapitalizáciu abecedných znakov."
+
+#: ../rules/base.xml.in.h:118
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
+msgstr "Caps Lock používa interný prevod na kapitálky. Shift „pozastaví“ Caps Lock."
+
+#: ../rules/base.xml.in.h:119
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
+msgstr "Caps Lock používa interný prevod na kapitálky. Shift neovplyvňuje Caps Lock."
+
+#: ../rules/base.xml.in.h:120
+msgid "Catalan variant with middle-dot L"
+msgstr "Katalánsky variant s L s bodkou v strede"
+
+#: ../rules/base.xml.in.h:121
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:122
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:123
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternatívna voľba)"
+
+#: ../rules/base.xml.in.h:124
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:125
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:126
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:127
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:128
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:129
+msgid "Chuvash"
+msgstr "Čuvašské"
+
+#: ../rules/base.xml.in.h:130
+msgid "Chuvash Latin"
+msgstr "Čuvašské latin"
+
+#: ../rules/base.xml.in.h:131
+msgid "Classic Dvorak"
+msgstr "Klasické dvorak"
+
+#: ../rules/base.xml.in.h:132
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:133
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:134
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 kláves)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 kláves)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 kláves)"
+
+#: ../rules/base.xml.in.h:137
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:138
+msgid "Compose key position"
+msgstr "Pozícia klávesu Compose"
+
+#: ../rules/base.xml.in.h:139
+msgid "Congo, Democratic Republic of the"
+msgstr "Konžská demokratická republika"
+
+#: ../rules/base.xml.in.h:140
+msgid "Control is mapped to the Win-keys (and the usual Ctrl keys)."
+msgstr "Control je mapovaný na klávesy Win (a zvyÄajné klávesy Ctrl)."
+
+#: ../rules/base.xml.in.h:141
+msgid "Croatia"
+msgstr "Chorvátsko"
+
+#: ../rules/base.xml.in.h:142
+msgid "Ctrl key at bottom left"
+msgstr "Kláves Ctrl vľavo dole"
+
+#: ../rules/base.xml.in.h:143
+msgid "Ctrl key at left of 'A'"
+msgstr "Kláves Ctrl naľavo od „A“"
+
+#: ../rules/base.xml.in.h:144
+msgid "Ctrl key position"
+msgstr "Pozícia klávesu Ctrl"
+
+#: ../rules/base.xml.in.h:145
+msgid "Ctrl+Shift change layout."
+msgstr "Ctrl+Shift mení rozloženie."
+
+#: ../rules/base.xml.in.h:146
+msgid "Cyrillic"
+msgstr "azbuka"
+
+#: ../rules/base.xml.in.h:147 ../rules/sun.xml.in.h:39
+msgid "Cze"
+msgstr "ÄŒes"
+
+#: ../rules/base.xml.in.h:148
+msgid "Czechia"
+msgstr "ÄŒesko"
+
+#: ../rules/base.xml.in.h:149
+msgid "DRC"
+msgstr "DRC"
+
+#: ../rules/base.xml.in.h:150
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:151 ../rules/sun.xml.in.h:42
+msgid "Dead acute"
+msgstr "mŕtvy dĺžeň"
+
+#: ../rules/base.xml.in.h:152 ../rules/sun.xml.in.h:43
+msgid "Dead grave acute"
+msgstr "mÅ•tvy opaÄný dĺžeň"
+
+#: ../rules/base.xml.in.h:153
+msgid "Default numeric keypad keys."
+msgstr "Štandardné klávesy numerickej klávesnice."
+
+#: ../rules/base.xml.in.h:154
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:155
+msgid "Dell 101-key PC"
+msgstr "DELL PC 101 kláves"
+
+#: ../rules/base.xml.in.h:156
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:157
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Laptop/notebook Precision série M"
+
+#: ../rules/base.xml.in.h:158
+msgid "Dell Latitude series laptop"
+msgstr "Laptop série Dell Latitude"
+
+#: ../rules/base.xml.in.h:159
+msgid "Dell SK-8125 USB Multimedia Keybard"
+msgstr "Dell SK-8125 USB multimediálna klávesnica"
+
+#: ../rules/base.xml.in.h:160
+msgid "Dell SK-8135 USB Multimedia Keybard"
+msgstr "Dell SK-8135 USB multimediálna klávesnica"
+
+#: ../rules/base.xml.in.h:161
+msgid "Dell USB Multimedia Keybard"
+msgstr "Dell USB multimediálna klávesnica"
+
+#: ../rules/base.xml.in.h:162
+msgid "Denmark"
+msgstr "Dánsko"
+
+#: ../rules/base.xml.in.h:163 ../rules/sun.xml.in.h:44
+msgid "Deu"
+msgstr "Nem"
+
+#: ../rules/base.xml.in.h:164
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:165
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond séria 9801 / 9802"
+
+#: ../rules/base.xml.in.h:166 ../rules/sun.xml.in.h:46
+msgid "Dnk"
+msgstr "Dán"
+
+# rozloženie klávesnice
+#: ../rules/base.xml.in.h:167 ../rules/sun.xml.in.h:48
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:168
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "Dvorak, poľské úvodzovky na klávese „1/!“"
+
+#: ../rules/base.xml.in.h:169
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, poľské úvodzovky na klávese úvodzoviek"
+
+#: ../rules/base.xml.in.h:170
+msgid "Eastern"
+msgstr "východné"
+
+#: ../rules/base.xml.in.h:171 ../rules/sun.xml.in.h:49
+msgid "Eliminate dead keys"
+msgstr "Eliminovať mrtvé kláves"
+
+#: ../rules/base.xml.in.h:172
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:173
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:174
+msgid "Ergonomic"
+msgstr "ergonomické"
+
+#: ../rules/base.xml.in.h:175 ../rules/sun.xml.in.h:50
+msgid "Esp"
+msgstr "Å pa"
+
+#: ../rules/base.xml.in.h:176
+msgid "Esperanto"
+msgstr "esperanto"
+
+#: ../rules/base.xml.in.h:177
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:178
+msgid "Estonia"
+msgstr "Estónsko"
+
+#: ../rules/base.xml.in.h:179
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:180
+msgid "Ethiopia"
+msgstr "Etiópia"
+
+#: ../rules/base.xml.in.h:181
+msgid "Evdev-managed keyboard"
+msgstr "Klávesnica spravovaná Evdev"
+
+#: ../rules/base.xml.in.h:182
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:183
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:184
+msgid "Extended"
+msgstr "rozšírené"
+
+#: ../rules/base.xml.in.h:185
+msgid "Extended Backslash"
+msgstr "Široký backslash"
+
+#: ../rules/base.xml.in.h:186
+msgid "F-letter (F) variant"
+msgstr "variant písmena F"
+
+#: ../rules/base.xml.in.h:187
+msgid "Fao"
+msgstr "Fao"
+
+#: ../rules/base.xml.in.h:188
+msgid "Faroe Islands"
+msgstr "Faerské ostrovy"
+
+#: ../rules/base.xml.in.h:189 ../rules/sun.xml.in.h:51
+msgid "Fin"
+msgstr "Fín"
+
+#: ../rules/base.xml.in.h:190
+msgid "Finland"
+msgstr "Fínsko"
+
+#: ../rules/base.xml.in.h:191
+msgid "Force standard legacy keypad"
+msgstr "Vynútiť štandardnú zastaralú numerickú klávesnicu"
+
+#: ../rules/base.xml.in.h:192 ../rules/sun.xml.in.h:53
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:193
+msgid "France"
+msgstr "Francúzsko"
+
+#: ../rules/base.xml.in.h:194 ../rules/sun.xml.in.h:55
+msgid "French"
+msgstr "Francúzske"
+
+#: ../rules/base.xml.in.h:195
+msgid "French (Macintosh)"
+msgstr "Francúzske (Macintosh)"
+
+#: ../rules/base.xml.in.h:196 ../rules/sun.xml.in.h:56
+msgid "French (legacy)"
+msgstr "Francúzske (zastaralé)"
+
+#: ../rules/base.xml.in.h:197
+msgid "French Dvorak"
+msgstr "Francúzske dvorak"
+
+#: ../rules/base.xml.in.h:198
+msgid "French, Sun dead keys"
+msgstr "Francúzske, mŕtve klávesy Sun"
+
+#: ../rules/base.xml.in.h:199
+msgid "French, eliminate dead keys"
+msgstr "Francúzske, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:200
+msgid "Fula"
+msgstr "fulbÄina"
+
+#: ../rules/base.xml.in.h:201
+msgid "GBr"
+msgstr "VBr"
+
+#: ../rules/base.xml.in.h:202
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:203
+msgid "Generic 101-key PC"
+msgstr "všeobecná PC 101 kláves"
+
+#: ../rules/base.xml.in.h:204
+msgid "Generic 102-key (Intl) PC"
+msgstr "všeobecná PC 102 kláves (medz.)"
+
+#: ../rules/base.xml.in.h:205
+msgid "Generic 104-key PC"
+msgstr "všeobecná PC 104 kláves"
+
+#: ../rules/base.xml.in.h:206
+msgid "Generic 105-key (Intl) PC"
+msgstr "všeobecná 105-kláv. (medzinár.) PC"
+
+#: ../rules/base.xml.in.h:207
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:208
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:209
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:210
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:211
+msgid "Geo"
+msgstr "Gru"
+
+#: ../rules/base.xml.in.h:212
+msgid "Georgia"
+msgstr "Gruzínsko"
+
+#: ../rules/base.xml.in.h:213
+msgid "German (Macintosh)"
+msgstr "Nemecké (Macintosh)"
+
+#: ../rules/base.xml.in.h:214
+msgid "German, Sun dead keys"
+msgstr "Nemecké, mŕtve klávesy Sun"
+
+#: ../rules/base.xml.in.h:215
+msgid "German, eliminate dead keys"
+msgstr "Francúzske, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:216
+msgid "Germany"
+msgstr "Nemecko"
+
+#: ../rules/base.xml.in.h:217
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:218
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:219
+msgid "Gre"
+msgstr "Gre"
+
+#: ../rules/base.xml.in.h:220
+msgid "Greece"
+msgstr "Grécko"
+
+#: ../rules/base.xml.in.h:221
+msgid "Gujarati"
+msgstr "Gudžarátska"
+
+#: ../rules/base.xml.in.h:222
+msgid "Gurmukhi"
+msgstr "Gurmuchské"
+
+# je firma
+#: ../rules/base.xml.in.h:223
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:224
+msgid "Hausa"
+msgstr "hauské"
+
+#: ../rules/base.xml.in.h:225
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:226
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:227
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:228
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:229
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:230
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:231
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:232
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:233
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:234
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+# bolnagri je vstupná metóda
+#: ../rules/base.xml.in.h:235
+msgid "Hindi Bolnagri"
+msgstr "hindské bolnagri"
+
+#: ../rules/base.xml.in.h:236
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:237
+msgid "Hrv"
+msgstr "Chor"
+
+#: ../rules/base.xml.in.h:238 ../rules/sun.xml.in.h:59
+msgid "Hun"
+msgstr "MaÄ"
+
+#: ../rules/base.xml.in.h:239
+msgid "Hungary"
+msgstr "MaÄarsko"
+
+#: ../rules/base.xml.in.h:240
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper je mapovaný na Win-klávesy."
+
+#: ../rules/base.xml.in.h:241
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:242
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:243
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:244
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (alternatívna voľba)"
+
+#: ../rules/base.xml.in.h:245
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:246
+msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#: ../rules/base.xml.in.h:247 ../rules/sun.xml.in.h:61
+msgid "ISO Alternate"
+msgstr "ISO alternatívne"
+
+#: ../rules/base.xml.in.h:248
+msgid "Iceland"
+msgstr "Island"
+
+#: ../rules/base.xml.in.h:249
+msgid "Igbo"
+msgstr "igbo"
+
+#: ../rules/base.xml.in.h:250
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:251
+msgid "India"
+msgstr "India"
+
+#: ../rules/base.xml.in.h:252 ../rules/sun.xml.in.h:62
+msgid "International (with dead keys)"
+msgstr "Medzinárodné (s mŕtvymi klávesmi)"
+
+#: ../rules/base.xml.in.h:253
+msgid "Inuktitut"
+msgstr "inuktitut"
+
+#: ../rules/base.xml.in.h:254
+msgid "Iran"
+msgstr "Irán"
+
+#: ../rules/base.xml.in.h:255
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:256
+msgid "Ireland"
+msgstr "Ãrsko"
+
+#: ../rules/base.xml.in.h:257
+msgid "Irl"
+msgstr "Irs"
+
+#: ../rules/base.xml.in.h:258
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:259
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:260
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:261
+msgid "Isr"
+msgstr "Izr"
+
+#: ../rules/base.xml.in.h:262
+msgid "Israel"
+msgstr "Izrael"
+
+#: ../rules/base.xml.in.h:263 ../rules/sun.xml.in.h:63
+msgid "Ita"
+msgstr "Tal"
+
+#: ../rules/base.xml.in.h:264
+msgid "Italy"
+msgstr "Taliansko"
+
+#: ../rules/base.xml.in.h:265
+msgid "Japan"
+msgstr "Japonsko"
+
+#: ../rules/base.xml.in.h:266
+msgid "Japan (PC-98xx Series)"
+msgstr "Japonské (séria PC-98xx)"
+
+#: ../rules/base.xml.in.h:267
+msgid "Japanese 106-key"
+msgstr "Japonské 106 kláves"
+
+#: ../rules/base.xml.in.h:268
+msgid "Japanese keyboard options"
+msgstr "Japonské možnosti klávesnice"
+
+#: ../rules/base.xml.in.h:269 ../rules/sun.xml.in.h:66
+msgid "Jpn"
+msgstr "Jpn"
+
+# Kana is a general term for the syllabic Japanese scripts hiragana (ã²ã‚‰ãŒãª) and katakana (カタカナ) as well as the old system known as man'yÅgana.
+#: ../rules/base.xml.in.h:270
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:271
+msgid "Kana Lock key is locking"
+msgstr "Kláves Kana Lock zamyká"
+
+#: ../rules/base.xml.in.h:272
+msgid "Kannada"
+msgstr "Kannadské"
+
+#: ../rules/base.xml.in.h:273
+msgid "Kashubian"
+msgstr "kaÅ¡ubÄina"
+
+#: ../rules/base.xml.in.h:274
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:275
+msgid "Kazakh with Russian"
+msgstr "Kazašské s ruštinou"
+
+#: ../rules/base.xml.in.h:276
+msgid "Kazakhstan"
+msgstr "Kazachstan"
+
+#: ../rules/base.xml.in.h:277
+msgid "Keypad"
+msgstr "Numerická klávesnica"
+
+#: ../rules/base.xml.in.h:278
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:279
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:280
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:281
+msgid "Korea, Republic of"
+msgstr "Kórejská republika"
+
+#: ../rules/base.xml.in.h:282
+msgid "Korean 106-key"
+msgstr "Kórejské, 106 kláves"
+
+# fínske rozloženie
+# http://kotoistus.tksoft.com/linux/index-en.html
+#: ../rules/base.xml.in.h:283
+msgid "Kotoistus"
+msgstr "Kotoistus"
+
+#: ../rules/base.xml.in.h:284
+msgid "Kurdish, (F)"
+msgstr "Kurdské, (F)"
+
+#: ../rules/base.xml.in.h:285
+msgid "Kurdish, Arabic-Latin"
+msgstr "kurdÄina, arabsko-latinské"
+
+#: ../rules/base.xml.in.h:286
+msgid "Kurdish, Latin Alt-Q"
+msgstr "kurdÄina, latinské Alt-Q"
+
+#: ../rules/base.xml.in.h:287
+msgid "Kurdish, Latin Q"
+msgstr "kurdÄina, latinské Q"
+
+#: ../rules/base.xml.in.h:288
+msgid "Kyr"
+msgstr "Kyr"
+
+#: ../rules/base.xml.in.h:289
+msgid "Kyrgyzstan"
+msgstr "Kirgizsko"
+
+#: ../rules/base.xml.in.h:290
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:291
+msgid "LCtrl+LShift change layout."
+msgstr "ľavý Ctrl+ľavý Shift mení rozloženie."
+
+#: ../rules/base.xml.in.h:292
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:293
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:294
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (napr. Armada) Laptop Keyboard"
+
+#: ../rules/base.xml.in.h:295
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (napr. Presario) Internet Keyboard"
+
+#: ../rules/base.xml.in.h:296
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Laptop/notebook eMachines m68xx"
+
+#: ../rules/base.xml.in.h:297
+msgid "Latin"
+msgstr "Latinské"
+
+#: ../rules/base.xml.in.h:298
+msgid "Latin American"
+msgstr "Latinskoamerické"
+
+#: ../rules/base.xml.in.h:299
+msgid "Latin Unicode"
+msgstr "Latinské Unicode"
+
+#: ../rules/base.xml.in.h:300
+msgid "Latin Unicode qwerty"
+msgstr "Latinské Unicode qwerty"
+
+#: ../rules/base.xml.in.h:301
+msgid "Latin qwerty"
+msgstr "Latinské qwerty"
+
+# « »
+#: ../rules/base.xml.in.h:302
+msgid "Latin with guillemets"
+msgstr "Latinské s uhlovými zátvorkami"
+
+#: ../rules/base.xml.in.h:303
+msgid "Latvia"
+msgstr "Lotyšsko"
+
+#: ../rules/base.xml.in.h:304
+msgid "Layout switching"
+msgstr "Prepínanie rozloženia"
+
+#: ../rules/base.xml.in.h:305
+msgid "Left Alt is swapped with left Win-key."
+msgstr "Ľavý Alt je vymenený s ľavým klávesom Win."
+
+#: ../rules/base.xml.in.h:306
+msgid "Left Alt key changes layout."
+msgstr "Ľavý kláves Alt mení rozloženie."
+
+#: ../rules/base.xml.in.h:307
+msgid "Left Alt key switches layout while pressed."
+msgstr "Ľavý kláves Alt prepína rozloženie pri stlaÄení."
+
+#: ../rules/base.xml.in.h:308
+msgid "Left Ctrl key changes layout."
+msgstr "Ľavý kláves Ctrl mení rozloženie."
+
+#: ../rules/base.xml.in.h:309
+msgid "Left Shift key changes layout."
+msgstr "Ľavý kláves Shift mení rozloženie."
+
+#: ../rules/base.xml.in.h:310
+msgid "Left Win-key changes layout."
+msgstr "Ľavý kláves Win mení rozloženie."
+
+#: ../rules/base.xml.in.h:311
+msgid "Left Win-key is Compose."
+msgstr "Ľavý kláves Win je Compose."
+
+#: ../rules/base.xml.in.h:312
+msgid "Left Win-key switches layout while pressed."
+msgstr "Ľavý kláves Win prepína rozloženie pri stlaÄení."
+
+#: ../rules/base.xml.in.h:313
+msgid "Left hand"
+msgstr "ľavá ruka"
+
+#: ../rules/base.xml.in.h:314
+msgid "Left handed Dvorak"
+msgstr "ľavá ruka dvorak"
+
+#: ../rules/base.xml.in.h:315
+msgid "Lithuania"
+msgstr "Litva"
+
+#: ../rules/base.xml.in.h:316
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:317
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:318
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:319
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:320
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:321
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: ../rules/base.xml.in.h:322
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (alternatívna voľba)"
+
+#: ../rules/base.xml.in.h:323
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (alternatívna voľba2)"
+
+#: ../rules/base.xml.in.h:324
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:325
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:326
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 extra klávesy pomocou G15daemon"
+
+#: ../rules/base.xml.in.h:327
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:328
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:329
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:330
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:331
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:332
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:333
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:334
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:335
+msgid "Ltu"
+msgstr "Lit"
+
+#: ../rules/base.xml.in.h:336
+msgid "Lva"
+msgstr "Lot"
+
+#: ../rules/base.xml.in.h:337
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:338
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:339
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (medzin)"
+
+#: ../rules/base.xml.in.h:340
+msgid "Macedonia"
+msgstr "Macedónsko"
+
+#: ../rules/base.xml.in.h:341
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:342
+msgid "Macintosh Old"
+msgstr "Macintosh staré"
+
+#: ../rules/base.xml.in.h:343
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, mŕtve klávesy Sun"
+
+#: ../rules/base.xml.in.h:344
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:345
+msgid "Make CapsLock an additional Ctrl."
+msgstr "UrobiÅ¥ z CapsLock Äalší Ctrl."
+
+#: ../rules/base.xml.in.h:346
+msgid "Mal"
+msgstr "Mal"
+
+#: ../rules/base.xml.in.h:347
+msgid "Malayalam"
+msgstr "Malajalámske"
+
+#: ../rules/base.xml.in.h:348
+msgid "Maldives"
+msgstr "Maldivy"
+
+#: ../rules/base.xml.in.h:349
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:350
+msgid "Maltese keyboard with US layout"
+msgstr "Maltézska klávesnica s rozložením USA"
+
+#: ../rules/base.xml.in.h:351
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:352
+msgid "Maori"
+msgstr "maorÄina"
+
+#: ../rules/base.xml.in.h:353
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:354
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:355
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:356
+msgid "Menu is Compose."
+msgstr "Ponuka je Compose."
+
+#: ../rules/base.xml.in.h:357
+msgid "Menu key changes layout."
+msgstr "Kláves Ponuka mení rozloženie."
+
+#: ../rules/base.xml.in.h:358
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta je mapovaný na Win-klávesy."
+
+#: ../rules/base.xml.in.h:359
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta je mapovaný na ľavý Win-kláves."
+
+#: ../rules/base.xml.in.h:360
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:361
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Švédska"
+
+#: ../rules/base.xml.in.h:362
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:363
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:364
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:365
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:366
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:367
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:368 ../rules/sun.xml.in.h:72
+msgid "Miscellaneous compatibility options"
+msgstr "DodatoÄné voľby pre kompatibilitu"
+
+#: ../rules/base.xml.in.h:369
+msgid "Mkd"
+msgstr "Mak"
+
+#: ../rules/base.xml.in.h:370
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:371
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:372
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:373
+msgid "Mongolia"
+msgstr "Mongolsko"
+
+#: ../rules/base.xml.in.h:374
+msgid "Morocco"
+msgstr "Maroko"
+
+#: ../rules/base.xml.in.h:375 ../rules/sun.xml.in.h:73
+msgid "Multilingual"
+msgstr "ViacjazyÄné"
+
+#: ../rules/base.xml.in.h:376
+msgid "Multilingual, first part"
+msgstr "ViacjazyÄné, prvá ÄasÅ¥"
+
+#: ../rules/base.xml.in.h:377 ../rules/sun.xml.in.h:74
+msgid "Multilingual, second part"
+msgstr "ViacjazyÄné, druhá ÄasÅ¥"
+
+#: ../rules/base.xml.in.h:378
+msgid "Myanmar"
+msgstr "Mjanmarsko"
+
+#: ../rules/base.xml.in.h:379
+msgid "NICOLA-F style Backspace"
+msgstr "Backspace v štýle NICOLA-F"
+
+#: ../rules/base.xml.in.h:380
+msgid "Neostyle"
+msgstr "Neoštýl"
+
+#: ../rules/base.xml.in.h:381
+msgid "Nep"
+msgstr "Nep"
+
+#: ../rules/base.xml.in.h:382
+msgid "Nepal"
+msgstr "Nepál"
+
+#: ../rules/base.xml.in.h:383
+msgid "Netherlands"
+msgstr "Holandsko"
+
+#: ../rules/base.xml.in.h:384
+msgid "Nig"
+msgstr "Nig"
+
+#: ../rules/base.xml.in.h:385
+msgid "Nigeria"
+msgstr "Nigéria"
+
+#: ../rules/base.xml.in.h:386
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:387 ../rules/sun.xml.in.h:75
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:388
+msgid "Northern Saami"
+msgstr "severná saamÄina"
+
+#: ../rules/base.xml.in.h:389
+msgid "Northern Saami, eliminate dead keys"
+msgstr "severná saamÄina, eliminovaÅ¥ mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:390
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:391
+msgid "Norway"
+msgstr "Nórsko"
+
+#: ../rules/base.xml.in.h:392
+msgid "NumLock LED shows alternative layout."
+msgstr "Num Lock LED zobrazuje alternatívne rozloženie."
+
+#: ../rules/base.xml.in.h:393
+msgid "Numeric keypad keys work as with Mac."
+msgstr "Numerická klávesnica funguje ako na Mac."
+
+#: ../rules/base.xml.in.h:394
+msgid "Numeric keypad layout selection"
+msgstr "Výber rozloženia numerickej klávesnice"
+
+#: ../rules/base.xml.in.h:395
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:396
+msgid "Ogham"
+msgstr "Oghamské"
+
+#: ../rules/base.xml.in.h:397
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:398
+msgid "Oriya"
+msgstr "uríjÄina"
+
+#: ../rules/base.xml.in.h:399
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/internetová klávesnica"
+
+#: ../rules/base.xml.in.h:400
+msgid "Ossetian"
+msgstr "Osetské"
+
+#: ../rules/base.xml.in.h:401
+msgid "Ossetian, Winkeys"
+msgstr "Osetské, klávesy Win"
+
+#: ../rules/base.xml.in.h:402
+msgid "PC-98xx Series"
+msgstr "Séria PC-98xx"
+
+#: ../rules/base.xml.in.h:403
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:404
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: ../rules/base.xml.in.h:405
+msgid "Pashto"
+msgstr "paÅ¡tÄina"
+
+# thajské rozloženie
+#: ../rules/base.xml.in.h:406
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:407 ../rules/sun.xml.in.h:78
+msgid "Phonetic"
+msgstr "Fonetické"
+
+#: ../rules/base.xml.in.h:408 ../rules/sun.xml.in.h:79
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:409
+msgid "Poland"
+msgstr "Poľsko"
+
+#: ../rules/base.xml.in.h:410
+msgid "Polytonic"
+msgstr "Polytónické"
+
+#: ../rules/base.xml.in.h:411
+msgid "Portugal"
+msgstr "Portugalsko"
+
+#: ../rules/base.xml.in.h:412
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "StlaÄenie ľavého klávesu Alt vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:413
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "StlaÄenie ľavého klávesu Win vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:414
+msgid "Press Menu key to choose 3rd level."
+msgstr "StlaÄenie klávesu Ponuka vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:415
+msgid "Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
+msgstr "StlaÄenie pravého klávesu Alt vyberá 3. úroveň, Shift+pravý kláves Alt key je Multi_Key."
+
+#: ../rules/base.xml.in.h:416
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "StlaÄenie pravého klávesu Alt vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:417
+msgid "Press Right Ctrl to choose 3rd level."
+msgstr "StlaÄenie pravého Ctrl vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:418
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "StlaÄenie pravého klávesu Win vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:419
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "StlaÄenie ľubovoľného klávesu Alt vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:420
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "StlaÄenie ľubovoľného klávesu Win vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:421
+msgid "Pro"
+msgstr "Pro"
+
+#: ../rules/base.xml.in.h:422
+msgid "Pro Keypad"
+msgstr "Pro Keypad"
+
+#: ../rules/base.xml.in.h:423
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:424
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:425 ../rules/sun.xml.in.h:88
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:426
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:427
+msgid "R-Alt switches layout while pressed."
+msgstr "Pravý kláves Alt prepína rozloženie pri stlaÄení."
+
+#: ../rules/base.xml.in.h:428
+msgid "Right Alt is Compose."
+msgstr "Pravý Alt je Compose."
+
+#: ../rules/base.xml.in.h:429
+msgid "Right Alt key changes layout."
+msgstr "Pravý kláves Alt mení rozloženie."
+
+#: ../rules/base.xml.in.h:430 ../rules/sun.xml.in.h:90
+msgid "Right Alt key never chooses 3rd level."
+msgstr "Pravý kláves Alt nikdy nevyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:431
+msgid "Right Ctrl is Compose."
+msgstr "Pravý Alt je Compose."
+
+#: ../rules/base.xml.in.h:432
+msgid "Right Ctrl key changes layout."
+msgstr "Pravý kláves Ctrl mení rozloženie."
+
+#: ../rules/base.xml.in.h:433
+msgid "Right Ctrl key switches layout while pressed."
+msgstr "Pravý kláves Win prepína rozloženie pri stlaÄení."
+
+#: ../rules/base.xml.in.h:434
+msgid "Right Ctrl key works as Right Alt."
+msgstr "Pravý kláves Control funguje ako pravý Alt."
+
+#: ../rules/base.xml.in.h:435
+msgid "Right Shift key changes layout."
+msgstr "Pravý kláves Shift mení rozloženie."
+
+#: ../rules/base.xml.in.h:436
+msgid "Right Win-key changes layout."
+msgstr "Pravý kláves Win mení rozloženie."
+
+#: ../rules/base.xml.in.h:437
+msgid "Right Win-key is Compose."
+msgstr "Pravý kláves Win je Compose"
+
+#: ../rules/base.xml.in.h:438
+msgid "Right Win-key switches layout while pressed."
+msgstr "Pravý kláves Win prepína rozloženie pri stlaÄení."
+
+#: ../rules/base.xml.in.h:439
+msgid "Right hand"
+msgstr "pravá ruka"
+
+#: ../rules/base.xml.in.h:440
+msgid "Right handed Dvorak"
+msgstr "pravá ruka dvorak"
+
+#: ../rules/base.xml.in.h:441
+msgid "Romania"
+msgstr "Rumunsko"
+
+#: ../rules/base.xml.in.h:442
+msgid "Romanian keyboard with German letters"
+msgstr "Rumunská klávesnica s nemeckými písmenmi"
+
+#: ../rules/base.xml.in.h:443
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Rumunská klávesnica s nemeckými písmenami, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:444
+msgid "Rou"
+msgstr "Rum"
+
+#: ../rules/base.xml.in.h:445 ../rules/sun.xml.in.h:95
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:446
+msgid "Russia"
+msgstr "Rusko"
+
+#: ../rules/base.xml.in.h:447 ../rules/sun.xml.in.h:96
+msgid "Russian"
+msgstr "Ruské"
+
+#: ../rules/base.xml.in.h:448
+msgid "Russian phonetic"
+msgstr "Ruské fonetické"
+
+#: ../rules/base.xml.in.h:449
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Ruské fonetické, eliminovať mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:450
+msgid "Russian with Kazakh"
+msgstr "Ruská s kazaštinou"
+
+#: ../rules/base.xml.in.h:451
+msgid "SCG"
+msgstr "SCG"
+
+#: ../rules/base.xml.in.h:452
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:453
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:454
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:455
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:456
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:457
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:458
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:459
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:460
+msgid "ScrollLock LED shows alternative layout."
+msgstr "Scroll Lock LED zobrazuje alternatívne rozloženie."
+
+#: ../rules/base.xml.in.h:461
+msgid "Serbia and Montenegro"
+msgstr "Srbsko a ÄŒierna Hora"
+
+#: ../rules/base.xml.in.h:462
+msgid "Shift with numeric keypad keys works as in MS Windows."
+msgstr "Shift s numerickými klávesmi pracuje ako v MS Windows."
+
+#: ../rules/base.xml.in.h:463
+msgid "Shift+CapsLock changes layout."
+msgstr "Shift+Caps Lock mení rozloženie."
+
+#: ../rules/base.xml.in.h:464
+msgid "Slovakia"
+msgstr "Slovensko"
+
+#: ../rules/base.xml.in.h:465
+msgid "Slovenia"
+msgstr "Slovinsko"
+
+#: ../rules/base.xml.in.h:466
+msgid "South Africa"
+msgstr "Južná Afrika"
+
+#: ../rules/base.xml.in.h:467
+msgid "Southern Uzbek"
+msgstr "južná uzbeÄtina"
+
+#: ../rules/base.xml.in.h:468
+msgid "Space key outputs non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Medzerník dáva znak nezalomiteľná medzera na štvrtej úrovni, tenká nezalomiteľná medzera na šiestej úrovni."
+
+#: ../rules/base.xml.in.h:469
+msgid "Space key outputs non-breakable space character at fourth level."
+msgstr "Medzerník dáva znak nezalomiteľná medzera na štvrtej úrovni."
+
+#: ../rules/base.xml.in.h:470
+msgid "Space key outputs non-breakable space character at second level."
+msgstr "Medzerník dáva znak nezalomiteľná medzera na druhej úrovni."
+
+#: ../rules/base.xml.in.h:471
+msgid "Space key outputs non-breakable space character at third level, nothing at fourth level."
+msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni, niÄ na Å¡tvrtej úrovni."
+
+#: ../rules/base.xml.in.h:472
+msgid "Space key outputs non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni, tenká nezalomiteľná medzera na štvrtej úrovni."
+
+#: ../rules/base.xml.in.h:473
+msgid "Space key outputs non-breakable space character at third level."
+msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni."
+
+#: ../rules/base.xml.in.h:474
+msgid "Space key outputs usual space at any level."
+msgstr "Medzerník dáva obyÄajnú medzeru na každej úrovni."
+
+#: ../rules/base.xml.in.h:475
+msgid "Spain"
+msgstr "Å panielsko"
+
+#: ../rules/base.xml.in.h:476 ../rules/sun.xml.in.h:103
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Špeciálne klávesy (Ctrl+Alt+&lt;key&gt;) spracované na serveru."
+
+#: ../rules/base.xml.in.h:477
+msgid "SrL"
+msgstr "SrL"
+
+#: ../rules/base.xml.in.h:478
+msgid "Sri Lanka"
+msgstr "Srí Lanka"
+
+#: ../rules/base.xml.in.h:479 ../rules/sun.xml.in.h:104
+msgid "Standard"
+msgstr "štandardné"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:481
+msgid "Standard RSTU"
+msgstr "štandardné RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:483
+msgid "Standard RSTU on Russian layout"
+msgstr "štandardné RSTU na ruskom rozložení"
+
+#: ../rules/base.xml.in.h:484 ../rules/sun.xml.in.h:112
+msgid "Sun dead keys"
+msgstr "mŕtve klávesy Sun"
+
+#: ../rules/base.xml.in.h:485
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:486
+msgid "Super is mapped to the Win-keys."
+msgstr "Super je mapovaný na klávesy Win."
+
+#: ../rules/base.xml.in.h:487
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:488 ../rules/sun.xml.in.h:113
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:489
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:490
+msgid "Swap Ctrl and CapsLock."
+msgstr "Vymeniť Control a Caps Lock"
+
+#: ../rules/base.xml.in.h:491
+msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+msgstr "VymeniÅ¥ kódy dvoch kláves keÄ jadro chybne detekuje klávesnice Mac."
+
+#: ../rules/base.xml.in.h:492 ../rules/sun.xml.in.h:115
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:493
+msgid "Sweden"
+msgstr "Švédsko"
+
+#: ../rules/base.xml.in.h:494
+msgid "Switzerland"
+msgstr "Å vajÄiarsko"
+
+#: ../rules/base.xml.in.h:495
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:496
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:497
+msgid "Syria"
+msgstr "Sýrske"
+
+#: ../rules/base.xml.in.h:498
+msgid "Syriac"
+msgstr "Syrské"
+
+#: ../rules/base.xml.in.h:499
+msgid "Syriac phonetic"
+msgstr "Sýske fonetické"
+
+#: ../rules/base.xml.in.h:500
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:501
+msgid "Tajikistan"
+msgstr "Tadžické"
+
+#: ../rules/base.xml.in.h:502
+msgid "Tamil"
+msgstr "Tamilské"
+
+#: ../rules/base.xml.in.h:503
+msgid "Tamil TAB Typewriter"
+msgstr "Tamiský TAB písací stroj"
+
+#: ../rules/base.xml.in.h:504
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamilské TSCII písací stroj"
+
+#: ../rules/base.xml.in.h:505
+msgid "Tamil Unicode"
+msgstr "Tamilské Unicode"
+
+#: ../rules/base.xml.in.h:506
+msgid "Tatar"
+msgstr "tatárÄina"
+
+#: ../rules/base.xml.in.h:507
+msgid "Telugu"
+msgstr "Telugské"
+
+#: ../rules/base.xml.in.h:508
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:509
+msgid "Thailand"
+msgstr "Thajsko"
+
+#: ../rules/base.xml.in.h:510 ../rules/sun.xml.in.h:119
+msgid "Third level choosers"
+msgstr "Výber tretej úrovne"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:511
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:512
+msgid "Tifinagh Alternative"
+msgstr "Tifinagh alternatívne"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:513
+msgid "Tifinagh Alternative Phonetic"
+msgstr "Tifinagh alternatívne fonetické"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:514
+msgid "Tifinagh Extended"
+msgstr "Tifinagh rozšírené"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:515
+msgid "Tifinagh Extended Phonetic"
+msgstr "Tifinagh rozšírené fonetické"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:516
+msgid "Tifinagh Phonetic"
+msgstr "Tifinagh fonetické"
+
+#: ../rules/base.xml.in.h:517
+msgid "Tilde (~) variant"
+msgstr "Variant vlnovky (~)"
+
+#: ../rules/base.xml.in.h:518
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:519
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:520
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:521
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:522 ../rules/sun.xml.in.h:120
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:523
+msgid "Turkey"
+msgstr "Turecko"
+
+#: ../rules/base.xml.in.h:524
+msgid "Typewriter"
+msgstr "Písací stroj"
+
+#: ../rules/base.xml.in.h:525 ../rules/sun.xml.in.h:124
+msgid "U.S. English"
+msgstr "USA anglické"
+
+#: ../rules/base.xml.in.h:526
+#, fuzzy
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Klávesnica USA s bosniackymi digraphs"
+
+#: ../rules/base.xml.in.h:527
+#, fuzzy
+msgid "US keyboard with Bosnian letters"
+msgstr "Klávesnica USA s bosniackymi písmenami"
+
+#: ../rules/base.xml.in.h:528
+#, fuzzy
+msgid "US keyboard with Croatian digraphs"
+msgstr "Klávesnica USA s chorvátskymi digraphs"
+
+#: ../rules/base.xml.in.h:529
+#, fuzzy
+msgid "US keyboard with Croatian letters"
+msgstr "Klávesnica USA s chorvátskymi písmenami"
+
+#: ../rules/base.xml.in.h:530
+msgid "US keyboard with Lithuanian letters"
+msgstr "Americká klávesnica s litovskými písmenami"
+
+#: ../rules/base.xml.in.h:531
+#, fuzzy
+msgid "US keyboard with Slovenian digraphs"
+msgstr "Klávesnica USA so slovinskými digraphs"
+
+#: ../rules/base.xml.in.h:532
+#, fuzzy
+msgid "US keyboard with Slovenian letters"
+msgstr "Klávesnica USA so slovinskými písmenami"
+
+#: ../rules/base.xml.in.h:533 ../rules/sun.xml.in.h:126
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:534
+msgid "Udmurt"
+msgstr "udmurtÄina"
+
+#: ../rules/base.xml.in.h:535
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:536
+msgid "Ukraine"
+msgstr "Ukrajinské"
+
+#: ../rules/base.xml.in.h:537
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:538 ../rules/sun.xml.in.h:127
+msgid "United Kingdom"
+msgstr "Spojené kráľovstvo"
+
+#: ../rules/base.xml.in.h:539
+msgid "Urdu"
+msgstr "urdÄina"
+
+#: ../rules/base.xml.in.h:540
+#, fuzzy
+msgid "Use Bosnian digraphs"
+msgstr "Použiť bosniacke digraphs"
+
+#: ../rules/base.xml.in.h:541
+#, fuzzy
+msgid "Use Croatian digraphs"
+msgstr "Použiť chorvátske digraphs"
+
+#: ../rules/base.xml.in.h:542
+#, fuzzy
+msgid "Use Slovenian digraphs"
+msgstr "Použiť slovinské digraphs"
+
+#: ../rules/base.xml.in.h:543
+msgid "Use guillemets for quotes"
+msgstr "Použiť uhlové zátvorky pre úvodzovky"
+
+#: ../rules/base.xml.in.h:544
+msgid "Use keyboard LED to show alternative layout."
+msgstr "Použiť LED klávesnice pre zobrazenie alternatívneho rozloženia."
+
+#: ../rules/base.xml.in.h:545
+msgid "Use keypad with unicode additions (arrows and math operators)"
+msgstr "Použiť numerickú klávesnicu s doplnkami Unicode (šípky a matematické operátory)"
+
+#: ../rules/base.xml.in.h:546
+msgid "Using space key to input non-breakable space character"
+msgstr "Použiť klávesu medzera na zadanie znaku nezalomiteľná medzera"
+
+#: ../rules/base.xml.in.h:547
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:548
+msgid "Uzbekistan"
+msgstr "Uzbecké"
+
+#: ../rules/base.xml.in.h:549
+msgid "Vietnam"
+msgstr "Vietnamské"
+
+#: ../rules/base.xml.in.h:550
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:551
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:552
+msgid "Western"
+msgstr "západné"
+
+#: ../rules/base.xml.in.h:553
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:554
+msgid "Winkeys"
+msgstr "Win klávesy"
+
+#: ../rules/base.xml.in.h:555
+msgid "With &lt;\\|&gt; key"
+msgstr "s klávesmi &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:556
+msgid "With EuroSign on 5"
+msgstr "so znakom euro na 5"
+
+#: ../rules/base.xml.in.h:557
+msgid "With guillemets"
+msgstr "s uhlovými zátvorkami"
+
+#: ../rules/base.xml.in.h:558
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:559
+msgid "Yoruba"
+msgstr "jorubÄina"
+
+#: ../rules/base.xml.in.h:560
+msgid "Z and ZHE swapped"
+msgstr "Z a ZHE vymenené"
+
+#: ../rules/base.xml.in.h:561
+msgid "Zar"
+msgstr "Zar"
+
+#: ../rules/base.xml.in.h:562
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:563
+msgid "azerty/digits"
+msgstr "azerty/Äíslice"
+
+#: ../rules/base.xml.in.h:564
+msgid "digits"
+msgstr "Äíslice"
+
+#: ../rules/base.xml.in.h:565
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "posunutá bodkoÄiarka a dvojbodka (zastaralé)"
+
+#: ../rules/base.xml.in.h:566
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:567 ../rules/sun.xml.in.h:132
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:568
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, rozšírená spätná lomka"
+
+#: ../rules/base.xml.in.h:569
+msgid "qwerty/digits"
+msgstr "qwerty/Äíslice"
+
+#: ../rules/base.xml.in.h:570
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/sun.xml.in.h:1
+msgid "\"Typewriter\""
+msgstr "Písací stroj"
+
+#: ../rules/sun.xml.in.h:17
+msgid "Acts as Shift with locking. Shift cancels Caps."
+msgstr "Pracuje ako Shift s uzamknutím. Shift ruší Caps."
+
+#: ../rules/sun.xml.in.h:18
+msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
+msgstr "Pracuje ako Shift s uzamknutím. Shift neruší Caps."
+
+#: ../rules/sun.xml.in.h:19
+msgid "Alt+Control changes group"
+msgstr "Alt+Control mení rozloženie"
+
+#: ../rules/sun.xml.in.h:20
+msgid "Alt+Shift changes group"
+msgstr "Alt+Shift mení rozloženie"
+
+#: ../rules/sun.xml.in.h:21
+msgid "Basic"
+msgstr "základné"
+
+#: ../rules/sun.xml.in.h:23
+msgid "Belgian"
+msgstr "Belgická"
+
+#: ../rules/sun.xml.in.h:25
+msgid "Both Alt keys together change group"
+msgstr "Oba klávesy Alt spolu menia rozloženie"
+
+#: ../rules/sun.xml.in.h:26
+msgid "Both Ctrl keys together change group"
+msgstr "Oba klávesy Ctrl spolu menia rozloženie"
+
+#: ../rules/sun.xml.in.h:27
+msgid "Both Shift keys together change group"
+msgstr "SpoloÄné stlaÄenie oboch Shift mení rozloženie"
+
+#: ../rules/sun.xml.in.h:28
+msgid "Bulgarian"
+msgstr "Bulharské"
+
+#: ../rules/sun.xml.in.h:30
+msgid "Canadian"
+msgstr "Kanadské"
+
+#: ../rules/sun.xml.in.h:31
+msgid "Caps Lock is Compose"
+msgstr "Caps Lock je Compose"
+
+#: ../rules/sun.xml.in.h:32
+msgid "Caps Lock key changes group"
+msgstr "Kláves Caps Lock mení rozloženie"
+
+#: ../rules/sun.xml.in.h:34
+msgid "Caps_Lock LED shows alternative group"
+msgstr "Caps Lock LED zobrazuje alternatívne rozloženie"
+
+#: ../rules/sun.xml.in.h:35
+msgid "Control Key Position"
+msgstr "Pozícia klávesu Control"
+
+#: ../rules/sun.xml.in.h:36
+msgid "Control key at bottom left"
+msgstr "Kláves Control vľavo dole"
+
+#: ../rules/sun.xml.in.h:37
+msgid "Control key at left of 'A'"
+msgstr "Kláves Control naľavo od „A“"
+
+#: ../rules/sun.xml.in.h:38
+msgid "Control+Shift changes group"
+msgstr "Control+Shift mení rozloženie"
+
+#: ../rules/sun.xml.in.h:40
+msgid "Czech"
+msgstr "České"
+
+#: ../rules/sun.xml.in.h:41
+msgid "Danish"
+msgstr "Dánske"
+
+#: ../rules/sun.xml.in.h:45
+msgid "DeuCH"
+msgstr "NemÅ v"
+
+#: ../rules/sun.xml.in.h:47
+msgid "Dvo"
+msgstr "Dvo"
+
+#: ../rules/sun.xml.in.h:52
+msgid "Finnish"
+msgstr "Fínske"
+
+#: ../rules/sun.xml.in.h:54
+msgid "FraCH"
+msgstr "FraÅ v"
+
+#: ../rules/sun.xml.in.h:57
+msgid "German"
+msgstr "Nemecké"
+
+#: ../rules/sun.xml.in.h:58
+msgid "Group Shift/Lock behavior"
+msgstr "Zoskupiť chovanie Shift/Lock"
+
+#: ../rules/sun.xml.in.h:60
+msgid "Hungarian"
+msgstr "MaÄarské"
+
+#: ../rules/sun.xml.in.h:64
+msgid "Italian"
+msgstr "Talianske"
+
+#: ../rules/sun.xml.in.h:65
+msgid "Japanese"
+msgstr "Japonské"
+
+#: ../rules/sun.xml.in.h:67
+msgid "Left Alt key changes group"
+msgstr "Ľavý kláves Alt mení rozloženie"
+
+#: ../rules/sun.xml.in.h:68
+msgid "Left Alt key switches group while pressed"
+msgstr "Ľavý kláves Alt prepína rozloženie pri stlaÄení"
+
+#: ../rules/sun.xml.in.h:69
+msgid "Left Ctrl key changes group"
+msgstr "Ľavý kláves Ctrl mení rozloženie"
+
+#: ../rules/sun.xml.in.h:70
+msgid "Left Shift key changes group"
+msgstr "Ľavý kláves Shift mení rozloženie"
+
+#: ../rules/sun.xml.in.h:71
+msgid "Make CapsLock an additional Control"
+msgstr "UrobiÅ¥ z CapsLock dodatoÄný Control"
+
+#: ../rules/sun.xml.in.h:76
+msgid "Norwegian"
+msgstr "Nórske"
+
+#: ../rules/sun.xml.in.h:77
+msgid "Num_Lock LED shows alternative group"
+msgstr "Num Lock LED zobrazuje alternatívne rozloženie"
+
+#: ../rules/sun.xml.in.h:80
+msgid "Polish"
+msgstr "Poľské"
+
+#: ../rules/sun.xml.in.h:81
+msgid "Polish with Polish quotes on key \"1/!\""
+msgstr "Poľské s poľskými úvodzovkami na klávese „1/!“"
+
+#: ../rules/sun.xml.in.h:82
+msgid "Portuguese"
+msgstr "Portugalské"
+
+#: ../rules/sun.xml.in.h:83
+msgid "Press Left Alt key to choose 3rd level"
+msgstr "StlaÄením ľavého klávesu Win vyberiete 3. úroveň"
+
+#: ../rules/sun.xml.in.h:84
+msgid "Press Right Alt key to choose 3rd level"
+msgstr "StlaÄením pravého klávesu Win vyberiete 3. úroveň"
+
+#: ../rules/sun.xml.in.h:85
+msgid "Press Right Alt-key to choose 3rd level, Shift+Right Alt-key is Multi_Key"
+msgstr "StlaÄením pravého klávesu Win vyberiete 3. úroveň, shift+pravý Alt je Multi_Key"
+
+#: ../rules/sun.xml.in.h:86
+msgid "Press Right Control to choose 3rd level"
+msgstr "StlaÄenie pravého Control vyberá 3. úroveň"
+
+#: ../rules/sun.xml.in.h:87
+msgid "Press any of Alt keys to choose 3rd level"
+msgstr "StlaÄením ľuboboľného klávesu Alt vyberiete 3. úroveň"
+
+#: ../rules/sun.xml.in.h:89
+msgid "Right Alt key changes group"
+msgstr "Pravý Alt mení rozloženie"
+
+#: ../rules/sun.xml.in.h:91
+msgid "Right Alt switches group while pressed"
+msgstr "Pravý kláves Alt prepína rozloženie pri stlaÄení"
+
+#: ../rules/sun.xml.in.h:92
+msgid "Right Control key works as Right Alt"
+msgstr "Kláves pravý Control funguje ako pravý Alt"
+
+#: ../rules/sun.xml.in.h:93
+msgid "Right Ctrl key changes group"
+msgstr "Kláves pravý Ctrl mení rozloženie"
+
+#: ../rules/sun.xml.in.h:94
+msgid "Right Shift key changes group"
+msgstr "Kláves pravý Shift mení rozloženie"
+
+#: ../rules/sun.xml.in.h:97
+msgid "Scroll Lock changes group"
+msgstr "Kláves Scroll Lock mení rozloženie"
+
+#: ../rules/sun.xml.in.h:98
+msgid "Scroll_Lock LED shows alternative group"
+msgstr "Scroll Lock LED zobrazuje alternatívne rozloženie"
+
+#: ../rules/sun.xml.in.h:99
+msgid "Shift with numpad keys works as in MS Windows"
+msgstr "Shift s numerickými klávesmi pracuje ako v MS Windows"
+
+#: ../rules/sun.xml.in.h:100
+msgid "Shift+CapsLock changes group"
+msgstr "Shift+Caps Lock mení rozloženie"
+
+#: ../rules/sun.xml.in.h:101
+msgid "Slovak"
+msgstr "Slovenské"
+
+#: ../rules/sun.xml.in.h:102
+msgid "Spanish"
+msgstr "Å panielske"
+
+#: ../rules/sun.xml.in.h:105
+msgid "Sun Type 4"
+msgstr "Sun Type 4"
+
+#: ../rules/sun.xml.in.h:106
+msgid "Sun Type 5"
+msgstr "Sun Type 5"
+
+#: ../rules/sun.xml.in.h:107
+msgid "Sun Type 5 European"
+msgstr "Sun Type 5 európske"
+
+#: ../rules/sun.xml.in.h:108
+msgid "Sun Type 5 Unix"
+msgstr "Sun Type 5 Unix"
+
+#: ../rules/sun.xml.in.h:109
+msgid "Sun Type 6"
+msgstr "Sun Type 6"
+
+#: ../rules/sun.xml.in.h:110
+msgid "Sun Type 6 Unix"
+msgstr "Sun Type 6 Unix"
+
+#: ../rules/sun.xml.in.h:111
+msgid "Sun Type 6 with Euro key"
+msgstr "Sun Type 6 s klávesom euro"
+
+#: ../rules/sun.xml.in.h:114
+msgid "Swap Control and Caps Lock"
+msgstr "Prehodiť Control a Caps Lock"
+
+#: ../rules/sun.xml.in.h:116
+msgid "Swedish"
+msgstr "Švédske"
+
+#: ../rules/sun.xml.in.h:117
+msgid "Swiss French"
+msgstr "Å vajÄiarske francúzske"
+
+#: ../rules/sun.xml.in.h:118
+msgid "Swiss German"
+msgstr "Nemecké (Å vajÄiarsko)"
+
+#: ../rules/sun.xml.in.h:121
+msgid "Turkish"
+msgstr "Turecké"
+
+#: ../rules/sun.xml.in.h:122
+msgid "Turkish (F)"
+msgstr "Turecké (F)"
+
+#: ../rules/sun.xml.in.h:123
+msgid "Turkish Alt-Q Layout"
+msgstr "Turecké rozloženie Alt-Q"
+
+#: ../rules/sun.xml.in.h:125
+msgid "U.S. English w/ ISO9995-3"
+msgstr "U.S.A. anglické s ISO9995-3"
+
+#: ../rules/sun.xml.in.h:128
+msgid "Use keyboard LED to show alternative group"
+msgstr "Použiť LED klávesnice pre zobrazenie alternatívnej skupiny"
+
+#: ../rules/sun.xml.in.h:129
+msgid "Uses internal capitalization. Shift cancels Caps."
+msgstr "Používa interný prevod na kapitálky. Shift ruší Caps."
+
+#: ../rules/sun.xml.in.h:130
+msgid "Uses internal capitalization. Shift doesn't cancel Caps."
+msgstr "Používa interný prevod na kapitálky. Shift neruší Caps."
+
+#: ../rules/sun.xml.in.h:131
+msgid "bksl"
+msgstr "bksl"
+
+#: ../rules/sun.xml.in.h:133
+msgid "type4"
+msgstr "type4"
+
+#~ msgid "A Tamil typewrite-style keymap; TAB encoding"
+#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie TAB"
+
+#~ msgid "A Tamil typewrite-style keymap; TSCII encoding"
+#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie TSCII"
+
+#~ msgid "A Tamil typewrite-style keymap; Unicode encoding"
+#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie Unicode"
+
+#~ msgid "Arb"
+#~ msgstr "Arb"
+
+#~ msgid "Bosnian"
+#~ msgstr "Bosnianske"
+
+#~ msgid "Burmese"
+#~ msgstr "Burmézsky"
+
+#~ msgid "CloGaelach Laptop"
+#~ msgstr "CloGaelach Laptop"
+
+#~ msgid "Czech (qwerty)"
+#~ msgstr "České (qwerty)"
+
+#~ msgid "Dutch"
+#~ msgstr "Holandské"
+
+#~ msgid "French Canadian"
+#~ msgstr "Francúzske kanadské"
+
+#~ msgid "Georgian (latin)"
+#~ msgstr "Gruzínske (latinka)"
+
+#~ msgid "Georgian (russian)"
+#~ msgstr "Gruzínske (azbuka)"
+
+#~ msgid "Grc"
+#~ msgstr "Grc"
+
+#~ msgid "Guj"
+#~ msgstr "Guj"
+
+#~ msgid "Hin"
+#~ msgstr "Hin"
+
+#~ msgid "Hindi"
+#~ msgstr "Hindské"
+
+#~ msgid "INSCRIPT layout"
+#~ msgstr "INSCRIPT rozloženie"
+
+#~ msgid "IS434 laptop"
+#~ msgstr "IS434 laptop"
+
+#~ msgid "Iku"
+#~ msgstr "Inu"
+
+#~ msgid "Irish"
+#~ msgstr "Ãrske"
+
+#~ msgid "Lithuanian azerty standard"
+#~ msgstr "Litovské azerty štandardné"
+
+#~ msgid "Lithuanian qwerty \"numeric\""
+#~ msgstr "Litovské qwerty \"Äíselné\""
+
+#~ msgid "Logitech iTouch keyboard Internet Navigator"
+#~ msgstr "Logitech iTouch keyboard Internet Navigator"
+
+#~ msgid "Northern Saami (Finland)"
+#~ msgstr "Severný Saami (Fínsko)"
+
+#~ msgid "Northern Saami (Sweden)"
+#~ msgstr "Severný Saami (Švédsko)"
+
+#~ msgid "Ogh"
+#~ msgstr "Ogh"
+
+#~ msgid "Ori"
+#~ msgstr "Ori"
+
+#~ msgid "PC104"
+#~ msgstr "PC104"
+
+#~ msgid "Polish (qwertz)"
+#~ msgstr "Poľské (qwertz)"
+
+#~ msgid "PowerPC PS/2"
+#~ msgstr "PowerPC PS/2"
+
+#~ msgid "Sapmi"
+#~ msgstr "Sapmi"
+
+#~ msgid "Scg"
+#~ msgstr "Scg"
+
+#~ msgid "Slovak (qwerty)"
+#~ msgstr "Slovenské (qwerty)"
+
+#~ msgid "Sme"
+#~ msgstr "Sme"
+
+#~ msgid "Sv"
+#~ msgstr "Sv"
+
+#~ msgid "Tel"
+#~ msgstr "Tel"
+
+#~ msgid "Thai (Kedmanee)"
+#~ msgstr "Thajské (Kedmanee)"
+
+#~ msgid "Tml"
+#~ msgstr "Tml"
+
+#~ msgid "U.S. English w/ dead keys"
+#~ msgstr "Anglické (US) s mŕtvymi klávesmi"
+
+#~ msgid "US"
+#~ msgstr "US"
+
+#~ msgid "Yug"
+#~ msgstr "Juh"
+
+#~ msgid "Yugoslavian"
+#~ msgstr "Juhoslovanské"
+
+#~ msgid "abnt2"
+#~ msgstr "abnt2"
+
+#~ msgid "laptop"
+#~ msgstr "laptop"
+
+#~ msgid "sefi"
+#~ msgstr "sefi"
+
+#~ msgid "si1452"
+#~ msgstr "si1452"
+
+#~ msgid "uni/101/qwerty/comma"
+#~ msgstr "uni/101/qwerty/Äiarka"
+
+#~ msgid "uni/101/qwerty/dot"
+#~ msgstr "uni/101/qwerty/bodka"
+
+#~ msgid "uni/101/qwertz/comma"
+#~ msgstr "uni/101/qwertz/Äiarka"
+
+#~ msgid "uni/101/qwertz/dot"
+#~ msgstr "uni/101/qwertz/bodka"
+
+#~ msgid "uni/102/qwerty/comma"
+#~ msgstr "uni/102/qwerty/Äiarka"
+
+#~ msgid "uni/102/qwerty/dot"
+#~ msgstr "uni/102/qwerty/bodka"
+
+#~ msgid "uni/102/qwertz/comma"
+#~ msgstr "uni/102/qwertz/Äiarka"
+
+#~ msgid "uni/102/qwertz/dot"
+#~ msgstr "uni/102/qwertz/bodka"
diff --git a/xorg-server/xkeyboard-config/po/sq.po b/xorg-server/xkeyboard-config/po/sq.po
index 4efec73dc..bfac1d6fc 100644
--- a/xorg-server/xkeyboard-config/po/sq.po
+++ b/xorg-server/xkeyboard-config/po/sq.po
@@ -1,1465 +1,1465 @@
-# translation of xfree86_xkb_xml-4.4pre1 to Albanian
-# This file is distributed under the same license as the xfree86_xkb_xml-4.4pre1 package.
-# Laurent Dhima <laurenti@alblinux.net>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2003-11-25 23:38+0000\n"
-"PO-Revision-Date: 2004-03-03 08:55-0500\n"
-"Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
-"Language-Team: Albanian <gnome-albanian-perkthyesit@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.3\n"
-
-#: xfree86.xml.in.h:1
-msgid "\"Typewriter\""
-msgstr "\"Makinë shkrimi\""
-
-#: xfree86.xml.in.h:2
-msgid "A Tamil typewrite-style keymap; TAB encoding"
-msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim TAB"
-
-#: xfree86.xml.in.h:3
-msgid "A Tamil typewrite-style keymap; TSCII encoding"
-msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim TSCII"
-
-#: xfree86.xml.in.h:4
-msgid "A Tamil typewrite-style keymap; Unicode encoding"
-msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim Unicode"
-
-#: xfree86.xml.in.h:5
-msgid "ACPI Standard"
-msgstr "ACPI Standart"
-
-#: xfree86.xml.in.h:6
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: xfree86.xml.in.h:7
-msgid "Acts as Shift with locking. Shift cancels Caps."
-msgstr "Vepron si Shift me bllokues. Shift fshin Caps."
-
-#: xfree86.xml.in.h:8
-msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
-msgstr "Vepron si Shift me bllokues. Shift nuk fshin Caps."
-
-#: xfree86.xml.in.h:9
-msgid "Add the standard behavior to Menu key."
-msgstr "Shto sjelljen standarte tek Menu key."
-
-#: xfree86.xml.in.h:10
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: xfree86.xml.in.h:11
-msgid "Alb"
-msgstr "Alb"
-
-#: xfree86.xml.in.h:12
-msgid "Albanian"
-msgstr "Shqip"
-
-#: xfree86.xml.in.h:13
-msgid "Alt and Meta on the Alt keys (default)."
-msgstr "Alt dhe Meta tek pulsanti Alt (e prezgjedhur)."
-
-#: xfree86.xml.in.h:14
-msgid "Alt+Control changes group"
-msgstr "Alt+Control ndryshon grupin"
-
-#: xfree86.xml.in.h:15
-msgid "Alt+Shift changes group"
-msgstr "Alt+Shift ndryshon grupin"
-
-#: xfree86.xml.in.h:16
-msgid "Alt/Win key behavior"
-msgstr "Sjellja e pulsantit Alt/Win"
-
-#: xfree86.xml.in.h:17
-msgid "Alternate"
-msgstr "Alterno"
-
-#: xfree86.xml.in.h:18
-msgid "Arabic"
-msgstr "Arabe"
-
-#: xfree86.xml.in.h:19
-msgid "Arb"
-msgstr "Arb"
-
-#: xfree86.xml.in.h:20
-msgid "Arm"
-msgstr "Arm"
-
-#: xfree86.xml.in.h:21
-msgid "Armenian"
-msgstr "Armenisht"
-
-#: xfree86.xml.in.h:22
-msgid "Aze"
-msgstr "Aze"
-
-#: xfree86.xml.in.h:23
-msgid "Azerbaijani"
-msgstr "Azerbaijani"
-
-#: xfree86.xml.in.h:24
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: xfree86.xml.in.h:25
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: xfree86.xml.in.h:26
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: xfree86.xml.in.h:27
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: xfree86.xml.in.h:28
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: xfree86.xml.in.h:29
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: xfree86.xml.in.h:30
-msgid "Basic"
-msgstr "Bazë"
-
-#: xfree86.xml.in.h:31
-msgid "Bel"
-msgstr "Bel"
-
-#: xfree86.xml.in.h:32
-msgid "Belarusian"
-msgstr "Bjelloruse"
-
-#: xfree86.xml.in.h:33
-msgid "Belgian"
-msgstr "Belg"
-
-#: xfree86.xml.in.h:34
-msgid "Ben"
-msgstr "Ben"
-
-#: xfree86.xml.in.h:35
-msgid "Bengali"
-msgstr "Bengali"
-
-#: xfree86.xml.in.h:36
-msgid "Bgr"
-msgstr "Bgr"
-
-#: xfree86.xml.in.h:37
-msgid "Bih"
-msgstr "Bih"
-
-#: xfree86.xml.in.h:38
-msgid "Blr"
-msgstr "Blr"
-
-#: xfree86.xml.in.h:39
-msgid "Bosnian"
-msgstr "Bosnjake"
-
-#: xfree86.xml.in.h:40
-msgid "Both Alt keys together change group"
-msgstr "Dy pulsantët Alt së bashku ndryshjnë grupin"
-
-#: xfree86.xml.in.h:41
-msgid "Both Ctrl keys together change group"
-msgstr "Dy pulsantët Ctrl së bashku ndryshojnë grupin"
-
-#: xfree86.xml.in.h:42
-msgid "Both Shift keys together change group"
-msgstr "Dy pulsantët Shift së bashku ndryshojnë grupin"
-
-#: xfree86.xml.in.h:43
-msgid "Both Win-keys switch group while pressed"
-msgstr "Të dy pulsantët Win ndryshojnë gropin kur shtypen"
-
-#: xfree86.xml.in.h:44
-msgid "Bra"
-msgstr "Bra"
-
-#: xfree86.xml.in.h:45
-msgid "Brazilian"
-msgstr "Braziliane"
-
-#: xfree86.xml.in.h:46
-msgid "Brazilian ABNT2"
-msgstr "Braziliane ABNT2"
-
-#: xfree86.xml.in.h:47
-msgid "Brother Internet Keyboard"
-msgstr "Tastiera Internet Brother"
-
-#: xfree86.xml.in.h:48
-msgid "Bulgarian"
-msgstr "Bullgarisht"
-
-#: xfree86.xml.in.h:49
-msgid "Burmese"
-msgstr "Burmese"
-
-#: xfree86.xml.in.h:50
-msgid "Can"
-msgstr "Can"
-
-#: xfree86.xml.in.h:51
-msgid "Canadian"
-msgstr "Kanadeze"
-
-#: xfree86.xml.in.h:52
-msgid "Caps Lock key changes group"
-msgstr "Pulsanti Caps Lock ndryshon grupin"
-
-#: xfree86.xml.in.h:53
-msgid "CapsLock key behavior"
-msgstr "Sjellja e pulsantit CapsLock"
-
-#: xfree86.xml.in.h:54
-msgid "Caps_Lock LED shows alternative group"
-msgstr "Llampa e Caps_Lock tregon grupin alternativ"
-
-#: xfree86.xml.in.h:55
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: xfree86.xml.in.h:56
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (opcioni alterno)"
-
-#: xfree86.xml.in.h:57
-msgid "Chicony Internet Keyboard"
-msgstr "Tastiera Internet Chicony"
-
-#: xfree86.xml.in.h:58
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: xfree86.xml.in.h:59
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: xfree86.xml.in.h:60
-msgid "CloGaelach Laptop"
-msgstr "Laptop CloGaelach"
-
-#: xfree86.xml.in.h:61
-msgid "Compaq Easy Access Keyboard"
-msgstr "Tastiera Compaq Easy Access"
-
-#: xfree86.xml.in.h:62
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Tatiera Internet Compaq (13 pulsante)"
-
-#: xfree86.xml.in.h:63
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Tastiera Internet Compaq (18 pulsante)"
-
-#: xfree86.xml.in.h:64
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Tastiera Internet Compaq (7 pulsante)"
-
-#: xfree86.xml.in.h:65
-msgid "Compaq iPaq Keyboard"
-msgstr "Tastiera Compaq iPaq"
-
-#: xfree86.xml.in.h:66
-msgid "Control Key Position"
-msgstr "Pozicioni i pulsantit Control"
-
-#: xfree86.xml.in.h:67
-msgid "Control key at bottom left"
-msgstr "Pulsanti Control sipër majtas"
-
-#: xfree86.xml.in.h:68
-msgid "Control key at left of 'A'"
-msgstr "Pulsanti Control në të majtë të 'A'"
-
-#: xfree86.xml.in.h:69
-msgid "Control+Shift changes group"
-msgstr "Control+Shift ndryshon grupin"
-
-#: xfree86.xml.in.h:70
-msgid "Croatian"
-msgstr "Kroate"
-
-#: xfree86.xml.in.h:71
-msgid "Cyrillic"
-msgstr "Cyrillic"
-
-#: xfree86.xml.in.h:72
-msgid "Cze"
-msgstr "Cze"
-
-#: xfree86.xml.in.h:73
-msgid "Czech"
-msgstr "Çekisht"
-
-#: xfree86.xml.in.h:74
-msgid "Czech (qwerty)"
-msgstr "Czech (qwerty)"
-
-#: xfree86.xml.in.h:75
-msgid "Danish"
-msgstr "Danisht"
-
-#: xfree86.xml.in.h:76
-msgid "Dead acute"
-msgstr "Fund kritik"
-
-#: xfree86.xml.in.h:77
-msgid "Dead grave acute"
-msgstr "Fund kritik serioz"
-
-#: xfree86.xml.in.h:78
-msgid "Dell"
-msgstr "Dell"
-
-#: xfree86.xml.in.h:79
-msgid "Dell 101-key PC"
-msgstr "Dell 101-key PC"
-
-#: xfree86.xml.in.h:80
-msgid "Deu"
-msgstr "Deu"
-
-#: xfree86.xml.in.h:81
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Tastierë Dexxa Wireless Desktop"
-
-#: xfree86.xml.in.h:82
-msgid "Diamond 9801 / 9802 series"
-msgstr "Seritë Diamond 9801 / 9802"
-
-#: xfree86.xml.in.h:83
-msgid "Dnk"
-msgstr "Dnk"
-
-#: xfree86.xml.in.h:84
-msgid "Dutch"
-msgstr "Hollandeze"
-
-#: xfree86.xml.in.h:85
-msgid "Dvo"
-msgstr "Dvo"
-
-#: xfree86.xml.in.h:86
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: xfree86.xml.in.h:87
-msgid "Eliminate dead keys"
-msgstr "Elemino pulsantët e vdekur"
-
-#: xfree86.xml.in.h:88
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: xfree86.xml.in.h:89
-msgid "Esp"
-msgstr "Esp"
-
-#: xfree86.xml.in.h:90
-msgid "Est"
-msgstr "Est"
-
-#: xfree86.xml.in.h:91
-msgid "Estonian"
-msgstr "Estonisht"
-
-#: xfree86.xml.in.h:92
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: xfree86.xml.in.h:93
-msgid "Extended"
-msgstr "E zgjeruar"
-
-#: xfree86.xml.in.h:94
-msgid "Fao"
-msgstr "Fao"
-
-#: xfree86.xml.in.h:95
-msgid "Faroese"
-msgstr "Faroese"
-
-#: xfree86.xml.in.h:96
-msgid "Farsi"
-msgstr "Farsi"
-
-#: xfree86.xml.in.h:97
-msgid "Fin"
-msgstr "Fin"
-
-#: xfree86.xml.in.h:98
-msgid "Finnish"
-msgstr "Finlandeze"
-
-#: xfree86.xml.in.h:99
-msgid "Fra"
-msgstr "Fra"
-
-#: xfree86.xml.in.h:100
-msgid "French"
-msgstr "Frengjisht"
-
-#: xfree86.xml.in.h:101
-msgid "French (alternative)"
-msgstr "Franceze (alternativa)"
-
-#: xfree86.xml.in.h:102
-msgid "French Canadian"
-msgstr "Frengjisht e Kanadasë"
-
-#: xfree86.xml.in.h:103
-msgid "GBr"
-msgstr "GBr"
-
-#: xfree86.xml.in.h:104
-msgid "Generic 101-key PC"
-msgstr "Generic 101-key PC"
-
-#: xfree86.xml.in.h:105
-msgid "Generic 102-key (Intl) PC"
-msgstr "Generic 102-key (Intl) PC"
-
-#: xfree86.xml.in.h:106
-msgid "Generic 104-key PC"
-msgstr "Generic 104-key PC"
-
-#: xfree86.xml.in.h:107
-msgid "Generic 105-key (Intl) PC"
-msgstr "Generic 105-key (Intl) PC"
-
-#: xfree86.xml.in.h:108
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: xfree86.xml.in.h:109
-msgid "Geo"
-msgstr "Geo"
-
-#: xfree86.xml.in.h:110
-msgid "Georgian (latin)"
-msgstr "Georgian (latine)"
-
-#: xfree86.xml.in.h:111
-msgid "Georgian (russian)"
-msgstr "Georgian (rusisht)"
-
-#: xfree86.xml.in.h:112
-msgid "German"
-msgstr "Gjermanisht"
-
-#: xfree86.xml.in.h:113
-msgid "Grc"
-msgstr "Grc"
-
-#: xfree86.xml.in.h:114
-msgid "Greek"
-msgstr "Greqisht"
-
-#: xfree86.xml.in.h:115
-msgid "Group Shift/Lock behavior"
-msgstr "Sjellja e grupit Shift/Lock"
-
-#: xfree86.xml.in.h:116
-msgid "Guj"
-msgstr "Guj"
-
-#: xfree86.xml.in.h:117
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: xfree86.xml.in.h:118
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: xfree86.xml.in.h:119
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Tastierë për Internet Hewlett-Packard"
-
-#: xfree86.xml.in.h:120
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: xfree86.xml.in.h:121
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: xfree86.xml.in.h:122
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: xfree86.xml.in.h:123
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: xfree86.xml.in.h:124
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: xfree86.xml.in.h:125
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: xfree86.xml.in.h:126
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: xfree86.xml.in.h:127
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Tastierë multimediale Hewlett-Packard SK-2501"
-
-#: xfree86.xml.in.h:128
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Tastierë për Internet Hewlett-Packard SK-2505"
-
-#: xfree86.xml.in.h:129
-msgid "Hin"
-msgstr "Hin"
-
-#: xfree86.xml.in.h:130
-msgid "Hindi"
-msgstr "Hindi"
-
-#: xfree86.xml.in.h:131
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: xfree86.xml.in.h:132
-msgid "Hrv"
-msgstr "Hrv"
-
-#: xfree86.xml.in.h:133
-msgid "Hun"
-msgstr "Hun"
-
-#: xfree86.xml.in.h:134
-msgid "Hungarian"
-msgstr "Hungarisht"
-
-#: xfree86.xml.in.h:135
-msgid "Hungarian (qwerty)"
-msgstr "Hungareze (qwerty)"
-
-#: xfree86.xml.in.h:136
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper është vendosur tek pulsantët Win."
-
-#: xfree86.xml.in.h:137
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: xfree86.xml.in.h:138
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: xfree86.xml.in.h:139
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (opcioni alternativ)"
-
-#: xfree86.xml.in.h:140
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: xfree86.xml.in.h:141
-msgid "INSCRIPT layout"
-msgstr "Planimetri INSCRIPT"
-
-#: xfree86.xml.in.h:142
-msgid "IS434"
-msgstr "IS434"
-
-#: xfree86.xml.in.h:143
-msgid "IS434 laptop"
-msgstr "Laptop IS434"
-
-#: xfree86.xml.in.h:144
-msgid "ISO Alternate"
-msgstr "ISO Alternative"
-
-#: xfree86.xml.in.h:145
-msgid "Icelandic"
-msgstr "Islandeze"
-
-#: xfree86.xml.in.h:146
-msgid "Iku"
-msgstr "Iku"
-
-#: xfree86.xml.in.h:147
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: xfree86.xml.in.h:148
-msgid "Irish"
-msgstr "Irlandeze"
-
-#: xfree86.xml.in.h:149
-msgid "Irl"
-msgstr "Irl"
-
-#: xfree86.xml.in.h:150
-msgid "Irn"
-msgstr "Irn"
-
-#: xfree86.xml.in.h:151
-msgid "Isl"
-msgstr "Isl"
-
-#: xfree86.xml.in.h:152
-msgid "Isr"
-msgstr "Isr"
-
-#: xfree86.xml.in.h:153
-msgid "Israeli"
-msgstr "Izraeliane"
-
-#: xfree86.xml.in.h:154
-msgid "Ita"
-msgstr "Ita"
-
-#: xfree86.xml.in.h:155
-msgid "Italian"
-msgstr "Italisht"
-
-#: xfree86.xml.in.h:156
-msgid "Japanese"
-msgstr "Japonisht"
-
-#: xfree86.xml.in.h:157
-msgid "Japanese 106-key"
-msgstr "Japoneze 106-pulsantë"
-
-#: xfree86.xml.in.h:158
-msgid "Jpn"
-msgstr "Jpn"
-
-#: xfree86.xml.in.h:159
-msgid "Kan"
-msgstr "Kan"
-
-#: xfree86.xml.in.h:160
-msgid "Kannada"
-msgstr "Kanadeze"
-
-#: xfree86.xml.in.h:161
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: xfree86.xml.in.h:162
-msgid "LAm"
-msgstr "LAm"
-
-#: xfree86.xml.in.h:163
-msgid "Laptop"
-msgstr "Laptop"
-
-#: xfree86.xml.in.h:164
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Tastierë laptop për Laptop/notebook Compaq (p.sh. Armada)"
-
-#: xfree86.xml.in.h:165
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Tastierë për Internet për Laptop/notebook Compaq (p.sh. Presario)"
-
-#: xfree86.xml.in.h:166
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr "Laptop/notebook Dell Inspiron 8xxx"
-
-#: xfree86.xml.in.h:167
-msgid "Latin"
-msgstr "Latinishte"
-
-#: xfree86.xml.in.h:168
-msgid "Latin America"
-msgstr "Latino amerikane"
-
-#: xfree86.xml.in.h:169
-msgid "Latvian"
-msgstr "Letonisht"
-
-#: xfree86.xml.in.h:170
-msgid "Left Alt key changes group"
-msgstr "Pulsanti i majtë Alt ndryshon grupin"
-
-#: xfree86.xml.in.h:171
-msgid "Left Ctrl key changes group"
-msgstr "Pulsanti i majtë Ctrl ndryshon grupin"
-
-#: xfree86.xml.in.h:172
-msgid "Left Shift key changes group"
-msgstr "Pulsanti i majtë Shift ndryshon grupin"
-
-#: xfree86.xml.in.h:173
-msgid "Left Win-key changes group"
-msgstr "Pulsanti i majtë Win ndryshon grupin"
-
-#: xfree86.xml.in.h:174
-msgid "Left Win-key switches group while pressed"
-msgstr "Pulsanti i majtë Win ndryshon grupin kur është i shtypur"
-
-#: xfree86.xml.in.h:175
-msgid "Lithuanian azerty standard"
-msgstr "Lithuanian azerty standart"
-
-#: xfree86.xml.in.h:176
-msgid "Lithuanian qwerty \"numeric\""
-msgstr "Lithuanian qwerty \"numerike\""
-
-#: xfree86.xml.in.h:177
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: xfree86.xml.in.h:178
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: xfree86.xml.in.h:179
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: xfree86.xml.in.h:180
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: xfree86.xml.in.h:181
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (opcioni alternativ)"
-
-#: xfree86.xml.in.h:182
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (opcioni i dytë alternativ)"
-
-#: xfree86.xml.in.h:183
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: xfree86.xml.in.h:184
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: xfree86.xml.in.h:185
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "Tastierë Logitech Deluxe Access"
-
-#: xfree86.xml.in.h:186
-msgid "Logitech Internet Keyboard"
-msgstr "Tastierë për Internet Logitech"
-
-#: xfree86.xml.in.h:187
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Tastierë Logitech Internet Navigator"
-
-#: xfree86.xml.in.h:188
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: xfree86.xml.in.h:189
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: xfree86.xml.in.h:190
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Logitech iTouch keyboard Internet Navigator"
-
-#: xfree86.xml.in.h:191
-msgid "Ltu"
-msgstr "Ltu"
-
-#: xfree86.xml.in.h:192
-msgid "Lva"
-msgstr "Lva"
-
-#: xfree86.xml.in.h:193
-msgid "Macedonian"
-msgstr "Maqedonisht"
-
-#: xfree86.xml.in.h:194
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: xfree86.xml.in.h:195
-msgid "Macintosh Old"
-msgstr "Macintosh i vjetër"
-
-#: xfree86.xml.in.h:196
-msgid "Make CapsLock an additional Control"
-msgstr "Kthe CapsLock në një Control shtesë"
-
-#: xfree86.xml.in.h:197
-msgid "Mal"
-msgstr "Mal"
-
-#: xfree86.xml.in.h:198
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: xfree86.xml.in.h:199
-msgid "Maltese"
-msgstr "Malteze"
-
-#: xfree86.xml.in.h:200
-msgid "Maltese (US layout)"
-msgstr "Maltese (harta US)"
-
-#: xfree86.xml.in.h:201
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: xfree86.xml.in.h:202
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Tastierë Memorex MX2500 EZ-Access"
-
-#: xfree86.xml.in.h:203
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: xfree86.xml.in.h:204
-msgid "Menu is Compose"
-msgstr "Menu është krijuar"
-
-#: xfree86.xml.in.h:205
-msgid "Menu key changes group"
-msgstr "Pulsanti i menu ndryshon grupin"
-
-#: xfree86.xml.in.h:206
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta është vendosur tek pulsantët Win. "
-
-#: xfree86.xml.in.h:207
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta është vendosur tek pulsanti i majtë Win."
-
-#: xfree86.xml.in.h:208
-msgid "Microsoft Internet Keyboard"
-msgstr "Tastierë Microsoft Internet"
-
-#: xfree86.xml.in.h:209
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Suedeze"
-
-#: xfree86.xml.in.h:210
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: xfree86.xml.in.h:211
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: xfree86.xml.in.h:212
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: xfree86.xml.in.h:213
-msgid "Microsoft Office Keyboard"
-msgstr "Tastierë Microsoft Office"
-
-#: xfree86.xml.in.h:214
-msgid "Miscellaneous compatibility options"
-msgstr "Opcione të ndryshme kompatibiliteti"
-
-#: xfree86.xml.in.h:215
-msgid "Mkd"
-msgstr "Mkd"
-
-#: xfree86.xml.in.h:216
-msgid "Mlt"
-msgstr "Mlt"
-
-#: xfree86.xml.in.h:217
-msgid "Mmr"
-msgstr "Mmr"
-
-#: xfree86.xml.in.h:218
-msgid "Mng"
-msgstr "Mng"
-
-#: xfree86.xml.in.h:219
-msgid "Mongolian"
-msgstr "Mongoliane"
-
-#: xfree86.xml.in.h:220
-msgid "Nld"
-msgstr "Nld"
-
-#: xfree86.xml.in.h:221
-msgid "Nor"
-msgstr "Nor"
-
-#: xfree86.xml.in.h:222
-msgid "Northern Saami (Finland)"
-msgstr "Northern Saami (Finlandeze)"
-
-#: xfree86.xml.in.h:223
-msgid "Northern Saami (Norway)"
-msgstr "Northern Saami (Norvegjeze)"
-
-#: xfree86.xml.in.h:224
-msgid "Northern Saami (Sweden)"
-msgstr "Northern Saami (Suedeze)"
-
-#: xfree86.xml.in.h:225
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: xfree86.xml.in.h:226
-msgid "Norwegian"
-msgstr "Norvegjeze"
-
-#: xfree86.xml.in.h:227
-msgid "Num_Lock LED shows alternative group"
-msgstr "Llampa e Num_Lock tregon grupin alternativ"
-
-#: xfree86.xml.in.h:228
-msgid "Ogh"
-msgstr "Ogh"
-
-#: xfree86.xml.in.h:229
-msgid "Ogham"
-msgstr "Ogham"
-
-#: xfree86.xml.in.h:230
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Tastierë Oretec MCK-800 MM/Internet"
-
-#: xfree86.xml.in.h:231
-msgid "Ori"
-msgstr "Ori"
-
-#: xfree86.xml.in.h:232
-msgid "Oriya"
-msgstr "Oriya"
-
-#: xfree86.xml.in.h:233
-msgid "PC-98xx Series"
-msgstr "Seritë PC-98xx"
-
-#: xfree86.xml.in.h:234
-msgid "PC104"
-msgstr "PC104"
-
-#: xfree86.xml.in.h:235
-msgid "Pan"
-msgstr "Pan"
-
-#: xfree86.xml.in.h:236
-msgid "Phonetic"
-msgstr "Phonetic"
-
-#: xfree86.xml.in.h:237
-msgid "Pol"
-msgstr "Pol"
-
-#: xfree86.xml.in.h:238
-msgid "Polish"
-msgstr "Polonisht"
-
-#: xfree86.xml.in.h:239
-msgid "Polish (qwertz)"
-msgstr "Polake (qwertz)"
-
-#: xfree86.xml.in.h:240
-msgid "Polytonic"
-msgstr "Polytonic"
-
-#: xfree86.xml.in.h:241
-msgid "Portuguese"
-msgstr "Portugeze"
-
-#: xfree86.xml.in.h:242
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: xfree86.xml.in.h:243
-msgid "Press Left Win-key to choose 3rd level"
-msgstr "Shtyp pulsantin e majtë Win për të zgjedhur nivelin e tretë"
-
-#: xfree86.xml.in.h:244
-msgid "Press Menu key to choose 3rd level"
-msgstr "Shtyp pulsantin Menu për të zgjedhur nivelin e tretë"
-
-#: xfree86.xml.in.h:245
-msgid "Press Right Control to choose 3rd level"
-msgstr "Shtyp pulsantin e djathtë Control për të zgjedhur nivelin e tretë"
-
-#: xfree86.xml.in.h:246
-msgid "Press Right Win-key to choose 3rd level"
-msgstr "Shtyp pulsantin e djathtë Win për të zgjedhur nivelin e tretë"
-
-#: xfree86.xml.in.h:247
-msgid "Press any of Win-keys to choose 3rd level"
-msgstr "Shtyp çfarëdo pulsanti Win për të zgjedhur nivelin e tretë"
-
-#: xfree86.xml.in.h:248
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: xfree86.xml.in.h:249
-msgid "Prt"
-msgstr "Prt"
-
-#: xfree86.xml.in.h:250
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: xfree86.xml.in.h:251
-msgid "R-Alt switches group while pressed"
-msgstr "D-Alt ndryshon grupin kur është i shtypur"
-
-#: xfree86.xml.in.h:252
-msgid "Right Alt is Compose"
-msgstr "Alt i djathtë u krijua"
-
-#: xfree86.xml.in.h:253
-msgid "Right Alt key changes group"
-msgstr "Pulsanti i djathtë Alt ndryshon grupin"
-
-#: xfree86.xml.in.h:254
-msgid "Right Control key works as Right Alt"
-msgstr "Pulsanti i djathtë Control punon si Alt i djathtë"
-
-#: xfree86.xml.in.h:255
-msgid "Right Ctrl key changes group"
-msgstr "Pulsanti i djathtë Ctrl ndryshon grupin"
-
-#: xfree86.xml.in.h:256
-msgid "Right Shift key changes group"
-msgstr "Pulsanti i djathtë Shift ndryshon grupin"
-
-#: xfree86.xml.in.h:257
-msgid "Right Win-key changes group"
-msgstr "Pulsanti i djathtë Win ndryshon grupin"
-
-#: xfree86.xml.in.h:258
-msgid "Right Win-key is Compose"
-msgstr "Pulsanti Win i djathtë u krijua"
-
-#: xfree86.xml.in.h:259
-msgid "Right Win-key switches group while pressed"
-msgstr "Pulsanti i djathtë Win ndryshon grupin kur është i shtypur"
-
-#: xfree86.xml.in.h:260
-msgid "Romanian"
-msgstr "Rumanisht"
-
-#: xfree86.xml.in.h:261
-msgid "Rou"
-msgstr "Rou"
-
-#: xfree86.xml.in.h:262
-msgid "Rus"
-msgstr "Rus"
-
-#: xfree86.xml.in.h:263
-msgid "Russian"
-msgstr "Rusisht"
-
-#: xfree86.xml.in.h:264
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: xfree86.xml.in.h:265
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: xfree86.xml.in.h:266
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: xfree86.xml.in.h:267
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: xfree86.xml.in.h:268
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: xfree86.xml.in.h:269
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: xfree86.xml.in.h:270
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: xfree86.xml.in.h:271
-msgid "Sapmi"
-msgstr "Sapmi"
-
-#: xfree86.xml.in.h:272
-msgid "Scg"
-msgstr "Scg"
-
-#: xfree86.xml.in.h:273
-msgid "Scroll_Lock LED shows alternative group"
-msgstr "Llampa e Scroll_Lock tregon grupin alternativ"
-
-#: xfree86.xml.in.h:274
-msgid "Serbian"
-msgstr "Sërbisht"
-
-#: xfree86.xml.in.h:275
-msgid "Shift with numpad keys works as in MS Windows"
-msgstr "Shift së bashku me pulsantin numpad funksionon si tek MS Windows"
-
-#: xfree86.xml.in.h:276
-msgid "Slovak"
-msgstr "Sllovake"
-
-#: xfree86.xml.in.h:277
-msgid "Slovak (qwerty)"
-msgstr "Sllovake (qwerty)"
-
-#: xfree86.xml.in.h:278
-msgid "Slovenian"
-msgstr "Sllovene"
-
-#: xfree86.xml.in.h:279
-msgid "Sme"
-msgstr "Sme"
-
-#: xfree86.xml.in.h:280
-msgid "Spanish"
-msgstr "Spanjisht"
-
-#: xfree86.xml.in.h:281
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Çelsa specialë (Ctrl+Alt+&lt;çelsi&gt;) të manazhuar në një server."
-
-#: xfree86.xml.in.h:282
-msgid "Standard"
-msgstr "Standart"
-
-#: xfree86.xml.in.h:283
-msgid "Sun dead keys"
-msgstr "Pulsantë të vdekur Sun"
-
-#: xfree86.xml.in.h:284
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super është vendosur tek pulsantët Win (e prezgjedhur)."
-
-#: xfree86.xml.in.h:285
-msgid "Sv"
-msgstr "Sv"
-
-#: xfree86.xml.in.h:286
-msgid "Svk"
-msgstr "Svk"
-
-#: xfree86.xml.in.h:287
-msgid "Svn"
-msgstr "Svn"
-
-#: xfree86.xml.in.h:288
-msgid "Swap Control and Caps Lock"
-msgstr "Shkëmbyesi Control dhe Caps Lock"
-
-#: xfree86.xml.in.h:289
-msgid "Swe"
-msgstr "Swe"
-
-#: xfree86.xml.in.h:290
-msgid "Swedish"
-msgstr "Suedisht"
-
-#: xfree86.xml.in.h:291
-msgid "Swiss French"
-msgstr "Frengjisht e Zvicrës"
-
-#: xfree86.xml.in.h:292
-msgid "Swiss German"
-msgstr "Gjermenishte e Zvicrës"
-
-#: xfree86.xml.in.h:293
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: xfree86.xml.in.h:294
-msgid "Syr"
-msgstr "Syr"
-
-#: xfree86.xml.in.h:295
-msgid "Syriac"
-msgstr "Siriane"
-
-#: xfree86.xml.in.h:296
-msgid "Tajik"
-msgstr "Tajik"
-
-#: xfree86.xml.in.h:297
-msgid "Tamil"
-msgstr "Tamil"
-
-#: xfree86.xml.in.h:298
-msgid "Tel"
-msgstr "Tel"
-
-#: xfree86.xml.in.h:299
-msgid "Telugu"
-msgstr "Telugu"
-
-#: xfree86.xml.in.h:300
-msgid "Tha"
-msgstr "Tha"
-
-#: xfree86.xml.in.h:301
-msgid "Thai (Kedmanee)"
-msgstr "Thai (Kedmanee)"
-
-#: xfree86.xml.in.h:302
-msgid "Thai (Pattachote)"
-msgstr "Thai (Pattachote)"
-
-#: xfree86.xml.in.h:303
-msgid "Thai (TIS-820.2538)"
-msgstr "Thai (TIS-820.2538)"
-
-#: xfree86.xml.in.h:304
-msgid "Third level choosers"
-msgstr "Zgjedhësit e nivelit të tretë"
-
-#: xfree86.xml.in.h:305
-msgid "Tjk"
-msgstr "Tjk"
-
-#: xfree86.xml.in.h:306
-msgid "Tml"
-msgstr "Tml"
-
-#: xfree86.xml.in.h:307
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: xfree86.xml.in.h:308
-msgid "Trust Direct Access Keyboard"
-msgstr "Tastierë Trust Direct Access"
-
-#: xfree86.xml.in.h:309
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Tastierë klasike Trust Wireless"
-
-#: xfree86.xml.in.h:310
-msgid "Tur"
-msgstr "Tur"
-
-#: xfree86.xml.in.h:311
-msgid "Turkish"
-msgstr "Turqisht"
-
-#: xfree86.xml.in.h:312
-msgid "Turkish (F)"
-msgstr "Turke (F)"
-
-#: xfree86.xml.in.h:313
-msgid "Turkish Alt-Q Layout"
-msgstr "Planimetria Alt-Q Turke"
-
-#: xfree86.xml.in.h:314
-msgid "U.S. English"
-msgstr "U.S. Anglisht"
-
-#: xfree86.xml.in.h:315
-msgid "U.S. English w/ ISO9995-3"
-msgstr "U.S. Anglisht w/ ISO9995-3"
-
-#: xfree86.xml.in.h:316
-msgid "U.S. English w/ dead keys"
-msgstr "U.S. Anglisht w/ dead keys"
-
-#: xfree86.xml.in.h:317
-msgid "US"
-msgstr "US"
-
-#: xfree86.xml.in.h:318
-msgid "US keyboard with Romanian letters"
-msgstr "Tastierë US me gërma Romane"
-
-#: xfree86.xml.in.h:319
-msgid "USA"
-msgstr "USA"
-
-#: xfree86.xml.in.h:320
-msgid "Ukr"
-msgstr "Ukr"
-
-#: xfree86.xml.in.h:321
-msgid "Ukrainian"
-msgstr "Ukrahinase"
-
-#: xfree86.xml.in.h:322
-msgid "UnicodeExpert"
-msgstr "EkspertUnicode"
-
-#: xfree86.xml.in.h:323
-msgid "United Kingdom"
-msgstr "Mbretëria e Bashkuar"
-
-#: xfree86.xml.in.h:324
-msgid "Use keyboard LED to show alternative group"
-msgstr "Përdor LED e tastierës për të treguar grupin alternativ"
-
-#: xfree86.xml.in.h:325
-msgid "Uses internal capitalization. Shift cancels Caps."
-msgstr "Përdor gërma të mëdha në brendësi. Shift fshin Caps."
-
-#: xfree86.xml.in.h:326
-msgid "Uses internal capitalization. Shift doesn't cancel Caps."
-msgstr "Përdor gërma të mëdha në brendësi. Shift nuk fshin Caps."
-
-#: xfree86.xml.in.h:327
-msgid "Uzb"
-msgstr "Uzb"
-
-#: xfree86.xml.in.h:328
-msgid "Uzbek"
-msgstr "Uzbek"
-
-#: xfree86.xml.in.h:329
-msgid "Vietnamese"
-msgstr "Vietnamisht"
-
-#: xfree86.xml.in.h:330
-msgid "Vnm"
-msgstr "Vnm"
-
-#: xfree86.xml.in.h:331
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: xfree86.xml.in.h:332
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: xfree86.xml.in.h:333
-msgid "Yahoo! Internet Keyboard"
-msgstr "Tastierë Yahoo! Internet"
-
-#: xfree86.xml.in.h:334
-msgid "Yug"
-msgstr "Yug"
-
-#: xfree86.xml.in.h:335
-msgid "Yugoslavian"
-msgstr "Yugoslavian"
-
-#: xfree86.xml.in.h:336
-msgid "abnt2"
-msgstr "abnt2"
-
-#: xfree86.xml.in.h:337
-msgid "azerty"
-msgstr "azerty"
-
-#: xfree86.xml.in.h:338
-msgid "azerty/digits"
-msgstr "azerty/digits"
-
-#: xfree86.xml.in.h:339
-msgid "bksl"
-msgstr "bksl"
-
-#: xfree86.xml.in.h:340
-msgid "digits"
-msgstr "numra"
-
-#: xfree86.xml.in.h:341
-msgid "l2/101/qwerty/comma"
-msgstr "l2/101/qwerty/presje"
-
-#: xfree86.xml.in.h:342
-msgid "l2/101/qwerty/dot"
-msgstr "l2/101/qwerty/pikë"
-
-#: xfree86.xml.in.h:343
-msgid "l2/101/qwertz/comma"
-msgstr "l2/101/qwertz/presje"
-
-#: xfree86.xml.in.h:344
-msgid "l2/101/qwertz/dot"
-msgstr "l2/101/qwertz/pikë"
-
-#: xfree86.xml.in.h:345
-msgid "l2/102/qwerty/comma"
-msgstr "l2/102/qwerty/presje"
-
-#: xfree86.xml.in.h:346
-msgid "l2/102/qwerty/dot"
-msgstr "l2/102/qwerty/pikë"
-
-#: xfree86.xml.in.h:347
-msgid "l2/102/qwertz/comma"
-msgstr "l2/102/qwertz/presje"
-
-#: xfree86.xml.in.h:348
-msgid "l2/102/qwertz/dot"
-msgstr "l2/102/qwertz/pikë"
-
-#: xfree86.xml.in.h:349
-msgid "laptop"
-msgstr "laptop"
-
-#: xfree86.xml.in.h:350
-msgid "lyx"
-msgstr "lyx"
-
-#: xfree86.xml.in.h:351
-msgid "qwerty"
-msgstr "qwerty"
-
-#: xfree86.xml.in.h:352
-msgid "qwerty/digits"
-msgstr "qwerty/numra"
-
-#: xfree86.xml.in.h:353
-msgid "sefi"
-msgstr "sefi"
-
-#: xfree86.xml.in.h:354
-msgid "si1452"
-msgstr "si1452"
-
-#: xfree86.xml.in.h:355
-msgid "uni/101/qwerty/comma"
-msgstr "uni/101/qwerty/presje"
-
-#: xfree86.xml.in.h:356
-msgid "uni/101/qwerty/dot"
-msgstr "uni/101/qwerty/pikë"
-
-#: xfree86.xml.in.h:357
-msgid "uni/101/qwertz/comma"
-msgstr "uni/101/qwertz/presje"
-
-#: xfree86.xml.in.h:358
-msgid "uni/101/qwertz/dot"
-msgstr "uni/101/qwertz/pikë"
-
-#: xfree86.xml.in.h:359
-msgid "uni/102/qwerty/comma"
-msgstr "uni/102/qwerty/presje"
-
-#: xfree86.xml.in.h:360
-msgid "uni/102/qwerty/dot"
-msgstr "uni/102/qwerty/pikë"
-
-#: xfree86.xml.in.h:361
-msgid "uni/102/qwertz/comma"
-msgstr "uni/102/qwertz/presje"
-
-#: xfree86.xml.in.h:362
-msgid "uni/102/qwertz/dot"
-msgstr "uni/102/qwertz/pikë"
-
+# translation of xfree86_xkb_xml-4.4pre1 to Albanian
+# This file is distributed under the same license as the xfree86_xkb_xml-4.4pre1 package.
+# Laurent Dhima <laurenti@alblinux.net>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-11-25 23:38+0000\n"
+"PO-Revision-Date: 2004-03-03 08:55-0500\n"
+"Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
+"Language-Team: Albanian <gnome-albanian-perkthyesit@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3\n"
+
+#: xfree86.xml.in.h:1
+msgid "\"Typewriter\""
+msgstr "\"Makinë shkrimi\""
+
+#: xfree86.xml.in.h:2
+msgid "A Tamil typewrite-style keymap; TAB encoding"
+msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim TAB"
+
+#: xfree86.xml.in.h:3
+msgid "A Tamil typewrite-style keymap; TSCII encoding"
+msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim TSCII"
+
+#: xfree86.xml.in.h:4
+msgid "A Tamil typewrite-style keymap; Unicode encoding"
+msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim Unicode"
+
+#: xfree86.xml.in.h:5
+msgid "ACPI Standard"
+msgstr "ACPI Standart"
+
+#: xfree86.xml.in.h:6
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: xfree86.xml.in.h:7
+msgid "Acts as Shift with locking. Shift cancels Caps."
+msgstr "Vepron si Shift me bllokues. Shift fshin Caps."
+
+#: xfree86.xml.in.h:8
+msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
+msgstr "Vepron si Shift me bllokues. Shift nuk fshin Caps."
+
+#: xfree86.xml.in.h:9
+msgid "Add the standard behavior to Menu key."
+msgstr "Shto sjelljen standarte tek Menu key."
+
+#: xfree86.xml.in.h:10
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: xfree86.xml.in.h:11
+msgid "Alb"
+msgstr "Alb"
+
+#: xfree86.xml.in.h:12
+msgid "Albanian"
+msgstr "Shqip"
+
+#: xfree86.xml.in.h:13
+msgid "Alt and Meta on the Alt keys (default)."
+msgstr "Alt dhe Meta tek pulsanti Alt (e prezgjedhur)."
+
+#: xfree86.xml.in.h:14
+msgid "Alt+Control changes group"
+msgstr "Alt+Control ndryshon grupin"
+
+#: xfree86.xml.in.h:15
+msgid "Alt+Shift changes group"
+msgstr "Alt+Shift ndryshon grupin"
+
+#: xfree86.xml.in.h:16
+msgid "Alt/Win key behavior"
+msgstr "Sjellja e pulsantit Alt/Win"
+
+#: xfree86.xml.in.h:17
+msgid "Alternate"
+msgstr "Alterno"
+
+#: xfree86.xml.in.h:18
+msgid "Arabic"
+msgstr "Arabe"
+
+#: xfree86.xml.in.h:19
+msgid "Arb"
+msgstr "Arb"
+
+#: xfree86.xml.in.h:20
+msgid "Arm"
+msgstr "Arm"
+
+#: xfree86.xml.in.h:21
+msgid "Armenian"
+msgstr "Armenisht"
+
+#: xfree86.xml.in.h:22
+msgid "Aze"
+msgstr "Aze"
+
+#: xfree86.xml.in.h:23
+msgid "Azerbaijani"
+msgstr "Azerbaijani"
+
+#: xfree86.xml.in.h:24
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: xfree86.xml.in.h:25
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: xfree86.xml.in.h:26
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: xfree86.xml.in.h:27
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: xfree86.xml.in.h:28
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: xfree86.xml.in.h:29
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: xfree86.xml.in.h:30
+msgid "Basic"
+msgstr "Bazë"
+
+#: xfree86.xml.in.h:31
+msgid "Bel"
+msgstr "Bel"
+
+#: xfree86.xml.in.h:32
+msgid "Belarusian"
+msgstr "Bjelloruse"
+
+#: xfree86.xml.in.h:33
+msgid "Belgian"
+msgstr "Belg"
+
+#: xfree86.xml.in.h:34
+msgid "Ben"
+msgstr "Ben"
+
+#: xfree86.xml.in.h:35
+msgid "Bengali"
+msgstr "Bengali"
+
+#: xfree86.xml.in.h:36
+msgid "Bgr"
+msgstr "Bgr"
+
+#: xfree86.xml.in.h:37
+msgid "Bih"
+msgstr "Bih"
+
+#: xfree86.xml.in.h:38
+msgid "Blr"
+msgstr "Blr"
+
+#: xfree86.xml.in.h:39
+msgid "Bosnian"
+msgstr "Bosnjake"
+
+#: xfree86.xml.in.h:40
+msgid "Both Alt keys together change group"
+msgstr "Dy pulsantët Alt së bashku ndryshjnë grupin"
+
+#: xfree86.xml.in.h:41
+msgid "Both Ctrl keys together change group"
+msgstr "Dy pulsantët Ctrl së bashku ndryshojnë grupin"
+
+#: xfree86.xml.in.h:42
+msgid "Both Shift keys together change group"
+msgstr "Dy pulsantët Shift së bashku ndryshojnë grupin"
+
+#: xfree86.xml.in.h:43
+msgid "Both Win-keys switch group while pressed"
+msgstr "Të dy pulsantët Win ndryshojnë gropin kur shtypen"
+
+#: xfree86.xml.in.h:44
+msgid "Bra"
+msgstr "Bra"
+
+#: xfree86.xml.in.h:45
+msgid "Brazilian"
+msgstr "Braziliane"
+
+#: xfree86.xml.in.h:46
+msgid "Brazilian ABNT2"
+msgstr "Braziliane ABNT2"
+
+#: xfree86.xml.in.h:47
+msgid "Brother Internet Keyboard"
+msgstr "Tastiera Internet Brother"
+
+#: xfree86.xml.in.h:48
+msgid "Bulgarian"
+msgstr "Bullgarisht"
+
+#: xfree86.xml.in.h:49
+msgid "Burmese"
+msgstr "Burmese"
+
+#: xfree86.xml.in.h:50
+msgid "Can"
+msgstr "Can"
+
+#: xfree86.xml.in.h:51
+msgid "Canadian"
+msgstr "Kanadeze"
+
+#: xfree86.xml.in.h:52
+msgid "Caps Lock key changes group"
+msgstr "Pulsanti Caps Lock ndryshon grupin"
+
+#: xfree86.xml.in.h:53
+msgid "CapsLock key behavior"
+msgstr "Sjellja e pulsantit CapsLock"
+
+#: xfree86.xml.in.h:54
+msgid "Caps_Lock LED shows alternative group"
+msgstr "Llampa e Caps_Lock tregon grupin alternativ"
+
+#: xfree86.xml.in.h:55
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: xfree86.xml.in.h:56
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (opcioni alterno)"
+
+#: xfree86.xml.in.h:57
+msgid "Chicony Internet Keyboard"
+msgstr "Tastiera Internet Chicony"
+
+#: xfree86.xml.in.h:58
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: xfree86.xml.in.h:59
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: xfree86.xml.in.h:60
+msgid "CloGaelach Laptop"
+msgstr "Laptop CloGaelach"
+
+#: xfree86.xml.in.h:61
+msgid "Compaq Easy Access Keyboard"
+msgstr "Tastiera Compaq Easy Access"
+
+#: xfree86.xml.in.h:62
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Tatiera Internet Compaq (13 pulsante)"
+
+#: xfree86.xml.in.h:63
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Tastiera Internet Compaq (18 pulsante)"
+
+#: xfree86.xml.in.h:64
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Tastiera Internet Compaq (7 pulsante)"
+
+#: xfree86.xml.in.h:65
+msgid "Compaq iPaq Keyboard"
+msgstr "Tastiera Compaq iPaq"
+
+#: xfree86.xml.in.h:66
+msgid "Control Key Position"
+msgstr "Pozicioni i pulsantit Control"
+
+#: xfree86.xml.in.h:67
+msgid "Control key at bottom left"
+msgstr "Pulsanti Control sipër majtas"
+
+#: xfree86.xml.in.h:68
+msgid "Control key at left of 'A'"
+msgstr "Pulsanti Control në të majtë të 'A'"
+
+#: xfree86.xml.in.h:69
+msgid "Control+Shift changes group"
+msgstr "Control+Shift ndryshon grupin"
+
+#: xfree86.xml.in.h:70
+msgid "Croatian"
+msgstr "Kroate"
+
+#: xfree86.xml.in.h:71
+msgid "Cyrillic"
+msgstr "Cyrillic"
+
+#: xfree86.xml.in.h:72
+msgid "Cze"
+msgstr "Cze"
+
+#: xfree86.xml.in.h:73
+msgid "Czech"
+msgstr "Çekisht"
+
+#: xfree86.xml.in.h:74
+msgid "Czech (qwerty)"
+msgstr "Czech (qwerty)"
+
+#: xfree86.xml.in.h:75
+msgid "Danish"
+msgstr "Danisht"
+
+#: xfree86.xml.in.h:76
+msgid "Dead acute"
+msgstr "Fund kritik"
+
+#: xfree86.xml.in.h:77
+msgid "Dead grave acute"
+msgstr "Fund kritik serioz"
+
+#: xfree86.xml.in.h:78
+msgid "Dell"
+msgstr "Dell"
+
+#: xfree86.xml.in.h:79
+msgid "Dell 101-key PC"
+msgstr "Dell 101-key PC"
+
+#: xfree86.xml.in.h:80
+msgid "Deu"
+msgstr "Deu"
+
+#: xfree86.xml.in.h:81
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Tastierë Dexxa Wireless Desktop"
+
+#: xfree86.xml.in.h:82
+msgid "Diamond 9801 / 9802 series"
+msgstr "Seritë Diamond 9801 / 9802"
+
+#: xfree86.xml.in.h:83
+msgid "Dnk"
+msgstr "Dnk"
+
+#: xfree86.xml.in.h:84
+msgid "Dutch"
+msgstr "Hollandeze"
+
+#: xfree86.xml.in.h:85
+msgid "Dvo"
+msgstr "Dvo"
+
+#: xfree86.xml.in.h:86
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: xfree86.xml.in.h:87
+msgid "Eliminate dead keys"
+msgstr "Elemino pulsantët e vdekur"
+
+#: xfree86.xml.in.h:88
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: xfree86.xml.in.h:89
+msgid "Esp"
+msgstr "Esp"
+
+#: xfree86.xml.in.h:90
+msgid "Est"
+msgstr "Est"
+
+#: xfree86.xml.in.h:91
+msgid "Estonian"
+msgstr "Estonisht"
+
+#: xfree86.xml.in.h:92
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: xfree86.xml.in.h:93
+msgid "Extended"
+msgstr "E zgjeruar"
+
+#: xfree86.xml.in.h:94
+msgid "Fao"
+msgstr "Fao"
+
+#: xfree86.xml.in.h:95
+msgid "Faroese"
+msgstr "Faroese"
+
+#: xfree86.xml.in.h:96
+msgid "Farsi"
+msgstr "Farsi"
+
+#: xfree86.xml.in.h:97
+msgid "Fin"
+msgstr "Fin"
+
+#: xfree86.xml.in.h:98
+msgid "Finnish"
+msgstr "Finlandeze"
+
+#: xfree86.xml.in.h:99
+msgid "Fra"
+msgstr "Fra"
+
+#: xfree86.xml.in.h:100
+msgid "French"
+msgstr "Frengjisht"
+
+#: xfree86.xml.in.h:101
+msgid "French (alternative)"
+msgstr "Franceze (alternativa)"
+
+#: xfree86.xml.in.h:102
+msgid "French Canadian"
+msgstr "Frengjisht e Kanadasë"
+
+#: xfree86.xml.in.h:103
+msgid "GBr"
+msgstr "GBr"
+
+#: xfree86.xml.in.h:104
+msgid "Generic 101-key PC"
+msgstr "Generic 101-key PC"
+
+#: xfree86.xml.in.h:105
+msgid "Generic 102-key (Intl) PC"
+msgstr "Generic 102-key (Intl) PC"
+
+#: xfree86.xml.in.h:106
+msgid "Generic 104-key PC"
+msgstr "Generic 104-key PC"
+
+#: xfree86.xml.in.h:107
+msgid "Generic 105-key (Intl) PC"
+msgstr "Generic 105-key (Intl) PC"
+
+#: xfree86.xml.in.h:108
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: xfree86.xml.in.h:109
+msgid "Geo"
+msgstr "Geo"
+
+#: xfree86.xml.in.h:110
+msgid "Georgian (latin)"
+msgstr "Georgian (latine)"
+
+#: xfree86.xml.in.h:111
+msgid "Georgian (russian)"
+msgstr "Georgian (rusisht)"
+
+#: xfree86.xml.in.h:112
+msgid "German"
+msgstr "Gjermanisht"
+
+#: xfree86.xml.in.h:113
+msgid "Grc"
+msgstr "Grc"
+
+#: xfree86.xml.in.h:114
+msgid "Greek"
+msgstr "Greqisht"
+
+#: xfree86.xml.in.h:115
+msgid "Group Shift/Lock behavior"
+msgstr "Sjellja e grupit Shift/Lock"
+
+#: xfree86.xml.in.h:116
+msgid "Guj"
+msgstr "Guj"
+
+#: xfree86.xml.in.h:117
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: xfree86.xml.in.h:118
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: xfree86.xml.in.h:119
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Tastierë për Internet Hewlett-Packard"
+
+#: xfree86.xml.in.h:120
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: xfree86.xml.in.h:121
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: xfree86.xml.in.h:122
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: xfree86.xml.in.h:123
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: xfree86.xml.in.h:124
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: xfree86.xml.in.h:125
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: xfree86.xml.in.h:126
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: xfree86.xml.in.h:127
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Tastierë multimediale Hewlett-Packard SK-2501"
+
+#: xfree86.xml.in.h:128
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Tastierë për Internet Hewlett-Packard SK-2505"
+
+#: xfree86.xml.in.h:129
+msgid "Hin"
+msgstr "Hin"
+
+#: xfree86.xml.in.h:130
+msgid "Hindi"
+msgstr "Hindi"
+
+#: xfree86.xml.in.h:131
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: xfree86.xml.in.h:132
+msgid "Hrv"
+msgstr "Hrv"
+
+#: xfree86.xml.in.h:133
+msgid "Hun"
+msgstr "Hun"
+
+#: xfree86.xml.in.h:134
+msgid "Hungarian"
+msgstr "Hungarisht"
+
+#: xfree86.xml.in.h:135
+msgid "Hungarian (qwerty)"
+msgstr "Hungareze (qwerty)"
+
+#: xfree86.xml.in.h:136
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper është vendosur tek pulsantët Win."
+
+#: xfree86.xml.in.h:137
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: xfree86.xml.in.h:138
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: xfree86.xml.in.h:139
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (opcioni alternativ)"
+
+#: xfree86.xml.in.h:140
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: xfree86.xml.in.h:141
+msgid "INSCRIPT layout"
+msgstr "Planimetri INSCRIPT"
+
+#: xfree86.xml.in.h:142
+msgid "IS434"
+msgstr "IS434"
+
+#: xfree86.xml.in.h:143
+msgid "IS434 laptop"
+msgstr "Laptop IS434"
+
+#: xfree86.xml.in.h:144
+msgid "ISO Alternate"
+msgstr "ISO Alternative"
+
+#: xfree86.xml.in.h:145
+msgid "Icelandic"
+msgstr "Islandeze"
+
+#: xfree86.xml.in.h:146
+msgid "Iku"
+msgstr "Iku"
+
+#: xfree86.xml.in.h:147
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: xfree86.xml.in.h:148
+msgid "Irish"
+msgstr "Irlandeze"
+
+#: xfree86.xml.in.h:149
+msgid "Irl"
+msgstr "Irl"
+
+#: xfree86.xml.in.h:150
+msgid "Irn"
+msgstr "Irn"
+
+#: xfree86.xml.in.h:151
+msgid "Isl"
+msgstr "Isl"
+
+#: xfree86.xml.in.h:152
+msgid "Isr"
+msgstr "Isr"
+
+#: xfree86.xml.in.h:153
+msgid "Israeli"
+msgstr "Izraeliane"
+
+#: xfree86.xml.in.h:154
+msgid "Ita"
+msgstr "Ita"
+
+#: xfree86.xml.in.h:155
+msgid "Italian"
+msgstr "Italisht"
+
+#: xfree86.xml.in.h:156
+msgid "Japanese"
+msgstr "Japonisht"
+
+#: xfree86.xml.in.h:157
+msgid "Japanese 106-key"
+msgstr "Japoneze 106-pulsantë"
+
+#: xfree86.xml.in.h:158
+msgid "Jpn"
+msgstr "Jpn"
+
+#: xfree86.xml.in.h:159
+msgid "Kan"
+msgstr "Kan"
+
+#: xfree86.xml.in.h:160
+msgid "Kannada"
+msgstr "Kanadeze"
+
+#: xfree86.xml.in.h:161
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: xfree86.xml.in.h:162
+msgid "LAm"
+msgstr "LAm"
+
+#: xfree86.xml.in.h:163
+msgid "Laptop"
+msgstr "Laptop"
+
+#: xfree86.xml.in.h:164
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Tastierë laptop për Laptop/notebook Compaq (p.sh. Armada)"
+
+#: xfree86.xml.in.h:165
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Tastierë për Internet për Laptop/notebook Compaq (p.sh. Presario)"
+
+#: xfree86.xml.in.h:166
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr "Laptop/notebook Dell Inspiron 8xxx"
+
+#: xfree86.xml.in.h:167
+msgid "Latin"
+msgstr "Latinishte"
+
+#: xfree86.xml.in.h:168
+msgid "Latin America"
+msgstr "Latino amerikane"
+
+#: xfree86.xml.in.h:169
+msgid "Latvian"
+msgstr "Letonisht"
+
+#: xfree86.xml.in.h:170
+msgid "Left Alt key changes group"
+msgstr "Pulsanti i majtë Alt ndryshon grupin"
+
+#: xfree86.xml.in.h:171
+msgid "Left Ctrl key changes group"
+msgstr "Pulsanti i majtë Ctrl ndryshon grupin"
+
+#: xfree86.xml.in.h:172
+msgid "Left Shift key changes group"
+msgstr "Pulsanti i majtë Shift ndryshon grupin"
+
+#: xfree86.xml.in.h:173
+msgid "Left Win-key changes group"
+msgstr "Pulsanti i majtë Win ndryshon grupin"
+
+#: xfree86.xml.in.h:174
+msgid "Left Win-key switches group while pressed"
+msgstr "Pulsanti i majtë Win ndryshon grupin kur është i shtypur"
+
+#: xfree86.xml.in.h:175
+msgid "Lithuanian azerty standard"
+msgstr "Lithuanian azerty standart"
+
+#: xfree86.xml.in.h:176
+msgid "Lithuanian qwerty \"numeric\""
+msgstr "Lithuanian qwerty \"numerike\""
+
+#: xfree86.xml.in.h:177
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: xfree86.xml.in.h:178
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: xfree86.xml.in.h:179
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: xfree86.xml.in.h:180
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: xfree86.xml.in.h:181
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (opcioni alternativ)"
+
+#: xfree86.xml.in.h:182
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (opcioni i dytë alternativ)"
+
+#: xfree86.xml.in.h:183
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: xfree86.xml.in.h:184
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: xfree86.xml.in.h:185
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "Tastierë Logitech Deluxe Access"
+
+#: xfree86.xml.in.h:186
+msgid "Logitech Internet Keyboard"
+msgstr "Tastierë për Internet Logitech"
+
+#: xfree86.xml.in.h:187
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Tastierë Logitech Internet Navigator"
+
+#: xfree86.xml.in.h:188
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: xfree86.xml.in.h:189
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: xfree86.xml.in.h:190
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Logitech iTouch keyboard Internet Navigator"
+
+#: xfree86.xml.in.h:191
+msgid "Ltu"
+msgstr "Ltu"
+
+#: xfree86.xml.in.h:192
+msgid "Lva"
+msgstr "Lva"
+
+#: xfree86.xml.in.h:193
+msgid "Macedonian"
+msgstr "Maqedonisht"
+
+#: xfree86.xml.in.h:194
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: xfree86.xml.in.h:195
+msgid "Macintosh Old"
+msgstr "Macintosh i vjetër"
+
+#: xfree86.xml.in.h:196
+msgid "Make CapsLock an additional Control"
+msgstr "Kthe CapsLock në një Control shtesë"
+
+#: xfree86.xml.in.h:197
+msgid "Mal"
+msgstr "Mal"
+
+#: xfree86.xml.in.h:198
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: xfree86.xml.in.h:199
+msgid "Maltese"
+msgstr "Malteze"
+
+#: xfree86.xml.in.h:200
+msgid "Maltese (US layout)"
+msgstr "Maltese (harta US)"
+
+#: xfree86.xml.in.h:201
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: xfree86.xml.in.h:202
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Tastierë Memorex MX2500 EZ-Access"
+
+#: xfree86.xml.in.h:203
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: xfree86.xml.in.h:204
+msgid "Menu is Compose"
+msgstr "Menu është krijuar"
+
+#: xfree86.xml.in.h:205
+msgid "Menu key changes group"
+msgstr "Pulsanti i menu ndryshon grupin"
+
+#: xfree86.xml.in.h:206
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta është vendosur tek pulsantët Win. "
+
+#: xfree86.xml.in.h:207
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta është vendosur tek pulsanti i majtë Win."
+
+#: xfree86.xml.in.h:208
+msgid "Microsoft Internet Keyboard"
+msgstr "Tastierë Microsoft Internet"
+
+#: xfree86.xml.in.h:209
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Suedeze"
+
+#: xfree86.xml.in.h:210
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: xfree86.xml.in.h:211
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: xfree86.xml.in.h:212
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: xfree86.xml.in.h:213
+msgid "Microsoft Office Keyboard"
+msgstr "Tastierë Microsoft Office"
+
+#: xfree86.xml.in.h:214
+msgid "Miscellaneous compatibility options"
+msgstr "Opcione të ndryshme kompatibiliteti"
+
+#: xfree86.xml.in.h:215
+msgid "Mkd"
+msgstr "Mkd"
+
+#: xfree86.xml.in.h:216
+msgid "Mlt"
+msgstr "Mlt"
+
+#: xfree86.xml.in.h:217
+msgid "Mmr"
+msgstr "Mmr"
+
+#: xfree86.xml.in.h:218
+msgid "Mng"
+msgstr "Mng"
+
+#: xfree86.xml.in.h:219
+msgid "Mongolian"
+msgstr "Mongoliane"
+
+#: xfree86.xml.in.h:220
+msgid "Nld"
+msgstr "Nld"
+
+#: xfree86.xml.in.h:221
+msgid "Nor"
+msgstr "Nor"
+
+#: xfree86.xml.in.h:222
+msgid "Northern Saami (Finland)"
+msgstr "Northern Saami (Finlandeze)"
+
+#: xfree86.xml.in.h:223
+msgid "Northern Saami (Norway)"
+msgstr "Northern Saami (Norvegjeze)"
+
+#: xfree86.xml.in.h:224
+msgid "Northern Saami (Sweden)"
+msgstr "Northern Saami (Suedeze)"
+
+#: xfree86.xml.in.h:225
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: xfree86.xml.in.h:226
+msgid "Norwegian"
+msgstr "Norvegjeze"
+
+#: xfree86.xml.in.h:227
+msgid "Num_Lock LED shows alternative group"
+msgstr "Llampa e Num_Lock tregon grupin alternativ"
+
+#: xfree86.xml.in.h:228
+msgid "Ogh"
+msgstr "Ogh"
+
+#: xfree86.xml.in.h:229
+msgid "Ogham"
+msgstr "Ogham"
+
+#: xfree86.xml.in.h:230
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Tastierë Oretec MCK-800 MM/Internet"
+
+#: xfree86.xml.in.h:231
+msgid "Ori"
+msgstr "Ori"
+
+#: xfree86.xml.in.h:232
+msgid "Oriya"
+msgstr "Oriya"
+
+#: xfree86.xml.in.h:233
+msgid "PC-98xx Series"
+msgstr "Seritë PC-98xx"
+
+#: xfree86.xml.in.h:234
+msgid "PC104"
+msgstr "PC104"
+
+#: xfree86.xml.in.h:235
+msgid "Pan"
+msgstr "Pan"
+
+#: xfree86.xml.in.h:236
+msgid "Phonetic"
+msgstr "Phonetic"
+
+#: xfree86.xml.in.h:237
+msgid "Pol"
+msgstr "Pol"
+
+#: xfree86.xml.in.h:238
+msgid "Polish"
+msgstr "Polonisht"
+
+#: xfree86.xml.in.h:239
+msgid "Polish (qwertz)"
+msgstr "Polake (qwertz)"
+
+#: xfree86.xml.in.h:240
+msgid "Polytonic"
+msgstr "Polytonic"
+
+#: xfree86.xml.in.h:241
+msgid "Portuguese"
+msgstr "Portugeze"
+
+#: xfree86.xml.in.h:242
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: xfree86.xml.in.h:243
+msgid "Press Left Win-key to choose 3rd level"
+msgstr "Shtyp pulsantin e majtë Win për të zgjedhur nivelin e tretë"
+
+#: xfree86.xml.in.h:244
+msgid "Press Menu key to choose 3rd level"
+msgstr "Shtyp pulsantin Menu për të zgjedhur nivelin e tretë"
+
+#: xfree86.xml.in.h:245
+msgid "Press Right Control to choose 3rd level"
+msgstr "Shtyp pulsantin e djathtë Control për të zgjedhur nivelin e tretë"
+
+#: xfree86.xml.in.h:246
+msgid "Press Right Win-key to choose 3rd level"
+msgstr "Shtyp pulsantin e djathtë Win për të zgjedhur nivelin e tretë"
+
+#: xfree86.xml.in.h:247
+msgid "Press any of Win-keys to choose 3rd level"
+msgstr "Shtyp çfarëdo pulsanti Win për të zgjedhur nivelin e tretë"
+
+#: xfree86.xml.in.h:248
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: xfree86.xml.in.h:249
+msgid "Prt"
+msgstr "Prt"
+
+#: xfree86.xml.in.h:250
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: xfree86.xml.in.h:251
+msgid "R-Alt switches group while pressed"
+msgstr "D-Alt ndryshon grupin kur është i shtypur"
+
+#: xfree86.xml.in.h:252
+msgid "Right Alt is Compose"
+msgstr "Alt i djathtë u krijua"
+
+#: xfree86.xml.in.h:253
+msgid "Right Alt key changes group"
+msgstr "Pulsanti i djathtë Alt ndryshon grupin"
+
+#: xfree86.xml.in.h:254
+msgid "Right Control key works as Right Alt"
+msgstr "Pulsanti i djathtë Control punon si Alt i djathtë"
+
+#: xfree86.xml.in.h:255
+msgid "Right Ctrl key changes group"
+msgstr "Pulsanti i djathtë Ctrl ndryshon grupin"
+
+#: xfree86.xml.in.h:256
+msgid "Right Shift key changes group"
+msgstr "Pulsanti i djathtë Shift ndryshon grupin"
+
+#: xfree86.xml.in.h:257
+msgid "Right Win-key changes group"
+msgstr "Pulsanti i djathtë Win ndryshon grupin"
+
+#: xfree86.xml.in.h:258
+msgid "Right Win-key is Compose"
+msgstr "Pulsanti Win i djathtë u krijua"
+
+#: xfree86.xml.in.h:259
+msgid "Right Win-key switches group while pressed"
+msgstr "Pulsanti i djathtë Win ndryshon grupin kur është i shtypur"
+
+#: xfree86.xml.in.h:260
+msgid "Romanian"
+msgstr "Rumanisht"
+
+#: xfree86.xml.in.h:261
+msgid "Rou"
+msgstr "Rou"
+
+#: xfree86.xml.in.h:262
+msgid "Rus"
+msgstr "Rus"
+
+#: xfree86.xml.in.h:263
+msgid "Russian"
+msgstr "Rusisht"
+
+#: xfree86.xml.in.h:264
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: xfree86.xml.in.h:265
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: xfree86.xml.in.h:266
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: xfree86.xml.in.h:267
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: xfree86.xml.in.h:268
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: xfree86.xml.in.h:269
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: xfree86.xml.in.h:270
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: xfree86.xml.in.h:271
+msgid "Sapmi"
+msgstr "Sapmi"
+
+#: xfree86.xml.in.h:272
+msgid "Scg"
+msgstr "Scg"
+
+#: xfree86.xml.in.h:273
+msgid "Scroll_Lock LED shows alternative group"
+msgstr "Llampa e Scroll_Lock tregon grupin alternativ"
+
+#: xfree86.xml.in.h:274
+msgid "Serbian"
+msgstr "Sërbisht"
+
+#: xfree86.xml.in.h:275
+msgid "Shift with numpad keys works as in MS Windows"
+msgstr "Shift së bashku me pulsantin numpad funksionon si tek MS Windows"
+
+#: xfree86.xml.in.h:276
+msgid "Slovak"
+msgstr "Sllovake"
+
+#: xfree86.xml.in.h:277
+msgid "Slovak (qwerty)"
+msgstr "Sllovake (qwerty)"
+
+#: xfree86.xml.in.h:278
+msgid "Slovenian"
+msgstr "Sllovene"
+
+#: xfree86.xml.in.h:279
+msgid "Sme"
+msgstr "Sme"
+
+#: xfree86.xml.in.h:280
+msgid "Spanish"
+msgstr "Spanjisht"
+
+#: xfree86.xml.in.h:281
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Çelsa specialë (Ctrl+Alt+&lt;çelsi&gt;) të manazhuar në një server."
+
+#: xfree86.xml.in.h:282
+msgid "Standard"
+msgstr "Standart"
+
+#: xfree86.xml.in.h:283
+msgid "Sun dead keys"
+msgstr "Pulsantë të vdekur Sun"
+
+#: xfree86.xml.in.h:284
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super është vendosur tek pulsantët Win (e prezgjedhur)."
+
+#: xfree86.xml.in.h:285
+msgid "Sv"
+msgstr "Sv"
+
+#: xfree86.xml.in.h:286
+msgid "Svk"
+msgstr "Svk"
+
+#: xfree86.xml.in.h:287
+msgid "Svn"
+msgstr "Svn"
+
+#: xfree86.xml.in.h:288
+msgid "Swap Control and Caps Lock"
+msgstr "Shkëmbyesi Control dhe Caps Lock"
+
+#: xfree86.xml.in.h:289
+msgid "Swe"
+msgstr "Swe"
+
+#: xfree86.xml.in.h:290
+msgid "Swedish"
+msgstr "Suedisht"
+
+#: xfree86.xml.in.h:291
+msgid "Swiss French"
+msgstr "Frengjisht e Zvicrës"
+
+#: xfree86.xml.in.h:292
+msgid "Swiss German"
+msgstr "Gjermenishte e Zvicrës"
+
+#: xfree86.xml.in.h:293
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: xfree86.xml.in.h:294
+msgid "Syr"
+msgstr "Syr"
+
+#: xfree86.xml.in.h:295
+msgid "Syriac"
+msgstr "Siriane"
+
+#: xfree86.xml.in.h:296
+msgid "Tajik"
+msgstr "Tajik"
+
+#: xfree86.xml.in.h:297
+msgid "Tamil"
+msgstr "Tamil"
+
+#: xfree86.xml.in.h:298
+msgid "Tel"
+msgstr "Tel"
+
+#: xfree86.xml.in.h:299
+msgid "Telugu"
+msgstr "Telugu"
+
+#: xfree86.xml.in.h:300
+msgid "Tha"
+msgstr "Tha"
+
+#: xfree86.xml.in.h:301
+msgid "Thai (Kedmanee)"
+msgstr "Thai (Kedmanee)"
+
+#: xfree86.xml.in.h:302
+msgid "Thai (Pattachote)"
+msgstr "Thai (Pattachote)"
+
+#: xfree86.xml.in.h:303
+msgid "Thai (TIS-820.2538)"
+msgstr "Thai (TIS-820.2538)"
+
+#: xfree86.xml.in.h:304
+msgid "Third level choosers"
+msgstr "Zgjedhësit e nivelit të tretë"
+
+#: xfree86.xml.in.h:305
+msgid "Tjk"
+msgstr "Tjk"
+
+#: xfree86.xml.in.h:306
+msgid "Tml"
+msgstr "Tml"
+
+#: xfree86.xml.in.h:307
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: xfree86.xml.in.h:308
+msgid "Trust Direct Access Keyboard"
+msgstr "Tastierë Trust Direct Access"
+
+#: xfree86.xml.in.h:309
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Tastierë klasike Trust Wireless"
+
+#: xfree86.xml.in.h:310
+msgid "Tur"
+msgstr "Tur"
+
+#: xfree86.xml.in.h:311
+msgid "Turkish"
+msgstr "Turqisht"
+
+#: xfree86.xml.in.h:312
+msgid "Turkish (F)"
+msgstr "Turke (F)"
+
+#: xfree86.xml.in.h:313
+msgid "Turkish Alt-Q Layout"
+msgstr "Planimetria Alt-Q Turke"
+
+#: xfree86.xml.in.h:314
+msgid "U.S. English"
+msgstr "U.S. Anglisht"
+
+#: xfree86.xml.in.h:315
+msgid "U.S. English w/ ISO9995-3"
+msgstr "U.S. Anglisht w/ ISO9995-3"
+
+#: xfree86.xml.in.h:316
+msgid "U.S. English w/ dead keys"
+msgstr "U.S. Anglisht w/ dead keys"
+
+#: xfree86.xml.in.h:317
+msgid "US"
+msgstr "US"
+
+#: xfree86.xml.in.h:318
+msgid "US keyboard with Romanian letters"
+msgstr "Tastierë US me gërma Romane"
+
+#: xfree86.xml.in.h:319
+msgid "USA"
+msgstr "USA"
+
+#: xfree86.xml.in.h:320
+msgid "Ukr"
+msgstr "Ukr"
+
+#: xfree86.xml.in.h:321
+msgid "Ukrainian"
+msgstr "Ukrahinase"
+
+#: xfree86.xml.in.h:322
+msgid "UnicodeExpert"
+msgstr "EkspertUnicode"
+
+#: xfree86.xml.in.h:323
+msgid "United Kingdom"
+msgstr "Mbretëria e Bashkuar"
+
+#: xfree86.xml.in.h:324
+msgid "Use keyboard LED to show alternative group"
+msgstr "Përdor LED e tastierës për të treguar grupin alternativ"
+
+#: xfree86.xml.in.h:325
+msgid "Uses internal capitalization. Shift cancels Caps."
+msgstr "Përdor gërma të mëdha në brendësi. Shift fshin Caps."
+
+#: xfree86.xml.in.h:326
+msgid "Uses internal capitalization. Shift doesn't cancel Caps."
+msgstr "Përdor gërma të mëdha në brendësi. Shift nuk fshin Caps."
+
+#: xfree86.xml.in.h:327
+msgid "Uzb"
+msgstr "Uzb"
+
+#: xfree86.xml.in.h:328
+msgid "Uzbek"
+msgstr "Uzbek"
+
+#: xfree86.xml.in.h:329
+msgid "Vietnamese"
+msgstr "Vietnamisht"
+
+#: xfree86.xml.in.h:330
+msgid "Vnm"
+msgstr "Vnm"
+
+#: xfree86.xml.in.h:331
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: xfree86.xml.in.h:332
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: xfree86.xml.in.h:333
+msgid "Yahoo! Internet Keyboard"
+msgstr "Tastierë Yahoo! Internet"
+
+#: xfree86.xml.in.h:334
+msgid "Yug"
+msgstr "Yug"
+
+#: xfree86.xml.in.h:335
+msgid "Yugoslavian"
+msgstr "Yugoslavian"
+
+#: xfree86.xml.in.h:336
+msgid "abnt2"
+msgstr "abnt2"
+
+#: xfree86.xml.in.h:337
+msgid "azerty"
+msgstr "azerty"
+
+#: xfree86.xml.in.h:338
+msgid "azerty/digits"
+msgstr "azerty/digits"
+
+#: xfree86.xml.in.h:339
+msgid "bksl"
+msgstr "bksl"
+
+#: xfree86.xml.in.h:340
+msgid "digits"
+msgstr "numra"
+
+#: xfree86.xml.in.h:341
+msgid "l2/101/qwerty/comma"
+msgstr "l2/101/qwerty/presje"
+
+#: xfree86.xml.in.h:342
+msgid "l2/101/qwerty/dot"
+msgstr "l2/101/qwerty/pikë"
+
+#: xfree86.xml.in.h:343
+msgid "l2/101/qwertz/comma"
+msgstr "l2/101/qwertz/presje"
+
+#: xfree86.xml.in.h:344
+msgid "l2/101/qwertz/dot"
+msgstr "l2/101/qwertz/pikë"
+
+#: xfree86.xml.in.h:345
+msgid "l2/102/qwerty/comma"
+msgstr "l2/102/qwerty/presje"
+
+#: xfree86.xml.in.h:346
+msgid "l2/102/qwerty/dot"
+msgstr "l2/102/qwerty/pikë"
+
+#: xfree86.xml.in.h:347
+msgid "l2/102/qwertz/comma"
+msgstr "l2/102/qwertz/presje"
+
+#: xfree86.xml.in.h:348
+msgid "l2/102/qwertz/dot"
+msgstr "l2/102/qwertz/pikë"
+
+#: xfree86.xml.in.h:349
+msgid "laptop"
+msgstr "laptop"
+
+#: xfree86.xml.in.h:350
+msgid "lyx"
+msgstr "lyx"
+
+#: xfree86.xml.in.h:351
+msgid "qwerty"
+msgstr "qwerty"
+
+#: xfree86.xml.in.h:352
+msgid "qwerty/digits"
+msgstr "qwerty/numra"
+
+#: xfree86.xml.in.h:353
+msgid "sefi"
+msgstr "sefi"
+
+#: xfree86.xml.in.h:354
+msgid "si1452"
+msgstr "si1452"
+
+#: xfree86.xml.in.h:355
+msgid "uni/101/qwerty/comma"
+msgstr "uni/101/qwerty/presje"
+
+#: xfree86.xml.in.h:356
+msgid "uni/101/qwerty/dot"
+msgstr "uni/101/qwerty/pikë"
+
+#: xfree86.xml.in.h:357
+msgid "uni/101/qwertz/comma"
+msgstr "uni/101/qwertz/presje"
+
+#: xfree86.xml.in.h:358
+msgid "uni/101/qwertz/dot"
+msgstr "uni/101/qwertz/pikë"
+
+#: xfree86.xml.in.h:359
+msgid "uni/102/qwerty/comma"
+msgstr "uni/102/qwerty/presje"
+
+#: xfree86.xml.in.h:360
+msgid "uni/102/qwerty/dot"
+msgstr "uni/102/qwerty/pikë"
+
+#: xfree86.xml.in.h:361
+msgid "uni/102/qwertz/comma"
+msgstr "uni/102/qwertz/presje"
+
+#: xfree86.xml.in.h:362
+msgid "uni/102/qwertz/dot"
+msgstr "uni/102/qwertz/pikë"
+
diff --git a/xorg-server/xkeyboard-config/po/sr.po b/xorg-server/xkeyboard-config/po/sr.po
index d4ed4a5f3..2e9b2a874 100644
--- a/xorg-server/xkeyboard-config/po/sr.po
+++ b/xorg-server/xkeyboard-config/po/sr.po
@@ -1,2066 +1,2066 @@
-# Serbian translation of xfree_xkb_xml-4.4pre1
-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
-# Danilo Segan <dsegan@gmx.net>, 2003, 2004, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-03-02 19:07+0100\n"
-"PO-Revision-Date: 2006-03-02 19:14+0100\n"
-"Last-Translator: Danilo Segan <dsegan@gmx.net>\n"
-"Language-Team: Serbian <sr@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/запета/акценти"
-
-#: ../rules/base.xml.in.h:3
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/запета/без акцената"
-
-#: ../rules/base.xml.in.h:4
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/тачка/акценти"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/тачка/без акцената"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/запета/акценти"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/запета/без акцената"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/тачка/акценти"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/тачка/без акцената"
-
-#: ../rules/base.xml.in.h:10
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/запета/акценти"
-
-#: ../rules/base.xml.in.h:11
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/запета/без акцената"
-
-#: ../rules/base.xml.in.h:12
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/тачка/акценти"
-
-#: ../rules/base.xml.in.h:13
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/тачка/без акцената"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/запета/акценти"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/запета/без акцената"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/тачка/акценти"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/тачка/без акцената"
-
-#: ../rules/base.xml.in.h:18
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:19
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:20
-msgid "ACPI Standard"
-msgstr "ACPI Ñтандард"
-
-#: ../rules/base.xml.in.h:21
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:22
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:23
-msgid "Add the EuroSign to the 2 key."
-msgstr "Додај знак за евро на таÑтер 2."
-
-#: ../rules/base.xml.in.h:24
-msgid "Add the EuroSign to the 5 key."
-msgstr "Додај знак за евро на таÑтер 5."
-
-#: ../rules/base.xml.in.h:25
-msgid "Add the EuroSign to the E key."
-msgstr "Додај знак за евро на таÑтер E."
-
-#: ../rules/base.xml.in.h:26
-msgid "Add the standard behavior to Menu key."
-msgstr "Додај обично понашање Menu таÑтеру."
-
-#: ../rules/base.xml.in.h:27
-msgid "Adding the EuroSign to certain keys"
-msgstr "Додавање знака за евро одређеним таÑтерима"
-
-#
-#: ../rules/base.xml.in.h:28
-msgid "Advance Scorpius KI"
-msgstr "Ðапредни Шкорпион КИ"
-
-#: ../rules/base.xml.in.h:29
-msgid "Afg"
-msgstr "афг"
-
-#: ../rules/base.xml.in.h:30
-msgid "Afghanistan"
-msgstr "ÐфганиÑтан"
-
-#: ../rules/base.xml.in.h:31
-msgid "Akan"
-msgstr "акан"
-
-#: ../rules/base.xml.in.h:32
-msgid "Alb"
-msgstr "алб"
-
-#: ../rules/base.xml.in.h:33
-msgid "Albania"
-msgstr "Ðлбанија"
-
-#: ../rules/base.xml.in.h:34
-msgid "Alt and Meta are on the Alt keys (default)."
-msgstr "Alt и Meta Ñу на Alt таÑтерима (подразумевано)."
-
-#: ../rules/base.xml.in.h:35
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "Alt је мапиран на деÑни Windows таÑтер, а Super на Menu."
-
-#: ../rules/base.xml.in.h:36
-msgid "Alt+Ctrl changes group."
-msgstr "Alt+Ctrl мења групу."
-
-#: ../rules/base.xml.in.h:37
-msgid "Alt+Shift changes group."
-msgstr "Alt+Shift мења групу."
-
-#: ../rules/base.xml.in.h:38
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:39
-msgid "Alt/Win key behavior"
-msgstr "Понашање Alt/Win таÑтера"
-
-# Ðаизменично?
-#: ../rules/base.xml.in.h:40
-msgid "Alternative"
-msgstr "ДопунÑка"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alternative international (former us_intl)"
-msgstr "ДопунÑка међународна (бивша us_intl)"
-
-#: ../rules/base.xml.in.h:42
-msgid "Alternative, Sun dead keys"
-msgstr "ДопунÑка, Sun-ови акценти"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alternative, eliminate dead keys"
-msgstr "ДопунÑка, без акцената"
-
-#: ../rules/base.xml.in.h:44
-msgid "And"
-msgstr "анд"
-
-#: ../rules/base.xml.in.h:45
-msgid "Andorra"
-msgstr "Ðндора"
-
-#: ../rules/base.xml.in.h:46
-msgid "Apostrophe (') variant"
-msgstr "Варијанта Ñа апоÑтрофом (')"
-
-#: ../rules/base.xml.in.h:47
-msgid "Ara"
-msgstr "ара"
-
-#: ../rules/base.xml.in.h:48
-msgid "Arabic"
-msgstr "арапÑки"
-
-#: ../rules/base.xml.in.h:49
-msgid "Arm"
-msgstr "јрм"
-
-#: ../rules/base.xml.in.h:50
-msgid "Armenia"
-msgstr "Јерменија"
-
-#: ../rules/base.xml.in.h:51
-msgid "Aze"
-msgstr "азб"
-
-#: ../rules/base.xml.in.h:52
-msgid "Azerbaijan"
-msgstr "Ðзербејџан"
-
-#: ../rules/base.xml.in.h:53
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 бежична Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:54
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:55
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF мултимедијална"
-
-#: ../rules/base.xml.in.h:56
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:57
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:58
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:59
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:60
-msgid "Ban"
-msgstr "бан"
-
-#: ../rules/base.xml.in.h:61
-msgid "Bangladesh"
-msgstr "Бангладеш"
-
-#: ../rules/base.xml.in.h:62
-msgid "Bel"
-msgstr "блг"
-
-#: ../rules/base.xml.in.h:63
-msgid "Belarus"
-msgstr "БелоруÑија"
-
-#: ../rules/base.xml.in.h:64
-msgid "Belgium"
-msgstr "Белгија"
-
-#: ../rules/base.xml.in.h:65
-msgid "Bengali"
-msgstr "бенгалÑки"
-
-#: ../rules/base.xml.in.h:66
-msgid "Bengali Probhat"
-msgstr "бенгалÑки пробат"
-
-#: ../rules/base.xml.in.h:67
-msgid "Bgr"
-msgstr "буг"
-
-#: ../rules/base.xml.in.h:68
-msgid "Bhu"
-msgstr "бут"
-
-#: ../rules/base.xml.in.h:69
-msgid "Bhutan"
-msgstr "Бутан"
-
-#: ../rules/base.xml.in.h:70
-msgid "Bih"
-msgstr "бих"
-
-#: ../rules/base.xml.in.h:71
-msgid "Blr"
-msgstr "блр"
-
-#: ../rules/base.xml.in.h:72
-msgid "Bosnia and Herzegovina"
-msgstr "БоÑна и Херцеговина"
-
-#: ../rules/base.xml.in.h:73
-msgid "Both Alt keys together change group."
-msgstr "Оба Alt таÑтера мењају групу."
-
-#: ../rules/base.xml.in.h:74
-msgid "Both Ctrl keys together change group."
-msgstr "Оба Ctrl таÑтера мењају групу."
-
-#: ../rules/base.xml.in.h:75
-msgid "Both Shift keys together change group."
-msgstr "Оба Shift таÑтера мењају групу."
-
-#: ../rules/base.xml.in.h:76
-msgid "Both Win-keys switch group while pressed."
-msgstr "Оба Win-таÑтера мењају групу када Ñу притиÑнути."
-
-#: ../rules/base.xml.in.h:77
-msgid "Bra"
-msgstr "бра"
-
-#: ../rules/base.xml.in.h:78
-msgid "Brazil"
-msgstr "Бразил"
-
-#: ../rules/base.xml.in.h:79
-msgid "Brazilian ABNT2"
-msgstr "бразилÑка ABNT2"
-
-#: ../rules/base.xml.in.h:80
-msgid "Brother Internet Keyboard"
-msgstr "Brother Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:81
-msgid "Bulgaria"
-msgstr "БугарÑка"
-
-#: ../rules/base.xml.in.h:82
-msgid "Cambodia"
-msgstr "Камбоџа"
-
-#: ../rules/base.xml.in.h:83
-msgid "Can"
-msgstr "кан"
-
-#: ../rules/base.xml.in.h:84
-msgid "Canada"
-msgstr "Канада"
-
-#: ../rules/base.xml.in.h:85
-msgid "Caps Lock is Compose."
-msgstr "Caps Lock је комбинујући таÑтер."
-
-#: ../rules/base.xml.in.h:86
-msgid "CapsLock LED shows alternative group."
-msgstr "Лампица за Caps Lock показује измењивање групе."
-
-#: ../rules/base.xml.in.h:87
-msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
-msgstr "CapsLock Ñе понаша као трајни Shift. Shift укида Caps."
-
-#: ../rules/base.xml.in.h:88
-msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
-msgstr "CapsLock Ñе понаша као трајни Shift. Shift не укида Caps."
-
-#: ../rules/base.xml.in.h:89
-msgid "CapsLock just locks the Shift modifier."
-msgstr "CapsLock проÑто трајно укључује Shift."
-
-#: ../rules/base.xml.in.h:90
-msgid "CapsLock key behavior"
-msgstr "Понашање Caps Lock таÑтера"
-
-#: ../rules/base.xml.in.h:91
-msgid "CapsLock key changes group."
-msgstr "Caps Lock таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:92
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "CapsLock мења Shift Ñтање па делује на Ñве таÑтере."
-
-#: ../rules/base.xml.in.h:93
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "CapsLock мења обичну величину Ñлова."
-
-#: ../rules/base.xml.in.h:94
-msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
-msgstr "CapsLock кориÑти унутрашњу величину Ñлова. Shift укида Caps Lock."
-
-#: ../rules/base.xml.in.h:95
-msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
-msgstr "CapsLock кориÑти унутрашњу величину Ñлова. Shift не укида Caps Lock."
-
-#: ../rules/base.xml.in.h:96
-msgid "Catalan variant with middle-dot L"
-msgstr "каталонÑка варијанта Ñа L и Ñредњом тачком"
-
-#: ../rules/base.xml.in.h:97
-msgid "Che"
-msgstr "швц"
-
-#: ../rules/base.xml.in.h:98
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:99
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (друга могућноÑÑ‚)"
-
-#: ../rules/base.xml.in.h:100
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:101
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:102
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:103
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:104
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:105
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq таÑтатура за лак приÑтуп"
-
-#: ../rules/base.xml.in.h:106
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Интернет таÑтатура (13 таÑтера)"
-
-#: ../rules/base.xml.in.h:107
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Интернет таÑтатура (18 таÑтера)"
-
-#: ../rules/base.xml.in.h:108
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Интернет таÑтатура (7 таÑтера)"
-
-#: ../rules/base.xml.in.h:109
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq таÑтатура"
-
-#: ../rules/base.xml.in.h:110
-msgid "Compose key position"
-msgstr "Положај таÑтера Compose"
-
-#: ../rules/base.xml.in.h:111
-msgid "Croatia"
-msgstr "ХрватÑка"
-
-#: ../rules/base.xml.in.h:112
-msgid "Ctrl key at bottom left"
-msgstr "ТаÑтер Ctrl је у дну лево"
-
-#: ../rules/base.xml.in.h:113
-msgid "Ctrl key at left of 'A'"
-msgstr "ТаÑтер Ctrl је у лево од „Ð“"
-
-#: ../rules/base.xml.in.h:114
-msgid "Ctrl key position"
-msgstr "Положај таÑтера Ctrl"
-
-#: ../rules/base.xml.in.h:115
-msgid "Ctrl+Shift changes group."
-msgstr "Ctrl+Shift мења групу."
-
-#: ../rules/base.xml.in.h:116
-msgid "Cyrillic"
-msgstr "ћирилични"
-
-#: ../rules/base.xml.in.h:117
-msgid "Cze"
-msgstr "чеш"
-
-#: ../rules/base.xml.in.h:118
-msgid "Czechia"
-msgstr "Чешка"
-
-#: ../rules/base.xml.in.h:119
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:120
-msgid "Dead acute"
-msgstr "ÐкутÑки акценат"
-
-#: ../rules/base.xml.in.h:121
-msgid "Dead grave acute"
-msgstr "Ð“Ñ€Ð°Ð²Ð¸Ñ Ð°ÐºÑƒÑ‚Ñки акценат"
-
-#: ../rules/base.xml.in.h:122
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:123
-msgid "Dell 101-key PC"
-msgstr "Dell 101-таÑтер PC"
-
-#: ../rules/base.xml.in.h:124
-msgid "Dell USB Multimedia Keybard"
-msgstr "Dell USB мултимедијална таÑтатура"
-
-#: ../rules/base.xml.in.h:125
-msgid "Denmark"
-msgstr "ДанÑка"
-
-#: ../rules/base.xml.in.h:126
-msgid "Deu"
-msgstr "нем"
-
-#: ../rules/base.xml.in.h:127
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa бежична таÑтатура"
-
-#: ../rules/base.xml.in.h:128
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 Ñерија"
-
-#: ../rules/base.xml.in.h:129
-msgid "Dnk"
-msgstr "дан"
-
-#: ../rules/base.xml.in.h:130
-msgid "Dvorak"
-msgstr "дворак"
-
-#: ../rules/base.xml.in.h:131
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "дворак, пољÑки наводници на таÑтеру „1/!“"
-
-#: ../rules/base.xml.in.h:132
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "дворак, пољÑки наводници на таÑтеру наводника"
-
-#: ../rules/base.xml.in.h:133
-msgid "Eliminate dead keys"
-msgstr "Уклони акценте"
-
-#: ../rules/base.xml.in.h:134
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:135
-msgid "Epo"
-msgstr "еÑп"
-
-#: ../rules/base.xml.in.h:136
-msgid "Esp"
-msgstr "шпа"
-
-#: ../rules/base.xml.in.h:137
-msgid "Esperanto"
-msgstr "еÑперанто"
-
-#: ../rules/base.xml.in.h:138
-msgid "Est"
-msgstr "еÑÑ‚"
-
-#: ../rules/base.xml.in.h:139
-msgid "Estonia"
-msgstr "ЕÑтонија"
-
-#: ../rules/base.xml.in.h:140
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:141
-msgid "Ewe"
-msgstr "Еве"
-
-#: ../rules/base.xml.in.h:142
-msgid "Extended"
-msgstr "Проширено"
-
-#: ../rules/base.xml.in.h:143
-msgid "Extended Backslash"
-msgstr "Проширено уз обрнуту коÑу црту"
-
-#: ../rules/base.xml.in.h:144
-msgid "F-letter (F) variant"
-msgstr "Варијанта Ñа F-Ñловом (F)"
-
-#: ../rules/base.xml.in.h:145
-msgid "Fao"
-msgstr "фар"
-
-#: ../rules/base.xml.in.h:146
-msgid "Faroe Islands"
-msgstr "ФарÑка оÑтрва"
-
-#: ../rules/base.xml.in.h:147
-msgid "Fin"
-msgstr "фин"
-
-#: ../rules/base.xml.in.h:148
-msgid "Finland"
-msgstr "ФинÑка"
-
-#: ../rules/base.xml.in.h:149
-msgid "Fra"
-msgstr "фра"
-
-#: ../rules/base.xml.in.h:150
-msgid "France"
-msgstr "ФранцуÑка"
-
-#: ../rules/base.xml.in.h:151
-msgid "French"
-msgstr "француÑки"
-
-#: ../rules/base.xml.in.h:152
-msgid "French (legacy)"
-msgstr "француÑки (клаÑични)"
-
-#: ../rules/base.xml.in.h:153
-msgid "French Dvorak"
-msgstr "француÑки дворак"
-
-#: ../rules/base.xml.in.h:154
-msgid "French, Sun dead keys"
-msgstr "француÑки, Sun-ови акценти"
-
-#: ../rules/base.xml.in.h:155
-msgid "French, eliminate dead keys"
-msgstr "ФранцуÑки, без акцената"
-
-#: ../rules/base.xml.in.h:156
-msgid "Fula"
-msgstr "Фула"
-
-#: ../rules/base.xml.in.h:157
-msgid "GBr"
-msgstr "вбр"
-
-#: ../rules/base.xml.in.h:158
-msgid "Ga"
-msgstr "Га"
-
-#: ../rules/base.xml.in.h:159
-msgid "Generic 101-key PC"
-msgstr "Обична Ñа 101 таÑтером"
-
-#: ../rules/base.xml.in.h:160
-msgid "Generic 102-key (Intl) PC"
-msgstr "Обична Ñа 102 таÑтера (међунар.)"
-
-#: ../rules/base.xml.in.h:161
-msgid "Generic 104-key PC"
-msgstr "Обична Ñа 104 таÑтера"
-
-#: ../rules/base.xml.in.h:162
-msgid "Generic 105-key (Intl) PC"
-msgstr "Обична Ñа 105 таÑтера (међунар.)"
-
-#: ../rules/base.xml.in.h:163
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:164
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius ММ таÑтатура KWD-910"
-
-#: ../rules/base.xml.in.h:165
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:166
-msgid "Geo"
-msgstr "гру"
-
-#: ../rules/base.xml.in.h:167
-msgid "Georgia"
-msgstr "Грузија"
-
-#: ../rules/base.xml.in.h:168
-msgid "German, Sun dead keys"
-msgstr "немачки, Sun-ови акценти"
-
-#: ../rules/base.xml.in.h:169
-msgid "German, eliminate dead keys"
-msgstr "немачки, без акцената"
-
-#: ../rules/base.xml.in.h:170
-msgid "Germany"
-msgstr "Ðемачка"
-
-#: ../rules/base.xml.in.h:171
-msgid "Gha"
-msgstr "га"
-
-#: ../rules/base.xml.in.h:172
-msgid "Ghana"
-msgstr "Гана"
-
-#: ../rules/base.xml.in.h:173
-msgid "Gre"
-msgstr "грк"
-
-#: ../rules/base.xml.in.h:174
-msgid "Greece"
-msgstr "Грчка"
-
-#: ../rules/base.xml.in.h:175
-msgid "Group Shift/Lock behavior"
-msgstr "Понашање измене/избора групе"
-
-#: ../rules/base.xml.in.h:176
-msgid "Gujarati"
-msgstr "гујарати"
-
-#: ../rules/base.xml.in.h:177
-msgid "Gurmukhi"
-msgstr "гурмуки"
-
-#: ../rules/base.xml.in.h:178
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:179
-msgid "Hausa"
-msgstr "ХауÑа"
-
-#: ../rules/base.xml.in.h:180
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:181
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:182
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:183
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:184
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:185
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:186
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:187
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:188
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 мултимедијална таÑтатура"
-
-#: ../rules/base.xml.in.h:189
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:190
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:191
-msgid "Hrv"
-msgstr "хрв"
-
-#: ../rules/base.xml.in.h:192
-msgid "Hun"
-msgstr "мађ"
-
-#: ../rules/base.xml.in.h:193
-msgid "Hungary"
-msgstr "МађарÑка"
-
-#: ../rules/base.xml.in.h:194
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper је мапиран на Win таÑтере."
-
-#: ../rules/base.xml.in.h:195
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:196
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:197
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (друга могућноÑÑ‚)"
-
-#: ../rules/base.xml.in.h:198
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:199
-msgid "ISO Alternate"
-msgstr "Додатни ИСО"
-
-#: ../rules/base.xml.in.h:200
-msgid "Iceland"
-msgstr "ИÑланд"
-
-#: ../rules/base.xml.in.h:201
-msgid "Ind"
-msgstr "инд"
-
-#: ../rules/base.xml.in.h:202
-msgid "India"
-msgstr "Индија"
-
-#: ../rules/base.xml.in.h:203
-msgid "International (with dead keys)"
-msgstr "Међународна (Ñа акцентима)"
-
-#: ../rules/base.xml.in.h:204
-msgid "Inuktitut"
-msgstr "инуктитут"
-
-#: ../rules/base.xml.in.h:205
-msgid "Iran"
-msgstr "Иран"
-
-#: ../rules/base.xml.in.h:206
-msgid "Ireland"
-msgstr "ИрÑка"
-
-#: ../rules/base.xml.in.h:207
-msgid "Irl"
-msgstr "ирÑ"
-
-#: ../rules/base.xml.in.h:208
-msgid "Irn"
-msgstr "ирн"
-
-#: ../rules/base.xml.in.h:209
-msgid "Isl"
-msgstr "иÑл"
-
-#: ../rules/base.xml.in.h:210
-msgid "Isr"
-msgstr "изр"
-
-#: ../rules/base.xml.in.h:211
-msgid "Israel"
-msgstr "Израел"
-
-#: ../rules/base.xml.in.h:212
-msgid "Ita"
-msgstr "ита"
-
-#: ../rules/base.xml.in.h:213
-msgid "Italy"
-msgstr "Италија"
-
-#: ../rules/base.xml.in.h:214
-msgid "Japan"
-msgstr "Јапан"
-
-#: ../rules/base.xml.in.h:215
-msgid "Japanese 106-key"
-msgstr "јапанÑки Ñа 106 таÑтера"
-
-#: ../rules/base.xml.in.h:216
-msgid "Jpn"
-msgstr "јпн"
-
-#: ../rules/base.xml.in.h:217
-msgid "Kannada"
-msgstr "канада (јужна индија)"
-
-#: ../rules/base.xml.in.h:218
-msgid "Kaz"
-msgstr "каз"
-
-#: ../rules/base.xml.in.h:219
-msgid "Kazakh with Russian"
-msgstr "казахÑтанÑки Ñа руÑким"
-
-#: ../rules/base.xml.in.h:220
-msgid "Kazakhstan"
-msgstr "КазахÑтан"
-
-#: ../rules/base.xml.in.h:221
-msgid "Keypad"
-msgstr "Ðумеричка таÑтатура"
-
-#: ../rules/base.xml.in.h:222
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:223
-msgid "Khm"
-msgstr "кмб"
-
-#: ../rules/base.xml.in.h:224
-msgid "Kyr"
-msgstr "кир"
-
-#: ../rules/base.xml.in.h:225
-msgid "Kyrgyzstan"
-msgstr "КиргиÑтан"
-
-#: ../rules/base.xml.in.h:226
-msgid "LAm"
-msgstr "ЈÐм"
-
-#: ../rules/base.xml.in.h:227
-msgid "Lao"
-msgstr "лао"
-
-#: ../rules/base.xml.in.h:228
-msgid "Laos"
-msgstr "ЛаоÑ"
-
-#: ../rules/base.xml.in.h:229
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "ТаÑтатуре преноÑних рачунара из Compaq-а (нпр. Armada)"
-
-#: ../rules/base.xml.in.h:230
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "ТаÑтатуре преноÑних рачунара из Compaq-а (нпр. Presario)"
-
-#: ../rules/base.xml.in.h:231
-msgid "Laptop/notebook Dell Inspiron 6xxx/8xxx"
-msgstr "ТаÑтатуре преноÑних рачунара Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:232
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "ПреноÑне eMachines m68xx"
-
-#: ../rules/base.xml.in.h:233
-msgid "Latin"
-msgstr "латинични"
-
-#: ../rules/base.xml.in.h:234
-msgid "Latin American"
-msgstr "јужноамерички"
-
-#: ../rules/base.xml.in.h:235
-msgid "Latin Unicode"
-msgstr "латинични Уникод"
-
-#: ../rules/base.xml.in.h:236
-msgid "Latin Unicode qwerty"
-msgstr "латинични Уникод qwerty"
-
-#: ../rules/base.xml.in.h:237
-msgid "Latin qwerty"
-msgstr "латинични qwerty"
-
-#: ../rules/base.xml.in.h:238
-msgid "Latin with guillemots"
-msgstr "латинични Ñа гиљемотима"
-
-#: ../rules/base.xml.in.h:239
-msgid "Latvia"
-msgstr "Летонија"
-
-#: ../rules/base.xml.in.h:240
-msgid "Left Alt key changes group."
-msgstr "Леви Alt таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:241
-msgid "Left Alt key switches group while pressed."
-msgstr "Леви Alt таÑтер мења групу док је притиÑнут."
-
-#: ../rules/base.xml.in.h:242
-msgid "Left Ctrl key changes group."
-msgstr "Леви Ctrl таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:243
-msgid "Left Shift key changes group."
-msgstr "Леви Shift таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:244
-msgid "Left Win-key changes group."
-msgstr "Леви Windows таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:245
-msgid "Left Win-key switches group while pressed."
-msgstr "Леви Windows таÑтер мења групу док је притиÑнут."
-
-#: ../rules/base.xml.in.h:246
-msgid "Left handed Dvorak"
-msgstr "Леворучни Дворак"
-
-#: ../rules/base.xml.in.h:247
-msgid "Lithuania"
-msgstr "Литванија"
-
-#: ../rules/base.xml.in.h:248
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access таÑтатура"
-
-#: ../rules/base.xml.in.h:249
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:250
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:251
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:252
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: ../rules/base.xml.in.h:253
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (додатна могућноÑÑ‚)"
-
-#: ../rules/base.xml.in.h:254
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (додатна могућноÑÑ‚ 2)"
-
-#: ../rules/base.xml.in.h:255
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:256
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:257
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "Logitech Deluxe Access таÑтатура"
-
-#: ../rules/base.xml.in.h:258
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:259
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Интернет навигатор таÑтатура"
-
-#: ../rules/base.xml.in.h:260
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X таÑтатура"
-
-#: ../rules/base.xml.in.h:261
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:262
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless таÑтатура (модел Y-RB6)"
-
-#: ../rules/base.xml.in.h:263
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Logitech iTouch таÑтатура Интернет навигатор"
-
-#: ../rules/base.xml.in.h:264
-msgid "Ltu"
-msgstr "лит"
-
-#: ../rules/base.xml.in.h:265
-msgid "Lva"
-msgstr "лет"
-
-#: ../rules/base.xml.in.h:266
-msgid "Macedonia"
-msgstr "Македонија"
-
-#: ../rules/base.xml.in.h:267
-msgid "Macintosh"
-msgstr "Мекинтош"
-
-#: ../rules/base.xml.in.h:268
-msgid "Macintosh Old"
-msgstr "Стари Мекинтош"
-
-#: ../rules/base.xml.in.h:269
-msgid "Make CapsLock an additional Ctrl."
-msgstr "Учини Caps Lock додатним Ctrl таÑтером."
-
-#: ../rules/base.xml.in.h:270
-msgid "Mal"
-msgstr "мал"
-
-#: ../rules/base.xml.in.h:271
-msgid "Malayalam"
-msgstr "малајамÑки"
-
-#: ../rules/base.xml.in.h:272
-msgid "Maldives"
-msgstr "Малдиви"
-
-#: ../rules/base.xml.in.h:273
-msgid "Malta"
-msgstr "Малта"
-
-#: ../rules/base.xml.in.h:274
-msgid "Mao"
-msgstr "мао"
-
-#: ../rules/base.xml.in.h:275
-msgid "Maori"
-msgstr "Маори"
-
-#: ../rules/base.xml.in.h:276
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:277
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access таÑтатура"
-
-#: ../rules/base.xml.in.h:278
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:279
-msgid "Menu is Compose."
-msgstr "Menu је комбинујући таÑтер."
-
-#: ../rules/base.xml.in.h:280
-msgid "Menu key changes group."
-msgstr "Menu таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:281
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta је мапиран на Windows таÑтере."
-
-#: ../rules/base.xml.in.h:282
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta је мапиран на леви Windows таÑтер."
-
-#: ../rules/base.xml.in.h:283
-msgid "Microsoft Internet Keyboard"
-msgstr "МикроÑофтова Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:284
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "МикроÑофтова Интернет Про таÑтатура, шведÑки"
-
-#: ../rules/base.xml.in.h:285
-msgid "Microsoft Natural"
-msgstr "МикроÑофт Ðатурал"
-
-#: ../rules/base.xml.in.h:286
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "МикроÑофт Ðатурал таÑтатура Про / МикроÑофт Интернет таÑтатура Про "
-
-#: ../rules/base.xml.in.h:287
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "МикроÑофт Ðатурал таÑтатура Про ОЕМ"
-
-#: ../rules/base.xml.in.h:288
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr ""
-"МикроÑофтова Ðатурал таÑтатура Про УСБ / МикроÑофт Интернет таÑтатура Про "
-
-#: ../rules/base.xml.in.h:289
-msgid "Microsoft Office Keyboard"
-msgstr "МикроÑофтова канцеларијÑка таÑтатура"
-
-#: ../rules/base.xml.in.h:290
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "МикроÑофтова бежична мултимедијална таÑтатура 1.0Ð"
-
-#: ../rules/base.xml.in.h:291
-msgid "Miscellaneous compatibility options"
-msgstr "Разне могућноÑти за ÑаглаÑноÑÑ‚"
-
-#: ../rules/base.xml.in.h:292
-msgid "Mkd"
-msgstr "мак"
-
-#: ../rules/base.xml.in.h:293
-msgid "Mlt"
-msgstr "мал"
-
-#: ../rules/base.xml.in.h:294
-msgid "Mmr"
-msgstr "ммр"
-
-#: ../rules/base.xml.in.h:295
-msgid "Mng"
-msgstr "мнг"
-
-#: ../rules/base.xml.in.h:296
-msgid "Mongolia"
-msgstr "Монголија"
-
-#: ../rules/base.xml.in.h:297
-msgid "Multilingual"
-msgstr "Вишејезична"
-
-#: ../rules/base.xml.in.h:298
-msgid "Multilingual, first part"
-msgstr "Вишејезична, први део"
-
-#: ../rules/base.xml.in.h:299
-msgid "Multilingual, second part"
-msgstr "Вишејезична, други део"
-
-#: ../rules/base.xml.in.h:300
-msgid "Myanmar"
-msgstr "Мијанмар"
-
-#: ../rules/base.xml.in.h:301
-msgid "Netherlands"
-msgstr "Холандија"
-
-#: ../rules/base.xml.in.h:302
-msgid "Nld"
-msgstr "хол"
-
-#: ../rules/base.xml.in.h:303
-msgid "Nor"
-msgstr "нор"
-
-#: ../rules/base.xml.in.h:304
-msgid "Northern Saami"
-msgstr "ÑеверноÑаамÑки"
-
-#: ../rules/base.xml.in.h:305
-msgid "Northern Saami, eliminate dead keys"
-msgstr "ÑеверноÑаамÑки, без акцената"
-
-#: ../rules/base.xml.in.h:306
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:307
-msgid "Norway"
-msgstr "Ðорвешка"
-
-#: ../rules/base.xml.in.h:308
-msgid "NumLock LED shows alternative group."
-msgstr "NumLock лампица приказује измене група."
-
-#: ../rules/base.xml.in.h:309
-msgid "Ogham"
-msgstr "огам"
-
-#: ../rules/base.xml.in.h:310
-msgid "Ogham IS434"
-msgstr "огам IS434"
-
-#: ../rules/base.xml.in.h:311
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 ММ/Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:312
-msgid "Oriya"
-msgstr "орија"
-
-#: ../rules/base.xml.in.h:313
-msgid "PC-98xx Series"
-msgstr "PC-98xx Ñерија"
-
-#: ../rules/base.xml.in.h:314
-msgid "Pak"
-msgstr "пак"
-
-#: ../rules/base.xml.in.h:315
-msgid "Pakistan"
-msgstr "ПакиÑтан"
-
-#: ../rules/base.xml.in.h:316
-msgid "Pashto"
-msgstr "пашто"
-
-#: ../rules/base.xml.in.h:317
-msgid "Pattachote"
-msgstr "Паташоте"
-
-#: ../rules/base.xml.in.h:318
-msgid "Phonetic"
-msgstr "фонетÑки"
-
-#: ../rules/base.xml.in.h:319
-msgid "Pol"
-msgstr "пољ"
-
-#: ../rules/base.xml.in.h:320
-msgid "Poland"
-msgstr "ПољÑка"
-
-# не ваља, можда вишезвучни?
-#: ../rules/base.xml.in.h:321
-msgid "Polytonic"
-msgstr "вишезвучни"
-
-#: ../rules/base.xml.in.h:322
-msgid "Portugal"
-msgstr "Португалија"
-
-#: ../rules/base.xml.in.h:323
-msgid "Power G5"
-msgstr "Power G5"
-
-#: ../rules/base.xml.in.h:324
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: ../rules/base.xml.in.h:325
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "ПритиÑкање левог Alt таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:326
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "ПритиÑкање левог Windows таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:327
-msgid "Press Menu key to choose 3rd level."
-msgstr "ПритиÑкање Menu таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:328
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "ПритиÑкање деÑног Alt таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:329
-msgid "Press Right Ctrl to choose 3rd level."
-msgstr "ПритиÑкање деÑног Ctrl таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:330
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "ПритиÑкање деÑног Windows таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:331
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "ПритиÑкање било ког Alt таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:332
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "ПритиÑкање било ког Windows таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:333
-msgid "Pro"
-msgstr "про"
-
-#: ../rules/base.xml.in.h:334
-msgid "Pro Keypad"
-msgstr "Про таÑтатура"
-
-#: ../rules/base.xml.in.h:335
-msgid "Probhat"
-msgstr "пробат"
-
-#: ../rules/base.xml.in.h:336
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:337
-msgid "Prt"
-msgstr "прт"
-
-#: ../rules/base.xml.in.h:338
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:339
-msgid "R-Alt switches group while pressed."
-msgstr "ДеÑни Alt мења групу док је притиÑнут."
-
-#: ../rules/base.xml.in.h:340
-msgid "Right Alt is Compose."
-msgstr "ДеÑни Alt је комбинујући."
-
-#: ../rules/base.xml.in.h:341
-msgid "Right Alt key changes group."
-msgstr "ДеÑни Alt је мења групу."
-
-#: ../rules/base.xml.in.h:342
-msgid "Right Ctrl is Compose."
-msgstr "ДеÑни Ctrl је комбинујући."
-
-#: ../rules/base.xml.in.h:343
-msgid "Right Ctrl key changes group."
-msgstr "ДеÑни Ctrl мења групу."
-
-#: ../rules/base.xml.in.h:344
-msgid "Right Ctrl key switches group while pressed."
-msgstr "ДеÑни Ctrl таÑтер мења групу док је притиÑнут."
-
-#: ../rules/base.xml.in.h:345
-msgid "Right Ctrl key works as Right Alt."
-msgstr "ДеÑни Ctrl таÑтер Ñе понаша као деÑни Alt."
-
-#: ../rules/base.xml.in.h:346
-msgid "Right Shift key changes group."
-msgstr "ДеÑни Shift мења групу."
-
-#: ../rules/base.xml.in.h:347
-msgid "Right Win-key changes group."
-msgstr "ДеÑни Windows таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:348
-msgid "Right Win-key is Compose."
-msgstr "ДеÑни Windows таÑтер је комбинујући."
-
-#: ../rules/base.xml.in.h:349
-msgid "Right Win-key switches group while pressed."
-msgstr "ДеÑни Windows таÑтер мења групу док је притиÑнут."
-
-#: ../rules/base.xml.in.h:350
-msgid "Right handed Dvorak"
-msgstr "ДеÑноручни Дворак"
-
-#: ../rules/base.xml.in.h:351
-msgid "Romania"
-msgstr "Румунија"
-
-#: ../rules/base.xml.in.h:352
-msgid "Romanian keyboard with German letters"
-msgstr "румунÑка таÑтатура Ñа немачким Ñловима"
-
-#: ../rules/base.xml.in.h:353
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "румунÑка таÑтатура Ñа немачким Ñловима, без акцената"
-
-#: ../rules/base.xml.in.h:354
-msgid "Rou"
-msgstr "рум"
-
-#: ../rules/base.xml.in.h:355
-msgid "Rus"
-msgstr "руÑ"
-
-#: ../rules/base.xml.in.h:356
-msgid "Russia"
-msgstr "РуÑија"
-
-#: ../rules/base.xml.in.h:357
-msgid "Russian"
-msgstr "руÑки"
-
-#: ../rules/base.xml.in.h:358
-msgid "Russian phonetic"
-msgstr "руÑки фонетÑки"
-
-#: ../rules/base.xml.in.h:359
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "руÑки фонетÑки, без акцената"
-
-#: ../rules/base.xml.in.h:360
-msgid "Russian with Kazakh"
-msgstr "руÑки Ñа казахÑтанÑким"
-
-#: ../rules/base.xml.in.h:361
-msgid "SCG"
-msgstr "СЦГ"
-
-#: ../rules/base.xml.in.h:362
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST мултимедијална бежична таÑтатура"
-
-#: ../rules/base.xml.in.h:363
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:364
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:365
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:366
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:367
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN ергономÑка 2500"
-
-#: ../rules/base.xml.in.h:368
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:369
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:370
-msgid "ScrollLock LED shows alternative group."
-msgstr "ScrollLock лампица приказује измене група."
-
-#: ../rules/base.xml.in.h:371
-msgid "Serbia and Montenegro"
-msgstr "Србија и Црна Гора"
-
-#: ../rules/base.xml.in.h:372
-msgid "Shift with numpad keys works as in MS Windows."
-msgstr "Shift уз нумеричку таÑатуру ради као у MS Windows-у."
-
-#: ../rules/base.xml.in.h:373
-msgid "Shift+CapsLock changes group."
-msgstr "Shift+CapsLock таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:374
-msgid "Slovakia"
-msgstr "Словачка"
-
-#: ../rules/base.xml.in.h:375
-msgid "Slovenia"
-msgstr "Словенија"
-
-#: ../rules/base.xml.in.h:376
-msgid "South Africa"
-msgstr "Јужна Ðфрика"
-
-#: ../rules/base.xml.in.h:377
-msgid "Southern Uzbek"
-msgstr "Јужни УзбекиÑтан"
-
-#: ../rules/base.xml.in.h:378
-msgid "Spain"
-msgstr "Шпанија"
-
-#: ../rules/base.xml.in.h:379
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Ðарочити таÑтери (Ctrl+Alt+&lt;таÑтер&gt;) које обрађује Ñервер."
-
-#: ../rules/base.xml.in.h:380
-msgid "SrL"
-msgstr "шрл"
-
-#: ../rules/base.xml.in.h:381
-msgid "Sri Lanka"
-msgstr "Шри Ланка"
-
-#: ../rules/base.xml.in.h:382
-msgid "Standard"
-msgstr "Ñтандардна"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:384
-msgid "Standard RSTU"
-msgstr "Ñтандардна RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:386
-msgid "Standard RSTU on Russian layout"
-msgstr "Ñтандардна RSTU на руÑком раÑпореду"
-
-#: ../rules/base.xml.in.h:387
-msgid "Sun dead keys"
-msgstr "Sun-ови акценти"
-
-#: ../rules/base.xml.in.h:388
-msgid "Super Power Multimedia Keyboard"
-msgstr "Супер моћна мултимедијална таÑтатура"
-
-#: ../rules/base.xml.in.h:389
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super је мапиран на Windows таÑтере (подразумевано)."
-
-#: ../rules/base.xml.in.h:390
-msgid "Svk"
-msgstr "Ñлк"
-
-#: ../rules/base.xml.in.h:391
-msgid "Svn"
-msgstr "Ñло"
-
-#: ../rules/base.xml.in.h:392
-msgid "Swap Ctrl and CapsLock."
-msgstr "Размени Ctrl и Caps Lock."
-
-#: ../rules/base.xml.in.h:393
-msgid "Swe"
-msgstr "шве"
-
-#: ../rules/base.xml.in.h:394
-msgid "Sweden"
-msgstr "ШведÑка"
-
-#: ../rules/base.xml.in.h:395
-msgid "Switzerland"
-msgstr "ШвајцарÑка"
-
-#: ../rules/base.xml.in.h:396
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:397
-msgid "Syr"
-msgstr "Ñир"
-
-#: ../rules/base.xml.in.h:398
-msgid "Syria"
-msgstr "Сирија"
-
-#: ../rules/base.xml.in.h:399
-msgid "Syriac"
-msgstr "ÑиријÑки"
-
-#: ../rules/base.xml.in.h:400
-msgid "Syriac phonetic"
-msgstr "ÑиријÑки фонетÑки"
-
-#: ../rules/base.xml.in.h:401
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:402
-msgid "Tajikistan"
-msgstr "ТаџикиÑтан"
-
-#: ../rules/base.xml.in.h:403
-msgid "Tamil"
-msgstr "тамил"
-
-#: ../rules/base.xml.in.h:404
-msgid "Tamil TAB Typewriter"
-msgstr "тамил TAB куцаћа машина"
-
-#: ../rules/base.xml.in.h:405
-msgid "Tamil TSCII Typewriter"
-msgstr "тамил TSCII куцаћа машина"
-
-#: ../rules/base.xml.in.h:406
-msgid "Tamil Unicode"
-msgstr "тамил Уникод"
-
-#: ../rules/base.xml.in.h:407
-msgid "Tatar"
-msgstr "татарÑки"
-
-#: ../rules/base.xml.in.h:408
-msgid "Telugu"
-msgstr "телугу"
-
-#: ../rules/base.xml.in.h:409
-msgid "Tha"
-msgstr "тај"
-
-#: ../rules/base.xml.in.h:410
-msgid "Thailand"
-msgstr "Тајланд"
-
-#: ../rules/base.xml.in.h:411
-msgid "Third level choosers"
-msgstr "Избор трећег нивоа"
-
-#: ../rules/base.xml.in.h:412
-msgid "Tilde (~) variant"
-msgstr "Варијанта Ñа тилдом (~)"
-
-#: ../rules/base.xml.in.h:413
-msgid "Tjk"
-msgstr "тџк"
-
-#: ../rules/base.xml.in.h:414
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:415
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access таÑтатура"
-
-#: ../rules/base.xml.in.h:416
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust клаÑична бежична таÑтатура"
-
-#: ../rules/base.xml.in.h:417
-msgid "Tur"
-msgstr "тур"
-
-#: ../rules/base.xml.in.h:418
-msgid "Turkey"
-msgstr "ТурÑка"
-
-#: ../rules/base.xml.in.h:419
-msgid "Typewriter"
-msgstr "„Куцаћа машина“"
-
-#: ../rules/base.xml.in.h:420
-msgid "U.S. English"
-msgstr "амерички енглеÑки"
-
-#: ../rules/base.xml.in.h:421
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Ðмеричка таÑтатура Ñа боÑанÑким диграфима"
-
-#: ../rules/base.xml.in.h:422
-msgid "US keyboard with Bosnian letters"
-msgstr "Ðмеричка таÑтатура Ñа боÑанÑким Ñловима"
-
-#: ../rules/base.xml.in.h:423
-msgid "US keyboard with Croatian digraphs"
-msgstr "Ðмеричка таÑтатура Ñа хрватÑким диграфима"
-
-#: ../rules/base.xml.in.h:424
-msgid "US keyboard with Croatian letters"
-msgstr "Ðмеричка таÑтатура Ñа хрватÑким Ñловима"
-
-#: ../rules/base.xml.in.h:425
-msgid "US keyboard with Lithuanian letters"
-msgstr "Ðмеричка таÑтатура Ñа литванÑким Ñловима"
-
-#: ../rules/base.xml.in.h:426
-msgid "US keyboard with Maltian letters"
-msgstr "Ðмеричка таÑтатура Ñа малтешким Ñловима"
-
-#: ../rules/base.xml.in.h:427
-msgid "US keyboard with Slovenian digraphs"
-msgstr "Ðмеричка таÑтатура Ñа Ñловеначким диграфима"
-
-#: ../rules/base.xml.in.h:428
-msgid "US keyboard with Slovenian letters"
-msgstr "Ðмеричка таÑтатура Ñа Ñловеначким Ñловима"
-
-#: ../rules/base.xml.in.h:429
-msgid "USA"
-msgstr "СÐД"
-
-#: ../rules/base.xml.in.h:430
-msgid "Ukr"
-msgstr "укр"
-
-#: ../rules/base.xml.in.h:431
-msgid "Ukraine"
-msgstr "Украјина"
-
-#: ../rules/base.xml.in.h:432
-msgid "UnicodeExpert"
-msgstr "Стручна за Уникод"
-
-#: ../rules/base.xml.in.h:433
-msgid "United Kingdom"
-msgstr "Велика Британија"
-
-#: ../rules/base.xml.in.h:434
-msgid "Urdu"
-msgstr "Урду"
-
-#: ../rules/base.xml.in.h:435
-msgid "Use Bosnian digraphs"
-msgstr "КориÑти боÑанÑке диграфе"
-
-#: ../rules/base.xml.in.h:436
-msgid "Use Croatian digraphs"
-msgstr "КориÑти хрватÑке диграфе"
-
-#: ../rules/base.xml.in.h:437
-msgid "Use Slovenian digraphs"
-msgstr "КориÑти Ñловеначке диграфе"
-
-#: ../rules/base.xml.in.h:438
-msgid "Use guillemots for quotes"
-msgstr "КориÑти гиљемоте за наводнике"
-
-#: ../rules/base.xml.in.h:439
-msgid "Use keyboard LED to show alternative group."
-msgstr "КориÑти лампицу таÑтатуре за приказ измене група."
-
-#: ../rules/base.xml.in.h:440
-msgid "Uzb"
-msgstr "узб"
-
-#: ../rules/base.xml.in.h:441
-msgid "Uzbekistan"
-msgstr "УзбекиÑтан"
-
-#: ../rules/base.xml.in.h:442
-msgid "Vietnam"
-msgstr "Вијетнам"
-
-#: ../rules/base.xml.in.h:443
-msgid "Vnm"
-msgstr "вјт"
-
-#: ../rules/base.xml.in.h:444
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:445
-msgid "Winkeys"
-msgstr "Windows таÑтери"
-
-#: ../rules/base.xml.in.h:446
-msgid "With &lt;\\|&gt; key"
-msgstr "Уз таÑтер &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:447
-msgid "With guillemots"
-msgstr "Са гиљемотима"
-
-#: ../rules/base.xml.in.h:448
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:449
-msgid "Z and ZHE swapped"
-msgstr "Размењено З и Ж"
-
-#: ../rules/base.xml.in.h:450
-msgid "Zar"
-msgstr "Зар"
-
-#: ../rules/base.xml.in.h:451
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:452
-msgid "azerty/digits"
-msgstr "azerty/цифре"
-
-#: ../rules/base.xml.in.h:453
-msgid "digits"
-msgstr "цифре"
-
-#: ../rules/base.xml.in.h:454
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:455
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:456
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, проширено Ñа обрнутом коÑом цртом"
-
-#: ../rules/base.xml.in.h:457
-msgid "qwerty/digits"
-msgstr "qwerty/цифре"
-
-#: ../rules/base.xml.in.h:458
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.xml.in.h:459
-msgid "si1452"
-msgstr "si1452"
-
-#~ msgid "Turkish"
-#~ msgstr "турÑки"
-
-#~ msgid "\"Standard\""
-#~ msgstr "„Стандардна“"
-
-# bug: Serbia and Montenegro
-#~ msgid "Serbia"
-#~ msgstr "Србија"
-
-#~ msgid "Srp"
-#~ msgstr "Ñрп"
-
-#~ msgid "Tamil INSCRIPT"
-#~ msgstr "тамил инÑкрипт"
-
-#~ msgid "US keyboard with Romanian letters"
-#~ msgstr "Ðмеричка таÑтатура Ñа румунÑким Ñловима"
-
-#~ msgid "A Tamil typewrite-style keymap; TAB encoding"
-#~ msgstr "Тамил раÑпоред налик куцаћој машини; TAB кодирање"
-
-#~ msgid "A Tamil typewrite-style keymap; TSCII encoding"
-#~ msgstr "Тамил раÑпоред налик куцаћој машини; TSCII кодирање"
-
-#~ msgid "A Tamil typewrite-style keymap; Unicode encoding"
-#~ msgstr "Тамил раÑпоред налик куцаћој машини; Уникод кодирање"
-
-#~ msgid "Arb"
-#~ msgstr "арп"
-
-#~ msgid "Basic"
-#~ msgstr "ОÑновно"
-
-#~ msgid "Ben"
-#~ msgstr "бнг"
-
-#~ msgid "Bosnian"
-#~ msgstr "бошњачки"
-
-#~ msgid "Burmese"
-#~ msgstr "бурмиÑки"
-
-#~ msgid "CloGaelach Laptop"
-#~ msgstr "CloGaelach за преноÑне рачунаре"
-
-#~ msgid "Czech (qwerty)"
-#~ msgstr "Чешки (qwerty)"
-
-#~ msgid "Danish"
-#~ msgstr "данÑки"
-
-#~ msgid "Dutch"
-#~ msgstr "холандÑки"
-
-#~ msgid "Dvo"
-#~ msgstr "дво"
-
-#~ msgid "Finnish"
-#~ msgstr "финÑки"
-
-#~ msgid "French Canadian"
-#~ msgstr "француÑки канадÑки"
-
-#~ msgid "Georgian (latin)"
-#~ msgstr "грузијÑки (латиница)"
-
-#~ msgid "Georgian (russian)"
-#~ msgstr "грузијÑки (руÑки)"
-
-#~ msgid "Grc"
-#~ msgstr "грк"
-
-#~ msgid "Guj"
-#~ msgstr "гуј"
-
-#~ msgid "Hin"
-#~ msgstr "инд"
-
-#~ msgid "Hindi"
-#~ msgstr "индијÑки"
-
-#~ msgid "Hungarian (qwerty)"
-#~ msgstr "МађарÑки (qwerty)"
-
-#~ msgid "INSCRIPT layout"
-#~ msgstr "INSCRIPT раÑпоред"
-
-#~ msgid "IS434 laptop"
-#~ msgstr "IS434 преноÑни"
-
-#~ msgid "Iku"
-#~ msgstr "ику"
-
-#~ msgid "Irish"
-#~ msgstr "ирÑки"
-
-#~ msgid "Italian"
-#~ msgstr "италијанÑки"
-
-#~ msgid "Lithuanian azerty standard"
-#~ msgstr "литванÑки azerty раÑпоред"
-
-#~ msgid "Lithuanian qwerty \"numeric\""
-#~ msgstr "литванÑки qwerty „бројевни“"
-
-#~ msgid "Maltese (US layout)"
-#~ msgstr "малтÑки (амерички раÑпоред)"
-
-#~ msgid "Northern Saami (Finland)"
-#~ msgstr "ÑеверноÑаамÑки (ФинÑка)"
-
-#~ msgid "Northern Saami (Sweden)"
-#~ msgstr "ÑеверноÑаамÑки (ШведÑка)"
-
-#~ msgid "Ogh"
-#~ msgstr "огм"
-
-#~ msgid "Ori"
-#~ msgstr "ори"
-
-#~ msgid "PC104"
-#~ msgstr "PC104"
-
-#~ msgid "Polish"
-#~ msgstr "пољÑки"
-
-#~ msgid "Polish (qwertz)"
-#~ msgstr "пољÑки (qwertz)"
-
-#~ msgid "Sapmi"
-#~ msgstr "Sapmi"
-
-#~ msgid "Scg"
-#~ msgstr "Ñрп"
-
-#~ msgid "Slovak (qwerty)"
-#~ msgstr "Ñловачки (qwerty)"
-
-#~ msgid "Sme"
-#~ msgstr "Ñме"
-
-#~ msgid "Sv"
-#~ msgstr "Ñв"
-
-#~ msgid "Swedish"
-#~ msgstr "шведÑки"
-
-#~ msgid "Swiss French"
-#~ msgstr "швајцарÑки француÑки"
-
-#~ msgid "Tel"
-#~ msgstr "тел"
-
-#~ msgid "Thai (Kedmanee)"
-#~ msgstr "тајландÑки (Кедмани)"
-
-#~ msgid "Tml"
-#~ msgstr "тмл"
-
-#~ msgid "Turkish (F)"
-#~ msgstr "турÑки (F)"
-
-#~ msgid "Turkish Alt-Q Layout"
-#~ msgstr "турÑки Alt-Q раÑпоред"
-
-#~ msgid "U.S. English w/ ISO9995-3"
-#~ msgstr "амерички енглеÑки Ñа ИСО9995-3"
-
-#~ msgid "U.S. English w/ dead keys"
-#~ msgstr "амерички енглеÑки Ñа акцентима"
-
-#~ msgid "US"
-#~ msgstr "СÐД"
-
-#~ msgid "Yug"
-#~ msgstr "Ñцг"
-
-#~ msgid "Yugoslavian"
-#~ msgstr "латинични ÑрпÑки"
-
-#~ msgid "abnt2"
-#~ msgstr "абнт2"
-
-#~ msgid "bksl"
-#~ msgstr "бкÑл"
-
-#~ msgid "laptop"
-#~ msgstr "преноÑни"
-
-#~ msgid "sefi"
-#~ msgstr "sefi"
-
-#~ msgid "uni/101/qwerty/comma"
-#~ msgstr "уни/101/qwerty/запета"
-
-#~ msgid "uni/101/qwerty/dot"
-#~ msgstr "уни/101/qwerty/тачка"
-
-#~ msgid "uni/101/qwertz/comma"
-#~ msgstr "уни/101/qwertz/запета"
-
-#~ msgid "uni/101/qwertz/dot"
-#~ msgstr "уни/101/qwertz/тачка"
-
-#~ msgid "uni/102/qwerty/comma"
-#~ msgstr "уни/102/qwerty/запета"
-
-#~ msgid "uni/102/qwerty/dot"
-#~ msgstr "уни/102/qwerty/тачка"
-
-#~ msgid "uni/102/qwertz/comma"
-#~ msgstr "уни/102/qwertz/запета"
-
-#~ msgid "uni/102/qwertz/dot"
-#~ msgstr "уни/102/qwertz/тачка"
+# Serbian translation of xfree_xkb_xml-4.4pre1
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+# Danilo Segan <dsegan@gmx.net>, 2003, 2004, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-03-02 19:07+0100\n"
+"PO-Revision-Date: 2006-03-02 19:14+0100\n"
+"Last-Translator: Danilo Segan <dsegan@gmx.net>\n"
+"Language-Team: Serbian <sr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/запета/акценти"
+
+#: ../rules/base.xml.in.h:3
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/запета/без акцената"
+
+#: ../rules/base.xml.in.h:4
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/тачка/акценти"
+
+#: ../rules/base.xml.in.h:5
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/тачка/без акцената"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/запета/акценти"
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/запета/без акцената"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/тачка/акценти"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/тачка/без акцената"
+
+#: ../rules/base.xml.in.h:10
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/запета/акценти"
+
+#: ../rules/base.xml.in.h:11
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/запета/без акцената"
+
+#: ../rules/base.xml.in.h:12
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/тачка/акценти"
+
+#: ../rules/base.xml.in.h:13
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/тачка/без акцената"
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/запета/акценти"
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/запета/без акцената"
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/тачка/акценти"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/тачка/без акцената"
+
+#: ../rules/base.xml.in.h:18
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:19
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:20
+msgid "ACPI Standard"
+msgstr "ACPI Ñтандард"
+
+#: ../rules/base.xml.in.h:21
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:22
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:23
+msgid "Add the EuroSign to the 2 key."
+msgstr "Додај знак за евро на таÑтер 2."
+
+#: ../rules/base.xml.in.h:24
+msgid "Add the EuroSign to the 5 key."
+msgstr "Додај знак за евро на таÑтер 5."
+
+#: ../rules/base.xml.in.h:25
+msgid "Add the EuroSign to the E key."
+msgstr "Додај знак за евро на таÑтер E."
+
+#: ../rules/base.xml.in.h:26
+msgid "Add the standard behavior to Menu key."
+msgstr "Додај обично понашање Menu таÑтеру."
+
+#: ../rules/base.xml.in.h:27
+msgid "Adding the EuroSign to certain keys"
+msgstr "Додавање знака за евро одређеним таÑтерима"
+
+#
+#: ../rules/base.xml.in.h:28
+msgid "Advance Scorpius KI"
+msgstr "Ðапредни Шкорпион КИ"
+
+#: ../rules/base.xml.in.h:29
+msgid "Afg"
+msgstr "афг"
+
+#: ../rules/base.xml.in.h:30
+msgid "Afghanistan"
+msgstr "ÐфганиÑтан"
+
+#: ../rules/base.xml.in.h:31
+msgid "Akan"
+msgstr "акан"
+
+#: ../rules/base.xml.in.h:32
+msgid "Alb"
+msgstr "алб"
+
+#: ../rules/base.xml.in.h:33
+msgid "Albania"
+msgstr "Ðлбанија"
+
+#: ../rules/base.xml.in.h:34
+msgid "Alt and Meta are on the Alt keys (default)."
+msgstr "Alt и Meta Ñу на Alt таÑтерима (подразумевано)."
+
+#: ../rules/base.xml.in.h:35
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "Alt је мапиран на деÑни Windows таÑтер, а Super на Menu."
+
+#: ../rules/base.xml.in.h:36
+msgid "Alt+Ctrl changes group."
+msgstr "Alt+Ctrl мења групу."
+
+#: ../rules/base.xml.in.h:37
+msgid "Alt+Shift changes group."
+msgstr "Alt+Shift мења групу."
+
+#: ../rules/base.xml.in.h:38
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:39
+msgid "Alt/Win key behavior"
+msgstr "Понашање Alt/Win таÑтера"
+
+# Ðаизменично?
+#: ../rules/base.xml.in.h:40
+msgid "Alternative"
+msgstr "ДопунÑка"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alternative international (former us_intl)"
+msgstr "ДопунÑка међународна (бивша us_intl)"
+
+#: ../rules/base.xml.in.h:42
+msgid "Alternative, Sun dead keys"
+msgstr "ДопунÑка, Sun-ови акценти"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alternative, eliminate dead keys"
+msgstr "ДопунÑка, без акцената"
+
+#: ../rules/base.xml.in.h:44
+msgid "And"
+msgstr "анд"
+
+#: ../rules/base.xml.in.h:45
+msgid "Andorra"
+msgstr "Ðндора"
+
+#: ../rules/base.xml.in.h:46
+msgid "Apostrophe (') variant"
+msgstr "Варијанта Ñа апоÑтрофом (')"
+
+#: ../rules/base.xml.in.h:47
+msgid "Ara"
+msgstr "ара"
+
+#: ../rules/base.xml.in.h:48
+msgid "Arabic"
+msgstr "арапÑки"
+
+#: ../rules/base.xml.in.h:49
+msgid "Arm"
+msgstr "јрм"
+
+#: ../rules/base.xml.in.h:50
+msgid "Armenia"
+msgstr "Јерменија"
+
+#: ../rules/base.xml.in.h:51
+msgid "Aze"
+msgstr "азб"
+
+#: ../rules/base.xml.in.h:52
+msgid "Azerbaijan"
+msgstr "Ðзербејџан"
+
+#: ../rules/base.xml.in.h:53
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 бежична Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:54
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:55
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF мултимедијална"
+
+#: ../rules/base.xml.in.h:56
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:57
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:58
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:59
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:60
+msgid "Ban"
+msgstr "бан"
+
+#: ../rules/base.xml.in.h:61
+msgid "Bangladesh"
+msgstr "Бангладеш"
+
+#: ../rules/base.xml.in.h:62
+msgid "Bel"
+msgstr "блг"
+
+#: ../rules/base.xml.in.h:63
+msgid "Belarus"
+msgstr "БелоруÑија"
+
+#: ../rules/base.xml.in.h:64
+msgid "Belgium"
+msgstr "Белгија"
+
+#: ../rules/base.xml.in.h:65
+msgid "Bengali"
+msgstr "бенгалÑки"
+
+#: ../rules/base.xml.in.h:66
+msgid "Bengali Probhat"
+msgstr "бенгалÑки пробат"
+
+#: ../rules/base.xml.in.h:67
+msgid "Bgr"
+msgstr "буг"
+
+#: ../rules/base.xml.in.h:68
+msgid "Bhu"
+msgstr "бут"
+
+#: ../rules/base.xml.in.h:69
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: ../rules/base.xml.in.h:70
+msgid "Bih"
+msgstr "бих"
+
+#: ../rules/base.xml.in.h:71
+msgid "Blr"
+msgstr "блр"
+
+#: ../rules/base.xml.in.h:72
+msgid "Bosnia and Herzegovina"
+msgstr "БоÑна и Херцеговина"
+
+#: ../rules/base.xml.in.h:73
+msgid "Both Alt keys together change group."
+msgstr "Оба Alt таÑтера мењају групу."
+
+#: ../rules/base.xml.in.h:74
+msgid "Both Ctrl keys together change group."
+msgstr "Оба Ctrl таÑтера мењају групу."
+
+#: ../rules/base.xml.in.h:75
+msgid "Both Shift keys together change group."
+msgstr "Оба Shift таÑтера мењају групу."
+
+#: ../rules/base.xml.in.h:76
+msgid "Both Win-keys switch group while pressed."
+msgstr "Оба Win-таÑтера мењају групу када Ñу притиÑнути."
+
+#: ../rules/base.xml.in.h:77
+msgid "Bra"
+msgstr "бра"
+
+#: ../rules/base.xml.in.h:78
+msgid "Brazil"
+msgstr "Бразил"
+
+#: ../rules/base.xml.in.h:79
+msgid "Brazilian ABNT2"
+msgstr "бразилÑка ABNT2"
+
+#: ../rules/base.xml.in.h:80
+msgid "Brother Internet Keyboard"
+msgstr "Brother Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:81
+msgid "Bulgaria"
+msgstr "БугарÑка"
+
+#: ../rules/base.xml.in.h:82
+msgid "Cambodia"
+msgstr "Камбоџа"
+
+#: ../rules/base.xml.in.h:83
+msgid "Can"
+msgstr "кан"
+
+#: ../rules/base.xml.in.h:84
+msgid "Canada"
+msgstr "Канада"
+
+#: ../rules/base.xml.in.h:85
+msgid "Caps Lock is Compose."
+msgstr "Caps Lock је комбинујући таÑтер."
+
+#: ../rules/base.xml.in.h:86
+msgid "CapsLock LED shows alternative group."
+msgstr "Лампица за Caps Lock показује измењивање групе."
+
+#: ../rules/base.xml.in.h:87
+msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
+msgstr "CapsLock Ñе понаша као трајни Shift. Shift укида Caps."
+
+#: ../rules/base.xml.in.h:88
+msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
+msgstr "CapsLock Ñе понаша као трајни Shift. Shift не укида Caps."
+
+#: ../rules/base.xml.in.h:89
+msgid "CapsLock just locks the Shift modifier."
+msgstr "CapsLock проÑто трајно укључује Shift."
+
+#: ../rules/base.xml.in.h:90
+msgid "CapsLock key behavior"
+msgstr "Понашање Caps Lock таÑтера"
+
+#: ../rules/base.xml.in.h:91
+msgid "CapsLock key changes group."
+msgstr "Caps Lock таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:92
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "CapsLock мења Shift Ñтање па делује на Ñве таÑтере."
+
+#: ../rules/base.xml.in.h:93
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "CapsLock мења обичну величину Ñлова."
+
+#: ../rules/base.xml.in.h:94
+msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
+msgstr "CapsLock кориÑти унутрашњу величину Ñлова. Shift укида Caps Lock."
+
+#: ../rules/base.xml.in.h:95
+msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
+msgstr "CapsLock кориÑти унутрашњу величину Ñлова. Shift не укида Caps Lock."
+
+#: ../rules/base.xml.in.h:96
+msgid "Catalan variant with middle-dot L"
+msgstr "каталонÑка варијанта Ñа L и Ñредњом тачком"
+
+#: ../rules/base.xml.in.h:97
+msgid "Che"
+msgstr "швц"
+
+#: ../rules/base.xml.in.h:98
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:99
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (друга могућноÑÑ‚)"
+
+#: ../rules/base.xml.in.h:100
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:101
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:102
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:103
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:104
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:105
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq таÑтатура за лак приÑтуп"
+
+#: ../rules/base.xml.in.h:106
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Интернет таÑтатура (13 таÑтера)"
+
+#: ../rules/base.xml.in.h:107
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Интернет таÑтатура (18 таÑтера)"
+
+#: ../rules/base.xml.in.h:108
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Интернет таÑтатура (7 таÑтера)"
+
+#: ../rules/base.xml.in.h:109
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq таÑтатура"
+
+#: ../rules/base.xml.in.h:110
+msgid "Compose key position"
+msgstr "Положај таÑтера Compose"
+
+#: ../rules/base.xml.in.h:111
+msgid "Croatia"
+msgstr "ХрватÑка"
+
+#: ../rules/base.xml.in.h:112
+msgid "Ctrl key at bottom left"
+msgstr "ТаÑтер Ctrl је у дну лево"
+
+#: ../rules/base.xml.in.h:113
+msgid "Ctrl key at left of 'A'"
+msgstr "ТаÑтер Ctrl је у лево од „Ð“"
+
+#: ../rules/base.xml.in.h:114
+msgid "Ctrl key position"
+msgstr "Положај таÑтера Ctrl"
+
+#: ../rules/base.xml.in.h:115
+msgid "Ctrl+Shift changes group."
+msgstr "Ctrl+Shift мења групу."
+
+#: ../rules/base.xml.in.h:116
+msgid "Cyrillic"
+msgstr "ћирилични"
+
+#: ../rules/base.xml.in.h:117
+msgid "Cze"
+msgstr "чеш"
+
+#: ../rules/base.xml.in.h:118
+msgid "Czechia"
+msgstr "Чешка"
+
+#: ../rules/base.xml.in.h:119
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:120
+msgid "Dead acute"
+msgstr "ÐкутÑки акценат"
+
+#: ../rules/base.xml.in.h:121
+msgid "Dead grave acute"
+msgstr "Ð“Ñ€Ð°Ð²Ð¸Ñ Ð°ÐºÑƒÑ‚Ñки акценат"
+
+#: ../rules/base.xml.in.h:122
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:123
+msgid "Dell 101-key PC"
+msgstr "Dell 101-таÑтер PC"
+
+#: ../rules/base.xml.in.h:124
+msgid "Dell USB Multimedia Keybard"
+msgstr "Dell USB мултимедијална таÑтатура"
+
+#: ../rules/base.xml.in.h:125
+msgid "Denmark"
+msgstr "ДанÑка"
+
+#: ../rules/base.xml.in.h:126
+msgid "Deu"
+msgstr "нем"
+
+#: ../rules/base.xml.in.h:127
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa бежична таÑтатура"
+
+#: ../rules/base.xml.in.h:128
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 Ñерија"
+
+#: ../rules/base.xml.in.h:129
+msgid "Dnk"
+msgstr "дан"
+
+#: ../rules/base.xml.in.h:130
+msgid "Dvorak"
+msgstr "дворак"
+
+#: ../rules/base.xml.in.h:131
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "дворак, пољÑки наводници на таÑтеру „1/!“"
+
+#: ../rules/base.xml.in.h:132
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "дворак, пољÑки наводници на таÑтеру наводника"
+
+#: ../rules/base.xml.in.h:133
+msgid "Eliminate dead keys"
+msgstr "Уклони акценте"
+
+#: ../rules/base.xml.in.h:134
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:135
+msgid "Epo"
+msgstr "еÑп"
+
+#: ../rules/base.xml.in.h:136
+msgid "Esp"
+msgstr "шпа"
+
+#: ../rules/base.xml.in.h:137
+msgid "Esperanto"
+msgstr "еÑперанто"
+
+#: ../rules/base.xml.in.h:138
+msgid "Est"
+msgstr "еÑÑ‚"
+
+#: ../rules/base.xml.in.h:139
+msgid "Estonia"
+msgstr "ЕÑтонија"
+
+#: ../rules/base.xml.in.h:140
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:141
+msgid "Ewe"
+msgstr "Еве"
+
+#: ../rules/base.xml.in.h:142
+msgid "Extended"
+msgstr "Проширено"
+
+#: ../rules/base.xml.in.h:143
+msgid "Extended Backslash"
+msgstr "Проширено уз обрнуту коÑу црту"
+
+#: ../rules/base.xml.in.h:144
+msgid "F-letter (F) variant"
+msgstr "Варијанта Ñа F-Ñловом (F)"
+
+#: ../rules/base.xml.in.h:145
+msgid "Fao"
+msgstr "фар"
+
+#: ../rules/base.xml.in.h:146
+msgid "Faroe Islands"
+msgstr "ФарÑка оÑтрва"
+
+#: ../rules/base.xml.in.h:147
+msgid "Fin"
+msgstr "фин"
+
+#: ../rules/base.xml.in.h:148
+msgid "Finland"
+msgstr "ФинÑка"
+
+#: ../rules/base.xml.in.h:149
+msgid "Fra"
+msgstr "фра"
+
+#: ../rules/base.xml.in.h:150
+msgid "France"
+msgstr "ФранцуÑка"
+
+#: ../rules/base.xml.in.h:151
+msgid "French"
+msgstr "француÑки"
+
+#: ../rules/base.xml.in.h:152
+msgid "French (legacy)"
+msgstr "француÑки (клаÑични)"
+
+#: ../rules/base.xml.in.h:153
+msgid "French Dvorak"
+msgstr "француÑки дворак"
+
+#: ../rules/base.xml.in.h:154
+msgid "French, Sun dead keys"
+msgstr "француÑки, Sun-ови акценти"
+
+#: ../rules/base.xml.in.h:155
+msgid "French, eliminate dead keys"
+msgstr "ФранцуÑки, без акцената"
+
+#: ../rules/base.xml.in.h:156
+msgid "Fula"
+msgstr "Фула"
+
+#: ../rules/base.xml.in.h:157
+msgid "GBr"
+msgstr "вбр"
+
+#: ../rules/base.xml.in.h:158
+msgid "Ga"
+msgstr "Га"
+
+#: ../rules/base.xml.in.h:159
+msgid "Generic 101-key PC"
+msgstr "Обична Ñа 101 таÑтером"
+
+#: ../rules/base.xml.in.h:160
+msgid "Generic 102-key (Intl) PC"
+msgstr "Обична Ñа 102 таÑтера (међунар.)"
+
+#: ../rules/base.xml.in.h:161
+msgid "Generic 104-key PC"
+msgstr "Обична Ñа 104 таÑтера"
+
+#: ../rules/base.xml.in.h:162
+msgid "Generic 105-key (Intl) PC"
+msgstr "Обична Ñа 105 таÑтера (међунар.)"
+
+#: ../rules/base.xml.in.h:163
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:164
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius ММ таÑтатура KWD-910"
+
+#: ../rules/base.xml.in.h:165
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:166
+msgid "Geo"
+msgstr "гру"
+
+#: ../rules/base.xml.in.h:167
+msgid "Georgia"
+msgstr "Грузија"
+
+#: ../rules/base.xml.in.h:168
+msgid "German, Sun dead keys"
+msgstr "немачки, Sun-ови акценти"
+
+#: ../rules/base.xml.in.h:169
+msgid "German, eliminate dead keys"
+msgstr "немачки, без акцената"
+
+#: ../rules/base.xml.in.h:170
+msgid "Germany"
+msgstr "Ðемачка"
+
+#: ../rules/base.xml.in.h:171
+msgid "Gha"
+msgstr "га"
+
+#: ../rules/base.xml.in.h:172
+msgid "Ghana"
+msgstr "Гана"
+
+#: ../rules/base.xml.in.h:173
+msgid "Gre"
+msgstr "грк"
+
+#: ../rules/base.xml.in.h:174
+msgid "Greece"
+msgstr "Грчка"
+
+#: ../rules/base.xml.in.h:175
+msgid "Group Shift/Lock behavior"
+msgstr "Понашање измене/избора групе"
+
+#: ../rules/base.xml.in.h:176
+msgid "Gujarati"
+msgstr "гујарати"
+
+#: ../rules/base.xml.in.h:177
+msgid "Gurmukhi"
+msgstr "гурмуки"
+
+#: ../rules/base.xml.in.h:178
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:179
+msgid "Hausa"
+msgstr "ХауÑа"
+
+#: ../rules/base.xml.in.h:180
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:181
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:182
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:183
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:184
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:185
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:186
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:187
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:188
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 мултимедијална таÑтатура"
+
+#: ../rules/base.xml.in.h:189
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:190
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:191
+msgid "Hrv"
+msgstr "хрв"
+
+#: ../rules/base.xml.in.h:192
+msgid "Hun"
+msgstr "мађ"
+
+#: ../rules/base.xml.in.h:193
+msgid "Hungary"
+msgstr "МађарÑка"
+
+#: ../rules/base.xml.in.h:194
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper је мапиран на Win таÑтере."
+
+#: ../rules/base.xml.in.h:195
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:196
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:197
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (друга могућноÑÑ‚)"
+
+#: ../rules/base.xml.in.h:198
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:199
+msgid "ISO Alternate"
+msgstr "Додатни ИСО"
+
+#: ../rules/base.xml.in.h:200
+msgid "Iceland"
+msgstr "ИÑланд"
+
+#: ../rules/base.xml.in.h:201
+msgid "Ind"
+msgstr "инд"
+
+#: ../rules/base.xml.in.h:202
+msgid "India"
+msgstr "Индија"
+
+#: ../rules/base.xml.in.h:203
+msgid "International (with dead keys)"
+msgstr "Међународна (Ñа акцентима)"
+
+#: ../rules/base.xml.in.h:204
+msgid "Inuktitut"
+msgstr "инуктитут"
+
+#: ../rules/base.xml.in.h:205
+msgid "Iran"
+msgstr "Иран"
+
+#: ../rules/base.xml.in.h:206
+msgid "Ireland"
+msgstr "ИрÑка"
+
+#: ../rules/base.xml.in.h:207
+msgid "Irl"
+msgstr "ирÑ"
+
+#: ../rules/base.xml.in.h:208
+msgid "Irn"
+msgstr "ирн"
+
+#: ../rules/base.xml.in.h:209
+msgid "Isl"
+msgstr "иÑл"
+
+#: ../rules/base.xml.in.h:210
+msgid "Isr"
+msgstr "изр"
+
+#: ../rules/base.xml.in.h:211
+msgid "Israel"
+msgstr "Израел"
+
+#: ../rules/base.xml.in.h:212
+msgid "Ita"
+msgstr "ита"
+
+#: ../rules/base.xml.in.h:213
+msgid "Italy"
+msgstr "Италија"
+
+#: ../rules/base.xml.in.h:214
+msgid "Japan"
+msgstr "Јапан"
+
+#: ../rules/base.xml.in.h:215
+msgid "Japanese 106-key"
+msgstr "јапанÑки Ñа 106 таÑтера"
+
+#: ../rules/base.xml.in.h:216
+msgid "Jpn"
+msgstr "јпн"
+
+#: ../rules/base.xml.in.h:217
+msgid "Kannada"
+msgstr "канада (јужна индија)"
+
+#: ../rules/base.xml.in.h:218
+msgid "Kaz"
+msgstr "каз"
+
+#: ../rules/base.xml.in.h:219
+msgid "Kazakh with Russian"
+msgstr "казахÑтанÑки Ñа руÑким"
+
+#: ../rules/base.xml.in.h:220
+msgid "Kazakhstan"
+msgstr "КазахÑтан"
+
+#: ../rules/base.xml.in.h:221
+msgid "Keypad"
+msgstr "Ðумеричка таÑтатура"
+
+#: ../rules/base.xml.in.h:222
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:223
+msgid "Khm"
+msgstr "кмб"
+
+#: ../rules/base.xml.in.h:224
+msgid "Kyr"
+msgstr "кир"
+
+#: ../rules/base.xml.in.h:225
+msgid "Kyrgyzstan"
+msgstr "КиргиÑтан"
+
+#: ../rules/base.xml.in.h:226
+msgid "LAm"
+msgstr "ЈÐм"
+
+#: ../rules/base.xml.in.h:227
+msgid "Lao"
+msgstr "лао"
+
+#: ../rules/base.xml.in.h:228
+msgid "Laos"
+msgstr "ЛаоÑ"
+
+#: ../rules/base.xml.in.h:229
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "ТаÑтатуре преноÑних рачунара из Compaq-а (нпр. Armada)"
+
+#: ../rules/base.xml.in.h:230
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "ТаÑтатуре преноÑних рачунара из Compaq-а (нпр. Presario)"
+
+#: ../rules/base.xml.in.h:231
+msgid "Laptop/notebook Dell Inspiron 6xxx/8xxx"
+msgstr "ТаÑтатуре преноÑних рачунара Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:232
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "ПреноÑне eMachines m68xx"
+
+#: ../rules/base.xml.in.h:233
+msgid "Latin"
+msgstr "латинични"
+
+#: ../rules/base.xml.in.h:234
+msgid "Latin American"
+msgstr "јужноамерички"
+
+#: ../rules/base.xml.in.h:235
+msgid "Latin Unicode"
+msgstr "латинични Уникод"
+
+#: ../rules/base.xml.in.h:236
+msgid "Latin Unicode qwerty"
+msgstr "латинични Уникод qwerty"
+
+#: ../rules/base.xml.in.h:237
+msgid "Latin qwerty"
+msgstr "латинични qwerty"
+
+#: ../rules/base.xml.in.h:238
+msgid "Latin with guillemots"
+msgstr "латинични Ñа гиљемотима"
+
+#: ../rules/base.xml.in.h:239
+msgid "Latvia"
+msgstr "Летонија"
+
+#: ../rules/base.xml.in.h:240
+msgid "Left Alt key changes group."
+msgstr "Леви Alt таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:241
+msgid "Left Alt key switches group while pressed."
+msgstr "Леви Alt таÑтер мења групу док је притиÑнут."
+
+#: ../rules/base.xml.in.h:242
+msgid "Left Ctrl key changes group."
+msgstr "Леви Ctrl таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:243
+msgid "Left Shift key changes group."
+msgstr "Леви Shift таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:244
+msgid "Left Win-key changes group."
+msgstr "Леви Windows таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:245
+msgid "Left Win-key switches group while pressed."
+msgstr "Леви Windows таÑтер мења групу док је притиÑнут."
+
+#: ../rules/base.xml.in.h:246
+msgid "Left handed Dvorak"
+msgstr "Леворучни Дворак"
+
+#: ../rules/base.xml.in.h:247
+msgid "Lithuania"
+msgstr "Литванија"
+
+#: ../rules/base.xml.in.h:248
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access таÑтатура"
+
+#: ../rules/base.xml.in.h:249
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:250
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:251
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:252
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: ../rules/base.xml.in.h:253
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (додатна могућноÑÑ‚)"
+
+#: ../rules/base.xml.in.h:254
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (додатна могућноÑÑ‚ 2)"
+
+#: ../rules/base.xml.in.h:255
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:256
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:257
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "Logitech Deluxe Access таÑтатура"
+
+#: ../rules/base.xml.in.h:258
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:259
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Интернет навигатор таÑтатура"
+
+#: ../rules/base.xml.in.h:260
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X таÑтатура"
+
+#: ../rules/base.xml.in.h:261
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:262
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless таÑтатура (модел Y-RB6)"
+
+#: ../rules/base.xml.in.h:263
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Logitech iTouch таÑтатура Интернет навигатор"
+
+#: ../rules/base.xml.in.h:264
+msgid "Ltu"
+msgstr "лит"
+
+#: ../rules/base.xml.in.h:265
+msgid "Lva"
+msgstr "лет"
+
+#: ../rules/base.xml.in.h:266
+msgid "Macedonia"
+msgstr "Македонија"
+
+#: ../rules/base.xml.in.h:267
+msgid "Macintosh"
+msgstr "Мекинтош"
+
+#: ../rules/base.xml.in.h:268
+msgid "Macintosh Old"
+msgstr "Стари Мекинтош"
+
+#: ../rules/base.xml.in.h:269
+msgid "Make CapsLock an additional Ctrl."
+msgstr "Учини Caps Lock додатним Ctrl таÑтером."
+
+#: ../rules/base.xml.in.h:270
+msgid "Mal"
+msgstr "мал"
+
+#: ../rules/base.xml.in.h:271
+msgid "Malayalam"
+msgstr "малајамÑки"
+
+#: ../rules/base.xml.in.h:272
+msgid "Maldives"
+msgstr "Малдиви"
+
+#: ../rules/base.xml.in.h:273
+msgid "Malta"
+msgstr "Малта"
+
+#: ../rules/base.xml.in.h:274
+msgid "Mao"
+msgstr "мао"
+
+#: ../rules/base.xml.in.h:275
+msgid "Maori"
+msgstr "Маори"
+
+#: ../rules/base.xml.in.h:276
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:277
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access таÑтатура"
+
+#: ../rules/base.xml.in.h:278
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:279
+msgid "Menu is Compose."
+msgstr "Menu је комбинујући таÑтер."
+
+#: ../rules/base.xml.in.h:280
+msgid "Menu key changes group."
+msgstr "Menu таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:281
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta је мапиран на Windows таÑтере."
+
+#: ../rules/base.xml.in.h:282
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta је мапиран на леви Windows таÑтер."
+
+#: ../rules/base.xml.in.h:283
+msgid "Microsoft Internet Keyboard"
+msgstr "МикроÑофтова Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:284
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "МикроÑофтова Интернет Про таÑтатура, шведÑки"
+
+#: ../rules/base.xml.in.h:285
+msgid "Microsoft Natural"
+msgstr "МикроÑофт Ðатурал"
+
+#: ../rules/base.xml.in.h:286
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "МикроÑофт Ðатурал таÑтатура Про / МикроÑофт Интернет таÑтатура Про "
+
+#: ../rules/base.xml.in.h:287
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "МикроÑофт Ðатурал таÑтатура Про ОЕМ"
+
+#: ../rules/base.xml.in.h:288
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr ""
+"МикроÑофтова Ðатурал таÑтатура Про УСБ / МикроÑофт Интернет таÑтатура Про "
+
+#: ../rules/base.xml.in.h:289
+msgid "Microsoft Office Keyboard"
+msgstr "МикроÑофтова канцеларијÑка таÑтатура"
+
+#: ../rules/base.xml.in.h:290
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "МикроÑофтова бежична мултимедијална таÑтатура 1.0Ð"
+
+#: ../rules/base.xml.in.h:291
+msgid "Miscellaneous compatibility options"
+msgstr "Разне могућноÑти за ÑаглаÑноÑÑ‚"
+
+#: ../rules/base.xml.in.h:292
+msgid "Mkd"
+msgstr "мак"
+
+#: ../rules/base.xml.in.h:293
+msgid "Mlt"
+msgstr "мал"
+
+#: ../rules/base.xml.in.h:294
+msgid "Mmr"
+msgstr "ммр"
+
+#: ../rules/base.xml.in.h:295
+msgid "Mng"
+msgstr "мнг"
+
+#: ../rules/base.xml.in.h:296
+msgid "Mongolia"
+msgstr "Монголија"
+
+#: ../rules/base.xml.in.h:297
+msgid "Multilingual"
+msgstr "Вишејезична"
+
+#: ../rules/base.xml.in.h:298
+msgid "Multilingual, first part"
+msgstr "Вишејезична, први део"
+
+#: ../rules/base.xml.in.h:299
+msgid "Multilingual, second part"
+msgstr "Вишејезична, други део"
+
+#: ../rules/base.xml.in.h:300
+msgid "Myanmar"
+msgstr "Мијанмар"
+
+#: ../rules/base.xml.in.h:301
+msgid "Netherlands"
+msgstr "Холандија"
+
+#: ../rules/base.xml.in.h:302
+msgid "Nld"
+msgstr "хол"
+
+#: ../rules/base.xml.in.h:303
+msgid "Nor"
+msgstr "нор"
+
+#: ../rules/base.xml.in.h:304
+msgid "Northern Saami"
+msgstr "ÑеверноÑаамÑки"
+
+#: ../rules/base.xml.in.h:305
+msgid "Northern Saami, eliminate dead keys"
+msgstr "ÑеверноÑаамÑки, без акцената"
+
+#: ../rules/base.xml.in.h:306
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:307
+msgid "Norway"
+msgstr "Ðорвешка"
+
+#: ../rules/base.xml.in.h:308
+msgid "NumLock LED shows alternative group."
+msgstr "NumLock лампица приказује измене група."
+
+#: ../rules/base.xml.in.h:309
+msgid "Ogham"
+msgstr "огам"
+
+#: ../rules/base.xml.in.h:310
+msgid "Ogham IS434"
+msgstr "огам IS434"
+
+#: ../rules/base.xml.in.h:311
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 ММ/Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:312
+msgid "Oriya"
+msgstr "орија"
+
+#: ../rules/base.xml.in.h:313
+msgid "PC-98xx Series"
+msgstr "PC-98xx Ñерија"
+
+#: ../rules/base.xml.in.h:314
+msgid "Pak"
+msgstr "пак"
+
+#: ../rules/base.xml.in.h:315
+msgid "Pakistan"
+msgstr "ПакиÑтан"
+
+#: ../rules/base.xml.in.h:316
+msgid "Pashto"
+msgstr "пашто"
+
+#: ../rules/base.xml.in.h:317
+msgid "Pattachote"
+msgstr "Паташоте"
+
+#: ../rules/base.xml.in.h:318
+msgid "Phonetic"
+msgstr "фонетÑки"
+
+#: ../rules/base.xml.in.h:319
+msgid "Pol"
+msgstr "пољ"
+
+#: ../rules/base.xml.in.h:320
+msgid "Poland"
+msgstr "ПољÑка"
+
+# не ваља, можда вишезвучни?
+#: ../rules/base.xml.in.h:321
+msgid "Polytonic"
+msgstr "вишезвучни"
+
+#: ../rules/base.xml.in.h:322
+msgid "Portugal"
+msgstr "Португалија"
+
+#: ../rules/base.xml.in.h:323
+msgid "Power G5"
+msgstr "Power G5"
+
+#: ../rules/base.xml.in.h:324
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: ../rules/base.xml.in.h:325
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "ПритиÑкање левог Alt таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:326
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "ПритиÑкање левог Windows таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:327
+msgid "Press Menu key to choose 3rd level."
+msgstr "ПритиÑкање Menu таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:328
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "ПритиÑкање деÑног Alt таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:329
+msgid "Press Right Ctrl to choose 3rd level."
+msgstr "ПритиÑкање деÑног Ctrl таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:330
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "ПритиÑкање деÑног Windows таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:331
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "ПритиÑкање било ког Alt таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:332
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "ПритиÑкање било ког Windows таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:333
+msgid "Pro"
+msgstr "про"
+
+#: ../rules/base.xml.in.h:334
+msgid "Pro Keypad"
+msgstr "Про таÑтатура"
+
+#: ../rules/base.xml.in.h:335
+msgid "Probhat"
+msgstr "пробат"
+
+#: ../rules/base.xml.in.h:336
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:337
+msgid "Prt"
+msgstr "прт"
+
+#: ../rules/base.xml.in.h:338
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:339
+msgid "R-Alt switches group while pressed."
+msgstr "ДеÑни Alt мења групу док је притиÑнут."
+
+#: ../rules/base.xml.in.h:340
+msgid "Right Alt is Compose."
+msgstr "ДеÑни Alt је комбинујући."
+
+#: ../rules/base.xml.in.h:341
+msgid "Right Alt key changes group."
+msgstr "ДеÑни Alt је мења групу."
+
+#: ../rules/base.xml.in.h:342
+msgid "Right Ctrl is Compose."
+msgstr "ДеÑни Ctrl је комбинујући."
+
+#: ../rules/base.xml.in.h:343
+msgid "Right Ctrl key changes group."
+msgstr "ДеÑни Ctrl мења групу."
+
+#: ../rules/base.xml.in.h:344
+msgid "Right Ctrl key switches group while pressed."
+msgstr "ДеÑни Ctrl таÑтер мења групу док је притиÑнут."
+
+#: ../rules/base.xml.in.h:345
+msgid "Right Ctrl key works as Right Alt."
+msgstr "ДеÑни Ctrl таÑтер Ñе понаша као деÑни Alt."
+
+#: ../rules/base.xml.in.h:346
+msgid "Right Shift key changes group."
+msgstr "ДеÑни Shift мења групу."
+
+#: ../rules/base.xml.in.h:347
+msgid "Right Win-key changes group."
+msgstr "ДеÑни Windows таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:348
+msgid "Right Win-key is Compose."
+msgstr "ДеÑни Windows таÑтер је комбинујући."
+
+#: ../rules/base.xml.in.h:349
+msgid "Right Win-key switches group while pressed."
+msgstr "ДеÑни Windows таÑтер мења групу док је притиÑнут."
+
+#: ../rules/base.xml.in.h:350
+msgid "Right handed Dvorak"
+msgstr "ДеÑноручни Дворак"
+
+#: ../rules/base.xml.in.h:351
+msgid "Romania"
+msgstr "Румунија"
+
+#: ../rules/base.xml.in.h:352
+msgid "Romanian keyboard with German letters"
+msgstr "румунÑка таÑтатура Ñа немачким Ñловима"
+
+#: ../rules/base.xml.in.h:353
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "румунÑка таÑтатура Ñа немачким Ñловима, без акцената"
+
+#: ../rules/base.xml.in.h:354
+msgid "Rou"
+msgstr "рум"
+
+#: ../rules/base.xml.in.h:355
+msgid "Rus"
+msgstr "руÑ"
+
+#: ../rules/base.xml.in.h:356
+msgid "Russia"
+msgstr "РуÑија"
+
+#: ../rules/base.xml.in.h:357
+msgid "Russian"
+msgstr "руÑки"
+
+#: ../rules/base.xml.in.h:358
+msgid "Russian phonetic"
+msgstr "руÑки фонетÑки"
+
+#: ../rules/base.xml.in.h:359
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "руÑки фонетÑки, без акцената"
+
+#: ../rules/base.xml.in.h:360
+msgid "Russian with Kazakh"
+msgstr "руÑки Ñа казахÑтанÑким"
+
+#: ../rules/base.xml.in.h:361
+msgid "SCG"
+msgstr "СЦГ"
+
+#: ../rules/base.xml.in.h:362
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST мултимедијална бежична таÑтатура"
+
+#: ../rules/base.xml.in.h:363
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:364
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:365
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:366
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:367
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN ергономÑка 2500"
+
+#: ../rules/base.xml.in.h:368
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:369
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:370
+msgid "ScrollLock LED shows alternative group."
+msgstr "ScrollLock лампица приказује измене група."
+
+#: ../rules/base.xml.in.h:371
+msgid "Serbia and Montenegro"
+msgstr "Србија и Црна Гора"
+
+#: ../rules/base.xml.in.h:372
+msgid "Shift with numpad keys works as in MS Windows."
+msgstr "Shift уз нумеричку таÑатуру ради као у MS Windows-у."
+
+#: ../rules/base.xml.in.h:373
+msgid "Shift+CapsLock changes group."
+msgstr "Shift+CapsLock таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:374
+msgid "Slovakia"
+msgstr "Словачка"
+
+#: ../rules/base.xml.in.h:375
+msgid "Slovenia"
+msgstr "Словенија"
+
+#: ../rules/base.xml.in.h:376
+msgid "South Africa"
+msgstr "Јужна Ðфрика"
+
+#: ../rules/base.xml.in.h:377
+msgid "Southern Uzbek"
+msgstr "Јужни УзбекиÑтан"
+
+#: ../rules/base.xml.in.h:378
+msgid "Spain"
+msgstr "Шпанија"
+
+#: ../rules/base.xml.in.h:379
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Ðарочити таÑтери (Ctrl+Alt+&lt;таÑтер&gt;) које обрађује Ñервер."
+
+#: ../rules/base.xml.in.h:380
+msgid "SrL"
+msgstr "шрл"
+
+#: ../rules/base.xml.in.h:381
+msgid "Sri Lanka"
+msgstr "Шри Ланка"
+
+#: ../rules/base.xml.in.h:382
+msgid "Standard"
+msgstr "Ñтандардна"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:384
+msgid "Standard RSTU"
+msgstr "Ñтандардна RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:386
+msgid "Standard RSTU on Russian layout"
+msgstr "Ñтандардна RSTU на руÑком раÑпореду"
+
+#: ../rules/base.xml.in.h:387
+msgid "Sun dead keys"
+msgstr "Sun-ови акценти"
+
+#: ../rules/base.xml.in.h:388
+msgid "Super Power Multimedia Keyboard"
+msgstr "Супер моћна мултимедијална таÑтатура"
+
+#: ../rules/base.xml.in.h:389
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super је мапиран на Windows таÑтере (подразумевано)."
+
+#: ../rules/base.xml.in.h:390
+msgid "Svk"
+msgstr "Ñлк"
+
+#: ../rules/base.xml.in.h:391
+msgid "Svn"
+msgstr "Ñло"
+
+#: ../rules/base.xml.in.h:392
+msgid "Swap Ctrl and CapsLock."
+msgstr "Размени Ctrl и Caps Lock."
+
+#: ../rules/base.xml.in.h:393
+msgid "Swe"
+msgstr "шве"
+
+#: ../rules/base.xml.in.h:394
+msgid "Sweden"
+msgstr "ШведÑка"
+
+#: ../rules/base.xml.in.h:395
+msgid "Switzerland"
+msgstr "ШвајцарÑка"
+
+#: ../rules/base.xml.in.h:396
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:397
+msgid "Syr"
+msgstr "Ñир"
+
+#: ../rules/base.xml.in.h:398
+msgid "Syria"
+msgstr "Сирија"
+
+#: ../rules/base.xml.in.h:399
+msgid "Syriac"
+msgstr "ÑиријÑки"
+
+#: ../rules/base.xml.in.h:400
+msgid "Syriac phonetic"
+msgstr "ÑиријÑки фонетÑки"
+
+#: ../rules/base.xml.in.h:401
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:402
+msgid "Tajikistan"
+msgstr "ТаџикиÑтан"
+
+#: ../rules/base.xml.in.h:403
+msgid "Tamil"
+msgstr "тамил"
+
+#: ../rules/base.xml.in.h:404
+msgid "Tamil TAB Typewriter"
+msgstr "тамил TAB куцаћа машина"
+
+#: ../rules/base.xml.in.h:405
+msgid "Tamil TSCII Typewriter"
+msgstr "тамил TSCII куцаћа машина"
+
+#: ../rules/base.xml.in.h:406
+msgid "Tamil Unicode"
+msgstr "тамил Уникод"
+
+#: ../rules/base.xml.in.h:407
+msgid "Tatar"
+msgstr "татарÑки"
+
+#: ../rules/base.xml.in.h:408
+msgid "Telugu"
+msgstr "телугу"
+
+#: ../rules/base.xml.in.h:409
+msgid "Tha"
+msgstr "тај"
+
+#: ../rules/base.xml.in.h:410
+msgid "Thailand"
+msgstr "Тајланд"
+
+#: ../rules/base.xml.in.h:411
+msgid "Third level choosers"
+msgstr "Избор трећег нивоа"
+
+#: ../rules/base.xml.in.h:412
+msgid "Tilde (~) variant"
+msgstr "Варијанта Ñа тилдом (~)"
+
+#: ../rules/base.xml.in.h:413
+msgid "Tjk"
+msgstr "тџк"
+
+#: ../rules/base.xml.in.h:414
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:415
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access таÑтатура"
+
+#: ../rules/base.xml.in.h:416
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust клаÑична бежична таÑтатура"
+
+#: ../rules/base.xml.in.h:417
+msgid "Tur"
+msgstr "тур"
+
+#: ../rules/base.xml.in.h:418
+msgid "Turkey"
+msgstr "ТурÑка"
+
+#: ../rules/base.xml.in.h:419
+msgid "Typewriter"
+msgstr "„Куцаћа машина“"
+
+#: ../rules/base.xml.in.h:420
+msgid "U.S. English"
+msgstr "амерички енглеÑки"
+
+#: ../rules/base.xml.in.h:421
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Ðмеричка таÑтатура Ñа боÑанÑким диграфима"
+
+#: ../rules/base.xml.in.h:422
+msgid "US keyboard with Bosnian letters"
+msgstr "Ðмеричка таÑтатура Ñа боÑанÑким Ñловима"
+
+#: ../rules/base.xml.in.h:423
+msgid "US keyboard with Croatian digraphs"
+msgstr "Ðмеричка таÑтатура Ñа хрватÑким диграфима"
+
+#: ../rules/base.xml.in.h:424
+msgid "US keyboard with Croatian letters"
+msgstr "Ðмеричка таÑтатура Ñа хрватÑким Ñловима"
+
+#: ../rules/base.xml.in.h:425
+msgid "US keyboard with Lithuanian letters"
+msgstr "Ðмеричка таÑтатура Ñа литванÑким Ñловима"
+
+#: ../rules/base.xml.in.h:426
+msgid "US keyboard with Maltian letters"
+msgstr "Ðмеричка таÑтатура Ñа малтешким Ñловима"
+
+#: ../rules/base.xml.in.h:427
+msgid "US keyboard with Slovenian digraphs"
+msgstr "Ðмеричка таÑтатура Ñа Ñловеначким диграфима"
+
+#: ../rules/base.xml.in.h:428
+msgid "US keyboard with Slovenian letters"
+msgstr "Ðмеричка таÑтатура Ñа Ñловеначким Ñловима"
+
+#: ../rules/base.xml.in.h:429
+msgid "USA"
+msgstr "СÐД"
+
+#: ../rules/base.xml.in.h:430
+msgid "Ukr"
+msgstr "укр"
+
+#: ../rules/base.xml.in.h:431
+msgid "Ukraine"
+msgstr "Украјина"
+
+#: ../rules/base.xml.in.h:432
+msgid "UnicodeExpert"
+msgstr "Стручна за Уникод"
+
+#: ../rules/base.xml.in.h:433
+msgid "United Kingdom"
+msgstr "Велика Британија"
+
+#: ../rules/base.xml.in.h:434
+msgid "Urdu"
+msgstr "Урду"
+
+#: ../rules/base.xml.in.h:435
+msgid "Use Bosnian digraphs"
+msgstr "КориÑти боÑанÑке диграфе"
+
+#: ../rules/base.xml.in.h:436
+msgid "Use Croatian digraphs"
+msgstr "КориÑти хрватÑке диграфе"
+
+#: ../rules/base.xml.in.h:437
+msgid "Use Slovenian digraphs"
+msgstr "КориÑти Ñловеначке диграфе"
+
+#: ../rules/base.xml.in.h:438
+msgid "Use guillemots for quotes"
+msgstr "КориÑти гиљемоте за наводнике"
+
+#: ../rules/base.xml.in.h:439
+msgid "Use keyboard LED to show alternative group."
+msgstr "КориÑти лампицу таÑтатуре за приказ измене група."
+
+#: ../rules/base.xml.in.h:440
+msgid "Uzb"
+msgstr "узб"
+
+#: ../rules/base.xml.in.h:441
+msgid "Uzbekistan"
+msgstr "УзбекиÑтан"
+
+#: ../rules/base.xml.in.h:442
+msgid "Vietnam"
+msgstr "Вијетнам"
+
+#: ../rules/base.xml.in.h:443
+msgid "Vnm"
+msgstr "вјт"
+
+#: ../rules/base.xml.in.h:444
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:445
+msgid "Winkeys"
+msgstr "Windows таÑтери"
+
+#: ../rules/base.xml.in.h:446
+msgid "With &lt;\\|&gt; key"
+msgstr "Уз таÑтер &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:447
+msgid "With guillemots"
+msgstr "Са гиљемотима"
+
+#: ../rules/base.xml.in.h:448
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:449
+msgid "Z and ZHE swapped"
+msgstr "Размењено З и Ж"
+
+#: ../rules/base.xml.in.h:450
+msgid "Zar"
+msgstr "Зар"
+
+#: ../rules/base.xml.in.h:451
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:452
+msgid "azerty/digits"
+msgstr "azerty/цифре"
+
+#: ../rules/base.xml.in.h:453
+msgid "digits"
+msgstr "цифре"
+
+#: ../rules/base.xml.in.h:454
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:455
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:456
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, проширено Ñа обрнутом коÑом цртом"
+
+#: ../rules/base.xml.in.h:457
+msgid "qwerty/digits"
+msgstr "qwerty/цифре"
+
+#: ../rules/base.xml.in.h:458
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.xml.in.h:459
+msgid "si1452"
+msgstr "si1452"
+
+#~ msgid "Turkish"
+#~ msgstr "турÑки"
+
+#~ msgid "\"Standard\""
+#~ msgstr "„Стандардна“"
+
+# bug: Serbia and Montenegro
+#~ msgid "Serbia"
+#~ msgstr "Србија"
+
+#~ msgid "Srp"
+#~ msgstr "Ñрп"
+
+#~ msgid "Tamil INSCRIPT"
+#~ msgstr "тамил инÑкрипт"
+
+#~ msgid "US keyboard with Romanian letters"
+#~ msgstr "Ðмеричка таÑтатура Ñа румунÑким Ñловима"
+
+#~ msgid "A Tamil typewrite-style keymap; TAB encoding"
+#~ msgstr "Тамил раÑпоред налик куцаћој машини; TAB кодирање"
+
+#~ msgid "A Tamil typewrite-style keymap; TSCII encoding"
+#~ msgstr "Тамил раÑпоред налик куцаћој машини; TSCII кодирање"
+
+#~ msgid "A Tamil typewrite-style keymap; Unicode encoding"
+#~ msgstr "Тамил раÑпоред налик куцаћој машини; Уникод кодирање"
+
+#~ msgid "Arb"
+#~ msgstr "арп"
+
+#~ msgid "Basic"
+#~ msgstr "ОÑновно"
+
+#~ msgid "Ben"
+#~ msgstr "бнг"
+
+#~ msgid "Bosnian"
+#~ msgstr "бошњачки"
+
+#~ msgid "Burmese"
+#~ msgstr "бурмиÑки"
+
+#~ msgid "CloGaelach Laptop"
+#~ msgstr "CloGaelach за преноÑне рачунаре"
+
+#~ msgid "Czech (qwerty)"
+#~ msgstr "Чешки (qwerty)"
+
+#~ msgid "Danish"
+#~ msgstr "данÑки"
+
+#~ msgid "Dutch"
+#~ msgstr "холандÑки"
+
+#~ msgid "Dvo"
+#~ msgstr "дво"
+
+#~ msgid "Finnish"
+#~ msgstr "финÑки"
+
+#~ msgid "French Canadian"
+#~ msgstr "француÑки канадÑки"
+
+#~ msgid "Georgian (latin)"
+#~ msgstr "грузијÑки (латиница)"
+
+#~ msgid "Georgian (russian)"
+#~ msgstr "грузијÑки (руÑки)"
+
+#~ msgid "Grc"
+#~ msgstr "грк"
+
+#~ msgid "Guj"
+#~ msgstr "гуј"
+
+#~ msgid "Hin"
+#~ msgstr "инд"
+
+#~ msgid "Hindi"
+#~ msgstr "индијÑки"
+
+#~ msgid "Hungarian (qwerty)"
+#~ msgstr "МађарÑки (qwerty)"
+
+#~ msgid "INSCRIPT layout"
+#~ msgstr "INSCRIPT раÑпоред"
+
+#~ msgid "IS434 laptop"
+#~ msgstr "IS434 преноÑни"
+
+#~ msgid "Iku"
+#~ msgstr "ику"
+
+#~ msgid "Irish"
+#~ msgstr "ирÑки"
+
+#~ msgid "Italian"
+#~ msgstr "италијанÑки"
+
+#~ msgid "Lithuanian azerty standard"
+#~ msgstr "литванÑки azerty раÑпоред"
+
+#~ msgid "Lithuanian qwerty \"numeric\""
+#~ msgstr "литванÑки qwerty „бројевни“"
+
+#~ msgid "Maltese (US layout)"
+#~ msgstr "малтÑки (амерички раÑпоред)"
+
+#~ msgid "Northern Saami (Finland)"
+#~ msgstr "ÑеверноÑаамÑки (ФинÑка)"
+
+#~ msgid "Northern Saami (Sweden)"
+#~ msgstr "ÑеверноÑаамÑки (ШведÑка)"
+
+#~ msgid "Ogh"
+#~ msgstr "огм"
+
+#~ msgid "Ori"
+#~ msgstr "ори"
+
+#~ msgid "PC104"
+#~ msgstr "PC104"
+
+#~ msgid "Polish"
+#~ msgstr "пољÑки"
+
+#~ msgid "Polish (qwertz)"
+#~ msgstr "пољÑки (qwertz)"
+
+#~ msgid "Sapmi"
+#~ msgstr "Sapmi"
+
+#~ msgid "Scg"
+#~ msgstr "Ñрп"
+
+#~ msgid "Slovak (qwerty)"
+#~ msgstr "Ñловачки (qwerty)"
+
+#~ msgid "Sme"
+#~ msgstr "Ñме"
+
+#~ msgid "Sv"
+#~ msgstr "Ñв"
+
+#~ msgid "Swedish"
+#~ msgstr "шведÑки"
+
+#~ msgid "Swiss French"
+#~ msgstr "швајцарÑки француÑки"
+
+#~ msgid "Tel"
+#~ msgstr "тел"
+
+#~ msgid "Thai (Kedmanee)"
+#~ msgstr "тајландÑки (Кедмани)"
+
+#~ msgid "Tml"
+#~ msgstr "тмл"
+
+#~ msgid "Turkish (F)"
+#~ msgstr "турÑки (F)"
+
+#~ msgid "Turkish Alt-Q Layout"
+#~ msgstr "турÑки Alt-Q раÑпоред"
+
+#~ msgid "U.S. English w/ ISO9995-3"
+#~ msgstr "амерички енглеÑки Ñа ИСО9995-3"
+
+#~ msgid "U.S. English w/ dead keys"
+#~ msgstr "амерички енглеÑки Ñа акцентима"
+
+#~ msgid "US"
+#~ msgstr "СÐД"
+
+#~ msgid "Yug"
+#~ msgstr "Ñцг"
+
+#~ msgid "Yugoslavian"
+#~ msgstr "латинични ÑрпÑки"
+
+#~ msgid "abnt2"
+#~ msgstr "абнт2"
+
+#~ msgid "bksl"
+#~ msgstr "бкÑл"
+
+#~ msgid "laptop"
+#~ msgstr "преноÑни"
+
+#~ msgid "sefi"
+#~ msgstr "sefi"
+
+#~ msgid "uni/101/qwerty/comma"
+#~ msgstr "уни/101/qwerty/запета"
+
+#~ msgid "uni/101/qwerty/dot"
+#~ msgstr "уни/101/qwerty/тачка"
+
+#~ msgid "uni/101/qwertz/comma"
+#~ msgstr "уни/101/qwertz/запета"
+
+#~ msgid "uni/101/qwertz/dot"
+#~ msgstr "уни/101/qwertz/тачка"
+
+#~ msgid "uni/102/qwerty/comma"
+#~ msgstr "уни/102/qwerty/запета"
+
+#~ msgid "uni/102/qwerty/dot"
+#~ msgstr "уни/102/qwerty/тачка"
+
+#~ msgid "uni/102/qwertz/comma"
+#~ msgstr "уни/102/qwertz/запета"
+
+#~ msgid "uni/102/qwertz/dot"
+#~ msgstr "уни/102/qwertz/тачка"
diff --git a/xorg-server/xkeyboard-config/po/tr.po b/xorg-server/xkeyboard-config/po/tr.po
index 8f68328b8..122e1da0f 100644
--- a/xorg-server/xkeyboard-config/po/tr.po
+++ b/xorg-server/xkeyboard-config/po/tr.po
@@ -1,2595 +1,2595 @@
-# Turkish translations for xkeyboard-config.
-# Copyright (C) 2007 Free Software Foundation, Inc.
-#
-# Nilgün Belma Bugüner <nilgun@buguner.name.tr>, 2003, ..., 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.0-pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-28 15:21+0100\n"
-"PO-Revision-Date: 2007-07-09 10:09+0300\n"
-"Last-Translator: Nilgün Belma Bugüner <nilgun@buguner.name.tr>\n"
-"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "F Klavye"
-
-#: ../rules/base.xml.in.h:2
-msgid "(Legacy) Alternative"
-msgstr "(Eski) DiÄŸer"
-
-#: ../rules/base.xml.in.h:3
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Eski) Diğer, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:4
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Eski) Diğer, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Dvorak"
-msgstr "(Kadim) Dvorak"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/104 key Compatible"
-msgstr "101/104 tuÅŸ Uyumlu"
-
-#: ../rules/base.xml.in.h:7 ../rules/sun.xml.in.h:2
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:8 ../rules/sun.xml.in.h:3
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/virgül/Ölü tuşları normal yapar"
-
-#: ../rules/base.xml.in.h:9 ../rules/sun.xml.in.h:4
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/nokta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:10 ../rules/sun.xml.in.h:5
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/nokta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:11 ../rules/sun.xml.in.h:6
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/virgül/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:13 ../rules/sun.xml.in.h:7
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/nokta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:14 ../rules/sun.xml.in.h:8
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/nokta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:15 ../rules/sun.xml.in.h:9
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:16 ../rules/sun.xml.in.h:10
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/virgül/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:17 ../rules/sun.xml.in.h:11
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/nokta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:18 ../rules/sun.xml.in.h:12
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/nokta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:19 ../rules/sun.xml.in.h:13
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:20 ../rules/sun.xml.in.h:14
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/virgül/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:21 ../rules/sun.xml.in.h:15
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/nokta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:22 ../rules/sun.xml.in.h:16
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/nokta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:23
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:24
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:25
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:26
-msgid "ACPI Standard"
-msgstr "ACPI Standardı"
-
-#: ../rules/base.xml.in.h:27
-msgid "AZERTY Tskapo"
-msgstr "AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:28
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:29
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:30
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:31
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:32
-msgid "Add the EuroSign to the 2 key."
-msgstr "2 tuşuna € sembolünü ekler"
-
-#: ../rules/base.xml.in.h:33
-msgid "Add the EuroSign to the 5 key."
-msgstr "5 tuşuna € sembolünü ekler"
-
-#: ../rules/base.xml.in.h:34
-msgid "Add the EuroSign to the E key."
-msgstr "E tuşuna € sembolünü ekler"
-
-#: ../rules/base.xml.in.h:35
-msgid "Add the standard behavior to Menu key."
-msgstr "Menü tuşuna standart işlevini ekler."
-
-#: ../rules/base.xml.in.h:36
-msgid "Adding the EuroSign to certain keys"
-msgstr "Belli tuşlara € sembolünün eklenmesi"
-
-#: ../rules/base.xml.in.h:37
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:38
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:39
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#: ../rules/base.xml.in.h:40
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alb"
-msgstr "Arn"
-
-#: ../rules/base.xml.in.h:42
-msgid "Albania"
-msgstr "Arnavutluk"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alt and Meta are on the Alt keys."
-msgstr "Alt ve Meta, Alt tuşlarındadır."
-
-#: ../rules/base.xml.in.h:44
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "Alt, sağdaki Pencere tuşu ile Süper ise Menü tuşu ile eşleştirilir."
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt+CapsLock changes layout."
-msgstr "Alt+CapsLock yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt+Ctrl change layout."
-msgstr "Alt+CtrlyerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Shift change layout."
-msgstr "Alt+Shift yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt-Q"
-msgstr "Yazılımcı klavyesi (Q)"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt/Win key behavior"
-msgstr "Alt/Pencere tuşu davranışı"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alternative"
-msgstr "DiÄŸer"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alternative Eastern"
-msgstr "DiÄŸer DoÄŸu"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alternative Phonetic"
-msgstr "DiÄŸer Fonetik"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative international (former us_intl)"
-msgstr "Uluslararası Q klavle (nam-ı diğer us_intl)"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative, Sun dead keys"
-msgstr "Diğer, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative, eliminate dead keys"
-msgstr "Diğer, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative, latin-9 only"
-msgstr "DiÄŸer, sadece latin-9"
-
-#: ../rules/base.xml.in.h:57
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:58
-msgid "Andorra"
-msgstr "Andora"
-
-#: ../rules/base.xml.in.h:59
-msgid "Apostrophe (') variant"
-msgstr "Tek tırnaklı (')"
-
-#: ../rules/base.xml.in.h:60
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:61
-msgid "Apple Laptop"
-msgstr "Apple Dizüstü"
-
-#: ../rules/base.xml.in.h:62
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:63
-msgid "Arabic"
-msgstr "Arapça"
-
-#: ../rules/base.xml.in.h:64
-msgid "Arm"
-msgstr "Erm"
-
-#: ../rules/base.xml.in.h:65
-msgid "Armenia"
-msgstr "Ermenistan"
-
-#: ../rules/base.xml.in.h:66
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:67
-msgid "Azerbaijan"
-msgstr "Azerbaycan"
-
-#: ../rules/base.xml.in.h:68
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:69
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:70
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Çokluortam"
-
-#: ../rules/base.xml.in.h:71
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:72
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:73
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:74
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:75
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:76
-msgid "Ban"
-msgstr "Ban"
-
-#: ../rules/base.xml.in.h:77
-msgid "Bangladesh"
-msgstr "BangladeÅŸ"
-
-#: ../rules/base.xml.in.h:78 ../rules/sun.xml.in.h:22
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:79
-msgid "Belarus"
-msgstr "Belarus"
-
-#: ../rules/base.xml.in.h:80
-msgid "Belgium"
-msgstr "Belçika"
-
-#: ../rules/base.xml.in.h:81
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:82
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:83
-msgid "Bengali"
-msgstr "Bengalce"
-
-#: ../rules/base.xml.in.h:84
-msgid "Bengali Probhat"
-msgstr "Bengali Probhat"
-
-#: ../rules/base.xml.in.h:85
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomik, Dvorak yolu"
-
-#: ../rules/base.xml.in.h:86
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomik, Dvorak yolu, sadece latin-9"
-
-#: ../rules/base.xml.in.h:87 ../rules/sun.xml.in.h:24
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:88
-msgid "Bhu"
-msgstr "Bhu"
-
-#: ../rules/base.xml.in.h:89
-msgid "Bhutan"
-msgstr "Butan"
-
-#: ../rules/base.xml.in.h:90
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Dini Ä°branice (Tiro)"
-
-#: ../rules/base.xml.in.h:91
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:92
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:93
-msgid "Bosnia and Herzegovina"
-msgstr "Bosna Hersek"
-
-#: ../rules/base.xml.in.h:94
-msgid "Both Alt keys together change layout."
-msgstr "Alt tuşları birlikte yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:95
-msgid "Both Ctrl keys together change layout."
-msgstr "Ctrl tuşları birlikte yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:96
-msgid "Both Shift keys together change layout."
-msgstr "Shift tuşları birlikte yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:97
-msgid "Both Win-keys switch layout while pressed."
-msgstr "Pencere tuşları birlikte yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:98
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:99
-msgid "Braille"
-msgstr "Üç noktalı"
-
-#: ../rules/base.xml.in.h:100
-msgid "Brazil"
-msgstr "Brezilya"
-
-#: ../rules/base.xml.in.h:101
-msgid "Brazilian ABNT2"
-msgstr "Brazilya dili ABNT2"
-
-#: ../rules/base.xml.in.h:102
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:103
-msgid "Brother Internet Keyboard"
-msgstr "Brother Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:104
-msgid "Buckwalter"
-msgstr "Bükvalter"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bulgaria"
-msgstr "Bulgaristan"
-
-#: ../rules/base.xml.in.h:106
-msgid "Cambodia"
-msgstr "Kamboçya"
-
-#: ../rules/base.xml.in.h:107 ../rules/sun.xml.in.h:29
-msgid "Can"
-msgstr "Kan"
-
-#: ../rules/base.xml.in.h:108
-msgid "Canada"
-msgstr "Kanada"
-
-#: ../rules/base.xml.in.h:109
-msgid "Caps Lock is Compose."
-msgstr "CapsLock tuÅŸu karakter birleÅŸimi yapar."
-
-#: ../rules/base.xml.in.h:110
-msgid "CapsLock LED shows alternative layout."
-msgstr "Caps Lock LED'i diğer yerleşimi gösterir."
-
-#: ../rules/base.xml.in.h:111
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
-msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu ise Caps Lock tuşunu \"bekletir\"."
-
-#: ../rules/base.xml.in.h:112
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
-msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu Caps Lock davranışını etkilemez."
-
-#: ../rules/base.xml.in.h:113
-msgid "CapsLock just locks the Shift modifier."
-msgstr "Caps Lock sadece kilitlemeli Shift tuşu gibi çalışır."
-
-#: ../rules/base.xml.in.h:114 ../rules/sun.xml.in.h:33
-msgid "CapsLock key behavior"
-msgstr "CapsLock tuşunun davranışı"
-
-#: ../rules/base.xml.in.h:115
-msgid "CapsLock key changes layout."
-msgstr "Caps Lock tuÅŸu yerleÅŸimi deÄŸiÅŸtirir"
-
-#: ../rules/base.xml.in.h:116
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "Caps Lock tuşu Shift davranışını ters çevirir; bundan alfabetik olmayan tuşlar da etkilenir."
-
-#: ../rules/base.xml.in.h:117
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "Caps Lock tuşu büyük/küçük harf geçişi yapar."
-
-#: ../rules/base.xml.in.h:118
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
-msgstr "CapsLock dahili dönüşümü kullanılır, Shift tuşu Caps Lock tuşunu \"bekletir\"."
-
-#: ../rules/base.xml.in.h:119
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
-msgstr "CapsLock dahili dönüşümü kullanır. Shift tuşu Caps Lock davranışını etkilemez."
-
-#: ../rules/base.xml.in.h:120
-msgid "Catalan variant with middle-dot L"
-msgstr "Ortası noktalı L'li Katalan yerleşimi"
-
-#: ../rules/base.xml.in.h:121
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:122
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:123
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (diğer seçenek)"
-
-#: ../rules/base.xml.in.h:124
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:125
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:126
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:127
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:128
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:129
-msgid "Chuvash"
-msgstr "Çuvaş"
-
-#: ../rules/base.xml.in.h:130
-msgid "Chuvash Latin"
-msgstr "Çuvaş Latin"
-
-#: ../rules/base.xml.in.h:131
-msgid "Classic Dvorak"
-msgstr "Klasik Dvorak"
-
-#: ../rules/base.xml.in.h:132
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:133
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Kolay EriÅŸim Klavyesi"
-
-#: ../rules/base.xml.in.h:134
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Genel AÄŸ Klavyesi (13 tuÅŸlu)"
-
-#: ../rules/base.xml.in.h:135
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Genel AÄŸ Klavyesi (18 tuÅŸlu)"
-
-#: ../rules/base.xml.in.h:136
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Genel AÄŸ Klavyesi (7 tuÅŸlu)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Klavyesi"
-
-#: ../rules/base.xml.in.h:138
-msgid "Compose key position"
-msgstr "Karakter oluÅŸturma (compose) tuÅŸu konumu"
-
-#: ../rules/base.xml.in.h:139
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo Demokratik Cumhuriyeti"
-
-#: ../rules/base.xml.in.h:140
-msgid "Control is mapped to the Win-keys (and the usual Ctrl keys)."
-msgstr "Ctrl, Win tuşlarına eşlenir."
-
-#: ../rules/base.xml.in.h:141
-msgid "Croatia"
-msgstr "Hırvatistan"
-
-#: ../rules/base.xml.in.h:142
-msgid "Ctrl key at bottom left"
-msgstr "Sol alttaki Ctrl tuÅŸu"
-
-#: ../rules/base.xml.in.h:143
-msgid "Ctrl key at left of 'A'"
-msgstr "'A'nın solundaki Ctrl Tuşu"
-
-#: ../rules/base.xml.in.h:144
-msgid "Ctrl key position"
-msgstr "Ctrl tuÅŸunun yeri"
-
-#: ../rules/base.xml.in.h:145
-msgid "Ctrl+Shift change layout."
-msgstr "Ctrl+Shift tuşları yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:146
-msgid "Cyrillic"
-msgstr "Kril"
-
-#: ../rules/base.xml.in.h:147 ../rules/sun.xml.in.h:39
-msgid "Cze"
-msgstr "Çek"
-
-#: ../rules/base.xml.in.h:148
-msgid "Czechia"
-msgstr "Çek Cumhuriyeti"
-
-#: ../rules/base.xml.in.h:149
-msgid "DRC"
-msgstr "DRC"
-
-#: ../rules/base.xml.in.h:150
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:151 ../rules/sun.xml.in.h:42
-msgid "Dead acute"
-msgstr "Ölü acute (´)"
-
-#: ../rules/base.xml.in.h:152 ../rules/sun.xml.in.h:43
-msgid "Dead grave acute"
-msgstr "Ölü grave acute (`)"
-
-#: ../rules/base.xml.in.h:153
-msgid "Default numeric keypad keys."
-msgstr "Öntanımlı tuştakımı tuşları."
-
-#: ../rules/base.xml.in.h:154
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:155
-msgid "Dell 101-key PC"
-msgstr "Dell 101 tuÅŸlu PC"
-
-#: ../rules/base.xml.in.h:156
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dizüstü/defter Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:157
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Dizüstü/defter Precision M series"
-
-#: ../rules/base.xml.in.h:158
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude serisi Dizüstü"
-
-#: ../rules/base.xml.in.h:159
-msgid "Dell SK-8125 USB Multimedia Keybard"
-msgstr "Dell SK-8125 USB Çokluortam Klavyesi"
-
-#: ../rules/base.xml.in.h:160
-msgid "Dell SK-8135 USB Multimedia Keybard"
-msgstr "Dell SK-8135 USB Çokluortam Klavyesi"
-
-#: ../rules/base.xml.in.h:161
-msgid "Dell USB Multimedia Keybard"
-msgstr "Dell USB Çokluortam Klavyesi"
-
-#: ../rules/base.xml.in.h:162
-msgid "Denmark"
-msgstr "Danimarka"
-
-#: ../rules/base.xml.in.h:163 ../rules/sun.xml.in.h:44
-msgid "Deu"
-msgstr "Alm"
-
-#: ../rules/base.xml.in.h:164
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Kablosuz Masaüstü Klavyesi"
-
-#: ../rules/base.xml.in.h:165
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 serileri"
-
-#: ../rules/base.xml.in.h:166 ../rules/sun.xml.in.h:46
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:167 ../rules/sun.xml.in.h:48
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:168
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "Dvorak, \"1/!\" tuşunda Lehçe tırnaklar"
-
-#: ../rules/base.xml.in.h:169
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, çift tırnak tuşunda Lehçe tırnaklar"
-
-#: ../rules/base.xml.in.h:170
-msgid "Eastern"
-msgstr "DoÄŸu"
-
-#: ../rules/base.xml.in.h:171 ../rules/sun.xml.in.h:49
-msgid "Eliminate dead keys"
-msgstr "Ölü tuşları normal yapar"
-
-#: ../rules/base.xml.in.h:172
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:173
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:174
-msgid "Ergonomic"
-msgstr "Ergonomik"
-
-#: ../rules/base.xml.in.h:175 ../rules/sun.xml.in.h:50
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:176
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:177
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:178
-msgid "Estonia"
-msgstr "Estonya"
-
-#: ../rules/base.xml.in.h:179
-msgid "Eth"
-msgstr "Ety"
-
-#: ../rules/base.xml.in.h:180
-msgid "Ethiopia"
-msgstr "Etyopya"
-
-#: ../rules/base.xml.in.h:181
-msgid "Evdev-managed keyboard"
-msgstr "Evdev yönetimli klavye"
-
-#: ../rules/base.xml.in.h:182
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:183
-msgid "Ewe"
-msgstr "Eve"
-
-#: ../rules/base.xml.in.h:184
-msgid "Extended"
-msgstr "GeliÅŸmiÅŸ"
-
-#: ../rules/base.xml.in.h:185
-msgid "Extended Backslash"
-msgstr "GeliÅŸmiÅŸ Gerisilme"
-
-#: ../rules/base.xml.in.h:186
-msgid "F-letter (F) variant"
-msgstr "F harfli (F) türü"
-
-#: ../rules/base.xml.in.h:187
-msgid "Fao"
-msgstr "Fao"
-
-#: ../rules/base.xml.in.h:188
-msgid "Faroe Islands"
-msgstr "Faroe Adaları"
-
-#: ../rules/base.xml.in.h:189 ../rules/sun.xml.in.h:51
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:190
-msgid "Finland"
-msgstr "Finlandiya"
-
-#: ../rules/base.xml.in.h:191
-msgid "Force standard legacy keypad"
-msgstr "Standart kadim tuştakımını etkin kılar"
-
-#: ../rules/base.xml.in.h:192 ../rules/sun.xml.in.h:53
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:193
-msgid "France"
-msgstr "Fransa"
-
-#: ../rules/base.xml.in.h:194 ../rules/sun.xml.in.h:55
-msgid "French"
-msgstr "Fransızca"
-
-#: ../rules/base.xml.in.h:195
-msgid "French (Macintosh)"
-msgstr "Fransız (Makintoş)"
-
-#: ../rules/base.xml.in.h:196 ../rules/sun.xml.in.h:56
-msgid "French (legacy)"
-msgstr "Fransızca (eski)"
-
-#: ../rules/base.xml.in.h:197
-msgid "French Dvorak"
-msgstr "Fransızca Dvorak"
-
-#: ../rules/base.xml.in.h:198
-msgid "French, Sun dead keys"
-msgstr "Fransızca, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:199
-msgid "French, eliminate dead keys"
-msgstr "Fransızca, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:200
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:201
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:202
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:203
-msgid "Generic 101-key PC"
-msgstr "Soysal 101 tuÅŸlu PC"
-
-#: ../rules/base.xml.in.h:204
-msgid "Generic 102-key (Intl) PC"
-msgstr "Soysal 102 tuşlu (Uluslararası) PC"
-
-#: ../rules/base.xml.in.h:205
-msgid "Generic 104-key PC"
-msgstr "Soysal 104 tuÅŸlu PC"
-
-#: ../rules/base.xml.in.h:206
-msgid "Generic 105-key (Intl) PC"
-msgstr "Soysal 105 tuşlu (uluslararası) PC"
-
-#: ../rules/base.xml.in.h:207
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:208
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:209
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:210
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:211
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:212
-msgid "Georgia"
-msgstr "Gürcistan"
-
-#: ../rules/base.xml.in.h:213
-msgid "German (Macintosh)"
-msgstr "Alman (MakintoÅŸ)"
-
-#: ../rules/base.xml.in.h:214
-msgid "German, Sun dead keys"
-msgstr "Almanca, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:215
-msgid "German, eliminate dead keys"
-msgstr "Almanca, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:216
-msgid "Germany"
-msgstr "Almanya"
-
-#: ../rules/base.xml.in.h:217
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:218
-msgid "Ghana"
-msgstr "Gana"
-
-#: ../rules/base.xml.in.h:219
-msgid "Gre"
-msgstr "Gre"
-
-#: ../rules/base.xml.in.h:220
-msgid "Greece"
-msgstr "Yunanistan"
-
-#: ../rules/base.xml.in.h:221
-msgid "Gujarati"
-msgstr "Batı Hint dili"
-
-#: ../rules/base.xml.in.h:222
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:223
-msgid "Gyration"
-msgstr "Çekimsel"
-
-#: ../rules/base.xml.in.h:224
-msgid "Hausa"
-msgstr "Havza"
-
-#: ../rules/base.xml.in.h:225
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:226
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:227
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:228
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:229
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:230
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:231
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:232
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:233
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Çokluortam Klavyesi"
-
-#: ../rules/base.xml.in.h:234
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:235
-msgid "Hindi Bolnagri"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:236
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:237
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:238 ../rules/sun.xml.in.h:59
-msgid "Hun"
-msgstr "Mcr"
-
-#: ../rules/base.xml.in.h:239
-msgid "Hungary"
-msgstr "Macaristan"
-
-#: ../rules/base.xml.in.h:240
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper, Pencere tuşlarına eşlenir."
-
-#: ../rules/base.xml.in.h:241
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:242
-msgid "IBM Rapid Access"
-msgstr "IBM Hızlı Erişim"
-
-#: ../rules/base.xml.in.h:243
-msgid "IBM Rapid Access II"
-msgstr "IBM Hızlı Erişim II"
-
-#: ../rules/base.xml.in.h:244
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Hızlı Erişim II (diğer seçenek)"
-
-#: ../rules/base.xml.in.h:245
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:246
-msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#: ../rules/base.xml.in.h:247 ../rules/sun.xml.in.h:61
-msgid "ISO Alternate"
-msgstr "ISO diÄŸer"
-
-#: ../rules/base.xml.in.h:248
-msgid "Iceland"
-msgstr "Ä°zlanda"
-
-#: ../rules/base.xml.in.h:249
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:250
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:251
-msgid "India"
-msgstr "Hindistan"
-
-#: ../rules/base.xml.in.h:252 ../rules/sun.xml.in.h:62
-msgid "International (with dead keys)"
-msgstr "Uluslararası (ölü tuşlarla)"
-
-#: ../rules/base.xml.in.h:253
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:254
-msgid "Iran"
-msgstr "Ä°ran"
-
-#: ../rules/base.xml.in.h:255
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:256
-msgid "Ireland"
-msgstr "Ä°rlanda"
-
-#: ../rules/base.xml.in.h:257
-msgid "Irl"
-msgstr "Ä°rl"
-
-#: ../rules/base.xml.in.h:258
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:259
-msgid "Irq"
-msgstr "Irk"
-
-#: ../rules/base.xml.in.h:260
-msgid "Isl"
-msgstr "Izl"
-
-#: ../rules/base.xml.in.h:261
-msgid "Isr"
-msgstr "Ä°br"
-
-#: ../rules/base.xml.in.h:262
-msgid "Israel"
-msgstr "Ä°srail"
-
-#: ../rules/base.xml.in.h:263 ../rules/sun.xml.in.h:63
-msgid "Ita"
-msgstr "Ä°ta"
-
-#: ../rules/base.xml.in.h:264
-msgid "Italy"
-msgstr "Ä°talya"
-
-#: ../rules/base.xml.in.h:265
-msgid "Japan"
-msgstr "Japonya"
-
-#: ../rules/base.xml.in.h:266
-msgid "Japan (PC-98xx Series)"
-msgstr "Japon (PC-98xx Series)"
-
-#: ../rules/base.xml.in.h:267
-msgid "Japanese 106-key"
-msgstr "Japonca 106 tuÅŸlu"
-
-#: ../rules/base.xml.in.h:268
-msgid "Japanese keyboard options"
-msgstr "Japonca klavye seçenekleri"
-
-#: ../rules/base.xml.in.h:269 ../rules/sun.xml.in.h:66
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:270
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:271
-msgid "Kana Lock key is locking"
-msgstr "Kana Lock tuÅŸu kilitler"
-
-#: ../rules/base.xml.in.h:272
-msgid "Kannada"
-msgstr "Güney Hint dili"
-
-#: ../rules/base.xml.in.h:273
-msgid "Kashubian"
-msgstr "Kaşubyalı"
-
-#: ../rules/base.xml.in.h:274
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:275
-msgid "Kazakh with Russian"
-msgstr "Kazak (rus)"
-
-#: ../rules/base.xml.in.h:276
-msgid "Kazakhstan"
-msgstr "Kazakistan"
-
-#: ../rules/base.xml.in.h:277
-msgid "Keypad"
-msgstr "Tuştakımı"
-
-#: ../rules/base.xml.in.h:278
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:279
-msgid "Khm"
-msgstr "Kım"
-
-#: ../rules/base.xml.in.h:280
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:281
-msgid "Korea, Republic of"
-msgstr "Kore Cumhuriyeti"
-
-#: ../rules/base.xml.in.h:282
-msgid "Korean 106-key"
-msgstr "Korece 106 tuÅŸlu"
-
-#: ../rules/base.xml.in.h:283
-msgid "Kotoistus"
-msgstr "Kotüstus"
-
-#: ../rules/base.xml.in.h:284
-msgid "Kurdish, (F)"
-msgstr "Kürtçe (Türkçe F klavye)"
-
-#: ../rules/base.xml.in.h:285
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kürtçe (Arapça-Latin)"
-
-#: ../rules/base.xml.in.h:286
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kürtçe (Türkçe Alt-Q klavye)"
-
-#: ../rules/base.xml.in.h:287
-msgid "Kurdish, Latin Q"
-msgstr "Kürtçe (Türkçe Q klavye)"
-
-#: ../rules/base.xml.in.h:288
-msgid "Kyr"
-msgstr "Kır"
-
-#: ../rules/base.xml.in.h:289
-msgid "Kyrgyzstan"
-msgstr "Kırgızistan"
-
-#: ../rules/base.xml.in.h:290
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:291
-msgid "LCtrl+LShift change layout."
-msgstr "Ctrl+Shift tuşları yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:292
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:293
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:294
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Dizüstü/defter Compaq (örn. Armada) Dizüstü Klavyesi"
-
-#: ../rules/base.xml.in.h:295
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Dizüstü/defter Compaq (örn. Presario) Genel Ağ Klavyesi"
-
-#: ../rules/base.xml.in.h:296
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Dizüstü/defter eMachines m68xx"
-
-#: ../rules/base.xml.in.h:297
-msgid "Latin"
-msgstr "Latin"
-
-#: ../rules/base.xml.in.h:298
-msgid "Latin American"
-msgstr "Latin Amerikanca"
-
-#: ../rules/base.xml.in.h:299
-msgid "Latin Unicode"
-msgstr "Latin Unicode"
-
-#: ../rules/base.xml.in.h:300
-msgid "Latin Unicode qwerty"
-msgstr "Latin Unicode qwerty"
-
-#: ../rules/base.xml.in.h:301
-msgid "Latin qwerty"
-msgstr "Latin qwerty"
-
-#: ../rules/base.xml.in.h:302
-msgid "Latin with guillemets"
-msgstr "Açılı ayraçlarla Latin"
-
-#: ../rules/base.xml.in.h:303
-msgid "Latvia"
-msgstr "Letonya"
-
-#: ../rules/base.xml.in.h:304
-msgid "Layout switching"
-msgstr "YerleÅŸim deÄŸiÅŸtirme "
-
-#: ../rules/base.xml.in.h:305
-msgid "Left Alt is swapped with left Win-key."
-msgstr "Soydaki Alt tuÅŸu ile soldaki Pencere tuÅŸu yerdeÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:306
-msgid "Left Alt key changes layout."
-msgstr "Soldaki Alt tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:307
-msgid "Left Alt key switches layout while pressed."
-msgstr "Soldaki Alt tuşu basılıyken diğer yerleşimi etkin olur."
-
-#: ../rules/base.xml.in.h:308
-msgid "Left Ctrl key changes layout."
-msgstr "Soldaki Ctrl tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:309
-msgid "Left Shift key changes layout."
-msgstr "Soldaki Shift tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:310
-msgid "Left Win-key changes layout."
-msgstr "Soldaki Pencere tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:311
-msgid "Left Win-key is Compose."
-msgstr "Soldaki Pencere tuÅŸu karakter birleÅŸimi yapar."
-
-#: ../rules/base.xml.in.h:312
-msgid "Left Win-key switches layout while pressed."
-msgstr "Soldaki Win tuşu basılıyken diğer yerleşim etkin olur."
-
-#: ../rules/base.xml.in.h:313
-msgid "Left hand"
-msgstr "Solak"
-
-#: ../rules/base.xml.in.h:314
-msgid "Left handed Dvorak"
-msgstr "Solak Dvorak"
-
-#: ../rules/base.xml.in.h:315
-msgid "Lithuania"
-msgstr "Litvanya"
-
-#: ../rules/base.xml.in.h:316
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:317
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Kablosuz Masaüstü"
-
-#: ../rules/base.xml.in.h:318
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Kablosuz Masaüstü LX-300"
-
-#: ../rules/base.xml.in.h:319
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Kablosuz Masaüstü Tarayıcı"
-
-#: ../rules/base.xml.in.h:320
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Kablosuz Masaüstü Optik"
-
-#: ../rules/base.xml.in.h:321
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Kablosuz Masaüstü Pro"
-
-#: ../rules/base.xml.in.h:322
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Kablosuz Masaüstü Pro (diğer seçenek)"
-
-#: ../rules/base.xml.in.h:323
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Kablosuz Masaüstü Pro (diğer 2. seçenek)"
-
-#: ../rules/base.xml.in.h:324
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Kablosuz Masaüstü iTouch"
-
-#: ../rules/base.xml.in.h:325
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Kablosuz Özgür/Masaüstü Tarayıcı"
-
-#: ../rules/base.xml.in.h:326
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15, G15daemon üzerinden ek tuşlu"
-
-#: ../rules/base.xml.in.h:327
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:328
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Genel Ağ Tarayıcı Klavyesi"
-
-#: ../rules/base.xml.in.h:329
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:330
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech Access Klavye"
-
-#: ../rules/base.xml.in.h:331
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:332
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Kablosuz Klavyesi (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:333
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Genel Ağ Tarayıcı Klavyesi SE"
-
-#: ../rules/base.xml.in.h:334
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Genel Ağ Tarayıcı Klavyesi SE (USB)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:336
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:337
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:338
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:339
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Uluslararası)"
-
-#: ../rules/base.xml.in.h:340
-msgid "Macedonia"
-msgstr "Makedonya"
-
-#: ../rules/base.xml.in.h:341
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:342
-msgid "Macintosh Old"
-msgstr "Eski Macintosh"
-
-#: ../rules/base.xml.in.h:343
-msgid "Macintosh, Sun dead keys"
-msgstr "Makintoş, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:344
-msgid "Macintosh, eliminate dead keys"
-msgstr "Makintoş, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:345
-msgid "Make CapsLock an additional Ctrl."
-msgstr "CapsLock tuÅŸunu ek bir Ctrl tuÅŸu yapar."
-
-#: ../rules/base.xml.in.h:346
-msgid "Mal"
-msgstr "Mal"
-
-#: ../rules/base.xml.in.h:347
-msgid "Malayalam"
-msgstr "Malayalam dili"
-
-#: ../rules/base.xml.in.h:348
-msgid "Maldives"
-msgstr "Maldivler"
-
-#: ../rules/base.xml.in.h:349
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:350
-msgid "Maltese keyboard with US layout"
-msgstr "Ameriken yerleşimli Maltız klavyesi"
-
-#: ../rules/base.xml.in.h:351
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:352
-msgid "Maori"
-msgstr "Mayorka"
-
-#: ../rules/base.xml.in.h:353
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:354
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ EriÅŸim Klavyesi"
-
-#: ../rules/base.xml.in.h:355
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:356
-msgid "Menu is Compose."
-msgstr "Menü tuşu karakter birleşimi yapar."
-
-#: ../rules/base.xml.in.h:357
-msgid "Menu key changes layout."
-msgstr "Menü tuşu yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:358
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta, Win tuşları ile eşleştirilir."
-
-#: ../rules/base.xml.in.h:359
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta, soldaki Win tuÅŸu ile eÅŸleÅŸtirilir."
-
-#: ../rules/base.xml.in.h:360
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:361
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Genel Ağ Klavyesi Pro, İsveçce"
-
-#: ../rules/base.xml.in.h:362
-msgid "Microsoft Natural"
-msgstr "Microsoft Basit"
-
-#: ../rules/base.xml.in.h:363
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Basit Klavye Pro / Microsoft Genel AÄŸ Klavyesi Pro"
-
-#: ../rules/base.xml.in.h:364
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Basit Klavye Pro OEM"
-
-#: ../rules/base.xml.in.h:365
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Ofis Klavyesi"
-
-#: ../rules/base.xml.in.h:367
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:368 ../rules/sun.xml.in.h:72
-msgid "Miscellaneous compatibility options"
-msgstr "Çeşitli uyumluluk seçenekleri"
-
-#: ../rules/base.xml.in.h:369
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:370
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:371
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:372
-msgid "Mng"
-msgstr "MoÄŸ"
-
-#: ../rules/base.xml.in.h:373
-msgid "Mongolia"
-msgstr "MoÄŸolistan"
-
-#: ../rules/base.xml.in.h:374
-msgid "Morocco"
-msgstr "Fas"
-
-#: ../rules/base.xml.in.h:375 ../rules/sun.xml.in.h:73
-msgid "Multilingual"
-msgstr "Çokdilli"
-
-#: ../rules/base.xml.in.h:376
-msgid "Multilingual, first part"
-msgstr "Çokdilli, ilk bölüm"
-
-#: ../rules/base.xml.in.h:377 ../rules/sun.xml.in.h:74
-msgid "Multilingual, second part"
-msgstr "Çokdilli, ikinci bölüm"
-
-#: ../rules/base.xml.in.h:378
-msgid "Myanmar"
-msgstr "Miyanmar"
-
-#: ../rules/base.xml.in.h:379
-msgid "NICOLA-F style Backspace"
-msgstr "NICOLA-F tarzı Gerisilme"
-
-#: ../rules/base.xml.in.h:380
-msgid "Neostyle"
-msgstr "Yenitarz"
-
-#: ../rules/base.xml.in.h:381
-msgid "Nep"
-msgstr "Nep"
-
-#: ../rules/base.xml.in.h:382
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:383
-msgid "Netherlands"
-msgstr "Hollanda"
-
-#: ../rules/base.xml.in.h:384
-msgid "Nig"
-msgstr "Nij"
-
-#: ../rules/base.xml.in.h:385
-msgid "Nigeria"
-msgstr "Nijerya"
-
-#: ../rules/base.xml.in.h:386
-msgid "Nld"
-msgstr "Hol"
-
-#: ../rules/base.xml.in.h:387 ../rules/sun.xml.in.h:75
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:388
-msgid "Northern Saami"
-msgstr "Kuzey Sami"
-
-#: ../rules/base.xml.in.h:389
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Kuzey Sami, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:390
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:391
-msgid "Norway"
-msgstr "Norveç"
-
-#: ../rules/base.xml.in.h:392
-msgid "NumLock LED shows alternative layout."
-msgstr "Num_Lock LED'i diğer yerleşimi gösterir."
-
-#: ../rules/base.xml.in.h:393
-msgid "Numeric keypad keys work as with Mac."
-msgstr "Tuştakımı Mac gibi çalışır."
-
-#: ../rules/base.xml.in.h:394
-msgid "Numeric keypad layout selection"
-msgstr "Sayısal tuştakımı yerleşimi seçimi"
-
-#: ../rules/base.xml.in.h:395
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:396
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:397
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:398
-msgid "Oriya"
-msgstr "Orissa dili"
-
-#: ../rules/base.xml.in.h:399
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:400
-msgid "Ossetian"
-msgstr "Osetya"
-
-#: ../rules/base.xml.in.h:401
-msgid "Ossetian, Winkeys"
-msgstr "Osetya, Pencere tuşları"
-
-#: ../rules/base.xml.in.h:402
-msgid "PC-98xx Series"
-msgstr "PC-98xx Serisi"
-
-#: ../rules/base.xml.in.h:403
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:404
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#: ../rules/base.xml.in.h:405
-msgid "Pashto"
-msgstr "PaÅŸto"
-
-#: ../rules/base.xml.in.h:406
-msgid "Pattachote"
-msgstr "Pataküte"
-
-#: ../rules/base.xml.in.h:407 ../rules/sun.xml.in.h:78
-msgid "Phonetic"
-msgstr "Fonetik"
-
-#: ../rules/base.xml.in.h:408 ../rules/sun.xml.in.h:79
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:409
-msgid "Poland"
-msgstr "Polonya"
-
-#: ../rules/base.xml.in.h:410
-msgid "Polytonic"
-msgstr "Politonik"
-
-#: ../rules/base.xml.in.h:411
-msgid "Portugal"
-msgstr "Portekiz"
-
-#: ../rules/base.xml.in.h:412
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "3. seviyeyi seçmek için soldaki Alt tuşuna basın."
-
-#: ../rules/base.xml.in.h:413
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "3. seviyeyi seçmek için soldaki Win tuşuna basın."
-
-#: ../rules/base.xml.in.h:414
-msgid "Press Menu key to choose 3rd level."
-msgstr "3. seviyeyi seçmek için Menü tuşuna basın."
-
-#: ../rules/base.xml.in.h:415
-msgid "Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
-msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın, Sağdaki Alt tuşuyla birlikte Shift tuşu AltGr gibi davranır."
-
-#: ../rules/base.xml.in.h:416
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın."
-
-#: ../rules/base.xml.in.h:417
-msgid "Press Right Ctrl to choose 3rd level."
-msgstr "3. seviyeyi seçmek için sağdaki Ctrl tuşuna basın."
-
-#: ../rules/base.xml.in.h:418
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "3. seviyeyi seçmek için sağdaki Win tuşuna basın."
-
-#: ../rules/base.xml.in.h:419
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "3. seviyeyi seçmek için Alt tuşlarından birine basın."
-
-#: ../rules/base.xml.in.h:420
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "3. seviyeyi seçmek için Win tuşlarından birine basın."
-
-#: ../rules/base.xml.in.h:421
-msgid "Pro"
-msgstr "Pro"
-
-#: ../rules/base.xml.in.h:422
-msgid "Pro Keypad"
-msgstr "Pro Klavye"
-
-#: ../rules/base.xml.in.h:423
-msgid "Probhat"
-msgstr "Probat"
-
-#: ../rules/base.xml.in.h:424
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:425 ../rules/sun.xml.in.h:88
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:426
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:427
-msgid "R-Alt switches layout while pressed."
-msgstr "Sağdaki Alt tuşu basılıyken diğer yerleşim etkin olur."
-
-#: ../rules/base.xml.in.h:428
-msgid "Right Alt is Compose."
-msgstr "SaÄŸdaki Alt tuÅŸu karakter birleÅŸimi yapar."
-
-#: ../rules/base.xml.in.h:429
-msgid "Right Alt key changes layout."
-msgstr "SaÄŸdaki Alt tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:430 ../rules/sun.xml.in.h:90
-msgid "Right Alt key never chooses 3rd level."
-msgstr "Sağdaki Alt tuşu 3. seviyeyi asla seçmez."
-
-#: ../rules/base.xml.in.h:431
-msgid "Right Ctrl is Compose."
-msgstr "SaÄŸdaki Ctrl tuÅŸu karakter birleÅŸimi yapar."
-
-#: ../rules/base.xml.in.h:432
-msgid "Right Ctrl key changes layout."
-msgstr "SaÄŸdaki Ctrl tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:433
-msgid "Right Ctrl key switches layout while pressed."
-msgstr "Sağdaki Ctrl tuşu basılıyken diğer yerleşim etkin olur."
-
-#: ../rules/base.xml.in.h:434
-msgid "Right Ctrl key works as Right Alt."
-msgstr "Sağdaki Ctrl tuşu sağdaki Alt tuşu gibi çalışır."
-
-#: ../rules/base.xml.in.h:435
-msgid "Right Shift key changes layout."
-msgstr "SaÄŸdaki Shift tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:436
-msgid "Right Win-key changes layout."
-msgstr "SaÄŸdaki Win tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:437
-msgid "Right Win-key is Compose."
-msgstr "SaÄŸdaki Win tuÅŸu karakter birleÅŸimi yapar."
-
-#: ../rules/base.xml.in.h:438
-msgid "Right Win-key switches layout while pressed."
-msgstr "Sağdaki Win tuşu basılıyken diğer yerleşim etkin olur."
-
-#: ../rules/base.xml.in.h:439
-msgid "Right hand"
-msgstr "SaÄŸ el"
-
-#: ../rules/base.xml.in.h:440
-msgid "Right handed Dvorak"
-msgstr "SaÄŸ elle Dvorak"
-
-#: ../rules/base.xml.in.h:441
-msgid "Romania"
-msgstr "Romenya"
-
-#: ../rules/base.xml.in.h:442
-msgid "Romanian keyboard with German letters"
-msgstr "Alman harfleriyle Romanya klavyesi"
-
-#: ../rules/base.xml.in.h:443
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Alman harfleriyle Romanya klavyesi, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:444
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:445 ../rules/sun.xml.in.h:95
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:446
-msgid "Russia"
-msgstr "Rusya"
-
-#: ../rules/base.xml.in.h:447 ../rules/sun.xml.in.h:96
-msgid "Russian"
-msgstr "Rusça"
-
-#: ../rules/base.xml.in.h:448
-msgid "Russian phonetic"
-msgstr "Rusça fonetik"
-
-#: ../rules/base.xml.in.h:449
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Rusça fonetik, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:450
-msgid "Russian with Kazakh"
-msgstr "Rusça (kazak)"
-
-#: ../rules/base.xml.in.h:451
-msgid "SCG"
-msgstr "SCG"
-
-#: ../rules/base.xml.in.h:452
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Çokluortam Kablosuz Klavyesi"
-
-#: ../rules/base.xml.in.h:453
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:454
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:455
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:456
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:457
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomik 2500"
-
-#: ../rules/base.xml.in.h:458
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:459
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:460
-msgid "ScrollLock LED shows alternative layout."
-msgstr "Scroll_Lock LED'i diğer yerleşimi gösterir."
-
-#: ../rules/base.xml.in.h:461
-msgid "Serbia and Montenegro"
-msgstr "Sırbistan ve Karadağ"
-
-#: ../rules/base.xml.in.h:462
-msgid "Shift with numeric keypad keys works as in MS Windows."
-msgstr "Sayısal tuştakımı Shift ile MS Windows'daki gibi çalışır."
-
-#: ../rules/base.xml.in.h:463
-msgid "Shift+CapsLock changes layout."
-msgstr "Shift+CapsLock tuşları yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:464
-msgid "Slovakia"
-msgstr "Slovakya"
-
-#: ../rules/base.xml.in.h:465
-msgid "Slovenia"
-msgstr "Slovenya"
-
-#: ../rules/base.xml.in.h:466
-msgid "South Africa"
-msgstr "Güney Afrika"
-
-#: ../rules/base.xml.in.h:467
-msgid "Southern Uzbek"
-msgstr "Güney Özbekistan"
-
-#: ../rules/base.xml.in.h:468
-msgid "Space key outputs non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar, altıncı seviyede incesini basar"
-
-#: ../rules/base.xml.in.h:469
-msgid "Space key outputs non-breakable space character at fourth level."
-msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar."
-
-#: ../rules/base.xml.in.h:470
-msgid "Space key outputs non-breakable space character at second level."
-msgstr "Boşluk tuşu nobreakspace'i ikinci seviyede çıktılar."
-
-#: ../rules/base.xml.in.h:471
-msgid "Space key outputs non-breakable space character at third level, nothing at fourth level."
-msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar, üçüncü işlevsizdir."
-
-#: ../rules/base.xml.in.h:472
-msgid "Space key outputs non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Boşluk tuşu üçüncü seviyede nobreakspace basar, dördüncü seviyede incesini basar"
-
-#: ../rules/base.xml.in.h:473
-msgid "Space key outputs non-breakable space character at third level."
-msgstr "Boşluk tuşu nobreakspace'i üçüncü seviyede çıktılar."
-
-#: ../rules/base.xml.in.h:474
-msgid "Space key outputs usual space at any level."
-msgstr "BoÅŸluk tuÅŸu her seviyede boÅŸluk basar (nobreakspace basmaz)."
-
-#: ../rules/base.xml.in.h:475
-msgid "Spain"
-msgstr "Ä°spanya"
-
-#: ../rules/base.xml.in.h:476 ../rules/sun.xml.in.h:103
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Bir sunucuda elde edilen özel tuşlar (Ctrl+Alt+&lt;tuş&gt;)"
-
-#: ../rules/base.xml.in.h:477
-msgid "SrL"
-msgstr "SrL"
-
-#: ../rules/base.xml.in.h:478
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#: ../rules/base.xml.in.h:479 ../rules/sun.xml.in.h:104
-msgid "Standard"
-msgstr "Standart"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:481
-msgid "Standard RSTU"
-msgstr "Standart RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:483
-msgid "Standard RSTU on Russian layout"
-msgstr "Rusça yerleşimde standart RSTU"
-
-#: ../rules/base.xml.in.h:484 ../rules/sun.xml.in.h:112
-msgid "Sun dead keys"
-msgstr "Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:485
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:486
-msgid "Super is mapped to the Win-keys."
-msgstr "Super, Pencere tuşlarına eşlenir."
-
-#: ../rules/base.xml.in.h:487
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:488 ../rules/sun.xml.in.h:113
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:489
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:490
-msgid "Swap Ctrl and CapsLock."
-msgstr "Ctrl ile Caps Lock yer deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:491
-msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-msgstr "Makintoş klavyeler çekirdek tarafından algılanamadığında iki seviyeli tuş kodlarına geçilir."
-
-#: ../rules/base.xml.in.h:492 ../rules/sun.xml.in.h:115
-msgid "Swe"
-msgstr "Ä°sve"
-
-#: ../rules/base.xml.in.h:493
-msgid "Sweden"
-msgstr "İsveç"
-
-#: ../rules/base.xml.in.h:494
-msgid "Switzerland"
-msgstr "İsviçre"
-
-#: ../rules/base.xml.in.h:495
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:496
-msgid "Syr"
-msgstr "Sur"
-
-#: ../rules/base.xml.in.h:497
-msgid "Syria"
-msgstr "Suriye"
-
-#: ../rules/base.xml.in.h:498
-msgid "Syriac"
-msgstr "Suriye"
-
-#: ../rules/base.xml.in.h:499
-msgid "Syriac phonetic"
-msgstr "Suriye fonetik"
-
-#: ../rules/base.xml.in.h:500
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:501
-msgid "Tajikistan"
-msgstr "Tacikistan"
-
-#: ../rules/base.xml.in.h:502
-msgid "Tamil"
-msgstr "Tamil dili"
-
-#: ../rules/base.xml.in.h:503
-msgid "Tamil TAB Typewriter"
-msgstr "Tamil TAB Daktilo"
-
-#: ../rules/base.xml.in.h:504
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamil TSCII Daktilo"
-
-#: ../rules/base.xml.in.h:505
-msgid "Tamil Unicode"
-msgstr "Tamil Unicode"
-
-#: ../rules/base.xml.in.h:506
-msgid "Tatar"
-msgstr "Tatar"
-
-#: ../rules/base.xml.in.h:507
-msgid "Telugu"
-msgstr "Telugu dili"
-
-#: ../rules/base.xml.in.h:508
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:509
-msgid "Thailand"
-msgstr "Tayland"
-
-#: ../rules/base.xml.in.h:510 ../rules/sun.xml.in.h:119
-msgid "Third level choosers"
-msgstr "3. seviye seçiciler"
-
-#: ../rules/base.xml.in.h:511
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:512
-msgid "Tifinagh Alternative"
-msgstr "Tifinagh DiÄŸer"
-
-#: ../rules/base.xml.in.h:513
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Tifinagh DiÄŸer Fonetik"
-
-#: ../rules/base.xml.in.h:514
-msgid "Tifinagh Extended"
-msgstr "Tifinagh GeliÅŸkin"
-
-#: ../rules/base.xml.in.h:515
-msgid "Tifinagh Extended Phonetic"
-msgstr "Tifinagh GeliÅŸmiÅŸ Fonetik"
-
-#: ../rules/base.xml.in.h:516
-msgid "Tifinagh Phonetic"
-msgstr "Tifinagh Fonetik"
-
-#: ../rules/base.xml.in.h:517
-msgid "Tilde (~) variant"
-msgstr "Tilde (~) tuÅŸlu"
-
-#: ../rules/base.xml.in.h:518
-msgid "Tjk"
-msgstr "Tck"
-
-#: ../rules/base.xml.in.h:519
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:520
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust DoÄŸrudan EriÅŸimli Klavye"
-
-#: ../rules/base.xml.in.h:521
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Kablosuz Klasik Klavye"
-
-#: ../rules/base.xml.in.h:522 ../rules/sun.xml.in.h:120
-msgid "Tur"
-msgstr "Trk"
-
-#: ../rules/base.xml.in.h:523
-msgid "Turkey"
-msgstr "Türkiye"
-
-#: ../rules/base.xml.in.h:524
-msgid "Typewriter"
-msgstr "Daktilo"
-
-#: ../rules/base.xml.in.h:525 ../rules/sun.xml.in.h:124
-msgid "U.S. English"
-msgstr "Amerikan ingilizcesi"
-
-#: ../rules/base.xml.in.h:526
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Bosna ikil harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:527
-msgid "US keyboard with Bosnian letters"
-msgstr "Bosna harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:528
-msgid "US keyboard with Croatian digraphs"
-msgstr "Hırvat ikil harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:529
-msgid "US keyboard with Croatian letters"
-msgstr "Hırvat harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:530
-msgid "US keyboard with Lithuanian letters"
-msgstr "Litvanya harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:531
-msgid "US keyboard with Slovenian digraphs"
-msgstr "Sloven ikil harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:532
-msgid "US keyboard with Slovenian letters"
-msgstr "Sloven harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:533 ../rules/sun.xml.in.h:126
-msgid "USA"
-msgstr "ABD"
-
-#: ../rules/base.xml.in.h:534
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: ../rules/base.xml.in.h:535
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ukraine"
-msgstr "Ukrayna"
-
-#: ../rules/base.xml.in.h:537
-msgid "UnicodeExpert"
-msgstr "Unicode Uzman"
-
-#: ../rules/base.xml.in.h:538 ../rules/sun.xml.in.h:127
-msgid "United Kingdom"
-msgstr "Ä°ngiltere"
-
-#: ../rules/base.xml.in.h:539
-msgid "Urdu"
-msgstr "Urdu"
-
-#: ../rules/base.xml.in.h:540
-msgid "Use Bosnian digraphs"
-msgstr "Bosna ikil harflerini kullanır"
-
-#: ../rules/base.xml.in.h:541
-msgid "Use Croatian digraphs"
-msgstr "Hırvat ikil harflerini kullanır"
-
-#: ../rules/base.xml.in.h:542
-msgid "Use Slovenian digraphs"
-msgstr "Sloven ikil harflerini kullanır"
-
-#: ../rules/base.xml.in.h:543
-msgid "Use guillemets for quotes"
-msgstr "Tırnakların yerine açılı ayraçlar kullanılır"
-
-#: ../rules/base.xml.in.h:544
-msgid "Use keyboard LED to show alternative layout."
-msgstr "Diğer yerleşimi göstermek için klavye LED'i kullanılır."
-
-#: ../rules/base.xml.in.h:545
-msgid "Use keypad with unicode additions (arrows and math operators)"
-msgstr "Tuştakımı Unicode eklentileri ile kullanılır (ok ve aritmetik tuşları)"
-
-#: ../rules/base.xml.in.h:546
-msgid "Using space key to input non-breakable space character"
-msgstr "nobreakspace'i yazmak için boşluk tuşu kullanımı"
-
-#: ../rules/base.xml.in.h:547
-msgid "Uzb"
-msgstr "Özb"
-
-#: ../rules/base.xml.in.h:548
-msgid "Uzbekistan"
-msgstr "Özbekistan"
-
-#: ../rules/base.xml.in.h:549
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:550
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:551
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:552
-msgid "Western"
-msgstr "Batı"
-
-#: ../rules/base.xml.in.h:553
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:554
-msgid "Winkeys"
-msgstr "Win tuşları"
-
-#: ../rules/base.xml.in.h:555
-msgid "With &lt;\\|&gt; key"
-msgstr "&lt;\\|&gt; tuÅŸuyla"
-
-#: ../rules/base.xml.in.h:556
-msgid "With EuroSign on 5"
-msgstr "€ sembolü ile 5 tuşu"
-
-#: ../rules/base.xml.in.h:557
-msgid "With guillemets"
-msgstr "Açılı ayraçlarla"
-
-#: ../rules/base.xml.in.h:558
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:559
-msgid "Yoruba"
-msgstr "Yoruba"
-
-#: ../rules/base.xml.in.h:560
-msgid "Z and ZHE swapped"
-msgstr "Z ile ZHE yer deÄŸiÅŸtirir"
-
-#: ../rules/base.xml.in.h:561
-msgid "Zar"
-msgstr "Zar"
-
-#: ../rules/base.xml.in.h:562
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:563
-msgid "azerty/digits"
-msgstr "azerty/rakamlar"
-
-#: ../rules/base.xml.in.h:564
-msgid "digits"
-msgstr "rakamlar"
-
-#: ../rules/base.xml.in.h:565
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "noktalı virgül ve çift tırnak kalkar (atıl)"
-
-#: ../rules/base.xml.in.h:566
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:567 ../rules/sun.xml.in.h:132
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:568
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, galiÅŸmiÅŸ Gerisilme"
-
-#: ../rules/base.xml.in.h:569
-msgid "qwerty/digits"
-msgstr "qwerty/rakamlar"
-
-#: ../rules/base.xml.in.h:570
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/sun.xml.in.h:1
-msgid "\"Typewriter\""
-msgstr "\"Daktilo\""
-
-#: ../rules/sun.xml.in.h:17
-msgid "Acts as Shift with locking. Shift cancels Caps."
-msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu ise Caps Lock tuşunu keser."
-
-#: ../rules/sun.xml.in.h:18
-msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
-msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu Caps Lock'u kesmez"
-
-#: ../rules/sun.xml.in.h:19
-msgid "Alt+Control changes group"
-msgstr "Alt+Ctrl grubu deÄŸiÅŸtirir."
-
-#: ../rules/sun.xml.in.h:20
-msgid "Alt+Shift changes group"
-msgstr "Alt+Shift grubu deÄŸiÅŸtirir."
-
-#: ../rules/sun.xml.in.h:21
-msgid "Basic"
-msgstr "Temel"
-
-#: ../rules/sun.xml.in.h:23
-msgid "Belgian"
-msgstr "Belçikaca"
-
-#: ../rules/sun.xml.in.h:25
-msgid "Both Alt keys together change group"
-msgstr "Alt tuşları birlikte grubu değiştirir"
-
-#: ../rules/sun.xml.in.h:26
-msgid "Both Ctrl keys together change group"
-msgstr "Ctrl tuşları birlikte grubu değiştirir"
-
-#: ../rules/sun.xml.in.h:27
-msgid "Both Shift keys together change group"
-msgstr "Shift tuşları birlikte grubu değiştirir"
-
-#: ../rules/sun.xml.in.h:28
-msgid "Bulgarian"
-msgstr "Bulgarca"
-
-#: ../rules/sun.xml.in.h:30
-msgid "Canadian"
-msgstr "Kanadaca"
-
-#: ../rules/sun.xml.in.h:31
-msgid "Caps Lock is Compose"
-msgstr "CapsLock tuÅŸu karakter birleÅŸimi yapar"
-
-#: ../rules/sun.xml.in.h:32
-msgid "Caps Lock key changes group"
-msgstr "Caps Lock tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:34
-msgid "Caps_Lock LED shows alternative group"
-msgstr "Caps Lock LED'i diğer grubu gösterir"
-
-#: ../rules/sun.xml.in.h:35
-msgid "Control Key Position"
-msgstr "Ctrl tuÅŸunun yeri"
-
-#: ../rules/sun.xml.in.h:36
-msgid "Control key at bottom left"
-msgstr "Sol alttaki Ctrl tuÅŸu"
-
-#: ../rules/sun.xml.in.h:37
-msgid "Control key at left of 'A'"
-msgstr "'A'nın solundaki Ctrl Tuşu"
-
-#: ../rules/sun.xml.in.h:38
-msgid "Control+Shift changes group"
-msgstr "Ctrl+Shift tuşları grubu değiştirir"
-
-#: ../rules/sun.xml.in.h:40
-msgid "Czech"
-msgstr "Çekçe"
-
-#: ../rules/sun.xml.in.h:41
-msgid "Danish"
-msgstr "Danca"
-
-#: ../rules/sun.xml.in.h:45
-msgid "DeuCH"
-msgstr "DeuCH"
-
-#: ../rules/sun.xml.in.h:47
-msgid "Dvo"
-msgstr "Dvo"
-
-#: ../rules/sun.xml.in.h:52
-msgid "Finnish"
-msgstr "Fince"
-
-#: ../rules/sun.xml.in.h:54
-msgid "FraCH"
-msgstr "FraCH"
-
-#: ../rules/sun.xml.in.h:57
-msgid "German"
-msgstr "Almanca"
-
-#: ../rules/sun.xml.in.h:58
-msgid "Group Shift/Lock behavior"
-msgstr "Shift/Lock Grubu davranışı"
-
-#: ../rules/sun.xml.in.h:60
-msgid "Hungarian"
-msgstr "Macarca"
-
-#: ../rules/sun.xml.in.h:64
-msgid "Italian"
-msgstr "Ä°talyanca"
-
-#: ../rules/sun.xml.in.h:65
-msgid "Japanese"
-msgstr "Japonca"
-
-#: ../rules/sun.xml.in.h:67
-msgid "Left Alt key changes group"
-msgstr "Soldaki Alt tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:68
-msgid "Left Alt key switches group while pressed"
-msgstr "Soldaki Alt tuşu basılıyken diğer grup etkin olur"
-
-#: ../rules/sun.xml.in.h:69
-msgid "Left Ctrl key changes group"
-msgstr "Soldaki Ctrl tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:70
-msgid "Left Shift key changes group"
-msgstr "Soldaki Shift tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:71
-msgid "Make CapsLock an additional Control"
-msgstr "CapsLock tuÅŸunu ek bir Ctrl tuÅŸu yapar"
-
-#: ../rules/sun.xml.in.h:76
-msgid "Norwegian"
-msgstr "Norveçce"
-
-#: ../rules/sun.xml.in.h:77
-msgid "Num_Lock LED shows alternative group"
-msgstr "Num_Lock LED'i diğer grubu gösterir"
-
-#: ../rules/sun.xml.in.h:80
-msgid "Polish"
-msgstr "Polonez"
-
-#: ../rules/sun.xml.in.h:81
-msgid "Polish with Polish quotes on key \"1/!\""
-msgstr "Lehçe, \"1/!\" tuşunda Lehçe tırnaklar"
-
-#: ../rules/sun.xml.in.h:82
-msgid "Portuguese"
-msgstr "Portekizce"
-
-#: ../rules/sun.xml.in.h:83
-msgid "Press Left Alt key to choose 3rd level"
-msgstr "3. seviyeyi seçmek için soldaki Alt tuşuna basın"
-
-#: ../rules/sun.xml.in.h:84
-msgid "Press Right Alt key to choose 3rd level"
-msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın"
-
-#: ../rules/sun.xml.in.h:85
-msgid "Press Right Alt-key to choose 3rd level, Shift+Right Alt-key is Multi_Key"
-msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın, Sağdaki Alt tuşuyla birlikte Shift tuşu AltGr gibi davranır"
-
-#: ../rules/sun.xml.in.h:86
-msgid "Press Right Control to choose 3rd level"
-msgstr "3. seviyeyi seçmek için sağdaki Ctrl tuşuna basın"
-
-#: ../rules/sun.xml.in.h:87
-msgid "Press any of Alt keys to choose 3rd level"
-msgstr "3. seviyeyi seçmek için Alt tuşlarından birine basın"
-
-#: ../rules/sun.xml.in.h:89
-msgid "Right Alt key changes group"
-msgstr "SaÄŸdaki Alt tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:91
-msgid "Right Alt switches group while pressed"
-msgstr "Sağdaki Alt tuşu basılıyken diğer grup etkin olur"
-
-#: ../rules/sun.xml.in.h:92
-msgid "Right Control key works as Right Alt"
-msgstr "Sağdaki Ctrl tuşu sağdaki Alt tuşu gibi çalışır"
-
-#: ../rules/sun.xml.in.h:93
-msgid "Right Ctrl key changes group"
-msgstr "SaÄŸdaki Ctrl tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:94
-msgid "Right Shift key changes group"
-msgstr "SaÄŸdaki Shift tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:97
-msgid "Scroll Lock changes group"
-msgstr "Scroll Lock grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:98
-msgid "Scroll_Lock LED shows alternative group"
-msgstr "Scroll_Lock LED'i diğer grubu gösterir"
-
-#: ../rules/sun.xml.in.h:99
-msgid "Shift with numpad keys works as in MS Windows"
-msgstr "Sayısal tuştakımı Shift ile MS Windows'daki gibi çalışır"
-
-#: ../rules/sun.xml.in.h:100
-msgid "Shift+CapsLock changes group"
-msgstr "Shift+CapsLock tuşları grubu değiştirir"
-
-#: ../rules/sun.xml.in.h:101
-msgid "Slovak"
-msgstr "Slovakça"
-
-#: ../rules/sun.xml.in.h:102
-msgid "Spanish"
-msgstr "Ä°spanyolca"
-
-#: ../rules/sun.xml.in.h:105
-msgid "Sun Type 4"
-msgstr "Sun 4. tür"
-
-#: ../rules/sun.xml.in.h:106
-msgid "Sun Type 5"
-msgstr "Sun 5. Tür"
-
-#: ../rules/sun.xml.in.h:107
-msgid "Sun Type 5 European"
-msgstr "Sun 5. tür Avrupa"
-
-#: ../rules/sun.xml.in.h:108
-msgid "Sun Type 5 Unix"
-msgstr "Sun 5. tür, Unix"
-
-#: ../rules/sun.xml.in.h:109
-msgid "Sun Type 6"
-msgstr "Sun 6. tür"
-
-#: ../rules/sun.xml.in.h:110
-msgid "Sun Type 6 Unix"
-msgstr "Sun 6. tür, Unix"
-
-#: ../rules/sun.xml.in.h:111
-msgid "Sun Type 6 with Euro key"
-msgstr "Sun 6. Tür, € tuşlu"
-
-#: ../rules/sun.xml.in.h:114
-msgid "Swap Control and Caps Lock"
-msgstr "Ctrl ile Caps Lock yer deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:116
-msgid "Swedish"
-msgstr "İsveçce"
-
-#: ../rules/sun.xml.in.h:117
-msgid "Swiss French"
-msgstr "İsviçre Fransızcası"
-
-#: ../rules/sun.xml.in.h:118
-msgid "Swiss German"
-msgstr "İsviçre Almancası"
-
-#: ../rules/sun.xml.in.h:121
-msgid "Turkish"
-msgstr "Türkçe Q Klavye"
-
-#: ../rules/sun.xml.in.h:122
-msgid "Turkish (F)"
-msgstr "Türkçe F klavye"
-
-#: ../rules/sun.xml.in.h:123
-msgid "Turkish Alt-Q Layout"
-msgstr "Türkçe Alt-Q (yazılımcılar ve dizüstü) klavye"
-
-#: ../rules/sun.xml.in.h:125
-msgid "U.S. English w/ ISO9995-3"
-msgstr "Amerikan ingilizcesi (ISO9995-3 ile)"
-
-#: ../rules/sun.xml.in.h:128
-msgid "Use keyboard LED to show alternative group"
-msgstr "Diğer grubu göstermek içim klavye LED'i kullanılır"
-
-#: ../rules/sun.xml.in.h:129
-msgid "Uses internal capitalization. Shift cancels Caps."
-msgstr "CapsLock dahili dönüşümü kullanılır, Shift tuşu Caps Lock tuşunu keser."
-
-#: ../rules/sun.xml.in.h:130
-msgid "Uses internal capitalization. Shift doesn't cancel Caps."
-msgstr "CapsLock dahili dönüşümü kullanır. Shift tuşu Caps Lock'u kesmez."
-
-#: ../rules/sun.xml.in.h:131
-msgid "bksl"
-msgstr "bksl"
-
-#: ../rules/sun.xml.in.h:133
-msgid "type4"
-msgstr "4. tür"
+# Turkish translations for xkeyboard-config.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Nilgün Belma Bugüner <nilgun@buguner.name.tr>, 2003, ..., 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 1.0-pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-06-28 15:21+0100\n"
+"PO-Revision-Date: 2007-07-09 10:09+0300\n"
+"Last-Translator: Nilgün Belma Bugüner <nilgun@buguner.name.tr>\n"
+"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "F Klavye"
+
+#: ../rules/base.xml.in.h:2
+msgid "(Legacy) Alternative"
+msgstr "(Eski) DiÄŸer"
+
+#: ../rules/base.xml.in.h:3
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Eski) Diğer, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:4
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Eski) Diğer, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Dvorak"
+msgstr "(Kadim) Dvorak"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/104 key Compatible"
+msgstr "101/104 tuÅŸ Uyumlu"
+
+#: ../rules/base.xml.in.h:7 ../rules/sun.xml.in.h:2
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:8 ../rules/sun.xml.in.h:3
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/virgül/Ölü tuşları normal yapar"
+
+#: ../rules/base.xml.in.h:9 ../rules/sun.xml.in.h:4
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/nokta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:10 ../rules/sun.xml.in.h:5
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/nokta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:11 ../rules/sun.xml.in.h:6
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/virgül/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:13 ../rules/sun.xml.in.h:7
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/nokta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:14 ../rules/sun.xml.in.h:8
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/nokta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:15 ../rules/sun.xml.in.h:9
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:16 ../rules/sun.xml.in.h:10
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/virgül/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:17 ../rules/sun.xml.in.h:11
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/nokta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:18 ../rules/sun.xml.in.h:12
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/nokta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:19 ../rules/sun.xml.in.h:13
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:20 ../rules/sun.xml.in.h:14
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/virgül/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:21 ../rules/sun.xml.in.h:15
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/nokta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:22 ../rules/sun.xml.in.h:16
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/nokta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:23
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:24
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:26
+msgid "ACPI Standard"
+msgstr "ACPI Standardı"
+
+#: ../rules/base.xml.in.h:27
+msgid "AZERTY Tskapo"
+msgstr "AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:28
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:32
+msgid "Add the EuroSign to the 2 key."
+msgstr "2 tuşuna € sembolünü ekler"
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the EuroSign to the 5 key."
+msgstr "5 tuşuna € sembolünü ekler"
+
+#: ../rules/base.xml.in.h:34
+msgid "Add the EuroSign to the E key."
+msgstr "E tuşuna € sembolünü ekler"
+
+#: ../rules/base.xml.in.h:35
+msgid "Add the standard behavior to Menu key."
+msgstr "Menü tuşuna standart işlevini ekler."
+
+#: ../rules/base.xml.in.h:36
+msgid "Adding the EuroSign to certain keys"
+msgstr "Belli tuşlara € sembolünün eklenmesi"
+
+#: ../rules/base.xml.in.h:37
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:39
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alb"
+msgstr "Arn"
+
+#: ../rules/base.xml.in.h:42
+msgid "Albania"
+msgstr "Arnavutluk"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt and Meta are on the Alt keys."
+msgstr "Alt ve Meta, Alt tuşlarındadır."
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "Alt, sağdaki Pencere tuşu ile Süper ise Menü tuşu ile eşleştirilir."
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+CapsLock changes layout."
+msgstr "Alt+CapsLock yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Ctrl change layout."
+msgstr "Alt+CtrlyerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Shift change layout."
+msgstr "Alt+Shift yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Yazılımcı klavyesi (Q)"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Alt/Pencere tuşu davranışı"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "DiÄŸer"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "DiÄŸer DoÄŸu"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "DiÄŸer Fonetik"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international (former us_intl)"
+msgstr "Uluslararası Q klavle (nam-ı diğer us_intl)"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "Diğer, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "Diğer, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "DiÄŸer, sadece latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Andora"
+
+#: ../rules/base.xml.in.h:59
+msgid "Apostrophe (') variant"
+msgstr "Tek tırnaklı (')"
+
+#: ../rules/base.xml.in.h:60
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:61
+msgid "Apple Laptop"
+msgstr "Apple Dizüstü"
+
+#: ../rules/base.xml.in.h:62
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:63
+msgid "Arabic"
+msgstr "Arapça"
+
+#: ../rules/base.xml.in.h:64
+msgid "Arm"
+msgstr "Erm"
+
+#: ../rules/base.xml.in.h:65
+msgid "Armenia"
+msgstr "Ermenistan"
+
+#: ../rules/base.xml.in.h:66
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:67
+msgid "Azerbaijan"
+msgstr "Azerbaycan"
+
+#: ../rules/base.xml.in.h:68
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:69
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:70
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Çokluortam"
+
+#: ../rules/base.xml.in.h:71
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:72
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:73
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:74
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:75
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:76
+msgid "Ban"
+msgstr "Ban"
+
+#: ../rules/base.xml.in.h:77
+msgid "Bangladesh"
+msgstr "BangladeÅŸ"
+
+#: ../rules/base.xml.in.h:78 ../rules/sun.xml.in.h:22
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:79
+msgid "Belarus"
+msgstr "Belarus"
+
+#: ../rules/base.xml.in.h:80
+msgid "Belgium"
+msgstr "Belçika"
+
+#: ../rules/base.xml.in.h:81
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:82
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:83
+msgid "Bengali"
+msgstr "Bengalce"
+
+#: ../rules/base.xml.in.h:84
+msgid "Bengali Probhat"
+msgstr "Bengali Probhat"
+
+#: ../rules/base.xml.in.h:85
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomik, Dvorak yolu"
+
+#: ../rules/base.xml.in.h:86
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomik, Dvorak yolu, sadece latin-9"
+
+#: ../rules/base.xml.in.h:87 ../rules/sun.xml.in.h:24
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:88
+msgid "Bhu"
+msgstr "Bhu"
+
+#: ../rules/base.xml.in.h:89
+msgid "Bhutan"
+msgstr "Butan"
+
+#: ../rules/base.xml.in.h:90
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Dini Ä°branice (Tiro)"
+
+#: ../rules/base.xml.in.h:91
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:92
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bosnia and Herzegovina"
+msgstr "Bosna Hersek"
+
+#: ../rules/base.xml.in.h:94
+msgid "Both Alt keys together change layout."
+msgstr "Alt tuşları birlikte yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:95
+msgid "Both Ctrl keys together change layout."
+msgstr "Ctrl tuşları birlikte yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:96
+msgid "Both Shift keys together change layout."
+msgstr "Shift tuşları birlikte yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:97
+msgid "Both Win-keys switch layout while pressed."
+msgstr "Pencere tuşları birlikte yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:98
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:99
+msgid "Braille"
+msgstr "Üç noktalı"
+
+#: ../rules/base.xml.in.h:100
+msgid "Brazil"
+msgstr "Brezilya"
+
+#: ../rules/base.xml.in.h:101
+msgid "Brazilian ABNT2"
+msgstr "Brazilya dili ABNT2"
+
+#: ../rules/base.xml.in.h:102
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:103
+msgid "Brother Internet Keyboard"
+msgstr "Brother Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:104
+msgid "Buckwalter"
+msgstr "Bükvalter"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bulgaria"
+msgstr "Bulgaristan"
+
+#: ../rules/base.xml.in.h:106
+msgid "Cambodia"
+msgstr "Kamboçya"
+
+#: ../rules/base.xml.in.h:107 ../rules/sun.xml.in.h:29
+msgid "Can"
+msgstr "Kan"
+
+#: ../rules/base.xml.in.h:108
+msgid "Canada"
+msgstr "Kanada"
+
+#: ../rules/base.xml.in.h:109
+msgid "Caps Lock is Compose."
+msgstr "CapsLock tuÅŸu karakter birleÅŸimi yapar."
+
+#: ../rules/base.xml.in.h:110
+msgid "CapsLock LED shows alternative layout."
+msgstr "Caps Lock LED'i diğer yerleşimi gösterir."
+
+#: ../rules/base.xml.in.h:111
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
+msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu ise Caps Lock tuşunu \"bekletir\"."
+
+#: ../rules/base.xml.in.h:112
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
+msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu Caps Lock davranışını etkilemez."
+
+#: ../rules/base.xml.in.h:113
+msgid "CapsLock just locks the Shift modifier."
+msgstr "Caps Lock sadece kilitlemeli Shift tuşu gibi çalışır."
+
+#: ../rules/base.xml.in.h:114 ../rules/sun.xml.in.h:33
+msgid "CapsLock key behavior"
+msgstr "CapsLock tuşunun davranışı"
+
+#: ../rules/base.xml.in.h:115
+msgid "CapsLock key changes layout."
+msgstr "Caps Lock tuÅŸu yerleÅŸimi deÄŸiÅŸtirir"
+
+#: ../rules/base.xml.in.h:116
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "Caps Lock tuşu Shift davranışını ters çevirir; bundan alfabetik olmayan tuşlar da etkilenir."
+
+#: ../rules/base.xml.in.h:117
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "Caps Lock tuşu büyük/küçük harf geçişi yapar."
+
+#: ../rules/base.xml.in.h:118
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
+msgstr "CapsLock dahili dönüşümü kullanılır, Shift tuşu Caps Lock tuşunu \"bekletir\"."
+
+#: ../rules/base.xml.in.h:119
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
+msgstr "CapsLock dahili dönüşümü kullanır. Shift tuşu Caps Lock davranışını etkilemez."
+
+#: ../rules/base.xml.in.h:120
+msgid "Catalan variant with middle-dot L"
+msgstr "Ortası noktalı L'li Katalan yerleşimi"
+
+#: ../rules/base.xml.in.h:121
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:122
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:123
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (diğer seçenek)"
+
+#: ../rules/base.xml.in.h:124
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:125
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:126
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:127
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:128
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:129
+msgid "Chuvash"
+msgstr "Çuvaş"
+
+#: ../rules/base.xml.in.h:130
+msgid "Chuvash Latin"
+msgstr "Çuvaş Latin"
+
+#: ../rules/base.xml.in.h:131
+msgid "Classic Dvorak"
+msgstr "Klasik Dvorak"
+
+#: ../rules/base.xml.in.h:132
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:133
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Kolay EriÅŸim Klavyesi"
+
+#: ../rules/base.xml.in.h:134
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Genel AÄŸ Klavyesi (13 tuÅŸlu)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Genel AÄŸ Klavyesi (18 tuÅŸlu)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Genel AÄŸ Klavyesi (7 tuÅŸlu)"
+
+#: ../rules/base.xml.in.h:137
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Klavyesi"
+
+#: ../rules/base.xml.in.h:138
+msgid "Compose key position"
+msgstr "Karakter oluÅŸturma (compose) tuÅŸu konumu"
+
+#: ../rules/base.xml.in.h:139
+msgid "Congo, Democratic Republic of the"
+msgstr "Kongo Demokratik Cumhuriyeti"
+
+#: ../rules/base.xml.in.h:140
+msgid "Control is mapped to the Win-keys (and the usual Ctrl keys)."
+msgstr "Ctrl, Win tuşlarına eşlenir."
+
+#: ../rules/base.xml.in.h:141
+msgid "Croatia"
+msgstr "Hırvatistan"
+
+#: ../rules/base.xml.in.h:142
+msgid "Ctrl key at bottom left"
+msgstr "Sol alttaki Ctrl tuÅŸu"
+
+#: ../rules/base.xml.in.h:143
+msgid "Ctrl key at left of 'A'"
+msgstr "'A'nın solundaki Ctrl Tuşu"
+
+#: ../rules/base.xml.in.h:144
+msgid "Ctrl key position"
+msgstr "Ctrl tuÅŸunun yeri"
+
+#: ../rules/base.xml.in.h:145
+msgid "Ctrl+Shift change layout."
+msgstr "Ctrl+Shift tuşları yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:146
+msgid "Cyrillic"
+msgstr "Kril"
+
+#: ../rules/base.xml.in.h:147 ../rules/sun.xml.in.h:39
+msgid "Cze"
+msgstr "Çek"
+
+#: ../rules/base.xml.in.h:148
+msgid "Czechia"
+msgstr "Çek Cumhuriyeti"
+
+#: ../rules/base.xml.in.h:149
+msgid "DRC"
+msgstr "DRC"
+
+#: ../rules/base.xml.in.h:150
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:151 ../rules/sun.xml.in.h:42
+msgid "Dead acute"
+msgstr "Ölü acute (´)"
+
+#: ../rules/base.xml.in.h:152 ../rules/sun.xml.in.h:43
+msgid "Dead grave acute"
+msgstr "Ölü grave acute (`)"
+
+#: ../rules/base.xml.in.h:153
+msgid "Default numeric keypad keys."
+msgstr "Öntanımlı tuştakımı tuşları."
+
+#: ../rules/base.xml.in.h:154
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:155
+msgid "Dell 101-key PC"
+msgstr "Dell 101 tuÅŸlu PC"
+
+#: ../rules/base.xml.in.h:156
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dizüstü/defter Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:157
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Dizüstü/defter Precision M series"
+
+#: ../rules/base.xml.in.h:158
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude serisi Dizüstü"
+
+#: ../rules/base.xml.in.h:159
+msgid "Dell SK-8125 USB Multimedia Keybard"
+msgstr "Dell SK-8125 USB Çokluortam Klavyesi"
+
+#: ../rules/base.xml.in.h:160
+msgid "Dell SK-8135 USB Multimedia Keybard"
+msgstr "Dell SK-8135 USB Çokluortam Klavyesi"
+
+#: ../rules/base.xml.in.h:161
+msgid "Dell USB Multimedia Keybard"
+msgstr "Dell USB Çokluortam Klavyesi"
+
+#: ../rules/base.xml.in.h:162
+msgid "Denmark"
+msgstr "Danimarka"
+
+#: ../rules/base.xml.in.h:163 ../rules/sun.xml.in.h:44
+msgid "Deu"
+msgstr "Alm"
+
+#: ../rules/base.xml.in.h:164
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Kablosuz Masaüstü Klavyesi"
+
+#: ../rules/base.xml.in.h:165
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 serileri"
+
+#: ../rules/base.xml.in.h:166 ../rules/sun.xml.in.h:46
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:167 ../rules/sun.xml.in.h:48
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:168
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "Dvorak, \"1/!\" tuşunda Lehçe tırnaklar"
+
+#: ../rules/base.xml.in.h:169
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, çift tırnak tuşunda Lehçe tırnaklar"
+
+#: ../rules/base.xml.in.h:170
+msgid "Eastern"
+msgstr "DoÄŸu"
+
+#: ../rules/base.xml.in.h:171 ../rules/sun.xml.in.h:49
+msgid "Eliminate dead keys"
+msgstr "Ölü tuşları normal yapar"
+
+#: ../rules/base.xml.in.h:172
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:173
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:174
+msgid "Ergonomic"
+msgstr "Ergonomik"
+
+#: ../rules/base.xml.in.h:175 ../rules/sun.xml.in.h:50
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:176
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:177
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:178
+msgid "Estonia"
+msgstr "Estonya"
+
+#: ../rules/base.xml.in.h:179
+msgid "Eth"
+msgstr "Ety"
+
+#: ../rules/base.xml.in.h:180
+msgid "Ethiopia"
+msgstr "Etyopya"
+
+#: ../rules/base.xml.in.h:181
+msgid "Evdev-managed keyboard"
+msgstr "Evdev yönetimli klavye"
+
+#: ../rules/base.xml.in.h:182
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:183
+msgid "Ewe"
+msgstr "Eve"
+
+#: ../rules/base.xml.in.h:184
+msgid "Extended"
+msgstr "GeliÅŸmiÅŸ"
+
+#: ../rules/base.xml.in.h:185
+msgid "Extended Backslash"
+msgstr "GeliÅŸmiÅŸ Gerisilme"
+
+#: ../rules/base.xml.in.h:186
+msgid "F-letter (F) variant"
+msgstr "F harfli (F) türü"
+
+#: ../rules/base.xml.in.h:187
+msgid "Fao"
+msgstr "Fao"
+
+#: ../rules/base.xml.in.h:188
+msgid "Faroe Islands"
+msgstr "Faroe Adaları"
+
+#: ../rules/base.xml.in.h:189 ../rules/sun.xml.in.h:51
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:190
+msgid "Finland"
+msgstr "Finlandiya"
+
+#: ../rules/base.xml.in.h:191
+msgid "Force standard legacy keypad"
+msgstr "Standart kadim tuştakımını etkin kılar"
+
+#: ../rules/base.xml.in.h:192 ../rules/sun.xml.in.h:53
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:193
+msgid "France"
+msgstr "Fransa"
+
+#: ../rules/base.xml.in.h:194 ../rules/sun.xml.in.h:55
+msgid "French"
+msgstr "Fransızca"
+
+#: ../rules/base.xml.in.h:195
+msgid "French (Macintosh)"
+msgstr "Fransız (Makintoş)"
+
+#: ../rules/base.xml.in.h:196 ../rules/sun.xml.in.h:56
+msgid "French (legacy)"
+msgstr "Fransızca (eski)"
+
+#: ../rules/base.xml.in.h:197
+msgid "French Dvorak"
+msgstr "Fransızca Dvorak"
+
+#: ../rules/base.xml.in.h:198
+msgid "French, Sun dead keys"
+msgstr "Fransızca, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:199
+msgid "French, eliminate dead keys"
+msgstr "Fransızca, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:200
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:201
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:202
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:203
+msgid "Generic 101-key PC"
+msgstr "Soysal 101 tuÅŸlu PC"
+
+#: ../rules/base.xml.in.h:204
+msgid "Generic 102-key (Intl) PC"
+msgstr "Soysal 102 tuşlu (Uluslararası) PC"
+
+#: ../rules/base.xml.in.h:205
+msgid "Generic 104-key PC"
+msgstr "Soysal 104 tuÅŸlu PC"
+
+#: ../rules/base.xml.in.h:206
+msgid "Generic 105-key (Intl) PC"
+msgstr "Soysal 105 tuşlu (uluslararası) PC"
+
+#: ../rules/base.xml.in.h:207
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:208
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:209
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:210
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:211
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:212
+msgid "Georgia"
+msgstr "Gürcistan"
+
+#: ../rules/base.xml.in.h:213
+msgid "German (Macintosh)"
+msgstr "Alman (MakintoÅŸ)"
+
+#: ../rules/base.xml.in.h:214
+msgid "German, Sun dead keys"
+msgstr "Almanca, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:215
+msgid "German, eliminate dead keys"
+msgstr "Almanca, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:216
+msgid "Germany"
+msgstr "Almanya"
+
+#: ../rules/base.xml.in.h:217
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:218
+msgid "Ghana"
+msgstr "Gana"
+
+#: ../rules/base.xml.in.h:219
+msgid "Gre"
+msgstr "Gre"
+
+#: ../rules/base.xml.in.h:220
+msgid "Greece"
+msgstr "Yunanistan"
+
+#: ../rules/base.xml.in.h:221
+msgid "Gujarati"
+msgstr "Batı Hint dili"
+
+#: ../rules/base.xml.in.h:222
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:223
+msgid "Gyration"
+msgstr "Çekimsel"
+
+#: ../rules/base.xml.in.h:224
+msgid "Hausa"
+msgstr "Havza"
+
+#: ../rules/base.xml.in.h:225
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:226
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:227
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:228
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:229
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:230
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:231
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:232
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:233
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Çokluortam Klavyesi"
+
+#: ../rules/base.xml.in.h:234
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:235
+msgid "Hindi Bolnagri"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:236
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:237
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:238 ../rules/sun.xml.in.h:59
+msgid "Hun"
+msgstr "Mcr"
+
+#: ../rules/base.xml.in.h:239
+msgid "Hungary"
+msgstr "Macaristan"
+
+#: ../rules/base.xml.in.h:240
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper, Pencere tuşlarına eşlenir."
+
+#: ../rules/base.xml.in.h:241
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:242
+msgid "IBM Rapid Access"
+msgstr "IBM Hızlı Erişim"
+
+#: ../rules/base.xml.in.h:243
+msgid "IBM Rapid Access II"
+msgstr "IBM Hızlı Erişim II"
+
+#: ../rules/base.xml.in.h:244
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Hızlı Erişim II (diğer seçenek)"
+
+#: ../rules/base.xml.in.h:245
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:246
+msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#: ../rules/base.xml.in.h:247 ../rules/sun.xml.in.h:61
+msgid "ISO Alternate"
+msgstr "ISO diÄŸer"
+
+#: ../rules/base.xml.in.h:248
+msgid "Iceland"
+msgstr "Ä°zlanda"
+
+#: ../rules/base.xml.in.h:249
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:250
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:251
+msgid "India"
+msgstr "Hindistan"
+
+#: ../rules/base.xml.in.h:252 ../rules/sun.xml.in.h:62
+msgid "International (with dead keys)"
+msgstr "Uluslararası (ölü tuşlarla)"
+
+#: ../rules/base.xml.in.h:253
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:254
+msgid "Iran"
+msgstr "Ä°ran"
+
+#: ../rules/base.xml.in.h:255
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:256
+msgid "Ireland"
+msgstr "Ä°rlanda"
+
+#: ../rules/base.xml.in.h:257
+msgid "Irl"
+msgstr "Ä°rl"
+
+#: ../rules/base.xml.in.h:258
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:259
+msgid "Irq"
+msgstr "Irk"
+
+#: ../rules/base.xml.in.h:260
+msgid "Isl"
+msgstr "Izl"
+
+#: ../rules/base.xml.in.h:261
+msgid "Isr"
+msgstr "Ä°br"
+
+#: ../rules/base.xml.in.h:262
+msgid "Israel"
+msgstr "Ä°srail"
+
+#: ../rules/base.xml.in.h:263 ../rules/sun.xml.in.h:63
+msgid "Ita"
+msgstr "Ä°ta"
+
+#: ../rules/base.xml.in.h:264
+msgid "Italy"
+msgstr "Ä°talya"
+
+#: ../rules/base.xml.in.h:265
+msgid "Japan"
+msgstr "Japonya"
+
+#: ../rules/base.xml.in.h:266
+msgid "Japan (PC-98xx Series)"
+msgstr "Japon (PC-98xx Series)"
+
+#: ../rules/base.xml.in.h:267
+msgid "Japanese 106-key"
+msgstr "Japonca 106 tuÅŸlu"
+
+#: ../rules/base.xml.in.h:268
+msgid "Japanese keyboard options"
+msgstr "Japonca klavye seçenekleri"
+
+#: ../rules/base.xml.in.h:269 ../rules/sun.xml.in.h:66
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:270
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:271
+msgid "Kana Lock key is locking"
+msgstr "Kana Lock tuÅŸu kilitler"
+
+#: ../rules/base.xml.in.h:272
+msgid "Kannada"
+msgstr "Güney Hint dili"
+
+#: ../rules/base.xml.in.h:273
+msgid "Kashubian"
+msgstr "Kaşubyalı"
+
+#: ../rules/base.xml.in.h:274
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:275
+msgid "Kazakh with Russian"
+msgstr "Kazak (rus)"
+
+#: ../rules/base.xml.in.h:276
+msgid "Kazakhstan"
+msgstr "Kazakistan"
+
+#: ../rules/base.xml.in.h:277
+msgid "Keypad"
+msgstr "Tuştakımı"
+
+#: ../rules/base.xml.in.h:278
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:279
+msgid "Khm"
+msgstr "Kım"
+
+#: ../rules/base.xml.in.h:280
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:281
+msgid "Korea, Republic of"
+msgstr "Kore Cumhuriyeti"
+
+#: ../rules/base.xml.in.h:282
+msgid "Korean 106-key"
+msgstr "Korece 106 tuÅŸlu"
+
+#: ../rules/base.xml.in.h:283
+msgid "Kotoistus"
+msgstr "Kotüstus"
+
+#: ../rules/base.xml.in.h:284
+msgid "Kurdish, (F)"
+msgstr "Kürtçe (Türkçe F klavye)"
+
+#: ../rules/base.xml.in.h:285
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kürtçe (Arapça-Latin)"
+
+#: ../rules/base.xml.in.h:286
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kürtçe (Türkçe Alt-Q klavye)"
+
+#: ../rules/base.xml.in.h:287
+msgid "Kurdish, Latin Q"
+msgstr "Kürtçe (Türkçe Q klavye)"
+
+#: ../rules/base.xml.in.h:288
+msgid "Kyr"
+msgstr "Kır"
+
+#: ../rules/base.xml.in.h:289
+msgid "Kyrgyzstan"
+msgstr "Kırgızistan"
+
+#: ../rules/base.xml.in.h:290
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:291
+msgid "LCtrl+LShift change layout."
+msgstr "Ctrl+Shift tuşları yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:292
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:293
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:294
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Dizüstü/defter Compaq (örn. Armada) Dizüstü Klavyesi"
+
+#: ../rules/base.xml.in.h:295
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Dizüstü/defter Compaq (örn. Presario) Genel Ağ Klavyesi"
+
+#: ../rules/base.xml.in.h:296
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Dizüstü/defter eMachines m68xx"
+
+#: ../rules/base.xml.in.h:297
+msgid "Latin"
+msgstr "Latin"
+
+#: ../rules/base.xml.in.h:298
+msgid "Latin American"
+msgstr "Latin Amerikanca"
+
+#: ../rules/base.xml.in.h:299
+msgid "Latin Unicode"
+msgstr "Latin Unicode"
+
+#: ../rules/base.xml.in.h:300
+msgid "Latin Unicode qwerty"
+msgstr "Latin Unicode qwerty"
+
+#: ../rules/base.xml.in.h:301
+msgid "Latin qwerty"
+msgstr "Latin qwerty"
+
+#: ../rules/base.xml.in.h:302
+msgid "Latin with guillemets"
+msgstr "Açılı ayraçlarla Latin"
+
+#: ../rules/base.xml.in.h:303
+msgid "Latvia"
+msgstr "Letonya"
+
+#: ../rules/base.xml.in.h:304
+msgid "Layout switching"
+msgstr "YerleÅŸim deÄŸiÅŸtirme "
+
+#: ../rules/base.xml.in.h:305
+msgid "Left Alt is swapped with left Win-key."
+msgstr "Soydaki Alt tuÅŸu ile soldaki Pencere tuÅŸu yerdeÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:306
+msgid "Left Alt key changes layout."
+msgstr "Soldaki Alt tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:307
+msgid "Left Alt key switches layout while pressed."
+msgstr "Soldaki Alt tuşu basılıyken diğer yerleşimi etkin olur."
+
+#: ../rules/base.xml.in.h:308
+msgid "Left Ctrl key changes layout."
+msgstr "Soldaki Ctrl tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:309
+msgid "Left Shift key changes layout."
+msgstr "Soldaki Shift tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:310
+msgid "Left Win-key changes layout."
+msgstr "Soldaki Pencere tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:311
+msgid "Left Win-key is Compose."
+msgstr "Soldaki Pencere tuÅŸu karakter birleÅŸimi yapar."
+
+#: ../rules/base.xml.in.h:312
+msgid "Left Win-key switches layout while pressed."
+msgstr "Soldaki Win tuşu basılıyken diğer yerleşim etkin olur."
+
+#: ../rules/base.xml.in.h:313
+msgid "Left hand"
+msgstr "Solak"
+
+#: ../rules/base.xml.in.h:314
+msgid "Left handed Dvorak"
+msgstr "Solak Dvorak"
+
+#: ../rules/base.xml.in.h:315
+msgid "Lithuania"
+msgstr "Litvanya"
+
+#: ../rules/base.xml.in.h:316
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:317
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Kablosuz Masaüstü"
+
+#: ../rules/base.xml.in.h:318
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Kablosuz Masaüstü LX-300"
+
+#: ../rules/base.xml.in.h:319
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Kablosuz Masaüstü Tarayıcı"
+
+#: ../rules/base.xml.in.h:320
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Kablosuz Masaüstü Optik"
+
+#: ../rules/base.xml.in.h:321
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Kablosuz Masaüstü Pro"
+
+#: ../rules/base.xml.in.h:322
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Kablosuz Masaüstü Pro (diğer seçenek)"
+
+#: ../rules/base.xml.in.h:323
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Kablosuz Masaüstü Pro (diğer 2. seçenek)"
+
+#: ../rules/base.xml.in.h:324
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Kablosuz Masaüstü iTouch"
+
+#: ../rules/base.xml.in.h:325
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Kablosuz Özgür/Masaüstü Tarayıcı"
+
+#: ../rules/base.xml.in.h:326
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15, G15daemon üzerinden ek tuşlu"
+
+#: ../rules/base.xml.in.h:327
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:328
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Genel Ağ Tarayıcı Klavyesi"
+
+#: ../rules/base.xml.in.h:329
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:330
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech Access Klavye"
+
+#: ../rules/base.xml.in.h:331
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:332
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Kablosuz Klavyesi (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:333
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Genel Ağ Tarayıcı Klavyesi SE"
+
+#: ../rules/base.xml.in.h:334
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Genel Ağ Tarayıcı Klavyesi SE (USB)"
+
+#: ../rules/base.xml.in.h:335
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:336
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:337
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:338
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:339
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Uluslararası)"
+
+#: ../rules/base.xml.in.h:340
+msgid "Macedonia"
+msgstr "Makedonya"
+
+#: ../rules/base.xml.in.h:341
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:342
+msgid "Macintosh Old"
+msgstr "Eski Macintosh"
+
+#: ../rules/base.xml.in.h:343
+msgid "Macintosh, Sun dead keys"
+msgstr "Makintoş, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:344
+msgid "Macintosh, eliminate dead keys"
+msgstr "Makintoş, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:345
+msgid "Make CapsLock an additional Ctrl."
+msgstr "CapsLock tuÅŸunu ek bir Ctrl tuÅŸu yapar."
+
+#: ../rules/base.xml.in.h:346
+msgid "Mal"
+msgstr "Mal"
+
+#: ../rules/base.xml.in.h:347
+msgid "Malayalam"
+msgstr "Malayalam dili"
+
+#: ../rules/base.xml.in.h:348
+msgid "Maldives"
+msgstr "Maldivler"
+
+#: ../rules/base.xml.in.h:349
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:350
+msgid "Maltese keyboard with US layout"
+msgstr "Ameriken yerleşimli Maltız klavyesi"
+
+#: ../rules/base.xml.in.h:351
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:352
+msgid "Maori"
+msgstr "Mayorka"
+
+#: ../rules/base.xml.in.h:353
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:354
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ EriÅŸim Klavyesi"
+
+#: ../rules/base.xml.in.h:355
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:356
+msgid "Menu is Compose."
+msgstr "Menü tuşu karakter birleşimi yapar."
+
+#: ../rules/base.xml.in.h:357
+msgid "Menu key changes layout."
+msgstr "Menü tuşu yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:358
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta, Win tuşları ile eşleştirilir."
+
+#: ../rules/base.xml.in.h:359
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta, soldaki Win tuÅŸu ile eÅŸleÅŸtirilir."
+
+#: ../rules/base.xml.in.h:360
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:361
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Genel Ağ Klavyesi Pro, İsveçce"
+
+#: ../rules/base.xml.in.h:362
+msgid "Microsoft Natural"
+msgstr "Microsoft Basit"
+
+#: ../rules/base.xml.in.h:363
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Basit Klavye Pro / Microsoft Genel AÄŸ Klavyesi Pro"
+
+#: ../rules/base.xml.in.h:364
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Basit Klavye Pro OEM"
+
+#: ../rules/base.xml.in.h:365
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:366
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Ofis Klavyesi"
+
+#: ../rules/base.xml.in.h:367
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:368 ../rules/sun.xml.in.h:72
+msgid "Miscellaneous compatibility options"
+msgstr "Çeşitli uyumluluk seçenekleri"
+
+#: ../rules/base.xml.in.h:369
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:370
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:371
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:372
+msgid "Mng"
+msgstr "MoÄŸ"
+
+#: ../rules/base.xml.in.h:373
+msgid "Mongolia"
+msgstr "MoÄŸolistan"
+
+#: ../rules/base.xml.in.h:374
+msgid "Morocco"
+msgstr "Fas"
+
+#: ../rules/base.xml.in.h:375 ../rules/sun.xml.in.h:73
+msgid "Multilingual"
+msgstr "Çokdilli"
+
+#: ../rules/base.xml.in.h:376
+msgid "Multilingual, first part"
+msgstr "Çokdilli, ilk bölüm"
+
+#: ../rules/base.xml.in.h:377 ../rules/sun.xml.in.h:74
+msgid "Multilingual, second part"
+msgstr "Çokdilli, ikinci bölüm"
+
+#: ../rules/base.xml.in.h:378
+msgid "Myanmar"
+msgstr "Miyanmar"
+
+#: ../rules/base.xml.in.h:379
+msgid "NICOLA-F style Backspace"
+msgstr "NICOLA-F tarzı Gerisilme"
+
+#: ../rules/base.xml.in.h:380
+msgid "Neostyle"
+msgstr "Yenitarz"
+
+#: ../rules/base.xml.in.h:381
+msgid "Nep"
+msgstr "Nep"
+
+#: ../rules/base.xml.in.h:382
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:383
+msgid "Netherlands"
+msgstr "Hollanda"
+
+#: ../rules/base.xml.in.h:384
+msgid "Nig"
+msgstr "Nij"
+
+#: ../rules/base.xml.in.h:385
+msgid "Nigeria"
+msgstr "Nijerya"
+
+#: ../rules/base.xml.in.h:386
+msgid "Nld"
+msgstr "Hol"
+
+#: ../rules/base.xml.in.h:387 ../rules/sun.xml.in.h:75
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:388
+msgid "Northern Saami"
+msgstr "Kuzey Sami"
+
+#: ../rules/base.xml.in.h:389
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Kuzey Sami, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:390
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:391
+msgid "Norway"
+msgstr "Norveç"
+
+#: ../rules/base.xml.in.h:392
+msgid "NumLock LED shows alternative layout."
+msgstr "Num_Lock LED'i diğer yerleşimi gösterir."
+
+#: ../rules/base.xml.in.h:393
+msgid "Numeric keypad keys work as with Mac."
+msgstr "Tuştakımı Mac gibi çalışır."
+
+#: ../rules/base.xml.in.h:394
+msgid "Numeric keypad layout selection"
+msgstr "Sayısal tuştakımı yerleşimi seçimi"
+
+#: ../rules/base.xml.in.h:395
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:396
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:397
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:398
+msgid "Oriya"
+msgstr "Orissa dili"
+
+#: ../rules/base.xml.in.h:399
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:400
+msgid "Ossetian"
+msgstr "Osetya"
+
+#: ../rules/base.xml.in.h:401
+msgid "Ossetian, Winkeys"
+msgstr "Osetya, Pencere tuşları"
+
+#: ../rules/base.xml.in.h:402
+msgid "PC-98xx Series"
+msgstr "PC-98xx Serisi"
+
+#: ../rules/base.xml.in.h:403
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:404
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: ../rules/base.xml.in.h:405
+msgid "Pashto"
+msgstr "PaÅŸto"
+
+#: ../rules/base.xml.in.h:406
+msgid "Pattachote"
+msgstr "Pataküte"
+
+#: ../rules/base.xml.in.h:407 ../rules/sun.xml.in.h:78
+msgid "Phonetic"
+msgstr "Fonetik"
+
+#: ../rules/base.xml.in.h:408 ../rules/sun.xml.in.h:79
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:409
+msgid "Poland"
+msgstr "Polonya"
+
+#: ../rules/base.xml.in.h:410
+msgid "Polytonic"
+msgstr "Politonik"
+
+#: ../rules/base.xml.in.h:411
+msgid "Portugal"
+msgstr "Portekiz"
+
+#: ../rules/base.xml.in.h:412
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "3. seviyeyi seçmek için soldaki Alt tuşuna basın."
+
+#: ../rules/base.xml.in.h:413
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "3. seviyeyi seçmek için soldaki Win tuşuna basın."
+
+#: ../rules/base.xml.in.h:414
+msgid "Press Menu key to choose 3rd level."
+msgstr "3. seviyeyi seçmek için Menü tuşuna basın."
+
+#: ../rules/base.xml.in.h:415
+msgid "Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
+msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın, Sağdaki Alt tuşuyla birlikte Shift tuşu AltGr gibi davranır."
+
+#: ../rules/base.xml.in.h:416
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın."
+
+#: ../rules/base.xml.in.h:417
+msgid "Press Right Ctrl to choose 3rd level."
+msgstr "3. seviyeyi seçmek için sağdaki Ctrl tuşuna basın."
+
+#: ../rules/base.xml.in.h:418
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "3. seviyeyi seçmek için sağdaki Win tuşuna basın."
+
+#: ../rules/base.xml.in.h:419
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "3. seviyeyi seçmek için Alt tuşlarından birine basın."
+
+#: ../rules/base.xml.in.h:420
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "3. seviyeyi seçmek için Win tuşlarından birine basın."
+
+#: ../rules/base.xml.in.h:421
+msgid "Pro"
+msgstr "Pro"
+
+#: ../rules/base.xml.in.h:422
+msgid "Pro Keypad"
+msgstr "Pro Klavye"
+
+#: ../rules/base.xml.in.h:423
+msgid "Probhat"
+msgstr "Probat"
+
+#: ../rules/base.xml.in.h:424
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:425 ../rules/sun.xml.in.h:88
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:426
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:427
+msgid "R-Alt switches layout while pressed."
+msgstr "Sağdaki Alt tuşu basılıyken diğer yerleşim etkin olur."
+
+#: ../rules/base.xml.in.h:428
+msgid "Right Alt is Compose."
+msgstr "SaÄŸdaki Alt tuÅŸu karakter birleÅŸimi yapar."
+
+#: ../rules/base.xml.in.h:429
+msgid "Right Alt key changes layout."
+msgstr "SaÄŸdaki Alt tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:430 ../rules/sun.xml.in.h:90
+msgid "Right Alt key never chooses 3rd level."
+msgstr "Sağdaki Alt tuşu 3. seviyeyi asla seçmez."
+
+#: ../rules/base.xml.in.h:431
+msgid "Right Ctrl is Compose."
+msgstr "SaÄŸdaki Ctrl tuÅŸu karakter birleÅŸimi yapar."
+
+#: ../rules/base.xml.in.h:432
+msgid "Right Ctrl key changes layout."
+msgstr "SaÄŸdaki Ctrl tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:433
+msgid "Right Ctrl key switches layout while pressed."
+msgstr "Sağdaki Ctrl tuşu basılıyken diğer yerleşim etkin olur."
+
+#: ../rules/base.xml.in.h:434
+msgid "Right Ctrl key works as Right Alt."
+msgstr "Sağdaki Ctrl tuşu sağdaki Alt tuşu gibi çalışır."
+
+#: ../rules/base.xml.in.h:435
+msgid "Right Shift key changes layout."
+msgstr "SaÄŸdaki Shift tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:436
+msgid "Right Win-key changes layout."
+msgstr "SaÄŸdaki Win tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:437
+msgid "Right Win-key is Compose."
+msgstr "SaÄŸdaki Win tuÅŸu karakter birleÅŸimi yapar."
+
+#: ../rules/base.xml.in.h:438
+msgid "Right Win-key switches layout while pressed."
+msgstr "Sağdaki Win tuşu basılıyken diğer yerleşim etkin olur."
+
+#: ../rules/base.xml.in.h:439
+msgid "Right hand"
+msgstr "SaÄŸ el"
+
+#: ../rules/base.xml.in.h:440
+msgid "Right handed Dvorak"
+msgstr "SaÄŸ elle Dvorak"
+
+#: ../rules/base.xml.in.h:441
+msgid "Romania"
+msgstr "Romenya"
+
+#: ../rules/base.xml.in.h:442
+msgid "Romanian keyboard with German letters"
+msgstr "Alman harfleriyle Romanya klavyesi"
+
+#: ../rules/base.xml.in.h:443
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Alman harfleriyle Romanya klavyesi, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:444
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:445 ../rules/sun.xml.in.h:95
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:446
+msgid "Russia"
+msgstr "Rusya"
+
+#: ../rules/base.xml.in.h:447 ../rules/sun.xml.in.h:96
+msgid "Russian"
+msgstr "Rusça"
+
+#: ../rules/base.xml.in.h:448
+msgid "Russian phonetic"
+msgstr "Rusça fonetik"
+
+#: ../rules/base.xml.in.h:449
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Rusça fonetik, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:450
+msgid "Russian with Kazakh"
+msgstr "Rusça (kazak)"
+
+#: ../rules/base.xml.in.h:451
+msgid "SCG"
+msgstr "SCG"
+
+#: ../rules/base.xml.in.h:452
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Çokluortam Kablosuz Klavyesi"
+
+#: ../rules/base.xml.in.h:453
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:454
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:455
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:456
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:457
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomik 2500"
+
+#: ../rules/base.xml.in.h:458
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:459
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:460
+msgid "ScrollLock LED shows alternative layout."
+msgstr "Scroll_Lock LED'i diğer yerleşimi gösterir."
+
+#: ../rules/base.xml.in.h:461
+msgid "Serbia and Montenegro"
+msgstr "Sırbistan ve Karadağ"
+
+#: ../rules/base.xml.in.h:462
+msgid "Shift with numeric keypad keys works as in MS Windows."
+msgstr "Sayısal tuştakımı Shift ile MS Windows'daki gibi çalışır."
+
+#: ../rules/base.xml.in.h:463
+msgid "Shift+CapsLock changes layout."
+msgstr "Shift+CapsLock tuşları yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:464
+msgid "Slovakia"
+msgstr "Slovakya"
+
+#: ../rules/base.xml.in.h:465
+msgid "Slovenia"
+msgstr "Slovenya"
+
+#: ../rules/base.xml.in.h:466
+msgid "South Africa"
+msgstr "Güney Afrika"
+
+#: ../rules/base.xml.in.h:467
+msgid "Southern Uzbek"
+msgstr "Güney Özbekistan"
+
+#: ../rules/base.xml.in.h:468
+msgid "Space key outputs non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar, altıncı seviyede incesini basar"
+
+#: ../rules/base.xml.in.h:469
+msgid "Space key outputs non-breakable space character at fourth level."
+msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar."
+
+#: ../rules/base.xml.in.h:470
+msgid "Space key outputs non-breakable space character at second level."
+msgstr "Boşluk tuşu nobreakspace'i ikinci seviyede çıktılar."
+
+#: ../rules/base.xml.in.h:471
+msgid "Space key outputs non-breakable space character at third level, nothing at fourth level."
+msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar, üçüncü işlevsizdir."
+
+#: ../rules/base.xml.in.h:472
+msgid "Space key outputs non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Boşluk tuşu üçüncü seviyede nobreakspace basar, dördüncü seviyede incesini basar"
+
+#: ../rules/base.xml.in.h:473
+msgid "Space key outputs non-breakable space character at third level."
+msgstr "Boşluk tuşu nobreakspace'i üçüncü seviyede çıktılar."
+
+#: ../rules/base.xml.in.h:474
+msgid "Space key outputs usual space at any level."
+msgstr "BoÅŸluk tuÅŸu her seviyede boÅŸluk basar (nobreakspace basmaz)."
+
+#: ../rules/base.xml.in.h:475
+msgid "Spain"
+msgstr "Ä°spanya"
+
+#: ../rules/base.xml.in.h:476 ../rules/sun.xml.in.h:103
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Bir sunucuda elde edilen özel tuşlar (Ctrl+Alt+&lt;tuş&gt;)"
+
+#: ../rules/base.xml.in.h:477
+msgid "SrL"
+msgstr "SrL"
+
+#: ../rules/base.xml.in.h:478
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:479 ../rules/sun.xml.in.h:104
+msgid "Standard"
+msgstr "Standart"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:481
+msgid "Standard RSTU"
+msgstr "Standart RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:483
+msgid "Standard RSTU on Russian layout"
+msgstr "Rusça yerleşimde standart RSTU"
+
+#: ../rules/base.xml.in.h:484 ../rules/sun.xml.in.h:112
+msgid "Sun dead keys"
+msgstr "Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:485
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:486
+msgid "Super is mapped to the Win-keys."
+msgstr "Super, Pencere tuşlarına eşlenir."
+
+#: ../rules/base.xml.in.h:487
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:488 ../rules/sun.xml.in.h:113
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:489
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:490
+msgid "Swap Ctrl and CapsLock."
+msgstr "Ctrl ile Caps Lock yer deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:491
+msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+msgstr "Makintoş klavyeler çekirdek tarafından algılanamadığında iki seviyeli tuş kodlarına geçilir."
+
+#: ../rules/base.xml.in.h:492 ../rules/sun.xml.in.h:115
+msgid "Swe"
+msgstr "Ä°sve"
+
+#: ../rules/base.xml.in.h:493
+msgid "Sweden"
+msgstr "İsveç"
+
+#: ../rules/base.xml.in.h:494
+msgid "Switzerland"
+msgstr "İsviçre"
+
+#: ../rules/base.xml.in.h:495
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:496
+msgid "Syr"
+msgstr "Sur"
+
+#: ../rules/base.xml.in.h:497
+msgid "Syria"
+msgstr "Suriye"
+
+#: ../rules/base.xml.in.h:498
+msgid "Syriac"
+msgstr "Suriye"
+
+#: ../rules/base.xml.in.h:499
+msgid "Syriac phonetic"
+msgstr "Suriye fonetik"
+
+#: ../rules/base.xml.in.h:500
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:501
+msgid "Tajikistan"
+msgstr "Tacikistan"
+
+#: ../rules/base.xml.in.h:502
+msgid "Tamil"
+msgstr "Tamil dili"
+
+#: ../rules/base.xml.in.h:503
+msgid "Tamil TAB Typewriter"
+msgstr "Tamil TAB Daktilo"
+
+#: ../rules/base.xml.in.h:504
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamil TSCII Daktilo"
+
+#: ../rules/base.xml.in.h:505
+msgid "Tamil Unicode"
+msgstr "Tamil Unicode"
+
+#: ../rules/base.xml.in.h:506
+msgid "Tatar"
+msgstr "Tatar"
+
+#: ../rules/base.xml.in.h:507
+msgid "Telugu"
+msgstr "Telugu dili"
+
+#: ../rules/base.xml.in.h:508
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:509
+msgid "Thailand"
+msgstr "Tayland"
+
+#: ../rules/base.xml.in.h:510 ../rules/sun.xml.in.h:119
+msgid "Third level choosers"
+msgstr "3. seviye seçiciler"
+
+#: ../rules/base.xml.in.h:511
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:512
+msgid "Tifinagh Alternative"
+msgstr "Tifinagh DiÄŸer"
+
+#: ../rules/base.xml.in.h:513
+msgid "Tifinagh Alternative Phonetic"
+msgstr "Tifinagh DiÄŸer Fonetik"
+
+#: ../rules/base.xml.in.h:514
+msgid "Tifinagh Extended"
+msgstr "Tifinagh GeliÅŸkin"
+
+#: ../rules/base.xml.in.h:515
+msgid "Tifinagh Extended Phonetic"
+msgstr "Tifinagh GeliÅŸmiÅŸ Fonetik"
+
+#: ../rules/base.xml.in.h:516
+msgid "Tifinagh Phonetic"
+msgstr "Tifinagh Fonetik"
+
+#: ../rules/base.xml.in.h:517
+msgid "Tilde (~) variant"
+msgstr "Tilde (~) tuÅŸlu"
+
+#: ../rules/base.xml.in.h:518
+msgid "Tjk"
+msgstr "Tck"
+
+#: ../rules/base.xml.in.h:519
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:520
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust DoÄŸrudan EriÅŸimli Klavye"
+
+#: ../rules/base.xml.in.h:521
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Kablosuz Klasik Klavye"
+
+#: ../rules/base.xml.in.h:522 ../rules/sun.xml.in.h:120
+msgid "Tur"
+msgstr "Trk"
+
+#: ../rules/base.xml.in.h:523
+msgid "Turkey"
+msgstr "Türkiye"
+
+#: ../rules/base.xml.in.h:524
+msgid "Typewriter"
+msgstr "Daktilo"
+
+#: ../rules/base.xml.in.h:525 ../rules/sun.xml.in.h:124
+msgid "U.S. English"
+msgstr "Amerikan ingilizcesi"
+
+#: ../rules/base.xml.in.h:526
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Bosna ikil harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:527
+msgid "US keyboard with Bosnian letters"
+msgstr "Bosna harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:528
+msgid "US keyboard with Croatian digraphs"
+msgstr "Hırvat ikil harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:529
+msgid "US keyboard with Croatian letters"
+msgstr "Hırvat harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:530
+msgid "US keyboard with Lithuanian letters"
+msgstr "Litvanya harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:531
+msgid "US keyboard with Slovenian digraphs"
+msgstr "Sloven ikil harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:532
+msgid "US keyboard with Slovenian letters"
+msgstr "Sloven harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:533 ../rules/sun.xml.in.h:126
+msgid "USA"
+msgstr "ABD"
+
+#: ../rules/base.xml.in.h:534
+msgid "Udmurt"
+msgstr "Udmurt"
+
+#: ../rules/base.xml.in.h:535
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:536
+msgid "Ukraine"
+msgstr "Ukrayna"
+
+#: ../rules/base.xml.in.h:537
+msgid "UnicodeExpert"
+msgstr "Unicode Uzman"
+
+#: ../rules/base.xml.in.h:538 ../rules/sun.xml.in.h:127
+msgid "United Kingdom"
+msgstr "Ä°ngiltere"
+
+#: ../rules/base.xml.in.h:539
+msgid "Urdu"
+msgstr "Urdu"
+
+#: ../rules/base.xml.in.h:540
+msgid "Use Bosnian digraphs"
+msgstr "Bosna ikil harflerini kullanır"
+
+#: ../rules/base.xml.in.h:541
+msgid "Use Croatian digraphs"
+msgstr "Hırvat ikil harflerini kullanır"
+
+#: ../rules/base.xml.in.h:542
+msgid "Use Slovenian digraphs"
+msgstr "Sloven ikil harflerini kullanır"
+
+#: ../rules/base.xml.in.h:543
+msgid "Use guillemets for quotes"
+msgstr "Tırnakların yerine açılı ayraçlar kullanılır"
+
+#: ../rules/base.xml.in.h:544
+msgid "Use keyboard LED to show alternative layout."
+msgstr "Diğer yerleşimi göstermek için klavye LED'i kullanılır."
+
+#: ../rules/base.xml.in.h:545
+msgid "Use keypad with unicode additions (arrows and math operators)"
+msgstr "Tuştakımı Unicode eklentileri ile kullanılır (ok ve aritmetik tuşları)"
+
+#: ../rules/base.xml.in.h:546
+msgid "Using space key to input non-breakable space character"
+msgstr "nobreakspace'i yazmak için boşluk tuşu kullanımı"
+
+#: ../rules/base.xml.in.h:547
+msgid "Uzb"
+msgstr "Özb"
+
+#: ../rules/base.xml.in.h:548
+msgid "Uzbekistan"
+msgstr "Özbekistan"
+
+#: ../rules/base.xml.in.h:549
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:550
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:551
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:552
+msgid "Western"
+msgstr "Batı"
+
+#: ../rules/base.xml.in.h:553
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:554
+msgid "Winkeys"
+msgstr "Win tuşları"
+
+#: ../rules/base.xml.in.h:555
+msgid "With &lt;\\|&gt; key"
+msgstr "&lt;\\|&gt; tuÅŸuyla"
+
+#: ../rules/base.xml.in.h:556
+msgid "With EuroSign on 5"
+msgstr "€ sembolü ile 5 tuşu"
+
+#: ../rules/base.xml.in.h:557
+msgid "With guillemets"
+msgstr "Açılı ayraçlarla"
+
+#: ../rules/base.xml.in.h:558
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:559
+msgid "Yoruba"
+msgstr "Yoruba"
+
+#: ../rules/base.xml.in.h:560
+msgid "Z and ZHE swapped"
+msgstr "Z ile ZHE yer deÄŸiÅŸtirir"
+
+#: ../rules/base.xml.in.h:561
+msgid "Zar"
+msgstr "Zar"
+
+#: ../rules/base.xml.in.h:562
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:563
+msgid "azerty/digits"
+msgstr "azerty/rakamlar"
+
+#: ../rules/base.xml.in.h:564
+msgid "digits"
+msgstr "rakamlar"
+
+#: ../rules/base.xml.in.h:565
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "noktalı virgül ve çift tırnak kalkar (atıl)"
+
+#: ../rules/base.xml.in.h:566
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:567 ../rules/sun.xml.in.h:132
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:568
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, galiÅŸmiÅŸ Gerisilme"
+
+#: ../rules/base.xml.in.h:569
+msgid "qwerty/digits"
+msgstr "qwerty/rakamlar"
+
+#: ../rules/base.xml.in.h:570
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/sun.xml.in.h:1
+msgid "\"Typewriter\""
+msgstr "\"Daktilo\""
+
+#: ../rules/sun.xml.in.h:17
+msgid "Acts as Shift with locking. Shift cancels Caps."
+msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu ise Caps Lock tuşunu keser."
+
+#: ../rules/sun.xml.in.h:18
+msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
+msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu Caps Lock'u kesmez"
+
+#: ../rules/sun.xml.in.h:19
+msgid "Alt+Control changes group"
+msgstr "Alt+Ctrl grubu deÄŸiÅŸtirir."
+
+#: ../rules/sun.xml.in.h:20
+msgid "Alt+Shift changes group"
+msgstr "Alt+Shift grubu deÄŸiÅŸtirir."
+
+#: ../rules/sun.xml.in.h:21
+msgid "Basic"
+msgstr "Temel"
+
+#: ../rules/sun.xml.in.h:23
+msgid "Belgian"
+msgstr "Belçikaca"
+
+#: ../rules/sun.xml.in.h:25
+msgid "Both Alt keys together change group"
+msgstr "Alt tuşları birlikte grubu değiştirir"
+
+#: ../rules/sun.xml.in.h:26
+msgid "Both Ctrl keys together change group"
+msgstr "Ctrl tuşları birlikte grubu değiştirir"
+
+#: ../rules/sun.xml.in.h:27
+msgid "Both Shift keys together change group"
+msgstr "Shift tuşları birlikte grubu değiştirir"
+
+#: ../rules/sun.xml.in.h:28
+msgid "Bulgarian"
+msgstr "Bulgarca"
+
+#: ../rules/sun.xml.in.h:30
+msgid "Canadian"
+msgstr "Kanadaca"
+
+#: ../rules/sun.xml.in.h:31
+msgid "Caps Lock is Compose"
+msgstr "CapsLock tuÅŸu karakter birleÅŸimi yapar"
+
+#: ../rules/sun.xml.in.h:32
+msgid "Caps Lock key changes group"
+msgstr "Caps Lock tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:34
+msgid "Caps_Lock LED shows alternative group"
+msgstr "Caps Lock LED'i diğer grubu gösterir"
+
+#: ../rules/sun.xml.in.h:35
+msgid "Control Key Position"
+msgstr "Ctrl tuÅŸunun yeri"
+
+#: ../rules/sun.xml.in.h:36
+msgid "Control key at bottom left"
+msgstr "Sol alttaki Ctrl tuÅŸu"
+
+#: ../rules/sun.xml.in.h:37
+msgid "Control key at left of 'A'"
+msgstr "'A'nın solundaki Ctrl Tuşu"
+
+#: ../rules/sun.xml.in.h:38
+msgid "Control+Shift changes group"
+msgstr "Ctrl+Shift tuşları grubu değiştirir"
+
+#: ../rules/sun.xml.in.h:40
+msgid "Czech"
+msgstr "Çekçe"
+
+#: ../rules/sun.xml.in.h:41
+msgid "Danish"
+msgstr "Danca"
+
+#: ../rules/sun.xml.in.h:45
+msgid "DeuCH"
+msgstr "DeuCH"
+
+#: ../rules/sun.xml.in.h:47
+msgid "Dvo"
+msgstr "Dvo"
+
+#: ../rules/sun.xml.in.h:52
+msgid "Finnish"
+msgstr "Fince"
+
+#: ../rules/sun.xml.in.h:54
+msgid "FraCH"
+msgstr "FraCH"
+
+#: ../rules/sun.xml.in.h:57
+msgid "German"
+msgstr "Almanca"
+
+#: ../rules/sun.xml.in.h:58
+msgid "Group Shift/Lock behavior"
+msgstr "Shift/Lock Grubu davranışı"
+
+#: ../rules/sun.xml.in.h:60
+msgid "Hungarian"
+msgstr "Macarca"
+
+#: ../rules/sun.xml.in.h:64
+msgid "Italian"
+msgstr "Ä°talyanca"
+
+#: ../rules/sun.xml.in.h:65
+msgid "Japanese"
+msgstr "Japonca"
+
+#: ../rules/sun.xml.in.h:67
+msgid "Left Alt key changes group"
+msgstr "Soldaki Alt tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:68
+msgid "Left Alt key switches group while pressed"
+msgstr "Soldaki Alt tuşu basılıyken diğer grup etkin olur"
+
+#: ../rules/sun.xml.in.h:69
+msgid "Left Ctrl key changes group"
+msgstr "Soldaki Ctrl tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:70
+msgid "Left Shift key changes group"
+msgstr "Soldaki Shift tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:71
+msgid "Make CapsLock an additional Control"
+msgstr "CapsLock tuÅŸunu ek bir Ctrl tuÅŸu yapar"
+
+#: ../rules/sun.xml.in.h:76
+msgid "Norwegian"
+msgstr "Norveçce"
+
+#: ../rules/sun.xml.in.h:77
+msgid "Num_Lock LED shows alternative group"
+msgstr "Num_Lock LED'i diğer grubu gösterir"
+
+#: ../rules/sun.xml.in.h:80
+msgid "Polish"
+msgstr "Polonez"
+
+#: ../rules/sun.xml.in.h:81
+msgid "Polish with Polish quotes on key \"1/!\""
+msgstr "Lehçe, \"1/!\" tuşunda Lehçe tırnaklar"
+
+#: ../rules/sun.xml.in.h:82
+msgid "Portuguese"
+msgstr "Portekizce"
+
+#: ../rules/sun.xml.in.h:83
+msgid "Press Left Alt key to choose 3rd level"
+msgstr "3. seviyeyi seçmek için soldaki Alt tuşuna basın"
+
+#: ../rules/sun.xml.in.h:84
+msgid "Press Right Alt key to choose 3rd level"
+msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın"
+
+#: ../rules/sun.xml.in.h:85
+msgid "Press Right Alt-key to choose 3rd level, Shift+Right Alt-key is Multi_Key"
+msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın, Sağdaki Alt tuşuyla birlikte Shift tuşu AltGr gibi davranır"
+
+#: ../rules/sun.xml.in.h:86
+msgid "Press Right Control to choose 3rd level"
+msgstr "3. seviyeyi seçmek için sağdaki Ctrl tuşuna basın"
+
+#: ../rules/sun.xml.in.h:87
+msgid "Press any of Alt keys to choose 3rd level"
+msgstr "3. seviyeyi seçmek için Alt tuşlarından birine basın"
+
+#: ../rules/sun.xml.in.h:89
+msgid "Right Alt key changes group"
+msgstr "SaÄŸdaki Alt tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:91
+msgid "Right Alt switches group while pressed"
+msgstr "Sağdaki Alt tuşu basılıyken diğer grup etkin olur"
+
+#: ../rules/sun.xml.in.h:92
+msgid "Right Control key works as Right Alt"
+msgstr "Sağdaki Ctrl tuşu sağdaki Alt tuşu gibi çalışır"
+
+#: ../rules/sun.xml.in.h:93
+msgid "Right Ctrl key changes group"
+msgstr "SaÄŸdaki Ctrl tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:94
+msgid "Right Shift key changes group"
+msgstr "SaÄŸdaki Shift tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:97
+msgid "Scroll Lock changes group"
+msgstr "Scroll Lock grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:98
+msgid "Scroll_Lock LED shows alternative group"
+msgstr "Scroll_Lock LED'i diğer grubu gösterir"
+
+#: ../rules/sun.xml.in.h:99
+msgid "Shift with numpad keys works as in MS Windows"
+msgstr "Sayısal tuştakımı Shift ile MS Windows'daki gibi çalışır"
+
+#: ../rules/sun.xml.in.h:100
+msgid "Shift+CapsLock changes group"
+msgstr "Shift+CapsLock tuşları grubu değiştirir"
+
+#: ../rules/sun.xml.in.h:101
+msgid "Slovak"
+msgstr "Slovakça"
+
+#: ../rules/sun.xml.in.h:102
+msgid "Spanish"
+msgstr "Ä°spanyolca"
+
+#: ../rules/sun.xml.in.h:105
+msgid "Sun Type 4"
+msgstr "Sun 4. tür"
+
+#: ../rules/sun.xml.in.h:106
+msgid "Sun Type 5"
+msgstr "Sun 5. Tür"
+
+#: ../rules/sun.xml.in.h:107
+msgid "Sun Type 5 European"
+msgstr "Sun 5. tür Avrupa"
+
+#: ../rules/sun.xml.in.h:108
+msgid "Sun Type 5 Unix"
+msgstr "Sun 5. tür, Unix"
+
+#: ../rules/sun.xml.in.h:109
+msgid "Sun Type 6"
+msgstr "Sun 6. tür"
+
+#: ../rules/sun.xml.in.h:110
+msgid "Sun Type 6 Unix"
+msgstr "Sun 6. tür, Unix"
+
+#: ../rules/sun.xml.in.h:111
+msgid "Sun Type 6 with Euro key"
+msgstr "Sun 6. Tür, € tuşlu"
+
+#: ../rules/sun.xml.in.h:114
+msgid "Swap Control and Caps Lock"
+msgstr "Ctrl ile Caps Lock yer deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:116
+msgid "Swedish"
+msgstr "İsveçce"
+
+#: ../rules/sun.xml.in.h:117
+msgid "Swiss French"
+msgstr "İsviçre Fransızcası"
+
+#: ../rules/sun.xml.in.h:118
+msgid "Swiss German"
+msgstr "İsviçre Almancası"
+
+#: ../rules/sun.xml.in.h:121
+msgid "Turkish"
+msgstr "Türkçe Q Klavye"
+
+#: ../rules/sun.xml.in.h:122
+msgid "Turkish (F)"
+msgstr "Türkçe F klavye"
+
+#: ../rules/sun.xml.in.h:123
+msgid "Turkish Alt-Q Layout"
+msgstr "Türkçe Alt-Q (yazılımcılar ve dizüstü) klavye"
+
+#: ../rules/sun.xml.in.h:125
+msgid "U.S. English w/ ISO9995-3"
+msgstr "Amerikan ingilizcesi (ISO9995-3 ile)"
+
+#: ../rules/sun.xml.in.h:128
+msgid "Use keyboard LED to show alternative group"
+msgstr "Diğer grubu göstermek içim klavye LED'i kullanılır"
+
+#: ../rules/sun.xml.in.h:129
+msgid "Uses internal capitalization. Shift cancels Caps."
+msgstr "CapsLock dahili dönüşümü kullanılır, Shift tuşu Caps Lock tuşunu keser."
+
+#: ../rules/sun.xml.in.h:130
+msgid "Uses internal capitalization. Shift doesn't cancel Caps."
+msgstr "CapsLock dahili dönüşümü kullanır. Shift tuşu Caps Lock'u kesmez."
+
+#: ../rules/sun.xml.in.h:131
+msgid "bksl"
+msgstr "bksl"
+
+#: ../rules/sun.xml.in.h:133
+msgid "type4"
+msgstr "4. tür"
diff --git a/xorg-server/xkeyboard-config/po/zh_TW.po b/xorg-server/xkeyboard-config/po/zh_TW.po
index 383e01e3f..9cc90fb5b 100644
--- a/xorg-server/xkeyboard-config/po/zh_TW.po
+++ b/xorg-server/xkeyboard-config/po/zh_TW.po
@@ -1,1671 +1,1671 @@
-# Traditional Chinese Messages for xkeyboard-config
-# Copyright (C) 2003, 05 Free Software Foundation, Inc.
-# Funda Wang <fundawang@linux.net.cn>, 2003
-# Wei-Lun Chao <chaoweilun@pcmail.com.tw>, 2005
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 0.6\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-08-14 00:39+0100\n"
-"PO-Revision-Date: 2005-09-19 17:19+0800\n"
-"Last-Translator: Wei-Lun Chao <chaoweilun@pcmail.com.tw>\n"
-"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "\"Standard\""
-msgstr "「標準ã€"
-
-#: ../rules/base.xml.in.h:2
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:3
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/逗點/無用按éµ"
-
-#: ../rules/base.xml.in.h:4
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/逗點/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/å¥é»ž/無用按éµ"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/å¥é»ž/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/逗點/無用按éµ"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwerty/逗點/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/å¥é»ž/無用按éµ"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/å¥é»ž/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:11
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/逗點/無用按éµ"
-
-#: ../rules/base.xml.in.h:12
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/逗點/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:13
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/å¥é»ž/無用按éµ"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/å¥é»ž/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/逗點/無用按éµ"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/逗點/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/å¥é»ž/無用按éµ"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/å¥é»ž/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:19
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:20
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:21
-msgid "ACPI Standard"
-msgstr "ACPI 標準"
-
-#: ../rules/base.xml.in.h:22
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:23
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:24
-msgid "Add the EuroSign to the 2 key."
-msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° 2 éµä¹‹ä¸Š"
-
-#: ../rules/base.xml.in.h:25
-msgid "Add the EuroSign to the 5 key."
-msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° 5 éµä¹‹ä¸Š"
-
-#: ../rules/base.xml.in.h:26
-msgid "Add the EuroSign to the E key."
-msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° E éµä¹‹ä¸Š"
-
-#: ../rules/base.xml.in.h:27
-msgid "Add the standard behavior to Menu key."
-msgstr "增加標準功能至 Menu éµã€‚"
-
-#: ../rules/base.xml.in.h:28
-msgid "Adding the EuroSign to certain keys"
-msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ°ç‰¹å®šéµä¹‹ä¸Š"
-
-#: ../rules/base.xml.in.h:29
-msgid "Advance Scorpius KI"
-msgstr "進階 Scorpius KI"
-
-#: ../rules/base.xml.in.h:30
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:31
-msgid "Albania"
-msgstr "阿爾巴尼亞"
-
-#: ../rules/base.xml.in.h:32
-msgid "Alt and Meta are on the Alt keys (default)."
-msgstr "Alt 與 Meta é…置於 Alt éµï¼ˆé è¨­å€¼ï¼‰ã€‚"
-
-#: ../rules/base.xml.in.h:33
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "Alt é…置到å³é‚Šçš„ Win-key 並優先於 Menu。"
-
-#: ../rules/base.xml.in.h:34
-msgid "Alt+Control changes group."
-msgstr "以 Alt+Control 改變群組。"
-
-#: ../rules/base.xml.in.h:35
-msgid "Alt+Shift changes group."
-msgstr "以 Alt+Shift 改變群組。"
-
-#: ../rules/base.xml.in.h:36
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:37
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win éµåŠŸèƒ½"
-
-#: ../rules/base.xml.in.h:38
-msgid "Alternative"
-msgstr "替代é¸æ“‡"
-
-#: ../rules/base.xml.in.h:39
-msgid "Alternative international (former us_intl)"
-msgstr "替代國際化 (之å‰ç‚º us_intl)"
-
-#: ../rules/base.xml.in.h:40
-msgid "Alternative, Sun dead keys"
-msgstr "替代é¸æ“‡ï¼ŒSun 的無用按éµ"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alternative, eliminate dead keys"
-msgstr "替代é¸æ“‡ï¼Œé™¤åŽ»ç„¡ç”¨æŒ‰éµ"
-
-#: ../rules/base.xml.in.h:42
-msgid "Apostrophe (') variant"
-msgstr "撇號 (') 變型"
-
-#: ../rules/base.xml.in.h:43
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:44
-msgid "Arabic"
-msgstr "阿拉伯文"
-
-#: ../rules/base.xml.in.h:45
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:46
-msgid "Armenia"
-msgstr "亞美尼亞"
-
-#: ../rules/base.xml.in.h:47
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:48
-msgid "Azerbaijan"
-msgstr "亞塞拜然"
-
-#: ../rules/base.xml.in.h:49
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 無線網際éµç›¤"
-
-#: ../rules/base.xml.in.h:50
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:51
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF 多媒體"
-
-#: ../rules/base.xml.in.h:52
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:53
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:54
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:55
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:56
-msgid "Ban"
-msgstr "Ban"
-
-#: ../rules/base.xml.in.h:57
-msgid "Bangladesh"
-msgstr "孟加拉"
-
-#: ../rules/base.xml.in.h:58
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:59
-msgid "Belarus"
-msgstr "白俄"
-
-#: ../rules/base.xml.in.h:60
-msgid "Belgium"
-msgstr "比利時"
-
-#: ../rules/base.xml.in.h:61
-msgid "Bengali"
-msgstr "孟加拉文"
-
-#: ../rules/base.xml.in.h:62
-msgid "Bengali Probhat"
-msgstr "孟加拉 Probhat 文"
-
-#: ../rules/base.xml.in.h:63
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:64
-msgid "Bhu"
-msgstr "Bhu"
-
-#: ../rules/base.xml.in.h:65
-msgid "Bhutan"
-msgstr "ä¸ä¸¹"
-
-#: ../rules/base.xml.in.h:66
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:67
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:68
-msgid "Bosnia and Herzegovina"
-msgstr "波士尼亞åŠèµ«å¡žå“¥ç¶­é‚£"
-
-#: ../rules/base.xml.in.h:69
-msgid "Both Alt keys together change group."
-msgstr "åŒæ™‚以兩個 Alt éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:70
-msgid "Both Ctrl keys together change group."
-msgstr "åŒæ™‚以兩個 Ctrl éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:71
-msgid "Both Shift keys together change group."
-msgstr "åŒæ™‚以兩個 Shift éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:72
-msgid "Both Win-keys switch group while pressed."
-msgstr "當按下兩個 Win-key 時切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:73
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:74
-msgid "Brazil"
-msgstr "巴西"
-
-#: ../rules/base.xml.in.h:75
-msgid "Brazilian ABNT2"
-msgstr "巴西 ABNT2 éµç›¤"
-
-#: ../rules/base.xml.in.h:76
-msgid "Brother Internet Keyboard"
-msgstr "Brother 網際éµç›¤"
-
-#: ../rules/base.xml.in.h:77
-msgid "Bulgaria"
-msgstr "ä¿åŠ åˆ©äºž"
-
-#: ../rules/base.xml.in.h:78
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:79
-msgid "Canada"
-msgstr "加拿大"
-
-#: ../rules/base.xml.in.h:80
-msgid "CapsLock LED shows alternative group."
-msgstr "以 CapsLock 燈號來顯示替代的群組。"
-
-#: ../rules/base.xml.in.h:81
-msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
-msgstr "Caps Lock 充當鎖定的 Shift。å¯ä»¥æŒ‰ Shift å–消之。"
-
-#: ../rules/base.xml.in.h:82
-msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
-msgstr "Caps Lock 充當鎖定的 Shift。無法以按 Shift å–消之。"
-
-#: ../rules/base.xml.in.h:83
-msgid "CapsLock just locks the Shift modifier."
-msgstr "Caps Lock åªç”¨æ–¼éŽ–定 Shift 變更éµã€‚"
-
-#: ../rules/base.xml.in.h:84
-msgid "CapsLock key behavior"
-msgstr "Caps Lock éµåŠŸèƒ½"
-
-#: ../rules/base.xml.in.h:85
-msgid "CapsLock key changes group."
-msgstr "以 Caps Lock éµæ”¹è®Šç¾¤çµ„"
-
-#: ../rules/base.xml.in.h:86
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "以 Caps Lock åˆ‡æ› Shift 狀態而影響到所有按éµã€‚"
-
-#: ../rules/base.xml.in.h:87
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "以 Caps Lock 切æ›æ­£å¸¸çš„å­—æ¯å­—元大寫功能。"
-
-#: ../rules/base.xml.in.h:88
-msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
-msgstr "Caps Lock 使用內建的大寫功能。å¯ä»¥ Shift å–消之。"
-
-#: ../rules/base.xml.in.h:89
-msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
-msgstr "Caps Lock 使用內建的大寫功能。無法以 Shift å–消之。"
-
-#: ../rules/base.xml.in.h:90
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:91
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:92
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (替代é¸é …)"
-
-#: ../rules/base.xml.in.h:93
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:94
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony 網際網路éµç›¤"
-
-#: ../rules/base.xml.in.h:95
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:96
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:97
-msgid "Compaq Easy Access Keyboard"
-msgstr "康æŸè¼•é¬†å­˜å–éµç›¤"
-
-#: ../rules/base.xml.in.h:98
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "康æŸç¶²éš›éµç›¤(13éµ)"
-
-#: ../rules/base.xml.in.h:99
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "康æŸç¶²éš›éµç›¤(18éµ)"
-
-#: ../rules/base.xml.in.h:100
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "康æŸç¶²éš›éµç›¤(7éµ)"
-
-#: ../rules/base.xml.in.h:101
-msgid "Compaq iPaq Keyboard"
-msgstr "åº·æŸ iPaq éµç›¤"
-
-#: ../rules/base.xml.in.h:102
-msgid "Compose key position"
-msgstr "Compose éµçš„ä½ç½®"
-
-#: ../rules/base.xml.in.h:103
-msgid "Control key at bottom left"
-msgstr "Control éµåœ¨å·¦ä¸‹æ–¹"
-
-#: ../rules/base.xml.in.h:104
-msgid "Control key at left of 'A'"
-msgstr "Control éµåœ¨â€œAâ€çš„左邊"
-
-#: ../rules/base.xml.in.h:105
-msgid "Control key position"
-msgstr "Control éµçš„ä½ç½®"
-
-#: ../rules/base.xml.in.h:106
-msgid "Control+Shift changes group."
-msgstr "以 Control+Shift éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:107
-msgid "Croatia"
-msgstr "克羅埃西亞"
-
-#: ../rules/base.xml.in.h:108
-msgid "Cyrillic"
-msgstr "斯拉夫文"
-
-#: ../rules/base.xml.in.h:109
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:110
-msgid "Czechia"
-msgstr "æ·å…‹æ–‡"
-
-#: ../rules/base.xml.in.h:111
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:112
-msgid "Dead acute"
-msgstr "Dead acute"
-
-#: ../rules/base.xml.in.h:113
-msgid "Dead grave acute"
-msgstr "Dead grave acute"
-
-#: ../rules/base.xml.in.h:114
-msgid "Dell"
-msgstr "戴爾"
-
-#: ../rules/base.xml.in.h:115
-msgid "Dell 101-key PC"
-msgstr "戴爾 101 éµ éµç›¤"
-
-#: ../rules/base.xml.in.h:116
-msgid "Denmark"
-msgstr "丹麥"
-
-#: ../rules/base.xml.in.h:117
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:118
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa ç„¡ç·šæ¡Œé¢éµç›¤"
-
-#: ../rules/base.xml.in.h:119
-msgid "Dhivehi"
-msgstr "迪è²å–œæ–‡"
-
-#: ../rules/base.xml.in.h:120
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 系列"
-
-#: ../rules/base.xml.in.h:121
-msgid "Div"
-msgstr "Div"
-
-#: ../rules/base.xml.in.h:122
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:123
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:124
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "Dvorak,波蘭å¼å¼•è™Ÿç½®æ–¼ã€Œ1/!ã€æŒ‰éµ"
-
-#: ../rules/base.xml.in.h:125
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak,波蘭å¼å¼•è™Ÿç½®æ–¼ã€Œ1/!ã€æŒ‰éµ"
-
-#: ../rules/base.xml.in.h:126
-msgid "Eliminate dead keys"
-msgstr "除去無用按éµ"
-
-#: ../rules/base.xml.in.h:127
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:128
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:129
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:130
-msgid "Estonia"
-msgstr "愛沙尼亞"
-
-#: ../rules/base.xml.in.h:131
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:132
-msgid "Extended"
-msgstr "延伸的"
-
-#: ../rules/base.xml.in.h:133
-msgid "Extended Backslash"
-msgstr "延伸的å斜線"
-
-#: ../rules/base.xml.in.h:134
-msgid "F-letter (F) variant"
-msgstr "F å­—æ¯è®ŠåŒ–"
-
-#: ../rules/base.xml.in.h:135
-msgid "Fao"
-msgstr "Fao"
-
-#: ../rules/base.xml.in.h:136
-msgid "Faroe Islands"
-msgstr "法羅群島"
-
-#: ../rules/base.xml.in.h:137
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:138
-msgid "Finland"
-msgstr "芬蘭"
-
-#: ../rules/base.xml.in.h:139
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:140
-msgid "France"
-msgstr "法國"
-
-#: ../rules/base.xml.in.h:141
-msgid "French"
-msgstr "法文"
-
-#: ../rules/base.xml.in.h:142
-msgid "French (legacy)"
-msgstr "法文 (傳統)"
-
-#: ../rules/base.xml.in.h:143
-msgid "French Dvorak"
-msgstr "法文 Dvorak"
-
-#: ../rules/base.xml.in.h:144
-msgid "French, Sun dead keys"
-msgstr "法文,Sun 的無用按éµ"
-
-#: ../rules/base.xml.in.h:145
-msgid "French, eliminate dead keys"
-msgstr "法文,除去無用按éµ"
-
-#: ../rules/base.xml.in.h:146
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:147
-msgid "Generic 101-key PC"
-msgstr "一般 101éµ éµç›¤"
-
-#: ../rules/base.xml.in.h:148
-msgid "Generic 102-key (Intl) PC"
-msgstr "一般 102éµ (國際) éµç›¤"
-
-#: ../rules/base.xml.in.h:149
-msgid "Generic 104-key PC"
-msgstr "一般 104éµ éµç›¤"
-
-#: ../rules/base.xml.in.h:150
-msgid "Generic 105-key (Intl) PC"
-msgstr "一般 105 éµ (國際) éµç›¤"
-
-#: ../rules/base.xml.in.h:151
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "昆盈 Comfy KB-16M / 昆盈 MM éµç›¤ KWD-910"
-
-#: ../rules/base.xml.in.h:152
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "昆盈 Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:153
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:154
-msgid "Georgia"
-msgstr "喬治亞"
-
-#: ../rules/base.xml.in.h:155
-msgid "German, Sun dead keys"
-msgstr "德文,Sun 的無用按éµ"
-
-#: ../rules/base.xml.in.h:156
-msgid "German, eliminate dead keys"
-msgstr "德文,除去無用按éµ"
-
-#: ../rules/base.xml.in.h:157
-msgid "Germany"
-msgstr "德國"
-
-#: ../rules/base.xml.in.h:158
-msgid "Gre"
-msgstr "Gre"
-
-#: ../rules/base.xml.in.h:159
-msgid "Greece"
-msgstr "希臘"
-
-#: ../rules/base.xml.in.h:160
-msgid "Group Shift/Lock behavior"
-msgstr "群組 Shift/Lock 功能"
-
-#: ../rules/base.xml.in.h:161
-msgid "Gujarati"
-msgstr "å¤å‰æ‹‰ç‰¹æ–‡(å°åº¦)"
-
-#: ../rules/base.xml.in.h:162
-msgid "Gurmukhi"
-msgstr "å¤çˆ¾ç©†å¸Œæ–‡"
-
-#: ../rules/base.xml.in.h:163
-msgid "Gyration"
-msgstr "回轉"
-
-#: ../rules/base.xml.in.h:164
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "惠普網際éµç›¤"
-
-#: ../rules/base.xml.in.h:165
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "惠普 Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:166
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "惠普 Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:167
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "惠普 Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:168
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "惠普 Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:169
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "惠普 Omnibook XE3 CF"
-
-#: ../rules/base.xml.in.h:170
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "惠普 Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:171
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "惠普 Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:172
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "惠普 SK-2501 多媒體éµç›¤"
-
-#: ../rules/base.xml.in.h:173
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "惠普 SK-2505 網際éµç›¤"
-
-#: ../rules/base.xml.in.h:174
-msgid "Honeywell Euroboard"
-msgstr "Honeywell æ­æ´²éµç›¤"
-
-#: ../rules/base.xml.in.h:175
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:176
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:177
-msgid "Hungary"
-msgstr "匈牙利"
-
-#: ../rules/base.xml.in.h:178
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper é…置到兩個 Win-key。"
-
-#: ../rules/base.xml.in.h:179
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:180
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:181
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II(替代é¸é …)"
-
-#: ../rules/base.xml.in.h:182
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:183
-msgid "ISO Alternate"
-msgstr "ISO 替代"
-
-#: ../rules/base.xml.in.h:184
-msgid "Iceland"
-msgstr "冰島"
-
-#: ../rules/base.xml.in.h:185
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:186
-msgid "India"
-msgstr "å°åº¦"
-
-#: ../rules/base.xml.in.h:187
-msgid "International (with dead keys)"
-msgstr "國際éµç›¤ (附無用按éµ)"
-
-#: ../rules/base.xml.in.h:188
-msgid "Inuktitut"
-msgstr "伊努伊特éµç›¤"
-
-#: ../rules/base.xml.in.h:189
-msgid "Iran"
-msgstr "伊朗"
-
-#: ../rules/base.xml.in.h:190
-msgid "Ireland"
-msgstr "愛爾蘭"
-
-#: ../rules/base.xml.in.h:191
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:192
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:193
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:194
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:195
-msgid "Israel"
-msgstr "以色列"
-
-#: ../rules/base.xml.in.h:196
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:197
-msgid "Italy"
-msgstr "æ„大利"
-
-#: ../rules/base.xml.in.h:198
-msgid "Japan"
-msgstr "日本"
-
-#: ../rules/base.xml.in.h:199
-msgid "Japanese 106-key"
-msgstr "日文 106éµ éµç›¤"
-
-#: ../rules/base.xml.in.h:200
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:201
-msgid "Kannada"
-msgstr "å°åº¦å¡ç´é”æ–‡"
-
-#: ../rules/base.xml.in.h:202
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:203
-msgid "Kyr"
-msgstr "Kyr"
-
-#: ../rules/base.xml.in.h:204
-msgid "Kyrgyzstan"
-msgstr "å‰çˆ¾å‰æ–¯"
-
-#: ../rules/base.xml.in.h:205
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:206
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:207
-msgid "Laos"
-msgstr "寮國"
-
-#: ../rules/base.xml.in.h:208
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "å¯æ”œå¼/筆記型 åº·æŸ (如 Armada) å¯æ”œå¼éµç›¤"
-
-#: ../rules/base.xml.in.h:209
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "å¯æ”œå¼/筆記型 åº·æŸ (如 Presario) 網際éµç›¤"
-
-#: ../rules/base.xml.in.h:210
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr "å¯æ”œå¼/筆記型 戴爾 Inspiron 8xxx"
-
-#: ../rules/base.xml.in.h:211
-msgid "Latin"
-msgstr "拉ä¸æ–‡"
-
-#: ../rules/base.xml.in.h:212
-msgid "Latin American"
-msgstr "拉ä¸ç¾Žæ´²"
-
-#: ../rules/base.xml.in.h:213
-msgid "Latin Unicode"
-msgstr "拉ä¸æ–‡çµ±ä¸€ç¢¼"
-
-#: ../rules/base.xml.in.h:214
-msgid "Latin Unicode qwerty"
-msgstr "拉ä¸æ–‡çµ±ä¸€ç¢¼ qwerty"
-
-#: ../rules/base.xml.in.h:215
-msgid "Latin qwerty"
-msgstr "拉ä¸æ–‡ qwerty"
-
-#: ../rules/base.xml.in.h:216
-msgid "Latin with guillemots"
-msgstr "拉ä¸æ–‡é™„海鳩符號"
-
-#: ../rules/base.xml.in.h:217
-msgid "Latvia"
-msgstr "拉脫維亞"
-
-#: ../rules/base.xml.in.h:218
-msgid "Left Alt key changes group."
-msgstr "以左邊的 Alt éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:219
-msgid "Left Alt key switches group while pressed."
-msgstr "當按下左邊的 Alt éµæ™‚切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:220
-msgid "Left Ctrl key changes group."
-msgstr "以左邊的 Ctrl éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:221
-msgid "Left Shift key changes group."
-msgstr "以左邊的 Shift éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:222
-msgid "Left Win-key changes group."
-msgstr "以左邊的 Win-key 改變群組。"
-
-#: ../rules/base.xml.in.h:223
-msgid "Left Win-key switches group while pressed."
-msgstr "當按下左邊的 Win-key 時切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:224
-msgid "Lithuania"
-msgstr "立陶宛"
-
-#: ../rules/base.xml.in.h:225
-msgid "Logitech Access Keyboard"
-msgstr "羅技 Access éµç›¤"
-
-#: ../rules/base.xml.in.h:226
-msgid "Logitech Cordless Desktop"
-msgstr "羅技無影手"
-
-#: ../rules/base.xml.in.h:227
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "羅技無影手桌é¢å°Žèˆªå™¨"
-
-#: ../rules/base.xml.in.h:228
-msgid "Logitech Cordless Desktop Optical"
-msgstr "羅技無影手光學組åˆ"
-
-#: ../rules/base.xml.in.h:229
-msgid "Logitech Cordless Desktop Pro"
-msgstr "羅技無影手進階版"
-
-#: ../rules/base.xml.in.h:230
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "羅技無影手進階版(替代é¸é …)"
-
-#: ../rules/base.xml.in.h:231
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "羅技無影手進階版(替代é¸é …)"
-
-#: ../rules/base.xml.in.h:232
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "羅技網際無影手"
-
-#: ../rules/base.xml.in.h:233
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "羅技極光無影手組åˆ/æ¡Œé¢å°Žèˆªå™¨"
-
-#: ../rules/base.xml.in.h:234
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "羅技強手éµç›¤"
-
-#: ../rules/base.xml.in.h:235
-msgid "Logitech Internet Keyboard"
-msgstr "羅技網際éµç›¤"
-
-#: ../rules/base.xml.in.h:236
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "羅技網際導航éµç›¤"
-
-#: ../rules/base.xml.in.h:237
-msgid "Logitech Ultra-X Keyboard"
-msgstr "羅技銀幻手éµç›¤"
-
-#: ../rules/base.xml.in.h:238
-msgid "Logitech iTouch"
-msgstr "羅技 iTouch"
-
-#: ../rules/base.xml.in.h:239
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "羅技 iTouch 無影手éµç›¤(型號 Y-RB6)"
-
-#: ../rules/base.xml.in.h:240
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "羅技 iTouch éµç›¤ç¶²éš›å°Žèˆªå™¨"
-
-#: ../rules/base.xml.in.h:241
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:242
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:243
-msgid "Macedonian"
-msgstr "馬其頓文"
-
-#: ../rules/base.xml.in.h:244
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:245
-msgid "Macintosh Old"
-msgstr "Macintosh 舊產å“"
-
-#: ../rules/base.xml.in.h:246
-msgid "Make CapsLock an additional Control."
-msgstr "以 Caps Lock åšç‚ºé™„加的控制éµã€‚"
-
-#: ../rules/base.xml.in.h:247
-msgid "Malayalam"
-msgstr "(å°åº¦)馬來雅拉姆文字"
-
-#: ../rules/base.xml.in.h:248
-msgid "Malta"
-msgstr "馬爾它"
-
-#: ../rules/base.xml.in.h:249
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:250
-msgid "Maori"
-msgstr "毛利"
-
-#: ../rules/base.xml.in.h:251
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:252
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access éµç›¤"
-
-#: ../rules/base.xml.in.h:253
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:254
-msgid "Menu is Compose."
-msgstr "Menu 為組åˆéµã€‚"
-
-#: ../rules/base.xml.in.h:255
-msgid "Menu key changes group."
-msgstr "以 Menu éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:256
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta é…置到兩個 Win-key。"
-
-#: ../rules/base.xml.in.h:257
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta é…置到左邊的 Win-key。"
-
-#: ../rules/base.xml.in.h:258
-msgid "Microsoft Internet Keyboard"
-msgstr "微軟網際éµç›¤"
-
-#: ../rules/base.xml.in.h:259
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "微軟網際éµç›¤å¢žå¼·ç‰ˆï¼Œç‘žå…¸"
-
-#: ../rules/base.xml.in.h:260
-msgid "Microsoft Natural"
-msgstr "微軟自然éµç›¤"
-
-#: ../rules/base.xml.in.h:261
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "微軟原生éµç›¤å¢žå¼·ç‰ˆ/微軟網際éµç›¤å¢žå¼·ç‰ˆ"
-
-#: ../rules/base.xml.in.h:262
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "微軟原生éµç›¤å¢žå¼·ç‰ˆ OEM"
-
-#: ../rules/base.xml.in.h:263
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "微軟自然éµç›¤å¢žå¼·ç‰ˆ USB/微軟網際éµç›¤å¢žå¼·ç‰ˆ"
-
-#: ../rules/base.xml.in.h:264
-msgid "Microsoft Office Keyboard"
-msgstr "微軟 Office éµç›¤"
-
-#: ../rules/base.xml.in.h:265
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "微軟無線多媒體éµç›¤ 1.0A"
-
-#: ../rules/base.xml.in.h:266
-msgid "Miscellaneous compatibility options"
-msgstr "其它相容é¸é …"
-
-#: ../rules/base.xml.in.h:267
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:268
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:269
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:270
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:271
-msgid "Mongolia"
-msgstr "è’™å¤"
-
-#: ../rules/base.xml.in.h:272
-msgid "Multilingual"
-msgstr "多語言"
-
-#: ../rules/base.xml.in.h:273
-msgid "Multilingual, second part"
-msgstr "多語言,第二部份"
-
-#: ../rules/base.xml.in.h:274
-msgid "Myanmar"
-msgstr "緬甸"
-
-#: ../rules/base.xml.in.h:275
-msgid "Netherlands"
-msgstr "è·è˜­"
-
-#: ../rules/base.xml.in.h:276
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:277
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:278
-msgid "Northern Saami"
-msgstr "北部沙米文"
-
-#: ../rules/base.xml.in.h:279
-msgid "Northern Saami, eliminate dead keys"
-msgstr "北部沙米文,除去無用按éµ"
-
-#: ../rules/base.xml.in.h:280
-msgid "Northgate OmniKey 101"
-msgstr "Northgate Omnikey 101"
-
-#: ../rules/base.xml.in.h:281
-msgid "Norway"
-msgstr "挪å¨"
-
-#: ../rules/base.xml.in.h:282
-msgid "NumLock LED shows alternative group."
-msgstr "以 Num Lock 燈號來顯示替代的群組。"
-
-#: ../rules/base.xml.in.h:283
-msgid "Ogham"
-msgstr "(å¤æ„›çˆ¾è˜­)æ­ç”˜æ–‡å­—"
-
-#: ../rules/base.xml.in.h:284
-msgid "Ogham IS434"
-msgstr "æ­ç”˜æ–‡å­— IS434"
-
-#: ../rules/base.xml.in.h:285
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/網際éµç›¤"
-
-#: ../rules/base.xml.in.h:286
-msgid "Oriya"
-msgstr "(å°åº¦)奧里雅æ—文字"
-
-#: ../rules/base.xml.in.h:287
-msgid "PC-98xx Series"
-msgstr "PC-98xx 系列"
-
-#: ../rules/base.xml.in.h:288
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:289
-msgid "Pakistan"
-msgstr "巴基斯å¦"
-
-#: ../rules/base.xml.in.h:290
-msgid "Pattachote"
-msgstr "æ³°æ–‡"
-
-#: ../rules/base.xml.in.h:291
-msgid "Phonetic"
-msgstr "音標"
-
-#: ../rules/base.xml.in.h:292
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:293
-msgid "Poland"
-msgstr "波蘭"
-
-#: ../rules/base.xml.in.h:294
-msgid "Polytonic"
-msgstr "多音字æ¯"
-
-#: ../rules/base.xml.in.h:295
-msgid "Portugal"
-msgstr "è‘¡è„牙"
-
-#: ../rules/base.xml.in.h:296
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: ../rules/base.xml.in.h:297
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "按下左邊的 Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:298
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "按下左邊的 Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:299
-msgid "Press Menu key to choose 3rd level."
-msgstr "按下 Menu éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:300
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "按下å³é‚Šçš„ Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:301
-msgid "Press Right Control to choose 3rd level."
-msgstr "按下å³é‚Šçš„ Control 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:302
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "按下å³é‚Šçš„ Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:303
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "按下任一 Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:304
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "按下任一 Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:305
-msgid "Probhat"
-msgstr "孟加拉 Probhat"
-
-#: ../rules/base.xml.in.h:306
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:307
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:308
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:309
-msgid "R-Alt switches group while pressed."
-msgstr "當按下å³é‚Š Alt 時切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:310
-msgid "Right Alt is Compose."
-msgstr "å³é‚Šçš„ Alt 為組åˆéµã€‚"
-
-#: ../rules/base.xml.in.h:311
-msgid "Right Alt key changes group."
-msgstr "以å³é‚Šçš„ Alt éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:312
-msgid "Right Control key works as Right Alt."
-msgstr "å³é‚Š Ctrl éµç­‰åŒæ–¼å³é‚Š Alt。"
-
-#: ../rules/base.xml.in.h:313
-msgid "Right Ctrl is Compose."
-msgstr "å³é‚Šçš„ Ctrl 為組åˆéµã€‚"
-
-#: ../rules/base.xml.in.h:314
-msgid "Right Ctrl key changes group."
-msgstr "以å³é‚Šçš„ Ctrl éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:315
-msgid "Right Ctrl key switches group while pressed."
-msgstr "當按下å³é‚Šçš„ Ctrl éµæ™‚切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:316
-msgid "Right Shift key changes group."
-msgstr "以å³é‚Šçš„ Shift éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:317
-msgid "Right Win-key changes group."
-msgstr "以å³é‚Šçš„ Win-key 改變群組。"
-
-#: ../rules/base.xml.in.h:318
-msgid "Right Win-key is Compose."
-msgstr "å³é‚Šçš„ Win-key 為組åˆéµã€‚"
-
-#: ../rules/base.xml.in.h:319
-msgid "Right Win-key switches group while pressed."
-msgstr "當按下å³é‚Šçš„ Win-key 時切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:320
-msgid "Romania"
-msgstr "羅馬尼亞"
-
-#: ../rules/base.xml.in.h:321
-msgid "Romanian keyboard with German letters"
-msgstr "羅馬尼亞éµç›¤é™„德文字æ¯"
-
-#: ../rules/base.xml.in.h:322
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "羅馬尼亞éµç›¤é™„德文字æ¯ï¼Œé™¤åŽ»ç„¡ç”¨æŒ‰éµ"
-
-#: ../rules/base.xml.in.h:323
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:324
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:325
-msgid "Russia"
-msgstr "ä¿„ç¾…æ–¯"
-
-#: ../rules/base.xml.in.h:326
-msgid "Russian"
-msgstr "ä¿„æ–‡"
-
-#: ../rules/base.xml.in.h:327
-msgid "Russian phonetic"
-msgstr "俄文音標"
-
-#: ../rules/base.xml.in.h:328
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "俄文音標,除去無用按éµ"
-
-#: ../rules/base.xml.in.h:329
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:330
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:331
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:332
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:333
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:334
-msgid "Samsung SDM 4500P"
-msgstr "三星 SDM 4500P"
-
-#: ../rules/base.xml.in.h:335
-msgid "Samsung SDM 4510P"
-msgstr "三星 SDM 4510P"
-
-#: ../rules/base.xml.in.h:336
-msgid "ScrollLock LED shows alternative group."
-msgstr "以 Scroll Lock 燈號來顯示替代的群組。"
-
-#: ../rules/base.xml.in.h:337
-msgid "Serbian"
-msgstr "塞爾維亞文"
-
-#: ../rules/base.xml.in.h:338
-msgid "Shift with numpad keys works as in MS Windows."
-msgstr "Shift+數字éµç›¤çš„功能等åŒæ–¼åœ¨ MS Windows 之中。"
-
-#: ../rules/base.xml.in.h:339
-msgid "Shift+CapsLock changes group."
-msgstr "以 Shift+Caps Lock éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:340
-msgid "Slovakia"
-msgstr "斯洛ä¼å…‹"
-
-#: ../rules/base.xml.in.h:341
-msgid "Slovenia"
-msgstr "斯洛凡尼亞"
-
-#: ../rules/base.xml.in.h:342
-msgid "Spain"
-msgstr "西ç­ç‰™"
-
-#: ../rules/base.xml.in.h:343
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "伺æœå™¨è™•ç†çš„ç‰¹æ®Šéµ (Ctrl+Alt+&lt;key&gt;)。"
-
-#: ../rules/base.xml.in.h:344
-msgid "SrL"
-msgstr "SrL"
-
-#: ../rules/base.xml.in.h:345
-msgid "Sri Lanka"
-msgstr "斯里蘭å¡"
-
-#: ../rules/base.xml.in.h:346
-msgid "Srp"
-msgstr "Srp"
-
-#: ../rules/base.xml.in.h:347
-msgid "Standard"
-msgstr "標準"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:349
-msgid "Standard RSTU"
-msgstr "標準 RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:351
-msgid "Standard RSTU on Russian layout"
-msgstr "俄文排列上的標準 RSTU"
-
-#: ../rules/base.xml.in.h:352
-msgid "Sun dead keys"
-msgstr "Sun 無用按éµ"
-
-#: ../rules/base.xml.in.h:353
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power 多媒體éµç›¤"
-
-#: ../rules/base.xml.in.h:354
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super é…置到兩個 Win-key (é è¨­å€¼ï¼‰ã€‚"
-
-#: ../rules/base.xml.in.h:355
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:356
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:357
-msgid "Swap Control and CapsLock."
-msgstr "Control 與 Caps Lock éµäº’æ›ã€‚"
-
-#: ../rules/base.xml.in.h:358
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:359
-msgid "Sweden"
-msgstr "ç‘žå…¸"
-
-#: ../rules/base.xml.in.h:360
-msgid "Switzerland"
-msgstr "瑞士"
-
-#: ../rules/base.xml.in.h:361
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (å¹³æ¿é›»è…¦)"
-
-#: ../rules/base.xml.in.h:362
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:363
-msgid "Syria"
-msgstr "敘利亞"
-
-#: ../rules/base.xml.in.h:364
-msgid "Syriac"
-msgstr "敘利亞語"
-
-#: ../rules/base.xml.in.h:365
-msgid "Syriac phonetic"
-msgstr "敘利亞音標"
-
-#: ../rules/base.xml.in.h:366
-msgid "TIS-820.2538"
-msgstr "泰語(TIS-820.2538)"
-
-#: ../rules/base.xml.in.h:367
-msgid "Tajikistan"
-msgstr "å¡”å‰å…‹"
-
-#: ../rules/base.xml.in.h:368
-msgid "Tamil"
-msgstr "å¦ç±³çˆ¾æ–‡"
-
-#: ../rules/base.xml.in.h:369
-msgid "Tamil INSCRIPT"
-msgstr "å¦ç±³çˆ¾æ–‡ INSCRIPT"
-
-#: ../rules/base.xml.in.h:370
-msgid "Tamil TAB Typewriter"
-msgstr "å¦ç±³çˆ¾æ–‡ TAB 打字機"
-
-#: ../rules/base.xml.in.h:371
-msgid "Tamil TSCII Typewriter"
-msgstr "å¦ç±³çˆ¾æ–‡ TSCII 打字機"
-
-#: ../rules/base.xml.in.h:372
-msgid "Tamil Unicode"
-msgstr "å¦ç±³çˆ¾æ–‡çµ±ä¸€ç¢¼"
-
-#: ../rules/base.xml.in.h:373
-msgid "Telugu"
-msgstr "泰盧固語"
-
-#: ../rules/base.xml.in.h:374
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:375
-msgid "Thailand"
-msgstr "泰國"
-
-#: ../rules/base.xml.in.h:376
-msgid "Third level choosers"
-msgstr "第三級é¸æ“‡å™¨"
-
-#: ../rules/base.xml.in.h:377
-msgid "Tilde (~) variant"
-msgstr "波折號 (~) 變化"
-
-#: ../rules/base.xml.in.h:378
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:379
-msgid "Toshiba Satellite S3000"
-msgstr "æ±èŠ Satellite S3000"
-
-#: ../rules/base.xml.in.h:380
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access éµç›¤"
-
-#: ../rules/base.xml.in.h:381
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust 無線經典éµç›¤"
-
-#: ../rules/base.xml.in.h:382
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:383
-msgid "Turkish"
-msgstr "土耳其文"
-
-#: ../rules/base.xml.in.h:384
-msgid "Typewriter"
-msgstr "打字機"
-
-#: ../rules/base.xml.in.h:385
-msgid "U.S. English"
-msgstr "美å¼è‹±æ–‡"
-
-#: ../rules/base.xml.in.h:386
-msgid "US keyboard with Croatian letters"
-msgstr "美國éµç›¤é™„克羅埃西亞字æ¯"
-
-#: ../rules/base.xml.in.h:387
-msgid "US keyboard with Lithuanian letters"
-msgstr "美國éµç›¤é™„立陶宛字æ¯"
-
-#: ../rules/base.xml.in.h:388
-msgid "US keyboard with Maltian letters"
-msgstr "美國éµç›¤é™„馬爾它字æ¯"
-
-#: ../rules/base.xml.in.h:389
-msgid "US keyboard with Romanian letters"
-msgstr "美國éµç›¤é™„羅馬尼亞字æ¯"
-
-#: ../rules/base.xml.in.h:390
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:391
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:392
-msgid "Ukraine"
-msgstr "çƒå…‹è˜­"
-
-#: ../rules/base.xml.in.h:393
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:394
-msgid "United Kingdom"
-msgstr "英國"
-
-#: ../rules/base.xml.in.h:395
-msgid "Urdu"
-msgstr "çƒéƒ½æ–‡"
-
-#: ../rules/base.xml.in.h:396
-msgid "Use keyboard LED to show alternative group."
-msgstr "使用éµç›¤ç‡ˆè™Ÿä¾†é¡¯ç¤ºæ›¿ä»£çš„群組。"
-
-#: ../rules/base.xml.in.h:397
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:398
-msgid "Uzbekistan"
-msgstr "çƒèŒ²åˆ¥å…‹"
-
-#: ../rules/base.xml.in.h:399
-msgid "Vietnam"
-msgstr "越å—"
-
-#: ../rules/base.xml.in.h:400
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:401
-msgid "Winbook Model XP5"
-msgstr "Winbook XP5 éµç›¤"
-
-#: ../rules/base.xml.in.h:402
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: ../rules/base.xml.in.h:403
-msgid "With &lt;\\|&gt; key"
-msgstr "附帶 &lt;\\|&gt; éµ"
-
-#: ../rules/base.xml.in.h:404
-msgid "With guillemots"
-msgstr "附帶海鳩符號"
-
-#: ../rules/base.xml.in.h:405
-msgid "Yahoo! Internet Keyboard"
-msgstr "雅虎網際éµç›¤"
-
-#: ../rules/base.xml.in.h:406
-msgid "Z and ZHE swapped"
-msgstr "å·²äº¤æ› Z 與 ZHE"
-
-#: ../rules/base.xml.in.h:407
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:408
-msgid "azerty/digits"
-msgstr "azerty/數字"
-
-#: ../rules/base.xml.in.h:409
-msgid "digits"
-msgstr "數字"
-
-#: ../rules/base.xml.in.h:410
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:411
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:412
-msgid "qwerty, extended Backslash"
-msgstr "qwerty,延伸的å斜線"
-
-#: ../rules/base.xml.in.h:413
-msgid "qwerty/digits"
-msgstr "qwerty/數字"
-
-#: ../rules/base.xml.in.h:414
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.xml.in.h:415
-msgid "si1452"
-msgstr "si1452"
+# Traditional Chinese Messages for xkeyboard-config
+# Copyright (C) 2003, 05 Free Software Foundation, Inc.
+# Funda Wang <fundawang@linux.net.cn>, 2003
+# Wei-Lun Chao <chaoweilun@pcmail.com.tw>, 2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 0.6\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-08-14 00:39+0100\n"
+"PO-Revision-Date: 2005-09-19 17:19+0800\n"
+"Last-Translator: Wei-Lun Chao <chaoweilun@pcmail.com.tw>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "\"Standard\""
+msgstr "「標準ã€"
+
+#: ../rules/base.xml.in.h:2
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:3
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/逗點/無用按éµ"
+
+#: ../rules/base.xml.in.h:4
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/逗點/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:5
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/å¥é»ž/無用按éµ"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/å¥é»ž/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/逗點/無用按éµ"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwerty/逗點/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/å¥é»ž/無用按éµ"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/å¥é»ž/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:11
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/逗點/無用按éµ"
+
+#: ../rules/base.xml.in.h:12
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/逗點/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:13
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/å¥é»ž/無用按éµ"
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/å¥é»ž/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/逗點/無用按éµ"
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/逗點/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/å¥é»ž/無用按éµ"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/å¥é»ž/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:19
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:20
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:21
+msgid "ACPI Standard"
+msgstr "ACPI 標準"
+
+#: ../rules/base.xml.in.h:22
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:23
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:24
+msgid "Add the EuroSign to the 2 key."
+msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° 2 éµä¹‹ä¸Š"
+
+#: ../rules/base.xml.in.h:25
+msgid "Add the EuroSign to the 5 key."
+msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° 5 éµä¹‹ä¸Š"
+
+#: ../rules/base.xml.in.h:26
+msgid "Add the EuroSign to the E key."
+msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° E éµä¹‹ä¸Š"
+
+#: ../rules/base.xml.in.h:27
+msgid "Add the standard behavior to Menu key."
+msgstr "增加標準功能至 Menu éµã€‚"
+
+#: ../rules/base.xml.in.h:28
+msgid "Adding the EuroSign to certain keys"
+msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ°ç‰¹å®šéµä¹‹ä¸Š"
+
+#: ../rules/base.xml.in.h:29
+msgid "Advance Scorpius KI"
+msgstr "進階 Scorpius KI"
+
+#: ../rules/base.xml.in.h:30
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:31
+msgid "Albania"
+msgstr "阿爾巴尼亞"
+
+#: ../rules/base.xml.in.h:32
+msgid "Alt and Meta are on the Alt keys (default)."
+msgstr "Alt 與 Meta é…置於 Alt éµï¼ˆé è¨­å€¼ï¼‰ã€‚"
+
+#: ../rules/base.xml.in.h:33
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "Alt é…置到å³é‚Šçš„ Win-key 並優先於 Menu。"
+
+#: ../rules/base.xml.in.h:34
+msgid "Alt+Control changes group."
+msgstr "以 Alt+Control 改變群組。"
+
+#: ../rules/base.xml.in.h:35
+msgid "Alt+Shift changes group."
+msgstr "以 Alt+Shift 改變群組。"
+
+#: ../rules/base.xml.in.h:36
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:37
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win éµåŠŸèƒ½"
+
+#: ../rules/base.xml.in.h:38
+msgid "Alternative"
+msgstr "替代é¸æ“‡"
+
+#: ../rules/base.xml.in.h:39
+msgid "Alternative international (former us_intl)"
+msgstr "替代國際化 (之å‰ç‚º us_intl)"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alternative, Sun dead keys"
+msgstr "替代é¸æ“‡ï¼ŒSun 的無用按éµ"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alternative, eliminate dead keys"
+msgstr "替代é¸æ“‡ï¼Œé™¤åŽ»ç„¡ç”¨æŒ‰éµ"
+
+#: ../rules/base.xml.in.h:42
+msgid "Apostrophe (') variant"
+msgstr "撇號 (') 變型"
+
+#: ../rules/base.xml.in.h:43
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:44
+msgid "Arabic"
+msgstr "阿拉伯文"
+
+#: ../rules/base.xml.in.h:45
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:46
+msgid "Armenia"
+msgstr "亞美尼亞"
+
+#: ../rules/base.xml.in.h:47
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:48
+msgid "Azerbaijan"
+msgstr "亞塞拜然"
+
+#: ../rules/base.xml.in.h:49
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 無線網際éµç›¤"
+
+#: ../rules/base.xml.in.h:50
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:51
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF 多媒體"
+
+#: ../rules/base.xml.in.h:52
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:53
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:54
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:55
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:56
+msgid "Ban"
+msgstr "Ban"
+
+#: ../rules/base.xml.in.h:57
+msgid "Bangladesh"
+msgstr "孟加拉"
+
+#: ../rules/base.xml.in.h:58
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:59
+msgid "Belarus"
+msgstr "白俄"
+
+#: ../rules/base.xml.in.h:60
+msgid "Belgium"
+msgstr "比利時"
+
+#: ../rules/base.xml.in.h:61
+msgid "Bengali"
+msgstr "孟加拉文"
+
+#: ../rules/base.xml.in.h:62
+msgid "Bengali Probhat"
+msgstr "孟加拉 Probhat 文"
+
+#: ../rules/base.xml.in.h:63
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:64
+msgid "Bhu"
+msgstr "Bhu"
+
+#: ../rules/base.xml.in.h:65
+msgid "Bhutan"
+msgstr "ä¸ä¸¹"
+
+#: ../rules/base.xml.in.h:66
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:67
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:68
+msgid "Bosnia and Herzegovina"
+msgstr "波士尼亞åŠèµ«å¡žå“¥ç¶­é‚£"
+
+#: ../rules/base.xml.in.h:69
+msgid "Both Alt keys together change group."
+msgstr "åŒæ™‚以兩個 Alt éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:70
+msgid "Both Ctrl keys together change group."
+msgstr "åŒæ™‚以兩個 Ctrl éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:71
+msgid "Both Shift keys together change group."
+msgstr "åŒæ™‚以兩個 Shift éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:72
+msgid "Both Win-keys switch group while pressed."
+msgstr "當按下兩個 Win-key 時切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:73
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:74
+msgid "Brazil"
+msgstr "巴西"
+
+#: ../rules/base.xml.in.h:75
+msgid "Brazilian ABNT2"
+msgstr "巴西 ABNT2 éµç›¤"
+
+#: ../rules/base.xml.in.h:76
+msgid "Brother Internet Keyboard"
+msgstr "Brother 網際éµç›¤"
+
+#: ../rules/base.xml.in.h:77
+msgid "Bulgaria"
+msgstr "ä¿åŠ åˆ©äºž"
+
+#: ../rules/base.xml.in.h:78
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:79
+msgid "Canada"
+msgstr "加拿大"
+
+#: ../rules/base.xml.in.h:80
+msgid "CapsLock LED shows alternative group."
+msgstr "以 CapsLock 燈號來顯示替代的群組。"
+
+#: ../rules/base.xml.in.h:81
+msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
+msgstr "Caps Lock 充當鎖定的 Shift。å¯ä»¥æŒ‰ Shift å–消之。"
+
+#: ../rules/base.xml.in.h:82
+msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
+msgstr "Caps Lock 充當鎖定的 Shift。無法以按 Shift å–消之。"
+
+#: ../rules/base.xml.in.h:83
+msgid "CapsLock just locks the Shift modifier."
+msgstr "Caps Lock åªç”¨æ–¼éŽ–定 Shift 變更éµã€‚"
+
+#: ../rules/base.xml.in.h:84
+msgid "CapsLock key behavior"
+msgstr "Caps Lock éµåŠŸèƒ½"
+
+#: ../rules/base.xml.in.h:85
+msgid "CapsLock key changes group."
+msgstr "以 Caps Lock éµæ”¹è®Šç¾¤çµ„"
+
+#: ../rules/base.xml.in.h:86
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "以 Caps Lock åˆ‡æ› Shift 狀態而影響到所有按éµã€‚"
+
+#: ../rules/base.xml.in.h:87
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "以 Caps Lock 切æ›æ­£å¸¸çš„å­—æ¯å­—元大寫功能。"
+
+#: ../rules/base.xml.in.h:88
+msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
+msgstr "Caps Lock 使用內建的大寫功能。å¯ä»¥ Shift å–消之。"
+
+#: ../rules/base.xml.in.h:89
+msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
+msgstr "Caps Lock 使用內建的大寫功能。無法以 Shift å–消之。"
+
+#: ../rules/base.xml.in.h:90
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:91
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:92
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (替代é¸é …)"
+
+#: ../rules/base.xml.in.h:93
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:94
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony 網際網路éµç›¤"
+
+#: ../rules/base.xml.in.h:95
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:96
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:97
+msgid "Compaq Easy Access Keyboard"
+msgstr "康æŸè¼•é¬†å­˜å–éµç›¤"
+
+#: ../rules/base.xml.in.h:98
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "康æŸç¶²éš›éµç›¤(13éµ)"
+
+#: ../rules/base.xml.in.h:99
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "康æŸç¶²éš›éµç›¤(18éµ)"
+
+#: ../rules/base.xml.in.h:100
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "康æŸç¶²éš›éµç›¤(7éµ)"
+
+#: ../rules/base.xml.in.h:101
+msgid "Compaq iPaq Keyboard"
+msgstr "åº·æŸ iPaq éµç›¤"
+
+#: ../rules/base.xml.in.h:102
+msgid "Compose key position"
+msgstr "Compose éµçš„ä½ç½®"
+
+#: ../rules/base.xml.in.h:103
+msgid "Control key at bottom left"
+msgstr "Control éµåœ¨å·¦ä¸‹æ–¹"
+
+#: ../rules/base.xml.in.h:104
+msgid "Control key at left of 'A'"
+msgstr "Control éµåœ¨â€œAâ€çš„左邊"
+
+#: ../rules/base.xml.in.h:105
+msgid "Control key position"
+msgstr "Control éµçš„ä½ç½®"
+
+#: ../rules/base.xml.in.h:106
+msgid "Control+Shift changes group."
+msgstr "以 Control+Shift éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:107
+msgid "Croatia"
+msgstr "克羅埃西亞"
+
+#: ../rules/base.xml.in.h:108
+msgid "Cyrillic"
+msgstr "斯拉夫文"
+
+#: ../rules/base.xml.in.h:109
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:110
+msgid "Czechia"
+msgstr "æ·å…‹æ–‡"
+
+#: ../rules/base.xml.in.h:111
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:112
+msgid "Dead acute"
+msgstr "Dead acute"
+
+#: ../rules/base.xml.in.h:113
+msgid "Dead grave acute"
+msgstr "Dead grave acute"
+
+#: ../rules/base.xml.in.h:114
+msgid "Dell"
+msgstr "戴爾"
+
+#: ../rules/base.xml.in.h:115
+msgid "Dell 101-key PC"
+msgstr "戴爾 101 éµ éµç›¤"
+
+#: ../rules/base.xml.in.h:116
+msgid "Denmark"
+msgstr "丹麥"
+
+#: ../rules/base.xml.in.h:117
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:118
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa ç„¡ç·šæ¡Œé¢éµç›¤"
+
+#: ../rules/base.xml.in.h:119
+msgid "Dhivehi"
+msgstr "迪è²å–œæ–‡"
+
+#: ../rules/base.xml.in.h:120
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 系列"
+
+#: ../rules/base.xml.in.h:121
+msgid "Div"
+msgstr "Div"
+
+#: ../rules/base.xml.in.h:122
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:123
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:124
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "Dvorak,波蘭å¼å¼•è™Ÿç½®æ–¼ã€Œ1/!ã€æŒ‰éµ"
+
+#: ../rules/base.xml.in.h:125
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak,波蘭å¼å¼•è™Ÿç½®æ–¼ã€Œ1/!ã€æŒ‰éµ"
+
+#: ../rules/base.xml.in.h:126
+msgid "Eliminate dead keys"
+msgstr "除去無用按éµ"
+
+#: ../rules/base.xml.in.h:127
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:128
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:129
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:130
+msgid "Estonia"
+msgstr "愛沙尼亞"
+
+#: ../rules/base.xml.in.h:131
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:132
+msgid "Extended"
+msgstr "延伸的"
+
+#: ../rules/base.xml.in.h:133
+msgid "Extended Backslash"
+msgstr "延伸的å斜線"
+
+#: ../rules/base.xml.in.h:134
+msgid "F-letter (F) variant"
+msgstr "F å­—æ¯è®ŠåŒ–"
+
+#: ../rules/base.xml.in.h:135
+msgid "Fao"
+msgstr "Fao"
+
+#: ../rules/base.xml.in.h:136
+msgid "Faroe Islands"
+msgstr "法羅群島"
+
+#: ../rules/base.xml.in.h:137
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:138
+msgid "Finland"
+msgstr "芬蘭"
+
+#: ../rules/base.xml.in.h:139
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:140
+msgid "France"
+msgstr "法國"
+
+#: ../rules/base.xml.in.h:141
+msgid "French"
+msgstr "法文"
+
+#: ../rules/base.xml.in.h:142
+msgid "French (legacy)"
+msgstr "法文 (傳統)"
+
+#: ../rules/base.xml.in.h:143
+msgid "French Dvorak"
+msgstr "法文 Dvorak"
+
+#: ../rules/base.xml.in.h:144
+msgid "French, Sun dead keys"
+msgstr "法文,Sun 的無用按éµ"
+
+#: ../rules/base.xml.in.h:145
+msgid "French, eliminate dead keys"
+msgstr "法文,除去無用按éµ"
+
+#: ../rules/base.xml.in.h:146
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:147
+msgid "Generic 101-key PC"
+msgstr "一般 101éµ éµç›¤"
+
+#: ../rules/base.xml.in.h:148
+msgid "Generic 102-key (Intl) PC"
+msgstr "一般 102éµ (國際) éµç›¤"
+
+#: ../rules/base.xml.in.h:149
+msgid "Generic 104-key PC"
+msgstr "一般 104éµ éµç›¤"
+
+#: ../rules/base.xml.in.h:150
+msgid "Generic 105-key (Intl) PC"
+msgstr "一般 105 éµ (國際) éµç›¤"
+
+#: ../rules/base.xml.in.h:151
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "昆盈 Comfy KB-16M / 昆盈 MM éµç›¤ KWD-910"
+
+#: ../rules/base.xml.in.h:152
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "昆盈 Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:153
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:154
+msgid "Georgia"
+msgstr "喬治亞"
+
+#: ../rules/base.xml.in.h:155
+msgid "German, Sun dead keys"
+msgstr "德文,Sun 的無用按éµ"
+
+#: ../rules/base.xml.in.h:156
+msgid "German, eliminate dead keys"
+msgstr "德文,除去無用按éµ"
+
+#: ../rules/base.xml.in.h:157
+msgid "Germany"
+msgstr "德國"
+
+#: ../rules/base.xml.in.h:158
+msgid "Gre"
+msgstr "Gre"
+
+#: ../rules/base.xml.in.h:159
+msgid "Greece"
+msgstr "希臘"
+
+#: ../rules/base.xml.in.h:160
+msgid "Group Shift/Lock behavior"
+msgstr "群組 Shift/Lock 功能"
+
+#: ../rules/base.xml.in.h:161
+msgid "Gujarati"
+msgstr "å¤å‰æ‹‰ç‰¹æ–‡(å°åº¦)"
+
+#: ../rules/base.xml.in.h:162
+msgid "Gurmukhi"
+msgstr "å¤çˆ¾ç©†å¸Œæ–‡"
+
+#: ../rules/base.xml.in.h:163
+msgid "Gyration"
+msgstr "回轉"
+
+#: ../rules/base.xml.in.h:164
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "惠普網際éµç›¤"
+
+#: ../rules/base.xml.in.h:165
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "惠普 Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:166
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "惠普 Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:167
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "惠普 Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:168
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "惠普 Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:169
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "惠普 Omnibook XE3 CF"
+
+#: ../rules/base.xml.in.h:170
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "惠普 Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:171
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "惠普 Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:172
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "惠普 SK-2501 多媒體éµç›¤"
+
+#: ../rules/base.xml.in.h:173
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "惠普 SK-2505 網際éµç›¤"
+
+#: ../rules/base.xml.in.h:174
+msgid "Honeywell Euroboard"
+msgstr "Honeywell æ­æ´²éµç›¤"
+
+#: ../rules/base.xml.in.h:175
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:176
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:177
+msgid "Hungary"
+msgstr "匈牙利"
+
+#: ../rules/base.xml.in.h:178
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper é…置到兩個 Win-key。"
+
+#: ../rules/base.xml.in.h:179
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:180
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:181
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II(替代é¸é …)"
+
+#: ../rules/base.xml.in.h:182
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:183
+msgid "ISO Alternate"
+msgstr "ISO 替代"
+
+#: ../rules/base.xml.in.h:184
+msgid "Iceland"
+msgstr "冰島"
+
+#: ../rules/base.xml.in.h:185
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:186
+msgid "India"
+msgstr "å°åº¦"
+
+#: ../rules/base.xml.in.h:187
+msgid "International (with dead keys)"
+msgstr "國際éµç›¤ (附無用按éµ)"
+
+#: ../rules/base.xml.in.h:188
+msgid "Inuktitut"
+msgstr "伊努伊特éµç›¤"
+
+#: ../rules/base.xml.in.h:189
+msgid "Iran"
+msgstr "伊朗"
+
+#: ../rules/base.xml.in.h:190
+msgid "Ireland"
+msgstr "愛爾蘭"
+
+#: ../rules/base.xml.in.h:191
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:192
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:193
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:194
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:195
+msgid "Israel"
+msgstr "以色列"
+
+#: ../rules/base.xml.in.h:196
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:197
+msgid "Italy"
+msgstr "æ„大利"
+
+#: ../rules/base.xml.in.h:198
+msgid "Japan"
+msgstr "日本"
+
+#: ../rules/base.xml.in.h:199
+msgid "Japanese 106-key"
+msgstr "日文 106éµ éµç›¤"
+
+#: ../rules/base.xml.in.h:200
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:201
+msgid "Kannada"
+msgstr "å°åº¦å¡ç´é”æ–‡"
+
+#: ../rules/base.xml.in.h:202
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:203
+msgid "Kyr"
+msgstr "Kyr"
+
+#: ../rules/base.xml.in.h:204
+msgid "Kyrgyzstan"
+msgstr "å‰çˆ¾å‰æ–¯"
+
+#: ../rules/base.xml.in.h:205
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:206
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:207
+msgid "Laos"
+msgstr "寮國"
+
+#: ../rules/base.xml.in.h:208
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "å¯æ”œå¼/筆記型 åº·æŸ (如 Armada) å¯æ”œå¼éµç›¤"
+
+#: ../rules/base.xml.in.h:209
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "å¯æ”œå¼/筆記型 åº·æŸ (如 Presario) 網際éµç›¤"
+
+#: ../rules/base.xml.in.h:210
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr "å¯æ”œå¼/筆記型 戴爾 Inspiron 8xxx"
+
+#: ../rules/base.xml.in.h:211
+msgid "Latin"
+msgstr "拉ä¸æ–‡"
+
+#: ../rules/base.xml.in.h:212
+msgid "Latin American"
+msgstr "拉ä¸ç¾Žæ´²"
+
+#: ../rules/base.xml.in.h:213
+msgid "Latin Unicode"
+msgstr "拉ä¸æ–‡çµ±ä¸€ç¢¼"
+
+#: ../rules/base.xml.in.h:214
+msgid "Latin Unicode qwerty"
+msgstr "拉ä¸æ–‡çµ±ä¸€ç¢¼ qwerty"
+
+#: ../rules/base.xml.in.h:215
+msgid "Latin qwerty"
+msgstr "拉ä¸æ–‡ qwerty"
+
+#: ../rules/base.xml.in.h:216
+msgid "Latin with guillemots"
+msgstr "拉ä¸æ–‡é™„海鳩符號"
+
+#: ../rules/base.xml.in.h:217
+msgid "Latvia"
+msgstr "拉脫維亞"
+
+#: ../rules/base.xml.in.h:218
+msgid "Left Alt key changes group."
+msgstr "以左邊的 Alt éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:219
+msgid "Left Alt key switches group while pressed."
+msgstr "當按下左邊的 Alt éµæ™‚切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:220
+msgid "Left Ctrl key changes group."
+msgstr "以左邊的 Ctrl éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:221
+msgid "Left Shift key changes group."
+msgstr "以左邊的 Shift éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:222
+msgid "Left Win-key changes group."
+msgstr "以左邊的 Win-key 改變群組。"
+
+#: ../rules/base.xml.in.h:223
+msgid "Left Win-key switches group while pressed."
+msgstr "當按下左邊的 Win-key 時切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:224
+msgid "Lithuania"
+msgstr "立陶宛"
+
+#: ../rules/base.xml.in.h:225
+msgid "Logitech Access Keyboard"
+msgstr "羅技 Access éµç›¤"
+
+#: ../rules/base.xml.in.h:226
+msgid "Logitech Cordless Desktop"
+msgstr "羅技無影手"
+
+#: ../rules/base.xml.in.h:227
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "羅技無影手桌é¢å°Žèˆªå™¨"
+
+#: ../rules/base.xml.in.h:228
+msgid "Logitech Cordless Desktop Optical"
+msgstr "羅技無影手光學組åˆ"
+
+#: ../rules/base.xml.in.h:229
+msgid "Logitech Cordless Desktop Pro"
+msgstr "羅技無影手進階版"
+
+#: ../rules/base.xml.in.h:230
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "羅技無影手進階版(替代é¸é …)"
+
+#: ../rules/base.xml.in.h:231
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "羅技無影手進階版(替代é¸é …)"
+
+#: ../rules/base.xml.in.h:232
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "羅技網際無影手"
+
+#: ../rules/base.xml.in.h:233
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "羅技極光無影手組åˆ/æ¡Œé¢å°Žèˆªå™¨"
+
+#: ../rules/base.xml.in.h:234
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "羅技強手éµç›¤"
+
+#: ../rules/base.xml.in.h:235
+msgid "Logitech Internet Keyboard"
+msgstr "羅技網際éµç›¤"
+
+#: ../rules/base.xml.in.h:236
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "羅技網際導航éµç›¤"
+
+#: ../rules/base.xml.in.h:237
+msgid "Logitech Ultra-X Keyboard"
+msgstr "羅技銀幻手éµç›¤"
+
+#: ../rules/base.xml.in.h:238
+msgid "Logitech iTouch"
+msgstr "羅技 iTouch"
+
+#: ../rules/base.xml.in.h:239
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "羅技 iTouch 無影手éµç›¤(型號 Y-RB6)"
+
+#: ../rules/base.xml.in.h:240
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "羅技 iTouch éµç›¤ç¶²éš›å°Žèˆªå™¨"
+
+#: ../rules/base.xml.in.h:241
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:242
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:243
+msgid "Macedonian"
+msgstr "馬其頓文"
+
+#: ../rules/base.xml.in.h:244
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:245
+msgid "Macintosh Old"
+msgstr "Macintosh 舊產å“"
+
+#: ../rules/base.xml.in.h:246
+msgid "Make CapsLock an additional Control."
+msgstr "以 Caps Lock åšç‚ºé™„加的控制éµã€‚"
+
+#: ../rules/base.xml.in.h:247
+msgid "Malayalam"
+msgstr "(å°åº¦)馬來雅拉姆文字"
+
+#: ../rules/base.xml.in.h:248
+msgid "Malta"
+msgstr "馬爾它"
+
+#: ../rules/base.xml.in.h:249
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:250
+msgid "Maori"
+msgstr "毛利"
+
+#: ../rules/base.xml.in.h:251
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:252
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access éµç›¤"
+
+#: ../rules/base.xml.in.h:253
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:254
+msgid "Menu is Compose."
+msgstr "Menu 為組åˆéµã€‚"
+
+#: ../rules/base.xml.in.h:255
+msgid "Menu key changes group."
+msgstr "以 Menu éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:256
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta é…置到兩個 Win-key。"
+
+#: ../rules/base.xml.in.h:257
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta é…置到左邊的 Win-key。"
+
+#: ../rules/base.xml.in.h:258
+msgid "Microsoft Internet Keyboard"
+msgstr "微軟網際éµç›¤"
+
+#: ../rules/base.xml.in.h:259
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "微軟網際éµç›¤å¢žå¼·ç‰ˆï¼Œç‘žå…¸"
+
+#: ../rules/base.xml.in.h:260
+msgid "Microsoft Natural"
+msgstr "微軟自然éµç›¤"
+
+#: ../rules/base.xml.in.h:261
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "微軟原生éµç›¤å¢žå¼·ç‰ˆ/微軟網際éµç›¤å¢žå¼·ç‰ˆ"
+
+#: ../rules/base.xml.in.h:262
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "微軟原生éµç›¤å¢žå¼·ç‰ˆ OEM"
+
+#: ../rules/base.xml.in.h:263
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "微軟自然éµç›¤å¢žå¼·ç‰ˆ USB/微軟網際éµç›¤å¢žå¼·ç‰ˆ"
+
+#: ../rules/base.xml.in.h:264
+msgid "Microsoft Office Keyboard"
+msgstr "微軟 Office éµç›¤"
+
+#: ../rules/base.xml.in.h:265
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "微軟無線多媒體éµç›¤ 1.0A"
+
+#: ../rules/base.xml.in.h:266
+msgid "Miscellaneous compatibility options"
+msgstr "其它相容é¸é …"
+
+#: ../rules/base.xml.in.h:267
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:268
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:269
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:270
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:271
+msgid "Mongolia"
+msgstr "è’™å¤"
+
+#: ../rules/base.xml.in.h:272
+msgid "Multilingual"
+msgstr "多語言"
+
+#: ../rules/base.xml.in.h:273
+msgid "Multilingual, second part"
+msgstr "多語言,第二部份"
+
+#: ../rules/base.xml.in.h:274
+msgid "Myanmar"
+msgstr "緬甸"
+
+#: ../rules/base.xml.in.h:275
+msgid "Netherlands"
+msgstr "è·è˜­"
+
+#: ../rules/base.xml.in.h:276
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:277
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:278
+msgid "Northern Saami"
+msgstr "北部沙米文"
+
+#: ../rules/base.xml.in.h:279
+msgid "Northern Saami, eliminate dead keys"
+msgstr "北部沙米文,除去無用按éµ"
+
+#: ../rules/base.xml.in.h:280
+msgid "Northgate OmniKey 101"
+msgstr "Northgate Omnikey 101"
+
+#: ../rules/base.xml.in.h:281
+msgid "Norway"
+msgstr "挪å¨"
+
+#: ../rules/base.xml.in.h:282
+msgid "NumLock LED shows alternative group."
+msgstr "以 Num Lock 燈號來顯示替代的群組。"
+
+#: ../rules/base.xml.in.h:283
+msgid "Ogham"
+msgstr "(å¤æ„›çˆ¾è˜­)æ­ç”˜æ–‡å­—"
+
+#: ../rules/base.xml.in.h:284
+msgid "Ogham IS434"
+msgstr "æ­ç”˜æ–‡å­— IS434"
+
+#: ../rules/base.xml.in.h:285
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/網際éµç›¤"
+
+#: ../rules/base.xml.in.h:286
+msgid "Oriya"
+msgstr "(å°åº¦)奧里雅æ—文字"
+
+#: ../rules/base.xml.in.h:287
+msgid "PC-98xx Series"
+msgstr "PC-98xx 系列"
+
+#: ../rules/base.xml.in.h:288
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:289
+msgid "Pakistan"
+msgstr "巴基斯å¦"
+
+#: ../rules/base.xml.in.h:290
+msgid "Pattachote"
+msgstr "æ³°æ–‡"
+
+#: ../rules/base.xml.in.h:291
+msgid "Phonetic"
+msgstr "音標"
+
+#: ../rules/base.xml.in.h:292
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:293
+msgid "Poland"
+msgstr "波蘭"
+
+#: ../rules/base.xml.in.h:294
+msgid "Polytonic"
+msgstr "多音字æ¯"
+
+#: ../rules/base.xml.in.h:295
+msgid "Portugal"
+msgstr "è‘¡è„牙"
+
+#: ../rules/base.xml.in.h:296
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: ../rules/base.xml.in.h:297
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "按下左邊的 Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:298
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "按下左邊的 Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:299
+msgid "Press Menu key to choose 3rd level."
+msgstr "按下 Menu éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:300
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "按下å³é‚Šçš„ Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:301
+msgid "Press Right Control to choose 3rd level."
+msgstr "按下å³é‚Šçš„ Control 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:302
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "按下å³é‚Šçš„ Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:303
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "按下任一 Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:304
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "按下任一 Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:305
+msgid "Probhat"
+msgstr "孟加拉 Probhat"
+
+#: ../rules/base.xml.in.h:306
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:307
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:308
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:309
+msgid "R-Alt switches group while pressed."
+msgstr "當按下å³é‚Š Alt 時切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:310
+msgid "Right Alt is Compose."
+msgstr "å³é‚Šçš„ Alt 為組åˆéµã€‚"
+
+#: ../rules/base.xml.in.h:311
+msgid "Right Alt key changes group."
+msgstr "以å³é‚Šçš„ Alt éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:312
+msgid "Right Control key works as Right Alt."
+msgstr "å³é‚Š Ctrl éµç­‰åŒæ–¼å³é‚Š Alt。"
+
+#: ../rules/base.xml.in.h:313
+msgid "Right Ctrl is Compose."
+msgstr "å³é‚Šçš„ Ctrl 為組åˆéµã€‚"
+
+#: ../rules/base.xml.in.h:314
+msgid "Right Ctrl key changes group."
+msgstr "以å³é‚Šçš„ Ctrl éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:315
+msgid "Right Ctrl key switches group while pressed."
+msgstr "當按下å³é‚Šçš„ Ctrl éµæ™‚切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:316
+msgid "Right Shift key changes group."
+msgstr "以å³é‚Šçš„ Shift éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:317
+msgid "Right Win-key changes group."
+msgstr "以å³é‚Šçš„ Win-key 改變群組。"
+
+#: ../rules/base.xml.in.h:318
+msgid "Right Win-key is Compose."
+msgstr "å³é‚Šçš„ Win-key 為組åˆéµã€‚"
+
+#: ../rules/base.xml.in.h:319
+msgid "Right Win-key switches group while pressed."
+msgstr "當按下å³é‚Šçš„ Win-key 時切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:320
+msgid "Romania"
+msgstr "羅馬尼亞"
+
+#: ../rules/base.xml.in.h:321
+msgid "Romanian keyboard with German letters"
+msgstr "羅馬尼亞éµç›¤é™„德文字æ¯"
+
+#: ../rules/base.xml.in.h:322
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "羅馬尼亞éµç›¤é™„德文字æ¯ï¼Œé™¤åŽ»ç„¡ç”¨æŒ‰éµ"
+
+#: ../rules/base.xml.in.h:323
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:324
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:325
+msgid "Russia"
+msgstr "ä¿„ç¾…æ–¯"
+
+#: ../rules/base.xml.in.h:326
+msgid "Russian"
+msgstr "ä¿„æ–‡"
+
+#: ../rules/base.xml.in.h:327
+msgid "Russian phonetic"
+msgstr "俄文音標"
+
+#: ../rules/base.xml.in.h:328
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "俄文音標,除去無用按éµ"
+
+#: ../rules/base.xml.in.h:329
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:330
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:331
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:332
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:333
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:334
+msgid "Samsung SDM 4500P"
+msgstr "三星 SDM 4500P"
+
+#: ../rules/base.xml.in.h:335
+msgid "Samsung SDM 4510P"
+msgstr "三星 SDM 4510P"
+
+#: ../rules/base.xml.in.h:336
+msgid "ScrollLock LED shows alternative group."
+msgstr "以 Scroll Lock 燈號來顯示替代的群組。"
+
+#: ../rules/base.xml.in.h:337
+msgid "Serbian"
+msgstr "塞爾維亞文"
+
+#: ../rules/base.xml.in.h:338
+msgid "Shift with numpad keys works as in MS Windows."
+msgstr "Shift+數字éµç›¤çš„功能等åŒæ–¼åœ¨ MS Windows 之中。"
+
+#: ../rules/base.xml.in.h:339
+msgid "Shift+CapsLock changes group."
+msgstr "以 Shift+Caps Lock éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:340
+msgid "Slovakia"
+msgstr "斯洛ä¼å…‹"
+
+#: ../rules/base.xml.in.h:341
+msgid "Slovenia"
+msgstr "斯洛凡尼亞"
+
+#: ../rules/base.xml.in.h:342
+msgid "Spain"
+msgstr "西ç­ç‰™"
+
+#: ../rules/base.xml.in.h:343
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "伺æœå™¨è™•ç†çš„ç‰¹æ®Šéµ (Ctrl+Alt+&lt;key&gt;)。"
+
+#: ../rules/base.xml.in.h:344
+msgid "SrL"
+msgstr "SrL"
+
+#: ../rules/base.xml.in.h:345
+msgid "Sri Lanka"
+msgstr "斯里蘭å¡"
+
+#: ../rules/base.xml.in.h:346
+msgid "Srp"
+msgstr "Srp"
+
+#: ../rules/base.xml.in.h:347
+msgid "Standard"
+msgstr "標準"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:349
+msgid "Standard RSTU"
+msgstr "標準 RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:351
+msgid "Standard RSTU on Russian layout"
+msgstr "俄文排列上的標準 RSTU"
+
+#: ../rules/base.xml.in.h:352
+msgid "Sun dead keys"
+msgstr "Sun 無用按éµ"
+
+#: ../rules/base.xml.in.h:353
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power 多媒體éµç›¤"
+
+#: ../rules/base.xml.in.h:354
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super é…置到兩個 Win-key (é è¨­å€¼ï¼‰ã€‚"
+
+#: ../rules/base.xml.in.h:355
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:356
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:357
+msgid "Swap Control and CapsLock."
+msgstr "Control 與 Caps Lock éµäº’æ›ã€‚"
+
+#: ../rules/base.xml.in.h:358
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:359
+msgid "Sweden"
+msgstr "ç‘žå…¸"
+
+#: ../rules/base.xml.in.h:360
+msgid "Switzerland"
+msgstr "瑞士"
+
+#: ../rules/base.xml.in.h:361
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (å¹³æ¿é›»è…¦)"
+
+#: ../rules/base.xml.in.h:362
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:363
+msgid "Syria"
+msgstr "敘利亞"
+
+#: ../rules/base.xml.in.h:364
+msgid "Syriac"
+msgstr "敘利亞語"
+
+#: ../rules/base.xml.in.h:365
+msgid "Syriac phonetic"
+msgstr "敘利亞音標"
+
+#: ../rules/base.xml.in.h:366
+msgid "TIS-820.2538"
+msgstr "泰語(TIS-820.2538)"
+
+#: ../rules/base.xml.in.h:367
+msgid "Tajikistan"
+msgstr "å¡”å‰å…‹"
+
+#: ../rules/base.xml.in.h:368
+msgid "Tamil"
+msgstr "å¦ç±³çˆ¾æ–‡"
+
+#: ../rules/base.xml.in.h:369
+msgid "Tamil INSCRIPT"
+msgstr "å¦ç±³çˆ¾æ–‡ INSCRIPT"
+
+#: ../rules/base.xml.in.h:370
+msgid "Tamil TAB Typewriter"
+msgstr "å¦ç±³çˆ¾æ–‡ TAB 打字機"
+
+#: ../rules/base.xml.in.h:371
+msgid "Tamil TSCII Typewriter"
+msgstr "å¦ç±³çˆ¾æ–‡ TSCII 打字機"
+
+#: ../rules/base.xml.in.h:372
+msgid "Tamil Unicode"
+msgstr "å¦ç±³çˆ¾æ–‡çµ±ä¸€ç¢¼"
+
+#: ../rules/base.xml.in.h:373
+msgid "Telugu"
+msgstr "泰盧固語"
+
+#: ../rules/base.xml.in.h:374
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:375
+msgid "Thailand"
+msgstr "泰國"
+
+#: ../rules/base.xml.in.h:376
+msgid "Third level choosers"
+msgstr "第三級é¸æ“‡å™¨"
+
+#: ../rules/base.xml.in.h:377
+msgid "Tilde (~) variant"
+msgstr "波折號 (~) 變化"
+
+#: ../rules/base.xml.in.h:378
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:379
+msgid "Toshiba Satellite S3000"
+msgstr "æ±èŠ Satellite S3000"
+
+#: ../rules/base.xml.in.h:380
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access éµç›¤"
+
+#: ../rules/base.xml.in.h:381
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust 無線經典éµç›¤"
+
+#: ../rules/base.xml.in.h:382
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:383
+msgid "Turkish"
+msgstr "土耳其文"
+
+#: ../rules/base.xml.in.h:384
+msgid "Typewriter"
+msgstr "打字機"
+
+#: ../rules/base.xml.in.h:385
+msgid "U.S. English"
+msgstr "美å¼è‹±æ–‡"
+
+#: ../rules/base.xml.in.h:386
+msgid "US keyboard with Croatian letters"
+msgstr "美國éµç›¤é™„克羅埃西亞字æ¯"
+
+#: ../rules/base.xml.in.h:387
+msgid "US keyboard with Lithuanian letters"
+msgstr "美國éµç›¤é™„立陶宛字æ¯"
+
+#: ../rules/base.xml.in.h:388
+msgid "US keyboard with Maltian letters"
+msgstr "美國éµç›¤é™„馬爾它字æ¯"
+
+#: ../rules/base.xml.in.h:389
+msgid "US keyboard with Romanian letters"
+msgstr "美國éµç›¤é™„羅馬尼亞字æ¯"
+
+#: ../rules/base.xml.in.h:390
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:391
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:392
+msgid "Ukraine"
+msgstr "çƒå…‹è˜­"
+
+#: ../rules/base.xml.in.h:393
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:394
+msgid "United Kingdom"
+msgstr "英國"
+
+#: ../rules/base.xml.in.h:395
+msgid "Urdu"
+msgstr "çƒéƒ½æ–‡"
+
+#: ../rules/base.xml.in.h:396
+msgid "Use keyboard LED to show alternative group."
+msgstr "使用éµç›¤ç‡ˆè™Ÿä¾†é¡¯ç¤ºæ›¿ä»£çš„群組。"
+
+#: ../rules/base.xml.in.h:397
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:398
+msgid "Uzbekistan"
+msgstr "çƒèŒ²åˆ¥å…‹"
+
+#: ../rules/base.xml.in.h:399
+msgid "Vietnam"
+msgstr "越å—"
+
+#: ../rules/base.xml.in.h:400
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:401
+msgid "Winbook Model XP5"
+msgstr "Winbook XP5 éµç›¤"
+
+#: ../rules/base.xml.in.h:402
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: ../rules/base.xml.in.h:403
+msgid "With &lt;\\|&gt; key"
+msgstr "附帶 &lt;\\|&gt; éµ"
+
+#: ../rules/base.xml.in.h:404
+msgid "With guillemots"
+msgstr "附帶海鳩符號"
+
+#: ../rules/base.xml.in.h:405
+msgid "Yahoo! Internet Keyboard"
+msgstr "雅虎網際éµç›¤"
+
+#: ../rules/base.xml.in.h:406
+msgid "Z and ZHE swapped"
+msgstr "å·²äº¤æ› Z 與 ZHE"
+
+#: ../rules/base.xml.in.h:407
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:408
+msgid "azerty/digits"
+msgstr "azerty/數字"
+
+#: ../rules/base.xml.in.h:409
+msgid "digits"
+msgstr "數字"
+
+#: ../rules/base.xml.in.h:410
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:411
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:412
+msgid "qwerty, extended Backslash"
+msgstr "qwerty,延伸的å斜線"
+
+#: ../rules/base.xml.in.h:413
+msgid "qwerty/digits"
+msgstr "qwerty/數字"
+
+#: ../rules/base.xml.in.h:414
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.xml.in.h:415
+msgid "si1452"
+msgstr "si1452"
diff --git a/xorg-server/xkeyboard-config/rules/HDR b/xorg-server/xkeyboard-config/rules/HDR
index 769b8fc7f..664d48ef2 100644
--- a/xorg-server/xkeyboard-config/rules/HDR
+++ b/xorg-server/xkeyboard-config/rules/HDR
@@ -1,33 +1,33 @@
-! model = keycodes
-! layout[1] = keycodes
-! layout = keycodes
-! option = keycodes
-! model layout = geometry
-! model = geometry
-! model layout variant = symbols
-! model layout = symbols
-! model layout[1] = symbols
-! model layout[1] variant[1] = symbols
-! model layout[2] = symbols
-! model layout[3] = symbols
-! model layout[4] = symbols
-! model layout[2] variant[2] = symbols
-! model layout[3] variant[3] = symbols
-! model layout[4] variant[4] = symbols
-! model = symbols
-! layout variant = compat
-! layout[1] variant[1] = compat
-! layout[2] variant[2] = compat
-! layout[3] variant[3] = compat
-! layout[4] variant[4] = compat
-! model layout = compat
-! model layout[1] = compat
-! model = types
-! layout option = symbols
-! layout[1] option = symbols
-! layout[2] option = symbols
-! layout[3] option = symbols
-! layout[4] option = symbols
-! option = symbols
-! option = compat
-! option = types
+! model = keycodes
+! layout[1] = keycodes
+! layout = keycodes
+! option = keycodes
+! model layout = geometry
+! model = geometry
+! model layout variant = symbols
+! model layout = symbols
+! model layout[1] = symbols
+! model layout[1] variant[1] = symbols
+! model layout[2] = symbols
+! model layout[3] = symbols
+! model layout[4] = symbols
+! model layout[2] variant[2] = symbols
+! model layout[3] variant[3] = symbols
+! model layout[4] variant[4] = symbols
+! model = symbols
+! layout variant = compat
+! layout[1] variant[1] = compat
+! layout[2] variant[2] = compat
+! layout[3] variant[3] = compat
+! layout[4] variant[4] = compat
+! model layout = compat
+! model layout[1] = compat
+! model = types
+! layout option = symbols
+! layout[1] option = symbols
+! layout[2] option = symbols
+! layout[3] option = symbols
+! layout[4] option = symbols
+! option = symbols
+! option = compat
+! option = types
diff --git a/xorg-server/xkeyboard-config/rules/README b/xorg-server/xkeyboard-config/rules/README
index bcf19ce0c..cd73bca8f 100644
--- a/xorg-server/xkeyboard-config/rules/README
+++ b/xorg-server/xkeyboard-config/rules/README
@@ -1,2 +1,2 @@
-This directory lists sets of rules which can be used to obtain an exact XKB
-configuration.
+This directory lists sets of rules which can be used to obtain an exact XKB
+configuration.
diff --git a/xorg-server/xkeyboard-config/rules/base.hdr.part b/xorg-server/xkeyboard-config/rules/base.hdr.part
index 6550f864d..8c90c2f29 100644
--- a/xorg-server/xkeyboard-config/rules/base.hdr.part
+++ b/xorg-server/xkeyboard-config/rules/base.hdr.part
@@ -1,6 +1,6 @@
-//
-// Rules for resolving XKB components for use with XFree86
-// Copyright 1996 by Joseph Moss
-//
-// 2002 Modifier: Ivan Pascal The XFree86 Project
-//
+//
+// Rules for resolving XKB components for use with XFree86
+// Copyright 1996 by Joseph Moss
+//
+// 2002 Modifier: Ivan Pascal The XFree86 Project
+//
diff --git a/xorg-server/xkeyboard-config/rules/base.l1_k.part b/xorg-server/xkeyboard-config/rules/base.l1_k.part
index 91b775396..032ca5331 100644
--- a/xorg-server/xkeyboard-config/rules/base.l1_k.part
+++ b/xorg-server/xkeyboard-config/rules/base.l1_k.part
@@ -1,3 +1,3 @@
- $azerty = +aliases(azerty)
- $qwertz = +aliases(qwertz)
- * = +aliases(qwerty)
+ $azerty = +aliases(azerty)
+ $qwertz = +aliases(qwertz)
+ * = +aliases(qwerty)
diff --git a/xorg-server/xkeyboard-config/rules/base.l1o_s.part b/xorg-server/xkeyboard-config/rules/base.l1o_s.part
index 592fab272..098539443 100644
--- a/xorg-server/xkeyboard-config/rules/base.l1o_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.l1o_s.part
@@ -1,2 +1,2 @@
- $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1
- * misc:typo = +typo(base):1
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1
+ * misc:typo = +typo(base):1
diff --git a/xorg-server/xkeyboard-config/rules/base.l2o_s.part b/xorg-server/xkeyboard-config/rules/base.l2o_s.part
index aac680e9d..5f4a5e60f 100644
--- a/xorg-server/xkeyboard-config/rules/base.l2o_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.l2o_s.part
@@ -1,2 +1,2 @@
- $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2
- * misc:typo = +typo(base):2
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2
+ * misc:typo = +typo(base):2
diff --git a/xorg-server/xkeyboard-config/rules/base.l3o_s.part b/xorg-server/xkeyboard-config/rules/base.l3o_s.part
index 1010e2e03..270af2bdc 100644
--- a/xorg-server/xkeyboard-config/rules/base.l3o_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.l3o_s.part
@@ -1,2 +1,2 @@
- $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3
- * misc:typo = +typo(base):3
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3
+ * misc:typo = +typo(base):3
diff --git a/xorg-server/xkeyboard-config/rules/base.l4o_s.part b/xorg-server/xkeyboard-config/rules/base.l4o_s.part
index 49650ad9c..7e6175637 100644
--- a/xorg-server/xkeyboard-config/rules/base.l4o_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.l4o_s.part
@@ -1,2 +1,2 @@
- $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4
- * misc:typo = +typo(base):4
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4
+ * misc:typo = +typo(base):4
diff --git a/xorg-server/xkeyboard-config/rules/base.l_k.part b/xorg-server/xkeyboard-config/rules/base.l_k.part
index 91b775396..032ca5331 100644
--- a/xorg-server/xkeyboard-config/rules/base.l_k.part
+++ b/xorg-server/xkeyboard-config/rules/base.l_k.part
@@ -1,3 +1,3 @@
- $azerty = +aliases(azerty)
- $qwertz = +aliases(qwertz)
- * = +aliases(qwerty)
+ $azerty = +aliases(azerty)
+ $qwertz = +aliases(qwertz)
+ * = +aliases(qwerty)
diff --git a/xorg-server/xkeyboard-config/rules/base.lists.part b/xorg-server/xkeyboard-config/rules/base.lists.part
index 64319d376..c7983df87 100644
--- a/xorg-server/xkeyboard-config/rules/base.lists.part
+++ b/xorg-server/xkeyboard-config/rules/base.lists.part
@@ -1,107 +1,107 @@
-
-// If you want non-latin layouts implicitly include the en_US layout
-// uncomment lines below
-//! $nonlatin = am ara ben bd bg bt by cs deva ge gh gr guj guru il \
-// in ir iku jp kan kh kr la lao lk mk mm mn mv mal ori pk \
-// ru scc sy syr tel th tj tam ua uz
-
-// PC models
-! $pcmodels = pc101 pc102 pc104 pc105
-
-// Microsoft models (using MS geometry)
-! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose
-
-// Nokia devices and keyboards
-! $nokiamodels = nokiasu8w nokiarx44 nokiarx51
-
-// PC geometries - they have special geometry but symbols are mostly pc105
-! $pcgeometries = latitude
-
-// TypeMatrix geometries
-! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106
-
-// Layouts that provide further specializations for the OLPC
-! $olpclayouts = af am ara br ca es et fr it kh kz in mn np ru th tr us
-
-! $macbooks = macbook78 macbook79
-! $maclaptop = ibook powerbook macbook78 macbook79
-! $applealu = applealu_ansi applealu_iso applealu_jis
-! $macs = macintosh macintosh_old ibook powerbook macbook78 macbook79
-
-! $macvendorlayouts = ch de dk fi fr gb is it latam nl no pt se us
-
-! $azerty = be fr
-! $qwertz = al cz de hr hu ro si sk
-
-! $inetkbds = acer_c300 acer_ferrari4k acer_laptop \
- airkey \
- apple armada azonaRF2300 \
- benqx brother \
- btc5113rf btc9000 btc9000a btc9001ah btc5090 btc9019u \
- cherryblue cherrybluea cherryblueb \
- cherrycyboard cherrycmexpert \
- chicony chicony0108 chicony0420 chicony9885 \
- compalfl90 \
- compaqeak8 compaqik7 compaqik13 compaqik18 \
- creativedw7000 \
- cymotionlinux \
- dell dellm65 inspiron dellusbmm \
- emachines ennyah_dkb1008 evdev \
- genius geniuscomfy2 \
- gyration honeywell_euroboard \
- hp250x hp5xx hp500fa hpdv5 \
- hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx htcdream \
- ibm_spacesaver ipaq inspiron intel \
- logiaccess logicda logicink \
- logiex110 logiclx300 \
- logiinkse logiinkseusb logiitc logiik \
- logitech_base itouch logiultrax \
- logitech_g15 \
- logidinovo logidinovoedge \
- microsoft4000 microsoft7000 microsoftinet microsoftprousb microsoftprooem microsoftprose \
- microsoftoffice microsoftmult \
- mx1998 mx2500 mx2750 \
- oretec \
- pc105 \
- presario propeller \
- qtronix \
- rapidaccess rapidaccess2 thinkpad60 \
- samsung4500 samsung4510 \
- silvercrest \
- sk1300 sk2500 sk6200 sk7100 \
- sven sven303 symplon \
- toshiba_s3000 trust trustda \
- unitekkb1925 yahoo
-
-// all layouts with 3rd and 4th groups
-! $threelevellayouts = al az \
- be br bt \
- ca ch cs cz \
- de dk \
- ee es \
- fi fo fr \
- gb gr \
- hu \
- ie ir is it \
- latam \
- lk lt \
- mn mt \
- nl no \
- pl pt \
- ro \
- se sk \
- tr \
- us \
- vn \
- za
-
-! $evdevkbds = ibm_spacesaver
-
-! $thinkpads = thinkpad thinkpad60 thinkpadz60
-
-! $sun_t6_custom = ara be br ca ch cz de dk \
- ee es fi fr gb gr it kr \
- lt lv nl no pl pt ro ru \
- se sk tr tw ua
-
-! $htcdreamlayouts = us it de
+
+// If you want non-latin layouts implicitly include the en_US layout
+// uncomment lines below
+//! $nonlatin = am ara ben bd bg bt by cs deva ge gh gr guj guru il \
+// in ir iku jp kan kh kr la lao lk mk mm mn mv mal ori pk \
+// ru scc sy syr tel th tj tam ua uz
+
+// PC models
+! $pcmodels = pc101 pc102 pc104 pc105
+
+// Microsoft models (using MS geometry)
+! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose
+
+// Nokia devices and keyboards
+! $nokiamodels = nokiasu8w nokiarx44 nokiarx51
+
+// PC geometries - they have special geometry but symbols are mostly pc105
+! $pcgeometries = latitude
+
+// TypeMatrix geometries
+! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106
+
+// Layouts that provide further specializations for the OLPC
+! $olpclayouts = af am ara br ca es et fr it kh kz in mn np ru th tr us
+
+! $macbooks = macbook78 macbook79
+! $maclaptop = ibook powerbook macbook78 macbook79
+! $applealu = applealu_ansi applealu_iso applealu_jis
+! $macs = macintosh macintosh_old ibook powerbook macbook78 macbook79
+
+! $macvendorlayouts = ch de dk fi fr gb is it latam nl no pt se us
+
+! $azerty = be fr
+! $qwertz = al cz de hr hu ro si sk
+
+! $inetkbds = acer_c300 acer_ferrari4k acer_laptop \
+ airkey \
+ apple armada azonaRF2300 \
+ benqx brother \
+ btc5113rf btc9000 btc9000a btc9001ah btc5090 btc9019u \
+ cherryblue cherrybluea cherryblueb \
+ cherrycyboard cherrycmexpert \
+ chicony chicony0108 chicony0420 chicony9885 \
+ compalfl90 \
+ compaqeak8 compaqik7 compaqik13 compaqik18 \
+ creativedw7000 \
+ cymotionlinux \
+ dell dellm65 inspiron dellusbmm \
+ emachines ennyah_dkb1008 evdev \
+ genius geniuscomfy2 \
+ gyration honeywell_euroboard \
+ hp250x hp5xx hp500fa hpdv5 \
+ hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx htcdream \
+ ibm_spacesaver ipaq inspiron intel \
+ logiaccess logicda logicink \
+ logiex110 logiclx300 \
+ logiinkse logiinkseusb logiitc logiik \
+ logitech_base itouch logiultrax \
+ logitech_g15 \
+ logidinovo logidinovoedge \
+ microsoft4000 microsoft7000 microsoftinet microsoftprousb microsoftprooem microsoftprose \
+ microsoftoffice microsoftmult \
+ mx1998 mx2500 mx2750 \
+ oretec \
+ pc105 \
+ presario propeller \
+ qtronix \
+ rapidaccess rapidaccess2 thinkpad60 \
+ samsung4500 samsung4510 \
+ silvercrest \
+ sk1300 sk2500 sk6200 sk7100 \
+ sven sven303 symplon \
+ toshiba_s3000 trust trustda \
+ unitekkb1925 yahoo
+
+// all layouts with 3rd and 4th groups
+! $threelevellayouts = al az \
+ be br bt \
+ ca ch cs cz \
+ de dk \
+ ee es \
+ fi fo fr \
+ gb gr \
+ hu \
+ ie ir is it \
+ latam \
+ lk lt \
+ mn mt \
+ nl no \
+ pl pt \
+ ro \
+ se sk \
+ tr \
+ us \
+ vn \
+ za
+
+! $evdevkbds = ibm_spacesaver
+
+! $thinkpads = thinkpad thinkpad60 thinkpadz60
+
+! $sun_t6_custom = ara be br ca ch cz de dk \
+ ee es fi fr gb gr it kr \
+ lt lv nl no pl pt ro ru \
+ se sk tr tw ua
+
+! $htcdreamlayouts = us it de
diff --git a/xorg-server/xkeyboard-config/rules/base.lo_s.part b/xorg-server/xkeyboard-config/rules/base.lo_s.part
index dee7b6daa..1a37c3d48 100644
--- a/xorg-server/xkeyboard-config/rules/base.lo_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.lo_s.part
@@ -1,2 +1,2 @@
- $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle)
- * misc:typo = +typo(base)
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle)
+ * misc:typo = +typo(base)
diff --git a/xorg-server/xkeyboard-config/rules/base.m_k.part b/xorg-server/xkeyboard-config/rules/base.m_k.part
index 2c621208f..bae06c55d 100644
--- a/xorg-server/xkeyboard-config/rules/base.m_k.part
+++ b/xorg-server/xkeyboard-config/rules/base.m_k.part
@@ -1,14 +1,14 @@
- amiga = amiga(de)
- ataritt = ataritt(de)
- empty = empty
- sun4 = sun(type4_euro)
- sun5 = sun(type5_euro)
- sun6 = sun(type6_usb)
- sun6euro = sun(type6tuv_usb)
- pc98 = xfree98(pc98)
- $applealu = macintosh(alukbd)
- macintosh_hhk = macintosh(hhk)
- macintosh_old = macintosh(old)
- $macs = macintosh
- thinkpadz60 = xfree86(thinkpadz60)
- * = xfree86
+ amiga = amiga(de)
+ ataritt = ataritt(de)
+ empty = empty
+ sun4 = sun(type4_euro)
+ sun5 = sun(type5_euro)
+ sun6 = sun(type6_usb)
+ sun6euro = sun(type6tuv_usb)
+ pc98 = xfree98(pc98)
+ $applealu = macintosh(alukbd)
+ macintosh_hhk = macintosh(hhk)
+ macintosh_old = macintosh(old)
+ $macs = macintosh
+ thinkpadz60 = xfree86(thinkpadz60)
+ * = xfree86
diff --git a/xorg-server/xkeyboard-config/rules/base.m_s.part b/xorg-server/xkeyboard-config/rules/base.m_s.part
index 4bbbcce31..0eee0456d 100644
--- a/xorg-server/xkeyboard-config/rules/base.m_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.m_s.part
@@ -1,51 +1,51 @@
- a4techKB21 = +inet(media_nav_common)
- a4techKBS8 = +inet(media_nav_acpi_common)
- a4_rfkb23 = +inet(media_nav_acpi_common)
- asus_laptop = +inet(media_common)
- acer_tm_800 = +inet(acer_laptop)
- benqx730 = +inet(benqx)
- benqx800 = +inet(benqx)
- btc5126t = +inet(nav_acpi_common)
- btc9116u = +inet(btc9019u)
- btc6301urf = +inet(media_nav_acpi_common)
- dellsk8125 = +inet(dell)
- dellsk8135 = +inet(dell)
- cherrybunlim = +inet(nav_common)
- dexxa = +inet(media_nav_common)
- dtk2000 = +inet(media_nav_acpi_common)
- fscaa1667g = +inet(media_nav_common)
- geniuskb19e = +inet(media_nav_acpi_common)
- geniuscomfy = +inet(media_nav_acpi_common)
- geniuskkb2050hs = +inet(dellusbmm)
- hpnx9020 = +inet(hpi6)
- latitude = +inet(media_common)
- logicd = +inet(logitech_base)
- logicd_it = +inet(logitech_base)
- logicd_nav = +inet(logitech_base)
- logicd_opt = +inet(logitech_base)
- logiultrax = +inet(logitech_base)
- logiclx300 = +inet(logiex110)
- logii350 = +inet(logiex110)
- logimel = +inet(logiex110)
- logicdit = +inet(logicd)
- logicdo = +inet(logicd)
- logicdp = +inet(logicd)
- logicdpa = +inet(logicda)
- logiciink = +inet(logicink)
- ltcd = +inet(logicda)
- microsoftccurve2k = +inet(microsoftprooem)
- microsoftpro = +inet(media_nav_acpi_common)
- precision_m = +inet(media_nav_common)
- scorpius = +inet(media_nav_acpi_common)
- sp_inet = +inet(media_nav_acpi_common)
- targa_v811 = +inet(media_nav_acpi_common)
- thinkpad = +inet(media_nav_common)
- thinkpadz60 = +inet(thinkpad60)
- tm2030USB-102 = +inet(media_nav_acpi_common)
- tm2030USB-106 = +inet(media_nav_acpi_common)
- trust_slimline = +inet(media_nav_acpi_common)
- vsonku306 = +inet(microsoftprooem)
- $inetkbds = +inet(%m)
- $maclaptop = +inet(apple)+level3(enter_switch)
- $applealu = +inet(apple)
- $macs = +inet(apple)
+ a4techKB21 = +inet(media_nav_common)
+ a4techKBS8 = +inet(media_nav_acpi_common)
+ a4_rfkb23 = +inet(media_nav_acpi_common)
+ asus_laptop = +inet(media_common)
+ acer_tm_800 = +inet(acer_laptop)
+ benqx730 = +inet(benqx)
+ benqx800 = +inet(benqx)
+ btc5126t = +inet(nav_acpi_common)
+ btc9116u = +inet(btc9019u)
+ btc6301urf = +inet(media_nav_acpi_common)
+ dellsk8125 = +inet(dell)
+ dellsk8135 = +inet(dell)
+ cherrybunlim = +inet(nav_common)
+ dexxa = +inet(media_nav_common)
+ dtk2000 = +inet(media_nav_acpi_common)
+ fscaa1667g = +inet(media_nav_common)
+ geniuskb19e = +inet(media_nav_acpi_common)
+ geniuscomfy = +inet(media_nav_acpi_common)
+ geniuskkb2050hs = +inet(dellusbmm)
+ hpnx9020 = +inet(hpi6)
+ latitude = +inet(media_common)
+ logicd = +inet(logitech_base)
+ logicd_it = +inet(logitech_base)
+ logicd_nav = +inet(logitech_base)
+ logicd_opt = +inet(logitech_base)
+ logiultrax = +inet(logitech_base)
+ logiclx300 = +inet(logiex110)
+ logii350 = +inet(logiex110)
+ logimel = +inet(logiex110)
+ logicdit = +inet(logicd)
+ logicdo = +inet(logicd)
+ logicdp = +inet(logicd)
+ logicdpa = +inet(logicda)
+ logiciink = +inet(logicink)
+ ltcd = +inet(logicda)
+ microsoftccurve2k = +inet(microsoftprooem)
+ microsoftpro = +inet(media_nav_acpi_common)
+ precision_m = +inet(media_nav_common)
+ scorpius = +inet(media_nav_acpi_common)
+ sp_inet = +inet(media_nav_acpi_common)
+ targa_v811 = +inet(media_nav_acpi_common)
+ thinkpad = +inet(media_nav_common)
+ thinkpadz60 = +inet(thinkpad60)
+ tm2030USB-102 = +inet(media_nav_acpi_common)
+ tm2030USB-106 = +inet(media_nav_acpi_common)
+ trust_slimline = +inet(media_nav_acpi_common)
+ vsonku306 = +inet(microsoftprooem)
+ $inetkbds = +inet(%m)
+ $maclaptop = +inet(apple)+level3(enter_switch)
+ $applealu = +inet(apple)
+ $macs = +inet(apple)
diff --git a/xorg-server/xkeyboard-config/rules/base.ml1_c.part b/xorg-server/xkeyboard-config/rules/base.ml1_c.part
index f59e596d5..0e6147b23 100644
--- a/xorg-server/xkeyboard-config/rules/base.ml1_c.part
+++ b/xorg-server/xkeyboard-config/rules/base.ml1_c.part
@@ -1 +1 @@
- * * = complete
+ * * = complete
diff --git a/xorg-server/xkeyboard-config/rules/base.ml_c.part b/xorg-server/xkeyboard-config/rules/base.ml_c.part
index ec8f02291..f71278ff1 100644
--- a/xorg-server/xkeyboard-config/rules/base.ml_c.part
+++ b/xorg-server/xkeyboard-config/rules/base.ml_c.part
@@ -1,4 +1,4 @@
- pc98 nec_vndr/jp = pc98(basic)
- * jp = complete+japan
- olpc * = olpc
- * * = complete
+ pc98 nec_vndr/jp = pc98(basic)
+ * jp = complete+japan
+ olpc * = olpc
+ * * = complete
diff --git a/xorg-server/xkeyboard-config/rules/base.ml_g.part b/xorg-server/xkeyboard-config/rules/base.ml_g.part
index e66bb0b50..353bdae23 100644
--- a/xorg-server/xkeyboard-config/rules/base.ml_g.part
+++ b/xorg-server/xkeyboard-config/rules/base.ml_g.part
@@ -1 +1 @@
- thinkpad us = thinkpad(us)
+ thinkpad us = thinkpad(us)
diff --git a/xorg-server/xkeyboard-config/rules/base.mlv_s.part b/xorg-server/xkeyboard-config/rules/base.mlv_s.part
index 1eecc55c0..2bdd8612b 100644
--- a/xorg-server/xkeyboard-config/rules/base.mlv_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.mlv_s.part
@@ -1,4 +1,4 @@
- classmate us intl = pc+us(classmate-intl)
- classmate us alt-intl = pc+us(classmate-alt-intl)
- classmate us altgr-intl = pc+us(classmate-altgr-intl)
- nokiarx51 cz qwerty = nokia_vndr/rx-51(cz_qwerty)
+ classmate us intl = pc+us(classmate-intl)
+ classmate us alt-intl = pc+us(classmate-alt-intl)
+ classmate us altgr-intl = pc+us(classmate-altgr-intl)
+ nokiarx51 cz qwerty = nokia_vndr/rx-51(cz_qwerty)
diff --git a/xorg-server/xkeyboard-config/rules/base.o_t.part b/xorg-server/xkeyboard-config/rules/base.o_t.part
index e0d4b15ed..9b3155e74 100644
--- a/xorg-server/xkeyboard-config/rules/base.o_t.part
+++ b/xorg-server/xkeyboard-config/rules/base.o_t.part
@@ -1,8 +1,8 @@
- caps:internal = +caps(internal)
- caps:internal_nocancel = +caps(internal_nocancel)
- caps:shift = +caps(shift)
- caps:shift_nocancel = +caps(shift_nocancel)
- numpad:pc = +numpad(pc)
- numpad:mac = +numpad(mac)
- numpad:microsoft = +numpad(microsoft)
- numpad:shift3 = +numpad(shift3)
+ caps:internal = +caps(internal)
+ caps:internal_nocancel = +caps(internal_nocancel)
+ caps:shift = +caps(shift)
+ caps:shift_nocancel = +caps(shift_nocancel)
+ numpad:pc = +numpad(pc)
+ numpad:mac = +numpad(mac)
+ numpad:microsoft = +numpad(microsoft)
+ numpad:shift3 = +numpad(shift3)
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml1_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml1_s.sh
index b09459a5d..449874909 100644
--- a/xorg-server/xkeyboard-config/rules/bin/ml1_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/ml1_s.sh
@@ -1,9 +1,9 @@
-@echo off
-
-set OUTFILE=base.ml1_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-gawk "{ if (index($2, """(""") == 0) { printf """ * %%s = pc+%%s%%%%(v[1])\n""", $1, $2; } else { printf """ * %%s = pc+%%s\n""", $1, $2; }}" < layoutsMapping.lst >> %OUTFILE%
-
-gawk "{ printf """ * %%s(%%s) = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
+@echo off
+
+set OUTFILE=base.ml1_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ if (index($2, """(""") == 0) { printf """ * %%s = pc+%%s%%%%(v[1])\n""", $1, $2; } else { printf """ * %%s = pc+%%s\n""", $1, $2; }}" < layoutsMapping.lst >> %OUTFILE%
+
+gawk "{ printf """ * %%s(%%s) = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh
index 4d492e02b..68696c9e2 100644
--- a/xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh
@@ -1,7 +1,7 @@
-@echo off
-
-set OUTFILE=base.ml1v1_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
+@echo off
+
+set OUTFILE=base.ml1v1_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh
index cec1334c0..cae53259c 100644
--- a/xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh
@@ -1,7 +1,7 @@
-@echo off
-
-set OUTFILE=base.ml1v_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
+@echo off
+
+set OUTFILE=base.ml1v_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml_s.sh
index b7f0d9c46..d15355918 100644
--- a/xorg-server/xkeyboard-config/rules/bin/ml_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/ml_s.sh
@@ -1,9 +1,9 @@
-@echo off
-
-set OUTFILE=base.ml_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-gawk "{ printf """ * %%s = pc+%%s\n""", $1, $2; }" < layoutsMapping.lst >> %OUTFILE%
-
-gawk "{ printf """ * %%s(%%s) = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
+@echo off
+
+set OUTFILE=base.ml_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s = pc+%%s\n""", $1, $2; }" < layoutsMapping.lst >> %OUTFILE%
+
+gawk "{ printf """ * %%s(%%s) = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/mlv_s.sh b/xorg-server/xkeyboard-config/rules/bin/mlv_s.sh
index 573cb930f..21205ef97 100644
--- a/xorg-server/xkeyboard-config/rules/bin/mlv_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/mlv_s.sh
@@ -1,7 +1,7 @@
-@echo off
-
-set OUTFILE=base.mlv_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
+@echo off
+
+set OUTFILE=base.mlv_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part
index 64ff0f2f5..d85efe4e7 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part
@@ -1 +1 @@
- de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
+ de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part
index fea61be76..fd80f998d 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part
@@ -1 +1 @@
- de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2
+ de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part
index 5a1fb2f8a..0fc152316 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part
@@ -1 +1 @@
- de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3
+ de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part
index ac8a91102..8954744ea 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part
@@ -1 +1 @@
- de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4
+ de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.lists.part b/xorg-server/xkeyboard-config/rules/compat/base.lists.part
index f1cf7ee22..98c54127a 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.lists.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.lists.part
@@ -1,2 +1,2 @@
-
-! $dvoraklayouts = br ca de ee es fr gb no pl se us
+
+! $dvoraklayouts = br ca de ee es fr gb no pl se us
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part b/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part
index 64ff0f2f5..d85efe4e7 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part
@@ -1 +1 @@
- de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
+ de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.o_s.part b/xorg-server/xkeyboard-config/rules/compat/base.o_s.part
index 8f1e9e452..8a3cecf3a 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.o_s.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.o_s.part
@@ -1 +1 @@
- grp:shift_toggle = +group(shifts_toggle)
+ grp:shift_toggle = +group(shifts_toggle)
diff --git a/xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst b/xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst
index cecda6d8a..2318de247 100644
--- a/xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst
+++ b/xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst
@@ -1,27 +1,27 @@
-ar ara
-ben in(ben)
-bs ba
-cs rs
-cz_qwerty cz(qwerty)
-dev in(deva)
-dvorak us(dvorak)
-dzdwi bt
-el gr
-en_US latin
-guj in(guj)
-gur in(guru)
-iu ca(ike)
-lo la
-kan in(kan)
-mi mao
-ml in(mal)
-ogham ie(ogam)
-ori ie(ori)
-sapmi no(smi)
-sr srp
-syr sy(syc)
-tel in(tel)
-tml in(tam)
-yu srp
-fr-latin9 fr(latin9)
-us_intl us(alt-intl)
+ar ara
+ben in(ben)
+bs ba
+cs rs
+cz_qwerty cz(qwerty)
+dev in(deva)
+dvorak us(dvorak)
+dzdwi bt
+el gr
+en_US latin
+guj in(guj)
+gur in(guru)
+iu ca(ike)
+lo la
+kan in(kan)
+mi mao
+ml in(mal)
+ogham ie(ogam)
+ori ie(ori)
+sapmi no(smi)
+sr srp
+syr sy(syc)
+tel in(tel)
+tml in(tam)
+yu srp
+fr-latin9 fr(latin9)
+us_intl us(alt-intl)
diff --git a/xorg-server/xkeyboard-config/rules/merge.sh b/xorg-server/xkeyboard-config/rules/merge.sh
index b18af7c3d..be06dfc71 100644
--- a/xorg-server/xkeyboard-config/rules/merge.sh
+++ b/xorg-server/xkeyboard-config/rules/merge.sh
@@ -1,25 +1,25 @@
-#!/bin/sh
-
-INDIR=`dirname $0`
-DEST=$1
-shift
-
-if [ -z "$HDR" ]; then
- HDR="HDR"
-fi
-
-basename=`basename $0`
-echo "// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY $basename FROM rules/*.part" >$DEST
-
-for i in $*; do
- if [ "$i" = "$HDR" ] || [ "$i" = "HDR" ]; then
- echo >> $DEST;
- read hdr
- echo "$hdr" >> $DEST
- elif test -f $i; then
- cat $i >> $DEST || exit 1
- else
- cat $INDIR/$i >> $DEST || exit 1
- fi
-done < $HDR
-
+#!/bin/sh
+
+INDIR=`dirname $0`
+DEST=$1
+shift
+
+if [ -z "$HDR" ]; then
+ HDR="HDR"
+fi
+
+basename=`basename $0`
+echo "// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY $basename FROM rules/*.part" >$DEST
+
+for i in $*; do
+ if [ "$i" = "$HDR" ] || [ "$i" = "HDR" ]; then
+ echo >> $DEST;
+ read hdr
+ echo "$hdr" >> $DEST
+ elif test -f $i; then
+ cat $i >> $DEST || exit 1
+ else
+ cat $INDIR/$i >> $DEST || exit 1
+ fi
+done < $HDR
+
diff --git a/xorg-server/xkeyboard-config/rules/xfree98 b/xorg-server/xkeyboard-config/rules/xfree98
index 1196f7488..88189a7fe 100644
--- a/xorg-server/xkeyboard-config/rules/xfree98
+++ b/xorg-server/xkeyboard-config/rules/xfree98
@@ -1,28 +1,28 @@
-//
-// Rules for resolving XKB components for use with XFree86
-// Copyright 1996 by Joseph Moss
-//
-
-! model = keycodes geometry
- pc98 = xfree98(pc98) nec(pc98)
- jp106 = xfree98(jp106) pc(jp106)
-
-! model layout = symbols
- pc98 nec_vndr/jp = nec_vndr/jp(pc98)
- jp106 jp = jp
-
-! model layout = compat types
- * * = complete complete
-
-! option = symbols
- grp:switch = +group(switch)
- grp:toggle = +group(toggle)
- grp:shift_toggle = +group(shifts_toggle)
- grp:ctrl_shift_toggle = +group(ctrl_shift_toggle)
- grp:ctrl_alt_toggle = +group(ctrl_alt_toggle)
- ctrl:nocaps = +ctrl(nocaps)
- ctrl:lctrl_meta = +ctrl(lctrl_meta)
- ctrl:swapcaps = +ctrl(swapcaps)
- ctrl:ctrl_ac = +ctrl(ctrl_ac)
- ctrl:ctrl_aa = +ctrl(ctrl_aa)
-
+//
+// Rules for resolving XKB components for use with XFree86
+// Copyright 1996 by Joseph Moss
+//
+
+! model = keycodes geometry
+ pc98 = xfree98(pc98) nec(pc98)
+ jp106 = xfree98(jp106) pc(jp106)
+
+! model layout = symbols
+ pc98 nec_vndr/jp = nec_vndr/jp(pc98)
+ jp106 jp = jp
+
+! model layout = compat types
+ * * = complete complete
+
+! option = symbols
+ grp:switch = +group(switch)
+ grp:toggle = +group(toggle)
+ grp:shift_toggle = +group(shifts_toggle)
+ grp:ctrl_shift_toggle = +group(ctrl_shift_toggle)
+ grp:ctrl_alt_toggle = +group(ctrl_alt_toggle)
+ ctrl:nocaps = +ctrl(nocaps)
+ ctrl:lctrl_meta = +ctrl(lctrl_meta)
+ ctrl:swapcaps = +ctrl(swapcaps)
+ ctrl:ctrl_ac = +ctrl(ctrl_ac)
+ ctrl:ctrl_aa = +ctrl(ctrl_aa)
+
diff --git a/xorg-server/xkeyboard-config/symbols/altwin b/xorg-server/xkeyboard-config/symbols/altwin
index 597b3fb92..92599128f 100644
--- a/xorg-server/xkeyboard-config/symbols/altwin
+++ b/xorg-server/xkeyboard-config/symbols/altwin
@@ -1,79 +1,79 @@
-partial modifier_keys
-xkb_symbols "meta_alt" {
- key <LALT> { [ Alt_L, Meta_L ] };
- key <RALT> { type[Group1] = "TWO_LEVEL",
- symbols[Group1] = [ Alt_R, Meta_R ] };
- modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
-// modifier_map Mod4 {};
-};
-
-// Control is mapped to the Win-keys (and the usual Ctrl keys).
-partial modifier_keys
-xkb_symbols "ctrl_win" {
- key <LWIN> { [ Control_L ] };
- key <RWIN> { [ Control_R ] };
- modifier_map Control { <LWIN>, <RWIN> };
-};
-
-// Ctrl is mapped to the Alt-keys, Alt is mapped to the Win-keys, Win is mapped to the Ctrl-keys.
-partial modifier_keys
-xkb_symbols "ctrl_alt_win" {
- key <LALT> { [ Control_L, Control_L ] };
- key <RALT> { type[Group1] = "TWO_LEVEL",
- symbols[Group1] = [ Control_R, Control_R ] };
- key <LWIN> { [ Alt_L, Meta_L ] };
- key <RWIN> { [ Alt_R, Meta_R ] };
- modifier_map Control { <RALT>, <LALT> };
- modifier_map Mod1 { <LWIN>, <RWIN> };
-};
-
-
-partial modifier_keys
-xkb_symbols "meta_win" {
- key <LALT> { [ Alt_L, Alt_L ] };
- key <RALT> { type[Group1] = "TWO_LEVEL",
- symbols[Group1] = [ Alt_R, Alt_R ] };
- key <LWIN> { [ Meta_L ] };
- key <RWIN> { [ Meta_R ] };
- modifier_map Mod1 { Alt_L, Alt_R };
- modifier_map Mod4 { <META>, Meta_L, Meta_R };
-};
-
-partial modifier_keys
-xkb_symbols "left_meta_win" {
- key <LALT> { [ Alt_L, Alt_L ] };
- key <LWIN> { [ Meta_L ] };
- modifier_map Mod1 { Alt_L };
- modifier_map Mod4 { <META>, Meta_L };
-};
-
-partial modifier_keys
-xkb_symbols "hyper_win" {
- key <LWIN> { [ Hyper_L ] };
- key <RWIN> { [ Hyper_R ] };
- modifier_map Mod4 { Hyper_L, Hyper_R };
-};
-
-// Use Menu for the menu key
-partial modifier_keys
-xkb_symbols "menu" {
- key <MENU> { [ Menu ] };
-};
-
-// Layout for Tux key caps with additional right Alt key
-partial modifier_keys
-xkb_symbols "alt_super_win" {
- key <LALT> { [ Alt_L, Meta_L ] };
- key <RWIN> { [ Alt_R, Meta_R ] };
- key <LWIN> { [ Super_L ] };
- key <MENU> { [ Super_R ] };
- modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
- modifier_map Mod4 { Super_L, Super_R };
-};
-
-partial modifier_keys
-xkb_symbols "swap_lalt_lwin" {
- key <LALT> { type[Group1] = "ONE_LEVEL",
- symbols[Group1] = [ Super_L ] };
- key <LWIN> { [ Alt_L, Meta_L ] };
-};
+partial modifier_keys
+xkb_symbols "meta_alt" {
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <RALT> { type[Group1] = "TWO_LEVEL",
+ symbols[Group1] = [ Alt_R, Meta_R ] };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+// modifier_map Mod4 {};
+};
+
+// Control is mapped to the Win-keys (and the usual Ctrl keys).
+partial modifier_keys
+xkb_symbols "ctrl_win" {
+ key <LWIN> { [ Control_L ] };
+ key <RWIN> { [ Control_R ] };
+ modifier_map Control { <LWIN>, <RWIN> };
+};
+
+// Ctrl is mapped to the Alt-keys, Alt is mapped to the Win-keys, Win is mapped to the Ctrl-keys.
+partial modifier_keys
+xkb_symbols "ctrl_alt_win" {
+ key <LALT> { [ Control_L, Control_L ] };
+ key <RALT> { type[Group1] = "TWO_LEVEL",
+ symbols[Group1] = [ Control_R, Control_R ] };
+ key <LWIN> { [ Alt_L, Meta_L ] };
+ key <RWIN> { [ Alt_R, Meta_R ] };
+ modifier_map Control { <RALT>, <LALT> };
+ modifier_map Mod1 { <LWIN>, <RWIN> };
+};
+
+
+partial modifier_keys
+xkb_symbols "meta_win" {
+ key <LALT> { [ Alt_L, Alt_L ] };
+ key <RALT> { type[Group1] = "TWO_LEVEL",
+ symbols[Group1] = [ Alt_R, Alt_R ] };
+ key <LWIN> { [ Meta_L ] };
+ key <RWIN> { [ Meta_R ] };
+ modifier_map Mod1 { Alt_L, Alt_R };
+ modifier_map Mod4 { <META>, Meta_L, Meta_R };
+};
+
+partial modifier_keys
+xkb_symbols "left_meta_win" {
+ key <LALT> { [ Alt_L, Alt_L ] };
+ key <LWIN> { [ Meta_L ] };
+ modifier_map Mod1 { Alt_L };
+ modifier_map Mod4 { <META>, Meta_L };
+};
+
+partial modifier_keys
+xkb_symbols "hyper_win" {
+ key <LWIN> { [ Hyper_L ] };
+ key <RWIN> { [ Hyper_R ] };
+ modifier_map Mod4 { Hyper_L, Hyper_R };
+};
+
+// Use Menu for the menu key
+partial modifier_keys
+xkb_symbols "menu" {
+ key <MENU> { [ Menu ] };
+};
+
+// Layout for Tux key caps with additional right Alt key
+partial modifier_keys
+xkb_symbols "alt_super_win" {
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <RWIN> { [ Alt_R, Meta_R ] };
+ key <LWIN> { [ Super_L ] };
+ key <MENU> { [ Super_R ] };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+ modifier_map Mod4 { Super_L, Super_R };
+};
+
+partial modifier_keys
+xkb_symbols "swap_lalt_lwin" {
+ key <LALT> { type[Group1] = "ONE_LEVEL",
+ symbols[Group1] = [ Super_L ] };
+ key <LWIN> { [ Alt_L, Meta_L ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/compose b/xorg-server/xkeyboard-config/symbols/compose
index 520d44aaf..d7257329e 100644
--- a/xorg-server/xkeyboard-config/symbols/compose
+++ b/xorg-server/xkeyboard-config/symbols/compose
@@ -1,54 +1,54 @@
-partial modifier_keys
-xkb_symbols "ralt" {
- key <RALT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "lwin" {
- key <LWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "rwin" {
- key <RWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "menu" {
- key <MENU> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "rctrl" {
- key <RCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "lctrl" {
- key <LCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "caps" {
- key <CAPS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "102" {
- key <LSGT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "paus" {
- key <PAUS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "prsc" {
- key <PRSC> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
-
-partial modifier_keys
-xkb_symbols "sclk" {
- key <SCLK> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
-};
+partial modifier_keys
+xkb_symbols "ralt" {
+ key <RALT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "lwin" {
+ key <LWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "rwin" {
+ key <RWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "menu" {
+ key <MENU> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "rctrl" {
+ key <RCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "lctrl" {
+ key <LCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "caps" {
+ key <CAPS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "102" {
+ key <LSGT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "paus" {
+ key <PAUS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "prsc" {
+ key <PRSC> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "sclk" {
+ key <SCLK> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/digital_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/digital_vndr/Makefile.am
index 063fc8d57..69184024b 100644
--- a/xorg-server/xkeyboard-config/symbols/digital_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/digital_vndr/Makefile.am
@@ -1,5 +1,5 @@
-symbolsdir = $(xkb_base)/symbols/digital_vndr
-
-dist_symbols_DATA = \
-lk pc us \
-vt
+symbolsdir = $(xkb_base)/symbols/digital_vndr
+
+dist_symbols_DATA = \
+lk pc us \
+vt
diff --git a/xorg-server/xkeyboard-config/symbols/digital_vndr/lk b/xorg-server/xkeyboard-config/symbols/digital_vndr/lk
index 82a8c90c6..243086581 100644
--- a/xorg-server/xkeyboard-config/symbols/digital_vndr/lk
+++ b/xorg-server/xkeyboard-config/symbols/digital_vndr/lk
@@ -1,130 +1,130 @@
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log: lk,v
-// Revision 1.2 1996/06/18 09:10:09 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.2.2 1995/03/10 17:16:52 William_Walker
-// Rename to avoid name conflicts with XKB stuff
-// [1995/03/10 17:10:33 William_Walker]
-//
-// Revision 1.1.2.2 1994/10/31 15:22:00 William_Walker
-// New experimental version.
-// [1994/10/31 14:48:37 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: lk,v Revision: 1.2 (DEC) Date: 1996/01/24 12:14:58
-//
-// Symbols common to all the LK-style keyboards.
-//
-default xkb_symbols "common" {
-
- // Modifier mappings
- modifier_map Shift { Shift_L, Shift_R };
- modifier_map Lock { Caps_Lock };
- modifier_map Control { Control_L, Control_R };
- modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
- modifier_map Mod2 { Num_Lock };
- modifier_map Mod3 { Scroll_Lock };
-
- // Additional alphanumeric keys
- key <LSGT> { [ less, greater ] };
- key <LALT> { [ Alt_L, Meta_L ] };
-
- // "Function" keys
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ Escape, F11 ] };
- key <FK12> { [ F12 ] };
- key <FK13> { [ F13 ] };
- key <FK14> { [ F14 ] };
- key <FK17> { [ F17 ] };
- key <FK18> { [ F18 ] };
- key <FK19> { [ F19 ] };
- key <FK20> { [ F20 ] };
-
- // "Editing" keys
- key <HELP> { [ Help ] };
- key <DO> { [ Menu ] };
- key <FIND> { [ Find ] };
- key <INS> { [ Insert ] };
- key <DELE> { [ Delete ] };
- key <SELE> { [ Select ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
-
- key <UP> { [ Up ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <RGHT> { [ Right ] };
-
- // "Keypad" keys
- key <KPF1> {
- type= "SHIFT+ALT",
- symbols[Group1]=[ KP_F1,Pointer_EnableKeys ]
- };
- key <KPF2> { [ KP_F2 ] };
- key <KPF3> { [ KP_F3 ] };
- key <KPF4> { [ KP_F4 ] };
-
- key <KPCO> { [ KP_Separator ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_0 ] };
- key <KPDL> { [ KP_Decimal ] };
-};
-
-xkb_symbols "lk401" {
- include "symbols/digital_vndr/lk(common)"
- key <RALT> { [ Alt_R, Meta_R ] };
- key <LCMP> { [ Multi_key ] };
- key <RCMP> { [ Multi_key ] };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log: lk,v
+// Revision 1.2 1996/06/18 09:10:09 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.2.2 1995/03/10 17:16:52 William_Walker
+// Rename to avoid name conflicts with XKB stuff
+// [1995/03/10 17:10:33 William_Walker]
+//
+// Revision 1.1.2.2 1994/10/31 15:22:00 William_Walker
+// New experimental version.
+// [1994/10/31 14:48:37 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: lk,v Revision: 1.2 (DEC) Date: 1996/01/24 12:14:58
+//
+// Symbols common to all the LK-style keyboards.
+//
+default xkb_symbols "common" {
+
+ // Modifier mappings
+ modifier_map Shift { Shift_L, Shift_R };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control { Control_L, Control_R };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+ modifier_map Mod2 { Num_Lock };
+ modifier_map Mod3 { Scroll_Lock };
+
+ // Additional alphanumeric keys
+ key <LSGT> { [ less, greater ] };
+ key <LALT> { [ Alt_L, Meta_L ] };
+
+ // "Function" keys
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ Escape, F11 ] };
+ key <FK12> { [ F12 ] };
+ key <FK13> { [ F13 ] };
+ key <FK14> { [ F14 ] };
+ key <FK17> { [ F17 ] };
+ key <FK18> { [ F18 ] };
+ key <FK19> { [ F19 ] };
+ key <FK20> { [ F20 ] };
+
+ // "Editing" keys
+ key <HELP> { [ Help ] };
+ key <DO> { [ Menu ] };
+ key <FIND> { [ Find ] };
+ key <INS> { [ Insert ] };
+ key <DELE> { [ Delete ] };
+ key <SELE> { [ Select ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+
+ key <UP> { [ Up ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <RGHT> { [ Right ] };
+
+ // "Keypad" keys
+ key <KPF1> {
+ type= "SHIFT+ALT",
+ symbols[Group1]=[ KP_F1,Pointer_EnableKeys ]
+ };
+ key <KPF2> { [ KP_F2 ] };
+ key <KPF3> { [ KP_F3 ] };
+ key <KPF4> { [ KP_F4 ] };
+
+ key <KPCO> { [ KP_Separator ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_0 ] };
+ key <KPDL> { [ KP_Decimal ] };
+};
+
+xkb_symbols "lk401" {
+ include "symbols/digital_vndr/lk(common)"
+ key <RALT> { [ Alt_R, Meta_R ] };
+ key <LCMP> { [ Multi_key ] };
+ key <RCMP> { [ Multi_key ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/digital_vndr/pc b/xorg-server/xkeyboard-config/symbols/digital_vndr/pc
index b8d1fb2bb..f50d4cde4 100644
--- a/xorg-server/xkeyboard-config/symbols/digital_vndr/pc
+++ b/xorg-server/xkeyboard-config/symbols/digital_vndr/pc
@@ -1,175 +1,175 @@
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log
-// Revision 1.2 1996/06/18 09:10:12 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.4 1995/12/19 19:55:58 William_Walker
-// Update to XKB 0.65
-// [1995/12/17 02:37:07 William_Walker]
-//
-// Revision 1.1.6.3 1995/10/25 21:01:09 William_Walker
-// Make sure we use DIN 2137 and VT510 Spec for Group Semantics
-// [1995/10/23 15:49:03 William_Walker]
-//
-// Revision 1.1.6.2 1995/08/07 17:40:40 William_Walker
-// Upgrade XKB to protocol 0.62 (dual submit from decx11)
-// [1995/08/06 14:06:32 William_Walker]
-//
-// Revision 1.1.2.7 1995/08/05 15:25:57 William_Walker
-// Sync up with Erik's pool.
-// [1995/08/03 20:17:15 William_Walker]
-//
-// Revision 1.1.2.6 1995/06/27 12:18:25 William_Walker
-// Add LK201 and LK450 support as well as TW and DP variants.
-// [1995/06/26 20:29:52 William_Walker]
-//
-// Revision 1.1.2.5 1995/06/08 17:10:28 William_Walker
-// Make RALT default to Mode_switch
-// [1995/06/08 17:08:50 William_Walker]
-//
-// Revision 1.1.2.4 1995/06/05 19:24:14 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:17:03 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: pc Revision: /main/4 (DEC) Date: 1996/01/24 12:15:02
-//
-
-// **************************************************************
-// * *
-// * The symbols common to all Extended PC layouts. *
-// * *
-// **************************************************************
-xkb_symbols "pc" {
-
- // Modifier mappings
- //
- modifier_map Shift { Shift_L, Shift_R };
- modifier_map Lock { Caps_Lock };
- modifier_map Control { Control_L, Control_R };
- modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
- modifier_map Mod3 { Mode_switch };
- modifier_map Mod4 { Num_Lock };
- modifier_map Mod5 { Scroll_Lock };
-
- // Common keys
- //
- key <BKSP> { [ BackSpace, Delete ] };
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <CAPS> { [ Caps_Lock ] };
- key <RTRN> { [ Return ] };
- key <LFSH> { [ Shift_L ] };
- key <RTSH> { [ Shift_R ] };
- key <LCTL> { [ Control_L ] };
- key <LALT> { [ Alt_L, Meta_L ] };
- key <SPCE> { [ space ] };
- key <RALT> { [ Mode_switch ] };
- key <RCTL> { [ Control_R ] };
-
- // "Function" keys
- //
- key <ESC> { [ Escape ] };
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
- key <PRSC> {
- type= "PC_ALT_LEVEL2",
- symbols[Group1]= [ Print, Sys_Req ]
- };
- key <SCLK> { [ Scroll_Lock ] };
- key <PAUS> {
- type= "PC_CONTROL_LEVEL2",
- symbols[Group1]= [ Pause, Break ]
- };
-
- // "Editing" keys
- //
- key <INS> { [ Insert ] };
- key <HOME> { [ Home ] };
- key <PGUP> { [ Prior ] };
- key <DELE> { [ Delete ] };
- key <END> { [ End ] };
- key <PGDN> { [ Next ] };
-
- key <UP> { [ Up ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <RGHT> { [ Right ] };
-
- // "Keypad" keys
- //
- key <NMLK> {
- type= "SHIFT+ALT",
- symbols[Group1]= [ Num_Lock,Pointer_EnableKeys]
- };
- key <KPDV> { [ KP_Divide ] };
- key <KPMU> { [ KP_Multiply ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP7> { [ KP_Home, KP_7 ] };
- key <KP8> { [ KP_Up, KP_8 ] };
- key <KP9> { [ KP_Prior, KP_9 ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP4> { [ KP_Left, KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_Right, KP_6 ] };
-
- key <KP1> { [ KP_End, KP_1 ] };
- key <KP2> { [ KP_Down, KP_2 ] };
- key <KP3> { [ KP_Next, KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_Insert, KP_0 ] };
- key <KPDL> { [ KP_Delete, KP_Decimal ] };
-
- // Key to support Lock-Down Modifier descriptions for R5
- //
- key <LDM> { [ NoSymbol ] };
-};
-
-xkb_symbols "pc104" {
- include "digital_vndr/pc(pc)"
-
- replace key <LALT> { [ Alt_L ] };
- key <LWIN> { [ Meta_L ] };
- key <RWIN> { [ Meta_R ] };
- key <MENU> { [ Menu ] };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log
+// Revision 1.2 1996/06/18 09:10:12 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.4 1995/12/19 19:55:58 William_Walker
+// Update to XKB 0.65
+// [1995/12/17 02:37:07 William_Walker]
+//
+// Revision 1.1.6.3 1995/10/25 21:01:09 William_Walker
+// Make sure we use DIN 2137 and VT510 Spec for Group Semantics
+// [1995/10/23 15:49:03 William_Walker]
+//
+// Revision 1.1.6.2 1995/08/07 17:40:40 William_Walker
+// Upgrade XKB to protocol 0.62 (dual submit from decx11)
+// [1995/08/06 14:06:32 William_Walker]
+//
+// Revision 1.1.2.7 1995/08/05 15:25:57 William_Walker
+// Sync up with Erik's pool.
+// [1995/08/03 20:17:15 William_Walker]
+//
+// Revision 1.1.2.6 1995/06/27 12:18:25 William_Walker
+// Add LK201 and LK450 support as well as TW and DP variants.
+// [1995/06/26 20:29:52 William_Walker]
+//
+// Revision 1.1.2.5 1995/06/08 17:10:28 William_Walker
+// Make RALT default to Mode_switch
+// [1995/06/08 17:08:50 William_Walker]
+//
+// Revision 1.1.2.4 1995/06/05 19:24:14 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:17:03 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: pc Revision: /main/4 (DEC) Date: 1996/01/24 12:15:02
+//
+
+// **************************************************************
+// * *
+// * The symbols common to all Extended PC layouts. *
+// * *
+// **************************************************************
+xkb_symbols "pc" {
+
+ // Modifier mappings
+ //
+ modifier_map Shift { Shift_L, Shift_R };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control { Control_L, Control_R };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+ modifier_map Mod3 { Mode_switch };
+ modifier_map Mod4 { Num_Lock };
+ modifier_map Mod5 { Scroll_Lock };
+
+ // Common keys
+ //
+ key <BKSP> { [ BackSpace, Delete ] };
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <CAPS> { [ Caps_Lock ] };
+ key <RTRN> { [ Return ] };
+ key <LFSH> { [ Shift_L ] };
+ key <RTSH> { [ Shift_R ] };
+ key <LCTL> { [ Control_L ] };
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <SPCE> { [ space ] };
+ key <RALT> { [ Mode_switch ] };
+ key <RCTL> { [ Control_R ] };
+
+ // "Function" keys
+ //
+ key <ESC> { [ Escape ] };
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+ key <PRSC> {
+ type= "PC_ALT_LEVEL2",
+ symbols[Group1]= [ Print, Sys_Req ]
+ };
+ key <SCLK> { [ Scroll_Lock ] };
+ key <PAUS> {
+ type= "PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Pause, Break ]
+ };
+
+ // "Editing" keys
+ //
+ key <INS> { [ Insert ] };
+ key <HOME> { [ Home ] };
+ key <PGUP> { [ Prior ] };
+ key <DELE> { [ Delete ] };
+ key <END> { [ End ] };
+ key <PGDN> { [ Next ] };
+
+ key <UP> { [ Up ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <RGHT> { [ Right ] };
+
+ // "Keypad" keys
+ //
+ key <NMLK> {
+ type= "SHIFT+ALT",
+ symbols[Group1]= [ Num_Lock,Pointer_EnableKeys]
+ };
+ key <KPDV> { [ KP_Divide ] };
+ key <KPMU> { [ KP_Multiply ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP7> { [ KP_Home, KP_7 ] };
+ key <KP8> { [ KP_Up, KP_8 ] };
+ key <KP9> { [ KP_Prior, KP_9 ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP4> { [ KP_Left, KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_Right, KP_6 ] };
+
+ key <KP1> { [ KP_End, KP_1 ] };
+ key <KP2> { [ KP_Down, KP_2 ] };
+ key <KP3> { [ KP_Next, KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_Insert, KP_0 ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal ] };
+
+ // Key to support Lock-Down Modifier descriptions for R5
+ //
+ key <LDM> { [ NoSymbol ] };
+};
+
+xkb_symbols "pc104" {
+ include "digital_vndr/pc(pc)"
+
+ replace key <LALT> { [ Alt_L ] };
+ key <LWIN> { [ Meta_L ] };
+ key <RWIN> { [ Meta_R ] };
+ key <MENU> { [ Menu ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/digital_vndr/us b/xorg-server/xkeyboard-config/symbols/digital_vndr/us
index 95d7301e7..e737e4e3f 100644
--- a/xorg-server/xkeyboard-config/symbols/digital_vndr/us
+++ b/xorg-server/xkeyboard-config/symbols/digital_vndr/us
@@ -1,211 +1,211 @@
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log
-// Revision 1.2 1996/06/18 09:10:16 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.3 1995/12/19 19:56:37 William_Walker
-// Update to XKB 0.65
-// [1995/12/17 02:37:44 William_Walker]
-//
-// Revision 1.1.6.2 1995/10/25 21:01:25 William_Walker
-// Add pc104-key support
-// [1995/10/23 15:46:27 William_Walker]
-//
-// Revision 1.1.2.7 1995/06/27 12:18:40 William_Walker
-// Add LK201 and LK450 support as well as TW and DP variants.
-// [1995/06/26 20:30:33 William_Walker]
-//
-// Revision 1.1.2.6 1995/06/09 20:55:20 William_Walker
-// Add VT105 layout support and ISO group support
-// [1995/06/09 20:43:05 William_Walker]
-//
-// Revision 1.1.2.5 1995/06/08 21:05:49 William_Walker
-// Use ISO_Next_Group instead of grouplock
-// [1995/06/08 21:03:56 William_Walker]
-//
-// Revision 1.1.2.4 1995/06/05 19:25:00 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:17:54 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: us Revision: /main/4 (DEC) Date: 1996/01/24 12:15:05
-//
-
-// **************************************************************
-// * *
-// * Symbols for en_US.ISO8859-1 - English for U.S. *
-// * *
-// **************************************************************
-
-xkb_symbols "us" {
-
- key <AE00> { [ grave, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E ] };
- key <AD04> { [ r, R ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
-
- key <AC01> { [ a, A ] };
- key <AC02> { [ s, S ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K ] };
- key <AC09> { [ l, L ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ apostrophe, quotedbl ] };
- key <BKSL> { [ backslash, bar ] };
-
- key <AB01> { [ z, Z ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
-};
-
-// **************************************************************
-// * *
-// * The VT105 layouts *
-// * *
-// * NOTES: The typewriter (TW) and dataprocessing (DP) keys *
-// * for the VT108 layout are identical for the US. *
-// * *
-// **************************************************************
-xkb_symbols "vt105-tw" {
- include "digital_vndr/us(us)"
- include "digital_vndr/vt(vt105)"
- override key <AE03> {
- symbols[Group1]= [ 3, numbersign ],
- symbols[Group2]= [ sterling ]
- };
- key <AB00> { [ less, greater ] };
-};
-
-xkb_symbols "vt105-dp" { include "digital_vndr/us(vt105-tw)" };
-xkb_symbols "vt105" { include "digital_vndr/us(vt105-tw)" };
-
-// **************************************************************
-// * *
-// * The VT108 layouts - based upon the LK401-AA *
-// * *
-// * NOTES: The typewriter (TW) and dataprocessing (DP) keys *
-// * for the VT108 layout are identical for the US. *
-// * *
-// **************************************************************
-xkb_symbols "vt108-tw" {
- include "digital_vndr/us(us)"
- include "digital_vndr/vt(vt108)"
- replace key <LCMP> { [ Multi_key ] };
- override key <AE03> {
- symbols[Group1]= [ 3, numbersign ],
- symbols[Group2]= [ sterling ]
- };
- key <AB00> { [ less, greater ] };
-};
-
-xkb_symbols "vt108-dp" { include "digital_vndr/us(vt108-tw)" };
-xkb_symbols "vt108" { include "digital_vndr/us(vt108-tw)" };
-
-// **************************************************************
-// * *
-// * The "unix" layouts - based upon the LK421-AA *
-// * *
-// * NOTES: The "unix" keyboard emits the same keycodes as the *
-// * LK401, but is a shorter keyboard that uses an *
-// * "extend" key. To make life easier, we map <AE00> *
-// * to Escape so users do not have to press Extend+F11 *
-// * to get Escape. *
-// * *
-// **************************************************************
-xkb_symbols "unix" {
- include "digital_vndr/us(vt108)"
- override key <AE00> { [ Escape ] };
- override key <AB00> { [ grave, asciitilde ] };
-};
-
-// **************************************************************
-// * *
-// * The "pcxal" layouts *
-// * *
-// * NOTES: The pcxal layouts are pretty much standardized for *
-// * the US and use a 101-key keyboard. *
-// * *
-// **************************************************************
-xkb_symbols "pcxalga" {
- include "digital_vndr/pc(pc)"
- include "digital_vndr/us(us)"
- replace key <RALT> { [ Alt_R, Meta_R ] };
-};
-
-xkb_symbols "pcxal" { include "digital_vndr/us(pcxalga)" };
-xkb_symbols "pcxalaa" { include "digital_vndr/us(pcxalga)" };
-xkb_symbols "pcxalfa" { include "digital_vndr/us(pcxalga)" };
-xkb_symbols "pcxalka" { include "digital_vndr/us(pcxalga)" };
-xkb_symbols "lk44x" { include "digital_vndr/us(pcxalga)" };
-
-// **************************************************************
-// * *
-// * The "pc104" layouts. *
-// * *
-// **************************************************************
-xkb_symbols "pc104" {
- include "digital_vndr/pc(pc104)"
- include "digital_vndr/us(us)"
- replace key <RALT> { [ Alt_R ] };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log
+// Revision 1.2 1996/06/18 09:10:16 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.3 1995/12/19 19:56:37 William_Walker
+// Update to XKB 0.65
+// [1995/12/17 02:37:44 William_Walker]
+//
+// Revision 1.1.6.2 1995/10/25 21:01:25 William_Walker
+// Add pc104-key support
+// [1995/10/23 15:46:27 William_Walker]
+//
+// Revision 1.1.2.7 1995/06/27 12:18:40 William_Walker
+// Add LK201 and LK450 support as well as TW and DP variants.
+// [1995/06/26 20:30:33 William_Walker]
+//
+// Revision 1.1.2.6 1995/06/09 20:55:20 William_Walker
+// Add VT105 layout support and ISO group support
+// [1995/06/09 20:43:05 William_Walker]
+//
+// Revision 1.1.2.5 1995/06/08 21:05:49 William_Walker
+// Use ISO_Next_Group instead of grouplock
+// [1995/06/08 21:03:56 William_Walker]
+//
+// Revision 1.1.2.4 1995/06/05 19:25:00 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:17:54 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: us Revision: /main/4 (DEC) Date: 1996/01/24 12:15:05
+//
+
+// **************************************************************
+// * *
+// * Symbols for en_US.ISO8859-1 - English for U.S. *
+// * *
+// **************************************************************
+
+xkb_symbols "us" {
+
+ key <AE00> { [ grave, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+ key <BKSL> { [ backslash, bar ] };
+
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+};
+
+// **************************************************************
+// * *
+// * The VT105 layouts *
+// * *
+// * NOTES: The typewriter (TW) and dataprocessing (DP) keys *
+// * for the VT108 layout are identical for the US. *
+// * *
+// **************************************************************
+xkb_symbols "vt105-tw" {
+ include "digital_vndr/us(us)"
+ include "digital_vndr/vt(vt105)"
+ override key <AE03> {
+ symbols[Group1]= [ 3, numbersign ],
+ symbols[Group2]= [ sterling ]
+ };
+ key <AB00> { [ less, greater ] };
+};
+
+xkb_symbols "vt105-dp" { include "digital_vndr/us(vt105-tw)" };
+xkb_symbols "vt105" { include "digital_vndr/us(vt105-tw)" };
+
+// **************************************************************
+// * *
+// * The VT108 layouts - based upon the LK401-AA *
+// * *
+// * NOTES: The typewriter (TW) and dataprocessing (DP) keys *
+// * for the VT108 layout are identical for the US. *
+// * *
+// **************************************************************
+xkb_symbols "vt108-tw" {
+ include "digital_vndr/us(us)"
+ include "digital_vndr/vt(vt108)"
+ replace key <LCMP> { [ Multi_key ] };
+ override key <AE03> {
+ symbols[Group1]= [ 3, numbersign ],
+ symbols[Group2]= [ sterling ]
+ };
+ key <AB00> { [ less, greater ] };
+};
+
+xkb_symbols "vt108-dp" { include "digital_vndr/us(vt108-tw)" };
+xkb_symbols "vt108" { include "digital_vndr/us(vt108-tw)" };
+
+// **************************************************************
+// * *
+// * The "unix" layouts - based upon the LK421-AA *
+// * *
+// * NOTES: The "unix" keyboard emits the same keycodes as the *
+// * LK401, but is a shorter keyboard that uses an *
+// * "extend" key. To make life easier, we map <AE00> *
+// * to Escape so users do not have to press Extend+F11 *
+// * to get Escape. *
+// * *
+// **************************************************************
+xkb_symbols "unix" {
+ include "digital_vndr/us(vt108)"
+ override key <AE00> { [ Escape ] };
+ override key <AB00> { [ grave, asciitilde ] };
+};
+
+// **************************************************************
+// * *
+// * The "pcxal" layouts *
+// * *
+// * NOTES: The pcxal layouts are pretty much standardized for *
+// * the US and use a 101-key keyboard. *
+// * *
+// **************************************************************
+xkb_symbols "pcxalga" {
+ include "digital_vndr/pc(pc)"
+ include "digital_vndr/us(us)"
+ replace key <RALT> { [ Alt_R, Meta_R ] };
+};
+
+xkb_symbols "pcxal" { include "digital_vndr/us(pcxalga)" };
+xkb_symbols "pcxalaa" { include "digital_vndr/us(pcxalga)" };
+xkb_symbols "pcxalfa" { include "digital_vndr/us(pcxalga)" };
+xkb_symbols "pcxalka" { include "digital_vndr/us(pcxalga)" };
+xkb_symbols "lk44x" { include "digital_vndr/us(pcxalga)" };
+
+// **************************************************************
+// * *
+// * The "pc104" layouts. *
+// * *
+// **************************************************************
+xkb_symbols "pc104" {
+ include "digital_vndr/pc(pc104)"
+ include "digital_vndr/us(us)"
+ replace key <RALT> { [ Alt_R ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/digital_vndr/vt b/xorg-server/xkeyboard-config/symbols/digital_vndr/vt
index 5d3680db4..13f7941c6 100644
--- a/xorg-server/xkeyboard-config/symbols/digital_vndr/vt
+++ b/xorg-server/xkeyboard-config/symbols/digital_vndr/vt
@@ -1,158 +1,158 @@
-//
-//Copyright (c) 1996 Digital Equipment Corporation
-//
-//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
-//Corporation shall not be used in advertising or otherwise to promote
-//the sale, use or other dealings in this Software without prior written
-//authorization from Digital Equipment Corporation.
-//
-// HISTORY
-// Log
-// Revision 1.2 1996/06/18 09:10:19 erik
-// use flags correctly, assorted cleanups and consortium fixes
-//
-// Revision 1.1.6.2 1995/12/19 19:56:39 William_Walker
-// Update to XKB 0.65
-// [1995/12/17 02:37:47 William_Walker]
-//
-// Revision 1.1.2.5 1995/07/11 21:20:50 William_Walker
-// Make RALT act as RALT
-// [1995/07/11 21:18:28 William_Walker]
-//
-// Revision 1.1.2.4 1995/06/27 12:18:41 William_Walker
-// Add LK201 and LK450 support as well as TW and DP variants.
-// [1995/06/26 20:30:37 William_Walker]
-//
-// Revision 1.1.2.3 1995/06/09 20:55:21 William_Walker
-// Add VT105 layout support and ISO group support
-// [1995/06/09 20:43:09 William_Walker]
-//
-// Revision 1.1.2.2 1995/06/05 19:25:04 William_Walker
-// New file. I love keymaps.
-// [1995/06/05 18:17:58 William_Walker]
-//
-// EndLog
-//
-// @(#)RCSfile: vt Revision: /main/3 (DEC) Date: 1996/01/24 12:15:08
-//
-xkb_symbols "vt105" {
-
- // Modifier mappings
- //
- modifier_map Shift { Shift_L, Shift_R };
- modifier_map Lock { Caps_Lock };
- modifier_map Control { Control_L, Control_R };
- modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
- modifier_map Mod3 { Mode_switch };
-
- // Common keys
- //
- key <BKSP> { [ Delete ] };
- key <TAB> { [ Tab ] };
- key <RTRN> { [ Return ] };
- key <LCTL> { [ Control_L ] };
- key <CAPS> { [ Caps_Lock ] };
- key <LFSH> { [ Shift_L ] };
- key <RTSH> { [ Shift_R ] };
- key <LCMP> { [ Alt_L, Meta_L ] };
- key <SPCE> { [ space ] };
-
- // "Function" keys
- //
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ Escape, F11 ] };
- key <FK12> { [ F12 ] };
- key <FK13> { [ F13 ] };
- key <FK14> { [ F14 ] };
- key <FK17> { [ F17 ] };
- key <FK18> { [ F18 ] };
- key <FK19> { [ F19 ] };
- key <FK20> { [ F20 ] };
-
- // "Editing" keys
- //
- key <HELP> { [ Help ] };
- key <DO> { [ Menu ] };
- key <FIND> { [ Find ] };
- key <INS> { [ Insert ] };
- key <DELE> { [ apLineDel ] };
- key <SELE> { [ Select ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
-
- key <UP> { [ Up ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <RGHT> { [ Right ] };
-
- // "Keypad" keys
- //
- key <KPF1> {
- type= "SHIFT+ALT",
- symbols[Group1]= [ KP_F1,Pointer_EnableKeys ]
- };
- key <KPF2> { [ KP_F2 ] };
- key <KPF3> { [ KP_F3 ] };
- key <KPF4> { [ KP_F4 ] };
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPCO> { [ KP_Separator ] };
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_0 ] };
- key <KPDL> { [ KP_Decimal ] };
-
- // Key to support Lock-Down Modifier descriptions for R5
- //
- key <LDM> { [ NoSymbol ] };
-};
-
-xkb_symbols "vt108" {
-
- include "digital_vndr/vt(vt105)"
-
- replace key <LCMP> { [ Mode_switch ] };
-
- key <LALT> { [ Alt_L, Meta_L ] };
- key <RALT> { [ Alt_R, Meta_R ] };
- key <RCMP> { [ Multi_key ] };
-};
+//
+//Copyright (c) 1996 Digital Equipment Corporation
+//
+//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 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 DIGITAL EQUIPMENT CORPORATION 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 Digital Equipment
+//Corporation shall not be used in advertising or otherwise to promote
+//the sale, use or other dealings in this Software without prior written
+//authorization from Digital Equipment Corporation.
+//
+// HISTORY
+// Log
+// Revision 1.2 1996/06/18 09:10:19 erik
+// use flags correctly, assorted cleanups and consortium fixes
+//
+// Revision 1.1.6.2 1995/12/19 19:56:39 William_Walker
+// Update to XKB 0.65
+// [1995/12/17 02:37:47 William_Walker]
+//
+// Revision 1.1.2.5 1995/07/11 21:20:50 William_Walker
+// Make RALT act as RALT
+// [1995/07/11 21:18:28 William_Walker]
+//
+// Revision 1.1.2.4 1995/06/27 12:18:41 William_Walker
+// Add LK201 and LK450 support as well as TW and DP variants.
+// [1995/06/26 20:30:37 William_Walker]
+//
+// Revision 1.1.2.3 1995/06/09 20:55:21 William_Walker
+// Add VT105 layout support and ISO group support
+// [1995/06/09 20:43:09 William_Walker]
+//
+// Revision 1.1.2.2 1995/06/05 19:25:04 William_Walker
+// New file. I love keymaps.
+// [1995/06/05 18:17:58 William_Walker]
+//
+// EndLog
+//
+// @(#)RCSfile: vt Revision: /main/3 (DEC) Date: 1996/01/24 12:15:08
+//
+xkb_symbols "vt105" {
+
+ // Modifier mappings
+ //
+ modifier_map Shift { Shift_L, Shift_R };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control { Control_L, Control_R };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+ modifier_map Mod3 { Mode_switch };
+
+ // Common keys
+ //
+ key <BKSP> { [ Delete ] };
+ key <TAB> { [ Tab ] };
+ key <RTRN> { [ Return ] };
+ key <LCTL> { [ Control_L ] };
+ key <CAPS> { [ Caps_Lock ] };
+ key <LFSH> { [ Shift_L ] };
+ key <RTSH> { [ Shift_R ] };
+ key <LCMP> { [ Alt_L, Meta_L ] };
+ key <SPCE> { [ space ] };
+
+ // "Function" keys
+ //
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ Escape, F11 ] };
+ key <FK12> { [ F12 ] };
+ key <FK13> { [ F13 ] };
+ key <FK14> { [ F14 ] };
+ key <FK17> { [ F17 ] };
+ key <FK18> { [ F18 ] };
+ key <FK19> { [ F19 ] };
+ key <FK20> { [ F20 ] };
+
+ // "Editing" keys
+ //
+ key <HELP> { [ Help ] };
+ key <DO> { [ Menu ] };
+ key <FIND> { [ Find ] };
+ key <INS> { [ Insert ] };
+ key <DELE> { [ apLineDel ] };
+ key <SELE> { [ Select ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+
+ key <UP> { [ Up ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <RGHT> { [ Right ] };
+
+ // "Keypad" keys
+ //
+ key <KPF1> {
+ type= "SHIFT+ALT",
+ symbols[Group1]= [ KP_F1,Pointer_EnableKeys ]
+ };
+ key <KPF2> { [ KP_F2 ] };
+ key <KPF3> { [ KP_F3 ] };
+ key <KPF4> { [ KP_F4 ] };
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPCO> { [ KP_Separator ] };
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_0 ] };
+ key <KPDL> { [ KP_Decimal ] };
+
+ // Key to support Lock-Down Modifier descriptions for R5
+ //
+ key <LDM> { [ NoSymbol ] };
+};
+
+xkb_symbols "vt108" {
+
+ include "digital_vndr/vt(vt105)"
+
+ replace key <LCMP> { [ Mode_switch ] };
+
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <RALT> { [ Alt_R, Meta_R ] };
+ key <RCMP> { [ Multi_key ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/empty b/xorg-server/xkeyboard-config/symbols/empty
index 16443b28c..cae330310 100644
--- a/xorg-server/xkeyboard-config/symbols/empty
+++ b/xorg-server/xkeyboard-config/symbols/empty
@@ -1,4 +1,4 @@
-default partial alphanumeric_keys modifier_keys
-xkb_symbols "basic" {
- name[Group1]= "Empty";
-};
+default partial alphanumeric_keys modifier_keys
+xkb_symbols "basic" {
+ name[Group1]= "Empty";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/eurosign b/xorg-server/xkeyboard-config/symbols/eurosign
index 380350174..0d95a900f 100644
--- a/xorg-server/xkeyboard-config/symbols/eurosign
+++ b/xorg-server/xkeyboard-config/symbols/eurosign
@@ -1,23 +1,23 @@
-// Most keyboards have the EuroSign engraved on the E key
-partial
-xkb_symbols "e" {
- key <AD03> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
-};
-
-// Many Apple keyboards have the EuroSign engraved on the 2 key
-partial
-xkb_symbols "2" {
- key <AE02> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
-};
-
-// Some keyboards have the EuroSign engraved on the 4 key
-partial
-xkb_symbols "4" {
- key <AE04> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
-};
-
-// Many keyboards have the EuroSign engraved on the 5 key
-partial
-xkb_symbols "5" {
- key <AE05> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
-};
+// Most keyboards have the EuroSign engraved on the E key
+partial
+xkb_symbols "e" {
+ key <AD03> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
+};
+
+// Many Apple keyboards have the EuroSign engraved on the 2 key
+partial
+xkb_symbols "2" {
+ key <AE02> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
+};
+
+// Some keyboards have the EuroSign engraved on the 4 key
+partial
+xkb_symbols "4" {
+ key <AE04> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
+};
+
+// Many keyboards have the EuroSign engraved on the 5 key
+partial
+xkb_symbols "5" {
+ key <AE05> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/extractGroupNames.sh b/xorg-server/xkeyboard-config/symbols/extractGroupNames.sh
index fb128fd19..bbcd6d58d 100644
--- a/xorg-server/xkeyboard-config/symbols/extractGroupNames.sh
+++ b/xorg-server/xkeyboard-config/symbols/extractGroupNames.sh
@@ -1,3 +1,3 @@
-#!/bin/sh
-
-grep 'name\[Group1\]' * | sed 's/[[:space:]]*name\[Group1\].*=[[:space:]]*//;s/;[[:space:]]*$//' | sort
+#!/bin/sh
+
+grep 'name\[Group1\]' * | sed 's/[[:space:]]*name\[Group1\].*=[[:space:]]*//;s/;[[:space:]]*$//' | sort
diff --git a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/Makefile.am
index 4e3a96ee1..5c9b0b833 100644
--- a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/fujitsu_vndr
-
-dist_symbols_DATA = \
-jp us
+symbolsdir = $(xkb_base)/symbols/fujitsu_vndr
+
+dist_symbols_DATA = \
+jp us
diff --git a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/jp b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/jp
index 0eb277712..63bf56aca 100644
--- a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/jp
+++ b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/jp
@@ -1,87 +1,87 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-// Japanese layout for a Fujitsu 140 key keyboard
-
-xkb_symbols {
- override "fujitsu_vndr/us"
- augment key <AE01> { [], [ kana_NU ] };
- key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
- key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
- key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
- augment key <AE05> { [], [ kana_E, kana_e ] };
- key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
- key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
- key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
- key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
- replace key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
- key <AE11> { [ minus, equal ], [ kana_HO ] };
- key <AE12> { [ asciicircum, asciitilde ], [ kana_HE ] };
- key <BKSL> { [ backslash, bar ], [ prolongedsound] };
- augment key <AD01> { [], [ kana_TA ] };
- augment key <AD02> { [], [ kana_TE ] };
- augment key <AD03> { [], [ kana_I, kana_i ] };
- augment key <AD04> { [], [ kana_SU ] };
- augment key <AD05> { [], [ kana_KA ] };
- augment key <AD06> { [], [ kana_N ] };
- augment key <AD07> { [], [ kana_NA ] };
- augment key <AD08> { [], [ kana_NI ] };
- augment key <AD09> { [], [ kana_RA ] };
- augment key <AD10> { [], [ kana_SE ] };
- key <AD11> { [ at, grave ], [ voicedsound ] };
- key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
- augment key <AC01> { [], [ kana_CHI ] };
- augment key <AC02> { [], [ kana_TO ] };
- augment key <AC03> { [], [ kana_SHI ] };
- augment key <AC04> { [], [ kana_HA ] };
- augment key <AC05> { [], [ kana_KI ] };
- augment key <AC06> { [], [ kana_KU ] };
- augment key <AC07> { [], [ kana_MA ] };
- augment key <AC08> { [], [ kana_NO ] };
- augment key <AC09> { [], [ kana_RI ] };
- key <AC10> { [ semicolon, plus ], [ kana_RE ] };
- key <AC11> { [ colon, asterisk ], [ kana_KE ] };
- key <TLDE> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
- augment key <AB01> { [], [ kana_TSU, kana_tsu ] };
- augment key <AB02> { [], [ kana_SA ] };
- augment key <AB03> { [], [ kana_SO ] };
- augment key <AB04> { [], [ kana_HI ] };
- augment key <AB05> { [], [ kana_KO ] };
- augment key <AB06> { [], [ kana_MI ] };
- augment key <AB07> { [], [ kana_MO ] };
- augment key <AB08> { [], [ kana_NE, kana_comma ] };
- augment key <AB09> { [], [ kana_RU, kana_fullstop ] };
- augment key <AB10> { [], [ kana_ME, kana_conjunctive ] };
- key <AB11> { [ underscore ], [ kana_RO ] };
- key <UNK0> { [ Select ] };
- key <UNK1> { [ Massyo ] };
- key <UNK2> { [ Touroku ] };
- key <UNK3> { [ Zenkaku_Hankaku ] };
- key <UNK4> { [ Eisu_Shift ] };
- key <UNK5> { [ Mode_switch ] };
- key <UNK6> { [ Cancel ] };
- key <UNK7> { [ Muhenkan ] };
- key <UNK8> { [ Henkan ] };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+// Japanese layout for a Fujitsu 140 key keyboard
+
+xkb_symbols {
+ override "fujitsu_vndr/us"
+ augment key <AE01> { [], [ kana_NU ] };
+ key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
+ key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
+ key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
+ augment key <AE05> { [], [ kana_E, kana_e ] };
+ key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
+ key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
+ key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
+ key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
+ replace key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
+ key <AE11> { [ minus, equal ], [ kana_HO ] };
+ key <AE12> { [ asciicircum, asciitilde ], [ kana_HE ] };
+ key <BKSL> { [ backslash, bar ], [ prolongedsound] };
+ augment key <AD01> { [], [ kana_TA ] };
+ augment key <AD02> { [], [ kana_TE ] };
+ augment key <AD03> { [], [ kana_I, kana_i ] };
+ augment key <AD04> { [], [ kana_SU ] };
+ augment key <AD05> { [], [ kana_KA ] };
+ augment key <AD06> { [], [ kana_N ] };
+ augment key <AD07> { [], [ kana_NA ] };
+ augment key <AD08> { [], [ kana_NI ] };
+ augment key <AD09> { [], [ kana_RA ] };
+ augment key <AD10> { [], [ kana_SE ] };
+ key <AD11> { [ at, grave ], [ voicedsound ] };
+ key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
+ augment key <AC01> { [], [ kana_CHI ] };
+ augment key <AC02> { [], [ kana_TO ] };
+ augment key <AC03> { [], [ kana_SHI ] };
+ augment key <AC04> { [], [ kana_HA ] };
+ augment key <AC05> { [], [ kana_KI ] };
+ augment key <AC06> { [], [ kana_KU ] };
+ augment key <AC07> { [], [ kana_MA ] };
+ augment key <AC08> { [], [ kana_NO ] };
+ augment key <AC09> { [], [ kana_RI ] };
+ key <AC10> { [ semicolon, plus ], [ kana_RE ] };
+ key <AC11> { [ colon, asterisk ], [ kana_KE ] };
+ key <TLDE> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
+ augment key <AB01> { [], [ kana_TSU, kana_tsu ] };
+ augment key <AB02> { [], [ kana_SA ] };
+ augment key <AB03> { [], [ kana_SO ] };
+ augment key <AB04> { [], [ kana_HI ] };
+ augment key <AB05> { [], [ kana_KO ] };
+ augment key <AB06> { [], [ kana_MI ] };
+ augment key <AB07> { [], [ kana_MO ] };
+ augment key <AB08> { [], [ kana_NE, kana_comma ] };
+ augment key <AB09> { [], [ kana_RU, kana_fullstop ] };
+ augment key <AB10> { [], [ kana_ME, kana_conjunctive ] };
+ key <AB11> { [ underscore ], [ kana_RO ] };
+ key <UNK0> { [ Select ] };
+ key <UNK1> { [ Massyo ] };
+ key <UNK2> { [ Touroku ] };
+ key <UNK3> { [ Zenkaku_Hankaku ] };
+ key <UNK4> { [ Eisu_Shift ] };
+ key <UNK5> { [ Mode_switch ] };
+ key <UNK6> { [ Cancel ] };
+ key <UNK7> { [ Muhenkan ] };
+ key <UNK8> { [ Henkan ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us
index 73dde7612..b856393fd 100644
--- a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us
+++ b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us
@@ -1,143 +1,143 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-// US/ASCII layout for a Fujitsu 138 key keyboard
-xkb_symbols {
- include "us(basic)"
-
- // A few alphanumeric keys are different
- key <TLDE> { [ grave, asciitilde ] };
- key <BKSP> { [ BackSpace ] };
- key <BKSL> { [ backslash, bar ] };
- key <AB11> { [ ] };
-
- key <RTSH> { [ Shift_R ] };
-
- key <LALT> { [ Alt_L ] };
- key <RALT> { [ Alt_R ] };
- key <LMTA> { [ Meta_L ] };
- key <RMTA> { [ Meta_R ] };
- key <LNFD> { [ Linefeed ] };
- key <COMP> { [ Multi_key ] };
- // End alphanumeric section
-
- // Begin "Function" section
- key <BREA> { [ Break ] };
- key <PRSC> { [ Print ] };
- key <KNJI> { [ Kanji ] };
- key <PAUS> { [ Pause ] };
-
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
- key <FK13> { [ F13 ] };
- key <FK14> { [ F14 ] };
- key <FK15> { [ F15 ] };
- key <FK16> { [ F16 ] };
- key <FK17> { [ F17 ] };
- key <FK18> { [ F18 ] };
- key <FK19> { [ F19 ] };
- key <FK20> { [ F20 ] };
- key <FK21> { [ F21 ] };
- key <FK22> { [ F22 ] };
- key <FK23> { [ F23 ] };
- key <FK24> { [ F24 ] };
- key <FK25> { [ F25 ] };
- key <FK26> { [ F26 ] };
- key <FK27> { [ F27 ] };
- key <FK28> { [ F28 ] };
- key <FK29> { [ F29 ] };
- key <FK30> { [ F30 ] };
- key <FK31> { [ F31 ] };
- key <FK32> { [ F32 ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <UNDO> { [ Undo ] };
- key <COPY> { [ F33 ] };
- key <PAST> { [ F34 ] };
- key <CUT> { [ F35 ] };
- key <HELP> { [ Help ] };
- // End "Editing" section
-
- // Begin "Cursor" section
- key <UNK0> { [ ] };
- key <UNK1> { [ ] };
- key <UNK2> { [ ] };
- key <PGUP> { [ Prior ] };
- key <HOME> { [ Home ] };
- key <PGDN> { [ Next ] };
- key <UNK3> { [ ] };
- key <DEL> { [ Delete ] };
- key <INS> { [ Insert ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
- key <UP> { [ Up ] };
- key <DOWN> { [ Down ] };
- key <EXEC> { [ Execute ] };
- // End "Cursor" section
-
- // Begin "Keypad" section
- key <KPMU> { [ KP_Multiply ] };
- key <KPDV> { [ KP_Divide ] };
- key <KPAD> { [ KP_Add ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPEQ> { [ KP_Equal ] };
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPDC> { [ KP_Decimal ] };
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_0 ] };
- key <KP00> { [ KP_0 ] };
- // End "Keypad" section
-
- // begin modifier mappings
- modifier_map Shift { Shift_R };
- modifier_map Mod1 { Meta_L, Meta_R };
- modifier_map Mod2 { Mode_switch };
- modifier_map Mod3 { Alt_L };
- modifier_map Mod4 { Num_Lock };
- modifier_map Mod5 { F13, F18, F20 };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+// US/ASCII layout for a Fujitsu 138 key keyboard
+xkb_symbols {
+ include "us(basic)"
+
+ // A few alphanumeric keys are different
+ key <TLDE> { [ grave, asciitilde ] };
+ key <BKSP> { [ BackSpace ] };
+ key <BKSL> { [ backslash, bar ] };
+ key <AB11> { [ ] };
+
+ key <RTSH> { [ Shift_R ] };
+
+ key <LALT> { [ Alt_L ] };
+ key <RALT> { [ Alt_R ] };
+ key <LMTA> { [ Meta_L ] };
+ key <RMTA> { [ Meta_R ] };
+ key <LNFD> { [ Linefeed ] };
+ key <COMP> { [ Multi_key ] };
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <BREA> { [ Break ] };
+ key <PRSC> { [ Print ] };
+ key <KNJI> { [ Kanji ] };
+ key <PAUS> { [ Pause ] };
+
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+ key <FK13> { [ F13 ] };
+ key <FK14> { [ F14 ] };
+ key <FK15> { [ F15 ] };
+ key <FK16> { [ F16 ] };
+ key <FK17> { [ F17 ] };
+ key <FK18> { [ F18 ] };
+ key <FK19> { [ F19 ] };
+ key <FK20> { [ F20 ] };
+ key <FK21> { [ F21 ] };
+ key <FK22> { [ F22 ] };
+ key <FK23> { [ F23 ] };
+ key <FK24> { [ F24 ] };
+ key <FK25> { [ F25 ] };
+ key <FK26> { [ F26 ] };
+ key <FK27> { [ F27 ] };
+ key <FK28> { [ F28 ] };
+ key <FK29> { [ F29 ] };
+ key <FK30> { [ F30 ] };
+ key <FK31> { [ F31 ] };
+ key <FK32> { [ F32 ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <UNDO> { [ Undo ] };
+ key <COPY> { [ F33 ] };
+ key <PAST> { [ F34 ] };
+ key <CUT> { [ F35 ] };
+ key <HELP> { [ Help ] };
+ // End "Editing" section
+
+ // Begin "Cursor" section
+ key <UNK0> { [ ] };
+ key <UNK1> { [ ] };
+ key <UNK2> { [ ] };
+ key <PGUP> { [ Prior ] };
+ key <HOME> { [ Home ] };
+ key <PGDN> { [ Next ] };
+ key <UNK3> { [ ] };
+ key <DEL> { [ Delete ] };
+ key <INS> { [ Insert ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <UP> { [ Up ] };
+ key <DOWN> { [ Down ] };
+ key <EXEC> { [ Execute ] };
+ // End "Cursor" section
+
+ // Begin "Keypad" section
+ key <KPMU> { [ KP_Multiply ] };
+ key <KPDV> { [ KP_Divide ] };
+ key <KPAD> { [ KP_Add ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPEQ> { [ KP_Equal ] };
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPDC> { [ KP_Decimal ] };
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_0 ] };
+ key <KP00> { [ KP_0 ] };
+ // End "Keypad" section
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Mod1 { Meta_L, Meta_R };
+ modifier_map Mod2 { Mode_switch };
+ modifier_map Mod3 { Alt_L };
+ modifier_map Mod4 { Num_Lock };
+ modifier_map Mod5 { F13, F18, F20 };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/hp_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/hp_vndr/Makefile.am
index 6bcd4da3e..25e8fa44f 100644
--- a/xorg-server/xkeyboard-config/symbols/hp_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/hp_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/hp_vndr
-
-dist_symbols_DATA = \
-us
+symbolsdir = $(xkb_base)/symbols/hp_vndr
+
+dist_symbols_DATA = \
+us
diff --git a/xorg-server/xkeyboard-config/symbols/hp_vndr/us b/xorg-server/xkeyboard-config/symbols/hp_vndr/us
index 7e07198d6..aedda92d2 100644
--- a/xorg-server/xkeyboard-config/symbols/hp_vndr/us
+++ b/xorg-server/xkeyboard-config/symbols/hp_vndr/us
@@ -1,104 +1,104 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-// US/ASCII layout for a HP non-PC keyboard
-xkb_symbols "hil" {
- include "us(basic)"
-
- // A few alphanumeric keys are different
- key <TLDE> { [ grave, asciitilde ]};
- key <RTSH> { [ Shift_R ]};
- key <LALT> { [ Meta_L ]};
- key <RALT> { [ Meta_R ]};
- // End alphanumeric section
-
- // Begin "Function" section
- key <BRK> { [ Break ]};
- key <STOP> { [ Cancel ]};
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <MENU> { [ Menu ] };
- key <SYST> { [ hpSystem ]};
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <CLRL> { [ hpClearLine ]};
- key <CLR> { [ Clear ]};
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <PRSC> { [ Execute, Print ]};
- key <INSL> { [ hpInsertLine ]};
- key <DELL> { [ hpDeleteLine ]};
- key <INSC> { [ hpInsertChar ]};
- key <DELC> { [ hpDeleteChar ]};
- key <HOME> { [ Home ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
- key <SELE> { [ Select ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <UP> { [ Up ] };
- key <RGHT> { [ Right ]};
-
- // End "Editing" section, begin "Keypad"
- key <KPMU> { [ KP_Multiply ]};
- key <KPDV> { [ KP_Divide ]};
- key <KPAD> { [ KP_Add ]};
- key <KPSU> { [ KP_Subtract ]};
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPEN> { [ KP_Enter ]};
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPSP> { [ KP_Separator ]};
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPTB> { [ KP_Tab ]};
-
- key <KP0> { [ KP_0 ] };
- key <KPDL> { [ KP_Decimal ] };
- // End "Keypad" section
-
-
- // begin modifier mappings
- modifier_map Shift { Shift_R };
- modifier_map Mod1 { Meta_L, Meta_R };
- modifier_map Mod2 { Alt_L };
- modifier_map Mod3 { Mode_switch };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+// US/ASCII layout for a HP non-PC keyboard
+xkb_symbols "hil" {
+ include "us(basic)"
+
+ // A few alphanumeric keys are different
+ key <TLDE> { [ grave, asciitilde ]};
+ key <RTSH> { [ Shift_R ]};
+ key <LALT> { [ Meta_L ]};
+ key <RALT> { [ Meta_R ]};
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <BRK> { [ Break ]};
+ key <STOP> { [ Cancel ]};
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <MENU> { [ Menu ] };
+ key <SYST> { [ hpSystem ]};
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <CLRL> { [ hpClearLine ]};
+ key <CLR> { [ Clear ]};
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <PRSC> { [ Execute, Print ]};
+ key <INSL> { [ hpInsertLine ]};
+ key <DELL> { [ hpDeleteLine ]};
+ key <INSC> { [ hpInsertChar ]};
+ key <DELC> { [ hpDeleteChar ]};
+ key <HOME> { [ Home ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+ key <SELE> { [ Select ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <UP> { [ Up ] };
+ key <RGHT> { [ Right ]};
+
+ // End "Editing" section, begin "Keypad"
+ key <KPMU> { [ KP_Multiply ]};
+ key <KPDV> { [ KP_Divide ]};
+ key <KPAD> { [ KP_Add ]};
+ key <KPSU> { [ KP_Subtract ]};
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPEN> { [ KP_Enter ]};
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPSP> { [ KP_Separator ]};
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPTB> { [ KP_Tab ]};
+
+ key <KP0> { [ KP_0 ] };
+ key <KPDL> { [ KP_Decimal ] };
+ // End "Keypad" section
+
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Mod1 { Meta_L, Meta_R };
+ modifier_map Mod2 { Alt_L };
+ modifier_map Mod3 { Mode_switch };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/kpdl b/xorg-server/xkeyboard-config/symbols/kpdl
index 1e4a537a9..968dbd2d9 100644
--- a/xorg-server/xkeyboard-config/symbols/kpdl
+++ b/xorg-server/xkeyboard-config/symbols/kpdl
@@ -1,102 +1,102 @@
-// The <KPDL> key is a mess.
-// It was probably originally meant to be a decimal separator.
-// Except since it was declared by USA people it didn't use the original
-// SI separator "," but a "." (since then the USA managed to f-up the SI
-// by making "." an accepted alternative, but standards still use "," as
-// default)
-// As a result users of SI-abiding countries expect either a "." or a ","
-// or a "decimal_separator" which may or may not be translated in one of the
-// above depending on applications.
-// It's not possible to define a default per-country since user expectations
-// depend on the conflicting choices of their most-used applications,
-// operating system, etc. Therefore it needs to be a configuration setting
-// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
-
-
-// Legacy <KPDL> #1
-// This assumes KP_Decimal will be translated in a dot
-partial keypad_keys
-xkb_symbols "dot" {
-
- key.type[Group1]="KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, KP_Decimal ] }; // <delete> <separator>
-};
-
-
-// Legacy <KPDL> #2
-// This assumes KP_Separator will be translated in a comma
-partial keypad_keys
-xkb_symbols "comma" {
-
- key.type[Group1]="KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, KP_Separator ] }; // <delete> <separator>
-};
-
-
-// Period <KPDL>, usual keyboard serigraphy in most countries
-partial keypad_keys
-xkb_symbols "dotoss" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, period, comma, 0x100202F ] }; // <delete> . , â½ (narrow no-break space)
-};
-
-
-// Period <KPDL>, usual keyboard serigraphy in most countries, latin-9 restriction
-partial keypad_keys
-xkb_symbols "dotoss_latin9" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, period, comma, nobreakspace ] }; // <delete> . , â½ (no-break space)
-};
-
-
-// Comma <KPDL>, what most non anglo-saxon people consider the real separator
-partial keypad_keys
-xkb_symbols "commaoss" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, comma, period, 0x100202F ] }; // <delete> , . â½ (narrow no-break space)
-};
-
-
-// Momayyez <KPDL>: Bahrain, Iran, Iraq, Kuwait, Oman, Qatar, Saudi Arabia, Syria, UAE
-partial keypad_keys
-xkb_symbols "momayyezoss" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, 0x100066B, comma, 0x100202F ] }; // <delete> ? , â½ (narrow no-break space)
-};
-
-
-// Abstracted <KPDL>, pray everything will work out (it usually does not)
-partial keypad_keys
-xkb_symbols "kposs" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ KP_Delete, KP_Decimal, KP_Separator, 0x100202F ] }; // <delete> ? ? â½ (narrow no-break space)
-};
-
-// Spreadsheets may be configured to use the dot as decimal
-// punctuation, comma as a thousands separator and then semi-colon as
-// the list separator. Of these, dot and semi-colon is most important
-// when entering data by the keyboard; the comma can then be inferred
-// and added to the presentation afterwards. Using semi-colon as a
-// general separator may in fact be preferred to avoid ambiguities
-// in data files. Most times a decimal separator is hard-coded, it
-// seems to be period, probably since this is the syntax used in
-// (most) programming languages.
-partial keypad_keys
-xkb_symbols "semi" {
-
- key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
-
- key <KPDL> { [ NoSymbol, NoSymbol, semicolon ] };
-};
+// The <KPDL> key is a mess.
+// It was probably originally meant to be a decimal separator.
+// Except since it was declared by USA people it didn't use the original
+// SI separator "," but a "." (since then the USA managed to f-up the SI
+// by making "." an accepted alternative, but standards still use "," as
+// default)
+// As a result users of SI-abiding countries expect either a "." or a ","
+// or a "decimal_separator" which may or may not be translated in one of the
+// above depending on applications.
+// It's not possible to define a default per-country since user expectations
+// depend on the conflicting choices of their most-used applications,
+// operating system, etc. Therefore it needs to be a configuration setting
+// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+
+
+// Legacy <KPDL> #1
+// This assumes KP_Decimal will be translated in a dot
+partial keypad_keys
+xkb_symbols "dot" {
+
+ key.type[Group1]="KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, KP_Decimal ] }; // <delete> <separator>
+};
+
+
+// Legacy <KPDL> #2
+// This assumes KP_Separator will be translated in a comma
+partial keypad_keys
+xkb_symbols "comma" {
+
+ key.type[Group1]="KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, KP_Separator ] }; // <delete> <separator>
+};
+
+
+// Period <KPDL>, usual keyboard serigraphy in most countries
+partial keypad_keys
+xkb_symbols "dotoss" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, period, comma, 0x100202F ] }; // <delete> . , â½ (narrow no-break space)
+};
+
+
+// Period <KPDL>, usual keyboard serigraphy in most countries, latin-9 restriction
+partial keypad_keys
+xkb_symbols "dotoss_latin9" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, period, comma, nobreakspace ] }; // <delete> . , â½ (no-break space)
+};
+
+
+// Comma <KPDL>, what most non anglo-saxon people consider the real separator
+partial keypad_keys
+xkb_symbols "commaoss" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, comma, period, 0x100202F ] }; // <delete> , . â½ (narrow no-break space)
+};
+
+
+// Momayyez <KPDL>: Bahrain, Iran, Iraq, Kuwait, Oman, Qatar, Saudi Arabia, Syria, UAE
+partial keypad_keys
+xkb_symbols "momayyezoss" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, 0x100066B, comma, 0x100202F ] }; // <delete> ? , â½ (narrow no-break space)
+};
+
+
+// Abstracted <KPDL>, pray everything will work out (it usually does not)
+partial keypad_keys
+xkb_symbols "kposs" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, KP_Decimal, KP_Separator, 0x100202F ] }; // <delete> ? ? â½ (narrow no-break space)
+};
+
+// Spreadsheets may be configured to use the dot as decimal
+// punctuation, comma as a thousands separator and then semi-colon as
+// the list separator. Of these, dot and semi-colon is most important
+// when entering data by the keyboard; the comma can then be inferred
+// and added to the presentation afterwards. Using semi-colon as a
+// general separator may in fact be preferred to avoid ambiguities
+// in data files. Most times a decimal separator is hard-coded, it
+// seems to be period, probably since this is the syntax used in
+// (most) programming languages.
+partial keypad_keys
+xkb_symbols "semi" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ NoSymbol, NoSymbol, semicolon ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/level3 b/xorg-server/xkeyboard-config/symbols/level3
index 599443002..9d495550a 100644
--- a/xorg-server/xkeyboard-config/symbols/level3
+++ b/xorg-server/xkeyboard-config/symbols/level3
@@ -1,196 +1,196 @@
-// these variants assign various XKB keycodes to ISO_Level3_Shift so that
-// the third shift level can be reached
-//
-
-// the default behavior is for the right Alt key (AltGr) to generate the
-// third engraved symbol
-default partial modifier_keys
-xkb_symbols "ralt_switch" {
- key <RALT> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// Right Alt key never chooses 3rd level.
-// This option attempts to undo the effect of a layout's
-// including ralt_switch. You may also want to select another
-// level3 option that maps the level3 shift to some other key.
-partial modifier_keys
-xkb_symbols "ralt_alt" {
- key <RALT> {
- type[Group1]="TWO_LEVEL",
- type[Group2]="TWO_LEVEL",
- type[Group3]="TWO_LEVEL",
- type[Group4]="TWO_LEVEL",
- symbols[Group1] = [ Alt_R, Meta_R ],
- symbols[Group2] = [ Alt_R, Meta_R ],
- symbols[Group3] = [ Alt_R, Meta_R ],
- symbols[Group4] = [ Alt_R, Meta_R ]
- };
- modifier_map Mod1 { <RALT> };
-};
-
-partial modifier_keys
-xkb_symbols "ralt_switch_multikey" {
- key <RALT> {
- type[Group1]="TWO_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift, Multi_key ]
- };
-};
-
-// special case or right Alt switch - for use with grp:alts_toggle
-//
-partial hidden modifier_keys
-xkb_symbols "ralt_switch_for_alts_toggle" {
- virtual_modifiers LAlt, AlGr;
- key <LALT> {
- type[Group1]="PC_RALT_LEVEL2",
- symbols[Group1] = [ Alt_L, ISO_Prev_Group, ISO_Prev_Group ],
- virtualMods= LAlt
- };
- key <RALT> {
- type[Group1]="PC_ALT_LEVEL2",
- symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ],
- virtualMods= AltGr
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// using the level(alt_switch) map, either Alt key temporarily chooses
-// the third shift level. (Mostly be used to imitate Mac OS functionality.)
-partial modifier_keys
-xkb_symbols "alt_switch" {
- include "level3(lalt_switch)"
- include "level3(ralt_switch)"
-};
-
-partial modifier_keys
-xkb_symbols "lalt_switch" {
- key <LALT> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { <LALT> };
-};
-
-// using the level(switch) map, the right Control key temporarily
-// chooses the third shift level (until it is released).
-partial modifier_keys
-xkb_symbols "switch" {
- key <RCTL> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// using the level(menu_switch) map, the Menu key temporarily
-// chooses the third shift level (until it is released).
-partial modifier_keys
-xkb_symbols "menu_switch" {
- key <MENU> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// using the level3(win_switch) map, the either Windows' logo key
-// temporarily chooses the third shift level.
-partial modifier_keys
-xkb_symbols "win_switch" {
- include "level3(lwin_switch)"
- include "level3(rwin_switch)"
-};
-
-// using the level3(lwin_switch) map, the left Windows' logo key
-// temporarily chooses the third shift level.
-partial modifier_keys
-xkb_symbols "lwin_switch" {
- key <LWIN> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// using the level(rwin_switch) map, the right Windows' logo key
-// temporarily chooses the third shift level. If you use this map,
-// you should define your keyboard as pc101 or pc102 instead of pc104
-// or pc105.
-partial modifier_keys
-xkb_symbols "rwin_switch" {
- key <RWIN> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-// using the level3(enter_switch) map, the Enter key on the keypad
-// temporarily chooses the third shift level. This is especially
-// useful for Mac laptops which miss the right Alt key.
-partial modifier_keys
-xkb_symbols "enter_switch" {
- key <KPEN> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "caps_switch" {
- key <CAPS> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "bksl_switch" {
- key <BKSL> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "lsgt_switch" {
- key <LSGT> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "caps_switch_latch" {
- key <CAPS> {
- type[Group1]="THREE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "bksl_switch_latch" {
- key <BKSL> {
- type[Group1]="THREE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "lsgt_switch_latch" {
- key <LSGT> {
- type[Group1]="THREE_LEVEL",
- symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
- };
- modifier_map Mod5 { ISO_Level3_Shift };
-};
+// these variants assign various XKB keycodes to ISO_Level3_Shift so that
+// the third shift level can be reached
+//
+
+// the default behavior is for the right Alt key (AltGr) to generate the
+// third engraved symbol
+default partial modifier_keys
+xkb_symbols "ralt_switch" {
+ key <RALT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// Right Alt key never chooses 3rd level.
+// This option attempts to undo the effect of a layout's
+// including ralt_switch. You may also want to select another
+// level3 option that maps the level3 shift to some other key.
+partial modifier_keys
+xkb_symbols "ralt_alt" {
+ key <RALT> {
+ type[Group1]="TWO_LEVEL",
+ type[Group2]="TWO_LEVEL",
+ type[Group3]="TWO_LEVEL",
+ type[Group4]="TWO_LEVEL",
+ symbols[Group1] = [ Alt_R, Meta_R ],
+ symbols[Group2] = [ Alt_R, Meta_R ],
+ symbols[Group3] = [ Alt_R, Meta_R ],
+ symbols[Group4] = [ Alt_R, Meta_R ]
+ };
+ modifier_map Mod1 { <RALT> };
+};
+
+partial modifier_keys
+xkb_symbols "ralt_switch_multikey" {
+ key <RALT> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, Multi_key ]
+ };
+};
+
+// special case or right Alt switch - for use with grp:alts_toggle
+//
+partial hidden modifier_keys
+xkb_symbols "ralt_switch_for_alts_toggle" {
+ virtual_modifiers LAlt, AlGr;
+ key <LALT> {
+ type[Group1]="PC_RALT_LEVEL2",
+ symbols[Group1] = [ Alt_L, ISO_Prev_Group, ISO_Prev_Group ],
+ virtualMods= LAlt
+ };
+ key <RALT> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level(alt_switch) map, either Alt key temporarily chooses
+// the third shift level. (Mostly be used to imitate Mac OS functionality.)
+partial modifier_keys
+xkb_symbols "alt_switch" {
+ include "level3(lalt_switch)"
+ include "level3(ralt_switch)"
+};
+
+partial modifier_keys
+xkb_symbols "lalt_switch" {
+ key <LALT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { <LALT> };
+};
+
+// using the level(switch) map, the right Control key temporarily
+// chooses the third shift level (until it is released).
+partial modifier_keys
+xkb_symbols "switch" {
+ key <RCTL> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level(menu_switch) map, the Menu key temporarily
+// chooses the third shift level (until it is released).
+partial modifier_keys
+xkb_symbols "menu_switch" {
+ key <MENU> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level3(win_switch) map, the either Windows' logo key
+// temporarily chooses the third shift level.
+partial modifier_keys
+xkb_symbols "win_switch" {
+ include "level3(lwin_switch)"
+ include "level3(rwin_switch)"
+};
+
+// using the level3(lwin_switch) map, the left Windows' logo key
+// temporarily chooses the third shift level.
+partial modifier_keys
+xkb_symbols "lwin_switch" {
+ key <LWIN> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level(rwin_switch) map, the right Windows' logo key
+// temporarily chooses the third shift level. If you use this map,
+// you should define your keyboard as pc101 or pc102 instead of pc104
+// or pc105.
+partial modifier_keys
+xkb_symbols "rwin_switch" {
+ key <RWIN> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level3(enter_switch) map, the Enter key on the keypad
+// temporarily chooses the third shift level. This is especially
+// useful for Mac laptops which miss the right Alt key.
+partial modifier_keys
+xkb_symbols "enter_switch" {
+ key <KPEN> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "caps_switch" {
+ key <CAPS> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "bksl_switch" {
+ key <BKSL> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch" {
+ key <LSGT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "caps_switch_latch" {
+ key <CAPS> {
+ type[Group1]="THREE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "bksl_switch_latch" {
+ key <BKSL> {
+ type[Group1]="THREE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch_latch" {
+ key <LSGT> {
+ type[Group1]="THREE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/level5 b/xorg-server/xkeyboard-config/symbols/level5
index 6e9a693cc..ce219b5bf 100644
--- a/xorg-server/xkeyboard-config/symbols/level5
+++ b/xorg-server/xkeyboard-config/symbols/level5
@@ -1,147 +1,147 @@
-// these variants assign various XKB keycodes to ISO_Level5_Shift so that
-// the third shift level can be reached
-//
-
-// using the level(switch) map, the right Control key temporarily
-// chooses the fifth shift level (until it is released).
-partial modifier_keys
-xkb_symbols "rctrl_switch" {
- key <RCTL> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level5_Shift ]
- };
- modifier_map Mod3 { ISO_Level5_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "lsgt_switch" {
- key <LSGT> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level5_Shift ]
- };
- modifier_map Mod3 { ISO_Level5_Shift };
-};
-
-partial modifier_keys
-xkb_symbols "ralt_switch" {
- key <RALT> {
- type[Group1]="ONE_LEVEL",
- symbols[Group1] = [ ISO_Level5_Shift ]
- };
- modifier_map Mod3 { ISO_Level5_Shift };
-};
-
-
-// The following modifier keys are used to switch to the third shift and to set a
-// corresponding lock, implemented as NumLock.
-
-partial modifier_keys
-xkb_symbols "lock" {
- // This adds the definitions needed to create a level5-lock behaviour, using
- // the real modifier NumLock as a lock indicator.
- // See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK
- // See also: compat/level5(level5_lock)
- key.type[Group1] = "ONE_LEVEL";
-
- replace key <MDSW> {
- vmods = LevelFive,
- symbols[Group1] = [ ISO_Level5_Shift ],
- actions[Group1] = [ SetMods(modifiers=LevelFive) ]
- };
- modifier_map Mod3 { <MDSW> };
-
- replace key <HYPR> {
- vmods = NumLock,
- symbols[Group1] = [ NoSymbol ],
- actions[Group1] = [ SetMods(modifiers=NumLock) ]
- };
- modifier_map Mod2 { <HYPR> };
-};
-
-partial modifier_keys
-xkb_symbols "lsgt_switch_lock" {
-
- include "level5(lock)"
-
- key <LSGT> {
- type[Group1] = "EIGHT_LEVEL",
- symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
- };
-};
-
-partial modifier_keys
-xkb_symbols "lwin_switch_lock" {
-
- include "level5(lock)"
-
- key <LWIN> {
- type[Group1] = "EIGHT_LEVEL",
- symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
- };
-};
-
-partial modifier_keys
-xkb_symbols "ralt_switch_lock" {
-
- include "level5(lock)"
-
- key <RALT> {
- type[Group1] = "EIGHT_LEVEL",
- symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
- };
-};
-
-partial modifier_keys
-xkb_symbols "rwin_switch_lock" {
-
- include "level5(lock)"
-
- key <RWIN> {
- type[Group1] = "EIGHT_LEVEL",
- symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
- };
-};
-
-partial modifier_keys
-xkb_symbols "lsgt_switch_lock_cancel" {
-
- include "level5(lock)"
-
- key <LSGT> {
- type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
- symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
- };
-};
-
-partial modifier_keys
-xkb_symbols "lwin_switch_lock_cancel" {
-
- include "level5(lock)"
-
- key <LWIN> {
- type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
- symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
- };
-};
-
-partial modifier_keys
-xkb_symbols "ralt_switch_lock_cancel" {
-
- include "level5(lock)"
-
- key <RALT> {
- type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
- symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
- };
-};
-
-partial modifier_keys
-xkb_symbols "rwin_switch_lock_cancel" {
-
- include "level5(lock)"
-
- key <RWIN> {
- type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
- symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
- };
-};
+// these variants assign various XKB keycodes to ISO_Level5_Shift so that
+// the third shift level can be reached
+//
+
+// using the level(switch) map, the right Control key temporarily
+// chooses the fifth shift level (until it is released).
+partial modifier_keys
+xkb_symbols "rctrl_switch" {
+ key <RCTL> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift ]
+ };
+ modifier_map Mod3 { ISO_Level5_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch" {
+ key <LSGT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift ]
+ };
+ modifier_map Mod3 { ISO_Level5_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "ralt_switch" {
+ key <RALT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift ]
+ };
+ modifier_map Mod3 { ISO_Level5_Shift };
+};
+
+
+// The following modifier keys are used to switch to the third shift and to set a
+// corresponding lock, implemented as NumLock.
+
+partial modifier_keys
+xkb_symbols "lock" {
+ // This adds the definitions needed to create a level5-lock behaviour, using
+ // the real modifier NumLock as a lock indicator.
+ // See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK
+ // See also: compat/level5(level5_lock)
+ key.type[Group1] = "ONE_LEVEL";
+
+ replace key <MDSW> {
+ vmods = LevelFive,
+ symbols[Group1] = [ ISO_Level5_Shift ],
+ actions[Group1] = [ SetMods(modifiers=LevelFive) ]
+ };
+ modifier_map Mod3 { <MDSW> };
+
+ replace key <HYPR> {
+ vmods = NumLock,
+ symbols[Group1] = [ NoSymbol ],
+ actions[Group1] = [ SetMods(modifiers=NumLock) ]
+ };
+ modifier_map Mod2 { <HYPR> };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch_lock" {
+
+ include "level5(lock)"
+
+ key <LSGT> {
+ type[Group1] = "EIGHT_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "lwin_switch_lock" {
+
+ include "level5(lock)"
+
+ key <LWIN> {
+ type[Group1] = "EIGHT_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "ralt_switch_lock" {
+
+ include "level5(lock)"
+
+ key <RALT> {
+ type[Group1] = "EIGHT_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "rwin_switch_lock" {
+
+ include "level5(lock)"
+
+ key <RWIN> {
+ type[Group1] = "EIGHT_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch_lock_cancel" {
+
+ include "level5(lock)"
+
+ key <LSGT> {
+ type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "lwin_switch_lock_cancel" {
+
+ include "level5(lock)"
+
+ key <LWIN> {
+ type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "ralt_switch_lock_cancel" {
+
+ include "level5(lock)"
+
+ key <RALT> {
+ type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "rwin_switch_lock_cancel" {
+
+ include "level5(lock)"
+
+ key <RWIN> {
+ type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch
index 09c2fb32f..54b61d215 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch
@@ -1,101 +1,101 @@
-//
-// 03.01.2003
-// Andreas Tobler <a.tobler@schweiz.ch>
-// modified for Swiss German Apple Extended Keyboard II
-
-partial alphanumeric_keys
-xkb_symbols "extended" {
-
- name[Group1]= "Switzerland - German, Mac";
-
- // Alphanumeric section
-
- key <AE01> { [ 1, plus, plusminus, infinity ] };
- key <AE02> { [ 2, quotedbl, leftdoublequotemark, rightdoublequotemark ] };
- key <AE03> { [ 3, asterisk, numbersign, leftcaret ] };
- // not displayed here
- key <AE04> { [ 4, ccedilla, Ccedilla, slash ] };
- key <AE05> { [ 5, percent, bracketleft ] };
- key <AE06> { [ 6, ampersand, bracketright ] };
- key <AE07> { [ 7, slash, bar, backslash ] };
- key <AE08> { [ 8, parenleft, braceleft, Ograve ] };
- key <AE09> { [ 9, parenright, braceright, Ocircumflex ] };
- key <AE10> { [ 0, equal, notequal, Uacute ] };
- key <AE11> { [ apostrophe, question, questiondown, NoSymbol ] };
- key <AE12> { [ dead_circumflex,dead_grave, dead_acute, asciicircum ] };
- key <AD01> { [ q, Q, oe, OE ] };
- key <AD02> { [ w, W, Greek_SIGMA, Aacute ] };
- key <AD03> { [ e, E, EuroSign, Ediaeresis ] };
- key <AD04> { [ r, R, registered, Egrave ] };
- key <AD05> { [ t, T, dagger, Icircumflex ] };
- key <AD06> { [ z, Z, Greek_OMEGA, Iacute ] };
- key <AD07> { [ u, U, degree, Ugrave ] };
- key <AD08> { [ i, I, exclamdown, idotless ] };
- key <AD09> { [ o, O, oslash, Ooblique ] };
- key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
- key <AD11> { [ udiaeresis, egrave, section, ydiaeresis ] };
- key <AD12> { [ dead_diaeresis, exclam, grave, apostrophe ] };
- key <AC01> { [ a, A, aring, Aring ] };
- key <AC02> { [ s, S, ssharp, NoSymbol ] };
- // ligature fl
- key <AC03> { [ d, D, Greek_sigma, NoSymbol ] };
- // partialderivative is not available here att
- key <AC04> { [ f, F, function, doubledagger ] };
- key <AC05> { [ g, G, at, comma ] };
- key <AC06> { [ h, H, ordfeminine, periodcentered ] };
- key <AC07> { [ j, J, masculine, eth ] };
- key <AC08> { [ k, K, Greek_DELTA, macron ] };
- key <AC09> { [ l, L, notsign, caret ] };
- key <AC10> { [ odiaeresis, eacute, cent, breve ] };
- key <AC11> { [ adiaeresis, agrave, ae, AE ] };
- key <AB01> { [ y, Y, yen, Ydiaeresis ] };
- key <AB02> { [ x, X, similarequal, trademark ] };
- key <AB03> { [ c, C, copyright, NoSymbol ] };
- key <AB04> { [ v, V, radical, diamond ] };
- key <AB05> { [ b, B, integral, NoSymbol ] };
- key <AB06> { [ n, N, dead_tilde, enopencircbullet ] };
- // to be fixed att
- key <AB07> { [ m, M, mu, dead_abovering ] };
- // not sure att
- key <AB08> { [ comma, semicolon, guillemotleft, guillemotright ] };
- key <AB09> { [ period, colon, ellipsis, division ] };
- key <AB10> { [ minus, underscore, hyphen, emdash ] };
- key <TLDE> { [ section, degree, NoSymbol, NoSymbol ] };
- // ligature fi // per mille
- key <SPCE> { [ space, nobreakspace, nobreakspace ] };
- key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] };
- key <BKSL> { [ dollar, sterling, paragraph, enfilledcircbullet ] };
-
- include "kpdl(comma)"
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "de" {
- include "macintosh_vndr/ch(extended)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "fr" {
-
- // Describes the differences between a very simple US/ASCII
- // keyboard and a very simple Swiss/French keybaord
-
- include "macintosh_vndr/ch(extended)"
- name[Group1]= "Switzerland - French, Mac";
-
- override key <AD11> {
- [ egrave, udiaeresis, bracketleft ]
- };
- override key <AC10> {
- [ eacute, odiaeresis ]
- };
- override key <AC11> {
- [ agrave, adiaeresis, braceleft ]
- };
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "macintosh_vndr/ch(fr)" // for consistent naming
-};
+//
+// 03.01.2003
+// Andreas Tobler <a.tobler@schweiz.ch>
+// modified for Swiss German Apple Extended Keyboard II
+
+partial alphanumeric_keys
+xkb_symbols "extended" {
+
+ name[Group1]= "Switzerland - German, Mac";
+
+ // Alphanumeric section
+
+ key <AE01> { [ 1, plus, plusminus, infinity ] };
+ key <AE02> { [ 2, quotedbl, leftdoublequotemark, rightdoublequotemark ] };
+ key <AE03> { [ 3, asterisk, numbersign, leftcaret ] };
+ // not displayed here
+ key <AE04> { [ 4, ccedilla, Ccedilla, slash ] };
+ key <AE05> { [ 5, percent, bracketleft ] };
+ key <AE06> { [ 6, ampersand, bracketright ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, braceleft, Ograve ] };
+ key <AE09> { [ 9, parenright, braceright, Ocircumflex ] };
+ key <AE10> { [ 0, equal, notequal, Uacute ] };
+ key <AE11> { [ apostrophe, question, questiondown, NoSymbol ] };
+ key <AE12> { [ dead_circumflex,dead_grave, dead_acute, asciicircum ] };
+ key <AD01> { [ q, Q, oe, OE ] };
+ key <AD02> { [ w, W, Greek_SIGMA, Aacute ] };
+ key <AD03> { [ e, E, EuroSign, Ediaeresis ] };
+ key <AD04> { [ r, R, registered, Egrave ] };
+ key <AD05> { [ t, T, dagger, Icircumflex ] };
+ key <AD06> { [ z, Z, Greek_OMEGA, Iacute ] };
+ key <AD07> { [ u, U, degree, Ugrave ] };
+ key <AD08> { [ i, I, exclamdown, idotless ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
+ key <AD11> { [ udiaeresis, egrave, section, ydiaeresis ] };
+ key <AD12> { [ dead_diaeresis, exclam, grave, apostrophe ] };
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC02> { [ s, S, ssharp, NoSymbol ] };
+ // ligature fl
+ key <AC03> { [ d, D, Greek_sigma, NoSymbol ] };
+ // partialderivative is not available here att
+ key <AC04> { [ f, F, function, doubledagger ] };
+ key <AC05> { [ g, G, at, comma ] };
+ key <AC06> { [ h, H, ordfeminine, periodcentered ] };
+ key <AC07> { [ j, J, masculine, eth ] };
+ key <AC08> { [ k, K, Greek_DELTA, macron ] };
+ key <AC09> { [ l, L, notsign, caret ] };
+ key <AC10> { [ odiaeresis, eacute, cent, breve ] };
+ key <AC11> { [ adiaeresis, agrave, ae, AE ] };
+ key <AB01> { [ y, Y, yen, Ydiaeresis ] };
+ key <AB02> { [ x, X, similarequal, trademark ] };
+ key <AB03> { [ c, C, copyright, NoSymbol ] };
+ key <AB04> { [ v, V, radical, diamond ] };
+ key <AB05> { [ b, B, integral, NoSymbol ] };
+ key <AB06> { [ n, N, dead_tilde, enopencircbullet ] };
+ // to be fixed att
+ key <AB07> { [ m, M, mu, dead_abovering ] };
+ // not sure att
+ key <AB08> { [ comma, semicolon, guillemotleft, guillemotright ] };
+ key <AB09> { [ period, colon, ellipsis, division ] };
+ key <AB10> { [ minus, underscore, hyphen, emdash ] };
+ key <TLDE> { [ section, degree, NoSymbol, NoSymbol ] };
+ // ligature fi // per mille
+ key <SPCE> { [ space, nobreakspace, nobreakspace ] };
+ key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] };
+ key <BKSL> { [ dollar, sterling, paragraph, enfilledcircbullet ] };
+
+ include "kpdl(comma)"
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "de" {
+ include "macintosh_vndr/ch(extended)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "fr" {
+
+ // Describes the differences between a very simple US/ASCII
+ // keyboard and a very simple Swiss/French keybaord
+
+ include "macintosh_vndr/ch(extended)"
+ name[Group1]= "Switzerland - French, Mac";
+
+ override key <AD11> {
+ [ egrave, udiaeresis, bracketleft ]
+ };
+ override key <AC10> {
+ [ eacute, odiaeresis ]
+ };
+ override key <AC11> {
+ [ agrave, adiaeresis, braceleft ]
+ };
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "macintosh_vndr/ch(fr)" // for consistent naming
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de
index 4c8bebdf4..da5bc7772 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de
@@ -1,94 +1,94 @@
-// olh@suse.de very close to MacOS map
-
-default partial alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple US/ASCII
- // keyboard and a very simple German keybaord
-
- include "latin"
- name[Group1]= "Germany - Mac";
-
- // Alphanumeric section
- key <TLDE> { [ dead_circumflex, degree, notsign ] };
- key <AE01> { [ 1, exclam, exclamdown, at ] };
- key <AE02> { [ 2, quotedbl, twosuperior ] };
- key <AE03> { [ 3, section, threesuperior,sterling ] };
- key <AE04> { [ 4, dollar, onequarter, currency ] };
- key <AE05> { [ 5, percent, bracketleft ] };
- key <AE06> { [ 6, ampersand, bracketright ] };
- key <AE07> { [ 7, slash, bar, backslash ] };
- key <AE08> { [ 8, parenleft, braceleft, asciitilde ] };
- key <AE09> { [ 9, parenright, braceright ] };
- key <AE10> { [ 0, equal, braceright, degree ] };
- key <AE11> { [ ssharp, question, backslash, questiondown ] };
- key <AE12> { [ dead_acute, dead_grave, dead_cedilla ] };
-
- key <AD01> { [ q, Q, guillemotleft,guillemotright ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD04> { [ r, R, registered ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ z, Z ] };
- key <AD07> { [ u, U, diaeresis, Aacute ] };
- key <AD08> { [ i, I, slash, Ucircumflex ] };
- key <AD09> { [ o, O, oslash, Ooblique ] };
- key <AD11> { [ udiaeresis, Udiaeresis, periodcentered, degree ] };
- key <AD12> { [ plus, asterisk, asciitilde ] };
- key <AC01> { [ a, A, aring, Aring ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G, copyright ] };
- key <AC06> { [ h, H, ordfeminine ] };
- key <AC09> { [ l, L, at ] };
- key <AC10> { [ odiaeresis, Odiaeresis, dead_acute ] };
- key <AC11> { [ adiaeresis, Adiaeresis, dead_circumflex ] };
-
- key <LSGT> { [ less, greater, bar ] };
- key <AB01> { [ y, Y, guillemotleft,less ] };
- key <AB06> { [ n, N, asciitilde ] };
- key <AB07> { [ m, M, mu ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon, periodcentered, division ] };
- key <AB10> { [ minus, underscore ] };
- key <BKSL> { [ numbersign, apostrophe, dead_grave ] };
-
- include "kpdl(comma)"
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "Sundeadkeys" {
- // modify the default German layout to use Sun dead keys
- include "macintosh_vndr/de(basic)"
- name[Group1]= "Germany - Mac, Sun dead keys";
-
- key <TLDE> { [ SunFA_Circum, degree, notsign ] };
- key <AE12> { [ SunFA_Acute, SunFA_Grave, SunFA_Cedilla ] };
- key <AD11> { [ udiaeresis, Udiaeresis, SunFA_Diaeresis ] };
- key <AD12> { [ plus, asterisk, SunFA_Tilde, dead_macron ] };
- key <AC10> { [ odiaeresis, Odiaeresis, SunFA_Acute ] };
- key <AC11> { [ adiaeresis, Adiaeresis, SunFA_Circum ] };
-
- key <BKSL> { [ numbersign, acute, SunFA_Grave ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "sundeadkeys" {
- include "macintosh_vndr/de(Sundeadkeys)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- // modify the default German layout to not have any dead keys
- include "macintosh_vndr/de(basic)"
- name[Group1]= "Germany - Mac, eliminate dead keys";
-
- key <TLDE> { [ asciicircum, degree, notsign ] };
- key <AE12> { [ acute, grave, cedilla ] };
- key <AD11> { [ udiaeresis, Udiaeresis, diaeresis ] };
- key <AD12> { [ plus, asterisk, asciitilde, macron ] };
- key <AC10> { [ odiaeresis, Odiaeresis, acute ] };
- key <AC11> { [ adiaeresis, Adiaeresis, asciicircum ] };
-
- key <BKSL> { [ numbersign, apostrophe, grave ] };
-};
+// olh@suse.de very close to MacOS map
+
+default partial alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple US/ASCII
+ // keyboard and a very simple German keybaord
+
+ include "latin"
+ name[Group1]= "Germany - Mac";
+
+ // Alphanumeric section
+ key <TLDE> { [ dead_circumflex, degree, notsign ] };
+ key <AE01> { [ 1, exclam, exclamdown, at ] };
+ key <AE02> { [ 2, quotedbl, twosuperior ] };
+ key <AE03> { [ 3, section, threesuperior,sterling ] };
+ key <AE04> { [ 4, dollar, onequarter, currency ] };
+ key <AE05> { [ 5, percent, bracketleft ] };
+ key <AE06> { [ 6, ampersand, bracketright ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, braceleft, asciitilde ] };
+ key <AE09> { [ 9, parenright, braceright ] };
+ key <AE10> { [ 0, equal, braceright, degree ] };
+ key <AE11> { [ ssharp, question, backslash, questiondown ] };
+ key <AE12> { [ dead_acute, dead_grave, dead_cedilla ] };
+
+ key <AD01> { [ q, Q, guillemotleft,guillemotright ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD04> { [ r, R, registered ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ z, Z ] };
+ key <AD07> { [ u, U, diaeresis, Aacute ] };
+ key <AD08> { [ i, I, slash, Ucircumflex ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD11> { [ udiaeresis, Udiaeresis, periodcentered, degree ] };
+ key <AD12> { [ plus, asterisk, asciitilde ] };
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G, copyright ] };
+ key <AC06> { [ h, H, ordfeminine ] };
+ key <AC09> { [ l, L, at ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, dead_acute ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, dead_circumflex ] };
+
+ key <LSGT> { [ less, greater, bar ] };
+ key <AB01> { [ y, Y, guillemotleft,less ] };
+ key <AB06> { [ n, N, asciitilde ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon, periodcentered, division ] };
+ key <AB10> { [ minus, underscore ] };
+ key <BKSL> { [ numbersign, apostrophe, dead_grave ] };
+
+ include "kpdl(comma)"
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "Sundeadkeys" {
+ // modify the default German layout to use Sun dead keys
+ include "macintosh_vndr/de(basic)"
+ name[Group1]= "Germany - Mac, Sun dead keys";
+
+ key <TLDE> { [ SunFA_Circum, degree, notsign ] };
+ key <AE12> { [ SunFA_Acute, SunFA_Grave, SunFA_Cedilla ] };
+ key <AD11> { [ udiaeresis, Udiaeresis, SunFA_Diaeresis ] };
+ key <AD12> { [ plus, asterisk, SunFA_Tilde, dead_macron ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, SunFA_Acute ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, SunFA_Circum ] };
+
+ key <BKSL> { [ numbersign, acute, SunFA_Grave ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "sundeadkeys" {
+ include "macintosh_vndr/de(Sundeadkeys)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ // modify the default German layout to not have any dead keys
+ include "macintosh_vndr/de(basic)"
+ name[Group1]= "Germany - Mac, eliminate dead keys";
+
+ key <TLDE> { [ asciicircum, degree, notsign ] };
+ key <AE12> { [ acute, grave, cedilla ] };
+ key <AD11> { [ udiaeresis, Udiaeresis, diaeresis ] };
+ key <AD12> { [ plus, asterisk, asciitilde, macron ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, acute ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, asciicircum ] };
+
+ key <BKSL> { [ numbersign, apostrophe, grave ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi
index 177913737..7a865d2bc 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi
@@ -1,17 +1,17 @@
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple mac_US
- // keyboard and a very simple Swedish(Finland) keybaord
-
- include "macintosh_vndr/se(basic)" // for consistent naming
- name[Group1]= "Finland - Mac";
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "macintosh_vndr/se(basic)" // for consistent naming
- name[Group1]= "Finland - Mac, eliminate dead keys";
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple mac_US
+ // keyboard and a very simple Swedish(Finland) keybaord
+
+ include "macintosh_vndr/se(basic)" // for consistent naming
+ name[Group1]= "Finland - Mac";
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "macintosh_vndr/se(basic)" // for consistent naming
+ name[Group1]= "Finland - Mac, eliminate dead keys";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr
index 9a8f8de23..c76551d30 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr
@@ -1,110 +1,110 @@
-// Marc.Shapiro@inria.fr 19-sep-1998
-// modifications : Etienne Herlent <eherlent@linux-france.org> june 2000
-// adapted to the new input layer :
-// Martin Costabel <costabel@wanadoo.fr> 3-jan-2001
-//////////////////////////////////////////////////////////////////
-// Petites Modification le juillet 2005 par Bin Zhang <bb.zhang@free.fr> :
-// 1) La ligne 83 : remplacer les deux "VoidSymbol" par oe et OE
-// 2) La ligne 89 : remplacer "VoidSymbol" par "EuroSign"
-// ( 1) et 2) fonctionnent sous UTF-8, mais pas sous iso-8859-1. )
-// 3) Remplacer la ligne 148 par la ligne 149 pour que la touche Alt_L
-// (la touche Apple-Pomme) fonctionne correctement sous Xorg, une idée
-// motivée par http://www.linux-france.org/macintosh/clavier_gentoo.html
-//////////////////////////////////////////////////////////////////
-// This map is an almost-complete mapping of the standard French
-// MacIntosh keyboard under Xwindows. I tried to remain as faithful
-// as possible to the Mac meaning of each key. I did this entirely by
-// hand and by intuition, relying on the Clavier (Keyboard?) Desktop
-// Accessory for the Mac meaning of keys, and on reading keysymdef.h
-// to intuit the corresponding X names. Lacking proper documentation,
-// I may have made some mistakes.
-
-// Entries marked CHECK are particularly uncertain
-
-// Entries marked MISSING mark Mac characters for which I was unable
-// to find a corresponding keysym. (Some for sure don't: e.g. the
-// Apple mark and the oe/OE character; others I may have simply not
-// found.)
-
-default
-xkb_symbols "extended" {
-
- name[Group1]= "France - Mac";
-
- key <ESC> { [ Escape ] };
-
- // Alphanumeric section
- key <TLDE> { [ at, numbersign, periodcentered, Ydiaeresis ] };
- key <ENTR> { [ KP_Enter ] };
- key <AE01> { [ ampersand, 1, VoidSymbol, dead_acute ] }; // MISSING: Apple
- key <AE02> { [ eacute, 2, ediaeresis, Eacute ] };
- key <AE03> { [ quotedbl, 3, leftdoublequotemark, rightdoublequotemark ] };
- key <AE04> { [ apostrophe, 4, leftsinglequotemark, rightsinglequotemark ] };
- key <AE05> { [ parenleft, 5, braceleft, bracketleft ] };
- key <AE06> { [ section, 6, paragraph, aring ] };
- key <AE07> { [ egrave, 7, guillemotleft, guillemotright] };
- key <AE08> { [ exclam, 8, exclamdown, Ucircumflex ] };
- key <AE09> { [ ccedilla, 9, Ccedilla, Aacute ] };
- key <AE10> { [ agrave, 0, oslash, Oslash ] };
- key <AE11> { [ parenright, degree, braceright, bracketright ] };
- key <AE12> { [ minus, underscore, emdash, endash ] };
- key <BKSP> { [ BackSpace, VoidSymbol, Delete, VoidSymbol ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ a, A, ae, AE ] };
- key <AD02> { [ z, Z, Acircumflex, Aring ] };
- key <AD03> { [ e, E, ecircumflex, Ecircumflex ] };
- key <AD04> { [ r, R, registered, currency ] };
- key <AD05> { [ t, T, dagger, trademark ] };
- key <AD06> { [ y, Y, Uacute, Ydiaeresis ] };
- key <AD07> { [ u, U, masculine, ordfeminine ] };
- key <AD08> { [ i, I, icircumflex, idiaeresis ] };
- key <AD09> { [ o, O, oe, OE ] };
- key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
- key <AD11> { [dead_circumflex,dead_diaeresis,ocircumflex, Ocircumflex ] };
- key <AD12> { [ dollar, asterisk, EuroSign, yen ] };
- key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ q, Q, doubledagger, Greek_OMEGA ] };
- key <AC02> { [ s, S, Ograve, Greek_SIGMA ] };
- key <AC03> { [ d, D, Greek_delta, Greek_DELTA ] };
- key <AC04> { [ f, F, VoidSymbol, periodcentered ] };
- key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] }; // MISSING: ligature fi,fl
- key <AC06> { [ h, H, Igrave, Icircumflex ] };
- key <AC07> { [ j, J, Idiaeresis, Iacute ] };
- key <AC08> { [ k, K, Egrave, Ediaeresis ] };
- key <AC09> { [ l, L, notsign, bar ] };
- key <AC10> { [ m, M, mu, Oacute ] };
- key <AC11> { [ ugrave, percent, Ugrave, 0x1002030 ] };
- key <BKSL> { [ dead_grave, sterling, at, numbersign ] };
- key <RTRN> { [ Return ] };
-
- key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] };
- key <AB01> { [ w, W, guilsinglleft, guilsinglright ] }; // MISSING: half-guillemot (single angle bracket)
- key <AB02> { [ x, X, VoidSymbol, VoidSymbol ] }; // CHECK: similarequal; MISSING: extra-slanted slash
- key <AB03> { [ c, C, copyright, cent ] };
- key <AB04> { [ v, V, diamond, radical ] }; // CHECK diamond
- key <AB05> { [ b, B, ssharp, integral ] };
- key <AB06> { [ n, N, dead_tilde, asciitilde ] };
- key <AB07> { [ comma, question, infinity, questiondown ] };
- key <AB08> { [ semicolon, period, ellipsis, periodcentered ] };
- key <AB09> { [ colon, slash, division, backslash ] };
- key <AB10> { [ equal, plus, notequal, plusminus ] };
-
- key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
- // End alphanumeric section
-
- include "level3(ralt_switch)"
-};
-
-
-
-xkb_symbols "nodeadkeys" {
-include "macintosh_vndr/fr(extended)"
- name[Group1]= "France - Mac, eliminate dead keys";
-
- key <AE01> { [ ampersand, 1, VoidSymbol, acute ] }; // MISSING: Apple
- key <AD11> { [asciicircum,diaeresis,ocircumflex, Ocircumflex ] };
- key <BKSL> { [ grave, sterling, at, numbersign ] };
-
- key <AB06> { [ n, N, asciitilde, dead_tilde ] };
-};
+// Marc.Shapiro@inria.fr 19-sep-1998
+// modifications : Etienne Herlent <eherlent@linux-france.org> june 2000
+// adapted to the new input layer :
+// Martin Costabel <costabel@wanadoo.fr> 3-jan-2001
+//////////////////////////////////////////////////////////////////
+// Petites Modification le juillet 2005 par Bin Zhang <bb.zhang@free.fr> :
+// 1) La ligne 83 : remplacer les deux "VoidSymbol" par oe et OE
+// 2) La ligne 89 : remplacer "VoidSymbol" par "EuroSign"
+// ( 1) et 2) fonctionnent sous UTF-8, mais pas sous iso-8859-1. )
+// 3) Remplacer la ligne 148 par la ligne 149 pour que la touche Alt_L
+// (la touche Apple-Pomme) fonctionne correctement sous Xorg, une idée
+// motivée par http://www.linux-france.org/macintosh/clavier_gentoo.html
+//////////////////////////////////////////////////////////////////
+// This map is an almost-complete mapping of the standard French
+// MacIntosh keyboard under Xwindows. I tried to remain as faithful
+// as possible to the Mac meaning of each key. I did this entirely by
+// hand and by intuition, relying on the Clavier (Keyboard?) Desktop
+// Accessory for the Mac meaning of keys, and on reading keysymdef.h
+// to intuit the corresponding X names. Lacking proper documentation,
+// I may have made some mistakes.
+
+// Entries marked CHECK are particularly uncertain
+
+// Entries marked MISSING mark Mac characters for which I was unable
+// to find a corresponding keysym. (Some for sure don't: e.g. the
+// Apple mark and the oe/OE character; others I may have simply not
+// found.)
+
+default
+xkb_symbols "extended" {
+
+ name[Group1]= "France - Mac";
+
+ key <ESC> { [ Escape ] };
+
+ // Alphanumeric section
+ key <TLDE> { [ at, numbersign, periodcentered, Ydiaeresis ] };
+ key <ENTR> { [ KP_Enter ] };
+ key <AE01> { [ ampersand, 1, VoidSymbol, dead_acute ] }; // MISSING: Apple
+ key <AE02> { [ eacute, 2, ediaeresis, Eacute ] };
+ key <AE03> { [ quotedbl, 3, leftdoublequotemark, rightdoublequotemark ] };
+ key <AE04> { [ apostrophe, 4, leftsinglequotemark, rightsinglequotemark ] };
+ key <AE05> { [ parenleft, 5, braceleft, bracketleft ] };
+ key <AE06> { [ section, 6, paragraph, aring ] };
+ key <AE07> { [ egrave, 7, guillemotleft, guillemotright] };
+ key <AE08> { [ exclam, 8, exclamdown, Ucircumflex ] };
+ key <AE09> { [ ccedilla, 9, Ccedilla, Aacute ] };
+ key <AE10> { [ agrave, 0, oslash, Oslash ] };
+ key <AE11> { [ parenright, degree, braceright, bracketright ] };
+ key <AE12> { [ minus, underscore, emdash, endash ] };
+ key <BKSP> { [ BackSpace, VoidSymbol, Delete, VoidSymbol ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ a, A, ae, AE ] };
+ key <AD02> { [ z, Z, Acircumflex, Aring ] };
+ key <AD03> { [ e, E, ecircumflex, Ecircumflex ] };
+ key <AD04> { [ r, R, registered, currency ] };
+ key <AD05> { [ t, T, dagger, trademark ] };
+ key <AD06> { [ y, Y, Uacute, Ydiaeresis ] };
+ key <AD07> { [ u, U, masculine, ordfeminine ] };
+ key <AD08> { [ i, I, icircumflex, idiaeresis ] };
+ key <AD09> { [ o, O, oe, OE ] };
+ key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
+ key <AD11> { [dead_circumflex,dead_diaeresis,ocircumflex, Ocircumflex ] };
+ key <AD12> { [ dollar, asterisk, EuroSign, yen ] };
+ key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ q, Q, doubledagger, Greek_OMEGA ] };
+ key <AC02> { [ s, S, Ograve, Greek_SIGMA ] };
+ key <AC03> { [ d, D, Greek_delta, Greek_DELTA ] };
+ key <AC04> { [ f, F, VoidSymbol, periodcentered ] };
+ key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] }; // MISSING: ligature fi,fl
+ key <AC06> { [ h, H, Igrave, Icircumflex ] };
+ key <AC07> { [ j, J, Idiaeresis, Iacute ] };
+ key <AC08> { [ k, K, Egrave, Ediaeresis ] };
+ key <AC09> { [ l, L, notsign, bar ] };
+ key <AC10> { [ m, M, mu, Oacute ] };
+ key <AC11> { [ ugrave, percent, Ugrave, 0x1002030 ] };
+ key <BKSL> { [ dead_grave, sterling, at, numbersign ] };
+ key <RTRN> { [ Return ] };
+
+ key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] };
+ key <AB01> { [ w, W, guilsinglleft, guilsinglright ] }; // MISSING: half-guillemot (single angle bracket)
+ key <AB02> { [ x, X, VoidSymbol, VoidSymbol ] }; // CHECK: similarequal; MISSING: extra-slanted slash
+ key <AB03> { [ c, C, copyright, cent ] };
+ key <AB04> { [ v, V, diamond, radical ] }; // CHECK diamond
+ key <AB05> { [ b, B, ssharp, integral ] };
+ key <AB06> { [ n, N, dead_tilde, asciitilde ] };
+ key <AB07> { [ comma, question, infinity, questiondown ] };
+ key <AB08> { [ semicolon, period, ellipsis, periodcentered ] };
+ key <AB09> { [ colon, slash, division, backslash ] };
+ key <AB10> { [ equal, plus, notequal, plusminus ] };
+
+ key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
+ // End alphanumeric section
+
+ include "level3(ralt_switch)"
+};
+
+
+
+xkb_symbols "nodeadkeys" {
+include "macintosh_vndr/fr(extended)"
+ name[Group1]= "France - Mac, eliminate dead keys";
+
+ key <AE01> { [ ampersand, 1, VoidSymbol, acute ] }; // MISSING: Apple
+ key <AD11> { [asciicircum,diaeresis,ocircumflex, Ocircumflex ] };
+ key <BKSL> { [ grave, sterling, at, numbersign ] };
+
+ key <AB06> { [ n, N, asciitilde, dead_tilde ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb
index 5343673c1..a6bc48e8c 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb
@@ -1,17 +1,17 @@
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple U.K. keyboard layout
-
- include "latin"
-
- name[Group1]= "United Kingdom - Mac";
-
- key <AE02> { [ 2, at, EuroSign ] };
- key <AE03> { [ 3, sterling, numbersign ] };
-
- // End alphanumeric section
-
- include "level3(ralt_switch)"
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple U.K. keyboard layout
+
+ include "latin"
+
+ name[Group1]= "United Kingdom - Mac";
+
+ key <AE02> { [ 2, at, EuroSign ] };
+ key <AE03> { [ 3, sterling, numbersign ] };
+
+ // End alphanumeric section
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/is b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/is
index d16d92f61..b9870ffe8 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/is
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/is
@@ -1,127 +1,127 @@
-//
-// This file describes the differences between a Macintosh US Extended
-// keymap and an Icelandic keyboard layout in the style of Mac OS and Mac OS X
-//
-// Copyright (C) 2004, 2006 Ævar Arnfjörð Bjarmason <avarab@gmail.com>
-//
-// 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.
-//
-// 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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-// OTHER DEALINGS IN THE SOFTWARE.
-//
-// Except as contained in this notice, the name of a copyright holder shall
-// not be used in advertising or otherwise to promote the sale, use or
-// other dealings in this Software without prior written authorization of
-// the copyright holder.
-//
-// = HISTORY
-// * 2004-09-28:
-// Initial cleanroom writing of the keymap, I just booted Mac OS X, opened
-// TextEdit.app and wrote down what the value produced by each key was when I
-// pressed it, a for a, A for shift + a, å for lalt + a etc and made the
-// keymap from that information
-//
-// * 2006-01-14:
-// Revised the comments in the file
-//
-// = NOTES
-// * 20 characters in this keymap have no named character defined in
-// include/keysymdef.h and as a result their Unicode code points in
-// hexadecimal are listed here, these can be generated with the following
-// perl command:
-// $ perl -CA -e 'printf "U%x\n", ord shift' Æ
-// and converted back like:
-// $ perl -CO -le '$_=shift;s/[^a-f0-9]//ig;print chr hex' Uc6
-// * The Apple logo appears twice on this keymap like the Mac OS and Mac OS X
-// keymaps. In the MacRoman encoding it has the code point 0xF0 (240) but it
-// has no assigned code point in Unicode, the code point Apple uses for it is
-// U+F8FF (63743) which is in the BMP's Private Use Area (U+E000–U+F8FF)
-// * This keymap has only been tested on a PowerBook6,5 (iBook G4) but it
-// should work on other Apple laptop models which use the same keyboard
-// layout. It will probably work on standard sized keyboards with little or
-// no modification but it might not support them fully, please report if
-// you're able to get it running with such a keyboard
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
- name[Group1]= "Iceland - Mac";
-
- //-- Row 5 (E) --//
- key <TLDE> { [ sterling, section, UF8FF, apostrophe ] };
- key <AE01> { [ 1, exclam, exclamdown, VoidSymbol ] };
- key <AE02> { [ 2, quotedbl, at, VoidSymbol ] };
- key <AE03> { [ 3, numbersign, U2122, sterling ] };
- key <AE04> { [ 4, dollar, U00A2, EuroSign ] };
- key <AE05> { [ 5, percent, U2030, infinity ] };
- key <AE06> { [ 6, ampersand, asciicircum, U2044 ] };
- key <AE07> { [ 7, slash, backslash, U00F7 ] };
- key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
- key <AE09> { [ 9, parenright, bracketright, braceright ] };
- key <AE10> { [ 0, equal, U2260, U2248 ] };
- key <AE11> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] };
- key <AE12> { [ minus, underscore, endash, emdash ] };
-
-
- //-- Row 4 (D) --//
- key <AD01> { [ q, Q, paragraph, VoidSymbol ] };
- key <AD02> { [ w, W, U2211, VoidSymbol ] };
- key <AD03> { [ e, E, dead_grave, VoidSymbol ] };
- key <AD04> { [ r, R, registered, VoidSymbol ] };
- key <AD05> { [ t, T, degree, VoidSymbol ] };
- key <AD06> { [ y, Y, yen, VoidSymbol ] };
- key <AD07> { [ u, U, dead_diaeresis, VoidSymbol ] };
- key <AD08> { [ i, I, U0131, U00AA ] };
- key <AD09> { [ o, O, dead_circumflex,U00BA ] };
- key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
- key <AD11> { [ eth, Eth, U201e, U201c ] };
- key <AD12> { [ apostrophe, question, questiondown, U00B7 ] };
-
-
- //-- Row 3 (C) --//
- key <AC01> { [ a, A, aring, Aring ] };
- key <AC02> { [ s, S, ssharp, abovedot ] };
- key <AC03> { [ d, D, U2202, U2DA ] };
- key <AC04> { [ f, F, U192, macron ] };
- key <AC05> { [ g, G, copyright, breve ] };
- key <AC06> { [ h, H, bar, VoidSymbol ] };
- key <AC07> { [ j, J, U2206, U2dd ] };
- key <AC08> { [ k, K, U00AC, VoidSymbol ] };
- key <AC09> { [ l, L, U2026, caron ] };
- key <AC10> { [ ae, AE, oe, OE ] };
- key <AC11> { [ dead_acute, dead_diaeresis, U201A, U2018 ] };
- key <BKSL> { [ plus, asterisk, U2022, plusminus ] };
-
-
- //-- Row 2 (B) --//
- key <LSGT> { [ less, greater, section, UF8FF ] };
- key <AB01> { [ z, Z, U3A9, VoidSymbol ] };
- key <AB02> { [ x, X, asciitilde, VoidSymbol ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
- key <AB04> { [ v, V, U221A, U25CA ] };
- key <AB05> { [ b, B, U222B, VoidSymbol ] };
- key <AB06> { [ n, N, dead_tilde, VoidSymbol ] };
- key <AB07> { [ m, M, U00B5, VoidSymbol ] };
- key <AB08> { [ comma, semicolon, lessthanequal, guillemotleft ] };
- key <AB09> { [ period, colon, greaterthanequal,guillemotright ] };
- key <AB10> { [ thorn, Thorn, U2019, U201d ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "macintosh_vndr/is(basic)" // for consistent naming
- name[Group1]= "Iceland - Mac, eliminate dead keys";
-};
+//
+// This file describes the differences between a Macintosh US Extended
+// keymap and an Icelandic keyboard layout in the style of Mac OS and Mac OS X
+//
+// Copyright (C) 2004, 2006 Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+//
+// 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.
+//
+// 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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+// OTHER DEALINGS IN THE SOFTWARE.
+//
+// Except as contained in this notice, the name of a copyright holder shall
+// not be used in advertising or otherwise to promote the sale, use or
+// other dealings in this Software without prior written authorization of
+// the copyright holder.
+//
+// = HISTORY
+// * 2004-09-28:
+// Initial cleanroom writing of the keymap, I just booted Mac OS X, opened
+// TextEdit.app and wrote down what the value produced by each key was when I
+// pressed it, a for a, A for shift + a, å for lalt + a etc and made the
+// keymap from that information
+//
+// * 2006-01-14:
+// Revised the comments in the file
+//
+// = NOTES
+// * 20 characters in this keymap have no named character defined in
+// include/keysymdef.h and as a result their Unicode code points in
+// hexadecimal are listed here, these can be generated with the following
+// perl command:
+// $ perl -CA -e 'printf "U%x\n", ord shift' Æ
+// and converted back like:
+// $ perl -CO -le '$_=shift;s/[^a-f0-9]//ig;print chr hex' Uc6
+// * The Apple logo appears twice on this keymap like the Mac OS and Mac OS X
+// keymaps. In the MacRoman encoding it has the code point 0xF0 (240) but it
+// has no assigned code point in Unicode, the code point Apple uses for it is
+// U+F8FF (63743) which is in the BMP's Private Use Area (U+E000–U+F8FF)
+// * This keymap has only been tested on a PowerBook6,5 (iBook G4) but it
+// should work on other Apple laptop models which use the same keyboard
+// layout. It will probably work on standard sized keyboards with little or
+// no modification but it might not support them fully, please report if
+// you're able to get it running with such a keyboard
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ name[Group1]= "Iceland - Mac";
+
+ //-- Row 5 (E) --//
+ key <TLDE> { [ sterling, section, UF8FF, apostrophe ] };
+ key <AE01> { [ 1, exclam, exclamdown, VoidSymbol ] };
+ key <AE02> { [ 2, quotedbl, at, VoidSymbol ] };
+ key <AE03> { [ 3, numbersign, U2122, sterling ] };
+ key <AE04> { [ 4, dollar, U00A2, EuroSign ] };
+ key <AE05> { [ 5, percent, U2030, infinity ] };
+ key <AE06> { [ 6, ampersand, asciicircum, U2044 ] };
+ key <AE07> { [ 7, slash, backslash, U00F7 ] };
+ key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
+ key <AE09> { [ 9, parenright, bracketright, braceright ] };
+ key <AE10> { [ 0, equal, U2260, U2248 ] };
+ key <AE11> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] };
+ key <AE12> { [ minus, underscore, endash, emdash ] };
+
+
+ //-- Row 4 (D) --//
+ key <AD01> { [ q, Q, paragraph, VoidSymbol ] };
+ key <AD02> { [ w, W, U2211, VoidSymbol ] };
+ key <AD03> { [ e, E, dead_grave, VoidSymbol ] };
+ key <AD04> { [ r, R, registered, VoidSymbol ] };
+ key <AD05> { [ t, T, degree, VoidSymbol ] };
+ key <AD06> { [ y, Y, yen, VoidSymbol ] };
+ key <AD07> { [ u, U, dead_diaeresis, VoidSymbol ] };
+ key <AD08> { [ i, I, U0131, U00AA ] };
+ key <AD09> { [ o, O, dead_circumflex,U00BA ] };
+ key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
+ key <AD11> { [ eth, Eth, U201e, U201c ] };
+ key <AD12> { [ apostrophe, question, questiondown, U00B7 ] };
+
+
+ //-- Row 3 (C) --//
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC02> { [ s, S, ssharp, abovedot ] };
+ key <AC03> { [ d, D, U2202, U2DA ] };
+ key <AC04> { [ f, F, U192, macron ] };
+ key <AC05> { [ g, G, copyright, breve ] };
+ key <AC06> { [ h, H, bar, VoidSymbol ] };
+ key <AC07> { [ j, J, U2206, U2dd ] };
+ key <AC08> { [ k, K, U00AC, VoidSymbol ] };
+ key <AC09> { [ l, L, U2026, caron ] };
+ key <AC10> { [ ae, AE, oe, OE ] };
+ key <AC11> { [ dead_acute, dead_diaeresis, U201A, U2018 ] };
+ key <BKSL> { [ plus, asterisk, U2022, plusminus ] };
+
+
+ //-- Row 2 (B) --//
+ key <LSGT> { [ less, greater, section, UF8FF ] };
+ key <AB01> { [ z, Z, U3A9, VoidSymbol ] };
+ key <AB02> { [ x, X, asciitilde, VoidSymbol ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB04> { [ v, V, U221A, U25CA ] };
+ key <AB05> { [ b, B, U222B, VoidSymbol ] };
+ key <AB06> { [ n, N, dead_tilde, VoidSymbol ] };
+ key <AB07> { [ m, M, U00B5, VoidSymbol ] };
+ key <AB08> { [ comma, semicolon, lessthanequal, guillemotleft ] };
+ key <AB09> { [ period, colon, greaterthanequal,guillemotright ] };
+ key <AB10> { [ thorn, Thorn, U2019, U201d ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "macintosh_vndr/is(basic)" // for consistent naming
+ name[Group1]= "Iceland - Mac, eliminate dead keys";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it
index 889653f8e..2438231cd 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it
@@ -1,62 +1,62 @@
-xkb_symbols "extended" {
-
- name[Group1]= "Italy - Mac";
-
- // Alphanumeric section
- key <LSGT> { [ less, greater ] };
- key <TLDE> { [ at, numbersign, periodcentered ] };
- key <AE01> { [ ampersand, 1, guillemotleft,guillemotright ] };
- key <AE02> { [ quotedbl, 2 ] };
- key <AE03> { [ apostrophe, 3 ] };
- key <AE04> { [ parenleft, 4, braceleft, bracketleft ] };
- key <AE05> { [ ccedilla, 5, Ccedilla, Iacute ] };
- key <AE06> { [ egrave, 6, paragraph, periodcentered] };
- key <AE07> { [ parenright, 7, braceright, bracketright ] };
- key <AE08> { [ sterling, 8, infinity ] };
- key <AE09> { [ agrave, 9, acute, Ocircumflex ] };
- key <AE10> { [ eacute, 0, grave, Oacute ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus, notequal, plusminus ] };
-
- key <AD01> { [ q, Q ] };
- key <AD02> { [ z, Z ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD04> { [ r, R, registered ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y, Uacute, ydiaeresis ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I, icircumflex, idiaeresis ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [ igrave, asciicircum ] };
- key <AD12> { [ dollar, asterisk ] };
- key <BKSL> { [ section, degree, at, numbersign ] };
-
- key <AC01> { [ a, A, aring, Aring ] };
- key <AC02> { [ s, S, ssharp ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H, Igrave, Icircumflex ] };
- key <AC07> { [ j, J, Idiaeresis, Iacute ] };
- key <AC08> { [ k, K, Egrave, Ediaeresis ] };
- key <AC09> { [ l, L, ssharp, bar ] };
- key <AC10> { [ m, M, mu, Oacute ] };
- key <AC11> { [ ugrave, percent, ae, AE ] };
-
- key <AB01> { [ w, W ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C, copyright, copyright ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N, dead_tilde ] };
- key <AB07> { [ comma, question, questiondown ] };
- key <AB08> { [ semicolon, period ] };
- key <AB09> { [ colon, slash, bar, backslash ] };
- key <AB10> { [ ograve, exclam, exclamdown ] };
-
- // End alphanumeric section
-
- include "kpdl(dot)"
- include "level3(ralt_switch)"
-};
+xkb_symbols "extended" {
+
+ name[Group1]= "Italy - Mac";
+
+ // Alphanumeric section
+ key <LSGT> { [ less, greater ] };
+ key <TLDE> { [ at, numbersign, periodcentered ] };
+ key <AE01> { [ ampersand, 1, guillemotleft,guillemotright ] };
+ key <AE02> { [ quotedbl, 2 ] };
+ key <AE03> { [ apostrophe, 3 ] };
+ key <AE04> { [ parenleft, 4, braceleft, bracketleft ] };
+ key <AE05> { [ ccedilla, 5, Ccedilla, Iacute ] };
+ key <AE06> { [ egrave, 6, paragraph, periodcentered] };
+ key <AE07> { [ parenright, 7, braceright, bracketright ] };
+ key <AE08> { [ sterling, 8, infinity ] };
+ key <AE09> { [ agrave, 9, acute, Ocircumflex ] };
+ key <AE10> { [ eacute, 0, grave, Oacute ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus, notequal, plusminus ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ z, Z ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD04> { [ r, R, registered ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y, Uacute, ydiaeresis ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I, icircumflex, idiaeresis ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ igrave, asciicircum ] };
+ key <AD12> { [ dollar, asterisk ] };
+ key <BKSL> { [ section, degree, at, numbersign ] };
+
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC02> { [ s, S, ssharp ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H, Igrave, Icircumflex ] };
+ key <AC07> { [ j, J, Idiaeresis, Iacute ] };
+ key <AC08> { [ k, K, Egrave, Ediaeresis ] };
+ key <AC09> { [ l, L, ssharp, bar ] };
+ key <AC10> { [ m, M, mu, Oacute ] };
+ key <AC11> { [ ugrave, percent, ae, AE ] };
+
+ key <AB01> { [ w, W ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C, copyright, copyright ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N, dead_tilde ] };
+ key <AB07> { [ comma, question, questiondown ] };
+ key <AB08> { [ semicolon, period ] };
+ key <AB09> { [ colon, slash, bar, backslash ] };
+ key <AB10> { [ ograve, exclam, exclamdown ] };
+
+ // End alphanumeric section
+
+ include "kpdl(dot)"
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam
index a588ab27c..dcb9db624 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam
@@ -1,37 +1,37 @@
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple mac_US
- // keyboard and a very simple Spanish keybaord
-
- include "latin"
- name[Group1]= "Latin American - Mac";
-
- key <TLDE> { [ bracketleft, bracketright, braceleft, braceright ] };
- key <LSGT> { [ less, greater, bracketleft, braceleft ] };
- key <AE01> { [ 1, exclamdown ] };
- key <AE02> { [ 2, exclam, at, oneeighth ] };
- key <AE03> { [ 3, numbersign, guillemotleft, guillemotright ] };
- key <AE04> { [ 4, dollar, yen, Icircumflex ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, slash, backslash, Idiaeresis ] };
- key <AE07> { [ 7, ampersand, bar, Iacute ] };
- key <AE08> { [ 8, asterisk, degree ] };
- key <AE09> { [ 9, parenleft, sterling, Ocircumflex ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus, plusminus ] };
- key <AD11> { [ dead_grave, degree ] };
- key <AD12> { [ dead_acute, dead_diaeresis, bar ] };
-
- key <AB08> { [ comma, questiondown ] };
- key <AB09> { [ period, question ] };
- key <AB10> { [ ccedilla, Ccedilla ] };
- key <AC10> { [ ntilde, Ntilde, asciitilde, dead_doubleacute ] };
- key <AC11> { [ semicolon, colon ] };
- key <BKSL> { [ apostrophe, quotedbl ] };
-
- // End alphanumeric section
-
- include "level3(ralt_switch)"
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple mac_US
+ // keyboard and a very simple Spanish keybaord
+
+ include "latin"
+ name[Group1]= "Latin American - Mac";
+
+ key <TLDE> { [ bracketleft, bracketright, braceleft, braceright ] };
+ key <LSGT> { [ less, greater, bracketleft, braceleft ] };
+ key <AE01> { [ 1, exclamdown ] };
+ key <AE02> { [ 2, exclam, at, oneeighth ] };
+ key <AE03> { [ 3, numbersign, guillemotleft, guillemotright ] };
+ key <AE04> { [ 4, dollar, yen, Icircumflex ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, slash, backslash, Idiaeresis ] };
+ key <AE07> { [ 7, ampersand, bar, Iacute ] };
+ key <AE08> { [ 8, asterisk, degree ] };
+ key <AE09> { [ 9, parenleft, sterling, Ocircumflex ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus, plusminus ] };
+ key <AD11> { [ dead_grave, degree ] };
+ key <AD12> { [ dead_acute, dead_diaeresis, bar ] };
+
+ key <AB08> { [ comma, questiondown ] };
+ key <AB09> { [ period, question ] };
+ key <AB10> { [ ccedilla, Ccedilla ] };
+ key <AC10> { [ ntilde, Ntilde, asciitilde, dead_doubleacute ] };
+ key <AC11> { [ semicolon, colon ] };
+ key <BKSL> { [ apostrophe, quotedbl ] };
+
+ // End alphanumeric section
+
+ include "level3(ralt_switch)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl
index 05034701e..5eb66c444 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl
@@ -1,15 +1,15 @@
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple mac_US
- // keyboard and a very simple netherland keybaord
-
- include "latin"
-
- name[Group1]= "Netherlands - Mac";
-
- include "level3(ralt_switch)"
-
-// do just nothing
-
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple mac_US
+ // keyboard and a very simple netherland keybaord
+
+ include "latin"
+
+ name[Group1]= "Netherlands - Mac";
+
+ include "level3(ralt_switch)"
+
+// do just nothing
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no
index 442aee9af..fb0cb74a2 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no
@@ -1,50 +1,50 @@
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple Norwegian keybaord
-
- include "latin"
-
- name[Group1]= "Norway - Mac";
-
- key <TLDE> { [ bar, section ] };
- key <AE02> { [ 2, quotedbl, at, oneeighth ] };
- key <AE04> { [ 4, currency, dollar, dollar ] };
- key <AE03> { [ 3, numbersign, sterling, sterling ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash, bar, backslash ] };
- key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
- key <AE09> { [ 9, parenright, bracketright, braceright ] };
- key <AE10> { [ 0, equal ] };
-
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <AC10> { [ oslash, Ooblique, odiaeresis, Odiaeresis ] };
- key <AE11> { [ plus, question ] };
- key <AC11> { [ ae, AE ] };
- key <AD11> { [ aring, Aring ] };
- key <AE12> { [ dead_grave, dead_acute, acute, dead_ogonek ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] };
- key <BKSL> { [ at, asterisk ] };
- key <LSGT> { [ less, greater ] };
-
- // End alphanumeric section
-
- include "eurosign(e)"
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
-
- // Modifies the basic Norwegian layout to eliminate dead keys
- include "macintosh_vndr/no(basic)"
- name[Group1]= "Norway - Mac, eliminate dead keys";
-
- key <AE12> { [ grave, acute, acute, ogonek ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
-
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple Norwegian keybaord
+
+ include "latin"
+
+ name[Group1]= "Norway - Mac";
+
+ key <TLDE> { [ bar, section ] };
+ key <AE02> { [ 2, quotedbl, at, oneeighth ] };
+ key <AE04> { [ 4, currency, dollar, dollar ] };
+ key <AE03> { [ 3, numbersign, sterling, sterling ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
+ key <AE09> { [ 9, parenright, bracketright, braceright ] };
+ key <AE10> { [ 0, equal ] };
+
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <AC10> { [ oslash, Ooblique, odiaeresis, Odiaeresis ] };
+ key <AE11> { [ plus, question ] };
+ key <AC11> { [ ae, AE ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AE12> { [ dead_grave, dead_acute, acute, dead_ogonek ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] };
+ key <BKSL> { [ at, asterisk ] };
+ key <LSGT> { [ less, greater ] };
+
+ // End alphanumeric section
+
+ include "eurosign(e)"
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+
+ // Modifies the basic Norwegian layout to eliminate dead keys
+ include "macintosh_vndr/no(basic)"
+ name[Group1]= "Norway - Mac, eliminate dead keys";
+
+ key <AE12> { [ grave, acute, acute, ogonek ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] };
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt
index 8c3b7173c..01ac86d85 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt
@@ -1,61 +1,61 @@
-// mac version from Ricardo Cabral <bfe00991@mail.telepac.pt>
-
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple Portuguese keybaord
-
- include "latin"
-
- name[Group1]= "Portugal - Mac";
-
- key <LSGT> { [ less, greater, bar, brokenbar ] };
- key <AE02> { [ 2, quotedbl, at, oneeighth ] };
- key <AE04> { [ 4, dollar, section, dollar ] };
- key <AE03> { [ 3, numbersign, sterling, sterling ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash ] };
- key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
- key <AE09> { [ 9, parenright, bracketright, braceright ] };
- key <AE10> { [ 0, equal ] };
- key <AE11> { [ apostrophe, question ] };
- key <AE12> { [ plus, asterisk, dead_diaeresis ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <AC10> { [ ccedilla, Ccedilla ] };
- key <AC11> { [ dead_tilde, dead_circumflex ] };
- key <AC12> { [ backslash, bar ] };
- key <AD11> { [ masculine, ordfeminine ] };
- key <AD12> { [ dead_acute, dead_grave ] };
- // End alphanumeric section
-
- include "eurosign(e)"
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "Sundeadkeys" {
- include "macintosh_vndr/pt(basic)" // for consistent naming
- name[Group1]= "Portugal - Mac, Sun dead keys";
-
- key <AE12> { [ plus, asterisk, SunFA_Diaeresis, SunFA_Diaeresis ] };
- key <AC11> { [ SunFA_Tilde, SunFA_Circum ] };
- key <AD12> { [ SunFA_Acute, SunFA_Grave ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "sundeadkeys" {
- include "macintosh_vndr/pt(Sundeadkeys)" // for consistent naming
-};
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "macintosh_vndr/pt(basic)" // for consistent naming
- name[Group1]= "Portugal - Mac, eliminate dead keys";
-
- key <AE12> { [ plus, asterisk, quotedbl, quotedbl ] };
- key <AC11> { [ asciitilde, asciicircum ] };
- key <AD12> { [ acute, grave ] };
-};
+// mac version from Ricardo Cabral <bfe00991@mail.telepac.pt>
+
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple Portuguese keybaord
+
+ include "latin"
+
+ name[Group1]= "Portugal - Mac";
+
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+ key <AE02> { [ 2, quotedbl, at, oneeighth ] };
+ key <AE04> { [ 4, dollar, section, dollar ] };
+ key <AE03> { [ 3, numbersign, sterling, sterling ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash ] };
+ key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
+ key <AE09> { [ 9, parenright, bracketright, braceright ] };
+ key <AE10> { [ 0, equal ] };
+ key <AE11> { [ apostrophe, question ] };
+ key <AE12> { [ plus, asterisk, dead_diaeresis ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <AC10> { [ ccedilla, Ccedilla ] };
+ key <AC11> { [ dead_tilde, dead_circumflex ] };
+ key <AC12> { [ backslash, bar ] };
+ key <AD11> { [ masculine, ordfeminine ] };
+ key <AD12> { [ dead_acute, dead_grave ] };
+ // End alphanumeric section
+
+ include "eurosign(e)"
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "Sundeadkeys" {
+ include "macintosh_vndr/pt(basic)" // for consistent naming
+ name[Group1]= "Portugal - Mac, Sun dead keys";
+
+ key <AE12> { [ plus, asterisk, SunFA_Diaeresis, SunFA_Diaeresis ] };
+ key <AC11> { [ SunFA_Tilde, SunFA_Circum ] };
+ key <AD12> { [ SunFA_Acute, SunFA_Grave ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "sundeadkeys" {
+ include "macintosh_vndr/pt(Sundeadkeys)" // for consistent naming
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "macintosh_vndr/pt(basic)" // for consistent naming
+ name[Group1]= "Portugal - Mac, eliminate dead keys";
+
+ key <AE12> { [ plus, asterisk, quotedbl, quotedbl ] };
+ key <AC11> { [ asciitilde, asciicircum ] };
+ key <AD12> { [ acute, grave ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se
index 56d77bd0f..d2d05f248 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se
@@ -1,44 +1,44 @@
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Describes the differences between a very simple en_US
- // keyboard and a very simple Swedish(Sweden) keybaord
-
- include "latin"
-
- name[Group1]= "Sweden - Mac";
-
- key <TLDE> { [ section, degree ] };
-
- key <AE01> { [ 1, exclam, copyright, exclamdown ] };
- key <AE02> { [ 2, quotedbl, at, oneeighth ] };
- key <AE03> { [ 3, numbersign, sterling, yen ] };
- key <AE04> { [ 4, currency, dollar, cent ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash, bar, backslash ] };
- key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
- key <AE09> { [ 9, parenright, bracketright, braceright ] };
- key <AB08> { [ comma, semicolon ] };
- key <AE10> { [ 0, equal ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <AC10> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] };
- key <AE11> { [ plus, question ] };
- key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
- key <AD11> { [ aring, Aring ] };
- key <AE12> { [ acute, grave ] };
- key <AD12> { [ diaeresis, asciicircum, asciitilde ] };
- key <BKSL> { [ apostrophe, asterisk, at ] };
- key <LSGT> { [ less, greater, bar, brokenbar ] };
-
- include "kpdl(comma)"
- include "eurosign(e)"
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "nodeadkeys" {
- include "macintosh_vndr/se(basic)" // for consistent naming
- name[Group1]= "Sweden - Mac, eliminate dead keys";
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Describes the differences between a very simple en_US
+ // keyboard and a very simple Swedish(Sweden) keybaord
+
+ include "latin"
+
+ name[Group1]= "Sweden - Mac";
+
+ key <TLDE> { [ section, degree ] };
+
+ key <AE01> { [ 1, exclam, copyright, exclamdown ] };
+ key <AE02> { [ 2, quotedbl, at, oneeighth ] };
+ key <AE03> { [ 3, numbersign, sterling, yen ] };
+ key <AE04> { [ 4, currency, dollar, cent ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, bracketleft, braceleft ] };
+ key <AE09> { [ 9, parenright, bracketright, braceright ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AE10> { [ 0, equal ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] };
+ key <AE11> { [ plus, question ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AE12> { [ acute, grave ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde ] };
+ key <BKSL> { [ apostrophe, asterisk, at ] };
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+
+ include "kpdl(comma)"
+ include "eurosign(e)"
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+ include "macintosh_vndr/se(basic)" // for consistent naming
+ name[Group1]= "Sweden - Mac, eliminate dead keys";
+};
diff --git a/xorg-server/xkeyboard-config/symbols/mao b/xorg-server/xkeyboard-config/symbols/mao
index b62994b2c..ce1b2ea3c 100644
--- a/xorg-server/xkeyboard-config/symbols/mao
+++ b/xorg-server/xkeyboard-config/symbols/mao
@@ -1,21 +1,21 @@
-partial default alphanumeric_keys
-xkb_symbols "basic" {
-
- // Adds the macrons needed for the Maori language to
- // a simple us keyboard layout.
-
- include "latin"
-
- name[Group1]="Maori";
-
- key <AC01> { [ a, A, amacron, Amacron ] };
- key <AD03> { [ e, E, emacron, Emacron ] };
- key <AD08> { [ i, I, imacron, Imacron ] };
-
- key <AD09> { [ o, O, omacron, Omacron ] };
- key <AD07> { [ u, U, umacron, Umacron ] };
-
- key <RALT> { type[Group1]="TWO_LEVEL",
- [ ISO_Level3_Shift, Multi_key ] };
- modifier_map Mod5 { <RALT> };
-};
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+
+ // Adds the macrons needed for the Maori language to
+ // a simple us keyboard layout.
+
+ include "latin"
+
+ name[Group1]="Maori";
+
+ key <AC01> { [ a, A, amacron, Amacron ] };
+ key <AD03> { [ e, E, emacron, Emacron ] };
+ key <AD08> { [ i, I, imacron, Imacron ] };
+
+ key <AD09> { [ o, O, omacron, Omacron ] };
+ key <AD07> { [ u, U, umacron, Umacron ] };
+
+ key <RALT> { type[Group1]="TWO_LEVEL",
+ [ ISO_Level3_Shift, Multi_key ] };
+ modifier_map Mod5 { <RALT> };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/nec_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/nec_vndr/Makefile.am
index ff070065a..ac1de6ec9 100644
--- a/xorg-server/xkeyboard-config/symbols/nec_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/nec_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/nec_vndr
-
-dist_symbols_DATA = \
-jp
+symbolsdir = $(xkb_base)/symbols/nec_vndr
+
+dist_symbols_DATA = \
+jp
diff --git a/xorg-server/xkeyboard-config/symbols/nec_vndr/jp b/xorg-server/xkeyboard-config/symbols/nec_vndr/jp
index 10477a43c..29b279c9f 100644
--- a/xorg-server/xkeyboard-config/symbols/nec_vndr/jp
+++ b/xorg-server/xkeyboard-config/symbols/nec_vndr/jp
@@ -1,163 +1,163 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-// symbols for a NEC PC98 keyboard
-default xkb_symbols "pc98" {
-
- key <ESC> { [ Escape ] };
-
- // Alphanumeric section
- key <AE01> { [ 1, exclam ], [ kana_NU ] };
- key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
- key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
- key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
- key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
- key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
- key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
- key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
- key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
- key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
- key <AE11> { [ minus, equal ], [ kana_HO ] };
- key <AE12> { [ asciicircum, quoteleft ], [ kana_HE ] };
- key <BKSL> { [ backslash, bar ], [ prolongedsound ] };
- key <BKSP> { [ BackSpace ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ q, Q ], [ kana_TA ] };
- key <AD02> { [ w, W ], [ kana_TE ] };
- key <AD03> { [ e, E ], [ kana_I, kana_i ] };
- key <AD04> { [ r, R ], [ kana_SU ] };
- key <AD05> { [ t, T ], [ kana_KA ] };
- key <AD06> { [ y, Y ], [ kana_N ] };
- key <AD07> { [ u, U ], [ kana_NA ] };
- key <AD08> { [ i, I ], [ kana_NI ] };
- key <AD09> { [ o, O ], [ kana_RA ] };
- key <AD10> { [ p, P ], [ kana_SE ] };
- key <AD11> { [ at, asciitilde ], [ voicedsound ] };
- key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
- key <RTRN> { [ Return ] };
-
- key <LCTL> { [ Control_L ] };
- key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ a, A ], [ kana_CHI ] };
- key <AC02> { [ s, S ], [ kana_TO ] };
- key <AC03> { [ d, D ], [ kana_SHI ] };
- key <AC04> { [ f, F ], [ kana_HA ] };
- key <AC05> { [ g, G ], [ kana_KI ] };
- key <AC06> { [ h, H ], [ kana_KU ] };
- key <AC07> { [ j, J ], [ kana_MA ] };
- key <AC08> { [ k, K ], [ kana_NO ] };
- key <AC09> { [ l, L ], [ kana_RI ] };
- key <AC10> { [ semicolon, plus ], [ kana_RE ] };
- key <AC11> { [ colon, asterisk ], [ kana_KE ] };
- key <AC12> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
-
- key <LFSH> { [ Shift_L ] };
- key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
- key <AB02> { [ x, X ], [ kana_SA ] };
- key <AB03> { [ c, C ], [ kana_SO ] };
- key <AB04> { [ v, V ], [ kana_HI ] };
- key <AB05> { [ b, B ], [ kana_KO ] };
- key <AB06> { [ n, N ], [ kana_MI ] };
- key <AB07> { [ m, M ], [ kana_MO ] };
- key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
- key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
- key <AB10> { [ slash, question ], [ kana_ME, kana_middledot ] };
- key <AB11> { [ NoSymbol, underscore ], [ kana_RO ] };
-// key <RTSH> { [ Shift_R ] };
-
- key <ALGR> { [ Mode_switch ] };
- key <LALT> { [ Alt_L ] };
- key <NFER> { [ Muhenkan ] };
- key <SPCE> { [ space ] };
- key <XFER> { [ Henkan, Kanji ] };
-
- // End alphanumeric section
-
- // Begin "Function" section
- key <BRK> { [ Break ] };
- key <PRSC> { [ Print ] };
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
- key <FK13> { [ F13 ] };
- key <FK14> { [ F14 ] };
- key <FK15> { [ F15 ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <INS> { [ Insert ] };
- key <DELE> { [ Delete ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
- key <UP> { [ Up ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
- key <DOWN> { [ Down ] };
- // End "Editing" section
-
- // Begin "Keypad" section
- key <HOME> { [ Clear, Home ] };
- key <HELP> { [ Help ] };
- key <KPSU> { [ KP_Subtract ] };
- key <KPDV> { [ KP_Divide ] };
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPMU> { [ KP_Multiply ] };
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPEQ> { [ KP_Equal ] };
-
- key <KP0> { [ KP_0 ] };
- key <KPSP> { [ KP_Separator ] };
- key <KPDC> { [ KP_Decimal ] };
-// key <KPEN> { [ KP_Enter ] };
- // End "Keypad" section
-
- // begin modifier mappings
- modifier_map Shift { Shift_L };
- modifier_map Lock { Caps_Lock };
- modifier_map Control{ Control_L };
- modifier_map Mod1 { Alt_L };
- modifier_map Mod2 { Mode_switch };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+// symbols for a NEC PC98 keyboard
+default xkb_symbols "pc98" {
+
+ key <ESC> { [ Escape ] };
+
+ // Alphanumeric section
+ key <AE01> { [ 1, exclam ], [ kana_NU ] };
+ key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
+ key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
+ key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
+ key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
+ key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
+ key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
+ key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
+ key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
+ key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
+ key <AE11> { [ minus, equal ], [ kana_HO ] };
+ key <AE12> { [ asciicircum, quoteleft ], [ kana_HE ] };
+ key <BKSL> { [ backslash, bar ], [ prolongedsound ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ q, Q ], [ kana_TA ] };
+ key <AD02> { [ w, W ], [ kana_TE ] };
+ key <AD03> { [ e, E ], [ kana_I, kana_i ] };
+ key <AD04> { [ r, R ], [ kana_SU ] };
+ key <AD05> { [ t, T ], [ kana_KA ] };
+ key <AD06> { [ y, Y ], [ kana_N ] };
+ key <AD07> { [ u, U ], [ kana_NA ] };
+ key <AD08> { [ i, I ], [ kana_NI ] };
+ key <AD09> { [ o, O ], [ kana_RA ] };
+ key <AD10> { [ p, P ], [ kana_SE ] };
+ key <AD11> { [ at, asciitilde ], [ voicedsound ] };
+ key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
+ key <RTRN> { [ Return ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ a, A ], [ kana_CHI ] };
+ key <AC02> { [ s, S ], [ kana_TO ] };
+ key <AC03> { [ d, D ], [ kana_SHI ] };
+ key <AC04> { [ f, F ], [ kana_HA ] };
+ key <AC05> { [ g, G ], [ kana_KI ] };
+ key <AC06> { [ h, H ], [ kana_KU ] };
+ key <AC07> { [ j, J ], [ kana_MA ] };
+ key <AC08> { [ k, K ], [ kana_NO ] };
+ key <AC09> { [ l, L ], [ kana_RI ] };
+ key <AC10> { [ semicolon, plus ], [ kana_RE ] };
+ key <AC11> { [ colon, asterisk ], [ kana_KE ] };
+ key <AC12> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
+ key <AB02> { [ x, X ], [ kana_SA ] };
+ key <AB03> { [ c, C ], [ kana_SO ] };
+ key <AB04> { [ v, V ], [ kana_HI ] };
+ key <AB05> { [ b, B ], [ kana_KO ] };
+ key <AB06> { [ n, N ], [ kana_MI ] };
+ key <AB07> { [ m, M ], [ kana_MO ] };
+ key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
+ key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
+ key <AB10> { [ slash, question ], [ kana_ME, kana_middledot ] };
+ key <AB11> { [ NoSymbol, underscore ], [ kana_RO ] };
+// key <RTSH> { [ Shift_R ] };
+
+ key <ALGR> { [ Mode_switch ] };
+ key <LALT> { [ Alt_L ] };
+ key <NFER> { [ Muhenkan ] };
+ key <SPCE> { [ space ] };
+ key <XFER> { [ Henkan, Kanji ] };
+
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <BRK> { [ Break ] };
+ key <PRSC> { [ Print ] };
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+ key <FK13> { [ F13 ] };
+ key <FK14> { [ F14 ] };
+ key <FK15> { [ F15 ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <INS> { [ Insert ] };
+ key <DELE> { [ Delete ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+ key <UP> { [ Up ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <DOWN> { [ Down ] };
+ // End "Editing" section
+
+ // Begin "Keypad" section
+ key <HOME> { [ Clear, Home ] };
+ key <HELP> { [ Help ] };
+ key <KPSU> { [ KP_Subtract ] };
+ key <KPDV> { [ KP_Divide ] };
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPMU> { [ KP_Multiply ] };
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPEQ> { [ KP_Equal ] };
+
+ key <KP0> { [ KP_0 ] };
+ key <KPSP> { [ KP_Separator ] };
+ key <KPDC> { [ KP_Decimal ] };
+// key <KPEN> { [ KP_Enter ] };
+ // End "Keypad" section
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_L };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control{ Control_L };
+ modifier_map Mod1 { Alt_L };
+ modifier_map Mod2 { Mode_switch };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/nokia_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/nokia_vndr/Makefile.am
index 71200ec4d..63dc5db6e 100644
--- a/xorg-server/xkeyboard-config/symbols/nokia_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/nokia_vndr/Makefile.am
@@ -1,6 +1,6 @@
-symbolsdir = $(xkb_base)/symbols/nokia_vndr
-
-dist_symbols_DATA = \
-rx-44 \
-rx-51 \
-su-8w
+symbolsdir = $(xkb_base)/symbols/nokia_vndr
+
+dist_symbols_DATA = \
+rx-44 \
+rx-51 \
+su-8w
diff --git a/xorg-server/xkeyboard-config/symbols/nokia_vndr/rx-44 b/xorg-server/xkeyboard-config/symbols/nokia_vndr/rx-44
index 515b69eef..7d91d6db3 100644
--- a/xorg-server/xkeyboard-config/symbols/nokia_vndr/rx-44
+++ b/xorg-server/xkeyboard-config/symbols/nokia_vndr/rx-44
@@ -1,303 +1,303 @@
-partial alphanumeric_keys
-xkb_symbols "us" {
- name[Group1] = "U.S. English";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AC01> { [ a, A, exclam, exclam ] };
- key <AC02> { [ s, S, quotedbl, quotedbl ] };
- key <AC03> { [ d, D, at, at ] };
- key <AC04> { [ f, F, numbersign, numbersign ] };
- key <AC05> { [ g, G, backslash, backslash ] };
- key <AC06> { [ h, H, slash, slash ] };
- key <AC07> { [ j, J, parenleft, parenleft ] };
- key <AC08> { [ k, K, parenright, parenright ] };
- key <AC09> { [ l, L, asterisk, asterisk ] };
- key <AC11> { [ apostrophe, question, question, question ] };
-
- key <AB01> { [ z, Z, yen, yen ] };
- key <AB02> { [ x, X, asciicircum, asciicircum ] };
- key <AB03> { [ c, C, asciitilde, asciitilde ] };
- key <AB04> { [ v, V, percent, percent ] };
- key <AB05> { [ b, B, ampersand, ampersand ] };
- key <AB06> { [ n, N, dollar, dollar ] };
- key <AB07> { [ m, M, EuroSign, EuroSign ] };
- key <AC10> { [ semicolon, colon, sterling, sterling ] };
- key <AE11> { [ minus, underscore, underscore, underscore ] };
- key <AE12> { [ plus, equal, equal, equal ] };
-
- key <AB08> { [ comma, less, comma, less ] };
- key <AB09> { [ period, greater, period, greater ] };
-};
-
-
-
-partial alphanumeric_keys
-xkb_symbols "fisenoda" {
- name[Group1] = "Finnish/Swedish/Norwegian/Danish";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AC01> { [ a, A, exclam, exclam ] };
- key <AC02> { [ s, S, quotedbl, quotedbl ] };
- key <AC03> { [ d, D, at, at ] };
- key <AC04> { [ f, F, numbersign, numbersign ] };
- key <AC05> { [ g, G, asterisk, asterisk ] };
- key <AC06> { [ h, H, backslash, backslash ] };
- key <AC07> { [ j, J, slash, slash ] };
- key <AC08> { [ k, K, parenleft, parenleft ] };
- key <AC09> { [ l, L, parenright, parenright ] };
- key <AC11> { [ aring, Aring, question, question ] };
-
- key <AB01> { [ z, Z, EuroSign, EuroSign ] };
- key <AB02> { [ x, X, asciitilde, asciitilde ] };
- key <AB03> { [ c, C, percent, percent ] };
- key <AB04> { [ v, V, ampersand, ampersand ] };
- key <AB05> { [ b, B, plus, plus ] };
- key <AB06> { [ n, N, less, less ] };
- key <AB07> { [ m, M, greater, greater ] };
- key <AC10> { type="EIGHT_LEVEL", [ oslash, Oslash, equal, equal, odiaeresis, Odiaeresis, equal, equal ] };
- key <AE11> { type="EIGHT_LEVEL", [ ae, AE, apostrophe, apostrophe, adiaeresis, Adiaeresis, apostrophe, apostrophe ] };
- key <AE12> { [ minus, underscore, underscore, underscore ] };
-
- key <AB08> { [ comma, semicolon, comma, semicolon ] };
- key <AB09> { [ period, colon, period, colon ] };
-};
-
-
-
-partial alphanumeric_keys
-xkb_symbols "ptes" {
- name[Group1] = "Portuguese/Spanish";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AC01> { [ a, A, exclam, exclam ] };
- key <AC02> { [ s, S, quotedbl, quotedbl ] };
- key <AC03> { [ d, D, at, at ] };
- key <AC04> { [ f, F, numbersign, numbersign ] };
- key <AC05> { [ g, G, asterisk, asterisk ] };
- key <AC06> { [ h, H, backslash, backslash ] };
- key <AC07> { [ j, J, slash, slash ] };
- key <AC08> { [ k, K, parenleft, parenleft ] };
- key <AC09> { [ l, L, parenright, parenright ] };
- key <AC11> { [ dead_acute, dead_grave, dead_diaeresis, dead_diaeresis ] };
-
- key <AB01> { [ z, Z, EuroSign, EuroSign ] };
- key <AB02> { [ x, X, percent, percent ] };
- key <AB03> { [ c, C, ampersand, ampersand ] };
- key <AB04> { [ v, V, exclamdown, exclamdown ] };
- key <AB05> { [ b, B, apostrophe, apostrophe ] };
- key <AB06> { [ n, N, plus, plus ] };
- key <AB07> { [ m, M, equal, equal ] };
- key <AC10> { [ ccedilla, Ccedilla, questiondown, questiondown ] };
- key <AE11> { [ ntilde, Ntilde, question, question ] };
- key <AE12> { [ dead_tilde, dead_circumflex, dead_circumflex, dead_circumflex ] };
-
- key <AB08> { [ comma, semicolon, minus, minus ] };
- key <AB09> { [ period, colon, underscore, underscore ] };
-};
-
-
-
-partial alphanumeric_keys
-xkb_symbols "fr" {
- name[Group1] = "French";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AD01> { [ a, A, 1, 1 ] };
- key <AD02> { [ z, Z, 2, 2 ] };
-
- key <AC01> { [ q, Q, at, at ] };
- key <AC02> { [ s, S, percent, percent ] };
- key <AC03> { [ d, D, ecircumflex, Ecircumflex ] };
- key <AC04> { [ f, F, eacute, Eacute ] };
- key <AC05> { [ g, G, egrave, Egrave ] };
- key <AC06> { [ h, H, oe, OE ] };
- key <AC07> { [ j, J, parenleft, parenleft ] };
- key <AC08> { [ k, K, parenright, parenright ] };
- key <AC09> { [ l, L, agrave, Agrave ] };
- key <AC11> { [ m, M, ugrave, Ugrave ] };
-
- key <AB01> { [ w, w, EuroSign, EuroSign ] };
- key <AB02> { [ x, X, numbersign, numbersign ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
- key <AB04> { [ v, V, plus, plus ] };
- key <AB05> { [ b, B, equal, equal ] };
- key <AB06> { [ n, N, quotedbl, quotedbl ] };
- key <AB07> { [ comma, question, backslash, backslash ] };
- key <AC10> { [ semicolon, period, minus, minus ] };
- key <AE11> { [ colon, slash, underscore, underscore ] };
- key <AE12> { [ apostrophe, apostrophe, mu, mu ] };
-
- key <AB08> { [ less, greater, less, greater ] };
- key <AB09> { [ exclam, section, asterisk, asterisk ] };
-};
-
-
-
-partial alphanumeric_keys
-xkb_symbols "de" {
- name[Group1] = "German";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AD06> { [ z, Z, 6, 6 ] };
-
- key <AC01> { [ a, A, exclam, exclam ] };
- key <AC02> { [ s, S, quotedbl, quotedbl ] };
- key <AC03> { [ d, D, at, at ] };
- key <AC04> { [ f, F, numbersign, numbersign ] };
- key <AC05> { [ g, G, percent, percent ] };
- key <AC06> { [ h, H, backslash, backslash ] };
- key <AC07> { [ j, J, slash, slash ] };
- key <AC08> { [ k, K, parenleft, parenleft ] };
- key <AC09> { [ l, L, parenright, parenright ] };
- key <AC11> { [ udiaeresis, Udiaeresis, question, question ] };
-
- key <AB01> { [ y, Y, EuroSign, EuroSign ] };
- key <AB02> { [ x, X, asciitilde, asciitilde ] };
- key <AB03> { [ c, C, asterisk, asterisk ] };
- key <AB04> { [ v, V, ampersand, ampersand ] };
- key <AB05> { [ b, B, plus, plus ] };
- key <AB06> { [ n, N, less, less ] };
- key <AB07> { [ m, M, greater, greater ] };
- key <AC10> { [ odiaeresis, Odiaeresis, equal, equal ] };
- key <AE11> { [ adiaeresis, Adiaeresis, apostrophe, apostrophe ] };
- key <AE12> { [ minus, underscore, ssharp, ssharp ] };
-
- key <AB08> { [ comma, semicolon, comma, semicolon ] };
- key <AB09> { [ period, colon, period, colon ] };
-};
-
-
-// Levels 5-8 are Russian, levels 1-4 US English, for shortcut reasons.
-partial alphanumeric_keys
-xkb_symbols "ru" {
- name[Group1] = "Russian";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AD01> { type="EIGHT_LEVEL", [ q, Q, 1, 1, Cyrillic_shorti, Cyrillic_SHORTI, 1, 1 ] };
- key <AD02> { type="EIGHT_LEVEL", [ w, W, 2, 2, Cyrillic_tse, Cyrillic_TSE, 2, 2 ] };
- key <AD03> { type="EIGHT_LEVEL", [ e, E, 3, 3, Cyrillic_u, Cyrillic_U, 3, 3 ] };
- key <AD04> { type="EIGHT_LEVEL", [ r, R, 4, 4, Cyrillic_ka, Cyrillic_KA, 4, 4 ] };
- key <AD05> { type="EIGHT_LEVEL", [ t, T, 5, 5, Cyrillic_ie, Cyrillic_IE, 5, 5 ] };
- key <AD06> { type="EIGHT_LEVEL", [ y, Y, 6, 6, Cyrillic_en, Cyrillic_EN, 6, 6 ] };
- key <AD07> { type="EIGHT_LEVEL", [ u, U, 7, 7, Cyrillic_ghe, Cyrillic_GHE, 7, 7 ] };
- key <AD08> { type="EIGHT_LEVEL", [ i, I, 8, 8, Cyrillic_sha, Cyrillic_SHA, 8, 8 ] };
- key <AD09> { type="EIGHT_LEVEL", [ o, O, 9, 9, Cyrillic_shcha, Cyrillic_SHCHA, 9, 9 ] };
- key <AD10> { type="EIGHT_LEVEL", [ p, P, 0, 0, Cyrillic_ze, Cyrillic_ZE, 0, 0 ] };
-
- key <AC01> { type="EIGHT_LEVEL", [ a, A, exclam, exclam, Cyrillic_ef, Cyrillic_EF, exclam, exclam ] };
- key <AC02> { type="EIGHT_LEVEL", [ s, S, quotedbl, quotedbl, Cyrillic_yeru, Cyrillic_YERU, quotedbl, quotedbl ] };
- key <AC03> { type="EIGHT_LEVEL", [ d, D, at, at, Cyrillic_ve, Cyrillic_VE, at, at ] };
- key <AC04> { type="EIGHT_LEVEL", [ f, F, numbersign, numbersign, Cyrillic_a, Cyrillic_A, numbersign, numbersign ] };
- key <AC05> { type="EIGHT_LEVEL", [ g, G, backslash, backslash, Cyrillic_pe, Cyrillic_PE, backslash, backslash ] };
- key <AC06> { type="EIGHT_LEVEL", [ h, H, slash, slash, Cyrillic_er, Cyrillic_ER, slash, slash ] };
- key <AC07> { type="EIGHT_LEVEL", [ j, J, parenleft, parenleft, Cyrillic_o, Cyrillic_O, parenleft, parenleft ] };
- key <AC08> { type="EIGHT_LEVEL", [ k, K, parenright, parenright, Cyrillic_el, Cyrillic_EL, parenright, parenright ] };
- key <AC09> { type="EIGHT_LEVEL", [ l, L, colon, colon, Cyrillic_de, Cyrillic_DE, colon, colon ] };
- key <AC11> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, semicolon, semicolon, Cyrillic_zhe, Cyrillic_ZHE, semicolon, semicolon ] };
-
- key <AB01> { type="EIGHT_LEVEL", [ z, Z, underscore, underscore, Cyrillic_ya, Cyrillic_YA, minus, minus ] };
- key <AB02> { type="EIGHT_LEVEL", [ x, X, percent, percent, Cyrillic_che, Cyrillic_CHE, percent, percent ] };
- key <AB03> { type="EIGHT_LEVEL", [ c, C, 0x1002116, 0x1002116, Cyrillic_es, Cyrillic_ES, 0x1002116, 0x1002116 ] };
- key <AB04> { type="EIGHT_LEVEL", [ v, V, equal, equal, Cyrillic_em, Cyrillic_EM, equal, equal ] };
- key <AB05> { type="EIGHT_LEVEL", [ b, B, ampersand, ampersand, Cyrillic_i, Cyrillic_I, ampersand, ampersand ] };
- key <AB06> { type="EIGHT_LEVEL", [ n, N, asterisk, asterisk, Cyrillic_te, Cyrillic_TE, asterisk, asterisk ] };
- key <AB07> { type="EIGHT_LEVEL", [ m, M, apostrophe, apostrophe, Cyrillic_softsign, Cyrillic_SOFTSIGN, apostrophe, apostrophe ] };
- key <AC10> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, minus, minus, Cyrillic_be, Cyrillic_BE, minus, minus ] };
- key <AE11> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, question, question, Cyrillic_yu, Cyrillic_YU, question, question ] };
- key <AE12> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, Cyrillic_hardsign, Cyrillic_HARDSIGN, Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
-
- key <AB08> { type="EIGHT_LEVEL", [ period, comma, period, comma, period, comma, period, comma ] };
- key <AB09> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, Cyrillic_io, Cyrillic_IO, Cyrillic_e, Cyrillic_E, Cyrillic_io, Cyrillic_IO ] };
-};
-
-
-
-partial alphanumeric_keys
-xkb_symbols "it" {
- name[Group1] = "Italian";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AC01> { [ a, A, exclam, exclam ] };
- key <AC02> { [ s, S, quotedbl, quotedbl ] };
- key <AC03> { [ d, D, at, at ] };
- key <AC04> { [ f, F, numbersign, numbersign ] };
- key <AC05> { [ g, G, asterisk, asterisk ] };
- key <AC06> { [ h, H, backslash, backslash ] };
- key <AC07> { [ j, J, slash, slash ] };
- key <AC08> { [ k, K, parenleft, parenleft ] };
- key <AC09> { [ l, L, parenright, parenright ] };
- key <AC11> { [ apostrophe, question, igrave, Igrave ] };
-
- key <AB01> { [ z, Z, EuroSign, EuroSign ] };
- key <AB02> { [ x, X, asciitilde, asciitilde ] };
- key <AB03> { [ c, C, ampersand, ampersand ] };
- key <AB04> { [ v, V, equal, equal ] };
- key <AB05> { [ b, B, less, less ] };
- key <AB06> { [ n, N, greater, greater ] };
- key <AB07> { [ m, M, plus, plus ] };
- key <AC10> { [ eacute, Eacute, ograve, Ograve ] };
- key <AE11> { [ egrave, Egrave, agrave, Agrave ] };
- key <AE12> { [ minus, underscore, ugrave, Ugrave ] };
-
- key <AB08> { [ comma, semicolon, comma, semicolon ] };
- key <AB09> { [ period, colon, period, colon ] };
-};
-
-partial default alphanumeric_keys
-xkb_symbols "base" {
- key <AD01> { [ q, Q, 1, 1 ] };
- key <AD02> { [ w, W, 2, 2 ] };
- key <AD03> { [ e, E, 3, 3 ] };
- key <AD04> { [ r, R, 4, 4 ] };
- key <AD05> { [ t, T, 5, 5 ] };
- key <AD06> { [ y, Y, 6, 6 ] };
- key <AD07> { [ u, U, 7, 7 ] };
- key <AD08> { [ i, I, 8, 8 ] };
- key <AD09> { [ o, O, 9, 9 ] };
- key <AD10> { [ p, P, 0, 0 ] };
- key <BKSP> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
-
- // broken UI spec.
- key <RTRN> { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter ] };
-
- key <COMP> { [ Multi_key, Multi_key, Multi_key, Multi_key ] };
- key <LFSH> { [ Shift_L, Shift_L, Shift_L, Shift_L ] };
- key <FN> { [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift ] };
- key <SPCE> { [ space, space, space, space ] };
- key <RCTL> { [ Control_R, Control_R, Control_R, Control_R ] };
- key <TAB> { [ Tab, Tab, Tab, Tab ] };
-
- modifier_map Shift { Shift_L };
- modifier_map Mod5 { ISO_Level3_Shift };
- modifier_map Control { Control_R };
-
- key <KPEN> { [ Return ] };
- key <UP> { [ Up ] };
- key <DOWN> { [ Down ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
-
- key <ESC> { [ Escape ] };
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
-
- // generated from the headset, must always be in the map.
- key <I29> { [ XF86Phone ] };
-};
+partial alphanumeric_keys
+xkb_symbols "us" {
+ name[Group1] = "U.S. English";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AC01> { [ a, A, exclam, exclam ] };
+ key <AC02> { [ s, S, quotedbl, quotedbl ] };
+ key <AC03> { [ d, D, at, at ] };
+ key <AC04> { [ f, F, numbersign, numbersign ] };
+ key <AC05> { [ g, G, backslash, backslash ] };
+ key <AC06> { [ h, H, slash, slash ] };
+ key <AC07> { [ j, J, parenleft, parenleft ] };
+ key <AC08> { [ k, K, parenright, parenright ] };
+ key <AC09> { [ l, L, asterisk, asterisk ] };
+ key <AC11> { [ apostrophe, question, question, question ] };
+
+ key <AB01> { [ z, Z, yen, yen ] };
+ key <AB02> { [ x, X, asciicircum, asciicircum ] };
+ key <AB03> { [ c, C, asciitilde, asciitilde ] };
+ key <AB04> { [ v, V, percent, percent ] };
+ key <AB05> { [ b, B, ampersand, ampersand ] };
+ key <AB06> { [ n, N, dollar, dollar ] };
+ key <AB07> { [ m, M, EuroSign, EuroSign ] };
+ key <AC10> { [ semicolon, colon, sterling, sterling ] };
+ key <AE11> { [ minus, underscore, underscore, underscore ] };
+ key <AE12> { [ plus, equal, equal, equal ] };
+
+ key <AB08> { [ comma, less, comma, less ] };
+ key <AB09> { [ period, greater, period, greater ] };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "fisenoda" {
+ name[Group1] = "Finnish/Swedish/Norwegian/Danish";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AC01> { [ a, A, exclam, exclam ] };
+ key <AC02> { [ s, S, quotedbl, quotedbl ] };
+ key <AC03> { [ d, D, at, at ] };
+ key <AC04> { [ f, F, numbersign, numbersign ] };
+ key <AC05> { [ g, G, asterisk, asterisk ] };
+ key <AC06> { [ h, H, backslash, backslash ] };
+ key <AC07> { [ j, J, slash, slash ] };
+ key <AC08> { [ k, K, parenleft, parenleft ] };
+ key <AC09> { [ l, L, parenright, parenright ] };
+ key <AC11> { [ aring, Aring, question, question ] };
+
+ key <AB01> { [ z, Z, EuroSign, EuroSign ] };
+ key <AB02> { [ x, X, asciitilde, asciitilde ] };
+ key <AB03> { [ c, C, percent, percent ] };
+ key <AB04> { [ v, V, ampersand, ampersand ] };
+ key <AB05> { [ b, B, plus, plus ] };
+ key <AB06> { [ n, N, less, less ] };
+ key <AB07> { [ m, M, greater, greater ] };
+ key <AC10> { type="EIGHT_LEVEL", [ oslash, Oslash, equal, equal, odiaeresis, Odiaeresis, equal, equal ] };
+ key <AE11> { type="EIGHT_LEVEL", [ ae, AE, apostrophe, apostrophe, adiaeresis, Adiaeresis, apostrophe, apostrophe ] };
+ key <AE12> { [ minus, underscore, underscore, underscore ] };
+
+ key <AB08> { [ comma, semicolon, comma, semicolon ] };
+ key <AB09> { [ period, colon, period, colon ] };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "ptes" {
+ name[Group1] = "Portuguese/Spanish";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AC01> { [ a, A, exclam, exclam ] };
+ key <AC02> { [ s, S, quotedbl, quotedbl ] };
+ key <AC03> { [ d, D, at, at ] };
+ key <AC04> { [ f, F, numbersign, numbersign ] };
+ key <AC05> { [ g, G, asterisk, asterisk ] };
+ key <AC06> { [ h, H, backslash, backslash ] };
+ key <AC07> { [ j, J, slash, slash ] };
+ key <AC08> { [ k, K, parenleft, parenleft ] };
+ key <AC09> { [ l, L, parenright, parenright ] };
+ key <AC11> { [ dead_acute, dead_grave, dead_diaeresis, dead_diaeresis ] };
+
+ key <AB01> { [ z, Z, EuroSign, EuroSign ] };
+ key <AB02> { [ x, X, percent, percent ] };
+ key <AB03> { [ c, C, ampersand, ampersand ] };
+ key <AB04> { [ v, V, exclamdown, exclamdown ] };
+ key <AB05> { [ b, B, apostrophe, apostrophe ] };
+ key <AB06> { [ n, N, plus, plus ] };
+ key <AB07> { [ m, M, equal, equal ] };
+ key <AC10> { [ ccedilla, Ccedilla, questiondown, questiondown ] };
+ key <AE11> { [ ntilde, Ntilde, question, question ] };
+ key <AE12> { [ dead_tilde, dead_circumflex, dead_circumflex, dead_circumflex ] };
+
+ key <AB08> { [ comma, semicolon, minus, minus ] };
+ key <AB09> { [ period, colon, underscore, underscore ] };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "fr" {
+ name[Group1] = "French";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AD01> { [ a, A, 1, 1 ] };
+ key <AD02> { [ z, Z, 2, 2 ] };
+
+ key <AC01> { [ q, Q, at, at ] };
+ key <AC02> { [ s, S, percent, percent ] };
+ key <AC03> { [ d, D, ecircumflex, Ecircumflex ] };
+ key <AC04> { [ f, F, eacute, Eacute ] };
+ key <AC05> { [ g, G, egrave, Egrave ] };
+ key <AC06> { [ h, H, oe, OE ] };
+ key <AC07> { [ j, J, parenleft, parenleft ] };
+ key <AC08> { [ k, K, parenright, parenright ] };
+ key <AC09> { [ l, L, agrave, Agrave ] };
+ key <AC11> { [ m, M, ugrave, Ugrave ] };
+
+ key <AB01> { [ w, w, EuroSign, EuroSign ] };
+ key <AB02> { [ x, X, numbersign, numbersign ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB04> { [ v, V, plus, plus ] };
+ key <AB05> { [ b, B, equal, equal ] };
+ key <AB06> { [ n, N, quotedbl, quotedbl ] };
+ key <AB07> { [ comma, question, backslash, backslash ] };
+ key <AC10> { [ semicolon, period, minus, minus ] };
+ key <AE11> { [ colon, slash, underscore, underscore ] };
+ key <AE12> { [ apostrophe, apostrophe, mu, mu ] };
+
+ key <AB08> { [ less, greater, less, greater ] };
+ key <AB09> { [ exclam, section, asterisk, asterisk ] };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "de" {
+ name[Group1] = "German";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AD06> { [ z, Z, 6, 6 ] };
+
+ key <AC01> { [ a, A, exclam, exclam ] };
+ key <AC02> { [ s, S, quotedbl, quotedbl ] };
+ key <AC03> { [ d, D, at, at ] };
+ key <AC04> { [ f, F, numbersign, numbersign ] };
+ key <AC05> { [ g, G, percent, percent ] };
+ key <AC06> { [ h, H, backslash, backslash ] };
+ key <AC07> { [ j, J, slash, slash ] };
+ key <AC08> { [ k, K, parenleft, parenleft ] };
+ key <AC09> { [ l, L, parenright, parenright ] };
+ key <AC11> { [ udiaeresis, Udiaeresis, question, question ] };
+
+ key <AB01> { [ y, Y, EuroSign, EuroSign ] };
+ key <AB02> { [ x, X, asciitilde, asciitilde ] };
+ key <AB03> { [ c, C, asterisk, asterisk ] };
+ key <AB04> { [ v, V, ampersand, ampersand ] };
+ key <AB05> { [ b, B, plus, plus ] };
+ key <AB06> { [ n, N, less, less ] };
+ key <AB07> { [ m, M, greater, greater ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, equal, equal ] };
+ key <AE11> { [ adiaeresis, Adiaeresis, apostrophe, apostrophe ] };
+ key <AE12> { [ minus, underscore, ssharp, ssharp ] };
+
+ key <AB08> { [ comma, semicolon, comma, semicolon ] };
+ key <AB09> { [ period, colon, period, colon ] };
+};
+
+
+// Levels 5-8 are Russian, levels 1-4 US English, for shortcut reasons.
+partial alphanumeric_keys
+xkb_symbols "ru" {
+ name[Group1] = "Russian";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AD01> { type="EIGHT_LEVEL", [ q, Q, 1, 1, Cyrillic_shorti, Cyrillic_SHORTI, 1, 1 ] };
+ key <AD02> { type="EIGHT_LEVEL", [ w, W, 2, 2, Cyrillic_tse, Cyrillic_TSE, 2, 2 ] };
+ key <AD03> { type="EIGHT_LEVEL", [ e, E, 3, 3, Cyrillic_u, Cyrillic_U, 3, 3 ] };
+ key <AD04> { type="EIGHT_LEVEL", [ r, R, 4, 4, Cyrillic_ka, Cyrillic_KA, 4, 4 ] };
+ key <AD05> { type="EIGHT_LEVEL", [ t, T, 5, 5, Cyrillic_ie, Cyrillic_IE, 5, 5 ] };
+ key <AD06> { type="EIGHT_LEVEL", [ y, Y, 6, 6, Cyrillic_en, Cyrillic_EN, 6, 6 ] };
+ key <AD07> { type="EIGHT_LEVEL", [ u, U, 7, 7, Cyrillic_ghe, Cyrillic_GHE, 7, 7 ] };
+ key <AD08> { type="EIGHT_LEVEL", [ i, I, 8, 8, Cyrillic_sha, Cyrillic_SHA, 8, 8 ] };
+ key <AD09> { type="EIGHT_LEVEL", [ o, O, 9, 9, Cyrillic_shcha, Cyrillic_SHCHA, 9, 9 ] };
+ key <AD10> { type="EIGHT_LEVEL", [ p, P, 0, 0, Cyrillic_ze, Cyrillic_ZE, 0, 0 ] };
+
+ key <AC01> { type="EIGHT_LEVEL", [ a, A, exclam, exclam, Cyrillic_ef, Cyrillic_EF, exclam, exclam ] };
+ key <AC02> { type="EIGHT_LEVEL", [ s, S, quotedbl, quotedbl, Cyrillic_yeru, Cyrillic_YERU, quotedbl, quotedbl ] };
+ key <AC03> { type="EIGHT_LEVEL", [ d, D, at, at, Cyrillic_ve, Cyrillic_VE, at, at ] };
+ key <AC04> { type="EIGHT_LEVEL", [ f, F, numbersign, numbersign, Cyrillic_a, Cyrillic_A, numbersign, numbersign ] };
+ key <AC05> { type="EIGHT_LEVEL", [ g, G, backslash, backslash, Cyrillic_pe, Cyrillic_PE, backslash, backslash ] };
+ key <AC06> { type="EIGHT_LEVEL", [ h, H, slash, slash, Cyrillic_er, Cyrillic_ER, slash, slash ] };
+ key <AC07> { type="EIGHT_LEVEL", [ j, J, parenleft, parenleft, Cyrillic_o, Cyrillic_O, parenleft, parenleft ] };
+ key <AC08> { type="EIGHT_LEVEL", [ k, K, parenright, parenright, Cyrillic_el, Cyrillic_EL, parenright, parenright ] };
+ key <AC09> { type="EIGHT_LEVEL", [ l, L, colon, colon, Cyrillic_de, Cyrillic_DE, colon, colon ] };
+ key <AC11> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, semicolon, semicolon, Cyrillic_zhe, Cyrillic_ZHE, semicolon, semicolon ] };
+
+ key <AB01> { type="EIGHT_LEVEL", [ z, Z, underscore, underscore, Cyrillic_ya, Cyrillic_YA, minus, minus ] };
+ key <AB02> { type="EIGHT_LEVEL", [ x, X, percent, percent, Cyrillic_che, Cyrillic_CHE, percent, percent ] };
+ key <AB03> { type="EIGHT_LEVEL", [ c, C, 0x1002116, 0x1002116, Cyrillic_es, Cyrillic_ES, 0x1002116, 0x1002116 ] };
+ key <AB04> { type="EIGHT_LEVEL", [ v, V, equal, equal, Cyrillic_em, Cyrillic_EM, equal, equal ] };
+ key <AB05> { type="EIGHT_LEVEL", [ b, B, ampersand, ampersand, Cyrillic_i, Cyrillic_I, ampersand, ampersand ] };
+ key <AB06> { type="EIGHT_LEVEL", [ n, N, asterisk, asterisk, Cyrillic_te, Cyrillic_TE, asterisk, asterisk ] };
+ key <AB07> { type="EIGHT_LEVEL", [ m, M, apostrophe, apostrophe, Cyrillic_softsign, Cyrillic_SOFTSIGN, apostrophe, apostrophe ] };
+ key <AC10> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, minus, minus, Cyrillic_be, Cyrillic_BE, minus, minus ] };
+ key <AE11> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, question, question, Cyrillic_yu, Cyrillic_YU, question, question ] };
+ key <AE12> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, Cyrillic_hardsign, Cyrillic_HARDSIGN, Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+
+ key <AB08> { type="EIGHT_LEVEL", [ period, comma, period, comma, period, comma, period, comma ] };
+ key <AB09> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, Cyrillic_io, Cyrillic_IO, Cyrillic_e, Cyrillic_E, Cyrillic_io, Cyrillic_IO ] };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "it" {
+ name[Group1] = "Italian";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AC01> { [ a, A, exclam, exclam ] };
+ key <AC02> { [ s, S, quotedbl, quotedbl ] };
+ key <AC03> { [ d, D, at, at ] };
+ key <AC04> { [ f, F, numbersign, numbersign ] };
+ key <AC05> { [ g, G, asterisk, asterisk ] };
+ key <AC06> { [ h, H, backslash, backslash ] };
+ key <AC07> { [ j, J, slash, slash ] };
+ key <AC08> { [ k, K, parenleft, parenleft ] };
+ key <AC09> { [ l, L, parenright, parenright ] };
+ key <AC11> { [ apostrophe, question, igrave, Igrave ] };
+
+ key <AB01> { [ z, Z, EuroSign, EuroSign ] };
+ key <AB02> { [ x, X, asciitilde, asciitilde ] };
+ key <AB03> { [ c, C, ampersand, ampersand ] };
+ key <AB04> { [ v, V, equal, equal ] };
+ key <AB05> { [ b, B, less, less ] };
+ key <AB06> { [ n, N, greater, greater ] };
+ key <AB07> { [ m, M, plus, plus ] };
+ key <AC10> { [ eacute, Eacute, ograve, Ograve ] };
+ key <AE11> { [ egrave, Egrave, agrave, Agrave ] };
+ key <AE12> { [ minus, underscore, ugrave, Ugrave ] };
+
+ key <AB08> { [ comma, semicolon, comma, semicolon ] };
+ key <AB09> { [ period, colon, period, colon ] };
+};
+
+partial default alphanumeric_keys
+xkb_symbols "base" {
+ key <AD01> { [ q, Q, 1, 1 ] };
+ key <AD02> { [ w, W, 2, 2 ] };
+ key <AD03> { [ e, E, 3, 3 ] };
+ key <AD04> { [ r, R, 4, 4 ] };
+ key <AD05> { [ t, T, 5, 5 ] };
+ key <AD06> { [ y, Y, 6, 6 ] };
+ key <AD07> { [ u, U, 7, 7 ] };
+ key <AD08> { [ i, I, 8, 8 ] };
+ key <AD09> { [ o, O, 9, 9 ] };
+ key <AD10> { [ p, P, 0, 0 ] };
+ key <BKSP> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
+
+ // broken UI spec.
+ key <RTRN> { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter ] };
+
+ key <COMP> { [ Multi_key, Multi_key, Multi_key, Multi_key ] };
+ key <LFSH> { [ Shift_L, Shift_L, Shift_L, Shift_L ] };
+ key <FN> { [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift ] };
+ key <SPCE> { [ space, space, space, space ] };
+ key <RCTL> { [ Control_R, Control_R, Control_R, Control_R ] };
+ key <TAB> { [ Tab, Tab, Tab, Tab ] };
+
+ modifier_map Shift { Shift_L };
+ modifier_map Mod5 { ISO_Level3_Shift };
+ modifier_map Control { Control_R };
+
+ key <KPEN> { [ Return ] };
+ key <UP> { [ Up ] };
+ key <DOWN> { [ Down ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+
+ key <ESC> { [ Escape ] };
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+
+ // generated from the headset, must always be in the map.
+ key <I29> { [ XF86Phone ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/olpc b/xorg-server/xkeyboard-config/symbols/olpc
index 9e74e47b8..e9e950b1e 100644
--- a/xorg-server/xkeyboard-config/symbols/olpc
+++ b/xorg-server/xkeyboard-config/symbols/olpc
@@ -1,21 +1,21 @@
-//
-// Created by Bernardo Innocenti <bernie@codewiz.org>
-//
-// Additional symbol definitions for the OLPC keyboards
-//
-
-alphanumeric_keys modifier_keys
-xkb_symbols "olpc" {
- include "pc(pc105)"
-
- modifier_map Mod1 { KP_Home }; // KP_Home is the "square" game key
- modifier_map Mod3 { KP_End }; // KP_End is the "tick" game key
- modifier_map Mod4 { KP_Prior }; // KP_Prior is the "O" game key
- modifier_map Mod5 { KP_Next }; // KP_Next is the "X" game key
-
- key <I220> { [ XF86Search ] }; // search key
- key <I221> { [ XF86Meeting ] }; // fn+search key
- key <I236> { [ XF86Start ] }; // gear key (fn+space)
- key <I147> { [ XF86TaskPane ] }; // frame key (the top-right key)
- key <I224> { [ XF86Messenger ] }; // overlay key (next to frame key)
-};
+//
+// Created by Bernardo Innocenti <bernie@codewiz.org>
+//
+// Additional symbol definitions for the OLPC keyboards
+//
+
+alphanumeric_keys modifier_keys
+xkb_symbols "olpc" {
+ include "pc(pc105)"
+
+ modifier_map Mod1 { KP_Home }; // KP_Home is the "square" game key
+ modifier_map Mod3 { KP_End }; // KP_End is the "tick" game key
+ modifier_map Mod4 { KP_Prior }; // KP_Prior is the "O" game key
+ modifier_map Mod5 { KP_Next }; // KP_Next is the "X" game key
+
+ key <I220> { [ XF86Search ] }; // search key
+ key <I221> { [ XF86Meeting ] }; // fn+search key
+ key <I236> { [ XF86Start ] }; // gear key (fn+space)
+ key <I147> { [ XF86TaskPane ] }; // frame key (the top-right key)
+ key <I224> { [ XF86Messenger ] }; // overlay key (next to frame key)
+};
diff --git a/xorg-server/xkeyboard-config/symbols/rupeesign b/xorg-server/xkeyboard-config/symbols/rupeesign
index 605060af7..efde69cb3 100644
--- a/xorg-server/xkeyboard-config/symbols/rupeesign
+++ b/xorg-server/xkeyboard-config/symbols/rupeesign
@@ -1,5 +1,5 @@
-// keyboards having the RupeeSign on the 4 key
-partial
-xkb_symbols "4" {
- key <AE04> { [ NoSymbol, NoSymbol, U20B9 ] };
-};
+// keyboards having the RupeeSign on the 4 key
+partial
+xkb_symbols "4" {
+ key <AE04> { [ NoSymbol, NoSymbol, U20B9 ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sgi_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/sgi_vndr/Makefile.am
index b1123e70e..0133ca001 100644
--- a/xorg-server/xkeyboard-config/symbols/sgi_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/sgi_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/sgi_vndr
-
-dist_symbols_DATA = \
-jp
+symbolsdir = $(xkb_base)/symbols/sgi_vndr
+
+dist_symbols_DATA = \
+jp
diff --git a/xorg-server/xkeyboard-config/symbols/sgi_vndr/jp b/xorg-server/xkeyboard-config/symbols/sgi_vndr/jp
index 00f9ede0f..f60c80290 100644
--- a/xorg-server/xkeyboard-config/symbols/sgi_vndr/jp
+++ b/xorg-server/xkeyboard-config/symbols/sgi_vndr/jp
@@ -1,44 +1,44 @@
-xkb_symbols "jp106" {
-
- name[group1]="Japan/ASCII";
-
- key <HZTG> { [ Zenkaku_Hankaku ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, apostrophe ] };
- key <AE08> { [ 8, parenleft ] };
- key <AE09> { [ 9, parenright ] };
- key <AE10> { [ 0, asciitilde ] };
- key <AE11> { [ minus, equal ] };
- key <AE12> { [ asciicircum, overbar ] };
- key <AE13> { [ yen, bar ] };
-
- // keys <TAB> and <AD01> - <AD10> are identical to US/ASCII keyboard
- key <AD11> { [ at, grave ] };
- key <AD12> { [ bracketleft, braceleft ] };
-
- key <CAPS> { [ Eisu_Shift, Caps_Lock ] };
- // keys <AC01> - <AC09> are identical to US/ASCII keyboard
- key <AC10> { [ semicolon, plus ] };
- key <AC11> { [ colon, asterisk ] };
- key <AC12> { [ bracketright, braceright ] };
-
- // keys <LFSH> and <AB01> - <AB10> are identical to US/ASCII keyboard
- key <AB11> { [ backslash, underscore ] };
-
- key <NFER> { [ Muhenkan ] };
- key <XFER> { [ Kanji ] };
- key <HKTG> { [ Hiragana_Katakana ] };
-};
-
-xkb_symbols "alternate106" {
- key <AE10> { [ 0, overbar ] };
- key <AE12> { [ asciicircum, asciitilde] };
- key <AE13> { [ backslash, bar ] };
- key <AB11> { [ underbar, underscore ] };
- augment "sgi/jp(jp106)"
-};
+xkb_symbols "jp106" {
+
+ name[group1]="Japan/ASCII";
+
+ key <HZTG> { [ Zenkaku_Hankaku ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, apostrophe ] };
+ key <AE08> { [ 8, parenleft ] };
+ key <AE09> { [ 9, parenright ] };
+ key <AE10> { [ 0, asciitilde ] };
+ key <AE11> { [ minus, equal ] };
+ key <AE12> { [ asciicircum, overbar ] };
+ key <AE13> { [ yen, bar ] };
+
+ // keys <TAB> and <AD01> - <AD10> are identical to US/ASCII keyboard
+ key <AD11> { [ at, grave ] };
+ key <AD12> { [ bracketleft, braceleft ] };
+
+ key <CAPS> { [ Eisu_Shift, Caps_Lock ] };
+ // keys <AC01> - <AC09> are identical to US/ASCII keyboard
+ key <AC10> { [ semicolon, plus ] };
+ key <AC11> { [ colon, asterisk ] };
+ key <AC12> { [ bracketright, braceright ] };
+
+ // keys <LFSH> and <AB01> - <AB10> are identical to US/ASCII keyboard
+ key <AB11> { [ backslash, underscore ] };
+
+ key <NFER> { [ Muhenkan ] };
+ key <XFER> { [ Kanji ] };
+ key <HKTG> { [ Hiragana_Katakana ] };
+};
+
+xkb_symbols "alternate106" {
+ key <AE10> { [ 0, overbar ] };
+ key <AE12> { [ asciicircum, asciitilde] };
+ key <AE13> { [ backslash, bar ] };
+ key <AB11> { [ underbar, underscore ] };
+ augment "sgi/jp(jp106)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/shift b/xorg-server/xkeyboard-config/symbols/shift
index 64dae8e43..6fbec5b2a 100644
--- a/xorg-server/xkeyboard-config/symbols/shift
+++ b/xorg-server/xkeyboard-config/symbols/shift
@@ -1,84 +1,84 @@
-partial modifier_keys
-xkb_symbols "breaks_caps" {
- key <LFSH> {
- type = "ALPHABETIC",
- actions [Group1] = [
- SetMods(modifiers=Shift),
- SetMods(modifiers=Shift+Lock,clearLocks)
- ]
- };
- key <RTSH> {
- type = "ALPHABETIC",
- actions [Group1] = [
- SetMods(modifiers=Shift),
- SetMods(modifiers=Shift+Lock,clearLocks)
- ]
- };
-};
-
-// When pressed together with another Shift key, set/release Lock.
-partial modifier_keys
-xkb_symbols "lshift_both_capslock" {
- key <LFSH> {
- type[Group1]="TWO_LEVEL",
- symbols[Group1] = [ Shift_L, Caps_Lock ]
- };
-};
-// When pressed together with another Shift key, set or unset Lock.
-partial modifier_keys
-xkb_symbols "rshift_both_capslock" {
- key <RTSH> {
- type[Group1]="TWO_LEVEL",
- symbols[Group1] = [ Shift_R, Caps_Lock ]
- };
-};
-partial modifier_keys
-xkb_symbols "both_capslock" {
- include "shift(lshift_both_capslock)"
- include "shift(rshift_both_capslock)"
-};
-
-// Release Lock when pressed alone and set Lock when pressed with another Shift key.
-partial modifier_keys
-xkb_symbols "lshift_both_capslock_cancel" {
- key <LFSH> {
- type[Group1]="ALPHABETIC",
- symbols[Group1] = [ Shift_L, Caps_Lock ]
- };
-};
-// Release Lock when pressed alone and set Lock when pressed with another Shift key.
-partial modifier_keys
-xkb_symbols "rshift_both_capslock_cancel" {
- key <RTSH> {
- type[Group1]="ALPHABETIC",
- symbols[Group1] = [ Shift_R, Caps_Lock ]
- };
-};
-partial modifier_keys
-xkb_symbols "both_capslock_cancel" {
- include "shift(lshift_both_capslock_cancel)"
- include "shift(rshift_both_capslock_cancel)"
-};
-
-
-// When pressed together with another Shift key, lock/unlock Shift.
-partial modifier_keys
-xkb_symbols "lshift_both_shiftlock" {
- key <LFSH> {
- type[Group1]="TWO_LEVEL",
- symbols[Group1] = [ Shift_L, Shift_Lock ]
- };
-};
-// When pressed together with another Shift key, lock/unlock Shift.
-partial modifier_keys
-xkb_symbols "rshift_both_shiftlock" {
- key <RTSH> {
- type[Group1]="TWO_LEVEL",
- symbols[Group1] = [ Shift_R, Shift_Lock ]
- };
-};
-partial modifier_keys
-xkb_symbols "both_shiftlock" {
- include "shift(lshift_both_shiftlock)"
- include "shift(rshift_both_shiftlock)"
-};
+partial modifier_keys
+xkb_symbols "breaks_caps" {
+ key <LFSH> {
+ type = "ALPHABETIC",
+ actions [Group1] = [
+ SetMods(modifiers=Shift),
+ SetMods(modifiers=Shift+Lock,clearLocks)
+ ]
+ };
+ key <RTSH> {
+ type = "ALPHABETIC",
+ actions [Group1] = [
+ SetMods(modifiers=Shift),
+ SetMods(modifiers=Shift+Lock,clearLocks)
+ ]
+ };
+};
+
+// When pressed together with another Shift key, set/release Lock.
+partial modifier_keys
+xkb_symbols "lshift_both_capslock" {
+ key <LFSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_L, Caps_Lock ]
+ };
+};
+// When pressed together with another Shift key, set or unset Lock.
+partial modifier_keys
+xkb_symbols "rshift_both_capslock" {
+ key <RTSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_R, Caps_Lock ]
+ };
+};
+partial modifier_keys
+xkb_symbols "both_capslock" {
+ include "shift(lshift_both_capslock)"
+ include "shift(rshift_both_capslock)"
+};
+
+// Release Lock when pressed alone and set Lock when pressed with another Shift key.
+partial modifier_keys
+xkb_symbols "lshift_both_capslock_cancel" {
+ key <LFSH> {
+ type[Group1]="ALPHABETIC",
+ symbols[Group1] = [ Shift_L, Caps_Lock ]
+ };
+};
+// Release Lock when pressed alone and set Lock when pressed with another Shift key.
+partial modifier_keys
+xkb_symbols "rshift_both_capslock_cancel" {
+ key <RTSH> {
+ type[Group1]="ALPHABETIC",
+ symbols[Group1] = [ Shift_R, Caps_Lock ]
+ };
+};
+partial modifier_keys
+xkb_symbols "both_capslock_cancel" {
+ include "shift(lshift_both_capslock_cancel)"
+ include "shift(rshift_both_capslock_cancel)"
+};
+
+
+// When pressed together with another Shift key, lock/unlock Shift.
+partial modifier_keys
+xkb_symbols "lshift_both_shiftlock" {
+ key <LFSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_L, Shift_Lock ]
+ };
+};
+// When pressed together with another Shift key, lock/unlock Shift.
+partial modifier_keys
+xkb_symbols "rshift_both_shiftlock" {
+ key <RTSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_R, Shift_Lock ]
+ };
+};
+partial modifier_keys
+xkb_symbols "both_shiftlock" {
+ include "shift(lshift_both_shiftlock)"
+ include "shift(rshift_both_shiftlock)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sony_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/sony_vndr/Makefile.am
index e1a77d957..5577f7c7c 100644
--- a/xorg-server/xkeyboard-config/symbols/sony_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/sony_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/sony_vndr
-
-dist_symbols_DATA = \
-us
+symbolsdir = $(xkb_base)/symbols/sony_vndr
+
+dist_symbols_DATA = \
+us
diff --git a/xorg-server/xkeyboard-config/symbols/sony_vndr/us b/xorg-server/xkeyboard-config/symbols/sony_vndr/us
index a34d7b931..e91ca11b2 100644
--- a/xorg-server/xkeyboard-config/symbols/sony_vndr/us
+++ b/xorg-server/xkeyboard-config/symbols/sony_vndr/us
@@ -1,91 +1,91 @@
-//
-//Copyright 1996, 1998 The Open Group
-//
-//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.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-// US/ASCII layout for a nwp5461 keyboard
-xkb_symbols "nwp5461" {
- include "us(basic)"
-
- key <LALT> { [ Alt_L, Meta_L ] };
- key <RTSH> { [ Shift_R ] };
- key <AB11> { [ NoSymbol ] };
-
- // Begin "Function" section
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
- key <HELP> { [ Help ] };
- key <STOP> { [ Cancel ] };
- key <CUT> { [ Select ] };
- key <EXEC> { [ Execute ] };
- key <DELE> { [ Delete ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
- key <UP> { [ Up ] };
- key <DOWN> { [ Down ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
- key <INS> { [ Insert ] };
- key <CLR> { [ Clear ] };
- // End "Function" section
-
- // Begin "Keypad" section
- key <KPMU> { [ KP_Multiply ] };
- key <KPDV> { [ KP_Divide ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPSP> { [ KP_Separator ] };
-
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_0 ] };
- key <KPDC> { [ KP_Decimal ] };
- key <KPTB> { [ KP_Tab ] };
- // End "Keypad" section
-
-
- // begin modifier mappings
- modifier_map Shift { Shift_R };
- modifier_map Mod3 { Alt_L };
-};
+//
+//Copyright 1996, 1998 The Open Group
+//
+//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.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+// US/ASCII layout for a nwp5461 keyboard
+xkb_symbols "nwp5461" {
+ include "us(basic)"
+
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <RTSH> { [ Shift_R ] };
+ key <AB11> { [ NoSymbol ] };
+
+ // Begin "Function" section
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+ key <HELP> { [ Help ] };
+ key <STOP> { [ Cancel ] };
+ key <CUT> { [ Select ] };
+ key <EXEC> { [ Execute ] };
+ key <DELE> { [ Delete ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <UP> { [ Up ] };
+ key <DOWN> { [ Down ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+ key <INS> { [ Insert ] };
+ key <CLR> { [ Clear ] };
+ // End "Function" section
+
+ // Begin "Keypad" section
+ key <KPMU> { [ KP_Multiply ] };
+ key <KPDV> { [ KP_Divide ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPSP> { [ KP_Separator ] };
+
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_0 ] };
+ key <KPDC> { [ KP_Decimal ] };
+ key <KPTB> { [ KP_Tab ] };
+ // End "Keypad" section
+
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Mod3 { Alt_L };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ara b/xorg-server/xkeyboard-config/symbols/sun_vndr/ara
index d62bb6da9..70e1b9b90 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ara
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ara
@@ -1,116 +1,116 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]= "Arabic";
-
- key <TLDE> { [ Arabic_thal, Arabic_shadda, grave, asciitilde ] };
- key <AE01> { [ 1, exclam, 1, exclam ] };
- key <AE02> { [ 2, at, 2, at ] };
- key <AE03> { [ 3, numbersign, 3, numbersign ] };
- key <AE04> { [ 4, dollar, 4, dollar ] };
- key <AE05> { [ 5, percent, 5, percent ] };
- key <AE06> { [ 6, asciicircum, 6, asciicircum ] };
- key <AE07> { [ 7, ampersand, 7, ampersand ] };
- key <AE08> { [ 8, asterisk, 8, asterisk ] };
- key <AE09> { [ 9, parenright, 9, parenright ] };
- key <AE10> { [ 0, parenleft, 0, parenleft ] };
- key <AE11> { [ minus, underscore, minus, underscore ] };
- key <AE12> { [ equal, plus, equal, plus ] };
-
- key <AD01> { [ Arabic_dad, Arabic_fatha, q, Q ] };
- key <AD02> { [ Arabic_sad, Arabic_fathatan, w, W ] };
- key <AD03> { [ Arabic_theh, Arabic_damma, e, E ] };
- key <AD04> { [ Arabic_qaf, Arabic_dammatan, r, R ] };
- key <AD05> { [ Arabic_feh, 0x100fef9, t, T ] };
- key <AD06> { [ Arabic_ghain, Arabic_hamzaunderalef, y, Y ] };
- key <AD07> { [ Arabic_ain, grave, u, U ] };
- key <AD08> { [ Arabic_ha, division, i, I ] };
- key <AD09> { [ Arabic_khah, multiply, o, O ] };
- key <AD10> { [ Arabic_hah, Arabic_semicolon, p, P ] };
- key <AD11> { [ Arabic_jeem, greater, bracketleft, braceleft ] };
- key <AD12> { [ Arabic_dal, less, bracketright, braceright ] };
-
- key <AC01> { [ Arabic_sheen, Arabic_kasra, a, A ] };
- key <AC02> { [ Arabic_seen, Arabic_kasratan, s, S ] };
- key <AC03> { [ Arabic_yeh, bracketright, d, D ] };
- key <AC04> { [ Arabic_beh, bracketleft, f, F ] };
- key <AC05> { [ Arabic_lam, 0x100fef7, g, G ] };
- key <AC06> { [ Arabic_alef, Arabic_hamzaonalef, h, H ] };
- key <AC07> { [ Arabic_teh, Arabic_tatweel, j, J ] };
- key <AC08> { [ Arabic_noon, Arabic_comma, k, K ] };
- key <AC09> { [ Arabic_meem, slash, l, L ] };
- key <AC10> { [ Arabic_kaf, colon, semicolon, colon ] };
- key <AC11> { [ Arabic_tah, quotedbl, apostrophe, quotedbl ] };
- key <BKSL> { [ backslash, bar, backslash, bar ] };
-
- key <LSGT> { [ bar, brokenbar, bar, brokenbar ] };
- key <AB01> { [Arabic_hamzaonyeh, asciitilde, z, Z ] };
- key <AB02> { [ Arabic_hamza, Arabic_sukun, x, X ] };
- key <AB03> { [Arabic_hamzaonwaw, braceright, c, C ] };
- key <AB04> { [ Arabic_ra, braceleft, v, V ] };
- key <AB05> { [ 0x100fefb, 0x100fef5, b, B ] };
- key <AB06> { [Arabic_alefmaksura, Arabic_maddaonalef, n, N ] };
- key <AB07> { [Arabic_tehmarbuta, apostrophe, m, M ] };
- key <AB08> { [ Arabic_waw, comma, comma, less ] };
- key <AB09> { [ Arabic_zain, period, period, greater ] };
- key <AB10> { [ Arabic_zah, Arabic_question_mark, slash, question ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/ara(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]= "Arabic";
+
+ key <TLDE> { [ Arabic_thal, Arabic_shadda, grave, asciitilde ] };
+ key <AE01> { [ 1, exclam, 1, exclam ] };
+ key <AE02> { [ 2, at, 2, at ] };
+ key <AE03> { [ 3, numbersign, 3, numbersign ] };
+ key <AE04> { [ 4, dollar, 4, dollar ] };
+ key <AE05> { [ 5, percent, 5, percent ] };
+ key <AE06> { [ 6, asciicircum, 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand, 7, ampersand ] };
+ key <AE08> { [ 8, asterisk, 8, asterisk ] };
+ key <AE09> { [ 9, parenright, 9, parenright ] };
+ key <AE10> { [ 0, parenleft, 0, parenleft ] };
+ key <AE11> { [ minus, underscore, minus, underscore ] };
+ key <AE12> { [ equal, plus, equal, plus ] };
+
+ key <AD01> { [ Arabic_dad, Arabic_fatha, q, Q ] };
+ key <AD02> { [ Arabic_sad, Arabic_fathatan, w, W ] };
+ key <AD03> { [ Arabic_theh, Arabic_damma, e, E ] };
+ key <AD04> { [ Arabic_qaf, Arabic_dammatan, r, R ] };
+ key <AD05> { [ Arabic_feh, 0x100fef9, t, T ] };
+ key <AD06> { [ Arabic_ghain, Arabic_hamzaunderalef, y, Y ] };
+ key <AD07> { [ Arabic_ain, grave, u, U ] };
+ key <AD08> { [ Arabic_ha, division, i, I ] };
+ key <AD09> { [ Arabic_khah, multiply, o, O ] };
+ key <AD10> { [ Arabic_hah, Arabic_semicolon, p, P ] };
+ key <AD11> { [ Arabic_jeem, greater, bracketleft, braceleft ] };
+ key <AD12> { [ Arabic_dal, less, bracketright, braceright ] };
+
+ key <AC01> { [ Arabic_sheen, Arabic_kasra, a, A ] };
+ key <AC02> { [ Arabic_seen, Arabic_kasratan, s, S ] };
+ key <AC03> { [ Arabic_yeh, bracketright, d, D ] };
+ key <AC04> { [ Arabic_beh, bracketleft, f, F ] };
+ key <AC05> { [ Arabic_lam, 0x100fef7, g, G ] };
+ key <AC06> { [ Arabic_alef, Arabic_hamzaonalef, h, H ] };
+ key <AC07> { [ Arabic_teh, Arabic_tatweel, j, J ] };
+ key <AC08> { [ Arabic_noon, Arabic_comma, k, K ] };
+ key <AC09> { [ Arabic_meem, slash, l, L ] };
+ key <AC10> { [ Arabic_kaf, colon, semicolon, colon ] };
+ key <AC11> { [ Arabic_tah, quotedbl, apostrophe, quotedbl ] };
+ key <BKSL> { [ backslash, bar, backslash, bar ] };
+
+ key <LSGT> { [ bar, brokenbar, bar, brokenbar ] };
+ key <AB01> { [Arabic_hamzaonyeh, asciitilde, z, Z ] };
+ key <AB02> { [ Arabic_hamza, Arabic_sukun, x, X ] };
+ key <AB03> { [Arabic_hamzaonwaw, braceright, c, C ] };
+ key <AB04> { [ Arabic_ra, braceleft, v, V ] };
+ key <AB05> { [ 0x100fefb, 0x100fef5, b, B ] };
+ key <AB06> { [Arabic_alefmaksura, Arabic_maddaonalef, n, N ] };
+ key <AB07> { [Arabic_tehmarbuta, apostrophe, m, M ] };
+ key <AB08> { [ Arabic_waw, comma, comma, less ] };
+ key <AB09> { [ Arabic_zain, period, period, greater ] };
+ key <AB10> { [ Arabic_zah, Arabic_question_mark, slash, question ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/ara(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/be b/xorg-server/xkeyboard-config/symbols/sun_vndr/be
index 58abfd6e6..202e8a4c1 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/be
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/be
@@ -1,98 +1,98 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Belgium";
-
- key <TLDE> { [twosuperior, threesuperior ] };
- key <AE01> { [ ampersand, 1, bar ] };
- key <AE02> { [ eacute, 2, at ] };
- key <AE03> { [ quotedbl, 3, numbersign ] };
- key <AE04> { [apostrophe, 4 ] };
- key <AE05> { [ parenleft, 5 ] };
- key <AE06> { [ section, 6, asciicircum ] };
- key <AE07> { [ egrave, 7 ] };
- key <AE08> { [ exclam, 8 ] };
- key <AE09> { [ ccedilla, 9, braceleft ] };
- key <AE10> { [ agrave, 0, braceright ] };
- key <AE11> { [parenright, degree ] };
- key <AE12> { [ minus, underscore ] };
-
- key <AD01> { [ a, A ] };
- key <AD02> { [ z, Z ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD09> { [ o, O ] };
- key <AD11> { [dead_circumflex, dead_diaeresis, bracketleft ] };
- key <AD12> { [ dollar, asterisk, bracketright ] };
-
- key <AC01> { [ q, Q ] };
- key <AC10> { [ m, M ] };
- key <AC11> { [ ugrave, percent, dead_acute ] };
- key <BKSL> { [ mu, sterling, dead_grave ] };
-
- key <LSGT> { [ less, greater, backslash ] };
- key <AB01> { [ w, W ] };
- key <AB07> { [ comma, question ] };
- key <AB08> { [ semicolon, period ] };
- key <AB09> { [ colon, slash ] };
- key <AB10> { [ equal, plus, dead_tilde ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/be(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Belgium";
+
+ key <TLDE> { [twosuperior, threesuperior ] };
+ key <AE01> { [ ampersand, 1, bar ] };
+ key <AE02> { [ eacute, 2, at ] };
+ key <AE03> { [ quotedbl, 3, numbersign ] };
+ key <AE04> { [apostrophe, 4 ] };
+ key <AE05> { [ parenleft, 5 ] };
+ key <AE06> { [ section, 6, asciicircum ] };
+ key <AE07> { [ egrave, 7 ] };
+ key <AE08> { [ exclam, 8 ] };
+ key <AE09> { [ ccedilla, 9, braceleft ] };
+ key <AE10> { [ agrave, 0, braceright ] };
+ key <AE11> { [parenright, degree ] };
+ key <AE12> { [ minus, underscore ] };
+
+ key <AD01> { [ a, A ] };
+ key <AD02> { [ z, Z ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD09> { [ o, O ] };
+ key <AD11> { [dead_circumflex, dead_diaeresis, bracketleft ] };
+ key <AD12> { [ dollar, asterisk, bracketright ] };
+
+ key <AC01> { [ q, Q ] };
+ key <AC10> { [ m, M ] };
+ key <AC11> { [ ugrave, percent, dead_acute ] };
+ key <BKSL> { [ mu, sterling, dead_grave ] };
+
+ key <LSGT> { [ less, greater, backslash ] };
+ key <AB01> { [ w, W ] };
+ key <AB07> { [ comma, question ] };
+ key <AB08> { [ semicolon, period ] };
+ key <AB09> { [ colon, slash ] };
+ key <AB10> { [ equal, plus, dead_tilde ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/be(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/br b/xorg-server/xkeyboard-config/symbols/sun_vndr/br
index 3cea0bf9c..7ad2dd1cf 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/br
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/br
@@ -1,101 +1,101 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Brazil";
-
- key <TLDE> { [ apostrophe, quotedbl, notsign ] };
- key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
- key <AE02> { [ 2, at, twosuperior, onehalf ] };
- key <AE03> { [ 3, numbersign, threesuperior, threequarters ] };
- key <AE04> { [ 4, dollar, sterling, onequarter ] };
- key <AE05> { [ 5, percent, cent ] };
- key <AE06> { [ 6, dead_diaeresis, notsign, diaeresis ] };
- key <AE07> { [ 7, ampersand, braceleft ] };
- key <AE08> { [ 8, asterisk, bracketleft ] };
- key <AE09> { [ 9, parenleft, bracketright ] };
- key <AE10> { [ 0, parenright, braceright ] };
- key <AE11> { [ minus, underscore, backslash ] };
- key <AE12> { [ equal, plus, section ] };
-
- key <AD03> { [ e, E, EuroSign ] };
- key <AD04> { [ r, R, registered ] };
- key <AD11> { [ dead_acute, dead_grave, acute, grave ] };
- key <AD12> { [ bracketleft, braceleft, ordfeminine ] };
-
- key <AC10> { [ ccedilla, Ccedilla, exclamdown ] };
- key <AC11> { [ dead_tilde, dead_circumflex, asciitilde, asciicircum ] };
- key <AC12> { [ bracketright, braceright, masculine ] };
- key <BKSL> { [ bracketright, braceright, masculine ] };
-
- key <LSGT> { [ slash, bar, degree ] };
- key <AB01> { [ z, Z, guillemotleft ] };
- key <AB02> { [ x, X, guillemotright ] };
- key <AB03> { [ c, C, copyright ] };
- key <AB07> { [ m, M, mu ] };
- key <AB08> { [ comma, less, question ] };
- key <AB09> { [ period, greater, questiondown ] };
- key <AB10> { [ semicolon, colon ] };
- key <AB11> { [ slash, question, degree, questiondown ] };
-
- key <KPPT> { [ KP_Decimal ] };
- key <KPDL> { [ KP_Delete, comma ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/br(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Brazil";
+
+ key <TLDE> { [ apostrophe, quotedbl, notsign ] };
+ key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
+ key <AE02> { [ 2, at, twosuperior, onehalf ] };
+ key <AE03> { [ 3, numbersign, threesuperior, threequarters ] };
+ key <AE04> { [ 4, dollar, sterling, onequarter ] };
+ key <AE05> { [ 5, percent, cent ] };
+ key <AE06> { [ 6, dead_diaeresis, notsign, diaeresis ] };
+ key <AE07> { [ 7, ampersand, braceleft ] };
+ key <AE08> { [ 8, asterisk, bracketleft ] };
+ key <AE09> { [ 9, parenleft, bracketright ] };
+ key <AE10> { [ 0, parenright, braceright ] };
+ key <AE11> { [ minus, underscore, backslash ] };
+ key <AE12> { [ equal, plus, section ] };
+
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD04> { [ r, R, registered ] };
+ key <AD11> { [ dead_acute, dead_grave, acute, grave ] };
+ key <AD12> { [ bracketleft, braceleft, ordfeminine ] };
+
+ key <AC10> { [ ccedilla, Ccedilla, exclamdown ] };
+ key <AC11> { [ dead_tilde, dead_circumflex, asciitilde, asciicircum ] };
+ key <AC12> { [ bracketright, braceright, masculine ] };
+ key <BKSL> { [ bracketright, braceright, masculine ] };
+
+ key <LSGT> { [ slash, bar, degree ] };
+ key <AB01> { [ z, Z, guillemotleft ] };
+ key <AB02> { [ x, X, guillemotright ] };
+ key <AB03> { [ c, C, copyright ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB08> { [ comma, less, question ] };
+ key <AB09> { [ period, greater, questiondown ] };
+ key <AB10> { [ semicolon, colon ] };
+ key <AB11> { [ slash, question, degree, questiondown ] };
+
+ key <KPPT> { [ KP_Decimal ] };
+ key <KPDL> { [ KP_Delete, comma ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/br(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ca b/xorg-server/xkeyboard-config/symbols/sun_vndr/ca
index 6fb72c462..4705123dc 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ca
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ca
@@ -1,97 +1,97 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Canada Bilingual";
-
- key <TLDE> { [ slash, bar, backslash ]};
- key <AE01> { [ 1, exclam, plusminus ]};
- key <AE02> { [ 2, at ]};
- key <AE03> { [ 3, numbersign, sterling ]};
- key <AE04> { [ 4, dollar, cent ]};
- key <AE05> { [ 5, percent, currency ]};
- key <AE06> { [ 6, question, notsign ]};
- key <AE07> { [ 7, ampersand, braceleft ]};
- key <AE08> { [ 8, asterisk, braceright ]};
- key <AE09> { [ 9, parenleft, bracketleft ]};
- key <AE10> { [ 0, parenright, bracketright ]};
- key <AE11> { [ minus, underscore, onehalf ]};
- key <AE12> { [ equal, plus, notsign ]};
-
- key <AD03> { [ e, E, EuroSign ]};
- key <AD09> { [ o, O, section ]};
- key <AD10> { [ p, P, paragraph ]};
- key <AD11> { [ dead_circumflex, dead_diaeresis, dead_grave ]};
- key <AD12> { [ ccedilla, Ccedilla, asciitilde ]};
-
- key <AC10> { [ semicolon, colon, degree ]};
- key <AC11> { [ egrave, Egrave, braceleft ]};
- key <AC12> { [ agrave, Agrave, braceright ]};
- key <BKSL> { [ agrave, Agrave, braceright ]};
-
- key <LSGT> { [ uacute, Uacute ]};
- key <AB01> { [ z, Z, guillemotleft ]};
- key <AB02> { [ x, X, guillemotright ]};
- key <AB07> { [ m, M, mu ]};
- key <AB08> { [ comma, quoteright, less ]};
- key <AB09> { [ period, quotedbl, greater ]};
- key <AB10> { [ eacute, Eacute, quoteleft ]};
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/ca(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Canada Bilingual";
+
+ key <TLDE> { [ slash, bar, backslash ]};
+ key <AE01> { [ 1, exclam, plusminus ]};
+ key <AE02> { [ 2, at ]};
+ key <AE03> { [ 3, numbersign, sterling ]};
+ key <AE04> { [ 4, dollar, cent ]};
+ key <AE05> { [ 5, percent, currency ]};
+ key <AE06> { [ 6, question, notsign ]};
+ key <AE07> { [ 7, ampersand, braceleft ]};
+ key <AE08> { [ 8, asterisk, braceright ]};
+ key <AE09> { [ 9, parenleft, bracketleft ]};
+ key <AE10> { [ 0, parenright, bracketright ]};
+ key <AE11> { [ minus, underscore, onehalf ]};
+ key <AE12> { [ equal, plus, notsign ]};
+
+ key <AD03> { [ e, E, EuroSign ]};
+ key <AD09> { [ o, O, section ]};
+ key <AD10> { [ p, P, paragraph ]};
+ key <AD11> { [ dead_circumflex, dead_diaeresis, dead_grave ]};
+ key <AD12> { [ ccedilla, Ccedilla, asciitilde ]};
+
+ key <AC10> { [ semicolon, colon, degree ]};
+ key <AC11> { [ egrave, Egrave, braceleft ]};
+ key <AC12> { [ agrave, Agrave, braceright ]};
+ key <BKSL> { [ agrave, Agrave, braceright ]};
+
+ key <LSGT> { [ uacute, Uacute ]};
+ key <AB01> { [ z, Z, guillemotleft ]};
+ key <AB02> { [ x, X, guillemotright ]};
+ key <AB07> { [ m, M, mu ]};
+ key <AB08> { [ comma, quoteright, less ]};
+ key <AB09> { [ period, quotedbl, greater ]};
+ key <AB10> { [ eacute, Eacute, quoteleft ]};
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/ca(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ch b/xorg-server/xkeyboard-config/symbols/sun_vndr/ch
index 82c0681cc..8a41ea303 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ch
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ch
@@ -1,133 +1,133 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial default alphanumeric_keys
-xkb_symbols "de_type6" {
-
- name[Group1]= "Switzerland - German";
-
- key <TLDE> { [ section, degree ] };
- key <AE01> { [ 1, plus, bar ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, asterisk, numbersign ] };
- key <AE04> { [ 4, ccedilla, asciicircum ] };
- key <AE05> { [ 5, percent, asciitilde ] };
- key <AE06> { [ 6, ampersand, notsign ] };
- key <AE07> { [ 7, slash, brokenbar ] };
- key <AE08> { [ 8, parenleft, cent ] };
- key <AE09> { [ 9, parenright ] };
- key <AE10> { [ 0, equal, quoteleft ] };
- key <AE11> { [ quoteright, question, dead_acute ] };
- key <AE12> { [ dead_circumflex, dead_grave, dead_tilde ] };
-
- key <AD03> { [ e, E, EuroSign ] };
- key <AD06> { [ z, Z ] };
- key <AD11> { [ udiaeresis, egrave, bracketleft ] };
- key <AD12> { [ dead_diaeresis, exclam, bracketright ] };
-
- key <AC10> { [ odiaeresis, eacute ] };
- key <AC11> { [ adiaeresis, agrave, braceleft ] };
- key <BKSL> { [ dollar, sterling, braceright ] };
-
- key <LSGT> { [ less, greater, backslash ] };
- key <AB01> { [ y, Y ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-
-partial alphanumeric_keys
-xkb_symbols "fr_type6" {
-
- name[Group1]= "Switzerland - French, Sun type 6";
-
- key <TLDE> { [ section, degree ] };
- key <AE01> { [ 1, plus, bar ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, asterisk, numbersign ] };
- key <AE04> { [ 4, ccedilla, asciicircum ] };
- key <AE05> { [ 5, percent, asciitilde ] };
- key <AE06> { [ 6, ampersand, notsign ] };
- key <AE07> { [ 7, slash, brokenbar ] };
- key <AE08> { [ 8, parenleft, cent ] };
- key <AE09> { [ 9, parenright ] };
- key <AE10> { [ 0, equal, quoteleft ] };
- key <AE11> { [ quoteright, question, dead_acute ] };
- key <AE12> { [ dead_circumflex, dead_grave, dead_tilde ] };
-
- key <AD03> { [ e, E, EuroSign ] };
- key <AD06> { [ z, Z ] };
- key <AD11> { [ egrave, udiaeresis, bracketleft ] };
- key <AD12> { [ dead_diaeresis, exclam, bracketright ] };
-
- key <AC10> { [ eacute, odiaeresis ] };
- key <AC11> { [ agrave, adiaeresis, braceleft ] };
- key <BKSL> { [ dollar, sterling, braceright ] };
-
- key <LSGT> { [ less, greater, backslash ] };
- key <AB01> { [ y, Y ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/ch(de_type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial default alphanumeric_keys
+xkb_symbols "de_type6" {
+
+ name[Group1]= "Switzerland - German";
+
+ key <TLDE> { [ section, degree ] };
+ key <AE01> { [ 1, plus, bar ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, asterisk, numbersign ] };
+ key <AE04> { [ 4, ccedilla, asciicircum ] };
+ key <AE05> { [ 5, percent, asciitilde ] };
+ key <AE06> { [ 6, ampersand, notsign ] };
+ key <AE07> { [ 7, slash, brokenbar ] };
+ key <AE08> { [ 8, parenleft, cent ] };
+ key <AE09> { [ 9, parenright ] };
+ key <AE10> { [ 0, equal, quoteleft ] };
+ key <AE11> { [ quoteright, question, dead_acute ] };
+ key <AE12> { [ dead_circumflex, dead_grave, dead_tilde ] };
+
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD06> { [ z, Z ] };
+ key <AD11> { [ udiaeresis, egrave, bracketleft ] };
+ key <AD12> { [ dead_diaeresis, exclam, bracketright ] };
+
+ key <AC10> { [ odiaeresis, eacute ] };
+ key <AC11> { [ adiaeresis, agrave, braceleft ] };
+ key <BKSL> { [ dollar, sterling, braceright ] };
+
+ key <LSGT> { [ less, greater, backslash ] };
+ key <AB01> { [ y, Y ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "fr_type6" {
+
+ name[Group1]= "Switzerland - French, Sun type 6";
+
+ key <TLDE> { [ section, degree ] };
+ key <AE01> { [ 1, plus, bar ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, asterisk, numbersign ] };
+ key <AE04> { [ 4, ccedilla, asciicircum ] };
+ key <AE05> { [ 5, percent, asciitilde ] };
+ key <AE06> { [ 6, ampersand, notsign ] };
+ key <AE07> { [ 7, slash, brokenbar ] };
+ key <AE08> { [ 8, parenleft, cent ] };
+ key <AE09> { [ 9, parenright ] };
+ key <AE10> { [ 0, equal, quoteleft ] };
+ key <AE11> { [ quoteright, question, dead_acute ] };
+ key <AE12> { [ dead_circumflex, dead_grave, dead_tilde ] };
+
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD06> { [ z, Z ] };
+ key <AD11> { [ egrave, udiaeresis, bracketleft ] };
+ key <AD12> { [ dead_diaeresis, exclam, bracketright ] };
+
+ key <AC10> { [ eacute, odiaeresis ] };
+ key <AC11> { [ agrave, adiaeresis, braceleft ] };
+ key <BKSL> { [ dollar, sterling, braceright ] };
+
+ key <LSGT> { [ less, greater, backslash ] };
+ key <AB01> { [ y, Y ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/ch(de_type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/cz b/xorg-server/xkeyboard-config/symbols/sun_vndr/cz
index 55859db9a..b46f01c2b 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/cz
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/cz
@@ -1,105 +1,105 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Czech";
-
- key <TLDE> { [ semicolon, dead_abovering, quoteleft, asciitilde ] };
- key <AE01> { [ plus, 1, exclam, asciitilde ] };
- key <AE02> { [ ecaron, 2, at, dead_caron ] };
- key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
- key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
- key <AE05> { [ rcaron, 5, percent, dead_abovering ] };
- key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
- key <AE07> { [ yacute, 7, ampersand, grave ] };
- key <AE08> { [ aacute, 8, asterisk, dead_abovedot ] };
- key <AE09> { [ iacute, 9, parenleft, dead_acute ] };
- key <AE10> { [ eacute, 0, parenright, dead_doubleacute ] };
- key <AE11> { [ equal, percent, dead_diaeresis, backslash ] };
- key <AE12> { [ dead_acute, dead_caron, dead_cedilla, minus ] };
-
- key <AD01> { [ q, Q, backslash ] };
- key <AD02> { [ w, W, bar ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD06> { [ z, Z ] };
- key <AD11> { [ uacute, slash, division ] };
- key <AD12> { [parenright, parenleft, multiply ] };
-
- key <AC02> { [ s, S, dstroke ] };
- key <AC03> { [ d, D, Dstroke ] };
- key <AC04> { [ f, F, bracketleft ] };
- key <AC05> { [ g, G, bracketright ] };
- key <AC08> { [ k, K, lstroke ] };
- key <AC09> { [ l, L, Lstroke ] };
- key <AC10> { [ uring, quotedbl, dollar ] };
- key <AC11> { [ section, exclam, ssharp, currency ] };
- key <BKSL> { [ dead_diaeresis, apostrophe, backslash, bar ] };
-
- key <LSGT> { [ backslash, asterisk, slash, brokenbar ] };
- key <AB01> { [ y, Y, less ] };
- key <AB02> { [ x, X, greater, numbersign ] };
- key <AB04> { [ v, V, at ] };
- key <AB05> { [ b, B, braceleft ] };
- key <AB06> { [ n, N, braceright ] };
- key <AB08> { [ comma, question, less ] };
- key <AB09> { [ period, colon, greater ] };
- key <AB10> { [ minus, underscore ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/cz(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Czech";
+
+ key <TLDE> { [ semicolon, dead_abovering, quoteleft, asciitilde ] };
+ key <AE01> { [ plus, 1, exclam, asciitilde ] };
+ key <AE02> { [ ecaron, 2, at, dead_caron ] };
+ key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
+ key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
+ key <AE05> { [ rcaron, 5, percent, dead_abovering ] };
+ key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
+ key <AE07> { [ yacute, 7, ampersand, grave ] };
+ key <AE08> { [ aacute, 8, asterisk, dead_abovedot ] };
+ key <AE09> { [ iacute, 9, parenleft, dead_acute ] };
+ key <AE10> { [ eacute, 0, parenright, dead_doubleacute ] };
+ key <AE11> { [ equal, percent, dead_diaeresis, backslash ] };
+ key <AE12> { [ dead_acute, dead_caron, dead_cedilla, minus ] };
+
+ key <AD01> { [ q, Q, backslash ] };
+ key <AD02> { [ w, W, bar ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD06> { [ z, Z ] };
+ key <AD11> { [ uacute, slash, division ] };
+ key <AD12> { [parenright, parenleft, multiply ] };
+
+ key <AC02> { [ s, S, dstroke ] };
+ key <AC03> { [ d, D, Dstroke ] };
+ key <AC04> { [ f, F, bracketleft ] };
+ key <AC05> { [ g, G, bracketright ] };
+ key <AC08> { [ k, K, lstroke ] };
+ key <AC09> { [ l, L, Lstroke ] };
+ key <AC10> { [ uring, quotedbl, dollar ] };
+ key <AC11> { [ section, exclam, ssharp, currency ] };
+ key <BKSL> { [ dead_diaeresis, apostrophe, backslash, bar ] };
+
+ key <LSGT> { [ backslash, asterisk, slash, brokenbar ] };
+ key <AB01> { [ y, Y, less ] };
+ key <AB02> { [ x, X, greater, numbersign ] };
+ key <AB04> { [ v, V, at ] };
+ key <AB05> { [ b, B, braceleft ] };
+ key <AB06> { [ n, N, braceright ] };
+ key <AB08> { [ comma, question, less ] };
+ key <AB09> { [ period, colon, greater ] };
+ key <AB10> { [ minus, underscore ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/cz(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/de b/xorg-server/xkeyboard-config/symbols/sun_vndr/de
index 2c46ea941..5177b989a 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/de
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/de
@@ -1,140 +1,140 @@
-//
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Germany";
-
- key <TLDE> { [ asciicircum, degree ] };
- key <AE02> { [ 2, quotedbl, twosuperior ] };
- key <AE03> { [ 3, section, threesuperior ] };
- key <AE04> { [ 4, dollar ] };
- key <AE06> { [ 6, ampersand, section ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
- key <AE11> { [ ssharp, question, backslash ] };
- key <AE12> { [ dead_acute, dead_grave ] };
- key <AD01> { [ q, Q, at ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD06> { [ z, Z ] };
- key <AD11> { [ udiaeresis, Udiaeresis ] };
- key <AD12> { [ plus, asterisk, asciitilde ] };
- key <AC10> { [ odiaeresis, Odiaeresis ] };
- key <AC11> { [ adiaeresis, Adiaeresis ] };
- key <AB01> { [ y, Y ] };
- key <AB07> { [ m, M, mu ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <BKSL> { [ numbersign, apostrophe, grave ] };
- key <LSGT> { [ less, greater, bar ] };
-
- include "level3(ralt_switch)"
- include "kpdl(comma)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "type4" {
-
- name[Group1]="Germany - Sun type 4";
-
- key <BKSL> { [ less, braceleft ] };
- key <BRCR> { [ greater, braceright ] };
- key <DELE> { [ Delete ] };
-
- key <AE01> { [ 1, plus, exclam ] };
- key <AE02> { [ 2, quotedbl, at, oneeighth ] };
- key <AE03> { [ 3, asterisk, numbersign, sterling ] };
- key <AE04> { [ 4, ccedilla, cent ] };
- key <AE05> { [ 5, percent, asciitilde ] };
- key <AE06> { [ 6, ampersand, section ] };
- key <AE07> { [ 7, slash, bar ] };
- key <AE08> { [ 8, parenleft, degree ] };
- key <AE09> { [ 9, parenright, backslash ] };
- key <AE10> { [ 0, equal, asciicircum ] };
- Key <AE11> { [ quoteright, question, quoteleft ] };
- key <AE12> { [ dead_circumflex, dead_grave ] };
-
- key <AD03> { [ e, E, EuroSign, EuroSign ] };
- key <AD06> { [ z, Z, leftarrow, yen ] };
- key <AD11> { [ udiaeresis, egrave, dead_diaeresis, dead_abovering ] };
- key <AD12> { [ dead_diaeresis, dead_acute ] };
-
- key <AC02> { [ s, S ] };
- key <AC07> { [ j, J, dead_belowdot, dead_abovedot ] };
- key <AC10> { [ odiaeresis, eacute, dead_doubleacute, dead_belowdot ] };
- key <AC11> { [ adiaeresis, agrave, dead_circumflex, dead_caron ] };
- key <TLDE> { [ dollar, dead_tilde, sterling ] };
-
- key <AB01> { [ y, Y, guillemotright ] };
- key <AB02> { [ x, X, guillemotleft ] };
- key <AB04> { [ v, V, doublelowquotemark, singlelowquotemark ] };
- key <AB05> { [ b, B, leftdoublequotemark, leftsinglequotemark ] };
- key <AB06> { [ n, N, rightdoublequotemark, rightsinglequotemark ] };
- key <AB07> { [ m, M, mu ] };
- key <AB08> { [ comma, semicolon, periodcentered, multiply ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-
- include "level3(ralt_switch)"
- include "kpdl(comma)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/de(type6)"
-};
+//
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Germany";
+
+ key <TLDE> { [ asciicircum, degree ] };
+ key <AE02> { [ 2, quotedbl, twosuperior ] };
+ key <AE03> { [ 3, section, threesuperior ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE06> { [ 6, ampersand, section ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ ssharp, question, backslash ] };
+ key <AE12> { [ dead_acute, dead_grave ] };
+ key <AD01> { [ q, Q, at ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD06> { [ z, Z ] };
+ key <AD11> { [ udiaeresis, Udiaeresis ] };
+ key <AD12> { [ plus, asterisk, asciitilde ] };
+ key <AC10> { [ odiaeresis, Odiaeresis ] };
+ key <AC11> { [ adiaeresis, Adiaeresis ] };
+ key <AB01> { [ y, Y ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <BKSL> { [ numbersign, apostrophe, grave ] };
+ key <LSGT> { [ less, greater, bar ] };
+
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "type4" {
+
+ name[Group1]="Germany - Sun type 4";
+
+ key <BKSL> { [ less, braceleft ] };
+ key <BRCR> { [ greater, braceright ] };
+ key <DELE> { [ Delete ] };
+
+ key <AE01> { [ 1, plus, exclam ] };
+ key <AE02> { [ 2, quotedbl, at, oneeighth ] };
+ key <AE03> { [ 3, asterisk, numbersign, sterling ] };
+ key <AE04> { [ 4, ccedilla, cent ] };
+ key <AE05> { [ 5, percent, asciitilde ] };
+ key <AE06> { [ 6, ampersand, section ] };
+ key <AE07> { [ 7, slash, bar ] };
+ key <AE08> { [ 8, parenleft, degree ] };
+ key <AE09> { [ 9, parenright, backslash ] };
+ key <AE10> { [ 0, equal, asciicircum ] };
+ Key <AE11> { [ quoteright, question, quoteleft ] };
+ key <AE12> { [ dead_circumflex, dead_grave ] };
+
+ key <AD03> { [ e, E, EuroSign, EuroSign ] };
+ key <AD06> { [ z, Z, leftarrow, yen ] };
+ key <AD11> { [ udiaeresis, egrave, dead_diaeresis, dead_abovering ] };
+ key <AD12> { [ dead_diaeresis, dead_acute ] };
+
+ key <AC02> { [ s, S ] };
+ key <AC07> { [ j, J, dead_belowdot, dead_abovedot ] };
+ key <AC10> { [ odiaeresis, eacute, dead_doubleacute, dead_belowdot ] };
+ key <AC11> { [ adiaeresis, agrave, dead_circumflex, dead_caron ] };
+ key <TLDE> { [ dollar, dead_tilde, sterling ] };
+
+ key <AB01> { [ y, Y, guillemotright ] };
+ key <AB02> { [ x, X, guillemotleft ] };
+ key <AB04> { [ v, V, doublelowquotemark, singlelowquotemark ] };
+ key <AB05> { [ b, B, leftdoublequotemark, leftsinglequotemark ] };
+ key <AB06> { [ n, N, rightdoublequotemark, rightsinglequotemark ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB08> { [ comma, semicolon, periodcentered, multiply ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/de(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/dk b/xorg-server/xkeyboard-config/symbols/sun_vndr/dk
index 0cc81153d..e5db30e7f 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/dk
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/dk
@@ -1,147 +1,147 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Denmark";
-
- key <TLDE> { [ onehalf, section ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, numbersign, sterling ] };
- key <AE04> { [ 4, currency, dollar ] };
- key <AE05> { [ 5, percent, asciitilde ] };
- key <AE06> { [ 6, ampersand, asciicircum ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
- key <AE11> { [ plus, question ] };
- key <AE12> { [ dead_acute, dead_grave, bar ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD11> { [ aring, Aring ] };
- key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde ] };
- key <BKSL> { [ apostrophe, asterisk, grave ] };
- key <AC10> { [ ae, AE ] };
- key <AC11> { [ oslash, Ooblique ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <LSGT> { [ less, greater, backslash ] };
-
- include "level3(ralt_switch)"
- include "kpdl(comma)"
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "type4" {
-
- name[Group1]="Denmark - Sun type 4";
-
- key <BKSL> { [ onehalf, section ] };
- key <BRCR> { [ asciitilde, asciicircum ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, numbersign, sterling ] };
- key <AE04> { [ 4, currency, dollar ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
- key <AE11> { [ plus, question ] };
- key <AE12> { [ dead_acute, dead_grave, bar ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD11> { [ aring, Aring ] };
- key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde ] };
- key <LCTL> { [ Caps_Lock ] };
- key <AC10> { [ ae, AE ] };
- key <AC11> { [ ooblique, Ooblique ] };
- key <TLDE> { [ quoteright, asterisk, quoteleft ] };
- key <LSGT> { [ less, greater, backslash ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <CAPS> { [ Control_L ] };
- key <COMP> { [ SunAltGraph ] };
- key <ALGR> { [ SunCompose ] };
-
- include "level3(ralt_switch)"
- include "kpdl(comma)"
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "type5" {
-
- include "sun_vndr/dk(type4)"
-
- name[Group1]="Denmark - Sun type 5";
-
- key <AE05> { [ 5, percent, asciitilde ] };
- key <AE06> { [ 6, ampersand, asciicircum ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
- key <BKSL> { [ quoteright, asterisk, quoteleft ] };
-
- include "level3(ralt_switch)"
- include "kpdl(comma)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/dk(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Denmark";
+
+ key <TLDE> { [ onehalf, section ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, numbersign, sterling ] };
+ key <AE04> { [ 4, currency, dollar ] };
+ key <AE05> { [ 5, percent, asciitilde ] };
+ key <AE06> { [ 6, ampersand, asciicircum ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ plus, question ] };
+ key <AE12> { [ dead_acute, dead_grave, bar ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde ] };
+ key <BKSL> { [ apostrophe, asterisk, grave ] };
+ key <AC10> { [ ae, AE ] };
+ key <AC11> { [ oslash, Ooblique ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <LSGT> { [ less, greater, backslash ] };
+
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "type4" {
+
+ name[Group1]="Denmark - Sun type 4";
+
+ key <BKSL> { [ onehalf, section ] };
+ key <BRCR> { [ asciitilde, asciicircum ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, numbersign, sterling ] };
+ key <AE04> { [ 4, currency, dollar ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ plus, question ] };
+ key <AE12> { [ dead_acute, dead_grave, bar ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde ] };
+ key <LCTL> { [ Caps_Lock ] };
+ key <AC10> { [ ae, AE ] };
+ key <AC11> { [ ooblique, Ooblique ] };
+ key <TLDE> { [ quoteright, asterisk, quoteleft ] };
+ key <LSGT> { [ less, greater, backslash ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <CAPS> { [ Control_L ] };
+ key <COMP> { [ SunAltGraph ] };
+ key <ALGR> { [ SunCompose ] };
+
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "type5" {
+
+ include "sun_vndr/dk(type4)"
+
+ name[Group1]="Denmark - Sun type 5";
+
+ key <AE05> { [ 5, percent, asciitilde ] };
+ key <AE06> { [ 6, ampersand, asciicircum ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <BKSL> { [ quoteright, asterisk, quoteleft ] };
+
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/dk(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ee b/xorg-server/xkeyboard-config/symbols/sun_vndr/ee
index 914a80dde..0530f9e2f 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ee
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ee
@@ -1,117 +1,117 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Estonia";
-
-
- key <TLDE> { [ dead_caron, dead_tilde, notsign, notsign ] };
- key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
- key <AE02> { [ 2, quotedbl, at, oneeighth ] };
- key <AE03> { [ 3, numbersign, sterling, sterling ] };
- key <AE04> { [ 4, currency, dollar, dollar ] };
- key <AE05> { [ 5, percent, onehalf, threeeighths ] };
- key <AE06> { [ 6, ampersand, notsign, fiveeighths ] };
- key <AE07> { [ 7, slash, braceleft, seveneighths ] };
- key <AE08> { [ 8, parenleft, bracketleft, trademark ] };
- key <AE09> { [ 9, parenright, bracketright, plusminus ] };
- key <AE10> { [ 0, equal, braceright, degree ] };
- key <AE11> { [ plus, question, backslash, questiondown ] };
- key <AE12> { [ dead_acute, dead_grave, grave, apostrophe ] };
-
- key <AD01> { [ q, Q, at, Greek_OMEGA ] };
- key <AD02> { [ w, W, lstroke, Lstroke ] };
- key <AD03> { [ e, E, EuroSign, cent ] };
- key <AD04> { [ r, R, paragraph, registered ] };
- key <AD05> { [ t, T, tslash, Tslash ] };
- key <AD06> { [ y, Y, leftarrow, yen ] };
- key <AD07> { [ u, U, downarrow, uparrow ] };
- key <AD08> { [ i, I, rightarrow, idotless ] };
- key <AD09> { [ o, O, oslash, Ooblique ] };
- key <AD10> { [ p, P, thorn, THORN ] };
- key <AD11> { [ udiaeresis, Udiaeresis, dead_diaeresis,dead_abovering ] };
- key <AD12> { [ otilde, Otilde, section, dead_macron ] };
-
- key <AC01> { [ a, A, ae, AE ] };
- key <AC02> { [ s, S, ssharp, section ] };
- key <AC03> { [ d, D, eth, ETH ] };
- key <AC04> { [ f, F, dstroke, ordfeminine ] };
- key <AC05> { [ g, G, eng, ENG ] };
- key <AC06> { [ h, H, hstroke, Hstroke ] };
- key <AC07> { [ j, J, j, J ] };
- key <AC08> { [ k, K, kra, ampersand ] };
- key <AC09> { [ l, L, lstroke, Lstroke ] };
- key <AC10> { [ odiaeresis, Odiaeresis, dead_acute, dead_doubleacute ] };
- key <AC11> { [ adiaeresis, Adiaeresis, asciicircum, dead_caron ] };
- key <LSGT> { [ backslash, bar, degree, brokenbar ] };
-
- key <BKSL> { [ apostrophe, asterisk, onehalf, dead_breve ] };
- key <AB01> { [ z, Z, zcaron, Zcaron ] };
- key <AB02> { [ x, X, guillemotright, greater ] };
- key <AB03> { [ c, C, cent, copyright ] };
- key <AB04> { [ v, V, leftdoublequotemark, leftsinglequotemark ] };
- key <AB05> { [ b, B, rightdoublequotemark, rightsinglequotemark ] };
- key <AB06> { [ n, N, ncedilla, Ncedilla ] };
- key <AB07> { [ m, M, mu, masculine ] };
- key <AB08> { [ comma, semicolon, less, multiply ] };
- key <AB09> { [ period, colon, greater, division ] };
- key <AB10> { [ minus, underscore, dead_belowdot, dead_abovedot ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/ee(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Estonia";
+
+
+ key <TLDE> { [ dead_caron, dead_tilde, notsign, notsign ] };
+ key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
+ key <AE02> { [ 2, quotedbl, at, oneeighth ] };
+ key <AE03> { [ 3, numbersign, sterling, sterling ] };
+ key <AE04> { [ 4, currency, dollar, dollar ] };
+ key <AE05> { [ 5, percent, onehalf, threeeighths ] };
+ key <AE06> { [ 6, ampersand, notsign, fiveeighths ] };
+ key <AE07> { [ 7, slash, braceleft, seveneighths ] };
+ key <AE08> { [ 8, parenleft, bracketleft, trademark ] };
+ key <AE09> { [ 9, parenright, bracketright, plusminus ] };
+ key <AE10> { [ 0, equal, braceright, degree ] };
+ key <AE11> { [ plus, question, backslash, questiondown ] };
+ key <AE12> { [ dead_acute, dead_grave, grave, apostrophe ] };
+
+ key <AD01> { [ q, Q, at, Greek_OMEGA ] };
+ key <AD02> { [ w, W, lstroke, Lstroke ] };
+ key <AD03> { [ e, E, EuroSign, cent ] };
+ key <AD04> { [ r, R, paragraph, registered ] };
+ key <AD05> { [ t, T, tslash, Tslash ] };
+ key <AD06> { [ y, Y, leftarrow, yen ] };
+ key <AD07> { [ u, U, downarrow, uparrow ] };
+ key <AD08> { [ i, I, rightarrow, idotless ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD10> { [ p, P, thorn, THORN ] };
+ key <AD11> { [ udiaeresis, Udiaeresis, dead_diaeresis,dead_abovering ] };
+ key <AD12> { [ otilde, Otilde, section, dead_macron ] };
+
+ key <AC01> { [ a, A, ae, AE ] };
+ key <AC02> { [ s, S, ssharp, section ] };
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, dstroke, ordfeminine ] };
+ key <AC05> { [ g, G, eng, ENG ] };
+ key <AC06> { [ h, H, hstroke, Hstroke ] };
+ key <AC07> { [ j, J, j, J ] };
+ key <AC08> { [ k, K, kra, ampersand ] };
+ key <AC09> { [ l, L, lstroke, Lstroke ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, dead_acute, dead_doubleacute ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, asciicircum, dead_caron ] };
+ key <LSGT> { [ backslash, bar, degree, brokenbar ] };
+
+ key <BKSL> { [ apostrophe, asterisk, onehalf, dead_breve ] };
+ key <AB01> { [ z, Z, zcaron, Zcaron ] };
+ key <AB02> { [ x, X, guillemotright, greater ] };
+ key <AB03> { [ c, C, cent, copyright ] };
+ key <AB04> { [ v, V, leftdoublequotemark, leftsinglequotemark ] };
+ key <AB05> { [ b, B, rightdoublequotemark, rightsinglequotemark ] };
+ key <AB06> { [ n, N, ncedilla, Ncedilla ] };
+ key <AB07> { [ m, M, mu, masculine ] };
+ key <AB08> { [ comma, semicolon, less, multiply ] };
+ key <AB09> { [ period, colon, greater, division ] };
+ key <AB10> { [ minus, underscore, dead_belowdot, dead_abovedot ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/ee(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/es b/xorg-server/xkeyboard-config/symbols/sun_vndr/es
index 9cb25f382..6d28bc541 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/es
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/es
@@ -1,145 +1,145 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Spain";
-
- key <TLDE> { [ masculine, ordfeminine, backslash ] };
- key <LSGT> { [ less, greater ] };
- key <AE01> { [ 1, exclam, bar ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, periodcentered, numbersign ] };
- key <AE04> { [ 4, dollar, asciicircum ] };
- key <AE05> { [ 5, percent, asciitilde ] };
- key <AE06> { [ 6, ampersand, notsign ] };
- key <AE07> { [ 7, slash ] };
- key <AE08> { [ 8, parenleft ] };
- key <AE09> { [ 9, parenright ] };
- key <AE10> { [ 0, equal ] };
- key <AE11> { [ apostrophe, question, grave ] };
- key <AE12> { [ exclamdown, questiondown ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD11> { [ dead_grave, dead_circumflex, bracketleft ] };
- key <AD12> { [ plus, asterisk, bracketright ] };
- key <AC10> { [ ntilde, Ntilde ] };
- key <AC11> { [ dead_acute, dead_diaeresis, braceleft ] };
- key <BKSL> { [ ccedilla, Ccedilla, braceright ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "type4" {
-
- name[Group1]="Spain - Sun type 4";
-
- key <BKSL> { [ bracketleft, braceleft, guillemotleft ] };
- key <BRCR> { [ bracketright, braceright, guillemotright ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, periodcentered, numbersign ] };
- key <AE05> { [ 5, percent, degree ] };
- key <AE06> { [ 6, ampersand, notsign ] };
- key <AE07> { [ 7, slash ] };
- key <AE08> { [ 8, parenleft ] };
- key <AE09> { [ 9, parenright, backslash ] };
- key <AE10> { [ 0, equal, bar ] };
- key <AE11> { [ quoteright, question, quoteleft ] };
- key <AE12> { [ exclamdown, questiondown ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD09> { [ o, O, masculine ] };
- key <AD11> { [ dead_grave, dead_circumflex, asciicircum ] };
- key <AD12> { [ plus, asterisk, asciitilde ] };
- key <AC01> { [ a, A, ordfeminine ] };
- key <AC10> { [ ntilde, Ntilde ] };
- key <AC11> { [ dead_acute, dead_diaeresis ] };
- key <TLDE> { [ ccedilla, Ccedilla ] };
- key <RALT> { [ Alt_R ] };
- key <LCTL> { [ Caps_Lock ] };
- key <CAPS> { [ Control_L ] };
- key <LSGT> { [ less, greater ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "type5" {
- include "sun_vndr/es(type4)"
-
- name[Group1]="Spain - Sun type 5";
-
- key <AE03> { [ 3, periodcentered, numbersign ] };
- key <AE04> { [ 4, dollar, asciicircum ] };
- key <AE05> { [ 5, percent, asciitilde ] };
- key <AE07> { [ 7, slash, braceleft ]};
- key <AE08> { [ 8, parenleft, bracketleft ]};
- key <AE09> { [ 9, parenright, bracketright ]};
- key <AE10> { [ 0, equal, braceright ]};
- key <AE11> { [ quoteright, question, quoteleft ] };
- key <AD11> { [ dead_grave, dead_circumflex, bracketleft ] };
- key <AD12> { [ dead_acute, dead_diaeresis, braceleft ] };
-
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/es(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Spain";
+
+ key <TLDE> { [ masculine, ordfeminine, backslash ] };
+ key <LSGT> { [ less, greater ] };
+ key <AE01> { [ 1, exclam, bar ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, periodcentered, numbersign ] };
+ key <AE04> { [ 4, dollar, asciicircum ] };
+ key <AE05> { [ 5, percent, asciitilde ] };
+ key <AE06> { [ 6, ampersand, notsign ] };
+ key <AE07> { [ 7, slash ] };
+ key <AE08> { [ 8, parenleft ] };
+ key <AE09> { [ 9, parenright ] };
+ key <AE10> { [ 0, equal ] };
+ key <AE11> { [ apostrophe, question, grave ] };
+ key <AE12> { [ exclamdown, questiondown ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD11> { [ dead_grave, dead_circumflex, bracketleft ] };
+ key <AD12> { [ plus, asterisk, bracketright ] };
+ key <AC10> { [ ntilde, Ntilde ] };
+ key <AC11> { [ dead_acute, dead_diaeresis, braceleft ] };
+ key <BKSL> { [ ccedilla, Ccedilla, braceright ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "type4" {
+
+ name[Group1]="Spain - Sun type 4";
+
+ key <BKSL> { [ bracketleft, braceleft, guillemotleft ] };
+ key <BRCR> { [ bracketright, braceright, guillemotright ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, periodcentered, numbersign ] };
+ key <AE05> { [ 5, percent, degree ] };
+ key <AE06> { [ 6, ampersand, notsign ] };
+ key <AE07> { [ 7, slash ] };
+ key <AE08> { [ 8, parenleft ] };
+ key <AE09> { [ 9, parenright, backslash ] };
+ key <AE10> { [ 0, equal, bar ] };
+ key <AE11> { [ quoteright, question, quoteleft ] };
+ key <AE12> { [ exclamdown, questiondown ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD09> { [ o, O, masculine ] };
+ key <AD11> { [ dead_grave, dead_circumflex, asciicircum ] };
+ key <AD12> { [ plus, asterisk, asciitilde ] };
+ key <AC01> { [ a, A, ordfeminine ] };
+ key <AC10> { [ ntilde, Ntilde ] };
+ key <AC11> { [ dead_acute, dead_diaeresis ] };
+ key <TLDE> { [ ccedilla, Ccedilla ] };
+ key <RALT> { [ Alt_R ] };
+ key <LCTL> { [ Caps_Lock ] };
+ key <CAPS> { [ Control_L ] };
+ key <LSGT> { [ less, greater ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "type5" {
+ include "sun_vndr/es(type4)"
+
+ name[Group1]="Spain - Sun type 5";
+
+ key <AE03> { [ 3, periodcentered, numbersign ] };
+ key <AE04> { [ 4, dollar, asciicircum ] };
+ key <AE05> { [ 5, percent, asciitilde ] };
+ key <AE07> { [ 7, slash, braceleft ]};
+ key <AE08> { [ 8, parenleft, bracketleft ]};
+ key <AE09> { [ 9, parenright, bracketright ]};
+ key <AE10> { [ 0, equal, braceright ]};
+ key <AE11> { [ quoteright, question, quoteleft ] };
+ key <AD11> { [ dead_grave, dead_circumflex, bracketleft ] };
+ key <AD12> { [ dead_acute, dead_diaeresis, braceleft ] };
+
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/es(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/fi b/xorg-server/xkeyboard-config/symbols/sun_vndr/fi
index a2f8cd8f4..eaa19e848 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/fi
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/fi
@@ -1,89 +1,89 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Finland";
-
- key <TLDE> { [ section, onehalf ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, numbersign, sterling ] };
- key <AE04> { [ 4, currency, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
- key <AE11> { [ plus, question, backslash ] };
- key <AE12> { [ dead_acute, dead_grave ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD11> { [ aring, Aring ] };
- key <AD12> { [ dead_diaeresis, asciicircum, asciitilde ] };
- key <AC10> { [ odiaeresis, Odiaeresis ] };
- key <AC11> { [ adiaeresis, Adiaeresis ] };
- key <BKSL> { [ apostrophe, asterisk, quoteleft ] };
- key <LSGT> { [ less, greater, bar ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-
- include "level3(ralt_switch)"
- include "kpdl(comma)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/fi(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Finland";
+
+ key <TLDE> { [ section, onehalf ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, numbersign, sterling ] };
+ key <AE04> { [ 4, currency, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ plus, question, backslash ] };
+ key <AE12> { [ dead_acute, dead_grave ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AD12> { [ dead_diaeresis, asciicircum, asciitilde ] };
+ key <AC10> { [ odiaeresis, Odiaeresis ] };
+ key <AC11> { [ adiaeresis, Adiaeresis ] };
+ key <BKSL> { [ apostrophe, asterisk, quoteleft ] };
+ key <LSGT> { [ less, greater, bar ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/fi(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/fr b/xorg-server/xkeyboard-config/symbols/sun_vndr/fr
index e3e6828ef..a3850ba5f 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/fr
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/fr
@@ -1,96 +1,96 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="France";
-
- key <TLDE> { [ twosuperior ] };
- key <AE01> { [ ampersand, 1 ] };
- key <AE02> { [ eacute, 2, asciitilde ] };
- key <AE03> { [ quotedbl, 3, numbersign ] };
- key <AE04> { [ apostrophe, 4, braceleft ] };
- key <AE05> { [ parenleft, 5, bracketleft ] };
- key <AE06> { [ minus, 6, bar ] };
- key <AE07> { [ egrave, 7, grave ] };
- key <AE08> { [ underscore, 8, backslash ] };
- key <AE09> { [ ccedilla, 9, asciicircum ] };
- key <AE10> { [ agrave, 0, at ] };
- key <AE11> { [ parenright, degree, bracketright ] };
- key <AE12> { [ equal, plus, braceright ] };
-
- key <AD01> { [ a, A ] };
- key <AD02> { [ z, Z ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD11> { [ dead_circumflex, dead_diaeresis ] };
- key <AD12> { [ dollar, sterling, currency ] };
-
- key <AC01> { [ q, Q ] };
- key <AC10> { [ m, M ] };
- key <AC11> { [ ugrave, percent ] };
- key <BKSL> { [ asterisk, mu ] };
-
- key <LSGT> { [ less, greater ] };
- key <AB01> { [ w, W ] };
- key <AB07> { [ comma, question ] };
- key <AB08> { [ semicolon, period ] };
- key <AB09> { [ colon, slash ] };
- key <AB10> { [ exclam, section ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/fr(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="France";
+
+ key <TLDE> { [ twosuperior ] };
+ key <AE01> { [ ampersand, 1 ] };
+ key <AE02> { [ eacute, 2, asciitilde ] };
+ key <AE03> { [ quotedbl, 3, numbersign ] };
+ key <AE04> { [ apostrophe, 4, braceleft ] };
+ key <AE05> { [ parenleft, 5, bracketleft ] };
+ key <AE06> { [ minus, 6, bar ] };
+ key <AE07> { [ egrave, 7, grave ] };
+ key <AE08> { [ underscore, 8, backslash ] };
+ key <AE09> { [ ccedilla, 9, asciicircum ] };
+ key <AE10> { [ agrave, 0, at ] };
+ key <AE11> { [ parenright, degree, bracketright ] };
+ key <AE12> { [ equal, plus, braceright ] };
+
+ key <AD01> { [ a, A ] };
+ key <AD02> { [ z, Z ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD11> { [ dead_circumflex, dead_diaeresis ] };
+ key <AD12> { [ dollar, sterling, currency ] };
+
+ key <AC01> { [ q, Q ] };
+ key <AC10> { [ m, M ] };
+ key <AC11> { [ ugrave, percent ] };
+ key <BKSL> { [ asterisk, mu ] };
+
+ key <LSGT> { [ less, greater ] };
+ key <AB01> { [ w, W ] };
+ key <AB07> { [ comma, question ] };
+ key <AB08> { [ semicolon, period ] };
+ key <AB09> { [ colon, slash ] };
+ key <AB10> { [ exclam, section ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/fr(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/gb b/xorg-server/xkeyboard-config/symbols/sun_vndr/gb
index fc775cd98..78287ec06 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/gb
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/gb
@@ -1,102 +1,102 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="United Kingdom";
-
- key <TLDE> { [ quoteleft, notsign, brokenbar ] };
-
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, sterling ] };
- key <AE04> { [ 4, dollar, EuroSign ] };
- key <BKSL> { [ numbersign, asciitilde ] };
- key <AC11> { [ apostrophe, at ] };
- key <LSGT> { [ backslash, bar ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "type5" {
-
- name[Group1]="United Kingdom - Sun type 5";
-
- key <TLDE> { [ quoteleft, notsign, brokenbar ] };
- key <AD03> { [ e, E, EuroSign ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "type4" {
-
- name[Group1]="United Kingdom - Sun type 4";
-
- key <AE01> { [ 1, exclam, brokenbar ] };
- key <AE03> { [ 3, sterling, numbersign ] };
- key <AE04> { [ 4, dollar, EuroSign ] };
- key <AE11> { [ minus, underscore, notsign ] };
- key <AD03> { [ e, E, EuroSign ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/gb(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="United Kingdom";
+
+ key <TLDE> { [ quoteleft, notsign, brokenbar ] };
+
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, sterling ] };
+ key <AE04> { [ 4, dollar, EuroSign ] };
+ key <BKSL> { [ numbersign, asciitilde ] };
+ key <AC11> { [ apostrophe, at ] };
+ key <LSGT> { [ backslash, bar ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "type5" {
+
+ name[Group1]="United Kingdom - Sun type 5";
+
+ key <TLDE> { [ quoteleft, notsign, brokenbar ] };
+ key <AD03> { [ e, E, EuroSign ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "type4" {
+
+ name[Group1]="United Kingdom - Sun type 4";
+
+ key <AE01> { [ 1, exclam, brokenbar ] };
+ key <AE03> { [ 3, sterling, numbersign ] };
+ key <AE04> { [ 4, dollar, EuroSign ] };
+ key <AE11> { [ minus, underscore, notsign ] };
+ key <AD03> { [ e, E, EuroSign ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/gb(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/gr b/xorg-server/xkeyboard-config/symbols/sun_vndr/gr
index c3a83dad0..1f3fac799 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/gr
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/gr
@@ -1,117 +1,117 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Greece";
-
-
- key <TLDE> { [ grave, asciitilde, onehalf ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign, sterling ] };
- key <AE04> { [ 4, dollar, EuroSign ] };
- key <AE05> { [ 5, percent, EuroSign ] };
- key <AE06> { [ 6, asciicircum, notsign ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright, degree ] };
- key <AE11> { [ minus, underscore, plusminus ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD01> { [ semicolon, colon, periodcentered ] };
- key <AD02> { [ Greek_finalsmallsigma, periodcentered, Greek_SIGMA ] };
- key <AD03> { [ Greek_epsilon, Greek_EPSILON, EuroSign ] };
- key <AD04> { [ Greek_rho, Greek_RHO, registered ] };
- key <AD05> { [ Greek_tau, Greek_TAU ] };
- key <AD06> { [ Greek_upsilon, Greek_UPSILON ] };
- key <AD07> { [ Greek_theta, Greek_THETA ] };
- key <AD08> { [ Greek_iota, Greek_IOTA ] };
- key <AD09> { [ Greek_omicron, Greek_OMICRON ] };
- key <AD10> { [ Greek_pi, Greek_PI ] };
- key <AD11> { [ bracketleft, braceleft, guillemotleft ] };
- key <AD12> { [ bracketright, braceright, guillemotright ] };
-
- key <AC01> { [ Greek_alpha, Greek_ALPHA ] };
- key <AC02> { [ Greek_sigma, Greek_SIGMA ] };
- key <AC03> { [ Greek_delta, Greek_DELTA ] };
- key <AC04> { [ Greek_phi, Greek_PHI ] };
- key <AC05> { [ Greek_gamma, Greek_GAMMA ] };
- key <AC06> { [ Greek_eta, Greek_ETA ] };
- key <AC07> { [ Greek_xi, Greek_XI ] };
- key <AC08> { [ Greek_kappa, Greek_KAPPA ] };
- key <AC09> { [ Greek_lamda, Greek_LAMDA ] };
- key <AC10> { [ dead_acute, dead_diaeresis ] };
- key <AC11> { [ apostrophe, quotedbl ] };
- key <BKSL> { [ backslash, bar, brokenbar ] };
-
- key <LSGT> { [ guillemotleft, guillemotright, brokenbar ] };
- key <AB01> { [ Greek_zeta, Greek_ZETA ] };
- key <AB02> { [ Greek_chi, Greek_CHI ] };
- key <AB03> { [ Greek_psi, Greek_PSI, copyright ] };
- key <AB04> { [ Greek_omega, Greek_OMEGA ] };
- key <AB05> { [ Greek_beta, Greek_BETA ] };
- key <AB06> { [ Greek_nu, Greek_NU ] };
- key <AB07> { [ Greek_mu, Greek_MU ] };
- key <AB08> { [ comma, less, guillemotleft ] };
- key <AB09> { [ period, greater, guillemotright ] };
- key <AB10> { [ slash, question ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/gr(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Greece";
+
+
+ key <TLDE> { [ grave, asciitilde, onehalf ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign, sterling ] };
+ key <AE04> { [ 4, dollar, EuroSign ] };
+ key <AE05> { [ 5, percent, EuroSign ] };
+ key <AE06> { [ 6, asciicircum, notsign ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright, degree ] };
+ key <AE11> { [ minus, underscore, plusminus ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD01> { [ semicolon, colon, periodcentered ] };
+ key <AD02> { [ Greek_finalsmallsigma, periodcentered, Greek_SIGMA ] };
+ key <AD03> { [ Greek_epsilon, Greek_EPSILON, EuroSign ] };
+ key <AD04> { [ Greek_rho, Greek_RHO, registered ] };
+ key <AD05> { [ Greek_tau, Greek_TAU ] };
+ key <AD06> { [ Greek_upsilon, Greek_UPSILON ] };
+ key <AD07> { [ Greek_theta, Greek_THETA ] };
+ key <AD08> { [ Greek_iota, Greek_IOTA ] };
+ key <AD09> { [ Greek_omicron, Greek_OMICRON ] };
+ key <AD10> { [ Greek_pi, Greek_PI ] };
+ key <AD11> { [ bracketleft, braceleft, guillemotleft ] };
+ key <AD12> { [ bracketright, braceright, guillemotright ] };
+
+ key <AC01> { [ Greek_alpha, Greek_ALPHA ] };
+ key <AC02> { [ Greek_sigma, Greek_SIGMA ] };
+ key <AC03> { [ Greek_delta, Greek_DELTA ] };
+ key <AC04> { [ Greek_phi, Greek_PHI ] };
+ key <AC05> { [ Greek_gamma, Greek_GAMMA ] };
+ key <AC06> { [ Greek_eta, Greek_ETA ] };
+ key <AC07> { [ Greek_xi, Greek_XI ] };
+ key <AC08> { [ Greek_kappa, Greek_KAPPA ] };
+ key <AC09> { [ Greek_lamda, Greek_LAMDA ] };
+ key <AC10> { [ dead_acute, dead_diaeresis ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+ key <BKSL> { [ backslash, bar, brokenbar ] };
+
+ key <LSGT> { [ guillemotleft, guillemotright, brokenbar ] };
+ key <AB01> { [ Greek_zeta, Greek_ZETA ] };
+ key <AB02> { [ Greek_chi, Greek_CHI ] };
+ key <AB03> { [ Greek_psi, Greek_PSI, copyright ] };
+ key <AB04> { [ Greek_omega, Greek_OMEGA ] };
+ key <AB05> { [ Greek_beta, Greek_BETA ] };
+ key <AB06> { [ Greek_nu, Greek_NU ] };
+ key <AB07> { [ Greek_mu, Greek_MU ] };
+ key <AB08> { [ comma, less, guillemotleft ] };
+ key <AB09> { [ period, greater, guillemotright ] };
+ key <AB10> { [ slash, question ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/gr(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/it b/xorg-server/xkeyboard-config/symbols/sun_vndr/it
index 7149b0996..acd94a2fb 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/it
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/it
@@ -1,140 +1,140 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Italy";
-
- key <LSGT> { [ less, greater ] };
- key <TLDE> { [ backslash, bar ] };
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, sterling ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash ] };
- key <AE08> { [ 8, parenleft, braceleft ] };
- key <AE09> { [ 9, parenright, braceright ] };
- key <AE10> { [ 0, equal ] };
- key <AE11> { [ apostrophe, question, grave ] };
- key <AE12> { [ igrave, asciicircum ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD11> { [ egrave, eacute, bracketleft, dead_abovering ] };
- key <AD12> { [ plus, asterisk, bracketright ] };
- key <BKSL> { [ ugrave, section, asciitilde ] };
- key <AC10> { [ ograve, ccedilla, at ] };
- key <AC11> { [ agrave, degree, numbersign ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "type4" {
-
- name[Group1]="Italy - Sun type 4";
-
- key <BKSL> { [ bracketleft, braceleft, guillemotleft ] };
- key <BRCR> { [ bracketright, braceright, guillemotright ] };
- key <AE02> { [ 2, quotedbl, twosuperior ] };
- key <AE03> { [ 3, sterling, threesuperior ] };
- key <AE06> { [ 6, ampersand, notsign ] };
- key <AE06> { [ 7, slash ] };
- key <AE06> { [ 8, parenleft ] };
- key <AE09> { [ 9, parenright, backslash ] };
- key <AE10> { [ 0, equal, bar ] };
- key <AE11> { [ quoteright, question, quoteleft ] };
- key <AE12> { [ igrave, asciicircum ] };
-
- key <AD11> { [ egrave, eacute ] };
- key <AD12> { [ plus, asterisk, asciitilde ] };
-
- key <AC10> { [ ograve, ccedilla, at ] };
- key <AC11> { [ agrave, degree, numbersign ] };
- key <TLDE> { [ ugrave, section ] };
-
- key <LSGT> { [ less, greater ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-
-
- key <LALT> { [ Alt_L ] };
- key <COMP> { [ SunCompose ] };
- key <RALT> { [ SunAltGraph ] };
- key <LCTL> { [ Caps_Lock ] };
- key <CAPS> { [ Control_L ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "type5" {
-
- name[Group1]="Italy - Sun type 5";
-
- key <AE08> { [ 8, parenleft, braceleft ] };
- key <AE09> { [ 9, parenright, braceright ] };
- key <BKSL> { [ ugrave, section, asciitilde ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/it(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Italy";
+
+ key <LSGT> { [ less, greater ] };
+ key <TLDE> { [ backslash, bar ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, sterling ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash ] };
+ key <AE08> { [ 8, parenleft, braceleft ] };
+ key <AE09> { [ 9, parenright, braceright ] };
+ key <AE10> { [ 0, equal ] };
+ key <AE11> { [ apostrophe, question, grave ] };
+ key <AE12> { [ igrave, asciicircum ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD11> { [ egrave, eacute, bracketleft, dead_abovering ] };
+ key <AD12> { [ plus, asterisk, bracketright ] };
+ key <BKSL> { [ ugrave, section, asciitilde ] };
+ key <AC10> { [ ograve, ccedilla, at ] };
+ key <AC11> { [ agrave, degree, numbersign ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "type4" {
+
+ name[Group1]="Italy - Sun type 4";
+
+ key <BKSL> { [ bracketleft, braceleft, guillemotleft ] };
+ key <BRCR> { [ bracketright, braceright, guillemotright ] };
+ key <AE02> { [ 2, quotedbl, twosuperior ] };
+ key <AE03> { [ 3, sterling, threesuperior ] };
+ key <AE06> { [ 6, ampersand, notsign ] };
+ key <AE06> { [ 7, slash ] };
+ key <AE06> { [ 8, parenleft ] };
+ key <AE09> { [ 9, parenright, backslash ] };
+ key <AE10> { [ 0, equal, bar ] };
+ key <AE11> { [ quoteright, question, quoteleft ] };
+ key <AE12> { [ igrave, asciicircum ] };
+
+ key <AD11> { [ egrave, eacute ] };
+ key <AD12> { [ plus, asterisk, asciitilde ] };
+
+ key <AC10> { [ ograve, ccedilla, at ] };
+ key <AC11> { [ agrave, degree, numbersign ] };
+ key <TLDE> { [ ugrave, section ] };
+
+ key <LSGT> { [ less, greater ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+
+
+ key <LALT> { [ Alt_L ] };
+ key <COMP> { [ SunCompose ] };
+ key <RALT> { [ SunAltGraph ] };
+ key <LCTL> { [ Caps_Lock ] };
+ key <CAPS> { [ Control_L ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "type5" {
+
+ name[Group1]="Italy - Sun type 5";
+
+ key <AE08> { [ 8, parenleft, braceleft ] };
+ key <AE09> { [ 9, parenright, braceright ] };
+ key <BKSL> { [ ugrave, section, asciitilde ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/it(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/jp b/xorg-server/xkeyboard-config/symbols/sun_vndr/jp
index 9b6579e2a..26911494a 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/jp
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/jp
@@ -1,816 +1,816 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-//
-//Copyright 1996, 1998 The Open Group
-//
-//All Rights Reserved.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-// US/ASCII layout for a Type 4 Sun keyboard
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-xkb_symbols "basic" {
- // Alphanumeric section
- key <AE01> { [ 1, exclam ], [ kana_NU ] };
- key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
- key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
- key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
- key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
- key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
- key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
- key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
- key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
- key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
- key <AE11> { [ minus, equal ], [ kana_HO ] };
- key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
- key <BKSP> { [ BackSpace ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ q, Q ], [ kana_TA ] };
- key <AD02> { [ w, W ], [ kana_TE ] };
- key <AD03> { [ e, E ], [ kana_I, kana_i ] };
- key <AD04> { [ r, R ], [ kana_SU ] };
- key <AD05> { [ t, T ], [ kana_KA ] };
- key <AD06> { [ y, Y ], [ kana_N ] };
- key <AD07> { [ u, U ], [ kana_NA ] };
- key <AD08> { [ i, I ], [ kana_NI ] };
- key <AD09> { [ o, O ], [ kana_RA ] };
- key <AD10> { [ p, P ], [ kana_SE ] };
- key <AD11> { [ at, quoteleft ], [ voicedsound ] };
- key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
- key <RTRN> { [ Return ] };
-
- key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ a, A ], [ kana_CHI ] };
- key <AC02> { [ s, S ], [ kana_TO ] };
- key <AC03> { [ d, D ], [ kana_SHI ] };
- key <AC04> { [ f, F ], [ kana_HA ] };
- key <AC05> { [ g, G ], [ kana_KI ] };
- key <AC06> { [ h, H ], [ kana_KU ] };
- key <AC07> { [ j, J ], [ kana_MA ] };
- key <AC08> { [ k, K ], [ kana_NO ] };
- key <AC09> { [ l, L ], [ kana_RI ] };
- key <AC10> { [ semicolon, plus ], [ kana_RE ] };
- key <AC11> { [ colon, asterisk ], [ kana_KE ] };
- key <TLDE> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
-
- key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
- key <AB02> { [ x, X ], [ kana_SA ] };
- key <AB03> { [ c, C ], [ kana_SO ] };
- key <AB04> { [ v, V ], [ kana_HI ] };
- key <AB05> { [ b, B ], [ kana_KO ] };
- key <AB06> { [ n, N ], [ kana_MI ] };
- key <AB07> { [ m, M ], [ kana_MO ] };
- key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
- key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
- key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ]};
- key <UNDR> { [ backslash, underscore], [ kana_RO ] };
-
- key <SPCE> { [ space ] };
- key <KANJ> { [ Kanji ] };
- key <HENK> { [ Henkan_Mode ] };
-// key <LNFD> { [ backslash, underscore], [ kana_RO ]};
- // End alphanumeric section
-
- // Begin "Function" section
- key <ESC> { [ Escape ] };
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ SunF36 ] };
- key <FK12> { [ SunF37 ] };
- key <BKSL> { [ backslash, bar ], [ prolongedsound ] };
-// key <BRCR> { [ Linefeed ] };
- key <EXEC> { [ Execute ] };
-};
-xkb_symbols "type4" {
-
- // Alphanumeric section
- key <AE01> { [ 1, exclam ], [ kana_NU ] };
- key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
- key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
- key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
- key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
- key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
- key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
- key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
- key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
- key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
- key <AE11> { [ minus, equal ], [ kana_HO ] };
- key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
- key <BKSP> { [ BackSpace ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ q, Q ], [ kana_TA ] };
- key <AD02> { [ w, W ], [ kana_TE ] };
- key <AD03> { [ e, E ], [ kana_I, kana_i ] };
- key <AD04> { [ r, R ], [ kana_SU ] };
- key <AD05> { [ t, T ], [ kana_KA ] };
- key <AD06> { [ y, Y ], [ kana_N ] };
- key <AD07> { [ u, U ], [ kana_NA ] };
- key <AD08> { [ i, I ], [ kana_NI ] };
- key <AD09> { [ o, O ], [ kana_RA ] };
- key <AD10> { [ p, P ], [ kana_SE ] };
- key <AD11> { [ at, quoteleft ], [ voicedsound ] };
- key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
- key <RTRN> { [ Return ] };
-
- key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ a, A ], [ kana_CHI ] };
- key <AC02> { [ s, S ], [ kana_TO ] };
- key <AC03> { [ d, D ], [ kana_SHI ] };
- key <AC04> { [ f, F ], [ kana_HA ] };
- key <AC05> { [ g, G ], [ kana_KI ] };
- key <AC06> { [ h, H ], [ kana_KU ] };
- key <AC07> { [ j, J ], [ kana_MA ] };
- key <AC08> { [ k, K ], [ kana_NO ] };
- key <AC09> { [ l, L ], [ kana_RI ] };
- key <AC10> { [ semicolon, plus ], [ kana_RE ] };
- key <AC11> { [ colon, asterisk ], [ kana_KE ] };
- key <TLDE> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
-
- key <LFSH> { [ Shift_L ] };
- key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
- key <AB02> { [ x, X ], [ kana_SA ] };
- key <AB03> { [ c, C ], [ kana_SO ] };
- key <AB04> { [ v, V ], [ kana_HI ] };
- key <AB05> { [ b, B ], [ kana_KO ] };
- key <AB06> { [ n, N ], [ kana_MI ] };
- key <AB07> { [ m, M ], [ kana_MO ] };
- key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
- key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
- key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ]};
- key <UNDR> { [ backslash, underscore], [ kana_RO ] };
- key <RTSH> { [ Shift_R ] };
-
- key <LCTL> { [ Control_L ] };
- key <SPCE> { [ space ] };
- key <KANJ> { [ Kanji ] };
- key <HENK> { [ Henkan_Mode ] };
- key <LALT> { [ Alt_L ] };
- key <ALGR> { [ Mode_switch ] };
- key <LMTA> { [ Meta_L ] };
- key <RMTA> { [ Meta_R ] };
- key <LNFD> { [ backslash, underscore], [ kana_RO ]};
- key <COMP> { [ Multi_key ] };
- key <EXEC> { [ Execute ] };
-// key <TLFD> { [ Linefeed ] };
- // End alphanumeric section
-
- // Begin "Function" section
- key <ESC> { [ Escape ] };
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ SunF36 ] };
- key <FK12> { [ SunF37 ] };
- key <BKSL> { [ backslash, bar ], [ prolongedsound ] };
- key <BRCR> { [ Linefeed ] };
-
- key <STOP> { [ L1, L1 ], [ SunStop ] };
- key <AGAI> { [ L2, L2 ], [ SunAgain ] };
- key <PROP> { [ L3, L3 ], [ SunProps ] };
- key <UNDO> { [ L4, L4 ], [ SunUndo ] };
- key <FRNT> { [ L5, L5 ], [ SunFront ] };
- key <COPY> { [ L6, L6 ], [ SunCopy ] };
- key <OPEN> { [ L7, L7 ], [ SunOpen ] };
- key <PAST> { [ L8, L8 ], [ SunPaste ] };
- key <FIND> { [ L9, L9 ], [ SunFind ] };
- key <CUT> { [ L10, L10 ], [ SunCut ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <PRSC> { [ R2, R2 ], [ Print ] };
- key <SCLK> { [ R3, R3 ], [ Scroll_Lock, Break ] };
- key <PAUS> { [ R1, R1 ], [ Pause ] };
- key <DELE> { [ Delete ] };
- key <HELP> { [ Help ] };
-
- // End "Editing" section, begin "Keypad"
- key <NMLK> { [ Num_Lock ] };
- key <KPEQ> { [ R4, R4 ], [ KP_Equal ] };
- key <KPDV> { [ R5, R5 ], [ KP_Divide ] };
- key <KPMU> { [ R6, R6 ], [ KP_Multiply ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP7> { [ R7, R7 ], [ KP_7, Home ] };
- key <KP8> { [ Up, R8 ], [ KP_8 ] };
- key <KP9> { [ R9, R9 ], [ KP_9, Prior ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP4> { [ Left, R10 ], [ KP_4 ] };
- key <KP5> { [ R11, R11 ], [ KP_5 ] };
- key <KP6> { [ Right, R12 ], [ KP_6 ] };
-
- key <KP1> { [ R13, R13 ], [ KP_1, End ] };
- key <KP2> { [ Down, R14 ], [ KP_2 ] };
- key <KP3> { [ R15, R15 ], [ KP_3, Next ] };
- key <KPEN> { [ KP_Enter ] };
- key <KP0> { [ KP_Insert, KP_Insert], [ KP_0 ] };
- key <KPDL> { [ Delete, Delete ], [ KP_Decimal ] };
- // End "Keypad" section
-
-
- // begin modifier mappings
- modifier_map Shift { Shift_R, Shift_L };
- modifier_map Mod1 { Meta_L, Meta_R };
- modifier_map Mod2 { Mode_switch };
- modifier_map Mod3 { Num_Lock };
- modifier_map Mod4 { Alt_L };
-};
-
-// US/ASCII layout for a Type 5 Sun keyboard
-xkb_symbols "type5" {
-
- // Alphanumeric section
- key <TLDE> { [ backslash, bar ], [ prolongedsound ] };
- key <AE01> { [ 1, exclam ], [ kana_NU ] };
- key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
- key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
- key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
- key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
- key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
- key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
- key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
- key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
- key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
- key <AE11> { [ minus, equal ], [ kana_HO ] };
- key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
- key <BKSP> { [ BackSpace ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ q, Q ], [ kana_TA ] };
- key <AD02> { [ w, W ], [ kana_TE ] };
- key <AD03> { [ e, E ], [ kana_I, kana_i ] };
- key <AD04> { [ r, R ], [ kana_SU ] };
- key <AD05> { [ t, T ], [ kana_KA ] };
- key <AD06> { [ y, Y ], [ kana_N ] };
- key <AD07> { [ u, U ], [ kana_NA ] };
- key <AD08> { [ i, I ], [ kana_NI ] };
- key <AD09> { [ o, O ], [ kana_RA ] };
- key <AD10> { [ p, P ], [ kana_SE ] };
- key <AD11> { [ at, quoteleft ], [ voicedsound ] };
- key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
- key <RTRN> { [ Return ] };
-
- key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ a, A ], [ kana_CHI ] };
- key <AC02> { [ s, S ], [ kana_TO ] };
- key <AC03> { [ d, D ], [ kana_SHI ] };
- key <AC04> { [ f, F ], [ kana_HA ] };
- key <AC05> { [ g, G ], [ kana_KI ] };
- key <AC06> { [ h, H ], [ kana_KU ] };
- key <AC07> { [ j, J ], [ kana_MA ] };
- key <AC08> { [ k, K ], [ kana_NO ] };
- key <AC09> { [ l, L ], [ kana_RI ] };
- key <AC10> { [ semicolon, plus ], [ kana_RE ] };
- key <AC11> { [ colon, asterisk ], [ kana_KE ] };
- key <BKSL> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
-
- key <LFSH> { [ Shift_L ] };
- key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
- key <AB02> { [ x, X ], [ kana_SA ] };
- key <AB03> { [ c, C ], [ kana_SO ] };
- key <AB04> { [ v, V ], [ kana_HI ] };
- key <AB05> { [ b, B ], [ kana_KO ] };
- key <AB06> { [ n, N ], [ kana_MI ] };
- key <AB07> { [ m, M ], [ kana_MO ] };
- key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
- key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
- key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ]};
- key <UNDR> { [ backslash, underscore], [ kana_RO ] };
- key <RTSH> { [ Shift_R ] };
-
- key <LCTL> { [ Control_L ] };
-// key <RCTL> { [ Control_R ] };
- key <EXEC> { [ Execute ] };
- key <SPCE> { [ space ] };
- key <KANJ> { [ Kanji ] };
- key <HENK> { [ Henkan_Mode ] };
- key <LALT> { [ Alt_L ] };
- key <ALGR> { [ Mode_switch ] };
- key <LMTA> { [ Meta_L ] };
- key <RMTA> { [ Meta_R ] };
- key <COMP> { [ Multi_key ] };
- // End alphanumeric section
-
- // Begin "Function" section
- key <ESC> { [ Escape ] };
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ SunF36 ] };
- key <FK12> { [ SunF37 ] };
- key <STOP> { [ L1, L1 ], [ SunStop ] };
- key <AGAI> { [ L2, L2 ], [ SunAgain ] };
- key <PROP> { [ L3, L3 ], [ SunProps ] };
- key <UNDO> { [ L4, L4 ], [ SunUndo ] };
- key <FRNT> { [ L5, L5 ], [ SunFront ] };
- key <COPY> { [ L6, L6 ], [ SunCopy ] };
- key <OPEN> { [ L7, L7 ], [ SunOpen ] };
- key <PAST> { [ L8, L8 ], [ SunPaste ] };
- key <FIND> { [ L9, L9 ], [ SunFind ] };
- key <CUT> { [ L10, L10 ], [ SunCut ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <PRSC> { [ R2, R2 ], [ Print, SunSys_Req ] };
- key <SCLK> { [ R3, R3 ], [ Scroll_Lock ] };
- key <PAUS> { [ R1, R1 ], [ Pause, Break ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
- key <UP> { [ Up ] };
- key <DOWN> { [ Down ] };
-
- key <DELE> { [ Delete ] };
- key <INS> { [ Insert ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
- key <HOME> { [ Home ] };
- key <END> { [ End ] };
- key <HELP> { [ Help ] };
-
- // End "Editing" section, begin "Keypad"
- key <NMLK> { [ Num_Lock ] };
- key <KPDV> { [ R5, R5 ], [ KP_Divide ] };
- key <KPMU> { [ R6, R6 ], [ KP_Multiply ] };
- key <KPSU> { [ R4, R4 ], [ KP_Subtract ] };
-
- key <KP7> { [ R7, R7 ], [ KP_7, Home ] };
- key <KP8> { [ Up, R8 ], [ KP_8 ] };
- key <KP9> { [ R9, R9 ], [ KP_9, Prior ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP4> { [ Left, R10 ], [ KP_4 ] };
- key <KP5> { [ R11, R11 ], [ KP_5 ] };
- key <KP6> { [ Right, R12 ], [ KP_6 ] };
-
- key <KP1> { [ R13, R13 ], [ KP_1, End ] };
- key <KP2> { [ Down, R14 ], [ KP_2 ] };
- key <KP3> { [ R15, R15 ], [ KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_Insert, KP_Insert ], [ KP_0 ] };
- key <KPDL> { [ KP_Delete, KP_Delete ], [ KP_Decimal ] };
- // End "Keypad" section,
- // begin "four keys up on the right"
-
- key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
- key <VOL-> { [ SunAudioLowerVolume, SunVideoLowerBrightness ] };
- key <VOL+> { [ SunAudioRaiseVolume, SunVideoRaiseBrightness ] };
- key <POWR> { [ SunPowerSwitch, SunPowerSwitchShift ] };
-
- // begin modifier mappings
- modifier_map Shift { Shift_R };
- modifier_map Mod1 { Meta_L, Meta_R };
- modifier_map Mod2 { Alt_R };
- modifier_map Mod3 { Num_Lock };
- modifier_map Mod4 { Alt_L };
-};
-
-xkb_symbols "type5hobo" {
-
- // Alphanumeric section
- key <TLDE> { [ backslash, bar ], [ prolongedsound ] };
- key <AE01> { [ 1, exclam ], [ kana_NU ] };
- key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
- key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
- key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
- key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
- key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
- key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ], [ KP_7 ]};
- key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ], [ KP_8 ]};
- key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ], [ KP_9 ]};
- key <AE10> { [ 0 ], [ kana_WA, kana_WO ], [ KP_Multiply]};
- key <AE11> { [ minus, equal ], [ kana_HO ] };
- key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
- key <BKSP> { [ BackSpace ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ q, Q ], [ kana_TA ] };
- key <AD02> { [ w, W ], [ kana_TE ] };
- key <AD03> { [ e, E ], [ kana_I, kana_i ] };
- key <AD04> { [ r, R ], [ kana_SU ] };
- key <AD05> { [ t, T ], [ kana_KA ] };
- key <AD06> { [ y, Y ], [ kana_N ] };
- key <AD07> { [ u, U ], [ kana_NA ], [ KP_4 ] };
- key <AD08> { [ i, I ], [ kana_NI ], [ KP_5 ] };
- key <AD09> { [ o, O ], [ kana_RA ], [ KP_6 ] };
- key <AD10> { [ p, P ], [ kana_SE ], [ KP_Subtract]};
- key <AD11> { [ at, quoteleft ], [ voicedsound ] };
- key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
- key <RTRN> { [ Return ], [ NoSymbol, NoSymbol], [ KP_Enter ] };
-
- key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ a, A ], [ kana_CHI ] };
- key <AC02> { [ s, S ], [ kana_TO ] };
- key <AC03> { [ d, D ], [ kana_SHI ] };
- key <AC04> { [ f, F ], [ kana_HA ] };
- key <AC05> { [ g, G ], [ kana_KI ] };
- key <AC06> { [ h, H ], [ kana_KU ] };
- key <AC07> { [ j, J ], [ kana_MA ], [ KP_1 ]};
- key <AC08> { [ k, K ], [ kana_NO ], [ KP_2 ]};
- key <AC09> { [ l, L ], [ kana_RI ], [ KP_3 ]};
- key <AC10> { [ semicolon, plus], [ kana_RE ], [ KP_Add ]};
- key <AC11> { [ colon, asterisk ], [ kana_KE ] };
- key <BKSL> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
-
- key <LFSH> { [ Shift_L ] };
- key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
- key <AB02> { [ x, X ], [ kana_SA ] };
- key <AB03> { [ c, C ], [ kana_SO ] };
- key <AB04> { [ v, V ], [ kana_HI ] };
- key <AB05> { [ b, B ], [ kana_KO ] };
- key <AB06> { [ n, N ], [ kana_MI ] };
- key <AB07> { [ m, M ], [ kana_MO ], [ KP_0 ]};
- key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
- key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ], [ KP_Decimal ] };
- key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ], [ KP_Divide ]};
- key <UNDR> { [ backslash, underscore], [ kana_RO ] };
- key <RTSH> { [ Shift_R ] };
-
- key <LCTL> { [ Control_L ] };
- key <EXEC> { [ Execute ] };
- key <SPCE> { [ space ] };
- key <KANJ> { [ Kanji ] };
- key <HENK> { [ Henkan_Mode ] };
- key <LALT> { [ Alt_L ] };
- key <ALGR> { [ Mode_switch ] };
- key <LMTA> { [ Meta_L ] };
- key <RMTA> { [ Meta_R ] };
- key <COMP> { [ Multi_key ] };
- // End alphanumeric section
-
- // Begin "Function" section
- key <ESC> { [ Escape ] };
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ SunF36 ] };
- key <FK12> { [ SunF37 ] };
- key <STOP> { [ L1, L1 ], [ SunStop ] };
- key <AGAI> { [ L2, L2 ], [ SunAgain ] };
- key <PROP> { [ L3, L3 ], [ SunProps ] };
- key <UNDO> { [ L4, L4 ], [ SunUndo ] };
- key <FRNT> { [ L5, L5 ], [ SunFront ] };
- key <COPY> { [ L6, L6 ], [ SunCopy ] };
- key <OPEN> { [ L7, L7 ], [ SunOpen ] };
- key <PAST> { [ L8, L8 ], [ SunPaste ] };
- key <FIND> { [ L9, L9 ], [ SunFind ] };
- key <CUT> { [ L10, L10 ], [ SunCut ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <PRSC> { [ R2, R2 ], [ Print, SunSys_Req ] };
- key <SCLK> { [ R3, R3 ], [ Scroll_Lock ] };
- key <PAUS> { [ R1, R1 ], [ Pause, Break ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
- key <UP> { [ Up ] };
- key <DOWN> { [ Down ] };
-
- key <DELE> { [ Delete ] };
- key <INS> { [ Insert ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
- key <HOME> { [ Home ] };
- key <END> { [ End ] };
- key <HELP> { [ Help ] };
-
- // End "Editing" section, begin "Keypad"
- key <NMLK> { [ Num_Lock ] };
-// key <KPDV> { [ R5, R5 ], [ KP_Divide ] };
-// key <KPMU> { [ R6, R6 ], [ KP_Multiply ] };
-// key <KPSU> { [ R4, R4 ], [ KP_Subtract ] };
-
-// key <KP7> { [ R7, R7 ], [ KP_7, Home ] };
-// key <KP8> { [ Up, R8 ], [ KP_8 ] };
-// key <KP9> { [ R9, R9 ], [ KP_9, Prior ] };
-// key <KPAD> { [ KP_Add ] };
-
-// key <KP4> { [ Left, R10 ], [ KP_4 ] };
-// key <KP5> { [ R11, R11 ], [ KP_5 ] };
-// key <KP6> { [ Right, R12 ], [ KP_6 ] };
-
-// key <KP1> { [ R13, R13 ], [ KP_1, End ] };
-// key <KP2> { [ Down, R14 ], [ KP_2 ] };
-// key <KP3> { [ R15, R15 ], [ KP_3 ] };
-// key <KPEN> { [ KP_Enter ] };
-
-// key <KP0> { [ KP_Insert, KP_Insert ], [ KP_0 ] };
-// key <KPDL> { [ KP_Delete, KP_Delete ], [ KP_Decimal ] };
- // End "Keypad" section,
- // begin "four keys up on the right"
-
- key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
- key <VOL-> { [ SunAudioLowerVolume, SunVideoLowerBrightness ] };
- key <VOL+> { [ SunAudioRaiseVolume, SunVideoRaiseBrightness ] };
- key <POWR> { [ SunPowerSwitch, SunPowerSwitchShift ] };
-
- // begin modifier mappings
- modifier_map Shift { Shift_R };
- modifier_map Mod1 { Meta_L, Meta_R };
- modifier_map Mod2 { Alt_R };
- modifier_map Mod3 { Num_Lock };
- modifier_map Mod4 { Alt_L };
-};
-
-// layout for a Japanese Type 6 Sun keyboard
-// Just shows differences from Type 6 US layout
-partial
-xkb_symbols "type6" {
-
- // Alphanumeric section
- // Though Yen symbol is engraved on key AE13, JA L10N folks want backslash.
- key <AE13> { [ backslash, bar ], [ prolongedsound ] };
- key <AE01> { [ 1, exclam ], [ kana_NU ] };
- key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
- key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
- key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
- key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
- key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
- key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
- key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
- key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
- key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
- key <AE11> { [ minus, equal ], [ kana_HO ] };
- key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
-
- key <AD01> { [ q, Q ], [ kana_TA ] };
- key <AD02> { [ w, W ], [ kana_TE ] };
- key <AD03> { [ e, E ], [ kana_I, kana_i ] };
- key <AD04> { [ r, R ], [ kana_SU ] };
- key <AD05> { [ t, T ], [ kana_KA ] };
- key <AD06> { [ y, Y ], [ kana_N ] };
- key <AD07> { [ u, U ], [ kana_NA ] };
- key <AD08> { [ i, I ], [ kana_NI ] };
- key <AD09> { [ o, O ], [ kana_RA ] };
- key <AD10> { [ p, P ], [ kana_SE ] };
- key <AD11> { [ at, quoteleft ], [ voicedsound ] };
- key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
-
- key <AC01> { [ a, A ], [ kana_CHI ] };
- key <AC02> { [ s, S ], [ kana_TO ] };
- key <AC03> { [ d, D ], [ kana_SHI ] };
- key <AC04> { [ f, F ], [ kana_HA ] };
- key <AC05> { [ g, G ], [ kana_KI ] };
- key <AC06> { [ h, H ], [ kana_KU ] };
- key <AC07> { [ j, J ], [ kana_MA ] };
- key <AC08> { [ k, K ], [ kana_NO ] };
- key <AC09> { [ l, L ], [ kana_RI ] };
- key <AC10> { [ semicolon, plus ], [ kana_RE ] };
- key <AC11> { [ colon, asterisk ], [ kana_KE ] };
- key <BKSL> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
-
- key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
- key <AB02> { [ x, X ], [ kana_SA ] };
- key <AB03> { [ c, C ], [ kana_SO ] };
- key <AB04> { [ v, V ], [ kana_HI ] };
- key <AB05> { [ b, B ], [ kana_KO ] };
- key <AB06> { [ n, N ], [ kana_MI ] };
- key <AB07> { [ m, M ], [ kana_MO ] };
- key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
- key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
- key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ]};
- key <AB11> { [ backslash, underscore], [ kana_RO ] };
- key <UNDR> { [ backslash, underscore], [ kana_RO ] };
-
- key <EXEC> { [ Execute ] };
- key <KANJ> { [ Kanji ] };
- key <HENK> { [ Henkan_Mode ] };
- key <ALGR> { [ Kana_Lock, Mode_switch ] };
- // End alphanumeric section
-};
-
-xkb_symbols "x86" {
- include "sun_vndr/us(pc101)"
- include "sun_vndr/jp(basic)"
- key <TLDE> { [ Henkan_Mode, Henkan_Mode ], [ Henkan_Mode ] };
-
- key <AE10> { [ 0, asciitilde ], [ kana_WA, kana_WO ]};
- key <AE13> { [ backslash, bar ], [ prolongedsound ]};
-
-
- key <AC12> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ]};
-
- key <ALGR> { [ Mode_switch ] };
- key <RALT> { [ Alt_R ] };
-
-};
-
-xkb_symbols "J3100" {
- include "sun_vndr/us(pc101)"
-
- // Alphanumeric section
- key <AE01> { [ 1, exclam ], [ kana_NU ] };
- key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
- key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
- key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
- key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
- key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
- key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
- key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
- key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
- key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
- key <AE11> { [ minus, equal ], [ kana_HO ] };
- key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
- key <BKSP> { [ BackSpace ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ q, Q ], [ kana_TA ] };
- key <AD02> { [ w, W ], [ kana_TE ] };
- key <AD03> { [ e, E ], [ kana_I, kana_i ] };
- key <AD04> { [ r, R ], [ kana_SU ] };
- key <AD05> { [ t, T ], [ kana_KA ] };
- key <AD06> { [ y, Y ], [ kana_N ] };
- key <AD07> { [ u, U ], [ kana_NA ] };
- key <AD08> { [ i, I ], [ kana_NI ] };
- key <AD09> { [ o, O ], [ kana_RA ] };
- key <AD10> { [ p, P ], [ kana_SE ] };
- key <AD11> { [ at, quoteleft ], [ voicedsound ] };
- key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
- key <RTRN> { [ Return ] };
-
- key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ a, A ], [ kana_CHI ] };
- key <AC02> { [ s, S ], [ kana_TO ] };
- key <AC03> { [ d, D ], [ kana_SHI ] };
- key <AC04> { [ f, F ], [ kana_HA ] };
- key <AC05> { [ g, G ], [ kana_KI ] };
- key <AC06> { [ h, H ], [ kana_KU ] };
- key <AC07> { [ j, J ], [ kana_MA ] };
- key <AC08> { [ k, K ], [ kana_NO ] };
- key <AC09> { [ l, L ], [ kana_RI ] };
- key <AC10> { [ semicolon, plus ], [ kana_RE ] };
- key <AC11> { [ colon, asterisk ], [ kana_KE ] };
- key <TLDE> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
-
- key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
- key <AB02> { [ x, X ], [ kana_SA ] };
- key <AB03> { [ c, C ], [ kana_SO ] };
- key <AB04> { [ v, V ], [ kana_HI ] };
- key <AB05> { [ b, B ], [ kana_KO ] };
- key <AB06> { [ n, N ], [ kana_MI ] };
- key <AB07> { [ m, M ], [ kana_MO ] };
- key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
- key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
- key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ]};
-// key <UNDR> { [ backslash, underscore], [ kana_RO ] };
-
- key <SPCE> { [ space ] };
-// key <KANJ> { [ Kanji ] };
-// key <HENK> { [ Henkan_Mode ] };
-// key <LNFD> { [ backslash, underscore], [ kana_RO ]};
- // End alphanumeric section
-
- // Begin "Function" section
- key <ESC> { [ Escape ] };
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ SunF36 ] };
- key <FK12> { [ SunF37 ] };
- key <BKSL> { [ backslash, bar ], [ prolongedsound ] };
-// key <BRCR> { [ Linefeed ] };
-// key <EXEC> { [ Execute ] };
-
- key <ESC> { [ Escape, 3 ] };
-
- key <AE02> { [ 2, at ], [ kana_FU ]};
- key <AE06> { [ 6, asciicircum ], [ kana_O, kana_o ]};
- key <AE07> { [ 7, ampersand ], [ kana_YA, kana_ya ]};
- key <AE08> { [ 8, asterisk ], [ kana_YU, kana_yu ]};
- key <AE09> { [ 9, parenleft ], [ kana_YO, kana_yo ]};
- key <AE10> { [ 0, parenright ], [ kana_WA, kana_WO ]};
- key <AE11> { [ minus, underscore ], [ kana_HO ]};
- key <AE12> { [ equal, plus ], [ kana_HE ]};
-
- key <BKSL> { [ backslash, bar ], [ prolongedsound ]};
- key <AE12> { [ equal, plus ], [ kana_HE ]};
-
- key <AD11> { [ bracketleft, braceleft ], [ voicedsound ]};
- key <AD12> { [ bracketright, braceright ], [ semivoicedsound, kana_openingbracket ]};
-
- key <AC10> { [ semicolon, colon ], [ kana_RE ]};
- key <AC11> { [ quoteright, quotedbl ], [ kana_KE ]};
-
- key <TLDE> { [ quoteleft, asciitilde ], [ kana_MU, kana_closingbracket ]};
- key <LSGT> { [ backslash, bar ], [ kana_RO ]};
-// key <ALGR> { [ Mode_switch ] };
- key <RALT> { [ Henkan_Mode ] };
- key <RCTL> { [ Mode_switch ] };
-
-};
-
-xkb_symbols "Muhenkan_x86" {
- include "sun_vndr/jp(x86)"
-
- key <EXEC> { [ Muhenkan ] };
-};
-
-
-
-partial
-xkb_symbols "type7" {
- include "sun_vndr/jp(type6)"
- key <AE10> { [ 0, asciitilde ], [ kana_WA, kana_WO ] };
- key <TLDE> { [ Henkan_Mode ] };
- key <HENK> { [ Kana_Lock, Mode_switch ] };
- key <ALGR> { [ Alt_R, Alt_R ] };
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+//
+//Copyright 1996, 1998 The Open Group
+//
+//All Rights Reserved.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+// US/ASCII layout for a Type 4 Sun keyboard
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+xkb_symbols "basic" {
+ // Alphanumeric section
+ key <AE01> { [ 1, exclam ], [ kana_NU ] };
+ key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
+ key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
+ key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
+ key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
+ key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
+ key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
+ key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
+ key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
+ key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
+ key <AE11> { [ minus, equal ], [ kana_HO ] };
+ key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ q, Q ], [ kana_TA ] };
+ key <AD02> { [ w, W ], [ kana_TE ] };
+ key <AD03> { [ e, E ], [ kana_I, kana_i ] };
+ key <AD04> { [ r, R ], [ kana_SU ] };
+ key <AD05> { [ t, T ], [ kana_KA ] };
+ key <AD06> { [ y, Y ], [ kana_N ] };
+ key <AD07> { [ u, U ], [ kana_NA ] };
+ key <AD08> { [ i, I ], [ kana_NI ] };
+ key <AD09> { [ o, O ], [ kana_RA ] };
+ key <AD10> { [ p, P ], [ kana_SE ] };
+ key <AD11> { [ at, quoteleft ], [ voicedsound ] };
+ key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
+ key <RTRN> { [ Return ] };
+
+ key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ a, A ], [ kana_CHI ] };
+ key <AC02> { [ s, S ], [ kana_TO ] };
+ key <AC03> { [ d, D ], [ kana_SHI ] };
+ key <AC04> { [ f, F ], [ kana_HA ] };
+ key <AC05> { [ g, G ], [ kana_KI ] };
+ key <AC06> { [ h, H ], [ kana_KU ] };
+ key <AC07> { [ j, J ], [ kana_MA ] };
+ key <AC08> { [ k, K ], [ kana_NO ] };
+ key <AC09> { [ l, L ], [ kana_RI ] };
+ key <AC10> { [ semicolon, plus ], [ kana_RE ] };
+ key <AC11> { [ colon, asterisk ], [ kana_KE ] };
+ key <TLDE> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
+
+ key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
+ key <AB02> { [ x, X ], [ kana_SA ] };
+ key <AB03> { [ c, C ], [ kana_SO ] };
+ key <AB04> { [ v, V ], [ kana_HI ] };
+ key <AB05> { [ b, B ], [ kana_KO ] };
+ key <AB06> { [ n, N ], [ kana_MI ] };
+ key <AB07> { [ m, M ], [ kana_MO ] };
+ key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
+ key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
+ key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ]};
+ key <UNDR> { [ backslash, underscore], [ kana_RO ] };
+
+ key <SPCE> { [ space ] };
+ key <KANJ> { [ Kanji ] };
+ key <HENK> { [ Henkan_Mode ] };
+// key <LNFD> { [ backslash, underscore], [ kana_RO ]};
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <ESC> { [ Escape ] };
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ SunF36 ] };
+ key <FK12> { [ SunF37 ] };
+ key <BKSL> { [ backslash, bar ], [ prolongedsound ] };
+// key <BRCR> { [ Linefeed ] };
+ key <EXEC> { [ Execute ] };
+};
+xkb_symbols "type4" {
+
+ // Alphanumeric section
+ key <AE01> { [ 1, exclam ], [ kana_NU ] };
+ key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
+ key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
+ key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
+ key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
+ key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
+ key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
+ key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
+ key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
+ key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
+ key <AE11> { [ minus, equal ], [ kana_HO ] };
+ key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ q, Q ], [ kana_TA ] };
+ key <AD02> { [ w, W ], [ kana_TE ] };
+ key <AD03> { [ e, E ], [ kana_I, kana_i ] };
+ key <AD04> { [ r, R ], [ kana_SU ] };
+ key <AD05> { [ t, T ], [ kana_KA ] };
+ key <AD06> { [ y, Y ], [ kana_N ] };
+ key <AD07> { [ u, U ], [ kana_NA ] };
+ key <AD08> { [ i, I ], [ kana_NI ] };
+ key <AD09> { [ o, O ], [ kana_RA ] };
+ key <AD10> { [ p, P ], [ kana_SE ] };
+ key <AD11> { [ at, quoteleft ], [ voicedsound ] };
+ key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
+ key <RTRN> { [ Return ] };
+
+ key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ a, A ], [ kana_CHI ] };
+ key <AC02> { [ s, S ], [ kana_TO ] };
+ key <AC03> { [ d, D ], [ kana_SHI ] };
+ key <AC04> { [ f, F ], [ kana_HA ] };
+ key <AC05> { [ g, G ], [ kana_KI ] };
+ key <AC06> { [ h, H ], [ kana_KU ] };
+ key <AC07> { [ j, J ], [ kana_MA ] };
+ key <AC08> { [ k, K ], [ kana_NO ] };
+ key <AC09> { [ l, L ], [ kana_RI ] };
+ key <AC10> { [ semicolon, plus ], [ kana_RE ] };
+ key <AC11> { [ colon, asterisk ], [ kana_KE ] };
+ key <TLDE> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
+ key <AB02> { [ x, X ], [ kana_SA ] };
+ key <AB03> { [ c, C ], [ kana_SO ] };
+ key <AB04> { [ v, V ], [ kana_HI ] };
+ key <AB05> { [ b, B ], [ kana_KO ] };
+ key <AB06> { [ n, N ], [ kana_MI ] };
+ key <AB07> { [ m, M ], [ kana_MO ] };
+ key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
+ key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
+ key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ]};
+ key <UNDR> { [ backslash, underscore], [ kana_RO ] };
+ key <RTSH> { [ Shift_R ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <SPCE> { [ space ] };
+ key <KANJ> { [ Kanji ] };
+ key <HENK> { [ Henkan_Mode ] };
+ key <LALT> { [ Alt_L ] };
+ key <ALGR> { [ Mode_switch ] };
+ key <LMTA> { [ Meta_L ] };
+ key <RMTA> { [ Meta_R ] };
+ key <LNFD> { [ backslash, underscore], [ kana_RO ]};
+ key <COMP> { [ Multi_key ] };
+ key <EXEC> { [ Execute ] };
+// key <TLFD> { [ Linefeed ] };
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <ESC> { [ Escape ] };
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ SunF36 ] };
+ key <FK12> { [ SunF37 ] };
+ key <BKSL> { [ backslash, bar ], [ prolongedsound ] };
+ key <BRCR> { [ Linefeed ] };
+
+ key <STOP> { [ L1, L1 ], [ SunStop ] };
+ key <AGAI> { [ L2, L2 ], [ SunAgain ] };
+ key <PROP> { [ L3, L3 ], [ SunProps ] };
+ key <UNDO> { [ L4, L4 ], [ SunUndo ] };
+ key <FRNT> { [ L5, L5 ], [ SunFront ] };
+ key <COPY> { [ L6, L6 ], [ SunCopy ] };
+ key <OPEN> { [ L7, L7 ], [ SunOpen ] };
+ key <PAST> { [ L8, L8 ], [ SunPaste ] };
+ key <FIND> { [ L9, L9 ], [ SunFind ] };
+ key <CUT> { [ L10, L10 ], [ SunCut ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <PRSC> { [ R2, R2 ], [ Print ] };
+ key <SCLK> { [ R3, R3 ], [ Scroll_Lock, Break ] };
+ key <PAUS> { [ R1, R1 ], [ Pause ] };
+ key <DELE> { [ Delete ] };
+ key <HELP> { [ Help ] };
+
+ // End "Editing" section, begin "Keypad"
+ key <NMLK> { [ Num_Lock ] };
+ key <KPEQ> { [ R4, R4 ], [ KP_Equal ] };
+ key <KPDV> { [ R5, R5 ], [ KP_Divide ] };
+ key <KPMU> { [ R6, R6 ], [ KP_Multiply ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP7> { [ R7, R7 ], [ KP_7, Home ] };
+ key <KP8> { [ Up, R8 ], [ KP_8 ] };
+ key <KP9> { [ R9, R9 ], [ KP_9, Prior ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP4> { [ Left, R10 ], [ KP_4 ] };
+ key <KP5> { [ R11, R11 ], [ KP_5 ] };
+ key <KP6> { [ Right, R12 ], [ KP_6 ] };
+
+ key <KP1> { [ R13, R13 ], [ KP_1, End ] };
+ key <KP2> { [ Down, R14 ], [ KP_2 ] };
+ key <KP3> { [ R15, R15 ], [ KP_3, Next ] };
+ key <KPEN> { [ KP_Enter ] };
+ key <KP0> { [ KP_Insert, KP_Insert], [ KP_0 ] };
+ key <KPDL> { [ Delete, Delete ], [ KP_Decimal ] };
+ // End "Keypad" section
+
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R, Shift_L };
+ modifier_map Mod1 { Meta_L, Meta_R };
+ modifier_map Mod2 { Mode_switch };
+ modifier_map Mod3 { Num_Lock };
+ modifier_map Mod4 { Alt_L };
+};
+
+// US/ASCII layout for a Type 5 Sun keyboard
+xkb_symbols "type5" {
+
+ // Alphanumeric section
+ key <TLDE> { [ backslash, bar ], [ prolongedsound ] };
+ key <AE01> { [ 1, exclam ], [ kana_NU ] };
+ key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
+ key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
+ key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
+ key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
+ key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
+ key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
+ key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
+ key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
+ key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
+ key <AE11> { [ minus, equal ], [ kana_HO ] };
+ key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ q, Q ], [ kana_TA ] };
+ key <AD02> { [ w, W ], [ kana_TE ] };
+ key <AD03> { [ e, E ], [ kana_I, kana_i ] };
+ key <AD04> { [ r, R ], [ kana_SU ] };
+ key <AD05> { [ t, T ], [ kana_KA ] };
+ key <AD06> { [ y, Y ], [ kana_N ] };
+ key <AD07> { [ u, U ], [ kana_NA ] };
+ key <AD08> { [ i, I ], [ kana_NI ] };
+ key <AD09> { [ o, O ], [ kana_RA ] };
+ key <AD10> { [ p, P ], [ kana_SE ] };
+ key <AD11> { [ at, quoteleft ], [ voicedsound ] };
+ key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
+ key <RTRN> { [ Return ] };
+
+ key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ a, A ], [ kana_CHI ] };
+ key <AC02> { [ s, S ], [ kana_TO ] };
+ key <AC03> { [ d, D ], [ kana_SHI ] };
+ key <AC04> { [ f, F ], [ kana_HA ] };
+ key <AC05> { [ g, G ], [ kana_KI ] };
+ key <AC06> { [ h, H ], [ kana_KU ] };
+ key <AC07> { [ j, J ], [ kana_MA ] };
+ key <AC08> { [ k, K ], [ kana_NO ] };
+ key <AC09> { [ l, L ], [ kana_RI ] };
+ key <AC10> { [ semicolon, plus ], [ kana_RE ] };
+ key <AC11> { [ colon, asterisk ], [ kana_KE ] };
+ key <BKSL> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
+ key <AB02> { [ x, X ], [ kana_SA ] };
+ key <AB03> { [ c, C ], [ kana_SO ] };
+ key <AB04> { [ v, V ], [ kana_HI ] };
+ key <AB05> { [ b, B ], [ kana_KO ] };
+ key <AB06> { [ n, N ], [ kana_MI ] };
+ key <AB07> { [ m, M ], [ kana_MO ] };
+ key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
+ key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
+ key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ]};
+ key <UNDR> { [ backslash, underscore], [ kana_RO ] };
+ key <RTSH> { [ Shift_R ] };
+
+ key <LCTL> { [ Control_L ] };
+// key <RCTL> { [ Control_R ] };
+ key <EXEC> { [ Execute ] };
+ key <SPCE> { [ space ] };
+ key <KANJ> { [ Kanji ] };
+ key <HENK> { [ Henkan_Mode ] };
+ key <LALT> { [ Alt_L ] };
+ key <ALGR> { [ Mode_switch ] };
+ key <LMTA> { [ Meta_L ] };
+ key <RMTA> { [ Meta_R ] };
+ key <COMP> { [ Multi_key ] };
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <ESC> { [ Escape ] };
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ SunF36 ] };
+ key <FK12> { [ SunF37 ] };
+ key <STOP> { [ L1, L1 ], [ SunStop ] };
+ key <AGAI> { [ L2, L2 ], [ SunAgain ] };
+ key <PROP> { [ L3, L3 ], [ SunProps ] };
+ key <UNDO> { [ L4, L4 ], [ SunUndo ] };
+ key <FRNT> { [ L5, L5 ], [ SunFront ] };
+ key <COPY> { [ L6, L6 ], [ SunCopy ] };
+ key <OPEN> { [ L7, L7 ], [ SunOpen ] };
+ key <PAST> { [ L8, L8 ], [ SunPaste ] };
+ key <FIND> { [ L9, L9 ], [ SunFind ] };
+ key <CUT> { [ L10, L10 ], [ SunCut ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <PRSC> { [ R2, R2 ], [ Print, SunSys_Req ] };
+ key <SCLK> { [ R3, R3 ], [ Scroll_Lock ] };
+ key <PAUS> { [ R1, R1 ], [ Pause, Break ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <UP> { [ Up ] };
+ key <DOWN> { [ Down ] };
+
+ key <DELE> { [ Delete ] };
+ key <INS> { [ Insert ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+ key <HOME> { [ Home ] };
+ key <END> { [ End ] };
+ key <HELP> { [ Help ] };
+
+ // End "Editing" section, begin "Keypad"
+ key <NMLK> { [ Num_Lock ] };
+ key <KPDV> { [ R5, R5 ], [ KP_Divide ] };
+ key <KPMU> { [ R6, R6 ], [ KP_Multiply ] };
+ key <KPSU> { [ R4, R4 ], [ KP_Subtract ] };
+
+ key <KP7> { [ R7, R7 ], [ KP_7, Home ] };
+ key <KP8> { [ Up, R8 ], [ KP_8 ] };
+ key <KP9> { [ R9, R9 ], [ KP_9, Prior ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP4> { [ Left, R10 ], [ KP_4 ] };
+ key <KP5> { [ R11, R11 ], [ KP_5 ] };
+ key <KP6> { [ Right, R12 ], [ KP_6 ] };
+
+ key <KP1> { [ R13, R13 ], [ KP_1, End ] };
+ key <KP2> { [ Down, R14 ], [ KP_2 ] };
+ key <KP3> { [ R15, R15 ], [ KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_Insert, KP_Insert ], [ KP_0 ] };
+ key <KPDL> { [ KP_Delete, KP_Delete ], [ KP_Decimal ] };
+ // End "Keypad" section,
+ // begin "four keys up on the right"
+
+ key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
+ key <VOL-> { [ SunAudioLowerVolume, SunVideoLowerBrightness ] };
+ key <VOL+> { [ SunAudioRaiseVolume, SunVideoRaiseBrightness ] };
+ key <POWR> { [ SunPowerSwitch, SunPowerSwitchShift ] };
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Mod1 { Meta_L, Meta_R };
+ modifier_map Mod2 { Alt_R };
+ modifier_map Mod3 { Num_Lock };
+ modifier_map Mod4 { Alt_L };
+};
+
+xkb_symbols "type5hobo" {
+
+ // Alphanumeric section
+ key <TLDE> { [ backslash, bar ], [ prolongedsound ] };
+ key <AE01> { [ 1, exclam ], [ kana_NU ] };
+ key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
+ key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
+ key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
+ key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
+ key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
+ key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ], [ KP_7 ]};
+ key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ], [ KP_8 ]};
+ key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ], [ KP_9 ]};
+ key <AE10> { [ 0 ], [ kana_WA, kana_WO ], [ KP_Multiply]};
+ key <AE11> { [ minus, equal ], [ kana_HO ] };
+ key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ q, Q ], [ kana_TA ] };
+ key <AD02> { [ w, W ], [ kana_TE ] };
+ key <AD03> { [ e, E ], [ kana_I, kana_i ] };
+ key <AD04> { [ r, R ], [ kana_SU ] };
+ key <AD05> { [ t, T ], [ kana_KA ] };
+ key <AD06> { [ y, Y ], [ kana_N ] };
+ key <AD07> { [ u, U ], [ kana_NA ], [ KP_4 ] };
+ key <AD08> { [ i, I ], [ kana_NI ], [ KP_5 ] };
+ key <AD09> { [ o, O ], [ kana_RA ], [ KP_6 ] };
+ key <AD10> { [ p, P ], [ kana_SE ], [ KP_Subtract]};
+ key <AD11> { [ at, quoteleft ], [ voicedsound ] };
+ key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
+ key <RTRN> { [ Return ], [ NoSymbol, NoSymbol], [ KP_Enter ] };
+
+ key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ a, A ], [ kana_CHI ] };
+ key <AC02> { [ s, S ], [ kana_TO ] };
+ key <AC03> { [ d, D ], [ kana_SHI ] };
+ key <AC04> { [ f, F ], [ kana_HA ] };
+ key <AC05> { [ g, G ], [ kana_KI ] };
+ key <AC06> { [ h, H ], [ kana_KU ] };
+ key <AC07> { [ j, J ], [ kana_MA ], [ KP_1 ]};
+ key <AC08> { [ k, K ], [ kana_NO ], [ KP_2 ]};
+ key <AC09> { [ l, L ], [ kana_RI ], [ KP_3 ]};
+ key <AC10> { [ semicolon, plus], [ kana_RE ], [ KP_Add ]};
+ key <AC11> { [ colon, asterisk ], [ kana_KE ] };
+ key <BKSL> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
+ key <AB02> { [ x, X ], [ kana_SA ] };
+ key <AB03> { [ c, C ], [ kana_SO ] };
+ key <AB04> { [ v, V ], [ kana_HI ] };
+ key <AB05> { [ b, B ], [ kana_KO ] };
+ key <AB06> { [ n, N ], [ kana_MI ] };
+ key <AB07> { [ m, M ], [ kana_MO ], [ KP_0 ]};
+ key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
+ key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ], [ KP_Decimal ] };
+ key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ], [ KP_Divide ]};
+ key <UNDR> { [ backslash, underscore], [ kana_RO ] };
+ key <RTSH> { [ Shift_R ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <EXEC> { [ Execute ] };
+ key <SPCE> { [ space ] };
+ key <KANJ> { [ Kanji ] };
+ key <HENK> { [ Henkan_Mode ] };
+ key <LALT> { [ Alt_L ] };
+ key <ALGR> { [ Mode_switch ] };
+ key <LMTA> { [ Meta_L ] };
+ key <RMTA> { [ Meta_R ] };
+ key <COMP> { [ Multi_key ] };
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <ESC> { [ Escape ] };
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ SunF36 ] };
+ key <FK12> { [ SunF37 ] };
+ key <STOP> { [ L1, L1 ], [ SunStop ] };
+ key <AGAI> { [ L2, L2 ], [ SunAgain ] };
+ key <PROP> { [ L3, L3 ], [ SunProps ] };
+ key <UNDO> { [ L4, L4 ], [ SunUndo ] };
+ key <FRNT> { [ L5, L5 ], [ SunFront ] };
+ key <COPY> { [ L6, L6 ], [ SunCopy ] };
+ key <OPEN> { [ L7, L7 ], [ SunOpen ] };
+ key <PAST> { [ L8, L8 ], [ SunPaste ] };
+ key <FIND> { [ L9, L9 ], [ SunFind ] };
+ key <CUT> { [ L10, L10 ], [ SunCut ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <PRSC> { [ R2, R2 ], [ Print, SunSys_Req ] };
+ key <SCLK> { [ R3, R3 ], [ Scroll_Lock ] };
+ key <PAUS> { [ R1, R1 ], [ Pause, Break ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <UP> { [ Up ] };
+ key <DOWN> { [ Down ] };
+
+ key <DELE> { [ Delete ] };
+ key <INS> { [ Insert ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+ key <HOME> { [ Home ] };
+ key <END> { [ End ] };
+ key <HELP> { [ Help ] };
+
+ // End "Editing" section, begin "Keypad"
+ key <NMLK> { [ Num_Lock ] };
+// key <KPDV> { [ R5, R5 ], [ KP_Divide ] };
+// key <KPMU> { [ R6, R6 ], [ KP_Multiply ] };
+// key <KPSU> { [ R4, R4 ], [ KP_Subtract ] };
+
+// key <KP7> { [ R7, R7 ], [ KP_7, Home ] };
+// key <KP8> { [ Up, R8 ], [ KP_8 ] };
+// key <KP9> { [ R9, R9 ], [ KP_9, Prior ] };
+// key <KPAD> { [ KP_Add ] };
+
+// key <KP4> { [ Left, R10 ], [ KP_4 ] };
+// key <KP5> { [ R11, R11 ], [ KP_5 ] };
+// key <KP6> { [ Right, R12 ], [ KP_6 ] };
+
+// key <KP1> { [ R13, R13 ], [ KP_1, End ] };
+// key <KP2> { [ Down, R14 ], [ KP_2 ] };
+// key <KP3> { [ R15, R15 ], [ KP_3 ] };
+// key <KPEN> { [ KP_Enter ] };
+
+// key <KP0> { [ KP_Insert, KP_Insert ], [ KP_0 ] };
+// key <KPDL> { [ KP_Delete, KP_Delete ], [ KP_Decimal ] };
+ // End "Keypad" section,
+ // begin "four keys up on the right"
+
+ key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
+ key <VOL-> { [ SunAudioLowerVolume, SunVideoLowerBrightness ] };
+ key <VOL+> { [ SunAudioRaiseVolume, SunVideoRaiseBrightness ] };
+ key <POWR> { [ SunPowerSwitch, SunPowerSwitchShift ] };
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Mod1 { Meta_L, Meta_R };
+ modifier_map Mod2 { Alt_R };
+ modifier_map Mod3 { Num_Lock };
+ modifier_map Mod4 { Alt_L };
+};
+
+// layout for a Japanese Type 6 Sun keyboard
+// Just shows differences from Type 6 US layout
+partial
+xkb_symbols "type6" {
+
+ // Alphanumeric section
+ // Though Yen symbol is engraved on key AE13, JA L10N folks want backslash.
+ key <AE13> { [ backslash, bar ], [ prolongedsound ] };
+ key <AE01> { [ 1, exclam ], [ kana_NU ] };
+ key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
+ key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
+ key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
+ key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
+ key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
+ key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
+ key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
+ key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
+ key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
+ key <AE11> { [ minus, equal ], [ kana_HO ] };
+ key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
+
+ key <AD01> { [ q, Q ], [ kana_TA ] };
+ key <AD02> { [ w, W ], [ kana_TE ] };
+ key <AD03> { [ e, E ], [ kana_I, kana_i ] };
+ key <AD04> { [ r, R ], [ kana_SU ] };
+ key <AD05> { [ t, T ], [ kana_KA ] };
+ key <AD06> { [ y, Y ], [ kana_N ] };
+ key <AD07> { [ u, U ], [ kana_NA ] };
+ key <AD08> { [ i, I ], [ kana_NI ] };
+ key <AD09> { [ o, O ], [ kana_RA ] };
+ key <AD10> { [ p, P ], [ kana_SE ] };
+ key <AD11> { [ at, quoteleft ], [ voicedsound ] };
+ key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
+
+ key <AC01> { [ a, A ], [ kana_CHI ] };
+ key <AC02> { [ s, S ], [ kana_TO ] };
+ key <AC03> { [ d, D ], [ kana_SHI ] };
+ key <AC04> { [ f, F ], [ kana_HA ] };
+ key <AC05> { [ g, G ], [ kana_KI ] };
+ key <AC06> { [ h, H ], [ kana_KU ] };
+ key <AC07> { [ j, J ], [ kana_MA ] };
+ key <AC08> { [ k, K ], [ kana_NO ] };
+ key <AC09> { [ l, L ], [ kana_RI ] };
+ key <AC10> { [ semicolon, plus ], [ kana_RE ] };
+ key <AC11> { [ colon, asterisk ], [ kana_KE ] };
+ key <BKSL> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
+
+ key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
+ key <AB02> { [ x, X ], [ kana_SA ] };
+ key <AB03> { [ c, C ], [ kana_SO ] };
+ key <AB04> { [ v, V ], [ kana_HI ] };
+ key <AB05> { [ b, B ], [ kana_KO ] };
+ key <AB06> { [ n, N ], [ kana_MI ] };
+ key <AB07> { [ m, M ], [ kana_MO ] };
+ key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
+ key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
+ key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ]};
+ key <AB11> { [ backslash, underscore], [ kana_RO ] };
+ key <UNDR> { [ backslash, underscore], [ kana_RO ] };
+
+ key <EXEC> { [ Execute ] };
+ key <KANJ> { [ Kanji ] };
+ key <HENK> { [ Henkan_Mode ] };
+ key <ALGR> { [ Kana_Lock, Mode_switch ] };
+ // End alphanumeric section
+};
+
+xkb_symbols "x86" {
+ include "sun_vndr/us(pc101)"
+ include "sun_vndr/jp(basic)"
+ key <TLDE> { [ Henkan_Mode, Henkan_Mode ], [ Henkan_Mode ] };
+
+ key <AE10> { [ 0, asciitilde ], [ kana_WA, kana_WO ]};
+ key <AE13> { [ backslash, bar ], [ prolongedsound ]};
+
+
+ key <AC12> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ]};
+
+ key <ALGR> { [ Mode_switch ] };
+ key <RALT> { [ Alt_R ] };
+
+};
+
+xkb_symbols "J3100" {
+ include "sun_vndr/us(pc101)"
+
+ // Alphanumeric section
+ key <AE01> { [ 1, exclam ], [ kana_NU ] };
+ key <AE02> { [ 2, quotedbl ], [ kana_FU ] };
+ key <AE03> { [ 3, numbersign ], [ kana_A, kana_a ] };
+ key <AE04> { [ 4, dollar ], [ kana_U, kana_u ] };
+ key <AE05> { [ 5, percent ], [ kana_E, kana_e ] };
+ key <AE06> { [ 6, ampersand ], [ kana_O, kana_o ] };
+ key <AE07> { [ 7, apostrophe ], [ kana_YA, kana_ya ] };
+ key <AE08> { [ 8, parenleft ], [ kana_YU, kana_yu ] };
+ key <AE09> { [ 9, parenright ], [ kana_YO, kana_yo ] };
+ key <AE10> { [ 0 ], [ kana_WA, kana_WO ] };
+ key <AE11> { [ minus, equal ], [ kana_HO ] };
+ key <AE12> { [ asciicircum, asciitilde], [ kana_HE ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ q, Q ], [ kana_TA ] };
+ key <AD02> { [ w, W ], [ kana_TE ] };
+ key <AD03> { [ e, E ], [ kana_I, kana_i ] };
+ key <AD04> { [ r, R ], [ kana_SU ] };
+ key <AD05> { [ t, T ], [ kana_KA ] };
+ key <AD06> { [ y, Y ], [ kana_N ] };
+ key <AD07> { [ u, U ], [ kana_NA ] };
+ key <AD08> { [ i, I ], [ kana_NI ] };
+ key <AD09> { [ o, O ], [ kana_RA ] };
+ key <AD10> { [ p, P ], [ kana_SE ] };
+ key <AD11> { [ at, quoteleft ], [ voicedsound ] };
+ key <AD12> { [ bracketleft, braceleft ], [ semivoicedsound, kana_openingbracket ] };
+ key <RTRN> { [ Return ] };
+
+ key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ a, A ], [ kana_CHI ] };
+ key <AC02> { [ s, S ], [ kana_TO ] };
+ key <AC03> { [ d, D ], [ kana_SHI ] };
+ key <AC04> { [ f, F ], [ kana_HA ] };
+ key <AC05> { [ g, G ], [ kana_KI ] };
+ key <AC06> { [ h, H ], [ kana_KU ] };
+ key <AC07> { [ j, J ], [ kana_MA ] };
+ key <AC08> { [ k, K ], [ kana_NO ] };
+ key <AC09> { [ l, L ], [ kana_RI ] };
+ key <AC10> { [ semicolon, plus ], [ kana_RE ] };
+ key <AC11> { [ colon, asterisk ], [ kana_KE ] };
+ key <TLDE> { [ bracketright, braceright ], [ kana_MU, kana_closingbracket ] };
+
+ key <AB01> { [ z, Z ], [ kana_TSU, kana_tsu ] };
+ key <AB02> { [ x, X ], [ kana_SA ] };
+ key <AB03> { [ c, C ], [ kana_SO ] };
+ key <AB04> { [ v, V ], [ kana_HI ] };
+ key <AB05> { [ b, B ], [ kana_KO ] };
+ key <AB06> { [ n, N ], [ kana_MI ] };
+ key <AB07> { [ m, M ], [ kana_MO ] };
+ key <AB08> { [ comma, less ], [ kana_NE, kana_comma ] };
+ key <AB09> { [ period, greater ], [ kana_RU, kana_fullstop ] };
+ key <AB10> { [ slash, question ], [ kana_ME, kana_conjunctive ]};
+// key <UNDR> { [ backslash, underscore], [ kana_RO ] };
+
+ key <SPCE> { [ space ] };
+// key <KANJ> { [ Kanji ] };
+// key <HENK> { [ Henkan_Mode ] };
+// key <LNFD> { [ backslash, underscore], [ kana_RO ]};
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <ESC> { [ Escape ] };
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ SunF36 ] };
+ key <FK12> { [ SunF37 ] };
+ key <BKSL> { [ backslash, bar ], [ prolongedsound ] };
+// key <BRCR> { [ Linefeed ] };
+// key <EXEC> { [ Execute ] };
+
+ key <ESC> { [ Escape, 3 ] };
+
+ key <AE02> { [ 2, at ], [ kana_FU ]};
+ key <AE06> { [ 6, asciicircum ], [ kana_O, kana_o ]};
+ key <AE07> { [ 7, ampersand ], [ kana_YA, kana_ya ]};
+ key <AE08> { [ 8, asterisk ], [ kana_YU, kana_yu ]};
+ key <AE09> { [ 9, parenleft ], [ kana_YO, kana_yo ]};
+ key <AE10> { [ 0, parenright ], [ kana_WA, kana_WO ]};
+ key <AE11> { [ minus, underscore ], [ kana_HO ]};
+ key <AE12> { [ equal, plus ], [ kana_HE ]};
+
+ key <BKSL> { [ backslash, bar ], [ prolongedsound ]};
+ key <AE12> { [ equal, plus ], [ kana_HE ]};
+
+ key <AD11> { [ bracketleft, braceleft ], [ voicedsound ]};
+ key <AD12> { [ bracketright, braceright ], [ semivoicedsound, kana_openingbracket ]};
+
+ key <AC10> { [ semicolon, colon ], [ kana_RE ]};
+ key <AC11> { [ quoteright, quotedbl ], [ kana_KE ]};
+
+ key <TLDE> { [ quoteleft, asciitilde ], [ kana_MU, kana_closingbracket ]};
+ key <LSGT> { [ backslash, bar ], [ kana_RO ]};
+// key <ALGR> { [ Mode_switch ] };
+ key <RALT> { [ Henkan_Mode ] };
+ key <RCTL> { [ Mode_switch ] };
+
+};
+
+xkb_symbols "Muhenkan_x86" {
+ include "sun_vndr/jp(x86)"
+
+ key <EXEC> { [ Muhenkan ] };
+};
+
+
+
+partial
+xkb_symbols "type7" {
+ include "sun_vndr/jp(type6)"
+ key <AE10> { [ 0, asciitilde ], [ kana_WA, kana_WO ] };
+ key <TLDE> { [ Henkan_Mode ] };
+ key <HENK> { [ Kana_Lock, Mode_switch ] };
+ key <ALGR> { [ Alt_R, Alt_R ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/kr b/xorg-server/xkeyboard-config/symbols/sun_vndr/kr
index 0973943bf..62cf63d71 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/kr
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/kr
@@ -1,97 +1,97 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-// Korean layout for a Type 6 Sun keyboard
-partial
-xkb_symbols "type6" {
-
- // A few keys are different
- key <ALGR> { [ Hangul ] };
- key <COMP> { [ Hangul_Hanja ] };
- key <KANA> { [ Hangul ] };
- key <EISU> { [ Hangul_Hanja ] };
- key <BKSL> { [ backslash, bar, brokenbar ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-// Korean layout for a Type 4 Sun keyboard
-xkb_symbols "type4" {
-
- key <BKSL> { [ backslash, bar, brokenbar ] };
-
- key <LNFD> { [ Hangul ] };
- key <RALT> { [ Linefeed ] };
- key <COMP> { [ Hangul_Hanja ] };
-
- include "level3(ralt_switch)"
-
-};
-
-// Korean layout for a Type 5 Sun keyboard
-xkb_symbols "type5" {
-
- // A few keys are different
- key <ALGR> { [ Hangul ] };
- key <COMP> { [ Hangul_Hanja ] };
- key <BKSL> { [ backslash, bar, brokenbar ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial default alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/kr(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+// Korean layout for a Type 6 Sun keyboard
+partial
+xkb_symbols "type6" {
+
+ // A few keys are different
+ key <ALGR> { [ Hangul ] };
+ key <COMP> { [ Hangul_Hanja ] };
+ key <KANA> { [ Hangul ] };
+ key <EISU> { [ Hangul_Hanja ] };
+ key <BKSL> { [ backslash, bar, brokenbar ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+// Korean layout for a Type 4 Sun keyboard
+xkb_symbols "type4" {
+
+ key <BKSL> { [ backslash, bar, brokenbar ] };
+
+ key <LNFD> { [ Hangul ] };
+ key <RALT> { [ Linefeed ] };
+ key <COMP> { [ Hangul_Hanja ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+// Korean layout for a Type 5 Sun keyboard
+xkb_symbols "type5" {
+
+ // A few keys are different
+ key <ALGR> { [ Hangul ] };
+ key <COMP> { [ Hangul_Hanja ] };
+ key <BKSL> { [ backslash, bar, brokenbar ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial default alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/kr(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/lt b/xorg-server/xkeyboard-config/symbols/sun_vndr/lt
index b82ebcfb9..8e8bee0f8 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/lt
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/lt
@@ -1,118 +1,118 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Lithuania";
-
-
-
- key <TLDE> { [ quoteleft, asciitilde, notsign, brokenbar ] };
- key <AE01> { [ aogonek, Aogonek, 1, exclam ] };
- key <AE02> { [ ccaron, Ccaron, 2, at ] };
- key <AE03> { [ eogonek, Eogonek, 3, numbersign ] };
- key <AE04> { [ eabovedot, Eabovedot, 4, dollar ] };
- key <AE05> { [ iogonek, Iogonek, 5, percent ] };
- key <AE06> { [ scaron, Scaron, 6, asciicircum ] };
- key <AE07> { [ uogonek, Uogonek, 7, ampersand ] };
- key <AE08> { [ umacron, Umacron, 8, asterisk ] };
- key <AE09> { [ doublelowquotemark, parenleft, 9, parenleft ] };
- key <AE10> { [ leftdoublequotemark, parenright, 0, parenright ] };
- key <AE11> { [ minus, underscore, backslash, questiondown ] };
- key <AE12> { [ zcaron, Zcaron, equal, plus ] };
-
- key <AD01> { [ q, Q, at, Greek_OMEGA ] };
- key <AD02> { [ w, W, lstroke, Lstroke ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD04> { [ r, R, paragraph, registered ] };
- key <AD05> { [ t, T, tslash, Tslash ] };
- key <AD06> { [ y, Y, leftarrow, yen ] };
- key <AD07> { [ u, U, downarrow, uparrow ] };
- key <AD08> { [ i, I, rightarrow, idotless ] };
- key <AD09> { [ o, O, oslash, Ooblique ] };
- key <AD10> { [ p, P, thorn, THORN ] };
- key <AD11> { [ bracketleft, braceleft, dead_diaeresis, dead_abovering ] };
- key <AD12> { [ bracketright, braceright, dead_tilde, dead_macron ] };
-
- key <AC01> { [ a, A, ae, AE ] };
- key <AC02> { [ s, S, ssharp, section ] };
- key <AC03> { [ d, D, eth, ETH ] };
- key <AC04> { [ f, F, dstroke, ordfeminine ] };
- key <AC05> { [ g, G, eng, ENG ] };
- key <AC06> { [ h, H, hstroke, Hstroke ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K, kra, ampersand ] };
- key <AC09> { [ l, L, lstroke, Lstroke ] };
- key <AC10> { [ semicolon, colon, dead_acute, dead_doubleacute ] };
- key <AC11> { [ apostrophe, quotedbl, dead_circumflex, dead_caron ] };
- key <LSGT> { [ backslash, bar, dead_grave, dead_breve ] };
-
- key <BKSL> { [ backslash, bar, dead_grave, dead_breve ] };
- key <AB01> { [ z, Z, guillemotleft, less ] };
- key <AB02> { [ x, X, guillemotright, greater ] };
- key <AB03> { [ c, C, cent, copyright ] };
- key <AB04> { [ v, V, leftdoublequotemark, leftsinglequotemark ] };
- key <AB05> { [ b, B, rightdoublequotemark, rightsinglequotemark ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M, mu, masculine ] };
- key <AB08> { [ comma, less, ampersand, multiply ] };
- key <AB09> { [ period, greater, periodcentered, division ] };
- key <AB10> { [ slash, question, dead_belowdot, dead_abovedot ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/lt(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Lithuania";
+
+
+
+ key <TLDE> { [ quoteleft, asciitilde, notsign, brokenbar ] };
+ key <AE01> { [ aogonek, Aogonek, 1, exclam ] };
+ key <AE02> { [ ccaron, Ccaron, 2, at ] };
+ key <AE03> { [ eogonek, Eogonek, 3, numbersign ] };
+ key <AE04> { [ eabovedot, Eabovedot, 4, dollar ] };
+ key <AE05> { [ iogonek, Iogonek, 5, percent ] };
+ key <AE06> { [ scaron, Scaron, 6, asciicircum ] };
+ key <AE07> { [ uogonek, Uogonek, 7, ampersand ] };
+ key <AE08> { [ umacron, Umacron, 8, asterisk ] };
+ key <AE09> { [ doublelowquotemark, parenleft, 9, parenleft ] };
+ key <AE10> { [ leftdoublequotemark, parenright, 0, parenright ] };
+ key <AE11> { [ minus, underscore, backslash, questiondown ] };
+ key <AE12> { [ zcaron, Zcaron, equal, plus ] };
+
+ key <AD01> { [ q, Q, at, Greek_OMEGA ] };
+ key <AD02> { [ w, W, lstroke, Lstroke ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD04> { [ r, R, paragraph, registered ] };
+ key <AD05> { [ t, T, tslash, Tslash ] };
+ key <AD06> { [ y, Y, leftarrow, yen ] };
+ key <AD07> { [ u, U, downarrow, uparrow ] };
+ key <AD08> { [ i, I, rightarrow, idotless ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD10> { [ p, P, thorn, THORN ] };
+ key <AD11> { [ bracketleft, braceleft, dead_diaeresis, dead_abovering ] };
+ key <AD12> { [ bracketright, braceright, dead_tilde, dead_macron ] };
+
+ key <AC01> { [ a, A, ae, AE ] };
+ key <AC02> { [ s, S, ssharp, section ] };
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, dstroke, ordfeminine ] };
+ key <AC05> { [ g, G, eng, ENG ] };
+ key <AC06> { [ h, H, hstroke, Hstroke ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K, kra, ampersand ] };
+ key <AC09> { [ l, L, lstroke, Lstroke ] };
+ key <AC10> { [ semicolon, colon, dead_acute, dead_doubleacute ] };
+ key <AC11> { [ apostrophe, quotedbl, dead_circumflex, dead_caron ] };
+ key <LSGT> { [ backslash, bar, dead_grave, dead_breve ] };
+
+ key <BKSL> { [ backslash, bar, dead_grave, dead_breve ] };
+ key <AB01> { [ z, Z, guillemotleft, less ] };
+ key <AB02> { [ x, X, guillemotright, greater ] };
+ key <AB03> { [ c, C, cent, copyright ] };
+ key <AB04> { [ v, V, leftdoublequotemark, leftsinglequotemark ] };
+ key <AB05> { [ b, B, rightdoublequotemark, rightsinglequotemark ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M, mu, masculine ] };
+ key <AB08> { [ comma, less, ampersand, multiply ] };
+ key <AB09> { [ period, greater, periodcentered, division ] };
+ key <AB10> { [ slash, question, dead_belowdot, dead_abovedot ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/lt(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/lv b/xorg-server/xkeyboard-config/symbols/sun_vndr/lv
index d1573868b..befcfc679 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/lv
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/lv
@@ -1,117 +1,117 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Latvia";
-
-
- key <TLDE> { [ grave, asciitilde, acute, asciitilde ] };
- key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
- key <AE02> { [ 2, at, twosuperior, oneeighth ] };
- key <AE03> { [ 3, numbersign, threesuperior, sterling ] };
- key <AE04> { [ 4, dollar, EuroSign, cent ] };
- key <AE05> { [ 5, percent, onehalf, threeeighths ] };
- key <AE06> { [ 6, asciicircum, threequarters, fiveeighths ] };
- key <AE07> { [ 7, ampersand, braceleft, seveneighths ] };
- key <AE08> { [ 8, asterisk, bracketleft, trademark ] };
- key <AE09> { [ 9, parenleft, bracketright, plusminus ] };
- key <AE10> { [ 0, parenright, braceright, degree ] };
- key <AE11> { [ minus, underscore, backslash, questiondown ] };
- key <AE12> { [ equal, plus, endash, emdash ] };
-
- key <AD01> { [ q, Q, q, Q ] };
- key <AD02> { [ w, W, w, W ] };
- key <AD03> { [ e, E, emacron, Emacron ] };
- key <AD04> { [ r, R, rcedilla, Rcedilla ] };
- key <AD05> { [ t, T, t, T ] };
- key <AD06> { [ y, Y, y, Y ] };
- key <AD07> { [ u, U, umacron, Umacron ] };
- key <AD08> { [ i, I, imacron, Imacron ] };
- key <AD09> { [ o, O, omacron, Omacron ] };
- key <AD10> { [ p, P, p, P ] };
- key <AD11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] };
- key <AD12> { [ bracketright, braceright, guillemotright, rightdoublequotemark ] };
-
- key <AC01> { [ a, A, amacron, Amacron ] };
- key <AC02> { [ s, S, scaron, Scaron ] };
- key <AC03> { [ d, D, d, D ] };
- key <AC04> { [ f, F, f, F ] };
- key <AC05> { [ g, G, gcedilla, Gcedilla ] };
- key <AC06> { [ h, H, h, H ] };
- key <AC07> { [ j, J, j, J ] };
- key <AC08> { [ k, K, kcedilla, Kcedilla ] };
- key <AC09> { [ l, L, lcedilla, Lcedilla ] };
- key <AC10> { [ semicolon, colon, semicolon, colon ] };
- key <AC11> { [ apostrophe, quotedbl, leftdoublequotemark, doublelowquotemark ] };
- key <LSGT> { [ backslash, bar, degree, brokenbar ] };
-
- key <BKSL> { [ backslash, bar, grave, breve ] };
- key <AB01> { [ z, Z, zcaron, Zcaron ] };
- key <AB02> { [ x, X, x, X ] };
- key <AB03> { [ c, C, ccaron, Ccaron ] };
- key <AB04> { [ v, V, v, V ] };
- key <AB05> { [ b, B, b, B ] };
- key <AB06> { [ n, N, ncedilla, Ncedilla ] };
- key <AB07> { [ m, M, m, M ] };
- key <AB08> { [ comma, less, horizconnector, multiply ] };
- key <AB09> { [ period, greater, periodcentered, division ] };
- key <AB10> { [ slash, question, slash, abovedot ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/lv(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Latvia";
+
+
+ key <TLDE> { [ grave, asciitilde, acute, asciitilde ] };
+ key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
+ key <AE02> { [ 2, at, twosuperior, oneeighth ] };
+ key <AE03> { [ 3, numbersign, threesuperior, sterling ] };
+ key <AE04> { [ 4, dollar, EuroSign, cent ] };
+ key <AE05> { [ 5, percent, onehalf, threeeighths ] };
+ key <AE06> { [ 6, asciicircum, threequarters, fiveeighths ] };
+ key <AE07> { [ 7, ampersand, braceleft, seveneighths ] };
+ key <AE08> { [ 8, asterisk, bracketleft, trademark ] };
+ key <AE09> { [ 9, parenleft, bracketright, plusminus ] };
+ key <AE10> { [ 0, parenright, braceright, degree ] };
+ key <AE11> { [ minus, underscore, backslash, questiondown ] };
+ key <AE12> { [ equal, plus, endash, emdash ] };
+
+ key <AD01> { [ q, Q, q, Q ] };
+ key <AD02> { [ w, W, w, W ] };
+ key <AD03> { [ e, E, emacron, Emacron ] };
+ key <AD04> { [ r, R, rcedilla, Rcedilla ] };
+ key <AD05> { [ t, T, t, T ] };
+ key <AD06> { [ y, Y, y, Y ] };
+ key <AD07> { [ u, U, umacron, Umacron ] };
+ key <AD08> { [ i, I, imacron, Imacron ] };
+ key <AD09> { [ o, O, omacron, Omacron ] };
+ key <AD10> { [ p, P, p, P ] };
+ key <AD11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] };
+ key <AD12> { [ bracketright, braceright, guillemotright, rightdoublequotemark ] };
+
+ key <AC01> { [ a, A, amacron, Amacron ] };
+ key <AC02> { [ s, S, scaron, Scaron ] };
+ key <AC03> { [ d, D, d, D ] };
+ key <AC04> { [ f, F, f, F ] };
+ key <AC05> { [ g, G, gcedilla, Gcedilla ] };
+ key <AC06> { [ h, H, h, H ] };
+ key <AC07> { [ j, J, j, J ] };
+ key <AC08> { [ k, K, kcedilla, Kcedilla ] };
+ key <AC09> { [ l, L, lcedilla, Lcedilla ] };
+ key <AC10> { [ semicolon, colon, semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl, leftdoublequotemark, doublelowquotemark ] };
+ key <LSGT> { [ backslash, bar, degree, brokenbar ] };
+
+ key <BKSL> { [ backslash, bar, grave, breve ] };
+ key <AB01> { [ z, Z, zcaron, Zcaron ] };
+ key <AB02> { [ x, X, x, X ] };
+ key <AB03> { [ c, C, ccaron, Ccaron ] };
+ key <AB04> { [ v, V, v, V ] };
+ key <AB05> { [ b, B, b, B ] };
+ key <AB06> { [ n, N, ncedilla, Ncedilla ] };
+ key <AB07> { [ m, M, m, M ] };
+ key <AB08> { [ comma, less, horizconnector, multiply ] };
+ key <AB09> { [ period, greater, periodcentered, division ] };
+ key <AB10> { [ slash, question, slash, abovedot ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/lv(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/nl b/xorg-server/xkeyboard-config/symbols/sun_vndr/nl
index 8469039f7..3e0ba2011 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/nl
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/nl
@@ -1,148 +1,148 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-default partial alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Netherlands";
-
- key <TLDE> { [ at, section, notsign ] };
- key <AE01> { [ 1, exclam, onesuperior ] };
- key <AE02> { [ 2, quotedbl, twosuperior ] };
- key <AE03> { [ 3, numbersign, threesuperior ] };
- key <AE04> { [ 4, dollar, onequarter ] };
- key <AE05> { [ 5, percent, onehalf ] };
- key <AE06> { [ 6, ampersand, threequarters ] };
- key <AE07> { [ 7, underscore, sterling ] };
- key <AE08> { [ 8, parenleft, braceleft ] };
- key <AE09> { [ 9, parenright, braceright ] };
- key <AE10> { [ 0, quoteright, quoteleft ] };
- key <AE11> { [ slash, question, backslash ] };
- key <AE12> { [ degree, dead_tilde, dead_cedilla ] };
-
- key <AD03> { [ e, E, EuroSign ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [dead_diaeresis, dead_circumflex ] };
- key <AD12> { [ asterisk, bar, asciitilde ] };
-
- key <AC01> { [ a, A ] };
- key <AC02> { [ s, S, ssharp ] };
- key <AC04> { [ f, F ] };
- key <AC10> { [ plus, plusminus ] };
- key <AC11> { [dead_acute, dead_grave ] };
- key <BKSL> { [ less, greater, asciicircum ] };
-
- key <LSGT> { [bracketright, bracketleft, brokenbar ] };
- key <AB01> { [ z, Z, guillemotleft ] };
- key <AB02> { [ x, X, guillemotright ] };
- key <AB03> { [ c, C, cent ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M, mu ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, equal ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "type4" {
-
- name[Group1]="Netherlands - Sun type 4";
-
- key <BKSL> { [ at, section, notsign ] };
- key <BRCR> { [ backslash, bar ] };
- key <AE01> { [ 1, exclam, onesuperior ] };
- key <AE02> { [ 2, quotedbl, twosuperior ] };
- key <AE03> { [ 3, numbersign, threesuperior] };
- key <AE04> { [ 4, dollar, onequarter ] };
- key <AE05> { [ 5, percent, onehalf ] };
- key <AE06> { [ 6, ampersand, threequarters] };
- key <AE07> { [ 7, underscore, sterling ] };
- key <AE08> { [ 8, parenleft, braceleft ] };
- key <AE09> { [ 9, parenright, braceright ] };
- key <AE10> { [ 0, quoteright, quoteleft ] };
- key <AE11> { [ slash, question, backslash ] };
- key <AE12> { [ degree, dead_tilde, dead_cedilla] };
- key <AD03> { [ e, E, EuroSign, Eacute ]};
- key <AD11> { [ dead_diaeresis, dead_circumflex, asciitilde, asciicircum]};
- key <AD12> { [ asterisk, bar, asciitilde ] };
- key <AC02> { [ S, S, ssharp ] };
- key <AC10> { [ plus, plusminus ] };
- key <AC11> { [ dead_acute, dead_grave ] };
- key <TLDE> { [ less, greater, asciicircum ] };
- key <LSGT> { [ bracketleft, bracketright, brokenbar ] };
- key <AB01> { [ z, Z, guillemotleft] };
- key <AB02> { [ x, X, guillemotright] };
- key <AB03> { [ c, C, cent ] };
- key <AB07> { [ m, M, Greek_mu, masculine ] };
- key <AB08> { [ comma, semicolon, cedilla, guillemotleft] };
- key <AB09> { [ period, colon, periodcentered, guillemotright ] };
- key <AB10> { [ minus, equal, hyphen ] };
- key <CAPS> { [ SunAltGraph ] };
-// key <COMP> { [ SunCompose ] };
- key <ALGR> { [ Caps_Lock ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/nl(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+default partial alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Netherlands";
+
+ key <TLDE> { [ at, section, notsign ] };
+ key <AE01> { [ 1, exclam, onesuperior ] };
+ key <AE02> { [ 2, quotedbl, twosuperior ] };
+ key <AE03> { [ 3, numbersign, threesuperior ] };
+ key <AE04> { [ 4, dollar, onequarter ] };
+ key <AE05> { [ 5, percent, onehalf ] };
+ key <AE06> { [ 6, ampersand, threequarters ] };
+ key <AE07> { [ 7, underscore, sterling ] };
+ key <AE08> { [ 8, parenleft, braceleft ] };
+ key <AE09> { [ 9, parenright, braceright ] };
+ key <AE10> { [ 0, quoteright, quoteleft ] };
+ key <AE11> { [ slash, question, backslash ] };
+ key <AE12> { [ degree, dead_tilde, dead_cedilla ] };
+
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [dead_diaeresis, dead_circumflex ] };
+ key <AD12> { [ asterisk, bar, asciitilde ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S, ssharp ] };
+ key <AC04> { [ f, F ] };
+ key <AC10> { [ plus, plusminus ] };
+ key <AC11> { [dead_acute, dead_grave ] };
+ key <BKSL> { [ less, greater, asciicircum ] };
+
+ key <LSGT> { [bracketright, bracketleft, brokenbar ] };
+ key <AB01> { [ z, Z, guillemotleft ] };
+ key <AB02> { [ x, X, guillemotright ] };
+ key <AB03> { [ c, C, cent ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, equal ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "type4" {
+
+ name[Group1]="Netherlands - Sun type 4";
+
+ key <BKSL> { [ at, section, notsign ] };
+ key <BRCR> { [ backslash, bar ] };
+ key <AE01> { [ 1, exclam, onesuperior ] };
+ key <AE02> { [ 2, quotedbl, twosuperior ] };
+ key <AE03> { [ 3, numbersign, threesuperior] };
+ key <AE04> { [ 4, dollar, onequarter ] };
+ key <AE05> { [ 5, percent, onehalf ] };
+ key <AE06> { [ 6, ampersand, threequarters] };
+ key <AE07> { [ 7, underscore, sterling ] };
+ key <AE08> { [ 8, parenleft, braceleft ] };
+ key <AE09> { [ 9, parenright, braceright ] };
+ key <AE10> { [ 0, quoteright, quoteleft ] };
+ key <AE11> { [ slash, question, backslash ] };
+ key <AE12> { [ degree, dead_tilde, dead_cedilla] };
+ key <AD03> { [ e, E, EuroSign, Eacute ]};
+ key <AD11> { [ dead_diaeresis, dead_circumflex, asciitilde, asciicircum]};
+ key <AD12> { [ asterisk, bar, asciitilde ] };
+ key <AC02> { [ S, S, ssharp ] };
+ key <AC10> { [ plus, plusminus ] };
+ key <AC11> { [ dead_acute, dead_grave ] };
+ key <TLDE> { [ less, greater, asciicircum ] };
+ key <LSGT> { [ bracketleft, bracketright, brokenbar ] };
+ key <AB01> { [ z, Z, guillemotleft] };
+ key <AB02> { [ x, X, guillemotright] };
+ key <AB03> { [ c, C, cent ] };
+ key <AB07> { [ m, M, Greek_mu, masculine ] };
+ key <AB08> { [ comma, semicolon, cedilla, guillemotleft] };
+ key <AB09> { [ period, colon, periodcentered, guillemotright ] };
+ key <AB10> { [ minus, equal, hyphen ] };
+ key <CAPS> { [ SunAltGraph ] };
+// key <COMP> { [ SunCompose ] };
+ key <ALGR> { [ Caps_Lock ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/nl(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/no b/xorg-server/xkeyboard-config/symbols/sun_vndr/no
index bbb414da7..bcc8c30cc 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/no
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/no
@@ -1,144 +1,144 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Norway";
-
- key <TLDE> { [ bar, section ] };
- key <LSGT> { [ less, greater ] };
- key <BKSL> { [ apostrophe, asterisk, grave ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, numbersign, sterling ] };
- key <AE04> { [ 4, currency, dollar ] };
- key <AE05> { [ 5, percent, asciitilde ] };
- key <AE06> { [ 6, ampersand, asciicircum ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
- key <AE11> { [ plus, question ] };
- key <AE12> { [ backslash, dead_grave, dead_acute ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD11> { [ aring, Aring ] };
- key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde ] };
- key <AC10> { [ oslash, Oslash ] };
- key <AC11> { [ ae, AE ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-
- include "level3(ralt_switch)"
- include "kpdl(comma)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "type4" {
-
- name[Group1]="Norway - Sun type 4";
-
- key <BKSL> { [ bar, section ] };
- key <BRCR> { [ asciitilde, asciicircum] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, numbersign, sterling ] };
- key <AE04> { [ 4, currency, dollar ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright] };
- key <AE10> { [ 0, equal, braceright ] };
- key <AE11> { [ plus, question ] };
- key <AE12> { [ backslash, dead_grave, dead_acute ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD11> { [ aring, Aring ] };
- key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde ] };
- key <LCTL> { [ Caps_Lock ] };
- key <AC10> { [ Ooblique ] };
- key <AC11> { [ ae, AE ] };
- key <TLDE> { [ quoteright, asterisk, quoteleft ] };
- key <LSGT> { [ less, greater ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <CAPS> { [ Control_L ] };
-
- include "level3(ralt_switch)"
- include "kpdl(comma)"
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "type5" {
-
- name[Group1]="Norway - Sun type 5";
-
- key <AE05> { [ 5, percent, asciitilde ] };
- key <AE06> { [ 6, ampersand, asciicircum ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketright ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
-
- key <BKSL> { [ quoteright, asterisk, quoteleft ] };
- key <LSGT> { [ less, greater ] };
-
- include "level3(ralt_switch)"
- include "kpdl(comma)"
-
-};
-
-
-partial default alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/no(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Norway";
+
+ key <TLDE> { [ bar, section ] };
+ key <LSGT> { [ less, greater ] };
+ key <BKSL> { [ apostrophe, asterisk, grave ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, numbersign, sterling ] };
+ key <AE04> { [ 4, currency, dollar ] };
+ key <AE05> { [ 5, percent, asciitilde ] };
+ key <AE06> { [ 6, ampersand, asciicircum ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ plus, question ] };
+ key <AE12> { [ backslash, dead_grave, dead_acute ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde ] };
+ key <AC10> { [ oslash, Oslash ] };
+ key <AC11> { [ ae, AE ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "type4" {
+
+ name[Group1]="Norway - Sun type 4";
+
+ key <BKSL> { [ bar, section ] };
+ key <BRCR> { [ asciitilde, asciicircum] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, numbersign, sterling ] };
+ key <AE04> { [ 4, currency, dollar ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ plus, question ] };
+ key <AE12> { [ backslash, dead_grave, dead_acute ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde ] };
+ key <LCTL> { [ Caps_Lock ] };
+ key <AC10> { [ Ooblique ] };
+ key <AC11> { [ ae, AE ] };
+ key <TLDE> { [ quoteright, asterisk, quoteleft ] };
+ key <LSGT> { [ less, greater ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <CAPS> { [ Control_L ] };
+
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "type5" {
+
+ name[Group1]="Norway - Sun type 5";
+
+ key <AE05> { [ 5, percent, asciitilde ] };
+ key <AE06> { [ 6, ampersand, asciicircum ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketright ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+
+ key <BKSL> { [ quoteright, asterisk, quoteleft ] };
+ key <LSGT> { [ less, greater ] };
+
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+
+};
+
+
+partial default alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/no(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/pl b/xorg-server/xkeyboard-config/symbols/sun_vndr/pl
index 6295c3206..2fdf1fe06 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/pl
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/pl
@@ -1,101 +1,101 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Polish Developers";
-
- key <TLDE> { [ grave, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicirum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
- key <AD03> { [ e, E, eogonek, Eogonek ] };
- key <AD07> { [ u, U, EuroSign ] };
- key <AD09> { [ o, O, oacute, Oacute ] };
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
-
- key <AC01> { [ a, A, aogonek, Aogonek ] };
- key <AC02> { [ s, S, sacute, Sacute ] };
- key <AC09> { [ l, L, lstroke, Lstroke ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ apostrophe, quotedbl ] };
- key <BKSL> { [ backslash, bar, brokenbar ] };
-
- key <LSGT> { [ less, greater, bar, brokenbar ] };
- key <AB01> { [ z, Z, zabovedot, Zabovedot ] };
- key <AB02> { [ x, X, zacute, Zacute ] };
- key <AB03> { [ c, C, cacute, Cacute ] };
- key <AB06> { [ n, N, nacute, Nacute ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/pl(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Polish Developers";
+
+ key <TLDE> { [ grave, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicirum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+ key <AD03> { [ e, E, eogonek, Eogonek ] };
+ key <AD07> { [ u, U, EuroSign ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+
+ key <AC01> { [ a, A, aogonek, Aogonek ] };
+ key <AC02> { [ s, S, sacute, Sacute ] };
+ key <AC09> { [ l, L, lstroke, Lstroke ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+ key <BKSL> { [ backslash, bar, brokenbar ] };
+
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+ key <AB01> { [ z, Z, zabovedot, Zabovedot ] };
+ key <AB02> { [ x, X, zacute, Zacute ] };
+ key <AB03> { [ c, C, cacute, Cacute ] };
+ key <AB06> { [ n, N, nacute, Nacute ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/pl(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/pt b/xorg-server/xkeyboard-config/symbols/sun_vndr/pt
index b5b108632..9e0ec9502 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/pt
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/pt
@@ -1,142 +1,142 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Portugal";
-
- key <LSGT> { [ less, greater ] };
- key <TLDE> { [ backslash, bar ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, numbersign, sterling ] };
- key <AE04> { [ 4, dollar, section ] };
- key <AE05> { [ 5, percent, asciitilde ] };
- key <AE06> { [ 6, ampersand, asciicircum ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
- key <AE11> { [ quoteright, question, quoteleft ] };
- key <AE12> { [ guillemotleft, guillemotright ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD11> { [ plus, asterisk, dead_diaeresis ] };
- key <AD12> { [ dead_acute, dead_grave ] };
- key <BKSL> { [ dead_tilde, dead_circumflex ] };
- key <AC10> { [ ccedilla, Ccedilla ] };
- key <AC11> { [ masculine, ordfeminine ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "type4" {
-
- name[Group1]="Portugal - Sun type 4";
-
- key <BKSL> { [ bracketleft, braceleft, guillemotleft] };
- key <BRCR> { [ bracketright, braceright, guillemotright] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, numbersign, sterling ] };
- key <AE04> { [ 4, dollar, section ] };
- key <AE06> { [ 6, ampersand, notsign ] };
- key <AE07> { [ 7, slash ] };
- key <AE08> { [ 8, parenleft ] };
- key <AE09> { [ 9, parenright, backslash ] };
- key <AE10> { [ 0, equal, bar ] };
- key <AE11> { [ quoteright, question, quoteleft ] };
- key <AE12> { [ exclamdown, questiondown ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD11> { [ dead_diaeresis, asterisk, plus ] };
- key <AD12> { [ dead_acute, dead_grave, asciitilde ] };
- key <LCTL> { [ Caps_Lock ] };
- key <AC10> { [ ccedilla, Ccedilla ] };
- key <AC11> { [ masculine, ordfeminine] };
- key <TLDE> { [ dead_tilde, dead_circumflex, asciicircum ] };
- key <LSGT> { [ less, greater ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
- key <CAPS> { [ Control_L ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "type5" {
-
- name[Group1]="Portugal - Sun type 5";
-
- key <TLDE> { [ backslash, bar ] };
- key <AE05> { [ 5, percent, asciitilde ]};
- key <AE06> { [ 6, ampersand, asciicircum ]};
- key <AE07> { [ 7, slash, braceleft ]};
- key <AE08> { [ 8, parenleft, bracketleft ]};
- key <AE09> { [ 9, parenright, bracketright ]};
- key <AE10> { [ 0, equal, braceright ]};
- key <AE11> { [ quoteright, question, quoteleft ]};
-
- key <AD11> { [ plus, asterisk, dead_diaeresis ]};
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial default alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/pt(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Portugal";
+
+ key <LSGT> { [ less, greater ] };
+ key <TLDE> { [ backslash, bar ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, numbersign, sterling ] };
+ key <AE04> { [ 4, dollar, section ] };
+ key <AE05> { [ 5, percent, asciitilde ] };
+ key <AE06> { [ 6, ampersand, asciicircum ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ quoteright, question, quoteleft ] };
+ key <AE12> { [ guillemotleft, guillemotright ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD11> { [ plus, asterisk, dead_diaeresis ] };
+ key <AD12> { [ dead_acute, dead_grave ] };
+ key <BKSL> { [ dead_tilde, dead_circumflex ] };
+ key <AC10> { [ ccedilla, Ccedilla ] };
+ key <AC11> { [ masculine, ordfeminine ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "type4" {
+
+ name[Group1]="Portugal - Sun type 4";
+
+ key <BKSL> { [ bracketleft, braceleft, guillemotleft] };
+ key <BRCR> { [ bracketright, braceright, guillemotright] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, numbersign, sterling ] };
+ key <AE04> { [ 4, dollar, section ] };
+ key <AE06> { [ 6, ampersand, notsign ] };
+ key <AE07> { [ 7, slash ] };
+ key <AE08> { [ 8, parenleft ] };
+ key <AE09> { [ 9, parenright, backslash ] };
+ key <AE10> { [ 0, equal, bar ] };
+ key <AE11> { [ quoteright, question, quoteleft ] };
+ key <AE12> { [ exclamdown, questiondown ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD11> { [ dead_diaeresis, asterisk, plus ] };
+ key <AD12> { [ dead_acute, dead_grave, asciitilde ] };
+ key <LCTL> { [ Caps_Lock ] };
+ key <AC10> { [ ccedilla, Ccedilla ] };
+ key <AC11> { [ masculine, ordfeminine] };
+ key <TLDE> { [ dead_tilde, dead_circumflex, asciicircum ] };
+ key <LSGT> { [ less, greater ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+ key <CAPS> { [ Control_L ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "type5" {
+
+ name[Group1]="Portugal - Sun type 5";
+
+ key <TLDE> { [ backslash, bar ] };
+ key <AE05> { [ 5, percent, asciitilde ]};
+ key <AE06> { [ 6, ampersand, asciicircum ]};
+ key <AE07> { [ 7, slash, braceleft ]};
+ key <AE08> { [ 8, parenleft, bracketleft ]};
+ key <AE09> { [ 9, parenright, bracketright ]};
+ key <AE10> { [ 0, equal, braceright ]};
+ key <AE11> { [ quoteright, question, quoteleft ]};
+
+ key <AD11> { [ plus, asterisk, dead_diaeresis ]};
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial default alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/pt(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ro b/xorg-server/xkeyboard-config/symbols/sun_vndr/ro
index f21f9f624..07241a3ee 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ro
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ro
@@ -1,117 +1,117 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Romania";
-
-
- key <TLDE> { [ grave, asciitilde, grave, asciitilde ] };
- key <AE01> { [ 1, exclam, dead_tilde ] };
- key <AE02> { [ 2, at, dead_caron ] };
- key <AE03> { [ 3, numbersign, dead_circumflex ] };
- key <AE04> { [ 4, dollar, dead_breve ] };
- key <AE05> { [ 5, percent, dead_abovering ] };
- key <AE06> { [ 6, asciicircum, dead_ogonek ] };
- key <AE07> { [ 7, ampersand, dead_grave ] };
- key <AE08> { [ 8, asterisk, dead_abovedot ] };
- key <AE09> { [ 9, parenleft, dead_acute ] };
- key <AE10> { [ 0, parenright, dead_doubleacute ] };
- key <AE11> { [ minus, underscore, dead_diaeresis, endash ] };
- key <AE12> { [ equal, plus, dead_cedilla, plusminus ] };
-
- key <AD01> { [ q, Q, acircumflex, Acircumflex ] };
- key <AD02> { [ w, W, ssharp ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD04> { [ r, R, r, R ] };
- key <AD05> { [ t, T, 0x100021b, 0x100021a ] };
- key <AD06> { [ y, Y, y, Y ] };
- key <AD07> { [ u, U, u, U ] };
- key <AD08> { [ i, I, icircumflex, Icircumflex ] };
- key <AD09> { [ o, O, o, O ] };
- key <AD10> { [ p, P, section ] };
- key <AD11> { [ bracketleft, braceleft, doublelowquotemark ] };
- key <AD12> { [ bracketright, braceright, rightdoublequotemark ] };
-
- key <AC01> { [ a, A, abreve, Abreve ] };
- key <AC02> { [ s, S, 0x1000219, 0x1000218 ] };
- key <AC03> { [ d, D, dstroke, Dstroke ] };
- key <AC04> { [ f, F, f, F ] };
- key <AC05> { [ g, G, g, G ] };
- key <AC06> { [ h, H, h, H ] };
- key <AC07> { [ j, J, j, J ] };
- key <AC08> { [ k, K, k, K ] };
- key <AC09> { [ l, L, lstroke, Lstroke ] };
- key <AC10> { [ semicolon, colon, semicolon, colon ] };
- key <AC11> { [ apostrophe, quotedbl, apostrophe, quotedbl ] };
- key <LSGT> { [ backslash, bar, backslash, brokenbar ] };
-
- key <BKSL> { [ backslash, bar, backslash, brokenbar ] };
- key <AB01> { [ z, Z, z, Z ] };
- key <AB02> { [ x, X, x, X ] };
- key <AB03> { [ c, C, copyright ] };
- key <AB04> { [ v, V, v, V ] };
- key <AB05> { [ b, B, b, B ] };
- key <AB06> { [ n, N, n, N ] };
- key <AB07> { [ m, M, m, M ] };
- key <AB08> { [ comma, less, guillemotleft, multiply ] };
- key <AB09> { [ period, greater, guillemotright, division ] };
- key <AB10> { [ slash, question, slash, question ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/ro(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Romania";
+
+
+ key <TLDE> { [ grave, asciitilde, grave, asciitilde ] };
+ key <AE01> { [ 1, exclam, dead_tilde ] };
+ key <AE02> { [ 2, at, dead_caron ] };
+ key <AE03> { [ 3, numbersign, dead_circumflex ] };
+ key <AE04> { [ 4, dollar, dead_breve ] };
+ key <AE05> { [ 5, percent, dead_abovering ] };
+ key <AE06> { [ 6, asciicircum, dead_ogonek ] };
+ key <AE07> { [ 7, ampersand, dead_grave ] };
+ key <AE08> { [ 8, asterisk, dead_abovedot ] };
+ key <AE09> { [ 9, parenleft, dead_acute ] };
+ key <AE10> { [ 0, parenright, dead_doubleacute ] };
+ key <AE11> { [ minus, underscore, dead_diaeresis, endash ] };
+ key <AE12> { [ equal, plus, dead_cedilla, plusminus ] };
+
+ key <AD01> { [ q, Q, acircumflex, Acircumflex ] };
+ key <AD02> { [ w, W, ssharp ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD04> { [ r, R, r, R ] };
+ key <AD05> { [ t, T, 0x100021b, 0x100021a ] };
+ key <AD06> { [ y, Y, y, Y ] };
+ key <AD07> { [ u, U, u, U ] };
+ key <AD08> { [ i, I, icircumflex, Icircumflex ] };
+ key <AD09> { [ o, O, o, O ] };
+ key <AD10> { [ p, P, section ] };
+ key <AD11> { [ bracketleft, braceleft, doublelowquotemark ] };
+ key <AD12> { [ bracketright, braceright, rightdoublequotemark ] };
+
+ key <AC01> { [ a, A, abreve, Abreve ] };
+ key <AC02> { [ s, S, 0x1000219, 0x1000218 ] };
+ key <AC03> { [ d, D, dstroke, Dstroke ] };
+ key <AC04> { [ f, F, f, F ] };
+ key <AC05> { [ g, G, g, G ] };
+ key <AC06> { [ h, H, h, H ] };
+ key <AC07> { [ j, J, j, J ] };
+ key <AC08> { [ k, K, k, K ] };
+ key <AC09> { [ l, L, lstroke, Lstroke ] };
+ key <AC10> { [ semicolon, colon, semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl, apostrophe, quotedbl ] };
+ key <LSGT> { [ backslash, bar, backslash, brokenbar ] };
+
+ key <BKSL> { [ backslash, bar, backslash, brokenbar ] };
+ key <AB01> { [ z, Z, z, Z ] };
+ key <AB02> { [ x, X, x, X ] };
+ key <AB03> { [ c, C, copyright ] };
+ key <AB04> { [ v, V, v, V ] };
+ key <AB05> { [ b, B, b, B ] };
+ key <AB06> { [ n, N, n, N ] };
+ key <AB07> { [ m, M, m, M ] };
+ key <AB08> { [ comma, less, guillemotleft, multiply ] };
+ key <AB09> { [ period, greater, guillemotright, division ] };
+ key <AB10> { [ slash, question, slash, question ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/ro(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ru b/xorg-server/xkeyboard-config/symbols/sun_vndr/ru
index ec19c9ba3..cfa27d08a 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ru
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ru
@@ -1,111 +1,111 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]= "Russia";
-
- key.type[group1]="FOUR_LEVEL";
-
-
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, quotedbl, 2, at ] };
- key <AE03> { [ 3, numerosign, 3, numbersign ] };
- key <AE04> { [ 4, percent, 4, dollar ] };
- key <AE05> { [ 5, colon, 5, percent ] };
- key <AE07> { [ 7, period, 7, ampersand ] };
- key <AE08> { [ 8, semicolon, 8, asterisk ] };
- key <BKSL> { [ slash, question, backslash, bar ] };
- key <AB10> { [ ediaeresis, Ediaeresis, slash, question ] };
- key <LSGT> { [ backslash, bar ] };
-
- key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, q, Q ] };
- key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, w, W ] };
- key <AD03> { [ Cyrillic_u, Cyrillic_U, e, E ] };
- key <AD04> { [ Cyrillic_ka, Cyrillic_KA, r, R ] };
- key <AD05> { [ Cyrillic_ie, Cyrillic_IE, t, T ] };
- key <AD06> { [ Cyrillic_en, Cyrillic_EN, y, Y ] };
- key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, u, U ] };
- key <AD08> { [ Cyrillic_sha, Cyrillic_SHA, i, I ] };
- key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA, o, O ] };
- key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, p, P ] };
- key <AD11> { [ Cyrillic_ha, Cyrillic_HA, bracketleft, braceleft ] };
- key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN, bracketright, braceright ] };
- key <AC01> { [ Cyrillic_ef, Cyrillic_EF, a, A ] };
- key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, s, S ] };
- key <AC03> { [ Cyrillic_ve, Cyrillic_VE, d, D ] };
- key <AC04> { [ Cyrillic_a, Cyrillic_A, f, F ] };
- key <AC05> { [ Cyrillic_pe, Cyrillic_PE, g, G ] };
- key <AC06> { [ Cyrillic_er, Cyrillic_ER, h, H ] };
- key <AC07> { [ Cyrillic_o, Cyrillic_O, j, J ] };
- key <AC08> { [ Cyrillic_el, Cyrillic_EL, k, K ] };
- key <AC09> { [ Cyrillic_de, Cyrillic_DE, l, L ] };
- key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, semicolon, colon ] };
- key <AC11> { [ Cyrillic_e, Cyrillic_E, apostrophe, quotedbl ] };
- key <AB01> { [ Cyrillic_ya, Cyrillic_YA, z, Z ] };
- key <AB02> { [ Cyrillic_che, Cyrillic_CHE, x, X ] };
- key <AB03> { [ Cyrillic_es, Cyrillic_ES, c, C ] };
- key <AB04> { [ Cyrillic_em, Cyrillic_EM, v, V ] };
- key <AB05> { [ Cyrillic_i, Cyrillic_I, b, B ] };
- key <AB06> { [ Cyrillic_te, Cyrillic_TE, n, N ] };
- key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN, m, M ] };
- key <AB08> { [ Cyrillic_be, Cyrillic_BE, comma, less ] };
- key <AB09> { [ Cyrillic_yu, Cyrillic_YU, period, greater ] };
-
- include "level3(ralt_switch)"
-
-};
-
-
-partial default alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/ru(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]= "Russia";
+
+ key.type[group1]="FOUR_LEVEL";
+
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl, 2, at ] };
+ key <AE03> { [ 3, numerosign, 3, numbersign ] };
+ key <AE04> { [ 4, percent, 4, dollar ] };
+ key <AE05> { [ 5, colon, 5, percent ] };
+ key <AE07> { [ 7, period, 7, ampersand ] };
+ key <AE08> { [ 8, semicolon, 8, asterisk ] };
+ key <BKSL> { [ slash, question, backslash, bar ] };
+ key <AB10> { [ ediaeresis, Ediaeresis, slash, question ] };
+ key <LSGT> { [ backslash, bar ] };
+
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, q, Q ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, w, W ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, e, E ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, r, R ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, t, T ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN, y, Y ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, u, U ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA, i, I ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA, o, O ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, p, P ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA, bracketleft, braceleft ] };
+ key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN, bracketright, braceright ] };
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF, a, A ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, s, S ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE, d, D ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A, f, F ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE, g, G ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER, h, H ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, j, J ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL, k, K ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE, l, L ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, semicolon, colon ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E, apostrophe, quotedbl ] };
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA, z, Z ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE, x, X ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, c, C ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM, v, V ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I, b, B ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE, n, N ] };
+ key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN, m, M ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE, comma, less ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, period, greater ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+
+partial default alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/ru(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/se b/xorg-server/xkeyboard-config/symbols/sun_vndr/se
index 4efaf85fa..d27001466 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/se
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/se
@@ -1,279 +1,279 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-partial alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Sweden";
-
- key <TLDE> { [ section, onehalf ] };
- key <LSGT> { [ less, greater, bar ] };
- key <AE02> { [ 2, quotedbl, at ] };
- key <AE03> { [ 3, numbersign, sterling ] };
- key <AE04> { [ 4, currency, dollar ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
- key <AE11> { [ plus, question, backslash ] };
- key <AE12> { [ dead_acute, dead_grave ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD11> { [ aring, Aring ] };
- key <AD12> { [ dead_diaeresis, asciicircum, asciitilde ] };
- key <AC10> { [ odiaeresis, Odiaeresis ] };
- key <AC11> { [ adiaeresis, Adiaeresis ] };
- key <BKSL> { [ apostrophe, asterisk, grave ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-
- include "level3(ralt_switch)"
- include "kpdl(comma)"
-
-};
-
-// Swedish layout for a Type 5/5c Sun keyboard
-xkb_symbols "type5" {
- include "sun_vndr/us(type5)+se(basic)"
-
- // Begin alphanumeric section
- // These two are not supposed to be dead.
- // A few others supposedly ARE dead, but don't care for now.
- key <AC12> { [ apostrophe, asterisk ], [ grave ] };
- key <AD12> { [ ], [ asciitilde ] };
-
- key <RTSH> { [ Shift_R ] };
-
- key <LALT> { [ Alt_L ] };
- key <ALGR> { [ Mode_switch ] };
- key <LMTA> { [ Meta_L ] };
- key <RMTA> { [ Meta_R ] };
- key <COMP> { [ Multi_key ] };
- // End alphanumeric section
-
- // Begin "Function" section
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ], [ SunF36] };
- key <FK12> { [ F12 ], [ SunF37] };
- key <STOP> { [ Cancel ], [ F11 ] };
- key <AGAI> { [ Redo ], [ F12 ] };
- key <PROP> { [ SunProps ], [ F13 ] };
- key <UNDO> { [ Undo ], [ F14 ] };
- key <FRNT> { [ SunFront ], [ F15 ] };
- key <COPY> { [ SunCopy ], [ F16 ] };
- key <OPEN> { [ SunOpen ], [ F17 ] };
- key <PAST> { [ SunPaste ], [ F18 ] };
- key <FIND> { [ Find ], [ F19 ] };
- key <CUT> { [ SunCut ], [ F20 ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <PRSC> { [ Print ], [ Sys_Req, SunSys_Req ] };
- key <SCLK> { [ Scroll_Lock ] };
- key <PAUS> { [ Pause ], [ Break ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
- key <UP> { [ Up ] };
- key <DOWN> { [ Down ] };
-
- key <DELE> { [ Delete ] };
- key <INS> { [ Insert ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
- key <HOME> { [ Home ] };
- key <END> { [ End ] };
- key <HELP> { [ Help ] };
- // End "Editing" section
-
- // Begin "Keypad" section
- key <NMLK> { [ Num_Lock ] };
- key <KPDV> { [ KP_Divide ], [ F25 ] };
- key <KPMU> { [ KP_Multiply ], [ F26 ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP7> { [ KP_Home, KP_7 ], [ F27 ] };
- key <KP8> { [ KP_Up, KP_8 ], [ F28 ] };
- key <KP9> { [ KP_Prior, KP_9 ], [ F29 ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP4> { [ KP_Left, KP_4 ], [ F30 ] };
- key <KP5> { [ KP_Begin, KP_5 ], [ F31 ] };
- key <KP6> { [ KP_Right, KP_6 ], [ F32 ] };
-
- key <KP1> { [ KP_End, KP_1 ], [ F33 ] };
- key <KP2> { [ KP_Down, KP_2 ], [ F34 ] };
- key <KP3> { [ KP_Next, KP_3 ], [ F35 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_Insert, KP_0 ] };
- key <KPDL> { [ KP_Delete, KP_Decimal ] };
- // End "Keypad" section,
-
- // Begin "four keys up on the right"
- key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
- key <VOL-> { [ SunAudioLowerVolume,SunVideoLowerBrightness ] };
- key <VOL+> { [ SunAudioRaiseVolume,SunVideoRaiseBrightness ] };
- key <POWR> { [ SunPowerSwitch, SunPowerSwitchShift ] };
- // End "four keys up on the right"
-
- // Begin modifier mappings
- modifier_map Shift { Shift_R };
- modifier_map Mod1 { Meta_L, Meta_R };
- modifier_map Mod2 { Num_Lock };
- modifier_map Mod3 { Mode_switch };
- modifier_map Mod4 { Alt_L };
- // End modifier mappings
-};
-
-// Swedish layout for a Type 4 Sun keyboard
-xkb_symbols "type4" {
- include "sun_vndr/us(type4basic)+se(basic)"
-
- // Begin alphanumeric section
- // These two are not supposed to be dead.
- // A few others supposedly ARE dead, but don't care for now.
- key <AC12> { [ apostrophe, asterisk ], [ grave ] };
- key <AD12> { [ ], [ asciitilde ] };
-
- key <AF14> { [ asciitilde, asciicircum ] };
-
- key <RTSH> { [ Shift_R ] };
-
- key <LALT> { [ Alt_L ] };
- key <ALGR> { [ Mode_switch ] };
- key <LMTA> { [ Meta_L ] };
- key <RMTA> { [ Meta_R ] };
- key <COMP> { [ Multi_key ] };
- // End alphanumeric section
-
- // Begin "Function" section
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ], [ SunF36] };
- key <FK12> { [ F12 ], [ SunF37] };
- key <STOP> { [ Cancel ], [ F11 ] };
- key <AGAI> { [ Redo ], [ F12 ] };
- key <PROP> { [ SunProps ], [ F13 ] };
- key <UNDO> { [ Undo ], [ F14 ] };
- key <FRNT> { [ SunFront ], [ F15 ] };
- key <COPY> { [ SunCopy ], [ F16 ] };
- key <OPEN> { [ SunOpen ], [ F17 ] };
- key <PAST> { [ SunPaste ], [ F18 ] };
- key <FIND> { [ Find ], [ F19 ] };
- key <CUT> { [ SunCut ], [ F20 ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <LNFD> { [ Linefeed ] };
- key <DELE> { [ Delete ] };
- key <PRSC> { [ Print ], [ Sys_Req, SunSys_Req ] };
- key <SCLK> { [ Scroll_Lock ] };
- key <PAUS> { [ Pause ], [ Break ] };
- key <HELP> { [ Help ] };
- // End "Editing" section
-
- // Begin "Keypad" section
- key <NMLK> { [ Num_Lock ] };
- key <KPEQ> { [ KP_Equal ] };
- key <KPDV> { [ KP_Divide ], [ F25 ] };
- key <KPMU> { [ KP_Multiply ], [ F26 ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP7> { [ KP_Home, KP_7 ], [ F27 ] };
- key <KP8> { [ KP_Up, KP_8 ], [ F28 ] };
- key <KP9> { [ KP_Prior, KP_9 ], [ F29 ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP4> { [ KP_Left, KP_4 ], [ F30 ] };
- key <KP5> { [ KP_Begin, KP_5 ], [ F31 ] };
- key <KP6> { [ KP_Right, KP_6 ], [ F32 ] };
-
- key <KP1> { [ KP_End, KP_1 ], [ F33 ] };
- key <KP2> { [ KP_Down, KP_2 ], [ F34 ] };
- key <KP3> { [ KP_Next, KP_3 ], [ F35 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_Insert, KP_0 ] };
- key <KPDL> { [ KP_Delete, KP_Decimal ] };
- // End "Keypad" section,
-
- // Begin modifier mappings
- modifier_map Shift { Shift_R };
- modifier_map Mod1 { Alt_L };
- modifier_map Mod2 { Num_Lock };
- modifier_map Mod3 { Mode_switch };
- modifier_map Mod4 { Meta_L };
- modifier_map Mod5 { Meta_R };
- // End modifier mappings
-};
-
-
-partial default alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/se(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+partial alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Sweden";
+
+ key <TLDE> { [ section, onehalf ] };
+ key <LSGT> { [ less, greater, bar ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, numbersign, sterling ] };
+ key <AE04> { [ 4, currency, dollar ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ plus, question, backslash ] };
+ key <AE12> { [ dead_acute, dead_grave ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD11> { [ aring, Aring ] };
+ key <AD12> { [ dead_diaeresis, asciicircum, asciitilde ] };
+ key <AC10> { [ odiaeresis, Odiaeresis ] };
+ key <AC11> { [ adiaeresis, Adiaeresis ] };
+ key <BKSL> { [ apostrophe, asterisk, grave ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+
+};
+
+// Swedish layout for a Type 5/5c Sun keyboard
+xkb_symbols "type5" {
+ include "sun_vndr/us(type5)+se(basic)"
+
+ // Begin alphanumeric section
+ // These two are not supposed to be dead.
+ // A few others supposedly ARE dead, but don't care for now.
+ key <AC12> { [ apostrophe, asterisk ], [ grave ] };
+ key <AD12> { [ ], [ asciitilde ] };
+
+ key <RTSH> { [ Shift_R ] };
+
+ key <LALT> { [ Alt_L ] };
+ key <ALGR> { [ Mode_switch ] };
+ key <LMTA> { [ Meta_L ] };
+ key <RMTA> { [ Meta_R ] };
+ key <COMP> { [ Multi_key ] };
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ], [ SunF36] };
+ key <FK12> { [ F12 ], [ SunF37] };
+ key <STOP> { [ Cancel ], [ F11 ] };
+ key <AGAI> { [ Redo ], [ F12 ] };
+ key <PROP> { [ SunProps ], [ F13 ] };
+ key <UNDO> { [ Undo ], [ F14 ] };
+ key <FRNT> { [ SunFront ], [ F15 ] };
+ key <COPY> { [ SunCopy ], [ F16 ] };
+ key <OPEN> { [ SunOpen ], [ F17 ] };
+ key <PAST> { [ SunPaste ], [ F18 ] };
+ key <FIND> { [ Find ], [ F19 ] };
+ key <CUT> { [ SunCut ], [ F20 ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <PRSC> { [ Print ], [ Sys_Req, SunSys_Req ] };
+ key <SCLK> { [ Scroll_Lock ] };
+ key <PAUS> { [ Pause ], [ Break ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <UP> { [ Up ] };
+ key <DOWN> { [ Down ] };
+
+ key <DELE> { [ Delete ] };
+ key <INS> { [ Insert ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+ key <HOME> { [ Home ] };
+ key <END> { [ End ] };
+ key <HELP> { [ Help ] };
+ // End "Editing" section
+
+ // Begin "Keypad" section
+ key <NMLK> { [ Num_Lock ] };
+ key <KPDV> { [ KP_Divide ], [ F25 ] };
+ key <KPMU> { [ KP_Multiply ], [ F26 ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP7> { [ KP_Home, KP_7 ], [ F27 ] };
+ key <KP8> { [ KP_Up, KP_8 ], [ F28 ] };
+ key <KP9> { [ KP_Prior, KP_9 ], [ F29 ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP4> { [ KP_Left, KP_4 ], [ F30 ] };
+ key <KP5> { [ KP_Begin, KP_5 ], [ F31 ] };
+ key <KP6> { [ KP_Right, KP_6 ], [ F32 ] };
+
+ key <KP1> { [ KP_End, KP_1 ], [ F33 ] };
+ key <KP2> { [ KP_Down, KP_2 ], [ F34 ] };
+ key <KP3> { [ KP_Next, KP_3 ], [ F35 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_Insert, KP_0 ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal ] };
+ // End "Keypad" section,
+
+ // Begin "four keys up on the right"
+ key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
+ key <VOL-> { [ SunAudioLowerVolume,SunVideoLowerBrightness ] };
+ key <VOL+> { [ SunAudioRaiseVolume,SunVideoRaiseBrightness ] };
+ key <POWR> { [ SunPowerSwitch, SunPowerSwitchShift ] };
+ // End "four keys up on the right"
+
+ // Begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Mod1 { Meta_L, Meta_R };
+ modifier_map Mod2 { Num_Lock };
+ modifier_map Mod3 { Mode_switch };
+ modifier_map Mod4 { Alt_L };
+ // End modifier mappings
+};
+
+// Swedish layout for a Type 4 Sun keyboard
+xkb_symbols "type4" {
+ include "sun_vndr/us(type4basic)+se(basic)"
+
+ // Begin alphanumeric section
+ // These two are not supposed to be dead.
+ // A few others supposedly ARE dead, but don't care for now.
+ key <AC12> { [ apostrophe, asterisk ], [ grave ] };
+ key <AD12> { [ ], [ asciitilde ] };
+
+ key <AF14> { [ asciitilde, asciicircum ] };
+
+ key <RTSH> { [ Shift_R ] };
+
+ key <LALT> { [ Alt_L ] };
+ key <ALGR> { [ Mode_switch ] };
+ key <LMTA> { [ Meta_L ] };
+ key <RMTA> { [ Meta_R ] };
+ key <COMP> { [ Multi_key ] };
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ], [ SunF36] };
+ key <FK12> { [ F12 ], [ SunF37] };
+ key <STOP> { [ Cancel ], [ F11 ] };
+ key <AGAI> { [ Redo ], [ F12 ] };
+ key <PROP> { [ SunProps ], [ F13 ] };
+ key <UNDO> { [ Undo ], [ F14 ] };
+ key <FRNT> { [ SunFront ], [ F15 ] };
+ key <COPY> { [ SunCopy ], [ F16 ] };
+ key <OPEN> { [ SunOpen ], [ F17 ] };
+ key <PAST> { [ SunPaste ], [ F18 ] };
+ key <FIND> { [ Find ], [ F19 ] };
+ key <CUT> { [ SunCut ], [ F20 ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <LNFD> { [ Linefeed ] };
+ key <DELE> { [ Delete ] };
+ key <PRSC> { [ Print ], [ Sys_Req, SunSys_Req ] };
+ key <SCLK> { [ Scroll_Lock ] };
+ key <PAUS> { [ Pause ], [ Break ] };
+ key <HELP> { [ Help ] };
+ // End "Editing" section
+
+ // Begin "Keypad" section
+ key <NMLK> { [ Num_Lock ] };
+ key <KPEQ> { [ KP_Equal ] };
+ key <KPDV> { [ KP_Divide ], [ F25 ] };
+ key <KPMU> { [ KP_Multiply ], [ F26 ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP7> { [ KP_Home, KP_7 ], [ F27 ] };
+ key <KP8> { [ KP_Up, KP_8 ], [ F28 ] };
+ key <KP9> { [ KP_Prior, KP_9 ], [ F29 ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP4> { [ KP_Left, KP_4 ], [ F30 ] };
+ key <KP5> { [ KP_Begin, KP_5 ], [ F31 ] };
+ key <KP6> { [ KP_Right, KP_6 ], [ F32 ] };
+
+ key <KP1> { [ KP_End, KP_1 ], [ F33 ] };
+ key <KP2> { [ KP_Down, KP_2 ], [ F34 ] };
+ key <KP3> { [ KP_Next, KP_3 ], [ F35 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_Insert, KP_0 ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal ] };
+ // End "Keypad" section,
+
+ // Begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Mod1 { Alt_L };
+ modifier_map Mod2 { Num_Lock };
+ modifier_map Mod3 { Mode_switch };
+ modifier_map Mod4 { Meta_L };
+ modifier_map Mod5 { Meta_R };
+ // End modifier mappings
+};
+
+
+partial default alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/se(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/sk b/xorg-server/xkeyboard-config/symbols/sun_vndr/sk
index ee49a7008..9c909763f 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/sk
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/sk
@@ -1,109 +1,109 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Slovakia";
-
-
- key <TLDE> { [ semicolon, dead_abovering, quoteleft, asciitilde ] };
- key <AE01> { [ plus, 1, exclam, asciitilde ] };
- key <AE02> { [ lcaron, 2, at, dead_caron ] };
- key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
- key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
- key <AE05> { [ tcaron, 5, percent, dead_abovering ] };
- key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
- key <AE07> { [ yacute, 7, ampersand, grave ] };
- key <AE08> { [ aacute, 8, asterisk, dead_abovedot ] };
- key <AE09> { [ iacute, 9, parenleft, apostrophe ] };
- key <AE10> { [ eacute, 0, parenright, dead_doubleacute ] };
- key <AE11> { [ equal, percent, dead_diaeresis, backslash ] };
- key <AE12> { [ dead_acute, dead_caron, dead_cedilla, minus ] };
-
- key <AD01> { [ q, Q, backslash ] };
- key <AD02> { [ w, W, bar ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD06> { [ z, Z ] };
- key <AD10> { [ p, P, apostrophe ] };
- key <AD11> { [ uacute, slash, division ] };
- key <AD12> { [ adiaeresis, parenleft, multiply ] };
-
- key <AC02> { [ s, S, dstroke ] };
- key <AC03> { [ d, D, Dstroke ] };
- key <AC04> { [ f, F, bracketleft ] };
- key <AC05> { [ g, G, bracketright ] };
- key <AC08> { [ k, K, lstroke ] };
- key <AC09> { [ l, L, Lstroke ] };
- key <AC10> { [ ocircumflex, quotedbl, dollar ] };
- key <AC11> { [ section, exclam, ssharp ] };
- key <AC12> { [ ncaron, parenright, currency, currency ] };
- key <BKSL> { [ ncaron, parenright, backslash, bar ] };
-
- key <LSGT> { [ backslash, bar, slash, brokenbar ] };
- key <AB01> { [ y, Y, less ] };
- key <AB02> { [ x, X, greater, numbersign ] };
- key <AB03> { [ c, C, ampersand ] };
- key <AB04> { [ v, V, at ] };
- key <AB05> { [ b, B, braceleft ] };
- key <AB06> { [ n, N, braceright ] };
- key <AB08> { [ comma, question, less ] };
- key <AB09> { [ period, colon, greater ] };
- key <AB10> { [ minus, underscore, asterisk ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/sk(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Slovakia";
+
+
+ key <TLDE> { [ semicolon, dead_abovering, quoteleft, asciitilde ] };
+ key <AE01> { [ plus, 1, exclam, asciitilde ] };
+ key <AE02> { [ lcaron, 2, at, dead_caron ] };
+ key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] };
+ key <AE04> { [ ccaron, 4, dollar, dead_breve ] };
+ key <AE05> { [ tcaron, 5, percent, dead_abovering ] };
+ key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] };
+ key <AE07> { [ yacute, 7, ampersand, grave ] };
+ key <AE08> { [ aacute, 8, asterisk, dead_abovedot ] };
+ key <AE09> { [ iacute, 9, parenleft, apostrophe ] };
+ key <AE10> { [ eacute, 0, parenright, dead_doubleacute ] };
+ key <AE11> { [ equal, percent, dead_diaeresis, backslash ] };
+ key <AE12> { [ dead_acute, dead_caron, dead_cedilla, minus ] };
+
+ key <AD01> { [ q, Q, backslash ] };
+ key <AD02> { [ w, W, bar ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD06> { [ z, Z ] };
+ key <AD10> { [ p, P, apostrophe ] };
+ key <AD11> { [ uacute, slash, division ] };
+ key <AD12> { [ adiaeresis, parenleft, multiply ] };
+
+ key <AC02> { [ s, S, dstroke ] };
+ key <AC03> { [ d, D, Dstroke ] };
+ key <AC04> { [ f, F, bracketleft ] };
+ key <AC05> { [ g, G, bracketright ] };
+ key <AC08> { [ k, K, lstroke ] };
+ key <AC09> { [ l, L, Lstroke ] };
+ key <AC10> { [ ocircumflex, quotedbl, dollar ] };
+ key <AC11> { [ section, exclam, ssharp ] };
+ key <AC12> { [ ncaron, parenright, currency, currency ] };
+ key <BKSL> { [ ncaron, parenright, backslash, bar ] };
+
+ key <LSGT> { [ backslash, bar, slash, brokenbar ] };
+ key <AB01> { [ y, Y, less ] };
+ key <AB02> { [ x, X, greater, numbersign ] };
+ key <AB03> { [ c, C, ampersand ] };
+ key <AB04> { [ v, V, at ] };
+ key <AB05> { [ b, B, braceleft ] };
+ key <AB06> { [ n, N, braceright ] };
+ key <AB08> { [ comma, question, less ] };
+ key <AB09> { [ period, colon, greater ] };
+ key <AB10> { [ minus, underscore, asterisk ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/sk(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/tr b/xorg-server/xkeyboard-config/symbols/sun_vndr/tr
index 4eb8d6511..18ff4f0b1 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/tr
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/tr
@@ -1,92 +1,92 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Turkey - (Q)";
-
- key <TLDE> { [ quotedbl, eacute ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, apostrophe ] };
- key <AE03> { [ 3, asciicircum, numbersign ] };
- key <AE04> { [ 4, plus, dollar ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash, braceleft ] };
- key <AE08> { [ 8, parenleft, bracketleft ] };
- key <AE09> { [ 9, parenright, bracketright ] };
- key <AE10> { [ 0, equal, braceright ] };
- key <AE11> { [ asterisk, question, backslash ] };
- key <AE12> { [ minus, underscore ] };
-
- key <AD01> { [ q, Q, at ] };
- key <AD03> { [ e, E, EuroSign ] };
- key <AD08> { [ idotless, I ] };
- key <AD11> { [ gbreve, Gbreve ] };
- key <AD12> { [udiaeresis, Udiaeresis, asciitilde ] };
-
- key <AC10> { [ scedilla, Scedilla, acute ] };
- key <AC11> { [ i, Iabovedot ] };
- key <BKSL> { [ comma, semicolon, grave ] };
-
- key <LSGT> { [ less, greater, bar ] };
- key <AB08> { [odiaeresis, Odiaeresis ] };
- key <AB09> { [ ccedilla, Ccedilla ] };
- key <AB10> { [ period, colon ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial default alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/tr(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Turkey - (Q)";
+
+ key <TLDE> { [ quotedbl, eacute ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, apostrophe ] };
+ key <AE03> { [ 3, asciicircum, numbersign ] };
+ key <AE04> { [ 4, plus, dollar ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ asterisk, question, backslash ] };
+ key <AE12> { [ minus, underscore ] };
+
+ key <AD01> { [ q, Q, at ] };
+ key <AD03> { [ e, E, EuroSign ] };
+ key <AD08> { [ idotless, I ] };
+ key <AD11> { [ gbreve, Gbreve ] };
+ key <AD12> { [udiaeresis, Udiaeresis, asciitilde ] };
+
+ key <AC10> { [ scedilla, Scedilla, acute ] };
+ key <AC11> { [ i, Iabovedot ] };
+ key <BKSL> { [ comma, semicolon, grave ] };
+
+ key <LSGT> { [ less, greater, bar ] };
+ key <AB08> { [odiaeresis, Odiaeresis ] };
+ key <AB09> { [ ccedilla, Ccedilla ] };
+ key <AB10> { [ period, colon ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial default alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/tr(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/tuv b/xorg-server/xkeyboard-config/symbols/sun_vndr/tuv
index 64037ac42..f098f9f27 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/tuv
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/tuv
@@ -1,261 +1,261 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-//
-//Copyright 1996, 1998 The Open Group
-//
-//All Rights Reserved.
-//
-//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
-//OTHER DEALINGS IN THE SOFTWARE.
-//
-//Except as contained in this notice, the name of The Open Group 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 Open Group.
-//
-// US/ASCII layout for a Type 4 Sun keyboard
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-xkb_symbols "type4basic" {
- include "us(basic)"
-
- key <RTSH> { [ Shift_R ] };
- key <LALT> { [ Alt_L ] };
- key <ALGR> { [ Mode_switch ] };
- key <LMTA> { [ Meta_L ] };
- key <RMTA> { [ Meta_R ] };
- key <LNFD> { [ Linefeed ] };
- key <COMP> { [ Multi_key ] };
- // End alphanumeric section
-
- // Begin "Function" section
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ SunF36 ] };
- key <FK12> { [ SunF37 ] };
- key <STOP> { [ L1, L1 ], [ SunStop ] };
- key <AGAI> { [ L2, L2 ], [ SunAgain ] };
- key <PROP> { [ L3, L3 ], [ SunProps ] };
- key <UNDO> { [ L4, L4 ], [ SunUndo ] };
- key <FRNT> { [ L5, L5 ], [ SunFront ] };
- key <COPY> { [ L6, L6 ], [ SunCopy ] };
- key <OPEN> { [ L7, L7 ], [ SunOpen ] };
- key <PAST> { [ L8, L8 ], [ SunPaste ] };
- key <FIND> { [ L9, L9 ], [ SunFind ] };
- key <CUT> { [ L10, L10 ], [ SunCut ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <PRSC> { [ R2, R2 ], [ Print ] };
- key <SCLK> { [ R3, R3 ], [ Scroll_Lock, Break ] };
- key <PAUS> { [ R1, R1 ], [ Pause ] };
- key <DELE> { [ Delete ] };
- key <HELP> { [ Help ] };
-
- // End "Editing" section, begin "Keypad"
- key <NMLK> { [ Num_Lock ] };
- key <KPEQ> { [ R4, R4 ], [ KP_Equal ] };
- key <KPDV> { [ R5, R5 ], [ KP_Divide ] };
- key <KPMU> { [ R6, R6 ], [ KP_Multiply ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP7> { [ R7, R7 ], [ KP_7, Home ] };
- key <KP8> { [ Up, R8 ], [ KP_8 ] };
-// key <KP8> { [ R8, R8 ], [ KP_8 ] };
- key <KP9> { [ R9, R9 ], [ KP_9, Prior ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP4> { [ Left, R10 ], [ KP_4 ] };
- key <KP5> { [ R11, R11 ], [ KP_5 ] };
- key <KP6> { [ Right, R12 ], [ KP_6 ] };
-
- key <KP1> { [ R13, R13 ], [ KP_1, End ] };
- key <KP2> { [ Down, R14 ], [ KP_2 ] };
- key <KP3> { [ R15, R15 ], [ KP_3, Next ] };
- key <KPEN> { [ KP_Enter ] };
- key <KP0> { [ KP_Insert, KP_Insert], [ KP_0 ] };
- key <KPDL> { [ Delete, Delete ], [ KP_Decimal ] };
- // End "Keypad" section
-
-
- // begin modifier mappings
- modifier_map Shift { Shift_R, Shift_L };
- modifier_map Mod1 { Meta_L, Meta_R };
- modifier_map Mod2 { Num_Lock };
- modifier_map Mod3 { Mode_switch };
- modifier_map Mod4 { Alt_L };
-};
-
-xkb_symbols "type4" {
- include "sun_vndr/us(type4basic)"
-
- // A few alphanumeric keys are different
- key <AE04> { [ 4, dollar ], [ EuroSign ] };
- key <AE05> { [ 5, percent ], [ EuroSign ] };
- key <AD03> { [ e, E ], [ EuroSign ] };
-};
-
-// US/ASCII layout for a Type 5 Sun keyboard
-xkb_symbols "type5basic" {
- include "us(basic)"
-
- key <RTSH> { [ Shift_R ] };
- key <LALT> { [ Alt_L ] };
- key <ALGR> { [ Mode_switch ] };
- key <LMTA> { [ Meta_L ] };
- key <RMTA> { [ Meta_R ] };
- key <COMP> { [ Multi_key ] };
- // End alphanumeric section
-
- // Begin "Function" section
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ SunF36 ] };
- key <FK12> { [ SunF37 ] };
- key <STOP> { [ L1, L1 ], [ SunStop ] };
- key <AGAI> { [ L2, L2 ], [ SunAgain ] };
- key <PROP> { [ L3, L3 ], [ SunProps ] };
- key <UNDO> { [ L4, L4 ], [ SunUndo ] };
- key <FRNT> { [ L5, L5 ], [ SunFront ] };
- key <COPY> { [ L6, L6 ], [ SunCopy ] };
- key <OPEN> { [ L7, L7 ], [ SunOpen ] };
- key <PAST> { [ L8, L8 ], [ SunPaste ] };
- key <FIND> { [ L9, L9 ], [ SunFind ] };
- key <CUT> { [ L10, L10 ], [ SunCut ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <PRSC> { [ R2, R2 ], [ Print, SunSys_Req ] };
- key <SCLK> { [ R3, R3 ], [ Scroll_Lock ] };
- key <PAUS> { [ R1, R1 ], [ Pause, Break ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
- key <UP> { [ Up ] };
- key <DOWN> { [ Down ] };
-
- key <DELE> { [ Delete ] };
- key <INS> { [ Insert ] };
- key <PGUP> { [ Prior ] };
- key <PGDN> { [ Next ] };
- key <HOME> { [ Home ] };
- key <END> { [ End ] };
- key <HELP> { [ Help ] };
-
- // End "Editing" section, begin "Keypad"
- key <NMLK> { [ Num_Lock ] };
- key <KPDV> { [ R5, R5 ], [ KP_Divide ] };
- key <KPMU> { [ R6, R6 ], [ KP_Multiply ] };
- key <KPSU> { [ R4, R4 ], [ KP_Subtract ] };
-
- key <KP7> { [ R7, R7 ], [ KP_7, Home ] };
- key <KP8> { [ Up, R8 ], [ KP_8 ] };
- key <KP9> { [ R9, R9 ], [ KP_9, Prior ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP4> { [ Left, R10 ], [ KP_4 ] };
- key <KP5> { [ R11, R11 ], [ KP_5 ] };
- key <KP6> { [ Right, R12 ], [ KP_6 ] };
-
- key <KP1> { [ R13, R13 ], [ KP_1, End ] };
- key <KP2> { [ Down, R14 ], [ KP_2 ] };
- key <KP3> { [ R15, R15 ], [ KP_3 ] };
- key <KPEN> { [ KP_Enter ] };
-
- key <KP0> { [ KP_Insert, KP_Insert ], [ KP_0 ] };
- key <KPDL> { [ KP_Delete, KP_Delete ], [ KP_Decimal ] };
- // End "Keypad" section,
- // begin "four keys up on the right"
-
- key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
- key <VOL-> { [ SunAudioLowerVolume, SunVideoLowerBrightness ] };
- key <VOL+> { [ SunAudioRaiseVolume, SunVideoRaiseBrightness ] };
- key <POWR> { [ SunPowerSwitch, SunPowerSwitchShift ] };
-
- // begin modifier mappings
- modifier_map Shift { Shift_R };
- modifier_map Mod1 { Meta_L, Meta_R };
- modifier_map Mod2 { Num_Lock };
- modifier_map Mod3 { Alt_R };
- modifier_map Mod4 { Alt_L };
-};
-
-xkb_symbols "type5" {
- include "sun_vndr/us(type5basic)"
-
- // A few alphanumeric keys are different
- key <AE04> { [ 4, dollar ], [ EuroSign ] };
- key <AE05> { [ 5, percent ], [ EuroSign ] };
- key <AD03> { [ e, E ], [ EuroSign ] };
- key <BKSL> { [ backslash, bar ], [ brokenbar ] };
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+//
+//Copyright 1996, 1998 The Open Group
+//
+//All Rights Reserved.
+//
+//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 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 CONNECTION WITH THE SOFTWARE OR THE USE OR
+//OTHER DEALINGS IN THE SOFTWARE.
+//
+//Except as contained in this notice, the name of The Open Group 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 Open Group.
+//
+// US/ASCII layout for a Type 4 Sun keyboard
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+xkb_symbols "type4basic" {
+ include "us(basic)"
+
+ key <RTSH> { [ Shift_R ] };
+ key <LALT> { [ Alt_L ] };
+ key <ALGR> { [ Mode_switch ] };
+ key <LMTA> { [ Meta_L ] };
+ key <RMTA> { [ Meta_R ] };
+ key <LNFD> { [ Linefeed ] };
+ key <COMP> { [ Multi_key ] };
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ SunF36 ] };
+ key <FK12> { [ SunF37 ] };
+ key <STOP> { [ L1, L1 ], [ SunStop ] };
+ key <AGAI> { [ L2, L2 ], [ SunAgain ] };
+ key <PROP> { [ L3, L3 ], [ SunProps ] };
+ key <UNDO> { [ L4, L4 ], [ SunUndo ] };
+ key <FRNT> { [ L5, L5 ], [ SunFront ] };
+ key <COPY> { [ L6, L6 ], [ SunCopy ] };
+ key <OPEN> { [ L7, L7 ], [ SunOpen ] };
+ key <PAST> { [ L8, L8 ], [ SunPaste ] };
+ key <FIND> { [ L9, L9 ], [ SunFind ] };
+ key <CUT> { [ L10, L10 ], [ SunCut ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <PRSC> { [ R2, R2 ], [ Print ] };
+ key <SCLK> { [ R3, R3 ], [ Scroll_Lock, Break ] };
+ key <PAUS> { [ R1, R1 ], [ Pause ] };
+ key <DELE> { [ Delete ] };
+ key <HELP> { [ Help ] };
+
+ // End "Editing" section, begin "Keypad"
+ key <NMLK> { [ Num_Lock ] };
+ key <KPEQ> { [ R4, R4 ], [ KP_Equal ] };
+ key <KPDV> { [ R5, R5 ], [ KP_Divide ] };
+ key <KPMU> { [ R6, R6 ], [ KP_Multiply ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP7> { [ R7, R7 ], [ KP_7, Home ] };
+ key <KP8> { [ Up, R8 ], [ KP_8 ] };
+// key <KP8> { [ R8, R8 ], [ KP_8 ] };
+ key <KP9> { [ R9, R9 ], [ KP_9, Prior ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP4> { [ Left, R10 ], [ KP_4 ] };
+ key <KP5> { [ R11, R11 ], [ KP_5 ] };
+ key <KP6> { [ Right, R12 ], [ KP_6 ] };
+
+ key <KP1> { [ R13, R13 ], [ KP_1, End ] };
+ key <KP2> { [ Down, R14 ], [ KP_2 ] };
+ key <KP3> { [ R15, R15 ], [ KP_3, Next ] };
+ key <KPEN> { [ KP_Enter ] };
+ key <KP0> { [ KP_Insert, KP_Insert], [ KP_0 ] };
+ key <KPDL> { [ Delete, Delete ], [ KP_Decimal ] };
+ // End "Keypad" section
+
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R, Shift_L };
+ modifier_map Mod1 { Meta_L, Meta_R };
+ modifier_map Mod2 { Num_Lock };
+ modifier_map Mod3 { Mode_switch };
+ modifier_map Mod4 { Alt_L };
+};
+
+xkb_symbols "type4" {
+ include "sun_vndr/us(type4basic)"
+
+ // A few alphanumeric keys are different
+ key <AE04> { [ 4, dollar ], [ EuroSign ] };
+ key <AE05> { [ 5, percent ], [ EuroSign ] };
+ key <AD03> { [ e, E ], [ EuroSign ] };
+};
+
+// US/ASCII layout for a Type 5 Sun keyboard
+xkb_symbols "type5basic" {
+ include "us(basic)"
+
+ key <RTSH> { [ Shift_R ] };
+ key <LALT> { [ Alt_L ] };
+ key <ALGR> { [ Mode_switch ] };
+ key <LMTA> { [ Meta_L ] };
+ key <RMTA> { [ Meta_R ] };
+ key <COMP> { [ Multi_key ] };
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ SunF36 ] };
+ key <FK12> { [ SunF37 ] };
+ key <STOP> { [ L1, L1 ], [ SunStop ] };
+ key <AGAI> { [ L2, L2 ], [ SunAgain ] };
+ key <PROP> { [ L3, L3 ], [ SunProps ] };
+ key <UNDO> { [ L4, L4 ], [ SunUndo ] };
+ key <FRNT> { [ L5, L5 ], [ SunFront ] };
+ key <COPY> { [ L6, L6 ], [ SunCopy ] };
+ key <OPEN> { [ L7, L7 ], [ SunOpen ] };
+ key <PAST> { [ L8, L8 ], [ SunPaste ] };
+ key <FIND> { [ L9, L9 ], [ SunFind ] };
+ key <CUT> { [ L10, L10 ], [ SunCut ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <PRSC> { [ R2, R2 ], [ Print, SunSys_Req ] };
+ key <SCLK> { [ R3, R3 ], [ Scroll_Lock ] };
+ key <PAUS> { [ R1, R1 ], [ Pause, Break ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+ key <UP> { [ Up ] };
+ key <DOWN> { [ Down ] };
+
+ key <DELE> { [ Delete ] };
+ key <INS> { [ Insert ] };
+ key <PGUP> { [ Prior ] };
+ key <PGDN> { [ Next ] };
+ key <HOME> { [ Home ] };
+ key <END> { [ End ] };
+ key <HELP> { [ Help ] };
+
+ // End "Editing" section, begin "Keypad"
+ key <NMLK> { [ Num_Lock ] };
+ key <KPDV> { [ R5, R5 ], [ KP_Divide ] };
+ key <KPMU> { [ R6, R6 ], [ KP_Multiply ] };
+ key <KPSU> { [ R4, R4 ], [ KP_Subtract ] };
+
+ key <KP7> { [ R7, R7 ], [ KP_7, Home ] };
+ key <KP8> { [ Up, R8 ], [ KP_8 ] };
+ key <KP9> { [ R9, R9 ], [ KP_9, Prior ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP4> { [ Left, R10 ], [ KP_4 ] };
+ key <KP5> { [ R11, R11 ], [ KP_5 ] };
+ key <KP6> { [ Right, R12 ], [ KP_6 ] };
+
+ key <KP1> { [ R13, R13 ], [ KP_1, End ] };
+ key <KP2> { [ Down, R14 ], [ KP_2 ] };
+ key <KP3> { [ R15, R15 ], [ KP_3 ] };
+ key <KPEN> { [ KP_Enter ] };
+
+ key <KP0> { [ KP_Insert, KP_Insert ], [ KP_0 ] };
+ key <KPDL> { [ KP_Delete, KP_Delete ], [ KP_Decimal ] };
+ // End "Keypad" section,
+ // begin "four keys up on the right"
+
+ key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
+ key <VOL-> { [ SunAudioLowerVolume, SunVideoLowerBrightness ] };
+ key <VOL+> { [ SunAudioRaiseVolume, SunVideoRaiseBrightness ] };
+ key <POWR> { [ SunPowerSwitch, SunPowerSwitchShift ] };
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_R };
+ modifier_map Mod1 { Meta_L, Meta_R };
+ modifier_map Mod2 { Num_Lock };
+ modifier_map Mod3 { Alt_R };
+ modifier_map Mod4 { Alt_L };
+};
+
+xkb_symbols "type5" {
+ include "sun_vndr/us(type5basic)"
+
+ // A few alphanumeric keys are different
+ key <AE04> { [ 4, dollar ], [ EuroSign ] };
+ key <AE05> { [ 5, percent ], [ EuroSign ] };
+ key <AD03> { [ e, E ], [ EuroSign ] };
+ key <BKSL> { [ backslash, bar ], [ brokenbar ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/tw b/xorg-server/xkeyboard-config/symbols/sun_vndr/tw
index 3f6569d2a..d2d3952e4 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/tw
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/tw
@@ -1,78 +1,78 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-// Taiwanese layout for a Type 6 Sun keyboard
-partial
-xkb_symbols "type6" {
- // A few keys are different from US layout - only those are shown here
- key <ALGR> { [ Henkan_Mode ] };
- key <BKSL> { [ backslash, bar, brokenbar ] };
-
-};
-
-
-// Taiwanese layout for a Type 4 Sun keyboard
-
-xkb_symbols "type4" {
-
- key <BKSL> { [ backslash, bar, brokenbar ] };
-
- key <COMP> { [ Henkan_Mode ] };
-
-};
-
-// Taiwanese layout for a Type 5 Sun keyboard
-xkb_symbols "type5" {
-
- // A few keys are different
- key <ALGR> { [ Henkan_Mode ] };
- key <BKSL> { [ backslash, bar, brokenbar ] };
-
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+// Taiwanese layout for a Type 6 Sun keyboard
+partial
+xkb_symbols "type6" {
+ // A few keys are different from US layout - only those are shown here
+ key <ALGR> { [ Henkan_Mode ] };
+ key <BKSL> { [ backslash, bar, brokenbar ] };
+
+};
+
+
+// Taiwanese layout for a Type 4 Sun keyboard
+
+xkb_symbols "type4" {
+
+ key <BKSL> { [ backslash, bar, brokenbar ] };
+
+ key <COMP> { [ Henkan_Mode ] };
+
+};
+
+// Taiwanese layout for a Type 5 Sun keyboard
+xkb_symbols "type5" {
+
+ // A few keys are different
+ key <ALGR> { [ Henkan_Mode ] };
+ key <BKSL> { [ backslash, bar, brokenbar ] };
+
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/ua b/xorg-server/xkeyboard-config/symbols/sun_vndr/ua
index b18fad4d7..98d39ecde 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/ua
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/ua
@@ -1,117 +1,117 @@
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// 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, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// 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
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-
-partial default alphanumeric_keys
-xkb_symbols "type6" {
-
- name[Group1]="Ukraine";
-
-
- key <TLDE> { [ grave, asciitilde, apostrophe, asciitilde ] };
- key <AE01> { [ 1, exclam, 1, exclam ] };
- key <AE02> { [ 2, at, 2, quotedbl ] };
- key <AE03> { [ 3, numbersign, 3, numbersign ] };
- key <AE04> { [ 4, dollar, 4, asterisk ] };
- key <AE05> { [ 5, percent, 5, colon ] };
- key <AE06> { [ 6, asciicircum, 6, comma ] };
- key <AE07> { [ 7, ampersand, 7, period ] };
- key <AE08> { [ 8, asterisk, 8, semicolon ] };
- key <AE09> { [ 9, parenleft, 9, parenleft ] };
- key <AE10> { [ 0, parenright, 0, parenright ] };
- key <AE11> { [ minus, underscore, minus, underscore ] };
- key <AE12> { [ equal, plus, equal, plus ] };
-
- key <AD01> { [ q, Q, Cyrillic_shorti, Cyrillic_SHORTI ] };
- key <AD02> { [ w, W, Cyrillic_tse, Cyrillic_TSE ] };
- key <AD03> { [ e, E, Cyrillic_u, Cyrillic_U ] };
- key <AD04> { [ r, R, Cyrillic_ka, Cyrillic_KA ] };
- key <AD05> { [ t, T, Cyrillic_ie, Cyrillic_IE ] };
- key <AD06> { [ y, Y, Cyrillic_en, Cyrillic_EN ] };
- key <AD07> { [ u, U, Cyrillic_ghe, Cyrillic_GHE ] };
- key <AD08> { [ i, I, Cyrillic_sha, Cyrillic_SHA ] };
- key <AD09> { [ o, O, Cyrillic_shcha, Cyrillic_SHCHA ] };
- key <AD10> { [ p, P, Cyrillic_ze, Cyrillic_ZE ] };
- key <AD11> { [ bracketleft, braceleft, Cyrillic_ha, Cyrillic_HA ] };
- key <AD12> { [ bracketright, braceright, Ukrainian_yi, Ukrainian_YI ] };
-
- key <AC01> { [ a, A, Cyrillic_ef, Cyrillic_EF ] };
- key <AC02> { [ s, S, Ukrainian_i, Ukrainian_I ] };
- key <AC03> { [ d, D, Cyrillic_ve, Cyrillic_VE ] };
- key <AC04> { [ f, F, Cyrillic_a, Cyrillic_A ] };
- key <AC05> { [ g, G, Cyrillic_pe, Cyrillic_PE ] };
- key <AC06> { [ h, H, Cyrillic_er, Cyrillic_ER ] };
- key <AC07> { [ j, J, Cyrillic_o, Cyrillic_O ] };
- key <AC08> { [ k, K, Cyrillic_el, Cyrillic_EL ] };
- key <AC09> { [ l, L, Cyrillic_de, Cyrillic_DE ] };
- key <AC10> { [ semicolon, colon, Cyrillic_zhe, Cyrillic_ZHE ] };
- key <AC11> { [ apostrophe, quotedbl, Ukrainian_ie, Ukrainian_IE ] };
- key <BKSL> { [ backslash, bar, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
-
- key <LSGT> { [ less, greater, slash, bar ] };
- key <AB01> { [ z, Z, Cyrillic_ya, Cyrillic_YA ] };
- key <AB02> { [ x, X, Cyrillic_che, Cyrillic_CHE ] };
- key <AB03> { [ c, C, Cyrillic_es, Cyrillic_ES ] };
- key <AB04> { [ v, V, Cyrillic_em, Cyrillic_EM ] };
- key <AB06> { [ n, N, Cyrillic_te, Cyrillic_TE ] };
- key <AB05> { [ b, B, Cyrillic_i, Cyrillic_I ] };
- key <AB07> { [ m, M, Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
- key <AB08> { [ comma, less, Cyrillic_be, Cyrillic_BE ] };
- key <AB09> { [ period, greater, Cyrillic_yu, Cyrillic_YU ] };
- key <AB10> { [ slash, question, slash, question ] };
-
- include "level3(ralt_switch)"
-
-};
-
-partial alphanumeric_keys
- xkb_symbols "basic" {
- include "sun_vndr/ua(type6)"
-};
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// 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, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// 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
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+
+partial default alphanumeric_keys
+xkb_symbols "type6" {
+
+ name[Group1]="Ukraine";
+
+
+ key <TLDE> { [ grave, asciitilde, apostrophe, asciitilde ] };
+ key <AE01> { [ 1, exclam, 1, exclam ] };
+ key <AE02> { [ 2, at, 2, quotedbl ] };
+ key <AE03> { [ 3, numbersign, 3, numbersign ] };
+ key <AE04> { [ 4, dollar, 4, asterisk ] };
+ key <AE05> { [ 5, percent, 5, colon ] };
+ key <AE06> { [ 6, asciicircum, 6, comma ] };
+ key <AE07> { [ 7, ampersand, 7, period ] };
+ key <AE08> { [ 8, asterisk, 8, semicolon ] };
+ key <AE09> { [ 9, parenleft, 9, parenleft ] };
+ key <AE10> { [ 0, parenright, 0, parenright ] };
+ key <AE11> { [ minus, underscore, minus, underscore ] };
+ key <AE12> { [ equal, plus, equal, plus ] };
+
+ key <AD01> { [ q, Q, Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AD02> { [ w, W, Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD03> { [ e, E, Cyrillic_u, Cyrillic_U ] };
+ key <AD04> { [ r, R, Cyrillic_ka, Cyrillic_KA ] };
+ key <AD05> { [ t, T, Cyrillic_ie, Cyrillic_IE ] };
+ key <AD06> { [ y, Y, Cyrillic_en, Cyrillic_EN ] };
+ key <AD07> { [ u, U, Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> { [ i, I, Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> { [ o, O, Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD10> { [ p, P, Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ bracketleft, braceleft, Cyrillic_ha, Cyrillic_HA ] };
+ key <AD12> { [ bracketright, braceright, Ukrainian_yi, Ukrainian_YI ] };
+
+ key <AC01> { [ a, A, Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ s, S, Ukrainian_i, Ukrainian_I ] };
+ key <AC03> { [ d, D, Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ f, F, Cyrillic_a, Cyrillic_A ] };
+ key <AC05> { [ g, G, Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> { [ h, H, Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> { [ j, J, Cyrillic_o, Cyrillic_O ] };
+ key <AC08> { [ k, K, Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> { [ l, L, Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> { [ semicolon, colon, Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> { [ apostrophe, quotedbl, Ukrainian_ie, Ukrainian_IE ] };
+ key <BKSL> { [ backslash, bar, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+
+ key <LSGT> { [ less, greater, slash, bar ] };
+ key <AB01> { [ z, Z, Cyrillic_ya, Cyrillic_YA ] };
+ key <AB02> { [ x, X, Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> { [ c, C, Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> { [ v, V, Cyrillic_em, Cyrillic_EM ] };
+ key <AB06> { [ n, N, Cyrillic_te, Cyrillic_TE ] };
+ key <AB05> { [ b, B, Cyrillic_i, Cyrillic_I ] };
+ key <AB07> { [ m, M, Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ comma, less, Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> { [ period, greater, Cyrillic_yu, Cyrillic_YU ] };
+ key <AB10> { [ slash, question, slash, question ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+ xkb_symbols "basic" {
+ include "sun_vndr/ua(type6)"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/typo b/xorg-server/xkeyboard-config/symbols/typo
index 5cbf6be3e..ed4a2774b 100644
--- a/xorg-server/xkeyboard-config/symbols/typo
+++ b/xorg-server/xkeyboard-config/symbols/typo
@@ -1,51 +1,51 @@
-// typographic keyboard
-// Sergei Stolyarov <sergei@regolit.com>
-//
-// Initial contribution by Alexey Ten <alexeyten+deb@gmail.com>
-//
-// Based on the layout proposed by Ilya Birman,
-// http://ilyabirman.ru/typography-layout/
-//
-
-// default layout
-default partial
-xkb_symbols "base" {
-// 1st keyboard row
- key <TLDE> { [NoSymbol, NoSymbol, NoSymbol, approxeq] };
- key <AE01> { [NoSymbol, NoSymbol, onesuperior] };
- key <AE02> { [NoSymbol, NoSymbol, twosuperior, onehalf] };
- key <AE03> { [NoSymbol, NoSymbol, threesuperior, onethird] };
- key <AE04> { [NoSymbol, NoSymbol, dollar, onequarter] };
- key <AE05> { [NoSymbol, NoSymbol, U2030] };
- key <AE07> { [NoSymbol, NoSymbol, ampersand] };
- key <AE08> { [NoSymbol, NoSymbol, enfilledcircbullet, oneeighth] };
- key <AE11> { [NoSymbol, NoSymbol, emdash, hyphen] };
- key <AE12> { [NoSymbol, NoSymbol, notequal, plusminus] };
-
-// 2nd keyboard row
- key <AD03> { [NoSymbol, NoSymbol, EuroSign] }; // "e"
- key <AD04> { [NoSymbol, NoSymbol, registered] }; // "r"
- key <AD05> { [NoSymbol, NoSymbol, trademark] }; // "t"
- key <AD06> { [NoSymbol, NoSymbol, yen] }; // "y"
- key <AD10> { [NoSymbol, NoSymbol, acute, doubleacute] }; // "p"
- key <AD11> { [NoSymbol, NoSymbol, bracketleft, braceleft ] }; // [
- key <AD12> { [NoSymbol, NoSymbol, bracketright, braceright ] }; // ]
-
-// 3rd keyboard row
- key <AC01> { [NoSymbol, NoSymbol, U0301, NoSymbol] }; // "a"
- key <AC02> { [NoSymbol, NoSymbol, section]}; // "s"
- key <AC03> { [NoSymbol, NoSymbol, degree, division] }; // "d"
- key <AC04> { [NoSymbol, NoSymbol, sterling, NoSymbol] }; // "f"
- key <AC07> { [NoSymbol, NoSymbol, doublelowquotemark, singlelowquotemark] }; // "j"
- key <AC08> { [NoSymbol, NoSymbol, leftdoublequotemark, leftsinglequotemark] }; // "k"
- key <AC09> { [NoSymbol, NoSymbol, rightdoublequotemark, rightsinglequotemark] }; // "l"
- key <AC10> { [NoSymbol, NoSymbol, leftsinglequotemark, minutes] }; // ";"
- key <AC11> { [NoSymbol, NoSymbol, rightsinglequotemark, seconds] }; // "'"
-
-// 4th keyboard row
- key <AB02> { [NoSymbol, NoSymbol, multiply, U22C5] }; // "x"
- key <AB03> { [NoSymbol, NoSymbol, copyright, cent] }; // "c"
- key <AB08> { [NoSymbol, NoSymbol, guillemotleft, less] }; // ","
- key <AB09> { [NoSymbol, NoSymbol, guillemotright, greater] }; // "."
- key <AB10> { [NoSymbol, NoSymbol, ellipsis] }; // "/"
-};
+// typographic keyboard
+// Sergei Stolyarov <sergei@regolit.com>
+//
+// Initial contribution by Alexey Ten <alexeyten+deb@gmail.com>
+//
+// Based on the layout proposed by Ilya Birman,
+// http://ilyabirman.ru/typography-layout/
+//
+
+// default layout
+default partial
+xkb_symbols "base" {
+// 1st keyboard row
+ key <TLDE> { [NoSymbol, NoSymbol, NoSymbol, approxeq] };
+ key <AE01> { [NoSymbol, NoSymbol, onesuperior] };
+ key <AE02> { [NoSymbol, NoSymbol, twosuperior, onehalf] };
+ key <AE03> { [NoSymbol, NoSymbol, threesuperior, onethird] };
+ key <AE04> { [NoSymbol, NoSymbol, dollar, onequarter] };
+ key <AE05> { [NoSymbol, NoSymbol, U2030] };
+ key <AE07> { [NoSymbol, NoSymbol, ampersand] };
+ key <AE08> { [NoSymbol, NoSymbol, enfilledcircbullet, oneeighth] };
+ key <AE11> { [NoSymbol, NoSymbol, emdash, hyphen] };
+ key <AE12> { [NoSymbol, NoSymbol, notequal, plusminus] };
+
+// 2nd keyboard row
+ key <AD03> { [NoSymbol, NoSymbol, EuroSign] }; // "e"
+ key <AD04> { [NoSymbol, NoSymbol, registered] }; // "r"
+ key <AD05> { [NoSymbol, NoSymbol, trademark] }; // "t"
+ key <AD06> { [NoSymbol, NoSymbol, yen] }; // "y"
+ key <AD10> { [NoSymbol, NoSymbol, acute, doubleacute] }; // "p"
+ key <AD11> { [NoSymbol, NoSymbol, bracketleft, braceleft ] }; // [
+ key <AD12> { [NoSymbol, NoSymbol, bracketright, braceright ] }; // ]
+
+// 3rd keyboard row
+ key <AC01> { [NoSymbol, NoSymbol, U0301, NoSymbol] }; // "a"
+ key <AC02> { [NoSymbol, NoSymbol, section]}; // "s"
+ key <AC03> { [NoSymbol, NoSymbol, degree, division] }; // "d"
+ key <AC04> { [NoSymbol, NoSymbol, sterling, NoSymbol] }; // "f"
+ key <AC07> { [NoSymbol, NoSymbol, doublelowquotemark, singlelowquotemark] }; // "j"
+ key <AC08> { [NoSymbol, NoSymbol, leftdoublequotemark, leftsinglequotemark] }; // "k"
+ key <AC09> { [NoSymbol, NoSymbol, rightdoublequotemark, rightsinglequotemark] }; // "l"
+ key <AC10> { [NoSymbol, NoSymbol, leftsinglequotemark, minutes] }; // ";"
+ key <AC11> { [NoSymbol, NoSymbol, rightsinglequotemark, seconds] }; // "'"
+
+// 4th keyboard row
+ key <AB02> { [NoSymbol, NoSymbol, multiply, U22C5] }; // "x"
+ key <AB03> { [NoSymbol, NoSymbol, copyright, cent] }; // "c"
+ key <AB08> { [NoSymbol, NoSymbol, guillemotleft, less] }; // ","
+ key <AB09> { [NoSymbol, NoSymbol, guillemotright, greater] }; // "."
+ key <AB10> { [NoSymbol, NoSymbol, ellipsis] }; // "/"
+};
diff --git a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/Makefile.am
index 50be49bb4..e7b931bf0 100644
--- a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/xfree68_vndr
-
-dist_symbols_DATA = \
-amiga ataritt
+symbolsdir = $(xkb_base)/symbols/xfree68_vndr
+
+dist_symbols_DATA = \
+amiga ataritt
diff --git a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga
index 48ea37ca4..e9d43ff60 100644
--- a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga
+++ b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga
@@ -1,126 +1,126 @@
-default xkb_symbols "usa1" {
-
- name[Group1]= "usa1";
- key <ESC> { [ Escape ] };
-
- // Begin "Function" section
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- // End "Function" section
-
- // Alphanumeric section
- key <TLDE> { [ quoteleft, asciitilde ] };
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
- key <BKSL> { [ backslash, bar ] };
- key <BKSP> { [ BackSpace ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E ] };
- key <AD04> { [ r, R ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
- key <RTRN> { [ Return ] };
-
- key <LCTL> { [ Control_L ] };
- key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ a, A ] };
- key <AC02> { [ s, S ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K ] };
- key <AC09> { [ l, L ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ quoteright, quotedbl ] };
-
- key <LFSH> { [ Shift_L ] };
- key <AB01> { [ z, Z ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
- key <RTSH> { [ Shift_R ] };
-
- key <LALT> { [ Alt_L, Meta_L ] };
- key <LAMI> { [ Mode_switch ] };
- key <SPCE> { [ space ] };
- key <RAMI> { [ Multi_key ] };
- key <RALT> { [ Alt_R, Meta_R ] };
- // End alphanumeric section
-
- // Begin "Editing" section
- key <DELE> { [ Delete ] };
- key <HELP> { [ Help ] };
- key <UP> { [ Up ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <RGHT> { [ Right ] };
- // End "Editing" section
-
- // Begin "Keypad" section
- key <KPLP> { [ Num_Lock ] };
- key <KPRP> { [ Scroll_Lock ] };
- key <KPDV> { [ KP_Divide ] };
- key <KPMU> { [ KP_Multiply, Print ] };
-
- key <KP7> { [ KP_7, KP_Home ] };
- key <KP8> { [ KP_8, KP_Up ] };
- key <KP9> { [ KP_9, KP_Prior ] };
- key <KPSU> { [ KP_Subtract ] };
-
- key <KP4> { [ KP_4, KP_Left ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6, KP_Right ] };
- key <KPAD> { [ KP_Add ] };
-
- key <KP1> { [ KP_1, KP_End ] };
- key <KP2> { [ KP_2, KP_Down ] };
- key <KP3> { [ KP_3, KP_Next ] };
-
- key <KP0> { [ KP_0, KP_Insert ] };
- key <KPDC> { [ KP_Decimal, KP_Delete ] };
- key <KPEN> { [ KP_Enter ] };
- // End "Keypad" section
-
- // begin modifier mappings
- modifier_map Shift { Shift_L, Shift_R };
- modifier_map Lock { Caps_Lock };
- modifier_map Control{ Control_L };
- modifier_map Mod1 { Alt_L, Alt_R };
- modifier_map Mod2 { Mode_switch };
- modifier_map Mod3 { Meta_L, Meta_R };
-};
+default xkb_symbols "usa1" {
+
+ name[Group1]= "usa1";
+ key <ESC> { [ Escape ] };
+
+ // Begin "Function" section
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ // End "Function" section
+
+ // Alphanumeric section
+ key <TLDE> { [ quoteleft, asciitilde ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSL> { [ backslash, bar ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+ key <RTRN> { [ Return ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ quoteright, quotedbl ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <RTSH> { [ Shift_R ] };
+
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <LAMI> { [ Mode_switch ] };
+ key <SPCE> { [ space ] };
+ key <RAMI> { [ Multi_key ] };
+ key <RALT> { [ Alt_R, Meta_R ] };
+ // End alphanumeric section
+
+ // Begin "Editing" section
+ key <DELE> { [ Delete ] };
+ key <HELP> { [ Help ] };
+ key <UP> { [ Up ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <RGHT> { [ Right ] };
+ // End "Editing" section
+
+ // Begin "Keypad" section
+ key <KPLP> { [ Num_Lock ] };
+ key <KPRP> { [ Scroll_Lock ] };
+ key <KPDV> { [ KP_Divide ] };
+ key <KPMU> { [ KP_Multiply, Print ] };
+
+ key <KP7> { [ KP_7, KP_Home ] };
+ key <KP8> { [ KP_8, KP_Up ] };
+ key <KP9> { [ KP_9, KP_Prior ] };
+ key <KPSU> { [ KP_Subtract ] };
+
+ key <KP4> { [ KP_4, KP_Left ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6, KP_Right ] };
+ key <KPAD> { [ KP_Add ] };
+
+ key <KP1> { [ KP_1, KP_End ] };
+ key <KP2> { [ KP_2, KP_Down ] };
+ key <KP3> { [ KP_3, KP_Next ] };
+
+ key <KP0> { [ KP_0, KP_Insert ] };
+ key <KPDC> { [ KP_Decimal, KP_Delete ] };
+ key <KPEN> { [ KP_Enter ] };
+ // End "Keypad" section
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_L, Shift_R };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control{ Control_L };
+ modifier_map Mod1 { Alt_L, Alt_R };
+ modifier_map Mod2 { Mode_switch };
+ modifier_map Mod3 { Meta_L, Meta_R };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt
index 8c6277fb1..813311dcf 100644
--- a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt
+++ b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt
@@ -1,155 +1,155 @@
-default xkb_symbols "us" {
-
- name[Group1]= "US/ASCII";
- key <ESC> { [ Escape ] };
-
- // Alphanumeric section
- key <AE01> { [ 1, exclam ] };
- key <AE02> { [ 2, at ] };
- key <AE03> { [ 3, numbersign ] };
- key <AE04> { [ 4, dollar ] };
- key <AE05> { [ 5, percent ] };
- key <AE06> { [ 6, asciicircum ] };
- key <AE07> { [ 7, ampersand ] };
- key <AE08> { [ 8, asterisk ] };
- key <AE09> { [ 9, parenleft ] };
- key <AE10> { [ 0, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
- key <TLDE> { [ quoteleft, asciitilde ] };
- key <BKSP> { [ BackSpace ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ q, Q ] };
- key <AD02> { [ w, W ] };
- key <AD03> { [ e, E ] };
- key <AD04> { [ r, R ] };
- key <AD05> { [ t, T ] };
- key <AD06> { [ y, Y ] };
- key <AD07> { [ u, U ] };
- key <AD08> { [ i, I ] };
- key <AD09> { [ o, O ] };
- key <AD10> { [ p, P ] };
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
- key <RTRN> { [ Return ] };
- key <DELE> { [ Delete ] };
-
- key <LCTL> { [ Control_L ] };
- key <AC01> { [ a, A ] };
- key <AC02> { [ s, S ] };
- key <AC03> { [ d, D ] };
- key <AC04> { [ f, F ] };
- key <AC05> { [ g, G ] };
- key <AC06> { [ h, H ] };
- key <AC07> { [ j, J ] };
- key <AC08> { [ k, K ] };
- key <AC09> { [ l, L ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ quoteright, quotedbl ] };
- key <BKSL> { [ backslash, bar ] };
-
- key <LFSH> { [ Shift_L ] };
- key <AB01> { [ z, Z ] };
- key <AB02> { [ x, X ] };
- key <AB03> { [ c, C ] };
- key <AB04> { [ v, V ] };
- key <AB05> { [ b, B ] };
- key <AB06> { [ n, N ] };
- key <AB07> { [ m, M ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
- key <RTSH> { [ Shift_R ] };
-
- key <ALT> { [ Meta_L ] };
- key <SPCE> { [ space ] };
- key <CAPS> { [ Caps_Lock ] };
- // End alphanumeric section
-
- // Begin "Function" section
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- // End "Function" section
-
- // Begin "Editing" section
- key <HELP> { [ Help ] };
- key <UNDO> { [ Undo ] };
- key <INS> { [ Insert ] };
- key <UP> { [ Up ] };
- key <HOME> { [ Home, Clear ] };
- key <LEFT> { [ Left ] };
- key <DOWN> { [ Down ] };
- key <RGHT> { [ Right ] };
- // End "Editing" section
-
- // Begin "Keypad" section
- key <KPLP> { [ KP_F1 ] };
- key <KPRP> { [ KP_F2 ] };
- key <KPDV> { [ KP_Divide ] };
- key <KPMU> { [ KP_Multiply ] };
- key <KP7> { [ KP_7 ] };
- key <KP8> { [ KP_8 ] };
- key <KP9> { [ KP_9 ] };
- key <KPSU> { [ KP_Subtract ] };
- key <KP4> { [ KP_4 ] };
- key <KP5> { [ KP_5 ] };
- key <KP6> { [ KP_6 ] };
- key <KPAD> { [ KP_Add ] };
- key <KP1> { [ KP_1 ] };
- key <KP2> { [ KP_2 ] };
- key <KP3> { [ KP_3 ] };
- key <KP0> { [ KP_0 ] };
- key <KPDC> { [ KP_Decimal ] };
- key <KPEN> { [ KP_Enter ] };
- // End "Keypad" section
-
- // begin modifier mappings
- modifier_map Shift { Shift_L, Shift_R };
- modifier_map Lock { Caps_Lock };
- modifier_map Control{ Control_L };
- modifier_map Mod1 { Meta_L };
-};
-
-xkb_symbols "de" {
- include "ataritt(us)"
-
- name[Group1]= "German";
-
- // Alphanumeric section
- key <AE02> { [ 2, quotedbl ] };
- key <AE03> { [ 3, section ] };
- key <AE06> { [ 6, ampersand ] };
- key <AE07> { [ 7, slash ] };
- key <AE08> { [ 8, parenleft ] };
- key <AE09> { [ 9, parenright ] };
- key <AE10> { [ 0, equal ] };
- key <AE11> { [ ssharp, question ] };
- key <AE12> { [ quoteright, quoteleft ] };
- key <TLDE> { [ numbersign, asciicircum ] };
-
- key <AD06> { [ z, Z ] };
- key <AD11> { [ udiaeresis, Udiaeresis ],
- [ at, backslash ] };
- key <AD12> { [ plus, asterisk ] };
-
- key <AC10> { [ odiaeresis, Odiaeresis ],
- [ bracketleft, braceleft ] };
- key <AC11> { [ adiaeresis, Adiaeresis ],
- [ bracketright, braceright ] };
- key <BKSL> { [ asciitilde, bar ] };
-
- key <LSGT> { [ less, greater ] };
- key <AB01> { [ y, Y ] };
- key <AB08> { [ comma, semicolon ] };
- key <AB09> { [ period, colon ] };
- key <AB10> { [ minus, underscore ] };
-};
+default xkb_symbols "us" {
+
+ name[Group1]= "US/ASCII";
+ key <ESC> { [ Escape ] };
+
+ // Alphanumeric section
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, asciicircum ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <TLDE> { [ quoteleft, asciitilde ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+ key <RTRN> { [ Return ] };
+ key <DELE> { [ Delete ] };
+
+ key <LCTL> { [ Control_L ] };
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ quoteright, quotedbl ] };
+ key <BKSL> { [ backslash, bar ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <RTSH> { [ Shift_R ] };
+
+ key <ALT> { [ Meta_L ] };
+ key <SPCE> { [ space ] };
+ key <CAPS> { [ Caps_Lock ] };
+ // End alphanumeric section
+
+ // Begin "Function" section
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ // End "Function" section
+
+ // Begin "Editing" section
+ key <HELP> { [ Help ] };
+ key <UNDO> { [ Undo ] };
+ key <INS> { [ Insert ] };
+ key <UP> { [ Up ] };
+ key <HOME> { [ Home, Clear ] };
+ key <LEFT> { [ Left ] };
+ key <DOWN> { [ Down ] };
+ key <RGHT> { [ Right ] };
+ // End "Editing" section
+
+ // Begin "Keypad" section
+ key <KPLP> { [ KP_F1 ] };
+ key <KPRP> { [ KP_F2 ] };
+ key <KPDV> { [ KP_Divide ] };
+ key <KPMU> { [ KP_Multiply ] };
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPSU> { [ KP_Subtract ] };
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KPAD> { [ KP_Add ] };
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KP0> { [ KP_0 ] };
+ key <KPDC> { [ KP_Decimal ] };
+ key <KPEN> { [ KP_Enter ] };
+ // End "Keypad" section
+
+ // begin modifier mappings
+ modifier_map Shift { Shift_L, Shift_R };
+ modifier_map Lock { Caps_Lock };
+ modifier_map Control{ Control_L };
+ modifier_map Mod1 { Meta_L };
+};
+
+xkb_symbols "de" {
+ include "ataritt(us)"
+
+ name[Group1]= "German";
+
+ // Alphanumeric section
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, section ] };
+ key <AE06> { [ 6, ampersand ] };
+ key <AE07> { [ 7, slash ] };
+ key <AE08> { [ 8, parenleft ] };
+ key <AE09> { [ 9, parenright ] };
+ key <AE10> { [ 0, equal ] };
+ key <AE11> { [ ssharp, question ] };
+ key <AE12> { [ quoteright, quoteleft ] };
+ key <TLDE> { [ numbersign, asciicircum ] };
+
+ key <AD06> { [ z, Z ] };
+ key <AD11> { [ udiaeresis, Udiaeresis ],
+ [ at, backslash ] };
+ key <AD12> { [ plus, asterisk ] };
+
+ key <AC10> { [ odiaeresis, Odiaeresis ],
+ [ bracketleft, braceleft ] };
+ key <AC11> { [ adiaeresis, Adiaeresis ],
+ [ bracketright, braceright ] };
+ key <BKSL> { [ asciitilde, bar ] };
+
+ key <LSGT> { [ less, greater ] };
+ key <AB01> { [ y, Y ] };
+ key <AB08> { [ comma, semicolon ] };
+ key <AB09> { [ period, colon ] };
+ key <AB10> { [ minus, underscore ] };
+};
diff --git a/xorg-server/xkeyboard-config/types/Makefile.am b/xorg-server/xkeyboard-config/types/Makefile.am
index 6da3ccb78..afc5acb58 100644
--- a/xorg-server/xkeyboard-config/types/Makefile.am
+++ b/xorg-server/xkeyboard-config/types/Makefile.am
@@ -1,11 +1,11 @@
-typesdir = $(xkb_base)/types
-
-dist_types_DATA = \
-basic cancel caps \
-complete default extra \
-iso9995 level5 mousekeys nokia numpad \
-pc README
-
-dir_data = $(dist_types_DATA)
-
-include $(top_srcdir)/xkbrules.am
+typesdir = $(xkb_base)/types
+
+dist_types_DATA = \
+basic cancel caps \
+complete default extra \
+iso9995 level5 mousekeys nokia numpad \
+pc README
+
+dir_data = $(dist_types_DATA)
+
+include $(top_srcdir)/xkbrules.am
diff --git a/xorg-server/xkeyboard-config/types/README b/xorg-server/xkeyboard-config/types/README
index 1a1e2c01e..8165c7bd8 100644
--- a/xorg-server/xkeyboard-config/types/README
+++ b/xorg-server/xkeyboard-config/types/README
@@ -1,4 +1,4 @@
-The types component of a keyboard mapping specifies the key types that can be
-associated with the various keyboard keys. The types component can also
-optionally contain real modifiers binding and symbolic names for one
-or more virtual modifiers.
+The types component of a keyboard mapping specifies the key types that can be
+associated with the various keyboard keys. The types component can also
+optionally contain real modifiers binding and symbolic names for one
+or more virtual modifiers.
diff --git a/xorg-server/xkeyboard-config/types/basic b/xorg-server/xkeyboard-config/types/basic
index 70292ea38..552b83400 100644
--- a/xorg-server/xkeyboard-config/types/basic
+++ b/xorg-server/xkeyboard-config/types/basic
@@ -1,29 +1,29 @@
-default xkb_types "basic" {
-
- // Fairly standard definitions for
- // the four required key types
-
- virtual_modifiers NumLock;
-
- type "ONE_LEVEL" {
- modifiers = None;
- map[None] = Level1;
- level_name[Level1]= "Any";
- };
-
- type "TWO_LEVEL" {
- modifiers = Shift;
- map[Shift] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- };
-
- type "ALPHABETIC" {
- modifiers = Shift+Lock;
- map[Shift] = Level2;
- map[Lock] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Caps";
- };
-
-};
+default xkb_types "basic" {
+
+ // Fairly standard definitions for
+ // the four required key types
+
+ virtual_modifiers NumLock;
+
+ type "ONE_LEVEL" {
+ modifiers = None;
+ map[None] = Level1;
+ level_name[Level1]= "Any";
+ };
+
+ type "TWO_LEVEL" {
+ modifiers = Shift;
+ map[Shift] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ };
+
+ type "ALPHABETIC" {
+ modifiers = Shift+Lock;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Caps";
+ };
+
+};
diff --git a/xorg-server/xkeyboard-config/types/cancel b/xorg-server/xkeyboard-config/types/cancel
index ec5d7191d..f738f0649 100644
--- a/xorg-server/xkeyboard-config/types/cancel
+++ b/xorg-server/xkeyboard-config/types/cancel
@@ -1,11 +1,11 @@
-partial default xkb_types "Shift_Cancels_Caps" {
-
-override type "TWO_LEVEL" {
- modifiers = Shift+Lock;
- map[Shift] = Level2;
- preserve[Lock]= Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
-};
-
-};
+partial default xkb_types "Shift_Cancels_Caps" {
+
+override type "TWO_LEVEL" {
+ modifiers = Shift+Lock;
+ map[Shift] = Level2;
+ preserve[Lock]= Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+};
+
+};
diff --git a/xorg-server/xkeyboard-config/types/caps b/xorg-server/xkeyboard-config/types/caps
index 08a7211b9..dd7fa2eaf 100644
--- a/xorg-server/xkeyboard-config/types/caps
+++ b/xorg-server/xkeyboard-config/types/caps
@@ -1,168 +1,168 @@
-// CapsLock uses internal capitalization rules
-// Shift "pauses" CapsLock
-partial xkb_types "internal" {
- type "ALPHABETIC" {
- modifiers = Shift+Lock;
- map[Shift] = Level2;
- preserve[Lock] = Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Caps";
- };
-
- type "FOUR_LEVEL_ALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- preserve[Lock] = Lock;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level3;
- preserve[Lock+LevelThree] = Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- type "FOUR_LEVEL_SEMIALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- preserve[Lock] = Lock;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level4;
- preserve[Lock+LevelThree] = Lock;
- preserve[Lock+Shift+LevelThree] = Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-};
-// CapsLock uses internal capitalization rules
-// Shift doesn't cancel CapsLock
-partial xkb_types "internal_nocancel" {
- type "ALPHABETIC" {
- modifiers = Shift;
- map[Shift] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Caps";
- };
-
- type "FOUR_LEVEL_ALPHABETIC" {
- modifiers = Shift+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- type "FOUR_LEVEL_SEMIALPHABETIC" {
- // the same as FOUR_LEVEL_ALPHABETIC
- modifiers = Shift+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-};
-// CapsLock acts as Shift with locking
-// Shift "pauses" CapsLock
-partial xkb_types "shift" {
- type "ALPHABETIC" {
- modifiers = Shift+Lock;
- map[Shift] = Level2;
- map[Lock] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Caps";
- };
-
- type "FOUR_LEVEL_ALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level4;
- map[Shift+Lock+LevelThree] = Level3;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- type "FOUR_LEVEL_SEMIALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level4;
- preserve[Lock+LevelThree] = Lock;
- preserve[Lock+Shift+LevelThree] = Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-};
-// CapsLock acts as Shift with locking
-// Shift doesn't cancel CapsLock
-partial xkb_types "shift_nocancel" {
- type "ALPHABETIC" {
- modifiers = Shift+Lock;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[Shift+Lock] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Caps";
- };
-
- type "FOUR_LEVEL_ALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[Shift+Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level4;
- map[Shift+Lock+LevelThree] = Level4;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-
- type "FOUR_LEVEL_SEMIALPHABETIC" {
- modifiers = Shift+Lock+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[Shift+Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level4;
- preserve[Lock+LevelThree] = Lock;
- preserve[Lock+Shift+LevelThree] = Lock;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- };
-};
+// CapsLock uses internal capitalization rules
+// Shift "pauses" CapsLock
+partial xkb_types "internal" {
+ type "ALPHABETIC" {
+ modifiers = Shift+Lock;
+ map[Shift] = Level2;
+ preserve[Lock] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Caps";
+ };
+
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ preserve[Lock] = Lock;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level3;
+ preserve[Lock+LevelThree] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ preserve[Lock] = Lock;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+ preserve[Lock+LevelThree] = Lock;
+ preserve[Lock+Shift+LevelThree] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+};
+// CapsLock uses internal capitalization rules
+// Shift doesn't cancel CapsLock
+partial xkb_types "internal_nocancel" {
+ type "ALPHABETIC" {
+ modifiers = Shift;
+ map[Shift] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Caps";
+ };
+
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers = Shift+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ // the same as FOUR_LEVEL_ALPHABETIC
+ modifiers = Shift+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+};
+// CapsLock acts as Shift with locking
+// Shift "pauses" CapsLock
+partial xkb_types "shift" {
+ type "ALPHABETIC" {
+ modifiers = Shift+Lock;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Caps";
+ };
+
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level4;
+ map[Shift+Lock+LevelThree] = Level3;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+ preserve[Lock+LevelThree] = Lock;
+ preserve[Lock+Shift+LevelThree] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+};
+// CapsLock acts as Shift with locking
+// Shift doesn't cancel CapsLock
+partial xkb_types "shift_nocancel" {
+ type "ALPHABETIC" {
+ modifiers = Shift+Lock;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[Shift+Lock] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Caps";
+ };
+
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[Shift+Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level4;
+ map[Shift+Lock+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[Shift+Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+ preserve[Lock+LevelThree] = Lock;
+ preserve[Lock+Shift+LevelThree] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+};
diff --git a/xorg-server/xkeyboard-config/types/complete b/xorg-server/xkeyboard-config/types/complete
index 2ac68082e..3b59ca233 100644
--- a/xorg-server/xkeyboard-config/types/complete
+++ b/xorg-server/xkeyboard-config/types/complete
@@ -1,9 +1,9 @@
-default xkb_types "complete" {
- include "basic"
- include "mousekeys"
- include "pc"
- include "iso9995"
- include "level5"
- include "extra"
- include "numpad"
-};
+default xkb_types "complete" {
+ include "basic"
+ include "mousekeys"
+ include "pc"
+ include "iso9995"
+ include "level5"
+ include "extra"
+ include "numpad"
+};
diff --git a/xorg-server/xkeyboard-config/types/iso9995 b/xorg-server/xkeyboard-config/types/iso9995
index 893a6b341..0cf34203c 100644
--- a/xorg-server/xkeyboard-config/types/iso9995
+++ b/xorg-server/xkeyboard-config/types/iso9995
@@ -1,18 +1,18 @@
-partial default xkb_types "default" {
-
- // Definition for a key type which
- // can be used to implement ISO9995
- // style level three shift
- virtual_modifiers LevelThree;
-
- type "THREE_LEVEL" {
- modifiers = Shift+LevelThree;
- map[None] = Level1;
- map[Shift] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level3;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Level3";
- };
-};
+partial default xkb_types "default" {
+
+ // Definition for a key type which
+ // can be used to implement ISO9995
+ // style level three shift
+ virtual_modifiers LevelThree;
+
+ type "THREE_LEVEL" {
+ modifiers = Shift+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level3;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Level3";
+ };
+};
diff --git a/xorg-server/xkeyboard-config/types/level5 b/xorg-server/xkeyboard-config/types/level5
index 671f4b3e8..f9ba5b28a 100644
--- a/xorg-server/xkeyboard-config/types/level5
+++ b/xorg-server/xkeyboard-config/types/level5
@@ -1,213 +1,213 @@
-partial default xkb_types "default" {
- // Definition for a key type used for the czech keymap, for instance.
- // Defines style a with four level shift. It is similar to three_level
- // type used for iso9995 but it lets the shift key behave "normally".
-
- virtual_modifiers LevelThree,ScrollLock,LevelFive;
-
- type "EIGHT_LEVEL" {
- modifiers = Shift+LevelThree+LevelFive;
- map[None] = Level1;
- map[Shift] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[LevelFive] = Level5;
- map[Shift+LevelFive] = Level6;
- map[LevelThree+LevelFive] = Level7;
- map[Shift+LevelThree+LevelFive] = Level8;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- level_name[Level5] = "X";
- level_name[Level6] = "X Shift";
- level_name[Level7] = "X Alt Base";
- level_name[Level8] = "X Shift Alt";
- };
-
- type "EIGHT_LEVEL_ALPHABETIC" {
- modifiers = Shift+Lock+LevelThree+LevelFive;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level4;
- map[Lock+Shift+LevelThree] = Level3;
-
- map[LevelFive] = Level5;
- map[Shift+LevelFive] = Level6;
- map[Lock+LevelFive] = Level6;
- map[LevelThree+LevelFive] = Level7;
- map[Shift+LevelThree+LevelFive] = Level8;
- map[Lock+LevelThree+LevelFive] = Level8;
- map[Lock+Shift+LevelThree+LevelFive] = Level7;
-
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- level_name[Level5] = "X";
- level_name[Level6] = "X Shift";
- level_name[Level7] = "X Alt Base";
- level_name[Level8] = "X Shift Alt";
- };
-
-// type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" {
-// // Level5-Lock is implemented by using NumLock, because a real modifier
-// // is required.
-//
-// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
-//
-// map[None] = Level1;
-// map[Shift] = Level2;
-// map[LevelThree] = Level3;
-// map[LevelThree+Shift] = Level4;
-//
-// map[LevelFive] = Level5;
-// map[LevelFive+Shift] = Level6;
-// map[LevelFive+LevelThree] = Level7;
-// map[LevelFive+LevelThree+Shift] = Level8;
-//
-// map[NumLock] = Level5;
-// map[NumLock+Shift] = Level6;
-// map[NumLock+LevelThree] = Level7;
-// map[NumLock+LevelThree+Shift] = Level8;
-//
-// map[NumLock+LevelFive] = Level1;
-// map[NumLock+LevelFive+Shift] = Level2;
-// map[NumLock+LevelFive+LevelThree] = Level3;
-// map[NumLock+LevelFive+LevelThree+Shift] = Level4;
-//
-// // Lock has no effect
-// map[Lock] = Level1;
-// map[Lock+Shift] = Level2;
-// map[Lock+LevelThree] = Level3;
-// map[Lock+LevelThree+Shift] = Level4;
-//
-// map[Lock+LevelFive] = Level5;
-// map[Lock+LevelFive+Shift] = Level6;
-// map[Lock+LevelFive+LevelThree] = Level7;
-// map[Lock+LevelFive+LevelThree+Shift] = Level8;
-//
-// map[Lock+NumLock] = Level5;
-// map[Lock+NumLock+Shift] = Level6;
-// map[Lock+NumLock+LevelThree] = Level7;
-// map[Lock+NumLock+LevelThree+Shift] = Level8;
-//
-// map[Lock+NumLock+LevelFive] = Level1;
-// map[Lock+NumLock+LevelFive+Shift] = Level2;
-// map[Lock+NumLock+LevelFive+LevelThree] = Level3;
-// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4;
-//
-// preserve[LevelFive+Shift] = Shift;
-// preserve[NumLock+Shift] = Shift;
-// preserve[Lock+LevelFive+Shift] = Shift;
-// preserve[Lock+NumLock+Shift] = Shift;
-//
-// level_name[Level1] = "Base";
-// level_name[Level2] = "Shift";
-// level_name[Level3] = "Alt Base";
-// level_name[Level4] = "Shift Alt";
-// level_name[Level5] = "X";
-// level_name[Level6] = "X Shift";
-// level_name[Level7] = "X Alt Base";
-// level_name[Level8] = "X Shift Alt";
-// };
-//
-// type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" {
-// // Level5-Lock is implemented by using NumLock, because a real modifier
-// // is required.
-//
-// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
-//
-// map[None] = Level1;
-// map[Shift] = Level2;
-// map[LevelThree] = Level3;
-// map[LevelThree+Shift] = Level4;
-//
-// map[LevelFive] = Level5;
-// map[LevelFive+Shift] = Level6;
-// map[LevelFive+LevelThree] = Level7;
-// map[LevelFive+LevelThree+Shift] = Level8;
-//
-// map[NumLock] = Level5;
-// map[NumLock+Shift] = Level6;
-// map[NumLock+LevelThree] = Level7;
-// map[NumLock+LevelThree+Shift] = Level8;
-//
-// map[NumLock+LevelFive] = Level1;
-// map[NumLock+LevelFive+Shift] = Level2;
-// map[NumLock+LevelFive+LevelThree] = Level3;
-// map[NumLock+LevelFive+LevelThree+Shift] = Level4;
-//
-// // Lock interchanges Level1 and Level2
-// map[Lock] = Level2;
-// map[Lock+Shift] = Level1;
-// map[Lock+LevelThree] = Level3;
-// map[Lock+LevelThree+Shift] = Level4;
-//
-// map[Lock+LevelFive] = Level5;
-// map[Lock+LevelFive+Shift] = Level6;
-// map[Lock+LevelFive+LevelThree] = Level7;
-// map[Lock+LevelFive+LevelThree+Shift] = Level8;
-//
-// map[Lock+NumLock] = Level5;
-// map[Lock+NumLock+Shift] = Level6;
-// map[Lock+NumLock+LevelThree] = Level7;
-// map[Lock+NumLock+LevelThree+Shift] = Level8;
-//
-// map[Lock+NumLock+LevelFive] = Level2;
-// map[Lock+NumLock+LevelFive+Shift] = Level1;
-// map[Lock+NumLock+LevelFive+LevelThree] = Level4;
-// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level3;
-//
-// preserve[LevelFive+Shift] = Shift;
-// preserve[NumLock+Shift] = Shift;
-//
-// level_name[Level1] = "Base";
-// level_name[Level2] = "Shift";
-// level_name[Level3] = "Alt Base";
-// level_name[Level4] = "Shift Alt";
-// level_name[Level5] = "X";
-// level_name[Level6] = "X Shift";
-// level_name[Level7] = "X Alt Base";
-// level_name[Level8] = "X Shift Alt";
-// };
-
- type "EIGHT_LEVEL_SEMIALPHABETIC" {
- modifiers = Shift+Lock+LevelThree+LevelFive;
- map[None] = Level1;
- map[Shift] = Level2;
- map[Lock] = Level2;
- map[LevelThree] = Level3;
- map[Shift+LevelThree] = Level4;
- map[Lock+LevelThree] = Level3;
- map[Lock+Shift+LevelThree] = Level4;
-
- map[LevelFive] = Level5;
- map[Shift+LevelFive] = Level6;
- map[Lock+LevelFive] = Level6;
- map[LevelThree+LevelFive] = Level7;
- map[Shift+LevelThree+LevelFive] = Level8;
- map[Lock+LevelThree+LevelFive] = Level7;
- map[Lock+Shift+LevelThree+LevelFive] = Level8;
-
- preserve[Lock+LevelThree] = Lock;
- preserve[Lock+Shift+LevelThree] = Lock;
- preserve[Lock+LevelFive] = Lock;
- preserve[Lock+Shift+LevelFive] = Lock;
- preserve[Lock+LevelThree+LevelFive] = Lock;
- preserve[Lock+Shift+LevelThree+LevelFive] = Lock;
-
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift";
- level_name[Level3] = "Alt Base";
- level_name[Level4] = "Shift Alt";
- level_name[Level5] = "X";
- level_name[Level6] = "X Shift";
- level_name[Level7] = "X Alt Base";
- level_name[Level8] = "X Shift Alt";
- };
-
-};
+partial default xkb_types "default" {
+ // Definition for a key type used for the czech keymap, for instance.
+ // Defines style a with four level shift. It is similar to three_level
+ // type used for iso9995 but it lets the shift key behave "normally".
+
+ virtual_modifiers LevelThree,ScrollLock,LevelFive;
+
+ type "EIGHT_LEVEL" {
+ modifiers = Shift+LevelThree+LevelFive;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[LevelFive] = Level5;
+ map[Shift+LevelFive] = Level6;
+ map[LevelThree+LevelFive] = Level7;
+ map[Shift+LevelThree+LevelFive] = Level8;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "X";
+ level_name[Level6] = "X Shift";
+ level_name[Level7] = "X Alt Base";
+ level_name[Level8] = "X Shift Alt";
+ };
+
+ type "EIGHT_LEVEL_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree+LevelFive;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level4;
+ map[Lock+Shift+LevelThree] = Level3;
+
+ map[LevelFive] = Level5;
+ map[Shift+LevelFive] = Level6;
+ map[Lock+LevelFive] = Level6;
+ map[LevelThree+LevelFive] = Level7;
+ map[Shift+LevelThree+LevelFive] = Level8;
+ map[Lock+LevelThree+LevelFive] = Level8;
+ map[Lock+Shift+LevelThree+LevelFive] = Level7;
+
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "X";
+ level_name[Level6] = "X Shift";
+ level_name[Level7] = "X Alt Base";
+ level_name[Level8] = "X Shift Alt";
+ };
+
+// type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" {
+// // Level5-Lock is implemented by using NumLock, because a real modifier
+// // is required.
+//
+// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
+//
+// map[None] = Level1;
+// map[Shift] = Level2;
+// map[LevelThree] = Level3;
+// map[LevelThree+Shift] = Level4;
+//
+// map[LevelFive] = Level5;
+// map[LevelFive+Shift] = Level6;
+// map[LevelFive+LevelThree] = Level7;
+// map[LevelFive+LevelThree+Shift] = Level8;
+//
+// map[NumLock] = Level5;
+// map[NumLock+Shift] = Level6;
+// map[NumLock+LevelThree] = Level7;
+// map[NumLock+LevelThree+Shift] = Level8;
+//
+// map[NumLock+LevelFive] = Level1;
+// map[NumLock+LevelFive+Shift] = Level2;
+// map[NumLock+LevelFive+LevelThree] = Level3;
+// map[NumLock+LevelFive+LevelThree+Shift] = Level4;
+//
+// // Lock has no effect
+// map[Lock] = Level1;
+// map[Lock+Shift] = Level2;
+// map[Lock+LevelThree] = Level3;
+// map[Lock+LevelThree+Shift] = Level4;
+//
+// map[Lock+LevelFive] = Level5;
+// map[Lock+LevelFive+Shift] = Level6;
+// map[Lock+LevelFive+LevelThree] = Level7;
+// map[Lock+LevelFive+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock] = Level5;
+// map[Lock+NumLock+Shift] = Level6;
+// map[Lock+NumLock+LevelThree] = Level7;
+// map[Lock+NumLock+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock+LevelFive] = Level1;
+// map[Lock+NumLock+LevelFive+Shift] = Level2;
+// map[Lock+NumLock+LevelFive+LevelThree] = Level3;
+// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4;
+//
+// preserve[LevelFive+Shift] = Shift;
+// preserve[NumLock+Shift] = Shift;
+// preserve[Lock+LevelFive+Shift] = Shift;
+// preserve[Lock+NumLock+Shift] = Shift;
+//
+// level_name[Level1] = "Base";
+// level_name[Level2] = "Shift";
+// level_name[Level3] = "Alt Base";
+// level_name[Level4] = "Shift Alt";
+// level_name[Level5] = "X";
+// level_name[Level6] = "X Shift";
+// level_name[Level7] = "X Alt Base";
+// level_name[Level8] = "X Shift Alt";
+// };
+//
+// type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" {
+// // Level5-Lock is implemented by using NumLock, because a real modifier
+// // is required.
+//
+// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
+//
+// map[None] = Level1;
+// map[Shift] = Level2;
+// map[LevelThree] = Level3;
+// map[LevelThree+Shift] = Level4;
+//
+// map[LevelFive] = Level5;
+// map[LevelFive+Shift] = Level6;
+// map[LevelFive+LevelThree] = Level7;
+// map[LevelFive+LevelThree+Shift] = Level8;
+//
+// map[NumLock] = Level5;
+// map[NumLock+Shift] = Level6;
+// map[NumLock+LevelThree] = Level7;
+// map[NumLock+LevelThree+Shift] = Level8;
+//
+// map[NumLock+LevelFive] = Level1;
+// map[NumLock+LevelFive+Shift] = Level2;
+// map[NumLock+LevelFive+LevelThree] = Level3;
+// map[NumLock+LevelFive+LevelThree+Shift] = Level4;
+//
+// // Lock interchanges Level1 and Level2
+// map[Lock] = Level2;
+// map[Lock+Shift] = Level1;
+// map[Lock+LevelThree] = Level3;
+// map[Lock+LevelThree+Shift] = Level4;
+//
+// map[Lock+LevelFive] = Level5;
+// map[Lock+LevelFive+Shift] = Level6;
+// map[Lock+LevelFive+LevelThree] = Level7;
+// map[Lock+LevelFive+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock] = Level5;
+// map[Lock+NumLock+Shift] = Level6;
+// map[Lock+NumLock+LevelThree] = Level7;
+// map[Lock+NumLock+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock+LevelFive] = Level2;
+// map[Lock+NumLock+LevelFive+Shift] = Level1;
+// map[Lock+NumLock+LevelFive+LevelThree] = Level4;
+// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level3;
+//
+// preserve[LevelFive+Shift] = Shift;
+// preserve[NumLock+Shift] = Shift;
+//
+// level_name[Level1] = "Base";
+// level_name[Level2] = "Shift";
+// level_name[Level3] = "Alt Base";
+// level_name[Level4] = "Shift Alt";
+// level_name[Level5] = "X";
+// level_name[Level6] = "X Shift";
+// level_name[Level7] = "X Alt Base";
+// level_name[Level8] = "X Shift Alt";
+// };
+
+ type "EIGHT_LEVEL_SEMIALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree+LevelFive;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+
+ map[LevelFive] = Level5;
+ map[Shift+LevelFive] = Level6;
+ map[Lock+LevelFive] = Level6;
+ map[LevelThree+LevelFive] = Level7;
+ map[Shift+LevelThree+LevelFive] = Level8;
+ map[Lock+LevelThree+LevelFive] = Level7;
+ map[Lock+Shift+LevelThree+LevelFive] = Level8;
+
+ preserve[Lock+LevelThree] = Lock;
+ preserve[Lock+Shift+LevelThree] = Lock;
+ preserve[Lock+LevelFive] = Lock;
+ preserve[Lock+Shift+LevelFive] = Lock;
+ preserve[Lock+LevelThree+LevelFive] = Lock;
+ preserve[Lock+Shift+LevelThree+LevelFive] = Lock;
+
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "X";
+ level_name[Level6] = "X Shift";
+ level_name[Level7] = "X Alt Base";
+ level_name[Level8] = "X Shift Alt";
+ };
+
+};
diff --git a/xorg-server/xkeyboard-config/types/mousekeys b/xorg-server/xkeyboard-config/types/mousekeys
index 03225990a..88d88a21e 100644
--- a/xorg-server/xkeyboard-config/types/mousekeys
+++ b/xorg-server/xkeyboard-config/types/mousekeys
@@ -1,10 +1,10 @@
-partial default xkb_types "default" {
- virtual_modifiers Alt;
-
- type "SHIFT+ALT" {
- modifiers = Shift+Alt;
- map[Shift+Alt] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Shift+Alt";
- };
-};
+partial default xkb_types "default" {
+ virtual_modifiers Alt;
+
+ type "SHIFT+ALT" {
+ modifiers = Shift+Alt;
+ map[Shift+Alt] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift+Alt";
+ };
+};
diff --git a/xorg-server/xkeyboard-config/types/nokia b/xorg-server/xkeyboard-config/types/nokia
index f77d8868a..e08095a66 100644
--- a/xorg-server/xkeyboard-config/types/nokia
+++ b/xorg-server/xkeyboard-config/types/nokia
@@ -1,14 +1,14 @@
-partial default xkb_types "default" {
-
- // Some types that are used by Nokia devices and keyboard.
- virtual_modifiers LevelThree;
-
- type "PC_FN_LEVEL2" {
- modifiers = LevelThree;
- map[None] = Level1;
- map[LevelThree] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Fn";
- };
-
-};
+partial default xkb_types "default" {
+
+ // Some types that are used by Nokia devices and keyboard.
+ virtual_modifiers LevelThree;
+
+ type "PC_FN_LEVEL2" {
+ modifiers = LevelThree;
+ map[None] = Level1;
+ map[LevelThree] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Fn";
+ };
+
+};
diff --git a/xorg-server/xkeyboard-config/xkeyboard-config.pc.in b/xorg-server/xkeyboard-config/xkeyboard-config.pc.in
index d44ba1482..da842c9ff 100644
--- a/xorg-server/xkeyboard-config/xkeyboard-config.pc.in
+++ b/xorg-server/xkeyboard-config/xkeyboard-config.pc.in
@@ -1,8 +1,8 @@
-prefix=@prefix@
-datarootdir=@datarootdir@
-datadir=@datadir@
-xkb_base=@xkb_base@
-
-Name: XKeyboardConfig
-Description: X Keyboard configuration data
-Version: @VERSION@
+prefix=@prefix@
+datarootdir=@datarootdir@
+datadir=@datadir@
+xkb_base=@xkb_base@
+
+Name: XKeyboardConfig
+Description: X Keyboard configuration data
+Version: @VERSION@
diff --git a/xorg-server/xorg-server.m4 b/xorg-server/xorg-server.m4
index bdecf6227..80d6da01e 100644
--- a/xorg-server/xorg-server.m4
+++ b/xorg-server/xorg-server.m4
@@ -1,49 +1,49 @@
-dnl Copyright 2005 Red Hat, Inc
-dnl
-dnl Permission to use, copy, modify, distribute, and sell this software and its
-dnl documentation for any purpose is hereby granted without fee, provided that
-dnl the above copyright notice appear in all copies and that both that
-dnl copyright notice and this permission notice appear in supporting
-dnl documentation.
-dnl
-dnl The above copyright notice and this permission notice shall be included
-dnl in all copies or substantial portions of the Software.
-dnl
-dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-dnl IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-dnl OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-dnl ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-dnl OTHER DEALINGS IN THE SOFTWARE.
-dnl
-dnl Except as contained in this notice, the name of the copyright holders shall
-dnl not be used in advertising or otherwise to promote the sale, use or
-dnl other dealings in this Software without prior written authorization
-dnl from the copyright holders.
-dnl
-
-# XORG_DRIVER_CHECK_EXT()
-# --------------------------
-# Checks for the $1 define in xorg-server.h (from the sdk). If it
-# is defined, then add $1 to $REQUIRED_MODULES.
-
-AC_DEFUN([XORG_DRIVER_CHECK_EXT],[
- AC_REQUIRE([PKG_PROG_PKG_CONFIG])
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -I`$PKG_CONFIG --variable=sdkdir xorg-server`"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include "xorg-server.h"
-#if !defined $1
-#error $1 not defined
-#endif
- ]])],
- [_EXT_CHECK=yes],
- [_EXT_CHECK=no])
- CFLAGS="$SAVE_CFLAGS"
- AC_MSG_CHECKING([if $1 is defined])
- AC_MSG_RESULT([$_EXT_CHECK])
- if test "$_EXT_CHECK" != no; then
- REQUIRED_MODULES="$REQUIRED_MODULES $2"
- fi
-])
+dnl Copyright 2005 Red Hat, Inc
+dnl
+dnl Permission to use, copy, modify, distribute, and sell this software and its
+dnl documentation for any purpose is hereby granted without fee, provided that
+dnl the above copyright notice appear in all copies and that both that
+dnl copyright notice and this permission notice appear in supporting
+dnl documentation.
+dnl
+dnl The above copyright notice and this permission notice shall be included
+dnl in all copies or substantial portions of the Software.
+dnl
+dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+dnl IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+dnl OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+dnl ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+dnl OTHER DEALINGS IN THE SOFTWARE.
+dnl
+dnl Except as contained in this notice, the name of the copyright holders shall
+dnl not be used in advertising or otherwise to promote the sale, use or
+dnl other dealings in this Software without prior written authorization
+dnl from the copyright holders.
+dnl
+
+# XORG_DRIVER_CHECK_EXT()
+# --------------------------
+# Checks for the $1 define in xorg-server.h (from the sdk). If it
+# is defined, then add $1 to $REQUIRED_MODULES.
+
+AC_DEFUN([XORG_DRIVER_CHECK_EXT],[
+ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -I`$PKG_CONFIG --variable=sdkdir xorg-server`"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include "xorg-server.h"
+#if !defined $1
+#error $1 not defined
+#endif
+ ]])],
+ [_EXT_CHECK=yes],
+ [_EXT_CHECK=no])
+ CFLAGS="$SAVE_CFLAGS"
+ AC_MSG_CHECKING([if $1 is defined])
+ AC_MSG_RESULT([$_EXT_CHECK])
+ if test "$_EXT_CHECK" != no; then
+ REQUIRED_MODULES="$REQUIRED_MODULES $2"
+ fi
+])
diff --git a/xorg-server/xserver.ent.in b/xorg-server/xserver.ent.in
index aa02d7b93..5cb4e23d3 100644
--- a/xorg-server/xserver.ent.in
+++ b/xorg-server/xserver.ent.in
@@ -1,3 +1,3 @@
-<!-- shared -*-xml-*- entity definitions for the X server documentation -->
-<!ENTITY xserver.version "@PACKAGE_VERSION@">
-<!ENTITY xserver.reldate "@RELEASE_DATE@">
+<!-- shared -*-xml-*- entity definitions for the X server documentation -->
+<!ENTITY xserver.version "@PACKAGE_VERSION@">
+<!ENTITY xserver.reldate "@RELEASE_DATE@">